From da40f7220709c519cc5ef8aaea6b0f1139a43473 Mon Sep 17 00:00:00 2001 From: Ilnaz Nizametdinov Date: Mon, 1 Apr 2024 13:51:38 +0300 Subject: [PATCH 001/110] Get rid of pedantic check (#3342) --- .../tx/datashard/execute_distributed_erase_tx_unit.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ydb/core/tx/datashard/execute_distributed_erase_tx_unit.cpp b/ydb/core/tx/datashard/execute_distributed_erase_tx_unit.cpp index 1c1a8be5e81b..ab6f553e5b20 100644 --- a/ydb/core/tx/datashard/execute_distributed_erase_tx_unit.cpp +++ b/ydb/core/tx/datashard/execute_distributed_erase_tx_unit.cpp @@ -91,11 +91,12 @@ class TExecuteDistributedEraseTxUnit : public TExecutionUnit { for (const auto& rs : readSets) { NKikimrTxDataShard::TDistributedEraseRS body; Y_ABORT_UNLESS(body.ParseFromArray(rs.Body.data(), rs.Body.size())); - Y_ABORT_UNLESS(presentRows.contains(rs.Origin)); - const bool ok = Execute(txc, request, presentRows.at(rs.Origin), - DeserializeBitMap(body.GetConfirmedRows()), writeVersion, op->GetGlobalTxId()); - Y_ABORT_UNLESS(ok); + + auto confirmedRows = DeserializeBitMap(body.GetConfirmedRows()); + if (!Execute(txc, request, presentRows.at(rs.Origin), confirmedRows, writeVersion, op->GetGlobalTxId())) { + return EExecutionStatus::Restart; + } } } From 70508571d12575a66d84027754322c681385ffc5 Mon Sep 17 00:00:00 2001 From: kruall Date: Tue, 2 Apr 2024 14:58:45 +0300 Subject: [PATCH 002/110] Send unsubcribe in viewer (#3371) --- ydb/core/viewer/counters_hosts.h | 70 ++++++++++++++++++++------------ ydb/core/viewer/json_vdisk_req.h | 19 +++++++-- 2 files changed, 59 insertions(+), 30 deletions(-) diff --git a/ydb/core/viewer/counters_hosts.h b/ydb/core/viewer/counters_hosts.h index 9a65349aae2d..2232f16b00ba 100644 --- a/ydb/core/viewer/counters_hosts.h +++ b/ydb/core/viewer/counters_hosts.h @@ -16,10 +16,13 @@ using namespace NActors; using namespace NNodeWhiteboard; class TCountersHostsList : public TActorBootstrapped { + using TBase = TActorBootstrapped; + IViewer* Viewer; NMon::TEvHttpInfo::TPtr Event; THolder NodesInfo; TMap> NodesResponses; + THashSet TcpProxies; ui32 NodesRequested = 0; ui32 NodesReceived = 0; bool StaticNodesOnly = false; @@ -35,47 +38,48 @@ class TCountersHostsList : public TActorBootstrapped { , Event(ev) {} - void Bootstrap(const TActorContext& ctx) { + void Bootstrap() { const auto& params(Event->Get()->Request.GetParams()); StaticNodesOnly = FromStringWithDefault(params.Get("static_only"), StaticNodesOnly); DynamicNodesOnly = FromStringWithDefault(params.Get("dynamic_only"), DynamicNodesOnly); const TActorId nameserviceId = GetNameserviceActorId(); - ctx.Send(nameserviceId, new TEvInterconnect::TEvListNodes()); - ctx.Schedule(TDuration::Seconds(10), new TEvents::TEvWakeup()); + Send(nameserviceId, new TEvInterconnect::TEvListNodes()); + Schedule(TDuration::Seconds(10), new TEvents::TEvWakeup()); Become(&TThis::StateRequestedList); } STFUNC(StateRequestedList) { switch (ev->GetTypeRewrite()) { - HFunc(TEvInterconnect::TEvNodesInfo, Handle); - CFunc(TEvents::TSystem::Wakeup, Timeout); + hFunc(TEvInterconnect::TEvNodesInfo, Handle); + cFunc(TEvents::TSystem::Wakeup, Timeout); } } STFUNC(StateRequestedSysInfo) { switch (ev->GetTypeRewrite()) { - HFunc(TEvWhiteboard::TEvSystemStateResponse, Handle); - HFunc(TEvents::TEvUndelivered, Undelivered); - HFunc(TEvInterconnect::TEvNodeDisconnected, Disconnected); - CFunc(TEvents::TSystem::Wakeup, Timeout); + hFunc(TEvWhiteboard::TEvSystemStateResponse, Handle); + hFunc(TEvents::TEvUndelivered, Undelivered); + hFunc(TEvInterconnect::TEvNodeDisconnected, Disconnected); + hFunc(TEvInterconnect::TEvNodeConnected, Connected); + cFunc(TEvents::TSystem::Wakeup, Timeout); } } - void SendRequest(ui32 nodeId, const TActorContext& ctx) { + void SendRequest(ui32 nodeId) { TActorId whiteboardServiceId = MakeNodeWhiteboardServiceId(nodeId); THolder request = MakeHolder(); - ctx.Send(whiteboardServiceId, request.Release(), IEventHandle::FlagTrackDelivery | IEventHandle::FlagSubscribeOnSession, nodeId); - ++NodesRequested; + Send(whiteboardServiceId, request.Release(), IEventHandle::FlagTrackDelivery | IEventHandle::FlagSubscribeOnSession, nodeId); + NodesRequested++; } - void NodeStateInfoReceived(const TActorContext& ctx) { + void NodeStateInfoReceived() { ++NodesReceived; if (NodesRequested == NodesReceived) { - ReplyAndDie(ctx); + ReplyAndDie(); } } - void Handle(TEvInterconnect::TEvNodesInfo::TPtr& ev, const TActorContext& ctx) { + void Handle(TEvInterconnect::TEvNodesInfo::TPtr& ev) { NodesInfo = ev->Release(); ui32 minAllowedNodeId = std::numeric_limits::min(); ui32 maxAllowedNodeId = std::numeric_limits::max(); @@ -90,33 +94,38 @@ class TCountersHostsList : public TActorBootstrapped { } for (const auto& nodeInfo : NodesInfo->Nodes) { if (nodeInfo.NodeId >= minAllowedNodeId && nodeInfo.NodeId <= maxAllowedNodeId) { - SendRequest(nodeInfo.NodeId, ctx); + SendRequest(nodeInfo.NodeId); } } Become(&TThis::StateRequestedSysInfo); } - void Handle(TEvWhiteboard::TEvSystemStateResponse::TPtr& ev, const TActorContext& ctx) { + void Handle(TEvWhiteboard::TEvSystemStateResponse::TPtr& ev) { ui64 nodeId = ev.Get()->Cookie; NodesResponses[nodeId] = ev->Release(); - NodeStateInfoReceived(ctx); + NodeStateInfoReceived(); } - void Undelivered(TEvents::TEvUndelivered::TPtr& ev, const TActorContext& ctx) { + void Undelivered(TEvents::TEvUndelivered::TPtr& ev) { ui32 nodeId = ev.Get()->Cookie; if (NodesResponses.emplace(nodeId, nullptr).second) { - NodeStateInfoReceived(ctx); + NodeStateInfoReceived(); } } - void Disconnected(TEvInterconnect::TEvNodeDisconnected::TPtr& ev, const TActorContext& ctx) { + void Disconnected(TEvInterconnect::TEvNodeDisconnected::TPtr& ev) { ui32 nodeId = ev->Get()->NodeId; + TcpProxies.erase(ev->Sender); if (NodesResponses.emplace(nodeId, nullptr).second) { - NodeStateInfoReceived(ctx); + NodeStateInfoReceived(); } } - void ReplyAndDie(const TActorContext& ctx) { + void Connected(TEvInterconnect::TEvNodeConnected::TPtr& ev) { + TcpProxies.insert(ev->Sender); + } + + void ReplyAndDie() { TStringStream text; for (const auto& [nodeId, sysInfo] : NodesResponses) { if (sysInfo) { @@ -147,12 +156,19 @@ class TCountersHostsList : public TActorBootstrapped { } } } - ctx.Send(Event->Sender, new NMon::TEvHttpInfoRes(Viewer->GetHTTPOKTEXT(Event->Get()) + text.Str(), 0, NMon::IEvHttpInfoRes::EContentType::Custom)); - Die(ctx); + Send(Event->Sender, new NMon::TEvHttpInfoRes(Viewer->GetHTTPOKTEXT(Event->Get()) + text.Str(), 0, NMon::IEvHttpInfoRes::EContentType::Custom)); + PassAway(); + } + + void PassAway() { + for (auto &tcpPorxy: TcpProxies) { + Send(tcpPorxy, new TEvents::TEvUnsubscribe); + } + TBase::PassAway(); } - void Timeout(const TActorContext &ctx) { - ReplyAndDie(ctx); + void Timeout() { + ReplyAndDie(); } }; diff --git a/ydb/core/viewer/json_vdisk_req.h b/ydb/core/viewer/json_vdisk_req.h index 61b805d9a498..28459d510b56 100644 --- a/ydb/core/viewer/json_vdisk_req.h +++ b/ydb/core/viewer/json_vdisk_req.h @@ -60,6 +60,8 @@ class TJsonVDiskRequest : public TViewerPipeClient TcpProxyId; + public: static constexpr NKikimrServices::TActivity::EType ActorActivityType() { return NKikimrServices::TActivity::VIEWER_HANDLER; @@ -111,6 +113,7 @@ class TJsonVDiskRequest : public TViewerPipeClientSender; + } + void Disconnected() { + TcpProxyId = {}; if (!RetryRequest()) { TBase::RequestDone(); } @@ -170,6 +178,13 @@ class TJsonVDiskRequest : public TViewerPipeClientSend(*TcpProxyId, new TEvents::TEvUnsubscribe); + } + TBase::PassAway(); + } + void ReplyAndPassAway(const TString &error = "") { try { TStringStream json; @@ -182,10 +197,8 @@ class TJsonVDiskRequest : public TViewerPipeClient From d547c4c50a53a4a4f562d92d2b4d936da8924ca8 Mon Sep 17 00:00:00 2001 From: Alexander Petrukhin Date: Tue, 2 Apr 2024 21:37:35 +0300 Subject: [PATCH 003/110] Reduce severity of some health check issues (#3067) (#3176) --- ydb/core/health_check/health_check.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/ydb/core/health_check/health_check.cpp b/ydb/core/health_check/health_check.cpp index a127d271e60f..c0e407f01933 100644 --- a/ydb/core/health_check/health_check.cpp +++ b/ydb/core/health_check/health_check.cpp @@ -1140,19 +1140,15 @@ class TSelfCheckRequest : public TActorBootstrapped { static void Check(TSelfCheckContext& context, const NKikimrWhiteboard::TSystemStateInfo::TPoolStats& poolStats) { if (poolStats.name() == "System" || poolStats.name() == "IC" || poolStats.name() == "IO") { if (poolStats.usage() >= 0.99) { - context.ReportStatus(Ydb::Monitoring::StatusFlag::RED, "Pool usage over 99%", ETags::OverloadState); + context.ReportStatus(Ydb::Monitoring::StatusFlag::ORANGE, "Pool usage is over than 99%", ETags::OverloadState); } else if (poolStats.usage() >= 0.95) { - context.ReportStatus(Ydb::Monitoring::StatusFlag::ORANGE, "Pool usage over 95%", ETags::OverloadState); - } else if (poolStats.usage() >= 0.90) { - context.ReportStatus(Ydb::Monitoring::StatusFlag::YELLOW, "Pool usage over 90%", ETags::OverloadState); + context.ReportStatus(Ydb::Monitoring::StatusFlag::YELLOW, "Pool usage is over than 95%", ETags::OverloadState); } else { context.ReportStatus(Ydb::Monitoring::StatusFlag::GREEN); } } else { if (poolStats.usage() >= 0.99) { - context.ReportStatus(Ydb::Monitoring::StatusFlag::ORANGE, "Pool usage over 99%", ETags::OverloadState); - } else if (poolStats.usage() >= 0.95) { - context.ReportStatus(Ydb::Monitoring::StatusFlag::YELLOW, "Pool usage over 95%", ETags::OverloadState); + context.ReportStatus(Ydb::Monitoring::StatusFlag::YELLOW, "Pool usage is over than 99%", ETags::OverloadState); } else { context.ReportStatus(Ydb::Monitoring::StatusFlag::GREEN); } @@ -1222,7 +1218,7 @@ class TSelfCheckRequest : public TActorBootstrapped { break; case TNodeTabletState::ETabletState::RestartsTooOften: computeTabletStatus.set_state("RESTARTS_TOO_OFTEN"); - tabletContext.ReportStatus(Ydb::Monitoring::StatusFlag::RED, "Tablets are restarting too often", ETags::TabletState); + tabletContext.ReportStatus(Ydb::Monitoring::StatusFlag::ORANGE, "Tablets are restarting too often", ETags::TabletState); break; case TNodeTabletState::ETabletState::Dead: computeTabletStatus.set_state("DEAD"); @@ -1261,7 +1257,7 @@ class TSelfCheckRequest : public TActorBootstrapped { TSelfCheckContext rrContext(&context, "NODE_UPTIME"); if (databaseState.NodeRestartsPerPeriod[nodeId] >= 30) { - rrContext.ReportStatus(Ydb::Monitoring::StatusFlag::RED, "Node is restarting too often", ETags::Uptime); + rrContext.ReportStatus(Ydb::Monitoring::StatusFlag::ORANGE, "Node is restarting too often", ETags::Uptime); } else if (databaseState.NodeRestartsPerPeriod[nodeId] >= 10) { rrContext.ReportStatus(Ydb::Monitoring::StatusFlag::YELLOW, "The number of node restarts has increased", ETags::Uptime); } else { From 2631f5b0696cf14959922b74cfa05d0ab52da2e5 Mon Sep 17 00:00:00 2001 From: Vitalii Gridnev Date: Wed, 3 Apr 2024 11:34:26 +0300 Subject: [PATCH 004/110] fix bug: limit retries in starting state (#3398) --- ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp b/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp index da29486bd7d5..5d29c47c9260 100644 --- a/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp +++ b/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp @@ -154,6 +154,14 @@ void TKqpScanFetcherActor::HandleExecute(TEvKqpCompute::TEvScanError::TPtr& ev) } if (state->State == EShardState::Starting) { + ++TotalRetries; + if (TotalRetries >= MAX_TOTAL_SHARD_RETRIES) { + CA_LOG_E("TKqpScanFetcherActor: broken tablet for this request " << state->TabletId + << ", retries limit exceeded (" << state->TotalRetries << "/" << TotalRetries << ")"); + SendGlobalFail(NDqProto::COMPUTE_STATE_FAILURE, YdbStatusToDqStatus(status), issues); + return PassAway(); + } + if (FindSchemeErrorInIssues(status, issues)) { return EnqueueResolveShard(state); } From c301eca874c20bb42226aa7a64e067f3fa51dc85 Mon Sep 17 00:00:00 2001 From: vporyadke Date: Wed, 3 Apr 2024 20:00:05 +0200 Subject: [PATCH 005/110] disable db metadata cache (#3444) --- ydb/core/driver_lib/run/config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/ydb/core/driver_lib/run/config.h b/ydb/core/driver_lib/run/config.h index 2cd944329a68..ae040faa9e2c 100644 --- a/ydb/core/driver_lib/run/config.h +++ b/ydb/core/driver_lib/run/config.h @@ -125,6 +125,7 @@ union TBasicKikimrServicesMask { TBasicKikimrServicesMask() { EnableAll(); + EnableDatabaseMetadataCache = false; } }; From 9acd57994ae3dfb9ee2fe7dbb10f52284198a338 Mon Sep 17 00:00:00 2001 From: Nikolay Shestakov Date: Fri, 5 Apr 2024 20:31:29 +0500 Subject: [PATCH 006/110] Decrease default value of SharedCacheSizeMb to 1024 (#3421) --- ydb/core/protos/node_limits.proto | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ydb/core/protos/node_limits.proto b/ydb/core/protos/node_limits.proto index 5aaf8c6fdaf8..ef067d578c48 100644 --- a/ydb/core/protos/node_limits.proto +++ b/ydb/core/protos/node_limits.proto @@ -3,10 +3,9 @@ option java_package = "ru.yandex.kikimr.proto"; message TNodeLimitsConfig { message TPersQueueNodeConfig { - optional uint64 SharedCacheSizeMb = 1 [default = 8192]; + optional uint64 SharedCacheSizeMb = 1 [default = 1024]; optional uint32 CacheKeepTimeSec = 2 [default = 10]; } optional TPersQueueNodeConfig PersQueueNodeConfig = 1; } - From b6a279dc928be6b36748c27ba33f4af55bc30766 Mon Sep 17 00:00:00 2001 From: niksaveliev Date: Mon, 8 Apr 2024 11:29:01 +0500 Subject: [PATCH 007/110] Kafka balance fixes to 24 1 (#3537) --- .../actors/kafka_read_session_actor.cpp | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/ydb/core/kafka_proxy/actors/kafka_read_session_actor.cpp b/ydb/core/kafka_proxy/actors/kafka_read_session_actor.cpp index cd3f6dd7d674..a1886ca53752 100644 --- a/ydb/core/kafka_proxy/actors/kafka_read_session_actor.cpp +++ b/ydb/core/kafka_proxy/actors/kafka_read_session_actor.cpp @@ -36,11 +36,10 @@ void TKafkaReadSessionActor::HandleWakeup(TEvKafka::TEvWakeup::TPtr, const TActo return; } - for (auto& topicToPartitions: NewPartitionsToLockOnTime) { - auto& partitions = topicToPartitions.second; + for (auto& [topicName, partitions]: NewPartitionsToLockOnTime) { for (auto partitionsIt = partitions.begin(); partitionsIt != partitions.end(); ) { if (partitionsIt->LockOn <= ctx.Now()) { - TopicPartitions[topicToPartitions.first].ToLock.emplace(partitionsIt->PartitionId); + TopicPartitions[topicName].ToLock.emplace(partitionsIt->PartitionId); NeedRebalance = true; partitionsIt = partitions.erase(partitionsIt); } else { @@ -408,6 +407,8 @@ void TKafkaReadSessionActor::HandlePipeDestroyed(TEvTabletPipe::TEvClientDestroy } void TKafkaReadSessionActor::ProcessBalancerDead(ui64 tabletId, const TActorContext& ctx) { + NewPartitionsToLockOnTime.clear(); + for (auto& [topicName, topicInfo] : TopicsInfo) { if (topicInfo.TabletID == tabletId) { auto partitionsIt = TopicPartitions.find(topicName); @@ -579,8 +580,7 @@ void TKafkaReadSessionActor::HandleReleasePartition(TEvPersQueue::TEvReleasePart auto newPartitionsToLockCount = newPartitionsToLockIt == NewPartitionsToLockOnTime.end() ? 0 : newPartitionsToLockIt->second.size(); auto topicPartitionsIt = TopicPartitions.find(pathIt->second->GetInternalName()); - Y_ABORT_UNLESS(topicPartitionsIt != TopicPartitions.end()); - Y_ABORT_UNLESS(record.GetCount() <= topicPartitionsIt->second.ToLock.size() + topicPartitionsIt->second.ReadingNow.size() + newPartitionsToLockCount); + Y_ABORT_UNLESS(record.GetCount() <= (topicPartitionsIt.IsEnd() ? 0 : topicPartitionsIt->second.ToLock.size() + topicPartitionsIt->second.ReadingNow.size()) + newPartitionsToLockCount); for (ui32 c = 0; c < record.GetCount(); ++c) { // if some partition not locked yet, then release it without rebalance @@ -599,18 +599,19 @@ void TKafkaReadSessionActor::HandleReleasePartition(TEvPersQueue::TEvReleasePart } NeedRebalance = true; - size_t partitionToReleaseIndex = 0; - size_t i = 0; + ui32 partitionToRelease = 0; + ui32 i = 0; - for (size_t partIndex = 0; partIndex < topicPartitionsIt->second.ReadingNow.size(); partIndex++) { - if (!topicPartitionsIt->second.ToRelease.contains(partIndex) && (group == 0 || partIndex + 1 == group)) { + for (auto curPartition : topicPartitionsIt->second.ReadingNow) { + if (!topicPartitionsIt->second.ToRelease.contains(curPartition) && (group == 0 || curPartition + 1 == group)) { ++i; - if (rand() % i == 0) { // will lead to 1/n probability for each of n partitions - partitionToReleaseIndex = partIndex; + if (rand() % i == 0) { + partitionToRelease = curPartition; } } } - topicPartitionsIt->second.ToRelease.emplace(partitionToReleaseIndex); + + topicPartitionsIt->second.ToRelease.emplace(partitionToRelease); } } From d14df371eccf952f4fdee844985b205022e18db1 Mon Sep 17 00:00:00 2001 From: Aleksei Borzenkov Date: Mon, 8 Apr 2024 12:04:46 +0300 Subject: [PATCH 008/110] 24-1: Fix a race between mediator state and pipeline restoring active transactions (#3378) --- ydb/core/tx/datashard/datashard.cpp | 54 +++-- ydb/core/tx/datashard/datashard_impl.h | 5 +- ydb/core/tx/datashard/datashard_pipeline.cpp | 30 ++- .../tx/datashard/datashard_ut_snapshot.cpp | 221 ++++++++++++++++++ 4 files changed, 288 insertions(+), 22 deletions(-) diff --git a/ydb/core/tx/datashard/datashard.cpp b/ydb/core/tx/datashard/datashard.cpp index ce98a47b6599..12bc7e28e7cb 100644 --- a/ydb/core/tx/datashard/datashard.cpp +++ b/ydb/core/tx/datashard/datashard.cpp @@ -2318,6 +2318,31 @@ void TDataShard::SendAfterMediatorStepActivate(ui64 mediatorStep, const TActorCo EmitHeartbeats(); } +class TDataShard::TTxMediatorStateRestored : public TTransactionBase { +public: + TTxMediatorStateRestored(TDataShard* self, ui64 readStep, ui64 observedStep) + : TTransactionBase(self) + , ReadStep(readStep) + , ObservedStep(observedStep) + {} + + bool Execute(TTransactionContext& txc, const TActorContext&) override { + Y_ABORT_UNLESS(Self->MediatorStateRestoreTxPending); + Self->MediatorStateRestoreTxPending = false; + + Self->FinishMediatorStateRestore(txc, ReadStep, ObservedStep); + return true; + } + + void Complete(const TActorContext&) override { + // nothing + } + +private: + const ui64 ReadStep; + const ui64 ObservedStep; +}; + void TDataShard::CheckMediatorStateRestored() { if (!MediatorStateWaiting || !RegistrationSended || @@ -2325,16 +2350,11 @@ void TDataShard::CheckMediatorStateRestored() { CoordinatorSubscriptionsPending > 0 && CoordinatorPrevReadStepMax == Max()) { // We are not waiting or not ready to make a decision - if (MediatorStateWaiting && - MediatorTimeCastEntry && - CoordinatorPrevReadStepMax == Max() && - !MediatorStateBackupInitiated) - { - // It is possible we don't have coordinators with new protocol support - // Use a backup plan of acquiring a read snapshot for restoring the read step - Schedule(TDuration::MilliSeconds(50), new TEvPrivate::TEvMediatorRestoreBackup); - MediatorStateBackupInitiated = true; - } + return; + } + + if (MediatorStateRestoreTxPending) { + // We already made a decision and are waiting for transaction to execute return; } @@ -2372,6 +2392,13 @@ void TDataShard::CheckMediatorStateRestored() { return; } + MediatorStateRestoreTxPending = true; + Execute(new TTxMediatorStateRestored(this, readStep, observedStep)); +} + +void TDataShard::FinishMediatorStateRestore(TTransactionContext& txc, ui64 readStep, ui64 observedStep) { + Y_ABORT_UNLESS(MediatorStateWaiting); + // Using the inferred last read step we restore the pessimistic unprotected // read edge. Note we only need to do so if there have actually been any // unprotected reads in this datashard history. We also need to make sure @@ -2386,6 +2413,8 @@ void TDataShard::CheckMediatorStateRestored() { const TRowVersion edge = Max(lastReadEdge, preImmediateWriteEdge); LOG_TRACE_S(*TlsActivationContext, NKikimrServices::TX_DATASHARD, "CheckMediatorStateRestored at " << TabletID() << " promoting UnprotectedReadEdge to " << edge); + Pipeline.MarkPlannedLogicallyCompleteUpTo(edge, txc); + Pipeline.MarkPlannedLogicallyIncompleteUpTo(edge, txc); SnapshotManager.PromoteUnprotectedReadEdge(edge); } @@ -3289,10 +3318,7 @@ void TDataShard::Handle(TEvMediatorTimecast::TEvNotifyPlanStep::TPtr& ev, const } void TDataShard::Handle(TEvPrivate::TEvMediatorRestoreBackup::TPtr&, const TActorContext&) { - if (MediatorStateWaiting && CoordinatorPrevReadStepMax == Max()) { - // We are still waiting for new protol coordinator state - // TODO: send an old snapshot request to coordinators - } + Y_ABORT("This code path was always no-op and no longer used"); } bool TDataShard::WaitPlanStep(ui64 step) { diff --git a/ydb/core/tx/datashard/datashard_impl.h b/ydb/core/tx/datashard/datashard_impl.h index 7720260dce60..b277cfe1ef43 100644 --- a/ydb/core/tx/datashard/datashard_impl.h +++ b/ydb/core/tx/datashard/datashard_impl.h @@ -247,6 +247,8 @@ class TDataShard class TTxHandleSafeKqpScan; class TTxHandleSafeBuildIndexScan; + class TTxMediatorStateRestored; + ITransaction *CreateTxMonitoring(TDataShard *self, NMon::TEvRemoteHttpInfo::TPtr ev); ITransaction *CreateTxGetInfo(TDataShard *self, @@ -1947,6 +1949,7 @@ class TDataShard void SendAfterMediatorStepActivate(ui64 mediatorStep, const TActorContext& ctx); void CheckMediatorStateRestored(); + void FinishMediatorStateRestore(TTransactionContext&, ui64, ui64); void FillExecutionStats(const TExecutionProfile& execProfile, TEvDataShard::TEvProposeTransactionResult& result) const; @@ -2613,7 +2616,7 @@ class TDataShard TVector> MediatorStateWaitingMsgs; bool MediatorStateWaiting = false; - bool MediatorStateBackupInitiated = false; + bool MediatorStateRestoreTxPending = false; bool IcbRegistered = false; diff --git a/ydb/core/tx/datashard/datashard_pipeline.cpp b/ydb/core/tx/datashard/datashard_pipeline.cpp index f993241ab68f..15cfdc4c88f7 100644 --- a/ydb/core/tx/datashard/datashard_pipeline.cpp +++ b/ydb/core/tx/datashard/datashard_pipeline.cpp @@ -401,13 +401,25 @@ void TPipeline::AddActiveOp(TOperation::TPtr op) if (Self->IsMvccEnabled()) { TStepOrder stepOrder = op->GetStepOrder(); TRowVersion version(stepOrder.Step, stepOrder.TxId); - TRowVersion completeEdge = Max( - Self->SnapshotManager.GetCompleteEdge(), - Self->SnapshotManager.GetUnprotectedReadEdge()); - if (version <= completeEdge) { - op->SetFlag(TTxFlags::BlockingImmediateOps); - } else if (version <= Self->SnapshotManager.GetIncompleteEdge()) { - op->SetFlag(TTxFlags::BlockingImmediateWrites); + if (version <= Self->SnapshotManager.GetCompleteEdge() || + version < Self->SnapshotManager.GetImmediateWriteEdge() || + version < Self->SnapshotManager.GetUnprotectedReadEdge()) + { + // This transaction would have been marked as logically complete + if (!op->HasFlag(TTxFlags::BlockingImmediateOps)) { + LOG_TRACE_S(*TlsActivationContext, NKikimrServices::TX_DATASHARD, + "Adding BlockingImmediateOps for op " << *op << " at " << Self->TabletID()); + op->SetFlag(TTxFlags::BlockingImmediateOps); + } + } else if (version <= Self->SnapshotManager.GetIncompleteEdge() || + version <= Self->SnapshotManager.GetUnprotectedReadEdge()) + { + // This transaction would have been marked as logically incomplete + if (!op->HasFlag(TTxFlags::BlockingImmediateWrites)) { + LOG_TRACE_S(*TlsActivationContext, NKikimrServices::TX_DATASHARD, + "Adding BlockingImmediateWrites for op " << *op << " at " << Self->TabletID()); + op->SetFlag(TTxFlags::BlockingImmediateWrites); + } } } auto pr = ActivePlannedOps.emplace(op->GetStepOrder(), op); @@ -415,10 +427,14 @@ void TPipeline::AddActiveOp(TOperation::TPtr op) Y_ABORT_UNLESS(pr.first == std::prev(ActivePlannedOps.end()), "AddActiveOp must always add transactions in order"); bool isComplete = op->HasFlag(TTxFlags::BlockingImmediateOps); if (ActivePlannedOpsLogicallyCompleteEnd == ActivePlannedOps.end() && !isComplete) { + LOG_TRACE_S(*TlsActivationContext, NKikimrServices::TX_DATASHARD, + "Operation " << *op << " is the new logically complete end at " << Self->TabletID()); ActivePlannedOpsLogicallyCompleteEnd = pr.first; } bool isIncomplete = isComplete || op->HasFlag(TTxFlags::BlockingImmediateWrites); if (ActivePlannedOpsLogicallyIncompleteEnd == ActivePlannedOps.end() && !isIncomplete) { + LOG_TRACE_S(*TlsActivationContext, NKikimrServices::TX_DATASHARD, + "Operation " << *op << " is the new logically incomplete end at " << Self->TabletID()); ActivePlannedOpsLogicallyIncompleteEnd = pr.first; } } diff --git a/ydb/core/tx/datashard/datashard_ut_snapshot.cpp b/ydb/core/tx/datashard/datashard_ut_snapshot.cpp index 51da5d32d2ff..ea3c67b171e7 100644 --- a/ydb/core/tx/datashard/datashard_ut_snapshot.cpp +++ b/ydb/core/tx/datashard/datashard_ut_snapshot.cpp @@ -4675,6 +4675,227 @@ Y_UNIT_TEST_SUITE(DataShardSnapshots) { "{ items { uint64_value: 15 } }"); } + Y_UNIT_TEST(PipelineAndMediatorRestoreRace) { + TPortManager pm; + TServerSettings serverSettings(pm.GetPort(2134)); + serverSettings.SetDomainName("Root") + .SetUseRealThreads(false) + .SetDomainPlanResolution(100) + .SetEnableDataShardVolatileTransactions(false); + + Tests::TServer::TPtr server = new TServer(serverSettings); + auto &runtime = *server->GetRuntime(); + auto sender = runtime.AllocateEdgeActor(); + + runtime.SetLogPriority(NKikimrServices::TX_DATASHARD, NLog::PRI_TRACE); + + InitRoot(server, sender); + + TDisableDataShardLogBatching disableDataShardLogBatching; + + UNIT_ASSERT_VALUES_EQUAL( + KqpSchemeExec(runtime, R"( + CREATE TABLE `/Root/table1` (key int, value int, PRIMARY KEY (key)); + CREATE TABLE `/Root/table2` (key int, value int, PRIMARY KEY (key)); + )"), + "SUCCESS"); + + const auto shards1 = GetTableShards(server, sender, "/Root/table1"); + UNIT_ASSERT_VALUES_EQUAL(shards1.size(), 1u); + + // Upsert initial data + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleExec(runtime, R"( + UPSERT INTO `/Root/table1` (key, value) VALUES (1, 10); + UPSERT INTO `/Root/table2` (key, value) VALUES (2, 20); + )"), + ""); + + // Make sure shards have unprotected reads enabled + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleExec(runtime, R"( + SELECT key, value FROM `/Root/table1` + UNION ALL + SELECT key, value FROM `/Root/table2` + ORDER BY key; + )"), + "{ items { int32_value: 1 } items { int32_value: 10 } }, " + "{ items { int32_value: 2 } items { int32_value: 20 } }"); + + std::vector readsets; + auto blockReadSets = runtime.AddObserver( + [&](TEvTxProcessing::TEvReadSet::TPtr& ev) { + auto* msg = ev->Get(); + Cerr << "... blocking readset for " << msg->Record.GetTabletDest() << Endl; + readsets.push_back(std::move(ev)); + }); + + size_t planSteps = 0; + auto observePlanSteps = runtime.AddObserver( + [&](TEvTxProcessing::TEvPlanStep::TPtr& ev) { + auto* msg = ev->Get(); + Cerr << "... observed plan step " << msg->Record.GetStep() << " for " << msg->Record.GetTabletID() << Endl; + ++planSteps; + }); + + // Create a "staircase" of transactions at different steps + + // Upsert1 will have outgoing readsets from both shards + Cerr << "... sending upsert1" << Endl; + auto upsert1 = KqpSimpleSend(runtime, R"( + SELECT key, value FROM `/Root/table1` WHERE key = 1; + SELECT key, value FROM `/Root/table2` WHERE key = 2; + UPSERT INTO `/Root/table1` (key, value) VALUES (3, 30), (5, 50); + UPSERT INTO `/Root/table2` (key, value) VALUES (4, 40); + )"); + WaitFor(runtime, [&]{ return planSteps >= 2; }, "upsert1 plan step"); + UNIT_ASSERT_VALUES_EQUAL(planSteps, 2u); + WaitFor(runtime, [&]{ return readsets.size() >= 2; }, "upsert1 readsets"); + UNIT_ASSERT_VALUES_EQUAL(readsets.size(), 2u); + + // Upsert2 will be blocked by dependencies (key 5) at table1, but not table2 + Cerr << "... sending upsert2" << Endl; + auto upsert2 = KqpSimpleSend(runtime, R"( + SELECT key, value FROM `/Root/table2` WHERE key = 2; + UPSERT INTO `/Root/table1` (key, value) VALUES (5, 55), (7, 70); + )"); + WaitFor(runtime, [&]{ return planSteps >= 4; }, "upsert2 plan step"); + UNIT_ASSERT_VALUES_EQUAL(planSteps, 4u); + WaitFor(runtime, [&]{ return readsets.size() >= 3; }, "upsert2 readset from table2"); + UNIT_ASSERT_VALUES_EQUAL(readsets.size(), 3u); + + // Upsert3 will be blocked by dependencies (key 7) at table1, but not table2 + Cerr << "... sending upsert3" << Endl; + auto upsert3 = KqpSimpleSend(runtime, R"( + SELECT key, value FROM `/Root/table2` WHERE key = 2; + UPSERT INTO `/Root/table1` (key, value) VALUES (7, 77), (9, 90); + )"); + WaitFor(runtime, [&]{ return planSteps >= 6; }, "upsert3 plan step"); + UNIT_ASSERT_VALUES_EQUAL(planSteps, 6u); + WaitFor(runtime, [&]{ return readsets.size() >= 4; }, "upsert3 readset from table2"); + UNIT_ASSERT_VALUES_EQUAL(readsets.size(), 4u); + + // Sleep a little to make sure everything is persisted at table1 and mediator time advanced + runtime.SimulateSleep(TDuration::MilliSeconds(200)); + + // Now restart table1 shard while blocking mediator timecast registration + std::vector registrations; + auto blockRegistrations = runtime.AddObserver( + [&](TEvMediatorTimecast::TEvRegisterTabletResult::TPtr& ev) { + Cerr << "... blocking timecast registration result for " << ev->GetRecipientRewrite() << Endl; + registrations.push_back(std::move(ev)); + }); + + // ... waiting for the new tablet actor booting + TActorId shardActor; + auto waitBoot = runtime.AddObserver( + [&](TEvTablet::TEvBoot::TPtr& ev) { + auto* msg = ev->Get(); + if (msg->TabletID == shards1.at(0)) { + shardActor = ev->GetRecipientRewrite(); + Cerr << "... booting " << msg->TabletID << " with actor " << shardActor << Endl; + } + }); + + // ... and blocking progress transactions + size_t allowProgress = 0; + std::vector> blockedProgress; + auto blockProgress = runtime.AddObserver([&](TAutoPtr& ev) { + if (shardActor && + ev->GetRecipientRewrite() == shardActor && + ev->GetTypeRewrite() == EventSpaceBegin(TKikimrEvents::ES_PRIVATE) + 0 /* EvProgressTransaction */) + { + if (allowProgress > 0) { + Cerr << "... allowing EvProgressTransaction for " << ev->GetRecipientRewrite() << Endl; + --allowProgress; + } else { + Cerr << "... blocking EvProgressTransaction for " << ev->GetRecipientRewrite() << Endl; + blockedProgress.push_back(std::move(ev)); + } + } + }); + + Cerr << "... rebooting " << shards1.at(0) << Endl; + GracefulRestartTablet(runtime, shards1.at(0), sender); + + WaitFor(runtime, [&]{ return registrations.size() >= 1; }, "timecast registration"); + UNIT_ASSERT_VALUES_EQUAL(registrations.size(), 1u); + + WaitFor(runtime, [&]{ return readsets.size() >= 8; }, "readsets resent"); + UNIT_ASSERT_VALUES_EQUAL(readsets.size(), 8u); + + // We need to unblock two transactions + // The first is already marked incomplete + // The second will be added to the pipeline, but blocked by dependencies + for (int i = 0; i < 2; ++i) { + WaitFor(runtime, [&]{ return blockedProgress.size() >= 1; }, "blocked progress"); + UNIT_ASSERT_VALUES_EQUAL(blockedProgress.size(), 1); + + Cerr << "... unblocking a single progress tx" << Endl; + allowProgress += blockedProgress.size(); + for (auto& ev : blockedProgress) { + runtime.Send(ev.Release(), 0, true); + } + blockedProgress.clear(); + } + + WaitFor(runtime, [&]{ return blockedProgress.size() >= 1; }, "blocked progress"); + UNIT_ASSERT_VALUES_EQUAL(blockedProgress.size(), 1); + + runtime.SimulateSleep(TDuration::MilliSeconds(1)); + + Cerr << "... unblocking timecast registration" << Endl; + blockRegistrations.Remove(); + for (auto& ev : registrations) { + runtime.Send(ev.Release(), 0, true); + } + + runtime.SimulateSleep(TDuration::MilliSeconds(200)); + + // Unblock the final transaction + // It's going to be before the restored worst-case unprotected read edge + // However because it's no the complete/incomplete tail it will not update lists properly + Cerr << "... unblocking final progress tx" << Endl; + blockProgress.Remove(); + for (auto& ev : blockedProgress) { + runtime.Send(ev.Release(), 0, true); + } + blockedProgress.clear(); + + runtime.SimulateSleep(TDuration::MilliSeconds(1)); + + // Perform snapshot read that will try to mark all pending transactions as logically complete/incomplete + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleExec(runtime, R"( + SELECT key, value FROM `/Root/table1` WHERE key = 1 + UNION ALL + SELECT key, value FROM `/Root/table2` WHERE key = 2 + ORDER BY key; + )"), + "{ items { int32_value: 1 } items { int32_value: 10 } }, " + "{ items { int32_value: 2 } items { int32_value: 20 } }"); + + Cerr << "... unblocking readsets" << Endl; + blockReadSets.Remove(); + for (auto& ev : readsets) { + runtime.Send(ev.Release(), 0, true); + } + readsets.clear(); + + UNIT_ASSERT_VALUES_EQUAL( + FormatResult(AwaitResponse(runtime, std::move(upsert1))), + "{ items { int32_value: 1 } items { int32_value: 10 } }\n" + "{ items { int32_value: 2 } items { int32_value: 20 } }"); + + UNIT_ASSERT_VALUES_EQUAL( + FormatResult(AwaitResponse(runtime, std::move(upsert2))), + "{ items { int32_value: 2 } items { int32_value: 20 } }"); + + UNIT_ASSERT_VALUES_EQUAL( + FormatResult(AwaitResponse(runtime, std::move(upsert3))), + "{ items { int32_value: 2 } items { int32_value: 20 } }"); + } + } } // namespace NKikimr From 295aafda229bcf7d117b2563df7ff43dcde0c5a2 Mon Sep 17 00:00:00 2001 From: qrort <31865255+qrort@users.noreply.github.com> Date: Mon, 8 Apr 2024 14:49:08 +0300 Subject: [PATCH 009/110] KIKIMR-18545: do not set not_null for default values (#3512) (#3548) --- ydb/core/kqp/ut/opt/kqp_not_null_ut.cpp | 22 ++++++++++++++----- .../tx/schemeshard/ut_export/ut_export.cpp | 2 -- ydb/core/ydb_convert/table_description.cpp | 10 +++++---- ydb/services/ydb/ydb_ut.cpp | 4 ---- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/ydb/core/kqp/ut/opt/kqp_not_null_ut.cpp b/ydb/core/kqp/ut/opt/kqp_not_null_ut.cpp index 01a3c9bdb215..5252d6f1e6de 100644 --- a/ydb/core/kqp/ut/opt/kqp_not_null_ut.cpp +++ b/ydb/core/kqp/ut/opt/kqp_not_null_ut.cpp @@ -1966,8 +1966,8 @@ Y_UNIT_TEST_SUITE(KqpNotNullColumns) { {"Value3", "Pg('pgint2','',21,0,0)"} }; - const THashMap columnNullability = { - {"Key1", true}, + const THashMap columnNonNullability = { + {"Key1", false}, {"Key2", false}, {"Value1", false}, {"Value2", false}, @@ -1977,7 +1977,12 @@ Y_UNIT_TEST_SUITE(KqpNotNullColumns) { const auto& columns = describeTableResult.GetTableDescription().GetTableColumns(); for (const auto& column : columns) { UNIT_ASSERT_VALUES_EQUAL_C(column.Type.ToString(), columnTypes.at(column.Name), column.Name); - UNIT_ASSERT_VALUES_EQUAL_C(column.NotNull.value(), columnNullability.at(column.Name), column.Name); + bool isNotNull = columnNonNullability.at(column.Name); + if (isNotNull) { + UNIT_ASSERT_VALUES_EQUAL_C(column.NotNull.value(), true, column.Name); + } else { + UNIT_ASSERT_C(!column.NotNull.has_value() || !column.NotNull.value(), column.Name); + } } } @@ -1997,16 +2002,21 @@ Y_UNIT_TEST_SUITE(KqpNotNullColumns) { } auto describeTableResult = session.DescribeTable("/Root/NotNullCheck").GetValueSync(); UNIT_ASSERT_C(describeTableResult.IsSuccess(), describeTableResult.GetIssues().ToString()); - const THashMap columnNullability = { + const THashMap columnNonNullability = { {"1", false}, - {"2", true}, + {"2", false}, {"3", false}, {"4", true}, }; const auto& columns = describeTableResult.GetTableDescription().GetTableColumns(); for (const auto& column : columns) { - UNIT_ASSERT_VALUES_EQUAL_C(column.NotNull.value(), columnNullability.at(column.Name), column.Name); + bool isNotNull = columnNonNullability.at(column.Name); + if (isNotNull) { + UNIT_ASSERT_VALUES_EQUAL_C(column.NotNull.value(), true, column.Name); + } else { + UNIT_ASSERT_C(!column.NotNull.has_value() || !column.NotNull.value(), column.Name); + } } { diff --git a/ydb/core/tx/schemeshard/ut_export/ut_export.cpp b/ydb/core/tx/schemeshard/ut_export/ut_export.cpp index ef35341e5769..936010729a87 100644 --- a/ydb/core/tx/schemeshard/ut_export/ut_export.cpp +++ b/ydb/core/tx/schemeshard/ut_export/ut_export.cpp @@ -364,7 +364,6 @@ Y_UNIT_TEST_SUITE(TExportToS3Tests) { } } } - not_null: false from_literal { type { optional_type { @@ -389,7 +388,6 @@ columns { } } } - not_null: false from_literal { type { optional_type { diff --git a/ydb/core/ydb_convert/table_description.cpp b/ydb/core/ydb_convert/table_description.cpp index 7912606b9214..e9350f2733f6 100644 --- a/ydb/core/ydb_convert/table_description.cpp +++ b/ydb/core/ydb_convert/table_description.cpp @@ -367,13 +367,15 @@ static Ydb::Type* AddColumn(Ydb::Table::ColumnMeta* newColumn, const TColumn& co pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); pg->set_typlen(0); pg->set_typmod(0); + if (column.GetNotNull()) { + newColumn->set_not_null(column.GetNotNull()); + } } else { NYql::NProto::TypeIds protoType; if (!NYql::NProto::TypeIds_Parse(column.GetType(), &protoType)) { throw NYql::TErrorException(NKikimrIssues::TIssuesIds::DEFAULT_ERROR) << "Got invalid type: " << column.GetType() << " for column: " << column.GetName(); } - if (column.GetNotNull()) { columnType = newColumn->mutable_type(); } else { @@ -389,7 +391,6 @@ static Ydb::Type* AddColumn(Ydb::Table::ColumnMeta* newColumn, const TColumn& co NMiniKQL::ExportPrimitiveTypeToProto(protoType, *columnType); } } - newColumn->set_not_null(column.GetNotNull()); return columnType; } @@ -407,13 +408,15 @@ Ydb::Type* AddColumn(Ydb::Table::ColumnMeta pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); pg->set_typlen(0); pg->set_typmod(0); + if (column.GetNotNull()) { + newColumn->set_not_null(column.GetNotNull()); + } } else { NYql::NProto::TypeIds protoType; if (!NYql::NProto::TypeIds_Parse(column.GetType(), &protoType)) { throw NYql::TErrorException(NKikimrIssues::TIssuesIds::DEFAULT_ERROR) << "Got invalid type: " << column.GetType() << " for column: " << column.GetName(); } - if (column.GetNotNull()) { columnType = newColumn->mutable_type(); } else { @@ -429,7 +432,6 @@ Ydb::Type* AddColumn(Ydb::Table::ColumnMeta NMiniKQL::ExportPrimitiveTypeToProto(protoType, *columnType); } } - newColumn->set_not_null(column.GetNotNull()); switch (column.GetDefaultValueCase()) { case NKikimrSchemeOp::TColumnDescription::kDefaultFromLiteral: { auto fromLiteral = newColumn->mutable_from_literal(); diff --git a/ydb/services/ydb/ydb_ut.cpp b/ydb/services/ydb/ydb_ut.cpp index cd3fc0dd6fed..a70a8f8488bf 100644 --- a/ydb/services/ydb/ydb_ut.cpp +++ b/ydb/services/ydb/ydb_ut.cpp @@ -1262,7 +1262,6 @@ columns { } } } - not_null: false } columns { name: "Value" @@ -1273,7 +1272,6 @@ columns { } } } - not_null: false } primary_key: "Key" partitioning_settings { @@ -1601,7 +1599,6 @@ columns { } } } - not_null: false } columns { name: "IValue" @@ -1612,7 +1609,6 @@ columns { } } } - not_null: false } primary_key: "Key" indexes { From d39295a2102477e76782f742d5a4ca1e8d8f2858 Mon Sep 17 00:00:00 2001 From: Alexander Rutkovsky Date: Mon, 8 Apr 2024 22:12:35 +0300 Subject: [PATCH 010/110] Straighten BSC <-> NW interoperation protocol (merge from main) (#3575) --- ydb/core/base/blobstorage.h | 87 +++++-------- .../blobstorage/ut_blobstorage/balancing.cpp | 6 +- .../ut_blobstorage/group_reconfiguration.cpp | 2 +- ydb/core/blobstorage/ut_blobstorage/lib/env.h | 19 +-- .../blobstorage/ut_blobstorage/mirror3of4.cpp | 20 +-- .../blobstorage/ut_blobstorage/osiris.cpp | 11 +- .../vdisk/common/blobstorage_event_filter.cpp | 6 - ydb/core/mind/bscontroller/config.cpp | 22 ++-- ydb/core/mind/bscontroller/config.h | 3 +- ydb/core/mind/bscontroller/get_group.cpp | 28 +++-- .../bscontroller/group_reconfigure_wipe.cpp | 89 +------------ ydb/core/mind/bscontroller/impl.h | 69 ++++++++++- ydb/core/mind/bscontroller/node_report.cpp | 4 + .../mind/bscontroller/propose_group_key.cpp | 30 +++-- ydb/core/mind/bscontroller/register_node.cpp | 117 ++++++++++++------ .../bscontroller/ut_bscontroller/main.cpp | 16 ++- 16 files changed, 261 insertions(+), 268 deletions(-) diff --git a/ydb/core/base/blobstorage.h b/ydb/core/base/blobstorage.h index 34c07e6feaa3..e7bfa37b25b7 100644 --- a/ydb/core/base/blobstorage.h +++ b/ydb/core/base/blobstorage.h @@ -786,64 +786,35 @@ struct TEvBlobStorage { EvBunchOfEvents, // blobstorage controller interface - // EvControllerReadSchemeString = EvPut + 11 * 512, - // EvControllerReadDataString, - EvControllerRegisterNode = EvPut + 11 * 512 + 2, - EvControllerCreatePDisk, - EvControllerCreateVDiskSlots, - EvControllerCreateGroup, - EvControllerSelectGroups, - EvControllerGetGroup, - EvControllerUpdateDiskStatus, - EvControllerUpdateGroupsUsage, // Not used. - EvControllerConfigRequest, - EvControllerConfigResponse, - EvControllerProposeRequest, - EvControllerProposeResponse, - EvControllerVDiskStatusSubscribeRequest, - EvControllerVDiskStatusReport, - EvControllerGroupStatusRequest, - EvControllerGroupStatusResponse, - EvControllerUpdateGroup, - EvControllerUpdateFaultyDisks, - EvControllerProposeGroupKey, - EvControllerUpdateGroupLatencies, // Not used. - EvControllerUpdateGroupStat, - EvControllerNotifyGroupChange, - EvControllerCommitGroupLatencies, - EvControllerUpdateSelfHealInfo, - EvControllerScrubQueryStartQuantum, - EvControllerScrubQuantumFinished, - EvControllerScrubReportQuantumInProgress, - EvControllerUpdateNodeDrives, - EvControllerGroupDecommittedNotify, - EvControllerGroupDecommittedResponse, - EvControllerGroupMetricsExchange, - - // EvControllerReadSchemeStringResult = EvPut + 12 * 512, - // EvControllerReadDataStringResult, - EvControllerNodeServiceSetUpdate = EvPut + 12 * 512 + 2, - EvControllerCreatePDiskResult, - EvControllerCreateVDiskSlotsResult, - EvControllerCreateGroupResult, - EvControllerSelectGroupsResult, - EvRequestControllerInfo, - EvResponseControllerInfo, - EvControllerGroupReconfigureReplace, // Not used. - EvControllerGroupReconfigureReplaceResult, // Not used. - EvControllerGroupReconfigureWipe, - EvControllerGroupReconfigureWipeResult, - EvControllerNodeReport, - EvControllerScrubStartQuantum, - - EvControllerMigrationPause, - EvControllerMigrationContinue, - EvControllerMigrationFinished, - EvControllerMigrationBatch, - EvControllerMigrationBatchRequest, - EvControllerMigrationDone, - - EvControllerUpdateSystemViews, + EvControllerRegisterNode = 0x10031602, + EvControllerSelectGroups = 0x10031606, + EvControllerGetGroup = 0x10031607, + EvControllerUpdateDiskStatus = 0x10031608, + EvControllerConfigRequest = 0x1003160a, + EvControllerConfigResponse = 0x1003160b, + EvControllerProposeGroupKey = 0x10031614, + EvControllerUpdateGroupStat = 0x10031616, + EvControllerNotifyGroupChange = 0x10031617, + EvControllerCommitGroupLatencies = 0x10031618, + EvControllerUpdateSelfHealInfo = 0x10031619, + EvControllerScrubQueryStartQuantum = 0x1003161a, + EvControllerScrubQuantumFinished = 0x1003161b, + EvControllerScrubReportQuantumInProgress = 0x1003161c, + EvControllerUpdateNodeDrives = 0x1003161d, + EvControllerGroupDecommittedNotify = 0x1003161e, + EvControllerGroupDecommittedResponse = 0x1003161f, + EvControllerGroupMetricsExchange = 0x10031620, + + // BSC interface result section + EvControllerNodeServiceSetUpdate = 0x10031802, + EvControllerSelectGroupsResult = 0x10031806, + EvRequestControllerInfo = 0x10031807, + EvResponseControllerInfo = 0x10031808, + EvControllerGroupReconfigureWipe = 0x1003180b, + EvControllerGroupReconfigureWipeResult = 0x1003180c, + EvControllerNodeReport = 0x1003180d, + EvControllerScrubStartQuantum = 0x1003180e, + EvControllerUpdateSystemViews = 0x10031815, // proxy - node controller interface EvConfigureProxy = EvPut + 13 * 512, diff --git a/ydb/core/blobstorage/ut_blobstorage/balancing.cpp b/ydb/core/blobstorage/ut_blobstorage/balancing.cpp index 983f9a674550..7a98768e0cfc 100644 --- a/ydb/core/blobstorage/ut_blobstorage/balancing.cpp +++ b/ydb/core/blobstorage/ut_blobstorage/balancing.cpp @@ -303,9 +303,11 @@ struct TRandomTest { ui32 pos = random() % Env->Settings.NodeCount; if (Env.RunningNodes.contains(pos)) { auto baseConfig = Env->FetchBaseConfig(); - const auto& somePDisk = baseConfig.GetPDisk(pos); const auto& someVSlot = baseConfig.GetVSlot(pos); - Env->Wipe(somePDisk.GetNodeId(), somePDisk.GetPDiskId(), someVSlot.GetVSlotId().GetVSlotId()); + const auto& loc = someVSlot.GetVSlotId(); + Env->Wipe(loc.GetNodeId(), loc.GetPDiskId(), loc.GetVSlotId(), + TVDiskID(someVSlot.GetGroupId(), someVSlot.GetGroupGeneration(), someVSlot.GetFailRealmIdx(), + someVSlot.GetFailDomainIdx(), someVSlot.GetVDiskIdx())); Env->Sim(TDuration::Seconds(10)); } } diff --git a/ydb/core/blobstorage/ut_blobstorage/group_reconfiguration.cpp b/ydb/core/blobstorage/ut_blobstorage/group_reconfiguration.cpp index d6ff8bc331f0..13a4d7f36f5e 100644 --- a/ydb/core/blobstorage/ut_blobstorage/group_reconfiguration.cpp +++ b/ydb/core/blobstorage/ut_blobstorage/group_reconfiguration.cpp @@ -331,7 +331,7 @@ Y_UNIT_TEST_SUITE(GroupReconfiguration) { Timer.Reset(); auto ev = std::make_unique(); ev->Record.AddGroupIDs(GroupId); - NTabletPipe::SendData(SelfId(), ClientId, ev.release(), 0); + NTabletPipe::SendData(SelfId(), ClientId, ev.release(), Max()); } } diff --git a/ydb/core/blobstorage/ut_blobstorage/lib/env.h b/ydb/core/blobstorage/ut_blobstorage/lib/env.h index 6c8bc1f9538a..470e1a7a8e92 100644 --- a/ydb/core/blobstorage/ut_blobstorage/lib/env.h +++ b/ydb/core/blobstorage/ut_blobstorage/lib/env.h @@ -751,17 +751,20 @@ struct TEnvironmentSetup { Sim(TDuration::Seconds(15)); } - void Wipe(ui32 nodeId, ui32 pdiskId, ui32 vslotId) { - const TActorId self = Runtime->AllocateEdgeActor(Settings.ControllerNodeId, __FILE__, __LINE__); - auto ev = std::make_unique(); - auto& record = ev->Record; - auto *vslot = record.MutableVSlotId(); + void Wipe(ui32 nodeId, ui32 pdiskId, ui32 vslotId, const TVDiskID& vdiskId) { + NKikimrBlobStorage::TConfigRequest request; + request.SetIgnoreGroupFailModelChecks(true); + request.SetIgnoreDegradedGroupsChecks(true); + request.SetIgnoreDisintegratedGroupsChecks(true); + auto *cmd = request.AddCommand(); + auto *wipe = cmd->MutableWipeVDisk(); + auto *vslot = wipe->MutableVSlotId(); vslot->SetNodeId(nodeId); vslot->SetPDiskId(pdiskId); vslot->SetVSlotId(vslotId); - Runtime->SendToPipe(TabletId, self, ev.release(), 0, TTestActorSystem::GetPipeConfigWithRetries()); - auto response = WaitForEdgeActorEvent(self); - UNIT_ASSERT_VALUES_EQUAL(response->Get()->Record.GetStatus(), NKikimrProto::OK); + VDiskIDFromVDiskID(vdiskId, wipe->MutableVDiskId()); + auto response = Invoke(request); + UNIT_ASSERT_C(response.GetSuccess(), response.GetErrorDescription()); } void WaitForVDiskToGetRunning(const TVDiskID& vdiskId, TActorId actorId) { diff --git a/ydb/core/blobstorage/ut_blobstorage/mirror3of4.cpp b/ydb/core/blobstorage/ut_blobstorage/mirror3of4.cpp index b9ffea9da2c4..2e6dcf73138c 100644 --- a/ydb/core/blobstorage/ut_blobstorage/mirror3of4.cpp +++ b/ydb/core/blobstorage/ut_blobstorage/mirror3of4.cpp @@ -65,26 +65,10 @@ Y_UNIT_TEST_SUITE(Mirror3of4) { UNIT_ASSERT_VALUES_EQUAL(res->Get()->Status, NKikimrProto::OK); } if (i == 500) { - const TActorId self = runtime->AllocateEdgeActor(1); - auto ev = std::make_unique(); - ev->Record.MutableVSlotId()->SetNodeId(2); - ev->Record.MutableVSlotId()->SetPDiskId(1000); - ev->Record.MutableVSlotId()->SetVSlotId(1000); - runtime->SendToPipe(env.TabletId, self, ev.release(), 0, TTestActorSystem::GetPipeConfigWithRetries()); - auto response = env.WaitForEdgeActorEvent(self); - auto& r = response->Get()->Record; - UNIT_ASSERT_EQUAL(r.GetStatus(), NKikimrProto::OK); + env.Wipe(2, 1000, 1000, TVDiskID(groupId, 1, 0, 1, 0)); } if (i == 600) { - const TActorId self = runtime->AllocateEdgeActor(1); - auto ev = std::make_unique(); - ev->Record.MutableVSlotId()->SetNodeId(3); - ev->Record.MutableVSlotId()->SetPDiskId(1000); - ev->Record.MutableVSlotId()->SetVSlotId(1000); - runtime->SendToPipe(env.TabletId, self, ev.release(), 0, TTestActorSystem::GetPipeConfigWithRetries()); - auto response = env.WaitForEdgeActorEvent(self); - auto& r = response->Get()->Record; - UNIT_ASSERT_EQUAL(r.GetStatus(), NKikimrProto::OK); + env.Wipe(3, 1000, 1000, TVDiskID(groupId, 1, 0, 2, 0)); } } diff --git a/ydb/core/blobstorage/ut_blobstorage/osiris.cpp b/ydb/core/blobstorage/ut_blobstorage/osiris.cpp index 39cbaf9f4a9b..d818edff1c0c 100644 --- a/ydb/core/blobstorage/ut_blobstorage/osiris.cpp +++ b/ydb/core/blobstorage/ut_blobstorage/osiris.cpp @@ -62,15 +62,8 @@ bool DoTestCase(TBlobStorageGroupType::EErasureSpecies erasure, const std::setAllocateEdgeActor(1); - auto ev = std::make_unique(); - auto *slotId = ev->Record.MutableVSlotId(); - slotId->CopyFrom(vslot.GetVSlotId()); - env.Runtime->SendToPipe(env.TabletId, sender, ev.release(), 0, TTestActorSystem::GetPipeConfigWithRetries()); - auto response = env.WaitForEdgeActorEvent(sender); - Y_ABORT_UNLESS(response->Get()->Record.GetStatus() == NKikimrProto::OK); - + const auto& v = vslot.GetVSlotId(); + env.Wipe(v.GetNodeId(), v.GetPDiskId(), v.GetVSlotId(), vdiskId); env.Sim(TDuration::Seconds(30)); } diff --git a/ydb/core/blobstorage/vdisk/common/blobstorage_event_filter.cpp b/ydb/core/blobstorage/vdisk/common/blobstorage_event_filter.cpp index ee912aff02e3..34603f90b722 100644 --- a/ydb/core/blobstorage/vdisk/common/blobstorage_event_filter.cpp +++ b/ydb/core/blobstorage/vdisk/common/blobstorage_event_filter.cpp @@ -54,12 +54,6 @@ namespace NKikimr { TEvBlobStorage::EvControllerUpdateDiskStatus, TEvBlobStorage::EvControllerConfigRequest, TEvBlobStorage::EvControllerConfigResponse, - TEvBlobStorage::EvControllerVDiskStatusSubscribeRequest, - TEvBlobStorage::EvControllerVDiskStatusReport, - TEvBlobStorage::EvControllerGroupStatusRequest, - TEvBlobStorage::EvControllerGroupStatusResponse, - TEvBlobStorage::EvControllerUpdateGroup, - TEvBlobStorage::EvControllerUpdateFaultyDisks, TEvBlobStorage::EvControllerUpdateGroupStat, TEvBlobStorage::EvControllerSelectGroupsResult, diff --git a/ydb/core/mind/bscontroller/config.cpp b/ydb/core/mind/bscontroller/config.cpp index 32ffdcb32c58..0854afdb3a00 100644 --- a/ydb/core/mind/bscontroller/config.cpp +++ b/ydb/core/mind/bscontroller/config.cpp @@ -17,22 +17,21 @@ namespace NKikimr::NBsController { , State(state) {} - void Execute(std::deque>& outbox) { + void Execute() { ApplyUpdates(); for (auto &pair : Services) { const TNodeId &nodeId = pair.first; - if (TNodeInfo *node = Self->FindNode(nodeId); node && node->ConnectedCount) { - auto event = MakeHolder(); + if (TNodeInfo *node = Self->FindNode(nodeId); node && node->ConnectedServerId) { + auto event = std::make_unique(); auto& record = event->Record; pair.second.Swap(&record); record.SetStatus(NKikimrProto::OK); record.SetNodeID(nodeId); record.SetInstanceId(Self->InstanceId); record.SetAvailDomain(AppData()->DomainsInfo->GetDomainUidByTabletId(Self->TabletID())); - outbox.push_back(std::make_unique(MakeBlobStorageNodeWardenID(nodeId), - Self->SelfId(), event.Release())); + State.Outbox.emplace_back(nodeId, std::move(event), 0); } } } @@ -448,7 +447,7 @@ namespace NKikimr::NBsController { } } - TNodeWardenUpdateNotifier(this, state).Execute(state.Outbox); + TNodeWardenUpdateNotifier(this, state).Execute(); state.CheckConsistency(); state.Commit(); @@ -460,7 +459,7 @@ namespace NKikimr::NBsController { } void TBlobStorageController::CommitSelfHealUpdates(TConfigState& state) { - auto ev = MakeHolder(); + auto ev = std::make_unique(); auto sh = MakeHolder(); for (auto&& [base, overlay] : state.Groups.Diff()) { @@ -500,7 +499,7 @@ namespace NKikimr::NBsController { } if (ev->Created || ev->Deleted) { - state.Outbox.push_back(std::make_unique(StatProcessorActorId, SelfId(), ev.Release())); + state.StatProcessorOutbox.push_back(std::move(ev)); } if (sh->GroupsToUpdate) { FillInSelfHealGroups(*sh, &state); @@ -590,8 +589,11 @@ namespace NKikimr::NBsController { } ui64 TBlobStorageController::TConfigState::ApplyConfigUpdates() { - for (auto& msg : Outbox) { - TActivationContext::Send(msg.release()); + for (auto& [nodeId, ev, cookie] : Outbox) { + Self.SendToWarden(nodeId, std::move(ev), cookie); + } + for (auto& ev : StatProcessorOutbox) { + Self.SelfId().Send(Self.StatProcessorActorId, ev.release()); } if (UpdateSelfHealInfoMsg) { diff --git a/ydb/core/mind/bscontroller/config.h b/ydb/core/mind/bscontroller/config.h index bfa0f9e6bfdd..e0e64654da84 100644 --- a/ydb/core/mind/bscontroller/config.h +++ b/ydb/core/mind/bscontroller/config.h @@ -89,7 +89,8 @@ namespace NKikimr { THashSet PDisksToRemove; // outgoing messages - std::deque> Outbox; + std::deque, ui64>> Outbox; + std::deque> StatProcessorOutbox; THolder UpdateSelfHealInfoMsg; // deferred callbacks diff --git a/ydb/core/mind/bscontroller/get_group.cpp b/ydb/core/mind/bscontroller/get_group.cpp index 63d1ce140b63..c9af06f6f17b 100644 --- a/ydb/core/mind/bscontroller/get_group.cpp +++ b/ydb/core/mind/bscontroller/get_group.cpp @@ -4,7 +4,8 @@ namespace NKikimr::NBsController { class TBlobStorageController::TTxGetGroup : public TTransactionBase { TEvBlobStorage::TEvControllerGetGroup::TPtr Request; - std::unique_ptr Response; + std::unique_ptr Response; + TNodeId NodeId = {}; public: TTxGetGroup(TEvBlobStorage::TEvControllerGetGroup::TPtr& ev, TBlobStorageController *controller) @@ -20,27 +21,34 @@ class TBlobStorageController::TTxGetGroup : public TTransactionBaseGet()->Record)); + NodeId = Request->Get()->Record.GetNodeID(); + + if (Request->Cookie != Max() && !Self->ValidateIncomingNodeWardenEvent(*Request)) { + Response = std::make_unique(NKikimrProto::ERROR, NodeId); + return true; + } + const auto& v = Request->Get()->Record.GetGroupIDs(); TSet groupIDsToRead(v.begin(), v.end()); - const TNodeId nodeId = Request->Get()->Record.GetNodeID(); - auto res = std::make_unique(NKikimrProto::OK, nodeId); - Self->ReadGroups(groupIDsToRead, true, res.get(), nodeId); + Response = std::make_unique(NKikimrProto::OK, NodeId); + Self->ReadGroups(groupIDsToRead, true, Response.get(), NodeId); - auto& node = Self->GetNode(nodeId); + auto& node = Self->GetNode(NodeId); for (TGroupId groupId : v) { node.GroupsRequested.insert(groupId); - Self->GroupToNode.emplace(groupId, nodeId); + Self->GroupToNode.emplace(groupId, NodeId); } - Response = std::make_unique(nodeId ? MakeBlobStorageNodeWardenID(nodeId) : Request->Sender, - Self->SelfId(), res.release()); - return true; } void Complete(const TActorContext&) override { - TActivationContext::Send(Response.release()); + if (NodeId) { + Self->SendToWarden(NodeId, std::move(Response), Request->Cookie); + } else { + Self->SendInReply(*Request, std::move(Response)); + } } }; diff --git a/ydb/core/mind/bscontroller/group_reconfigure_wipe.cpp b/ydb/core/mind/bscontroller/group_reconfigure_wipe.cpp index 9a7aff6c7fdf..bbce8a1e5cb2 100644 --- a/ydb/core/mind/bscontroller/group_reconfigure_wipe.cpp +++ b/ydb/core/mind/bscontroller/group_reconfigure_wipe.cpp @@ -1,93 +1,10 @@ #include "impl.h" -namespace NKikimr { -namespace NBsController { - -class TBlobStorageController::TTxGroupReconfigureWipe : public TTransactionBase { -protected: - TEvBlobStorage::TEvControllerGroupReconfigureWipe::TPtr Event; - NKikimrProto::EReplyStatus Status; - TString ErrorReason; - typedef TMap> TResultForNode; - TResultForNode ResultForNode; - -public: - TTxGroupReconfigureWipe(TEvBlobStorage::TEvControllerGroupReconfigureWipe::TPtr &ev, - TBlobStorageController *controller) - : TBase(controller) - , Event(ev) - , Status(NKikimrProto::OK) - {} - - TTxType GetTxType() const override { return NBlobStorageController::TXTYPE_GROUP_RECONFIGURE_WIPE; } - - bool Execute(TTransactionContext &txc, const TActorContext&) override { - STLOG(PRI_DEBUG, BS_CONTROLLER, BSCTXGRW01, "TTxGroupReconfigureWipe execute"); - NIceDb::TNiceDb db(txc.DB); - - Status = NKikimrProto::ERROR; - ResultForNode.clear(); - - auto& record = Event->Get()->Record; - const TVSlotId id(record.GetVSlotId()); - - if (TVSlotInfo *info = Self->FindVSlot(id); !info) { - STLOG(PRI_ERROR, BS_CONTROLLER, BSCTXGRW02, "VSlot does not exist", (VSlotId, id)); - ErrorReason = TStringBuilder() << "VSlotId# " << id << " does not exist"; - } else if (info->Mood != TMood::Normal) { // Reply ERROR if From VSlot is improper mood - STLOG(PRI_ERROR, BS_CONTROLLER, BSCTXGRW03, "VSlot is not in the 'Normal' mood", (VSlotId, id), - (Mood, TMood::Name(TMood::EValue(info->Mood)))); - ErrorReason = TStringBuilder() << "VSlotId# " << id << " is in Mood# " << TMood::Name(TMood::EValue(info->Mood)); - } else { - // TODO(cthulhu): Prohibit more than Max simultaneous reconfigurations on one group - - // Mark VSlot for wipe - info->Mood = TMood::Wipe; - db.Table().Key(id.GetKey()).Update(info->Mood); - - // Prepare results for nodes - if (TNodeInfo *node = Self->FindNode(id.NodeId); node && node->ConnectedCount) { - auto& msg = ResultForNode[id.NodeId]; - msg = MakeHolder(NKikimrProto::OK, id.NodeId); - Self->ReadVSlot(*info, msg.Get()); - TSet groupIDsToRead; - groupIDsToRead.insert(info->GroupId); - Self->ReadGroups(groupIDsToRead, false, msg.Get(), id.NodeId); - for (const TGroupId groupId : groupIDsToRead) { - STLOG(PRI_ERROR, BS_CONTROLLER, BSCTXGRW05, "No configuration for group", (GroupId, groupId)); - } - } - - Status = NKikimrProto::OK; - } - - return true; - } - - void Complete(const TActorContext&) override { - // Send results to nodes - if (Status == NKikimrProto::OK) { - for (auto& [nodeId, msg] : ResultForNode) { - // TODO(cthulhu): Availability Domain !!! - const auto& node = nodeId; - const auto& record = msg->Record; - STLOG(PRI_DEBUG, BS_CONTROLLER, BSCTXGRW07, "Sending update", (NodeId, node), (Message, record)); - TActivationContext::Send(new IEventHandle(MakeBlobStorageNodeWardenID(nodeId), Self->SelfId(), msg.Release())); - } - } - - // Respond - auto response = MakeHolder(Status, ErrorReason); - auto& record = Event->Get()->Record; - STLOG(Status == NKikimrProto::OK ? PRI_DEBUG : PRI_ERROR, BS_CONTROLLER, BSCTXGRW06, "TTxGroupReconfigureWipe complete", - (Status, Status), (Request, record), (Response, response->Record)); - TActivationContext::Send(new IEventHandle(Event->Sender, Self->SelfId(), response.Release(), 0, Event->Cookie)); - } -}; +namespace NKikimr::NBsController { void TBlobStorageController::Handle(TEvBlobStorage::TEvControllerGroupReconfigureWipe::TPtr& ev) { - Execute(new TTxGroupReconfigureWipe(ev, this)); + SendInReply(*ev, std::make_unique(NKikimrProto::ERROR, + "unsupported operation")); } } -} diff --git a/ydb/core/mind/bscontroller/impl.h b/ydb/core/mind/bscontroller/impl.h index adb21035673c..36dcf62c9c22 100644 --- a/ydb/core/mind/bscontroller/impl.h +++ b/ydb/core/mind/bscontroller/impl.h @@ -56,7 +56,6 @@ class TBlobStorageController : public TActor, public TTa class TTxUpdateDiskMetrics; class TTxUpdateGroupLatencies; class TTxGroupMetricsExchange; - class TTxGroupReconfigureWipe; class TTxNodeReport; class TTxUpdateSeenOperational; class TTxConfigCmd; @@ -862,7 +861,8 @@ class TBlobStorageController : public TActor, public TTa public: using Table = Schema::Node; - ui32 ConnectedCount = 0; + TActorId ConnectedServerId; // the latest ServerId who sent RegisterNode + TActorId InterconnectSessionId; Table::NextPDiskID::Type NextPDiskID; TInstant LastConnectTimestamp; TInstant LastDisconnectTimestamp; @@ -1981,10 +1981,67 @@ class TBlobStorageController : public TActor, public TTa } } + bool ValidateIncomingNodeWardenEvent(const IEventHandle& ev) { + auto makeError = [&](TString message) { + STLOG(PRI_ERROR, BS_CONTROLLER, BSC16, "ValidateIncomingNodeWardenEvent error", + (Sender, ev.Sender), (PipeServerId, ev.Recipient), (InterconnectSessionId, ev.InterconnectSession), + (Type, ev.GetTypeRewrite()), (Message, message)); + return false; + }; + + switch (ev.GetTypeRewrite()) { + case TEvBlobStorage::EvControllerRegisterNode: { + if (const auto pipeIt = PipeServerToNode.find(ev.Recipient); pipeIt == PipeServerToNode.end()) { + return makeError("incorrect pipe server"); + } else if (pipeIt->second) { + return makeError("duplicate RegisterNode event"); + } + break; + } + + case TEvBlobStorage::EvControllerGetGroup: + if (ev.Sender == SelfId()) { + break; + } else if (ev.Cookie == Max()) { + break; // for testing purposes + } + [[fallthrough]]; + case TEvBlobStorage::EvControllerUpdateDiskStatus: + case TEvBlobStorage::EvControllerProposeGroupKey: + case TEvBlobStorage::EvControllerUpdateGroupStat: + case TEvBlobStorage::EvControllerScrubQueryStartQuantum: + case TEvBlobStorage::EvControllerScrubQuantumFinished: + case TEvBlobStorage::EvControllerScrubReportQuantumInProgress: + case TEvBlobStorage::EvControllerUpdateNodeDrives: + case TEvBlobStorage::EvControllerNodeReport: { + if (const auto pipeIt = PipeServerToNode.find(ev.Recipient); pipeIt == PipeServerToNode.end()) { + return makeError("incorrect pipe server"); + } else if (const auto& nodeId = pipeIt->second; !nodeId) { + return makeError("no RegisterNode event received"); + } else if (*nodeId != ev.Sender.NodeId()) { + return makeError("NodeId mismatch"); + } else if (TNodeInfo *node = FindNode(*nodeId); !node) { + return makeError("no TNodeInfo record for node"); + } else if (node->InterconnectSessionId != ev.InterconnectSession) { + return makeError("InterconnectSession mismatch"); + } else if (node->ConnectedServerId != ev.Recipient) { + return makeError("pipe server mismatch"); + } + break; + } + } + + return true; + } + void ProcessControllerEvent(TAutoPtr ev) { const ui32 type = ev->GetTypeRewrite(); THPTimer timer; + if (!ValidateIncomingNodeWardenEvent(*ev)) { + return; + } + switch (type) { hFunc(TEvBlobStorage::TEvControllerRegisterNode, Handle); hFunc(TEvBlobStorage::TEvControllerGetGroup, Handle); @@ -2286,10 +2343,12 @@ class TBlobStorageController : public TActor, public TTa void Handle(TEvTabletPipe::TEvServerConnected::TPtr& ev); void Handle(TEvTabletPipe::TEvServerDisconnected::TPtr& ev); - bool OnRegisterNode(const TActorId& serverId, TNodeId nodeId); - void OnWardenConnected(TNodeId nodeId); - void OnWardenDisconnected(TNodeId nodeId); + bool OnRegisterNode(const TActorId& serverId, TNodeId nodeId, TActorId interconnectSessionId); + void OnWardenConnected(TNodeId nodeId, TActorId serverId, TActorId interconnectSessionId); + void OnWardenDisconnected(TNodeId nodeId, TActorId serverId); void EraseKnownDrivesOnDisconnected(TNodeInfo *nodeInfo); + void SendToWarden(TNodeId nodeId, std::unique_ptr ev, ui64 cookie); + void SendInReply(const IEventHandle& query, std::unique_ptr ev); using TVSlotFinder = std::function&)>; diff --git a/ydb/core/mind/bscontroller/node_report.cpp b/ydb/core/mind/bscontroller/node_report.cpp index 6cb9cfbbceb2..5c512940eca9 100644 --- a/ydb/core/mind/bscontroller/node_report.cpp +++ b/ydb/core/mind/bscontroller/node_report.cpp @@ -22,6 +22,10 @@ class TBlobStorageController::TTxNodeReport STLOG(PRI_DEBUG, BS_CONTROLLER, BSCTXNR01, "TTxNodeReport execute"); + if (!Self->ValidateIncomingNodeWardenEvent(*Event)) { + return true; + } + State.emplace(*Self, Self->HostRecords, TActivationContext::Now()); State->CheckConsistency(); diff --git a/ydb/core/mind/bscontroller/propose_group_key.cpp b/ydb/core/mind/bscontroller/propose_group_key.cpp index 9f346b4c0c0a..ed8b8b5d65dd 100644 --- a/ydb/core/mind/bscontroller/propose_group_key.cpp +++ b/ydb/core/mind/bscontroller/propose_group_key.cpp @@ -5,7 +5,7 @@ namespace NBsController { class TBlobStorageController::TTxProposeGroupKey : public TTransactionBase { protected: - NKikimrBlobStorage::TEvControllerProposeGroupKey Proto; + TEvBlobStorage::TEvControllerProposeGroupKey::TPtr Event; NKikimrProto::EReplyStatus Status = NKikimrProto::OK; ui32 NodeId = 0; ui32 GroupId = 0; @@ -15,18 +15,20 @@ class TBlobStorageController::TTxProposeGroupKey : public TTransactionBaseGet()->Record; + NodeId = proto.GetNodeId(); + GroupId = proto.GetGroupId(); + LifeCyclePhase = proto.GetLifeCyclePhase(); + MainKeyId = proto.GetMainKeyId(); + EncryptedGroupKey = proto.GetEncryptedGroupKey(); + MainKeyVersion = proto.GetMainKeyVersion(); + GroupKeyNonce = proto.GetGroupKeyNonce(); } TTxType GetTxType() const override { return NBlobStorageController::TXTYPE_PROPOSE_GROUP_KEY; } @@ -78,6 +80,10 @@ class TBlobStorageController::TTxProposeGroupKey : public TTransactionBaseValidateIncomingNodeWardenEvent(*Event)) { + Status = NKikimrProto::ERROR; + return true; + } Status = NKikimrProto::OK; ReadStep(); if (Status == NKikimrProto::OK) { @@ -99,7 +105,7 @@ class TBlobStorageController::TTxProposeGroupKey : public TTransactionBaseGet()->Record)); } if (!IsAnotherTxInProgress) { // Get groupinfo for the group and send it to all whom it may concern. @@ -113,7 +119,7 @@ void TBlobStorageController::Handle(TEvBlobStorage::TEvControllerProposeGroupKey STLOG(PRI_DEBUG, BS_CONTROLLER, BSCTXPGK11, "Handle TEvControllerProposeGroupKey", (Request, proto)); Y_ABORT_UNLESS(AppData()); NodesAwaitingKeysForGroup[proto.GetGroupId()].insert(proto.GetNodeId()); - Execute(new TTxProposeGroupKey(proto, this)); + Execute(new TTxProposeGroupKey(ev, this)); } } // NBlobStorageController diff --git a/ydb/core/mind/bscontroller/register_node.cpp b/ydb/core/mind/bscontroller/register_node.cpp index 8dabdab993ec..191ca5b975b2 100644 --- a/ydb/core/mind/bscontroller/register_node.cpp +++ b/ydb/core/mind/bscontroller/register_node.cpp @@ -10,7 +10,7 @@ class TBlobStorageController::TTxUpdateNodeDrives { NKikimrBlobStorage::TEvControllerUpdateNodeDrives Record; std::optional State; - std::unique_ptr Response; + std::unique_ptr Result; void UpdateDevicesInfo(TConfigState& state, TEvBlobStorage::TEvControllerNodeServiceSetUpdate* result) { auto nodeId = Record.GetNodeId(); @@ -163,14 +163,14 @@ class TBlobStorageController::TTxUpdateNodeDrives bool Execute(TTransactionContext& txc, const TActorContext&) override { const TNodeId nodeId = Record.GetNodeId(); - auto result = std::make_unique(NKikimrProto::OK, nodeId); + Result = std::make_unique(NKikimrProto::OK, nodeId); State.emplace(*Self, Self->HostRecords, TActivationContext::Now()); State->CheckConsistency(); auto updateIsSuccessful = true; try { - UpdateDevicesInfo(*State, result.get()); + UpdateDevicesInfo(*State, Result.get()); State->CheckConsistency(); } catch (const TExError& e) { updateIsSuccessful = false; @@ -180,16 +180,16 @@ class TBlobStorageController::TTxUpdateNodeDrives "Error during UpdateDevicesInfo after receiving TEvControllerRegisterNode", (TExError, e.what())); } - result->Record.SetInstanceId(Self->InstanceId); - result->Record.SetComprehensive(false); - result->Record.SetAvailDomain(AppData()->DomainsInfo->GetDomainUidByTabletId(Self->TabletID())); - Response = std::make_unique(MakeBlobStorageNodeWardenID(nodeId), Self->SelfId(), result.release(), 0, 0); + Result->Record.SetInstanceId(Self->InstanceId); + Result->Record.SetComprehensive(false); + Result->Record.SetAvailDomain(AppData()->DomainsInfo->GetDomainUidByTabletId(Self->TabletID())); TString error; if (!updateIsSuccessful || (State->Changed() && !Self->CommitConfigUpdates(*State, false, false, false, txc, &error))) { State->Rollback(); State.reset(); } + return true; } @@ -199,8 +199,8 @@ class TBlobStorageController::TTxUpdateNodeDrives State->ApplyConfigUpdates(); State.reset(); } - if (Response) { - TActivationContext::Send(Response.release()); + if (Result) { + Self->SendToWarden(Record.GetNodeId(), std::move(Result), 0); } } }; @@ -209,10 +209,9 @@ class TBlobStorageController::TTxRegisterNode : public TTransactionBase { TEvBlobStorage::TEvControllerRegisterNode::TPtr Request; - std::unique_ptr Response; + std::unique_ptr Response; NKikimrBlobStorage::TEvControllerUpdateNodeDrives UpdateNodeDrivesRecord; - public: TTxRegisterNode(TEvBlobStorage::TEvControllerRegisterNode::TPtr& ev, TBlobStorageController *controller) : TTransactionBase(controller) @@ -225,18 +224,26 @@ class TBlobStorageController::TTxRegisterNode Self->TabletCounters->Cumulative()[NBlobStorageController::COUNTER_REGISTER_NODE_COUNT].Increment(1); TRequestCounter counter(Self->TabletCounters, NBlobStorageController::COUNTER_REGISTER_NODE_USEC); - auto request = std::move(Request); - const auto& record = request->Get()->Record; + const auto& record = Request->Get()->Record; STLOG(PRI_DEBUG, BS_CONTROLLER, BSCTXRN01, "Handle TEvControllerRegisterNode", (Request, record)); + if (!Self->ValidateIncomingNodeWardenEvent(*Request)) { + return true; + } + const TNodeId nodeId = record.GetNodeID(); + if (nodeId != Request->Sender.NodeId()) { + STLOG(PRI_ERROR, BS_CONTROLLER, BSCTXRN07, "NodeId field mismatch", (Request, record), (Sender, Request->Sender)); + return true; + } + UpdateNodeDrivesRecord.SetNodeId(nodeId); for (const auto& data : record.GetDrivesData()) { UpdateNodeDrivesRecord.AddDrivesData()->CopyFrom(data); } - if (!Self->OnRegisterNode(request->Recipient, nodeId)) { + if (!Self->OnRegisterNode(Request->Recipient, nodeId, Request->InterconnectSession)) { return true; } Self->ProcessVDiskStatus(record.GetVDiskStatus()); @@ -253,13 +260,13 @@ class TBlobStorageController::TTxRegisterNode } } - auto res = std::make_unique(NKikimrProto::OK, nodeId); + Response = std::make_unique(NKikimrProto::OK, nodeId); TSet groupIDsToRead; const TPDiskId minPDiskId(TPDiskId::MinForNode(nodeId)); const TVSlotId vslotId = TVSlotId::MinForPDisk(minPDiskId); for (auto it = Self->VSlots.lower_bound(vslotId); it != Self->VSlots.end() && it->first.NodeId == nodeId; ++it) { - Self->ReadVSlot(*it->second, res.get()); + Self->ReadVSlot(*it->second, Response.get()); if (!it->second->IsBeingDeleted()) { groupIDsToRead.insert(it->second->GroupId); } @@ -298,19 +305,18 @@ class TBlobStorageController::TTxRegisterNode } } - Self->ReadGroups(groupIDsToRead, false, res.get(), nodeId); + Self->ReadGroups(groupIDsToRead, false, Response.get(), nodeId); Y_ABORT_UNLESS(groupIDsToRead.empty()); - Self->ReadGroups(groupsToDiscard, true, res.get(), nodeId); + Self->ReadGroups(groupsToDiscard, true, Response.get(), nodeId); for (auto it = Self->PDisks.lower_bound(minPDiskId); it != Self->PDisks.end() && it->first.NodeId == nodeId; ++it) { - Self->ReadPDisk(it->first, *it->second, res.get(), NKikimrBlobStorage::INITIAL); + Self->ReadPDisk(it->first, *it->second, Response.get(), NKikimrBlobStorage::INITIAL); } - res->Record.SetInstanceId(Self->InstanceId); - res->Record.SetComprehensive(true); - res->Record.SetAvailDomain(AppData()->DomainsInfo->GetDomainUidByTabletId(Self->TabletID())); - Response = std::make_unique(request->Sender, Self->SelfId(), res.release(), 0, request->Cookie); + Response->Record.SetInstanceId(Self->InstanceId); + Response->Record.SetComprehensive(true); + Response->Record.SetAvailDomain(AppData()->DomainsInfo->GetDomainUidByTabletId(Self->TabletID())); NIceDb::TNiceDb db(txc.DB); auto& node = Self->GetNode(nodeId); @@ -325,8 +331,10 @@ class TBlobStorageController::TTxRegisterNode } void Complete(const TActorContext&) override { - TActivationContext::Send(Response.release()); - Self->Execute(new TTxUpdateNodeDrives(std::move(UpdateNodeDrivesRecord), Self)); + if (Response) { + Self->SendInReply(*Request, std::move(Response)); + Self->Execute(new TTxUpdateNodeDrives(std::move(UpdateNodeDrivesRecord), Self)); + } } }; @@ -465,7 +473,7 @@ void TBlobStorageController::Handle(TEvTabletPipe::TEvServerConnected::TPtr& ev) void TBlobStorageController::Handle(TEvTabletPipe::TEvServerDisconnected::TPtr& ev) { if (auto it = PipeServerToNode.find(ev->Get()->ServerId); it != PipeServerToNode.end()) { if (auto&& nodeId = it->second) { - OnWardenDisconnected(*nodeId); + OnWardenDisconnected(*nodeId, it->first); } PipeServerToNode.erase(it); } else { @@ -473,23 +481,33 @@ void TBlobStorageController::Handle(TEvTabletPipe::TEvServerDisconnected::TPtr& } } -bool TBlobStorageController::OnRegisterNode(const TActorId& serverId, TNodeId nodeId) { +bool TBlobStorageController::OnRegisterNode(const TActorId& serverId, TNodeId nodeId, TActorId interconnectSessionId) { if (auto it = PipeServerToNode.find(serverId); it != PipeServerToNode.end()) { - if (!it->second) { - it->second = nodeId; - OnWardenConnected(nodeId); - } else { - Y_DEBUG_ABORT_UNLESS(*it->second == nodeId); - } + Y_ABORT_UNLESS(!it->second); + it->second = nodeId; + OnWardenConnected(nodeId, serverId, interconnectSessionId); return true; } else { return false; } } -void TBlobStorageController::OnWardenConnected(TNodeId nodeId) { +void TBlobStorageController::OnWardenConnected(TNodeId nodeId, TActorId serverId, TActorId interconnectSessionId) { TNodeInfo& node = GetNode(nodeId); - ++node.ConnectedCount; + if (node.ConnectedServerId) { // if this is a new connection instead of obsolete one, do reset some logic + for (const TGroupId groupId : std::exchange(node.WaitingForGroups, {})) { + if (TGroupInfo *group = FindGroup(groupId)) { + group->WaitingNodes.erase(nodeId); + } + } + for (TGroupId groupId : std::exchange(node.GroupsRequested, {})) { + GroupToNode.erase(std::make_tuple(groupId, nodeId)); + } + ScrubState.OnNodeDisconnected(nodeId); + EraseKnownDrivesOnDisconnected(&node); + } + node.ConnectedServerId = serverId; + node.InterconnectSessionId = interconnectSessionId; for (auto it = PDisks.lower_bound(TPDiskId::MinForNode(nodeId)); it != PDisks.end() && it->first.NodeId == nodeId; ++it) { it->second->UpdateOperational(true); @@ -499,11 +517,13 @@ void TBlobStorageController::OnWardenConnected(TNodeId nodeId) { node.LastConnectTimestamp = TInstant::Now(); } -void TBlobStorageController::OnWardenDisconnected(TNodeId nodeId) { +void TBlobStorageController::OnWardenDisconnected(TNodeId nodeId, TActorId serverId) { TNodeInfo& node = GetNode(nodeId); - if (--node.ConnectedCount) { - return; // there are still some connections from this NW + if (node.ConnectedServerId != serverId) { + return; // a race } + node.ConnectedServerId = {}; + node.InterconnectSessionId = {}; for (const TGroupId groupId : std::exchange(node.WaitingForGroups, {})) { if (TGroupInfo *group = FindGroup(groupId)) { @@ -554,4 +574,25 @@ void TBlobStorageController::EraseKnownDrivesOnDisconnected(TNodeInfo *nodeInfo) nodeInfo->KnownDrives.clear(); } +void TBlobStorageController::SendToWarden(TNodeId nodeId, std::unique_ptr ev, ui64 cookie) { + Y_ABORT_UNLESS(nodeId); + if (auto *node = FindNode(nodeId); node && node->ConnectedServerId) { + auto h = std::make_unique(MakeBlobStorageNodeWardenID(nodeId), SelfId(), ev.release(), 0, cookie); + if (node->InterconnectSessionId) { + h->Rewrite(TEvInterconnect::EvForward, node->InterconnectSessionId); + } + TActivationContext::Send(h.release()); + } else { + STLOG(PRI_WARN, BS_CONTROLLER, BSC17, "SendToWarden dropped event", (NodeId, nodeId), (Type, ev->Type())); + } +} + +void TBlobStorageController::SendInReply(const IEventHandle& query, std::unique_ptr ev) { + auto h = std::make_unique(query.Sender, SelfId(), ev.release(), 0, query.Cookie); + if (query.InterconnectSession) { + h->Rewrite(TEvInterconnect::EvForward, query.InterconnectSession); + } + TActivationContext::Send(h.release()); +} + } // NKikimr::NBsController diff --git a/ydb/core/mind/bscontroller/ut_bscontroller/main.cpp b/ydb/core/mind/bscontroller/ut_bscontroller/main.cpp index 54618a14d8ef..317aa32b873b 100644 --- a/ydb/core/mind/bscontroller/ut_bscontroller/main.cpp +++ b/ydb/core/mind/bscontroller/ut_bscontroller/main.cpp @@ -102,10 +102,18 @@ struct TEnvironmentSetup { void RegisterNode() { for (ui32 i = 1; i <= NodeCount; ++i) { - const TActorId self = Runtime->AllocateEdgeActor(); - auto ev = MakeHolder(i, TVector{}, TVector{}, TVector{}); - Runtime->SendToPipe(TabletId, self, ev.Release(), NodeId, GetPipeConfigWithRetries()); - auto response = Runtime->GrabEdgeEventRethrow(self); + ui32 nodeIndex; + for (nodeIndex = 0; nodeIndex < Runtime->GetNodeCount(); ++nodeIndex) { + if (Runtime->GetNodeId(nodeIndex) == i) { + break; + } + } + if (nodeIndex != Runtime->GetNodeCount()) { + const TActorId self = Runtime->AllocateEdgeActor(nodeIndex); + auto ev = MakeHolder(i, TVector{}, TVector{}, TVector{}); + Runtime->SendToPipe(TabletId, self, ev.Release(), nodeIndex, GetPipeConfigWithRetries()); + auto response = Runtime->GrabEdgeEventRethrow(self); + } } } From 89bfbfd7954d7f43f5b06388b45a69f0c01d304c Mon Sep 17 00:00:00 2001 From: Nikolay Shestakov Date: Tue, 9 Apr 2024 22:14:32 +0500 Subject: [PATCH 011/110] fix partition counter value (#3587) --- ydb/core/persqueue/partition.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ydb/core/persqueue/partition.cpp b/ydb/core/persqueue/partition.cpp index d8f90cb3de79..c841fbf6bac6 100644 --- a/ydb/core/persqueue/partition.cpp +++ b/ydb/core/persqueue/partition.cpp @@ -87,7 +87,7 @@ TString TPartition::LogPrefix() const { bool TPartition::CanWrite() const { if (PartitionConfig == nullptr) { - // Old format without AllPartitions configuration field. + // Old format without AllPartitions configuration field. // It is not split/merge partition. return true; } @@ -273,7 +273,7 @@ ui64 TPartition::ImportantClientsMinOffset() const { minOffset = Min(minOffset, curOffset); } - return minOffset; + return minOffset; } void TPartition::HandleWakeup(const TActorContext& ctx) { @@ -552,7 +552,7 @@ void TPartition::InitComplete(const TActorContext& ctx) { PartitionCountersLabeled->GetCounters()[METRIC_INIT_TIME] = InitDuration.MilliSeconds(); PartitionCountersLabeled->GetCounters()[METRIC_LIFE_TIME] = CreationTime.MilliSeconds(); PartitionCountersLabeled->GetCounters()[METRIC_PARTITIONS] = 1; - PartitionCountersLabeled->GetCounters()[METRIC_PARTITIONS_TOTAL] = Config.PartitionIdsSize(); + PartitionCountersLabeled->GetCounters()[METRIC_PARTITIONS_TOTAL] = std::max(Config.PartitionIdsSize(), Config.PartitionsSize()); ctx.Send(Tablet, new TEvPQ::TEvPartitionLabeledCounters(Partition, *PartitionCountersLabeled)); } UpdateUserInfoEndOffset(ctx.Now()); @@ -969,7 +969,7 @@ void TPartition::Handle(TEvPQ::TEvBlobResponse::TPtr& ev, const TActorContext& c auto it = ReadInfo.find(cookie); Y_ABORT_UNLESS(it != ReadInfo.end()); - + TReadInfo info = std::move(it->second); ReadInfo.erase(it); @@ -980,7 +980,7 @@ void TPartition::Handle(TEvPQ::TEvBlobResponse::TPtr& ev, const TActorContext& c info.Destination, GetSizeLag(info.Offset), Tablet, Config.GetMeteringMode() )); const auto& resp = dynamic_cast(answer.Event.Get())->Response; - + if (HasError(*ev->Get())) { if (info.IsSubscription) { TabletCounters.Cumulative()[COUNTER_PQ_READ_SUBSCRIPTION_ERROR].Increment(1); From 0585aac220a3e56fddfe743e345b21231aaa98c2 Mon Sep 17 00:00:00 2001 From: Sergey Veselov Date: Wed, 10 Apr 2024 14:50:58 +0300 Subject: [PATCH 012/110] Fix ThrottlingException raising in YMQ when doing GetQueueUrl with drained queue list budget in 24-1 (#3606) --- ydb/core/ymq/actor/action.h | 21 +++++---- .../sqs/cloud/test_yandex_cloud_mode.py | 47 +++++++++++++++++++ 2 files changed, 58 insertions(+), 10 deletions(-) diff --git a/ydb/core/ymq/actor/action.h b/ydb/core/ymq/actor/action.h index fcc52846eada..8ea1cb814c64 100644 --- a/ydb/core/ymq/actor/action.h +++ b/ydb/core/ymq/actor/action.h @@ -630,22 +630,23 @@ class TActionActor } } - if (ev->Get()->Throttled) { - MakeError(MutableErrorDesc(), NErrors::THROTTLING_EXCEPTION, "Too many requests for nonexistent queue."); - SendReplyAndDie(); - return; - } - if (ev->Get()->Fail) { MakeError(MutableErrorDesc(), NErrors::INTERNAL_FAILURE, "Failed to get configuration."); SendReplyAndDie(); return; } - if (TDerived::NeedExistingQueue() && !ev->Get()->QueueExists) { - MakeError(MutableErrorDesc(), NErrors::NON_EXISTENT_QUEUE); - SendReplyAndDie(); - return; + if (TDerived::NeedExistingQueue()) { + if (ev->Get()->Throttled) { + MakeError(MutableErrorDesc(), NErrors::THROTTLING_EXCEPTION, "Too many requests for nonexistent queue."); + SendReplyAndDie(); + return; + } + if (!ev->Get()->QueueExists) { + MakeError(MutableErrorDesc(), NErrors::NON_EXISTENT_QUEUE); + SendReplyAndDie(); + return; + } } bool isACLProtectedAccount = Cfg().GetForceAccessControl(); diff --git a/ydb/tests/functional/sqs/cloud/test_yandex_cloud_mode.py b/ydb/tests/functional/sqs/cloud/test_yandex_cloud_mode.py index c8fa26b7697d..415fcc54969d 100644 --- a/ydb/tests/functional/sqs/cloud/test_yandex_cloud_mode.py +++ b/ydb/tests/functional/sqs/cloud/test_yandex_cloud_mode.py @@ -838,3 +838,50 @@ def test_cloud_double_create_queue(self, is_fifo, tables_format): time.sleep(1) queue_url2 = self._sqs_api.create_queue(self.queue_name, is_fifo=is_fifo) assert queue_url1 == queue_url2, f'{queue_url1} vs {queue_url2}' + + @pytest.mark.parametrize(**TABLES_FORMAT_PARAMS) + @pytest.mark.parametrize(**IS_FIFO_PARAMS) + def test_not_throttling_with_custom_queue_name(self, is_fifo, tables_format): + self._init_with_params(is_fifo, tables_format) + + self._sqs_api = self._create_api_for_user( + user_name='ignored', + raise_on_error=True, + force_private=True, + iam_token=self.iam_token, + folder_id=self.folder_id, + ) + + custom_queue_name = 'MyCustomQueue' + queue_url = self._sqs_api.create_queue( + queue_name=self.queue_name, + private_api=True, + custom_name=custom_queue_name, + ) + + nonexistent_queue_url = queue_url.replace(self.queue_name, self.queue_name + '_nonex') + + def get_attributes_of_nonexistent_queue(): + self._sqs_api.get_queue_attributes(nonexistent_queue_url) + + # Draining budget + for _ in range(16): + try: + get_attributes_of_nonexistent_queue() + except Exception: + pass + + # Check that there is no more budget + assert_that( + get_attributes_of_nonexistent_queue, + raises( + RuntimeError, + pattern=".*ThrottlingException.*" + ) + ) + + # Check that getting queue url with custom name still works + assert_that( + lambda: self._sqs_api.get_queue_url(custom_queue_name), + not_(raises(RuntimeError)) + ) From e2f14c41adb988c31368ba1d01498e2af3a7adb3 Mon Sep 17 00:00:00 2001 From: Alexander Rutkovsky Date: Thu, 11 Apr 2024 09:46:07 +0300 Subject: [PATCH 013/110] Fix static group status calculation logic (merge from main) (#3632) --- ydb/core/mind/bscontroller/register_node.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/ydb/core/mind/bscontroller/register_node.cpp b/ydb/core/mind/bscontroller/register_node.cpp index 191ca5b975b2..1b9bf3a2a73f 100644 --- a/ydb/core/mind/bscontroller/register_node.cpp +++ b/ydb/core/mind/bscontroller/register_node.cpp @@ -554,6 +554,7 @@ void TBlobStorageController::OnWardenDisconnected(TNodeId nodeId, TActorId serve } for (auto it = StaticVSlots.lower_bound(startingId); it != StaticVSlots.end() && it->first.NodeId == nodeId; ++it) { it->second.VDiskStatus = NKikimrBlobStorage::EVDiskStatus::ERROR; + it->second.ReadySince = TMonotonic::Max(); } if (sh->VDiskStatusUpdate) { Send(SelfHealId, sh.Release()); From 0ef672974c1eeed53c9f2ce8666a3e1728661fa3 Mon Sep 17 00:00:00 2001 From: alexnick88 Date: Fri, 12 Apr 2024 10:48:15 +0300 Subject: [PATCH 014/110] do not check explicit sources every cleanup (#3674) --- ydb/core/persqueue/sourceid.cpp | 20 +++++++++++--------- ydb/core/persqueue/sourceid.h | 2 +- ydb/core/persqueue/ut/sourceid_ut.cpp | 20 ++++++++++++++++++++ 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/ydb/core/persqueue/sourceid.cpp b/ydb/core/persqueue/sourceid.cpp index e2176d8c3376..07a0d7895478 100644 --- a/ydb/core/persqueue/sourceid.cpp +++ b/ydb/core/persqueue/sourceid.cpp @@ -253,7 +253,7 @@ void TSourceIdStorage::DeregisterSourceId(const TString& sourceId) { ExplicitSourceIds.erase(sourceId); } - SourceIdsByOffset.erase(std::make_pair(it->second.Offset, sourceId)); + SourceIdsByOffset[it->second.Explicit].erase(std::make_pair(it->second.Offset, sourceId)); InMemorySourceIds.erase(it); auto jt = SourceIdOwners.find(sourceId); @@ -277,7 +277,7 @@ bool TSourceIdStorage::DropOldSourceIds(TEvKeyValue::TEvRequest* request, TInsta const auto ttl = TDuration::Seconds(config.GetSourceIdLifetimeSeconds()); ui32 size = request->Record.ByteSize(); - for (const auto& [offset, sourceId] : SourceIdsByOffset) { + for (const auto& [offset, sourceId] : SourceIdsByOffset[0]) { if (offset >= startOffset && toDelOffsets.size() >= maxDeleteSourceIds) { break; } @@ -323,7 +323,7 @@ bool TSourceIdStorage::DropOldSourceIds(TEvKeyValue::TEvRequest* request, TInsta size_t res = InMemorySourceIds.erase(t.second); Y_ABORT_UNLESS(res == 1); // delete sourceID from offsets - res = SourceIdsByOffset.erase(t); + res = SourceIdsByOffset[0].erase(t); Y_ABORT_UNLESS(res == 1); // save owners to drop and delete records from map auto it = SourceIdOwners.find(t.second); @@ -372,14 +372,14 @@ void TSourceIdStorage::RegisterSourceIdInfo(const TString& sourceId, TSourceIdIn auto it = InMemorySourceIds.find(sourceId); if (it != InMemorySourceIds.end()) { if (!load || it->second.Offset < sourceIdInfo.Offset) { - const auto res = SourceIdsByOffset.erase(std::make_pair(it->second.Offset, sourceId)); + const auto res = SourceIdsByOffset[sourceIdInfo.Explicit].erase(std::make_pair(it->second.Offset, sourceId)); Y_ABORT_UNLESS(res == 1); } else { return; } } - const bool res = SourceIdsByOffset.emplace(sourceIdInfo.Offset, sourceId).second; + const bool res = SourceIdsByOffset[sourceIdInfo.Explicit].emplace(sourceIdInfo.Offset, sourceId).second; Y_ABORT_UNLESS(res); if (sourceIdInfo.Explicit) { @@ -421,10 +421,12 @@ void TSourceIdStorage::MarkOwnersForDeletedSourceId(THashMapsecond); - Y_ABORT_UNLESS(it != InMemorySourceIds.end()); - ds = Min(ds, it->second.WriteTimestamp); + for (ui32 i = 0 ; i < 2; ++i) { + if (!SourceIdsByOffset[i].empty()) { + auto it = InMemorySourceIds.find(SourceIdsByOffset[i].begin()->second); + Y_ABORT_UNLESS(it != InMemorySourceIds.end()); + ds = Min(ds, it->second.WriteTimestamp); + } } return ds; diff --git a/ydb/core/persqueue/sourceid.h b/ydb/core/persqueue/sourceid.h index 897014363f29..19d9b908f6db 100644 --- a/ydb/core/persqueue/sourceid.h +++ b/ydb/core/persqueue/sourceid.h @@ -108,7 +108,7 @@ class TSourceIdStorage: private THeartbeatProcessor { TSourceIdMap InMemorySourceIds; THashMap SourceIdOwners; TVector OwnersToDrop; - TSet> SourceIdsByOffset; + TSet> SourceIdsByOffset[2]; // used to track heartbeats THashSet ExplicitSourceIds; diff --git a/ydb/core/persqueue/ut/sourceid_ut.cpp b/ydb/core/persqueue/ut/sourceid_ut.cpp index 43164c888c50..31853ccc9f4c 100644 --- a/ydb/core/persqueue/ut/sourceid_ut.cpp +++ b/ydb/core/persqueue/ut/sourceid_ut.cpp @@ -460,6 +460,26 @@ Y_UNIT_TEST_SUITE(TSourceIdTests) { } } + Y_UNIT_TEST(ExpensiveCleanup) { + TSourceIdStorage storage; + ui64 offset = 0; + + // initial info w/o heartbeats + for (ui32 i = 1; i <= 100000; ++i) { + storage.RegisterSourceId(TestSourceId(i), MakeExplicitSourceIdInfo(++offset)); + } + + NKikimrPQ::TPartitionConfig config; + config.SetSourceIdLifetimeSeconds(TDuration::Hours(1).Seconds()); + + auto request = MakeHolder(); + for (ui32 i = 0; i < 1000; ++i) { + Cerr << "Iteration " << i << "\n"; + const auto dropped = storage.DropOldSourceIds(request.Get(), TInstant::Hours(2), 1'000'000, TPartitionId(TestPartition), config); + UNIT_ASSERT_EQUAL(dropped, false); + } + + } } // TSourceIdTests } // namespace NKikimr::NPQ From 68050f512584de676e8604b7996798d7ceedda07 Mon Sep 17 00:00:00 2001 From: ildar-khisambeev Date: Mon, 15 Apr 2024 13:05:11 +0300 Subject: [PATCH 015/110] 24-1 cherry-pick remove redundant checks (#1417) (#3700) --- .../persqueue/topic_parser/topic_parser.cpp | 30 +++++-------------- .../ut/topic_names_converter_ut.cpp | 5 ++-- .../persqueue_v1/actors/schema_actors.cpp | 30 ++++++++----------- .../persqueue_v1/persqueue_compat_ut.cpp | 6 ++-- 4 files changed, 28 insertions(+), 43 deletions(-) diff --git a/ydb/library/persqueue/topic_parser/topic_parser.cpp b/ydb/library/persqueue/topic_parser/topic_parser.cpp index 680ea2b871ae..dec46a7d8034 100644 --- a/ydb/library/persqueue/topic_parser/topic_parser.cpp +++ b/ydb/library/persqueue/topic_parser/topic_parser.cpp @@ -320,7 +320,7 @@ bool TDiscoveryConverter::BuildFromFederationPath(const TString& rootPrefix) { auto res = topic.TrySplit("/", fst, snd); CHECK_SET_VALID(res, TStringBuilder() << "Could not split federation path: " << OriginalTopic, return false); Account_ = fst; - + if (!ParseModernPath(snd)) return false; if (!BuildFromShortModernName()) { @@ -341,7 +341,7 @@ bool TDiscoveryConverter::BuildFromFederationPath(const TString& rootPrefix) { bool TDiscoveryConverter::TryParseModernMirroredPath(TStringBuf path) { if (!path.Contains("-mirrored-from-")) { - CHECK_SET_VALID(!path.Contains("mirrored-from"), "Federation topics cannot contain 'mirrored-from' in name unless this is a mirrored topic", return false); + CHECK_SET_VALID(!path.Contains("mirrored-from"), "Federation topics cannot contain 'mirrored-from' in name unless this is a mirrored topic", return false); return false; } TStringBuf fst, snd; @@ -447,7 +447,7 @@ bool TDiscoveryConverter::BuildFromLegacyName(const TString& rootPrefix, bool fo return false); } if (Dc.empty() && !hasDcInName) { - CHECK_SET_VALID(!FstClass, TStringBuilder() << "Internal error: FirstClass mode enabled, but trying to parse Legacy-style name: " + CHECK_SET_VALID(!FstClass, TStringBuilder() << "Internal error: FirstClass mode enabled, but trying to parse Legacy-style name: " << OriginalTopic, return false;); CHECK_SET_VALID(!LocalDc.empty(), "Cannot determine DC: should specify either in topic name, Dc option or LocalDc option", @@ -466,7 +466,7 @@ bool TDiscoveryConverter::BuildFromLegacyName(const TString& rootPrefix, bool fo Dc = fst; topic = snd; } else { - CHECK_SET_VALID(!Dc.empty(), TStringBuilder() << "Internal error: Could not determine DC (despite beleiving the name contins one) for topic " + CHECK_SET_VALID(!Dc.empty(), TStringBuilder() << "Internal error: Could not determine DC (despite beleiving the name contins one) for topic " << OriginalTopic, return false;); TStringBuilder builder; builder << "rt3." << Dc << "--" << topic; @@ -513,7 +513,7 @@ bool TDiscoveryConverter::BuildFromLegacyName(const TString& rootPrefix, bool fo topicName = topic; } modernName << topicName; - CHECK_SET_VALID(!Dc.empty(), TStringBuilder() << "Internal error: Could not determine DC for topic: " + CHECK_SET_VALID(!Dc.empty(), TStringBuilder() << "Internal error: Could not determine DC for topic: " << OriginalTopic, return false); bool isMirrored = (!LocalDc.empty() && Dc != LocalDc); @@ -522,7 +522,7 @@ bool TDiscoveryConverter::BuildFromLegacyName(const TString& rootPrefix, bool fo } else { fullModernName << topicName; } - CHECK_SET_VALID(!fullLegacyName.empty(), TStringBuilder() << "Could not form a full legacy name for topic: " + CHECK_SET_VALID(!fullLegacyName.empty(), TStringBuilder() << "Could not form a full legacy name for topic: " << OriginalTopic, return false); ShortLegacyName = shortLegacyName; @@ -669,21 +669,7 @@ TTopicConverterPtr TTopicNameConverter::ForFederation( if (!res->IsValid()) { return res; } - if (parsed) { - Y_ABORT_UNLESS(!res->Dc.empty()); - if (!localDc.empty() && localDc == res->Dc) { - res->Valid = false; - res->Reason = TStringBuilder() << "Topic in modern mirrored-like style: " << schemeName - << " cannot be created in the same cluster " << res->Dc; - return res; - } - } if (isLocal) { - if(parsed) { - res->Valid = false; - res->Reason = TStringBuilder() << "Topic in modern mirrored-like style: " << schemeName << ", created as local"; - return res; - } if (localDc.empty()) { res->Valid = false; res->Reason = "Local DC option is mandatory when creating local modern-style topic"; @@ -694,7 +680,8 @@ TTopicConverterPtr TTopicNameConverter::ForFederation( if (!ok) { return res; } - } else { + } + else { if (!parsed) { res->Valid = false; res->Reason = TStringBuilder() << "Topic in modern style with non-mirrored-name: " << schemeName @@ -943,4 +930,3 @@ TConverterFactoryPtr TTopicsListController::GetConverterFactory() const { }; } // namespace NPersQueue - diff --git a/ydb/library/persqueue/topic_parser/ut/topic_names_converter_ut.cpp b/ydb/library/persqueue/topic_parser/ut/topic_names_converter_ut.cpp index 55f28de809b4..a71bddd43aaf 100644 --- a/ydb/library/persqueue/topic_parser/ut/topic_names_converter_ut.cpp +++ b/ydb/library/persqueue/topic_parser/ut/topic_names_converter_ut.cpp @@ -175,7 +175,7 @@ Y_UNIT_TEST_SUITE(DiscoveryConverterTest) { ); UNIT_ASSERT_VALUES_EQUAL(converter->GetFullModernName(), "account/account"); UNIT_ASSERT_VALUES_EQUAL(converter->GetSecondaryPath("account"), "/account/account/account"); - + converter = converterFactory.MakeDiscoveryConverter( "account/", {}, "dc1", "account" ); @@ -431,10 +431,11 @@ Y_UNIT_TEST_SUITE(TopicNameConverterForCPTest) { ); UNIT_ASSERT(!converter->IsValid()); + // this is valid, corresponding check relaxed converter = TTopicNameConverter::ForFederation( "", "", "topic-mirrored-from-sas", "/LbCommunal/account", "/LbCommunal/account", true, "sas", "account" ); - UNIT_ASSERT(!converter->IsValid()); + UNIT_ASSERT(converter->IsValid()); converter = TTopicNameConverter::ForFederation( "", "", "topic-mirrored-from-", "/LbCommunal/account", "/LbCommunal/account", true, "sas", "account" diff --git a/ydb/services/persqueue_v1/actors/schema_actors.cpp b/ydb/services/persqueue_v1/actors/schema_actors.cpp index eba8c06f68d2..636f7b4e2041 100644 --- a/ydb/services/persqueue_v1/actors/schema_actors.cpp +++ b/ydb/services/persqueue_v1/actors/schema_actors.cpp @@ -396,10 +396,6 @@ void TCreateTopicActor::FillProposeRequest(TEvTxUserProxy::TEvProposeTransaction << "' instead of " << LocalCluster, Ydb::PersQueue::ErrorCode::BAD_REQUEST)); return RespondWithCode(Ydb::StatusIds::BAD_REQUEST); } - if (Count(Clusters, config.GetDC()) == 0 && !Clusters.empty()) { - Request_->RaiseIssue(FillIssue(TStringBuilder() << "Unknown cluster '" << config.GetDC() << "'", Ydb::PersQueue::ErrorCode::BAD_REQUEST)); - return RespondWithCode(Ydb::StatusIds::BAD_REQUEST); - } } @@ -596,7 +592,7 @@ void TDescribeTopicActorImpl::Handle(TEvPQProxy::TEvRequestTablet::TPtr& ev, con Y_ABORT_UNLESS(RequestsInfly > 0); --RequestsInfly; } - + RequestTablet(tabletInfo, ctx); } @@ -635,7 +631,7 @@ void TDescribeTopicActorImpl::RequestBalancer(const TActorContext& ctx) { GotLocation = true; } - if (Settings.Mode == TDescribeTopicActorSettings::EMode::DescribeConsumer && Settings.RequireStats) { + if (Settings.Mode == TDescribeTopicActorSettings::EMode::DescribeConsumer && Settings.RequireStats) { if (!GotReadSessions) { RequestReadSessionsInfo(ctx); } @@ -671,7 +667,7 @@ void TDescribeTopicActorImpl::RequestPartitionsLocation(const TActorContext& ctx return RaiseError( TStringBuilder() << "No partition " << Settings.Partitions[0] << " in topic", Ydb::PersQueue::ErrorCode::BAD_REQUEST, Ydb::StatusIds::BAD_REQUEST, ctx - ); + ); } auto res = partIds.insert(p); if (res.second) { @@ -705,7 +701,7 @@ void TDescribeTopicActorImpl::Handle(NKikimr::TEvPersQueue::TEvStatusResponse::T auto& record = ev->Get()->Record; bool doRestart = (record.PartResultSize() == 0); - + for (auto& partResult : record.GetPartResult()) { if (partResult.GetStatus() == NKikimrPQ::TStatusResponse::STATUS_INITIALIZING || partResult.GetStatus() == NKikimrPQ::TStatusResponse::STATUS_UNKNOWN) { @@ -917,7 +913,7 @@ bool TDescribeTopicActor::ApplyResponse( } return true; } - + void TDescribeTopicActor::Reply(const TActorContext& ctx) { @@ -1030,7 +1026,7 @@ bool TDescribeConsumerActor::ApplyResponse( } return true; } - + bool FillConsumerProto(Ydb::Topic::Consumer *rr, const NKikimrPQ::TPQTabletConfig& config, ui32 i, const NActors::TActorContext& ctx, Ydb::StatusIds::StatusCode& status, TString& error) @@ -1272,11 +1268,11 @@ bool TDescribeTopicActorImpl::ProcessTablets( Tablets[pi.GetTabletId()].Partitions.push_back(pi.GetPartitionId()); Tablets[pi.GetTabletId()].TabletId = pi.GetTabletId(); } - + for (auto& pair : Tablets) { RequestTablet(pair.second, ctx); } - + if (RequestsInfly == 0) { Reply(ctx); return false; @@ -1332,7 +1328,7 @@ void TDescribePartitionActor::Bootstrap(const NActors::TActorContext& ctx) void TDescribePartitionActor::StateWork(TAutoPtr& ev) { switch (ev->GetTypeRewrite()) { - default: + default: if (!TDescribeTopicActorImpl::StateWork(ev, ActorContext())) { TBase::StateWork(ev); }; @@ -1359,12 +1355,12 @@ void TDescribePartitionActor::ApplyResponse(TTabletInfo&, NKikimr::TEvPersQueue: void TDescribePartitionActor::ApplyResponse(TTabletInfo& tabletInfo, NKikimr::TEvPersQueue::TEvStatusResponse::TPtr& ev, const TActorContext&) { auto* partResult = Result.mutable_partition(); - + const auto& record = ev->Get()->Record; for (auto partData : record.GetPartResult()) { if ((ui32)partData.GetPartition() != Settings.Partitions[0]) continue; - + Y_ABORT_UNLESS((ui32)(partData.GetPartition()) == Settings.Partitions[0]); partResult->set_partition_id(partData.GetPartition()); partResult->set_active(true); @@ -1411,7 +1407,7 @@ void TDescribePartitionActor::Reply(const TActorContext& ctx) { using namespace NIcNodeCache; -TPartitionsLocationActor::TPartitionsLocationActor(const TGetPartitionsLocationRequest& request, const TActorId& requester) +TPartitionsLocationActor::TPartitionsLocationActor(const TGetPartitionsLocationRequest& request, const TActorId& requester) : TBase(request, requester) , TDescribeTopicActorImpl(TDescribeTopicActorSettings::GetPartitionsLocation(request.PartitionIds)) { @@ -1429,7 +1425,7 @@ void TPartitionsLocationActor::Bootstrap(const NActors::TActorContext&) void TPartitionsLocationActor::StateWork(TAutoPtr& ev) { switch (ev->GetTypeRewrite()) { hFunc(TEvICNodesInfoCache::TEvGetAllNodesInfoResponse, Handle); - default: + default: if (!TDescribeTopicActorImpl::StateWork(ev, ActorContext())) { TBase::StateWork(ev); }; diff --git a/ydb/services/persqueue_v1/persqueue_compat_ut.cpp b/ydb/services/persqueue_v1/persqueue_compat_ut.cpp index 1cc7a80d50b7..82c431d69d6a 100644 --- a/ydb/services/persqueue_v1/persqueue_compat_ut.cpp +++ b/ydb/services/persqueue_v1/persqueue_compat_ut.cpp @@ -174,13 +174,15 @@ Y_UNIT_TEST_SUITE(TPQCompatTest) { // Local topic with client write disabled testServer.CreateTopic("/Root/LbCommunal/some-topic", "account", false, true); // Non-local topic with client write enabled - testServer.CreateTopic("/Root/LbCommunal/some-topic-mirrored-from-dc2", "account", true, true); testServer.CreateTopic("/Root/LbCommunal/.some-topic/mirrored-from-dc2", "account", true, true); + // this validation was relaxed + testServer.CreateTopic("/Root/LbCommunal/some-topic-mirrored-from-dc2", "account", true, false); // No account testServer.CreateTopic("/Root/LbCommunal/some-topic", "", true, true); // Mirrored-from local testServer.CreateTopic("/Root/LbCommunal/.some-topic/mirrored-from-dc1", "account", false, true); - testServer.CreateTopic("/Root/LbCommunal/some-topic-mirrored-from-dc1", "account", false, true); + // this validation was relaxed + testServer.CreateTopic("/Root/LbCommunal/some-topic-mirrored-from-dc1", "account", false, false); // Bad mirrored names testServer.CreateTopic("/Root/LbCommunal/.some-topic/some-topic", "account", false, true); // Mirrored-from non-existing From 3527639e4e63c5e51a9eca32e9adba960db90ec6 Mon Sep 17 00:00:00 2001 From: ildar-khisambeev Date: Mon, 15 Apr 2024 13:05:21 +0300 Subject: [PATCH 016/110] Cherry pick print sensitive (#3698) Co-authored-by: Nikolay Shestakov --- ydb/core/client/server/grpc_server.cpp | 24 ++------------ ydb/core/grpc_streaming/grpc_streaming.h | 27 ++------------- ydb/core/persqueue/partition_monitoring.cpp | 11 ++++++- ydb/core/persqueue/ya.make | 1 + ydb/core/protos/flat_tx_scheme.proto | 3 +- ydb/core/protos/pqconfig.proto | 8 +++-- .../tx/schemeshard/schemeshard__operation.cpp | 16 +++++++-- ydb/core/tx/schemeshard/ya.make | 1 + ydb/library/grpc/server/actors/ya.make | 1 + ydb/library/grpc/server/logger.h | 23 +++++++++++++ ydb/library/grpc/server/ya.make | 2 +- .../api/protos/draft/persqueue_common.proto | 7 ++-- ydb/public/api/protos/ydb_persqueue_v1.proto | 9 ++--- ydb/public/api/protos/ydb_topic.proto | 33 ++++++++++--------- 14 files changed, 88 insertions(+), 78 deletions(-) diff --git a/ydb/core/client/server/grpc_server.cpp b/ydb/core/client/server/grpc_server.cpp index 95079d6bc7dc..e510fdfbe3ee 100644 --- a/ydb/core/client/server/grpc_server.cpp +++ b/ydb/core/client/server/grpc_server.cpp @@ -11,8 +11,6 @@ #include -#include - #include #include #include @@ -266,15 +264,8 @@ class TSimpleRequest } void Finish(const TOut& resp, ui32 status) { - auto makeResponseString = [&] { - TString x; - google::protobuf::TextFormat::Printer printer; - printer.SetSingleLineMode(true); - printer.PrintToString(resp, &x); - return x; - }; LOG_DEBUG(ActorSystem, NKikimrServices::GRPC_SERVER, "[%p] issuing response Name# %s data# %s peer# %s", this, - Name, makeResponseString().data(), GetPeerName().c_str()); + Name, NYdbGrpc::FormatMessage(resp).data(), GetPeerName().c_str()); ResponseSize = resp.ByteSize(); ResponseStatus = status; StateFunc = &TSimpleRequest::FinishDone; @@ -300,19 +291,8 @@ class TSimpleRequest bool RequestDone(bool ok) { OnAfterCall(); - auto makeRequestString = [&] { - TString resp; - if (ok) { - google::protobuf::TextFormat::Printer printer; - printer.SetSingleLineMode(true); - printer.PrintToString(Request, &resp); - } else { - resp = ""; - } - return resp; - }; LOG_DEBUG(ActorSystem, NKikimrServices::GRPC_SERVER, "[%p] received request Name# %s ok# %s data# %s peer# %s current inflight# %li", this, - Name, ok ? "true" : "false", makeRequestString().data(), GetPeerName().c_str(), Server->GetCurrentInFlight()); + Name, ok ? "true" : "false", NYdbGrpc::FormatMessage(Request, ok).data(), GetPeerName().c_str(), Server->GetCurrentInFlight()); if (Context.c_call() == nullptr) { Y_ABORT_UNLESS(!ok); diff --git a/ydb/core/grpc_streaming/grpc_streaming.h b/ydb/core/grpc_streaming/grpc_streaming.h index 872ab75bda76..6beb16ce0ca5 100644 --- a/ydb/core/grpc_streaming/grpc_streaming.h +++ b/ydb/core/grpc_streaming/grpc_streaming.h @@ -11,7 +11,6 @@ #include #include -#include #include @@ -347,22 +346,10 @@ class TGRpcStreamingRequest final } void OnReadDone(NYdbGrpc::EQueueEventStatus status) { - auto dumpResultText = [&] { - TString text; - if (status == NYdbGrpc::EQueueEventStatus::OK) { - google::protobuf::TextFormat::Printer printer; - printer.SetSingleLineMode(true); - printer.PrintToString(ReadInProgress->Record, &text); - } else { - text = ""; - } - return text; - }; - LOG_DEBUG(ActorSystem, LoggerServiceId, "[%p] read finished Name# %s ok# %s data# %s peer# %s", this, Name, status == NYdbGrpc::EQueueEventStatus::OK ? "true" : "false", - dumpResultText().c_str(), + NYdbGrpc::FormatMessage(ReadInProgress->Record, status == NYdbGrpc::EQueueEventStatus::OK).c_str(), this->GetPeerName().c_str()); // Take current in-progress read first @@ -400,25 +387,17 @@ class TGRpcStreamingRequest final } bool Write(TOut&& message, const grpc::WriteOptions& options = { }, const grpc::Status* status = nullptr) { - auto dumpMessageText = [&] { - TString text; - google::protobuf::TextFormat::Printer printer; - printer.SetSingleLineMode(true); - printer.PrintToString(message, &text); - return text; - }; - if (status) { LOG_DEBUG(ActorSystem, LoggerServiceId, "[%p] facade write Name# %s data# %s peer# %s grpc status# (%d) message# %s", this, Name, - dumpMessageText().c_str(), + NYdbGrpc::FormatMessage(message).c_str(), this->GetPeerName().c_str(), static_cast(status->error_code()), status->error_message().c_str()); } else { LOG_DEBUG(ActorSystem, LoggerServiceId, "[%p] facade write Name# %s data# %s peer# %s", this, Name, - dumpMessageText().c_str(), + NYdbGrpc::FormatMessage(message).c_str(), this->GetPeerName().c_str()); } diff --git a/ydb/core/persqueue/partition_monitoring.cpp b/ydb/core/persqueue/partition_monitoring.cpp index 4343adcbb6a1..89c7f47a869c 100644 --- a/ydb/core/persqueue/partition_monitoring.cpp +++ b/ydb/core/persqueue/partition_monitoring.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -22,6 +23,14 @@ namespace NKikimr::NPQ { +TString PrintConfig(const NKikimrPQ::TPQTabletConfig& cfg) { + TSecurityTextFormatPrinter printer; + printer.SetSingleLineMode(true); + TString string; + printer.PrintToString(cfg, &string); + return string; +} + void HtmlOutput(IOutputStream& out, const TString& line, const std::deque>& keys) { HTML(out) { TABLE() { @@ -109,7 +118,7 @@ void TPartition::HandleMonitoring(TEvPQ::TEvMonRequest::TPtr& ev, const TActorCo out << "AvgWriteSize per " << avg.GetDuration().ToString() << " is " << avg.GetValue() << " bytes"; res.push_back(out.Str()); out.Clear(); } - out << Config.DebugString(); res.push_back(out.Str()); out.Clear(); + out << PrintConfig(Config); res.push_back(out.Str()); out.Clear(); HTML(out) { DIV_CLASS_ID("tab-pane fade", Sprintf("partition_%u", ui32(Partition))) { TABLE_SORTABLE_CLASS("table") { diff --git a/ydb/core/persqueue/ya.make b/ydb/core/persqueue/ya.make index 8000bbe68ae2..919301a5d3d0 100644 --- a/ydb/core/persqueue/ya.make +++ b/ydb/core/persqueue/ya.make @@ -59,6 +59,7 @@ PEERDIR( ydb/library/logger ydb/library/persqueue/counter_time_keeper ydb/library/persqueue/topic_parser + ydb/library/protobuf_printer ydb/public/lib/base ydb/public/sdk/cpp/client/ydb_persqueue_core ) diff --git a/ydb/core/protos/flat_tx_scheme.proto b/ydb/core/protos/flat_tx_scheme.proto index 694ee37abd00..e249ec1c80cf 100644 --- a/ydb/core/protos/flat_tx_scheme.proto +++ b/ydb/core/protos/flat_tx_scheme.proto @@ -7,6 +7,7 @@ import "ydb/core/protos/bind_channel_storage_pool.proto"; import "ydb/core/protos/flat_scheme_op.proto"; import "ydb/public/api/protos/ydb_cms.proto"; import "ydb/public/api/protos/ydb_issue_message.proto"; +import "ydb/public/api/protos/annotations/sensitive.proto"; package NKikimrScheme; option java_package = "ru.yandex.kikimr.proto"; @@ -53,7 +54,7 @@ message TEvModifySchemeTransaction { optional uint64 TabletId = 3; optional string Owner = 5; optional bool FailOnExist = 6; // depricated, TModifyScheme.FailOnExist is recomended - optional string UserToken = 7; // serialized NACLib::TUserToken + optional string UserToken = 7 [(Ydb.sensitive) = true]; // serialized NACLib::TUserToken optional string PeerName = 8; } diff --git a/ydb/core/protos/pqconfig.proto b/ydb/core/protos/pqconfig.proto index bb70645ab640..90f6a66969be 100644 --- a/ydb/core/protos/pqconfig.proto +++ b/ydb/core/protos/pqconfig.proto @@ -1,6 +1,8 @@ import "ydb/public/api/protos/draft/persqueue_error_codes.proto"; import "ydb/public/api/protos/draft/persqueue_common.proto"; +import "ydb/public/api/protos/annotations/sensitive.proto"; + import "ydb/core/protos/base.proto"; import "ydb/core/protos/msgbus_kv.proto"; import "ydb/core/protos/node_limits.proto"; @@ -208,11 +210,11 @@ message TMirrorPartitionConfig { message TCredentials { message IamCredentials { optional string Endpoint = 1; - optional string ServiceAccountKey = 2; + optional string ServiceAccountKey = 2 [(Ydb.sensitive) = true]; } oneof Credentials { - string OauthToken = 1; - string JwtParams = 2; + string OauthToken = 1 [(Ydb.sensitive) = true]; + string JwtParams = 2 [(Ydb.sensitive) = true]; IamCredentials Iam = 3; } } diff --git a/ydb/core/tx/schemeshard/schemeshard__operation.cpp b/ydb/core/tx/schemeshard/schemeshard__operation.cpp index 676771621098..29da42f0791f 100644 --- a/ydb/core/tx/schemeshard/schemeshard__operation.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__operation.cpp @@ -12,6 +12,8 @@ #include #include +#include + #include namespace NKikimr::NSchemeShard { @@ -85,6 +87,14 @@ NKikimrScheme::TEvModifySchemeTransaction GetRecordForPrint(const NKikimrScheme: return recordForPrint; } +TString PrintSecurely(const NKikimrScheme::TEvModifySchemeTransaction& record) { + TSecurityTextFormatPrinter printer; + printer.SetSingleLineMode(true); + TString string; + printer.PrintToString(record, &string); + return string; +} + THolder TSchemeShard::IgniteOperation(TProposeRequest& request, TOperationContext& context) { THolder response = nullptr; @@ -183,7 +193,7 @@ THolder TSchemeShard::IgniteOperation(TProposeRequest& request << ", already accepted parts: " << operation->Parts.size() << ", propose result status: " << NKikimrScheme::EStatus_Name(response->Record.GetStatus()) << ", with reason: " << response->Record.GetReason() - << ", tx message: " << GetRecordForPrint(record).ShortDebugString()); + << ", tx message: " << PrintSecurely(record)); } Y_VERIFY_S(context.IsUndoChangesSafe(), @@ -194,7 +204,7 @@ THolder TSchemeShard::IgniteOperation(TProposeRequest& request << ", already accepted parts: " << operation->Parts.size() << ", propose result status: " << NKikimrScheme::EStatus_Name(response->Record.GetStatus()) << ", with reason: " << response->Record.GetReason() - << ", tx message: " << GetRecordForPrint(record).ShortDebugString()); + << ", tx message: " << PrintSecurely(record)); context.OnComplete = {}; // recreate context.DbChanges = {}; @@ -237,7 +247,7 @@ struct TSchemeShard::TTxOperationPropose: public NTabletFlatExecutor::TTransacti LOG_DEBUG_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, "TTxOperationPropose Execute" - << ", message: " << GetRecordForPrint(Request->Get()->Record).ShortDebugString() + << ", message: " << PrintSecurely(Request->Get()->Record) << ", at schemeshard: " << selfId); txc.DB.NoMoreReadsForTx(); diff --git a/ydb/core/tx/schemeshard/ya.make b/ydb/core/tx/schemeshard/ya.make index 8cbf4b637d3c..b3b9e032a154 100644 --- a/ydb/core/tx/schemeshard/ya.make +++ b/ydb/core/tx/schemeshard/ya.make @@ -268,6 +268,7 @@ PEERDIR( ydb/library/aclib/protos ydb/library/login ydb/library/login/protos + ydb/library/protobuf_printer ydb/library/yql/minikql ydb/services/bg_tasks ) diff --git a/ydb/library/grpc/server/actors/ya.make b/ydb/library/grpc/server/actors/ya.make index 94a143ac3414..fa71ec9a30c5 100644 --- a/ydb/library/grpc/server/actors/ya.make +++ b/ydb/library/grpc/server/actors/ya.make @@ -6,6 +6,7 @@ SRCS( PEERDIR( ydb/library/actors/core + ydb/library/grpc/server ) END() diff --git a/ydb/library/grpc/server/logger.h b/ydb/library/grpc/server/logger.h index 1460afa09633..8cfae2b240a3 100644 --- a/ydb/library/grpc/server/logger.h +++ b/ydb/library/grpc/server/logger.h @@ -1,11 +1,17 @@ #pragma once +#include + #include #include +#include + namespace NYdbGrpc { +static bool LogBodyEnabled = "BODY" == GetEnv("YDB_GRPC_SERVER_LOGGING"); + class TLogger: public TThrRefBase { protected: TLogger() = default; @@ -40,4 +46,21 @@ using TLoggerPtr = TIntrusivePtr; logger->Write(ELogPriority::TLOG_INFO, format, __VA_ARGS__); \ } else { } +template +inline TString FormatMessage(const TMsg& message, bool ok = true) { + if (ok) { + if (LogBodyEnabled) { + TString text; + NKikimr::TSecurityTextFormatPrinter printer; + printer.SetSingleLineMode(true); + printer.PrintToString(message, &text); + return text; + } else { + return ""; + } + } else { + return ""; + } +} + } // namespace NYdbGrpc diff --git a/ydb/library/grpc/server/ya.make b/ydb/library/grpc/server/ya.make index 9ed8f30ef2e6..2e44c832ba82 100644 --- a/ydb/library/grpc/server/ya.make +++ b/ydb/library/grpc/server/ya.make @@ -10,6 +10,7 @@ SRCS( GENERATE_ENUM_SERIALIZATION(grpc_request_base.h) PEERDIR( + ydb/library/protobuf_printer contrib/libs/grpc library/cpp/monlib/dynamic_counters/percentile ) @@ -17,4 +18,3 @@ PEERDIR( END() RECURSE_FOR_TESTS(ut) - diff --git a/ydb/public/api/protos/draft/persqueue_common.proto b/ydb/public/api/protos/draft/persqueue_common.proto index 87bb3f236d9f..bad67b8e551b 100644 --- a/ydb/public/api/protos/draft/persqueue_common.proto +++ b/ydb/public/api/protos/draft/persqueue_common.proto @@ -2,6 +2,8 @@ syntax = "proto3"; import "google/protobuf/descriptor.proto"; import "ydb/public/api/protos/draft/persqueue_error_codes.proto"; +import "ydb/public/api/protos/annotations/sensitive.proto"; + package NPersQueueCommon; option java_package = "com.yandex.ydb.persqueue"; @@ -35,8 +37,7 @@ enum ECodec { message Credentials { oneof credentials { - bytes tvm_service_ticket = 1; - bytes oauth_token = 2; + bytes tvm_service_ticket = 1 [(Ydb.sensitive) = true]; + bytes oauth_token = 2 [(Ydb.sensitive) = true]; } } - diff --git a/ydb/public/api/protos/ydb_persqueue_v1.proto b/ydb/public/api/protos/ydb_persqueue_v1.proto index 5262d50f3079..e4eecdbdee2f 100644 --- a/ydb/public/api/protos/ydb_persqueue_v1.proto +++ b/ydb/public/api/protos/ydb_persqueue_v1.proto @@ -3,6 +3,7 @@ import "ydb/public/api/protos/ydb_operation.proto"; import "ydb/public/api/protos/ydb_scheme.proto"; import "ydb/public/api/protos/ydb_status_codes.proto"; import "ydb/public/api/protos/ydb_issue_message.proto"; +import "ydb/public/api/protos/annotations/sensitive.proto"; import "ydb/public/api/protos/annotations/validation.proto"; package Ydb.PersQueue.V1; @@ -38,7 +39,7 @@ message OffsetsRange { // In-session reauthentication and reauthorization, lets user increase session lifetime. You should wait for 'update_token_response' before sending next 'update_token_request'. message UpdateTokenRequest { - string token = 1; + string token = 1 [(Ydb.sensitive) = true]; } message UpdateTokenResponse { @@ -788,7 +789,7 @@ message MigrationStreamingReadClientMessage { } // User credentials if update is needed or empty string. - bytes token = 20; + bytes token = 20 [(Ydb.sensitive) = true]; } /** @@ -1073,8 +1074,8 @@ message Credentials { string service_account_key = 2; } oneof credentials { - string oauth_token = 1; - string jwt_params = 2; + string oauth_token = 1 [(Ydb.sensitive) = true]; + string jwt_params = 2 [(Ydb.sensitive) = true]; Iam iam = 3; } } diff --git a/ydb/public/api/protos/ydb_topic.proto b/ydb/public/api/protos/ydb_topic.proto index 8b5c0aac9cf4..9bcf13e6972b 100644 --- a/ydb/public/api/protos/ydb_topic.proto +++ b/ydb/public/api/protos/ydb_topic.proto @@ -3,6 +3,7 @@ import "ydb/public/api/protos/ydb_operation.proto"; import "ydb/public/api/protos/ydb_scheme.proto"; import "ydb/public/api/protos/ydb_status_codes.proto"; import "ydb/public/api/protos/ydb_issue_message.proto"; +import "ydb/public/api/protos/annotations/sensitive.proto"; import "ydb/public/api/protos/annotations/validation.proto"; import "google/protobuf/duration.proto"; @@ -43,7 +44,7 @@ message OffsetsRange { // In-session reauthentication and reauthorization, lets user increase session lifetime. // Client should wait for UpdateTokenResponse before sending next UpdateTokenRequest. message UpdateTokenRequest { - string token = 1; + string token = 1 [(Ydb.sensitive) = true]; } message UpdateTokenResponse { @@ -167,7 +168,7 @@ message StreamWriteMessage { // Explicit partition id to write to. int64 partition_id = 6; // Explicit partition location to write to. - PartitionWithGeneration partition_with_generation = 8; + PartitionWithGeneration partition_with_generation = 8; } // Message metadata. Overall size is limited to 4096 symbols (all keys and values combined). repeated MetadataItem metadata_items = 7 [(Ydb.size).le = 1000]; @@ -534,7 +535,7 @@ message StreamReadMessage { // Flag of graceful stop, used only when InitRequest.direct_read is true // Client must pass this value unchanged from the StopPartitionSessionRequest. - // Server can sent two StopPartitionSessionRequests, the first with graceful=true, the second with graceful=false. The client must answer both of them. + // Server can sent two StopPartitionSessionRequests, the first with graceful=true, the second with graceful=false. The client must answer both of them. bool graceful = 2; } @@ -563,22 +564,22 @@ message StreamReadMessage { // Messages for bidirectional streaming rpc StreamDirectRead message StreamDirectReadMessage { - // Client-server message for direct read session. + // Client-server message for direct read session. // InitDirectRead - command from client to create and start a direct read session. // StartDirectReadPartitionSession - command from client to create and start a direct read partition session. - // UpdateTokenRequest - request to update auth token + // UpdateTokenRequest - request to update auth token message FromClient { oneof client_message { InitDirectRead init_direct_read = 1; StartDirectReadPartitionSession start_direct_read_partition_session = 2; - UpdateTokenRequest update_token_request = 3; + UpdateTokenRequest update_token_request = 3; } } - // Server-client message for direct read session. + // Server-client message for direct read session. // DirectReadResponse - portion of message data. // StopDirectReadPartitionSession - command from server to stop a direct read partition session. - // UpdateTokenResponse - acknowledgment of token update. + // UpdateTokenResponse - acknowledgment of token update. message FromServer { // Server status of response. Ydb.StatusIds.StatusCode status = 1; @@ -642,13 +643,13 @@ message StreamDirectReadMessage { message DirectReadResponse { // Partition session identifier. int64 partition_session_id = 1; - + // Read request identifier. int64 direct_read_id = 2; // Messages data StreamReadMessage.ReadResponse.PartitionData partition_data = 3; - } + } } message TransactionIdentity { @@ -843,7 +844,7 @@ message CreateTopicRequest { // How long data in partition should be stored. Must be greater than 0 and less than limit for this database. // Default limit - 36 hours. google.protobuf.Duration retention_period = 4; - + // How much data in partition should be stored. Must be greater than 0 and less than limit for this database. // Zero value means infinite limit. int64 retention_storage_mb = 5 [(Ydb.value) = ">= 0"]; @@ -923,7 +924,7 @@ message DescribeTopicResult { // Settings for partitioning PartitioningSettings partitioning_settings = 2; - + // Partitions description. repeated PartitionInfo partitions = 3; @@ -932,7 +933,7 @@ message DescribeTopicResult { // // How long data in partition should be stored. google.protobuf.Duration retention_period = 4; - + // How much data in partition should be stored. // Zero value means infinite limit. int64 retention_storage_mb = 5; @@ -943,7 +944,7 @@ message DescribeTopicResult { // Writes with codec not from this list are forbidden. // If empty, codec compatibility check for the topic is disabled. SupportedCodecs supported_codecs = 7; - + // Partition write speed in bytes per second. // Zero value means default limit: 1 MB per second. int64 partition_write_speed_bytes_per_second = 8; @@ -1135,7 +1136,7 @@ message AlterTopicRequest { // How long data in partition should be stored. Must be greater than 0 and less than limit for this database. // Default limit - 36 hours. google.protobuf.Duration set_retention_period = 4; - + // How much data in partition should be stored. Must be greater than 0 and less than limit for this database. optional int64 set_retention_storage_mb = 5 [(Ydb.value) = ">= 0"]; @@ -1148,7 +1149,7 @@ message AlterTopicRequest { // Partition write speed in bytes per second. Must be less than database limit. Default limit - 1 MB/s. optional int64 set_partition_write_speed_bytes_per_second = 8 [(Ydb.value) = ">= 0"]; - + // Burst size for write in partition, in bytes. Must be less than database limit. Default limit - 1 MB. optional int64 set_partition_write_burst_bytes = 9 [(Ydb.value) = ">= 0"]; From b571990602a9ba0a67b315d31372d7c8babecf4e Mon Sep 17 00:00:00 2001 From: Vitalii Gridnev Date: Thu, 18 Apr 2024 13:46:30 +0300 Subject: [PATCH 017/110] [KIKIMR-21355] Fix OrderedSqlRename without pragma OrderedColumns (#3853) Co-authored-by: Andrey Neporada --- .../yql/core/type_ann/type_ann_core.cpp | 4 ++-- .../sql/dq_file/part1/canondata/result.json | 22 +++++++++++++++++++ .../tests/sql/sql2yql/canondata/result.json | 14 ++++++++++++ .../insert_reorder_without_columnorder.cfg | 2 ++ .../insert_reorder_without_columnorder.sql | 14 ++++++++++++ .../part1/canondata/result.json | 21 ++++++++++++++++++ 6 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 ydb/library/yql/tests/sql/suites/column_order/insert_reorder_without_columnorder.cfg create mode 100644 ydb/library/yql/tests/sql/suites/column_order/insert_reorder_without_columnorder.sql diff --git a/ydb/library/yql/core/type_ann/type_ann_core.cpp b/ydb/library/yql/core/type_ann/type_ann_core.cpp index 5ad0621f1d9c..c9109ff550be 100644 --- a/ydb/library/yql/core/type_ann/type_ann_core.cpp +++ b/ydb/library/yql/core/type_ann/type_ann_core.cpp @@ -9495,7 +9495,7 @@ template // somewhat ugly attempt to find SqlProject to obtain column order auto currInput = input->HeadPtr(); TString path = ToString(input->Content()); - while (currInput->IsCallable({"PersistableRepr", "SqlAggregateAll", "RemoveSystemMembers", "Sort"})) { + while (currInput->IsCallable({"PersistableRepr", "SqlAggregateAll", "RemoveSystemMembers", "Sort", "Take", "Skip"})) { path = path + " -> " + ToString(currInput->Content()); currInput = currInput->HeadPtr(); } @@ -9510,7 +9510,7 @@ template for (const auto& item : currInput->Child(1)->ChildrenList()) { if (!item->IsCallable("SqlProjectItem")) { ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(item->Pos()), - TStringBuilder() << "Failed to deduce column order for input - star / qualified star is prosent in projection")); + TStringBuilder() << "Failed to deduce column order for input - star / qualified star is present in projection")); return IGraphTransformer::TStatus::Error; } childColumnOrder->push_back(ToString(item->Child(1)->Content())); diff --git a/ydb/library/yql/tests/sql/dq_file/part1/canondata/result.json b/ydb/library/yql/tests/sql/dq_file/part1/canondata/result.json index bd6b83b0e943..dd38a7d87385 100644 --- a/ydb/library/yql/tests/sql/dq_file/part1/canondata/result.json +++ b/ydb/library/yql/tests/sql/dq_file/part1/canondata/result.json @@ -736,6 +736,28 @@ } ], "test.test[case-case_val_then_else-default.txt-Results]": [], + "test.test[column_order-insert_reorder_without_columnorder--Analyze]": [ + { + "checksum": "9f976dc964b65317600df5a37ad5c299", + "size": 5708, + "uri": "https://{canondata_backend}/1936273/9c0654be6d8c964c541bdf0c96b4980357ef29d2/resource.tar.gz#test.test_column_order-insert_reorder_without_columnorder--Analyze_/plan.txt" + } + ], + "test.test[column_order-insert_reorder_without_columnorder--Debug]": [ + { + "checksum": "e31bd3307574142ad420a09e5ad536e0", + "size": 2462, + "uri": "https://{canondata_backend}/1031349/a0b3e3db5f104c4fb6b8f2733a1f6bdd159cebf8/resource.tar.gz#test.test_column_order-insert_reorder_without_columnorder--Debug_/opt.yql_patched" + } + ], + "test.test[column_order-insert_reorder_without_columnorder--Plan]": [ + { + "checksum": "9f976dc964b65317600df5a37ad5c299", + "size": 5708, + "uri": "https://{canondata_backend}/1936273/9c0654be6d8c964c541bdf0c96b4980357ef29d2/resource.tar.gz#test.test_column_order-insert_reorder_without_columnorder--Plan_/plan.txt" + } + ], + "test.test[column_order-insert_reorder_without_columnorder--Results]": [], "test.test[column_order-select_limit_offset_reorder-default.txt-Analyze]": [ { "checksum": "e0cc08c6479b76e82c514b6c219d04a9", diff --git a/ydb/library/yql/tests/sql/sql2yql/canondata/result.json b/ydb/library/yql/tests/sql/sql2yql/canondata/result.json index 0a281e083086..0b798cfdc8f5 100644 --- a/ydb/library/yql/tests/sql/sql2yql/canondata/result.json +++ b/ydb/library/yql/tests/sql/sql2yql/canondata/result.json @@ -3695,6 +3695,13 @@ "uri": "https://{canondata_backend}/1936947/659b615f15086142a8960946dabd06b519d43335/resource.tar.gz#test_sql2yql.test_column_order-insert_/sql.yql" } ], + "test_sql2yql.test[column_order-insert_reorder_without_columnorder]": [ + { + "checksum": "d3105827a0ca8e095bcecc797540f34e", + "size": 1553, + "uri": "https://{canondata_backend}/1923547/0aba22156762a55d9c7578c76fffd5395d319f8b/resource.tar.gz#test_sql2yql.test_column_order-insert_reorder_without_columnorder_/sql.yql" + } + ], "test_sql2yql.test[column_order-insert_tmp]": [ { "checksum": "f7020067b63cf9ba560ad9e409933221", @@ -21167,6 +21174,13 @@ "uri": "https://{canondata_backend}/1880306/64654158d6bfb1289c66c626a8162239289559d0/resource.tar.gz#test_sql_format.test_column_order-insert_/formatted.sql" } ], + "test_sql_format.test[column_order-insert_reorder_without_columnorder]": [ + { + "checksum": "e0526a3060fc6b9c9a2d0c295066f135", + "size": 223, + "uri": "https://{canondata_backend}/1923547/0aba22156762a55d9c7578c76fffd5395d319f8b/resource.tar.gz#test_sql_format.test_column_order-insert_reorder_without_columnorder_/formatted.sql" + } + ], "test_sql_format.test[column_order-insert_tmp]": [ { "checksum": "ce56494a4e05ac5ccd812e10665c7541", diff --git a/ydb/library/yql/tests/sql/suites/column_order/insert_reorder_without_columnorder.cfg b/ydb/library/yql/tests/sql/suites/column_order/insert_reorder_without_columnorder.cfg new file mode 100644 index 000000000000..ad52c79527f6 --- /dev/null +++ b/ydb/library/yql/tests/sql/suites/column_order/insert_reorder_without_columnorder.cfg @@ -0,0 +1,2 @@ +in Input input.txt +out Output output.txt diff --git a/ydb/library/yql/tests/sql/suites/column_order/insert_reorder_without_columnorder.sql b/ydb/library/yql/tests/sql/suites/column_order/insert_reorder_without_columnorder.sql new file mode 100644 index 000000000000..0b9f6613ac24 --- /dev/null +++ b/ydb/library/yql/tests/sql/suites/column_order/insert_reorder_without_columnorder.sql @@ -0,0 +1,14 @@ +/* postgres can not */ +use plato; +pragma DisableOrderedColumns; +pragma warning("disable", "4517"); + +$Group = 1u; + +INSERT INTO Output(Group, Name) +SELECT + $Group, + value +FROM Input +WHERE key = "150" +LIMIT 1; diff --git a/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json index e416956271d9..528406c3c24d 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json @@ -719,6 +719,27 @@ "uri": "https://{canondata_backend}/1924537/4423f8f88aaeda4e03b0c158e2e6b0df92c41109/resource.tar.gz#test.test_case-case_val_then_else-default.txt-Results_/results.txt" } ], + "test.test[column_order-insert_reorder_without_columnorder--Debug]": [ + { + "checksum": "e2f603569cbeb53f1f75cc535fe4a542", + "size": 2248, + "uri": "https://{canondata_backend}/1817427/944e3e51d311ff192b733679255631e4b144c75c/resource.tar.gz#test.test_column_order-insert_reorder_without_columnorder--Debug_/opt.yql" + } + ], + "test.test[column_order-insert_reorder_without_columnorder--Plan]": [ + { + "checksum": "3fc5cf899c15ced58a2e419bbef6d2ce", + "size": 6210, + "uri": "https://{canondata_backend}/1936273/bfda7491784aceaa88c55429ca2306196db27d7c/resource.tar.gz#test.test_column_order-insert_reorder_without_columnorder--Plan_/plan.txt" + } + ], + "test.test[column_order-insert_reorder_without_columnorder--Results]": [ + { + "checksum": "e09e785295186f47f7f26ab8e0f0fbb3", + "size": 27, + "uri": "https://{canondata_backend}/1817427/944e3e51d311ff192b733679255631e4b144c75c/resource.tar.gz#test.test_column_order-insert_reorder_without_columnorder--Results_/Output.txt" + } + ], "test.test[column_order-select_limit_offset_reorder-default.txt-Debug]": [ { "checksum": "f810b94782294b9bafa467567637b4a3", From 1520164cfc3740bc16e438056deb1856f17c9a31 Mon Sep 17 00:00:00 2001 From: alexnick88 Date: Fri, 19 Apr 2024 21:58:57 +0300 Subject: [PATCH 018/110] YMQ Verify fix (#3945) Co-authored-by: Sergey Veselov --- ydb/core/ymq/actor/action.h | 4 +-- ydb/core/ymq/actor/service.cpp | 1 + .../test_throttling_nonexistent_queue.py | 26 +++++++++++++++++-- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/ydb/core/ymq/actor/action.h b/ydb/core/ymq/actor/action.h index 8ea1cb814c64..a594f5eafee4 100644 --- a/ydb/core/ymq/actor/action.h +++ b/ydb/core/ymq/actor/action.h @@ -649,6 +649,8 @@ class TActionActor } } + Y_ABORT_UNLESS(SchemeCache_); + bool isACLProtectedAccount = Cfg().GetForceAccessControl(); if (!IsCloud() && (SecurityToken_ || (Cfg().GetForceAccessControl() && (isACLProtectedAccount = IsACLProtectedAccount(UserName_))))) { this->Become(&TActionActor::WaitAuthCheckMessages); @@ -666,8 +668,6 @@ class TActionActor return; } - Y_ABORT_UNLESS(SchemeCache_); - RequestSchemeCache(GetActionACLSourcePath()); // this also checks that requested queue (if any) does exist RequestTicketParser(); } else { diff --git a/ydb/core/ymq/actor/service.cpp b/ydb/core/ymq/actor/service.cpp index 04498866da82..9181d88d9b64 100644 --- a/ydb/core/ymq/actor/service.cpp +++ b/ydb/core/ymq/actor/service.cpp @@ -685,6 +685,7 @@ void TSqsService::AnswerThrottled(TSqsEvents::TEvGetConfiguration::TPtr& ev) { RLOG_SQS_REQ_DEBUG(ev->Get()->RequestId, "Throttled because of too many requests for nonexistent queue [" << ev->Get()->QueueName << "] for user [" << ev->Get()->UserName << "] while getting configuration"); auto answer = MakeHolder(); answer->Throttled = true; + answer->SchemeCache = SchemeCache_; Send(ev->Sender, answer.Release()); } diff --git a/ydb/tests/functional/sqs/common/test_throttling_nonexistent_queue.py b/ydb/tests/functional/sqs/common/test_throttling_nonexistent_queue.py index 2ed57a9ac3af..789d653e859b 100644 --- a/ydb/tests/functional/sqs/common/test_throttling_nonexistent_queue.py +++ b/ydb/tests/functional/sqs/common/test_throttling_nonexistent_queue.py @@ -4,6 +4,8 @@ from ydb.tests.library.sqs.test_base import KikimrSqsTestBase +throttling_exception_pattern = ".*ThrottlingException.*" + class TestSqsThrottlingOnNonexistentQueue(KikimrSqsTestBase): @@ -21,8 +23,6 @@ def get_attributes_of_nonexistent_queue(): except Exception: pass - throttling_exception_pattern = ".*ThrottlingException.*" - assert_that( get_attributes_of_nonexistent_queue, raises( @@ -46,3 +46,25 @@ def get_attributes_of_nonexistent_queue(): pattern=throttling_exception_pattern ) ) + + def test_action_which_does_not_requere_existing_queue(self): + queue_url = self._create_queue_and_assert(self.queue_name, False, True) + nonexistent_queue_url = queue_url + "_nonex" + + def get_attributes_of_nonexistent_queue(): + self._sqs_api.get_queue_attributes(nonexistent_queue_url) + + # Draining budget + for _ in range(16): + try: + get_attributes_of_nonexistent_queue() + except Exception: + pass + + assert_that( + lambda: self._sqs_api.get_queue_url(self.queue_name + "_nonex"), + raises( + RuntimeError, + pattern=throttling_exception_pattern + ) + ) From 36fc0ee4aa8fefc4ea866f1b28c705fc2a78277f Mon Sep 17 00:00:00 2001 From: Ilnaz Nizametdinov Date: Sun, 21 Apr 2024 16:15:58 +0300 Subject: [PATCH 019/110] Reserve change queue capacity in order not to overflow the queue (#3841) (#3917) --- ydb/core/tx/datashard/cdc_stream_scan.cpp | 24 +++++++-- ydb/core/tx/datashard/datashard.cpp | 63 ++++++++++++++++++++--- ydb/core/tx/datashard/datashard_impl.h | 21 +++++--- 3 files changed, 93 insertions(+), 15 deletions(-) diff --git a/ydb/core/tx/datashard/cdc_stream_scan.cpp b/ydb/core/tx/datashard/cdc_stream_scan.cpp index 09bed6daf3b1..4bae27518d4f 100644 --- a/ydb/core/tx/datashard/cdc_stream_scan.cpp +++ b/ydb/core/tx/datashard/cdc_stream_scan.cpp @@ -213,7 +213,7 @@ class TDataShard::TTxCdcStreamScanProgress TTxType GetTxType() const override { return TXTYPE_CDC_STREAM_SCAN_PROGRESS; } bool Execute(TTransactionContext& txc, const TActorContext& ctx) override { - const auto& ev = *Request->Get(); + auto& ev = *Request->Get(); const auto& tablePathId = ev.TablePathId; const auto& streamPathId = ev.StreamPathId; const auto& readVersion = ev.ReadVersion; @@ -238,7 +238,25 @@ class TDataShard::TTxCdcStreamScanProgress } ChangeRecords.clear(); - if (Self->CheckChangesQueueOverflow()) { + + if (!ev.ReservationCookie) { + ev.ReservationCookie = Self->ReserveChangeQueueCapacity(ev.Rows.size()); + } + + if (!ev.ReservationCookie) { + LOG_I("Cannot reserve change queue capacity"); + Reschedule = true; + return true; + } + + if (Self->GetFreeChangeQueueCapacity(ev.ReservationCookie) < ev.Rows.size()) { + LOG_I("Not enough change queue capacity"); + Reschedule = true; + return true; + } + + if (Self->CheckChangesQueueOverflow(ev.ReservationCookie)) { + LOG_I("Change queue overflow"); Reschedule = true; return true; } @@ -335,7 +353,7 @@ class TDataShard::TTxCdcStreamScanProgress LOG_I("Enqueue " << ChangeRecords.size() << " change record(s)" << ": streamPathId# " << Request->Get()->StreamPathId); - Self->EnqueueChangeRecords(std::move(ChangeRecords)); + Self->EnqueueChangeRecords(std::move(ChangeRecords), Request->Get()->ReservationCookie); ctx.Send(Request->Sender, Response.Release()); } else if (Reschedule) { LOG_I("Re-schedule progress tx" diff --git a/ydb/core/tx/datashard/datashard.cpp b/ydb/core/tx/datashard/datashard.cpp index 12bc7e28e7cb..1bf0be413b01 100644 --- a/ydb/core/tx/datashard/datashard.cpp +++ b/ydb/core/tx/datashard/datashard.cpp @@ -899,6 +899,13 @@ void TDataShard::RemoveChangeRecord(NIceDb::TNiceDb& db, ui64 order) { } } + if (auto rIt = ChangeQueueReservations.find(record.ReservationCookie); rIt != ChangeQueueReservations.end()) { + --ChangeQueueReservedCapacity; + if (!--rIt->second) { + ChangeQueueReservations.erase(rIt); + } + } + UpdateChangeExchangeLag(AppData()->TimeProvider->Now()); ChangesQueue.erase(it); @@ -908,7 +915,7 @@ void TDataShard::RemoveChangeRecord(NIceDb::TNiceDb& db, ui64 order) { CheckChangesQueueNoOverflow(); } -void TDataShard::EnqueueChangeRecords(TVector&& records) { +void TDataShard::EnqueueChangeRecords(TVector&& records, ui64 cookie) { if (!records) { return; } @@ -933,7 +940,7 @@ void TDataShard::EnqueueChangeRecords(TVectorsecond); @@ -956,6 +963,38 @@ void TDataShard::EnqueueChangeRecords(TVectorDataShardConfig.GetChangesQueueItemsLimit(); + if (sizeLimit < ChangesQueue.size()) { + return 0; + } + + const auto free = Min(sizeLimit - ChangesQueue.size(), Max(sizeLimit / 2, 1ul)); + + ui32 reserved = ChangeQueueReservedCapacity; + if (auto it = ChangeQueueReservations.find(cookie); it != ChangeQueueReservations.end()) { + reserved -= it->second; + } + + if (free < reserved) { + return 0; + } + + return free - reserved; +} + +ui64 TDataShard::ReserveChangeQueueCapacity(ui32 capacity) { + const auto sizeLimit = AppData()->DataShardConfig.GetChangesQueueItemsLimit(); + if (Max(sizeLimit / 2, 1ul) < ChangeQueueReservedCapacity) { + return 0; + } + + const auto cookie = NextChangeQueueReservationCookie++; + ChangeQueueReservations.emplace(cookie, capacity); + ChangeQueueReservedCapacity += capacity; + return cookie; +} + void TDataShard::UpdateChangeExchangeLag(TInstant now) { if (!ChangesList.Empty()) { const auto* front = ChangesList.Front(); @@ -3391,19 +3430,31 @@ bool TDataShard::CheckTxNeedWait(const TEvDataShard::TEvProposeTransaction::TPtr return false; } -bool TDataShard::CheckChangesQueueOverflow() const { +bool TDataShard::CheckChangesQueueOverflow(ui64 cookie) const { const auto* appData = AppData(); const auto sizeLimit = appData->DataShardConfig.GetChangesQueueItemsLimit(); const auto bytesLimit = appData->DataShardConfig.GetChangesQueueBytesLimit(); - return ChangesQueue.size() >= sizeLimit || ChangesQueueBytes >= bytesLimit; + + ui32 reserved = ChangeQueueReservedCapacity; + if (auto it = ChangeQueueReservations.find(cookie); it != ChangeQueueReservations.end()) { + reserved -= it->second; + } + + return (ChangesQueue.size() + reserved) >= sizeLimit || ChangesQueueBytes >= bytesLimit; } -void TDataShard::CheckChangesQueueNoOverflow() { +void TDataShard::CheckChangesQueueNoOverflow(ui64 cookie) { if (OverloadSubscribersByReason[RejectReasonIndex(ERejectReason::ChangesQueueOverflow)]) { const auto* appData = AppData(); const auto sizeLimit = appData->DataShardConfig.GetChangesQueueItemsLimit(); const auto bytesLimit = appData->DataShardConfig.GetChangesQueueBytesLimit(); - if (ChangesQueue.size() < sizeLimit && ChangesQueueBytes < bytesLimit) { + + ui32 reserved = ChangeQueueReservedCapacity; + if (auto it = ChangeQueueReservations.find(cookie); it != ChangeQueueReservations.end()) { + reserved -= it->second; + } + + if ((ChangesQueue.size() + reserved) < sizeLimit && ChangesQueueBytes < bytesLimit) { NotifyOverloadSubscribers(ERejectReason::ChangesQueueOverflow); } } diff --git a/ydb/core/tx/datashard/datashard_impl.h b/ydb/core/tx/datashard/datashard_impl.h index b277cfe1ef43..71847b2ef22c 100644 --- a/ydb/core/tx/datashard/datashard_impl.h +++ b/ydb/core/tx/datashard/datashard_impl.h @@ -531,6 +531,7 @@ class TDataShard const TRowVersion ReadVersion; const TVector ValueTags; TVector> Rows; + ui64 ReservationCookie = 0; const TCdcStreamScanManager::TStats Stats; }; @@ -1837,7 +1838,9 @@ class TDataShard void MoveChangeRecord(NIceDb::TNiceDb& db, ui64 order, const TPathId& pathId); void MoveChangeRecord(NIceDb::TNiceDb& db, ui64 lockId, ui64 lockOffset, const TPathId& pathId); void RemoveChangeRecord(NIceDb::TNiceDb& db, ui64 order); - void EnqueueChangeRecords(TVector&& records); + void EnqueueChangeRecords(TVector&& records, ui64 cookie = 0); + ui32 GetFreeChangeQueueCapacity(ui64 cookie); + ui64 ReserveChangeQueueCapacity(ui32 capacity); void UpdateChangeExchangeLag(TInstant now); void CreateChangeSender(const TActorContext& ctx); void KillChangeSender(const TActorContext& ctx); @@ -1976,8 +1979,8 @@ class TDataShard void WaitPredictedPlanStep(ui64 step); void SchedulePlanPredictedTxs(); - bool CheckChangesQueueOverflow() const; - void CheckChangesQueueNoOverflow(); + bool CheckChangesQueueOverflow(ui64 cookie = 0) const; + void CheckChangesQueueNoOverflow(ui64 cookie = 0); void DeleteReadIterator(TReadIteratorsMap::iterator it); void CancelReadIterators(Ydb::StatusIds::StatusCode code, const TString& issue, const TActorContext& ctx); @@ -2709,9 +2712,11 @@ class TDataShard TInstant EnqueuedAt; ui64 LockId; ui64 LockOffset; + ui64 ReservationCookie; explicit TEnqueuedRecord(ui64 bodySize, const TPathId& tableId, - ui64 schemaVersion, TInstant created, TInstant enqueued, ui64 lockId = 0, ui64 lockOffset = 0) + ui64 schemaVersion, TInstant created, TInstant enqueued, + ui64 lockId = 0, ui64 lockOffset = 0, ui64 cookie = 0) : BodySize(bodySize) , TableId(tableId) , SchemaVersion(schemaVersion) @@ -2720,12 +2725,13 @@ class TDataShard , EnqueuedAt(enqueued) , LockId(lockId) , LockOffset(lockOffset) + , ReservationCookie(cookie) { } - explicit TEnqueuedRecord(const IDataShardChangeCollector::TChange& record, TInstant now) + explicit TEnqueuedRecord(const IDataShardChangeCollector::TChange& record, TInstant now, ui64 cookie) : TEnqueuedRecord(record.BodySize, record.TableId, record.SchemaVersion, record.CreatedAt(), now, - record.LockId, record.LockOffset) + record.LockId, record.LockOffset, cookie) { } }; @@ -2745,6 +2751,9 @@ class TDataShard THashMap ChangesQueue; // ui64 is order TIntrusiveList ChangesList; ui64 ChangesQueueBytes = 0; + THashMap ChangeQueueReservations; + ui64 NextChangeQueueReservationCookie = 1; + ui32 ChangeQueueReservedCapacity = 0; TActorId OutChangeSender; bool OutChangeSenderSuspended = false; From b1eb0366ee582af0fc938c9f35c7063bbd144fab Mon Sep 17 00:00:00 2001 From: vporyadke Date: Mon, 22 Apr 2024 16:51:15 +0200 Subject: [PATCH 020/110] make stdev calculation more numerically stable (#3984) --- ydb/core/mind/hive/hive.h | 30 +++++++++++++++++++++-------- ydb/core/mind/hive/hive_impl_ut.cpp | 18 +++++++++++++++++ 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/ydb/core/mind/hive/hive.h b/ydb/core/mind/hive/hive.h index 8a585cac2ab6..e1ecff02ea48 100644 --- a/ydb/core/mind/hive/hive.h +++ b/ydb/core/mind/hive/hive.h @@ -1,5 +1,6 @@ #pragma once #include +#include #include #include @@ -201,20 +202,33 @@ TResourceNormalizedValues NormalizeRawValues(const TResourceRawValues& values, c NMetrics::EResource GetDominantResourceType(const TResourceRawValues& values, const TResourceRawValues& maximum); NMetrics::EResource GetDominantResourceType(const TResourceNormalizedValues& normValues); +// https://en.wikipedia.org/wiki/Kahan_summation_algorithm +template +std::ranges::range_value_t StableSum(const TRange& values) { + using TValue = std::ranges::range_value_t; + TValue sum{}; + TValue correction{}; + for (const auto& x : values) { + TValue y = x - correction; + TValue tmp = sum + y; + correction = (tmp - sum) - y; + sum = tmp; + } + return sum; +} + template inline std::tuple GetStDev(const TVector>& values) { std::tuple sum; if (values.empty()) return sum; - for (const auto& v : values) { - sum = sum + v; - } + sum = StableSum(values); auto mean = sum / values.size(); - sum = std::tuple(); - for (const auto& v : values) { - auto diff = v - mean; - sum = sum + diff * diff; - } + auto quadraticDev = [&] (const std::tuple& value) { + auto diff = value - mean; + return diff * diff; + }; + sum = StableSum(values | std::views::transform(quadraticDev)); auto div = sum / values.size(); auto st_dev = sqrt(div); return tuple_cast::cast(st_dev); diff --git a/ydb/core/mind/hive/hive_impl_ut.cpp b/ydb/core/mind/hive/hive_impl_ut.cpp index e3ba0468f58c..a2a734886b37 100644 --- a/ydb/core/mind/hive/hive_impl_ut.cpp +++ b/ydb/core/mind/hive/hive_impl_ut.cpp @@ -193,4 +193,22 @@ Y_UNIT_TEST_SUITE(THiveImplTest) { Ctest << "HIVE_TABLET_BALANCE_STRATEGY_RANDOM" << Endl; CheckSpeedAndDistribution(allTablets, BalanceTablets, EResourceToBalance::Memory); } + + Y_UNIT_TEST(TestStDev) { + using TSingleResource = std::tuple; + + TVector values(100, 50.0 / 1'000'000); + values.front() = 51.0 / 1'000'000; + + double stDev1 = std::get<0>(GetStDev(values)); + + std::swap(values.front(), values.back()); + + double stDev2 = std::get<0>(GetStDev(values)); + + double expectedStDev = sqrt(0.9703) / 1'000'000; + + UNIT_ASSERT_DOUBLES_EQUAL(expectedStDev, stDev1, 1e-6); + UNIT_ASSERT_VALUES_EQUAL(stDev1, stDev2); + } } From ff2698fc92f19e1083042102b19a9d0b0e04726f Mon Sep 17 00:00:00 2001 From: Ilnaz Nizametdinov Date: Thu, 25 Apr 2024 17:24:11 +0300 Subject: [PATCH 021/110] 24-1: Fix reordering of change records (#4087) (#4105) --- .../change_sender_common_ops.cpp | 23 ++++++++++++++++--- .../change_sender_common_ops.h | 2 +- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ydb/core/change_exchange/change_sender_common_ops.cpp b/ydb/core/change_exchange/change_sender_common_ops.cpp index b2b3e90718fa..a2450d21746e 100644 --- a/ydb/core/change_exchange/change_sender_common_ops.cpp +++ b/ydb/core/change_exchange/change_sender_common_ops.cpp @@ -95,7 +95,7 @@ void TBaseChangeSender::EnqueueRecords(TVectorBodySize) > MemLimit) { - break; + if (!forceAtLeastOne) { + break; + } + + forceAtLeastOne = false; } MemUsage += it->BodySize; @@ -161,7 +165,20 @@ void TBaseChangeSender::SendRecords() { THashSet registrations; bool needToResolve = false; + // used to avoid deadlock between RequestRecords & SendRecords + bool processedAtLeastOne = false; + while (it != PendingSent.end()) { + if (Enqueued && Enqueued.begin()->Order <= it->first) { + break; + } + + processedAtLeastOne = true; + + if (PendingBody && PendingBody.begin()->Order <= it->first) { + break; + } + if (!it->second->IsBroadcast()) { const ui64 partitionId = Resolver->GetPartitionId(it->second); if (!Senders.contains(partitionId)) { @@ -215,7 +232,7 @@ void TBaseChangeSender::SendRecords() { Resolver->Resolve(); } - RequestRecords(); + RequestRecords(!processedAtLeastOne); } void TBaseChangeSender::ForgetRecords(TVector&& records) { diff --git a/ydb/core/change_exchange/change_sender_common_ops.h b/ydb/core/change_exchange/change_sender_common_ops.h index 2e25c8aa72f4..a370d20e9587 100644 --- a/ydb/core/change_exchange/change_sender_common_ops.h +++ b/ydb/core/change_exchange/change_sender_common_ops.h @@ -99,7 +99,7 @@ class TBaseChangeSender: public IChangeSender { void CreateMissingSenders(const TVector& partitionIds); void RecreateSenders(const TVector& partitionIds); - bool RequestRecords(); + bool RequestRecords(bool forceAtLeastOne = false); void SendRecords(); void SendPreparedRecords(ui64 partitionId); From 34c57d8f70fbb4c4accf8bef8d12834e637cec44 Mon Sep 17 00:00:00 2001 From: alexnick88 Date: Thu, 25 Apr 2024 17:45:37 +0300 Subject: [PATCH 022/110] Fix 24 1 (#4112) --- ydb/core/persqueue/ut/sourceid_ut.cpp | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/ydb/core/persqueue/ut/sourceid_ut.cpp b/ydb/core/persqueue/ut/sourceid_ut.cpp index 31853ccc9f4c..6f8bd6961af7 100644 --- a/ydb/core/persqueue/ut/sourceid_ut.cpp +++ b/ydb/core/persqueue/ut/sourceid_ut.cpp @@ -459,27 +459,6 @@ Y_UNIT_TEST_SUITE(TSourceIdTests) { UNIT_ASSERT(!emitter.CanEmit().Defined()); } } - - Y_UNIT_TEST(ExpensiveCleanup) { - TSourceIdStorage storage; - ui64 offset = 0; - - // initial info w/o heartbeats - for (ui32 i = 1; i <= 100000; ++i) { - storage.RegisterSourceId(TestSourceId(i), MakeExplicitSourceIdInfo(++offset)); - } - - NKikimrPQ::TPartitionConfig config; - config.SetSourceIdLifetimeSeconds(TDuration::Hours(1).Seconds()); - - auto request = MakeHolder(); - for (ui32 i = 0; i < 1000; ++i) { - Cerr << "Iteration " << i << "\n"; - const auto dropped = storage.DropOldSourceIds(request.Get(), TInstant::Hours(2), 1'000'000, TPartitionId(TestPartition), config); - UNIT_ASSERT_EQUAL(dropped, false); - } - - } } // TSourceIdTests } // namespace NKikimr::NPQ From be291e76c91e5281dff9b018a1d0e2660b7af1d9 Mon Sep 17 00:00:00 2001 From: Nikolay Shestakov Date: Fri, 26 Apr 2024 16:09:34 +0500 Subject: [PATCH 023/110] Fix leak of PartitionChooserActor (#4131) --- .../partition_chooser_impl__abstract_chooser_actor.h | 12 +++++++----- .../deprecated/persqueue_v0/grpc_pq_write_actor.cpp | 6 +++++- .../persqueue_v1/actors/write_session_actor.ipp | 4 ++++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ydb/core/persqueue/writer/partition_chooser_impl__abstract_chooser_actor.h b/ydb/core/persqueue/writer/partition_chooser_impl__abstract_chooser_actor.h index 0e975c6cec67..887132ac75fe 100644 --- a/ydb/core/persqueue/writer/partition_chooser_impl__abstract_chooser_actor.h +++ b/ydb/core/persqueue/writer/partition_chooser_impl__abstract_chooser_actor.h @@ -58,7 +58,7 @@ class TAbstractPartitionChooserActor: public TActorBootstrapped { if (TableHelper.Initialize(ctx, SourceId)) { return true; } - StartIdle(); + StartIdle(); TThis::ReplyError(ErrorCode::BAD_REQUEST, "Bad SourceId", ctx); return false; } @@ -67,6 +67,8 @@ class TAbstractPartitionChooserActor: public TActorBootstrapped { auto ctx = TActivationContext::ActorContextFor(SelfId()); TableHelper.CloseKqpSession(ctx); PartitionHelper.Close(ctx); + + TActorBootstrapped::PassAway(); } bool NeedTable(const NActors::TActorContext& ctx) { @@ -78,7 +80,7 @@ class TAbstractPartitionChooserActor: public TActorBootstrapped { void InitTable(const NActors::TActorContext& ctx) { TThis::Become(&TThis::StateInitTable); const auto& pqConfig = AppData(ctx)->PQConfig; - TRACE("InitTable: SourceId="<< SourceId + TRACE("InitTable: SourceId="<< SourceId << " TopicsAreFirstClassCitizen=" << pqConfig.GetTopicsAreFirstClassCitizen() << " UseSrcIdMetaMappingInFirstClass=" < { protected: void StartIdle() { - TThis::Become(&TThis::StateIdle); + TThis::Become(&TThis::StateIdle); DEBUG("Start idle"); } void HandleIdle(TEvPartitionChooser::TEvRefreshRequest::TPtr&, const TActorContext& ctx) { if (PartitionPersisted) { SendUpdateRequests(ctx); - } + } } STATEFN(StateIdle) { @@ -303,7 +305,7 @@ class TAbstractPartitionChooserActor: public TActorBootstrapped { TThis::Die(ctx); } - + protected: const TActorId Parent; diff --git a/ydb/services/deprecated/persqueue_v0/grpc_pq_write_actor.cpp b/ydb/services/deprecated/persqueue_v0/grpc_pq_write_actor.cpp index 6172305476af..43a864214ba8 100644 --- a/ydb/services/deprecated/persqueue_v0/grpc_pq_write_actor.cpp +++ b/ydb/services/deprecated/persqueue_v0/grpc_pq_write_actor.cpp @@ -451,6 +451,10 @@ void TWriteSessionActor::Handle(TEvTicketParser::TEvAuthorizeTicketResult::TPtr& void TWriteSessionActor::DiscoverPartition(const NActors::TActorContext& ctx) { State = ES_WAIT_PARTITION; + if (PartitionChooser) { + ctx.Send(PartitionChooser, new TEvents::TEvPoison()); + } + std::optional preferedPartition = PreferedPartition == Max() ? std::nullopt : std::optional(PreferedPartition); PartitionChooser = ctx.RegisterWithSameMailbox(NPQ::CreatePartitionChooserActor(ctx.SelfID, Config, FullConverter, SourceId, preferedPartition)); } @@ -894,7 +898,7 @@ void TWriteSessionActor::HandleWakeup(const TActorContext& ctx) { ctx.Send(PartitionChooser, new NPQ::TEvPartitionChooser::TEvRefreshRequest()); LastSourceIdUpdate = now + SOURCEID_UPDATE_PERIOD; } - + if (now >= LogSessionDeadline) { LogSession(ctx); } diff --git a/ydb/services/persqueue_v1/actors/write_session_actor.ipp b/ydb/services/persqueue_v1/actors/write_session_actor.ipp index 825e342b7ead..9de34f08da6c 100644 --- a/ydb/services/persqueue_v1/actors/write_session_actor.ipp +++ b/ydb/services/persqueue_v1/actors/write_session_actor.ipp @@ -624,6 +624,10 @@ template void TWriteSessionActor::DiscoverPartition(const NActors::TActorContext& ctx) { State = ES_WAIT_PARTITION; + if (PartitionChooser) { + ctx.Send(PartitionChooser, new TEvents::TEvPoison()); + } + std::optional preferedPartition = PreferedPartition == Max() ? std::nullopt : std::optional(PreferedPartition); PartitionChooser = ctx.RegisterWithSameMailbox(NPQ::CreatePartitionChooserActor(ctx.SelfID, Config, FullConverter, SourceId, preferedPartition)); } From 6fc3848c8d3469030dbc4d014433c759b4a4a0a0 Mon Sep 17 00:00:00 2001 From: Andrei Rykov Date: Fri, 26 Apr 2024 13:48:27 +0200 Subject: [PATCH 024/110] Changed Disconnected node handle to prevent double actor unregister - merge-24-1 (#4130) --- ydb/core/viewer/json_tenantinfo.h | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/ydb/core/viewer/json_tenantinfo.h b/ydb/core/viewer/json_tenantinfo.h index d507ff2a8b2f..dc63594f58bf 100644 --- a/ydb/core/viewer/json_tenantinfo.h +++ b/ydb/core/viewer/json_tenantinfo.h @@ -436,16 +436,17 @@ class TJsonTenantInfo : public TViewerPipeClient { } void Disconnected(TEvInterconnect::TEvNodeDisconnected::TPtr &ev) { - ui32 nodeId = ev->Get()->NodeId; + TNodeId nodeId = ev->Get()->NodeId; + TString& tenantId = NodeIdsToTenant[nodeId]; BLOG_TRACE("NodeDisconnected for node " << nodeId); - if (NodeSysInfo.emplace(nodeId, NKikimrWhiteboard::TEvSystemStateResponse{}).second) { - RequestDone(); - } - auto tenantId = NodeIdsToTenant[nodeId]; - if (TenantNodeTabletInfo[tenantId].emplace(nodeId, NKikimrWhiteboard::TEvTabletStateResponse{}).second) { - RequestDone(); - } - if (!TenantNodes[tenantId].empty()) { + if (!OffloadMerge) { + if (NodeSysInfo.emplace(nodeId, NKikimrWhiteboard::TEvSystemStateResponse{}).second) { + RequestDone(); + } + if (Tablets && TenantNodeTabletInfo[tenantId].emplace(nodeId, NKikimrWhiteboard::TEvTabletStateResponse{}).second) { + RequestDone(); + } + } else if (!TenantNodes[tenantId].empty()) { if (Tablets) { SendViewerTabletRequest(tenantId); RequestDone(); From b614914e5aa5a1093212b02a57cb3ecaef4cc499 Mon Sep 17 00:00:00 2001 From: Iuliia Sidorina Date: Fri, 26 Apr 2024 15:26:39 +0200 Subject: [PATCH 025/110] fix(kqp): support stream lookup backward compatibility (#4147) --- ydb/core/kqp/runtime/kqp_stream_lookup_actor.cpp | 7 ++++++- ydb/core/kqp/runtime/kqp_stream_lookup_worker.cpp | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ydb/core/kqp/runtime/kqp_stream_lookup_actor.cpp b/ydb/core/kqp/runtime/kqp_stream_lookup_actor.cpp index b51d0d3b7faf..43ea8cf5fc02 100644 --- a/ydb/core/kqp/runtime/kqp_stream_lookup_actor.cpp +++ b/ydb/core/kqp/runtime/kqp_stream_lookup_actor.cpp @@ -54,8 +54,13 @@ class TKqpStreamLookupActor : public NActors::TActorBootstrappedStreamLookupActorsCount->Inc(); + + if (!StreamLookupWorker) { + return RuntimeError(TStringBuilder() << "Uninitialized StreamLookupWorker", + NYql::NDqProto::StatusIds::INTERNAL_ERROR); + } + ResolveTableShards(); Become(&TKqpStreamLookupActor::StateFunc); } diff --git a/ydb/core/kqp/runtime/kqp_stream_lookup_worker.cpp b/ydb/core/kqp/runtime/kqp_stream_lookup_worker.cpp index 5ff68ed0b79c..ead83ab0ed71 100644 --- a/ydb/core/kqp/runtime/kqp_stream_lookup_worker.cpp +++ b/ydb/core/kqp/runtime/kqp_stream_lookup_worker.cpp @@ -817,6 +817,7 @@ std::unique_ptr CreateStreamLookupWorker(NKikimrKqp::TKq const NYql::NDqProto::TTaskInput& inputDesc) { switch (settings.GetLookupStrategy()) { + case NKqpProto::EStreamLookupStrategy::UNSPECIFIED: // for backward compatibility case NKqpProto::EStreamLookupStrategy::LOOKUP: return std::make_unique(std::move(settings), typeEnv, holderFactory, inputDesc); case NKqpProto::EStreamLookupStrategy::JOIN: From 00c0e545e58306c3b5bd6d9d95c33854036be1a1 Mon Sep 17 00:00:00 2001 From: qyryq Date: Sat, 27 Apr 2024 09:47:17 +0300 Subject: [PATCH 026/110] Allow DescribePartition request if UpdateRow permission is granted (#4146) --- ydb/core/tx/scheme_board/cache.cpp | 4 +- ydb/core/tx/scheme_cache/scheme_cache.h | 1 + .../client/ydb_topic/ut/describe_topic_ut.cpp | 72 ++++++++++++++++++- .../ydb_topic/ut/local_partition_ut.cpp | 2 +- ydb/services/lib/actors/pq_schema_actor.h | 57 +++++++-------- .../persqueue_v1/actors/schema_actors.cpp | 44 ++++++++++-- .../persqueue_v1/actors/schema_actors.h | 12 ++-- 7 files changed, 145 insertions(+), 47 deletions(-) diff --git a/ydb/core/tx/scheme_board/cache.cpp b/ydb/core/tx/scheme_board/cache.cpp index 8692568da184..fc5197482469 100644 --- a/ydb/core/tx/scheme_board/cache.cpp +++ b/ydb/core/tx/scheme_board/cache.cpp @@ -188,8 +188,8 @@ namespace { return entry.KeyDescription->SecurityObject; } - static ui32 GetAccess(const TNavigate::TEntry&) { - return NACLib::EAccessRights::DescribeSchema; + static ui32 GetAccess(const TNavigate::TEntry& entry) { + return entry.Access; } static ui32 GetAccess(const TResolve::TEntry& entry) { diff --git a/ydb/core/tx/scheme_cache/scheme_cache.h b/ydb/core/tx/scheme_cache/scheme_cache.h index 5ccea3f421a1..040a6bdfd782 100644 --- a/ydb/core/tx/scheme_cache/scheme_cache.h +++ b/ydb/core/tx/scheme_cache/scheme_cache.h @@ -258,6 +258,7 @@ struct TSchemeCacheNavigate { // in TVector Path; + ui32 Access = NACLib::DescribeSchema; TTableId TableId; ERequestType RequestType = ERequestType::ByPath; EOp Operation = OpUnknown; diff --git a/ydb/public/sdk/cpp/client/ydb_topic/ut/describe_topic_ut.cpp b/ydb/public/sdk/cpp/client/ydb_topic/ut/describe_topic_ut.cpp index 6d262b67319a..4cc3a387e4f9 100644 --- a/ydb/public/sdk/cpp/client/ydb_topic/ut/describe_topic_ut.cpp +++ b/ydb/public/sdk/cpp/client/ydb_topic/ut/describe_topic_ut.cpp @@ -1,6 +1,8 @@ #include "ut_utils/topic_sdk_test_setup.h" +#include #include +#include #include #include #include @@ -10,8 +12,6 @@ #include #include -#include - namespace NYdb::NTopic::NTests { Y_UNIT_TEST_SUITE(Describe) { @@ -344,5 +344,73 @@ namespace NYdb::NTopic::NTests { DescribeConsumer(setup, client, false, false, true, true); DescribePartition(setup, client, false, false, true, true); } + + TDescribePartitionResult RunPermissionTest(TTopicSdkTestSetup& setup, int userId, bool existingTopic, bool allowUpdateRow, bool allowDescribeSchema) { + TString authToken = TStringBuilder() << "x-user-" << userId << "@builtin"; + Cerr << std::format("=== existingTopic={} allowUpdateRow={} allowDescribeSchema={} authToken={}\n", + existingTopic, allowUpdateRow, allowDescribeSchema, std::string(authToken)); + + auto driverConfig = setup.MakeDriverConfig().SetAuthToken(authToken); + auto client = TTopicClient(TDriver(driverConfig)); + auto settings = TDescribePartitionSettings().IncludeLocation(true); + i64 testPartitionId = 0; + + NACLib::TDiffACL acl; + if (allowDescribeSchema) { + acl.AddAccess(NACLib::EAccessType::Allow, NACLib::DescribeSchema, authToken); + } + if (allowUpdateRow) { + acl.AddAccess(NACLib::EAccessType::Allow, NACLib::UpdateRow, authToken); + } + setup.GetServer().AnnoyingClient->ModifyACL("/Root", TEST_TOPIC, acl.SerializeAsString()); + + return client.DescribePartition(existingTopic ? TEST_TOPIC : "bad-topic", testPartitionId, settings).GetValueSync(); + } + + Y_UNIT_TEST(DescribePartitionPermissions) { + TTopicSdkTestSetup setup(TEST_CASE_NAME); + setup.GetServer().EnableLogs({NKikimrServices::TX_PROXY_SCHEME_CACHE, NKikimrServices::SCHEME_BOARD_SUBSCRIBER}, NActors::NLog::PRI_TRACE); + + int userId = 0; + + struct Expectation { + bool existingTopic; + bool allowUpdateRow; + bool allowDescribeSchema; + EStatus status; + NYql::TIssueCode issueCode; + }; + + std::vector expectations{ + {0, 0, 0, EStatus::SCHEME_ERROR, Ydb::PersQueue::ErrorCode::ACCESS_DENIED}, + {0, 0, 1, EStatus::SCHEME_ERROR, Ydb::PersQueue::ErrorCode::ACCESS_DENIED}, + {0, 1, 0, EStatus::SCHEME_ERROR, Ydb::PersQueue::ErrorCode::ACCESS_DENIED}, + {0, 1, 1, EStatus::SCHEME_ERROR, Ydb::PersQueue::ErrorCode::ACCESS_DENIED}, + {1, 0, 0, EStatus::SCHEME_ERROR, Ydb::PersQueue::ErrorCode::ACCESS_DENIED}, + {1, 0, 1, EStatus::SUCCESS, 0}, + {1, 1, 0, EStatus::SUCCESS, 0}, + {1, 1, 1, EStatus::SUCCESS, 0}, + }; + + for (auto [existing, update, describe, status, issue] : expectations) { + auto result = RunPermissionTest(setup, userId++, existing, update, describe); + auto resultStatus = result.GetStatus(); + auto line = TStringBuilder() << "=== status=" << resultStatus; + NYql::TIssueCode resultIssue = 0; + if (!result.GetIssues().Empty()) { + resultIssue = result.GetIssues().begin()->GetCode(); + line << " issueCode=" << resultIssue; + } + Cerr << (line << " issues=" << result.GetIssues().ToOneLineString() << Endl); + + UNIT_ASSERT_EQUAL(resultStatus, status); + UNIT_ASSERT_EQUAL(resultIssue, issue); + if (resultStatus == EStatus::SUCCESS) { + auto& p = result.GetPartitionDescription().GetPartition(); + UNIT_ASSERT(p.GetActive()); + UNIT_ASSERT(p.GetPartitionLocation().Defined()); + } + } + } } } diff --git a/ydb/public/sdk/cpp/client/ydb_topic/ut/local_partition_ut.cpp b/ydb/public/sdk/cpp/client/ydb_topic/ut/local_partition_ut.cpp index d99bb01a08ab..07de4d1d3d22 100644 --- a/ydb/public/sdk/cpp/client/ydb_topic/ut/local_partition_ut.cpp +++ b/ydb/public/sdk/cpp/client/ydb_topic/ut/local_partition_ut.cpp @@ -359,4 +359,4 @@ namespace NYdb::NTopic::NTests { writeSession->Close(); } } -} \ No newline at end of file +} diff --git a/ydb/services/lib/actors/pq_schema_actor.h b/ydb/services/lib/actors/pq_schema_actor.h index 0703cfa52795..b39ec377f58c 100644 --- a/ydb/services/lib/actors/pq_schema_actor.h +++ b/ydb/services/lib/actors/pq_schema_actor.h @@ -128,49 +128,44 @@ namespace NKikimr::NGRpcProxy::V1 { return false; }; - void SendDescribeProposeRequest(const NActors::TActorContext& ctx, bool showPrivate) { auto navigateRequest = std::make_unique(); - navigateRequest->DatabaseName = CanonizePath(Database); - - NSchemeCache::TSchemeCacheNavigate::TEntry entry; - entry.Path = NKikimr::SplitPath(GetTopicPath()); - entry.SyncVersion = true; - entry.ShowPrivatePath = showPrivate; - entry.Operation = NSchemeCache::TSchemeCacheNavigate::OpList; - navigateRequest->ResultSet.emplace_back(entry); - if (!SetRequestToken(navigateRequest.get())) { AddIssue(FillIssue("Unauthenticated access is forbidden, please provide credentials", Ydb::PersQueue::ErrorCode::ACCESS_DENIED)); return RespondWithCode(Ydb::StatusIds::UNAUTHORIZED); } + + navigateRequest->DatabaseName = CanonizePath(Database); + navigateRequest->ResultSet.emplace_back(NSchemeCache::TSchemeCacheNavigate::TEntry{ + .Path = NKikimr::SplitPath(GetTopicPath()), + .Access = CheckAccessWithWriteTopicPermission ? NACLib::UpdateRow : NACLib::DescribeSchema, + .Operation = NSchemeCache::TSchemeCacheNavigate::OpList, + .ShowPrivatePath = showPrivate, + .SyncVersion = true, + }); if (!IsDead) { ctx.Send(MakeSchemeCacheID(), new TEvTxProxySchemeCache::TEvNavigateKeySet(navigateRequest.release())); } } bool ReplyIfNotTopic(TEvTxProxySchemeCache::TEvNavigateKeySetResult::TPtr& ev) { - const NSchemeCache::TSchemeCacheNavigate* result = ev->Get()->Request.Get(); - Y_ABORT_UNLESS(result->ResultSet.size() == 1); - const auto& response = result->ResultSet.front(); - const TString path = JoinPath(response.Path); - - if (ev->Get()->Request.Get()->ResultSet.size() != 1 || - ev->Get()->Request.Get()->ResultSet.begin()->Kind != - NSchemeCache::TSchemeCacheNavigate::KindTopic) { - AddIssue(FillIssue(TStringBuilder() << "path '" << path << "' is not a topic", - Ydb::PersQueue::ErrorCode::VALIDATION_ERROR)); - RespondWithCode(Ydb::StatusIds::SCHEME_ERROR); - return true; + auto const& entries = ev->Get()->Request.Get()->ResultSet; + Y_ABORT_UNLESS(entries.size() == 1); + auto const& entry = entries.front(); + if (entry.Kind == NSchemeCache::TSchemeCacheNavigate::KindTopic) { + return false; } - return false; + AddIssue(FillIssue(TStringBuilder() << "path '" << JoinPath(entry.Path) << "' is not a topic", + Ydb::PersQueue::ErrorCode::VALIDATION_ERROR)); + RespondWithCode(Ydb::StatusIds::SCHEME_ERROR); + return true; } void Handle(TEvTxProxySchemeCache::TEvNavigateKeySetResult::TPtr& ev) { - const NSchemeCache::TSchemeCacheNavigate* result = ev->Get()->Request.Get(); - Y_ABORT_UNLESS(result->ResultSet.size() == 1); - const auto& response = result->ResultSet.front(); + auto const& entries = ev->Get()->Request.Get()->ResultSet; + Y_ABORT_UNLESS(entries.size() == 1); + const auto& response = entries.front(); const TString path = JoinPath(response.Path); switch (response.Status) { @@ -245,7 +240,6 @@ namespace NKikimr::NGRpcProxy::V1 { } } - void StateWork(TAutoPtr& ev) { switch (ev->GetTypeRewrite()) { hFunc(TEvTxProxySchemeCache::TEvNavigateKeySetResult, Handle); @@ -256,6 +250,7 @@ namespace NKikimr::NGRpcProxy::V1 { protected: bool IsDead = false; + bool CheckAccessWithWriteTopicPermission = false; const TString TopicPath; const TString Database; }; @@ -339,13 +334,13 @@ namespace NKikimr::NGRpcProxy::V1 { } bool SetRequestToken(NSchemeCache::TSchemeCacheNavigate* request) const override { - if (this->Request_->GetSerializedToken().empty()) { - return !(AppData()->PQConfig.GetRequireCredentialsInNewProtocol()); - } else { - request->UserToken = new NACLib::TUserToken(this->Request_->GetSerializedToken()); + if (auto const& token = this->Request_->GetSerializedToken()) { + request->UserToken = new NACLib::TUserToken(token); return true; } + return !(AppData()->PQConfig.GetRequireCredentialsInNewProtocol()); } + bool ProcessCdc(const NSchemeCache::TSchemeCacheNavigate::TEntry& response) override { if constexpr (THasCdcStreamCompatibility::Value) { if (static_cast(this)->IsCdcStreamCompatible()) { diff --git a/ydb/services/persqueue_v1/actors/schema_actors.cpp b/ydb/services/persqueue_v1/actors/schema_actors.cpp index 636f7b4e2041..b922c7f7a099 100644 --- a/ydb/services/persqueue_v1/actors/schema_actors.cpp +++ b/ydb/services/persqueue_v1/actors/schema_actors.cpp @@ -1319,8 +1319,9 @@ TDescribePartitionActor::TDescribePartitionActor(NKikimr::NGRpcService::IRequest { } -void TDescribePartitionActor::Bootstrap(const NActors::TActorContext& ctx) -{ +void TDescribePartitionActor::Bootstrap(const NActors::TActorContext& ctx) { + LOG_DEBUG_S(ctx, NKikimrServices::PQ_READ_PROXY, "TDescribePartitionActor" << ctx.SelfID.ToString() << ": Bootstrap"); + CheckAccessWithWriteTopicPermission = true; TBase::Bootstrap(ctx); SendDescribeProposeRequest(ctx); Become(&TDescribePartitionActor::StateWork); @@ -1328,6 +1329,14 @@ void TDescribePartitionActor::Bootstrap(const NActors::TActorContext& ctx) void TDescribePartitionActor::StateWork(TAutoPtr& ev) { switch (ev->GetTypeRewrite()) { + case TEvTxProxySchemeCache::TEvNavigateKeySetResult::EventType: + if (NeedToRequestWithDescribeSchema(ev)) { + // We do not have the UpdateRow permission. Check if we're allowed to DescribeSchema. + CheckAccessWithWriteTopicPermission = false; + SendDescribeProposeRequest(ActorContext()); + break; + } + [[fallthrough]]; default: if (!TDescribeTopicActorImpl::StateWork(ev, ActorContext())) { TBase::StateWork(ev); @@ -1335,14 +1344,35 @@ void TDescribePartitionActor::StateWork(TAutoPtr& ev) { } } -void TDescribePartitionActor::HandleCacheNavigateResponse( - TEvTxProxySchemeCache::TEvNavigateKeySetResult::TPtr& ev -) { - Y_ABORT_UNLESS(ev->Get()->Request.Get()->ResultSet.size() == 1); // describe for only one topic +// Return true if we need to send a second request to SchemeCache with DescribeSchema permission, +// because the first request checking the UpdateRow permission resulted in an AccessDenied error. +bool TDescribePartitionActor::NeedToRequestWithDescribeSchema(TAutoPtr& ev) { + if (!CheckAccessWithWriteTopicPermission) { + // We've already sent a request with DescribeSchema, ev is a response to it. + return false; + } + + auto evNav = *reinterpret_cast(&ev); + auto const& entries = evNav->Get()->Request.Get()->ResultSet; + Y_ABORT_UNLESS(entries.size() == 1); + + if (entries.front().Status != NSchemeCache::TSchemeCacheNavigate::EStatus::AccessDenied) { + // We do have access to the requested entity or there was an error. + // Transfer ownership to the ev pointer, and let the base classes' StateWork methods handle the response. + ev = *reinterpret_cast*>(&evNav); + return false; + } + + return true; +} + +void TDescribePartitionActor::HandleCacheNavigateResponse(TEvTxProxySchemeCache::TEvNavigateKeySetResult::TPtr& ev) { + auto const& entries = ev->Get()->Request.Get()->ResultSet; + Y_ABORT_UNLESS(entries.size() == 1); // describe for only one topic if (ReplyIfNotTopic(ev)) { return; } - PQGroupInfo = ev->Get()->Request->ResultSet[0].PQGroupInfo; + PQGroupInfo = entries[0].PQGroupInfo; auto* partRes = Result.mutable_partition(); partRes->set_partition_id(Settings.Partitions[0]); partRes->set_active(true); diff --git a/ydb/services/persqueue_v1/actors/schema_actors.h b/ydb/services/persqueue_v1/actors/schema_actors.h index 22af8dbeb6b8..6b37cb91138f 100644 --- a/ydb/services/persqueue_v1/actors/schema_actors.h +++ b/ydb/services/persqueue_v1/actors/schema_actors.h @@ -71,7 +71,7 @@ struct TDescribeTopicActorSettings { TVector Partitions; bool RequireStats = false; bool RequireLocation = false; - + TDescribeTopicActorSettings() : Mode(EMode::DescribeTopic) {} @@ -85,7 +85,7 @@ struct TDescribeTopicActorSettings { , RequireStats(requireStats) , RequireLocation(requireLocation) {} - + static TDescribeTopicActorSettings DescribeTopic(bool requireStats, bool requireLocation, const TVector& partitions = {}) { TDescribeTopicActorSettings res{EMode::DescribeTopic, requireStats, requireLocation}; res.Partitions = partitions; @@ -104,7 +104,7 @@ struct TDescribeTopicActorSettings { res.Partitions = partitions; return res; } - + static TDescribeTopicActorSettings DescribePartitionSettings(ui32 partition, bool stats, bool location) { TDescribeTopicActorSettings res{EMode::DescribePartitions, stats, location}; res.Partitions = {partition}; @@ -261,9 +261,13 @@ using TTabletInfo = TDescribeTopicActorImpl::TTabletInfo; void ApplyResponse(TTabletInfo& tabletInfo, NKikimr::TEvPersQueue::TEvStatusResponse::TPtr& ev, const TActorContext& ctx) override; void ApplyResponse(TTabletInfo& tabletInfo, NKikimr::TEvPersQueue::TEvReadSessionsInfoResponse::TPtr& ev, const TActorContext& ctx) override; bool ApplyResponse(TEvPersQueue::TEvGetPartitionsLocationResponse::TPtr& ev, const TActorContext& ctx) override; - + virtual void Reply(const TActorContext& ctx) override; +private: + + bool NeedToRequestWithDescribeSchema(TAutoPtr& ev); + private: TIntrusiveConstPtr PQGroupInfo; Ydb::Topic::DescribePartitionResult Result; From 43a34f766196bacc344bf9698ece71f0f95863c2 Mon Sep 17 00:00:00 2001 From: kungurtsev Date: Sat, 27 Apr 2024 11:05:52 +0200 Subject: [PATCH 027/110] Fix DataShard BuildStats error handling (#4160) --- ydb/core/tx/datashard/datashard__stats.cpp | 18 ++++++- ydb/core/tx/datashard/datashard_impl.h | 26 ++++++++++ ydb/core/tx/datashard/datashard_ut_stats.cpp | 54 +++++++++++++++++++- 3 files changed, 96 insertions(+), 2 deletions(-) diff --git a/ydb/core/tx/datashard/datashard__stats.cpp b/ydb/core/tx/datashard/datashard__stats.cpp index d19a415740f4..a7e09d8ffe02 100644 --- a/ydb/core/tx/datashard/datashard__stats.cpp +++ b/ydb/core/tx/datashard/datashard__stats.cpp @@ -179,7 +179,6 @@ class TAsyncTableStatsBuilder : public TActorBootstrappedSender); + + auto msg = ev->Get(); + + LOG_ERROR_S(ctx, NKikimrServices::TX_DATASHARD, "Stats rebuilt error '" << msg->Message + << "', code: " << ui32(msg->Code) << ", datashard " << TabletID() << ", tableId " << msg->TableId); + + auto it = TableInfos.find(msg->TableId); + if (it != TableInfos.end()) { + it->second->StatsUpdateInProgress = false; + // if we have got an error, a compaction should have happened so restart build stats anyway + it->second->StatsNeedUpdate = true; + } +} class TDataShard::TTxInitiateStatsUpdate : public NTabletFlatExecutor::TTransactionBase { private: diff --git a/ydb/core/tx/datashard/datashard_impl.h b/ydb/core/tx/datashard/datashard_impl.h index 71847b2ef22c..37619b2d51d0 100644 --- a/ydb/core/tx/datashard/datashard_impl.h +++ b/ydb/core/tx/datashard/datashard_impl.h @@ -364,6 +364,7 @@ class TDataShard EvConfirmReadonlyLease, EvReadonlyLeaseConfirmation, EvPlanPredictedTxs, + EvTableStatsError, EvEnd }; @@ -400,6 +401,29 @@ class TDataShard ui64 SearchHeight = 0; }; + struct TEvTableStatsError : public TEventLocal { + enum class ECode { + FETCH_PAGE_FAILED, + RESOURCE_ALLOCATION_FAILED, + ACTOR_DIED, + UNKNOWN + }; + + TEvTableStatsError(ui64 tableId, ECode code, const TString& msg) + : TableId(tableId) + , Code(code) + , Message(msg) + {} + + TEvTableStatsError(ui64 tableId, ECode code) + : TEvTableStatsError(tableId, code, "") + {} + + const ui64 TableId; + const ECode Code; + const TString Message; + }; + struct TEvRemoveOldInReadSets : public TEventLocal {}; struct TEvRegisterScanActor : public TEventLocal { @@ -1248,6 +1272,7 @@ class TDataShard void Handle(TEvDataShard::TEvSplitPartitioningChanged::TPtr& ev, const TActorContext& ctx); void Handle(TEvDataShard::TEvGetTableStats::TPtr& ev, const TActorContext& ctx); void Handle(TEvPrivate::TEvAsyncTableStats::TPtr& ev, const TActorContext& ctx); + void Handle(TEvPrivate::TEvTableStatsError::TPtr& ev, const TActorContext& ctx); void Handle(TEvDataShard::TEvKqpScan::TPtr& ev, const TActorContext& ctx); void HandleSafe(TEvDataShard::TEvKqpScan::TPtr& ev, const TActorContext& ctx); void Handle(TEvDataShard::TEvUploadRowsRequest::TPtr& ev, const TActorContext& ctx); @@ -2945,6 +2970,7 @@ class TDataShard HFunc(TEvDataShard::TEvSplitPartitioningChanged, Handle); HFunc(TEvDataShard::TEvGetTableStats, Handle); HFunc(TEvPrivate::TEvAsyncTableStats, Handle); + HFunc(TEvPrivate::TEvTableStatsError, Handle); HFunc(TEvDataShard::TEvKqpScan, Handle); HFunc(TEvDataShard::TEvUploadRowsRequest, Handle); HFunc(TEvDataShard::TEvEraseRowsRequest, Handle); diff --git a/ydb/core/tx/datashard/datashard_ut_stats.cpp b/ydb/core/tx/datashard/datashard_ut_stats.cpp index f8907f5ccbde..780fd911652e 100644 --- a/ydb/core/tx/datashard/datashard_ut_stats.cpp +++ b/ydb/core/tx/datashard/datashard_ut_stats.cpp @@ -1,5 +1,4 @@ #include -#include "datashard_ut_common_kqp.h" #include "ydb/core/tablet_flat/shared_sausagecache.h" namespace NKikimr { @@ -378,6 +377,59 @@ Y_UNIT_TEST_SUITE(DataShardStats) { UNIT_ASSERT_LE(counters->ActiveBytes->Val(), 800*1024); // one index } + Y_UNIT_TEST(NoData) { + TPortManager pm; + TServerSettings serverSettings(pm.GetPort(2134)); + serverSettings.SetDomainName("Root") + .SetUseRealThreads(false); + + TServer::TPtr server = new TServer(serverSettings); + auto& runtime = *server->GetRuntime(); + auto sender = runtime.AllocateEdgeActor(); + + runtime.SetLogPriority(NKikimrServices::TX_DATASHARD, NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::TABLET_SAUSAGECACHE, NLog::PRI_TRACE); + + InitRoot(server, sender); + + auto [shards, tableId1] = CreateShardedTable(server, sender, "/Root", "table-1", 1); + const auto shard1 = GetTableShards(server, sender, "/Root/table-1").at(0); + + ExecSQL(server, sender, "UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 1), (2, 2), (3, 3)"); + + bool captured = false; + auto observer = runtime.AddObserver([&](NSharedCache::TEvResult::TPtr& event) { + IActor *actor = runtime.FindActor(event->Recipient); + + Cerr << "Got SchemeShard NSharedCache::TEvResult from " << event->Sender << " to " << event->Recipient << "(" << actor->GetActivityType() << ")"<< Endl; + + if (actor && actor->GetActivityType() == 288) { + auto& message = *event->Get(); + event.Reset(static_cast *>( + new IEventHandle(event->Recipient, event->Sender, + new NSharedCache::TEvResult(message.Origin, message.Cookie, NKikimrProto::NODATA)))); + captured = true; + } + }); + + CompactTable(runtime, shard1, tableId1, false); + + for (int i = 0; i < 5 && !captured; ++i) { + TDispatchOptions options; + options.CustomFinalCondition = [&]() { return captured; }; + runtime.DispatchEvents(options, TDuration::Seconds(5)); + } + observer.Remove(); + + { + Cerr << "Waiting stats.." << Endl; + auto stats = WaitTableStats(runtime, 1); + UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); + UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 3); + UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 1); + } + } + } // Y_UNIT_TEST_SUITE(DataShardStats) } // namespace NKikimr From eae74a3159af822cf838624befef825c7ca2a815 Mon Sep 17 00:00:00 2001 From: azevaykin <145343289+azevaykin@users.noreply.github.com> Date: Thu, 2 May 2024 14:50:33 +0300 Subject: [PATCH 028/110] Fix race between callback and destructor (#1745) (#4222) Co-authored-by: DimasKovas <34828390+DimasKovas@users.noreply.github.com> --- ydb/core/wrappers/s3_storage.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ydb/core/wrappers/s3_storage.h b/ydb/core/wrappers/s3_storage.h index 4cbb58687f21..d678f237616e 100644 --- a/ydb/core/wrappers/s3_storage.h +++ b/ydb/core/wrappers/s3_storage.h @@ -67,9 +67,7 @@ class TS3ExternalStorage: public IExternalStorageOperator, TS3User { Y_DEFER { std::unique_lock guard(RunningQueriesMutex); --RunningQueriesCount; - bool needNotify = (RunningQueriesCount == 0); - guard.unlock(); - if (needNotify) { + if (RunningQueriesCount == 0) { RunningQueriesNotifier.notify_all(); } }; From be2fb177f515948efdb5fe5b6a5cde2ec7b519da Mon Sep 17 00:00:00 2001 From: Sergey Veselov Date: Thu, 2 May 2024 19:42:06 +0300 Subject: [PATCH 029/110] fix broken counters in YMQ (#4241) --- ydb/core/ymq/actor/action.h | 3 +- ydb/core/ymq/actor/queue_leader.cpp | 7 ++--- .../sqs/common/test_queue_counters.py | 31 +++++++++++++++++++ 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/ydb/core/ymq/actor/action.h b/ydb/core/ymq/actor/action.h index a594f5eafee4..7efa47407050 100644 --- a/ydb/core/ymq/actor/action.h +++ b/ydb/core/ymq/actor/action.h @@ -252,6 +252,8 @@ class TActionActor auto* detailedCounters = UserCounters_ ? UserCounters_->GetDetailedCounters() : nullptr; const size_t errors = ErrorsCount(Response_, detailedCounters ? &detailedCounters->APIStatuses : nullptr); + FinishTs_ = TActivationContext::Now(); + const TDuration duration = GetRequestDuration(); const TDuration workingDuration = GetRequestWorkingDuration(); if (QueueLeader_ && (IsActionForQueue(Action_) || IsActionForQueueYMQ(Action_))) { @@ -287,7 +289,6 @@ class TActionActor } } - FinishTs_ = TActivationContext::Now(); if (IsRequestSlow()) { PrintSlowRequestWarning(); } diff --git a/ydb/core/ymq/actor/queue_leader.cpp b/ydb/core/ymq/actor/queue_leader.cpp index 67fe38b66f47..ee5cca542196 100644 --- a/ydb/core/ymq/actor/queue_leader.cpp +++ b/ydb/core/ymq/actor/queue_leader.cpp @@ -1189,12 +1189,13 @@ void TQueueLeader::WaitAddMessagesToInflyOrTryAnotherShard(TReceiveMessageBatchR void TQueueLeader::Reply(TReceiveMessageBatchRequestProcessing& reqInfo) { const ui64 shard = reqInfo.GetCurrentShard(); if (!reqInfo.Answer->Failed && !reqInfo.Answer->OverLimit) { - int receiveCount = 0; int messageCount = 0; ui64 bytesRead = 0; for (auto& message : reqInfo.Answer->Messages) { - receiveCount += message.ReceiveCount; + COLLECT_HISTOGRAM_COUNTER(Counters_, MessageReceiveAttempts, message.ReceiveCount); + COLLECT_HISTOGRAM_COUNTER(Counters_, receive_attempts_count_rate, message.ReceiveCount); + messageCount++; bytesRead += message.Data.size(); @@ -1204,8 +1205,6 @@ void TQueueLeader::Reply(TReceiveMessageBatchRequestProcessing& reqInfo) { } if (messageCount > 0) { - COLLECT_HISTOGRAM_COUNTER(Counters_, MessageReceiveAttempts, receiveCount); - COLLECT_HISTOGRAM_COUNTER(Counters_, receive_attempts_count_rate, receiveCount); ADD_COUNTER_COUPLE(Counters_, ReceiveMessage_Count, received_count_per_second, messageCount); ADD_COUNTER_COUPLE(Counters_, ReceiveMessage_BytesRead, received_bytes_per_second, bytesRead); } diff --git a/ydb/tests/functional/sqs/common/test_queue_counters.py b/ydb/tests/functional/sqs/common/test_queue_counters.py index f4e133bc19fb..7e2fc97c1204 100644 --- a/ydb/tests/functional/sqs/common/test_queue_counters.py +++ b/ydb/tests/functional/sqs/common/test_queue_counters.py @@ -2,6 +2,8 @@ # -*- coding: utf-8 -*- from ydb.tests.library.sqs.test_base import KikimrSqsTestBase +from ydb.tests.library.sqs.requests_client import SqsSendMessageParams + class TestSqsGettingCounters(KikimrSqsTestBase): @@ -153,3 +155,32 @@ def test_purge_queue_counters(self): 'sensor': 'MessagesPurged', }) assert purged_derivative > 0 + + def test_action_duration_being_not_immediate(self): + queue_url = self._create_queue_and_assert(self.queue_name, False, True) + + for i in range(100): + message_payload = "foobar" + str(i) + self._sqs_api.send_message(queue_url, message_payload) + self._read_while_not_empty(queue_url, 1) + + sqs_counters = self._get_sqs_counters() + + durations = self._get_counter(sqs_counters, { + 'queue': self.queue_name, + 'sensor': 'ReceiveMessage_Duration', + }) + buckets_longer_than_5ms = durations['hist']['buckets'][1:] + assert any(map(lambda x: x > 0, buckets_longer_than_5ms)) + + def test_receive_attempts_are_counted_separately_for_messages_in_one_batch(self): + queue_url = self._create_queue_and_assert(self.queue_name, False, True) + self._sqs_api.send_message_batch(queue_url, [SqsSendMessageParams('data0'), SqsSendMessageParams('data1')]) + self._read_while_not_empty(queue_url, 2) + + sqs_counters = self._get_sqs_counters() + message_receive_attempts = self._get_counter(sqs_counters, { + 'queue': self.queue_name, + 'sensor': 'MessageReceiveAttempts', + }) + assert message_receive_attempts['hist']['buckets'][0] == 2 From ec017a134c1613667016d019ddee36751e17b594 Mon Sep 17 00:00:00 2001 From: Daniil Cherednik Date: Mon, 6 May 2024 12:40:49 +0200 Subject: [PATCH 030/110] Fix viewer content type header parsing (#4205) (#4280) Changelog entry According to HTTP 1.1 header name must be case insensitive Changelog category Bugfix --- ydb/core/viewer/json_query.h | 15 ++------------- ydb/core/viewer/viewer_request.cpp | 17 +++++++++++++++++ ydb/core/viewer/viewer_request.h | 1 + 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/ydb/core/viewer/json_query.h b/ydb/core/viewer/json_query.h index 70ee72849501..5ff21f9782d0 100644 --- a/ydb/core/viewer/json_query.h +++ b/ydb/core/viewer/json_query.h @@ -1,6 +1,5 @@ #pragma once #include "viewer.h" -#include #include #include #include @@ -12,7 +11,6 @@ #include #include #include -//#include #include #include #include "json_pipe_req.h" @@ -102,17 +100,8 @@ class TJsonQuery : public TViewerPipeClient { } } - bool IsPostContent() { - if (Event->Get()->Request.GetMethod() == HTTP_METHOD_POST) { - const THttpHeaders& headers = Event->Get()->Request.GetHeaders(); - auto itContentType = FindIf(headers, [](const auto& header) { return header.Name() == "Content-Type"; }); - if (itContentType != headers.end()) { - TStringBuf contentTypeHeader = itContentType->Value(); - TStringBuf contentType = contentTypeHeader.NextTok(';'); - return contentType == "application/json"; - } - } - return false; + bool IsPostContent() const { + return NViewer::IsPostContent(Event); } TJsonQuery(IViewer* viewer, NMon::TEvHttpInfo::TPtr& ev) diff --git a/ydb/core/viewer/viewer_request.cpp b/ydb/core/viewer/viewer_request.cpp index ef8892d78777..ee4ebb7054e1 100644 --- a/ydb/core/viewer/viewer_request.cpp +++ b/ydb/core/viewer/viewer_request.cpp @@ -83,5 +83,22 @@ IActor* CreateViewerRequestHandler(TEvViewer::TEvViewerRequest::TPtr& request) { return nullptr; } +bool IsPostContent(const NMon::TEvHttpInfo::TPtr& event) { + if (event->Get()->Request.GetMethod() == HTTP_METHOD_POST) { + const THttpHeaders& headers = event->Get()->Request.GetHeaders(); + + auto itContentType = FindIf(headers, [](const auto& header) { + return AsciiEqualsIgnoreCase(header.Name(), "Content-Type"); + }); + + if (itContentType != headers.end()) { + TStringBuf contentTypeHeader = itContentType->Value(); + TStringBuf contentType = contentTypeHeader.NextTok(';'); + return contentType == "application/json"; + } + } + return false; +} + } } diff --git a/ydb/core/viewer/viewer_request.h b/ydb/core/viewer/viewer_request.h index b8b9f0f74767..6516dbb59d18 100644 --- a/ydb/core/viewer/viewer_request.h +++ b/ydb/core/viewer/viewer_request.h @@ -38,6 +38,7 @@ union ViewerWhiteboardCookie { }; IActor* CreateViewerRequestHandler(TEvViewer::TEvViewerRequest::TPtr& request); +bool IsPostContent(const NMon::TEvHttpInfo::TPtr& event); } } From 11b0174cbe2f148a4a9d03cbbf13feab37f9b3fe Mon Sep 17 00:00:00 2001 From: Vitalii Gridnev Date: Mon, 6 May 2024 23:44:54 +0300 Subject: [PATCH 031/110] Merge default related changes to stable-24-1 (#4334) Co-authored-by: Daniil Cherednik --- ydb/core/kqp/provider/yql_kikimr_datasink.cpp | 162 +++++++++--- ydb/core/kqp/provider/yql_kikimr_exec.cpp | 8 +- ydb/core/kqp/provider/yql_kikimr_provider.cpp | 78 +++++- .../kqp/provider/yql_kikimr_provider_impl.h | 3 +- ydb/core/kqp/provider/yql_kikimr_type_ann.cpp | 246 +++++++++--------- ydb/core/kqp/ut/pg/kqp_pg_ut.cpp | 3 +- ydb/core/kqp/ut/query/kqp_query_ut.cpp | 53 +++- ydb/core/kqp/ut/scheme/kqp_constraints_ut.cpp | 204 +++++++++++++++ 8 files changed, 578 insertions(+), 179 deletions(-) diff --git a/ydb/core/kqp/provider/yql_kikimr_datasink.cpp b/ydb/core/kqp/provider/yql_kikimr_datasink.cpp index b035743a5a31..5c17b5891341 100644 --- a/ydb/core/kqp/provider/yql_kikimr_datasink.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_datasink.cpp @@ -511,6 +511,114 @@ class TKikimrDataSink : public TDataProviderBase return false; } + bool IsEvaluatedDefaultNode(TExprNode::TPtr input) { + auto node = TExprBase(input); + + if (node.Maybe()) { + return true; + } + + if (input->IsCallable() + && input->Content() == "PgCast" + && input->ChildrenSize() >= 1 + && TExprBase(input->Child(0)).Maybe()) + { + return true; + } + + if (node.Maybe()) { + return true; + } + + if (node.Maybe()) { + return true; + } + + if (auto maybeJust = node.Maybe()) { + return IsEvaluatedDefaultNode(maybeJust.Cast().Input().Ptr()); + } + + if (node.Maybe()) { + return true; + } + + if (node.Maybe()) { + return true; + } + + if (node.Maybe()) { + return true; + } + + if (node.Maybe()) { + return true; + } + + return false; + } + + bool CanEvaluateDefaultValue(TExprNode::TPtr input) { + if (IsEvaluatedDefaultNode(input)) { + return true; + } + + static const THashSet allowedNodes = { + "Concat", "Just", "Optional", "SafeCast", "AsList", + "+", "-", "*", "/", "%", "PgCast"}; + + if (input->IsCallable("PgCast") && input->Child(0)->IsCallable("PgConst")) { + return true; + } + + if (input->IsCallable(allowedNodes)) { + for (size_t i = 0; i < input->ChildrenSize(); i++) { + auto callableInput = input->Child(i); + if (!CanEvaluateDefaultValue(callableInput)) { + return false; + } + } + return true; + } + + return false; + } + + bool ShouldEvaluateDefaultValue(TExprNode::TPtr input) { + if (IsEvaluatedDefaultNode(input)) { + return false; + } + + return CanEvaluateDefaultValue(input); + } + + bool EvaluateDefaultValuesIfNeeded(TExprContext& ctx, TExprList columns) { + bool exprEvalNeeded = false; + for(auto item: columns) { + auto columnTuple = item.Cast(); + if (columnTuple.Size() > 2) { + const auto& columnConstraints = columnTuple.Item(2).Cast(); + for(const auto& constraint: columnConstraints.Value().Cast()) { + if (constraint.Name().Value() != "default") + continue; + + YQL_ENSURE(constraint.Value().IsValid()); + + if (ShouldEvaluateDefaultValue(constraint.Value().Cast().Ptr())) { + auto evaluatedExpr = ctx.Builder(constraint.Value().Cast().Ptr()->Pos()) + .Callable("EvaluateExpr") + .Add(0, constraint.Value().Cast().Ptr()) + .Seal() + .Build(); + + constraint.Ptr()->ChildRef(TCoNameValueTuple::idx_Value) = evaluatedExpr; + exprEvalNeeded = true; + } + } + } + } + return exprEvalNeeded; + } + static TExprNode::TPtr MakeKiDropTable(const TExprNode::TPtr& node, const NCommon::TWriteTableSettings& settings, const TKikimrKey& key, TExprContext& ctx) { @@ -809,39 +917,7 @@ class TKikimrDataSink : public TDataProviderBase .Build() .Done(); - bool exprEvalNeeded = false; - - for(auto item: createTable.Cast().Columns()) { - auto columnTuple = item.Cast(); - if (columnTuple.Size() > 2) { - const auto& columnConstraints = columnTuple.Item(2).Cast(); - for(const auto& constraint: columnConstraints.Value().Cast()) { - if (constraint.Name().Value() != "default") - continue; - - YQL_ENSURE(constraint.Value().IsValid()); - bool shouldEvaluate = ( - constraint.Value().Cast().Ptr()->IsCallable() && - (constraint.Value().Cast().Ptr()->Content() == "PgCast") && - (constraint.Value().Cast().Ptr()->ChildrenSize() >= 1) && - (constraint.Value().Cast().Ptr()->Child(0)->IsCallable()) && - (constraint.Value().Cast().Ptr()->Child(0)->Content() == "PgConst") - ); - - if (shouldEvaluate) { - auto evaluatedExpr = ctx.Builder(constraint.Value().Cast().Ptr()->Pos()) - .Callable("EvaluateExpr") - .Add(0, constraint.Value().Cast().Ptr()) - .Seal() - .Build(); - - constraint.Ptr()->ChildRef(TCoNameValueTuple::idx_Value) = evaluatedExpr; - exprEvalNeeded = true; - } - } - } - } - + bool exprEvalNeeded = EvaluateDefaultValuesIfNeeded(ctx, createTable.Cast().Columns()); if (exprEvalNeeded) { ctx.Step.Repeat(TExprStep::ExprEval); } @@ -858,15 +934,27 @@ class TKikimrDataSink : public TDataProviderBase YQL_ENSURE(settings.AlterActions); YQL_ENSURE(!settings.AlterActions.Cast().Empty()); - - return Build(ctx, node->Pos()) + auto alterTable = Build(ctx, node->Pos()) .World(node->Child(0)) .DataSink(node->Child(1)) .Table().Build(key.GetTablePath()) .Actions(settings.AlterActions.Cast()) .TableType(tableType) - .Done() - .Ptr(); + .Done(); + + bool exprEvalNeeded = false; + for (const auto& action : alterTable.Actions()) { + auto name = action.Name().Value(); + if (name == "addColumns") { + exprEvalNeeded |= EvaluateDefaultValuesIfNeeded(ctx, action.Value().Cast()); + } + } + + if (exprEvalNeeded) { + ctx.Step.Repeat(TExprStep::ExprEval); + } + + return alterTable.Ptr(); } else if (mode == "drop" || mode == "drop_if_exists") { return MakeKiDropTable(node, settings, key, ctx); diff --git a/ydb/core/kqp/provider/yql_kikimr_exec.cpp b/ydb/core/kqp/provider/yql_kikimr_exec.cpp index cfb96efa16ab..140a68cdcae9 100644 --- a/ydb/core/kqp/provider/yql_kikimr_exec.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_exec.cpp @@ -1104,8 +1104,14 @@ class TKiSinkCallableExecutionTransformer : public TAsyncCallbackTransformerSetColumnName(TString(columnName)); - FillLiteralProto(constraint.Value().Cast(), *columnBuild->mutable_default_from_literal()); + auto err = FillLiteralProto(constraint.Value().Cast(), actualType, *columnBuild->mutable_default_from_literal()); + if (err) { + ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), err.value())); + return SyncError(); + } + hasDefaultValue = true; + } else if (constraint.Name().Value() == "not_null") { if (columnBuild == nullptr) { columnBuild = indexBuildSettings.mutable_column_build_operation()->add_column(); diff --git a/ydb/core/kqp/provider/yql_kikimr_provider.cpp b/ydb/core/kqp/provider/yql_kikimr_provider.cpp index bbc5a9f534f0..8ba5403aa7ca 100644 --- a/ydb/core/kqp/provider/yql_kikimr_provider.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_provider.cpp @@ -531,6 +531,7 @@ TVector TableOperationsToProto(const TKiOperationList& o return protoOps; } +// Is used only for key types now template void FillLiteralProtoImpl(const NNodes::TCoDataCtor& literal, TProto& proto) { auto type = literal.Ref().GetTypeAnn(); @@ -562,6 +563,7 @@ void FillLiteralProtoImpl(const NNodes::TCoDataCtor& literal, TProto& proto) { case EDataSlot::Datetime: protoValue.SetUint32(FromString(value)); break; + case EDataSlot::Int8: case EDataSlot::Int32: protoValue.SetInt32(FromString(value)); break; @@ -578,8 +580,18 @@ void FillLiteralProtoImpl(const NNodes::TCoDataCtor& literal, TProto& proto) { protoValue.SetBytes(value.Data(), value.Size()); break; case EDataSlot::Utf8: + case EDataSlot::Json: protoValue.SetText(ToString(value)); break; + case EDataSlot::Double: + protoValue.SetDouble(FromString(value)); + break; + case EDataSlot::Float: + protoValue.SetFloat(FromString(value)); + break; + case EDataSlot::Yson: + protoValue.SetBytes(ToString(value)); + break; case EDataSlot::Decimal: { const auto paramsDataType = type->Cast(); auto precision = FromString(paramsDataType->GetParamOne()); @@ -603,8 +615,56 @@ void FillLiteralProto(const NNodes::TCoDataCtor& literal, NKqpProto::TKqpPhyLite FillLiteralProtoImpl(literal, proto); } -void FillLiteralProto(const NNodes::TCoDataCtor& literal, NKikimrMiniKQL::TResult& proto) { - FillLiteralProtoImpl(literal, proto); +bool IsPgNullExprNode(const NNodes::TExprBase& maybeLiteral) { + return maybeLiteral.Ptr()->IsCallable() && + maybeLiteral.Ptr()->Content() == "PgCast" && maybeLiteral.Ptr()->ChildrenSize() >= 1 && + maybeLiteral.Ptr()->Child(0)->IsCallable() && maybeLiteral.Ptr()->Child(0)->Content() == "Null"; +} + +std::optional FillLiteralProto(NNodes::TExprBase maybeLiteral, const TTypeAnnotationNode* valueType, Ydb::TypedValue& proto) +{ + if (auto maybeJust = maybeLiteral.Maybe()) { + maybeLiteral = maybeJust.Cast().Input(); + } + + if (auto literal = maybeLiteral.Maybe()) { + FillLiteralProto(literal.Cast(), proto); + return std::nullopt; + } + + const bool isPgNull = IsPgNullExprNode(maybeLiteral); + if (maybeLiteral.Maybe() || isPgNull) { + YQL_ENSURE(valueType); + auto actualPgType = valueType->Cast(); + YQL_ENSURE(actualPgType); + + auto* typeDesc = NKikimr::NPg::TypeDescFromPgTypeId(actualPgType->GetId()); + if (!typeDesc) { + return TStringBuilder() << "Failed to parse default expr typename " << actualPgType->GetName(); + } + + if (isPgNull) { + proto.mutable_value()->set_null_flag_value(NProtoBuf::NULL_VALUE); + } else { + YQL_ENSURE(maybeLiteral.Maybe()); + auto pgConst = maybeLiteral.Cast(); + TString content = TString(pgConst.Value().Value()); + auto parseResult = NKikimr::NPg::PgNativeBinaryFromNativeText(content, typeDesc); + if (parseResult.Error) { + return TStringBuilder() << "Failed to parse default expr for typename " << actualPgType->GetName() + << ", error reason: " << *parseResult.Error; + } + + proto.mutable_value()->set_bytes_value(parseResult.Str); + } + + auto* pg = proto.mutable_type()->mutable_pg_type(); + pg->set_type_name(NKikimr::NPg::PgTypeNameFromTypeDesc(typeDesc)); + pg->set_oid(NKikimr::NPg::PgTypeIdFromTypeDesc(typeDesc)); + return std::nullopt; + } + + return TStringBuilder() << "Unsupported type of literal: " << maybeLiteral.Ptr()->Content(); } void FillLiteralProto(const NNodes::TCoDataCtor& literal, Ydb::TypedValue& proto) @@ -617,8 +677,7 @@ void FillLiteralProto(const NNodes::TCoDataCtor& literal, Ydb::TypedValue& proto auto slot = type->Cast()->GetSlot(); auto typeId = NKikimr::NUdf::GetDataTypeInfo(slot).TypeId; - YQL_ENSURE(NKikimr::NScheme::NTypeIds::IsYqlType(typeId) && - NKikimr::NSchemeShard::IsAllowedKeyType(NKikimr::NScheme::TTypeInfo(typeId))); + YQL_ENSURE(NKikimr::NScheme::NTypeIds::IsYqlType(typeId)); auto& protoType = *proto.mutable_type(); auto& protoValue = *proto.mutable_value(); @@ -637,6 +696,7 @@ void FillLiteralProto(const NNodes::TCoDataCtor& literal, Ydb::TypedValue& proto case EDataSlot::Datetime: protoValue.set_uint32_value(FromString(value)); break; + case EDataSlot::Int8: case EDataSlot::Int32: protoValue.set_int32_value(FromString(value)); break; @@ -653,8 +713,18 @@ void FillLiteralProto(const NNodes::TCoDataCtor& literal, Ydb::TypedValue& proto protoValue.set_bytes_value(value.Data(), value.Size()); break; case EDataSlot::Utf8: + case EDataSlot::Json: protoValue.set_text_value(ToString(value)); break; + case EDataSlot::Double: + protoValue.set_double_value(FromString(value)); + break; + case EDataSlot::Float: + protoValue.set_float_value(FromString(value)); + break; + case EDataSlot::Yson: + protoValue.set_bytes_value(ToString(value)); + break; case EDataSlot::Decimal: { const auto paramsDataType = type->Cast(); auto precision = FromString(paramsDataType->GetParamOne()); diff --git a/ydb/core/kqp/provider/yql_kikimr_provider_impl.h b/ydb/core/kqp/provider/yql_kikimr_provider_impl.h index 71781fd89c0a..4ff9fe205c73 100644 --- a/ydb/core/kqp/provider/yql_kikimr_provider_impl.h +++ b/ydb/core/kqp/provider/yql_kikimr_provider_impl.h @@ -224,7 +224,8 @@ void TableDescriptionToTableInfo(const TKikimrTableDescription& desc, TYdbOperat void TableDescriptionToTableInfo(const TKikimrTableDescription& desc, TYdbOperation op, TVector& infos); -void FillLiteralProto(const NNodes::TCoDataCtor& literal, NKikimrMiniKQL::TResult& proto); +bool IsPgNullExprNode(const NNodes::TExprBase& maybeLiteral); +std::optional FillLiteralProto(NNodes::TExprBase maybeLiteral, const TTypeAnnotationNode* valueType, Ydb::TypedValue& proto); void FillLiteralProto(const NNodes::TCoDataCtor& literal, Ydb::TypedValue& proto); // todo gvit switch to ydb typed value. void FillLiteralProto(const NNodes::TCoDataCtor& literal, NKqpProto::TKqpPhyLiteralValue& proto); diff --git a/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp b/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp index 9204f469758d..d5d5b95754bd 100644 --- a/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp @@ -293,6 +293,110 @@ namespace { } return true; } + + bool ParseConstraintNode(TExprContext& ctx, TKikimrColumnMetadata& columnMeta, const TExprList& columnTuple, TCoNameValueTuple constraint, TKikimrConfiguration& config, bool& needEval, bool isAlter = false) { + auto nameNode = columnTuple.Item(0).Cast(); + auto typeNode = columnTuple.Item(1); + + auto columnName = TString(nameNode.Value()); + auto columnType = typeNode.Ref().GetTypeAnn(); + auto type = columnType->Cast()->GetType(); + auto isOptional = type->GetKind() == ETypeAnnotationKind::Optional; + auto actualType = !isOptional ? type : type->Cast()->GetItemType(); + if (constraint.Name() == "default") { + auto defaultType = constraint.Value().Ref().GetTypeAnn(); + YQL_ENSURE(constraint.Value().IsValid()); + TExprBase constrValue = constraint.Value().Cast(); + + if (!config.EnableColumnsWithDefault) { + ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), + "Columns with default values are not supported yet.")); + return false; + } + + const bool isNull = IsPgNullExprNode(constrValue) || defaultType->HasNull(); + if (isNull && columnMeta.NotNull) { + ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), TStringBuilder() << "Default expr " << columnName + << " is nullable or optional, but column has not null constraint. ")); + return false; + } + + // unwrap optional + if (defaultType->GetKind() == ETypeAnnotationKind::Optional) { + defaultType = defaultType->Cast()->GetItemType(); + } + + if (defaultType->GetKind() != actualType->GetKind()) { + ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), TStringBuilder() << "Default expr " << columnName + << " type mismatch, expected: " << (*actualType) << ", actual: " << *(defaultType))); + return false; + } + + bool skipAnnotationValidation = false; + if (defaultType->GetKind() == ETypeAnnotationKind::Pg) { + auto defaultPgType = defaultType->Cast(); + if (defaultPgType->GetName() == "unknown") { + skipAnnotationValidation = true; + } + } + + if (!skipAnnotationValidation && !IsSameAnnotation(*defaultType, *actualType)) { + auto constrPtr = constraint.Value().Cast().Ptr(); + auto status = TryConvertTo(constrPtr, *type, ctx); + if (status == IGraphTransformer::TStatus::Error) { + ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), TStringBuilder() << "Default expr " << columnName + << " type mismatch, expected: " << (*actualType) << ", actual: " << *(defaultType))); + return false; + } else if (status == IGraphTransformer::TStatus::Repeat) { + auto evaluatedExpr = ctx.Builder(constrPtr->Pos()) + .Callable("EvaluateExpr") + .Add(0, constrPtr) + .Seal() + .Build(); + + constraint.Ptr()->ChildRef(TCoNameValueTuple::idx_Value) = evaluatedExpr; + needEval = true; + return true; + } + } + + if (columnMeta.IsDefaultKindDefined()) { + ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), TStringBuilder() << "Default setting for " << columnName + << " column is already set: " + << NKikimrKqp::TKqpColumnMetadataProto::EDefaultKind_Name(columnMeta.DefaultKind))); + return false; + } + + columnMeta.SetDefaultFromLiteral(); + auto err = FillLiteralProto(constrValue, actualType, columnMeta.DefaultFromLiteral); + if (err) { + ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), err.value())); + return false; + } + + } else if (constraint.Name().Value() == "serial") { + if (isAlter) { + ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), + "Column addition with serial data type is unsupported")); + return false; + } + + if (columnMeta.IsDefaultKindDefined()) { + ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), TStringBuilder() << "Default setting for " + << columnName << " column is already set: " + << NKikimrKqp::TKqpColumnMetadataProto::EDefaultKind_Name(columnMeta.DefaultKind))); + return false; + } + + columnMeta.DefaultFromSequence = "_serial_column_" + columnMeta.Name; + columnMeta.SetDefaultFromSequence(); + columnMeta.NotNull = true; + } else if (constraint.Name().Value() == "not_null") { + columnMeta.NotNull = true; + } + + return true; + } } class TKiSinkTypeAnnotationTransformer : public TKiSinkVisitorTransformer @@ -777,119 +881,14 @@ virtual TStatus HandleCreateTable(TKiCreateTable create, TExprContext& ctx) over if (columnTuple.Size() > 2) { const auto& columnConstraints = columnTuple.Item(2).Cast(); for(const auto& constraint: columnConstraints.Value().Cast()) { - if (constraint.Name().Value() == "default") { - auto defaultType = constraint.Value().Ref().GetTypeAnn(); - - if (!SessionCtx->Config().EnableColumnsWithDefault) { - ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), - "Columns with default values are not supported yet.")); - return TStatus::Error; - } - - if (defaultType->HasNull() && columnMeta.NotNull) { - ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), TStringBuilder() << "Default expr " << columnName - << " is nullable or optional, but column has not null constraint. ")); - return TStatus::Error; - } - - if (defaultType->GetKind() != actualType->GetKind()) { - ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), TStringBuilder() << "Default expr " << columnName - << " type mismatch, expected: " << (*actualType) << ", actual: " << *(defaultType))); - - return TStatus::Error; - } - - bool skipAnnotationValidation = false; - if (defaultType->GetKind() == ETypeAnnotationKind::Pg) { - auto defaultPgType = defaultType->Cast(); - if (defaultPgType->GetName() == "unknown") { - skipAnnotationValidation = true; - } - } - - if (!skipAnnotationValidation) { - if (!IsSameAnnotation(*defaultType, *actualType)) { - ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), TStringBuilder() << "Default expr " << columnName - << " type mismatch, expected: " << (*actualType) << ", actual: " << *(defaultType))); - return TStatus::Error; - } - } - - if (columnMeta.IsDefaultKindDefined()) { - ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), TStringBuilder() << "Default setting for " << columnName - << " column is already set: " - << NKikimrKqp::TKqpColumnMetadataProto::EDefaultKind_Name(columnMeta.DefaultKind))); - return TStatus::Error; - } - - columnMeta.SetDefaultFromLiteral(); - - YQL_ENSURE(constraint.Value().IsValid()); - const auto& constrValue = constraint.Value().Cast(); - bool isPgNull = constrValue.Ptr()->IsCallable() && - constrValue.Ptr()->Content() == "PgCast" && constrValue.Ptr()->ChildrenSize() >= 1 && - constrValue.Ptr()->Child(0)->IsCallable() && constrValue.Ptr()->Child(0)->Content() == "Null"; - - if (constrValue.Maybe() || isPgNull) { - auto actualPgType = actualType->Cast(); - YQL_ENSURE(actualPgType); - - auto* typeDesc = NKikimr::NPg::TypeDescFromPgTypeId(actualPgType->GetId()); - if (!typeDesc) { - ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), - TStringBuilder() << "Failed to parse default expr typename " << actualPgType->GetName())); - return TStatus::Error; - } - - if (isPgNull) { - if (columnMeta.NotNull) { - ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), TStringBuilder() << "Default expr " << columnName - << " is nullable or optional, but column has not null constraint. ")); - return TStatus::Error; - } - - columnMeta.DefaultFromLiteral.mutable_value()->set_null_flag_value(NProtoBuf::NULL_VALUE); - - } else { - YQL_ENSURE(constrValue.Maybe()); - auto pgConst = constrValue.Cast(); - TString content = TString(pgConst.Value().Value()); - auto parseResult = NKikimr::NPg::PgNativeBinaryFromNativeText(content, typeDesc); - if (parseResult.Error) { - ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), - TStringBuilder() << "Failed to parse default expr for typename " << actualPgType->GetName() - << ", error reason: " << *parseResult.Error)); - return TStatus::Error; - } - - columnMeta.DefaultFromLiteral.mutable_value()->set_bytes_value(parseResult.Str); - } - - auto* pg = columnMeta.DefaultFromLiteral.mutable_type()->mutable_pg_type(); - pg->set_type_name(NKikimr::NPg::PgTypeNameFromTypeDesc(typeDesc)); - pg->set_oid(NKikimr::NPg::PgTypeIdFromTypeDesc(typeDesc)); - } else if (auto literal = constrValue.Maybe()) { - FillLiteralProto(literal.Cast(), columnMeta.DefaultFromLiteral); - } else { - ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), - TStringBuilder() << "Unsupported type of default value")); - return TStatus::Error; - } - - } else if (constraint.Name().Value() == "serial") { - - if (columnMeta.IsDefaultKindDefined()) { - ctx.AddError(TIssue(ctx.GetPosition(create.Pos()), TStringBuilder() << "Default setting for " - << columnName << " column is already set: " - << NKikimrKqp::TKqpColumnMetadataProto::EDefaultKind_Name(columnMeta.DefaultKind))); - return TStatus::Error; - } + bool needEval = false; + if (!ParseConstraintNode(ctx, columnMeta, columnTuple, constraint, SessionCtx->Config(), needEval)) { + return TStatus::Error; + } - columnMeta.DefaultFromSequence = "_serial_column_" + columnMeta.Name; - columnMeta.SetDefaultFromSequence(); - columnMeta.NotNull = true; - } else if (constraint.Name().Value() == "not_null") { - columnMeta.NotNull = true; + if (needEval) { + ctx.Step.Repeat(TExprStep::ExprEval); + return TStatus(TStatus::Repeat, true); } } } @@ -1297,23 +1296,20 @@ virtual TStatus HandleCreateTable(TKiCreateTable create, TExprContext& ctx) over return IGraphTransformer::TStatus::Error; } + TKikimrColumnMetadata columnMeta; + // columnMeta.Name = columnName; + columnMeta.Type = GetColumnTypeName(actualType); if (columnTuple.Size() > 2) { const auto& columnConstraints = columnTuple.Item(2).Cast(); for(const auto& constraint: columnConstraints.Value().Cast()) { - if (constraint.Name().Value() == "default") { - auto defaultType = constraint.Value().Ref().GetTypeAnn(); - - if (!SessionCtx->Config().EnableColumnsWithDefault) { - ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), - "Columns with default values are not supported yet.")); - return TStatus::Error; - } + bool needEval = false; + if (!ParseConstraintNode(ctx, columnMeta, columnTuple, constraint, SessionCtx->Config(), needEval, true)) { + return TStatus::Error; + } - if (!IsSameAnnotation(*defaultType, *actualType)) { - ctx.AddError(TIssue(ctx.GetPosition(constraint.Pos()), TStringBuilder() << "Default expr " << name - << " type mismatch, expected: " << (*type) << ", actual: " << *(actualType))); - return TStatus::Error; - } + if (needEval) { + ctx.Step.Repeat(TExprStep::ExprEval); + return TStatus(TStatus::Repeat, true); } } } diff --git a/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp b/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp index bffc9729ee24..d1b7de5ca949 100644 --- a/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp +++ b/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp @@ -3423,6 +3423,7 @@ Y_UNIT_TEST_SUITE(KqpPg) { d varchar(20) DEFAULT 'foo'::varchar(2), e int DEFAULT NULL, f bit varying(5) DEFAULT '1001', + g bigint DEFAULT 0 NOT NULL, PRIMARY KEY(a) ); )", NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync(); @@ -3442,7 +3443,7 @@ Y_UNIT_TEST_SUITE(KqpPg) { UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty"); CompareYson(R"( - [["1";"5";"7";"fo";#;"1001"]] + [["1";"5";"7";"fo";#;"1001";"0"]] )", FormatResultSetYson(result.GetResultSet(0))); } } diff --git a/ydb/core/kqp/ut/query/kqp_query_ut.cpp b/ydb/core/kqp/ut/query/kqp_query_ut.cpp index 4bb15fdc62c7..75c13bafc415 100644 --- a/ydb/core/kqp/ut/query/kqp_query_ut.cpp +++ b/ydb/core/kqp/ut/query/kqp_query_ut.cpp @@ -788,18 +788,51 @@ Y_UNIT_TEST_SUITE(KqpQuery) { auto db = kikimr.GetTableClient(); auto session = db.CreateSession().GetValueSync().GetSession(); - auto query = Q_(R"( - SELECT 1 + 1; - )"); + { + auto query = Q_(R"( + SELECT 1 + 1; + )"); - auto result = session.ExecuteDataQuery( - query, - TTxControl::BeginTx().CommitTx() - ).ExtractValueSync(); + auto result = session.ExecuteDataQuery( + query, + TTxControl::BeginTx().CommitTx() + ).ExtractValueSync(); + + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + CompareYson(R"([[2]])", + FormatResultSetYson(result.GetResultSet(0))); + } + + { + auto query = Q_(R"( + SELECT Int8("-1"); + )"); + + auto result = session.ExecuteDataQuery( + query, + TTxControl::BeginTx().CommitTx() + ).ExtractValueSync(); + + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + CompareYson(R"([[-1]])", + FormatResultSetYson(result.GetResultSet(0))); + } + + { + auto query = Q_(R"( + SELECT Int8("-1") + Int8("-1"); + )"); + + auto result = session.ExecuteDataQuery( + query, + TTxControl::BeginTx().CommitTx() + ).ExtractValueSync(); + + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + CompareYson(R"([[-2]])", + FormatResultSetYson(result.GetResultSet(0))); + } - UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); - CompareYson(R"([[2]])", - FormatResultSetYson(result.GetResultSet(0))); } Y_UNIT_TEST(Now) { diff --git a/ydb/core/kqp/ut/scheme/kqp_constraints_ut.cpp b/ydb/core/kqp/ut/scheme/kqp_constraints_ut.cpp index 6fbb7319009d..e44fc934607f 100644 --- a/ydb/core/kqp/ut/scheme/kqp_constraints_ut.cpp +++ b/ydb/core/kqp/ut/scheme/kqp_constraints_ut.cpp @@ -941,6 +941,210 @@ Y_UNIT_TEST_SUITE(KqpConstraints) { ] )"); + { + auto query = R"( + --!syntax_v1 + ALTER TABLE `/Root/AlterTableAddNotNullColumn` ADD COLUMN Value4 Int8 NOT NULL DEFAULT Int8("-24"); + )"; + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + fCompareTable(R"( + [ + [[1u];["Old"];1;7;-24];[[2u];["New"];1;7;-24] + ] + )"); + + { + auto query = R"( + --!syntax_v1 + ALTER TABLE `/Root/AlterTableAddNotNullColumn` ADD COLUMN Value5 Int8 NOT NULL DEFAULT -25; + )"; + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + fCompareTable(R"( + [ + [[1u];["Old"];1;7;-24;-25];[[2u];["New"];1;7;-24;-25] + ] + )"); + + { + auto query = R"( + --!syntax_v1 + ALTER TABLE `/Root/AlterTableAddNotNullColumn` ADD COLUMN Value6 Float NOT NULL DEFAULT Float("1.0"); + )"; + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + fCompareTable(R"( + [ + [[1u];["Old"];1;7;-24;-25;1.];[[2u];["New"];1;7;-24;-25;1.] + ] + )"); + + { + auto query = R"( + --!syntax_v1 + ALTER TABLE `/Root/AlterTableAddNotNullColumn` ADD COLUMN Value7 Double NOT NULL DEFAULT Double("1.0"); + )"; + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + fCompareTable(R"( + [ + [[1u];["Old"];1;7;-24;-25;1.;1.];[[2u];["New"];1;7;-24;-25;1.;1.] + ] + )"); + + { + auto query = R"( + --!syntax_v1 + ALTER TABLE `/Root/AlterTableAddNotNullColumn` ADD COLUMN Value8 Yson NOT NULL DEFAULT Yson("[123]"); + )"; + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + fCompareTable(R"( + [ + [[1u];["Old"];1;7;-24;-25;1.;1.;"[123]"];[[2u];["New"];1;7;-24;-25;1.;1.;"[123]"] + ] + )"); + + { + auto query = R"( + --!syntax_v1 + ALTER TABLE `/Root/AlterTableAddNotNullColumn` ADD COLUMN Value9 Json NOT NULL DEFAULT Json("{\"age\" : 22}"); + )"; + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + fCompareTable(R"( + [ + [[1u];["Old"];1;7;-24;-25;1.;1.;"[123]";"{\"age\" : 22}"];[[2u];["New"];1;7;-24;-25;1.;1.;"[123]";"{\"age\" : 22}"] + ] + )"); + + { + auto query = R"( + --!syntax_v1 + ALTER TABLE `/Root/AlterTableAddNotNullColumn` ADD COLUMN Valuf1 Decimal(22,9) NOT NULL DEFAULT Decimal("1.11", 22, 9); + )"; + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + fCompareTable(R"( + [ + [[1u];["Old"];1;7;-24;-25;1.;1.;"[123]";"{\"age\" : 22}";"1.11"];[[2u];["New"];1;7;-24;-25;1.;1.;"[123]";"{\"age\" : 22}";"1.11"] + ] + )"); + + } + + Y_UNIT_TEST(Utf8AndDefault) { + + NKikimrConfig::TAppConfig appConfig; + appConfig.MutableTableServiceConfig()->SetEnableSequences(false); + appConfig.MutableTableServiceConfig()->SetEnableColumnsWithDefault(true); + appConfig.MutableFeatureFlags()->SetEnableAddColumsWithDefaults(true); + + TKikimrRunner kikimr(TKikimrSettings().SetPQConfig(DefaultPQConfig()).SetAppConfig(appConfig)); + auto db = kikimr.GetTableClient(); + auto session = db.CreateSession().GetValueSync().GetSession(); + + { + auto query = R"( + --!syntax_v1 + CREATE TABLE `/Root/Utf8AndDefault` ( + Key Uint32, + Value Utf8 NOT NULL DEFAULT Utf8("Simple"), + Value3 Utf8 NOT NULL DEFAULT CAST("Impossibru" as Utf8), + PRIMARY KEY (Key), + ); + )"; + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + auto fQuery = [&](TString query) -> TString { + NYdb::NTable::TExecDataQuerySettings execSettings; + execSettings.KeepInQueryCache(true); + execSettings.CollectQueryStats(ECollectQueryStatsMode::Basic); + + auto result = + session + .ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx(), + execSettings) + .ExtractValueSync(); + + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + if (result.GetResultSets().size() > 0) + return NYdb::FormatResultSetYson(result.GetResultSet(0)); + return ""; + }; + + fQuery(R"( + UPSERT INTO `/Root/Utf8AndDefault` (Key) VALUES (1); + )"); + + { + auto query = R"( + --!syntax_v1 + ALTER TABLE `/Root/Utf8AndDefault` ADD COLUMN Value2 Utf8 NOT NULL DEFAULT Utf8("Hard"); + )"; + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + { + auto query = R"( + --!syntax_v1 + ALTER TABLE `/Root/Utf8AndDefault` ADD COLUMN Value4 Utf8 NOT NULL DEFAULT CAST("Value4" as Utf8); + )"; + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + auto fCompareTable = [&](TString expected) { + TString query = R"( + SELECT * FROM `/Root/Utf8AndDefault` ORDER BY Key; + )"; + CompareYson(expected, fQuery(query)); + }; + + fCompareTable(R"( + [ + [[1u];"Simple";"Hard";"Impossibru";"Value4"] + ] + )"); } Y_UNIT_TEST(AlterTableAddNotNullWithDefault) { From ed0f418ffaec09df78d1d29b95bdfb0f206a9199 Mon Sep 17 00:00:00 2001 From: Aleksei Borzenkov Date: Tue, 7 May 2024 14:18:14 +0300 Subject: [PATCH 032/110] 24-1: Fix followers not reading system tables and not processing requests (#4343) --- ydb/core/tablet_flat/flat_database.cpp | 31 +++++- ydb/core/tablet_flat/flat_database.h | 45 +++++++-- ydb/core/tx/datashard/datashard__init.cpp | 28 +++--- ydb/core/tx/datashard/datashard__stats.cpp | 4 +- ydb/core/tx/datashard/datashard_impl.h | 6 +- ydb/core/tx/datashard/datashard_user_table.h | 2 +- .../tx/datashard/datashard_ut_followers.cpp | 96 +++++++++++++++++++ .../ut_common/datashard_ut_common.cpp | 19 ++++ .../datashard/ut_common/datashard_ut_common.h | 13 +++ 9 files changed, 210 insertions(+), 34 deletions(-) diff --git a/ydb/core/tablet_flat/flat_database.cpp b/ydb/core/tablet_flat/flat_database.cpp index 5a47f8c31d14..339fcb265b59 100644 --- a/ydb/core/tablet_flat/flat_database.cpp +++ b/ydb/core/tablet_flat/flat_database.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #define MAX_REDO_BYTES_PER_COMMIT 268435456U // 256MB @@ -21,6 +22,26 @@ namespace NKikimr { namespace NTable { +bool TDatabase::TChangeCounter::operator<(const TChangeCounter& rhs) const { + if (Serial && rhs.Serial) { + // When both counters have serial they can be compared directly + return Serial < rhs.Serial; + } + + if (Epoch == rhs.Epoch) { + // When this counter is (0, epoch) but rhs is (non-zero, epoch), it + // indicates rhs may have more changes. When serial is zero it means + // the current memtable is empty, but rhs epoch is the same, so it + // cannot have fewer changes. + return Serial < rhs.Serial; + } + + // The one with the smaller epoch must have fewer changes. In the worst + // case that change may have been a flush (incrementing epoch and serial) + // and then compact (possibly resetting serial to zero). + return Epoch < rhs.Epoch; +} + TDatabase::TDatabase(TDatabaseImpl *databaseImpl) noexcept : DatabaseImpl(databaseImpl ? databaseImpl : new TDatabaseImpl(0, new TScheme, nullptr)) , NoMoreReadsFlag(true) @@ -500,7 +521,7 @@ void TDatabase::SetTableObserver(ui32 table, TIntrusivePtr ptr) Require(table)->SetTableObserver(std::move(ptr)); } -TDatabase::TChg TDatabase::Head(ui32 table) const noexcept +TDatabase::TChangeCounter TDatabase::Head(ui32 table) const noexcept { if (table == Max()) { return { DatabaseImpl->Serial(), TEpoch::Max() }; @@ -844,3 +865,11 @@ void DebugDumpDb(const TDatabase &db) { } }} + +Y_DECLARE_OUT_SPEC(, NKikimr::NTable::TDatabase::TChangeCounter, stream, value) { + stream << "TChangeCounter{serial="; + stream << value.Serial; + stream << ", epoch="; + stream << value.Epoch; + stream << "}"; +} diff --git a/ydb/core/tablet_flat/flat_database.h b/ydb/core/tablet_flat/flat_database.h index e35f58fbd326..67332dbe80ed 100644 --- a/ydb/core/tablet_flat/flat_database.h +++ b/ydb/core/tablet_flat/flat_database.h @@ -49,9 +49,37 @@ class TDatabase { TVector> OnPersistent; }; - struct TChg { - ui64 Serial; - TEpoch Epoch; + struct TChangeCounter { + /** + * Monotonic change counter for a table or an entire database. Serial + * is incremented and persisted on each successful Commit() that has + * data changes (i.e. not empty). Note: this may or may not be zero + * when table has no changes, or when all changes have been compacted. + */ + ui64 Serial = 0; + + /** + * Monotonic epoch of a table's current memtable. This is incremented + * each time a memtable is flushed and a new one is started. The + * current memtable may or may not have additional changes. + */ + TEpoch Epoch = TEpoch::Zero(); + + TChangeCounter() = default; + + TChangeCounter(ui64 serial, TEpoch epoch) + : Serial(serial) + , Epoch(epoch) + {} + + bool operator==(const TChangeCounter& rhs) const = default; + bool operator!=(const TChangeCounter& rhs) const = default; + + /** + * Compares two change counters, such that when a < b then b either + * has more changes than a, or it's impossible to determine. + */ + bool operator<(const TChangeCounter& rhs) const; }; TDatabase(const TDatabase&) = delete; @@ -60,14 +88,11 @@ class TDatabase { void SetTableObserver(ui32 table, TIntrusivePtr ptr) noexcept; - /* Returns durable monotonic change number for table or entire database - on default (table = Max()). Serial is incremented for each - successful Commit(). AHTUNG: Serial may go to the past in case of - migration to older db versions with (Evolution < 18). Thus do not - rely on durability until of kikimr stable 18-08. + /** + * Returns durable monotonic change counter for a table (or a database when + * table = Max() by default). */ - - TChg Head(ui32 table = Max()) const noexcept; + TChangeCounter Head(ui32 table = Max()) const noexcept; /*_ Call Next() before accessing each row including the 1st row. */ diff --git a/ydb/core/tx/datashard/datashard__init.cpp b/ydb/core/tx/datashard/datashard__init.cpp index b00bb254ecdb..0fd8055454fd 100644 --- a/ydb/core/tx/datashard/datashard__init.cpp +++ b/ydb/core/tx/datashard/datashard__init.cpp @@ -698,10 +698,12 @@ bool TDataShard::SyncSchemeOnFollower(TTransactionContext &txc, const TActorCont Y_ABORT_UNLESS(userTablesSchema, "UserTables"); // Check if tables changed since last time we synchronized them - ui64 lastSysUpdate = txc.DB.Head(Schema::Sys::TableId).Serial; - ui64 lastSchemeUpdate = txc.DB.Head(Schema::UserTables::TableId).Serial; - ui64 lastSnapshotsUpdate = scheme.GetTableInfo(Schema::Snapshots::TableId) - ? txc.DB.Head(Schema::Snapshots::TableId).Serial : 0; + NTable::TDatabase::TChangeCounter lastSysUpdate = txc.DB.Head(Schema::Sys::TableId); + NTable::TDatabase::TChangeCounter lastSchemeUpdate = txc.DB.Head(Schema::UserTables::TableId); + NTable::TDatabase::TChangeCounter lastSnapshotsUpdate; + if (scheme.GetTableInfo(Schema::Snapshots::TableId)) { + lastSnapshotsUpdate = txc.DB.Head(Schema::Snapshots::TableId); + } NIceDb::TNiceDb db(txc.DB); @@ -737,10 +739,8 @@ bool TDataShard::SyncSchemeOnFollower(TTransactionContext &txc, const TActorCont if (FollowerState.LastSysUpdate < lastSysUpdate) { LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, "Updating sys metadata on follower, tabletId " << TabletID() - << " prevGen " << (FollowerState.LastSysUpdate >> 32) - << " prevStep " << (FollowerState.LastSysUpdate & (ui32)-1) - << " newGen " << (lastSysUpdate >> 32) - << " newStep " << (lastSysUpdate & (ui32)-1)); + << " prev " << FollowerState.LastSysUpdate + << " current " << lastSysUpdate); bool ready = true; ready &= SysGetUi64(db, Schema::Sys_PathOwnerId, PathOwnerId); @@ -756,10 +756,8 @@ bool TDataShard::SyncSchemeOnFollower(TTransactionContext &txc, const TActorCont if (FollowerState.LastSchemeUpdate < lastSchemeUpdate) { LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, "Updating tables metadata on follower, tabletId " << TabletID() - << " prevGen " << (FollowerState.LastSchemeUpdate >> 32) - << " prevStep " << (FollowerState.LastSchemeUpdate & (ui32)-1) - << " newGen " << (lastSchemeUpdate >> 32) - << " newStep " << (lastSchemeUpdate & (ui32)-1)); + << " prev " << FollowerState.LastSchemeUpdate + << " current " << lastSchemeUpdate); struct TRow { TPathId TableId; @@ -829,10 +827,8 @@ bool TDataShard::SyncSchemeOnFollower(TTransactionContext &txc, const TActorCont if (FollowerState.LastSnapshotsUpdate < lastSnapshotsUpdate) { LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, "Updating snapshots metadata on follower, tabletId " << TabletID() - << " prevGen " << (FollowerState.LastSnapshotsUpdate >> 32) - << " prevStep " << (FollowerState.LastSnapshotsUpdate & (ui32)-1) - << " newGen " << (lastSnapshotsUpdate >> 32) - << " newStep " << (lastSnapshotsUpdate & (ui32)-1)); + << " prev " << FollowerState.LastSnapshotsUpdate + << " current " << lastSnapshotsUpdate); NIceDb::TNiceDb db(txc.DB); if (!SnapshotManager.ReloadSnapshots(db)) { diff --git a/ydb/core/tx/datashard/datashard__stats.cpp b/ydb/core/tx/datashard/datashard__stats.cpp index a7e09d8ffe02..c1da8a6122f9 100644 --- a/ydb/core/tx/datashard/datashard__stats.cpp +++ b/ydb/core/tx/datashard/datashard__stats.cpp @@ -441,9 +441,7 @@ class TDataShard::TTxInitiateStatsUpdate : public NTabletFlatExecutor::TTransact void CheckIdleMemCompaction(const TUserTable& table, TTransactionContext& txc, const TActorContext& ctx) { // Note: we only care about changes in the main table auto lastTableChange = txc.DB.Head(table.LocalTid); - if (table.LastTableChange.Serial != lastTableChange.Serial || - table.LastTableChange.Epoch != lastTableChange.Epoch) - { + if (table.LastTableChange != lastTableChange) { table.LastTableChange = lastTableChange; table.LastTableChangeTimestamp = ctx.Monotonic(); return; diff --git a/ydb/core/tx/datashard/datashard_impl.h b/ydb/core/tx/datashard/datashard_impl.h index 37619b2d51d0..9564062ae9e3 100644 --- a/ydb/core/tx/datashard/datashard_impl.h +++ b/ydb/core/tx/datashard/datashard_impl.h @@ -2390,9 +2390,9 @@ class TDataShard // For follower only struct TFollowerState { - ui64 LastSysUpdate = 0; - ui64 LastSchemeUpdate = 0; - ui64 LastSnapshotsUpdate = 0; + NTable::TDatabase::TChangeCounter LastSysUpdate; + NTable::TDatabase::TChangeCounter LastSchemeUpdate; + NTable::TDatabase::TChangeCounter LastSnapshotsUpdate; }; // diff --git a/ydb/core/tx/datashard/datashard_user_table.h b/ydb/core/tx/datashard/datashard_user_table.h index 40a53145c998..bca8c9107cc6 100644 --- a/ydb/core/tx/datashard/datashard_user_table.h +++ b/ydb/core/tx/datashard/datashard_user_table.h @@ -401,7 +401,7 @@ struct TUserTable : public TThrRefBase { mutable TStats Stats; mutable bool StatsUpdateInProgress = false; mutable bool StatsNeedUpdate = true; - mutable NTable::TDatabase::TChg LastTableChange{ 0, NTable::TEpoch::Zero() }; + mutable NTable::TDatabase::TChangeCounter LastTableChange; mutable TMonotonic LastTableChangeTimestamp; ui32 SpecialColTablet = Max(); diff --git a/ydb/core/tx/datashard/datashard_ut_followers.cpp b/ydb/core/tx/datashard/datashard_ut_followers.cpp index 57f6b39f1ffc..b4c4ea7712a7 100644 --- a/ydb/core/tx/datashard/datashard_ut_followers.cpp +++ b/ydb/core/tx/datashard/datashard_ut_followers.cpp @@ -2,6 +2,8 @@ #include "datashard_ut_common_kqp.h" #include "datashard_ut_read_table.h" +#include + namespace NKikimr { using namespace NKikimr::NDataShard; @@ -162,6 +164,100 @@ Y_UNIT_TEST_SUITE(DataShardFollowers) { } } + Y_UNIT_TEST(FollowerRebootAfterSysCompaction) { + TPortManager pm; + TServerSettings serverSettings(pm.GetPort(2134)); + serverSettings.SetDomainName("Root") + .SetUseRealThreads(false) + .SetEnableForceFollowers(true); + + Tests::TServer::TPtr server = new TServer(serverSettings); + auto &runtime = *server->GetRuntime(); + auto sender = runtime.AllocateEdgeActor(); + + runtime.SetLogPriority(NKikimrServices::TX_DATASHARD, NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::TX_PROXY, NLog::PRI_DEBUG); + + InitRoot(server, sender); + + CreateShardedTable(server, sender, "/Root", "table-1", + TShardedTableOptions() + .Shards(2) + .Followers(1)); + + const auto shards = GetTableShards(server, sender, "/Root/table-1"); + UNIT_ASSERT_VALUES_EQUAL(shards.size(), 2u); + + ExecSQL(server, sender, "UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 11), (2, 22), (3, 33);"); + + // Wait for leader to promote the follower read edge (and stop writing to the Sys table) + Cerr << "... sleeping" << Endl; + runtime.SimulateSleep(TDuration::Seconds(1)); + + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleStaleRoExec(runtime, + "SELECT key, value FROM `/Root/table-1` WHERE key >= 1 AND key <= 3", + "/Root"), + "{ items { uint32_value: 1 } items { uint32_value: 11 } }, " + "{ items { uint32_value: 2 } items { uint32_value: 22 } }, " + "{ items { uint32_value: 3 } items { uint32_value: 33 } }"); + + // Now we ask the leader to compact the Sys table + { + NActorsProto::TRemoteHttpInfo pb; + pb.SetMethod(HTTP_METHOD_GET); + pb.SetPath("/executorInternals"); + auto* p1 = pb.AddQueryParams(); + p1->SetKey("force_compaction"); + p1->SetValue("1"); + SendViaPipeCache(runtime, shards.at(0), sender, + std::make_unique(std::move(pb))); + auto ev = runtime.GrabEdgeEventRethrow(sender); + UNIT_ASSERT_C( + ev->Get()->Html.Contains("Table will be compacted in the near future"), + ev->Get()->Html); + } + + // Allow table to finish compaction + Cerr << "... sleeping" << Endl; + runtime.SimulateSleep(TDuration::Seconds(1)); + + // Reboot follower + Cerr << "... killing follower" << Endl; + SendViaPipeCache(runtime, shards.at(0), sender, + std::make_unique(), + { .Follower = true }); + + // Allow it to boot properly + Cerr << "... sleeping" << Endl; + runtime.SimulateSleep(TDuration::Seconds(1)); + + // Read from follower must succeed + Cerr << "... checking" << Endl; + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleStaleRoExec(runtime, + "SELECT key, value FROM `/Root/table-1` WHERE key >= 1 AND key <= 3", + "/Root"), + "{ items { uint32_value: 1 } items { uint32_value: 11 } }, " + "{ items { uint32_value: 2 } items { uint32_value: 22 } }, " + "{ items { uint32_value: 3 } items { uint32_value: 33 } }"); + + // Update row values and sleep + Cerr << "... updating rows" << Endl; + ExecSQL(server, sender, "UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 44), (2, 55), (3, 66);"); + runtime.SimulateSleep(TDuration::Seconds(1)); + + // Read from follower must see updated values + Cerr << "... checking" << Endl; + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleStaleRoExec(runtime, + "SELECT key, value FROM `/Root/table-1` WHERE key >= 1 AND key <= 3", + "/Root"), + "{ items { uint32_value: 1 } items { uint32_value: 44 } }, " + "{ items { uint32_value: 2 } items { uint32_value: 55 } }, " + "{ items { uint32_value: 3 } items { uint32_value: 66 } }"); + } + } // Y_UNIT_TEST_SUITE(DataShardFollowers) } // namespace NKikimr diff --git a/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp b/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp index f4e34337edf9..06c6bc471cae 100644 --- a/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp +++ b/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp @@ -1,6 +1,7 @@ #include "datashard_ut_common.h" #include +#include #include #include #include @@ -2274,4 +2275,22 @@ TString ReadShardedTable( return StartReadShardedTable(server, path, snapshot, /* pause = */ false).Result; } +void SendViaPipeCache( + TTestActorRuntime& runtime, + ui64 tabletId, const TActorId& sender, + std::unique_ptr msg, + const TSendViaPipeCacheOptions& options) +{ + ui32 nodeIndex = sender.NodeId() - runtime.GetNodeId(0); + runtime.Send( + new IEventHandle( + MakePipePeNodeCacheID(options.Follower), + sender, + new TEvPipeCache::TEvForward(msg.release(), tabletId, options.Subscribe), + options.Flags, + options.Cookie), + nodeIndex, + /* viaActorSystem */ true); +} + } diff --git a/ydb/core/tx/datashard/ut_common/datashard_ut_common.h b/ydb/core/tx/datashard/ut_common/datashard_ut_common.h index 6b2482cd90c3..2143be8babe7 100644 --- a/ydb/core/tx/datashard/ut_common/datashard_ut_common.h +++ b/ydb/core/tx/datashard/ut_common/datashard_ut_common.h @@ -798,4 +798,17 @@ void WaitFor(TTestActorRuntime& runtime, TCondition&& condition, const TString& UNIT_ASSERT_C(condition(), "... failed to wait for " << description); } +struct TSendViaPipeCacheOptions { + ui32 Flags = 0; + ui64 Cookie = 0; + bool Follower = false; + bool Subscribe = false; +}; + +void SendViaPipeCache( + TTestActorRuntime& runtime, + ui64 tabletId, const TActorId& sender, + std::unique_ptr msg, + const TSendViaPipeCacheOptions& options = {}); + } From 024dde8261b59f156b520d492365d7e0313d0bcc Mon Sep 17 00:00:00 2001 From: Alexander Rutkovsky Date: Tue, 7 May 2024 22:48:54 +0300 Subject: [PATCH 033/110] Report UserSID for all gRPC-issued BSC operations (merge from main #4360) (#4380) --- ydb/core/client/server/msgbus_blobstorage_config.cpp | 1 + ydb/core/protos/blobstorage_config.proto | 3 +++ 2 files changed, 4 insertions(+) diff --git a/ydb/core/client/server/msgbus_blobstorage_config.cpp b/ydb/core/client/server/msgbus_blobstorage_config.cpp index a0af40eac959..acd7dac452bc 100644 --- a/ydb/core/client/server/msgbus_blobstorage_config.cpp +++ b/ydb/core/client/server/msgbus_blobstorage_config.cpp @@ -40,6 +40,7 @@ class TMessageBusBlobStorageConfig TEvBlobStorage::TEvControllerConfigRequest *MakeReq(const TActorContext&) { auto ev = MakeHolder(); auto &record = ev->Record; + Request.SetUserSID(GetUserSID()); Request.Swap(record.MutableRequest()); return ev.Release(); } diff --git a/ydb/core/protos/blobstorage_config.proto b/ydb/core/protos/blobstorage_config.proto index 08af614bd641..e250a5329179 100644 --- a/ydb/core/protos/blobstorage_config.proto +++ b/ydb/core/protos/blobstorage_config.proto @@ -575,6 +575,9 @@ message TConfigRequest { // is this command originated by self-heal decommission? bool IsSelfHealReasonDecommit = 12; + + // requesting user identifier + string UserSID = 13; } enum ETriStateBool { From c1f731002cbcdacbd32144cfddb9329bba77707d Mon Sep 17 00:00:00 2001 From: ivanmorozov333 Date: Wed, 8 May 2024 06:59:53 +0300 Subject: [PATCH 034/110] dont repeat requests for already applied modifications (#4376) --- .../ds_table/behaviour_registrator_actor.cpp | 2 +- .../metadata/ds_table/registration.cpp | 8 ++--- ydb/services/metadata/ds_table/registration.h | 33 ++++++++++++++++++- ydb/services/metadata/ds_table/service.cpp | 2 +- .../metadata/initializer/accessor_init.cpp | 23 ++++++++----- .../metadata/initializer/accessor_init.h | 7 ++-- 6 files changed, 57 insertions(+), 18 deletions(-) diff --git a/ydb/services/metadata/ds_table/behaviour_registrator_actor.cpp b/ydb/services/metadata/ds_table/behaviour_registrator_actor.cpp index 422b636e659a..fcce730868fa 100644 --- a/ydb/services/metadata/ds_table/behaviour_registrator_actor.cpp +++ b/ydb/services/metadata/ds_table/behaviour_registrator_actor.cpp @@ -43,7 +43,7 @@ void TBehaviourRegistrator::Handle(TEvTableDescriptionFailed::TPtr& ev) { void TBehaviourRegistrator::Handle(TEvStartRegistration::TPtr& /*ev*/) { NInitializer::TDSAccessorInitialized::Execute(ReqConfig, - Behaviour->GetTypeId(), Behaviour->GetInitializer(), InternalController, RegistrationData->GetInitializationSnapshot()); + Behaviour->GetTypeId(), Behaviour->GetInitializer(), InternalController, RegistrationData->GetSnapshotOwner()); } void TBehaviourRegistrator::Handle(NInitializer::TEvInitializationFinished::TPtr& ev) { diff --git a/ydb/services/metadata/ds_table/registration.cpp b/ydb/services/metadata/ds_table/registration.cpp index 008ef3b126f0..d15b6d89d274 100644 --- a/ydb/services/metadata/ds_table/registration.cpp +++ b/ydb/services/metadata/ds_table/registration.cpp @@ -77,9 +77,8 @@ void TRegistrationData::InitializationFinished(const TString& initId) { } void TRegistrationData::SetInitializationSnapshot(NFetcher::ISnapshot::TPtr s) { - const bool notInitializedBefore = !InitializationSnapshot; - InitializationSnapshot = dynamic_pointer_cast(s); - Y_ABORT_UNLESS(InitializationSnapshot); + const bool notInitializedBefore = !SnapshotOwner->HasInitializationSnapshot(); + SnapshotOwner->SetInitializationSnapshot(s); if (notInitializedBefore) { EventsWaiting->TryResendOne(); } @@ -91,11 +90,12 @@ void TRegistrationData::StartInitialization() { } TRegistrationData::TRegistrationData() { + SnapshotOwner = std::make_shared(); InitializationFetcher = std::make_shared(); } void TRegistrationData::NoInitializationSnapshot() { - InitializationSnapshot = std::make_shared(TInstant::Zero()); + SnapshotOwner->NoInitializationSnapshot(); EventsWaiting->TryResendOne(); } diff --git a/ydb/services/metadata/ds_table/registration.h b/ydb/services/metadata/ds_table/registration.h index c2f9bccea0e6..5fbea593122e 100644 --- a/ydb/services/metadata/ds_table/registration.h +++ b/ydb/services/metadata/ds_table/registration.h @@ -161,6 +161,37 @@ class TEventsCollector { void Initialized(const TString& initId); }; +class TRegistrationData; + +class TInitializationSnapshotOwner { +private: + mutable TMutex Mutex; + std::shared_ptr InitializationSnapshot; + friend class TRegistrationData; + void SetInitializationSnapshot(NFetcher::ISnapshot::TPtr s) { + auto snapshot = dynamic_pointer_cast(s); + Y_ABORT_UNLESS(snapshot); + TGuard g(Mutex); + InitializationSnapshot = snapshot; + } + + void NoInitializationSnapshot() { + TGuard g(Mutex); + InitializationSnapshot = std::make_shared(TInstant::Zero()); + } +public: + bool HasInitializationSnapshot() const { + TGuard g(Mutex); + return !!InitializationSnapshot; + } + bool HasModification(const TString& componentId, const TString& modificationId) const { + NInitializer::TDBInitializationKey key(componentId, modificationId); + TGuard g(Mutex); + return InitializationSnapshot->GetObjects().contains(key); + } + +}; + class TRegistrationData { public: enum class EStage { @@ -170,8 +201,8 @@ class TRegistrationData { }; private: YDB_READONLY(EStage, Stage, EStage::Created); - YDB_READONLY_DEF(std::shared_ptr, InitializationSnapshot); YDB_READONLY_DEF(std::shared_ptr, InitializationFetcher); + YDB_READONLY_DEF(std::shared_ptr, SnapshotOwner); public: TRegistrationData(); diff --git a/ydb/services/metadata/ds_table/service.cpp b/ydb/services/metadata/ds_table/service.cpp index 3293c32930a4..55d38ef5a5a3 100644 --- a/ydb/services/metadata/ds_table/service.cpp +++ b/ydb/services/metadata/ds_table/service.cpp @@ -18,7 +18,7 @@ IActor* CreateService(const TConfig& config) { void TService::PrepareManagers(std::vector managers, TAutoPtr ev, const NActors::TActorId& sender) { TBehavioursId id(managers); - if (RegistrationData->GetInitializationSnapshot()) { + if (RegistrationData->GetSnapshotOwner()->HasInitializationSnapshot()) { auto bInitializer = NInitializer::TDBObjectBehaviour::GetInstance(); switch (RegistrationData->GetStage()) { case TRegistrationData::EStage::Created: diff --git a/ydb/services/metadata/initializer/accessor_init.cpp b/ydb/services/metadata/initializer/accessor_init.cpp index 01a09dd68f99..e13649477f31 100644 --- a/ydb/services/metadata/initializer/accessor_init.cpp +++ b/ydb/services/metadata/initializer/accessor_init.cpp @@ -11,6 +11,15 @@ namespace NKikimr::NMetadata::NInitializer { void TDSAccessorInitialized::DoNextModifier(const bool doPop) { + if (InitializationSnapshotOwner->HasInitializationSnapshot() && !doPop) { + while (Modifiers.size() && !doPop) { + if (InitializationSnapshotOwner->HasModification(ComponentId, Modifiers.front()->GetModificationId())) { + Modifiers.pop_front(); + } else { + break; + } + } + } if (doPop) { Modifiers.pop_front(); } @@ -27,11 +36,11 @@ void TDSAccessorInitialized::DoNextModifier(const bool doPop) { TDSAccessorInitialized::TDSAccessorInitialized(const NRequest::TConfig& config, const TString& componentId, IInitializationBehaviour::TPtr initializationBehaviour, - IInitializerOutput::TPtr controller, std::shared_ptr initializationSnapshot) + IInitializerOutput::TPtr controller, const std::shared_ptr& snapshotOwner) : Config(config) , InitializationBehaviour(initializationBehaviour) , ExternalController(controller) - , InitializationSnapshot(initializationSnapshot) + , InitializationSnapshotOwner(snapshotOwner) , ComponentId(componentId) { } @@ -40,7 +49,7 @@ void TDSAccessorInitialized::OnModificationFinished(const TString& modificationI ALS_INFO(NKikimrServices::METADATA_INITIALIZER) << "modifiers count: " << Modifiers.size(); Y_ABORT_UNLESS(Modifiers.size()); Y_ABORT_UNLESS(Modifiers.front()->GetModificationId() == modificationId); - if (NProvider::TServiceOperator::IsEnabled() && InitializationSnapshot) { + if (NProvider::TServiceOperator::IsEnabled() && InitializationSnapshotOwner->HasInitializationSnapshot()) { TDBInitialization dbInit(ComponentId, Modifiers.front()->GetModificationId()); NModifications::IOperationsManager::TExternalModificationContext extContext; extContext.SetUserToken(NACLib::TSystemUsers::Metadata()); @@ -58,9 +67,6 @@ void TDSAccessorInitialized::OnModificationFinished(const TString& modificationI void TDSAccessorInitialized::OnPreparationFinished(const TVector& modifiers) { for (auto&& i : modifiers) { TDBInitializationKey key(ComponentId, i->GetModificationId()); - if (InitializationSnapshot && InitializationSnapshot->GetObjects().contains(key)) { - continue; - } Modifiers.emplace_back(i); } DoNextModifier(false); @@ -93,10 +99,11 @@ void TDSAccessorInitialized::OnAlteringFinished() { void TDSAccessorInitialized::Execute(const NRequest::TConfig& config, const TString& componentId, IInitializationBehaviour::TPtr initializationBehaviour, IInitializerOutput::TPtr controller, - std::shared_ptr initializationSnapshot) + const std::shared_ptr& snapshotOwner) { + AFL_VERIFY(snapshotOwner); std::shared_ptr initializer(new TDSAccessorInitialized(config, - componentId, initializationBehaviour, controller, initializationSnapshot)); + componentId, initializationBehaviour, controller, snapshotOwner)); initializer->SelfPtr = initializer; initializationBehaviour->Prepare(initializer); diff --git a/ydb/services/metadata/initializer/accessor_init.h b/ydb/services/metadata/initializer/accessor_init.h index 7bff4adba61d..1fd1c6cf9c3d 100644 --- a/ydb/services/metadata/initializer/accessor_init.h +++ b/ydb/services/metadata/initializer/accessor_init.h @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -22,7 +23,7 @@ class TDSAccessorInitialized: public IInitializerInput, const NRequest::TConfig Config; IInitializationBehaviour::TPtr InitializationBehaviour; IInitializerOutput::TPtr ExternalController; - std::shared_ptr InitializationSnapshot; + const std::shared_ptr InitializationSnapshotOwner; const TString ComponentId; std::shared_ptr SelfPtr; @@ -38,12 +39,12 @@ class TDSAccessorInitialized: public IInitializerInput, TDSAccessorInitialized(const NRequest::TConfig& config, const TString& componentId, IInitializationBehaviour::TPtr initializationBehaviour, - IInitializerOutput::TPtr controller, std::shared_ptr initializationSnapshot); + IInitializerOutput::TPtr controller, const std::shared_ptr& snapshotOwner); public: static void Execute(const NRequest::TConfig& config, const TString& componentId, IInitializationBehaviour::TPtr initializationBehaviour, - IInitializerOutput::TPtr controller, std::shared_ptr initializationSnapshot); + IInitializerOutput::TPtr controller, const std::shared_ptr& initializationSnapshotOwner); }; From 9c47d51de703e705dba264bdfc24c051838fa3b2 Mon Sep 17 00:00:00 2001 From: qyryq Date: Wed, 8 May 2024 15:41:00 +0300 Subject: [PATCH 035/110] ydb_topic: do not call lock_shared recursively (24-1) (#4387) Co-authored-by: ildar-khisambeev --- .github/config/muted_ya.txt | 1 - ydb/core/persqueue/ut/mirrorer_ut.cpp | 13 ++-- .../impl/federated_read_session.cpp | 2 +- .../impl/callback_context.h | 63 +++++++++++++++++-- .../ut/ut_utils/data_plane_helpers.cpp | 2 - 5 files changed, 68 insertions(+), 13 deletions(-) diff --git a/.github/config/muted_ya.txt b/.github/config/muted_ya.txt index 6d4ded2774d2..46a896df34a4 100644 --- a/.github/config/muted_ya.txt +++ b/.github/config/muted_ya.txt @@ -51,7 +51,6 @@ ydb/library/yql/providers/generic/connector/tests sole* ydb/library/yql/providers/generic/connector/tests test.py.* ydb/library/yql/sql/pg/ut PgSqlParsingAutoparam.AutoParamValues_DifferentTypes ydb/library/yql/tests/sql/dq_file/part* * -ydb/public/sdk/cpp/client/ydb_federated_topic/ut BasicUsage.SimpleHandlers ydb/public/sdk/cpp/client/ydb_persqueue_core/ut/with_offset_ranges_mode_ut RetryPolicy.RetryWithBatching ydb/public/sdk/cpp/client/ydb_topic/ut BasicUsage.WriteRead ydb/services/datastreams/ut DataStreams.TestPutRecordsWithRead diff --git a/ydb/core/persqueue/ut/mirrorer_ut.cpp b/ydb/core/persqueue/ut/mirrorer_ut.cpp index 08f1af2c66e6..8a39005004af 100644 --- a/ydb/core/persqueue/ut/mirrorer_ut.cpp +++ b/ydb/core/persqueue/ut/mirrorer_ut.cpp @@ -154,6 +154,9 @@ Y_UNIT_TEST_SUITE(TPersQueueMirrorer) { } + srcReader->Close(TDuration::Zero()); + dstReader->Close(TDuration::Zero()); + // write to source topic TVector messagesPerPartition(partitionsCount, 0); for (ui32 partition = 0; partition < partitionsCount; ++partition) { @@ -163,7 +166,7 @@ Y_UNIT_TEST_SUITE(TPersQueueMirrorer) { {"some_extra_field2", "another_value" + ToString(partition)}, {"file", "/home/user/log" + ToString(partition)} }; - auto writer = CreateSimpleWriter(*driver, srcTopic, sourceId, partition + 1, std::nullopt, std::nullopt, sessionMeta); + auto writer = CreateSimpleWriter(*driver, srcTopic, sourceId, partition + 1, std::nullopt, std::nullopt, sessionMeta); ui64 seqNo = writer->GetInitSeqNo(); @@ -211,10 +214,10 @@ Y_UNIT_TEST_SUITE(TPersQueueMirrorer) { auto dstReader = createReader(dstTopic, partition); for (ui32 i = 0; i < messagesPerPartition[partition]; ++i) { - auto dstEvent = GetNextMessageSkipAssignment(dstReader); + auto dstEvent = GetNextMessageSkipAssignment(dstReader, TDuration::Seconds(1)); UNIT_ASSERT(dstEvent); Cerr << "Destination read message: " << dstEvent->DebugString() << "\n"; - auto srcEvent = GetNextMessageSkipAssignment(srcReader); + auto srcEvent = GetNextMessageSkipAssignment(srcReader, TDuration::Seconds(1)); UNIT_ASSERT(srcEvent); Cerr << "Source read message: " << srcEvent->DebugString() << "\n"; @@ -263,7 +266,7 @@ Y_UNIT_TEST_SUITE(TPersQueueMirrorer) { server.AnnoyingClient->CreateTopic(topicFullName, 1); auto driver = server.AnnoyingClient->GetDriver(); - auto writer = CreateSimpleWriter(*driver, topic, "src-id-test"); + auto writer = CreateSimpleWriter(*driver, topic, "src-id-test"); for (auto i = 0u; i < 5; i++) { auto res = writer->Write(TString(10, 'a')); UNIT_ASSERT(res); @@ -299,7 +302,7 @@ Y_UNIT_TEST_SUITE(TPersQueueMirrorer) { break; } } - + for (auto i = 0u; i < 5; i++) { auto res = writer->Write(TString(10, 'b')); UNIT_ASSERT(res); diff --git a/ydb/public/sdk/cpp/client/ydb_federated_topic/impl/federated_read_session.cpp b/ydb/public/sdk/cpp/client/ydb_federated_topic/impl/federated_read_session.cpp index df0bf1c8d079..7cfebed230a0 100644 --- a/ydb/public/sdk/cpp/client/ydb_federated_topic/impl/federated_read_session.cpp +++ b/ydb/public/sdk/cpp/client/ydb_federated_topic/impl/federated_read_session.cpp @@ -17,7 +17,7 @@ NTopic::TTopicClientSettings FromFederated(const TFederatedTopicClientSettings& template typename std::function WrapFederatedHandler(std::function outerHandler, std::shared_ptr db, std::shared_ptr federator) { if (outerHandler) { - return [outerHandler, db = std::move(db), &federator](TEvent& ev) { + return [outerHandler, db = std::move(db), federator = std::move(federator)](TEvent& ev) { auto fev = federator->LocateFederate(ev, std::move(db)); return outerHandler(fev); }; diff --git a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/callback_context.h b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/callback_context.h index 9e7ffe2e6d6f..616a8334c465 100644 --- a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/callback_context.h +++ b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/callback_context.h @@ -4,9 +4,11 @@ #include #include +#include #include +#include #include -#include +#include namespace NYdb::NPersQueue { @@ -17,18 +19,62 @@ template class TCallbackContext { friend class TContextOwner; + // thread_id -> number of LockShared calls from this thread + using TSharedLockCounter = std::map; + using TSharedLockCounterPtr = std::shared_ptr; + using TSpinLockPtr = std::shared_ptr; + public: using TMutexPtr = std::shared_ptr; class TBorrowed { public: - explicit TBorrowed(const TCallbackContext& parent) : Mutex(parent.Mutex) { - Mutex->lock_shared(); + explicit TBorrowed(const TCallbackContext& parent) + : Mutex(parent.Mutex) + , SharedLockCounterMutex(parent.SharedLockCounterMutex) + , SharedLockCounter(parent.SharedLockCounter) + { + // "Recursive shared lock". + // + // https://en.cppreference.com/w/cpp/thread/shared_mutex/lock_shared says: + // If lock_shared is called by a thread that already owns the mutex + // in any mode (exclusive or shared), the behavior is UNDEFINED. + // + // So if a thread calls LockShared more than once without releasing the lock, + // we should call lock_shared only on the first call. + + bool takeLock = false; + + with_lock(*SharedLockCounterMutex) { + auto& counter = SharedLockCounter->emplace(std::this_thread::get_id(), 0).first->second; + ++counter; + takeLock = counter == 1; + } + + if (takeLock) { + Mutex->lock_shared(); + } + Ptr = parent.GuardedObjectPtr.get(); } ~TBorrowed() { - Mutex->unlock_shared(); + bool releaseLock = false; + + with_lock(*SharedLockCounterMutex) { + auto it = SharedLockCounter->find(std::this_thread::get_id()); + Y_ABORT_UNLESS(it != SharedLockCounter->end()); + auto& counter = it->second; + --counter; + if (counter == 0) { + releaseLock = true; + SharedLockCounter->erase(it); + } + } + + if (releaseLock) { + Mutex->unlock_shared(); + } } TGuardedObject* operator->() { @@ -46,12 +92,17 @@ class TCallbackContext { private: TMutexPtr Mutex; TGuardedObject* Ptr = nullptr; + + TSpinLockPtr SharedLockCounterMutex; + TSharedLockCounterPtr SharedLockCounter; }; public: explicit TCallbackContext(std::shared_ptr ptr) : Mutex(std::make_shared()) , GuardedObjectPtr(std::move(ptr)) + , SharedLockCounterMutex(std::make_shared()) + , SharedLockCounter(std::make_shared()) {} TBorrowed LockShared() { @@ -75,8 +126,12 @@ class TCallbackContext { } private: + TMutexPtr Mutex; std::shared_ptr GuardedObjectPtr; + + TSpinLockPtr SharedLockCounterMutex; + TSharedLockCounterPtr SharedLockCounter; }; template diff --git a/ydb/public/sdk/cpp/client/ydb_persqueue_core/ut/ut_utils/data_plane_helpers.cpp b/ydb/public/sdk/cpp/client/ydb_persqueue_core/ut/ut_utils/data_plane_helpers.cpp index 6d29aa27c192..0ef9b8750f36 100644 --- a/ydb/public/sdk/cpp/client/ydb_persqueue_core/ut/ut_utils/data_plane_helpers.cpp +++ b/ydb/public/sdk/cpp/client/ydb_persqueue_core/ut/ut_utils/data_plane_helpers.cpp @@ -99,6 +99,4 @@ namespace NKikimr::NPersQueueTests { } return {}; } - - } From 966cbdffeb093f830d771c5d71aeb31b8993f836 Mon Sep 17 00:00:00 2001 From: vporyadke Date: Wed, 8 May 2024 22:32:49 +0200 Subject: [PATCH 036/110] do not treat initial tablet metrics values as 0 (#4395) --- ydb/core/tablet/tablet_metrics.cpp | 6 +++--- ydb/core/tablet/tablet_metrics.h | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ydb/core/tablet/tablet_metrics.cpp b/ydb/core/tablet/tablet_metrics.cpp index 182c7c566e4b..8e17fed1a716 100644 --- a/ydb/core/tablet/tablet_metrics.cpp +++ b/ydb/core/tablet/tablet_metrics.cpp @@ -107,9 +107,9 @@ namespace { if (value.IsValueReady()) { auto val = !value.IsValueObsolete(now) ? value.GetValue() : 0; ui32 levelVal = val / significantChange; - auto& lit = levels[groupId]; - if (lit != levelVal || force) { - lit = levelVal; + auto [lit, inserted] = levels.insert({groupId, 0}); + if (inserted || lit->second != levelVal || force) { + lit->second = levelVal; haveChanges = true; // N.B. keep going so all levels are properly updated } diff --git a/ydb/core/tablet/tablet_metrics.h b/ydb/core/tablet/tablet_metrics.h index b426284d33fb..313df95d68cf 100644 --- a/ydb/core/tablet/tablet_metrics.h +++ b/ydb/core/tablet/tablet_metrics.h @@ -69,11 +69,11 @@ class TResourceMetricsSendState { const ui64 TabletId; const ui32 FollowerId; const TActorId Launcher; - ui32 LevelCPU = 0; - ui32 LevelMemory = 0; - ui32 LevelNetwork = 0; - ui32 LevelStorage = 0; - ui32 LevelIops = 0; + std::optional LevelCPU; + std::optional LevelMemory; + std::optional LevelNetwork; + std::optional LevelStorage; + std::optional LevelIops; THashMap, ui32> LevelReadThroughput; THashMap, ui32> LevelWriteThroughput; THashMap, ui32> LevelReadIops; From adbde26c182952d6587ffb3e393dcc2e5e9559b7 Mon Sep 17 00:00:00 2001 From: vporyadke Date: Mon, 13 May 2024 16:07:13 +0200 Subject: [PATCH 037/110] advance time of metrics aggregates (#4453) --- ydb/core/mind/hive/tablet_info.cpp | 12 +++++++++--- ydb/core/util/metrics.h | 9 +++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/ydb/core/mind/hive/tablet_info.cpp b/ydb/core/mind/hive/tablet_info.cpp index 4598bface6ec..a3a5698efe6a 100644 --- a/ydb/core/mind/hive/tablet_info.cpp +++ b/ydb/core/mind/hive/tablet_info.cpp @@ -324,9 +324,11 @@ void TTabletInfo::UpdateResourceUsage(const NKikimrTabletBase::TMetrics& metrics BLOG_W("Ignoring too high CPU metric (" << metrics.GetCPU() << ") for tablet " << ToString()); } else { ResourceMetricsAggregates.MaximumCPU.SetValue(metrics.GetCPU(), now); - ResourceValues.SetCPU(ResourceMetricsAggregates.MaximumCPU.GetValue()); } + } else { + ResourceMetricsAggregates.MaximumCPU.AdvanceTime(now); } + ResourceValues.SetCPU(ResourceMetricsAggregates.MaximumCPU.GetValue()); } if (Find(allowedMetricIds, NKikimrTabletBase::TMetrics::kMemoryFieldNumber) != allowedMetricIds.end()) { if (metrics.HasMemory()) { @@ -334,9 +336,11 @@ void TTabletInfo::UpdateResourceUsage(const NKikimrTabletBase::TMetrics& metrics BLOG_W("Ignoring too high Memory metric (" << metrics.GetMemory() << ") for tablet " << ToString()); } else { ResourceMetricsAggregates.MaximumMemory.SetValue(metrics.GetMemory(), now); - ResourceValues.SetMemory(ResourceMetricsAggregates.MaximumMemory.GetValue()); } + } else { + ResourceMetricsAggregates.MaximumMemory.AdvanceTime(now); } + ResourceValues.SetMemory(ResourceMetricsAggregates.MaximumMemory.GetValue()); } if (Find(allowedMetricIds, NKikimrTabletBase::TMetrics::kNetworkFieldNumber) != allowedMetricIds.end()) { if (metrics.HasNetwork()) { @@ -344,9 +348,11 @@ void TTabletInfo::UpdateResourceUsage(const NKikimrTabletBase::TMetrics& metrics BLOG_W("Ignoring too high Network metric (" << metrics.GetNetwork() << ") for tablet " << ToString()); } else { ResourceMetricsAggregates.MaximumNetwork.SetValue(metrics.GetNetwork(), now); - ResourceValues.SetNetwork(ResourceMetricsAggregates.MaximumNetwork.GetValue()); } + } else { + ResourceMetricsAggregates.MaximumNetwork.AdvanceTime(now); } + ResourceValues.SetNetwork(ResourceMetricsAggregates.MaximumNetwork.GetValue()); } if (metrics.HasStorage()) { ResourceValues.SetStorage(metrics.GetStorage()); diff --git a/ydb/core/util/metrics.h b/ydb/core/util/metrics.h index cae931733faf..c58a7d65c4cf 100644 --- a/ydb/core/util/metrics.h +++ b/ydb/core/util/metrics.h @@ -436,6 +436,15 @@ class TMaximumValueVariableWindowUI64 : public NKikimrMetricsProto::TMaximumValu } } + void AdvanceTime(TInstant now) { + // Nothing changed, last value is stiil relevant + TType lastValue = {}; + if (!TProto::GetValues().empty()) { + lastValue = *std::prev(TProto::MutableValues()->end()); + } + SetValue(lastValue, now); + } + TType GetValue() const { return MaximumValue; } From da78771a1bf5970b693654ff179b24552718ba0a Mon Sep 17 00:00:00 2001 From: azevaykin <145343289+azevaykin@users.noreply.github.com> Date: Tue, 14 May 2024 16:49:55 +0300 Subject: [PATCH 038/110] CalculateKeyBytes operator precedence fix (#4504) --- ydb/core/tx/datashard/datashard_user_db.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ydb/core/tx/datashard/datashard_user_db.cpp b/ydb/core/tx/datashard/datashard_user_db.cpp index 59edf2e6699d..5ebd83a294ee 100644 --- a/ydb/core/tx/datashard/datashard_user_db.cpp +++ b/ydb/core/tx/datashard/datashard_user_db.cpp @@ -45,11 +45,17 @@ NTable::EReady TDataShardUserDb::SelectRow( } ui64 CalculateKeyBytes(const TArrayRef key) { - return std::accumulate(key.begin(), key.end(), 0, [](ui64 bytes, const TRawTypeValue& value) { return bytes + value.IsEmpty() ? 1 : value.Size(); }); + ui64 bytes = 0ull; + for (const TRawTypeValue& value : key) + bytes += value.IsEmpty() ? 1ull : value.Size(); + return bytes; }; ui64 CalculateValueBytes(const TArrayRef ops) { - return std::accumulate(ops.begin(), ops.end(), 0, [](ui64 bytes, const NIceDb::TUpdateOp& op) { return bytes + op.Value.IsEmpty() ? 1 : op.Value.Size(); }); + ui64 bytes = 0ull; + for (const NIceDb::TUpdateOp& op : ops) + bytes += op.Value.IsEmpty() ? 1ull : op.Value.Size(); + return bytes; }; void TDataShardUserDb::UpdateRow( From d655aaa0be226334bdd36f686bcaeb400488153d Mon Sep 17 00:00:00 2001 From: niksaveliev Date: Tue, 14 May 2024 22:00:33 +0500 Subject: [PATCH 039/110] Kafka api charge extra RU on request (#3929) (#4472) --- .../kafka_proxy/actors/kafka_fetch_actor.cpp | 20 +++++++++---------- .../actors/kafka_produce_actor.cpp | 17 ++++++++++------ ydb/core/persqueue/fetch_request_actor.cpp | 17 ++++++++-------- ydb/core/persqueue/fetch_request_actor.h | 6 ++++-- ydb/core/persqueue/writer/writer.cpp | 2 +- ydb/core/protos/config.proto | 1 + ydb/core/protos/msgbus_pq.proto | 1 + 7 files changed, 36 insertions(+), 28 deletions(-) diff --git a/ydb/core/kafka_proxy/actors/kafka_fetch_actor.cpp b/ydb/core/kafka_proxy/actors/kafka_fetch_actor.cpp index 5cd0be58bd6b..4968aac5f210 100644 --- a/ydb/core/kafka_proxy/actors/kafka_fetch_actor.cpp +++ b/ydb/core/kafka_proxy/actors/kafka_fetch_actor.cpp @@ -34,9 +34,8 @@ void TKafkaFetchActor::SendFetchRequests(const TActorContext& ctx) { for (size_t topicIndex = 0; topicIndex < Response->Responses.size(); topicIndex++) { TVector partPQRequests; PrepareFetchRequestData(topicIndex, partPQRequests); - - NKikimr::NPQ::TFetchRequestSettings request(Context->DatabasePath, partPQRequests, FetchRequestData->MaxWaitMs, FetchRequestData->MaxBytes, Context->RlContext, *Context->UserToken); - + auto ruPerRequest = topicIndex == 0 && Context->Config.GetMeteringV2Enabled(); + NKikimr::NPQ::TFetchRequestSettings request(Context->DatabasePath, partPQRequests, FetchRequestData->MaxWaitMs, FetchRequestData->MaxBytes, Context->RlContext, *Context->UserToken, ruPerRequest); auto fetchActor = NKikimr::NPQ::CreatePQFetchRequestActor(request, NKikimr::MakeSchemeCacheID(), ctx.SelfID); auto actorId = ctx.Register(fetchActor); PendingResponses++; @@ -55,7 +54,6 @@ void TKafkaFetchActor::PrepareFetchRequestData(const size_t topicIndex, TVector< for (size_t partIndex = 0; partIndex < topicKafkaRequest.Partitions.size(); partIndex++) { auto& partKafkaRequest = topicKafkaRequest.Partitions[partIndex]; KAFKA_LOG_D(TStringBuilder() << "Fetch actor: New request. Topic: " << topicKafkaRequest.Topic.value() << " Partition: " << partKafkaRequest.Partition << " FetchOffset: " << partKafkaRequest.FetchOffset << " PartitionMaxBytes: " << partKafkaRequest.PartitionMaxBytes); - auto& partPQRequest = partPQRequests[partIndex]; partPQRequest.Topic = NormalizePath(Context->DatabasePath, topicKafkaRequest.Topic.value()); // FIXME(savnik): handle empty topic partPQRequest.Partition = partKafkaRequest.Partition; @@ -113,9 +111,9 @@ void TKafkaFetchActor::HandleSuccessResponse(const NKikimr::TEvPQ::TEvFetchRespo partKafkaResponse.ErrorCode = ConvertErrorCode(partPQResponse.GetReadResult().GetErrorCode()); if (partPQResponse.GetReadResult().GetErrorCode() != NPersQueue::NErrorCode::EErrorCode::OK) { - KAFKA_LOG_ERROR("Fetch actor: Failed to get responses for topic: " << topicResponse.Topic << - ", partition: " << partPQResponse.GetPartition() << - ". Code: " << static_cast(partPQResponse.GetReadResult().GetErrorCode()) << + KAFKA_LOG_ERROR("Fetch actor: Failed to get responses for topic: " << topicResponse.Topic << + ", partition: " << partPQResponse.GetPartition() << + ". Code: " << static_cast(partPQResponse.GetReadResult().GetErrorCode()) << ". Reason: " + partPQResponse.GetReadResult().GetErrorReason()); } @@ -174,7 +172,7 @@ void TKafkaFetchActor::FillRecordsBatch(const NKikimrClient::TPersQueueFetchResp record.TimestampDelta = lastTimestamp - baseTimestamp; record.Length = record.Size(TKafkaRecord::MessageMeta::PresentVersions.Max) - SizeOfZeroVarint; - KAFKA_LOG_D("Fetch actor: Record info. OffsetDelta: " << record.OffsetDelta << + KAFKA_LOG_D("Fetch actor: Record info. OffsetDelta: " << record.OffsetDelta << ", TimestampDelta: " << record.TimestampDelta << ", Length: " << record.Length); } @@ -187,11 +185,11 @@ void TKafkaFetchActor::FillRecordsBatch(const NKikimrClient::TPersQueueFetchResp //recordsBatch.Attributes https://kafka.apache.org/documentation/#recordbatch recordsBatch.BatchLength = recordsBatch.Size(TKafkaRecordBatch::MessageMeta::PresentVersions.Max) - BatchFirstTwoFieldsSize; - KAFKA_LOG_D("Fetch actor: RecordBatch info. BaseOffset: " << recordsBatch.BaseOffset << ", LastOffsetDelta: " << recordsBatch.LastOffsetDelta << - ", BaseTimestamp: " << recordsBatch.BaseTimestamp << ", MaxTimestamp: " << recordsBatch.MaxTimestamp << + KAFKA_LOG_D("Fetch actor: RecordBatch info. BaseOffset: " << recordsBatch.BaseOffset << ", LastOffsetDelta: " << recordsBatch.LastOffsetDelta << + ", BaseTimestamp: " << recordsBatch.BaseTimestamp << ", MaxTimestamp: " << recordsBatch.MaxTimestamp << ", BaseSequence: " << recordsBatch.BaseSequence << ", BatchLength: " << recordsBatch.BatchLength); auto topicWithoutDb = GetTopicNameWithoutDb(Context->DatabasePath, partPQResponse.GetTopic()); - ctx.Send(MakeKafkaMetricsServiceID(), new TEvKafka::TEvUpdateCounter(recordsBatch.Records.size(), BuildLabels(Context, "", topicWithoutDb, "api.kafka.fetch.messages", ""))); + ctx.Send(MakeKafkaMetricsServiceID(), new TEvKafka::TEvUpdateCounter(recordsBatch.Records.size(), BuildLabels(Context, "", topicWithoutDb, "api.kafka.fetch.messages", ""))); } void TKafkaFetchActor::RespondIfRequired(const TActorContext& ctx) { diff --git a/ydb/core/kafka_proxy/actors/kafka_produce_actor.cpp b/ydb/core/kafka_proxy/actors/kafka_produce_actor.cpp index 674eeca14436..adee25149f88 100644 --- a/ydb/core/kafka_proxy/actors/kafka_produce_actor.cpp +++ b/ydb/core/kafka_proxy/actors/kafka_produce_actor.cpp @@ -43,7 +43,7 @@ void TKafkaProduceActor::LogEvent(IEventHandle& ev) { void TKafkaProduceActor::SendMetrics(const TString& topicName, size_t delta, const TString& name, const TActorContext& ctx) { auto topicWithoutDb = GetTopicNameWithoutDb(Context->DatabasePath, topicName); ctx.Send(MakeKafkaMetricsServiceID(), new TEvKafka::TEvUpdateCounter(delta, BuildLabels(Context, "", topicWithoutDb, TStringBuilder() << "api.kafka.produce." << name, ""))); - ctx.Send(MakeKafkaMetricsServiceID(), new TEvKafka::TEvUpdateCounter(delta, BuildLabels(Context, "", topicWithoutDb, "api.kafka.produce.total_messages", ""))); + ctx.Send(MakeKafkaMetricsServiceID(), new TEvKafka::TEvUpdateCounter(delta, BuildLabels(Context, "", topicWithoutDb, "api.kafka.produce.total_messages", ""))); } void TKafkaProduceActor::Bootstrap(const NActors::TActorContext& /*ctx*/) { @@ -82,7 +82,7 @@ void TKafkaProduceActor::PassAway() { void TKafkaProduceActor::CleanTopics(const TActorContext& ctx) { const auto now = ctx.Now(); - std::map newTopics; + std::map newTopics; for(auto& [topicPath, topicInfo] : Topics) { if (topicInfo.ExpirationTime > now) { newTopics[topicPath] = std::move(topicInfo); @@ -242,7 +242,8 @@ size_t TKafkaProduceActor::EnqueueInitialization() { THolder Convert(const TProduceRequestData::TTopicProduceData::TPartitionProduceData& data, const TString& topicName, ui64 cookie, - const TString& clientDC) { + const TString& clientDC, + bool ruPerRequest) { auto ev = MakeHolder(); auto& request = ev->Record; @@ -254,6 +255,9 @@ THolder Convert(const TProduceRequestData:: partitionRequest->SetPartition(data.Index); // partitionRequest->SetCmdWriteOffset(); partitionRequest->SetCookie(cookie); + if (ruPerRequest) { + partitionRequest->SetMeteringV2Enabled(true); + } ui64 totalSize = 0; @@ -317,11 +321,11 @@ void TKafkaProduceActor::ProcessRequest(TPendingRequest::TPtr pendingRequest, co pendingRequest->StartTime = ctx.Now(); size_t position = 0; + bool ruPerRequest = Context->Config.GetMeteringV2Enabled(); for(const auto& topicData : r->TopicData) { const TString& topicPath = NormalizePath(Context->DatabasePath, *topicData.Name); for(const auto& partitionData : topicData.PartitionData) { const auto partitionId = partitionData.Index; - auto writer = PartitionWriter(topicPath, partitionId, ctx); if (OK == writer.first) { auto ownCookie = ++Cookie; @@ -334,7 +338,8 @@ void TKafkaProduceActor::ProcessRequest(TPendingRequest::TPtr pendingRequest, co pendingRequest->WaitAcceptingCookies.insert(ownCookie); pendingRequest->WaitResultCookies.insert(ownCookie); - auto ev = Convert(partitionData, *topicData.Name, ownCookie, ClientDC); + auto ev = Convert(partitionData, *topicData.Name, ownCookie, ClientDC, ruPerRequest); + ruPerRequest = false; Send(writer.second, std::move(ev)); } else { @@ -441,7 +446,7 @@ void TKafkaProduceActor::SendResults(const TActorContext& ctx) { // We send the results in the order of receipt of the request while (!PendingRequests.empty()) { auto pendingRequest = PendingRequests.front(); - + // We send the response by timeout. This is possible, for example, if the event was lost or the PartitionWrite died. bool expired = expireTime > pendingRequest->StartTime; diff --git a/ydb/core/persqueue/fetch_request_actor.cpp b/ydb/core/persqueue/fetch_request_actor.cpp index e2d4d3a39ff4..5237c692510e 100644 --- a/ydb/core/persqueue/fetch_request_actor.cpp +++ b/ydb/core/persqueue/fetch_request_actor.cpp @@ -75,7 +75,7 @@ struct TEvPrivate { bool CanProcessFetchRequest; //any partitions answered that it has data or WaitMs timeout occured ui32 FetchRequestReadsDone; - ui64 FetchRequestCurrentReadTablet; + ui64 FetchRequestCurrentReadTablet; ui64 CurrentCookie; ui32 FetchRequestBytesLeft; THolder Response; @@ -145,10 +145,10 @@ struct TEvPrivate { break; case EWakeupTag::RlNoResource: - // Re-requesting the quota. We do this until we get a quota. + // Re-requesting the quota. We do this until we get a quota. RequestDataQuota(PendingQuotaAmount, ctx); break; - + default: Y_VERIFY_DEBUG_S(false, "Unsupported tag: " << static_cast(tag)); } @@ -171,7 +171,7 @@ struct TEvPrivate { void SendSchemeCacheRequest(const TActorContext& ctx) { LOG_DEBUG_S(ctx, NKikimrServices::PQ_FETCH_REQUEST, "SendSchemeCacheRequest"); - + auto schemeCacheRequest = std::make_unique(1); schemeCacheRequest->DatabaseName = Settings.Database; @@ -250,7 +250,7 @@ struct TEvPrivate { ), ctx );; } - + auto& description = entry.PQGroupInfo->Description; auto& topicInfo = TopicInfo[path]; topicInfo.BalancerTabletId = description.GetBalancerTabletID(); @@ -345,7 +345,7 @@ struct TEvPrivate { if (HandlePipeError(tabletId, ctx)) return; - auto reason = TStringBuilder() << "Client pipe to " << tabletId << " connection error, Status" + auto reason = TStringBuilder() << "Client pipe to " << tabletId << " connection error, Status" << NKikimrProto::EReplyStatus_Name(msg->Status).data() << ", Marker# PQ6"; return SendReplyAndDie(CreateErrorReply(Ydb::StatusIds::INTERNAL_ERROR, reason), ctx); @@ -423,7 +423,7 @@ struct TEvPrivate { preq->Record.SetRequestId(reqId); auto partReq = preq->Record.MutablePartitionRequest(); partReq->SetCookie(CurrentCookie); - + partReq->SetTopic(topic); partReq->SetPartition(part); auto read = partReq->MutableCmdRead(); @@ -479,7 +479,8 @@ struct TEvPrivate { SetMeteringMode(it->second.PQInfo->Description.GetPQTabletConfig().GetMeteringMode()); if (IsQuotaRequired()) { - PendingQuotaAmount = CalcRuConsumption(GetPayloadSize(record)); + PendingQuotaAmount = CalcRuConsumption(GetPayloadSize(record)) + (Settings.RuPerRequest ? 1 : 0); + Settings.RuPerRequest = false; RequestDataQuota(PendingQuotaAmount, ctx); } else { ProceedFetchRequest(ctx); diff --git a/ydb/core/persqueue/fetch_request_actor.h b/ydb/core/persqueue/fetch_request_actor.h index e6adac4f9d62..153d35e19e77 100644 --- a/ydb/core/persqueue/fetch_request_actor.h +++ b/ydb/core/persqueue/fetch_request_actor.h @@ -15,7 +15,7 @@ struct TPartitionFetchRequest { ui64 Offset; ui64 MaxBytes; ui64 ReadTimestampMs; - + TPartitionFetchRequest(const TString& topic, ui32 partition, ui64 offset, ui64 maxBytes, ui64 readTimestampMs = 0, const TString& clientId = NKikimr::NPQ::CLIENTID_WITHOUT_CONSUMER) : Topic(topic) , ClientId(clientId) @@ -35,11 +35,12 @@ struct TFetchRequestSettings { ui64 MaxWaitTimeMs; ui64 TotalMaxBytes; TRlContext RlCtx; + bool RuPerRequest; ui64 RequestId = 0; TFetchRequestSettings( const TString& database, const TVector& partitions, ui64 maxWaitTimeMs, ui64 totalMaxBytes, TRlContext rlCtx, - const TMaybe& user = {}, ui64 requestId = 0 + const TMaybe& user = {}, ui64 requestId = 0, bool ruPerRequest = false ) : Database(database) , Partitions(partitions) @@ -47,6 +48,7 @@ struct TFetchRequestSettings { , MaxWaitTimeMs(maxWaitTimeMs) , TotalMaxBytes(totalMaxBytes) , RlCtx(rlCtx) + , RuPerRequest(ruPerRequest) , RequestId(requestId) {} }; diff --git a/ydb/core/persqueue/writer/writer.cpp b/ydb/core/persqueue/writer/writer.cpp index bf12ab4cafb5..9e1bdf721e50 100644 --- a/ydb/core/persqueue/writer/writer.cpp +++ b/ydb/core/persqueue/writer/writer.cpp @@ -489,7 +489,7 @@ class TPartitionWriter: public TActorBootstrapped, private TRl if (needToRequestQuota) { ++processed; - PendingQuotaAmount += CalcRuConsumption(it->second.ByteSize()); + PendingQuotaAmount += CalcRuConsumption(it->second.ByteSize()) + (it->second.GetPartitionRequest().GetMeteringV2Enabled() ? 1 : 0); PendingQuota.emplace_back(it->first); } diff --git a/ydb/core/protos/config.proto b/ydb/core/protos/config.proto index b5a2f5e034fe..1bb7717985cf 100644 --- a/ydb/core/protos/config.proto +++ b/ydb/core/protos/config.proto @@ -1701,6 +1701,7 @@ message TKafkaProxyConfig { } optional TProxy Proxy = 7; + optional bool MeteringV2Enabled = 10 [default = false]; } message TAwsCompatibilityConfig { diff --git a/ydb/core/protos/msgbus_pq.proto b/ydb/core/protos/msgbus_pq.proto index 87b3fa3cb2c9..6e4c186869dd 100644 --- a/ydb/core/protos/msgbus_pq.proto +++ b/ydb/core/protos/msgbus_pq.proto @@ -170,6 +170,7 @@ message TPersQueuePartitionRequest { optional bool IsDirectWrite = 18 [default = false]; optional uint64 PutUnitsSize = 19; optional int64 InitialSeqNo = 26; + optional bool MeteringV2Enabled = 27 [default = false]; } message TPersQueueMetaRequest { From f2758217f1237a22e6006e7fed5a584e31ed17d0 Mon Sep 17 00:00:00 2001 From: kruall Date: Thu, 16 May 2024 10:03:33 +0300 Subject: [PATCH 040/110] Pull out elapsed metrics even if actor still work (#4245) --- .../actors/core/executor_pool_basic.cpp | 21 ++------ ydb/library/actors/core/executor_pool_io.cpp | 26 ++++------ .../actors/core/executor_pool_shared.cpp | 1 - .../actors/core/executor_pool_shared.h | 1 - ydb/library/actors/core/executor_thread.cpp | 52 +++++++++++++++---- ydb/library/actors/core/executor_thread.h | 5 +- ydb/library/actors/core/executor_thread_ctx.h | 14 +++-- ydb/library/actors/core/thread_context.h | 23 +++----- 8 files changed, 77 insertions(+), 66 deletions(-) diff --git a/ydb/library/actors/core/executor_pool_basic.cpp b/ydb/library/actors/core/executor_pool_basic.cpp index 4c6db5d609a4..be76655b6bc9 100644 --- a/ydb/library/actors/core/executor_pool_basic.cpp +++ b/ydb/library/actors/core/executor_pool_basic.cpp @@ -162,13 +162,6 @@ namespace NActors { TWorkerId workerId = wctx.WorkerId; Y_DEBUG_ABORT_UNLESS(workerId < PoolThreads); - TlsThreadContext->Timers.Reset(); - - if (Harmonizer) { - LWPROBE(TryToHarmonize, PoolId, PoolName); - Harmonizer->Harmonize(TlsThreadContext->Timers.HPStart); - } - if (workerId >= 0) { Threads[workerId].UnsetWork(); } else { @@ -176,13 +169,16 @@ namespace NActors { wctx.SharedThread->UnsetWork(); } + if (Harmonizer) { + LWPROBE(TryToHarmonize, PoolId, PoolName); + Harmonizer->Harmonize(TlsThreadContext->StartOfElapsingTime.load(std::memory_order_relaxed)); + } + TAtomic x = AtomicGet(Semaphore); TSemaphore semaphore = TSemaphore::GetSemaphore(x); while (!StopFlag.load(std::memory_order_acquire)) { if (!semaphore.OldSemaphore || workerId >= 0 && semaphore.CurrentSleepThreadCount < 0) { if (workerId < 0 || !wctx.IsNeededToWaitNextActivation) { - TlsThreadContext->Timers.HPNow = GetCycleCountFast(); - wctx.AddElapsedCycles(ActorSystemIndex, TlsThreadContext->Timers.HPNow - TlsThreadContext->Timers.HPStart); return 0; } @@ -203,13 +199,6 @@ namespace NActors { wctx.SharedThread->SetWork(); } AtomicDecrement(Semaphore); - TlsThreadContext->Timers.HPNow = GetCycleCountFast(); - TlsThreadContext->Timers.Elapsed += TlsThreadContext->Timers.HPNow - TlsThreadContext->Timers.HPStart; - wctx.AddElapsedCycles(ActorSystemIndex, TlsThreadContext->Timers.Elapsed); - if (TlsThreadContext->Timers.Parked > 0) { - wctx.AddParkedCycles(TlsThreadContext->Timers.Parked); - } - return activation; } semaphore.CurrentSleepThreadCount++; diff --git a/ydb/library/actors/core/executor_pool_io.cpp b/ydb/library/actors/core/executor_pool_io.cpp index 1046d6ea66cd..2acced884827 100644 --- a/ydb/library/actors/core/executor_pool_io.cpp +++ b/ydb/library/actors/core/executor_pool_io.cpp @@ -30,31 +30,27 @@ namespace NActors { i16 workerId = wctx.WorkerId; Y_DEBUG_ABORT_UNLESS(workerId < PoolThreads); - NHPTimer::STime elapsed = 0; - NHPTimer::STime parked = 0; - NHPTimer::STime hpstart = GetCycleCountFast(); - NHPTimer::STime hpnow; - const TAtomic x = AtomicDecrement(Semaphore); if (x < 0) { TExecutorThreadCtx& threadCtx = Threads[workerId]; ThreadQueue.Push(workerId + 1, revolvingCounter); - hpnow = GetCycleCountFast(); - elapsed += hpnow - hpstart; + + NHPTimer::STime hpnow = GetCycleCountFast(); + NHPTimer::STime hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + TlsThreadContext->ElapsingActorActivity.store(Max(), std::memory_order_release); + wctx.AddElapsedCycles(ActorSystemIndex, hpnow - hpprev); + if (threadCtx.WaitingPad.Park()) return 0; - hpstart = GetCycleCountFast(); - parked += hpstart - hpnow; + + hpnow = GetCycleCountFast(); + hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + TlsThreadContext->ElapsingActorActivity.store(ActorSystemIndex, std::memory_order_release); + wctx.AddParkedCycles(hpnow - hpprev); } while (!StopFlag.load(std::memory_order_acquire)) { if (const ui32 activation = Activations.Pop(++revolvingCounter)) { - hpnow = GetCycleCountFast(); - elapsed += hpnow - hpstart; - wctx.AddElapsedCycles(ActorSystemIndex, elapsed); - if (parked > 0) { - wctx.AddParkedCycles(parked); - } return activation; } SpinLockPause(); diff --git a/ydb/library/actors/core/executor_pool_shared.cpp b/ydb/library/actors/core/executor_pool_shared.cpp index f9b769d40494..990c7d7ca52c 100644 --- a/ydb/library/actors/core/executor_pool_shared.cpp +++ b/ydb/library/actors/core/executor_pool_shared.cpp @@ -20,7 +20,6 @@ TSharedExecutorPool::TSharedExecutorPool(const TSharedExecutorPoolConfig &config , PoolCount(poolCount) , SharedThreadCount(poolsWithThreads.size()) , Threads(new TSharedExecutorThreadCtx[SharedThreadCount]) - , Timers(new TTimers[SharedThreadCount]) , TimePerMailbox(config.TimePerMailbox) , EventsPerMailbox(config.EventsPerMailbox) , SoftProcessingDurationTs(config.SoftProcessingDurationTs) diff --git a/ydb/library/actors/core/executor_pool_shared.h b/ydb/library/actors/core/executor_pool_shared.h index 2f0eb6097323..c8a8594012d0 100644 --- a/ydb/library/actors/core/executor_pool_shared.h +++ b/ydb/library/actors/core/executor_pool_shared.h @@ -43,7 +43,6 @@ namespace NActors { i16 PoolCount; i16 SharedThreadCount; std::unique_ptr Threads; - std::unique_ptr Timers; std::unique_ptr ScheduleReaders; std::unique_ptr ScheduleWriters; diff --git a/ydb/library/actors/core/executor_thread.cpp b/ydb/library/actors/core/executor_thread.cpp index 7262b2b4cf14..bddbb7e66d2b 100644 --- a/ydb/library/actors/core/executor_thread.cpp +++ b/ydb/library/actors/core/executor_thread.cpp @@ -48,6 +48,7 @@ namespace NActors { , ThreadName(threadName) , TimePerMailbox(timePerMailbox) , EventsPerMailbox(eventsPerMailbox) + , ActorSystemIndex(TActorTypeOperator::GetActorSystemIndex()) { Ctx.Switch( ExecutorPool, @@ -75,6 +76,7 @@ namespace NActors { , EventsPerMailbox(eventsPerMailbox) , SoftProcessingDurationTs(softProcessingDurationTs) , SharedStats(poolCount) + , ActorSystemIndex(TActorTypeOperator::GetActorSystemIndex()) { Ctx.Switch( ExecutorPool, @@ -189,7 +191,6 @@ namespace NActors { Ctx.HPStart = GetCycleCountFast(); Ctx.ExecutedEvents = 0; } - NHPTimer::STime hpprev = Ctx.HPStart; IActor* actor = nullptr; const std::type_info* actorType = nullptr; @@ -198,10 +199,14 @@ namespace NActors { bool firstEvent = true; bool preempted = false; bool wasWorking = false; + NHPTimer::STime hpnow = Ctx.HPStart; + NHPTimer::STime hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + Ctx.AddElapsedCycles(ActorSystemIndex, hpnow - hpprev); + hpprev = Ctx.HPStart; + for (; Ctx.ExecutedEvents < Ctx.EventsPerMailbox; ++Ctx.ExecutedEvents) { if (TAutoPtr evExt = mailbox->Pop()) { mailbox->ProcessEvents(mailbox); - NHPTimer::STime hpnow; recipient = evExt->GetRecipientRewrite(); TActorContext ctx(*mailbox, *this, hpprev, recipient); TlsActivationContext = &ctx; // ensure dtor (if any) is called within actor system @@ -239,9 +244,14 @@ namespace NActors { if (activityType != prevActivityType) { prevActivityType = activityType; NProfiling::TMemoryTagScope::Reset(activityType); + TlsThreadContext->ElapsingActorActivity.store(activityType, std::memory_order_release); } actor->Receive(ev); + + hpnow = GetCycleCountFast(); + hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + mailbox->ProcessEvents(mailbox); actor->OnDequeueEvent(); @@ -256,7 +266,6 @@ namespace NActors { if (mailbox->IsEmpty()) // was not-free and become free, we must reclaim mailbox reclaimAsFree = true; - hpnow = GetCycleCountFast(); NHPTimer::STime elapsed = Ctx.AddEventProcessingStats(hpprev, hpnow, activityType, CurrentActorScheduledEventsCounter); if (elapsed > 1000000) { LwTraceSlowEvent(ev.Get(), evTypeForTracing, actorType, Ctx.PoolId, CurrentRecipient, NHPTimer::GetSeconds(elapsed) * 1000.0); @@ -277,10 +286,10 @@ namespace NActors { Ctx.IncrementNonDeliveredEvents(); } hpnow = GetCycleCountFast(); + hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + Ctx.AddElapsedCycles(ActorSystemIndex, hpnow - hpprev); } - hpprev = hpnow; - if (TlsThreadContext->CapturedType == ESendingType::Tail) { AtomicStore(&mailbox->ScheduleMoment, hpnow); Ctx.IncrementMailboxPushedOutByTailSending(); @@ -360,6 +369,7 @@ namespace NActors { break; // empty queue, leave } } + TlsThreadContext->ElapsingActorActivity.store(ActorSystemIndex, std::memory_order_release); NProfiling::TMemoryTagScope::Reset(0); TlsActivationContext = nullptr; @@ -495,8 +505,11 @@ namespace NActors { ThreadDisableBalloc(); #endif - TThreadContext threadCtx; - TlsThreadContext = &threadCtx; + TlsThreadCtx.WorkerCtx = &Ctx; + TlsThreadCtx.ActorSystemIndex = ActorSystemIndex; + TlsThreadCtx.ElapsingActorActivity = ActorSystemIndex; + TlsThreadCtx.StartOfElapsingTime = GetCycleCountFast(); + TlsThreadContext = &TlsThreadCtx; if (ThreadName) { ::SetCurrentThreadName(ThreadName); } @@ -529,8 +542,11 @@ namespace NActors { ThreadDisableBalloc(); #endif - TThreadContext threadCtx; - TlsThreadContext = &threadCtx; + TlsThreadCtx.WorkerCtx = &Ctx; + TlsThreadCtx.ActorSystemIndex = ActorSystemIndex; + TlsThreadCtx.ElapsingActorActivity = ActorSystemIndex; + TlsThreadCtx.StartOfElapsingTime = GetCycleCountFast(); + TlsThreadContext = &TlsThreadCtx; if (ThreadName) { ::SetCurrentThreadName(ThreadName); } @@ -551,7 +567,7 @@ namespace NActors { } if (!wasWorking && !StopFlag.load(std::memory_order_relaxed)) { - TlsThreadContext->Timers.Reset(); + ThreadCtx->UnsetWork(); ThreadCtx->Wait(0, &StopFlag); } @@ -760,10 +776,26 @@ namespace NActors { } void TGenericExecutorThread::GetCurrentStats(TExecutorThreadStats& statsCopy) const { + NHPTimer::STime hpnow = GetCycleCountFast(); + ui64 activityType = TlsThreadCtx.ElapsingActorActivity.load(std::memory_order_acquire); + NHPTimer::STime hpprev = TlsThreadCtx.StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + if (activityType == Max()) { + Ctx.AddParkedCycles(hpnow - hpprev); + } else { + Ctx.AddElapsedCycles(activityType, hpnow - hpprev); + } Ctx.GetCurrentStats(statsCopy); } void TGenericExecutorThread::GetSharedStats(i16 poolId, TExecutorThreadStats &statsCopy) const { + NHPTimer::STime hpnow = GetCycleCountFast(); + ui64 activityType = TlsThreadCtx.ElapsingActorActivity.load(std::memory_order_acquire); + NHPTimer::STime hpprev = TlsThreadCtx.StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + if (activityType == Max()) { + Ctx.AddParkedCycles(hpnow - hpprev); + } else { + Ctx.AddElapsedCycles(activityType, hpnow - hpprev); + } statsCopy = TExecutorThreadStats(); statsCopy.Aggregate(SharedStats[poolId]); } diff --git a/ydb/library/actors/core/executor_thread.h b/ydb/library/actors/core/executor_thread.h index b9a339648b6f..d8ef032f4d3f 100644 --- a/ydb/library/actors/core/executor_thread.h +++ b/ydb/library/actors/core/executor_thread.h @@ -4,6 +4,7 @@ #include "event.h" #include "callstack.h" #include "probes.h" +#include "thread_context.h" #include "worker_context.h" #include "log_settings.h" @@ -92,7 +93,8 @@ namespace NActors { ui64 CurrentActorScheduledEventsCounter = 0; // Thread-specific - TWorkerContext Ctx; + mutable TThreadContext TlsThreadCtx; + mutable TWorkerContext Ctx; ui64 RevolvingReadCounter = 0; ui64 RevolvingWriteCounter = 0; const TString ThreadName; @@ -104,6 +106,7 @@ namespace NActors { ui64 SoftProcessingDurationTs; std::vector SharedStats; + const ui32 ActorSystemIndex; }; class TExecutorThread: public TGenericExecutorThread { diff --git a/ydb/library/actors/core/executor_thread_ctx.h b/ydb/library/actors/core/executor_thread_ctx.h index 7af5a085dd1d..dd0d1b1c7193 100644 --- a/ydb/library/actors/core/executor_thread_ctx.h +++ b/ydb/library/actors/core/executor_thread_ctx.h @@ -2,6 +2,7 @@ #include "defs.h" #include "thread_context.h" +#include "worker_context.h" #include #include @@ -95,16 +96,19 @@ namespace NActors { return false; } + NHPTimer::STime hpnow = GetCycleCountFast(); + NHPTimer::STime hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + TlsThreadContext->ElapsingActorActivity.store(Max(), std::memory_order_release); + TlsThreadContext->WorkerCtx->AddElapsedCycles(TlsThreadContext->ActorSystemIndex, hpnow - hpprev); do { - TlsThreadContext->Timers.HPNow = GetCycleCountFast(); - TlsThreadContext->Timers.Elapsed += TlsThreadContext->Timers.HPNow - TlsThreadContext->Timers.HPStart; if (WaitingPad.Park()) // interrupted return true; - TlsThreadContext->Timers.HPStart = GetCycleCountFast(); - TlsThreadContext->Timers.Parked += TlsThreadContext->Timers.HPStart - TlsThreadContext->Timers.HPNow; + hpnow = GetCycleCountFast(); + hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + TlsThreadContext->WorkerCtx->AddParkedCycles(hpnow - hpprev); state = GetState(); } while (static_cast(state) == EThreadState::Sleep && !stopFlag->load(std::memory_order_relaxed)); - + TlsThreadContext->ElapsingActorActivity.store(TlsThreadContext->ActorSystemIndex, std::memory_order_release); static_cast(this)->AfterWakeUp(state); return false; } diff --git a/ydb/library/actors/core/thread_context.h b/ydb/library/actors/core/thread_context.h index 0ddaffd1c5e3..d19ae3cd1e08 100644 --- a/ydb/library/actors/core/thread_context.h +++ b/ydb/library/actors/core/thread_context.h @@ -11,26 +11,11 @@ namespace NActors { class IExecutorPool; + struct TWorkerContext; template struct TWaitingStats; - struct TTimers { - NHPTimer::STime Elapsed = 0; - NHPTimer::STime Parked = 0; - NHPTimer::STime Blocked = 0; - NHPTimer::STime HPStart = GetCycleCountFast(); - NHPTimer::STime HPNow; - - void Reset() { - Elapsed = 0; - Parked = 0; - Blocked = 0; - HPStart = GetCycleCountFast(); - HPNow = HPStart; - } - }; - struct TThreadContext { IExecutorPool *Pool = nullptr; ui32 CapturedActivation = 0; @@ -42,8 +27,12 @@ namespace NActors { ui16 LocalQueueSize = 0; TWaitingStats *WaitingStats = nullptr; bool IsCurrentRecipientAService = false; - TTimers Timers; TMPMCRingQueue<20>::EPopMode ActivationPopMode = TMPMCRingQueue<20>::EPopMode::ReallySlow; + + std::atomic StartOfElapsingTime = 0; + std::atomic ElapsingActorActivity = 0; + TWorkerContext *WorkerCtx = nullptr; + ui32 ActorSystemIndex = 0; }; extern Y_POD_THREAD(TThreadContext*) TlsThreadContext; // in actor.cpp From 920ac4a7916b96aaeeee77c82466d623b356ae11 Mon Sep 17 00:00:00 2001 From: kruall Date: Thu, 16 May 2024 15:05:13 +0300 Subject: [PATCH 041/110] fix walking back start of elapsing time (#4578) --- ydb/library/actors/core/executor_pool_io.cpp | 4 ++-- ydb/library/actors/core/executor_thread.cpp | 22 ++++++++++--------- ydb/library/actors/core/executor_thread_ctx.h | 4 ++-- ydb/library/actors/core/thread_context.h | 16 +++++++++++++- ydb/library/actors/core/worker_context.h | 13 ++++++----- 5 files changed, 39 insertions(+), 20 deletions(-) diff --git a/ydb/library/actors/core/executor_pool_io.cpp b/ydb/library/actors/core/executor_pool_io.cpp index 2acced884827..22746df755cc 100644 --- a/ydb/library/actors/core/executor_pool_io.cpp +++ b/ydb/library/actors/core/executor_pool_io.cpp @@ -36,7 +36,7 @@ namespace NActors { ThreadQueue.Push(workerId + 1, revolvingCounter); NHPTimer::STime hpnow = GetCycleCountFast(); - NHPTimer::STime hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + NHPTimer::STime hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); TlsThreadContext->ElapsingActorActivity.store(Max(), std::memory_order_release); wctx.AddElapsedCycles(ActorSystemIndex, hpnow - hpprev); @@ -44,7 +44,7 @@ namespace NActors { return 0; hpnow = GetCycleCountFast(); - hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); TlsThreadContext->ElapsingActorActivity.store(ActorSystemIndex, std::memory_order_release); wctx.AddParkedCycles(hpnow - hpprev); } diff --git a/ydb/library/actors/core/executor_thread.cpp b/ydb/library/actors/core/executor_thread.cpp index bddbb7e66d2b..805ea4e338c2 100644 --- a/ydb/library/actors/core/executor_thread.cpp +++ b/ydb/library/actors/core/executor_thread.cpp @@ -199,16 +199,16 @@ namespace NActors { bool firstEvent = true; bool preempted = false; bool wasWorking = false; - NHPTimer::STime hpnow = Ctx.HPStart; - NHPTimer::STime hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + NHPTimer::STime hpnow = Ctx.HPStart; + NHPTimer::STime hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); Ctx.AddElapsedCycles(ActorSystemIndex, hpnow - hpprev); - hpprev = Ctx.HPStart; + NHPTimer::STime eventStart = Ctx.HPStart; for (; Ctx.ExecutedEvents < Ctx.EventsPerMailbox; ++Ctx.ExecutedEvents) { if (TAutoPtr evExt = mailbox->Pop()) { mailbox->ProcessEvents(mailbox); recipient = evExt->GetRecipientRewrite(); - TActorContext ctx(*mailbox, *this, hpprev, recipient); + TActorContext ctx(*mailbox, *this, eventStart, recipient); TlsActivationContext = &ctx; // ensure dtor (if any) is called within actor system // move for destruct before ctx; auto ev = std::move(evExt); @@ -250,7 +250,7 @@ namespace NActors { actor->Receive(ev); hpnow = GetCycleCountFast(); - hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); mailbox->ProcessEvents(mailbox); actor->OnDequeueEvent(); @@ -265,8 +265,9 @@ namespace NActors { if (mailbox->IsEmpty()) // was not-free and become free, we must reclaim mailbox reclaimAsFree = true; - - NHPTimer::STime elapsed = Ctx.AddEventProcessingStats(hpprev, hpnow, activityType, CurrentActorScheduledEventsCounter); + + Ctx.AddElapsedCycles(activityType, hpnow - hpprev); + NHPTimer::STime elapsed = Ctx.AddEventProcessingStats(eventStart, hpnow, activityType, CurrentActorScheduledEventsCounter); if (elapsed > 1000000) { LwTraceSlowEvent(ev.Get(), evTypeForTracing, actorType, Ctx.PoolId, CurrentRecipient, NHPTimer::GetSeconds(elapsed) * 1000.0); } @@ -286,9 +287,10 @@ namespace NActors { Ctx.IncrementNonDeliveredEvents(); } hpnow = GetCycleCountFast(); - hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); Ctx.AddElapsedCycles(ActorSystemIndex, hpnow - hpprev); } + eventStart = hpnow; if (TlsThreadContext->CapturedType == ESendingType::Tail) { AtomicStore(&mailbox->ScheduleMoment, hpnow); @@ -778,7 +780,7 @@ namespace NActors { void TGenericExecutorThread::GetCurrentStats(TExecutorThreadStats& statsCopy) const { NHPTimer::STime hpnow = GetCycleCountFast(); ui64 activityType = TlsThreadCtx.ElapsingActorActivity.load(std::memory_order_acquire); - NHPTimer::STime hpprev = TlsThreadCtx.StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + NHPTimer::STime hpprev = TlsThreadCtx.UpdateStartOfElapsingTime(hpnow); if (activityType == Max()) { Ctx.AddParkedCycles(hpnow - hpprev); } else { @@ -790,7 +792,7 @@ namespace NActors { void TGenericExecutorThread::GetSharedStats(i16 poolId, TExecutorThreadStats &statsCopy) const { NHPTimer::STime hpnow = GetCycleCountFast(); ui64 activityType = TlsThreadCtx.ElapsingActorActivity.load(std::memory_order_acquire); - NHPTimer::STime hpprev = TlsThreadCtx.StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + NHPTimer::STime hpprev = TlsThreadCtx.UpdateStartOfElapsingTime(hpnow); if (activityType == Max()) { Ctx.AddParkedCycles(hpnow - hpprev); } else { diff --git a/ydb/library/actors/core/executor_thread_ctx.h b/ydb/library/actors/core/executor_thread_ctx.h index dd0d1b1c7193..c8c7110ef977 100644 --- a/ydb/library/actors/core/executor_thread_ctx.h +++ b/ydb/library/actors/core/executor_thread_ctx.h @@ -97,14 +97,14 @@ namespace NActors { } NHPTimer::STime hpnow = GetCycleCountFast(); - NHPTimer::STime hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + NHPTimer::STime hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); TlsThreadContext->ElapsingActorActivity.store(Max(), std::memory_order_release); TlsThreadContext->WorkerCtx->AddElapsedCycles(TlsThreadContext->ActorSystemIndex, hpnow - hpprev); do { if (WaitingPad.Park()) // interrupted return true; hpnow = GetCycleCountFast(); - hpprev = TlsThreadContext->StartOfElapsingTime.exchange(hpnow, std::memory_order_acq_rel); + hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); TlsThreadContext->WorkerCtx->AddParkedCycles(hpnow - hpprev); state = GetState(); } while (static_cast(state) == EThreadState::Sleep && !stopFlag->load(std::memory_order_relaxed)); diff --git a/ydb/library/actors/core/thread_context.h b/ydb/library/actors/core/thread_context.h index d19ae3cd1e08..34d8e6fdc3dd 100644 --- a/ydb/library/actors/core/thread_context.h +++ b/ydb/library/actors/core/thread_context.h @@ -2,6 +2,7 @@ #include "defs.h" +#include #include #include @@ -29,10 +30,23 @@ namespace NActors { bool IsCurrentRecipientAService = false; TMPMCRingQueue<20>::EPopMode ActivationPopMode = TMPMCRingQueue<20>::EPopMode::ReallySlow; - std::atomic StartOfElapsingTime = 0; + std::atomic StartOfElapsingTime = 0; std::atomic ElapsingActorActivity = 0; TWorkerContext *WorkerCtx = nullptr; ui32 ActorSystemIndex = 0; + + ui64 UpdateStartOfElapsingTime(i64 newValue) { + i64 oldValue = StartOfElapsingTime.load(std::memory_order_acquire); + for (;;) { + if (newValue - oldValue <= 0) { + break; + } + if (StartOfElapsingTime.compare_exchange_strong(oldValue, newValue, std::memory_order_acq_rel)) { + break; + } + } + return oldValue; + } }; extern Y_POD_THREAD(TThreadContext*) TlsThreadContext; // in actor.cpp diff --git a/ydb/library/actors/core/worker_context.h b/ydb/library/actors/core/worker_context.h index bdec5145a1d4..0fc6ea831d78 100644 --- a/ydb/library/actors/core/worker_context.h +++ b/ydb/library/actors/core/worker_context.h @@ -51,13 +51,17 @@ namespace NActors { } void AddElapsedCycles(ui32 activityType, i64 elapsed) { - Y_DEBUG_ABORT_UNLESS(activityType < Stats->MaxActivityType()); - RelaxedStore(&Stats->ElapsedTicks, RelaxedLoad(&Stats->ElapsedTicks) + elapsed); - RelaxedStore(&Stats->ElapsedTicksByActivity[activityType], RelaxedLoad(&Stats->ElapsedTicksByActivity[activityType]) + elapsed); + if (Y_LIKELY(elapsed > 0)) { + Y_DEBUG_ABORT_UNLESS(activityType < Stats->MaxActivityType()); + RelaxedStore(&Stats->ElapsedTicks, RelaxedLoad(&Stats->ElapsedTicks) + elapsed); + RelaxedStore(&Stats->ElapsedTicksByActivity[activityType], RelaxedLoad(&Stats->ElapsedTicksByActivity[activityType]) + elapsed); + } } void AddParkedCycles(i64 elapsed) { - RelaxedStore(&Stats->ParkedTicks, RelaxedLoad(&Stats->ParkedTicks) + elapsed); + if (Y_LIKELY(elapsed > 0)) { + RelaxedStore(&Stats->ParkedTicks, RelaxedLoad(&Stats->ParkedTicks) + elapsed); + } } void AddBlockedCycles(i64 elapsed) { @@ -126,7 +130,6 @@ namespace NActors { RelaxedStore(&Stats->ReceivedEvents, RelaxedLoad(&Stats->ReceivedEvents) + 1); RelaxedStore(&Stats->ReceivedEventsByActivity[activityType], RelaxedLoad(&Stats->ReceivedEventsByActivity[activityType]) + 1); RelaxedStore(&Stats->ScheduledEventsByActivity[activityType], RelaxedLoad(&Stats->ScheduledEventsByActivity[activityType]) + scheduled); - AddElapsedCycles(activityType, elapsed); return elapsed; } From 97c9e873ee9b08dd709430248f9ef7dccc29f94a Mon Sep 17 00:00:00 2001 From: Ilnaz Nizametdinov Date: Thu, 16 May 2024 18:35:06 +0300 Subject: [PATCH 042/110] 24-1: Mark reenqueued records & forcibly request them (#4597) --- .../change_sender_common_ops.cpp | 22 ++++++--------- .../change_sender_common_ops.h | 28 +++++++++++++++---- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/ydb/core/change_exchange/change_sender_common_ops.cpp b/ydb/core/change_exchange/change_sender_common_ops.cpp index a2450d21746e..8b10355730a7 100644 --- a/ydb/core/change_exchange/change_sender_common_ops.cpp +++ b/ydb/core/change_exchange/change_sender_common_ops.cpp @@ -18,7 +18,7 @@ void TBaseChangeSender::LazyCreateSender(THashMap& senders, ui64 for (const auto& [order, broadcast] : Broadcasting) { if (AddBroadcastPartition(order, partitionId)) { // re-enqueue record to send it in the correct order - Enqueued.insert(broadcast.Record); + Enqueued.insert(ReEnqueue(broadcast.Record)); } } } @@ -95,21 +95,22 @@ void TBaseChangeSender::EnqueueRecords(TVector records; + TVector records; + bool exceeded = false; while (it != Enqueued.end()) { if (MemUsage && (MemUsage + it->BodySize) > MemLimit) { - if (!forceAtLeastOne) { + if (!it->ReEnqueued || exceeded) { break; } - forceAtLeastOne = false; + exceeded = true; } MemUsage += it->BodySize; @@ -165,16 +166,11 @@ void TBaseChangeSender::SendRecords() { THashSet registrations; bool needToResolve = false; - // used to avoid deadlock between RequestRecords & SendRecords - bool processedAtLeastOne = false; - while (it != PendingSent.end()) { if (Enqueued && Enqueued.begin()->Order <= it->first) { break; } - processedAtLeastOne = true; - if (PendingBody && PendingBody.begin()->Order <= it->first) { break; } @@ -232,7 +228,7 @@ void TBaseChangeSender::SendRecords() { Resolver->Resolve(); } - RequestRecords(!processedAtLeastOne); + RequestRecords(); } void TBaseChangeSender::ForgetRecords(TVector&& records) { @@ -314,12 +310,12 @@ void TBaseChangeSender::SendPreparedRecords(ui64 partitionId) { void TBaseChangeSender::ReEnqueueRecords(const TSender& sender) { for (const auto& record : sender.Pending) { - Enqueued.insert(record); + Enqueued.insert(ReEnqueue(record)); } for (const auto& record : sender.Prepared) { if (!record->IsBroadcast()) { - Enqueued.emplace(record->GetOrder(), record->GetBody().size()); + Enqueued.insert(ReEnqueue(record->GetOrder(), record->GetBody().size())); MemUsage -= record->GetBody().size(); } } diff --git a/ydb/core/change_exchange/change_sender_common_ops.h b/ydb/core/change_exchange/change_sender_common_ops.h index a370d20e9587..3a3faf5412a4 100644 --- a/ydb/core/change_exchange/change_sender_common_ops.h +++ b/ydb/core/change_exchange/change_sender_common_ops.h @@ -76,19 +76,35 @@ class IChangeSenderResolver { }; class TBaseChangeSender: public IChangeSender { - using TEnqueuedRecord = TEvChangeExchange::TEvRequestRecords::TRecordInfo; - using TRequestedRecord = TEvChangeExchange::TEvRequestRecords::TRecordInfo; + using TIncompleteRecord = TEvChangeExchange::TEvRequestRecords::TRecordInfo; + + struct TEnqueuedRecord: TIncompleteRecord { + bool ReEnqueued = false; + + using TIncompleteRecord::TIncompleteRecord; + explicit TEnqueuedRecord(const TIncompleteRecord& record) + : TIncompleteRecord(record) + { + } + }; + + template + static TEnqueuedRecord ReEnqueue(Args&&... args) { + TEnqueuedRecord record(std::forward(args)...); + record.ReEnqueued = true; + return record; + } struct TSender { TActorId ActorId; bool Ready = false; - TVector Pending; + TVector Pending; TVector Prepared; TVector Broadcasting; }; struct TBroadcast { - const TEnqueuedRecord Record; + const TIncompleteRecord Record; THashSet Partitions; THashSet PendingPartitions; THashSet CompletedPartitions; @@ -99,7 +115,7 @@ class TBaseChangeSender: public IChangeSender { void CreateMissingSenders(const TVector& partitionIds); void RecreateSenders(const TVector& partitionIds); - bool RequestRecords(bool forceAtLeastOne = false); + bool RequestRecords(); void SendRecords(); void SendPreparedRecords(ui64 partitionId); @@ -156,7 +172,7 @@ class TBaseChangeSender: public IChangeSender { THashMap Senders; // ui64 is partition id TSet Enqueued; - TSet PendingBody; + TSet PendingBody; TMap PendingSent; // ui64 is order THashMap Broadcasting; // ui64 is order From 6e76cc826a44114e86f8bfcf7d92259342a32522 Mon Sep 17 00:00:00 2001 From: Aleksei Borzenkov Date: Fri, 17 May 2024 11:59:28 +0300 Subject: [PATCH 043/110] 24-1: Support arbiters in volatile transactions (#4371) --- ydb/core/protos/data_events.proto | 10 + ydb/core/protos/tx_datashard.proto | 4 + ydb/core/tablet/tablet_pipe_client_cache.cpp | 6 +- ydb/core/tx/datashard/datashard.cpp | 37 ++ ydb/core/tx/datashard/datashard__init.cpp | 1 + .../tx/datashard/datashard_common_upload.cpp | 1 + .../tx/datashard/datashard_direct_erase.cpp | 1 + ydb/core/tx/datashard/datashard_impl.h | 1 + ydb/core/tx/datashard/datashard_kqp.cpp | 25 + ydb/core/tx/datashard/datashard_kqp.h | 3 + .../tx/datashard/datashard_outreadset.cpp | 81 ++- ydb/core/tx/datashard/datashard_outreadset.h | 41 +- .../tx/datashard/datashard_ut_volatile.cpp | 488 ++++++++++++++++++ .../tx/datashard/execute_data_tx_unit.cpp | 1 + .../execute_distributed_erase_tx_unit.cpp | 1 + .../tx/datashard/execute_kqp_data_tx_unit.cpp | 3 + ydb/core/tx/datashard/volatile_tx.cpp | 37 ++ ydb/core/tx/datashard/volatile_tx.h | 8 + 18 files changed, 733 insertions(+), 16 deletions(-) diff --git a/ydb/core/protos/data_events.proto b/ydb/core/protos/data_events.proto index 25945777d2cc..0989420123b0 100644 --- a/ydb/core/protos/data_events.proto +++ b/ydb/core/protos/data_events.proto @@ -27,6 +27,16 @@ message TKqpLocks { Rollback = 3; // Rollback buffered changes and erase locks } optional ELocksOp Op = 4; + + // An optional arbiter for readsets. When specified, all sending shards + // send the commit decision to a single arbiter shard, and all receiving + // shards wait for the commit decision from a single arbiter shard. The + // shard marked as the arbiter is responsible in aggregating all commit + // decisions from sending shards and sending the final commit decision to + // receiving shards. + // This may only be used with generic readsets without any other data and + // currently limited to volatile transactions. + optional uint64 ArbiterShard = 5; } message TTableId { diff --git a/ydb/core/protos/tx_datashard.proto b/ydb/core/protos/tx_datashard.proto index 6a1313776694..dca9720c06d6 100644 --- a/ydb/core/protos/tx_datashard.proto +++ b/ydb/core/protos/tx_datashard.proto @@ -1882,6 +1882,10 @@ message TTxVolatileDetails { // When true all preceding transactions are dependencies optional bool CommitOrdered = 8; + + // When true marks an arbiter for other participants + // Arbiters hold outgoing readsets until the transaction is decided + optional bool IsArbiter = 9; } // Sent by datashard when some overload reason stopped being relevant diff --git a/ydb/core/tablet/tablet_pipe_client_cache.cpp b/ydb/core/tablet/tablet_pipe_client_cache.cpp index da62c536265c..e31f879354b9 100644 --- a/ydb/core/tablet/tablet_pipe_client_cache.cpp +++ b/ydb/core/tablet/tablet_pipe_client_cache.cpp @@ -183,13 +183,17 @@ namespace NTabletPipe { } private: - void MoveToPool(ui64 tabletId, const TClientCacheEntry& currentClient) { + void MoveToPool(ui64 tabletId, TClientCacheEntry& currentClient) { TClientCacheEntry* insertedClient; if (!PoolContainer->Insert(tabletId, currentClient, insertedClient)) { Y_DEBUG_ABORT_UNLESS(!insertedClient->Client); *insertedClient = currentClient; } + // Note: client was moved to pool, make sure it's not closed by + // the eviction callback + currentClient.Client = {}; + Container->Erase(tabletId); } diff --git a/ydb/core/tx/datashard/datashard.cpp b/ydb/core/tx/datashard/datashard.cpp index 1bf0be413b01..45f6147add02 100644 --- a/ydb/core/tx/datashard/datashard.cpp +++ b/ydb/core/tx/datashard/datashard.cpp @@ -438,6 +438,29 @@ void TDataShard::SendRegistrationRequestTimeCast(const TActorContext &ctx) { } } +class TDataShard::TSendArbiterReadSets final : public IVolatileTxCallback { +public: + TSendArbiterReadSets(TDataShard* self, TVector>&& readSets) + : Self(self) + , ReadSets(std::move(readSets)) + {} + + void OnCommit(ui64) override { + // The transaction is persistent and committed + // Arbiter must now send its outgoing readsets + Self->SendReadSets(TActivationContext::ActorContextFor(Self->SelfId()), std::move(ReadSets)); + } + + void OnAbort(ui64) override { + // ReadSets are persistently replaced on abort and sent by volatile tx manager + // Previously generated readsets must be ignored + } + +private: + TDataShard* Self; + TVector> ReadSets; +}; + void TDataShard::PrepareAndSaveOutReadSets(ui64 step, ui64 txId, const TMap, TString>& txOutReadSets, @@ -450,6 +473,11 @@ void TDataShard::PrepareAndSaveOutReadSets(ui64 step, if (txOutReadSets.empty()) return; + auto* info = VolatileTxManager.FindByTxId(txId); + if (info && !(info->IsArbiter && info->State != EVolatileTxState::Committed)) { + info = nullptr; + } + ui64 prevSeqno = NextSeqno; for (auto& kv : txOutReadSets) { ui64 source = kv.first.first; @@ -459,12 +487,21 @@ void TDataShard::PrepareAndSaveOutReadSets(ui64 step, ui64 seqno = NextSeqno++; OutReadSets.SaveReadSet(db, seqno, step, rsKey, kv.second); preparedRS.push_back(PrepareReadSet(step, txId, source, target, kv.second, seqno)); + if (info) { + // ReadSet seqnos that must be replaced on abort + info->ArbiterReadSets.push_back(seqno); + } } } if (NextSeqno != prevSeqno) { PersistSys(db, Schema::Sys_NextSeqno, NextSeqno); } + + if (info) { + VolatileTxManager.AttachVolatileTxCallback(txId, new TSendArbiterReadSets(this, std::move(preparedRS))); + preparedRS.clear(); + } } void TDataShard::SendDelayedAcks(const TActorContext& ctx, TVector>& delayedAcks) const { diff --git a/ydb/core/tx/datashard/datashard__init.cpp b/ydb/core/tx/datashard/datashard__init.cpp index 0fd8055454fd..50d487ded64e 100644 --- a/ydb/core/tx/datashard/datashard__init.cpp +++ b/ydb/core/tx/datashard/datashard__init.cpp @@ -529,6 +529,7 @@ bool TDataShard::TTxInit::ReadEverything(TTransactionContext &txc) { if (!Self->VolatileTxManager.Load(db)) { return false; } + Self->OutReadSets.HoldArbiterReadSets(); } if (Self->State != TShardState::Offline && txc.DB.GetScheme().GetTableInfo(Schema::CdcStreamScans::TableId)) { diff --git a/ydb/core/tx/datashard/datashard_common_upload.cpp b/ydb/core/tx/datashard/datashard_common_upload.cpp index ff31a995f507..aa66cc6ecd58 100644 --- a/ydb/core/tx/datashard/datashard_common_upload.cpp +++ b/ydb/core/tx/datashard/datashard_common_upload.cpp @@ -286,6 +286,7 @@ bool TCommonUploadOps::Execute(TDataShard* self, TTrans /* participants */ { }, groupProvider.GetCurrentChangeGroup(), /* ordered */ false, + /* arbiter */ false, txc); // Note: transaction is already committed, no additional waiting needed } diff --git a/ydb/core/tx/datashard/datashard_direct_erase.cpp b/ydb/core/tx/datashard/datashard_direct_erase.cpp index 0a4d6cc91d69..65fa427b1a6d 100644 --- a/ydb/core/tx/datashard/datashard_direct_erase.cpp +++ b/ydb/core/tx/datashard/datashard_direct_erase.cpp @@ -212,6 +212,7 @@ TDirectTxErase::EStatus TDirectTxErase::CheckedExecute( /* participants */ { }, groupProvider ? groupProvider->GetCurrentChangeGroup() : std::nullopt, /* ordered */ false, + /* arbiter */ false, *params.Txc); // Note: transaction is already committed, no additional waiting needed } diff --git a/ydb/core/tx/datashard/datashard_impl.h b/ydb/core/tx/datashard/datashard_impl.h index 9564062ae9e3..ba8a9484bdbe 100644 --- a/ydb/core/tx/datashard/datashard_impl.h +++ b/ydb/core/tx/datashard/datashard_impl.h @@ -330,6 +330,7 @@ class TDataShard class TWaitVolatileDependencies; class TSendVolatileResult; + class TSendArbiterReadSets; struct TEvPrivate { enum EEv { diff --git a/ydb/core/tx/datashard/datashard_kqp.cpp b/ydb/core/tx/datashard/datashard_kqp.cpp index cdd14d30f54c..fe75efa49816 100644 --- a/ydb/core/tx/datashard/datashard_kqp.cpp +++ b/ydb/core/tx/datashard/datashard_kqp.cpp @@ -764,6 +764,14 @@ bool KqpValidateLocks(ui64 origin, TActiveTransaction* tx, TSysLocks& sysLocks) return true; } +bool KqpLocksHasArbiter(const NKikimrDataEvents::TKqpLocks* kqpLocks) { + return kqpLocks && kqpLocks->GetArbiterShard() != 0; +} + +bool KqpLocksIsArbiter(ui64 tabletId, const NKikimrDataEvents::TKqpLocks* kqpLocks) { + return KqpLocksHasArbiter(kqpLocks) && kqpLocks->GetArbiterShard() == tabletId; +} + bool KqpValidateVolatileTx(ui64 origin, TActiveTransaction* tx, TSysLocks& sysLocks) { auto& kqpLocks = tx->GetDataTx()->GetKqpLocks(); @@ -779,6 +787,9 @@ bool KqpValidateVolatileTx(ui64 origin, TActiveTransaction* tx, TSysLocks& sysLo Y_ABORT_UNLESS(tx->OutReadSets().empty()); Y_ABORT_UNLESS(tx->AwaitingDecisions().empty()); + const bool hasArbiter = KqpLocksHasArbiter(&kqpLocks); + const bool isArbiter = KqpLocksIsArbiter(origin, &kqpLocks); + // Note: usually all shards send locks, since they either have side effects or need to validate locks // However it is technically possible to have pure-read shards, that don't contribute to the final decision bool sendLocks = SendLocks(kqpLocks, origin); @@ -808,6 +819,11 @@ bool KqpValidateVolatileTx(ui64 origin, TActiveTransaction* tx, TSysLocks& sysLo continue; } + if (hasArbiter && !isArbiter && dstTabletId != kqpLocks.GetArbiterShard()) { + // Non-arbiter shards only send locks to the arbiter + continue; + } + LOG_TRACE_S(*TlsActivationContext, NKikimrServices::TX_DATASHARD, "Send commit decision from " << origin << " to " << dstTabletId); @@ -821,6 +837,8 @@ bool KqpValidateVolatileTx(ui64 origin, TActiveTransaction* tx, TSysLocks& sysLo tx->OutReadSets()[key] = std::move(bodyStr); } + } else { + Y_ABORT_UNLESS(!isArbiter, "Arbiter is not in the sending shards set"); } bool receiveLocks = ReceiveLocks(kqpLocks, origin); @@ -833,6 +851,11 @@ bool KqpValidateVolatileTx(ui64 origin, TActiveTransaction* tx, TSysLocks& sysLo continue; } + if (hasArbiter && !isArbiter && srcTabletId != kqpLocks.GetArbiterShard()) { + // Non-arbiter shards only await decision from the arbiter + continue; + } + LOG_TRACE_S(*TlsActivationContext, NKikimrServices::TX_DATASHARD, "Will wait for volatile decision from " << srcTabletId << " to " << origin); @@ -891,6 +914,8 @@ bool KqpValidateVolatileTx(ui64 origin, TActiveTransaction* tx, TSysLocks& sysLo return false; } + } else { + Y_ABORT_UNLESS(!isArbiter, "Arbiter is not in the receiving shards set"); } return true; diff --git a/ydb/core/tx/datashard/datashard_kqp.h b/ydb/core/tx/datashard/datashard_kqp.h index 54b9c4746958..ae91dc661ad8 100644 --- a/ydb/core/tx/datashard/datashard_kqp.h +++ b/ydb/core/tx/datashard/datashard_kqp.h @@ -38,6 +38,9 @@ void KqpPrepareInReadsets(TInputOpData::TInReadSets& inReadSets, bool KqpValidateLocks(ui64 origin, TActiveTransaction* tx, TSysLocks& sysLocks); bool KqpValidateVolatileTx(ui64 origin, TActiveTransaction* tx, TSysLocks& sysLocks); +bool KqpLocksHasArbiter(const NKikimrDataEvents::TKqpLocks* kqpLocks); +bool KqpLocksIsArbiter(ui64 tabletId, const NKikimrDataEvents::TKqpLocks* kqpLocks); + void KqpEraseLocks(ui64 origin, TActiveTransaction* tx, TSysLocks& sysLocks); void KqpCommitLocks(ui64 origin, TActiveTransaction* tx, const TRowVersion& writeVersion, TDataShard& dataShard); diff --git a/ydb/core/tx/datashard/datashard_outreadset.cpp b/ydb/core/tx/datashard/datashard_outreadset.cpp index 79f73afcf065..466c5adf63c2 100644 --- a/ydb/core/tx/datashard/datashard_outreadset.cpp +++ b/ydb/core/tx/datashard/datashard_outreadset.cpp @@ -19,6 +19,7 @@ bool TOutReadSets::LoadReadSets(NIceDb::TNiceDb& db) { // TODO[serxa]: this should be Range but it is not working right now auto rowset = db.Table().GreaterOrEqual(0).Select< Schema::OutReadSets::Seqno, + Schema::OutReadSets::Step, Schema::OutReadSets::TxId, Schema::OutReadSets::Origin, Schema::OutReadSets::From, @@ -27,12 +28,18 @@ bool TOutReadSets::LoadReadSets(NIceDb::TNiceDb& db) { return false; while (!rowset.EndOfSet()) { ui64 seqNo = rowset.GetValue(); + ui64 step = rowset.GetValue(); ui64 txId = rowset.GetValue(); ui64 origin = rowset.GetValue(); ui64 source = rowset.GetValue(); ui64 target = rowset.GetValue(); - TReadSetKey rsInfo(txId, origin, source, target); + TReadSetInfo rsInfo; + rsInfo.TxId = txId; + rsInfo.Step = step; + rsInfo.Origin = origin; + rsInfo.From = source; + rsInfo.To = target; Y_ABORT_UNLESS(!CurrentReadSets.contains(seqNo)); Y_ABORT_UNLESS(!CurrentReadSetInfos.contains(rsInfo)); @@ -48,19 +55,22 @@ bool TOutReadSets::LoadReadSets(NIceDb::TNiceDb& db) { return true; } -void TOutReadSets::SaveReadSet(NIceDb::TNiceDb& db, ui64 seqNo, ui64 step, const TReadSetKey& rsInfo, TString body) { +void TOutReadSets::SaveReadSet(NIceDb::TNiceDb& db, ui64 seqNo, ui64 step, const TReadSetKey& rsKey, const TString& body) { using Schema = TDataShard::Schema; Y_ABORT_UNLESS(!CurrentReadSets.contains(seqNo)); - Y_ABORT_UNLESS(!CurrentReadSetInfos.contains(rsInfo)); + Y_ABORT_UNLESS(!CurrentReadSetInfos.contains(rsKey)); - CurrentReadSetInfos[rsInfo] = seqNo; + TReadSetInfo rsInfo(rsKey); + rsInfo.Step = step; + + CurrentReadSetInfos[rsKey] = seqNo; CurrentReadSets[seqNo] = rsInfo; UpdateMonCounter(); db.Table().Key(seqNo).Update( - NIceDb::TUpdate(step), + NIceDb::TUpdate(rsInfo.Step), NIceDb::TUpdate(rsInfo.TxId), NIceDb::TUpdate(rsInfo.Origin), NIceDb::TUpdate(rsInfo.From), @@ -68,6 +78,31 @@ void TOutReadSets::SaveReadSet(NIceDb::TNiceDb& db, ui64 seqNo, ui64 step, const NIceDb::TUpdate(body)); } +void TOutReadSets::RemoveReadSet(NIceDb::TNiceDb& db, ui64 seqNo) { + using Schema = TDataShard::Schema; + + db.Table().Key(seqNo).Delete(); + + auto it = CurrentReadSets.find(seqNo); + if (it != CurrentReadSets.end()) { + CurrentReadSetInfos.erase(it->second); + CurrentReadSets.erase(it); + } +} + +TReadSetInfo TOutReadSets::ReplaceReadSet(NIceDb::TNiceDb& db, ui64 seqNo, const TString& body) { + using Schema = TDataShard::Schema; + + auto it = CurrentReadSets.find(seqNo); + if (it != CurrentReadSets.end()) { + db.Table().Key(seqNo).Update( + NIceDb::TUpdate(body)); + return it->second; + } else { + return TReadSetInfo(); + } +} + void TOutReadSets::AckForDeletedDestination(ui64 tabletId, ui64 seqNo, const TActorContext &ctx) { const TReadSetKey* rsInfo = CurrentReadSets.FindPtr(seqNo); @@ -113,8 +148,6 @@ void TOutReadSets::SaveAck(const TActorContext &ctx, TAutoPtr& event : ReadSetAcks) { TEvTxProcessing::TEvReadSetAck& ev = *event; @@ -128,7 +161,7 @@ void TOutReadSets::Cleanup(NIceDb::TNiceDb& db, const TActorContext& ctx) { "Deleted RS at %" PRIu64 " source %" PRIu64 " dest %" PRIu64 " consumer %" PRIu64 " seqno %" PRIu64" txId %" PRIu64, Self->TabletID(), sender, dest, consumer, seqno, txId); - db.Table().Key(seqno).Delete(); + RemoveReadSet(db, seqno); Self->ResendReadSetPipeTracker.DetachTablet(seqno, ev.Record.GetTabletDest(), 0, ctx); } ReadSetAcks.clear(); @@ -140,14 +173,44 @@ void TOutReadSets::Cleanup(NIceDb::TNiceDb& db, const TActorContext& ctx) { void TOutReadSets::ResendAll(const TActorContext& ctx) { TPendingPipeTrackerCommands pendingPipeTrackerCommands; for (const auto& rs : CurrentReadSets) { + if (rs.second.OnHold) { + continue; + } ui64 seqNo = rs.first; ui64 target = rs.second.To; - Self->ResendReadSetQueue.Progress(rs.first, ctx); + Self->ResendReadSetQueue.Progress(seqNo, ctx); pendingPipeTrackerCommands.AttachTablet(seqNo, target); } pendingPipeTrackerCommands.Apply(Self->ResendReadSetPipeTracker, ctx); } +void TOutReadSets::HoldArbiterReadSets() { + for (auto& rs : CurrentReadSets) { + const ui64& seqNo = rs.first; + const ui64& txId = rs.second.TxId; + auto* info = Self->VolatileTxManager.FindByTxId(txId); + if (info && info->IsArbiter && info->State != EVolatileTxState::Committed) { + info->ArbiterReadSets.push_back(seqNo); + info->IsArbiterOnHold = true; + rs.second.OnHold = true; + } + } +} + +void TOutReadSets::ReleaseOnHoldReadSets(const std::vector& seqNos, const TActorContext& ctx) { + TPendingPipeTrackerCommands pendingPipeTrackerCommands; + for (ui64 seqNo : seqNos) { + auto it = CurrentReadSets.find(seqNo); + if (it != CurrentReadSets.end() && it->second.OnHold) { + it->second.OnHold = false; + ui64 target = it->second.To; + Self->ResendReadSetQueue.Progress(seqNo, ctx); + pendingPipeTrackerCommands.AttachTablet(seqNo, target); + } + } + pendingPipeTrackerCommands.Apply(Self->ResendReadSetPipeTracker, ctx); +} + bool TOutReadSets::ResendRS(NTabletFlatExecutor::TTransactionContext &txc, const TActorContext &ctx, ui64 seqNo) { using Schema = TDataShard::Schema; diff --git a/ydb/core/tx/datashard/datashard_outreadset.h b/ydb/core/tx/datashard/datashard_outreadset.h index 3cf4c8db01a5..388ee237a7df 100644 --- a/ydb/core/tx/datashard/datashard_outreadset.h +++ b/ydb/core/tx/datashard/datashard_outreadset.h @@ -35,13 +35,22 @@ struct TReadSetKey { return TxId + (Origin << 16) + (From << 8) + To; } - explicit operator size_t () const { + explicit operator size_t() const { return Hash(); } - bool operator == (const TReadSetKey& other) const { - return TxId == other.TxId && Origin == other.Origin && From == other.From && To == other.To; - } + friend bool operator==(const TReadSetKey& a, const TReadSetKey& b) = default; +}; + +struct TReadSetInfo : TReadSetKey { + ui64 Step = 0; + bool OnHold = false; + + TReadSetInfo() = default; + + explicit TReadSetInfo(const TReadSetKey& rsKey) + : TReadSetKey(rsKey) + {} }; /// @@ -54,7 +63,9 @@ class TOutReadSets { {} bool LoadReadSets(NIceDb::TNiceDb& db); - void SaveReadSet(NIceDb::TNiceDb& db, ui64 seqNo, ui64 step, const TReadSetKey& rsKey, TString body); + void SaveReadSet(NIceDb::TNiceDb& db, ui64 seqNo, ui64 step, const TReadSetKey& rsKey, const TString& body); + void RemoveReadSet(NIceDb::TNiceDb& db, ui64 seqNo); + TReadSetInfo ReplaceReadSet(NIceDb::TNiceDb& db, ui64 seqNo, const TString& body); void SaveAck(const TActorContext& ctx, TAutoPtr ev); void AckForDeletedDestination(ui64 tabletId, ui64 seqNo, const TActorContext &ctx); bool ResendRS(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& ctx, ui64 seqNo); @@ -74,12 +85,30 @@ class TOutReadSets { void ResendExpectations(ui64 target, const TActorContext& ctx); THashMap RemoveExpectations(ui64 target); + /** + * Must be called after the database is reloaded. + * + * Matches readsets to uncommitted arbiter volatile transactions and puts + * them on hold. These readsets will not be sent until the transaction + * is committed. + */ + void HoldArbiterReadSets(); + + /** + * Releases readsets that are currently on hold and schedules them for + * resending. This is called when an arbiter volatile transaction has + * determined it is going to be committed, and only after a restart. + * Readsets after initial execution are not on hold and are sent normally + * after volatile transaction commits. + */ + void ReleaseOnHoldReadSets(const std::vector& seqNos, const TActorContext& ctx); + private: void UpdateMonCounter() const; private: TDataShard * Self; - THashMap CurrentReadSets; // SeqNo -> Info + THashMap CurrentReadSets; // SeqNo -> Info THashMap CurrentReadSetInfos; // Info -> SeqNo THashSet AckedSeqno; TVector> ReadSetAcks; diff --git a/ydb/core/tx/datashard/datashard_ut_volatile.cpp b/ydb/core/tx/datashard/datashard_ut_volatile.cpp index c5eff03c43b3..61c94953717c 100644 --- a/ydb/core/tx/datashard/datashard_ut_volatile.cpp +++ b/ydb/core/tx/datashard/datashard_ut_volatile.cpp @@ -2397,6 +2397,494 @@ Y_UNIT_TEST_SUITE(DataShardVolatile) { } } + class TForceVolatileProposeArbiter { + public: + TForceVolatileProposeArbiter(TTestActorRuntime& runtime, ui64 arbiterShard) + : ArbiterShard(arbiterShard) + , Observer(runtime.AddObserver( + [this](auto& ev) { + this->OnEvent(ev); + })) + {} + + void Remove() { + Observer.Remove(); + } + + private: + void OnEvent(TEvDataShard::TEvProposeTransaction::TPtr& ev) { + auto* msg = ev->Get(); + int kind = msg->Record.GetTxKind(); + if (kind != NKikimrTxDataShard::TX_KIND_DATA) { + Cerr << "... skipping TEvProposeTransaction with kind " << kind + << " (expected " << int(NKikimrTxDataShard::TX_KIND_DATA) << ")" + << Endl; + return; + } + + ui32 flags = msg->Record.GetFlags(); + if (!(flags & TTxFlags::VolatilePrepare)) { + Cerr << "... skipping TEvProposeTransaction with flags " << flags + << " (missing VolatilePrepare flag)" + << Endl; + return; + } + + NKikimrTxDataShard::TDataTransaction tx; + bool ok = tx.ParseFromString(msg->Record.GetTxBody()); + Y_ABORT_UNLESS(ok, "Failed to parse data transaction"); + if (!tx.HasKqpTransaction()) { + Cerr << "... skipping TEvProposeTransaction without kqp transaction" << Endl; + return; + } + + auto* kqpTx = tx.MutableKqpTransaction(); + + int kqpType = kqpTx->GetType(); + if (kqpType != NKikimrTxDataShard::KQP_TX_TYPE_DATA) { + Cerr << "... skipping TEvProposeTransaction with kqp type " << kqpType + << " (expected " << int(NKikimrTxDataShard::KQP_TX_TYPE_DATA) << ")" + << Endl; + return; + } + + if (!kqpTx->HasLocks()) { + Cerr << "... skipping TEvProposeTransaction without locks" << Endl; + return; + } + + auto* kqpLocks = kqpTx->MutableLocks(); + const auto& sendingShards = kqpLocks->GetSendingShards(); + const auto& receivingShards = kqpLocks->GetReceivingShards(); + + if (std::find(sendingShards.begin(), sendingShards.end(), ArbiterShard) == sendingShards.end()) { + Cerr << "... skipping TEvProposeTransaction without " << ArbiterShard << " in sending shards" << Endl; + return; + } + + if (std::find(receivingShards.begin(), receivingShards.end(), ArbiterShard) == receivingShards.end()) { + Cerr << "... skipping TEvProposeTransaction without " << ArbiterShard << " in receiving shards" << Endl; + return; + } + + kqpLocks->SetArbiterShard(ArbiterShard); + ok = tx.SerializeToString(msg->Record.MutableTxBody()); + Y_ABORT_UNLESS(ok, "Failed to serialize data transaction"); + ++Modified; + } + + public: + size_t Modified = 0; + + private: + const ui64 ArbiterShard; + TTestActorRuntime::TEventObserverHolder Observer; + }; + + class TForceBrokenLock { + public: + TForceBrokenLock(TTestActorRuntime& runtime, const TTableId& tableId, ui64 shard) + : TableId(tableId) + , Shard(shard) + , ShardActor(ResolveTablet(runtime, shard)) + , Observer(runtime.AddObserver( + [this](auto& ev) { + this->OnEvent(ev); + })) + {} + + private: + void OnEvent(TEvDataShard::TEvProposeTransaction::TPtr& ev) { + if (ev->GetRecipientRewrite() != ShardActor) { + return; + } + + auto* msg = ev->Get(); + int kind = msg->Record.GetTxKind(); + if (kind != NKikimrTxDataShard::TX_KIND_DATA) { + Cerr << "... skipping TEvProposeTransaction with kind " << kind + << " (expected " << int(NKikimrTxDataShard::TX_KIND_DATA) << ")" + << Endl; + return; + } + + ui32 flags = msg->Record.GetFlags(); + if (!(flags & TTxFlags::VolatilePrepare)) { + Cerr << "... skipping TEvProposeTransaction with flags " << flags + << " (missing VolatilePrepare flag)" + << Endl; + return; + } + + NKikimrTxDataShard::TDataTransaction tx; + bool ok = tx.ParseFromString(msg->Record.GetTxBody()); + Y_ABORT_UNLESS(ok, "Failed to parse data transaction"); + if (!tx.HasKqpTransaction()) { + Cerr << "... skipping TEvProposeTransaction without kqp transaction" << Endl; + return; + } + + auto* kqpTx = tx.MutableKqpTransaction(); + + int kqpType = kqpTx->GetType(); + if (kqpType != NKikimrTxDataShard::KQP_TX_TYPE_DATA) { + Cerr << "... skipping TEvProposeTransaction with kqp type " << kqpType + << " (expected " << int(NKikimrTxDataShard::KQP_TX_TYPE_DATA) << ")" + << Endl; + return; + } + + if (!kqpTx->HasLocks()) { + Cerr << "... skipping TEvProposeTransaction without locks" << Endl; + return; + } + + auto* kqpLocks = kqpTx->MutableLocks(); + + // We use a lock that should have never existed to simulate a broken lock + auto* kqpLock = kqpLocks->AddLocks(); + kqpLock->SetLockId(msg->Record.GetTxId()); + kqpLock->SetDataShard(Shard); + kqpLock->SetGeneration(1); + kqpLock->SetCounter(1); + kqpLock->SetSchemeShard(TableId.PathId.OwnerId); + kqpLock->SetPathId(TableId.PathId.LocalPathId); + + ok = tx.SerializeToString(msg->Record.MutableTxBody()); + Y_ABORT_UNLESS(ok, "Failed to serialize data transaction"); + ++Modified; + } + + public: + size_t Modified = 0; + + private: + const TTableId TableId; + const ui64 Shard; + const TActorId ShardActor; + TTestActorRuntime::TEventObserverHolder Observer; + }; + + class TBlockReadSets : public std::vector { + public: + TBlockReadSets(TTestActorRuntime& runtime) + : Runtime(runtime) + , Observer(runtime.AddObserver( + [this](auto& ev) { + this->OnEvent(ev); + })) + {} + + void Remove() { + Observer.Remove(); + clear(); + } + + void Unblock() { + Observer.Remove(); + for (auto& ev : *this) { + Runtime.Send(ev.Release(), 0, true); + } + clear(); + } + + private: + void OnEvent(TEvTxProcessing::TEvReadSet::TPtr& ev) { + push_back(std::move(ev)); + } + + private: + TTestActorRuntime& Runtime; + TTestActorRuntime::TEventObserverHolder Observer; + }; + + class TCountReadSets { + public: + TCountReadSets(TTestActorRuntime& runtime) + : Observer(runtime.AddObserver( + [this](auto& ev) { + this->OnEvent(ev); + })) + {} + + private: + void OnEvent(TEvTxProcessing::TEvReadSet::TPtr&) { + ++Count; + } + + public: + size_t Count = 0; + + private: + TTestActorRuntime::TEventObserverHolder Observer; + }; + + Y_UNIT_TEST(UpsertNoLocksArbiter) { + TPortManager pm; + TServerSettings serverSettings(pm.GetPort(2134)); + serverSettings.SetDomainName("Root") + .SetUseRealThreads(false) + .SetEnableDataShardVolatileTransactions(true); + + Tests::TServer::TPtr server = new TServer(serverSettings); + auto &runtime = *server->GetRuntime(); + auto sender = runtime.AllocateEdgeActor(); + + runtime.SetLogPriority(NKikimrServices::TX_DATASHARD, NLog::PRI_TRACE); + + InitRoot(server, sender); + + UNIT_ASSERT_VALUES_EQUAL( + KqpSchemeExec(runtime, R"( + CREATE TABLE `/Root/table` (key int, value int, PRIMARY KEY (key)) + WITH (PARTITION_AT_KEYS = (10, 20, 30)); + )"), + "SUCCESS"); + + const auto shards = GetTableShards(server, sender, "/Root/table"); + UNIT_ASSERT_VALUES_EQUAL(shards.size(), 4u); + + TForceVolatileProposeArbiter forceArbiter(runtime, shards.at(0)); + TCountReadSets countReadSets(runtime); + + Cerr << "========= Starting upsert =========" << Endl; + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleExec(runtime, R"( + UPSERT INTO `/Root/table` (key, value) + VALUES (1, 11), (11, 111), (21, 211), (31, 311); + )"), + ""); + + // arbiter will send 6 readsets (3 decisions + 3 expectations) + // shards will send 2 readsets each (decision + expectation) + UNIT_ASSERT_VALUES_EQUAL(countReadSets.Count, 6 + 3 * 2); + + UNIT_ASSERT_VALUES_EQUAL(forceArbiter.Modified, 4u); + forceArbiter.Remove(); + + Cerr << "========= Checking table =========" << Endl; + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleExec(runtime, R"( + SELECT key, value FROM `/Root/table` + ORDER BY key; + )"), + "{ items { int32_value: 1 } items { int32_value: 11 } }, " + "{ items { int32_value: 11 } items { int32_value: 111 } }, " + "{ items { int32_value: 21 } items { int32_value: 211 } }, " + "{ items { int32_value: 31 } items { int32_value: 311 } }"); + } + + Y_UNIT_TEST(UpsertBrokenLockArbiter) { + TPortManager pm; + TServerSettings serverSettings(pm.GetPort(2134)); + serverSettings.SetDomainName("Root") + .SetUseRealThreads(false) + .SetEnableDataShardVolatileTransactions(true); + + Tests::TServer::TPtr server = new TServer(serverSettings); + auto &runtime = *server->GetRuntime(); + auto sender = runtime.AllocateEdgeActor(); + + runtime.SetLogPriority(NKikimrServices::TX_DATASHARD, NLog::PRI_TRACE); + + InitRoot(server, sender); + + UNIT_ASSERT_VALUES_EQUAL( + KqpSchemeExec(runtime, R"( + CREATE TABLE `/Root/table` (key int, value int, PRIMARY KEY (key)) + WITH (PARTITION_AT_KEYS = (10, 20, 30)); + )"), + "SUCCESS"); + + const auto tableId = ResolveTableId(server, sender, "/Root/table"); + const auto shards = GetTableShards(server, sender, "/Root/table"); + UNIT_ASSERT_VALUES_EQUAL(shards.size(), 4u); + + for (size_t i = 0; i < shards.size(); ++i) { + TForceVolatileProposeArbiter forceArbiter(runtime, shards.at(0)); + TForceBrokenLock forceBrokenLock(runtime, tableId, shards.at(i)); + TCountReadSets countReadSets(runtime); + + int key = 1 + i; + int value = key * 10 + key; + TString query = Sprintf( + R"(UPSERT INTO `/Root/table` (key, value) VALUES (%d, %d), (%d, %d), (%d, %d), (%d, %d);)", + key, value, + key + 10, value + 100, + key + 20, value + 200, + key + 30, value + 300); + + Cerr << "========= Starting query " << query << " =========" << Endl; + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleExec(runtime, query), + "ERROR: ABORTED"); + + // Note: kqp stops gathering responses early on abort, allow everyone to settle + runtime.SimulateSleep(TDuration::MilliSeconds(1)); + + // arbiter will send 3 or 6 readsets (3 aborts or 3 decisions + 3 expectations) + // shards will send 1 or 2 readsets each (abort or decision + expectation) + size_t expectedReadSets = (i == 0 ? 3 + 3 * 2 : 6 + 2 * 2 + 1); + UNIT_ASSERT_VALUES_EQUAL(countReadSets.Count, expectedReadSets); + + UNIT_ASSERT_VALUES_EQUAL(forceBrokenLock.Modified, 1u); + UNIT_ASSERT_VALUES_EQUAL(forceArbiter.Modified, 4u); + } + + Cerr << "========= Checking table =========" << Endl; + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleExec(runtime, R"( + SELECT key, value FROM `/Root/table` + ORDER BY key; + )"), + ""); + } + + Y_UNIT_TEST(UpsertNoLocksArbiterRestart) { + TPortManager pm; + TServerSettings serverSettings(pm.GetPort(2134)); + serverSettings.SetDomainName("Root") + .SetUseRealThreads(false) + .SetEnableDataShardVolatileTransactions(true); + + Tests::TServer::TPtr server = new TServer(serverSettings); + auto &runtime = *server->GetRuntime(); + auto sender = runtime.AllocateEdgeActor(); + + runtime.SetLogPriority(NKikimrServices::TX_DATASHARD, NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::PIPE_CLIENT, NLog::PRI_TRACE); + + InitRoot(server, sender); + + UNIT_ASSERT_VALUES_EQUAL( + KqpSchemeExec(runtime, R"( + CREATE TABLE `/Root/table` (key int, value int, PRIMARY KEY (key)) + WITH (PARTITION_AT_KEYS = (10, 20, 30)); + )"), + "SUCCESS"); + + const auto shards = GetTableShards(server, sender, "/Root/table"); + UNIT_ASSERT_VALUES_EQUAL(shards.size(), 4u); + + TForceVolatileProposeArbiter forceArbiter(runtime, shards.at(0)); + TBlockReadSets blockedReadSets(runtime); + + Cerr << "========= Starting upsert =========" << Endl; + auto upsertFuture = KqpSimpleSend(runtime, R"( + UPSERT INTO `/Root/table` (key, value) + VALUES (1, 11), (11, 111), (21, 211), (31, 311); + )"); + + // arbiter will send 3 expectations + // shards will send 1 commit decision + 1 expectation + size_t expectedReadSets = 3 + 3 * 2; + runtime.SimulateSleep(TDuration::Seconds(1)); + UNIT_ASSERT_VALUES_EQUAL(blockedReadSets.size(), expectedReadSets); + + // Reboot arbiter + Cerr << "========= Rebooting arbiter =========" << Endl; + blockedReadSets.clear(); + RebootTablet(runtime, shards.at(0), sender); + runtime.SimulateSleep(TDuration::Seconds(1)); + UNIT_ASSERT_VALUES_EQUAL(blockedReadSets.size(), expectedReadSets); + + Cerr << "========= Unblocking readsets =========" << Endl; + blockedReadSets.Unblock(); + TCountReadSets countReadSets(runtime); + runtime.SimulateSleep(TDuration::Seconds(1)); + + // arbiter will send 3 additional commit decisions + UNIT_ASSERT_VALUES_EQUAL(countReadSets.Count, expectedReadSets + 3); + + Cerr << "========= Checking table =========" << Endl; + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleExec(runtime, R"( + SELECT key, value FROM `/Root/table` + ORDER BY key; + )"), + "{ items { int32_value: 1 } items { int32_value: 11 } }, " + "{ items { int32_value: 11 } items { int32_value: 111 } }, " + "{ items { int32_value: 21 } items { int32_value: 211 } }, " + "{ items { int32_value: 31 } items { int32_value: 311 } }"); + + UNIT_ASSERT_VALUES_EQUAL( + FormatResult(AwaitResponse(runtime, std::move(upsertFuture))), + "ERROR: UNDETERMINED"); + } + + Y_UNIT_TEST(UpsertBrokenLockArbiterRestart) { + TPortManager pm; + TServerSettings serverSettings(pm.GetPort(2134)); + serverSettings.SetDomainName("Root") + .SetUseRealThreads(false) + .SetEnableDataShardVolatileTransactions(true); + + Tests::TServer::TPtr server = new TServer(serverSettings); + auto &runtime = *server->GetRuntime(); + auto sender = runtime.AllocateEdgeActor(); + + runtime.SetLogPriority(NKikimrServices::TX_DATASHARD, NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::PIPE_CLIENT, NLog::PRI_TRACE); + + InitRoot(server, sender); + + UNIT_ASSERT_VALUES_EQUAL( + KqpSchemeExec(runtime, R"( + CREATE TABLE `/Root/table` (key int, value int, PRIMARY KEY (key)) + WITH (PARTITION_AT_KEYS = (10, 20, 30)); + )"), + "SUCCESS"); + + const auto tableId = ResolveTableId(server, sender, "/Root/table"); + const auto shards = GetTableShards(server, sender, "/Root/table"); + UNIT_ASSERT_VALUES_EQUAL(shards.size(), 4u); + + TForceVolatileProposeArbiter forceArbiter(runtime, shards.at(0)); + TForceBrokenLock forceBrokenLock(runtime, tableId, shards.at(3)); + + TBlockReadSets blockedReadSets(runtime); + + Cerr << "========= Starting upsert =========" << Endl; + auto upsertFuture = KqpSimpleSend(runtime, R"( + UPSERT INTO `/Root/table` (key, value) + VALUES (1, 11), (11, 111), (21, 211), (31, 311); + )"); + + // arbiter will send 3 expectations + // two shards will send 1 commit decision + 1 expectation + size_t expectedReadSets = 3 + 2 * 2; + runtime.SimulateSleep(TDuration::Seconds(1)); + UNIT_ASSERT_VALUES_EQUAL(blockedReadSets.size(), expectedReadSets); + + // Reboot arbiter + Cerr << "========= Rebooting arbiter =========" << Endl; + blockedReadSets.clear(); + RebootTablet(runtime, shards.at(0), sender); + runtime.SimulateSleep(TDuration::Seconds(1)); + UNIT_ASSERT_VALUES_EQUAL(blockedReadSets.size(), expectedReadSets); + + Cerr << "========= Unblocking readsets =========" << Endl; + blockedReadSets.Unblock(); + TCountReadSets countReadSets(runtime); + runtime.SimulateSleep(TDuration::Seconds(1)); + + // arbiter will send 3 additional commit decisions + // the last shard sends a nodata readset to answer expectation + UNIT_ASSERT_VALUES_EQUAL(countReadSets.Count, expectedReadSets + 4); + + Cerr << "========= Checking table =========" << Endl; + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleExec(runtime, R"( + SELECT key, value FROM `/Root/table` + ORDER BY key; + )"), + ""); + + UNIT_ASSERT_VALUES_EQUAL( + FormatResult(AwaitResponse(runtime, std::move(upsertFuture))), + "ERROR: ABORTED"); + } + } // Y_UNIT_TEST_SUITE(DataShardVolatile) } // namespace NKikimr diff --git a/ydb/core/tx/datashard/execute_data_tx_unit.cpp b/ydb/core/tx/datashard/execute_data_tx_unit.cpp index a2976e05bd82..67be732c65a6 100644 --- a/ydb/core/tx/datashard/execute_data_tx_unit.cpp +++ b/ydb/core/tx/datashard/execute_data_tx_unit.cpp @@ -332,6 +332,7 @@ void TExecuteDataTxUnit::ExecuteDataTx(TOperation::TPtr op, participants, tx->GetDataTx()->GetVolatileChangeGroup(), tx->GetDataTx()->GetVolatileCommitOrdered(), + /* arbiter */ false, txc); } diff --git a/ydb/core/tx/datashard/execute_distributed_erase_tx_unit.cpp b/ydb/core/tx/datashard/execute_distributed_erase_tx_unit.cpp index ab6f553e5b20..54f2799302e9 100644 --- a/ydb/core/tx/datashard/execute_distributed_erase_tx_unit.cpp +++ b/ydb/core/tx/datashard/execute_distributed_erase_tx_unit.cpp @@ -215,6 +215,7 @@ class TExecuteDistributedEraseTxUnit : public TExecutionUnit { /* participants */ { }, groupProvider ? groupProvider->GetCurrentChangeGroup() : std::nullopt, volatileOrdered, + /* arbiter */ false, txc); // Note: transaction is already committed, no additional waiting needed } diff --git a/ydb/core/tx/datashard/execute_kqp_data_tx_unit.cpp b/ydb/core/tx/datashard/execute_kqp_data_tx_unit.cpp index cd331d8f7f36..9b2b84c07867 100644 --- a/ydb/core/tx/datashard/execute_kqp_data_tx_unit.cpp +++ b/ydb/core/tx/datashard/execute_kqp_data_tx_unit.cpp @@ -225,6 +225,8 @@ EExecutionStatus TExecuteKqpDataTxUnit::Execute(TOperation::TPtr op, TTransactio LWTRACK(ProposeTransactionKqpDataExecute, op->Orbit); + const bool isArbiter = op->HasVolatilePrepareFlag() && KqpLocksIsArbiter(tabletId, &kqpLocks); + KqpCommitLocks(tabletId, tx, writeVersion, DataShard); auto& computeCtx = tx->GetDataTx()->GetKqpComputeCtx(); @@ -335,6 +337,7 @@ EExecutionStatus TExecuteKqpDataTxUnit::Execute(TOperation::TPtr op, TTransactio participants, dataTx->GetVolatileChangeGroup(), dataTx->GetVolatileCommitOrdered(), + isArbiter, txc); } diff --git a/ydb/core/tx/datashard/volatile_tx.cpp b/ydb/core/tx/datashard/volatile_tx.cpp index 73a233ae0d55..1a72b7c10783 100644 --- a/ydb/core/tx/datashard/volatile_tx.cpp +++ b/ydb/core/tx/datashard/volatile_tx.cpp @@ -151,6 +151,25 @@ namespace NKikimr::NDataShard { } } + if (!info->ArbiterReadSets.empty()) { + NKikimrTx::TReadSetData data; + data.SetDecision(NKikimrTx::TReadSetData::DECISION_ABORT); + + TString bodyStr; + bool ok = data.SerializeToString(&bodyStr); + Y_ABORT_UNLESS(ok, "Failed to serialize an abort decision readset"); + + NIceDb::TNiceDb db(txc.DB); + for (ui64 seqNo : info->ArbiterReadSets) { + auto rsInfo = Self->OutReadSets.ReplaceReadSet(db, seqNo, bodyStr); + if (Y_LIKELY(rsInfo.TxId == TxId)) { + auto msg = Self->PrepareReadSet(rsInfo.Step, rsInfo.TxId, rsInfo.From, rsInfo.To, bodyStr, seqNo); + ReadSets.push_back(std::move(msg)); + } + } + info->ArbiterReadSets.clear(); + } + Self->VolatileTxManager.PersistRemoveVolatileTx(TxId, txc); return true; } @@ -169,6 +188,11 @@ namespace NKikimr::NDataShard { } info->DelayedAcks.clear(); + // Arbiter notifies other shards on abort + if (!ReadSets.empty()) { + Self->SendReadSets(ctx, std::move(ReadSets)); + } + // Make a copy since it will disappear soon auto commitTxIds = info->CommitTxIds; @@ -191,6 +215,7 @@ namespace NKikimr::NDataShard { private: ui64 TxId; + TVector> ReadSets; }; void TVolatileTxManager::TTxMap::Add(ui64 txId, TRowVersion version) { @@ -307,6 +332,7 @@ namespace NKikimr::NDataShard { info->AddCommitted = true; // we loaded it from local db, so it is committed info->CommitOrder = details.GetCommitOrder(); info->CommitOrdered = details.GetCommitOrdered(); + info->IsArbiter = details.GetIsArbiter(); maxCommitOrder = Max(maxCommitOrder, info->CommitOrder); @@ -443,6 +469,7 @@ namespace NKikimr::NDataShard { TConstArrayRef participants, std::optional changeGroup, bool commitOrdered, + bool isArbiter, TTransactionContext& txc) { using Schema = TDataShard::Schema; @@ -464,6 +491,7 @@ namespace NKikimr::NDataShard { info->ChangeGroup = changeGroup; info->CommitOrder = NextCommitOrder++; info->CommitOrdered = commitOrdered; + info->IsArbiter = isArbiter; if (info->Participants.empty()) { // Transaction is committed when we don't have to wait for other participants @@ -518,6 +546,9 @@ namespace NKikimr::NDataShard { if (info->CommitOrdered) { details.SetCommitOrdered(true); } + if (info->IsArbiter) { + details.SetIsArbiter(true); + } db.Table().Key(info->TxId).Update( NIceDb::TUpdate(info->State), @@ -853,6 +884,12 @@ namespace NKikimr::NDataShard { } void TVolatileTxManager::RunCommitCallbacks(TVolatileTxInfo* info) { + if (info->IsArbiterOnHold && !info->ArbiterReadSets.empty()) { + Self->OutReadSets.ReleaseOnHoldReadSets(info->ArbiterReadSets, + TActivationContext::ActorContextFor(Self->SelfId())); + info->ArbiterReadSets.clear(); + } + auto callbacks = std::move(info->Callbacks); info->Callbacks.clear(); for (auto& callback : callbacks) { diff --git a/ydb/core/tx/datashard/volatile_tx.h b/ydb/core/tx/datashard/volatile_tx.h index ab7533038e1c..a7f40b3178bf 100644 --- a/ydb/core/tx/datashard/volatile_tx.h +++ b/ydb/core/tx/datashard/volatile_tx.h @@ -55,6 +55,8 @@ namespace NKikimr::NDataShard { EVolatileTxState State = EVolatileTxState::Waiting; bool AddCommitted = false; bool CommitOrdered = false; + bool IsArbiter = false; + bool IsArbiterOnHold = false; TRowVersion Version; absl::flat_hash_set CommitTxIds; absl::flat_hash_set Dependencies; @@ -68,6 +70,11 @@ namespace NKikimr::NDataShard { TVector> DelayedAcks; absl::flat_hash_set DelayedConfirmations; + // A list of readset sequence numbers that are on hold until arbiter + // transaction is decided. These readsets will be replaced with a + // DECISION_ABORT on abort. + std::vector ArbiterReadSets; + template bool IsInList() const { using TItem = TIntrusiveListItem; @@ -212,6 +219,7 @@ namespace NKikimr::NDataShard { TConstArrayRef participants, std::optional changeGroup, bool commitOrdered, + bool isArbiter, TTransactionContext& txc); bool AttachVolatileTxCallback( From 82d69fe02ef358153cc6cddc6a7e6fcfa0d578b9 Mon Sep 17 00:00:00 2001 From: Alexander Rutkovsky Date: Fri, 17 May 2024 17:06:13 +0300 Subject: [PATCH 044/110] Some minor KeyValue tablet improvements (merge from main #1900) (#4644) --- ydb/core/keyvalue/channel_balancer.h | 2 +- ydb/core/keyvalue/keyvalue_state.cpp | 3 +++ ydb/core/keyvalue/keyvalue_storage_request.cpp | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ydb/core/keyvalue/channel_balancer.h b/ydb/core/keyvalue/channel_balancer.h index ca013400f9c3..378c22434d52 100644 --- a/ydb/core/keyvalue/channel_balancer.h +++ b/ydb/core/keyvalue/channel_balancer.h @@ -114,7 +114,7 @@ namespace NKikimr::NKeyValue { const size_t index = (LatencyQueue.size() - 1) * 99 / 100; const TDuration perc = latencies[index]; weight = MeanExpectedLatency.GetValue() * weight / Max(perc, TDuration::MilliSeconds(1)).GetValue(); - Y_DEBUG_ABORT_UNLESS(weight); + //Y_DEBUG_ABORT_UNLESS(weight); if (!weight) { weight = 1; } diff --git a/ydb/core/keyvalue/keyvalue_state.cpp b/ydb/core/keyvalue/keyvalue_state.cpp index 73e6cc76e4bf..f1d00c36bbbb 100644 --- a/ydb/core/keyvalue/keyvalue_state.cpp +++ b/ydb/core/keyvalue/keyvalue_state.cpp @@ -634,6 +634,9 @@ void TKeyValueState::InitExecute(ui64 tabletId, TActorId keyValueActorId, ui32 e } THelpers::DbEraseCollect(db, ctx); + if (IsEmptyDbStart) { + THelpers::DbUpdateState(StoredState, db, ctx); + } // corner case, if no CollectGarbage events were sent if (InitialCollectsSent == 0) { diff --git a/ydb/core/keyvalue/keyvalue_storage_request.cpp b/ydb/core/keyvalue/keyvalue_storage_request.cpp index 9aa0a83cdfa1..5f2b434b004e 100644 --- a/ydb/core/keyvalue/keyvalue_storage_request.cpp +++ b/ydb/core/keyvalue/keyvalue_storage_request.cpp @@ -296,6 +296,11 @@ class TKeyValueStorageRequest : public TActorBootstrappedStat.GroupReadIops[std::make_pair(response.Id.Channel(), groupId)] += 1; // FIXME: count distinct blobs? read.Value.Write(readItem.ValueOffset, std::move(response.Buffer)); } else { + Y_VERIFY_DEBUG_S(response.Status != NKikimrProto::NODATA, "NODATA received for TEvGet" + << " TabletId# " << TabletInfo->TabletID + << " Id# " << response.Id + << " Key# " << read.Key); + TStringStream err; if (read.Message.size()) { err << read.Message << Endl; From 7525b0563d6b966486890d1b43372cdff2c6c95a Mon Sep 17 00:00:00 2001 From: Pavel Velikhov Date: Tue, 21 May 2024 16:16:47 +0300 Subject: [PATCH 045/110] Fixed a blocker: https://st.yandex-team.ru/KIKIMR-21496 (#4712) Co-authored-by: Vasily Gerasimov --- .../s3/kqp_federated_query_ut.cpp | 72 +++++++++++++++++++ .../yql/core/common_opt/yql_co_simple1.cpp | 38 +++++++--- 2 files changed, 99 insertions(+), 11 deletions(-) diff --git a/ydb/core/kqp/ut/federated_query/s3/kqp_federated_query_ut.cpp b/ydb/core/kqp/ut/federated_query/s3/kqp_federated_query_ut.cpp index 69d72ee6e089..cefcb956b0d0 100644 --- a/ydb/core/kqp/ut/federated_query/s3/kqp_federated_query_ut.cpp +++ b/ydb/core/kqp/ut/federated_query/s3/kqp_federated_query_ut.cpp @@ -1591,6 +1591,78 @@ Y_UNIT_TEST_SUITE(KqpFederatedQuery) { UNIT_ASSERT_STRING_CONTAINS(queryExecutionOperation.GetIssues().ToString(), "\"/Root/external_table\" is expected to be external data source"); } } + + Y_UNIT_TEST(QueryWithNoDataInS3) { + const TString externalDataSourceName = "tpc_h_s3_storage_connection"; + const TString bucket = "test_bucket_no_data"; + + Aws::S3::S3Client s3Client = MakeS3Client(); + CreateBucket(bucket, s3Client); + // Uncomment if you want to compare with query with data + //UploadObject(bucket, "l/l", R"json({"l_extendedprice": 0.0, "l_discount": 1.0, "l_partkey": 1})json", s3Client); + //UploadObject(bucket, "p/p", R"json({"p_partkey": 1, "p_type": "t"})json", s3Client); + + auto kikimr = MakeKikimrRunner(NYql::IHTTPGateway::Make()); + auto client = kikimr->GetQueryClient(); + + { + const TString query = fmt::format(R"sql( + CREATE EXTERNAL DATA SOURCE `{external_source}` WITH ( + SOURCE_TYPE="ObjectStorage", + LOCATION="{location}", + AUTH_METHOD="NONE" + ); + )sql", + "external_source"_a = externalDataSourceName, + "location"_a = GetBucketLocation(bucket) + ); + auto result = client.ExecuteQuery(query, TTxControl::NoTx()).GetValueSync(); + UNIT_ASSERT_C(result.GetStatus() == NYdb::EStatus::SUCCESS, result.GetIssues().ToString()); + } + + { + // YQ-2750 + const TString query = fmt::format(R"sql( + $border = Date("1994-08-01"); + select + 100.00 * sum(case + when StartsWith(p.p_type, 'PROMO') + then l.l_extendedprice * (1 - l.l_discount) + else 0 + end) / sum(l.l_extendedprice * (1 - l.l_discount)) as promo_revenue + from + {external_source}.`l/` with ( schema ( + l_extendedprice double, + l_discount double, + l_partkey int64, + l_shipdate date + ), + format = "json_each_row" + ) as l + join + {external_source}.`p/` with ( schema ( + p_partkey int64, + p_type string + ), + format = "json_each_row" + ) as p + on + l.l_partkey = p.p_partkey + where + cast(l.l_shipdate as timestamp) >= $border + and cast(l.l_shipdate as timestamp) < ($border + Interval("P31D")); + )sql", + "external_source"_a = externalDataSourceName + ); + auto result = client.ExecuteQuery(query, TTxControl::BeginTx().CommitTx()).GetValueSync(); + UNIT_ASSERT_C(result.GetStatus() == NYdb::EStatus::SUCCESS, result.GetIssues().ToString()); + auto rs = result.GetResultSetParser(0); + UNIT_ASSERT_VALUES_EQUAL(rs.RowsCount(), 1); + rs.TryNextRow(); + TMaybe sum = rs.ColumnParser(0).GetOptionalDouble(); + UNIT_ASSERT(!sum); + } + } } } // namespace NKikimr::NKqp diff --git a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp index 490a089f5c1e..006fb580d2de 100644 --- a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp +++ b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp @@ -75,7 +75,7 @@ TExprNode::TPtr OptimizePgCastOverPgConst(const TExprNode::TPtr& input, TExprCon return input; } auto val = input->Child(0); - if (!val->IsCallable("PgConst")) { + if (!val->IsCallable("PgConst")) { return input; } @@ -85,7 +85,7 @@ TExprNode::TPtr OptimizePgCastOverPgConst(const TExprNode::TPtr& input, TExprCon YQL_CLOG(DEBUG, Core) << "Remove PgCast unknown->text over PgConst"; return ctx.ChangeChild(*val, 1, castToType); } - + return input; } @@ -6282,17 +6282,33 @@ void RegisterCoSimpleCallables1(TCallableOptimizerMap& map) { return node; }; - map["ShuffleByKeys"] = map["PartitionsByKeys"] = [](const TExprNode::TPtr& node, TExprContext& ctx, TOptimizeContext& optCtx) { + map["PartitionsByKeys"] = [](const TExprNode::TPtr& node, TExprContext& ctx, TOptimizeContext& optCtx) { if (IsEmpty(node->Head(), *optCtx.Types)) { YQL_CLOG(DEBUG, Core) << node->Content() << " over empty input."; - auto lambdaResult = ctx.Builder(node->Pos()).Apply(node->Tail()).With(0, KeepConstraints(node->HeadPtr(), node->Tail().Head().Head(), ctx)).Seal().Build(); - if (node->IsCallable("ShuffleByKeys")) { - auto lambdaType = node->Tail().GetTypeAnn(); - if (lambdaType->GetKind() == ETypeAnnotationKind::Optional) { - lambdaResult = ctx.NewCallable(lambdaResult->Pos(), "ToList", { lambdaResult }); - } else if (lambdaType->GetKind() == ETypeAnnotationKind::Stream) { - lambdaResult = ctx.NewCallable(lambdaResult->Pos(), "ForwardList", { lambdaResult }); - } + + TExprNode::TPtr sequence = KeepConstraints(node->HeadPtr(), node->Tail().Head().Head(), ctx); + auto lambdaResult = ctx.Builder(node->Pos()).Apply(node->Tail()).With(0, sequence).Seal().Build(); + return lambdaResult; + } + return node; + }; + + map["ShuffleByKeys"] = [](const TExprNode::TPtr& node, TExprContext& ctx, TOptimizeContext& optCtx) { + if (IsEmpty(node->Head(), *optCtx.Types)) { + YQL_CLOG(DEBUG, Core) << node->Content() << " over empty input."; + + auto& lambdaArg = node->Tail().Head().Head(); + + TExprNode::TPtr sequence = node->HeadPtr(); // param (list) + sequence = ctx.NewCallable(sequence->Pos(), "ToStream", { sequence }); // lambda accepts stream, but we have list type + sequence = KeepConstraints(sequence, lambdaArg, ctx); + + auto lambdaResult = ctx.Builder(node->Pos()).Apply(node->Tail()).With(0, sequence).Seal().Build(); + auto lambdaType = node->Tail().GetTypeAnn(); + if (lambdaType->GetKind() == ETypeAnnotationKind::Optional) { + lambdaResult = ctx.NewCallable(lambdaResult->Pos(), "ToList", { lambdaResult }); + } else if (lambdaType->GetKind() == ETypeAnnotationKind::Stream || lambdaType->GetKind() == ETypeAnnotationKind::Flow) { + lambdaResult = ctx.NewCallable(lambdaResult->Pos(), "ForwardList", { lambdaResult }); } return lambdaResult; } From f18362a28d6ab0e1e1a5e711429d8cfbc3a81345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3?= <150132506+iddqdex@users.noreply.github.com> Date: Tue, 21 May 2024 20:51:13 +0300 Subject: [PATCH 046/110] Using Decimal in olap (#4722) --- ydb/core/formats/arrow/converter.cpp | 3 - ydb/core/kqp/ut/common/columnshard.cpp | 12 ++- ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp | 80 +++++++++++++++++++ .../transactions/operators/schema.h | 3 +- .../tx/schemeshard/olap/columns/update.cpp | 3 +- .../lib/ydb_cli/common/csv_parser_ut.cpp | 4 + 6 files changed, 98 insertions(+), 7 deletions(-) diff --git a/ydb/core/formats/arrow/converter.cpp b/ydb/core/formats/arrow/converter.cpp index 052bccdd6669..02610aba6335 100644 --- a/ydb/core/formats/arrow/converter.cpp +++ b/ydb/core/formats/arrow/converter.cpp @@ -39,9 +39,6 @@ static bool ConvertData(TCell& cell, const NScheme::TTypeInfo& colType, TMemoryP cell = TCell(saved.data(), saved.size()); break; } - case NScheme::NTypeIds::Decimal: - errorMessage = "Decimal conversion is not supported yet"; - return false; default: break; } diff --git a/ydb/core/kqp/ut/common/columnshard.cpp b/ydb/core/kqp/ut/common/columnshard.cpp index 085415d36c59..e4e8132a5d05 100644 --- a/ydb/core/kqp/ut/common/columnshard.cpp +++ b/ydb/core/kqp/ut/common/columnshard.cpp @@ -68,7 +68,17 @@ namespace NKqp { TString TTestHelper::TColumnSchema::BuildQuery() const { - auto str = TStringBuilder() << Name << " " << NScheme::GetTypeName(Type); + auto str = TStringBuilder() << Name << " "; + switch (Type) { + case NScheme::NTypeIds::Decimal: { + TTypeBuilder builder; + builder.Decimal(TDecimalType(22, 9)); + str << builder.Build(); + break; + } + default: + str << NScheme::GetTypeName(Type); + } if (!NullableFlag) { str << " NOT NULL"; } diff --git a/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp b/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp index 3c13d8c27b4d..3b7692a6ad30 100644 --- a/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp +++ b/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp @@ -5869,6 +5869,86 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) { testHelper.ReadData("SELECT * FROM `/Root/ColumnTableTest` WHERE id=1", TStringBuilder() << "[[1;" << ts.MicroSeconds() << "u;" << ts.MicroSeconds() << "u]]"); } + Y_UNIT_TEST(Decimal) { + TKikimrSettings runnerSettings; + runnerSettings.WithSampleTables = false; + + TTestHelper testHelper(runnerSettings); + + TVector schema = { + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal).SetNullable(false), + }; + + TTestHelper::TColumnTable testTable; + testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id", "dec"}).SetSharding({"id", "dec"}).SetSchema(schema); + testHelper.CreateTable(testTable); + + { + TValueBuilder builder; + builder.BeginList(); + builder.AddListItem().BeginStruct() + .AddMember("id").Int64(1) + .AddMember("dec").Decimal(TString("10.1")) + .EndStruct(); + builder.AddListItem().BeginStruct() + .AddMember("id").Int64(2) + .AddMember("dec").Decimal(TString("inf")) + .EndStruct(); + builder.AddListItem().BeginStruct() + .AddMember("id").Int64(3) + .AddMember("dec").Decimal(TString("-inf")) + .EndStruct(); + builder.AddListItem().BeginStruct() + .AddMember("id").Int64(4) + .AddMember("dec").Decimal(TString("nan")) + .EndStruct(); + builder.AddListItem().BeginStruct() + .AddMember("id").Int64(5) + .AddMember("dec").Decimal(TString("-nan")) + .EndStruct(); + builder.AddListItem().BeginStruct() + .AddMember("id").Int64(6) + .AddMember("dec").Decimal(TString("1.1")) + .EndStruct(); + builder.AddListItem().BeginStruct() + .AddMember("id").Int64(7) + .AddMember("dec").Decimal(TString("12.1")) + .EndStruct(); + builder.AddListItem().BeginStruct() + .AddMember("id").Int64(8) + .AddMember("dec").Decimal(TString("inf")) + .EndStruct(); + builder.AddListItem().BeginStruct() + .AddMember("id").Int64(9) + .AddMember("dec").Decimal(TString("-inf")) + .EndStruct(); + builder.AddListItem().BeginStruct() + .AddMember("id").Int64(10) + .AddMember("dec").Decimal(TString("2.1")) + .EndStruct(); + builder.AddListItem().BeginStruct() + .AddMember("id").Int64(11) + .AddMember("dec").Decimal(TString("15.1")) + .EndStruct(); + builder.EndList(); + const auto result = testHelper.GetKikimr().GetTableClient().BulkUpsert(testTable.GetName(), builder.Build()).GetValueSync(); + UNIT_ASSERT_C(result.IsSuccess() , result.GetIssues().ToString()); + } + testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=1", "[[\"10.1\"]]"); + testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=2", "[[\"inf\"]]"); + testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=3", "[[\"-inf\"]]"); + testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=4", "[[\"nan\"]]"); + testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=5", "[[\"-nan\"]]"); + testHelper.ReadData("SELECT id FROM `/Root/ColumnTableTest` WHERE dec=CAST(\"10.1\" As Decimal(22,9))", "[[1]]"); + testHelper.ReadData("SELECT id FROM `/Root/ColumnTableTest` WHERE dec=CAST(\"inf\" As Decimal(22,9)) ORDER BY id", "[[2];[8]]"); + testHelper.ReadData("SELECT id FROM `/Root/ColumnTableTest` WHERE dec=CAST(\"-inf\" As Decimal(22,9)) ORDER BY id", "[[3];[9]]"); + // Nan cannot by find. + testHelper.ReadData("SELECT id FROM `/Root/ColumnTableTest` WHERE dec=CAST(\"nan\" As Decimal(22,9))", "[]"); + testHelper.ReadData("SELECT id FROM `/Root/ColumnTableTest` WHERE dec=CAST(\"-nan\" As Decimal(22,9))", "[]"); + testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id > 5 ORDER BY dec", "[[\"-inf\"];[\"1.1\"];[\"2.1\"];[\"12.1\"];[\"15.1\"];[\"inf\"]]"); + } + Y_UNIT_TEST(TimestampCmpErr) { TKikimrSettings runnerSettings; runnerSettings.WithSampleTables = false; diff --git a/ydb/core/tx/columnshard/transactions/operators/schema.h b/ydb/core/tx/columnshard/transactions/operators/schema.h index 78940db37059..f71da39fa110 100644 --- a/ydb/core/tx/columnshard/transactions/operators/schema.h +++ b/ydb/core/tx/columnshard/transactions/operators/schema.h @@ -110,7 +110,8 @@ namespace NKikimr::NColumnShard { //NTypeIds::Float, //NTypeIds::Double, NTypeIds::String, - NTypeIds::Utf8 + NTypeIds::Utf8, + NTypeIds::Decimal }; if (!schema.HasEngine() || diff --git a/ydb/core/tx/schemeshard/olap/columns/update.cpp b/ydb/core/tx/schemeshard/olap/columns/update.cpp index a0427414ca75..b84327227531 100644 --- a/ydb/core/tx/schemeshard/olap/columns/update.cpp +++ b/ydb/core/tx/schemeshard/olap/columns/update.cpp @@ -131,7 +131,6 @@ namespace NKikimr::NSchemeShard { switch (typeId) { case NYql::NProto::Bool: case NYql::NProto::Interval: - case NYql::NProto::Decimal: case NYql::NProto::DyNumber: return false; default: @@ -152,9 +151,9 @@ namespace NKikimr::NSchemeShard { case NYql::NProto::Date: case NYql::NProto::Datetime: case NYql::NProto::Timestamp: + case NYql::NProto::Decimal: return true; case NYql::NProto::Interval: - case NYql::NProto::Decimal: case NYql::NProto::DyNumber: case NYql::NProto::Yson: case NYql::NProto::Json: diff --git a/ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp b/ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp index 9887c9fc7ea2..0619bca36b5d 100644 --- a/ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp +++ b/ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp @@ -106,6 +106,10 @@ Y_UNIT_TEST_SUITE(YdbCliCsvParserTests) { CommonTestParams("name", "1.183", {{"$name", TValueBuilder().Double(1.183).Build()}}); CommonTestParams("name", "1.183", {{"$name", TValueBuilder().DyNumber("1.183").Build()}}); CommonTestParams("name", "1.183", {{"$name", TValueBuilder().Decimal(TString("1.183")).Build()}}); + CommonTestParams("name", "inf", {{"$name", TValueBuilder().Decimal(TString("inf")).Build()}}); + CommonTestParams("name", "-inf", {{"$name", TValueBuilder().Decimal(TString("-inf")).Build()}}); + CommonTestParams("name", "nan", {{"$name", TValueBuilder().Decimal(TString("nan")).Build()}}); + CommonTestParams("name", "-nan", {{"$name", TValueBuilder().Decimal(TString("-nan")).Build()}}); CommonTestParams("name", "550e8400-e29b-41d4-a716-446655440000", {{"$name", TValueBuilder().Uuid(TUuidValue("550e8400-e29b-41d4-a716-446655440000")).Build()}}); CommonTestParams("name", "\"{\"\"a\"\":10, \"\"b\"\":\"\"string\"\"}\"", {{"$name", TValueBuilder().Json("{\"a\":10, \"b\":\"string\"}").Build()}}); CommonTestParams("name", "строка", {{"$name", TValueBuilder().OptionalUtf8("строка").Build()}}); From 75a1178313ce949419d0e2aed0193cf05c80519c Mon Sep 17 00:00:00 2001 From: ivanmorozov333 Date: Wed, 22 May 2024 11:15:33 +0300 Subject: [PATCH 047/110] fix read sequence checker (#4725) Co-authored-by: Ivan Morozov --- ydb/core/tx/columnshard/columnshard__scan.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ydb/core/tx/columnshard/columnshard__scan.cpp b/ydb/core/tx/columnshard/columnshard__scan.cpp index e4c76ab6cccf..b881f6962cfa 100644 --- a/ydb/core/tx/columnshard/columnshard__scan.cpp +++ b/ydb/core/tx/columnshard/columnshard__scan.cpp @@ -253,9 +253,9 @@ class TColumnShardScan : public TActorBootstrapped, NArrow::IR Bytes += NArrow::GetBatchDataSize(batch); ACFL_DEBUG("stage", "data_format")("batch_size", NArrow::GetBatchDataSize(batch))("num_rows", numRows)("batch_columns", JoinSeq(",", batch->schema()->field_names())); } - if (CurrentLastReadKey) { - NOlap::NIndexedReader::TSortableBatchPosition pNew(result.GetLastReadKey(), 0, result.GetLastReadKey()->schema()->field_names(), {}, false); - NOlap::NIndexedReader::TSortableBatchPosition pOld(CurrentLastReadKey, 0, CurrentLastReadKey->schema()->field_names(), {}, false); + if (CurrentLastReadKey && ReadMetadataRanges.size() == 1) { + NOlap::NIndexedReader::TSortableBatchPosition pNew(result.GetLastReadKey(), 0, result.GetLastReadKey()->schema()->field_names(), {}, ReadMetadataRanges.front()->IsDescSorted()); + NOlap::NIndexedReader::TSortableBatchPosition pOld(CurrentLastReadKey, 0, CurrentLastReadKey->schema()->field_names(), {}, ReadMetadataRanges.front()->IsDescSorted()); AFL_VERIFY(pOld < pNew)("old", pOld.DebugJson().GetStringRobust())("new", pNew.DebugJson().GetStringRobust()); } CurrentLastReadKey = result.GetLastReadKey(); From d13276516fc0fa5704b5833550cb7dd6706ae32f Mon Sep 17 00:00:00 2001 From: Aleksei Borzenkov Date: Fri, 24 May 2024 14:34:55 +0300 Subject: [PATCH 048/110] 24-1: Make max commit size configurable with icb (#4808) --- ydb/core/protos/config.proto | 9 +++++++++ ydb/core/tablet_flat/flat_database.cpp | 16 ---------------- ydb/core/tablet_flat/flat_database.h | 1 - ydb/core/tablet_flat/flat_executor.cpp | 19 +++++++++++++------ ydb/core/tablet_flat/flat_executor.h | 1 + 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/ydb/core/protos/config.proto b/ydb/core/protos/config.proto index 1bb7717985cf..5022698dc5c4 100644 --- a/ydb/core/protos/config.proto +++ b/ydb/core/protos/config.proto @@ -1294,12 +1294,21 @@ message TImmediateControlsConfig { optional TKeyValue KeyValue = 1; } + message TTabletControls { + optional uint64 MaxCommitRedoMB = 1 [(ControlOptions) = { + Description: "Maximum redo size per commit in megabytes", + MinValue: 8, + MaxValue: 4096, + DefaultValue: 256 }]; + } + optional TDataShardControls DataShardControls = 1; optional TTxLimitControls TxLimitControls = 2; optional TCoordinatorControls CoordinatorControls = 3; optional TSchemeShardControls SchemeShardControls = 4; optional TTCMallocControls TCMallocControls = 5; optional TTracingControls TracingControls = 6; + optional TTabletControls TabletControls = 8; }; message TMeteringConfig { diff --git a/ydb/core/tablet_flat/flat_database.cpp b/ydb/core/tablet_flat/flat_database.cpp index 339fcb265b59..a76f5a615089 100644 --- a/ydb/core/tablet_flat/flat_database.cpp +++ b/ydb/core/tablet_flat/flat_database.cpp @@ -15,10 +15,6 @@ #include #include - -#define MAX_REDO_BYTES_PER_COMMIT 268435456U // 256MB - - namespace NKikimr { namespace NTable { @@ -666,18 +662,6 @@ size_t TDatabase::GetCommitRedoBytes() const return Redo->Bytes(); } -bool TDatabase::ValidateCommit(TString &err) -{ - if (*Redo && Redo->Bytes() > MAX_REDO_BYTES_PER_COMMIT) { - err = TStringBuilder() - << "Redo commit of " << Redo->Bytes() - << " bytes is more than the allowed limit"; - return false; - } - - return true; -} - bool TDatabase::HasChanges() const { Y_ABORT_UNLESS(Redo, "Transaction is not in progress"); diff --git a/ydb/core/tablet_flat/flat_database.h b/ydb/core/tablet_flat/flat_database.h index 67332dbe80ed..bfc7452c8701 100644 --- a/ydb/core/tablet_flat/flat_database.h +++ b/ydb/core/tablet_flat/flat_database.h @@ -256,7 +256,6 @@ class TDatabase { void RollUpRemoveRowVersions(ui32 table, const TRowVersion& lower, const TRowVersion& upper); size_t GetCommitRedoBytes() const; - bool ValidateCommit(TString&); TCompactionStats GetCompactionStats(ui32 table) const; diff --git a/ydb/core/tablet_flat/flat_executor.cpp b/ydb/core/tablet_flat/flat_executor.cpp index 7e74e12d1898..58ca70001c3f 100644 --- a/ydb/core/tablet_flat/flat_executor.cpp +++ b/ydb/core/tablet_flat/flat_executor.cpp @@ -136,6 +136,7 @@ TExecutor::TExecutor( , CounterEventsInFlight(new TEvTabletCounters::TInFlightCookie) , Stats(new TExecutorStatsImpl()) , LogFlushDelayOverrideUsec(-1, -1, 60*1000*1000) + , MaxCommitRedoMB(256, 1, 4096) {} TExecutor::~TExecutor() { @@ -159,6 +160,7 @@ void TExecutor::Registered(TActorSystem *sys, const TActorId&) Memory = new TMemory(Logger.Get(), this, Emitter, Sprintf(" at tablet %" PRIu64, Owner->TabletID())); TString myTabletType = TTabletTypes::TypeToStr(Owner->TabletType()); AppData()->Icb->RegisterSharedControl(LogFlushDelayOverrideUsec, myTabletType + "_LogFlushDelayOverrideUsec"); + AppData()->Icb->RegisterSharedControl(MaxCommitRedoMB, "TabletControls.MaxCommitRedoMB"); // instantiate alert counters so even never reported alerts are created GetServiceCounters(AppData()->Counters, "tablets")->GetCounter("alerts_pending_nodata", true); @@ -1708,12 +1710,17 @@ void TExecutor::ExecuteTransaction(TAutoPtr seat, const TActorContext &ct } bool failed = false; - TString failureReason; - if (done && (failed = !Database->ValidateCommit(failureReason))) { - if (auto logl = Logger->Log(ELnLev::Crit)) { - logl - << NFmt::Do(*this) << " " << NFmt::Do(*seat) - << " fatal commit failure: " << failureReason; + if (done) { + ui64 commitRedoBytes = Database->GetCommitRedoBytes(); + ui64 maxCommitRedoBytes = ui64(MaxCommitRedoMB) << 20; // MB to bytes + if (commitRedoBytes > maxCommitRedoBytes) { + if (auto logl = Logger->Log(ELnLev::Crit)) { + logl + << NFmt::Do(*this) << " " << NFmt::Do(*seat) + << " fatal commit failure: Redo commit of " << commitRedoBytes + << " bytes is more than the allowed limit"; + } + failed = true; } } diff --git a/ydb/core/tablet_flat/flat_executor.h b/ydb/core/tablet_flat/flat_executor.h index a8feffc9ddad..47c0ede8b1e7 100644 --- a/ydb/core/tablet_flat/flat_executor.h +++ b/ydb/core/tablet_flat/flat_executor.h @@ -483,6 +483,7 @@ class TExecutor TActorContext OwnerCtx() const; TControlWrapper LogFlushDelayOverrideUsec; + TControlWrapper MaxCommitRedoMB; ui64 Stamp() const noexcept; void Registered(TActorSystem*, const TActorId&) override; From 0a189e0b812ac11a002ff88dbd82124badac1376 Mon Sep 17 00:00:00 2001 From: Aleksei Borzenkov Date: Fri, 24 May 2024 22:06:15 +0300 Subject: [PATCH 049/110] 24-1: Add missing proto description for TTabletControls (#4838) --- ydb/core/cms/json_proxy_proto.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ydb/core/cms/json_proxy_proto.h b/ydb/core/cms/json_proxy_proto.h index 4844919de311..918e7c638fcb 100644 --- a/ydb/core/cms/json_proxy_proto.h +++ b/ydb/core/cms/json_proxy_proto.h @@ -86,6 +86,8 @@ class TJsonProxyProto : public TActorBootstrapped { return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTracingControls::TSamplingThrottlingOptions::TSamplingOptions::descriptor(), ctx); else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTracingControls.TKeyValue") return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTracingControls::TKeyValue::descriptor(), ctx); + else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTabletControls") + return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTabletControls::descriptor(), ctx); } ctx.Send(RequestEvent->Sender, From f6cc07bf97e01e195ece4f7867194eca11cd174d Mon Sep 17 00:00:00 2001 From: Andrei Rykov Date: Mon, 27 May 2024 10:18:21 +0200 Subject: [PATCH 050/110] health-check lacks iterator validation vulnerability - merge stable-24-1 (#4799) --- ydb/core/health_check/health_check.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ydb/core/health_check/health_check.cpp b/ydb/core/health_check/health_check.cpp index c0e407f01933..07a687d347b1 100644 --- a/ydb/core/health_check/health_check.cpp +++ b/ydb/core/health_check/health_check.cpp @@ -1513,12 +1513,16 @@ class TSelfCheckRequest : public TActorBootstrapped { void FillVDiskStatus(const TString& vSlotId, Ydb::Monitoring::StorageVDiskStatus& storageVDiskStatus, TSelfCheckContext context) { auto itVSlot = BSConfigVSlots.find(vSlotId); const TEvInterconnect::TNodeInfo* nodeInfo = nullptr; + + context.Location.mutable_storage()->mutable_pool()->mutable_group()->mutable_vdisk()->mutable_id()->Clear(); + context.Location.mutable_storage()->mutable_pool()->mutable_group()->clear_id(); // you can see VDisks Group Id in vSlotId field if (itVSlot != BSConfigVSlots.end()) { TNodeId nodeId = itVSlot->second->vslotid().nodeid(); auto itNodeInfo = MergedNodeInfo.find(nodeId); if (itNodeInfo != MergedNodeInfo.end()) { nodeInfo = itNodeInfo->second; } + context.Location.mutable_storage()->mutable_pool()->mutable_group()->mutable_vdisk()->add_id(GetVDiskId(*itVSlot->second)); context.Location.mutable_storage()->mutable_node()->set_id(nodeId); } else { context.Location.mutable_storage()->mutable_node()->clear_id(); @@ -1531,10 +1535,6 @@ class TSelfCheckRequest : public TActorBootstrapped { context.Location.mutable_storage()->mutable_node()->clear_port(); } - context.Location.mutable_storage()->mutable_pool()->mutable_group()->mutable_vdisk()->mutable_id()->Clear(); - context.Location.mutable_storage()->mutable_pool()->mutable_group()->mutable_vdisk()->add_id(GetVDiskId(*itVSlot->second)); - context.Location.mutable_storage()->mutable_pool()->mutable_group()->clear_id(); // you can see VDisks Group Id in vSlotId field - storageVDiskStatus.set_id(vSlotId); if (itVSlot == BSConfigVSlots.end()) { // this report, in theory, can't happen because there was slot mention in bsc group info. this slot info have to exists in bsc too From a862c28578e3d37c2bda9c0577bd25dd60a1984a Mon Sep 17 00:00:00 2001 From: Andrei Rykov Date: Mon, 27 May 2024 10:18:42 +0200 Subject: [PATCH 051/110] hc hive sync status - merge stable-24-1 (#4841) --- ydb/core/health_check/health_check.cpp | 3 +- ydb/core/health_check/health_check_ut.cpp | 140 ++++++++++++++++++---- 2 files changed, 121 insertions(+), 22 deletions(-) diff --git a/ydb/core/health_check/health_check.cpp b/ydb/core/health_check/health_check.cpp index 07a687d347b1..07de22de1eaa 100644 --- a/ydb/core/health_check/health_check.cpp +++ b/ydb/core/health_check/health_check.cpp @@ -998,8 +998,7 @@ class TSelfCheckRequest : public TActorBootstrapped { static const int HIVE_SYNCHRONIZATION_PERIOD_MS = 10000; bool IsHiveSynchronizationPeriod(NKikimrHive::TEvResponseHiveInfo& hiveInfo) { - auto hiveUptime = hiveInfo.GetStartTimeTimestamp() - hiveInfo.GetResponseTimestamp(); - return hiveUptime > HIVE_SYNCHRONIZATION_PERIOD_MS; + return hiveInfo.GetResponseTimestamp() < hiveInfo.GetStartTimeTimestamp() + HIVE_SYNCHRONIZATION_PERIOD_MS; } void AggregateHiveInfo() { diff --git a/ydb/core/health_check/health_check_ut.cpp b/ydb/core/health_check/health_check_ut.cpp index 1f199cb2b81b..1a8082331708 100644 --- a/ydb/core/health_check/health_check_ut.cpp +++ b/ydb/core/health_check/health_check_ut.cpp @@ -59,6 +59,8 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { int const GROUP_START_ID = 1200; int const VCARD_START_ID = 55; + const TPathId SUBDOMAIN_KEY = {7000000000, 1}; + void ChangeDescribeSchemeResult(TEvSchemeShard::TEvDescribeSchemeResult::TPtr* ev, ui64 size = 20000000, ui64 quota = 90000000) { auto record = (*ev)->Get()->MutableRecord(); auto pool = record->mutable_pathdescription()->mutable_domaindescription()->add_storagepools(); @@ -146,7 +148,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { } auto groupId = GROUP_START_ID; - + auto group = pbConfig->add_group(); group->CopyFrom(groupSample); group->set_groupid(groupId); @@ -155,7 +157,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { group->clear_vslotid(); auto vslotId = VCARD_START_ID; - + for (auto status: vdiskStatuses) { auto vslot = pbConfig->add_vslot(); vslot->CopyFrom(vslotSample); @@ -192,7 +194,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { } auto groupId = GROUP_START_ID; - + auto group = pbConfig->add_group(); group->CopyFrom(groupSample); group->set_groupid(groupId); @@ -201,7 +203,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { group->clear_vslotid(); auto vslotId = VCARD_START_ID; - + for (auto status: vdiskStatuses) { auto vslot = pbConfig->add_vslot(); vslot->CopyFrom(vslotSample); @@ -547,7 +549,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { auto result = RequestHc(1, 100, false, true); CheckHcProtobufSizeIssue(result, Ydb::Monitoring::StatusFlag::RED, 1); } - + void ClearLoadAverage(TEvWhiteboard::TEvSystemStateResponse::TPtr* ev) { auto *systemStateInfo = (*ev)->Get()->Record.MutableSystemStateInfo(); for (NKikimrWhiteboard::TSystemStateInfo &state : *systemStateInfo) { @@ -618,7 +620,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { (*ev)->Get()->Record.GetResponse().operation().result().UnpackTo(&listTenantsResult); for (const auto &path : paths) { listTenantsResult.Addpaths(path); - } + } (*ev)->Get()->Record.MutableResponse()->mutable_operation()->mutable_result()->PackFrom(listTenantsResult); } @@ -632,13 +634,13 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { sharedNodeStats->MutableNodeDomain()->SetSchemeShard(SHARED_DOMAIN_KEY.OwnerId); sharedNodeStats->MutableNodeDomain()->SetPathId(SHARED_DOMAIN_KEY.LocalPathId); } - + if (exclusiveDynNodeId) { auto *exclusiveNodeStats = record.MutableNodeStats()->Add(); exclusiveNodeStats->SetNodeId(exclusiveDynNodeId); exclusiveNodeStats->MutableNodeDomain()->SetSchemeShard(SERVERLESS_DOMAIN_KEY.OwnerId); exclusiveNodeStats->MutableNodeDomain()->SetPathId(SERVERLESS_DOMAIN_KEY.LocalPathId); - } + } } Y_UNIT_TEST(SpecificServerless) { @@ -671,7 +673,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { } case TEvTxProxySchemeCache::EvNavigateKeySetResult: { auto *x = reinterpret_cast(&ev); - ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeShared, runtime); + ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeShared, runtime); break; } case TEvHive::EvResponseHiveNodeStats: { @@ -762,7 +764,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { } case TEvTxProxySchemeCache::EvNavigateKeySetResult: { auto *x = reinterpret_cast(&ev); - ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeExclusive, runtime); + ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeExclusive, runtime); break; } case TEvHive::EvResponseHiveNodeStats: { @@ -864,7 +866,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { } case TEvTxProxySchemeCache::EvNavigateKeySetResult: { auto *x = reinterpret_cast(&ev); - ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeShared, runtime); + ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeShared, runtime); break; } case TEvHive::EvResponseHiveNodeStats: { @@ -955,7 +957,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { } case TEvTxProxySchemeCache::EvNavigateKeySetResult: { auto *x = reinterpret_cast(&ev); - ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeExclusive, runtime); + ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeExclusive, runtime); break; } case TEvHive::EvResponseHiveNodeStats: { @@ -1000,7 +1002,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { Ctest << result.ShortDebugString(); UNIT_ASSERT_VALUES_EQUAL(result.self_check_result(), Ydb::Monitoring::SelfCheck::GOOD); - + bool databaseFoundInResult = false; for (const auto &database_status : result.database_status()) { if (database_status.name() == "/Root/serverless") { @@ -1018,7 +1020,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { } UNIT_ASSERT(databaseFoundInResult); } - + Y_UNIT_TEST(ServerlessWhenTroublesWithSharedNodes) { TPortManager tp; ui16 port = tp.GetPort(2134); @@ -1044,7 +1046,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { } case TEvTxProxySchemeCache::EvNavigateKeySetResult: { auto *x = reinterpret_cast(&ev); - ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeShared, runtime); + ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeShared, runtime); break; } case TEvSchemeShard::EvDescribeSchemeResult: { @@ -1073,7 +1075,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { return TTestActorRuntime::EEventAction::PROCESS; }; runtime.SetObserverFunc(observerFunc); - + TActorId sender = runtime.AllocateEdgeActor(); TAutoPtr handle; @@ -1098,7 +1100,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { UNIT_ASSERT_VALUES_EQUAL(database_status.storage().pools().size(), 1); UNIT_ASSERT_VALUES_EQUAL(database_status.storage().pools()[0].id(), SHARED_STORAGE_POOL_NAME); } - + Y_UNIT_TEST(ServerlessWithExclusiveNodesWhenTroublesWithSharedNodes) { TPortManager tp; ui16 port = tp.GetPort(2134); @@ -1141,7 +1143,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { } case TEvTxProxySchemeCache::EvNavigateKeySetResult: { auto *x = reinterpret_cast(&ev); - ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeExclusive, runtime); + ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeExclusive, runtime); break; } case TEvHive::EvResponseHiveNodeStats: { @@ -1277,7 +1279,7 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { } case TEvTxProxySchemeCache::EvNavigateKeySetResult: { auto *x = reinterpret_cast(&ev); - ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeExclusive, runtime); + ChangeNavigateKeyResultServerless(x, NKikimrSubDomains::EServerlessComputeResourcesModeExclusive, runtime); break; } case TEvHive::EvResponseHiveNodeStats: { @@ -1370,6 +1372,104 @@ Y_UNIT_TEST_SUITE(THealthCheckTest) { UNIT_ASSERT(sharedDatabaseFoundInResult); UNIT_ASSERT(rootDatabaseFoundInResult); } -} + void HiveSyncTest(bool syncPeriod) { + TPortManager tp; + ui16 port = tp.GetPort(2134); + ui16 grpcPort = tp.GetPort(2135); + auto settings = TServerSettings(port) + .SetNodeCount(1) + .SetDynamicNodeCount(1) + .SetUseRealThreads(false) + .SetDomainName("Root"); + TServer server(settings); + server.EnableGRpc(grpcPort); + TClient client(settings); + TTestActorRuntime& runtime = *server.GetRuntime(); + + ui32 dynNodeId = runtime.GetNodeId(1); + + auto observerFunc = [&](TAutoPtr& ev) { + switch (ev->GetTypeRewrite()) { + case TEvHive::EvResponseHiveInfo: { + auto *x = reinterpret_cast(&ev); + auto& record = (*x)->Get()->Record; + record.SetStartTimeTimestamp(0); + if (syncPeriod) { + record.SetResponseTimestamp(NHealthCheck::TSelfCheckRequest::HIVE_SYNCHRONIZATION_PERIOD_MS / 2); + } else { + record.SetResponseTimestamp(NHealthCheck::TSelfCheckRequest::HIVE_SYNCHRONIZATION_PERIOD_MS * 2); + } + auto *tablet = record.MutableTablets()->Add(); + tablet->SetTabletID(1); + tablet->SetNodeID(dynNodeId); + tablet->SetTabletType(NKikimrTabletBase::TTabletTypes::DataShard); + tablet->SetVolatileState(NKikimrHive::TABLET_VOLATILE_STATE_BOOTING); + tablet->MutableObjectDomain()->SetSchemeShard(SUBDOMAIN_KEY.OwnerId); + tablet->MutableObjectDomain()->SetPathId(SUBDOMAIN_KEY.LocalPathId); + break; + } + case TEvHive::EvResponseHiveNodeStats: { + auto *x = reinterpret_cast(&ev); + auto &record = (*x)->Get()->Record; + auto *nodeStats = record.MutableNodeStats()->Add(); + nodeStats->SetNodeId(dynNodeId); + nodeStats->MutableNodeDomain()->SetSchemeShard(SUBDOMAIN_KEY.OwnerId); + nodeStats->MutableNodeDomain()->SetPathId(SUBDOMAIN_KEY.LocalPathId); + break; + } + case NConsole::TEvConsole::EvGetTenantStatusResponse: { + auto *x = reinterpret_cast(&ev); + ChangeGetTenantStatusResponse(x, "/Root/database"); + break; + } + case TEvTxProxySchemeCache::EvNavigateKeySetResult: { + auto *x = reinterpret_cast(&ev); + TSchemeCacheNavigate::TEntry& entry((*x)->Get()->Request->ResultSet.front()); + entry.Status = TSchemeCacheNavigate::EStatus::Ok; + entry.Kind = TSchemeCacheNavigate::EKind::KindExtSubdomain; + entry.Path = {"Root", "database"}; + entry.DomainInfo = MakeIntrusive(SUBDOMAIN_KEY, SUBDOMAIN_KEY); + + break; + } + } + + return TTestActorRuntime::EEventAction::PROCESS; + }; + runtime.SetObserverFunc(observerFunc); + + TActorId sender = runtime.AllocateEdgeActor(); + TAutoPtr handle; + + auto *request = new NHealthCheck::TEvSelfCheckRequest; + request->Request.set_return_verbose_status(true); + request->Database = "/Root/database"; + runtime.Send(new IEventHandle(NHealthCheck::MakeHealthCheckID(), sender, request, 0)); + const auto result = runtime.GrabEdgeEvent(handle)->Result; + + Cerr << result.ShortDebugString() << Endl; + + UNIT_ASSERT_VALUES_EQUAL(result.database_status_size(), 1); + + bool deadTabletIssueFoundInResult = false; + for (const auto &issue_log : result.issue_log()) { + if (issue_log.level() == 4 && issue_log.type() == "TABLET") { + UNIT_ASSERT_VALUES_EQUAL(issue_log.location().compute().tablet().id().size(), 1); + UNIT_ASSERT_VALUES_EQUAL(issue_log.location().compute().tablet().type(), "DataShard"); + deadTabletIssueFoundInResult = true; + } + } + + UNIT_ASSERT_VALUES_EQUAL(syncPeriod, !deadTabletIssueFoundInResult); + } + + Y_UNIT_TEST(HiveSyncPeriodIgnoresTabletsState) { + HiveSyncTest(true); + } + + Y_UNIT_TEST(AfterHiveSyncPeriodReportsTabletsState) { + HiveSyncTest(false); + } +} } From 660046f4c3c3d183cdcaa5252db7c34a154745da Mon Sep 17 00:00:00 2001 From: Andrei Rykov Date: Mon, 27 May 2024 10:19:04 +0200 Subject: [PATCH 052/110] fallback on bad query proxying - merge stable-24-1 (#4843) --- ydb/core/viewer/json_query.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ydb/core/viewer/json_query.h b/ydb/core/viewer/json_query.h index 5ff21f9782d0..d42bc1711a10 100644 --- a/ydb/core/viewer/json_query.h +++ b/ydb/core/viewer/json_query.h @@ -416,7 +416,12 @@ class TJsonQuery : public TViewerPipeClient { } void HandleReply(TEvViewer::TEvViewerResponse::TPtr& ev) { - Handle(*(ev.Get()->Get()->Record.MutableQueryResponse())); + auto& record = ev.Get()->Get()->Record; + if (record.HasQueryResponse()) { + Handle(*(ev.Get()->Get()->Record.MutableQueryResponse())); + } else { + SendKpqProxyRequest(); // fallback + } } void HandleReply(NKqp::TEvKqp::TEvAbortExecution::TPtr& ev) { From 1ef008afce93b9a878234410fae1e7b216c224f6 Mon Sep 17 00:00:00 2001 From: vporyadke Date: Mon, 27 May 2024 11:04:08 +0200 Subject: [PATCH 053/110] only give counter resource to tablets that never had normal metrics (#4829) --- ydb/core/mind/hive/hive_ut.cpp | 90 ++++++++++++++++++++++++++++++ ydb/core/mind/hive/tablet_info.cpp | 18 ++++-- ydb/core/mind/hive/tablet_info.h | 2 +- ydb/core/protos/metrics.proto | 1 + ydb/core/util/metrics.h | 3 + 5 files changed, 107 insertions(+), 7 deletions(-) diff --git a/ydb/core/mind/hive/hive_ut.cpp b/ydb/core/mind/hive/hive_ut.cpp index 58367a60403f..d8eec27f09bd 100644 --- a/ydb/core/mind/hive/hive_ut.cpp +++ b/ydb/core/mind/hive/hive_ut.cpp @@ -4507,6 +4507,96 @@ Y_UNIT_TEST_SUITE(THiveTest) { UNIT_ASSERT_LE(movedToFirstNode, TABLETS_PER_NODE / 2); } + Y_UNIT_TEST(TestHiveNoBalancingWithLowResourceUsage) { + static constexpr ui64 NUM_NODES = 5; + static constexpr ui64 NUM_TABLETS = 100; + TTestBasicRuntime runtime(NUM_NODES, false); + Setup(runtime, true, 1, [](TAppPrepare& app) { + app.HiveConfig.SetTabletKickCooldownPeriod(0); + app.HiveConfig.SetResourceChangeReactionPeriod(0); + app.HiveConfig.SetMetricsWindowSize(1); + }); + const int nodeBase = runtime.GetNodeId(0); + TActorId senderA = runtime.AllocateEdgeActor(); + const ui64 hiveTablet = MakeDefaultHiveID(0); + const ui64 testerTablet = MakeDefaultHiveID(1); + + auto getDistribution = [hiveTablet, nodeBase, senderA, &runtime]() -> std::array, NUM_NODES> { + std::array, NUM_NODES> nodeTablets = {}; + { + runtime.SendToPipe(hiveTablet, senderA, new TEvHive::TEvRequestHiveInfo()); + TAutoPtr handle; + TEvHive::TEvResponseHiveInfo* response = runtime.GrabEdgeEventRethrow(handle); + for (const NKikimrHive::TTabletInfo& tablet : response->Record.GetTablets()) { + UNIT_ASSERT_C(((int)tablet.GetNodeID() - nodeBase >= 0) && (tablet.GetNodeID() - nodeBase < NUM_NODES), + "nodeId# " << tablet.GetNodeID() << " nodeBase# " << nodeBase); + nodeTablets[tablet.GetNodeID() - nodeBase].push_back(tablet.GetTabletID()); + } + } + return nodeTablets; + }; + + CreateTestBootstrapper(runtime, CreateTestTabletInfo(hiveTablet, TTabletTypes::Hive), &CreateDefaultHive); + + // wait for creation of nodes + { + TDispatchOptions options; + options.FinalEvents.emplace_back(TEvLocal::EvStatus, NUM_NODES); + runtime.DispatchEvents(options); + } + + TTabletTypes::EType tabletType = TTabletTypes::Dummy; + std::vector tablets; + tablets.reserve(NUM_TABLETS); + for (size_t i = 0; i < NUM_TABLETS; ++i) { + THolder ev(new TEvHive::TEvCreateTablet(testerTablet, 100500 + i, tabletType, BINDED_CHANNELS)); + ev->Record.SetObjectId(i); + ui64 tabletId = SendCreateTestTablet(runtime, hiveTablet, testerTablet, std::move(ev), 0, true); + MakeSureTabletIsUp(runtime, tabletId, 0); + tablets.push_back(tabletId); + } + + auto initialDistribution = getDistribution(); + + // report small metrics for some tablets + auto rand = CreateDeterministicRandomProvider(777); + for (auto tablet : tablets) { + THolder metrics = MakeHolder(); + NKikimrHive::TTabletMetrics* metric = metrics->Record.AddTabletMetrics(); + metric->SetTabletID(tablet); + if (rand->GenRand() % 2) { + metric->MutableResourceUsage()->SetCPU(1001); // 1% core + metric->MutableResourceUsage()->SetMemory(150'000); // 150kb + } else { + metric->MutableResourceUsage()->SetCPU(999); + metric->MutableResourceUsage()->SetMemory(100'000); + } + + runtime.SendToPipe(hiveTablet, senderA, metrics.Release()); + } + + { + TDispatchOptions options; + options.FinalEvents.emplace_back(NHive::TEvPrivate::EvBalancerOut); + runtime.DispatchEvents(options, TDuration::Seconds(10)); + } + + // Check that balancer moved no tablets + auto newDistribution = getDistribution(); + + UNIT_ASSERT_EQUAL(initialDistribution, newDistribution); + + { + auto request = std::make_unique(); + request->Record.SetReturnMetrics(true); + runtime.SendToPipe(hiveTablet, senderA, request.release()); + TAutoPtr handle; + TEvHive::TEvResponseHiveDomainStats* response = runtime.GrabEdgeEventRethrow(handle); + ui64 totalCounter = response->Record.GetDomainStats(0).GetMetrics().GetCounter(); + UNIT_ASSERT_VALUES_EQUAL(totalCounter, 0); + } + } + Y_UNIT_TEST(TestHiveBalancerWithImmovableTablets) { static constexpr ui64 TABLETS_PER_NODE = 10; TTestBasicRuntime runtime(3, false); diff --git a/ydb/core/mind/hive/tablet_info.cpp b/ydb/core/mind/hive/tablet_info.cpp index a3a5698efe6a..37e523dbdff3 100644 --- a/ydb/core/mind/hive/tablet_info.cpp +++ b/ydb/core/mind/hive/tablet_info.cpp @@ -404,14 +404,21 @@ TResourceRawValues TTabletInfo::GetResourceMaximumValues() const { } } -i64 TTabletInfo::GetCounterValue(const NKikimrTabletBase::TMetrics& metrics, const TVector& allowedMetricIds) { - if (Find(allowedMetricIds, NKikimrTabletBase::TMetrics::kCPUFieldNumber) != allowedMetricIds.end() && THive::IsValidMetricsCPU(metrics)) { +i64 TTabletInfo::GetCounterValue() const { + const auto& allowedMetricIds = GetTabletAllowedMetricIds(); + if (Find(allowedMetricIds, NKikimrTabletBase::TMetrics::kCPUFieldNumber) != allowedMetricIds.end() + && (ResourceMetricsAggregates.MaximumCPU.GetAllTimeMaximum() > 0 + || ResourceValues.GetCPU() > 0)) { return 0; } - if (Find(allowedMetricIds, NKikimrTabletBase::TMetrics::kMemoryFieldNumber) != allowedMetricIds.end() && THive::IsValidMetricsMemory(metrics)) { + if (Find(allowedMetricIds, NKikimrTabletBase::TMetrics::kMemoryFieldNumber) != allowedMetricIds.end() + && (ResourceMetricsAggregates.MaximumMemory.GetAllTimeMaximum() > 0 + || ResourceValues.GetMemory() > 0)) { return 0; } - if (Find(allowedMetricIds, NKikimrTabletBase::TMetrics::kNetworkFieldNumber) != allowedMetricIds.end() && THive::IsValidMetricsNetwork(metrics)) { + if (Find(allowedMetricIds, NKikimrTabletBase::TMetrics::kNetworkFieldNumber) != allowedMetricIds.end() + && (ResourceMetricsAggregates.MaximumNetwork.GetAllTimeMaximum() > 0 + || ResourceValues.GetNetwork() > 0)) { return 0; } return 1; @@ -452,8 +459,7 @@ void TTabletInfo::FilterRawValues(TResourceNormalizedValues& values) const { } void TTabletInfo::ActualizeCounter() { - auto value = GetCounterValue(ResourceValues, GetTabletAllowedMetricIds()); - ResourceValues.SetCounter(value); + ResourceValues.SetCounter(GetCounterValue()); } const TNodeFilter& TTabletInfo::GetNodeFilter() const { diff --git a/ydb/core/mind/hive/tablet_info.h b/ydb/core/mind/hive/tablet_info.h index 2afb5f6010a8..8d722440b57d 100644 --- a/ydb/core/mind/hive/tablet_info.h +++ b/ydb/core/mind/hive/tablet_info.h @@ -230,7 +230,7 @@ struct TTabletInfo { void UpdateResourceUsage(const NKikimrTabletBase::TMetrics& metrics); TResourceRawValues GetResourceCurrentValues() const; TResourceRawValues GetResourceMaximumValues() const; - static i64 GetCounterValue(const NKikimrTabletBase::TMetrics& metrics, const TVector& allowedMetricIds); + i64 GetCounterValue() const; void FilterRawValues(TResourceRawValues& values) const; void FilterRawValues(TResourceNormalizedValues& values) const; void ActualizeCounter(); diff --git a/ydb/core/protos/metrics.proto b/ydb/core/protos/metrics.proto index 017014b8118b..d1e3f91d9430 100644 --- a/ydb/core/protos/metrics.proto +++ b/ydb/core/protos/metrics.proto @@ -3,4 +3,5 @@ package NKikimrMetricsProto; message TMaximumValueUI64 { optional uint64 LastBucketStartTime = 1; repeated uint64 Values = 2; + optional uint64 AllTimeMaximum = 3; } diff --git a/ydb/core/util/metrics.h b/ydb/core/util/metrics.h index c58a7d65c4cf..d726e40555da 100644 --- a/ydb/core/util/metrics.h +++ b/ydb/core/util/metrics.h @@ -395,6 +395,9 @@ class TMaximumValueVariableWindowUI64 : public NKikimrMetricsProto::TMaximumValu using TProto = NKikimrMetricsProto::TMaximumValueUI64; void SetValue(TType value, TInstant now = TInstant::Now()) { + if (TProto::GetAllTimeMaximum() > 0 || MaximumValue > 0) { // ignoring initial value + TProto::SetAllTimeMaximum(std::max(value, TProto::GetAllTimeMaximum())); + } TDuration elapsedCurrentBucket = now - TInstant::MilliSeconds(TProto::GetLastBucketStartTime()); if (TProto::ValuesSize() == 0 || elapsedCurrentBucket >= BucketDuration) { size_t bucketsPassed = 0; From 5296d28cf08e86689be8a8acdb14e065d4bcc2e6 Mon Sep 17 00:00:00 2001 From: Daniil Cherednik Date: Mon, 27 May 2024 14:22:04 +0200 Subject: [PATCH 054/110] Fix use full column id and view at the same time. (#4414) (#4757) Co-authored-by: Tony-Romanov <150126326+Tony-Romanov@users.noreply.github.com> --- ydb/library/yql/sql/v1/select.cpp | 8 +++++--- ydb/library/yql/sql/v1/sql_ut.cpp | 11 +++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ydb/library/yql/sql/v1/select.cpp b/ydb/library/yql/sql/v1/select.cpp index c32307cd6469..1dd8713be08e 100644 --- a/ydb/library/yql/sql/v1/select.cpp +++ b/ydb/library/yql/sql/v1/select.cpp @@ -412,8 +412,9 @@ class IRealSource: public ISource { } TMaybe AddColumn(TContext& ctx, TColumnNode& column) override { - auto& label = *column.GetSourceName(); - if (!label.empty() && label != GetLabel()) { + const auto& label = *column.GetSourceName(); + const auto& source = GetLabel(); + if (!label.empty() && label != source && !(source.StartsWith(label) && source[label.size()] == ':')) { if (column.IsReliable()) { ctx.Error(column.GetPos()) << "Unknown correlation name: " << label; } @@ -694,7 +695,8 @@ class TTableSource: public IRealSource { } bool ShouldUseSourceAsColumn(const TString& source) const override { - return source && source != GetLabel(); + const auto& label = GetLabel(); + return source && source != label && !(label.StartsWith(source) && label[source.size()] == ':'); } TMaybe AddColumn(TContext& ctx, TColumnNode& column) override { diff --git a/ydb/library/yql/sql/v1/sql_ut.cpp b/ydb/library/yql/sql/v1/sql_ut.cpp index ee7420fcef41..69cffe43f8e0 100644 --- a/ydb/library/yql/sql/v1/sql_ut.cpp +++ b/ydb/library/yql/sql/v1/sql_ut.cpp @@ -6456,4 +6456,15 @@ Y_UNIT_TEST_SUITE(TViewSyntaxTest) { UNIT_ASSERT_VALUES_EQUAL(elementStat["Write!"], 1); } + + Y_UNIT_TEST(UseViewAndFullColumnId) { + NYql::TAstParseResult res = SqlToYql("USE plato; SELECT Input.x FROM Input VIEW uitzicht;"); + UNIT_ASSERT(res.Root); + + TWordCountHive elementStat = {{TString("SqlAccess"), 0}, {"SqlProjectItem", 0}, {"Read!", 0}}; + VerifyProgram(res, elementStat); + UNIT_ASSERT_VALUES_EQUAL(0, elementStat["SqlAccess"]); + UNIT_ASSERT_VALUES_EQUAL(1, elementStat["SqlProjectItem"]); + UNIT_ASSERT_VALUES_EQUAL(1, elementStat["Read!"]); + } } From 13c6e2ae9fe488dc69b3b1200e1491df0f18f31f Mon Sep 17 00:00:00 2001 From: Tony-Romanov <150126326+Tony-Romanov@users.noreply.github.com> Date: Mon, 27 May 2024 17:21:20 +0200 Subject: [PATCH 055/110] Apply TablePathPrefix to topic. (#4866) --- ydb/library/yql/sql/v1/query.cpp | 4 ++-- ydb/library/yql/sql/v1/sql_ut.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ydb/library/yql/sql/v1/query.cpp b/ydb/library/yql/sql/v1/query.cpp index a9185ddf3413..3c75331ea690 100644 --- a/ydb/library/yql/sql/v1/query.cpp +++ b/ydb/library/yql/sql/v1/query.cpp @@ -120,8 +120,8 @@ class TTopicKey: public ITableKeys { return Name.GetLiteral() ? &Full : nullptr; } - TNodePtr BuildKeys(TContext&, ITableKeys::EBuildKeysMode) override { - auto path = Name.Build(); // ToDo Need some prefix here? + TNodePtr BuildKeys(TContext& ctx, ITableKeys::EBuildKeysMode) override { + const auto path = ctx.GetPrefixedPath(Service, Cluster, Name); if (!path) { return nullptr; } diff --git a/ydb/library/yql/sql/v1/sql_ut.cpp b/ydb/library/yql/sql/v1/sql_ut.cpp index 69cffe43f8e0..089c6c76feec 100644 --- a/ydb/library/yql/sql/v1/sql_ut.cpp +++ b/ydb/library/yql/sql/v1/sql_ut.cpp @@ -6279,6 +6279,20 @@ Y_UNIT_TEST_SUITE(TopicsDDL) { ALTER CONSUMER consumer3 SET (read_from = 2); )", false); } + + Y_UNIT_TEST(TopicWithPrefix) { + NYql::TAstParseResult res = SqlToYql(R"( + USE plato; + PRAGMA TablePathPrefix = '/database/path/to/tables'; + ALTER TOPIC `my_table/my_feed` ADD CONSUMER `my_consumer`; + )"); + UNIT_ASSERT(res.Root); + + TWordCountHive elementStat = {{TString("/database/path/to/tables/my_table/my_feed"), 0}, {"topic", 0}}; + VerifyProgram(res, elementStat); + UNIT_ASSERT_VALUES_EQUAL(1, elementStat["topic"]); + UNIT_ASSERT_VALUES_EQUAL(1, elementStat["/database/path/to/tables/my_table/my_feed"]); + } } Y_UNIT_TEST_SUITE(BlockEnginePragma) { From e7f9bdd7b71d15509391575f8aaba444eba642aa Mon Sep 17 00:00:00 2001 From: Alek5andr-Kotov Date: Tue, 28 May 2024 12:51:23 +0300 Subject: [PATCH 056/110] Leaking 'PartitionWriterCacheActor` (#4892) (#4912) --- .../persqueue_v1/actors/partition_writer_cache_actor.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ydb/services/persqueue_v1/actors/partition_writer_cache_actor.cpp b/ydb/services/persqueue_v1/actors/partition_writer_cache_actor.cpp index d1a182401410..f76a36d35950 100644 --- a/ydb/services/persqueue_v1/actors/partition_writer_cache_actor.cpp +++ b/ydb/services/persqueue_v1/actors/partition_writer_cache_actor.cpp @@ -199,6 +199,8 @@ void TPartitionWriterCacheActor::Handle(TEvents::TEvPoisonPill::TPtr& ev, const for (auto& [_, writer] : Writers) { ctx.Send(writer->Actor, new TEvents::TEvPoisonPill()); } + + Die(ctx); } auto TPartitionWriterCacheActor::GetPartitionWriter(const TString& sessionId, const TString& txId, From 6694845f641c2227e17221de95da249a9d3f066a Mon Sep 17 00:00:00 2001 From: Alexander Rutkovsky Date: Tue, 28 May 2024 21:20:22 +0300 Subject: [PATCH 057/110] Make remaining group amount calculator consider decommission (merge from main #4942) (#4943) --- ydb/core/mind/bscontroller/storage_stats_calculator.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ydb/core/mind/bscontroller/storage_stats_calculator.cpp b/ydb/core/mind/bscontroller/storage_stats_calculator.cpp index 7bc6ec87d475..8961161930f1 100644 --- a/ydb/core/mind/bscontroller/storage_stats_calculator.cpp +++ b/ydb/core/mind/bscontroller/storage_stats_calculator.cpp @@ -136,16 +136,17 @@ class TStorageStatsCoroCalculatorImpl : public TActorCoroImpl { const auto readCentric = pdisk.HasReadCentric() ? MakeMaybe(pdisk.GetReadCentric()) : Nothing(); if (filter.MatchPDisk(pdisk.GetCategory(), sharedWithOs, readCentric)) { const TNodeLocation& location = HostRecordMap->GetLocation(pdiskId.NodeId); + const bool usable = pdisk.GetDecommitStatus() == "DECOMMIT_NONE"; const bool ok = mapper.RegisterPDisk({ .PDiskId = pdiskId, .Location = location, - .Usable = true, + .Usable = usable, .NumSlots = pdisk.GetNumActiveSlots(), .MaxSlots = pdisk.GetExpectedSlotCount(), .Groups = {}, .SpaceAvailable = 0, .Operational = true, - .Decommitted = false, + .Decommitted = false, // this flag applies only to group reconfiguration }); Y_ABORT_UNLESS(ok); break; From 53f75b6324c6fd06d25c69c693fdd693af42afab Mon Sep 17 00:00:00 2001 From: kruall Date: Wed, 29 May 2024 08:07:07 +0300 Subject: [PATCH 058/110] Merge 24-1: New counter for activations (CurrentActivationTimeUsByActivity) (#4938) (#4949) --- ydb/library/actors/core/actor_ut.cpp | 3 ++ .../actors/core/executor_pool_basic.cpp | 2 +- ydb/library/actors/core/executor_pool_io.cpp | 4 +- ydb/library/actors/core/executor_thread.cpp | 42 ++++++++++++------- ydb/library/actors/core/executor_thread.h | 6 ++- ydb/library/actors/core/executor_thread_ctx.h | 5 ++- ydb/library/actors/core/mon_stats.h | 16 +++++++ ydb/library/actors/core/thread_context.h | 17 +++++--- ydb/library/actors/core/worker_context.h | 6 +++ .../actors/helpers/pool_stats_collector.h | 28 +++++++++++++ 10 files changed, 101 insertions(+), 28 deletions(-) diff --git a/ydb/library/actors/core/actor_ut.cpp b/ydb/library/actors/core/actor_ut.cpp index 0c69d7ce29e7..b062f780dcdf 100644 --- a/ydb/library/actors/core/actor_ut.cpp +++ b/ydb/library/actors/core/actor_ut.cpp @@ -25,6 +25,7 @@ Y_UNIT_TEST_SUITE(ActorBenchmark) { using TSendReceiveActorParams = TActorBenchmark::TSendReceiveActorParams; Y_UNIT_TEST(WithOnlyOneSharedExecutors) { + return; THolder setup = TActorBenchmark::GetActorSystemSetup(); TActorBenchmark::AddBasicPool(setup, 1, 1, true); @@ -64,6 +65,7 @@ Y_UNIT_TEST_SUITE(ActorBenchmark) { } Y_UNIT_TEST(WithOnlyOneSharedAndOneCommonExecutors) { + return; THolder setup = TActorBenchmark::GetActorSystemSetup(); TActorBenchmark::AddBasicPool(setup, 2, true, true); @@ -105,6 +107,7 @@ Y_UNIT_TEST_SUITE(ActorBenchmark) { } Y_UNIT_TEST(WithSharedExecutors) { + return; THolder setup = TActorBenchmark::GetActorSystemSetup(); TActorBenchmark::AddBasicPool(setup, 2, 1, false); TActorBenchmark::AddBasicPool(setup, 2, 1, true); diff --git a/ydb/library/actors/core/executor_pool_basic.cpp b/ydb/library/actors/core/executor_pool_basic.cpp index be76655b6bc9..16adcd49a49e 100644 --- a/ydb/library/actors/core/executor_pool_basic.cpp +++ b/ydb/library/actors/core/executor_pool_basic.cpp @@ -171,7 +171,7 @@ namespace NActors { if (Harmonizer) { LWPROBE(TryToHarmonize, PoolId, PoolName); - Harmonizer->Harmonize(TlsThreadContext->StartOfElapsingTime.load(std::memory_order_relaxed)); + Harmonizer->Harmonize(TlsThreadContext->StartOfProcessingEventTS.load(std::memory_order_relaxed)); } TAtomic x = AtomicGet(Semaphore); diff --git a/ydb/library/actors/core/executor_pool_io.cpp b/ydb/library/actors/core/executor_pool_io.cpp index 22746df755cc..1a39cf3d9662 100644 --- a/ydb/library/actors/core/executor_pool_io.cpp +++ b/ydb/library/actors/core/executor_pool_io.cpp @@ -36,7 +36,7 @@ namespace NActors { ThreadQueue.Push(workerId + 1, revolvingCounter); NHPTimer::STime hpnow = GetCycleCountFast(); - NHPTimer::STime hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); + NHPTimer::STime hpprev = TlsThreadContext->UpdateStartOfProcessingEventTS(hpnow); TlsThreadContext->ElapsingActorActivity.store(Max(), std::memory_order_release); wctx.AddElapsedCycles(ActorSystemIndex, hpnow - hpprev); @@ -44,7 +44,7 @@ namespace NActors { return 0; hpnow = GetCycleCountFast(); - hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); + hpprev = TlsThreadContext->UpdateStartOfProcessingEventTS(hpnow); TlsThreadContext->ElapsingActorActivity.store(ActorSystemIndex, std::memory_order_release); wctx.AddParkedCycles(hpnow - hpprev); } diff --git a/ydb/library/actors/core/executor_thread.cpp b/ydb/library/actors/core/executor_thread.cpp index 805ea4e338c2..c25cc24fdd30 100644 --- a/ydb/library/actors/core/executor_thread.cpp +++ b/ydb/library/actors/core/executor_thread.cpp @@ -200,9 +200,10 @@ namespace NActors { bool preempted = false; bool wasWorking = false; NHPTimer::STime hpnow = Ctx.HPStart; - NHPTimer::STime hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); + NHPTimer::STime hpprev = TlsThreadContext->UpdateStartOfProcessingEventTS(hpnow); Ctx.AddElapsedCycles(ActorSystemIndex, hpnow - hpprev); NHPTimer::STime eventStart = Ctx.HPStart; + TlsThreadContext->ActivationStartTS.store(Ctx.HPStart, std::memory_order_release); for (; Ctx.ExecutedEvents < Ctx.EventsPerMailbox; ++Ctx.ExecutedEvents) { if (TAutoPtr evExt = mailbox->Pop()) { @@ -250,7 +251,7 @@ namespace NActors { actor->Receive(ev); hpnow = GetCycleCountFast(); - hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); + hpprev = TlsThreadContext->UpdateStartOfProcessingEventTS(hpnow); mailbox->ProcessEvents(mailbox); actor->OnDequeueEvent(); @@ -287,7 +288,7 @@ namespace NActors { Ctx.IncrementNonDeliveredEvents(); } hpnow = GetCycleCountFast(); - hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); + hpprev = TlsThreadContext->UpdateStartOfProcessingEventTS(hpnow); Ctx.AddElapsedCycles(ActorSystemIndex, hpnow - hpprev); } eventStart = hpnow; @@ -371,6 +372,7 @@ namespace NActors { break; // empty queue, leave } } + TlsThreadContext->ActivationStartTS.store(GetCycleCountFast(), std::memory_order_release); TlsThreadContext->ElapsingActorActivity.store(ActorSystemIndex, std::memory_order_release); NProfiling::TMemoryTagScope::Reset(0); @@ -510,7 +512,9 @@ namespace NActors { TlsThreadCtx.WorkerCtx = &Ctx; TlsThreadCtx.ActorSystemIndex = ActorSystemIndex; TlsThreadCtx.ElapsingActorActivity = ActorSystemIndex; - TlsThreadCtx.StartOfElapsingTime = GetCycleCountFast(); + NHPTimer::STime now = GetCycleCountFast(); + TlsThreadCtx.StartOfProcessingEventTS = now; + TlsThreadCtx.ActivationStartTS = now; TlsThreadContext = &TlsThreadCtx; if (ThreadName) { ::SetCurrentThreadName(ThreadName); @@ -547,7 +551,9 @@ namespace NActors { TlsThreadCtx.WorkerCtx = &Ctx; TlsThreadCtx.ActorSystemIndex = ActorSystemIndex; TlsThreadCtx.ElapsingActorActivity = ActorSystemIndex; - TlsThreadCtx.StartOfElapsingTime = GetCycleCountFast(); + NHPTimer::STime now = GetCycleCountFast(); + TlsThreadCtx.StartOfProcessingEventTS = now; + TlsThreadCtx.ActivationStartTS = now; TlsThreadContext = &TlsThreadCtx; if (ThreadName) { ::SetCurrentThreadName(ThreadName); @@ -777,27 +783,31 @@ namespace NActors { } } - void TGenericExecutorThread::GetCurrentStats(TExecutorThreadStats& statsCopy) const { + void TGenericExecutorThread::UpdateThreadStats() { NHPTimer::STime hpnow = GetCycleCountFast(); ui64 activityType = TlsThreadCtx.ElapsingActorActivity.load(std::memory_order_acquire); - NHPTimer::STime hpprev = TlsThreadCtx.UpdateStartOfElapsingTime(hpnow); + NHPTimer::STime hpprev = TlsThreadCtx.UpdateStartOfProcessingEventTS(hpnow); if (activityType == Max()) { Ctx.AddParkedCycles(hpnow - hpprev); } else { Ctx.AddElapsedCycles(activityType, hpnow - hpprev); } + if (activityType != Max()) { + NHPTimer::STime activationStart = TlsThreadCtx.ActivationStartTS.load(std::memory_order_acquire); + NHPTimer::STime passedTime = Max(hpnow - activationStart, 0); + Ctx.SetCurrentActivationTime(activityType, Ts2Us(passedTime)); + } else { + Ctx.SetCurrentActivationTime(0, 0); + } + } + + void TGenericExecutorThread::GetCurrentStats(TExecutorThreadStats& statsCopy) { + UpdateThreadStats(); Ctx.GetCurrentStats(statsCopy); } - void TGenericExecutorThread::GetSharedStats(i16 poolId, TExecutorThreadStats &statsCopy) const { - NHPTimer::STime hpnow = GetCycleCountFast(); - ui64 activityType = TlsThreadCtx.ElapsingActorActivity.load(std::memory_order_acquire); - NHPTimer::STime hpprev = TlsThreadCtx.UpdateStartOfElapsingTime(hpnow); - if (activityType == Max()) { - Ctx.AddParkedCycles(hpnow - hpprev); - } else { - Ctx.AddElapsedCycles(activityType, hpnow - hpprev); - } + void TGenericExecutorThread::GetSharedStats(i16 poolId, TExecutorThreadStats &statsCopy) { + UpdateThreadStats(); statsCopy = TExecutorThreadStats(); statsCopy.Aggregate(SharedStats[poolId]); } diff --git a/ydb/library/actors/core/executor_thread.h b/ydb/library/actors/core/executor_thread.h index d8ef032f4d3f..fdcf87c59f55 100644 --- a/ydb/library/actors/core/executor_thread.h +++ b/ydb/library/actors/core/executor_thread.h @@ -67,8 +67,8 @@ namespace NActors { template bool Send(TAutoPtr ev); - void GetCurrentStats(TExecutorThreadStats& statsCopy) const; - void GetSharedStats(i16 poolId, TExecutorThreadStats &stats) const; + void GetCurrentStats(TExecutorThreadStats& statsCopy); + void GetSharedStats(i16 poolId, TExecutorThreadStats &stats); TThreadId GetThreadId() const; // blocks, must be called after Start() TWorkerId GetWorkerId() const; @@ -79,6 +79,8 @@ namespace NActors { template TProcessingResult Execute(TMailbox* mailbox, ui32 hint, bool isTailExecution); + void UpdateThreadStats(); + public: TActorSystem* const ActorSystem; std::atomic StopFlag = false; diff --git a/ydb/library/actors/core/executor_thread_ctx.h b/ydb/library/actors/core/executor_thread_ctx.h index c8c7110ef977..5e7448bedcb9 100644 --- a/ydb/library/actors/core/executor_thread_ctx.h +++ b/ydb/library/actors/core/executor_thread_ctx.h @@ -97,17 +97,18 @@ namespace NActors { } NHPTimer::STime hpnow = GetCycleCountFast(); - NHPTimer::STime hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); + NHPTimer::STime hpprev = TlsThreadContext->UpdateStartOfProcessingEventTS(hpnow); TlsThreadContext->ElapsingActorActivity.store(Max(), std::memory_order_release); TlsThreadContext->WorkerCtx->AddElapsedCycles(TlsThreadContext->ActorSystemIndex, hpnow - hpprev); do { if (WaitingPad.Park()) // interrupted return true; hpnow = GetCycleCountFast(); - hpprev = TlsThreadContext->UpdateStartOfElapsingTime(hpnow); + hpprev = TlsThreadContext->UpdateStartOfProcessingEventTS(hpnow); TlsThreadContext->WorkerCtx->AddParkedCycles(hpnow - hpprev); state = GetState(); } while (static_cast(state) == EThreadState::Sleep && !stopFlag->load(std::memory_order_relaxed)); + TlsThreadContext->ActivationStartTS.store(hpnow, std::memory_order_release); TlsThreadContext->ElapsingActorActivity.store(TlsThreadContext->ActorSystemIndex, std::memory_order_release); static_cast(this)->AfterWakeUp(state); return false; diff --git a/ydb/library/actors/core/mon_stats.h b/ydb/library/actors/core/mon_stats.h index f64f19155cd0..c79cf5e6e949 100644 --- a/ydb/library/actors/core/mon_stats.h +++ b/ydb/library/actors/core/mon_stats.h @@ -82,6 +82,11 @@ namespace NActors { bool IsHoggish = false; }; + struct TActivationTime { + i64 TimeUs = 0; + ui32 LastActivity = 0; + }; + struct TExecutorThreadStats { ui64 SentEvents = 0; ui64 ReceivedEvents = 0; @@ -91,6 +96,9 @@ namespace NActors { ui64 CpuUs = 0; // microseconds thread was executing on CPU (accounts for preemtion) ui64 SafeElapsedTicks = 0; ui64 WorstActivationTimeUs = 0; + + TActivationTime CurrentActivationTime; + NHPTimer::STime ElapsedTicks = 0; NHPTimer::STime ParkedTicks = 0; NHPTimer::STime BlockedTicks = 0; @@ -99,10 +107,12 @@ namespace NActors { TLogHistogram EventProcessingCountHistogram; TLogHistogram EventProcessingTimeHistogram; TVector ElapsedTicksByActivity; + TVector LongActivationDetectionsByActivity; TVector ReceivedEventsByActivity; TVector ActorsAliveByActivity; // the sum should be positive, but per-thread might be negative TVector ScheduledEventsByActivity; TVector StuckActorsByActivity; + TVector AggregatedCurrentActivationTime; TVector> UsageByActivity; ui64 PoolActorRegistrations = 0; ui64 PoolDestroyedActors = 0; @@ -162,6 +172,12 @@ namespace NActors { AggregateOne(ActorsAliveByActivity, other.ActorsAliveByActivity); AggregateOne(ScheduledEventsByActivity, other.ScheduledEventsByActivity); AggregateOne(StuckActorsByActivity, other.StuckActorsByActivity); + if (other.CurrentActivationTime.TimeUs) { + AggregatedCurrentActivationTime.push_back(other.CurrentActivationTime); + } + if (other.AggregatedCurrentActivationTime.size()) { + AggregatedCurrentActivationTime.insert(AggregatedCurrentActivationTime.end(), other.AggregatedCurrentActivationTime.begin(), other.AggregatedCurrentActivationTime.end()); + } if (UsageByActivity.size() < other.UsageByActivity.size()) { UsageByActivity.resize(other.UsageByActivity.size()); diff --git a/ydb/library/actors/core/thread_context.h b/ydb/library/actors/core/thread_context.h index 34d8e6fdc3dd..dc0415660fbf 100644 --- a/ydb/library/actors/core/thread_context.h +++ b/ydb/library/actors/core/thread_context.h @@ -30,18 +30,25 @@ namespace NActors { bool IsCurrentRecipientAService = false; TMPMCRingQueue<20>::EPopMode ActivationPopMode = TMPMCRingQueue<20>::EPopMode::ReallySlow; - std::atomic StartOfElapsingTime = 0; - std::atomic ElapsingActorActivity = 0; + std::atomic StartOfProcessingEventTS = GetCycleCountFast(); + std::atomic ActivationStartTS = 0; + std::atomic ElapsingActorActivity = Max(); TWorkerContext *WorkerCtx = nullptr; ui32 ActorSystemIndex = 0; - ui64 UpdateStartOfElapsingTime(i64 newValue) { - i64 oldValue = StartOfElapsingTime.load(std::memory_order_acquire); + TThreadContext() { + i64 now = GetCycleCountFast(); + StartOfProcessingEventTS = now; + ActivationStartTS = now; + } + + ui64 UpdateStartOfProcessingEventTS(i64 newValue) { + i64 oldValue = StartOfProcessingEventTS.load(std::memory_order_acquire); for (;;) { if (newValue - oldValue <= 0) { break; } - if (StartOfElapsingTime.compare_exchange_strong(oldValue, newValue, std::memory_order_acq_rel)) { + if (StartOfProcessingEventTS.compare_exchange_strong(oldValue, newValue, std::memory_order_acq_rel)) { break; } } diff --git a/ydb/library/actors/core/worker_context.h b/ydb/library/actors/core/worker_context.h index 0fc6ea831d78..5642c24969d5 100644 --- a/ydb/library/actors/core/worker_context.h +++ b/ydb/library/actors/core/worker_context.h @@ -50,6 +50,11 @@ namespace NActors { statsCopy.Aggregate(*Stats); } + void SetCurrentActivationTime(ui32 activityType, i64 elapsed) { + RelaxedStore(&Stats->CurrentActivationTime.LastActivity, activityType); + RelaxedStore(&Stats->CurrentActivationTime.TimeUs, (elapsed > 0 ? elapsed : 0)); + } + void AddElapsedCycles(ui32 activityType, i64 elapsed) { if (Y_LIKELY(elapsed > 0)) { Y_DEBUG_ABORT_UNLESS(activityType < Stats->MaxActivityType()); @@ -153,6 +158,7 @@ namespace NActors { } #else void GetCurrentStats(TExecutorThreadStats&) const {} + void SetCurrentActivationTime(ui32, i64) {} inline void AddElapsedCycles(ui32, i64) {} inline void AddParkedCycles(i64) {} inline void AddBlockedCycles(i64) {} diff --git a/ydb/library/actors/helpers/pool_stats_collector.h b/ydb/library/actors/helpers/pool_stats_collector.h index 849ff1e2e9ee..036aed7f8de3 100644 --- a/ydb/library/actors/helpers/pool_stats_collector.h +++ b/ydb/library/actors/helpers/pool_stats_collector.h @@ -52,6 +52,7 @@ class TStatsCollectingActor : public TActorBootstrapped { void Init(NMonitoring::TDynamicCounterPtr group) { Group = group; + CurrentActivationTimeByActivity.resize(GetActivityTypeCount()); ElapsedMicrosecByActivityBuckets.resize(GetActivityTypeCount()); ReceivedEventsByActivityBuckets.resize(GetActivityTypeCount()); ActorsAliveByActivityBuckets.resize(GetActivityTypeCount()); @@ -77,6 +78,7 @@ class TStatsCollectingActor : public TActorBootstrapped { } } + *CurrentActivationTimeByActivity[i] = 0; *ElapsedMicrosecByActivityBuckets[i] = ::NHPTimer::GetSeconds(ticks)*1000000; *ReceivedEventsByActivityBuckets[i] = events; *ActorsAliveByActivityBuckets[i] = actors; @@ -87,6 +89,29 @@ class TStatsCollectingActor : public TActorBootstrapped { *UsageByActivityBuckets[i][j] = stats.UsageByActivity[i][j]; } } + + auto setActivationTime = [&](TActivationTime activation) { + if (!ActorsAliveByActivityBuckets[activation.LastActivity]) { + InitCountersForActivity(activation.LastActivity); + } + *CurrentActivationTimeByActivity[activation.LastActivity] = activation.TimeUs; + }; + if (stats.CurrentActivationTime.TimeUs) { + setActivationTime(stats.CurrentActivationTime); + } + std::vector activationTimes = stats.AggregatedCurrentActivationTime; + Sort(activationTimes.begin(), activationTimes.end(), [](auto &left, auto &right) { + return left.LastActivity < right.LastActivity || + left.LastActivity == right.LastActivity && left.TimeUs > right.TimeUs; + }); + ui32 prevActivity = Max(); + for (auto &activationTime : activationTimes) { + if (activationTime.LastActivity == prevActivity) { + continue; + } + setActivationTime(activationTime); + prevActivity = activationTime.LastActivity; + } } private: @@ -95,6 +120,8 @@ class TStatsCollectingActor : public TActorBootstrapped { auto bucketName = TString(GetActivityTypeName(activityType)); + CurrentActivationTimeByActivity[activityType] = + Group->GetSubgroup("sensor", "CurrentActivationTimeUsByActivity")->GetNamedCounter("activity", bucketName, false); ElapsedMicrosecByActivityBuckets[activityType] = Group->GetSubgroup("sensor", "ElapsedMicrosecByActivity")->GetNamedCounter("activity", bucketName, true); ReceivedEventsByActivityBuckets[activityType] = @@ -114,6 +141,7 @@ class TStatsCollectingActor : public TActorBootstrapped { private: NMonitoring::TDynamicCounterPtr Group; + TVector CurrentActivationTimeByActivity; TVector ElapsedMicrosecByActivityBuckets; TVector ReceivedEventsByActivityBuckets; TVector ActorsAliveByActivityBuckets; From 216adebea31444980a1625ebbe5751aa3036d0b6 Mon Sep 17 00:00:00 2001 From: Nikolay Shestakov Date: Thu, 30 May 2024 17:36:15 +0500 Subject: [PATCH 059/110] Fix of the error of incorrect metering exceeding the reserved topic size (#5004) --- ydb/core/persqueue/partition.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ydb/core/persqueue/partition.cpp b/ydb/core/persqueue/partition.cpp index c841fbf6bac6..400c0315af09 100644 --- a/ydb/core/persqueue/partition.cpp +++ b/ydb/core/persqueue/partition.cpp @@ -235,9 +235,10 @@ ui64 TPartition::MeteringDataSize(const TActorContext& /*ctx*/) const { // We assume that DataKyesBody contains an up-to-date set of blobs, their relevance is // maintained by the background process. However, the last block may contain several irrelevant // messages. Because of them, we throw out the size of the entire blob. - ui64 size = Size() - DataKeysBody[0].Size; - Y_DEBUG_ABORT_UNLESS(size >= 0, "Metering data size must be positive"); - return std::max(size, 0); + auto size = Size(); + auto lastBlobSize = DataKeysBody[0].Size; + Y_DEBUG_ABORT_UNLESS(size >= lastBlobSize, "Metering data size must be positive"); + return size >= lastBlobSize ? size - lastBlobSize : 0; } ui64 TPartition::ReserveSize() const { @@ -257,7 +258,9 @@ ui64 TPartition::GetUsedStorage(const TActorContext& ctx) { const auto duration = now - LastUsedStorageMeterTimestamp; LastUsedStorageMeterTimestamp = now; - ui64 size = std::max(MeteringDataSize(ctx) - ReserveSize(), 0); + auto dataSize = MeteringDataSize(ctx); + auto reservedSize = ReserveSize(); + ui64 size = dataSize > reservedSize ? dataSize - reservedSize : 0; return size * duration.MilliSeconds() / 1000 / 1_MB; // mb*seconds } From 9a2ef834ec468b1fa2bb1e214da04b7c2adbc6c1 Mon Sep 17 00:00:00 2001 From: Alexander Rutkovsky Date: Fri, 31 May 2024 22:46:38 +0300 Subject: [PATCH 060/110] Merge fixes from main related to long puts (#5098) --- ydb/core/blobstorage/dsproxy/dsproxy_put.cpp | 5 +++++ ydb/core/mind/bscontroller/cmds_storage_pool.cpp | 4 ++-- ydb/core/mind/bscontroller/impl.h | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ydb/core/blobstorage/dsproxy/dsproxy_put.cpp b/ydb/core/blobstorage/dsproxy/dsproxy_put.cpp index 4f815af5a8d9..b776e8106e74 100644 --- a/ydb/core/blobstorage/dsproxy/dsproxy_put.cpp +++ b/ydb/core/blobstorage/dsproxy/dsproxy_put.cpp @@ -206,6 +206,11 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActorNodeMon->IncarnationChanges; } Action(); diff --git a/ydb/core/mind/bscontroller/cmds_storage_pool.cpp b/ydb/core/mind/bscontroller/cmds_storage_pool.cpp index cb77e008429e..ebbda8085fa3 100644 --- a/ydb/core/mind/bscontroller/cmds_storage_pool.cpp +++ b/ydb/core/mind/bscontroller/cmds_storage_pool.cpp @@ -704,7 +704,7 @@ namespace NKikimr::NBsController { TGroupInfo *group = Groups.FindForUpdate(vslot->GroupId); vslot->Mood = TMood::Wipe; - vslot->Status = NKikimrBlobStorage::EVDiskStatus::INIT_PENDING; + vslot->Status = NKikimrBlobStorage::EVDiskStatus::ERROR; vslot->IsReady = false; GroupFailureModelChanged.insert(group->ID); group->CalculateGroupStatus(); @@ -750,7 +750,7 @@ namespace NKikimr::NBsController { TGroupInfo *group = Groups.FindForUpdate(vslot->GroupId); vslot->Mood = targetMood; - vslot->Status = NKikimrBlobStorage::EVDiskStatus::INIT_PENDING; + vslot->Status = NKikimrBlobStorage::EVDiskStatus::ERROR; vslot->IsReady = false; GroupFailureModelChanged.insert(group->ID); group->CalculateGroupStatus(); diff --git a/ydb/core/mind/bscontroller/impl.h b/ydb/core/mind/bscontroller/impl.h index 36dcf62c9c22..0cdc85f47f82 100644 --- a/ydb/core/mind/bscontroller/impl.h +++ b/ydb/core/mind/bscontroller/impl.h @@ -124,7 +124,7 @@ class TBlobStorageController : public TActor, public TTa TVSlotReadyTimestampQ::iterator VSlotReadyTimestampIter; public: - NKikimrBlobStorage::EVDiskStatus Status = NKikimrBlobStorage::EVDiskStatus::INIT_PENDING; + NKikimrBlobStorage::EVDiskStatus Status = NKikimrBlobStorage::EVDiskStatus::ERROR; bool IsReady = false; bool OnlyPhantomsRemain = false; From 4dd5b42c80daca35db4e149f0bd44ab070c08073 Mon Sep 17 00:00:00 2001 From: Andrei Rykov Date: Sun, 2 Jun 2024 10:53:54 +0200 Subject: [PATCH 061/110] dataquery doesn't change values (#5013) - merge stable-24-1 (#5081) --- ydb/core/viewer/json_query.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ydb/core/viewer/json_query.h b/ydb/core/viewer/json_query.h index d42bc1711a10..b8ff4153a267 100644 --- a/ydb/core/viewer/json_query.h +++ b/ydb/core/viewer/json_query.h @@ -177,6 +177,7 @@ class TJsonQuery : public TViewerPipeClient { request.SetAction(NKikimrKqp::QUERY_ACTION_EXECUTE); request.SetType(NKikimrKqp::QUERY_TYPE_SQL_GENERIC_QUERY); request.mutable_txcontrol()->mutable_begin_tx()->mutable_serializable_read_write(); + request.mutable_txcontrol()->set_commit_tx(true); request.SetKeepSession(false); } else if (Action == "explain-query") { request.SetAction(NKikimrKqp::QUERY_ACTION_EXPLAIN); @@ -190,6 +191,7 @@ class TJsonQuery : public TViewerPipeClient { request.SetAction(NKikimrKqp::QUERY_ACTION_EXECUTE); request.SetType(NKikimrKqp::QUERY_TYPE_SQL_DML); request.mutable_txcontrol()->mutable_begin_tx()->mutable_serializable_read_write(); + request.mutable_txcontrol()->set_commit_tx(true); request.SetKeepSession(false); } else if (Action == "explain" || Action == "explain-ast" || Action == "explain-data") { request.SetAction(NKikimrKqp::QUERY_ACTION_EXPLAIN); From 62b7bff9427506ba6672b0b5ffd2d7b5b320b822 Mon Sep 17 00:00:00 2001 From: Aleksei Borzenkov Date: Mon, 3 Jun 2024 12:17:21 +0300 Subject: [PATCH 062/110] 24-1: Cleanup persistent locks on table rename (#4979) --- ydb/core/tx/datashard/datashard.cpp | 5 +- ydb/core/tx/datashard/datashard_impl.h | 6 +- ydb/core/tx/datashard/datashard_locks.cpp | 13 +++- ydb/core/tx/datashard/datashard_locks.h | 6 +- .../tx/datashard/datashard_ut_snapshot.cpp | 77 +++++++++++++++++++ 5 files changed, 99 insertions(+), 8 deletions(-) diff --git a/ydb/core/tx/datashard/datashard.cpp b/ydb/core/tx/datashard/datashard.cpp index 45f6147add02..d78e5f7126ef 100644 --- a/ydb/core/tx/datashard/datashard.cpp +++ b/ydb/core/tx/datashard/datashard.cpp @@ -1,5 +1,6 @@ #include "datashard_impl.h" #include "datashard_txs.h" +#include "datashard_locks_db.h" #include "probes.h" #include @@ -1620,7 +1621,9 @@ TUserTable::TPtr TDataShard::MoveUserTable(TOperation::TPtr op, const NKikimrTxD newTableInfo->StatsUpdateInProgress = false; newTableInfo->StatsNeedUpdate = true; - RemoveUserTable(prevId); + TDataShardLocksDb locksDb(*this, txc); + + RemoveUserTable(prevId, &locksDb); AddUserTable(newId, newTableInfo); for (auto& [_, record] : ChangesQueue) { diff --git a/ydb/core/tx/datashard/datashard_impl.h b/ydb/core/tx/datashard/datashard_impl.h index ba8a9484bdbe..d60e6f2ff76a 100644 --- a/ydb/core/tx/datashard/datashard_impl.h +++ b/ydb/core/tx/datashard/datashard_impl.h @@ -1607,10 +1607,10 @@ class TDataShard return nullptr; } - void RemoveUserTable(const TPathId& tableId) { - TableInfos.erase(tableId.LocalPathId); - SysLocks.RemoveSchema(tableId); + void RemoveUserTable(const TPathId& tableId, ILocksDb* locksDb) { + SysLocks.RemoveSchema(tableId, locksDb); Pipeline.GetDepTracker().RemoveSchema(tableId); + TableInfos.erase(tableId.LocalPathId); } void AddUserTable(const TPathId& tableId, TUserTable::TPtr tableInfo) { diff --git a/ydb/core/tx/datashard/datashard_locks.cpp b/ydb/core/tx/datashard/datashard_locks.cpp index 2708f5a8bbdd..4291d8c53e16 100644 --- a/ydb/core/tx/datashard/datashard_locks.cpp +++ b/ydb/core/tx/datashard/datashard_locks.cpp @@ -624,12 +624,23 @@ void TLockLocker::UpdateSchema(const TPathId& tableId, const TUserTable& tableIn table->UpdateKeyColumnsTypes(tableInfo.KeyColumnTypes); } -void TLockLocker::RemoveSchema(const TPathId& tableId) { +void TLockLocker::RemoveSchema(const TPathId& tableId, ILocksDb* db) { + // Make sure all persistent locks are removed from the database + for (auto& pr : Locks) { + if (pr.second->IsPersistent()) { + pr.second->PersistRemoveLock(db); + } + pr.second->OnRemoved(); + } + Tables.erase(tableId); Y_ABORT_UNLESS(Tables.empty()); Locks.clear(); ShardLocks.clear(); + ExpireQueue.Clear(); BrokenLocks.Clear(); + BrokenPersistentLocks.Clear(); + BrokenLocksCount_ = 0; CleanupPending.clear(); CleanupCandidates.clear(); PendingSubscribeLocks.clear(); diff --git a/ydb/core/tx/datashard/datashard_locks.h b/ydb/core/tx/datashard/datashard_locks.h index c0b0aeebd450..f12eab077eb2 100644 --- a/ydb/core/tx/datashard/datashard_locks.h +++ b/ydb/core/tx/datashard/datashard_locks.h @@ -601,7 +601,7 @@ class TLockLocker { } void UpdateSchema(const TPathId& tableId, const TUserTable& tableInfo); - void RemoveSchema(const TPathId& tableId); + void RemoveSchema(const TPathId& tableId, ILocksDb* db); bool ForceShardLock(const TPathId& tableId) const; bool ForceShardLock(const TIntrusiveList& readTables) const; @@ -840,8 +840,8 @@ class TSysLocks { Locker.UpdateSchema(tableId, tableInfo); } - void RemoveSchema(const TPathId& tableId) { - Locker.RemoveSchema(tableId); + void RemoveSchema(const TPathId& tableId, ILocksDb* db) { + Locker.RemoveSchema(tableId, db); } TVector ApplyLocks(); diff --git a/ydb/core/tx/datashard/datashard_ut_snapshot.cpp b/ydb/core/tx/datashard/datashard_ut_snapshot.cpp index ea3c67b171e7..7e0ae912a3c7 100644 --- a/ydb/core/tx/datashard/datashard_ut_snapshot.cpp +++ b/ydb/core/tx/datashard/datashard_ut_snapshot.cpp @@ -4896,6 +4896,83 @@ Y_UNIT_TEST_SUITE(DataShardSnapshots) { "{ items { int32_value: 2 } items { int32_value: 20 } }"); } + Y_UNIT_TEST(UncommittedChangesRenameTable) { + TPortManager pm; + TServerSettings serverSettings(pm.GetPort(2134)); + serverSettings.SetDomainName("Root") + .SetUseRealThreads(false) + .SetDomainPlanResolution(100) + .SetEnableDataShardVolatileTransactions(true); + + Tests::TServer::TPtr server = new TServer(serverSettings); + auto &runtime = *server->GetRuntime(); + auto sender = runtime.AllocateEdgeActor(); + + runtime.SetLogPriority(NKikimrServices::TX_DATASHARD, NLog::PRI_TRACE); + + InitRoot(server, sender); + + TDisableDataShardLogBatching disableDataShardLogBatching; + + UNIT_ASSERT_VALUES_EQUAL( + KqpSchemeExec(runtime, R"( + CREATE TABLE `/Root/table1` (key int, value int, PRIMARY KEY (key)); + )"), + "SUCCESS"); + + ExecSQL(server, sender, "UPSERT INTO `/Root/table1` (key, value) VALUES (2, 22);"); + + TString sessionId = CreateSessionRPC(runtime); + TString txId; + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleBegin(runtime, sessionId, txId, R"( + UPSERT INTO `/Root/table1` (key, value) VALUES (1, 11), (3, 33); + SELECT key, value FROM `/Root/table1` ORDER BY key; + )"), + "{ items { int32_value: 1 } items { int32_value: 11 } }, " + "{ items { int32_value: 2 } items { int32_value: 22 } }, " + "{ items { int32_value: 3 } items { int32_value: 33 } }"); + + auto shards = GetTableShards(server, sender, "/Root/table1"); + auto tableId1 = ResolveTableId(server, sender, "/Root/table1"); + + // Check shard has open transactions + { + runtime.SendToPipe(shards.at(0), sender, new TEvDataShard::TEvGetOpenTxs(tableId1.PathId)); + auto ev = runtime.GrabEdgeEventRethrow(sender); + UNIT_ASSERT_C(!ev->Get()->OpenTxs.empty(), "at shard " << shards.at(0)); + } + + WaitTxNotification(server, sender, AsyncMoveTable(server, "/Root/table1", "/Root/table1moved")); + auto tableId2 = ResolveTableId(server, sender, "/Root/table1moved"); + + runtime.SimulateSleep(TDuration::Seconds(1)); + + // Check shard doesn't have open transactions + { + runtime.SendToPipe(shards.at(0), sender, new TEvDataShard::TEvGetOpenTxs(tableId2.PathId)); + auto ev = runtime.GrabEdgeEventRethrow(sender); + UNIT_ASSERT_C(ev->Get()->OpenTxs.empty(), "at shard " << shards.at(0)); + } + + RebootTablet(runtime, shards.at(0), sender); + + // The original table was removed + // We must not be able to commit the transaction + UNIT_ASSERT_VALUES_EQUAL( + KqpSimpleCommit(runtime, sessionId, txId, "SELECT 1"), + "ERROR: ABORTED"); + + runtime.SimulateSleep(TDuration::Seconds(1)); + + // Check shard doesn't have open transactions + { + runtime.SendToPipe(shards.at(0), sender, new TEvDataShard::TEvGetOpenTxs(tableId2.PathId)); + auto ev = runtime.GrabEdgeEventRethrow(sender); + UNIT_ASSERT_C(ev->Get()->OpenTxs.empty(), "at shard " << shards.at(0)); + } + } + } } // namespace NKikimr From c16555564cfaccd3a9fc0295adc04477b7beae97 Mon Sep 17 00:00:00 2001 From: kungurtsev Date: Mon, 3 Jun 2024 11:24:08 +0200 Subject: [PATCH 063/110] 24-1 Prevent from using B-Tree index with incorrect configuration (#4925) --- ydb/core/tablet_flat/flat_executor.cpp | 2 +- ydb/core/tablet_flat/flat_executor_ut.cpp | 93 +---------------------- ydb/core/tablet_flat/flat_part_loader.cpp | 2 +- 3 files changed, 5 insertions(+), 92 deletions(-) diff --git a/ydb/core/tablet_flat/flat_executor.cpp b/ydb/core/tablet_flat/flat_executor.cpp index 58ca70001c3f..d46455f49554 100644 --- a/ydb/core/tablet_flat/flat_executor.cpp +++ b/ydb/core/tablet_flat/flat_executor.cpp @@ -4321,7 +4321,7 @@ ui64 TExecutor::BeginCompaction(THolder params) comp->Epoch = snapshot->Subset->Epoch(); /* narrows requested to actual */ comp->Layout.Final = comp->Params->IsFinal; - comp->Layout.WriteBTreeIndex = AppData()->FeatureFlags.GetEnableLocalDBBtreeIndex(); + comp->Layout.WriteBTreeIndex = false; // will be in 24-2: AppData()->FeatureFlags.GetEnableLocalDBBtreeIndex(); comp->Writer.StickyFlatIndex = !comp->Layout.WriteBTreeIndex; comp->Layout.MaxRows = snapshot->Subset->MaxRows(); comp->Layout.ByKeyFilter = tableInfo->ByKeyFilter; diff --git a/ydb/core/tablet_flat/flat_executor_ut.cpp b/ydb/core/tablet_flat/flat_executor_ut.cpp index 18d8399728bf..52f2bb32a940 100644 --- a/ydb/core/tablet_flat/flat_executor_ut.cpp +++ b/ydb/core/tablet_flat/flat_executor_ut.cpp @@ -5491,7 +5491,7 @@ Y_UNIT_TEST_SUITE(TFlatTableExecutorBTreeIndex) { UNIT_ASSERT_VALUES_EQUAL(failedAttempts, 288); } - Y_UNIT_TEST(UseBtreeIndex_True) { + Y_UNIT_TEST(UseBtreeIndex_True) { // forcibly disabled in 24-1, uses FlatIndex TMyEnvBase env; TRowsModel rows; @@ -5512,8 +5512,8 @@ Y_UNIT_TEST_SUITE(TFlatTableExecutorBTreeIndex) { env.SendSync(new NFake::TEvCompact(TRowsModel::TableId)); env.WaitFor(); - // all pages are always kept in shared cache (except flat index) - UNIT_ASSERT_VALUES_EQUAL(counters->ActivePages->Val(), 334); + // all pages are always kept in shared cache + UNIT_ASSERT_VALUES_EQUAL(counters->ActivePages->Val(), 290); env.SendSync(new NFake::TEvExecute{ new TTxFullScan(readRows, failedAttempts) }); UNIT_ASSERT_VALUES_EQUAL(readRows, 1000); @@ -5526,96 +5526,9 @@ Y_UNIT_TEST_SUITE(TFlatTableExecutorBTreeIndex) { // after restart we have no pages in private cache env.SendSync(new NFake::TEvExecute{ new TTxFullScan(readRows, failedAttempts) }, true); UNIT_ASSERT_VALUES_EQUAL(readRows, 1000); - UNIT_ASSERT_VALUES_EQUAL(failedAttempts, 332); - } - - Y_UNIT_TEST(UseBtreeIndex_True_TurnOff) { - TMyEnvBase env; - TRowsModel rows; - - auto &appData = env->GetAppData(); - appData.FeatureFlags.SetEnableLocalDBBtreeIndex(true); - auto counters = MakeIntrusive(env->GetDynamicCounters()); - int readRows = 0, failedAttempts = 0; - - env.FireDummyTablet(ui32(NFake::TDummy::EFlg::Comp)); - - auto policy = MakeIntrusive(); - policy->MinBTreeIndexNodeSize = 128; - env.SendSync(rows.MakeScheme(std::move(policy))); - - env.SendSync(rows.VersionTo(TRowVersion(1, 10)).RowTo(0).MakeRows(1000, 950)); - env.SendSync(rows.VersionTo(TRowVersion(2, 20)).RowTo(0).MakeRows(1000, 950)); - - env.SendSync(new NFake::TEvCompact(TRowsModel::TableId)); - env.WaitFor(); - - // all pages are always kept in shared cache (except flat index) - UNIT_ASSERT_VALUES_EQUAL(counters->ActivePages->Val(), 334); - - env.SendSync(new NFake::TEvExecute{ new TTxFullScan(readRows, failedAttempts) }); - UNIT_ASSERT_VALUES_EQUAL(readRows, 1000); - UNIT_ASSERT_VALUES_EQUAL(failedAttempts, 0); - - // restart tablet, turn off setting - env.SendSync(new TEvents::TEvPoison, false, true); - appData.FeatureFlags.SetEnableLocalDBBtreeIndex(false); - env.FireDummyTablet(ui32(NFake::TDummy::EFlg::Comp)); - - // after restart we have no pages in private cache - // but use only flat index - env.SendSync(new NFake::TEvExecute{ new TTxFullScan(readRows, failedAttempts) }, true); - UNIT_ASSERT_VALUES_EQUAL(readRows, 1000); UNIT_ASSERT_VALUES_EQUAL(failedAttempts, 288); } - Y_UNIT_TEST(UseBtreeIndex_True_Generations) { - TMyEnvBase env; - TRowsModel rows; - - auto &appData = env->GetAppData(); - appData.FeatureFlags.SetEnableLocalDBBtreeIndex(true); - auto counters = MakeIntrusive(env->GetDynamicCounters()); - int readRows = 0, failedAttempts = 0; - - env.FireDummyTablet(ui32(NFake::TDummy::EFlg::Comp)); - - auto policy = MakeIntrusive(); - policy->MinBTreeIndexNodeSize = 128; - policy->Generations.push_back({100 * 1024, 2, 2, 200 * 1024, NLocalDb::LegacyQueueIdToTaskName(1), false}); - for (auto& gen : policy->Generations) { - gen.ExtraCompactionPercent = 0; - gen.ExtraCompactionMinSize = 0; - gen.ExtraCompactionExpPercent = 0; - gen.ExtraCompactionExpMaxSize = 0; - gen.UpliftPartSize = 0; - } - env.SendSync(rows.MakeScheme(std::move(policy))); - - env.SendSync(rows.VersionTo(TRowVersion(1, 10)).RowTo(0).MakeRows(1000, 950)); - env.SendSync(rows.VersionTo(TRowVersion(2, 20)).RowTo(0).MakeRows(1000, 950)); - - env.SendSync(new NFake::TEvCompact(TRowsModel::TableId)); - env.WaitFor(); - - // gen 0 data pages are always kept in shared cache - // b-tree index pages are always kept in shared cache - UNIT_ASSERT_VALUES_EQUAL(counters->ActivePages->Val(), 48); - - env.SendSync(new NFake::TEvExecute{ new TTxFullScan(readRows, failedAttempts) }); - UNIT_ASSERT_VALUES_EQUAL(readRows, 1000); - UNIT_ASSERT_VALUES_EQUAL(failedAttempts, 286); - - // restart tablet - env.SendSync(new TEvents::TEvPoison, false, true); - env.FireDummyTablet(ui32(NFake::TDummy::EFlg::Comp)); - - // after restart we have no pages in private cache - env.SendSync(new NFake::TEvExecute{ new TTxFullScan(readRows, failedAttempts) }, true); - UNIT_ASSERT_VALUES_EQUAL(readRows, 1000); - UNIT_ASSERT_VALUES_EQUAL(failedAttempts, 332); - } - } } // namespace NTabletFlatExecutor diff --git a/ydb/core/tablet_flat/flat_part_loader.cpp b/ydb/core/tablet_flat/flat_part_loader.cpp index 294e2be31516..127219f2ca53 100644 --- a/ydb/core/tablet_flat/flat_part_loader.cpp +++ b/ydb/core/tablet_flat/flat_part_loader.cpp @@ -78,7 +78,7 @@ void TLoader::StageParseMeta() noexcept BTreeGroupIndexes.clear(); BTreeHistoricIndexes.clear(); - if (AppData()->FeatureFlags.GetEnableLocalDBBtreeIndex()) { + if (false) { // will be in 24-2: AppData()->FeatureFlags.GetEnableLocalDBBtreeIndex() for (bool history : {false, true}) { for (const auto &meta : history ? layout.GetBTreeHistoricIndexes() : layout.GetBTreeGroupIndexes()) { NPage::TBtreeIndexMeta converted{{ From 178cf6eb616ced4c87d3e43b80c649db70d46d69 Mon Sep 17 00:00:00 2001 From: kungurtsev Date: Mon, 3 Jun 2024 11:24:34 +0200 Subject: [PATCH 064/110] 24-1 Fix DB.CalculateReadSize (#4728) (#4977) --- .../engine/minikql/minikql_engine_host.cpp | 4 +- ydb/core/tablet_flat/flat_database.cpp | 6 ++ ydb/core/tablet_flat/flat_database.h | 1 + ydb/core/tablet_flat/flat_dbase_sz_env.h | 31 ++++++-- ydb/core/tablet_flat/flat_executor_ut.cpp | 73 +++++++++++++++++++ 5 files changed, 107 insertions(+), 8 deletions(-) diff --git a/ydb/core/engine/minikql/minikql_engine_host.cpp b/ydb/core/engine/minikql/minikql_engine_host.cpp index bbddd3310ca3..0305762e618b 100644 --- a/ydb/core/engine/minikql/minikql_engine_host.cpp +++ b/ydb/core/engine/minikql/minikql_engine_host.cpp @@ -73,7 +73,7 @@ bool TEngineHost::IsValidKey(TKeyDesc& key) const { return NMiniKQL::IsValidKey(Scheme, localTableId, key); } ui64 TEngineHost::CalculateReadSize(const TVector& keys) const { - NTable::TSizeEnv env; + auto env = Db.CreateSizeEnv(); for (const TKeyDesc* ki : keys) { DoCalculateReadSize(*ki, env); @@ -120,7 +120,7 @@ ui64 TEngineHost::CalculateResultSize(const TKeyDesc& key) const { if (key.Range.Point) { return Db.EstimateRowSize(localTid); } else { - NTable::TSizeEnv env; + auto env = Db.CreateSizeEnv(); DoCalculateReadSize(key, env); ui64 size = env.GetSize(); diff --git a/ydb/core/tablet_flat/flat_database.cpp b/ydb/core/tablet_flat/flat_database.cpp index a76f5a615089..1d61ec26e2db 100644 --- a/ydb/core/tablet_flat/flat_database.cpp +++ b/ydb/core/tablet_flat/flat_database.cpp @@ -266,6 +266,12 @@ TSelectRowVersionResult TDatabase::SelectRowVersion( return Require(table)->SelectRowVersion(key, Env, readFlags, visible, observer); } +TSizeEnv TDatabase::CreateSizeEnv() +{ + return TSizeEnv(Env); +} + + void TDatabase::CalculateReadSize(TSizeEnv& env, ui32 table, TRawVals minKey, TRawVals maxKey, TTagsRef tags, ui64 flg, ui64 items, ui64 bytes, EDirection direction, TRowVersion snapshot) diff --git a/ydb/core/tablet_flat/flat_database.h b/ydb/core/tablet_flat/flat_database.h index bfc7452c8701..64980ac1a781 100644 --- a/ydb/core/tablet_flat/flat_database.h +++ b/ydb/core/tablet_flat/flat_database.h @@ -141,6 +141,7 @@ class TDatabase { EDirection direction = EDirection::Forward, TRowVersion snapshot = TRowVersion::Max()); + TSizeEnv CreateSizeEnv(); void CalculateReadSize(TSizeEnv& env, ui32 table, TRawVals minKey, TRawVals maxKey, TTagsRef tags, ui64 readFlags, ui64 itemsLimit, ui64 bytesLimit, EDirection direction = EDirection::Forward, diff --git a/ydb/core/tablet_flat/flat_dbase_sz_env.h b/ydb/core/tablet_flat/flat_dbase_sz_env.h index 9a5d36538aab..a009ef52c66d 100644 --- a/ydb/core/tablet_flat/flat_dbase_sz_env.h +++ b/ydb/core/tablet_flat/flat_dbase_sz_env.h @@ -11,6 +11,11 @@ namespace NTable { struct TSizeEnv : public IPages { using TInfo = NTabletFlatExecutor::TPrivatePageCache::TInfo; + TSizeEnv(IPages* env) + : Env(env) + { + } + TResult Locate(const TMemTable*, ui64, ui32) noexcept override { Y_ABORT("IPages::Locate(TMemTable*, ...) shouldn't be used here"); @@ -20,14 +25,29 @@ namespace NTable { { auto *partStore = CheckedCast(part); - return { true, Touch(partStore->Locate(lob, ref), ref) }; + AddPageSize(partStore->Locate(lob, ref), ref); + + return { true, nullptr }; } - const TSharedData* TryGetPage(const TPart* part, TPageId page, TGroupId groupId) override + const TSharedData* TryGetPage(const TPart* part, TPageId pageId, TGroupId groupId) override { auto *partStore = CheckedCast(part); - return Touch(partStore->PageCollections.at(groupId.Index).Get(), page); + auto info = partStore->PageCollections.at(groupId.Index).Get(); + auto type = EPage(info->PageCollection->Page(pageId).Type); + + switch (type) { + case EPage::Index: + case EPage::BTreeIndex: + // need index pages to continue counting + // do not count index + // if these pages are not in memory, data won't be counted in precharge + return Env->TryGetPage(part, pageId, groupId); + default: + AddPageSize(partStore->PageCollections.at(groupId.Index).Get(), pageId); + return nullptr; + } } ui64 GetSize() const { @@ -35,17 +55,16 @@ namespace NTable { } private: - const TSharedData* Touch(TInfo *info, TPageId page) noexcept + void AddPageSize(TInfo *info, TPageId page) noexcept { if (Touched[info].insert(page).second) { Pages++; Bytes += info->PageCollection->Page(page).Size; } - - return nullptr; } private: + IPages* Env; THashMap> Touched; ui64 Pages = 0; ui64 Bytes = 0; diff --git a/ydb/core/tablet_flat/flat_executor_ut.cpp b/ydb/core/tablet_flat/flat_executor_ut.cpp index 52f2bb32a940..6ea9fd055dda 100644 --- a/ydb/core/tablet_flat/flat_executor_ut.cpp +++ b/ydb/core/tablet_flat/flat_executor_ut.cpp @@ -1,3 +1,4 @@ +#include "flat_dbase_sz_env.h" #include "flat_executor_ut_common.h" namespace NKikimr { @@ -4979,6 +4980,41 @@ Y_UNIT_TEST_SUITE(TFlatTableSnapshotWithCommits) { Y_UNIT_TEST_SUITE(TFlatTableExecutorIndexLoading) { + struct TTxCalculateReadSize : public ITransaction { + ui32 Attempt = 0; + TVector& ReadSizes; + ui64 MinKey, MaxKey; + + TTxCalculateReadSize(TVector& readSizes, ui64 minKey, ui64 maxKey) + : ReadSizes(readSizes) + , MinKey(minKey) + , MaxKey(maxKey) + { + ReadSizes.clear(); + } + + + bool Execute(TTransactionContext &txc, const TActorContext &) override + { + UNIT_ASSERT_LE(++Attempt, 10); + + const auto minKey = NScheme::TInt64::TInstance(MinKey); + const auto maxKey = NScheme::TInt64::TInstance(MaxKey); + const TVector tags{ { TRowsModel::ColumnKeyId, TRowsModel::ColumnValueId } }; + + auto sizeEnv = txc.DB.CreateSizeEnv(); + txc.DB.CalculateReadSize(sizeEnv, TRowsModel::TableId, { minKey }, { maxKey }, tags, 0, 0, 0); + ReadSizes.push_back(sizeEnv.GetSize()); + + return txc.DB.Precharge(TRowsModel::TableId, { minKey }, { maxKey }, tags, 0, 0, 0); + } + + void Complete(const TActorContext &ctx) override + { + ctx.Send(ctx.SelfID, new NFake::TEvReturn); + } + }; + struct TTxPrechargeAndSeek : public ITransaction { ui32 Attempt = 0; bool Pinned = false; @@ -5020,6 +5056,43 @@ Y_UNIT_TEST_SUITE(TFlatTableExecutorIndexLoading) { } }; + void ZeroSharedCache(TMyEnvBase &env) { + env.Env.GetMemObserver()->NotifyStat({1, 1, 1}); + TDispatchOptions options; + options.FinalEvents.push_back(TDispatchOptions::TFinalEventCondition(NSharedCache::EvMem, 1)); + env->DispatchEvents(options); + } + + Y_UNIT_TEST(CalculateReadSize_FlatIndex) { + TMyEnvBase env; + TRowsModel rows; + const ui32 rowsCount = 1024; + + env.FireTablet(env.Edge, env.Tablet, [&env](const TActorId &tablet, TTabletStorageInfo *info) { + return new TTestFlatTablet(env.Edge, tablet, info); + }); + env.WaitForWakeUp(); + ZeroSharedCache(env); + + env.SendSync(rows.MakeScheme(new TCompactionPolicy(), false)); + + env.SendSync(rows.MakeRows(rowsCount, 10*1024)); + + env.SendSync(new NFake::TEvCompact(TRowsModel::TableId)); + env.WaitFor(); + + TVector sizes; + + env.SendSync(new NFake::TEvExecute{ new TTxCalculateReadSize(sizes, 0, 1) }); + UNIT_ASSERT_VALUES_EQUAL(sizes, (TVector{20566, 20566})); + + env.SendSync(new NFake::TEvExecute{ new TTxCalculateReadSize(sizes, 100, 200) }); + UNIT_ASSERT_VALUES_EQUAL(sizes, (TVector{1048866, 1048866})); + + env.SendSync(new NFake::TEvExecute{ new TTxCalculateReadSize(sizes, 300, 700) }); + UNIT_ASSERT_VALUES_EQUAL(sizes, (TVector{4133766, 4133766})); + } + Y_UNIT_TEST(TestPrechargeAndSeek) { TMyEnvBase env; TRowsModel rows; From 4d224973d38830488b2426165f4afff614914fa9 Mon Sep 17 00:00:00 2001 From: kungurtsev Date: Mon, 3 Jun 2024 11:24:57 +0200 Subject: [PATCH 065/110] 24-1 Correctly trigger borrow compaction for shadow data (#4978) --- ydb/core/tx/datashard/build_index.cpp | 4 +- .../datashard/datashard__compact_borrowed.cpp | 64 ++++++----- .../tx/datashard/datashard__compaction.cpp | 52 +++++---- ydb/core/tx/datashard/datashard__stats.cpp | 4 +- ydb/core/tx/datashard/datashard_impl.h | 13 ++- ydb/core/tx/datashard/datashard_loans.cpp | 1 + .../tx/datashard/datashard_ut_build_index.cpp | 101 +++++++++++++++++- .../tx/datashard/datashard_ut_compaction.cpp | 60 ++--------- .../tx/datashard/datashard_ut_snapshot.cpp | 7 -- ydb/core/tx/datashard/datashard_ut_stats.cpp | 57 ++-------- .../ut_common/datashard_ut_common.cpp | 37 +++++++ .../datashard/ut_common/datashard_ut_common.h | 5 + .../schemeshard__borrowed_compaction.cpp | 10 +- .../schemeshard/schemeshard__compaction.cpp | 33 +++--- .../schemeshard/schemeshard__table_stats.cpp | 8 +- ydb/core/tx/schemeshard/schemeshard_impl.h | 2 +- ydb/core/util/operation_queue.h | 2 +- ydb/library/actors/testlib/test_runtime.cpp | 8 ++ ydb/library/actors/testlib/test_runtime.h | 1 + 19 files changed, 289 insertions(+), 180 deletions(-) diff --git a/ydb/core/tx/datashard/build_index.cpp b/ydb/core/tx/datashard/build_index.cpp index f76f078be9a5..c9eaf91699b5 100644 --- a/ydb/core/tx/datashard/build_index.cpp +++ b/ydb/core/tx/datashard/build_index.cpp @@ -328,7 +328,7 @@ class TBuildIndexScan : public TActor, public NTable::IScan { EScan Seek(TLead& lead, ui64 seq) noexcept override { auto ctx = TActivationContext::AsActorContext().MakeFor(SelfId()); - LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, + LOG_TRACE_S(ctx, NKikimrServices::TX_DATASHARD, "Seek no " << seq << " " << Debug()); if (seq) { if (!WriteBuf.IsEmpty()) { @@ -367,7 +367,7 @@ class TBuildIndexScan : public TActor, public NTable::IScan { EScan Feed(TArrayRef key, const TRow& row) noexcept override { auto ctx = TActivationContext::AsActorContext().MakeFor(SelfId()); - LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, + LOG_TRACE_S(ctx, NKikimrServices::TX_DATASHARD, "Feed key " << DebugPrintPoint(KeyTypes, key, *AppData()->TypeRegistry) << " " << Debug()); diff --git a/ydb/core/tx/datashard/datashard__compact_borrowed.cpp b/ydb/core/tx/datashard/datashard__compact_borrowed.cpp index cad476c8e524..3dae5cc8ad6d 100644 --- a/ydb/core/tx/datashard/datashard__compact_borrowed.cpp +++ b/ydb/core/tx/datashard/datashard__compact_borrowed.cpp @@ -21,45 +21,59 @@ class TDataShard::TTxCompactBorrowed : public NTabletFlatExecutor::TTransactionB << " for table " << pathId << " at tablet " << Self->TabletID()); - auto response = MakeHolder(Self->TabletID(), pathId); + auto nothingToCompactResult = MakeHolder(Self->TabletID(), pathId); - if (pathId.OwnerId != Self->GetPathOwnerId()) { - // Ignore unexpected owner - ctx.Send(Ev->Sender, std::move(response)); + if (pathId.OwnerId != Self->GetPathOwnerId()) { // ignore unexpected owner + ctx.Send(Ev->Sender, std::move(nothingToCompactResult)); return true; } - auto it = Self->TableInfos.find(pathId.LocalPathId); - if (it == Self->TableInfos.end()) { - // Ignore unexpected table (may normally happen with races) - ctx.Send(Ev->Sender, std::move(response)); + if (it == Self->TableInfos.end()) { // ignore unexpected table (may normally happen with races) + ctx.Send(Ev->Sender, std::move(nothingToCompactResult)); return true; } - const TUserTable& tableInfo = *it->second; + + THashSet tablesToCompact; + if (txc.DB.HasBorrowed(tableInfo.LocalTid, Self->TabletID())) { + tablesToCompact.insert(tableInfo.LocalTid); + } + if (tableInfo.ShadowTid && txc.DB.HasBorrowed(tableInfo.ShadowTid, Self->TabletID())) { + tablesToCompact.insert(tableInfo.ShadowTid); + } + + auto waiter = MakeIntrusive(Ev->Sender, pathId.LocalPathId); - bool hasBorrowed = txc.DB.HasBorrowed(tableInfo.LocalTid, Self->TabletID()); - if (!hasBorrowed) { + for (auto tableToCompact : tablesToCompact) { LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, "TEvCompactBorrowed request from " << Ev->Sender << " for table " << pathId - << " has no borrowed parts" + << " starting compaction for local table " << tableToCompact << " at tablet " << Self->TabletID()); - ctx.Send(Ev->Sender, std::move(response)); - return true; - } - LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, - "TEvCompactBorrowed request from " << Ev->Sender - << " for table " << pathId - << " starting compaction for local table " << tableInfo.LocalTid - << " at tablet " << Self->TabletID()); - - Self->Executor()->CompactBorrowed(tableInfo.LocalTid); - Self->IncCounter(COUNTER_TX_COMPACT_BORROWED); - ++tableInfo.Stats.CompactBorrowedCount; + if (Self->Executor()->CompactBorrowed(tableToCompact)) { + Self->IncCounter(COUNTER_TX_COMPACT_BORROWED); + ++tableInfo.Stats.CompactBorrowedCount; + + waiter->CompactingTables.insert(tableToCompact); + Self->CompactBorrowedWaiters[tableToCompact].push_back(waiter); + } else { + LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, + "TEvCompactBorrowed request from " << Ev->Sender + << " for table " << pathId + << " can not be compacted" + << " at tablet " << Self->TabletID()); + } + } - Self->CompactBorrowedWaiters[tableInfo.LocalTid].emplace_back(Ev->Sender); + if (waiter->CompactingTables.empty()) { // none has been triggered + LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, + "TEvCompactBorrowed request from " << Ev->Sender + << " for table " << pathId + << " has no parts for borrowed compaction" + << " at tablet " << Self->TabletID()); + ctx.Send(Ev->Sender, std::move(nothingToCompactResult)); + } return true; } diff --git a/ydb/core/tx/datashard/datashard__compaction.cpp b/ydb/core/tx/datashard/datashard__compaction.cpp index de0720cdbae9..f32ac18c3952 100644 --- a/ydb/core/tx/datashard/datashard__compaction.cpp +++ b/ydb/core/tx/datashard/datashard__compaction.cpp @@ -196,6 +196,12 @@ void TDataShard::Handle(TEvDataShard::TEvCompactTable::TPtr& ev, const TActorCon void TDataShard::CompactionComplete(ui32 tableId, const TActorContext &ctx) { auto finishedInfo = Executor()->GetFinishedCompactionInfo(tableId); + LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, + "CompactionComplete of tablet# "<< TabletID() + << ", table# " << tableId + << ", finished edge# " << finishedInfo.Edge + << ", ts " << finishedInfo.FullCompactionTs); + TLocalPathId localPathId = InvalidLocalPathId; if (tableId >= Schema::MinLocalTid) { for (auto& ti : TableInfos) { @@ -234,11 +240,12 @@ void TDataShard::ReplyCompactionWaiters( << ", finished edge# " << compactionInfo.Edge << ", front# " << (CompactionWaiters[tableId].empty() ? 0UL : std::get<0>(CompactionWaiters[tableId].front()))); - auto& fullCompactionQueue = CompactionWaiters[tableId]; - while (!fullCompactionQueue.empty()) { - const auto& waiter = CompactionWaiters[tableId].front(); - if (std::get<0>(waiter) > compactionInfo.Edge) + auto fullCompactionQueue = CompactionWaiters.FindPtr(tableId); + while (fullCompactionQueue && !fullCompactionQueue->empty()) { + const auto& waiter = fullCompactionQueue->front(); + if (std::get<0>(waiter) > compactionInfo.Edge) { break; + } const auto& sender = std::get<1>(waiter); auto response = MakeHolder( @@ -252,27 +259,30 @@ void TDataShard::ReplyCompactionWaiters( "Sending TEvCompactTableResult to# " << sender << "pathId# " << TPathId(GetPathOwnerId(), localPathId)); - fullCompactionQueue.pop_front(); + fullCompactionQueue->pop_front(); } - auto& compactBorrowedQueue = CompactBorrowedWaiters[tableId]; - if (!compactBorrowedQueue.empty()) { + auto compactBorrowedQueue = CompactBorrowedWaiters.FindPtr(tableId); + if (compactBorrowedQueue && !compactBorrowedQueue->empty()) { const bool hasBorrowed = Executor()->HasBorrowed(tableId, TabletID()); if (!hasBorrowed) { - while (!compactBorrowedQueue.empty()) { - const auto& waiter = compactBorrowedQueue.front(); - - auto response = MakeHolder( - TabletID(), - GetPathOwnerId(), - localPathId); - ctx.Send(waiter, std::move(response)); - - LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, - "Sending TEvCompactBorrowedResult to# " << waiter - << "pathId# " << TPathId(GetPathOwnerId(), localPathId)); - - compactBorrowedQueue.pop_front(); + while (!compactBorrowedQueue->empty()) { + const auto& waiter = compactBorrowedQueue->front(); + waiter->CompactingTables.erase(tableId); + + if (waiter->CompactingTables.empty()) { // all requested tables have been compacted + auto response = MakeHolder( + TabletID(), + GetPathOwnerId(), + waiter->RequestedTable); + ctx.Send(waiter->ActorId, std::move(response)); + + LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, + "Sending TEvCompactBorrowedResult to# " << waiter->ActorId + << "pathId# " << TPathId(GetPathOwnerId(), waiter->RequestedTable)); + } + + compactBorrowedQueue->pop_front(); } } } diff --git a/ydb/core/tx/datashard/datashard__stats.cpp b/ydb/core/tx/datashard/datashard__stats.cpp index c1da8a6122f9..5a6e45a2edb0 100644 --- a/ydb/core/tx/datashard/datashard__stats.cpp +++ b/ydb/core/tx/datashard/datashard__stats.cpp @@ -361,7 +361,9 @@ void TDataShard::Handle(TEvPrivate::TEvAsyncTableStats::TPtr& ev, const TActorCo Actors.erase(ev->Sender); ui64 tableId = ev->Get()->TableId; - LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, "Stats rebuilt at datashard " << TabletID() << ", for tableId " << tableId); + LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, "Stats rebuilt at datashard " << TabletID() << ", for tableId " << tableId + << ": RowCount " << ev->Get()->Stats.RowCount << ", DataSize " << ev->Get()->Stats.DataSize.Size + << (ev->Get()->PartOwners.size() > 1 || ev->Get()->PartOwners.size() == 1 && *ev->Get()->PartOwners.begin() != TabletID() ? ", with borrowed parts" : "")); i64 dataSize = 0; if (TableInfos.contains(tableId)) { diff --git a/ydb/core/tx/datashard/datashard_impl.h b/ydb/core/tx/datashard/datashard_impl.h index d60e6f2ff76a..6abecffbbe41 100644 --- a/ydb/core/tx/datashard/datashard_impl.h +++ b/ydb/core/tx/datashard/datashard_impl.h @@ -2822,10 +2822,19 @@ class TDataShard // from the front THashMap CompactionWaiters; - using TCompactBorrowedWaiterList = TList; + struct TCompactBorrowedWaiter : public TThrRefBase { + TCompactBorrowedWaiter(TActorId actorId, TLocalPathId requestedTable) + : ActorId(actorId) + , RequestedTable(requestedTable) + { } + + TActorId ActorId; + TLocalPathId RequestedTable; + THashSet CompactingTables; + }; // tableLocalTid -> waiters, similar to CompactionWaiters - THashMap CompactBorrowedWaiters; + THashMap>> CompactBorrowedWaiters; struct TReplicationSourceOffsetsReceiveState { // A set of tables for which we already received offsets diff --git a/ydb/core/tx/datashard/datashard_loans.cpp b/ydb/core/tx/datashard/datashard_loans.cpp index 58c9f2de2280..6644e8cfd5b3 100644 --- a/ydb/core/tx/datashard/datashard_loans.cpp +++ b/ydb/core/tx/datashard/datashard_loans.cpp @@ -50,6 +50,7 @@ NTabletFlatExecutor::ITransaction* TDataShard::CreateTxInitiateBorrowedPartsRetu } void TDataShard::CompletedLoansChanged(const TActorContext &ctx) { + LOG_INFO_S(ctx, NKikimrServices::TX_DATASHARD, TabletID() << " CompletedLoansChanged"); Y_ABORT_UNLESS(Executor()->GetStats().CompactedPartLoans); CheckInitiateBorrowedPartsReturn(ctx); diff --git a/ydb/core/tx/datashard/datashard_ut_build_index.cpp b/ydb/core/tx/datashard/datashard_ut_build_index.cpp index da80947ca50d..35cb7139e6d6 100644 --- a/ydb/core/tx/datashard/datashard_ut_build_index.cpp +++ b/ydb/core/tx/datashard/datashard_ut_build_index.cpp @@ -95,7 +95,7 @@ Y_UNIT_TEST_SUITE(TTxDataShardBuildIndexScan) { CreateShardedTable(server, sender, root, name, opts); } - Y_UNIT_TEST(TestRunScan) { + Y_UNIT_TEST(RunScan) { TPortManager pm; TServerSettings serverSettings(pm.GetPort(2134)); serverSettings.SetDomainName("Root") @@ -130,8 +130,7 @@ Y_UNIT_TEST_SUITE(TTxDataShardBuildIndexScan) { // Alter table: disable shadow data and change compaction policy auto policy = NLocalDb::CreateDefaultUserTablePolicy(); policy->KeepEraseMarkers = false; - WaitTxNotification(server, - AsyncAlterAndDisableShadow(server, "/Root", "table-2", policy.Get())); + WaitTxNotification(server, AsyncAlterAndDisableShadow(server, "/Root", "table-2", policy.Get())); // Shadow data must be visible now auto data2 = ReadShardedTable(server, "/Root/table-2"); @@ -140,6 +139,102 @@ Y_UNIT_TEST_SUITE(TTxDataShardBuildIndexScan) { "value = 300, key = 3\n" "value = 500, key = 5\n"); } + + Y_UNIT_TEST(ShadowBorrowCompaction) { + TPortManager pm; + TServerSettings serverSettings(pm.GetPort(2134)); + serverSettings + .SetDomainName("Root") + .SetUseRealThreads(false); + + Tests::TServer::TPtr server = new TServer(serverSettings); + auto &runtime = *server->GetRuntime(); + auto sender = runtime.AllocateEdgeActor(); + + runtime.SetLogPriority(NKikimrServices::TX_DATASHARD, NLog::PRI_DEBUG); + runtime.SetLogPriority(NKikimrServices::FLAT_TX_SCHEMESHARD, NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::TABLET_EXECUTOR, NLog::PRI_DEBUG); + + // Allow manipulating shadow data using normal schemeshard operations + runtime.GetAppData().AllowShadowDataInSchemeShardForTests = true; + + InitRoot(server, sender); + + CreateShardedTable(server, sender, "/Root", "table-1", 1, false); + + // Upsert some initial values + ExecSQL(server, sender, "UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 100), (2, 200), (3, 300), (4, 400), (5, 500);"); + + CreateShardedTableForIndex(server, sender, "/Root", "table-2", 1, false); + + auto observer = runtime.AddObserver([&](TEvDataShard::TEvCompactBorrowed::TPtr& event) { + Cerr << "Captured TEvDataShard::TEvCompactBorrowed from " << runtime.FindActorName(event->Sender) << " to " << runtime.FindActorName(event->GetRecipientRewrite()) << Endl; + if (runtime.FindActorName(event->Sender) == "FLAT_SCHEMESHARD_ACTOR") { + event.Reset(); + } + }); + + auto snapshot = CreateVolatileSnapshot(server, { "/Root/table-1" }); + + DoBuildIndex(server, sender, "/Root/table-1", "/Root/table-2", snapshot, NKikimrTxDataShard::TEvBuildIndexProgressResponse::DONE); + + // Writes to shadow data should not be visible yet + auto data = ReadShardedTable(server, "/Root/table-2"); + UNIT_ASSERT_VALUES_EQUAL(data, ""); + + // Split index + auto shards1 = GetTableShards(server, sender, "/Root/table-2"); + UNIT_ASSERT_VALUES_EQUAL(shards1.size(), 1u); + + // Split would fail otherwise :( + SetSplitMergePartCountLimit(server->GetRuntime(), -1); + + auto senderSplit = runtime.AllocateEdgeActor(); + ui64 txId = AsyncSplitTable(server, senderSplit, "/Root/table-2", shards1.at(0), 300); + WaitTxNotification(server, senderSplit, txId); + + auto shards2 = GetTableShards(server, sender, "/Root/table-2"); + UNIT_ASSERT_VALUES_EQUAL(shards2.size(), 2u); + + for (auto shardIndex : xrange(2u)) { + auto stats = WaitTableStats(runtime, shards2.at(shardIndex)); + // Cerr << "Received shard stats:" << Endl << stats.DebugString() << Endl; + + UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), shardIndex == 0 ? 2 : 3); + + THashSet owners(stats.GetUserTablePartOwners().begin(), stats.GetUserTablePartOwners().end()); + // Note: datashard always adds current shard to part owners, even if there are no parts + UNIT_ASSERT_VALUES_EQUAL(owners, (THashSet{shards1.at(0), shards2.at(shardIndex)})); + + auto tableId = ResolveTableId(server, sender, "/Root/table-2"); + auto result = CompactBorrowed(runtime, shards2.at(shardIndex), tableId); + // Cerr << "Compact result " << result.DebugString() << Endl; + UNIT_ASSERT_VALUES_EQUAL(result.GetTabletId(), shards2.at(shardIndex)); + UNIT_ASSERT_VALUES_EQUAL(result.GetPathId().GetOwnerId(), tableId.PathId.OwnerId); + UNIT_ASSERT_VALUES_EQUAL(result.GetPathId().GetLocalId(), tableId.PathId.LocalPathId); + + for (int i = 0; i < 5 && (owners.size() > 1 || owners.contains(shards1.at(0))); ++i) { + auto stats = WaitTableStats(runtime, shards2.at(shardIndex)); + owners = THashSet(stats.GetUserTablePartOwners().begin(), stats.GetUserTablePartOwners().end()); + } + + UNIT_ASSERT_VALUES_EQUAL(owners, (THashSet{shards2.at(shardIndex)})); + } + + // Alter table: disable shadow data and change compaction policy + auto policy = NLocalDb::CreateDefaultUserTablePolicy(); + policy->KeepEraseMarkers = false; + WaitTxNotification(server, AsyncAlterAndDisableShadow(server, "/Root", "table-2", policy.Get())); + + // Shadow data must be visible now + auto data2 = ReadShardedTable(server, "/Root/table-2"); + UNIT_ASSERT_VALUES_EQUAL(data2, + "value = 100, key = 1\n" + "value = 200, key = 2\n" + "value = 300, key = 3\n" + "value = 400, key = 4\n" + "value = 500, key = 5\n"); + } } } // namespace NKikimr diff --git a/ydb/core/tx/datashard/datashard_ut_compaction.cpp b/ydb/core/tx/datashard/datashard_ut_compaction.cpp index b627b17d3d22..c9873b3c19ca 100644 --- a/ydb/core/tx/datashard/datashard_ut_compaction.cpp +++ b/ydb/core/tx/datashard/datashard_ut_compaction.cpp @@ -6,52 +6,6 @@ using namespace NKikimr::NDataShard; using namespace NSchemeShard; using namespace Tests; -namespace { - - NKikimrTxDataShard::TEvPeriodicTableStats WaitTableStats(TTestActorRuntime& runtime, ui64 tabletId) { - NKikimrTxDataShard::TEvPeriodicTableStats stats; - bool captured = false; - - auto observerFunc = [&](TAutoPtr& ev) { - switch (ev->GetTypeRewrite()) { - case TEvDataShard::TEvPeriodicTableStats::EventType: { - const auto& record = ev->Get()->Record; - if (record.GetDatashardId() == tabletId) { - stats = record; - captured = true; - } - break; - } - default: { - break; - } - } - return TTestActorRuntime::EEventAction::PROCESS; - }; - auto prevObserverFunc = runtime.SetObserverFunc(observerFunc); - - for (int i = 0; i < 5 && !captured; ++i) { - TDispatchOptions options; - options.CustomFinalCondition = [&]() { - return captured; - }; - runtime.DispatchEvents(options, TDuration::Seconds(5)); - } - - runtime.SetObserverFunc(prevObserverFunc); - UNIT_ASSERT(captured); - - return stats; - } - - void CompactBorrowed(TTestActorRuntime& runtime, ui64 shardId, const TTableId& tableId) { - auto evReq = MakeHolder(tableId.PathId); - auto sender = runtime.AllocateEdgeActor(); - runtime.SendToPipe(shardId, sender, evReq.Release(), 0, GetPipeConfigWithRetries()); - } - -} // namespace - Y_UNIT_TEST_SUITE(DataShardCompaction) { Y_UNIT_TEST(CompactBorrowed) { TPortManager pm; @@ -87,7 +41,7 @@ Y_UNIT_TEST_SUITE(DataShardCompaction) { { auto stats = WaitTableStats(runtime, shards2.at(0)); - // Cerr << "Received shard stats:" << Endl << stats.DebugString(); + Cerr << "Received shard stats:" << Endl << stats.DebugString(); const auto& ownersProto = stats.GetUserTablePartOwners(); THashSet owners(ownersProto.begin(), ownersProto.end()); // NOTE: datashard always adds current shard to part owners, even if there are no parts @@ -96,12 +50,18 @@ Y_UNIT_TEST_SUITE(DataShardCompaction) { UNIT_ASSERT(owners.contains(shards2.at(0))); } - auto tableId = ResolveTableId(server, sender, "/Root/table-1"); - CompactBorrowed(runtime, shards2.at(0), tableId); + { + auto tableId = ResolveTableId(server, sender, "/Root/table-1"); + auto result = CompactBorrowed(runtime, shards2.at(0), tableId); + Cerr << "Compact result " << result.DebugString() << Endl; + UNIT_ASSERT_VALUES_EQUAL(result.GetTabletId(), shards2.at(0)); + UNIT_ASSERT_VALUES_EQUAL(result.GetPathId().GetOwnerId(), tableId.PathId.OwnerId); + UNIT_ASSERT_VALUES_EQUAL(result.GetPathId().GetLocalId(), tableId.PathId.LocalPathId); + } for (int i = 0; i < 5; ++i) { auto stats = WaitTableStats(runtime, shards2.at(0)); - // Cerr << "Received shard stats:" << Endl << stats.DebugString(); + // Cerr << "Received shard stats:" << Endl << stats.DebugString() << Endl; const auto& ownersProto = stats.GetUserTablePartOwners(); THashSet owners(ownersProto.begin(), ownersProto.end()); if (i < 4) { diff --git a/ydb/core/tx/datashard/datashard_ut_snapshot.cpp b/ydb/core/tx/datashard/datashard_ut_snapshot.cpp index 7e0ae912a3c7..b91690875ed0 100644 --- a/ydb/core/tx/datashard/datashard_ut_snapshot.cpp +++ b/ydb/core/tx/datashard/datashard_ut_snapshot.cpp @@ -4551,13 +4551,6 @@ Y_UNIT_TEST_SUITE(DataShardSnapshots) { } } - void CompactBorrowed(TTestActorRuntime& runtime, ui64 shardId, const TTableId& tableId) { - auto msg = MakeHolder(tableId.PathId); - auto sender = runtime.AllocateEdgeActor(); - runtime.SendToPipe(shardId, sender, msg.Release(), 0, GetPipeConfigWithRetries()); - runtime.GrabEdgeEventRethrow(sender); - } - Y_UNIT_TEST(PostMergeNotCompactedTooEarly) { TPortManager pm; TServerSettings serverSettings(pm.GetPort(2134)); diff --git a/ydb/core/tx/datashard/datashard_ut_stats.cpp b/ydb/core/tx/datashard/datashard_ut_stats.cpp index 780fd911652e..0e1aae65c3f6 100644 --- a/ydb/core/tx/datashard/datashard_ut_stats.cpp +++ b/ydb/core/tx/datashard/datashard_ut_stats.cpp @@ -9,41 +9,6 @@ using namespace Tests; Y_UNIT_TEST_SUITE(DataShardStats) { - NKikimrTxDataShard::TEvPeriodicTableStats WaitTableStats(TTestActorRuntime& runtime, size_t minPartCount = 0, size_t minRows = 0) { - NKikimrTxDataShard::TEvPeriodicTableStats stats; - bool captured = false; - - auto observerFunc = [&](TAutoPtr& ev) { - switch (ev->GetTypeRewrite()) { - case TEvDataShard::TEvPeriodicTableStats::EventType: { - stats = ev->Get()->Record; - if (stats.GetTableStats().GetPartCount() >= minPartCount && stats.GetTableStats().GetRowCount() >= minRows) { - captured = true; - } - break; - } - default: { - break; - } - } - return TTestActorRuntime::EEventAction::PROCESS; - }; - auto prevObserverFunc = runtime.SetObserverFunc(observerFunc); - - for (int i = 0; i < 5 && !captured; ++i) { - TDispatchOptions options; - options.CustomFinalCondition = [&]() { - return captured; - }; - runtime.DispatchEvents(options, TDuration::Seconds(5)); - } - - runtime.SetObserverFunc(prevObserverFunc); - UNIT_ASSERT(captured); - - return stats; - } - NKikimrTableStats::TTableStats GetTableStats(TTestActorRuntime& runtime, ui64 tabletId, ui64 tableId) { auto sender = runtime.AllocateEdgeActor(); auto request = MakeHolder(tableId); @@ -85,7 +50,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) { { Cerr << "... waiting for stats after upsert" << Endl; - auto stats = WaitTableStats(runtime); + auto stats = WaitTableStats(runtime, shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 3u); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 0u); @@ -98,7 +63,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) { { Cerr << "... waiting for stats after compaction" << Endl; - auto stats = WaitTableStats(runtime, 1); + auto stats = WaitTableStats(runtime, shard1, 1); UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 3u); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 1u); @@ -115,7 +80,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) { { Cerr << "... waiting for stats after write" << Endl; - auto stats = WaitTableStats(runtime); + auto stats = WaitTableStats(runtime, shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 4u); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetImmediateTxCompleted(), 2u); @@ -150,7 +115,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) { { Cerr << "... waiting for stats after upsert" << Endl; - auto stats = WaitTableStats(runtime); + auto stats = WaitTableStats(runtime, shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 3u); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 0u); @@ -162,7 +127,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) { { Cerr << "... waiting for stats after compaction" << Endl; - auto stats = WaitTableStats(runtime, 1); + auto stats = WaitTableStats(runtime, shard1, 1); UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 3u); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 1u); @@ -213,7 +178,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) { { Cerr << "... waiting for stats after upsert" << Endl; - auto stats = WaitTableStats(runtime); + auto stats = WaitTableStats(runtime, shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), count); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 0u); @@ -225,7 +190,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) { { Cerr << "... waiting for stats after compaction" << Endl; - auto stats = WaitTableStats(runtime, 1); + auto stats = WaitTableStats(runtime, shard1, 1); UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), count); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 1u); @@ -295,7 +260,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) { { Cerr << "... waiting for stats after upsert" << Endl; - auto stats = WaitTableStats(runtime); + auto stats = WaitTableStats(runtime, shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 5u); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 0u); @@ -307,7 +272,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) { { Cerr << "... waiting for stats after compaction" << Endl; - auto stats = WaitTableStats(runtime, 1); + auto stats = WaitTableStats(runtime, shard1, 1); UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 5u); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 1u); @@ -365,7 +330,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) { CompactTable(runtime, shard1, tableId1, false); Cerr << "... waiting for stats after compaction" << Endl; - auto stats = WaitTableStats(runtime, 1, (batch + 1) * batchItems); + auto stats = WaitTableStats(runtime, shard1, 1, (batch + 1) * batchItems); UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), (batch + 1) * batchItems); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 1); @@ -423,7 +388,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) { { Cerr << "Waiting stats.." << Endl; - auto stats = WaitTableStats(runtime, 1); + auto stats = WaitTableStats(runtime, shard1, 1); UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 3); UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 1); diff --git a/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp b/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp index 06c6bc471cae..f79a3de14c25 100644 --- a/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp +++ b/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp @@ -1275,6 +1275,15 @@ NKikimrTxDataShard::TEvCompactTableResult CompactTable( return ev->Get()->Record; } +NKikimrTxDataShard::TEvCompactBorrowedResult CompactBorrowed(TTestActorRuntime& runtime, ui64 shardId, const TTableId& tableId) { + auto request = MakeHolder(tableId.PathId); + auto sender = runtime.AllocateEdgeActor(); + runtime.SendToPipe(shardId, sender, request.Release(), 0, GetPipeConfigWithRetries()); + + auto ev = runtime.GrabEdgeEventRethrow(sender); + return ev->Get()->Record; +} + std::pair GetTables( Tests::TServer::TPtr server, ui64 tabletId) @@ -1737,6 +1746,34 @@ void WaitTxNotification(Tests::TServer::TPtr server, ui64 txId) { WaitTxNotification(server, sender, txId); } +NKikimrTxDataShard::TEvPeriodicTableStats WaitTableStats(TTestActorRuntime& runtime, ui64 tabletId, ui64 minPartCount, ui64 minRows) { + NKikimrTxDataShard::TEvPeriodicTableStats stats; + bool captured = false; + + auto observer = runtime.AddObserver([&](auto& ev) { + const auto& record = ev->Get()->Record; + if (record.GetDatashardId() == tabletId) { + Cerr << "Captured TEvDataShard::TEvPeriodicTableStats " << record.ShortDebugString() << Endl; + if (record.GetTableStats().GetPartCount() >= minPartCount && record.GetTableStats().GetRowCount() >= minRows) { + stats = record; + captured = true; + } + } + }); + + for (int i = 0; i < 5 && !captured; ++i) { + TDispatchOptions options; + options.CustomFinalCondition = [&]() { return captured; }; + runtime.DispatchEvents(options, TDuration::Seconds(5)); + } + + observer.Remove(); + + UNIT_ASSERT(captured); + + return stats; +} + void SimulateSleep(Tests::TServer::TPtr server, TDuration duration) { auto &runtime = *server->GetRuntime(); SimulateSleep(runtime, duration); diff --git a/ydb/core/tx/datashard/ut_common/datashard_ut_common.h b/ydb/core/tx/datashard/ut_common/datashard_ut_common.h index 2143be8babe7..450164a88a21 100644 --- a/ydb/core/tx/datashard/ut_common/datashard_ut_common.h +++ b/ydb/core/tx/datashard/ut_common/datashard_ut_common.h @@ -524,6 +524,9 @@ ui64 AsyncCreateCopyTable(Tests::TServer::TPtr server, NKikimrTxDataShard::TEvCompactTableResult CompactTable( TTestActorRuntime& runtime, ui64 shardId, const TTableId& tableId, bool compactBorrowed = false); +NKikimrTxDataShard::TEvCompactBorrowedResult CompactBorrowed( + TTestActorRuntime& runtime, ui64 shardId, const TTableId& tableId); + using TTableInfoMap = THashMap; std::pair GetTables(Tests::TServer::TPtr server, @@ -684,6 +687,8 @@ TString ReadShardedTable( void WaitTxNotification(Tests::TServer::TPtr server, TActorId sender, ui64 txId); void WaitTxNotification(Tests::TServer::TPtr server, ui64 txId); +NKikimrTxDataShard::TEvPeriodicTableStats WaitTableStats(TTestActorRuntime& runtime, ui64 tabletId, ui64 minPartCount = 0, ui64 minRows = 0); + void SimulateSleep(Tests::TServer::TPtr server, TDuration duration); void SimulateSleep(TTestActorRuntime& runtime, TDuration duration); diff --git a/ydb/core/tx/schemeshard/schemeshard__borrowed_compaction.cpp b/ydb/core/tx/schemeshard/schemeshard__borrowed_compaction.cpp index 90bf3c974fd1..1cb9a8048c72 100644 --- a/ydb/core/tx/schemeshard/schemeshard__borrowed_compaction.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__borrowed_compaction.cpp @@ -95,11 +95,11 @@ void TSchemeShard::EnqueueBorrowedCompaction(const TShardIdx& shardIdx) { auto ctx = ActorContext(); - LOG_TRACE_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, - "borrowed compaction enqueue shard# " << shardIdx << " at schemeshard " << TabletID()); - - BorrowedCompactionQueue->Enqueue(shardIdx); - UpdateBorrowedCompactionQueueMetrics(); + if (BorrowedCompactionQueue->Enqueue(shardIdx)) { + LOG_TRACE_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "Borrowed compaction enqueued shard# " << shardIdx << " at schemeshard " << TabletID()); + UpdateBorrowedCompactionQueueMetrics(); + } } void TSchemeShard::RemoveBorrowedCompaction(const TShardIdx& shardIdx) { diff --git a/ydb/core/tx/schemeshard/schemeshard__compaction.cpp b/ydb/core/tx/schemeshard/schemeshard__compaction.cpp index 02a84338a6c4..769b54eeb5ca 100644 --- a/ydb/core/tx/schemeshard/schemeshard__compaction.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__compaction.cpp @@ -182,18 +182,20 @@ void TSchemeShard::UpdateBackgroundCompaction( auto ctx = ActorContext(); if (newStats.HasBorrowedData) { - LOG_TRACE_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, - "background compaction update removed shard# " << shardIdx - << " with borrowed parts at schemeshard " << TabletID()); - RemoveBackgroundCompaction(shardIdx); + if (RemoveBackgroundCompaction(shardIdx)) { + LOG_TRACE_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "background compaction update removed shard# " << shardIdx + << " with borrowed parts at schemeshard " << TabletID()); + } return; } if (newStats.HasLoanedData) { - LOG_TRACE_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, - "background compaction update removed shard# " << shardIdx - << " with loaned parts at schemeshard " << TabletID()); - RemoveBackgroundCompaction(shardIdx); + if (RemoveBackgroundCompaction(shardIdx)) { + LOG_TRACE_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "background compaction update removed shard# " << shardIdx + << " with loaned parts at schemeshard " << TabletID()); + } return; } @@ -206,17 +208,22 @@ void TSchemeShard::UpdateBackgroundCompaction( << " at schemeshard " << TabletID()); TShardCompactionInfo info(shardIdx, newStats); - if (!CompactionQueue->Update(info)) + if (!CompactionQueue->Update(info)) { CompactionQueue->Enqueue(std::move(info)); + } UpdateBackgroundCompactionQueueMetrics(); } -void TSchemeShard::RemoveBackgroundCompaction(const TShardIdx& shardIdx) { +bool TSchemeShard::RemoveBackgroundCompaction(const TShardIdx& shardIdx) { if (!CompactionQueue) - return; + return false; - CompactionQueue->Remove(TShardCompactionInfo(shardIdx)); - UpdateBackgroundCompactionQueueMetrics(); + if (CompactionQueue->Remove(TShardCompactionInfo(shardIdx))) { + UpdateBackgroundCompactionQueueMetrics(); + return true; + } + + return false; } void TSchemeShard::ShardRemoved(const TShardIdx& shardIdx) { diff --git a/ydb/core/tx/schemeshard/schemeshard__table_stats.cpp b/ydb/core/tx/schemeshard/schemeshard__table_stats.cpp index 0434df8d07cf..4834af75a279 100644 --- a/ydb/core/tx/schemeshard/schemeshard__table_stats.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__table_stats.cpp @@ -215,9 +215,11 @@ bool TTxStoreTableStats::PersistSingleStats(const TPathId& pathId, const TPartitionStats newStats = PrepareStats(ctx, rec); LOG_INFO_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, - "Add stats from shard with datashardId(TabletID)=" << datashardId << ", pathId " << pathId.LocalPathId - << ": RowCount " << newStats.RowCount << ", DataSize " - << newStats.DataSize); + "Add stats from shard with datashardId(TabletID)=" << datashardId + << ", pathId " << pathId.LocalPathId + << ": RowCount " << newStats.RowCount + << ", DataSize " << newStats.DataSize + << (newStats.HasBorrowedData ? ", with borrowed parts" : "")); NIceDb::TNiceDb db(txc.DB); diff --git a/ydb/core/tx/schemeshard/schemeshard_impl.h b/ydb/core/tx/schemeshard/schemeshard_impl.h index ae4a7e2c3151..69126c4e7967 100644 --- a/ydb/core/tx/schemeshard/schemeshard_impl.h +++ b/ydb/core/tx/schemeshard/schemeshard_impl.h @@ -853,7 +853,7 @@ class TSchemeShard void EnqueueBackgroundCompaction(const TShardIdx& shardIdx, const TPartitionStats& stats); void UpdateBackgroundCompaction(const TShardIdx& shardIdx, const TPartitionStats& stats); - void RemoveBackgroundCompaction(const TShardIdx& shardIdx); + bool RemoveBackgroundCompaction(const TShardIdx& shardIdx); void EnqueueBorrowedCompaction(const TShardIdx& shardIdx); void RemoveBorrowedCompaction(const TShardIdx& shardIdx); diff --git a/ydb/core/util/operation_queue.h b/ydb/core/util/operation_queue.h index 74d2a3e76349..8628c2266fdb 100644 --- a/ydb/core/util/operation_queue.h +++ b/ydb/core/util/operation_queue.h @@ -488,7 +488,7 @@ bool TOperationQueue::Remove(const T& item) { StartOperations(); } - removed = WaitingItems.Remove(TItemWithTs(item)) || removed; + removed |= WaitingItems.Remove(TItemWithTs(item)); if (ItemsToShuffle) { auto it = Find(ItemsToShuffle.begin(), ItemsToShuffle.end(), item); diff --git a/ydb/library/actors/testlib/test_runtime.cpp b/ydb/library/actors/testlib/test_runtime.cpp index 1d4794ee0fb2..7e59e45b8880 100644 --- a/ydb/library/actors/testlib/test_runtime.cpp +++ b/ydb/library/actors/testlib/test_runtime.cpp @@ -1556,6 +1556,14 @@ namespace NActors { return FindActor(actorId, node); } + TStringBuf TTestActorRuntimeBase::FindActorName(const TActorId& actorId, ui32 nodeIndex) const { + auto actor = FindActor(actorId, nodeIndex); + if (!actor) { + return {}; + } + return TLocalProcessKeyState::GetInstance().GetNameByIndex(actor->GetActivityType()); + } + void TTestActorRuntimeBase::EnableScheduleForActor(const TActorId& actorId, bool allow) { TGuard guard(Mutex); if (allow) { diff --git a/ydb/library/actors/testlib/test_runtime.h b/ydb/library/actors/testlib/test_runtime.h index bc8343863087..d6b20ca9a357 100644 --- a/ydb/library/actors/testlib/test_runtime.h +++ b/ydb/library/actors/testlib/test_runtime.h @@ -291,6 +291,7 @@ namespace NActors { TActorId GetInterconnectProxy(ui32 nodeIndexFrom, ui32 nodeIndexTo); void BlockOutputForActor(const TActorId& actorId); IActor* FindActor(const TActorId& actorId, ui32 nodeIndex = Max()) const; + TStringBuf FindActorName(const TActorId& actorId, ui32 nodeIndex = Max()) const; void EnableScheduleForActor(const TActorId& actorId, bool allow = true); bool IsScheduleForActorEnabled(const TActorId& actorId) const; TIntrusivePtr GetDynamicCounters(ui32 nodeIndex = 0); From ea2ef6975f3750cd6d8f49248ae42860f793fabc Mon Sep 17 00:00:00 2001 From: azevaykin <145343289+azevaykin@users.noreply.github.com> Date: Tue, 4 Jun 2024 09:14:02 +0300 Subject: [PATCH 066/110] Knn UDF for Exact vector search (#4524) Co-authored-by: azevaykin Co-authored-by: Valerii Mironov --- library/cpp/dot_product/README.md | 15 + library/cpp/dot_product/dot_product.cpp | 274 ++ library/cpp/dot_product/dot_product.h | 96 + library/cpp/dot_product/dot_product_avx2.cpp | 344 ++ library/cpp/dot_product/dot_product_avx2.h | 19 + .../cpp/dot_product/dot_product_simple.cpp | 44 + library/cpp/dot_product/dot_product_simple.h | 40 + library/cpp/dot_product/dot_product_sse.cpp | 219 ++ library/cpp/dot_product/dot_product_sse.h | 19 + library/cpp/dot_product/ya.make | 20 + library/cpp/l1_distance/README.md | 15 + library/cpp/l1_distance/l1_distance.h | 477 +++ library/cpp/l1_distance/ya.make | 11 + library/cpp/l2_distance/README.md | 15 + library/cpp/l2_distance/l2_distance.cpp | 376 ++ library/cpp/l2_distance/l2_distance.h | 140 + library/cpp/l2_distance/ya.make | 12 + ydb/apps/ydbd/ya.make | 1 + ydb/library/yql/udfs/common/knn/knn-defines.h | 37 + .../yql/udfs/common/knn/knn-distance.h | 234 ++ .../yql/udfs/common/knn/knn-enumerator.h | 24 + .../yql/udfs/common/knn/knn-serializer.h | 174 + ydb/library/yql/udfs/common/knn/knn.cpp | 406 ++ .../common/knn/test/canondata/result.json | 97 + .../test.test_BitSerialization_/results.txt | 1482 ++++++++ .../test.test_CosineDistance_/results.txt | 3370 +++++++++++++++++ .../test.test_CosineSimilarity_/results.txt | 3370 +++++++++++++++++ .../results.txt | 31 + .../results.txt | 31 + .../results.txt | 31 + .../test.test_ErrorDistanceSameTag_/extracted | 11 + .../extracted | 11 + .../results.txt | 34 + .../results.txt | 34 + .../test.test_EuclideanDistance_/results.txt | 3370 +++++++++++++++++ .../results.txt | 3370 +++++++++++++++++ .../test.test_Int8Serialization_/results.txt | 217 ++ .../results.txt | 95 + .../test.test_ListSerialization_/results.txt | 215 ++ .../test.test_ManhattanDistance_/results.txt | 3370 +++++++++++++++++ .../test.test_NullForwarding_/results.txt | 184 + .../results.txt | 215 ++ .../test.test_Uint8Serialization_/results.txt | 217 ++ .../knn/test/cases/BitSerialization.sql | 83 + .../common/knn/test/cases/CosineDistance.sql | 168 + .../knn/test/cases/CosineSimilarity.sql | 167 + .../test/cases/ErrorDistanceInvalidFormat.sql | 1 + .../test/cases/ErrorDistanceSameFormat.sql | 1 + .../knn/test/cases/ErrorDistanceSameSize.sql | 3 + .../knn/test/cases/ErrorDistanceSameTag.cfg | 1 + .../knn/test/cases/ErrorDistanceSameTag.sql | 3 + .../ErrorFloatFromBinaryStringBitVector.cfg | 1 + .../ErrorFloatFromBinaryStringBitVector.sql | 2 + .../cases/ErrorFloatFromBinaryStringEmpty.sql | 1 + .../ErrorFloatFromBinaryStringInvalid.sql | 1 + .../knn/test/cases/EuclideanDistance.sql | 167 + .../knn/test/cases/InnerProductSimilarity.sql | 169 + .../knn/test/cases/Int8Serialization.sql | 18 + .../knn/test/cases/LazyListSerialization.sql | 9 + .../knn/test/cases/ListSerialization.sql | 18 + .../knn/test/cases/ManhattanDistance.sql | 167 + .../common/knn/test/cases/NullForwarding.sql | 7 + .../knn/test/cases/OptionalAutoUnpacking.sql | 8 + .../knn/test/cases/Uint8Serialization.sql | 18 + ydb/library/yql/udfs/common/knn/test/ya.make | 13 + ydb/library/yql/udfs/common/knn/ya.make | 24 + ydb/library/yql/udfs/common/ya.make | 1 + 67 files changed, 23818 insertions(+) create mode 100644 library/cpp/dot_product/README.md create mode 100644 library/cpp/dot_product/dot_product.cpp create mode 100644 library/cpp/dot_product/dot_product.h create mode 100644 library/cpp/dot_product/dot_product_avx2.cpp create mode 100644 library/cpp/dot_product/dot_product_avx2.h create mode 100644 library/cpp/dot_product/dot_product_simple.cpp create mode 100644 library/cpp/dot_product/dot_product_simple.h create mode 100644 library/cpp/dot_product/dot_product_sse.cpp create mode 100644 library/cpp/dot_product/dot_product_sse.h create mode 100644 library/cpp/dot_product/ya.make create mode 100644 library/cpp/l1_distance/README.md create mode 100644 library/cpp/l1_distance/l1_distance.h create mode 100644 library/cpp/l1_distance/ya.make create mode 100644 library/cpp/l2_distance/README.md create mode 100644 library/cpp/l2_distance/l2_distance.cpp create mode 100644 library/cpp/l2_distance/l2_distance.h create mode 100644 library/cpp/l2_distance/ya.make create mode 100644 ydb/library/yql/udfs/common/knn/knn-defines.h create mode 100644 ydb/library/yql/udfs/common/knn/knn-distance.h create mode 100644 ydb/library/yql/udfs/common/knn/knn-enumerator.h create mode 100644 ydb/library/yql/udfs/common/knn/knn-serializer.h create mode 100644 ydb/library/yql/udfs/common/knn/knn.cpp create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/result.json create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_BitSerialization_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_CosineDistance_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_CosineSimilarity_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceInvalidFormat_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameFormat_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameSize_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameTag_/extracted create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringBitVector_/extracted create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringEmpty_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringInvalid_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_EuclideanDistance_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_InnerProductSimilarity_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_Int8Serialization_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_LazyListSerialization_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_ListSerialization_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_ManhattanDistance_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_NullForwarding_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_OptionalAutoUnpacking_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/canondata/test.test_Uint8Serialization_/results.txt create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/BitSerialization.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/CosineDistance.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/CosineSimilarity.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceInvalidFormat.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameFormat.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameSize.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameTag.cfg create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameTag.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringBitVector.cfg create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringBitVector.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringEmpty.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringInvalid.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/EuclideanDistance.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/InnerProductSimilarity.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/Int8Serialization.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/LazyListSerialization.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/ListSerialization.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/ManhattanDistance.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/NullForwarding.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/OptionalAutoUnpacking.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/cases/Uint8Serialization.sql create mode 100644 ydb/library/yql/udfs/common/knn/test/ya.make create mode 100644 ydb/library/yql/udfs/common/knn/ya.make diff --git a/library/cpp/dot_product/README.md b/library/cpp/dot_product/README.md new file mode 100644 index 000000000000..516dcf31de31 --- /dev/null +++ b/library/cpp/dot_product/README.md @@ -0,0 +1,15 @@ +Библиотека для вычисления скалярного произведения векторов. +===================================================== + +Данная библиотека содержит функцию DotProduct, вычисляющую скалярное произведение векторов различных типов. +В отличии от наивной реализации, библиотека использует SSE и работает существенно быстрее. Для сравнения +можно посмотреть результаты бенчмарка. + +Типичное использование - замена кусков кода вроде: +``` +for (int i = 0; i < len; i++) + dot_product += a[i] * b[i]); +``` +на существенно более эффективный вызов ```DotProduct(a, b, len)```. + +Работает для типов i8, i32, float, double. diff --git a/library/cpp/dot_product/dot_product.cpp b/library/cpp/dot_product/dot_product.cpp new file mode 100644 index 000000000000..6be4d0a78f37 --- /dev/null +++ b/library/cpp/dot_product/dot_product.cpp @@ -0,0 +1,274 @@ +#include "dot_product.h" +#include "dot_product_sse.h" +#include "dot_product_avx2.h" +#include "dot_product_simple.h" + +#include +#include +#include +#include +#include +#include + +namespace NDotProductImpl { + i32 (*DotProductI8Impl)(const i8* lhs, const i8* rhs, size_t length) noexcept = &DotProductSimple; + ui32 (*DotProductUi8Impl)(const ui8* lhs, const ui8* rhs, size_t length) noexcept = &DotProductSimple; + i64 (*DotProductI32Impl)(const i32* lhs, const i32* rhs, size_t length) noexcept = &DotProductSimple; + float (*DotProductFloatImpl)(const float* lhs, const float* rhs, size_t length) noexcept = &DotProductSimple; + double (*DotProductDoubleImpl)(const double* lhs, const double* rhs, size_t length) noexcept = &DotProductSimple; + + namespace { + [[maybe_unused]] const int _ = [] { + if (!FromYaTest() && GetEnv("Y_NO_AVX_IN_DOT_PRODUCT") == "" && NX86::HaveAVX2() && NX86::HaveFMA()) { + DotProductI8Impl = &DotProductAvx2; + DotProductUi8Impl = &DotProductAvx2; + DotProductI32Impl = &DotProductAvx2; + DotProductFloatImpl = &DotProductAvx2; + DotProductDoubleImpl = &DotProductAvx2; + } else { +#ifdef ARCADIA_SSE + DotProductI8Impl = &DotProductSse; + DotProductUi8Impl = &DotProductSse; + DotProductI32Impl = &DotProductSse; + DotProductFloatImpl = &DotProductSse; + DotProductDoubleImpl = &DotProductSse; +#endif + } + return 0; + }(); + } +} + +#ifdef ARCADIA_SSE +float L2NormSquared(const float* v, size_t length) noexcept { + __m128 sum1 = _mm_setzero_ps(); + __m128 sum2 = _mm_setzero_ps(); + __m128 a1, a2, m1, m2; + + while (length >= 8) { + a1 = _mm_loadu_ps(v); + m1 = _mm_mul_ps(a1, a1); + + a2 = _mm_loadu_ps(v + 4); + sum1 = _mm_add_ps(sum1, m1); + + m2 = _mm_mul_ps(a2, a2); + sum2 = _mm_add_ps(sum2, m2); + + length -= 8; + v += 8; + } + + if (length >= 4) { + a1 = _mm_loadu_ps(v); + sum1 = _mm_add_ps(sum1, _mm_mul_ps(a1, a1)); + + length -= 4; + v += 4; + } + + sum1 = _mm_add_ps(sum1, sum2); + + if (length) { + switch (length) { + case 3: + a1 = _mm_set_ps(0.0f, v[2], v[1], v[0]); + break; + + case 2: + a1 = _mm_set_ps(0.0f, 0.0f, v[1], v[0]); + break; + + case 1: + a1 = _mm_set_ps(0.0f, 0.0f, 0.0f, v[0]); + break; + + default: + Y_UNREACHABLE(); + } + + sum1 = _mm_add_ps(sum1, _mm_mul_ps(a1, a1)); + } + + alignas(16) float res[4]; + _mm_store_ps(res, sum1); + + return res[0] + res[1] + res[2] + res[3]; +} + +template +Y_FORCE_INLINE +static void TriWayDotProductIteration(__m128& sumLL, __m128& sumLR, __m128& sumRR, const __m128 a, const __m128 b) { + if constexpr (computeLL) { + sumLL = _mm_add_ps(sumLL, _mm_mul_ps(a, a)); + } + if constexpr (computeLR) { + sumLR = _mm_add_ps(sumLR, _mm_mul_ps(a, b)); + } + if constexpr (computeRR) { + sumRR = _mm_add_ps(sumRR, _mm_mul_ps(b, b)); + } +} + + +template +static TTriWayDotProduct TriWayDotProductImpl(const float* lhs, const float* rhs, size_t length) noexcept { + __m128 sumLL1 = _mm_setzero_ps(); + __m128 sumLR1 = _mm_setzero_ps(); + __m128 sumRR1 = _mm_setzero_ps(); + __m128 sumLL2 = _mm_setzero_ps(); + __m128 sumLR2 = _mm_setzero_ps(); + __m128 sumRR2 = _mm_setzero_ps(); + + while (length >= 8) { + TriWayDotProductIteration(sumLL1, sumLR1, sumRR1, _mm_loadu_ps(lhs + 0), _mm_loadu_ps(rhs + 0)); + TriWayDotProductIteration(sumLL2, sumLR2, sumRR2, _mm_loadu_ps(lhs + 4), _mm_loadu_ps(rhs + 4)); + length -= 8; + lhs += 8; + rhs += 8; + } + + if (length >= 4) { + TriWayDotProductIteration(sumLL1, sumLR1, sumRR1, _mm_loadu_ps(lhs + 0), _mm_loadu_ps(rhs + 0)); + length -= 4; + lhs += 4; + rhs += 4; + } + + if constexpr (computeLL) { + sumLL1 = _mm_add_ps(sumLL1, sumLL2); + } + if constexpr (computeLR) { + sumLR1 = _mm_add_ps(sumLR1, sumLR2); + } + if constexpr (computeRR) { + sumRR1 = _mm_add_ps(sumRR1, sumRR2); + } + + if (length) { + __m128 a, b; + switch (length) { + case 3: + a = _mm_set_ps(0.0f, lhs[2], lhs[1], lhs[0]); + b = _mm_set_ps(0.0f, rhs[2], rhs[1], rhs[0]); + break; + case 2: + a = _mm_set_ps(0.0f, 0.0f, lhs[1], lhs[0]); + b = _mm_set_ps(0.0f, 0.0f, rhs[1], rhs[0]); + break; + case 1: + a = _mm_set_ps(0.0f, 0.0f, 0.0f, lhs[0]); + b = _mm_set_ps(0.0f, 0.0f, 0.0f, rhs[0]); + break; + default: + Y_UNREACHABLE(); + } + TriWayDotProductIteration(sumLL1, sumLR1, sumRR1, a, b); + } + + __m128 t0 = sumLL1; + __m128 t1 = sumLR1; + __m128 t2 = sumRR1; + __m128 t3 = _mm_setzero_ps(); + _MM_TRANSPOSE4_PS(t0, t1, t2, t3); + t0 = _mm_add_ps(t0, t1); + t0 = _mm_add_ps(t0, t2); + t0 = _mm_add_ps(t0, t3); + + alignas(16) float res[4]; + _mm_store_ps(res, t0); + TTriWayDotProduct result{res[0], res[1], res[2]}; + static constexpr const TTriWayDotProduct def; + // fill skipped fields with default values + if constexpr (!computeLL) { + result.LL = def.LL; + } + if constexpr (!computeLR) { + result.LR = def.LR; + } + if constexpr (!computeRR) { + result.RR = def.RR; + } + return result; +} + + +TTriWayDotProduct TriWayDotProduct(const float* lhs, const float* rhs, size_t length, unsigned mask) noexcept { + mask &= 0b111; + if (Y_LIKELY(mask == 0b111)) { // compute dot-product and length² of two vectors + return TriWayDotProductImpl(lhs, rhs, length); + } else if (Y_LIKELY(mask == 0b110 || mask == 0b011)) { // compute dot-product and length² of one vector + const bool computeLL = (mask == 0b110); + if (!computeLL) { + DoSwap(lhs, rhs); + } + auto result = TriWayDotProductImpl(lhs, rhs, length); + if (!computeLL) { + DoSwap(result.LL, result.RR); + } + return result; + } else { + // dispatch unlikely & sparse cases + TTriWayDotProduct result{}; + switch(mask) { + case 0b000: + break; + case 0b100: + result.LL = L2NormSquared(lhs, length); + break; + case 0b010: + result.LR = DotProduct(lhs, rhs, length); + break; + case 0b001: + result.RR = L2NormSquared(rhs, length); + break; + case 0b101: + result.LL = L2NormSquared(lhs, length); + result.RR = L2NormSquared(rhs, length); + break; + default: + Y_UNREACHABLE(); + } + return result; + } +} + +#else + +float L2NormSquared(const float* v, size_t length) noexcept { + return DotProduct(v, v, length); +} + +TTriWayDotProduct TriWayDotProduct(const float* lhs, const float* rhs, size_t length, unsigned mask) noexcept { + TTriWayDotProduct result; + if (mask & static_cast(ETriWayDotProductComputeMask::LL)) { + result.LL = L2NormSquared(lhs, length); + } + if (mask & static_cast(ETriWayDotProductComputeMask::LR)) { + result.LR = DotProduct(lhs, rhs, length); + } + if (mask & static_cast(ETriWayDotProductComputeMask::RR)) { + result.RR = L2NormSquared(rhs, length); + } + return result; +} + +#endif // ARCADIA_SSE + +namespace NDotProduct { + void DisableAvx2() { +#ifdef ARCADIA_SSE + NDotProductImpl::DotProductI8Impl = &DotProductSse; + NDotProductImpl::DotProductUi8Impl = &DotProductSse; + NDotProductImpl::DotProductI32Impl = &DotProductSse; + NDotProductImpl::DotProductFloatImpl = &DotProductSse; + NDotProductImpl::DotProductDoubleImpl = &DotProductSse; +#else + NDotProductImpl::DotProductI8Impl = &DotProductSimple; + NDotProductImpl::DotProductUi8Impl = &DotProductSimple; + NDotProductImpl::DotProductI32Impl = &DotProductSimple; + NDotProductImpl::DotProductFloatImpl = &DotProductSimple; + NDotProductImpl::DotProductDoubleImpl = &DotProductSimple; +#endif + } +} diff --git a/library/cpp/dot_product/dot_product.h b/library/cpp/dot_product/dot_product.h new file mode 100644 index 000000000000..0765633abdbf --- /dev/null +++ b/library/cpp/dot_product/dot_product.h @@ -0,0 +1,96 @@ +#pragma once + +#include +#include + +#include + +/** + * Dot product (Inner product or scalar product) implementation using SSE when possible. + */ +namespace NDotProductImpl { + extern i32 (*DotProductI8Impl)(const i8* lhs, const i8* rhs, size_t length) noexcept; + extern ui32 (*DotProductUi8Impl)(const ui8* lhs, const ui8* rhs, size_t length) noexcept; + extern i64 (*DotProductI32Impl)(const i32* lhs, const i32* rhs, size_t length) noexcept; + extern float (*DotProductFloatImpl)(const float* lhs, const float* rhs, size_t length) noexcept; + extern double (*DotProductDoubleImpl)(const double* lhs, const double* rhs, size_t length) noexcept; +} + +Y_PURE_FUNCTION +inline i32 DotProduct(const i8* lhs, const i8* rhs, size_t length) noexcept { + return NDotProductImpl::DotProductI8Impl(lhs, rhs, length); +} + +Y_PURE_FUNCTION +inline ui32 DotProduct(const ui8* lhs, const ui8* rhs, size_t length) noexcept { + return NDotProductImpl::DotProductUi8Impl(lhs, rhs, length); +} + +Y_PURE_FUNCTION +inline i64 DotProduct(const i32* lhs, const i32* rhs, size_t length) noexcept { + return NDotProductImpl::DotProductI32Impl(lhs, rhs, length); +} + +Y_PURE_FUNCTION +inline float DotProduct(const float* lhs, const float* rhs, size_t length) noexcept { + return NDotProductImpl::DotProductFloatImpl(lhs, rhs, length); +} + +Y_PURE_FUNCTION +inline double DotProduct(const double* lhs, const double* rhs, size_t length) noexcept { + return NDotProductImpl::DotProductDoubleImpl(lhs, rhs, length); +} + +/** + * Dot product to itself + */ +Y_PURE_FUNCTION +float L2NormSquared(const float* v, size_t length) noexcept; + +// TODO(yazevnul): make `L2NormSquared` for double, this should be faster than `DotProduct` +// where `lhs == rhs` because it will save N load instructions. + +template +struct TTriWayDotProduct { + T LL = 1; + T LR = 0; + T RR = 1; +}; + +enum class ETriWayDotProductComputeMask: unsigned { + // basic + LL = 0b100, + LR = 0b010, + RR = 0b001, + + // useful combinations + All = 0b111, + Left = 0b110, // skip computation of R·R + Right = 0b011, // skip computation of L·L +}; + +Y_PURE_FUNCTION +TTriWayDotProduct TriWayDotProduct(const float* lhs, const float* rhs, size_t length, unsigned mask) noexcept; + +/** + * For two vectors L and R computes 3 dot-products: L·L, L·R, R·R + */ +Y_PURE_FUNCTION +static inline TTriWayDotProduct TriWayDotProduct(const float* lhs, const float* rhs, size_t length, ETriWayDotProductComputeMask mask = ETriWayDotProductComputeMask::All) noexcept { + return TriWayDotProduct(lhs, rhs, length, static_cast(mask)); +} + +namespace NDotProduct { + // Simpler wrapper allowing to use this functions as template argument. + template + struct TDotProduct { + using TResult = decltype(DotProduct(static_cast(nullptr), static_cast(nullptr), 0)); + Y_PURE_FUNCTION + inline TResult operator()(const T* l, const T* r, size_t length) const { + return DotProduct(l, r, length); + } + }; + + void DisableAvx2(); +} + diff --git a/library/cpp/dot_product/dot_product_avx2.cpp b/library/cpp/dot_product/dot_product_avx2.cpp new file mode 100644 index 000000000000..a0f7c169ee72 --- /dev/null +++ b/library/cpp/dot_product/dot_product_avx2.cpp @@ -0,0 +1,344 @@ +#include "dot_product_avx2.h" +#include "dot_product_simple.h" +#include "dot_product_sse.h" + +#if defined(_avx2_) && defined(_fma_) + +#include +#include +#include + +#include + +namespace { + constexpr i64 Bits(int n) { + return i64(-1) ^ ((i64(1) << (64 - n)) - 1); + } + + constexpr __m256 BlendMask64[8] = { + __m256i{Bits(64), Bits(64), Bits(64), Bits(64)}, + __m256i{0, Bits(64), Bits(64), Bits(64)}, + __m256i{0, 0, Bits(64), Bits(64)}, + __m256i{0, 0, 0, Bits(64)}, + }; + + constexpr __m256 BlendMask32[8] = { + __m256i{Bits(64), Bits(64), Bits(64), Bits(64)}, + __m256i{Bits(32), Bits(64), Bits(64), Bits(64)}, + __m256i{0, Bits(64), Bits(64), Bits(64)}, + __m256i{0, Bits(32), Bits(64), Bits(64)}, + __m256i{0, 0, Bits(64), Bits(64)}, + __m256i{0, 0, Bits(32), Bits(64)}, + __m256i{0, 0, 0, Bits(64)}, + __m256i{0, 0, 0, Bits(32)}, + }; + + constexpr __m128 BlendMask8[16] = { + __m128i{Bits(64), Bits(64)}, + __m128i{Bits(56), Bits(64)}, + __m128i{Bits(48), Bits(64)}, + __m128i{Bits(40), Bits(64)}, + __m128i{Bits(32), Bits(64)}, + __m128i{Bits(24), Bits(64)}, + __m128i{Bits(16), Bits(64)}, + __m128i{Bits(8), Bits(64)}, + __m128i{0, Bits(64)}, + __m128i{0, Bits(56)}, + __m128i{0, Bits(48)}, + __m128i{0, Bits(40)}, + __m128i{0, Bits(32)}, + __m128i{0, Bits(24)}, + __m128i{0, Bits(16)}, + __m128i{0, Bits(8)}, + }; + + // See https://stackoverflow.com/a/60109639 + // Horizontal sum of eight i32 values in an avx register + i32 HsumI32(__m256i v) { + __m128i x = _mm_add_epi32(_mm256_castsi256_si128(v), _mm256_extracti128_si256(v, 1)); + __m128i hi64 = _mm_unpackhi_epi64(x, x); + __m128i sum64 = _mm_add_epi32(hi64, x); + __m128i hi32 = _mm_shuffle_epi32(sum64, _MM_SHUFFLE(2, 3, 0, 1)); + __m128i sum32 = _mm_add_epi32(sum64, hi32); + return _mm_cvtsi128_si32(sum32); + } + + // Horizontal sum of four i64 values in an avx register + i64 HsumI64(__m256i v) { + __m128i x = _mm_add_epi64(_mm256_castsi256_si128(v), _mm256_extracti128_si256(v, 1)); + return _mm_cvtsi128_si64(x) + _mm_extract_epi64(x, 1); + } + + // Horizontal sum of eight float values in an avx register + float HsumFloat(__m256 v) { + __m256 y = _mm256_permute2f128_ps(v, v, 1); + v = _mm256_add_ps(v, y); + v = _mm256_hadd_ps(v, v); + return _mm256_cvtss_f32(_mm256_hadd_ps(v, v)); + } + + // Horizontal sum of four double values in an avx register + double HsumDouble(__m256 v) { + __m128d x = _mm_add_pd(_mm256_castpd256_pd128(v), _mm256_extractf128_pd(v, 1)); + x = _mm_add_pd(x, _mm_shuffle_pd(x, x, 1)); + return _mm_cvtsd_f64(x); + } + + __m128i Load128i(const void* ptr) { + return _mm_loadu_si128((const __m128i*)ptr); + } + + __m256i Load256i(const void* ptr) { + return _mm256_loadu_si256((const __m256i*)ptr); + } + + // Unrolled dot product for relatively small sizes + // The loop with known upper bound is unrolled by the compiler, no need to do anything special about it + template + i32 DotProductInt8Avx2_Unroll(const TInput* lhs, const TInput* rhs, TExtend extend) noexcept { + static_assert(size % 16 == 0); + auto sum = _mm256_setzero_ps(); + for (size_t i = 0; i != size; i += 16) { + sum = _mm256_add_epi32(sum, _mm256_madd_epi16(extend(Load128i(lhs + i)), extend(Load128i(rhs + i)))); + } + + return HsumI32(sum); + } + + template + i32 DotProductInt8Avx2(const TInput* lhs, const TInput* rhs, size_t length, TExtend extend) noexcept { + // Fully unrolled versions for small multiples for 16 + switch (length) { + case 16: return DotProductInt8Avx2_Unroll<16>(lhs, rhs, extend); + case 32: return DotProductInt8Avx2_Unroll<32>(lhs, rhs, extend); + case 48: return DotProductInt8Avx2_Unroll<48>(lhs, rhs, extend); + case 64: return DotProductInt8Avx2_Unroll<64>(lhs, rhs, extend); + } + + __m256i sum = _mm256_setzero_ps(); + + if (const auto leftover = length % 16; leftover != 0) { + auto a = _mm_blendv_epi8( + Load128i(lhs), _mm_setzero_ps(), BlendMask8[leftover]); + auto b = _mm_blendv_epi8( + Load128i(rhs), _mm_setzero_ps(), BlendMask8[leftover]); + + sum = _mm256_madd_epi16(extend(a), extend(b)); + + lhs += leftover; + rhs += leftover; + length -= leftover; + } + + while (length >= 32) { + const auto l0 = extend(Load128i(lhs)); + const auto r0 = extend(Load128i(rhs)); + const auto l1 = extend(Load128i(lhs + 16)); + const auto r1 = extend(Load128i(rhs + 16)); + + const auto s0 = _mm256_madd_epi16(l0, r0); + const auto s1 = _mm256_madd_epi16(l1, r1); + + sum = _mm256_add_epi32(sum, _mm256_add_epi32(s0, s1)); + + lhs += 32; + rhs += 32; + length -= 32; + } + + if (length > 0) { + auto l = extend(Load128i(lhs)); + auto r = extend(Load128i(rhs)); + + sum = _mm256_add_epi32(sum, _mm256_madd_epi16(l, r)); + } + + return HsumI32(sum); + } +} + +i32 DotProductAvx2(const i8* lhs, const i8* rhs, size_t length) noexcept { + if (length < 16) { + return DotProductSse(lhs, rhs, length); + } + return DotProductInt8Avx2(lhs, rhs, length, [](const __m128i x) { + return _mm256_cvtepi8_epi16(x); + }); +} + +ui32 DotProductAvx2(const ui8* lhs, const ui8* rhs, size_t length) noexcept { + if (length < 16) { + return DotProductSse(lhs, rhs, length); + } + return DotProductInt8Avx2(lhs, rhs, length, [](const __m128i x) { + return _mm256_cvtepu8_epi16(x); + }); +} + +i64 DotProductAvx2(const i32* lhs, const i32* rhs, size_t length) noexcept { + if (length < 16) { + return DotProductSse(lhs, rhs, length); + } + __m256i res = _mm256_setzero_ps(); + + if (const auto leftover = length % 8; leftover != 0) { + // Use floating-point blendv. Who cares as long as the size is right. + __m256i a = _mm256_blendv_ps( + Load256i(lhs), _mm256_setzero_ps(), BlendMask32[leftover]); + __m256i b = _mm256_blendv_ps( + Load256i(rhs), _mm256_setzero_ps(), BlendMask32[leftover]); + + res = _mm256_mul_epi32(a, b); + a = _mm256_alignr_epi8(a, a, 4); + b = _mm256_alignr_epi8(b, b, 4); + res = _mm256_add_epi64(_mm256_mul_epi32(a, b), res); + + lhs += leftover; + rhs += leftover; + length -= leftover; + } + + while (length >= 8) { + __m256i a = Load256i(lhs); + __m256i b = Load256i(rhs); + res = _mm256_add_epi64(_mm256_mul_epi32(a, b), res); // This is lower parts multiplication + a = _mm256_alignr_epi8(a, a, 4); + b = _mm256_alignr_epi8(b, b, 4); + res = _mm256_add_epi64(_mm256_mul_epi32(a, b), res); + rhs += 8; + lhs += 8; + length -= 8; + } + + return HsumI64(res); +} + +float DotProductAvx2(const float* lhs, const float* rhs, size_t length) noexcept { + if (length < 16) { + return DotProductSse(lhs, rhs, length); + } + __m256 sum1 = _mm256_setzero_ps(); + __m256 sum2 = _mm256_setzero_ps(); + __m256 a1, b1, a2, b2; + + if (const auto leftover = length % 8; leftover != 0) { + a1 = _mm256_blendv_ps( + _mm256_loadu_ps(lhs), _mm256_setzero_ps(), BlendMask32[leftover]); + b1 = _mm256_blendv_ps( + _mm256_loadu_ps(rhs), _mm256_setzero_ps(), BlendMask32[leftover]); + sum1 = _mm256_mul_ps(a1, b1); + lhs += leftover; + rhs += leftover; + length -= leftover; + } + + while (length >= 16) { + a1 = _mm256_loadu_ps(lhs); + b1 = _mm256_loadu_ps(rhs); + a2 = _mm256_loadu_ps(lhs + 8); + b2 = _mm256_loadu_ps(rhs + 8); + + sum1 = _mm256_fmadd_ps(a1, b1, sum1); + sum2 = _mm256_fmadd_ps(a2, b2, sum2); + + length -= 16; + lhs += 16; + rhs += 16; + } + + if (length > 0) { + a1 = _mm256_loadu_ps(lhs); + b1 = _mm256_loadu_ps(rhs); + sum1 = _mm256_fmadd_ps(a1, b1, sum1); + } + + return HsumFloat(_mm256_add_ps(sum1, sum2)); +} + +double DotProductAvx2(const double* lhs, const double* rhs, size_t length) noexcept { + if (length < 16) { + return DotProductSse(lhs, rhs, length); + } + __m256d sum1 = _mm256_setzero_pd(); + __m256d sum2 = _mm256_setzero_pd(); + __m256d a1, b1, a2, b2; + + if (const auto leftover = length % 4; leftover != 0) { + a1 = _mm256_blendv_pd( + _mm256_loadu_pd(lhs), _mm256_setzero_ps(), BlendMask64[leftover]); + b1 = _mm256_blendv_pd( + _mm256_loadu_pd(rhs), _mm256_setzero_ps(), BlendMask64[leftover]); + sum1 = _mm256_mul_pd(a1, b1); + lhs += leftover; + rhs += leftover; + length -= leftover; + } + + while (length >= 8) { + a1 = _mm256_loadu_pd(lhs); + b1 = _mm256_loadu_pd(rhs); + a2 = _mm256_loadu_pd(lhs + 4); + b2 = _mm256_loadu_pd(rhs + 4); + + sum1 = _mm256_fmadd_pd(a1, b1, sum1); + sum2 = _mm256_fmadd_pd(a2, b2, sum2); + + length -= 8; + lhs += 8; + rhs += 8; + } + + if (length > 0) { + a1 = _mm256_loadu_pd(lhs); + b1 = _mm256_loadu_pd(rhs); + sum1 = _mm256_fmadd_pd(a1, b1, sum1); + } + + return HsumDouble(_mm256_add_pd(sum1, sum2)); +} + +#elif defined(ARCADIA_SSE) + +i32 DotProductAvx2(const i8* lhs, const i8* rhs, size_t length) noexcept { + return DotProductSse(lhs, rhs, length); +} + +ui32 DotProductAvx2(const ui8* lhs, const ui8* rhs, size_t length) noexcept { + return DotProductSse(lhs, rhs, length); +} + +i64 DotProductAvx2(const i32* lhs, const i32* rhs, size_t length) noexcept { + return DotProductSse(lhs, rhs, length); +} + +float DotProductAvx2(const float* lhs, const float* rhs, size_t length) noexcept { + return DotProductSse(lhs, rhs, length); +} + +double DotProductAvx2(const double* lhs, const double* rhs, size_t length) noexcept { + return DotProductSse(lhs, rhs, length); +} + +#else + +i32 DotProductAvx2(const i8* lhs, const i8* rhs, size_t length) noexcept { + return DotProductSimple(lhs, rhs, length); +} + +ui32 DotProductAvx2(const ui8* lhs, const ui8* rhs, size_t length) noexcept { + return DotProductSimple(lhs, rhs, length); +} + +i64 DotProductAvx2(const i32* lhs, const i32* rhs, size_t length) noexcept { + return DotProductSimple(lhs, rhs, length); +} + +float DotProductAvx2(const float* lhs, const float* rhs, size_t length) noexcept { + return DotProductSimple(lhs, rhs, length); +} + +double DotProductAvx2(const double* lhs, const double* rhs, size_t length) noexcept { + return DotProductSimple(lhs, rhs, length); +} + +#endif diff --git a/library/cpp/dot_product/dot_product_avx2.h b/library/cpp/dot_product/dot_product_avx2.h new file mode 100644 index 000000000000..715f151f4486 --- /dev/null +++ b/library/cpp/dot_product/dot_product_avx2.h @@ -0,0 +1,19 @@ +#pragma once + +#include +#include + +Y_PURE_FUNCTION +i32 DotProductAvx2(const i8* lhs, const i8* rhs, size_t length) noexcept; + +Y_PURE_FUNCTION +ui32 DotProductAvx2(const ui8* lhs, const ui8* rhs, size_t length) noexcept; + +Y_PURE_FUNCTION +i64 DotProductAvx2(const i32* lhs, const i32* rhs, size_t length) noexcept; + +Y_PURE_FUNCTION +float DotProductAvx2(const float* lhs, const float* rhs, size_t length) noexcept; + +Y_PURE_FUNCTION +double DotProductAvx2(const double* lhs, const double* rhs, size_t length) noexcept; diff --git a/library/cpp/dot_product/dot_product_simple.cpp b/library/cpp/dot_product/dot_product_simple.cpp new file mode 100644 index 000000000000..02891c8a2280 --- /dev/null +++ b/library/cpp/dot_product/dot_product_simple.cpp @@ -0,0 +1,44 @@ +#include "dot_product_simple.h" + +namespace { + template + static Res DotProductSimpleImpl(const Number* lhs, const Number* rhs, size_t length) noexcept { + Res s0 = 0; + Res s1 = 0; + Res s2 = 0; + Res s3 = 0; + + while (length >= 4) { + s0 += static_cast(lhs[0]) * static_cast(rhs[0]); + s1 += static_cast(lhs[1]) * static_cast(rhs[1]); + s2 += static_cast(lhs[2]) * static_cast(rhs[2]); + s3 += static_cast(lhs[3]) * static_cast(rhs[3]); + lhs += 4; + rhs += 4; + length -= 4; + } + + while (length--) { + s0 += static_cast(*lhs++) * static_cast(*rhs++); + } + + return s0 + s1 + s2 + s3; + } +} + +float DotProductSimple(const float* lhs, const float* rhs, size_t length) noexcept { + return DotProductSimpleImpl(lhs, rhs, length); +} + +double DotProductSimple(const double* lhs, const double* rhs, size_t length) noexcept { + return DotProductSimpleImpl(lhs, rhs, length); +} + +ui32 DotProductUI4Simple(const ui8* lhs, const ui8* rhs, size_t lengtInBytes) noexcept { + ui32 res = 0; + for (size_t i = 0; i < lengtInBytes; ++i) { + res += static_cast(lhs[i] & 0x0f) * static_cast(rhs[i] & 0x0f); + res += static_cast(lhs[i] & 0xf0) * static_cast(rhs[i] & 0xf0) >> 8; + } + return res; +} diff --git a/library/cpp/dot_product/dot_product_simple.h b/library/cpp/dot_product/dot_product_simple.h new file mode 100644 index 000000000000..dd13dd7592cd --- /dev/null +++ b/library/cpp/dot_product/dot_product_simple.h @@ -0,0 +1,40 @@ +#pragma once + +#include +#include + +#include + +/** + * Dot product implementation without SSE optimizations. + */ +Y_PURE_FUNCTION +inline ui32 DotProductSimple(const ui8* lhs, const ui8* rhs, size_t length) noexcept { + return std::inner_product(lhs, lhs + length, rhs, static_cast(0u), + [](ui32 x1, ui16 x2) {return x1 + x2;}, + [](ui16 x1, ui8 x2) {return x1 * x2;}); +} + +Y_PURE_FUNCTION +inline i32 DotProductSimple(const i8* lhs, const i8* rhs, size_t length) noexcept { + return std::inner_product(lhs, lhs + length, rhs, static_cast(0), + [](i32 x1, i16 x2) {return x1 + x2;}, + [](i16 x1, i8 x2) {return x1 * x2;}); +} + +Y_PURE_FUNCTION +inline i64 DotProductSimple(const i32* lhs, const i32* rhs, size_t length) noexcept { + return std::inner_product(lhs, lhs + length, rhs, static_cast(0), + [](i64 x1, i64 x2) {return x1 + x2;}, + [](i64 x1, i32 x2) {return x1 * x2;}); +} + +Y_PURE_FUNCTION +float DotProductSimple(const float* lhs, const float* rhs, size_t length) noexcept; + +Y_PURE_FUNCTION +double DotProductSimple(const double* lhs, const double* rhs, size_t length) noexcept; + +Y_PURE_FUNCTION +ui32 DotProductUI4Simple(const ui8* lhs, const ui8* rhs, size_t lengtInBytes) noexcept; + diff --git a/library/cpp/dot_product/dot_product_sse.cpp b/library/cpp/dot_product/dot_product_sse.cpp new file mode 100644 index 000000000000..5256cfe98aff --- /dev/null +++ b/library/cpp/dot_product/dot_product_sse.cpp @@ -0,0 +1,219 @@ +#include "dot_product_sse.h" + +#include +#include +#include + +#ifdef ARCADIA_SSE +i32 DotProductSse(const i8* lhs, const i8* rhs, size_t length) noexcept { + const __m128i zero = _mm_setzero_si128(); + __m128i resVec = zero; + while (length >= 16) { + __m128i lVec = _mm_loadu_si128((const __m128i*)lhs); + __m128i rVec = _mm_loadu_si128((const __m128i*)rhs); + +#ifdef _sse4_1_ + __m128i lLo = _mm_cvtepi8_epi16(lVec); + __m128i rLo = _mm_cvtepi8_epi16(rVec); + __m128i lHi = _mm_cvtepi8_epi16(_mm_alignr_epi8(lVec, lVec, 8)); + __m128i rHi = _mm_cvtepi8_epi16(_mm_alignr_epi8(rVec, rVec, 8)); +#else + __m128i lLo = _mm_srai_epi16(_mm_unpacklo_epi8(zero, lVec), 8); + __m128i rLo = _mm_srai_epi16(_mm_unpacklo_epi8(zero, rVec), 8); + __m128i lHi = _mm_srai_epi16(_mm_unpackhi_epi8(zero, lVec), 8); + __m128i rHi = _mm_srai_epi16(_mm_unpackhi_epi8(zero, rVec), 8); +#endif + resVec = _mm_add_epi32(resVec, + _mm_add_epi32(_mm_madd_epi16(lLo, rLo), _mm_madd_epi16(lHi, rHi))); + + lhs += 16; + rhs += 16; + length -= 16; + } + + alignas(16) i32 res[4]; + _mm_store_si128((__m128i*)res, resVec); + i32 sum = res[0] + res[1] + res[2] + res[3]; + for (size_t i = 0; i < length; ++i) { + sum += static_cast(lhs[i]) * static_cast(rhs[i]); + } + + return sum; +} + +ui32 DotProductSse(const ui8* lhs, const ui8* rhs, size_t length) noexcept { + const __m128i zero = _mm_setzero_si128(); + __m128i resVec = zero; + while (length >= 16) { + __m128i lVec = _mm_loadu_si128((const __m128i*)lhs); + __m128i rVec = _mm_loadu_si128((const __m128i*)rhs); + + __m128i lLo = _mm_unpacklo_epi8(lVec, zero); + __m128i rLo = _mm_unpacklo_epi8(rVec, zero); + __m128i lHi = _mm_unpackhi_epi8(lVec, zero); + __m128i rHi = _mm_unpackhi_epi8(rVec, zero); + + resVec = _mm_add_epi32(resVec, + _mm_add_epi32(_mm_madd_epi16(lLo, rLo), _mm_madd_epi16(lHi, rHi))); + + lhs += 16; + rhs += 16; + length -= 16; + } + + alignas(16) i32 res[4]; + _mm_store_si128((__m128i*)res, resVec); + i32 sum = res[0] + res[1] + res[2] + res[3]; + for (size_t i = 0; i < length; ++i) { + sum += static_cast(lhs[i]) * static_cast(rhs[i]); + } + + return static_cast(sum); +} +#ifdef _sse4_1_ + +i64 DotProductSse(const i32* lhs, const i32* rhs, size_t length) noexcept { + __m128i zero = _mm_setzero_si128(); + __m128i res = zero; + + while (length >= 4) { + __m128i a = _mm_loadu_si128((const __m128i*)lhs); + __m128i b = _mm_loadu_si128((const __m128i*)rhs); + res = _mm_add_epi64(_mm_mul_epi32(a, b), res); // This is lower parts multiplication + a = _mm_alignr_epi8(a, a, 4); + b = _mm_alignr_epi8(b, b, 4); + res = _mm_add_epi64(_mm_mul_epi32(a, b), res); + rhs += 4; + lhs += 4; + length -= 4; + } + + alignas(16) i64 r[2]; + _mm_store_si128((__m128i*)r, res); + i64 sum = r[0] + r[1]; + + for (size_t i = 0; i < length; ++i) { + sum += static_cast(lhs[i]) * static_cast(rhs[i]); + } + + return sum; +} + +#else +#include "dot_product_simple.h" + +i64 DotProductSse(const i32* lhs, const i32* rhs, size_t length) noexcept { + return DotProductSimple(lhs, rhs, length); +} + +#endif + +float DotProductSse(const float* lhs, const float* rhs, size_t length) noexcept { + __m128 sum1 = _mm_setzero_ps(); + __m128 sum2 = _mm_setzero_ps(); + __m128 a1, b1, a2, b2, m1, m2; + + while (length >= 8) { + a1 = _mm_loadu_ps(lhs); + b1 = _mm_loadu_ps(rhs); + m1 = _mm_mul_ps(a1, b1); + + a2 = _mm_loadu_ps(lhs + 4); + sum1 = _mm_add_ps(sum1, m1); + + b2 = _mm_loadu_ps(rhs + 4); + m2 = _mm_mul_ps(a2, b2); + + sum2 = _mm_add_ps(sum2, m2); + + length -= 8; + lhs += 8; + rhs += 8; + } + + if (length >= 4) { + a1 = _mm_loadu_ps(lhs); + b1 = _mm_loadu_ps(rhs); + sum1 = _mm_add_ps(sum1, _mm_mul_ps(a1, b1)); + + length -= 4; + lhs += 4; + rhs += 4; + } + + sum1 = _mm_add_ps(sum1, sum2); + + if (length) { + switch (length) { + case 3: + a1 = _mm_set_ps(0.0f, lhs[2], lhs[1], lhs[0]); + b1 = _mm_set_ps(0.0f, rhs[2], rhs[1], rhs[0]); + break; + + case 2: + a1 = _mm_set_ps(0.0f, 0.0f, lhs[1], lhs[0]); + b1 = _mm_set_ps(0.0f, 0.0f, rhs[1], rhs[0]); + break; + + case 1: + a1 = _mm_set_ps(0.0f, 0.0f, 0.0f, lhs[0]); + b1 = _mm_set_ps(0.0f, 0.0f, 0.0f, rhs[0]); + break; + + default: + Y_UNREACHABLE(); + } + + sum1 = _mm_add_ps(sum1, _mm_mul_ps(a1, b1)); + } + + alignas(16) float res[4]; + _mm_store_ps(res, sum1); + + return res[0] + res[1] + res[2] + res[3]; +} + +double DotProductSse(const double* lhs, const double* rhs, size_t length) noexcept { + __m128d sum1 = _mm_setzero_pd(); + __m128d sum2 = _mm_setzero_pd(); + __m128d a1, b1, a2, b2; + + while (length >= 4) { + a1 = _mm_loadu_pd(lhs); + b1 = _mm_loadu_pd(rhs); + sum1 = _mm_add_pd(sum1, _mm_mul_pd(a1, b1)); + + a2 = _mm_loadu_pd(lhs + 2); + b2 = _mm_loadu_pd(rhs + 2); + sum2 = _mm_add_pd(sum2, _mm_mul_pd(a2, b2)); + + length -= 4; + lhs += 4; + rhs += 4; + } + + if (length >= 2) { + a1 = _mm_loadu_pd(lhs); + b1 = _mm_loadu_pd(rhs); + sum1 = _mm_add_pd(sum1, _mm_mul_pd(a1, b1)); + + length -= 2; + lhs += 2; + rhs += 2; + } + + sum1 = _mm_add_pd(sum1, sum2); + + if (length > 0) { + a1 = _mm_set_pd(lhs[0], 0.0); + b1 = _mm_set_pd(rhs[0], 0.0); + sum1 = _mm_add_pd(sum1, _mm_mul_pd(a1, b1)); + } + + alignas(16) double res[2]; + _mm_store_pd(res, sum1); + + return res[0] + res[1]; +} + +#endif // ARCADIA_SSE diff --git a/library/cpp/dot_product/dot_product_sse.h b/library/cpp/dot_product/dot_product_sse.h new file mode 100644 index 000000000000..814736007d08 --- /dev/null +++ b/library/cpp/dot_product/dot_product_sse.h @@ -0,0 +1,19 @@ +#pragma once + +#include +#include + +Y_PURE_FUNCTION +i32 DotProductSse(const i8* lhs, const i8* rhs, size_t length) noexcept; + +Y_PURE_FUNCTION +ui32 DotProductSse(const ui8* lhs, const ui8* rhs, size_t length) noexcept; + +Y_PURE_FUNCTION +i64 DotProductSse(const i32* lhs, const i32* rhs, size_t length) noexcept; + +Y_PURE_FUNCTION +float DotProductSse(const float* lhs, const float* rhs, size_t length) noexcept; + +Y_PURE_FUNCTION +double DotProductSse(const double* lhs, const double* rhs, size_t length) noexcept; diff --git a/library/cpp/dot_product/ya.make b/library/cpp/dot_product/ya.make new file mode 100644 index 000000000000..b308967b4be7 --- /dev/null +++ b/library/cpp/dot_product/ya.make @@ -0,0 +1,20 @@ +LIBRARY() + +SRCS( + dot_product.cpp + dot_product_sse.cpp + dot_product_simple.cpp +) + +IF (USE_SSE4 == "yes" AND OS_LINUX == "yes") + SRC_C_AVX2(dot_product_avx2.cpp -mfma) +ELSE() + SRC(dot_product_avx2.cpp) +ENDIF() + +PEERDIR( + library/cpp/sse + library/cpp/testing/common +) + +END() diff --git a/library/cpp/l1_distance/README.md b/library/cpp/l1_distance/README.md new file mode 100644 index 000000000000..a25f09f12a33 --- /dev/null +++ b/library/cpp/l1_distance/README.md @@ -0,0 +1,15 @@ +Библиотека для вычисления расстояния между векторами. +===================================================== + +Данная библиотека содержит функцию L1Distance, вычисляющую расстояние между векторами разных типов. +В отличии от наивной реализации, библиотека использует SSE и работает существенно быстрее. Для +сравнения можно посмотреть результаты бенчмарка. + +Типичное использование - замена кусков кода вроде: +``` +for (int i = 0; i < len; i++) + dist += std::abs(a[i] - b[i]); +``` +на существенно более эффективный вызов ```L1Distance(a, b, len)```. + +Работает для типов i8, ui8, i32, ui32, float, double. diff --git a/library/cpp/l1_distance/l1_distance.h b/library/cpp/l1_distance/l1_distance.h new file mode 100644 index 000000000000..71545cbe3372 --- /dev/null +++ b/library/cpp/l1_distance/l1_distance.h @@ -0,0 +1,477 @@ +#pragma once + +#include + +#include +#include +#include +#include + +namespace NL1Distance { + namespace NPrivate { + template + inline T AbsDelta(T a, T b) { + if (a < b) + return b - a; + return a - b; + } + + template + inline Result L1DistanceImpl(const Number* lhs, const Number* rhs, int length) { + Result sum = 0; + + for (int i = 0; i < length; i++) + sum += AbsDelta(lhs[i], rhs[i]); + + return sum; + } + + template + inline Result L1DistanceImpl2(const Number* lhs, const Number* rhs, int length) { + Result s0 = 0; + Result s1 = 0; + + while (length >= 2) { + s0 += AbsDelta(lhs[0], rhs[0]); + s1 += AbsDelta(lhs[1], rhs[1]); + lhs += 2; + rhs += 2; + length -= 2; + } + + while (length--) + s0 += AbsDelta(*lhs++, *rhs++); + + return s0 + s1; + } + + template + inline Result L1DistanceImpl4(const Number* lhs, const Number* rhs, int length) { + Result s0 = 0; + Result s1 = 0; + Result s2 = 0; + Result s3 = 0; + + while (length >= 4) { + s0 += AbsDelta(lhs[0], rhs[0]); + s1 += AbsDelta(lhs[1], rhs[1]); + s2 += AbsDelta(lhs[2], rhs[2]); + s3 += AbsDelta(lhs[3], rhs[3]); + lhs += 4; + rhs += 4; + length -= 4; + } + + while (length--) + s0 += AbsDelta(*lhs++, *rhs++); + + return s0 + s1 + s2 + s3; + } + + template + inline Result L1DistanceImplUI4(const ui8* lhs, const ui8* rhs, int lengtInBytes) { + Result sum = 0; + + for (int i = 0; i < lengtInBytes; ++i) { + sum += AbsDelta(lhs[i] & 0x0f, rhs[i] & 0x0f); + sum += AbsDelta(lhs[i] & 0xf0, rhs[i] & 0xf0) >> 4; + } + + return sum; + } + +#ifdef ARCADIA_SSE + static const __m128i MASK_UI4_1 = _mm_set_epi8(0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f); + static const __m128i MASK_UI4_2 = _mm_set_epi8(0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0); + + + Y_FORCE_INLINE ui32 L1Distance96Ui8(const ui8* lhs, const ui8* rhs) { + __m128i x1 = _mm_loadu_si128((const __m128i*)&lhs[0]); + __m128i y1 = _mm_loadu_si128((const __m128i*)&rhs[0]); + + __m128i sum = _mm_sad_epu8(x1, y1); + + __m128i x2 = _mm_loadu_si128((const __m128i*)&lhs[16]); + __m128i y2 = _mm_loadu_si128((const __m128i*)&rhs[16]); + + sum = _mm_add_epi64(sum, _mm_sad_epu8(x2, y2)); + + __m128i x3 = _mm_loadu_si128((const __m128i*)&lhs[32]); + __m128i y3 = _mm_loadu_si128((const __m128i*)&rhs[32]); + + sum = _mm_add_epi64(sum, _mm_sad_epu8(x3, y3)); + + __m128i x4 = _mm_loadu_si128((const __m128i*)&lhs[48]); + __m128i y4 = _mm_loadu_si128((const __m128i*)&rhs[48]); + + sum = _mm_add_epi64(sum, _mm_sad_epu8(x4, y4)); + + __m128i x5 = _mm_loadu_si128((const __m128i*)&lhs[64]); + __m128i y5 = _mm_loadu_si128((const __m128i*)&rhs[64]); + + sum = _mm_add_epi64(sum, _mm_sad_epu8(x5, y5)); + + __m128i x6 = _mm_loadu_si128((const __m128i*)&lhs[80]); + __m128i y6 = _mm_loadu_si128((const __m128i*)&rhs[80]); + + sum = _mm_add_epi64(sum, _mm_sad_epu8(x6, y6)); + return _mm_cvtsi128_si32(sum) + _mm_cvtsi128_si32(_mm_shuffle_epi32(sum, _MM_SHUFFLE(2, 2, 2, 2))); + } + + Y_FORCE_INLINE ui32 L1Distance96Ui4(const ui8* lhs, const ui8* rhs) { + __m128i x1 = _mm_loadu_si128((const __m128i*)&lhs[0]); + __m128i y1 = _mm_loadu_si128((const __m128i*)&rhs[0]); + __m128i sum1 = _mm_sad_epu8(_mm_and_si128(x1, MASK_UI4_1), _mm_and_si128(y1, MASK_UI4_1)); + __m128i sum2 = _mm_sad_epu8(_mm_and_si128(x1, MASK_UI4_2), _mm_and_si128(y1, MASK_UI4_2)); + + __m128i x2 = _mm_loadu_si128((const __m128i*)&lhs[16]); + __m128i y2 = _mm_loadu_si128((const __m128i*)&rhs[16]); + sum1 = _mm_add_epi64(sum1, _mm_sad_epu8(_mm_and_si128(x2, MASK_UI4_1), _mm_and_si128(y2, MASK_UI4_1))); + sum2 = _mm_add_epi64(sum2, _mm_sad_epu8(_mm_and_si128(x2, MASK_UI4_2), _mm_and_si128(y2, MASK_UI4_2))); + + __m128i x3 = _mm_loadu_si128((const __m128i*)&lhs[32]); + __m128i y3 = _mm_loadu_si128((const __m128i*)&rhs[32]); + sum1 = _mm_add_epi64(sum1, _mm_sad_epu8(_mm_and_si128(x3, MASK_UI4_1), _mm_and_si128(y3, MASK_UI4_1))); + sum2 = _mm_add_epi64(sum2, _mm_sad_epu8(_mm_and_si128(x3, MASK_UI4_2), _mm_and_si128(y3, MASK_UI4_2))); + + __m128i x4 = _mm_loadu_si128((const __m128i*)&lhs[48]); + __m128i y4 = _mm_loadu_si128((const __m128i*)&rhs[48]); + sum1 = _mm_add_epi64(sum1, _mm_sad_epu8(_mm_and_si128(x4, MASK_UI4_1), _mm_and_si128(y4, MASK_UI4_1))); + sum2 = _mm_add_epi64(sum2, _mm_sad_epu8(_mm_and_si128(x4, MASK_UI4_2), _mm_and_si128(y4, MASK_UI4_2))); + + __m128i x5 = _mm_loadu_si128((const __m128i*)&lhs[64]); + __m128i y5 = _mm_loadu_si128((const __m128i*)&rhs[64]); + sum1 = _mm_add_epi64(sum1, _mm_sad_epu8(_mm_and_si128(x5, MASK_UI4_1), _mm_and_si128(y5, MASK_UI4_1))); + sum2 = _mm_add_epi64(sum2, _mm_sad_epu8(_mm_and_si128(x5, MASK_UI4_2), _mm_and_si128(y5, MASK_UI4_2))); + + __m128i x6 = _mm_loadu_si128((const __m128i*)&lhs[80]); + __m128i y6 = _mm_loadu_si128((const __m128i*)&rhs[80]); + sum1 = _mm_add_epi64(sum1, _mm_sad_epu8(_mm_and_si128(x6, MASK_UI4_1), _mm_and_si128(y6, MASK_UI4_1))); + sum2 = _mm_add_epi64(sum2, _mm_sad_epu8(_mm_and_si128(x6, MASK_UI4_2), _mm_and_si128(y6, MASK_UI4_2))); + + return _mm_cvtsi128_si32(sum1) + _mm_cvtsi128_si32(_mm_shuffle_epi32(sum1, _MM_SHUFFLE(2, 2, 2, 2))) + + ((_mm_cvtsi128_si32(sum2) + _mm_cvtsi128_si32(_mm_shuffle_epi32(sum2, _MM_SHUFFLE(2, 2, 2, 2)))) >> 4); + } +#endif // ARCADIA_SSE + } // namespace NPrivate +} + +/** + * L1Distance (sum(abs(l[i] - r[i]))) implementation using SSE when possible. + */ +#ifdef ARCADIA_SSE + +Y_FORCE_INLINE ui32 L1Distance(const i8* lhs, const i8* rhs, int length) { + static const __m128i unsignedToSignedDiff = _mm_set_epi8( + -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128); + __m128i resVec = _mm_setzero_si128(); + + while (length >= 16) { + __m128i lVec = _mm_sub_epi8(_mm_loadu_si128((const __m128i*)lhs), unsignedToSignedDiff); + __m128i rVec = _mm_sub_epi8(_mm_loadu_si128((const __m128i*)rhs), unsignedToSignedDiff); + + resVec = _mm_add_epi64(_mm_sad_epu8(lVec, rVec), resVec); + + lhs += 16; + rhs += 16; + length -= 16; + } + + alignas(16) i64 res[2]; + _mm_store_si128((__m128i*)res, resVec); + ui32 sum = res[0] + res[1]; + for (int i = 0; i < length; ++i) { + const i32 diff = static_cast(lhs[i]) - static_cast(rhs[i]); + sum += (diff >= 0) ? diff : -diff; + } + + return sum; +} + +Y_FORCE_INLINE ui32 L1Distance(const ui8* lhs, const ui8* rhs, int length) { + if (length == 96) + return NL1Distance::NPrivate::L1Distance96Ui8(lhs, rhs); + + int l16 = length & (~15); + __m128i sum = _mm_setzero_si128(); + + if ((reinterpret_cast(lhs) & 0x0f) || (reinterpret_cast(rhs) & 0x0f)) { + for (int i = 0; i < l16; i += 16) { + __m128i a = _mm_loadu_si128((const __m128i*)(&lhs[i])); + __m128i b = _mm_loadu_si128((const __m128i*)(&rhs[i])); + + sum = _mm_add_epi64(sum, _mm_sad_epu8(a, b)); + } + } else { + for (int i = 0; i < l16; i += 16) { + __m128i sum_ab = _mm_sad_epu8(*(const __m128i*)(&lhs[i]), *(const __m128i*)(&rhs[i])); + sum = _mm_add_epi64(sum, sum_ab); + } + } + + if (l16 == length) + return _mm_cvtsi128_si32(sum) + _mm_cvtsi128_si32(_mm_shuffle_epi32(sum, _MM_SHUFFLE(2, 2, 2, 2))); + + int l4 = length & (~3); + for (int i = l16; i < l4; i += 4) { + __m128i a = _mm_set_epi32(*((const ui32*)&lhs[i]), 0, 0, 0); + __m128i b = _mm_set_epi32(*((const ui32*)&rhs[i]), 0, 0, 0); + sum = _mm_add_epi64(sum, _mm_sad_epu8(a, b)); + } + + ui32 res = _mm_cvtsi128_si32(sum) + _mm_cvtsi128_si32(_mm_shuffle_epi32(sum, _MM_SHUFFLE(2, 2, 2, 2))); + + for (int i = l4; i < length; i++) + res += lhs[i] < rhs[i] ? rhs[i] - lhs[i] : lhs[i] - rhs[i]; + + return res; +} + +Y_FORCE_INLINE ui32 L1DistanceUI4(const ui8* lhs, const ui8* rhs, int lengtInBytes) { + + if (lengtInBytes == 96) + return NL1Distance::NPrivate::L1Distance96Ui4(lhs, rhs); + + int l16 = lengtInBytes & (~15); + __m128i sum1 = _mm_setzero_si128(); + __m128i sum2 = _mm_setzero_si128(); + + for (int i = 0; i < l16; i += 16) { + __m128i a = _mm_loadu_si128((const __m128i*)(&lhs[i])); + __m128i b = _mm_loadu_si128((const __m128i*)(&rhs[i])); + + sum1 = _mm_add_epi64(sum1, _mm_sad_epu8(_mm_and_si128(a, NL1Distance::NPrivate::MASK_UI4_1), _mm_and_si128(b, NL1Distance::NPrivate::MASK_UI4_1))); + sum2 = _mm_add_epi64(sum2, _mm_sad_epu8(_mm_and_si128(a, NL1Distance::NPrivate::MASK_UI4_2), _mm_and_si128(b, NL1Distance::NPrivate::MASK_UI4_2))); + } + + if (l16 == lengtInBytes) + return _mm_cvtsi128_si32(sum1) + _mm_cvtsi128_si32(_mm_shuffle_epi32(sum1, _MM_SHUFFLE(2, 2, 2, 2))) + + ((_mm_cvtsi128_si32(sum2) + _mm_cvtsi128_si32(_mm_shuffle_epi32(sum2, _MM_SHUFFLE(2, 2, 2, 2)))) >> 4); + + int l4 = lengtInBytes & (~3); + for (int i = l16; i < l4; i += 4) { + __m128i a = _mm_set_epi32(*((const ui32*)&lhs[i]), 0, 0, 0); + __m128i b = _mm_set_epi32(*((const ui32*)&rhs[i]), 0, 0, 0); + sum1 = _mm_add_epi64(sum1, _mm_sad_epu8(_mm_and_si128(a, NL1Distance::NPrivate::MASK_UI4_1), _mm_and_si128(b, NL1Distance::NPrivate::MASK_UI4_1))); + sum2 = _mm_add_epi64(sum2, _mm_sad_epu8(_mm_and_si128(a, NL1Distance::NPrivate::MASK_UI4_2), _mm_and_si128(b, NL1Distance::NPrivate::MASK_UI4_2))); + } + + ui32 res = _mm_cvtsi128_si32(sum1) + _mm_cvtsi128_si32(_mm_shuffle_epi32(sum1, _MM_SHUFFLE(2, 2, 2, 2))) + + ((_mm_cvtsi128_si32(sum2) + _mm_cvtsi128_si32(_mm_shuffle_epi32(sum2, _MM_SHUFFLE(2, 2, 2, 2)))) >> 4); + + for (int i = l4; i < lengtInBytes; ++i) { + ui8 a1 = lhs[i] & 0x0f; + ui8 a2 = (lhs[i] & 0xf0) >> 4; + ui8 b1 = rhs[i] & 0x0f; + ui8 b2 = (rhs[i] & 0xf0) >> 4; + res += a1 < b1 ? b1 - a1 : a1 - b1; + res += a2 < b2 ? b2 - a2 : a2 - b2; + } + + return res; +} + +Y_FORCE_INLINE ui64 L1Distance(const i32* lhs, const i32* rhs, int length) { + __m128i zero = _mm_setzero_si128(); + __m128i res = zero; + + while (length >= 4) { + __m128i a = _mm_loadu_si128((const __m128i*)lhs); + __m128i b = _mm_loadu_si128((const __m128i*)rhs); + __m128i mask = _mm_cmpgt_epi32(a, b); + __m128i a2 = _mm_and_si128(mask, _mm_sub_epi32(a, b)); + b = _mm_andnot_si128(mask, _mm_sub_epi32(b, a)); + a = _mm_or_si128(a2, b); + res = _mm_add_epi64(_mm_unpackhi_epi32(a, zero), res); + res = _mm_add_epi64(_mm_unpacklo_epi32(a, zero), res); + rhs += 4; + lhs += 4; + length -= 4; + } + + alignas(16) ui64 r[2]; + _mm_store_si128((__m128i*)r, res); + ui64 sum = r[0] + r[1]; + + while (length) { + sum += lhs[0] < rhs[0] ? rhs[0] - lhs[0] : lhs[0] - rhs[0]; + ++lhs; + ++rhs; + --length; + } + + return sum; +} + +Y_FORCE_INLINE ui64 L1Distance(const ui32* lhs, const ui32* rhs, int length) { + __m128i zero = _mm_setzero_si128(); + __m128i shift = _mm_set1_epi32(0x80000000); + __m128i res = zero; + + while (length >= 4) { + __m128i a = _mm_add_epi32(_mm_loadu_si128((const __m128i*)lhs), shift); + __m128i b = _mm_add_epi32(_mm_loadu_si128((const __m128i*)rhs), shift); + __m128i mask = _mm_cmpgt_epi32(a, b); + __m128i a2 = _mm_and_si128(mask, _mm_sub_epi32(a, b)); + b = _mm_andnot_si128(mask, _mm_sub_epi32(b, a)); + a = _mm_or_si128(a2, b); + res = _mm_add_epi64(_mm_unpackhi_epi32(a, zero), res); + res = _mm_add_epi64(_mm_unpacklo_epi32(a, zero), res); + rhs += 4; + lhs += 4; + length -= 4; + } + + alignas(16) ui64 r[2]; + _mm_store_si128((__m128i*)r, res); + ui64 sum = r[0] + r[1]; + + while (length) { + sum += lhs[0] < rhs[0] ? rhs[0] - lhs[0] : lhs[0] - rhs[0]; + ++lhs; + ++rhs; + --length; + } + + return sum; +} + +Y_FORCE_INLINE float L1Distance(const float* lhs, const float* rhs, int length) { + __m128 res = _mm_setzero_ps(); + __m128 absMask = _mm_castsi128_ps(_mm_set1_epi32(0x7fffffff)); + + while (length >= 4) { + __m128 a = _mm_loadu_ps(lhs); + __m128 b = _mm_loadu_ps(rhs); + __m128 d = _mm_sub_ps(a, b); + res = _mm_add_ps(_mm_and_ps(d, absMask), res); + rhs += 4; + lhs += 4; + length -= 4; + } + + alignas(16) float r[4]; + _mm_store_ps(r, res); + float sum = r[0] + r[1] + r[2] + r[3]; + + while (length) { + sum += std::abs(*lhs - *rhs); + ++lhs; + ++rhs; + --length; + } + + return sum; +} + +Y_FORCE_INLINE double L1Distance(const double* lhs, const double* rhs, int length) { + __m128d res = _mm_setzero_pd(); + __m128d absMask = _mm_castsi128_pd(_mm_set_epi32(0x7fffffff, 0xffffffff, 0x7fffffff, 0xffffffff)); + + while (length >= 2) { + __m128d a = _mm_loadu_pd(lhs); + __m128d b = _mm_loadu_pd(rhs); + __m128d d = _mm_sub_pd(a, b); + res = _mm_add_pd(_mm_and_pd(d, absMask), res); + rhs += 2; + lhs += 2; + length -= 2; + } + + alignas(16) double r[2]; + _mm_store_pd(r, res); + double sum = r[0] + r[1]; + + while (length) { + sum += std::abs(*lhs - *rhs); + ++lhs; + ++rhs; + --length; + } + + return sum; +} + +#else // ARCADIA_SSE + +inline ui32 L1Distance(const i8* lhs, const i8* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl(lhs, rhs, length); +} + +inline ui32 L1Distance(const ui8* lhs, const ui8* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl(lhs, rhs, length); +} + +inline ui32 L1DistanceUI4(const ui8* lhs, const ui8* rhs, int lengtInBytes) { + return NL1Distance::NPrivate::L1DistanceImplUI4(lhs, rhs, lengtInBytes); +} + +inline ui64 L1Distance(const ui32* lhs, const ui32* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl2(lhs, rhs, length); +} + +inline ui64 L1Distance(const i32* lhs, const i32* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl2(lhs, rhs, length); +} + +inline float L1Distance(const float* lhs, const float* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl4(lhs, rhs, length); +} + +inline double L1Distance(const double* lhs, const double* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl4(lhs, rhs, length); +} + +#endif // _sse_ + +/** + * L1Distance (sum(abs(l[i] - r[i]))) implementation without SSE. + */ +inline ui32 L1DistanceSlow(const i8* lhs, const i8* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl(lhs, rhs, length); +} + +inline ui32 L1DistanceSlow(const ui8* lhs, const ui8* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl(lhs, rhs, length); +} + +inline ui32 L1DistanceUI4Slow(const ui8* lhs, const ui8* rhs, int lengtInBytes) { + return NL1Distance::NPrivate::L1DistanceImplUI4(lhs, rhs, lengtInBytes); +} + +inline ui64 L1DistanceSlow(const ui32* lhs, const ui32* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl2(lhs, rhs, length); +} + +inline ui64 L1DistanceSlow(const i32* lhs, const i32* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl2(lhs, rhs, length); +} + +inline float L1DistanceSlow(const float* lhs, const float* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl4(lhs, rhs, length); +} + +inline double L1DistanceSlow(const double* lhs, const double* rhs, int length) { + return NL1Distance::NPrivate::L1DistanceImpl4(lhs, rhs, length); +} + +namespace NL1Distance { + // Simpler wrapper allowing to use this functions as template argument. + template + struct TL1Distance { + using TResult = decltype(L1Distance(static_cast(nullptr), static_cast(nullptr), 0)); + + inline TResult operator()(const T* a, const T* b, int length) const { + return L1Distance(a, b, length); + } + }; + + struct TL1DistanceUI4 { + using TResult = ui32; + + inline TResult operator()(const ui8* a, const ui8* b, int lengtInBytes) const { + return L1DistanceUI4(a, b, lengtInBytes); + } + }; +} diff --git a/library/cpp/l1_distance/ya.make b/library/cpp/l1_distance/ya.make new file mode 100644 index 000000000000..9345cb99af80 --- /dev/null +++ b/library/cpp/l1_distance/ya.make @@ -0,0 +1,11 @@ +LIBRARY() + +SRCS( + l1_distance.h +) + +PEERDIR( + library/cpp/sse +) + +END() diff --git a/library/cpp/l2_distance/README.md b/library/cpp/l2_distance/README.md new file mode 100644 index 000000000000..e6d3b7ad4178 --- /dev/null +++ b/library/cpp/l2_distance/README.md @@ -0,0 +1,15 @@ +Библиотека для вычисления расстояния между векторами. +===================================================== + +Данная библиотека содержит две функции L2Distance и L2SqrDistance. Первая вычисляет L2 расстояние между векторами +разных типов, а вторая его квадрат. В отличии от наивной реализации, библиотека использует SSE и работает существенно +быстрее. Для сравнения можно посмотреть результаты бенчмарка. + +Типичное использование - замена кусков кода вроде: +``` +for (int i = 0; i < len; i++) + dist += (a[i] - b[i]) * (a[i] - b[i]); +``` +на существенно более эффективный вызов ```L2SqrDistance(a, b, len)```. + +Работает для типов i8, ui8, i32, ui32, float, double. diff --git a/library/cpp/l2_distance/l2_distance.cpp b/library/cpp/l2_distance/l2_distance.cpp new file mode 100644 index 000000000000..2266e10aaaad --- /dev/null +++ b/library/cpp/l2_distance/l2_distance.cpp @@ -0,0 +1,376 @@ +#include "l2_distance.h" + +#include + +#include + +#include + +template +inline Result SqrDelta(Number a, Number b) { + Result diff = a < b ? b - a : a - b; + return diff * diff; +} + +template +inline Result L2SqrDistanceImpl(const Number* a, const Number* b, int length) { + Result res = 0; + + for (int i = 0; i < length; i++) { + res += SqrDelta(a[i], b[i]); + } + + return res; +} + +template +inline Result L2SqrDistanceImpl2(const Number* a, const Number* b, int length) { + Result s0 = 0; + Result s1 = 0; + + while (length >= 2) { + s0 += SqrDelta(a[0], b[0]); + s1 += SqrDelta(a[1], b[1]); + a += 2; + b += 2; + length -= 2; + } + + while (length--) + s0 += SqrDelta(*a++, *b++); + + return s0 + s1; +} + +template +inline Result L2SqrDistanceImpl4(const Number* a, const Number* b, int length) { + Result s0 = 0; + Result s1 = 0; + Result s2 = 0; + Result s3 = 0; + + while (length >= 4) { + s0 += SqrDelta(a[0], b[0]); + s1 += SqrDelta(a[1], b[1]); + s2 += SqrDelta(a[2], b[2]); + s3 += SqrDelta(a[3], b[3]); + a += 4; + b += 4; + length -= 4; + } + + while (length--) + s0 += SqrDelta(*a++, *b++); + + return s0 + s1 + s2 + s3; +} + +inline ui32 L2SqrDistanceImplUI4(const ui8* a, const ui8* b, int length) { + ui32 res = 0; + for (int i = 0; i < length; i++) { + res += SqrDelta(a[i] & 0x0f, b[i] & 0x0f); + res += SqrDelta(a[i] & 0xf0, b[i] & 0xf0) >> 8; + } + return res; +} + + +#ifdef ARCADIA_SSE +namespace NL2Distance { + static const __m128i MASK_UI4_1 = _mm_set_epi8(0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f); + static const __m128i MASK_UI4_2 = _mm_set_epi8(0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0); +} +ui32 L2SqrDistance(const i8* lhs, const i8* rhs, int length) { + const __m128i zero = _mm_setzero_si128(); + __m128i resVec = zero; + + while (length >= 16) { + __m128i vec = _mm_subs_epi8(_mm_loadu_si128((const __m128i*)lhs), _mm_loadu_si128((const __m128i*)rhs)); + +#ifdef _sse4_1_ + __m128i lo = _mm_cvtepi8_epi16(vec); + __m128i hi = _mm_cvtepi8_epi16(_mm_alignr_epi8(vec, vec, 8)); +#else + __m128i lo = _mm_srai_epi16(_mm_unpacklo_epi8(zero, vec), 8); + __m128i hi = _mm_srai_epi16(_mm_unpackhi_epi8(zero, vec), 8); +#endif + + resVec = _mm_add_epi32(resVec, + _mm_add_epi32(_mm_madd_epi16(lo, lo), _mm_madd_epi16(hi, hi))); + + lhs += 16; + rhs += 16; + length -= 16; + } + + alignas(16) ui32 res[4]; + _mm_store_si128((__m128i*)res, resVec); + ui32 sum = res[0] + res[1] + res[2] + res[3]; + for (int i = 0; i < length; ++i) { + sum += Sqr(static_cast(lhs[i]) - static_cast(rhs[i])); + } + + return sum; +} + +ui32 L2SqrDistance(const ui8* lhs, const ui8* rhs, int length) { + const __m128i zero = _mm_setzero_si128(); + __m128i resVec = zero; + + while (length >= 16) { + __m128i lVec = _mm_loadu_si128((const __m128i*)lhs); + __m128i rVec = _mm_loadu_si128((const __m128i*)rhs); + + // We will think about this vectors as about i16. + __m128i lo = _mm_sub_epi16(_mm_unpacklo_epi8(lVec, zero), _mm_unpacklo_epi8(rVec, zero)); + __m128i hi = _mm_sub_epi16(_mm_unpackhi_epi8(lVec, zero), _mm_unpackhi_epi8(rVec, zero)); + + resVec = _mm_add_epi32(resVec, + _mm_add_epi32(_mm_madd_epi16(lo, lo), _mm_madd_epi16(hi, hi))); + + lhs += 16; + rhs += 16; + length -= 16; + } + + alignas(16) ui32 res[4]; + _mm_store_si128((__m128i*)res, resVec); + ui32 sum = res[0] + res[1] + res[2] + res[3]; + for (int i = 0; i < length; ++i) { + sum += Sqr(static_cast(lhs[i]) - static_cast(rhs[i])); + } + + return sum; +} + +float L2SqrDistance(const float* lhs, const float* rhs, int length) { + __m128 sum = _mm_setzero_ps(); + + while (length >= 4) { + __m128 a = _mm_loadu_ps(lhs); + __m128 b = _mm_loadu_ps(rhs); + __m128 delta = _mm_sub_ps(a, b); + sum = _mm_add_ps(sum, _mm_mul_ps(delta, delta)); + length -= 4; + rhs += 4; + lhs += 4; + } + + alignas(16) float res[4]; + _mm_store_ps(res, sum); + + while (length--) + res[0] += Sqr(*rhs++ - *lhs++); + + return res[0] + res[1] + res[2] + res[3]; +} + +double L2SqrDistance(const double* lhs, const double* rhs, int length) { + __m128d sum = _mm_setzero_pd(); + + while (length >= 2) { + __m128d a = _mm_loadu_pd(lhs); + __m128d b = _mm_loadu_pd(rhs); + __m128d delta = _mm_sub_pd(a, b); + sum = _mm_add_pd(sum, _mm_mul_pd(delta, delta)); + length -= 2; + rhs += 2; + lhs += 2; + } + + alignas(16) double res[2]; + _mm_store_pd(res, sum); + + while (length--) + res[0] += Sqr(*rhs++ - *lhs++); + + return res[0] + res[1]; +} + +ui64 L2SqrDistance(const i32* lhs, const i32* rhs, int length) { + __m128i zero = _mm_setzero_si128(); + __m128i res = zero; + + while (length >= 4) { + __m128i a = _mm_loadu_si128((const __m128i*)lhs); + __m128i b = _mm_loadu_si128((const __m128i*)rhs); + +#ifdef _sse4_1_ + // In SSE4.1 si32*si32->si64 is available, so we may do just (a-b)*(a-b) not caring about (a-b) sign + a = _mm_sub_epi32(a, b); + res = _mm_add_epi64(_mm_mul_epi32(a, a), res); + a = _mm_alignr_epi8(a, a, 4); + res = _mm_add_epi64(_mm_mul_epi32(a, a), res); +#else + __m128i mask = _mm_cmpgt_epi32(a, b); // mask = a > b? 0xffffffff: 0; + __m128i a2 = _mm_sub_epi32(_mm_and_si128(mask, a), _mm_and_si128(mask, b)); // a2 = (a & mask) - (b & mask) (for a > b) + b = _mm_sub_epi32(_mm_andnot_si128(mask, b), _mm_andnot_si128(mask, a)); // b = (b & ~mask) - (a & ~mask) (for b > a) + a = _mm_or_si128(a2, b); // a = abs(a - b) + a2 = _mm_unpackhi_epi32(a, zero); + res = _mm_add_epi64(_mm_mul_epu32(a2, a2), res); + a2 = _mm_unpacklo_epi32(a, zero); + res = _mm_add_epi64(_mm_mul_epu32(a2, a2), res); +#endif + + rhs += 4; + lhs += 4; + length -= 4; + } + + alignas(16) ui64 r[2]; + _mm_store_si128((__m128i*)r, res); + ui64 sum = r[0] + r[1]; + + while (length) { + sum += SqrDelta(lhs[0], rhs[0]); + ++lhs; + ++rhs; + --length; + } + + return sum; +} + +ui64 L2SqrDistance(const ui32* lhs, const ui32* rhs, int length) { + __m128i zero = _mm_setzero_si128(); + __m128i shift = _mm_set1_epi32(0x80000000); + __m128i res = zero; + + while (length >= 4) { + __m128i a = _mm_add_epi32(_mm_loadu_si128((const __m128i*)lhs), shift); + __m128i b = _mm_add_epi32(_mm_loadu_si128((const __m128i*)rhs), shift); + __m128i mask = _mm_cmpgt_epi32(a, b); // mask = a > b? 0xffffffff: 0; + __m128i a2 = _mm_sub_epi32(_mm_and_si128(mask, a), _mm_and_si128(mask, b)); // a2 = (a & mask) - (b & mask) (for a > b) + b = _mm_sub_epi32(_mm_andnot_si128(mask, b), _mm_andnot_si128(mask, a)); // b = (b & ~mask) - (a & ~mask) (for b > a) + a = _mm_or_si128(a2, b); // a = abs(a - b) + +#ifdef _sse4_1_ + res = _mm_add_epi64(_mm_mul_epu32(a, a), res); + a = _mm_alignr_epi8(a, a, 4); + res = _mm_add_epi64(_mm_mul_epu32(a, a), res); +#else + a2 = _mm_unpackhi_epi32(a, zero); + res = _mm_add_epi64(_mm_mul_epu32(a2, a2), res); + a2 = _mm_unpacklo_epi32(a, zero); + res = _mm_add_epi64(_mm_mul_epu32(a2, a2), res); +#endif + + rhs += 4; + lhs += 4; + length -= 4; + } + + alignas(16) ui64 r[2]; + _mm_store_si128((__m128i*)r, res); + ui64 sum = r[0] + r[1]; + + while (length) { + sum += SqrDelta(lhs[0], rhs[0]); + ++lhs; + ++rhs; + --length; + } + + return sum; +} + +ui32 L2SqrDistanceUI4(const ui8* lhs, const ui8* rhs, int length) { + const __m128i zero = _mm_setzero_si128(); + __m128i resVec1 = zero; + __m128i resVec2 = zero; + + while (length >= 16) { + __m128i lVec = _mm_loadu_si128((const __m128i*)lhs); + __m128i rVec = _mm_loadu_si128((const __m128i*)rhs); + + __m128i lVec1 = _mm_and_si128(lVec, NL2Distance::MASK_UI4_1); + __m128i lVec2 = _mm_and_si128(lVec, NL2Distance::MASK_UI4_2); + __m128i rVec1 = _mm_and_si128(rVec, NL2Distance::MASK_UI4_1); + __m128i rVec2 = _mm_and_si128(rVec, NL2Distance::MASK_UI4_2); + // We will think about this vectors as about i16. + __m128i lo1 = _mm_sub_epi16(_mm_unpacklo_epi8(lVec1, zero), _mm_unpacklo_epi8(rVec1, zero)); + __m128i hi1 = _mm_sub_epi16(_mm_unpackhi_epi8(lVec1, zero), _mm_unpackhi_epi8(rVec1, zero)); + __m128i lo2 = _mm_sub_epi16(_mm_unpacklo_epi8(lVec2, zero), _mm_unpacklo_epi8(rVec2, zero)); + __m128i hi2 = _mm_sub_epi16(_mm_unpackhi_epi8(lVec2, zero), _mm_unpackhi_epi8(rVec2, zero)); + + resVec1 = _mm_add_epi32(resVec1, _mm_add_epi32(_mm_madd_epi16(lo1, lo1), _mm_madd_epi16(hi1, hi1))); + resVec2 = _mm_add_epi32(resVec2, _mm_add_epi32(_mm_madd_epi16(lo2, lo2), _mm_madd_epi16(hi2, hi2))); + + lhs += 16; + rhs += 16; + length -= 16; + } + + alignas(16) ui32 res[4]; + _mm_store_si128((__m128i*)res, resVec1); + ui32 sum = res[0] + res[1] + res[2] + res[3]; + _mm_store_si128((__m128i*)res, resVec2); + sum += (res[0] + res[1] + res[2] + res[3]) >> 8; + for (int i = 0; i < length; ++i) { + sum += Sqr(static_cast(lhs[i] & 0x0f) - static_cast(rhs[i] & 0x0f)); + sum += Sqr(static_cast(lhs[i] & 0xf0) - static_cast(rhs[i] & 0xf0)) >> 8; + } + return sum; +} + +#else /* !ARCADIA_SSE */ + +ui32 L2SqrDistance(const i8* lhs, const i8* rhs, int length) { + return L2SqrDistanceImpl(lhs, rhs, length); +} + +ui32 L2SqrDistance(const ui8* lhs, const ui8* rhs, int length) { + return L2SqrDistanceImpl(lhs, rhs, length); +} + +ui64 L2SqrDistance(const i32* a, const i32* b, int length) { + return L2SqrDistanceImpl2(a, b, length); +} + +ui64 L2SqrDistance(const ui32* a, const ui32* b, int length) { + return L2SqrDistanceImpl2(a, b, length); +} + +float L2SqrDistance(const float* a, const float* b, int length) { + return L2SqrDistanceImpl4(a, b, length); +} + +double L2SqrDistance(const double* a, const double* b, int length) { + return L2SqrDistanceImpl2(a, b, length); +} + +ui32 L2SqrDistanceUI4(const ui8* lhs, const ui8* rhs, int length) { + return L2SqrDistanceImplUI4(lhs, rhs, length); +} + +#endif /* ARCADIA_SSE */ + +ui32 L2SqrDistanceSlow(const i8* lhs, const i8* rhs, int length) { + return L2SqrDistanceImpl(lhs, rhs, length); +} + +ui32 L2SqrDistanceSlow(const ui8* lhs, const ui8* rhs, int length) { + return L2SqrDistanceImpl(lhs, rhs, length); +} + +ui64 L2SqrDistanceSlow(const i32* a, const i32* b, int length) { + return L2SqrDistanceImpl2(a, b, length); +} + +ui64 L2SqrDistanceSlow(const ui32* a, const ui32* b, int length) { + return L2SqrDistanceImpl2(a, b, length); +} + +float L2SqrDistanceSlow(const float* a, const float* b, int length) { + return L2SqrDistanceImpl4(a, b, length); +} + +double L2SqrDistanceSlow(const double* a, const double* b, int length) { + return L2SqrDistanceImpl2(a, b, length); +} + +ui32 L2SqrDistanceUI4Slow(const ui8* lhs, const ui8* rhs, int length) { + return L2SqrDistanceImplUI4(lhs, rhs, length); +} diff --git a/library/cpp/l2_distance/l2_distance.h b/library/cpp/l2_distance/l2_distance.h new file mode 100644 index 000000000000..0106be70a5cc --- /dev/null +++ b/library/cpp/l2_distance/l2_distance.h @@ -0,0 +1,140 @@ +#pragma once + +#include +#include +#include + +namespace NPrivate { + namespace NL2Distance { + template + inline Number L2DistanceSqrt(Number a) { + return std::sqrt(a); + } + + template <> + inline ui64 L2DistanceSqrt(ui64 a) { + // https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Binary_numeral_system_.28base_2.29 + ui64 res = 0; + ui64 bit = static_cast(1) << (sizeof(ui64) * 8 - 2); + + while (bit > a) + bit >>= 2; + + while (bit != 0) { + if (a >= res + bit) { + a -= (res + bit); + res = (res >> 1) + bit; + } else { + res >>= 1; + } + bit >>= 2; + } + + return res; + } + + template <> + inline ui32 L2DistanceSqrt(ui32 a) { + return L2DistanceSqrt(a); + } + + // Special class to match argument type and result type. + template + class TMatchArgumentResult { + public: + using TResult = Arg; + }; + + template <> + class TMatchArgumentResult { + public: + using TResult = ui32; + }; + + template <> + class TMatchArgumentResult { + public: + using TResult = ui32; + }; + + template <> + class TMatchArgumentResult { + public: + using TResult = ui64; + }; + + template <> + class TMatchArgumentResult { + public: + using TResult = ui64; + }; + + } + +} + +/** + * sqr(l2_distance) = sum((a[i]-b[i])^2) + * If target system does not support SSE2 Slow functions are used automatically. + */ +ui32 L2SqrDistance(const i8* a, const i8* b, int cnt); +ui32 L2SqrDistance(const ui8* a, const ui8* b, int cnt); +ui64 L2SqrDistance(const i32* a, const i32* b, int length); +ui64 L2SqrDistance(const ui32* a, const ui32* b, int length); +float L2SqrDistance(const float* a, const float* b, int length); +double L2SqrDistance(const double* a, const double* b, int length); +ui32 L2SqrDistanceUI4(const ui8* a, const ui8* b, int cnt); + +ui32 L2SqrDistanceSlow(const i8* a, const i8* b, int cnt); +ui32 L2SqrDistanceSlow(const ui8* a, const ui8* b, int cnt); +ui64 L2SqrDistanceSlow(const i32* a, const i32* b, int length); +ui64 L2SqrDistanceSlow(const ui32* a, const ui32* b, int length); +float L2SqrDistanceSlow(const float* a, const float* b, int length); +double L2SqrDistanceSlow(const double* a, const double* b, int length); +ui32 L2SqrDistanceUI4Slow(const ui8* a, const ui8* b, int cnt); + +/** + * L2 distance = sqrt(sum((a[i]-b[i])^2)) + */ +template ::TResult> +inline Result L2Distance(const Number* a, const Number* b, int cnt) { + return NPrivate::NL2Distance::L2DistanceSqrt(L2SqrDistance(a, b, cnt)); +} + +template ::TResult> +inline Result L2DistanceSlow(const Number* a, const Number* b, int cnt) { + return NPrivate::NL2Distance::L2DistanceSqrt(L2SqrDistanceSlow(a, b, cnt)); +} + +namespace NL2Distance { + // You can use this structures as template function arguments. + template + struct TL2Distance { + using TResult = decltype(L2Distance(static_cast(nullptr), static_cast(nullptr), 0)); + inline TResult operator()(const T* a, const T* b, int length) const { + return L2Distance(a, b, length); + } + }; + + struct TL2DistanceUI4 { + using TResult = ui32; + inline TResult operator()(const ui8* a, const ui8* b, int lengtInBytes) const { + return NPrivate::NL2Distance::L2DistanceSqrt(L2SqrDistanceUI4(a, b, lengtInBytes)); + } + }; + + template + struct TL2SqrDistance { + using TResult = decltype(L2SqrDistance(static_cast(nullptr), static_cast(nullptr), 0)); + inline TResult operator()(const T* a, const T* b, int length) const { + return L2SqrDistance(a, b, length); + } + }; + + struct TL2SqrDistanceUI4 { + using TResult = ui32; + inline TResult operator()(const ui8* a, const ui8* b, int lengtInBytes) const { + return L2SqrDistanceUI4(a, b, lengtInBytes); + } + }; +} diff --git a/library/cpp/l2_distance/ya.make b/library/cpp/l2_distance/ya.make new file mode 100644 index 000000000000..919e77ae4a9a --- /dev/null +++ b/library/cpp/l2_distance/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +SRCS( + l2_distance.h + l2_distance.cpp +) + +PEERDIR( + library/cpp/sse +) + +END() diff --git a/ydb/apps/ydbd/ya.make b/ydb/apps/ydbd/ya.make index e4176a682398..8fa887680987 100644 --- a/ydb/apps/ydbd/ya.make +++ b/ydb/apps/ydbd/ya.make @@ -55,6 +55,7 @@ PEERDIR( ydb/library/yql/udfs/common/histogram ydb/library/yql/udfs/common/hyperloglog ydb/library/yql/udfs/common/ip_base + ydb/library/yql/udfs/common/knn ydb/library/yql/udfs/common/json ydb/library/yql/udfs/common/json2 ydb/library/yql/udfs/common/math diff --git a/ydb/library/yql/udfs/common/knn/knn-defines.h b/ydb/library/yql/udfs/common/knn/knn-defines.h new file mode 100644 index 000000000000..647a4c9c1866 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/knn-defines.h @@ -0,0 +1,37 @@ +#pragma once + +#include "util/system/types.h" + +enum EFormat: ui8 { + FloatVector = 1, // 4-byte per element + Uint8Vector = 2, // 1-byte per element, better than Int8 for positive-only Float + Int8Vector = 3, // 1-byte per element + BitVector = 10, // 1-bit per element +}; + +template +struct TTypeToFormat; + +template <> +struct TTypeToFormat { + static constexpr auto Format = EFormat::FloatVector; +}; + +template <> +struct TTypeToFormat { + static constexpr auto Format = EFormat::Int8Vector; +}; + +template <> +struct TTypeToFormat { + static constexpr auto Format = EFormat::Uint8Vector; +}; + +template <> +struct TTypeToFormat { + static constexpr auto Format = EFormat::BitVector; +}; + +template +inline constexpr auto Format = TTypeToFormat::Format; +inline constexpr auto HeaderLen = sizeof(ui8); diff --git a/ydb/library/yql/udfs/common/knn/knn-distance.h b/ydb/library/yql/udfs/common/knn/knn-distance.h new file mode 100644 index 000000000000..ba78f3e2895d --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/knn-distance.h @@ -0,0 +1,234 @@ +#pragma once + +#include "knn-defines.h" +#include "knn-serializer.h" + +#include + +#include +#include +#include +#include +#include +#include + +#include + +using namespace NYql; +using namespace NYql::NUdf; + +inline void BitVectorHandleShort(ui64 byteLen, const ui64* v1, const ui64* v2, auto&& op) { + Y_ASSERT(0 < byteLen); + Y_ASSERT(byteLen < sizeof(ui64)); + ui64 d1 = 0; + ui64 d2 = 0; + // TODO manual switch for [1..7]? + std::memcpy(&d1, v1, byteLen); + std::memcpy(&d2, v2, byteLen); + op(d1, d2); +} + +inline void BitVectorHandleTail(ui64 byteLen, const ui64* v1, const ui64* v2, auto&& op) { + if (Y_LIKELY(byteLen == 0)) // fast-path for aligned case + return; + Y_ASSERT(byteLen < sizeof(ui64)); + const auto unneededBytes = sizeof(ui64) - byteLen; + const auto* r1 = reinterpret_cast(v1) - unneededBytes; + const auto* r2 = reinterpret_cast(v2) - unneededBytes; + ui64 d1, d2; // unaligned loads + std::memcpy(&d1, r1, sizeof(ui64)); + std::memcpy(&d2, r2, sizeof(ui64)); + ui64 mask = 0; + // big endian: 0 1 2 3 4 5 6 7 | 0 1 2 3 | 0 1 | 0 | 0 => needs to zero high bits + // little endian: 7 6 5 4 3 2 1 0 | 3 2 1 0 | 1 0 | 0 | 0 => needs to zero low bits + if constexpr (std::endian::native == std::endian::big) { + mask = (ui64{1} << (byteLen * 8)) - 1; + } else { + mask = ~((ui64{1} << (unneededBytes * 8)) - 1); + } + op(d1 & mask, d2 & mask); +} + +inline void BitVectorHandleOp(ui64 bitLen, const ui64* v1, const ui64* v2, auto&& op) { + if (Y_UNLIKELY(bitLen == 0)) + return; + auto byteLen = (bitLen + 7) / 8; + const auto wordLen = byteLen / sizeof(ui64); + if (Y_LIKELY(wordLen == 0)) // fast-path for short case + return BitVectorHandleShort(byteLen, v1, v2, op); + byteLen %= sizeof(ui64); + for (const auto* end = v1 + wordLen; v1 != end; ++v1, ++v2) { + op(*v1, *v2); + } + BitVectorHandleTail(byteLen, v1, v2, op); +} + +using TDistanceResult = std::optional; + +template +inline TDistanceResult VectorFuncImpl(const auto* v1, const auto* v2, auto len1, auto len2, Func&& func) { + if (Y_UNLIKELY(len1 != len2)) + return {}; + return {func(v1, v2, len1)}; +} + +template +inline auto VectorFunc(const TStringRef& str1, const TStringRef& str2, Func&& func) { + const TArrayRef v1 = TKnnVectorSerializer::GetArray(str1); + const TArrayRef v2 = TKnnVectorSerializer::GetArray(str2); + return VectorFuncImpl(v1.data(), v2.data(), v1.size(), v2.size(), std::forward(func)); +} + +template +inline auto BitVectorFunc(const TStringRef& str1, const TStringRef& str2, Func&& func) { + auto [v1, bitLen1] = TKnnSerializerFacade::GetBitArray(str1); + auto [v2, bitLen2] = TKnnSerializerFacade::GetBitArray(str2); + return VectorFuncImpl(v1, v2, bitLen1, bitLen2, std::forward(func)); +} + +inline TDistanceResult KnnManhattanDistance(const TStringRef& str1, const TStringRef& str2) { + const ui8 format1 = str1.Data()[str1.Size() - HeaderLen]; + const ui8 format2 = str2.Data()[str2.Size() - HeaderLen]; + if (Y_UNLIKELY(format1 != format2)) + return {}; + + switch (format1) { + case EFormat::FloatVector: + return VectorFunc(str1, str2, [](const float* v1, const float* v2, size_t len) { + return ::L1Distance(v1, v2, len); + }); + case EFormat::Int8Vector: + return VectorFunc(str1, str2, [](const i8* v1, const i8* v2, size_t len) { + return ::L1Distance(v1, v2, len); + }); + case EFormat::Uint8Vector: + return VectorFunc(str1, str2, [](const ui8* v1, const ui8* v2, size_t len) { + return ::L1Distance(v1, v2, len); + }); + case EFormat::BitVector: + return BitVectorFunc(str1, str2, [](const ui64* v1, const ui64* v2, ui64 bitLen) { + ui64 ret = 0; + BitVectorHandleOp(bitLen, v1, v2, [&](ui64 d1, ui64 d2) { + ret += std::popcount(d1 ^ d2); + }); + return ret; + }); + default: + return {}; + } +} + +inline TDistanceResult KnnEuclideanDistance(const TStringRef& str1, const TStringRef& str2) { + const ui8 format1 = str1.Data()[str1.Size() - HeaderLen]; + const ui8 format2 = str2.Data()[str2.Size() - HeaderLen]; + if (Y_UNLIKELY(format1 != format2)) + return {}; + + switch (format1) { + case EFormat::FloatVector: + return VectorFunc(str1, str2, [](const float* v1, const float* v2, size_t len) { + return ::L2Distance(v1, v2, len); + }); + case EFormat::Int8Vector: + return VectorFunc(str1, str2, [](const i8* v1, const i8* v2, size_t len) { + return ::L2Distance(v1, v2, len); + }); + case EFormat::Uint8Vector: + return VectorFunc(str1, str2, [](const ui8* v1, const ui8* v2, size_t len) { + return ::L2Distance(v1, v2, len); + }); + case EFormat::BitVector: + return BitVectorFunc(str1, str2, [](const ui64* v1, const ui64* v2, ui64 bitLen) { + ui64 ret = 0; + BitVectorHandleOp(bitLen, v1, v2, [&](ui64 d1, ui64 d2) { + ret += std::popcount(d1 ^ d2); + }); + return NPrivate::NL2Distance::L2DistanceSqrt(ret); + }); + default: + return {}; + } +} + +inline TDistanceResult KnnDotProduct(const TStringRef& str1, const TStringRef& str2) { + const ui8 format1 = str1.Data()[str1.Size() - HeaderLen]; + const ui8 format2 = str2.Data()[str2.Size() - HeaderLen]; + if (Y_UNLIKELY(format1 != format2)) + return {}; + + switch (format1) { + case EFormat::FloatVector: + return VectorFunc(str1, str2, [](const float* v1, const float* v2, size_t len) { + return ::DotProduct(v1, v2, len); + }); + case EFormat::Int8Vector: + return VectorFunc(str1, str2, [](const i8* v1, const i8* v2, size_t len) { + return ::DotProduct(v1, v2, len); + }); + case EFormat::Uint8Vector: + return VectorFunc(str1, str2, [](const ui8* v1, const ui8* v2, size_t len) { + return ::DotProduct(v1, v2, len); + }); + case EFormat::BitVector: + return BitVectorFunc(str1, str2, [](const ui64* v1, const ui64* v2, ui64 bitLen) { + ui64 ret = 0; + BitVectorHandleOp(bitLen, v1, v2, [&](ui64 d1, ui64 d2) { + ret += std::popcount(d1 & d2); + }); + return ret; + }); + default: + return {}; + } +} + +inline TDistanceResult KnnCosineSimilarity(const TStringRef& str1, const TStringRef& str2) { + const ui8 format1 = str1.Data()[str1.Size() - HeaderLen]; + const ui8 format2 = str2.Data()[str2.Size() - HeaderLen]; + if (Y_UNLIKELY(format1 != format2)) + return {}; + + auto compute = [](auto ll, float lr, auto rr) { + const float norm = std::sqrt(ll * rr); + const float cosine = norm != 0 ? lr / norm : 1; + return cosine; + }; + + switch (format1) { + case EFormat::FloatVector: + return VectorFunc(str1, str2, [&](const float* v1, const float* v2, size_t len) { + const auto res = ::TriWayDotProduct(v1, v2, len); + return compute(res.LL, res.LR, res.RR); + }); + case EFormat::Int8Vector: + return VectorFunc(str1, str2, [&](const i8* v1, const i8* v2, size_t len) { + // TODO We can optimize it if we will iterate over both vector at the same time, look to the float implementation + const i64 ll = ::DotProduct(v1, v1, len); + const i64 lr = ::DotProduct(v1, v2, len); + const i64 rr = ::DotProduct(v2, v2, len); + return compute(ll, lr, rr); + }); + case EFormat::Uint8Vector: + return VectorFunc(str1, str2, [&](const ui8* v1, const ui8* v2, size_t len) { + // TODO We can optimize it if we will iterate over both vector at the same time, look to the float implementation + const ui64 ll = ::DotProduct(v1, v1, len); + const ui64 lr = ::DotProduct(v1, v2, len); + const ui64 rr = ::DotProduct(v2, v2, len); + return compute(ll, lr, rr); + }); + case EFormat::BitVector: + return BitVectorFunc(str1, str2, [&](const ui64* v1, const ui64* v2, ui64 bitLen) { + ui64 ll = 0; + ui64 rr = 0; + ui64 lr = 0; + BitVectorHandleOp(bitLen, v1, v2, [&](ui64 d1, ui64 d2) { + ll += std::popcount(d1); + rr += std::popcount(d2); + lr += std::popcount(d1 & d2); + }); + return compute(ll, lr, rr); + }); + default: + return {}; + } +} diff --git a/ydb/library/yql/udfs/common/knn/knn-enumerator.h b/ydb/library/yql/udfs/common/knn/knn-enumerator.h new file mode 100644 index 000000000000..7526f96bb613 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/knn-enumerator.h @@ -0,0 +1,24 @@ +#pragma once + +#include + +#include + +using namespace NYql; +using namespace NYql::NUdf; + +template +void EnumerateVector(const TUnboxedValuePod vector, TCallback&& callback) { + const auto* elements = vector.GetElements(); + if (elements) { + for (auto& value : TArrayRef{elements, vector.GetListLength()}) { + callback(value.Get()); + } + } else { + TUnboxedValue value; + const auto it = vector.GetListIterator(); + while (it.Next(value)) { + callback(value.Get()); + } + } +} diff --git a/ydb/library/yql/udfs/common/knn/knn-serializer.h b/ydb/library/yql/udfs/common/knn/knn-serializer.h new file mode 100644 index 000000000000..83c52484458a --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/knn-serializer.h @@ -0,0 +1,174 @@ +#pragma once + +#include "knn-defines.h" +#include "knn-enumerator.h" + +#include + +#include +#include +#include + +using namespace NYql; +using namespace NYql::NUdf; + +template +class TKnnVectorSerializer { +public: + static TUnboxedValue Serialize(const IValueBuilder* valueBuilder, const TUnboxedValue x) { + auto serialize = [&](IOutputStream& outStream) { + EnumerateVector(x, [&](TFrom from) { + TTo to = static_cast(from); + outStream.Write(&to, sizeof(TTo)); + }); + const auto format = Format; + outStream.Write(&format, HeaderLen); + }; + + if (x.HasFastListLength()) { + auto str = valueBuilder->NewStringNotFilled(x.GetListLength() * sizeof(TTo) + HeaderLen); + auto strRef = str.AsStringRef(); + TMemoryOutput memoryOutput(strRef.Data(), strRef.Size()); + + serialize(memoryOutput); + return str; + } else { + TString str; + TStringOutput stringOutput(str); + + serialize(stringOutput); + return valueBuilder->NewString(str); + } + } + + static TUnboxedValue Deserialize(const IValueBuilder* valueBuilder, const TStringRef& str) { + auto vector = GetArray(str); + if (Y_UNLIKELY(vector.empty())) + return {}; + + TUnboxedValue* items = nullptr; + auto res = valueBuilder->NewArray(vector.size(), items); + + for (auto element : vector) { + *items++ = TUnboxedValuePod{static_cast(element)}; + } + + return res.Release(); + } + + static TArrayRef GetArray(const TStringRef& str) { + const char* buf = str.Data(); + const size_t len = str.Size() - HeaderLen; + + if (Y_UNLIKELY(len % sizeof(TTo) != 0)) + return {}; + + const ui32 count = len / sizeof(TTo); + + return {reinterpret_cast(buf), count}; + } +}; + +// Encode all positive floats as bit 1, negative floats as bit 0. +// Bits serialized to ui64, from high to low bit and written in native endianess. +// The tail encoded as ui64 or ui32, ui16, ui8 respectively. +// After these we write count of not written bits in last byte that we need to respect. +// So length of vector in bits is 8 * ((count of written bytes) - 1 (format) - 1 (for x)) - x (count of bits not written in last byte). +template +class TKnnBitVectorSerializer { +public: + static TUnboxedValue Serialize(const IValueBuilder* valueBuilder, const TUnboxedValue x) { + auto serialize = [&x](IOutputStream& outStream) { + ui64 accumulator = 0; + ui8 filledBits = 0; + + EnumerateVector(x, [&](TFrom element) { + if (element > 0) + accumulator |= 1; + + if (++filledBits == 64) { + outStream.Write(&accumulator, sizeof(ui64)); + accumulator = 0; + filledBits = 0; + } + accumulator <<= 1; + }); + accumulator >>= 1; + Y_ASSERT(filledBits < 64); + filledBits += 7; + + auto write = [&](auto v) { + outStream.Write(&v, sizeof(v)); + }; + auto tailWriteIf = [&]() { + if (filledBits < sizeof(T) * 8) { + return; + } + write(static_cast(accumulator)); + if constexpr (sizeof(T) < sizeof(accumulator)) { + accumulator >>= sizeof(T) * 8; + } + filledBits -= sizeof(T) * 8; + }; + tailWriteIf.template operator()(); + tailWriteIf.template operator()(); + tailWriteIf.template operator()(); + tailWriteIf.template operator()(); + + Y_ASSERT(filledBits < 8); + write(static_cast(7 - filledBits)); + write(EFormat::BitVector); + }; + + if (x.HasFastListLength()) { + // We expect byte lenght of the result is (bit-length / 8 + bit-length % 8 != 0) + bits-count (1 byte) + HeaderLen + // First part can be optimized to (bit-length + 7) / 8 + auto str = valueBuilder->NewStringNotFilled((x.GetListLength() + 7) / 8 + 1 + HeaderLen); + auto strRef = str.AsStringRef(); + TMemoryOutput memoryOutput(strRef.Data(), strRef.Size()); + + serialize(memoryOutput); + return str; + } else { + TString str; + TStringOutput stringOutput(str); + + serialize(stringOutput); + return valueBuilder->NewString(str); + } + } +}; + +class TKnnSerializerFacade { +public: + static TUnboxedValue Deserialize(const IValueBuilder* valueBuilder, const TStringRef& str) { + if (Y_UNLIKELY(str.Size() == 0)) + return {}; + + const ui8 format = str.Data()[str.Size() - HeaderLen]; + switch (format) { + case EFormat::FloatVector: + return TKnnVectorSerializer::Deserialize(valueBuilder, str); + case EFormat::Int8Vector: + return TKnnVectorSerializer::Deserialize(valueBuilder, str); + case EFormat::Uint8Vector: + return TKnnVectorSerializer::Deserialize(valueBuilder, str); + case EFormat::BitVector: + default: + return {}; + } + } + + struct TBitArray { + const ui64* data = nullptr; + ui64 bitLen = 0; + }; + + static TBitArray GetBitArray(const TStringRef& str) { + if (Y_UNLIKELY(str.Size() < 2)) + return {}; + const char* buf = str.Data(); + const ui64 len = 8 * (str.Size() - HeaderLen - 1) - static_cast(buf[str.Size() - HeaderLen - 1]); + return {reinterpret_cast(buf), len}; + } +}; diff --git a/ydb/library/yql/udfs/common/knn/knn.cpp b/ydb/library/yql/udfs/common/knn/knn.cpp new file mode 100644 index 000000000000..cb304c2077d4 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/knn.cpp @@ -0,0 +1,406 @@ +#include "knn-enumerator.h" +#include "knn-serializer.h" +#include "knn-distance.h" + +#include + +#include +#include +#include + +#include + +using namespace NYql; +using namespace NYql::NUdf; + +template <> +struct std::formatter: std::formatter { + template + auto format(const TStringRef& param, FormatContext& fc) const { + return std::formatter::format(std::string_view{param.Data(), param.Size()}, fc); + } +}; + +static constexpr const char TagStoredVector[] = "StoredVector"; + +static constexpr const char TagFloatVector[] = "FloatVector"; +using TFloatVector = TTagged; +static constexpr const char TagInt8Vector[] = "Int8Vector"; +using TInt8Vector = TTagged; +static constexpr const char TagUint8Vector[] = "Uint8Vector"; +using TUint8Vector = TTagged; +static constexpr const char TagBitVector[] = "BitVector"; +using TBitVector = TTagged; + +SIMPLE_STRICT_UDF(TToBinaryStringFloat, TFloatVector(TAutoMap>)) { + return TKnnVectorSerializer::Serialize(valueBuilder, args[0]); +} + +SIMPLE_STRICT_UDF(TToBinaryStringInt8, TInt8Vector(TAutoMap>)) { + return TKnnVectorSerializer::Serialize(valueBuilder, args[0]); +} + +SIMPLE_STRICT_UDF(TToBinaryStringUint8, TUint8Vector(TAutoMap>)) { + return TKnnVectorSerializer::Serialize(valueBuilder, args[0]); +} + +template +class TMultiSignatureBase: public TBoxedValue { +public: + using TBlockType = void; + using TTypeAwareMarker = void; + + explicit TMultiSignatureBase(IFunctionTypeInfoBuilder& builder) + : Pos_{GetSourcePosition(builder)} + { + } + + TUnboxedValue Run(const IValueBuilder* valueBuilder, const TUnboxedValuePod* args) const final try { + return static_cast(*this).RunImpl(valueBuilder, args); + } catch (const std::exception&) { + TStringBuilder sb; + sb << Pos_ << " "; + sb << CurrentExceptionMessage(); + sb << Endl << "[" << TStringBuf(Derived::Name()) << "]"; + UdfTerminate(sb.c_str()); + } + + TSourcePosition GetPos() const { + return Pos_; + } + +protected: + static TStringRef GetArg(ITypeInfoHelper& typeInfoHelper, const TType*& argType, IFunctionTypeInfoBuilder& builder) { + TStringRef tag = TagStoredVector; + if (const auto kind = typeInfoHelper.GetTypeKind(argType); kind == ETypeKind::Null) { + argType = builder.SimpleType(); + return tag; + } + const TOptionalTypeInspector optional{typeInfoHelper, argType}; + if (optional) { + argType = optional.GetItemType(); + } + const auto* dataType = argType; + const TTaggedTypeInspector tagged{typeInfoHelper, dataType}; + if (tagged) { + tag = tagged.GetTag(); + dataType = tagged.GetBaseType(); + } + const TDataTypeInspector data{typeInfoHelper, dataType}; + if (data && data.GetTypeId() == TDataType::Id) { + return tag; + } + return {}; + } + + static bool ValidTag(const TStringRef& tag, std::initializer_list&& allowedTags) { + return std::count(allowedTags.begin(), allowedTags.end(), tag) != 0; + } + +private: + TSourcePosition Pos_; +}; + +template +class TToBinaryStringBitImpl: public TMultiSignatureBase> { +public: + using TMultiSignatureBase>::TMultiSignatureBase; + + static const TStringRef& Name() { + static auto name = TStringRef::Of("ToBinaryStringBit"); + return name; + } + + TUnboxedValue RunImpl(const IValueBuilder* valueBuilder, const TUnboxedValuePod* args) const { + return TKnnBitVectorSerializer::Serialize(valueBuilder, args[0]); + } +}; + +class TToBinaryStringBit: public TMultiSignatureBase { +public: + using TMultiSignatureBase::TMultiSignatureBase; + + static const TStringRef& Name() { + static auto name = TStringRef::Of("ToBinaryStringBit"); + return name; + } + + static bool DeclareSignature(const TStringRef& name, TType* userType, IFunctionTypeInfoBuilder& builder, bool typesOnly) { + if (Name() != name) { + return false; + } + + auto typeInfoHelper = builder.TypeInfoHelper(); + Y_ENSURE(userType); + TTupleTypeInspector tuple{*typeInfoHelper, userType}; + Y_ENSURE(tuple); + Y_ENSURE(tuple.GetElementsCount() > 0); + TTupleTypeInspector argsTuple{*typeInfoHelper, tuple.GetElementType(0)}; + Y_ENSURE(argsTuple); + if (argsTuple.GetElementsCount() != 1) { + builder.SetError("One argument is expected"); + return true; + } + + auto argType = argsTuple.GetElementType(0); + if (const auto kind = typeInfoHelper->GetTypeKind(argType); kind == ETypeKind::Null) { + argType = builder.SimpleType>(); + } + if (const TOptionalTypeInspector optional{*typeInfoHelper, argType}; optional) { + argType = optional.GetItemType(); + } + auto type = EType::None; + if (const TListTypeInspector list{*typeInfoHelper, argType}; list) { + if (const TDataTypeInspector data{*typeInfoHelper, list.GetItemType()}; data) { + if (data.GetTypeId() == TDataType::Id) { + type = EType::Double; + } else if (data.GetTypeId() == TDataType::Id) { + type = EType::Float; + } else if (data.GetTypeId() == TDataType::Id) { + type = EType::Uint8; + } else if (data.GetTypeId() == TDataType::Id) { + type = EType::Int8; + } + } + } + if (type == EType::None) { + builder.SetError("'List' is expected"); + return true; + } + + builder.UserType(userType); + builder.Args(1)->Add(argType).Flags(ICallablePayload::TArgumentFlags::AutoMap); + builder.Returns().IsStrict(); + + if (!typesOnly) { + if (type == EType::Double) { + builder.Implementation(new TToBinaryStringBitImpl(builder)); + } else if (type == EType::Float) { + builder.Implementation(new TToBinaryStringBitImpl(builder)); + } else if (type == EType::Uint8) { + builder.Implementation(new TToBinaryStringBitImpl(builder)); + } else if (type == EType::Int8) { + builder.Implementation(new TToBinaryStringBitImpl(builder)); + } + } + return true; + } + +private: + enum class EType { + None, + Double, + Float, + Uint8, + Int8, + }; +}; + +class TFloatFromBinaryString: public TMultiSignatureBase { +public: + using TMultiSignatureBase::TMultiSignatureBase; + + static const TStringRef& Name() { + static auto name = TStringRef::Of("FloatFromBinaryString"); + return name; + } + + TUnboxedValue RunImpl(const IValueBuilder* valueBuilder, const TUnboxedValuePod* args) const { + return TKnnSerializerFacade::Deserialize(valueBuilder, args[0].AsStringRef()); + } + + static bool DeclareSignature(const TStringRef& name, TType* userType, IFunctionTypeInfoBuilder& builder, bool typesOnly) { + if (Name() != name) { + return false; + } + + auto typeInfoHelper = builder.TypeInfoHelper(); + Y_ENSURE(userType); + TTupleTypeInspector tuple{*typeInfoHelper, userType}; + Y_ENSURE(tuple); + Y_ENSURE(tuple.GetElementsCount() > 0); + TTupleTypeInspector argsTuple{*typeInfoHelper, tuple.GetElementType(0)}; + Y_ENSURE(argsTuple); + if (argsTuple.GetElementsCount() != 1) { + builder.SetError("One argument is expected"); + return true; + } + + auto argType = argsTuple.GetElementType(0); + auto argTag = GetArg(*typeInfoHelper, argType, builder); + if (!ValidTag(argTag, {TagStoredVector, TagFloatVector, TagInt8Vector, TagUint8Vector})) { + builder.SetError("A result from 'ToBinaryString[Float|Int8|Uint8]' is expected as an argument"); + return true; + } + + builder.UserType(userType); + builder.Args(1)->Add(argType).Flags(ICallablePayload::TArgumentFlags::AutoMap); + if (ValidTag(argTag, {TagFloatVector, TagInt8Vector, TagUint8Vector}) && argType == argsTuple.GetElementType(0)) { + builder.Returns>().IsStrict(); + } else { + builder.Returns>>().IsStrict(); + } + + if (!typesOnly) { + builder.Implementation(new TFloatFromBinaryString(builder)); + } + return true; + } +}; + +template +class TDistanceBase: public TMultiSignatureBase { + using Base = TMultiSignatureBase; + +public: + using Base::Base; + + static bool DeclareSignature(const TStringRef& name, TType* userType, IFunctionTypeInfoBuilder& builder, bool typesOnly) { + if (Derived::Name() != name) { + return false; + } + + auto typeInfoHelper = builder.TypeInfoHelper(); + Y_ENSURE(userType); + TTupleTypeInspector tuple{*typeInfoHelper, userType}; + Y_ENSURE(tuple); + Y_ENSURE(tuple.GetElementsCount() > 0); + TTupleTypeInspector argsTuple{*typeInfoHelper, tuple.GetElementType(0)}; + Y_ENSURE(argsTuple); + if (argsTuple.GetElementsCount() != 2) { + builder.SetError("Two arguments are expected"); + return true; + } + + auto arg0Type = argsTuple.GetElementType(0); + auto arg0Tag = Base::GetArg(*typeInfoHelper, arg0Type, builder); + auto arg1Type = argsTuple.GetElementType(1); + auto arg1Tag = Base::GetArg(*typeInfoHelper, arg1Type, builder); + + if (!Base::ValidTag(arg0Tag, {TagStoredVector, TagFloatVector, TagInt8Vector, TagUint8Vector, TagBitVector}) || + !Base::ValidTag(arg1Tag, {TagStoredVector, TagFloatVector, TagInt8Vector, TagUint8Vector, TagBitVector})) { + builder.SetError("A result from 'ToBinaryString[Float|Int8|Uint8]' is expected as an argument"); + return true; + } + + if (arg0Tag != arg1Tag && arg0Tag != TagStoredVector && arg1Tag != TagStoredVector) { + builder.SetError(std::format("Arguments should have same tags, but '{}' is not equal to '{}'", arg0Tag, arg1Tag)); + return true; + } + + builder.UserType(userType); + builder.Args(2)->Add(arg0Type).Flags(ICallablePayload::TArgumentFlags::AutoMap).Add(arg1Type).Flags(ICallablePayload::TArgumentFlags::AutoMap); + builder.Returns>().IsStrict(); + + if (!typesOnly) { + builder.Implementation(new Derived(builder)); + } + return true; + } +}; + +class TInnerProductSimilarity: public TDistanceBase { +public: + using TDistanceBase::TDistanceBase; + + static const TStringRef& Name() { + static auto name = TStringRef::Of("InnerProductSimilarity"); + return name; + } + + TUnboxedValue RunImpl(const IValueBuilder* valueBuilder, const TUnboxedValuePod* args) const { + Y_UNUSED(valueBuilder); + const auto ret = KnnDotProduct(args[0].AsStringRef(), args[1].AsStringRef()); + if (Y_UNLIKELY(!ret)) + return {}; + return TUnboxedValuePod{*ret}; + } +}; + +class TCosineSimilarity: public TDistanceBase { +public: + using TDistanceBase::TDistanceBase; + + static const TStringRef& Name() { + static auto name = TStringRef::Of("CosineSimilarity"); + return name; + } + + TUnboxedValue RunImpl(const IValueBuilder* valueBuilder, const TUnboxedValuePod* args) const { + Y_UNUSED(valueBuilder); + const auto ret = KnnCosineSimilarity(args[0].AsStringRef(), args[1].AsStringRef()); + if (Y_UNLIKELY(!ret)) + return {}; + return TUnboxedValuePod{*ret}; + } +}; + +class TCosineDistance: public TDistanceBase { +public: + using TDistanceBase::TDistanceBase; + + static const TStringRef& Name() { + static auto name = TStringRef::Of("CosineDistance"); + return name; + } + + TUnboxedValue RunImpl(const IValueBuilder* valueBuilder, const TUnboxedValuePod* args) const { + Y_UNUSED(valueBuilder); + const auto ret = KnnCosineSimilarity(args[0].AsStringRef(), args[1].AsStringRef()); + if (Y_UNLIKELY(!ret)) + return {}; + return TUnboxedValuePod{1 - *ret}; + } +}; + +class TManhattanDistance: public TDistanceBase { +public: + using TDistanceBase::TDistanceBase; + + static const TStringRef& Name() { + static auto name = TStringRef::Of("ManhattanDistance"); + return name; + } + + TUnboxedValue RunImpl(const IValueBuilder* valueBuilder, const TUnboxedValuePod* args) const { + Y_UNUSED(valueBuilder); + const auto ret = KnnManhattanDistance(args[0].AsStringRef(), args[1].AsStringRef()); + if (Y_UNLIKELY(!ret)) + return {}; + return TUnboxedValuePod{*ret}; + } +}; + +class TEuclideanDistance: public TDistanceBase { +public: + using TDistanceBase::TDistanceBase; + + static const TStringRef& Name() { + static auto name = TStringRef::Of("EuclideanDistance"); + return name; + } + + TUnboxedValue RunImpl(const IValueBuilder* valueBuilder, const TUnboxedValuePod* args) const { + Y_UNUSED(valueBuilder); + const auto ret = KnnEuclideanDistance(args[0].AsStringRef(), args[1].AsStringRef()); + if (Y_UNLIKELY(!ret)) + return {}; + return TUnboxedValuePod{*ret}; + } +}; + +// TODO IR for Distance functions? + +SIMPLE_MODULE(TKnnModule, + TToBinaryStringFloat, + TToBinaryStringInt8, + TToBinaryStringUint8, + TToBinaryStringBit, + TFloatFromBinaryString, + TInnerProductSimilarity, + TCosineSimilarity, + TCosineDistance, + TManhattanDistance, + TEuclideanDistance) + +REGISTER_MODULES(TKnnModule) diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/result.json b/ydb/library/yql/udfs/common/knn/test/canondata/result.json new file mode 100644 index 000000000000..3185a3e7c98b --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/result.json @@ -0,0 +1,97 @@ +{ + "test.test[BitSerialization]": [ + { + "uri": "file://test.test_BitSerialization_/results.txt" + } + ], + "test.test[CosineDistance]": [ + { + "uri": "file://test.test_CosineDistance_/results.txt" + } + ], + "test.test[CosineSimilarity]": [ + { + "uri": "file://test.test_CosineSimilarity_/results.txt" + } + ], + "test.test[ErrorDistanceInvalidFormat]": [ + { + "uri": "file://test.test_ErrorDistanceInvalidFormat_/results.txt" + } + ], + "test.test[ErrorDistanceSameFormat]": [ + { + "uri": "file://test.test_ErrorDistanceSameFormat_/results.txt" + } + ], + "test.test[ErrorDistanceSameSize]": [ + { + "uri": "file://test.test_ErrorDistanceSameSize_/results.txt" + } + ], + "test.test[ErrorDistanceSameTag]": [ + { + "uri": "file://test.test_ErrorDistanceSameTag_/extracted" + } + ], + "test.test[ErrorFloatFromBinaryStringBitVector]": [ + { + "uri": "file://test.test_ErrorFloatFromBinaryStringBitVector_/extracted" + } + ], + "test.test[ErrorFloatFromBinaryStringEmpty]": [ + { + "uri": "file://test.test_ErrorFloatFromBinaryStringEmpty_/results.txt" + } + ], + "test.test[ErrorFloatFromBinaryStringInvalid]": [ + { + "uri": "file://test.test_ErrorFloatFromBinaryStringInvalid_/results.txt" + } + ], + "test.test[EuclideanDistance]": [ + { + "uri": "file://test.test_EuclideanDistance_/results.txt" + } + ], + "test.test[InnerProductSimilarity]": [ + { + "uri": "file://test.test_InnerProductSimilarity_/results.txt" + } + ], + "test.test[Int8Serialization]": [ + { + "uri": "file://test.test_Int8Serialization_/results.txt" + } + ], + "test.test[LazyListSerialization]": [ + { + "uri": "file://test.test_LazyListSerialization_/results.txt" + } + ], + "test.test[ListSerialization]": [ + { + "uri": "file://test.test_ListSerialization_/results.txt" + } + ], + "test.test[ManhattanDistance]": [ + { + "uri": "file://test.test_ManhattanDistance_/results.txt" + } + ], + "test.test[NullForwarding]": [ + { + "uri": "file://test.test_NullForwarding_/results.txt" + } + ], + "test.test[OptionalAutoUnpacking]": [ + { + "uri": "file://test.test_OptionalAutoUnpacking_/results.txt" + } + ], + "test.test[Uint8Serialization]": [ + { + "uri": "file://test.test_Uint8Serialization_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_BitSerialization_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_BitSerialization_/results.txt new file mode 100644 index 000000000000..46103e18ad49 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_BitSerialization_/results.txt @@ -0,0 +1,1482 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "//////////8ACg==" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "//////////8PBAo=" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "////////////AAo=" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "/////////////wAK" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "//////////////8ACg==" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "////////////////AAo=" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "/////////////////wAK" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "//////////////////8ACg==" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "////////////////////AAo=" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "////////////////////DwQK" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\0\4\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\x0F\4\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "/wAK" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "//8ACg==" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "////AAo=" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "/////wAK" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "//////8ACg==" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "////////AAo=" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "/////////wAK" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + [ + "/////////w8ECg==" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\4\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "\0\0\0\0\0\0\0\0\4\n" + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_CosineDistance_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_CosineDistance_/results.txt new file mode 100644 index 000000000000..afc1172eaabe --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_CosineDistance_/results.txt @@ -0,0 +1,3370 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.025368094" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.025368094" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.025368094" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.29289323" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.29289323" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "0" + ] + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_CosineSimilarity_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_CosineSimilarity_/results.txt new file mode 100644 index 000000000000..2bcfadd0de08 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_CosineSimilarity_/results.txt @@ -0,0 +1,3370 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.9746319" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.9746319" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.9746319" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.70710677" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.70710677" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "1" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "1" + ] + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceInvalidFormat_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceInvalidFormat_/results.txt new file mode 100644 index 000000000000..b7f6606a2521 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceInvalidFormat_/results.txt @@ -0,0 +1,31 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + # + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameFormat_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameFormat_/results.txt new file mode 100644 index 000000000000..b7f6606a2521 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameFormat_/results.txt @@ -0,0 +1,31 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + # + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameSize_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameSize_/results.txt new file mode 100644 index 000000000000..b7f6606a2521 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameSize_/results.txt @@ -0,0 +1,31 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + # + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameTag_/extracted b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameTag_/extracted new file mode 100644 index 000000000000..5c24d77bbe99 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorDistanceSameTag_/extracted @@ -0,0 +1,11 @@ +/program.sql:
: Error: Type annotation + + /program.sql:
:6:1: Error: At function: RemovePrefixMembers, At function: Unordered, At function: PersistableRepr, At function: OrderedSqlProject, At function: SqlProjectItem + select Knn::CosineDistance($vector1, $vector2); + ^ + /program.sql:
:6:13: Error: At function: Apply, At function: Udf, At Knn.CosineDistance + select Knn::CosineDistance($vector1, $vector2); + ^ + /program.sql:
:6:13: Error: Failed to find UDF function: Knn.CosineDistance, reason: Error: Module: Knn, function: CosineDistance, error: Arguments should have same tags, but 'FloatVector' is not equal to 'Uint8Vector' + select Knn::CosineDistance($vector1, $vector2); + ^ \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringBitVector_/extracted b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringBitVector_/extracted new file mode 100644 index 000000000000..5919d1fd61bb --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringBitVector_/extracted @@ -0,0 +1,11 @@ +/program.sql:
: Error: Type annotation + + /program.sql:
:4:1: Error: At function: RemovePrefixMembers, At function: Unordered, At function: PersistableRepr, At function: OrderedSqlProject, At function: SqlProjectItem + select Knn::FloatFromBinaryString($bitvector); + ^ + /program.sql:
:4:13: Error: At function: Apply, At function: Udf, At Knn.FloatFromBinaryString + select Knn::FloatFromBinaryString($bitvector); + ^ + /program.sql:
:4:13: Error: Failed to find UDF function: Knn.FloatFromBinaryString, reason: Error: Module: Knn, function: FloatFromBinaryString, error: A result from 'ToBinaryString[Float|Int8|Uint8]' is expected as an argument + select Knn::FloatFromBinaryString($bitvector); + ^ \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringEmpty_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringEmpty_/results.txt new file mode 100644 index 000000000000..9c8a428ca922 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringEmpty_/results.txt @@ -0,0 +1,34 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + # + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringInvalid_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringInvalid_/results.txt new file mode 100644 index 000000000000..9c8a428ca922 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ErrorFloatFromBinaryStringInvalid_/results.txt @@ -0,0 +1,34 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + # + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_EuclideanDistance_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_EuclideanDistance_/results.txt new file mode 100644 index 000000000000..d83d2f972f9d --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_EuclideanDistance_/results.txt @@ -0,0 +1,3370 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "5.196152" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "2" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "5.196152" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "5" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "5" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "9" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "9" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "10" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "10" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "10" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "11" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "9" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "9" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "10" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "10" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "10" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "11" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "2" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "2" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "4" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "4" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "5" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "6" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "6" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "7" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "7" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "2" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "2" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "4" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "4" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "5" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "6" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "6" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "7" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "7" + ] + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_InnerProductSimilarity_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_InnerProductSimilarity_/results.txt new file mode 100644 index 000000000000..814fd28cba4c --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_InnerProductSimilarity_/results.txt @@ -0,0 +1,3370 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + %true + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "14" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "32" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "32" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "64" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "32" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "64" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "68" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "72" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "80" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "88" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "96" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "104" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "112" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "120" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "124" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "4" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "16" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "24" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "32" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "40" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "48" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "56" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "60" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "0" + ] + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_Int8Serialization_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_Int8Serialization_/results.txt new file mode 100644 index 000000000000..3d0013376b0d --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_Int8Serialization_/results.txt @@ -0,0 +1,217 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "TaggedType"; + "Int8Vector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "\1\2\3\4\5\3" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1"; + "2"; + "3"; + "4"; + "5" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.025368094" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.025368094" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.025368094" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.025368094" + ] + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_LazyListSerialization_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_LazyListSerialization_/results.txt new file mode 100644 index 000000000000..d8041dfae7c9 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_LazyListSerialization_/results.txt @@ -0,0 +1,95 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "TaggedType"; + "FloatVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "AACAPwAAAEAAAEBAAACAQAAAoEAB" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1"; + "2"; + "3"; + "4"; + "5" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ListSerialization_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ListSerialization_/results.txt new file mode 100644 index 000000000000..6ea5ffdac643 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ListSerialization_/results.txt @@ -0,0 +1,215 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "TaggedType"; + "FloatVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "mpmZPzMzE0CamVlAAACQQDMzs0AB" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1.2"; + "2.3"; + "3.4"; + "4.5"; + "5.6" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "@\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "@\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "@\0\n" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "TaggedType"; + "BitVector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "@\0\n" + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ManhattanDistance_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ManhattanDistance_/results.txt new file mode 100644 index 000000000000..ecc547e2fe8f --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_ManhattanDistance_/results.txt @@ -0,0 +1,3370 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "9" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "3" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "9" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "9" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "64" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "64" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "32" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "64" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "68" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "72" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "80" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "88" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "96" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "104" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "112" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "120" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "124" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "64"; + [ + "64" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "68"; + [ + "68" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "72"; + [ + "72" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "80"; + [ + "80" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "88"; + [ + "88" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "96"; + [ + "96" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "104"; + [ + "104" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "112"; + [ + "112" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "120"; + [ + "120" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "124"; + [ + "124" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "4" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "16" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "24" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "32" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "40" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "48" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "56" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "60" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "0"; + [ + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "4"; + [ + "4" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "8"; + [ + "8" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "16"; + [ + "16" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "24"; + [ + "24" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "32"; + [ + "32" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "40"; + [ + "40" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "48"; + [ + "48" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "56"; + [ + "56" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "60"; + [ + "60" + ] + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_NullForwarding_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_NullForwarding_/results.txt new file mode 100644 index 000000000000..594282ab208b --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_NullForwarding_/results.txt @@ -0,0 +1,184 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_OptionalAutoUnpacking_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_OptionalAutoUnpacking_/results.txt new file mode 100644 index 000000000000..f4ba19bab626 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_OptionalAutoUnpacking_/results.txt @@ -0,0 +1,215 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + %true + ] + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/canondata/test.test_Uint8Serialization_/results.txt b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_Uint8Serialization_/results.txt new file mode 100644 index 000000000000..6e5fe282f1c3 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/canondata/test.test_Uint8Serialization_/results.txt @@ -0,0 +1,217 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "TaggedType"; + "Uint8Vector"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "\1\2\3\4\5\2" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1"; + "2"; + "3"; + "4"; + "5" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.025368094" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.025368094" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.025368094" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0.025368094" + ] + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/knn/test/cases/BitSerialization.sql b/ydb/library/yql/udfs/common/knn/test/cases/BitSerialization.sql new file mode 100644 index 000000000000..cf8a6ccc1e26 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/BitSerialization.sql @@ -0,0 +1,83 @@ +$bitvector_pos_1_00 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 00)); +$bitvector_pos_1_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 04)); +$bitvector_pos_1_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 08)); +$bitvector_pos_1_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 16)); +$bitvector_pos_1_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 24)); +$bitvector_pos_1_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 32)); +$bitvector_pos_1_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 40)); +$bitvector_pos_1_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 48)); +$bitvector_pos_1_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 56)); +$bitvector_pos_1_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 60)); + +$bitvector_neg_1_00 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 00)); +$bitvector_neg_1_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 04)); +$bitvector_neg_1_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 08)); +$bitvector_neg_1_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 16)); +$bitvector_neg_1_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 24)); +$bitvector_neg_1_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 32)); +$bitvector_neg_1_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 40)); +$bitvector_neg_1_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 48)); +$bitvector_neg_1_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 56)); +$bitvector_neg_1_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 60)); + +$bitvector_pos_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 04)); +$bitvector_pos_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 08)); +$bitvector_pos_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 16)); +$bitvector_pos_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 24)); +$bitvector_pos_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 32)); +$bitvector_pos_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 40)); +$bitvector_pos_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 48)); +$bitvector_pos_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 56)); +$bitvector_pos_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 60)); + +$bitvector_neg_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 04)); +$bitvector_neg_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 08)); +$bitvector_neg_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 16)); +$bitvector_neg_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 24)); +$bitvector_neg_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 32)); +$bitvector_neg_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 40)); +$bitvector_neg_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 48)); +$bitvector_neg_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 56)); +$bitvector_neg_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 60)); + +select Len(Untag($bitvector_pos_1_00, "BitVector")) == 8 + 0 + 2, $bitvector_pos_1_00; +select Len(Untag($bitvector_pos_1_04, "BitVector")) == 8 + 1 + 2, $bitvector_pos_1_04; +select Len(Untag($bitvector_pos_1_08, "BitVector")) == 8 + 1 + 2, $bitvector_pos_1_08; +select Len(Untag($bitvector_pos_1_16, "BitVector")) == 8 + 2 + 2, $bitvector_pos_1_16; +select Len(Untag($bitvector_pos_1_24, "BitVector")) == 8 + 3 + 2, $bitvector_pos_1_24; +select Len(Untag($bitvector_pos_1_32, "BitVector")) == 8 + 4 + 2, $bitvector_pos_1_32; +select Len(Untag($bitvector_pos_1_40, "BitVector")) == 8 + 5 + 2, $bitvector_pos_1_40; +select Len(Untag($bitvector_pos_1_48, "BitVector")) == 8 + 6 + 2, $bitvector_pos_1_48; +select Len(Untag($bitvector_pos_1_56, "BitVector")) == 8 + 7 + 2, $bitvector_pos_1_56; +select Len(Untag($bitvector_pos_1_60, "BitVector")) == 8 + 8 + 2, $bitvector_pos_1_60; + +select Len(Untag($bitvector_neg_1_00, "BitVector")) == 8 + 0 + 2, $bitvector_neg_1_00; +select Len(Untag($bitvector_neg_1_04, "BitVector")) == 8 + 1 + 2, $bitvector_neg_1_04; +select Len(Untag($bitvector_neg_1_08, "BitVector")) == 8 + 1 + 2, $bitvector_neg_1_08; +select Len(Untag($bitvector_neg_1_16, "BitVector")) == 8 + 2 + 2, $bitvector_neg_1_16; +select Len(Untag($bitvector_neg_1_24, "BitVector")) == 8 + 3 + 2, $bitvector_neg_1_24; +select Len(Untag($bitvector_neg_1_32, "BitVector")) == 8 + 4 + 2, $bitvector_neg_1_32; +select Len(Untag($bitvector_neg_1_40, "BitVector")) == 8 + 5 + 2, $bitvector_neg_1_40; +select Len(Untag($bitvector_neg_1_48, "BitVector")) == 8 + 6 + 2, $bitvector_neg_1_48; +select Len(Untag($bitvector_neg_1_56, "BitVector")) == 8 + 7 + 2, $bitvector_neg_1_56; +select Len(Untag($bitvector_neg_1_60, "BitVector")) == 8 + 8 + 2, $bitvector_neg_1_60; + +select Len(Untag($bitvector_pos_04, "BitVector")) == 1 + 2, $bitvector_pos_04; +select Len(Untag($bitvector_pos_08, "BitVector")) == 1 + 2, $bitvector_pos_08; +select Len(Untag($bitvector_pos_16, "BitVector")) == 2 + 2, $bitvector_pos_16; +select Len(Untag($bitvector_pos_24, "BitVector")) == 3 + 2, $bitvector_pos_24; +select Len(Untag($bitvector_pos_32, "BitVector")) == 4 + 2, $bitvector_pos_32; +select Len(Untag($bitvector_pos_40, "BitVector")) == 5 + 2, $bitvector_pos_40; +select Len(Untag($bitvector_pos_48, "BitVector")) == 6 + 2, $bitvector_pos_48; +select Len(Untag($bitvector_pos_56, "BitVector")) == 7 + 2, $bitvector_pos_56; +select Len(Untag($bitvector_pos_60, "BitVector")) == 8 + 2, $bitvector_pos_60; + +select Len(Untag($bitvector_neg_04, "BitVector")) == 1 + 2, $bitvector_neg_04; +select Len(Untag($bitvector_neg_08, "BitVector")) == 1 + 2, $bitvector_neg_08; +select Len(Untag($bitvector_neg_16, "BitVector")) == 2 + 2, $bitvector_neg_16; +select Len(Untag($bitvector_neg_24, "BitVector")) == 3 + 2, $bitvector_neg_24; +select Len(Untag($bitvector_neg_32, "BitVector")) == 4 + 2, $bitvector_neg_32; +select Len(Untag($bitvector_neg_40, "BitVector")) == 5 + 2, $bitvector_neg_40; +select Len(Untag($bitvector_neg_48, "BitVector")) == 6 + 2, $bitvector_neg_48; +select Len(Untag($bitvector_neg_56, "BitVector")) == 7 + 2, $bitvector_neg_56; +select Len(Untag($bitvector_neg_60, "BitVector")) == 8 + 2, $bitvector_neg_60; diff --git a/ydb/library/yql/udfs/common/knn/test/cases/CosineDistance.sql b/ydb/library/yql/udfs/common/knn/test/cases/CosineDistance.sql new file mode 100644 index 000000000000..30ca96ce1771 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/CosineDistance.sql @@ -0,0 +1,168 @@ +--fixed size vector +$vector1 = Knn::ToBinaryStringFloat([1.0f, 2.0f, 3.0f]); +$vector2 = Knn::ToBinaryStringFloat([4.0f, 5.0f, 6.0f]); +select Knn::CosineDistance($vector1, $vector2); + +--exact vectors +select Knn::CosineDistance($vector1, $vector1); + +--orthogonal vectors +$orthogonal_vector1 = Knn::ToBinaryStringUint8([1ut, 0ut]); +$orthogonal_vector2 = Knn::ToBinaryStringUint8([0ut, 2ut]); +select Knn::CosineDistance($orthogonal_vector1, $orthogonal_vector2); + + +--float vector +$float_vector1 = Knn::ToBinaryStringFloat([1.0f, 2.0f, 3.0f]); +$float_vector2 = Knn::ToBinaryStringFloat([4.0f, 5.0f, 6.0f]); +select Knn::CosineDistance($float_vector1, $float_vector2); + +--byte vector +$byte_vector1 = Knn::ToBinaryStringUint8([1ut, 2ut, 3ut]); +$byte_vector2 = Knn::ToBinaryStringUint8([4ut, 5ut, 6ut]); +select Knn::CosineDistance($byte_vector1, $byte_vector2); + +--bit vector +$bitvector_positive = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64)); +$bitvector_positive_double_size = Knn::ToBinaryStringBit(ListReplicate(1.0f, 128)); +$bitvector_negative = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64)); +$bitvector_negative_and_positive = Knn::ToBinaryStringBit(ListFromRange(-63.0f, 64.1f)); +$bitvector_negative_and_positive_striped = Knn::ToBinaryStringBit(ListFlatten(ListReplicate([-1.0f, 1.0f], 32))); + +select Knn::CosineDistance($bitvector_positive, $bitvector_negative); +select Knn::CosineDistance($bitvector_positive_double_size, $bitvector_negative_and_positive); +select Knn::CosineDistance($bitvector_positive, $bitvector_negative_and_positive_striped); + +--bit vector -- with tail +$bitvector_pos_1_00 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 00)); +$bitvector_pos_1_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 04)); +$bitvector_pos_1_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 08)); +$bitvector_pos_1_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 16)); +$bitvector_pos_1_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 24)); +$bitvector_pos_1_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 32)); +$bitvector_pos_1_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 40)); +$bitvector_pos_1_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 48)); +$bitvector_pos_1_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 56)); +$bitvector_pos_1_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 60)); + +$bitvector_neg_1_00 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 00)); +$bitvector_neg_1_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 04)); +$bitvector_neg_1_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 08)); +$bitvector_neg_1_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 16)); +$bitvector_neg_1_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 24)); +$bitvector_neg_1_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 32)); +$bitvector_neg_1_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 40)); +$bitvector_neg_1_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 48)); +$bitvector_neg_1_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 56)); +$bitvector_neg_1_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 60)); + +select 64 + 00, Knn::CosineDistance($bitvector_pos_1_00, $bitvector_pos_1_00); +select 64 + 04, Knn::CosineDistance($bitvector_pos_1_04, $bitvector_pos_1_04); +select 64 + 08, Knn::CosineDistance($bitvector_pos_1_08, $bitvector_pos_1_08); +select 64 + 16, Knn::CosineDistance($bitvector_pos_1_16, $bitvector_pos_1_16); +select 64 + 24, Knn::CosineDistance($bitvector_pos_1_24, $bitvector_pos_1_24); +select 64 + 32, Knn::CosineDistance($bitvector_pos_1_32, $bitvector_pos_1_32); +select 64 + 40, Knn::CosineDistance($bitvector_pos_1_40, $bitvector_pos_1_40); +select 64 + 48, Knn::CosineDistance($bitvector_pos_1_48, $bitvector_pos_1_48); +select 64 + 56, Knn::CosineDistance($bitvector_pos_1_56, $bitvector_pos_1_56); +select 64 + 60, Knn::CosineDistance($bitvector_pos_1_60, $bitvector_pos_1_60); + +select 64 + 00, Knn::CosineDistance($bitvector_neg_1_00, $bitvector_neg_1_00); +select 64 + 04, Knn::CosineDistance($bitvector_neg_1_04, $bitvector_neg_1_04); +select 64 + 08, Knn::CosineDistance($bitvector_neg_1_08, $bitvector_neg_1_08); +select 64 + 16, Knn::CosineDistance($bitvector_neg_1_16, $bitvector_neg_1_16); +select 64 + 24, Knn::CosineDistance($bitvector_neg_1_24, $bitvector_neg_1_24); +select 64 + 32, Knn::CosineDistance($bitvector_neg_1_32, $bitvector_neg_1_32); +select 64 + 40, Knn::CosineDistance($bitvector_neg_1_40, $bitvector_neg_1_40); +select 64 + 48, Knn::CosineDistance($bitvector_neg_1_48, $bitvector_neg_1_48); +select 64 + 56, Knn::CosineDistance($bitvector_neg_1_56, $bitvector_neg_1_56); +select 64 + 60, Knn::CosineDistance($bitvector_neg_1_60, $bitvector_neg_1_60); + +select 64 + 00, Knn::CosineDistance($bitvector_pos_1_00, $bitvector_neg_1_00); +select 64 + 04, Knn::CosineDistance($bitvector_pos_1_04, $bitvector_neg_1_04); +select 64 + 08, Knn::CosineDistance($bitvector_pos_1_08, $bitvector_neg_1_08); +select 64 + 16, Knn::CosineDistance($bitvector_pos_1_16, $bitvector_neg_1_16); +select 64 + 24, Knn::CosineDistance($bitvector_pos_1_24, $bitvector_neg_1_24); +select 64 + 32, Knn::CosineDistance($bitvector_pos_1_32, $bitvector_neg_1_32); +select 64 + 40, Knn::CosineDistance($bitvector_pos_1_40, $bitvector_neg_1_40); +select 64 + 48, Knn::CosineDistance($bitvector_pos_1_48, $bitvector_neg_1_48); +select 64 + 56, Knn::CosineDistance($bitvector_pos_1_56, $bitvector_neg_1_56); +select 64 + 60, Knn::CosineDistance($bitvector_pos_1_60, $bitvector_neg_1_60); + +select 64 + 00, Knn::CosineDistance($bitvector_neg_1_00, $bitvector_pos_1_00); +select 64 + 04, Knn::CosineDistance($bitvector_neg_1_04, $bitvector_pos_1_04); +select 64 + 08, Knn::CosineDistance($bitvector_neg_1_08, $bitvector_pos_1_08); +select 64 + 16, Knn::CosineDistance($bitvector_neg_1_16, $bitvector_pos_1_16); +select 64 + 24, Knn::CosineDistance($bitvector_neg_1_24, $bitvector_pos_1_24); +select 64 + 32, Knn::CosineDistance($bitvector_neg_1_32, $bitvector_pos_1_32); +select 64 + 40, Knn::CosineDistance($bitvector_neg_1_40, $bitvector_pos_1_40); +select 64 + 48, Knn::CosineDistance($bitvector_neg_1_48, $bitvector_pos_1_48); +select 64 + 56, Knn::CosineDistance($bitvector_neg_1_56, $bitvector_pos_1_56); +select 64 + 60, Knn::CosineDistance($bitvector_neg_1_60, $bitvector_pos_1_60); + +--bit vector -- only tail +$bitvector_pos_00 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 00)); +$bitvector_pos_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 04)); +$bitvector_pos_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 08)); +$bitvector_pos_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 16)); +$bitvector_pos_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 24)); +$bitvector_pos_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 32)); +$bitvector_pos_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 40)); +$bitvector_pos_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 48)); +$bitvector_pos_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 56)); +$bitvector_pos_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 60)); + +$bitvector_neg_00 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 00)); +$bitvector_neg_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 04)); +$bitvector_neg_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 08)); +$bitvector_neg_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 16)); +$bitvector_neg_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 24)); +$bitvector_neg_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 32)); +$bitvector_neg_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 40)); +$bitvector_neg_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 48)); +$bitvector_neg_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 56)); +$bitvector_neg_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 60)); + +select 00, Knn::CosineDistance($bitvector_pos_00, $bitvector_pos_00); +select 04, Knn::CosineDistance($bitvector_pos_04, $bitvector_pos_04); +select 08, Knn::CosineDistance($bitvector_pos_08, $bitvector_pos_08); +select 16, Knn::CosineDistance($bitvector_pos_16, $bitvector_pos_16); +select 24, Knn::CosineDistance($bitvector_pos_24, $bitvector_pos_24); +select 32, Knn::CosineDistance($bitvector_pos_32, $bitvector_pos_32); +select 40, Knn::CosineDistance($bitvector_pos_40, $bitvector_pos_40); +select 48, Knn::CosineDistance($bitvector_pos_48, $bitvector_pos_48); +select 56, Knn::CosineDistance($bitvector_pos_56, $bitvector_pos_56); +select 60, Knn::CosineDistance($bitvector_pos_60, $bitvector_pos_60); + +select 00, Knn::CosineDistance($bitvector_neg_00, $bitvector_neg_00); +select 04, Knn::CosineDistance($bitvector_neg_04, $bitvector_neg_04); +select 08, Knn::CosineDistance($bitvector_neg_08, $bitvector_neg_08); +select 16, Knn::CosineDistance($bitvector_neg_16, $bitvector_neg_16); +select 24, Knn::CosineDistance($bitvector_neg_24, $bitvector_neg_24); +select 32, Knn::CosineDistance($bitvector_neg_32, $bitvector_neg_32); +select 40, Knn::CosineDistance($bitvector_neg_40, $bitvector_neg_40); +select 48, Knn::CosineDistance($bitvector_neg_48, $bitvector_neg_48); +select 56, Knn::CosineDistance($bitvector_neg_56, $bitvector_neg_56); +select 60, Knn::CosineDistance($bitvector_neg_60, $bitvector_neg_60); + +select 00, Knn::CosineDistance($bitvector_pos_00, $bitvector_neg_00); +select 04, Knn::CosineDistance($bitvector_pos_04, $bitvector_neg_04); +select 08, Knn::CosineDistance($bitvector_pos_08, $bitvector_neg_08); +select 16, Knn::CosineDistance($bitvector_pos_16, $bitvector_neg_16); +select 24, Knn::CosineDistance($bitvector_pos_24, $bitvector_neg_24); +select 32, Knn::CosineDistance($bitvector_pos_32, $bitvector_neg_32); +select 40, Knn::CosineDistance($bitvector_pos_40, $bitvector_neg_40); +select 48, Knn::CosineDistance($bitvector_pos_48, $bitvector_neg_48); +select 56, Knn::CosineDistance($bitvector_pos_56, $bitvector_neg_56); +select 60, Knn::CosineDistance($bitvector_pos_60, $bitvector_neg_60); + +select 00, Knn::CosineDistance($bitvector_neg_00, $bitvector_pos_00); +select 04, Knn::CosineDistance($bitvector_neg_04, $bitvector_pos_04); +select 08, Knn::CosineDistance($bitvector_neg_08, $bitvector_pos_08); +select 16, Knn::CosineDistance($bitvector_neg_16, $bitvector_pos_16); +select 24, Knn::CosineDistance($bitvector_neg_24, $bitvector_pos_24); +select 32, Knn::CosineDistance($bitvector_neg_32, $bitvector_pos_32); +select 40, Knn::CosineDistance($bitvector_neg_40, $bitvector_pos_40); +select 48, Knn::CosineDistance($bitvector_neg_48, $bitvector_pos_48); +select 56, Knn::CosineDistance($bitvector_neg_56, $bitvector_pos_56); +select 60, Knn::CosineDistance($bitvector_neg_60, $bitvector_pos_60); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/CosineSimilarity.sql b/ydb/library/yql/udfs/common/knn/test/cases/CosineSimilarity.sql new file mode 100644 index 000000000000..aaaa1346eaa3 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/CosineSimilarity.sql @@ -0,0 +1,167 @@ +--fixed size vector +$vector1 = Knn::ToBinaryStringFloat([1.0f, 2.0f, 3.0f]); +$vector2 = Knn::ToBinaryStringFloat([4.0f, 5.0f, 6.0f]); +select Knn::CosineSimilarity($vector1, $vector2); + +--exact vectors +select Knn::CosineSimilarity($vector1, $vector1); + +--orthogonal vectors +$orthogonal_vector1 = Knn::ToBinaryStringUint8([1ut, 0ut]); +$orthogonal_vector2 = Knn::ToBinaryStringUint8([0ut, 2ut]); +select Knn::CosineSimilarity($orthogonal_vector1, $orthogonal_vector2); + +--float vector +$float_vector1 = Knn::ToBinaryStringFloat([1.0f, 2.0f, 3.0f]); +$float_vector2 = Knn::ToBinaryStringFloat([4.0f, 5.0f, 6.0f]); +select Knn::CosineSimilarity($float_vector1, $float_vector2); + +--byte vector +$byte_vector1 = Knn::ToBinaryStringUint8([1ut, 2ut, 3ut]); +$byte_vector2 = Knn::ToBinaryStringUint8([4ut, 5ut, 6ut]); +select Knn::CosineSimilarity($byte_vector1, $byte_vector2); + +--bit vector +$bitvector_positive = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64)); +$bitvector_positive_double_size = Knn::ToBinaryStringBit(ListReplicate(1.0f, 128)); +$bitvector_negative = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64)); +$bitvector_negative_and_positive = Knn::ToBinaryStringBit(ListFromRange(-63.0f, 64.1f)); +$bitvector_negative_and_positive_striped = Knn::ToBinaryStringBit(ListFlatten(ListReplicate([-1.0f, 1.0f], 32))); + +select Knn::CosineSimilarity($bitvector_positive, $bitvector_negative); +select Knn::CosineSimilarity($bitvector_positive_double_size, $bitvector_negative_and_positive); +select Knn::CosineSimilarity($bitvector_positive, $bitvector_negative_and_positive_striped); + +--bit vector -- with tail +$bitvector_pos_1_00 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 00)); +$bitvector_pos_1_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 04)); +$bitvector_pos_1_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 08)); +$bitvector_pos_1_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 16)); +$bitvector_pos_1_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 24)); +$bitvector_pos_1_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 32)); +$bitvector_pos_1_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 40)); +$bitvector_pos_1_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 48)); +$bitvector_pos_1_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 56)); +$bitvector_pos_1_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 60)); + +$bitvector_neg_1_00 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 00)); +$bitvector_neg_1_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 04)); +$bitvector_neg_1_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 08)); +$bitvector_neg_1_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 16)); +$bitvector_neg_1_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 24)); +$bitvector_neg_1_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 32)); +$bitvector_neg_1_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 40)); +$bitvector_neg_1_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 48)); +$bitvector_neg_1_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 56)); +$bitvector_neg_1_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 60)); + +select 64 + 00, Knn::CosineSimilarity($bitvector_pos_1_00, $bitvector_pos_1_00); +select 64 + 04, Knn::CosineSimilarity($bitvector_pos_1_04, $bitvector_pos_1_04); +select 64 + 08, Knn::CosineSimilarity($bitvector_pos_1_08, $bitvector_pos_1_08); +select 64 + 16, Knn::CosineSimilarity($bitvector_pos_1_16, $bitvector_pos_1_16); +select 64 + 24, Knn::CosineSimilarity($bitvector_pos_1_24, $bitvector_pos_1_24); +select 64 + 32, Knn::CosineSimilarity($bitvector_pos_1_32, $bitvector_pos_1_32); +select 64 + 40, Knn::CosineSimilarity($bitvector_pos_1_40, $bitvector_pos_1_40); +select 64 + 48, Knn::CosineSimilarity($bitvector_pos_1_48, $bitvector_pos_1_48); +select 64 + 56, Knn::CosineSimilarity($bitvector_pos_1_56, $bitvector_pos_1_56); +select 64 + 60, Knn::CosineSimilarity($bitvector_pos_1_60, $bitvector_pos_1_60); + +select 64 + 00, Knn::CosineSimilarity($bitvector_neg_1_00, $bitvector_neg_1_00); +select 64 + 04, Knn::CosineSimilarity($bitvector_neg_1_04, $bitvector_neg_1_04); +select 64 + 08, Knn::CosineSimilarity($bitvector_neg_1_08, $bitvector_neg_1_08); +select 64 + 16, Knn::CosineSimilarity($bitvector_neg_1_16, $bitvector_neg_1_16); +select 64 + 24, Knn::CosineSimilarity($bitvector_neg_1_24, $bitvector_neg_1_24); +select 64 + 32, Knn::CosineSimilarity($bitvector_neg_1_32, $bitvector_neg_1_32); +select 64 + 40, Knn::CosineSimilarity($bitvector_neg_1_40, $bitvector_neg_1_40); +select 64 + 48, Knn::CosineSimilarity($bitvector_neg_1_48, $bitvector_neg_1_48); +select 64 + 56, Knn::CosineSimilarity($bitvector_neg_1_56, $bitvector_neg_1_56); +select 64 + 60, Knn::CosineSimilarity($bitvector_neg_1_60, $bitvector_neg_1_60); + +select 64 + 00, Knn::CosineSimilarity($bitvector_pos_1_00, $bitvector_neg_1_00); +select 64 + 04, Knn::CosineSimilarity($bitvector_pos_1_04, $bitvector_neg_1_04); +select 64 + 08, Knn::CosineSimilarity($bitvector_pos_1_08, $bitvector_neg_1_08); +select 64 + 16, Knn::CosineSimilarity($bitvector_pos_1_16, $bitvector_neg_1_16); +select 64 + 24, Knn::CosineSimilarity($bitvector_pos_1_24, $bitvector_neg_1_24); +select 64 + 32, Knn::CosineSimilarity($bitvector_pos_1_32, $bitvector_neg_1_32); +select 64 + 40, Knn::CosineSimilarity($bitvector_pos_1_40, $bitvector_neg_1_40); +select 64 + 48, Knn::CosineSimilarity($bitvector_pos_1_48, $bitvector_neg_1_48); +select 64 + 56, Knn::CosineSimilarity($bitvector_pos_1_56, $bitvector_neg_1_56); +select 64 + 60, Knn::CosineSimilarity($bitvector_pos_1_60, $bitvector_neg_1_60); + +select 64 + 00, Knn::CosineSimilarity($bitvector_neg_1_00, $bitvector_pos_1_00); +select 64 + 04, Knn::CosineSimilarity($bitvector_neg_1_04, $bitvector_pos_1_04); +select 64 + 08, Knn::CosineSimilarity($bitvector_neg_1_08, $bitvector_pos_1_08); +select 64 + 16, Knn::CosineSimilarity($bitvector_neg_1_16, $bitvector_pos_1_16); +select 64 + 24, Knn::CosineSimilarity($bitvector_neg_1_24, $bitvector_pos_1_24); +select 64 + 32, Knn::CosineSimilarity($bitvector_neg_1_32, $bitvector_pos_1_32); +select 64 + 40, Knn::CosineSimilarity($bitvector_neg_1_40, $bitvector_pos_1_40); +select 64 + 48, Knn::CosineSimilarity($bitvector_neg_1_48, $bitvector_pos_1_48); +select 64 + 56, Knn::CosineSimilarity($bitvector_neg_1_56, $bitvector_pos_1_56); +select 64 + 60, Knn::CosineSimilarity($bitvector_neg_1_60, $bitvector_pos_1_60); + +--bit vector -- only tail +$bitvector_pos_00 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 00)); +$bitvector_pos_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 04)); +$bitvector_pos_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 08)); +$bitvector_pos_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 16)); +$bitvector_pos_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 24)); +$bitvector_pos_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 32)); +$bitvector_pos_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 40)); +$bitvector_pos_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 48)); +$bitvector_pos_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 56)); +$bitvector_pos_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 60)); + +$bitvector_neg_00 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 00)); +$bitvector_neg_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 04)); +$bitvector_neg_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 08)); +$bitvector_neg_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 16)); +$bitvector_neg_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 24)); +$bitvector_neg_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 32)); +$bitvector_neg_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 40)); +$bitvector_neg_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 48)); +$bitvector_neg_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 56)); +$bitvector_neg_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 60)); + +select 00, Knn::CosineSimilarity($bitvector_pos_00, $bitvector_pos_00); +select 04, Knn::CosineSimilarity($bitvector_pos_04, $bitvector_pos_04); +select 08, Knn::CosineSimilarity($bitvector_pos_08, $bitvector_pos_08); +select 16, Knn::CosineSimilarity($bitvector_pos_16, $bitvector_pos_16); +select 24, Knn::CosineSimilarity($bitvector_pos_24, $bitvector_pos_24); +select 32, Knn::CosineSimilarity($bitvector_pos_32, $bitvector_pos_32); +select 40, Knn::CosineSimilarity($bitvector_pos_40, $bitvector_pos_40); +select 48, Knn::CosineSimilarity($bitvector_pos_48, $bitvector_pos_48); +select 56, Knn::CosineSimilarity($bitvector_pos_56, $bitvector_pos_56); +select 60, Knn::CosineSimilarity($bitvector_pos_60, $bitvector_pos_60); + +select 00, Knn::CosineSimilarity($bitvector_neg_00, $bitvector_neg_00); +select 04, Knn::CosineSimilarity($bitvector_neg_04, $bitvector_neg_04); +select 08, Knn::CosineSimilarity($bitvector_neg_08, $bitvector_neg_08); +select 16, Knn::CosineSimilarity($bitvector_neg_16, $bitvector_neg_16); +select 24, Knn::CosineSimilarity($bitvector_neg_24, $bitvector_neg_24); +select 32, Knn::CosineSimilarity($bitvector_neg_32, $bitvector_neg_32); +select 40, Knn::CosineSimilarity($bitvector_neg_40, $bitvector_neg_40); +select 48, Knn::CosineSimilarity($bitvector_neg_48, $bitvector_neg_48); +select 56, Knn::CosineSimilarity($bitvector_neg_56, $bitvector_neg_56); +select 60, Knn::CosineSimilarity($bitvector_neg_60, $bitvector_neg_60); + +select 00, Knn::CosineSimilarity($bitvector_pos_00, $bitvector_neg_00); +select 04, Knn::CosineSimilarity($bitvector_pos_04, $bitvector_neg_04); +select 08, Knn::CosineSimilarity($bitvector_pos_08, $bitvector_neg_08); +select 16, Knn::CosineSimilarity($bitvector_pos_16, $bitvector_neg_16); +select 24, Knn::CosineSimilarity($bitvector_pos_24, $bitvector_neg_24); +select 32, Knn::CosineSimilarity($bitvector_pos_32, $bitvector_neg_32); +select 40, Knn::CosineSimilarity($bitvector_pos_40, $bitvector_neg_40); +select 48, Knn::CosineSimilarity($bitvector_pos_48, $bitvector_neg_48); +select 56, Knn::CosineSimilarity($bitvector_pos_56, $bitvector_neg_56); +select 60, Knn::CosineSimilarity($bitvector_pos_60, $bitvector_neg_60); + +select 00, Knn::CosineSimilarity($bitvector_neg_00, $bitvector_pos_00); +select 04, Knn::CosineSimilarity($bitvector_neg_04, $bitvector_pos_04); +select 08, Knn::CosineSimilarity($bitvector_neg_08, $bitvector_pos_08); +select 16, Knn::CosineSimilarity($bitvector_neg_16, $bitvector_pos_16); +select 24, Knn::CosineSimilarity($bitvector_neg_24, $bitvector_pos_24); +select 32, Knn::CosineSimilarity($bitvector_neg_32, $bitvector_pos_32); +select 40, Knn::CosineSimilarity($bitvector_neg_40, $bitvector_pos_40); +select 48, Knn::CosineSimilarity($bitvector_neg_48, $bitvector_pos_48); +select 56, Knn::CosineSimilarity($bitvector_neg_56, $bitvector_pos_56); +select 60, Knn::CosineSimilarity($bitvector_neg_60, $bitvector_pos_60); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceInvalidFormat.sql b/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceInvalidFormat.sql new file mode 100644 index 000000000000..2f12807a9536 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceInvalidFormat.sql @@ -0,0 +1 @@ +select Knn::CosineDistance("0", "0"); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameFormat.sql b/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameFormat.sql new file mode 100644 index 000000000000..f04816b56cb8 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameFormat.sql @@ -0,0 +1 @@ +select Knn::CosineDistance("\u0001", "u0002"); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameSize.sql b/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameSize.sql new file mode 100644 index 000000000000..12a5b6d6a5d9 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameSize.sql @@ -0,0 +1,3 @@ +$vector1 = Knn::ToBinaryStringBit([1.0f, 2.0f]); +$vector2 = Knn::ToBinaryStringBit([4.0f, 5.0f, 6.0f]); +select Knn::CosineDistance($vector1, $vector2); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameTag.cfg b/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameTag.cfg new file mode 100644 index 000000000000..5dae597903c3 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameTag.cfg @@ -0,0 +1 @@ +xfail diff --git a/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameTag.sql b/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameTag.sql new file mode 100644 index 000000000000..b0076f7f9feb --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/ErrorDistanceSameTag.sql @@ -0,0 +1,3 @@ +$vector1 = Knn::ToBinaryStringFloat([1.0f]); +$vector2 = Knn::ToBinaryStringUint8([4ut, 5ut, 6ut, 7ut]); +select Knn::CosineDistance($vector1, $vector2); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringBitVector.cfg b/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringBitVector.cfg new file mode 100644 index 000000000000..5dae597903c3 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringBitVector.cfg @@ -0,0 +1 @@ +xfail diff --git a/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringBitVector.sql b/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringBitVector.sql new file mode 100644 index 000000000000..922cd851d4cf --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringBitVector.sql @@ -0,0 +1,2 @@ +$bitvector = Knn::ToBinaryStringBit([-1.0f, 1.0f]); +select Knn::FloatFromBinaryString($bitvector); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringEmpty.sql b/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringEmpty.sql new file mode 100644 index 000000000000..09d80fc9da07 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringEmpty.sql @@ -0,0 +1 @@ +select Knn::FloatFromBinaryString(""); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringInvalid.sql b/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringInvalid.sql new file mode 100644 index 000000000000..f2fb0c8de22d --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/ErrorFloatFromBinaryStringInvalid.sql @@ -0,0 +1 @@ +select Knn::FloatFromBinaryString("Invalid"); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/EuclideanDistance.sql b/ydb/library/yql/udfs/common/knn/test/cases/EuclideanDistance.sql new file mode 100644 index 000000000000..82f297a7c783 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/EuclideanDistance.sql @@ -0,0 +1,167 @@ +--fixed size vector +$vector1 = Knn::ToBinaryStringFloat([1.0f, 2.0f, 3.0f]); +$vector2 = Knn::ToBinaryStringFloat([4.0f, 5.0f, 6.0f]); +select Knn::EuclideanDistance($vector1, $vector2); + +--exact vectors +select Knn::EuclideanDistance($vector1, $vector1); + +--orthogonal vectors +$orthogonal_vector1 = Knn::ToBinaryStringUint8([1ut, 0ut]); +$orthogonal_vector2 = Knn::ToBinaryStringUint8([0ut, 2ut]); +select Knn::EuclideanDistance($orthogonal_vector1, $orthogonal_vector2); + +--float vector +$float_vector1 = Knn::ToBinaryStringFloat([1.0f, 2.0f, 3.0f]); +$float_vector2 = Knn::ToBinaryStringFloat([4.0f, 5.0f, 6.0f]); +select Knn::EuclideanDistance($float_vector1, $float_vector2); + +--byte vector +$byte_vector1 = Knn::ToBinaryStringUint8([1ut, 2ut, 3ut]); +$byte_vector2 = Knn::ToBinaryStringUint8([4ut, 5ut, 6ut]); +select Knn::EuclideanDistance($byte_vector1, $byte_vector2); + +--bit vector +$bitvector_positive = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64)); +$bitvector_positive_double_size = Knn::ToBinaryStringBit(ListReplicate(1.0f, 128)); +$bitvector_negative = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64)); +$bitvector_negative_and_positive = Knn::ToBinaryStringBit(ListFromRange(-63.0f, 64.1f)); +$bitvector_negative_and_positive_striped = Knn::ToBinaryStringBit(ListFlatten(ListReplicate([-1.0f, 1.0f], 32))); + +select Knn::EuclideanDistance($bitvector_positive, $bitvector_negative); +select Knn::EuclideanDistance($bitvector_positive_double_size, $bitvector_negative_and_positive); +select Knn::EuclideanDistance($bitvector_positive, $bitvector_negative_and_positive_striped); + +--bit vector -- with tail +$bitvector_pos_1_00 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 00)); +$bitvector_pos_1_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 04)); +$bitvector_pos_1_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 08)); +$bitvector_pos_1_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 16)); +$bitvector_pos_1_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 24)); +$bitvector_pos_1_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 32)); +$bitvector_pos_1_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 40)); +$bitvector_pos_1_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 48)); +$bitvector_pos_1_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 56)); +$bitvector_pos_1_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 60)); + +$bitvector_neg_1_00 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 00)); +$bitvector_neg_1_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 04)); +$bitvector_neg_1_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 08)); +$bitvector_neg_1_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 16)); +$bitvector_neg_1_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 24)); +$bitvector_neg_1_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 32)); +$bitvector_neg_1_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 40)); +$bitvector_neg_1_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 48)); +$bitvector_neg_1_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 56)); +$bitvector_neg_1_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 60)); + +select 64 + 00, Knn::EuclideanDistance($bitvector_pos_1_00, $bitvector_pos_1_00); +select 64 + 04, Knn::EuclideanDistance($bitvector_pos_1_04, $bitvector_pos_1_04); +select 64 + 08, Knn::EuclideanDistance($bitvector_pos_1_08, $bitvector_pos_1_08); +select 64 + 16, Knn::EuclideanDistance($bitvector_pos_1_16, $bitvector_pos_1_16); +select 64 + 24, Knn::EuclideanDistance($bitvector_pos_1_24, $bitvector_pos_1_24); +select 64 + 32, Knn::EuclideanDistance($bitvector_pos_1_32, $bitvector_pos_1_32); +select 64 + 40, Knn::EuclideanDistance($bitvector_pos_1_40, $bitvector_pos_1_40); +select 64 + 48, Knn::EuclideanDistance($bitvector_pos_1_48, $bitvector_pos_1_48); +select 64 + 56, Knn::EuclideanDistance($bitvector_pos_1_56, $bitvector_pos_1_56); +select 64 + 60, Knn::EuclideanDistance($bitvector_pos_1_60, $bitvector_pos_1_60); + +select 64 + 00, Knn::EuclideanDistance($bitvector_neg_1_00, $bitvector_neg_1_00); +select 64 + 04, Knn::EuclideanDistance($bitvector_neg_1_04, $bitvector_neg_1_04); +select 64 + 08, Knn::EuclideanDistance($bitvector_neg_1_08, $bitvector_neg_1_08); +select 64 + 16, Knn::EuclideanDistance($bitvector_neg_1_16, $bitvector_neg_1_16); +select 64 + 24, Knn::EuclideanDistance($bitvector_neg_1_24, $bitvector_neg_1_24); +select 64 + 32, Knn::EuclideanDistance($bitvector_neg_1_32, $bitvector_neg_1_32); +select 64 + 40, Knn::EuclideanDistance($bitvector_neg_1_40, $bitvector_neg_1_40); +select 64 + 48, Knn::EuclideanDistance($bitvector_neg_1_48, $bitvector_neg_1_48); +select 64 + 56, Knn::EuclideanDistance($bitvector_neg_1_56, $bitvector_neg_1_56); +select 64 + 60, Knn::EuclideanDistance($bitvector_neg_1_60, $bitvector_neg_1_60); + +select 64 + 00, Knn::EuclideanDistance($bitvector_pos_1_00, $bitvector_neg_1_00); +select 64 + 04, Knn::EuclideanDistance($bitvector_pos_1_04, $bitvector_neg_1_04); +select 64 + 08, Knn::EuclideanDistance($bitvector_pos_1_08, $bitvector_neg_1_08); +select 64 + 16, Knn::EuclideanDistance($bitvector_pos_1_16, $bitvector_neg_1_16); +select 64 + 24, Knn::EuclideanDistance($bitvector_pos_1_24, $bitvector_neg_1_24); +select 64 + 32, Knn::EuclideanDistance($bitvector_pos_1_32, $bitvector_neg_1_32); +select 64 + 40, Knn::EuclideanDistance($bitvector_pos_1_40, $bitvector_neg_1_40); +select 64 + 48, Knn::EuclideanDistance($bitvector_pos_1_48, $bitvector_neg_1_48); +select 64 + 56, Knn::EuclideanDistance($bitvector_pos_1_56, $bitvector_neg_1_56); +select 64 + 60, Knn::EuclideanDistance($bitvector_pos_1_60, $bitvector_neg_1_60); + +select 64 + 00, Knn::EuclideanDistance($bitvector_neg_1_00, $bitvector_pos_1_00); +select 64 + 04, Knn::EuclideanDistance($bitvector_neg_1_04, $bitvector_pos_1_04); +select 64 + 08, Knn::EuclideanDistance($bitvector_neg_1_08, $bitvector_pos_1_08); +select 64 + 16, Knn::EuclideanDistance($bitvector_neg_1_16, $bitvector_pos_1_16); +select 64 + 24, Knn::EuclideanDistance($bitvector_neg_1_24, $bitvector_pos_1_24); +select 64 + 32, Knn::EuclideanDistance($bitvector_neg_1_32, $bitvector_pos_1_32); +select 64 + 40, Knn::EuclideanDistance($bitvector_neg_1_40, $bitvector_pos_1_40); +select 64 + 48, Knn::EuclideanDistance($bitvector_neg_1_48, $bitvector_pos_1_48); +select 64 + 56, Knn::EuclideanDistance($bitvector_neg_1_56, $bitvector_pos_1_56); +select 64 + 60, Knn::EuclideanDistance($bitvector_neg_1_60, $bitvector_pos_1_60); + +--bit vector -- only tail +$bitvector_pos_00 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 00)); +$bitvector_pos_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 04)); +$bitvector_pos_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 08)); +$bitvector_pos_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 16)); +$bitvector_pos_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 24)); +$bitvector_pos_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 32)); +$bitvector_pos_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 40)); +$bitvector_pos_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 48)); +$bitvector_pos_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 56)); +$bitvector_pos_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 60)); + +$bitvector_neg_00 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 00)); +$bitvector_neg_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 04)); +$bitvector_neg_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 08)); +$bitvector_neg_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 16)); +$bitvector_neg_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 24)); +$bitvector_neg_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 32)); +$bitvector_neg_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 40)); +$bitvector_neg_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 48)); +$bitvector_neg_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 56)); +$bitvector_neg_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 60)); + +select 00, Knn::EuclideanDistance($bitvector_pos_00, $bitvector_pos_00); +select 04, Knn::EuclideanDistance($bitvector_pos_04, $bitvector_pos_04); +select 08, Knn::EuclideanDistance($bitvector_pos_08, $bitvector_pos_08); +select 16, Knn::EuclideanDistance($bitvector_pos_16, $bitvector_pos_16); +select 24, Knn::EuclideanDistance($bitvector_pos_24, $bitvector_pos_24); +select 32, Knn::EuclideanDistance($bitvector_pos_32, $bitvector_pos_32); +select 40, Knn::EuclideanDistance($bitvector_pos_40, $bitvector_pos_40); +select 48, Knn::EuclideanDistance($bitvector_pos_48, $bitvector_pos_48); +select 56, Knn::EuclideanDistance($bitvector_pos_56, $bitvector_pos_56); +select 60, Knn::EuclideanDistance($bitvector_pos_60, $bitvector_pos_60); + +select 00, Knn::EuclideanDistance($bitvector_neg_00, $bitvector_neg_00); +select 04, Knn::EuclideanDistance($bitvector_neg_04, $bitvector_neg_04); +select 08, Knn::EuclideanDistance($bitvector_neg_08, $bitvector_neg_08); +select 16, Knn::EuclideanDistance($bitvector_neg_16, $bitvector_neg_16); +select 24, Knn::EuclideanDistance($bitvector_neg_24, $bitvector_neg_24); +select 32, Knn::EuclideanDistance($bitvector_neg_32, $bitvector_neg_32); +select 40, Knn::EuclideanDistance($bitvector_neg_40, $bitvector_neg_40); +select 48, Knn::EuclideanDistance($bitvector_neg_48, $bitvector_neg_48); +select 56, Knn::EuclideanDistance($bitvector_neg_56, $bitvector_neg_56); +select 60, Knn::EuclideanDistance($bitvector_neg_60, $bitvector_neg_60); + +select 00, Knn::EuclideanDistance($bitvector_pos_00, $bitvector_neg_00); +select 04, Knn::EuclideanDistance($bitvector_pos_04, $bitvector_neg_04); +select 08, Knn::EuclideanDistance($bitvector_pos_08, $bitvector_neg_08); +select 16, Knn::EuclideanDistance($bitvector_pos_16, $bitvector_neg_16); +select 24, Knn::EuclideanDistance($bitvector_pos_24, $bitvector_neg_24); +select 32, Knn::EuclideanDistance($bitvector_pos_32, $bitvector_neg_32); +select 40, Knn::EuclideanDistance($bitvector_pos_40, $bitvector_neg_40); +select 48, Knn::EuclideanDistance($bitvector_pos_48, $bitvector_neg_48); +select 56, Knn::EuclideanDistance($bitvector_pos_56, $bitvector_neg_56); +select 60, Knn::EuclideanDistance($bitvector_pos_60, $bitvector_neg_60); + +select 00, Knn::EuclideanDistance($bitvector_neg_00, $bitvector_pos_00); +select 04, Knn::EuclideanDistance($bitvector_neg_04, $bitvector_pos_04); +select 08, Knn::EuclideanDistance($bitvector_neg_08, $bitvector_pos_08); +select 16, Knn::EuclideanDistance($bitvector_neg_16, $bitvector_pos_16); +select 24, Knn::EuclideanDistance($bitvector_neg_24, $bitvector_pos_24); +select 32, Knn::EuclideanDistance($bitvector_neg_32, $bitvector_pos_32); +select 40, Knn::EuclideanDistance($bitvector_neg_40, $bitvector_pos_40); +select 48, Knn::EuclideanDistance($bitvector_neg_48, $bitvector_pos_48); +select 56, Knn::EuclideanDistance($bitvector_neg_56, $bitvector_pos_56); +select 60, Knn::EuclideanDistance($bitvector_neg_60, $bitvector_pos_60); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/InnerProductSimilarity.sql b/ydb/library/yql/udfs/common/knn/test/cases/InnerProductSimilarity.sql new file mode 100644 index 000000000000..ec5146dd64f6 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/InnerProductSimilarity.sql @@ -0,0 +1,169 @@ +--fixed size vector +$vector1 = Knn::ToBinaryStringFloat([1.0f, 2.0f, 3.0f]); +$vector2 = Knn::ToBinaryStringFloat([4.0f, 5.0f, 6.0f]); +$extected_distance = 32; +$distance = Knn::InnerProductSimilarity($vector1, $vector2); +select $distance = $extected_distance; + +--exact vectors +select Knn::InnerProductSimilarity($vector1, $vector1); + +--orthogonal vectors +$orthogonal_vector1 = Knn::ToBinaryStringUint8([1ut, 0ut]); +$orthogonal_vector2 = Knn::ToBinaryStringUint8([0ut, 2ut]); +select Knn::InnerProductSimilarity($orthogonal_vector1, $orthogonal_vector2); + +--float vector +$float_vector1 = Knn::ToBinaryStringFloat([1.0f, 2.0f, 3.0f]); +$float_vector2 = Knn::ToBinaryStringFloat([4.0f, 5.0f, 6.0f]); +select Knn::InnerProductSimilarity($float_vector1, $float_vector2); + +--byte vector +$byte_vector1 = Knn::ToBinaryStringUint8([1ut, 2ut, 3ut]); +$byte_vector2 = Knn::ToBinaryStringUint8([4ut, 5ut, 6ut]); +select Knn::InnerProductSimilarity($byte_vector1, $byte_vector2); + +--bit vector +$bitvector_positive = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64)); +$bitvector_positive_double_size = Knn::ToBinaryStringBit(ListReplicate(1.0f, 128)); +$bitvector_negative = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64)); +$bitvector_negative_and_positive = Knn::ToBinaryStringBit(ListFromRange(-63.0f, 64.1f)); +$bitvector_negative_and_positive_striped = Knn::ToBinaryStringBit(ListFlatten(ListReplicate([-1.0f, 1.0f], 32))); + +select Knn::InnerProductSimilarity($bitvector_positive, $bitvector_negative); +select Knn::InnerProductSimilarity($bitvector_positive_double_size, $bitvector_negative_and_positive); +select Knn::InnerProductSimilarity($bitvector_positive, $bitvector_negative_and_positive_striped); + +--bit vector -- with tail +$bitvector_pos_1_00 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 00)); +$bitvector_pos_1_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 04)); +$bitvector_pos_1_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 08)); +$bitvector_pos_1_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 16)); +$bitvector_pos_1_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 24)); +$bitvector_pos_1_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 32)); +$bitvector_pos_1_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 40)); +$bitvector_pos_1_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 48)); +$bitvector_pos_1_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 56)); +$bitvector_pos_1_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 60)); + +$bitvector_neg_1_00 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 00)); +$bitvector_neg_1_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 04)); +$bitvector_neg_1_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 08)); +$bitvector_neg_1_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 16)); +$bitvector_neg_1_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 24)); +$bitvector_neg_1_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 32)); +$bitvector_neg_1_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 40)); +$bitvector_neg_1_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 48)); +$bitvector_neg_1_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 56)); +$bitvector_neg_1_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 60)); + +select 64 + 00, Knn::InnerProductSimilarity($bitvector_pos_1_00, $bitvector_pos_1_00); +select 64 + 04, Knn::InnerProductSimilarity($bitvector_pos_1_04, $bitvector_pos_1_04); +select 64 + 08, Knn::InnerProductSimilarity($bitvector_pos_1_08, $bitvector_pos_1_08); +select 64 + 16, Knn::InnerProductSimilarity($bitvector_pos_1_16, $bitvector_pos_1_16); +select 64 + 24, Knn::InnerProductSimilarity($bitvector_pos_1_24, $bitvector_pos_1_24); +select 64 + 32, Knn::InnerProductSimilarity($bitvector_pos_1_32, $bitvector_pos_1_32); +select 64 + 40, Knn::InnerProductSimilarity($bitvector_pos_1_40, $bitvector_pos_1_40); +select 64 + 48, Knn::InnerProductSimilarity($bitvector_pos_1_48, $bitvector_pos_1_48); +select 64 + 56, Knn::InnerProductSimilarity($bitvector_pos_1_56, $bitvector_pos_1_56); +select 64 + 60, Knn::InnerProductSimilarity($bitvector_pos_1_60, $bitvector_pos_1_60); + +select 64 + 00, Knn::InnerProductSimilarity($bitvector_neg_1_00, $bitvector_neg_1_00); +select 64 + 04, Knn::InnerProductSimilarity($bitvector_neg_1_04, $bitvector_neg_1_04); +select 64 + 08, Knn::InnerProductSimilarity($bitvector_neg_1_08, $bitvector_neg_1_08); +select 64 + 16, Knn::InnerProductSimilarity($bitvector_neg_1_16, $bitvector_neg_1_16); +select 64 + 24, Knn::InnerProductSimilarity($bitvector_neg_1_24, $bitvector_neg_1_24); +select 64 + 32, Knn::InnerProductSimilarity($bitvector_neg_1_32, $bitvector_neg_1_32); +select 64 + 40, Knn::InnerProductSimilarity($bitvector_neg_1_40, $bitvector_neg_1_40); +select 64 + 48, Knn::InnerProductSimilarity($bitvector_neg_1_48, $bitvector_neg_1_48); +select 64 + 56, Knn::InnerProductSimilarity($bitvector_neg_1_56, $bitvector_neg_1_56); +select 64 + 60, Knn::InnerProductSimilarity($bitvector_neg_1_60, $bitvector_neg_1_60); + +select 64 + 00, Knn::InnerProductSimilarity($bitvector_pos_1_00, $bitvector_neg_1_00); +select 64 + 04, Knn::InnerProductSimilarity($bitvector_pos_1_04, $bitvector_neg_1_04); +select 64 + 08, Knn::InnerProductSimilarity($bitvector_pos_1_08, $bitvector_neg_1_08); +select 64 + 16, Knn::InnerProductSimilarity($bitvector_pos_1_16, $bitvector_neg_1_16); +select 64 + 24, Knn::InnerProductSimilarity($bitvector_pos_1_24, $bitvector_neg_1_24); +select 64 + 32, Knn::InnerProductSimilarity($bitvector_pos_1_32, $bitvector_neg_1_32); +select 64 + 40, Knn::InnerProductSimilarity($bitvector_pos_1_40, $bitvector_neg_1_40); +select 64 + 48, Knn::InnerProductSimilarity($bitvector_pos_1_48, $bitvector_neg_1_48); +select 64 + 56, Knn::InnerProductSimilarity($bitvector_pos_1_56, $bitvector_neg_1_56); +select 64 + 60, Knn::InnerProductSimilarity($bitvector_pos_1_60, $bitvector_neg_1_60); + +select 64 + 00, Knn::InnerProductSimilarity($bitvector_neg_1_00, $bitvector_pos_1_00); +select 64 + 04, Knn::InnerProductSimilarity($bitvector_neg_1_04, $bitvector_pos_1_04); +select 64 + 08, Knn::InnerProductSimilarity($bitvector_neg_1_08, $bitvector_pos_1_08); +select 64 + 16, Knn::InnerProductSimilarity($bitvector_neg_1_16, $bitvector_pos_1_16); +select 64 + 24, Knn::InnerProductSimilarity($bitvector_neg_1_24, $bitvector_pos_1_24); +select 64 + 32, Knn::InnerProductSimilarity($bitvector_neg_1_32, $bitvector_pos_1_32); +select 64 + 40, Knn::InnerProductSimilarity($bitvector_neg_1_40, $bitvector_pos_1_40); +select 64 + 48, Knn::InnerProductSimilarity($bitvector_neg_1_48, $bitvector_pos_1_48); +select 64 + 56, Knn::InnerProductSimilarity($bitvector_neg_1_56, $bitvector_pos_1_56); +select 64 + 60, Knn::InnerProductSimilarity($bitvector_neg_1_60, $bitvector_pos_1_60); + +--bit vector -- only tail +$bitvector_pos_00 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 00)); +$bitvector_pos_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 04)); +$bitvector_pos_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 08)); +$bitvector_pos_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 16)); +$bitvector_pos_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 24)); +$bitvector_pos_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 32)); +$bitvector_pos_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 40)); +$bitvector_pos_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 48)); +$bitvector_pos_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 56)); +$bitvector_pos_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 60)); + +$bitvector_neg_00 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 00)); +$bitvector_neg_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 04)); +$bitvector_neg_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 08)); +$bitvector_neg_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 16)); +$bitvector_neg_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 24)); +$bitvector_neg_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 32)); +$bitvector_neg_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 40)); +$bitvector_neg_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 48)); +$bitvector_neg_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 56)); +$bitvector_neg_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 60)); + +select 00, Knn::InnerProductSimilarity($bitvector_pos_00, $bitvector_pos_00); +select 04, Knn::InnerProductSimilarity($bitvector_pos_04, $bitvector_pos_04); +select 08, Knn::InnerProductSimilarity($bitvector_pos_08, $bitvector_pos_08); +select 16, Knn::InnerProductSimilarity($bitvector_pos_16, $bitvector_pos_16); +select 24, Knn::InnerProductSimilarity($bitvector_pos_24, $bitvector_pos_24); +select 32, Knn::InnerProductSimilarity($bitvector_pos_32, $bitvector_pos_32); +select 40, Knn::InnerProductSimilarity($bitvector_pos_40, $bitvector_pos_40); +select 48, Knn::InnerProductSimilarity($bitvector_pos_48, $bitvector_pos_48); +select 56, Knn::InnerProductSimilarity($bitvector_pos_56, $bitvector_pos_56); +select 60, Knn::InnerProductSimilarity($bitvector_pos_60, $bitvector_pos_60); + +select 00, Knn::InnerProductSimilarity($bitvector_neg_00, $bitvector_neg_00); +select 04, Knn::InnerProductSimilarity($bitvector_neg_04, $bitvector_neg_04); +select 08, Knn::InnerProductSimilarity($bitvector_neg_08, $bitvector_neg_08); +select 16, Knn::InnerProductSimilarity($bitvector_neg_16, $bitvector_neg_16); +select 24, Knn::InnerProductSimilarity($bitvector_neg_24, $bitvector_neg_24); +select 32, Knn::InnerProductSimilarity($bitvector_neg_32, $bitvector_neg_32); +select 40, Knn::InnerProductSimilarity($bitvector_neg_40, $bitvector_neg_40); +select 48, Knn::InnerProductSimilarity($bitvector_neg_48, $bitvector_neg_48); +select 56, Knn::InnerProductSimilarity($bitvector_neg_56, $bitvector_neg_56); +select 60, Knn::InnerProductSimilarity($bitvector_neg_60, $bitvector_neg_60); + +select 00, Knn::InnerProductSimilarity($bitvector_pos_00, $bitvector_neg_00); +select 04, Knn::InnerProductSimilarity($bitvector_pos_04, $bitvector_neg_04); +select 08, Knn::InnerProductSimilarity($bitvector_pos_08, $bitvector_neg_08); +select 16, Knn::InnerProductSimilarity($bitvector_pos_16, $bitvector_neg_16); +select 24, Knn::InnerProductSimilarity($bitvector_pos_24, $bitvector_neg_24); +select 32, Knn::InnerProductSimilarity($bitvector_pos_32, $bitvector_neg_32); +select 40, Knn::InnerProductSimilarity($bitvector_pos_40, $bitvector_neg_40); +select 48, Knn::InnerProductSimilarity($bitvector_pos_48, $bitvector_neg_48); +select 56, Knn::InnerProductSimilarity($bitvector_pos_56, $bitvector_neg_56); +select 60, Knn::InnerProductSimilarity($bitvector_pos_60, $bitvector_neg_60); + +select 00, Knn::InnerProductSimilarity($bitvector_neg_00, $bitvector_pos_00); +select 04, Knn::InnerProductSimilarity($bitvector_neg_04, $bitvector_pos_04); +select 08, Knn::InnerProductSimilarity($bitvector_neg_08, $bitvector_pos_08); +select 16, Knn::InnerProductSimilarity($bitvector_neg_16, $bitvector_pos_16); +select 24, Knn::InnerProductSimilarity($bitvector_neg_24, $bitvector_pos_24); +select 32, Knn::InnerProductSimilarity($bitvector_neg_32, $bitvector_pos_32); +select 40, Knn::InnerProductSimilarity($bitvector_neg_40, $bitvector_pos_40); +select 48, Knn::InnerProductSimilarity($bitvector_neg_48, $bitvector_pos_48); +select 56, Knn::InnerProductSimilarity($bitvector_neg_56, $bitvector_pos_56); +select 60, Knn::InnerProductSimilarity($bitvector_neg_60, $bitvector_pos_60); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/Int8Serialization.sql b/ydb/library/yql/udfs/common/knn/test/cases/Int8Serialization.sql new file mode 100644 index 000000000000..ffbe75ea6d04 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/Int8Serialization.sql @@ -0,0 +1,18 @@ +--list serialization +$vector = Cast([1, 2, 3, 4, 5] AS List); +$vector_binary_str = Knn::ToBinaryStringInt8($vector); +select $vector_binary_str; +select Len(Untag($vector_binary_str, "Int8Vector")) == 6; + +--deserialization +$deserialized_vector = Knn::FloatFromBinaryString($vector_binary_str); +select $deserialized_vector; + +--fixed size vector +$vector1 = Knn::ToBinaryStringInt8([1ut, 2ut, 3ut]); +$vector2 = Knn::ToBinaryStringInt8([4ut, 5ut, 6ut]); + +select Knn::CosineDistance($vector1, $vector2); +select Knn::CosineDistance($vector1, "\u0004\u0005\u0006\u0003"); +select Knn::CosineDistance("\u0001\u0002\u0003\u0003", $vector2); +select Knn::CosineDistance("\u0001\u0002\u0003\u0003", "\u0004\u0005\u0006\u0003"); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/LazyListSerialization.sql b/ydb/library/yql/udfs/common/knn/test/cases/LazyListSerialization.sql new file mode 100644 index 000000000000..a4bb466e0dae --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/LazyListSerialization.sql @@ -0,0 +1,9 @@ +--lazy list serialization +$vector = ListFromRange(1.0f, 5.1f); +$vector_binary_str = Knn::ToBinaryStringFloat($vector); +select $vector_binary_str; + +--deserialization +$deserialized_vector = Knn::FloatFromBinaryString($vector_binary_str); +select $deserialized_vector; +select $deserialized_vector = $vector; diff --git a/ydb/library/yql/udfs/common/knn/test/cases/ListSerialization.sql b/ydb/library/yql/udfs/common/knn/test/cases/ListSerialization.sql new file mode 100644 index 000000000000..7960b4d9788e --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/ListSerialization.sql @@ -0,0 +1,18 @@ +--list serialization +$vector = [1.2f, 2.3f, 3.4f, 4.5f, 5.6f]; +$vector_binary_str = Knn::ToBinaryStringFloat($vector); +select $vector_binary_str; + +--deserialization +$deserialized_vector = Knn::FloatFromBinaryString($vector_binary_str); +select $deserialized_vector; +select $deserialized_vector = $vector; + +$vector_d = Cast([0, 1, 0, 0, 0, 0, 0, 0] AS List); +$vector_f = Cast([0, 1, 0, 0, 0, 0, 0, 0] AS List); +$vector_u8 = Cast([0, 1, 0, 0, 0, 0, 0, 0] AS List); +$vector_i8 = Cast([0, 1, 0, 0, 0, 0, 0, 0] AS List); +select Knn::ToBinaryStringBit($vector_d); +select Knn::ToBinaryStringBit($vector_f); +select Knn::ToBinaryStringBit($vector_u8); +select Knn::ToBinaryStringBit($vector_i8); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/ManhattanDistance.sql b/ydb/library/yql/udfs/common/knn/test/cases/ManhattanDistance.sql new file mode 100644 index 000000000000..c6a106b9bea5 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/ManhattanDistance.sql @@ -0,0 +1,167 @@ +--fixed size vector +$vector1 = Knn::ToBinaryStringFloat([1.0f, 2.0f, 3.0f]); +$vector2 = Knn::ToBinaryStringFloat([4.0f, 5.0f, 6.0f]); +select Knn::ManhattanDistance($vector1, $vector2); + +--exact vectors +select Knn::ManhattanDistance($vector1, $vector1); + +--orthogonal vectors +$orthogonal_vector1 = Knn::ToBinaryStringUint8([1ut, 0ut]); +$orthogonal_vector2 = Knn::ToBinaryStringUint8([0ut, 2ut]); +select Knn::ManhattanDistance($orthogonal_vector1, $orthogonal_vector2); + +--float vector +$float_vector1 = Knn::ToBinaryStringFloat([1.0f, 2.0f, 3.0f]); +$float_vector2 = Knn::ToBinaryStringFloat([4.0f, 5.0f, 6.0f]); +select Knn::ManhattanDistance($float_vector1, $float_vector2); + +--byte vector +$byte_vector1 = Knn::ToBinaryStringUint8([1ut, 2ut, 3ut]); +$byte_vector2 = Knn::ToBinaryStringUint8([4ut, 5ut, 6ut]); +select Knn::ManhattanDistance($byte_vector1, $byte_vector2); + +--bit vector +$bitvector_positive = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64)); +$bitvector_positive_double_size = Knn::ToBinaryStringBit(ListReplicate(1.0f, 128)); +$bitvector_negative = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64)); +$bitvector_negative_and_positive = Knn::ToBinaryStringBit(ListFromRange(-63.0f, 64.1f)); +$bitvector_negative_and_positive_striped = Knn::ToBinaryStringBit(ListFlatten(ListReplicate([-1.0f, 1.0f], 32))); + +select Knn::ManhattanDistance($bitvector_positive, $bitvector_negative); +select Knn::ManhattanDistance($bitvector_positive_double_size, $bitvector_negative_and_positive); +select Knn::ManhattanDistance($bitvector_positive, $bitvector_negative_and_positive_striped); + +--bit vector -- with tail +$bitvector_pos_1_00 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 00)); +$bitvector_pos_1_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 04)); +$bitvector_pos_1_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 08)); +$bitvector_pos_1_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 16)); +$bitvector_pos_1_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 24)); +$bitvector_pos_1_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 32)); +$bitvector_pos_1_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 40)); +$bitvector_pos_1_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 48)); +$bitvector_pos_1_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 56)); +$bitvector_pos_1_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 64 + 60)); + +$bitvector_neg_1_00 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 00)); +$bitvector_neg_1_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 04)); +$bitvector_neg_1_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 08)); +$bitvector_neg_1_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 16)); +$bitvector_neg_1_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 24)); +$bitvector_neg_1_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 32)); +$bitvector_neg_1_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 40)); +$bitvector_neg_1_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 48)); +$bitvector_neg_1_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 56)); +$bitvector_neg_1_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 64 + 60)); + +select 64 + 00, Knn::ManhattanDistance($bitvector_pos_1_00, $bitvector_pos_1_00); +select 64 + 04, Knn::ManhattanDistance($bitvector_pos_1_04, $bitvector_pos_1_04); +select 64 + 08, Knn::ManhattanDistance($bitvector_pos_1_08, $bitvector_pos_1_08); +select 64 + 16, Knn::ManhattanDistance($bitvector_pos_1_16, $bitvector_pos_1_16); +select 64 + 24, Knn::ManhattanDistance($bitvector_pos_1_24, $bitvector_pos_1_24); +select 64 + 32, Knn::ManhattanDistance($bitvector_pos_1_32, $bitvector_pos_1_32); +select 64 + 40, Knn::ManhattanDistance($bitvector_pos_1_40, $bitvector_pos_1_40); +select 64 + 48, Knn::ManhattanDistance($bitvector_pos_1_48, $bitvector_pos_1_48); +select 64 + 56, Knn::ManhattanDistance($bitvector_pos_1_56, $bitvector_pos_1_56); +select 64 + 60, Knn::ManhattanDistance($bitvector_pos_1_60, $bitvector_pos_1_60); + +select 64 + 00, Knn::ManhattanDistance($bitvector_neg_1_00, $bitvector_neg_1_00); +select 64 + 04, Knn::ManhattanDistance($bitvector_neg_1_04, $bitvector_neg_1_04); +select 64 + 08, Knn::ManhattanDistance($bitvector_neg_1_08, $bitvector_neg_1_08); +select 64 + 16, Knn::ManhattanDistance($bitvector_neg_1_16, $bitvector_neg_1_16); +select 64 + 24, Knn::ManhattanDistance($bitvector_neg_1_24, $bitvector_neg_1_24); +select 64 + 32, Knn::ManhattanDistance($bitvector_neg_1_32, $bitvector_neg_1_32); +select 64 + 40, Knn::ManhattanDistance($bitvector_neg_1_40, $bitvector_neg_1_40); +select 64 + 48, Knn::ManhattanDistance($bitvector_neg_1_48, $bitvector_neg_1_48); +select 64 + 56, Knn::ManhattanDistance($bitvector_neg_1_56, $bitvector_neg_1_56); +select 64 + 60, Knn::ManhattanDistance($bitvector_neg_1_60, $bitvector_neg_1_60); + +select 64 + 00, Knn::ManhattanDistance($bitvector_pos_1_00, $bitvector_neg_1_00); +select 64 + 04, Knn::ManhattanDistance($bitvector_pos_1_04, $bitvector_neg_1_04); +select 64 + 08, Knn::ManhattanDistance($bitvector_pos_1_08, $bitvector_neg_1_08); +select 64 + 16, Knn::ManhattanDistance($bitvector_pos_1_16, $bitvector_neg_1_16); +select 64 + 24, Knn::ManhattanDistance($bitvector_pos_1_24, $bitvector_neg_1_24); +select 64 + 32, Knn::ManhattanDistance($bitvector_pos_1_32, $bitvector_neg_1_32); +select 64 + 40, Knn::ManhattanDistance($bitvector_pos_1_40, $bitvector_neg_1_40); +select 64 + 48, Knn::ManhattanDistance($bitvector_pos_1_48, $bitvector_neg_1_48); +select 64 + 56, Knn::ManhattanDistance($bitvector_pos_1_56, $bitvector_neg_1_56); +select 64 + 60, Knn::ManhattanDistance($bitvector_pos_1_60, $bitvector_neg_1_60); + +select 64 + 00, Knn::ManhattanDistance($bitvector_neg_1_00, $bitvector_pos_1_00); +select 64 + 04, Knn::ManhattanDistance($bitvector_neg_1_04, $bitvector_pos_1_04); +select 64 + 08, Knn::ManhattanDistance($bitvector_neg_1_08, $bitvector_pos_1_08); +select 64 + 16, Knn::ManhattanDistance($bitvector_neg_1_16, $bitvector_pos_1_16); +select 64 + 24, Knn::ManhattanDistance($bitvector_neg_1_24, $bitvector_pos_1_24); +select 64 + 32, Knn::ManhattanDistance($bitvector_neg_1_32, $bitvector_pos_1_32); +select 64 + 40, Knn::ManhattanDistance($bitvector_neg_1_40, $bitvector_pos_1_40); +select 64 + 48, Knn::ManhattanDistance($bitvector_neg_1_48, $bitvector_pos_1_48); +select 64 + 56, Knn::ManhattanDistance($bitvector_neg_1_56, $bitvector_pos_1_56); +select 64 + 60, Knn::ManhattanDistance($bitvector_neg_1_60, $bitvector_pos_1_60); + +--bit vector -- only tail +$bitvector_pos_00 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 00)); +$bitvector_pos_04 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 04)); +$bitvector_pos_08 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 08)); +$bitvector_pos_16 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 16)); +$bitvector_pos_24 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 24)); +$bitvector_pos_32 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 32)); +$bitvector_pos_40 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 40)); +$bitvector_pos_48 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 48)); +$bitvector_pos_56 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 56)); +$bitvector_pos_60 = Knn::ToBinaryStringBit(ListReplicate(1.0f, 60)); + +$bitvector_neg_00 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 00)); +$bitvector_neg_04 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 04)); +$bitvector_neg_08 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 08)); +$bitvector_neg_16 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 16)); +$bitvector_neg_24 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 24)); +$bitvector_neg_32 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 32)); +$bitvector_neg_40 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 40)); +$bitvector_neg_48 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 48)); +$bitvector_neg_56 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 56)); +$bitvector_neg_60 = Knn::ToBinaryStringBit(ListReplicate(-1.0f, 60)); + +select 00, Knn::ManhattanDistance($bitvector_pos_00, $bitvector_pos_00); +select 04, Knn::ManhattanDistance($bitvector_pos_04, $bitvector_pos_04); +select 08, Knn::ManhattanDistance($bitvector_pos_08, $bitvector_pos_08); +select 16, Knn::ManhattanDistance($bitvector_pos_16, $bitvector_pos_16); +select 24, Knn::ManhattanDistance($bitvector_pos_24, $bitvector_pos_24); +select 32, Knn::ManhattanDistance($bitvector_pos_32, $bitvector_pos_32); +select 40, Knn::ManhattanDistance($bitvector_pos_40, $bitvector_pos_40); +select 48, Knn::ManhattanDistance($bitvector_pos_48, $bitvector_pos_48); +select 56, Knn::ManhattanDistance($bitvector_pos_56, $bitvector_pos_56); +select 60, Knn::ManhattanDistance($bitvector_pos_60, $bitvector_pos_60); + +select 00, Knn::ManhattanDistance($bitvector_neg_00, $bitvector_neg_00); +select 04, Knn::ManhattanDistance($bitvector_neg_04, $bitvector_neg_04); +select 08, Knn::ManhattanDistance($bitvector_neg_08, $bitvector_neg_08); +select 16, Knn::ManhattanDistance($bitvector_neg_16, $bitvector_neg_16); +select 24, Knn::ManhattanDistance($bitvector_neg_24, $bitvector_neg_24); +select 32, Knn::ManhattanDistance($bitvector_neg_32, $bitvector_neg_32); +select 40, Knn::ManhattanDistance($bitvector_neg_40, $bitvector_neg_40); +select 48, Knn::ManhattanDistance($bitvector_neg_48, $bitvector_neg_48); +select 56, Knn::ManhattanDistance($bitvector_neg_56, $bitvector_neg_56); +select 60, Knn::ManhattanDistance($bitvector_neg_60, $bitvector_neg_60); + +select 00, Knn::ManhattanDistance($bitvector_pos_00, $bitvector_neg_00); +select 04, Knn::ManhattanDistance($bitvector_pos_04, $bitvector_neg_04); +select 08, Knn::ManhattanDistance($bitvector_pos_08, $bitvector_neg_08); +select 16, Knn::ManhattanDistance($bitvector_pos_16, $bitvector_neg_16); +select 24, Knn::ManhattanDistance($bitvector_pos_24, $bitvector_neg_24); +select 32, Knn::ManhattanDistance($bitvector_pos_32, $bitvector_neg_32); +select 40, Knn::ManhattanDistance($bitvector_pos_40, $bitvector_neg_40); +select 48, Knn::ManhattanDistance($bitvector_pos_48, $bitvector_neg_48); +select 56, Knn::ManhattanDistance($bitvector_pos_56, $bitvector_neg_56); +select 60, Knn::ManhattanDistance($bitvector_pos_60, $bitvector_neg_60); + +select 00, Knn::ManhattanDistance($bitvector_neg_00, $bitvector_pos_00); +select 04, Knn::ManhattanDistance($bitvector_neg_04, $bitvector_pos_04); +select 08, Knn::ManhattanDistance($bitvector_neg_08, $bitvector_pos_08); +select 16, Knn::ManhattanDistance($bitvector_neg_16, $bitvector_pos_16); +select 24, Knn::ManhattanDistance($bitvector_neg_24, $bitvector_pos_24); +select 32, Knn::ManhattanDistance($bitvector_neg_32, $bitvector_pos_32); +select 40, Knn::ManhattanDistance($bitvector_neg_40, $bitvector_pos_40); +select 48, Knn::ManhattanDistance($bitvector_neg_48, $bitvector_pos_48); +select 56, Knn::ManhattanDistance($bitvector_neg_56, $bitvector_pos_56); +select 60, Knn::ManhattanDistance($bitvector_neg_60, $bitvector_pos_60); diff --git a/ydb/library/yql/udfs/common/knn/test/cases/NullForwarding.sql b/ydb/library/yql/udfs/common/knn/test/cases/NullForwarding.sql new file mode 100644 index 000000000000..ae2abf147b48 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/NullForwarding.sql @@ -0,0 +1,7 @@ +select Knn::ToBinaryStringFloat(null) is null; +select Knn::ToBinaryStringUint8(null) is null; +select Knn::ToBinaryStringBit(null) is null; +select Knn::FloatFromBinaryString(null) is null; +select Knn::CosineDistance(null, null) is null; +select Knn::CosineDistance(null, "\u0002") is null; +select Knn::CosineDistance("\u0002", null) is null; diff --git a/ydb/library/yql/udfs/common/knn/test/cases/OptionalAutoUnpacking.sql b/ydb/library/yql/udfs/common/knn/test/cases/OptionalAutoUnpacking.sql new file mode 100644 index 000000000000..d8aa12e0a3c6 --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/OptionalAutoUnpacking.sql @@ -0,0 +1,8 @@ +select Knn::ToBinaryStringFloat(Nothing(List?)) is null; +select Knn::ToBinaryStringUint8(Nothing(List?)) is null; +select Knn::ToBinaryStringBit(Nothing(List?)) is null; +select Knn::FloatFromBinaryString(Nothing(String?)) is null; +select Knn::CosineDistance(Nothing(String?), Nothing(String?)) is null; +select Knn::CosineDistance(Nothing(String?), Just("\u0002")) is null; +select Knn::CosineDistance(Just("\u0002"), Nothing(String?)) is null; +select Knn::CosineDistance(Just("\u0002"), Just("\u0002")) == 0; diff --git a/ydb/library/yql/udfs/common/knn/test/cases/Uint8Serialization.sql b/ydb/library/yql/udfs/common/knn/test/cases/Uint8Serialization.sql new file mode 100644 index 000000000000..99e8f1d176cf --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/cases/Uint8Serialization.sql @@ -0,0 +1,18 @@ +--list serialization +$vector = Cast([1, 2, 3, 4, 5] AS List); +$vector_binary_str = Knn::ToBinaryStringUint8($vector); +select $vector_binary_str; +select Len(Untag($vector_binary_str, "Uint8Vector")) == 6; + +--deserialization +$deserialized_vector = Knn::FloatFromBinaryString($vector_binary_str); +select $deserialized_vector; + +--fixed size vector +$vector1 = Knn::ToBinaryStringUint8([1ut, 2ut, 3ut]); +$vector2 = Knn::ToBinaryStringUint8([4ut, 5ut, 6ut]); + +select Knn::CosineDistance($vector1, $vector2); +select Knn::CosineDistance($vector1, "\u0004\u0005\u0006\u0002"); +select Knn::CosineDistance("\u0001\u0002\u0003\u0002", $vector2); +select Knn::CosineDistance("\u0001\u0002\u0003\u0002", "\u0004\u0005\u0006\u0002"); diff --git a/ydb/library/yql/udfs/common/knn/test/ya.make b/ydb/library/yql/udfs/common/knn/test/ya.make new file mode 100644 index 000000000000..09726ccb31ae --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_YDB_TEST() + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +DEPENDS(ydb/library/yql/udfs/common/knn) + +END() diff --git a/ydb/library/yql/udfs/common/knn/ya.make b/ydb/library/yql/udfs/common/knn/ya.make new file mode 100644 index 000000000000..634856360aac --- /dev/null +++ b/ydb/library/yql/udfs/common/knn/ya.make @@ -0,0 +1,24 @@ +YQL_UDF_YDB(knn) + +YQL_ABI_VERSION( + 2 + 35 + 0 +) + +SRCS( + knn.cpp +) + +PEERDIR( + library/cpp/dot_product + library/cpp/l1_distance + library/cpp/l2_distance +) + + +END() + +RECURSE_FOR_TESTS( + test +) \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/ya.make b/ydb/library/yql/udfs/common/ya.make index b1c226bc20ac..17ae1e020423 100644 --- a/ydb/library/yql/udfs/common/ya.make +++ b/ydb/library/yql/udfs/common/ya.make @@ -11,6 +11,7 @@ RECURSE( json json2 math + knn pire protobuf re2 From ec1169f0e1a4317793133ed1b44c7ef6b45fd2b4 Mon Sep 17 00:00:00 2001 From: Anton Kovalenko Date: Thu, 6 Jun 2024 05:40:34 +0200 Subject: [PATCH 067/110] UI refresh action cherrypick to 24-1 (#5174) Co-authored-by: Vladimir Lewandowski --- .github/workflows/embedded_ui_refresh.yaml | 34 ++++++++++++---------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/.github/workflows/embedded_ui_refresh.yaml b/.github/workflows/embedded_ui_refresh.yaml index d7cf2f073e42..b67bce4dc793 100644 --- a/.github/workflows/embedded_ui_refresh.yaml +++ b/.github/workflows/embedded_ui_refresh.yaml @@ -36,40 +36,42 @@ jobs: run: gh release download $TAG_NAME --repo $REPOSITORY --pattern $ASSET_NAME.zip --dir $TEMP_ASSET_DIR - name: Asset Placement env: + ASSET_DIR: monitoring START_POINTER: "# GENERATED MONITORING RESOURCES START" END_POINTER: "# GENERATED MONITORING RESOURCES END" - TARGET_DIR: ydb/core/viewer/monitoring - YA_MAKE_FILE: ydb/core/viewer/ya.make + WORKING_DIR: ydb/core/viewer run: | - unzip $TEMP_ASSET_DIR/$ASSET_NAME.zip -d $TEMP_ASSET_DIR - rm -rf $TARGET_DIR - mkdir $TARGET_DIR - mv -vf $TEMP_ASSET_DIR/$ASSET_NAME/* $TARGET_DIR + set -e + unzip $TEMP_ASSET_DIR/$ASSET_NAME.zip -d $TEMP_ASSET_DIR + + cd $WORKING_DIR + rm -rf $ASSET_DIR + mkdir $ASSET_DIR + mv -vf $TEMP_ASSET_DIR/$ASSET_NAME/* $ASSET_DIR + # List of files in the target directory. - NEW_RESOURCES=$(find $TARGET_DIR -type f | sort) - + NEW_RESOURCES=$(find $ASSET_DIR -type f | sort) + # Current indentation of the start pointer line. - INDENTATION=$(grep -e "$START_POINTER" $YA_MAKE_FILE | perl -lane 's/^(\s+)(.*)+$/$1/e; print') - + INDENTATION=$(grep -e "$START_POINTER" ya.make | perl -lane 's/^(\s+)(.*)+$/$1/e; print') + # Replacing resources list between start and end pointers with saving the current indentation. perl -0777 -pi -e "s/\s+$START_POINTER.*$END_POINTER/ $INDENTATION$START_POINTER ${INDENTATION}RESOURCE( $(echo "$NEW_RESOURCES" | perl -e "while (<>) {chomp; print \"$INDENTATION \$_ \$_\\n\";}" | sed -E 's/\//\\\//g') $INDENTATION) - $INDENTATION$END_POINTER/s" $YA_MAKE_FILE + $INDENTATION$END_POINTER/s" ya.make - name: Pull Request uses: peter-evans/create-pull-request@v5 with: - token: ${{ secrets.GITHUB_TOKEN }} + token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} commit-message: "build: refresh Embedded UI (${{ env.TAG_NAME }})" - branch: embedded-ui-refresh-${{ env.TAG_NAME }} + branch: embedded-ui-${{ env.TAG_NAME }} delete-branch: true title: "build: refresh Embedded UI (${{ env.TAG_NAME }})" body: | ### Embedded UI Refresh - Embedded UI - [${{ env.TAG_NAME }}](https://github.com/${{ env.REPOSITORY }}/releases/tag/${{ env.TAG_NAME }}) - ([CHANGELOG.md](https://github.com/${{ env.REPOSITORY }}/blob/${{ env.TAG_NAME }}/CHANGELOG.md)). + Embedded UI [${{ env.TAG_NAME }}](https://github.com/${{ env.REPOSITORY }}/releases/tag/${{ env.TAG_NAME }}) ([CHANGELOG.md](https://github.com/${{ env.REPOSITORY }}/blob/${{ env.TAG_NAME }}/CHANGELOG.md)). From 924dab5fcacf4ff8627691810aa107a85a14a912 Mon Sep 17 00:00:00 2001 From: Andrei Rykov Date: Fri, 7 Jun 2024 12:15:31 +0200 Subject: [PATCH 068/110] query stats full (#3464) - merge stable-24-1 (#5288) --- ydb/core/viewer/json_query.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ydb/core/viewer/json_query.h b/ydb/core/viewer/json_query.h index b8ff4153a267..c8432cee2e34 100644 --- a/ydb/core/viewer/json_query.h +++ b/ydb/core/viewer/json_query.h @@ -206,6 +206,9 @@ class TJsonQuery : public TViewerPipeClient { if (Stats == "profile") { request.SetStatsMode(NYql::NDqProto::DQ_STATS_MODE_PROFILE); request.SetCollectStats(Ydb::Table::QueryStatsCollection::STATS_COLLECTION_PROFILE); + } else if (Stats == "full") { + request.SetStatsMode(NYql::NDqProto::DQ_STATS_MODE_FULL); + request.SetCollectStats(Ydb::Table::QueryStatsCollection::STATS_COLLECTION_FULL); } if (Database) { request.SetDatabase(Database); @@ -629,7 +632,7 @@ struct TJsonRequestParameters { {"name":"syntax","in":"query","description":"query syntax (yql_v1, pg)","required":false,"type":"string"}, {"name":"database","in":"query","description":"database name","required":false,"type":"string"}, {"name":"schema","in":"query","description":"result format schema (classic, modern, ydb, multi)","required":false,"type":"string"}, - {"name":"stats","in":"query","description":"return stats (profile)","required":false,"type":"string"}, + {"name":"stats","in":"query","description":"return stats (profile, full)","required":false,"type":"string"}, {"name":"action","in":"query","description":"execute method (execute-scan, execute-script, execute-query, execute-data,explain-ast, explain-scan, explain-script, explain-query, explain-data)","required":false,"type":"string"}, {"name":"base64","in":"query","description":"return strings using base64 encoding","required":false,"type":"string"}, {"name":"timeout","in":"query","description":"timeout in ms","required":false,"type":"integer"}])___"; From 9961fa1f53c982987fa63c92393df42e6202efda Mon Sep 17 00:00:00 2001 From: AlexSm Date: Fri, 7 Jun 2024 12:23:12 +0200 Subject: [PATCH 069/110] build: refresh Embedded UI (v6.5.0) (#5306) Co-authored-by: antonkovalenko --- .../viewer/monitoring/asset-manifest.json | 261 +++++++++++ ydb/core/viewer/monitoring/index.html | 2 +- .../static/css/1551.d5e5efc2.chunk.css | 3 + .../static/css/328.c0ade9c1.chunk.css | 1 + .../static/css/4983.5c3e5de4.chunk.css | 1 + .../static/css/8424.308a04db.chunk.css | 1 + .../static/css/8546.65946fb2.chunk.css | 2 - .../monitoring/static/css/main.a322fb8b.css | 2 - .../monitoring/static/css/main.c8ce3bba.css | 9 + .../static/js/1058.3df06184.chunk.js | 2 - .../static/js/1115.1e053b1d.chunk.js | 2 - .../static/js/1148.3c629236.chunk.js | 1 + .../static/js/115.2c4de87e.chunk.js | 1 + .../static/js/1150.2b47004d.chunk.js | 1 + .../static/js/1155.4fce1854.chunk.js | 2 + .../js/1155.4fce1854.chunk.js.LICENSE.txt | 6 + .../static/js/1168.91d9e2c2.chunk.js | 1 + .../static/js/1179.15d7ac65.chunk.js | 1 + .../static/js/1234.165715d4.chunk.js | 2 - .../static/js/1278.c0717a20.chunk.js | 1 + .../static/js/1350.21b6a9ef.chunk.js | 1 + .../static/js/1474.80932b06.chunk.js | 2 - .../static/js/1478.5044be66.chunk.js | 2 + .../js/1478.5044be66.chunk.js.LICENSE.txt | 6 + .../static/js/148.b60f0e5e.chunk.js | 1 + .../static/js/1508.f0158935.chunk.js | 1 + .../static/js/1522.5645047d.chunk.js | 2 - .../static/js/1528.2a39d066.chunk.js | 1 + .../static/js/1551.2e8e3e50.chunk.js | 2 + .../js/1551.2e8e3e50.chunk.js.LICENSE.txt | 1 + .../static/js/1593.571b4393.chunk.js | 2 - .../static/js/1602.86ed3169.chunk.js | 2 - .../static/js/1616.8a217b93.chunk.js | 1 + .../static/js/163.eea01641.chunk.js | 1 + .../static/js/1736.9f4a6b02.chunk.js | 1 + .../static/js/1746.a8ba5c62.chunk.js | 1 + .../static/js/1747.b4331799.chunk.js | 2 + .../js/1747.b4331799.chunk.js.LICENSE.txt | 6 + .../static/js/178.e0df04cc.chunk.js | 1 + .../static/js/185.7d51fcfa.chunk.js | 2 + .../js/185.7d51fcfa.chunk.js.LICENSE.txt | 6 + .../static/js/1869.d6661a03.chunk.js | 1 + .../static/js/1876.2f512037.chunk.js | 2 - .../static/js/1898.a0e4bd43.chunk.js | 2 - .../static/js/1956.0205a5bb.chunk.js | 2 + .../js/1956.0205a5bb.chunk.js.LICENSE.txt | 6 + .../static/js/202.52f13cd5.chunk.js | 1 + .../static/js/2033.5c6dfca9.chunk.js | 1 + .../static/js/2056.b607e590.chunk.js | 2 - .../static/js/2081.bd41025d.chunk.js | 2 - .../static/js/2104.4f22ecac.chunk.js | 2 + .../js/2104.4f22ecac.chunk.js.LICENSE.txt | 6 + .../static/js/2118.bc169874.chunk.js | 2 + .../js/2118.bc169874.chunk.js.LICENSE.txt | 6 + .../static/js/2119.9f7a5c06.chunk.js | 2 - .../static/js/214.99a17949.chunk.js | 2 + .../js/214.99a17949.chunk.js.LICENSE.txt | 6 + .../static/js/2141.26c930aa.chunk.js | 2 + .../js/2141.26c930aa.chunk.js.LICENSE.txt | 6 + .../static/js/2174.264d1736.chunk.js | 2 - .../static/js/2183.e2318c37.chunk.js | 2 + .../js/2183.e2318c37.chunk.js.LICENSE.txt | 6 + .../static/js/2190.27f354f5.chunk.js | 2 + .../js/2190.27f354f5.chunk.js.LICENSE.txt | 6 + .../static/js/2194.38bafdfc.chunk.js | 2 + .../js/2194.38bafdfc.chunk.js.LICENSE.txt | 6 + .../static/js/2205.e7f0b9ab.chunk.js | 2 - .../static/js/2223.63ae5a05.chunk.js | 1 + .../static/js/2229.6687fc46.chunk.js | 1 + .../static/js/2238.3cf88b79.chunk.js | 1 + .../static/js/2291.d410fd68.chunk.js | 2 - .../static/js/2302.7e7a2fb4.chunk.js | 2 + .../js/2302.7e7a2fb4.chunk.js.LICENSE.txt | 6 + .../static/js/2322.29255c22.chunk.js | 2 + .../js/2322.29255c22.chunk.js.LICENSE.txt | 6 + .../static/js/2367.052e678b.chunk.js | 1 + .../static/js/2403.82cd0025.chunk.js | 2 + .../js/2403.82cd0025.chunk.js.LICENSE.txt | 6 + .../static/js/2406.180cb966.chunk.js | 2 - .../static/js/2435.092e8d7f.chunk.js | 1 + .../static/js/245.6db2db52.chunk.js | 2 - .../static/js/2477.e6121bfd.chunk.js | 1 + .../static/js/248.736ab237.chunk.js | 2 - .../static/js/2492.64b7d727.chunk.js | 2 + .../js/2492.64b7d727.chunk.js.LICENSE.txt | 6 + .../static/js/2507.2d9c4b5c.chunk.js | 2 - .../static/js/2521.21bdfab9.chunk.js | 2 + .../js/2521.21bdfab9.chunk.js.LICENSE.txt | 6 + .../static/js/2532.30bb087d.chunk.js | 2 + .../js/2532.30bb087d.chunk.js.LICENSE.txt | 6 + .../static/js/254.a91c0bf4.chunk.js | 2 - .../static/js/2553.5faabf5a.chunk.js | 2 + .../js/2553.5faabf5a.chunk.js.LICENSE.txt | 6 + .../static/js/2590.75b6626e.chunk.js | 1 + .../static/js/2620.8e5c52fb.chunk.js | 1 + .../static/js/2677.3d7ea3fc.chunk.js | 1 + .../static/js/2701.86912840.chunk.js | 1 + .../static/js/2799.64ec0194.chunk.js | 2 - .../static/js/2840.b69eb597.chunk.js | 2 + .../js/2840.b69eb597.chunk.js.LICENSE.txt | 6 + .../static/js/2862.29a56bf7.chunk.js | 2 - .../static/js/2876.afe7e47f.chunk.js | 2 + .../js/2876.afe7e47f.chunk.js.LICENSE.txt | 6 + .../static/js/2931.3ade3bc3.chunk.js | 2 + .../js/2931.3ade3bc3.chunk.js.LICENSE.txt | 10 + .../static/js/2962.66e01691.chunk.js | 2 + .../js/2962.66e01691.chunk.js.LICENSE.txt | 6 + .../static/js/2981.6d027811.chunk.js | 1 + .../static/js/2986.2100fcad.chunk.js | 1 + .../static/js/2991.0db887ba.chunk.js | 2 - .../static/js/2994.e6c77407.chunk.js | 2 + .../js/2994.e6c77407.chunk.js.LICENSE.txt | 6 + .../monitoring/static/js/30.b097cbb4.chunk.js | 1 + .../static/js/3001.b1a75b50.chunk.js | 2 - .../static/js/3025.7e536c57.chunk.js | 1 + .../static/js/3074.bbb8aaef.chunk.js | 2 + .../js/3074.bbb8aaef.chunk.js.LICENSE.txt | 6 + .../static/js/3191.c6dbae35.chunk.js | 2 - .../static/js/3231.65396654.chunk.js | 1 + .../static/js/3254.78ce4d35.chunk.js | 2 - .../static/js/3258.248867bd.chunk.js | 2 - .../static/js/3271.7b005742.chunk.js | 1 + .../static/js/328.f24db8bf.chunk.js | 1 + .../static/js/3304.f5897a96.chunk.js | 1 + .../static/js/3333.ceb196e6.chunk.js | 1 + .../static/js/3358.c777fe1f.chunk.js | 2 + .../js/3358.c777fe1f.chunk.js.LICENSE.txt | 6 + .../static/js/337.b6fc715e.chunk.js | 2 + .../js/337.b6fc715e.chunk.js.LICENSE.txt | 6 + .../static/js/3397.9c0005a3.chunk.js | 1 + .../static/js/3451.774580b7.chunk.js | 2 - .../static/js/3457.b193afe6.chunk.js | 1 + .../static/js/3466.98f036ac.chunk.js | 1 + .../static/js/3498.c7d39060.chunk.js | 2 + .../js/3498.c7d39060.chunk.js.LICENSE.txt | 6 + .../static/js/358.d6300019.chunk.js | 2 + .../js/358.d6300019.chunk.js.LICENSE.txt | 6 + .../static/js/3621.9b6c61ab.chunk.js | 2 + .../js/3621.9b6c61ab.chunk.js.LICENSE.txt | 6 + .../static/js/3630.8eda2d3f.chunk.js | 1 + .../static/js/3644.aeda46ca.chunk.js | 2 + .../js/3644.aeda46ca.chunk.js.LICENSE.txt | 6 + .../static/js/3645.bdd20200.chunk.js | 1 + .../static/js/371.93a1186d.chunk.js | 2 - .../static/js/3756.67bd6b00.chunk.js | 1 + .../static/js/3757.7c534899.chunk.js | 1 + .../static/js/3771.0e0bb0f3.chunk.js | 2 - .../static/js/3771.764124c3.chunk.js | 2 + .../js/3771.764124c3.chunk.js.LICENSE.txt | 6 + .../static/js/383.4faec08b.chunk.js | 1 + .../static/js/3848.be131fc6.chunk.js | 2 - .../static/js/3883.62a3dee4.chunk.js | 2 - .../static/js/3898.1fec42e6.chunk.js | 1 + .../static/js/3920.11b8c9d7.chunk.js | 1 + .../static/js/3926.8f2c9741.chunk.js | 1 + .../static/js/3945.054c871d.chunk.js | 1 + .../static/js/4046.5dac72a9.chunk.js | 2 + .../js/4046.5dac72a9.chunk.js.LICENSE.txt | 6 + .../static/js/4080.07be3744.chunk.js | 1 + .../static/js/4123.64882a16.chunk.js | 2 + .../js/4123.64882a16.chunk.js.LICENSE.txt | 6 + .../static/js/4132.04be158e.chunk.js | 1 + .../static/js/4159.5e0cfd91.chunk.js | 1 + .../static/js/4198.d0671061.chunk.js | 1 + .../static/js/425.c6dd581a.chunk.js | 2 + .../js/425.c6dd581a.chunk.js.LICENSE.txt | 6 + .../static/js/4326.d5c34c54.chunk.js | 1 + .../static/js/4345.9238776d.chunk.js | 2 + .../js/4345.9238776d.chunk.js.LICENSE.txt | 6 + .../static/js/4347.adf03999.chunk.js | 1 + .../static/js/436.564ff0f8.chunk.js | 1 + .../static/js/4388.edb51304.chunk.js | 2 + .../js/4388.edb51304.chunk.js.LICENSE.txt | 6 + .../static/js/451.3b449e79.chunk.js | 2 + .../js/451.3b449e79.chunk.js.LICENSE.txt | 6 + .../static/js/4529.eb0068c3.chunk.js | 2 - .../static/js/4535.5d1c8322.chunk.js | 1 + .../static/js/4546.6820709e.chunk.js | 2 - .../static/js/4550.2e04d705.chunk.js | 2 + .../js/4550.2e04d705.chunk.js.LICENSE.txt | 6 + .../static/js/4583.1682cf86.chunk.js | 1 + .../static/js/4618.131d9563.chunk.js | 1 + .../static/js/4635.ffa9b6b7.chunk.js | 2 + .../js/4635.ffa9b6b7.chunk.js.LICENSE.txt | 6 + .../static/js/4663.b893c670.chunk.js | 1 + .../static/js/4663.cc239299.chunk.js | 2 - .../static/js/4684.27f737c4.chunk.js | 1 + .../static/js/4712.4e557974.chunk.js | 3 - .../static/js/4731.6929d6df.chunk.js | 2 - .../static/js/4789.d52069de.chunk.js | 1 + .../static/js/4812.73af8448.chunk.js | 2 + .../js/4812.73af8448.chunk.js.LICENSE.txt | 6 + .../static/js/4814.11309069.chunk.js | 1 + .../static/js/4826.d2723706.chunk.js | 1 + .../static/js/4842.57182d38.chunk.js | 1 + .../static/js/4848.64f47dc3.chunk.js | 1 + .../static/js/4949.6bf46e71.chunk.js | 1 + .../static/js/4952.58b99bba.chunk.js | 2 - .../static/js/4964.c7c75eb0.chunk.js | 1 + .../static/js/4985.991de003.chunk.js | 1 + .../static/js/5012.3afcd232.chunk.js | 2 - .../static/js/5107.8cac6a03.chunk.js | 2 + .../js/5107.8cac6a03.chunk.js.LICENSE.txt | 6 + .../static/js/5112.6189bbe0.chunk.js | 1 + .../static/js/5117.896f7ffb.chunk.js | 1 + .../static/js/515.cd9a8a90.chunk.js | 1 + .../static/js/5161.45b4f520.chunk.js | 1 + .../static/js/5168.6fb23f08.chunk.js | 2 + .../js/5168.6fb23f08.chunk.js.LICENSE.txt | 6 + .../static/js/5210.6e07cb51.chunk.js | 2 - .../static/js/5215.2d9f2122.chunk.js | 2 - .../static/js/5226.675d55fb.chunk.js | 1 + .../static/js/5311.a500a1ea.chunk.js | 2 + .../js/5311.a500a1ea.chunk.js.LICENSE.txt | 6 + .../static/js/5341.2c19c723.chunk.js | 1 + .../static/js/5352.3d3187b7.chunk.js | 1 + .../static/js/5373.90c95a6e.chunk.js | 1 + .../static/js/5378.86805fba.chunk.js | 2 + .../js/5378.86805fba.chunk.js.LICENSE.txt | 6 + .../static/js/5387.8af1d694.chunk.js | 1 + .../static/js/5399.f9398084.chunk.js | 1 + .../static/js/5444.f86e47ff.chunk.js | 2 - .../static/js/5448.cef3c129.chunk.js | 1 + .../static/js/5450.f0dcfc15.chunk.js | 1 + .../static/js/5491.a460479e.chunk.js | 1 + .../static/js/5517.a1034916.chunk.js | 2 - .../static/js/556.55f00ac6.chunk.js | 1 + .../static/js/5643.00957838.chunk.js | 1 + .../static/js/5646.ced0e1ae.chunk.js | 2 - .../static/js/5661.c83a4eb0.chunk.js | 2 + .../js/5661.c83a4eb0.chunk.js.LICENSE.txt | 6 + .../static/js/5670.5c30cef1.chunk.js | 1 + .../static/js/569.abbf95fd.chunk.js | 2 - .../static/js/5695.d81b70ca.chunk.js | 2 - .../static/js/5720.39a954f1.chunk.js | 1 + .../static/js/5748.fa2a8e02.chunk.js | 2 - .../static/js/5784.26f46213.chunk.js | 2 - .../static/js/5790.e3d88e2c.chunk.js | 2 + .../js/5790.e3d88e2c.chunk.js.LICENSE.txt | 6 + .../static/js/5809.d78ebebb.chunk.js | 1 + .../static/js/5863.e2cd2452.chunk.js | 1 + .../static/js/5868.be04313a.chunk.js | 2 + .../js/5868.be04313a.chunk.js.LICENSE.txt | 6 + .../static/js/5885.c5ee8345.chunk.js | 2 - .../static/js/598.243fd68d.chunk.js | 1 + .../static/js/599.c58caf58.chunk.js | 1 + .../static/js/6044.2de9962d.chunk.js | 2 + .../js/6044.2de9962d.chunk.js.LICENSE.txt | 6 + .../static/js/6058.7f474f92.chunk.js | 1 + .../static/js/6060.eb821066.chunk.js | 2 - .../static/js/6065.b08e9640.chunk.js | 1 + .../static/js/6135.e49ec940.chunk.js | 2 - .../static/js/6142.b2452554.chunk.js | 2 + .../js/6142.b2452554.chunk.js.LICENSE.txt | 6 + .../static/js/6144.e1568f26.chunk.js | 1 + .../static/js/6156.0c562627.chunk.js | 1 + .../static/js/619.f27ddcbd.chunk.js | 2 + .../js/619.f27ddcbd.chunk.js.LICENSE.txt | 6 + .../static/js/620.7aea5425.chunk.js | 1 + .../static/js/6227.fc562bbf.chunk.js | 1 + .../static/js/6230.8e64216a.chunk.js | 2 + .../js/6230.8e64216a.chunk.js.LICENSE.txt | 6 + .../static/js/6266.db91261c.chunk.js | 2 - .../static/js/6289.51f8741e.chunk.js | 2 + .../js/6289.51f8741e.chunk.js.LICENSE.txt | 6 + .../static/js/6291.e7cdf7f2.chunk.js | 1 + .../static/js/6300.dca75d45.chunk.js | 2 + .../js/6300.dca75d45.chunk.js.LICENSE.txt | 6 + .../static/js/632.b6c03857.chunk.js | 1 + .../static/js/6321.aa3e44de.chunk.js | 2 + .../js/6321.aa3e44de.chunk.js.LICENSE.txt | 6 + .../static/js/6329.d78c1432.chunk.js | 2 + .../js/6329.d78c1432.chunk.js.LICENSE.txt | 6 + .../static/js/6361.a9f11e7a.chunk.js | 1 + .../static/js/6390.497d0ec8.chunk.js | 2 + .../js/6390.497d0ec8.chunk.js.LICENSE.txt | 6 + .../static/js/6392.134ee5e4.chunk.js | 1 + .../static/js/6393.b0de2d9e.chunk.js | 1 + .../static/js/6521.371403ec.chunk.js | 1 + .../static/js/6531.7eac62d1.chunk.js | 1 + .../static/js/6550.b5e85913.chunk.js | 2 - .../static/js/6559.41bbd3a3.chunk.js | 2 - .../static/js/6619.9e1de7a6.chunk.js | 2 + .../js/6619.9e1de7a6.chunk.js.LICENSE.txt | 6 + .../static/js/6679.6e0a87d5.chunk.js | 1 + .../static/js/6692.9322b59d.chunk.js | 2 + .../js/6692.9322b59d.chunk.js.LICENSE.txt | 6 + .../static/js/6708.5cf2a45c.chunk.js | 2 - .../static/js/674.e6536250.chunk.js | 1 + .../static/js/678.b73063ff.chunk.js | 1 + .../static/js/6795.5ec0c96a.chunk.js | 2 + .../js/6795.5ec0c96a.chunk.js.LICENSE.txt | 6 + .../static/js/6815.672badd5.chunk.js | 1 + .../static/js/6876.867b698c.chunk.js | 1 + .../static/js/6877.d2d51d98.chunk.js | 1 + .../static/js/6887.0855fd66.chunk.js | 1 + .../static/js/6892.2c3c2bcb.chunk.js | 1 + .../static/js/6892.3db15360.chunk.js | 2 - .../static/js/6898.5580b941.chunk.js | 2 + .../js/6898.5580b941.chunk.js.LICENSE.txt | 6 + .../static/js/6919.84ed9ccc.chunk.js | 2 + .../js/6919.84ed9ccc.chunk.js.LICENSE.txt | 6 + .../static/js/6954.e18be130.chunk.js | 1 + .../static/js/6961.f4888ae1.chunk.js | 1 + .../static/js/698.746436d5.chunk.js | 2 - .../static/js/7016.4a34a027.chunk.js | 1 + .../static/js/704.45771d88.chunk.js | 1 + .../static/js/7119.e94f8dac.chunk.js | 1 + .../static/js/7168.ed7798a9.chunk.js | 2 - .../static/js/7202.fefd43ee.chunk.js | 1 + .../static/js/7257.8ce0d045.chunk.js | 1 + .../static/js/7276.47f377a4.chunk.js | 1 + .../static/js/7388.9f447514.chunk.js | 1 + .../static/js/7409.4408962b.chunk.js | 1 + .../static/js/7478.0bf003df.chunk.js | 2 - .../static/js/7520.d245d6ac.chunk.js | 2 + .../js/7520.d245d6ac.chunk.js.LICENSE.txt | 6 + .../static/js/7522.1a0f9c02.chunk.js | 1 + .../static/js/7529.ddf87a9a.chunk.js | 2 + .../js/7529.ddf87a9a.chunk.js.LICENSE.txt | 6 + .../static/js/7543.3fcfd3ba.chunk.js | 2 + .../js/7543.3fcfd3ba.chunk.js.LICENSE.txt | 6 + .../static/js/7548.8ef3bbc0.chunk.js | 2 - .../static/js/7554.28f3da22.chunk.js | 2 + .../js/7554.28f3da22.chunk.js.LICENSE.txt | 6 + .../static/js/758.2eb69c4e.chunk.js | 2 - .../static/js/7645.6565454c.chunk.js | 1 + .../static/js/7661.dd104c3c.chunk.js | 2 - .../static/js/7664.9f9f696d.chunk.js | 2 - .../static/js/7684.a3920b72.chunk.js | 1 + .../static/js/7768.2adb4751.chunk.js | 2 - .../static/js/7779.9d9b07ae.chunk.js | 1 + .../static/js/7803.a56cfca6.chunk.js | 1 + .../static/js/785.d2eae69c.chunk.js | 2 + .../js/785.d2eae69c.chunk.js.LICENSE.txt | 6 + .../static/js/7953.eb2256ce.chunk.js | 2 - .../static/js/7992.20690745.chunk.js | 1 + .../static/js/7999.bdf4fe79.chunk.js | 1 + .../static/js/8005.9c209154.chunk.js | 2 - .../static/js/8011.4fed4307.chunk.js | 1 + .../static/js/805.d67f39bf.chunk.js | 2 - .../static/js/8065.666ef449.chunk.js | 2 + .../js/8065.666ef449.chunk.js.LICENSE.txt | 6 + .../static/js/8133.2afc4db4.chunk.js | 1 + .../static/js/8140.8d8e9309.chunk.js | 1 + .../static/js/8167.b9a90da5.chunk.js | 1 + .../static/js/8206.d2f5a912.chunk.js | 2 - .../static/js/8322.c2b160c6.chunk.js | 2 - .../static/js/8335.9ed734ba.chunk.js | 2 - .../static/js/842.bd21ee9f.chunk.js | 2 - .../static/js/8424.5b5c42b5.chunk.js | 2 + .../js/8424.5b5c42b5.chunk.js.LICENSE.txt | 6 + .../static/js/8450.baf3a89d.chunk.js | 2 + .../js/8450.baf3a89d.chunk.js.LICENSE.txt | 6 + .../static/js/8520.616efa9f.chunk.js | 2 - .../static/js/8546.79cce20d.chunk.js | 2 - .../static/js/8558.47b3557b.chunk.js | 2 - .../static/js/8590.b8446f1d.chunk.js | 2 - .../static/js/8591.93172fe9.chunk.js | 1 + .../monitoring/static/js/86.ad271bdc.chunk.js | 2 + .../js/86.ad271bdc.chunk.js.LICENSE.txt | 6 + .../static/js/8607.1e377882.chunk.js | 1 + .../static/js/8622.49f3054c.chunk.js | 1 + .../static/js/8695.f17f8853.chunk.js | 1 + .../static/js/8702.69a3e0d5.chunk.js | 1 + .../static/js/8747.baf63d86.chunk.js | 1 + .../static/js/8791.b209de42.chunk.js | 2 + .../js/8791.b209de42.chunk.js.LICENSE.txt | 6 + .../static/js/8794.5ad5fb7d.chunk.js | 2 - .../static/js/8797.f8f0ce13.chunk.js | 2 + .../js/8797.f8f0ce13.chunk.js.LICENSE.txt | 6 + .../static/js/8850.97635389.chunk.js | 1 + .../static/js/8853.c8f9e9d6.chunk.js | 1 + .../static/js/8858.cd9d49a5.chunk.js | 1 + .../static/js/8905.b8a9fd91.chunk.js | 2 + .../js/8905.b8a9fd91.chunk.js.LICENSE.txt | 6 + .../static/js/9005.053ddf1a.chunk.js | 2 - .../static/js/9011.f3cf1dfe.chunk.js | 2 - .../static/js/9101.ce051539.chunk.js | 1 + .../static/js/9163.de992e19.chunk.js | 2 - .../static/js/9173.71d773f2.chunk.js | 2 + .../js/9173.71d773f2.chunk.js.LICENSE.txt | 6 + .../static/js/919.53e04507.chunk.js | 2 + .../js/919.53e04507.chunk.js.LICENSE.txt | 6 + .../static/js/9204.77418f94.chunk.js | 1 + .../static/js/9207.5881b206.chunk.js | 1 + .../static/js/9212.870f16f0.chunk.js | 1 + .../static/js/9219.24a20881.chunk.js | 1 + .../static/js/924.382f18b1.chunk.js | 2 + .../js/924.382f18b1.chunk.js.LICENSE.txt | 6 + .../static/js/9280.40cff028.chunk.js | 1 + .../static/js/9292.3ccb6509.chunk.js | 2 - .../static/js/9292.91ed23f7.chunk.js | 1 + .../static/js/9297.eadc4dba.chunk.js | 1 + .../static/js/9308.c72b8585.chunk.js | 1 + .../static/js/9319.40f9e46a.chunk.js | 2 + .../js/9319.40f9e46a.chunk.js.LICENSE.txt | 6 + .../static/js/9371.b42befbc.chunk.js | 2 + .../js/9371.b42befbc.chunk.js.LICENSE.txt | 6 + .../static/js/939.4c5d6b68.chunk.js | 2 - .../static/js/9411.96fb3e2f.chunk.js | 1 + .../static/js/9413.b2921c36.chunk.js | 1 + .../static/js/9433.7ce648d0.chunk.js | 2 + .../js/9433.7ce648d0.chunk.js.LICENSE.txt | 6 + .../static/js/9526.10bb1684.chunk.js | 2 + .../js/9526.10bb1684.chunk.js.LICENSE.txt | 6 + .../static/js/9528.9991c023.chunk.js | 1 + .../static/js/9555.c9b5ee61.chunk.js | 1 + .../static/js/9572.9f83f004.chunk.js | 1 + .../monitoring/static/js/96.6e1bf3f4.chunk.js | 1 + .../static/js/9621.48073631.chunk.js | 2 + .../js/9621.48073631.chunk.js.LICENSE.txt | 6 + .../static/js/9803.e1567af5.chunk.js | 2 - .../static/js/983.18afe3d6.chunk.js | 2 - .../static/js/9876.b336d1f5.chunk.js | 2 + .../js/9876.b336d1f5.chunk.js.LICENSE.txt | 6 + .../static/js/9917.67d792e3.chunk.js | 1 + .../static/js/9923.270f0a19.chunk.js | 2 + .../js/9923.270f0a19.chunk.js.LICENSE.txt | 6 + .../monitoring/static/js/main.2c02e91d.js | 3 - .../monitoring/static/js/main.62a60ecb.js | 2 + .../static/js/main.62a60ecb.js.LICENSE.txt | 113 +++++ .../media/codicon.762fced46d6cddbda272.ttf | Bin 0 -> 79844 bytes .../media/codicon.80a4c25b73c1f97077ed.ttf | Bin 70964 -> 0 bytes ydb/core/viewer/ya.make | 435 ++++++++++++++---- 425 files changed, 1570 insertions(+), 268 deletions(-) create mode 100644 ydb/core/viewer/monitoring/asset-manifest.json create mode 100644 ydb/core/viewer/monitoring/static/css/1551.d5e5efc2.chunk.css create mode 100644 ydb/core/viewer/monitoring/static/css/328.c0ade9c1.chunk.css create mode 100644 ydb/core/viewer/monitoring/static/css/4983.5c3e5de4.chunk.css create mode 100644 ydb/core/viewer/monitoring/static/css/8424.308a04db.chunk.css delete mode 100644 ydb/core/viewer/monitoring/static/css/8546.65946fb2.chunk.css delete mode 100644 ydb/core/viewer/monitoring/static/css/main.a322fb8b.css create mode 100644 ydb/core/viewer/monitoring/static/css/main.c8ce3bba.css delete mode 100644 ydb/core/viewer/monitoring/static/js/1058.3df06184.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/1115.1e053b1d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1148.3c629236.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/115.2c4de87e.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1150.2b47004d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1155.4fce1854.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1155.4fce1854.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/1168.91d9e2c2.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1179.15d7ac65.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/1234.165715d4.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1278.c0717a20.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1350.21b6a9ef.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/1474.80932b06.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1478.5044be66.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1478.5044be66.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/148.b60f0e5e.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1508.f0158935.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/1522.5645047d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1528.2a39d066.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1551.2e8e3e50.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1551.2e8e3e50.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/1593.571b4393.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/1602.86ed3169.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1616.8a217b93.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/163.eea01641.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1736.9f4a6b02.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1746.a8ba5c62.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1747.b4331799.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1747.b4331799.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/178.e0df04cc.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/185.7d51fcfa.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/185.7d51fcfa.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/1869.d6661a03.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/1876.2f512037.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/1898.a0e4bd43.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1956.0205a5bb.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/1956.0205a5bb.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/202.52f13cd5.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2033.5c6dfca9.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/2056.b607e590.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/2081.bd41025d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2104.4f22ecac.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2104.4f22ecac.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/2118.bc169874.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2118.bc169874.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/2119.9f7a5c06.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/214.99a17949.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/214.99a17949.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/2141.26c930aa.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2141.26c930aa.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/2174.264d1736.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2183.e2318c37.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2183.e2318c37.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/2190.27f354f5.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2190.27f354f5.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/2194.38bafdfc.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2194.38bafdfc.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/2205.e7f0b9ab.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2223.63ae5a05.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2229.6687fc46.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2238.3cf88b79.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/2291.d410fd68.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2302.7e7a2fb4.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2302.7e7a2fb4.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/2322.29255c22.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2322.29255c22.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/2367.052e678b.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2403.82cd0025.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2403.82cd0025.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/2406.180cb966.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2435.092e8d7f.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/245.6db2db52.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2477.e6121bfd.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/248.736ab237.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2492.64b7d727.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2492.64b7d727.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/2507.2d9c4b5c.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2521.21bdfab9.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2521.21bdfab9.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/2532.30bb087d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2532.30bb087d.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/254.a91c0bf4.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2553.5faabf5a.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2553.5faabf5a.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/2590.75b6626e.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2620.8e5c52fb.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2677.3d7ea3fc.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2701.86912840.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/2799.64ec0194.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2840.b69eb597.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2840.b69eb597.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/2862.29a56bf7.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2876.afe7e47f.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2876.afe7e47f.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/2931.3ade3bc3.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2931.3ade3bc3.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/2962.66e01691.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2962.66e01691.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/2981.6d027811.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2986.2100fcad.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/2991.0db887ba.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2994.e6c77407.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/2994.e6c77407.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/30.b097cbb4.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/3001.b1a75b50.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3025.7e536c57.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3074.bbb8aaef.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3074.bbb8aaef.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/3191.c6dbae35.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3231.65396654.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/3254.78ce4d35.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/3258.248867bd.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3271.7b005742.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/328.f24db8bf.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3304.f5897a96.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3333.ceb196e6.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3358.c777fe1f.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3358.c777fe1f.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/337.b6fc715e.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/337.b6fc715e.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/3397.9c0005a3.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/3451.774580b7.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3457.b193afe6.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3466.98f036ac.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3498.c7d39060.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3498.c7d39060.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/358.d6300019.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/358.d6300019.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/3621.9b6c61ab.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3621.9b6c61ab.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/3630.8eda2d3f.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3644.aeda46ca.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3644.aeda46ca.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/3645.bdd20200.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/371.93a1186d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3756.67bd6b00.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3757.7c534899.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/3771.0e0bb0f3.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3771.764124c3.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3771.764124c3.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/383.4faec08b.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/3848.be131fc6.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/3883.62a3dee4.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3898.1fec42e6.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3920.11b8c9d7.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3926.8f2c9741.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/3945.054c871d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4046.5dac72a9.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4046.5dac72a9.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/4080.07be3744.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4123.64882a16.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4123.64882a16.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/4132.04be158e.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4159.5e0cfd91.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4198.d0671061.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/425.c6dd581a.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/425.c6dd581a.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/4326.d5c34c54.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4345.9238776d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4345.9238776d.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/4347.adf03999.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/436.564ff0f8.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4388.edb51304.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4388.edb51304.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/451.3b449e79.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/451.3b449e79.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/4529.eb0068c3.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4535.5d1c8322.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/4546.6820709e.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4550.2e04d705.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4550.2e04d705.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/4583.1682cf86.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4618.131d9563.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4635.ffa9b6b7.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4635.ffa9b6b7.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/4663.b893c670.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/4663.cc239299.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4684.27f737c4.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/4712.4e557974.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/4731.6929d6df.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4789.d52069de.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4812.73af8448.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4812.73af8448.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/4814.11309069.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4826.d2723706.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4842.57182d38.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4848.64f47dc3.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4949.6bf46e71.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/4952.58b99bba.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4964.c7c75eb0.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/4985.991de003.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/5012.3afcd232.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5107.8cac6a03.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5107.8cac6a03.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/5112.6189bbe0.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5117.896f7ffb.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/515.cd9a8a90.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5161.45b4f520.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5168.6fb23f08.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5168.6fb23f08.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/5210.6e07cb51.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/5215.2d9f2122.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5226.675d55fb.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5311.a500a1ea.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5311.a500a1ea.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/5341.2c19c723.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5352.3d3187b7.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5373.90c95a6e.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5378.86805fba.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5378.86805fba.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/5387.8af1d694.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5399.f9398084.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/5444.f86e47ff.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5448.cef3c129.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5450.f0dcfc15.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5491.a460479e.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/5517.a1034916.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/556.55f00ac6.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5643.00957838.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/5646.ced0e1ae.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5661.c83a4eb0.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5661.c83a4eb0.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/5670.5c30cef1.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/569.abbf95fd.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/5695.d81b70ca.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5720.39a954f1.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/5748.fa2a8e02.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/5784.26f46213.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5790.e3d88e2c.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5790.e3d88e2c.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/5809.d78ebebb.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5863.e2cd2452.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5868.be04313a.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/5868.be04313a.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/5885.c5ee8345.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/598.243fd68d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/599.c58caf58.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6044.2de9962d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6044.2de9962d.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/6058.7f474f92.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/6060.eb821066.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6065.b08e9640.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/6135.e49ec940.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6142.b2452554.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6142.b2452554.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/6144.e1568f26.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6156.0c562627.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/619.f27ddcbd.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/619.f27ddcbd.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/620.7aea5425.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6227.fc562bbf.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6230.8e64216a.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6230.8e64216a.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/6266.db91261c.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6289.51f8741e.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6289.51f8741e.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/6291.e7cdf7f2.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6300.dca75d45.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6300.dca75d45.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/632.b6c03857.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6321.aa3e44de.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6321.aa3e44de.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/6329.d78c1432.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6329.d78c1432.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/6361.a9f11e7a.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6390.497d0ec8.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6390.497d0ec8.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/6392.134ee5e4.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6393.b0de2d9e.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6521.371403ec.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6531.7eac62d1.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/6550.b5e85913.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/6559.41bbd3a3.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6619.9e1de7a6.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6619.9e1de7a6.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/6679.6e0a87d5.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6692.9322b59d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6692.9322b59d.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/6708.5cf2a45c.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/674.e6536250.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/678.b73063ff.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6795.5ec0c96a.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6795.5ec0c96a.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/6815.672badd5.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6876.867b698c.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6877.d2d51d98.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6887.0855fd66.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6892.2c3c2bcb.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/6892.3db15360.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6898.5580b941.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6898.5580b941.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/6919.84ed9ccc.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6919.84ed9ccc.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/6954.e18be130.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/6961.f4888ae1.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/698.746436d5.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7016.4a34a027.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/704.45771d88.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7119.e94f8dac.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/7168.ed7798a9.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7202.fefd43ee.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7257.8ce0d045.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7276.47f377a4.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7388.9f447514.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7409.4408962b.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/7478.0bf003df.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7520.d245d6ac.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7520.d245d6ac.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/7522.1a0f9c02.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7529.ddf87a9a.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7529.ddf87a9a.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/7543.3fcfd3ba.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7543.3fcfd3ba.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/7548.8ef3bbc0.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7554.28f3da22.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7554.28f3da22.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/758.2eb69c4e.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7645.6565454c.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/7661.dd104c3c.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/7664.9f9f696d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7684.a3920b72.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/7768.2adb4751.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7779.9d9b07ae.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7803.a56cfca6.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/785.d2eae69c.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/785.d2eae69c.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/7953.eb2256ce.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7992.20690745.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/7999.bdf4fe79.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/8005.9c209154.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8011.4fed4307.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/805.d67f39bf.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8065.666ef449.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8065.666ef449.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/8133.2afc4db4.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8140.8d8e9309.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8167.b9a90da5.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/8206.d2f5a912.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/8322.c2b160c6.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/8335.9ed734ba.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/842.bd21ee9f.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8424.5b5c42b5.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8424.5b5c42b5.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/8450.baf3a89d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8450.baf3a89d.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/8520.616efa9f.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/8546.79cce20d.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/8558.47b3557b.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/8590.b8446f1d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8591.93172fe9.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/86.ad271bdc.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/86.ad271bdc.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/8607.1e377882.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8622.49f3054c.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8695.f17f8853.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8702.69a3e0d5.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8747.baf63d86.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8791.b209de42.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8791.b209de42.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/8794.5ad5fb7d.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8797.f8f0ce13.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8797.f8f0ce13.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/8850.97635389.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8853.c8f9e9d6.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8858.cd9d49a5.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8905.b8a9fd91.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/8905.b8a9fd91.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/9005.053ddf1a.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/9011.f3cf1dfe.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9101.ce051539.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/9163.de992e19.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9173.71d773f2.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9173.71d773f2.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/919.53e04507.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/919.53e04507.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/9204.77418f94.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9207.5881b206.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9212.870f16f0.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9219.24a20881.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/924.382f18b1.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/924.382f18b1.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/9280.40cff028.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/9292.3ccb6509.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9292.91ed23f7.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9297.eadc4dba.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9308.c72b8585.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9319.40f9e46a.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9319.40f9e46a.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/9371.b42befbc.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9371.b42befbc.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/939.4c5d6b68.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9411.96fb3e2f.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9413.b2921c36.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9433.7ce648d0.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9433.7ce648d0.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/9526.10bb1684.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9526.10bb1684.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/9528.9991c023.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9555.c9b5ee61.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9572.9f83f004.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/96.6e1bf3f4.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9621.48073631.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9621.48073631.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/9803.e1567af5.chunk.js delete mode 100644 ydb/core/viewer/monitoring/static/js/983.18afe3d6.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9876.b336d1f5.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9876.b336d1f5.chunk.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/js/9917.67d792e3.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9923.270f0a19.chunk.js create mode 100644 ydb/core/viewer/monitoring/static/js/9923.270f0a19.chunk.js.LICENSE.txt delete mode 100644 ydb/core/viewer/monitoring/static/js/main.2c02e91d.js create mode 100644 ydb/core/viewer/monitoring/static/js/main.62a60ecb.js create mode 100644 ydb/core/viewer/monitoring/static/js/main.62a60ecb.js.LICENSE.txt create mode 100644 ydb/core/viewer/monitoring/static/media/codicon.762fced46d6cddbda272.ttf delete mode 100644 ydb/core/viewer/monitoring/static/media/codicon.80a4c25b73c1f97077ed.ttf diff --git a/ydb/core/viewer/monitoring/asset-manifest.json b/ydb/core/viewer/monitoring/asset-manifest.json new file mode 100644 index 000000000000..bac25a42dd95 --- /dev/null +++ b/ydb/core/viewer/monitoring/asset-manifest.json @@ -0,0 +1,261 @@ +{ + "files": { + "main.css": "./static/css/main.c8ce3bba.css", + "main.js": "./static/js/main.62a60ecb.js", + "static/js/3457.b193afe6.chunk.js": "./static/js/3457.b193afe6.chunk.js", + "static/js/6876.867b698c.chunk.js": "./static/js/6876.867b698c.chunk.js", + "static/js/2435.092e8d7f.chunk.js": "./static/js/2435.092e8d7f.chunk.js", + "static/js/7409.4408962b.chunk.js": "./static/js/7409.4408962b.chunk.js", + "static/js/8622.49f3054c.chunk.js": "./static/js/8622.49f3054c.chunk.js", + "static/js/598.243fd68d.chunk.js": "./static/js/598.243fd68d.chunk.js", + "static/js/6392.134ee5e4.chunk.js": "./static/js/6392.134ee5e4.chunk.js", + "static/js/4618.131d9563.chunk.js": "./static/js/4618.131d9563.chunk.js", + "static/js/704.45771d88.chunk.js": "./static/js/704.45771d88.chunk.js", + "static/js/515.cd9a8a90.chunk.js": "./static/js/515.cd9a8a90.chunk.js", + "static/js/8858.cd9d49a5.chunk.js": "./static/js/8858.cd9d49a5.chunk.js", + "static/js/6887.0855fd66.chunk.js": "./static/js/6887.0855fd66.chunk.js", + "static/js/4848.64f47dc3.chunk.js": "./static/js/4848.64f47dc3.chunk.js", + "static/js/4198.d0671061.chunk.js": "./static/js/4198.d0671061.chunk.js", + "static/js/620.7aea5425.chunk.js": "./static/js/620.7aea5425.chunk.js", + "static/js/9204.77418f94.chunk.js": "./static/js/9204.77418f94.chunk.js", + "static/js/1736.9f4a6b02.chunk.js": "./static/js/1736.9f4a6b02.chunk.js", + "static/js/8747.baf63d86.chunk.js": "./static/js/8747.baf63d86.chunk.js", + "static/js/1528.2a39d066.chunk.js": "./static/js/1528.2a39d066.chunk.js", + "static/js/6877.d2d51d98.chunk.js": "./static/js/6877.d2d51d98.chunk.js", + "static/js/4814.11309069.chunk.js": "./static/js/4814.11309069.chunk.js", + "static/js/202.52f13cd5.chunk.js": "./static/js/202.52f13cd5.chunk.js", + "static/js/9280.40cff028.chunk.js": "./static/js/9280.40cff028.chunk.js", + "static/js/5863.e2cd2452.chunk.js": "./static/js/5863.e2cd2452.chunk.js", + "static/js/6058.7f474f92.chunk.js": "./static/js/6058.7f474f92.chunk.js", + "static/js/632.b6c03857.chunk.js": "./static/js/632.b6c03857.chunk.js", + "static/js/7202.fefd43ee.chunk.js": "./static/js/7202.fefd43ee.chunk.js", + "static/js/7999.bdf4fe79.chunk.js": "./static/js/7999.bdf4fe79.chunk.js", + "static/js/2367.052e678b.chunk.js": "./static/js/2367.052e678b.chunk.js", + "static/js/5373.90c95a6e.chunk.js": "./static/js/5373.90c95a6e.chunk.js", + "static/js/6393.b0de2d9e.chunk.js": "./static/js/6393.b0de2d9e.chunk.js", + "static/js/5448.cef3c129.chunk.js": "./static/js/5448.cef3c129.chunk.js", + "static/js/6679.6e0a87d5.chunk.js": "./static/js/6679.6e0a87d5.chunk.js", + "static/js/4132.04be158e.chunk.js": "./static/js/4132.04be158e.chunk.js", + "static/js/9219.24a20881.chunk.js": "./static/js/9219.24a20881.chunk.js", + "static/js/556.55f00ac6.chunk.js": "./static/js/556.55f00ac6.chunk.js", + "static/js/8850.97635389.chunk.js": "./static/js/8850.97635389.chunk.js", + "static/js/9297.eadc4dba.chunk.js": "./static/js/9297.eadc4dba.chunk.js", + "static/js/3630.8eda2d3f.chunk.js": "./static/js/3630.8eda2d3f.chunk.js", + "static/js/3231.65396654.chunk.js": "./static/js/3231.65396654.chunk.js", + "static/js/6815.672badd5.chunk.js": "./static/js/6815.672badd5.chunk.js", + "static/js/2620.8e5c52fb.chunk.js": "./static/js/2620.8e5c52fb.chunk.js", + "static/js/6961.f4888ae1.chunk.js": "./static/js/6961.f4888ae1.chunk.js", + "static/js/7257.8ce0d045.chunk.js": "./static/js/7257.8ce0d045.chunk.js", + "static/js/8702.69a3e0d5.chunk.js": "./static/js/8702.69a3e0d5.chunk.js", + "static/js/3304.f5897a96.chunk.js": "./static/js/3304.f5897a96.chunk.js", + "static/js/1508.f0158935.chunk.js": "./static/js/1508.f0158935.chunk.js", + "static/js/3271.7b005742.chunk.js": "./static/js/3271.7b005742.chunk.js", + "static/js/30.b097cbb4.chunk.js": "./static/js/30.b097cbb4.chunk.js", + "static/js/5117.896f7ffb.chunk.js": "./static/js/5117.896f7ffb.chunk.js", + "static/js/5387.8af1d694.chunk.js": "./static/js/5387.8af1d694.chunk.js", + "static/js/5670.5c30cef1.chunk.js": "./static/js/5670.5c30cef1.chunk.js", + "static/js/7388.9f447514.chunk.js": "./static/js/7388.9f447514.chunk.js", + "static/js/3333.ceb196e6.chunk.js": "./static/js/3333.ceb196e6.chunk.js", + "static/js/1278.c0717a20.chunk.js": "./static/js/1278.c0717a20.chunk.js", + "static/js/178.e0df04cc.chunk.js": "./static/js/178.e0df04cc.chunk.js", + "static/js/6892.2c3c2bcb.chunk.js": "./static/js/6892.2c3c2bcb.chunk.js", + "static/js/2229.6687fc46.chunk.js": "./static/js/2229.6687fc46.chunk.js", + "static/js/4326.d5c34c54.chunk.js": "./static/js/4326.d5c34c54.chunk.js", + "static/js/7276.47f377a4.chunk.js": "./static/js/7276.47f377a4.chunk.js", + "static/js/7803.a56cfca6.chunk.js": "./static/js/7803.a56cfca6.chunk.js", + "static/js/5720.39a954f1.chunk.js": "./static/js/5720.39a954f1.chunk.js", + "static/js/6954.e18be130.chunk.js": "./static/js/6954.e18be130.chunk.js", + "static/js/9413.b2921c36.chunk.js": "./static/js/9413.b2921c36.chunk.js", + "static/js/3945.054c871d.chunk.js": "./static/js/3945.054c871d.chunk.js", + "static/js/2981.6d027811.chunk.js": "./static/js/2981.6d027811.chunk.js", + "static/js/1150.2b47004d.chunk.js": "./static/js/1150.2b47004d.chunk.js", + "static/js/3926.8f2c9741.chunk.js": "./static/js/3926.8f2c9741.chunk.js", + "static/js/5643.00957838.chunk.js": "./static/js/5643.00957838.chunk.js", + "static/js/5161.45b4f520.chunk.js": "./static/js/5161.45b4f520.chunk.js", + "static/js/2238.3cf88b79.chunk.js": "./static/js/2238.3cf88b79.chunk.js", + "static/js/8133.2afc4db4.chunk.js": "./static/js/8133.2afc4db4.chunk.js", + "static/js/4949.6bf46e71.chunk.js": "./static/js/4949.6bf46e71.chunk.js", + "static/js/383.4faec08b.chunk.js": "./static/js/383.4faec08b.chunk.js", + "static/js/2701.86912840.chunk.js": "./static/js/2701.86912840.chunk.js", + "static/js/3645.bdd20200.chunk.js": "./static/js/3645.bdd20200.chunk.js", + "static/js/2677.3d7ea3fc.chunk.js": "./static/js/2677.3d7ea3fc.chunk.js", + "static/js/2477.e6121bfd.chunk.js": "./static/js/2477.e6121bfd.chunk.js", + "static/js/5399.f9398084.chunk.js": "./static/js/5399.f9398084.chunk.js", + "static/js/4985.991de003.chunk.js": "./static/js/4985.991de003.chunk.js", + "static/js/674.e6536250.chunk.js": "./static/js/674.e6536250.chunk.js", + "static/js/9207.5881b206.chunk.js": "./static/js/9207.5881b206.chunk.js", + "static/js/7779.9d9b07ae.chunk.js": "./static/js/7779.9d9b07ae.chunk.js", + "static/js/1148.3c629236.chunk.js": "./static/js/1148.3c629236.chunk.js", + "static/js/8011.4fed4307.chunk.js": "./static/js/8011.4fed4307.chunk.js", + "static/js/96.6e1bf3f4.chunk.js": "./static/js/96.6e1bf3f4.chunk.js", + "static/js/8167.b9a90da5.chunk.js": "./static/js/8167.b9a90da5.chunk.js", + "static/js/4347.adf03999.chunk.js": "./static/js/4347.adf03999.chunk.js", + "static/js/2223.63ae5a05.chunk.js": "./static/js/2223.63ae5a05.chunk.js", + "static/js/2033.5c6dfca9.chunk.js": "./static/js/2033.5c6dfca9.chunk.js", + "static/js/8695.f17f8853.chunk.js": "./static/js/8695.f17f8853.chunk.js", + "static/js/8140.8d8e9309.chunk.js": "./static/js/8140.8d8e9309.chunk.js", + "static/js/6227.fc562bbf.chunk.js": "./static/js/6227.fc562bbf.chunk.js", + "static/js/148.b60f0e5e.chunk.js": "./static/js/148.b60f0e5e.chunk.js", + "static/js/9572.9f83f004.chunk.js": "./static/js/9572.9f83f004.chunk.js", + "static/js/1179.15d7ac65.chunk.js": "./static/js/1179.15d7ac65.chunk.js", + "static/js/1746.a8ba5c62.chunk.js": "./static/js/1746.a8ba5c62.chunk.js", + "static/js/3466.98f036ac.chunk.js": "./static/js/3466.98f036ac.chunk.js", + "static/js/4684.27f737c4.chunk.js": "./static/js/4684.27f737c4.chunk.js", + "static/js/5226.675d55fb.chunk.js": "./static/js/5226.675d55fb.chunk.js", + "static/js/115.2c4de87e.chunk.js": "./static/js/115.2c4de87e.chunk.js", + "static/js/4964.c7c75eb0.chunk.js": "./static/js/4964.c7c75eb0.chunk.js", + "static/js/1869.d6661a03.chunk.js": "./static/js/1869.d6661a03.chunk.js", + "static/js/9917.67d792e3.chunk.js": "./static/js/9917.67d792e3.chunk.js", + "static/js/163.eea01641.chunk.js": "./static/js/163.eea01641.chunk.js", + "static/js/3025.7e536c57.chunk.js": "./static/js/3025.7e536c57.chunk.js", + "static/js/6156.0c562627.chunk.js": "./static/js/6156.0c562627.chunk.js", + "static/js/6361.a9f11e7a.chunk.js": "./static/js/6361.a9f11e7a.chunk.js", + "static/js/4663.b893c670.chunk.js": "./static/js/4663.b893c670.chunk.js", + "static/js/7992.20690745.chunk.js": "./static/js/7992.20690745.chunk.js", + "static/js/3756.67bd6b00.chunk.js": "./static/js/3756.67bd6b00.chunk.js", + "static/js/678.b73063ff.chunk.js": "./static/js/678.b73063ff.chunk.js", + "static/js/436.564ff0f8.chunk.js": "./static/js/436.564ff0f8.chunk.js", + "static/js/5112.6189bbe0.chunk.js": "./static/js/5112.6189bbe0.chunk.js", + "static/js/9555.c9b5ee61.chunk.js": "./static/js/9555.c9b5ee61.chunk.js", + "static/js/5809.d78ebebb.chunk.js": "./static/js/5809.d78ebebb.chunk.js", + "static/js/5450.f0dcfc15.chunk.js": "./static/js/5450.f0dcfc15.chunk.js", + "static/js/5491.a460479e.chunk.js": "./static/js/5491.a460479e.chunk.js", + "static/js/8591.93172fe9.chunk.js": "./static/js/8591.93172fe9.chunk.js", + "static/js/7016.4a34a027.chunk.js": "./static/js/7016.4a34a027.chunk.js", + "static/js/9308.c72b8585.chunk.js": "./static/js/9308.c72b8585.chunk.js", + "static/js/9411.96fb3e2f.chunk.js": "./static/js/9411.96fb3e2f.chunk.js", + "static/js/6521.371403ec.chunk.js": "./static/js/6521.371403ec.chunk.js", + "static/js/4159.5e0cfd91.chunk.js": "./static/js/4159.5e0cfd91.chunk.js", + "static/js/9528.9991c023.chunk.js": "./static/js/9528.9991c023.chunk.js", + "static/js/4826.d2723706.chunk.js": "./static/js/4826.d2723706.chunk.js", + "static/js/5352.3d3187b7.chunk.js": "./static/js/5352.3d3187b7.chunk.js", + "static/js/9292.91ed23f7.chunk.js": "./static/js/9292.91ed23f7.chunk.js", + "static/js/7684.a3920b72.chunk.js": "./static/js/7684.a3920b72.chunk.js", + "static/js/9212.870f16f0.chunk.js": "./static/js/9212.870f16f0.chunk.js", + "static/js/6065.b08e9640.chunk.js": "./static/js/6065.b08e9640.chunk.js", + "static/js/5341.2c19c723.chunk.js": "./static/js/5341.2c19c723.chunk.js", + "static/js/4583.1682cf86.chunk.js": "./static/js/4583.1682cf86.chunk.js", + "static/js/3920.11b8c9d7.chunk.js": "./static/js/3920.11b8c9d7.chunk.js", + "static/js/7119.e94f8dac.chunk.js": "./static/js/7119.e94f8dac.chunk.js", + "static/js/6144.e1568f26.chunk.js": "./static/js/6144.e1568f26.chunk.js", + "static/js/1350.21b6a9ef.chunk.js": "./static/js/1350.21b6a9ef.chunk.js", + "static/js/2590.75b6626e.chunk.js": "./static/js/2590.75b6626e.chunk.js", + "static/js/6291.e7cdf7f2.chunk.js": "./static/js/6291.e7cdf7f2.chunk.js", + "static/js/3397.9c0005a3.chunk.js": "./static/js/3397.9c0005a3.chunk.js", + "static/js/1168.91d9e2c2.chunk.js": "./static/js/1168.91d9e2c2.chunk.js", + "static/js/8853.c8f9e9d6.chunk.js": "./static/js/8853.c8f9e9d6.chunk.js", + "static/js/4535.5d1c8322.chunk.js": "./static/js/4535.5d1c8322.chunk.js", + "static/js/9101.ce051539.chunk.js": "./static/js/9101.ce051539.chunk.js", + "static/js/2986.2100fcad.chunk.js": "./static/js/2986.2100fcad.chunk.js", + "static/js/4080.07be3744.chunk.js": "./static/js/4080.07be3744.chunk.js", + "static/js/3898.1fec42e6.chunk.js": "./static/js/3898.1fec42e6.chunk.js", + "static/js/1616.8a217b93.chunk.js": "./static/js/1616.8a217b93.chunk.js", + "static/js/7522.1a0f9c02.chunk.js": "./static/js/7522.1a0f9c02.chunk.js", + "static/js/6531.7eac62d1.chunk.js": "./static/js/6531.7eac62d1.chunk.js", + "static/css/4983.5c3e5de4.chunk.css": "./static/css/4983.5c3e5de4.chunk.css", + "static/js/3757.7c534899.chunk.js": "./static/js/3757.7c534899.chunk.js", + "static/js/4842.57182d38.chunk.js": "./static/js/4842.57182d38.chunk.js", + "static/css/328.c0ade9c1.chunk.css": "./static/css/328.c0ade9c1.chunk.css", + "static/js/328.f24db8bf.chunk.js": "./static/js/328.f24db8bf.chunk.js", + "static/js/599.c58caf58.chunk.js": "./static/js/599.c58caf58.chunk.js", + "static/js/1155.4fce1854.chunk.js": "./static/js/1155.4fce1854.chunk.js", + "static/js/6230.8e64216a.chunk.js": "./static/js/6230.8e64216a.chunk.js", + "static/js/337.b6fc715e.chunk.js": "./static/js/337.b6fc715e.chunk.js", + "static/js/451.3b449e79.chunk.js": "./static/js/451.3b449e79.chunk.js", + "static/js/2322.29255c22.chunk.js": "./static/js/2322.29255c22.chunk.js", + "static/js/4123.64882a16.chunk.js": "./static/js/4123.64882a16.chunk.js", + "static/js/6289.51f8741e.chunk.js": "./static/js/6289.51f8741e.chunk.js", + "static/js/4635.ffa9b6b7.chunk.js": "./static/js/4635.ffa9b6b7.chunk.js", + "static/js/4345.9238776d.chunk.js": "./static/js/4345.9238776d.chunk.js", + "static/js/9319.40f9e46a.chunk.js": "./static/js/9319.40f9e46a.chunk.js", + "static/js/924.382f18b1.chunk.js": "./static/js/924.382f18b1.chunk.js", + "static/js/6795.5ec0c96a.chunk.js": "./static/js/6795.5ec0c96a.chunk.js", + "static/js/2302.7e7a2fb4.chunk.js": "./static/js/2302.7e7a2fb4.chunk.js", + "static/js/4388.edb51304.chunk.js": "./static/js/4388.edb51304.chunk.js", + "static/js/4046.5dac72a9.chunk.js": "./static/js/4046.5dac72a9.chunk.js", + "static/js/2190.27f354f5.chunk.js": "./static/js/2190.27f354f5.chunk.js", + "static/js/3358.c777fe1f.chunk.js": "./static/js/3358.c777fe1f.chunk.js", + "static/js/6142.b2452554.chunk.js": "./static/js/6142.b2452554.chunk.js", + "static/js/2962.66e01691.chunk.js": "./static/js/2962.66e01691.chunk.js", + "static/js/214.99a17949.chunk.js": "./static/js/214.99a17949.chunk.js", + "static/js/8791.b209de42.chunk.js": "./static/js/8791.b209de42.chunk.js", + "static/js/6898.5580b941.chunk.js": "./static/js/6898.5580b941.chunk.js", + "static/js/9173.71d773f2.chunk.js": "./static/js/9173.71d773f2.chunk.js", + "static/js/2532.30bb087d.chunk.js": "./static/js/2532.30bb087d.chunk.js", + "static/js/6329.d78c1432.chunk.js": "./static/js/6329.d78c1432.chunk.js", + "static/js/2840.b69eb597.chunk.js": "./static/js/2840.b69eb597.chunk.js", + "static/js/5311.a500a1ea.chunk.js": "./static/js/5311.a500a1ea.chunk.js", + "static/js/2403.82cd0025.chunk.js": "./static/js/2403.82cd0025.chunk.js", + "static/js/1747.b4331799.chunk.js": "./static/js/1747.b4331799.chunk.js", + "static/js/3498.c7d39060.chunk.js": "./static/js/3498.c7d39060.chunk.js", + "static/js/185.7d51fcfa.chunk.js": "./static/js/185.7d51fcfa.chunk.js", + "static/js/8450.baf3a89d.chunk.js": "./static/js/8450.baf3a89d.chunk.js", + "static/js/3771.764124c3.chunk.js": "./static/js/3771.764124c3.chunk.js", + "static/js/7529.ddf87a9a.chunk.js": "./static/js/7529.ddf87a9a.chunk.js", + "static/js/785.d2eae69c.chunk.js": "./static/js/785.d2eae69c.chunk.js", + "static/js/5107.8cac6a03.chunk.js": "./static/js/5107.8cac6a03.chunk.js", + "static/js/6919.84ed9ccc.chunk.js": "./static/js/6919.84ed9ccc.chunk.js", + "static/js/2104.4f22ecac.chunk.js": "./static/js/2104.4f22ecac.chunk.js", + "static/js/9433.7ce648d0.chunk.js": "./static/js/9433.7ce648d0.chunk.js", + "static/js/1956.0205a5bb.chunk.js": "./static/js/1956.0205a5bb.chunk.js", + "static/js/6619.9e1de7a6.chunk.js": "./static/js/6619.9e1de7a6.chunk.js", + "static/js/2492.64b7d727.chunk.js": "./static/js/2492.64b7d727.chunk.js", + "static/js/2194.38bafdfc.chunk.js": "./static/js/2194.38bafdfc.chunk.js", + "static/js/9526.10bb1684.chunk.js": "./static/js/9526.10bb1684.chunk.js", + "static/js/5790.e3d88e2c.chunk.js": "./static/js/5790.e3d88e2c.chunk.js", + "static/js/8905.b8a9fd91.chunk.js": "./static/js/8905.b8a9fd91.chunk.js", + "static/js/5168.6fb23f08.chunk.js": "./static/js/5168.6fb23f08.chunk.js", + "static/js/619.f27ddcbd.chunk.js": "./static/js/619.f27ddcbd.chunk.js", + "static/js/4550.2e04d705.chunk.js": "./static/js/4550.2e04d705.chunk.js", + "static/js/3644.aeda46ca.chunk.js": "./static/js/3644.aeda46ca.chunk.js", + "static/js/8797.f8f0ce13.chunk.js": "./static/js/8797.f8f0ce13.chunk.js", + "static/js/2521.21bdfab9.chunk.js": "./static/js/2521.21bdfab9.chunk.js", + "static/js/1478.5044be66.chunk.js": "./static/js/1478.5044be66.chunk.js", + "static/js/6300.dca75d45.chunk.js": "./static/js/6300.dca75d45.chunk.js", + "static/js/3074.bbb8aaef.chunk.js": "./static/js/3074.bbb8aaef.chunk.js", + "static/js/9371.b42befbc.chunk.js": "./static/js/9371.b42befbc.chunk.js", + "static/js/9923.270f0a19.chunk.js": "./static/js/9923.270f0a19.chunk.js", + "static/js/358.d6300019.chunk.js": "./static/js/358.d6300019.chunk.js", + "static/js/86.ad271bdc.chunk.js": "./static/js/86.ad271bdc.chunk.js", + "static/js/5661.c83a4eb0.chunk.js": "./static/js/5661.c83a4eb0.chunk.js", + "static/js/3621.9b6c61ab.chunk.js": "./static/js/3621.9b6c61ab.chunk.js", + "static/js/2994.e6c77407.chunk.js": "./static/js/2994.e6c77407.chunk.js", + "static/js/4812.73af8448.chunk.js": "./static/js/4812.73af8448.chunk.js", + "static/js/9621.48073631.chunk.js": "./static/js/9621.48073631.chunk.js", + "static/js/7554.28f3da22.chunk.js": "./static/js/7554.28f3da22.chunk.js", + "static/js/425.c6dd581a.chunk.js": "./static/js/425.c6dd581a.chunk.js", + "static/js/6044.2de9962d.chunk.js": "./static/js/6044.2de9962d.chunk.js", + "static/js/2141.26c930aa.chunk.js": "./static/js/2141.26c930aa.chunk.js", + "static/js/919.53e04507.chunk.js": "./static/js/919.53e04507.chunk.js", + "static/js/6692.9322b59d.chunk.js": "./static/js/6692.9322b59d.chunk.js", + "static/js/6321.aa3e44de.chunk.js": "./static/js/6321.aa3e44de.chunk.js", + "static/js/2931.3ade3bc3.chunk.js": "./static/js/2931.3ade3bc3.chunk.js", + "static/js/2876.afe7e47f.chunk.js": "./static/js/2876.afe7e47f.chunk.js", + "static/js/5868.be04313a.chunk.js": "./static/js/5868.be04313a.chunk.js", + "static/js/2553.5faabf5a.chunk.js": "./static/js/2553.5faabf5a.chunk.js", + "static/js/9876.b336d1f5.chunk.js": "./static/js/9876.b336d1f5.chunk.js", + "static/js/5378.86805fba.chunk.js": "./static/js/5378.86805fba.chunk.js", + "static/js/2183.e2318c37.chunk.js": "./static/js/2183.e2318c37.chunk.js", + "static/js/7543.3fcfd3ba.chunk.js": "./static/js/7543.3fcfd3ba.chunk.js", + "static/js/6390.497d0ec8.chunk.js": "./static/js/6390.497d0ec8.chunk.js", + "static/js/2118.bc169874.chunk.js": "./static/js/2118.bc169874.chunk.js", + "static/js/8065.666ef449.chunk.js": "./static/js/8065.666ef449.chunk.js", + "static/js/7520.d245d6ac.chunk.js": "./static/js/7520.d245d6ac.chunk.js", + "static/js/4789.d52069de.chunk.js": "./static/js/4789.d52069de.chunk.js", + "static/js/8607.1e377882.chunk.js": "./static/js/8607.1e377882.chunk.js", + "static/css/1551.d5e5efc2.chunk.css": "./static/css/1551.d5e5efc2.chunk.css", + "static/js/1551.2e8e3e50.chunk.js": "./static/js/1551.2e8e3e50.chunk.js", + "static/css/8424.308a04db.chunk.css": "./static/css/8424.308a04db.chunk.css", + "static/js/8424.5b5c42b5.chunk.js": "./static/js/8424.5b5c42b5.chunk.js", + "static/js/7645.6565454c.chunk.js": "./static/js/7645.6565454c.chunk.js", + "static/media/codicon.ttf": "./static/media/codicon.762fced46d6cddbda272.ttf", + "static/media/thumbsUp.svg": "./static/media/thumbsUp.d4a03fbaa64ce85a0045bf8ba77f8e2b.svg", + "static/media/error.svg": "./static/media/error.ca9e31d5d3dc34da07e11a00f7af0842.svg", + "static/media/403.svg": "./static/media/403.6367e52f9464706633f52a2488a41958.svg", + "index.html": "./index.html" + }, + "entrypoints": [ + "static/css/main.c8ce3bba.css", + "static/js/main.62a60ecb.js" + ] +} \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/index.html b/ydb/core/viewer/monitoring/index.html index a10b24d34b9d..f2f7bcf03654 100644 --- a/ydb/core/viewer/monitoring/index.html +++ b/ydb/core/viewer/monitoring/index.html @@ -1 +1 @@ -YDB Monitoring
\ No newline at end of file +YDB Monitoring
\ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/css/1551.d5e5efc2.chunk.css b/ydb/core/viewer/monitoring/static/css/1551.d5e5efc2.chunk.css new file mode 100644 index 000000000000..8b23ee068231 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/css/1551.d5e5efc2.chunk.css @@ -0,0 +1,3 @@ +.monaco-editor{--monaco-monospace-font:"SF Mono",Monaco,Menlo,Consolas,"Ubuntu Mono","Liberation Mono","DejaVu Sans Mono","Courier New",monospace;font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;top:0;width:1px}.monaco-diff-editor .synthetic-focus,.monaco-diff-editor [tabindex="-1"]:focus,.monaco-diff-editor [tabindex="0"]:focus,.monaco-diff-editor button:focus,.monaco-diff-editor input[type=button]:focus,.monaco-diff-editor input[type=checkbox]:focus,.monaco-diff-editor input[type=search]:focus,.monaco-diff-editor input[type=text]:focus,.monaco-diff-editor select:focus,.monaco-diff-editor textarea:focus,.monaco-editor{opacity:1;outline-color:var(--vscode-focusBorder);outline-offset:-1px;outline-style:solid;outline-width:1px}.monaco-aria-container{left:-999em;position:absolute}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{-webkit-text-size-adjust:100%;color:var(--vscode-editor-foreground);overflow:visible;position:relative}.monaco-editor,.monaco-editor-background{background-color:var(--vscode-editor-background)}.monaco-editor .rangeHighlight{background-color:var(--vscode-editor-rangeHighlightBackground);border:1px solid var(--vscode-editor-rangeHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .rangeHighlight,.monaco-editor.hc-light .rangeHighlight{border-style:dotted}.monaco-editor .symbolHighlight{background-color:var(--vscode-editor-symbolHighlightBackground);border:1px solid var(--vscode-editor-symbolHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .symbolHighlight,.monaco-editor.hc-light .symbolHighlight{border-style:dotted}.monaco-editor .overflow-guard{overflow:hidden;position:relative}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .margin-view-overlays>div,.monaco-editor .view-overlays>div{position:absolute;width:100%}.monaco-editor .margin-view-overlays>div>div,.monaco-editor .view-overlays>div>div{bottom:0}.monaco-editor .squiggly-error{border-bottom:4px double var(--vscode-editorError-border)}.monaco-editor .squiggly-error:before{background:var(--vscode-editorError-background);content:"";display:block;height:100%;width:100%}.monaco-editor .squiggly-warning{border-bottom:4px double var(--vscode-editorWarning-border)}.monaco-editor .squiggly-warning:before{background:var(--vscode-editorWarning-background);content:"";display:block;height:100%;width:100%}.monaco-editor .squiggly-info{border-bottom:4px double var(--vscode-editorInfo-border)}.monaco-editor .squiggly-info:before{background:var(--vscode-editorInfo-background);content:"";display:block;height:100%;width:100%}.monaco-editor .squiggly-hint{border-bottom:2px dotted var(--vscode-editorHint-border)}.monaco-editor.showUnused .squiggly-unnecessary{border-bottom:2px dashed var(--vscode-editorUnnecessaryCode-border)}.monaco-editor.showDeprecated .squiggly-inline-deprecated{text-decoration:line-through;text-decoration-color:inherit;text-decoration-color:var(--vscode-editor-foreground,inherit)}.monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.monaco-scrollable-element>.visible{background:#0000;opacity:1;transition:opacity .1s linear;z-index:11}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity .8s linear}.monaco-scrollable-element>.shadow{display:none;position:absolute}.monaco-scrollable-element>.shadow.top{box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset;display:block;height:3px;left:3px;top:0;width:100%}.monaco-scrollable-element>.shadow.left{box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset;display:block;height:100%;left:0;top:3px;width:3px}.monaco-scrollable-element>.shadow.top-left-corner{display:block;height:3px;left:0;top:0;width:3px}.monaco-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.scrollbar>.slider{background:var(--vscode-scrollbarSlider-background)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-scrollable-element>.scrollbar>.slider.active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-editor .inputarea{background-color:initial;border:none;color:#0000;margin:0;min-height:0;min-width:0;outline:none!important;overflow:hidden;padding:0;position:absolute;resize:none;z-index:-10}.monaco-editor .inputarea.ime-input{caret-color:var(--vscode-editorCursor-foreground);color:var(--vscode-editor-foreground);z-index:10}.monaco-editor .margin-view-overlays .line-numbers{font-feature-settings:"tnum";bottom:0;box-sizing:border-box;cursor:default;display:inline-block;font-variant-numeric:tabular-nums;position:absolute;text-align:right;vertical-align:middle}.monaco-editor .relative-current-line-number{display:inline-block;text-align:left;width:100%}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-editor .line-numbers{color:var(--vscode-editorLineNumber-foreground)}.monaco-editor .line-numbers.active-line-number{color:var(--vscode-editorLineNumber-activeForeground)}.monaco-editor .margin{background-color:var(--vscode-editorGutter-background)}.monaco-mouse-cursor-text{cursor:text}.monaco-editor .blockDecorations-container{pointer-events:none;position:absolute;top:0}.monaco-editor .blockDecorations-block{box-sizing:border-box;position:absolute}.monaco-editor .margin-view-overlays .current-line,.monaco-editor .view-overlays .current-line{box-sizing:border-box;display:block;height:100%;left:0;position:absolute;top:0}.monaco-editor + .margin-view-overlays + .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{height:100%;position:absolute}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .glyph-margin-widgets .cgmr{align-items:center;display:flex;justify-content:center;position:absolute}.monaco-editor .glyph-margin-widgets .cgmr.codicon-modifier-spin:before{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.monaco-editor .lines-content .core-guide{box-sizing:border-box;height:100%;position:absolute}.mtkcontrol{background:#960000!important;color:#fff!important}.mtkoverflow{background-color:var(--vscode-editor-background);background-color:var(--vscode-button-background,var(--vscode-editor-background));border-color:var(--vscode-contrastBorder);border-radius:2px;border-style:solid;border-width:1px;color:var(--vscode-editor-foreground);color:var(--vscode-button-foreground,var(--vscode-editor-foreground));cursor:pointer;padding:4px}.mtkoverflow:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{user-select:none;-webkit-user-select:none}.monaco-editor.mac .lines-content:hover,.monaco-editor.mac .view-line:hover,.monaco-editor.mac .view-lines:hover{user-select:text;-webkit-user-select:text;-ms-user-select:text}.monaco-editor.enable-user-select{user-select:auto;-webkit-user-select:initial}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{position:absolute;width:100%}.monaco-editor .lines-content>.view-lines>.view-line>span{bottom:0;position:absolute;top:0}.monaco-editor .mtkw,.monaco-editor .mtkz{color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .mtkz{display:inline-block}.monaco-editor .lines-decorations{background:#fff;position:absolute;top:0}.monaco-editor .margin-view-overlays .cldr{height:100%;position:absolute}.monaco-editor .margin-view-overlays .cmdr{height:100%;left:0;position:absolute;width:100%}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover .minimap-slider.active,.monaco-editor .minimap.slider-mouseover:hover .minimap-slider{opacity:1}.monaco-editor .minimap-slider .minimap-slider-horizontal{background:var(--vscode-minimapSlider-background)}.monaco-editor .minimap-slider:hover .minimap-slider-horizontal{background:var(--vscode-minimapSlider-hoverBackground)}.monaco-editor .minimap-slider.active .minimap-slider-horizontal{background:var(--vscode-minimapSlider-activeBackground)}.monaco-editor .minimap-shadow-visible{box-shadow:var(--vscode-scrollbar-shadow) -6px 0 6px -6px inset}.monaco-editor .minimap-shadow-hidden{position:absolute;width:0}.monaco-editor .minimap-shadow-visible{left:-6px;position:absolute;width:6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{left:-1px;position:absolute;width:1px}.minimap.autohide{opacity:0;transition:opacity .5s}.minimap.autohide:hover{opacity:1}.monaco-editor .minimap{z-index:5}.monaco-editor .overlayWidgets{left:0;position:absolute;top:0}.monaco-editor .view-ruler{box-shadow:1px 0 0 0 var(--vscode-editorRuler-foreground) inset;position:absolute;top:0}.monaco-editor .scroll-decoration{box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset;height:6px;left:0;position:absolute;top:0}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .focused .selected-text{background-color:var(--vscode-editor-selectionBackground)}.monaco-editor .selected-text{background-color:var(--vscode-editor-inactiveSelectionBackground)}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor.hc-light .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-light .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-light .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-light .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{box-sizing:border-box;overflow:hidden;position:absolute}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{background:#0000!important;border-style:solid;border-width:1px}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{background:#0000!important;border-bottom-style:solid;border-bottom-width:2px}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{background:#0000!important;border-bottom-style:solid;border-bottom-width:1px}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-expand{0%,20%{transform:scaleY(1)}80%,to{transform:scaleY(0)}}.cursor-smooth{animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate}.cursor-phase{animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate}.cursor-expand>.cursor{animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate}.monaco-editor .mwh{color:var(--vscode-editorWhitespace-foreground)!important;position:absolute}.monaco-workbench .workbench-hover{background:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);border-radius:3px;box-shadow:0 2px 8px var(--vscode-widget-shadow);color:var(--vscode-editorHoverWidget-foreground);font-size:13px;line-height:19px;max-width:700px;overflow:hidden;position:relative;z-index:40}.monaco-workbench .workbench-hover hr{border-bottom:none}.monaco-workbench .workbench-hover:not(.skip-fade-in){animation:fadein .1s linear}.monaco-workbench .workbench-hover.compact{font-size:12px}.monaco-workbench .workbench-hover.compact .hover-contents{padding:2px 8px}.monaco-workbench .workbench-hover-container.locked .workbench-hover{outline:1px solid var(--vscode-editorHoverWidget-border)}.monaco-workbench .workbench-hover-container.locked .workbench-hover:focus,.monaco-workbench .workbench-hover-lock:focus{outline:1px solid var(--vscode-focusBorder)}.monaco-workbench .workbench-hover-container.locked .workbench-hover-lock:hover{background:var(--vscode-toolbar-hoverBackground)}.monaco-workbench .workbench-hover-pointer{pointer-events:none;position:absolute;z-index:41}.monaco-workbench .workbench-hover-pointer:after{background-color:var(--vscode-editorHoverWidget-background);border-bottom:1px solid var(--vscode-editorHoverWidget-border);border-right:1px solid var(--vscode-editorHoverWidget-border);content:"";height:5px;position:absolute;width:5px}.monaco-workbench .locked .workbench-hover-pointer:after{border-bottom-width:2px;border-right-width:2px;height:4px;width:4px}.monaco-workbench .workbench-hover-pointer.left{left:-3px}.monaco-workbench .workbench-hover-pointer.right{right:3px}.monaco-workbench .workbench-hover-pointer.top{top:-3px}.monaco-workbench .workbench-hover-pointer.bottom{bottom:3px}.monaco-workbench .workbench-hover-pointer.left:after{transform:rotate(135deg)}.monaco-workbench .workbench-hover-pointer.right:after{transform:rotate(315deg)}.monaco-workbench .workbench-hover-pointer.top:after{transform:rotate(225deg)}.monaco-workbench .workbench-hover-pointer.bottom:after{transform:rotate(45deg)}.monaco-workbench .workbench-hover a{color:var(--vscode-textLink-foreground)}.monaco-workbench .workbench-hover a:focus{outline:1px solid;outline-color:var(--vscode-focusBorder);outline-offset:-1px;text-decoration:underline}.monaco-workbench .workbench-hover a:active,.monaco-workbench .workbench-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-workbench .workbench-hover code{background:var(--vscode-textCodeBlock-background)}.monaco-workbench .workbench-hover .hover-row .actions{background:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-workbench .workbench-hover.right-aligned{left:1px}.monaco-workbench .workbench-hover.right-aligned .hover-row.status-bar .actions{flex-direction:row-reverse}.monaco-workbench .workbench-hover.right-aligned .hover-row.status-bar .actions .action-container{margin-left:16px;margin-right:0}.monaco-hover{animation:fadein .1s linear;box-sizing:border-box;cursor:default;line-height:1.5em;overflow:hidden;position:absolute;user-select:text;-webkit-user-select:text;white-space:normal;white-space:var(--vscode-hover-whiteSpace,normal)}.monaco-hover.hidden{display:none}.monaco-hover a:hover:not(.disabled){cursor:pointer}.monaco-hover .hover-contents:not(.html-hover-contents){padding:4px 8px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents){word-wrap:break-word;max-width:500px;max-width:var(--vscode-hover-maxWidth,500px)}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents) hr{min-width:100%}.monaco-hover .code,.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6,.monaco-hover p,.monaco-hover ul{margin:8px 0}.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{line-height:1.1}.monaco-hover code{font-family:var(--monaco-monospace-font)}.monaco-hover hr{border-left:0;border-right:0;box-sizing:border-box;height:1px;margin:4px -8px -4px}.monaco-hover .code:first-child,.monaco-hover p:first-child,.monaco-hover ul:first-child{margin-top:0}.monaco-hover .code:last-child,.monaco-hover p:last-child,.monaco-hover ul:last-child{margin-bottom:0}.monaco-hover ol,.monaco-hover ul{padding-left:20px}.monaco-hover li>p{margin-bottom:0}.monaco-hover li>ul{margin-top:0}.monaco-hover code{border-radius:3px;padding:0 .4em}.monaco-hover .monaco-tokenized-source{white-space:pre-wrap;white-space:var(--vscode-hover-sourceWhiteSpace,pre-wrap)}.monaco-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-hover .hover-row.status-bar .info{font-style:italic;padding:0 8px}.monaco-hover .hover-row.status-bar .actions{display:flex;padding:0 8px}.monaco-hover .hover-row.status-bar .actions .action-container{cursor:pointer;margin-right:16px}.monaco-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.monaco-hover .markdown-hover .hover-contents .codicon{color:inherit;font-size:inherit;vertical-align:middle}.monaco-hover .hover-contents a.code-link,.monaco-hover .hover-contents a.code-link:hover{color:inherit}.monaco-hover .hover-contents a.code-link:before{content:"("}.monaco-hover .hover-contents a.code-link:after{content:")"}.monaco-hover .hover-contents a.code-link>span{border-bottom:1px solid #0000;color:var(--vscode-textLink-foreground);text-decoration:underline;text-underline-position:under}.monaco-hover .hover-contents a.code-link>span:hover{color:var(--vscode-textLink-activeForeground)}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span{display:inline-block;margin-bottom:4px}.monaco-hover-content .action-container a{-webkit-user-select:none;user-select:none}.monaco-hover-content .action-container.disabled{cursor:default;opacity:.4;pointer-events:none}.monaco-editor .rendered-markdown kbd{background-color:var(--vscode-keybindingLabel-background);border-color:var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);border-radius:3px;border-style:solid;border-width:1px;box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);color:var(--vscode-keybindingLabel-foreground);padding:1px 3px;vertical-align:middle}.rendered-markdown li:has(input[type=checkbox]){list-style-type:none}.context-view{position:absolute}.context-view.fixed{clip:auto;all:initial;animation:none 0s ease 0s 1 normal none running;-webkit-backface-visibility:visible;backface-visibility:visible;background:#0000 none repeat 0 0/auto auto padding-box border-box scroll;border:none;border-collapse:initial;border-image:none;border-radius:0;border-spacing:0;bottom:auto;box-shadow:none;box-sizing:initial;caption-side:top;clear:none;color:#000;color:inherit;column-fill:balance;column-gap:normal;column-rule:medium none currentColor;column-span:1;columns:auto;content:normal;counter-increment:none;counter-reset:none;cursor:auto;direction:ltr;display:inline;empty-cells:show;float:none;font-family:serif;font-family:inherit;font-size:medium;font-size:13px;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;height:auto;-webkit-hyphens:none;hyphens:none;left:auto;letter-spacing:normal;line-height:normal;list-style:disc none outside;margin:0;max-height:none;max-width:none;min-height:0;min-width:0;opacity:1;orphans:2;outline:medium none invert;overflow:visible;overflow-x:visible;overflow-y:visible;padding:0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;perspective:none;perspective-origin:50% 50%;position:static;position:fixed;right:auto;tab-size:8;table-layout:auto;text-align:left;text-align-last:auto;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;top:auto;transform:none;transform-origin:initial;transform-style:flat;transition:none 0s ease 0s;unicode-bidi:normal;vertical-align:initial;visibility:visible;white-space:normal;widows:2;width:auto;word-spacing:normal;z-index:auto}.monaco-list{height:100%;position:relative;white-space:nowrap;width:100%}.monaco-list.mouse-support{user-select:none;-webkit-user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{height:100%;position:relative;width:100%}.monaco-list.horizontal-scrolling .monaco-list-rows{min-width:100%;width:auto}.monaco-list-row{box-sizing:border-box;overflow:hidden;position:absolute;width:100%}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list .monaco-scrollable-element>.scrollbar.vertical,.monaco-pane-view>.monaco-split-view2.vertical>.monaco-scrollable-element>.scrollbar.vertical{z-index:14}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-multiple,.monaco-list.selection-single{outline:0!important}.monaco-drag-image{border-radius:10px;display:inline-block;font-size:12px;padding:1px 7px;position:absolute;z-index:1000}.monaco-list-type-filter-message{box-sizing:border-box;height:100%;left:0;opacity:.7;padding:40px 1em 1em;pointer-events:none;position:absolute;text-align:center;top:0;white-space:normal;width:100%}.monaco-list-type-filter-message:empty{display:none}.monaco-select-box-dropdown-padding{--dropdown-padding-top:1px;--dropdown-padding-bottom:1px}.hc-black .monaco-select-box-dropdown-padding,.hc-light .monaco-select-box-dropdown-padding{--dropdown-padding-top:3px;--dropdown-padding-bottom:4px}.monaco-select-box-dropdown-container{box-sizing:border-box;display:none}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown *{margin:0}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown a:focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown code{font-family:var(--monaco-monospace-font);line-height:15px}.monaco-select-box-dropdown-container.visible{border-bottom-left-radius:3px;border-bottom-right-radius:3px;display:flex;flex-direction:column;overflow:hidden;text-align:left;width:1px}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container{align-self:flex-start;box-sizing:border-box;flex:0 0 auto;overflow:hidden;padding-bottom:var(--dropdown-padding-bottom);padding-left:1px;padding-right:1px;padding-top:var(--dropdown-padding-top);width:100%}.monaco-select-box-dropdown-container>.select-box-details-pane{padding:5px}.hc-black .monaco-select-box-dropdown-container>.select-box-dropdown-list-container{padding-bottom:var(--dropdown-padding-bottom);padding-top:var(--dropdown-padding-top)}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row{cursor:pointer}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-text{float:left;overflow:hidden;padding-left:3.5px;text-overflow:ellipsis;white-space:nowrap}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-detail{float:left;opacity:.7;overflow:hidden;padding-left:3.5px;text-overflow:ellipsis;white-space:nowrap}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-decorator-right{float:right;overflow:hidden;padding-right:10px;text-overflow:ellipsis;white-space:nowrap}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.visually-hidden{height:1px;left:-10000px;overflow:hidden;position:absolute;top:auto;width:1px}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control{align-self:flex-start;flex:1 1 auto;opacity:0}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div{max-height:0;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div>.option-text-width-control{padding-left:4px;padding-right:8px;white-space:nowrap}.monaco-select-box{border-radius:2px;cursor:pointer;width:100%}.monaco-select-box-dropdown-container{font-size:13px;font-weight:400;text-transform:none}.monaco-action-bar .action-item.select-container{cursor:default}.monaco-action-bar .action-item .monaco-select-box{cursor:pointer;min-height:18px;min-width:100px;padding:2px 23px 2px 8px}.mac .monaco-action-bar .action-item .monaco-select-box{border-radius:5px;font-size:11px}.monaco-action-bar{height:100%;white-space:nowrap}.monaco-action-bar .actions-container{align-items:center;display:flex;height:100%;margin:0 auto;padding:0;width:100%}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{align-items:center;cursor:pointer;display:block;justify-content:center;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .codicon,.monaco-action-bar .action-item .icon{display:block}.monaco-action-bar .action-item .codicon{align-items:center;display:flex;height:16px;width:16px}.monaco-action-bar .action-label{border-radius:5px;display:flex;font-size:11px;padding:3px}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{color:var(--vscode-disabledForeground)}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{border-bottom:1px solid #bbb;display:block;margin-left:.8em;margin-right:.8em;padding-top:1px}.monaco-action-bar .action-item .action-label.separator{background-color:#bbb;cursor:default;height:16px;margin:5px 4px!important;min-width:1px;padding:0;width:1px}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{align-items:center;display:flex;flex:1 1;justify-content:center;margin-right:10px;max-width:170px;min-width:60px;overflow:hidden}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator{align-items:center;cursor:default;display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator>div{width:1px}.monaco-dropdown{height:100%;padding:0}.monaco-dropdown>.dropdown-label{align-items:center;cursor:pointer;display:flex;height:100%;justify-content:center}.monaco-dropdown>.dropdown-label>.action-label.disabled{cursor:default}.monaco-dropdown-with-primary{border-radius:5px;display:flex!important;flex-direction:row}.monaco-dropdown-with-primary>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;line-height:16px;margin-left:-3px;padding-left:0;padding-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{background-position:50%;background-repeat:no-repeat;background-size:16px;display:block}.monaco-action-bar .action-item.menu-entry .action-label.icon{background-position:50%;background-repeat:no-repeat;background-size:16px;height:16px;width:16px}.monaco-dropdown-with-default{border-radius:5px;display:flex!important;flex-direction:row}.monaco-dropdown-with-default>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-default>.action-container.menu-entry>.action-label.icon{background-position:50%;background-repeat:no-repeat;background-size:16px;height:16px;width:16px}.monaco-dropdown-with-default:hover{background-color:var(--vscode-toolbar-hoverBackground)}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;line-height:16px;margin-left:-3px;padding-left:0;padding-right:0}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{background-position:50%;background-repeat:no-repeat;background-size:16px;display:block}.quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight{color:#9dddff}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.hc-light .quick-input-widget .monaco-highlighted-label .highlight{color:#0f4a85}.monaco-keybinding>.monaco-keybinding-key{background-color:#ddd6;border:1px solid;border-color:#ccc6 #ccc6 #bbb6;box-shadow:inset 0 -1px 0 #bbb6;color:#555}.hc-black .monaco-keybinding>.monaco-keybinding-key{background-color:initial;border:1px solid #6fc3df;box-shadow:none;color:#fff}.hc-light .monaco-keybinding>.monaco-keybinding-key{background-color:initial;border:1px solid #0f4a85;box-shadow:none;color:#292929}.vs-dark .monaco-keybinding>.monaco-keybinding-key{background-color:#8080802b;border:1px solid;border-color:#3339 #3339 #4449;box-shadow:inset 0 -1px 0 #4449;color:#ccc}.monaco-custom-toggle{border:1px solid #0000;border-radius:3px;box-sizing:border-box;cursor:pointer;float:left;height:20px;margin-left:2px;overflow:hidden;padding:1px;user-select:none;-webkit-user-select:none;width:20px}.monaco-custom-toggle:hover{background-color:var(--vscode-inputOption-hoverBackground)}.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{border:1px dashed var(--vscode-focusBorder)}.hc-black .monaco-custom-toggle,.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle,.hc-light .monaco-custom-toggle:hover{background:none}.monaco-custom-toggle.monaco-checkbox{background-size:16px!important;border:1px solid #0000;border-radius:3px;height:18px;margin-left:0;margin-right:9px;opacity:1;padding:0;width:18px}.monaco-action-bar .checkbox-action-item{align-items:center;display:flex}.monaco-action-bar .checkbox-action-item>.monaco-custom-toggle.monaco-checkbox{margin-right:4px}.monaco-action-bar .checkbox-action-item>.checkbox-label{font-size:12px}.monaco-custom-toggle.monaco-checkbox:not(.checked):before{visibility:hidden}.quick-input-widget{-webkit-app-region:no-drag;border-radius:6px;left:50%;margin-left:-300px;position:absolute;width:600px;z-index:2550}.quick-input-titlebar{align-items:center;border-radius:inherit;display:flex}.quick-input-left-action-bar{display:flex;flex:1 1;margin-left:4px}.quick-input-title{overflow:hidden;padding:3px 0;text-align:center;text-overflow:ellipsis}.quick-input-right-action-bar{display:flex;flex:1 1;margin-right:4px}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:50%;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px 6px 6px 11px}.quick-input-header .quick-input-description{flex:1 1;margin:4px 2px}.quick-input-header{display:flex;padding:8px 6px 2px}.quick-input-widget.hidden-input .quick-input-header{margin-bottom:0;padding:0}.quick-input-and-message{display:flex;flex-direction:column;flex-grow:1;min-width:0;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{display:flex;flex-grow:1;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{left:-10000px;position:absolute}.quick-input-count{align-items:center;align-self:center;display:flex;position:absolute;right:4px}.quick-input-count .monaco-count-badge{border-radius:2px;line-height:normal;min-height:auto;padding:2px 4px;vertical-align:middle}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{align-items:center;display:flex;font-size:11px;height:25px;padding:0 6px}.quick-input-message{margin-top:-1px;overflow-wrap:break-word;padding:5px}.quick-input-message>.codicon{margin:0 .2em;vertical-align:text-bottom}.quick-input-message a{color:inherit}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-list{line-height:22px}.quick-input-widget.hidden-input .quick-input-list{margin-top:4px;padding-bottom:4px}.quick-input-list .monaco-list{max-height:440px;overflow:hidden;padding-bottom:5px}.quick-input-list .monaco-scrollable-element{padding:0 5px}.quick-input-list .quick-input-list-entry{box-sizing:border-box;display:flex;height:100%;overflow:hidden;padding:0 6px}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-style:solid;border-top-width:1px}.quick-input-list .monaco-list-row{border-radius:3px}.quick-input-list .monaco-list-row[data-index="0"] .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{display:flex;flex:1 1;height:100%;overflow:hidden}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-icon{align-items:center;background-position:0;background-repeat:no-repeat;background-size:16px;display:flex;height:22px;justify-content:center;padding-right:6px;width:16px}.quick-input-list .quick-input-list-rows{display:flex;flex:1 1;flex-direction:column;height:100%;margin-left:5px;overflow:hidden;text-overflow:ellipsis}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{align-items:center;display:flex}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1 1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:text-bottom}.quick-input-list .quick-input-list-rows .monaco-highlighted-label>span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{line-height:normal;opacity:.7;overflow:hidden;text-overflow:ellipsis}.quick-input-list .monaco-list .monaco-list-row .monaco-highlighted-label .highlight{background-color:initial;color:var(--vscode-list-highlightForeground)!important;font-weight:700}.quick-input-list .monaco-list .monaco-list-row.focused .monaco-highlighted-label .highlight{color:var(--vscode-list-focusHighlightForeground)!important}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:4px}.quick-input-list .quick-input-list-entry-action-bar{display:flex;flex:0 1;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:0 2px 2px}.quick-input-list .quick-input-list-entry-action-bar{margin-right:4px;margin-top:1px}.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .monaco-list-row.passive-focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry.focus-inside .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label{display:flex}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator{color:inherit}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key{background:none}.quick-input-list .quick-input-list-separator-as-item{font-size:12px;padding:4px 6px}.quick-input-list .quick-input-list-separator-as-item .label-name{font-weight:600}.quick-input-list .quick-input-list-separator-as-item .label-description{opacity:1!important}.quick-input-list .monaco-tree-sticky-row .quick-input-list-entry.quick-input-list-separator-as-item.quick-input-list-separator-border{border-top-style:none}.quick-input-list .monaco-tree-sticky-row{padding:0 5px}.quick-input-list .monaco-tl-twistie{display:none!important}:root{--vscode-sash-size:4px;--vscode-sash-hover-size:4px}.monaco-sash{position:absolute;touch-action:none;z-index:35}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.vertical{cursor:ew-resize;height:100%;top:0;width:4px;width:var(--vscode-sash-size)}.monaco-sash.horizontal{cursor:ns-resize;height:4px;height:var(--vscode-sash-size);left:0;width:100%}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:" ";cursor:all-scroll;display:block;height:8px;height:calc(var(--vscode-sash-size)*2);position:absolute;width:8px;width:calc(var(--vscode-sash-size)*2);z-index:100}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:-2px;left:calc(var(--vscode-sash-size)*-.5);top:-4px;top:calc(var(--vscode-sash-size)*-1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{bottom:-4px;bottom:calc(var(--vscode-sash-size)*-1);left:-2px;left:calc(var(--vscode-sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{left:-4px;left:calc(var(--vscode-sash-size)*-1);top:-2px;top:calc(var(--vscode-sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{right:-4px;right:calc(var(--vscode-sash-size)*-1);top:-2px;top:calc(var(--vscode-sash-size)*-.5)}.monaco-sash:before{background:#0000;content:"";height:100%;pointer-events:none;position:absolute;width:100%}.monaco-workbench:not(.reduce-motion) .monaco-sash:before{transition:background-color .1s ease-out}.monaco-sash.active:before,.monaco-sash.hover:before{background:var(--vscode-sash-hoverBorder)}.monaco-sash.vertical:before{left:calc(50% - 2px);left:calc(50% - var(--vscode-sash-hover-size)/2);width:4px;width:var(--vscode-sash-hover-size)}.monaco-sash.horizontal:before{height:4px;height:var(--vscode-sash-hover-size);top:calc(50% - 2px);top:calc(50% - var(--vscode-sash-hover-size)/2)}.pointer-events-disabled{pointer-events:none!important}.monaco-sash.debug{background:cyan}.monaco-sash.debug.disabled{background:#0ff3}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}.monaco-split-view2{height:100%;position:relative;width:100%}.monaco-split-view2>.sash-container{height:100%;pointer-events:none;position:absolute;width:100%}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:auto}.monaco-split-view2>.monaco-scrollable-element{height:100%;width:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{height:100%;position:relative;white-space:nowrap;width:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{position:absolute;white-space:normal}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{background-color:var(--separator-border);content:" ";left:0;pointer-events:none;position:absolute;top:0;z-index:5}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:100%;width:1px}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:1px;width:100%}.monaco-table{display:flex;flex-direction:column;height:100%;overflow:hidden;position:relative;white-space:nowrap;width:100%}.monaco-table>.monaco-split-view2{border-bottom:1px solid #0000}.monaco-table>.monaco-list{flex:1 1}.monaco-table-tr{display:flex;height:100%}.monaco-table-th{font-weight:700;height:100%;overflow:hidden;text-overflow:ellipsis;width:100%}.monaco-table-td,.monaco-table-th{box-sizing:border-box;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{border-left:1px solid #0000;content:"";left:calc(var(--vscode-sash-size)/2);position:absolute;width:0}.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2,.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color .2s ease-out}.monaco-inputbox{border-radius:2px;box-sizing:border-box;display:block;font-size:inherit;padding:0;position:relative}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px 6px}.monaco-inputbox>.ibwrapper{height:100%;position:relative;width:100%}.monaco-inputbox>.ibwrapper>.input{border:none;box-sizing:border-box;color:inherit;display:inline-block;font-family:inherit;font-size:inherit;height:100%;line-height:inherit;resize:none;width:100%}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{display:block;outline:none;scrollbar-width:none}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{word-wrap:break-word;box-sizing:border-box;display:inline-block;left:0;position:absolute;top:0;visibility:hidden;white-space:pre-wrap;width:100%}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{word-wrap:break-word;box-sizing:border-box;display:inline-block;font-size:12px;line-height:17px;margin-top:-1px;overflow:hidden;padding:.4em;text-align:left;width:100%}.monaco-inputbox .monaco-action-bar{position:absolute;right:2px;top:4px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;height:16px;width:16px}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{font-size:13px;width:100%}.monaco-findInput>.controls{position:absolute;right:2px;top:3px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.hc-light .monaco-findInput.highlight-0 .controls,.monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-0 .1s linear 0s}.hc-light .monaco-findInput.highlight-1 .controls,.monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-1 .1s linear 0s}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-dark-0 .1s linear 0s}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-dark-1 .1s linear 0s}@keyframes monaco-findInput-highlight-0{0%{background:#fdff00cc}to{background:#0000}}@keyframes monaco-findInput-highlight-1{0%{background:#fdff00cc}99%{background:#0000}}@keyframes monaco-findInput-highlight-dark-0{0%{background:#ffffff70}to{background:#0000}}@keyframes monaco-findInput-highlight-dark-1{0%{background:#ffffff70}99%{background:#0000}}.monaco-tl-row{align-items:center;display:flex;height:100%;position:relative}.monaco-tl-row.disabled{cursor:default}.monaco-tl-indent{height:100%;left:16px;pointer-events:none;position:absolute;top:0}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{border-left:1px solid #0000;box-sizing:border-box;display:inline-block;height:100%}.monaco-workbench:not(.reduce-motion) .monaco-tl-indent>.indent-guide{transition:border-color .1s linear}.monaco-tl-contents,.monaco-tl-twistie{height:100%}.monaco-tl-twistie{align-items:center;display:flex!important;flex-shrink:0;font-size:10px;justify-content:center;padding-right:6px;text-align:right;transform:translateX(3px);width:16px}.monaco-tl-contents{flex:1 1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{animation:codicon-spin 1.25s steps(30) infinite}.monaco-tree-type-filter{border:1px solid var(--vscode-widget-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px;display:flex;margin:0 6px;max-width:200px;padding:3px;position:absolute;top:0;z-index:100}.monaco-workbench:not(.reduce-motion) .monaco-tree-type-filter{transition:top .3s}.monaco-tree-type-filter.disabled{top:-40px!important}.monaco-tree-type-filter-grab{align-items:center;cursor:grab;display:flex!important;justify-content:center;margin-right:2px}.monaco-tree-type-filter-grab.grabbing{cursor:grabbing}.monaco-tree-type-filter-input{flex:1 1}.monaco-tree-type-filter-input .monaco-inputbox{height:23px}.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.input,.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.mirror{padding:2px 4px}.monaco-tree-type-filter-input .monaco-findInput>.controls{top:2px}.monaco-tree-type-filter-actionbar{margin-left:4px}.monaco-tree-type-filter-actionbar .monaco-action-bar .action-label{padding:2px}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container{background-color:var(--vscode-sideBar-background);height:0;left:0;position:absolute;top:0;width:100%;z-index:13}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row.monaco-list-row{background-color:var(--vscode-sideBar-background);opacity:1!important;overflow:hidden;position:absolute;width:100%}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row:hover{background-color:var(--vscode-list-hoverBackground)!important;cursor:pointer}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container.empty,.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container.empty .monaco-tree-sticky-container-shadow{display:none}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-container-shadow{bottom:-3px;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset;height:3px;left:0;position:absolute;width:100%}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container[tabindex="0"]:focus{outline:none}.monaco-icon-label{display:flex;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label:before{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-position:0;background-repeat:no-repeat;background-size:16px;display:inline-block;flex-shrink:0;height:22px;line-height:inherit!important;padding-right:6px;vertical-align:top;width:16px}.monaco-icon-label-container.disabled{color:var(--vscode-disabledForeground)}.monaco-icon-label>.monaco-icon-label-container{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{margin:0 2px;opacity:.5}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-suffix-container>.label-suffix{opacity:.7;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{font-size:.9em;margin-left:.5em;opacity:.7;white-space:pre}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{font-style:italic}.monaco-icon-label.deprecated{opacity:.66;text-decoration:line-through}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{text-decoration:line-through}.monaco-icon-label:after{font-size:90%;font-weight:600;margin:auto 16px 0 5px;opacity:.75;text-align:center}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:.8}.monaco-keybinding{align-items:center;display:flex;line-height:10px}.monaco-keybinding>.monaco-keybinding-key{border-radius:3px;border-style:solid;border-width:1px;display:inline-block;font-size:11px;margin:0 2px;padding:3px 5px;vertical-align:middle}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-text-button{align-items:center;border:1px solid #0000;border:1px solid var(--vscode-button-border,#0000);border-radius:2px;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;line-height:18px;padding:4px;text-align:center;width:100%}.monaco-text-button:focus{outline-offset:2px!important}.monaco-text-button:hover{text-decoration:none!important}.monaco-button.disabled,.monaco-button.disabled:focus{cursor:default;opacity:.4!important}.monaco-text-button .codicon{color:inherit!important;margin:0 .2em}.monaco-text-button.monaco-text-button-with-short-label{flex-direction:row;flex-wrap:wrap;height:28px;overflow:hidden;padding:0 4px}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label{flex-basis:100%}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{flex-grow:1;overflow:hidden;width:0}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label,.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{align-items:center;display:flex;font-style:inherit;font-weight:400;justify-content:center;padding:4px 0}.monaco-button-dropdown{cursor:pointer;display:flex}.monaco-button-dropdown.disabled{cursor:default}.monaco-button-dropdown>.monaco-button:focus{outline-offset:-1px!important}.monaco-button-dropdown.disabled>.monaco-button-dropdown-separator,.monaco-button-dropdown.disabled>.monaco-button.disabled,.monaco-button-dropdown.disabled>.monaco-button.disabled:focus{opacity:.4!important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-right-width:0!important}.monaco-button-dropdown .monaco-button-dropdown-separator{cursor:default;padding:4px 0}.monaco-button-dropdown .monaco-button-dropdown-separator>div{height:100%;width:1px}.monaco-button-dropdown>.monaco-button.monaco-dropdown-button{align-items:center;border:1px solid #0000;border:1px solid var(--vscode-button-border,#0000);border-left-width:0!important;border-radius:0 2px 2px 0;display:flex}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-radius:2px 0 0 2px}.monaco-description-button{align-items:center;display:flex;flex-direction:column;margin:4px 5px}.monaco-description-button .monaco-button-description{font-size:11px;font-style:italic;padding:4px 20px}.monaco-description-button .monaco-button-description,.monaco-description-button .monaco-button-label{align-items:center;display:flex;justify-content:center}.monaco-description-button .monaco-button-description>.codicon,.monaco-description-button .monaco-button-label>.codicon{color:inherit!important;margin:0 .2em}.monaco-button-dropdown.default-colors>.monaco-button,.monaco-button.default-colors{background-color:var(--vscode-button-background);color:var(--vscode-button-foreground)}.monaco-button-dropdown.default-colors>.monaco-button:hover,.monaco-button.default-colors:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary,.monaco-button.default-colors.secondary{background-color:var(--vscode-button-secondaryBackground);color:var(--vscode-button-secondaryForeground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary:hover,.monaco-button.default-colors.secondary:hover{background-color:var(--vscode-button-secondaryHoverBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator{background-color:var(--vscode-button-background);border-bottom:1px solid var(--vscode-button-border);border-top:1px solid var(--vscode-button-border)}.monaco-button-dropdown.default-colors .monaco-button.secondary+.monaco-button-dropdown-separator{background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator>div{background-color:var(--vscode-button-separator)}.monaco-count-badge{border-radius:11px;box-sizing:border-box;display:inline-block;font-size:11px;font-weight:400;line-height:11px;min-height:18px;min-width:18px;padding:3px 6px;text-align:center}.monaco-count-badge.long{border-radius:2px;line-height:normal;min-height:auto;padding:2px 3px}.monaco-progress-container{height:2px;overflow:hidden;width:100%}.monaco-progress-container .progress-bit{display:none;height:2px;left:0;position:absolute;width:2%}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{left:0;transition:width .1s linear}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-duration:4s;animation-iteration-count:infinite;animation-name:progress;animation-timing-function:linear;transform:translateZ(0)}.monaco-progress-container.infinite.infinite-long-running .progress-bit{animation-timing-function:steps(100)}@keyframes progress{0%{transform:translateX(0) scaleX(1)}50%{transform:translateX(2500%) scaleX(3)}to{transform:translateX(4900%) scaleX(1)}}.monaco-editor .diff-hidden-lines-widget{width:100%}.monaco-editor .diff-hidden-lines{font-size:13px;height:0;line-height:14px;transform:translateY(-10px)}.monaco-editor .diff-hidden-lines .bottom.dragging,.monaco-editor .diff-hidden-lines .top.dragging,.monaco-editor .diff-hidden-lines:not(.dragging) .bottom:hover,.monaco-editor .diff-hidden-lines:not(.dragging) .top:hover{background-color:var(--vscode-focusBorder)}.monaco-editor .diff-hidden-lines .bottom,.monaco-editor .diff-hidden-lines .top{background-clip:padding-box;background-color:initial;border-bottom:2px solid #0000;border-top:4px solid #0000;height:4px;transition:background-color .1s ease-out}.monaco-editor .diff-hidden-lines .bottom.canMoveTop:not(.canMoveBottom),.monaco-editor .diff-hidden-lines .top.canMoveTop:not(.canMoveBottom),.monaco-editor.draggingUnchangedRegion.canMoveTop:not(.canMoveBottom) *{cursor:n-resize!important}.monaco-editor .diff-hidden-lines .bottom:not(.canMoveTop).canMoveBottom,.monaco-editor .diff-hidden-lines .top:not(.canMoveTop).canMoveBottom,.monaco-editor.draggingUnchangedRegion:not(.canMoveTop).canMoveBottom *{cursor:s-resize!important}.monaco-editor .diff-hidden-lines .bottom.canMoveTop.canMoveBottom,.monaco-editor .diff-hidden-lines .top.canMoveTop.canMoveBottom,.monaco-editor.draggingUnchangedRegion.canMoveTop.canMoveBottom *{cursor:ns-resize!important}.monaco-editor .diff-hidden-lines .top{transform:translateY(4px)}.monaco-editor .diff-hidden-lines .bottom{transform:translateY(-6px)}.monaco-editor .diff-unchanged-lines{background:var(--vscode-diffEditor-unchangedCodeBackground)}.monaco-editor .noModificationsOverlay{align-items:center;background:var(--vscode-editor-background);display:flex;justify-content:center;z-index:1}.monaco-editor .diff-hidden-lines .center{background:var(--vscode-diffEditor-unchangedRegionBackground);box-shadow:inset 0 -5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow),inset 0 5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow);color:var(--vscode-diffEditor-unchangedRegionForeground);display:block;height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .diff-hidden-lines .center span.codicon{vertical-align:middle}.monaco-editor .diff-hidden-lines .center a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important;cursor:pointer}.monaco-editor .diff-hidden-lines div.breadcrumb-item{cursor:pointer}.monaco-editor .diff-hidden-lines div.breadcrumb-item:hover{color:var(--vscode-editorLink-activeForeground)}.monaco-editor .movedModified,.monaco-editor .movedOriginal{border:2px solid var(--vscode-diffEditor-move-border)}.monaco-editor .movedModified.currentMove,.monaco-editor .movedOriginal.currentMove{border:2px solid var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path.currentMove{stroke:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path{pointer-events:visiblestroke}.monaco-diff-editor .moved-blocks-lines .arrow{fill:var(--vscode-diffEditor-move-border)}.monaco-diff-editor .moved-blocks-lines .arrow.currentMove{fill:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines .arrow-rectangle{fill:var(--vscode-editor-background)}.monaco-diff-editor .moved-blocks-lines{pointer-events:none;position:absolute}.monaco-diff-editor .moved-blocks-lines path{fill:none;stroke:var(--vscode-diffEditor-move-border);stroke-width:2}.monaco-editor .char-delete.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-removedTextBackground);margin-left:-1px}.monaco-editor .char-insert.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-insertedTextBackground)}.monaco-editor .fold-unchanged{cursor:pointer}.monaco-diff-editor .diff-moved-code-block{display:flex;justify-content:flex-end;margin-top:-4px}.monaco-diff-editor .diff-moved-code-block .action-bar .action-label.codicon{font-size:12px;height:12px;width:12px}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:#00000008}.monaco-diff-editor.vs-dark .diffOverview{background:#ffffff03}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar{background:#0000}.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-light .scrollbar{background:none}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:#ababab66}.modified-in-monaco-diff-editor.hc-black .slider.active,.modified-in-monaco-diff-editor.hc-light .slider.active{background:none}.monaco-diff-editor .delete-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-editor .insert-sign{align-items:center;display:flex!important;font-size:11px!important;opacity:.7!important}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-diff-editor.hc-light .delete-sign,.monaco-diff-editor.hc-light .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.hc-black .insert-sign,.monaco-editor.hc-light .delete-sign,.monaco-editor.hc-light .insert-sign{opacity:1}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .inline-deleted-margin-view-zone{text-align:right}.monaco-editor .arrow-revert-change{position:absolute;z-index:10}.monaco-editor .arrow-revert-change:hover{cursor:pointer}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}.monaco-diff-editor .char-insert,.monaco-diff-editor .line-insert,.monaco-editor .char-insert,.monaco-editor .line-insert{background-color:var(--vscode-diffEditor-insertedTextBackground)}.monaco-diff-editor .line-insert,.monaco-editor .line-insert{background-color:var(--vscode-diffEditor-insertedLineBackground,var(--vscode-diffEditor-insertedTextBackground))}.monaco-editor .char-insert,.monaco-editor .line-insert{border:1px solid var(--vscode-diffEditor-insertedTextBorder);box-sizing:border-box}.monaco-editor.hc-black .char-insert,.monaco-editor.hc-black .line-insert,.monaco-editor.hc-light .char-insert,.monaco-editor.hc-light .line-insert{border-style:dashed}.monaco-editor .char-delete,.monaco-editor .line-delete{border:1px solid var(--vscode-diffEditor-removedTextBorder);box-sizing:border-box}.monaco-editor.hc-black .char-delete,.monaco-editor.hc-black .line-delete,.monaco-editor.hc-light .char-delete,.monaco-editor.hc-light .line-delete{border-style:dashed}.monaco-diff-editor .gutter-insert,.monaco-editor .gutter-insert,.monaco-editor .inline-added-margin-view-zone{background-color:var(--vscode-diffEditor-insertedLineBackground),var(--vscode-diffEditor-insertedTextBackground);background-color:var(--vscode-diffEditorGutter-insertedLineBackground,var(--vscode-diffEditor-insertedLineBackground),var(--vscode-diffEditor-insertedTextBackground))}.monaco-diff-editor .char-delete,.monaco-diff-editor .line-delete,.monaco-editor .char-delete,.monaco-editor .line-delete{background-color:var(--vscode-diffEditor-removedTextBackground)}.monaco-diff-editor .line-delete,.monaco-editor .line-delete{background-color:var(--vscode-diffEditor-removedLineBackground,var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor .gutter-delete,.monaco-editor .gutter-delete,.monaco-editor .inline-deleted-margin-view-zone{background-color:var(--vscode-diffEditor-removedLineBackground),var(--vscode-diffEditor-removedTextBackground);background-color:var(--vscode-diffEditorGutter-removedLineBackground,var(--vscode-diffEditor-removedLineBackground),var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor.side-by-side .editor.modified{border-left:1px solid var(--vscode-diffEditor-border);box-shadow:-6px 0 5px -5px var(--vscode-scrollbar-shadow)}.monaco-diff-editor.side-by-side .editor.original{border-right:1px solid var(--vscode-diffEditor-border);box-shadow:6px 0 5px -5px var(--vscode-scrollbar-shadow)}.monaco-diff-editor .diffViewport{background:var(--vscode-scrollbarSlider-background)}.monaco-diff-editor .diffViewport:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-diff-editor .diffViewport:active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-editor .diagonal-fill{background-image:linear-gradient(-45deg,var(--vscode-diffEditor-diagonalFill) 12.5%,#0000 12.5%,#0000 50%,var(--vscode-diffEditor-diagonalFill) 50%,var(--vscode-diffEditor-diagonalFill) 62.5%,#0000 62.5%,#0000 100%);background-size:8px 8px}.monaco-diff-editor .gutter{flex-grow:0;flex-shrink:0;overflow:hidden;position:relative;.gutterItem{opacity:0;transition:opacity .7s;&.showAlways{opacity:1}&.noTransition,&.showAlways{transition:none}}&:hover .gutterItem{opacity:1;transition:opacity .1s ease-in-out}.gutterItem{.background{border-left:2px solid var(--vscode-menu-border);height:100%;left:50%;position:absolute;width:1px}.buttons{align-items:center;display:flex;justify-content:center;position:absolute;width:100%;.monaco-toolbar{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;.monaco-action-bar{line-height:1;.actions-container{background:var(--vscode-editor-background);border:1px solid var(--vscode-menu-border);border-radius:4px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;.action-item{&:hover{background:var(--vscode-toolbar-hoverBackground)}.action-label{padding:.5px 1px}}}}}}}}.monaco-component.diff-review{user-select:none;-webkit-user-select:none;z-index:99}.monaco-diff-editor .diff-review{position:absolute}.monaco-component.diff-review .diff-review-line-number{color:var(--vscode-editorLineNumber-foreground);display:inline-block;text-align:right}.monaco-component.diff-review .diff-review-summary{padding-left:10px}.monaco-component.diff-review .diff-review-shadow{box-shadow:var(--vscode-scrollbar-shadow) 0 -6px 6px -6px inset;position:absolute}.monaco-component.diff-review .diff-review-row{white-space:pre}.monaco-component.diff-review .diff-review-table{display:table;min-width:100%}.monaco-component.diff-review .diff-review-row{display:table-row;width:100%}.monaco-component.diff-review .diff-review-spacer{display:inline-block;vertical-align:middle;width:10px}.monaco-component.diff-review .diff-review-spacer>.codicon{font-size:9px!important}.monaco-component.diff-review .diff-review-actions{display:inline-block;position:absolute;right:10px;top:2px;z-index:100}.monaco-component.diff-review .diff-review-actions .action-label{height:16px;margin:2px 0;width:16px}.monaco-component.diff-review .revertButton{cursor:pointer}.monaco-toolbar{height:100%}.monaco-toolbar .toolbar-toggle-more{display:inline-block;padding:0}.monaco-component.multiDiffEditor{background:var(--vscode-multiDiffEditor-background);overflow-y:hidden;.focused{--vscode-multiDiffEditor-border:var(--vscode-focusBorder)}.multiDiffEntry{display:flex;flex:1 1;flex-direction:column;overflow:hidden;.collapse-button{cursor:pointer;margin:0 5px;a{display:block}}.header{background:var(--vscode-editor-background);z-index:1000;&:not(.collapsed) .header-content{border-bottom:1px solid var(--vscode-sideBarSectionHeader-border)}.header-content{align-items:center;background:var(--vscode-multiDiffEditor-headerBackground);border-left:1px solid var(--vscode-multiDiffEditor-border);border-right:1px solid var(--vscode-multiDiffEditor-border);border-top:1px solid var(--vscode-multiDiffEditor-border);border-top-left-radius:2px;border-top-right-radius:2px;color:var(--vscode-foreground);display:flex;margin:8px 8px 0;padding:4px 5px;&.shadow{box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px}.file-path{display:flex;flex:1 1;min-width:0;.title{font-size:14px;line-height:22px;&.original{flex:1 1;min-width:0;text-overflow:ellipsis}}.status{font-weight:600;line-height:22px;margin:0 10px;opacity:.75}}.actions{padding:0 8px}}}.editorParent{border-bottom:1px solid var(--vscode-multiDiffEditor-border);border-left:1px solid var(--vscode-multiDiffEditor-border);border-radius:2px;border-right:1px solid var(--vscode-multiDiffEditor-border);display:flex;flex:1 1;flex-direction:column;margin-left:8px;margin-right:8px;overflow:hidden}.editorContainer{flex:1 1}}} \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/css/328.c0ade9c1.chunk.css b/ydb/core/viewer/monitoring/static/css/328.c0ade9c1.chunk.css new file mode 100644 index 000000000000..378e7a1e4c4c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/css/328.c0ade9c1.chunk.css @@ -0,0 +1 @@ +.g-alert_corners_square{--g-card-border-radius:0}.g-alert__text-content{width:100%}.g-alert__actions_minContent{width:-webkit-min-content;width:min-content}.g-alert__close-btn{flex-shrink:0} \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/css/4983.5c3e5de4.chunk.css b/ydb/core/viewer/monitoring/static/css/4983.5c3e5de4.chunk.css new file mode 100644 index 000000000000..1d6b529ea392 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/css/4983.5c3e5de4.chunk.css @@ -0,0 +1 @@ +.yagr{--yagr-font-family:"Roboto","Helvetica Neue","Helvetica",Arial,sans-serif}.yagr_theme_light,.yagr_theme_light-hc{--yagr-title-color:#333;--yagr-legend-item:#00000080;--yagr-legend-item-hover:#000;--yagr-legend-item-hidden:#0000004d;--yagr-background:#fff;--yagr-grid:rgba(0,0,0,.105);--yagr-axis-stroke:#00000080}.yagr_theme_dark,.yagr_theme_dark-hc{--yagr-title-color:#ffffff59;--yagr-legend-item:#ffffff80;--yagr-legend-item-hover:#a09fa3;--yagr-legend-item-hidden:#ffffff2b;--yagr-background:#2d2c33;--yagr-grid:#ffffff3b;--yagr-axis-stroke:#ffffff80}.yagr_theme_dark-hc{--yagr-background:#222326}.yagr{background-color:var(--yagr-background);height:100%;overflow:hidden}.yagr,.yagr .uplot{font-family:var(--yagr-font-family);width:100%}.yagr .u-title{color:var(--yagr-title-color);font-size:14px;font-weight:700;line-height:14px;margin-top:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.yagr .u-select{background:#335cad40}.uplot,.uplot *,.uplot :after,.uplot :before{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;width:-webkit-min-content;width:min-content}.u-title{font-size:18px;font-weight:700;text-align:center}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;height:100%;position:relative;width:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{display:inline-block;vertical-align:middle}.u-legend .u-marker{background-clip:padding-box!important;height:1em;margin-right:4px;width:1em}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012}.u-cursor-x,.u-cursor-y,.u-select{pointer-events:none;position:absolute}.u-cursor-x,.u-cursor-y{left:0;top:0;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{background-clip:padding-box!important;border:0 solid;border-radius:50%;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.u-axis.u-off,.u-cursor-pt.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-select.u-off{display:none}.yagr-tooltip{--yagr-tooltip-font-family:"Lucida Grande","Lucida Sans Unicode",Arial,Helvetica,sans-serif;background-color:#fff;border-radius:4px;font-family:var(--yagr-tooltip-font-family);overflow:hidden;pointer-events:none;position:absolute;z-index:1000}.yagr-tooltip__item{align-items:center;display:flex;flex-direction:row;justify-content:left;white-space:nowrap}.yagr-tooltip__item._active{font-weight:700}.yagr-tooltip_default{box-shadow:2px 0 3px #0000001a;font-size:12px;padding:4px 12px}.yagr-tooltip_default .__title{font-size:14px;font-weight:700;margin-bottom:4px}.yagr-tooltip_default .__section{margin-bottom:4px}.yagr-tooltip_default .__section:last-child{margin:0}.yagr-tooltip_default .__section_title{font-size:14px;font-weight:700;margin-bottom:2px}.yagr-tooltip_default .__section_scale{background-color:#eee;margin-bottom:2px;padding:2px}.yagr-tooltip_default .yagr-tooltip__mark{border-radius:50%;display:block;height:10px;margin-right:8px;width:10px}.yagr-tooltip_pinned{pointer-events:all}.yagr-tooltip_pinned ._tooltip-list{max-height:320px}.yagr-tooltip ._hidden-rows-number{white-space:nowrap}.yagr-tooltip__idx{max-width:25px;overflow:hidden;white-space:nowrap;width:25px}.yagr-tooltip__tf{margin-left:4px}.yagr-point{left:0;pointer-events:none;position:absolute;top:0;will-change:transform;z-index:100}.yagr-point span{border:1px solid #fff;border-radius:50%;box-shadow:0 1px 1px -1px #fff;display:block;height:100%;width:100%}.yagr-legend{display:block;max-width:100%;padding:8px 24px 12px;width:100%}.yagr-legend__top{padding:8px 24px 0}.yagr-legend__container{height:100%;overflow:hidden;width:100%}.yagr-legend__items{display:flex;flex-flow:row wrap;padding-left:16px}.yagr-legend__item{color:var(--yagr-legend-item);cursor:pointer;font-size:12px;font-weight:400;line-height:14px;margin-right:16px;max-height:14px;max-width:350px;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.yagr-legend__item:last-child{margin-right:0}.yagr-legend__item:hover{color:var(--yagr-legend-item-hover)}.yagr-legend__item_hidden{color:var(--yagr-legend-item-hidden)}.yagr-legend__item_hidden .yagr-legend__icon{background-color:var(--yagr-legend-item-hidden)!important}.yagr-legend__icon{display:inline-block;margin-right:4px;position:relative;width:12px}.yagr-legend__icon_area,.yagr-legend__icon_column,.yagr-legend__icon_dots{border-radius:50%;height:12px;top:2px}.yagr-legend__icon_line{height:3px;top:-2px}.yagr-legend__pagination{align-items:center;display:flex;justify-content:flex-start;padding-left:14px}.yagr-legend__pagination-text{color:var(--yagr-legend-item-hover);font-size:12px;-webkit-user-select:none;user-select:none}.yagr-legend__icon-up{border-color:#0000 #0000 #039;border-style:solid;border-width:0 6px 12px;cursor:pointer;height:0;width:0}.yagr-legend__icon-up_disabled{border-color:#0000 #0000 #ccc;cursor:auto}.yagr-legend__icon-down{border-color:#039 #0000 #0000;border-style:solid;border-width:12px 6px 0;cursor:pointer;height:0;width:0}.yagr-legend__icon-down_disabled{border-color:#ccc #0000 #0000;cursor:auto}.yagr-tooltip{background-color:var(--g-color-infographics-tooltip-bg);box-shadow:0 2px 12px #00000026}.chartkit-highcharts-tooltip-container_type_timeline{height:100%;width:100%}.chartkit-highcharts-tooltip-container._tooltip-with-scroll ._tooltip-footer td:last-child,.chartkit-highcharts-tooltip-container._tooltip-with-scroll ._tooltip-header td:last-child,.chartkit-highcharts-tooltip-container._tooltip-with-scroll-in-safari ._tooltip-row td:last-child,.chartkit-highcharts-tooltip-container._tooltip-with-scroll-in-safari ._tooltip-rows__summ-tr td:last-child{padding-right:33px;padding-right:calc(18px + var(--g-scrollbar-width, 15px))}._tooltip{background:var(--g-color-infographics-tooltip-bg);background-color:var(--g-color-infographics-tooltip-bg);border-radius:5px;box-shadow:0 2px 12px #00000026;box-sizing:border-box;color:var(--g-color-text-primary);font-size:12px;overflow:hidden}._tooltip_split-tooltip{border:none;border-radius:0;box-shadow:none;padding-bottom:12px}._tooltip_split-tooltip table{table-layout:fixed}._tooltip_split-tooltip ._tooltip-rows__table tbody{display:table-row-group}@supports (padding:max(0px)){._tooltip_split-tooltip{padding-bottom:max(12px,env(safe-area-inset-bottom))}}._tooltip table{width:100%}._tooltip table td{box-sizing:border-box}._tooltip table td:last-child{text-align:right}._tooltip-fake-row{height:5px}._tooltip-fake-row-heightless{height:0}._tooltip-fake-row-heightless td{padding:0}._tooltip-fake-row td:first-child{width:28px}._tooltip-row{width:100%}._tooltip-row td:first-child{padding-left:14px}._tooltip-row td:last-child{padding-right:18px}._tooltip-row td{padding:2px 4px}._tooltip-row td._tooltip-rows__diff-td,._tooltip-row td._tooltip-rows__value-td{padding-bottom:1px}._tooltip-selected-row{font-weight:600}._tooltip-comment-row td:last-child{padding-right:18px}._tooltip-right__td{padding-right:14px}._tooltip-right__td_with-split-tooltip{border:none}._tooltip-date{font-size:13px;font-weight:700;max-width:450px;overflow:hidden;padding:10px 14px 4px;text-overflow:ellipsis;white-space:nowrap}._tooltip-date-dayofweek{display:inline-block}._tooltip-date-dayofweek_weekend{color:red}._tooltip-rows__table{border-spacing:0;width:10px}._tooltip-rows__table thead,._tooltip-rows__table-footer{display:table;width:100%}._tooltip-rows__table thead._tooltip-header tr:not(._tooltip-fake-row):first-child td{border-bottom:1px solid var(--g-color-line-generic);padding-bottom:6px;padding-top:6px}._tooltip-rows__table tbody{display:block;overflow:hidden auto}._tooltip-rows__table tbody._tooltip-footer{display:table;width:100%}._tooltip-rows__table tbody._tooltip-list{overflow-x:hidden}._tooltip-rows__table tbody ._hidden-rows-sum._hidden-rows-sum-dark-bg,._tooltip-rows__table tbody._tooltip-list ._tooltip-row-dark-bg{background-color:var(--g-color-base-generic)}._tooltip-rows__table tbody ._hidden-rows-sum td{padding-bottom:2px;padding-top:2px}._tooltip-rows__table tbody td._hidden-rows-number{padding-right:20px;text-align:left}._tooltip-rows__table tbody td._hidden-rows-value{font-family:Consolas,Menlo,Ubuntu Mono,monospace;word-spacing:-3px}._tooltip-rows__bubble-div{border-radius:1px;display:inline-block;height:6px;margin-bottom:1px;margin-left:1px;width:12px}._tooltip-rows__shape-div{align-items:center;display:flex;height:100%;width:38px}._tooltip-rows__shape-td{height:20px}._tooltip-rows__percent-td{padding-left:12px}._tooltip-rows__diff-td,._tooltip-rows__percent-td{font-family:Consolas,Menlo,Ubuntu Mono,monospace;white-space:nowrap;word-spacing:-3px}._tooltip-rows__diff-td{padding-left:3px;padding-right:3px}._tooltip-rows__comment-left-td{position:relative}._tooltip-rows__comment-left-div{bottom:6px;left:2px;position:absolute;top:-7px;width:10px}._tooltip-rows__comment-div{color:#aaa;font-size:10px;font-weight:400;letter-spacing:.2px;line-height:1.3;padding-left:14px;position:relative;text-align:left;white-space:normal;width:auto}._tooltip-rows__bubble-td{width:28px}._tooltip-rows__value-td{font-family:Consolas,Menlo,Ubuntu Mono,monospace;padding-left:12px;white-space:nowrap;word-spacing:-3px}._tooltip-rows__value-td_selected{text-decoration:underline}._tooltip-rows__name-td{max-width:400px;overflow:hidden;padding-left:10px;text-align:left;text-overflow:ellipsis;white-space:nowrap}._tooltip-rows__name-td_selected{text-decoration:underline}._tooltip-rows__summ-td{border-top:1px solid var(--g-color-line-generic);color:var(--g-color-text-secondary);font-size:12px;padding:6px 0 6px 3px}._tooltip-rows__summ-td-value{font-family:Consolas,Menlo,Ubuntu Mono,monospace;word-spacing:-3px}._tooltip-rows__summ-td:first-child{padding-left:15px;text-align:left}._tooltip-rows__summ-td:last-child{padding-right:18px;text-align:right}._tooltip-left__td{vertical-align:top}._tooltip-right__td{border-left:1px solid var(--g-color-line-generic);font-size:8pt;max-width:150px;min-width:120px;opacity:.9;padding-left:10px;position:relative;vertical-align:top;white-space:normal}._tooltip-right__holiday-div{align-items:center;display:flex;padding-bottom:5px;text-align:left}._tooltip-right__holiday-emoji{font-size:20px}._tooltip-right__holiday-region{color:#fff;display:inline-block;letter-spacing:1px;padding-left:5px}._tooltip-right__traf-div{border-top:3px solid;font-size:10px;line-height:1.3;margin-top:9px;padding-bottom:10px;padding-top:3px;text-align:left;white-space:pre-line;word-break:break-word}._tooltip-right__traf-div_for-split-tooltip{border-left:2px solid;border-top:none;color:var(--g-color-text-secondary);margin-bottom:5px;margin-left:6px;margin-top:0;padding-bottom:0;padding-left:8px;padding-top:0}._tooltip-right__traf-div:not(:first-child){margin-top:7px}._tooltip-right__margin-bot{margin-bottom:7px} \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/css/8424.308a04db.chunk.css b/ydb/core/viewer/monitoring/static/css/8424.308a04db.chunk.css new file mode 100644 index 000000000000..7ba7f8a2bc9e --- /dev/null +++ b/ydb/core/viewer/monitoring/static/css/8424.308a04db.chunk.css @@ -0,0 +1 @@ +.monaco-editor .selection-anchor{background-color:#007acc;width:2px!important}.monaco-editor .bracket-match{background-color:var(--vscode-editorBracketMatch-background);border:1px solid var(--vscode-editorBracketMatch-border);box-sizing:border-box}.inline-editor-progress-decoration{display:inline-block;height:1em;width:1em}.inline-progress-widget{align-items:center;display:flex!important;justify-content:center}.inline-progress-widget .icon{font-size:80%!important}.inline-progress-widget:hover .icon{animation:none;font-size:90%!important}.inline-progress-widget:hover .icon:before{content:"\ea76"}.monaco-editor .monaco-editor-overlaymessage{padding-bottom:8px;z-index:10000}.monaco-editor .monaco-editor-overlaymessage.below{padding-bottom:0;padding-top:8px;z-index:10000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{animation:fadeIn .15s ease-out}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{animation:fadeOut .1s ease-out}.monaco-editor .monaco-editor-overlaymessage .message{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-inputValidation-infoBorder);border-radius:3px;color:var(--vscode-editorHoverWidget-foreground);padding:2px 4px}.monaco-editor .monaco-editor-overlaymessage .message p{margin-block:0}.monaco-editor .monaco-editor-overlaymessage .message a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-editor-overlaymessage .message a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor.hc-black .monaco-editor-overlaymessage .message,.monaco-editor.hc-light .monaco-editor-overlaymessage .message{border-width:2px}.monaco-editor .monaco-editor-overlaymessage .anchor{border:8px solid #0000;height:0!important;left:2px;position:absolute;width:0!important;z-index:1000}.monaco-editor .monaco-editor-overlaymessage .anchor.top{border-bottom-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage .anchor.below{border-top-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage.below .anchor.below,.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top{display:none}.monaco-editor .monaco-editor-overlaymessage.below .anchor.top{display:inherit;top:-8px}.post-edit-widget{background-color:var(--vscode-editorWidget-background);border:1px solid #0000;border:1px solid var(--vscode-widget-border,#0000);border-radius:4px;box-shadow:0 0 8px 2px var(--vscode-widget-shadow);overflow:hidden}.post-edit-widget .monaco-button{border:none;border-radius:0;padding:2px}.post-edit-widget .monaco-button:hover{background-color:var(--vscode-button-secondaryHoverBackground)!important}.post-edit-widget .monaco-button .codicon{margin:0}@font-face{font-display:block;font-family:codicon;src:url(../../static/media/codicon.762fced46d6cddbda272.ttf) format("truetype")}.codicon[class*=codicon-]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font:normal normal normal 16px/1 codicon;text-align:center;text-decoration:none;text-rendering:auto;text-transform:none;user-select:none;-webkit-user-select:none}.codicon-wrench-subaction{opacity:.5}@keyframes codicon-spin{to{transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{animation:codicon-spin 1.5s steps(30) infinite}.codicon-modifier-disabled{opacity:.4}.codicon-loading,.codicon-tree-item-loading:before{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.monaco-editor .codicon.codicon-symbol-array,.monaco-workbench .codicon.codicon-symbol-array{color:var(--vscode-symbolIcon-arrayForeground)}.monaco-editor .codicon.codicon-symbol-boolean,.monaco-workbench .codicon.codicon-symbol-boolean{color:var(--vscode-symbolIcon-booleanForeground)}.monaco-editor .codicon.codicon-symbol-class,.monaco-workbench .codicon.codicon-symbol-class{color:var(--vscode-symbolIcon-classForeground)}.monaco-editor .codicon.codicon-symbol-method,.monaco-workbench .codicon.codicon-symbol-method{color:var(--vscode-symbolIcon-methodForeground)}.monaco-editor .codicon.codicon-symbol-color,.monaco-workbench .codicon.codicon-symbol-color{color:var(--vscode-symbolIcon-colorForeground)}.monaco-editor .codicon.codicon-symbol-constant,.monaco-workbench .codicon.codicon-symbol-constant{color:var(--vscode-symbolIcon-constantForeground)}.monaco-editor .codicon.codicon-symbol-constructor,.monaco-workbench .codicon.codicon-symbol-constructor{color:var(--vscode-symbolIcon-constructorForeground)}.monaco-editor .codicon.codicon-symbol-enum,.monaco-editor .codicon.codicon-symbol-value,.monaco-workbench .codicon.codicon-symbol-enum,.monaco-workbench .codicon.codicon-symbol-value{color:var(--vscode-symbolIcon-enumeratorForeground)}.monaco-editor .codicon.codicon-symbol-enum-member,.monaco-workbench .codicon.codicon-symbol-enum-member{color:var(--vscode-symbolIcon-enumeratorMemberForeground)}.monaco-editor .codicon.codicon-symbol-event,.monaco-workbench .codicon.codicon-symbol-event{color:var(--vscode-symbolIcon-eventForeground)}.monaco-editor .codicon.codicon-symbol-field,.monaco-workbench .codicon.codicon-symbol-field{color:var(--vscode-symbolIcon-fieldForeground)}.monaco-editor .codicon.codicon-symbol-file,.monaco-workbench .codicon.codicon-symbol-file{color:var(--vscode-symbolIcon-fileForeground)}.monaco-editor .codicon.codicon-symbol-folder,.monaco-workbench .codicon.codicon-symbol-folder{color:var(--vscode-symbolIcon-folderForeground)}.monaco-editor .codicon.codicon-symbol-function,.monaco-workbench .codicon.codicon-symbol-function{color:var(--vscode-symbolIcon-functionForeground)}.monaco-editor .codicon.codicon-symbol-interface,.monaco-workbench .codicon.codicon-symbol-interface{color:var(--vscode-symbolIcon-interfaceForeground)}.monaco-editor .codicon.codicon-symbol-key,.monaco-workbench .codicon.codicon-symbol-key{color:var(--vscode-symbolIcon-keyForeground)}.monaco-editor .codicon.codicon-symbol-keyword,.monaco-workbench .codicon.codicon-symbol-keyword{color:var(--vscode-symbolIcon-keywordForeground)}.monaco-editor .codicon.codicon-symbol-module,.monaco-workbench .codicon.codicon-symbol-module{color:var(--vscode-symbolIcon-moduleForeground)}.monaco-editor .codicon.codicon-symbol-namespace,.monaco-workbench .codicon.codicon-symbol-namespace{color:var(--vscode-symbolIcon-namespaceForeground)}.monaco-editor .codicon.codicon-symbol-null,.monaco-workbench .codicon.codicon-symbol-null{color:var(--vscode-symbolIcon-nullForeground)}.monaco-editor .codicon.codicon-symbol-number,.monaco-workbench .codicon.codicon-symbol-number{color:var(--vscode-symbolIcon-numberForeground)}.monaco-editor .codicon.codicon-symbol-object,.monaco-workbench .codicon.codicon-symbol-object{color:var(--vscode-symbolIcon-objectForeground)}.monaco-editor .codicon.codicon-symbol-operator,.monaco-workbench .codicon.codicon-symbol-operator{color:var(--vscode-symbolIcon-operatorForeground)}.monaco-editor .codicon.codicon-symbol-package,.monaco-workbench .codicon.codicon-symbol-package{color:var(--vscode-symbolIcon-packageForeground)}.monaco-editor .codicon.codicon-symbol-property,.monaco-workbench .codicon.codicon-symbol-property{color:var(--vscode-symbolIcon-propertyForeground)}.monaco-editor .codicon.codicon-symbol-reference,.monaco-workbench .codicon.codicon-symbol-reference{color:var(--vscode-symbolIcon-referenceForeground)}.monaco-editor .codicon.codicon-symbol-snippet,.monaco-workbench .codicon.codicon-symbol-snippet{color:var(--vscode-symbolIcon-snippetForeground)}.monaco-editor .codicon.codicon-symbol-string,.monaco-workbench .codicon.codicon-symbol-string{color:var(--vscode-symbolIcon-stringForeground)}.monaco-editor .codicon.codicon-symbol-struct,.monaco-workbench .codicon.codicon-symbol-struct{color:var(--vscode-symbolIcon-structForeground)}.monaco-editor .codicon.codicon-symbol-text,.monaco-workbench .codicon.codicon-symbol-text{color:var(--vscode-symbolIcon-textForeground)}.monaco-editor .codicon.codicon-symbol-type-parameter,.monaco-workbench .codicon.codicon-symbol-type-parameter{color:var(--vscode-symbolIcon-typeParameterForeground)}.monaco-editor .codicon.codicon-symbol-unit,.monaco-workbench .codicon.codicon-symbol-unit{color:var(--vscode-symbolIcon-unitForeground)}.monaco-editor .codicon.codicon-symbol-variable,.monaco-workbench .codicon.codicon-symbol-variable{color:var(--vscode-symbolIcon-variableForeground)}.monaco-editor .lightBulbWidget{align-items:center;display:flex;justify-content:center}.monaco-editor .lightBulbWidget:hover{cursor:pointer}.monaco-editor .lightBulbWidget.codicon-light-bulb,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .lightBulbWidget.codicon-lightbulb-autofix,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle-autofix{color:var(--vscode-editorLightBulb-foreground);color:var(--vscode-editorLightBulbAutoFix-foreground,var(--vscode-editorLightBulb-foreground))}.monaco-editor .lightBulbWidget.codicon-sparkle-filled{color:var(--vscode-icon-foreground);color:var(--vscode-editorLightBulbAi-foreground,var(--vscode-icon-foreground))}.monaco-editor .lightBulbWidget:before{position:relative;z-index:2}.monaco-editor .lightBulbWidget:after{background-color:var(--vscode-editor-background);content:"";display:block;height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%;z-index:1}.action-widget{background-color:var(--vscode-editorWidget-background);border:1px solid var(--vscode-editorWidget-border)!important;border-radius:0;border-radius:2px;color:var(--vscode-editorWidget-foreground);display:block;font-size:13px;max-width:80vw;min-width:160px;width:100%;z-index:40}.context-view-block{z-index:-1}.context-view-block,.context-view-pointerBlock{cursor:auto;height:100%;left:0;position:fixed;top:0;width:100%}.context-view-pointerBlock{z-index:2}.action-widget .monaco-list{border:0!important;user-select:none;-webkit-user-select:none}.action-widget .monaco-list:focus:before{outline:0!important}.action-widget .monaco-list .monaco-scrollable-element{overflow:visible}.action-widget .monaco-list .monaco-list-row{cursor:pointer;padding:0 10px;touch-action:none;white-space:nowrap;width:100%}.action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled){background-color:var(--vscode-quickInputList-focusBackground)!important;color:var(--vscode-quickInputList-focusForeground);outline:1px solid #0000;outline:1px solid var(--vscode-menu-selectionBorder,#0000);outline-offset:-1px}.action-widget .monaco-list-row.group-header{color:var(--vscode-descriptionForeground)!important;font-weight:600}.action-widget .monaco-list .group-header,.action-widget .monaco-list .option-disabled,.action-widget .monaco-list .option-disabled .focused,.action-widget .monaco-list .option-disabled .focused:before,.action-widget .monaco-list .option-disabled:before{-webkit-touch-callout:none;background-color:initial!important;cursor:default!important;outline:0 solid!important;-webkit-user-select:none;user-select:none}.action-widget .monaco-list-row.action{align-items:center;display:flex;gap:6px}.action-widget .monaco-list-row.action.option-disabled,.action-widget .monaco-list-row.action.option-disabled .codicon,.action-widget .monaco-list:focus .monaco-list-row.focused.action.option-disabled,.action-widget .monaco-list:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused).option-disabled{color:var(--vscode-disabledForeground)}.action-widget .monaco-list-row.action:not(.option-disabled) .codicon{color:inherit}.action-widget .monaco-list-row.action .title{flex:1 1;overflow:hidden;text-overflow:ellipsis}.action-widget .monaco-list-row.action .monaco-keybinding>.monaco-keybinding-key{background-color:var(--vscode-keybindingLabel-background);border-color:var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);border-radius:3px;border-style:solid;border-width:1px;box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);color:var(--vscode-keybindingLabel-foreground)}.action-widget .action-widget-action-bar{background-color:var(--vscode-editorHoverWidget-statusBarBackground);border-top:1px solid var(--vscode-editorHoverWidget-border)}.action-widget .action-widget-action-bar:before{content:"";display:block;width:100%}.action-widget .action-widget-action-bar .actions-container{padding:0 8px}.action-widget-action-bar .action-label{color:var(--vscode-textLink-activeForeground);font-size:12px;line-height:22px;padding:0;pointer-events:all}.action-widget-action-bar .action-item{margin-right:16px;pointer-events:none}.action-widget-action-bar .action-label:hover{background-color:initial!important}.monaco-action-bar .actions-container.highlight-toggled .action-label.checked{background:var(--vscode-actionBar-toggledBackground)!important}.monaco-editor .codelens-decoration{font-feature-settings:var(--vscode-editorCodeLens-fontFeatureSettings);color:var(--vscode-editorCodeLens-foreground);display:inline-block;font-family:var(--vscode-editorCodeLens-fontFamily),var(--vscode-editorCodeLens-fontFamilyDefault);font-size:var(--vscode-editorCodeLens-fontSize);line-height:var(--vscode-editorCodeLens-lineHeight);overflow:hidden;padding-right:calc(var(--vscode-editorCodeLens-fontSize)*.5);text-overflow:ellipsis;white-space:nowrap}.monaco-editor .codelens-decoration>a,.monaco-editor .codelens-decoration>span{user-select:none;-webkit-user-select:none;vertical-align:sub;white-space:nowrap}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{cursor:pointer}.monaco-editor .codelens-decoration>a:hover,.monaco-editor .codelens-decoration>a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .codelens-decoration .codicon{color:currentColor!important;color:var(--vscode-editorCodeLens-foreground);font-size:var(--vscode-editorCodeLens-fontSize);line-height:var(--vscode-editorCodeLens-lineHeight);vertical-align:middle}.monaco-editor .codelens-decoration>a:hover .codicon:before{cursor:pointer}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{animation:fadein .1s linear}.colorpicker-widget{height:190px;user-select:none;-webkit-user-select:none}.colorpicker-color-decoration,.hc-light .colorpicker-color-decoration{border:.1em solid #000;box-sizing:border-box;cursor:pointer;display:inline-block;height:.8em;line-height:.8em;margin:.1em .2em 0;width:.8em}.hc-black .colorpicker-color-decoration,.vs-dark .colorpicker-color-decoration{border:.1em solid #eee}.colorpicker-header{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;display:flex;height:24px;image-rendering:pixelated;position:relative}.colorpicker-header .picked-color{align-items:center;color:#fff;cursor:pointer;display:flex;flex:1 1;justify-content:center;line-height:24px;overflow:hidden;white-space:nowrap;width:240px}.colorpicker-header .picked-color .picked-color-presentation{margin-left:5px;margin-right:5px;white-space:nowrap}.colorpicker-header .picked-color .codicon{color:inherit;font-size:14px}.colorpicker-header .picked-color.light{color:#000}.colorpicker-header .original-color{cursor:pointer;width:74px;z-index:inherit}.standalone-colorpicker{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground)}.colorpicker-header.standalone-colorpicker{border-bottom:none}.colorpicker-header .close-button{background-color:var(--vscode-editorHoverWidget-background);border-left:1px solid var(--vscode-editorHoverWidget-border);cursor:pointer}.colorpicker-header .close-button-inner-div{height:100%;text-align:center;width:100%}.colorpicker-header .close-button-inner-div:hover{background-color:var(--vscode-toolbar-hoverBackground)}.colorpicker-header .close-icon{padding:3px}.colorpicker-body{display:flex;padding:8px;position:relative}.colorpicker-body .saturation-wrap{flex:1 1;height:150px;min-width:220px;overflow:hidden;position:relative}.colorpicker-body .saturation-box{height:150px;position:absolute}.colorpicker-body .saturation-selection{border:1px solid #fff;border-radius:100%;box-shadow:0 0 2px #000c;height:9px;margin:-5px 0 0 -5px;position:absolute;width:9px}.colorpicker-body .strip{height:150px;width:25px}.colorpicker-body .standalone-strip{height:122px;width:25px}.colorpicker-body .hue-strip{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);cursor:grab;margin-left:8px;position:relative}.colorpicker-body .opacity-strip{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;cursor:grab;image-rendering:pixelated;margin-left:8px;position:relative}.colorpicker-body .strip.grabbing{cursor:grabbing}.colorpicker-body .slider{border:1px solid #ffffffb5;box-shadow:0 0 1px #000000d9;box-sizing:border-box;height:4px;left:-2px;position:absolute;top:0;width:calc(100% + 4px)}.colorpicker-body .strip .overlay{height:150px;pointer-events:none}.colorpicker-body .standalone-strip .standalone-overlay{height:122px;pointer-events:none}.standalone-colorpicker-body{border:1px solid #0000;border-bottom:1px solid var(--vscode-editorHoverWidget-border);display:block;overflow:hidden}.colorpicker-body .insert-button{background:var(--vscode-button-background);border:none;border-radius:2px;bottom:8px;color:var(--vscode-button-foreground);cursor:pointer;height:20px;padding:0;position:absolute;right:8px;width:58px}.colorpicker-body .insert-button:hover{background:var(--vscode-button-hoverBackground)}.monaco-editor .goto-definition-link{color:var(--vscode-editorLink-activeForeground)!important;cursor:pointer;text-decoration:underline}.monaco-editor .peekview-widget .head{box-sizing:border-box;display:flex;flex-wrap:nowrap;justify-content:space-between}.monaco-editor .peekview-widget .head .peekview-title{align-items:baseline;display:flex;font-size:13px;margin-left:20px;min-width:0;overflow:hidden;text-overflow:ellipsis}.monaco-editor .peekview-widget .head .peekview-title.clickable{cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){font-size:.9em;margin-left:.5em}.monaco-editor .peekview-widget .head .peekview-title .dirname,.monaco-editor .peekview-widget .head .peekview-title .filename,.monaco-editor .peekview-widget .head .peekview-title .meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty):before{content:"-";padding:0 .3em}.monaco-editor .peekview-widget .head .peekview-actions{flex:1 1;padding-right:2px;text-align:right}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor .peekview-widget .head .peekview-title .codicon{align-self:center;margin-right:4px}.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon{color:inherit!important}.monaco-editor .zone-widget{position:absolute;z-index:10}.monaco-editor .zone-widget .zone-widget-container{border-bottom-style:solid;border-bottom-width:0;border-top-style:solid;border-top-width:0;position:relative}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-bottom-width:1px;border-top-width:1px}.monaco-editor .reference-zone-widget .inline{display:inline-block;vertical-align:top}.monaco-editor .reference-zone-widget .messages{height:100%;padding:3em 0;text-align:center;width:100%}.monaco-editor .reference-zone-widget .ref-tree{background-color:var(--vscode-peekViewResult-background);color:var(--vscode-peekViewResult-lineForeground);line-height:23px}.monaco-editor .reference-zone-widget .ref-tree .reference{overflow:hidden;text-overflow:ellipsis}.monaco-editor .reference-zone-widget .ref-tree .reference-file{color:var(--vscode-peekViewResult-fileForeground);display:inline-flex;height:100%;width:100%}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit!important}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted){background-color:var(--vscode-peekViewResult-selectionBackground);color:var(--vscode-peekViewResult-selectionForeground)!important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-left:auto;margin-right:12px}.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight{background-color:var(--vscode-peekViewResult-matchHighlightBackground)}.monaco-editor .reference-zone-widget .preview .reference-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input,.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .reference-zone-widget .preview .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file,.monaco-editor.hc-light .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-editor.hc-black .reference-zone-widget .ref-tree .referenceMatch .highlight,.monaco-editor.hc-light .reference-zone-widget .ref-tree .referenceMatch .highlight{border:1px dotted #0000;border:1px dotted var(--vscode-contrastActiveBorder,#0000);box-sizing:border-box}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{display:inline-block;margin-right:4px;vertical-align:text-top}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{font-style:italic;opacity:.6}.monaco-editor .marker-widget .title{display:inline-block;padding-right:5px}.monaco-editor .marker-widget .descriptioncontainer{padding:8px 12px 0 20px;position:absolute;user-select:text;-webkit-user-select:text;white-space:pre}.monaco-editor .marker-widget .descriptioncontainer .message{display:flex;flex-direction:column}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .source,.monaco-editor .marker-widget .descriptioncontainer .message span.code{opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link{color:inherit;opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before{content:"("}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after{content:")"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{border-bottom:1px solid #0000;color:var(--vscode-textLink-activeForeground);text-decoration:underline;text-underline-position:under}.monaco-editor .marker-widget .descriptioncontainer .filename{color:var(--vscode-textLink-activeForeground);cursor:pointer}.extension-editor .codicon.codicon-error,.extensions-viewlet>.extensions .codicon.codicon-error,.markers-panel .marker-icon .codicon.codicon-error,.markers-panel .marker-icon.error,.monaco-editor .zone-widget .codicon.codicon-error,.preferences-editor .codicon.codicon-error,.text-search-provider-messages .providerMessage .codicon.codicon-error{color:var(--vscode-problemsErrorIcon-foreground)}.extension-editor .codicon.codicon-warning,.extensions-viewlet>.extensions .codicon.codicon-warning,.markers-panel .marker-icon .codicon.codicon-warning,.markers-panel .marker-icon.warning,.monaco-editor .zone-widget .codicon.codicon-warning,.preferences-editor .codicon.codicon-warning,.text-search-provider-messages .providerMessage .codicon.codicon-warning{color:var(--vscode-problemsWarningIcon-foreground)}.extension-editor .codicon.codicon-info,.extensions-viewlet>.extensions .codicon.codicon-info,.markers-panel .marker-icon .codicon.codicon-info,.markers-panel .marker-icon.info,.monaco-editor .zone-widget .codicon.codicon-info,.preferences-editor .codicon.codicon-info,.text-search-provider-messages .providerMessage .codicon.codicon-info{color:var(--vscode-problemsInfoIcon-foreground)}.monaco-editor .inlineSuggestionsHints.withBorder{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);z-index:39}.monaco-editor .inlineSuggestionsHints a,.monaco-editor .inlineSuggestionsHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineSuggestionsHints .keybinding{display:flex;margin-left:4px;opacity:.6}.monaco-editor .inlineSuggestionsHints .keybinding .monaco-keybinding-key{font-size:8px;padding:2px 3px}.monaco-editor .inlineSuggestionsHints .availableSuggestionCount a{display:flex;justify-content:center;min-width:19px}.monaco-editor .inlineSuggestionStatusBarItemLabel{margin-right:2px}.monaco-editor .hoverHighlight{background-color:var(--vscode-editor-hoverHighlightBackground)}.monaco-editor .monaco-hover{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);border-radius:3px;color:var(--vscode-editorHoverWidget-foreground)}.monaco-editor .monaco-hover a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .monaco-hover .hover-row .actions{background-color:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-editor .monaco-hover code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor.hc-light .dnd-target,.monaco-editor.vs .dnd-target{border-right:2px dotted #000;color:#fff}.monaco-editor.vs-dark .dnd-target{border-right:2px dotted #aeafad;color:#51504f}.monaco-editor.hc-black .dnd-target{border-right:2px dotted #fff;color:#000}.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.hc-light.mac.mouse-default .view-lines,.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines{cursor:default}.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.hc-light.mac.mouse-copy .view-lines,.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines{cursor:copy}.monaco-editor .findOptionsWidget{border:2px solid var(--vscode-contrastBorder)}.monaco-editor .find-widget,.monaco-editor .findOptionsWidget{background-color:var(--vscode-editorWidget-background);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);color:var(--vscode-editorWidget-foreground)}.monaco-editor .find-widget{border-bottom:1px solid var(--vscode-widget-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-left:1px solid var(--vscode-widget-border);border-right:1px solid var(--vscode-widget-border);box-sizing:border-box;height:33px;line-height:19px;overflow:hidden;padding:0 4px;position:absolute;transform:translateY(calc(-100% - 10px));transition:transform .2s linear;z-index:35}.monaco-workbench.reduce-motion .monaco-editor .find-widget{transition:transform 0ms linear}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-color:var(--vscode-focusBorder);outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:initial;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{display:flex;font-size:12px;margin:3px 25px 0 17px}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-bottom:2px;padding-top:2px}.monaco-editor .find-widget>.find-part .find-actions,.monaco-editor .find-widget>.replace-part .replace-actions{align-items:center;display:flex;height:25px}.monaco-editor .find-widget .monaco-findInput{display:flex;flex:1 1;vertical-align:middle}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{box-sizing:border-box;display:flex;flex:initial;height:25px;line-height:23px;margin:0 0 0 3px;padding:2px 0 0 2px;text-align:center;vertical-align:middle}.monaco-editor .find-widget .button{align-items:center;background-position:50%;background-repeat:no-repeat;border-radius:5px;cursor:pointer;display:flex;flex:initial;height:16px;justify-content:center;margin-left:3px;padding:3px;width:16px}.monaco-editor .find-widget .codicon-find-selection{border-radius:5px;height:22px;padding:3px;width:22px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{padding:1px 6px;top:-1px;width:auto}.monaco-editor .find-widget .button.toggle{border-radius:0;box-sizing:border-box;height:100%;left:3px;position:absolute;top:0;width:18px}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{color:var(--vscode-disabledForeground);cursor:default}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{display:flex;flex:auto;flex-grow:0;flex-shrink:0;position:relative;vertical-align:middle}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;right:2px;top:3px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .find-widget.no-results .matchesCount{color:var(--vscode-errorForeground)}.monaco-editor .findMatch{animation-duration:0;animation-name:inherit!important;background-color:var(--vscode-editor-findMatchHighlightBackground)}.monaco-editor .currentFindMatch{background-color:var(--vscode-editor-findMatchBackground);border:2px solid var(--vscode-editor-findMatchBorder);box-sizing:border-box;padding:1px}.monaco-editor .findScope{background-color:var(--vscode-editor-findRangeHighlightBackground)}.monaco-editor .find-widget .monaco-sash{background-color:var(--vscode-editorWidget-border);background-color:var(--vscode-editorWidget-resizeBorder,var(--vscode-editorWidget-border));left:0!important}.monaco-editor.hc-black .find-widget .button:before{left:2px;position:relative;top:1px}.monaco-editor .find-widget .button:not(.disabled):hover,.monaco-editor .find-widget .codicon-find-selection:hover{background-color:var(--vscode-toolbar-hoverBackground)!important}.monaco-editor.findMatch{background-color:var(--vscode-editor-findMatchHighlightBackground)}.monaco-editor.currentFindMatch{background-color:var(--vscode-editor-findMatchBackground)}.monaco-editor.findScope{background-color:var(--vscode-editor-findRangeHighlightBackground)}.monaco-editor.findMatch{background-color:var(--vscode-editorWidget-background)}.monaco-editor .find-widget>.button.codicon-widget-close{position:absolute;right:4px;top:5px}.monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{align-items:center;cursor:pointer;display:flex;font-size:140%;justify-content:center;margin-left:2px;opacity:0;transition:opacity .5s}.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{transition:none 0s ease 0s;transition:initial}.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons,.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon.codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays:hover .codicon{opacity:1}.monaco-editor .inline-folded:after{color:grey;content:"\22EF";cursor:pointer;display:inline;line-height:1em;margin:.1em .2em 0}.monaco-editor .folded-background{background-color:var(--vscode-editor-foldBackground)}.monaco-editor .cldr.codicon.codicon-folding-collapsed,.monaco-editor .cldr.codicon.codicon-folding-expanded,.monaco-editor .cldr.codicon.codicon-folding-manual-collapsed,.monaco-editor .cldr.codicon.codicon-folding-manual-expanded{color:var(--vscode-editorGutter-foldingControlForeground)!important}.monaco-editor .suggest-preview-additional-widget{white-space:nowrap}.monaco-editor .suggest-preview-additional-widget .content-spacer{color:#0000;white-space:pre}.monaco-editor .suggest-preview-additional-widget .button{cursor:pointer;display:inline-block;text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-hidden{font-size:0;opacity:0}.monaco-editor .ghost-text-decoration,.monaco-editor .suggest-preview-text .ghost-text{font-style:italic}.monaco-editor .ghost-text-decoration,.monaco-editor .ghost-text-decoration-preview,.monaco-editor .suggest-preview-text .ghost-text{background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border);color:var(--vscode-editorGhostText-foreground)!important}.monaco-editor .snippet-placeholder{background-color:initial;background-color:var(--vscode-editor-snippetTabstopHighlightBackground,#0000);min-width:2px;outline-color:#0000;outline-color:var(--vscode-editor-snippetTabstopHighlightBorder,#0000);outline-style:solid;outline-width:1px}.monaco-editor .finish-snippet-placeholder{background-color:initial;background-color:var(--vscode-editor-snippetFinalTabstopHighlightBackground,#0000);outline-color:#0000;outline-color:var(--vscode-editor-snippetFinalTabstopHighlightBorder,#0000);outline-style:solid;outline-width:1px}.monaco-editor .suggest-widget{border-radius:3px;display:flex;flex-direction:column;width:430px;z-index:40}.monaco-editor .suggest-widget.message{align-items:center;flex-direction:row}.monaco-editor .suggest-details,.monaco-editor .suggest-widget{background-color:var(--vscode-editorSuggestWidget-background);border-color:var(--vscode-editorSuggestWidget-border);border-style:solid;border-width:1px;flex:0 1 auto;width:100%}.monaco-editor.hc-black .suggest-details,.monaco-editor.hc-black .suggest-widget,.monaco-editor.hc-light .suggest-details,.monaco-editor.hc-light .suggest-widget{border-width:2px}.monaco-editor .suggest-widget .suggest-status-bar{border-top:1px solid var(--vscode-editorSuggestWidget-border);box-sizing:border-box;display:none;flex-flow:row nowrap;font-size:80%;justify-content:space-between;overflow:hidden;padding:0 4px;width:100%}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar{display:flex}.monaco-editor .suggest-widget .suggest-status-bar .left{padding-right:8px}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label{color:var(--vscode-editorSuggestWidgetStatus-foreground)}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label{margin-right:0}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label:after{content:", ";margin-right:.3em}.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:100%}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{height:100%;width:100%}.monaco-editor .suggest-widget .monaco-list{user-select:none;-webkit-user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{background-position:2px 2px;background-repeat:no-repeat;-mox-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:flex;padding-right:10px;touch-action:none;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused{color:var(--vscode-editorSuggestWidget-selectedForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon{color:var(--vscode-editorSuggestWidget-selectedIconForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{flex:1 1;height:100%;overflow:hidden;padding-left:2px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{display:flex;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:pre}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label{color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-highlightForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-focusHighlightForeground)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:before{color:inherit;cursor:pointer;font-size:14px;opacity:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close{position:absolute;right:2px;top:6px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{opacity:.7}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label{opacity:.6;overflow:hidden;text-overflow:ellipsis}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label{align-self:center;font-size:85%;line-height:normal;margin-left:12px;opacity:.4;overflow:hidden;text-overflow:ellipsis}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{font-size:85%;margin-left:1.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label{width:calc(100% - 26px)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left{flex-grow:1;flex-shrink:1;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label{flex-shrink:0}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label{max-width:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label{flex-shrink:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{flex-shrink:4;max-width:70%;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:inline-block;height:18px;position:absolute;right:10px;visibility:hidden;width:18px}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none!important}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:inline-block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore{visibility:visible}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:.66;text-decoration:none;text-decoration:initial}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{background-position:50%;background-repeat:no-repeat;background-size:80%;display:block;height:16px;margin-left:2px;width:16px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon{align-items:center;display:flex;margin-right:4px}.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{border:.1em solid #000;display:inline-block;height:.7em;margin:0 0 0 .3em;width:.7em}.monaco-editor .suggest-details-container{z-index:41}.monaco-editor .suggest-details{color:var(--vscode-editorSuggestWidget-foreground);cursor:default;display:flex;flex-direction:column}.monaco-editor .suggest-details.focused{border-color:var(--vscode-focusBorder)}.monaco-editor .suggest-details a{color:var(--vscode-textLink-foreground)}.monaco-editor .suggest-details a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .suggest-details code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .suggest-details.no-docs{display:none}.monaco-editor .suggest-details>.monaco-scrollable-element{flex:1 1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body{box-sizing:border-box;height:100%;width:100%}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type{flex:2 1;margin:0 24px 0 0;opacity:.7;overflow:hidden;padding:4px 0 12px 5px;text-overflow:ellipsis;white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap{white-space:normal;word-break:break-all}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs{margin:0;padding:4px 5px;white-space:pre-wrap}.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs{margin-right:24px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs{min-height:calc(1rem + 8px);padding:0;white-space:normal}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source{white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code{word-wrap:break-word;white-space:pre-wrap}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon{vertical-align:sub}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-details code{border-radius:3px;padding:0 .4em}.monaco-editor .suggest-details ol,.monaco-editor .suggest-details ul{padding-left:20px}.monaco-editor .suggest-details p code{font-family:var(--monaco-monospace-font)}.monaco-editor.vs .valueSetReplacement{outline:solid 2px var(--vscode-editorBracketMatch-border)}.monaco-editor .linked-editing-decoration{background-color:var(--vscode-editor-linkedEditingBackground);min-width:1px}.monaco-editor .detected-link,.monaco-editor .detected-link-active{text-decoration:underline;text-underline-position:under}.monaco-editor .detected-link-active{color:var(--vscode-editorLink-activeForeground)!important;cursor:pointer}.monaco-editor .focused .selectionHighlight{background-color:var(--vscode-editor-selectionHighlightBackground);border:1px solid var(--vscode-editor-selectionHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .focused .selectionHighlight,.monaco-editor.hc-light .focused .selectionHighlight{border-style:dotted}.monaco-editor .wordHighlight{background-color:var(--vscode-editor-wordHighlightBackground);border:1px solid var(--vscode-editor-wordHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlight,.monaco-editor.hc-light .wordHighlight{border-style:dotted}.monaco-editor .wordHighlightStrong{background-color:var(--vscode-editor-wordHighlightStrongBackground);border:1px solid var(--vscode-editor-wordHighlightStrongBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlightStrong,.monaco-editor.hc-light .wordHighlightStrong{border-style:dotted}.monaco-editor .wordHighlightText{background-color:var(--vscode-editor-wordHighlightTextBackground);border:1px solid var(--vscode-editor-wordHighlightTextBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlightText,.monaco-editor.hc-light .wordHighlightText{border-style:dotted}.monaco-editor .inline-edit-remove{background-color:var(--vscode-editorGhostText-background);font-style:italic;text-decoration:line-through}.monaco-editor .inline-edit-remove.backgroundColoring{background-color:var(--vscode-diffEditor-removedLineBackground)}.monaco-editor .inline-edit-hidden{font-size:0;opacity:0}.monaco-editor .inline-edit-decoration,.monaco-editor .suggest-preview-text .inline-edit{font-style:italic}.monaco-editor .inline-completion-text-to-replace{text-decoration:underline;text-underline-position:under}.monaco-editor .inline-edit-decoration,.monaco-editor .inline-edit-decoration-preview,.monaco-editor .suggest-preview-text .inline-edit{background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border);color:var(--vscode-editorGhostText-foreground)!important}.monaco-editor .inlineEditHints.withBorder{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);z-index:39}.monaco-editor .inlineEditHints a,.monaco-editor .inlineEditHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineEditHints .keybinding{display:flex;margin-left:4px;opacity:.6}.monaco-editor .inlineEditHints .keybinding .monaco-keybinding-key{font-size:8px;padding:2px 3px}.monaco-editor .inlineEditStatusBarItemLabel{margin-right:2px}.monaco-editor .parameter-hints-widget{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);cursor:default;display:flex;flex-direction:column;line-height:1.5em;z-index:39}.hc-black .monaco-editor .parameter-hints-widget,.hc-light .monaco-editor .parameter-hints-widget{border-width:2px}.monaco-editor .parameter-hints-widget>.phwrapper{display:flex;flex-direction:row;max-width:440px}.monaco-editor .parameter-hints-widget.multiple{min-height:3.3em;padding:0}.monaco-editor .parameter-hints-widget.multiple .body:before{border-left:1px solid var(--vscode-editorHoverWidget-border);content:"";display:block;height:100%;opacity:.5;position:absolute}.monaco-editor .parameter-hints-widget p,.monaco-editor .parameter-hints-widget ul{margin:8px 0}.monaco-editor .parameter-hints-widget .body,.monaco-editor .parameter-hints-widget .monaco-scrollable-element{display:flex;flex:1 1;flex-direction:column;min-height:100%}.monaco-editor .parameter-hints-widget .signature{padding:4px 5px;position:relative}.monaco-editor .parameter-hints-widget .signature.has-docs:after{border-bottom:1px solid var(--vscode-editorHoverWidget-border);content:"";display:block;left:0;opacity:.5;padding-top:4px;position:absolute;width:100%}.monaco-editor .parameter-hints-widget .docs{padding:0 10px 0 5px;white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs.empty{display:none}.monaco-editor .parameter-hints-widget .docs a{color:var(--vscode-textLink-foreground)}.monaco-editor .parameter-hints-widget .docs a:hover{color:var(--vscode-textLink-activeForeground);cursor:pointer}.monaco-editor .parameter-hints-widget .docs .markdown-docs{white-space:normal}.monaco-editor .parameter-hints-widget .docs code{background-color:var(--vscode-textCodeBlock-background);border-radius:3px;font-family:var(--monaco-monospace-font);padding:0 .4em}.monaco-editor .parameter-hints-widget .docs .code,.monaco-editor .parameter-hints-widget .docs .monaco-tokenized-source{white-space:pre-wrap}.monaco-editor .parameter-hints-widget .controls{align-items:center;display:none;flex-direction:column;justify-content:flex-end;min-width:22px}.monaco-editor .parameter-hints-widget.multiple .controls{display:flex;padding:0 2px}.monaco-editor .parameter-hints-widget.multiple .button{background-repeat:no-repeat;cursor:pointer;height:16px;width:16px}.monaco-editor .parameter-hints-widget .button.previous{bottom:24px}.monaco-editor .parameter-hints-widget .overloads{font-family:var(--monaco-monospace-font);height:12px;line-height:12px;text-align:center}.monaco-editor .parameter-hints-widget .signature .parameter.active{color:var(--vscode-editorHoverWidget-highlightForeground);font-weight:700}.monaco-editor .parameter-hints-widget .documentation-parameter>.parameter{font-weight:700;margin-right:.5em}.monaco-editor .rename-box{border-radius:4px;color:inherit;z-index:100}.monaco-editor .rename-box.preview{padding:4px 4px 0}.monaco-editor .rename-box .rename-input{border-radius:2px;padding:3px;width:calc(100% - 8px)}.monaco-editor .rename-box .rename-label{display:none;opacity:.8}.monaco-editor .rename-box.preview .rename-label{display:inherit}.monaco-editor .sticky-widget{overflow:hidden}.monaco-editor .sticky-widget-line-numbers{background-color:inherit;float:left}.monaco-editor .sticky-widget-lines-scrollable{background-color:inherit;display:inline-block;overflow:hidden;position:absolute;width:var(--vscode-editorStickyScroll-scrollableWidth)}.monaco-editor .sticky-widget-lines{background-color:inherit;position:absolute}.monaco-editor .sticky-line-content,.monaco-editor .sticky-line-number{background-color:inherit;color:var(--vscode-editorLineNumber-foreground);display:inline-block;position:absolute;white-space:nowrap}.monaco-editor .sticky-line-number .codicon-folding-collapsed,.monaco-editor .sticky-line-number .codicon-folding-expanded{float:right;transition:var(--vscode-editorStickyScroll-foldingOpacityTransition)}.monaco-editor .sticky-line-content{background-color:inherit;white-space:nowrap;width:var(--vscode-editorStickyScroll-scrollableWidth)}.monaco-editor .sticky-line-number-inner{display:inline-block;text-align:right}.monaco-editor .sticky-widget{border-bottom:1px solid var(--vscode-editorStickyScroll-border)}.monaco-editor .sticky-line-content:hover{background-color:var(--vscode-editorStickyScrollHover-background);cursor:pointer}.monaco-editor .sticky-widget{background-color:var(--vscode-editorStickyScroll-background);box-shadow:var(--vscode-editorStickyScroll-shadow) 0 3px 2px -2px;width:100%;z-index:4}.monaco-editor .sticky-widget.peek{background-color:var(--vscode-peekViewEditorStickyScroll-background)}.monaco-editor .unicode-highlight{background-color:var(--vscode-editorUnicodeHighlight-background);border:1px solid var(--vscode-editorUnicodeHighlight-border);box-sizing:border-box}.editor-banner{background:var(--vscode-banner-background);box-sizing:border-box;cursor:default;display:flex;font-size:12px;height:26px;overflow:visible;width:100%}.editor-banner .icon-container{align-items:center;display:flex;flex-shrink:0;padding:0 6px 0 10px}.editor-banner .icon-container.custom-icon{background-position:50%;background-repeat:no-repeat;background-size:16px;margin:0 6px 0 10px;padding:0;width:16px}.editor-banner .message-container{align-items:center;display:flex;line-height:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-banner .message-container p{margin-block-end:0;margin-block-start:0}.editor-banner .message-actions-container{flex-grow:1;flex-shrink:0;line-height:26px;margin:0 4px}.editor-banner .message-actions-container a.monaco-button{margin:2px 8px;padding:0 12px;width:inherit}.editor-banner .message-actions-container a{margin-left:12px;padding:3px;text-decoration:underline}.editor-banner .action-container{padding:0 10px 0 6px}.editor-banner{background-color:var(--vscode-banner-background)}.editor-banner,.editor-banner .action-container .codicon,.editor-banner .message-actions-container .monaco-link{color:var(--vscode-banner-foreground)}.editor-banner .icon-container .codicon{color:var(--vscode-banner-iconForeground)}.monaco-link{color:var(--vscode-textLink-foreground)}.monaco-link:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .iPadShowKeyboard{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4LjAzNiA0LjAxSDQuMDA4VjMyLjAzaDQ0LjAyOFY0LjAxWk00LjAwOC4wMDhBNC4wMDMgNC4wMDMgMCAwIDAgLjAwNSA0LjAxVjMyLjAzYTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAgMCA0LjAwMy00LjAwMlY0LjAxQTQuMDAzIDQuMDAzIDAgMCAwIDQ4LjAzNi4wMDhINC4wMDhaTTguMDEgOC4wMTNoNC4wMDN2NC4wMDNIOC4wMVY4LjAxM1ptMTIuMDA4IDBoLTQuMDAydjQuMDAzaDQuMDAyVjguMDEzWm00LjAwMyAwaDQuMDAydjQuMDAzaC00LjAwMlY4LjAxM1ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzVjguMDEzWm00LjAwMiAwaDQuMDAzdjQuMDAzSDQwLjAzVjguMDEzWm0tMjQuMDE1IDguMDA1SDguMDF2NC4wMDNoOC4wMDZ2LTQuMDAzWm00LjAwMiAwaDQuMDAzdjQuMDAzaC00LjAwM3YtNC4wMDNabTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3YtNC4wMDNabTEyLjAwOCAwdjQuMDAzaC04LjAwNXYtNC4wMDNoOC4wMDVabS0zMi4wMjEgOC4wMDVIOC4wMXY0LjAwM2g0LjAwM3YtNC4wMDNabTQuMDAzIDBoMjAuMDEzdjQuMDAzSDE2LjAxNnYtNC4wMDNabTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzdi00LjAwM1oiIGZpbGw9IiM0MjQyNDIiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+) 50% no-repeat;border:4px solid #f6f6f6;border-radius:4px;height:36px;margin:0;min-height:0;min-width:0;overflow:hidden;padding:0;position:absolute;resize:none;width:58px}.monaco-editor.vs-dark .iPadShowKeyboard{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4LjAzNiA0LjAxSDQuMDA4VjMyLjAzaDQ0LjAyOFY0LjAxWk00LjAwOC4wMDhBNC4wMDMgNC4wMDMgMCAwIDAgLjAwNSA0LjAxVjMyLjAzYTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAgMCA0LjAwMy00LjAwMlY0LjAxQTQuMDAzIDQuMDAzIDAgMCAwIDQ4LjAzNi4wMDhINC4wMDhaTTguMDEgOC4wMTNoNC4wMDN2NC4wMDNIOC4wMVY4LjAxM1ptMTIuMDA4IDBoLTQuMDAydjQuMDAzaDQuMDAyVjguMDEzWm00LjAwMyAwaDQuMDAydjQuMDAzaC00LjAwMlY4LjAxM1ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzVjguMDEzWm00LjAwMiAwaDQuMDAzdjQuMDAzSDQwLjAzVjguMDEzWm0tMjQuMDE1IDguMDA1SDguMDF2NC4wMDNoOC4wMDZ2LTQuMDAzWm00LjAwMiAwaDQuMDAzdjQuMDAzaC00LjAwM3YtNC4wMDNabTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3YtNC4wMDNabTEyLjAwOCAwdjQuMDAzaC04LjAwNXYtNC4wMDNoOC4wMDVabS0zMi4wMjEgOC4wMDVIOC4wMXY0LjAwM2g0LjAwM3YtNC4wMDNabTQuMDAzIDBoMjAuMDEzdjQuMDAzSDE2LjAxNnYtNC4wMDNabTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzdi00LjAwM1oiIGZpbGw9IiNDNUM1QzUiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+) 50% no-repeat;border:4px solid #252526}.monaco-editor .tokens-inspect-widget{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);padding:10px;user-select:text;-webkit-user-select:text;z-index:50}.monaco-editor.hc-black .tokens-inspect-widget,.monaco-editor.hc-light .tokens-inspect-widget{border-width:2px}.monaco-editor .tokens-inspect-widget .tokens-inspect-separator{background-color:var(--vscode-editorHoverWidget-border);border:0;height:1px}.monaco-editor .tokens-inspect-widget .tm-token{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget .tm-token-length{float:right;font-size:60%;font-weight:400}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:var(--monaco-monospace-font);text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:var(--monaco-monospace-font)} \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/css/8546.65946fb2.chunk.css b/ydb/core/viewer/monitoring/static/css/8546.65946fb2.chunk.css deleted file mode 100644 index d9274e2adca3..000000000000 --- a/ydb/core/viewer/monitoring/static/css/8546.65946fb2.chunk.css +++ /dev/null @@ -1,2 +0,0 @@ -.yc-card{--yc-card-box-shadow:none;--yc-card-border-radius:8px;background-color:initial;border-radius:var(--yc-card-border-radius);box-shadow:var(--yc-card-box-shadow);box-sizing:border-box;outline:none}.yc-card_type_action{--yc-card-box-shadow:0px 1px 5px var(--g-color-sfx-shadow);background-color:var(--g-color-base-float)}.yc-card_type_action:after{border-radius:var(--yc-card-border-radius);bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0}.yc-card_type_action.yc-card_clickable{cursor:pointer;position:relative}.yc-card_type_action.yc-card_clickable:hover{--yc-card-box-shadow:0px 3px 10px var(--g-color-sfx-shadow)}.yc-card_type_action.yc-card_clickable:focus:after{box-shadow:0 0 0 2px var(--g-color-line-focus);content:""}.yc-card_type_action.yc-card_clickable:focus:not(:focus-visible):after{box-shadow:none}.yc-card_type_selection{border:1px solid var(--g-color-line-generic);position:relative}.yc-card_type_selection:before{bottom:-1px;left:-1px;right:-1px;top:-1px}.yc-card_type_selection:after,.yc-card_type_selection:before{border-radius:var(--yc-card-border-radius);pointer-events:none;position:absolute}.yc-card_type_selection:after{bottom:0;left:0;right:0;top:0}.yc-card_type_selection.yc-card_clickable{cursor:pointer}.yc-card_type_selection.yc-card_clickable:hover{border-color:transparent}.yc-card_type_selection.yc-card_clickable:hover:before{border:2px solid var(--g-color-line-brand);content:"";opacity:.5}.yc-card_type_selection.yc-card_clickable:hover:focus-visible:before{border-color:transparent}.yc-card_type_selection.yc-card_clickable:focus:after{box-shadow:0 0 0 2px var(--g-color-line-focus);content:""}.yc-card_type_selection.yc-card_clickable:focus:not(:focus-visible):after{box-shadow:none}.yc-card_type_selection.yc-card_selected:not(.yc-card_disabled){border-color:transparent}.yc-card_type_selection.yc-card_selected:not(.yc-card_disabled):before{border:2px solid var(--g-color-line-brand);content:""}.yc-card_type_selection.yc-card_view_clear{border-color:transparent}.yc-card_type_container.yc-card_theme_normal.yc-card_view_outlined{border:1px solid var(--g-color-line-generic)}.yc-card_type_container.yc-card_theme_normal.yc-card_view_filled{background-color:var(--g-color-base-generic)}.yc-card_type_container.yc-card_theme_info.yc-card_view_outlined{border:1px solid var(--g-color-line-info)}.yc-card_type_container.yc-card_theme_info.yc-card_view_filled{background-color:var(--g-color-base-info-light)}.yc-card_type_container.yc-card_theme_positive.yc-card_view_outlined,.yc-card_type_container.yc-card_theme_success.yc-card_view_outlined{border:1px solid var(--g-color-line-positive)}.yc-card_type_container.yc-card_theme_positive.yc-card_view_filled,.yc-card_type_container.yc-card_theme_success.yc-card_view_filled{background-color:var(--g-color-base-positive-light)}.yc-card_type_container.yc-card_theme_warning.yc-card_view_outlined{border:1px solid var(--g-color-line-warning)}.yc-card_type_container.yc-card_theme_warning.yc-card_view_filled{background-color:var(--g-color-base-warning-light)}.yc-card_type_container.yc-card_theme_danger.yc-card_view_outlined{border:1px solid var(--g-color-line-danger)}.yc-card_type_container.yc-card_theme_danger.yc-card_view_filled{background-color:var(--g-color-base-danger-light)}.yc-card_type_container.yc-card_theme_utility.yc-card_view_outlined{border:1px solid var(--g-color-line-utility)}.yc-card_type_container.yc-card_theme_utility.yc-card_view_filled{background-color:var(--g-color-base-utility-light)}.yc-card_type_container.yc-card_view_raised{background-color:var(--g-color-base-float)}.yc-card_type_container.yc-card_view_raised.yc-card_size_m{--yc-card-box-shadow:0px 1px 5px var(--g-color-sfx-shadow)}.yc-card_type_container.yc-card_view_raised.yc-card_size_l{--yc-card-box-shadow:0px 1px 6px var(--g-color-sfx-shadow-light),1px 3px 13px var(--g-color-sfx-shadow-light)}.yc-card_size_m{--yc-card-border-radius:8px}.yc-card_size_l{--yc-card-border-radius:16px}.yc-alert{--yc-alert-border-radius:var(--yc-card-border-radius,8px);border-radius:var(--yc-alert-border-radius)}.yc-alert_corners_square{--yc-alert-border-radius:0px}.yc-alert__text-content{width:100%}.yc-alert__actions_minContent{width:-webkit-min-content;width:min-content}.yc-s__m_0{margin:var(--g-spacing-0)}.yc-s__mr_0{margin-right:var(--g-spacing-0)}.yc-s__ml_0{margin-left:var(--g-spacing-0)}.yc-s__mt_0{margin-top:var(--g-spacing-0)}.yc-s__mb_0{margin-bottom:var(--g-spacing-0)}.yc-s__mx_0{margin-left:var(--g-spacing-0);margin-right:var(--g-spacing-0)}.yc-s__my_0{margin-bottom:var(--g-spacing-0);margin-top:var(--g-spacing-0)}.yc-s__p_0{padding:var(--g-spacing-0)}.yc-s__pl_0{padding-left:var(--g-spacing-0)}.yc-s__pr_0{padding-right:var(--g-spacing-0)}.yc-s__pb_0{padding-bottom:var(--g-spacing-0)}.yc-s__pt_0,.yc-s__py_0{padding-top:var(--g-spacing-0)}.yc-s__py_0{padding-bottom:var(--g-spacing-0)}.yc-s__px_0{padding-left:var(--g-spacing-0);padding-right:var(--g-spacing-0)}.yc-s__m_half{margin:var(--g-spacing-half)}.yc-s__mr_half{margin-right:var(--g-spacing-half)}.yc-s__ml_half{margin-left:var(--g-spacing-half)}.yc-s__mt_half{margin-top:var(--g-spacing-half)}.yc-s__mb_half{margin-bottom:var(--g-spacing-half)}.yc-s__mx_half{margin-left:var(--g-spacing-half);margin-right:var(--g-spacing-half)}.yc-s__my_half{margin-bottom:var(--g-spacing-half);margin-top:var(--g-spacing-half)}.yc-s__p_half{padding:var(--g-spacing-half)}.yc-s__pl_half{padding-left:var(--g-spacing-half)}.yc-s__pr_half{padding-right:var(--g-spacing-half)}.yc-s__pb_half{padding-bottom:var(--g-spacing-half)}.yc-s__pt_half,.yc-s__py_half{padding-top:var(--g-spacing-half)}.yc-s__py_half{padding-bottom:var(--g-spacing-half)}.yc-s__px_half{padding-left:var(--g-spacing-half);padding-right:var(--g-spacing-half)}.yc-s__m_1{margin:var(--g-spacing-1)}.yc-s__mr_1{margin-right:var(--g-spacing-1)}.yc-s__ml_1{margin-left:var(--g-spacing-1)}.yc-s__mt_1{margin-top:var(--g-spacing-1)}.yc-s__mb_1{margin-bottom:var(--g-spacing-1)}.yc-s__mx_1{margin-left:var(--g-spacing-1);margin-right:var(--g-spacing-1)}.yc-s__my_1{margin-bottom:var(--g-spacing-1);margin-top:var(--g-spacing-1)}.yc-s__p_1{padding:var(--g-spacing-1)}.yc-s__pl_1{padding-left:var(--g-spacing-1)}.yc-s__pr_1{padding-right:var(--g-spacing-1)}.yc-s__pb_1{padding-bottom:var(--g-spacing-1)}.yc-s__pt_1,.yc-s__py_1{padding-top:var(--g-spacing-1)}.yc-s__py_1{padding-bottom:var(--g-spacing-1)}.yc-s__px_1{padding-left:var(--g-spacing-1);padding-right:var(--g-spacing-1)}.yc-s__m_2{margin:var(--g-spacing-2)}.yc-s__mr_2{margin-right:var(--g-spacing-2)}.yc-s__ml_2{margin-left:var(--g-spacing-2)}.yc-s__mt_2{margin-top:var(--g-spacing-2)}.yc-s__mb_2{margin-bottom:var(--g-spacing-2)}.yc-s__mx_2{margin-left:var(--g-spacing-2);margin-right:var(--g-spacing-2)}.yc-s__my_2{margin-bottom:var(--g-spacing-2);margin-top:var(--g-spacing-2)}.yc-s__p_2{padding:var(--g-spacing-2)}.yc-s__pl_2{padding-left:var(--g-spacing-2)}.yc-s__pr_2{padding-right:var(--g-spacing-2)}.yc-s__pb_2{padding-bottom:var(--g-spacing-2)}.yc-s__pt_2,.yc-s__py_2{padding-top:var(--g-spacing-2)}.yc-s__py_2{padding-bottom:var(--g-spacing-2)}.yc-s__px_2{padding-left:var(--g-spacing-2);padding-right:var(--g-spacing-2)}.yc-s__m_3{margin:var(--g-spacing-3)}.yc-s__mr_3{margin-right:var(--g-spacing-3)}.yc-s__ml_3{margin-left:var(--g-spacing-3)}.yc-s__mt_3{margin-top:var(--g-spacing-3)}.yc-s__mb_3{margin-bottom:var(--g-spacing-3)}.yc-s__mx_3{margin-left:var(--g-spacing-3);margin-right:var(--g-spacing-3)}.yc-s__my_3{margin-bottom:var(--g-spacing-3);margin-top:var(--g-spacing-3)}.yc-s__p_3{padding:var(--g-spacing-3)}.yc-s__pl_3{padding-left:var(--g-spacing-3)}.yc-s__pr_3{padding-right:var(--g-spacing-3)}.yc-s__pb_3{padding-bottom:var(--g-spacing-3)}.yc-s__pt_3,.yc-s__py_3{padding-top:var(--g-spacing-3)}.yc-s__py_3{padding-bottom:var(--g-spacing-3)}.yc-s__px_3{padding-left:var(--g-spacing-3);padding-right:var(--g-spacing-3)}.yc-s__m_4{margin:var(--g-spacing-4)}.yc-s__mr_4{margin-right:var(--g-spacing-4)}.yc-s__ml_4{margin-left:var(--g-spacing-4)}.yc-s__mt_4{margin-top:var(--g-spacing-4)}.yc-s__mb_4{margin-bottom:var(--g-spacing-4)}.yc-s__mx_4{margin-left:var(--g-spacing-4);margin-right:var(--g-spacing-4)}.yc-s__my_4{margin-bottom:var(--g-spacing-4);margin-top:var(--g-spacing-4)}.yc-s__p_4{padding:var(--g-spacing-4)}.yc-s__pl_4{padding-left:var(--g-spacing-4)}.yc-s__pr_4{padding-right:var(--g-spacing-4)}.yc-s__pb_4{padding-bottom:var(--g-spacing-4)}.yc-s__pt_4,.yc-s__py_4{padding-top:var(--g-spacing-4)}.yc-s__py_4{padding-bottom:var(--g-spacing-4)}.yc-s__px_4{padding-left:var(--g-spacing-4);padding-right:var(--g-spacing-4)}.yc-s__m_5{margin:var(--g-spacing-5)}.yc-s__mr_5{margin-right:var(--g-spacing-5)}.yc-s__ml_5{margin-left:var(--g-spacing-5)}.yc-s__mt_5{margin-top:var(--g-spacing-5)}.yc-s__mb_5{margin-bottom:var(--g-spacing-5)}.yc-s__mx_5{margin-left:var(--g-spacing-5);margin-right:var(--g-spacing-5)}.yc-s__my_5{margin-bottom:var(--g-spacing-5);margin-top:var(--g-spacing-5)}.yc-s__p_5{padding:var(--g-spacing-5)}.yc-s__pl_5{padding-left:var(--g-spacing-5)}.yc-s__pr_5{padding-right:var(--g-spacing-5)}.yc-s__pb_5{padding-bottom:var(--g-spacing-5)}.yc-s__pt_5,.yc-s__py_5{padding-top:var(--g-spacing-5)}.yc-s__py_5{padding-bottom:var(--g-spacing-5)}.yc-s__px_5{padding-left:var(--g-spacing-5);padding-right:var(--g-spacing-5)}.yc-s__m_6{margin:var(--g-spacing-6)}.yc-s__mr_6{margin-right:var(--g-spacing-6)}.yc-s__ml_6{margin-left:var(--g-spacing-6)}.yc-s__mt_6{margin-top:var(--g-spacing-6)}.yc-s__mb_6{margin-bottom:var(--g-spacing-6)}.yc-s__mx_6{margin-left:var(--g-spacing-6);margin-right:var(--g-spacing-6)}.yc-s__my_6{margin-bottom:var(--g-spacing-6);margin-top:var(--g-spacing-6)}.yc-s__p_6{padding:var(--g-spacing-6)}.yc-s__pl_6{padding-left:var(--g-spacing-6)}.yc-s__pr_6{padding-right:var(--g-spacing-6)}.yc-s__pb_6{padding-bottom:var(--g-spacing-6)}.yc-s__pt_6,.yc-s__py_6{padding-top:var(--g-spacing-6)}.yc-s__py_6{padding-bottom:var(--g-spacing-6)}.yc-s__px_6{padding-left:var(--g-spacing-6);padding-right:var(--g-spacing-6)}.yc-s__m_7{margin:var(--g-spacing-7)}.yc-s__mr_7{margin-right:var(--g-spacing-7)}.yc-s__ml_7{margin-left:var(--g-spacing-7)}.yc-s__mt_7{margin-top:var(--g-spacing-7)}.yc-s__mb_7{margin-bottom:var(--g-spacing-7)}.yc-s__mx_7{margin-left:var(--g-spacing-7);margin-right:var(--g-spacing-7)}.yc-s__my_7{margin-bottom:var(--g-spacing-7);margin-top:var(--g-spacing-7)}.yc-s__p_7{padding:var(--g-spacing-7)}.yc-s__pl_7{padding-left:var(--g-spacing-7)}.yc-s__pr_7{padding-right:var(--g-spacing-7)}.yc-s__pb_7{padding-bottom:var(--g-spacing-7)}.yc-s__pt_7,.yc-s__py_7{padding-top:var(--g-spacing-7)}.yc-s__py_7{padding-bottom:var(--g-spacing-7)}.yc-s__px_7{padding-left:var(--g-spacing-7);padding-right:var(--g-spacing-7)}.yc-s__m_8{margin:var(--g-spacing-8)}.yc-s__mr_8{margin-right:var(--g-spacing-8)}.yc-s__ml_8{margin-left:var(--g-spacing-8)}.yc-s__mt_8{margin-top:var(--g-spacing-8)}.yc-s__mb_8{margin-bottom:var(--g-spacing-8)}.yc-s__mx_8{margin-left:var(--g-spacing-8);margin-right:var(--g-spacing-8)}.yc-s__my_8{margin-bottom:var(--g-spacing-8);margin-top:var(--g-spacing-8)}.yc-s__p_8{padding:var(--g-spacing-8)}.yc-s__pl_8{padding-left:var(--g-spacing-8)}.yc-s__pr_8{padding-right:var(--g-spacing-8)}.yc-s__pb_8{padding-bottom:var(--g-spacing-8)}.yc-s__pt_8,.yc-s__py_8{padding-top:var(--g-spacing-8)}.yc-s__py_8{padding-bottom:var(--g-spacing-8)}.yc-s__px_8{padding-left:var(--g-spacing-8);padding-right:var(--g-spacing-8)}.yc-s__m_9{margin:var(--g-spacing-9)}.yc-s__mr_9{margin-right:var(--g-spacing-9)}.yc-s__ml_9{margin-left:var(--g-spacing-9)}.yc-s__mt_9{margin-top:var(--g-spacing-9)}.yc-s__mb_9{margin-bottom:var(--g-spacing-9)}.yc-s__mx_9{margin-left:var(--g-spacing-9);margin-right:var(--g-spacing-9)}.yc-s__my_9{margin-bottom:var(--g-spacing-9);margin-top:var(--g-spacing-9)}.yc-s__p_9{padding:var(--g-spacing-9)}.yc-s__pl_9{padding-left:var(--g-spacing-9)}.yc-s__pr_9{padding-right:var(--g-spacing-9)}.yc-s__pb_9{padding-bottom:var(--g-spacing-9)}.yc-s__pt_9,.yc-s__py_9{padding-top:var(--g-spacing-9)}.yc-s__py_9{padding-bottom:var(--g-spacing-9)}.yc-s__px_9{padding-left:var(--g-spacing-9);padding-right:var(--g-spacing-9)}.yc-s__m_10{margin:var(--g-spacing-10)}.yc-s__mr_10{margin-right:var(--g-spacing-10)}.yc-s__ml_10{margin-left:var(--g-spacing-10)}.yc-s__mt_10{margin-top:var(--g-spacing-10)}.yc-s__mb_10{margin-bottom:var(--g-spacing-10)}.yc-s__mx_10{margin-left:var(--g-spacing-10);margin-right:var(--g-spacing-10)}.yc-s__my_10{margin-bottom:var(--g-spacing-10);margin-top:var(--g-spacing-10)}.yc-s__p_10{padding:var(--g-spacing-10)}.yc-s__pl_10{padding-left:var(--g-spacing-10)}.yc-s__pr_10{padding-right:var(--g-spacing-10)}.yc-s__pb_10{padding-bottom:var(--g-spacing-10)}.yc-s__pt_10,.yc-s__py_10{padding-top:var(--g-spacing-10)}.yc-s__py_10{padding-bottom:var(--g-spacing-10)}.yc-s__px_10{padding-left:var(--g-spacing-10);padding-right:var(--g-spacing-10)} -/*# sourceMappingURL=8546.65946fb2.chunk.css.map*/ \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/css/main.a322fb8b.css b/ydb/core/viewer/monitoring/static/css/main.a322fb8b.css deleted file mode 100644 index f41dc52d754f..000000000000 --- a/ydb/core/viewer/monitoring/static/css/main.a322fb8b.css +++ /dev/null @@ -1,2 +0,0 @@ -@charset "UTF-8";@import url(https://fonts.googleapis.com/css2?family=Rubik&display=swap);.g-root{--g-font-family-sans:"Inter","Helvetica Neue","Helvetica","Arial",sans-serif;--g-font-family-monospace:"Menlo","Monaco","Consolas","Ubuntu Mono","Liberation Mono","DejaVu Sans Mono","Courier New","Courier",monospace;--g-text-body-font-family:var(--g-font-family-sans);--g-text-caption-font-family:var(--g-font-family-sans);--g-text-header-font-family:var(--g-font-family-sans);--g-text-subheader-font-family:var(--g-font-family-sans);--g-text-display-font-family:var(--g-font-family-sans);--g-text-code-font-family:var(--g-font-family-monospace);--g-text-body-font-weight:400;--g-text-caption-font-weight:400;--g-text-header-font-weight:600;--g-text-subheader-font-weight:600;--g-text-display-font-weight:600;--g-text-code-font-weight:400;--g-text-accent-font-weight:600;--g-text-body-1-font-size:13px;--g-text-body-1-line-height:18px;--g-text-body-2-font-size:15px;--g-text-body-2-line-height:20px;--g-text-body-3-font-size:17px;--g-text-body-3-line-height:24px;--g-text-body-short-font-size:13px;--g-text-body-short-line-height:16px;--g-text-caption-1-font-size:9px;--g-text-caption-1-line-height:12px;--g-text-caption-2-font-size:11px;--g-text-caption-2-line-height:16px;--g-text-header-1-font-size:20px;--g-text-header-1-line-height:24px;--g-text-header-2-font-size:24px;--g-text-header-2-line-height:28px;--g-text-subheader-1-font-size:13px;--g-text-subheader-1-line-height:18px;--g-text-subheader-2-font-size:15px;--g-text-subheader-2-line-height:20px;--g-text-subheader-3-font-size:17px;--g-text-subheader-3-line-height:24px;--g-text-display-1-font-size:28px;--g-text-display-1-line-height:36px;--g-text-display-2-font-size:32px;--g-text-display-2-line-height:40px;--g-text-display-3-font-size:40px;--g-text-display-3-line-height:48px;--g-text-display-4-font-size:48px;--g-text-display-4-line-height:52px;--g-text-code-1-font-size:12px;--g-text-code-1-line-height:18px;--g-text-code-2-font-size:14px;--g-text-code-2-line-height:20px;--g-text-code-3-font-size:16px;--g-text-code-3-line-height:24px;--g-text-code-inline-1-font-size:12px;--g-text-code-inline-1-line-height:14px;--g-text-code-inline-2-font-size:14px;--g-text-code-inline-2-line-height:16px;--g-text-code-inline-3-font-size:16px;--g-text-code-inline-3-line-height:20px;--g-spacing-base:4px;--g-spacing-0:calc(var(--g-spacing-base)*0);--g-spacing-half:calc(var(--g-spacing-base)*0.5);--g-spacing-1:var(--g-spacing-base);--g-spacing-2:calc(var(--g-spacing-base)*2);--g-spacing-3:calc(var(--g-spacing-base)*3);--g-spacing-4:calc(var(--g-spacing-base)*4);--g-spacing-5:calc(var(--g-spacing-base)*5);--g-spacing-6:calc(var(--g-spacing-base)*6);--g-spacing-7:calc(var(--g-spacing-base)*7);--g-spacing-8:calc(var(--g-spacing-base)*8);--g-spacing-9:calc(var(--g-spacing-base)*9);--g-spacing-10:calc(var(--g-spacing-base)*10);--g-scrollbar-width:12px;--g-border-radius-xs:3px;--g-border-radius-s:5px;--g-border-radius-m:6px;--g-border-radius-l:8px;--g-border-radius-xl:10px;--g-focus-border-radius:2px;--yc-font-family-sans:var(--g-font-family-sans);--yc-font-family-monospace:var(--g-font-family-monospace);--yc-text-body-font-family:var(--g-text-body-font-family);--yc-text-code-font-family:var(--g-text-code-font-family);--yc-text-header-font-weight:var(--g-text-header-font-weight);--yc-text-subheader-font-weight:var(--g-text-subheader-font-weight);--yc-text-display-font-weight:var(--g-text-display-font-weight);--yc-text-code-font-weight:var(--g-text-code-font-weight);--yc-text-body-font-weight:var(--g-text-body-font-weight);--yc-text-caption-font-weight:var(--g-text-caption-font-weight);--yc-text-accent-font-weight:var(--g-text-accent-font-weight);--yc-text-body-1-font-size:var(--g-text-body-1-font-size);--yc-text-body-1-line-height:var(--g-text-body-1-line-height);--yc-text-body-2-font-size:var(--g-text-body-2-font-size);--yc-text-body-2-line-height:var(--g-text-body-2-line-height);--yc-text-body-3-font-size:var(--g-text-body-3-font-size);--yc-text-body-3-line-height:var(--g-text-body-3-line-height);--yc-text-body-short-font-size:var(--g-text-body-short-font-size);--yc-text-body-short-line-height:var(--g-text-body-short-line-height);--yc-text-caption-1-font-size:var(--g-text-caption-1-font-size);--yc-text-caption-1-line-height:var(--g-text-caption-1-line-height);--yc-text-caption-2-font-size:var(--g-text-caption-2-font-size);--yc-text-caption-2-line-height:var(--g-text-caption-2-line-height);--yc-text-header-1-font-size:var(--g-text-header-1-font-size);--yc-text-header-1-line-height:var(--g-text-header-1-line-height);--yc-text-header-2-font-size:var(--g-text-header-2-font-size);--yc-text-header-2-line-height:var(--g-text-header-2-line-height);--yc-text-subheader-1-font-size:var(--g-text-subheader-1-font-size);--yc-text-subheader-1-line-height:var(--g-text-subheader-1-line-height);--yc-text-subheader-2-font-size:var(--g-text-subheader-2-font-size);--yc-text-subheader-2-line-height:var(--g-text-subheader-2-line-height);--yc-text-subheader-3-font-size:var(--g-text-subheader-3-font-size);--yc-text-subheader-3-line-height:var(--g-text-subheader-3-line-height);--yc-text-display-1-font-size:var(--g-text-display-1-font-size);--yc-text-display-1-line-height:var(--g-text-display-1-line-height);--yc-text-display-2-font-size:var(--g-text-display-2-font-size);--yc-text-display-2-line-height:var(--g-text-display-2-line-height);--yc-text-display-3-font-size:var(--g-text-display-3-font-size);--yc-text-display-3-line-height:var(--g-text-display-3-line-height);--yc-text-display-4-font-size:var(--g-text-display-4-font-size);--yc-text-display-4-line-height:var(--g-text-display-4-line-height);--yc-text-code-1-font-size:var(--g-text-code-1-font-size);--yc-text-code-1-line-height:var(--g-text-code-1-line-height);--yc-text-code-2-font-size:var(--g-text-code-2-font-size);--yc-text-code-2-line-height:var(--g-text-code-2-line-height);--yc-text-code-3-font-size:var(--g-text-code-3-font-size);--yc-text-code-3-line-height:var(--g-text-code-3-line-height);--yc-text-code-inline-1-font-size:var(--g-text-code-inline-1-font-size);--yc-text-code-inline-1-line-height:var(--g-text-code-inline-1-line-height);--yc-text-code-inline-2-font-size:var(--g-text-code-inline-2-font-size);--yc-text-code-inline-2-line-height:var(--g-text-code-inline-2-line-height);--yc-text-code-inline-3-font-size:var(--g-text-code-inline-3-font-size);--yc-text-code-inline-3-line-height:var(--g-text-code-inline-3-line-height);--yc-spacing-base:var(--g-spacing-base);--yc-space-base:var(--yc-spacing-base);--yc-spacing-0:var(--g-spacing-0);--yc-spacing-half:var(--g-spacing-half);--yc-spacing-1:var(--g-spacing-1);--yc-spacing-2:var(--g-spacing-2);--yc-spacing-3:var(--g-spacing-3);--yc-spacing-4:var(--g-spacing-4);--yc-spacing-5:var(--g-spacing-5);--yc-spacing-6:var(--g-spacing-6);--yc-spacing-7:var(--g-spacing-7);--yc-spacing-8:var(--g-spacing-8);--yc-spacing-9:var(--g-spacing-9);--yc-spacing-10:var(--g-spacing-10);--yc-color-base-background:var(--g-color-base-background);--yc-color-base-generic:var(--g-color-base-generic);--yc-color-base-generic-hover:var(--g-color-base-generic-hover);--yc-color-base-generic-medium:var(--g-color-base-generic-medium);--yc-color-base-generic-medium-hover:var(--g-color-base-generic-medium-hover);--yc-color-base-generic-accent:var(--g-color-base-generic-accent);--yc-color-base-generic-accent-disabled:var(--g-color-base-generic-accent-disabled);--yc-color-base-generic-ultralight:var(--g-color-base-generic-ultralight);--yc-color-base-simple-hover:var(--g-color-base-simple-hover);--yc-color-base-simple-hover-solid:var(--g-color-base-simple-hover-solid);--yc-color-base-selection:var(--g-color-base-selection);--yc-color-base-selection-hover:var(--g-color-base-selection-hover);--yc-color-base-special:var(--g-color-base-brand);--yc-color-base-special-hover:var(--g-color-base-brand-hover);--yc-color-base-action:var(--g-color-base-brand);--yc-color-base-action-hover:var(--g-color-base-brand-hover);--yc-color-base-info:var(--g-color-base-info-light);--yc-color-base-info-hover:var(--g-color-base-info-light-hover);--yc-color-base-positive:var(--g-color-base-positive-light);--yc-color-base-positive-hover:var(--g-color-base-positive-light-hover);--yc-color-base-warning:var(--g-color-base-warning-light);--yc-color-base-warning-hover:var(--g-color-base-warning-light-hover);--yc-color-base-danger:var(--g-color-base-danger-light);--yc-color-base-danger-hover:var(--g-color-base-danger-light-hover);--yc-color-base-misc:var(--g-color-base-misc-light);--yc-color-base-misc-hover:var(--g-color-base-misc-light-hover);--yc-color-base-neutral:var(--g-color-base-neutral-light);--yc-color-base-neutral-hover:var(--g-color-base-neutral-light-hover);--yc-color-base-positive-medium:var(--g-color-base-positive-medium);--yc-color-base-positive-medium-hover:var(--g-color-base-positive-medium-hover);--yc-color-base-info-heavy:var(--g-color-base-info-heavy);--yc-color-base-positive-heavy:var(--g-color-base-positive-heavy);--yc-color-base-warning-heavy:var(--g-color-base-warning-heavy);--yc-color-base-warning-heavy-hover:var(--g-color-base-warning-heavy-hover);--yc-color-base-danger-heavy:var(--g-color-base-danger-heavy);--yc-color-base-danger-heavy-hover:var(--g-color-base-danger-heavy-hover);--yc-color-base-misc-heavy:var(--g-color-base-misc-heavy);--yc-color-base-misc-heavy-hover:var(--g-color-base-misc-heavy-hover);--yc-color-base-light:var(--g-color-base-light);--yc-color-base-light-hover:var(--g-color-base-light-hover);--yc-color-base-light-simple-hover:var(--g-color-base-light-simple-hover);--yc-color-base-light-disabled:var(--g-color-base-light-disabled);--yc-color-base-light-accent-disabled:var(--g-color-base-light-accent-disabled);--yc-color-base-float:var(--g-color-base-float);--yc-color-base-float-hover:var(--g-color-base-float-hover);--yc-color-base-float-heavy:var(--g-color-base-float-heavy);--yc-color-base-float-accent:var(--g-color-base-float-accent);--yc-color-base-float-accent-hover:var(--g-color-base-float-accent-hover);--yc-color-base-float-announcement:var(--g-color-base-float-announcement);--yc-color-base-modal:var(--g-color-base-modal);--yc-color-line-generic:var(--g-color-line-generic);--yc-color-line-generic-hover:var(--g-color-line-generic-hover);--yc-color-line-generic-active:var(--g-color-line-generic-active);--yc-color-line-generic-accent:var(--g-color-line-generic-accent);--yc-color-line-generic-accent-hover:var(--g-color-line-generic-accent-hover);--yc-color-line-solid:var(--g-color-line-generic-solid);--yc-color-line-selection-hover:var(--g-color-private-blue-300);--yc-color-line-selection-active:var(--g-color-line-brand);--yc-color-line-link:var(--g-color-line-brand);--yc-color-line-info:var(--g-color-line-info);--yc-color-line-positive:var(--g-color-line-positive);--yc-color-line-warning:var(--g-color-line-warning);--yc-color-line-danger:var(--g-color-line-danger);--yc-color-line-misc:var(--g-color-line-misc);--yc-color-line-hint:var(--g-color-line-brand);--yc-color-line-light:var(--g-color-line-light);--yc-color-sfx-veil:var(--g-color-sfx-veil);--yc-color-sfx-shadow:var(--g-color-sfx-shadow);--yc-color-sfx-shadow-heavy:var(--g-color-sfx-shadow-heavy);--yc-color-sfx-shadow-light:var(--g-color-sfx-shadow-light);--yc-color-sfx-fade:var(--g-color-sfx-fade);--yc-color-scroll-track:var(--g-color-scroll-track);--yc-color-scroll-handle:var(--g-color-scroll-handle);--yc-color-scroll-handle-hover:var(--g-color-scroll-handle-hover);--yc-color-scroll-corner:var(--g-color-scroll-corner);--yc-color-text-primary:var(--g-color-text-primary);--yc-color-text-complementary:var(--g-color-text-complementary);--yc-color-text-secondary:var(--g-color-text-secondary);--yc-color-text-hint:var(--g-color-text-hint);--yc-color-text-info:var(--g-color-text-info);--yc-color-text-positive:var(--g-color-text-positive);--yc-color-text-warning:var(--g-color-text-warning);--yc-color-text-danger:var(--g-color-text-danger);--yc-color-text-utility:var(--g-color-text-utility);--yc-color-text-misc:var(--g-color-text-misc);--yc-color-text-info-heavy:var(--g-color-text-info-heavy);--yc-color-text-positive-heavy:var(--g-color-text-positive-heavy);--yc-color-text-warning-heavy:var(--g-color-text-warning-heavy);--yc-color-text-danger-heavy:var(--g-color-text-danger-heavy);--yc-color-text-utility-heavy:var(--g-color-text-utility-heavy);--yc-color-text-misc-heavy:var(--g-color-text-misc-heavy);--yc-color-text-special:var(--g-color-text-brand);--yc-color-text-link:var(--g-color-text-link);--yc-color-text-link-hover:var(--g-color-text-link-hover);--yc-color-text-link-visited:var(--g-color-text-link-visited);--yc-color-text-link-visited-hover:var(--g-color-text-link-visited-hover);--yc-color-text-yandex-red:var(--g-color-private-red-550-solid);--yc-color-text-dark-primary:var(--g-color-text-dark-primary);--yc-color-text-dark-complementary:var(--g-color-text-dark-complementary);--yc-color-text-dark-secondary:var(--g-color-text-dark-secondary);--yc-color-text-light-primary:var(--g-color-text-light-primary);--yc-color-text-light-complementary:var(--g-color-text-light-complementary);--yc-color-text-light-secondary:var(--g-color-text-light-secondary);--yc-color-text-light-hint:var(--g-color-text-light-hint);--yc-color-text-inverted-primary:var(--g-color-text-inverted-primary);--yc-color-text-inverted-complementary:var(--g-color-text-inverted-complementary);--yc-color-text-inverted-secondary:var(--g-color-text-inverted-secondary);--yc-color-text-inverted-hint:var(--g-color-text-inverted-hint);--yc-color-infographics-info-light:var(--g-color-base-info-light);--yc-color-infographics-positive-light:var(--g-color-base-positive-light);--yc-color-infographics-warning-light:var(--g-color-base-warning-light);--yc-color-infographics-danger-light:var(--g-color-base-danger-light);--yc-color-infographics-misc-light:var(--g-color-base-misc-light);--yc-color-infographics-neutral-light:var(--g-color-base-neutral-light);--yc-color-infographics-info-medium:var(--g-color-base-info-medium);--yc-color-infographics-positive-medium:var(--g-color-base-positive-medium);--yc-color-infographics-warning-medium:var(--g-color-base-warning-medium);--yc-color-infographics-danger-medium:var(--g-color-base-danger-medium);--yc-color-infographics-misc-medium:var(--g-color-base-misc-medium);--yc-color-infographics-neutral-medium:var(--g-color-base-neutral-medium);--yc-color-infographics-info-heavy:var(--g-color-base-info-heavy);--yc-color-infographics-positive-heavy:var(--g-color-base-positive-heavy);--yc-color-infographics-warning-heavy:var(--g-color-base-warning-heavy);--yc-color-infographics-danger-heavy:var(--g-color-base-danger-heavy);--yc-color-infographics-misc-heavy:var(--g-color-base-misc-heavy);--yc-color-infographics-neutral-heavy:var(--g-color-base-neutral-heavy);--yc-color-infographics-axis:var(--g-color-infographics-axis);--yc-color-infographics-tooltip-bg:var(--g-color-infographics-tooltip-bg);background:var(--g-color-base-background);color:var(--g-color-text-primary);font-family:var(--g-font-family-sans);font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.g-root_theme_light{--g-color-private-blue-50:rgba(54,151,241,.1);--g-color-private-blue-100:rgba(54,151,241,.15);--g-color-private-blue-150:rgba(54,151,241,.2);--g-color-private-blue-200:rgba(54,151,241,.3);--g-color-private-blue-250:rgba(54,151,241,.4);--g-color-private-blue-300:rgba(54,151,241,.5);--g-color-private-blue-350:rgba(54,151,241,.6);--g-color-private-blue-400:rgba(54,151,241,.7);--g-color-private-blue-450:rgba(54,151,241,.8);--g-color-private-blue-500:rgba(54,151,241,.9);--g-color-private-blue-50-solid:#ebf5fe;--g-color-private-blue-100-solid:#e1effd;--g-color-private-blue-150-solid:#d7eafc;--g-color-private-blue-200-solid:#c3e0fb;--g-color-private-blue-250-solid:#afd5f9;--g-color-private-blue-300-solid:#9bcbf8;--g-color-private-blue-350-solid:#86c1f7;--g-color-private-blue-400-solid:#72b6f5;--g-color-private-blue-450-solid:#5eacf4;--g-color-private-blue-500-solid:#4aa1f2;--g-color-private-blue-550-solid:#3697f1;--g-color-private-blue-600-solid:#348bdc;--g-color-private-blue-650-solid:#327fc8;--g-color-private-blue-700-solid:#3072b3;--g-color-private-blue-750-solid:#2e669e;--g-color-private-blue-800-solid:#2c5a8a;--g-color-private-blue-850-solid:#2a4e75;--g-color-private-blue-900-solid:#284260;--g-color-private-blue-950-solid:#26354b;--g-color-private-blue-1000-solid:#252f41;--g-color-private-green-50:rgba(50,186,118,.1);--g-color-private-green-100:rgba(50,186,118,.15);--g-color-private-green-150:rgba(50,186,118,.2);--g-color-private-green-200:rgba(50,186,118,.3);--g-color-private-green-250:rgba(50,186,118,.4);--g-color-private-green-300:rgba(50,186,118,.5);--g-color-private-green-350:rgba(50,186,118,.6);--g-color-private-green-400:rgba(50,186,118,.7);--g-color-private-green-450:rgba(50,186,118,.8);--g-color-private-green-500:rgba(50,186,118,.9);--g-color-private-green-50-solid:#ebf8f1;--g-color-private-green-100-solid:#e0f5ea;--g-color-private-green-150-solid:#d6f1e4;--g-color-private-green-200-solid:#c2ead6;--g-color-private-green-250-solid:#ade3c8;--g-color-private-green-300-solid:#9db;--g-color-private-green-350-solid:#84d6ad;--g-color-private-green-400-solid:#70cf9f;--g-color-private-green-450-solid:#5bc891;--g-color-private-green-500-solid:#47c184;--g-color-private-green-550-solid:#32ba76;--g-color-private-green-600-solid:#30aa6e;--g-color-private-green-650-solid:#2f9b65;--g-color-private-green-700-solid:#2d8b5d;--g-color-private-green-750-solid:#2c7b54;--g-color-private-green-800-solid:#2a6c4c;--g-color-private-green-850-solid:#285c44;--g-color-private-green-900-solid:#274c3b;--g-color-private-green-950-solid:#253c33;--g-color-private-green-1000-solid:#24352f;--g-color-private-yellow-50:rgba(255,190,92,.1);--g-color-private-yellow-100:rgba(255,190,92,.15);--g-color-private-yellow-150:rgba(255,190,92,.2);--g-color-private-yellow-200:rgba(255,190,92,.3);--g-color-private-yellow-250:rgba(255,190,92,.4);--g-color-private-yellow-300:rgba(255,190,92,.5);--g-color-private-yellow-350:rgba(255,190,92,.6);--g-color-private-yellow-400:rgba(255,190,92,.7);--g-color-private-yellow-450:rgba(255,190,92,.8);--g-color-private-yellow-500:rgba(255,190,92,.9);--g-color-private-yellow-50-solid:#fff9ef;--g-color-private-yellow-100-solid:#fff5e7;--g-color-private-yellow-150-solid:#fff2de;--g-color-private-yellow-200-solid:#ffecce;--g-color-private-yellow-250-solid:#ffe5be;--g-color-private-yellow-300-solid:#ffdfae;--g-color-private-yellow-350-solid:#ffd89d;--g-color-private-yellow-400-solid:#ffd28d;--g-color-private-yellow-450-solid:#ffcb7d;--g-color-private-yellow-500-solid:#ffc56c;--g-color-private-yellow-550-solid:#ffbe5c;--g-color-private-yellow-600-solid:#e9ae56;--g-color-private-yellow-650-solid:#d39e50;--g-color-private-yellow-700-solid:#bd8e4b;--g-color-private-yellow-750-solid:#a77e45;--g-color-private-yellow-800-solid:#916e3f;--g-color-private-yellow-850-solid:#7a5d39;--g-color-private-yellow-900-solid:#644d33;--g-color-private-yellow-950-solid:#4e3d2e;--g-color-private-yellow-1000-solid:#43352b;--g-color-private-orange-400-solid:#ffa04d;--g-color-private-orange-500-solid:#ff8519;--g-color-private-orange-600-solid:#e96e03;--g-color-private-orange-650-solid:#d36507;--g-color-private-orange-700-solid:#bd5c0a;--g-color-private-orange-750-solid:#a7530e;--g-color-private-orange-800-solid:#914a11;--g-color-private-orange-850-solid:#7a4114;--g-color-private-orange-900-solid:#643818;--g-color-private-orange-950-solid:#4e2f1b;--g-color-private-orange-1000-solid:#432b1d;--g-color-private-red-50:rgba(255,0,61,.1);--g-color-private-red-100:rgba(255,0,61,.15);--g-color-private-red-150:rgba(255,0,61,.2);--g-color-private-red-200:rgba(255,0,61,.3);--g-color-private-red-250:rgba(255,0,61,.4);--g-color-private-red-300:rgba(255,0,61,.5);--g-color-private-red-350:rgba(255,0,61,.6);--g-color-private-red-400:rgba(255,0,61,.7);--g-color-private-red-450:rgba(255,0,61,.8);--g-color-private-red-500:rgba(255,0,61,.9);--g-color-private-red-50-solid:#ffe6ec;--g-color-private-red-100-solid:#ffd9e2;--g-color-private-red-150-solid:#ffccd8;--g-color-private-red-200-solid:#ffb3c5;--g-color-private-red-250-solid:#ff99b1;--g-color-private-red-300-solid:#ff809e;--g-color-private-red-350-solid:#ff668b;--g-color-private-red-400-solid:#ff4d77;--g-color-private-red-450-solid:#ff3364;--g-color-private-red-500-solid:#ff1950;--g-color-private-red-550-solid:#ff003d;--g-color-private-red-600-solid:#e9033a;--g-color-private-red-650-solid:#d30638;--g-color-private-red-700-solid:#bd0935;--g-color-private-red-750-solid:#a70c32;--g-color-private-red-800-solid:#910f30;--g-color-private-red-850-solid:#7a112d;--g-color-private-red-900-solid:#64142a;--g-color-private-red-950-solid:#4e1727;--g-color-private-red-1000-solid:#431926;--g-color-private-purple-600-solid:#844dbb;--g-color-private-purple-650-solid:#7947aa;--g-color-private-purple-700-solid:#6e4299;--g-color-private-purple-750-solid:#633d88;--g-color-private-purple-800-solid:#593877;--g-color-private-purple-850-solid:#4e3266;--g-color-private-purple-900-solid:#432d55;--g-color-private-purple-950-solid:#382844;--g-color-private-purple-1000-solid:#32253c;--g-color-private-cool-grey-300-solid:#b5c2cc;--g-color-private-cool-grey-600-solid:#647a8d;--g-color-private-cool-grey-650-solid:#5c6f81;--g-color-private-cool-grey-700-solid:#556575;--g-color-private-cool-grey-750-solid:#4e5b69;--g-color-private-cool-grey-800-solid:#47515e;--g-color-private-cool-grey-850-solid:#3f4652;--g-color-private-cool-grey-900-solid:#383c46;--g-color-private-cool-grey-950-solid:#31323a;--g-color-private-cool-grey-1000-solid:#2d2c34;--g-color-text-primary:var(--g-color-text-dark-primary);--g-color-text-complementary:var(--g-color-text-dark-complementary);--g-color-text-secondary:var(--g-color-text-dark-secondary);--g-color-text-hint:var(--g-color-text-dark-hint);--g-color-text-info:var(--g-color-private-blue-600-solid);--g-color-text-positive:var(--g-color-private-green-600-solid);--g-color-text-warning:var(--g-color-private-yellow-700-solid);--g-color-text-danger:var(--g-color-private-red-600-solid);--g-color-text-utility:var(--g-color-private-purple-600-solid);--g-color-text-misc:var(--g-color-private-cool-grey-600-solid);--g-color-text-info-heavy:var(--g-color-private-blue-700-solid);--g-color-text-positive-heavy:var(--g-color-private-green-700-solid);--g-color-text-warning-heavy:var(--g-color-private-orange-700-solid);--g-color-text-danger-heavy:var(--g-color-private-red-700-solid);--g-color-text-utility-heavy:var(--g-color-private-purple-700-solid);--g-color-text-misc-heavy:var(--g-color-private-cool-grey-700-solid);--g-color-text-brand:var(--g-color-private-yellow-700-solid);--g-color-text-brand-heavy:var(--g-color-private-orange-700-solid);--g-color-text-brand-contrast:var(--g-color-text-dark-primary);--g-color-text-link:var(--g-color-private-yellow-650-solid);--g-color-text-link-hover:var(--g-color-private-orange-650-solid);--g-color-text-link-visited:var(--g-color-private-purple-550-solid);--g-color-text-link-visited-hover:var(--g-color-private-purple-800-solid);--g-color-text-dark-primary:var(--g-color-private-black-850);--g-color-text-dark-complementary:var(--g-color-private-black-700);--g-color-text-dark-secondary:var(--g-color-private-black-500);--g-color-text-dark-hint:var(--g-color-private-black-300);--g-color-text-light-primary:var(--g-color-private-white-1000-solid);--g-color-text-light-complementary:var(--g-color-private-white-850);--g-color-text-light-secondary:var(--g-color-private-white-700);--g-color-text-light-hint:var(--g-color-private-white-500);--g-color-text-inverted-primary:var(--g-color-text-light-primary);--g-color-text-inverted-complementary:var(--g-color-text-light-complementary);--g-color-text-inverted-secondary:var(--g-color-text-light-secondary);--g-color-text-inverted-hint:var(--g-color-text-light-hint);--g-color-base-background:var(--g-color-private-white-1000-solid);--g-color-base-generic:var(--g-color-private-black-50);--g-color-base-generic-hover:var(--g-color-private-black-150);--g-color-base-generic-medium:var(--g-color-private-black-150);--g-color-base-generic-medium-hover:var(--g-color-private-black-250);--g-color-base-generic-accent:var(--g-color-private-black-150);--g-color-base-generic-accent-disabled:var(--g-color-private-black-70);--g-color-base-generic-ultralight:var(--g-color-private-black-20-solid);--g-color-base-simple-hover:var(--g-color-private-black-50);--g-color-base-simple-hover-solid:var(--g-color-private-black-50-solid);--g-color-base-brand:var(--g-color-private-yellow-550-solid);--g-color-base-brand-hover:var(--g-color-private-yellow-600-solid);--g-color-base-selection:var(--g-color-private-yellow-200);--g-color-base-selection-hover:var(--g-color-private-yellow-300);--g-color-base-info-light:var(--g-color-private-blue-100);--g-color-base-info-light-hover:var(--g-color-private-blue-200);--g-color-base-info-medium:var(--g-color-private-blue-200);--g-color-base-info-medium-hover:var(--g-color-private-blue-300);--g-color-base-info-heavy:var(--g-color-private-blue-600-solid);--g-color-base-info-heavy-hover:var(--g-color-private-blue-700-solid);--g-color-base-positive-light:var(--g-color-private-green-100);--g-color-base-positive-light-hover:var(--g-color-private-green-200);--g-color-base-positive-medium:var(--g-color-private-green-200);--g-color-base-positive-medium-hover:var(--g-color-private-green-300);--g-color-base-positive-heavy:var(--g-color-private-green-600-solid);--g-color-base-positive-heavy-hover:var(--g-color-private-green-700-solid);--g-color-base-warning-light:var(--g-color-private-yellow-200);--g-color-base-warning-light-hover:var(--g-color-private-yellow-300);--g-color-base-warning-medium:var(--g-color-private-yellow-400);--g-color-base-warning-medium-hover:var(--g-color-private-yellow-500);--g-color-base-warning-heavy:var(--g-color-private-yellow-550-solid);--g-color-base-warning-heavy-hover:var(--g-color-private-yellow-650-solid);--g-color-base-danger-light:var(--g-color-private-red-100);--g-color-base-danger-light-hover:var(--g-color-private-red-200);--g-color-base-danger-medium:var(--g-color-private-red-200);--g-color-base-danger-medium-hover:var(--g-color-private-red-300);--g-color-base-danger-heavy:var(--g-color-private-red-600-solid);--g-color-base-danger-heavy-hover:var(--g-color-private-red-700-solid);--g-color-base-utility-light:var(--g-color-private-purple-100);--g-color-base-utility-light-hover:var(--g-color-private-purple-200);--g-color-base-utility-medium:var(--g-color-private-purple-200);--g-color-base-utility-medium-hover:var(--g-color-private-purple-300);--g-color-base-utility-heavy:var(--g-color-private-purple-600-solid);--g-color-base-utility-heavy-hover:var(--g-color-private-purple-700-solid);--g-color-base-neutral-light:var(--g-color-private-black-50);--g-color-base-neutral-light-hover:var(--g-color-private-black-100);--g-color-base-neutral-medium:var(--g-color-private-black-200);--g-color-base-neutral-medium-hover:var(--g-color-private-black-250);--g-color-base-neutral-heavy:var(--g-color-private-black-450);--g-color-base-neutral-heavy-hover:var(--g-color-private-black-550);--g-color-base-misc-light:var(--g-color-private-cool-grey-100);--g-color-base-misc-light-hover:var(--g-color-private-cool-grey-200);--g-color-base-misc-medium:var(--g-color-private-cool-grey-200);--g-color-base-misc-medium-hover:var(--g-color-private-cool-grey-300);--g-color-base-misc-heavy:var(--g-color-private-cool-grey-600-solid);--g-color-base-misc-heavy-hover:var(--g-color-private-cool-grey-700-solid);--g-color-base-light:var(--g-color-private-white-1000-solid);--g-color-base-light-hover:var(--g-color-private-white-850);--g-color-base-light-simple-hover:var(--g-color-private-white-150);--g-color-base-light-disabled:var(--g-color-private-white-150);--g-color-base-light-accent-disabled:var(--g-color-private-white-300);--g-color-base-float:var(--g-color-private-white-1000-solid);--g-color-base-float-hover:var(--g-color-private-black-50-solid);--g-color-base-float-heavy:var(--g-color-private-black-700-solid);--g-color-base-float-accent:var(--g-color-private-white-1000-solid);--g-color-base-float-accent-hover:var(--g-color-private-white-850);--g-color-base-float-announcement:var(--g-color-private-cool-grey-50-solid);--g-color-base-modal:var(--g-color-base-background);--g-color-line-generic:var(--g-color-private-black-100);--g-color-line-generic-hover:var(--g-color-private-black-150);--g-color-line-generic-active:var(--g-color-private-black-300);--g-color-line-generic-accent:var(--g-color-private-black-150);--g-color-line-generic-accent-hover:var(--g-color-private-black-300);--g-color-line-generic-solid:var(--g-color-private-black-100-solid);--g-color-line-brand:var(--g-color-private-yellow-600-solid);--g-color-line-focus:var(--g-color-private-cool-grey-450);--g-color-line-light:var(--g-color-private-white-500);--g-color-line-info:var(--g-color-private-blue-450);--g-color-line-positive:var(--g-color-private-green-450);--g-color-line-warning:var(--g-color-private-yellow-600-solid);--g-color-line-danger:var(--g-color-private-red-450);--g-color-line-utility:var(--g-color-private-purple-450);--g-color-line-misc:var(--g-color-private-cool-grey-450);--g-color-sfx-veil:var(--g-color-private-black-250);--g-color-sfx-shadow:var(--g-color-private-black-150);--g-color-sfx-shadow-heavy:var(--g-color-private-black-500);--g-color-sfx-shadow-light:var(--g-color-private-black-50);--g-color-sfx-fade:var(--g-color-private-white-300);--g-color-scroll-track:var(--g-color-base-background);--g-color-scroll-handle:var(--g-color-private-black-100);--g-color-scroll-handle-hover:var(--g-color-private-black-150);--g-color-scroll-corner:var(--g-color-private-black-100);--g-color-infographics-axis:var(--g-color-private-black-150-solid);--g-color-infographics-tooltip-bg:var(--g-color-private-white-950)}.g-root_theme_dark{--g-color-private-white-50-solid:#2d282d;--g-color-private-white-70-solid:#312d31;--g-color-private-white-100-solid:#383438;--g-color-private-white-150-solid:#433f43;--g-color-private-white-200-solid:#4e4a4e;--g-color-private-white-250-solid:#595559;--g-color-private-white-300-solid:#646164;--g-color-private-white-350-solid:#6f6c6f;--g-color-private-white-400-solid:#7a777a;--g-color-private-white-450-solid:#858385;--g-color-private-white-500-solid:#908e90;--g-color-private-white-550-solid:#9c999c;--g-color-private-white-600-solid:#a7a5a7;--g-color-private-white-650-solid:#b2b0b2;--g-color-private-white-700-solid:#bdbbbd;--g-color-private-white-750-solid:#c8c6c8;--g-color-private-white-800-solid:#d3d2d3;--g-color-private-white-850-solid:#deddde;--g-color-private-white-900-solid:#e9e8e9;--g-color-private-white-950-solid:#f4f4f4;--g-color-private-blue-50:rgba(54,151,241,.1);--g-color-private-blue-100:rgba(54,151,241,.15);--g-color-private-blue-150:rgba(54,151,241,.2);--g-color-private-blue-200:rgba(54,151,241,.3);--g-color-private-blue-250:rgba(54,151,241,.4);--g-color-private-blue-300:rgba(54,151,241,.5);--g-color-private-blue-350:rgba(54,151,241,.6);--g-color-private-blue-400:rgba(54,151,241,.7);--g-color-private-blue-450:rgba(54,151,241,.8);--g-color-private-blue-500:rgba(54,151,241,.9);--g-color-private-blue-50-solid:#242937;--g-color-private-blue-100-solid:#252f41;--g-color-private-blue-150-solid:#26354b;--g-color-private-blue-200-solid:#284260;--g-color-private-blue-250-solid:#2a4e75;--g-color-private-blue-300-solid:#2c5a8a;--g-color-private-blue-350-solid:#2e669e;--g-color-private-blue-400-solid:#3072b3;--g-color-private-blue-450-solid:#327fc8;--g-color-private-blue-500-solid:#348bdc;--g-color-private-blue-550-solid:#3697f1;--g-color-private-blue-600-solid:#4aa1f2;--g-color-private-blue-650-solid:#5eacf4;--g-color-private-blue-700-solid:#72b6f5;--g-color-private-blue-750-solid:#86c1f7;--g-color-private-blue-800-solid:#9bcbf8;--g-color-private-blue-850-solid:#afd5f9;--g-color-private-blue-900-solid:#c3e0fb;--g-color-private-blue-950-solid:#d7eafc;--g-color-private-blue-1000-solid:#e1effd;--g-color-private-green-50:rgba(77,176,155,.1);--g-color-private-green-100:rgba(77,176,155,.15);--g-color-private-green-150:rgba(77,176,155,.2);--g-color-private-green-200:rgba(77,176,155,.3);--g-color-private-green-250:rgba(77,176,155,.4);--g-color-private-green-300:rgba(77,176,155,.5);--g-color-private-green-350:rgba(77,176,155,.6);--g-color-private-green-400:rgba(77,176,155,.7);--g-color-private-green-450:rgba(77,176,155,.8);--g-color-private-green-500:rgba(77,176,155,.9);--g-color-private-green-50-solid:#262c2e;--g-color-private-green-100-solid:#283334;--g-color-private-green-150-solid:#2b3a3a;--g-color-private-green-200-solid:#2f4946;--g-color-private-green-250-solid:#335852;--g-color-private-green-300-solid:#38675f;--g-color-private-green-350-solid:#3c756b;--g-color-private-green-400-solid:#408477;--g-color-private-green-450-solid:#449383;--g-color-private-green-500-solid:#49a18f;--g-color-private-green-550-solid:#4db09b;--g-color-private-green-600-solid:#5fb8a5;--g-color-private-green-650-solid:#71c0af;--g-color-private-green-700-solid:#82c8b9;--g-color-private-green-750-solid:#94d0c3;--g-color-private-green-800-solid:#a6d8cd;--g-color-private-green-850-solid:#b8dfd7;--g-color-private-green-900-solid:#cae7e1;--g-color-private-green-950-solid:#dbefeb;--g-color-private-green-1000-solid:#e4f3f0;--g-color-private-yellow-50:rgba(255,190,92,.1);--g-color-private-yellow-100:rgba(255,190,92,.15);--g-color-private-yellow-150:rgba(255,190,92,.2);--g-color-private-yellow-200:rgba(255,190,92,.3);--g-color-private-yellow-250:rgba(255,190,92,.4);--g-color-private-yellow-300:rgba(255,190,92,.5);--g-color-private-yellow-350:rgba(255,190,92,.6);--g-color-private-yellow-400:rgba(255,190,92,.7);--g-color-private-yellow-450:rgba(255,190,92,.8);--g-color-private-yellow-500:rgba(255,190,92,.9);--g-color-private-yellow-50-solid:#382d28;--g-color-private-yellow-100-solid:#43352b;--g-color-private-yellow-150-solid:#4e3d2e;--g-color-private-yellow-200-solid:#644d33;--g-color-private-yellow-250-solid:#7a5d39;--g-color-private-yellow-300-solid:#916e3f;--g-color-private-yellow-350-solid:#a77e45;--g-color-private-yellow-400-solid:#bd8e4b;--g-color-private-yellow-450-solid:#d39e50;--g-color-private-yellow-500-solid:#e9ae56;--g-color-private-yellow-550-solid:#ffbe5c;--g-color-private-yellow-600-solid:#ffc56c;--g-color-private-yellow-650-solid:#ffcb7d;--g-color-private-yellow-700-solid:#ffd28d;--g-color-private-yellow-750-solid:#ffd89d;--g-color-private-yellow-800-solid:#ffdfae;--g-color-private-yellow-850-solid:#ffe5be;--g-color-private-yellow-900-solid:#ffecce;--g-color-private-yellow-950-solid:#fff2de;--g-color-private-yellow-1000-solid:#fff5e7;--g-color-private-orange-50-solid:#332420;--g-color-private-orange-100-solid:#3b281f;--g-color-private-orange-150-solid:#432b1e;--g-color-private-orange-200-solid:#54321b;--g-color-private-orange-250-solid:#643919;--g-color-private-orange-300-solid:#754017;--g-color-private-orange-350-solid:#864715;--g-color-private-orange-400-solid:#964e13;--g-color-private-orange-450-solid:#a75510;--g-color-private-orange-500-solid:#b75c0e;--g-color-private-orange-700-solid:#d99255;--g-color-private-orange-800-solid:#e4b186;--g-color-private-red-50:rgba(229,50,93,.1);--g-color-private-red-100:rgba(229,50,93,.15);--g-color-private-red-150:rgba(229,50,93,.2);--g-color-private-red-200:rgba(229,50,93,.3);--g-color-private-red-250:rgba(229,50,93,.4);--g-color-private-red-300:rgba(229,50,93,.5);--g-color-private-red-350:rgba(229,50,93,.6);--g-color-private-red-400:rgba(229,50,93,.7);--g-color-private-red-450:rgba(229,50,93,.8);--g-color-private-red-500:rgba(229,50,93,.9);--g-color-private-red-50-solid:#361f28;--g-color-private-red-100-solid:#3f202b;--g-color-private-red-150-solid:#49212e;--g-color-private-red-200-solid:#5d2334;--g-color-private-red-250-solid:#70253a;--g-color-private-red-300-solid:#842840;--g-color-private-red-350-solid:#972a45;--g-color-private-red-400-solid:#ab2c4b;--g-color-private-red-450-solid:#be2e51;--g-color-private-red-500-solid:#d23057;--g-color-private-red-550-solid:#e5325d;--g-color-private-red-600-solid:#e8476d;--g-color-private-red-650-solid:#ea5b7d;--g-color-private-red-700-solid:#ed708e;--g-color-private-red-750-solid:#ef849e;--g-color-private-red-800-solid:#f299ae;--g-color-private-red-850-solid:#f5adbe;--g-color-private-red-900-solid:#f7c2ce;--g-color-private-red-950-solid:#fad6df;--g-color-private-red-1000-solid:#fbe0e7;--g-color-private-purple-50-solid:#2d2233;--g-color-private-purple-100-solid:#32253c;--g-color-private-purple-150-solid:#382844;--g-color-private-purple-200-solid:#432d55;--g-color-private-purple-250-solid:#4e3266;--g-color-private-purple-300-solid:#593877;--g-color-private-purple-350-solid:#633d88;--g-color-private-purple-400-solid:#6e4299;--g-color-private-purple-450-solid:#7947aa;--g-color-private-purple-500-solid:#844dbb;--g-color-private-cool-grey-50-solid:#28272e;--g-color-private-cool-grey-100-solid:#2b2c34;--g-color-private-cool-grey-150-solid:#2e313a;--g-color-private-cool-grey-200-solid:#353b47;--g-color-private-cool-grey-250-solid:#3b4553;--g-color-private-cool-grey-300-solid:#414f5f;--g-color-private-cool-grey-350-solid:#47586b;--g-color-private-cool-grey-400-solid:#4d6277;--g-color-private-cool-grey-450-solid:#546c84;--g-color-private-cool-grey-500-solid:#5a7690;--g-color-private-cool-grey-750-solid:#a0b3c4;--g-color-private-cool-grey-800-solid:#b0c0ce;--g-color-text-primary:var(--g-color-text-light-primary);--g-color-text-complementary:var(--g-color-text-light-complementary);--g-color-text-secondary:var(--g-color-text-light-secondary);--g-color-text-hint:var(--g-color-text-light-hint);--g-color-text-info:var(--g-color-private-blue-550-solid);--g-color-text-positive:var(--g-color-private-green-550-solid);--g-color-text-warning:var(--g-color-private-yellow-550-solid);--g-color-text-danger:var(--g-color-private-red-550-solid);--g-color-text-utility:var(--g-color-private-purple-600-solid);--g-color-text-misc:var(--g-color-private-cool-grey-600-solid);--g-color-text-info-heavy:var(--g-color-private-blue-600-solid);--g-color-text-positive-heavy:var(--g-color-private-green-600-solid);--g-color-text-warning-heavy:var(--g-color-private-yellow-600-solid);--g-color-text-danger-heavy:var(--g-color-private-red-600-solid);--g-color-text-utility-heavy:var(--g-color-private-purple-650-solid);--g-color-text-misc-heavy:var(--g-color-private-cool-grey-650-solid);--g-color-text-brand:var(--g-color-private-yellow-600-solid);--g-color-text-brand-heavy:var(--g-color-private-yellow-700-solid);--g-color-text-brand-contrast:var(--g-color-text-dark-primary);--g-color-text-link:var(--g-color-private-yellow-550-solid);--g-color-text-link-hover:var(--g-color-private-orange-550-solid);--g-color-text-link-visited:var(--g-color-private-purple-600-solid);--g-color-text-link-visited-hover:var(--g-color-private-purple-750-solid);--g-color-text-dark-primary:var(--g-color-private-black-900);--g-color-text-dark-complementary:var(--g-color-private-black-700);--g-color-text-dark-secondary:var(--g-color-private-black-500);--g-color-text-dark-hint:var(--g-color-private-black-300);--g-color-text-light-primary:var(--g-color-private-white-850);--g-color-text-light-complementary:var(--g-color-private-white-700);--g-color-text-light-secondary:var(--g-color-private-white-500);--g-color-text-light-hint:var(--g-color-private-white-300);--g-color-text-inverted-primary:var(--g-color-text-dark-primary);--g-color-text-inverted-complementary:var(--g-color-text-dark-complementary);--g-color-text-inverted-secondary:var(--g-color-text-dark-secondary);--g-color-text-inverted-hint:var(--g-color-text-dark-hint);--g-color-base-background:#221d22;--g-color-base-generic:var(--g-color-private-white-100);--g-color-base-generic-hover:var(--g-color-private-white-150);--g-color-base-generic-medium:var(--g-color-private-white-250);--g-color-base-generic-medium-hover:var(--g-color-private-white-300);--g-color-base-generic-accent:var(--g-color-private-white-150);--g-color-base-generic-accent-disabled:var(--g-color-private-white-70);--g-color-base-generic-ultralight:var(--g-color-private-white-20-solid);--g-color-base-simple-hover:var(--g-color-private-white-100);--g-color-base-simple-hover-solid:var(--g-color-private-white-100-solid);--g-color-base-brand:var(--g-color-private-yellow-550-solid);--g-color-base-brand-hover:var(--g-color-private-yellow-650-solid);--g-color-base-selection:var(--g-color-private-yellow-150);--g-color-base-selection-hover:var(--g-color-private-yellow-200);--g-color-base-info-light:var(--g-color-private-blue-150);--g-color-base-info-light-hover:var(--g-color-private-blue-200);--g-color-base-info-medium:var(--g-color-private-blue-300);--g-color-base-info-medium-hover:var(--g-color-private-blue-400);--g-color-base-info-heavy:var(--g-color-private-blue-600-solid);--g-color-base-info-heavy-hover:var(--g-color-private-blue-700-solid);--g-color-base-positive-light:var(--g-color-private-green-150);--g-color-base-positive-light-hover:var(--g-color-private-green-200);--g-color-base-positive-medium:var(--g-color-private-green-300);--g-color-base-positive-medium-hover:var(--g-color-private-green-400);--g-color-base-positive-heavy:var(--g-color-private-green-600-solid);--g-color-base-positive-heavy-hover:var(--g-color-private-green-700-solid);--g-color-base-warning-light:var(--g-color-private-yellow-150);--g-color-base-warning-light-hover:var(--g-color-private-yellow-200);--g-color-base-warning-medium:var(--g-color-private-yellow-300);--g-color-base-warning-medium-hover:var(--g-color-private-yellow-400);--g-color-base-warning-heavy:var(--g-color-private-yellow-600-solid);--g-color-base-warning-heavy-hover:var(--g-color-private-yellow-700-solid);--g-color-base-danger-light:var(--g-color-private-red-150);--g-color-base-danger-light-hover:var(--g-color-private-red-200);--g-color-base-danger-medium:var(--g-color-private-red-300);--g-color-base-danger-medium-hover:var(--g-color-private-red-400);--g-color-base-danger-heavy:var(--g-color-private-red-600-solid);--g-color-base-danger-heavy-hover:var(--g-color-private-red-700-solid);--g-color-base-utility-light:var(--g-color-private-purple-150);--g-color-base-utility-light-hover:var(--g-color-private-purple-250);--g-color-base-utility-medium:var(--g-color-private-purple-300);--g-color-base-utility-medium-hover:var(--g-color-private-purple-400);--g-color-base-utility-heavy:var(--g-color-private-purple-600-solid);--g-color-base-utility-heavy-hover:var(--g-color-private-purple-700-solid);--g-color-base-neutral-light:var(--g-color-private-white-100);--g-color-base-neutral-light-hover:var(--g-color-private-white-150);--g-color-base-neutral-medium:var(--g-color-private-white-250);--g-color-base-neutral-medium-hover:var(--g-color-private-white-350);--g-color-base-neutral-heavy:var(--g-color-private-white-550);--g-color-base-neutral-heavy-hover:var(--g-color-private-white-650);--g-color-base-misc-light:var(--g-color-private-cool-grey-150);--g-color-base-misc-light-hover:var(--g-color-private-cool-grey-200);--g-color-base-misc-medium:var(--g-color-private-cool-grey-300);--g-color-base-misc-medium-hover:var(--g-color-private-cool-grey-400);--g-color-base-misc-heavy:var(--g-color-private-cool-grey-600-solid);--g-color-base-misc-heavy-hover:var(--g-color-private-cool-grey-700-solid);--g-color-base-light:var(--g-color-private-white-850);--g-color-base-light-hover:var(--g-color-private-white-700);--g-color-base-light-simple-hover:var(--g-color-private-white-150);--g-color-base-light-disabled:var(--g-color-private-white-150);--g-color-base-light-accent-disabled:var(--g-color-private-white-300);--g-color-base-float:var(--g-color-private-white-100-solid);--g-color-base-float-hover:var(--g-color-private-white-150-solid);--g-color-base-float-heavy:var(--g-color-private-white-250-solid);--g-color-base-float-accent:var(--g-color-private-white-150-solid);--g-color-base-float-accent-hover:var(--g-color-private-white-200-solid);--g-color-base-float-announcement:var(--g-color-private-white-150-solid);--g-color-base-modal:var(--g-color-base-background);--g-color-line-generic:var(--g-color-private-white-150);--g-color-line-generic-hover:var(--g-color-private-white-250);--g-color-line-generic-active:var(--g-color-private-white-300);--g-color-line-generic-accent:var(--g-color-private-white-150);--g-color-line-generic-accent-hover:var(--g-color-private-white-300);--g-color-line-generic-solid:var(--g-color-private-white-150-solid);--g-color-line-brand:var(--g-color-private-yellow-600-solid);--g-color-line-focus:var(--g-color-private-cool-grey-450);--g-color-line-light:var(--g-color-private-white-500);--g-color-line-info:var(--g-color-private-blue-450);--g-color-line-positive:var(--g-color-private-green-450);--g-color-line-warning:var(--g-color-private-yellow-450);--g-color-line-danger:var(--g-color-private-red-450);--g-color-line-utility:var(--g-color-private-purple-450);--g-color-line-misc:var(--g-color-private-cool-grey-450);--g-color-sfx-veil:var(--g-color-private-black-600);--g-color-sfx-shadow:var(--g-color-private-black-200);--g-color-sfx-shadow-heavy:var(--g-color-private-black-500);--g-color-sfx-shadow-light:var(--g-color-private-black-200);--g-color-sfx-fade:var(--g-color-private-white-250);--g-color-scroll-track:var(--g-color-base-background);--g-color-scroll-handle:var(--g-color-private-white-150);--g-color-scroll-handle-hover:var(--g-color-private-white-250);--g-color-scroll-corner:var(--g-color-private-white-150);--g-color-infographics-axis:var(--g-color-private-white-150-solid);--g-color-infographics-tooltip-bg:var(--g-color-private-white-opaque-150)}.g-root_theme_light-hc{--g-color-private-blue-50:rgba(54,151,241,.1);--g-color-private-blue-100:rgba(54,151,241,.15);--g-color-private-blue-150:rgba(54,151,241,.2);--g-color-private-blue-200:rgba(54,151,241,.3);--g-color-private-blue-250:rgba(54,151,241,.4);--g-color-private-blue-300:rgba(54,151,241,.5);--g-color-private-blue-350:rgba(54,151,241,.6);--g-color-private-blue-400:rgba(54,151,241,.7);--g-color-private-blue-450:rgba(54,151,241,.8);--g-color-private-blue-500:rgba(54,151,241,.9);--g-color-private-blue-50-solid:#ebf5fe;--g-color-private-blue-100-solid:#e1effd;--g-color-private-blue-150-solid:#d7eafc;--g-color-private-blue-200-solid:#c3e0fb;--g-color-private-blue-250-solid:#afd5f9;--g-color-private-blue-300-solid:#9bcbf8;--g-color-private-blue-350-solid:#86c1f7;--g-color-private-blue-400-solid:#72b6f5;--g-color-private-blue-450-solid:#5eacf4;--g-color-private-blue-500-solid:#4aa1f2;--g-color-private-blue-550-solid:#3697f1;--g-color-private-blue-600-solid:#328adb;--g-color-private-blue-650-solid:#2f7cc4;--g-color-private-blue-700-solid:#2b6fae;--g-color-private-blue-750-solid:#286198;--g-color-private-blue-800-solid:#245482;--g-color-private-blue-850-solid:#20476b;--g-color-private-blue-900-solid:#1d3955;--g-color-private-blue-950-solid:#192c3f;--g-color-private-blue-1000-solid:#172533;--g-color-private-green-50:rgba(50,186,118,.1);--g-color-private-green-100:rgba(50,186,118,.15);--g-color-private-green-150:rgba(50,186,118,.2);--g-color-private-green-200:rgba(50,186,118,.3);--g-color-private-green-250:rgba(50,186,118,.4);--g-color-private-green-300:rgba(50,186,118,.5);--g-color-private-green-350:rgba(50,186,118,.6);--g-color-private-green-400:rgba(50,186,118,.7);--g-color-private-green-450:rgba(50,186,118,.8);--g-color-private-green-500:rgba(50,186,118,.9);--g-color-private-green-50-solid:#ebf8f1;--g-color-private-green-100-solid:#e0f5ea;--g-color-private-green-150-solid:#d6f1e4;--g-color-private-green-200-solid:#c2ead6;--g-color-private-green-250-solid:#ade3c8;--g-color-private-green-300-solid:#9db;--g-color-private-green-350-solid:#84d6ad;--g-color-private-green-400-solid:#70cf9f;--g-color-private-green-450-solid:#5bc891;--g-color-private-green-500-solid:#47c184;--g-color-private-green-550-solid:#32ba76;--g-color-private-green-600-solid:#2fa96c;--g-color-private-green-650-solid:#2c9862;--g-color-private-green-700-solid:#288758;--g-color-private-green-750-solid:#25764e;--g-color-private-green-800-solid:#264;--g-color-private-green-850-solid:#1f553a;--g-color-private-green-900-solid:#1c4430;--g-color-private-green-950-solid:#183326;--g-color-private-green-1000-solid:#172a21;--g-color-private-yellow-50:rgba(255,190,92,.1);--g-color-private-yellow-100:rgba(255,190,92,.15);--g-color-private-yellow-150:rgba(255,190,92,.2);--g-color-private-yellow-200:rgba(255,190,92,.3);--g-color-private-yellow-250:rgba(255,190,92,.4);--g-color-private-yellow-300:rgba(255,190,92,.5);--g-color-private-yellow-350:rgba(255,190,92,.6);--g-color-private-yellow-400:rgba(255,190,92,.7);--g-color-private-yellow-450:rgba(255,190,92,.8);--g-color-private-yellow-500:rgba(255,190,92,.9);--g-color-private-yellow-50-solid:#fff9ef;--g-color-private-yellow-100-solid:#fff5e7;--g-color-private-yellow-150-solid:#fff2de;--g-color-private-yellow-200-solid:#ffecce;--g-color-private-yellow-250-solid:#ffe5be;--g-color-private-yellow-300-solid:#ffdfae;--g-color-private-yellow-350-solid:#ffd89d;--g-color-private-yellow-400-solid:#ffd28d;--g-color-private-yellow-450-solid:#ffcb7d;--g-color-private-yellow-500-solid:#ffc56c;--g-color-private-yellow-550-solid:#ffbe5c;--g-color-private-yellow-600-solid:#e7ad55;--g-color-private-yellow-650-solid:#d09b4d;--g-color-private-yellow-700-solid:#b88a46;--g-color-private-yellow-750-solid:#a0793e;--g-color-private-yellow-800-solid:#896837;--g-color-private-yellow-850-solid:#715630;--g-color-private-yellow-900-solid:#594528;--g-color-private-yellow-950-solid:#413421;--g-color-private-yellow-1000-solid:#362b1d;--g-color-private-orange-400-solid:#ffa04d;--g-color-private-orange-500-solid:#ff8519;--g-color-private-orange-600-solid:#e76d02;--g-color-private-orange-650-solid:#d06304;--g-color-private-orange-700-solid:#b85805;--g-color-private-orange-750-solid:#a04e07;--g-color-private-orange-800-solid:#894409;--g-color-private-orange-850-solid:#713a0b;--g-color-private-orange-900-solid:#59300d;--g-color-private-orange-950-solid:#41250e;--g-color-private-orange-1000-solid:#36200f;--g-color-private-red-50:rgba(255,0,61,.1);--g-color-private-red-100:rgba(255,0,61,.15);--g-color-private-red-150:rgba(255,0,61,.2);--g-color-private-red-200:rgba(255,0,61,.3);--g-color-private-red-250:rgba(255,0,61,.4);--g-color-private-red-300:rgba(255,0,61,.5);--g-color-private-red-350:rgba(255,0,61,.6);--g-color-private-red-400:rgba(255,0,61,.7);--g-color-private-red-450:rgba(255,0,61,.8);--g-color-private-red-500:rgba(255,0,61,.9);--g-color-private-red-50-solid:#ffe6ec;--g-color-private-red-100-solid:#ffd9e2;--g-color-private-red-150-solid:#ffccd8;--g-color-private-red-200-solid:#ffb3c5;--g-color-private-red-250-solid:#ff99b1;--g-color-private-red-300-solid:#ff809e;--g-color-private-red-350-solid:#ff668b;--g-color-private-red-400-solid:#ff4d77;--g-color-private-red-450-solid:#ff3364;--g-color-private-red-500-solid:#ff1950;--g-color-private-red-550-solid:#ff003d;--g-color-private-red-600-solid:#e70239;--g-color-private-red-650-solid:#d00334;--g-color-private-red-700-solid:#b80530;--g-color-private-red-750-solid:#a0072c;--g-color-private-red-800-solid:#890928;--g-color-private-red-850-solid:#710a23;--g-color-private-red-900-solid:#590c1f;--g-color-private-red-950-solid:#410e1b;--g-color-private-red-1000-solid:#360e18;--g-color-private-purple-600-solid:#834cb9;--g-color-private-purple-650-solid:#7645a7;--g-color-private-purple-700-solid:#6a3f94;--g-color-private-purple-750-solid:#5d3882;--g-color-private-purple-800-solid:#51326f;--g-color-private-purple-850-solid:#442b5c;--g-color-private-purple-900-solid:#38254a;--g-color-private-purple-950-solid:#2b1e37;--g-color-private-purple-1000-solid:#251b2e;--g-color-private-cool-grey-300-solid:#b5c2cc;--g-color-private-cool-grey-600-solid:#62798c;--g-color-private-cool-grey-650-solid:#596d7e;--g-color-private-cool-grey-700-solid:#506271;--g-color-private-cool-grey-750-solid:#475663;--g-color-private-cool-grey-800-solid:#3f4b56;--g-color-private-cool-grey-850-solid:#363f48;--g-color-private-cool-grey-900-solid:#2d343b;--g-color-private-cool-grey-950-solid:#24282d;--g-color-private-cool-grey-1000-solid:#1f2226;--g-color-text-primary:var(--g-color-text-dark-primary);--g-color-text-complementary:var(--g-color-text-dark-complementary);--g-color-text-secondary:var(--g-color-text-dark-secondary);--g-color-text-hint:var(--g-color-text-dark-hint);--g-color-text-info:var(--g-color-private-blue-650-solid);--g-color-text-positive:var(--g-color-private-green-650-solid);--g-color-text-warning:var(--g-color-private-yellow-700-solid);--g-color-text-danger:var(--g-color-private-red-650-solid);--g-color-text-utility:var(--g-color-private-purple-650-solid);--g-color-text-misc:var(--g-color-private-cool-grey-650-solid);--g-color-text-info-heavy:var(--g-color-private-blue-900-solid);--g-color-text-positive-heavy:var(--g-color-private-green-900-solid);--g-color-text-warning-heavy:var(--g-color-private-orange-900-solid);--g-color-text-danger-heavy:var(--g-color-private-red-900-solid);--g-color-text-utility-heavy:var(--g-color-private-purple-900-solid);--g-color-text-misc-heavy:var(--g-color-private-cool-grey-900-solid);--g-color-text-brand:var(--g-color-private-yellow-700-solid);--g-color-text-brand-heavy:var(--g-color-private-orange-900-solid);--g-color-text-brand-contrast:var(--g-color-text-dark-primary);--g-color-text-link:var(--g-color-private-yellow-700-solid);--g-color-text-link-hover:var(--g-color-private-orange-700-solid);--g-color-text-link-visited:var(--g-color-private-purple-600-solid);--g-color-text-link-visited-hover:var(--g-color-private-purple-850-solid);--g-color-text-dark-primary:var(--g-color-private-black-1000-solid);--g-color-text-dark-complementary:var(--g-color-private-black-850);--g-color-text-dark-secondary:var(--g-color-private-black-700);--g-color-text-dark-hint:var(--g-color-private-black-500);--g-color-text-light-primary:var(--g-color-private-white-1000-solid);--g-color-text-light-complementary:var(--g-color-private-white-850);--g-color-text-light-secondary:var(--g-color-private-white-700);--g-color-text-light-hint:var(--g-color-private-white-500);--g-color-text-inverted-primary:var(--g-color-text-light-primary);--g-color-text-inverted-complementary:var(--g-color-text-light-complementary);--g-color-text-inverted-secondary:var(--g-color-text-light-secondary);--g-color-text-inverted-hint:var(--g-color-text-light-hint);--g-color-base-background:var(--g-color-private-white-1000-solid);--g-color-base-generic:var(--g-color-private-black-150);--g-color-base-generic-hover:var(--g-color-private-black-300);--g-color-base-generic-medium:var(--g-color-private-black-250);--g-color-base-generic-medium-hover:var(--g-color-private-black-350);--g-color-base-generic-accent:var(--g-color-private-black-250);--g-color-base-generic-accent-disabled:var(--g-color-private-black-150);--g-color-base-generic-ultralight:var(--g-color-private-black-50-solid);--g-color-base-simple-hover:var(--g-color-private-black-150);--g-color-base-simple-hover-solid:var(--g-color-private-black-150-solid);--g-color-base-brand:var(--g-color-private-yellow-550-solid);--g-color-base-brand-hover:var(--g-color-private-yellow-650-solid);--g-color-base-selection:var(--g-color-private-yellow-300);--g-color-base-selection-hover:var(--g-color-private-yellow-400);--g-color-base-info-light:var(--g-color-private-blue-250);--g-color-base-info-light-hover:var(--g-color-private-blue-350);--g-color-base-info-medium:var(--g-color-private-blue-400);--g-color-base-info-medium-hover:var(--g-color-private-blue-500);--g-color-base-info-heavy:var(--g-color-private-blue-700-solid);--g-color-base-info-heavy-hover:var(--g-color-private-blue-850-solid);--g-color-base-positive-light:var(--g-color-private-green-250);--g-color-base-positive-light-hover:var(--g-color-private-green-350);--g-color-base-positive-medium:var(--g-color-private-green-400);--g-color-base-positive-medium-hover:var(--g-color-private-green-500);--g-color-base-positive-heavy:var(--g-color-private-green-700-solid);--g-color-base-positive-heavy-hover:var(--g-color-private-green-800-solid);--g-color-base-warning-light:var(--g-color-private-yellow-300);--g-color-base-warning-light-hover:var(--g-color-private-yellow-400);--g-color-base-warning-medium:var(--g-color-private-yellow-400);--g-color-base-warning-medium-hover:var(--g-color-private-yellow-550-solid);--g-color-base-warning-heavy:var(--g-color-private-yellow-600-solid);--g-color-base-warning-heavy-hover:var(--g-color-private-yellow-700-solid);--g-color-base-danger-light:var(--g-color-private-red-250);--g-color-base-danger-light-hover:var(--g-color-private-red-350);--g-color-base-danger-medium:var(--g-color-private-red-400);--g-color-base-danger-medium-hover:var(--g-color-private-red-500);--g-color-base-danger-heavy:var(--g-color-private-red-700-solid);--g-color-base-danger-heavy-hover:var(--g-color-private-red-800-solid);--g-color-base-utility-light:var(--g-color-private-purple-250);--g-color-base-utility-light-hover:var(--g-color-private-purple-350);--g-color-base-utility-medium:var(--g-color-private-purple-400);--g-color-base-utility-medium-hover:var(--g-color-private-purple-500);--g-color-base-utility-heavy:var(--g-color-private-purple-700-solid);--g-color-base-utility-heavy-hover:var(--g-color-private-purple-800-solid);--g-color-base-neutral-light:var(--g-color-private-black-150);--g-color-base-neutral-light-hover:var(--g-color-private-black-250);--g-color-base-neutral-medium:var(--g-color-private-black-300);--g-color-base-neutral-medium-hover:var(--g-color-private-black-400);--g-color-base-neutral-heavy:var(--g-color-private-black-550);--g-color-base-neutral-heavy-hover:var(--g-color-private-black-650);--g-color-base-misc-light:var(--g-color-private-cool-grey-250);--g-color-base-misc-light-hover:var(--g-color-private-cool-grey-350);--g-color-base-misc-medium:var(--g-color-private-cool-grey-400);--g-color-base-misc-medium-hover:var(--g-color-private-cool-grey-500);--g-color-base-misc-heavy:var(--g-color-private-cool-grey-700-solid);--g-color-base-misc-heavy-hover:var(--g-color-private-cool-grey-800-solid);--g-color-base-light:var(--g-color-private-white-1000-solid);--g-color-base-light-hover:var(--g-color-private-white-850);--g-color-base-light-simple-hover:var(--g-color-private-white-300);--g-color-base-light-disabled:var(--g-color-private-white-150);--g-color-base-light-accent-disabled:var(--g-color-private-white-300);--g-color-base-float:var(--g-color-private-white-1000-solid);--g-color-base-float-hover:var(--g-color-private-black-150-solid);--g-color-base-float-heavy:var(--g-color-private-black-700-solid);--g-color-base-float-accent:var(--g-color-private-white-1000-solid);--g-color-base-float-accent-hover:var(--g-color-private-white-850);--g-color-base-float-announcement:var(--g-color-private-cool-grey-150-solid);--g-color-base-modal:var(--g-color-base-background);--g-color-line-generic:var(--g-color-private-black-200);--g-color-line-generic-hover:var(--g-color-private-black-400);--g-color-line-generic-active:var(--g-color-private-black-700);--g-color-line-generic-accent:var(--g-color-private-black-300);--g-color-line-generic-accent-hover:var(--g-color-private-black-700);--g-color-line-generic-solid:var(--g-color-private-black-200-solid);--g-color-line-brand:var(--g-color-private-yellow-600-solid);--g-color-line-focus:var(--g-color-private-cool-grey-450);--g-color-line-light:var(--g-color-private-white-500);--g-color-line-info:var(--g-color-private-blue-450);--g-color-line-positive:var(--g-color-private-green-450);--g-color-line-warning:var(--g-color-private-yellow-600-solid);--g-color-line-danger:var(--g-color-private-red-450);--g-color-line-utility:var(--g-color-private-purple-450);--g-color-line-misc:var(--g-color-private-cool-grey-450);--g-color-sfx-veil:var(--g-color-private-black-450);--g-color-sfx-shadow:var(--g-color-private-black-300);--g-color-sfx-shadow-heavy:var(--g-color-private-black-600);--g-color-sfx-shadow-light:var(--g-color-private-black-100);--g-color-sfx-fade:var(--g-color-private-white-300);--g-color-scroll-track:var(--g-color-base-background);--g-color-scroll-handle:var(--g-color-private-black-100);--g-color-scroll-handle-hover:var(--g-color-private-black-150);--g-color-scroll-corner:var(--g-color-private-black-100);--g-color-infographics-axis:var(--g-color-private-black-150-solid);--g-color-infographics-tooltip-bg:var(--g-color-private-white-950)}.g-root_theme_dark-hc{--g-color-private-white-50-solid:#1e1d1e;--g-color-private-white-70-solid:#232223;--g-color-private-white-100-solid:#2a292a;--g-color-private-white-150-solid:#363536;--g-color-private-white-200-solid:#414141;--g-color-private-white-250-solid:#4d4d4d;--g-color-private-white-300-solid:#595859;--g-color-private-white-350-solid:#656465;--g-color-private-white-400-solid:#717071;--g-color-private-white-450-solid:#7d7c7d;--g-color-private-white-500-solid:#888;--g-color-private-white-550-solid:#949494;--g-color-private-white-600-solid:#a0a0a0;--g-color-private-white-650-solid:#acacac;--g-color-private-white-700-solid:#b8b8b8;--g-color-private-white-750-solid:#c4c3c4;--g-color-private-white-800-solid:#d0cfd0;--g-color-private-white-850-solid:#d0cfd0;--g-color-private-white-900-solid:#e7e7e7;--g-color-private-white-950-solid:#f3f3f3;--g-color-private-blue-50:rgba(54,151,241,.1);--g-color-private-blue-100:rgba(54,151,241,.15);--g-color-private-blue-150:rgba(54,151,241,.2);--g-color-private-blue-200:rgba(54,151,241,.3);--g-color-private-blue-250:rgba(54,151,241,.4);--g-color-private-blue-300:rgba(54,151,241,.5);--g-color-private-blue-350:rgba(54,151,241,.6);--g-color-private-blue-400:rgba(54,151,241,.7);--g-color-private-blue-450:rgba(54,151,241,.8);--g-color-private-blue-500:rgba(54,151,241,.9);--g-color-private-blue-50-solid:#161e28;--g-color-private-blue-100-solid:#172533;--g-color-private-blue-150-solid:#192c3f;--g-color-private-blue-200-solid:#1d3955;--g-color-private-blue-250-solid:#20476b;--g-color-private-blue-300-solid:#245482;--g-color-private-blue-350-solid:#286198;--g-color-private-blue-400-solid:#2b6fae;--g-color-private-blue-450-solid:#2f7cc4;--g-color-private-blue-500-solid:#328adb;--g-color-private-blue-550-solid:#3697f1;--g-color-private-blue-600-solid:#4aa1f2;--g-color-private-blue-650-solid:#5eacf4;--g-color-private-blue-700-solid:#72b6f5;--g-color-private-blue-750-solid:#86c1f7;--g-color-private-blue-800-solid:#9bcbf8;--g-color-private-blue-850-solid:#afd5f9;--g-color-private-blue-900-solid:#c3e0fb;--g-color-private-blue-950-solid:#d7eafc;--g-color-private-blue-1000-solid:#e1effd;--g-color-private-green-50:rgba(77,176,155,.1);--g-color-private-green-100:rgba(77,176,155,.15);--g-color-private-green-150:rgba(77,176,155,.2);--g-color-private-green-200:rgba(77,176,155,.3);--g-color-private-green-250:rgba(77,176,155,.4);--g-color-private-green-300:rgba(77,176,155,.5);--g-color-private-green-350:rgba(77,176,155,.6);--g-color-private-green-400:rgba(77,176,155,.7);--g-color-private-green-450:rgba(77,176,155,.8);--g-color-private-green-500:rgba(77,176,155,.9);--g-color-private-green-50-solid:#182120;--g-color-private-green-100-solid:#1b2927;--g-color-private-green-150-solid:#1e312d;--g-color-private-green-200-solid:#24413b;--g-color-private-green-250-solid:#2a5149;--g-color-private-green-300-solid:#306157;--g-color-private-green-350-solid:#357064;--g-color-private-green-400-solid:#3b8072;--g-color-private-green-450-solid:#419080;--g-color-private-green-500-solid:#47a08d;--g-color-private-green-550-solid:#4db09b;--g-color-private-green-600-solid:#5fb8a5;--g-color-private-green-650-solid:#71c0af;--g-color-private-green-700-solid:#82c8b9;--g-color-private-green-750-solid:#94d0c3;--g-color-private-green-800-solid:#a6d8cd;--g-color-private-green-850-solid:#b8dfd7;--g-color-private-green-900-solid:#cae7e1;--g-color-private-green-950-solid:#dbefeb;--g-color-private-green-1000-solid:#e4f3f0;--g-color-private-yellow-50:rgba(255,190,92,.1);--g-color-private-yellow-100:rgba(255,190,92,.15);--g-color-private-yellow-150:rgba(255,190,92,.2);--g-color-private-yellow-200:rgba(255,190,92,.3);--g-color-private-yellow-250:rgba(255,190,92,.4);--g-color-private-yellow-300:rgba(255,190,92,.5);--g-color-private-yellow-350:rgba(255,190,92,.6);--g-color-private-yellow-400:rgba(255,190,92,.7);--g-color-private-yellow-450:rgba(255,190,92,.8);--g-color-private-yellow-500:rgba(255,190,92,.9);--g-color-private-yellow-50-solid:#2a2219;--g-color-private-yellow-100-solid:#362b1d;--g-color-private-yellow-150-solid:#413421;--g-color-private-yellow-200-solid:#594528;--g-color-private-yellow-250-solid:#715630;--g-color-private-yellow-300-solid:#896837;--g-color-private-yellow-350-solid:#a0793e;--g-color-private-yellow-400-solid:#b88a46;--g-color-private-yellow-450-solid:#d09b4d;--g-color-private-yellow-500-solid:#e7ad55;--g-color-private-yellow-550-solid:#ffbe5c;--g-color-private-yellow-600-solid:#ffc56c;--g-color-private-yellow-650-solid:#ffcb7d;--g-color-private-yellow-700-solid:#ffd28d;--g-color-private-yellow-750-solid:#ffd89d;--g-color-private-yellow-800-solid:#ffdfae;--g-color-private-yellow-850-solid:#ffe5be;--g-color-private-yellow-900-solid:#ffecce;--g-color-private-yellow-950-solid:#fff2de;--g-color-private-yellow-1000-solid:#fff5e7;--g-color-private-orange-50-solid:#241911;--g-color-private-orange-100-solid:#2d1d11;--g-color-private-orange-150-solid:#362111;--g-color-private-orange-200-solid:#492a10;--g-color-private-orange-250-solid:#5b3210;--g-color-private-orange-300-solid:#6d3a0f;--g-color-private-orange-350-solid:#7f420e;--g-color-private-orange-400-solid:#914a0e;--g-color-private-orange-450-solid:#a4530d;--g-color-private-orange-500-solid:#b65b0d;--g-color-private-orange-700-solid:#d99255;--g-color-private-orange-800-solid:#e4b186;--g-color-private-red-50:rgba(229,50,93,.1);--g-color-private-red-100:rgba(229,50,93,.15);--g-color-private-red-150:rgba(229,50,93,.2);--g-color-private-red-200:rgba(229,50,93,.3);--g-color-private-red-250:rgba(229,50,93,.4);--g-color-private-red-300:rgba(229,50,93,.5);--g-color-private-red-350:rgba(229,50,93,.6);--g-color-private-red-400:rgba(229,50,93,.7);--g-color-private-red-450:rgba(229,50,93,.8);--g-color-private-red-500:rgba(229,50,93,.9);--g-color-private-red-50-solid:#27141a;--g-color-private-red-100-solid:#32161d;--g-color-private-red-150-solid:#3c1821;--g-color-private-red-200-solid:#511b29;--g-color-private-red-250-solid:#661e30;--g-color-private-red-300-solid:#7c2238;--g-color-private-red-350-solid:#91253f;--g-color-private-red-400-solid:#a62847;--g-color-private-red-450-solid:#bb2b4e;--g-color-private-red-500-solid:#d02f56;--g-color-private-red-550-solid:#e5325d;--g-color-private-red-600-solid:#e8476d;--g-color-private-red-650-solid:#ea5b7d;--g-color-private-red-700-solid:#ed708e;--g-color-private-red-750-solid:#ef849e;--g-color-private-red-800-solid:#f299ae;--g-color-private-red-850-solid:#f5adbe;--g-color-private-red-900-solid:#f7c2ce;--g-color-private-red-950-solid:#fad6df;--g-color-private-red-1000-solid:#fbe0e7;--g-color-private-purple-50-solid:#1f1825;--g-color-private-purple-100-solid:#251b2e;--g-color-private-purple-150-solid:#2b1e37;--g-color-private-purple-200-solid:#38254a;--g-color-private-purple-250-solid:#442b5c;--g-color-private-purple-300-solid:#51326f;--g-color-private-purple-350-solid:#5d3882;--g-color-private-purple-400-solid:#6a3f94;--g-color-private-purple-450-solid:#7645a7;--g-color-private-purple-500-solid:#834cb9;--g-color-private-cool-grey-50-solid:#1a1c20;--g-color-private-cool-grey-100-solid:#1e2227;--g-color-private-cool-grey-150-solid:#22272e;--g-color-private-cool-grey-200-solid:#29323b;--g-color-private-cool-grey-250-solid:#313d49;--g-color-private-cool-grey-300-solid:#394957;--g-color-private-cool-grey-350-solid:#415465;--g-color-private-cool-grey-400-solid:#495f73;--g-color-private-cool-grey-450-solid:#506a80;--g-color-private-cool-grey-500-solid:#58758e;--g-color-private-cool-grey-750-solid:#a0b3c4;--g-color-private-cool-grey-800-solid:#b0c0ce;--g-color-text-primary:var(--g-color-text-light-primary);--g-color-text-complementary:var(--g-color-text-light-complementary);--g-color-text-secondary:var(--g-color-text-light-secondary);--g-color-text-hint:var(--g-color-text-light-hint);--g-color-text-info:var(--g-color-private-blue-650-solid);--g-color-text-positive:var(--g-color-private-green-650-solid);--g-color-text-warning:var(--g-color-private-yellow-650-solid);--g-color-text-danger:var(--g-color-private-red-650-solid);--g-color-text-utility:var(--g-color-private-purple-650-solid);--g-color-text-misc:var(--g-color-private-cool-grey-650-solid);--g-color-text-info-heavy:var(--g-color-private-blue-850-solid);--g-color-text-positive-heavy:var(--g-color-private-green-850-solid);--g-color-text-warning-heavy:var(--g-color-private-yellow-850-solid);--g-color-text-danger-heavy:var(--g-color-private-red-850-solid);--g-color-text-utility-heavy:var(--g-color-private-purple-850-solid);--g-color-text-misc-heavy:var(--g-color-private-cool-grey-850-solid);--g-color-text-brand:var(--g-color-private-yellow-600-solid);--g-color-text-brand-heavy:var(--g-color-private-yellow-700-solid);--g-color-text-brand-contrast:var(--g-color-text-dark-primary);--g-color-text-link:var(--g-color-private-yellow-550-solid);--g-color-text-link-hover:var(--g-color-private-orange-550-solid);--g-color-text-link-visited:var(--g-color-private-purple-650-solid);--g-color-text-link-visited-hover:var(--g-color-private-purple-800-solid);--g-color-text-dark-primary:var(--g-color-private-black-1000-solid);--g-color-text-dark-complementary:var(--g-color-private-black-800);--g-color-text-dark-secondary:var(--g-color-private-black-600);--g-color-text-dark-hint:var(--g-color-private-black-400);--g-color-text-light-primary:var(--g-color-private-white-1000-solid);--g-color-text-light-complementary:var(--g-color-private-white-800);--g-color-text-light-secondary:var(--g-color-private-white-600);--g-color-text-light-hint:var(--g-color-private-white-400);--g-color-text-inverted-primary:var(--g-color-text-dark-primary);--g-color-text-inverted-complementary:var(--g-color-text-dark-complementary);--g-color-text-inverted-secondary:var(--g-color-text-dark-secondary);--g-color-text-inverted-hint:var(--g-color-text-dark-hint);--g-color-base-background:#121112;--g-color-base-generic:var(--g-color-private-white-100);--g-color-base-generic-hover:var(--g-color-private-white-250);--g-color-base-generic-medium:var(--g-color-private-white-250);--g-color-base-generic-medium-hover:var(--g-color-private-white-400);--g-color-base-generic-accent:var(--g-color-private-white-200);--g-color-base-generic-accent-disabled:var(--g-color-private-white-150);--g-color-base-generic-ultralight:var(--g-color-private-white-50);--g-color-base-simple-hover:var(--g-color-private-white-250);--g-color-base-simple-hover-solid:var(--g-color-private-white-250-solid);--g-color-base-brand:var(--g-color-private-yellow-550-solid);--g-color-base-brand-hover:var(--g-color-private-yellow-700-solid);--g-color-base-selection:var(--g-color-private-yellow-250);--g-color-base-selection-hover:var(--g-color-private-yellow-400);--g-color-base-info-light:var(--g-color-private-blue-250);--g-color-base-info-light-hover:var(--g-color-private-blue-400);--g-color-base-info-medium:var(--g-color-private-blue-450);--g-color-base-info-medium-hover:var(--g-color-private-blue-600-solid);--g-color-base-info-heavy:var(--g-color-private-blue-700-solid);--g-color-base-info-heavy-hover:var(--g-color-private-blue-850-solid);--g-color-base-positive-light:var(--g-color-private-green-250);--g-color-base-positive-light-hover:var(--g-color-private-green-400);--g-color-base-positive-medium:var(--g-color-private-green-450);--g-color-base-positive-medium-hover:var(--g-color-private-green-600-solid);--g-color-base-positive-heavy:var(--g-color-private-green-700-solid);--g-color-base-positive-heavy-hover:var(--g-color-private-green-850-solid);--g-color-base-warning-light:var(--g-color-private-yellow-250);--g-color-base-warning-light-hover:var(--g-color-private-yellow-400);--g-color-base-warning-medium:var(--g-color-private-yellow-450);--g-color-base-warning-medium-hover:var(--g-color-private-yellow-600-solid);--g-color-base-warning-heavy:var(--g-color-private-yellow-700-solid);--g-color-base-warning-heavy-hover:var(--g-color-private-yellow-850-solid);--g-color-base-danger-light:var(--g-color-private-red-250);--g-color-base-danger-light-hover:var(--g-color-private-red-400);--g-color-base-danger-medium:var(--g-color-private-red-450);--g-color-base-danger-medium-hover:var(--g-color-private-red-600-solid);--g-color-base-danger-heavy:var(--g-color-private-red-700-solid);--g-color-base-danger-heavy-hover:var(--g-color-private-red-850-solid);--g-color-base-utility-light:var(--g-color-private-purple-250);--g-color-base-utility-light-hover:var(--g-color-private-purple-400);--g-color-base-utility-medium:var(--g-color-private-purple-450);--g-color-base-utility-medium-hover:var(--g-color-private-purple-600-solid);--g-color-base-utility-heavy:var(--g-color-private-purple-700-solid);--g-color-base-utility-heavy-hover:var(--g-color-private-purple-850-solid);--g-color-base-neutral-light:var(--g-color-private-white-200);--g-color-base-neutral-light-hover:var(--g-color-private-white-350);--g-color-base-neutral-medium:var(--g-color-private-white-400);--g-color-base-neutral-medium-hover:var(--g-color-private-white-550);--g-color-base-neutral-heavy:var(--g-color-private-white-650);--g-color-base-neutral-heavy-hover:var(--g-color-private-white-750);--g-color-base-misc-light:var(--g-color-private-cool-grey-250);--g-color-base-misc-light-hover:var(--g-color-private-cool-grey-400);--g-color-base-misc-medium:var(--g-color-private-cool-grey-450);--g-color-base-misc-medium-hover:var(--g-color-private-cool-grey-600-solid);--g-color-base-misc-heavy:var(--g-color-private-cool-grey-700-solid);--g-color-base-misc-heavy-hover:var(--g-color-private-cool-grey-850-solid);--g-color-base-light:var(--g-color-private-white-850);--g-color-base-light-hover:var(--g-color-private-white-700);--g-color-base-light-simple-hover:var(--g-color-private-white-150);--g-color-base-light-disabled:var(--g-color-private-white-150);--g-color-base-light-accent-disabled:var(--g-color-private-white-300);--g-color-base-float:var(--g-color-private-white-100-solid);--g-color-base-float-hover:var(--g-color-private-white-200-solid);--g-color-base-float-heavy:var(--g-color-private-white-300-solid);--g-color-base-float-accent:var(--g-color-private-white-300-solid);--g-color-base-float-accent-hover:var(--g-color-private-white-400-solid);--g-color-base-float-announcement:var(--g-color-private-white-200-solid);--g-color-base-modal:var(--g-color-base-background);--g-color-line-generic:var(--g-color-private-white-150);--g-color-line-generic-hover:var(--g-color-private-white-250);--g-color-line-generic-active:var(--g-color-private-white-600);--g-color-line-generic-accent:var(--g-color-private-white-350);--g-color-line-generic-accent-hover:var(--g-color-private-white-800);--g-color-line-generic-solid:var(--g-color-private-white-150-solid);--g-color-line-brand:var(--g-color-private-yellow-600-solid);--g-color-line-focus:var(--g-color-private-cool-grey-550-solid);--g-color-line-light:var(--g-color-private-white-500);--g-color-line-info:var(--g-color-private-blue-550-solid);--g-color-line-positive:var(--g-color-private-green-550-solid);--g-color-line-warning:var(--g-color-private-yellow-550-solid);--g-color-line-danger:var(--g-color-private-red-550-solid);--g-color-line-utility:var(--g-color-private-purple-550-solid);--g-color-line-misc:var(--g-color-private-cool-grey-550-solid);--g-color-sfx-veil:var(--g-color-private-black-700);--g-color-sfx-shadow:var(--g-color-private-black-200);--g-color-sfx-shadow-heavy:var(--g-color-private-black-400);--g-color-sfx-shadow-light:var(--g-color-private-black-200);--g-color-sfx-fade:var(--g-color-private-white-250);--g-color-scroll-track:var(--g-color-base-background);--g-color-scroll-handle:var(--g-color-private-white-150);--g-color-scroll-handle-hover:var(--g-color-private-white-250);--g-color-scroll-corner:var(--g-color-private-white-150);--g-color-infographics-axis:var(--g-color-private-white-150-solid);--g-color-infographics-tooltip-bg:var(--g-color-private-white-opaque-150)}body.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar){scrollbar-color:var(--g-color-scroll-handle) var(--g-color-scroll-track);scrollbar-width:var(--g-scrollbar-width)}body.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar) ::-webkit-scrollbar,body.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar)::-webkit-scrollbar{background:var(--g-color-scroll-track);height:var(--g-scrollbar-width);width:var(--g-scrollbar-width)}body.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar) ::-webkit-scrollbar-track,body.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar)::-webkit-scrollbar-track{background:var(--g-color-scroll-track)}body.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar) ::-webkit-scrollbar-corner,body.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar)::-webkit-scrollbar-corner{background:var(--g-color-scroll-corner)}body.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar) ::-webkit-scrollbar-thumb,body.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar)::-webkit-scrollbar-thumb{background:var(--g-color-scroll-handle)}body.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar) ::-webkit-scrollbar-thumb:hover,body.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar)::-webkit-scrollbar-thumb:hover{background:var(--g-color-scroll-handle-hover)}@-webkit-keyframes yc-loading-animation{0%{background-position:-12px 0}to{background-position:0 0}}@keyframes yc-loading-animation{0%{background-position:-12px 0}to{background-position:0 0}}:root{--data-table-header-vertical-padding:5px;--data-table-cell-vertical-padding:5px;--data-table-cell-horizontal-padding:10px;--data-table-cell-border-padding:var(--data-table-cell-horizontal-padding);--data-table-cell-align:top;--data-table-head-align:top;--data-table-row-height:30px;--data-table-sort-icon-space:18px;--data-table-sort-icon-opacity-inactive:0.15;--data-table-sort-icon-color:inherit}.data-table{box-sizing:border-box;position:relative}.data-table__box{box-sizing:border-box;height:100%;width:100%}.data-table__box_sticky-head_moving{overflow:visible;position:relative;z-index:0}.data-table__box_sticky-head_moving .data-table__th{border-bottom:0;border-top:0;padding-bottom:0;padding-top:0}.data-table__box_sticky-head_moving .data-table__head-cell{display:block;height:0;overflow:hidden}.data-table__box_sticky-head_moving .data-table__row_header-data{visibility:hidden}.data-table__box_sticky-footer_fixed,.data-table__box_sticky-head_fixed{overflow:auto}.data-table__table{border-collapse:collapse;table-layout:fixed}.data-table__table_sticky{background:var(--data-table-color-base);width:100%}.data-table__row{height:30px;height:var(--data-table-row-height)}.data-table__th{border:1px solid var(--data-table-border-color);cursor:default;font-weight:500;padding:5px 10px;padding:var(--data-table-header-vertical-padding) var(--data-table-cell-horizontal-padding);position:relative;text-align:left;vertical-align:top;vertical-align:var(--data-table-head-align)}.data-table__th_sortable{cursor:pointer}.data-table__th_sortable .data-table__head-cell{padding-right:18px;padding-right:var(--data-table-sort-icon-space)}.data-table__th_sortable.data-table__th_align_right .data-table__head-cell{padding-left:18px;padding-left:var(--data-table-sort-icon-space);padding-right:0}.data-table__th_sortable.data-table__th_align_right .data-table__sort-icon{left:0;right:auto;-webkit-transform:translateY(-50%) scaleX(-1);transform:translateY(-50%) scaleX(-1)}.data-table__td{border:1px solid var(--data-table-border-color);overflow:hidden;padding:5px 10px;padding:var(--data-table-cell-vertical-padding) var(--data-table-cell-horizontal-padding);text-overflow:ellipsis;vertical-align:top;vertical-align:var(--data-table-cell-align);white-space:nowrap}.data-table__td_index,.data-table__th_index{text-align:right}.data-table__td_align_left,.data-table__th_align_left{text-align:left}.data-table__td_align_center,.data-table__th_align_center{text-align:center}.data-table__td_align_right,.data-table__th_align_right{text-align:right}.data-table__td:first-child,.data-table__th:first-child{padding-left:10px;padding-left:var(--data-table-cell-border-padding)}.data-table__td:last-child,.data-table__th:last-child{padding-right:10px;padding-right:var(--data-table-cell-border-padding)}.data-table__index{text-align:right}.data-table__head-cell{box-sizing:border-box;display:inline-block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.data-table__error{padding:20px;white-space:pre-wrap}.data-table__sort-icon{color:inherit;color:var(--data-table-sort-icon-color);display:inline-flex;position:absolute;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.data-table__sort-icon:after{content:attr(data-index);font-size:8px;left:100%;position:absolute;top:-5px}.data-table__sort-icon_shadow{opacity:.15;opacity:var(--data-table-sort-icon-opacity-inactive)}.data-table__sort-icon_shadow:after{content:none}.data-table__icon{vertical-align:top}.data-table__no-data{background:var(--data-table-color-stripe)}.data-table__sticky_fixed{left:0;overflow:hidden;position:absolute;right:0;z-index:1}.data-table__sticky_fixed.data-table__sticky_head{top:0}.data-table__sticky_fixed.data-table__sticky_footer{bottom:0}.data-table__sticky_moving{margin-bottom:-1px;position:-webkit-sticky;position:sticky;z-index:1}.data-table_striped-rows .data-table__row_odd{background:var(--data-table-color-stripe)}.data-table_highlight-rows .data-table__row:hover{background:var(--data-table-color-hover-area)}.data-table_header_multiline .data-table__head-cell{white-space:normal}.data-table_header_pre .data-table__head-cell{white-space:pre}.data-table__foot{background:var(--data-table-color-footer-area)}.data-table__foot_has-sticky-footer_moving{visibility:hidden}.data-table_theme_yandex-cloud{--data-table-color-base:var( --yc-color-base-background,var(--yc-color-base,var(--color-base)) );--data-table-color-stripe:var( --yc-color-base-generic-ultralight,var(--yc-color-base-area,var(--color-base-area)) );--data-table-border-color:var( --yc-color-base-generic-hover,var(--yc-color-contrast-15-solid,var(--color-contrast-15-solid)) );--data-table-color-hover-area:var( --yc-color-base-simple-hover,var(--yc-color-hover-area,var(--color-hover-area)) );--data-table-color-footer-area:var(--data-table-color-base)}.data-table_theme_legacy{--data-table-color-base:#fff;--data-table-color-stripe:rgba(0,0,0,.03);--data-table-border-color:#ddd;--data-table-color-hover-area:#ffeba0;--data-table-color-footer-area:var(--data-table-color-base)}.yc-toast-animation-mobile_enter{opacity:0;position:absolute}.yc-toast-animation-mobile_enter_active{-webkit-animation:yc-toast-enter-mobile .6s ease-out forwards;animation:yc-toast-enter-mobile .6s ease-out forwards;position:relative}.yc-toast-animation-mobile_exit_active{-webkit-animation:yc-toast-exit-mobile .6s ease-in forwards;animation:yc-toast-exit-mobile .6s ease-in forwards}@-webkit-keyframes yc-toast-enter-mobile{0%{height:0;margin-bottom:0;opacity:0;padding:0;-webkit-transform:translateY(10px);transform:translateY(10px)}50%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:0;padding:var(--yc-toaster-padding);-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes yc-toast-enter-mobile{0%{height:0;margin-bottom:0;opacity:0;padding:0;-webkit-transform:translateY(10px);transform:translateY(10px)}50%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:0;padding:var(--yc-toaster-padding);-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes yc-toast-exit-mobile{0%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:1;padding:var(--yc-toaster-padding);-webkit-transform:translateX(0);transform:translateX(0)}50%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:0;padding:var(--yc-toaster-padding);-webkit-transform:translateY(10px);transform:translateY(10px)}to{height:0;margin-bottom:0;opacity:0;padding:0;-webkit-transform:translateY(10px);transform:translateY(10px)}}@keyframes yc-toast-exit-mobile{0%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:1;padding:var(--yc-toaster-padding);-webkit-transform:translateX(0);transform:translateX(0)}50%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:0;padding:var(--yc-toaster-padding);-webkit-transform:translateY(10px);transform:translateY(10px)}to{height:0;margin-bottom:0;opacity:0;padding:0;-webkit-transform:translateY(10px);transform:translateY(10px)}}.yc-toast-animation-desktop_enter{opacity:0;position:absolute}.yc-toast-animation-desktop_enter_active{-webkit-animation:yc-toast-enter-desktop .6s ease-out forwards;animation:yc-toast-enter-desktop .6s ease-out forwards;position:relative}.yc-toast-animation-desktop_exit_active{-webkit-animation:yc-toast-exit-desktop .6s ease-in forwards;animation:yc-toast-exit-desktop .6s ease-in forwards}@-webkit-keyframes yc-toast-enter-desktop{0%{height:0;margin-bottom:0;opacity:0;padding:0;-webkit-transform:translateX(10px);transform:translateX(10px)}50%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:0;padding:var(--yc-toaster-padding);-webkit-transform:translateX(10px);transform:translateX(10px)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes yc-toast-enter-desktop{0%{height:0;margin-bottom:0;opacity:0;padding:0;-webkit-transform:translateX(10px);transform:translateX(10px)}50%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:0;padding:var(--yc-toaster-padding);-webkit-transform:translateX(10px);transform:translateX(10px)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes yc-toast-exit-desktop{0%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:1;padding:var(--yc-toaster-padding);-webkit-transform:translateX(0);transform:translateX(0)}50%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:0;padding:var(--yc-toaster-padding);-webkit-transform:translateX(10px);transform:translateX(10px)}to{height:0;margin-bottom:0;opacity:0;padding:0;-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes yc-toast-exit-desktop{0%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:1;padding:var(--yc-toaster-padding);-webkit-transform:translateX(0);transform:translateX(0)}50%{height:var(--yc-toast-height);margin-bottom:var(--yc-toaster-margin);opacity:0;padding:var(--yc-toaster-padding);-webkit-transform:translateX(10px);transform:translateX(10px)}to{height:0;margin-bottom:0;opacity:0;padding:0;-webkit-transform:translateX(10px);transform:translateX(10px)}}.yc-toaster{align-items:flex-end;bottom:0;display:flex;flex-direction:column;position:fixed;right:10px;width:var(--yc-toaster-desktop-width);z-index:100000}.yc-toaster_mobile{left:50%;-webkit-transform:translate(-50%);transform:translate(-50%);width:calc(100% - 20px)}.g-root{--yc-toaster-desktop-width:312px}.yc-toast{--yc-toaster-margin:10px;--yc-toaster-padding:16px;background-color:var(--g-color-base-background);border-radius:8px;box-shadow:0 0 15px var(--g-color-sfx-shadow);box-sizing:border-box;display:flex;font-size:var(--g-text-body-2-font-size);margin-bottom:var(--yc-toaster-margin);overflow:hidden;padding:var(--yc-toaster-padding);position:relative;width:inherit;z-index:0}.yc-toast_mobile{width:100%}.yc-toast_default{background-color:var(--g-color-base-float)}.yc-toast_info .yc-toast__container:before{background-color:var(--g-color-base-info-light)}.yc-toast_info .yc-toast__icon{color:var(--g-color-text-info-heavy)}.yc-toast_success .yc-toast__container:before{background-color:var(--g-color-base-positive-light)}.yc-toast_success .yc-toast__icon{color:var(--g-color-text-positive-heavy)}.yc-toast_warning .yc-toast__container:before{background-color:var(--g-color-base-warning-light)}.yc-toast_warning .yc-toast__icon{color:var(--g-color-text-warning-heavy)}.yc-toast_error .yc-toast__container:before{background-color:var(--g-color-base-danger-light)}.yc-toast_error .yc-toast__icon{color:var(--g-color-text-danger-heavy)}.yc-toast_utility .yc-toast__container:before{background-color:var(--g-color-base-utility-light)}.yc-toast_utility .yc-toast__icon{color:var(--g-color-text-utility-heavy)}.yc-toast .yc-toast__container{grid-row-gap:8px;display:grid;flex:1 1 auto;grid-template-columns:100%;height:100%;min-height:var(--g-text-body-2-line-height);min-width:0;row-gap:8px;width:100%}.yc-toast .yc-toast__container:before{content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}.yc-toast__icon-container{flex:0 0 auto;padding-right:8px;padding-top:2px}.yc-toast__title{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height);margin:0}.yc-toast__content_without-title,.yc-toast__title{padding-right:32px}.yc-toast__action{margin-right:8px}.yc-toast .yc-toast__btn-close{position:absolute;right:16px;top:16px}.yc-button{--yc-button-background-color:transparent;--yc-button-background-color-hover:var(--g-color-base-simple-hover);--yc-button-outline-color:var(--g-color-line-focus);--yc-button-icon-space:calc(var(--yc-button-padding) + var(--yc-button-icon-size) + var(--yc-button-icon-offset));--yc-button-icon-position:calc(var(--yc-button-padding) - (var(--yc-button-height) - var(--yc-button-icon-size))/2);--yc-button-font-size:var(--g-text-body-1-font-size);-webkit-tap-highlight-color:rgba(0,0,0,0);background:none;background:transparent;border:none;box-sizing:border-box;color:inherit;cursor:pointer;display:inline-block;font-family:var(--g-text-body-font-family);font-size:inherit;font-size:var(--yc-button-font-size);font-weight:var(--g-text-body-font-weight);height:var(--yc-button-height);line-height:var(--yc-button-height);margin:0;outline:none;overflow:visible;padding:0;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;-webkit-transform:scale(1);transform:scale(1);transition:color .15s linear,-webkit-transform .1s ease-out;transition:transform .1s ease-out,color .15s linear;transition:transform .1s ease-out,color .15s linear,-webkit-transform .1s ease-out;-webkit-user-select:none;user-select:none;white-space:nowrap}.yc-button:before{background-color:var(--yc-button-background-color);bottom:0;content:"";left:0;position:absolute;right:0;top:0;transition:background-color .15s linear;z-index:-1}.yc-button:hover:before{background-color:var(--yc-button-background-color-hover)}.yc-button:focus:before{outline:2px solid var(--yc-button-outline-color)}.yc-button:focus:not(:focus-visible):before{outline:none}.yc-button:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;-webkit-transform:scale(1);transform:scale(1);transition:none;z-index:-1}.yc-button:active{-webkit-transform:scale(.96);transform:scale(.96);transition:none}.yc-button:active:after{-webkit-transform:scale(1.042);transform:scale(1.042)}.yc-button_size_xs{--yc-button-height:20px;--yc-button-border-radius:var(--g-border-radius-xs);--yc-button-padding:6px;--yc-button-icon-size:12px;--yc-button-icon-offset:4px}.yc-button_size_s{--yc-button-height:24px;--yc-button-border-radius:var(--g-border-radius-s);--yc-button-padding:8px;--yc-button-icon-size:16px;--yc-button-icon-offset:4px}.yc-button_size_m{--yc-button-height:28px;--yc-button-border-radius:var(--g-border-radius-m);--yc-button-padding:12px;--yc-button-icon-size:16px;--yc-button-icon-offset:8px}.yc-button_size_l{--yc-button-height:36px;--yc-button-border-radius:var(--g-border-radius-l);--yc-button-padding:16px;--yc-button-icon-size:16px;--yc-button-icon-offset:8px}.yc-button_size_xl{--yc-button-height:44px;--yc-button-border-radius:var(--g-border-radius-xl);--yc-button-padding:24px;--yc-button-icon-size:20px;--yc-button-icon-offset:12px;--yc-button-font-size:var(--g-text-body-2-font-size)}.yc-button_view_normal{--yc-button-background-color:var(--g-color-base-generic);--yc-button-background-color-hover:var(--g-color-base-generic-hover)}.yc-button_view_normal,.yc-button_view_normal:active,.yc-button_view_normal:focus,.yc-button_view_normal:hover,.yc-button_view_normal:link,.yc-button_view_normal:visited{color:var(--g-color-text-primary)}.yc-button_view_action{--yc-button-background-color:var(--g-color-base-brand);--yc-button-background-color-hover:var(--g-color-base-brand-hover);--yc-button-outline-color:var(--g-color-base-brand)}.yc-button_view_action:focus:before{outline-offset:1px}.yc-button_view_action,.yc-button_view_action:active,.yc-button_view_action:focus,.yc-button_view_action:hover,.yc-button_view_action:link,.yc-button_view_action:visited{color:var(--g-color-text-brand-contrast)}.yc-button_view_outlined,.yc-button_view_outlined:active,.yc-button_view_outlined:focus,.yc-button_view_outlined:hover,.yc-button_view_outlined:link,.yc-button_view_outlined:visited{color:var(--g-color-text-primary)}.yc-button_view_outlined:before{border:1px solid var(--g-color-line-generic)}.yc-button_view_outlined-info,.yc-button_view_outlined-info:active,.yc-button_view_outlined-info:focus,.yc-button_view_outlined-info:hover,.yc-button_view_outlined-info:link,.yc-button_view_outlined-info:visited{color:var(--g-color-text-info)}.yc-button_view_outlined-info:before{border:1px solid var(--g-color-line-info)}.yc-button_view_outlined-success,.yc-button_view_outlined-success:active,.yc-button_view_outlined-success:focus,.yc-button_view_outlined-success:hover,.yc-button_view_outlined-success:link,.yc-button_view_outlined-success:visited{color:var(--g-color-text-positive)}.yc-button_view_outlined-success:before{border:1px solid var(--g-color-line-positive)}.yc-button_view_outlined-warning,.yc-button_view_outlined-warning:active,.yc-button_view_outlined-warning:focus,.yc-button_view_outlined-warning:hover,.yc-button_view_outlined-warning:link,.yc-button_view_outlined-warning:visited{color:var(--g-color-text-warning)}.yc-button_view_outlined-warning:before{border:1px solid var(--g-color-line-warning)}.yc-button_view_outlined-danger,.yc-button_view_outlined-danger:active,.yc-button_view_outlined-danger:focus,.yc-button_view_outlined-danger:hover,.yc-button_view_outlined-danger:link,.yc-button_view_outlined-danger:visited{color:var(--g-color-text-danger)}.yc-button_view_outlined-danger:before{border:1px solid var(--g-color-line-danger)}.yc-button_view_outlined-utility,.yc-button_view_outlined-utility:active,.yc-button_view_outlined-utility:focus,.yc-button_view_outlined-utility:hover,.yc-button_view_outlined-utility:link,.yc-button_view_outlined-utility:visited{color:var(--g-color-text-utility)}.yc-button_view_outlined-utility:before{border:1px solid var(--g-color-line-utility)}.yc-button_view_outlined-action,.yc-button_view_outlined-action:active,.yc-button_view_outlined-action:focus,.yc-button_view_outlined-action:hover,.yc-button_view_outlined-action:link,.yc-button_view_outlined-action:visited{color:var(--g-color-text-brand)}.yc-button_view_outlined-action:before{border:1px solid var(--g-color-line-brand)}.yc-button_view_raised{--yc-button-background-color:var(--g-color-base-float);--yc-button-background-color-hover:var(--g-color-base-float-hover)}.yc-button_view_raised,.yc-button_view_raised:active,.yc-button_view_raised:focus,.yc-button_view_raised:hover,.yc-button_view_raised:link,.yc-button_view_raised:visited{color:var(--g-color-text-primary)}.yc-button_view_raised:before{box-shadow:0 3px 5px var(--g-color-sfx-shadow)}.yc-button_view_raised:active:before{box-shadow:0 1px 2px var(--g-color-sfx-shadow)}.yc-button_view_flat,.yc-button_view_flat:active,.yc-button_view_flat:focus,.yc-button_view_flat:hover,.yc-button_view_flat:link,.yc-button_view_flat:visited{color:var(--g-color-text-primary)}.yc-button_view_flat-secondary,.yc-button_view_flat-secondary:active,.yc-button_view_flat-secondary:focus,.yc-button_view_flat-secondary:link,.yc-button_view_flat-secondary:visited{color:var(--g-color-text-secondary)}.yc-button_view_flat-secondary:hover{color:var(--g-color-text-primary)}.yc-button_view_flat-info,.yc-button_view_flat-info:active,.yc-button_view_flat-info:focus,.yc-button_view_flat-info:hover,.yc-button_view_flat-info:link,.yc-button_view_flat-info:visited{color:var(--g-color-text-info)}.yc-button_view_flat-success,.yc-button_view_flat-success:active,.yc-button_view_flat-success:focus,.yc-button_view_flat-success:hover,.yc-button_view_flat-success:link,.yc-button_view_flat-success:visited{color:var(--g-color-text-positive)}.yc-button_view_flat-warning,.yc-button_view_flat-warning:active,.yc-button_view_flat-warning:focus,.yc-button_view_flat-warning:hover,.yc-button_view_flat-warning:link,.yc-button_view_flat-warning:visited{color:var(--g-color-text-warning)}.yc-button_view_flat-danger,.yc-button_view_flat-danger:active,.yc-button_view_flat-danger:focus,.yc-button_view_flat-danger:hover,.yc-button_view_flat-danger:link,.yc-button_view_flat-danger:visited{color:var(--g-color-text-danger)}.yc-button_view_flat-utility,.yc-button_view_flat-utility:active,.yc-button_view_flat-utility:focus,.yc-button_view_flat-utility:hover,.yc-button_view_flat-utility:link,.yc-button_view_flat-utility:visited{color:var(--g-color-text-utility)}.yc-button_view_flat-action,.yc-button_view_flat-action:active,.yc-button_view_flat-action:focus,.yc-button_view_flat-action:hover,.yc-button_view_flat-action:link,.yc-button_view_flat-action:visited{color:var(--g-color-text-brand)}.yc-button_view_normal-contrast{--yc-button-background-color:var(--g-color-base-light);--yc-button-background-color-hover:var(--g-color-base-light-hover);--yc-button-outline-color:var(--g-color-line-light)}.yc-button_view_normal-contrast,.yc-button_view_normal-contrast:active,.yc-button_view_normal-contrast:focus,.yc-button_view_normal-contrast:hover,.yc-button_view_normal-contrast:link,.yc-button_view_normal-contrast:visited{color:var(--g-color-text-dark-primary)}.yc-button_view_outlined-contrast{--yc-button-background-color:transparent;--yc-button-background-color-hover:var(--g-color-base-light-simple-hover);--yc-button-outline-color:var(--g-color-line-light)}.yc-button_view_outlined-contrast,.yc-button_view_outlined-contrast:active,.yc-button_view_outlined-contrast:focus,.yc-button_view_outlined-contrast:hover,.yc-button_view_outlined-contrast:link,.yc-button_view_outlined-contrast:visited{color:var(--g-color-text-light-primary)}.yc-button_view_outlined-contrast:before{border:1px solid var(--g-color-line-light)}.yc-button_view_flat-contrast{--yc-button-background-color:transparent;--yc-button-background-color-hover:var(--g-color-base-light-simple-hover);--yc-button-outline-color:var(--g-color-line-light)}.yc-button_view_flat-contrast,.yc-button_view_flat-contrast:active,.yc-button_view_flat-contrast:focus,.yc-button_view_flat-contrast:hover,.yc-button_view_flat-contrast:link,.yc-button_view_flat-contrast:visited{color:var(--g-color-text-light-primary)}.yc-button_view_flat-action.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat-danger.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat-info.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat-secondary.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat-success.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat-utility.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat-warning.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat.yc-button_disabled:not(.yc-button_loading){--yc-button-background-color:transparent;--yc-button-background-color-hover:transparent;color:var(--g-color-text-hint)}.yc-button_view_flat-contrast.yc-button_disabled:not(.yc-button_loading){--yc-button-background-color:transparent;--yc-button-background-color-hover:transparent;color:var(--g-color-text-light-hint)}.yc-button_view_normal-contrast.yc-button_disabled:not(.yc-button_loading),.yc-button_view_outlined-contrast.yc-button_disabled:not(.yc-button_loading){--yc-button-background-color:var(--g-color-base-light-disabled);--yc-button-background-color-hover:var(--g-color-base-light-disabled);color:var(--g-color-text-light-secondary)}.yc-button_view_action.yc-button_selected,.yc-button_view_flat-action.yc-button_selected,.yc-button_view_flat-secondary.yc-button_selected,.yc-button_view_flat.yc-button_selected,.yc-button_view_normal.yc-button_selected,.yc-button_view_outlined-action.yc-button_selected,.yc-button_view_outlined.yc-button_selected,.yc-button_view_raised.yc-button_selected{--yc-button-background-color:var(--g-color-base-selection);--yc-button-background-color-hover:var(--g-color-base-selection-hover)}.yc-button_view_action.yc-button_selected,.yc-button_view_action.yc-button_selected:active,.yc-button_view_action.yc-button_selected:focus,.yc-button_view_action.yc-button_selected:hover,.yc-button_view_action.yc-button_selected:link,.yc-button_view_action.yc-button_selected:visited,.yc-button_view_flat-action.yc-button_selected,.yc-button_view_flat-action.yc-button_selected:active,.yc-button_view_flat-action.yc-button_selected:focus,.yc-button_view_flat-action.yc-button_selected:hover,.yc-button_view_flat-action.yc-button_selected:link,.yc-button_view_flat-action.yc-button_selected:visited,.yc-button_view_flat-secondary.yc-button_selected,.yc-button_view_flat-secondary.yc-button_selected:active,.yc-button_view_flat-secondary.yc-button_selected:focus,.yc-button_view_flat-secondary.yc-button_selected:hover,.yc-button_view_flat-secondary.yc-button_selected:link,.yc-button_view_flat-secondary.yc-button_selected:visited,.yc-button_view_flat.yc-button_selected,.yc-button_view_flat.yc-button_selected:active,.yc-button_view_flat.yc-button_selected:focus,.yc-button_view_flat.yc-button_selected:hover,.yc-button_view_flat.yc-button_selected:link,.yc-button_view_flat.yc-button_selected:visited,.yc-button_view_normal.yc-button_selected,.yc-button_view_normal.yc-button_selected:active,.yc-button_view_normal.yc-button_selected:focus,.yc-button_view_normal.yc-button_selected:hover,.yc-button_view_normal.yc-button_selected:link,.yc-button_view_normal.yc-button_selected:visited,.yc-button_view_outlined-action.yc-button_selected,.yc-button_view_outlined-action.yc-button_selected:active,.yc-button_view_outlined-action.yc-button_selected:focus,.yc-button_view_outlined-action.yc-button_selected:hover,.yc-button_view_outlined-action.yc-button_selected:link,.yc-button_view_outlined-action.yc-button_selected:visited,.yc-button_view_outlined.yc-button_selected,.yc-button_view_outlined.yc-button_selected:active,.yc-button_view_outlined.yc-button_selected:focus,.yc-button_view_outlined.yc-button_selected:hover,.yc-button_view_outlined.yc-button_selected:link,.yc-button_view_outlined.yc-button_selected:visited,.yc-button_view_raised.yc-button_selected,.yc-button_view_raised.yc-button_selected:active,.yc-button_view_raised.yc-button_selected:focus,.yc-button_view_raised.yc-button_selected:hover,.yc-button_view_raised.yc-button_selected:link,.yc-button_view_raised.yc-button_selected:visited{color:var(--g-color-text-brand-heavy)}.yc-button_view_action.yc-button_selected:before,.yc-button_view_flat-action.yc-button_selected:before,.yc-button_view_flat-secondary.yc-button_selected:before,.yc-button_view_flat.yc-button_selected:before,.yc-button_view_normal.yc-button_selected:before,.yc-button_view_outlined-action.yc-button_selected:before,.yc-button_view_outlined.yc-button_selected:before,.yc-button_view_raised.yc-button_selected:before{border:none}.yc-button_view_flat-info.yc-button_selected,.yc-button_view_outlined-info.yc-button_selected{--yc-button-background-color:var(--g-color-base-info-light);--yc-button-background-color-hover:var(--g-color-base-info-light-hover)}.yc-button_view_flat-info.yc-button_selected,.yc-button_view_flat-info.yc-button_selected:active,.yc-button_view_flat-info.yc-button_selected:focus,.yc-button_view_flat-info.yc-button_selected:hover,.yc-button_view_flat-info.yc-button_selected:link,.yc-button_view_flat-info.yc-button_selected:visited,.yc-button_view_outlined-info.yc-button_selected,.yc-button_view_outlined-info.yc-button_selected:active,.yc-button_view_outlined-info.yc-button_selected:focus,.yc-button_view_outlined-info.yc-button_selected:hover,.yc-button_view_outlined-info.yc-button_selected:link,.yc-button_view_outlined-info.yc-button_selected:visited{color:var(--g-color-text-info-heavy)}.yc-button_view_flat-info.yc-button_selected:before,.yc-button_view_outlined-info.yc-button_selected:before{border:none}.yc-button_view_flat-success.yc-button_selected,.yc-button_view_outlined-success.yc-button_selected{--yc-button-background-color:var(--g-color-base-positive-light);--yc-button-background-color-hover:var(--g-color-base-positive-light-hover)}.yc-button_view_flat-success.yc-button_selected,.yc-button_view_flat-success.yc-button_selected:active,.yc-button_view_flat-success.yc-button_selected:focus,.yc-button_view_flat-success.yc-button_selected:hover,.yc-button_view_flat-success.yc-button_selected:link,.yc-button_view_flat-success.yc-button_selected:visited,.yc-button_view_outlined-success.yc-button_selected,.yc-button_view_outlined-success.yc-button_selected:active,.yc-button_view_outlined-success.yc-button_selected:focus,.yc-button_view_outlined-success.yc-button_selected:hover,.yc-button_view_outlined-success.yc-button_selected:link,.yc-button_view_outlined-success.yc-button_selected:visited{color:var(--g-color-text-positive-heavy)}.yc-button_view_flat-success.yc-button_selected:before,.yc-button_view_outlined-success.yc-button_selected:before{border:none}.yc-button_view_flat-warning.yc-button_selected,.yc-button_view_outlined-warning.yc-button_selected{--yc-button-background-color:var(--g-color-base-warning-light);--yc-button-background-color-hover:var(--g-color-base-warning-light-hover)}.yc-button_view_flat-warning.yc-button_selected,.yc-button_view_flat-warning.yc-button_selected:active,.yc-button_view_flat-warning.yc-button_selected:focus,.yc-button_view_flat-warning.yc-button_selected:hover,.yc-button_view_flat-warning.yc-button_selected:link,.yc-button_view_flat-warning.yc-button_selected:visited,.yc-button_view_outlined-warning.yc-button_selected,.yc-button_view_outlined-warning.yc-button_selected:active,.yc-button_view_outlined-warning.yc-button_selected:focus,.yc-button_view_outlined-warning.yc-button_selected:hover,.yc-button_view_outlined-warning.yc-button_selected:link,.yc-button_view_outlined-warning.yc-button_selected:visited{color:var(--g-color-text-warning-heavy)}.yc-button_view_flat-warning.yc-button_selected:before,.yc-button_view_outlined-warning.yc-button_selected:before{border:none}.yc-button_view_flat-danger.yc-button_selected,.yc-button_view_outlined-danger.yc-button_selected{--yc-button-background-color:var(--g-color-base-danger-light);--yc-button-background-color-hover:var(--g-color-base-danger-light-hover)}.yc-button_view_flat-danger.yc-button_selected,.yc-button_view_flat-danger.yc-button_selected:active,.yc-button_view_flat-danger.yc-button_selected:focus,.yc-button_view_flat-danger.yc-button_selected:hover,.yc-button_view_flat-danger.yc-button_selected:link,.yc-button_view_flat-danger.yc-button_selected:visited,.yc-button_view_outlined-danger.yc-button_selected,.yc-button_view_outlined-danger.yc-button_selected:active,.yc-button_view_outlined-danger.yc-button_selected:focus,.yc-button_view_outlined-danger.yc-button_selected:hover,.yc-button_view_outlined-danger.yc-button_selected:link,.yc-button_view_outlined-danger.yc-button_selected:visited{color:var(--g-color-text-danger-heavy)}.yc-button_view_flat-danger.yc-button_selected:before,.yc-button_view_outlined-danger.yc-button_selected:before{border:none}.yc-button_view_flat-utility.yc-button_selected,.yc-button_view_outlined-utility.yc-button_selected{--yc-button-background-color:var(--g-color-base-utility-light);--yc-button-background-color-hover:var(--g-color-base-utility-light-hover)}.yc-button_view_flat-utility.yc-button_selected,.yc-button_view_flat-utility.yc-button_selected:active,.yc-button_view_flat-utility.yc-button_selected:focus,.yc-button_view_flat-utility.yc-button_selected:hover,.yc-button_view_flat-utility.yc-button_selected:link,.yc-button_view_flat-utility.yc-button_selected:visited,.yc-button_view_outlined-utility.yc-button_selected,.yc-button_view_outlined-utility.yc-button_selected:active,.yc-button_view_outlined-utility.yc-button_selected:focus,.yc-button_view_outlined-utility.yc-button_selected:hover,.yc-button_view_outlined-utility.yc-button_selected:link,.yc-button_view_outlined-utility.yc-button_selected:visited{color:var(--g-color-text-utility-heavy)}.yc-button_view_flat-utility.yc-button_selected:before,.yc-button_view_outlined-utility.yc-button_selected:before{border:none}.yc-button.yc-button_pin_round-round:before{border-radius:var(--yc-button-border-radius)}.yc-button.yc-button_pin_brick-brick:before{border-radius:0}.yc-button.yc-button_pin_clear-clear:before{border-left:0;border-radius:0;border-right:0}.yc-button.yc-button_pin_circle-circle:before{border-radius:100px}.yc-button.yc-button_pin_round-brick:before{border-radius:var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius)}.yc-button.yc-button_pin_brick-round:before{border-radius:0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0}.yc-button.yc-button_pin_round-clear:before{border-radius:var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius);border-right:0}.yc-button.yc-button_pin_clear-round:before{border-left:0;border-radius:0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0}.yc-button.yc-button_pin_brick-clear:before{border-radius:0;border-right:0}.yc-button.yc-button_pin_clear-brick:before{border-left:0;border-radius:0}.yc-button.yc-button_pin_circle-brick:before{border-radius:100px 0 0 100px}.yc-button.yc-button_pin_brick-circle:before{border-radius:0 100px 100px 0}.yc-button.yc-button_pin_circle-clear:before{border-radius:100px 0 0 100px;border-right:0}.yc-button.yc-button_pin_clear-circle:before{border-left:0;border-radius:0 100px 100px 0}.yc-button.yc-button_pin_round-round:after{border-radius:var(--yc-button-border-radius)}.yc-button.yc-button_pin_brick-brick:after{border-radius:0}.yc-button.yc-button_pin_clear-clear:after{border-left:0;border-radius:0;border-right:0}.yc-button.yc-button_pin_circle-circle:after{border-radius:100px}.yc-button.yc-button_pin_round-brick:after{border-radius:var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius)}.yc-button.yc-button_pin_brick-round:after{border-radius:0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0}.yc-button.yc-button_pin_round-clear:after{border-radius:var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius);border-right:0}.yc-button.yc-button_pin_clear-round:after{border-left:0;border-radius:0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0}.yc-button.yc-button_pin_brick-clear:after{border-radius:0;border-right:0}.yc-button.yc-button_pin_clear-brick:after{border-left:0;border-radius:0}.yc-button.yc-button_pin_circle-brick:after{border-radius:100px 0 0 100px}.yc-button.yc-button_pin_brick-circle:after{border-radius:0 100px 100px 0}.yc-button.yc-button_pin_circle-clear:after{border-radius:100px 0 0 100px;border-right:0}.yc-button.yc-button_pin_clear-circle:after{border-left:0;border-radius:0 100px 100px 0}.yc-button__text{display:inline-block;padding:0 var(--yc-button-padding);white-space:nowrap}.yc-button__icon{display:inline-block;height:var(--yc-button-height);pointer-events:none;position:relative;width:var(--yc-button-height)}.yc-button__icon:after{content:" ";visibility:hidden}.yc-button__icon-inner{align-items:center;bottom:0;display:flex;justify-content:center;left:0;right:0}.yc-button__icon-inner,.yc-button__icon_side_left,.yc-button__icon_side_right{position:absolute;top:0}.yc-button__icon_side_left{left:var(--yc-button-icon-position)}.yc-button__icon_side_left~.yc-button__text{padding-left:var(--yc-button-icon-space)}.yc-button__icon_side_right{right:var(--yc-button-icon-position)}.yc-button__icon_side_right~.yc-button__text{padding-right:var(--yc-button-icon-space)}.yc-button:has(.yc-button__icon:only-child){--yc-button-padding:0}.yc-button:has(.yc-button__icon:only-child):not(.yc-button_width_max){width:var(--yc-button-height)}.yc-button_disabled{cursor:default;pointer-events:none}.yc-button_disabled:not(.yc-button_loading){--yc-button-background-color:var(--g-color-base-generic-accent-disabled);--yc-button-background-color-hover:var(--g-color-base-generic-accent-disabled);color:var(--g-color-text-hint)}.yc-button_disabled:not(.yc-button_loading):before,.yc-button_disabled:not(.yc-button_loading):hover:before{border:none}.yc-button_disabled:active{-webkit-transform:scale(1);transform:scale(1)}.yc-button_loading:before{-webkit-animation:yc-loading-animation .5s linear infinite;animation:yc-loading-animation .5s linear infinite;background-clip:padding-box;background-image:repeating-linear-gradient(-45deg,var(--yc-button-background-color),var(--yc-button-background-color) 4px,var(--yc-button-background-color-hover) 4px,var(--yc-button-background-color-hover) 8px);background-size:150%}.yc-button_width_auto{max-width:100%}.yc-button_width_max{width:100%}.yc-button_width_auto .yc-button__text,.yc-button_width_max .yc-button__text{display:block;overflow:hidden;text-overflow:ellipsis}.yc-icon{color:inherit;line-height:0;vertical-align:top}.info-viewer{--ydb-info-viewer-font-size:var(--g-text-body-2-font-size);--ydb-info-viewer-line-height:var(--g-text-body-2-line-height);--ydb-info-viewer-title-font-weight:600;--ydb-info-viewer-title-margin:15px 0 10px;--ydb-info-viewer-items-gap:7px;font-size:var(--ydb-info-viewer-font-size);line-height:var(--ydb-info-viewer-line-height)}.info-viewer__title{font-weight:var(--ydb-info-viewer-title-font-weight);margin:var(--ydb-info-viewer-title-margin)}.info-viewer__items{display:flex;flex-direction:column;gap:var(--ydb-info-viewer-items-gap);max-width:100%}.info-viewer__row{align-items:baseline;display:flex;max-width:100%;padding-top:4px}.info-viewer__label{align-items:baseline;color:var(--g-color-text-secondary);display:flex;flex:0 1 auto;min-width:200px;white-space:nowrap}.info-viewer__label-text_multiline{max-width:180px;overflow:visible;white-space:normal}.info-viewer__dots{border-bottom:1px dotted var(--g-color-text-secondary);display:flex;flex:1 1 auto;margin:0 2px}.info-viewer__value{display:flex;min-width:130px;word-break:break-all}.info-viewer_size_s{--ydb-info-viewer-font-size:var(--g-text-body-1-font-size);--ydb-info-viewer-line-height:var(--g-text-body-1-line-height);--ydb-info-viewer-title-font-weight:500;--ydb-info-viewer-title-margin:0 0 4px;--ydb-info-viewer-items-gap:4px}.info-viewer_size_s .info-viewer__row{height:auto}.info-viewer_size_s .info-viewer__label{min-width:85px}.ydb-node-endpoints-tooltip-content .info-viewer__value{min-width:70px}.yc-tooltip[class]{--yc-popup-border-width:0;--yc-popup-background-color:var(--g-color-base-float-heavy)}.yc-tooltip__popup-content{pointer-events:none}.yc-tooltip__content{color:var(--g-color-text-light-primary);padding:6px 12px}.yc-popup{--yc-popup-background-color:var(--g-color-base-float);--yc-popup-border-color:var(--g-color-line-generic-solid);--yc-popup-border-width:1px;visibility:hidden;z-index:1000}.yc-popup_exit_active,.yc-popup_open{visibility:visible}.yc-popup_exit_active[data-popper-placement*=bottom] .yc-popup__content{-webkit-animation-name:yc-popup-bottom;animation-name:yc-popup-bottom}.yc-popup_exit_active[data-popper-placement*=top] .yc-popup__content{-webkit-animation-name:yc-popup-top;animation-name:yc-popup-top}.yc-popup_exit_active[data-popper-placement*=left] .yc-popup__content{-webkit-animation-name:yc-popup-left;animation-name:yc-popup-left}.yc-popup_exit_active[data-popper-placement*=right] .yc-popup__content{-webkit-animation-name:yc-popup-right;animation-name:yc-popup-right}.yc-popup_appear_active[data-popper-placement*=bottom] .yc-popup__content,.yc-popup_enter_active[data-popper-placement*=bottom] .yc-popup__content{-webkit-animation-name:yc-popup-bottom-open;animation-name:yc-popup-bottom-open}.yc-popup_appear_active[data-popper-placement*=top] .yc-popup__content,.yc-popup_enter_active[data-popper-placement*=top] .yc-popup__content{-webkit-animation-name:yc-popup-top-open;animation-name:yc-popup-top-open}.yc-popup_appear_active[data-popper-placement*=left] .yc-popup__content,.yc-popup_enter_active[data-popper-placement*=left] .yc-popup__content{-webkit-animation-name:yc-popup-left-open;animation-name:yc-popup-left-open}.yc-popup_appear_active[data-popper-placement*=right] .yc-popup__content,.yc-popup_enter_active[data-popper-placement*=right] .yc-popup__content{-webkit-animation-name:yc-popup-right-open;animation-name:yc-popup-right-open}.yc-popup[data-popper-placement*=bottom] .yc-popup__arrow{top:-9px}.yc-popup[data-popper-placement*=top] .yc-popup__arrow{bottom:-9px}.yc-popup[data-popper-placement*=top] .yc-popup__arrow-content{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.yc-popup[data-popper-placement*=left] .yc-popup__arrow{right:-9px}.yc-popup[data-popper-placement*=left] .yc-popup__arrow-content{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.yc-popup[data-popper-placement*=right] .yc-popup__arrow{left:-9px}.yc-popup[data-popper-placement*=right] .yc-popup__arrow-content{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.yc-popup__content{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;background-color:var(--yc-popup-background-color);border-radius:4px;box-shadow:0 0 0 var(--yc-popup-border-width) var(--yc-popup-border-color),0 8px 20px var(--yc-popup-border-width) var(--g-color-sfx-shadow);outline:none;position:relative}.yc-popup__content>.yc-popup__arrow+*,.yc-popup__content>:first-child:not(.yc-popup__arrow){border-top-left-radius:inherit;border-top-right-radius:inherit}.yc-popup__content>:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.yc-popup__arrow-content{display:flex;height:18px;overflow:hidden;position:relative;width:18px}.yc-popup__arrow-circle-wrapper{background-color:initial;height:9px;overflow:hidden;position:relative;width:9px}.yc-popup__arrow-circle{border-radius:50%;box-shadow:inset 0 0 0 calc(5px - var(--yc-popup-border-width)) var(--yc-popup-background-color),inset 0 0 0 5px var(--yc-popup-border-color);box-sizing:border-box;height:30px;position:absolute;width:28px}.yc-popup__arrow-circle_left{bottom:-4px;right:-5px}.yc-popup__arrow-circle_right{bottom:-4px;left:-5px}@-webkit-keyframes yc-popup-bottom{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}}@keyframes yc-popup-bottom{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}}@-webkit-keyframes yc-popup-bottom-open{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes yc-popup-bottom-open{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes yc-popup-top{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}}@keyframes yc-popup-top{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}}@-webkit-keyframes yc-popup-top-open{0%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes yc-popup-top-open{0%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes yc-popup-left{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}}@keyframes yc-popup-left{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}}@-webkit-keyframes yc-popup-left-open{0%{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes yc-popup-left-open{0%{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes yc-popup-right{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes yc-popup-right{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}}@-webkit-keyframes yc-popup-right-open{0%{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes yc-popup-right-open{0%{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}.yc-clipboard-icon__state{-webkit-animation:yc-clipboard-icon-state-dash 1s;animation:yc-clipboard-icon-state-dash 1s}@-webkit-keyframes yc-clipboard-icon-state-dash{0%{stroke-dasharray:0 15}40%{stroke-dasharray:15 0}to{stroke-dasharray:15 0}}@keyframes yc-clipboard-icon-state-dash{0%{stroke-dasharray:0 15}40%{stroke-dasharray:15 0}to{stroke-dasharray:15 0}}.entity-status{align-items:center;display:inline-flex;font-size:var(--g-text-body-2-font-size);height:100%;line-height:var(--g-text-body-2-line-height);max-width:100%}.entity-status__clipboard-button{color:var(--yc-color-text-secondary);margin-left:8px;visibility:hidden}.entity-status__clipboard-button_visible{visibility:visible}.entity-status a{color:var(--g-color-text-link);text-decoration:none}.entity-status a:hover{color:var(--g-color-text-link-hover)}.entity-status__label{color:var(--g-color-text-complementary);font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);margin-right:2px}.entity-status__label_size_l{font-size:var(--g-text-header-2-font-size)}.entity-status__link{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entity-status__link_with-left-trim{direction:rtl}.entity-status__link_with-left-trim .entity-status__name{unicode-bidi:plaintext}.entity-status__status-color,.entity-status__status-icon{border-radius:3px;flex-shrink:0;margin-right:8px}.entity-status__status-color_size_xs,.entity-status__status-icon_size_xs{aspect-ratio:1;height:12px;width:12px}.entity-status__status-color_size_s,.entity-status__status-icon_size_s{aspect-ratio:1;height:16px;width:16px}.entity-status__status-color_size_m,.entity-status__status-icon_size_m{aspect-ratio:1;height:18px;width:18px}.entity-status__status-color_size_l,.entity-status__status-icon_size_l{height:27px;width:27px}.entity-status__status-color_state_green,.entity-status__status-color_state_running{background-color:var(--ydb-color-status-green)}.entity-status__status-color_state_yellow{background-color:var(--ydb-color-status-yellow)}.entity-status__status-color_state_blue{background-color:var(--ydb-color-status-blue)}.entity-status__status-color_state_red{background-color:var(--ydb-color-status-red)}.entity-status__status-color_state_gray,.entity-status__status-color_state_grey{background-color:var(--ydb-color-status-grey)}.entity-status__status-color_state_orange{background-color:var(--ydb-color-status-orange)}.entity-status__label_state_blue,.entity-status__status-icon_state_blue{color:var(--ydb-color-status-blue)}.entity-status__label_state_yellow,.entity-status__status-icon_state_yellow{color:var(--ydb-color-status-yellow)}.entity-status__label_state_orange,.entity-status__status-icon_state_orange{color:var(--ydb-color-status-orange)}.entity-status__label_state_red,.entity-status__status-icon_state_red{color:var(--ydb-color-status-red)}.yc-link{-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:var(--g-focus-border-radius);cursor:pointer;text-decoration:none;touch-action:manipulation}.yc-link:focus{outline:2px solid var(--g-color-line-focus)}.yc-link:focus:not(:focus-visible){outline:0}.yc-link_view_normal,.yc-link_view_normal-visitable{color:var(--g-color-text-link)}.yc-link_view_primary{color:var(--g-color-text-primary)}.yc-link_view_secondary{color:var(--g-color-text-secondary)}.yc-link_view_normal:hover,.yc-link_view_primary:hover,.yc-link_view_secondary:hover{color:var(--g-color-text-link-hover)}.yc-link_view_normal-visitable:visited,.yc-link_visitable:visited{color:var(--g-color-text-link-visited)}.yc-link_view_normal-visitable:visited:hover,.yc-link_visitable:visited:hover{color:var(--g-color-text-link-visited-hover)}.ydb-pool-bar{border:1px solid;border-radius:1px;cursor:pointer;height:20px;margin-right:2px;position:relative;width:6px}.ydb-pool-bar__popup-content{padding:10px;width:170px}.ydb-pool-bar:last-child{margin-right:0}.ydb-pool-bar_type_normal{border-color:var(--ydb-color-status-green)}.ydb-pool-bar_type_warning{border-color:var(--ydb-color-status-yellow)}.ydb-pool-bar_type_danger{border-color:var(--ydb-color-status-red)}.ydb-pool-bar__value{bottom:0;min-height:1px;position:absolute;width:100%}.ydb-pool-bar__value_type_normal{background-color:var(--ydb-color-status-green)}.ydb-pool-bar__value_type_warning{background-color:var(--ydb-color-status-yellow)}.ydb-pool-bar__value_type_danger{background-color:var(--ydb-color-status-red)}.ydb-pools-graph{display:flex}.tablets-statistic{align-items:center;display:flex;gap:2px}.tablets-statistic__tablet{border:1px solid;border-radius:2px;color:var(--g-color-text-secondary);display:inline-block;font-size:11px;height:20px;line-height:20px;padding:0 4px;text-align:center;text-decoration:none;text-transform:uppercase}.tablets-statistic__tablet_state_green{background-color:var(--g-color-base-positive-light);color:var(--g-color-text-positive)}.tablets-statistic__tablet_state_yellow{background-color:var(--g-color-base-warning-light);color:var(--g-color-text-warning)}.tablets-statistic__tablet_state_blue{background-color:var(--g-color-base-info-light);color:var(--g-color-text-info)}.tablets-statistic__tablet_state_orange{background-color:var(--g-color-base-warning-light);color:var(--g-color-text-warning-heavy)}.tablets-statistic__tablet_state_red{background:var(--g-color-base-danger-light);color:var(--g-color-text-danger)}.tablets-statistic__tablet_state_gray{border:1px solid var(--g-color-line-generic-hover);color:var(--g-color-text-secondary)}.yc-radio-button{--yc-radio-button-inner-border-radius:calc(var(--yc-radio-button-border-radius) - 3px);background-color:var(--g-color-base-generic);border-radius:var(--yc-radio-button-border-radius);box-sizing:border-box;display:inline-flex;flex-direction:row;font-family:var(--g-text-body-font-family);font-weight:var(--g-text-body-font-weight);position:relative}.yc-radio-button__plate{bottom:0;position:absolute;top:0;transition:left .2s,width .2s}.yc-radio-button__plate[hidden]{display:none}.yc-radio-button__option{border-radius:var(--yc-radio-button-inner-border-radius);cursor:pointer;flex:1 1 auto;font-size:var(--g-text-body-1-font-size);text-align:center;-webkit-transform:scale(1);transform:scale(1);transition:color .15s linear;-webkit-user-select:none;user-select:none}.yc-radio-button__option-outline{border-radius:var(--yc-radio-button-inner-border-radius);bottom:3px;content:"";left:3px;position:absolute;right:3px;top:3px;z-index:-1}.yc-radio-button__option-control{border:none;cursor:inherit;height:100%;left:0;margin:0;opacity:0;outline:none;padding:0;position:absolute;top:0;width:100%}.yc-radio-button__option-control:focus+.yc-radio-button__option-outline{box-shadow:0 0 0 2px var(--g-color-line-focus)}.yc-radio-button__option-control:focus:not(:focus-visible)+.yc-radio-button__option-outline{box-shadow:none}.yc-radio-button__option-text{color:var(--g-color-text-complementary);display:inline-block;white-space:nowrap}.yc-radio-button__option-text_icon{align-items:center;display:flex;height:100%}.yc-radio-button__option:hover .yc-radio-button__option-text,.yc-radio-button__option_checked .yc-radio-button__option-text{color:var(--g-color-text-primary)}.yc-radio-button__option_checked{cursor:default}.yc-radio-button__option_disabled{cursor:default;pointer-events:none}.yc-radio-button__option_disabled .yc-radio-button__option-text{color:var(--g-color-text-hint)}.yc-radio-button__option:before,.yc-radio-button__plate:before{border-radius:var(--yc-radio-button-inner-border-radius);bottom:3px;left:3px;position:absolute;right:3px;top:3px}.yc-radio-button__option:before{z-index:-1}.yc-radio-button__plate:before,.yc-radio-button__plate[hidden]~.yc-radio-button__option_checked:before{background-color:var(--g-color-base-background);content:""}.yc-radio-button_size_s{--yc-radio-button-border-radius:var(--g-border-radius-s)}.yc-radio-button_size_s .yc-radio-button__option{height:24px;line-height:24px}.yc-radio-button_size_s .yc-radio-button__option-text{margin:0 10px}.yc-radio-button_size_m{--yc-radio-button-border-radius:var(--g-border-radius-m)}.yc-radio-button_size_m .yc-radio-button__option{height:28px;line-height:28px}.yc-radio-button_size_m .yc-radio-button__option-text{margin:0 13px}.yc-radio-button_size_l{--yc-radio-button-border-radius:var(--g-border-radius-l)}.yc-radio-button_size_l .yc-radio-button__option{height:36px;line-height:36px}.yc-radio-button_size_l .yc-radio-button__option-text{margin:0 18px}.yc-radio-button_size_xl{--yc-radio-button-border-radius:var(--g-border-radius-xl)}.yc-radio-button_size_xl .yc-radio-button__option{font-size:var(--g-text-body-2-font-size);height:44px;line-height:44px}.yc-radio-button_size_xl .yc-radio-button__option-text{margin:0 25px}.yc-radio-button_width_auto{max-width:100%}.yc-radio-button_width_max{width:100%}.yc-radio-button_width_auto .yc-radio-button__option,.yc-radio-button_width_max .yc-radio-button__option{overflow:hidden}.yc-radio-button_width_auto .yc-radio-button__option-text,.yc-radio-button_width_max .yc-radio-button__option-text{display:block;overflow:hidden;text-overflow:ellipsis}.ydb-search{min-width:100px}.yc-text-input{display:inline-block;position:relative;width:100%}.yc-text-input__content{box-sizing:border-box;display:flex;width:100%}.yc-text-input__control{background-color:initial;border:none;box-sizing:border-box;color:var(--g-color-text-primary);display:inline-block;flex-grow:1;font-family:var(--g-text-body-font-family);font-weight:var(--g-text-body-font-weight);margin:0;padding:0;position:relative;vertical-align:top;width:100%}.yc-text-input__control::-webkit-input-placeholder{color:var(--g-color-text-hint);overflow:hidden;white-space:nowrap}.yc-text-input__control::placeholder{color:var(--g-color-text-hint);overflow:hidden;white-space:nowrap}.yc-text-input__control:focus{outline:none}.yc-text-input__control[type=number]{-webkit-appearance:textfield;appearance:textfield}.yc-text-input__label{box-sizing:border-box;overflow:hidden;position:absolute;text-overflow:ellipsis;white-space:nowrap;z-index:1}.yc-text-input__clear{flex-shrink:0}.yc-text-input__error-icon{box-sizing:initial;color:var(--g-color-text-danger);padding:var(--_--text-input-error-icon-padding)}.yc-text-input__additional-content{align-items:center;display:flex}.yc-text-input_size_s{--_--text-input-error-icon-padding:5px 5px 5px 0;--_--text-input-border-radius:var(--g-border-radius-s)}.yc-text-input_size_s .yc-text-input__control{height:22px;padding:3px 8px}.yc-text-input_size_s .yc-text-input__control,.yc-text-input_size_s .yc-text-input__label{font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-short-line-height)}.yc-text-input_size_s .yc-text-input__label{font-weight:var(--g-text-accent-font-weight);line-height:22px;padding:0 4px 0 8px}.yc-text-input_size_s.yc-text-input_has-left-content .yc-text-input__label{padding-left:2px}.yc-text-input_size_s .yc-text-input__additional-content{height:22px}.yc-text-input_size_s .yc-text-input__additional-content_placement_left{padding-left:1px}.yc-text-input_size_s .yc-text-input__additional-content_placement_right{padding-right:1px}.yc-text-input_size_m{--_--text-input-error-icon-padding:5px 5px 5px 0;--_--text-input-border-radius:var(--g-border-radius-m)}.yc-text-input_size_m .yc-text-input__control{height:26px;padding:5px 8px}.yc-text-input_size_m .yc-text-input__control,.yc-text-input_size_m .yc-text-input__label{font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-short-line-height)}.yc-text-input_size_m .yc-text-input__label{font-weight:var(--g-text-accent-font-weight);line-height:26px;padding:0 4px 0 8px}.yc-text-input_size_m.yc-text-input_has-left-content .yc-text-input__label{padding-left:2px}.yc-text-input_size_m .yc-text-input__additional-content{height:26px}.yc-text-input_size_m .yc-text-input__additional-content_placement_left{padding-left:1px}.yc-text-input_size_m .yc-text-input__additional-content_placement_right{padding-right:1px}.yc-text-input_size_l{--_--text-input-error-icon-padding:9px 9px 9px 0;--_--text-input-border-radius:var(--g-border-radius-l)}.yc-text-input_size_l .yc-text-input__control{height:34px;padding:9px 12px}.yc-text-input_size_l .yc-text-input__control,.yc-text-input_size_l .yc-text-input__label{font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-short-line-height)}.yc-text-input_size_l .yc-text-input__label{font-weight:var(--g-text-accent-font-weight);line-height:34px;padding:0 4px 0 12px}.yc-text-input_size_l.yc-text-input_has-left-content .yc-text-input__label{padding-left:3px}.yc-text-input_size_l .yc-text-input__additional-content{height:34px}.yc-text-input_size_l .yc-text-input__additional-content_placement_left{padding-left:3px}.yc-text-input_size_l .yc-text-input__additional-content_placement_right{padding-right:3px}.yc-text-input_size_xl{--_--text-input-error-icon-padding:13px 13px 13px 0;--_--text-input-border-radius:var(--g-border-radius-xl)}.yc-text-input_size_xl .yc-text-input__control{height:42px;padding:11px 12px}.yc-text-input_size_xl .yc-text-input__control,.yc-text-input_size_xl .yc-text-input__label{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.yc-text-input_size_xl .yc-text-input__label{font-weight:var(--g-text-accent-font-weight);line-height:42px;padding:0 4px 0 12px}.yc-text-input_size_xl.yc-text-input_has-left-content .yc-text-input__label{padding-left:3px}.yc-text-input_size_xl .yc-text-input__additional-content{height:42px}.yc-text-input_size_xl .yc-text-input__additional-content_placement_left{padding-left:3px}.yc-text-input_size_xl .yc-text-input__additional-content_placement_right{padding-right:3px}.yc-text-input_view_normal .yc-text-input__content{border:1px solid var(--g-color-line-generic)}.yc-text-input_view_normal .yc-text-input__content:hover{border-color:var(--g-color-line-generic-hover)}.yc-text-input_view_normal .yc-text-input__content:focus-within{border-color:var(--g-color-line-generic-active)}.yc-text-input_view_clear .yc-text-input__content{border:1px solid transparent;border-left:0;border-radius:0;border-right:0}.yc-text-input_view_clear .yc-text-input__control{padding-left:0;padding-right:0}.yc-text-input.yc-text-input_pin_round-round .yc-text-input__content{border-radius:var(--_--text-input-border-radius)}.yc-text-input.yc-text-input_pin_brick-brick .yc-text-input__content{border-radius:0}.yc-text-input.yc-text-input_pin_clear-clear .yc-text-input__content{border-left:0;border-radius:0;border-right:0}.yc-text-input.yc-text-input_pin_circle-circle .yc-text-input__content{border-radius:100px}.yc-text-input.yc-text-input_pin_round-brick .yc-text-input__content{border-radius:var(--_--text-input-border-radius) 0 0 var(--_--text-input-border-radius)}.yc-text-input.yc-text-input_pin_brick-round .yc-text-input__content{border-radius:0 var(--_--text-input-border-radius) var(--_--text-input-border-radius) 0}.yc-text-input.yc-text-input_pin_round-clear .yc-text-input__content{border-radius:var(--_--text-input-border-radius) 0 0 var(--_--text-input-border-radius);border-right:0}.yc-text-input.yc-text-input_pin_clear-round .yc-text-input__content{border-left:0;border-radius:0 var(--_--text-input-border-radius) var(--_--text-input-border-radius) 0}.yc-text-input.yc-text-input_pin_brick-clear .yc-text-input__content{border-radius:0;border-right:0}.yc-text-input.yc-text-input_pin_clear-brick .yc-text-input__content{border-left:0;border-radius:0}.yc-text-input.yc-text-input_pin_circle-brick .yc-text-input__content{border-radius:100px 0 0 100px}.yc-text-input.yc-text-input_pin_brick-circle .yc-text-input__content{border-radius:0 100px 100px 0}.yc-text-input.yc-text-input_pin_circle-clear .yc-text-input__content{border-radius:100px 0 0 100px;border-right:0}.yc-text-input.yc-text-input_pin_clear-circle .yc-text-input__content{border-left:0;border-radius:0 100px 100px 0}.yc-text-input_disabled .yc-text-input__content{background-color:var(--g-color-base-generic-accent-disabled);border-color:transparent;color:var(--g-color-text-hint)}.yc-text-input_disabled .yc-text-input__content:hover{border-color:transparent}.yc-text-input_disabled .yc-text-input__control,.yc-text-input_disabled .yc-text-input__label{color:var(--g-color-text-hint)}.yc-text-input_has-scrollbar .yc-text-input__clear{right:var(--g-scrollbar-width)}.yc-text-input_has-left-content .yc-text-input__control{padding-left:2px}.yc-text-input_has-right-content .yc-text-input__control{padding-right:2px}.yc-text-input_state_error.yc-text-input_view_normal .yc-text-input__content{border-color:var(--g-color-line-danger)}.yc-text-input_state_error.yc-text-input_view_normal .yc-text-input__content:focus-within,.yc-text-input_state_error.yc-text-input_view_normal .yc-text-input__content:hover{border-color:var(--g-color-line-danger)}.yc-text-input_state_error.yc-text-input_view_clear .yc-text-input__content{border-bottom:1px solid var(--g-color-line-danger)}.yc-text-input_state_error.yc-text-input_view_clear .yc-text-input__content:focus-within,.yc-text-input_state_error.yc-text-input_view_clear .yc-text-input__content:hover{border-bottom:1px solid var(--g-color-line-danger)}.g-root .g-clear-button{--yc-button-background-color:transparent;--yc-button-background-color-hover:transparent;color:var(--g-color-text-hint);margin:auto 0}.g-root .g-clear-button:hover{color:var(--g-color-text-primary)}.yc-popover{display:inline-block;position:relative}.yc-popover:not(.yc-popover_disabled){cursor:pointer}.yc-popover__handler{display:inline-block}.yc-popover__tooltip{--yc-popover-padding:16px;--yc-popover-close-margin:8px;--yc-popover-close-size:24px}.yc-popover__tooltip-popup-content{box-sizing:border-box;cursor:default;max-width:var(--yc-popover-max-width);min-height:40px;padding:var(--yc-popover-padding)}.yc-popover__tooltip-title{display:inline-flex;font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height);margin:0 0 12px}.yc-popover__tooltip-buttons{display:flex;flex-wrap:wrap;margin:15px -5px -5px}.yc-popover__tooltip-button{flex:1 1;margin:5px}.yc-popover__tooltip-close{position:absolute;right:var(--yc-popover-close-margin);top:var(--yc-popover-close-margin)}.yc-popover__tooltip-content{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height);overflow-wrap:break-word}.yc-popover__tooltip-content_secondary{opacity:.7}.yc-popover__tooltip-links>*{margin-top:8px}.yc-popover__tooltip-links>:first-child{margin-top:0}.yc-popover__tooltip-content+.yc-popover__tooltip-links>:first-child{margin-top:12px}.yc-popover__tooltip-link{display:inline-block;font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.yc-popover__tooltip_theme_announcement .yc-popover__tooltip_theme_announcement,.yc-popover__tooltip_theme_announcement.yc-popover__tooltip_theme_info,.yc-popover__tooltip_theme_info .yc-popover__tooltip_theme_announcement,.yc-popover__tooltip_theme_info.yc-popover__tooltip_theme_info{color:var(--g-color-text-primary)}.yc-popover__tooltip_force-links-appearance.yc-popover__tooltip_theme_info .yc-popover__tooltip-content a:not(.yc-button),.yc-popover__tooltip_theme_announcement .yc-popover__tooltip-content a:not(.yc-button){color:var(--g-color-text-link);text-decoration:none}.yc-popover__tooltip_force-links-appearance.yc-popover__tooltip_theme_info .yc-popover__tooltip-content a:not(.yc-button):hover,.yc-popover__tooltip_theme_announcement .yc-popover__tooltip-content a:not(.yc-button):hover{color:var(--g-color-text-link-hover)}.yc-popover__tooltip_theme_announcement.yc-popover__tooltip_theme_announcement{--yc-popup-background-color:var(--g-color-base-simple-hover-solid);--yc-popup-border-color:var(--g-color-base-simple-hover-solid)}.yc-popover__tooltip_theme_special.yc-popover__tooltip_theme_special{--yc-popup-background-color:var(--g-color-base-brand);--yc-popup-border-color:var(--g-color-base-brand);color:var(--g-color-text-light-primary)}.yc-popover__tooltip_theme_special .yc-popover__tooltip-content a:not(.yc-button){color:var(--g-color-text-light-primary);font-weight:var(--g-text-accent-font-weight)}.yc-popover__tooltip_theme_special .yc-popover__tooltip-content a:not(.yc-button):hover{color:var(--g-color-text-light-secondary)}.yc-popover__tooltip_theme_special .yc-link{color:var(--g-color-text-light-primary)}.yc-popover__tooltip_theme_special .yc-link:hover{color:var(--g-color-text-light-secondary)}.yc-popover__tooltip_size_l{--yc-popover-padding:24px}.yc-popover__tooltip_size_l .yc-popover__tooltip-title{font-size:var(--g-text-header-1-font-size);font-weight:var(--g-text-header-font-weight);line-height:var(--g-text-header-1-line-height)}.yc-popover__tooltip_size_l .yc-popover__tooltip-content{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.yc-popover__tooltip_with-close .yc-popover__tooltip-content,.yc-popover__tooltip_with-close .yc-popover__tooltip-title{padding-right:calc(var(--yc-popover-close-margin) + var(--yc-popover-close-size) - var(--yc-popover-padding))}.g-root{--yc-popover-max-width:300px}.yc-outer-additional-content{display:flex;justify-content:space-between;vertical-align:top}.yc-outer-additional-content__error,.yc-outer-additional-content__note{margin-top:2px}.yc-outer-additional-content__error{color:var(--g-color-text-danger);font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.yc-outer-additional-content__error:not(:last-child){margin-right:var(--g-spacing-2)}.yc-outer-additional-content__note{margin-left:auto}.table-skeleton{width:100%}.table-skeleton__row{align-items:center;display:flex;height:var(--data-table-row-height)}.table-skeleton__row .yc-skeleton{height:var(--g-text-body-2-line-height)}.table-skeleton__col-1{margin-right:5%;width:10%}.table-skeleton__col-2{margin-right:5%;width:7%}.table-skeleton__col-3,.table-skeleton__col-4{margin-right:5%;width:5%}.table-skeleton__col-5{width:20%}.table-skeleton__col-full{width:100%}.yc-skeleton{background-color:var(--g-color-base-generic);border-radius:5px;display:inline-block;overflow:hidden;position:relative;width:100%;z-index:0}.yc-skeleton:after{-webkit-animation:yc-skeleton 1.2s ease-out infinite;animation:yc-skeleton 1.2s ease-out infinite;background-image:linear-gradient(90deg,transparent,var(--g-color-base-generic));bottom:0;content:"";left:0;position:absolute;right:0;top:0}@-webkit-keyframes yc-skeleton{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes yc-skeleton{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}.ydb-table-with-controls-layout{box-sizing:border-box;display:inline-block;min-width:100%}.ydb-table-with-controls-layout__controls-wrapper{box-sizing:border-box;width:100%}.ydb-table-with-controls-layout__controls,.ydb-table-with-controls-layout__controls-wrapper{background-color:var(--g-color-base-background);left:0;position:-webkit-sticky;position:sticky;top:0;z-index:3}.ydb-table-with-controls-layout__controls{align-items:center;display:flex;gap:12px;height:62px;padding:16px 0 18px;width:-webkit-max-content;width:max-content}.ydb-table-with-controls-layout .ydb-virtual-table__head{top:62px}.ydb-table-with-controls-layout .data-table__sticky_moving{top:62px!important}.tenants__format-label{margin-right:15px}.tenants__title{text-align:center}.tenants__tooltip{-webkit-animation:none!important;animation:none!important}.tenants__search{width:238px}.tenants__tablets{padding:0!important}.tenants__tablets .tablets-viewer__grid{grid-gap:20px}.tenants__table .data-table__table{width:100%}.tenants__table .data-table__row,.tenants__table .data-table__sticky th{height:40px}.tenants__table .data-table__box .data-table__table-wrapper{padding-bottom:20px}.tenants__table .data-table__box_sticky-head_fixed{overflow:visible;overflow:initial}.tenants__type-value{margin-right:10px}.tenants__type-button{visibility:hidden}.data-table__row:hover .tenants__type-button{visibility:visible}.tenants__name-wrapper{align-items:center;display:flex}.tenants__name{overflow:hidden}.empty-state{padding:20px}.empty-state_size_m{height:400px}.empty-state__wrapper{display:grid;grid-template-areas:"image title" "image description" "image actions"}.empty-state__wrapper_size_s{height:120px;width:460px}.empty-state__wrapper_size_m{height:240px;width:800px}.empty-state__wrapper_position_center{margin:0 auto;position:relative}.empty-state__image{color:var(--g-color-base-info-light-hover);grid-area:image;justify-self:end;margin-right:60px}.g-root_theme_dark .empty-state__image{color:var(--g-color-base-generic)}.empty-state__title{align-self:center;font-weight:500;grid-area:title}.empty-state__title_size_s{font-size:var(--g-text-subheader-3-font-size);line-height:var(--g-text-subheader-3-line-height)}.empty-state__title_size_m{font-size:var(--g-text-header-2-font-size);line-height:var(--g-text-header-2-line-height)}.empty-state__description{font-size:var(--g-text-body-2-font-size);grid-area:description;line-height:var(--g-text-body-2-line-height)}.empty-state__actions{grid-area:actions}.empty-state__actions>*{margin-right:8px}.yc-label{--border-size:0px;--_-bg-color:none;--_-bg-hover-color:none;--_-text-color:none;align-items:center;background-color:var(--_-bg-color);box-sizing:border-box;color:var(--_-text-color);display:inline-flex;position:relative;transition-duration:.15s;transition-property:opacity,color,background-color;transition-timing-function:ease-in-out}.yc-label__text{align-items:baseline;display:flex;font-size:var(--g-text-body-1-font-size);overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%}.yc-label__value{display:flex;opacity:.7}.yc-label__separator{margin:0 4px}.yc-label .yc-label__addon{align-items:center;display:flex;justify-content:center}.yc-label .yc-label__addon_side_left,.yc-label .yc-label__addon_side_right{position:absolute;top:0}.yc-label .yc-label__addon_side_left{left:2px}.yc-label .yc-label__addon_side_right{right:0}.yc-label .yc-label__addon_interactive{--yc-button-background-color:transparent;color:inherit;cursor:pointer;transition:color,background-color;transition-duration:.15s;transition-timing-function:ease-in-out}.yc-label_size_xs{border-radius:var(--g-border-radius-xs);height:20px}.yc-label_size_xs .yc-label__text{line-height:20px;margin:0 8px}.yc-label_size_xs .yc-label__addon{--addon-size:calc(20px - var(--border-size)*2);height:var(--addon-size);width:var(--addon-size)}.yc-label_size_xs.yc-label_has-right-addon .yc-label__text{margin-right:22px}.yc-label_size_xs.yc-label_has-left-addon .yc-label__text{margin-left:24px}.yc-label_size_s{border-radius:var(--g-border-radius-s);height:24px}.yc-label_size_s .yc-label__text{line-height:24px;margin:0 10px}.yc-label_size_s .yc-label__addon{--addon-size:calc(24px - var(--border-size)*2);height:var(--addon-size);width:var(--addon-size)}.yc-label_size_s.yc-label_has-right-addon .yc-label__text{margin-right:26px}.yc-label_size_s.yc-label_has-left-addon .yc-label__text{margin-left:28px}.yc-label_size_m{border-radius:var(--g-border-radius-m);height:28px}.yc-label_size_m .yc-label__text{line-height:28px;margin:0 12px}.yc-label_size_m .yc-label__addon{--addon-size:calc(28px - var(--border-size)*2);height:var(--addon-size);width:var(--addon-size)}.yc-label_size_m.yc-label_has-right-addon .yc-label__text{margin-right:32px}.yc-label_size_m.yc-label_has-left-addon .yc-label__text{margin-left:32px}.yc-label_disabled{opacity:.7;pointer-events:none}.yc-label_is-interactive{cursor:pointer;outline:none}.yc-label_is-interactive:focus-visible{outline:2px solid var(--g-color-line-focus)}.yc-label_theme_normal{--_-bg-color:var(--g-color-base-misc-light);--_-bg-hover-color:var(--g-color-base-misc-light-hover);--_-text-color:var(--g-color-text-misc-heavy)}.yc-label_theme_success{--_-bg-color:var(--g-color-base-positive-light);--_-bg-hover-color:var(--g-color-base-positive-light-hover);--_-text-color:var(--g-color-text-positive-heavy)}.yc-label_theme_info{--_-bg-color:var(--g-color-base-info-light);--_-bg-hover-color:var(--g-color-base-info-light-hover);--_-text-color:var(--g-color-text-info-heavy)}.yc-label_theme_warning{--_-bg-color:var(--g-color-base-warning-light);--_-bg-hover-color:var(--g-color-base-warning-light-hover);--_-text-color:var(--g-color-text-warning-heavy)}.yc-label_theme_danger{--_-bg-color:var(--g-color-base-danger-light);--_-bg-hover-color:var(--g-color-base-danger-light-hover);--_-text-color:var(--g-color-text-danger-heavy)}.yc-label_theme_utility{--_-bg-color:var(--g-color-base-utility-light);--_-bg-hover-color:var(--g-color-base-utility-light-hover);--_-text-color:var(--g-color-text-utility-heavy)}.yc-label_theme_unknown{--_-bg-color:var(--g-color-base-neutral-light);--_-bg-hover-color:var(--g-color-base-neutral-light-hover);--_-text-color:var(--g-color-text-complementary)}.yc-label_theme_clear{--_-bg-color:transparent;--_-bg-hover-color:var(--g-color-base-simple-hover-solid);--_-text-color:var(--g-color-text-complementary);--border-size:1px;border:var(--border-size) solid var(--g-color-line-generic)}.yc-label_is-interactive:hover:not(:has(.yc-label__addon_interactive:hover)){background-color:var(--_-bg-hover-color)}.yc-label:not(.yc-label_disabled) .yc-label__addon_interactive{--yc-button-background-color-hover:var(--_-bg-hover-color)}.yc-label:not(.yc-label_disabled) .yc-label__addon_interactive:active,.yc-label:not(.yc-label_disabled) .yc-label__addon_interactive:focus,.yc-label:not(.yc-label_disabled) .yc-label__addon_interactive:hover{color:var(--_-text-color)}.storage-disk-progress-bar{background-color:var(--g-color-base-misc-light);border:1px solid var(--g-color-base-misc-heavy);border-radius:4px;color:var(--g-color-text-primary);display:block;height:var(--g-text-body-3-line-height);min-width:50px;position:relative;text-align:center;z-index:0}.storage-disk-progress-bar_compact{border-radius:2px;height:12px;min-width:0}.storage-disk-progress-bar_compact .storage-disk-progress-bar__filled{border-radius:1px}.storage-disk-progress-bar .storage-disk-progress-bar__filled{background-color:var(--g-color-base-misc-medium)}.storage-disk-progress-bar_green{background-color:var(--g-color-base-positive-light);border-color:var(--g-color-base-positive-heavy)}.storage-disk-progress-bar_green .storage-disk-progress-bar__filled{background-color:var(--g-color-base-positive-medium)}.g-root_theme_dark .storage-disk-progress-bar_green .storage-disk-progress-bar__filled{background-color:rgba(124,227,121,.4)}.storage-disk-progress-bar_blue{background-color:var(--g-color-base-info-light);border-color:var(--g-color-base-info-heavy)}.storage-disk-progress-bar_blue .storage-disk-progress-bar__filled{background-color:var(--g-color-base-info-medium)}.storage-disk-progress-bar_yellow{background-color:var(--g-color-base-yellow-light);border-color:var(--g-color-base-warning-heavy)}.storage-disk-progress-bar_yellow .storage-disk-progress-bar__filled{background-color:var(--g-color-base-yellow-medium)}.storage-disk-progress-bar_orange{background-color:var(--g-color-base-warning-light);border-color:var(--ydb-color-status-orange)}.storage-disk-progress-bar_orange .storage-disk-progress-bar__filled{background-color:var(--g-color-base-warning-medium)}.storage-disk-progress-bar_red{background-color:var(--g-color-base-danger-light);border-color:var(--g-color-base-danger-heavy)}.storage-disk-progress-bar_red .storage-disk-progress-bar__filled{background-color:var(--g-color-base-danger-medium)}.storage-disk-progress-bar__filled{border-radius:3px 0 0 3px;height:100%;left:0;position:absolute;top:0}.storage-disk-progress-bar_inverted .storage-disk-progress-bar__filled{border-radius:0 3px 3px 0;left:auto;right:0}.storage-disk-progress-bar__filled-title{color:inherit;font-size:var(--g-text-body-1-font-size);line-height:calc(var(--g-text-body-3-line-height) - 2px);position:relative;z-index:2}.usage-filter{min-width:100px}.usage-filter__option{flex-grow:1}.usage-filter__option-title{font-size:var(--g-text-body-1-font-size);height:var(--g-text-body-1-line-height);line-height:var(--g-text-body-1-line-height)}.usage-filter__option-meta{border-radius:3px;font-size:var(--g-text-caption-2-font-size);line-height:var(--g-text-caption-2-line-height);padding:0 5px;position:relative;z-index:0}.usage-filter__option-bar{background-color:var(--g-color-base-info-medium);border-radius:3px;bottom:0;left:0;position:absolute;top:0;z-index:-1}.g-select{display:inline-block;max-width:100%}.g-select_width_max{width:100%}.g-select-control{align-items:center;background:none;border:none;box-sizing:border-box;color:inherit;cursor:pointer;display:inline-flex;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);margin:0;outline:none;padding:0;position:relative;transition:-webkit-transform .1s ease-out;transition:transform .1s ease-out;transition:transform .1s ease-out,-webkit-transform .1s ease-out;width:100%;z-index:0}.g-select-control_disabled{cursor:default}.g-select-control_size_s{--_--select-options-text-right-padding:8px;--_--select-border-radius:var(--g-border-radius-s);height:24px;padding:4px calc(var(--_--select-options-text-right-padding) + 1px)}.g-select-control_size_m{--_--select-options-text-right-padding:8px;--_--select-border-radius:var(--g-border-radius-m);height:28px;padding:6px calc(var(--_--select-options-text-right-padding) + 1px)}.g-select-control_size_l{--_--select-options-text-right-padding:12px;--_--select-border-radius:var(--g-border-radius-l);height:36px;padding:10px calc(var(--_--select-options-text-right-padding) + 1px)}.g-select-control_size_xl{--_--select-options-text-right-padding:12px;--_--select-border-radius:var(--g-border-radius-xl);height:44px;padding:12px calc(var(--_--select-options-text-right-padding) + 1px)}.g-select-control__button{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);height:100%;margin:0;outline:none;overflow:hidden;padding:0;transition:color .15s linear,background-color .15s linear;width:100%}.g-select-control__button.g-select-control__button_pin_round-round:before{border-radius:var(--_--select-border-radius)}.g-select-control__button.g-select-control__button_pin_brick-brick:before{border-radius:0}.g-select-control__button.g-select-control__button_pin_clear-clear:before{border-left:0;border-radius:0;border-right:0}.g-select-control__button.g-select-control__button_pin_circle-circle:before{border-radius:100px}.g-select-control__button.g-select-control__button_pin_round-brick:before{border-radius:var(--_--select-border-radius) 0 0 var(--_--select-border-radius)}.g-select-control__button.g-select-control__button_pin_brick-round:before{border-radius:0 var(--_--select-border-radius) var(--_--select-border-radius) 0}.g-select-control__button.g-select-control__button_pin_round-clear:before{border-radius:var(--_--select-border-radius) 0 0 var(--_--select-border-radius);border-right:0}.g-select-control__button.g-select-control__button_pin_clear-round:before{border-left:0;border-radius:0 var(--_--select-border-radius) var(--_--select-border-radius) 0}.g-select-control__button.g-select-control__button_pin_brick-clear:before{border-radius:0;border-right:0}.g-select-control__button.g-select-control__button_pin_clear-brick:before{border-left:0;border-radius:0}.g-select-control__button.g-select-control__button_pin_circle-brick:before{border-radius:100px 0 0 100px}.g-select-control__button.g-select-control__button_pin_brick-circle:before{border-radius:0 100px 100px 0}.g-select-control__button.g-select-control__button_pin_circle-clear:before{border-radius:100px 0 0 100px;border-right:0}.g-select-control__button.g-select-control__button_pin_clear-circle:before{border-left:0;border-radius:0 100px 100px 0}.g-select-control__button.g-select-control__button_pin_round-round:after{border-radius:var(--_--select-border-radius)}.g-select-control__button.g-select-control__button_pin_brick-brick:after{border-radius:0}.g-select-control__button.g-select-control__button_pin_clear-clear:after{border-left:0;border-radius:0;border-right:0}.g-select-control__button.g-select-control__button_pin_circle-circle:after{border-radius:100px}.g-select-control__button.g-select-control__button_pin_round-brick:after{border-radius:var(--_--select-border-radius) 0 0 var(--_--select-border-radius)}.g-select-control__button.g-select-control__button_pin_brick-round:after{border-radius:0 var(--_--select-border-radius) var(--_--select-border-radius) 0}.g-select-control__button.g-select-control__button_pin_round-clear:after{border-radius:var(--_--select-border-radius) 0 0 var(--_--select-border-radius);border-right:0}.g-select-control__button.g-select-control__button_pin_clear-round:after{border-left:0;border-radius:0 var(--_--select-border-radius) var(--_--select-border-radius) 0}.g-select-control__button.g-select-control__button_pin_brick-clear:after{border-radius:0;border-right:0}.g-select-control__button.g-select-control__button_pin_clear-brick:after{border-left:0;border-radius:0}.g-select-control__button.g-select-control__button_pin_circle-brick:after{border-radius:100px 0 0 100px}.g-select-control__button.g-select-control__button_pin_brick-circle:after{border-radius:0 100px 100px 0}.g-select-control__button.g-select-control__button_pin_circle-clear:after{border-radius:100px 0 0 100px;border-right:0}.g-select-control__button.g-select-control__button_pin_clear-circle:after{border-left:0;border-radius:0 100px 100px 0}.g-select-control__button:before{border:1px solid var(--g-color-line-generic);border-radius:var(--_--select-border-radius);content:"";inset:0;position:absolute}.g-select-control__button:after{content:"";inset:0;position:absolute;z-index:-1}.g-select-control__button_view_clear{border-color:transparent}.g-select-control__button_size_l,.g-select-control__button_size_m,.g-select-control__button_size_s{font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-short-line-height)}.g-select-control__button_size_xl{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.g-select-control__button_error:before{border-color:var(--g-color-line-danger)}.g-select-control__button:hover:after{background-color:var(--g-color-base-simple-hover)}.g-select-control__button_disabled{color:var(--g-color-text-hint);pointer-events:none}.g-select-control__button_disabled:after{background-color:var(--g-color-base-generic-accent-disabled)}.g-select-control__button_disabled:before{border-color:transparent}.g-select-control__button:not(.g-select-control__button_error):not(.g-select-control__button_disabled):hover:before{border-color:var(--g-color-line-generic-hover)}.g-select-control__button:not(.g-select-control__button_error):focus-visible:before,.g-select-control__button_open:not(.g-select-control__button_error):before{border-color:var(--g-color-line-generic-active)}.g-select-control:not(.g-select-control_disabled):not(.g-select-control_no-active):active{-webkit-transform:scale(.96);transform:scale(.96)}.g-select-control__label{flex-shrink:0;font-weight:var(--g-text-accent-font-weight);margin-right:4px;max-width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-select-control__option-text,.g-select-control__placeholder{overflow:hidden;padding-right:var(--_--select-options-text-right-padding);text-overflow:ellipsis;white-space:nowrap}.g-select-control_has-clear.g-select-control_size_s .g-select-control__button_disabled .g-select-control__option-text,.g-select-control_has-clear.g-select-control_size_s .g-select-control__button_disabled .g-select-control__placeholder{padding-right:calc(24px + var(--_--select-options-text-right-padding))}.g-select-control_has-clear.g-select-control_size_m .g-select-control__button_disabled .g-select-control__option-text,.g-select-control_has-clear.g-select-control_size_m .g-select-control__button_disabled .g-select-control__placeholder{padding-right:calc(28px + var(--_--select-options-text-right-padding))}.g-select-control_has-clear.g-select-control_size_l .g-select-control__button_disabled .g-select-control__option-text,.g-select-control_has-clear.g-select-control_size_l .g-select-control__button_disabled .g-select-control__placeholder{padding-right:calc(36px + var(--_--select-options-text-right-padding))}.g-select-control_has-clear.g-select-control_size_xl .g-select-control__button_disabled .g-select-control__option-text,.g-select-control_has-clear.g-select-control_size_xl .g-select-control__button_disabled .g-select-control__placeholder{padding-right:calc(44px + var(--_--select-options-text-right-padding))}.g-select-control__placeholder{color:var(--g-color-text-hint)}.g-select-control_has-clear:not(.g-select-control_has-value).g-select-control_size_s .g-select-control__button:not(.g-select-control__button_disabled) .g-select-control__placeholder{padding-right:calc(24px + var(--_--select-options-text-right-padding))}.g-select-control_has-clear:not(.g-select-control_has-value).g-select-control_size_m .g-select-control__button:not(.g-select-control__button_disabled) .g-select-control__placeholder{padding-right:calc(28px + var(--_--select-options-text-right-padding))}.g-select-control_has-clear:not(.g-select-control_has-value).g-select-control_size_l .g-select-control__button:not(.g-select-control__button_disabled) .g-select-control__placeholder{padding-right:calc(36px + var(--_--select-options-text-right-padding))}.g-select-control_has-clear:not(.g-select-control_has-value).g-select-control_size_xl .g-select-control__button:not(.g-select-control__button_disabled) .g-select-control__placeholder{padding-right:calc(44px + var(--_--select-options-text-right-padding))}.g-select-control__chevron-icon{color:var(--g-color-text-secondary);flex:0 0 16px;margin-left:auto}.g-select-control__chevron-icon_disabled{color:var(--g-color-text-hint)}.g-select-clear+.g-select-control__chevron-icon{margin-left:0}.g-select-control__error{color:var(--g-color-text-danger);font-size:var(--g-text-body-1-font-size);line-height:var(--g-text-body-1-line-height);margin-top:2px}.g-select-clear,.g-select-control__error{font-weight:var(--g-text-body-font-weight)}.g-select-clear{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;font-family:var(--g-text-body-font-family);font-size:inherit;justify-content:center;margin:0 0 0 auto;outline:none;padding:0;z-index:1}.g-select-clear:focus-visible{border:1px solid var(--g-color-line-generic-active)}.g-select-clear_size_s{border-radius:var(--yc-border-radius-s);height:24px;width:24px}.g-select-clear_size_m{border-radius:var(--yc-border-radius-m);height:28px;width:28px}.g-select-clear_size_l{border-radius:var(--yc-border-radius-l);height:36px;width:36px}.g-select-clear_size_xl{border-radius:var(--yc-border-radius-xl);height:44px;width:44px}.g-select-clear__clear{--yc-button-background-color:transparent;--yc-button-background-color-hover:transparent;color:var(--g-color-text-secondary)}.g-select-clear:hover .g-select-clear__clear{color:var(--g-color-text-primary)}.g-select-popup{display:flex;flex-direction:column;max-height:90vh}.yc-sheet{position:fixed;z-index:100000}.yc-sheet,.yc-sheet__veil{height:100%;left:0;top:0;width:100%}.yc-sheet__veil{background-color:var(--g-color-sfx-veil);opacity:0;position:absolute;will-change:opacity}.yc-sheet__veil_with-transition{transition:opacity var(--yc-sheet-transition-duration) ease}.yc-sheet__sheet{left:0;max-height:90%;position:absolute;top:100%;width:100%;will-change:transform}.yc-sheet__sheet_with-transition{transition:-webkit-transform var(--yc-sheet-transition-duration) ease;transition:transform var(--yc-sheet-transition-duration) ease;transition:transform var(--yc-sheet-transition-duration) ease,-webkit-transform var(--yc-sheet-transition-duration) ease}.yc-sheet__sheet-swipe-area{height:40px;left:0;position:absolute;top:-20px;width:100%;z-index:1}.yc-sheet__sheet-top{background-color:var(--g-color-base-float);border-top-left-radius:20px;border-top-right-radius:20px;height:20px;position:relative}.yc-sheet__sheet-top-resizer{background-color:var(--g-color-line-generic);border-radius:4px;height:4px;left:50%;position:absolute;top:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);width:40px}.yc-sheet__sheet-content{background-color:var(--g-color-base-float);box-sizing:border-box;max-height:calc(90% - 20px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;padding:var(--yc-sheet-content-paddings);transition:height var(--yc-sheet-transition-duration) ease;width:100%}.yc-sheet__sheet-content_without-scroll{overflow:hidden}.yc-sheet__sheet-content-title{font-size:var(--g-text-body-2-font-size);line-height:28px;overflow:hidden;padding-bottom:8px;text-align:center;text-overflow:ellipsis;white-space:nowrap}.g-root{--yc-sheet-content-paddings:0 10px;--yc-sheet-transition-duration:0.3s}.g-select-filter .g-select-filter__input,.g-select-filter .g-select-filter__input:focus,.g-select-filter .g-select-filter__input:hover{border-color:var(--g-color-line-generic-active)}.g-select-list{display:flex;margin:4px 0;overflow:hidden}.yc-popup .g-select-list:first-child,.yc-popup .g-select-list:last-child{border-radius:0}.g-select-list:not(.g-select-list_virtualized){overflow:auto}.g-select-list_mobile{max-height:calc(90vh - 20px)}.g-select-list__group-label,.g-select-list__group-label-custom{box-sizing:border-box;height:auto;padding:0;position:relative;width:100%}.g-select-list__group-label{font-size:var(--g-text-body-1-font-size)}.g-select-list_size_s .g-select-list__group-label:not(.g-select-list__group-label_empty){height:24px;padding:8px 8px 4px}.g-select-list_size_m .g-select-list__group-label:not(.g-select-list__group-label_empty){height:28px;padding:8px 8px 4px}.g-select-list_size_l .g-select-list__group-label:not(.g-select-list__group-label_empty){height:36px;padding:10px 12px 6px}.g-select-list_size_xl .g-select-list__group-label:not(.g-select-list__group-label_empty){font-size:var(--g-text-body-2-font-size);height:44px;padding:12px 12px 8px}.g-select-list_mobile .g-select-list__group-label:not(.g-select-list__group-label_empty){font-size:var(--g-text-body-2-font-size);height:36px;padding:12px 12px 8px}.g-select-list__item:not(:first-child) .g-select-list__group-label{margin-top:5px}.g-select-list__item:not(:first-child) .g-select-list__group-label:before{background-color:var(--g-color-line-generic);content:"";height:1px;left:0;position:absolute;top:-3px;width:100%}.g-select-list__group-label-content{font-weight:var(--g-text-accent-font-weight);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.g-select-list__item.yc-list__item_selected{background:none}.g-select-list__item.yc-list__item_active,.g-select-list__item.yc-list__item_selected:hover{background:var(--g-color-base-simple-hover)}.g-select-list__option{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;height:100%;width:100%}.g-select-list_size_s .g-select-list__option{--_--select-tick-icon-padding-right:4px;padding:0 8px}.g-select-list_size_s .g-select-list__option .g-select-list__option-default-label{height:24px;line-height:24px}.g-select-list_size_m .g-select-list__option{--_--select-tick-icon-padding-right:4px;padding:0 8px}.g-select-list_size_m .g-select-list__option .g-select-list__option-default-label{height:28px;line-height:28px}.g-select-list_size_l .g-select-list__option{--_--select-tick-icon-padding-right:6px;padding:0 12px}.g-select-list_size_l .g-select-list__option .g-select-list__option-default-label{height:36px;line-height:36px}.g-select-list_size_xl .g-select-list__option{--_--select-tick-icon-padding-right:6px;padding:0 12px}.g-select-list_size_xl .g-select-list__option .g-select-list__option-default-label{font-size:var(--g-text-body-2-font-size);height:44px;line-height:44px}.g-select-list_mobile .g-select-list__option{padding:0 12px}.g-select-list_mobile .g-select-list__option .g-select-list__option-default-label{font-size:var(--g-text-body-2-font-size);height:36px;line-height:36px}.g-select-list_mobile .g-select-list__option .g-select-list__tick-icon{padding-right:6px}.g-select-list__option_colored{background-color:var(--g-color-base-selection)}.g-select-list__option_disabled{cursor:default}.g-select-list__option-default-label{font-size:var(--g-text-body-1-font-size);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-select-list__option-default-label_disabled{color:var(--g-color-text-secondary)}.g-select-list__tick-icon{box-sizing:initial;color:var(--g-color-text-info);flex:0 0 16px;padding-right:var(--_--select-tick-icon-padding-right);visibility:hidden}.g-select-list__tick-icon_shown{visibility:visible}.g-select-list__loading-indicator{align-items:center;display:flex;justify-content:center;width:100%}@-webkit-keyframes yc-pulse{50%{opacity:15%}}@keyframes yc-pulse{50%{opacity:15%}}.yc-loader{align-items:center;display:inline-flex}.yc-loader__center,.yc-loader__left,.yc-loader__right{-webkit-animation:yc-pulse .8s ease infinite;animation:yc-pulse .8s ease infinite;background:var(--g-color-base-brand)}.yc-loader__left{-webkit-animation-delay:.2s;animation-delay:.2s}.yc-loader__center{-webkit-animation-delay:.4s;animation-delay:.4s}.yc-loader__right{-webkit-animation-delay:.6s;animation-delay:.6s}.yc-loader_size_s .yc-loader__left{height:13.33333px;width:5px}.yc-loader_size_s .yc-loader__center{height:20px;margin-left:5px;width:5px}.yc-loader_size_s .yc-loader__right{height:13.33333px;margin-left:5px;width:5px}.yc-loader_size_m .yc-loader__left{height:18.66667px;width:7px}.yc-loader_size_m .yc-loader__center{height:28px;margin-left:7px;width:7px}.yc-loader_size_m .yc-loader__right{height:18.66667px;margin-left:7px;width:7px}.yc-loader_size_l .yc-loader__left{height:24px;width:9px}.yc-loader_size_l .yc-loader__center{height:36px;margin-left:9px;width:9px}.yc-loader_size_l .yc-loader__right{height:24px;margin-left:9px;width:9px}.yc-list{display:flex;flex:1 1 auto;flex-direction:column;outline:none;width:100%}.yc-list__filter{flex:0 0 auto;margin-bottom:8px;padding:0 var(--yc-list-margin)}.yc-list__items{flex:1 1 auto}.yc-list__items_virtualized{height:var(--yc-list-height)}.yc-list__empty-placeholder,.yc-list__item{align-items:center;box-sizing:border-box;display:flex;overflow:hidden;padding:0 var(--yc-list-margin);-webkit-user-select:none;user-select:none}.yc-list__item{height:var(--yc-list-item-height)}.yc-list__item_active{background:var(--g-color-base-simple-hover)}.yc-list__item_selected{background:var(--g-color-base-selection)}.yc-list__item_selected:hover{background:var(--g-color-base-selection-hover)}.yc-list__item_sort-handle-align_right{flex-direction:row-reverse}.yc-list__item_sort-handle-align_right .yc-list__item-sort-icon{margin-left:10px;margin-right:0}.yc-list__item_sortable[data-rbd-drag-handle-context-id]:active{cursor:grabbing}.yc-list__item_dragging{background:var(--g-color-base-simple-hover-solid);z-index:100001}.yc-list__empty-placeholder{box-sizing:border-box;color:var(--g-color-text-hint);min-height:36px;padding-bottom:8px;padding-top:8px}.yc-list__item-content{align-items:center;display:flex;flex:1 1 auto;height:100%;overflow:hidden;text-overflow:ellipsis}.yc-list__item-sort-icon{align-items:center;color:var(--g-color-text-hint);display:flex;flex:0 0 auto;margin-right:4px;width:12px}.yc-list__loading-indicator{align-items:center;display:flex;justify-content:center;width:100%}.g-select-empty-placeholder{color:var(--g-color-text-hint);margin:4px}.g-select-empty-placeholder_empty{margin-top:0}.ydb-virtual-table{--virtual-table-cell-vertical-padding:5px;--virtual-table-cell-horizontal-padding:10px;--virtual-table-sort-icon-space:18px;--virtual-table-border-color:var(--g-color-base-generic-hover);--virtual-table-hover-color:var(--g-color-base-float-hover);font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);width:100%}.ydb-virtual-table__table{border-collapse:initial;border-spacing:0;max-width:100%;table-layout:fixed;width:-webkit-max-content;width:max-content}.ydb-virtual-table__row:hover{background:var(--virtual-table-hover-color)}.ydb-virtual-table__row_empty:hover{background-color:initial}.ydb-virtual-table__head{background-color:var(--g-color-base-background);left:0;position:-webkit-sticky;position:sticky;top:0;z-index:1}.ydb-virtual-table__th{border-bottom:1px solid var(--virtual-table-border-color);cursor:default;font-weight:700;padding:var(--virtual-table-cell-vertical-padding) var(--virtual-table-cell-horizontal-padding);position:relative;text-align:left}.ydb-virtual-table__th_sortable{cursor:pointer}.ydb-virtual-table__th_sortable .ydb-virtual-table__head-cell{padding-right:var(--virtual-table-sort-icon-space)}.ydb-virtual-table__th_sortable.ydb-virtual-table__th_align_right .ydb-virtual-table__head-cell{padding-left:var(--virtual-table-sort-icon-space);padding-right:0}.ydb-virtual-table__th_sortable.ydb-virtual-table__th_align_right .ydb-virtual-table__sort-icon{left:0;right:auto;-webkit-transform:translateY(-50%) scaleX(-1);transform:translateY(-50%) scaleX(-1)}.ydb-virtual-table__head-cell{box-sizing:border-box;display:inline-block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.ydb-virtual-table__sort-icon{color:inherit;display:inline-flex;position:absolute;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.ydb-virtual-table__sort-icon_shadow{opacity:.15}.ydb-virtual-table__icon{vertical-align:top}.ydb-virtual-table__icon_desc{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.ydb-virtual-table__td{border-bottom:1px solid var(--virtual-table-border-color);overflow:hidden;padding:var(--virtual-table-cell-vertical-padding) var(--virtual-table-cell-horizontal-padding);text-overflow:ellipsis;white-space:nowrap}.ydb-virtual-table__td,.ydb-virtual-table__th{height:40px;vertical-align:middle}.ydb-virtual-table__td_align_left,.ydb-virtual-table__th_align_left{text-align:left}.ydb-virtual-table__td_align_center,.ydb-virtual-table__th_align_center{text-align:center}.ydb-virtual-table__td_align_right,.ydb-virtual-table__th_align_right{text-align:right}.stack{--ydb-stack-base-z-index:100;--ydb-stack-offset-x:4px;--ydb-stack-offset-y:4px;--ydb-stack-offset-x-hover:4px;--ydb-stack-offset-y-hover:8px;position:relative}.stack__layer{transition:-webkit-transform .1s ease-out;transition:transform .1s ease-out;transition:transform .1s ease-out,-webkit-transform .1s ease-out}.stack__layer:first-child{position:relative;z-index:var(--ydb-stack-base-z-index)}.stack__layer+.stack__layer{height:100%;left:0;position:absolute;top:0;-webkit-transform:translate(calc(var(--ydb-stack-level)*var(--ydb-stack-offset-x)),calc(var(--ydb-stack-level)*var(--ydb-stack-offset-y)));transform:translate(calc(var(--ydb-stack-level)*var(--ydb-stack-offset-x)),calc(var(--ydb-stack-level)*var(--ydb-stack-offset-y)));width:100%;z-index:calc(var(--ydb-stack-base-z-index) - var(--ydb-stack-level))}.stack:hover .stack__layer:first-child{-webkit-transform:translate(calc(var(--ydb-stack-offset-x-hover)*-1),calc(var(--ydb-stack-offset-y-hover)*-1));transform:translate(calc(var(--ydb-stack-offset-x-hover)*-1),calc(var(--ydb-stack-offset-y-hover)*-1))}.stack:hover .stack__layer+.stack__layer{-webkit-transform:translate(calc(var(--ydb-stack-level)*(var(--ydb-stack-offset-x-hover)*2) - var(--ydb-stack-offset-x-hover)),calc(var(--ydb-stack-level)*(var(--ydb-stack-offset-y-hover)*2) - var(--ydb-stack-offset-y-hover)));transform:translate(calc(var(--ydb-stack-level)*(var(--ydb-stack-offset-x-hover)*2) - var(--ydb-stack-offset-x-hover)),calc(var(--ydb-stack-level)*(var(--ydb-stack-offset-y-hover)*2) - var(--ydb-stack-offset-y-hover)))}.ydb-cell-with-popover{display:flex}.ydb-cell-with-popover__popover{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ydb-usage-label_overload{background-color:var(--ydb-color-status-red);color:var(--g-color-text-light-primary)}.pdisk-storage-popup,.vdisk-storage-popup{padding:12px}.vdisk-storage-popup .info-viewer+.info-viewer{border-top:1px solid var(--g-color-line-generic);margin-top:8px;padding-top:8px}.vdisk-storage-popup__donor-label{margin-bottom:8px}.vdisk-storage,.vdisk-storage__content{border-radius:4px}.global-storage-groups__vdisks-column{overflow:visible}.global-storage-groups__vdisks-wrapper{display:flex;justify-content:center;min-width:500px}.global-storage-groups__vdisks-item{flex-grow:1;margin-right:10px;max-width:200px}.global-storage-groups__vdisks-item:last-child{margin-right:0}.global-storage-groups__vdisks-item .stack__layer{background:var(--g-color-base-background)}.data-table__row:hover .global-storage-groups__vdisks-item .stack__layer{background:var(--ydb-data-table-color-hover)}.global-storage-groups__pool-name-wrapper{width:230px}.global-storage-groups__group-id{font-weight:500}.ydb-node-host-wrapper__host-wrapper{display:flex;width:330px}.ydb-node-host-wrapper__host{overflow:hidden}.ydb-node-host-wrapper__external-button{display:none;margin-left:4px}.data-table__row:hover .ydb-node-host-wrapper__external-button,.ydb-virtual-table__row:hover .ydb-node-host-wrapper__external-button{display:inline-flex}.pdisk-storage{position:relative;width:120px}.pdisk-storage__content{border-radius:4px;display:block;position:relative}.pdisk-storage__vdisks{display:flex;flex-wrap:wrap;gap:2px;margin-bottom:4px}.pdisk-storage__vdisks-item{flex-basis:5px;flex-shrink:0}.pdisk-storage__vdisks-item .stack__layer{background:var(--g-color-base-background)}.data-table__row:hover .pdisk-storage__vdisks-item .stack__layer{background:var(--ydb-data-table-color-hover)}.pdisk-storage__donors-stack{--ydb-stack-offset-x:0px;--ydb-stack-offset-y:-2px;--ydb-stack-offset-x-hover:0px;--ydb-stack-offset-y-hover:-7px}.pdisk-storage__media-type{color:var(--g-color-text-secondary);font-size:var(--g-text-body-1-font-size);line-height:var(--g-text-body-3-line-height);position:absolute;right:4px;top:0}.global-storage-nodes__pdisks-column{overflow:visible}.global-storage-nodes__pdisks-wrapper{align-items:flex-end;display:flex;justify-content:left;width:-webkit-max-content;width:max-content}.global-storage-nodes__pdisks-item{flex-grow:1;margin-right:10px;max-width:200px}.global-storage-nodes__pdisks-item:last-child{margin-right:0}.global-storage-nodes__group-id{font-weight:500}.global-storage-nodes__node_unavailable{opacity:.6}.global-storage__search{width:238px}.global-storage__table .yc-tooltip{height:var(--g-text-body-2-line-height)!important}.global-storage__table table{min-width:100%}.global-storage .entity-status,.progress-viewer{justify-content:center}.progress-viewer{align-items:center;background:var(--g-color-base-generic);border-radius:2px;color:var(--g-color-text-light-primary);display:flex;font-size:var(--g-text-body-2-font-size);height:23px;min-width:120px;overflow:hidden;padding:0 4px;position:relative;white-space:nowrap;z-index:0}.progress-viewer__line{height:100%;left:0;position:absolute;top:0}.progress-viewer__line_bg_scarlet{background:var(--ydb-color-status-red)}.progress-viewer__line_bg_apple{background:var(--ydb-color-status-green)}.progress-viewer__line_bg_saffron{background:var(--ydb-color-status-yellow)}.progress-viewer__text{position:relative;z-index:1}.progress-viewer__text_text_contrast0{color:var(--g-color-text-light-primary)}.progress-viewer__text_text_contrast70{color:var(--g-color-text-complementary)}.progress-viewer_size_xs{font-size:var(--g-text-body-2-font-size);height:20px;line-height:var(--g-text-body-2-line-height)}.progress-viewer_size_s{font-size:var(--g-text-body-1-font-size);height:28px;line-height:28px}.progress-viewer_size_m{font-size:var(--g-text-body-2-font-size);height:32px;line-height:32px}.progress-viewer_size_ns{font-size:13px;height:24px;line-height:var(--g-text-subheader-3-line-height)}.progress-viewer_size_n{font-size:var(--g-text-body-1-font-size);height:36px;line-height:36px}.progress-viewer_size_l{font-size:var(--g-text-subheader-3-font-size);height:38px;line-height:38px}.progress-viewer_size_head{font-size:var(--g-text-body-1-font-size);line-height:36px}.ydb-nodes__search{width:238px}.ydb-nodes__show-all-wrapper{left:0;margin-bottom:15px;position:-webkit-sticky;position:sticky}.ydb-nodes__table .data-table__table{width:100%}.ydb-nodes__table .data-table__row,.ydb-nodes__table .data-table__sticky th{height:40px}.ydb-nodes__table .data-table__box .data-table__table-wrapper{padding-bottom:20px}.ydb-nodes__table .data-table__box_sticky-head_fixed{overflow:visible;overflow:initial}.ydb-nodes__table .data-table__th{height:auto}.ydb-nodes__table{padding-bottom:20px}.ydb-nodes__node_unavailable{opacity:.6}.ydb-loader{align-items:center;display:flex;flex:1 1 auto;height:100%;justify-content:center}.ydb-versions-nodes-tree-title__overview{align-items:center;display:flex;justify-content:space-between;width:100%}.ydb-versions-nodes-tree-title__overview-info{align-items:center;display:flex;margin-left:25px}.ydb-versions-nodes-tree-title__overview-info>:not(:first-child){margin-left:30px}.ydb-versions-nodes-tree-title__overview-container{align-items:center;display:flex}.ydb-versions-nodes-tree-title__info-label{color:var(--g-color-text-complementary);font-weight:200}.ydb-versions-nodes-tree-title__info-label_margin_left{margin-left:5px}.ydb-versions-nodes-tree-title__info-label_margin_right{margin-right:5px}.ydb-versions-nodes-tree-title__version-color{border-radius:100%;height:16px;margin-right:10px;width:16px}.ydb-versions-nodes-tree-title__version-progress{align-items:center;display:flex;width:250px}.ydb-versions-nodes-tree-title__version-progress .yc-progress{width:200px}.ydb-versions-nodes-tree-title__overview-title{align-items:center;display:flex}.ydb-versions-nodes-tree-title__clipboard-button{color:var(--yc-color-text-secondary);margin-left:8px;visibility:hidden}.yc-progress{background-color:var(--g-color-base-generic);border-radius:3px;margin:0 auto;overflow:hidden;position:relative;text-align:center}.yc-progress__text{position:relative}.yc-progress__text,.yc-progress__text-inner{box-sizing:border-box;color:var(--g-color-text-primary);font-family:var(--g-text-body-font-family);font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);padding:0 10px}.yc-progress__text-inner{height:100%;position:absolute;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;width:100%}.yc-progress__item{float:left;height:100%;overflow:hidden;position:relative;transition:width .6s ease,background-color .6s ease,-webkit-transform .6s ease;transition:transform .6s ease,width .6s ease,background-color .6s ease;transition:transform .6s ease,width .6s ease,background-color .6s ease,-webkit-transform .6s ease;width:100%}.yc-progress__item_theme_default{background-color:var(--g-color-base-neutral-medium)}.yc-progress__item_theme_success{background-color:var(--g-color-base-positive-medium)}.yc-progress__item_theme_warning{background-color:var(--g-color-base-warning-medium)}.yc-progress__item_theme_danger{background-color:var(--g-color-base-danger-medium)}.yc-progress__item_theme_info{background-color:var(--g-color-base-info-medium)}.yc-progress__item_theme_misc{background-color:var(--g-color-base-misc-medium)}.yc-progress__item_loading{-webkit-animation:yc-loading-animation .5s linear infinite;animation:yc-loading-animation .5s linear infinite;background-clip:padding-box;background-image:repeating-linear-gradient(-45deg,hsla(0,0%,100%,.3),hsla(0,0%,100%,.3) 4px,transparent 0,transparent 8px);background-size:150%}.yc-progress__stack{color:var(--g-color-text-light-primary);margin:0 auto;overflow:hidden;position:relative;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;width:100%}.yc-progress_size_m,.yc-progress_size_m .yc-progress__stack{height:20px;line-height:20px}.yc-progress_size_m .yc-progress__text{height:20px;margin-bottom:-20px}.yc-progress_size_s,.yc-progress_size_s .yc-progress__stack{height:10px;line-height:10px}.yc-progress_size_xs,.yc-progress_size_xs .yc-progress__stack{height:4px;line-height:4px}.yc-progress_size_s .yc-progress__text,.yc-progress_size_s .yc-progress__text-inner,.yc-progress_size_xs .yc-progress__text,.yc-progress_size_xs .yc-progress__text-inner{display:none}.ydb-versions-grouped-node-tree_first-level{border:1px solid var(--g-color-line-generic);border-radius:10px;margin-bottom:10px;margin-top:10px}.ydb-versions-grouped-node-tree__dt-wrapper{margin-left:24px;margin-right:24px;overflow-x:auto;overflow-y:hidden;position:relative;z-index:0}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__head-row:first-child .data-table__th:first-child,.ydb-versions-grouped-node-tree__dt-wrapper .data-table__td:first-child{background-color:var(--g-color-base-background);border-right:1px solid var(--g-color-line-generic);left:0;position:-webkit-sticky;position:sticky;z-index:2000}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__row:hover .data-table__td:first-child{background-color:var(--ydb-data-table-color-hover)!important}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__head-row:first-child .data-table__th:nth-child(2),.ydb-versions-grouped-node-tree__dt-wrapper .data-table__td:nth-child(2){background-color:var(--g-color-base-background);border-right:1px solid var(--g-color-line-generic);left:80px;position:-webkit-sticky;position:sticky;z-index:2000}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__row:hover .data-table__td:nth-child(2){background-color:var(--ydb-data-table-color-hover)!important}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__head-row:first-child .data-table__th:first-child,.ydb-versions-grouped-node-tree__dt-wrapper .data-table__head-row:first-child .data-table__th:nth-child(0),.ydb-versions-grouped-node-tree__dt-wrapper .data-table__td:first-child,.ydb-versions-grouped-node-tree__dt-wrapper .data-table__td:nth-child(0){border-right:initial;box-shadow:none}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__head-row:first-child .data-table__th:nth-child(2),.ydb-versions-grouped-node-tree__dt-wrapper .data-table__td:nth-child(2){box-shadow:none}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__table{width:100%}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__row,.ydb-versions-grouped-node-tree__dt-wrapper .data-table__sticky th{height:40px}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__box .data-table__table-wrapper{padding-bottom:20px}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__box_sticky-head_fixed{overflow:visible;overflow:initial}.ydb-versions-grouped-node-tree .ydb-tree-view{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.ydb-versions-grouped-node-tree .ydb-tree-view .ydb-tree-view{margin-left:24px}.ydb-versions-grouped-node-tree .tree-view_item{border:0;border-radius:10px;height:40px;margin:0;padding:0 10px!important}.ydb-versions-grouped-node-tree .tree-view_children .tree-view_item{width:100%}.ydb-versions-grouped-node-tree .yc-progress__stack{cursor:pointer}.ydb-tree-view{--ydb-tree-view-level:0;font-size:13px;line-height:18px}.ydb-tree-view,.ydb-tree-view *{box-sizing:border-box}.ydb-tree-view__item{align-items:center;border-bottom:1px solid var(--g-color-line-generic-solid);cursor:pointer;display:flex;height:24px;padding-left:calc(24px*var(--ydb-tree-view-level));padding-right:3px}.ydb-tree-view__item:hover{background-color:var(--g-color-base-simple-hover)}.ydb-tree-view__item:hover .ydb-tree-view__actions{display:flex}.ydb-tree-view__item_active{background-color:var(--g-color-base-selection);font-weight:700}.ydb-tree-view__item_active:hover{background-color:var(--g-color-base-selection-hover)}.ydb-tree-view__content{align-items:center;display:flex;flex-grow:1;overflow:hidden}.ydb-tree-view__icon{align-items:center;color:var(--g-color-text-hint);display:flex;flex-shrink:0;height:24px;justify-content:center;width:24px}.ydb-tree-view__icon svg{display:block}.ydb-tree-view__text{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ydb-tree-view__actions{align-items:center;display:none;margin-left:6px}.ydb-tree-view__arrow{background:url('data:image/svg+xml;utf8,') no-repeat 50%;border:none;cursor:pointer;flex-shrink:0;height:24px;padding:0;width:24px}.g-root_theme_dark .ydb-tree-view__arrow{background:url('data:image/svg+xml;utf8,') no-repeat 50%}.ydb-tree-view__arrow:focus-visible{outline:2px solid var(--g-color-line-focus)}.ydb-tree-view__arrow:not(.ydb-tree-view__arrow_collapsed){-webkit-transform:rotate(90deg);transform:rotate(90deg)}.ydb-tree-view__arrow_hidden{visibility:hidden}.ydb-tree-view .ydb-tree-view .ydb-tree-view__item{padding-left:24px}.ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view__item{padding-left:48px}.ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view__item{padding-left:72px}.ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view__item{padding-left:96px}.ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view__item{padding-left:120px}.yc-dropdown-menu__switcher-wrapper{display:inline-block}.yc-dropdown-menu__switcher-button{display:flex}.yc-dropdown-menu__menu-item_separator{border-top:1px solid var(--g-color-line-generic-solid);margin:.5em 0;pointer-events:none}.yc-dropdown-menu__sub-menu-arrow{position:relative;right:-4px}.yc-dropdown-menu__sub-menu{position:relative}.yc-dropdown-menu__sub-menu .yc-dropdown-menu__menu:after,.yc-dropdown-menu__sub-menu .yc-dropdown-menu__menu:before{content:"";height:100%;position:absolute;top:0;width:10px}.yc-dropdown-menu__sub-menu .yc-dropdown-menu__menu:before{left:-10px}.yc-dropdown-menu__sub-menu .yc-dropdown-menu__menu:after{right:-10px}.yc-menu{background-color:var(--g-color-base-float);box-sizing:border-box;color:var(--g-color-text-primary);display:block;font-size:var(--g-text-body-1-font-size);list-style:none;margin:0;outline:none;overflow-x:hidden;overflow-y:auto;padding:0;-webkit-user-select:none;user-select:none}.yc-menu__list-group-item+.yc-menu__list-group-item,.yc-menu__list-group-item+.yc-menu__list-item,.yc-menu__list-item+.yc-menu__list-group-item{border-top:1px solid var(--g-color-line-generic)}.yc-menu__item{-webkit-tap-highlight-color:rgba(0,0,0,0);align-items:center;color:var(--g-color-text-primary);cursor:pointer;display:flex;outline:none;text-decoration:none;touch-action:manipulation}.yc-menu__item-icon{display:flex}.yc-menu__item-icon-end{display:flex;margin-right:0}.yc-menu__item-content{flex-grow:1;min-width:0}.yc-menu__item:focus,.yc-menu__item:hover,.yc-menu__item_selected{background-color:var(--g-color-base-simple-hover)}.yc-menu__item:focus:not(:focus-visible):not(:hover):not(.yc-menu__item_active){background-color:initial}.yc-menu__item_disabled{color:var(--g-color-text-secondary);cursor:default;pointer-events:none}.yc-menu__item_disabled:hover{background-color:initial}.yc-menu__item_active{background-color:var(--g-color-base-selection);cursor:default}.yc-menu__item_active:focus,.yc-menu__item_active:hover{background-color:var(--g-color-base-selection-hover)}.yc-menu__item_theme_danger:not(.yc-menu__item_disabled){color:var(--g-color-text-danger)}.yc-menu__group-label{color:var(--g-color-text-hint);font-weight:var(--g-text-accent-font-weight)}.yc-menu__group-list{list-style:none;margin:0;padding:0}.yc-menu_size_s{line-height:24px;padding:3px 0}.yc-menu_size_s .yc-menu__group-label,.yc-menu_size_s .yc-menu__item{padding:0 10px}.yc-menu_size_s .yc-menu__item-icon{margin-right:3px}.yc-menu_size_s .yc-menu__item-icon-end{margin-left:3px}.yc-menu_size_s .yc-menu__list-group-item+.yc-menu__list-group-item,.yc-menu_size_s .yc-menu__list-group-item+.yc-menu__list-item,.yc-menu_size_s .yc-menu__list-item+.yc-menu__list-group-item{margin-top:3px;padding-top:3px}.yc-menu_size_m{line-height:24px;padding:4px 0}.yc-menu_size_m .yc-menu__group-label,.yc-menu_size_m .yc-menu__item{padding:0 13px}.yc-menu_size_m .yc-menu__item-icon{margin-right:4px}.yc-menu_size_m .yc-menu__item-icon-end{margin-left:4px}.yc-menu_size_m .yc-menu__list-group-item+.yc-menu__list-group-item,.yc-menu_size_m .yc-menu__list-group-item+.yc-menu__list-item,.yc-menu_size_m .yc-menu__list-item+.yc-menu__list-group-item{margin-top:4px;padding-top:4px}.yc-menu_size_l{line-height:28px;padding:5px 0}.yc-menu_size_l .yc-menu__group-label,.yc-menu_size_l .yc-menu__item{padding:0 15px}.yc-menu_size_l .yc-menu__item-icon{margin-right:5px}.yc-menu_size_l .yc-menu__item-icon-end{margin-left:5px}.yc-menu_size_l .yc-menu__list-group-item+.yc-menu__list-group-item,.yc-menu_size_l .yc-menu__list-group-item+.yc-menu__list-item,.yc-menu_size_l .yc-menu__list-item+.yc-menu__list-group-item{margin-top:5px;padding-top:5px}.yc-menu_size_xl{font-size:var(--g-text-body-2-font-size);line-height:36px;padding:6px 0}.yc-menu_size_xl .yc-menu__group-label,.yc-menu_size_xl .yc-menu__item{padding:0 15px}.yc-menu_size_xl .yc-menu__item-icon{margin-right:6px}.yc-menu_size_xl .yc-menu__item-icon-end{margin-left:6px}.yc-menu_size_xl .yc-menu__list-group-item:not(:first-child){margin-top:6px;padding-top:6px}.yc-menu_size_xl .yc-menu__list-group-item:not(:last-child){margin-bottom:6px;padding-bottom:6px}.ydb-versions__controls{align-items:center;display:flex;padding:0 0 20px}.ydb-versions__controls .ydb-versions__label{font-weight:500;margin-right:10px}.ydb-versions__controls .ydb-versions__checkbox{margin:0}.ydb-versions__controls>*{margin-right:25px}.yc-checkbox__indicator{cursor:inherit;display:inline-block;position:relative}.yc-checkbox__indicator:before{background-color:initial;border:1px solid var(--g-color-line-generic-accent);border-radius:4px;bottom:0;content:"";left:0;position:absolute;right:0;top:0;transition:background .1s linear}.yc-checkbox__indicator:after{content:" ";visibility:hidden}.yc-checkbox__icon{align-items:center;bottom:0;color:transparent;display:flex;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;-webkit-transform:translateY(-5px);transform:translateY(-5px);transition:color .1s,-webkit-transform .2s;transition:color .1s,transform .2s;transition:color .1s,transform .2s,-webkit-transform .2s;visibility:hidden}.yc-checkbox__control{border:none;cursor:inherit;margin:0;opacity:0;outline:none;padding:0}.yc-checkbox__control,.yc-checkbox__outline{background:none;height:100%;left:0;position:absolute;top:0;width:100%}.yc-checkbox__outline{border-radius:4px;pointer-events:none}.yc-checkbox__control:focus+.yc-checkbox__outline{box-shadow:0 0 0 2px var(--g-color-line-focus)}.yc-checkbox__control:focus:not(:focus-visible)+.yc-checkbox__outline{box-shadow:none}.yc-checkbox_size_m .yc-checkbox__icon-svg_type_tick{height:10px;width:8px}.yc-checkbox_size_m .yc-checkbox__icon-svg_type_dash{height:12px;width:12px}.yc-checkbox_size_m .yc-checkbox__indicator{height:14px;width:14px}.yc-checkbox_size_l .yc-checkbox__icon-svg_type_tick{height:9px;width:11px}.yc-checkbox_size_l .yc-checkbox__icon-svg_type_dash{height:15px;width:15px}.yc-checkbox_size_l .yc-checkbox__indicator{height:17px;width:17px}.yc-checkbox:hover .yc-checkbox__indicator:before{border-color:var(--g-color-line-generic-accent-hover)}.yc-checkbox_checked .yc-checkbox__indicator:before,.yc-checkbox_indeterminate .yc-checkbox__indicator:before{background-color:var(--g-color-base-brand);border:transparent}.yc-checkbox_checked .yc-checkbox__icon,.yc-checkbox_indeterminate .yc-checkbox__icon{color:var(--g-color-text-brand-contrast);-webkit-transform:translateX(0);transform:translateX(0);visibility:visible}.yc-checkbox_disabled .yc-checkbox__indicator:before{background-color:var(--g-color-base-generic-accent-disabled);border:transparent}.yc-checkbox_disabled.yc-checkbox_checked .yc-checkbox__indicator:before,.yc-checkbox_disabled.yc-checkbox_indeterminate .yc-checkbox__indicator:before{background-color:var(--g-color-base-brand);opacity:.5}.yc-control-label{-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--g-color-text-primary);cursor:pointer;display:inline-flex;font-family:var(--g-text-body-font-family);font-weight:var(--g-text-body-font-weight);touch-action:manipulation;-webkit-user-select:none;user-select:none}.yc-control-label_disabled{cursor:default;pointer-events:none}.yc-control-label_size_m{font-size:var(--g-text-body-1-font-size);line-height:15px}.yc-control-label_size_l{font-size:var(--g-text-body-2-font-size);line-height:18px}.yc-control-label__indicator{flex-shrink:0}.yc-control-label__text{flex-grow:1;white-space:normal}.yc-control-label_disabled .yc-control-label__text{opacity:.6}.yc-control-label_size_m .yc-control-label__text{margin-left:5px}.yc-control-label_size_l .yc-control-label__text{margin-left:7px}.tag{background:var(--g-color-base-generic);border-radius:3px;color:var(--g-color-text-primary);font-size:12px;margin-right:5px;padding:2px 5px;text-transform:uppercase}.tag:last-child{margin-right:0}.tag_type_blue{background-color:var(--g-color-celestial-thunder)}.tags{align-items:center;display:flex;flex-wrap:wrap}.tablet-icon{border:1px solid;border-radius:4px;display:flex;font-size:10px;height:16px;justify-content:center;text-transform:uppercase;width:23px}.tablet-icon__type{line-height:14px}.tablet{border-color:var(--g-color-base-generic-medium-hover);color:var(--g-color-text-complementary);cursor:pointer}.tablet__wrapper{margin-bottom:2px;margin-right:2px}.tablet__wrapper:last-child{margin-right:0}.tablet__popup-content{padding:10px}.tablet_status_gray{background-color:var(--ydb-color-status-grey)}.tablet_status_yellow{background-color:var(--ydb-color-status-yellow)}.tablet_status_orange{background-color:var(--ydb-color-status-orange)}.tablet_status_red{background-color:var(--ydb-color-status-red)}.tablet_status_green{background-color:var(--ydb-color-status-green)}.tablet_status_blue{background-color:var(--ydb-color-status-blue)}.tablet_status_black{background-color:var(--ydb-color-status-black)}.ydb-external-link-with-icon{align-items:center;display:flex;flex-wrap:nowrap;white-space:nowrap}.ydb-cluster-versions-bar{display:flex;flex-direction:column;width:600px}.ydb-cluster-versions-bar .yc-progress{width:100%}.ydb-cluster-versions-bar__versions{display:flex;flex-flow:row wrap;margin-top:6px}.ydb-cluster-versions-bar__version-title{margin-left:3px;white-space:nowrap}.ydb-cluster-versions-bar .yc-progress__stack{cursor:pointer}.ydb-cluster-info-skeleton{display:flex;flex-direction:column;gap:16px;margin-top:5px}.ydb-cluster-info-skeleton__row{align-items:flex-start;display:flex}.ydb-cluster-info-skeleton__row,.ydb-cluster-info-skeleton__row .yc-skeleton{min-height:var(--g-text-body-2-font-size)}.ydb-cluster-info-skeleton__label{align-items:baseline;display:flex;flex:0 1 auto;width:200px}.ydb-cluster-info-skeleton__label__text{width:100px}.ydb-cluster-info-skeleton__label__dots{border-bottom:1px dotted var(--g-color-text-secondary);margin:0 2px;width:100px}.ydb-cluster-info-skeleton__value{max-width:20%;min-width:200px}.ydb-cluster-info-skeleton__versions{height:36px;max-width:40%;min-width:400px}.cluster-info{left:0;padding-top:20px;position:-webkit-sticky;position:sticky;width:100%}.cluster-info__header{cursor:pointer;display:flex;margin-bottom:20px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.cluster-info__header__expand-button{margin-left:6px}.cluster-info__header__expand-button_rotate{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.cluster-info__title .entity-status__name{font-size:var(--g-text-header-1-font-size);font-weight:var(--g-text-header-font-weight);line-height:var(--g-text-header-1-line-height)}.cluster-info__title-skeleton{height:var(--g-text-header-1-line-height);min-width:200px;width:20%}.cluster-info__error{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.cluster-info__info{margin-bottom:20px}.cluster-info__info_hidden{display:none}.cluster-info__system-tablets{align-items:center;display:flex;flex-wrap:wrap}.cluster-info__system-tablets .tablet{margin-top:2px}.cluster-info__metrics{margin:0 -15px;padding:0 15px!important}.cluster-info__metrics .info-viewer__items{grid-template-columns:repeat(2,minmax(auto,250px))}.cluster-info__metrics .info-viewer__label{width:50px}.cluster-info__metrics .info-viewer__value{width:130px}.cluster-info__tablets{margin-left:15px;padding:0!important}.cluster-info__links{display:flex;flex-flow:row wrap;gap:12px}.cluster-info__storage-groups-stats{display:flex;flex-direction:column;gap:11px}.cluster-info__groups-stats-bar{cursor:pointer}.cluster-info__groups-stats-popup-content{padding:12px}.cluster-info__clipboard-button{align-items:center;display:flex;margin-left:5px}.cluster{display:flex;flex-direction:column;flex-grow:1;flex:1 1 auto;height:100%;overflow:auto;padding:0 20px}.cluster__tabs{left:0;position:-webkit-sticky;position:sticky}.yc-root{--yc-tab-item-vertical-padding:6px 20px;--yc-tab-item-vertical-height:18px}.yc-tabs_size_m{--yc-tabs-height:36px;--yc-tabs-gap:24px;--yc-tabs-border-width:2px}.yc-tabs_size_m .yc-tabs__item-counter,.yc-tabs_size_m .yc-tabs__item-title{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.yc-tabs_size_l{--yc-tabs-height:40px;--yc-tabs-gap:28px;--yc-tabs-border-width:2px}.yc-tabs_size_l .yc-tabs__item-counter,.yc-tabs_size_l .yc-tabs__item-title{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.yc-tabs_size_xl{--yc-tabs-height:44px;--yc-tabs-gap:32px;--yc-tabs-border-width:3px}.yc-tabs_size_xl .yc-tabs__item-counter,.yc-tabs_size_xl .yc-tabs__item-title{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.yc-tabs__item{cursor:pointer;outline:none;-webkit-user-select:none;user-select:none}.yc-tabs__item-content{align-items:center;border-radius:var(--g-focus-border-radius);display:flex}.yc-tabs__item_overflow .yc-tabs__item-content{min-width:0}.yc-tabs__item-icon{margin-right:8px}.yc-tabs__item-title{white-space:nowrap}.yc-tabs__item_overflow .yc-tabs__item-title{overflow:hidden;text-overflow:ellipsis}.yc-tabs__item-counter,.yc-tabs__item-label{margin-left:8px}.yc-tabs__item-icon>svg{display:block}.yc-tabs__item:focus .yc-tabs__item-content{outline:2px solid var(--g-color-line-focus);outline-offset:-2px}.yc-tabs__item:focus:not(:focus-visible) .yc-tabs__item-content{outline:0}.yc-tabs_direction_horizontal{align-items:flex-end;box-shadow:inset 0 -1px 0 0 var(--g-color-line-generic);display:flex;flex-wrap:wrap;overflow:hidden}.yc-tabs_direction_horizontal .yc-tabs__item{align-items:center;border-bottom:var(--yc-tabs-border-width) solid transparent;box-sizing:border-box;display:flex;height:var(--yc-tabs-height);padding-top:var(--yc-tabs-border-width)}.yc-tabs_direction_horizontal .yc-tabs__item-meta{display:none}.yc-tabs_direction_horizontal .yc-tabs__item-title{color:var(--g-color-text-secondary)}.yc-tabs_direction_horizontal .yc-tabs__item-counter,.yc-tabs_direction_horizontal .yc-tabs__item-icon{color:var(--g-color-text-hint)}.yc-tabs_direction_horizontal .yc-tabs__item:focus .yc-tabs__item-title,.yc-tabs_direction_horizontal .yc-tabs__item:hover .yc-tabs__item-title,.yc-tabs_direction_horizontal .yc-tabs__item_active .yc-tabs__item-title{color:var(--g-color-text-primary)}.yc-tabs_direction_horizontal .yc-tabs__item:focus .yc-tabs__item-counter,.yc-tabs_direction_horizontal .yc-tabs__item:focus .yc-tabs__item-icon,.yc-tabs_direction_horizontal .yc-tabs__item:hover .yc-tabs__item-counter,.yc-tabs_direction_horizontal .yc-tabs__item:hover .yc-tabs__item-icon,.yc-tabs_direction_horizontal .yc-tabs__item_active .yc-tabs__item-counter,.yc-tabs_direction_horizontal .yc-tabs__item_active .yc-tabs__item-icon{color:var(--g-color-text-secondary)}.yc-tabs_direction_horizontal .yc-tabs__item_active,.yc-tabs_direction_horizontal .yc-tabs__item_active:focus,.yc-tabs_direction_horizontal .yc-tabs__item_active:hover{border-color:var(--g-color-line-brand)}.yc-tabs_direction_horizontal .yc-tabs__item_disabled{pointer-events:none}.yc-tabs_direction_horizontal .yc-tabs__item_disabled .yc-tabs__item-title{color:var(--g-color-text-hint)}.yc-tabs_direction_horizontal>:not(:last-child){margin-right:var(--yc-tabs-gap)}.yc-tabs_direction_vertical{display:flex;flex-direction:column}.yc-tabs_direction_vertical .yc-tabs__item{padding:var(--yc-tab-item-vertical-padding)}.yc-tabs_direction_vertical .yc-tabs__item-title{color:var(--g-color-text-primary);line-height:var(--yc-tab-item-vertical-height)}.yc-tabs_direction_vertical .yc-tabs__item-meta{color:var(--g-color-text-secondary);line-height:var(--yc-tab-item-vertical-height)}.yc-tabs_direction_vertical .yc-tabs__item-counter,.yc-tabs_direction_vertical .yc-tabs__item-icon{color:var(--g-color-text-secondary)}.yc-tabs_direction_vertical .yc-tabs__item:focus,.yc-tabs_direction_vertical .yc-tabs__item:hover{background-color:var(--g-color-base-generic-hover)}.yc-tabs_direction_vertical .yc-tabs__item_active{background-color:var(--g-color-base-selection)}.yc-tabs_direction_vertical .yc-tabs__item_active:focus,.yc-tabs_direction_vertical .yc-tabs__item_active:hover{background-color:var(--g-color-base-selection-hover)}.yc-tabs_direction_vertical .yc-tabs__item_disabled{pointer-events:none}.yc-tabs_direction_vertical .yc-tabs__item_disabled .yc-tabs__item-title{color:var(--g-color-text-secondary)}.kv-split{display:flex;height:100%;outline:none;-webkit-user-select:text;user-select:text;z-index:0}.kv-split.horizontal{flex-direction:row}.kv-split.vertical{flex-direction:column;min-height:100%;width:100%}.kv-split .gutter{background:var(--g-color-base-background);position:relative;z-index:10}.kv-split .gutter:after{background-color:var(--g-color-base-generic-ultralight);bottom:0;content:"";left:0;position:absolute;right:0;top:0}.kv-split .gutter.active:after,.kv-split .gutter:hover:after{background-color:var(--g-color-line-generic-hover);transition:background-color 1s ease}.kv-split .gutter.disabled{display:none}.kv-split .gutter.gutter-vertical{cursor:row-resize;height:8px;width:100%}.kv-split .gutter.gutter-vertical:before{border-color:var(--g-color-base-generic-hover);border-style:solid;border-width:1px 0;content:"";height:4px;left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:16px}.kv-split .gutter.gutter-horizontal{cursor:col-resize;height:100%;width:8px}.kv-split .gutter.gutter-horizontal:before{border-color:var(--g-color-base-generic-hover);border-style:solid;border-width:0 1px;content:"";height:16px;left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:4px}.ydb-acl{display:flex;flex-grow:1;overflow:auto;padding:0 12px 16px}.ydb-acl .data-table__table{border-collapse:initial;border-spacing:0}.ydb-acl .data-table__td,.ydb-acl .data-table__th{vertical-align:middle}.ydb-acl .data-table__box .data-table__table-wrapper{padding-bottom:20px}.ydb-acl .data-table__row,.ydb-acl .data-table__sticky th{height:40px}.ydb-acl .data-table__th{box-shadow:inset 0 -1px 0 0 var(--g-tabs-color-divider)}.ydb-acl__result{align-self:flex-start}.ydb-acl__message-container{padding:0 12px 16px}.ydb-acl__owner-container{background-color:var(--g-color-base-background);padding-bottom:16px;position:-webkit-sticky;position:sticky;top:0;z-index:2}.ydb-external-data-source-info__location,.ydb-external-table-info__location{max-width:var(--tenant-object-info-max-value-width)}.ydb-navigation-tree-view-loader{align-items:center;display:flex;height:24px;justify-content:center;width:20px}.yc-spin{-webkit-animation:yc-spin 1s linear infinite;animation:yc-spin 1s linear infinite;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:inline-block}.yc-spin__inner{border:2px solid var(--g-color-line-brand);border-bottom-right-radius:25px;border-left:none;border-top-right-radius:25px;box-sizing:border-box;height:100%;margin-left:50%;width:50%}.yc-spin_size_xs{height:16px;width:16px}.yc-spin_size_s{height:24px;width:24px}.yc-spin_size_m{height:28px;width:28px}.yc-spin_size_l{height:32px;width:32px}.yc-spin_size_xl{height:36px;width:36px}@-webkit-keyframes yc-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes yc-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.ydb-navigation-tree-view-error{color:var(--g-color-text-danger)}.ydb-navigation-tree-view-empty{color:var(--g-color-text-secondary);font-style:italic}.schema-viewer{padding:0 12px}.schema-viewer__key-icon{align-items:center;display:flex}.kv-pane-visibility-button_hidden{display:none}.kv-pane-visibility-button_bottom{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.kv-pane-visibility-button_bottom.rotate{-webkit-transform:rotate(0);transform:rotate(0)}.kv-pane-visibility-button_left{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.kv-pane-visibility-button_left.rotate{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.kv-pane-visibility-button_top.rotate{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.object-summary{display:flex;flex-direction:column;flex-grow:1;height:100%;max-height:100%;overflow:hidden;position:relative;width:100%}.object-summary__overview-wrapper{display:flex;flex-grow:1;overflow:auto;padding:0 12px 16px}.object-summary_hidden{visibility:hidden}.object-summary__action-button{background-color:var(--g-color-base-background);position:absolute;right:5px;top:19px}.object-summary__action-button_hidden{visibility:hidden}.object-summary__tree-wrapper{display:flex;flex-direction:column}.object-summary__tree{flex:1 1 auto;height:100%;overflow-y:scroll;padding:0 12px 12px 16px}.object-summary__tree-header{padding:23px 12px 17px 20px}.object-summary__sticky-top{background-color:var(--g-color-base-background);left:0;position:-webkit-sticky;position:sticky;top:0;z-index:5}.object-summary__tabs{padding:8px 12px 16px}.object-summary__tab{margin-right:40px;text-decoration:none}.object-summary__tab:first-letter{text-transform:uppercase}.object-summary__info{display:flex;flex-direction:column;overflow:hidden}.object-summary__schema{display:flex;flex-grow:1;overflow:auto}.object-summary__info-controls{display:flex;gap:4px}.object-summary__info-action-button{background-color:var(--g-color-base-background)}.object-summary__info-action-button_hidden{display:none}.object-summary__rotated90{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.object-summary__rotated180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.object-summary__rotated270{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.object-summary__info-header{align-items:center;border-bottom:1px solid var(--g-color-line-generic);display:flex;justify-content:space-between;padding:12px 12px 10px}.object-summary__info-title{align-items:center;display:flex;font-weight:600;overflow:hidden}.object-summary__path-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-summary__entity-type{background-color:var(--g-color-base-generic);border-radius:3px;display:inline-block;font-weight:400;margin-right:5px;padding:3px 8px;text-transform:lowercase}.object-summary__entity-type_error{background-color:initial;padding:3px 0}.gc-help-popover__button{background:none;border:none;color:inherit;cursor:pointer;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);margin:0;outline:none;padding:0}.gc-help-popover__button:focus-visible{border-radius:50%;outline:2px solid var(--g-color-line-focus)}.kv-truncated-query{max-width:100%;vertical-align:top;white-space:pre;word-break:break-word}.kv-truncated-query__message{white-space:pre-wrap}.kv-truncated-query__message_color_secondary{color:var(--g-color-text-secondary)}.kv-truncated-query__popover-content{max-width:600px;overflow:hidden;white-space:pre}.ydb-saved-queries{display:flex;flex:1 1 auto;flex-direction:column;height:100%;overflow:auto;padding:0 16px}.ydb-saved-queries .data-table__table{width:100%}.ydb-saved-queries .data-table__row,.ydb-saved-queries .data-table__sticky th{height:40px}.ydb-saved-queries .data-table__box .data-table__table-wrapper{padding-bottom:20px}.ydb-saved-queries .data-table__box_sticky-head_fixed{overflow:visible;overflow:initial}.ydb-saved-queries__row{cursor:pointer}.ydb-saved-queries__row :hover .ydb-saved-queries__controls{display:flex}.ydb-saved-queries__query-name{overflow:hidden;text-overflow:ellipsis;white-space:pre-wrap}.ydb-saved-queries__query{align-items:center;display:flex;flex-direction:row;justify-content:space-between}.ydb-saved-queries__query-body{flex-grow:1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:pre}.ydb-saved-queries__controls{display:none}.ydb-saved-queries__dialog-query-name{font-weight:500}.yc-dialog{position:relative}.yc-dialog_size_s{width:480px;width:var(--yc-dialog-size-s)}.yc-dialog_size_m{width:720px;width:var(--yc-dialog-size-m)}.yc-dialog_size_l{width:900px;width:var(--yc-dialog-size-l)}.yc-dialog_has-close{--yc-dialog-header-padding:var(--yc-dialog-header-padding-top) calc(var(--yc-dialog-side-padding) + 28px) var(--yc-dialog-header-padding-bottom) var(--yc-dialog-side-padding)}:root{--yc-dialog-size-s:480px;--yc-dialog-size-m:720px;--yc-dialog-size-l:900px;--yc-dialog-side-padding:32px;--yc-dialog-header-padding-top:20px;--yc-dialog-header-padding-bottom:10px;--yc-dialog-header-padding:var(--yc-dialog-header-padding-top) var(--yc-dialog-side-padding) var(--yc-dialog-header-padding-bottom) var(--yc-dialog-side-padding);--yc-dialog-body-padding:10px var(--yc-dialog-side-padding);--yc-dialog-footer-padding:28px var(--yc-dialog-side-padding);--yc-dialog-divider-margin:0 calc(var(--yc-dialog-side-padding)*-1)}.yc-modal{-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--g-color-sfx-veil);bottom:0;display:none;left:0;margin:-9999px 0 0 -9999px;overflow:auto;position:fixed;right:0;top:0;visibility:hidden;z-index:1000}.yc-modal__table{display:table;height:100%;width:100%}.yc-modal__cell{display:table-cell;text-align:center;vertical-align:middle}.yc-modal__content{background-color:var(--g-color-base-modal);border-radius:5px;border-radius:var(--yc-modal-border-radius);display:inline-block;margin:20px;margin:var(--yc-modal-margin);text-align:left}.yc-modal,.yc-modal__content{-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;outline:none}.yc-modal_exit_active,.yc-modal_open{display:block;margin:0;visibility:visible}.yc-modal_appear_active,.yc-modal_enter_active{-webkit-animation-duration:.15s;animation-duration:.15s;-webkit-animation-name:yc-modal-open;animation-name:yc-modal-open}.yc-modal_appear_active .yc-modal__content,.yc-modal_enter_active .yc-modal__content{-webkit-animation-duration:.15s;animation-duration:.15s;-webkit-animation-name:yc-modal-content-open;animation-name:yc-modal-content-open}.yc-modal_exit_active{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-name:yc-modal;animation-name:yc-modal}@-webkit-keyframes yc-modal{0%{opacity:1}to{opacity:0}}@keyframes yc-modal{0%{opacity:1}to{opacity:0}}@-webkit-keyframes yc-modal-open{0%{opacity:0}to{opacity:1}}@keyframes yc-modal-open{0%{opacity:0}to{opacity:1}}@-webkit-keyframes yc-modal-content-open{0%{-webkit-transform:scale(.75);transform:scale(.75)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes yc-modal-content-open{0%{-webkit-transform:scale(.75);transform:scale(.75)}to{-webkit-transform:scale(1);transform:scale(1)}}:root{--yc-modal-border-radius:5px;--yc-modal-margin:20px}.yc-dialog-btn-close{position:absolute;right:calc(var(--yc-dialog-side-padding) - 12px);top:calc(var(--yc-dialog-header-padding-top) - 6px);z-index:1}.yc-dialog-footer{align-items:center;display:flex;padding:var(--yc-dialog-footer-padding)}.yc-dialog-footer__bts-wrapper{display:flex}.yc-dialog-footer__children{align-items:center;display:flex;flex-grow:1;height:100%}.yc-dialog-footer__button{min-width:128px;position:relative}.yc-dialog-footer__bts-wrapper>.yc-dialog-footer__button{margin-left:10px}.yc-dialog-footer__error{color:var(--g-color-text-danger);padding:10px}.yc-dialog-header{align-items:center;color:var(--g-color-text-primary);display:flex;justify-content:flex-start;line-height:24px;padding:var(--yc-dialog-header-padding)}.yc-dialog-header__caption{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.yc-dialog-body{flex:1 1 100%;padding:var(--yc-dialog-body-padding)}.yc-dialog-divider{border-top:1px solid var(--g-color-line-generic);margin:var(--yc-dialog-divider-margin)}.ydb-queries-history{display:flex;flex:1 1 auto;flex-direction:column;height:100%;overflow:auto;padding:0 16px}.ydb-queries-history .data-table__table{width:100%}.ydb-queries-history .data-table__row,.ydb-queries-history .data-table__sticky th{height:40px}.ydb-queries-history .data-table__box .data-table__table-wrapper{padding-bottom:20px}.ydb-queries-history .data-table__box_sticky-head_fixed{overflow:visible;overflow:initial}.ydb-queries-history__table-row{cursor:pointer}.ydb-queries-history__query{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:pre}.monaco-editor{--monaco-monospace-font:"SF Mono",Monaco,Menlo,Consolas,"Ubuntu Mono","Liberation Mono","DejaVu Sans Mono","Courier New",monospace;font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px}.monaco-editor.hc-black{-ms-high-contrast-adjust:none}@media screen and (-ms-high-contrast:active){.monaco-editor.vs .view-overlays .current-line,.monaco-editor.vs-dark .view-overlays .current-line{border-color:windowtext!important;border-left:0;border-right:0}.monaco-editor.vs .cursor,.monaco-editor.vs-dark .cursor{background-color:windowtext!important}.monaco-editor.vs .dnd-target,.monaco-editor.vs-dark .dnd-target{border-color:windowtext!important}.monaco-editor.vs .selected-text,.monaco-editor.vs-dark .selected-text{background-color:highlight!important}.monaco-editor.vs .view-line,.monaco-editor.vs-dark .view-line{-ms-high-contrast-adjust:none}.monaco-editor.vs .view-line span,.monaco-editor.vs-dark .view-line span{color:windowtext!important}.monaco-editor.vs .view-line span.inline-selected-text,.monaco-editor.vs-dark .view-line span.inline-selected-text{color:highlighttext!important}.monaco-editor.vs .view-overlays,.monaco-editor.vs-dark .view-overlays{-ms-high-contrast-adjust:none}.monaco-editor.vs .reference-decoration,.monaco-editor.vs .selectionHighlight,.monaco-editor.vs .wordHighlight,.monaco-editor.vs .wordHighlightStrong,.monaco-editor.vs-dark .reference-decoration,.monaco-editor.vs-dark .selectionHighlight,.monaco-editor.vs-dark .wordHighlight,.monaco-editor.vs-dark .wordHighlightStrong{background:transparent!important;border:2px dotted highlight!important;box-sizing:border-box}.monaco-editor.vs .rangeHighlight,.monaco-editor.vs-dark .rangeHighlight{background:transparent!important;border:1px dotted activeborder!important;box-sizing:border-box}.monaco-editor.vs .bracket-match,.monaco-editor.vs-dark .bracket-match{background:transparent!important;border-color:windowtext!important}.monaco-editor.vs .currentFindMatch,.monaco-editor.vs .findMatch,.monaco-editor.vs-dark .currentFindMatch,.monaco-editor.vs-dark .findMatch{background:transparent!important;border:2px dotted activeborder!important;box-sizing:border-box}.monaco-editor.vs .find-widget,.monaco-editor.vs-dark .find-widget{border:1px solid windowtext}.monaco-editor.vs .monaco-list .monaco-list-row,.monaco-editor.vs-dark .monaco-list .monaco-list-row{-ms-high-contrast-adjust:none;color:windowtext!important}.monaco-editor.vs .monaco-list .monaco-list-row.focused,.monaco-editor.vs-dark .monaco-list .monaco-list-row.focused{background-color:highlight!important;color:highlighttext!important}.monaco-editor.vs .monaco-list .monaco-list-row:hover,.monaco-editor.vs-dark .monaco-list .monaco-list-row:hover{background:transparent!important;border:1px solid highlight;box-sizing:border-box}.monaco-editor.vs .monaco-scrollable-element>.scrollbar,.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar{-ms-high-contrast-adjust:none;background:background!important;border:1px solid windowtext;box-sizing:border-box}.monaco-editor.vs .monaco-scrollable-element>.scrollbar>.slider,.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar>.slider{background:windowtext!important}.monaco-editor.vs .monaco-scrollable-element>.scrollbar>.slider.active,.monaco-editor.vs .monaco-scrollable-element>.scrollbar>.slider:hover,.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar>.slider.active,.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar>.slider:hover{background:highlight!important}.monaco-editor.vs .decorationsOverviewRuler,.monaco-editor.vs-dark .decorationsOverviewRuler{opacity:0}.monaco-editor.vs .minimap,.monaco-editor.vs-dark .minimap{display:none}.monaco-editor.vs .squiggly-d-error,.monaco-editor.vs-dark .squiggly-d-error{background:transparent!important;border-bottom:4px double #e47777}.monaco-editor.vs .squiggly-b-info,.monaco-editor.vs .squiggly-c-warning,.monaco-editor.vs-dark .squiggly-b-info,.monaco-editor.vs-dark .squiggly-c-warning{border-bottom:4px double #71b771}.monaco-editor.vs .squiggly-a-hint,.monaco-editor.vs-dark .squiggly-a-hint{border-bottom:4px double #6c6c6c}.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label{-ms-high-contrast-adjust:none;background-color:highlight!important;color:highlighttext!important}.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label{-ms-high-contrast-adjust:none;background:transparent!important;border:1px solid highlight;box-sizing:border-box}.monaco-diff-editor.vs .diffOverviewRuler,.monaco-diff-editor.vs-dark .diffOverviewRuler{display:none}.monaco-editor.vs .line-delete,.monaco-editor.vs .line-insert,.monaco-editor.vs-dark .line-delete,.monaco-editor.vs-dark .line-insert{background:transparent!important;border:1px solid highlight!important;box-sizing:border-box}.monaco-editor.vs .char-delete,.monaco-editor.vs .char-insert,.monaco-editor.vs-dark .char-delete,.monaco-editor.vs-dark .char-insert{background:transparent!important}}.monaco-aria-container{left:-999em;position:absolute}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{-webkit-text-size-adjust:100%;overflow:visible;position:relative}.monaco-editor .overflow-guard{overflow:hidden;position:relative}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .inputarea{background-color:initial;border:none;color:transparent;margin:0;min-height:0;min-width:0;outline:none!important;overflow:hidden;padding:0;position:absolute;resize:none}.monaco-editor .inputarea.ime-input{z-index:10}.monaco-editor .margin-view-overlays .line-numbers{-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";box-sizing:border-box;cursor:default;display:inline-block;font-variant-numeric:tabular-nums;height:100%;position:absolute;text-align:right;vertical-align:middle}.monaco-editor .relative-current-line-number{display:inline-block;text-align:left;width:100%}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-mouse-cursor-text{cursor:text}.hc-black .mac .monaco-mouse-cursor-text,.hc-black.mac .monaco-mouse-cursor-text,.vs-dark .mac .monaco-mouse-cursor-text,.vs-dark.mac .monaco-mouse-cursor-text{cursor:-webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAL0lEQVQoz2NgCD3x//9/BhBYBWdhgFVAiVW4JBFKGIa4AqD0//9D3pt4I4tAdAMAHTQ/j5Zom30AAAAASUVORK5CYII=) 1x,url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAz0lEQVRIx2NgYGBY/R8I/vx5eelX3n82IJ9FxGf6tksvf/8FiTMQAcAGQMDvSwu09abffY8QYSAScNk45G198eX//yev73/4///701eh//kZSARckrNBRvz//+8+6ZohwCzjGNjdgQxkAg7B9WADeBjIBqtJCbhRA0YNoIkBSNmaPEMoNmA0FkYNoFKhapJ6FGyAH3nauaSmPfwI0v/3OukVi0CIZ+F25KrtYcx/CTIy0e+rC7R1Z4KMICVTQQ14feVXIbR695u14+Ir4gwAAD49E54wc1kWAAAAAElFTkSuQmCC) 2x) 5 8,text}.monaco-editor .margin-view-overlays .current-line,.monaco-editor .view-overlays .current-line{box-sizing:border-box;display:block;left:0;position:absolute;top:0}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{position:absolute}.monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.monaco-scrollable-element>.visible{background:transparent;opacity:1;transition:opacity .1s linear}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity .8s linear}.monaco-scrollable-element>.shadow{display:none;position:absolute}.monaco-scrollable-element>.shadow.top{box-shadow:inset 0 6px 6px -6px #ddd;display:block;height:3px;left:3px;top:0;width:100%}.monaco-scrollable-element>.shadow.left{box-shadow:inset 6px 0 6px -6px #ddd;display:block;height:100%;left:0;top:3px;width:3px}.monaco-scrollable-element>.shadow.top-left-corner{display:block;height:3px;left:0;top:0;width:3px}.monaco-scrollable-element>.shadow.top.left{box-shadow:inset 6px 6px 6px -6px #ddd}.vs .monaco-scrollable-element>.scrollbar>.slider{background:hsla(0,0%,39%,.4)}.vs-dark .monaco-scrollable-element>.scrollbar>.slider{background:hsla(0,0%,47%,.4)}.hc-black .monaco-scrollable-element>.scrollbar>.slider{background:rgba(111,195,223,.6)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:hsla(0,0%,39%,.7)}.hc-black .monaco-scrollable-element>.scrollbar>.slider:hover{background:rgba(111,195,223,.8)}.monaco-scrollable-element>.scrollbar>.slider.active{background:rgba(0,0,0,.6)}.vs-dark .monaco-scrollable-element>.scrollbar>.slider.active{background:hsla(0,0%,75%,.4)}.hc-black .monaco-scrollable-element>.scrollbar>.slider.active{background:#6fc3df}.vs-dark .monaco-scrollable-element .shadow.top{box-shadow:none}.vs-dark .monaco-scrollable-element .shadow.left{box-shadow:inset 6px 0 6px -6px #000}.vs-dark .monaco-scrollable-element .shadow.top.left{box-shadow:inset 6px 6px 6px -6px #000}.hc-black .monaco-scrollable-element .shadow.left,.hc-black .monaco-scrollable-element .shadow.top,.hc-black .monaco-scrollable-element .shadow.top.left{box-shadow:none}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .margin-view-overlays .cgmr{align-items:center;display:flex;justify-content:center;position:absolute}.monaco-editor .lines-content .cigr,.monaco-editor .lines-content .cigra{position:absolute}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{user-select:none;-webkit-user-select:none;-ms-user-select:none}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{position:absolute;width:100%}.monaco-editor .mtkz{display:inline-block}.monaco-editor .lines-decorations{background:#fff;position:absolute;top:0}.monaco-editor .margin-view-overlays .cldr{height:100%;position:absolute}.monaco-editor .margin-view-overlays .cmdr{height:100%;left:0;position:absolute;width:100%}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover .minimap-slider.active,.monaco-editor .minimap.slider-mouseover:hover .minimap-slider{opacity:1}.monaco-editor .minimap-shadow-hidden{position:absolute;width:0}.monaco-editor .minimap-shadow-visible{left:-6px;position:absolute;width:6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{left:-1px;position:absolute;width:1px}.monaco-editor .overlayWidgets{left:0;position:absolute;top:0}.monaco-editor .view-ruler{position:absolute;top:0}.monaco-editor .scroll-decoration{height:6px;left:0;position:absolute;top:0}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{overflow:hidden;position:absolute}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{background:transparent!important;border-style:solid;border-width:1px;box-sizing:border-box}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{background:transparent!important;border-bottom-style:solid;border-bottom-width:2px;box-sizing:border-box}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{background:transparent!important;border-bottom-style:solid;border-bottom-width:1px;box-sizing:border-box}@-webkit-keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@-webkit-keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@-webkit-keyframes monaco-cursor-expand{0%,20%{-webkit-transform:scaleY(1);transform:scaleY(1)}80%,to{-webkit-transform:scaleY(0);transform:scaleY(0)}}@keyframes monaco-cursor-expand{0%,20%{-webkit-transform:scaleY(1);transform:scaleY(1)}80%,to{-webkit-transform:scaleY(0);transform:scaleY(0)}}.cursor-smooth{-webkit-animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate;animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate}.cursor-phase{-webkit-animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate;animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate}.cursor-expand>.cursor{-webkit-animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate;animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:rgba(0,0,0,.03)}.monaco-diff-editor.vs-dark .diffOverview{background:hsla(0,0%,100%,.01)}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar{background:transparent}.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar{background:none}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:hsla(0,0%,67%,.4)}.modified-in-monaco-diff-editor.hc-black .slider.active{background:none}.monaco-diff-editor .delete-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-editor .insert-sign{align-items:center;display:flex!important;font-size:11px!important;opacity:.7!important}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.hc-black .insert-sign{opacity:1}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .inline-deleted-margin-view-zone{text-align:right}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}:root{--sash-size:4px}.monaco-sash{position:absolute;touch-action:none;z-index:35}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.vertical{cursor:ew-resize;height:100%;top:0;width:4px;width:var(--sash-size)}.monaco-sash.horizontal{cursor:ns-resize;height:4px;height:var(--sash-size);left:0;width:100%}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:" ";cursor:all-scroll;display:block;height:8px;height:calc(var(--sash-size)*2);position:absolute;width:8px;width:calc(var(--sash-size)*2);z-index:100}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:-2px;left:calc(var(--sash-size)*-.5);top:-4px;top:calc(var(--sash-size)*-1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{bottom:-4px;bottom:calc(var(--sash-size)*-1);left:-2px;left:calc(var(--sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{left:-4px;left:calc(var(--sash-size)*-1);top:-2px;top:calc(var(--sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{right:-4px;right:calc(var(--sash-size)*-1);top:-2px;top:calc(var(--sash-size)*-.5)}.monaco-sash:before{background:transparent;content:"";height:100%;pointer-events:none;position:absolute;transition:background-color .1s ease-out;width:100%}.monaco-sash.vertical:before{left:calc(50% - var(--sash-hover-size)/2);width:var(--sash-hover-size)}.monaco-sash.horizontal:before{height:var(--sash-hover-size);top:calc(50% - var(--sash-hover-size)/2)}.monaco-sash.debug{background:cyan}.monaco-sash.debug.disabled{background:rgba(0,255,255,.2)}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}.monaco-diff-editor .diff-review-line-number{display:inline-block;text-align:right}.monaco-diff-editor .diff-review{position:absolute;user-select:none;-webkit-user-select:none;-ms-user-select:none}.monaco-diff-editor .diff-review-summary{padding-left:10px}.monaco-diff-editor .diff-review-shadow{position:absolute}.monaco-diff-editor .diff-review-row{white-space:pre}.monaco-diff-editor .diff-review-table{display:table;min-width:100%}.monaco-diff-editor .diff-review-row{display:table-row;width:100%}.monaco-diff-editor .diff-review-spacer{display:inline-block;vertical-align:middle;width:10px}.monaco-diff-editor .diff-review-spacer>.codicon{font-size:9px!important}.monaco-diff-editor .diff-review-actions{display:inline-block;position:absolute;right:10px;top:2px}.monaco-diff-editor .diff-review-actions .action-label{height:16px;margin:2px 0;width:16px}.monaco-action-bar{height:100%;white-space:nowrap}.monaco-action-bar .actions-container{align-items:center;display:flex;height:100%;margin:0 auto;padding:0;width:100%}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{align-items:center;cursor:pointer;display:block;justify-content:center;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .codicon,.monaco-action-bar .action-item .icon{display:block}.monaco-action-bar .action-item .codicon{align-items:center;display:flex;height:16px;width:16px}.monaco-action-bar .action-label{border-radius:5px;font-size:11px;padding:3px}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{opacity:.4}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{border-bottom:1px solid #bbb;display:block;margin-left:.8em;margin-right:.8em;padding-top:1px}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{align-items:center;display:flex;flex:1 1;justify-content:center;margin-right:10px;max-width:170px;min-width:60px;overflow:hidden}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-label{margin-right:1px}.context-view .monaco-menu{min-width:130px}.context-view{position:absolute;z-index:2500}.context-view.fixed{clip:auto;all:initial;-webkit-animation:none 0s ease 0s 1 normal none running;animation:none 0s ease 0s 1 normal none running;-webkit-backface-visibility:visible;backface-visibility:visible;background:transparent none repeat 0 0/auto auto padding-box border-box scroll;border:none;border-collapse:initial;border-image:none;border-radius:0;border-spacing:0;bottom:auto;box-shadow:none;box-sizing:initial;caption-side:top;clear:none;color:#000;color:inherit;-webkit-column-fill:balance;column-fill:balance;-webkit-column-gap:normal;column-gap:normal;column-rule:medium none currentColor;-webkit-column-span:1;column-span:1;-webkit-columns:auto;-webkit-column-count:auto;-webkit-column-rule:medium none currentColor;-webkit-column-width:auto;columns:auto;content:normal;counter-increment:none;counter-reset:none;cursor:auto;direction:ltr;display:inline;empty-cells:show;float:none;font-family:serif;font-family:inherit;font-size:medium;font-size:13px;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;height:auto;-webkit-hyphens:none;hyphens:none;left:auto;letter-spacing:normal;line-height:normal;list-style:disc none outside;margin:0;max-height:none;max-width:none;min-height:0;min-width:0;opacity:1;orphans:2;outline:medium none invert;overflow:visible;overflow-x:visible;overflow-y:visible;padding:0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;-webkit-perspective:none;perspective:none;-webkit-perspective-origin:50% 50%;perspective-origin:50% 50%;position:static;position:fixed;right:auto;tab-size:8;table-layout:auto;text-align:left;text-align-last:auto;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;top:auto;-webkit-transform:none;transform:none;-webkit-transform-origin:50% 50% 0;transform-origin:initial;-webkit-transform-style:flat;transform-style:flat;transition:none 0s ease 0s;unicode-bidi:normal;vertical-align:initial;visibility:visible;white-space:normal;widows:2;width:auto;word-spacing:normal;z-index:auto;z-index:2500}@font-face{font-family:codicon;src:url(../../static/media/codicon.80a4c25b73c1f97077ed.ttf) format("truetype")}.codicon[class*=codicon-]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font:normal normal normal 16px/1 codicon;text-align:center;text-decoration:none;text-rendering:auto;user-select:none;-webkit-user-select:none;-ms-user-select:none}.codicon-wrench-subaction{opacity:.5}@-webkit-keyframes codicon-spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes codicon-spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{-webkit-animation:codicon-spin 1.5s steps(30) infinite;animation:codicon-spin 1.5s steps(30) infinite}.codicon-modifier-disabled{opacity:.4}.codicon-loading,.codicon-tree-item-loading:before{-webkit-animation-duration:1s!important;animation-duration:1s!important;-webkit-animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.monaco-list{height:100%;position:relative;white-space:nowrap;width:100%}.monaco-list.mouse-support{user-select:none;-webkit-user-select:none;-ms-user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{height:100%;position:relative;width:100%}.monaco-list.horizontal-scrolling .monaco-list-rows{min-width:100%;width:auto}.monaco-list-row{box-sizing:border-box;overflow:hidden;position:absolute;width:100%}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-multiple,.monaco-list.selection-single{outline:0!important}.monaco-list:focus .monaco-list-row.selected .codicon{color:inherit}.monaco-drag-image{border-radius:10px;display:inline-block;font-size:12px;padding:1px 7px;position:absolute;z-index:1000}.monaco-list-type-filter{align-items:center;border-radius:2px;box-sizing:border-box;cursor:all-scroll;display:flex;font-size:13px;height:20px;line-height:18px;max-width:calc(100% - 10px);overflow:hidden;padding:0 3px;position:absolute;text-align:right;text-overflow:ellipsis;top:4px;z-index:1}.monaco-list-type-filter.dragging{transition:top .2s,left .2s}.monaco-list-type-filter.ne{right:4px}.monaco-list-type-filter.nw{left:4px}.monaco-list-type-filter>.controls{align-items:center;box-sizing:border-box;display:flex;transition:width .2s;width:0}.monaco-list-type-filter.dragging>.controls,.monaco-list-type-filter:hover>.controls{width:36px}.monaco-list-type-filter>.controls>*{align-items:center;-webkit-appearance:none;-moz-appearance:none;background:none;border:none;box-sizing:border-box;cursor:pointer;display:flex;flex-shrink:0;height:16px;justify-content:center;margin:0;padding:0;width:16px}.monaco-list-type-filter>.controls>.filter{margin-left:4px}.monaco-list-type-filter-message{box-sizing:border-box;height:100%;left:0;opacity:.7;padding:40px 1em 1em;pointer-events:none;position:absolute;text-align:center;top:0;white-space:normal;width:100%}.monaco-list-type-filter-message:empty{display:none}.monaco-list-type-filter{cursor:grab}.monaco-list-type-filter.dragging{cursor:grabbing}.monaco-tl-row{align-items:center;display:flex;height:100%;position:relative}.monaco-tl-indent{height:100%;left:16px;pointer-events:none;position:absolute;top:0}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{border-left:1px solid transparent;box-sizing:border-box;display:inline-block;height:100%;transition:border-color .1s linear}.monaco-tl-contents,.monaco-tl-twistie{height:100%}.monaco-tl-twistie{align-items:center;color:inherit!important;display:flex!important;flex-shrink:0;font-size:10px;justify-content:center;padding-right:6px;text-align:right;-webkit-transform:translateX(3px);transform:translateX(3px);width:16px}.monaco-tl-contents{flex:1 1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{-webkit-animation:codicon-spin 1.25s steps(30) infinite;animation:codicon-spin 1.25s steps(30) infinite}.monaco-table{display:flex;flex-direction:column;height:100%;position:relative;white-space:nowrap;width:100%}.monaco-table>.monaco-split-view2{border-bottom:1px solid transparent}.monaco-table>.monaco-list{flex:1 1}.monaco-table-tr{display:flex;height:100%}.monaco-table-th{font-weight:700;height:100%;overflow:hidden;text-overflow:ellipsis;width:100%}.monaco-table-td,.monaco-table-th{box-sizing:border-box;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{border-left:1px solid transparent;content:"";left:calc(var(--sash-size)/2);position:absolute;width:0}.monaco-table>.monaco-split-view2,.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color .2s ease-out}.monaco-split-view2{height:100%;position:relative;width:100%}.monaco-split-view2>.sash-container{height:100%;pointer-events:none;position:absolute;width:100%}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:auto}.monaco-split-view2>.monaco-scrollable-element{height:100%;width:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{height:100%;position:relative;white-space:nowrap;width:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{position:absolute;white-space:normal}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{background-color:var(--separator-border);content:" ";left:0;pointer-events:none;position:absolute;top:0;z-index:5}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:100%;width:1px}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:1px;width:100%}.quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.monaco-keybinding>.monaco-keybinding-key{background-color:hsla(0,0%,87%,.4);border:1px solid hsla(0,0%,80%,.4);border-bottom-color:hsla(0,0%,73%,.4);box-shadow:inset 0 -1px 0 hsla(0,0%,73%,.4);color:#555}.hc-black .monaco-keybinding>.monaco-keybinding-key{background-color:initial;border:1px solid #6fc3df;box-shadow:none;color:#fff}.vs-dark .monaco-keybinding>.monaco-keybinding-key{background-color:hsla(0,0%,50%,.17);border:1px solid rgba(51,51,51,.6);border-bottom-color:rgba(68,68,68,.6);box-shadow:inset 0 -1px 0 rgba(68,68,68,.6);color:#ccc}.quick-input-widget{left:50%;margin-left:-300px;padding:0 1px 6px;position:absolute;width:600px;z-index:2000}.quick-input-titlebar{align-items:center;display:flex}.quick-input-left-action-bar{display:flex;flex:1 1;margin-left:4px}.quick-input-title{padding:3px 0;text-align:center}.quick-input-right-action-bar{display:flex;flex:1 1;margin-right:4px}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:50%;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px}.quick-input-header .quick-input-description{margin:4px 2px}.quick-input-header{display:flex;margin-bottom:-2px;padding:6px 6px 0}.quick-input-widget.hidden-input .quick-input-header{margin-bottom:0;padding:0}.quick-input-and-message{display:flex;flex-direction:column;flex-grow:1;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{display:flex;flex-grow:1;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{left:-10000px;position:absolute}.quick-input-count{align-items:center;align-self:center;display:flex;position:absolute;right:4px}.quick-input-count .monaco-count-badge{border-radius:2px;line-height:normal;min-height:auto;padding:2px 4px;vertical-align:middle}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{align-items:center;display:flex;font-size:11px;height:27.5px;padding:0 6px}.quick-input-message{margin-top:-1px;padding:5px 5px 2px}.quick-input-message>.codicon{margin:0 .2em;vertical-align:text-bottom}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-progress.monaco-progress-container,.quick-input-progress.monaco-progress-container .progress-bit{height:2px}.quick-input-list{line-height:22px;margin-top:6px}.quick-input-widget.hidden-input .quick-input-list{margin-top:0}.quick-input-list .monaco-list{max-height:440px;overflow:hidden}.quick-input-list .quick-input-list-entry{box-sizing:border-box;display:flex;height:100%;overflow:hidden;padding:0 6px}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-style:solid;border-top-width:1px}.quick-input-list .monaco-list-row:first-child .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{display:flex;flex:1 1;height:100%;overflow:hidden}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-rows{display:flex;flex:1 1;flex-direction:column;height:100%;margin-left:5px;overflow:hidden;text-overflow:ellipsis}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{align-items:center;display:flex}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1 1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:sub}.quick-input-list .quick-input-list-rows .monaco-highlighted-label span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{line-height:normal;opacity:.7;overflow:hidden;text-overflow:ellipsis}.quick-input-list .monaco-highlighted-label .highlight{font-weight:700}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:8px}.quick-input-list .quick-input-list-entry-action-bar{display:flex;flex:0 1;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:2px}.quick-input-list .quick-input-list-entry-action-bar{margin-right:4px;margin-top:1px}.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label{display:flex}.monaco-icon-label{display:flex;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label:before{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-position:0;background-repeat:no-repeat;background-size:16px;display:inline-block;flex-shrink:0;height:22px;line-height:inherit!important;padding-right:6px;vertical-align:top;width:16px}.monaco-icon-label>.monaco-icon-label-container{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{margin:0 2px;opacity:.5}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{font-size:.9em;margin-left:.5em;opacity:.7;white-space:pre}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{font-style:italic}.monaco-icon-label.deprecated{opacity:.66;text-decoration:line-through}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{text-decoration:line-through}.monaco-icon-label:after{font-size:90%;font-weight:600;opacity:.75;padding:0 16px 0 5px;text-align:center}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:.8}.monaco-keybinding{align-items:center;display:flex;line-height:10px}.monaco-keybinding>.monaco-keybinding-key{border-radius:3px;border-style:solid;border-width:1px;display:inline-block;font-size:11px;margin:0 2px;padding:3px 5px;vertical-align:middle}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-inputbox{box-sizing:border-box;display:block;font-size:inherit;padding:0;position:relative}.monaco-inputbox.idle{border:1px solid transparent}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px}.monaco-inputbox>.ibwrapper{height:100%;position:relative;width:100%}.monaco-inputbox>.ibwrapper>.input{border:none;box-sizing:border-box;color:inherit;display:inline-block;font-family:inherit;font-size:inherit;height:100%;line-height:inherit;resize:none;width:100%}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{-ms-overflow-style:none;display:block;outline:none;scrollbar-width:none}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{word-wrap:break-word;box-sizing:border-box;display:inline-block;left:0;position:absolute;top:0;visibility:hidden;white-space:pre-wrap;width:100%}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{word-wrap:break-word;box-sizing:border-box;display:inline-block;font-size:12px;line-height:17px;margin-top:-1px;overflow:hidden;padding:.4em;text-align:left;width:100%}.monaco-inputbox .monaco-action-bar{position:absolute;right:2px;top:4px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;height:16px;width:16px}.monaco-count-badge{border-radius:11px;box-sizing:border-box;display:inline-block;font-size:11px;font-weight:400;line-height:11px;min-height:18px;min-width:18px;padding:3px 6px;text-align:center}.monaco-count-badge.long{border-radius:2px;line-height:normal;min-height:auto;padding:2px 3px}.monaco-progress-container{height:5px;overflow:hidden;width:100%}.monaco-progress-container .progress-bit{display:none;height:5px;left:0;position:absolute;width:2%}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{left:0;transition:width .1s linear}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{-webkit-animation-duration:4s;animation-duration:4s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:progress;animation-name:progress;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-transform:translateZ(0);transform:translateZ(0)}@-webkit-keyframes progress{0%{-webkit-transform:translateX(0) scaleX(1);transform:translateX(0) scaleX(1)}50%{-webkit-transform:translateX(2500%) scaleX(3);transform:translateX(2500%) scaleX(3)}to{-webkit-transform:translateX(4900%) scaleX(1);transform:translateX(4900%) scaleX(1)}}@keyframes progress{0%{-webkit-transform:translateX(0) scaleX(1);transform:translateX(0) scaleX(1)}50%{-webkit-transform:translateX(2500%) scaleX(3);transform:translateX(2500%) scaleX(3)}to{-webkit-transform:translateX(4900%) scaleX(1);transform:translateX(4900%) scaleX(1)}}.monaco-text-button{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;padding:4px;text-align:center;width:100%}.monaco-text-button:focus{outline-offset:2px!important}.monaco-text-button:hover{text-decoration:none!important}.monaco-button.disabled,.monaco-button.disabled:focus{cursor:default;opacity:.4!important}.monaco-text-button>.codicon{color:inherit!important;margin:0 .2em}.monaco-button-dropdown{display:flex}.monaco-button-dropdown>.monaco-dropdown-button{margin-left:1px}.monaco-description-button{flex-direction:column}.monaco-description-button .monaco-button-label{font-weight:500}.monaco-description-button .monaco-button-description{font-style:italic}.kv-fullscreen{background-color:var(--g-color-base-background);bottom:0;display:flex;flex-grow:1;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:10}.kv-fullscreen__close-button{position:fixed;right:20px;top:8px;z-index:11}.ydb-query-result-table__cell{cursor:pointer;display:inline-block;max-width:600px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ydb-query-result-table__message{padding:15px 10px}.kv-preview{height:100%}.kv-preview .data-table__table{border-collapse:initial;border-spacing:0}.kv-preview .data-table__td,.kv-preview .data-table__th{vertical-align:middle}.kv-preview .data-table__box .data-table__table-wrapper{padding-bottom:20px}.kv-preview .data-table__row,.kv-preview .data-table__sticky th{height:40px}.kv-preview .data-table__th{box-shadow:inset 0 -1px 0 0 var(--g-tabs-color-divider)}.kv-preview__header{align-items:center;background-color:var(--g-color-base-background);border-bottom:1px solid var(--g-color-line-generic);display:flex;height:53px;justify-content:space-between;padding:0 20px;position:-webkit-sticky;position:sticky;top:0}.kv-preview__title{display:flex}.kv-preview__table-name{color:var(--g-color-text-complementary);margin-left:4px}.kv-preview__controls-left{display:flex;gap:5px}.kv-preview__message-container{padding:15px 20px}.kv-preview__loader-container{align-items:center;display:flex;height:100%;justify-content:center}.kv-preview__result{height:calc(100% - 40px);overflow:auto;padding:0 10px}.kv-fullscreen .kv-preview__result{height:100%}.kv-divider{background-color:var(--g-color-line-generic);height:100%;margin:0 4px;width:1px}.kv-query-execution-status{align-items:center;color:var(--g-color-text-complementary);display:flex;gap:4px}.kv-query-execution-status__result-status-icon{color:var(--g-color-text-positive)}.kv-query-execution-status__result-status-icon_error{color:var(--g-color-text-danger)}.kv-shorty-string__toggle{font-size:.85em;margin-left:2em}.kv-result-issues{padding:0 10px}.kv-result-issues__error-message{align-items:center;background-color:var(--g-color-base-background);display:flex;left:0;padding:10px 0;position:-webkit-sticky;position:sticky;top:0;z-index:2}.kv-result-issues__error-message-text{margin:0 10px}.kv-issues{position:relative}.kv-issue_leaf{margin-left:31px}.kv-issue__issues{padding-left:24px}.kv-issue__line{align-items:flex-start;display:flex;margin:0 0 10px;padding:0 10px 0 0}.kv-issue__place-text{color:var(--g-color-text-secondary);display:inline-block;padding-right:10px;text-align:left}.kv-issue__message{display:flex;font-family:var(--g-font-family-monospace);font-size:var(--g-text-code-2-font-size);line-height:var(--g-text-header-2-line-height);margin-left:10px;margin-right:auto}.kv-issue__message-text{flex:1 1 auto;min-width:240px;white-space:pre-wrap;word-break:break-word}.kv-issue__code{color:var(--g-color-text-complementary);flex:0 0 auto;font-size:12px;margin-left:1.5em;padding:3px 0}.kv-issue__arrow-toggle{margin-right:5px}.yql-issue-severity{align-items:center;display:flex;line-height:28px;white-space:nowrap}.yql-issue-severity_severity_error .yql-issue-severity__icon,.yql-issue-severity_severity_fatal .yql-issue-severity__icon{color:var(--g-color-text-danger)}.yql-issue-severity_severity_warning .yql-issue-severity__icon{color:var(--g-color-text-warning)}.yql-issue-severity_severity_info .yql-issue-severity__icon{color:var(--g-color-text-info)}.yql-issue-severity__title{color:var(--g-color-text-complementary);margin-left:4px;text-transform:capitalize}.yc-arrow-toggle{display:inline-block;transition:-webkit-transform .1s ease-out;transition:transform .1s ease-out;transition:transform .1s ease-out,-webkit-transform .1s ease-out;vertical-align:middle}.yc-arrow-toggle_direction_bottom{-webkit-transform:matrix(1,0,0,1,0,0);transform:matrix(1,0,0,1,0,0)}.yc-arrow-toggle_direction_left{-webkit-transform:matrix(0,1,-1,0,0,0);transform:matrix(0,1,-1,0,0,0)}.yc-arrow-toggle_direction_top{-webkit-transform:matrix(-1,0,0,-1,0,0);transform:matrix(-1,0,0,-1,0,0)}.yc-arrow-toggle_direction_right{-webkit-transform:matrix(0,-1,1,0,0,0);transform:matrix(0,-1,1,0,0,0)}.ydb-query-duration{align-items:center;color:var(--g-color-text-complementary);display:flex;margin-left:10px}.ydb-query-duration__item-with-popover{white-space:nowrap}.ydb-query-duration__popover{max-width:300px}.ydb-query-execute-result__result{display:flex;flex-direction:column;flex-grow:1;overflow:auto;padding:0 10px}.ydb-query-execute-result__result .data-table__table{border-collapse:initial;border-spacing:0}.ydb-query-execute-result__result .data-table__td,.ydb-query-execute-result__result .data-table__th{vertical-align:middle}.ydb-query-execute-result__result .data-table__box .data-table__table-wrapper{padding-bottom:20px}.ydb-query-execute-result__result .data-table__row,.ydb-query-execute-result__result .data-table__sticky th{height:40px}.ydb-query-execute-result__result .data-table__th{box-shadow:inset 0 -1px 0 0 var(--g-tabs-color-divider)}.ydb-query-execute-result__result .data-table__table-wrapper{padding-bottom:0}.ydb-query-execute-result__result-fullscreen-wrapper{display:flex;flex-direction:column;margin-top:10px;padding:0 10px 10px;width:100%}.ydb-query-execute-result__result-tabs{padding-left:10px}.ydb-query-execute-result__error{padding:15px 10px}.ydb-query-execute-result__controls{align-items:center;background-color:var(--g-color-base-background);border-bottom:1px solid var(--g-color-line-generic);display:flex;height:53px;justify-content:space-between;padding:12px 20px;position:-webkit-sticky;position:sticky;top:0;z-index:2}.ydb-query-execute-result__controls-right{display:flex;gap:12px;height:100%}.ydb-query-execute-result__controls-left{display:flex;gap:4px}.ydb-query-execute-result__inspector{font-family:var(--g-font-family-monospace)!important;font-size:var(--g-text-code-1-font-size)!important;line-height:var(--g-text-code-1-line-height)!important;max-width:calc(100% - 50px);padding:15px 10px}.ydb-query-execute-result__inspector .json-inspector__leaf_composite:before{color:var(--g-color-text-secondary);font-size:9px;left:20px;position:absolute}.ydb-query-execute-result__inspector .json-inspector__leaf_composite.json-inspector__leaf_root:before{left:0}.ydb-query-execute-result__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:"[+]"}.ydb-query-execute-result__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before{content:"[-]"}.ydb-query-execute-result__inspector .json-inspector__key{color:var(--g-color-text-misc)}.ydb-query-execute-result__inspector .json-inspector__leaf{padding-left:20px;position:relative}.ydb-query-execute-result__inspector .json-inspector__leaf_root{padding-left:0}.ydb-query-execute-result__inspector .json-inspector__line{padding-left:20px}.ydb-query-execute-result__inspector .json-inspector__toolbar{border:1px solid var(--g-color-line-generic);border-radius:4px;margin-bottom:10px;width:300px}.ydb-query-execute-result__inspector .json-inspector__search{background:none;border:0 solid transparent;border-width:0 22px 0 8px;box-sizing:border-box;color:var(--g-color-text-primary);font-family:var(--g-text-body-font-family);font-size:13px;height:28px;margin:0;outline:0;padding:0;vertical-align:top;width:300px}.ydb-query-execute-result__inspector .json-inspector__value_helper{color:var(--g-color-text-secondary)}.ydb-query-execute-result__inspector .json-inspector__line:hover:after{background:var(--g-color-base-simple-hover)}.ydb-query-execute-result__inspector .json-inspector__show-original:before{color:var(--g-color-text-secondary)}.ydb-query-execute-result__inspector .json-inspector__show-original:hover:after,.ydb-query-execute-result__inspector .json-inspector__show-original:hover:before{color:var(--g-color-text-primary)}.ydb-query-execute-result__inspector_fullscreen{height:100%;overflow:auto;padding:10px;width:100%}.ydb-query-execute-result__fullscreen-table-wrapper{background-color:var(--g-color-base-background);height:100%;margin:20px;overflow:auto;width:100%}.ydb-query-execute-result__fullscreen-table-wrapper .data-table__table{width:100%}.ydb-query-execute-result__fullscreen-table-wrapper .data-table__row,.ydb-query-execute-result__fullscreen-table-wrapper .data-table__sticky th{height:40px}.ydb-query-execute-result__fullscreen-table-wrapper .data-table__box .data-table__table-wrapper{padding-bottom:20px}.ydb-query-execute-result__fullscreen-table-wrapper .data-table__box_sticky-head_fixed{overflow:visible;overflow:initial}.ydb-query-execute-result__fullscreen-table-wrapper table{width:100%!important}.ydb-query-execute-result__fullscreen-table-wrapper .data-table__table-wrapper{padding:0!important}.json-inspector,.json-inspector__selection{font:14px/1.4 Consolas,monospace}.json-inspector__leaf{padding-left:10px}.json-inspector__line{cursor:default;display:block;position:relative}.json-inspector__line:after{bottom:0;content:"";left:-200px;pointer-events:none;position:absolute;right:-50px;top:0;z-index:-1}.json-inspector__line:hover:after{background:rgba(0,0,0,.06)}.json-inspector__leaf_composite>.json-inspector__line{cursor:pointer}.json-inspector__flatpath,.json-inspector__radio{display:none}.json-inspector__value{margin-left:5px}.json-inspector__search{margin:0 10px 10px 0;min-width:300px;padding:2px}.json-inspector__key{color:#505050}.json-inspector__not-found,.json-inspector__value_helper,.json-inspector__value_null{color:#b0b0b0}.json-inspector__value_string{color:#798953}.json-inspector__value_boolean{color:#75b5aa}.json-inspector__value_number{color:#d28445}.json-inspector__hl{background:#ff0;border-radius:2px;box-shadow:0 -1px 0 2px #ff0}.json-inspector__show-original{color:#666;cursor:pointer;display:inline-block;padding:0 6px}.json-inspector__show-original:hover{color:#111}.json-inspector__show-original:before{content:"⥂"}.json-inspector__show-original:hover:after{content:" expand"}.monaco-editor .selection-anchor{background-color:#007acc;width:2px!important}.monaco-editor .bracket-match{box-sizing:border-box}.monaco-editor .monaco-editor-overlaymessage{padding-bottom:8px;z-index:10000}.monaco-editor .monaco-editor-overlaymessage.below{padding-bottom:0;padding-top:8px;z-index:10000}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{-webkit-animation:fadeIn .15s ease-out;animation:fadeIn .15s ease-out}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{-webkit-animation:fadeOut .1s ease-out;animation:fadeOut .1s ease-out}.monaco-editor .monaco-editor-overlaymessage .message{padding:1px 4px}.monaco-editor .monaco-editor-overlaymessage .anchor{border:8px solid transparent;height:0!important;position:absolute;width:0!important;z-index:1000}.monaco-editor .monaco-editor-overlaymessage.below .anchor.below,.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top{display:none}.monaco-editor .monaco-editor-overlaymessage.below .anchor.top{display:inherit;top:-8px}.monaco-editor .contentWidgets .codicon-light-bulb,.monaco-editor .contentWidgets .codicon-lightbulb-autofix{align-items:center;display:flex;justify-content:center}.monaco-editor .contentWidgets .codicon-light-bulb:hover,.monaco-editor .contentWidgets .codicon-lightbulb-autofix:hover{cursor:pointer}.monaco-editor .codelens-decoration{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .codelens-decoration>a,.monaco-editor .codelens-decoration>span{user-select:none;-webkit-user-select:none;-ms-user-select:none;vertical-align:sub;white-space:nowrap}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{cursor:pointer}.monaco-editor .codelens-decoration .codicon{color:currentColor!important;vertical-align:middle}.monaco-editor .codelens-decoration>a:hover .codicon:before{cursor:pointer}@-webkit-keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{-webkit-animation:fadein .1s linear;animation:fadein .1s linear}.colorpicker-widget{height:190px;user-select:none;-webkit-user-select:none;-ms-user-select:none}.monaco-editor .colorpicker-hover:focus{outline:none}.colorpicker-header{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;display:flex;height:24px;image-rendering:pixelated;position:relative}.colorpicker-header .picked-color{color:#fff;cursor:pointer;flex:1 1;line-height:24px;text-align:center;width:216px}.colorpicker-header .picked-color.light{color:#000}.colorpicker-header .original-color{cursor:pointer;width:74px;z-index:inherit}.colorpicker-body{display:flex;padding:8px;position:relative}.colorpicker-body .saturation-wrap{flex:1 1;height:150px;min-width:220px;overflow:hidden;position:relative}.colorpicker-body .saturation-box{height:150px;position:absolute}.colorpicker-body .saturation-selection{border:1px solid #fff;border-radius:100%;box-shadow:0 0 2px rgba(0,0,0,.8);height:9px;margin:-5px 0 0 -5px;position:absolute;width:9px}.colorpicker-body .strip{height:150px;width:25px}.colorpicker-body .hue-strip{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);cursor:grab;margin-left:8px;position:relative}.colorpicker-body .opacity-strip{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;cursor:grab;image-rendering:pixelated;margin-left:8px;position:relative}.colorpicker-body .strip.grabbing{cursor:grabbing}.colorpicker-body .slider{border:1px solid hsla(0,0%,100%,.71);box-shadow:0 0 1px rgba(0,0,0,.85);box-sizing:border-box;height:4px;left:-2px;position:absolute;top:0;width:calc(100% + 4px)}.colorpicker-body .strip .overlay{height:150px;pointer-events:none}.monaco-hover{-webkit-animation:fadein .1s linear;animation:fadein .1s linear;box-sizing:initial;cursor:default;line-height:1.5em;overflow:hidden;position:absolute;user-select:text;-webkit-user-select:text;-ms-user-select:text;z-index:50}.monaco-hover.hidden{display:none}.monaco-hover .hover-contents{padding:4px 8px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents){word-wrap:break-word;max-width:500px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents) hr{min-width:100%}.monaco-hover .code,.monaco-hover p,.monaco-hover ul{margin:8px 0}.monaco-hover code{font-family:var(--monaco-monospace-font)}.monaco-hover hr{border-left:0;border-right:0;box-sizing:border-box;height:1px;margin:4px -8px -4px}.monaco-hover .code:first-child,.monaco-hover p:first-child,.monaco-hover ul:first-child{margin-top:0}.monaco-hover .code:last-child,.monaco-hover p:last-child,.monaco-hover ul:last-child{margin-bottom:0}.monaco-hover ol,.monaco-hover ul{padding-left:20px}.monaco-hover li>p{margin-bottom:0}.monaco-hover li>ul{margin-top:0}.monaco-hover code{border-radius:3px;padding:0 .4em}.monaco-hover .monaco-tokenized-source{white-space:pre-wrap}.monaco-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-hover .hover-row.status-bar .actions{display:flex;padding:0 8px}.monaco-hover .hover-row.status-bar .actions .action-container{cursor:pointer;margin-right:16px}.monaco-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.monaco-hover .markdown-hover .hover-contents .codicon{color:inherit;font-size:inherit;vertical-align:middle}.monaco-hover .hover-contents a.code-link:before{content:"("}.monaco-hover .hover-contents a.code-link:after{content:")"}.monaco-hover .hover-contents a.code-link{color:inherit}.monaco-hover .hover-contents a.code-link>span{border-bottom:1px solid transparent;text-decoration:underline;text-underline-position:under}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents) span{display:inline-block;margin-bottom:4px}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{display:inline-block;margin-right:4px;vertical-align:text-top}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{font-style:italic;opacity:.6}.monaco-editor .marker-widget .title{display:inline-block;padding-right:5px}.monaco-editor .marker-widget .descriptioncontainer{padding:8px 12px 0 20px;position:absolute;user-select:text;-webkit-user-select:text;-ms-user-select:text;white-space:pre}.monaco-editor .marker-widget .descriptioncontainer .message{display:flex;flex-direction:column}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .source,.monaco-editor .marker-widget .descriptioncontainer .message span.code{opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link{color:inherit;opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before{content:"("}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after{content:")"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{border-bottom:1px solid transparent;text-decoration:underline;text-underline-position:under}.monaco-editor .marker-widget .descriptioncontainer .filename{cursor:pointer}.monaco-editor .peekview-widget .head{box-sizing:border-box;display:flex}.monaco-editor .peekview-widget .head .peekview-title{align-items:center;cursor:pointer;display:flex;font-size:13px;margin-left:20px;min-width:0}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){font-size:.9em;margin-left:.5em}.monaco-editor .peekview-widget .head .peekview-title .dirname,.monaco-editor .peekview-widget .head .peekview-title .meta{white-space:nowrap}.monaco-editor .peekview-widget .head .peekview-title .filename{overflow:hidden;text-overflow:ellipsis}.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty):before{content:"-";padding:0 .3em}.monaco-editor .peekview-widget .head .peekview-actions{flex:1 1;padding-right:2px;text-align:right}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor .peekview-widget .head .peekview-title .codicon{margin-right:4px}.monaco-editor .zone-widget{position:absolute;z-index:10}.monaco-editor .zone-widget .zone-widget-container{border-bottom-style:solid;border-bottom-width:0;border-top-style:solid;border-top-width:0;position:relative}.monaco-action-bar .action-item.menu-entry .action-label.icon{background-position:50%;background-repeat:no-repeat;background-size:16px;height:16px;width:16px}.monaco-action-bar .action-item.menu-entry .action-label{background-image:var(--menu-entry-icon-light)}.hc-black .monaco-action-bar .action-item.menu-entry .action-label,.vs-dark .monaco-action-bar .action-item.menu-entry .action-label{background-image:var(--menu-entry-icon-dark)}.monaco-dropdown{height:100%;padding:0}.monaco-dropdown>.dropdown-label{align-items:center;cursor:pointer;display:flex;height:100%;justify-content:center}.monaco-dropdown>.dropdown-label>.action-label.disabled{cursor:default}.monaco-dropdown-with-primary{border-radius:5px;display:flex!important;flex-direction:row}.monaco-dropdown-with-primary>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;line-height:16px;margin-left:-4px;padding-left:0;padding-right:0}.monaco-editor .goto-definition-link{cursor:pointer;text-decoration:underline}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-bottom-width:1px;border-top-width:1px}.monaco-editor .reference-zone-widget .inline{display:inline-block;vertical-align:top}.monaco-editor .reference-zone-widget .messages{height:100%;padding:3em 0;text-align:center;width:100%}.monaco-editor .reference-zone-widget .ref-tree{line-height:23px}.monaco-editor .reference-zone-widget .ref-tree .reference{overflow:hidden;text-overflow:ellipsis}.monaco-editor .reference-zone-widget .ref-tree .reference-file{display:inline-flex;height:100%;width:100%}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit!important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-left:auto;margin-right:12px}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-editor.vs .dnd-target{border-right:2px dotted #000;color:#fff}.monaco-editor.vs-dark .dnd-target{border-right:2px dotted #aeafad;color:#51504f}.monaco-editor.hc-black .dnd-target{border-right:2px dotted #fff;color:#000}.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines{cursor:default}.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines{cursor:copy}.monaco-custom-checkbox{border:1px solid transparent;box-sizing:border-box;cursor:pointer;float:left;height:20px;margin-left:2px;opacity:.7;overflow:hidden;padding:1px;user-select:none;-webkit-user-select:none;-ms-user-select:none;width:20px}.monaco-custom-checkbox.checked,.monaco-custom-checkbox:hover{opacity:1}.hc-black .monaco-custom-checkbox,.hc-black .monaco-custom-checkbox:hover{background:none}.monaco-custom-checkbox.monaco-simple-checkbox{background-size:16px!important;border:1px solid transparent;border-radius:3px;height:18px;margin-left:0;margin-right:9px;opacity:1;padding:0;width:18px}.monaco-custom-checkbox.monaco-simple-checkbox:not(.checked):before{visibility:hidden}.monaco-editor .find-widget{box-sizing:border-box;height:33px;line-height:19px;overflow:hidden;padding:0 4px;position:absolute;-webkit-transform:translateY(calc(-100% - 10px));transform:translateY(calc(-100% - 10px));transition:-webkit-transform .2s linear;transition:transform .2s linear;transition:transform .2s linear,-webkit-transform .2s linear;z-index:35}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{-webkit-transform:translateY(0);transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:initial;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{display:flex;font-size:12px;margin:4px 0 0 17px}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-bottom:2px;padding-top:2px}.monaco-editor .find-widget>.find-part .find-actions,.monaco-editor .find-widget>.replace-part .replace-actions{align-items:center;display:flex;height:25px}.monaco-editor .find-widget .monaco-findInput{display:flex;flex:1 1;vertical-align:middle}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{box-sizing:border-box;display:flex;flex:initial;height:25px;line-height:23px;margin:0 0 0 3px;padding:2px 0 0 2px;text-align:center;vertical-align:middle}.monaco-editor .find-widget .button{align-items:center;background-position:50%;background-repeat:no-repeat;cursor:pointer;display:flex;flex:initial;height:20px;justify-content:center;margin-left:3px;width:20px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{padding:1px 6px;top:-1px;width:auto}.monaco-editor .find-widget .button.toggle{box-sizing:border-box;height:100%;left:3px;position:absolute;top:0;width:18px}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{cursor:default;opacity:.3}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{display:flex;flex:auto;flex-grow:0;flex-shrink:0;position:relative;vertical-align:middle}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;right:2px;top:3px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .findMatch{-webkit-animation-duration:0;animation-duration:0;-webkit-animation-name:inherit!important;animation-name:inherit!important}.monaco-editor .find-widget .monaco-sash{left:0!important}.monaco-editor.hc-black .find-widget .button:before{left:2px;position:relative;top:1px}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{font-size:13px;width:100%}.monaco-findInput>.controls{position:absolute;right:2px;top:3px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.monaco-findInput.highlight-0 .controls{-webkit-animation:monaco-findInput-highlight-0 .1s linear 0s;animation:monaco-findInput-highlight-0 .1s linear 0s}.monaco-findInput.highlight-1 .controls{-webkit-animation:monaco-findInput-highlight-1 .1s linear 0s;animation:monaco-findInput-highlight-1 .1s linear 0s}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{-webkit-animation:monaco-findInput-highlight-dark-0 .1s linear 0s;animation:monaco-findInput-highlight-dark-0 .1s linear 0s}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{-webkit-animation:monaco-findInput-highlight-dark-1 .1s linear 0s;animation:monaco-findInput-highlight-dark-1 .1s linear 0s}@-webkit-keyframes monaco-findInput-highlight-0{0%{background:rgba(253,255,0,.8)}to{background:transparent}}@keyframes monaco-findInput-highlight-0{0%{background:rgba(253,255,0,.8)}to{background:transparent}}@-webkit-keyframes monaco-findInput-highlight-1{0%{background:rgba(253,255,0,.8)}99%{background:transparent}}@keyframes monaco-findInput-highlight-1{0%{background:rgba(253,255,0,.8)}99%{background:transparent}}@-webkit-keyframes monaco-findInput-highlight-dark-0{0%{background:hsla(0,0%,100%,.44)}to{background:transparent}}@keyframes monaco-findInput-highlight-dark-0{0%{background:hsla(0,0%,100%,.44)}to{background:transparent}}@-webkit-keyframes monaco-findInput-highlight-dark-1{0%{background:hsla(0,0%,100%,.44)}99%{background:transparent}}@keyframes monaco-findInput-highlight-dark-1{0%{background:hsla(0,0%,100%,.44)}99%{background:transparent}}.monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-expanded{align-items:center;cursor:pointer;display:flex;font-size:140%;justify-content:center;margin-left:2px;opacity:0;transition:opacity .5s}.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons,.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,.monaco-editor .margin-view-overlays:hover .codicon{opacity:1}.monaco-editor .inline-folded:after{color:grey;content:"⋯";cursor:pointer;display:inline;line-height:1em;margin:.1em .2em 0}.monaco-editor .detected-link,.monaco-editor .detected-link-active{text-decoration:underline;text-underline-position:under}.monaco-editor .detected-link-active{cursor:pointer}.monaco-editor .parameter-hints-widget{display:flex;flex-direction:column;line-height:1.5em;z-index:10}.monaco-editor .parameter-hints-widget>.phwrapper{display:flex;flex-direction:row;max-width:440px}.monaco-editor .parameter-hints-widget.multiple{min-height:3.3em;padding:0}.monaco-editor .parameter-hints-widget.visible{transition:left .05s ease-in-out}.monaco-editor .parameter-hints-widget p,.monaco-editor .parameter-hints-widget ul{margin:8px 0}.monaco-editor .parameter-hints-widget .body,.monaco-editor .parameter-hints-widget .monaco-scrollable-element{display:flex;flex:1 1;flex-direction:column;min-height:100%}.monaco-editor .parameter-hints-widget .signature{padding:4px 5px}.monaco-editor .parameter-hints-widget .docs{padding:0 10px 0 5px;white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs.empty{display:none}.monaco-editor .parameter-hints-widget .docs .markdown-docs{white-space:normal}.monaco-editor .parameter-hints-widget .docs .markdown-docs code{font-family:var(--monaco-monospace-font)}.monaco-editor .parameter-hints-widget .docs .code{white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs code{border-radius:3px;padding:0 .4em}.monaco-editor .parameter-hints-widget .controls{align-items:center;display:none;flex-direction:column;justify-content:flex-end;min-width:22px}.monaco-editor .parameter-hints-widget.multiple .controls{display:flex;padding:0 2px}.monaco-editor .parameter-hints-widget.multiple .button{background-repeat:no-repeat;cursor:pointer;height:16px;width:16px}.monaco-editor .parameter-hints-widget .button.previous{bottom:24px}.monaco-editor .parameter-hints-widget .overloads{font-family:var(--monaco-monospace-font);height:12px;line-height:12px;opacity:.5;text-align:center}.monaco-editor .parameter-hints-widget .signature .parameter.active{font-weight:700;text-decoration:underline}.monaco-editor .parameter-hints-widget .documentation-parameter>.parameter{font-weight:700;margin-right:.5em}.monaco-editor .rename-box{color:inherit;z-index:100}.monaco-editor .rename-box.preview{padding:3px 3px 0}.monaco-editor .rename-box .rename-input{padding:3px;width:calc(100% - 6px)}.monaco-editor .rename-box .rename-label{display:none;opacity:.8}.monaco-editor .rename-box.preview .rename-label{display:inherit}.monaco-editor .snippet-placeholder{min-width:2px}.monaco-editor .finish-snippet-placeholder,.monaco-editor .snippet-placeholder{outline-style:solid;outline-width:1px}.monaco-editor .suggest-widget{display:flex;flex-direction:column;width:430px;z-index:40}.monaco-editor .suggest-widget.message{align-items:center;flex-direction:row}.monaco-editor .suggest-details,.monaco-editor .suggest-widget{border-style:solid;border-width:1px;flex:0 1 auto;width:100%}.monaco-editor.hc-black .suggest-details,.monaco-editor.hc-black .suggest-widget{border-width:2px}.monaco-editor .suggest-widget .suggest-status-bar{border-top:1px solid transparent;box-sizing:border-box;display:none;flex-flow:row nowrap;font-size:80%;justify-content:space-between;overflow:hidden;padding:0 4px;width:100%}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar{display:flex}.monaco-editor .suggest-widget .suggest-status-bar .left{padding-right:8px}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label{color:inherit;opacity:.5}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label{margin-right:0}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label:after{content:", ";margin-right:.3em}.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:100%}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{height:100%;width:100%}.monaco-editor .suggest-widget .monaco-list{user-select:none;-webkit-user-select:none;-ms-user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{background-position:2px 2px;background-repeat:no-repeat;-mox-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:flex;padding-right:10px;touch-action:none;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{flex:1 1;height:100%;overflow:hidden;padding-left:2px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{display:flex;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:pre}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{display:flex}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:before{color:inherit;cursor:pointer;font-size:14px;opacity:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close{position:absolute;right:2px;top:6px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{opacity:.7}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label{overflow:hidden;text-overflow:ellipsis}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label{align-self:center;font-size:90%;margin-left:4px;opacity:.4;overflow:hidden;text-overflow:ellipsis}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{margin-left:1.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:calc(100% - 26px)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left{flex-grow:1;flex-shrink:1;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label{flex-shrink:0}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label{max-width:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label{flex-shrink:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{flex-shrink:4;max-width:70%;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:inline-block;height:18px;position:absolute;right:10px;visibility:hidden;width:18px}.monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none!important}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:inline-block}.monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:hover>.contents>.main>.right>.readMore{visibility:visible}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:.66;text-decoration:none;text-decoration:initial}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{background-position:50%;background-repeat:no-repeat;background-size:80%;display:block;height:16px;margin-left:2px;width:16px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon{align-items:center;display:flex;margin-right:4px}.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{border:.1em solid #000;display:inline-block;height:.7em;margin:0 0 0 .3em;width:.7em}.monaco-editor .suggest-details-container{z-index:41}.monaco-editor .suggest-details{cursor:default;display:flex;flex-direction:column}.monaco-editor .suggest-details.no-docs{display:none}.monaco-editor .suggest-details>.monaco-scrollable-element{flex:1 1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body{box-sizing:border-box;height:100%;width:100%}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type{flex:2 1;margin:0 24px 0 0;opacity:.7;overflow:hidden;padding:4px 0 12px 5px;text-overflow:ellipsis;white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap{white-space:normal;word-break:break-all}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs{margin:0;padding:4px 5px;white-space:pre-wrap}.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs{margin-right:24px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs{min-height:calc(1rem + 8px);padding:0;white-space:normal}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code{word-wrap:break-word;white-space:pre-wrap}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon{vertical-align:sub}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-details code{border-radius:3px;padding:0 .4em}.monaco-editor .suggest-details ol,.monaco-editor .suggest-details ul{padding-left:20px}.monaco-editor .suggest-details p code{font-family:var(--monaco-monospace-font)}.monaco-editor .accessibilityHelpWidget{overflow:scroll;padding:10px;vertical-align:middle}.monaco-editor .iPadShowKeyboard{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4LjAzNiA0LjAxSDQuMDA4VjMyLjAzaDQ0LjAyOFY0LjAxWk00LjAwOC4wMDhBNC4wMDMgNC4wMDMgMCAwIDAgLjAwNSA0LjAxVjMyLjAzYTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAgMCA0LjAwMy00LjAwMlY0LjAxQTQuMDAzIDQuMDAzIDAgMCAwIDQ4LjAzNi4wMDhINC4wMDhaTTguMDEgOC4wMTNoNC4wMDN2NC4wMDNIOC4wMVY4LjAxM1ptMTIuMDA4IDBoLTQuMDAydjQuMDAzaDQuMDAyVjguMDEzWm00LjAwMyAwaDQuMDAydjQuMDAzaC00LjAwMlY4LjAxM1ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzVjguMDEzWm00LjAwMiAwaDQuMDAzdjQuMDAzSDQwLjAzVjguMDEzWm0tMjQuMDE1IDguMDA1SDguMDF2NC4wMDNoOC4wMDZ2LTQuMDAzWm00LjAwMiAwaDQuMDAzdjQuMDAzaC00LjAwM3YtNC4wMDNabTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3YtNC4wMDNabTEyLjAwOCAwdjQuMDAzaC04LjAwNXYtNC4wMDNoOC4wMDVabS0zMi4wMjEgOC4wMDVIOC4wMXY0LjAwM2g0LjAwM3YtNC4wMDNabTQuMDAzIDBoMjAuMDEzdjQuMDAzSDE2LjAxNnYtNC4wMDNabTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzdi00LjAwM1oiIGZpbGw9IiM0MjQyNDIiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+) 50% no-repeat;border:4px solid #f6f6f6;border-radius:4px;height:36px;margin:0;min-height:0;min-width:0;overflow:hidden;padding:0;position:absolute;resize:none;width:58px}.monaco-editor.vs-dark .iPadShowKeyboard{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4LjAzNiA0LjAxSDQuMDA4VjMyLjAzaDQ0LjAyOFY0LjAxWk00LjAwOC4wMDhBNC4wMDMgNC4wMDMgMCAwIDAgLjAwNSA0LjAxVjMyLjAzYTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAgMCA0LjAwMy00LjAwMlY0LjAxQTQuMDAzIDQuMDAzIDAgMCAwIDQ4LjAzNi4wMDhINC4wMDhaTTguMDEgOC4wMTNoNC4wMDN2NC4wMDNIOC4wMVY4LjAxM1ptMTIuMDA4IDBoLTQuMDAydjQuMDAzaDQuMDAyVjguMDEzWm00LjAwMyAwaDQuMDAydjQuMDAzaC00LjAwMlY4LjAxM1ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzVjguMDEzWm00LjAwMiAwaDQuMDAzdjQuMDAzSDQwLjAzVjguMDEzWm0tMjQuMDE1IDguMDA1SDguMDF2NC4wMDNoOC4wMDZ2LTQuMDAzWm00LjAwMiAwaDQuMDAzdjQuMDAzaC00LjAwM3YtNC4wMDNabTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3YtNC4wMDNabTEyLjAwOCAwdjQuMDAzaC04LjAwNXYtNC4wMDNoOC4wMDVabS0zMi4wMjEgOC4wMDVIOC4wMXY0LjAwM2g0LjAwM3YtNC4wMDNabTQuMDAzIDBoMjAuMDEzdjQuMDAzSDE2LjAxNnYtNC4wMDNabTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzdi00LjAwM1oiIGZpbGw9IiNDNUM1QzUiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+) 50% no-repeat;border:4px solid #252526}.monaco-editor .tokens-inspect-widget{padding:10px;user-select:text;-webkit-user-select:text;-ms-user-select:text;z-index:50}.tokens-inspect-separator{border:0;height:1px}.monaco-editor .tokens-inspect-widget .tm-token{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget .tm-token-length{float:right;font-size:60%;font-weight:400}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:var(--monaco-monospace-font);text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:var(--monaco-monospace-font)}.ydb-query-explain-result__result{display:flex;flex-direction:column;flex-grow:1;overflow:auto}.ydb-query-explain-result__text-message{padding:15px 20px}.ydb-query-explain-result__controls{align-items:center;background-color:var(--g-color-base-background);border-bottom:1px solid var(--g-color-line-generic);display:flex;height:53px;justify-content:space-between;padding:12px 20px;position:-webkit-sticky;position:sticky;top:0;z-index:2}.ydb-query-explain-result__controls-right{display:flex;gap:12px;height:100%}.ydb-query-explain-result__controls-left{display:flex;gap:4px}.ydb-query-explain-result__explain-canvas-container{height:100%;overflow-y:auto;width:100%}.ydb-query-explain-result__explain-canvas-container_hidden{display:none}.ydb-query-explain-result__inspector{font-family:var(--g-font-family-monospace)!important;font-size:var(--g-text-code-1-font-size)!important;line-height:var(--g-text-code-1-line-height)!important;overflow-y:auto;padding:15px 20px;width:100%}.ydb-query-explain-result__inspector .json-inspector__leaf_composite:before{color:var(--g-color-text-secondary);font-size:9px;left:20px;position:absolute}.ydb-query-explain-result__inspector .json-inspector__leaf_composite.json-inspector__leaf_root:before{left:0}.ydb-query-explain-result__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:"[+]"}.ydb-query-explain-result__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before{content:"[-]"}.ydb-query-explain-result__inspector .json-inspector__key{color:var(--g-color-text-misc)}.ydb-query-explain-result__inspector .json-inspector__leaf{padding-left:20px;position:relative}.ydb-query-explain-result__inspector .json-inspector__leaf_root{padding-left:0}.ydb-query-explain-result__inspector .json-inspector__line{padding-left:20px}.ydb-query-explain-result__inspector .json-inspector__toolbar{border:1px solid var(--g-color-line-generic);border-radius:4px;margin-bottom:10px;width:300px}.ydb-query-explain-result__inspector .json-inspector__search{background:none;border:0 solid transparent;border-width:0 22px 0 8px;box-sizing:border-box;color:var(--g-color-text-primary);font-family:var(--g-text-body-font-family);font-size:13px;height:28px;margin:0;outline:0;padding:0;vertical-align:top;width:300px}.ydb-query-explain-result__inspector .json-inspector__value_helper{color:var(--g-color-text-secondary)}.ydb-query-explain-result__inspector .json-inspector__line:hover:after{background:var(--g-color-base-simple-hover)}.ydb-query-explain-result__inspector .json-inspector__show-original:before{color:var(--g-color-text-secondary)}.ydb-query-explain-result__inspector .json-inspector__show-original:hover:after,.ydb-query-explain-result__inspector .json-inspector__show-original:hover:before{color:var(--g-color-text-primary)}.ydb-query-explain-result__inspector .json-inspector__leaf.json-inspector__leaf_root.json-inspector__leaf_expanded.json-inspector__leaf_composite{max-width:calc(100% - 50px)}.ydb-query-explain-result__inspector_fullscreen{padding:10px}.ydb-query-explain-result__ast{height:100%;overflow:hidden;white-space:pre-wrap;width:100%}.ydb-query-explain-result__loader{align-items:center;display:flex;justify-content:center;margin-top:20px;width:100%}.kv-save-query__dialog-row{align-items:flex-start;display:flex}.kv-save-query__dialog-row+.kv-save-query__dialog-row{margin-top:var(--g-text-body-1-line-height)}.kv-save-query__field-title{font-weight:500;line-height:28px;margin-right:12px;white-space:nowrap}.kv-save-query__field-title.required:after{color:var(--g-color-text-danger);content:"*"}.kv-save-query__control-wrapper{display:flex;flex-direction:column;flex-grow:1}.kv-save-query__error{color:var(--g-color-text-danger);display:inline-block;height:17px}.kv-save-query__embedded-tooltip{align-items:center;color:var(--g-color-text-secondary);display:flex;height:100%;margin-left:-10px}.kv-save-query__embedded-tooltip:hover{color:var(--g-color-text-complementary);cursor:pointer}.kv-save-query__embedded-popup{border-radius:5px;max-width:150px!important;padding:10px}.kv-save-query__embedded-popup:before{border-radius:5px}.ydb-query-editor-controls{align-items:flex-end;display:flex;flex:0 0 40px;gap:24px;justify-content:space-between;min-height:40px;padding:5px 0}.ydb-query-editor-controls__left{display:flex;gap:12px}.ydb-query-editor-controls__mode-selector__button{margin-left:2px;width:241px}.ydb-query-editor-controls__mode-selector__button-content{align-items:center;display:flex;justify-content:space-between;width:215px}.ydb-query-editor-controls__mode-selector__popup{width:241px}.ydb-query-editor-controls__item-with-popover{align-items:center;display:flex;height:24px;line-height:normal}.ydb-query-editor-controls__popover{max-width:420px;white-space:pre-wrap}.query-editor{display:flex;flex:1 1 auto;flex-direction:column;height:100%;position:relative}.query-editor .data-table__table{border-collapse:initial;border-spacing:0}.query-editor .data-table__td,.query-editor .data-table__th{vertical-align:middle}.query-editor .data-table__box .data-table__table-wrapper{padding-bottom:20px}.query-editor .data-table__row,.query-editor .data-table__sticky th{height:40px}.query-editor .data-table__th{box-shadow:inset 0 -1px 0 0 var(--g-tabs-color-divider)}.query-editor__monaco{border:1px solid var(--g-color-line-generic);display:flex;height:100%;position:relative;width:100%}.query-editor__monaco-wrapper{height:calc(100% - 49px);min-height:0;width:100%}.query-editor__pane-wrapper{background-color:var(--g-color-base-background);display:flex;flex-direction:column;z-index:2}.query-editor__pane-wrapper_top{border-bottom:1px solid var(--g-color-line-generic);padding:0 16px}.ydb-query{display:flex;flex:1 1 auto;flex-direction:column;max-height:100%}.ydb-query__tabs{padding:13px 20px 16px}.ydb-query__content{height:100%;overflow:hidden}.histogram{display:flex;flex:1 1 auto}.histogram__chart{align-items:baseline;border-bottom:1px solid var(--g-color-base-generic);border-left:1px solid var(--g-color-base-generic);display:flex;height:300px;margin-left:50px;margin-top:30px;position:relative;width:800px}.histogram__x-min{left:-3px}.histogram__x-max,.histogram__x-min{bottom:-25px;color:var(--g-color-text-secondary);position:absolute}.histogram__x-max{right:0}.histogram__y-min{bottom:-7px;left:-30px;width:20px}.histogram__y-max,.histogram__y-min{color:var(--g-color-text-secondary);position:absolute;text-align:right}.histogram__y-max{left:-60px;top:-5px;width:50px}.histogram__item{cursor:pointer;margin-right:.5%;width:1.5%}.heatmap{display:flex;flex:1 1 auto;flex-direction:column;height:100%;overflow:auto}.heatmap__limits{align-items:center;display:flex;margin-left:20px}.heatmap__limits-block{display:flex;margin-right:10px}.heatmap__limits-title{color:var(--g-color-text-secondary);margin-right:5px}.heatmap__row{align-items:center}.heatmap__row_overall{margin:15px 20px}.heatmap__row_overall .yc-progress{margin:0;width:300px}.heatmap__label{font-size:var(--g-text-body-2-font-size);font-weight:500;line-height:var(--g-text-body-2-line-height);margin-right:16px;text-transform:uppercase}.heatmap__label_overall{margin-right:15px}.heatmap__items{overflow:auto}.heatmap__canvas-container{cursor:pointer;overflow:auto}.heatmap__filters{align-items:center;display:flex;margin:0 0 10px}.heatmap__filter-control{margin-right:10px;max-width:200px;min-width:100px}.heatmap__filter-control:last-child{margin-right:0}.heatmap__histogram-checkbox,.heatmap__sort-checkbox{margin-left:10px}.heatmap__row{display:flex}.heatmap .tablet,.heatmap__row{margin-bottom:2px}.kv-tablets-overall__row{align-items:center;display:flex;gap:8px}.kv-tablets-overall__row_overall .yc-progress{margin:0;width:166px}.kv-tablets-overall__label{font-weight:500}.tablets{display:flex;flex:1 1 auto;flex-direction:column}.tablets__header{align-items:center;display:flex;gap:12px;margin-bottom:16px}.tablets__items{flex:1 1 auto}.tablets__filters{align-items:center;display:flex}.tablets__filter-control{max-width:180px;min-width:100px;width:180px}.tablets .tablet{display:inline-block;line-height:18px;text-align:center}.kv-describe__message-container{padding:15px 0}.kv-describe__result{display:flex;flex:0 0 auto;overflow:auto;padding:10px 20px 20px 0}.kv-describe__tree{font-family:var(--g-font-family-monospace)!important;font-size:var(--g-text-code-1-font-size)!important;line-height:var(--g-text-code-1-line-height)!important}.kv-describe__tree .json-inspector__leaf_composite:before{color:var(--g-color-text-secondary);font-size:9px;left:20px;position:absolute}.kv-describe__tree .json-inspector__leaf_composite.json-inspector__leaf_root:before{left:0}.kv-describe__tree :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:"[+]"}.kv-describe__tree .json-inspector__leaf_expanded.json-inspector__leaf_composite:before{content:"[-]"}.kv-describe__tree .json-inspector__key{color:var(--g-color-text-misc)}.kv-describe__tree .json-inspector__leaf{padding-left:20px;position:relative}.kv-describe__tree .json-inspector__leaf_root{padding-left:0}.kv-describe__tree .json-inspector__line{padding-left:20px}.kv-describe__tree .json-inspector__toolbar{border:1px solid var(--g-color-line-generic);border-radius:4px;margin-bottom:10px;width:300px}.kv-describe__tree .json-inspector__search{background:none;border:0 solid transparent;border-width:0 22px 0 8px;box-sizing:border-box;color:var(--g-color-text-primary);font-family:var(--g-text-body-font-family);font-size:13px;height:28px;margin:0;outline:0;padding:0;vertical-align:top;width:300px}.kv-describe__tree .json-inspector__value_helper{color:var(--g-color-text-secondary)}.kv-describe__tree .json-inspector__line:hover:after{background:var(--g-color-base-simple-hover)}.kv-describe__tree .json-inspector__show-original:before{color:var(--g-color-text-secondary)}.kv-describe__tree .json-inspector__show-original:hover:after,.kv-describe__tree .json-inspector__show-original:hover:before{color:var(--g-color-text-primary)}.hot-keys{align-items:flex-start;background-color:var(--g-color-base-background);display:flex;flex-direction:column;flex-grow:1;max-height:100%;overflow:auto}.hot-keys__table-content{height:100%;overflow:auto;width:100%}.hot-keys__table-content .data-table__head-row:first-child .data-table__th:first-child,.hot-keys__table-content .data-table__td:first-child{background-color:var(--g-color-base-background);border-right:1px solid var(--g-color-line-generic);left:0;position:-webkit-sticky;position:sticky;z-index:2000}.hot-keys__table-content .data-table__row:hover .data-table__td:first-child{background-color:var(--ydb-data-table-color-hover)!important}.hot-keys__table-content .data-table__head-row:first-child .data-table__th:nth-child(0),.hot-keys__table-content .data-table__td:nth-child(0){border-right:initial;box-shadow:none}.hot-keys__table-content .data-table__head-row:first-child .data-table__th:first-child,.hot-keys__table-content .data-table__td:first-child{box-shadow:none}.hot-keys__header{background-color:var(--g-color-base-background);left:0;padding:10px 0;position:-webkit-sticky;position:sticky;top:0;width:100%;z-index:2}.hot-keys__loader{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.hot-keys__stub{margin:10px}.hot-keys__primary-key-column{align-items:center;display:flex;gap:5px}.node-network{border:1px solid transparent;border-radius:4px;box-sizing:border-box;color:var(--g-color-text-complementary);cursor:pointer;display:inline-block;font-size:12px;height:14px;line-height:14px;margin-bottom:5px;margin-right:5px;padding:0 5px;text-align:center;text-transform:uppercase;width:14px}.node-network_id{height:14px;width:42px}.node-network_blur{opacity:.25}.node-network_gray{background:var(--ydb-color-status-grey)}.node-network_black{background-color:var(--ydb-color-status-black);color:var(--g-color-text-light-primary)}.node-network_green{background-color:var(--ydb-color-status-green)}.node-network_yellow{background-color:var(--ydb-color-status-yellow)}.node-network_red{background-color:var(--ydb-color-status-red)}.node-network:hover{border:1px solid var(--g-color-text-primary)}.network{font-size:var(--g-text-body-2-font-size);justify-content:space-between;line-height:var(--g-text-body-2-line-height);max-width:1305px}.network,.network__nodes-row{display:flex;flex-grow:1;height:100%;overflow:auto}.network__nodes-row{align-items:flex-start;flex-direction:row}.network__inner{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto}.network__right{height:100%;padding-left:20px;width:100%}.network__left{border-right:1px solid var(--g-color-base-generic-accent);height:100%}.network__placeholder{align-items:center;display:flex;flex-direction:column;flex-grow:1;height:100%;justify-content:center;width:100%}.network__placeholder-text{margin-top:15px}.network__placeholder-img{color:transparent}.network__nodes{display:flex;flex-wrap:wrap}.network__nodes-container{min-width:325px}.network__nodes-container_right{margin-right:60px}.network__nodes-title{border-bottom:1px solid var(--g-color-base-generic-accent);color:var(--g-color-text-secondary);font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);margin:0 0 15px}.network__link{color:var(--g-color-base-brand);text-decoration:none}.network__title{font-size:var(--g-text-body-1-font-size);font-weight:500;line-height:var(--g-text-body-1-line-height);margin:20px 0}.network__checkbox-wrapper{align-items:center;display:flex}.network__checkbox-wrapper label{white-space:nowrap}.network__label{margin-bottom:16px}.network__controls{display:flex;gap:12px;margin:0 16px 16px 0}.network__controls-wrapper{display:flex;flex:1 1 auto;flex-direction:row;flex-direction:column}.network__select{margin:0 15px;max-width:115px}.network__rack-column{align-items:center;background-color:rgba(0,0,0,.07);border-radius:4px;display:flex;flex-direction:column;margin-bottom:5px;margin-right:5px;padding:2px}.network__rack-column .node-network{margin-right:0}.yc-table-column-setup__controls{padding:4px}.yc-table-column-setup__status{color:var(--g-color-text-secondary);margin-left:5px}.yc-table-column-setup__tick-wrap{height:10px;left:14px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);visibility:hidden;width:10px}.yc-table-column-setup__tick-wrap_visible{visibility:visible}.yc-table-column-setup__tick{color:var(--g-color-base-brand)}.yc-table-column-setup__lock-wrap{color:var(--g-color-text-hint);left:10px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.yc-table-column-setup__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.yc-table-column-setup__items{height:var(--yc-list-height);overflow-x:auto}.yc-table-column-setup__item.yc-table-column-setup__item{cursor:pointer;padding:0 8px 0 32px;position:relative}.yc-table-column-setup__item.yc-table-column-setup__item .yc-list__item-sort-icon{cursor:move}.speed-multimeter{display:flex;width:100%}.speed-multimeter__content{display:flex;flex-direction:row;flex-grow:1;justify-content:flex-end;line-height:22px}.speed-multimeter__displayed-value{display:flex;flex-direction:row;justify-content:flex-end;margin-right:10px}.speed-multimeter__bars{align-items:flex-start;display:flex;flex-direction:column;margin-right:5px;overflow:hidden;width:32px}.speed-multimeter__bar-container{height:6px;width:100%}.speed-multimeter__bar-container_highlighted{background:var(--g-color-line-generic)}.speed-multimeter__bar{height:100%;min-width:2px}.speed-multimeter__bar_color_light{background:var(--g-color-base-info-medium)}.speed-multimeter__bar_color_dark{background:var(--g-color-base-info-heavy)}.speed-multimeter__bar-container+.speed-multimeter__bar-container{margin-top:2px}.speed-multimeter__popover-container{align-items:center;display:flex;justify-content:center}.speed-multimeter__popover-content{padding:10px}.speed-multimeter__popover-header{display:block;font-size:18px;line-height:24px;margin-bottom:7px}.speed-multimeter__popover-row{display:block;font-size:13px;line-height:18px}.speed-multimeter__popover-row_color_primary{color:var(--g-color-text-primary)}.speed-multimeter__popover-row_color_secondary{color:var(--g-color-text-secondary)}.ydb-lag-popover-content__text{margin-bottom:10px}.ydb-lag-popover-content_type_read{max-width:280px}.ydb-lag-popover-content_type_write{max-width:220px}.ydb-diagnostics-partitions-columns-header__multiline{white-space:normal}.ydb-diagnostics-partitions-columns-header__read-session{white-space:normal;width:80px}.ydb-diagnostics-partitions-columns-header__lags{white-space:nowrap}.ydb-diagnostics-partitions-columns-header__messages{white-space:normal;width:90px}.ydb-diagnostics-partitions-columns-header__messages-popover-content{max-width:200px}.ydb-diagnostics-partitions-columns__lags-header{text-align:center}.ydb-diagnostics-partitions-columns__string-with-copy{overflow:hidden;text-overflow:ellipsis;width:150px}.ydb-diagnostics-partitions{display:flex;flex-grow:1;flex:1 1 auto;flex-direction:column;height:100%;overflow:auto}.ydb-diagnostics-partitions__controls{align-items:center;display:flex;gap:12px;padding:16px 0 18px}.ydb-diagnostics-partitions__consumer-select{width:220px}.ydb-diagnostics-partitions__select-option_empty{color:var(--g-color-text-hint)}.ydb-diagnostics-partitions__search{width:238px}.ydb-diagnostics-partitions__search_partition{width:100px}.ydb-diagnostics-partitions__search_general{width:280px}.ydb-diagnostics-partitions__table-wrapper{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto}.ydb-diagnostics-partitions__table-content{height:100%;overflow:auto}.ydb-diagnostics-partitions__table-content .data-table__head-row:first-child .data-table__th:first-child,.ydb-diagnostics-partitions__table-content .data-table__td:first-child{background-color:var(--g-color-base-background);border-right:1px solid var(--g-color-line-generic);left:0;position:-webkit-sticky;position:sticky;z-index:2000}.ydb-diagnostics-partitions__table-content .data-table__row:hover .data-table__td:first-child{background-color:var(--ydb-data-table-color-hover)!important}.ydb-diagnostics-partitions__table-content .data-table__head-row:first-child .data-table__th:nth-child(0),.ydb-diagnostics-partitions__table-content .data-table__td:nth-child(0){border-right:initial;box-shadow:none}.ydb-diagnostics-partitions__table-content .data-table__head-row:first-child .data-table__th:first-child,.ydb-diagnostics-partitions__table-content .data-table__td:first-child{box-shadow:none}.ydb-diagnostics-consumers-topic-stats{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.ydb-diagnostics-consumers-topic-stats__wrapper{border-left:1px solid var(--g-color-line-generic);display:flex;flex-direction:row;padding-left:16px}.ydb-diagnostics-consumers-topic-stats__item{display:flex;flex-direction:column;margin-right:20px}.ydb-diagnostics-consumers-topic-stats__label{color:var(--g-color-text-secondary);margin-bottom:4px}.ydb-diagnostics-consumers-topic-stats__value{align-items:center;display:flex;height:30px;justify-content:flex-start}.ydb-diagnostics-consumers-columns-header__lags{white-space:nowrap}.ydb-diagnostics-consumers-columns__lags-header{text-align:center}.ydb-diagnostics-consumers{display:flex;flex-grow:1;flex:1 1 auto;flex-direction:column;height:100%;overflow:auto}.ydb-diagnostics-consumers__controls{align-items:center;display:flex;gap:12px;padding:16px 0 18px}.ydb-diagnostics-consumers__search{width:238px}.ydb-diagnostics-consumers__table-wrapper{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto}.ydb-diagnostics-consumers__table-content{height:100%;overflow:auto}.ydb-diagnostics-consumers__table-content .data-table__head-row:first-child .data-table__th:first-child,.ydb-diagnostics-consumers__table-content .data-table__td:first-child{background-color:var(--g-color-base-background);border-right:1px solid var(--g-color-line-generic);left:0;position:-webkit-sticky;position:sticky;z-index:2000}.ydb-diagnostics-consumers__table-content .data-table__row:hover .data-table__td:first-child{background-color:var(--ydb-data-table-color-hover)!important}.ydb-diagnostics-consumers__table-content .data-table__head-row:first-child .data-table__th:nth-child(0),.ydb-diagnostics-consumers__table-content .data-table__td:nth-child(0){border-right:initial;box-shadow:none}.ydb-diagnostics-consumers__table-content .data-table__head-row:first-child .data-table__th:first-child,.ydb-diagnostics-consumers__table-content .data-table__td:first-child{box-shadow:none}.date-range__input{background:transparent;border:1px solid var(--g-color-line-generic);border-radius:var(--g-border-radius-m);color:var(--g-color-text-primary);min-width:190px;padding:5px 8px}.kv-top-queries{display:flex;flex-direction:column;height:100%}.kv-top-queries .data-table__table{border-collapse:initial;border-spacing:0}.kv-top-queries .data-table__td,.kv-top-queries .data-table__th{vertical-align:middle}.kv-top-queries .data-table__box .data-table__table-wrapper{padding-bottom:20px}.kv-top-queries .data-table__row,.kv-top-queries .data-table__sticky th{height:40px}.kv-top-queries .data-table__th{box-shadow:inset 0 -1px 0 0 var(--g-tabs-color-divider)}.kv-top-queries__loader{display:flex;justify-content:center}.kv-top-queries__controls{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:10px}.kv-top-queries__search{width:238px}.kv-top-queries__table{flex-grow:1;overflow:auto}.kv-top-queries__table .data-table__row{cursor:pointer}.kv-top-queries__query{overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:pre-wrap;width:500px;word-break:break-word}.kv-top-queries__user-sid{max-width:200px;overflow:hidden;text-overflow:ellipsis}.top-shards__filters{align-items:baseline;display:flex;flex-wrap:wrap;gap:16px}.top-shards{background-color:var(--g-color-base-background);display:flex;flex-direction:column;gap:10px;height:100%}.top-shards__loader{display:flex;justify-content:center}.top-shards__table{flex-grow:1;overflow:auto}.ydb-overview-topic-stats__title{font-size:var(--g-text-body-2-font-size);font-weight:600;line-height:var(--g-text-body-2-line-height);margin:15px 0 10px}.ydb-overview-topic-stats .ydb-loader{margin-top:50px}.ydb-overview-topic-stats .info-viewer__row{align-items:flex-start}.ydb-overview-topic-stats .speed-multimeter{margin-top:-5px}.ydb-overview-topic-stats .speed-multimeter__content{justify-content:flex-start}.ydb-overview-topic-stats__info .info-viewer__label-text_multiline{max-width:150px}.ydb-overview-topic-stats__bytes-written{margin-top:7px;padding-left:20px}.ydb-overview-topic-stats__bytes-written .info-viewer__label{min-width:180px}.ydb-diagnostics-table-info{overflow:auto}.ydb-diagnostics-table-info__title{font-size:var(--g-text-body-2-font-size);font-weight:600;line-height:var(--g-text-body-2-line-height);margin:15px 0 10px}.ydb-diagnostics-table-info__row{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.ydb-diagnostics-table-info__col{align-items:flex-start;display:flex;flex-direction:column;justify-content:flex-start}.ydb-diagnostics-table-info__col:not(:last-child){margin-right:50px}.ydb-diagnostics-table-info__info-block{margin-bottom:20px}.ydb-diagnostics-table-info__info-block .info-viewer__items{grid-template-columns:minmax(-webkit-max-content,280px);grid-template-columns:minmax(max-content,280px)}.issue-tree-item{align-items:center;cursor:pointer;display:flex;height:40px;justify-content:space-between}.issue-tree-item__field{display:flex;overflow:hidden}.issue-tree-item__field_status{display:flex;white-space:nowrap}.issue-tree-item__field_additional{color:var(--g-color-text-link);cursor:pointer;width:-webkit-max-content;width:max-content}.issue-tree-item__field_additional:hover{color:var(--g-color-text-link-hover)}.issue-tree-item__field_message{flex-shrink:0;overflow:hidden;white-space:normal;width:300px}.issue-tree-item__field-tooltip.issue-tree-item__field-tooltip{max-width:500px;min-width:500px}.issue-tree-item__field-label{color:var(--g-color-text-secondary)}.issue-tree{display:flex}.issue-tree__block{width:100%}.issue-tree__checkbox{margin:5px 0 10px}.issue-tree__info-panel{background:var(--g-color-base-generic);border-radius:4px;height:100%;margin:11px 0;padding:8px 20px;position:-webkit-sticky;position:sticky}.issue-tree__inspector{font-family:var(--g-font-family-monospace)!important;font-size:var(--g-text-code-1-font-size)!important;line-height:var(--g-text-code-1-line-height)!important}.issue-tree__inspector .json-inspector__leaf_composite:before{color:var(--g-color-text-secondary);font-size:9px;left:20px;position:absolute}.issue-tree__inspector .json-inspector__leaf_composite.json-inspector__leaf_root:before{left:0}.issue-tree__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:"[+]"}.issue-tree__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before{content:"[-]"}.issue-tree__inspector .json-inspector__key{color:var(--g-color-text-misc)}.issue-tree__inspector .json-inspector__leaf{padding-left:20px;position:relative}.issue-tree__inspector .json-inspector__leaf_root{padding-left:0}.issue-tree__inspector .json-inspector__line{padding-left:20px}.issue-tree__inspector .json-inspector__toolbar{border:1px solid var(--g-color-line-generic);border-radius:4px;margin-bottom:10px;width:300px}.issue-tree__inspector .json-inspector__search{background:none;border:0 solid transparent;border-width:0 22px 0 8px;box-sizing:border-box;color:var(--g-color-text-primary);font-family:var(--g-text-body-font-family);font-size:13px;height:28px;margin:0;outline:0;padding:0;vertical-align:top;width:300px}.issue-tree__inspector .json-inspector__value_helper{color:var(--g-color-text-secondary)}.issue-tree__inspector .json-inspector__line:hover:after{background:var(--g-color-base-simple-hover)}.issue-tree__inspector .json-inspector__show-original:before{color:var(--g-color-text-secondary)}.issue-tree__inspector .json-inspector__show-original:hover:after,.issue-tree__inspector .json-inspector__show-original:hover:before{color:var(--g-color-text-primary)}.issue-tree__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before,.issue-tree__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:""}.issue-tree__inspector .json-inspector__line:hover:after{background:transparent}.issue-tree__inspector .json-inspector__show-original:hover:after,.issue-tree__inspector .json-inspector__show-original:hover:before{color:transparent}.issue-tree__inspector .json-inspector__value_helper{display:none}.issue-tree__inspector .json-inspector__value{overflow:hidden;word-break:break-all}.issue-tree__inspector .json-inspector__value>span{-webkit-user-select:all;user-select:all}.issue-tree .ydb-tree-view__item{height:40px}.issue-tree .ydb-tree-view .tree-view_arrow{height:40px;width:40px}.issue-tree .ydb-tree-view .ydb-tree-view__item{margin-left:calc(24px*var(--ydb-tree-view-level))!important;padding-left:0!important}.issue-tree .ydb-tree-view .issue-tree__info-panel{margin-left:calc(24px*var(--ydb-tree-view-level))}.healthcheck{display:flex}.healthcheck_expanded{min-width:885px}.healthcheck__issue-preview{margin-bottom:15px}.healthcheck__message-container{padding:15px 0}.healthcheck__details{width:872px}.healthcheck__details-content-wrapper{overflow-x:hidden}.healthcheck__preview{height:100%}.healthcheck__preview-header{gap:8px;margin-bottom:var(--diagnostics-section-title-margin)}.healthcheck__preview-title{font-size:var(--g-text-subheader-3-font-size);font-weight:600;line-height:var(--g-text-subheader-3-line-height)}.healthcheck__preview-content{line-height:24px}.healthcheck__preview-title-wrapper{align-items:center;display:flex;gap:8px;margin-bottom:4px}.healthcheck__issues-statistics{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin:8px 0}.healthcheck__self-check-status-indicator{border-radius:4px;display:inline-block;font-size:13px;line-height:24px;padding:0 8px}.healthcheck__self-check-status-indicator_good,.healthcheck__self-check-status-indicator_green{background-color:var(--g-color-base-positive-light);color:var(--g-color-text-positive)}.healthcheck__self-check-status-indicator_degraded,.healthcheck__self-check-status-indicator_yellow{background-color:var(--g-color-base-warning-light);color:var(--g-color-text-warning)}.healthcheck__self-check-status-indicator_blue{background-color:var(--g-color-base-info-light);color:var(--g-color-text-info)}.healthcheck__self-check-status-indicator_emergency,.healthcheck__self-check-status-indicator_red{background-color:var(--g-color-base-danger-light);color:var(--g-color-text-danger)}.healthcheck__self-check-status-indicator_gray,.healthcheck__self-check-status-indicator_grey,.healthcheck__self-check-status-indicator_unspecified{background-color:var(--g-color-base-misc-light);color:var(--g-color-text-misc)}.healthcheck__self-check-status-indicator_maintenance_required,.healthcheck__self-check-status-indicator_orange{background-color:var(--g-color-base-warning-light);color:var(--g-color-text-warning-heavy)}.ydb-diagnostic-card{background-color:initial;border:1px solid var(--g-color-line-generic);border-radius:8px;flex-shrink:0;padding:16px 16px 28px;width:206px}.ydb-diagnostic-card_active{background-color:var(--g-color-base-selection);border-color:var(--g-color-base-info-medium)}.ydb-diagnostic-card:hover{box-shadow:0 1px 5px var(--g-color-sfx-shadow);cursor:pointer}.ydb-circular-progress-bar{display:block;max-width:100%;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.ydb-circular-progress-bar__wrapper{position:relative}.ydb-circular-progress-bar__content{left:50%;max-width:100%;overflow:hidden;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ydb-circular-progress-bar__circle-bg{stroke:var(--g-color-base-simple-hover);fill:none}.ydb-circular-progress-bar__circle{fill:none}.ydb-circular-progress-bar__circle_status_good{stroke:var(--ydb-color-status-green)}.ydb-circular-progress-bar__circle_status_warning{stroke:var(--ydb-color-status-yellow)}.ydb-circular-progress-bar__circle_status_danger{stroke:var(--ydb-color-status-red)}.ydb-metrics-card__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.ydb-metrics-card__label{font-size:var(--g-text-subheader-3-font-size);font-weight:600;line-height:var(--g-text-subheader-3-line-height)}.ydb-metrics-card__content{align-items:center;color:var(--g-color-text-secondary);display:flex;flex-direction:column;font-size:var(--g-text-header-1-font-size);line-height:var(--g-text-header-1-line-height);text-align:center}.ydb-metrics-card__progress{font-size:36px;font-weight:500;line-height:40px;text-align:center}.ydb-metrics-card__resources{color:var(--g-color-text-secondary);font-size:var(--g-text-body-1-font-size)}.ydb-metrics-card_active .ydb-metrics-card__content{color:var(--g-color-text-complementary)}.ydb-metrics-card_active .ydb-metrics-card__progress-bar-circle-bg{stroke:var(--g-color-base-float)}.metrics-cards{display:flex;gap:16px;margin-bottom:32px}.metrics-cards__tab{color:inherit;text-decoration:none}.tenant-overview{height:100%;overflow:auto;padding-bottom:20px}.tenant-overview__loader{display:flex;justify-content:center}.tenant-overview__tenant-name-wrapper{align-items:center;display:flex;overflow:hidden}.tenant-overview__top{align-items:center;display:flex;line-height:24px;margin-bottom:10px}.tenant-overview__top-label{font-weight:600;gap:10px;line-height:24px;margin-bottom:var(--diagnostics-section-title-margin)}.tenant-overview__info{left:0;position:-webkit-sticky;position:sticky;width:-webkit-max-content;width:max-content}.tenant-overview__title{font-size:var(--g-text-body-2-font-size);font-weight:700;line-height:var(--g-text-body-2-line-height);margin-bottom:10px}.tenant-overview__table{width:var(--diagnostics-section-table-width)}.tenant-overview__table .data-table__table{width:100%}.tenant-overview__table .data-table__row,.tenant-overview__table .data-table__sticky th{height:40px}.tenant-overview__table .data-table__box .data-table__table-wrapper{padding-bottom:20px}.tenant-overview__table .data-table__box_sticky-head_fixed{overflow:visible;overflow:initial}.tenant-overview__table:not(:last-child){margin-bottom:var(--diagnostics-section-margin)}.tenant-overview__table th{height:40px;vertical-align:middle}.tenant-overview__table_top-queries tr{cursor:pointer}.tenant-overview__storage-info{margin-bottom:36px}.kv-detailed-overview{display:flex;gap:20px;height:100%;width:100%}.kv-detailed-overview__section{display:flex;flex-basis:calc(50% - 10px);flex-direction:column;flex-grow:1;flex-shrink:0;min-width:300px}.kv-detailed-overview__modal .yc-modal__content{position:relative}.kv-detailed-overview__close-modal-button{position:absolute;right:13px;top:23px}.kv-tenant-diagnostics{display:flex;flex-direction:column;height:100%;overflow:hidden}.kv-tenant-diagnostics__header-wrapper{background-color:var(--g-color-base-background);padding:13px 20px 16px}.kv-tenant-diagnostics__tabs{align-items:center;box-shadow:inset 0 -1px 0 0 var(--g-color-line-generic);display:flex;justify-content:space-between}.kv-tenant-diagnostics__tabs .yc-tabs_direction_horizontal{box-shadow:none}.kv-tenant-diagnostics__tab{margin-right:40px;text-decoration:none}.kv-tenant-diagnostics__tab:first-letter{text-transform:uppercase}.kv-tenant-diagnostics__page-wrapper{flex-grow:1;overflow:auto;padding:0 20px;width:100%}.kv-tenant-diagnostics__page-wrapper .ydb-table-with-controls-layout__controls{height:46px;padding-top:0}.kv-tenant-diagnostics__page-wrapper .ydb-table-with-controls-layout .data-table__sticky_moving{top:46px!important}.yc-switch{position:relative}.yc-switch__control{cursor:pointer;opacity:0}.yc-switch__indicator{display:inline-block;position:relative}.yc-switch__indicator:before{background-color:var(--g-color-base-generic-medium);bottom:0;content:"";left:0;position:absolute;right:0;top:0;transition:background .1s linear}.yc-switch__indicator:after{content:" ";visibility:hidden}.yc-switch__slider{background-color:var(--g-color-base-background);border-radius:50%;content:"";position:absolute;transition:-webkit-transform .15s ease-out;transition:transform .15s ease-out;transition:transform .15s ease-out,-webkit-transform .15s ease-out}.yc-switch__outline{background:none;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.yc-switch__control:focus+.yc-switch__outline{box-shadow:0 0 0 2px var(--g-color-line-focus)}.yc-switch__control:focus:not(:focus-visible)+.yc-switch__outline{box-shadow:none}.yc-switch_size_m .yc-switch__indicator,.yc-switch_size_m .yc-switch__indicator:before,.yc-switch_size_m .yc-switch__outline{border-radius:10px;height:20px;width:36px}.yc-switch_size_m .yc-switch__slider{height:16px;left:2px;top:2px;width:16px}.yc-switch_size_m .yc-switch__text{margin-top:3px}.yc-switch_size_l .yc-switch__indicator,.yc-switch_size_l .yc-switch__indicator:before,.yc-switch_size_l .yc-switch__outline{border-radius:12px;height:24px;width:42px}.yc-switch_size_l .yc-switch__slider{height:18px;left:3px;top:3px;width:18px}.yc-switch_size_l .yc-switch__text{margin-top:4px}.yc-switch:hover .yc-switch__indicator:before{background-color:var(--g-color-base-generic-medium-hover)}.yc-switch_checked .yc-switch__slider{-webkit-transform:translateX(100%);transform:translateX(100%)}.yc-switch_checked .yc-switch__indicator:before,.yc-switch_checked:hover .yc-switch__indicator:before{background-color:var(--g-color-base-brand)}.yc-switch_disabled .yc-switch__indicator:before{background-color:var(--g-color-base-generic-accent-disabled)}.yc-switch_disabled.yc-switch_checked .yc-switch__indicator:before{background-color:var(--g-color-base-brand);opacity:.5}.object-general{display:flex;flex-direction:column;flex-grow:1;height:100%;max-height:100%;width:100%}.object-general__loader{display:flex}.tenant-page{flex:1 1 auto;flex-direction:column;overflow:hidden}.kv-node-structure,.tenant-page{display:flex;font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.kv-node-structure{flex-shrink:0;flex:1 1 auto;flex-direction:column;overflow:auto;position:relative}.kv-node-structure__pdisk{border:1px solid var(--g-color-line-generic);border-radius:5px;display:flex;flex-direction:column;margin-bottom:8px;padding:0 10px 0 20px;width:573px}.kv-node-structure__pdisk-id{align-items:flex-end;display:flex}.kv-node-structure__pdisk-header{align-items:center;display:flex;height:48px;justify-content:space-between}.kv-node-structure__pdisk-title-wrapper{align-items:center;display:flex;font-weight:600;gap:16px}.kv-node-structure__pdisk-title-wrapper .entity-status__status-icon{margin-right:0}.kv-node-structure__pdisk-title-item{display:flex;gap:4px}.kv-node-structure__pdisk-title-item-label{color:var(--g-color-text-secondary);font-weight:400}.kv-node-structure__pdisk-title-id{min-width:110px}.kv-node-structure__pdisk-title-type{justify-content:flex-end;min-width:50px}.kv-node-structure__pdisk-title-size{min-width:150px}.kv-node-structure__pdisk-details{margin-bottom:20px}.kv-node-structure__link{color:var(--g-color-base-brand);text-decoration:none}.kv-node-structure__vdisks-header{font-weight:600}.kv-node-structure__vdisks-container{margin-bottom:42px}.kv-node-structure__vdisk-details{max-height:90vh;max-width:none;min-width:200px;overflow:auto}.kv-node-structure__vdisk-details .vdisk-pdisk-node__column{margin-bottom:0}.kv-node-structure__vdisk-details .vdisk-pdisk-node__section{padding-bottom:0}.kv-node-structure__vdisk-id{align-items:center;display:flex}.kv-node-structure__vdisk-details-button_selected,.kv-node-structure__vdisk-id_selected{color:var(--g-color-text-info)}.kv-node-structure__external-button{align-items:center;display:inline-flex;margin-left:4px;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.kv-node-structure__external-button_hidden{visibility:hidden}.kv-node-structure .data-table__row:hover .kv-node-structure__external-button_hidden{visibility:visible}.kv-node-structure__selected-vdisk{-webkit-animation:onSelectedVdiskAnimation 4s;animation:onSelectedVdiskAnimation 4s}.kv-node-structure__row{display:flex}.kv-node-structure__column{display:flex;flex-direction:column;margin-bottom:15px}.kv-node-structure__title{font-size:var(--g-text-body-2-font-size);font-weight:500;line-height:var(--g-text-body-2-line-height);margin-right:16px;text-transform:uppercase}@-webkit-keyframes onSelectedVdiskAnimation{0%{background-color:var(--g-color-base-info-light-hover)}}@keyframes onSelectedVdiskAnimation{0%{background-color:var(--g-color-base-info-light-hover)}}.basic-node-viewer__link,.link{color:var(--g-color-text-link);text-decoration:none}.basic-node-viewer__link:hover,.link:hover{color:var(--g-color-text-link-hover)}.basic-node-viewer{align-items:center;display:flex;font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);margin:15px 0}.basic-node-viewer__title{font-weight:600;margin:0 20px 0 0;text-transform:uppercase}.basic-node-viewer__id{margin:0 15px 0 24px}.basic-node-viewer__label{color:var(--g-color-text-hint);line-height:18px;margin-right:10px;white-space:nowrap}.basic-node-viewer__link{margin-left:5px}.ydb-pool-usage{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.ydb-pool-usage__info{align-items:center;display:flex;justify-content:space-between}.ydb-pool-usage__pool-name{color:var(--g-color-text-primary)}.ydb-pool-usage__value{align-items:center;display:flex}.ydb-pool-usage__threads{color:var(--g-color-text-hint);font-size:var(--g-text-body-1-font-size)}.ydb-pool-usage__percents{color:var(--g-color-text-primary);font-size:var(--g-text-body-1-font-size);margin-right:2px}.ydb-pool-usage__visual{align-items:center;background-color:var(--g-color-base-generic-accent);border-radius:4px;display:flex;font-size:var(--g-text-body-2-font-size);height:6px;justify-content:center;overflow:hidden;position:relative}.ydb-pool-usage__usage-line{height:100%;left:0;position:absolute;top:0}.ydb-pool-usage__usage-line_type_green{background-color:var(--ydb-color-status-green)}.ydb-pool-usage__usage-line_type_blue{background-color:var(--ydb-color-status-blue)}.ydb-pool-usage__usage-line_type_yellow{background-color:var(--ydb-color-status-yellow)}.ydb-pool-usage__usage-line_type_red{background-color:var(--ydb-color-status-red)}.full-node-viewer{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.full-node-viewer__common-info{align-items:stretch;display:flex;flex-direction:column;justify-content:flex-start}.full-node-viewer__section{border-radius:10px}.full-node-viewer__section_pools{grid-gap:7px 20px;display:grid;grid-template-columns:110px 110px}.full-node-viewer .info-viewer__label{min-width:100px}.full-node-viewer__section-title{font-weight:600;margin:15px 0 10px}.node{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto}.node__header{margin:16px 20px}.node__content{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto;position:relative}.node__storage{height:100%;overflow:auto;padding:0 20px}.node__tabs{padding:0 20px}.node__tab{margin-right:40px;text-decoration:none}.node__tab:last-child{margin-right:0}.node__tab:first-letter{text-transform:uppercase}.node__overview-wrapper{padding:0 20px 20px}.node__node-page-wrapper{height:100%;padding:20px}.ydb-critical-dialog{width:252px!important}.ydb-critical-dialog__warning-icon{margin-right:16px}.ydb-critical-dialog__body{align-items:center;display:flex;padding:16px 16px 0}.ydb-critical-dialog .yc-dialog-footer{padding:20px 4px 4px}.ydb-critical-dialog .yc-dialog-footer__children{display:none}.ydb-critical-dialog .yc-dialog-footer__button{box-sizing:border-box;margin:0;min-width:120px}.ydb-critical-dialog .yc-dialog-footer__button_action_cancel{margin-right:4px}.link,.tablet-page__link{color:var(--g-color-text-link);text-decoration:none}.link:hover,.tablet-page__link:hover{color:var(--g-color-text-link-hover)}.tablet-page{display:flex;flex-direction:column;padding:20px}.tablet-page__tenant{margin-bottom:20px}.tablet-page__pane-wrapper{display:flex}.tablet-page__left-pane{margin-right:70px}.tablet-page__history-title{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);margin-bottom:15px}.tablet-page__placeholder{flex:1 1 auto;justify-content:center}.tablet-page__placeholder,.tablet-page__row{align-items:center;display:flex}.tablet-page__row_header{margin-bottom:20px}.tablet-page__row_header .tablet-page__link{margin:0 10px 0 5px}.tablet-page__title{font-size:var(--g-text-body-2-font-size);font-weight:500;line-height:var(--g-text-body-2-line-height);margin-right:16px;text-transform:uppercase}.tablet-page__loader{width:25px}.tablet-page .info-viewer__items{grid-template-columns:auto}.tablet-page__controls{margin:20px 0 15px}.tablet-page__control{margin-right:15px}.tablet-page__links{display:flex;list-style-type:none;margin:5px 0 10px;padding:0}.tablet-page__links>*{margin:0 10px 0 0}.tablet-page__top-label{font-size:var(--g-text-body-2-font-size);font-weight:500;line-height:var(--g-text-body-2-line-height);margin-right:16px;text-transform:uppercase}.tablet-page__host{width:300px}.tablets-filters{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto}.tablets-filters__node{font-size:var(--g-text-body-1-font-size);line-height:var(--g-text-body-1-line-height);overflow:hidden}.tablets-filters__node-meta{color:var(--g-color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tablets-filters__items{flex:1 1 auto;overflow:auto;padding:5px 20px}.tablets-filters__filters{align-items:center;display:flex;margin:10px 0;padding:0 20px}.tablets-filters__filter-label{margin-right:15px;white-space:nowrap}.tablets-filters__filter-wrapper{align-items:center;display:flex;margin-right:15px}.tablets-filters__filter-control{margin-right:10px;max-width:200px;min-width:100px}.tablets-filters__filter-control:last-child{margin-right:0}.tablets-filters__tablet{margin-bottom:2px}.tablets-filters__empty-message{display:flex;justify-content:center}.tablets-filters__tenant{padding:20px 20px 10px}.tablets-filters .tablet{display:inline-block;line-height:18px;text-align:center}.popup2{-webkit-animation:none!important;animation:none!important;max-width:300px}.histogram-tooltip,.node-tootltip,.tabletsOverall-tooltip{padding:10px}.histogram-tooltip__label,.node-tootltip__label,.tabletsOverall-tooltip__label{color:var(--g-color-text-secondary);padding-right:15px}.json-tooltip{padding:20px 20px 20px 0}.json-tooltip__inspector{font-family:var(--g-font-family-monospace)!important;font-size:var(--g-text-code-1-font-size)!important;line-height:var(--g-text-code-1-line-height)!important}.json-tooltip__inspector .json-inspector__leaf_composite:before{color:var(--g-color-text-secondary);font-size:9px;left:20px;position:absolute}.json-tooltip__inspector .json-inspector__leaf_composite.json-inspector__leaf_root:before{left:0}.json-tooltip__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:"[+]"}.json-tooltip__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before{content:"[-]"}.json-tooltip__inspector .json-inspector__key{color:var(--g-color-text-misc)}.json-tooltip__inspector .json-inspector__leaf{padding-left:20px;position:relative}.json-tooltip__inspector .json-inspector__leaf_root{padding-left:0}.json-tooltip__inspector .json-inspector__line{padding-left:20px}.json-tooltip__inspector .json-inspector__toolbar{border:1px solid var(--g-color-line-generic);border-radius:4px;margin-bottom:10px;width:300px}.json-tooltip__inspector .json-inspector__search{background:none;border:0 solid transparent;border-width:0 22px 0 8px;box-sizing:border-box;color:var(--g-color-text-primary);font-family:var(--g-text-body-font-family);font-size:13px;height:28px;margin:0;outline:0;padding:0;vertical-align:top;width:300px}.json-tooltip__inspector .json-inspector__value_helper{color:var(--g-color-text-secondary)}.json-tooltip__inspector .json-inspector__line:hover:after{background:var(--g-color-base-simple-hover)}.json-tooltip__inspector .json-inspector__show-original:before{color:var(--g-color-text-secondary)}.json-tooltip__inspector .json-inspector__show-original:hover:after,.json-tooltip__inspector .json-inspector__show-original:hover:before{color:var(--g-color-text-primary)}.json-tooltip__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before,.json-tooltip__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:""}.json-tooltip__inspector .json-inspector__line:hover:after{background:transparent}.json-tooltip__inspector .json-inspector__show-original:hover:after,.json-tooltip__inspector .json-inspector__show-original:hover:before{color:transparent}.json-tooltip__inspector .json-inspector__value_helper{display:none}.cell-tooltip{padding:10px;word-break:break-word}.header{border-bottom:1px solid var(--g-color-line-generic);flex:0 0 40px;justify-content:space-between;padding:0 20px 0 12px}.header,.header__breadcrumb{align-items:center;display:flex}.header__breadcrumb__icon{display:flex;margin-right:3px}.yc-breadcrumbs__inner{align-items:center;display:inline-flex;min-height:24px;overflow:hidden;width:100%}.yc-breadcrumbs__item{display:inline-block;flex-shrink:1;overflow:hidden;padding:4px 8px;text-overflow:ellipsis;white-space:nowrap}.yc-breadcrumbs__item:focus{border-radius:calc(var(--g-focus-border-radius) + 4px);outline:2px solid var(--g-color-line-focus);outline-offset:-4px}.yc-breadcrumbs__item:focus:not(:focus-visible){outline:0}.yc-breadcrumbs__item_current{padding:0 8px}.yc-breadcrumbs__item_more{vertical-align:top}.yc-breadcrumbs_calculated_no .yc-breadcrumbs__item{overflow:visible}.yc-breadcrumbs__divider{align-items:center;color:var(--g-color-text-secondary);display:flex}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item .yc-menu__item{padding-left:80px!important}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item:nth-child(0) .yc-menu__item{padding-left:0!important}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item:first-child .yc-menu__item{padding-left:8px!important}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item:nth-child(2) .yc-menu__item{padding-left:16px!important}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item:nth-child(3) .yc-menu__item{padding-left:24px!important}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item:nth-child(4) .yc-menu__item{padding-left:32px!important}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item:nth-child(5) .yc-menu__item{padding-left:40px!important}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item:nth-child(6) .yc-menu__item{padding-left:48px!important}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item:nth-child(7) .yc-menu__item{padding-left:56px!important}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item:nth-child(8) .yc-menu__item{padding-left:64px!important}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item:nth-child(9) .yc-menu__item{padding-left:72px!important}.yc-breadcrumbs__popup_staircase .yc-menu .yc-menu__list-item:nth-child(10) .yc-menu__item{padding-left:80px!important}*{box-sizing:border-box}.yc-select-popup__tick-icon{box-sizing:initial}#root,body,html{box-sizing:border-box;height:100%;margin:0;overflow:auto;padding:0}:root{--g-color-base-yellow-light:rgba(255,199,0,.15);--g-color-base-yellow-medium:rgba(255,219,77,.4);--data-table-row-height:40px}.g-root{--ydb-data-table-color-hover:var(--g-color-base-float-hover);--ydb-color-status-grey:var(--g-color-base-neutral-heavy);--ydb-color-status-green:var(--g-color-base-positive-heavy);--ydb-color-status-yellow:var(--g-color-base-warning-heavy);--ydb-color-status-orange:#ff922e;--ydb-color-status-red:var(--g-color-base-danger-heavy);--ydb-color-status-blue:var(--g-color-base-info-heavy);--ydb-color-status-black:var(--g-color-base-misc-heavy)}:is(#tab,.yc-tabs-item_active .yc-tabs-item__title){color:var(--g-color-text-primary)!important}:is(#tab,.yc-tabs-item__title){color:var(--g-color-text-secondary)}.gn-aside-header__pane-container{height:100%}.gn-aside-header__content{display:flex;flex-direction:column;height:100%;overflow:auto;position:relative}.loader{align-items:center;display:flex;justify-content:center;left:50%;position:fixed;top:50%;z-index:99999999}.app{height:100%}.app,.app__main{display:flex;flex:1 1 auto;flex-direction:column}.app__main{overflow:auto}.app .data-table{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);width:100%}.app .data-table__table{border-collapse:initial;border-spacing:0;max-width:100%}.app .data-table__th{border-left:initial;border-right:initial;border-top:initial;font-weight:700}.app .data-table__sticky .data-table__th,.app .data-table__td{border-left:initial;border-right:initial;border-top:initial;height:40px;height:var(--data-table-row-height);vertical-align:middle}.error{color:var(--g-color-text-danger)}.data-table__row:focus-within .clipboard-button,.data-table__row:hover .clipboard-button,.ydb-tree-view__item:focus-within .clipboard-button,.ydb-tree-view__item:hover .clipboard-button,.ydb-virtual-table__row:focus-within .clipboard-button,.ydb-virtual-table__row:hover .clipboard-button{visibility:visible}.g-root .data-table_highlight-rows .data-table__row:hover{background:var(--ydb-data-table-color-hover)}.yc-table-column-setup__item{cursor:pointer!important;padding:0 8px 0 32px!important}.app_embedded{font-family:Rubik,sans-serif}.yc-popup{max-width:500px}.authentication{align-items:center;background-blend-mode:normal;background-color:rgba(184,212,253,.1);background-image:radial-gradient(at 0 100%,rgba(0,102,255,.15) 20%,hsla(0,0%,97%,0) 40%),radial-gradient(at 55% 0,rgba(0,102,255,.15) 20%,hsla(0,0%,97%,0) 40%),radial-gradient(at 110% 100%,rgba(0,102,255,.15) 20%,hsla(0,0%,97%,0) 40%);display:flex;height:100%;justify-content:center}.authentication .yc-text-input{display:flex}.authentication__header{align-items:center;display:flex;font-size:var(--g-text-body-1-font-size);justify-content:space-between;line-height:var(--g-text-header-1-line-height);width:100%}.authentication__logo{align-items:center;display:flex;font-size:16px;font-weight:600;gap:8px}.authentication__title{font-size:var(--g-text-header-2-font-size);font-weight:600;line-height:var(--g-text-header-2-line-height);margin:34px 0 16px}.authentication__form-wrapper{align-items:center;background-color:var(--g-color-base-background);border-radius:16px;display:flex;flex-direction:column;flex-shrink:0;justify-content:center;min-width:320px;padding:40px;width:400px}.authentication__field-wrapper{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:16px;width:320px}.authentication__field-wrapper .yc-text-input_state_error{flex-direction:column}.authentication__button-sign-in{display:inline-flex;justify-content:center}.authentication__show-password-button{margin-left:4px}.authentication__close{position:absolute;right:40px;top:40px}.yc-flex{display:flex}.yc-flex_inline{display:inline-flex}.yc-flex_s_0{margin-left:calc(var(--g-spacing-0)*-1)!important;margin-top:calc(var(--g-spacing-0)*-1)!important}.yc-flex_s_0>*{padding-left:var(--g-spacing-0)!important;padding-top:var(--g-spacing-0)!important}.yc-flex_s_half{margin-left:calc(var(--g-spacing-half)*-1)!important;margin-top:calc(var(--g-spacing-half)*-1)!important}.yc-flex_s_half>*{padding-left:var(--g-spacing-half)!important;padding-top:var(--g-spacing-half)!important}.yc-flex_s_1{margin-left:calc(var(--g-spacing-1)*-1)!important;margin-top:calc(var(--g-spacing-1)*-1)!important}.yc-flex_s_1>*{padding-left:var(--g-spacing-1)!important;padding-top:var(--g-spacing-1)!important}.yc-flex_s_2{margin-left:calc(var(--g-spacing-2)*-1)!important;margin-top:calc(var(--g-spacing-2)*-1)!important}.yc-flex_s_2>*{padding-left:var(--g-spacing-2)!important;padding-top:var(--g-spacing-2)!important}.yc-flex_s_3{margin-left:calc(var(--g-spacing-3)*-1)!important;margin-top:calc(var(--g-spacing-3)*-1)!important}.yc-flex_s_3>*{padding-left:var(--g-spacing-3)!important;padding-top:var(--g-spacing-3)!important}.yc-flex_s_4{margin-left:calc(var(--g-spacing-4)*-1)!important;margin-top:calc(var(--g-spacing-4)*-1)!important}.yc-flex_s_4>*{padding-left:var(--g-spacing-4)!important;padding-top:var(--g-spacing-4)!important}.yc-flex_s_5{margin-left:calc(var(--g-spacing-5)*-1)!important;margin-top:calc(var(--g-spacing-5)*-1)!important}.yc-flex_s_5>*{padding-left:var(--g-spacing-5)!important;padding-top:var(--g-spacing-5)!important}.yc-flex_s_6{margin-left:calc(var(--g-spacing-6)*-1)!important;margin-top:calc(var(--g-spacing-6)*-1)!important}.yc-flex_s_6>*{padding-left:var(--g-spacing-6)!important;padding-top:var(--g-spacing-6)!important}.yc-flex_s_7{margin-left:calc(var(--g-spacing-7)*-1)!important;margin-top:calc(var(--g-spacing-7)*-1)!important}.yc-flex_s_7>*{padding-left:var(--g-spacing-7)!important;padding-top:var(--g-spacing-7)!important}.yc-flex_s_8{margin-left:calc(var(--g-spacing-8)*-1)!important;margin-top:calc(var(--g-spacing-8)*-1)!important}.yc-flex_s_8>*{padding-left:var(--g-spacing-8)!important;padding-top:var(--g-spacing-8)!important}.yc-flex_s_9{margin-left:calc(var(--g-spacing-9)*-1)!important;margin-top:calc(var(--g-spacing-9)*-1)!important}.yc-flex_s_9>*{padding-left:var(--g-spacing-9)!important;padding-top:var(--g-spacing-9)!important}.yc-flex_s_10{margin-left:calc(var(--g-spacing-10)*-1)!important;margin-top:calc(var(--g-spacing-10)*-1)!important}.yc-flex_s_10>*{padding-left:var(--g-spacing-10)!important;padding-top:var(--g-spacing-10)!important}.yc-text_variant_display-1{font-size:var(--g-text-display-1-font-size);font-weight:var(--g-text-display-font-weight);line-height:var(--g-text-display-1-line-height)}.yc-text_variant_display-2{font-size:var(--g-text-display-2-font-size);font-weight:var(--g-text-display-font-weight);line-height:var(--g-text-display-2-line-height)}.yc-text_variant_display-3{font-size:var(--g-text-display-3-font-size);font-weight:var(--g-text-display-font-weight);line-height:var(--g-text-display-3-line-height)}.yc-text_variant_display-4{font-size:var(--g-text-display-4-font-size);font-weight:var(--g-text-display-font-weight);line-height:var(--g-text-display-4-line-height)}.yc-text_variant_code-1{font-size:var(--g-text-code-1-font-size);line-height:var(--g-text-code-1-line-height)}.yc-text_variant_code-1,.yc-text_variant_code-2{font-family:var(--g-font-family-monospace);font-weight:var(--g-text-code-font-weight)}.yc-text_variant_code-2{font-size:var(--g-text-code-2-font-size);line-height:var(--g-text-code-2-line-height)}.yc-text_variant_code-3{font-size:var(--g-text-code-3-font-size);line-height:var(--g-text-code-3-line-height)}.yc-text_variant_code-3,.yc-text_variant_code-inline-1{font-family:var(--g-font-family-monospace);font-weight:var(--g-text-code-font-weight)}.yc-text_variant_code-inline-1{font-size:var(--g-text-code-inline-1-font-size);line-height:var(--g-text-code-inline-1-line-height)}.yc-text_variant_code-inline-2{font-size:var(--g-text-code-inline-2-font-size);line-height:var(--g-text-code-inline-2-line-height)}.yc-text_variant_code-inline-2,.yc-text_variant_code-inline-3{font-family:var(--g-font-family-monospace);font-weight:var(--g-text-code-font-weight)}.yc-text_variant_code-inline-3{font-size:var(--g-text-code-inline-3-font-size);line-height:var(--g-text-code-inline-3-line-height)}.yc-text_variant_body-1{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.yc-text_variant_body-2{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.yc-text_variant_body-3{font-size:var(--g-text-body-3-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-3-line-height)}.yc-text_variant_body-short{font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-short-line-height)}.yc-text_variant_caption-1{font-size:var(--g-text-caption-1-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-1-line-height)}.yc-text_variant_caption-2{font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height)}.yc-text_variant_header-1{font-size:var(--g-text-header-1-font-size);font-weight:var(--g-text-header-font-weight);line-height:var(--g-text-header-1-line-height)}.yc-text_variant_header-2{font-size:var(--g-text-header-2-font-size);font-weight:var(--g-text-header-font-weight);line-height:var(--g-text-header-2-line-height)}.yc-text_variant_subheader-1{font-size:var(--g-text-subheader-1-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-1-line-height)}.yc-text_variant_subheader-2{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height)}.yc-text_variant_subheader-3{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.yc-text_ellipsis{overflow:hidden;text-overflow:ellipsis}.yc-text_ellipsis,.yc-text_ws_nowrap{white-space:nowrap}.yc-text_ws_break-spaces{white-space:break-spaces}.yc-text_wb_break-all{word-break:break-all}.yc-color-text_color_primary{color:var(--g-color-text-primary)}.yc-color-text_color_complementary{color:var(--g-color-text-complementary)}.yc-color-text_color_secondary{color:var(--g-color-text-secondary)}.yc-color-text_color_hint{color:var(--g-color-text-hint)}.yc-color-text_color_info{color:var(--g-color-text-info)}.yc-color-text_color_info-heavy{color:var(--g-color-text-info-heavy)}.yc-color-text_color_positive{color:var(--g-color-text-positive)}.yc-color-text_color_positive-heavy{color:var(--g-color-text-positive-heavy)}.yc-color-text_color_warning{color:var(--g-color-text-warning)}.yc-color-text_color_warning-heavy{color:var(--g-color-text-warning-heavy)}.yc-color-text_color_danger{color:var(--g-color-text-danger)}.yc-color-text_color_danger-heavy{color:var(--g-color-text-danger-heavy)}.yc-color-text_color_utility{color:var(--g-color-text-utility)}.yc-color-text_color_utility-heavy{color:var(--g-color-text-utility-heavy)}.yc-color-text_color_misc{color:var(--g-color-text-misc)}.yc-color-text_color_misc-heavy{color:var(--g-color-text-misc-heavy)}.yc-color-text_color_brand{color:var(--g-color-text-brand)}.yc-color-text_color_link{color:var(--g-color-text-link)}.yc-color-text_color_link-hover{color:var(--g-color-text-link-hover)}.yc-color-text_color_link-visited{color:var(--g-color-text-link-visited)}.yc-color-text_color_link-visited-hover{color:var(--g-color-text-link-visited-hover)}.yc-color-text_color_dark-primary{color:var(--g-color-text-dark-primary)}.yc-color-text_color_dark-complementary{color:var(--g-color-text-dark-complementary)}.yc-color-text_color_dark-secondary{color:var(--g-color-text-dark-secondary)}.yc-color-text_color_light-primary{color:var(--g-color-text-light-primary)}.yc-color-text_color_light-complementary{color:var(--g-color-text-light-complementary)}.yc-color-text_color_light-secondary{color:var(--g-color-text-light-secondary)}.yc-color-text_color_light-hint{color:var(--g-color-text-light-hint)}.yc-color-text_color_inverted-primary{color:var(--g-color-text-inverted-primary)}.yc-color-text_color_inverted-complementary{color:var(--g-color-text-inverted-complementary)}.yc-color-text_color_inverted-secondary{color:var(--g-color-text-inverted-secondary)}.yc-color-text_color_inverted-hint{color:var(--g-color-text-inverted-hint)}.ydb-user-settings__item-with-popup{max-width:180px}.ydb-user-settings__popup{max-width:370px}.kv-navigation__internal-user{align-items:center;display:flex;justify-content:space-between;line-height:var(--g-text-body-2-line-height);margin-left:16px}.kv-navigation__user-info-wrapper{display:flex;flex-direction:column}.kv-navigation__ydb-internal-user-title{font-weight:500}.kv-navigation__ydb-user-wrapper{padding:10px;width:300px}.link{color:var(--g-color-text-link);text-decoration:none}.link_external{margin-right:10px}.link:hover{color:var(--g-color-text-link-hover)}.ydb-error-boundary{align-items:flex-start;display:flex;flex-direction:row;font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);padding:20px}.ydb-error-boundary__illustration{height:230px;margin-right:20px;width:230px}.ydb-error-boundary__error-title{font-size:var(--g-text-subheader-3-font-size);line-height:var(--g-text-subheader-3-line-height);margin-top:44px}.ydb-error-boundary__error-description{margin-top:12px}.ydb-error-boundary__show-details{margin-top:8px}.ydb-error-boundary__error-details{background-color:var(--g-color-base-generic-ultralight);border:1px solid var(--g-color-line-generic);padding:13px 18px}.ydb-error-boundary__actions{display:flex;flex-direction:row;gap:10px;margin-top:20px}.g-disclosure_size_m{font-size:var(--g-text-body-1-font-size);line-height:var(--g-text-body-1-line-height)}.g-disclosure_size_l,.g-disclosure_size_m{font-weight:var(--g-text-body-font-weight)}.g-disclosure_size_l{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.g-disclosure_size_xl{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.g-disclosure__trigger{align-items:center;background:none;border:none;border-radius:var(--g-focus-border-radius);color:inherit;cursor:pointer;display:flex;flex-flow:row nowrap;flex-shrink:0;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);font-weight:inherit;gap:8px;line-height:inherit;margin:0;outline:none;padding:0}.g-disclosure__trigger:focus{outline:2px solid var(--g-color-line-focus)}.g-disclosure__trigger:focus:not(:focus-visible){outline:0}.g-disclosure__trigger_arrow-right{flex-direction:row-reverse}.g-disclosure__trigger_disabled{color:var(--g-color-text-secondary);cursor:auto}.g-disclosure__content{display:none}.g-disclosure__content_visible{display:block}.g-disclosure__content.g-disclosure_exit_active{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-name:yc-disclosure-collapsed;animation-name:yc-disclosure-collapsed;display:block;opacity:0}.g-disclosure__content.g-disclosure_enter_active{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-name:yc-disclosure-expanded;animation-name:yc-disclosure-expanded}@-webkit-keyframes yc-disclosure-expanded{0%{opacity:.4}to{opacity:1}}@keyframes yc-disclosure-expanded{0%{opacity:.4}to{opacity:1}}@-webkit-keyframes yc-disclosure-collapsed{0%{opacity:1}to{opacity:0}}@keyframes yc-disclosure-collapsed{0%{opacity:1}to{opacity:0}}.g-root{--g-text-header-font-weight:500;--g-text-subheader-font-weight:500;--g-text-display-font-weight:500;--g-text-accent-font-weight:500}.g-root_theme_light{--g-color-base-background:#fff;--g-color-base-brand:var(--g-color-private-blue-550-solid);--g-color-base-brand-hover:var(--g-color-private-blue-600-solid);--g-color-base-selection:var(--g-color-private-blue-100);--g-color-base-selection-hover:var(--g-color-private-blue-200);--g-color-line-brand:var(--g-color-private-blue-550-solid);--g-color-text-brand:var(--g-color-private-blue-600-solid);--g-color-text-brand-heavy:var(--g-color-private-blue-700-solid);--g-color-text-brand-contrast:var(--g-color-text-light-primary);--g-color-text-link:var(--g-color-private-blue-600-solid);--g-color-text-link-hover:var(--g-color-private-blue-800-solid);--g-color-private-white-50:hsla(0,0%,100%,.05);--g-color-private-white-70:hsla(0,0%,100%,.07);--g-color-private-white-100:hsla(0,0%,100%,.1);--g-color-private-white-150:hsla(0,0%,100%,.15);--g-color-private-white-200:hsla(0,0%,100%,.2);--g-color-private-white-250:hsla(0,0%,100%,.25);--g-color-private-white-300:hsla(0,0%,100%,.3);--g-color-private-white-350:hsla(0,0%,100%,.35);--g-color-private-white-400:hsla(0,0%,100%,.4);--g-color-private-white-450:hsla(0,0%,100%,.45);--g-color-private-white-500:hsla(0,0%,100%,.5);--g-color-private-white-550:hsla(0,0%,100%,.55);--g-color-private-white-600:hsla(0,0%,100%,.6);--g-color-private-white-650:hsla(0,0%,100%,.65);--g-color-private-white-700:hsla(0,0%,100%,.7);--g-color-private-white-750:hsla(0,0%,100%,.75);--g-color-private-white-800:hsla(0,0%,100%,.8);--g-color-private-white-850:hsla(0,0%,100%,.85);--g-color-private-white-900:hsla(0,0%,100%,.9);--g-color-private-white-950:hsla(0,0%,100%,.95);--g-color-private-white-1000-solid:#fff;--g-color-private-black-50:rgba(0,0,0,.05);--g-color-private-black-70:rgba(0,0,0,.07);--g-color-private-black-100:rgba(0,0,0,.1);--g-color-private-black-150:rgba(0,0,0,.15);--g-color-private-black-200:rgba(0,0,0,.2);--g-color-private-black-250:rgba(0,0,0,.25);--g-color-private-black-300:rgba(0,0,0,.3);--g-color-private-black-350:rgba(0,0,0,.35);--g-color-private-black-400:rgba(0,0,0,.4);--g-color-private-black-450:rgba(0,0,0,.45);--g-color-private-black-500:rgba(0,0,0,.5);--g-color-private-black-550:rgba(0,0,0,.55);--g-color-private-black-600:rgba(0,0,0,.6);--g-color-private-black-650:rgba(0,0,0,.65);--g-color-private-black-700:rgba(0,0,0,.7);--g-color-private-black-750:rgba(0,0,0,.75);--g-color-private-black-800:rgba(0,0,0,.8);--g-color-private-black-850:rgba(0,0,0,.85);--g-color-private-black-900:rgba(0,0,0,.9);--g-color-private-black-950:rgba(0,0,0,.95);--g-color-private-black-20-solid:#fafafa;--g-color-private-black-50-solid:#f2f2f2;--g-color-private-black-100-solid:#e5e5e5;--g-color-private-black-150-solid:#d9d9d9;--g-color-private-black-200-solid:#ccc;--g-color-private-black-250-solid:#bfbfbf;--g-color-private-black-300-solid:#b3b3b3;--g-color-private-black-350-solid:#a6a6a6;--g-color-private-black-400-solid:#999;--g-color-private-black-450-solid:#8c8c8c;--g-color-private-black-500-solid:grey;--g-color-private-black-550-solid:#737373;--g-color-private-black-600-solid:#666;--g-color-private-black-650-solid:#595959;--g-color-private-black-700-solid:#4c4c4c;--g-color-private-black-750-solid:#404040;--g-color-private-black-800-solid:#333;--g-color-private-black-850-solid:#262626;--g-color-private-black-900-solid:#1a1a1a;--g-color-private-black-950-solid:#0d0d0d;--g-color-private-black-1000-solid:#000;--g-color-private-blue-50:rgba(82,130,255,.1);--g-color-private-blue-100:rgba(82,130,255,.15);--g-color-private-blue-150:rgba(82,130,255,.2);--g-color-private-blue-200:rgba(82,130,255,.3);--g-color-private-blue-250:rgba(82,130,255,.4);--g-color-private-blue-300:rgba(82,130,255,.5);--g-color-private-blue-350:rgba(82,130,255,.6);--g-color-private-blue-400:rgba(82,130,255,.7);--g-color-private-blue-450:rgba(82,130,255,.8);--g-color-private-blue-500:rgba(82,130,255,.9);--g-color-private-blue-50-solid:#eef3ff;--g-color-private-blue-100-solid:#e5ecff;--g-color-private-blue-150-solid:#dce6ff;--g-color-private-blue-200-solid:#cbdaff;--g-color-private-blue-250-solid:#bacdff;--g-color-private-blue-300-solid:#a8c1ff;--g-color-private-blue-350-solid:#97b4ff;--g-color-private-blue-400-solid:#86a8ff;--g-color-private-blue-450-solid:#749bff;--g-color-private-blue-500-solid:#638fff;--g-color-private-blue-550-solid:#5282ff;--g-color-private-blue-600-solid:#4e79eb;--g-color-private-blue-650-solid:#4a71d6;--g-color-private-blue-700-solid:#4768c2;--g-color-private-blue-750-solid:#4360ad;--g-color-private-blue-800-solid:#3f5799;--g-color-private-blue-850-solid:#3c4f85;--g-color-private-blue-900-solid:#384670;--g-color-private-blue-950-solid:#343d5c;--g-color-private-blue-1000-solid:#333952;--g-color-private-green-50:rgba(59,201,53,.1);--g-color-private-green-100:rgba(59,201,53,.15);--g-color-private-green-150:rgba(59,201,53,.2);--g-color-private-green-200:rgba(59,201,53,.3);--g-color-private-green-250:rgba(59,201,53,.4);--g-color-private-green-300:rgba(59,201,53,.5);--g-color-private-green-350:rgba(59,201,53,.6);--g-color-private-green-400:rgba(59,201,53,.7);--g-color-private-green-450:rgba(59,201,53,.8);--g-color-private-green-500:rgba(59,201,53,.9);--g-color-private-green-50-solid:#ebfaeb;--g-color-private-green-100-solid:#e2f7e1;--g-color-private-green-150-solid:#d8f4d7;--g-color-private-green-200-solid:#c4efc2;--g-color-private-green-250-solid:#b1e9ae;--g-color-private-green-300-solid:#9de49a;--g-color-private-green-350-solid:#89df86;--g-color-private-green-400-solid:#76d972;--g-color-private-green-450-solid:#62d45d;--g-color-private-green-500-solid:#4fce49;--g-color-private-green-550-solid:#3bc935;--g-color-private-green-600-solid:#3ab935;--g-color-private-green-650-solid:#38aa35;--g-color-private-green-700-solid:#379a34;--g-color-private-green-750-solid:#358a34;--g-color-private-green-800-solid:#347b34;--g-color-private-green-850-solid:#336b34;--g-color-private-green-900-solid:#315b34;--g-color-private-green-950-solid:#304b33;--g-color-private-green-1000-solid:#2f4433;--g-color-private-yellow-50:rgba(255,219,77,.1);--g-color-private-yellow-100:rgba(255,219,77,.15);--g-color-private-yellow-150:rgba(255,219,77,.2);--g-color-private-yellow-200:rgba(255,219,77,.3);--g-color-private-yellow-250:rgba(255,219,77,.4);--g-color-private-yellow-300:rgba(255,219,77,.5);--g-color-private-yellow-350:rgba(255,219,77,.6);--g-color-private-yellow-400:rgba(255,219,77,.7);--g-color-private-yellow-450:rgba(255,219,77,.8);--g-color-private-yellow-500:rgba(255,219,77,.9);--g-color-private-yellow-50-solid:#fffbed;--g-color-private-yellow-100-solid:#fffae4;--g-color-private-yellow-150-solid:#fff8db;--g-color-private-yellow-200-solid:#fff4ca;--g-color-private-yellow-250-solid:#fff1b8;--g-color-private-yellow-300-solid:#ffeda6;--g-color-private-yellow-350-solid:#ffe994;--g-color-private-yellow-400-solid:#ffe682;--g-color-private-yellow-450-solid:#ffe271;--g-color-private-yellow-500-solid:#ffdf5f;--g-color-private-yellow-550-solid:#ffdb4d;--g-color-private-yellow-600-solid:#eac94a;--g-color-private-yellow-650-solid:#d5b848;--g-color-private-yellow-700-solid:#c0a645;--g-color-private-yellow-750-solid:#ab9543;--g-color-private-yellow-800-solid:#968340;--g-color-private-yellow-850-solid:#81723d;--g-color-private-yellow-900-solid:#6c603b;--g-color-private-yellow-950-solid:#574f38;--g-color-private-yellow-1000-solid:#4d4637;--g-color-private-orange-50:rgba(255,119,0,.1);--g-color-private-orange-100:rgba(255,119,0,.15);--g-color-private-orange-150:rgba(255,119,0,.2);--g-color-private-orange-200:rgba(255,119,0,.3);--g-color-private-orange-250:rgba(255,119,0,.4);--g-color-private-orange-300:rgba(255,119,0,.5);--g-color-private-orange-350:rgba(255,119,0,.6);--g-color-private-orange-400:rgba(255,119,0,.7);--g-color-private-orange-450:rgba(255,119,0,.8);--g-color-private-orange-500:rgba(255,119,0,.9);--g-color-private-orange-50-solid:#fff1e6;--g-color-private-orange-100-solid:#ffebd9;--g-color-private-orange-150-solid:#ffe4cc;--g-color-private-orange-200-solid:#ffd6b3;--g-color-private-orange-250-solid:#ffc999;--g-color-private-orange-300-solid:#ffbb80;--g-color-private-orange-350-solid:#ffad66;--g-color-private-orange-400-solid:#ffa04c;--g-color-private-orange-450-solid:#ff9233;--g-color-private-orange-500-solid:#ff851a;--g-color-private-orange-550-solid:#f70;--g-color-private-orange-600-solid:#ea7005;--g-color-private-orange-650-solid:#d5680a;--g-color-private-orange-700-solid:#c0600f;--g-color-private-orange-750-solid:#ab5914;--g-color-private-orange-800-solid:#965119;--g-color-private-orange-850-solid:#814a1f;--g-color-private-orange-900-solid:#6c4324;--g-color-private-orange-950-solid:#573b29;--g-color-private-orange-1000-solid:#4d372b;--g-color-private-red-50:rgba(255,4,0,.1);--g-color-private-red-100:rgba(255,4,0,.15);--g-color-private-red-150:rgba(255,4,0,.2);--g-color-private-red-200:rgba(255,4,0,.3);--g-color-private-red-250:rgba(255,4,0,.4);--g-color-private-red-300:rgba(255,4,0,.5);--g-color-private-red-350:rgba(255,4,0,.6);--g-color-private-red-400:rgba(255,4,0,.7);--g-color-private-red-450:rgba(255,4,0,.8);--g-color-private-red-500:rgba(255,4,0,.9);--g-color-private-red-50-solid:#ffe6e6;--g-color-private-red-100-solid:#ffd9d9;--g-color-private-red-150-solid:#ffcdcc;--g-color-private-red-200-solid:#ffb4b3;--g-color-private-red-250-solid:#ff9b99;--g-color-private-red-300-solid:#ff8280;--g-color-private-red-350-solid:#ff6966;--g-color-private-red-400-solid:#ff504c;--g-color-private-red-450-solid:#ff3733;--g-color-private-red-500-solid:#ff1e1a;--g-color-private-red-550-solid:#ff0400;--g-color-private-red-600-solid:#ea0805;--g-color-private-red-650-solid:#d50c0a;--g-color-private-red-700-solid:#c0100f;--g-color-private-red-750-solid:#ab1414;--g-color-private-red-800-solid:#961819;--g-color-private-red-850-solid:#811c1f;--g-color-private-red-900-solid:#6c2024;--g-color-private-red-950-solid:#572429;--g-color-private-red-1000-solid:#4d262b;--g-color-private-purple-50:rgba(143,82,204,.1);--g-color-private-purple-100:rgba(143,82,204,.15);--g-color-private-purple-150:rgba(143,82,204,.2);--g-color-private-purple-200:rgba(143,82,204,.3);--g-color-private-purple-250:rgba(143,82,204,.4);--g-color-private-purple-300:rgba(143,82,204,.5);--g-color-private-purple-350:rgba(143,82,204,.6);--g-color-private-purple-400:rgba(143,82,204,.7);--g-color-private-purple-450:rgba(143,82,204,.8);--g-color-private-purple-500:rgba(143,82,204,.9);--g-color-private-purple-50-solid:#f4eefa;--g-color-private-purple-100-solid:#eee5f7;--g-color-private-purple-150-solid:#e9dcf5;--g-color-private-purple-200-solid:#ddcbf0;--g-color-private-purple-250-solid:#d2baeb;--g-color-private-purple-300-solid:#c7a9e6;--g-color-private-purple-350-solid:#bc97e0;--g-color-private-purple-400-solid:#b186db;--g-color-private-purple-450-solid:#a575d6;--g-color-private-purple-500-solid:#9a63d1;--g-color-private-purple-550-solid:#8f52cc;--g-color-private-purple-600-solid:#854ebd;--g-color-private-purple-650-solid:#7b4aad;--g-color-private-purple-700-solid:#72479e;--g-color-private-purple-750-solid:#68438f;--g-color-private-purple-800-solid:#5e3f80;--g-color-private-purple-850-solid:#543b70;--g-color-private-purple-900-solid:#4a3761;--g-color-private-purple-950-solid:#413452;--g-color-private-purple-1000-solid:#3c324a;--g-color-private-cool-grey-50:rgba(107,132,153,.1);--g-color-private-cool-grey-100:rgba(107,132,153,.15);--g-color-private-cool-grey-150:rgba(107,132,153,.2);--g-color-private-cool-grey-200:rgba(107,132,153,.3);--g-color-private-cool-grey-250:rgba(107,132,153,.4);--g-color-private-cool-grey-300:rgba(107,132,153,.5);--g-color-private-cool-grey-350:rgba(107,132,153,.6);--g-color-private-cool-grey-400:rgba(107,132,153,.7);--g-color-private-cool-grey-450:rgba(107,132,153,.8);--g-color-private-cool-grey-500:rgba(107,132,153,.9);--g-color-private-cool-grey-50-solid:#f0f3f5;--g-color-private-cool-grey-100-solid:#e9edf0;--g-color-private-cool-grey-150-solid:#e1e6eb;--g-color-private-cool-grey-200-solid:#d3dae0;--g-color-private-cool-grey-250-solid:#c4ced6;--g-color-private-cool-grey-300-solid:#b5c1cc;--g-color-private-cool-grey-350-solid:#a6b5c2;--g-color-private-cool-grey-400-solid:#97a9b8;--g-color-private-cool-grey-450-solid:#899dad;--g-color-private-cool-grey-500-solid:#7a90a3;--g-color-private-cool-grey-550-solid:#6b8499;--g-color-private-cool-grey-600-solid:#657b8f;--g-color-private-cool-grey-650-solid:#5f7285;--g-color-private-cool-grey-700-solid:#586a7a;--g-color-private-cool-grey-750-solid:#526170;--g-color-private-cool-grey-800-solid:#4c5866;--g-color-private-cool-grey-850-solid:#464f5c;--g-color-private-cool-grey-900-solid:#404652;--g-color-private-cool-grey-950-solid:#393e47;--g-color-private-cool-grey-1000-solid:#363942}.g-root_theme_light-hc{--g-color-base-background:#fff;--g-color-base-brand:var(--g-color-private-blue-600-solid);--g-color-base-brand-hover:var(--g-color-private-blue-800-solid);--g-color-base-selection:var(--g-color-private-blue-250);--g-color-base-selection-hover:var(--g-color-private-blue-350);--g-color-line-brand:var(--g-color-private-blue-600-solid);--g-color-text-brand:var(--g-color-private-blue-650-solid);--g-color-text-brand-heavy:var(--g-color-private-blue-900-solid);--g-color-text-brand-contrast:var(--g-color-text-light-primary);--g-color-text-link:var(--g-color-private-blue-650-solid);--g-color-text-link-hover:var(--g-color-private-blue-850-solid);--g-color-private-white-50:hsla(0,0%,100%,.05);--g-color-private-white-70:hsla(0,0%,100%,.07);--g-color-private-white-100:hsla(0,0%,100%,.1);--g-color-private-white-150:hsla(0,0%,100%,.15);--g-color-private-white-200:hsla(0,0%,100%,.2);--g-color-private-white-250:hsla(0,0%,100%,.25);--g-color-private-white-300:hsla(0,0%,100%,.3);--g-color-private-white-350:hsla(0,0%,100%,.35);--g-color-private-white-400:hsla(0,0%,100%,.4);--g-color-private-white-450:hsla(0,0%,100%,.45);--g-color-private-white-500:hsla(0,0%,100%,.5);--g-color-private-white-550:hsla(0,0%,100%,.55);--g-color-private-white-600:hsla(0,0%,100%,.6);--g-color-private-white-650:hsla(0,0%,100%,.65);--g-color-private-white-700:hsla(0,0%,100%,.7);--g-color-private-white-750:hsla(0,0%,100%,.75);--g-color-private-white-800:hsla(0,0%,100%,.8);--g-color-private-white-850:hsla(0,0%,100%,.85);--g-color-private-white-900:hsla(0,0%,100%,.9);--g-color-private-white-950:hsla(0,0%,100%,.95);--g-color-private-white-1000-solid:#fff;--g-color-private-black-50:rgba(0,0,0,.05);--g-color-private-black-100:rgba(0,0,0,.1);--g-color-private-black-150:rgba(0,0,0,.15);--g-color-private-black-200:rgba(0,0,0,.2);--g-color-private-black-250:rgba(0,0,0,.25);--g-color-private-black-300:rgba(0,0,0,.3);--g-color-private-black-350:rgba(0,0,0,.35);--g-color-private-black-400:rgba(0,0,0,.4);--g-color-private-black-450:rgba(0,0,0,.45);--g-color-private-black-500:rgba(0,0,0,.5);--g-color-private-black-550:rgba(0,0,0,.55);--g-color-private-black-600:rgba(0,0,0,.6);--g-color-private-black-650:rgba(0,0,0,.65);--g-color-private-black-700:rgba(0,0,0,.7);--g-color-private-black-750:rgba(0,0,0,.75);--g-color-private-black-800:rgba(0,0,0,.8);--g-color-private-black-850:rgba(0,0,0,.85);--g-color-private-black-900:rgba(0,0,0,.9);--g-color-private-black-950:rgba(0,0,0,.95);--g-color-private-black-50-solid:#f2f2f2;--g-color-private-black-100-solid:#e5e5e5;--g-color-private-black-150-solid:#d9d9d9;--g-color-private-black-200-solid:#ccc;--g-color-private-black-250-solid:#bfbfbf;--g-color-private-black-300-solid:#b3b3b3;--g-color-private-black-350-solid:#a6a6a6;--g-color-private-black-400-solid:#999;--g-color-private-black-450-solid:#8c8c8c;--g-color-private-black-500-solid:grey;--g-color-private-black-550-solid:#737373;--g-color-private-black-600-solid:#666;--g-color-private-black-650-solid:#595959;--g-color-private-black-700-solid:#4c4c4c;--g-color-private-black-750-solid:#404040;--g-color-private-black-800-solid:#333;--g-color-private-black-850-solid:#262626;--g-color-private-black-900-solid:#1a1a1a;--g-color-private-black-950-solid:#0d0d0d;--g-color-private-black-1000-solid:#000;--g-color-private-blue-50:rgba(82,130,255,.1);--g-color-private-blue-100:rgba(82,130,255,.15);--g-color-private-blue-150:rgba(82,130,255,.2);--g-color-private-blue-200:rgba(82,130,255,.3);--g-color-private-blue-250:rgba(82,130,255,.4);--g-color-private-blue-300:rgba(82,130,255,.5);--g-color-private-blue-350:rgba(82,130,255,.6);--g-color-private-blue-400:rgba(82,130,255,.7);--g-color-private-blue-450:rgba(82,130,255,.8);--g-color-private-blue-500:rgba(82,130,255,.9);--g-color-private-blue-50-solid:#eef3ff;--g-color-private-blue-100-solid:#e5ecff;--g-color-private-blue-150-solid:#dce6ff;--g-color-private-blue-200-solid:#cbdaff;--g-color-private-blue-250-solid:#bacdff;--g-color-private-blue-300-solid:#a8c1ff;--g-color-private-blue-350-solid:#97b4ff;--g-color-private-blue-400-solid:#86a8ff;--g-color-private-blue-450-solid:#749bff;--g-color-private-blue-500-solid:#638fff;--g-color-private-blue-550-solid:#5282ff;--g-color-private-blue-600-solid:#4d79e9;--g-color-private-blue-650-solid:#486fd4;--g-color-private-blue-700-solid:#4366be;--g-color-private-blue-750-solid:#3f5ca8;--g-color-private-blue-800-solid:#3a5393;--g-color-private-blue-850-solid:#35497d;--g-color-private-blue-900-solid:#304067;--g-color-private-blue-950-solid:#2c3651;--g-color-private-blue-1000-solid:#293147;--g-color-private-green-50:rgba(59,201,53,.1);--g-color-private-green-100:rgba(59,201,53,.15);--g-color-private-green-150:rgba(59,201,53,.2);--g-color-private-green-200:rgba(59,201,53,.3);--g-color-private-green-250:rgba(59,201,53,.4);--g-color-private-green-300:rgba(59,201,53,.5);--g-color-private-green-350:rgba(59,201,53,.6);--g-color-private-green-400:rgba(59,201,53,.7);--g-color-private-green-450:rgba(59,201,53,.8);--g-color-private-green-500:rgba(59,201,53,.9);--g-color-private-green-50-solid:#ebfaeb;--g-color-private-green-100-solid:#e2f7e1;--g-color-private-green-150-solid:#d8f4d7;--g-color-private-green-200-solid:#c4efc2;--g-color-private-green-250-solid:#b1e9ae;--g-color-private-green-300-solid:#9de49a;--g-color-private-green-350-solid:#89df86;--g-color-private-green-400-solid:#76d972;--g-color-private-green-450-solid:#62d45d;--g-color-private-green-500-solid:#4fce49;--g-color-private-green-550-solid:#3bc935;--g-color-private-green-600-solid:#38b833;--g-color-private-green-650-solid:#36a832;--g-color-private-green-700-solid:#339730;--g-color-private-green-750-solid:#31872f;--g-color-private-green-800-solid:#2f762e;--g-color-private-green-850-solid:#2c652c;--g-color-private-green-900-solid:#29552b;--g-color-private-green-950-solid:#274429;--g-color-private-green-1000-solid:#263c28;--g-color-private-yellow-50:rgba(255,219,77,.1);--g-color-private-yellow-100:rgba(255,219,77,.15);--g-color-private-yellow-150:rgba(255,219,77,.2);--g-color-private-yellow-200:rgba(255,219,77,.3);--g-color-private-yellow-250:rgba(255,219,77,.4);--g-color-private-yellow-300:rgba(255,219,77,.5);--g-color-private-yellow-350:rgba(255,219,77,.6);--g-color-private-yellow-400:rgba(255,219,77,.7);--g-color-private-yellow-450:rgba(255,219,77,.8);--g-color-private-yellow-500:rgba(255,219,77,.9);--g-color-private-yellow-50-solid:#fffbed;--g-color-private-yellow-100-solid:#fffae4;--g-color-private-yellow-150-solid:#fff8db;--g-color-private-yellow-200-solid:#fff4ca;--g-color-private-yellow-250-solid:#fff1b8;--g-color-private-yellow-300-solid:#ffeda6;--g-color-private-yellow-350-solid:#ffe994;--g-color-private-yellow-400-solid:#ffe682;--g-color-private-yellow-450-solid:#ffe271;--g-color-private-yellow-500-solid:#ffdf5f;--g-color-private-yellow-550-solid:#ffdb4d;--g-color-private-yellow-600-solid:#e9c949;--g-color-private-yellow-650-solid:#d3b645;--g-color-private-yellow-700-solid:#bda441;--g-color-private-yellow-750-solid:#a7913d;--g-color-private-yellow-800-solid:#907f3a;--g-color-private-yellow-850-solid:#7a6d36;--g-color-private-yellow-900-solid:#645a32;--g-color-private-yellow-950-solid:#4e482e;--g-color-private-yellow-1000-solid:#433f2c;--g-color-private-orange-50:rgba(255,119,0,.1);--g-color-private-orange-100:rgba(255,119,0,.15);--g-color-private-orange-150:rgba(255,119,0,.2);--g-color-private-orange-200:rgba(255,119,0,.3);--g-color-private-orange-250:rgba(255,119,0,.4);--g-color-private-orange-300:rgba(255,119,0,.5);--g-color-private-orange-350:rgba(255,119,0,.6);--g-color-private-orange-400:rgba(255,119,0,.7);--g-color-private-orange-450:rgba(255,119,0,.8);--g-color-private-orange-500:rgba(255,119,0,.9);--g-color-private-orange-50-solid:#fff1e6;--g-color-private-orange-100-solid:#ffebd9;--g-color-private-orange-150-solid:#ffe4cc;--g-color-private-orange-200-solid:#ffd6b3;--g-color-private-orange-250-solid:#ffc999;--g-color-private-orange-300-solid:#ffbb80;--g-color-private-orange-350-solid:#ffad66;--g-color-private-orange-400-solid:#ffa04c;--g-color-private-orange-450-solid:#ff9233;--g-color-private-orange-500-solid:#ff851a;--g-color-private-orange-550-solid:#f70;--g-color-private-orange-600-solid:#e96f04;--g-color-private-orange-650-solid:#d36608;--g-color-private-orange-700-solid:#bd5e0b;--g-color-private-orange-750-solid:#a7550f;--g-color-private-orange-800-solid:#904d13;--g-color-private-orange-850-solid:#7a4517;--g-color-private-orange-900-solid:#643c1b;--g-color-private-orange-950-solid:#4e341e;--g-color-private-orange-1000-solid:#433020;--g-color-private-red-50:rgba(255,4,0,.1);--g-color-private-red-100:rgba(255,4,0,.15);--g-color-private-red-150:rgba(255,4,0,.2);--g-color-private-red-200:rgba(255,4,0,.3);--g-color-private-red-250:rgba(255,4,0,.4);--g-color-private-red-300:rgba(255,4,0,.5);--g-color-private-red-350:rgba(255,4,0,.6);--g-color-private-red-400:rgba(255,4,0,.7);--g-color-private-red-450:rgba(255,4,0,.8);--g-color-private-red-500:rgba(255,4,0,.9);--g-color-private-red-50-solid:#ffe6e6;--g-color-private-red-100-solid:#ffd9d9;--g-color-private-red-150-solid:#ffcdcc;--g-color-private-red-200-solid:#ffb4b3;--g-color-private-red-250-solid:#ff9b99;--g-color-private-red-300-solid:#ff8280;--g-color-private-red-350-solid:#ff6966;--g-color-private-red-400-solid:#ff504c;--g-color-private-red-450-solid:#ff3733;--g-color-private-red-500-solid:#ff1e1a;--g-color-private-red-550-solid:#ff0400;--g-color-private-red-600-solid:#e90804;--g-color-private-red-650-solid:#d30b08;--g-color-private-red-700-solid:#bd0e0b;--g-color-private-red-750-solid:#a6110f;--g-color-private-red-800-solid:#901413;--g-color-private-red-850-solid:#7a1717;--g-color-private-red-900-solid:#641a1b;--g-color-private-red-950-solid:#4e1d1e;--g-color-private-red-1000-solid:#431e20;--g-color-private-purple-50:rgba(143,82,204,.1);--g-color-private-purple-100:rgba(143,82,204,.15);--g-color-private-purple-150:rgba(143,82,204,.2);--g-color-private-purple-200:rgba(143,82,204,.3);--g-color-private-purple-250:rgba(143,82,204,.4);--g-color-private-purple-300:rgba(143,82,204,.5);--g-color-private-purple-350:rgba(143,82,204,.6);--g-color-private-purple-400:rgba(143,82,204,.7);--g-color-private-purple-450:rgba(143,82,204,.8);--g-color-private-purple-500:rgba(143,82,204,.9);--g-color-private-purple-50-solid:#f4eefa;--g-color-private-purple-100-solid:#eee5f7;--g-color-private-purple-150-solid:#e9dcf5;--g-color-private-purple-200-solid:#ddcbf0;--g-color-private-purple-250-solid:#d2baeb;--g-color-private-purple-300-solid:#c7a9e6;--g-color-private-purple-350-solid:#bc97e0;--g-color-private-purple-400-solid:#b186db;--g-color-private-purple-450-solid:#a575d6;--g-color-private-purple-500-solid:#9a63d1;--g-color-private-purple-550-solid:#8f52cc;--g-color-private-purple-600-solid:#844dbb;--g-color-private-purple-650-solid:#7949ab;--g-color-private-purple-700-solid:#6e449a;--g-color-private-purple-750-solid:#633f8a;--g-color-private-purple-800-solid:#593b79;--g-color-private-purple-850-solid:#4e3668;--g-color-private-purple-900-solid:#433158;--g-color-private-purple-950-solid:#382c47;--g-color-private-purple-1000-solid:#322a3f;--g-color-private-cool-grey-50:rgba(107,132,153,.1);--g-color-private-cool-grey-100:rgba(107,132,153,.15);--g-color-private-cool-grey-150:rgba(107,132,153,.2);--g-color-private-cool-grey-200:rgba(107,132,153,.3);--g-color-private-cool-grey-250:rgba(107,132,153,.4);--g-color-private-cool-grey-300:rgba(107,132,153,.5);--g-color-private-cool-grey-350:rgba(107,132,153,.6);--g-color-private-cool-grey-400:rgba(107,132,153,.7);--g-color-private-cool-grey-450:rgba(107,132,153,.8);--g-color-private-cool-grey-500:rgba(107,132,153,.9);--g-color-private-cool-grey-50-solid:#f0f3f5;--g-color-private-cool-grey-100-solid:#e9edf0;--g-color-private-cool-grey-150-solid:#e1e6eb;--g-color-private-cool-grey-200-solid:#d3dae0;--g-color-private-cool-grey-250-solid:#c4ced6;--g-color-private-cool-grey-300-solid:#b5c1cc;--g-color-private-cool-grey-350-solid:#a6b5c2;--g-color-private-cool-grey-400-solid:#97a9b8;--g-color-private-cool-grey-450-solid:#899dad;--g-color-private-cool-grey-500-solid:#7a90a3;--g-color-private-cool-grey-550-solid:#6b8499;--g-color-private-cool-grey-600-solid:#647a8e;--g-color-private-cool-grey-650-solid:#5c7182;--g-color-private-cool-grey-700-solid:#556776;--g-color-private-cool-grey-750-solid:#4e5d6b;--g-color-private-cool-grey-800-solid:#465360;--g-color-private-cool-grey-850-solid:#3f4a54;--g-color-private-cool-grey-900-solid:#384049;--g-color-private-cool-grey-950-solid:#31363d;--g-color-private-cool-grey-1000-solid:#2d3237}.g-root_theme_dark{--g-color-base-background:#2d2c33;--g-color-base-brand:var(--g-color-private-blue-450-solid);--g-color-base-brand-hover:var(--g-color-private-blue-600-solid);--g-color-base-selection:var(--g-color-private-blue-150);--g-color-base-selection-hover:var(--g-color-private-blue-200);--g-color-line-brand:var(--g-color-private-blue-550-solid);--g-color-text-brand:var(--g-color-private-blue-550-solid);--g-color-text-brand-heavy:var(--g-color-private-blue-600-solid);--g-color-text-brand-contrast:var(--g-color-text-light-primary);--g-color-text-link:var(--g-color-private-blue-550-solid);--g-color-text-link-hover:var(--g-color-private-blue-700-solid);--g-color-private-white-20:hsla(0,0%,100%,.02);--g-color-private-white-50:hsla(0,0%,100%,.05);--g-color-private-white-70:hsla(0,0%,100%,.07);--g-color-private-white-100:hsla(0,0%,100%,.1);--g-color-private-white-150:hsla(0,0%,100%,.15);--g-color-private-white-200:hsla(0,0%,100%,.2);--g-color-private-white-250:hsla(0,0%,100%,.25);--g-color-private-white-300:hsla(0,0%,100%,.3);--g-color-private-white-350:hsla(0,0%,100%,.35);--g-color-private-white-400:hsla(0,0%,100%,.4);--g-color-private-white-450:hsla(0,0%,100%,.45);--g-color-private-white-500:hsla(0,0%,100%,.5);--g-color-private-white-550:hsla(0,0%,100%,.55);--g-color-private-white-600:hsla(0,0%,100%,.6);--g-color-private-white-650:hsla(0,0%,100%,.65);--g-color-private-white-700:hsla(0,0%,100%,.7);--g-color-private-white-750:hsla(0,0%,100%,.75);--g-color-private-white-800:hsla(0,0%,100%,.8);--g-color-private-white-850:hsla(0,0%,100%,.85);--g-color-private-white-900:hsla(0,0%,100%,.9);--g-color-private-white-950:hsla(0,0%,100%,.95);--g-color-private-white-20-solid:#313037;--g-color-private-white-50-solid:#38373d;--g-color-private-white-70-solid:#3c3b41;--g-color-private-white-100-solid:#424147;--g-color-private-white-150-solid:#4d4c52;--g-color-private-white-200-solid:#57565c;--g-color-private-white-250-solid:#616166;--g-color-private-white-300-solid:#6c6b70;--g-color-private-white-350-solid:#77767a;--g-color-private-white-400-solid:#818085;--g-color-private-white-450-solid:#8b8b8f;--g-color-private-white-500-solid:#969699;--g-color-private-white-550-solid:#a0a0a3;--g-color-private-white-600-solid:#ababad;--g-color-private-white-650-solid:#b6b5b8;--g-color-private-white-700-solid:#c0c0c2;--g-color-private-white-750-solid:#cacacc;--g-color-private-white-800-solid:#d5d5d6;--g-color-private-white-850-solid:#dfdfe0;--g-color-private-white-900-solid:#eaeaeb;--g-color-private-white-950-solid:#f5f5f5;--g-color-private-white-1000-solid:#fff;--g-color-private-white-opaque-150:rgba(76,75,81,.95);--g-color-private-black-20:rgba(0,0,0,.02);--g-color-private-black-50:rgba(0,0,0,.05);--g-color-private-black-100:rgba(0,0,0,.1);--g-color-private-black-150:rgba(0,0,0,.15);--g-color-private-black-200:rgba(0,0,0,.2);--g-color-private-black-250:rgba(0,0,0,.25);--g-color-private-black-300:rgba(0,0,0,.3);--g-color-private-black-350:rgba(0,0,0,.35);--g-color-private-black-400:rgba(0,0,0,.4);--g-color-private-black-450:rgba(0,0,0,.45);--g-color-private-black-500:rgba(0,0,0,.5);--g-color-private-black-550:rgba(0,0,0,.55);--g-color-private-black-600:rgba(0,0,0,.6);--g-color-private-black-650:rgba(0,0,0,.65);--g-color-private-black-700:rgba(0,0,0,.7);--g-color-private-black-750:rgba(0,0,0,.75);--g-color-private-black-800:rgba(0,0,0,.8);--g-color-private-black-850:rgba(0,0,0,.85);--g-color-private-black-900:rgba(0,0,0,.9);--g-color-private-black-950:rgba(0,0,0,.95);--g-color-private-black-1000-solid:#000;--g-color-private-black-rock-850:#2d2c33;--g-color-private-blue-50:rgba(82,130,255,.1);--g-color-private-blue-100:rgba(82,130,255,.15);--g-color-private-blue-150:rgba(82,130,255,.2);--g-color-private-blue-200:rgba(82,130,255,.3);--g-color-private-blue-250:rgba(82,130,255,.4);--g-color-private-blue-300:rgba(82,130,255,.5);--g-color-private-blue-350:rgba(82,130,255,.6);--g-color-private-blue-400:rgba(82,130,255,.7);--g-color-private-blue-450:rgba(82,130,255,.8);--g-color-private-blue-500:rgba(82,130,255,.9);--g-color-private-blue-50-solid:#313547;--g-color-private-blue-100-solid:#333952;--g-color-private-blue-150-solid:#343d5c;--g-color-private-blue-200-solid:#384670;--g-color-private-blue-250-solid:#3c4e85;--g-color-private-blue-300-solid:#405799;--g-color-private-blue-350-solid:#4360ad;--g-color-private-blue-400-solid:#4768c2;--g-color-private-blue-450-solid:#4b71d6;--g-color-private-blue-500-solid:#4e79eb;--g-color-private-blue-550-solid:#5282ff;--g-color-private-blue-600-solid:#638fff;--g-color-private-blue-650-solid:#759bff;--g-color-private-blue-700-solid:#86a8ff;--g-color-private-blue-750-solid:#97b4ff;--g-color-private-blue-800-solid:#a9c1ff;--g-color-private-blue-850-solid:#bacdff;--g-color-private-blue-900-solid:#cbdaff;--g-color-private-blue-950-solid:#dce6ff;--g-color-private-blue-1000-solid:#e5ecff;--g-color-private-green-50:rgba(91,181,87,.1);--g-color-private-green-100:rgba(91,181,87,.15);--g-color-private-green-150:rgba(91,181,87,.2);--g-color-private-green-200:rgba(91,181,87,.3);--g-color-private-green-250:rgba(91,181,87,.4);--g-color-private-green-300:rgba(91,181,87,.5);--g-color-private-green-350:rgba(91,181,87,.6);--g-color-private-green-400:rgba(91,181,87,.7);--g-color-private-green-450:rgba(91,181,87,.8);--g-color-private-green-500:rgba(91,181,87,.9);--g-color-private-green-50-solid:#323a37;--g-color-private-green-100-solid:#344138;--g-color-private-green-150-solid:#36473a;--g-color-private-green-200-solid:#3b553e;--g-color-private-green-250-solid:#3f6341;--g-color-private-green-300-solid:#447145;--g-color-private-green-350-solid:#497e49;--g-color-private-green-400-solid:#4d8c4c;--g-color-private-green-450-solid:#529a50;--g-color-private-green-500-solid:#56a753;--g-color-private-green-550-solid:#5bb557;--g-color-private-green-600-solid:#6bbc68;--g-color-private-green-650-solid:#7cc479;--g-color-private-green-700-solid:#8ccb89;--g-color-private-green-750-solid:#9dd39a;--g-color-private-green-800-solid:#addaab;--g-color-private-green-850-solid:#bde1bc;--g-color-private-green-900-solid:#cee9cd;--g-color-private-green-950-solid:#def0dd;--g-color-private-green-1000-solid:#e6f4e6;--g-color-private-yellow-50:rgba(255,203,0,.1);--g-color-private-yellow-100:rgba(255,203,0,.15);--g-color-private-yellow-150:rgba(255,203,0,.2);--g-color-private-yellow-200:rgba(255,203,0,.3);--g-color-private-yellow-250:rgba(255,203,0,.4);--g-color-private-yellow-300:rgba(255,203,0,.5);--g-color-private-yellow-350:rgba(255,203,0,.6);--g-color-private-yellow-400:rgba(255,203,0,.7);--g-color-private-yellow-450:rgba(255,203,0,.8);--g-color-private-yellow-500:rgba(255,203,0,.9);--g-color-private-yellow-50-solid:#423c2e;--g-color-private-yellow-100-solid:#4d442b;--g-color-private-yellow-150-solid:#574c29;--g-color-private-yellow-200-solid:#6c5c24;--g-color-private-yellow-250-solid:#816c1f;--g-color-private-yellow-300-solid:#967c19;--g-color-private-yellow-350-solid:#ab8c14;--g-color-private-yellow-400-solid:#c09b0f;--g-color-private-yellow-450-solid:#d5ab0a;--g-color-private-yellow-500-solid:#e9ba04;--g-color-private-yellow-550-solid:#ffcb00;--g-color-private-yellow-600-solid:#ffd01a;--g-color-private-yellow-650-solid:#ffd533;--g-color-private-yellow-700-solid:#ffdb4c;--g-color-private-yellow-750-solid:#ffe066;--g-color-private-yellow-800-solid:#ffe580;--g-color-private-yellow-850-solid:#ffea99;--g-color-private-yellow-900-solid:#ffefb3;--g-color-private-yellow-950-solid:#fff5cc;--g-color-private-yellow-1000-solid:#fff7d9;--g-color-private-orange-50:rgba(200,99,12,.1);--g-color-private-orange-100:rgba(200,99,12,.15);--g-color-private-orange-150:rgba(200,99,12,.2);--g-color-private-orange-200:rgba(200,99,12,.3);--g-color-private-orange-250:rgba(200,99,12,.4);--g-color-private-orange-300:rgba(200,99,12,.5);--g-color-private-orange-350:rgba(200,99,12,.6);--g-color-private-orange-400:rgba(200,99,12,.7);--g-color-private-orange-450:rgba(200,99,12,.8);--g-color-private-orange-500:rgba(200,99,12,.9);--g-color-private-orange-50-solid:#3d322f;--g-color-private-orange-100-solid:#44342d;--g-color-private-orange-150-solid:#4c372b;--g-color-private-orange-200-solid:#5c3d27;--g-color-private-orange-250-solid:#6b4223;--g-color-private-orange-300-solid:#7b4720;--g-color-private-orange-350-solid:#8a4d1c;--g-color-private-orange-400-solid:#995218;--g-color-private-orange-450-solid:#a95814;--g-color-private-orange-500-solid:#b95e10;--g-color-private-orange-550-solid:#c8630c;--g-color-private-orange-600-solid:#ce7324;--g-color-private-orange-650-solid:#d3823d;--g-color-private-orange-700-solid:#d89255;--g-color-private-orange-750-solid:#dea16d;--g-color-private-orange-800-solid:#e3b185;--g-color-private-orange-850-solid:#e9c19e;--g-color-private-orange-900-solid:#efd0b6;--g-color-private-orange-950-solid:#f4e0ce;--g-color-private-orange-1000-solid:#f7e8db;--g-color-private-red-50:rgba(232,73,69,.1);--g-color-private-red-100:rgba(232,73,69,.15);--g-color-private-red-150:rgba(232,73,69,.2);--g-color-private-red-200:rgba(232,73,69,.3);--g-color-private-red-250:rgba(232,73,69,.4);--g-color-private-red-300:rgba(232,73,69,.5);--g-color-private-red-350:rgba(232,73,69,.6);--g-color-private-red-400:rgba(232,73,69,.7);--g-color-private-red-450:rgba(232,73,69,.8);--g-color-private-red-500:rgba(232,73,69,.9);--g-color-private-red-50-solid:#402f35;--g-color-private-red-100-solid:#493036;--g-color-private-red-150-solid:#523237;--g-color-private-red-200-solid:#653539;--g-color-private-red-250-solid:#78383a;--g-color-private-red-300-solid:#8a3a3c;--g-color-private-red-350-solid:#9d3d3e;--g-color-private-red-400-solid:#b04040;--g-color-private-red-450-solid:#c34341;--g-color-private-red-500-solid:#d54644;--g-color-private-red-550-solid:#e84945;--g-color-private-red-600-solid:#ea5b58;--g-color-private-red-650-solid:#ec6d6b;--g-color-private-red-700-solid:#ef7f7d;--g-color-private-red-750-solid:#f19290;--g-color-private-red-800-solid:#f3a4a2;--g-color-private-red-850-solid:#f6b6b5;--g-color-private-red-900-solid:#f8c8c7;--g-color-private-red-950-solid:#fadbda;--g-color-private-red-1000-solid:#fce4e3;--g-color-private-purple-50:rgba(143,82,204,.1);--g-color-private-purple-100:rgba(143,82,204,.15);--g-color-private-purple-150:rgba(143,82,204,.2);--g-color-private-purple-200:rgba(143,82,204,.3);--g-color-private-purple-250:rgba(143,82,204,.4);--g-color-private-purple-300:rgba(143,82,204,.5);--g-color-private-purple-350:rgba(143,82,204,.6);--g-color-private-purple-400:rgba(143,82,204,.7);--g-color-private-purple-450:rgba(143,82,204,.8);--g-color-private-purple-500:rgba(143,82,204,.9);--g-color-private-purple-50-solid:#373042;--g-color-private-purple-100-solid:#3c324a;--g-color-private-purple-150-solid:#413452;--g-color-private-purple-200-solid:#4a3761;--g-color-private-purple-250-solid:#543b70;--g-color-private-purple-300-solid:#5e3f80;--g-color-private-purple-350-solid:#68438f;--g-color-private-purple-400-solid:#72479e;--g-color-private-purple-450-solid:#7b4aad;--g-color-private-purple-500-solid:#854ebd;--g-color-private-purple-550-solid:#8f52cc;--g-color-private-purple-600-solid:#9a63d1;--g-color-private-purple-650-solid:#a575d6;--g-color-private-purple-700-solid:#b186db;--g-color-private-purple-750-solid:#bc97e0;--g-color-private-purple-800-solid:#c7a9e6;--g-color-private-purple-850-solid:#d2baeb;--g-color-private-purple-900-solid:#ddcbf0;--g-color-private-purple-950-solid:#e9dcf5;--g-color-private-purple-1000-solid:#eee5f7;--g-color-private-cool-grey-50:rgba(96,128,156,.1);--g-color-private-cool-grey-100:rgba(96,128,156,.15);--g-color-private-cool-grey-150:rgba(96,128,156,.2);--g-color-private-cool-grey-200:rgba(96,128,156,.3);--g-color-private-cool-grey-250:rgba(96,128,156,.4);--g-color-private-cool-grey-300:rgba(96,128,156,.5);--g-color-private-cool-grey-350:rgba(96,128,156,.6);--g-color-private-cool-grey-400:rgba(96,128,156,.7);--g-color-private-cool-grey-450:rgba(96,128,156,.8);--g-color-private-cool-grey-500:rgba(96,128,156,.9);--g-color-private-cool-grey-50-solid:#32343e;--g-color-private-cool-grey-100-solid:#353943;--g-color-private-cool-grey-150-solid:#373d48;--g-color-private-cool-grey-200-solid:#3c4552;--g-color-private-cool-grey-250-solid:#414e5d;--g-color-private-cool-grey-300-solid:#465667;--g-color-private-cool-grey-350-solid:#4c5e72;--g-color-private-cool-grey-400-solid:#51677d;--g-color-private-cool-grey-450-solid:#566f87;--g-color-private-cool-grey-500-solid:#5b7892;--g-color-private-cool-grey-550-solid:#60809c;--g-color-private-cool-grey-600-solid:#708da6;--g-color-private-cool-grey-650-solid:#8099b0;--g-color-private-cool-grey-700-solid:#90a6ba;--g-color-private-cool-grey-750-solid:#a0b3c3;--g-color-private-cool-grey-800-solid:#b0bfcd;--g-color-private-cool-grey-850-solid:#bfccd7;--g-color-private-cool-grey-900-solid:#cfd9e1;--g-color-private-cool-grey-950-solid:#dfe6eb;--g-color-private-cool-grey-1000-solid:#e7ecf0}.g-root_theme_dark-hc{--g-color-base-background:#222326;--g-color-base-brand:var(--g-color-private-blue-450-solid);--g-color-base-brand-hover:var(--g-color-private-blue-650-solid);--g-color-base-selection:var(--g-color-private-blue-250);--g-color-base-selection-hover:var(--g-color-private-blue-400);--g-color-line-brand:var(--g-color-private-blue-550-solid);--g-color-text-brand:var(--g-color-private-blue-650-solid);--g-color-text-brand-heavy:var(--g-color-private-blue-850-solid);--g-color-text-brand-contrast:var(--g-color-text-light-primary);--g-color-text-link:var(--g-color-private-blue-650-solid);--g-color-text-link-hover:var(--g-color-private-blue-800-solid);--g-color-private-white-50:hsla(0,0%,100%,.05);--g-color-private-white-70:hsla(0,0%,100%,.07);--g-color-private-white-100:hsla(0,0%,100%,.1);--g-color-private-white-150:hsla(0,0%,100%,.15);--g-color-private-white-200:hsla(0,0%,100%,.2);--g-color-private-white-250:hsla(0,0%,100%,.25);--g-color-private-white-300:hsla(0,0%,100%,.3);--g-color-private-white-350:hsla(0,0%,100%,.35);--g-color-private-white-400:hsla(0,0%,100%,.4);--g-color-private-white-450:hsla(0,0%,100%,.45);--g-color-private-white-500:hsla(0,0%,100%,.5);--g-color-private-white-550:hsla(0,0%,100%,.55);--g-color-private-white-600:hsla(0,0%,100%,.6);--g-color-private-white-650:hsla(0,0%,100%,.65);--g-color-private-white-700:hsla(0,0%,100%,.7);--g-color-private-white-750:hsla(0,0%,100%,.75);--g-color-private-white-800:hsla(0,0%,100%,.8);--g-color-private-white-850:hsla(0,0%,100%,.85);--g-color-private-white-900:hsla(0,0%,100%,.9);--g-color-private-white-950:hsla(0,0%,100%,.95);--g-color-private-white-50-solid:#2d2e31;--g-color-private-white-100-solid:#38393c;--g-color-private-white-150-solid:#434447;--g-color-private-white-200-solid:#4e4f51;--g-color-private-white-250-solid:#595a5c;--g-color-private-white-300-solid:#646567;--g-color-private-white-350-solid:#6f7072;--g-color-private-white-400-solid:#7a7b7d;--g-color-private-white-450-solid:#858688;--g-color-private-white-500-solid:#909193;--g-color-private-white-550-solid:#9c9c9d;--g-color-private-white-600-solid:#a7a7a8;--g-color-private-white-650-solid:#b2b2b3;--g-color-private-white-700-solid:#bdbdbe;--g-color-private-white-750-solid:#c8c8c9;--g-color-private-white-800-solid:#d3d3d4;--g-color-private-white-850-solid:#dededf;--g-color-private-white-900-solid:#e9e9e9;--g-color-private-white-950-solid:#f4f4f4;--g-color-private-white-1000-solid:#fff;--g-color-private-white-opaque-150:rgba(56,57,60,.97);--g-color-private-black-20:rgba(0,0,0,.02);--g-color-private-black-50:rgba(0,0,0,.05);--g-color-private-black-100:rgba(0,0,0,.1);--g-color-private-black-150:rgba(0,0,0,.15);--g-color-private-black-200:rgba(0,0,0,.2);--g-color-private-black-250:rgba(0,0,0,.25);--g-color-private-black-300:rgba(0,0,0,.3);--g-color-private-black-350:rgba(0,0,0,.35);--g-color-private-black-400:rgba(0,0,0,.4);--g-color-private-black-450:rgba(0,0,0,.45);--g-color-private-black-500:rgba(0,0,0,.5);--g-color-private-black-550:rgba(0,0,0,.55);--g-color-private-black-600:rgba(0,0,0,.6);--g-color-private-black-650:rgba(0,0,0,.65);--g-color-private-black-700:rgba(0,0,0,.7);--g-color-private-black-750:rgba(0,0,0,.75);--g-color-private-black-800:rgba(0,0,0,.8);--g-color-private-black-850:rgba(0,0,0,.85);--g-color-private-black-900:rgba(0,0,0,.9);--g-color-private-black-950:rgba(0,0,0,.95);--g-color-private-black-1000-solid:#000;--g-color-private-black-rock-850:#2d2c33;--g-color-private-black-rock-950:#222326;--g-color-private-blue-50:rgba(82,130,255,.1);--g-color-private-blue-100:rgba(82,130,255,.15);--g-color-private-blue-150:rgba(82,130,255,.2);--g-color-private-blue-200:rgba(82,130,255,.3);--g-color-private-blue-250:rgba(82,130,255,.4);--g-color-private-blue-300:rgba(82,130,255,.5);--g-color-private-blue-350:rgba(82,130,255,.6);--g-color-private-blue-400:rgba(82,130,255,.7);--g-color-private-blue-450:rgba(82,130,255,.8);--g-color-private-blue-500:rgba(82,130,255,.9);--g-color-private-blue-50-solid:#272d3c;--g-color-private-blue-100-solid:#293147;--g-color-private-blue-150-solid:#2c3651;--g-color-private-blue-200-solid:#304067;--g-color-private-blue-250-solid:#35497d;--g-color-private-blue-300-solid:#3a5393;--g-color-private-blue-350-solid:#3f5ca8;--g-color-private-blue-400-solid:#4466be;--g-color-private-blue-450-solid:#486fd4;--g-color-private-blue-500-solid:#4d79e9;--g-color-private-blue-550-solid:#5282ff;--g-color-private-blue-600-solid:#638fff;--g-color-private-blue-650-solid:#759bff;--g-color-private-blue-700-solid:#86a8ff;--g-color-private-blue-750-solid:#97b4ff;--g-color-private-blue-800-solid:#a9c1ff;--g-color-private-blue-850-solid:#bacdff;--g-color-private-blue-900-solid:#cbdaff;--g-color-private-blue-950-solid:#dce6ff;--g-color-private-blue-1000-solid:#e5ecff;--g-color-private-green-50:rgba(91,181,87,.1);--g-color-private-green-100:rgba(91,181,87,.15);--g-color-private-green-150:#000;--g-color-private-green-200:rgba(91,181,87,.3);--g-color-private-green-250:rgba(91,181,87,.4);--g-color-private-green-300:rgba(91,181,87,.5);--g-color-private-green-350:rgba(91,181,87,.6);--g-color-private-green-400:rgba(91,181,87,.7);--g-color-private-green-450:rgba(91,181,87,.8);--g-color-private-green-500:rgba(91,181,87,.9);--g-color-private-green-50-solid:#28322b;--g-color-private-green-100-solid:#2b392d;--g-color-private-green-150-solid:#2d4030;--g-color-private-green-200-solid:#334f35;--g-color-private-green-250-solid:#395d3a;--g-color-private-green-300-solid:#3f6c3f;--g-color-private-green-350-solid:#447b43;--g-color-private-green-400-solid:#4a8948;--g-color-private-green-450-solid:#50984d;--g-color-private-green-500-solid:#55a652;--g-color-private-green-550-solid:#5bb557;--g-color-private-green-600-solid:#6bbc68;--g-color-private-green-650-solid:#7cc479;--g-color-private-green-700-solid:#8ccb89;--g-color-private-green-750-solid:#9dd39a;--g-color-private-green-800-solid:#addaab;--g-color-private-green-850-solid:#bde1bc;--g-color-private-green-900-solid:#cee9cd;--g-color-private-green-950-solid:#def0dd;--g-color-private-green-1000-solid:#e6f4e6;--g-color-private-yellow-50:rgba(255,203,0,.1);--g-color-private-yellow-100:rgba(255,203,0,.15);--g-color-private-yellow-150:rgba(255,203,0,.2);--g-color-private-yellow-200:rgba(255,203,0,.3);--g-color-private-yellow-250:rgba(255,203,0,.4);--g-color-private-yellow-300:rgba(255,203,0,.5);--g-color-private-yellow-350:rgba(255,203,0,.6);--g-color-private-yellow-400:rgba(255,203,0,.7);--g-color-private-yellow-450:rgba(255,203,0,.8);--g-color-private-yellow-500:rgba(255,203,0,.9);--g-color-private-yellow-50-solid:#383422;--g-color-private-yellow-100-solid:#433c20;--g-color-private-yellow-150-solid:#4e451e;--g-color-private-yellow-200-solid:#64551b;--g-color-private-yellow-250-solid:#7a6617;--g-color-private-yellow-300-solid:#907713;--g-color-private-yellow-350-solid:#a7880f;--g-color-private-yellow-400-solid:#bd990b;--g-color-private-yellow-450-solid:#d3a908;--g-color-private-yellow-500-solid:#e9ba04;--g-color-private-yellow-550-solid:#ffcb00;--g-color-private-yellow-600-solid:#ffd01a;--g-color-private-yellow-650-solid:#ffd533;--g-color-private-yellow-700-solid:#ffdb4c;--g-color-private-yellow-750-solid:#ffe066;--g-color-private-yellow-800-solid:#ffe580;--g-color-private-yellow-850-solid:#ffea99;--g-color-private-yellow-900-solid:#ffefb3;--g-color-private-yellow-950-solid:#fff5cc;--g-color-private-yellow-1000-solid:#fff7d9;--g-color-private-orange-50:rgba(200,99,12,.1);--g-color-private-orange-100:rgba(200,99,12,.15);--g-color-private-orange-150:rgba(200,99,12,.2);--g-color-private-orange-200:rgba(200,99,12,.3);--g-color-private-orange-250:rgba(200,99,12,.4);--g-color-private-orange-300:rgba(200,99,12,.5);--g-color-private-orange-350:rgba(200,99,12,.6);--g-color-private-orange-400:rgba(200,99,12,.7);--g-color-private-orange-450:rgba(200,99,12,.8);--g-color-private-orange-500:rgba(200,99,12,.9);--g-color-private-orange-50-solid:#332923;--g-color-private-orange-100-solid:#3b2d22;--g-color-private-orange-150-solid:#433021;--g-color-private-orange-200-solid:#54361e;--g-color-private-orange-250-solid:#643d1c;--g-color-private-orange-300-solid:#754319;--g-color-private-orange-350-solid:#864916;--g-color-private-orange-400-solid:#965014;--g-color-private-orange-450-solid:#a75611;--g-color-private-orange-500-solid:#b75d0f;--g-color-private-orange-550-solid:#c8630c;--g-color-private-orange-600-solid:#ce7324;--g-color-private-orange-650-solid:#d3823d;--g-color-private-orange-700-solid:#d89255;--g-color-private-orange-750-solid:#dea16d;--g-color-private-orange-800-solid:#e3b185;--g-color-private-orange-850-solid:#e9c19e;--g-color-private-orange-900-solid:#efd0b6;--g-color-private-orange-950-solid:#f4e0ce;--g-color-private-orange-1000-solid:#f7e8db;--g-color-private-red-50:rgba(232,73,69,.1);--g-color-private-red-100:rgba(232,73,69,.15);--g-color-private-red-150:rgba(232,73,69,.2);--g-color-private-red-200:rgba(232,73,69,.3);--g-color-private-red-250:rgba(232,73,69,.4);--g-color-private-red-300:rgba(232,73,69,.5);--g-color-private-red-350:rgba(232,73,69,.6);--g-color-private-red-400:rgba(232,73,69,.7);--g-color-private-red-450:rgba(232,73,69,.8);--g-color-private-red-500:rgba(232,73,69,.9);--g-color-private-red-50-solid:#362729;--g-color-private-red-100-solid:#40292b;--g-color-private-red-150-solid:#4a2b2c;--g-color-private-red-200-solid:#5d2e2f;--g-color-private-red-250-solid:#713233;--g-color-private-red-300-solid:#853636;--g-color-private-red-350-solid:#993a39;--g-color-private-red-400-solid:#ac3d3c;--g-color-private-red-450-solid:#c0413f;--g-color-private-red-500-solid:#d44542;--g-color-private-red-550-solid:#e84945;--g-color-private-red-600-solid:#ea5b58;--g-color-private-red-650-solid:#ec6d6b;--g-color-private-red-700-solid:#ef7f7d;--g-color-private-red-750-solid:#f19290;--g-color-private-red-800-solid:#f3a4a2;--g-color-private-red-850-solid:#f6b6b5;--g-color-private-red-900-solid:#f8c8c7;--g-color-private-red-950-solid:#fadbda;--g-color-private-red-1000-solid:#fce4e3;--g-color-private-purple-50:rgba(143,82,204,.1);--g-color-private-purple-100:rgba(143,82,204,.15);--g-color-private-purple-150:rgba(143,82,204,.2);--g-color-private-purple-200:rgba(143,82,204,.3);--g-color-private-purple-250:rgba(143,82,204,.4);--g-color-private-purple-300:rgba(143,82,204,.5);--g-color-private-purple-350:rgba(143,82,204,.6);--g-color-private-purple-400:rgba(143,82,204,.7);--g-color-private-purple-450:rgba(143,82,204,.8);--g-color-private-purple-500:rgba(143,82,204,.9);--g-color-private-purple-50-solid:#2d2837;--g-color-private-purple-100-solid:#322a3f;--g-color-private-purple-150-solid:#382c47;--g-color-private-purple-200-solid:#433158;--g-color-private-purple-250-solid:#4e3668;--g-color-private-purple-300-solid:#593b79;--g-color-private-purple-350-solid:#633f8a;--g-color-private-purple-400-solid:#6e449a;--g-color-private-purple-450-solid:#7949ab;--g-color-private-purple-500-solid:#844dbb;--g-color-private-purple-550-solid:#8f52cc;--g-color-private-purple-600-solid:#9a63d1;--g-color-private-purple-650-solid:#a575d6;--g-color-private-purple-700-solid:#b186db;--g-color-private-purple-750-solid:#bc97e0;--g-color-private-purple-800-solid:#c7a9e6;--g-color-private-purple-850-solid:#d2baeb;--g-color-private-purple-900-solid:#ddcbf0;--g-color-private-purple-950-solid:#e9dcf5;--g-color-private-purple-1000-solid:#eee5f7;--g-color-private-cool-grey-50:rgba(96,128,156,.1);--g-color-private-cool-grey-100:rgba(96,128,156,.15);--g-color-private-cool-grey-150:rgba(96,128,156,.2);--g-color-private-cool-grey-200:rgba(96,128,156,.3);--g-color-private-cool-grey-250:rgba(96,128,156,.4);--g-color-private-cool-grey-300:rgba(96,128,156,.5);--g-color-private-cool-grey-350:rgba(96,128,156,.6);--g-color-private-cool-grey-400:rgba(96,128,156,.7);--g-color-private-cool-grey-450:rgba(96,128,156,.8);--g-color-private-cool-grey-500:rgba(96,128,156,.9);--g-color-private-cool-grey-50-solid:#282c32;--g-color-private-cool-grey-100-solid:#2b3138;--g-color-private-cool-grey-150-solid:#2e363e;--g-color-private-cool-grey-200-solid:#353f49;--g-color-private-cool-grey-250-solid:#3b4855;--g-color-private-cool-grey-300-solid:#415161;--g-color-private-cool-grey-350-solid:#475b6d;--g-color-private-cool-grey-400-solid:#4d6479;--g-color-private-cool-grey-450-solid:#546d84;--g-color-private-cool-grey-500-solid:#5a7790;--g-color-private-cool-grey-550-solid:#60809c;--g-color-private-cool-grey-600-solid:#708da6;--g-color-private-cool-grey-650-solid:#8099b0;--g-color-private-cool-grey-700-solid:#90a6ba;--g-color-private-cool-grey-750-solid:#a0b3c3;--g-color-private-cool-grey-800-solid:#b0bfcd;--g-color-private-cool-grey-850-solid:#bfccd7;--g-color-private-cool-grey-900-solid:#cfd9e1;--g-color-private-cool-grey-950-solid:#dfe6eb;--g-color-private-cool-grey-1000-solid:#e7ecf0}:root{--tenant-object-info-max-value-width:300px;--diagnostics-section-title-margin:20px;--diagnostics-section-margin:16px;--diagnostics-section-table-width:872px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace} -/*# sourceMappingURL=main.a322fb8b.css.map*/ \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/css/main.c8ce3bba.css b/ydb/core/viewer/monitoring/static/css/main.c8ce3bba.css new file mode 100644 index 000000000000..10e2ef01173a --- /dev/null +++ b/ydb/core/viewer/monitoring/static/css/main.c8ce3bba.css @@ -0,0 +1,9 @@ +@charset "UTF-8";@import url(https://fonts.googleapis.com/css2?family=Rubik&display=swap);.g-root{--g-font-family-sans:"Inter","Helvetica Neue","Helvetica","Arial",sans-serif;--g-font-family-monospace:"Menlo","Monaco","Consolas","Ubuntu Mono","Liberation Mono","DejaVu Sans Mono","Courier New","Courier",monospace;--g-text-body-font-family:var(--g-font-family-sans);--g-text-caption-font-family:var(--g-font-family-sans);--g-text-header-font-family:var(--g-font-family-sans);--g-text-subheader-font-family:var(--g-font-family-sans);--g-text-display-font-family:var(--g-font-family-sans);--g-text-code-font-family:var(--g-font-family-monospace);--g-text-body-font-weight:400;--g-text-caption-font-weight:400;--g-text-header-font-weight:600;--g-text-subheader-font-weight:600;--g-text-display-font-weight:600;--g-text-code-font-weight:400;--g-text-accent-font-weight:600;--g-text-body-1-font-size:13px;--g-text-body-1-line-height:18px;--g-text-body-2-font-size:15px;--g-text-body-2-line-height:20px;--g-text-body-3-font-size:17px;--g-text-body-3-line-height:24px;--g-text-body-short-font-size:13px;--g-text-body-short-line-height:16px;--g-text-caption-1-font-size:9px;--g-text-caption-1-line-height:12px;--g-text-caption-2-font-size:11px;--g-text-caption-2-line-height:16px;--g-text-header-1-font-size:20px;--g-text-header-1-line-height:24px;--g-text-header-2-font-size:24px;--g-text-header-2-line-height:28px;--g-text-subheader-1-font-size:13px;--g-text-subheader-1-line-height:18px;--g-text-subheader-2-font-size:15px;--g-text-subheader-2-line-height:20px;--g-text-subheader-3-font-size:17px;--g-text-subheader-3-line-height:24px;--g-text-display-1-font-size:28px;--g-text-display-1-line-height:36px;--g-text-display-2-font-size:32px;--g-text-display-2-line-height:40px;--g-text-display-3-font-size:40px;--g-text-display-3-line-height:48px;--g-text-display-4-font-size:48px;--g-text-display-4-line-height:52px;--g-text-code-1-font-size:12px;--g-text-code-1-line-height:18px;--g-text-code-2-font-size:14px;--g-text-code-2-line-height:20px;--g-text-code-3-font-size:16px;--g-text-code-3-line-height:24px;--g-text-code-inline-1-font-size:12px;--g-text-code-inline-1-line-height:14px;--g-text-code-inline-2-font-size:14px;--g-text-code-inline-2-line-height:16px;--g-text-code-inline-3-font-size:16px;--g-text-code-inline-3-line-height:20px;--g-spacing-base:4px;--g-spacing-0:calc(var(--g-spacing-base)*0);--g-spacing-half:calc(var(--g-spacing-base)*0.5);--g-spacing-1:var(--g-spacing-base);--g-spacing-2:calc(var(--g-spacing-base)*2);--g-spacing-3:calc(var(--g-spacing-base)*3);--g-spacing-4:calc(var(--g-spacing-base)*4);--g-spacing-5:calc(var(--g-spacing-base)*5);--g-spacing-6:calc(var(--g-spacing-base)*6);--g-spacing-7:calc(var(--g-spacing-base)*7);--g-spacing-8:calc(var(--g-spacing-base)*8);--g-spacing-9:calc(var(--g-spacing-base)*9);--g-spacing-10:calc(var(--g-spacing-base)*10);--g-scrollbar-width:12px;--g-border-radius-xs:3px;--g-border-radius-s:5px;--g-border-radius-m:6px;--g-border-radius-l:8px;--g-border-radius-xl:10px;--g-focus-border-radius:2px;background:var(--g-color-base-background);color:var(--g-color-text-primary);font-family:var(--g-font-family-sans);font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.g-root[dir=ltr],body.g-root{--g-flow-direction:1;--g-flow-is-ltr:1;--g-flow-is-rtl:0}.g-root[dir=rtl]{--g-flow-direction:-1;--g-flow-is-ltr:0;--g-flow-is-rtl:1}.g-root_theme_light{--g-color-private-blue-50:#3697f11a;--g-color-private-blue-100:#3697f126;--g-color-private-blue-150:#3697f133;--g-color-private-blue-200:#3697f14d;--g-color-private-blue-250:#3697f166;--g-color-private-blue-300:#3697f180;--g-color-private-blue-350:#3697f199;--g-color-private-blue-400:#3697f1b3;--g-color-private-blue-450:#3697f1cc;--g-color-private-blue-500:#3697f1e6;--g-color-private-blue-50-solid:#ebf5fe;--g-color-private-blue-100-solid:#e1effd;--g-color-private-blue-150-solid:#d7eafc;--g-color-private-blue-200-solid:#c3e0fb;--g-color-private-blue-250-solid:#afd5f9;--g-color-private-blue-300-solid:#9bcbf8;--g-color-private-blue-350-solid:#86c1f7;--g-color-private-blue-400-solid:#72b6f5;--g-color-private-blue-450-solid:#5eacf4;--g-color-private-blue-500-solid:#4aa1f2;--g-color-private-blue-550-solid:#3697f1;--g-color-private-blue-600-solid:#348bdc;--g-color-private-blue-650-solid:#327fc8;--g-color-private-blue-700-solid:#3072b3;--g-color-private-blue-750-solid:#2e669e;--g-color-private-blue-800-solid:#2c5a8a;--g-color-private-blue-850-solid:#2a4e75;--g-color-private-blue-900-solid:#284260;--g-color-private-blue-950-solid:#26354b;--g-color-private-blue-1000-solid:#252f41;--g-color-private-green-50:#32ba761a;--g-color-private-green-100:#32ba7626;--g-color-private-green-150:#32ba7633;--g-color-private-green-200:#32ba764d;--g-color-private-green-250:#32ba7666;--g-color-private-green-300:#32ba7680;--g-color-private-green-350:#32ba7699;--g-color-private-green-400:#32ba76b3;--g-color-private-green-450:#32ba76cc;--g-color-private-green-500:#32ba76e6;--g-color-private-green-50-solid:#ebf8f1;--g-color-private-green-100-solid:#e0f5ea;--g-color-private-green-150-solid:#d6f1e4;--g-color-private-green-200-solid:#c2ead6;--g-color-private-green-250-solid:#ade3c8;--g-color-private-green-300-solid:#9db;--g-color-private-green-350-solid:#84d6ad;--g-color-private-green-400-solid:#70cf9f;--g-color-private-green-450-solid:#5bc891;--g-color-private-green-500-solid:#47c184;--g-color-private-green-550-solid:#32ba76;--g-color-private-green-600-solid:#30aa6e;--g-color-private-green-650-solid:#2f9b65;--g-color-private-green-700-solid:#2d8b5d;--g-color-private-green-750-solid:#2c7b54;--g-color-private-green-800-solid:#2a6c4c;--g-color-private-green-850-solid:#285c44;--g-color-private-green-900-solid:#274c3b;--g-color-private-green-950-solid:#253c33;--g-color-private-green-1000-solid:#24352f;--g-color-private-yellow-50:#ffbe5c1a;--g-color-private-yellow-100:#ffbe5c26;--g-color-private-yellow-150:#ffbe5c33;--g-color-private-yellow-200:#ffbe5c4d;--g-color-private-yellow-250:#ffbe5c66;--g-color-private-yellow-300:#ffbe5c80;--g-color-private-yellow-350:#ffbe5c99;--g-color-private-yellow-400:#ffbe5cb3;--g-color-private-yellow-450:#ffbe5ccc;--g-color-private-yellow-500:#ffbe5ce6;--g-color-private-yellow-50-solid:#fff9ef;--g-color-private-yellow-100-solid:#fff5e7;--g-color-private-yellow-150-solid:#fff2de;--g-color-private-yellow-200-solid:#ffecce;--g-color-private-yellow-250-solid:#ffe5be;--g-color-private-yellow-300-solid:#ffdfae;--g-color-private-yellow-350-solid:#ffd89d;--g-color-private-yellow-400-solid:#ffd28d;--g-color-private-yellow-450-solid:#ffcb7d;--g-color-private-yellow-500-solid:#ffc56c;--g-color-private-yellow-550-solid:#ffbe5c;--g-color-private-yellow-600-solid:#e9ae56;--g-color-private-yellow-650-solid:#d39e50;--g-color-private-yellow-700-solid:#bd8e4b;--g-color-private-yellow-750-solid:#a77e45;--g-color-private-yellow-800-solid:#916e3f;--g-color-private-yellow-850-solid:#7a5d39;--g-color-private-yellow-900-solid:#644d33;--g-color-private-yellow-950-solid:#4e3d2e;--g-color-private-yellow-1000-solid:#43352b;--g-color-private-orange-400-solid:#ffa04d;--g-color-private-orange-500-solid:#ff8519;--g-color-private-orange-600-solid:#e96e03;--g-color-private-orange-650-solid:#d36507;--g-color-private-orange-700-solid:#bd5c0a;--g-color-private-orange-750-solid:#a7530e;--g-color-private-orange-800-solid:#914a11;--g-color-private-orange-850-solid:#7a4114;--g-color-private-orange-900-solid:#643818;--g-color-private-orange-950-solid:#4e2f1b;--g-color-private-orange-1000-solid:#432b1d;--g-color-private-red-50:#ff003d1a;--g-color-private-red-100:#ff003d26;--g-color-private-red-150:#ff003d33;--g-color-private-red-200:#ff003d4d;--g-color-private-red-250:#ff003d66;--g-color-private-red-300:#ff003d80;--g-color-private-red-350:#ff003d99;--g-color-private-red-400:#ff003db3;--g-color-private-red-450:#ff003dcc;--g-color-private-red-500:#ff003de6;--g-color-private-red-50-solid:#ffe6ec;--g-color-private-red-100-solid:#ffd9e2;--g-color-private-red-150-solid:#ffccd8;--g-color-private-red-200-solid:#ffb3c5;--g-color-private-red-250-solid:#ff99b1;--g-color-private-red-300-solid:#ff809e;--g-color-private-red-350-solid:#ff668b;--g-color-private-red-400-solid:#ff4d77;--g-color-private-red-450-solid:#ff3364;--g-color-private-red-500-solid:#ff1950;--g-color-private-red-550-solid:#ff003d;--g-color-private-red-600-solid:#e9033a;--g-color-private-red-650-solid:#d30638;--g-color-private-red-700-solid:#bd0935;--g-color-private-red-750-solid:#a70c32;--g-color-private-red-800-solid:#910f30;--g-color-private-red-850-solid:#7a112d;--g-color-private-red-900-solid:#64142a;--g-color-private-red-950-solid:#4e1727;--g-color-private-red-1000-solid:#431926;--g-color-private-purple-600-solid:#844dbb;--g-color-private-purple-650-solid:#7947aa;--g-color-private-purple-700-solid:#6e4299;--g-color-private-purple-750-solid:#633d88;--g-color-private-purple-800-solid:#593877;--g-color-private-purple-850-solid:#4e3266;--g-color-private-purple-900-solid:#432d55;--g-color-private-purple-950-solid:#382844;--g-color-private-purple-1000-solid:#32253c;--g-color-private-cool-grey-300-solid:#b5c2cc;--g-color-private-cool-grey-600-solid:#647a8d;--g-color-private-cool-grey-650-solid:#5c6f81;--g-color-private-cool-grey-700-solid:#556575;--g-color-private-cool-grey-750-solid:#4e5b69;--g-color-private-cool-grey-800-solid:#47515e;--g-color-private-cool-grey-850-solid:#3f4652;--g-color-private-cool-grey-900-solid:#383c46;--g-color-private-cool-grey-950-solid:#31323a;--g-color-private-cool-grey-1000-solid:#2d2c34;--g-color-text-primary:var(--g-color-text-dark-primary);--g-color-text-complementary:var(--g-color-text-dark-complementary);--g-color-text-secondary:var(--g-color-text-dark-secondary);--g-color-text-hint:var(--g-color-text-dark-hint);--g-color-text-info:var(--g-color-private-blue-600-solid);--g-color-text-positive:var(--g-color-private-green-600-solid);--g-color-text-warning:var(--g-color-private-yellow-700-solid);--g-color-text-danger:var(--g-color-private-red-600-solid);--g-color-text-utility:var(--g-color-private-purple-600-solid);--g-color-text-misc:var(--g-color-private-cool-grey-600-solid);--g-color-text-info-heavy:var(--g-color-private-blue-700-solid);--g-color-text-positive-heavy:var(--g-color-private-green-700-solid);--g-color-text-warning-heavy:var(--g-color-private-orange-700-solid);--g-color-text-danger-heavy:var(--g-color-private-red-700-solid);--g-color-text-utility-heavy:var(--g-color-private-purple-700-solid);--g-color-text-misc-heavy:var(--g-color-private-cool-grey-700-solid);--g-color-text-brand:var(--g-color-private-yellow-700-solid);--g-color-text-brand-heavy:var(--g-color-private-orange-700-solid);--g-color-text-brand-contrast:var(--g-color-text-dark-primary);--g-color-text-link:var(--g-color-private-yellow-650-solid);--g-color-text-link-hover:var(--g-color-private-orange-650-solid);--g-color-text-link-visited:var(--g-color-private-purple-550-solid);--g-color-text-link-visited-hover:var(--g-color-private-purple-800-solid);--g-color-text-dark-primary:var(--g-color-private-black-850);--g-color-text-dark-complementary:var(--g-color-private-black-700);--g-color-text-dark-secondary:var(--g-color-private-black-500);--g-color-text-dark-hint:var(--g-color-private-black-300);--g-color-text-light-primary:var(--g-color-private-white-1000-solid);--g-color-text-light-complementary:var(--g-color-private-white-850);--g-color-text-light-secondary:var(--g-color-private-white-700);--g-color-text-light-hint:var(--g-color-private-white-500);--g-color-text-inverted-primary:var(--g-color-text-light-primary);--g-color-text-inverted-complementary:var(--g-color-text-light-complementary);--g-color-text-inverted-secondary:var(--g-color-text-light-secondary);--g-color-text-inverted-hint:var(--g-color-text-light-hint);--g-color-base-background:var(--g-color-private-white-1000-solid);--g-color-base-generic:var(--g-color-private-black-50);--g-color-base-generic-hover:var(--g-color-private-black-150);--g-color-base-generic-medium:var(--g-color-private-black-150);--g-color-base-generic-medium-hover:var(--g-color-private-black-250);--g-color-base-generic-accent:var(--g-color-private-black-150);--g-color-base-generic-accent-disabled:var(--g-color-private-black-70);--g-color-base-generic-ultralight:var(--g-color-private-black-20-solid);--g-color-base-simple-hover:var(--g-color-private-black-50);--g-color-base-simple-hover-solid:var(--g-color-private-black-50-solid);--g-color-base-brand:var(--g-color-private-yellow-550-solid);--g-color-base-brand-hover:var(--g-color-private-yellow-600-solid);--g-color-base-selection:var(--g-color-private-yellow-200);--g-color-base-selection-hover:var(--g-color-private-yellow-300);--g-color-base-info-light:var(--g-color-private-blue-100);--g-color-base-info-light-hover:var(--g-color-private-blue-200);--g-color-base-info-medium:var(--g-color-private-blue-200);--g-color-base-info-medium-hover:var(--g-color-private-blue-300);--g-color-base-info-heavy:var(--g-color-private-blue-600-solid);--g-color-base-info-heavy-hover:var(--g-color-private-blue-700-solid);--g-color-base-positive-light:var(--g-color-private-green-100);--g-color-base-positive-light-hover:var(--g-color-private-green-200);--g-color-base-positive-medium:var(--g-color-private-green-200);--g-color-base-positive-medium-hover:var(--g-color-private-green-300);--g-color-base-positive-heavy:var(--g-color-private-green-600-solid);--g-color-base-positive-heavy-hover:var(--g-color-private-green-700-solid);--g-color-base-warning-light:var(--g-color-private-yellow-200);--g-color-base-warning-light-hover:var(--g-color-private-yellow-300);--g-color-base-warning-medium:var(--g-color-private-yellow-400);--g-color-base-warning-medium-hover:var(--g-color-private-yellow-500);--g-color-base-warning-heavy:var(--g-color-private-yellow-550-solid);--g-color-base-warning-heavy-hover:var(--g-color-private-yellow-650-solid);--g-color-base-danger-light:var(--g-color-private-red-100);--g-color-base-danger-light-hover:var(--g-color-private-red-200);--g-color-base-danger-medium:var(--g-color-private-red-200);--g-color-base-danger-medium-hover:var(--g-color-private-red-300);--g-color-base-danger-heavy:var(--g-color-private-red-600-solid);--g-color-base-danger-heavy-hover:var(--g-color-private-red-700-solid);--g-color-base-utility-light:var(--g-color-private-purple-100);--g-color-base-utility-light-hover:var(--g-color-private-purple-200);--g-color-base-utility-medium:var(--g-color-private-purple-200);--g-color-base-utility-medium-hover:var(--g-color-private-purple-300);--g-color-base-utility-heavy:var(--g-color-private-purple-600-solid);--g-color-base-utility-heavy-hover:var(--g-color-private-purple-700-solid);--g-color-base-neutral-light:var(--g-color-private-black-50);--g-color-base-neutral-light-hover:var(--g-color-private-black-100);--g-color-base-neutral-medium:var(--g-color-private-black-200);--g-color-base-neutral-medium-hover:var(--g-color-private-black-250);--g-color-base-neutral-heavy:var(--g-color-private-black-450);--g-color-base-neutral-heavy-hover:var(--g-color-private-black-550);--g-color-base-misc-light:var(--g-color-private-cool-grey-100);--g-color-base-misc-light-hover:var(--g-color-private-cool-grey-200);--g-color-base-misc-medium:var(--g-color-private-cool-grey-200);--g-color-base-misc-medium-hover:var(--g-color-private-cool-grey-300);--g-color-base-misc-heavy:var(--g-color-private-cool-grey-600-solid);--g-color-base-misc-heavy-hover:var(--g-color-private-cool-grey-700-solid);--g-color-base-light:var(--g-color-private-white-1000-solid);--g-color-base-light-hover:var(--g-color-private-white-850);--g-color-base-light-simple-hover:var(--g-color-private-white-150);--g-color-base-light-disabled:var(--g-color-private-white-150);--g-color-base-light-accent-disabled:var(--g-color-private-white-300);--g-color-base-float:var(--g-color-private-white-1000-solid);--g-color-base-float-hover:var(--g-color-private-black-50-solid);--g-color-base-float-medium:var(--g-color-private-black-550-solid);--g-color-base-float-heavy:var(--g-color-private-black-700-solid);--g-color-base-float-accent:var(--g-color-private-white-1000-solid);--g-color-base-float-accent-hover:var(--g-color-private-white-850);--g-color-base-float-announcement:var(--g-color-private-cool-grey-50-solid);--g-color-base-modal:var(--g-color-base-background);--g-color-line-generic:var(--g-color-private-black-100);--g-color-line-generic-hover:var(--g-color-private-black-150);--g-color-line-generic-active:var(--g-color-private-black-300);--g-color-line-generic-accent:var(--g-color-private-black-150);--g-color-line-generic-accent-hover:var(--g-color-private-black-300);--g-color-line-generic-solid:var(--g-color-private-black-100-solid);--g-color-line-brand:var(--g-color-private-yellow-600-solid);--g-color-line-focus:var(--g-color-private-cool-grey-450);--g-color-line-light:var(--g-color-private-white-500);--g-color-line-info:var(--g-color-private-blue-450);--g-color-line-positive:var(--g-color-private-green-450);--g-color-line-warning:var(--g-color-private-yellow-600-solid);--g-color-line-danger:var(--g-color-private-red-450);--g-color-line-utility:var(--g-color-private-purple-450);--g-color-line-misc:var(--g-color-private-cool-grey-450);--g-color-sfx-veil:var(--g-color-private-black-250);--g-color-sfx-shadow:var(--g-color-private-black-150);--g-color-sfx-shadow-heavy:var(--g-color-private-black-500);--g-color-sfx-shadow-light:var(--g-color-private-black-50);--g-color-sfx-fade:var(--g-color-private-white-300);--g-color-scroll-track:var(--g-color-base-background);--g-color-scroll-handle:var(--g-color-private-black-100);--g-color-scroll-handle-hover:var(--g-color-private-black-150);--g-color-scroll-corner:var(--g-color-private-black-100);--g-color-infographics-axis:var(--g-color-private-black-150-solid);--g-color-infographics-tooltip-bg:var(--g-color-private-white-950)}.g-root_theme_dark{--g-color-private-white-20-solid:#262226;--g-color-private-white-50-solid:#2d282d;--g-color-private-white-70-solid:#312d31;--g-color-private-white-100-solid:#383438;--g-color-private-white-150-solid:#433f43;--g-color-private-white-200-solid:#4e4a4e;--g-color-private-white-250-solid:#595559;--g-color-private-white-300-solid:#646164;--g-color-private-white-350-solid:#6f6c6f;--g-color-private-white-400-solid:#7a777a;--g-color-private-white-450-solid:#858385;--g-color-private-white-500-solid:#908e90;--g-color-private-white-550-solid:#9c999c;--g-color-private-white-600-solid:#a7a5a7;--g-color-private-white-650-solid:#b2b0b2;--g-color-private-white-700-solid:#bdbbbd;--g-color-private-white-750-solid:#c8c6c8;--g-color-private-white-800-solid:#d3d2d3;--g-color-private-white-850-solid:#deddde;--g-color-private-white-900-solid:#e9e8e9;--g-color-private-white-950-solid:#f4f4f4;--g-color-private-blue-50:#3697f11a;--g-color-private-blue-100:#3697f126;--g-color-private-blue-150:#3697f133;--g-color-private-blue-200:#3697f14d;--g-color-private-blue-250:#3697f166;--g-color-private-blue-300:#3697f180;--g-color-private-blue-350:#3697f199;--g-color-private-blue-400:#3697f1b3;--g-color-private-blue-450:#3697f1cc;--g-color-private-blue-500:#3697f1e6;--g-color-private-blue-50-solid:#242937;--g-color-private-blue-100-solid:#252f41;--g-color-private-blue-150-solid:#26354b;--g-color-private-blue-200-solid:#284260;--g-color-private-blue-250-solid:#2a4e75;--g-color-private-blue-300-solid:#2c5a8a;--g-color-private-blue-350-solid:#2e669e;--g-color-private-blue-400-solid:#3072b3;--g-color-private-blue-450-solid:#327fc8;--g-color-private-blue-500-solid:#348bdc;--g-color-private-blue-550-solid:#3697f1;--g-color-private-blue-600-solid:#4aa1f2;--g-color-private-blue-650-solid:#5eacf4;--g-color-private-blue-700-solid:#72b6f5;--g-color-private-blue-750-solid:#86c1f7;--g-color-private-blue-800-solid:#9bcbf8;--g-color-private-blue-850-solid:#afd5f9;--g-color-private-blue-900-solid:#c3e0fb;--g-color-private-blue-950-solid:#d7eafc;--g-color-private-blue-1000-solid:#e1effd;--g-color-private-green-50:#4db09b1a;--g-color-private-green-100:#4db09b26;--g-color-private-green-150:#4db09b33;--g-color-private-green-200:#4db09b4d;--g-color-private-green-250:#4db09b66;--g-color-private-green-300:#4db09b80;--g-color-private-green-350:#4db09b99;--g-color-private-green-400:#4db09bb3;--g-color-private-green-450:#4db09bcc;--g-color-private-green-500:#4db09be6;--g-color-private-green-50-solid:#262c2e;--g-color-private-green-100-solid:#283334;--g-color-private-green-150-solid:#2b3a3a;--g-color-private-green-200-solid:#2f4946;--g-color-private-green-250-solid:#335852;--g-color-private-green-300-solid:#38675f;--g-color-private-green-350-solid:#3c756b;--g-color-private-green-400-solid:#408477;--g-color-private-green-450-solid:#449383;--g-color-private-green-500-solid:#49a18f;--g-color-private-green-550-solid:#4db09b;--g-color-private-green-600-solid:#5fb8a5;--g-color-private-green-650-solid:#71c0af;--g-color-private-green-700-solid:#82c8b9;--g-color-private-green-750-solid:#94d0c3;--g-color-private-green-800-solid:#a6d8cd;--g-color-private-green-850-solid:#b8dfd7;--g-color-private-green-900-solid:#cae7e1;--g-color-private-green-950-solid:#dbefeb;--g-color-private-green-1000-solid:#e4f3f0;--g-color-private-yellow-50:#ffbe5c1a;--g-color-private-yellow-100:#ffbe5c26;--g-color-private-yellow-150:#ffbe5c33;--g-color-private-yellow-200:#ffbe5c4d;--g-color-private-yellow-250:#ffbe5c66;--g-color-private-yellow-300:#ffbe5c80;--g-color-private-yellow-350:#ffbe5c99;--g-color-private-yellow-400:#ffbe5cb3;--g-color-private-yellow-450:#ffbe5ccc;--g-color-private-yellow-500:#ffbe5ce6;--g-color-private-yellow-50-solid:#382d28;--g-color-private-yellow-100-solid:#43352b;--g-color-private-yellow-150-solid:#4e3d2e;--g-color-private-yellow-200-solid:#644d33;--g-color-private-yellow-250-solid:#7a5d39;--g-color-private-yellow-300-solid:#916e3f;--g-color-private-yellow-350-solid:#a77e45;--g-color-private-yellow-400-solid:#bd8e4b;--g-color-private-yellow-450-solid:#d39e50;--g-color-private-yellow-500-solid:#e9ae56;--g-color-private-yellow-550-solid:#ffbe5c;--g-color-private-yellow-600-solid:#ffc56c;--g-color-private-yellow-650-solid:#ffcb7d;--g-color-private-yellow-700-solid:#ffd28d;--g-color-private-yellow-750-solid:#ffd89d;--g-color-private-yellow-800-solid:#ffdfae;--g-color-private-yellow-850-solid:#ffe5be;--g-color-private-yellow-900-solid:#ffecce;--g-color-private-yellow-950-solid:#fff2de;--g-color-private-yellow-1000-solid:#fff5e7;--g-color-private-orange-50-solid:#332420;--g-color-private-orange-100-solid:#3b281f;--g-color-private-orange-150-solid:#432b1e;--g-color-private-orange-200-solid:#54321b;--g-color-private-orange-250-solid:#643919;--g-color-private-orange-300-solid:#754017;--g-color-private-orange-350-solid:#864715;--g-color-private-orange-400-solid:#964e13;--g-color-private-orange-450-solid:#a75510;--g-color-private-orange-500-solid:#b75c0e;--g-color-private-orange-700-solid:#d99255;--g-color-private-orange-800-solid:#e4b186;--g-color-private-red-50:#e5325d1a;--g-color-private-red-100:#e5325d26;--g-color-private-red-150:#e5325d33;--g-color-private-red-200:#e5325d4d;--g-color-private-red-250:#e5325d66;--g-color-private-red-300:#e5325d80;--g-color-private-red-350:#e5325d99;--g-color-private-red-400:#e5325db3;--g-color-private-red-450:#e5325dcc;--g-color-private-red-500:#e5325de6;--g-color-private-red-50-solid:#361f28;--g-color-private-red-100-solid:#3f202b;--g-color-private-red-150-solid:#49212e;--g-color-private-red-200-solid:#5d2334;--g-color-private-red-250-solid:#70253a;--g-color-private-red-300-solid:#842840;--g-color-private-red-350-solid:#972a45;--g-color-private-red-400-solid:#ab2c4b;--g-color-private-red-450-solid:#be2e51;--g-color-private-red-500-solid:#d23057;--g-color-private-red-550-solid:#e5325d;--g-color-private-red-600-solid:#e8476d;--g-color-private-red-650-solid:#ea5b7d;--g-color-private-red-700-solid:#ed708e;--g-color-private-red-750-solid:#ef849e;--g-color-private-red-800-solid:#f299ae;--g-color-private-red-850-solid:#f5adbe;--g-color-private-red-900-solid:#f7c2ce;--g-color-private-red-950-solid:#fad6df;--g-color-private-red-1000-solid:#fbe0e7;--g-color-private-purple-50-solid:#2d2233;--g-color-private-purple-100-solid:#32253c;--g-color-private-purple-150-solid:#382844;--g-color-private-purple-200-solid:#432d55;--g-color-private-purple-250-solid:#4e3266;--g-color-private-purple-300-solid:#593877;--g-color-private-purple-350-solid:#633d88;--g-color-private-purple-400-solid:#6e4299;--g-color-private-purple-450-solid:#7947aa;--g-color-private-purple-500-solid:#844dbb;--g-color-private-cool-grey-50-solid:#28272e;--g-color-private-cool-grey-100-solid:#2b2c34;--g-color-private-cool-grey-150-solid:#2e313a;--g-color-private-cool-grey-200-solid:#353b47;--g-color-private-cool-grey-250-solid:#3b4553;--g-color-private-cool-grey-300-solid:#414f5f;--g-color-private-cool-grey-350-solid:#47586b;--g-color-private-cool-grey-400-solid:#4d6277;--g-color-private-cool-grey-450-solid:#546c84;--g-color-private-cool-grey-500-solid:#5a7690;--g-color-private-cool-grey-750-solid:#a0b3c4;--g-color-private-cool-grey-800-solid:#b0c0ce;--g-color-text-primary:var(--g-color-text-light-primary);--g-color-text-complementary:var(--g-color-text-light-complementary);--g-color-text-secondary:var(--g-color-text-light-secondary);--g-color-text-hint:var(--g-color-text-light-hint);--g-color-text-info:var(--g-color-private-blue-550-solid);--g-color-text-positive:var(--g-color-private-green-550-solid);--g-color-text-warning:var(--g-color-private-yellow-550-solid);--g-color-text-danger:var(--g-color-private-red-550-solid);--g-color-text-utility:var(--g-color-private-purple-600-solid);--g-color-text-misc:var(--g-color-private-cool-grey-600-solid);--g-color-text-info-heavy:var(--g-color-private-blue-600-solid);--g-color-text-positive-heavy:var(--g-color-private-green-600-solid);--g-color-text-warning-heavy:var(--g-color-private-yellow-600-solid);--g-color-text-danger-heavy:var(--g-color-private-red-600-solid);--g-color-text-utility-heavy:var(--g-color-private-purple-650-solid);--g-color-text-misc-heavy:var(--g-color-private-cool-grey-650-solid);--g-color-text-brand:var(--g-color-private-yellow-600-solid);--g-color-text-brand-heavy:var(--g-color-private-yellow-700-solid);--g-color-text-brand-contrast:var(--g-color-text-dark-primary);--g-color-text-link:var(--g-color-private-yellow-550-solid);--g-color-text-link-hover:var(--g-color-private-orange-550-solid);--g-color-text-link-visited:var(--g-color-private-purple-600-solid);--g-color-text-link-visited-hover:var(--g-color-private-purple-750-solid);--g-color-text-dark-primary:var(--g-color-private-black-900);--g-color-text-dark-complementary:var(--g-color-private-black-700);--g-color-text-dark-secondary:var(--g-color-private-black-500);--g-color-text-dark-hint:var(--g-color-private-black-300);--g-color-text-light-primary:var(--g-color-private-white-850);--g-color-text-light-complementary:var(--g-color-private-white-700);--g-color-text-light-secondary:var(--g-color-private-white-500);--g-color-text-light-hint:var(--g-color-private-white-300);--g-color-text-inverted-primary:var(--g-color-text-dark-primary);--g-color-text-inverted-complementary:var(--g-color-text-dark-complementary);--g-color-text-inverted-secondary:var(--g-color-text-dark-secondary);--g-color-text-inverted-hint:var(--g-color-text-dark-hint);--g-color-base-background:#221d22;--g-color-base-generic:var(--g-color-private-white-100);--g-color-base-generic-hover:var(--g-color-private-white-150);--g-color-base-generic-medium:var(--g-color-private-white-250);--g-color-base-generic-medium-hover:var(--g-color-private-white-300);--g-color-base-generic-accent:var(--g-color-private-white-150);--g-color-base-generic-accent-disabled:var(--g-color-private-white-70);--g-color-base-generic-ultralight:var(--g-color-private-white-20-solid);--g-color-base-simple-hover:var(--g-color-private-white-100);--g-color-base-simple-hover-solid:var(--g-color-private-white-100-solid);--g-color-base-brand:var(--g-color-private-yellow-550-solid);--g-color-base-brand-hover:var(--g-color-private-yellow-650-solid);--g-color-base-selection:var(--g-color-private-yellow-150);--g-color-base-selection-hover:var(--g-color-private-yellow-200);--g-color-base-info-light:var(--g-color-private-blue-150);--g-color-base-info-light-hover:var(--g-color-private-blue-200);--g-color-base-info-medium:var(--g-color-private-blue-300);--g-color-base-info-medium-hover:var(--g-color-private-blue-400);--g-color-base-info-heavy:var(--g-color-private-blue-600-solid);--g-color-base-info-heavy-hover:var(--g-color-private-blue-700-solid);--g-color-base-positive-light:var(--g-color-private-green-150);--g-color-base-positive-light-hover:var(--g-color-private-green-200);--g-color-base-positive-medium:var(--g-color-private-green-300);--g-color-base-positive-medium-hover:var(--g-color-private-green-400);--g-color-base-positive-heavy:var(--g-color-private-green-600-solid);--g-color-base-positive-heavy-hover:var(--g-color-private-green-700-solid);--g-color-base-warning-light:var(--g-color-private-yellow-150);--g-color-base-warning-light-hover:var(--g-color-private-yellow-200);--g-color-base-warning-medium:var(--g-color-private-yellow-300);--g-color-base-warning-medium-hover:var(--g-color-private-yellow-400);--g-color-base-warning-heavy:var(--g-color-private-yellow-600-solid);--g-color-base-warning-heavy-hover:var(--g-color-private-yellow-700-solid);--g-color-base-danger-light:var(--g-color-private-red-150);--g-color-base-danger-light-hover:var(--g-color-private-red-200);--g-color-base-danger-medium:var(--g-color-private-red-300);--g-color-base-danger-medium-hover:var(--g-color-private-red-400);--g-color-base-danger-heavy:var(--g-color-private-red-600-solid);--g-color-base-danger-heavy-hover:var(--g-color-private-red-700-solid);--g-color-base-utility-light:var(--g-color-private-purple-150);--g-color-base-utility-light-hover:var(--g-color-private-purple-250);--g-color-base-utility-medium:var(--g-color-private-purple-300);--g-color-base-utility-medium-hover:var(--g-color-private-purple-400);--g-color-base-utility-heavy:var(--g-color-private-purple-600-solid);--g-color-base-utility-heavy-hover:var(--g-color-private-purple-700-solid);--g-color-base-neutral-light:var(--g-color-private-white-100);--g-color-base-neutral-light-hover:var(--g-color-private-white-150);--g-color-base-neutral-medium:var(--g-color-private-white-250);--g-color-base-neutral-medium-hover:var(--g-color-private-white-350);--g-color-base-neutral-heavy:var(--g-color-private-white-550);--g-color-base-neutral-heavy-hover:var(--g-color-private-white-650);--g-color-base-misc-light:var(--g-color-private-cool-grey-150);--g-color-base-misc-light-hover:var(--g-color-private-cool-grey-200);--g-color-base-misc-medium:var(--g-color-private-cool-grey-300);--g-color-base-misc-medium-hover:var(--g-color-private-cool-grey-400);--g-color-base-misc-heavy:var(--g-color-private-cool-grey-600-solid);--g-color-base-misc-heavy-hover:var(--g-color-private-cool-grey-700-solid);--g-color-base-light:var(--g-color-private-white-850);--g-color-base-light-hover:var(--g-color-private-white-700);--g-color-base-light-simple-hover:var(--g-color-private-white-150);--g-color-base-light-disabled:var(--g-color-private-white-150);--g-color-base-light-accent-disabled:var(--g-color-private-white-300);--g-color-base-float:var(--g-color-private-white-100-solid);--g-color-base-float-hover:var(--g-color-private-white-150-solid);--g-color-base-float-medium:var(--g-color-private-white-150-solid);--g-color-base-float-heavy:var(--g-color-private-white-250-solid);--g-color-base-float-accent:var(--g-color-private-white-150-solid);--g-color-base-float-accent-hover:var(--g-color-private-white-200-solid);--g-color-base-float-announcement:var(--g-color-private-white-150-solid);--g-color-base-modal:var(--g-color-base-background);--g-color-line-generic:var(--g-color-private-white-150);--g-color-line-generic-hover:var(--g-color-private-white-250);--g-color-line-generic-active:var(--g-color-private-white-300);--g-color-line-generic-accent:var(--g-color-private-white-150);--g-color-line-generic-accent-hover:var(--g-color-private-white-300);--g-color-line-generic-solid:var(--g-color-private-white-150-solid);--g-color-line-brand:var(--g-color-private-yellow-600-solid);--g-color-line-focus:var(--g-color-private-cool-grey-450);--g-color-line-light:var(--g-color-private-white-500);--g-color-line-info:var(--g-color-private-blue-450);--g-color-line-positive:var(--g-color-private-green-450);--g-color-line-warning:var(--g-color-private-yellow-450);--g-color-line-danger:var(--g-color-private-red-450);--g-color-line-utility:var(--g-color-private-purple-450);--g-color-line-misc:var(--g-color-private-cool-grey-450);--g-color-sfx-veil:var(--g-color-private-black-600);--g-color-sfx-shadow:var(--g-color-private-black-200);--g-color-sfx-shadow-heavy:var(--g-color-private-black-500);--g-color-sfx-shadow-light:var(--g-color-private-black-200);--g-color-sfx-fade:var(--g-color-private-white-250);--g-color-scroll-track:var(--g-color-base-background);--g-color-scroll-handle:var(--g-color-private-white-150);--g-color-scroll-handle-hover:var(--g-color-private-white-250);--g-color-scroll-corner:var(--g-color-private-white-150);--g-color-infographics-axis:var(--g-color-private-white-150-solid);--g-color-infographics-tooltip-bg:var(--g-color-private-white-opaque-150)}.g-root_theme_light-hc{--g-color-private-blue-50:#3697f11a;--g-color-private-blue-100:#3697f126;--g-color-private-blue-150:#3697f133;--g-color-private-blue-200:#3697f14d;--g-color-private-blue-250:#3697f166;--g-color-private-blue-300:#3697f180;--g-color-private-blue-350:#3697f199;--g-color-private-blue-400:#3697f1b3;--g-color-private-blue-450:#3697f1cc;--g-color-private-blue-500:#3697f1e6;--g-color-private-blue-50-solid:#ebf5fe;--g-color-private-blue-100-solid:#e1effd;--g-color-private-blue-150-solid:#d7eafc;--g-color-private-blue-200-solid:#c3e0fb;--g-color-private-blue-250-solid:#afd5f9;--g-color-private-blue-300-solid:#9bcbf8;--g-color-private-blue-350-solid:#86c1f7;--g-color-private-blue-400-solid:#72b6f5;--g-color-private-blue-450-solid:#5eacf4;--g-color-private-blue-500-solid:#4aa1f2;--g-color-private-blue-550-solid:#3697f1;--g-color-private-blue-600-solid:#328adb;--g-color-private-blue-650-solid:#2f7cc4;--g-color-private-blue-700-solid:#2b6fae;--g-color-private-blue-750-solid:#286198;--g-color-private-blue-800-solid:#245482;--g-color-private-blue-850-solid:#20476b;--g-color-private-blue-900-solid:#1d3955;--g-color-private-blue-950-solid:#192c3f;--g-color-private-blue-1000-solid:#172533;--g-color-private-green-50:#32ba761a;--g-color-private-green-100:#32ba7626;--g-color-private-green-150:#32ba7633;--g-color-private-green-200:#32ba764d;--g-color-private-green-250:#32ba7666;--g-color-private-green-300:#32ba7680;--g-color-private-green-350:#32ba7699;--g-color-private-green-400:#32ba76b3;--g-color-private-green-450:#32ba76cc;--g-color-private-green-500:#32ba76e6;--g-color-private-green-50-solid:#ebf8f1;--g-color-private-green-100-solid:#e0f5ea;--g-color-private-green-150-solid:#d6f1e4;--g-color-private-green-200-solid:#c2ead6;--g-color-private-green-250-solid:#ade3c8;--g-color-private-green-300-solid:#9db;--g-color-private-green-350-solid:#84d6ad;--g-color-private-green-400-solid:#70cf9f;--g-color-private-green-450-solid:#5bc891;--g-color-private-green-500-solid:#47c184;--g-color-private-green-550-solid:#32ba76;--g-color-private-green-600-solid:#2fa96c;--g-color-private-green-650-solid:#2c9862;--g-color-private-green-700-solid:#288758;--g-color-private-green-750-solid:#25764e;--g-color-private-green-800-solid:#264;--g-color-private-green-850-solid:#1f553a;--g-color-private-green-900-solid:#1c4430;--g-color-private-green-950-solid:#183326;--g-color-private-green-1000-solid:#172a21;--g-color-private-yellow-50:#ffbe5c1a;--g-color-private-yellow-100:#ffbe5c26;--g-color-private-yellow-150:#ffbe5c33;--g-color-private-yellow-200:#ffbe5c4d;--g-color-private-yellow-250:#ffbe5c66;--g-color-private-yellow-300:#ffbe5c80;--g-color-private-yellow-350:#ffbe5c99;--g-color-private-yellow-400:#ffbe5cb3;--g-color-private-yellow-450:#ffbe5ccc;--g-color-private-yellow-500:#ffbe5ce6;--g-color-private-yellow-50-solid:#fff9ef;--g-color-private-yellow-100-solid:#fff5e7;--g-color-private-yellow-150-solid:#fff2de;--g-color-private-yellow-200-solid:#ffecce;--g-color-private-yellow-250-solid:#ffe5be;--g-color-private-yellow-300-solid:#ffdfae;--g-color-private-yellow-350-solid:#ffd89d;--g-color-private-yellow-400-solid:#ffd28d;--g-color-private-yellow-450-solid:#ffcb7d;--g-color-private-yellow-500-solid:#ffc56c;--g-color-private-yellow-550-solid:#ffbe5c;--g-color-private-yellow-600-solid:#e7ad55;--g-color-private-yellow-650-solid:#d09b4d;--g-color-private-yellow-700-solid:#b88a46;--g-color-private-yellow-750-solid:#a0793e;--g-color-private-yellow-800-solid:#896837;--g-color-private-yellow-850-solid:#715630;--g-color-private-yellow-900-solid:#594528;--g-color-private-yellow-950-solid:#413421;--g-color-private-yellow-1000-solid:#362b1d;--g-color-private-orange-400-solid:#ffa04d;--g-color-private-orange-500-solid:#ff8519;--g-color-private-orange-600-solid:#e76d02;--g-color-private-orange-650-solid:#d06304;--g-color-private-orange-700-solid:#b85805;--g-color-private-orange-750-solid:#a04e07;--g-color-private-orange-800-solid:#894409;--g-color-private-orange-850-solid:#713a0b;--g-color-private-orange-900-solid:#59300d;--g-color-private-orange-950-solid:#41250e;--g-color-private-orange-1000-solid:#36200f;--g-color-private-red-50:#ff003d1a;--g-color-private-red-100:#ff003d26;--g-color-private-red-150:#ff003d33;--g-color-private-red-200:#ff003d4d;--g-color-private-red-250:#ff003d66;--g-color-private-red-300:#ff003d80;--g-color-private-red-350:#ff003d99;--g-color-private-red-400:#ff003db3;--g-color-private-red-450:#ff003dcc;--g-color-private-red-500:#ff003de6;--g-color-private-red-50-solid:#ffe6ec;--g-color-private-red-100-solid:#ffd9e2;--g-color-private-red-150-solid:#ffccd8;--g-color-private-red-200-solid:#ffb3c5;--g-color-private-red-250-solid:#ff99b1;--g-color-private-red-300-solid:#ff809e;--g-color-private-red-350-solid:#ff668b;--g-color-private-red-400-solid:#ff4d77;--g-color-private-red-450-solid:#ff3364;--g-color-private-red-500-solid:#ff1950;--g-color-private-red-550-solid:#ff003d;--g-color-private-red-600-solid:#e70239;--g-color-private-red-650-solid:#d00334;--g-color-private-red-700-solid:#b80530;--g-color-private-red-750-solid:#a0072c;--g-color-private-red-800-solid:#890928;--g-color-private-red-850-solid:#710a23;--g-color-private-red-900-solid:#590c1f;--g-color-private-red-950-solid:#410e1b;--g-color-private-red-1000-solid:#360e18;--g-color-private-purple-600-solid:#834cb9;--g-color-private-purple-650-solid:#7645a7;--g-color-private-purple-700-solid:#6a3f94;--g-color-private-purple-750-solid:#5d3882;--g-color-private-purple-800-solid:#51326f;--g-color-private-purple-850-solid:#442b5c;--g-color-private-purple-900-solid:#38254a;--g-color-private-purple-950-solid:#2b1e37;--g-color-private-purple-1000-solid:#251b2e;--g-color-private-cool-grey-300-solid:#b5c2cc;--g-color-private-cool-grey-600-solid:#62798c;--g-color-private-cool-grey-650-solid:#596d7e;--g-color-private-cool-grey-700-solid:#506271;--g-color-private-cool-grey-750-solid:#475663;--g-color-private-cool-grey-800-solid:#3f4b56;--g-color-private-cool-grey-850-solid:#363f48;--g-color-private-cool-grey-900-solid:#2d343b;--g-color-private-cool-grey-950-solid:#24282d;--g-color-private-cool-grey-1000-solid:#1f2226;--g-color-text-primary:var(--g-color-text-dark-primary);--g-color-text-complementary:var(--g-color-text-dark-complementary);--g-color-text-secondary:var(--g-color-text-dark-secondary);--g-color-text-hint:var(--g-color-text-dark-hint);--g-color-text-info:var(--g-color-private-blue-650-solid);--g-color-text-positive:var(--g-color-private-green-650-solid);--g-color-text-warning:var(--g-color-private-yellow-700-solid);--g-color-text-danger:var(--g-color-private-red-650-solid);--g-color-text-utility:var(--g-color-private-purple-650-solid);--g-color-text-misc:var(--g-color-private-cool-grey-650-solid);--g-color-text-info-heavy:var(--g-color-private-blue-900-solid);--g-color-text-positive-heavy:var(--g-color-private-green-900-solid);--g-color-text-warning-heavy:var(--g-color-private-orange-900-solid);--g-color-text-danger-heavy:var(--g-color-private-red-900-solid);--g-color-text-utility-heavy:var(--g-color-private-purple-900-solid);--g-color-text-misc-heavy:var(--g-color-private-cool-grey-900-solid);--g-color-text-brand:var(--g-color-private-yellow-700-solid);--g-color-text-brand-heavy:var(--g-color-private-orange-900-solid);--g-color-text-brand-contrast:var(--g-color-text-dark-primary);--g-color-text-link:var(--g-color-private-yellow-700-solid);--g-color-text-link-hover:var(--g-color-private-orange-700-solid);--g-color-text-link-visited:var(--g-color-private-purple-600-solid);--g-color-text-link-visited-hover:var(--g-color-private-purple-850-solid);--g-color-text-dark-primary:var(--g-color-private-black-1000-solid);--g-color-text-dark-complementary:var(--g-color-private-black-850);--g-color-text-dark-secondary:var(--g-color-private-black-700);--g-color-text-dark-hint:var(--g-color-private-black-500);--g-color-text-light-primary:var(--g-color-private-white-1000-solid);--g-color-text-light-complementary:var(--g-color-private-white-850);--g-color-text-light-secondary:var(--g-color-private-white-700);--g-color-text-light-hint:var(--g-color-private-white-500);--g-color-text-inverted-primary:var(--g-color-text-light-primary);--g-color-text-inverted-complementary:var(--g-color-text-light-complementary);--g-color-text-inverted-secondary:var(--g-color-text-light-secondary);--g-color-text-inverted-hint:var(--g-color-text-light-hint);--g-color-base-background:var(--g-color-private-white-1000-solid);--g-color-base-generic:var(--g-color-private-black-150);--g-color-base-generic-hover:var(--g-color-private-black-300);--g-color-base-generic-medium:var(--g-color-private-black-250);--g-color-base-generic-medium-hover:var(--g-color-private-black-350);--g-color-base-generic-accent:var(--g-color-private-black-250);--g-color-base-generic-accent-disabled:var(--g-color-private-black-150);--g-color-base-generic-ultralight:var(--g-color-private-black-50-solid);--g-color-base-simple-hover:var(--g-color-private-black-150);--g-color-base-simple-hover-solid:var(--g-color-private-black-150-solid);--g-color-base-brand:var(--g-color-private-yellow-550-solid);--g-color-base-brand-hover:var(--g-color-private-yellow-650-solid);--g-color-base-selection:var(--g-color-private-yellow-300);--g-color-base-selection-hover:var(--g-color-private-yellow-400);--g-color-base-info-light:var(--g-color-private-blue-250);--g-color-base-info-light-hover:var(--g-color-private-blue-350);--g-color-base-info-medium:var(--g-color-private-blue-400);--g-color-base-info-medium-hover:var(--g-color-private-blue-500);--g-color-base-info-heavy:var(--g-color-private-blue-700-solid);--g-color-base-info-heavy-hover:var(--g-color-private-blue-850-solid);--g-color-base-positive-light:var(--g-color-private-green-250);--g-color-base-positive-light-hover:var(--g-color-private-green-350);--g-color-base-positive-medium:var(--g-color-private-green-400);--g-color-base-positive-medium-hover:var(--g-color-private-green-500);--g-color-base-positive-heavy:var(--g-color-private-green-700-solid);--g-color-base-positive-heavy-hover:var(--g-color-private-green-800-solid);--g-color-base-warning-light:var(--g-color-private-yellow-300);--g-color-base-warning-light-hover:var(--g-color-private-yellow-400);--g-color-base-warning-medium:var(--g-color-private-yellow-400);--g-color-base-warning-medium-hover:var(--g-color-private-yellow-550-solid);--g-color-base-warning-heavy:var(--g-color-private-yellow-600-solid);--g-color-base-warning-heavy-hover:var(--g-color-private-yellow-700-solid);--g-color-base-danger-light:var(--g-color-private-red-250);--g-color-base-danger-light-hover:var(--g-color-private-red-350);--g-color-base-danger-medium:var(--g-color-private-red-400);--g-color-base-danger-medium-hover:var(--g-color-private-red-500);--g-color-base-danger-heavy:var(--g-color-private-red-700-solid);--g-color-base-danger-heavy-hover:var(--g-color-private-red-800-solid);--g-color-base-utility-light:var(--g-color-private-purple-250);--g-color-base-utility-light-hover:var(--g-color-private-purple-350);--g-color-base-utility-medium:var(--g-color-private-purple-400);--g-color-base-utility-medium-hover:var(--g-color-private-purple-500);--g-color-base-utility-heavy:var(--g-color-private-purple-700-solid);--g-color-base-utility-heavy-hover:var(--g-color-private-purple-800-solid);--g-color-base-neutral-light:var(--g-color-private-black-150);--g-color-base-neutral-light-hover:var(--g-color-private-black-250);--g-color-base-neutral-medium:var(--g-color-private-black-300);--g-color-base-neutral-medium-hover:var(--g-color-private-black-400);--g-color-base-neutral-heavy:var(--g-color-private-black-550);--g-color-base-neutral-heavy-hover:var(--g-color-private-black-650);--g-color-base-misc-light:var(--g-color-private-cool-grey-250);--g-color-base-misc-light-hover:var(--g-color-private-cool-grey-350);--g-color-base-misc-medium:var(--g-color-private-cool-grey-400);--g-color-base-misc-medium-hover:var(--g-color-private-cool-grey-500);--g-color-base-misc-heavy:var(--g-color-private-cool-grey-700-solid);--g-color-base-misc-heavy-hover:var(--g-color-private-cool-grey-800-solid);--g-color-base-light:var(--g-color-private-white-1000-solid);--g-color-base-light-hover:var(--g-color-private-white-850);--g-color-base-light-simple-hover:var(--g-color-private-white-300);--g-color-base-light-disabled:var(--g-color-private-white-150);--g-color-base-light-accent-disabled:var(--g-color-private-white-300);--g-color-base-float:var(--g-color-private-white-1000-solid);--g-color-base-float-hover:var(--g-color-private-black-150-solid);--g-color-base-float-medium:var(--g-color-private-black-550-solid);--g-color-base-float-heavy:var(--g-color-private-black-700-solid);--g-color-base-float-accent:var(--g-color-private-white-1000-solid);--g-color-base-float-accent-hover:var(--g-color-private-white-850);--g-color-base-float-announcement:var(--g-color-private-cool-grey-150-solid);--g-color-base-modal:var(--g-color-base-background);--g-color-line-generic:var(--g-color-private-black-200);--g-color-line-generic-hover:var(--g-color-private-black-400);--g-color-line-generic-active:var(--g-color-private-black-700);--g-color-line-generic-accent:var(--g-color-private-black-300);--g-color-line-generic-accent-hover:var(--g-color-private-black-700);--g-color-line-generic-solid:var(--g-color-private-black-200-solid);--g-color-line-brand:var(--g-color-private-yellow-600-solid);--g-color-line-focus:var(--g-color-private-cool-grey-450);--g-color-line-light:var(--g-color-private-white-500);--g-color-line-info:var(--g-color-private-blue-450);--g-color-line-positive:var(--g-color-private-green-450);--g-color-line-warning:var(--g-color-private-yellow-600-solid);--g-color-line-danger:var(--g-color-private-red-450);--g-color-line-utility:var(--g-color-private-purple-450);--g-color-line-misc:var(--g-color-private-cool-grey-450);--g-color-sfx-veil:var(--g-color-private-black-450);--g-color-sfx-shadow:var(--g-color-private-black-300);--g-color-sfx-shadow-heavy:var(--g-color-private-black-600);--g-color-sfx-shadow-light:var(--g-color-private-black-100);--g-color-sfx-fade:var(--g-color-private-white-300);--g-color-scroll-track:var(--g-color-base-background);--g-color-scroll-handle:var(--g-color-private-black-100);--g-color-scroll-handle-hover:var(--g-color-private-black-150);--g-color-scroll-corner:var(--g-color-private-black-100);--g-color-infographics-axis:var(--g-color-private-black-150-solid);--g-color-infographics-tooltip-bg:var(--g-color-private-white-950)}.g-root_theme_dark-hc{--g-color-private-white-50-solid:#1e1d1e;--g-color-private-white-70-solid:#232223;--g-color-private-white-100-solid:#2a292a;--g-color-private-white-150-solid:#363536;--g-color-private-white-200-solid:#414141;--g-color-private-white-250-solid:#4d4d4d;--g-color-private-white-300-solid:#595859;--g-color-private-white-350-solid:#656465;--g-color-private-white-400-solid:#717071;--g-color-private-white-450-solid:#7d7c7d;--g-color-private-white-500-solid:#888;--g-color-private-white-550-solid:#949494;--g-color-private-white-600-solid:#a0a0a0;--g-color-private-white-650-solid:#acacac;--g-color-private-white-700-solid:#b8b8b8;--g-color-private-white-750-solid:#c4c3c4;--g-color-private-white-800-solid:#d0cfd0;--g-color-private-white-850-solid:#d0cfd0;--g-color-private-white-900-solid:#e7e7e7;--g-color-private-white-950-solid:#f3f3f3;--g-color-private-blue-50:#3697f11a;--g-color-private-blue-100:#3697f126;--g-color-private-blue-150:#3697f133;--g-color-private-blue-200:#3697f14d;--g-color-private-blue-250:#3697f166;--g-color-private-blue-300:#3697f180;--g-color-private-blue-350:#3697f199;--g-color-private-blue-400:#3697f1b3;--g-color-private-blue-450:#3697f1cc;--g-color-private-blue-500:#3697f1e6;--g-color-private-blue-50-solid:#161e28;--g-color-private-blue-100-solid:#172533;--g-color-private-blue-150-solid:#192c3f;--g-color-private-blue-200-solid:#1d3955;--g-color-private-blue-250-solid:#20476b;--g-color-private-blue-300-solid:#245482;--g-color-private-blue-350-solid:#286198;--g-color-private-blue-400-solid:#2b6fae;--g-color-private-blue-450-solid:#2f7cc4;--g-color-private-blue-500-solid:#328adb;--g-color-private-blue-550-solid:#3697f1;--g-color-private-blue-600-solid:#4aa1f2;--g-color-private-blue-650-solid:#5eacf4;--g-color-private-blue-700-solid:#72b6f5;--g-color-private-blue-750-solid:#86c1f7;--g-color-private-blue-800-solid:#9bcbf8;--g-color-private-blue-850-solid:#afd5f9;--g-color-private-blue-900-solid:#c3e0fb;--g-color-private-blue-950-solid:#d7eafc;--g-color-private-blue-1000-solid:#e1effd;--g-color-private-green-50:#4db09b1a;--g-color-private-green-100:#4db09b26;--g-color-private-green-150:#4db09b33;--g-color-private-green-200:#4db09b4d;--g-color-private-green-250:#4db09b66;--g-color-private-green-300:#4db09b80;--g-color-private-green-350:#4db09b99;--g-color-private-green-400:#4db09bb3;--g-color-private-green-450:#4db09bcc;--g-color-private-green-500:#4db09be6;--g-color-private-green-50-solid:#182120;--g-color-private-green-100-solid:#1b2927;--g-color-private-green-150-solid:#1e312d;--g-color-private-green-200-solid:#24413b;--g-color-private-green-250-solid:#2a5149;--g-color-private-green-300-solid:#306157;--g-color-private-green-350-solid:#357064;--g-color-private-green-400-solid:#3b8072;--g-color-private-green-450-solid:#419080;--g-color-private-green-500-solid:#47a08d;--g-color-private-green-550-solid:#4db09b;--g-color-private-green-600-solid:#5fb8a5;--g-color-private-green-650-solid:#71c0af;--g-color-private-green-700-solid:#82c8b9;--g-color-private-green-750-solid:#94d0c3;--g-color-private-green-800-solid:#a6d8cd;--g-color-private-green-850-solid:#b8dfd7;--g-color-private-green-900-solid:#cae7e1;--g-color-private-green-950-solid:#dbefeb;--g-color-private-green-1000-solid:#e4f3f0;--g-color-private-yellow-50:#ffbe5c1a;--g-color-private-yellow-100:#ffbe5c26;--g-color-private-yellow-150:#ffbe5c33;--g-color-private-yellow-200:#ffbe5c4d;--g-color-private-yellow-250:#ffbe5c66;--g-color-private-yellow-300:#ffbe5c80;--g-color-private-yellow-350:#ffbe5c99;--g-color-private-yellow-400:#ffbe5cb3;--g-color-private-yellow-450:#ffbe5ccc;--g-color-private-yellow-500:#ffbe5ce6;--g-color-private-yellow-50-solid:#2a2219;--g-color-private-yellow-100-solid:#362b1d;--g-color-private-yellow-150-solid:#413421;--g-color-private-yellow-200-solid:#594528;--g-color-private-yellow-250-solid:#715630;--g-color-private-yellow-300-solid:#896837;--g-color-private-yellow-350-solid:#a0793e;--g-color-private-yellow-400-solid:#b88a46;--g-color-private-yellow-450-solid:#d09b4d;--g-color-private-yellow-500-solid:#e7ad55;--g-color-private-yellow-550-solid:#ffbe5c;--g-color-private-yellow-600-solid:#ffc56c;--g-color-private-yellow-650-solid:#ffcb7d;--g-color-private-yellow-700-solid:#ffd28d;--g-color-private-yellow-750-solid:#ffd89d;--g-color-private-yellow-800-solid:#ffdfae;--g-color-private-yellow-850-solid:#ffe5be;--g-color-private-yellow-900-solid:#ffecce;--g-color-private-yellow-950-solid:#fff2de;--g-color-private-yellow-1000-solid:#fff5e7;--g-color-private-orange-50-solid:#241911;--g-color-private-orange-100-solid:#2d1d11;--g-color-private-orange-150-solid:#362111;--g-color-private-orange-200-solid:#492a10;--g-color-private-orange-250-solid:#5b3210;--g-color-private-orange-300-solid:#6d3a0f;--g-color-private-orange-350-solid:#7f420e;--g-color-private-orange-400-solid:#914a0e;--g-color-private-orange-450-solid:#a4530d;--g-color-private-orange-500-solid:#b65b0d;--g-color-private-orange-700-solid:#d99255;--g-color-private-orange-800-solid:#e4b186;--g-color-private-red-50:#e5325d1a;--g-color-private-red-100:#e5325d26;--g-color-private-red-150:#e5325d33;--g-color-private-red-200:#e5325d4d;--g-color-private-red-250:#e5325d66;--g-color-private-red-300:#e5325d80;--g-color-private-red-350:#e5325d99;--g-color-private-red-400:#e5325db3;--g-color-private-red-450:#e5325dcc;--g-color-private-red-500:#e5325de6;--g-color-private-red-50-solid:#27141a;--g-color-private-red-100-solid:#32161d;--g-color-private-red-150-solid:#3c1821;--g-color-private-red-200-solid:#511b29;--g-color-private-red-250-solid:#661e30;--g-color-private-red-300-solid:#7c2238;--g-color-private-red-350-solid:#91253f;--g-color-private-red-400-solid:#a62847;--g-color-private-red-450-solid:#bb2b4e;--g-color-private-red-500-solid:#d02f56;--g-color-private-red-550-solid:#e5325d;--g-color-private-red-600-solid:#e8476d;--g-color-private-red-650-solid:#ea5b7d;--g-color-private-red-700-solid:#ed708e;--g-color-private-red-750-solid:#ef849e;--g-color-private-red-800-solid:#f299ae;--g-color-private-red-850-solid:#f5adbe;--g-color-private-red-900-solid:#f7c2ce;--g-color-private-red-950-solid:#fad6df;--g-color-private-red-1000-solid:#fbe0e7;--g-color-private-purple-50-solid:#1f1825;--g-color-private-purple-100-solid:#251b2e;--g-color-private-purple-150-solid:#2b1e37;--g-color-private-purple-200-solid:#38254a;--g-color-private-purple-250-solid:#442b5c;--g-color-private-purple-300-solid:#51326f;--g-color-private-purple-350-solid:#5d3882;--g-color-private-purple-400-solid:#6a3f94;--g-color-private-purple-450-solid:#7645a7;--g-color-private-purple-500-solid:#834cb9;--g-color-private-cool-grey-50-solid:#1a1c20;--g-color-private-cool-grey-100-solid:#1e2227;--g-color-private-cool-grey-150-solid:#22272e;--g-color-private-cool-grey-200-solid:#29323b;--g-color-private-cool-grey-250-solid:#313d49;--g-color-private-cool-grey-300-solid:#394957;--g-color-private-cool-grey-350-solid:#415465;--g-color-private-cool-grey-400-solid:#495f73;--g-color-private-cool-grey-450-solid:#506a80;--g-color-private-cool-grey-500-solid:#58758e;--g-color-private-cool-grey-750-solid:#a0b3c4;--g-color-private-cool-grey-800-solid:#b0c0ce;--g-color-text-primary:var(--g-color-text-light-primary);--g-color-text-complementary:var(--g-color-text-light-complementary);--g-color-text-secondary:var(--g-color-text-light-secondary);--g-color-text-hint:var(--g-color-text-light-hint);--g-color-text-info:var(--g-color-private-blue-650-solid);--g-color-text-positive:var(--g-color-private-green-650-solid);--g-color-text-warning:var(--g-color-private-yellow-650-solid);--g-color-text-danger:var(--g-color-private-red-650-solid);--g-color-text-utility:var(--g-color-private-purple-650-solid);--g-color-text-misc:var(--g-color-private-cool-grey-650-solid);--g-color-text-info-heavy:var(--g-color-private-blue-850-solid);--g-color-text-positive-heavy:var(--g-color-private-green-850-solid);--g-color-text-warning-heavy:var(--g-color-private-yellow-850-solid);--g-color-text-danger-heavy:var(--g-color-private-red-850-solid);--g-color-text-utility-heavy:var(--g-color-private-purple-850-solid);--g-color-text-misc-heavy:var(--g-color-private-cool-grey-850-solid);--g-color-text-brand:var(--g-color-private-yellow-600-solid);--g-color-text-brand-heavy:var(--g-color-private-yellow-700-solid);--g-color-text-brand-contrast:var(--g-color-text-dark-primary);--g-color-text-link:var(--g-color-private-yellow-550-solid);--g-color-text-link-hover:var(--g-color-private-orange-550-solid);--g-color-text-link-visited:var(--g-color-private-purple-650-solid);--g-color-text-link-visited-hover:var(--g-color-private-purple-800-solid);--g-color-text-dark-primary:var(--g-color-private-black-1000-solid);--g-color-text-dark-complementary:var(--g-color-private-black-800);--g-color-text-dark-secondary:var(--g-color-private-black-600);--g-color-text-dark-hint:var(--g-color-private-black-400);--g-color-text-light-primary:var(--g-color-private-white-1000-solid);--g-color-text-light-complementary:var(--g-color-private-white-800);--g-color-text-light-secondary:var(--g-color-private-white-600);--g-color-text-light-hint:var(--g-color-private-white-400);--g-color-text-inverted-primary:var(--g-color-text-dark-primary);--g-color-text-inverted-complementary:var(--g-color-text-dark-complementary);--g-color-text-inverted-secondary:var(--g-color-text-dark-secondary);--g-color-text-inverted-hint:var(--g-color-text-dark-hint);--g-color-base-background:#121112;--g-color-base-generic:var(--g-color-private-white-100);--g-color-base-generic-hover:var(--g-color-private-white-250);--g-color-base-generic-medium:var(--g-color-private-white-250);--g-color-base-generic-medium-hover:var(--g-color-private-white-400);--g-color-base-generic-accent:var(--g-color-private-white-200);--g-color-base-generic-accent-disabled:var(--g-color-private-white-150);--g-color-base-generic-ultralight:var(--g-color-private-white-50);--g-color-base-simple-hover:var(--g-color-private-white-250);--g-color-base-simple-hover-solid:var(--g-color-private-white-250-solid);--g-color-base-brand:var(--g-color-private-yellow-550-solid);--g-color-base-brand-hover:var(--g-color-private-yellow-700-solid);--g-color-base-selection:var(--g-color-private-yellow-250);--g-color-base-selection-hover:var(--g-color-private-yellow-400);--g-color-base-info-light:var(--g-color-private-blue-250);--g-color-base-info-light-hover:var(--g-color-private-blue-400);--g-color-base-info-medium:var(--g-color-private-blue-450);--g-color-base-info-medium-hover:var(--g-color-private-blue-600-solid);--g-color-base-info-heavy:var(--g-color-private-blue-700-solid);--g-color-base-info-heavy-hover:var(--g-color-private-blue-850-solid);--g-color-base-positive-light:var(--g-color-private-green-250);--g-color-base-positive-light-hover:var(--g-color-private-green-400);--g-color-base-positive-medium:var(--g-color-private-green-450);--g-color-base-positive-medium-hover:var(--g-color-private-green-600-solid);--g-color-base-positive-heavy:var(--g-color-private-green-700-solid);--g-color-base-positive-heavy-hover:var(--g-color-private-green-850-solid);--g-color-base-warning-light:var(--g-color-private-yellow-250);--g-color-base-warning-light-hover:var(--g-color-private-yellow-400);--g-color-base-warning-medium:var(--g-color-private-yellow-450);--g-color-base-warning-medium-hover:var(--g-color-private-yellow-600-solid);--g-color-base-warning-heavy:var(--g-color-private-yellow-700-solid);--g-color-base-warning-heavy-hover:var(--g-color-private-yellow-850-solid);--g-color-base-danger-light:var(--g-color-private-red-250);--g-color-base-danger-light-hover:var(--g-color-private-red-400);--g-color-base-danger-medium:var(--g-color-private-red-450);--g-color-base-danger-medium-hover:var(--g-color-private-red-600-solid);--g-color-base-danger-heavy:var(--g-color-private-red-700-solid);--g-color-base-danger-heavy-hover:var(--g-color-private-red-850-solid);--g-color-base-utility-light:var(--g-color-private-purple-250);--g-color-base-utility-light-hover:var(--g-color-private-purple-400);--g-color-base-utility-medium:var(--g-color-private-purple-450);--g-color-base-utility-medium-hover:var(--g-color-private-purple-600-solid);--g-color-base-utility-heavy:var(--g-color-private-purple-700-solid);--g-color-base-utility-heavy-hover:var(--g-color-private-purple-850-solid);--g-color-base-neutral-light:var(--g-color-private-white-200);--g-color-base-neutral-light-hover:var(--g-color-private-white-350);--g-color-base-neutral-medium:var(--g-color-private-white-400);--g-color-base-neutral-medium-hover:var(--g-color-private-white-550);--g-color-base-neutral-heavy:var(--g-color-private-white-650);--g-color-base-neutral-heavy-hover:var(--g-color-private-white-750);--g-color-base-misc-light:var(--g-color-private-cool-grey-250);--g-color-base-misc-light-hover:var(--g-color-private-cool-grey-400);--g-color-base-misc-medium:var(--g-color-private-cool-grey-450);--g-color-base-misc-medium-hover:var(--g-color-private-cool-grey-600-solid);--g-color-base-misc-heavy:var(--g-color-private-cool-grey-700-solid);--g-color-base-misc-heavy-hover:var(--g-color-private-cool-grey-850-solid);--g-color-base-light:var(--g-color-private-white-850);--g-color-base-light-hover:var(--g-color-private-white-700);--g-color-base-light-simple-hover:var(--g-color-private-white-150);--g-color-base-light-disabled:var(--g-color-private-white-150);--g-color-base-light-accent-disabled:var(--g-color-private-white-300);--g-color-base-float:var(--g-color-private-white-100-solid);--g-color-base-float-hover:var(--g-color-private-white-200-solid);--g-color-base-float-medium:var(--g-color-private-white-200-solid);--g-color-base-float-heavy:var(--g-color-private-white-300-solid);--g-color-base-float-accent:var(--g-color-private-white-300-solid);--g-color-base-float-accent-hover:var(--g-color-private-white-400-solid);--g-color-base-float-announcement:var(--g-color-private-white-200-solid);--g-color-base-modal:var(--g-color-base-background);--g-color-line-generic:var(--g-color-private-white-150);--g-color-line-generic-hover:var(--g-color-private-white-250);--g-color-line-generic-active:var(--g-color-private-white-600);--g-color-line-generic-accent:var(--g-color-private-white-350);--g-color-line-generic-accent-hover:var(--g-color-private-white-800);--g-color-line-generic-solid:var(--g-color-private-white-150-solid);--g-color-line-brand:var(--g-color-private-yellow-600-solid);--g-color-line-focus:var(--g-color-private-cool-grey-550-solid);--g-color-line-light:var(--g-color-private-white-500);--g-color-line-info:var(--g-color-private-blue-550-solid);--g-color-line-positive:var(--g-color-private-green-550-solid);--g-color-line-warning:var(--g-color-private-yellow-550-solid);--g-color-line-danger:var(--g-color-private-red-550-solid);--g-color-line-utility:var(--g-color-private-purple-550-solid);--g-color-line-misc:var(--g-color-private-cool-grey-550-solid);--g-color-sfx-veil:var(--g-color-private-black-700);--g-color-sfx-shadow:var(--g-color-private-black-200);--g-color-sfx-shadow-heavy:var(--g-color-private-black-400);--g-color-sfx-shadow-light:var(--g-color-private-black-200);--g-color-sfx-fade:var(--g-color-private-white-250);--g-color-scroll-track:var(--g-color-base-background);--g-color-scroll-handle:var(--g-color-private-white-150);--g-color-scroll-handle-hover:var(--g-color-private-white-250);--g-color-scroll-corner:var(--g-color-private-white-150);--g-color-infographics-axis:var(--g-color-private-white-150-solid);--g-color-infographics-tooltip-bg:var(--g-color-private-white-opaque-150)}.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar){scrollbar-color:var(--g-color-scroll-handle) var(--g-color-scroll-track);scrollbar-width:var(--g-scrollbar-width)}.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar) ::-webkit-scrollbar,.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar)::-webkit-scrollbar{background:var(--g-color-scroll-track);height:var(--g-scrollbar-width);width:var(--g-scrollbar-width)}.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar) ::-webkit-scrollbar-track,.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar)::-webkit-scrollbar-track{background:var(--g-color-scroll-track)}.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar) ::-webkit-scrollbar-corner,.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar)::-webkit-scrollbar-corner{background:var(--g-color-scroll-corner)}.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar) ::-webkit-scrollbar-thumb,.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar)::-webkit-scrollbar-thumb{background:var(--g-color-scroll-handle)}.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar) ::-webkit-scrollbar-thumb:hover,.g-root:not(.g-root_mobile):not(.g-root_native-scrollbar)::-webkit-scrollbar-thumb:hover{background:var(--g-color-scroll-handle-hover)}@keyframes g-loading-animation{0%{background-position:-12px 0}to{background-position:0 0}}:root:has(body.g-root_theme_light),:root:has(body.g-root_theme_light-hc){color-scheme:light}:root:has(body.g-root_theme_dark),:root:has(body.g-root_theme_dark-hc){color-scheme:dark}:root{--data-table-header-vertical-padding:5px;--data-table-cell-vertical-padding:5px;--data-table-cell-horizontal-padding:10px;--data-table-cell-border-padding:var(--data-table-cell-horizontal-padding);--data-table-cell-align:top;--data-table-head-align:top;--data-table-row-height:30px;--data-table-sort-icon-space:18px;--data-table-sort-icon-opacity-inactive:0.15;--data-table-sort-icon-color:inherit}.data-table{box-sizing:border-box;position:relative}.data-table__box{box-sizing:border-box;height:100%;width:100%}.data-table__box_sticky-head_moving{overflow:visible;position:relative;z-index:0}.data-table__box_sticky-head_moving .data-table__th{border-bottom:0;border-top:0;padding-bottom:0;padding-top:0}.data-table__box_sticky-head_moving .data-table__head-cell{display:block;height:0;overflow:hidden}.data-table__box_sticky-head_moving .data-table__row_header-data{visibility:hidden}.data-table__box_sticky-footer_fixed,.data-table__box_sticky-head_fixed{overflow:auto}.data-table__table{border-collapse:collapse;table-layout:fixed}.data-table__table_sticky{background:var(--data-table-color-base);width:100%}.data-table__row{height:30px;height:var(--data-table-row-height)}.data-table__th{border:1px solid var(--data-table-border-color);box-sizing:border-box;cursor:default;font-weight:500;padding:5px 10px;padding:var(--data-table-header-vertical-padding) var(--data-table-cell-horizontal-padding);position:relative;text-align:left;vertical-align:top;vertical-align:var(--data-table-head-align)}.data-table__th_sortable{cursor:pointer}.data-table__th_sortable .data-table__head-cell{padding-right:18px;padding-right:var(--data-table-sort-icon-space)}.data-table__th_sortable.data-table__th_align_right .data-table__head-cell{padding-left:18px;padding-left:var(--data-table-sort-icon-space);padding-right:0}.data-table__th_sortable.data-table__th_align_right .data-table__sort-icon{left:0;right:auto;transform:translateY(-50%) scaleX(-1)}.data-table__td{border:1px solid var(--data-table-border-color);box-sizing:border-box;overflow:hidden;padding:5px 10px;padding:var(--data-table-cell-vertical-padding) var(--data-table-cell-horizontal-padding);text-overflow:ellipsis;vertical-align:top;vertical-align:var(--data-table-cell-align);white-space:nowrap}.data-table__td_index,.data-table__th_index{text-align:right}.data-table__td_align_left,.data-table__th_align_left{text-align:left}.data-table__td_align_center,.data-table__th_align_center{text-align:center}.data-table__td_align_right,.data-table__th_align_right{text-align:right}.data-table__td:first-child,.data-table__th:first-child{padding-left:10px;padding-left:var(--data-table-cell-border-padding)}.data-table__td:last-child,.data-table__th:last-child{padding-right:10px;padding-right:var(--data-table-cell-border-padding)}.data-table__index{text-align:right}.data-table__head-cell{box-sizing:border-box;display:inline-block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.data-table__error{padding:20px;white-space:pre-wrap}.data-table__sort-icon{color:inherit;color:var(--data-table-sort-icon-color);display:inline-flex;position:absolute;right:0;top:50%;transform:translateY(-50%)}.data-table__sort-icon:after{content:attr(data-index);font-size:8px;left:100%;position:absolute;top:-5px}.data-table__sort-icon_shadow{opacity:.15;opacity:var(--data-table-sort-icon-opacity-inactive)}.data-table__sort-icon_shadow:after{content:none}.data-table__icon{vertical-align:top}.data-table__no-data{background:var(--data-table-color-stripe)}.data-table__sticky_fixed{left:0;overflow:hidden;position:absolute;right:0;z-index:1}.data-table__sticky_fixed.data-table__sticky_head{top:0}.data-table__sticky_fixed.data-table__sticky_footer{bottom:0}.data-table__sticky_moving{margin-bottom:-1px;position:-webkit-sticky;position:sticky;z-index:1}.data-table_striped-rows .data-table__row_odd{background:var(--data-table-color-stripe)}.data-table_highlight-rows .data-table__row:hover{background:var(--data-table-color-hover-area)}.data-table_header_multiline .data-table__head-cell{white-space:normal}.data-table_header_pre .data-table__head-cell{white-space:pre}.data-table__foot{background:var(--data-table-color-footer-area)}.data-table__foot_has-sticky-footer_moving{visibility:hidden}.data-table_theme_yandex-cloud{--data-table-color-base:var(--g-color-base-background,var(--yc-color-base-background));--data-table-color-stripe:var( --g-color-base-generic-ultralight,var(--yc-color-base-generic-ultralight) );--data-table-border-color:var( --g-color-base-generic-hover,var(--yc-color-base-generic-hover) );--data-table-color-hover-area:var( --g-color-base-simple-hover,var(--yc-color-base-simple-hover) );--data-table-color-footer-area:var(--data-table-color-base)}.data-table_theme_legacy{--data-table-color-base:#fff;--data-table-color-stripe:#00000008;--data-table-border-color:#ddd;--data-table-color-hover-area:#ffeba0;--data-table-color-footer-area:var(--data-table-color-base)}.data-table__resize-handler{background-color:var(--g-color-base-generic);cursor:col-resize;height:100%;position:absolute;right:0;top:0;visibility:hidden;width:6px}.data-table__resize-handler_resizing,.data-table__th:hover>.data-table__resize-handler{visibility:visible}.ydb-error-boundary{align-items:flex-start;display:flex;flex-direction:row;font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);padding:20px}.ydb-error-boundary__illustration{height:230px;margin-right:20px;width:230px}.ydb-error-boundary__error-title{font-size:var(--g-text-subheader-3-font-size);line-height:var(--g-text-subheader-3-line-height);margin-top:44px}.ydb-error-boundary__error-description{margin-top:12px}.ydb-error-boundary__show-details{margin-top:8px}.ydb-error-boundary__error-details{background-color:var(--g-color-base-generic-ultralight);border:1px solid var(--g-color-line-generic);padding:13px 18px}.ydb-error-boundary__actions{display:flex;flex-direction:row;gap:10px;margin-top:20px}.g-disclosure_size_m .g-disclosure__trigger{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.g-disclosure_size_l .g-disclosure__trigger{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.g-disclosure_size_xl .g-disclosure__trigger{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.g-disclosure__trigger{align-items:center;background:none;border:none;border-radius:var(--g-focus-border-radius);color:inherit;cursor:pointer;display:flex;flex-flow:row nowrap;flex-shrink:0;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);font-weight:inherit;gap:8px;line-height:inherit;outline:none;padding:0}.g-disclosure__trigger:focus-visible{outline:2px solid var(--g-color-line-focus)}.g-disclosure__trigger_arrow_end{flex-direction:row-reverse}.g-disclosure__trigger_disabled{color:var(--g-color-text-secondary);cursor:auto}.g-disclosure__content{display:none}.g-disclosure__content_visible{display:block}.g-disclosure__content.g-disclosure_exit_active{animation-duration:.1s;animation-name:g-disclosure-collapsed;display:block;opacity:0}.g-disclosure__content.g-disclosure_enter_active{animation-duration:.2s;animation-name:g-disclosure-expanded}@keyframes g-disclosure-expanded{0%{opacity:.4}to{opacity:1}}@keyframes g-disclosure-collapsed{0%{opacity:1}to{opacity:0}}.g-icon{color:inherit;line-height:0;vertical-align:top}.g-arrow-toggle{display:inline-block;transition:transform .1s ease-out;vertical-align:middle}.g-arrow-toggle_direction_bottom{transform:matrix(1,0,0,1,0,0)}.g-arrow-toggle_direction_left{transform:matrix(0,1,-1,0,0,0)}.g-arrow-toggle_direction_top{transform:matrix(-1,0,0,-1,0,0)}.g-arrow-toggle_direction_right{transform:matrix(0,-1,1,0,0,0)}.g-button{--_--text-color:var(--g-color-text-primary);--_--text-color-hover:var(--_--text-color);--_--background-color:#0000;--_--background-color-hover:var(--g-color-base-simple-hover);--_--border-width:0;--_--border-color:currentColor;--_--focus-outline-color:var(--g-color-line-focus);--_--focus-outline-offset:0;--_--font-size:var(--g-text-body-1-font-size);-webkit-tap-highlight-color:rgba(0,0,0,0);background:none;background:#0000;border:none;box-sizing:border-box;color:inherit;color:var(--_--text-color);color:var(--g-button-text-color,var(--_--text-color));cursor:pointer;display:inline-flex;font-family:var(--g-text-body-font-family);font-size:inherit;font-size:var(--_--font-size);font-size:var(--g-button-font-size,var(--_--font-size));font-weight:var(--g-text-body-font-weight);gap:var(--_--icon-offset);gap:var(--g-button-icon-offset,var(--_--icon-offset));height:var(--_--height);height:var(--g-button-height,var(--_--height));justify-content:center;line-height:var(--_--height);line-height:var(--g-button-height,var(--_--height));outline:none;overflow:visible;padding:0;padding:0 var(--g-button-padding,var(--_--padding));position:relative;text-align:center;text-decoration:none;touch-action:manipulation;transform:scale(1);transition:transform .1s ease-out,color .15s linear;-webkit-user-select:none;user-select:none;white-space:nowrap}.g-button:before{background-color:var(--_--background-color);background-color:var(--g-button-background-color,var(--_--background-color));border:var(--g-button-border-width,var(--_--border-width)) var(--g-button-border-style,solid) var(--g-button-border-color,var(--_--border-color));content:"";inset:0;position:absolute;transition:background-color .15s linear;z-index:-1}.g-button:hover{color:var(--_--text-color-hover);color:var(--g-button-text-color-hover,var(--_--text-color-hover))}.g-button:hover:before{background-color:var(--_--background-color-hover);background-color:var(--g-button-background-color-hover,var(--_--background-color-hover))}.g-button:focus-visible:before{outline:var(--_--focus-outline-color) solid 2px;outline:var(--g-button-focus-outline-color,var(--_--focus-outline-color)) var(--g-button-focus-outline-style,solid) var(--g-button-focus-outline-width,2px);outline-offset:var(--_--focus-outline-offset);outline-offset:var(--g-button-focus-outline-offset,var(--_--focus-outline-offset))}.g-button:after{content:"";inset:0;position:absolute;transform:scale(1);transition:none;z-index:-1}.g-button:active{transform:scale(.96);transition:none}.g-button:active:after{transform:scale(1.042)}.g-button_size_xs{--_--height:20px;--_--border-radius:var(--g-border-radius-xs);--_--padding:6px;--_--icon-size:12px;--_--icon-offset:4px}.g-button_size_s{--_--height:24px;--_--border-radius:var(--g-border-radius-s);--_--padding:8px;--_--icon-size:16px;--_--icon-offset:4px}.g-button_size_m{--_--height:28px;--_--border-radius:var(--g-border-radius-m);--_--padding:12px;--_--icon-size:16px;--_--icon-offset:8px}.g-button_size_l{--_--height:36px;--_--border-radius:var(--g-border-radius-l);--_--padding:16px;--_--icon-size:16px;--_--icon-offset:8px}.g-button_size_xl{--_--height:44px;--_--border-radius:var(--g-border-radius-xl);--_--padding:24px;--_--icon-size:20px;--_--icon-offset:12px;--_--font-size:var(--g-text-body-2-font-size)}.g-button_view_normal{--_--background-color:var(--g-color-base-generic);--_--background-color-hover:var(--g-color-base-generic-hover)}.g-button_view_action{--_--text-color:var(--g-color-text-brand-contrast);--_--background-color:var(--g-color-base-brand);--_--background-color-hover:var(--g-color-base-brand-hover);--_--focus-outline-color:var(--g-color-base-brand);--_--focus-outline-offset:1px}.g-button_view_outlined{--_--border-width:1px;--_--border-color:var(--g-color-line-generic)}.g-button_view_outlined-info{--_--text-color:var(--g-color-text-info);--_--border-width:1px;--_--border-color:var(--g-color-line-info)}.g-button_view_outlined-success{--_--text-color:var(--g-color-text-positive);--_--border-width:1px;--_--border-color:var(--g-color-line-positive)}.g-button_view_outlined-warning{--_--text-color:var(--g-color-text-warning);--_--border-width:1px;--_--border-color:var(--g-color-line-warning)}.g-button_view_outlined-danger{--_--text-color:var(--g-color-text-danger);--_--border-width:1px;--_--border-color:var(--g-color-line-danger)}.g-button_view_outlined-utility{--_--text-color:var(--g-color-text-utility);--_--border-width:1px;--_--border-color:var(--g-color-line-utility)}.g-button_view_outlined-action{--_--text-color:var(--g-color-text-brand);--_--border-width:1px;--_--border-color:var(--g-color-line-brand)}.g-button_view_raised{--_--background-color-hover:var(--g-color-base-float-hover);background:var(--g-color-base-float)}.g-button_view_raised:before{box-shadow:0 3px 5px var(--g-color-sfx-shadow)}.g-button_view_raised:active:before{box-shadow:0 1px 2px var(--g-color-sfx-shadow)}.g-button_view_flat-secondary{--_--text-color:var(--g-color-text-secondary);--_--text-color-hover:var(--g-color-text-primary)}.g-button_view_flat-info{--_--text-color:var(--g-color-text-info)}.g-button_view_flat-success{--_--text-color:var(--g-color-text-positive)}.g-button_view_flat-warning{--_--text-color:var(--g-color-text-warning)}.g-button_view_flat-danger{--_--text-color:var(--g-color-text-danger)}.g-button_view_flat-utility{--_--text-color:var(--g-color-text-utility)}.g-button_view_flat-action{--_--text-color:var(--g-color-text-brand)}.g-button_view_normal-contrast{--_--text-color:var(--g-color-text-dark-primary);--_--background-color:var(--g-color-base-light);--_--background-color-hover:var(--g-color-base-light-hover);--_--focus-outline-color:var(--g-color-line-light)}.g-button_view_outlined-contrast{--_--text-color:var(--g-color-text-light-primary);--_--background-color-hover:var(--g-color-base-light-simple-hover);--_--border-width:1px;--_--border-color:var(--g-color-line-light);--_--focus-outline-color:var(--g-color-line-light)}.g-button_view_flat-contrast{--_--text-color:var(--g-color-text-light-primary);--_--background-color-hover:var(--g-color-base-light-simple-hover);--_--focus-outline-color:var(--g-color-line-light)}.g-button.g-button_pin_round-round.g-button{border-radius:var(--_--border-radius);border-radius:var(--g-button-border-radius,var(--_--border-radius))}.g-button.g-button_pin_brick-brick.g-button{border-radius:0}.g-button.g-button_pin_clear-clear.g-button{border-inline:0;border-radius:0}.g-button.g-button_pin_circle-circle.g-button{border-radius:100px}.g-button.g-button_pin_round-brick.g-button{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-end-start-radius:var(--g-button-border-radius,var(--_--border-radius));border-start-end-radius:0;border-start-start-radius:var(--_--border-radius);border-start-start-radius:var(--g-button-border-radius,var(--_--border-radius))}.g-button.g-button_pin_brick-round.g-button{border-end-end-radius:var(--_--border-radius);border-end-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-end-start-radius:0;border-start-end-radius:var(--_--border-radius);border-start-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-start-start-radius:0}.g-button.g-button_pin_round-clear.g-button{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-end-start-radius:var(--g-button-border-radius,var(--_--border-radius));border-inline-end:0;border-start-end-radius:0;border-start-start-radius:var(--_--border-radius);border-start-start-radius:var(--g-button-border-radius,var(--_--border-radius))}.g-button.g-button_pin_clear-round.g-button{border-end-end-radius:var(--_--border-radius);border-end-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-end-start-radius:0;border-inline-start:0;border-start-end-radius:var(--_--border-radius);border-start-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-start-start-radius:0}.g-button.g-button_pin_brick-clear.g-button{border-inline-end:0;border-radius:0}.g-button.g-button_pin_clear-brick.g-button{border-inline-start:0;border-radius:0}.g-button.g-button_pin_circle-brick.g-button{border-end-end-radius:0;border-end-start-radius:100px;border-start-end-radius:0;border-start-start-radius:100px}.g-button.g-button_pin_brick-circle.g-button{border-end-end-radius:100px;border-end-start-radius:0;border-start-end-radius:100px;border-start-start-radius:0}.g-button.g-button_pin_circle-clear.g-button{border-end-end-radius:0;border-end-start-radius:100px;border-inline-end:0;border-start-end-radius:0;border-start-start-radius:100px}.g-button.g-button_pin_clear-circle.g-button{border-end-end-radius:100px;border-end-start-radius:0;border-inline-start:0;border-start-end-radius:100px;border-start-start-radius:0}.g-button.g-button_pin_round-round:before{border-radius:var(--_--border-radius);border-radius:var(--g-button-border-radius,var(--_--border-radius))}.g-button.g-button_pin_brick-brick:before{border-radius:0}.g-button.g-button_pin_clear-clear:before{border-inline:0;border-radius:0}.g-button.g-button_pin_circle-circle:before{border-radius:100px}.g-button.g-button_pin_round-brick:before{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-end-start-radius:var(--g-button-border-radius,var(--_--border-radius));border-start-end-radius:0;border-start-start-radius:var(--_--border-radius);border-start-start-radius:var(--g-button-border-radius,var(--_--border-radius))}.g-button.g-button_pin_brick-round:before{border-end-end-radius:var(--_--border-radius);border-end-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-end-start-radius:0;border-start-end-radius:var(--_--border-radius);border-start-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-start-start-radius:0}.g-button.g-button_pin_round-clear:before{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-end-start-radius:var(--g-button-border-radius,var(--_--border-radius));border-inline-end:0;border-start-end-radius:0;border-start-start-radius:var(--_--border-radius);border-start-start-radius:var(--g-button-border-radius,var(--_--border-radius))}.g-button.g-button_pin_clear-round:before{border-end-end-radius:var(--_--border-radius);border-end-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-end-start-radius:0;border-inline-start:0;border-start-end-radius:var(--_--border-radius);border-start-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-start-start-radius:0}.g-button.g-button_pin_brick-clear:before{border-inline-end:0;border-radius:0}.g-button.g-button_pin_clear-brick:before{border-inline-start:0;border-radius:0}.g-button.g-button_pin_circle-brick:before{border-end-end-radius:0;border-end-start-radius:100px;border-start-end-radius:0;border-start-start-radius:100px}.g-button.g-button_pin_brick-circle:before{border-end-end-radius:100px;border-end-start-radius:0;border-start-end-radius:100px;border-start-start-radius:0}.g-button.g-button_pin_circle-clear:before{border-end-end-radius:0;border-end-start-radius:100px;border-inline-end:0;border-start-end-radius:0;border-start-start-radius:100px}.g-button.g-button_pin_clear-circle:before{border-end-end-radius:100px;border-end-start-radius:0;border-inline-start:0;border-start-end-radius:100px;border-start-start-radius:0}.g-button.g-button_pin_round-round:after{border-radius:var(--_--border-radius);border-radius:var(--g-button-border-radius,var(--_--border-radius))}.g-button.g-button_pin_brick-brick:after{border-radius:0}.g-button.g-button_pin_clear-clear:after{border-inline:0;border-radius:0}.g-button.g-button_pin_circle-circle:after{border-radius:100px}.g-button.g-button_pin_round-brick:after{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-end-start-radius:var(--g-button-border-radius,var(--_--border-radius));border-start-end-radius:0;border-start-start-radius:var(--_--border-radius);border-start-start-radius:var(--g-button-border-radius,var(--_--border-radius))}.g-button.g-button_pin_brick-round:after{border-end-end-radius:var(--_--border-radius);border-end-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-end-start-radius:0;border-start-end-radius:var(--_--border-radius);border-start-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-start-start-radius:0}.g-button.g-button_pin_round-clear:after{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-end-start-radius:var(--g-button-border-radius,var(--_--border-radius));border-inline-end:0;border-start-end-radius:0;border-start-start-radius:var(--_--border-radius);border-start-start-radius:var(--g-button-border-radius,var(--_--border-radius))}.g-button.g-button_pin_clear-round:after{border-end-end-radius:var(--_--border-radius);border-end-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-end-start-radius:0;border-inline-start:0;border-start-end-radius:var(--_--border-radius);border-start-end-radius:var(--g-button-border-radius,var(--_--border-radius));border-start-start-radius:0}.g-button.g-button_pin_brick-clear:after{border-inline-end:0;border-radius:0}.g-button.g-button_pin_clear-brick:after{border-inline-start:0;border-radius:0}.g-button.g-button_pin_circle-brick:after{border-end-end-radius:0;border-end-start-radius:100px;border-start-end-radius:0;border-start-start-radius:100px}.g-button.g-button_pin_brick-circle:after{border-end-end-radius:100px;border-end-start-radius:0;border-start-end-radius:100px;border-start-start-radius:0}.g-button.g-button_pin_circle-clear:after{border-end-end-radius:0;border-end-start-radius:100px;border-inline-end:0;border-start-end-radius:0;border-start-start-radius:100px}.g-button.g-button_pin_clear-circle:after{border-end-end-radius:100px;border-end-start-radius:0;border-inline-start:0;border-start-end-radius:100px;border-start-start-radius:0}.g-button__text{display:inline-block;white-space:nowrap}.g-button__icon{display:inline-block;height:var(--_--height);height:var(--g-button-height,var(--_--height));margin:0 calc((var(--g-button-height, var(--_--height)) - var(--g-button-icon-size, var(--_--icon-size)))/2*-1);pointer-events:none;position:relative;width:var(--_--height);width:var(--g-button-height,var(--_--height))}.g-button__icon:after{content:" ";visibility:hidden}.g-button__icon-inner{align-items:center;display:flex;inset:0;justify-content:center;position:absolute}.g-button__icon_side_start{order:-1}.g-button__icon_side_end{order:1}.g-button:has(.g-button__icon:only-child){--_--padding:0}.g-button:has(.g-button__icon:only-child):not(.g-button_width_max){width:var(--_--height);width:var(--g-button-height,var(--_--height))}.g-button_disabled{cursor:default;pointer-events:none}.g-button_disabled:not(.g-button_loading){--_--text-color:var(--g-color-text-hint);--_--background-color:var(--g-color-base-generic-accent-disabled);--_--background-color-hover:var(--g-color-base-generic-accent-disabled);--_--border-width:0}.g-button_disabled:not(.g-button_loading):is(.g-button_view_normal-contrast,.g-button_view_outlined-contrast){--_--text-color:var(--g-color-text-light-secondary);--_--background-color:var(--g-color-base-light-disabled);--_--background-color-hover:var(--g-color-base-light-disabled)}.g-button_disabled:not(.g-button_loading):is(.g-button_view_flat,.g-button_view_flat-secondary,.g-button_view_flat-info,.g-button_view_flat-success,.g-button_view_flat-warning,.g-button_view_flat-danger,.g-button_view_flat-utility,.g-button_view_flat-action,.g-button_view_flat-contrast){--_--text-color:var(--g-color-text-hint);--_--background-color:#0000;--_--background-color-hover:#0000}.g-button_disabled:not(.g-button_loading).g-button_view_flat-contrast{--_--text-color:var(--g-color-text-light-hint)}.g-button_disabled:active{transform:scale(1)}.g-button_selected:not(.g-button_view_outlined-contrast){--_--border-width:0}.g-button_selected:not(.g-button_view_normal-contrast,.g-button_view_flat-contrast,.g-button_view_outlined-contrast){--_--text-color:var(--g-color-text-brand-heavy);--_--background-color:var(--g-color-base-selection);--_--background-color-hover:var(--g-color-base-selection-hover)}.g-button_selected.g-button_view_flat-info,.g-button_selected.g-button_view_outlined-info{--_--text-color:var(--g-color-text-info-heavy);--_--background-color:var(--g-color-base-info-light);--_--background-color-hover:var(--g-color-base-info-light-hover)}.g-button_selected.g-button_view_flat-success,.g-button_selected.g-button_view_outlined-success{--_--text-color:var(--g-color-text-positive-heavy);--_--background-color:var(--g-color-base-positive-light);--_--background-color-hover:var(--g-color-base-positive-light-hover)}.g-button_selected.g-button_view_flat-warning,.g-button_selected.g-button_view_outlined-warning{--_--text-color:var(--g-color-text-warning-heavy);--_--background-color:var(--g-color-base-warning-light);--_--background-color-hover:var(--g-color-base-warning-light-hover)}.g-button_selected.g-button_view_flat-danger,.g-button_selected.g-button_view_outlined-danger{--_--text-color:var(--g-color-text-danger-heavy);--_--background-color:var(--g-color-base-danger-light);--_--background-color-hover:var(--g-color-base-danger-light-hover)}.g-button_selected.g-button_view_flat-utility,.g-button_selected.g-button_view_outlined-utility{--_--text-color:var(--g-color-text-utility-heavy);--_--background-color:var(--g-color-base-utility-light);--_--background-color-hover:var(--g-color-base-utility-light-hover)}.g-button_loading:before{animation:g-loading-animation .5s linear infinite;background-clip:padding-box;background-image:repeating-linear-gradient(-45deg,var(--_--background-color),var(--_--background-color) 4px,var(--_--background-color-hover) 4px,var(--_--background-color-hover) 8px);background-image:repeating-linear-gradient(-45deg,var(--g-button-background-color,var(--_--background-color)),var(--g-button-background-color,var(--_--background-color)) 4px,var(--g-button-background-color-hover,var(--_--background-color-hover)) 4px,var(--g-button-background-color-hover,var(--_--background-color-hover)) 8px);background-size:150%}.g-button_width_auto{max-width:100%}.g-button_width_max{width:100%}.g-button_width_auto .g-button__text,.g-button_width_max .g-button__text{display:block;overflow:hidden;text-overflow:ellipsis}.gc-help-popover__button{background:none;border:none;color:inherit;color:var(--g-color-text-hint);cursor:pointer;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);outline:none;padding:0}.gc-help-popover__button:focus-visible{border-radius:50%;outline:2px solid var(--g-color-line-focus)}.g-popover{display:inline-block;position:relative}.g-popover:not(.g-popover_disabled){cursor:pointer}.g-popover__handler{display:inline-block}.g-popover__tooltip{--_--padding:16px;--_--close-offset:8px;--_--close-size:24px}.g-popover__tooltip-popup-content{box-sizing:border-box;cursor:default;max-width:300px;max-width:var(--g-popover-max-width,300px);min-height:40px;padding:var(--g-popover-padding,var(--_--padding))}.g-popover__tooltip-title{display:inline-flex;font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height);margin:0 0 12px}.g-popover__tooltip-buttons{display:flex;flex-wrap:wrap;gap:5px;margin-block-start:20px}.g-popover__tooltip-button{flex:1 1}.g-popover__tooltip-close{inset-block-start:var(--_--close-offset);inset-inline-end:var(--_--close-offset);position:absolute}.g-popover__tooltip-content{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height);overflow-wrap:break-word}.g-popover__tooltip-content_secondary{opacity:.7}.g-popover__tooltip-links>*{margin-block-start:8px}.g-popover__tooltip-links>:first-child{margin-block-start:0}.g-popover__tooltip-content+.g-popover__tooltip-links>:first-child{margin-block-start:12px}.g-popover__tooltip-link{display:inline-block;font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.g-popover__tooltip_theme_announcement .g-popover__tooltip_theme_announcement,.g-popover__tooltip_theme_announcement.g-popover__tooltip_theme_info,.g-popover__tooltip_theme_info .g-popover__tooltip_theme_announcement,.g-popover__tooltip_theme_info.g-popover__tooltip_theme_info{color:var(--g-color-text-primary)}.g-popover__tooltip_force-links-appearance.g-popover__tooltip_theme_info .g-popover__tooltip-content a:not(.g-button),.g-popover__tooltip_theme_announcement .g-popover__tooltip-content a:not(.g-button){color:var(--g-color-text-link);text-decoration:none}.g-popover__tooltip_force-links-appearance.g-popover__tooltip_theme_info .g-popover__tooltip-content a:not(.g-button):hover,.g-popover__tooltip_theme_announcement .g-popover__tooltip-content a:not(.g-button):hover{color:var(--g-color-text-link-hover)}.g-popover__tooltip_theme_announcement{--g-popup-background-color:var(--g-color-base-simple-hover-solid);--g-popup-border-color:var(--g-color-base-simple-hover-solid)}.g-popover__tooltip_theme_special{--g-popup-background-color:var(--g-color-base-brand);--g-popup-border-color:var(--g-color-base-brand);color:var(--g-color-text-light-primary)}.g-popover__tooltip_theme_special .g-popover__tooltip-content a:not(.g-button){color:var(--g-color-text-light-primary);font-weight:var(--g-text-accent-font-weight)}.g-popover__tooltip_theme_special .g-popover__tooltip-content a:not(.g-button):hover{color:var(--g-color-text-light-secondary)}.g-popover__tooltip_theme_special .g-link{color:var(--g-color-text-light-primary)}.g-popover__tooltip_theme_special .g-link:hover{color:var(--g-color-text-light-secondary)}.g-popover__tooltip_size_l{--_--padding:24px}.g-popover__tooltip_size_l .g-popover__tooltip-title{font-size:var(--g-text-header-1-font-size);font-weight:var(--g-text-header-font-weight);line-height:var(--g-text-header-1-line-height)}.g-popover__tooltip_size_l .g-popover__tooltip-content{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.g-popover__tooltip_with-close .g-popover__tooltip-content,.g-popover__tooltip_with-close .g-popover__tooltip-title{padding-inline-end:calc(var(--_--close-offset) + var(--_--close-size) - var(--_--padding))}.g-popup{--_--background-color:var(--g-popup-background-color,var(--g-color-base-float));--_--border-color:var(--g-popup-border-color,var(--g-color-line-generic-solid));--_--border-width:var(--g-popup-border-width,1px);visibility:hidden;z-index:1000}.g-popup_exit_active,.g-popup_open{visibility:visible}.g-popup_exit_active[data-popper-placement*=bottom] .g-popup__content{animation-name:g-popup-bottom}.g-popup_exit_active[data-popper-placement*=top] .g-popup__content{animation-name:g-popup-top}.g-popup_exit_active[data-popper-placement*=left] .g-popup__content{animation-name:g-popup-left}.g-popup_exit_active[data-popper-placement*=right] .g-popup__content{animation-name:g-popup-right}.g-popup_appear_active[data-popper-placement*=bottom] .g-popup__content,.g-popup_enter_active[data-popper-placement*=bottom] .g-popup__content{animation-name:g-popup-bottom-open}.g-popup_appear_active[data-popper-placement*=top] .g-popup__content,.g-popup_enter_active[data-popper-placement*=top] .g-popup__content{animation-name:g-popup-top-open}.g-popup_appear_active[data-popper-placement*=left] .g-popup__content,.g-popup_enter_active[data-popper-placement*=left] .g-popup__content{animation-name:g-popup-left-open}.g-popup_appear_active[data-popper-placement*=right] .g-popup__content,.g-popup_enter_active[data-popper-placement*=right] .g-popup__content{animation-name:g-popup-right-open}.g-popup[data-popper-placement*=bottom] .g-popup__arrow{inset-block-start:-9px}.g-popup[data-popper-placement*=top] .g-popup__arrow{inset-block-end:-9px}.g-popup[data-popper-placement*=top] .g-popup__arrow-content{transform:rotate(180deg)}.g-popup[data-popper-placement*=left] .g-popup__arrow{right:-9px}.g-popup[data-popper-placement*=left] .g-popup__arrow-content{transform:rotate(90deg)}.g-popup[data-popper-placement*=right] .g-popup__arrow{left:-9px}.g-popup[data-popper-placement*=right] .g-popup__arrow-content{transform:rotate(-90deg)}.g-popup__content{animation-duration:.1s;animation-fill-mode:forwards;animation-timing-function:ease-out;background-color:var(--_--background-color);border-radius:4px;box-shadow:0 0 0 var(--_--border-width) var(--_--border-color),0 8px 20px var(--_--border-width) var(--g-color-sfx-shadow);outline:none;position:relative}.g-popup__content>.g-popup__arrow+*,.g-popup__content>:first-child:not(.g-popup__arrow){border-start-end-radius:inherit;border-start-start-radius:inherit}.g-popup__content>:last-child{border-end-end-radius:inherit;border-end-start-radius:inherit}.g-popup__arrow-content{display:flex;height:18px;overflow:hidden;position:relative;width:18px}.g-popup__arrow-circle-wrapper{background-color:initial;height:9px;overflow:hidden;position:relative;width:9px}.g-popup__arrow-circle{border-radius:50%;box-shadow:inset 0 0 0 calc(5px - var(--_--border-width)) var(--_--background-color),inset 0 0 0 5px var(--_--border-color);box-sizing:border-box;height:30px;position:absolute;width:28px}.g-popup__arrow-circle_left{inset-block-end:-4px;inset-inline-end:-5px}.g-popup__arrow-circle_right{inset-block-end:-4px;inset-inline-start:-5px}@keyframes g-popup-bottom{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}@keyframes g-popup-bottom-open{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes g-popup-top{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}@keyframes g-popup-top-open{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes g-popup-left{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-10px)}}@keyframes g-popup-left-open{0%{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}@keyframes g-popup-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(10px)}}@keyframes g-popup-right-open{0%{opacity:0;transform:translateX(10px)}to{opacity:1;transform:translateX(0)}}.g-portal__theme-wrapper{display:contents}.g-link{-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:var(--g-focus-border-radius);cursor:pointer;text-decoration:none;touch-action:manipulation}.g-link:focus-visible{outline:2px solid var(--g-color-line-focus)}.g-link_view_normal{color:var(--g-color-text-link)}.g-link_view_primary{color:var(--g-color-text-primary)}.g-link_view_secondary{color:var(--g-color-text-secondary)}.g-link_view_normal:hover,.g-link_view_primary:hover,.g-link_view_secondary:hover{color:var(--g-color-text-link-hover)}.g-link_visitable:visited{color:var(--g-color-text-link-visited)}.g-link_visitable:visited:hover{color:var(--g-color-text-link-visited-hover)}.g-toast-animation-mobile_enter{opacity:0;position:absolute}.g-toast-animation-mobile_enter_active{animation:g-toast-enter-mobile .6s ease-out forwards;position:relative}.g-toast-animation-mobile_exit_active{animation:g-toast-exit-mobile .6s ease-in forwards}@keyframes g-toast-enter-mobile{0%{height:0;margin-block-end:0;opacity:0;padding:0;transform:translateY(10px)}50%{height:var(--_--item-height);margin-block-end:var(--_--item-gap);margin-block-end:var(--g-toaster-item-gap,var(--_--item-gap));opacity:0;padding:var(--g-toaster-item-padding,var(--_--item-padding));transform:translateY(10px)}to{opacity:1;transform:translateX(0)}}@keyframes g-toast-exit-mobile{0%{height:var(--_--item-height);margin-block-end:var(--_--item-gap);margin-block-end:var(--g-toaster-item-gap,var(--_--item-gap));opacity:1;padding:var(--g-toaster-item-padding,var(--_--item-padding));transform:translateX(0)}50%{height:var(--_--item-height);margin-block-end:var(--_--item-gap);margin-block-end:var(--g-toaster-item-gap,var(--_--item-gap));opacity:0;padding:var(--g-toaster-item-padding,var(--_--item-padding));transform:translateY(10px)}to{height:0;margin-block-end:0;opacity:0;padding:0;transform:translateY(10px)}}.g-toast-animation-desktop_enter{opacity:0;position:absolute}.g-toast-animation-desktop_enter_active{animation:g-toast-enter-desktop .6s ease-out forwards;position:relative}.g-toast-animation-desktop_exit_active{animation:g-toast-exit-desktop .6s ease-in forwards}@keyframes g-toast-enter-desktop{0%{height:0;margin-block-end:0;opacity:0;padding:0;transform:translateX(calc(var(--g-flow-direction)*10px))}50%{height:var(--_--item-height);margin-block-end:var(--_--item-gap);margin-block-end:var(--g-toaster-item-gap,var(--_--item-gap));opacity:0;padding:var(--g-toaster-item-padding,var(--_--item-padding));transform:translateX(calc(var(--g-flow-direction)*10px))}to{opacity:1;transform:translateX(0)}}@keyframes g-toast-exit-desktop{0%{height:var(--_--item-height);margin-block-end:var(--_--item-gap);margin-block-end:var(--g-toaster-item-gap,var(--_--item-gap));opacity:1;padding:var(--g-toaster-item-padding,var(--_--item-padding));transform:translateX(0)}50%{height:var(--_--item-height);margin-block-end:var(--_--item-gap);margin-block-end:var(--g-toaster-item-gap,var(--_--item-gap));opacity:0;padding:var(--g-toaster-item-padding,var(--_--item-padding));transform:translateX(calc(var(--g-flow-direction)*10px))}to{height:0;margin-block-end:0;opacity:0;padding:0;transform:translateX(calc(var(--g-flow-direction)*10px))}}.g-toaster{--_--width:312px;align-items:flex-end;display:flex;flex-direction:column;inset-block-end:0;inset-inline-end:10px;position:fixed;width:var(--_--width);width:var(--g-toaster-width,var(--_--width));z-index:100000}.g-toaster_mobile{--_--width:calc(100% - 20px);inset-inline-start:50%;transform:translate(-50%)}.g-toast{--_--item-gap:10px;--_--item-padding:16px;--_--background-color:var(--g-color-base-background);background-color:var(--_--background-color);border-radius:8px;box-shadow:0 0 15px var(--g-color-sfx-shadow);box-sizing:border-box;display:flex;font-size:var(--g-text-body-2-font-size);margin-block-end:var(--_--item-gap);margin-block-end:var(--g-toaster-item-gap,var(--_--item-gap));overflow:hidden;padding:var(--g-toaster-item-padding,var(--_--item-padding));position:relative;width:inherit;z-index:0}.g-toast_mobile{width:100%}.g-toast_theme_normal{--_--background-color:var(--g-color-base-float)}.g-toast_theme_info{--_--container-background-color:var(--g-color-base-info-light);--_--icon-color:var(--g-color-text-info-heavy)}.g-toast_theme_success{--_--container-background-color:var(--g-color-base-positive-light);--_--icon-color:var(--g-color-text-positive-heavy)}.g-toast_theme_warning{--_--container-background-color:var(--g-color-base-warning-light);--_--icon-color:var(--g-color-text-warning-heavy)}.g-toast_theme_danger{--_--container-background-color:var(--g-color-base-danger-light);--_--icon-color:var(--g-color-text-danger-heavy)}.g-toast_theme_utility{--_--container-background-color:var(--g-color-base-utility-light);--_--icon-color:var(--g-color-text-utility-heavy)}.g-toast__container{grid-row-gap:8px;display:grid;flex:1 1 auto;grid-template-columns:100%;height:100%;min-height:var(--g-text-body-2-line-height);min-width:0;row-gap:8px;width:100%}.g-toast__container:before{background-color:var(--_--container-background-color);content:"";height:100%;inset-block-start:0;inset-inline-start:0;pointer-events:none;position:absolute;width:100%;z-index:-1}.g-toast__icon-container{color:var(--_--icon-color);flex:0 0 auto;padding-block-start:2px;padding-inline-end:8px}.g-toast__title{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height);margin:0}.g-toast__content_without-title,.g-toast__title{padding-inline-end:32px}.g-toast__action{margin-inline-end:8px}.g-toast .g-toast__btn-close{inset-block-start:16px;inset-inline-end:16px;position:absolute}.g-switch{position:relative}.g-switch__control{cursor:pointer;opacity:0}.g-switch__indicator{display:inline-block;position:relative}.g-switch__indicator:before{background-color:var(--g-color-base-generic-medium);content:"";inset:0;position:absolute;transition:background .1s linear}.g-switch__indicator:after{content:" ";visibility:hidden}.g-switch__slider{background-color:var(--g-color-base-background);border-radius:50%;content:"";position:absolute;transition:transform .15s ease-out}.g-switch__outline{background:none;height:100%;inset-block-start:0;inset-inline-start:0;pointer-events:none;position:absolute;width:100%}.g-switch__control:focus-visible+.g-switch__outline{outline:2px solid var(--g-color-line-focus)}.g-switch_size_m .g-switch__indicator,.g-switch_size_m .g-switch__indicator:before,.g-switch_size_m .g-switch__outline{border-radius:10px;height:20px;width:36px}.g-switch_size_m .g-switch__slider{height:16px;inset-block-start:2px;inset-inline-start:2px;width:16px}.g-switch_size_m .g-switch__text{margin-block-start:3px}.g-switch_size_l .g-switch__indicator,.g-switch_size_l .g-switch__indicator:before,.g-switch_size_l .g-switch__outline{border-radius:12px;height:24px;width:42px}.g-switch_size_l .g-switch__slider{height:18px;inset-block-start:3px;inset-inline-start:3px;width:18px}.g-switch_size_l .g-switch__text{margin-block-start:4px}.g-switch:hover .g-switch__indicator:before{background-color:var(--g-color-base-generic-medium-hover)}.g-switch_checked .g-switch__slider{--_--translate-x:calc(100%*var(--g-flow-direction));transform:translateX(var(--_--translate-x))}.g-switch_checked .g-switch__indicator:before,.g-switch_checked:hover .g-switch__indicator:before{background-color:var(--g-color-base-brand)}.g-switch_disabled .g-switch__indicator:before{background-color:var(--g-color-base-generic-accent-disabled)}.g-switch_disabled.g-switch_checked .g-switch__indicator:before{background-color:var(--g-color-base-brand);opacity:.5}.g-control-label{-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--g-color-text-primary);cursor:pointer;display:inline-flex;font-family:var(--g-text-body-font-family);font-weight:var(--g-text-body-font-weight);touch-action:manipulation;-webkit-user-select:none;user-select:none}.g-control-label_disabled{cursor:default;pointer-events:none}.g-control-label_size_m{font-size:var(--g-text-body-1-font-size);line-height:15px}.g-control-label_size_l{font-size:var(--g-text-body-2-font-size);line-height:18px}.g-control-label__indicator{flex-shrink:0}.g-control-label__text{flex-grow:1;white-space:normal}.g-control-label_disabled .g-control-label__text{opacity:.6}.g-control-label_size_m .g-control-label__text{margin-inline-start:5px}.g-control-label_size_l .g-control-label__text{margin-inline-start:7px}.g-radio-button{--_--border-radius-inner:calc(var(--_--border-radius) - 3px);background-color:var(--g-color-base-generic);border-radius:var(--_--border-radius);box-sizing:border-box;display:inline-flex;flex-direction:row;font-family:var(--g-text-body-font-family);font-weight:var(--g-text-body-font-weight);position:relative}.g-radio-button__plate{inset-block:0;position:absolute;transition:left .2s,width .2s}.g-radio-button__plate[hidden]{display:none}.g-radio-button__option{border-radius:var(--_--border-radius-inner);cursor:pointer;flex:1 1 auto;font-size:var(--g-text-body-1-font-size);text-align:center;transform:scale(1);transition:color .15s linear;-webkit-user-select:none;user-select:none}.g-radio-button__option-outline{border-radius:var(--_--border-radius-inner);content:"";inset:3px;position:absolute;z-index:-1}.g-radio-button__option-control{border:none;cursor:inherit;height:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;outline:none;padding:0;position:absolute;width:100%}.g-radio-button__option-control:focus-visible+.g-radio-button__option-outline{outline:2px solid var(--g-color-line-focus)}.g-radio-button__option-text{color:var(--g-color-text-complementary);display:inline-block;white-space:nowrap}.g-radio-button__option-text_icon{align-items:center;display:flex;height:100%}.g-radio-button__option:hover .g-radio-button__option-text,.g-radio-button__option_checked .g-radio-button__option-text{color:var(--g-color-text-primary)}.g-radio-button__option_checked{cursor:default}.g-radio-button__option_disabled{cursor:default;pointer-events:none}.g-radio-button__option_disabled .g-radio-button__option-text{color:var(--g-color-text-hint)}.g-radio-button__option:before,.g-radio-button__plate:before{border-radius:var(--_--border-radius-inner);inset:3px;position:absolute}.g-radio-button__option:before{z-index:-1}.g-radio-button__plate:before,.g-radio-button__plate[hidden]~.g-radio-button__option_checked:before{background-color:var(--g-color-base-background);content:""}.g-radio-button_size_s{--_--border-radius:var(--g-border-radius-s)}.g-radio-button_size_s .g-radio-button__option{height:24px;line-height:24px}.g-radio-button_size_s .g-radio-button__option-text{margin:0 10px}.g-radio-button_size_m{--_--border-radius:var(--g-border-radius-m)}.g-radio-button_size_m .g-radio-button__option{height:28px;line-height:28px}.g-radio-button_size_m .g-radio-button__option-text{margin:0 13px}.g-radio-button_size_l{--_--border-radius:var(--g-border-radius-l)}.g-radio-button_size_l .g-radio-button__option{height:36px;line-height:36px}.g-radio-button_size_l .g-radio-button__option-text{margin:0 18px}.g-radio-button_size_xl{--_--border-radius:var(--g-border-radius-xl)}.g-radio-button_size_xl .g-radio-button__option{font-size:var(--g-text-body-2-font-size);height:44px;line-height:44px}.g-radio-button_size_xl .g-radio-button__option-text{margin:0 25px}.g-radio-button_width_auto{max-width:100%}.g-radio-button_width_max{width:100%}.g-radio-button_width_auto .g-radio-button__option,.g-radio-button_width_max .g-radio-button__option{overflow:hidden}.g-radio-button_width_auto .g-radio-button__option-text,.g-radio-button_width_max .g-radio-button__option-text{display:block;overflow:hidden;text-overflow:ellipsis}.g-tabs{--_--vertical-item-padding:var(--g-tabs-vertical-item-padding,6px 20px);--_--vertical-item-height:var(--g-tabs-vertical-item-height,18px)}.g-tabs_size_m{--_--item-height:36px;--_--item-gap:24px;--_--item-border-width:2px}.g-tabs_size_m .g-tabs__item-counter,.g-tabs_size_m .g-tabs__item-title{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.g-tabs_size_l{--_--item-height:40px;--_--item-gap:28px;--_--item-border-width:2px}.g-tabs_size_l .g-tabs__item-counter,.g-tabs_size_l .g-tabs__item-title{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.g-tabs_size_xl{--_--item-height:44px;--_--item-gap:32px;--_--item-border-width:3px}.g-tabs_size_xl .g-tabs__item-counter,.g-tabs_size_xl .g-tabs__item-title{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.g-tabs__item{cursor:pointer;outline:none;-webkit-user-select:none;user-select:none}.g-tabs__item-content{align-items:center;border-radius:var(--g-focus-border-radius);display:flex}.g-tabs__item_overflow .g-tabs__item-content{min-width:0}.g-tabs__item-icon{margin-inline-end:8px}.g-tabs__item-title{white-space:nowrap}.g-tabs__item_overflow .g-tabs__item-title{overflow:hidden;text-overflow:ellipsis}.g-tabs__item-counter,.g-tabs__item-label{margin-inline-start:8px}.g-tabs__item-icon>svg{display:block}.g-tabs_direction_horizontal{align-items:flex-end;box-shadow:inset 0 -1px 0 0 var(--g-color-line-generic);box-shadow:inset 0 calc(var(--g-tabs-border-width, 1px)*-1) 0 0 var(--g-color-line-generic);display:flex;flex-wrap:wrap;overflow:hidden}.g-tabs_direction_horizontal .g-tabs__item{align-items:center;border-block-end:var(--_--item-border-width) solid #0000;border-block-end:var(--g-tabs-item-border-width,var(--_--item-border-width)) solid #0000;box-sizing:border-box;display:flex;height:var(--_--item-height);height:var(--g-tabs-item-height,var(--_--item-height));padding-block-start:var(--_--item-border-width)}.g-tabs_direction_horizontal .g-tabs__item:focus-visible .g-tabs__item-content{outline:2px solid var(--g-color-line-focus);outline-offset:-2px}.g-tabs_direction_horizontal .g-tabs__item-meta{display:none}.g-tabs_direction_horizontal .g-tabs__item-title{color:var(--g-color-text-secondary)}.g-tabs_direction_horizontal .g-tabs__item-counter,.g-tabs_direction_horizontal .g-tabs__item-icon{color:var(--g-color-text-hint)}.g-tabs_direction_horizontal .g-tabs__item:focus-visible .g-tabs__item-title,.g-tabs_direction_horizontal .g-tabs__item:hover .g-tabs__item-title,.g-tabs_direction_horizontal .g-tabs__item_active .g-tabs__item-title{color:var(--g-color-text-primary)}.g-tabs_direction_horizontal .g-tabs__item:focus-visible .g-tabs__item-counter,.g-tabs_direction_horizontal .g-tabs__item:focus-visible .g-tabs__item-icon,.g-tabs_direction_horizontal .g-tabs__item:hover .g-tabs__item-counter,.g-tabs_direction_horizontal .g-tabs__item:hover .g-tabs__item-icon,.g-tabs_direction_horizontal .g-tabs__item_active .g-tabs__item-counter,.g-tabs_direction_horizontal .g-tabs__item_active .g-tabs__item-icon{color:var(--g-color-text-secondary)}.g-tabs_direction_horizontal .g-tabs__item_active,.g-tabs_direction_horizontal .g-tabs__item_active:focus-visible,.g-tabs_direction_horizontal .g-tabs__item_active:hover{border-color:var(--g-color-line-brand)}.g-tabs_direction_horizontal .g-tabs__item_disabled{pointer-events:none}.g-tabs_direction_horizontal .g-tabs__item_disabled .g-tabs__item-title{color:var(--g-color-text-hint)}.g-tabs_direction_horizontal>:not(:last-child){margin-inline-end:var(--_--item-gap);margin-inline-end:var(--g-tabs-item-gap,var(--_--item-gap))}.g-tabs_direction_vertical{display:flex;flex-direction:column}.g-tabs_direction_vertical .g-tabs__item{padding:var(--_--vertical-item-padding)}.g-tabs_direction_vertical .g-tabs__item-title{color:var(--g-color-text-primary);line-height:var(--_--vertical-item-height)}.g-tabs_direction_vertical .g-tabs__item-meta{color:var(--g-color-text-secondary);line-height:var(--_--vertical-item-height)}.g-tabs_direction_vertical .g-tabs__item-counter,.g-tabs_direction_vertical .g-tabs__item-icon{color:var(--g-color-text-secondary)}.g-tabs_direction_vertical .g-tabs__item:focus-visible,.g-tabs_direction_vertical .g-tabs__item:hover{background-color:var(--g-color-base-generic-hover)}.g-tabs_direction_vertical .g-tabs__item_active{background-color:var(--g-color-base-selection)}.g-tabs_direction_vertical .g-tabs__item_active:focus-visible,.g-tabs_direction_vertical .g-tabs__item_active:hover{background-color:var(--g-color-base-selection-hover)}.g-tabs_direction_vertical .g-tabs__item_disabled{pointer-events:none}.g-tabs_direction_vertical .g-tabs__item_disabled .g-tabs__item-title{color:var(--g-color-text-secondary)}.g-label{--border-size:0px;--_-bg-color:none;--_-bg-hover-color:none;--_-text-color:none;align-items:center;background-color:var(--_-bg-color);box-sizing:border-box;color:var(--_-text-color);display:inline-flex;isolation:isolate;position:relative;transition-duration:.15s;transition-property:opacity,color,background-color;transition-timing-function:ease-in-out}.g-label__text{align-items:baseline;display:flex;font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height);overflow:hidden;text-align:center;white-space:nowrap;width:100%}.g-label__content,.g-label__key{overflow:hidden;text-overflow:ellipsis}.g-label__value{display:flex;opacity:.7;overflow:hidden}.g-label__separator{margin:0 4px}.g-label__action-button{background:none;border:none;border-radius:inherit;color:inherit;cursor:pointer;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);outline:none;padding:0;z-index:1}.g-label__action-button:focus-visible{outline:2px solid var(--g-color-line-focus)}.g-label__action-button:empty{inset:0;position:absolute}.g-label .g-label__addon{align-items:center;display:flex;justify-content:center}.g-label .g-label__addon_side_left,.g-label .g-label__addon_side_right{inset-block-start:0;position:absolute}.g-label .g-label__addon_side_left{inset-inline-start:2px}.g-label .g-label__addon_side_right{inset-inline-end:0;z-index:2}.g-label .g-label__addon_interactive{--g-button-background-color:#0000;color:inherit;cursor:pointer;transition:color,background-color;transition-duration:.15s;transition-timing-function:ease-in-out}.g-label_size_xs{border-radius:var(--g-border-radius-xs);height:20px}.g-label_size_xs .g-label__text{line-height:20px;margin:0 8px}.g-label_size_xs .g-label__addon{--addon-size:calc(20px - var(--border-size)*2);height:var(--addon-size);width:var(--addon-size)}.g-label_size_xs.g-label_has-right-addon .g-label__text{margin-inline-end:22px}.g-label_size_xs.g-label_has-left-addon .g-label__text{margin-inline-start:24px}.g-label_size_s{border-radius:var(--g-border-radius-s);height:24px}.g-label_size_s .g-label__text{line-height:24px;margin:0 10px}.g-label_size_s .g-label__addon{--addon-size:calc(24px - var(--border-size)*2);height:var(--addon-size);width:var(--addon-size)}.g-label_size_s.g-label_has-right-addon .g-label__text{margin-inline-end:26px}.g-label_size_s.g-label_has-left-addon .g-label__text{margin-inline-start:28px}.g-label_size_m{border-radius:var(--g-border-radius-m);height:28px}.g-label_size_m .g-label__text{line-height:28px;margin:0 12px}.g-label_size_m .g-label__addon{--addon-size:calc(28px - var(--border-size)*2);height:var(--addon-size);width:var(--addon-size)}.g-label_size_m.g-label_has-right-addon .g-label__text{margin-inline-end:32px}.g-label_size_m.g-label_has-left-addon .g-label__text{margin-inline-start:32px}.g-label_disabled{opacity:.7;pointer-events:none}.g-label_is-interactive{cursor:pointer}.g-label_theme_normal{--_-bg-color:var(--g-color-base-misc-light);--_-bg-hover-color:var(--g-color-base-misc-light-hover);--_-text-color:var(--g-color-text-misc-heavy)}.g-label_theme_success{--_-bg-color:var(--g-color-base-positive-light);--_-bg-hover-color:var(--g-color-base-positive-light-hover);--_-text-color:var(--g-color-text-positive-heavy)}.g-label_theme_info{--_-bg-color:var(--g-color-base-info-light);--_-bg-hover-color:var(--g-color-base-info-light-hover);--_-text-color:var(--g-color-text-info-heavy)}.g-label_theme_warning{--_-bg-color:var(--g-color-base-warning-light);--_-bg-hover-color:var(--g-color-base-warning-light-hover);--_-text-color:var(--g-color-text-warning-heavy)}.g-label_theme_danger{--_-bg-color:var(--g-color-base-danger-light);--_-bg-hover-color:var(--g-color-base-danger-light-hover);--_-text-color:var(--g-color-text-danger-heavy)}.g-label_theme_utility{--_-bg-color:var(--g-color-base-utility-light);--_-bg-hover-color:var(--g-color-base-utility-light-hover);--_-text-color:var(--g-color-text-utility-heavy)}.g-label_theme_unknown{--_-bg-color:var(--g-color-base-neutral-light);--_-bg-hover-color:var(--g-color-base-neutral-light-hover);--_-text-color:var(--g-color-text-complementary)}.g-label_theme_clear{--_-bg-color:#0000;--_-bg-hover-color:var(--g-color-base-simple-hover-solid);--_-text-color:var(--g-color-text-complementary);--border-size:1px;border:var(--border-size) solid var(--g-color-line-generic)}.g-label_is-interactive:hover:not(:has(.g-label__addon_interactive:hover)){background-color:var(--_-bg-hover-color)}.g-label:not(.g-label_disabled) .g-label__addon_interactive{--g-button-background-color-hover:var(--_-bg-hover-color)}.g-label:not(.g-label_disabled) .g-label__addon_interactive:active,.g-label:not(.g-label_disabled) .g-label__addon_interactive:focus,.g-label:not(.g-label_disabled) .g-label__addon_interactive:hover{color:var(--_-text-color)}.g-text-input{--_--text-color:var(--g-color-text-primary);--_--label-color:inherit;--_--placeholder-color:var(--g-color-text-hint);--_--background-color:#0000;--_--border-width:1px;--_--focus-outline-color:var(--g-text-input-focus-outline-color);display:inline-block;position:relative;width:100%}.g-text-input__content{background-color:var(--_--background-color);background-color:var(--g-text-input-background-color,var(--_--background-color));border-color:var(--g-text-input-border-color,var(--_--border-color));border-style:solid;border-width:var(--g-text-input-border-width,var(--_--border-width));box-sizing:border-box;color:var(--_--text-color);color:var(--g-text-input-text-color,var(--_--text-color));display:flex;overflow:hidden;width:100%}.g-text-input__content:hover{border-color:var(--g-text-input-border-color-hover,var(--_--border-color-hover))}.g-text-input__content:focus-within{border-color:var(--g-text-input-border-color-active,var(--_--border-color-active));outline:2px solid var(--_--focus-outline-color);outline:2px solid var(--g-text-input-focus-outline-color,var(--_--focus-outline-color));outline-offset:-1px}.g-text-input__control{background-color:initial;border:none;box-sizing:border-box;color:inherit;display:inline-block;flex-grow:1;font-family:var(--g-text-body-font-family);font-weight:var(--g-text-body-font-weight);height:var(--g-text-input-height);margin:0;padding:0;position:relative;vertical-align:top;width:100%}.g-text-input__control::placeholder{color:var(--_--placeholder-color);color:var(--g-text-input-placeholder-color,var(--_--placeholder-color));overflow:hidden;white-space:nowrap}.g-text-input__control:focus{outline:none}.g-text-input__control[type=number]{-webkit-appearance:textfield;appearance:textfield}.g-text-input__label{box-sizing:border-box;color:var(--_--label-color);color:var(--g-text-input-label-color,var(--_--label-color));overflow:hidden;position:absolute;text-overflow:ellipsis;white-space:nowrap;z-index:1}.g-text-input__clear{flex-shrink:0;margin:auto 0}.g-text-input__clear_size_m,.g-text-input__clear_size_s{margin-inline-end:1px}.g-text-input__clear_size_l,.g-text-input__clear_size_xl{margin-inline-end:2px}.g-text-input__error-icon{box-sizing:initial;color:var(--g-color-text-danger);padding-block:var(--_--error-icon-padding-block);padding-inline:var(--_--error-icon-padding-inline)}.g-text-input__additional-content{align-items:center;display:flex}.g-text-input_size_s{--_--error-icon-padding-block:5px;--_--error-icon-padding-inline:0 5px;--_--border-radius:var(--g-border-radius-s)}.g-text-input_size_s .g-text-input__control{--_--input-control-border-width:var( + --g-text-input-border-width,var(--g-text-area-border-width,1px) + );height:calc(24px - var(--_--input-control-border-width)*2);padding:3px 8px}.g-text-input_size_s .g-text-input__control,.g-text-input_size_s .g-text-input__label{font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-short-line-height)}.g-text-input_size_s .g-text-input__label{font-weight:var(--g-text-accent-font-weight);padding-block:3px;padding-inline:8px 4px}.g-text-input_size_s.g-text-input_has-start-content .g-text-input__label{padding-inline-start:2px}.g-text-input_size_s .g-text-input__additional-content{height:22px}.g-text-input_size_s .g-text-input__additional-content_placement_start{padding-inline-start:1px}.g-text-input_size_s .g-text-input__additional-content_placement_end{padding-inline-end:1px}.g-text-input_size_m{--_--error-icon-padding-block:5px;--_--error-icon-padding-inline:0 5px;--_--border-radius:var(--g-border-radius-m)}.g-text-input_size_m .g-text-input__control{--_--input-control-border-width:var( + --g-text-input-border-width,var(--g-text-area-border-width,1px) + );height:calc(28px - var(--_--input-control-border-width)*2);padding:5px 8px}.g-text-input_size_m .g-text-input__control,.g-text-input_size_m .g-text-input__label{font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-short-line-height)}.g-text-input_size_m .g-text-input__label{font-weight:var(--g-text-accent-font-weight);padding-block:5px;padding-inline:8px 4px}.g-text-input_size_m.g-text-input_has-start-content .g-text-input__label{padding-inline-start:2px}.g-text-input_size_m .g-text-input__additional-content{height:26px}.g-text-input_size_m .g-text-input__additional-content_placement_start{padding-inline-start:1px}.g-text-input_size_m .g-text-input__additional-content_placement_end{padding-inline-end:1px}.g-text-input_size_l{--_--error-icon-padding-block:9px;--_--error-icon-padding-inline:0 9px;--_--border-radius:var(--g-border-radius-l)}.g-text-input_size_l .g-text-input__control{--_--input-control-border-width:var( + --g-text-input-border-width,var(--g-text-area-border-width,1px) + );height:calc(36px - var(--_--input-control-border-width)*2);padding:9px 12px}.g-text-input_size_l .g-text-input__control,.g-text-input_size_l .g-text-input__label{font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-short-line-height)}.g-text-input_size_l .g-text-input__label{font-weight:var(--g-text-accent-font-weight);padding-block:9px;padding-inline:12px 4px}.g-text-input_size_l.g-text-input_has-start-content .g-text-input__label{padding-inline-start:3px}.g-text-input_size_l .g-text-input__additional-content{height:34px}.g-text-input_size_l .g-text-input__additional-content_placement_start{padding-inline-start:3px}.g-text-input_size_l .g-text-input__additional-content_placement_end{padding-inline-end:3px}.g-text-input_size_xl{--_--error-icon-padding-block:13px;--_--error-icon-padding-inline:0 13px;--_--border-radius:var(--g-border-radius-xl)}.g-text-input_size_xl .g-text-input__control{--_--input-control-border-width:var( + --g-text-input-border-width,var(--g-text-area-border-width,1px) + );height:calc(44px - var(--_--input-control-border-width)*2);padding:11px 12px}.g-text-input_size_xl .g-text-input__control,.g-text-input_size_xl .g-text-input__label{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.g-text-input_size_xl .g-text-input__label{font-weight:var(--g-text-accent-font-weight);padding-block:11px;padding-inline:12px 4px}.g-text-input_size_xl.g-text-input_has-start-content .g-text-input__label{padding-inline-start:3px}.g-text-input_size_xl .g-text-input__additional-content{height:42px}.g-text-input_size_xl .g-text-input__additional-content_placement_start{padding-inline-start:3px}.g-text-input_size_xl .g-text-input__additional-content_placement_end{padding-inline-end:3px}.g-text-input_view_normal{--_--border-color:var(--g-color-line-generic);--_--border-color-hover:var(--g-color-line-generic-hover);--_--border-color-active:var(--g-color-line-generic-active)}.g-text-input_view_clear{--_--border-color:#0000;--_--border-color-hover:#0000;--_--border-color-active:#0000;--_--border-radius:0}.g-text-input_view_clear .g-text-input__content{border-inline:0}.g-text-input_view_clear .g-text-input__control{padding-inline:0}.g-text-input.g-text-input_pin_round-round .g-text-input__content{border-radius:var(--_--border-radius);border-radius:var(--g-text-input-border-radius,var(--_--border-radius))}.g-text-input.g-text-input_pin_brick-brick .g-text-input__content{border-radius:0}.g-text-input.g-text-input_pin_clear-clear .g-text-input__content{border-inline:0;border-radius:0}.g-text-input.g-text-input_pin_circle-circle .g-text-input__content{border-radius:100px}.g-text-input.g-text-input_pin_round-brick .g-text-input__content{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-end-start-radius:var(--g-text-input-border-radius,var(--_--border-radius));border-start-end-radius:0;border-start-start-radius:var(--_--border-radius);border-start-start-radius:var(--g-text-input-border-radius,var(--_--border-radius))}.g-text-input.g-text-input_pin_brick-round .g-text-input__content{border-end-end-radius:var(--_--border-radius);border-end-end-radius:var(--g-text-input-border-radius,var(--_--border-radius));border-end-start-radius:0;border-start-end-radius:var(--_--border-radius);border-start-end-radius:var(--g-text-input-border-radius,var(--_--border-radius));border-start-start-radius:0}.g-text-input.g-text-input_pin_round-clear .g-text-input__content{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-end-start-radius:var(--g-text-input-border-radius,var(--_--border-radius));border-inline-end:0;border-start-end-radius:0;border-start-start-radius:var(--_--border-radius);border-start-start-radius:var(--g-text-input-border-radius,var(--_--border-radius))}.g-text-input.g-text-input_pin_clear-round .g-text-input__content{border-end-end-radius:var(--_--border-radius);border-end-end-radius:var(--g-text-input-border-radius,var(--_--border-radius));border-end-start-radius:0;border-inline-start:0;border-start-end-radius:var(--_--border-radius);border-start-end-radius:var(--g-text-input-border-radius,var(--_--border-radius));border-start-start-radius:0}.g-text-input.g-text-input_pin_brick-clear .g-text-input__content{border-inline-end:0;border-radius:0}.g-text-input.g-text-input_pin_clear-brick .g-text-input__content{border-inline-start:0;border-radius:0}.g-text-input.g-text-input_pin_circle-brick .g-text-input__content{border-end-end-radius:0;border-end-start-radius:100px;border-start-end-radius:0;border-start-start-radius:100px}.g-text-input.g-text-input_pin_brick-circle .g-text-input__content{border-end-end-radius:100px;border-end-start-radius:0;border-start-end-radius:100px;border-start-start-radius:0}.g-text-input.g-text-input_pin_circle-clear .g-text-input__content{border-end-end-radius:0;border-end-start-radius:100px;border-inline-end:0;border-start-end-radius:0;border-start-start-radius:100px}.g-text-input.g-text-input_pin_clear-circle .g-text-input__content{border-end-end-radius:100px;border-end-start-radius:0;border-inline-start:0;border-start-end-radius:100px;border-start-start-radius:0}.g-text-input_disabled{--_--text-color:var(--g-color-text-hint);--_--background-color:var(--g-color-base-generic-accent-disabled);--_--border-color:#0000;--_--border-color-hover:#0000;--_--border-color-active:#0000}.g-text-input_has-scrollbar .g-text-input__clear{inset-inline-end:var(--g-scrollbar-width)}.g-text-input_has-start-content .g-text-input__control{padding-inline-start:2px}.g-text-input_has-end-content .g-text-input__control{padding-inline-end:2px}.g-text-input_state_error.g-text-input_view_normal .g-text-input__content,.g-text-input_state_error.g-text-input_view_normal .g-text-input__content:focus-within,.g-text-input_state_error.g-text-input_view_normal .g-text-input__content:hover{border-color:var(--g-color-line-danger)}.g-text-input_state_error.g-text-input_view_normal .g-text-input__content:focus-within{--_--focus-outline-color:var(--g-color-line-danger)}.g-text-input_state_error.g-text-input_view_clear .g-text-input__content,.g-text-input_state_error.g-text-input_view_clear .g-text-input__content:focus-within,.g-text-input_state_error.g-text-input_view_clear .g-text-input__content:hover{border-block-end:1px solid var(--g-color-line-danger)}.g-text-input_state_error.g-text-input_view_clear .g-text-input__content:focus-within{--_--focus-outline-color:var(--g-color-line-danger)}.g-clear-button{--g-button-text-color:var(--g-color-text-hint);--g-button-text-color-hover:var(--g-color-text-primary);--g-button-background-color:#0000;--g-button-background-color-hover:#0000}.g-outer-additional-content{display:flex;justify-content:space-between;vertical-align:top}.g-outer-additional-content__error,.g-outer-additional-content__note{margin-block-start:2px}.g-outer-additional-content__error{color:var(--g-color-text-danger);font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.g-outer-additional-content__error:not(:last-child){margin-inline-end:var(--g-spacing-2)}.g-outer-additional-content__note{margin-inline-start:auto}@keyframes g-pulse{50%{opacity:15%}}.g-loader{align-items:center;display:inline-flex}.g-loader__center,.g-loader__left,.g-loader__right{animation:g-pulse .8s ease infinite;background:var(--g-color-base-brand)}.g-loader__left{animation-delay:.2s}.g-loader__center{animation-delay:.4s}.g-loader__right{animation-delay:.6s}.g-loader_size_s .g-loader__left{height:13.33333px;width:5px}.g-loader_size_s .g-loader__center{height:20px;margin-inline-start:5px;width:5px}.g-loader_size_s .g-loader__right{height:13.33333px;margin-inline-start:5px;width:5px}.g-loader_size_m .g-loader__left{height:18.66667px;width:7px}.g-loader_size_m .g-loader__center{height:28px;margin-inline-start:7px;width:7px}.g-loader_size_m .g-loader__right{height:18.66667px;margin-inline-start:7px;width:7px}.g-loader_size_l .g-loader__left{height:24px;width:9px}.g-loader_size_l .g-loader__center{height:36px;margin-inline-start:9px;width:9px}.g-loader_size_l .g-loader__right{height:24px;margin-inline-start:9px;width:9px}.g-flex{display:flex}.g-flex_inline{display:inline-flex}.g-flex_center-content{align-items:center;justify-content:center}.g-flex_s_0{margin-block-start:calc(var(--g-spacing-0)*-1)!important;margin-inline-start:calc(var(--g-spacing-0)*-1)!important}.g-flex_s_0>*{padding-block-start:var(--g-spacing-0)!important;padding-inline-start:var(--g-spacing-0)!important}.g-flex_s_half{margin-block-start:calc(var(--g-spacing-half)*-1)!important;margin-inline-start:calc(var(--g-spacing-half)*-1)!important}.g-flex_s_half>*{padding-block-start:var(--g-spacing-half)!important;padding-inline-start:var(--g-spacing-half)!important}.g-flex_s_1{margin-block-start:calc(var(--g-spacing-1)*-1)!important;margin-inline-start:calc(var(--g-spacing-1)*-1)!important}.g-flex_s_1>*{padding-block-start:var(--g-spacing-1)!important;padding-inline-start:var(--g-spacing-1)!important}.g-flex_s_2{margin-block-start:calc(var(--g-spacing-2)*-1)!important;margin-inline-start:calc(var(--g-spacing-2)*-1)!important}.g-flex_s_2>*{padding-block-start:var(--g-spacing-2)!important;padding-inline-start:var(--g-spacing-2)!important}.g-flex_s_3{margin-block-start:calc(var(--g-spacing-3)*-1)!important;margin-inline-start:calc(var(--g-spacing-3)*-1)!important}.g-flex_s_3>*{padding-block-start:var(--g-spacing-3)!important;padding-inline-start:var(--g-spacing-3)!important}.g-flex_s_4{margin-block-start:calc(var(--g-spacing-4)*-1)!important;margin-inline-start:calc(var(--g-spacing-4)*-1)!important}.g-flex_s_4>*{padding-block-start:var(--g-spacing-4)!important;padding-inline-start:var(--g-spacing-4)!important}.g-flex_s_5{margin-block-start:calc(var(--g-spacing-5)*-1)!important;margin-inline-start:calc(var(--g-spacing-5)*-1)!important}.g-flex_s_5>*{padding-block-start:var(--g-spacing-5)!important;padding-inline-start:var(--g-spacing-5)!important}.g-flex_s_6{margin-block-start:calc(var(--g-spacing-6)*-1)!important;margin-inline-start:calc(var(--g-spacing-6)*-1)!important}.g-flex_s_6>*{padding-block-start:var(--g-spacing-6)!important;padding-inline-start:var(--g-spacing-6)!important}.g-flex_s_7{margin-block-start:calc(var(--g-spacing-7)*-1)!important;margin-inline-start:calc(var(--g-spacing-7)*-1)!important}.g-flex_s_7>*{padding-block-start:var(--g-spacing-7)!important;padding-inline-start:var(--g-spacing-7)!important}.g-flex_s_8{margin-block-start:calc(var(--g-spacing-8)*-1)!important;margin-inline-start:calc(var(--g-spacing-8)*-1)!important}.g-flex_s_8>*{padding-block-start:var(--g-spacing-8)!important;padding-inline-start:var(--g-spacing-8)!important}.g-flex_s_9{margin-block-start:calc(var(--g-spacing-9)*-1)!important;margin-inline-start:calc(var(--g-spacing-9)*-1)!important}.g-flex_s_9>*{padding-block-start:var(--g-spacing-9)!important;padding-inline-start:var(--g-spacing-9)!important}.g-flex_s_10{margin-block-start:calc(var(--g-spacing-10)*-1)!important;margin-inline-start:calc(var(--g-spacing-10)*-1)!important}.g-flex_s_10>*{padding-block-start:var(--g-spacing-10)!important;padding-inline-start:var(--g-spacing-10)!important}.g-box{box-sizing:border-box}.g-box_overflow_hidden{overflow:hidden}.g-box_overflow_auto{overflow:auto}.g-box_overflow_x{overflow:hidden auto}.g-box_overflow_y{overflow:auto hidden}.g-s__m_0{margin:var(--g-spacing-0)}.g-s__mr_0{margin-inline-end:var(--g-spacing-0)}.g-s__ml_0{margin-inline-start:var(--g-spacing-0)}.g-s__mt_0{margin-block-start:var(--g-spacing-0)}.g-s__mb_0{margin-block-end:var(--g-spacing-0)}.g-s__mx_0{margin-inline:var(--g-spacing-0)}.g-s__my_0{margin-block:var(--g-spacing-0)}.g-s__p_0{padding:var(--g-spacing-0)}.g-s__pl_0{padding-inline-start:var(--g-spacing-0)}.g-s__pr_0{padding-inline-end:var(--g-spacing-0)}.g-s__pb_0{padding-block-end:var(--g-spacing-0)}.g-s__pt_0{padding-block-start:var(--g-spacing-0)}.g-s__py_0{padding-block:var(--g-spacing-0)}.g-s__px_0{padding-inline:var(--g-spacing-0)}.g-s__m_half{margin:var(--g-spacing-half)}.g-s__mr_half{margin-inline-end:var(--g-spacing-half)}.g-s__ml_half{margin-inline-start:var(--g-spacing-half)}.g-s__mt_half{margin-block-start:var(--g-spacing-half)}.g-s__mb_half{margin-block-end:var(--g-spacing-half)}.g-s__mx_half{margin-inline:var(--g-spacing-half)}.g-s__my_half{margin-block:var(--g-spacing-half)}.g-s__p_half{padding:var(--g-spacing-half)}.g-s__pl_half{padding-inline-start:var(--g-spacing-half)}.g-s__pr_half{padding-inline-end:var(--g-spacing-half)}.g-s__pb_half{padding-block-end:var(--g-spacing-half)}.g-s__pt_half{padding-block-start:var(--g-spacing-half)}.g-s__py_half{padding-block:var(--g-spacing-half)}.g-s__px_half{padding-inline:var(--g-spacing-half)}.g-s__m_1{margin:var(--g-spacing-1)}.g-s__mr_1{margin-inline-end:var(--g-spacing-1)}.g-s__ml_1{margin-inline-start:var(--g-spacing-1)}.g-s__mt_1{margin-block-start:var(--g-spacing-1)}.g-s__mb_1{margin-block-end:var(--g-spacing-1)}.g-s__mx_1{margin-inline:var(--g-spacing-1)}.g-s__my_1{margin-block:var(--g-spacing-1)}.g-s__p_1{padding:var(--g-spacing-1)}.g-s__pl_1{padding-inline-start:var(--g-spacing-1)}.g-s__pr_1{padding-inline-end:var(--g-spacing-1)}.g-s__pb_1{padding-block-end:var(--g-spacing-1)}.g-s__pt_1{padding-block-start:var(--g-spacing-1)}.g-s__py_1{padding-block:var(--g-spacing-1)}.g-s__px_1{padding-inline:var(--g-spacing-1)}.g-s__m_2{margin:var(--g-spacing-2)}.g-s__mr_2{margin-inline-end:var(--g-spacing-2)}.g-s__ml_2{margin-inline-start:var(--g-spacing-2)}.g-s__mt_2{margin-block-start:var(--g-spacing-2)}.g-s__mb_2{margin-block-end:var(--g-spacing-2)}.g-s__mx_2{margin-inline:var(--g-spacing-2)}.g-s__my_2{margin-block:var(--g-spacing-2)}.g-s__p_2{padding:var(--g-spacing-2)}.g-s__pl_2{padding-inline-start:var(--g-spacing-2)}.g-s__pr_2{padding-inline-end:var(--g-spacing-2)}.g-s__pb_2{padding-block-end:var(--g-spacing-2)}.g-s__pt_2{padding-block-start:var(--g-spacing-2)}.g-s__py_2{padding-block:var(--g-spacing-2)}.g-s__px_2{padding-inline:var(--g-spacing-2)}.g-s__m_3{margin:var(--g-spacing-3)}.g-s__mr_3{margin-inline-end:var(--g-spacing-3)}.g-s__ml_3{margin-inline-start:var(--g-spacing-3)}.g-s__mt_3{margin-block-start:var(--g-spacing-3)}.g-s__mb_3{margin-block-end:var(--g-spacing-3)}.g-s__mx_3{margin-inline:var(--g-spacing-3)}.g-s__my_3{margin-block:var(--g-spacing-3)}.g-s__p_3{padding:var(--g-spacing-3)}.g-s__pl_3{padding-inline-start:var(--g-spacing-3)}.g-s__pr_3{padding-inline-end:var(--g-spacing-3)}.g-s__pb_3{padding-block-end:var(--g-spacing-3)}.g-s__pt_3{padding-block-start:var(--g-spacing-3)}.g-s__py_3{padding-block:var(--g-spacing-3)}.g-s__px_3{padding-inline:var(--g-spacing-3)}.g-s__m_4{margin:var(--g-spacing-4)}.g-s__mr_4{margin-inline-end:var(--g-spacing-4)}.g-s__ml_4{margin-inline-start:var(--g-spacing-4)}.g-s__mt_4{margin-block-start:var(--g-spacing-4)}.g-s__mb_4{margin-block-end:var(--g-spacing-4)}.g-s__mx_4{margin-inline:var(--g-spacing-4)}.g-s__my_4{margin-block:var(--g-spacing-4)}.g-s__p_4{padding:var(--g-spacing-4)}.g-s__pl_4{padding-inline-start:var(--g-spacing-4)}.g-s__pr_4{padding-inline-end:var(--g-spacing-4)}.g-s__pb_4{padding-block-end:var(--g-spacing-4)}.g-s__pt_4{padding-block-start:var(--g-spacing-4)}.g-s__py_4{padding-block:var(--g-spacing-4)}.g-s__px_4{padding-inline:var(--g-spacing-4)}.g-s__m_5{margin:var(--g-spacing-5)}.g-s__mr_5{margin-inline-end:var(--g-spacing-5)}.g-s__ml_5{margin-inline-start:var(--g-spacing-5)}.g-s__mt_5{margin-block-start:var(--g-spacing-5)}.g-s__mb_5{margin-block-end:var(--g-spacing-5)}.g-s__mx_5{margin-inline:var(--g-spacing-5)}.g-s__my_5{margin-block:var(--g-spacing-5)}.g-s__p_5{padding:var(--g-spacing-5)}.g-s__pl_5{padding-inline-start:var(--g-spacing-5)}.g-s__pr_5{padding-inline-end:var(--g-spacing-5)}.g-s__pb_5{padding-block-end:var(--g-spacing-5)}.g-s__pt_5{padding-block-start:var(--g-spacing-5)}.g-s__py_5{padding-block:var(--g-spacing-5)}.g-s__px_5{padding-inline:var(--g-spacing-5)}.g-s__m_6{margin:var(--g-spacing-6)}.g-s__mr_6{margin-inline-end:var(--g-spacing-6)}.g-s__ml_6{margin-inline-start:var(--g-spacing-6)}.g-s__mt_6{margin-block-start:var(--g-spacing-6)}.g-s__mb_6{margin-block-end:var(--g-spacing-6)}.g-s__mx_6{margin-inline:var(--g-spacing-6)}.g-s__my_6{margin-block:var(--g-spacing-6)}.g-s__p_6{padding:var(--g-spacing-6)}.g-s__pl_6{padding-inline-start:var(--g-spacing-6)}.g-s__pr_6{padding-inline-end:var(--g-spacing-6)}.g-s__pb_6{padding-block-end:var(--g-spacing-6)}.g-s__pt_6{padding-block-start:var(--g-spacing-6)}.g-s__py_6{padding-block:var(--g-spacing-6)}.g-s__px_6{padding-inline:var(--g-spacing-6)}.g-s__m_7{margin:var(--g-spacing-7)}.g-s__mr_7{margin-inline-end:var(--g-spacing-7)}.g-s__ml_7{margin-inline-start:var(--g-spacing-7)}.g-s__mt_7{margin-block-start:var(--g-spacing-7)}.g-s__mb_7{margin-block-end:var(--g-spacing-7)}.g-s__mx_7{margin-inline:var(--g-spacing-7)}.g-s__my_7{margin-block:var(--g-spacing-7)}.g-s__p_7{padding:var(--g-spacing-7)}.g-s__pl_7{padding-inline-start:var(--g-spacing-7)}.g-s__pr_7{padding-inline-end:var(--g-spacing-7)}.g-s__pb_7{padding-block-end:var(--g-spacing-7)}.g-s__pt_7{padding-block-start:var(--g-spacing-7)}.g-s__py_7{padding-block:var(--g-spacing-7)}.g-s__px_7{padding-inline:var(--g-spacing-7)}.g-s__m_8{margin:var(--g-spacing-8)}.g-s__mr_8{margin-inline-end:var(--g-spacing-8)}.g-s__ml_8{margin-inline-start:var(--g-spacing-8)}.g-s__mt_8{margin-block-start:var(--g-spacing-8)}.g-s__mb_8{margin-block-end:var(--g-spacing-8)}.g-s__mx_8{margin-inline:var(--g-spacing-8)}.g-s__my_8{margin-block:var(--g-spacing-8)}.g-s__p_8{padding:var(--g-spacing-8)}.g-s__pl_8{padding-inline-start:var(--g-spacing-8)}.g-s__pr_8{padding-inline-end:var(--g-spacing-8)}.g-s__pb_8{padding-block-end:var(--g-spacing-8)}.g-s__pt_8{padding-block-start:var(--g-spacing-8)}.g-s__py_8{padding-block:var(--g-spacing-8)}.g-s__px_8{padding-inline:var(--g-spacing-8)}.g-s__m_9{margin:var(--g-spacing-9)}.g-s__mr_9{margin-inline-end:var(--g-spacing-9)}.g-s__ml_9{margin-inline-start:var(--g-spacing-9)}.g-s__mt_9{margin-block-start:var(--g-spacing-9)}.g-s__mb_9{margin-block-end:var(--g-spacing-9)}.g-s__mx_9{margin-inline:var(--g-spacing-9)}.g-s__my_9{margin-block:var(--g-spacing-9)}.g-s__p_9{padding:var(--g-spacing-9)}.g-s__pl_9{padding-inline-start:var(--g-spacing-9)}.g-s__pr_9{padding-inline-end:var(--g-spacing-9)}.g-s__pb_9{padding-block-end:var(--g-spacing-9)}.g-s__pt_9{padding-block-start:var(--g-spacing-9)}.g-s__py_9{padding-block:var(--g-spacing-9)}.g-s__px_9{padding-inline:var(--g-spacing-9)}.g-s__m_10{margin:var(--g-spacing-10)}.g-s__mr_10{margin-inline-end:var(--g-spacing-10)}.g-s__ml_10{margin-inline-start:var(--g-spacing-10)}.g-s__mt_10{margin-block-start:var(--g-spacing-10)}.g-s__mb_10{margin-block-end:var(--g-spacing-10)}.g-s__mx_10{margin-inline:var(--g-spacing-10)}.g-s__my_10{margin-block:var(--g-spacing-10)}.g-s__p_10{padding:var(--g-spacing-10)}.g-s__pl_10{padding-inline-start:var(--g-spacing-10)}.g-s__pr_10{padding-inline-end:var(--g-spacing-10)}.g-s__pb_10{padding-block-end:var(--g-spacing-10)}.g-s__pt_10{padding-block-start:var(--g-spacing-10)}.g-s__py_10{padding-block:var(--g-spacing-10)}.g-s__px_10{padding-inline:var(--g-spacing-10)}.g-text_variant_display-1{font-size:var(--g-text-display-1-font-size);font-weight:var(--g-text-display-font-weight);line-height:var(--g-text-display-1-line-height)}.g-text_variant_display-2{font-size:var(--g-text-display-2-font-size);font-weight:var(--g-text-display-font-weight);line-height:var(--g-text-display-2-line-height)}.g-text_variant_display-3{font-size:var(--g-text-display-3-font-size);font-weight:var(--g-text-display-font-weight);line-height:var(--g-text-display-3-line-height)}.g-text_variant_display-4{font-size:var(--g-text-display-4-font-size);font-weight:var(--g-text-display-font-weight);line-height:var(--g-text-display-4-line-height)}.g-text_variant_code-1{font-size:var(--g-text-code-1-font-size);line-height:var(--g-text-code-1-line-height)}.g-text_variant_code-1,.g-text_variant_code-2{font-family:var(--g-font-family-monospace);font-weight:var(--g-text-code-font-weight)}.g-text_variant_code-2{font-size:var(--g-text-code-2-font-size);line-height:var(--g-text-code-2-line-height)}.g-text_variant_code-3{font-size:var(--g-text-code-3-font-size);line-height:var(--g-text-code-3-line-height)}.g-text_variant_code-3,.g-text_variant_code-inline-1{font-family:var(--g-font-family-monospace);font-weight:var(--g-text-code-font-weight)}.g-text_variant_code-inline-1{font-size:var(--g-text-code-inline-1-font-size);line-height:var(--g-text-code-inline-1-line-height)}.g-text_variant_code-inline-2{font-size:var(--g-text-code-inline-2-font-size);line-height:var(--g-text-code-inline-2-line-height)}.g-text_variant_code-inline-2,.g-text_variant_code-inline-3{font-family:var(--g-font-family-monospace);font-weight:var(--g-text-code-font-weight)}.g-text_variant_code-inline-3{font-size:var(--g-text-code-inline-3-font-size);line-height:var(--g-text-code-inline-3-line-height)}.g-text_variant_body-1{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.g-text_variant_body-2{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.g-text_variant_body-3{font-size:var(--g-text-body-3-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-3-line-height)}.g-text_variant_body-short{font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-short-line-height)}.g-text_variant_caption-1{font-size:var(--g-text-caption-1-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-1-line-height)}.g-text_variant_caption-2{font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height)}.g-text_variant_header-1{font-size:var(--g-text-header-1-font-size);font-weight:var(--g-text-header-font-weight);line-height:var(--g-text-header-1-line-height)}.g-text_variant_header-2{font-size:var(--g-text-header-2-font-size);font-weight:var(--g-text-header-font-weight);line-height:var(--g-text-header-2-line-height)}.g-text_variant_subheader-1{font-size:var(--g-text-subheader-1-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-1-line-height)}.g-text_variant_subheader-2{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height)}.g-text_variant_subheader-3{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.g-text_ellipsis{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-text_ellipsis-lines{-webkit-box-orient:vertical;-webkit-line-clamp:2;align-self:center;display:-webkit-box;overflow:hidden;white-space:normal}.g-text_ws_nowrap{white-space:nowrap}.g-text_ws_break-spaces{white-space:break-spaces}.g-text_wb_break-all{word-break:break-all}.g-text_wb_break-word{word-break:break-word}.g-color-text_color_primary{color:var(--g-color-text-primary)}.g-color-text_color_complementary{color:var(--g-color-text-complementary)}.g-color-text_color_secondary{color:var(--g-color-text-secondary)}.g-color-text_color_hint{color:var(--g-color-text-hint)}.g-color-text_color_info{color:var(--g-color-text-info)}.g-color-text_color_info-heavy{color:var(--g-color-text-info-heavy)}.g-color-text_color_positive{color:var(--g-color-text-positive)}.g-color-text_color_positive-heavy{color:var(--g-color-text-positive-heavy)}.g-color-text_color_warning{color:var(--g-color-text-warning)}.g-color-text_color_warning-heavy{color:var(--g-color-text-warning-heavy)}.g-color-text_color_danger{color:var(--g-color-text-danger)}.g-color-text_color_danger-heavy{color:var(--g-color-text-danger-heavy)}.g-color-text_color_utility{color:var(--g-color-text-utility)}.g-color-text_color_utility-heavy{color:var(--g-color-text-utility-heavy)}.g-color-text_color_misc{color:var(--g-color-text-misc)}.g-color-text_color_misc-heavy{color:var(--g-color-text-misc-heavy)}.g-color-text_color_brand{color:var(--g-color-text-brand)}.g-color-text_color_link{color:var(--g-color-text-link)}.g-color-text_color_link-hover{color:var(--g-color-text-link-hover)}.g-color-text_color_link-visited{color:var(--g-color-text-link-visited)}.g-color-text_color_link-visited-hover{color:var(--g-color-text-link-visited-hover)}.g-color-text_color_dark-primary{color:var(--g-color-text-dark-primary)}.g-color-text_color_dark-complementary{color:var(--g-color-text-dark-complementary)}.g-color-text_color_dark-secondary{color:var(--g-color-text-dark-secondary)}.g-color-text_color_light-primary{color:var(--g-color-text-light-primary)}.g-color-text_color_light-complementary{color:var(--g-color-text-light-complementary)}.g-color-text_color_light-secondary{color:var(--g-color-text-light-secondary)}.g-color-text_color_light-hint{color:var(--g-color-text-light-hint)}.g-color-text_color_inverted-primary{color:var(--g-color-text-inverted-primary)}.g-color-text_color_inverted-complementary{color:var(--g-color-text-inverted-complementary)}.g-color-text_color_inverted-secondary{color:var(--g-color-text-inverted-secondary)}.g-color-text_color_inverted-hint{color:var(--g-color-text-inverted-hint)}.ydb-user-settings__item-with-popup{max-width:180px}.ydb-user-settings__popup{max-width:370px}.kv-ydb-internal-user{align-items:center;display:flex;flex-grow:1;justify-content:space-between;line-height:var(--g-text-body-2-line-height);margin-left:16px}.kv-ydb-internal-user__user-info-wrapper{display:flex;flex-direction:column}.kv-ydb-internal-user__ydb-internal-user-title{font-weight:500}.kv-ydb-internal-user__ydb-user-wrapper{padding:10px;width:300px}.info-viewer{--ydb-info-viewer-font-size:var(--g-text-body-2-font-size);--ydb-info-viewer-line-height:var(--g-text-body-2-line-height);--ydb-info-viewer-title-font-weight:600;--ydb-info-viewer-title-margin:15px 0 10px;--ydb-info-viewer-items-gap:7px;font-size:var(--ydb-info-viewer-font-size);line-height:var(--ydb-info-viewer-line-height)}.info-viewer__title{font-weight:var(--ydb-info-viewer-title-font-weight);margin:var(--ydb-info-viewer-title-margin)}.info-viewer__items{display:flex;flex-direction:column;gap:var(--ydb-info-viewer-items-gap);max-width:100%}.info-viewer__row{align-items:baseline;display:flex;max-width:100%;padding-top:4px}.info-viewer__label{align-items:baseline;color:var(--g-color-text-secondary);display:flex;flex:0 1 auto;min-width:200px;white-space:nowrap}.info-viewer__label-text_multiline{max-width:180px;overflow:visible;white-space:normal}.info-viewer__dots{border-bottom:1px dotted var(--g-color-text-secondary);display:flex;flex:1 1 auto;margin:0 2px}.info-viewer__value{display:flex;min-width:130px;word-break:break-all}.info-viewer_size_s{--ydb-info-viewer-font-size:var(--g-text-body-1-font-size);--ydb-info-viewer-line-height:var(--g-text-body-1-line-height);--ydb-info-viewer-title-font-weight:500;--ydb-info-viewer-title-margin:0 0 4px;--ydb-info-viewer-items-gap:4px}.info-viewer_size_s .info-viewer__row{height:auto}.info-viewer_size_s .info-viewer__label{min-width:85px}.ydb-node-endpoints-tooltip-content .info-viewer__value{min-width:70px}.popup2{animation:none!important;max-width:300px}.histogram-tooltip,.node-tootltip,.tabletsOverall-tooltip{padding:10px}.histogram-tooltip__label,.node-tootltip__label,.tabletsOverall-tooltip__label{color:var(--g-color-text-secondary);padding-right:15px}.json-tooltip{padding:20px 20px 20px 0}.json-tooltip__inspector{font-family:var(--g-font-family-monospace)!important;font-size:var(--g-text-code-1-font-size)!important;line-height:var(--g-text-code-1-line-height)!important}.json-tooltip__inspector .json-inspector__leaf_composite:before{color:var(--g-color-text-secondary);font-size:9px;left:20px;position:absolute}.json-tooltip__inspector .json-inspector__leaf_composite.json-inspector__leaf_root:before{left:0}.json-tooltip__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:"[+]"}.json-tooltip__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before{content:"[-]"}.json-tooltip__inspector .json-inspector__key{color:var(--g-color-text-misc)}.json-tooltip__inspector .json-inspector__leaf{padding-left:20px;position:relative}.json-tooltip__inspector .json-inspector__leaf_root{padding-left:0}.json-tooltip__inspector .json-inspector__line{padding-left:20px}.json-tooltip__inspector .json-inspector__toolbar{border:1px solid var(--g-color-line-generic);border-radius:4px;margin-bottom:10px;width:300px}.json-tooltip__inspector .json-inspector__search{background:none;border:0 solid #0000;border-width:0 22px 0 8px;box-sizing:border-box;color:var(--g-color-text-primary);font-family:var(--g-text-body-font-family);font-size:13px;height:28px;margin:0;outline:0;padding:0;vertical-align:top;width:300px}.json-tooltip__inspector .json-inspector__value_helper{color:var(--g-color-text-secondary)}.json-tooltip__inspector .json-inspector__line:hover:after{background:var(--g-color-base-simple-hover)}.json-tooltip__inspector .json-inspector__show-original:before{color:var(--g-color-text-secondary)}.json-tooltip__inspector .json-inspector__show-original:hover:after,.json-tooltip__inspector .json-inspector__show-original:hover:before{color:var(--g-color-text-primary)}.json-tooltip__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before,.json-tooltip__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:""}.json-tooltip__inspector .json-inspector__line:hover:after{background:#0000}.json-tooltip__inspector .json-inspector__show-original:hover:after,.json-tooltip__inspector .json-inspector__show-original:hover:before{color:#0000}.json-tooltip__inspector .json-inspector__value_helper{display:none}.cell-tooltip{padding:10px;word-break:break-word}.authentication{align-items:center;background-blend-mode:normal;background-color:#b8d4fd1a;background-image:radial-gradient(at 0 100%,#0066ff26 20%,#f7f7f700 40%),radial-gradient(at 55% 0,#0066ff26 20%,#f7f7f700 40%),radial-gradient(at 110% 100%,#0066ff26 20%,#f7f7f700 40%);display:flex;height:100%;justify-content:center}.authentication .g-text-input{display:flex}.authentication__header{align-items:center;display:flex;font-size:var(--g-text-body-1-font-size);justify-content:space-between;line-height:var(--g-text-header-1-line-height);width:100%}.authentication__logo{align-items:center;display:flex;font-size:16px;font-weight:600;gap:8px}.authentication__title{font-size:var(--g-text-header-2-font-size);font-weight:600;line-height:var(--g-text-header-2-line-height);margin:34px 0 16px}.authentication__form-wrapper{align-items:center;background-color:var(--g-color-base-background);border-radius:16px;display:flex;flex-direction:column;flex-shrink:0;justify-content:center;min-width:320px;padding:40px;width:400px}.authentication__field-wrapper{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:16px;width:320px}.authentication__field-wrapper .g-text-input_state_error{flex-direction:column}.authentication__button-sign-in{display:inline-flex;justify-content:center}.authentication__show-password-button{margin-left:4px}.authentication__close{position:absolute;right:40px;top:40px}.g-tooltip[class]{--g-popup-border-width:0}.g-tooltip[class]>div{animation-duration:.001ms;box-shadow:0 1px 5px 0 #00000026;box-sizing:border-box;max-width:360px;padding:4px 8px}.g-tooltip__content{-webkit-box-orient:vertical;-ms-box-orient:vertical;-webkit-line-clamp:20;-moz-line-clamp:20;-ms-line-clamp:20;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.ydb-status-icon__status-color_state_green{background-color:var(--ydb-color-status-green)}.ydb-status-icon__status-color_state_yellow{background-color:var(--ydb-color-status-yellow)}.ydb-status-icon__status-color_state_blue{background-color:var(--ydb-color-status-blue)}.ydb-status-icon__status-color_state_red{background-color:var(--ydb-color-status-red)}.ydb-status-icon__status-color_state_grey{background-color:var(--ydb-color-status-grey)}.ydb-status-icon__status-color_state_orange{background-color:var(--ydb-color-status-orange)}.ydb-status-icon__status-icon_state_blue{color:var(--ydb-color-status-blue)}.ydb-status-icon__status-icon_state_yellow{color:var(--ydb-color-status-yellow)}.ydb-status-icon__status-icon_state_orange{color:var(--ydb-color-status-orange)}.ydb-status-icon__status-icon_state_red{color:var(--ydb-color-status-red)}.ydb-status-icon__status-color,.ydb-status-icon__status-icon{border-radius:3px;flex-shrink:0}.ydb-status-icon__status-color_size_xs,.ydb-status-icon__status-icon_size_xs{aspect-ratio:1;height:12px;width:12px}.ydb-status-icon__status-color_size_s,.ydb-status-icon__status-icon_size_s{aspect-ratio:1;height:16px;width:16px}.ydb-status-icon__status-color_size_m,.ydb-status-icon__status-icon_size_m{aspect-ratio:1;height:18px;width:18px}.ydb-status-icon__status-color_size_l,.ydb-status-icon__status-icon_size_l{height:24px;width:24px}.entity-status{align-items:center;display:inline-flex;font-size:var(--g-text-body-2-font-size);height:100%;line-height:var(--g-text-body-2-line-height);max-width:100%}.entity-status__icon{margin-right:8px}.entity-status__clipboard-button{color:var(--g-color-text-secondary);display:flex;flex-shrink:0;margin-left:8px;opacity:0}.entity-status__clipboard-button:focus-visible,.entity-status__clipboard-button_visible{opacity:1}.entity-status__label{color:var(--g-color-text-complementary);font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);margin-right:2px}.entity-status__label_size_l{font-size:var(--g-text-header-2-font-size)}.entity-status__link{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entity-status__link_with-left-trim{direction:rtl}.entity-status__link_with-left-trim .entity-status__name{unicode-bidi:plaintext}.entity-status__label_state_blue{color:var(--ydb-color-status-blue)}.entity-status__label_state_yellow{color:var(--ydb-color-status-yellow)}.entity-status__label_state_orange{color:var(--ydb-color-status-orange)}.entity-status__label_state_red{color:var(--ydb-color-status-red)}.empty-state{padding:20px}.empty-state_size_m{height:400px}.empty-state__wrapper{display:grid;grid-template-areas:"image title" "image description" "image actions"}.empty-state__wrapper_size_s{height:120px;width:460px}.empty-state__wrapper_size_m{height:240px;width:800px}.empty-state__wrapper_position_center{margin:0 auto;position:relative}.empty-state__image{color:var(--g-color-base-info-light-hover);grid-area:image;justify-self:end;margin-right:60px}.g-root_theme_dark .empty-state__image{color:var(--g-color-base-generic)}.empty-state__title{align-self:center;font-weight:500;grid-area:title}.empty-state__title_size_s{font-size:var(--g-text-subheader-3-font-size);line-height:var(--g-text-subheader-3-line-height)}.empty-state__title_size_m{font-size:var(--g-text-header-2-font-size);line-height:var(--g-text-header-2-line-height)}.empty-state__description{font-size:var(--g-text-body-2-font-size);grid-area:description;line-height:var(--g-text-body-2-line-height)}.empty-state__actions{grid-area:actions}.empty-state__actions>*{margin-right:8px}.ydb-resizeable-data-table{display:flex;padding-right:20px;width:-webkit-max-content;width:max-content}.ydb-search{min-width:100px}.table-skeleton{width:100%}.table-skeleton__row{align-items:center;display:flex;height:var(--data-table-row-height)}.table-skeleton__row .g-skeleton{height:var(--g-text-body-2-line-height)}.table-skeleton__col-1{margin-right:5%;width:10%}.table-skeleton__col-2{margin-right:5%;width:7%}.table-skeleton__col-3,.table-skeleton__col-4{margin-right:5%;width:5%}.table-skeleton__col-5{width:20%}.table-skeleton__col-full{width:100%}.g-skeleton{--_--animation-from:calc(-100%*var(--g-flow-direction));--_--animation-to:calc(100%*var(--g-flow-direction));--_--gradient-deg:calc(90deg*var(--g-flow-direction));background-color:var(--g-color-base-generic);border-radius:5px;display:inline-block;overflow:hidden;position:relative;width:100%;z-index:0}.g-skeleton:after{animation:g-skeleton 1.2s ease-out infinite;background-image:linear-gradient(var(--_--gradient-deg),#0000,var(--g-color-base-generic));content:"";inset:0;position:absolute}@keyframes g-skeleton{0%{transform:translateX(var(--_--animation-from))}to{transform:translateX(var(--_--animation-to))}}.ydb-table-with-controls-layout{box-sizing:border-box;display:inline-block;min-width:100%}.ydb-table-with-controls-layout__controls-wrapper{box-sizing:border-box;width:100%}.ydb-table-with-controls-layout__controls,.ydb-table-with-controls-layout__controls-wrapper{background-color:var(--g-color-base-background);left:0;position:-webkit-sticky;position:sticky;top:0;z-index:3}.ydb-table-with-controls-layout__controls{align-items:center;display:flex;gap:12px;height:62px;padding:16px 0 18px;width:-webkit-max-content;width:max-content}.ydb-table-with-controls-layout .ydb-virtual-table__head{top:62px}.ydb-table-with-controls-layout .data-table__sticky_moving{top:62px!important}.ydb-cell-with-popover{display:flex;max-width:100%}.ydb-cell-with-popover__popover{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.ydb-cell-with-popover__popover .g-popover__handler{display:inline}.ydb-node-host-wrapper__external-button{display:none;flex-shrink:0;margin-left:4px}.data-table__row:hover .ydb-node-host-wrapper__external-button,.ydb-virtual-table__row:hover .ydb-node-host-wrapper__external-button{display:inline-flex}.ydb-pool-bar{border:1px solid;border-radius:1px;cursor:pointer;height:20px;margin-right:2px;position:relative;width:6px}.ydb-pool-bar__popup-content{padding:10px;width:170px}.ydb-pool-bar:last-child{margin-right:0}.ydb-pool-bar_type_normal{border-color:var(--ydb-color-status-green)}.ydb-pool-bar_type_warning{border-color:var(--ydb-color-status-yellow)}.ydb-pool-bar_type_danger{border-color:var(--ydb-color-status-red)}.ydb-pool-bar__value{bottom:0;min-height:1px;position:absolute;width:100%}.ydb-pool-bar__value_type_normal{background-color:var(--ydb-color-status-green)}.ydb-pool-bar__value_type_warning{background-color:var(--ydb-color-status-yellow)}.ydb-pool-bar__value_type_danger{background-color:var(--ydb-color-status-red)}.ydb-pools-graph{display:flex}.progress-viewer{align-items:center;background:var(--g-color-base-generic);border-radius:2px;color:var(--g-color-text-complementary);display:flex;font-size:var(--g-text-body-2-font-size);height:23px;justify-content:center;min-width:120px;overflow:hidden;padding:0 4px;position:relative;white-space:nowrap;z-index:0}.progress-viewer_theme_dark{color:var(--g-color-text-light-primary)}.progress-viewer_theme_dark .progress-viewer__line{opacity:.75}.progress-viewer_status_good{background-color:var(--g-color-base-positive-light)}.progress-viewer_status_good .progress-viewer__line{background-color:var(--ydb-color-status-green)}.progress-viewer_status_warning{background-color:var(--g-color-base-yellow-light)}.progress-viewer_status_warning .progress-viewer__line{background-color:var(--ydb-color-status-yellow)}.progress-viewer_status_danger{background-color:var(--g-color-base-danger-light)}.progress-viewer_status_danger .progress-viewer__line{background-color:var(--ydb-color-status-red)}.progress-viewer__line{height:100%;left:0;position:absolute;top:0}.progress-viewer__text{position:relative;z-index:1}.progress-viewer_size_xs{font-size:var(--g-text-body-2-font-size);height:20px;line-height:var(--g-text-body-2-line-height)}.progress-viewer_size_s{font-size:var(--g-text-body-1-font-size);height:28px;line-height:28px}.progress-viewer_size_m{font-size:var(--g-text-body-2-font-size);height:32px;line-height:32px}.progress-viewer_size_ns{font-size:13px;height:24px;line-height:var(--g-text-subheader-3-line-height)}.progress-viewer_size_n{font-size:var(--g-text-body-1-font-size);height:36px;line-height:36px}.progress-viewer_size_l{font-size:var(--g-text-subheader-3-font-size);height:38px;line-height:38px}.progress-viewer_size_head{font-size:var(--g-text-body-1-font-size);line-height:36px}.tablets-statistic{align-items:center;display:flex;gap:2px}.tablets-statistic__tablet{border:1px solid;border-radius:2px;color:var(--g-color-text-secondary);display:inline-block;font-size:11px;height:20px;line-height:20px;padding:0 4px;text-align:center;text-decoration:none;text-transform:uppercase}.tablets-statistic__tablet_state_green{background-color:var(--g-color-base-positive-light);color:var(--g-color-text-positive)}.tablets-statistic__tablet_state_yellow{background-color:var(--g-color-base-warning-light);color:var(--g-color-text-warning)}.tablets-statistic__tablet_state_blue{background-color:var(--g-color-base-info-light);color:var(--g-color-text-info)}.tablets-statistic__tablet_state_orange{background-color:var(--g-color-base-warning-light);color:var(--g-color-text-warning-heavy)}.tablets-statistic__tablet_state_red{background:var(--g-color-base-danger-light);color:var(--g-color-text-danger)}.tablets-statistic__tablet_state_grey{border:1px solid var(--g-color-line-generic-hover);color:var(--g-color-text-secondary)}.ydb-usage-label_overload{background-color:var(--ydb-color-status-red);color:var(--g-color-text-light-primary)}.ydb-nodes__search{width:238px}.ydb-nodes__show-all-wrapper{left:0;margin-bottom:15px;position:-webkit-sticky;position:sticky}.ydb-nodes__node_unavailable{opacity:.6}.ydb-virtual-table{--virtual-table-cell-vertical-padding:5px;--virtual-table-cell-horizontal-padding:10px;--virtual-table-border-color:var(--g-color-base-generic-hover);--virtual-table-hover-color:var(--g-color-base-float-hover);font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);width:100%}.ydb-virtual-table__table{border-collapse:initial;border-spacing:0;max-width:100%;table-layout:fixed;width:-webkit-max-content;width:max-content}.ydb-virtual-table__table th{padding:0}.ydb-virtual-table__row:hover{background:var(--virtual-table-hover-color)}.ydb-virtual-table__row_empty:hover{background-color:initial}.ydb-virtual-table__head{background-color:var(--g-color-base-background);left:0;position:-webkit-sticky;position:sticky;top:0;z-index:1}.ydb-virtual-table__sort-icon-container{color:inherit;display:flex;justify-content:center}.ydb-virtual-table__sort-icon-container_shadow{opacity:.15}.ydb-virtual-table__sort-icon_desc{transform:rotate(180deg)}.ydb-virtual-table__head-cell-wrapper{border-bottom:1px solid var(--virtual-table-border-color);display:flex;overflow-x:hidden;position:relative}.ydb-virtual-table__head-cell{align-items:center;display:flex;flex-direction:row;max-width:100%;padding:var(--virtual-table-cell-vertical-padding) var(--virtual-table-cell-horizontal-padding);width:100%}.ydb-virtual-table__head-cell_align_left{justify-content:left}.ydb-virtual-table__head-cell_align_center{justify-content:center}.ydb-virtual-table__head-cell_align_right{justify-content:right}.ydb-virtual-table__head-cell{cursor:default;font-weight:700;gap:8px}.ydb-virtual-table__head-cell_sortable{cursor:pointer}.ydb-virtual-table__head-cell_sortable.ydb-virtual-table__head-cell_align_right{flex-direction:row-reverse}.ydb-virtual-table__head-cell-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:-webkit-min-content;width:min-content}.ydb-virtual-table__row-cell{border-bottom:1px solid var(--virtual-table-border-color);display:table-cell;max-width:100%;overflow-x:hidden;padding:var(--virtual-table-cell-vertical-padding) var(--virtual-table-cell-horizontal-padding);text-overflow:ellipsis;vertical-align:middle;white-space:nowrap;width:100%}.ydb-virtual-table__row-cell_align_left{text-align:left}.ydb-virtual-table__row-cell_align_center{text-align:center}.ydb-virtual-table__row-cell_align_right{text-align:right}.ydb-virtual-table__resize-handler{background-color:var(--g-color-base-generic);cursor:col-resize;height:100%;position:absolute;right:0;top:0;visibility:hidden;width:6px}.ydb-virtual-table__head-cell-wrapper:hover>.ydb-virtual-table__resize-handler,.ydb-virtual-table__resize-handler_resizing{visibility:visible}.usage-filter{min-width:100px}.usage-filter__option{flex-grow:1}.usage-filter__option-title{font-size:var(--g-text-body-1-font-size);height:var(--g-text-body-1-line-height);line-height:var(--g-text-body-1-line-height)}.usage-filter__option-meta{border-radius:3px;font-size:var(--g-text-caption-2-font-size);line-height:var(--g-text-caption-2-line-height);padding:0 5px;position:relative;z-index:0}.usage-filter__option-bar{background-color:var(--g-color-base-info-medium);border-radius:3px;bottom:0;left:0;position:absolute;top:0;z-index:-1}.g-select{display:inline-block;max-width:100%}.g-list,.g-select_width_max{width:100%}.g-list{--_--item-padding:var(--g-list-item-padding,0);display:flex;flex:1 1 auto;flex-direction:column;outline:none}.g-list__filter{flex:0 0 auto;margin-block-end:8px;padding:var(--_--item-padding)}.g-list__items{flex:1 1 auto}.g-list__empty-placeholder,.g-list__item{align-items:center;box-sizing:border-box;display:flex;overflow:hidden;padding:var(--_--item-padding);-webkit-user-select:none;user-select:none}.g-list__item_active{background:var(--g-color-base-simple-hover)}.g-list__item_selected{background:var(--g-color-base-selection)}.g-list__item_selected:hover{background:var(--g-color-base-selection-hover)}.g-list__item_sort-handle-align_right{flex-direction:row-reverse}.g-list__item_sort-handle-align_right .g-list__item-sort-icon{margin-inline:10px 0}.g-list__item_sortable[data-rbd-drag-handle-context-id]:active{cursor:grabbing}.g-list__item_dragging{background:var(--g-color-base-simple-hover-solid);z-index:100001}.g-list__empty-placeholder{box-sizing:border-box;color:var(--g-color-text-hint);min-height:36px;padding-block:8px}.g-list__item-content{align-items:center;display:flex;flex:1 1 auto;height:100%;overflow:hidden;text-overflow:ellipsis}.g-list__item-sort-icon{align-items:center;color:var(--g-color-text-hint);display:flex;flex:0 0 auto;margin-inline-end:4px;width:12px}.g-list__loading-indicator{align-items:center;display:flex;justify-content:center;width:100%}.g-select-filter .g-select-filter__input,.g-select-filter .g-select-filter__input:focus,.g-select-filter .g-select-filter__input:hover{border-color:var(--g-color-line-generic-active)}.g-select-list{display:flex;margin:4px 0;overflow:hidden}.g-popup .g-select-list:first-child,.g-popup .g-select-list:last-child{border-radius:0}.g-select-list:not(.g-select-list_virtualized){overflow:auto}.g-select-list_mobile{max-height:calc(90vh - 20px)}.g-select-list__group-label,.g-select-list__group-label-custom{box-sizing:border-box;height:auto;padding:0;position:relative;width:100%}.g-select-list__group-label{font-size:var(--g-text-body-1-font-size)}.g-select-list_size_s .g-select-list__group-label:not(.g-select-list__group-label_empty){height:24px;padding:8px 8px 4px}.g-select-list_size_m .g-select-list__group-label:not(.g-select-list__group-label_empty){height:28px;padding:8px 8px 4px}.g-select-list_size_l .g-select-list__group-label:not(.g-select-list__group-label_empty){height:36px;padding:10px 12px 6px}.g-select-list_size_xl .g-select-list__group-label:not(.g-select-list__group-label_empty){font-size:var(--g-text-body-2-font-size);height:44px;padding:12px 12px 8px}.g-select-list_mobile .g-select-list__group-label:not(.g-select-list__group-label_empty){font-size:var(--g-text-body-2-font-size);height:36px;padding:12px 12px 8px}.g-select-list__item:not(:first-child) .g-select-list__group-label{margin-block-start:5px}.g-select-list__item:not(:first-child) .g-select-list__group-label:before{background-color:var(--g-color-line-generic);content:"";height:1px;inset-block-start:-3px;inset-inline-start:0;position:absolute;width:100%}.g-select-list__group-label-content{font-weight:var(--g-text-accent-font-weight);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.g-select-list__item.g-list__item_selected{background:none}.g-select-list__item.g-list__item_active,.g-select-list__item.g-list__item_selected:hover{background:var(--g-color-base-simple-hover)}.g-select-list__option{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;height:100%;width:100%}.g-select-list_size_s .g-select-list__option{--_--select-tick-icon-padding-right:4px;padding:0 8px}.g-select-list_size_s .g-select-list__option .g-select-list__option-default-label{height:24px;line-height:24px}.g-select-list_size_m .g-select-list__option{--_--select-tick-icon-padding-right:4px;padding:0 8px}.g-select-list_size_m .g-select-list__option .g-select-list__option-default-label{height:28px;line-height:28px}.g-select-list_size_l .g-select-list__option{--_--select-tick-icon-padding-right:6px;padding:0 12px}.g-select-list_size_l .g-select-list__option .g-select-list__option-default-label{height:36px;line-height:36px}.g-select-list_size_xl .g-select-list__option{--_--select-tick-icon-padding-right:6px;padding:0 12px}.g-select-list_size_xl .g-select-list__option .g-select-list__option-default-label{font-size:var(--g-text-body-2-font-size);height:44px;line-height:44px}.g-select-list_mobile .g-select-list__option{padding:0 12px}.g-select-list_mobile .g-select-list__option .g-select-list__option-default-label{font-size:var(--g-text-body-2-font-size);height:36px;line-height:36px}.g-select-list_mobile .g-select-list__option .g-select-list__tick-icon{padding-inline-end:6px}.g-select-list__option_colored{background-color:var(--g-color-base-selection)}.g-select-list__option_disabled{cursor:default}.g-select-list__option-default-label{font-size:var(--g-text-body-1-font-size);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.g-select-list__option-default-label_disabled{color:var(--g-color-text-secondary)}.g-select-list__tick-icon{box-sizing:initial;color:var(--g-color-text-info);flex:0 0 16px;padding-inline-end:var(--_--select-tick-icon-padding-right);visibility:hidden}.g-select-list__tick-icon_shown{visibility:visible}.g-select-list__loading-indicator{align-items:center;display:flex;justify-content:center;width:100%}.g-select-empty-placeholder{color:var(--g-color-text-hint);margin:4px}.g-select-empty-placeholder_empty{margin-block-start:0}.g-select-control{--_--focus-outline-color:var(--g-select-focus-outline-color);align-items:center;background:none;border:none;box-sizing:border-box;color:inherit;cursor:pointer;display:inline-flex;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);outline:none;padding:0;position:relative;transition:transform .1s ease-out;width:100%;z-index:0}.g-select-control_disabled{cursor:default}.g-select-control_size_s{--_--text-right-padding:8px;--_--border-radius:var(--g-border-radius-s);height:24px;padding:4px calc(var(--_--text-right-padding) + 1px)}.g-select-control_size_m{--_--text-right-padding:8px;--_--border-radius:var(--g-border-radius-m);height:28px;padding:6px calc(var(--_--text-right-padding) + 1px)}.g-select-control_size_l{--_--text-right-padding:12px;--_--border-radius:var(--g-border-radius-l);height:36px;padding:10px calc(var(--_--text-right-padding) + 1px)}.g-select-control_size_xl{--_--text-right-padding:12px;--_--border-radius:var(--g-border-radius-xl);height:44px;padding:12px calc(var(--_--text-right-padding) + 1px)}.g-select-control__button{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);height:100%;outline:none;overflow:hidden;padding:0;transition:color .15s linear,background-color .15s linear;width:100%}.g-select-control__button.g-select-control__button_pin_round-round:before{border-radius:var(--_--border-radius)}.g-select-control__button.g-select-control__button_pin_brick-brick:before{border-radius:0}.g-select-control__button.g-select-control__button_pin_clear-clear:before{border-inline:0;border-radius:0}.g-select-control__button.g-select-control__button_pin_circle-circle:before{border-radius:100px}.g-select-control__button.g-select-control__button_pin_round-brick:before{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-start-end-radius:0;border-start-start-radius:var(--_--border-radius)}.g-select-control__button.g-select-control__button_pin_brick-round:before{border-end-end-radius:var(--_--border-radius);border-end-start-radius:0;border-start-end-radius:var(--_--border-radius);border-start-start-radius:0}.g-select-control__button.g-select-control__button_pin_round-clear:before{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-inline-end:0;border-start-end-radius:0;border-start-start-radius:var(--_--border-radius)}.g-select-control__button.g-select-control__button_pin_clear-round:before{border-end-end-radius:var(--_--border-radius);border-end-start-radius:0;border-inline-start:0;border-start-end-radius:var(--_--border-radius);border-start-start-radius:0}.g-select-control__button.g-select-control__button_pin_brick-clear:before{border-inline-end:0;border-radius:0}.g-select-control__button.g-select-control__button_pin_clear-brick:before{border-inline-start:0;border-radius:0}.g-select-control__button.g-select-control__button_pin_circle-brick:before{border-end-end-radius:0;border-end-start-radius:100px;border-start-end-radius:0;border-start-start-radius:100px}.g-select-control__button.g-select-control__button_pin_brick-circle:before{border-end-end-radius:100px;border-end-start-radius:0;border-start-end-radius:100px;border-start-start-radius:0}.g-select-control__button.g-select-control__button_pin_circle-clear:before{border-end-end-radius:0;border-end-start-radius:100px;border-inline-end:0;border-start-end-radius:0;border-start-start-radius:100px}.g-select-control__button.g-select-control__button_pin_clear-circle:before{border-end-end-radius:100px;border-end-start-radius:0;border-inline-start:0;border-start-end-radius:100px;border-start-start-radius:0}.g-select-control__button.g-select-control__button_pin_round-round:after{border-radius:var(--_--border-radius)}.g-select-control__button.g-select-control__button_pin_brick-brick:after{border-radius:0}.g-select-control__button.g-select-control__button_pin_clear-clear:after{border-inline:0;border-radius:0}.g-select-control__button.g-select-control__button_pin_circle-circle:after{border-radius:100px}.g-select-control__button.g-select-control__button_pin_round-brick:after{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-start-end-radius:0;border-start-start-radius:var(--_--border-radius)}.g-select-control__button.g-select-control__button_pin_brick-round:after{border-end-end-radius:var(--_--border-radius);border-end-start-radius:0;border-start-end-radius:var(--_--border-radius);border-start-start-radius:0}.g-select-control__button.g-select-control__button_pin_round-clear:after{border-end-end-radius:0;border-end-start-radius:var(--_--border-radius);border-inline-end:0;border-start-end-radius:0;border-start-start-radius:var(--_--border-radius)}.g-select-control__button.g-select-control__button_pin_clear-round:after{border-end-end-radius:var(--_--border-radius);border-end-start-radius:0;border-inline-start:0;border-start-end-radius:var(--_--border-radius);border-start-start-radius:0}.g-select-control__button.g-select-control__button_pin_brick-clear:after{border-inline-end:0;border-radius:0}.g-select-control__button.g-select-control__button_pin_clear-brick:after{border-inline-start:0;border-radius:0}.g-select-control__button.g-select-control__button_pin_circle-brick:after{border-end-end-radius:0;border-end-start-radius:100px;border-start-end-radius:0;border-start-start-radius:100px}.g-select-control__button.g-select-control__button_pin_brick-circle:after{border-end-end-radius:100px;border-end-start-radius:0;border-start-end-radius:100px;border-start-start-radius:0}.g-select-control__button.g-select-control__button_pin_circle-clear:after{border-end-end-radius:0;border-end-start-radius:100px;border-inline-end:0;border-start-end-radius:0;border-start-start-radius:100px}.g-select-control__button.g-select-control__button_pin_clear-circle:after{border-end-end-radius:100px;border-end-start-radius:0;border-inline-start:0;border-start-end-radius:100px;border-start-start-radius:0}.g-select-control__button:before{border:1px solid var(--g-color-line-generic);border-radius:var(--_--border-radius);content:"";inset:0;position:absolute}.g-select-control__button:after{content:"";inset:0;position:absolute;z-index:-1}.g-select-control__button_view_clear,.g-select-control__button_view_clear:after,.g-select-control__button_view_clear:before{border-color:#0000}.g-select-control__button_size_l,.g-select-control__button_size_m,.g-select-control__button_size_s{font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-short-line-height)}.g-select-control__button_size_xl{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.g-select-control__button_error:before{--_--focus-outline-color:var(--g-color-line-danger);border-color:var(--g-color-line-danger)}.g-select-control__button:hover:after{background-color:var(--g-color-base-simple-hover)}.g-select-control__button_disabled{color:var(--g-color-text-hint);pointer-events:none}.g-select-control__button_disabled:after{background-color:var(--g-color-base-generic-accent-disabled)}.g-select-control__button_disabled:before{border-color:#0000}.g-select-control__button:not(.g-select-control__button_error):not(.g-select-control__button_disabled):not(.g-select-control__button_view_clear):hover:before{border-color:var(--g-color-line-generic-hover)}.g-select-control__button:not(.g-select-control__button_error):not(.g-select-control__button_view_clear):focus-visible:before,.g-select-control__button_open:not(.g-select-control__button_error):not(.g-select-control__button_view_clear):before{border-color:var(--g-color-line-generic-active)}.g-select-control__button:focus-visible:before{outline:2px solid var(--_--focus-outline-color);outline:2px solid var(--g-select-focus-outline-color,var(--_--focus-outline-color));outline-offset:-1px}.g-select-control:not(.g-select-control_disabled):not(.g-select-control_no-active):active{transform:scale(.96)}.g-select-control__label{flex-shrink:0;font-weight:var(--g-text-accent-font-weight);margin-inline-end:4px;max-width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-select-control__option-text,.g-select-control__placeholder{overflow:hidden;padding-inline-end:var(--_--text-right-padding);text-overflow:ellipsis;white-space:nowrap}.g-select-control_has-clear.g-select-control_size_s .g-select-control__button_disabled .g-select-control__option-text,.g-select-control_has-clear.g-select-control_size_s .g-select-control__button_disabled .g-select-control__placeholder{padding-inline-end:calc(24px + var(--_--text-right-padding))}.g-select-control_has-clear.g-select-control_size_m .g-select-control__button_disabled .g-select-control__option-text,.g-select-control_has-clear.g-select-control_size_m .g-select-control__button_disabled .g-select-control__placeholder{padding-inline-end:calc(28px + var(--_--text-right-padding))}.g-select-control_has-clear.g-select-control_size_l .g-select-control__button_disabled .g-select-control__option-text,.g-select-control_has-clear.g-select-control_size_l .g-select-control__button_disabled .g-select-control__placeholder{padding-inline-end:calc(36px + var(--_--text-right-padding))}.g-select-control_has-clear.g-select-control_size_xl .g-select-control__button_disabled .g-select-control__option-text,.g-select-control_has-clear.g-select-control_size_xl .g-select-control__button_disabled .g-select-control__placeholder{padding-inline-end:calc(44px + var(--_--text-right-padding))}.g-select-control__placeholder{color:var(--g-color-text-hint)}.g-select-control_has-clear:not(.g-select-control_has-value).g-select-control_size_s .g-select-control__button:not(.g-select-control__button_disabled) .g-select-control__placeholder{padding-inline-end:calc(24px + var(--_--text-right-padding))}.g-select-control_has-clear:not(.g-select-control_has-value).g-select-control_size_m .g-select-control__button:not(.g-select-control__button_disabled) .g-select-control__placeholder{padding-inline-end:calc(28px + var(--_--text-right-padding))}.g-select-control_has-clear:not(.g-select-control_has-value).g-select-control_size_l .g-select-control__button:not(.g-select-control__button_disabled) .g-select-control__placeholder{padding-inline-end:calc(36px + var(--_--text-right-padding))}.g-select-control_has-clear:not(.g-select-control_has-value).g-select-control_size_xl .g-select-control__button:not(.g-select-control__button_disabled) .g-select-control__placeholder{padding-inline-end:calc(44px + var(--_--text-right-padding))}.g-select-control__chevron-icon{color:var(--g-color-text-secondary);flex:0 0 16px;margin-inline-start:auto}.g-select-control__chevron-icon_disabled{color:var(--g-color-text-hint)}.g-select-clear+.g-select-control__chevron-icon{margin-inline-start:0}.g-select-control__error-icon{background:none;border:none;border-radius:var(--g-focus-border-radius);box-sizing:initial;color:inherit;color:var(--g-color-text-danger);cursor:pointer;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);outline:none;padding:0;padding:var(--_--text-input-error-icon-padding)}.g-select-control__error-icon:focus{outline:2px solid var(--g-color-line-focus)}.g-select-control__error-icon:focus:not(:focus-visible){outline:0}.g-select-counter{align-items:center;background-color:var(--g-color-base-generic);display:flex;justify-content:center;margin-inline:4px}.g-select-counter__text{flex-grow:1;margin-inline:4px;text-align:center}.g-select-counter_size_xl .g-select-counter__text{margin-inline:6px}.g-select-counter_size_s{border-radius:var(--g-border-radius-xs);height:20px;min-width:20px}.g-select-counter_size_m{border-radius:var(--g-border-radius-s);height:24px;min-width:24px}.g-select-counter_size_l{border-radius:var(--g-border-radius-m);height:28px;min-width:28px}.g-select-counter_size_xl{border-radius:var(--g-border-radius-l);height:36px;margin-inline:4px;min-width:36px}.g-select-clear{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);justify-content:center;margin-inline-start:auto;outline:none;padding:0;z-index:1}.g-select-clear:focus-visible{border:1px solid var(--g-color-line-generic-active)}.g-select-clear_size_s{border-radius:var(--g-border-radius-s);height:24px;width:24px}.g-select-clear_size_m{border-radius:var(--g-border-radius-m);height:28px;width:28px}.g-select-clear_size_l{border-radius:var(--g-border-radius-l);height:36px;width:36px}.g-select-clear_size_xl{border-radius:var(--g-border-radius-xl);height:44px;width:44px}.g-select-clear__clear{color:var(--g-color-text-secondary)}.g-select-clear:hover .g-select-clear__clear{color:var(--g-color-text-primary)}.g-select-popup{display:flex;flex-direction:column;max-height:90vh}.g-sheet{position:fixed;z-index:100000}.g-sheet,.g-sheet__veil{height:100%;inset-block-start:0;inset-inline-start:0;width:100%}.g-sheet__veil{background-color:var(--g-color-sfx-veil);opacity:0;position:absolute;will-change:opacity}.g-sheet__veil_with-transition{transition:opacity .3s ease}.g-sheet__sheet{inset-block-start:100%;inset-inline-start:0;max-height:90%;position:absolute;width:100%;will-change:transform}.g-sheet__sheet_with-transition{transition:transform .3s ease}.g-sheet__sheet-swipe-area{height:40px;inset-block-start:-20px;inset-inline-start:0;position:absolute;width:100%;z-index:1}.g-sheet__sheet-top{background-color:var(--g-color-base-float);border-start-end-radius:20px;border-start-start-radius:20px;height:20px;position:relative}.g-sheet__sheet-top-resizer{--_--translate-x:calc(-50%*var(--g-flow-direction));background-color:var(--g-color-line-generic);border-radius:4px;height:4px;inset-block-start:50%;inset-inline-start:50%;position:absolute;transform:translateX(var(--_--translate-x)) translateY(-50%);width:40px}.g-sheet__sheet-content{background-color:var(--g-color-base-float);box-sizing:border-box;max-height:calc(90% - 20px);overflow:hidden auto;overscroll-behavior-y:contain;padding:0 10px;padding:var(--g-sheet-content-padding,0 10px);transition:height .3s ease;width:100%}.g-sheet__sheet-content_without-scroll{overflow:hidden}.g-sheet__sheet-content-title{font-size:var(--g-text-body-2-font-size);line-height:28px;overflow:hidden;padding-block-end:8px;text-align:center;text-overflow:ellipsis;white-space:nowrap}.stack{--ydb-stack-base-z-index:100;--ydb-stack-offset-x:4px;--ydb-stack-offset-y:4px;--ydb-stack-offset-x-hover:4px;--ydb-stack-offset-y-hover:8px;position:relative}.stack__layer{background:var(--g-color-base-background);transition:transform .1s ease-out}.stack__layer:first-child{position:relative;z-index:var(--ydb-stack-base-z-index)}.stack__layer+.stack__layer{height:100%;left:0;position:absolute;top:0;transform:translate(calc(var(--ydb-stack-level)*var(--ydb-stack-offset-x)),calc(var(--ydb-stack-level)*var(--ydb-stack-offset-y)));width:100%;z-index:calc(var(--ydb-stack-base-z-index) - var(--ydb-stack-level))}.stack:hover .stack__layer:first-child{transform:translate(calc(var(--ydb-stack-offset-x-hover)*-1),calc(var(--ydb-stack-offset-y-hover)*-1))}.stack:hover .stack__layer+.stack__layer{transform:translate(calc(var(--ydb-stack-level)*var(--ydb-stack-offset-x-hover)*2 - var(--ydb-stack-offset-x-hover)),calc(var(--ydb-stack-level)*var(--ydb-stack-offset-y-hover)*2 - var(--ydb-stack-offset-y-hover)))}.storage-disk-progress-bar{background-color:var(--g-color-base-misc-light);border:1px solid var(--g-color-base-misc-heavy);border-radius:4px;color:var(--g-color-text-primary);display:block;height:var(--g-text-body-3-line-height);min-width:50px;position:relative;text-align:center;z-index:0}.storage-disk-progress-bar_compact{border-radius:2px;height:12px;min-width:0}.storage-disk-progress-bar_compact .storage-disk-progress-bar__filled{border-radius:1px}.storage-disk-progress-bar .storage-disk-progress-bar__filled{background-color:var(--g-color-base-misc-medium)}.storage-disk-progress-bar_green{background-color:var(--g-color-base-positive-light);border-color:var(--g-color-base-positive-heavy)}.storage-disk-progress-bar_green .storage-disk-progress-bar__filled{background-color:var(--g-color-base-positive-medium)}.g-root_theme_dark .storage-disk-progress-bar_green .storage-disk-progress-bar__filled{background-color:#7ce37966}.storage-disk-progress-bar_blue{background-color:var(--g-color-base-info-light);border-color:var(--g-color-base-info-heavy)}.storage-disk-progress-bar_blue .storage-disk-progress-bar__filled{background-color:var(--g-color-base-info-medium)}.storage-disk-progress-bar_yellow{background-color:var(--g-color-base-yellow-light);border-color:var(--g-color-base-warning-heavy)}.storage-disk-progress-bar_yellow .storage-disk-progress-bar__filled{background-color:var(--g-color-base-yellow-medium)}.storage-disk-progress-bar_orange{background-color:var(--g-color-base-warning-light);border-color:var(--ydb-color-status-orange)}.storage-disk-progress-bar_orange .storage-disk-progress-bar__filled{background-color:var(--g-color-base-warning-medium)}.storage-disk-progress-bar_red{background-color:var(--g-color-base-danger-light);border-color:var(--g-color-base-danger-heavy)}.storage-disk-progress-bar_red .storage-disk-progress-bar__filled{background-color:var(--g-color-base-danger-medium)}.storage-disk-progress-bar__filled{border-radius:3px 0 0 3px;height:100%;left:0;position:absolute;top:0}.storage-disk-progress-bar_inverted .storage-disk-progress-bar__filled{border-radius:0 3px 3px 0;left:auto;right:0}.storage-disk-progress-bar__filled-title{color:inherit;font-size:var(--g-text-body-1-font-size);line-height:calc(var(--g-text-body-3-line-height) - 2px);position:relative;z-index:2}.pdisk-storage-popup,.vdisk-storage-popup{padding:12px}.vdisk-storage-popup .info-viewer+.info-viewer{border-top:1px solid var(--g-color-line-generic);margin-top:8px;padding-top:8px}.vdisk-storage-popup__donor-label{margin-bottom:8px}.ydb-vdisk-component,.ydb-vdisk-component__content{border-radius:4px}.global-storage-groups__vdisks-column{overflow:visible}.global-storage-groups__vdisks-wrapper{display:flex;gap:10px;justify-content:center;min-width:500px}.global-storage-groups__vdisks-item{flex-grow:1;max-width:200px}.data-table__row:hover .global-storage-groups__vdisks-item .stack__layer{background:var(--ydb-data-table-color-hover)}.global-storage-groups__pool-name-wrapper{width:230px}.global-storage-groups__group-id{font-weight:500}.pdisk-storage{position:relative;width:120px}.pdisk-storage__content{border-radius:4px;display:block;position:relative}.pdisk-storage__vdisks{display:flex;flex-wrap:wrap;gap:2px;margin-bottom:4px}.pdisk-storage__vdisks-item{flex-basis:5px;flex-shrink:0}.data-table__row:hover .pdisk-storage__vdisks-item .stack__layer{background:var(--ydb-data-table-color-hover)}.pdisk-storage__donors-stack{--ydb-stack-offset-x:0px;--ydb-stack-offset-y:-2px;--ydb-stack-offset-x-hover:0px;--ydb-stack-offset-y-hover:-7px}.pdisk-storage__media-type{color:var(--g-color-text-secondary);font-size:var(--g-text-body-1-font-size);line-height:var(--g-text-body-3-line-height);position:absolute;right:4px;top:0}.global-storage-nodes__pdisks-column{overflow:visible}.global-storage-nodes__pdisks-wrapper{align-items:flex-end;display:flex;justify-content:left;width:-webkit-max-content;width:max-content}.global-storage-nodes__pdisks-item{flex-grow:1;margin-right:10px;max-width:200px}.global-storage-nodes__pdisks-item:last-child{margin-right:0}.global-storage-nodes__group-id{font-weight:500}.global-storage-nodes__node_unavailable{opacity:.6}.global-storage__search{width:238px}.global-storage__table .g-tooltip{height:var(--g-text-body-2-line-height)!important}.global-storage .entity-status{justify-content:center}.tenants__format-label{margin-right:15px}.tenants__title{text-align:center}.tenants__tooltip{animation:none!important}.tenants__search{width:238px}.tenants__tablets{padding:0!important}.tenants__tablets .tablets-viewer__grid{grid-gap:20px}.tenants__type{align-items:center;display:flex;flex-direction:row;gap:10px}.tenants__type-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:-webkit-min-content;width:min-content}.tenants__type-button{display:none}.data-table__row:hover .tenants__type-button{display:block}.tenants__monitoring-button{margin-left:4px}.tenants__name{overflow:hidden}.ydb-loader{align-items:center;display:flex;flex:1 1 auto;height:100%;justify-content:center}.ydb-versions-nodes-tree-title__overview{align-items:center;display:flex;justify-content:space-between;width:100%}.ydb-versions-nodes-tree-title__overview-info{align-items:center;display:flex;margin-left:25px}.ydb-versions-nodes-tree-title__overview-info>:not(:first-child){margin-left:30px}.ydb-versions-nodes-tree-title__overview-container{align-items:center;display:flex}.ydb-versions-nodes-tree-title__info-label{color:var(--g-color-text-complementary);font-weight:200}.ydb-versions-nodes-tree-title__info-label_margin_left{margin-left:5px}.ydb-versions-nodes-tree-title__info-label_margin_right{margin-right:5px}.ydb-versions-nodes-tree-title__version-color{border-radius:100%;height:16px;margin-right:10px;width:16px}.ydb-versions-nodes-tree-title__version-progress{align-items:center;display:flex;width:250px}.ydb-versions-nodes-tree-title__version-progress .g-progress{width:200px}.ydb-versions-nodes-tree-title__overview-title{align-items:center;display:flex}.ydb-versions-nodes-tree-title__clipboard-button{color:var(--g-color-text-secondary);margin-left:8px;visibility:hidden}.g-progress{--_--empty-background-color:var(--g-color-base-generic);--_--empty-text-color:var(--g-color-text-primary);--_--filled-text-color:var(--g-color-text-primary);--_--filled-background-color:var(--g-color-base-neutral-medium);background-color:var(--_--empty-background-color);background-color:var(--g-progress-empty-background-color,var(--_--empty-background-color));border-radius:3px;margin:0 auto;overflow:hidden;position:relative;text-align:center}.g-progress__text{color:var(--_--empty-text-color);color:var(--g-progress-empty-text-color,var(--_--empty-text-color));position:relative}.g-progress__text,.g-progress__text-inner{box-sizing:border-box;font-family:var(--g-text-body-font-family);font-size:var(--g-text-body-short-font-size);font-weight:var(--g-text-body-font-weight);padding:0 10px}.g-progress__text-inner{color:var(--_--empty-text-color);color:var(--g-progress-filled-text-color,var(--_--empty-text-color));height:100%;position:absolute;transition:transform .6s ease;width:100%}.g-progress__item{background-color:var(--_--filled-background-color);background-color:var(--g-progress-filled-background-color,var(--_--filled-background-color));float:left;height:100%;overflow:hidden;position:relative;transition:transform .6s ease,width .6s ease,background-color .6s ease;width:100%}[dir=rtl] .g-progress__item{float:right}.g-progress__item_theme_default{--_--filled-background-color:var(--g-color-base-neutral-medium)}.g-progress__item_theme_success{--_--filled-background-color:var(--g-color-base-positive-medium)}.g-progress__item_theme_warning{--_--filled-background-color:var(--g-color-base-warning-medium)}.g-progress__item_theme_danger{--_--filled-background-color:var(--g-color-base-danger-medium)}.g-progress__item_theme_info{--_--filled-background-color:var(--g-color-base-info-medium)}.g-progress__item_theme_misc{--_--filled-background-color:var(--g-color-base-misc-medium)}.g-progress__item_loading{animation:g-loading-animation .5s linear infinite;background-clip:padding-box;background-image:repeating-linear-gradient(-45deg,#ffffff4d,#ffffff4d 4px,#0000 0,#0000 8px);background-size:150%}.g-progress__stack{color:var(--g-color-text-light-primary);margin:0 auto;overflow:hidden;position:relative;transition:transform .6s ease;width:100%}.g-progress_size_m,.g-progress_size_m .g-progress__stack{height:20px;line-height:20px}.g-progress_size_m .g-progress__text{height:20px;margin-block-end:-20px}.g-progress_size_s,.g-progress_size_s .g-progress__stack{height:10px;line-height:10px}.g-progress_size_xs,.g-progress_size_xs .g-progress__stack{height:4px;line-height:4px}.g-progress_size_s .g-progress__text,.g-progress_size_s .g-progress__text-inner,.g-progress_size_xs .g-progress__text,.g-progress_size_xs .g-progress__text-inner{display:none}.ydb-versions-grouped-node-tree_first-level{border:1px solid var(--g-color-line-generic);border-radius:10px;margin-bottom:10px;margin-top:10px}.ydb-versions-grouped-node-tree__dt-wrapper{margin-left:24px;margin-right:24px;overflow:auto hidden;position:relative;z-index:0}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__head-row:first-child .data-table__th:first-child,.ydb-versions-grouped-node-tree__dt-wrapper .data-table__td:first-child{background-color:var(--g-color-base-background);border-right:1px solid var(--g-color-line-generic);left:0;position:-webkit-sticky;position:sticky;z-index:2000}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__row:hover .data-table__td:first-child{background-color:var(--ydb-data-table-color-hover)!important}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__head-row:first-child .data-table__th:nth-child(2),.ydb-versions-grouped-node-tree__dt-wrapper .data-table__td:nth-child(2){background-color:var(--g-color-base-background);border-right:1px solid var(--g-color-line-generic);left:80px;position:-webkit-sticky;position:sticky;z-index:2000}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__row:hover .data-table__td:nth-child(2){background-color:var(--ydb-data-table-color-hover)!important}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__head-row:first-child .data-table__th:first-child,.ydb-versions-grouped-node-tree__dt-wrapper .data-table__head-row:first-child .data-table__th:nth-child(0),.ydb-versions-grouped-node-tree__dt-wrapper .data-table__td:first-child,.ydb-versions-grouped-node-tree__dt-wrapper .data-table__td:nth-child(0){border-right:initial;box-shadow:none}.ydb-versions-grouped-node-tree__dt-wrapper .data-table__head-row:first-child .data-table__th:nth-child(2),.ydb-versions-grouped-node-tree__dt-wrapper .data-table__td:nth-child(2){box-shadow:none}.ydb-versions-grouped-node-tree .ydb-tree-view{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.ydb-versions-grouped-node-tree .ydb-tree-view .ydb-tree-view{margin-left:24px}.ydb-versions-grouped-node-tree .tree-view_item{border:0;border-radius:10px;height:40px;margin:0;padding:0 10px!important}.ydb-versions-grouped-node-tree .tree-view_children .tree-view_item{width:100%}.ydb-versions-grouped-node-tree .g-progress__stack{cursor:pointer}.ydb-tree-view{--ydb-tree-view-level:0;font-size:13px;line-height:18px}.ydb-tree-view,.ydb-tree-view *{box-sizing:border-box}.ydb-tree-view__item{align-items:center;border-bottom:1px solid var(--g-color-line-generic-solid);cursor:pointer;display:flex;height:24px;padding-left:calc(24px*var(--ydb-tree-view-level));padding-right:3px}.ydb-tree-view__item:hover{background-color:var(--g-color-base-simple-hover)}.ydb-tree-view__item:hover .ydb-tree-view__actions{display:flex}.ydb-tree-view__item_active{background-color:var(--g-color-base-selection);font-weight:700}.ydb-tree-view__item_active:hover{background-color:var(--g-color-base-selection-hover)}.ydb-tree-view__content{align-items:center;display:flex;flex-grow:1;overflow:hidden}.ydb-tree-view__icon{align-items:center;color:var(--g-color-text-hint);display:flex;flex-shrink:0;height:24px;justify-content:center;width:24px}.ydb-tree-view__icon svg{display:block}.ydb-tree-view__text{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ydb-tree-view__actions{align-items:center;display:none;margin-left:6px}.ydb-tree-view__arrow{background:url('data:image/svg+xml;utf8,') no-repeat 50%;border:none;cursor:pointer;flex-shrink:0;height:24px;padding:0;width:24px}.g-root_theme_dark .ydb-tree-view__arrow{background:url('data:image/svg+xml;utf8,') no-repeat 50%}.ydb-tree-view__arrow:focus-visible{outline:2px solid var(--g-color-line-focus)}.ydb-tree-view__arrow:not(.ydb-tree-view__arrow_collapsed){transform:rotate(90deg)}.ydb-tree-view__arrow_hidden{visibility:hidden}.ydb-tree-view .ydb-tree-view .ydb-tree-view__item{padding-left:24px}.ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view__item{padding-left:48px}.ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view__item{padding-left:72px}.ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view__item{padding-left:96px}.ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view .ydb-tree-view__item{padding-left:120px}.g-dropdown-menu__switcher-wrapper{display:inline-block}.g-dropdown-menu__switcher-button{display:flex}.g-dropdown-menu__menu-item_separator{border-block-start:1px solid var(--g-color-line-generic-solid);margin:.5em 0;pointer-events:none}.g-dropdown-menu__sub-menu-arrow{inset-inline-end:-4px;position:relative}.g-dropdown-menu__sub-menu{position:relative}.g-dropdown-menu__sub-menu .g-dropdown-menu__menu:after,.g-dropdown-menu__sub-menu .g-dropdown-menu__menu:before{content:"";height:100%;inset-block-start:0;position:absolute;width:10px}.g-dropdown-menu__sub-menu .g-dropdown-menu__menu:before{inset-inline-start:-10px}.g-dropdown-menu__sub-menu .g-dropdown-menu__menu:after{inset-inline-end:-10px}.g-menu{background-color:var(--g-color-base-float);box-sizing:border-box;color:var(--g-color-text-primary);display:block;font-size:var(--g-text-body-1-font-size);list-style:none;margin:0;outline:none;overflow:hidden auto;padding:0;-webkit-user-select:none;user-select:none}.g-menu__list-group-item+.g-menu__list-group-item,.g-menu__list-group-item+.g-menu__list-item,.g-menu__list-item+.g-menu__list-group-item{border-block-start:1px solid var(--g-color-line-generic)}.g-menu__item{-webkit-tap-highlight-color:rgba(0,0,0,0);align-items:center;color:var(--g-color-text-primary);display:flex;outline:none;text-decoration:none;touch-action:manipulation}.g-menu__item-icon{display:flex}.g-menu__item-icon-end{display:flex;margin-inline-end:0}.g-menu__item-content{flex-grow:1;min-width:0}.g-menu__item_interactive{cursor:pointer}.g-menu__item_interactive:focus-visible,.g-menu__item_interactive:hover{background-color:var(--g-color-base-simple-hover)}.g-menu__item_selected{background-color:var(--g-color-base-simple-hover)}.g-menu__item_disabled{color:var(--g-color-text-secondary);cursor:default;pointer-events:none}.g-menu__item_disabled:hover{background-color:initial}.g-menu__item_active{background-color:var(--g-color-base-selection);cursor:default}.g-menu__item_active:focus-visible,.g-menu__item_active:hover{background-color:var(--g-color-base-selection-hover)}.g-menu__item_theme_danger:not(.g-menu__item_disabled){color:var(--g-color-text-danger)}.g-menu__group-label{color:var(--g-color-text-hint);font-weight:var(--g-text-accent-font-weight)}.g-menu__group-list{list-style:none;margin:0;padding:0}.g-menu_size_s{line-height:24px;padding:3px 0}.g-menu_size_s .g-menu__group-label,.g-menu_size_s .g-menu__item{padding:0 10px}.g-menu_size_s .g-menu__item-icon{margin-inline-end:3px}.g-menu_size_s .g-menu__item-icon-end{margin-inline-start:3px}.g-menu_size_s .g-menu__list-group-item+.g-menu__list-group-item,.g-menu_size_s .g-menu__list-group-item+.g-menu__list-item,.g-menu_size_s .g-menu__list-item+.g-menu__list-group-item{margin-block-start:3px;padding-block-start:3px}.g-menu_size_m{line-height:24px;padding:4px 0}.g-menu_size_m .g-menu__group-label,.g-menu_size_m .g-menu__item{padding:0 13px}.g-menu_size_m .g-menu__item-icon{margin-inline-end:4px}.g-menu_size_m .g-menu__item-icon-end{margin-inline-start:4px}.g-menu_size_m .g-menu__list-group-item+.g-menu__list-group-item,.g-menu_size_m .g-menu__list-group-item+.g-menu__list-item,.g-menu_size_m .g-menu__list-item+.g-menu__list-group-item{margin-block-start:4px;padding-block-start:4px}.g-menu_size_l{line-height:28px;padding:5px 0}.g-menu_size_l .g-menu__group-label,.g-menu_size_l .g-menu__item{padding:0 15px}.g-menu_size_l .g-menu__item-icon{margin-inline-end:5px}.g-menu_size_l .g-menu__item-icon-end{margin-inline-start:5px}.g-menu_size_l .g-menu__list-group-item+.g-menu__list-group-item,.g-menu_size_l .g-menu__list-group-item+.g-menu__list-item,.g-menu_size_l .g-menu__list-item+.g-menu__list-group-item{margin-block-start:5px;padding-block-start:5px}.g-menu_size_xl{font-size:var(--g-text-body-2-font-size);line-height:36px;padding:6px 0}.g-menu_size_xl .g-menu__group-label,.g-menu_size_xl .g-menu__item{padding:0 15px}.g-menu_size_xl .g-menu__item-icon{margin-inline-end:6px}.g-menu_size_xl .g-menu__item-icon-end{margin-inline-start:6px}.g-menu_size_xl .g-menu__list-group-item:not(:first-child){margin-block-start:6px;padding-block-start:6px}.g-menu_size_xl .g-menu__list-group-item:not(:last-child){margin-block-end:6px;padding-block-end:6px}.ydb-versions__controls{align-items:center;display:flex;padding:0 0 20px}.ydb-versions__controls .ydb-versions__label{font-weight:500;margin-right:10px}.ydb-versions__controls .ydb-versions__checkbox{margin:0}.ydb-versions__controls>*{margin-right:25px}.g-checkbox__indicator{cursor:inherit;display:inline-block;position:relative}.g-checkbox__indicator:before{background-color:initial;border:1px solid var(--g-color-line-generic-accent);border-radius:4px;content:"";inset:0;position:absolute;transition:background .1s linear}.g-checkbox__indicator:after{content:" ";visibility:hidden}.g-checkbox__icon{align-items:center;color:#0000;display:flex;inset:0;justify-content:center;pointer-events:none;position:absolute;transform:translateY(-5px);transition:color .1s,transform .2s;visibility:hidden}.g-checkbox__control{border:none;cursor:inherit;margin:0;opacity:0;outline:none;padding:0}.g-checkbox__control,.g-checkbox__outline{background:none;height:100%;inset-block-start:0;inset-inline-start:0;position:absolute;width:100%}.g-checkbox__outline{border-radius:4px;pointer-events:none}.g-checkbox__control:focus-visible+.g-checkbox__outline{outline:2px solid var(--g-color-line-focus)}.g-checkbox_size_m .g-checkbox__icon-svg_type_tick{height:10px;width:8px}.g-checkbox_size_m .g-checkbox__icon-svg_type_dash{height:12px;width:12px}.g-checkbox_size_m .g-checkbox__indicator{height:14px;width:14px}.g-checkbox_size_l .g-checkbox__icon-svg_type_tick{height:9px;width:11px}.g-checkbox_size_l .g-checkbox__icon-svg_type_dash{height:15px;width:15px}.g-checkbox_size_l .g-checkbox__indicator{height:17px;width:17px}.g-checkbox:hover .g-checkbox__indicator:before{border-color:var(--g-color-line-generic-accent-hover)}.g-checkbox_checked .g-checkbox__indicator:before,.g-checkbox_indeterminate .g-checkbox__indicator:before{background-color:var(--g-color-base-brand);border:#0000}.g-checkbox_checked .g-checkbox__icon,.g-checkbox_indeterminate .g-checkbox__icon{color:var(--g-color-text-brand-contrast);transform:translateX(0);visibility:visible}.g-checkbox_disabled .g-checkbox__indicator:before{background-color:var(--g-color-base-generic-accent-disabled);border:#0000}.g-checkbox_disabled.g-checkbox_checked .g-checkbox__indicator:before,.g-checkbox_disabled.g-checkbox_indeterminate .g-checkbox__indicator:before{background-color:var(--g-color-base-brand);opacity:.5}.ydb-info-viewer-skeleton{display:flex;flex-direction:column;gap:16px}.ydb-info-viewer-skeleton__row{align-items:flex-start;display:flex}.ydb-info-viewer-skeleton__row,.ydb-info-viewer-skeleton__row .g-skeleton{min-height:var(--g-text-body-2-font-size)}.ydb-info-viewer-skeleton__label{align-items:baseline;display:flex;flex:0 1 auto;width:200px}.ydb-info-viewer-skeleton__label__text{width:100px}.ydb-info-viewer-skeleton__label__dots{border-bottom:1px dotted var(--g-color-text-secondary);margin:0 2px;width:100px}.ydb-info-viewer-skeleton__value{max-width:20%;min-width:200px}.ydb-link-with-icon{align-items:center;display:flex;flex-wrap:nowrap;white-space:nowrap}.tablet-icon{border:1px solid;border-radius:4px;display:flex;font-size:10px;height:16px;justify-content:center;text-transform:uppercase;width:23px}.tablet-icon__type{line-height:14px}.tablet{border-color:var(--g-color-base-generic-medium-hover);color:var(--g-color-text-complementary);cursor:pointer}.tablet__wrapper{margin-bottom:2px;margin-right:2px}.tablet__wrapper:last-child{margin-right:0}.tablet__popup-content{padding:10px}.tablet_status_grey{background-color:var(--ydb-color-status-grey)}.tablet_status_yellow{background-color:var(--ydb-color-status-yellow)}.tablet_status_orange{background-color:var(--ydb-color-status-orange)}.tablet_status_red{background-color:var(--ydb-color-status-red)}.tablet_status_green{background-color:var(--ydb-color-status-green)}.tablet_status_blue{background-color:var(--ydb-color-status-blue)}.tablet_status_black{background-color:var(--ydb-color-status-black)}.tag{background:var(--g-color-base-generic);border-radius:3px;color:var(--g-color-text-primary);font-size:12px;margin-right:5px;padding:2px 5px;text-transform:uppercase}.tag:last-child{margin-right:0}.tag_type_blue{background-color:var(--g-color-celestial-thunder)}.tags{align-items:center;display:flex;flex-wrap:wrap}.ydb-cluster-versions-bar{display:flex;flex-direction:column;width:600px}.ydb-cluster-versions-bar .g-progress{width:100%}.ydb-cluster-versions-bar__versions{display:flex;flex-flow:row wrap;margin-top:6px}.ydb-cluster-versions-bar__version-title{margin-left:3px;white-space:nowrap}.ydb-cluster-versions-bar .g-progress__stack{cursor:pointer}.cluster-info{padding-top:20px}.cluster-info__skeleton{margin-top:5px}.cluster-info__error{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.cluster-info__system-tablets{align-items:center;display:flex;flex-wrap:wrap}.cluster-info__system-tablets .tablet{margin-top:2px}.cluster-info__metrics{margin:0 -15px;padding:0 15px!important}.cluster-info__metrics .info-viewer__items{grid-template-columns:repeat(2,minmax(auto,250px))}.cluster-info__metrics .info-viewer__label{width:50px}.cluster-info__metrics .info-viewer__value{width:130px}.cluster-info__tablets{margin-left:15px;padding:0!important}.cluster-info__links{display:flex;flex-flow:row wrap;gap:12px}.cluster-info__storage-groups-stats{display:flex;flex-direction:column;gap:11px}.cluster-info__groups-stats-bar{cursor:pointer}.cluster-info__groups-stats-popup-content{padding:12px}.cluster-info__clipboard-button{align-items:center;display:flex;margin-left:5px}.cluster{display:flex;flex-direction:column;flex-grow:1;flex:1 1 auto;height:100%;overflow:auto;padding:0 20px}.cluster__header{left:0;padding:20px 0;position:-webkit-sticky;position:sticky}.cluster__title{font-size:var(--g-text-header-1-font-size);font-weight:var(--g-text-header-font-weight);line-height:var(--g-text-header-1-line-height)}.cluster__title-skeleton{height:var(--g-text-header-1-line-height);min-width:200px;width:20%}.cluster__tabs{left:0;position:-webkit-sticky;position:sticky}.kv-user{color:var(--g-color-text-primary);font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.kv-user,.kv-user__name{display:inline-block}.kv-user__name:first-letter{color:var(--g-color-text-danger)}.g-action-tooltip{--g-popup-border-width:0;--g-popup-background-color:var(--g-color-base-float-heavy)}.g-action-tooltip__content{box-sizing:border-box;color:var(--g-color-text-light-primary);max-width:300px;padding:6px 12px}.g-action-tooltip__heading{align-items:baseline;display:flex;justify-content:space-between}.g-action-tooltip__title{color:var(--g-color-text-light-primary)}.g-action-tooltip__hotkey{margin-inline-start:8px}.g-action-tooltip__description{color:var(--g-color-text-light-secondary);margin-block-start:4px}.g-hotkey{border-radius:4px;padding:1px 5px}.g-hotkey,.g-hotkey kbd{font-family:var(--g-font-family-sans);font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.g-hotkey_view_light{background-color:var(--g-color-base-generic)}.g-hotkey_view_light .g-hotkey__plus{color:var(--g-color-text-hint)}.g-hotkey_view_dark{background-color:var(--g-color-base-light-simple-hover);color:var(--g-color-text-light-complementary)}.g-hotkey_view_dark .g-hotkey__plus{color:var(--g-color-text-light-hint)}.clusters{display:flex;flex:1 1 auto;flex-direction:column;font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);overflow:auto;padding-top:15px}.clusters__cluster{align-items:center;display:flex}.clusters__cluster-status{border-radius:3px;height:18px;margin-right:8px;width:18px}.clusters__cluster-status span{align-items:center;display:flex}.clusters__cluster-status_type_green{background-color:var(--ydb-color-status-green)}.clusters__cluster-status_type_yellow{background-color:var(--ydb-color-status-yellow)}.clusters__cluster-status_type_blue{background-color:var(--ydb-color-status-blue)}.clusters__cluster-status_type_red{background:var(--ydb-color-status-red)}.clusters__cluster-status_type_grey{background:var(--ydb-color-status-grey)}.clusters__cluster-status_type_orange{background:var(--ydb-color-status-orange)}.clusters__cluster-name{color:var(--g-color-text-link);text-decoration:none;white-space:normal}.clusters__cluster-versions{text-decoration:none}.clusters__cluster-version{overflow:hidden;text-overflow:ellipsis}.clusters__cluster-dc{white-space:normal}.clusters__controls{display:flex;margin-bottom:20px}.clusters__control{margin-right:15px;width:200px}.clusters__control_wide{width:300px}.clusters__empty-cell{color:var(--g-color-text-secondary)}.clusters__tooltip-content{word-break:break-all}.clusters .g-progress__item{transition:none}.clusters__aggregation,.clusters__controls{margin-left:15px}.clusters__aggregation{align-items:center;background:var(--g-color-base-generic-ultralight);border:1px solid var(--g-color-line-generic);border-radius:10px;display:flex;height:46px;margin-bottom:20px;padding:10px 20px;width:-webkit-max-content;width:max-content}.clusters__aggregation-value-container{align-items:center;display:flex;font-size:var(--g-text-subheader-3-font-size);line-height:var(--g-text-subheader-3-line-height);max-width:200px}.clusters__aggregation-value-container:not(:last-child){margin-right:30px}.clusters__aggregation-label{color:var(--g-color-text-complementary);font-weight:200;margin-right:8px}.clusters__text{color:var(--g-color-text-primary);font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.clusters__text:first-letter{color:var(--g-color-text-danger)}.clusters__description{max-width:200px;white-space:pre-wrap}.clusters__table-wrapper{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto;padding-left:5px}.clusters__table-content{height:100%;overflow:auto}.clusters__table .data-table__head-row:first-child .data-table__th:first-child,.clusters__table .data-table__td:first-child{background-color:var(--g-color-base-background);border-right:1px solid var(--g-color-line-generic);left:0;position:-webkit-sticky;position:sticky;z-index:2000}.clusters__table .data-table__row:hover .data-table__td:first-child{background-color:var(--ydb-data-table-color-hover)!important}.clusters__table .data-table__head-row:first-child .data-table__th:nth-child(0),.clusters__table .data-table__td:nth-child(0){border-right:initial;box-shadow:none}.clusters__table .data-table__head-row:first-child .data-table__th:first-child,.clusters__table .data-table__td:first-child{box-shadow:none}.clusters__balancer-cell{align-items:center;display:flex;flex-direction:row}.clusters__balancer-text{display:inline-block;margin-right:5px;max-width:92%;overflow:hidden;overflow-wrap:break-word!important;text-overflow:ellipsis}.clusters__balancer-icon{align-items:center;display:flex}.clusters__error{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);margin-left:15px}.g-table-column-setup__status{color:var(--g-color-text-secondary);margin-inline-start:5px}.g-inner-table-column-setup{display:inline-block}.g-inner-table-column-setup__controls{margin:var(--g-spacing-1) var(--g-spacing-1) 0}.g-list-container-view{box-sizing:border-box;outline:none;width:100%}.g-list-container-view_fixed-height{height:300px;height:var(--g-list-container-height,300px)}.g-list-container-view:not(.g-list-container-view_fixed-height){overflow:auto}.g-list-item-view{flex-shrink:0}.g-list-item-view__main-content{grid-gap:2px;grid-gap:var(--g-spacing-half,2px);display:grid;gap:2px;gap:var(--g-spacing-half,2px);width:100%}.g-list-item-view:hover.g-list-item-view_activeOnHover,.g-list-item-view_active{background:var(--g-color-base-simple-hover)}.g-list-item-view_clickable{cursor:pointer}.g-list-item-view_selected,.g-list-item-view_selected.g-list-item-view_active,.g-list-item-view_selected:hover.g-list-item-view_activeOnHover{background:var(--g-color-base-selection)}.g-list-item-view_dragging,.g-list-item-view_dragging.g-list-item-view_active,.g-list-item-view_dragging.g-list-item-view_selected{background:var(--g-color-base-simple-hover-solid)}.g-list-item-view_radius_s{border-radius:3px;border-radius:var(--g-list-item-border-radius,3px)}.g-list-item-view_radius_m{border-radius:5px;border-radius:var(--g-list-item-border-radius,5px)}.g-list-item-view_radius_l{border-radius:6px;border-radius:var(--g-list-item-border-radius,6px)}.g-list-item-view_radius_xl{border-radius:8px;border-radius:var(--g-list-item-border-radius,8px)}.g-list-item-view__icon,.g-list-item-view__slot{flex-shrink:0}.g-tree-select{max-width:100%}.g-tree-select_width_max{width:100%}.g-tree-select__popup{overflow:hidden;padding:4px 0}.g-tree-select__popup_size_s{border-radius:5px;border-radius:var(--g-list-container-border-radius,5px)}.g-tree-select__popup_size_m{border-radius:6px;border-radius:var(--g-list-container-border-radius,6px)}.g-tree-select__popup_size_l{border-radius:8px;border-radius:var(--g-list-container-border-radius,8px)}.g-tree-select__popup_size_xl{border-radius:10px;border-radius:var(--g-list-container-border-radius,10px)}.g-tree-select__list{padding:0 4px}.g-list-recursive-renderer{margin:0;padding:0}.header{border-bottom:1px solid var(--g-color-line-generic);flex:0 0 40px;justify-content:space-between;padding:0 20px 0 12px}.header,.header__breadcrumb{align-items:center;display:flex}.header__breadcrumb__icon{display:flex;margin-right:3px}.g-breadcrumbs__inner{align-items:center;display:inline-flex;gap:4px;min-height:24px;overflow:hidden;width:100%}.g-breadcrumbs__switcher{background:none;border:none;color:inherit;color:var(--g-color-text-secondary);cursor:pointer;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);outline:none;padding:0}.g-breadcrumbs__switcher:focus-visible{outline:2px solid var(--g-color-line-focus)}.g-breadcrumbs__item,.g-breadcrumbs__switcher{display:inline-block;flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-breadcrumbs__item:focus-visible,.g-breadcrumbs__switcher:focus-visible{border-radius:var(--g-focus-border-radius);outline:2px solid var(--g-color-line-focus)}.g-breadcrumbs_calculated_no .g-breadcrumbs__item{overflow:visible}.g-breadcrumbs__divider{align-items:center;color:var(--g-color-text-secondary);display:flex}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item .g-menu__item{padding-inline-start:80px!important}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item:nth-child(0) .g-menu__item{padding-inline-start:0!important}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item:first-child .g-menu__item{padding-inline-start:8px!important}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item:nth-child(2) .g-menu__item{padding-inline-start:16px!important}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item:nth-child(3) .g-menu__item{padding-inline-start:24px!important}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item:nth-child(4) .g-menu__item{padding-inline-start:32px!important}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item:nth-child(5) .g-menu__item{padding-inline-start:40px!important}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item:nth-child(6) .g-menu__item{padding-inline-start:48px!important}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item:nth-child(7) .g-menu__item{padding-inline-start:56px!important}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item:nth-child(8) .g-menu__item{padding-inline-start:64px!important}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item:nth-child(9) .g-menu__item{padding-inline-start:72px!important}.g-breadcrumbs__popup_staircase .g-menu .g-menu__list-item:nth-child(10) .g-menu__item{padding-inline-start:80px!important}.basic-node-viewer__link,.link{color:var(--g-color-text-link);text-decoration:none}.basic-node-viewer__link:hover,.link:hover{color:var(--g-color-text-link-hover)}.basic-node-viewer{align-items:center;display:flex;font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);margin:15px 0}.basic-node-viewer__title{font-weight:600;margin:0 20px 0 0;text-transform:uppercase}.basic-node-viewer__id{margin:0 15px 0 24px}.basic-node-viewer__label{color:var(--g-color-text-hint);line-height:18px;margin-right:10px;white-space:nowrap}.basic-node-viewer__link{margin-left:5px}.ydb-pool-usage{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.ydb-pool-usage__info{align-items:center;display:flex;justify-content:space-between}.ydb-pool-usage__pool-name{color:var(--g-color-text-primary)}.ydb-pool-usage__value{align-items:center;display:flex}.ydb-pool-usage__threads{color:var(--g-color-text-hint);font-size:var(--g-text-body-1-font-size)}.ydb-pool-usage__percents{color:var(--g-color-text-primary);font-size:var(--g-text-body-1-font-size);margin-right:2px}.ydb-pool-usage__visual{align-items:center;background-color:var(--g-color-base-generic-accent);border-radius:4px;display:flex;font-size:var(--g-text-body-2-font-size);height:6px;justify-content:center;overflow:hidden;position:relative}.ydb-pool-usage__usage-line{height:100%;left:0;position:absolute;top:0}.ydb-pool-usage__usage-line_type_green{background-color:var(--ydb-color-status-green)}.ydb-pool-usage__usage-line_type_blue{background-color:var(--ydb-color-status-blue)}.ydb-pool-usage__usage-line_type_yellow{background-color:var(--ydb-color-status-yellow)}.ydb-pool-usage__usage-line_type_red{background-color:var(--ydb-color-status-red)}.full-node-viewer{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.full-node-viewer__common-info{align-items:stretch;display:flex;flex-direction:column;justify-content:flex-start}.full-node-viewer__section{border-radius:10px}.full-node-viewer__section_pools{grid-gap:7px 20px;display:grid;grid-template-columns:110px 110px}.full-node-viewer .info-viewer__label{min-width:100px}.full-node-viewer__section-title{font-weight:600;margin:15px 0 10px}.ydb-critical-dialog{width:400px}.ydb-critical-dialog__warning-icon{color:var(--ydb-color-status-yellow);margin-right:16px}.ydb-critical-dialog__error-icon{color:var(--ydb-color-status-red);height:24px;margin-right:16px}.ydb-critical-dialog__body{align-items:center;display:flex}.g-dialog{--_--side-padding:32px;--_--close-button-space:0px;display:flex;flex-direction:column;position:relative;width:var(--_--width);width:var(--g-dialog-width,var(--_--width))}.g-dialog_has-scroll{max-height:calc(100vh - 40px);max-height:calc(100vh - var(--g-modal-margin, 20px)*2);overflow-y:auto}.g-dialog_size_s{--_--width:480px}.g-dialog_size_m{--_--width:720px}.g-dialog_size_l{--_--width:900px}.g-dialog_has-close{--_--close-button-space:24px}.g-modal{-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--g-color-sfx-veil);display:none;inset:0;margin:-9999px 0 0 -9999px;overflow:auto;position:fixed;visibility:hidden;z-index:1000}.g-modal__content-aligner{align-items:center;display:inline-flex;justify-content:center;min-height:100%;min-width:100%}.g-modal__content-wrapper{margin:20px;margin:var(--g-modal-margin,20px);overflow-x:hidden}.g-modal__content,.g-modal__content-wrapper{border-radius:5px;border-radius:var(--g-modal-border-radius,5px)}.g-modal__content{background-color:var(--g-color-base-modal)}.g-modal__content_has-scroll{max-height:calc(100vh - 40px);max-height:calc(100vh - var(--g-modal-margin, 20px)*2);overflow-y:auto}.g-modal,.g-modal__content{animation-fill-mode:forwards;animation-timing-function:ease-out;outline:none}.g-modal_exit_active,.g-modal_open{display:block;margin:0;visibility:visible}.g-modal_appear_active,.g-modal_enter_active{animation-duration:.15s;animation-name:g-modal-open}.g-modal_appear_active .g-modal__content,.g-modal_enter_active .g-modal__content{animation-duration:.15s;animation-name:g-modal-content-open}.g-modal_exit_active{animation-duration:.2s;animation-name:g-modal}@keyframes g-modal{0%{opacity:1}to{opacity:0}}@keyframes g-modal-open{0%{opacity:0}to{opacity:1}}@keyframes g-modal-content-open{0%{transform:scale(.75)}to{transform:scale(1)}}.g-dialog-btn-close{inset-block-start:14px;inset-inline-end:14px;position:absolute;z-index:1}.g-dialog-footer{align-items:center;display:flex;padding:28px var(--_--side-padding)}.g-dialog-footer__bts-wrapper{display:flex;gap:10px}.g-dialog-footer__children{align-items:center;display:flex;flex-grow:1;height:100%}.g-dialog-footer__button{min-width:128px;position:relative}.g-dialog-footer__error{color:var(--g-color-text-danger);padding:10px}.g-dialog-header{align-items:center;color:var(--g-color-text-primary);display:flex;justify-content:flex-start;line-height:24px;padding-block:20px 10px;padding-inline:var(--_--side-padding) calc(var(--_--side-padding) + var(--_--close-button-space)*var(--g-flow-is-ltr) + var(--_--close-button-space)*var(--g-flow-is-rtl))}.g-dialog-header__caption{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.g-dialog-body{flex:1 1 auto;overflow-y:auto;padding:10px var(--_--side-padding)}.g-dialog-body_has-borders{border-block-end:1px solid var(--g-color-line-generic)}.g-dialog-body_has-borders,.g-dialog-divider{border-block-start:1px solid var(--g-color-line-generic)}.g-dialog-divider{margin:0 calc(var(--_--side-padding)*-1)}.ydb-pdisk-info__links,.ydb-vdisk-info__links{display:flex;flex-flow:row wrap;gap:12px}.kv-node-structure{display:flex;flex-shrink:0;flex:1 1 auto;flex-direction:column;font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);overflow:auto;position:relative}.kv-node-structure__pdisk{border:1px solid var(--g-color-line-generic);border-radius:5px;display:flex;flex-direction:column;margin-bottom:8px;padding:0 10px 0 20px;width:573px}.kv-node-structure__pdisk-id{align-items:flex-end;display:flex}.kv-node-structure__pdisk-header{align-items:center;display:flex;height:48px;justify-content:space-between}.kv-node-structure__pdisk-title-wrapper{align-items:center;display:flex;font-weight:600;gap:16px}.kv-node-structure__pdisk-title-wrapper .entity-status__status-icon{margin-right:0}.kv-node-structure__pdisk-title-item{display:flex;gap:4px}.kv-node-structure__pdisk-title-item-label{color:var(--g-color-text-secondary);font-weight:400}.kv-node-structure__pdisk-title-id{min-width:110px}.kv-node-structure__pdisk-title-type{justify-content:flex-end;min-width:50px}.kv-node-structure__pdisk-title-size{min-width:150px}.kv-node-structure__pdisk-details{margin-bottom:20px}.kv-node-structure__link{color:var(--g-color-base-brand);text-decoration:none}.kv-node-structure__vdisks-header{font-weight:600}.kv-node-structure__vdisks-container{margin-bottom:42px}.kv-node-structure__vdisk-details{max-height:90vh;max-width:none;min-width:200px;overflow:auto}.kv-node-structure__vdisk-details .vdisk-pdisk-node__column{margin-bottom:0}.kv-node-structure__vdisk-details .vdisk-pdisk-node__section{padding-bottom:0}.kv-node-structure__vdisk-id{align-items:center;display:flex}.kv-node-structure__vdisk-details-button_selected,.kv-node-structure__vdisk-id_selected{color:var(--g-color-text-info)}.kv-node-structure__external-button{align-items:center;display:inline-flex;margin-left:4px;transform:translateY(-1px)}.kv-node-structure__external-button_hidden{visibility:hidden}.kv-node-structure .data-table__row:hover .kv-node-structure__external-button_hidden{visibility:visible}.kv-node-structure__selected-vdisk{animation:onSelectedVdiskAnimation 4s}.kv-node-structure__row{display:flex}.kv-node-structure__column{display:flex;flex-direction:column;margin-bottom:15px}.kv-node-structure__title{font-size:var(--g-text-body-2-font-size);font-weight:500;line-height:var(--g-text-body-2-line-height);margin-right:16px;text-transform:uppercase}@keyframes onSelectedVdiskAnimation{0%{background-color:var(--g-color-base-info-light-hover)}}.node{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto}.node__header{margin:16px 20px}.node__content{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto;position:relative}.node__storage{height:100%;overflow:auto;padding:0 20px}.node__tabs{padding:0 20px}.node__tab{margin-right:40px;text-decoration:none}.node__tab:last-child{margin-right:0}.node__tab:first-letter{text-transform:uppercase}.node__overview-wrapper{padding:0 20px 20px}.node__node-page-wrapper{height:100%;padding:20px}.ydb-disk-page-title{text-wrap:nowrap;align-items:baseline;display:flex;flex-flow:row nowrap;font-size:var(--g-text-header-2-font-size);line-height:var(--g-text-header-2-line-height)}.ydb-disk-page-title__prefix{color:var(--g-color-text-secondary);margin-right:6px}.ydb-disk-page-title__icon{margin-right:8px}.ydb-page-meta{text-wrap:nowrap;color:var(--g-color-text-primary);display:flex;flex-flow:row nowrap;font-size:var(--g-text-body-2-font-size);height:var(--g-text-body-2-line-height);line-height:var(--g-text-body-2-line-height)}.ydb-page-meta__skeleton{height:80%;width:80%}.ydb-pdisk-page{display:flex;flex-direction:column;gap:20px;height:100%;overflow:auto;padding-left:20px;padding-top:20px;position:relative}.ydb-pdisk-page__controls,.ydb-pdisk-page__groups-title,.ydb-pdisk-page__info,.ydb-pdisk-page__meta,.ydb-pdisk-page__title{left:0;position:-webkit-sticky;position:sticky}.ydb-pdisk-page__groups-title{font-size:var(--g-text-header-1-font-size);line-height:var(--g-text-header-1-line-height)}.link,.tablet-page__link{color:var(--g-color-text-link);text-decoration:none}.link:hover,.tablet-page__link:hover{color:var(--g-color-text-link-hover)}.tablet-page{display:flex;flex-direction:column;padding:20px}.tablet-page__tenant{margin-bottom:20px}.tablet-page__pane-wrapper{display:flex}.tablet-page__left-pane{margin-right:70px}.tablet-page__history-title{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);margin-bottom:15px}.tablet-page__placeholder{flex:1 1 auto;justify-content:center}.tablet-page__placeholder,.tablet-page__row{align-items:center;display:flex}.tablet-page__row_header{margin-bottom:20px}.tablet-page__row_header .tablet-page__link{margin:0 10px 0 5px}.tablet-page__title{font-size:var(--g-text-body-2-font-size);font-weight:500;line-height:var(--g-text-body-2-line-height);margin-right:16px;text-transform:uppercase}.tablet-page__loader{width:25px}.tablet-page .info-viewer__items{grid-template-columns:auto}.tablet-page__controls{margin:20px 0 15px}.tablet-page__control{margin-right:15px}.tablet-page__links{display:flex;list-style-type:none;margin:5px 0 10px;padding:0}.tablet-page__links>*{margin:0 10px 0 0}.tablet-page__top-label{font-size:var(--g-text-body-2-font-size);font-weight:500;line-height:var(--g-text-body-2-line-height);margin-right:16px;text-transform:uppercase}.tablets-filters{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto}.tablets-filters__node{font-size:var(--g-text-body-1-font-size);line-height:var(--g-text-body-1-line-height);overflow:hidden}.tablets-filters__node-meta{color:var(--g-color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tablets-filters__items{flex:1 1 auto;overflow:auto;padding:5px 20px}.tablets-filters__filters{align-items:center;display:flex;margin:10px 0;padding:0 20px}.tablets-filters__filter-label{margin-right:15px;white-space:nowrap}.tablets-filters__filter-wrapper{align-items:center;display:flex;margin-right:15px}.tablets-filters__filter-control{margin-right:10px;max-width:200px;min-width:100px}.tablets-filters__filter-control:last-child{margin-right:0}.tablets-filters__tablet{margin-bottom:2px}.tablets-filters__empty-message{display:flex;justify-content:center}.tablets-filters__tenant{padding:20px 20px 10px}.tablets-filters .tablet{display:inline-block;line-height:18px;text-align:center}.kv-split{display:flex;height:100%;outline:none;-webkit-user-select:text;user-select:text;z-index:0}.kv-split.horizontal{flex-direction:row}.kv-split.vertical{flex-direction:column;min-height:100%;width:100%}.kv-split .gutter{background:var(--g-color-base-background);position:relative;z-index:10}.kv-split .gutter:after{background-color:var(--g-color-base-generic-ultralight);content:"";inset:0;position:absolute}.kv-split .gutter.active:after,.kv-split .gutter:hover:after{background-color:var(--g-color-line-generic-hover);transition:background-color 1s ease}.kv-split .gutter.disabled{display:none}.kv-split .gutter.gutter-vertical{cursor:row-resize;height:8px;width:100%}.kv-split .gutter.gutter-vertical:before{border-color:var(--g-color-base-generic-hover);border-style:solid;border-width:1px 0;content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:16px}.kv-split .gutter.gutter-horizontal{cursor:col-resize;height:100%;width:8px}.kv-split .gutter.gutter-horizontal:before{border-color:var(--g-color-base-generic-hover);border-style:solid;border-width:0 1px;content:"";height:16px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:4px}.histogram{display:flex;flex:1 1 auto}.histogram__chart{align-items:baseline;border-bottom:1px solid var(--g-color-base-generic);border-left:1px solid var(--g-color-base-generic);display:flex;height:300px;margin-left:50px;margin-top:30px;position:relative;width:800px}.histogram__x-min{left:-3px}.histogram__x-max,.histogram__x-min{bottom:-25px;color:var(--g-color-text-secondary);position:absolute}.histogram__x-max{right:0}.histogram__y-min{bottom:-7px;left:-30px;width:20px}.histogram__y-max,.histogram__y-min{color:var(--g-color-text-secondary);position:absolute;text-align:right}.histogram__y-max{left:-60px;top:-5px;width:50px}.histogram__item{cursor:pointer;margin-right:.5%;width:1.5%}.heatmap{display:flex;flex:1 1 auto;flex-direction:column;height:100%;overflow:auto}.heatmap__limits{align-items:center;display:flex;margin-left:20px}.heatmap__limits-block{display:flex;margin-right:10px}.heatmap__limits-title{color:var(--g-color-text-secondary);margin-right:5px}.heatmap__row{align-items:center}.heatmap__row_overall{margin:15px 20px}.heatmap__row_overall .g-progress{margin:0;width:300px}.heatmap__label{font-size:var(--g-text-body-2-font-size);font-weight:500;line-height:var(--g-text-body-2-line-height);margin-right:16px;text-transform:uppercase}.heatmap__label_overall{margin-right:15px}.heatmap__items{overflow:auto}.heatmap__canvas-container{cursor:pointer;overflow:auto}.heatmap__filters{align-items:center;display:flex;margin:0 0 10px}.heatmap__filter-control{margin-right:10px;max-width:200px;min-width:100px}.heatmap__filter-control:last-child{margin-right:0}.heatmap__histogram-checkbox,.heatmap__sort-checkbox{margin-left:10px}.heatmap__row{display:flex}.heatmap .tablet,.heatmap__row{margin-bottom:2px}.autorefresh-control,.schema-viewer__key-icon{align-items:center;display:flex}.autorefresh-control{gap:var(--g-spacing-1)}.speed-multimeter{display:flex;width:100%}.speed-multimeter__content{display:flex;flex-direction:row;flex-grow:1;justify-content:flex-end;line-height:22px}.speed-multimeter__displayed-value{display:flex;flex-direction:row;justify-content:flex-end;margin-right:10px}.speed-multimeter__bars{align-items:flex-start;display:flex;flex-direction:column;margin-right:5px;overflow:hidden;width:32px}.speed-multimeter__bar-container{height:6px;width:100%}.speed-multimeter__bar-container_highlighted{background:var(--g-color-line-generic)}.speed-multimeter__bar{height:100%;min-width:2px}.speed-multimeter__bar_color_light{background:var(--g-color-base-info-medium)}.speed-multimeter__bar_color_dark{background:var(--g-color-base-info-heavy)}.speed-multimeter__bar-container+.speed-multimeter__bar-container{margin-top:2px}.speed-multimeter__popover-container{align-items:center;display:flex;justify-content:center}.speed-multimeter__popover-content{padding:10px}.speed-multimeter__popover-header{display:block;font-size:18px;line-height:24px;margin-bottom:7px}.speed-multimeter__popover-row{display:block;font-size:13px;line-height:18px}.speed-multimeter__popover-row_color_primary{color:var(--g-color-text-primary)}.speed-multimeter__popover-row_color_secondary{color:var(--g-color-text-secondary)}.ydb-diagnostics-consumers-topic-stats{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height)}.ydb-diagnostics-consumers-topic-stats__wrapper{border-left:1px solid var(--g-color-line-generic);display:flex;flex-direction:row;padding-left:16px}.ydb-diagnostics-consumers-topic-stats__item{display:flex;flex-direction:column;margin-right:20px}.ydb-diagnostics-consumers-topic-stats__label{color:var(--g-color-text-secondary);margin-bottom:4px}.ydb-diagnostics-consumers-topic-stats__value{align-items:center;display:flex;height:30px;justify-content:flex-start}.ydb-lag-popover-content__text{margin-bottom:10px}.ydb-lag-popover-content_type_read{max-width:280px}.ydb-lag-popover-content_type_write{max-width:220px}.ydb-diagnostics-consumers-columns-header__lags{white-space:nowrap}.ydb-diagnostics-consumers-columns__lags-header{text-align:center}.ydb-diagnostics-consumers{display:flex;flex-grow:1;flex:1 1 auto;flex-direction:column;height:100%;overflow:auto}.ydb-diagnostics-consumers__controls{align-items:center;display:flex;gap:12px;padding:16px 0 18px}.ydb-diagnostics-consumers__search{width:238px}.ydb-diagnostics-consumers__table-wrapper{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto}.ydb-diagnostics-consumers__table-content{height:100%;overflow:auto}.ydb-diagnostics-consumers__table .data-table__head-row:first-child .data-table__th:first-child,.ydb-diagnostics-consumers__table .data-table__td:first-child{background-color:var(--g-color-base-background);border-right:1px solid var(--g-color-line-generic);left:0;position:-webkit-sticky;position:sticky;z-index:2000}.ydb-diagnostics-consumers__table .data-table__row:hover .data-table__td:first-child{background-color:var(--ydb-data-table-color-hover)!important}.ydb-diagnostics-consumers__table .data-table__head-row:first-child .data-table__th:nth-child(0),.ydb-diagnostics-consumers__table .data-table__td:nth-child(0){border-right:initial;box-shadow:none}.ydb-diagnostics-consumers__table .data-table__head-row:first-child .data-table__th:first-child,.ydb-diagnostics-consumers__table .data-table__td:first-child{box-shadow:none}.kv-describe__message-container{padding:15px 0}.kv-describe__result{display:flex;flex:0 0 auto;overflow:auto;padding:10px 20px 20px 0}.kv-describe__tree{font-family:var(--g-font-family-monospace)!important;font-size:var(--g-text-code-1-font-size)!important;line-height:var(--g-text-code-1-line-height)!important}.kv-describe__tree .json-inspector__leaf_composite:before{color:var(--g-color-text-secondary);font-size:9px;left:20px;position:absolute}.kv-describe__tree .json-inspector__leaf_composite.json-inspector__leaf_root:before{left:0}.kv-describe__tree :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:"[+]"}.kv-describe__tree .json-inspector__leaf_expanded.json-inspector__leaf_composite:before{content:"[-]"}.kv-describe__tree .json-inspector__key{color:var(--g-color-text-misc)}.kv-describe__tree .json-inspector__leaf{padding-left:20px;position:relative}.kv-describe__tree .json-inspector__leaf_root{padding-left:0}.kv-describe__tree .json-inspector__line{padding-left:20px}.kv-describe__tree .json-inspector__toolbar{border:1px solid var(--g-color-line-generic);border-radius:4px;margin-bottom:10px;width:300px}.kv-describe__tree .json-inspector__search{background:none;border:0 solid #0000;border-width:0 22px 0 8px;box-sizing:border-box;color:var(--g-color-text-primary);font-family:var(--g-text-body-font-family);font-size:13px;height:28px;margin:0;outline:0;padding:0;vertical-align:top;width:300px}.kv-describe__tree .json-inspector__value_helper{color:var(--g-color-text-secondary)}.kv-describe__tree .json-inspector__line:hover:after{background:var(--g-color-base-simple-hover)}.kv-describe__tree .json-inspector__show-original:before{color:var(--g-color-text-secondary)}.kv-describe__tree .json-inspector__show-original:hover:after,.kv-describe__tree .json-inspector__show-original:hover:before{color:var(--g-color-text-primary)}.json-inspector,.json-inspector__selection{font:14px/1.4 Consolas,monospace}.json-inspector__leaf{padding-left:10px}.json-inspector__line{cursor:default;display:block;position:relative}.json-inspector__line:after{bottom:0;content:"";left:-200px;pointer-events:none;position:absolute;right:-50px;top:0;z-index:-1}.json-inspector__line:hover:after{background:#0000000f}.json-inspector__leaf_composite>.json-inspector__line{cursor:pointer}.json-inspector__flatpath,.json-inspector__radio{display:none}.json-inspector__value{margin-left:5px}.json-inspector__search{margin:0 10px 10px 0;min-width:300px;padding:2px}.json-inspector__key{color:#505050}.json-inspector__not-found,.json-inspector__value_helper,.json-inspector__value_null{color:#b0b0b0}.json-inspector__value_string{color:#798953}.json-inspector__value_boolean{color:#75b5aa}.json-inspector__value_number{color:#d28445}.json-inspector__hl{background:#ff0;border-radius:2px;box-shadow:0 -1px 0 2px #ff0}.json-inspector__show-original{color:#666;cursor:pointer;display:inline-block;padding:0 6px}.json-inspector__show-original:hover{color:#111}.json-inspector__show-original:before{content:"⥂"}.json-inspector__show-original:hover:after{content:" expand"}.ydb-external-data-source-info__location,.ydb-external-table-info__location{max-width:var(--tenant-object-info-max-value-width)}.ydb-async-replication-paths__title,.ydb-overview-topic-stats__title{font-size:var(--g-text-body-2-font-size);font-weight:600;line-height:var(--g-text-body-2-line-height);margin:15px 0 10px}.ydb-overview-topic-stats .ydb-loader{margin-top:50px}.ydb-overview-topic-stats .info-viewer__row{align-items:flex-start}.ydb-overview-topic-stats .speed-multimeter{margin-top:-5px}.ydb-overview-topic-stats .speed-multimeter__content{justify-content:flex-start}.ydb-overview-topic-stats__info .info-viewer__label-text_multiline{max-width:150px}.ydb-overview-topic-stats__bytes-written{margin-top:7px;padding-left:20px}.ydb-overview-topic-stats__bytes-written .info-viewer__label{min-width:180px}.ydb-diagnostics-table-info{overflow:auto}.ydb-diagnostics-table-info__title{font-size:var(--g-text-body-2-font-size);font-weight:600;line-height:var(--g-text-body-2-line-height);margin:15px 0 10px}.ydb-diagnostics-table-info__row{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.ydb-diagnostics-table-info__col{align-items:flex-start;display:flex;flex-direction:column;justify-content:flex-start}.ydb-diagnostics-table-info__col:not(:last-child){margin-right:50px}.ydb-diagnostics-table-info__info-block{margin-bottom:20px}.ydb-diagnostics-table-info__info-block .info-viewer__items{grid-template-columns:minmax(-webkit-max-content,280px);grid-template-columns:minmax(max-content,280px)}.ydb-metric-chart{border:1px solid var(--g-color-line-generic);border-radius:8px;display:flex;flex-direction:column;padding:16px 16px 8px}.ydb-metric-chart__title{margin-bottom:10px}.ydb-metric-chart__chart{display:flex;height:100%;overflow:hidden;position:relative;width:100%}.ydb-metric-chart__error{left:50%;position:absolute;text-align:center;top:10%;transform:translateX(-50%);z-index:1}.chartkit{height:100%;width:100%}.chartkit_mobile .chartkit-scrollable-node{max-height:3000px}.chartkit-theme_common{--highcarts-navigator-border:var(--g-color-line-generic);--highcarts-navigator-track:var(--g-color-base-generic);--highcarts-navigator-body:var(--g-color-scroll-handle);--highcharts-series-border:var(--g-color-base-background);--highcharts-grid-line:var(--g-color-line-generic);--highcharts-axis-line:var(--g-color-line-generic);--highcharts-tick:var(--g-color-line-generic);--highcharts-title:var(--g-color-text-primary);--highcharts-axis-labels:var(--g-color-text-secondary);--highcharts-data-labels:var(--g-color-text-secondary);--highcharts-plot-line-label:var(--g-color-text-secondary);--highcharts-legend-item:var(--g-color-text-secondary);--highcharts-legend-item-hover:var(--g-color-text-primary);--highcharts-legend-item-hidden:var(--g-color-text-hint);--highcharts-floating-bg:var(--g-color-infographics-tooltip-bg);--highcharts-tooltip-text:var(--g-color-text-primary);--highcharts-tooltip-bg:var(--highcharts-floating-bg);--highcharts-tooltip-alternate-bg:var(--g-color-base-generic);--highcharts-tooltip-text-complementary:var(--g-color-text-secondary);--highcharts-holiday-band:var(--g-color-base-generic);--d3-data-labels:var(--g-color-text-secondary)}.chartkit-loader{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.ydb-timeframe-selector{display:flex;gap:2px}.ydb-tenant-dashboard{margin-bottom:var(--diagnostics-section-margin);width:var(--diagnostics-section-table-width)}.ydb-tenant-dashboard__controls{margin-bottom:10px}.ydb-tenant-dashboard__charts{display:flex;flex-flow:row wrap;gap:16px}.issue-tree-item{align-items:center;cursor:pointer;display:flex;height:40px;justify-content:space-between}.issue-tree-item__field{display:flex;overflow:hidden}.issue-tree-item__field_status{display:flex;white-space:nowrap}.issue-tree-item__field_additional{color:var(--g-color-text-link);cursor:pointer;width:-webkit-max-content;width:max-content}.issue-tree-item__field_additional:hover{color:var(--g-color-text-link-hover)}.issue-tree-item__field_message{flex-shrink:0;overflow:hidden;white-space:normal;width:300px}.issue-tree-item__field-tooltip.issue-tree-item__field-tooltip{max-width:500px;min-width:500px}.issue-tree-item__field-label{color:var(--g-color-text-secondary)}.issue-tree{display:flex}.issue-tree__block{width:100%}.issue-tree__checkbox{margin:5px 0 10px}.issue-tree__info-panel{background:var(--g-color-base-generic);border-radius:4px;height:100%;margin:11px 0;padding:8px 20px;position:-webkit-sticky;position:sticky}.issue-tree__inspector{font-family:var(--g-font-family-monospace)!important;font-size:var(--g-text-code-1-font-size)!important;line-height:var(--g-text-code-1-line-height)!important}.issue-tree__inspector .json-inspector__leaf_composite:before{color:var(--g-color-text-secondary);font-size:9px;left:20px;position:absolute}.issue-tree__inspector .json-inspector__leaf_composite.json-inspector__leaf_root:before{left:0}.issue-tree__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:"[+]"}.issue-tree__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before{content:"[-]"}.issue-tree__inspector .json-inspector__key{color:var(--g-color-text-misc)}.issue-tree__inspector .json-inspector__leaf{padding-left:20px;position:relative}.issue-tree__inspector .json-inspector__leaf_root{padding-left:0}.issue-tree__inspector .json-inspector__line{padding-left:20px}.issue-tree__inspector .json-inspector__toolbar{border:1px solid var(--g-color-line-generic);border-radius:4px;margin-bottom:10px;width:300px}.issue-tree__inspector .json-inspector__search{background:none;border:0 solid #0000;border-width:0 22px 0 8px;box-sizing:border-box;color:var(--g-color-text-primary);font-family:var(--g-text-body-font-family);font-size:13px;height:28px;margin:0;outline:0;padding:0;vertical-align:top;width:300px}.issue-tree__inspector .json-inspector__value_helper{color:var(--g-color-text-secondary)}.issue-tree__inspector .json-inspector__line:hover:after{background:var(--g-color-base-simple-hover)}.issue-tree__inspector .json-inspector__show-original:before{color:var(--g-color-text-secondary)}.issue-tree__inspector .json-inspector__show-original:hover:after,.issue-tree__inspector .json-inspector__show-original:hover:before{color:var(--g-color-text-primary)}.issue-tree__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before,.issue-tree__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:""}.issue-tree__inspector .json-inspector__line:hover:after{background:#0000}.issue-tree__inspector .json-inspector__show-original:hover:after,.issue-tree__inspector .json-inspector__show-original:hover:before{color:#0000}.issue-tree__inspector .json-inspector__value_helper{display:none}.issue-tree__inspector .json-inspector__value{overflow:hidden;word-break:break-all}.issue-tree__inspector .json-inspector__value>span{-webkit-user-select:all;user-select:all}.issue-tree .ydb-tree-view__item{height:40px}.issue-tree .ydb-tree-view .tree-view_arrow{height:40px;width:40px}.issue-tree .ydb-tree-view .ydb-tree-view__item{margin-left:calc(24px*var(--ydb-tree-view-level))!important;padding-left:0!important}.issue-tree .ydb-tree-view .issue-tree__info-panel{margin-left:calc(24px*var(--ydb-tree-view-level))}.healthcheck{display:flex}.healthcheck_expanded{min-width:885px}.healthcheck__issue-preview{margin-bottom:15px}.healthcheck__message-container{padding:15px 0}.healthcheck__details{width:872px}.healthcheck__details-content-wrapper{overflow-x:hidden}.healthcheck__preview{height:100%}.healthcheck__preview-header{gap:8px;margin-bottom:var(--diagnostics-section-title-margin)}.healthcheck__preview-title{color:var(--g-color-text-link);font-size:var(--g-text-subheader-3-font-size);font-weight:600;line-height:var(--g-text-subheader-3-line-height)}.healthcheck__preview-content{line-height:24px}.healthcheck__preview-title-wrapper{align-items:center;display:flex;gap:8px;margin-bottom:4px}.healthcheck__issues-statistics{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin:8px 0}.healthcheck__self-check-status-indicator{border-radius:4px;display:inline-block;font-size:13px;line-height:24px;padding:0 8px}.healthcheck__self-check-status-indicator_good,.healthcheck__self-check-status-indicator_green{background-color:var(--g-color-base-positive-light);color:var(--g-color-text-positive)}.healthcheck__self-check-status-indicator_degraded,.healthcheck__self-check-status-indicator_yellow{background-color:var(--g-color-base-warning-light);color:var(--g-color-text-warning)}.healthcheck__self-check-status-indicator_blue{background-color:var(--g-color-base-info-light);color:var(--g-color-text-info)}.healthcheck__self-check-status-indicator_emergency,.healthcheck__self-check-status-indicator_red{background-color:var(--g-color-base-danger-light);color:var(--g-color-text-danger)}.healthcheck__self-check-status-indicator_grey,.healthcheck__self-check-status-indicator_unspecified{background-color:var(--g-color-base-misc-light);color:var(--g-color-text-misc)}.healthcheck__self-check-status-indicator_maintenance_required,.healthcheck__self-check-status-indicator_orange{background-color:var(--g-color-base-warning-light);color:var(--g-color-text-warning-heavy)}.ydb-diagnostic-card{background-color:#0000;border:1px solid var(--g-color-line-generic);border-radius:8px;flex-shrink:0;padding:16px 16px 28px;width:206px}.ydb-diagnostic-card_active{background-color:var(--g-color-base-selection);border-color:var(--g-color-base-info-medium)}.ydb-diagnostic-card:hover{box-shadow:0 1px 5px var(--g-color-sfx-shadow);cursor:pointer}.ydb-metrics-card{min-height:252px}.ydb-metrics-card__header{align-items:center;display:flex;gap:8px;justify-content:space-between;margin-bottom:10px}.ydb-metrics-card__label{color:var(--g-color-text-link);font-size:var(--g-text-subheader-3-font-size);font-weight:600;line-height:var(--g-text-subheader-3-line-height)}.ydb-metrics-card__content{color:var(--g-color-text-secondary);display:flex;flex-direction:column;gap:10px}.ydb-metrics-card__metric-title{height:var(--g-text-body-2-line-height)}.ydb-metrics-card_active .ydb-metrics-card__content{color:var(--g-color-text-complementary)}.metrics-cards{display:flex;gap:16px;margin-bottom:32px}.metrics-cards__tab{color:inherit;text-decoration:none}.kv-truncated-query{max-width:100%;vertical-align:top;white-space:pre;word-break:break-word}.kv-truncated-query__message{white-space:pre-wrap}.kv-truncated-query__message_color_secondary{color:var(--g-color-text-secondary)}.kv-truncated-query__popover-content{max-width:600px;overflow:hidden;white-space:pre}.kv-top-queries{display:flex;flex-direction:column;height:100%}.kv-top-queries .data-table__td,.kv-top-queries .data-table__th{vertical-align:middle}.kv-top-queries .data-table__box .data-table__table-wrapper{padding-bottom:20px}.kv-top-queries .data-table__th{box-shadow:inset 0 -1px 0 0 var(--g-tabs-color-divider)}.kv-top-queries__search{width:238px}.kv-top-queries__row{cursor:pointer}.kv-top-queries__query{overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:pre-wrap;word-break:break-word}.kv-top-queries__user-sid{max-width:200px;overflow:hidden;text-overflow:ellipsis}.tenant-overview{height:100%;overflow:auto;padding-bottom:20px}.tenant-overview__loader{display:flex;justify-content:center}.tenant-overview__tenant-name-wrapper{align-items:center;display:flex;overflow:hidden}.tenant-overview__top{align-items:center;display:flex;gap:4px;line-height:24px;margin-bottom:10px}.tenant-overview__top-label{font-weight:600;gap:10px;line-height:24px;margin-bottom:var(--diagnostics-section-title-margin)}.tenant-overview__info{left:0;position:-webkit-sticky;position:sticky;width:-webkit-max-content;width:max-content}.tenant-overview__title{font-size:var(--g-text-body-2-font-size);font-weight:700;line-height:var(--g-text-body-2-line-height);margin-bottom:10px}.tenant-overview__table:not(:last-child){margin-bottom:var(--diagnostics-section-margin)}.tenant-overview__table th{height:40px;vertical-align:middle}.tenant-overview__top-queries-row{cursor:pointer}.tenant-overview__storage-info{margin-bottom:36px}.kv-detailed-overview{display:flex;gap:20px;height:100%;width:100%}.kv-detailed-overview__section{display:flex;flex-basis:calc(50% - 10px);flex-direction:column;flex-grow:1;flex-shrink:0;min-width:300px}.kv-detailed-overview__modal .g-modal__content{position:relative}.kv-detailed-overview__close-modal-button{position:absolute;right:13px;top:23px}.ydb-hot-keys__primary-key-column{align-items:center;display:flex;gap:5px}.ydb-hot-keys__help-card{left:0;margin-bottom:20px;padding:20px 40px 20px 20px;position:-webkit-sticky;position:sticky}.ydb-hot-keys__help-card__close-button{position:absolute;right:5px;top:5px}.g-card{--_--background-color:#0000;--_--border-color:#0000;--_--border-width:0;--_--box-shadow:none;background-color:var(--_--background-color);background-color:var(--g-card-background-color,var(--_--background-color));border:var(--g-card-border-width,var(--_--border-width)) solid var(--g-card-border-color,var(--_--border-color));border-radius:var(--_--border-radius);border-radius:var(--g-card-border-radius,var(--_--border-radius));box-shadow:var(--_--box-shadow);box-shadow:var(--g-card-box-shadow,var(--_--box-shadow));box-sizing:border-box;outline:none}.g-card_theme_normal{--_--border-color:var(--g-color-line-generic);--_--background-color:var(--g-color-base-generic)}.g-card_theme_info{--_--border-color:var(--g-color-line-info);--_--background-color:var(--g-color-base-info-light)}.g-card_theme_success{--_--border-color:var(--g-color-line-positive);--_--background-color:var(--g-color-base-positive-light)}.g-card_theme_warning{--_--border-color:var(--g-color-line-warning);--_--background-color:var(--g-color-base-warning-light)}.g-card_theme_danger{--_--border-color:var(--g-color-line-danger);--_--background-color:var(--g-color-base-danger-light)}.g-card_theme_utility{--_--border-color:var(--g-color-line-utility);--_--background-color:var(--g-color-base-utility-light)}.g-card_view_clear,.g-card_view_outlined{--_--background-color:#0000}.g-card_view_outlined{--_--border-width:1px}.g-card_type_action{--_--background-color:var(--g-color-base-float);--_--box-shadow:0px 1px 5px var(--g-color-sfx-shadow)}.g-card_type_action:after{border-radius:var(--_--border-radius);border-radius:var(--g-card-border-radius,var(--_--border-radius));inset:0;pointer-events:none;position:absolute}.g-card_type_action.g-card_clickable{cursor:pointer;position:relative}.g-card_type_action.g-card_clickable:hover{--_--box-shadow:0px 3px 10px var(--g-color-sfx-shadow)}.g-card_type_action.g-card_clickable:focus-visible:after{content:"";outline:2px solid var(--g-color-line-focus)}.g-card_type_selection{--_--border-width:1px;--_--border-color:var(--g-color-line-generic);position:relative}.g-card_type_selection:before{inset:-1px}.g-card_type_selection:after,.g-card_type_selection:before{border-radius:var(--_--border-radius);border-radius:var(--g-card-border-radius,var(--_--border-radius));pointer-events:none;position:absolute}.g-card_type_selection:after{inset:0}.g-card_type_selection.g-card_clickable{cursor:pointer}.g-card_type_selection.g-card_clickable:hover{--_--border-color:#0000}.g-card_type_selection.g-card_clickable:hover:before{border:2px solid var(--g-color-line-brand);content:"";opacity:.5}.g-card_type_selection.g-card_clickable:hover:focus-visible:before{border-color:#0000}.g-card_type_selection.g-card_clickable:focus-visible:after{content:"";outline:2px solid var(--g-color-line-focus)}.g-card_type_selection.g-card_selected:not(.g-card_disabled){--_--border-color:#0000}.g-card_type_selection.g-card_selected:not(.g-card_disabled):before{border:2px solid var(--g-color-line-brand);content:""}.g-card_type_selection.g-card_view_clear{--_--border-color:#0000}.g-card_type_container.g-card_view_raised{--_--background-color:var(--g-color-base-float)}.g-card_type_container.g-card_view_raised.g-card_size_m{--_--box-shadow:0px 1px 5px var(--g-color-sfx-shadow)}.g-card_type_container.g-card_view_raised.g-card_size_l{--_--box-shadow:0px 1px 6px var(--g-color-sfx-shadow-light),1px 3px 13px var(--g-color-sfx-shadow-light)}.g-card_size_m{--_--border-radius:8px}.g-card_size_l{--_--border-radius:16px}.node-network{border:1px solid #0000;border-radius:4px;box-sizing:border-box;color:var(--g-color-text-complementary);cursor:pointer;display:inline-block;font-size:12px;height:14px;line-height:14px;margin-bottom:5px;margin-right:5px;padding:0 5px;text-align:center;text-transform:uppercase;width:14px}.node-network_id{height:14px;width:42px}.node-network_blur{opacity:.25}.node-network_grey{background:var(--ydb-color-status-grey)}.node-network_black{background-color:var(--ydb-color-status-black);color:var(--g-color-text-light-primary)}.node-network_green{background-color:var(--ydb-color-status-green)}.node-network_yellow{background-color:var(--ydb-color-status-yellow)}.node-network_red{background-color:var(--ydb-color-status-red)}.node-network:hover{border:1px solid var(--g-color-text-primary)}.network{font-size:var(--g-text-body-2-font-size);justify-content:space-between;line-height:var(--g-text-body-2-line-height);max-width:1305px}.network,.network__nodes-row{display:flex;flex-grow:1;height:100%;overflow:auto}.network__nodes-row{align-items:flex-start;flex-direction:row}.network__inner{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto}.network__right{height:100%;padding-left:20px;width:100%}.network__left{border-right:1px solid var(--g-color-base-generic-accent);height:100%}.network__placeholder{align-items:center;display:flex;flex-direction:column;flex-grow:1;height:100%;justify-content:center;width:100%}.network__placeholder-text{margin-top:15px}.network__placeholder-img{color:#0000}.network__nodes{display:flex;flex-wrap:wrap}.network__nodes-container{min-width:325px}.network__nodes-container_right{margin-right:60px}.network__nodes-title{border-bottom:1px solid var(--g-color-base-generic-accent);color:var(--g-color-text-secondary);font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);margin:0 0 15px}.network__link{color:var(--g-color-base-brand);text-decoration:none}.network__title{font-size:var(--g-text-body-1-font-size);font-weight:500;line-height:var(--g-text-body-1-line-height);margin:20px 0}.network__checkbox-wrapper{align-items:center;display:flex}.network__checkbox-wrapper label{white-space:nowrap}.network__label{margin-bottom:16px}.network__controls{display:flex;gap:12px;margin:0 16px 16px 0}.network__controls-wrapper{display:flex;flex:1 1 auto;flex-direction:row;flex-direction:column}.network__select{margin:0 15px;max-width:115px}.network__rack-column{align-items:center;background-color:#00000012;border-radius:4px;display:flex;flex-direction:column;margin-bottom:5px;margin-right:5px;padding:2px}.network__rack-column .node-network{margin-right:0}.ydb-diagnostics-partitions-columns-header__multiline{white-space:normal}.ydb-diagnostics-partitions-columns-header__read-session{white-space:normal;width:80px}.ydb-diagnostics-partitions-columns-header__lags{white-space:nowrap}.ydb-diagnostics-partitions-columns-header__messages{white-space:normal;width:90px}.ydb-diagnostics-partitions-columns-header__messages-popover-content{max-width:200px}.ydb-diagnostics-partitions-columns__lags-header{text-align:center}.ydb-diagnostics-partitions{display:flex;flex-grow:1;flex:1 1 auto;flex-direction:column;height:100%;overflow:auto}.ydb-diagnostics-partitions__controls{align-items:center;display:flex;gap:12px;padding:16px 0 18px}.ydb-diagnostics-partitions__consumer-select{width:220px}.ydb-diagnostics-partitions__select-option_empty{color:var(--g-color-text-hint)}.ydb-diagnostics-partitions__search{width:238px}.ydb-diagnostics-partitions__search_partition{width:100px}.ydb-diagnostics-partitions__search_general{width:280px}.ydb-diagnostics-partitions__table-wrapper{display:flex;flex:1 1 auto;flex-direction:column;overflow:auto}.ydb-diagnostics-partitions__table-content{height:100%;overflow:auto}.ydb-diagnostics-partitions__table .data-table__head-row:first-child .data-table__th:first-child,.ydb-diagnostics-partitions__table .data-table__td:first-child{background-color:var(--g-color-base-background);border-right:1px solid var(--g-color-line-generic);left:0;position:-webkit-sticky;position:sticky;z-index:2000}.ydb-diagnostics-partitions__table .data-table__row:hover .data-table__td:first-child{background-color:var(--ydb-data-table-color-hover)!important}.ydb-diagnostics-partitions__table .data-table__head-row:first-child .data-table__th:nth-child(0),.ydb-diagnostics-partitions__table .data-table__td:nth-child(0){border-right:initial;box-shadow:none}.ydb-diagnostics-partitions__table .data-table__head-row:first-child .data-table__th:first-child,.ydb-diagnostics-partitions__table .data-table__td:first-child{box-shadow:none}.date-range__input{background:#0000;border:1px solid var(--g-color-line-generic);border-radius:var(--g-border-radius-m);color:var(--g-color-text-primary);height:28px;min-width:190px;outline:none;padding:5px 8px}.date-range__input:focus,.date-range__input:focus-visible{border:1px solid var(--g-color-line-generic-hover)}.top-shards__hint{left:0;position:-webkit-sticky;position:sticky;width:-webkit-max-content;width:max-content}.kv-tenant-diagnostics{display:flex;flex-direction:column;height:100%;overflow:hidden}.kv-tenant-diagnostics__header-wrapper{background-color:var(--g-color-base-background);padding:13px 20px 16px}.kv-tenant-diagnostics__tabs{align-items:center;box-shadow:inset 0 -1px 0 0 var(--g-color-line-generic);display:flex;justify-content:space-between}.kv-tenant-diagnostics__tabs .g-tabs_direction_horizontal{box-shadow:none}.kv-tenant-diagnostics__tab{margin-right:40px;text-decoration:none}.kv-tenant-diagnostics__tab:first-letter{text-transform:uppercase}.kv-tenant-diagnostics__page-wrapper{flex-grow:1;overflow:auto;padding:0 20px;width:100%}.kv-tenant-diagnostics__page-wrapper .ydb-table-with-controls-layout__controls{height:46px;padding-top:0}.kv-tenant-diagnostics__page-wrapper .ydb-table-with-controls-layout .data-table__sticky_moving,.kv-tenant-diagnostics__page-wrapper .ydb-table-with-controls-layout .ydb-virtual-table__head{top:46px!important}.ydb-queries-history{display:flex;flex:1 1 auto;flex-direction:column;height:100%;overflow:auto;padding:0 16px}.ydb-queries-history__table-row{cursor:pointer}.ydb-queries-history__query{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kv-pane-visibility-button_hidden{display:none}.kv-pane-visibility-button_bottom{transform:rotate(180deg)}.kv-pane-visibility-button_bottom.rotate{transform:rotate(0)}.kv-pane-visibility-button_left{transform:rotate(-90deg)}.kv-pane-visibility-button_left.rotate{transform:rotate(90deg)}.kv-pane-visibility-button_top.rotate{transform:rotate(180deg)}.kv-divider{background-color:var(--g-color-line-generic);height:100%;margin:0 4px;width:1px}.kv-fullscreen{background-color:var(--g-color-base-background);display:flex;flex-grow:1;inset:0;overflow:hidden;position:absolute;z-index:10}.kv-fullscreen__close-button{position:fixed;right:20px;top:8px;z-index:11}.kv-query-execution-status{align-items:center;color:var(--g-color-text-complementary);display:flex;gap:4px}.kv-query-execution-status__result-status-icon{color:var(--g-color-text-positive)}.kv-query-execution-status__result-status-icon_error{color:var(--g-color-text-danger)}.ydb-query-result-table__cell{cursor:pointer;display:inline-block;max-width:600px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.ydb-query-result-table__message{padding:15px 10px}.kv-shorty-string__toggle{font-size:.85em;margin-left:2em}.kv-result-issues{padding:0 10px}.kv-result-issues__error-message{align-items:center;background-color:var(--g-color-base-background);display:flex;left:0;padding:10px 0;position:-webkit-sticky;position:sticky;top:0;z-index:2}.kv-result-issues__error-message-text{margin:0 10px}.kv-issues{position:relative}.kv-issue_leaf{margin-left:31px}.kv-issue__issues{padding-left:24px}.kv-issue__line{align-items:flex-start;display:flex;margin:0 0 10px;padding:0 10px 0 0}.kv-issue__place-text{color:var(--g-color-text-secondary);display:inline-block;padding-right:10px;text-align:left}.kv-issue__message{display:flex;font-family:var(--g-font-family-monospace);font-size:var(--g-text-code-2-font-size);line-height:var(--g-text-header-2-line-height);margin-left:10px;margin-right:auto}.kv-issue__message-text{flex:1 1 auto;min-width:240px;white-space:pre-wrap;word-break:break-word}.kv-issue__code{color:var(--g-color-text-complementary);flex:0 0 auto;font-size:12px;margin-left:1.5em;padding:3px 0}.kv-issue__arrow-toggle{margin-right:5px}.yql-issue-severity{align-items:center;display:flex;line-height:28px;white-space:nowrap}.yql-issue-severity_severity_error .yql-issue-severity__icon,.yql-issue-severity_severity_fatal .yql-issue-severity__icon{color:var(--g-color-text-danger)}.yql-issue-severity_severity_warning .yql-issue-severity__icon{color:var(--g-color-text-warning)}.yql-issue-severity_severity_info .yql-issue-severity__icon{color:var(--g-color-text-info)}.yql-issue-severity__title{color:var(--g-color-text-complementary);margin-left:4px;text-transform:capitalize}.ydb-query-duration{align-items:center;color:var(--g-color-text-complementary);display:flex;margin-left:10px}.ydb-query-duration__item-with-popover{white-space:nowrap}.ydb-query-duration__popover{max-width:300px}.ydb-query-execute-result__result{display:flex;flex-direction:column;flex-grow:1;overflow:auto;padding-left:10px}.ydb-query-execute-result__result .data-table__td,.ydb-query-execute-result__result .data-table__th{vertical-align:middle}.ydb-query-execute-result__result .data-table__box .data-table__table-wrapper{padding-bottom:20px}.ydb-query-execute-result__result .data-table__th{box-shadow:inset 0 -1px 0 0 var(--g-tabs-color-divider)}.ydb-query-execute-result__result .data-table__table-wrapper{padding-bottom:0}.ydb-query-execute-result__result-fullscreen-wrapper{display:flex;flex-direction:column;width:100%}.ydb-query-execute-result__result-tabs{padding-left:10px}.ydb-query-execute-result__error{padding:15px 10px}.ydb-query-execute-result__controls{align-items:center;background-color:var(--g-color-base-background);border-bottom:1px solid var(--g-color-line-generic);display:flex;height:53px;justify-content:space-between;padding:12px 20px;position:-webkit-sticky;position:sticky;top:0;z-index:2}.ydb-query-execute-result__controls-right{display:flex;gap:12px;height:100%}.ydb-query-execute-result__controls-left{display:flex;gap:4px}.ydb-query-execute-result__inspector{font-family:var(--g-font-family-monospace)!important;font-size:var(--g-text-code-1-font-size)!important;line-height:var(--g-text-code-1-line-height)!important;padding:15px 10px}.ydb-query-execute-result__inspector .json-inspector__leaf_composite:before{color:var(--g-color-text-secondary);font-size:9px;left:20px;position:absolute}.ydb-query-execute-result__inspector .json-inspector__leaf_composite.json-inspector__leaf_root:before{left:0}.ydb-query-execute-result__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:"[+]"}.ydb-query-execute-result__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before{content:"[-]"}.ydb-query-execute-result__inspector .json-inspector__key{color:var(--g-color-text-misc)}.ydb-query-execute-result__inspector .json-inspector__leaf{padding-left:20px;position:relative}.ydb-query-execute-result__inspector .json-inspector__leaf_root{padding-left:0}.ydb-query-execute-result__inspector .json-inspector__line{padding-left:20px}.ydb-query-execute-result__inspector .json-inspector__toolbar{border:1px solid var(--g-color-line-generic);border-radius:4px;margin-bottom:10px;width:300px}.ydb-query-execute-result__inspector .json-inspector__search{background:none;border:0 solid #0000;border-width:0 22px 0 8px;box-sizing:border-box;color:var(--g-color-text-primary);font-family:var(--g-text-body-font-family);font-size:13px;height:28px;margin:0;outline:0;padding:0;vertical-align:top;width:300px}.ydb-query-execute-result__inspector .json-inspector__value_helper{color:var(--g-color-text-secondary)}.ydb-query-execute-result__inspector .json-inspector__line:hover:after{background:var(--g-color-base-simple-hover)}.ydb-query-execute-result__inspector .json-inspector__show-original:before{color:var(--g-color-text-secondary)}.ydb-query-execute-result__inspector .json-inspector__show-original:hover:after,.ydb-query-execute-result__inspector .json-inspector__show-original:hover:before{color:var(--g-color-text-primary)}.ydb-query-execute-result__inspector_fullscreen{height:100%;overflow:auto;padding:10px;width:100%}.ydb-query-explain-result__result{display:flex;flex-direction:column;flex-grow:1;overflow:auto}.ydb-query-explain-result__text-message{padding:15px 20px}.ydb-query-explain-result__controls{align-items:center;background-color:var(--g-color-base-background);border-bottom:1px solid var(--g-color-line-generic);display:flex;height:53px;justify-content:space-between;padding:12px 20px;position:-webkit-sticky;position:sticky;top:0;z-index:2}.ydb-query-explain-result__controls-right{display:flex;gap:12px;height:100%}.ydb-query-explain-result__controls-left{display:flex;gap:4px}.ydb-query-explain-result__explain-canvas-container{height:100%;overflow-y:auto;width:100%}.ydb-query-explain-result__explain-canvas-container_hidden{display:none}.ydb-query-explain-result__inspector{font-family:var(--g-font-family-monospace)!important;font-size:var(--g-text-code-1-font-size)!important;line-height:var(--g-text-code-1-line-height)!important;overflow-y:auto;padding:15px 20px;width:100%}.ydb-query-explain-result__inspector .json-inspector__leaf_composite:before{color:var(--g-color-text-secondary);font-size:9px;left:20px;position:absolute}.ydb-query-explain-result__inspector .json-inspector__leaf_composite.json-inspector__leaf_root:before{left:0}.ydb-query-explain-result__inspector :not(.json-inspector__leaf_expanded).json-inspector__leaf_composite:before{content:"[+]"}.ydb-query-explain-result__inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite:before{content:"[-]"}.ydb-query-explain-result__inspector .json-inspector__key{color:var(--g-color-text-misc)}.ydb-query-explain-result__inspector .json-inspector__leaf{padding-left:20px;position:relative}.ydb-query-explain-result__inspector .json-inspector__leaf_root{padding-left:0}.ydb-query-explain-result__inspector .json-inspector__line{padding-left:20px}.ydb-query-explain-result__inspector .json-inspector__toolbar{border:1px solid var(--g-color-line-generic);border-radius:4px;margin-bottom:10px;width:300px}.ydb-query-explain-result__inspector .json-inspector__search{background:none;border:0 solid #0000;border-width:0 22px 0 8px;box-sizing:border-box;color:var(--g-color-text-primary);font-family:var(--g-text-body-font-family);font-size:13px;height:28px;margin:0;outline:0;padding:0;vertical-align:top;width:300px}.ydb-query-explain-result__inspector .json-inspector__value_helper{color:var(--g-color-text-secondary)}.ydb-query-explain-result__inspector .json-inspector__line:hover:after{background:var(--g-color-base-simple-hover)}.ydb-query-explain-result__inspector .json-inspector__show-original:before{color:var(--g-color-text-secondary)}.ydb-query-explain-result__inspector .json-inspector__show-original:hover:after,.ydb-query-explain-result__inspector .json-inspector__show-original:hover:before{color:var(--g-color-text-primary)}.ydb-query-explain-result__inspector .json-inspector__leaf.json-inspector__leaf_root.json-inspector__leaf_expanded.json-inspector__leaf_composite{max-width:calc(100% - 50px)}.ydb-query-explain-result__inspector_fullscreen{padding:10px}.ydb-query-explain-result__ast{height:100%;overflow:hidden;white-space:pre-wrap;width:100%}.ydb-query-explain-result__loader{align-items:center;display:flex;justify-content:center;margin-top:20px;width:100%}.kv-preview{display:flex;flex:1 1 auto;flex-direction:column;height:100%}.kv-preview .data-table__td,.kv-preview .data-table__th{vertical-align:middle}.kv-preview .data-table__box .data-table__table-wrapper{padding-bottom:20px}.kv-preview .data-table__th{box-shadow:inset 0 -1px 0 0 var(--g-tabs-color-divider)}.kv-preview__header{align-items:center;background-color:var(--g-color-base-background);border-bottom:1px solid var(--g-color-line-generic);display:flex;height:53px;justify-content:space-between;padding:0 20px;position:-webkit-sticky;position:sticky;top:0}.kv-preview__title{display:flex}.kv-preview__table-name{color:var(--g-color-text-complementary);margin-left:4px}.kv-preview__controls-left{display:flex;gap:5px}.kv-preview__message-container{padding:15px 20px}.kv-preview__loader-container{align-items:center;display:flex;height:100%;justify-content:center}.kv-preview__result{height:calc(100% - 40px);overflow:auto;padding-left:10px;width:100%}.kv-fullscreen .kv-preview__result{height:100%}.kv-save-query__dialog-row{align-items:flex-start;display:flex}.kv-save-query__dialog-row+.kv-save-query__dialog-row{margin-top:var(--g-text-body-1-line-height)}.kv-save-query__field-title{font-weight:500;line-height:28px;margin-right:12px;white-space:nowrap}.kv-save-query__field-title.required:after{color:var(--g-color-text-danger);content:"*"}.kv-save-query__control-wrapper{display:flex;flex-direction:column;flex-grow:1}.kv-save-query__error{color:var(--g-color-text-danger);display:inline-block;height:17px}.kv-save-query__embedded-tooltip{align-items:center;color:var(--g-color-text-secondary);display:flex;height:100%;margin-left:-10px}.kv-save-query__embedded-tooltip:hover{color:var(--g-color-text-complementary);cursor:pointer}.kv-save-query__embedded-popup{border-radius:5px;max-width:150px!important;padding:10px}.kv-save-query__embedded-popup:before{border-radius:5px}.ydb-query-editor-controls{align-items:flex-end;display:flex;flex:0 0 40px;gap:24px;justify-content:space-between;min-height:40px;padding:5px 0}.ydb-query-editor-controls__left{display:flex;gap:12px}.ydb-query-editor-controls__mode-selector__button{margin-left:2px;width:241px}.ydb-query-editor-controls__mode-selector__button-content{align-items:center;display:flex;justify-content:space-between;width:215px}.ydb-query-editor-controls__mode-selector__popup{width:241px}.ydb-query-editor-controls__item-with-popover{align-items:center;display:flex;height:24px;line-height:normal}.ydb-query-editor-controls__popover{max-width:420px;white-space:pre-wrap}.query-editor{display:flex;flex:1 1 auto;flex-direction:column;height:100%;position:relative}.query-editor .data-table__td,.query-editor .data-table__th{vertical-align:middle}.query-editor .data-table__box .data-table__table-wrapper{padding-bottom:20px}.query-editor .data-table__th{box-shadow:inset 0 -1px 0 0 var(--g-tabs-color-divider)}.query-editor__monaco{border:1px solid var(--g-color-line-generic);display:flex;height:100%;position:relative;width:100%}.query-editor__monaco-wrapper{height:calc(100% - 49px);min-height:0;width:100%}.query-editor__pane-wrapper{background-color:var(--g-color-base-background);display:flex;flex-direction:column;z-index:2}.query-editor__pane-wrapper_top{border-bottom:1px solid var(--g-color-line-generic);padding:0 16px}.ydb-saved-queries{display:flex;flex:1 1 auto;flex-direction:column;height:100%;overflow:auto;padding:0 16px}.ydb-saved-queries__row{cursor:pointer}.ydb-saved-queries__row :hover .ydb-saved-queries__controls{display:flex}.ydb-saved-queries__query-name{overflow:hidden;text-overflow:ellipsis;white-space:pre-wrap}.ydb-saved-queries__query{align-items:center;display:flex;flex-direction:row;justify-content:space-between}.ydb-saved-queries__query-body{flex-grow:1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:pre}.ydb-saved-queries__controls{display:none}.ydb-saved-queries__dialog-query-name{font-weight:500}.ydb-query{display:flex;flex:1 1 auto;flex-direction:column;max-height:100%}.ydb-query__tabs{padding:13px 20px 16px}.ydb-query__content{height:100%;overflow:hidden}.object-general{display:flex;flex-direction:column;flex-grow:1;height:100%;max-height:100%;width:100%}.object-general__loader{display:flex}.ydb-acl__result{align-self:flex-start}.ydb-acl__owner-container{background-color:var(--g-color-base-background);padding-bottom:16px;position:-webkit-sticky;position:sticky;top:0;z-index:2}.ydb-navigation-tree-view-loader{align-items:center;display:flex;height:24px;justify-content:center;width:20px}.g-spin{animation:g-spin 1s linear infinite;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:inline-block}.g-spin__inner{border:2px solid var(--g-color-line-brand);border-end-end-radius:25px;border-inline-start:none;border-start-end-radius:25px;box-sizing:border-box;height:100%;margin-inline-start:50%;width:50%}.g-spin_size_xs{height:16px;width:16px}.g-spin_size_s{height:24px;width:24px}.g-spin_size_m{height:28px;width:28px}.g-spin_size_l{height:32px;width:32px}.g-spin_size_xl{height:36px;width:36px}@keyframes g-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.ydb-navigation-tree-view-error{color:var(--g-color-text-danger)}.ydb-navigation-tree-view-empty{color:var(--g-color-text-secondary);font-style:italic}.object-summary{display:flex;flex-direction:column;flex-grow:1;height:100%;max-height:100%;overflow:hidden;position:relative;width:100%}.object-summary__overview-wrapper{display:flex;flex-grow:1;overflow:auto;padding:0 12px 16px}.object-summary_hidden{visibility:hidden}.object-summary__action-button{background-color:var(--g-color-base-background);position:absolute;right:5px;top:19px}.object-summary__action-button_hidden{visibility:hidden}.object-summary__tree-wrapper{display:flex;flex-direction:column}.object-summary__tree{flex:1 1 auto;height:100%;overflow-y:scroll;padding:0 12px 12px 16px}.object-summary__tree-header{padding:23px 12px 17px 20px}.object-summary__sticky-top{background-color:var(--g-color-base-background);left:0;position:-webkit-sticky;position:sticky;top:0;z-index:5}.object-summary__tabs{padding:8px 12px 16px}.object-summary__tab{margin-right:40px;text-decoration:none}.object-summary__tab:first-letter{text-transform:uppercase}.object-summary__info{display:flex;flex-direction:column;overflow:hidden}.object-summary__info-controls{display:flex;gap:4px}.object-summary__info-action-button{background-color:var(--g-color-base-background)}.object-summary__info-action-button_hidden{display:none}.object-summary__rotated90{transform:rotate(-90deg)}.object-summary__rotated180{transform:rotate(180deg)}.object-summary__rotated270{transform:rotate(90deg)}.object-summary__info-header{align-items:center;border-bottom:1px solid var(--g-color-line-generic);display:flex;justify-content:space-between;padding:12px 12px 10px}.object-summary__info-title{align-items:center;display:flex;font-weight:600;overflow:hidden}.object-summary__path-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-summary__entity-type{background-color:var(--g-color-base-generic);border-radius:3px;display:inline-block;font-weight:400;margin-right:5px;padding:3px 8px;text-transform:lowercase}.object-summary__entity-type_error{background-color:#0000;padding:3px 0}.tenant-page{flex:1 1 auto;font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);overflow:hidden}.tenant-page,.ydb-vdisk-page{display:flex;flex-direction:column}.ydb-vdisk-page{gap:20px;height:100%;overflow:auto;padding-left:20px;padding-top:20px;position:relative}.ydb-vdisk-page__group-title{font-size:var(--g-text-header-1-font-size);line-height:var(--g-text-header-1-line-height)}.ydb-vdisk-page__group-disks{display:flex;flex-flow:row wrap;flex-grow:1;gap:10px;margin-top:20px}.ydb-vdisk-page__group-disk{width:150px}.link{color:var(--g-color-text-link);text-decoration:none}.link_external{margin-right:10px}.link:hover{color:var(--g-color-text-link-hover)}*{font-feature-settings:"tnum";box-sizing:border-box;font-variant-numeric:tabular-nums}.g-select-popup__tick-icon{box-sizing:initial}#root,body,html{box-sizing:border-box;height:100%;margin:0;overflow:auto;padding:0}:root{--g-color-base-yellow-light:#ffc70026;--g-color-base-yellow-medium:#ffdb4d66;--data-table-row-height:40px}.g-root{--ydb-data-table-color-hover:var(--g-color-base-float-hover);--ydb-color-status-grey:var(--g-color-base-neutral-heavy);--ydb-color-status-green:var(--g-color-base-positive-heavy);--ydb-color-status-yellow:var(--g-color-base-warning-heavy);--ydb-color-status-orange:#ff922e;--ydb-color-status-red:var(--g-color-base-danger-heavy);--ydb-color-status-blue:var(--g-color-base-info-heavy);--ydb-color-status-black:var(--g-color-base-misc-heavy)}:is(#tab,.g-tabs-item_active .g-tabs-item__title){color:var(--g-color-text-primary)!important}:is(#tab,.g-tabs-item__title){color:var(--g-color-text-secondary)}.gn-aside-header__pane-container{height:100%}.gn-aside-header__content{display:flex;flex-direction:column;height:100%;overflow:auto;position:relative}.loader{align-items:center;display:flex;justify-content:center;left:50%;position:fixed;top:50%;z-index:99999999}.app{height:100%}.app,.app__main{display:flex;flex:1 1 auto;flex-direction:column}.app__main{overflow:auto}.app .data-table{font-size:var(--g-text-body-2-font-size);line-height:var(--g-text-body-2-line-height);width:100%}.app .data-table__table{border-collapse:initial;border-spacing:0;max-width:100%}.app .data-table__th{border-left:initial;border-right:initial;border-top:initial;font-weight:700}.app .data-table__sticky .data-table__th,.app .data-table__td{border-left:initial;border-right:initial;border-top:initial;height:40px;height:var(--data-table-row-height);vertical-align:middle}.error{color:var(--g-color-text-danger)}.data-table__row:hover .clipboard-button,.ydb-tree-view__item:hover .clipboard-button,.ydb-virtual-table__row:hover .clipboard-button{opacity:1}.g-root .data-table_highlight-rows .data-table__row:hover{background:var(--ydb-data-table-color-hover)}.g-table-column-setup__item{cursor:pointer!important;padding:0 8px 0 32px!important}.app_embedded{font-family:Rubik,sans-serif}.g-popup{max-width:500px}.kv-navigation__internal-user{align-items:center;display:flex;justify-content:space-between;line-height:var(--g-text-body-2-line-height);margin-left:16px}.kv-navigation__user-info-wrapper{display:flex;flex-direction:column}.kv-navigation__ydb-internal-user-title{font-weight:500}.kv-navigation__ydb-user-wrapper{padding:10px;width:300px}.kv-monitoring-button{display:none}.data-table__row:hover .kv-monitoring-button,.kv-monitoring-button_visible{display:inline-block}.extended-cluster{display:flex;height:100%}.extended-cluster__balancer{align-items:center;display:flex;flex-direction:row}.extended-cluster__clipboard-button{margin-left:5px}.g-root{--g-text-header-font-weight:500;--g-text-subheader-font-weight:500;--g-text-display-font-weight:500;--g-text-accent-font-weight:500}.g-root_theme_light{--g-color-base-background:#fff;--g-color-base-brand:var(--g-color-private-blue-550-solid);--g-color-base-brand-hover:var(--g-color-private-blue-600-solid);--g-color-base-selection:var(--g-color-private-blue-100);--g-color-base-selection-hover:var(--g-color-private-blue-200);--g-color-line-brand:var(--g-color-private-blue-550-solid);--g-color-text-brand:var(--g-color-private-blue-600-solid);--g-color-text-brand-heavy:var(--g-color-private-blue-700-solid);--g-color-text-brand-contrast:var(--g-color-text-light-primary);--g-color-text-link:var(--g-color-private-blue-600-solid);--g-color-text-link-hover:var(--g-color-private-blue-800-solid);--g-color-private-white-50:#ffffff0d;--g-color-private-white-70:#ffffff12;--g-color-private-white-100:#ffffff1a;--g-color-private-white-150:#ffffff26;--g-color-private-white-200:#fff3;--g-color-private-white-250:#ffffff40;--g-color-private-white-300:#ffffff4d;--g-color-private-white-350:#ffffff59;--g-color-private-white-400:#fff6;--g-color-private-white-450:#ffffff73;--g-color-private-white-500:#ffffff80;--g-color-private-white-550:#ffffff8c;--g-color-private-white-600:#fff9;--g-color-private-white-650:#ffffffa6;--g-color-private-white-700:#ffffffb3;--g-color-private-white-750:#ffffffbf;--g-color-private-white-800:#fffc;--g-color-private-white-850:#ffffffd9;--g-color-private-white-900:#ffffffe6;--g-color-private-white-950:#fffffff2;--g-color-private-white-1000-solid:#fff;--g-color-private-black-50:#0000000d;--g-color-private-black-70:#00000012;--g-color-private-black-100:#0000001a;--g-color-private-black-150:#00000026;--g-color-private-black-200:#0003;--g-color-private-black-250:#00000040;--g-color-private-black-300:#0000004d;--g-color-private-black-350:#00000059;--g-color-private-black-400:#0006;--g-color-private-black-450:#00000073;--g-color-private-black-500:#00000080;--g-color-private-black-550:#0000008c;--g-color-private-black-600:#0009;--g-color-private-black-650:#000000a6;--g-color-private-black-700:#000000b3;--g-color-private-black-750:#000000bf;--g-color-private-black-800:#000c;--g-color-private-black-850:#000000d9;--g-color-private-black-900:#000000e6;--g-color-private-black-950:#000000f2;--g-color-private-black-20-solid:#fafafa;--g-color-private-black-50-solid:#f2f2f2;--g-color-private-black-100-solid:#e5e5e5;--g-color-private-black-150-solid:#d9d9d9;--g-color-private-black-200-solid:#ccc;--g-color-private-black-250-solid:#bfbfbf;--g-color-private-black-300-solid:#b3b3b3;--g-color-private-black-350-solid:#a6a6a6;--g-color-private-black-400-solid:#999;--g-color-private-black-450-solid:#8c8c8c;--g-color-private-black-500-solid:grey;--g-color-private-black-550-solid:#737373;--g-color-private-black-600-solid:#666;--g-color-private-black-650-solid:#595959;--g-color-private-black-700-solid:#4c4c4c;--g-color-private-black-750-solid:#404040;--g-color-private-black-800-solid:#333;--g-color-private-black-850-solid:#262626;--g-color-private-black-900-solid:#1a1a1a;--g-color-private-black-950-solid:#0d0d0d;--g-color-private-black-1000-solid:#000;--g-color-private-blue-50:#5282ff1a;--g-color-private-blue-100:#5282ff26;--g-color-private-blue-150:#5282ff33;--g-color-private-blue-200:#5282ff4d;--g-color-private-blue-250:#5282ff66;--g-color-private-blue-300:#5282ff80;--g-color-private-blue-350:#5282ff99;--g-color-private-blue-400:#5282ffb3;--g-color-private-blue-450:#5282ffcc;--g-color-private-blue-500:#5282ffe6;--g-color-private-blue-50-solid:#eef3ff;--g-color-private-blue-100-solid:#e5ecff;--g-color-private-blue-150-solid:#dce6ff;--g-color-private-blue-200-solid:#cbdaff;--g-color-private-blue-250-solid:#bacdff;--g-color-private-blue-300-solid:#a8c1ff;--g-color-private-blue-350-solid:#97b4ff;--g-color-private-blue-400-solid:#86a8ff;--g-color-private-blue-450-solid:#749bff;--g-color-private-blue-500-solid:#638fff;--g-color-private-blue-550-solid:#5282ff;--g-color-private-blue-600-solid:#4e79eb;--g-color-private-blue-650-solid:#4a71d6;--g-color-private-blue-700-solid:#4768c2;--g-color-private-blue-750-solid:#4360ad;--g-color-private-blue-800-solid:#3f5799;--g-color-private-blue-850-solid:#3c4f85;--g-color-private-blue-900-solid:#384670;--g-color-private-blue-950-solid:#343d5c;--g-color-private-blue-1000-solid:#333952;--g-color-private-green-50:#3bc9351a;--g-color-private-green-100:#3bc93526;--g-color-private-green-150:#3bc93533;--g-color-private-green-200:#3bc9354d;--g-color-private-green-250:#3bc93566;--g-color-private-green-300:#3bc93580;--g-color-private-green-350:#3bc93599;--g-color-private-green-400:#3bc935b3;--g-color-private-green-450:#3bc935cc;--g-color-private-green-500:#3bc935e6;--g-color-private-green-50-solid:#ebfaeb;--g-color-private-green-100-solid:#e2f7e1;--g-color-private-green-150-solid:#d8f4d7;--g-color-private-green-200-solid:#c4efc2;--g-color-private-green-250-solid:#b1e9ae;--g-color-private-green-300-solid:#9de49a;--g-color-private-green-350-solid:#89df86;--g-color-private-green-400-solid:#76d972;--g-color-private-green-450-solid:#62d45d;--g-color-private-green-500-solid:#4fce49;--g-color-private-green-550-solid:#3bc935;--g-color-private-green-600-solid:#3ab935;--g-color-private-green-650-solid:#38aa35;--g-color-private-green-700-solid:#379a34;--g-color-private-green-750-solid:#358a34;--g-color-private-green-800-solid:#347b34;--g-color-private-green-850-solid:#336b34;--g-color-private-green-900-solid:#315b34;--g-color-private-green-950-solid:#304b33;--g-color-private-green-1000-solid:#2f4433;--g-color-private-yellow-50:#ffdb4d1a;--g-color-private-yellow-100:#ffdb4d26;--g-color-private-yellow-150:#ffdb4d33;--g-color-private-yellow-200:#ffdb4d4d;--g-color-private-yellow-250:#ffdb4d66;--g-color-private-yellow-300:#ffdb4d80;--g-color-private-yellow-350:#ffdb4d99;--g-color-private-yellow-400:#ffdb4db3;--g-color-private-yellow-450:#ffdb4dcc;--g-color-private-yellow-500:#ffdb4de6;--g-color-private-yellow-50-solid:#fffbed;--g-color-private-yellow-100-solid:#fffae4;--g-color-private-yellow-150-solid:#fff8db;--g-color-private-yellow-200-solid:#fff4ca;--g-color-private-yellow-250-solid:#fff1b8;--g-color-private-yellow-300-solid:#ffeda6;--g-color-private-yellow-350-solid:#ffe994;--g-color-private-yellow-400-solid:#ffe682;--g-color-private-yellow-450-solid:#ffe271;--g-color-private-yellow-500-solid:#ffdf5f;--g-color-private-yellow-550-solid:#ffdb4d;--g-color-private-yellow-600-solid:#eac94a;--g-color-private-yellow-650-solid:#d5b848;--g-color-private-yellow-700-solid:#c0a645;--g-color-private-yellow-750-solid:#ab9543;--g-color-private-yellow-800-solid:#968340;--g-color-private-yellow-850-solid:#81723d;--g-color-private-yellow-900-solid:#6c603b;--g-color-private-yellow-950-solid:#574f38;--g-color-private-yellow-1000-solid:#4d4637;--g-color-private-orange-50:#ff77001a;--g-color-private-orange-100:#ff770026;--g-color-private-orange-150:#f703;--g-color-private-orange-200:#ff77004d;--g-color-private-orange-250:#f706;--g-color-private-orange-300:#ff770080;--g-color-private-orange-350:#f709;--g-color-private-orange-400:#ff7700b3;--g-color-private-orange-450:#f70c;--g-color-private-orange-500:#ff7700e6;--g-color-private-orange-50-solid:#fff1e6;--g-color-private-orange-100-solid:#ffebd9;--g-color-private-orange-150-solid:#ffe4cc;--g-color-private-orange-200-solid:#ffd6b3;--g-color-private-orange-250-solid:#ffc999;--g-color-private-orange-300-solid:#ffbb80;--g-color-private-orange-350-solid:#ffad66;--g-color-private-orange-400-solid:#ffa04c;--g-color-private-orange-450-solid:#ff9233;--g-color-private-orange-500-solid:#ff851a;--g-color-private-orange-550-solid:#f70;--g-color-private-orange-600-solid:#ea7005;--g-color-private-orange-650-solid:#d5680a;--g-color-private-orange-700-solid:#c0600f;--g-color-private-orange-750-solid:#ab5914;--g-color-private-orange-800-solid:#965119;--g-color-private-orange-850-solid:#814a1f;--g-color-private-orange-900-solid:#6c4324;--g-color-private-orange-950-solid:#573b29;--g-color-private-orange-1000-solid:#4d372b;--g-color-private-red-50:#ff04001a;--g-color-private-red-100:#ff040026;--g-color-private-red-150:#ff040033;--g-color-private-red-200:#ff04004d;--g-color-private-red-250:#ff040066;--g-color-private-red-300:#ff040080;--g-color-private-red-350:#ff040099;--g-color-private-red-400:#ff0400b3;--g-color-private-red-450:#ff0400cc;--g-color-private-red-500:#ff0400e6;--g-color-private-red-50-solid:#ffe6e6;--g-color-private-red-100-solid:#ffd9d9;--g-color-private-red-150-solid:#ffcdcc;--g-color-private-red-200-solid:#ffb4b3;--g-color-private-red-250-solid:#ff9b99;--g-color-private-red-300-solid:#ff8280;--g-color-private-red-350-solid:#ff6966;--g-color-private-red-400-solid:#ff504c;--g-color-private-red-450-solid:#ff3733;--g-color-private-red-500-solid:#ff1e1a;--g-color-private-red-550-solid:#ff0400;--g-color-private-red-600-solid:#ea0805;--g-color-private-red-650-solid:#d50c0a;--g-color-private-red-700-solid:#c0100f;--g-color-private-red-750-solid:#ab1414;--g-color-private-red-800-solid:#961819;--g-color-private-red-850-solid:#811c1f;--g-color-private-red-900-solid:#6c2024;--g-color-private-red-950-solid:#572429;--g-color-private-red-1000-solid:#4d262b;--g-color-private-purple-50:#8f52cc1a;--g-color-private-purple-100:#8f52cc26;--g-color-private-purple-150:#8f52cc33;--g-color-private-purple-200:#8f52cc4d;--g-color-private-purple-250:#8f52cc66;--g-color-private-purple-300:#8f52cc80;--g-color-private-purple-350:#8f52cc99;--g-color-private-purple-400:#8f52ccb3;--g-color-private-purple-450:#8f52cccc;--g-color-private-purple-500:#8f52cce6;--g-color-private-purple-50-solid:#f4eefa;--g-color-private-purple-100-solid:#eee5f7;--g-color-private-purple-150-solid:#e9dcf5;--g-color-private-purple-200-solid:#ddcbf0;--g-color-private-purple-250-solid:#d2baeb;--g-color-private-purple-300-solid:#c7a9e6;--g-color-private-purple-350-solid:#bc97e0;--g-color-private-purple-400-solid:#b186db;--g-color-private-purple-450-solid:#a575d6;--g-color-private-purple-500-solid:#9a63d1;--g-color-private-purple-550-solid:#8f52cc;--g-color-private-purple-600-solid:#854ebd;--g-color-private-purple-650-solid:#7b4aad;--g-color-private-purple-700-solid:#72479e;--g-color-private-purple-750-solid:#68438f;--g-color-private-purple-800-solid:#5e3f80;--g-color-private-purple-850-solid:#543b70;--g-color-private-purple-900-solid:#4a3761;--g-color-private-purple-950-solid:#413452;--g-color-private-purple-1000-solid:#3c324a;--g-color-private-cool-grey-50:#6b84991a;--g-color-private-cool-grey-100:#6b849926;--g-color-private-cool-grey-150:#6b849933;--g-color-private-cool-grey-200:#6b84994d;--g-color-private-cool-grey-250:#6b849966;--g-color-private-cool-grey-300:#6b849980;--g-color-private-cool-grey-350:#6b849999;--g-color-private-cool-grey-400:#6b8499b3;--g-color-private-cool-grey-450:#6b8499cc;--g-color-private-cool-grey-500:#6b8499e6;--g-color-private-cool-grey-50-solid:#f0f3f5;--g-color-private-cool-grey-100-solid:#e9edf0;--g-color-private-cool-grey-150-solid:#e1e6eb;--g-color-private-cool-grey-200-solid:#d3dae0;--g-color-private-cool-grey-250-solid:#c4ced6;--g-color-private-cool-grey-300-solid:#b5c1cc;--g-color-private-cool-grey-350-solid:#a6b5c2;--g-color-private-cool-grey-400-solid:#97a9b8;--g-color-private-cool-grey-450-solid:#899dad;--g-color-private-cool-grey-500-solid:#7a90a3;--g-color-private-cool-grey-550-solid:#6b8499;--g-color-private-cool-grey-600-solid:#657b8f;--g-color-private-cool-grey-650-solid:#5f7285;--g-color-private-cool-grey-700-solid:#586a7a;--g-color-private-cool-grey-750-solid:#526170;--g-color-private-cool-grey-800-solid:#4c5866;--g-color-private-cool-grey-850-solid:#464f5c;--g-color-private-cool-grey-900-solid:#404652;--g-color-private-cool-grey-950-solid:#393e47;--g-color-private-cool-grey-1000-solid:#363942}.g-root_theme_light-hc{--g-color-base-background:#fff;--g-color-base-brand:var(--g-color-private-blue-600-solid);--g-color-base-brand-hover:var(--g-color-private-blue-800-solid);--g-color-base-selection:var(--g-color-private-blue-250);--g-color-base-selection-hover:var(--g-color-private-blue-350);--g-color-line-brand:var(--g-color-private-blue-600-solid);--g-color-text-brand:var(--g-color-private-blue-650-solid);--g-color-text-brand-heavy:var(--g-color-private-blue-900-solid);--g-color-text-brand-contrast:var(--g-color-text-light-primary);--g-color-text-link:var(--g-color-private-blue-650-solid);--g-color-text-link-hover:var(--g-color-private-blue-850-solid);--g-color-private-white-50:#ffffff0d;--g-color-private-white-70:#ffffff12;--g-color-private-white-100:#ffffff1a;--g-color-private-white-150:#ffffff26;--g-color-private-white-200:#fff3;--g-color-private-white-250:#ffffff40;--g-color-private-white-300:#ffffff4d;--g-color-private-white-350:#ffffff59;--g-color-private-white-400:#fff6;--g-color-private-white-450:#ffffff73;--g-color-private-white-500:#ffffff80;--g-color-private-white-550:#ffffff8c;--g-color-private-white-600:#fff9;--g-color-private-white-650:#ffffffa6;--g-color-private-white-700:#ffffffb3;--g-color-private-white-750:#ffffffbf;--g-color-private-white-800:#fffc;--g-color-private-white-850:#ffffffd9;--g-color-private-white-900:#ffffffe6;--g-color-private-white-950:#fffffff2;--g-color-private-white-1000-solid:#fff;--g-color-private-black-50:#0000000d;--g-color-private-black-100:#0000001a;--g-color-private-black-150:#00000026;--g-color-private-black-200:#0003;--g-color-private-black-250:#00000040;--g-color-private-black-300:#0000004d;--g-color-private-black-350:#00000059;--g-color-private-black-400:#0006;--g-color-private-black-450:#00000073;--g-color-private-black-500:#00000080;--g-color-private-black-550:#0000008c;--g-color-private-black-600:#0009;--g-color-private-black-650:#000000a6;--g-color-private-black-700:#000000b3;--g-color-private-black-750:#000000bf;--g-color-private-black-800:#000c;--g-color-private-black-850:#000000d9;--g-color-private-black-900:#000000e6;--g-color-private-black-950:#000000f2;--g-color-private-black-50-solid:#f2f2f2;--g-color-private-black-100-solid:#e5e5e5;--g-color-private-black-150-solid:#d9d9d9;--g-color-private-black-200-solid:#ccc;--g-color-private-black-250-solid:#bfbfbf;--g-color-private-black-300-solid:#b3b3b3;--g-color-private-black-350-solid:#a6a6a6;--g-color-private-black-400-solid:#999;--g-color-private-black-450-solid:#8c8c8c;--g-color-private-black-500-solid:grey;--g-color-private-black-550-solid:#737373;--g-color-private-black-600-solid:#666;--g-color-private-black-650-solid:#595959;--g-color-private-black-700-solid:#4c4c4c;--g-color-private-black-750-solid:#404040;--g-color-private-black-800-solid:#333;--g-color-private-black-850-solid:#262626;--g-color-private-black-900-solid:#1a1a1a;--g-color-private-black-950-solid:#0d0d0d;--g-color-private-black-1000-solid:#000;--g-color-private-blue-50:#5282ff1a;--g-color-private-blue-100:#5282ff26;--g-color-private-blue-150:#5282ff33;--g-color-private-blue-200:#5282ff4d;--g-color-private-blue-250:#5282ff66;--g-color-private-blue-300:#5282ff80;--g-color-private-blue-350:#5282ff99;--g-color-private-blue-400:#5282ffb3;--g-color-private-blue-450:#5282ffcc;--g-color-private-blue-500:#5282ffe6;--g-color-private-blue-50-solid:#eef3ff;--g-color-private-blue-100-solid:#e5ecff;--g-color-private-blue-150-solid:#dce6ff;--g-color-private-blue-200-solid:#cbdaff;--g-color-private-blue-250-solid:#bacdff;--g-color-private-blue-300-solid:#a8c1ff;--g-color-private-blue-350-solid:#97b4ff;--g-color-private-blue-400-solid:#86a8ff;--g-color-private-blue-450-solid:#749bff;--g-color-private-blue-500-solid:#638fff;--g-color-private-blue-550-solid:#5282ff;--g-color-private-blue-600-solid:#4d79e9;--g-color-private-blue-650-solid:#486fd4;--g-color-private-blue-700-solid:#4366be;--g-color-private-blue-750-solid:#3f5ca8;--g-color-private-blue-800-solid:#3a5393;--g-color-private-blue-850-solid:#35497d;--g-color-private-blue-900-solid:#304067;--g-color-private-blue-950-solid:#2c3651;--g-color-private-blue-1000-solid:#293147;--g-color-private-green-50:#3bc9351a;--g-color-private-green-100:#3bc93526;--g-color-private-green-150:#3bc93533;--g-color-private-green-200:#3bc9354d;--g-color-private-green-250:#3bc93566;--g-color-private-green-300:#3bc93580;--g-color-private-green-350:#3bc93599;--g-color-private-green-400:#3bc935b3;--g-color-private-green-450:#3bc935cc;--g-color-private-green-500:#3bc935e6;--g-color-private-green-50-solid:#ebfaeb;--g-color-private-green-100-solid:#e2f7e1;--g-color-private-green-150-solid:#d8f4d7;--g-color-private-green-200-solid:#c4efc2;--g-color-private-green-250-solid:#b1e9ae;--g-color-private-green-300-solid:#9de49a;--g-color-private-green-350-solid:#89df86;--g-color-private-green-400-solid:#76d972;--g-color-private-green-450-solid:#62d45d;--g-color-private-green-500-solid:#4fce49;--g-color-private-green-550-solid:#3bc935;--g-color-private-green-600-solid:#38b833;--g-color-private-green-650-solid:#36a832;--g-color-private-green-700-solid:#339730;--g-color-private-green-750-solid:#31872f;--g-color-private-green-800-solid:#2f762e;--g-color-private-green-850-solid:#2c652c;--g-color-private-green-900-solid:#29552b;--g-color-private-green-950-solid:#274429;--g-color-private-green-1000-solid:#263c28;--g-color-private-yellow-50:#ffdb4d1a;--g-color-private-yellow-100:#ffdb4d26;--g-color-private-yellow-150:#ffdb4d33;--g-color-private-yellow-200:#ffdb4d4d;--g-color-private-yellow-250:#ffdb4d66;--g-color-private-yellow-300:#ffdb4d80;--g-color-private-yellow-350:#ffdb4d99;--g-color-private-yellow-400:#ffdb4db3;--g-color-private-yellow-450:#ffdb4dcc;--g-color-private-yellow-500:#ffdb4de6;--g-color-private-yellow-50-solid:#fffbed;--g-color-private-yellow-100-solid:#fffae4;--g-color-private-yellow-150-solid:#fff8db;--g-color-private-yellow-200-solid:#fff4ca;--g-color-private-yellow-250-solid:#fff1b8;--g-color-private-yellow-300-solid:#ffeda6;--g-color-private-yellow-350-solid:#ffe994;--g-color-private-yellow-400-solid:#ffe682;--g-color-private-yellow-450-solid:#ffe271;--g-color-private-yellow-500-solid:#ffdf5f;--g-color-private-yellow-550-solid:#ffdb4d;--g-color-private-yellow-600-solid:#e9c949;--g-color-private-yellow-650-solid:#d3b645;--g-color-private-yellow-700-solid:#bda441;--g-color-private-yellow-750-solid:#a7913d;--g-color-private-yellow-800-solid:#907f3a;--g-color-private-yellow-850-solid:#7a6d36;--g-color-private-yellow-900-solid:#645a32;--g-color-private-yellow-950-solid:#4e482e;--g-color-private-yellow-1000-solid:#433f2c;--g-color-private-orange-50:#ff77001a;--g-color-private-orange-100:#ff770026;--g-color-private-orange-150:#f703;--g-color-private-orange-200:#ff77004d;--g-color-private-orange-250:#f706;--g-color-private-orange-300:#ff770080;--g-color-private-orange-350:#f709;--g-color-private-orange-400:#ff7700b3;--g-color-private-orange-450:#f70c;--g-color-private-orange-500:#ff7700e6;--g-color-private-orange-50-solid:#fff1e6;--g-color-private-orange-100-solid:#ffebd9;--g-color-private-orange-150-solid:#ffe4cc;--g-color-private-orange-200-solid:#ffd6b3;--g-color-private-orange-250-solid:#ffc999;--g-color-private-orange-300-solid:#ffbb80;--g-color-private-orange-350-solid:#ffad66;--g-color-private-orange-400-solid:#ffa04c;--g-color-private-orange-450-solid:#ff9233;--g-color-private-orange-500-solid:#ff851a;--g-color-private-orange-550-solid:#f70;--g-color-private-orange-600-solid:#e96f04;--g-color-private-orange-650-solid:#d36608;--g-color-private-orange-700-solid:#bd5e0b;--g-color-private-orange-750-solid:#a7550f;--g-color-private-orange-800-solid:#904d13;--g-color-private-orange-850-solid:#7a4517;--g-color-private-orange-900-solid:#643c1b;--g-color-private-orange-950-solid:#4e341e;--g-color-private-orange-1000-solid:#433020;--g-color-private-red-50:#ff04001a;--g-color-private-red-100:#ff040026;--g-color-private-red-150:#ff040033;--g-color-private-red-200:#ff04004d;--g-color-private-red-250:#ff040066;--g-color-private-red-300:#ff040080;--g-color-private-red-350:#ff040099;--g-color-private-red-400:#ff0400b3;--g-color-private-red-450:#ff0400cc;--g-color-private-red-500:#ff0400e6;--g-color-private-red-50-solid:#ffe6e6;--g-color-private-red-100-solid:#ffd9d9;--g-color-private-red-150-solid:#ffcdcc;--g-color-private-red-200-solid:#ffb4b3;--g-color-private-red-250-solid:#ff9b99;--g-color-private-red-300-solid:#ff8280;--g-color-private-red-350-solid:#ff6966;--g-color-private-red-400-solid:#ff504c;--g-color-private-red-450-solid:#ff3733;--g-color-private-red-500-solid:#ff1e1a;--g-color-private-red-550-solid:#ff0400;--g-color-private-red-600-solid:#e90804;--g-color-private-red-650-solid:#d30b08;--g-color-private-red-700-solid:#bd0e0b;--g-color-private-red-750-solid:#a6110f;--g-color-private-red-800-solid:#901413;--g-color-private-red-850-solid:#7a1717;--g-color-private-red-900-solid:#641a1b;--g-color-private-red-950-solid:#4e1d1e;--g-color-private-red-1000-solid:#431e20;--g-color-private-purple-50:#8f52cc1a;--g-color-private-purple-100:#8f52cc26;--g-color-private-purple-150:#8f52cc33;--g-color-private-purple-200:#8f52cc4d;--g-color-private-purple-250:#8f52cc66;--g-color-private-purple-300:#8f52cc80;--g-color-private-purple-350:#8f52cc99;--g-color-private-purple-400:#8f52ccb3;--g-color-private-purple-450:#8f52cccc;--g-color-private-purple-500:#8f52cce6;--g-color-private-purple-50-solid:#f4eefa;--g-color-private-purple-100-solid:#eee5f7;--g-color-private-purple-150-solid:#e9dcf5;--g-color-private-purple-200-solid:#ddcbf0;--g-color-private-purple-250-solid:#d2baeb;--g-color-private-purple-300-solid:#c7a9e6;--g-color-private-purple-350-solid:#bc97e0;--g-color-private-purple-400-solid:#b186db;--g-color-private-purple-450-solid:#a575d6;--g-color-private-purple-500-solid:#9a63d1;--g-color-private-purple-550-solid:#8f52cc;--g-color-private-purple-600-solid:#844dbb;--g-color-private-purple-650-solid:#7949ab;--g-color-private-purple-700-solid:#6e449a;--g-color-private-purple-750-solid:#633f8a;--g-color-private-purple-800-solid:#593b79;--g-color-private-purple-850-solid:#4e3668;--g-color-private-purple-900-solid:#433158;--g-color-private-purple-950-solid:#382c47;--g-color-private-purple-1000-solid:#322a3f;--g-color-private-cool-grey-50:#6b84991a;--g-color-private-cool-grey-100:#6b849926;--g-color-private-cool-grey-150:#6b849933;--g-color-private-cool-grey-200:#6b84994d;--g-color-private-cool-grey-250:#6b849966;--g-color-private-cool-grey-300:#6b849980;--g-color-private-cool-grey-350:#6b849999;--g-color-private-cool-grey-400:#6b8499b3;--g-color-private-cool-grey-450:#6b8499cc;--g-color-private-cool-grey-500:#6b8499e6;--g-color-private-cool-grey-50-solid:#f0f3f5;--g-color-private-cool-grey-100-solid:#e9edf0;--g-color-private-cool-grey-150-solid:#e1e6eb;--g-color-private-cool-grey-200-solid:#d3dae0;--g-color-private-cool-grey-250-solid:#c4ced6;--g-color-private-cool-grey-300-solid:#b5c1cc;--g-color-private-cool-grey-350-solid:#a6b5c2;--g-color-private-cool-grey-400-solid:#97a9b8;--g-color-private-cool-grey-450-solid:#899dad;--g-color-private-cool-grey-500-solid:#7a90a3;--g-color-private-cool-grey-550-solid:#6b8499;--g-color-private-cool-grey-600-solid:#647a8e;--g-color-private-cool-grey-650-solid:#5c7182;--g-color-private-cool-grey-700-solid:#556776;--g-color-private-cool-grey-750-solid:#4e5d6b;--g-color-private-cool-grey-800-solid:#465360;--g-color-private-cool-grey-850-solid:#3f4a54;--g-color-private-cool-grey-900-solid:#384049;--g-color-private-cool-grey-950-solid:#31363d;--g-color-private-cool-grey-1000-solid:#2d3237}.g-root_theme_dark{--g-color-base-background:#2d2c33;--g-color-base-brand:var(--g-color-private-blue-450-solid);--g-color-base-brand-hover:var(--g-color-private-blue-600-solid);--g-color-base-selection:var(--g-color-private-blue-150);--g-color-base-selection-hover:var(--g-color-private-blue-200);--g-color-line-brand:var(--g-color-private-blue-550-solid);--g-color-text-brand:var(--g-color-private-blue-550-solid);--g-color-text-brand-heavy:var(--g-color-private-blue-600-solid);--g-color-text-brand-contrast:var(--g-color-text-light-primary);--g-color-text-link:var(--g-color-private-blue-550-solid);--g-color-text-link-hover:var(--g-color-private-blue-700-solid);--g-color-private-white-20:#ffffff05;--g-color-private-white-50:#ffffff0d;--g-color-private-white-70:#ffffff12;--g-color-private-white-100:#ffffff1a;--g-color-private-white-150:#ffffff26;--g-color-private-white-200:#fff3;--g-color-private-white-250:#ffffff40;--g-color-private-white-300:#ffffff4d;--g-color-private-white-350:#ffffff59;--g-color-private-white-400:#fff6;--g-color-private-white-450:#ffffff73;--g-color-private-white-500:#ffffff80;--g-color-private-white-550:#ffffff8c;--g-color-private-white-600:#fff9;--g-color-private-white-650:#ffffffa6;--g-color-private-white-700:#ffffffb3;--g-color-private-white-750:#ffffffbf;--g-color-private-white-800:#fffc;--g-color-private-white-850:#ffffffd9;--g-color-private-white-900:#ffffffe6;--g-color-private-white-950:#fffffff2;--g-color-private-white-20-solid:#313037;--g-color-private-white-50-solid:#38373d;--g-color-private-white-70-solid:#3c3b41;--g-color-private-white-100-solid:#424147;--g-color-private-white-150-solid:#4d4c52;--g-color-private-white-200-solid:#57565c;--g-color-private-white-250-solid:#616166;--g-color-private-white-300-solid:#6c6b70;--g-color-private-white-350-solid:#77767a;--g-color-private-white-400-solid:#818085;--g-color-private-white-450-solid:#8b8b8f;--g-color-private-white-500-solid:#969699;--g-color-private-white-550-solid:#a0a0a3;--g-color-private-white-600-solid:#ababad;--g-color-private-white-650-solid:#b6b5b8;--g-color-private-white-700-solid:#c0c0c2;--g-color-private-white-750-solid:#cacacc;--g-color-private-white-800-solid:#d5d5d6;--g-color-private-white-850-solid:#dfdfe0;--g-color-private-white-900-solid:#eaeaeb;--g-color-private-white-950-solid:#f5f5f5;--g-color-private-white-1000-solid:#fff;--g-color-private-white-opaque-150:#4c4b51f2;--g-color-private-black-20:#00000005;--g-color-private-black-50:#0000000d;--g-color-private-black-100:#0000001a;--g-color-private-black-150:#00000026;--g-color-private-black-200:#0003;--g-color-private-black-250:#00000040;--g-color-private-black-300:#0000004d;--g-color-private-black-350:#00000059;--g-color-private-black-400:#0006;--g-color-private-black-450:#00000073;--g-color-private-black-500:#00000080;--g-color-private-black-550:#0000008c;--g-color-private-black-600:#0009;--g-color-private-black-650:#000000a6;--g-color-private-black-700:#000000b3;--g-color-private-black-750:#000000bf;--g-color-private-black-800:#000c;--g-color-private-black-850:#000000d9;--g-color-private-black-900:#000000e6;--g-color-private-black-950:#000000f2;--g-color-private-black-1000-solid:#000;--g-color-private-black-rock-850:#2d2c33;--g-color-private-blue-50:#5282ff1a;--g-color-private-blue-100:#5282ff26;--g-color-private-blue-150:#5282ff33;--g-color-private-blue-200:#5282ff4d;--g-color-private-blue-250:#5282ff66;--g-color-private-blue-300:#5282ff80;--g-color-private-blue-350:#5282ff99;--g-color-private-blue-400:#5282ffb3;--g-color-private-blue-450:#5282ffcc;--g-color-private-blue-500:#5282ffe6;--g-color-private-blue-50-solid:#313547;--g-color-private-blue-100-solid:#333952;--g-color-private-blue-150-solid:#343d5c;--g-color-private-blue-200-solid:#384670;--g-color-private-blue-250-solid:#3c4e85;--g-color-private-blue-300-solid:#405799;--g-color-private-blue-350-solid:#4360ad;--g-color-private-blue-400-solid:#4768c2;--g-color-private-blue-450-solid:#4b71d6;--g-color-private-blue-500-solid:#4e79eb;--g-color-private-blue-550-solid:#5282ff;--g-color-private-blue-600-solid:#638fff;--g-color-private-blue-650-solid:#759bff;--g-color-private-blue-700-solid:#86a8ff;--g-color-private-blue-750-solid:#97b4ff;--g-color-private-blue-800-solid:#a9c1ff;--g-color-private-blue-850-solid:#bacdff;--g-color-private-blue-900-solid:#cbdaff;--g-color-private-blue-950-solid:#dce6ff;--g-color-private-blue-1000-solid:#e5ecff;--g-color-private-green-50:#5bb5571a;--g-color-private-green-100:#5bb55726;--g-color-private-green-150:#5bb55733;--g-color-private-green-200:#5bb5574d;--g-color-private-green-250:#5bb55766;--g-color-private-green-300:#5bb55780;--g-color-private-green-350:#5bb55799;--g-color-private-green-400:#5bb557b3;--g-color-private-green-450:#5bb557cc;--g-color-private-green-500:#5bb557e6;--g-color-private-green-50-solid:#323a37;--g-color-private-green-100-solid:#344138;--g-color-private-green-150-solid:#36473a;--g-color-private-green-200-solid:#3b553e;--g-color-private-green-250-solid:#3f6341;--g-color-private-green-300-solid:#447145;--g-color-private-green-350-solid:#497e49;--g-color-private-green-400-solid:#4d8c4c;--g-color-private-green-450-solid:#529a50;--g-color-private-green-500-solid:#56a753;--g-color-private-green-550-solid:#5bb557;--g-color-private-green-600-solid:#6bbc68;--g-color-private-green-650-solid:#7cc479;--g-color-private-green-700-solid:#8ccb89;--g-color-private-green-750-solid:#9dd39a;--g-color-private-green-800-solid:#addaab;--g-color-private-green-850-solid:#bde1bc;--g-color-private-green-900-solid:#cee9cd;--g-color-private-green-950-solid:#def0dd;--g-color-private-green-1000-solid:#e6f4e6;--g-color-private-yellow-50:#ffcb001a;--g-color-private-yellow-100:#ffcb0026;--g-color-private-yellow-150:#ffcb0033;--g-color-private-yellow-200:#ffcb004d;--g-color-private-yellow-250:#ffcb0066;--g-color-private-yellow-300:#ffcb0080;--g-color-private-yellow-350:#ffcb0099;--g-color-private-yellow-400:#ffcb00b3;--g-color-private-yellow-450:#ffcb00cc;--g-color-private-yellow-500:#ffcb00e6;--g-color-private-yellow-50-solid:#423c2e;--g-color-private-yellow-100-solid:#4d442b;--g-color-private-yellow-150-solid:#574c29;--g-color-private-yellow-200-solid:#6c5c24;--g-color-private-yellow-250-solid:#816c1f;--g-color-private-yellow-300-solid:#967c19;--g-color-private-yellow-350-solid:#ab8c14;--g-color-private-yellow-400-solid:#c09b0f;--g-color-private-yellow-450-solid:#d5ab0a;--g-color-private-yellow-500-solid:#e9ba04;--g-color-private-yellow-550-solid:#ffcb00;--g-color-private-yellow-600-solid:#ffd01a;--g-color-private-yellow-650-solid:#ffd533;--g-color-private-yellow-700-solid:#ffdb4c;--g-color-private-yellow-750-solid:#ffe066;--g-color-private-yellow-800-solid:#ffe580;--g-color-private-yellow-850-solid:#ffea99;--g-color-private-yellow-900-solid:#ffefb3;--g-color-private-yellow-950-solid:#fff5cc;--g-color-private-yellow-1000-solid:#fff7d9;--g-color-private-orange-50:#c8630c1a;--g-color-private-orange-100:#c8630c26;--g-color-private-orange-150:#c8630c33;--g-color-private-orange-200:#c8630c4d;--g-color-private-orange-250:#c8630c66;--g-color-private-orange-300:#c8630c80;--g-color-private-orange-350:#c8630c99;--g-color-private-orange-400:#c8630cb3;--g-color-private-orange-450:#c8630ccc;--g-color-private-orange-500:#c8630ce6;--g-color-private-orange-50-solid:#3d322f;--g-color-private-orange-100-solid:#44342d;--g-color-private-orange-150-solid:#4c372b;--g-color-private-orange-200-solid:#5c3d27;--g-color-private-orange-250-solid:#6b4223;--g-color-private-orange-300-solid:#7b4720;--g-color-private-orange-350-solid:#8a4d1c;--g-color-private-orange-400-solid:#995218;--g-color-private-orange-450-solid:#a95814;--g-color-private-orange-500-solid:#b95e10;--g-color-private-orange-550-solid:#c8630c;--g-color-private-orange-600-solid:#ce7324;--g-color-private-orange-650-solid:#d3823d;--g-color-private-orange-700-solid:#d89255;--g-color-private-orange-750-solid:#dea16d;--g-color-private-orange-800-solid:#e3b185;--g-color-private-orange-850-solid:#e9c19e;--g-color-private-orange-900-solid:#efd0b6;--g-color-private-orange-950-solid:#f4e0ce;--g-color-private-orange-1000-solid:#f7e8db;--g-color-private-red-50:#e849451a;--g-color-private-red-100:#e8494526;--g-color-private-red-150:#e8494533;--g-color-private-red-200:#e849454d;--g-color-private-red-250:#e8494566;--g-color-private-red-300:#e8494580;--g-color-private-red-350:#e8494599;--g-color-private-red-400:#e84945b3;--g-color-private-red-450:#e84945cc;--g-color-private-red-500:#e84945e6;--g-color-private-red-50-solid:#402f35;--g-color-private-red-100-solid:#493036;--g-color-private-red-150-solid:#523237;--g-color-private-red-200-solid:#653539;--g-color-private-red-250-solid:#78383a;--g-color-private-red-300-solid:#8a3a3c;--g-color-private-red-350-solid:#9d3d3e;--g-color-private-red-400-solid:#b04040;--g-color-private-red-450-solid:#c34341;--g-color-private-red-500-solid:#d54644;--g-color-private-red-550-solid:#e84945;--g-color-private-red-600-solid:#ea5b58;--g-color-private-red-650-solid:#ec6d6b;--g-color-private-red-700-solid:#ef7f7d;--g-color-private-red-750-solid:#f19290;--g-color-private-red-800-solid:#f3a4a2;--g-color-private-red-850-solid:#f6b6b5;--g-color-private-red-900-solid:#f8c8c7;--g-color-private-red-950-solid:#fadbda;--g-color-private-red-1000-solid:#fce4e3;--g-color-private-purple-50:#8f52cc1a;--g-color-private-purple-100:#8f52cc26;--g-color-private-purple-150:#8f52cc33;--g-color-private-purple-200:#8f52cc4d;--g-color-private-purple-250:#8f52cc66;--g-color-private-purple-300:#8f52cc80;--g-color-private-purple-350:#8f52cc99;--g-color-private-purple-400:#8f52ccb3;--g-color-private-purple-450:#8f52cccc;--g-color-private-purple-500:#8f52cce6;--g-color-private-purple-50-solid:#373042;--g-color-private-purple-100-solid:#3c324a;--g-color-private-purple-150-solid:#413452;--g-color-private-purple-200-solid:#4a3761;--g-color-private-purple-250-solid:#543b70;--g-color-private-purple-300-solid:#5e3f80;--g-color-private-purple-350-solid:#68438f;--g-color-private-purple-400-solid:#72479e;--g-color-private-purple-450-solid:#7b4aad;--g-color-private-purple-500-solid:#854ebd;--g-color-private-purple-550-solid:#8f52cc;--g-color-private-purple-600-solid:#9a63d1;--g-color-private-purple-650-solid:#a575d6;--g-color-private-purple-700-solid:#b186db;--g-color-private-purple-750-solid:#bc97e0;--g-color-private-purple-800-solid:#c7a9e6;--g-color-private-purple-850-solid:#d2baeb;--g-color-private-purple-900-solid:#ddcbf0;--g-color-private-purple-950-solid:#e9dcf5;--g-color-private-purple-1000-solid:#eee5f7;--g-color-private-cool-grey-50:#60809c1a;--g-color-private-cool-grey-100:#60809c26;--g-color-private-cool-grey-150:#60809c33;--g-color-private-cool-grey-200:#60809c4d;--g-color-private-cool-grey-250:#60809c66;--g-color-private-cool-grey-300:#60809c80;--g-color-private-cool-grey-350:#60809c99;--g-color-private-cool-grey-400:#60809cb3;--g-color-private-cool-grey-450:#60809ccc;--g-color-private-cool-grey-500:#60809ce6;--g-color-private-cool-grey-50-solid:#32343e;--g-color-private-cool-grey-100-solid:#353943;--g-color-private-cool-grey-150-solid:#373d48;--g-color-private-cool-grey-200-solid:#3c4552;--g-color-private-cool-grey-250-solid:#414e5d;--g-color-private-cool-grey-300-solid:#465667;--g-color-private-cool-grey-350-solid:#4c5e72;--g-color-private-cool-grey-400-solid:#51677d;--g-color-private-cool-grey-450-solid:#566f87;--g-color-private-cool-grey-500-solid:#5b7892;--g-color-private-cool-grey-550-solid:#60809c;--g-color-private-cool-grey-600-solid:#708da6;--g-color-private-cool-grey-650-solid:#8099b0;--g-color-private-cool-grey-700-solid:#90a6ba;--g-color-private-cool-grey-750-solid:#a0b3c3;--g-color-private-cool-grey-800-solid:#b0bfcd;--g-color-private-cool-grey-850-solid:#bfccd7;--g-color-private-cool-grey-900-solid:#cfd9e1;--g-color-private-cool-grey-950-solid:#dfe6eb;--g-color-private-cool-grey-1000-solid:#e7ecf0}.g-root_theme_dark-hc{--g-color-base-background:#222326;--g-color-base-brand:var(--g-color-private-blue-450-solid);--g-color-base-brand-hover:var(--g-color-private-blue-650-solid);--g-color-base-selection:var(--g-color-private-blue-250);--g-color-base-selection-hover:var(--g-color-private-blue-400);--g-color-line-brand:var(--g-color-private-blue-550-solid);--g-color-text-brand:var(--g-color-private-blue-650-solid);--g-color-text-brand-heavy:var(--g-color-private-blue-850-solid);--g-color-text-brand-contrast:var(--g-color-text-light-primary);--g-color-text-link:var(--g-color-private-blue-650-solid);--g-color-text-link-hover:var(--g-color-private-blue-800-solid);--g-color-private-white-50:#ffffff0d;--g-color-private-white-70:#ffffff12;--g-color-private-white-100:#ffffff1a;--g-color-private-white-150:#ffffff26;--g-color-private-white-200:#fff3;--g-color-private-white-250:#ffffff40;--g-color-private-white-300:#ffffff4d;--g-color-private-white-350:#ffffff59;--g-color-private-white-400:#fff6;--g-color-private-white-450:#ffffff73;--g-color-private-white-500:#ffffff80;--g-color-private-white-550:#ffffff8c;--g-color-private-white-600:#fff9;--g-color-private-white-650:#ffffffa6;--g-color-private-white-700:#ffffffb3;--g-color-private-white-750:#ffffffbf;--g-color-private-white-800:#fffc;--g-color-private-white-850:#ffffffd9;--g-color-private-white-900:#ffffffe6;--g-color-private-white-950:#fffffff2;--g-color-private-white-50-solid:#2d2e31;--g-color-private-white-100-solid:#38393c;--g-color-private-white-150-solid:#434447;--g-color-private-white-200-solid:#4e4f51;--g-color-private-white-250-solid:#595a5c;--g-color-private-white-300-solid:#646567;--g-color-private-white-350-solid:#6f7072;--g-color-private-white-400-solid:#7a7b7d;--g-color-private-white-450-solid:#858688;--g-color-private-white-500-solid:#909193;--g-color-private-white-550-solid:#9c9c9d;--g-color-private-white-600-solid:#a7a7a8;--g-color-private-white-650-solid:#b2b2b3;--g-color-private-white-700-solid:#bdbdbe;--g-color-private-white-750-solid:#c8c8c9;--g-color-private-white-800-solid:#d3d3d4;--g-color-private-white-850-solid:#dededf;--g-color-private-white-900-solid:#e9e9e9;--g-color-private-white-950-solid:#f4f4f4;--g-color-private-white-1000-solid:#fff;--g-color-private-white-opaque-150:#38393cf7;--g-color-private-black-20:#00000005;--g-color-private-black-50:#0000000d;--g-color-private-black-100:#0000001a;--g-color-private-black-150:#00000026;--g-color-private-black-200:#0003;--g-color-private-black-250:#00000040;--g-color-private-black-300:#0000004d;--g-color-private-black-350:#00000059;--g-color-private-black-400:#0006;--g-color-private-black-450:#00000073;--g-color-private-black-500:#00000080;--g-color-private-black-550:#0000008c;--g-color-private-black-600:#0009;--g-color-private-black-650:#000000a6;--g-color-private-black-700:#000000b3;--g-color-private-black-750:#000000bf;--g-color-private-black-800:#000c;--g-color-private-black-850:#000000d9;--g-color-private-black-900:#000000e6;--g-color-private-black-950:#000000f2;--g-color-private-black-1000-solid:#000;--g-color-private-black-rock-850:#2d2c33;--g-color-private-black-rock-950:#222326;--g-color-private-blue-50:#5282ff1a;--g-color-private-blue-100:#5282ff26;--g-color-private-blue-150:#5282ff33;--g-color-private-blue-200:#5282ff4d;--g-color-private-blue-250:#5282ff66;--g-color-private-blue-300:#5282ff80;--g-color-private-blue-350:#5282ff99;--g-color-private-blue-400:#5282ffb3;--g-color-private-blue-450:#5282ffcc;--g-color-private-blue-500:#5282ffe6;--g-color-private-blue-50-solid:#272d3c;--g-color-private-blue-100-solid:#293147;--g-color-private-blue-150-solid:#2c3651;--g-color-private-blue-200-solid:#304067;--g-color-private-blue-250-solid:#35497d;--g-color-private-blue-300-solid:#3a5393;--g-color-private-blue-350-solid:#3f5ca8;--g-color-private-blue-400-solid:#4466be;--g-color-private-blue-450-solid:#486fd4;--g-color-private-blue-500-solid:#4d79e9;--g-color-private-blue-550-solid:#5282ff;--g-color-private-blue-600-solid:#638fff;--g-color-private-blue-650-solid:#759bff;--g-color-private-blue-700-solid:#86a8ff;--g-color-private-blue-750-solid:#97b4ff;--g-color-private-blue-800-solid:#a9c1ff;--g-color-private-blue-850-solid:#bacdff;--g-color-private-blue-900-solid:#cbdaff;--g-color-private-blue-950-solid:#dce6ff;--g-color-private-blue-1000-solid:#e5ecff;--g-color-private-green-50:#5bb5571a;--g-color-private-green-100:#5bb55726;--g-color-private-green-150:#000;--g-color-private-green-200:#5bb5574d;--g-color-private-green-250:#5bb55766;--g-color-private-green-300:#5bb55780;--g-color-private-green-350:#5bb55799;--g-color-private-green-400:#5bb557b3;--g-color-private-green-450:#5bb557cc;--g-color-private-green-500:#5bb557e6;--g-color-private-green-50-solid:#28322b;--g-color-private-green-100-solid:#2b392d;--g-color-private-green-150-solid:#2d4030;--g-color-private-green-200-solid:#334f35;--g-color-private-green-250-solid:#395d3a;--g-color-private-green-300-solid:#3f6c3f;--g-color-private-green-350-solid:#447b43;--g-color-private-green-400-solid:#4a8948;--g-color-private-green-450-solid:#50984d;--g-color-private-green-500-solid:#55a652;--g-color-private-green-550-solid:#5bb557;--g-color-private-green-600-solid:#6bbc68;--g-color-private-green-650-solid:#7cc479;--g-color-private-green-700-solid:#8ccb89;--g-color-private-green-750-solid:#9dd39a;--g-color-private-green-800-solid:#addaab;--g-color-private-green-850-solid:#bde1bc;--g-color-private-green-900-solid:#cee9cd;--g-color-private-green-950-solid:#def0dd;--g-color-private-green-1000-solid:#e6f4e6;--g-color-private-yellow-50:#ffcb001a;--g-color-private-yellow-100:#ffcb0026;--g-color-private-yellow-150:#ffcb0033;--g-color-private-yellow-200:#ffcb004d;--g-color-private-yellow-250:#ffcb0066;--g-color-private-yellow-300:#ffcb0080;--g-color-private-yellow-350:#ffcb0099;--g-color-private-yellow-400:#ffcb00b3;--g-color-private-yellow-450:#ffcb00cc;--g-color-private-yellow-500:#ffcb00e6;--g-color-private-yellow-50-solid:#383422;--g-color-private-yellow-100-solid:#433c20;--g-color-private-yellow-150-solid:#4e451e;--g-color-private-yellow-200-solid:#64551b;--g-color-private-yellow-250-solid:#7a6617;--g-color-private-yellow-300-solid:#907713;--g-color-private-yellow-350-solid:#a7880f;--g-color-private-yellow-400-solid:#bd990b;--g-color-private-yellow-450-solid:#d3a908;--g-color-private-yellow-500-solid:#e9ba04;--g-color-private-yellow-550-solid:#ffcb00;--g-color-private-yellow-600-solid:#ffd01a;--g-color-private-yellow-650-solid:#ffd533;--g-color-private-yellow-700-solid:#ffdb4c;--g-color-private-yellow-750-solid:#ffe066;--g-color-private-yellow-800-solid:#ffe580;--g-color-private-yellow-850-solid:#ffea99;--g-color-private-yellow-900-solid:#ffefb3;--g-color-private-yellow-950-solid:#fff5cc;--g-color-private-yellow-1000-solid:#fff7d9;--g-color-private-orange-50:#c8630c1a;--g-color-private-orange-100:#c8630c26;--g-color-private-orange-150:#c8630c33;--g-color-private-orange-200:#c8630c4d;--g-color-private-orange-250:#c8630c66;--g-color-private-orange-300:#c8630c80;--g-color-private-orange-350:#c8630c99;--g-color-private-orange-400:#c8630cb3;--g-color-private-orange-450:#c8630ccc;--g-color-private-orange-500:#c8630ce6;--g-color-private-orange-50-solid:#332923;--g-color-private-orange-100-solid:#3b2d22;--g-color-private-orange-150-solid:#433021;--g-color-private-orange-200-solid:#54361e;--g-color-private-orange-250-solid:#643d1c;--g-color-private-orange-300-solid:#754319;--g-color-private-orange-350-solid:#864916;--g-color-private-orange-400-solid:#965014;--g-color-private-orange-450-solid:#a75611;--g-color-private-orange-500-solid:#b75d0f;--g-color-private-orange-550-solid:#c8630c;--g-color-private-orange-600-solid:#ce7324;--g-color-private-orange-650-solid:#d3823d;--g-color-private-orange-700-solid:#d89255;--g-color-private-orange-750-solid:#dea16d;--g-color-private-orange-800-solid:#e3b185;--g-color-private-orange-850-solid:#e9c19e;--g-color-private-orange-900-solid:#efd0b6;--g-color-private-orange-950-solid:#f4e0ce;--g-color-private-orange-1000-solid:#f7e8db;--g-color-private-red-50:#e849451a;--g-color-private-red-100:#e8494526;--g-color-private-red-150:#e8494533;--g-color-private-red-200:#e849454d;--g-color-private-red-250:#e8494566;--g-color-private-red-300:#e8494580;--g-color-private-red-350:#e8494599;--g-color-private-red-400:#e84945b3;--g-color-private-red-450:#e84945cc;--g-color-private-red-500:#e84945e6;--g-color-private-red-50-solid:#362729;--g-color-private-red-100-solid:#40292b;--g-color-private-red-150-solid:#4a2b2c;--g-color-private-red-200-solid:#5d2e2f;--g-color-private-red-250-solid:#713233;--g-color-private-red-300-solid:#853636;--g-color-private-red-350-solid:#993a39;--g-color-private-red-400-solid:#ac3d3c;--g-color-private-red-450-solid:#c0413f;--g-color-private-red-500-solid:#d44542;--g-color-private-red-550-solid:#e84945;--g-color-private-red-600-solid:#ea5b58;--g-color-private-red-650-solid:#ec6d6b;--g-color-private-red-700-solid:#ef7f7d;--g-color-private-red-750-solid:#f19290;--g-color-private-red-800-solid:#f3a4a2;--g-color-private-red-850-solid:#f6b6b5;--g-color-private-red-900-solid:#f8c8c7;--g-color-private-red-950-solid:#fadbda;--g-color-private-red-1000-solid:#fce4e3;--g-color-private-purple-50:#8f52cc1a;--g-color-private-purple-100:#8f52cc26;--g-color-private-purple-150:#8f52cc33;--g-color-private-purple-200:#8f52cc4d;--g-color-private-purple-250:#8f52cc66;--g-color-private-purple-300:#8f52cc80;--g-color-private-purple-350:#8f52cc99;--g-color-private-purple-400:#8f52ccb3;--g-color-private-purple-450:#8f52cccc;--g-color-private-purple-500:#8f52cce6;--g-color-private-purple-50-solid:#2d2837;--g-color-private-purple-100-solid:#322a3f;--g-color-private-purple-150-solid:#382c47;--g-color-private-purple-200-solid:#433158;--g-color-private-purple-250-solid:#4e3668;--g-color-private-purple-300-solid:#593b79;--g-color-private-purple-350-solid:#633f8a;--g-color-private-purple-400-solid:#6e449a;--g-color-private-purple-450-solid:#7949ab;--g-color-private-purple-500-solid:#844dbb;--g-color-private-purple-550-solid:#8f52cc;--g-color-private-purple-600-solid:#9a63d1;--g-color-private-purple-650-solid:#a575d6;--g-color-private-purple-700-solid:#b186db;--g-color-private-purple-750-solid:#bc97e0;--g-color-private-purple-800-solid:#c7a9e6;--g-color-private-purple-850-solid:#d2baeb;--g-color-private-purple-900-solid:#ddcbf0;--g-color-private-purple-950-solid:#e9dcf5;--g-color-private-purple-1000-solid:#eee5f7;--g-color-private-cool-grey-50:#60809c1a;--g-color-private-cool-grey-100:#60809c26;--g-color-private-cool-grey-150:#60809c33;--g-color-private-cool-grey-200:#60809c4d;--g-color-private-cool-grey-250:#60809c66;--g-color-private-cool-grey-300:#60809c80;--g-color-private-cool-grey-350:#60809c99;--g-color-private-cool-grey-400:#60809cb3;--g-color-private-cool-grey-450:#60809ccc;--g-color-private-cool-grey-500:#60809ce6;--g-color-private-cool-grey-50-solid:#282c32;--g-color-private-cool-grey-100-solid:#2b3138;--g-color-private-cool-grey-150-solid:#2e363e;--g-color-private-cool-grey-200-solid:#353f49;--g-color-private-cool-grey-250-solid:#3b4855;--g-color-private-cool-grey-300-solid:#415161;--g-color-private-cool-grey-350-solid:#475b6d;--g-color-private-cool-grey-400-solid:#4d6479;--g-color-private-cool-grey-450-solid:#546d84;--g-color-private-cool-grey-500-solid:#5a7790;--g-color-private-cool-grey-550-solid:#60809c;--g-color-private-cool-grey-600-solid:#708da6;--g-color-private-cool-grey-650-solid:#8099b0;--g-color-private-cool-grey-700-solid:#90a6ba;--g-color-private-cool-grey-750-solid:#a0b3c3;--g-color-private-cool-grey-800-solid:#b0bfcd;--g-color-private-cool-grey-850-solid:#bfccd7;--g-color-private-cool-grey-900-solid:#cfd9e1;--g-color-private-cool-grey-950-solid:#dfe6eb;--g-color-private-cool-grey-1000-solid:#e7ecf0}:root{--tenant-object-info-max-value-width:300px;--diagnostics-section-title-margin:20px;--diagnostics-section-margin:16px;--diagnostics-section-table-width:872px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace} \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/1058.3df06184.chunk.js b/ydb/core/viewer/monitoring/static/js/1058.3df06184.chunk.js deleted file mode 100644 index 8c45894167c1..000000000000 --- a/ydb/core/viewer/monitoring/static/js/1058.3df06184.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[1058],{11058:function(e,t,l){l.r(t),l.d(t,{ReactComponent:function(){return M}});var c,a,n,r,v,h,m,i,d,z,f,o,p,s=l(4519),u=["title","titleId"];function E(){return E=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(a[l]=e[l]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(c=0;c=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(a[l]=e[l])}return a}function y(e,t){var l=e.title,y=e.titleId,M=b(e,u);return s.createElement("svg",E({width:349,height:357,fill:"none",xmlns:"http://www.w3.org/2000/svg",ref:t,"aria-labelledby":y},M),l?s.createElement("title",{id:y},l):null,c||(c=s.createElement("path",{d:"M275.033 85.83c0 24.7-9.9 83.9-9.9 117.1 0 33.2 0 106.3-27.8 134.1-27.8 27.8-61.9 16.1-61.9 16.1s-46.7 13-76.3-14.8c-29.6-27.8-60.1-83.5-69.1-115.3-9.9-35-26.5-49.3-27.8-56.5-1.3-7.2 3.6-12.1 12.1-12.6 8.5-.4 22.9 4 34.5 22 11.6 18 17.5 26 23.8 35.9 6.3 9.9 20.6 23.3 20.6 23.3s.4-44.9 1.3-64.1c.9-19.3-1.8-111.7 1.8-132.3 3.6-20.6 26.5-20.2 28.7-4 2.2 16.1 8.8 66.8 9.8 79.8s3.7 44.4 3.7 44.4l7.6-2.7s-.9-105.8-.9-132.9c0-29.2 28.7-29.2 32.3-4 3.6 25.2 6.7 142.8 6.7 142.8l6.7 2.7s2.2-111.7 5.8-129.6c3.6-17.9 26.5-17.5 30.1 4.9 3.6 22.4 1.3 72.2.9 94.2s-.9 43.5-.9 43.5l5.4 4s11-73.3 14.4-99.1c3.7-27.8 28.4-21.5 28.4 3.1z",fill:"#ECF2F9"})),a||(a=s.createElement("path",{d:"M279.233 267.33l-216.9 12c-7.3.4-13.3-5.2-13.3-12.5V99.43c0-7.3 6-12.9 13.3-12.5l216.9 12c5.6.3 10.1 5.7 10.1 12v144.4c0 6.3-4.5 11.7-10.1 12z",fill:"#FF4645"})),n||(n=s.createElement("path",{d:"M191.333 140.128l-32.3-1.4c-1.9-.1-3.8.6-5.2 1.9l-24.3 22.8c-1.4 1.3-2.2 3.2-2.2 5.2v33.7c0 2 .8 3.8 2.2 5.2l24.3 22.8c1.4 1.3 3.3 2 5.2 1.9l32.3-1.4c1.8-.1 3.6-.9 4.9-2.2l21.5-22.8c1.2-1.3 1.9-3.1 1.9-4.9v-31c0-1.8-.7-3.6-1.9-4.9l-21.5-22.8c-1.3-1.3-3.1-2.1-4.9-2.1z",fill:"#fff"})),r||(r=s.createElement("path",{d:"M203.433 196.428l-58.1.6c-1.6 0-3-1.3-3-3v-17.2c0-1.6 1.3-3 3-3l58.1.6c1.6 0 2.9 1.3 2.9 3v16c0 1.7-1.3 3-2.9 3z",fill:"#FF4645"})),v||(v=s.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M74.733 104.63c0 3.4-2.7 6-6.1 5.8-3.4-.1-6.1-3-6.1-6.4 0-3.4 2.8-6 6.1-5.8 3.4.2 6.1 3 6.1 6.4zm19.7.9c0 3.3-2.7 5.9-6 5.8-3.3-.1-6-3-6-6.3s2.7-5.9 6-5.8c3.3.1 6 2.9 6 6.3zm13.4 6.498c3.2.2 5.8-2.4 5.8-5.7 0-3.3-2.6-6.1-5.8-6.2-3.3-.2-5.9 2.4-5.9 5.7 0 3.3 2.7 6.1 5.9 6.2z",fill:"#fff"})),h||(h=s.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M248.733 248.231h84.6v-62c0-22.5-18.3-40.7-40.7-40.7h-3.2c-22.5 0-40.7 18.3-40.7 40.7v62zm70.2-14.3h-56v-47.7c0-14.6 11.9-26.4 26.4-26.4h3.2c14.6 0 26.4 11.9 26.4 26.4v47.7z",fill:"#DEB700"})),m||(m=s.createElement("path",{d:"M340.533 206.43s-16.3-2.7-17.3-2.7l-78.6 1.1c-7 .1-13.7 6.5-13.7 13.1v58.6c0 4.7 2.9 8.5 7 10.1 1.5.6 3.1.9 4.8.9l12.5 2.3 7.6-3.7 60.4-4.3c6.2-.4 11.2-5.8 11.2-11.9v-43.3l6.1-20.2z",fill:"#DEB700"})),i||(i=s.createElement("path",{d:"M337.633 284.332l-79.6 5.7c-7 .5-12.7-4.4-12.7-11v-59.6c0-6.6 5.7-12 12.7-12.1l79.6-1.1c6.2-.1 11.2 4.8 11.2 10.9v55.4c-.1 6-5 11.3-11.2 11.8z",fill:"#FBC900"})),d||(d=s.createElement("path",{d:"M313.033 236.931c0-6.3-5.2-11.4-11.7-11.4-6.7 0-12.3 5.4-12.3 12 0 5 3.2 9.1 7.6 10.7v15.5c0 2.5 2.1 4.4 4.7 4.2 2.6-.2 4.6-2.5 4.6-4.9v-15.1c4.3-2.1 7.1-6.3 7.1-11z",fill:"#00236B"})),z||(z=s.createElement("path",{d:"M308.333 236.93c0-5.5-4-10.1-9.3-11.2-5.6 1.1-10 6-10 11.8 0 5 3.2 9.1 7.6 10.7v15.5c0 1.5.8 2.8 2 3.5 1.6-.9 2.6-2.5 2.6-4.3v-15.1c4.2-2 7.1-6.2 7.1-10.9z",fill:"#18123D"})),f||(f=s.createElement("path",{d:"M21.733 41.629a2 2 0 0 0-4 0h4zm-4 8.2a2 2 0 1 0 4 0h-4zm4 17.198a2 2 0 0 0-4 0h4zm-4 8.9a2 2 0 1 0 4 0h-4zm19.2-15.197a2 2 0 0 0 0-4v4zm-8.3-4a2 2 0 1 0 0 4v-4zm-17.8 4a2 2 0 0 0 0-4v4zm-8.3-4a2 2 0 1 0 0 4v-4zm15.2-15.101v8.2h4v-8.2h-4zm0 25.398v8.9h4v-8.9h-4zm19.2-10.297h-8.3v4h8.3v-4zm-26.1 0h-8.3v4h8.3v-4zm284.2 259.098a2 2 0 0 0-4 0h4zm-4 6.2a2 2 0 1 0 4 0h-4zm4 13.1a2 2 0 0 0-4 0h4zm-4 6.8a2 2 0 1 0 4 0h-4zm15-11.1a2 2 0 0 0 0-4v4zm-6.2-4a2 2 0 0 0 0 4v-4zm-13.6 4a2 2 0 0 0 0-4v4zm-6.3-4a2 2 0 0 0 0 4v-4zm11.1-11v6.2h4v-6.2h-4zm0 19.3v6.8h4v-6.8h-4zm15-8.3h-6.2v4h6.2v-4zm-19.8 0h-6.3v4h6.3v-4z",fill:"#2EE5C0"})),o||(o=s.createElement("path",{clipRule:"evenodd",d:"M15.233 326.328c7.18 0 13-5.82 13-13s-5.82-13-13-13-13 5.82-13 13 5.82 13 13 13z",stroke:"#2EE5C0",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),p||(p=s.createElement("path",{d:"M28.233 311.328a2 2 0 0 0 0 4v-4zm35.2 2h2a2 2 0 0 0-2-2v2zm-2 12.2a2 2 0 1 0 4 0h-4zm-17.1 0a2 2 0 1 0 4 0h-4zm4-12.2a2 2 0 0 0-4 0h4zm-20.1 2h35.2v-4h-35.2v4zm33.2-2v12.2h4v-12.2h-4zm-13.1 12.2v-12.2h-4v12.2h4z",fill:"#2EE5C0"})))}var M=s.forwardRef(y);t.default=l.p+"static/media/403.6367e52f9464706633f52a2488a41958.svg"}}]); -//# sourceMappingURL=1058.3df06184.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/1115.1e053b1d.chunk.js b/ydb/core/viewer/monitoring/static/js/1115.1e053b1d.chunk.js deleted file mode 100644 index d8d72f7a39f3..000000000000 --- a/ydb/core/viewer/monitoring/static/js/1115.1e053b1d.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[1115],{1115:function(e,t,n){n.r(t),n.d(t,{conf:function(){return o},language:function(){return a}});var o={comments:{lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}],folding:{offSide:!0}},a={defaultToken:"",tokenPostfix:".pug",ignoreCase:!0,brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],keywords:["append","block","case","default","doctype","each","else","extends","for","if","in","include","mixin","typeof","unless","var","when"],tags:["a","abbr","acronym","address","area","article","aside","audio","b","base","basefont","bdi","bdo","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","command","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","font","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","keygen","kbd","label","li","link","map","mark","menu","meta","meter","nav","noframes","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strike","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","tracks","tt","u","ul","video","wbr"],symbols:/[\+\-\*\%\&\|\!\=\/\.\,\:]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^(\s*)([a-zA-Z_-][\w-]*)/,{cases:{"$2@tags":{cases:{"@eos":["","tag"],"@default":["",{token:"tag",next:"@tag.$1"}]}},"$2@keywords":["",{token:"keyword.$2"}],"@default":["",""]}}],[/^(\s*)(#[a-zA-Z_-][\w-]*)/,{cases:{"@eos":["","tag.id"],"@default":["",{token:"tag.id",next:"@tag.$1"}]}}],[/^(\s*)(\.[a-zA-Z_-][\w-]*)/,{cases:{"@eos":["","tag.class"],"@default":["",{token:"tag.class",next:"@tag.$1"}]}}],[/^(\s*)(\|.*)$/,""],{include:"@whitespace"},[/[a-zA-Z_$][\w$]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":""}}],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d+\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\d+/,"number"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],tag:[[/(\.)(\s*$)/,[{token:"delimiter",next:"@blockText.$S2."},""]],[/\s+/,{token:"",next:"@simpleText"}],[/#[a-zA-Z_-][\w-]*/,{cases:{"@eos":{token:"tag.id",next:"@pop"},"@default":"tag.id"}}],[/\.[a-zA-Z_-][\w-]*/,{cases:{"@eos":{token:"tag.class",next:"@pop"},"@default":"tag.class"}}],[/\(/,{token:"delimiter.parenthesis",next:"@attributeList"}]],simpleText:[[/[^#]+$/,{token:"",next:"@popall"}],[/[^#]+/,{token:""}],[/(#{)([^}]*)(})/,{cases:{"@eos":["interpolation.delimiter","interpolation",{token:"interpolation.delimiter",next:"@popall"}],"@default":["interpolation.delimiter","interpolation","interpolation.delimiter"]}}],[/#$/,{token:"",next:"@popall"}],[/#/,""]],attributeList:[[/\s+/,""],[/(\w+)(\s*=\s*)("|')/,["attribute.name","delimiter",{token:"attribute.value",next:"@value.$3"}]],[/\w+/,"attribute.name"],[/,/,{cases:{"@eos":{token:"attribute.delimiter",next:"@popall"},"@default":"attribute.delimiter"}}],[/\)$/,{token:"delimiter.parenthesis",next:"@popall"}],[/\)/,{token:"delimiter.parenthesis",next:"@pop"}]],whitespace:[[/^(\s*)(\/\/.*)$/,{token:"comment",next:"@blockText.$1.comment"}],[/[ \t\r\n]+/,""],[//,{token:"comment",next:"@pop"}],[/|$)/,T.html=f(T.html,"i").replace("comment",T._comment).replace("tag",T._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),T.paragraph=f(T._paragraph).replace("hr",T.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",T._tag).getRegex(),T.blockquote=f(T.blockquote).replace("paragraph",T.paragraph).getRegex(),T.normal=L({},T),T.gfm=L({},T.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),T.gfm.table=f(T.gfm.table).replace("hr",T.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",T._tag).getRegex(),T.gfm.paragraph=f(T._paragraph).replace("hr",T.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",T.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",T._tag).getRegex(),T.pedantic=L({},T.normal,{html:f("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",T._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:S,paragraph:f(T.normal._paragraph).replace("hr",T.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",T.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var M={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:S,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[^*]+(?=[^*])|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:S,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(i="x"+i.toString(16)),n+="&#"+i+";";return n}M._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",M.punctuation=f(M.punctuation).replace(/punctuation/g,M._punctuation).getRegex(),M.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,M.escapedEmSt=/\\\*|\\_/g,M._comment=f(T._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),M.emStrong.lDelim=f(M.emStrong.lDelim).replace(/punct/g,M._punctuation).getRegex(),M.emStrong.rDelimAst=f(M.emStrong.rDelimAst,"g").replace(/punct/g,M._punctuation).getRegex(),M.emStrong.rDelimUnd=f(M.emStrong.rDelimUnd,"g").replace(/punct/g,M._punctuation).getRegex(),M._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,M._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,M._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,M.autolink=f(M.autolink).replace("scheme",M._scheme).replace("email",M._email).getRegex(),M._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,M.tag=f(M.tag).replace("comment",M._comment).replace("attribute",M._attribute).getRegex(),M._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,M._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,M._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,M.link=f(M.link).replace("label",M._label).replace("href",M._href).replace("title",M._title).getRegex(),M.reflink=f(M.reflink).replace("label",M._label).replace("ref",T._label).getRegex(),M.nolink=f(M.nolink).replace("ref",T._label).getRegex(),M.reflinkSearch=f(M.reflinkSearch,"g").replace("reflink",M.reflink).replace("nolink",M.nolink).getRegex(),M.normal=L({},M),M.pedantic=L({},M.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:f(/^!?\[(label)\]\((.*?)\)/).replace("label",M._label).getRegex(),reflink:f(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",M._label).getRegex()}),M.gfm=L({},M.normal,{escape:f(M.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\0?t[t.length-1].raw+="\n":t.push(i);else if(i=this.tokenizer.code(e))e=e.substring(i.raw.length),!(n=t[t.length-1])||"paragraph"!==n.type&&"text"!==n.type?t.push(i):(n.raw+="\n"+i.raw,n.text+="\n"+i.text,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(i=this.tokenizer.fences(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.heading(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.hr(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.blockquote(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.list(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.html(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.def(e))e=e.substring(i.raw.length),!(n=t[t.length-1])||"paragraph"!==n.type&&"text"!==n.type?this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title}):(n.raw+="\n"+i.raw,n.text+="\n"+i.raw,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(i=this.tokenizer.table(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.lheading(e))e=e.substring(i.raw.length),t.push(i);else if(o=e,this.options.extensions&&this.options.extensions.startBlock&&function(){var t=1/0,i=e.slice(1),n=void 0;r.options.extensions.startBlock.forEach((function(e){"number"===typeof(n=e.call({lexer:this},i))&&n>=0&&(t=Math.min(t,n))})),t<1/0&&t>=0&&(o=e.substring(0,t+1))}(),this.state.top&&(i=this.tokenizer.paragraph(o)))n=t[t.length-1],s&&"paragraph"===n.type?(n.raw+="\n"+i.raw,n.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(i),s=o.length!==e.length,e=e.substring(i.raw.length);else if(i=this.tokenizer.text(e))e=e.substring(i.raw.length),(n=t[t.length-1])&&"text"===n.type?(n.raw+="\n"+i.raw,n.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(i);else if(e){var a="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(a);break}throw new Error(a)}return this.state.top=!0,t},r.inline=function(e,t){return void 0===t&&(t=[]),this.inlineQueue.push({src:e,tokens:t}),t},r.inlineTokens=function(e,t){var i,n,o,s=this;void 0===t&&(t=[]);var r,a,l,h=e;if(this.tokens.links){var d=Object.keys(this.tokens.links);if(d.length>0)for(;null!=(r=this.tokenizer.rules.inline.reflinkSearch.exec(h));)d.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(h=h.slice(0,r.index)+"["+x("a",r[0].length-2)+"]"+h.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(r=this.tokenizer.rules.inline.blockSkip.exec(h));)h=h.slice(0,r.index)+"["+x("a",r[0].length-2)+"]"+h.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(r=this.tokenizer.rules.inline.escapedEmSt.exec(h));)h=h.slice(0,r.index)+"++"+h.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;e;)if(a||(l=""),a=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((function(n){return!!(i=n.call({lexer:s},e,t))&&(e=e.substring(i.raw.length),t.push(i),!0)}))))if(i=this.tokenizer.escape(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.tag(e))e=e.substring(i.raw.length),(n=t[t.length-1])&&"text"===i.type&&"text"===n.type?(n.raw+=i.raw,n.text+=i.text):t.push(i);else if(i=this.tokenizer.link(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(i.raw.length),(n=t[t.length-1])&&"text"===i.type&&"text"===n.type?(n.raw+=i.raw,n.text+=i.text):t.push(i);else if(i=this.tokenizer.emStrong(e,h,l))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.codespan(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.br(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.del(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.autolink(e,R))e=e.substring(i.raw.length),t.push(i);else if(this.state.inLink||!(i=this.tokenizer.url(e,R))){if(o=e,this.options.extensions&&this.options.extensions.startInline&&function(){var t=1/0,i=e.slice(1),n=void 0;s.options.extensions.startInline.forEach((function(e){"number"===typeof(n=e.call({lexer:this},i))&&n>=0&&(t=Math.min(t,n))})),t<1/0&&t>=0&&(o=e.substring(0,t+1))}(),i=this.tokenizer.inlineText(o,A))e=e.substring(i.raw.length),"_"!==i.raw.slice(-1)&&(l=i.raw.slice(-1)),a=!0,(n=t[t.length-1])&&"text"===n.type?(n.raw+=i.raw,n.text+=i.text):t.push(i);else if(e){var c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}}else e=e.substring(i.raw.length),t.push(i);return t},n=i,s=[{key:"rules",get:function(){return{block:T,inline:M}}}],(o=null)&&t(n.prototype,o),s&&t(n,s),Object.defineProperty(n,"prototype",{writable:!1}),i}(),P=function(){function t(t){this.options=t||e.defaults}var i=t.prototype;return i.code=function(e,t,i){var n=(t||"").match(/\S*/)[0];if(this.options.highlight){var o=this.options.highlight(e,n);null!=o&&o!==e&&(i=!0,e=o)}return e=e.replace(/\n$/,"")+"\n",n?'
'+(i?e:c(e,!0))+"
\n":"
"+(i?e:c(e,!0))+"
\n"},i.blockquote=function(e){return"
\n"+e+"
\n"},i.html=function(e){return e},i.heading=function(e,t,i,n){return this.options.headerIds?"'+e+"\n":""+e+"\n"},i.hr=function(){return this.options.xhtml?"
\n":"
\n"},i.list=function(e,t,i){var n=t?"ol":"ul";return"<"+n+(t&&1!==i?' start="'+i+'"':"")+">\n"+e+"\n"},i.listitem=function(e){return"
  • "+e+"
  • \n"},i.checkbox=function(e){return" "},i.paragraph=function(e){return"

    "+e+"

    \n"},i.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},i.tablerow=function(e){return"\n"+e+"\n"},i.tablecell=function(e,t){var i=t.header?"th":"td";return(t.align?"<"+i+' align="'+t.align+'">':"<"+i+">")+e+"\n"},i.strong=function(e){return""+e+""},i.em=function(e){return""+e+""},i.codespan=function(e){return""+e+""},i.br=function(){return this.options.xhtml?"
    ":"
    "},i.del=function(e){return""+e+""},i.link=function(e,t,i){if(null===(e=v(this.options.sanitize,this.options.baseUrl,e)))return i;var n='"},i.image=function(e,t,i){if(null===(e=v(this.options.sanitize,this.options.baseUrl,e)))return i;var n=''+i+'":">"},i.text=function(e){return e},t}(),F=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,i){return""+i},t.image=function(e,t,i){return""+i},t.br=function(){return""},e}(),B=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var i=e,n=0;if(this.seen.hasOwnProperty(i)){n=this.seen[e];do{i=e+"-"+ ++n}while(this.seen.hasOwnProperty(i))}return t||(this.seen[e]=n,this.seen[i]=0),i},t.slug=function(e,t){void 0===t&&(t={});var i=this.serialize(e);return this.getNextSafeSlug(i,t.dryrun)},e}(),z=function(){function t(t){this.options=t||e.defaults,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new F,this.slugger=new B}t.parse=function(e,i){return new t(i).parse(e)},t.parseInline=function(e,i){return new t(i).parseInline(e)};var i=t.prototype;return i.parse=function(e,t){void 0===t&&(t=!0);var i,n,o,s,r,a,l,h,d,c,u,m,f,p,_,v,b,C,w,y="",S=e.length;for(i=0;i0&&"paragraph"===_.tokens[0].type?(_.tokens[0].text=C+" "+_.tokens[0].text,_.tokens[0].tokens&&_.tokens[0].tokens.length>0&&"text"===_.tokens[0].tokens[0].type&&(_.tokens[0].tokens[0].text=C+" "+_.tokens[0].tokens[0].text)):_.tokens.unshift({type:"text",text:C}):p+=C),p+=this.parse(_.tokens,f),d+=this.renderer.listitem(p,b,v);y+=this.renderer.list(d,u,m);continue;case"html":y+=this.renderer.html(c.text);continue;case"paragraph":y+=this.renderer.paragraph(this.parseInline(c.tokens));continue;case"text":for(d=c.tokens?this.parseInline(c.tokens):c.text;i+1An error occurred:

    "+c(e.message+"",!0)+"
    ";throw e}try{var l=O.lex(e,t);if(t.walkTokens){if(t.async)return Promise.all(V.walkTokens(l,t.walkTokens)).then((function(){return z.parse(l,t)})).catch(a);V.walkTokens(l,t.walkTokens)}return z.parse(l,t)}catch(h){a(h)}}V.options=V.setOptions=function(t){var i;return L(V.defaults,t),i=V.defaults,e.defaults=i,V},V.getDefaults=o,V.defaults=e.defaults,V.use=function(){for(var e=arguments.length,t=new Array(e),i=0;iAn error occurred:

    "+c(n.message+"",!0)+"
    ";throw n}},V.Parser=z,V.parser=z.parse,V.Renderer=P,V.TextRenderer=F,V.Lexer=O,V.lexer=O.lex,V.Tokenizer=I,V.Slugger=B,V.parse=V;var W=V.options,H=V.setOptions,K=V.use,U=V.walkTokens,j=V.parseInline,q=V,G=z.parse,Q=O.lex;e.Lexer=O,e.Parser=z,e.Renderer=P,e.Slugger=B,e.TextRenderer=F,e.Tokenizer=I,e.getDefaults=o,e.lexer=Q,e.marked=V,e.options=W,e.parse=q,e.parseInline=j,e.parser=G,e.setOptions=H,e.use=K,e.walkTokens=U,Object.defineProperty(e,"__esModule",{value:!0})},e.amd?e(0,i):"object"===typeof exports?i(exports):i((t="undefined"!==typeof globalThis?globalThis:t||self).marked={})}();_.Lexer||exports.Lexer,_.Parser||exports.Parser,_.Renderer||exports.Renderer,_.Slugger||exports.Slugger,_.TextRenderer||exports.TextRenderer,_.Tokenizer||exports.Tokenizer,_.getDefaults||exports.getDefaults,_.lexer||exports.lexer;var v=_.marked||exports.marked,b=(_.options||exports.options,_.parse||exports.parse,_.parseInline||exports.parseInline,_.parser||exports.parser,_.setOptions||exports.setOptions,_.use||exports.use,_.walkTokens||exports.walkTokens,i(61423)),C=i(33211),w=i(10451),y=i(55694),S=i(25085),L=i(82682);const k=Object.freeze({image:(e,t,i)=>{let n=[],o=[];return e&&(({href:e,dimensions:n}=(0,u.v1)(e)),o.push('src="'.concat((0,u.d9)(e),'"'))),i&&o.push('alt="'.concat((0,u.d9)(i),'"')),t&&o.push('title="'.concat((0,u.d9)(t),'"')),n.length&&(o=o.concat(n)),""},paragraph:e=>"

    ".concat(e,"

    "),link:(e,t,i)=>"string"!==typeof e?"":(e===i&&(i=(0,u.oR)(i)),t="string"===typeof t?(0,u.d9)((0,u.oR)(t)):"",e=(e=(0,u.oR)(e)).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"),'
    ').concat(i,""))});function D(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var o,u;const f=new p.SL;let _=!1;const y=(0,r.az)(t),D=function(t){let i;try{i=(0,b.Qc)(decodeURIComponent(t))}catch(n){}return i?(i=(0,w.rs)(i,(t=>e.uris&&e.uris[t]?L.o.revive(e.uris[t]):void 0)),encodeURIComponent(JSON.stringify(i))):t},I=function(t,i){const n=e.uris&&e.uris[t];let o=L.o.revive(n);return i?t.startsWith(C.lg.data+":")?t:(o||(o=L.o.parse(t)),C.Gi.uriToBrowserUri(o).toString(!0)):o?L.o.parse(t).toString()===o.toString()?t:(o.query&&(o=o.with({query:D(o.query)})),o.toString()):t},T=new v.Renderer;T.image=k.image,T.link=k.link,T.paragraph=k.paragraph;const M=[],A=[];if(t.codeBlockRendererSync?T.code=(e,i)=>{const n=m.a.nextId(),o=t.codeBlockRendererSync(N(i),e);return A.push([n,o]),'
    ').concat((0,S.YU)(e),"
    ")}:t.codeBlockRenderer&&(T.code=(e,i)=>{const n=m.a.nextId(),o=t.codeBlockRenderer(N(i),e);return M.push(o.then((e=>[n,e]))),'
    ').concat((0,S.YU)(e),"
    ")}),t.actionHandler){const i=function(i){let n=i.target;if("A"===n.tagName||(n=n.parentElement,n&&"A"===n.tagName))try{let o=n.dataset.href;o&&(e.baseUri&&(o=x(L.o.from(e.baseUri),o)),t.actionHandler.callback(o,i))}catch(o){(0,d.dL)(o)}finally{i.preventDefault()}},o=t.actionHandler.disposables.add(new s.Y(y,"click")),r=t.actionHandler.disposables.add(new s.Y(y,"auxclick"));t.actionHandler.disposables.add(c.ju.any(o.event,r.event)((e=>{const t=new l.n(n.Jj(y),e);(t.leftButton||t.middleButton)&&i(t)}))),t.actionHandler.disposables.add(n.nm(y,"keydown",(e=>{const t=new a.y(e);(t.equals(10)||t.equals(3))&&i(t)})))}e.supportHtml||(i.sanitizer=t=>(e.isTrusted?t.match(/^(]+>)|(<\/\s*span>)$/):void 0)?t:"",i.sanitize=!0,i.silent=!0),i.renderer=T;let R,P=null!==(o=e.value)&&void 0!==o?o:"";if(P.length>1e5&&(P="".concat(P.substr(0,1e5),"\u2026")),e.supportThemeIcons&&(P=(0,g.f$)(P)),t.fillInIncompleteTokens){const e={...v.defaults,...i},t=function(e){let t,i;for(t=0;t"string"===typeof e?e:e.outerHTML)).join("")}const B=(new DOMParser).parseFromString(E(e,R),"text/html");if(B.body.querySelectorAll("img").forEach((t=>{const i=t.getAttribute("src");if(i){let o=i;try{e.baseUri&&(o=x(L.o.from(e.baseUri),o))}catch(n){}t.src=I(o,!0)}})),B.body.querySelectorAll("a").forEach((t=>{const i=t.getAttribute("href");if(t.setAttribute("href",""),!i||/^data:|javascript:/i.test(i)||/^command:/i.test(i)&&!e.isTrusted||/^command:(\/\/\/)?_workbench\.downloadResource/i.test(i))t.replaceWith(...t.childNodes);else{let n=I(i,!1);e.baseUri&&(n=x(L.o.from(e.baseUri),i)),t.dataset.href=n}})),y.innerHTML=E(e,B.body.innerHTML),M.length>0)Promise.all(M).then((e=>{var i,o;if(_)return;const s=new Map(e),r=y.querySelectorAll("div[data-code]");for(const t of r){const e=s.get(null!==(i=t.dataset.code)&&void 0!==i?i:"");e&&n.mc(t,e)}null===(o=t.asyncRenderCallback)||void 0===o||o.call(t)}));else if(A.length>0){const e=new Map(A),t=y.querySelectorAll("div[data-code]");for(const i of t){const t=e.get(null!==(u=i.dataset.code)&&void 0!==u?u:"");t&&n.mc(i,t)}}if(t.asyncRenderCallback)for(const s of y.getElementsByTagName("img")){const e=f.add(n.nm(s,"load",(()=>{e.dispose(),t.asyncRenderCallback()})))}return{element:y,dispose:()=>{_=!0,f.dispose()}}}function N(e){if(!e)return"";const t=e.split(/[\s+|:|,|\{|\?]/,1);return t.length?t[0]:e}function x(e,t){return/^\w[\w\d+.-]*:/.test(t)?t:e.path.endsWith("/")?(0,y.i3)(e,t).toString():(0,y.i3)((0,y.XX)(e),t).toString()}function E(e,t){const{config:i,allowedSchemes:s}=function(e){const t=[C.lg.http,C.lg.https,C.lg.mailto,C.lg.data,C.lg.file,C.lg.vscodeFileResource,C.lg.vscodeRemote,C.lg.vscodeRemoteResource];e.isTrusted&&t.push(C.lg.command);return{config:{ALLOWED_TAGS:[...n.sQ],ALLOWED_ATTR:I,ALLOW_UNKNOWN_PROTOCOLS:!0},allowedSchemes:t}}(e);o.v5("uponSanitizeAttribute",((e,t)=>{var i;if("style"!==t.attrName&&"class"!==t.attrName){if("INPUT"===e.tagName&&"checkbox"===(null===(i=e.attributes.getNamedItem("type"))||void 0===i?void 0:i.value)){if("type"===t.attrName&&"checkbox"===t.attrValue||"disabled"===t.attrName||"checked"===t.attrName)return void(t.keepAttr=!0);t.keepAttr=!1}}else{if("SPAN"===e.tagName){if("style"===t.attrName)return void(t.keepAttr=/^(color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?(background-color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?$/.test(t.attrValue));if("class"===t.attrName)return void(t.keepAttr=/^codicon codicon-[a-z\-]+( codicon-modifier-[a-z\-]+)?$/.test(t.attrValue))}t.keepAttr=!1}})),o.v5("uponSanitizeElement",((e,t)=>{var i,n;"input"===t.tagName&&("checkbox"===(null===(i=e.attributes.getNamedItem("type"))||void 0===i?void 0:i.value)?e.setAttribute("disabled",""):null===(n=e.parentElement)||void 0===n||n.removeChild(e))}));const r=n._F(s);try{return o.Nw(t,{...i,RETURN_TRUSTED_TYPE:!0})}finally{o.ok("uponSanitizeAttribute"),r.dispose()}}const I=["align","autoplay","alt","checked","class","controls","data-code","data-href","disabled","draggable","height","href","loop","muted","playsinline","poster","src","style","target","title","type","width","start"];function T(e){return"string"===typeof e?e:function(e){var t;let i=null!==(t=e.value)&&void 0!==t?t:"";i.length>1e5&&(i="".concat(i.substr(0,1e5),"\u2026"));return E({isTrusted:!1},v.parse(i,{renderer:A.value}).replace(/&(#\d+|[a-zA-Z]+);/g,(e=>{var t;return null!==(t=M.get(e))&&void 0!==t?t:e}))).toString()}(e)}const M=new Map([[""",'"'],[" "," "],["&","&"],["'","'"],["<","<"],[">",">"]]),A=new f.o((()=>{const e=new v.Renderer;return e.code=e=>e,e.blockquote=e=>e,e.html=e=>"",e.heading=(e,t,i)=>e+"\n",e.hr=()=>"",e.list=(e,t)=>e,e.listitem=e=>e+"\n",e.paragraph=e=>e+"\n",e.table=(e,t)=>e+t+"\n",e.tablerow=e=>e,e.tablecell=(e,t)=>e+" ",e.strong=e=>e,e.em=e=>e,e.codespan=e=>e,e.br=()=>"\n",e.del=e=>e,e.image=(e,t,i)=>"",e.text=e=>e,e.link=(e,t,i)=>i,e}));function R(e){let t="";return e.forEach((e=>{t+=e.raw})),t}function O(e){var t,i;for(let n=0;nP(e.raw))))return K(e)}}}function P(e){return!!e.match(/^[^\[]*\]\([^\)]*$/)}function F(e,t){const i=R(e);return v.lexer(i+"\n".concat(t))}function B(e){return j(e,"`")}function z(e){return j(e,"*")}function V(e){return j(e,"_")}function W(e){return j(e,")")}function H(e){return j(e,'")')}function K(e){return j(e,"](about:blank)")}function U(e){return j(e,"__")}function j(e,t){const i=R(Array.isArray(e)?e:[e]);return v.lexer(i+t)[0]}function q(e){const t=R(e),i=t.split("\n");let n,o=!1;for(let s=0;s0){const e=o?i.slice(0,-1).join("\n"):t,s=!!e.match(/\|\s*$/),r=e+(s?"":"|")+"\n|".concat(" --- |".repeat(n));return v.lexer(r)}}},21494:(e,t,i)=>{i.d(t,{n:()=>l,q:()=>h});var n=i(42606);const o=new WeakMap;function s(e){if(!e.parent||e.parent===e)return null;try{const t=e.location,i=e.parent.location;if("null"!==t.origin&&"null"!==i.origin&&t.origin!==i.origin)return null}catch(t){return null}return e.parent}class r{static getSameOriginWindowChain(e){let t=o.get(e);if(!t){t=[],o.set(e,t);let i,n=e;do{i=s(n),i?t.push({window:new WeakRef(n),iframeElement:n.frameElement||null}):t.push({window:new WeakRef(n),iframeElement:null}),n=i}while(n)}return t.slice(0)}static getPositionOfChildWindowRelativeToAncestorWindow(e,t){var i,n;if(!t||e===t)return{top:0,left:0};let o=0,s=0;const r=this.getSameOriginWindowChain(e);for(const a of r){const e=a.window.deref();if(o+=null!==(i=null===e||void 0===e?void 0:e.scrollY)&&void 0!==i?i:0,s+=null!==(n=null===e||void 0===e?void 0:e.scrollX)&&void 0!==n?n:0,e===t)break;if(!a.iframeElement)break;const r=a.iframeElement.getBoundingClientRect();o+=r.top,s+=r.left}return{top:o,left:s}}}var a=i(21511);class l{constructor(e,t){this.timestamp=Date.now(),this.browserEvent=t,this.leftButton=0===t.button,this.middleButton=1===t.button,this.rightButton=2===t.button,this.buttons=t.buttons,this.target=t.target,this.detail=t.detail||1,"dblclick"===t.type&&(this.detail=2),this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,"number"===typeof t.pageX?(this.posx=t.pageX,this.posy=t.pageY):(this.posx=t.clientX+this.target.ownerDocument.body.scrollLeft+this.target.ownerDocument.documentElement.scrollLeft,this.posy=t.clientY+this.target.ownerDocument.body.scrollTop+this.target.ownerDocument.documentElement.scrollTop);const i=r.getPositionOfChildWindowRelativeToAncestorWindow(e,t.view);this.posx-=i.left,this.posy-=i.top}preventDefault(){this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent.stopPropagation()}}class h{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;var o;this.browserEvent=e||null,this.target=e?e.target||e.targetNode||e.srcElement:null,this.deltaY=i,this.deltaX=t;let s=!1;if(n.i7){const e=navigator.userAgent.match(/Chrome\/(\d+)/);s=(e?parseInt(e[1]):123)<=122}if(e){const t=e,i=e,r=(null===(o=e.view)||void 0===o?void 0:o.devicePixelRatio)||1;if("undefined"!==typeof t.wheelDeltaY)this.deltaY=s?t.wheelDeltaY/(120*r):t.wheelDeltaY/120;else if("undefined"!==typeof i.VERTICAL_AXIS&&i.axis===i.VERTICAL_AXIS)this.deltaY=-i.detail/3;else if("wheel"===e.type){const t=e;t.deltaMode===t.DOM_DELTA_LINE?n.vU&&!a.dz?this.deltaY=-e.deltaY/3:this.deltaY=-e.deltaY:this.deltaY=-e.deltaY/40}if("undefined"!==typeof t.wheelDeltaX)n.G6&&a.ED?this.deltaX=-t.wheelDeltaX/120:this.deltaX=s?t.wheelDeltaX/(120*r):t.wheelDeltaX/120;else if("undefined"!==typeof i.HORIZONTAL_AXIS&&i.axis===i.HORIZONTAL_AXIS)this.deltaX=-e.detail/3;else if("wheel"===e.type){const t=e;t.deltaMode===t.DOM_DELTA_LINE?n.vU&&!a.dz?this.deltaX=-e.deltaX/3:this.deltaX=-e.deltaX:this.deltaX=-e.deltaX/40}0===this.deltaY&&0===this.deltaX&&e.wheelDelta&&(this.deltaY=s?e.wheelDelta/(120*r):e.wheelDelta/120)}}preventDefault(){var e;null===(e=this.browserEvent)||void 0===e||e.preventDefault()}stopPropagation(){var e;null===(e=this.browserEvent)||void 0===e||e.stopPropagation()}}},10115:(e,t,i)=>{var n;i.d(t,{B:()=>n}),function(e){const t={total:0,min:Number.MAX_VALUE,max:0},i={...t},n={...t},o={...t};let s=0;const r={keydown:0,input:0,render:0};function a(){1===r.keydown&&(performance.mark("keydown/end"),r.keydown=2)}function l(){performance.mark("input/start"),r.input=1,c()}function h(){1===r.input&&(performance.mark("input/end"),r.input=2)}function d(){1===r.render&&(performance.mark("render/end"),r.render=2)}function c(){setTimeout(u)}function u(){2===r.keydown&&2===r.input&&2===r.render&&(performance.mark("inputlatency/end"),performance.measure("keydown","keydown/start","keydown/end"),performance.measure("input","input/start","input/end"),performance.measure("render","render/start","render/end"),performance.measure("inputlatency","inputlatency/start","inputlatency/end"),g("keydown",t),g("input",i),g("render",n),g("inputlatency",o),s++,performance.clearMarks("keydown/start"),performance.clearMarks("keydown/end"),performance.clearMarks("input/start"),performance.clearMarks("input/end"),performance.clearMarks("render/start"),performance.clearMarks("render/end"),performance.clearMarks("inputlatency/start"),performance.clearMarks("inputlatency/end"),performance.clearMeasures("keydown"),performance.clearMeasures("input"),performance.clearMeasures("render"),performance.clearMeasures("inputlatency"),r.keydown=0,r.input=0,r.render=0)}function g(e,t){const i=performance.getEntriesByName(e)[0].duration;t.total+=i,t.min=Math.min(t.min,i),t.max=Math.max(t.max,i)}function m(e){return{average:e.total/s,max:e.max,min:e.min}}function f(e){e.total=0,e.min=Number.MAX_VALUE,e.max=0}e.onKeyDown=function(){u(),performance.mark("inputlatency/start"),performance.mark("keydown/start"),r.keydown=1,queueMicrotask(a)},e.onBeforeInput=l,e.onInput=function(){0===r.input&&l(),queueMicrotask(h)},e.onKeyUp=function(){u()},e.onSelectionChange=function(){u()},e.onRenderStart=function(){2===r.keydown&&2===r.input&&0===r.render&&(performance.mark("render/start"),r.render=1,queueMicrotask(d),c())},e.getAndClearMeasurements=function(){if(0===s)return;const e={keydown:m(t),input:m(i),render:m(n),total:m(o),sampleCount:s};return f(t),f(i),f(n),f(o),s=0,e}}(n||(n={}))},39830:(e,t,i)=>{i.d(t,{T:()=>l});var n=i(85714),o=i(24219),s=i(89599);class r extends s.JT{constructor(e){super(),this._onDidChange=this._register(new o.Q5),this.onDidChange=this._onDidChange.event,this._listener=()=>this._handleChange(e,!0),this._mediaQueryList=null,this._handleChange(e,!1)}_handleChange(e,t){var i;null===(i=this._mediaQueryList)||void 0===i||i.removeEventListener("change",this._listener),this._mediaQueryList=e.matchMedia("(resolution: ".concat(e.devicePixelRatio,"dppx)")),this._mediaQueryList.addEventListener("change",this._listener),t&&this._onDidChange.fire()}}class a extends s.JT{get value(){return this._value}constructor(e){super(),this._onDidChange=this._register(new o.Q5),this.onDidChange=this._onDidChange.event,this._value=this._getPixelRatio(e);const t=this._register(new r(e));this._register(t.onDidChange((()=>{this._value=this._getPixelRatio(e),this._onDidChange.fire(this._value)})))}_getPixelRatio(e){const t=document.createElement("canvas").getContext("2d");return(e.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)}}const l=new class{constructor(){this.mapWindowIdToPixelRatioMonitor=new Map}_getOrCreatePixelRatioMonitor(e){const t=(0,n.ZY)(e);let i=this.mapWindowIdToPixelRatioMonitor.get(t);return i||(i=(0,s.dk)(new a(e)),this.mapWindowIdToPixelRatioMonitor.set(t,i),(0,s.dk)(o.ju.once(n.ey)((e=>{let{vscodeWindowId:n}=e;n===t&&(null===i||void 0===i||i.dispose(),this.mapWindowIdToPixelRatioMonitor.delete(t))})))),i}getInstance(e){return this._getOrCreatePixelRatioMonitor(e)}}},48688:(e,t,i)=>{i.d(t,{o:()=>u,t:()=>n});var n,o=i(85714),s=i(29880),r=i(75629),a=i(30333),l=i(24219),h=i(89599),d=i(44713),c=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r};!function(e){e.Tap="-monaco-gesturetap",e.Change="-monaco-gesturechange",e.Start="-monaco-gesturestart",e.End="-monaco-gesturesend",e.Contextmenu="-monaco-gesturecontextmenu"}(n||(n={}));class u extends h.JT{constructor(){super(),this.dispatched=!1,this.targets=new d.S,this.ignoreTargets=new d.S,this.activeTouches={},this.handle=null,this._lastSetTapCountTime=0,this._register(l.ju.runAndSubscribe(o.Xo,(e=>{let{window:t,disposables:i}=e;i.add(o.nm(t.document,"touchstart",(e=>this.onTouchStart(e)),{passive:!1})),i.add(o.nm(t.document,"touchend",(e=>this.onTouchEnd(t,e)))),i.add(o.nm(t.document,"touchmove",(e=>this.onTouchMove(e)),{passive:!1}))}),{window:s.E,disposables:this._store}))}static addTarget(e){if(!u.isTouchDevice())return h.JT.None;u.INSTANCE||(u.INSTANCE=(0,h.dk)(new u));const t=u.INSTANCE.targets.push(e);return(0,h.OF)(t)}static ignoreTarget(e){if(!u.isTouchDevice())return h.JT.None;u.INSTANCE||(u.INSTANCE=(0,h.dk)(new u));const t=u.INSTANCE.ignoreTargets.push(e);return(0,h.OF)(t)}static isTouchDevice(){return"ontouchstart"in s.E||navigator.maxTouchPoints>0}dispose(){this.handle&&(this.handle.dispose(),this.handle=null),super.dispose()}onTouchStart(e){const t=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(let i=0,o=e.targetTouches.length;i=u.HOLD_DELAY&&Math.abs(l.initialPageX-r.Gb(l.rollingPageX))<30&&Math.abs(l.initialPageY-r.Gb(l.rollingPageY))<30){const e=this.newGestureEvent(n.Contextmenu,l.initialTarget);e.pageX=r.Gb(l.rollingPageX),e.pageY=r.Gb(l.rollingPageY),this.dispatchEvent(e)}else if(1===o){const t=r.Gb(l.rollingPageX),n=r.Gb(l.rollingPageY),o=r.Gb(l.rollingTimestamps)-l.rollingTimestamps[0],s=t-l.rollingPageX[0],a=n-l.rollingPageY[0],h=[...this.targets].filter((e=>l.initialTarget instanceof Node&&e.contains(l.initialTarget)));this.inertia(e,h,i,Math.abs(s)/o,s>0?1:-1,t,Math.abs(a)/o,a>0?1:-1,n)}this.dispatchEvent(this.newGestureEvent(n.End,l.initialTarget)),delete this.activeTouches[a.identifier]}this.dispatched&&(t.preventDefault(),t.stopPropagation(),this.dispatched=!1)}newGestureEvent(e,t){const i=document.createEvent("CustomEvent");return i.initEvent(e,!1,!0),i.initialTarget=t,i.tapCount=0,i}dispatchEvent(e){if(e.type===n.Tap){const t=(new Date).getTime();let i=0;i=t-this._lastSetTapCountTime>u.CLEAR_TAP_COUNT_TIME?1:2,this._lastSetTapCountTime=t,e.tapCount=i}else e.type!==n.Change&&e.type!==n.Contextmenu||(this._lastSetTapCountTime=0);if(e.initialTarget instanceof Node){for(const i of this.ignoreTargets)if(i.contains(e.initialTarget))return;const t=[];for(const i of this.targets)if(i.contains(e.initialTarget)){let n=0,o=e.initialTarget;for(;o&&o!==i;)n++,o=o.parentElement;t.push([n,i])}t.sort(((e,t)=>e[0]-t[0]));for(const[i,n]of t)n.dispatchEvent(e),this.dispatched=!0}}inertia(e,t,i,s,r,a,l,h,d){this.handle=o.jL(e,(()=>{const o=Date.now(),c=o-i;let g=0,m=0,f=!0;s+=u.SCROLL_FRICTION*c,l+=u.SCROLL_FRICTION*c,s>0&&(f=!1,g=r*s*c),l>0&&(f=!1,m=h*l*c);const p=this.newGestureEvent(n.Change);p.translationX=g,p.translationY=m,t.forEach((e=>e.dispatchEvent(p))),f||this.inertia(e,t,o,s,r,a+g,l,h,d+m)}))}onTouchMove(e){const t=Date.now();for(let i=0,o=e.changedTouches.length;i3&&(s.rollingPageX.shift(),s.rollingPageY.shift(),s.rollingTimestamps.shift()),s.rollingPageX.push(o.pageX),s.rollingPageY.push(o.pageY),s.rollingTimestamps.push(t)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}}u.SCROLL_FRICTION=-.005,u.HOLD_DELAY=700,u.CLEAR_TAP_COUNT_TIME=400,c([a.H],u,"isTouchDevice",null)},52047:(e,t,i)=>{i.d(t,{Z:()=>s});var n=i(29880),o=i(85108);function s(e,t){var i;const s=globalThis.MonacoEnvironment;if(null===s||void 0===s?void 0:s.createTrustedTypesPolicy)try{return s.createTrustedTypesPolicy(e,t)}catch(r){return void(0,o.dL)(r)}try{return null===(i=n.E.trustedTypes)||void 0===i?void 0:i.createPolicy(e,t)}catch(r){return void(0,o.dL)(r)}}},66193:(e,t,i)=>{i.d(t,{gU:()=>E,YH:()=>x,Lc:()=>I});var n=i(42606),o=i(86487),s=i(85714),r=i(48688),a=i(14561),l=i(34392),h=i(3640),d=i(39341),c=i(21687),u=i(53430),g=i(75629),m=i(24219),f=i(67925),p=i(89599),_=i(21511),v=i(71721);const b=s.$,C="selectOption.entry.template";class w{get templateId(){return C}renderTemplate(e){const t=Object.create(null);return t.root=e,t.text=s.R3(e,b(".option-text")),t.detail=s.R3(e,b(".option-detail")),t.decoratorRight=s.R3(e,b(".option-decorator-right")),t}renderElement(e,t,i){const n=i,o=e.text,s=e.detail,r=e.decoratorRight,a=e.isDisabled;n.text.textContent=o,n.detail.textContent=s||"",n.decoratorRight.innerText=r||"",a?n.root.classList.add("option-disabled"):n.root.classList.remove("option-disabled")}disposeTemplate(e){}}class y extends p.JT{constructor(e,t,i,n,o){super(),this.options=[],this._currentSelection=0,this._hasDetails=!1,this._skipLayout=!1,this._sticky=!1,this._isVisible=!1,this.styles=n,this.selectBoxOptions=o||Object.create(null),"number"!==typeof this.selectBoxOptions.minBottomMargin?this.selectBoxOptions.minBottomMargin=y.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN:this.selectBoxOptions.minBottomMargin<0&&(this.selectBoxOptions.minBottomMargin=0),this.selectElement=document.createElement("select"),this.selectElement.className="monaco-select-box monaco-select-box-dropdown-padding","string"===typeof this.selectBoxOptions.ariaLabel&&this.selectElement.setAttribute("aria-label",this.selectBoxOptions.ariaLabel),"string"===typeof this.selectBoxOptions.ariaDescription&&this.selectElement.setAttribute("aria-description",this.selectBoxOptions.ariaDescription),this._onDidSelect=new m.Q5,this._register(this._onDidSelect),this.registerListeners(),this.constructSelectDropDown(i),this.selected=t||0,e&&this.setOptions(e,t),this.initStyleSheet()}setTitle(e){!this._hover&&e?this._hover=this._register((0,l.g)((0,a.tM)("mouse"),this.selectElement,e)):this._hover&&this._hover.update(e)}getHeight(){return 22}getTemplateId(){return C}constructSelectDropDown(e){this.contextViewProvider=e,this.selectDropDownContainer=s.$(".monaco-select-box-dropdown-container"),this.selectDropDownContainer.classList.add("monaco-select-box-dropdown-padding"),this.selectionDetailsPane=s.R3(this.selectDropDownContainer,b(".select-box-details-pane"));const t=s.R3(this.selectDropDownContainer,b(".select-box-dropdown-container-width-control")),i=s.R3(t,b(".width-control-div"));this.widthControlElement=document.createElement("span"),this.widthControlElement.className="option-text-width-control",s.R3(i,this.widthControlElement),this._dropDownPosition=0,this.styleElement=s.dS(this.selectDropDownContainer),this.selectDropDownContainer.setAttribute("draggable","true"),this._register(s.nm(this.selectDropDownContainer,s.tw.DRAG_START,(e=>{s.zB.stop(e,!0)})))}registerListeners(){let e;this._register(s.mu(this.selectElement,"change",(e=>{this.selected=e.target.selectedIndex,this._onDidSelect.fire({index:e.target.selectedIndex,selected:e.target.value}),this.options[this.selected]&&this.options[this.selected].text&&this.setTitle(this.options[this.selected].text)}))),this._register(s.nm(this.selectElement,s.tw.CLICK,(e=>{s.zB.stop(e),this._isVisible?this.hideSelectDropDown(!0):this.showSelectDropDown()}))),this._register(s.nm(this.selectElement,s.tw.MOUSE_DOWN,(e=>{s.zB.stop(e)}))),this._register(s.nm(this.selectElement,"touchstart",(t=>{e=this._isVisible}))),this._register(s.nm(this.selectElement,"touchend",(t=>{s.zB.stop(t),e?this.hideSelectDropDown(!0):this.showSelectDropDown()}))),this._register(s.nm(this.selectElement,s.tw.KEY_DOWN,(e=>{const t=new d.y(e);let i=!1;_.dz?18!==t.keyCode&&16!==t.keyCode&&10!==t.keyCode&&3!==t.keyCode||(i=!0):(18===t.keyCode&&t.altKey||16===t.keyCode&&t.altKey||10===t.keyCode||3===t.keyCode)&&(i=!0),i&&(this.showSelectDropDown(),s.zB.stop(e,!0))})))}get onDidSelect(){return this._onDidSelect.event}setOptions(e,t){g.fS(this.options,e)||(this.options=e,this.selectElement.options.length=0,this._hasDetails=!1,this._cachedMaxDetailsHeight=void 0,this.options.forEach(((e,t)=>{this.selectElement.add(this.createOption(e.text,t,e.isDisabled)),"string"===typeof e.description&&(this._hasDetails=!0)}))),void 0!==t&&(this.select(t),this._currentSelection=this.selected)}setOptionsList(){var e;null===(e=this.selectList)||void 0===e||e.splice(0,this.selectList.length,this.options)}select(e){e>=0&&ethis.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.options[this.selected]&&this.options[this.selected].text&&this.setTitle(this.options[this.selected].text)}focus(){this.selectElement&&(this.selectElement.tabIndex=0,this.selectElement.focus())}blur(){this.selectElement&&(this.selectElement.tabIndex=-1,this.selectElement.blur())}setFocusable(e){this.selectElement.tabIndex=e?0:-1}render(e){this.container=e,e.classList.add("select-container"),e.appendChild(this.selectElement),this.styleSelectElement()}initStyleSheet(){const e=[];this.styles.listFocusBackground&&e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ".concat(this.styles.listFocusBackground," !important; }")),this.styles.listFocusForeground&&e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ".concat(this.styles.listFocusForeground," !important; }")),this.styles.decoratorRightForeground&&e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.focused) .option-decorator-right { color: ".concat(this.styles.decoratorRightForeground,"; }")),this.styles.selectBackground&&this.styles.selectBorder&&this.styles.selectBorder!==this.styles.selectBackground?(e.push(".monaco-select-box-dropdown-container { border: 1px solid ".concat(this.styles.selectBorder," } ")),e.push(".monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ".concat(this.styles.selectBorder," } ")),e.push(".monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ".concat(this.styles.selectBorder," } "))):this.styles.selectListBorder&&(e.push(".monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ".concat(this.styles.selectListBorder," } ")),e.push(".monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ".concat(this.styles.selectListBorder," } "))),this.styles.listHoverForeground&&e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { color: ".concat(this.styles.listHoverForeground," !important; }")),this.styles.listHoverBackground&&e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { background-color: ".concat(this.styles.listHoverBackground," !important; }")),this.styles.listFocusOutline&&e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1.6px dotted ".concat(this.styles.listFocusOutline," !important; outline-offset: -1.6px !important; }")),this.styles.listHoverOutline&&e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { outline: 1.6px dashed ".concat(this.styles.listHoverOutline," !important; outline-offset: -1.6px !important; }")),e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled.focused { background-color: transparent !important; color: inherit !important; outline: none !important; }"),e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled:hover { background-color: transparent !important; color: inherit !important; outline: none !important; }"),this.styleElement.textContent=e.join("\n")}styleSelectElement(){var e,t,i;const n=null!==(e=this.styles.selectBackground)&&void 0!==e?e:"",o=null!==(t=this.styles.selectForeground)&&void 0!==t?t:"",s=null!==(i=this.styles.selectBorder)&&void 0!==i?i:"";this.selectElement.style.backgroundColor=n,this.selectElement.style.color=o,this.selectElement.style.borderColor=s}styleList(){var e,t;const i=null!==(e=this.styles.selectBackground)&&void 0!==e?e:"",n=s.XT(this.styles.selectListBackground,i);this.selectDropDownListContainer.style.backgroundColor=n,this.selectionDetailsPane.style.backgroundColor=n;const o=null!==(t=this.styles.focusBorder)&&void 0!==t?t:"";this.selectDropDownContainer.style.outlineColor=o,this.selectDropDownContainer.style.outlineOffset="-1px",this.selectList.style(this.styles)}createOption(e,t,i){const n=document.createElement("option");return n.value=e,n.text=e,n.disabled=!!i,n}showSelectDropDown(){this.selectionDetailsPane.innerText="",this.contextViewProvider&&!this._isVisible&&(this.createSelectList(this.selectDropDownContainer),this.setOptionsList(),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:e=>this.renderSelectDropDown(e,!0),layout:()=>{this.layoutSelectDropDown()},onHide:()=>{this.selectDropDownContainer.classList.remove("visible"),this.selectElement.classList.remove("synthetic-focus")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._isVisible=!0,this.hideSelectDropDown(!1),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:e=>this.renderSelectDropDown(e),layout:()=>this.layoutSelectDropDown(),onHide:()=>{this.selectDropDownContainer.classList.remove("visible"),this.selectElement.classList.remove("synthetic-focus")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._currentSelection=this.selected,this._isVisible=!0,this.selectElement.setAttribute("aria-expanded","true"))}hideSelectDropDown(e){this.contextViewProvider&&this._isVisible&&(this._isVisible=!1,this.selectElement.setAttribute("aria-expanded","false"),e&&this.selectElement.focus(),this.contextViewProvider.hideContextView())}renderSelectDropDown(e,t){return e.appendChild(this.selectDropDownContainer),this.layoutSelectDropDown(t),{dispose:()=>{try{e.removeChild(this.selectDropDownContainer)}catch(t){}}}}measureMaxDetailsHeight(){let e=0;return this.options.forEach(((t,i)=>{this.updateDetail(i),this.selectionDetailsPane.offsetHeight>e&&(e=this.selectionDetailsPane.offsetHeight)})),e}layoutSelectDropDown(e){if(this._skipLayout)return!1;if(this.selectList){this.selectDropDownContainer.classList.add("visible");const t=s.Jj(this.selectElement),i=s.i(this.selectElement),n=s.Jj(this.selectElement).getComputedStyle(this.selectElement),o=parseFloat(n.getPropertyValue("--dropdown-padding-top"))+parseFloat(n.getPropertyValue("--dropdown-padding-bottom")),r=t.innerHeight-i.top-i.height-(this.selectBoxOptions.minBottomMargin||0),a=i.top-y.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN,l=this.selectElement.offsetWidth,h=this.setWidthControlElement(this.widthControlElement),d=Math.max(h,Math.round(l)).toString()+"px";this.selectDropDownContainer.style.width=d,this.selectList.getHTMLElement().style.height="",this.selectList.layout();let c=this.selectList.contentHeight;this._hasDetails&&void 0===this._cachedMaxDetailsHeight&&(this._cachedMaxDetailsHeight=this.measureMaxDetailsHeight());const u=this._hasDetails?this._cachedMaxDetailsHeight:0,g=c+o+u,m=Math.floor((r-o-u)/this.getHeight()),f=Math.floor((a-o-u)/this.getHeight());if(e)return!(i.top+i.height>t.innerHeight-22||i.topm&&this.options.length>m?(this._dropDownPosition=1,this.selectDropDownContainer.removeChild(this.selectDropDownListContainer),this.selectDropDownContainer.removeChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectionDetailsPane.classList.remove("border-top"),this.selectionDetailsPane.classList.add("border-bottom")):(this._dropDownPosition=0,this.selectDropDownContainer.removeChild(this.selectDropDownListContainer),this.selectDropDownContainer.removeChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectionDetailsPane.classList.remove("border-bottom"),this.selectionDetailsPane.classList.add("border-top")),!0);if(i.top+i.height>t.innerHeight-22||i.topr&&(c=m*this.getHeight())}else g>a&&(c=f*this.getHeight());return this.selectList.layout(c),this.selectList.domFocus(),this.selectList.length>0&&(this.selectList.setFocus([this.selected||0]),this.selectList.reveal(this.selectList.getFocus()[0]||0)),this._hasDetails?(this.selectList.getHTMLElement().style.height=c+o+"px",this.selectDropDownContainer.style.height=""):this.selectDropDownContainer.style.height=c+o+"px",this.updateDetail(this.selected),this.selectDropDownContainer.style.width=d,this.selectDropDownListContainer.setAttribute("tabindex","0"),this.selectElement.classList.add("synthetic-focus"),this.selectDropDownContainer.classList.add("synthetic-focus"),!0}return!1}setWidthControlElement(e){let t=0;if(e){let i=0,n=0;this.options.forEach(((e,t)=>{const o=e.detail?e.detail.length:0,s=e.decoratorRight?e.decoratorRight.length:0,r=e.text.length+o+s;r>n&&(i=t,n=r)})),e.textContent=this.options[i].text+(this.options[i].decoratorRight?this.options[i].decoratorRight+" ":""),t=s.w(e)}return t}createSelectList(e){if(this.selectList)return;this.selectDropDownListContainer=s.R3(e,b(".select-box-dropdown-list-container")),this.listRenderer=new w,this.selectList=new u.aV("SelectBoxCustom",this.selectDropDownListContainer,this,[this.listRenderer],{useShadows:!1,verticalScrollMode:3,keyboardSupport:!1,mouseSupport:!1,accessibilityProvider:{getAriaLabel:e=>{let t=e.text;return e.detail&&(t+=". ".concat(e.detail)),e.decoratorRight&&(t+=". ".concat(e.decoratorRight)),e.description&&(t+=". ".concat(e.description)),t},getWidgetAriaLabel:()=>(0,v.NC)({key:"selectBox",comment:["Behave like native select dropdown element."]},"Select Box"),getRole:()=>_.dz?"":"option",getWidgetRole:()=>"listbox"}}),this.selectBoxOptions.ariaLabel&&(this.selectList.ariaLabel=this.selectBoxOptions.ariaLabel);const t=this._register(new h.Y(this.selectDropDownListContainer,"keydown")),i=m.ju.chain(t.event,(e=>e.filter((()=>this.selectList.length>0)).map((e=>new d.y(e)))));this._register(m.ju.chain(i,(e=>e.filter((e=>3===e.keyCode))))(this.onEnter,this)),this._register(m.ju.chain(i,(e=>e.filter((e=>2===e.keyCode))))(this.onEnter,this)),this._register(m.ju.chain(i,(e=>e.filter((e=>9===e.keyCode))))(this.onEscape,this)),this._register(m.ju.chain(i,(e=>e.filter((e=>16===e.keyCode))))(this.onUpArrow,this)),this._register(m.ju.chain(i,(e=>e.filter((e=>18===e.keyCode))))(this.onDownArrow,this)),this._register(m.ju.chain(i,(e=>e.filter((e=>12===e.keyCode))))(this.onPageDown,this)),this._register(m.ju.chain(i,(e=>e.filter((e=>11===e.keyCode))))(this.onPageUp,this)),this._register(m.ju.chain(i,(e=>e.filter((e=>14===e.keyCode))))(this.onHome,this)),this._register(m.ju.chain(i,(e=>e.filter((e=>13===e.keyCode))))(this.onEnd,this)),this._register(m.ju.chain(i,(e=>e.filter((e=>e.keyCode>=21&&e.keyCode<=56||e.keyCode>=85&&e.keyCode<=113))))(this.onCharacter,this)),this._register(s.nm(this.selectList.getHTMLElement(),s.tw.POINTER_UP,(e=>this.onPointerUp(e)))),this._register(this.selectList.onMouseOver((e=>"undefined"!==typeof e.index&&this.selectList.setFocus([e.index])))),this._register(this.selectList.onDidChangeFocus((e=>this.onListFocus(e)))),this._register(s.nm(this.selectDropDownContainer,s.tw.FOCUS_OUT,(e=>{this._isVisible&&!s.jg(e.relatedTarget,this.selectDropDownContainer)&&this.onListBlur()}))),this.selectList.getHTMLElement().setAttribute("aria-label",this.selectBoxOptions.ariaLabel||""),this.selectList.getHTMLElement().setAttribute("aria-expanded","true"),this.styleList()}onPointerUp(e){if(!this.selectList.length)return;s.zB.stop(e);const t=e.target;if(!t)return;if(t.classList.contains("slider"))return;const i=t.closest(".monaco-list-row");if(!i)return;const n=Number(i.getAttribute("data-index")),o=i.classList.contains("option-disabled");n>=0&&n{for(let t=0;tthis.selected+2)this.selected+=2;else{if(t)return;this.selected++}this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0])}}onUpArrow(e){if(this.selected>0){s.zB.stop(e,!0);this.options[this.selected-1].isDisabled&&this.selected>1?this.selected-=2:this.selected--,this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0])}}onPageUp(e){s.zB.stop(e),this.selectList.focusPreviousPage(),setTimeout((()=>{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected>0&&(this.selected--,this.selectList.setFocus([this.selected])),this.selectList.reveal(this.selected),this.select(this.selected)}),1)}onHome(e){s.zB.stop(e),this.options.length<2||(this.selected=0,this.options[this.selected].isDisabled&&this.selected>1&&this.selected++,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onEnd(e){s.zB.stop(e),this.options.length<2||(this.selected=this.options.length-1,this.options[this.selected].isDisabled&&this.selected>1&&this.selected--,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onCharacter(e){const t=f.kL.toString(e.keyCode);let i=-1;for(let n=0;n{this._register(s.nm(this.selectElement,e,(e=>{this.selectElement.focus()})))})),this._register(s.mu(this.selectElement,"click",(e=>{s.zB.stop(e,!0)}))),this._register(s.mu(this.selectElement,"change",(e=>{this.selectElement.title=e.target.value,this._onDidSelect.fire({index:e.target.selectedIndex,selected:e.target.value})}))),this._register(s.mu(this.selectElement,"keydown",(e=>{let t=!1;_.dz?18!==e.keyCode&&16!==e.keyCode&&10!==e.keyCode||(t=!0):(18===e.keyCode&&e.altKey||10===e.keyCode||3===e.keyCode)&&(t=!0),t&&e.stopPropagation()})))}get onDidSelect(){return this._onDidSelect.event}setOptions(e,t){this.options&&g.fS(this.options,e)||(this.options=e,this.selectElement.options.length=0,this.options.forEach(((e,t)=>{this.selectElement.add(this.createOption(e.text,t,e.isDisabled))}))),void 0!==t&&this.select(t)}select(e){0===this.options.length?this.selected=0:e>=0&&ethis.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.selected2&&void 0!==arguments[2]?arguments[2]:{};super(),this.options=i,this._context=e||this,this._action=t,t instanceof D.aU&&this._register(t.onDidChange((e=>{this.element&&this.handleActionChangeEvent(e)})))}handleActionChangeEvent(e){void 0!==e.enabled&&this.updateEnabled(),void 0!==e.checked&&this.updateChecked(),void 0!==e.class&&this.updateClass(),void 0!==e.label&&(this.updateLabel(),this.updateTooltip()),void 0!==e.tooltip&&this.updateTooltip()}get actionRunner(){return this._actionRunner||(this._actionRunner=this._register(new D.Wi)),this._actionRunner}set actionRunner(e){this._actionRunner=e}isEnabled(){return this._action.enabled}setActionContext(e){this._context=e}render(e){const t=this.element=e;this._register(r.o.addTarget(e));const i=this.options&&this.options.draggable;i&&(e.draggable=!0,n.vU&&this._register((0,s.nm)(e,s.tw.DRAG_START,(e=>{var t;return null===(t=e.dataTransfer)||void 0===t?void 0:t.setData(o.g.TEXT,this._action.label)})))),this._register((0,s.nm)(t,r.t.Tap,(e=>this.onClick(e,!0)))),this._register((0,s.nm)(t,s.tw.MOUSE_DOWN,(e=>{i||s.zB.stop(e,!0),this._action.enabled&&0===e.button&&t.classList.add("active")}))),_.dz&&this._register((0,s.nm)(t,s.tw.CONTEXT_MENU,(e=>{0===e.button&&!0===e.ctrlKey&&this.onClick(e)}))),this._register((0,s.nm)(t,s.tw.CLICK,(e=>{s.zB.stop(e,!0),this.options&&this.options.isMenu||this.onClick(e)}))),this._register((0,s.nm)(t,s.tw.DBLCLICK,(e=>{s.zB.stop(e,!0)}))),[s.tw.MOUSE_UP,s.tw.MOUSE_OUT].forEach((e=>{this._register((0,s.nm)(t,e,(e=>{s.zB.stop(e),t.classList.remove("active")})))}))}onClick(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var i;s.zB.stop(e,!0);const n=N.Jp(this._context)?(null===(i=this.options)||void 0===i?void 0:i.useEventAsContext)?e:{preserveFocus:t}:this._context;this.actionRunner.run(this._action,n)}focus(){this.element&&(this.element.tabIndex=0,this.element.focus(),this.element.classList.add("focused"))}blur(){this.element&&(this.element.blur(),this.element.tabIndex=-1,this.element.classList.remove("focused"))}setFocusable(e){this.element&&(this.element.tabIndex=e?0:-1)}get trapsArrowNavigation(){return!1}updateEnabled(){}updateLabel(){}getClass(){return this.action.class}getTooltip(){return this.action.tooltip}updateTooltip(){var e,t,i;if(!this.element)return;const n=null!==(e=this.getTooltip())&&void 0!==e?e:"";if(this.updateAriaLabel(),null===(t=this.options.hoverDelegate)||void 0===t?void 0:t.showNativeHover)this.element.title=n;else if(this.customHover||""===n)this.customHover&&this.customHover.update(n);else{const e=null!==(i=this.options.hoverDelegate)&&void 0!==i?i:(0,a.tM)("element");this.customHover=this._store.add((0,l.g)(e,this.element,n))}}updateAriaLabel(){var e;if(this.element){const t=null!==(e=this.getTooltip())&&void 0!==e?e:"";this.element.setAttribute("aria-label",t)}}updateClass(){}updateChecked(){}dispose(){this.element&&(this.element.remove(),this.element=void 0),this._context=void 0,super.dispose()}}class E extends x{constructor(e,t,i){super(e,t,i),this.options=i,this.options.icon=void 0!==i.icon&&i.icon,this.options.label=void 0===i.label||i.label,this.cssClass=""}render(e){super.render(e),N.p_(this.element);const t=document.createElement("a");if(t.classList.add("action-label"),t.setAttribute("role",this.getDefaultAriaRole()),this.label=t,this.element.appendChild(t),this.options.label&&this.options.keybinding){const e=document.createElement("span");e.classList.add("keybinding"),e.textContent=this.options.keybinding,this.element.appendChild(e)}this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked()}getDefaultAriaRole(){return this._action.id===D.Z0.ID?"presentation":this.options.isMenu?"menuitem":"button"}focus(){this.label&&(this.label.tabIndex=0,this.label.focus())}blur(){this.label&&(this.label.tabIndex=-1)}setFocusable(e){this.label&&(this.label.tabIndex=e?0:-1)}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this.action.label)}getTooltip(){let e=null;return this.action.tooltip?e=this.action.tooltip:!this.options.label&&this.action.label&&this.options.icon&&(e=this.action.label,this.options.keybinding&&(e=v.NC({key:"titleLabel",comment:["action title","action keybinding"]},"{0} ({1})",e,this.options.keybinding))),null!==e&&void 0!==e?e:void 0}updateClass(){var e;this.cssClass&&this.label&&this.label.classList.remove(...this.cssClass.split(" ")),this.options.icon?(this.cssClass=this.getClass(),this.label&&(this.label.classList.add("codicon"),this.cssClass&&this.label.classList.add(...this.cssClass.split(" "))),this.updateEnabled()):null===(e=this.label)||void 0===e||e.classList.remove("codicon")}updateEnabled(){var e,t;this.action.enabled?(this.label&&(this.label.removeAttribute("aria-disabled"),this.label.classList.remove("disabled")),null===(e=this.element)||void 0===e||e.classList.remove("disabled")):(this.label&&(this.label.setAttribute("aria-disabled","true"),this.label.classList.add("disabled")),null===(t=this.element)||void 0===t||t.classList.add("disabled"))}updateAriaLabel(){var e;if(this.label){const t=null!==(e=this.getTooltip())&&void 0!==e?e:"";this.label.setAttribute("aria-label",t)}}updateChecked(){this.label&&(void 0!==this.action.checked?(this.label.classList.toggle("checked",this.action.checked),this.label.setAttribute("aria-checked",this.action.checked?"true":"false"),this.label.setAttribute("role","checkbox")):(this.label.classList.remove("checked"),this.label.removeAttribute("aria-checked"),this.label.setAttribute("role",this.getDefaultAriaRole())))}}class I extends x{constructor(e,t,i,n,o,s,r){super(e,t),this.selectBox=new k(i,n,o,s,r),this.selectBox.setFocusable(!1),this._register(this.selectBox),this.registerListeners()}select(e){this.selectBox.select(e)}registerListeners(){this._register(this.selectBox.onDidSelect((e=>this.runAction(e.selected,e.index))))}runAction(e,t){this.actionRunner.run(this._action,this.getActionContext(e,t))}getActionContext(e,t){return e}setFocusable(e){this.selectBox.setFocusable(e)}focus(){var e;null===(e=this.selectBox)||void 0===e||e.focus()}blur(){var e;null===(e=this.selectBox)||void 0===e||e.blur()}render(e){this.selectBox.render(e)}}},65122:(e,t,i)=>{i.d(t,{o:()=>c});var n=i(85714),o=i(39341),s=i(66193),r=i(14561),a=i(22337),l=i(24219),h=i(89599),d=i(63686);i(11316);class c extends h.JT{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var i,d,c,u,g,m,f;let p,_;switch(super(),this._actionRunnerDisposables=this._register(new h.SL),this.viewItemDisposables=this._register(new h.b2),this.triggerKeyDown=!1,this.focusable=!0,this._onDidBlur=this._register(new l.Q5),this.onDidBlur=this._onDidBlur.event,this._onDidCancel=this._register(new l.Q5({onWillAddFirstListener:()=>this.cancelHasListener=!0})),this.onDidCancel=this._onDidCancel.event,this.cancelHasListener=!1,this._onDidRun=this._register(new l.Q5),this.onDidRun=this._onDidRun.event,this._onWillRun=this._register(new l.Q5),this.onWillRun=this._onWillRun.event,this.options=t,this._context=null!==(i=t.context)&&void 0!==i?i:null,this._orientation=null!==(d=this.options.orientation)&&void 0!==d?d:0,this._triggerKeys={keyDown:null!==(u=null===(c=this.options.triggerKeys)||void 0===c?void 0:c.keyDown)&&void 0!==u&&u,keys:null!==(m=null===(g=this.options.triggerKeys)||void 0===g?void 0:g.keys)&&void 0!==m?m:[3,10]},this._hoverDelegate=null!==(f=t.hoverDelegate)&&void 0!==f?f:this._register((0,r.p0)()),this.options.actionRunner?this._actionRunner=this.options.actionRunner:(this._actionRunner=new a.Wi,this._actionRunnerDisposables.add(this._actionRunner)),this._actionRunnerDisposables.add(this._actionRunner.onDidRun((e=>this._onDidRun.fire(e)))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun((e=>this._onWillRun.fire(e)))),this.viewItems=[],this.focusedItem=void 0,this.domNode=document.createElement("div"),this.domNode.className="monaco-action-bar",this._orientation){case 0:p=[15],_=[17];break;case 1:p=[16],_=[18],this.domNode.className+=" vertical"}this._register(n.nm(this.domNode,n.tw.KEY_DOWN,(e=>{const t=new o.y(e);let i=!0;const n="number"===typeof this.focusedItem?this.viewItems[this.focusedItem]:void 0;p&&(t.equals(p[0])||t.equals(p[1]))?i=this.focusPrevious():_&&(t.equals(_[0])||t.equals(_[1]))?i=this.focusNext():t.equals(9)&&this.cancelHasListener?this._onDidCancel.fire():t.equals(14)?i=this.focusFirst():t.equals(13)?i=this.focusLast():t.equals(2)&&n instanceof s.YH&&n.trapsArrowNavigation?i=this.focusNext():this.isTriggerKeyEvent(t)?this._triggerKeys.keyDown?this.doTrigger(t):this.triggerKeyDown=!0:i=!1,i&&(t.preventDefault(),t.stopPropagation())}))),this._register(n.nm(this.domNode,n.tw.KEY_UP,(e=>{const t=new o.y(e);this.isTriggerKeyEvent(t)?(!this._triggerKeys.keyDown&&this.triggerKeyDown&&(this.triggerKeyDown=!1,this.doTrigger(t)),t.preventDefault(),t.stopPropagation()):(t.equals(2)||t.equals(1026)||t.equals(16)||t.equals(18)||t.equals(15)||t.equals(17))&&this.updateFocusedItem()}))),this.focusTracker=this._register(n.go(this.domNode)),this._register(this.focusTracker.onDidBlur((()=>{n.vY()!==this.domNode&&n.jg(n.vY(),this.domNode)||(this._onDidBlur.fire(),this.previouslyFocusedItem=this.focusedItem,this.focusedItem=void 0,this.triggerKeyDown=!1)}))),this._register(this.focusTracker.onDidFocus((()=>this.updateFocusedItem()))),this.actionsList=document.createElement("ul"),this.actionsList.className="actions-container",this.options.highlightToggledItems&&this.actionsList.classList.add("highlight-toggled"),this.actionsList.setAttribute("role",this.options.ariaRole||"toolbar"),this.options.ariaLabel&&this.actionsList.setAttribute("aria-label",this.options.ariaLabel),this.domNode.appendChild(this.actionsList),e.appendChild(this.domNode)}refreshRole(){this.length()>=1?this.actionsList.setAttribute("role",this.options.ariaRole||"toolbar"):this.actionsList.setAttribute("role","presentation")}setFocusable(e){if(this.focusable=e,this.focusable){const e=this.viewItems.find((e=>e instanceof s.YH&&e.isEnabled()));e instanceof s.YH&&e.setFocusable(!0)}else this.viewItems.forEach((e=>{e instanceof s.YH&&e.setFocusable(!1)}))}isTriggerKeyEvent(e){let t=!1;return this._triggerKeys.keys.forEach((i=>{t=t||e.equals(i)})),t}updateFocusedItem(){var e,t;for(let i=0;it.setActionContext(e)))}get actionRunner(){return this._actionRunner}set actionRunner(e){this._actionRunner=e,this._actionRunnerDisposables.clear(),this._actionRunnerDisposables.add(this._actionRunner.onDidRun((e=>this._onDidRun.fire(e)))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun((e=>this._onWillRun.fire(e)))),this.viewItems.forEach((t=>t.actionRunner=e))}getContainer(){return this.domNode}getAction(e){var t;if("number"===typeof e)return null===(t=this.viewItems[e])||void 0===t?void 0:t.action;if(e instanceof HTMLElement){for(;e.parentElement!==this.actionsList;){if(!e.parentElement)return;e=e.parentElement}for(let t=0;t1&&void 0!==arguments[1]?arguments[1]:{};const i=Array.isArray(e)?e:[e];let o=d.hj(t.index)?t.index:null;i.forEach((e=>{const i=document.createElement("li");let r;i.className="action-item",i.setAttribute("role","presentation");const a={hoverDelegate:this._hoverDelegate,...t};this.options.actionViewItemProvider&&(r=this.options.actionViewItemProvider(e,a)),r||(r=new s.gU(this.context,e,a)),this.options.allowContextMenu||this.viewItemDisposables.set(r,n.nm(i,n.tw.CONTEXT_MENU,(e=>{n.zB.stop(e,!0)}))),r.actionRunner=this._actionRunner,r.setActionContext(this.context),r.render(i),this.focusable&&r instanceof s.YH&&0===this.viewItems.length&&r.setFocusable(!0),null===o||o<0||o>=this.actionsList.children.length?(this.actionsList.appendChild(i),this.viewItems.push(r)):(this.actionsList.insertBefore(i,this.actionsList.children[o]),this.viewItems.splice(o,0,r),o++)})),"number"===typeof this.focusedItem&&this.focus(this.focusedItem),this.refreshRole()}clear(){this.isEmpty()||(this.viewItems=(0,h.B9)(this.viewItems),this.viewItemDisposables.clearAndDisposeAll(),n.PO(this.actionsList),this.refreshRole())}length(){return this.viewItems.length}isEmpty(){return 0===this.viewItems.length}focus(e){let t,i=!1;if(void 0===e?i=!0:"number"===typeof e?t=e:"boolean"===typeof e&&(i=e),i&&"undefined"===typeof this.focusedItem){const e=this.viewItems.findIndex((e=>e.isEnabled()));this.focusedItem=-1===e?void 0:e,this.updateFocus(void 0,void 0,!0)}else void 0!==t&&(this.focusedItem=t),this.updateFocus(void 0,void 0,!0)}focusFirst(){return this.focusedItem=this.length()-1,this.focusNext(!0)}focusLast(){return this.focusedItem=0,this.focusPrevious(!0)}focusNext(e){if("undefined"===typeof this.focusedItem)this.focusedItem=this.viewItems.length-1;else if(this.viewItems.length<=1)return!1;const t=this.focusedItem;let i;do{if(!e&&this.options.preventLoopNavigation&&this.focusedItem+1>=this.viewItems.length)return this.focusedItem=t,!1;this.focusedItem=(this.focusedItem+1)%this.viewItems.length,i=this.viewItems[this.focusedItem]}while(this.focusedItem!==t&&(this.options.focusOnlyEnabledItems&&!i.isEnabled()||i.action.id===a.Z0.ID));return this.updateFocus(),!0}focusPrevious(e){if("undefined"===typeof this.focusedItem)this.focusedItem=0;else if(this.viewItems.length<=1)return!1;const t=this.focusedItem;let i;do{if(this.focusedItem=this.focusedItem-1,this.focusedItem<0){if(!e&&this.options.preventLoopNavigation)return this.focusedItem=t,!1;this.focusedItem=this.viewItems.length-1}i=this.viewItems[this.focusedItem]}while(this.focusedItem!==t&&(this.options.focusOnlyEnabledItems&&!i.isEnabled()||i.action.id===a.Z0.ID));return this.updateFocus(!0),!0}updateFocus(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];var n,o;"undefined"===typeof this.focusedItem&&this.actionsList.focus({preventScroll:t}),void 0!==this.previouslyFocusedItem&&this.previouslyFocusedItem!==this.focusedItem&&(null===(n=this.viewItems[this.previouslyFocusedItem])||void 0===n||n.blur());const s=void 0!==this.focusedItem?this.viewItems[this.focusedItem]:void 0;if(s){let n=!0;d.mf(s.focus)||(n=!1),this.options.focusOnlyEnabledItems&&d.mf(s.isEnabled)&&!s.isEnabled()&&(n=!1),s.action.id===a.Z0.ID&&(n=!1),n?(i||this.previouslyFocusedItem!==this.focusedItem)&&(s.focus(e),this.previouslyFocusedItem=this.focusedItem):(this.actionsList.focus({preventScroll:t}),this.previouslyFocusedItem=void 0),n&&(null===(o=s.showHover)||void 0===o||o.call(s))}}doTrigger(e){if("undefined"===typeof this.focusedItem)return;const t=this.viewItems[this.focusedItem];if(t instanceof s.YH){const i=null===t._context||void 0===t._context?e:t._context;this.run(t._action,i)}}async run(e,t){await this._actionRunner.run(e,t)}dispose(){this._context=void 0,this.viewItems=(0,h.B9)(this.viewItems),this.getContainer().remove(),super.dispose()}}},70036:(e,t,i)=>{i.d(t,{Z9:()=>c,wW:()=>d,i7:()=>u});var n=i(85714);const o=2e4;let s,r,a,l,h;function d(e){s=document.createElement("div"),s.className="monaco-aria-container";const t=()=>{const e=document.createElement("div");return e.className="monaco-alert",e.setAttribute("role","alert"),e.setAttribute("aria-atomic","true"),s.appendChild(e),e};r=t(),a=t();const i=()=>{const e=document.createElement("div");return e.className="monaco-status",e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),s.appendChild(e),e};l=i(),h=i(),e.appendChild(s)}function c(e){s&&(r.textContent!==e?(n.PO(a),g(r,e)):(n.PO(r),g(a,e)))}function u(e){s&&(l.textContent!==e?(n.PO(h),g(l,e)):(n.PO(l),g(h,e)))}function g(e,t){n.PO(e),t.length>o&&(t=t.substr(0,o)),e.textContent=t,e.style.visibility="hidden",e.style.visibility="visible"}},56925:(e,t,i)=>{i.d(t,{z:()=>p});var n=i(85714),o=i(33960),s=i(39341),r=i(21687),a=i(48688),l=i(14561),h=i(34392),d=i(76272),c=i(89652),u=i(24219),g=i(32936),m=i(89599),f=i(62502);c.Il.white.toString(),c.Il.white.toString();class p extends m.JT{get onDidClick(){return this._onDidClick.event}constructor(e,t){super(),this._label="",this._onDidClick=this._register(new u.Q5),this._onDidEscape=this._register(new u.Q5),this.options=t,this._element=document.createElement("a"),this._element.classList.add("monaco-button"),this._element.tabIndex=0,this._element.setAttribute("role","button"),this._element.classList.toggle("secondary",!!t.secondary);const i=t.secondary?t.buttonSecondaryBackground:t.buttonBackground,o=t.secondary?t.buttonSecondaryForeground:t.buttonForeground;this._element.style.color=o||"",this._element.style.backgroundColor=i||"",t.supportShortLabel&&(this._labelShortElement=document.createElement("div"),this._labelShortElement.classList.add("monaco-button-label-short"),this._element.appendChild(this._labelShortElement),this._labelElement=document.createElement("div"),this._labelElement.classList.add("monaco-button-label"),this._element.appendChild(this._labelElement),this._element.classList.add("monaco-text-button-with-short-label")),"string"===typeof t.title&&this.setTitle(t.title),"string"===typeof t.ariaLabel&&this._element.setAttribute("aria-label",t.ariaLabel),e.appendChild(this._element),this._register(a.o.addTarget(this._element)),[n.tw.CLICK,a.t.Tap].forEach((e=>{this._register((0,n.nm)(this._element,e,(e=>{this.enabled?this._onDidClick.fire(e):n.zB.stop(e)})))})),this._register((0,n.nm)(this._element,n.tw.KEY_DOWN,(e=>{const t=new s.y(e);let i=!1;this.enabled&&(t.equals(3)||t.equals(10))?(this._onDidClick.fire(e),i=!0):t.equals(9)&&(this._onDidEscape.fire(e),this._element.blur(),i=!0),i&&n.zB.stop(t,!0)}))),this._register((0,n.nm)(this._element,n.tw.MOUSE_OVER,(e=>{this._element.classList.contains("disabled")||this.updateBackground(!0)}))),this._register((0,n.nm)(this._element,n.tw.MOUSE_OUT,(e=>{this.updateBackground(!1)}))),this.focusTracker=this._register((0,n.go)(this._element)),this._register(this.focusTracker.onDidFocus((()=>{this.enabled&&this.updateBackground(!0)}))),this._register(this.focusTracker.onDidBlur((()=>{this.enabled&&this.updateBackground(!1)})))}dispose(){super.dispose(),this._element.remove()}getContentElements(e){const t=[];for(let i of(0,d.T)(e))if("string"===typeof i){if(i=i.trim(),""===i)continue;const e=document.createElement("span");e.textContent=i,t.push(e)}else t.push(i);return t}updateBackground(e){let t;t=this.options.secondary?e?this.options.buttonSecondaryHoverBackground:this.options.buttonSecondaryBackground:e?this.options.buttonHoverBackground:this.options.buttonBackground,t&&(this._element.style.backgroundColor=t)}get element(){return this._element}set label(e){var t;if(this._label===e)return;if((0,g.Fr)(this._label)&&(0,g.Fr)(e)&&(0,g.g_)(this._label,e))return;this._element.classList.add("monaco-text-button");const i=this.options.supportShortLabel?this._labelElement:this._element;if((0,g.Fr)(e)){const s=(0,r.ap)(e,{inline:!0});s.dispose();const a=null===(t=s.element.querySelector("p"))||void 0===t?void 0:t.innerHTML;if(a){const e=(0,o.Nw)(a,{ADD_TAGS:["b","i","u","code","span"],ALLOWED_ATTR:["class"],RETURN_TRUSTED_TYPE:!0});i.innerHTML=e}else(0,n.mc)(i)}else this.options.supportIcons?(0,n.mc)(i,...this.getContentElements(e)):i.textContent=e;let s="";"string"===typeof this.options.title?s=this.options.title:this.options.title&&(s=(0,r.et)(e)),this.setTitle(s),"string"===typeof this.options.ariaLabel?this._element.setAttribute("aria-label",this.options.ariaLabel):this.options.ariaLabel&&this._element.setAttribute("aria-label",s),this._label=e}get label(){return this._label}set icon(e){this._element.classList.add(...f.k.asClassNameArray(e))}set enabled(e){e?(this._element.classList.remove("disabled"),this._element.setAttribute("aria-disabled",String(!1)),this._element.tabIndex=0):(this._element.classList.add("disabled"),this._element.setAttribute("aria-disabled",String(!0)))}get enabled(){return!this._element.classList.contains("disabled")}setTitle(e){var t;this._hover||""===e?this._hover&&this._hover.update(e):this._hover=this._register((0,h.g)(null!==(t=this.options.hoverDelegate)&&void 0!==t?t:(0,l.tM)("mouse"),this._element,e))}}},87699:(e,t,i)=>{i.d(t,{Z:()=>s});var n=i(85714),o=i(25085);class s{constructor(e,t,i){this.options=t,this.styles=i,this.count=0,this.element=(0,n.R3)(e,(0,n.$)(".monaco-count-badge")),this.countFormat=this.options.countFormat||"{0}",this.titleFormat=this.options.titleFormat||"",this.setCount(this.options.count||0)}setCount(e){this.count=e,this.render()}setTitleFormat(e){this.titleFormat=e,this.render()}render(){var e,t;this.element.textContent=(0,o.WU)(this.countFormat,this.count),this.element.title=(0,o.WU)(this.titleFormat,this.count),this.element.style.backgroundColor=null!==(e=this.styles.badgeBackground)&&void 0!==e?e:"",this.element.style.color=null!==(t=this.styles.badgeForeground)&&void 0!==t?t:"",this.styles.badgeBorder&&(this.element.style.border="1px solid ".concat(this.styles.badgeBorder))}}},754:(e,t,i)=>{i.d(t,{C:()=>g});var n=i(85714),o=i(66193),s=i(39341),r=i(48688),a=i(22337),l=i(24219);class h extends a.Wi{constructor(e,t){super(),this._onDidChangeVisibility=this._register(new l.Q5),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this._element=(0,n.R3)(e,(0,n.$)(".monaco-dropdown")),this._label=(0,n.R3)(this._element,(0,n.$)(".dropdown-label"));let i=t.labelRenderer;i||(i=e=>(e.textContent=t.label||"",null));for(const s of[n.tw.CLICK,n.tw.MOUSE_DOWN,r.t.Tap])this._register((0,n.nm)(this.element,s,(e=>n.zB.stop(e,!0))));for(const s of[n.tw.MOUSE_DOWN,r.t.Tap])this._register((0,n.nm)(this._label,s,(e=>{(0,n.N5)(e)&&(e.detail>1||0!==e.button)||(this.visible?this.hide():this.show())})));this._register((0,n.nm)(this._label,n.tw.KEY_UP,(e=>{const t=new s.y(e);(t.equals(3)||t.equals(10))&&(n.zB.stop(e,!0),this.visible?this.hide():this.show())})));const o=i(this._label);o&&this._register(o),this._register(r.o.addTarget(this._label))}get element(){return this._element}show(){this.visible||(this.visible=!0,this._onDidChangeVisibility.fire(!0))}hide(){this.visible&&(this.visible=!1,this._onDidChangeVisibility.fire(!1))}dispose(){super.dispose(),this.hide(),this.boxContainer&&(this.boxContainer.remove(),this.boxContainer=void 0),this.contents&&(this.contents.remove(),this.contents=void 0),this._label&&(this._label.remove(),this._label=void 0)}}class d extends h{constructor(e,t){super(e,t),this._options=t,this._actions=[],this.actions=t.actions||[]}set menuOptions(e){this._menuOptions=e}get menuOptions(){return this._menuOptions}get actions(){return this._options.actionProvider?this._options.actionProvider.getActions():this._actions}set actions(e){this._actions=e}show(){super.show(),this.element.classList.add("active"),this._options.contextMenuProvider.showContextMenu({getAnchor:()=>this.element,getActions:()=>this.actions,getActionsContext:()=>this.menuOptions?this.menuOptions.context:null,getActionViewItem:(e,t)=>this.menuOptions&&this.menuOptions.actionViewItemProvider?this.menuOptions.actionViewItemProvider(e,t):void 0,getKeyBinding:e=>this.menuOptions&&this.menuOptions.getKeyBinding?this.menuOptions.getKeyBinding(e):void 0,getMenuClassName:()=>this._options.menuClassName||"",onHide:()=>this.onHide(),actionRunner:this.menuOptions?this.menuOptions.actionRunner:void 0,anchorAlignment:this.menuOptions?this.menuOptions.anchorAlignment:0,domForShadowRoot:this._options.menuAsChild?this.element:void 0,skipTelemetry:this._options.skipTelemetry})}hide(){super.hide()}onHide(){this.hide(),this.element.classList.remove("active")}}var c=i(34392),u=i(14561);class g extends o.YH{constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Object.create(null);super(null,e,n),this.actionItem=null,this._onDidChangeVisibility=this._register(new l.Q5),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this.menuActionsOrProvider=t,this.contextMenuProvider=i,this.options=n,this.options.actionRunner&&(this.actionRunner=this.options.actionRunner)}render(e){this.actionItem=e;const t=Array.isArray(this.menuActionsOrProvider),i={contextMenuProvider:this.contextMenuProvider,labelRenderer:e=>{var t;this.element=(0,n.R3)(e,(0,n.$)("a.action-label"));let i=[];return"string"===typeof this.options.classNames?i=this.options.classNames.split(/\s+/g).filter((e=>!!e)):this.options.classNames&&(i=this.options.classNames),i.find((e=>"icon"===e))||i.push("codicon"),this.element.classList.add(...i),this.element.setAttribute("role","button"),this.element.setAttribute("aria-haspopup","true"),this.element.setAttribute("aria-expanded","false"),this._action.label&&this._register((0,c.g)(null!==(t=this.options.hoverDelegate)&&void 0!==t?t:(0,u.tM)("mouse"),this.element,this._action.label)),this.element.ariaLabel=this._action.label||"",null},menuAsChild:this.options.menuAsChild,actions:t?this.menuActionsOrProvider:void 0,actionProvider:t?void 0:this.menuActionsOrProvider,skipTelemetry:this.options.skipTelemetry};if(this.dropdownMenu=this._register(new d(e,i)),this._register(this.dropdownMenu.onDidChangeVisibility((e=>{var t;null===(t=this.element)||void 0===t||t.setAttribute("aria-expanded","".concat(e)),this._onDidChangeVisibility.fire(e)}))),this.dropdownMenu.menuOptions={actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,getKeyBinding:this.options.keybindingProvider,context:this._context},this.options.anchorAlignmentProvider){const e=this;this.dropdownMenu.menuOptions={...this.dropdownMenu.menuOptions,get anchorAlignment(){return e.options.anchorAlignmentProvider()}}}this.updateTooltip(),this.updateEnabled()}getTooltip(){let e=null;return this.action.tooltip?e=this.action.tooltip:this.action.label&&(e=this.action.label),null!==e&&void 0!==e?e:void 0}setActionContext(e){super.setActionContext(e),this.dropdownMenu&&(this.dropdownMenu.menuOptions?this.dropdownMenu.menuOptions.context=e:this.dropdownMenu.menuOptions={context:e})}show(){var e;null===(e=this.dropdownMenu)||void 0===e||e.show()}updateEnabled(){var e,t;const i=!this.action.enabled;null===(e=this.actionItem)||void 0===e||e.classList.toggle("disabled",i),null===(t=this.element)||void 0===t||t.classList.toggle("disabled",i)}}},51459:(e,t,i)=>{i.d(t,{V:()=>u});var n=i(85714),o=i(14456),s=i(92707),r=i(74812),a=i(24219),l=(i(35542),i(71721)),h=i(89599),d=i(14561);const c=l.NC("defaultLabel","input");class u extends r.${constructor(e,t,i){super(),this.fixFocusOnOptionClickEnabled=!0,this.imeSessionInProgress=!1,this.additionalTogglesDisposables=this._register(new h.XK),this.additionalToggles=[],this._onDidOptionChange=this._register(new a.Q5),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new a.Q5),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new a.Q5),this.onMouseDown=this._onMouseDown.event,this._onInput=this._register(new a.Q5),this._onKeyUp=this._register(new a.Q5),this._onCaseSensitiveKeyDown=this._register(new a.Q5),this.onCaseSensitiveKeyDown=this._onCaseSensitiveKeyDown.event,this._onRegexKeyDown=this._register(new a.Q5),this.onRegexKeyDown=this._onRegexKeyDown.event,this._lastHighlightFindOptions=0,this.placeholder=i.placeholder||"",this.validation=i.validation,this.label=i.label||c,this.showCommonFindToggles=!!i.showCommonFindToggles;const r=i.appendCaseSensitiveLabel||"",l=i.appendWholeWordsLabel||"",u=i.appendRegexLabel||"",g=i.history||[],m=!!i.flexibleHeight,f=!!i.flexibleWidth,p=i.flexibleMaxHeight;this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new s.pG(this.domNode,t,{placeholder:this.placeholder||"",ariaLabel:this.label||"",validationOptions:{validation:this.validation},history:g,showHistoryHint:i.showHistoryHint,flexibleHeight:m,flexibleWidth:f,flexibleMaxHeight:p,inputBoxStyles:i.inputBoxStyles}));const _=this._register((0,d.p0)());if(this.showCommonFindToggles){this.regex=this._register(new o.eH({appendTitle:u,isChecked:!1,hoverDelegate:_,...i.toggleStyles})),this._register(this.regex.onChange((e=>{this._onDidOptionChange.fire(e),!e&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()}))),this._register(this.regex.onKeyDown((e=>{this._onRegexKeyDown.fire(e)}))),this.wholeWords=this._register(new o.Qx({appendTitle:l,isChecked:!1,hoverDelegate:_,...i.toggleStyles})),this._register(this.wholeWords.onChange((e=>{this._onDidOptionChange.fire(e),!e&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()}))),this.caseSensitive=this._register(new o.rk({appendTitle:r,isChecked:!1,hoverDelegate:_,...i.toggleStyles})),this._register(this.caseSensitive.onChange((e=>{this._onDidOptionChange.fire(e),!e&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()}))),this._register(this.caseSensitive.onKeyDown((e=>{this._onCaseSensitiveKeyDown.fire(e)})));const e=[this.caseSensitive.domNode,this.wholeWords.domNode,this.regex.domNode];this.onkeydown(this.domNode,(t=>{if(t.equals(15)||t.equals(17)||t.equals(9)){const i=e.indexOf(this.domNode.ownerDocument.activeElement);if(i>=0){let o=-1;t.equals(17)?o=(i+1)%e.length:t.equals(15)&&(o=0===i?e.length-1:i-1),t.equals(9)?(e[i].blur(),this.inputBox.focus()):o>=0&&e[o].focus(),n.zB.stop(t,!0)}}}))}this.controls=document.createElement("div"),this.controls.className="controls",this.controls.style.display=this.showCommonFindToggles?"":"none",this.caseSensitive&&this.controls.append(this.caseSensitive.domNode),this.wholeWords&&this.controls.appendChild(this.wholeWords.domNode),this.regex&&this.controls.appendChild(this.regex.domNode),this.setAdditionalToggles(null===i||void 0===i?void 0:i.additionalToggles),this.controls&&this.domNode.appendChild(this.controls),null===e||void 0===e||e.appendChild(this.domNode),this._register(n.nm(this.inputBox.inputElement,"compositionstart",(e=>{this.imeSessionInProgress=!0}))),this._register(n.nm(this.inputBox.inputElement,"compositionend",(e=>{this.imeSessionInProgress=!1,this._onInput.fire()}))),this.onkeydown(this.inputBox.inputElement,(e=>this._onKeyDown.fire(e))),this.onkeyup(this.inputBox.inputElement,(e=>this._onKeyUp.fire(e))),this.oninput(this.inputBox.inputElement,(e=>this._onInput.fire())),this.onmousedown(this.inputBox.inputElement,(e=>this._onMouseDown.fire(e)))}get onDidChange(){return this.inputBox.onDidChange}layout(e){this.inputBox.layout(),this.updateInputBoxPadding(e.collapsedFindWidget)}enable(){var e,t,i;this.domNode.classList.remove("disabled"),this.inputBox.enable(),null===(e=this.regex)||void 0===e||e.enable(),null===(t=this.wholeWords)||void 0===t||t.enable(),null===(i=this.caseSensitive)||void 0===i||i.enable();for(const n of this.additionalToggles)n.enable()}disable(){var e,t,i;this.domNode.classList.add("disabled"),this.inputBox.disable(),null===(e=this.regex)||void 0===e||e.disable(),null===(t=this.wholeWords)||void 0===t||t.disable(),null===(i=this.caseSensitive)||void 0===i||i.disable();for(const n of this.additionalToggles)n.disable()}setFocusInputOnOptionClick(e){this.fixFocusOnOptionClickEnabled=e}setEnabled(e){e?this.enable():this.disable()}setAdditionalToggles(e){for(const t of this.additionalToggles)t.domNode.remove();this.additionalToggles=[],this.additionalTogglesDisposables.value=new h.SL;for(const t of null!==e&&void 0!==e?e:[])this.additionalTogglesDisposables.value.add(t),this.controls.appendChild(t.domNode),this.additionalTogglesDisposables.value.add(t.onChange((e=>{this._onDidOptionChange.fire(e),!e&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus()}))),this.additionalToggles.push(t);this.additionalToggles.length>0&&(this.controls.style.display=""),this.updateInputBoxPadding()}updateInputBoxPadding(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];var t,i,n,o,s,r;this.inputBox.paddingRight=e?0:(null!==(i=null===(t=this.caseSensitive)||void 0===t?void 0:t.width())&&void 0!==i?i:0)+(null!==(o=null===(n=this.wholeWords)||void 0===n?void 0:n.width())&&void 0!==o?o:0)+(null!==(r=null===(s=this.regex)||void 0===s?void 0:s.width())&&void 0!==r?r:0)+this.additionalToggles.reduce(((e,t)=>e+t.width()),0)}getValue(){return this.inputBox.value}setValue(e){this.inputBox.value!==e&&(this.inputBox.value=e)}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getCaseSensitive(){var e,t;return null!==(t=null===(e=this.caseSensitive)||void 0===e?void 0:e.checked)&&void 0!==t&&t}setCaseSensitive(e){this.caseSensitive&&(this.caseSensitive.checked=e)}getWholeWords(){var e,t;return null!==(t=null===(e=this.wholeWords)||void 0===e?void 0:e.checked)&&void 0!==t&&t}setWholeWords(e){this.wholeWords&&(this.wholeWords.checked=e)}getRegex(){var e,t;return null!==(t=null===(e=this.regex)||void 0===e?void 0:e.checked)&&void 0!==t&&t}setRegex(e){this.regex&&(this.regex.checked=e,this.validate())}focusOnCaseSensitive(){var e;null===(e=this.caseSensitive)||void 0===e||e.focus()}highlightFindOptions(){this.domNode.classList.remove("highlight-"+this._lastHighlightFindOptions),this._lastHighlightFindOptions=1-this._lastHighlightFindOptions,this.domNode.classList.add("highlight-"+this._lastHighlightFindOptions)}validate(){this.inputBox.validate()}showMessage(e){this.inputBox.showMessage(e)}clearMessage(){this.inputBox.hideMessage()}}},14456:(e,t,i)=>{i.d(t,{Qx:()=>c,eH:()=>u,rk:()=>d});var n=i(14561),o=i(79242),s=i(62974),r=i(71721);const a=r.NC("caseDescription","Match Case"),l=r.NC("wordsDescription","Match Whole Word"),h=r.NC("regexDescription","Use Regular Expression");class d extends o.Z{constructor(e){var t;super({icon:s.l.caseSensitive,title:a+e.appendTitle,isChecked:e.isChecked,hoverDelegate:null!==(t=e.hoverDelegate)&&void 0!==t?t:(0,n.tM)("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class c extends o.Z{constructor(e){var t;super({icon:s.l.wholeWord,title:l+e.appendTitle,isChecked:e.isChecked,hoverDelegate:null!==(t=e.hoverDelegate)&&void 0!==t?t:(0,n.tM)("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class u extends o.Z{constructor(e){var t;super({icon:s.l.regex,title:h+e.appendTitle,isChecked:e.isChecked,hoverDelegate:null!==(t=e.hoverDelegate)&&void 0!==t?t:(0,n.tM)("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}},81878:(e,t,i)=>{i.d(t,{q:()=>h});var n=i(85714),o=i(14561),s=i(34392),r=i(76272),a=i(89599),l=i(10451);class h extends a.JT{constructor(e,t){var i;super(),this.options=t,this.text="",this.title="",this.highlights=[],this.didEverRender=!1,this.supportIcons=null!==(i=null===t||void 0===t?void 0:t.supportIcons)&&void 0!==i&&i,this.domNode=n.R3(e,n.$("span.monaco-highlighted-label"))}get element(){return this.domNode}set(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";e||(e=""),(arguments.length>3?arguments[3]:void 0)&&(e=h.escapeNewLines(e,t)),this.didEverRender&&this.text===e&&this.title===i&&l.fS(this.highlights,t)||(this.text=e,this.title=i,this.highlights=t,this.render())}render(){var e,t,i,a;const l=[];let h=0;for(const o of this.highlights){if(o.end===o.start)continue;if(h{n="\r\n"===e?-1:0,o+=i;for(const i of t)i.end<=o||(i.start>=o&&(i.start+=n),i.end>=o&&(i.end+=n));return i+=n,"\u23ce"}))}}},14561:(e,t,i)=>{i.d(t,{p0:()=>h,rM:()=>a,tM:()=>l});var n=i(73187);let o=()=>({get delay(){return-1},dispose:()=>{},showHover:()=>{}});const s=new n.o((()=>o("mouse",!1))),r=new n.o((()=>o("element",!1)));function a(e){o=e}function l(e){return"element"===e?r.value:s.value}function h(){return o("element",!0)}},89883:(e,t,i)=>{i.d(t,{Sr:()=>d,c8:()=>h,uX:()=>c});var n=i(85714),o=i(39341),s=i(66561),r=i(89599),a=i(71721);const l=n.$;class h extends r.JT{constructor(){super(),this.containerDomNode=document.createElement("div"),this.containerDomNode.className="monaco-hover",this.containerDomNode.tabIndex=0,this.containerDomNode.setAttribute("role","tooltip"),this.contentsDomNode=document.createElement("div"),this.contentsDomNode.className="monaco-hover-content",this.scrollbar=this._register(new s.s$(this.contentsDomNode,{consumeMouseWheelIfScrollbarIsNeeded:!0})),this.containerDomNode.appendChild(this.scrollbar.getDomNode())}onContentsChanged(){this.scrollbar.scanDomNode()}}class d extends r.JT{static render(e,t,i){return new d(e,t,i)}constructor(e,t,i){super(),this.actionContainer=n.R3(e,l("div.action-container")),this.actionContainer.setAttribute("tabindex","0"),this.action=n.R3(this.actionContainer,l("a.action")),this.action.setAttribute("role","button"),t.iconClass&&n.R3(this.action,l("span.icon.".concat(t.iconClass)));n.R3(this.action,l("span")).textContent=i?"".concat(t.label," (").concat(i,")"):t.label,this._register(n.nm(this.actionContainer,n.tw.CLICK,(e=>{e.stopPropagation(),e.preventDefault(),t.run(this.actionContainer)}))),this._register(n.nm(this.actionContainer,n.tw.KEY_DOWN,(e=>{const i=new o.y(e);(i.equals(3)||i.equals(10))&&(e.stopPropagation(),e.preventDefault(),t.run(this.actionContainer))}))),this.setEnabled(!0)}setEnabled(e){e?(this.actionContainer.classList.remove("disabled"),this.actionContainer.removeAttribute("aria-disabled")):(this.actionContainer.classList.add("disabled"),this.actionContainer.setAttribute("aria-disabled","true"))}}function c(e,t){return e&&t?(0,a.NC)("acessibleViewHint","Inspect this in the accessible view with {0}.",t):e?(0,a.NC)("acessibleViewHintNoKbOpen","Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding."):""}},34392:(e,t,i)=>{i.d(t,{O:()=>c,g:()=>m});var n=i(85714),o=i(60282),s=i(16113),r=i(32936),a=i(43020),l=i(89599),h=i(63686),d=i(71721);function c(e,t){(0,h.HD)(t)?e.title=(0,a.x$)(t):(null===t||void 0===t?void 0:t.markdownNotSupportedFallback)?e.title=t.markdownNotSupportedFallback:e.removeAttribute("title")}class u{constructor(e,t,i){this.hoverDelegate=e,this.target=t,this.fadeInAnimation=i}async update(e,t,i){var n;if(this._cancellationTokenSource&&(this._cancellationTokenSource.dispose(!0),this._cancellationTokenSource=void 0),this.isDisposed)return;let o;if(void 0===e||(0,h.HD)(e)||e instanceof HTMLElement)o=e;else if((0,h.mf)(e.markdown)){this._hoverWidget||this.show((0,d.NC)("iconLabel.loading","Loading..."),t),this._cancellationTokenSource=new s.A;const i=this._cancellationTokenSource.token;if(o=await e.markdown(i),void 0===o&&(o=e.markdownNotSupportedFallback),this.isDisposed||i.isCancellationRequested)return}else o=null!==(n=e.markdown)&&void 0!==n?n:e.markdownNotSupportedFallback;this.show(o,t,i)}show(e,t,i){const n=this._hoverWidget;if(this.hasContent(e)){const o={content:e,target:this.target,appearance:{showPointer:"element"===this.hoverDelegate.placement,skipFadeInAnimation:!this.fadeInAnimation||!!n},position:{hoverPosition:2},...i};this._hoverWidget=this.hoverDelegate.showHover(o,t)}null===n||void 0===n||n.dispose()}hasContent(e){return!!e&&(!(0,r.Fr)(e)||!!e.value)}get isDisposed(){var e;return null===(e=this._hoverWidget)||void 0===e?void 0:e.isDisposed}dispose(){var e,t;null===(e=this._hoverWidget)||void 0===e||e.dispose(),null===(t=this._cancellationTokenSource)||void 0===t||t.dispose(!0),this._cancellationTokenSource=void 0}}function g(e,t){for(t=null!==t&&void 0!==t?t:n.Jj(e).document.body;!e.hasAttribute("custom-hover")&&e!==t;)e=e.parentElement;return e}function m(e,t,i,s){let r,a;t.setAttribute("custom-hover","true"),""!==t.title&&(console.warn("HTML element already has a title attribute, which will conflict with the custom hover. Please remove the title attribute."),console.trace("Stack trace:",t.title),t.title="");const h=(t,i)=>{var n;const o=void 0!==a;t&&(null===a||void 0===a||a.dispose(),a=void 0),i&&(null===r||void 0===r||r.dispose(),r=void 0),o&&(null===(n=e.onDidHideHover)||void 0===n||n.call(e),a=void 0)},d=(n,r,l)=>new o._F((async()=>{a&&!a.isDisposed||(a=new u(e,l||t,n>0),await a.update("function"===typeof i?i():i,r,s))}),n);let c=!1;const m=n.nm(t,n.tw.MOUSE_DOWN,(()=>{c=!0,h(!0,!0)}),!0),f=n.nm(t,n.tw.MOUSE_UP,(()=>{c=!1}),!0),p=n.nm(t,n.tw.MOUSE_LEAVE,(e=>{c=!1,h(!1,e.fromElement===t)}),!0),_=n.nm(t,n.tw.MOUSE_OVER,(i=>{if(r)return;const o=new l.SL,s={targetElements:[t],dispose:()=>{}};if(void 0===e.placement||"mouse"===e.placement){const e=e=>{s.x=e.x+10,e.target instanceof HTMLElement&&g(e.target,t)!==t&&h(!0,!0)};o.add(n.nm(t,n.tw.MOUSE_MOVE,e,!0))}r=o,i.target instanceof HTMLElement&&g(i.target,t)!==t||o.add(d(e.delay,!1,s))}),!0),v=()=>{if(c||r)return;const i={targetElements:[t],dispose:()=>{}},o=new l.SL;o.add(n.nm(t,n.tw.BLUR,(()=>h(!0,!0)),!0)),o.add(d(e.delay,!1,i)),r=o};let b;const C=t.tagName.toLowerCase();"input"!==C&&"textarea"!==C&&(b=n.nm(t,n.tw.FOCUS,v,!0));return{show:e=>{h(!1,!0),d(0,e)},hide:()=>{h(!0,!0)},update:async(e,t)=>{i=e,await(null===a||void 0===a?void 0:a.update(i,void 0,t))},dispose:()=>{_.dispose(),p.dispose(),m.dispose(),f.dispose(),null===b||void 0===b||b.dispose(),h(!0,!0)}}}},25938:(e,t,i)=>{i.d(t,{g:()=>c});var n=i(85714),o=i(81878),s=i(34392),r=i(89599),a=i(10451),l=i(75799),h=i(14561);class d{constructor(e){this._element=e}get element(){return this._element}set textContent(e){this.disposed||e===this._textContent||(this._textContent=e,this._element.textContent=e)}set className(e){this.disposed||e===this._className||(this._className=e,this._element.className=e)}set empty(e){this.disposed||e===this._empty||(this._empty=e,this._element.style.marginLeft=e?"0":"")}dispose(){this.disposed=!0}}class c extends r.JT{constructor(e,t){var i;super(),this.customHovers=new Map,this.creationOptions=t,this.domNode=this._register(new d(n.R3(e,n.$(".monaco-icon-label")))),this.labelContainer=n.R3(this.domNode.element,n.$(".monaco-icon-label-container")),this.nameContainer=n.R3(this.labelContainer,n.$("span.monaco-icon-name-container")),(null===t||void 0===t?void 0:t.supportHighlights)||(null===t||void 0===t?void 0:t.supportIcons)?this.nameNode=this._register(new g(this.nameContainer,!!t.supportIcons)):this.nameNode=new u(this.nameContainer),this.hoverDelegate=null!==(i=null===t||void 0===t?void 0:t.hoverDelegate)&&void 0!==i?i:(0,h.tM)("mouse")}get element(){return this.domNode.element}setLabel(e,t,i){var n;const s=["monaco-icon-label"],r=["monaco-icon-label-container"];let a="";if(i&&(i.extraClasses&&s.push(...i.extraClasses),i.italic&&s.push("italic"),i.strikethrough&&s.push("strikethrough"),i.disabledCommand&&r.push("disabled"),i.title&&("string"===typeof i.title?a+=i.title:a+=e)),this.domNode.className=s.join(" "),this.domNode.element.setAttribute("aria-label",a),this.labelContainer.className=r.join(" "),this.setupHover((null===i||void 0===i?void 0:i.descriptionTitle)?this.labelContainer:this.element,null===i||void 0===i?void 0:i.title),this.nameNode.setLabel(e,i),t||this.descriptionNode){const e=this.getOrCreateDescriptionNode();e instanceof o.q?(e.set(t||"",i?i.descriptionMatches:void 0,void 0,null===i||void 0===i?void 0:i.labelEscapeNewLines),this.setupHover(e.element,null===i||void 0===i?void 0:i.descriptionTitle)):(e.textContent=t&&(null===i||void 0===i?void 0:i.labelEscapeNewLines)?o.q.escapeNewLines(t,[]):t||"",this.setupHover(e.element,(null===i||void 0===i?void 0:i.descriptionTitle)||""),e.empty=!t)}if((null===i||void 0===i?void 0:i.suffix)||this.suffixNode){this.getOrCreateSuffixNode().textContent=null!==(n=null===i||void 0===i?void 0:i.suffix)&&void 0!==n?n:""}}setupHover(e,t){const i=this.customHovers.get(e);if(i&&(i.dispose(),this.customHovers.delete(e)),t)if(this.hoverDelegate.showNativeHover)(0,s.O)(e,t);else{const i=(0,s.g)(this.hoverDelegate,e,t);i&&this.customHovers.set(e,i)}else e.removeAttribute("title")}dispose(){super.dispose();for(const e of this.customHovers.values())e.dispose();this.customHovers.clear()}getOrCreateSuffixNode(){if(!this.suffixNode){const e=this._register(new d(n.e4(this.nameContainer,n.$("span.monaco-icon-suffix-container"))));this.suffixNode=this._register(new d(n.R3(e.element,n.$("span.label-suffix"))))}return this.suffixNode}getOrCreateDescriptionNode(){var e;if(!this.descriptionNode){const t=this._register(new d(n.R3(this.labelContainer,n.$("span.monaco-icon-description-container"))));(null===(e=this.creationOptions)||void 0===e?void 0:e.supportDescriptionHighlights)?this.descriptionNode=this._register(new o.q(n.R3(t.element,n.$("span.label-description")),{supportIcons:!!this.creationOptions.supportIcons})):this.descriptionNode=this._register(new d(n.R3(t.element,n.$("span.label-description"))))}return this.descriptionNode}}class u{constructor(e){this.container=e,this.label=void 0,this.singleLabel=void 0}setLabel(e,t){if(this.label!==e||!(0,a.fS)(this.options,t))if(this.label=e,this.options=t,"string"===typeof e)this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=n.R3(this.container,n.$("a.label-name",{id:null===t||void 0===t?void 0:t.domId}))),this.singleLabel.textContent=e;else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;for(let i=0;i{const o={start:n,end:n+e.length},s=i.map((e=>l.e.intersect(o,e))).filter((e=>!l.e.isEmpty(e))).map((e=>{let{start:t,end:i}=e;return{start:t-n,end:i-n}}));return n=o.end+t.length,s}))}(e,i,null===t||void 0===t?void 0:t.matches);for(let r=0;r{i.d(t,{T:()=>r,h:()=>a});var n=i(85714),o=i(62502);const s=new RegExp("(\\\\)?\\$\\((".concat(o.k.iconNameExpression,"(?:").concat(o.k.iconModifierExpression,")?)\\)"),"g");function r(e){const t=new Array;let i,n=0,o=0;for(;null!==(i=s.exec(e));){o=i.index||0,n{i.d(t,{pG:()=>C,g4:()=>v});var n=i(85714),o=i(3640),s=i(99957),r=i(65122),a=i(70036),l=i(14561),h=i(34392),d=i(66561),c=i(74812),u=i(24219);class g{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t-1;this.items=e,this.start=t,this.end=i,this.index=n}current(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]}next(){return this.index=Math.min(this.index+1,this.end),this.current()}previous(){return this.index=Math.max(this.index-1,this.start-1),this.current()}first(){return this.index=this.start,this.current()}last(){return this.index=this.end-1,this.current()}}class m{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;this._initialize(e),this._limit=t,this._onChange()}getHistory(){return this._elements}add(e){this._history.delete(e),this._history.add(e),this._onChange()}next(){return this._navigator.next()}previous(){return 0!==this._currentPosition()?this._navigator.previous():null}current(){return this._navigator.current()}first(){return this._navigator.first()}last(){return this._navigator.last()}isLast(){return this._currentPosition()>=this._elements.length-1}isNowhere(){return null===this._navigator.current()}has(e){return this._history.has(e)}_onChange(){this._reduceToLimit();const e=this._elements;this._navigator=new g(e,0,e.length,e.length)}_reduceToLimit(){const e=this._elements;e.length>this._limit&&this._initialize(e.slice(e.length-this._limit))}_currentPosition(){const e=this._navigator.current();return e?this._elements.indexOf(e):-1}_initialize(e){this._history=new Set;for(const t of e)this._history.add(t)}get _elements(){const e=[];return this._history.forEach((t=>e.push(t))),e}}var f=i(10451),p=i(71721);const _=n.$,v={inputBackground:"#3C3C3C",inputForeground:"#CCCCCC",inputValidationInfoBorder:"#55AAFF",inputValidationInfoBackground:"#063B49",inputValidationWarningBorder:"#B89500",inputValidationWarningBackground:"#352A05",inputValidationErrorBorder:"#BE1100",inputValidationErrorBackground:"#5A1D1D",inputBorder:void 0,inputValidationErrorForeground:void 0,inputValidationInfoForeground:void 0,inputValidationWarningForeground:void 0};class b extends c.${constructor(e,t,i){var s;super(),this.state="idle",this.maxHeight=Number.POSITIVE_INFINITY,this._onDidChange=this._register(new u.Q5),this.onDidChange=this._onDidChange.event,this._onDidHeightChange=this._register(new u.Q5),this.onDidHeightChange=this._onDidHeightChange.event,this.contextViewProvider=t,this.options=i,this.message=null,this.placeholder=this.options.placeholder||"",this.tooltip=null!==(s=this.options.tooltip)&&void 0!==s?s:this.placeholder||"",this.ariaLabel=this.options.ariaLabel||"",this.options.validationOptions&&(this.validation=this.options.validationOptions.validation),this.element=n.R3(e,_(".monaco-inputbox.idle"));const a=this.options.flexibleHeight?"textarea":"input",l=n.R3(this.element,_(".ibwrapper"));if(this.input=n.R3(l,_(a+".input.empty")),this.input.setAttribute("autocorrect","off"),this.input.setAttribute("autocapitalize","off"),this.input.setAttribute("spellcheck","false"),this.onfocus(this.input,(()=>this.element.classList.add("synthetic-focus"))),this.onblur(this.input,(()=>this.element.classList.remove("synthetic-focus"))),this.options.flexibleHeight){this.maxHeight="number"===typeof this.options.flexibleMaxHeight?this.options.flexibleMaxHeight:Number.POSITIVE_INFINITY,this.mirror=n.R3(l,_("div.mirror")),this.mirror.innerText="\xa0",this.scrollableElement=new d.NB(this.element,{vertical:1}),this.options.flexibleWidth&&(this.input.setAttribute("wrap","off"),this.mirror.style.whiteSpace="pre",this.mirror.style.wordWrap="initial"),n.R3(e,this.scrollableElement.getDomNode()),this._register(this.scrollableElement),this._register(this.scrollableElement.onScroll((e=>this.input.scrollTop=e.scrollTop)));const t=this._register(new o.Y(e.ownerDocument,"selectionchange")),i=u.ju.filter(t.event,(()=>{const t=e.ownerDocument.getSelection();return(null===t||void 0===t?void 0:t.anchorNode)===l}));this._register(i(this.updateScrollDimensions,this)),this._register(this.onDidHeightChange(this.updateScrollDimensions,this))}else this.input.type=this.options.type||"text",this.input.setAttribute("wrap","off");this.ariaLabel&&this.input.setAttribute("aria-label",this.ariaLabel),this.placeholder&&!this.options.showPlaceholderOnFocus&&this.setPlaceHolder(this.placeholder),this.tooltip&&this.setTooltip(this.tooltip),this.oninput(this.input,(()=>this.onValueChange())),this.onblur(this.input,(()=>this.onBlur())),this.onfocus(this.input,(()=>this.onFocus())),this._register(this.ignoreGesture(this.input)),setTimeout((()=>this.updateMirror()),0),this.options.actions&&(this.actionbar=this._register(new r.o(this.element)),this.actionbar.push(this.options.actions,{icon:!0,label:!1})),this.applyStyles()}onBlur(){this._hideMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder","")}onFocus(){this._showMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder",this.placeholder||"")}setPlaceHolder(e){this.placeholder=e,this.input.setAttribute("placeholder",e)}setTooltip(e){this.tooltip=e,this.hover?this.hover.update(e):this.hover=this._register((0,h.g)((0,l.tM)("mouse"),this.input,e))}get inputElement(){return this.input}get value(){return this.input.value}set value(e){this.input.value!==e&&(this.input.value=e,this.onValueChange())}get height(){return"number"===typeof this.cachedHeight?this.cachedHeight:n.wn(this.element)}focus(){this.input.focus()}blur(){this.input.blur()}hasFocus(){return n.H9(this.input)}select(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.input.select(),e&&(this.input.setSelectionRange(e.start,e.end),e.end===this.input.value.length&&(this.input.scrollLeft=this.input.scrollWidth))}isSelectionAtEnd(){return this.input.selectionEnd===this.input.value.length&&this.input.selectionStart===this.input.selectionEnd}getSelection(){var e;const t=this.input.selectionStart;if(null===t)return null;return{start:t,end:null!==(e=this.input.selectionEnd)&&void 0!==e?e:t}}enable(){this.input.removeAttribute("disabled")}disable(){this.blur(),this.input.disabled=!0,this._hideMessage()}set paddingRight(e){this.input.style.width="calc(100% - ".concat(e,"px)"),this.mirror&&(this.mirror.style.paddingRight=e+"px")}updateScrollDimensions(){if("number"!==typeof this.cachedContentHeight||"number"!==typeof this.cachedHeight||!this.scrollableElement)return;const e=this.cachedContentHeight,t=this.cachedHeight,i=this.input.scrollTop;this.scrollableElement.setScrollDimensions({scrollHeight:e,height:t}),this.scrollableElement.setScrollPosition({scrollTop:i})}showMessage(e,t){if("open"===this.state&&(0,f.fS)(this.message,e))return;this.message=e,this.element.classList.remove("idle"),this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add(this.classForType(e.type));const i=this.stylesForType(this.message.type);this.element.style.border="1px solid ".concat(n.XT(i.border,"transparent")),this.message.content&&(this.hasFocus()||t)&&this._showMessage()}hideMessage(){this.message=null,this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add("idle"),this._hideMessage(),this.applyStyles()}validate(){let e=null;return this.validation&&(e=this.validation(this.value),e?(this.inputElement.setAttribute("aria-invalid","true"),this.showMessage(e)):this.inputElement.hasAttribute("aria-invalid")&&(this.inputElement.removeAttribute("aria-invalid"),this.hideMessage())),null===e||void 0===e?void 0:e.type}stylesForType(e){const t=this.options.inputBoxStyles;switch(e){case 1:return{border:t.inputValidationInfoBorder,background:t.inputValidationInfoBackground,foreground:t.inputValidationInfoForeground};case 2:return{border:t.inputValidationWarningBorder,background:t.inputValidationWarningBackground,foreground:t.inputValidationWarningForeground};default:return{border:t.inputValidationErrorBorder,background:t.inputValidationErrorBackground,foreground:t.inputValidationErrorForeground}}}classForType(e){switch(e){case 1:return"info";case 2:return"warning";default:return"error"}}_showMessage(){if(!this.contextViewProvider||!this.message)return;let e;const t=()=>e.style.width=n.w(this.element)+"px";let i;this.contextViewProvider.showContextView({getAnchor:()=>this.element,anchorAlignment:1,render:i=>{var o,r;if(!this.message)return null;e=n.R3(i,_(".monaco-inputbox-container")),t();const a={inline:!0,className:"monaco-inputbox-message"},l=this.message.formatContent?(0,s.BO)(this.message.content,a):(0,s.IY)(this.message.content,a);l.classList.add(this.classForType(this.message.type));const h=this.stylesForType(this.message.type);return l.style.backgroundColor=null!==(o=h.background)&&void 0!==o?o:"",l.style.color=null!==(r=h.foreground)&&void 0!==r?r:"",l.style.border=h.border?"1px solid ".concat(h.border):"",n.R3(e,l),null},onHide:()=>{this.state="closed"},layout:t}),i=3===this.message.type?p.NC("alertErrorMessage","Error: {0}",this.message.content):2===this.message.type?p.NC("alertWarningMessage","Warning: {0}",this.message.content):p.NC("alertInfoMessage","Info: {0}",this.message.content),a.Z9(i),this.state="open"}_hideMessage(){this.contextViewProvider&&("open"===this.state&&this.contextViewProvider.hideContextView(),this.state="idle")}onValueChange(){this._onDidChange.fire(this.value),this.validate(),this.updateMirror(),this.input.classList.toggle("empty",!this.value),"open"===this.state&&this.contextViewProvider&&this.contextViewProvider.layout()}updateMirror(){if(!this.mirror)return;const e=this.value,t=10===e.charCodeAt(e.length-1)?" ":"";(e+t).replace(/\u000c/g,"")?this.mirror.textContent=e+t:this.mirror.innerText="\xa0",this.layout()}applyStyles(){var e,t,i;const o=this.options.inputBoxStyles,s=null!==(e=o.inputBackground)&&void 0!==e?e:"",r=null!==(t=o.inputForeground)&&void 0!==t?t:"",a=null!==(i=o.inputBorder)&&void 0!==i?i:"";this.element.style.backgroundColor=s,this.element.style.color=r,this.input.style.backgroundColor="inherit",this.input.style.color=r,this.element.style.border="1px solid ".concat(n.XT(a,"transparent"))}layout(){if(!this.mirror)return;const e=this.cachedContentHeight;this.cachedContentHeight=n.wn(this.mirror),e!==this.cachedContentHeight&&(this.cachedHeight=Math.min(this.cachedContentHeight,this.maxHeight),this.input.style.height=this.cachedHeight+"px",this._onDidHeightChange.fire(this.cachedContentHeight))}insertAtCursor(e){const t=this.inputElement,i=t.selectionStart,n=t.selectionEnd,o=t.value;null!==i&&null!==n&&(this.value=o.substr(0,i)+e+o.substr(n),t.setSelectionRange(i+1,i+1),this.layout())}dispose(){var e;this._hideMessage(),this.message=null,null===(e=this.actionbar)||void 0===e||e.dispose(),super.dispose()}}class C extends b{constructor(e,t,i){const o=p.NC({key:"history.inputbox.hint.suffix.noparens",comment:['Text is the suffix of an input field placeholder coming after the action the input field performs, this will be used when the input field ends in a closing parenthesis ")", for example "Filter (e.g. text, !exclude)". The character inserted into the final string is \u21c5 to represent the up and down arrow keys.']}," or {0} for history","\u21c5"),s=p.NC({key:"history.inputbox.hint.suffix.inparens",comment:['Text is the suffix of an input field placeholder coming after the action the input field performs, this will be used when the input field does NOT end in a closing parenthesis (eg. "Find"). The character inserted into the final string is \u21c5 to represent the up and down arrow keys.']}," ({0} for history)","\u21c5");super(e,t,i),this._onDidFocus=this._register(new u.Q5),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new u.Q5),this.onDidBlur=this._onDidBlur.event,this.history=new m(i.history,100);const r=()=>{if(i.showHistoryHint&&i.showHistoryHint()&&!this.placeholder.endsWith(o)&&!this.placeholder.endsWith(s)&&this.history.getHistory().length){const e=this.placeholder.endsWith(")")?o:s,t=this.placeholder+e;i.showPlaceholderOnFocus&&!n.H9(this.input)?this.placeholder=t:this.setPlaceHolder(t)}};this.observer=new MutationObserver(((e,t)=>{e.forEach((e=>{e.target.textContent||r()}))})),this.observer.observe(this.input,{attributeFilter:["class"]}),this.onfocus(this.input,(()=>r())),this.onblur(this.input,(()=>{const e=e=>{if(this.placeholder.endsWith(e)){const t=this.placeholder.slice(0,this.placeholder.length-e.length);return i.showPlaceholderOnFocus?this.placeholder=t:this.setPlaceHolder(t),!0}return!1};e(s)||e(o)}))}dispose(){super.dispose(),this.observer&&(this.observer.disconnect(),this.observer=void 0)}addToHistory(e){this.value&&(e||this.value!==this.getCurrentValue())&&this.history.add(this.value)}isAtLastInHistory(){return this.history.isLast()}isNowhereInHistory(){return this.history.isNowhere()}showNextValue(){this.history.has(this.value)||this.addToHistory();let e=this.getNextValue();e&&(e=e===this.value?this.getNextValue():e),this.value=null!==e&&void 0!==e?e:"",a.i7(this.value?this.value:p.NC("clearedInput","Cleared Input"))}showPreviousValue(){this.history.has(this.value)||this.addToHistory();let e=this.getPreviousValue();e&&(e=e===this.value?this.getPreviousValue():e),e&&(this.value=e,a.i7(this.value))}setPlaceHolder(e){super.setPlaceHolder(e),this.setTooltip(e)}onBlur(){super.onBlur(),this._onDidBlur.fire()}onFocus(){super.onFocus(),this._onDidFocus.fire()}getCurrentValue(){let e=this.history.current();return e||(e=this.history.last(),this.history.next()),e}getPreviousValue(){return this.history.previous()||this.history.first()}getNextValue(){return this.history.next()}}},75404:(e,t,i)=>{i.d(t,{e:()=>u,F:()=>c});var n=i(85714),o=i(14561),s=i(34392),r=i(87818),a=i(89599),l=i(10451),h=i(71721);const d=n.$,c={keybindingLabelBackground:void 0,keybindingLabelForeground:void 0,keybindingLabelBorder:void 0,keybindingLabelBottomBorder:void 0,keybindingLabelShadow:void 0};class u extends a.JT{constructor(e,t,i){super(),this.os=t,this.keyElements=new Set,this.options=i||Object.create(null);const r=this.options.keybindingLabelForeground;this.domNode=n.R3(e,d(".monaco-keybinding")),r&&(this.domNode.style.color=r),this.hover=this._register((0,s.g)((0,o.tM)("mouse"),this.domNode,"")),this.didEverRender=!1,e.appendChild(this.domNode)}get element(){return this.domNode}set(e,t){this.didEverRender&&this.keybinding===e&&u.areSame(this.matches,t)||(this.keybinding=e,this.matches=t,this.render())}render(){var e;if(this.clear(),this.keybinding){const t=this.keybinding.getChords();t[0]&&this.renderChord(this.domNode,t[0],this.matches?this.matches.firstPart:null);for(let e=1;e1&&void 0!==arguments[1]?arguments[1]:""),void 0,e);return this.keyElements.add(t),this.options.keybindingLabelBackground&&(t.style.backgroundColor=this.options.keybindingLabelBackground),this.options.keybindingLabelBorder&&(t.style.borderColor=this.options.keybindingLabelBorder),this.options.keybindingLabelBottomBorder&&(t.style.borderBottomColor=this.options.keybindingLabelBottomBorder),this.options.keybindingLabelShadow&&(t.style.boxShadow="inset 0 -1px 0 ".concat(this.options.keybindingLabelShadow)),t}static areSame(e,t){return e===t||!e&&!t||!!e&&!!t&&(0,l.fS)(e.firstPart,t.firstPart)&&(0,l.fS)(e.chordPart,t.chordPart)}}},84931:(e,t,i)=>{i.d(t,{kX:()=>L,Bv:()=>x});var n=i(86487),o=i(85714),s=i(3640),r=i(48688),a=i(66561),l=i(75629),h=i(60282),d=i(30333),c=i(24219),u=i(89599),g=i(75799),m=i(89314);function f(e,t){const i=[];for(const n of t){if(e.start>=n.range.end)continue;if(e.end2&&void 0!==arguments[2]?arguments[2]:[];const n=i.length-t,o=f({start:0,end:e},this.groups),s=f({start:e+t,end:Number.POSITIVE_INFINITY},this.groups).map((e=>({range:p(e.range,n),size:e.size}))),r=i.map(((t,i)=>({range:{start:e+i,end:e+i+1},size:t.size})));this.groups=function(){for(var e=arguments.length,t=new Array(e),i=0;ie.concat(t)),[]))}(o,r,s),this._size=this._paddingTop+this.groups.reduce(((e,t)=>e+t.size*(t.range.end-t.range.start)),0)}get count(){const e=this.groups.length;return e?this.groups[e-1].range.end:0}get size(){return this._size}indexAt(e){if(e<0)return-1;if(e{for(const i of e){this.getRenderer(t).disposeTemplate(i.templateData),i.templateData=null}})),this.cache.clear(),this.transactionNodesPendingRemoval.clear()}getRenderer(e){const t=this.renderers.get(e);if(!t)throw new Error("No renderer found for ".concat(e));return t}}var b=i(85108),C=i(63229),w=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r};const y={CurrentDragAndDropData:void 0},S={useShadows:!0,verticalScrollMode:1,setRowLineHeight:!0,setRowHeight:!0,supportDynamicHeights:!1,dnd:{getDragElements:e=>[e],getDragURI:()=>null,onDragStart(){},onDragOver:()=>!1,drop(){},dispose(){}},horizontalScrolling:!1,transformOptimization:!0,alwaysConsumeMouseWheel:!0};class L{constructor(e){this.elements=e}update(){}getData(){return this.elements}}class k{constructor(e){this.elements=e}update(){}getData(){return this.elements}}class D{constructor(){this.types=[],this.files=[]}update(e){if(e.types&&this.types.splice(0,this.types.length,...e.types),e.files){this.files.splice(0,this.files.length);for(let t=0;ti,(null===e||void 0===e?void 0:e.getPosInSet)?this.getPosInSet=e.getPosInSet.bind(e):this.getPosInSet=(e,t)=>t+1,(null===e||void 0===e?void 0:e.getRole)?this.getRole=e.getRole.bind(e):this.getRole=e=>"listitem",(null===e||void 0===e?void 0:e.isChecked)?this.isChecked=e.isChecked.bind(e):this.isChecked=e=>{}}}class x{get contentHeight(){return this.rangeMap.size}get onDidScroll(){return this.scrollableElement.onScroll}get scrollableElementDomNode(){return this.scrollableElement.getDomNode()}get horizontalScrolling(){return this._horizontalScrolling}set horizontalScrolling(e){if(e!==this._horizontalScrolling){if(e&&this.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");if(this._horizontalScrolling=e,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this._horizontalScrolling){for(const e of this.items)this.measureItemWidth(e);this.updateScrollWidth(),this.scrollableElement.setScrollDimensions({width:(0,o.FK)(this.domNode)}),this.rowsContainer.style.width="".concat(Math.max(this.scrollWidth||0,this.renderWidth),"px")}else this.scrollableElementWidthDelayer.cancel(),this.scrollableElement.setScrollDimensions({width:this.renderWidth,scrollWidth:this.renderWidth}),this.rowsContainer.style.width=""}}constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:S;var s,l,d,g,f,p,_,b,C,w,y,L,k;if(this.virtualDelegate=t,this.domId="list_id_".concat(++x.InstanceCount),this.renderers=new Map,this.renderWidth=0,this._scrollHeight=0,this.scrollableElementUpdateDisposable=null,this.scrollableElementWidthDelayer=new h.vp(50),this.splicing=!1,this.dragOverAnimationStopDisposable=u.JT.None,this.dragOverMouseY=0,this.canDrop=!1,this.currentDragFeedbackDisposable=u.JT.None,this.onDragLeaveTimeout=u.JT.None,this.disposables=new u.SL,this._onDidChangeContentHeight=new c.Q5,this._onDidChangeContentWidth=new c.Q5,this.onDidChangeContentHeight=c.ju.latch(this._onDidChangeContentHeight.event,void 0,this.disposables),this._horizontalScrolling=!1,n.horizontalScrolling&&n.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");this.items=[],this.itemId=0,this.rangeMap=this.createRangeMap(null!==(s=n.paddingTop)&&void 0!==s?s:0);for(const o of i)this.renderers.set(o.templateId,o);this.cache=this.disposables.add(new v(this.renderers)),this.lastRenderTop=0,this.lastRenderHeight=0,this.domNode=document.createElement("div"),this.domNode.className="monaco-list",this.domNode.classList.add(this.domId),this.domNode.tabIndex=0,this.domNode.classList.toggle("mouse-support","boolean"!==typeof n.mouseSupport||n.mouseSupport),this._horizontalScrolling=null!==(l=n.horizontalScrolling)&&void 0!==l?l:S.horizontalScrolling,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this.paddingBottom="undefined"===typeof n.paddingBottom?0:n.paddingBottom,this.accessibilityProvider=new N(n.accessibilityProvider),this.rowsContainer=document.createElement("div"),this.rowsContainer.className="monaco-list-rows";(null!==(d=n.transformOptimization)&&void 0!==d?d:S.transformOptimization)&&(this.rowsContainer.style.transform="translate3d(0px, 0px, 0px)",this.rowsContainer.style.overflow="hidden",this.rowsContainer.style.contain="strict"),this.disposables.add(r.o.addTarget(this.rowsContainer)),this.scrollable=this.disposables.add(new m.Rm({forceIntegerValues:!0,smoothScrollDuration:null!==(g=n.smoothScrolling)&&void 0!==g&&g?125:0,scheduleAtNextAnimationFrame:e=>(0,o.jL)((0,o.Jj)(this.domNode),e)})),this.scrollableElement=this.disposables.add(new a.$Z(this.rowsContainer,{alwaysConsumeMouseWheel:null!==(f=n.alwaysConsumeMouseWheel)&&void 0!==f?f:S.alwaysConsumeMouseWheel,horizontal:1,vertical:null!==(p=n.verticalScrollMode)&&void 0!==p?p:S.verticalScrollMode,useShadows:null!==(_=n.useShadows)&&void 0!==_?_:S.useShadows,mouseWheelScrollSensitivity:n.mouseWheelScrollSensitivity,fastScrollSensitivity:n.fastScrollSensitivity,scrollByPage:n.scrollByPage},this.scrollable)),this.domNode.appendChild(this.scrollableElement.getDomNode()),e.appendChild(this.domNode),this.scrollableElement.onScroll(this.onScroll,this,this.disposables),this.disposables.add((0,o.nm)(this.rowsContainer,r.t.Change,(e=>this.onTouchChange(e)))),this.disposables.add((0,o.nm)(this.scrollableElement.getDomNode(),"scroll",(e=>e.target.scrollTop=0))),this.disposables.add((0,o.nm)(this.domNode,"dragover",(e=>this.onDragOver(this.toDragEvent(e))))),this.disposables.add((0,o.nm)(this.domNode,"drop",(e=>this.onDrop(this.toDragEvent(e))))),this.disposables.add((0,o.nm)(this.domNode,"dragleave",(e=>this.onDragLeave(this.toDragEvent(e))))),this.disposables.add((0,o.nm)(this.domNode,"dragend",(e=>this.onDragEnd(e)))),this.setRowLineHeight=null!==(b=n.setRowLineHeight)&&void 0!==b?b:S.setRowLineHeight,this.setRowHeight=null!==(C=n.setRowHeight)&&void 0!==C?C:S.setRowHeight,this.supportDynamicHeights=null!==(w=n.supportDynamicHeights)&&void 0!==w?w:S.supportDynamicHeights,this.dnd=null!==(y=n.dnd)&&void 0!==y?y:this.disposables.add(S.dnd),this.layout(null===(L=n.initialSize)||void 0===L?void 0:L.height,null===(k=n.initialSize)||void 0===k?void 0:k.width)}updateOptions(e){let t;if(void 0!==e.paddingBottom&&(this.paddingBottom=e.paddingBottom,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),void 0!==e.smoothScrolling&&this.scrollable.setSmoothScrollDuration(e.smoothScrolling?125:0),void 0!==e.horizontalScrolling&&(this.horizontalScrolling=e.horizontalScrolling),void 0!==e.scrollByPage&&(t={...null!==t&&void 0!==t?t:{},scrollByPage:e.scrollByPage}),void 0!==e.mouseWheelScrollSensitivity&&(t={...null!==t&&void 0!==t?t:{},mouseWheelScrollSensitivity:e.mouseWheelScrollSensitivity}),void 0!==e.fastScrollSensitivity&&(t={...null!==t&&void 0!==t?t:{},fastScrollSensitivity:e.fastScrollSensitivity}),t&&this.scrollableElement.updateOptions(t),void 0!==e.paddingTop&&e.paddingTop!==this.rangeMap.paddingTop){const t=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),i=e.paddingTop-this.rangeMap.paddingTop;this.rangeMap.paddingTop=e.paddingTop,this.render(t,Math.max(0,this.lastRenderTop+i),this.lastRenderHeight,void 0,void 0,!0),this.setScrollTop(this.lastRenderTop),this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.lastRenderTop,this.lastRenderHeight)}}createRangeMap(e){return new _(e)}splice(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(this.splicing)throw new Error("Can't run recursive splices.");this.splicing=!0;try{return this._splice(e,t,i)}finally{this.splicing=!1,this._onDidChangeContentHeight.fire(this.contentHeight)}}_splice(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const n=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),o={start:e,end:e+t},s=g.e.intersect(n,o),r=new Map;for(let u=s.end-1;u>=s.start;u--){const e=this.items[u];if(e.dragStartDisposable.dispose(),e.checkedDisposable.dispose(),e.row){let t=r.get(e.templateId);t||(t=[],r.set(e.templateId,t));const i=this.renderers.get(e.templateId);i&&i.disposeElement&&i.disposeElement(e.element,u,e.row.templateData,e.size),t.push(e.row)}e.row=null,e.stale=!0}const a={start:e+t,end:this.items.length},l=g.e.intersect(a,n),h=g.e.relativeComplement(a,n),d=i.map((e=>({id:String(this.itemId++),element:e,templateId:this.virtualDelegate.getTemplateId(e),size:this.virtualDelegate.getHeight(e),width:void 0,hasDynamicHeight:!!this.virtualDelegate.hasDynamicHeight&&this.virtualDelegate.hasDynamicHeight(e),lastDynamicHeightWidth:void 0,row:null,uri:void 0,dropTarget:!1,dragStartDisposable:u.JT.None,checkedDisposable:u.JT.None,stale:!1})));let c;0===e&&t>=this.items.length?(this.rangeMap=this.createRangeMap(this.rangeMap.paddingTop),this.rangeMap.splice(0,0,d),c=this.items,this.items=d):(this.rangeMap.splice(e,t,d),c=this.items.splice(e,t,...d));const m=i.length-t,f=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),_=p(l,m),v=g.e.intersect(f,_);for(let u=v.start;up(e,m))),w=[{start:e,end:e+i.length},...C].map((e=>g.e.intersect(f,e))).reverse();for(const u of w)for(let e=u.end-1;e>=u.start;e--){const t=this.items[e],i=r.get(t.templateId),n=null===i||void 0===i?void 0:i.pop();this.insertItemInDOM(e,n)}for(const u of r.values())for(const e of u)this.cache.release(e);return this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight),c.map((e=>e.element))}eventuallyUpdateScrollDimensions(){this._scrollHeight=this.contentHeight,this.rowsContainer.style.height="".concat(this._scrollHeight,"px"),this.scrollableElementUpdateDisposable||(this.scrollableElementUpdateDisposable=(0,o.jL)((0,o.Jj)(this.domNode),(()=>{this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight}),this.updateScrollWidth(),this.scrollableElementUpdateDisposable=null})))}eventuallyUpdateScrollWidth(){this.horizontalScrolling?this.scrollableElementWidthDelayer.trigger((()=>this.updateScrollWidth())):this.scrollableElementWidthDelayer.cancel()}updateScrollWidth(){if(!this.horizontalScrolling)return;let e=0;for(const t of this.items)"undefined"!==typeof t.width&&(e=Math.max(e,t.width));this.scrollWidth=e,this.scrollableElement.setScrollDimensions({scrollWidth:0===e?0:e+10}),this._onDidChangeContentWidth.fire(this.scrollWidth)}rerender(){if(this.supportDynamicHeights){for(const e of this.items)e.lastDynamicHeightWidth=void 0;this._rerender(this.lastRenderTop,this.lastRenderHeight)}}get length(){return this.items.length}get renderHeight(){return this.scrollableElement.getScrollDimensions().height}get firstVisibleIndex(){return this.getRenderRange(this.lastRenderTop,this.lastRenderHeight).start}element(e){return this.items[e].element}indexOf(e){return this.items.findIndex((t=>t.element===e))}domElement(e){const t=this.items[e].row;return t&&t.domNode}elementHeight(e){return this.items[e].size}elementTop(e){return this.rangeMap.positionAt(e)}indexAt(e){return this.rangeMap.indexAt(e)}indexAfter(e){return this.rangeMap.indexAfter(e)}layout(e,t){const i={height:"number"===typeof e?e:(0,o.If)(this.domNode)};this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,i.scrollHeight=this.scrollHeight),this.scrollableElement.setScrollDimensions(i),"undefined"!==typeof t&&(this.renderWidth=t,this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight)),this.horizontalScrolling&&this.scrollableElement.setScrollDimensions({width:"number"===typeof t?t:(0,o.FK)(this.domNode)})}render(e,t,i,n,o){let s=arguments.length>5&&void 0!==arguments[5]&&arguments[5];const r=this.getRenderRange(t,i),a=g.e.relativeComplement(r,e).reverse(),l=g.e.relativeComplement(e,r);if(s){const t=g.e.intersect(e,r);for(let e=t.start;e{for(const e of l)for(let t=e.start;t=e.start;t--)this.insertItemInDOM(t)})),void 0!==n&&(this.rowsContainer.style.left="-".concat(n,"px")),this.rowsContainer.style.top="-".concat(t,"px"),this.horizontalScrolling&&void 0!==o&&(this.rowsContainer.style.width="".concat(Math.max(o,this.renderWidth),"px")),this.lastRenderTop=t,this.lastRenderHeight=i}insertItemInDOM(e,t){var i,n,s;const r=this.items[e];if(!r.row)if(t)r.row=t,r.stale=!0;else{const e=this.cache.alloc(r.templateId);r.row=e.row,r.stale||(r.stale=e.isReusingConnectedDomNode)}const a=this.accessibilityProvider.getRole(r.element)||"listitem";r.row.domNode.setAttribute("role",a);const l=this.accessibilityProvider.isChecked(r.element);if("boolean"===typeof l)r.row.domNode.setAttribute("aria-checked",String(!!l));else if(l){const e=e=>r.row.domNode.setAttribute("aria-checked",String(!!e));e(l.value),r.checkedDisposable=l.onDidChange(e)}if(r.stale||!r.row.domNode.parentElement){const t=null!==(s=null===(n=null===(i=this.items.at(e+1))||void 0===i?void 0:i.row)||void 0===n?void 0:n.domNode)&&void 0!==s?s:null;this.rowsContainer.insertBefore(r.row.domNode,t),r.stale=!1}this.updateItemInDOM(r,e);const h=this.renderers.get(r.templateId);if(!h)throw new Error("No renderer found for template id ".concat(r.templateId));null===h||void 0===h||h.renderElement(r.element,e,r.row.templateData,r.size);const d=this.dnd.getDragURI(r.element);r.dragStartDisposable.dispose(),r.row.domNode.draggable=!!d,d&&(r.dragStartDisposable=(0,o.nm)(r.row.domNode,"dragstart",(e=>this.onDragStart(r.element,d,e)))),this.horizontalScrolling&&(this.measureItemWidth(r),this.eventuallyUpdateScrollWidth())}measureItemWidth(e){if(!e.row||!e.row.domNode)return;e.row.domNode.style.width="fit-content",e.width=(0,o.FK)(e.row.domNode);const t=(0,o.Jj)(e.row.domNode).getComputedStyle(e.row.domNode);t.paddingLeft&&(e.width+=parseFloat(t.paddingLeft)),t.paddingRight&&(e.width+=parseFloat(t.paddingRight)),e.row.domNode.style.width=""}updateItemInDOM(e,t){e.row.domNode.style.top="".concat(this.elementTop(t),"px"),this.setRowHeight&&(e.row.domNode.style.height="".concat(e.size,"px")),this.setRowLineHeight&&(e.row.domNode.style.lineHeight="".concat(e.size,"px")),e.row.domNode.setAttribute("data-index","".concat(t)),e.row.domNode.setAttribute("data-last-element",t===this.length-1?"true":"false"),e.row.domNode.setAttribute("data-parity",t%2===0?"even":"odd"),e.row.domNode.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(e.element,t,this.length))),e.row.domNode.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(e.element,t))),e.row.domNode.setAttribute("id",this.getElementDomId(t)),e.row.domNode.classList.toggle("drop-target",e.dropTarget)}removeItemFromDOM(e){const t=this.items[e];if(t.dragStartDisposable.dispose(),t.checkedDisposable.dispose(),t.row){const i=this.renderers.get(t.templateId);i&&i.disposeElement&&i.disposeElement(t.element,e,t.row.templateData,t.size),this.cache.release(t.row),t.row=null}this.horizontalScrolling&&this.eventuallyUpdateScrollWidth()}getScrollTop(){return this.scrollableElement.getScrollPosition().scrollTop}setScrollTop(e,t){this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),this.scrollableElement.setScrollPosition({scrollTop:e,reuseAnimation:t})}get scrollTop(){return this.getScrollTop()}set scrollTop(e){this.setScrollTop(e)}get scrollHeight(){return this._scrollHeight+(this.horizontalScrolling?10:0)+this.paddingBottom}get onMouseClick(){return c.ju.map(this.disposables.add(new s.Y(this.domNode,"click")).event,(e=>this.toMouseEvent(e)),this.disposables)}get onMouseDblClick(){return c.ju.map(this.disposables.add(new s.Y(this.domNode,"dblclick")).event,(e=>this.toMouseEvent(e)),this.disposables)}get onMouseMiddleClick(){return c.ju.filter(c.ju.map(this.disposables.add(new s.Y(this.domNode,"auxclick")).event,(e=>this.toMouseEvent(e)),this.disposables),(e=>1===e.browserEvent.button),this.disposables)}get onMouseDown(){return c.ju.map(this.disposables.add(new s.Y(this.domNode,"mousedown")).event,(e=>this.toMouseEvent(e)),this.disposables)}get onMouseOver(){return c.ju.map(this.disposables.add(new s.Y(this.domNode,"mouseover")).event,(e=>this.toMouseEvent(e)),this.disposables)}get onMouseOut(){return c.ju.map(this.disposables.add(new s.Y(this.domNode,"mouseout")).event,(e=>this.toMouseEvent(e)),this.disposables)}get onContextMenu(){return c.ju.any(c.ju.map(this.disposables.add(new s.Y(this.domNode,"contextmenu")).event,(e=>this.toMouseEvent(e)),this.disposables),c.ju.map(this.disposables.add(new s.Y(this.domNode,r.t.Contextmenu)).event,(e=>this.toGestureEvent(e)),this.disposables))}get onTouchStart(){return c.ju.map(this.disposables.add(new s.Y(this.domNode,"touchstart")).event,(e=>this.toTouchEvent(e)),this.disposables)}get onTap(){return c.ju.map(this.disposables.add(new s.Y(this.rowsContainer,r.t.Tap)).event,(e=>this.toGestureEvent(e)),this.disposables)}toMouseEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i="undefined"===typeof t?void 0:this.items[t];return{browserEvent:e,index:t,element:i&&i.element}}toTouchEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i="undefined"===typeof t?void 0:this.items[t];return{browserEvent:e,index:t,element:i&&i.element}}toGestureEvent(e){const t=this.getItemIndexFromEventTarget(e.initialTarget||null),i="undefined"===typeof t?void 0:this.items[t];return{browserEvent:e,index:t,element:i&&i.element}}toDragEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i="undefined"===typeof t?void 0:this.items[t];return{browserEvent:e,index:t,element:i&&i.element,sector:this.getTargetSector(e,t)}}onScroll(e){try{const t=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight);this.render(t,e.scrollTop,e.height,e.scrollLeft,e.scrollWidth),this.supportDynamicHeights&&this._rerender(e.scrollTop,e.height,e.inSmoothScrolling)}catch(t){throw console.error("Got bad scroll event:",e),t}}onTouchChange(e){e.preventDefault(),e.stopPropagation(),this.scrollTop-=e.translationY}onDragStart(e,t,i){var s,r;if(!i.dataTransfer)return;const a=this.dnd.getDragElements(e);if(i.dataTransfer.effectAllowed="copyMove",i.dataTransfer.setData(n.g.TEXT,t),i.dataTransfer.setDragImage){let e;this.dnd.getDragLabel&&(e=this.dnd.getDragLabel(a,i)),"undefined"===typeof e&&(e=String(a.length));const t=(0,o.$)(".monaco-drag-image");t.textContent=e;const n=(e=>{for(;e&&!e.classList.contains("monaco-workbench");)e=e.parentElement;return e||this.domNode.ownerDocument})(this.domNode);n.appendChild(t),i.dataTransfer.setDragImage(t,-10,-10),setTimeout((()=>n.removeChild(t)),0)}this.domNode.classList.add("dragging"),this.currentDragData=new L(a),y.CurrentDragAndDropData=new k(a),null===(r=(s=this.dnd).onDragStart)||void 0===r||r.call(s,this.currentDragData,i)}onDragOver(e){var t,i;if(e.browserEvent.preventDefault(),this.onDragLeaveTimeout.dispose(),y.CurrentDragAndDropData&&"vscode-ui"===y.CurrentDragAndDropData.getData())return!1;if(this.setupDragAndDropScrollTopAnimation(e.browserEvent),!e.browserEvent.dataTransfer)return!1;if(!this.currentDragData)if(y.CurrentDragAndDropData)this.currentDragData=y.CurrentDragAndDropData;else{if(!e.browserEvent.dataTransfer.types)return!1;this.currentDragData=new D}const n=this.dnd.onDragOver(this.currentDragData,e.element,e.index,e.sector,e.browserEvent);if(this.canDrop="boolean"===typeof n?n:n.accept,!this.canDrop)return this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),!1;let o;e.browserEvent.dataTransfer.dropEffect="boolean"!==typeof n&&0===(null===(t=n.effect)||void 0===t?void 0:t.type)?"copy":"move",o="boolean"!==typeof n&&n.feedback?n.feedback:"undefined"===typeof e.index?[-1]:[e.index],o=(0,l.EB)(o).filter((e=>e>=-1&&ee-t)),o=-1===o[0]?[-1]:o;let s="boolean"!==typeof n&&n.effect&&n.effect.position?n.effect.position:"drop-target";if(r=this.currentDragFeedback,a=o,(Array.isArray(r)&&Array.isArray(a)?(0,l.fS)(r,a):r===a)&&this.currentDragFeedbackPosition===s)return!0;var r,a;if(this.currentDragFeedback=o,this.currentDragFeedbackPosition=s,this.currentDragFeedbackDisposable.dispose(),-1===o[0])this.domNode.classList.add(s),this.rowsContainer.classList.add(s),this.currentDragFeedbackDisposable=(0,u.OF)((()=>{this.domNode.classList.remove(s),this.rowsContainer.classList.remove(s)}));else{if(o.length>1&&"drop-target"!==s)throw new Error("Can't use multiple feedbacks with position different than 'over'");"drop-target-after"===s&&o[0]{var e;for(const t of o){const i=this.items[t];i.dropTarget=!1,null===(e=i.row)||void 0===e||e.domNode.classList.remove(s)}}))}return!0}onDragLeave(e){var t,i;this.onDragLeaveTimeout.dispose(),this.onDragLeaveTimeout=(0,h.Vg)((()=>this.clearDragOverFeedback()),100,this.disposables),this.currentDragData&&(null===(i=(t=this.dnd).onDragLeave)||void 0===i||i.call(t,this.currentDragData,e.element,e.index,e.browserEvent))}onDrop(e){if(!this.canDrop)return;const t=this.currentDragData;this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,y.CurrentDragAndDropData=void 0,t&&e.browserEvent.dataTransfer&&(e.browserEvent.preventDefault(),t.update(e.browserEvent.dataTransfer),this.dnd.drop(t,e.element,e.index,e.sector,e.browserEvent))}onDragEnd(e){var t,i;this.canDrop=!1,this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,y.CurrentDragAndDropData=void 0,null===(i=(t=this.dnd).onDragEnd)||void 0===i||i.call(t,e)}clearDragOverFeedback(){this.currentDragFeedback=void 0,this.currentDragFeedbackPosition=void 0,this.currentDragFeedbackDisposable.dispose(),this.currentDragFeedbackDisposable=u.JT.None}setupDragAndDropScrollTopAnimation(e){if(!this.dragOverAnimationDisposable){const e=(0,o.xQ)(this.domNode).top;this.dragOverAnimationDisposable=(0,o.jt)((0,o.Jj)(this.domNode),this.animateDragAndDropScrollTop.bind(this,e))}this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationStopDisposable=(0,h.Vg)((()=>{this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)}),1e3,this.disposables),this.dragOverMouseY=e.pageY}animateDragAndDropScrollTop(e){if(void 0===this.dragOverMouseY)return;const t=this.dragOverMouseY-e,i=this.renderHeight-35;t<35?this.scrollTop+=Math.max(-14,Math.floor(.3*(t-35))):t>i&&(this.scrollTop+=Math.min(14,Math.floor(.3*(t-i))))}teardownDragAndDropScrollTopAnimation(){this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)}getTargetSector(e,t){if(void 0===t)return;const i=e.offsetY/this.items[t].size,n=Math.floor(i/.25);return(0,C.uZ)(n,0,3)}getItemIndexFromEventTarget(e){const t=this.scrollableElement.getDomNode();let i=e;for(;i instanceof HTMLElement&&i!==this.rowsContainer&&t.contains(i);){const e=i.getAttribute("data-index");if(e){const t=Number(e);if(!isNaN(t))return t}i=i.parentElement}}getRenderRange(e,t){return{start:this.rangeMap.indexAt(e),end:this.rangeMap.indexAfter(e+t-1)}}_rerender(e,t,i){const n=this.getRenderRange(e,t);let o,s;e===this.elementTop(n.start)?(o=n.start,s=0):n.end-n.start>1&&(o=n.start+1,s=this.elementTop(o)-e);let r=0;for(;;){const a=this.getRenderRange(e,t);let l=!1;for(let e=a.start;e=e.start;t--)this.insertItemInDOM(t);for(let e=a.start;e{i.d(t,{wD:()=>q,aV:()=>ee,sx:()=>j,AA:()=>C,dk:()=>R,iK:()=>F,cK:()=>I,$B:()=>A,hD:()=>M,wn:()=>K,Zo:()=>H,xf:()=>P,Et:()=>O,uZ:()=>G});var n=i(85714),o=i(3640),s=i(39341),r=i(48688),a=i(70036);class l{constructor(e){this.spliceables=e}splice(e,t,i){this.spliceables.forEach((n=>n.splice(e,t,i)))}}var h=i(75629),d=i(60282),c=i(89652),u=i(30333),g=i(24219),m=i(66835),f=i(89599),p=i(63229),_=i(21511),v=i(63686);i(71619);class b extends Error{constructor(e,t){super("ListError [".concat(e,"] ").concat(t))}}var C,w,y=i(84931),S=i(21494),L=i(59130),k=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r};class D{constructor(e){this.trait=e,this.renderedElements=[]}get templateId(){return"template:".concat(this.trait.name)}renderTemplate(e){return e}renderElement(e,t,i){const n=this.renderedElements.findIndex((e=>e.templateData===i));if(n>=0){const e=this.renderedElements[n];this.trait.unrender(i),e.index=t}else{const e={index:t,templateData:i};this.renderedElements.push(e)}this.trait.renderIndex(t,i)}splice(e,t,i){const n=[];for(const o of this.renderedElements)o.index=e+t&&n.push({index:o.index+i-t,templateData:o.templateData});this.renderedElements=n}renderIndexes(e){for(const{index:t,templateData:i}of this.renderedElements)e.indexOf(t)>-1&&this.trait.renderIndex(t,i)}disposeTemplate(e){const t=this.renderedElements.findIndex((t=>t.templateData===e));t<0||this.renderedElements.splice(t,1)}}class N{get name(){return this._trait}get renderer(){return new D(this)}constructor(e){this._trait=e,this.indexes=[],this.sortedIndexes=[],this._onChange=new g.Q5,this.onChange=this._onChange.event}splice(e,t,i){const n=i.length-t,o=e+t,s=[];let r=0;for(;r=o;)s.push(this.sortedIndexes[r++]+n);this.renderer.splice(e,t,i.length),this._set(s,s)}renderIndex(e,t){t.classList.toggle(this._trait,this.contains(e))}unrender(e){e.classList.remove(this._trait)}set(e,t){return this._set(e,[...e].sort(Y),t)}_set(e,t,i){const n=this.indexes,o=this.sortedIndexes;this.indexes=e,this.sortedIndexes=t;const s=Z(o,e);return this.renderer.renderIndexes(s),this._onChange.fire({indexes:e,browserEvent:i}),n}get(){return this.indexes}contains(e){return(0,h.ry)(this.sortedIndexes,e,Y)>=0}dispose(){(0,f.B9)(this._onChange)}}k([u.H],N.prototype,"renderer",null);class x extends N{constructor(e){super("selected"),this.setAriaSelected=e}renderIndex(e,t){super.renderIndex(e,t),this.setAriaSelected&&(this.contains(e)?t.setAttribute("aria-selected","true"):t.setAttribute("aria-selected","false"))}}class E{constructor(e,t,i){this.trait=e,this.view=t,this.identityProvider=i}splice(e,t,i){if(!this.identityProvider)return this.trait.splice(e,t,new Array(i.length).fill(!1));const n=this.trait.get().map((e=>this.identityProvider.getId(this.view.element(e)).toString()));if(0===n.length)return this.trait.splice(e,t,new Array(i.length).fill(!1));const o=new Set(n),s=i.map((e=>o.has(this.identityProvider.getId(e).toString())));this.trait.splice(e,t,s)}}function I(e){return"INPUT"===e.tagName||"TEXTAREA"===e.tagName}function T(e,t){return!!e.classList.contains(t)||!e.classList.contains("monaco-list")&&(!!e.parentElement&&T(e.parentElement,t))}function M(e){return T(e,"monaco-editor")}function A(e){return T(e,"monaco-custom-toggle")}function R(e){return T(e,"action-item")}function O(e){return T(e,"monaco-tree-sticky-row")}function P(e){return e.classList.contains("monaco-tree-sticky-container")}function F(e){return!!("A"===e.tagName&&e.classList.contains("monaco-button")||"DIV"===e.tagName&&e.classList.contains("monaco-button-dropdown"))||!e.classList.contains("monaco-list")&&(!!e.parentElement&&F(e.parentElement))}class B{get onKeyDown(){return g.ju.chain(this.disposables.add(new o.Y(this.view.domNode,"keydown")).event,(e=>e.filter((e=>!I(e.target))).map((e=>new s.y(e)))))}constructor(e,t,i){this.list=e,this.view=t,this.disposables=new f.SL,this.multipleSelectionDisposables=new f.SL,this.multipleSelectionSupport=i.multipleSelectionSupport,this.disposables.add(this.onKeyDown((e=>{switch(e.keyCode){case 3:return this.onEnter(e);case 16:return this.onUpArrow(e);case 18:return this.onDownArrow(e);case 11:return this.onPageUpArrow(e);case 12:return this.onPageDownArrow(e);case 9:return this.onEscape(e);case 31:this.multipleSelectionSupport&&(_.dz?e.metaKey:e.ctrlKey)&&this.onCtrlA(e)}})))}updateOptions(e){void 0!==e.multipleSelectionSupport&&(this.multipleSelectionSupport=e.multipleSelectionSupport)}onEnter(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection(this.list.getFocus(),e.browserEvent)}onUpArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusPrevious(1,!1,e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onDownArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusNext(1,!1,e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onPageUpArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusPreviousPage(e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onPageDownArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusNextPage(e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onCtrlA(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection((0,h.w6)(this.list.length),e.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus()}onEscape(e){this.list.getSelection().length&&(e.preventDefault(),e.stopPropagation(),this.list.setSelection([],e.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus())}dispose(){this.disposables.dispose(),this.multipleSelectionDisposables.dispose()}}k([u.H],B.prototype,"onKeyDown",null),function(e){e[e.Automatic=0]="Automatic",e[e.Trigger=1]="Trigger"}(C||(C={})),function(e){e[e.Idle=0]="Idle",e[e.Typing=1]="Typing"}(w||(w={}));const z=new class{mightProducePrintableCharacter(e){return!(e.ctrlKey||e.metaKey||e.altKey)&&(e.keyCode>=31&&e.keyCode<=56||e.keyCode>=21&&e.keyCode<=30||e.keyCode>=98&&e.keyCode<=107||e.keyCode>=85&&e.keyCode<=95)}};class V{constructor(e,t,i,n,o){this.list=e,this.view=t,this.keyboardNavigationLabelProvider=i,this.keyboardNavigationEventFilter=n,this.delegate=o,this.enabled=!1,this.state=w.Idle,this.mode=C.Automatic,this.triggered=!1,this.previouslyFocused=-1,this.enabledDisposables=new f.SL,this.disposables=new f.SL,this.updateOptions(e.options)}updateOptions(e){var t,i;null===(t=e.typeNavigationEnabled)||void 0===t||t?this.enable():this.disable(),this.mode=null!==(i=e.typeNavigationMode)&&void 0!==i?i:C.Automatic}enable(){if(this.enabled)return;let e=!1;const t=g.ju.chain(this.enabledDisposables.add(new o.Y(this.view.domNode,"keydown")).event,(t=>t.filter((e=>!I(e.target))).filter((()=>this.mode===C.Automatic||this.triggered)).map((e=>new s.y(e))).filter((t=>e||this.keyboardNavigationEventFilter(t))).filter((e=>this.delegate.mightProducePrintableCharacter(e))).forEach((e=>n.zB.stop(e,!0))).map((e=>e.browserEvent.key)))),i=g.ju.debounce(t,(()=>null),800,void 0,void 0,void 0,this.enabledDisposables);g.ju.reduce(g.ju.any(t,i),((e,t)=>null===t?null:(e||"")+t),void 0,this.enabledDisposables)(this.onInput,this,this.enabledDisposables),i(this.onClear,this,this.enabledDisposables),t((()=>e=!0),void 0,this.enabledDisposables),i((()=>e=!1),void 0,this.enabledDisposables),this.enabled=!0,this.triggered=!1}disable(){this.enabled&&(this.enabledDisposables.clear(),this.enabled=!1,this.triggered=!1)}onClear(){var e;const t=this.list.getFocus();if(t.length>0&&t[0]===this.previouslyFocused){const i=null===(e=this.list.options.accessibilityProvider)||void 0===e?void 0:e.getAriaLabel(this.list.element(t[0]));"string"===typeof i?(0,a.Z9)(i):i&&(0,a.Z9)(i.get())}this.previouslyFocused=-1}onInput(e){if(!e)return this.state=w.Idle,void(this.triggered=!1);const t=this.list.getFocus(),i=t.length>0?t[0]:0,n=this.state===w.Idle?1:0;this.state=w.Typing;for(let o=0;o1&&1===n.length)return this.previouslyFocused=i,this.list.setFocus([t]),void this.list.reveal(t)}}}else if("undefined"===typeof r||(0,m.Ji)(e,r))return this.previouslyFocused=i,this.list.setFocus([t]),void this.list.reveal(t)}}dispose(){this.disable(),this.enabledDisposables.dispose(),this.disposables.dispose()}}class W{constructor(e,t){this.list=e,this.view=t,this.disposables=new f.SL;const i=g.ju.chain(this.disposables.add(new o.Y(t.domNode,"keydown")).event,(e=>e.filter((e=>!I(e.target))).map((e=>new s.y(e)))));g.ju.chain(i,(e=>e.filter((e=>2===e.keyCode&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&!e.altKey))))(this.onTab,this,this.disposables)}onTab(e){if(e.target!==this.view.domNode)return;const t=this.list.getFocus();if(0===t.length)return;const i=this.view.domElement(t[0]);if(!i)return;const o=i.querySelector("[tabIndex]");if(!o||!(o instanceof HTMLElement)||-1===o.tabIndex)return;const s=(0,n.Jj)(o).getComputedStyle(o);"hidden"!==s.visibility&&"none"!==s.display&&(e.preventDefault(),e.stopPropagation(),o.focus())}dispose(){this.disposables.dispose()}}function H(e){return _.dz?e.browserEvent.metaKey:e.browserEvent.ctrlKey}function K(e){return e.browserEvent.shiftKey}const U={isSelectionSingleChangeEvent:H,isSelectionRangeChangeEvent:K};class j{constructor(e){this.list=e,this.disposables=new f.SL,this._onPointer=new g.Q5,this.onPointer=this._onPointer.event,!1!==e.options.multipleSelectionSupport&&(this.multipleSelectionController=this.list.options.multipleSelectionController||U),this.mouseSupport="undefined"===typeof e.options.mouseSupport||!!e.options.mouseSupport,this.mouseSupport&&(e.onMouseDown(this.onMouseDown,this,this.disposables),e.onContextMenu(this.onContextMenu,this,this.disposables),e.onMouseDblClick(this.onDoubleClick,this,this.disposables),e.onTouchStart(this.onMouseDown,this,this.disposables),this.disposables.add(r.o.addTarget(e.getHTMLElement()))),g.ju.any(e.onMouseClick,e.onMouseMiddleClick,e.onTap)(this.onViewPointer,this,this.disposables)}updateOptions(e){void 0!==e.multipleSelectionSupport&&(this.multipleSelectionController=void 0,e.multipleSelectionSupport&&(this.multipleSelectionController=this.list.options.multipleSelectionController||U))}isSelectionSingleChangeEvent(e){return!!this.multipleSelectionController&&this.multipleSelectionController.isSelectionSingleChangeEvent(e)}isSelectionRangeChangeEvent(e){return!!this.multipleSelectionController&&this.multipleSelectionController.isSelectionRangeChangeEvent(e)}isSelectionChangeEvent(e){return this.isSelectionSingleChangeEvent(e)||this.isSelectionRangeChangeEvent(e)}onMouseDown(e){M(e.browserEvent.target)||(0,n.vY)()!==e.browserEvent.target&&this.list.domFocus()}onContextMenu(e){if(I(e.browserEvent.target)||M(e.browserEvent.target))return;const t="undefined"===typeof e.index?[]:[e.index];this.list.setFocus(t,e.browserEvent)}onViewPointer(e){if(!this.mouseSupport)return;if(I(e.browserEvent.target)||M(e.browserEvent.target))return;if(e.browserEvent.isHandledByList)return;e.browserEvent.isHandledByList=!0;const t=e.index;return"undefined"===typeof t?(this.list.setFocus([],e.browserEvent),this.list.setSelection([],e.browserEvent),void this.list.setAnchor(void 0)):this.isSelectionChangeEvent(e)?this.changeSelection(e):(this.list.setFocus([t],e.browserEvent),this.list.setAnchor(t),i=e.browserEvent,(0,n.N5)(i)&&2===i.button||this.list.setSelection([t],e.browserEvent),void this._onPointer.fire(e));var i}onDoubleClick(e){if(I(e.browserEvent.target)||M(e.browserEvent.target))return;if(this.isSelectionChangeEvent(e))return;if(e.browserEvent.isHandledByList)return;e.browserEvent.isHandledByList=!0;const t=this.list.getFocus();this.list.setSelection(t,e.browserEvent)}changeSelection(e){const t=e.index;let i=this.list.getAnchor();if(this.isSelectionRangeChangeEvent(e)){if("undefined"===typeof i){const e=this.list.getFocus()[0];i=null!==e&&void 0!==e?e:t,this.list.setAnchor(i)}const n=Math.min(i,t),o=Math.max(i,t),s=(0,h.w6)(n,o+1),r=this.list.getSelection(),a=function(e,t){const i=e.indexOf(t);if(-1===i)return[];const n=[];let o=i-1;for(;o>=0&&e[o]===t-(i-o);)n.push(e[o--]);n.reverse(),o=i;for(;o=e.length)i.push(t[o++]);else if(o>=t.length)i.push(e[n++]);else{if(e[n]===t[o]){n++,o++;continue}e[n]e!==t));this.list.setFocus([t]),this.list.setAnchor(t),i.length===n.length?this.list.setSelection([...n,t],e.browserEvent):this.list.setSelection(n,e.browserEvent)}}dispose(){this.disposables.dispose()}}class q{constructor(e,t){this.styleElement=e,this.selectorSuffix=t}style(e){var t,i;const o=this.selectorSuffix&&".".concat(this.selectorSuffix),s=[];e.listBackground&&s.push(".monaco-list".concat(o," .monaco-list-rows { background: ").concat(e.listBackground,"; }")),e.listFocusBackground&&(s.push(".monaco-list".concat(o,":focus .monaco-list-row.focused { background-color: ").concat(e.listFocusBackground,"; }")),s.push(".monaco-list".concat(o,":focus .monaco-list-row.focused:hover { background-color: ").concat(e.listFocusBackground,"; }"))),e.listFocusForeground&&s.push(".monaco-list".concat(o,":focus .monaco-list-row.focused { color: ").concat(e.listFocusForeground,"; }")),e.listActiveSelectionBackground&&(s.push(".monaco-list".concat(o,":focus .monaco-list-row.selected { background-color: ").concat(e.listActiveSelectionBackground,"; }")),s.push(".monaco-list".concat(o,":focus .monaco-list-row.selected:hover { background-color: ").concat(e.listActiveSelectionBackground,"; }"))),e.listActiveSelectionForeground&&s.push(".monaco-list".concat(o,":focus .monaco-list-row.selected { color: ").concat(e.listActiveSelectionForeground,"; }")),e.listActiveSelectionIconForeground&&s.push(".monaco-list".concat(o,":focus .monaco-list-row.selected .codicon { color: ").concat(e.listActiveSelectionIconForeground,"; }")),e.listFocusAndSelectionBackground&&s.push("\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list".concat(o,":focus .monaco-list-row.selected.focused { background-color: ").concat(e.listFocusAndSelectionBackground,"; }\n\t\t\t")),e.listFocusAndSelectionForeground&&s.push("\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list".concat(o,":focus .monaco-list-row.selected.focused { color: ").concat(e.listFocusAndSelectionForeground,"; }\n\t\t\t")),e.listInactiveFocusForeground&&(s.push(".monaco-list".concat(o," .monaco-list-row.focused { color: ").concat(e.listInactiveFocusForeground,"; }")),s.push(".monaco-list".concat(o," .monaco-list-row.focused:hover { color: ").concat(e.listInactiveFocusForeground,"; }"))),e.listInactiveSelectionIconForeground&&s.push(".monaco-list".concat(o," .monaco-list-row.focused .codicon { color: ").concat(e.listInactiveSelectionIconForeground,"; }")),e.listInactiveFocusBackground&&(s.push(".monaco-list".concat(o," .monaco-list-row.focused { background-color: ").concat(e.listInactiveFocusBackground,"; }")),s.push(".monaco-list".concat(o," .monaco-list-row.focused:hover { background-color: ").concat(e.listInactiveFocusBackground,"; }"))),e.listInactiveSelectionBackground&&(s.push(".monaco-list".concat(o," .monaco-list-row.selected { background-color: ").concat(e.listInactiveSelectionBackground,"; }")),s.push(".monaco-list".concat(o," .monaco-list-row.selected:hover { background-color: ").concat(e.listInactiveSelectionBackground,"; }"))),e.listInactiveSelectionForeground&&s.push(".monaco-list".concat(o," .monaco-list-row.selected { color: ").concat(e.listInactiveSelectionForeground,"; }")),e.listHoverBackground&&s.push(".monaco-list".concat(o,":not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ").concat(e.listHoverBackground,"; }")),e.listHoverForeground&&s.push(".monaco-list".concat(o,":not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { color: ").concat(e.listHoverForeground,"; }"));const r=(0,n.XT)(e.listFocusAndSelectionOutline,(0,n.XT)(e.listSelectionOutline,null!==(t=e.listFocusOutline)&&void 0!==t?t:""));r&&s.push(".monaco-list".concat(o,":focus .monaco-list-row.focused.selected { outline: 1px solid ").concat(r,"; outline-offset: -1px;}")),e.listFocusOutline&&s.push("\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list".concat(o,":focus .monaco-list-row.focused { outline: 1px solid ").concat(e.listFocusOutline,"; outline-offset: -1px; }\n\t\t\t\t.monaco-workbench.context-menu-visible .monaco-list").concat(o,".last-focused .monaco-list-row.focused { outline: 1px solid ").concat(e.listFocusOutline,"; outline-offset: -1px; }\n\t\t\t"));const a=(0,n.XT)(e.listSelectionOutline,null!==(i=e.listInactiveFocusOutline)&&void 0!==i?i:"");a&&s.push(".monaco-list".concat(o," .monaco-list-row.focused.selected { outline: 1px dotted ").concat(a,"; outline-offset: -1px; }")),e.listSelectionOutline&&s.push(".monaco-list".concat(o," .monaco-list-row.selected { outline: 1px dotted ").concat(e.listSelectionOutline,"; outline-offset: -1px; }")),e.listInactiveFocusOutline&&s.push(".monaco-list".concat(o," .monaco-list-row.focused { outline: 1px dotted ").concat(e.listInactiveFocusOutline,"; outline-offset: -1px; }")),e.listHoverOutline&&s.push(".monaco-list".concat(o," .monaco-list-row:hover { outline: 1px dashed ").concat(e.listHoverOutline,"; outline-offset: -1px; }")),e.listDropOverBackground&&s.push("\n\t\t\t\t.monaco-list".concat(o,".drop-target,\n\t\t\t\t.monaco-list").concat(o," .monaco-list-rows.drop-target,\n\t\t\t\t.monaco-list").concat(o," .monaco-list-row.drop-target { background-color: ").concat(e.listDropOverBackground," !important; color: inherit !important; }\n\t\t\t")),e.listDropBetweenBackground&&(s.push("\n\t\t\t.monaco-list".concat(o," .monaco-list-rows.drop-target-before .monaco-list-row:first-child::before,\n\t\t\t.monaco-list").concat(o,' .monaco-list-row.drop-target-before::before {\n\t\t\t\tcontent: ""; position: absolute; top: 0px; left: 0px; width: 100%; height: 1px;\n\t\t\t\tbackground-color: ').concat(e.listDropBetweenBackground,";\n\t\t\t}")),s.push("\n\t\t\t.monaco-list".concat(o," .monaco-list-rows.drop-target-after .monaco-list-row:last-child::after,\n\t\t\t.monaco-list").concat(o,' .monaco-list-row.drop-target-after::after {\n\t\t\t\tcontent: ""; position: absolute; bottom: 0px; left: 0px; width: 100%; height: 1px;\n\t\t\t\tbackground-color: ').concat(e.listDropBetweenBackground,";\n\t\t\t}"))),e.tableColumnsBorder&&s.push("\n\t\t\t\t.monaco-table > .monaco-split-view2,\n\t\t\t\t.monaco-table > .monaco-split-view2 .monaco-sash.vertical::before,\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2,\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\t\t\tborder-color: ".concat(e.tableColumnsBorder,";\n\t\t\t\t}\n\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2,\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t}\n\t\t\t")),e.tableOddRowsBackgroundColor&&s.push("\n\t\t\t\t.monaco-table .monaco-list-row[data-parity=odd]:not(.focused):not(.selected):not(:hover) .monaco-table-tr,\n\t\t\t\t.monaco-table .monaco-list:not(:focus) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr,\n\t\t\t\t.monaco-table .monaco-list:not(.focused) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr {\n\t\t\t\t\tbackground-color: ".concat(e.tableOddRowsBackgroundColor,";\n\t\t\t\t}\n\t\t\t")),this.styleElement.textContent=s.join("\n")}}const G={listFocusBackground:"#7FB0D0",listActiveSelectionBackground:"#0E639C",listActiveSelectionForeground:"#FFFFFF",listActiveSelectionIconForeground:"#FFFFFF",listFocusAndSelectionOutline:"#90C2F9",listFocusAndSelectionBackground:"#094771",listFocusAndSelectionForeground:"#FFFFFF",listInactiveSelectionBackground:"#3F3F46",listInactiveSelectionIconForeground:"#FFFFFF",listHoverBackground:"#2A2D2E",listDropOverBackground:"#383B3D",listDropBetweenBackground:"#EEEEEE",treeIndentGuidesStroke:"#a9a9a9",treeInactiveIndentGuidesStroke:c.Il.fromHex("#a9a9a9").transparent(.4).toString(),tableColumnsBorder:c.Il.fromHex("#cccccc").transparent(.2).toString(),tableOddRowsBackgroundColor:c.Il.fromHex("#cccccc").transparent(.04).toString(),listBackground:void 0,listFocusForeground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusForeground:void 0,listInactiveFocusBackground:void 0,listHoverForeground:void 0,listFocusOutline:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listHoverOutline:void 0},Q={keyboardSupport:!0,mouseSupport:!0,multipleSelectionSupport:!0,dnd:{getDragURI:()=>null,onDragStart(){},onDragOver:()=>!1,drop(){},dispose(){}}};function Z(e,t){const i=[];let n=0,o=0;for(;n=e.length)i.push(t[o++]);else if(o>=t.length)i.push(e[n++]);else{if(e[n]===t[o]){i.push(e[n]),n++,o++;continue}e[n]e-t;class ${constructor(e,t){this._templateId=e,this.renderers=t}get templateId(){return this._templateId}renderTemplate(e){return this.renderers.map((t=>t.renderTemplate(e)))}renderElement(e,t,i,n){let o=0;for(const s of this.renderers)s.renderElement(e,t,i[o++],n)}disposeElement(e,t,i,n){var o;let s=0;for(const r of this.renderers)null===(o=r.disposeElement)||void 0===o||o.call(r,e,t,i[s],n),s+=1}disposeTemplate(e){let t=0;for(const i of this.renderers)i.disposeTemplate(e[t++])}}class J{constructor(e){this.accessibilityProvider=e,this.templateId="a18n"}renderTemplate(e){return{container:e,disposables:new f.SL}}renderElement(e,t,i){const n=this.accessibilityProvider.getAriaLabel(e),o=n&&"string"!==typeof n?n:(0,L.Dz)(n);i.disposables.add((0,L.EH)((e=>{this.setAriaLabel(e.readObservable(o),i.container)})));const s=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(e);"number"===typeof s?i.container.setAttribute("aria-level","".concat(s)):i.container.removeAttribute("aria-level")}setAriaLabel(e,t){e?t.setAttribute("aria-label",e):t.removeAttribute("aria-label")}disposeElement(e,t,i,n){i.disposables.clear()}disposeTemplate(e){e.disposables.dispose()}}class X{constructor(e,t){this.list=e,this.dnd=t}getDragElements(e){const t=this.list.getSelectedElements();return t.indexOf(e)>-1?t:[e]}getDragURI(e){return this.dnd.getDragURI(e)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e,t)}onDragStart(e,t){var i,n;null===(n=(i=this.dnd).onDragStart)||void 0===n||n.call(i,e,t)}onDragOver(e,t,i,n,o){return this.dnd.onDragOver(e,t,i,n,o)}onDragLeave(e,t,i,n){var o,s;null===(s=(o=this.dnd).onDragLeave)||void 0===s||s.call(o,e,t,i,n)}onDragEnd(e){var t,i;null===(i=(t=this.dnd).onDragEnd)||void 0===i||i.call(t,e)}drop(e,t,i,n,o){this.dnd.drop(e,t,i,n,o)}dispose(){this.dnd.dispose()}}class ee{get onDidChangeFocus(){return g.ju.map(this.eventBufferer.wrapEvent(this.focus.onChange),(e=>this.toListEvent(e)),this.disposables)}get onDidChangeSelection(){return g.ju.map(this.eventBufferer.wrapEvent(this.selection.onChange),(e=>this.toListEvent(e)),this.disposables)}get domId(){return this.view.domId}get onDidScroll(){return this.view.onDidScroll}get onMouseClick(){return this.view.onMouseClick}get onMouseDblClick(){return this.view.onMouseDblClick}get onMouseMiddleClick(){return this.view.onMouseMiddleClick}get onPointer(){return this.mouseController.onPointer}get onMouseDown(){return this.view.onMouseDown}get onMouseOver(){return this.view.onMouseOver}get onMouseOut(){return this.view.onMouseOut}get onTouchStart(){return this.view.onTouchStart}get onTap(){return this.view.onTap}get onContextMenu(){let e=!1;const t=g.ju.chain(this.disposables.add(new o.Y(this.view.domNode,"keydown")).event,(t=>t.map((e=>new s.y(e))).filter((t=>e=58===t.keyCode||t.shiftKey&&68===t.keyCode)).map((e=>n.zB.stop(e,!0))).filter((()=>!1)))),i=g.ju.chain(this.disposables.add(new o.Y(this.view.domNode,"keyup")).event,(t=>t.forEach((()=>e=!1)).map((e=>new s.y(e))).filter((e=>58===e.keyCode||e.shiftKey&&68===e.keyCode)).map((e=>n.zB.stop(e,!0))).map((e=>{let{browserEvent:t}=e;const i=this.getFocus(),n=i.length?i[0]:void 0;return{index:n,element:"undefined"!==typeof n?this.view.element(n):void 0,anchor:"undefined"!==typeof n?this.view.domElement(n):this.view.domNode,browserEvent:t}})))),r=g.ju.chain(this.view.onContextMenu,(t=>t.filter((t=>!e)).map((e=>{let{element:t,index:i,browserEvent:o}=e;return{element:t,index:i,anchor:new S.n((0,n.Jj)(this.view.domNode),o),browserEvent:o}}))));return g.ju.any(t,i,r)}get onKeyDown(){return this.disposables.add(new o.Y(this.view.domNode,"keydown")).event}get onDidFocus(){return g.ju.signal(this.disposables.add(new o.Y(this.view.domNode,"focus",!0)).event)}get onDidBlur(){return g.ju.signal(this.disposables.add(new o.Y(this.view.domNode,"blur",!0)).event)}constructor(e,t,i,o){let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:Q;var r,a,h,d;this.user=e,this._options=s,this.focus=new N("focused"),this.anchor=new N("anchor"),this.eventBufferer=new g.E7,this._ariaLabel="",this.disposables=new f.SL,this._onDidDispose=new g.Q5,this.onDidDispose=this._onDidDispose.event;const c=this._options.accessibilityProvider&&this._options.accessibilityProvider.getWidgetRole?null===(r=this._options.accessibilityProvider)||void 0===r?void 0:r.getWidgetRole():"list";this.selection=new x("listbox"!==c);const u=[this.focus.renderer,this.selection.renderer];this.accessibilityProvider=s.accessibilityProvider,this.accessibilityProvider&&(u.push(new J(this.accessibilityProvider)),null===(h=(a=this.accessibilityProvider).onDidChangeActiveDescendant)||void 0===h||h.call(a,this.onDidChangeActiveDescendant,this,this.disposables)),o=o.map((e=>new $(e.templateId,[...u,e])));const m={...s,dnd:s.dnd&&new X(this,s.dnd)};if(this.view=this.createListView(t,i,o,m),this.view.domNode.setAttribute("role",c),s.styleController)this.styleController=s.styleController(this.view.domId);else{const e=(0,n.dS)(this.view.domNode);this.styleController=new q(e,this.view.domId)}if(this.spliceable=new l([new E(this.focus,this.view,s.identityProvider),new E(this.selection,this.view,s.identityProvider),new E(this.anchor,this.view,s.identityProvider),this.view]),this.disposables.add(this.focus),this.disposables.add(this.selection),this.disposables.add(this.anchor),this.disposables.add(this.view),this.disposables.add(this._onDidDispose),this.disposables.add(new W(this,this.view)),("boolean"!==typeof s.keyboardSupport||s.keyboardSupport)&&(this.keyboardController=new B(this,this.view,s),this.disposables.add(this.keyboardController)),s.keyboardNavigationLabelProvider){const e=s.keyboardNavigationDelegate||z;this.typeNavigationController=new V(this,this.view,s.keyboardNavigationLabelProvider,null!==(d=s.keyboardNavigationEventFilter)&&void 0!==d?d:()=>!0,e),this.disposables.add(this.typeNavigationController)}this.mouseController=this.createMouseController(s),this.disposables.add(this.mouseController),this.onDidChangeFocus(this._onFocusChange,this,this.disposables),this.onDidChangeSelection(this._onSelectionChange,this,this.disposables),this.accessibilityProvider&&(this.ariaLabel=this.accessibilityProvider.getWidgetAriaLabel()),!1!==this._options.multipleSelectionSupport&&this.view.domNode.setAttribute("aria-multiselectable","true")}createListView(e,t,i,n){return new y.Bv(e,t,i,n)}createMouseController(e){return new j(this)}updateOptions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i;this._options={...this._options,...e},null===(t=this.typeNavigationController)||void 0===t||t.updateOptions(this._options),void 0!==this._options.multipleSelectionController&&(this._options.multipleSelectionSupport?this.view.domNode.setAttribute("aria-multiselectable","true"):this.view.domNode.removeAttribute("aria-multiselectable")),this.mouseController.updateOptions(e),null===(i=this.keyboardController)||void 0===i||i.updateOptions(e),this.view.updateOptions(e)}get options(){return this._options}splice(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(e<0||e>this.view.length)throw new b(this.user,"Invalid start index: ".concat(e));if(t<0)throw new b(this.user,"Invalid delete count: ".concat(t));0===t&&0===i.length||this.eventBufferer.bufferEvents((()=>this.spliceable.splice(e,t,i)))}rerender(){this.view.rerender()}element(e){return this.view.element(e)}indexOf(e){return this.view.indexOf(e)}indexAt(e){return this.view.indexAt(e)}get length(){return this.view.length}get contentHeight(){return this.view.contentHeight}get onDidChangeContentHeight(){return this.view.onDidChangeContentHeight}get scrollTop(){return this.view.getScrollTop()}set scrollTop(e){this.view.setScrollTop(e)}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}get firstVisibleIndex(){return this.view.firstVisibleIndex}get ariaLabel(){return this._ariaLabel}set ariaLabel(e){this._ariaLabel=e,this.view.domNode.setAttribute("aria-label",e)}domFocus(){this.view.domNode.focus({preventScroll:!0})}layout(e,t){this.view.layout(e,t)}setSelection(e,t){for(const i of e)if(i<0||i>=this.length)throw new b(this.user,"Invalid index ".concat(i));this.selection.set(e,t)}getSelection(){return this.selection.get()}getSelectedElements(){return this.getSelection().map((e=>this.view.element(e)))}setAnchor(e){if("undefined"!==typeof e){if(e<0||e>=this.length)throw new b(this.user,"Invalid index ".concat(e));this.anchor.set([e])}else this.anchor.set([])}getAnchor(){return(0,h.Xh)(this.anchor.get(),void 0)}getAnchorElement(){const e=this.getAnchor();return"undefined"===typeof e?void 0:this.element(e)}setFocus(e,t){for(const i of e)if(i<0||i>=this.length)throw new b(this.user,"Invalid index ".concat(i));this.focus.set(e,t)}focusNext(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0;if(0===this.length)return;const o=this.focus.get(),s=this.findNextIndex(o.length>0?o[0]+e:0,t,n);s>-1&&this.setFocus([s],i)}focusPrevious(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0;if(0===this.length)return;const o=this.focus.get(),s=this.findPreviousIndex(o.length>0?o[0]-e:0,t,n);s>-1&&this.setFocus([s],i)}async focusNextPage(e,t){let i=this.view.indexAt(this.view.getScrollTop()+this.view.renderHeight);i=0===i?0:i-1;const n=this.getFocus()[0];if(n!==i&&(void 0===n||i>n)){const o=this.findPreviousIndex(i,!1,t);o>-1&&n!==o?this.setFocus([o],e):this.setFocus([i],e)}else{const o=this.view.getScrollTop();let s=o+this.view.renderHeight;i>n&&(s-=this.view.elementHeight(i)),this.view.setScrollTop(s),this.view.getScrollTop()!==o&&(this.setFocus([]),await(0,d.Vs)(0),await this.focusNextPage(e,t))}}async focusPreviousPage(e,t){let i,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>0;const o=n(),s=this.view.getScrollTop()+o;i=0===s?this.view.indexAt(s):this.view.indexAfter(s-1);const r=this.getFocus()[0];if(r!==i&&(void 0===r||r>=i)){const n=this.findNextIndex(i,!1,t);n>-1&&r!==n?this.setFocus([n],e):this.setFocus([i],e)}else{const i=s;this.view.setScrollTop(s-this.view.renderHeight-o),this.view.getScrollTop()+n()!==i&&(this.setFocus([]),await(0,d.Vs)(0),await this.focusPreviousPage(e,t,n))}}focusLast(e,t){if(0===this.length)return;const i=this.findPreviousIndex(this.length-1,!1,t);i>-1&&this.setFocus([i],e)}focusFirst(e,t){this.focusNth(0,e,t)}focusNth(e,t,i){if(0===this.length)return;const n=this.findNextIndex(e,!1,i);n>-1&&this.setFocus([n],t)}findNextIndex(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2?arguments[2]:void 0;for(let n=0;n=this.length&&!t)return-1;if(e%=this.length,!i||i(this.element(e)))return e;e++}return-1}findPreviousIndex(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2?arguments[2]:void 0;for(let n=0;nthis.view.element(e)))}reveal(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(e<0||e>=this.length)throw new b(this.user,"Invalid index ".concat(e));const n=this.view.getScrollTop(),o=this.view.elementTop(e),s=this.view.elementHeight(e);if((0,v.hj)(t)){const e=s-this.view.renderHeight+i;this.view.setScrollTop(e*(0,p.uZ)(t,0,1)+o-i)}else{const e=o+s,t=n+this.view.renderHeight;o=t||(o=t&&s>=this.view.renderHeight?this.view.setScrollTop(o-i):e>=t&&this.view.setScrollTop(e-this.view.renderHeight))}}getRelativeTop(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e<0||e>=this.length)throw new b(this.user,"Invalid index ".concat(e));const i=this.view.getScrollTop(),n=this.view.elementTop(e),o=this.view.elementHeight(e);if(ni+this.view.renderHeight)return null;const s=o-this.view.renderHeight+t;return Math.abs((i+t-n)/s)}getHTMLElement(){return this.view.domNode}getScrollableElement(){return this.view.scrollableElementDomNode}getElementID(e){return this.view.getElementDomId(e)}getElementTop(e){return this.view.elementTop(e)}style(e){this.styleController.style(e)}toListEvent(e){let{indexes:t,browserEvent:i}=e;return{indexes:t,elements:t.map((e=>this.view.element(e))),browserEvent:i}}_onFocusChange(){const e=this.focus.get();this.view.domNode.classList.toggle("element-focused",e.length>0),this.onDidChangeActiveDescendant()}onDidChangeActiveDescendant(){var e;const t=this.focus.get();if(t.length>0){let i;(null===(e=this.accessibilityProvider)||void 0===e?void 0:e.getActiveDescendantId)&&(i=this.accessibilityProvider.getActiveDescendantId(this.view.element(t[0]))),this.view.domNode.setAttribute("aria-activedescendant",i||this.view.getElementDomId(t[0]))}else this.view.domNode.removeAttribute("aria-activedescendant")}_onSelectionChange(){const e=this.selection.get();this.view.domNode.classList.toggle("selection-none",0===e.length),this.view.domNode.classList.toggle("selection-single",1===e.length),this.view.domNode.classList.toggle("selection-multiple",e.length>1)}dispose(){this._onDidDispose.fire(),this.disposables.dispose(),this._onDidDispose.dispose()}}k([u.H],ee.prototype,"onDidChangeFocus",null),k([u.H],ee.prototype,"onDidChangeSelection",null),k([u.H],ee.prototype,"onContextMenu",null),k([u.H],ee.prototype,"onKeyDown",null),k([u.H],ee.prototype,"onDidFocus",null),k([u.H],ee.prototype,"onDidBlur",null)},38059:(e,t,i)=>{i.d(t,{l:()=>u,g:()=>b});var n=i(85714),o=i(3640),s=i(48688),r=i(60282),a=i(30333),l=i(24219),h=i(89599),d=i(21511),c=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r};var u;!function(e){e.North="north",e.South="south",e.East="east",e.West="west"}(u||(u={}));const g=new l.Q5;const m=new l.Q5;class f{constructor(e){this.el=e,this.disposables=new h.SL}get onPointerMove(){return this.disposables.add(new o.Y((0,n.Jj)(this.el),"mousemove")).event}get onPointerUp(){return this.disposables.add(new o.Y((0,n.Jj)(this.el),"mouseup")).event}dispose(){this.disposables.dispose()}}c([a.H],f.prototype,"onPointerMove",null),c([a.H],f.prototype,"onPointerUp",null);class p{get onPointerMove(){return this.disposables.add(new o.Y(this.el,s.t.Change)).event}get onPointerUp(){return this.disposables.add(new o.Y(this.el,s.t.End)).event}constructor(e){this.el=e,this.disposables=new h.SL}dispose(){this.disposables.dispose()}}c([a.H],p.prototype,"onPointerMove",null),c([a.H],p.prototype,"onPointerUp",null);class _{get onPointerMove(){return this.factory.onPointerMove}get onPointerUp(){return this.factory.onPointerUp}constructor(e){this.factory=e}dispose(){}}c([a.H],_.prototype,"onPointerMove",null),c([a.H],_.prototype,"onPointerUp",null);const v="pointer-events-disabled";class b extends h.JT{get state(){return this._state}get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}set state(e){this._state!==e&&(this.el.classList.toggle("disabled",0===e),this.el.classList.toggle("minimum",1===e),this.el.classList.toggle("maximum",2===e),this._state=e,this.onDidEnablementChange.fire(e))}set orthogonalStartSash(e){if(this._orthogonalStartSash!==e){if(this.orthogonalStartDragHandleDisposables.clear(),this.orthogonalStartSashDisposables.clear(),e){const t=t=>{this.orthogonalStartDragHandleDisposables.clear(),0!==t&&(this._orthogonalStartDragHandle=(0,n.R3)(this.el,(0,n.$)(".orthogonal-drag-handle.start")),this.orthogonalStartDragHandleDisposables.add((0,h.OF)((()=>this._orthogonalStartDragHandle.remove()))),this.orthogonalStartDragHandleDisposables.add(new o.Y(this._orthogonalStartDragHandle,"mouseenter")).event((()=>b.onMouseEnter(e)),void 0,this.orthogonalStartDragHandleDisposables),this.orthogonalStartDragHandleDisposables.add(new o.Y(this._orthogonalStartDragHandle,"mouseleave")).event((()=>b.onMouseLeave(e)),void 0,this.orthogonalStartDragHandleDisposables))};this.orthogonalStartSashDisposables.add(e.onDidEnablementChange.event(t,this)),t(e.state)}this._orthogonalStartSash=e}}set orthogonalEndSash(e){if(this._orthogonalEndSash!==e){if(this.orthogonalEndDragHandleDisposables.clear(),this.orthogonalEndSashDisposables.clear(),e){const t=t=>{this.orthogonalEndDragHandleDisposables.clear(),0!==t&&(this._orthogonalEndDragHandle=(0,n.R3)(this.el,(0,n.$)(".orthogonal-drag-handle.end")),this.orthogonalEndDragHandleDisposables.add((0,h.OF)((()=>this._orthogonalEndDragHandle.remove()))),this.orthogonalEndDragHandleDisposables.add(new o.Y(this._orthogonalEndDragHandle,"mouseenter")).event((()=>b.onMouseEnter(e)),void 0,this.orthogonalEndDragHandleDisposables),this.orthogonalEndDragHandleDisposables.add(new o.Y(this._orthogonalEndDragHandle,"mouseleave")).event((()=>b.onMouseLeave(e)),void 0,this.orthogonalEndDragHandleDisposables))};this.orthogonalEndSashDisposables.add(e.onDidEnablementChange.event(t,this)),t(e.state)}this._orthogonalEndSash=e}}constructor(e,t,i){super(),this.hoverDelay=300,this.hoverDelayer=this._register(new r.vp(this.hoverDelay)),this._state=3,this.onDidEnablementChange=this._register(new l.Q5),this._onDidStart=this._register(new l.Q5),this._onDidChange=this._register(new l.Q5),this._onDidReset=this._register(new l.Q5),this._onDidEnd=this._register(new l.Q5),this.orthogonalStartSashDisposables=this._register(new h.SL),this.orthogonalStartDragHandleDisposables=this._register(new h.SL),this.orthogonalEndSashDisposables=this._register(new h.SL),this.orthogonalEndDragHandleDisposables=this._register(new h.SL),this.onDidStart=this._onDidStart.event,this.onDidChange=this._onDidChange.event,this.onDidReset=this._onDidReset.event,this.onDidEnd=this._onDidEnd.event,this.linkedSash=void 0,this.el=(0,n.R3)(e,(0,n.$)(".monaco-sash")),i.orthogonalEdge&&this.el.classList.add("orthogonal-edge-".concat(i.orthogonalEdge)),d.dz&&this.el.classList.add("mac");const a=this._register(new o.Y(this.el,"mousedown")).event;this._register(a((t=>this.onPointerStart(t,new f(e))),this));const c=this._register(new o.Y(this.el,"dblclick")).event;this._register(c(this.onPointerDoublePress,this));const u=this._register(new o.Y(this.el,"mouseenter")).event;this._register(u((()=>b.onMouseEnter(this))));const _=this._register(new o.Y(this.el,"mouseleave")).event;this._register(_((()=>b.onMouseLeave(this)))),this._register(s.o.addTarget(this.el));const v=this._register(new o.Y(this.el,s.t.Start)).event;this._register(v((e=>this.onPointerStart(e,new p(this.el))),this));const C=this._register(new o.Y(this.el,s.t.Tap)).event;let w;this._register(C((e=>{if(w)return clearTimeout(w),w=void 0,void this.onPointerDoublePress(e);clearTimeout(w),w=setTimeout((()=>w=void 0),250)}),this)),"number"===typeof i.size?(this.size=i.size,0===i.orientation?this.el.style.width="".concat(this.size,"px"):this.el.style.height="".concat(this.size,"px")):(this.size=4,this._register(g.event((e=>{this.size=e,this.layout()})))),this._register(m.event((e=>this.hoverDelay=e))),this.layoutProvider=t,this.orthogonalStartSash=i.orthogonalStartSash,this.orthogonalEndSash=i.orthogonalEndSash,this.orientation=i.orientation||0,1===this.orientation?(this.el.classList.add("horizontal"),this.el.classList.remove("vertical")):(this.el.classList.remove("horizontal"),this.el.classList.add("vertical")),this.el.classList.toggle("debug",false),this.layout()}onPointerStart(e,t){n.zB.stop(e);let i=!1;if(!e.__orthogonalSashEvent){const n=this.getOrthogonalSash(e);n&&(i=!0,e.__orthogonalSashEvent=!0,n.onPointerStart(e,new _(t)))}if(this.linkedSash&&!e.__linkedSashEvent&&(e.__linkedSashEvent=!0,this.linkedSash.onPointerStart(e,new _(t))),!this.state)return;const o=this.el.ownerDocument.getElementsByTagName("iframe");for(const n of o)n.classList.add(v);const s=e.pageX,r=e.pageY,a=e.altKey,l={startX:s,currentX:s,startY:r,currentY:r,altKey:a};this.el.classList.add("active"),this._onDidStart.fire(l);const c=(0,n.dS)(this.el),u=()=>{let e="";e=i?"all-scroll":1===this.orientation?1===this.state?"s-resize":2===this.state?"n-resize":d.dz?"row-resize":"ns-resize":1===this.state?"e-resize":2===this.state?"w-resize":d.dz?"col-resize":"ew-resize",c.textContent="* { cursor: ".concat(e," !important; }")},g=new h.SL;u(),i||this.onDidEnablementChange.event(u,null,g);t.onPointerMove((e=>{n.zB.stop(e,!1);const t={startX:s,currentX:e.pageX,startY:r,currentY:e.pageY,altKey:a};this._onDidChange.fire(t)}),null,g),t.onPointerUp((e=>{n.zB.stop(e,!1),this.el.removeChild(c),this.el.classList.remove("active"),this._onDidEnd.fire(),g.dispose();for(const t of o)t.classList.remove(v)}),null,g),g.add(t)}onPointerDoublePress(e){const t=this.getOrthogonalSash(e);t&&t._onDidReset.fire(),this.linkedSash&&this.linkedSash._onDidReset.fire(),this._onDidReset.fire()}static onMouseEnter(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.el.classList.contains("active")?(e.hoverDelayer.cancel(),e.el.classList.add("hover")):e.hoverDelayer.trigger((()=>e.el.classList.add("hover")),e.hoverDelay).then(void 0,(()=>{})),!t&&e.linkedSash&&b.onMouseEnter(e.linkedSash,!0)}static onMouseLeave(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.hoverDelayer.cancel(),e.el.classList.remove("hover"),!t&&e.linkedSash&&b.onMouseLeave(e.linkedSash,!0)}clearSashHoverState(){b.onMouseLeave(this)}layout(){if(0===this.orientation){const e=this.layoutProvider;this.el.style.left=e.getVerticalSashLeft(this)-this.size/2+"px",e.getVerticalSashTop&&(this.el.style.top=e.getVerticalSashTop(this)+"px"),e.getVerticalSashHeight&&(this.el.style.height=e.getVerticalSashHeight(this)+"px")}else{const e=this.layoutProvider;this.el.style.top=e.getHorizontalSashTop(this)-this.size/2+"px",e.getHorizontalSashLeft&&(this.el.style.left=e.getHorizontalSashLeft(this)+"px"),e.getHorizontalSashWidth&&(this.el.style.width=e.getHorizontalSashWidth(this)+"px")}}getOrthogonalSash(e){var t;const i=null!==(t=e.initialTarget)&&void 0!==t?t:e.target;if(i&&i instanceof HTMLElement)return i.classList.contains("orthogonal-drag-handle")?i.classList.contains("start")?this.orthogonalStartSash:this.orthogonalEndSash:void 0}dispose(){super.dispose(),this.el.remove()}}},66561:(e,t,i)=>{i.d(t,{s$:()=>x,Io:()=>L,NB:()=>D,$Z:()=>N});var n=i(42606),o=i(85714),s=i(45153),r=i(21494),a=i(13505),l=i(74812),h=i(60282),d=i(62502);const c=11;class u extends l.${constructor(e){super(),this._onActivate=e.onActivate,this.bgDomNode=document.createElement("div"),this.bgDomNode.className="arrow-background",this.bgDomNode.style.position="absolute",this.bgDomNode.style.width=e.bgWidth+"px",this.bgDomNode.style.height=e.bgHeight+"px","undefined"!==typeof e.top&&(this.bgDomNode.style.top="0px"),"undefined"!==typeof e.left&&(this.bgDomNode.style.left="0px"),"undefined"!==typeof e.bottom&&(this.bgDomNode.style.bottom="0px"),"undefined"!==typeof e.right&&(this.bgDomNode.style.right="0px"),this.domNode=document.createElement("div"),this.domNode.className=e.className,this.domNode.classList.add(...d.k.asClassNameArray(e.icon)),this.domNode.style.position="absolute",this.domNode.style.width="11px",this.domNode.style.height="11px","undefined"!==typeof e.top&&(this.domNode.style.top=e.top+"px"),"undefined"!==typeof e.left&&(this.domNode.style.left=e.left+"px"),"undefined"!==typeof e.bottom&&(this.domNode.style.bottom=e.bottom+"px"),"undefined"!==typeof e.right&&(this.domNode.style.right=e.right+"px"),this._pointerMoveMonitor=this._register(new a.C),this._register(o.mu(this.bgDomNode,o.tw.POINTER_DOWN,(e=>this._arrowPointerDown(e)))),this._register(o.mu(this.domNode,o.tw.POINTER_DOWN,(e=>this._arrowPointerDown(e)))),this._pointerdownRepeatTimer=this._register(new o.ne),this._pointerdownScheduleRepeatTimer=this._register(new h._F)}_arrowPointerDown(e){if(!e.target||!(e.target instanceof Element))return;this._onActivate(),this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancelAndSet((()=>{this._pointerdownRepeatTimer.cancelAndSet((()=>this._onActivate()),1e3/24,o.Jj(e))}),200),this._pointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,(e=>{}),(()=>{this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancel()})),e.preventDefault()}}var g=i(89599);class m extends g.JT{constructor(e,t,i){super(),this._visibility=e,this._visibleClassName=t,this._invisibleClassName=i,this._domNode=null,this._isVisible=!1,this._isNeeded=!1,this._rawShouldBeVisible=!1,this._shouldBeVisible=!1,this._revealTimer=this._register(new h._F)}setVisibility(e){this._visibility!==e&&(this._visibility=e,this._updateShouldBeVisible())}setShouldBeVisible(e){this._rawShouldBeVisible=e,this._updateShouldBeVisible()}_applyVisibilitySetting(){return 2!==this._visibility&&(3===this._visibility||this._rawShouldBeVisible)}_updateShouldBeVisible(){const e=this._applyVisibilitySetting();this._shouldBeVisible!==e&&(this._shouldBeVisible=e,this.ensureVisibility())}setIsNeeded(e){this._isNeeded!==e&&(this._isNeeded=e,this.ensureVisibility())}setDomNode(e){this._domNode=e,this._domNode.setClassName(this._invisibleClassName),this.setShouldBeVisible(!1)}ensureVisibility(){this._isNeeded?this._shouldBeVisible?this._reveal():this._hide(!0):this._hide(!1)}_reveal(){this._isVisible||(this._isVisible=!0,this._revealTimer.setIfNotSet((()=>{var e;null===(e=this._domNode)||void 0===e||e.setClassName(this._visibleClassName)}),0))}_hide(e){var t;this._revealTimer.cancel(),this._isVisible&&(this._isVisible=!1,null===(t=this._domNode)||void 0===t||t.setClassName(this._invisibleClassName+(e?" fade":"")))}}var f=i(21511);class p extends l.${constructor(e){super(),this._lazyRender=e.lazyRender,this._host=e.host,this._scrollable=e.scrollable,this._scrollByPage=e.scrollByPage,this._scrollbarState=e.scrollbarState,this._visibilityController=this._register(new m(e.visibility,"visible scrollbar "+e.extraScrollbarClassName,"invisible scrollbar "+e.extraScrollbarClassName)),this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._pointerMoveMonitor=this._register(new a.C),this._shouldRender=!0,this.domNode=(0,s.X)(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this._visibilityController.setDomNode(this.domNode),this.domNode.setPosition("absolute"),this._register(o.nm(this.domNode.domNode,o.tw.POINTER_DOWN,(e=>this._domNodePointerDown(e))))}_createArrow(e){const t=this._register(new u(e));this.domNode.domNode.appendChild(t.bgDomNode),this.domNode.domNode.appendChild(t.domNode)}_createSlider(e,t,i,n){this.slider=(0,s.X)(document.createElement("div")),this.slider.setClassName("slider"),this.slider.setPosition("absolute"),this.slider.setTop(e),this.slider.setLeft(t),"number"===typeof i&&this.slider.setWidth(i),"number"===typeof n&&this.slider.setHeight(n),this.slider.setLayerHinting(!0),this.slider.setContain("strict"),this.domNode.domNode.appendChild(this.slider.domNode),this._register(o.nm(this.slider.domNode,o.tw.POINTER_DOWN,(e=>{0===e.button&&(e.preventDefault(),this._sliderPointerDown(e))}))),this.onclick(this.slider.domNode,(e=>{e.leftButton&&e.stopPropagation()}))}_onElementSize(e){return this._scrollbarState.setVisibleSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollSize(e){return this._scrollbarState.setScrollSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollPosition(e){return this._scrollbarState.setScrollPosition(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}beginReveal(){this._visibilityController.setShouldBeVisible(!0)}beginHide(){this._visibilityController.setShouldBeVisible(!1)}render(){this._shouldRender&&(this._shouldRender=!1,this._renderDomNode(this._scrollbarState.getRectangleLargeSize(),this._scrollbarState.getRectangleSmallSize()),this._updateSlider(this._scrollbarState.getSliderSize(),this._scrollbarState.getArrowSize()+this._scrollbarState.getSliderPosition()))}_domNodePointerDown(e){e.target===this.domNode.domNode&&this._onPointerDown(e)}delegatePointerDown(e){const t=this.domNode.domNode.getClientRects()[0].top,i=t+this._scrollbarState.getSliderPosition(),n=t+this._scrollbarState.getSliderPosition()+this._scrollbarState.getSliderSize(),o=this._sliderPointerPosition(e);i<=o&&o<=n?0===e.button&&(e.preventDefault(),this._sliderPointerDown(e)):this._onPointerDown(e)}_onPointerDown(e){let t,i;if(e.target===this.domNode.domNode&&"number"===typeof e.offsetX&&"number"===typeof e.offsetY)t=e.offsetX,i=e.offsetY;else{const n=o.i(this.domNode.domNode);t=e.pageX-n.left,i=e.pageY-n.top}const n=this._pointerDownRelativePosition(t,i);this._setDesiredScrollPositionNow(this._scrollByPage?this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(n):this._scrollbarState.getDesiredScrollPositionFromOffset(n)),0===e.button&&(e.preventDefault(),this._sliderPointerDown(e))}_sliderPointerDown(e){if(!e.target||!(e.target instanceof Element))return;const t=this._sliderPointerPosition(e),i=this._sliderOrthogonalPointerPosition(e),n=this._scrollbarState.clone();this.slider.toggleClassName("active",!0),this._pointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,(e=>{const o=this._sliderOrthogonalPointerPosition(e),s=Math.abs(o-i);if(f.ED&&s>140)return void this._setDesiredScrollPositionNow(n.getScrollPosition());const r=this._sliderPointerPosition(e)-t;this._setDesiredScrollPositionNow(n.getDesiredScrollPositionFromDelta(r))}),(()=>{this.slider.toggleClassName("active",!1),this._host.onDragEnd()})),this._host.onDragStart()}_setDesiredScrollPositionNow(e){const t={};this.writeScrollPosition(t,e),this._scrollable.setScrollPositionNow(t)}updateScrollbarSize(e){this._updateScrollbarSize(e),this._scrollbarState.setScrollbarSize(e),this._shouldRender=!0,this._lazyRender||this.render()}isNeeded(){return this._scrollbarState.isNeeded()}}var _=i(62413),v=i(62974);class b extends p{constructor(e,t,i){const n=e.getScrollDimensions(),o=e.getCurrentScrollPosition();if(super({lazyRender:t.lazyRender,host:i,scrollbarState:new _.M(t.horizontalHasArrows?t.arrowSize:0,2===t.horizontal?0:t.horizontalScrollbarSize,2===t.vertical?0:t.verticalScrollbarSize,n.width,n.scrollWidth,o.scrollLeft),visibility:t.horizontal,extraScrollbarClassName:"horizontal",scrollable:e,scrollByPage:t.scrollByPage}),t.horizontalHasArrows){const e=(t.arrowSize-c)/2,i=(t.horizontalScrollbarSize-c)/2;this._createArrow({className:"scra",icon:v.l.scrollbarButtonLeft,top:i,left:e,bottom:void 0,right:void 0,bgWidth:t.arrowSize,bgHeight:t.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new r.q(null,1,0))}),this._createArrow({className:"scra",icon:v.l.scrollbarButtonRight,top:i,left:void 0,bottom:void 0,right:e,bgWidth:t.arrowSize,bgHeight:t.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new r.q(null,-1,0))})}this._createSlider(Math.floor((t.horizontalScrollbarSize-t.horizontalSliderSize)/2),0,void 0,t.horizontalSliderSize)}_updateSlider(e,t){this.slider.setWidth(e),this.slider.setLeft(t)}_renderDomNode(e,t){this.domNode.setWidth(e),this.domNode.setHeight(t),this.domNode.setLeft(0),this.domNode.setBottom(0)}onDidScroll(e){return this._shouldRender=this._onElementScrollSize(e.scrollWidth)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollLeft)||this._shouldRender,this._shouldRender=this._onElementSize(e.width)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(e,t){return e}_sliderPointerPosition(e){return e.pageX}_sliderOrthogonalPointerPosition(e){return e.pageY}_updateScrollbarSize(e){this.slider.setHeight(e)}writeScrollPosition(e,t){e.scrollLeft=t}updateOptions(e){this.updateScrollbarSize(2===e.horizontal?0:e.horizontalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(2===e.vertical?0:e.verticalScrollbarSize),this._visibilityController.setVisibility(e.horizontal),this._scrollByPage=e.scrollByPage}}class C extends p{constructor(e,t,i){const n=e.getScrollDimensions(),o=e.getCurrentScrollPosition();if(super({lazyRender:t.lazyRender,host:i,scrollbarState:new _.M(t.verticalHasArrows?t.arrowSize:0,2===t.vertical?0:t.verticalScrollbarSize,0,n.height,n.scrollHeight,o.scrollTop),visibility:t.vertical,extraScrollbarClassName:"vertical",scrollable:e,scrollByPage:t.scrollByPage}),t.verticalHasArrows){const e=(t.arrowSize-c)/2,i=(t.verticalScrollbarSize-c)/2;this._createArrow({className:"scra",icon:v.l.scrollbarButtonUp,top:e,left:i,bottom:void 0,right:void 0,bgWidth:t.verticalScrollbarSize,bgHeight:t.arrowSize,onActivate:()=>this._host.onMouseWheel(new r.q(null,0,1))}),this._createArrow({className:"scra",icon:v.l.scrollbarButtonDown,top:void 0,left:i,bottom:e,right:void 0,bgWidth:t.verticalScrollbarSize,bgHeight:t.arrowSize,onActivate:()=>this._host.onMouseWheel(new r.q(null,0,-1))})}this._createSlider(0,Math.floor((t.verticalScrollbarSize-t.verticalSliderSize)/2),t.verticalSliderSize,void 0)}_updateSlider(e,t){this.slider.setHeight(e),this.slider.setTop(t)}_renderDomNode(e,t){this.domNode.setWidth(t),this.domNode.setHeight(e),this.domNode.setRight(0),this.domNode.setTop(0)}onDidScroll(e){return this._shouldRender=this._onElementScrollSize(e.scrollHeight)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollTop)||this._shouldRender,this._shouldRender=this._onElementSize(e.height)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(e,t){return t}_sliderPointerPosition(e){return e.pageY}_sliderOrthogonalPointerPosition(e){return e.pageX}_updateScrollbarSize(e){this.slider.setWidth(e)}writeScrollPosition(e,t){e.scrollTop=t}updateOptions(e){this.updateScrollbarSize(2===e.vertical?0:e.verticalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(0),this._visibilityController.setVisibility(e.vertical),this._scrollByPage=e.scrollByPage}}var w=i(24219),y=i(89314);class S{constructor(e,t,i){this.timestamp=e,this.deltaX=t,this.deltaY=i,this.score=0}}class L{constructor(){this._capacity=5,this._memory=[],this._front=-1,this._rear=-1}isPhysicalMouseWheel(){if(-1===this._front&&-1===this._rear)return!1;let e=1,t=0,i=1,n=this._rear;for(;;){const o=n===this._front?e:Math.pow(2,-i);if(e-=o,t+=this._memory[n].score*o,n===this._front)break;n=(this._capacity+n-1)%this._capacity,i++}return t<=.5}acceptStandardWheelEvent(e){if(n.i7){const t=o.Jj(e.browserEvent),i=(0,n.ie)(t);this.accept(Date.now(),e.deltaX*i,e.deltaY*i)}else this.accept(Date.now(),e.deltaX,e.deltaY)}accept(e,t,i){let n=null;const o=new S(e,t,i);-1===this._front&&-1===this._rear?(this._memory[0]=o,this._front=0,this._rear=0):(n=this._memory[this._rear],this._rear=(this._rear+1)%this._capacity,this._rear===this._front&&(this._front=(this._front+1)%this._capacity),this._memory[this._rear]=o),o.score=this._computeScore(o,n)}_computeScore(e,t){if(Math.abs(e.deltaX)>0&&Math.abs(e.deltaY)>0)return 1;let i=.5;if(this._isAlmostInt(e.deltaX)&&this._isAlmostInt(e.deltaY)||(i+=.25),t){const n=Math.abs(e.deltaX),o=Math.abs(e.deltaY),s=Math.abs(t.deltaX),r=Math.abs(t.deltaY),a=Math.max(Math.min(n,s),1),l=Math.max(Math.min(o,r),1),h=Math.max(n,s),d=Math.max(o,r);h%a===0&&d%l===0&&(i-=.5)}return Math.min(Math.max(i,0),1)}_isAlmostInt(e){return Math.abs(Math.round(e)-e)<.01}}L.INSTANCE=new L;class k extends l.${get options(){return this._options}constructor(e,t,i){super(),this._onScroll=this._register(new w.Q5),this.onScroll=this._onScroll.event,this._onWillScroll=this._register(new w.Q5),e.style.overflow="hidden",this._options=function(e){const t={lazyRender:"undefined"!==typeof e.lazyRender&&e.lazyRender,className:"undefined"!==typeof e.className?e.className:"",useShadows:"undefined"===typeof e.useShadows||e.useShadows,handleMouseWheel:"undefined"===typeof e.handleMouseWheel||e.handleMouseWheel,flipAxes:"undefined"!==typeof e.flipAxes&&e.flipAxes,consumeMouseWheelIfScrollbarIsNeeded:"undefined"!==typeof e.consumeMouseWheelIfScrollbarIsNeeded&&e.consumeMouseWheelIfScrollbarIsNeeded,alwaysConsumeMouseWheel:"undefined"!==typeof e.alwaysConsumeMouseWheel&&e.alwaysConsumeMouseWheel,scrollYToX:"undefined"!==typeof e.scrollYToX&&e.scrollYToX,mouseWheelScrollSensitivity:"undefined"!==typeof e.mouseWheelScrollSensitivity?e.mouseWheelScrollSensitivity:1,fastScrollSensitivity:"undefined"!==typeof e.fastScrollSensitivity?e.fastScrollSensitivity:5,scrollPredominantAxis:"undefined"===typeof e.scrollPredominantAxis||e.scrollPredominantAxis,mouseWheelSmoothScroll:"undefined"===typeof e.mouseWheelSmoothScroll||e.mouseWheelSmoothScroll,arrowSize:"undefined"!==typeof e.arrowSize?e.arrowSize:11,listenOnDomNode:"undefined"!==typeof e.listenOnDomNode?e.listenOnDomNode:null,horizontal:"undefined"!==typeof e.horizontal?e.horizontal:1,horizontalScrollbarSize:"undefined"!==typeof e.horizontalScrollbarSize?e.horizontalScrollbarSize:10,horizontalSliderSize:"undefined"!==typeof e.horizontalSliderSize?e.horizontalSliderSize:0,horizontalHasArrows:"undefined"!==typeof e.horizontalHasArrows&&e.horizontalHasArrows,vertical:"undefined"!==typeof e.vertical?e.vertical:1,verticalScrollbarSize:"undefined"!==typeof e.verticalScrollbarSize?e.verticalScrollbarSize:10,verticalHasArrows:"undefined"!==typeof e.verticalHasArrows&&e.verticalHasArrows,verticalSliderSize:"undefined"!==typeof e.verticalSliderSize?e.verticalSliderSize:0,scrollByPage:"undefined"!==typeof e.scrollByPage&&e.scrollByPage};t.horizontalSliderSize="undefined"!==typeof e.horizontalSliderSize?e.horizontalSliderSize:t.horizontalScrollbarSize,t.verticalSliderSize="undefined"!==typeof e.verticalSliderSize?e.verticalSliderSize:t.verticalScrollbarSize,f.dz&&(t.className+=" mac");return t}(t),this._scrollable=i,this._register(this._scrollable.onScroll((e=>{this._onWillScroll.fire(e),this._onDidScroll(e),this._onScroll.fire(e)})));const n={onMouseWheel:e=>this._onMouseWheel(e),onDragStart:()=>this._onDragStart(),onDragEnd:()=>this._onDragEnd()};this._verticalScrollbar=this._register(new C(this._scrollable,this._options,n)),this._horizontalScrollbar=this._register(new b(this._scrollable,this._options,n)),this._domNode=document.createElement("div"),this._domNode.className="monaco-scrollable-element "+this._options.className,this._domNode.setAttribute("role","presentation"),this._domNode.style.position="relative",this._domNode.style.overflow="hidden",this._domNode.appendChild(e),this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode),this._domNode.appendChild(this._verticalScrollbar.domNode.domNode),this._options.useShadows?(this._leftShadowDomNode=(0,s.X)(document.createElement("div")),this._leftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._leftShadowDomNode.domNode),this._topShadowDomNode=(0,s.X)(document.createElement("div")),this._topShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topShadowDomNode.domNode),this._topLeftShadowDomNode=(0,s.X)(document.createElement("div")),this._topLeftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topLeftShadowDomNode.domNode)):(this._leftShadowDomNode=null,this._topShadowDomNode=null,this._topLeftShadowDomNode=null),this._listenOnDomNode=this._options.listenOnDomNode||this._domNode,this._mouseWheelToDispose=[],this._setListeningToMouseWheel(this._options.handleMouseWheel),this.onmouseover(this._listenOnDomNode,(e=>this._onMouseOver(e))),this.onmouseleave(this._listenOnDomNode,(e=>this._onMouseLeave(e))),this._hideTimeout=this._register(new h._F),this._isDragging=!1,this._mouseIsOver=!1,this._shouldRender=!0,this._revealOnScroll=!0}dispose(){this._mouseWheelToDispose=(0,g.B9)(this._mouseWheelToDispose),super.dispose()}getDomNode(){return this._domNode}getOverviewRulerLayoutInfo(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}}delegateVerticalScrollbarPointerDown(e){this._verticalScrollbar.delegatePointerDown(e)}getScrollDimensions(){return this._scrollable.getScrollDimensions()}setScrollDimensions(e){this._scrollable.setScrollDimensions(e,!1)}updateClassName(e){this._options.className=e,f.dz&&(this._options.className+=" mac"),this._domNode.className="monaco-scrollable-element "+this._options.className}updateOptions(e){"undefined"!==typeof e.handleMouseWheel&&(this._options.handleMouseWheel=e.handleMouseWheel,this._setListeningToMouseWheel(this._options.handleMouseWheel)),"undefined"!==typeof e.mouseWheelScrollSensitivity&&(this._options.mouseWheelScrollSensitivity=e.mouseWheelScrollSensitivity),"undefined"!==typeof e.fastScrollSensitivity&&(this._options.fastScrollSensitivity=e.fastScrollSensitivity),"undefined"!==typeof e.scrollPredominantAxis&&(this._options.scrollPredominantAxis=e.scrollPredominantAxis),"undefined"!==typeof e.horizontal&&(this._options.horizontal=e.horizontal),"undefined"!==typeof e.vertical&&(this._options.vertical=e.vertical),"undefined"!==typeof e.horizontalScrollbarSize&&(this._options.horizontalScrollbarSize=e.horizontalScrollbarSize),"undefined"!==typeof e.verticalScrollbarSize&&(this._options.verticalScrollbarSize=e.verticalScrollbarSize),"undefined"!==typeof e.scrollByPage&&(this._options.scrollByPage=e.scrollByPage),this._horizontalScrollbar.updateOptions(this._options),this._verticalScrollbar.updateOptions(this._options),this._options.lazyRender||this._render()}delegateScrollFromMouseWheelEvent(e){this._onMouseWheel(new r.q(e))}_setListeningToMouseWheel(e){if(this._mouseWheelToDispose.length>0!==e&&(this._mouseWheelToDispose=(0,g.B9)(this._mouseWheelToDispose),e)){const e=e=>{this._onMouseWheel(new r.q(e))};this._mouseWheelToDispose.push(o.nm(this._listenOnDomNode,o.tw.MOUSE_WHEEL,e,{passive:!1}))}}_onMouseWheel(e){var t;if(null===(t=e.browserEvent)||void 0===t?void 0:t.defaultPrevented)return;const i=L.INSTANCE;i.acceptStandardWheelEvent(e);let n=!1;if(e.deltaY||e.deltaX){let t=e.deltaY*this._options.mouseWheelScrollSensitivity,o=e.deltaX*this._options.mouseWheelScrollSensitivity;this._options.scrollPredominantAxis&&(this._options.scrollYToX&&o+t===0?o=t=0:Math.abs(t)>=Math.abs(o)?o=0:t=0),this._options.flipAxes&&([t,o]=[o,t]);const s=!f.dz&&e.browserEvent&&e.browserEvent.shiftKey;!this._options.scrollYToX&&!s||o||(o=t,t=0),e.browserEvent&&e.browserEvent.altKey&&(o*=this._options.fastScrollSensitivity,t*=this._options.fastScrollSensitivity);const r=this._scrollable.getFutureScrollPosition();let a={};if(t){const e=50*t,i=r.scrollTop-(e<0?Math.floor(e):Math.ceil(e));this._verticalScrollbar.writeScrollPosition(a,i)}if(o){const e=50*o,t=r.scrollLeft-(e<0?Math.floor(e):Math.ceil(e));this._horizontalScrollbar.writeScrollPosition(a,t)}if(a=this._scrollable.validateScrollPosition(a),r.scrollLeft!==a.scrollLeft||r.scrollTop!==a.scrollTop){this._options.mouseWheelSmoothScroll&&i.isPhysicalMouseWheel()?this._scrollable.setScrollPositionSmooth(a):this._scrollable.setScrollPositionNow(a),n=!0}}let o=n;!o&&this._options.alwaysConsumeMouseWheel&&(o=!0),!o&&this._options.consumeMouseWheelIfScrollbarIsNeeded&&(this._verticalScrollbar.isNeeded()||this._horizontalScrollbar.isNeeded())&&(o=!0),o&&(e.preventDefault(),e.stopPropagation())}_onDidScroll(e){this._shouldRender=this._horizontalScrollbar.onDidScroll(e)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(e)||this._shouldRender,this._options.useShadows&&(this._shouldRender=!0),this._revealOnScroll&&this._reveal(),this._options.lazyRender||this._render()}renderNow(){if(!this._options.lazyRender)throw new Error("Please use `lazyRender` together with `renderNow`!");this._render()}_render(){if(this._shouldRender&&(this._shouldRender=!1,this._horizontalScrollbar.render(),this._verticalScrollbar.render(),this._options.useShadows)){const e=this._scrollable.getCurrentScrollPosition(),t=e.scrollTop>0,i=e.scrollLeft>0,n=i?" left":"",o=t?" top":"",s=i||t?" top-left-corner":"";this._leftShadowDomNode.setClassName("shadow".concat(n)),this._topShadowDomNode.setClassName("shadow".concat(o)),this._topLeftShadowDomNode.setClassName("shadow".concat(s).concat(o).concat(n))}}_onDragStart(){this._isDragging=!0,this._reveal()}_onDragEnd(){this._isDragging=!1,this._hide()}_onMouseLeave(e){this._mouseIsOver=!1,this._hide()}_onMouseOver(e){this._mouseIsOver=!0,this._reveal()}_reveal(){this._verticalScrollbar.beginReveal(),this._horizontalScrollbar.beginReveal(),this._scheduleHide()}_hide(){this._mouseIsOver||this._isDragging||(this._verticalScrollbar.beginHide(),this._horizontalScrollbar.beginHide())}_scheduleHide(){this._mouseIsOver||this._isDragging||this._hideTimeout.cancelAndSet((()=>this._hide()),500)}}class D extends k{constructor(e,t){(t=t||{}).mouseWheelSmoothScroll=!1;const i=new y.Rm({forceIntegerValues:!0,smoothScrollDuration:0,scheduleAtNextAnimationFrame:t=>o.jL(o.Jj(e),t)});super(e,t,i),this._register(i)}setScrollPosition(e){this._scrollable.setScrollPositionNow(e)}}class N extends k{constructor(e,t,i){super(e,t,i)}setScrollPosition(e){e.reuseAnimation?this._scrollable.setScrollPositionSmooth(e,e.reuseAnimation):this._scrollable.setScrollPositionNow(e)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}}class x extends k{constructor(e,t){(t=t||{}).mouseWheelSmoothScroll=!1;const i=new y.Rm({forceIntegerValues:!1,smoothScrollDuration:0,scheduleAtNextAnimationFrame:t=>o.jL(o.Jj(e),t)});super(e,t,i),this._register(i),this._element=e,this._register(this.onScroll((e=>{e.scrollTopChanged&&(this._element.scrollTop=e.scrollTop),e.scrollLeftChanged&&(this._element.scrollLeft=e.scrollLeft)}))),this.scanDomNode()}setScrollPosition(e){this._scrollable.setScrollPositionNow(e)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}scanDomNode(){this.setScrollDimensions({width:this._element.clientWidth,scrollWidth:this._element.scrollWidth,height:this._element.clientHeight,scrollHeight:this._element.scrollHeight}),this.setScrollPosition({scrollLeft:this._element.scrollLeft,scrollTop:this._element.scrollTop})}}},62413:(e,t,i)=>{i.d(t,{M:()=>n});class n{constructor(e,t,i,n,o,s){this._scrollbarSize=Math.round(t),this._oppositeScrollbarSize=Math.round(i),this._arrowSize=Math.round(e),this._visibleSize=n,this._scrollSize=o,this._scrollPosition=s,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}clone(){return new n(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize,this._visibleSize,this._scrollSize,this._scrollPosition)}setVisibleSize(e){const t=Math.round(e);return this._visibleSize!==t&&(this._visibleSize=t,this._refreshComputedValues(),!0)}setScrollSize(e){const t=Math.round(e);return this._scrollSize!==t&&(this._scrollSize=t,this._refreshComputedValues(),!0)}setScrollPosition(e){const t=Math.round(e);return this._scrollPosition!==t&&(this._scrollPosition=t,this._refreshComputedValues(),!0)}setScrollbarSize(e){this._scrollbarSize=Math.round(e)}setOppositeScrollbarSize(e){this._oppositeScrollbarSize=Math.round(e)}static _computeValues(e,t,i,n,o){const s=Math.max(0,i-e),r=Math.max(0,s-2*t),a=n>0&&n>i;if(!a)return{computedAvailableSize:Math.round(s),computedIsNeeded:a,computedSliderSize:Math.round(r),computedSliderRatio:0,computedSliderPosition:0};const l=Math.round(Math.max(20,Math.floor(i*r/n))),h=(r-l)/(n-i),d=o*h;return{computedAvailableSize:Math.round(s),computedIsNeeded:a,computedSliderSize:Math.round(l),computedSliderRatio:h,computedSliderPosition:Math.round(d)}}_refreshComputedValues(){const e=n._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=e.computedAvailableSize,this._computedIsNeeded=e.computedIsNeeded,this._computedSliderSize=e.computedSliderSize,this._computedSliderRatio=e.computedSliderRatio,this._computedSliderPosition=e.computedSliderPosition}getArrowSize(){return this._arrowSize}getScrollPosition(){return this._scrollPosition}getRectangleLargeSize(){return this._computedAvailableSize}getRectangleSmallSize(){return this._scrollbarSize}isNeeded(){return this._computedIsNeeded}getSliderSize(){return this._computedSliderSize}getSliderPosition(){return this._computedSliderPosition}getDesiredScrollPositionFromOffset(e){if(!this._computedIsNeeded)return 0;const t=e-this._arrowSize-this._computedSliderSize/2;return Math.round(t/this._computedSliderRatio)}getDesiredScrollPositionFromOffsetPaged(e){if(!this._computedIsNeeded)return 0;const t=e-this._arrowSize;let i=this._scrollPosition;return t{i.d(t,{M:()=>b,z:()=>C});var n=i(85714),o=i(3640),s=i(38059),r=i(66561),a=i(75629),l=i(89652),h=i(24219),d=i(89599),c=i(63229),u=i(89314),g=i(63686);const m={separatorBorder:l.Il.transparent};class f{set size(e){this._size=e}get size(){return this._size}get visible(){return"undefined"===typeof this._cachedVisibleSize}setVisible(e,t){var i,n;if(e!==this.visible){e?(this.size=(0,c.uZ)(this._cachedVisibleSize,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize="number"===typeof t?t:this.size,this.size=0),this.container.classList.toggle("visible",e);try{null===(n=(i=this.view).setVisible)||void 0===n||n.call(i,e)}catch(o){console.error("Splitview: Failed to set visible view"),console.error(o)}}}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get proportionalLayout(){var e;return null===(e=this.view.proportionalLayout)||void 0===e||e}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}constructor(e,t,i,n){this.container=e,this.view=t,this.disposable=n,this._cachedVisibleSize=void 0,"number"===typeof i?(this._size=i,this._cachedVisibleSize=void 0,e.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}layout(e,t){this.layoutContainer(e);try{this.view.layout(this.size,e,t)}catch(i){console.error("Splitview: Failed to layout view"),console.error(i)}}dispose(){this.disposable.dispose()}}class p extends f{layoutContainer(e){this.container.style.top="".concat(e,"px"),this.container.style.height="".concat(this.size,"px")}}class _ extends f{layoutContainer(e){this.container.style.left="".concat(e,"px"),this.container.style.width="".concat(this.size,"px")}}var v,b;!function(e){e[e.Idle=0]="Idle",e[e.Busy=1]="Busy"}(v||(v={})),function(e){e.Distribute={type:"distribute"},e.Split=function(e){return{type:"split",index:e}},e.Auto=function(e){return{type:"auto",index:e}},e.Invisible=function(e){return{type:"invisible",cachedVisibleSize:e}}}(b||(b={}));class C extends d.JT{get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}get startSnappingEnabled(){return this._startSnappingEnabled}get endSnappingEnabled(){return this._endSnappingEnabled}set orthogonalStartSash(e){for(const t of this.sashItems)t.sash.orthogonalStartSash=e;this._orthogonalStartSash=e}set orthogonalEndSash(e){for(const t of this.sashItems)t.sash.orthogonalEndSash=e;this._orthogonalEndSash=e}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var i,s,a,l,d;super(),this.size=0,this._contentSize=0,this.proportions=void 0,this.viewItems=[],this.sashItems=[],this.state=v.Idle,this._onDidSashChange=this._register(new h.Q5),this._onDidSashReset=this._register(new h.Q5),this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this.onDidSashChange=this._onDidSashChange.event,this.onDidSashReset=this._onDidSashReset.event,this.orientation=null!==(i=t.orientation)&&void 0!==i?i:0,this.inverseAltBehavior=null!==(s=t.inverseAltBehavior)&&void 0!==s&&s,this.proportionalLayout=null===(a=t.proportionalLayout)||void 0===a||a,this.getSashOrthogonalSize=t.getSashOrthogonalSize,this.el=document.createElement("div"),this.el.classList.add("monaco-split-view2"),this.el.classList.add(0===this.orientation?"vertical":"horizontal"),e.appendChild(this.el),this.sashContainer=(0,n.R3)(this.el,(0,n.$)(".sash-container")),this.viewContainer=(0,n.$)(".split-view-container"),this.scrollable=this._register(new u.Rm({forceIntegerValues:!0,smoothScrollDuration:125,scheduleAtNextAnimationFrame:e=>(0,n.jL)((0,n.Jj)(this.el),e)})),this.scrollableElement=this._register(new r.$Z(this.viewContainer,{vertical:0===this.orientation?null!==(l=t.scrollbarVisibility)&&void 0!==l?l:1:2,horizontal:1===this.orientation?null!==(d=t.scrollbarVisibility)&&void 0!==d?d:1:2},this.scrollable));const c=this._register(new o.Y(this.viewContainer,"scroll")).event;this._register(c((e=>{const t=this.scrollableElement.getScrollPosition(),i=Math.abs(this.viewContainer.scrollLeft-t.scrollLeft)<=1?void 0:this.viewContainer.scrollLeft,n=Math.abs(this.viewContainer.scrollTop-t.scrollTop)<=1?void 0:this.viewContainer.scrollTop;void 0===i&&void 0===n||this.scrollableElement.setScrollPosition({scrollLeft:i,scrollTop:n})}))),this.onDidScroll=this.scrollableElement.onScroll,this._register(this.onDidScroll((e=>{e.scrollTopChanged&&(this.viewContainer.scrollTop=e.scrollTop),e.scrollLeftChanged&&(this.viewContainer.scrollLeft=e.scrollLeft)}))),(0,n.R3)(this.el,this.scrollableElement.getDomNode()),this.style(t.styles||m),t.descriptor&&(this.size=t.descriptor.size,t.descriptor.views.forEach(((e,t)=>{const i=g.o8(e.visible)||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},n=e.view;this.doAddView(n,i,t,!0)})),this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.saveProportions())}style(e){e.separatorBorder.isTransparent()?(this.el.classList.remove("separator-border"),this.el.style.removeProperty("--separator-border")):(this.el.classList.add("separator-border"),this.el.style.setProperty("--separator-border",e.separatorBorder.toString()))}addView(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.viewItems.length,n=arguments.length>3?arguments[3]:void 0;this.doAddView(e,t,i,n)}layout(e,t){const i=Math.max(this.size,this._contentSize);if(this.size=e,this.layoutContext=t,this.proportions){let t=0;for(let i=0;i0&&(n.size=(0,c.uZ)(Math.round(o*e/t),n.minimumSize,n.maximumSize))}}else{const t=(0,a.w6)(this.viewItems.length),n=t.filter((e=>1===this.viewItems[e].priority)),o=t.filter((e=>2===this.viewItems[e].priority));this.resize(this.viewItems.length-1,e-i,void 0,n,o)}this.distributeEmptySpace(),this.layoutViews()}saveProportions(){this.proportionalLayout&&this._contentSize>0&&(this.proportions=this.viewItems.map((e=>e.proportionalLayout&&e.visible?e.size/this._contentSize:void 0)))}onSashStart(e){let{sash:t,start:i,alt:o}=e;for(const n of this.viewItems)n.enabled=!1;const s=this.sashItems.findIndex((e=>e.sash===t)),r=(0,d.F8)((0,n.nm)(this.el.ownerDocument.body,"keydown",(e=>l(this.sashDragState.current,e.altKey))),(0,n.nm)(this.el.ownerDocument.body,"keyup",(()=>l(this.sashDragState.current,!1)))),l=(e,t)=>{const i=this.viewItems.map((e=>e.size));let n,o,l=Number.NEGATIVE_INFINITY,h=Number.POSITIVE_INFINITY;if(this.inverseAltBehavior&&(t=!t),t){if(s===this.sashItems.length-1){const e=this.viewItems[s];l=(e.minimumSize-e.size)/2,h=(e.maximumSize-e.size)/2}else{const e=this.viewItems[s+1];l=(e.size-e.maximumSize)/2,h=(e.size-e.minimumSize)/2}}if(!t){const e=(0,a.w6)(s,-1),t=(0,a.w6)(s+1,this.viewItems.length),r=e.reduce(((e,t)=>e+(this.viewItems[t].minimumSize-i[t])),0),l=e.reduce(((e,t)=>e+(this.viewItems[t].viewMaximumSize-i[t])),0),h=0===t.length?Number.POSITIVE_INFINITY:t.reduce(((e,t)=>e+(i[t]-this.viewItems[t].minimumSize)),0),d=0===t.length?Number.NEGATIVE_INFINITY:t.reduce(((e,t)=>e+(i[t]-this.viewItems[t].viewMaximumSize)),0),c=Math.max(r,d),u=Math.min(h,l),g=this.findFirstSnapIndex(e),m=this.findFirstSnapIndex(t);if("number"===typeof g){const e=this.viewItems[g],t=Math.floor(e.viewMinimumSize/2);n={index:g,limitDelta:e.visible?c-t:c+t,size:e.size}}if("number"===typeof m){const e=this.viewItems[m],t=Math.floor(e.viewMinimumSize/2);o={index:m,limitDelta:e.visible?u+t:u-t,size:e.size}}}this.sashDragState={start:e,current:e,index:s,sizes:i,minDelta:l,maxDelta:h,alt:t,snapBefore:n,snapAfter:o,disposable:r}};l(i,o)}onSashChange(e){let{current:t}=e;const{index:i,start:n,sizes:o,alt:s,minDelta:r,maxDelta:a,snapBefore:l,snapAfter:h}=this.sashDragState;this.sashDragState.current=t;const d=t-n,c=this.resize(i,d,o,void 0,void 0,r,a,l,h);if(s){const e=i===this.sashItems.length-1,t=this.viewItems.map((e=>e.size)),n=e?i:i+1,o=this.viewItems[n],s=o.size-o.maximumSize,r=o.size-o.minimumSize,a=e?i-1:i+1;this.resize(a,-c,t,void 0,void 0,s,r)}this.distributeEmptySpace(),this.layoutViews()}onSashEnd(e){this._onDidSashChange.fire(e),this.sashDragState.disposable.dispose(),this.saveProportions();for(const t of this.viewItems)t.enabled=!0}onViewChange(e,t){const i=this.viewItems.indexOf(e);i<0||i>=this.viewItems.length||(t="number"===typeof t?t:e.size,t=(0,c.uZ)(t,e.minimumSize,e.maximumSize),this.inverseAltBehavior&&i>0?(this.resize(i-1,Math.floor((e.size-t)/2)),this.distributeEmptySpace(),this.layoutViews()):(e.size=t,this.relayout([i],void 0)))}resizeView(e,t){if(!(e<0||e>=this.viewItems.length)){if(this.state!==v.Idle)throw new Error("Cant modify splitview");this.state=v.Busy;try{const i=(0,a.w6)(this.viewItems.length).filter((t=>t!==e)),n=[...i.filter((e=>1===this.viewItems[e].priority)),e],o=i.filter((e=>2===this.viewItems[e].priority)),s=this.viewItems[e];t=Math.round(t),t=(0,c.uZ)(t,s.minimumSize,Math.min(s.maximumSize,this.size)),s.size=t,this.relayout(n,o)}finally{this.state=v.Idle}}}distributeViewSizes(){const e=[];let t=0;for(const r of this.viewItems)r.maximumSize-r.minimumSize>0&&(e.push(r),t+=r.size);const i=Math.floor(t/e.length);for(const r of e)r.size=(0,c.uZ)(i,r.minimumSize,r.maximumSize);const n=(0,a.w6)(this.viewItems.length),o=n.filter((e=>1===this.viewItems[e].priority)),s=n.filter((e=>2===this.viewItems[e].priority));this.relayout(o,s)}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}doAddView(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.viewItems.length,o=arguments.length>3?arguments[3]:void 0;if(this.state!==v.Idle)throw new Error("Cant modify splitview");this.state=v.Busy;try{const r=(0,n.$)(".split-view-view");i===this.viewItems.length?this.viewContainer.appendChild(r):this.viewContainer.insertBefore(r,this.viewContainer.children.item(i));const l=e.onDidChange((e=>this.onViewChange(m,e))),c=(0,d.OF)((()=>this.viewContainer.removeChild(r))),u=(0,d.F8)(l,c);let g;"number"===typeof t?g=t:("auto"===t.type&&(t=this.areViewsDistributed()?{type:"distribute"}:{type:"split",index:t.index}),g="split"===t.type?this.getViewSize(t.index)/2:"invisible"===t.type?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize);const m=0===this.orientation?new p(r,e,g,u):new _(r,e,g,u);if(this.viewItems.splice(i,0,m),this.viewItems.length>1){const e={orthogonalStartSash:this.orthogonalStartSash,orthogonalEndSash:this.orthogonalEndSash},t=0===this.orientation?new s.g(this.sashContainer,{getHorizontalSashTop:e=>this.getSashPosition(e),getHorizontalSashWidth:this.getSashOrthogonalSize},{...e,orientation:1}):new s.g(this.sashContainer,{getVerticalSashLeft:e=>this.getSashPosition(e),getVerticalSashHeight:this.getSashOrthogonalSize},{...e,orientation:0}),n=0===this.orientation?e=>({sash:t,start:e.startY,current:e.currentY,alt:e.altKey}):e=>({sash:t,start:e.startX,current:e.currentX,alt:e.altKey}),o=h.ju.map(t.onDidStart,n)(this.onSashStart,this),r=h.ju.map(t.onDidChange,n)(this.onSashChange,this),l=h.ju.map(t.onDidEnd,(()=>this.sashItems.findIndex((e=>e.sash===t)))),c=l(this.onSashEnd,this),u=t.onDidReset((()=>{const e=this.sashItems.findIndex((e=>e.sash===t)),i=(0,a.w6)(e,-1),n=(0,a.w6)(e+1,this.viewItems.length),o=this.findFirstSnapIndex(i),s=this.findFirstSnapIndex(n);("number"!==typeof o||this.viewItems[o].visible)&&("number"!==typeof s||this.viewItems[s].visible)&&this._onDidSashReset.fire(e)})),g=(0,d.F8)(o,r,c,u,t),m={sash:t,disposable:g};this.sashItems.splice(i-1,0,m)}let f;r.appendChild(e.element),"number"!==typeof t&&"split"===t.type&&(f=[t.index]),o||this.relayout([i],f),o||"number"===typeof t||"distribute"!==t.type||this.distributeViewSizes()}finally{this.state=v.Idle}}relayout(e,t){const i=this.viewItems.reduce(((e,t)=>e+t.size),0);this.resize(this.viewItems.length-1,this.size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}resize(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.viewItems.map((e=>e.size)),n=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:Number.NEGATIVE_INFINITY,r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:Number.POSITIVE_INFINITY,l=arguments.length>7?arguments[7]:void 0,h=arguments.length>8?arguments[8]:void 0;if(e<0||e>=this.viewItems.length)return 0;const d=(0,a.w6)(e,-1),u=(0,a.w6)(e+1,this.viewItems.length);if(o)for(const c of o)(0,a.zI)(d,c),(0,a.zI)(u,c);if(n)for(const c of n)(0,a.al)(d,c),(0,a.al)(u,c);const g=d.map((e=>this.viewItems[e])),m=d.map((e=>i[e])),f=u.map((e=>this.viewItems[e])),p=u.map((e=>i[e])),_=d.reduce(((e,t)=>e+(this.viewItems[t].minimumSize-i[t])),0),v=d.reduce(((e,t)=>e+(this.viewItems[t].maximumSize-i[t])),0),b=0===u.length?Number.POSITIVE_INFINITY:u.reduce(((e,t)=>e+(i[t]-this.viewItems[t].minimumSize)),0),C=0===u.length?Number.NEGATIVE_INFINITY:u.reduce(((e,t)=>e+(i[t]-this.viewItems[t].maximumSize)),0),w=Math.max(_,C,s),y=Math.min(b,v,r);let S=!1;if(l){const e=this.viewItems[l.index],i=t>=l.limitDelta;S=i!==e.visible,e.setVisible(i,l.size)}if(!S&&h){const e=this.viewItems[h.index],i=te+t.size),0);let i=this.size-t;const n=(0,a.w6)(this.viewItems.length-1,-1),o=n.filter((e=>1===this.viewItems[e].priority)),s=n.filter((e=>2===this.viewItems[e].priority));for(const r of s)(0,a.zI)(n,r);for(const r of o)(0,a.al)(n,r);"number"===typeof e&&(0,a.al)(n,e);for(let r=0;0!==i&&re+t.size),0);let e=0;for(const t of this.viewItems)t.layout(e,this.layoutContext),e+=t.size;this.sashItems.forEach((e=>e.sash.layout())),this.updateSashEnablement(),this.updateScrollableElement()}updateScrollableElement(){0===this.orientation?this.scrollableElement.setScrollDimensions({height:this.size,scrollHeight:this._contentSize}):this.scrollableElement.setScrollDimensions({width:this.size,scrollWidth:this._contentSize})}updateSashEnablement(){let e=!1;const t=this.viewItems.map((t=>e=t.size-t.minimumSize>0||e));e=!1;const i=this.viewItems.map((t=>e=t.maximumSize-t.size>0||e)),n=[...this.viewItems].reverse();e=!1;const o=n.map((t=>e=t.size-t.minimumSize>0||e)).reverse();e=!1;const s=n.map((t=>e=t.maximumSize-t.size>0||e)).reverse();let r=0;for(let l=0;l0||this.startSnappingEnabled)?e.state=1:c&&t[l]&&(r0)return;if(!e.visible&&e.snap)return t}}areViewsDistributed(){let e,t;for(const i of this.viewItems)if(e=void 0===e?i.size:Math.min(e,i.size),t=void 0===t?i.size:Math.max(t,i.size),t-e>2)return!1;return!0}dispose(){var e;null===(e=this.sashDragState)||void 0===e||e.disposable.dispose(),(0,d.B9)(this.viewItems),this.viewItems=[],this.sashItems.forEach((e=>e.disposable.dispose())),this.sashItems=[],super.dispose()}}},79242:(e,t,i)=>{i.d(t,{Z:()=>h,D:()=>l});var n=i(74812),o=i(62502),s=i(24219),r=i(34392),a=i(14561);const l={inputActiveOptionBorder:"#007ACC00",inputActiveOptionForeground:"#FFFFFF",inputActiveOptionBackground:"#0E639C50"};class h extends n.${constructor(e){var t;super(),this._onChange=this._register(new s.Q5),this.onChange=this._onChange.event,this._onKeyDown=this._register(new s.Q5),this.onKeyDown=this._onKeyDown.event,this._opts=e,this._checked=this._opts.isChecked;const i=["monaco-custom-toggle"];this._opts.icon&&(this._icon=this._opts.icon,i.push(...o.k.asClassNameArray(this._icon))),this._opts.actionClassName&&i.push(...this._opts.actionClassName.split(" ")),this._checked&&i.push("checked"),this.domNode=document.createElement("div"),this._hover=this._register((0,r.g)(null!==(t=e.hoverDelegate)&&void 0!==t?t:(0,a.tM)("mouse"),this.domNode,this._opts.title)),this.domNode.classList.add(...i),this._opts.notFocusable||(this.domNode.tabIndex=0),this.domNode.setAttribute("role","checkbox"),this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.setAttribute("aria-label",this._opts.title),this.applyStyles(),this.onclick(this.domNode,(e=>{this.enabled&&(this.checked=!this._checked,this._onChange.fire(!1),e.preventDefault())})),this._register(this.ignoreGesture(this.domNode)),this.onkeydown(this.domNode,(e=>{if(10===e.keyCode||3===e.keyCode)return this.checked=!this._checked,this._onChange.fire(!0),e.preventDefault(),void e.stopPropagation();this._onKeyDown.fire(e)}))}get enabled(){return"true"!==this.domNode.getAttribute("aria-disabled")}focus(){this.domNode.focus()}get checked(){return this._checked}set checked(e){this._checked=e,this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.classList.toggle("checked",this._checked),this.applyStyles()}width(){return 22}applyStyles(){this.domNode&&(this.domNode.style.borderColor=this._checked&&this._opts.inputActiveOptionBorder||"",this.domNode.style.color=this._checked&&this._opts.inputActiveOptionForeground||"inherit",this.domNode.style.backgroundColor=this._checked&&this._opts.inputActiveOptionBackground||"")}enable(){this.domNode.setAttribute("aria-disabled",String(!1))}disable(){this.domNode.setAttribute("aria-disabled",String(!0))}}},83438:(e,t,i)=>{i.d(t,{CH:()=>G,cz:()=>N,E4:()=>n,Zd:()=>M,sZ:()=>T});var n,o=i(85714),s=(i(3640),i(39341)),r=(i(65122),i(51459),i(92707)),a=i(84931),l=i(53430),h=i(79242),d=i(18416),c=i(61746),u=(i(22337),i(75629)),g=i(60282),m=i(62974),f=i(62502),p=i(65549),_=i(24219),v=i(66835),b=i(89599),C=i(63229),w=i(63686),y=i(71721),S=(i(14561),i(59130));class L extends a.kX{constructor(e){super(e.elements.map((e=>e.element))),this.data=e}}function k(e){return e instanceof a.kX?new L(e):e}class D{constructor(e,t){this.modelProvider=e,this.dnd=t,this.autoExpandDisposable=b.JT.None,this.disposables=new b.SL}getDragURI(e){return this.dnd.getDragURI(e.element)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map((e=>e.element)),t)}onDragStart(e,t){var i,n;null===(n=(i=this.dnd).onDragStart)||void 0===n||n.call(i,k(e),t)}onDragOver(e,t,i,n,o){let s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];const r=this.dnd.onDragOver(k(e),t&&t.element,i,n,o),a=this.autoExpandNode!==t;if(a&&(this.autoExpandDisposable.dispose(),this.autoExpandNode=t),"undefined"===typeof t)return r;if(a&&"boolean"!==typeof r&&r.autoExpand&&(this.autoExpandDisposable=(0,g.Vg)((()=>{const e=this.modelProvider(),i=e.getNodeLocation(t);e.isCollapsed(i)&&e.setCollapsed(i,!1),this.autoExpandNode=void 0}),500,this.disposables)),"boolean"===typeof r||!r.accept||"undefined"===typeof r.bubble||r.feedback){if(!s){return{accept:"boolean"===typeof r?r:r.accept,effect:"boolean"===typeof r?void 0:r.effect,feedback:[i]}}return r}if(1===r.bubble){const i=this.modelProvider(),s=i.getNodeLocation(t),r=i.getParentNodeLocation(s),a=i.getNode(r),l=r&&i.getListIndex(r);return this.onDragOver(e,a,l,n,o,!1)}const l=this.modelProvider(),h=l.getNodeLocation(t),d=l.getListIndex(h),c=l.getListRenderCount(h);return{...r,feedback:(0,u.w6)(d,d+c)}}drop(e,t,i,n,o){this.autoExpandDisposable.dispose(),this.autoExpandNode=void 0,this.dnd.drop(k(e),t&&t.element,i,n,o)}onDragEnd(e){var t,i;null===(i=(t=this.dnd).onDragEnd)||void 0===i||i.call(t,e)}dispose(){this.disposables.dispose(),this.dnd.dispose()}}class N{constructor(e){this.delegate=e}getHeight(e){return this.delegate.getHeight(e.element)}getTemplateId(e){return this.delegate.getTemplateId(e.element)}hasDynamicHeight(e){return!!this.delegate.hasDynamicHeight&&this.delegate.hasDynamicHeight(e.element)}setDynamicHeight(e,t){var i,n;null===(n=(i=this.delegate).setDynamicHeight)||void 0===n||n.call(i,e.element,t)}}!function(e){e.None="none",e.OnHover="onHover",e.Always="always"}(n||(n={}));class x{get elements(){return this._elements}constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];this._elements=t,this.disposables=new b.SL,this.onDidChange=_.ju.forEach(e,(e=>this._elements=e),this.disposables)}dispose(){this.disposables.dispose()}}class E{constructor(e,t,i,n,o){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};var r;this.renderer=e,this.modelProvider=t,this.activeNodes=n,this.renderedIndentGuides=o,this.renderedElements=new Map,this.renderedNodes=new Map,this.indent=E.DefaultIndent,this.hideTwistiesOfChildlessElements=!1,this.shouldRenderIndentGuides=!1,this.activeIndentNodes=new Set,this.indentGuidesDisposable=b.JT.None,this.disposables=new b.SL,this.templateId=e.templateId,this.updateOptions(s),_.ju.map(i,(e=>e.node))(this.onDidChangeNodeTwistieState,this,this.disposables),null===(r=e.onDidChangeTwistieState)||void 0===r||r.call(e,this.onDidChangeTwistieState,this,this.disposables)}updateOptions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"!==typeof e.indent){const t=(0,C.uZ)(e.indent,0,40);if(t!==this.indent){this.indent=t;for(const[e,t]of this.renderedNodes)this.renderTreeElement(e,t)}}if("undefined"!==typeof e.renderIndentGuides){const t=e.renderIndentGuides!==n.None;if(t!==this.shouldRenderIndentGuides){this.shouldRenderIndentGuides=t;for(const[e,t]of this.renderedNodes)this._renderIndentGuides(e,t);if(this.indentGuidesDisposable.dispose(),t){const e=new b.SL;this.activeNodes.onDidChange(this._onDidChangeActiveNodes,this,e),this.indentGuidesDisposable=e,this._onDidChangeActiveNodes(this.activeNodes.elements)}}}"undefined"!==typeof e.hideTwistiesOfChildlessElements&&(this.hideTwistiesOfChildlessElements=e.hideTwistiesOfChildlessElements)}renderTemplate(e){const t=(0,o.R3)(e,(0,o.$)(".monaco-tl-row")),i=(0,o.R3)(t,(0,o.$)(".monaco-tl-indent")),n=(0,o.R3)(t,(0,o.$)(".monaco-tl-twistie")),s=(0,o.R3)(t,(0,o.$)(".monaco-tl-contents")),r=this.renderer.renderTemplate(s);return{container:e,indent:i,twistie:n,indentGuidesDisposable:b.JT.None,templateData:r}}renderElement(e,t,i,n){this.renderedNodes.set(e,i),this.renderedElements.set(e.element,e),this.renderTreeElement(e,i),this.renderer.renderElement(e,t,i.templateData,n)}disposeElement(e,t,i,n){var o,s;i.indentGuidesDisposable.dispose(),null===(s=(o=this.renderer).disposeElement)||void 0===s||s.call(o,e,t,i.templateData,n),"number"===typeof n&&(this.renderedNodes.delete(e),this.renderedElements.delete(e.element))}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}onDidChangeTwistieState(e){const t=this.renderedElements.get(e);t&&this.onDidChangeNodeTwistieState(t)}onDidChangeNodeTwistieState(e){const t=this.renderedNodes.get(e);t&&(this._onDidChangeActiveNodes(this.activeNodes.elements),this.renderTreeElement(e,t))}renderTreeElement(e,t){const i=E.DefaultIndent+(e.depth-1)*this.indent;t.twistie.style.paddingLeft="".concat(i,"px"),t.indent.style.width="".concat(i+this.indent-16,"px"),e.collapsible?t.container.setAttribute("aria-expanded",String(!e.collapsed)):t.container.removeAttribute("aria-expanded"),t.twistie.classList.remove(...f.k.asClassNameArray(m.l.treeItemExpanded));let n=!1;this.renderer.renderTwistie&&(n=this.renderer.renderTwistie(e.element,t.twistie)),e.collapsible&&(!this.hideTwistiesOfChildlessElements||e.visibleChildrenCount>0)?(n||t.twistie.classList.add(...f.k.asClassNameArray(m.l.treeItemExpanded)),t.twistie.classList.add("collapsible"),t.twistie.classList.toggle("collapsed",e.collapsed)):t.twistie.classList.remove("collapsible","collapsed"),this._renderIndentGuides(e,t)}_renderIndentGuides(e,t){if((0,o.PO)(t.indent),t.indentGuidesDisposable.dispose(),!this.shouldRenderIndentGuides)return;const i=new b.SL,n=this.modelProvider();for(;;){const s=n.getNodeLocation(e),r=n.getParentNodeLocation(s);if(!r)break;const a=n.getNode(r),l=(0,o.$)(".indent-guide",{style:"width: ".concat(this.indent,"px")});this.activeIndentNodes.has(a)&&l.classList.add("active"),0===t.indent.childElementCount?t.indent.appendChild(l):t.indent.insertBefore(l,t.indent.firstElementChild),this.renderedIndentGuides.add(a,l),i.add((0,b.OF)((()=>this.renderedIndentGuides.delete(a,l)))),e=a}t.indentGuidesDisposable=i}_onDidChangeActiveNodes(e){if(!this.shouldRenderIndentGuides)return;const t=new Set,i=this.modelProvider();e.forEach((e=>{const n=i.getNodeLocation(e);try{const o=i.getParentNodeLocation(n);e.collapsible&&e.children.length>0&&!e.collapsed?t.add(e):o&&t.add(i.getNode(o))}catch(o){}})),this.activeIndentNodes.forEach((e=>{t.has(e)||this.renderedIndentGuides.forEach(e,(e=>e.classList.remove("active")))})),t.forEach((e=>{this.activeIndentNodes.has(e)||this.renderedIndentGuides.forEach(e,(e=>e.classList.add("active")))})),this.activeIndentNodes=t}dispose(){this.renderedNodes.clear(),this.renderedElements.clear(),this.indentGuidesDisposable.dispose(),(0,b.B9)(this.disposables)}}E.DefaultIndent=8;class I{get totalCount(){return this._totalCount}get matchCount(){return this._matchCount}constructor(e,t,i){this.tree=e,this.keyboardNavigationLabelProvider=t,this._filter=i,this._totalCount=0,this._matchCount=0,this._pattern="",this._lowercasePattern="",this.disposables=new b.SL,e.onWillRefilter(this.reset,this,this.disposables)}filter(e,t){let i=1;if(this._filter){const n=this._filter.filter(e,t);if(i="boolean"===typeof n?n?1:0:(0,d.gB)(n)?(0,d.aG)(n.visibility):n,0===i)return!1}if(this._totalCount++,!this._pattern)return this._matchCount++,{data:v.CL.Default,visibility:i};const n=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e),o=Array.isArray(n)?n:[n];for(const s of o){const e=s&&s.toString();if("undefined"===typeof e)return{data:v.CL.Default,visibility:i};let t;if(this.tree.findMatchType===M.Contiguous){const i=e.toLowerCase().indexOf(this._lowercasePattern);if(i>-1){t=[Number.MAX_SAFE_INTEGER,0];for(let e=this._lowercasePattern.length;e>0;e--)t.push(i+e-1)}}else t=(0,v.EW)(this._pattern,this._lowercasePattern,0,e,e.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});if(t)return this._matchCount++,1===o.length?{data:t,visibility:i}:{data:{label:e,score:t},visibility:i}}return this.tree.findMode===T.Filter?"number"===typeof this.tree.options.defaultFindVisibility?this.tree.options.defaultFindVisibility:this.tree.options.defaultFindVisibility?this.tree.options.defaultFindVisibility(e):2:{data:v.CL.Default,visibility:i}}reset(){this._totalCount=0,this._matchCount=0}dispose(){(0,b.B9)(this.disposables)}}r.g4,h.D;var T,M;!function(e){e[e.Highlight=0]="Highlight",e[e.Filter=1]="Filter"}(T||(T={})),function(e){e[e.Fuzzy=0]="Fuzzy",e[e.Contiguous=1]="Contiguous"}(M||(M={}));class A{get pattern(){return this._pattern}get mode(){return this._mode}set mode(e){e!==this._mode&&(this._mode=e,this.widget&&(this.widget.mode=this._mode),this.tree.refilter(),this.render(),this._onDidChangeMode.fire(e))}get matchType(){return this._matchType}set matchType(e){e!==this._matchType&&(this._matchType=e,this.widget&&(this.widget.matchType=this._matchType),this.tree.refilter(),this.render(),this._onDidChangeMatchType.fire(e))}constructor(e,t,i,n,o){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};var r,a;this.tree=e,this.view=i,this.filter=n,this.contextViewProvider=o,this.options=s,this._pattern="",this.width=0,this._onDidChangeMode=new _.Q5,this.onDidChangeMode=this._onDidChangeMode.event,this._onDidChangeMatchType=new _.Q5,this.onDidChangeMatchType=this._onDidChangeMatchType.event,this._onDidChangePattern=new _.Q5,this._onDidChangeOpenState=new _.Q5,this.onDidChangeOpenState=this._onDidChangeOpenState.event,this.enabledDisposables=new b.SL,this.disposables=new b.SL,this._mode=null!==(r=e.options.defaultFindMode)&&void 0!==r?r:T.Highlight,this._matchType=null!==(a=e.options.defaultFindMatchType)&&void 0!==a?a:M.Fuzzy,t.onDidSplice(this.onDidSpliceModel,this,this.disposables)}updateOptions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};void 0!==e.defaultFindMode&&(this.mode=e.defaultFindMode),void 0!==e.defaultFindMatchType&&(this.matchType=e.defaultFindMatchType)}onDidSpliceModel(){this.widget&&0!==this.pattern.length&&(this.tree.refilter(),this.render())}render(){var e,t,i,n;const o=this.filter.totalCount>0&&0===this.filter.matchCount;this.pattern&&o?null===(e=this.tree.options.showNotFoundMessage)||void 0===e||e?null===(t=this.widget)||void 0===t||t.showMessage({type:2,content:(0,y.NC)("not found","No elements found.")}):null===(i=this.widget)||void 0===i||i.showMessage({type:2}):null===(n=this.widget)||void 0===n||n.clearMessage()}shouldAllowFocus(e){return!this.widget||!this.pattern||(this.filter.totalCount>0&&this.filter.matchCount<=1||!v.CL.isDefault(e.filterData))}layout(e){var t;this.width=e,null===(t=this.widget)||void 0===t||t.layout(e)}dispose(){this._history=void 0,this._onDidChangePattern.dispose(),this.enabledDisposables.dispose(),this.disposables.dispose()}}function R(e,t){return e.position===t.position&&O(e,t)}function O(e,t){return e.node.element===t.node.element&&e.startIndex===t.startIndex&&e.height===t.height&&e.endIndex===t.endIndex}class P{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.stickyNodes=e}get count(){return this.stickyNodes.length}equal(e){return(0,u.fS)(this.stickyNodes,e.stickyNodes,R)}lastNodePartiallyVisible(){if(0===this.count)return!1;const e=this.stickyNodes[this.count-1];if(1===this.count)return 0!==e.position;const t=this.stickyNodes[this.count-2];return t.position+t.height!==e.position}animationStateChanged(e){if(!(0,u.fS)(this.stickyNodes,e.stickyNodes,O))return!1;if(0===this.count)return!1;const t=this.stickyNodes[this.count-1],i=e.stickyNodes[e.count-1];return t.position!==i.position}}class F{constrainStickyScrollNodes(e,t,i){for(let n=0;ni||n>=t)return e.slice(0,n)}return e}}class B extends b.JT{constructor(e,t,i,n,o){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};var r;super(),this.tree=e,this.model=t,this.view=i,this.treeDelegate=o,this.maxWidgetViewRatio=.4;const a=this.validateStickySettings(s);this.stickyScrollMaxItemCount=a.stickyScrollMaxItemCount,this.stickyScrollDelegate=null!==(r=s.stickyScrollDelegate)&&void 0!==r?r:new F,this._widget=this._register(new z(i.getScrollableElement(),i,e,n,o,s.accessibilityProvider)),this.onDidChangeHasFocus=this._widget.onDidChangeHasFocus,this.onContextMenu=this._widget.onContextMenu,this._register(i.onDidScroll((()=>this.update()))),this._register(i.onDidChangeContentHeight((()=>this.update()))),this._register(e.onDidChangeCollapseState((()=>this.update()))),this.update()}get height(){return this._widget.height}getNodeAtHeight(e){let t;if(t=0===e?this.view.firstVisibleIndex:this.view.indexAt(e+this.view.scrollTop),!(t<0||t>=this.view.length))return this.view.element(t)}update(){const e=this.getNodeAtHeight(0);if(!e||0===this.tree.scrollTop)return void this._widget.setState(void 0);const t=this.findStickyState(e);this._widget.setState(t)}findStickyState(e){const t=[];let i=e,n=0,o=this.getNextStickyNode(i,void 0,n);for(;o&&(t.push(o),n+=o.height,!(t.length<=this.stickyScrollMaxItemCount)||(i=this.getNextVisibleNode(o),i));)o=this.getNextStickyNode(i,o.node,n);const s=this.constrainStickyNodes(t);return s.length?new P(s):void 0}getNextVisibleNode(e){return this.getNodeAtHeight(e.position+e.height)}getNextStickyNode(e,t,i){const n=this.getAncestorUnderPrevious(e,t);if(n){if(n===e){if(!this.nodeIsUncollapsedParent(e))return;if(this.nodeTopAlignsWithStickyNodesBottom(e,i))return}return this.createStickyScrollNode(n,i)}}nodeTopAlignsWithStickyNodesBottom(e,t){const i=this.getNodeIndex(e),n=this.view.getElementTop(i),o=t;return this.view.scrollTop===n-o}createStickyScrollNode(e,t){const i=this.treeDelegate.getHeight(e),{startIndex:n,endIndex:o}=this.getNodeRange(e);return{node:e,position:this.calculateStickyNodePosition(o,t,i),height:i,startIndex:n,endIndex:o}}getAncestorUnderPrevious(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=e,n=this.getParentNode(i);for(;n;){if(n===t)return i;i=n,n=this.getParentNode(i)}if(void 0===t)return i}calculateStickyNodePosition(e,t,i){let n=this.view.getRelativeTop(e);if(null===n&&this.view.firstVisibleIndex===e&&e+1r&&t<=r?r-i:t}constrainStickyNodes(e){if(0===e.length)return[];const t=this.view.renderHeight*this.maxWidgetViewRatio,i=e[e.length-1];if(e.length<=this.stickyScrollMaxItemCount&&i.position+i.height<=t)return e;const n=this.stickyScrollDelegate.constrainStickyScrollNodes(e,this.stickyScrollMaxItemCount,t);if(!n.length)return[];const o=n[n.length-1];if(n.length>this.stickyScrollMaxItemCount||o.position+o.height>t)throw new Error("stickyScrollDelegate violates constraints");return n}getParentNode(e){const t=this.model.getNodeLocation(e),i=this.model.getParentNodeLocation(t);return i?this.model.getNode(i):void 0}nodeIsUncollapsedParent(e){const t=this.model.getNodeLocation(e);return this.model.getListRenderCount(t)>1}getNodeIndex(e){const t=this.model.getNodeLocation(e);return this.model.getListIndex(t)}getNodeRange(e){const t=this.model.getNodeLocation(e),i=this.model.getListIndex(t);if(i<0)throw new Error("Node not found in tree");return{startIndex:i,endIndex:i+this.model.getListRenderCount(t)-1}}nodePositionTopBelowWidget(e){const t=[];let i=this.getParentNode(e);for(;i;)t.push(i),i=this.getParentNode(i);let n=0;for(let o=0;o0&&void 0!==arguments[0]?arguments[0]:{};if(!e.stickyScrollMaxItemCount)return;const t=this.validateStickySettings(e);this.stickyScrollMaxItemCount!==t.stickyScrollMaxItemCount&&(this.stickyScrollMaxItemCount=t.stickyScrollMaxItemCount,this.update())}validateStickySettings(e){let t=7;return"number"===typeof e.stickyScrollMaxItemCount&&(t=Math.max(e.stickyScrollMaxItemCount,1)),{stickyScrollMaxItemCount:t}}}class z{constructor(e,t,i,n,s,r){this.view=t,this.tree=i,this.treeRenderers=n,this.treeDelegate=s,this.accessibilityProvider=r,this._previousElements=[],this._previousStateDisposables=new b.SL,this._rootDomNode=(0,o.$)(".monaco-tree-sticky-container.empty"),e.appendChild(this._rootDomNode);const a=(0,o.$)(".monaco-tree-sticky-container-shadow");this._rootDomNode.appendChild(a),this.stickyScrollFocus=new V(this._rootDomNode,t),this.onDidChangeHasFocus=this.stickyScrollFocus.onDidChangeHasFocus,this.onContextMenu=this.stickyScrollFocus.onContextMenu}get height(){if(!this._previousState)return 0;const e=this._previousState.stickyNodes[this._previousState.count-1];return e.position+e.height}setState(e){const t=!!this._previousState&&this._previousState.count>0,i=!!e&&e.count>0;if(!t&&!i||t&&i&&this._previousState.equal(e))return;if(t!==i&&this.setVisible(i),!i)return this._previousState=void 0,this._previousElements=[],void this._previousStateDisposables.clear();const n=e.stickyNodes[e.count-1];if(this._previousState&&e.animationStateChanged(this._previousState))this._previousElements[this._previousState.count-1].style.top="".concat(n.position,"px");else{this._previousStateDisposables.clear();const t=Array(e.count);for(let i=e.count-1;i>=0;i--){const n=e.stickyNodes[i],{element:o,disposable:s}=this.createElement(n,i,e.count);t[i]=o,this._rootDomNode.appendChild(o),this._previousStateDisposables.add(s)}this.stickyScrollFocus.updateElements(t,e),this._previousElements=t}this._previousState=e,this._rootDomNode.style.height="".concat(n.position+n.height,"px")}createElement(e,t,i){const n=e.startIndex,o=document.createElement("div");o.style.top="".concat(e.position,"px"),!1!==this.tree.options.setRowHeight&&(o.style.height="".concat(e.height,"px")),!1!==this.tree.options.setRowLineHeight&&(o.style.lineHeight="".concat(e.height,"px")),o.classList.add("monaco-tree-sticky-row"),o.classList.add("monaco-list-row"),o.setAttribute("data-index","".concat(n)),o.setAttribute("data-parity",n%2===0?"even":"odd"),o.setAttribute("id",this.view.getElementID(n));const s=this.setAccessibilityAttributes(o,e.node.element,t,i),r=this.treeDelegate.getTemplateId(e.node),a=this.treeRenderers.find((e=>e.templateId===r));if(!a)throw new Error("No renderer found for template id ".concat(r));let l=e.node;l===this.tree.getNode(this.tree.getNodeLocation(e.node))&&(l=new Proxy(e.node,{}));const h=a.renderTemplate(o);a.renderElement(l,e.startIndex,h,e.height);const d=(0,b.OF)((()=>{s.dispose(),a.disposeElement(l,e.startIndex,h,e.height),a.disposeTemplate(h),o.remove()}));return{element:o,disposable:d}}setAccessibilityAttributes(e,t,i,n){var o;if(!this.accessibilityProvider)return b.JT.None;this.accessibilityProvider.getSetSize&&e.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(t,i,n))),this.accessibilityProvider.getPosInSet&&e.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(t,i))),this.accessibilityProvider.getRole&&e.setAttribute("role",null!==(o=this.accessibilityProvider.getRole(t))&&void 0!==o?o:"treeitem");const s=this.accessibilityProvider.getAriaLabel(t),r=s&&"string"!==typeof s?s:(0,S.Dz)(s),a=(0,S.EH)((t=>{const i=t.readObservable(r);i?e.setAttribute("aria-label",i):e.removeAttribute("aria-label")}));"string"===typeof s||s&&e.setAttribute("aria-label",s.get());const l=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(t);return"number"===typeof l&&e.setAttribute("aria-level","".concat(l)),e.setAttribute("aria-selected",String(!1)),a}setVisible(e){this._rootDomNode.classList.toggle("empty",!e),e||this.stickyScrollFocus.updateElements([],void 0)}domFocus(){this.stickyScrollFocus.domFocus()}focusedLast(){return this.stickyScrollFocus.focusedLast()}dispose(){this.stickyScrollFocus.dispose(),this._previousStateDisposables.dispose(),this._rootDomNode.remove()}}class V extends b.JT{get domHasFocus(){return this._domHasFocus}set domHasFocus(e){e!==this._domHasFocus&&(this._onDidChangeHasFocus.fire(e),this._domHasFocus=e)}constructor(e,t){super(),this.container=e,this.view=t,this.focusedIndex=-1,this.elements=[],this._onDidChangeHasFocus=new _.Q5,this.onDidChangeHasFocus=this._onDidChangeHasFocus.event,this._onContextMenu=new _.Q5,this.onContextMenu=this._onContextMenu.event,this._domHasFocus=!1,this.container.addEventListener("focus",(()=>this.onFocus())),this.container.addEventListener("blur",(()=>this.onBlur())),this._register(this.view.onDidFocus((()=>this.toggleStickyScrollFocused(!1)))),this._register(this.view.onKeyDown((e=>this.onKeyDown(e)))),this._register(this.view.onMouseDown((e=>this.onMouseDown(e)))),this._register(this.view.onContextMenu((e=>this.handleContextMenu(e))))}handleContextMenu(e){const t=e.browserEvent.target;if(!(0,l.xf)(t)&&!(0,l.Et)(t))return void(this.focusedLast()&&this.view.domFocus());if(!(0,o.vd)(e.browserEvent)){if(!this.state)throw new Error("Context menu should not be triggered when state is undefined");const t=this.state.stickyNodes.findIndex((t=>{var i;return t.node.element===(null===(i=e.element)||void 0===i?void 0:i.element)}));if(-1===t)throw new Error("Context menu should not be triggered when element is not in sticky scroll widget");return this.container.focus(),void this.setFocus(t)}if(!this.state||this.focusedIndex<0)throw new Error("Context menu key should not be triggered when focus is not in sticky scroll widget");const i=this.state.stickyNodes[this.focusedIndex].node.element,n=this.elements[this.focusedIndex];this._onContextMenu.fire({element:i,anchor:n,browserEvent:e.browserEvent,isStickyScroll:!0})}onKeyDown(e){if(this.domHasFocus&&this.state)if("ArrowUp"===e.key)this.setFocusedElement(Math.max(0,this.focusedIndex-1)),e.preventDefault(),e.stopPropagation();else if("ArrowDown"===e.key||"ArrowRight"===e.key){if(this.focusedIndex>=this.state.count-1){const e=this.state.stickyNodes[this.state.count-1].startIndex+1;this.view.domFocus(),this.view.setFocus([e]),this.scrollNodeUnderWidget(e,this.state)}else this.setFocusedElement(this.focusedIndex+1);e.preventDefault(),e.stopPropagation()}}onMouseDown(e){const t=e.browserEvent.target;((0,l.xf)(t)||(0,l.Et)(t))&&(e.browserEvent.preventDefault(),e.browserEvent.stopPropagation())}updateElements(e,t){if(t&&0===t.count)throw new Error("Sticky scroll state must be undefined when there are no sticky nodes");if(t&&t.count!==e.length)throw new Error("Sticky scroll focus received illigel state");const i=this.focusedIndex;if(this.removeFocus(),this.elements=e,this.state=t,t){const e=(0,C.uZ)(i,0,t.count-1);this.setFocus(e)}else this.domHasFocus&&this.view.domFocus();this.container.tabIndex=t?0:-1}setFocusedElement(e){const t=this.state;if(!t)throw new Error("Cannot set focus when state is undefined");if(this.setFocus(e),!(e1?t.stickyNodes[t.count-2]:void 0,o=this.view.getElementTop(e),s=n?n.position+n.height+i.height:i.height;this.view.scrollTop=o-s}domFocus(){if(!this.state)throw new Error("Cannot focus when state is undefined");this.container.focus()}focusedLast(){return!!this.state&&this.view.getHTMLElement().classList.contains("sticky-scroll-focused")}removeFocus(){-1!==this.focusedIndex&&(this.toggleElementFocus(this.elements[this.focusedIndex],!1),this.focusedIndex=-1)}setFocus(e){if(0>e)throw new Error("addFocus() can not remove focus");if(!this.state&&e>=0)throw new Error("Cannot set focus index when state is undefined");if(this.state&&e>=this.state.count)throw new Error("Cannot set focus index to an index that does not exist");const t=this.focusedIndex;t>=0&&this.toggleElementFocus(this.elements[t],!1),e>=0&&this.toggleElementFocus(this.elements[e],!0),this.focusedIndex=e}toggleElementFocus(e,t){this.toggleElementActiveFocus(e,t&&this.domHasFocus),this.toggleElementPassiveFocus(e,t)}toggleCurrentElementActiveFocus(e){-1!==this.focusedIndex&&this.toggleElementActiveFocus(this.elements[this.focusedIndex],e)}toggleElementActiveFocus(e,t){e.classList.toggle("focused",t)}toggleElementPassiveFocus(e,t){e.classList.toggle("passive-focused",t)}toggleStickyScrollFocused(e){this.view.getHTMLElement().classList.toggle("sticky-scroll-focused",e)}onFocus(){if(!this.state||0===this.elements.length)throw new Error("Cannot focus when state is undefined or elements are empty");this.domHasFocus=!0,this.toggleStickyScrollFocused(!0),this.toggleCurrentElementActiveFocus(!0),-1===this.focusedIndex&&this.setFocus(0)}onBlur(){this.domHasFocus=!1,this.toggleCurrentElementActiveFocus(!1)}dispose(){this.toggleStickyScrollFocused(!1),this._onDidChangeHasFocus.fire(!1),super.dispose()}}function W(e){let t=c.sD.Unknown;return(0,o.uU)(e.browserEvent.target,"monaco-tl-twistie","monaco-tl-row")?t=c.sD.Twistie:(0,o.uU)(e.browserEvent.target,"monaco-tl-contents","monaco-tl-row")?t=c.sD.Element:(0,o.uU)(e.browserEvent.target,"monaco-tree-type-filter","monaco-list")&&(t=c.sD.Filter),{browserEvent:e.browserEvent,element:e.element?e.element.element:null,target:t}}function H(e){const t=(0,l.xf)(e.browserEvent.target);return{element:e.element?e.element.element:null,browserEvent:e.browserEvent,anchor:e.anchor,isStickyScroll:t}}function K(e,t){t(e),e.children.forEach((e=>K(e,t)))}class U{get nodeSet(){return this._nodeSet||(this._nodeSet=this.createNodeSet()),this._nodeSet}constructor(e,t){this.getFirstViewElementWithTrait=e,this.identityProvider=t,this.nodes=[],this._onDidChange=new _.Q5,this.onDidChange=this._onDidChange.event}set(e,t){!(null===t||void 0===t?void 0:t.__forceEvent)&&(0,u.fS)(this.nodes,e)||this._set(e,!1,t)}_set(e,t,i){if(this.nodes=[...e],this.elements=void 0,this._nodeSet=void 0,!t){const e=this;this._onDidChange.fire({get elements(){return e.get()},browserEvent:i})}}get(){return this.elements||(this.elements=this.nodes.map((e=>e.element))),[...this.elements]}getNodes(){return this.nodes}has(e){return this.nodeSet.has(e)}onDidModelSplice(e){let{insertedNodes:t,deletedNodes:i}=e;if(!this.identityProvider){const e=this.createNodeSet(),t=t=>e.delete(t);return i.forEach((e=>K(e,t))),void this.set([...e.values()])}const n=new Set,o=e=>n.add(this.identityProvider.getId(e.element).toString());i.forEach((e=>K(e,o)));const s=new Map,r=e=>s.set(this.identityProvider.getId(e.element).toString(),e);t.forEach((e=>K(e,r)));const a=[];for(const l of this.nodes){const e=this.identityProvider.getId(l.element).toString();if(n.has(e)){const t=s.get(e);t&&t.visible&&a.push(t)}else a.push(l)}if(this.nodes.length>0&&0===a.length){const e=this.getFirstViewElementWithTrait();e&&a.push(e)}this._set(a,!0)}createNodeSet(){const e=new Set;for(const t of this.nodes)e.add(t);return e}}class j extends l.sx{constructor(e,t,i){super(e),this.tree=t,this.stickyScrollProvider=i}onViewPointer(e){if((0,l.iK)(e.browserEvent.target)||(0,l.cK)(e.browserEvent.target)||(0,l.hD)(e.browserEvent.target))return;if(e.browserEvent.isHandledByList)return;const t=e.element;if(!t)return super.onViewPointer(e);if(this.isSelectionRangeChangeEvent(e)||this.isSelectionSingleChangeEvent(e))return super.onViewPointer(e);const i=e.browserEvent.target,n=i.classList.contains("monaco-tl-twistie")||i.classList.contains("monaco-icon-label")&&i.classList.contains("folder-icon")&&e.browserEvent.offsetX<16,o=(0,l.Et)(e.browserEvent.target);let s=!1;if(s=!!o||("function"===typeof this.tree.expandOnlyOnTwistieClick?this.tree.expandOnlyOnTwistieClick(t.element):!!this.tree.expandOnlyOnTwistieClick),o)this.handleStickyScrollMouseEvent(e,t);else{if(s&&!n&&2!==e.browserEvent.detail)return super.onViewPointer(e);if(!this.tree.expandOnDoubleClick&&2===e.browserEvent.detail)return super.onViewPointer(e)}if(t.collapsible&&(!o||n)){const i=this.tree.getNodeLocation(t),o=e.browserEvent.altKey;if(this.tree.setFocus([i]),this.tree.toggleCollapsed(i,o),s&&n)return void(e.browserEvent.isHandledByList=!0)}o||super.onViewPointer(e)}handleStickyScrollMouseEvent(e,t){if((0,l.$B)(e.browserEvent.target)||(0,l.dk)(e.browserEvent.target))return;const i=this.stickyScrollProvider();if(!i)throw new Error("Sticky scroll controller not found");const n=this.list.indexOf(t),o=this.list.getElementTop(n),s=i.nodePositionTopBelowWidget(t);this.tree.scrollTop=o-s,this.list.domFocus(),this.list.setFocus([n]),this.list.setSelection([n])}onDoubleClick(e){!e.browserEvent.target.classList.contains("monaco-tl-twistie")&&this.tree.expandOnDoubleClick&&(e.browserEvent.isHandledByList||super.onDoubleClick(e))}onMouseDown(e){const t=e.browserEvent.target;(0,l.xf)(t)||(0,l.Et)(t)||super.onMouseDown(e)}onContextMenu(e){const t=e.browserEvent.target;(0,l.xf)(t)||(0,l.Et)(t)||super.onContextMenu(e)}}class q extends l.aV{constructor(e,t,i,n,o,s,r,a){super(e,t,i,n,a),this.focusTrait=o,this.selectionTrait=s,this.anchorTrait=r}createMouseController(e){return new j(this,e.tree,e.stickyScrollProvider)}splice(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(super.splice(e,t,i),0===i.length)return;const n=[],o=[];let s;i.forEach(((t,i)=>{this.focusTrait.has(t)&&n.push(e+i),this.selectionTrait.has(t)&&o.push(e+i),this.anchorTrait.has(t)&&(s=e+i)})),n.length>0&&super.setFocus((0,u.EB)([...super.getFocus(),...n])),o.length>0&&super.setSelection((0,u.EB)([...super.getSelection(),...o])),"number"===typeof s&&super.setAnchor(s)}setFocus(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];super.setFocus(e,t),i||this.focusTrait.set(e.map((e=>this.element(e))),t)}setSelection(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];super.setSelection(e,t),i||this.selectionTrait.set(e.map((e=>this.element(e))),t)}setAnchor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];super.setAnchor(e),t||("undefined"===typeof e?this.anchorTrait.set([]):this.anchorTrait.set([this.element(e)]))}}class G{get onDidScroll(){return this.view.onDidScroll}get onDidChangeFocus(){return this.eventBufferer.wrapEvent(this.focus.onDidChange)}get onDidChangeSelection(){return this.eventBufferer.wrapEvent(this.selection.onDidChange)}get onMouseDblClick(){return _.ju.filter(_.ju.map(this.view.onMouseDblClick,W),(e=>e.target!==c.sD.Filter))}get onMouseOver(){return _.ju.map(this.view.onMouseOver,W)}get onMouseOut(){return _.ju.map(this.view.onMouseOut,W)}get onContextMenu(){var e,t;return _.ju.any(_.ju.filter(_.ju.map(this.view.onContextMenu,H),(e=>!e.isStickyScroll)),null!==(t=null===(e=this.stickyScrollController)||void 0===e?void 0:e.onContextMenu)&&void 0!==t?t:_.ju.None)}get onPointer(){return _.ju.map(this.view.onPointer,W)}get onKeyDown(){return this.view.onKeyDown}get onDidFocus(){return this.view.onDidFocus}get onDidChangeModel(){return _.ju.signal(this.model.onDidSplice)}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get findMode(){var e,t;return null!==(t=null===(e=this.findController)||void 0===e?void 0:e.mode)&&void 0!==t?t:T.Highlight}set findMode(e){this.findController&&(this.findController.mode=e)}get findMatchType(){var e,t;return null!==(t=null===(e=this.findController)||void 0===e?void 0:e.matchType)&&void 0!==t?t:M.Fuzzy}set findMatchType(e){this.findController&&(this.findController.matchType=e)}get expandOnDoubleClick(){return"undefined"===typeof this._options.expandOnDoubleClick||this._options.expandOnDoubleClick}get expandOnlyOnTwistieClick(){return"undefined"===typeof this._options.expandOnlyOnTwistieClick||this._options.expandOnlyOnTwistieClick}get onDidDispose(){return this.view.onDidDispose}constructor(e,t,i,r){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};var h;this._user=e,this._options=a,this.eventBufferer=new _.E7,this.onDidChangeFindOpenState=_.ju.None,this.onDidChangeStickyScrollFocused=_.ju.None,this.disposables=new b.SL,this._onWillRefilter=new _.Q5,this.onWillRefilter=this._onWillRefilter.event,this._onDidUpdateOptions=new _.Q5,this.treeDelegate=new N(i);const d=new _.ZD,c=new _.ZD,u=this.disposables.add(new x(c.event)),m=new p.ri;this.renderers=r.map((e=>new E(e,(()=>this.model),d.event,u,m,a)));for(const n of this.renderers)this.disposables.add(n);let f;var v,C;a.keyboardNavigationLabelProvider&&(f=new I(this,a.keyboardNavigationLabelProvider,a.filter),a={...a,filter:f},this.disposables.add(f)),this.focus=new U((()=>this.view.getFocusedElements()[0]),a.identityProvider),this.selection=new U((()=>this.view.getSelectedElements()[0]),a.identityProvider),this.anchor=new U((()=>this.view.getAnchorElement()),a.identityProvider),this.view=new q(e,t,this.treeDelegate,this.renderers,this.focus,this.selection,this.anchor,{...(v=()=>this.model,C=a,C&&{...C,identityProvider:C.identityProvider&&{getId:e=>C.identityProvider.getId(e.element)},dnd:C.dnd&&new D(v,C.dnd),multipleSelectionController:C.multipleSelectionController&&{isSelectionSingleChangeEvent:e=>C.multipleSelectionController.isSelectionSingleChangeEvent({...e,element:e.element}),isSelectionRangeChangeEvent:e=>C.multipleSelectionController.isSelectionRangeChangeEvent({...e,element:e.element})},accessibilityProvider:C.accessibilityProvider&&{...C.accessibilityProvider,getSetSize(e){const t=v(),i=t.getNodeLocation(e),n=t.getParentNodeLocation(i);return t.getNode(n).visibleChildrenCount},getPosInSet:e=>e.visibleChildIndex+1,isChecked:C.accessibilityProvider&&C.accessibilityProvider.isChecked?e=>C.accessibilityProvider.isChecked(e.element):void 0,getRole:C.accessibilityProvider&&C.accessibilityProvider.getRole?e=>C.accessibilityProvider.getRole(e.element):()=>"treeitem",getAriaLabel:e=>C.accessibilityProvider.getAriaLabel(e.element),getWidgetAriaLabel:()=>C.accessibilityProvider.getWidgetAriaLabel(),getWidgetRole:C.accessibilityProvider&&C.accessibilityProvider.getWidgetRole?()=>C.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:C.accessibilityProvider&&C.accessibilityProvider.getAriaLevel?e=>C.accessibilityProvider.getAriaLevel(e.element):e=>e.depth,getActiveDescendantId:C.accessibilityProvider.getActiveDescendantId&&(e=>C.accessibilityProvider.getActiveDescendantId(e.element))},keyboardNavigationLabelProvider:C.keyboardNavigationLabelProvider&&{...C.keyboardNavigationLabelProvider,getKeyboardNavigationLabel:e=>C.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e.element)}}),tree:this,stickyScrollProvider:()=>this.stickyScrollController}),this.model=this.createModel(e,this.view,a),d.input=this.model.onDidChangeCollapseState;const w=_.ju.forEach(this.model.onDidSplice,(e=>{this.eventBufferer.bufferEvents((()=>{this.focus.onDidModelSplice(e),this.selection.onDidModelSplice(e)}))}),this.disposables);w((()=>null),null,this.disposables);const y=this.disposables.add(new _.Q5),S=this.disposables.add(new g.vp(0));if(this.disposables.add(_.ju.any(w,this.focus.onDidChange,this.selection.onDidChange)((()=>{S.trigger((()=>{const e=new Set;for(const t of this.focus.getNodes())e.add(t);for(const t of this.selection.getNodes())e.add(t);y.fire([...e.values()])}))}))),c.input=y.event,!1!==a.keyboardSupport){const e=_.ju.chain(this.view.onKeyDown,(e=>e.filter((e=>!(0,l.cK)(e.target))).map((e=>new s.y(e)))));_.ju.chain(e,(e=>e.filter((e=>15===e.keyCode))))(this.onLeftArrow,this,this.disposables),_.ju.chain(e,(e=>e.filter((e=>17===e.keyCode))))(this.onRightArrow,this,this.disposables),_.ju.chain(e,(e=>e.filter((e=>10===e.keyCode))))(this.onSpace,this,this.disposables)}if((null===(h=a.findWidgetEnabled)||void 0===h||h)&&a.keyboardNavigationLabelProvider&&a.contextViewProvider){const e=this.options.findWidgetStyles?{styles:this.options.findWidgetStyles}:void 0;this.findController=new A(this,this.model,this.view,f,a.contextViewProvider,e),this.focusNavigationFilter=e=>this.findController.shouldAllowFocus(e),this.onDidChangeFindOpenState=this.findController.onDidChangeOpenState,this.disposables.add(this.findController),this.onDidChangeFindMode=this.findController.onDidChangeMode,this.onDidChangeFindMatchType=this.findController.onDidChangeMatchType}else this.onDidChangeFindMode=_.ju.None,this.onDidChangeFindMatchType=_.ju.None;a.enableStickyScroll&&(this.stickyScrollController=new B(this,this.model,this.view,this.renderers,this.treeDelegate,a),this.onDidChangeStickyScrollFocused=this.stickyScrollController.onDidChangeHasFocus),this.styleElement=(0,o.dS)(this.view.getHTMLElement()),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===n.Always)}updateOptions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t;this._options={...this._options,...e};for(const i of this.renderers)i.updateOptions(e);this.view.updateOptions(this._options),null===(t=this.findController)||void 0===t||t.updateOptions(e),this.updateStickyScroll(e),this._onDidUpdateOptions.fire(this._options),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===n.Always)}get options(){return this._options}updateStickyScroll(e){var t;!this.stickyScrollController&&this._options.enableStickyScroll?(this.stickyScrollController=new B(this,this.model,this.view,this.renderers,this.treeDelegate,this._options),this.onDidChangeStickyScrollFocused=this.stickyScrollController.onDidChangeHasFocus):this.stickyScrollController&&!this._options.enableStickyScroll&&(this.onDidChangeStickyScrollFocused=_.ju.None,this.stickyScrollController.dispose(),this.stickyScrollController=void 0),null===(t=this.stickyScrollController)||void 0===t||t.updateOptions(e)}getHTMLElement(){return this.view.getHTMLElement()}get scrollTop(){return this.view.scrollTop}set scrollTop(e){this.view.scrollTop=e}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}get ariaLabel(){return this.view.ariaLabel}set ariaLabel(e){this.view.ariaLabel=e}domFocus(){var e;(null===(e=this.stickyScrollController)||void 0===e?void 0:e.focusedLast())?this.stickyScrollController.domFocus():this.view.domFocus()}layout(e,t){var i;this.view.layout(e,t),(0,w.hj)(t)&&(null===(i=this.findController)||void 0===i||i.layout(t))}style(e){var t;const i=".".concat(this.view.domId),n=[];e.treeIndentGuidesStroke&&(n.push(".monaco-list".concat(i,":hover .monaco-tl-indent > .indent-guide, .monaco-list").concat(i,".always .monaco-tl-indent > .indent-guide { border-color: ").concat(e.treeInactiveIndentGuidesStroke,"; }")),n.push(".monaco-list".concat(i," .monaco-tl-indent > .indent-guide.active { border-color: ").concat(e.treeIndentGuidesStroke,"; }"))),e.listBackground&&(n.push(".monaco-list".concat(i," .monaco-scrollable-element .monaco-tree-sticky-container { background-color: ").concat(e.listBackground,"; }")),n.push(".monaco-list".concat(i," .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row { background-color: ").concat(e.listBackground,"; }"))),e.listFocusForeground&&(n.push(".monaco-list".concat(i,".sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused { color: ").concat(e.listFocusForeground,"; }")),n.push(".monaco-list".concat(i,":not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused { color: inherit; }")));const s=(0,o.XT)(e.listFocusAndSelectionOutline,(0,o.XT)(e.listSelectionOutline,null!==(t=e.listFocusOutline)&&void 0!==t?t:""));s&&(n.push(".monaco-list".concat(i,".sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused.selected { outline: 1px solid ").concat(s,"; outline-offset: -1px;}")),n.push(".monaco-list".concat(i,":not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused.selected { outline: inherit;}"))),e.listFocusOutline&&(n.push(".monaco-list".concat(i,".sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused { outline: 1px solid ").concat(e.listFocusOutline,"; outline-offset: -1px; }")),n.push(".monaco-list".concat(i,":not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused { outline: inherit; }")),n.push(".monaco-workbench.context-menu-visible .monaco-list".concat(i,".last-focused.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.passive-focused { outline: 1px solid ").concat(e.listFocusOutline,"; outline-offset: -1px; }")),n.push(".monaco-workbench.context-menu-visible .monaco-list".concat(i,".last-focused.sticky-scroll-focused .monaco-list-rows .monaco-list-row.focused { outline: inherit; }")),n.push(".monaco-workbench.context-menu-visible .monaco-list".concat(i,".last-focused:not(.sticky-scroll-focused) .monaco-tree-sticky-container .monaco-list-rows .monaco-list-row.focused { outline: inherit; }"))),this.styleElement.textContent=n.join("\n"),this.view.style(e)}getParentElement(e){const t=this.model.getParentNodeLocation(e);return this.model.getNode(t).element}getFirstElementChild(e){return this.model.getFirstElementChild(e)}getNode(e){return this.model.getNode(e)}getNodeLocation(e){return this.model.getNodeLocation(e)}collapse(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.model.setCollapsed(e,!0,t)}expand(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.model.setCollapsed(e,!1,t)}toggleCollapsed(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.model.setCollapsed(e,void 0,t)}isCollapsible(e){return this.model.isCollapsible(e)}setCollapsible(e,t){return this.model.setCollapsible(e,t)}isCollapsed(e){return this.model.isCollapsed(e)}refilter(){this._onWillRefilter.fire(void 0),this.model.refilter()}setSelection(e,t){this.eventBufferer.bufferEvents((()=>{const i=e.map((e=>this.model.getNode(e)));this.selection.set(i,t);const n=e.map((e=>this.model.getListIndex(e))).filter((e=>e>-1));this.view.setSelection(n,t,!0)}))}getSelection(){return this.selection.get()}setFocus(e,t){this.eventBufferer.bufferEvents((()=>{const i=e.map((e=>this.model.getNode(e)));this.focus.set(i,t);const n=e.map((e=>this.model.getListIndex(e))).filter((e=>e>-1));this.view.setFocus(n,t,!0)}))}focusNext(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:(0,o.vd)(i)&&i.altKey?void 0:this.focusNavigationFilter;this.view.focusNext(e,t,i,n)}focusPrevious(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:(0,o.vd)(i)&&i.altKey?void 0:this.focusNavigationFilter;this.view.focusPrevious(e,t,i,n)}focusNextPage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,o.vd)(e)&&e.altKey?void 0:this.focusNavigationFilter;return this.view.focusNextPage(e,t)}focusPreviousPage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,o.vd)(e)&&e.altKey?void 0:this.focusNavigationFilter;return this.view.focusPreviousPage(e,t,(()=>{var e,t;return null!==(t=null===(e=this.stickyScrollController)||void 0===e?void 0:e.height)&&void 0!==t?t:0}))}focusFirst(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,o.vd)(e)&&e.altKey?void 0:this.focusNavigationFilter;this.view.focusFirst(e,t)}getFocus(){return this.focus.get()}reveal(e,t){this.model.expandTo(e);const i=this.model.getListIndex(e);if(-1!==i)if(this.stickyScrollController){const n=this.stickyScrollController.nodePositionTopBelowWidget(this.getNode(e));this.view.reveal(i,t,n)}else this.view.reveal(i,t)}onLeftArrow(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(0===t.length)return;const i=t[0],n=this.model.getNodeLocation(i);if(!this.model.setCollapsed(n,!0)){const e=this.model.getParentNodeLocation(n);if(!e)return;const t=this.model.getListIndex(e);this.view.reveal(t),this.view.setFocus([t])}}onRightArrow(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(0===t.length)return;const i=t[0],n=this.model.getNodeLocation(i);if(!this.model.setCollapsed(n,!1)){if(!i.children.some((e=>e.visible)))return;const[e]=this.view.getFocus(),t=e+1;this.view.reveal(t),this.view.setFocus([t])}}onSpace(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(0===t.length)return;const i=t[0],n=this.model.getNodeLocation(i),o=e.browserEvent.altKey;this.model.setCollapsed(n,void 0,o)}dispose(){var e;(0,b.B9)(this.disposables),null===(e=this.stickyScrollController)||void 0===e||e.dispose(),this.view.dispose()}}},18416:(e,t,i)=>{i.d(t,{X:()=>g,aG:()=>c,gB:()=>d});var n=i(61746),o=i(75629),s=i(60282),r=i(59786),a=i(24323),l=i(24219),h=i(36952);function d(e){return"object"===typeof e&&"visibility"in e&&"data"in e}function c(e){switch(e){case!0:return 1;case!1:return 0;default:return e}}function u(e){return"boolean"===typeof e.collapsible}class g{constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};var o;this.user=e,this.list=t,this.rootRef=[],this.eventBufferer=new l.E7,this._onDidChangeCollapseState=new l.Q5,this.onDidChangeCollapseState=this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event),this._onDidChangeRenderNodeCount=new l.Q5,this.onDidChangeRenderNodeCount=this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event),this._onDidSplice=new l.Q5,this.onDidSplice=this._onDidSplice.event,this.refilterDelayer=new s.vp(r.n),this.collapseByDefault="undefined"!==typeof n.collapseByDefault&&n.collapseByDefault,this.allowNonCollapsibleParents=null!==(o=n.allowNonCollapsibleParents)&&void 0!==o&&o,this.filter=n.filter,this.autoExpandSingleChildren="undefined"!==typeof n.autoExpandSingleChildren&&n.autoExpandSingleChildren,this.root={parent:void 0,element:i,children:[],depth:0,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:!1,collapsed:!1,renderNodeCount:0,visibility:1,visible:!0,filterData:void 0}}splice(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.$.empty(),o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(0===e.length)throw new n.ac(this.user,"Invalid tree location");o.diffIdentityProvider?this.spliceSmart(o.diffIdentityProvider,e,t,i,o):this.spliceSimple(e,t,i,o)}spliceSmart(e,t,i,n,o,s){var r;void 0===n&&(n=h.$.empty()),void 0===s&&(s=null!==(r=o.diffDepth)&&void 0!==r?r:0);const{parentNode:l}=this.getParentNodeWithListIndex(t);if(!l.lastDiffIds)return this.spliceSimple(t,i,n,o);const d=[...n],c=t[t.length-1],u=new a.Hs({getElements:()=>l.lastDiffIds},{getElements:()=>[...l.children.slice(0,c),...d,...l.children.slice(c+i)].map((t=>e.getId(t.element).toString()))}).ComputeDiff(!1);if(u.quitEarly)return l.lastDiffIds=void 0,this.spliceSimple(t,i,d,o);const g=t.slice(0,-1),m=(t,i,n)=>{if(s>0)for(let r=0;rt.originalStart-e.originalStart)))m(f,p,f-(a.originalStart+a.originalLength)),f=a.originalStart,p=a.modifiedStart-c,this.spliceSimple([...g,f],a.originalLength,h.$.slice(d,p,p+a.modifiedLength),o);m(f,p,f)}spliceSimple(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.$.empty(),{onDidCreateNode:n,onDidDeleteNode:s,diffIdentityProvider:r}=arguments.length>3?arguments[3]:void 0;const{parentNode:a,listIndex:l,revealed:d,visible:c}=this.getParentNodeWithListIndex(e),u=[],g=h.$.map(i,(e=>this.createTreeNode(e,a,a.visible?1:0,d,u,n))),m=e[e.length-1];let f=0;for(let o=m;o>=0&&or.getId(e.element).toString()))):a.lastDiffIds=a.children.map((e=>r.getId(e.element).toString())):a.lastDiffIds=void 0;let C=0;for(const o of b)o.visible&&C++;if(0!==C)for(let o=m+p.length;oe+(t.visible?t.renderNodeCount:0)),0);this._updateAncestorsRenderNodeCount(a,v-e),this.list.splice(l,e,u)}if(b.length>0&&s){const e=t=>{s(t),t.children.forEach(e)};b.forEach(e)}this._onDidSplice.fire({insertedNodes:p,deletedNodes:b});let w=a;for(;w;){if(2===w.visibility){this.refilterDelayer.trigger((()=>this.refilter()));break}w=w.parent}}rerender(e){if(0===e.length)throw new n.ac(this.user,"Invalid tree location");const{node:t,listIndex:i,revealed:o}=this.getTreeNodeWithListIndex(e);t.visible&&o&&this.list.splice(i,1,[t])}has(e){return this.hasTreeNode(e)}getListIndex(e){const{listIndex:t,visible:i,revealed:n}=this.getTreeNodeWithListIndex(e);return i&&n?t:-1}getListRenderCount(e){return this.getTreeNode(e).renderNodeCount}isCollapsible(e){return this.getTreeNode(e).collapsible}setCollapsible(e,t){const i=this.getTreeNode(e);"undefined"===typeof t&&(t=!i.collapsible);const n={collapsible:t};return this.eventBufferer.bufferEvents((()=>this._setCollapseState(e,n)))}isCollapsed(e){return this.getTreeNode(e).collapsed}setCollapsed(e,t,i){const n=this.getTreeNode(e);"undefined"===typeof t&&(t=!n.collapsed);const o={collapsed:t,recursive:i||!1};return this.eventBufferer.bufferEvents((()=>this._setCollapseState(e,o)))}_setCollapseState(e,t){const{node:i,listIndex:n,revealed:o}=this.getTreeNodeWithListIndex(e),s=this._setListNodeCollapseState(i,n,o,t);if(i!==this.root&&this.autoExpandSingleChildren&&s&&!u(t)&&i.collapsible&&!i.collapsed&&!t.recursive){let n=-1;for(let e=0;e-1){n=-1;break}n=e}}n>-1&&this._setCollapseState([...e,n],t)}return s}_setListNodeCollapseState(e,t,i,n){const o=this._setNodeCollapseState(e,n,!1);if(!i||!e.visible||!o)return o;const s=e.renderNodeCount,r=this.updateNodeAfterCollapseChange(e),a=s-(-1===t?0:1);return this.list.splice(t+1,a,r.slice(1)),o}_setNodeCollapseState(e,t,i){let n;if(e===this.root?n=!1:(u(t)?(n=e.collapsible!==t.collapsible,e.collapsible=t.collapsible):e.collapsible?(n=e.collapsed!==t.collapsed,e.collapsed=t.collapsed):n=!1,n&&this._onDidChangeCollapseState.fire({node:e,deep:i})),!u(t)&&t.recursive)for(const o of e.children)n=this._setNodeCollapseState(o,t,!0)||n;return n}expandTo(e){this.eventBufferer.bufferEvents((()=>{let t=this.getTreeNode(e);for(;t.parent;)t=t.parent,e=e.slice(0,e.length-1),t.collapsed&&this._setCollapseState(e,{collapsed:!1,recursive:!1})}))}refilter(){const e=this.root.renderNodeCount,t=this.updateNodeAfterFilterChange(this.root);this.list.splice(0,e,t),this.refilterDelayer.cancel()}createTreeNode(e,t,i,n,o,s){const r={parent:t,element:e.element,children:[],depth:t.depth+1,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:"boolean"===typeof e.collapsible?e.collapsible:"undefined"!==typeof e.collapsed,collapsed:"undefined"===typeof e.collapsed?this.collapseByDefault:e.collapsed,renderNodeCount:1,visibility:1,visible:!0,filterData:void 0},a=this._filterNode(r,i);r.visibility=a,n&&o.push(r);const l=e.children||h.$.empty(),d=n&&0!==a&&!r.collapsed;let c=0,u=1;for(const h of l){const e=this.createTreeNode(h,r,a,d,o,s);r.children.push(e),u+=e.renderNodeCount,e.visible&&(e.visibleChildIndex=c++)}return this.allowNonCollapsibleParents||(r.collapsible=r.collapsible||r.children.length>0),r.visibleChildrenCount=c,r.visible=2===a?c>0:1===a,r.visible?r.collapsed||(r.renderNodeCount=u):(r.renderNodeCount=0,n&&o.pop()),null===s||void 0===s||s(r),r}updateNodeAfterCollapseChange(e){const t=e.renderNodeCount,i=[];return this._updateNodeAfterCollapseChange(e,i),this._updateAncestorsRenderNodeCount(e.parent,i.length-t),i}_updateNodeAfterCollapseChange(e,t){if(!1===e.visible)return 0;if(t.push(e),e.renderNodeCount=1,!e.collapsed)for(const i of e.children)e.renderNodeCount+=this._updateNodeAfterCollapseChange(i,t);return this._onDidChangeRenderNodeCount.fire(e),e.renderNodeCount}updateNodeAfterFilterChange(e){const t=e.renderNodeCount,i=[];return this._updateNodeAfterFilterChange(e,e.visible?1:0,i),this._updateAncestorsRenderNodeCount(e.parent,i.length-t),i}_updateNodeAfterFilterChange(e,t,i){let n,o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(e!==this.root){if(n=this._filterNode(e,t),0===n)return e.visible=!1,e.renderNodeCount=0,!1;o&&i.push(e)}const s=i.length;e.renderNodeCount=e===this.root?0:1;let r=!1;if(e.collapsed&&0===n)e.visibleChildrenCount=0;else{let t=0;for(const s of e.children)r=this._updateNodeAfterFilterChange(s,n,i,o&&!e.collapsed)||r,s.visible&&(s.visibleChildIndex=t++);e.visibleChildrenCount=t}return e!==this.root&&(e.visible=2===n?r:1===n,e.visibility=n),e.visible?e.collapsed||(e.renderNodeCount+=i.length-s):(e.renderNodeCount=0,o&&i.pop()),this._onDidChangeRenderNodeCount.fire(e),e.visible}_updateAncestorsRenderNodeCount(e,t){if(0!==t)for(;e;)e.renderNodeCount+=t,this._onDidChangeRenderNodeCount.fire(e),e=e.parent}_filterNode(e,t){const i=this.filter?this.filter.filter(e.element,t):1;return"boolean"===typeof i?(e.filterData=void 0,i?1:0):d(i)?(e.filterData=i.data,c(i.visibility)):(e.filterData=void 0,c(i))}hasTreeNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.root;if(!e||0===e.length)return!0;const[i,...n]=e;return!(i<0||i>t.children.length)&&this.hasTreeNode(n,t.children[i])}getTreeNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.root;if(!e||0===e.length)return t;const[i,...o]=e;if(i<0||i>t.children.length)throw new n.ac(this.user,"Invalid tree location");return this.getTreeNode(o,t.children[i])}getTreeNodeWithListIndex(e){if(0===e.length)return{node:this.root,listIndex:-1,revealed:!0,visible:!1};const{parentNode:t,listIndex:i,revealed:o,visible:s}=this.getParentNodeWithListIndex(e),r=e[e.length-1];if(r<0||r>t.children.length)throw new n.ac(this.user,"Invalid tree location");const a=t.children[r];return{node:a,listIndex:i,revealed:o,visible:s&&a.visible}}getParentNodeWithListIndex(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.root,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];const[r,...a]=e;if(r<0||r>t.children.length)throw new n.ac(this.user,"Invalid tree location");for(let n=0;n0&&void 0!==arguments[0]?arguments[0]:[];return this.getTreeNode(e)}getNodeLocation(e){const t=[];let i=e;for(;i.parent;)t.push(i.parent.children.indexOf(i)),i=i.parent;return t.reverse()}getParentNodeLocation(e){return 0===e.length?void 0:1===e.length?[]:(0,o.JH)(e)[0]}getFirstElementChild(e){const t=this.getTreeNode(e);if(0!==t.children.length)return t.children[0].element}}},61746:(e,t,i)=>{var n,o;i.d(t,{VA:()=>r,ac:()=>s,kn:()=>n,sD:()=>o}),function(e){e[e.Expanded=0]="Expanded",e[e.Collapsed=1]="Collapsed",e[e.PreserveOrExpanded=2]="PreserveOrExpanded",e[e.PreserveOrCollapsed=3]="PreserveOrCollapsed"}(n||(n={})),function(e){e[e.Unknown=0]="Unknown",e[e.Twistie=1]="Twistie",e[e.Element=2]="Element",e[e.Filter=3]="Filter"}(o||(o={}));class s extends Error{constructor(e,t){super("TreeError [".concat(e,"] ").concat(t))}}class r{constructor(e){this.fn=e,this._map=new WeakMap}map(e){let t=this._map.get(e);return t||(t=this.fn(e),this._map.set(e,t)),t}}},74812:(e,t,i)=>{i.d(t,{$:()=>l});var n=i(85714),o=i(39341),s=i(21494),r=i(48688),a=i(89599);class l extends a.JT{onclick(e,t){this._register(n.nm(e,n.tw.CLICK,(i=>t(new s.n(n.Jj(e),i)))))}onmousedown(e,t){this._register(n.nm(e,n.tw.MOUSE_DOWN,(i=>t(new s.n(n.Jj(e),i)))))}onmouseover(e,t){this._register(n.nm(e,n.tw.MOUSE_OVER,(i=>t(new s.n(n.Jj(e),i)))))}onmouseleave(e,t){this._register(n.nm(e,n.tw.MOUSE_LEAVE,(i=>t(new s.n(n.Jj(e),i)))))}onkeydown(e,t){this._register(n.nm(e,n.tw.KEY_DOWN,(e=>t(new o.y(e)))))}onkeyup(e,t){this._register(n.nm(e,n.tw.KEY_UP,(e=>t(new o.y(e)))))}oninput(e,t){this._register(n.nm(e,n.tw.INPUT,t))}onblur(e,t){this._register(n.nm(e,n.tw.BLUR,t))}onfocus(e,t){this._register(n.nm(e,n.tw.FOCUS,t))}ignoreGesture(e){return r.o.ignoreTarget(e)}}},29880:(e,t,i)=>{function n(e,t){const i=e;"number"!==typeof i.vscodeWindowId&&Object.defineProperty(i,"vscodeWindowId",{get:()=>t})}i.d(t,{E:()=>o,H:()=>n});const o=window},22337:(e,t,i)=>{i.d(t,{Wi:()=>a,Z0:()=>l,aU:()=>r,eZ:()=>d,wY:()=>h,xw:()=>c});var n=i(24219),o=i(89599),s=i(71721);class r extends o.JT{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],s=arguments.length>4?arguments[4]:void 0;super(),this._onDidChange=this._register(new n.Q5),this.onDidChange=this._onDidChange.event,this._enabled=!0,this._id=e,this._label=t,this._cssClass=i,this._enabled=o,this._actionCallback=s}get id(){return this._id}get label(){return this._label}set label(e){this._setLabel(e)}_setLabel(e){this._label!==e&&(this._label=e,this._onDidChange.fire({label:e}))}get tooltip(){return this._tooltip||""}set tooltip(e){this._setTooltip(e)}_setTooltip(e){this._tooltip!==e&&(this._tooltip=e,this._onDidChange.fire({tooltip:e}))}get class(){return this._cssClass}set class(e){this._setClass(e)}_setClass(e){this._cssClass!==e&&(this._cssClass=e,this._onDidChange.fire({class:e}))}get enabled(){return this._enabled}set enabled(e){this._setEnabled(e)}_setEnabled(e){this._enabled!==e&&(this._enabled=e,this._onDidChange.fire({enabled:e}))}get checked(){return this._checked}set checked(e){this._setChecked(e)}_setChecked(e){this._checked!==e&&(this._checked=e,this._onDidChange.fire({checked:e}))}async run(e,t){this._actionCallback&&await this._actionCallback(e)}}class a extends o.JT{constructor(){super(...arguments),this._onWillRun=this._register(new n.Q5),this.onWillRun=this._onWillRun.event,this._onDidRun=this._register(new n.Q5),this.onDidRun=this._onDidRun.event}async run(e,t){if(!e.enabled)return;let i;this._onWillRun.fire({action:e});try{await this.runAction(e,t)}catch(n){i=n}this._onDidRun.fire({action:e,error:i})}async runAction(e,t){await e.run(t)}}class l{constructor(){this.id=l.ID,this.label="",this.tooltip="",this.class="separator",this.enabled=!1,this.checked=!1}static join(){let e=[];for(var t=arguments.length,i=new Array(t),n=0;n{function n(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e[e.length-(1+t)]}function o(e){if(0===e.length)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function s(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(e,t)=>e===t;if(e===t)return!0;if(!e||!t)return!1;if(e.length!==t.length)return!1;for(let n=0,o=e.length;n0))return e;n=e-1}}return-(i+1)}(e.length,(n=>i(e[n],t)))}function l(e,t,i){if((e|=0)>=t.length)throw new TypeError("invalid index");const n=t[Math.floor(t.length*Math.random())],o=[],s=[],r=[];for(const a of t){const e=i(a,n);e<0?o.push(a):e>0?s.push(a):r.push(a)}return e!!e))}function m(e){let t=0;for(let i=0;i0}function _(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e;const i=new Set;return e.filter((e=>{const n=t(e);return!i.has(n)&&(i.add(n),!0)}))}function v(e,t){return e.length>0?e[0]:t}function b(e,t){let i="number"===typeof t?e:0;"number"===typeof t?i=e:(i=0,t=e);const n=[];if(i<=t)for(let o=i;ot;o--)n.push(o);return n}function C(e,t,i){const n=e.slice(0,t),o=e.slice(t);return n.concat(i,o)}function w(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.unshift(t))}function y(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.push(t))}function S(e,t){for(const i of t)e.push(i)}function L(e){return Array.isArray(e)?e:[e]}function k(e,t,i,n){const o=D(e,t);let s=e.splice(o,i);return void 0===s&&(s=[]),function(e,t,i){const n=D(e,t),o=e.length,s=i.length;e.length=o+s;for(let r=o-1;r>=n;r--)e[r+s]=e[r];for(let r=0;rt(e(i),e(n))}function E(){for(var e=arguments.length,t=new Array(e),i=0;i{for(const n of t){const t=n(e,i);if(!N.isNeitherLessOrGreaterThan(t))return t}return N.neitherLessOrGreaterThan}}i.d(t,{BV:()=>M,EB:()=>_,Gb:()=>n,H9:()=>A,HW:()=>l,JH:()=>o,KO:()=>u,LS:()=>r,Of:()=>p,Rs:()=>m,W$:()=>R,XY:()=>f,Xh:()=>v,Zv:()=>C,_2:()=>L,_i:()=>O,al:()=>y,db:()=>k,fS:()=>s,f_:()=>E,fv:()=>I,kX:()=>g,mw:()=>d,nW:()=>T,ry:()=>a,tT:()=>x,vA:()=>S,vM:()=>h,w6:()=>b,zI:()=>w,zy:()=>c}),function(e){e.isLessThan=function(e){return e<0},e.isLessThanOrEqual=function(e){return e<=0},e.isGreaterThan=function(e){return e>0},e.isNeitherLessOrGreaterThan=function(e){return 0===e},e.greaterThan=1,e.lessThan=-1,e.neitherLessOrGreaterThan=0}(N||(N={}));const I=(e,t)=>e-t,T=(e,t)=>I(e?1:0,t?1:0);function M(e){return(t,i)=>-e(t,i)}class A{constructor(e){this.items=e,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(e){let t=this.firstIdx;for(;t=0&&e(this.items[t]);)t--;const i=t===this.lastIdx?null:this.items.slice(t+1,this.lastIdx+1);return this.lastIdx=t,i}peek(){if(0!==this.length)return this.items[this.firstIdx]}dequeue(){const e=this.items[this.firstIdx];return this.firstIdx++,e}takeCount(e){const t=this.items.slice(this.firstIdx,this.firstIdx+e);return this.firstIdx+=e,t}}class R{constructor(e){this.iterate=e}toArray(){const e=[];return this.iterate((t=>(e.push(t),!0))),e}filter(e){return new R((t=>this.iterate((i=>!e(i)||t(i)))))}map(e){return new R((t=>this.iterate((i=>t(e(i))))))}findLast(e){let t;return this.iterate((i=>(e(i)&&(t=i),!0))),t}findLastMaxBy(e){let t,i=!0;return this.iterate((n=>((i||N.isGreaterThan(e(n,t)))&&(i=!1,t=n),!0))),t}}R.empty=new R((e=>{}));class O{constructor(e){this._indexMap=e}static createSortPermutation(e,t){const i=Array.from(e.keys()).sort(((i,n)=>t(e[i],e[n])));return new O(i)}apply(e){return e.map(((t,i)=>e[this._indexMap[i]]))}inverse(){const e=this._indexMap.slice();for(let t=0;t{function n(e,t,i){const n=function(e,t){for(let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length-1;i>=0;i--){if(t(e[i]))return i}return-1}(e,t);if(-1!==n)return e[n]}function o(e,t){const i=s(e,t);return-1===i?void 0:e[i]}function s(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length;for(;i2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length;for(;ig,J_:()=>a,Jw:()=>s,Ph:()=>c,b1:()=>l,cn:()=>r,dF:()=>n,dI:()=>h,jV:()=>d,tQ:()=>u,ti:()=>o});class l{constructor(e){this._array=e,this._findLastMonotonousLastIdx=0}findLastMonotonous(e){if(l.assertInvariants){if(this._prevFindLastPredicate)for(const t of this._array)if(this._prevFindLastPredicate(t)&&!e(t))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.");this._prevFindLastPredicate=e}const t=s(this._array,e,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=t+1,-1===t?void 0:this._array[t]}}function h(e,t){if(0===e.length)return;let i=e[0];for(let n=1;n0&&(i=o)}return i}function d(e,t){if(0===e.length)return;let i=e[0];for(let n=1;n=0&&(i=o)}return i}function c(e,t){return h(e,((e,i)=>-t(e,i)))}function u(e,t){if(0===e.length)return-1;let i=0;for(let n=1;n0&&(i=n)}return i}function g(e,t){for(const i of e){const e=t(i);if(void 0!==e)return e}}l.assertInvariants=!1},39880:(e,t,i)=>{i.d(t,{DM:()=>l,eZ:()=>a,ok:()=>o,vE:()=>s,wN:()=>r});var n=i(85108);function o(e,t){if(!e)throw new Error(t?"Assertion failed (".concat(t,")"):"Assertion Failed")}function s(e){throw new Error(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Unreachable")}function r(e){e||(0,n.dL)(new n.he("Soft Assertion Failed"))}function a(e){e()||(e(),(0,n.dL)(new n.he("Assertion Failed")))}function l(e,t){let i=0;for(;i{i.d(t,{Aq:()=>N,CR:()=>k,J8:()=>h,PG:()=>d,Ps:()=>_,R5:()=>L,Vg:()=>p,Vs:()=>f,_F:()=>v,eP:()=>c,hF:()=>S,jT:()=>D,jg:()=>w,pY:()=>C,rH:()=>m,vp:()=>g,y5:()=>y,zS:()=>E,zh:()=>b});var n=i(16113),o=i(85108),s=i(24219),r=i(89599),a=i(21511),l=i(59786);function h(e){return!!e&&"function"===typeof e.then}function d(e){const t=new n.A,i=e(t.token),s=new Promise(((e,n)=>{const s=t.token.onCancellationRequested((()=>{s.dispose(),n(new o.FU)}));Promise.resolve(i).then((i=>{s.dispose(),t.dispose(),e(i)}),(e=>{s.dispose(),t.dispose(),n(e)}))}));return new class{cancel(){t.cancel(),t.dispose()}then(e,t){return s.then(e,t)}catch(e){return this.then(void 0,e)}finally(e){return s.finally(e)}}}function c(e,t,i){return new Promise(((n,o)=>{const s=t.onCancellationRequested((()=>{s.dispose(),n(i)}));e.then(n,o).finally((()=>s.dispose()))}))}class u{constructor(){this.isDisposed=!1,this.activePromise=null,this.queuedPromise=null,this.queuedPromiseFactory=null}queue(e){if(this.isDisposed)return Promise.reject(new Error("Throttler is disposed"));if(this.activePromise){if(this.queuedPromiseFactory=e,!this.queuedPromise){const e=()=>{if(this.queuedPromise=null,this.isDisposed)return;const e=this.queue(this.queuedPromiseFactory);return this.queuedPromiseFactory=null,e};this.queuedPromise=new Promise((t=>{this.activePromise.then(e,e).then(t)}))}return new Promise(((e,t)=>{this.queuedPromise.then(e,t)}))}return this.activePromise=e(),new Promise(((e,t)=>{this.activePromise.then((t=>{this.activePromise=null,e(t)}),(e=>{this.activePromise=null,t(e)}))}))}dispose(){this.isDisposed=!0}}class g{constructor(e){this.defaultDelay=e,this.deferred=null,this.completionPromise=null,this.doResolve=null,this.doReject=null,this.task=null}trigger(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.defaultDelay;this.task=e,this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise(((e,t)=>{this.doResolve=e,this.doReject=t})).then((()=>{if(this.completionPromise=null,this.doResolve=null,this.task){const e=this.task;return this.task=null,e()}})));const i=()=>{var e;this.deferred=null,null===(e=this.doResolve)||void 0===e||e.call(this,null)};return this.deferred=t===l.n?(e=>{let t=!0;return queueMicrotask((()=>{t&&(t=!1,e())})),{isTriggered:()=>t,dispose:()=>{t=!1}}})(i):((e,t)=>{let i=!0;const n=setTimeout((()=>{i=!1,t()}),e);return{isTriggered:()=>i,dispose:()=>{clearTimeout(n),i=!1}}})(t,i),this.completionPromise}isTriggered(){var e;return!!(null===(e=this.deferred)||void 0===e?void 0:e.isTriggered())}cancel(){var e;this.cancelTimeout(),this.completionPromise&&(null===(e=this.doReject)||void 0===e||e.call(this,new o.FU),this.completionPromise=null)}cancelTimeout(){var e;null===(e=this.deferred)||void 0===e||e.dispose(),this.deferred=null}dispose(){this.cancel()}}class m{constructor(e){this.delayer=new g(e),this.throttler=new u}trigger(e,t){return this.delayer.trigger((()=>this.throttler.queue(e)),t)}cancel(){this.delayer.cancel()}dispose(){this.delayer.dispose(),this.throttler.dispose()}}function f(e,t){return t?new Promise(((i,n)=>{const s=setTimeout((()=>{r.dispose(),i()}),e),r=t.onCancellationRequested((()=>{clearTimeout(s),r.dispose(),n(new o.FU)}))})):d((t=>f(e,t)))}function p(e){let t=arguments.length>2?arguments[2]:void 0;const i=setTimeout((()=>{e(),t&&n.dispose()}),arguments.length>1&&void 0!==arguments[1]?arguments[1]:0),n=(0,r.OF)((()=>{clearTimeout(i),null===t||void 0===t||t.deleteAndLeak(n)}));return null===t||void 0===t||t.add(n),n}function _(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>!!e,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=0;const o=e.length,s=()=>{if(n>=o)return Promise.resolve(i);const r=e[n++];return Promise.resolve(r()).then((e=>t(e)?Promise.resolve(e):s()))};return s()}class v{constructor(e,t){this._token=-1,"function"===typeof e&&"number"===typeof t&&this.setIfNotSet(e,t)}dispose(){this.cancel()}cancel(){-1!==this._token&&(clearTimeout(this._token),this._token=-1)}cancelAndSet(e,t){this.cancel(),this._token=setTimeout((()=>{this._token=-1,e()}),t)}setIfNotSet(e,t){-1===this._token&&(this._token=setTimeout((()=>{this._token=-1,e()}),t))}}class b{constructor(){this.disposable=void 0}cancel(){var e;null===(e=this.disposable)||void 0===e||e.dispose(),this.disposable=void 0}cancelAndSet(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:globalThis;this.cancel();const n=i.setInterval((()=>{e()}),t);this.disposable=(0,r.OF)((()=>{i.clearInterval(n),this.disposable=void 0}))}dispose(){this.cancel()}}class C{constructor(e,t){this.timeoutToken=-1,this.runner=e,this.timeout=t,this.timeoutHandler=this.onTimeout.bind(this)}dispose(){this.cancel(),this.runner=null}cancel(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=-1)}schedule(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.timeout;this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,e)}get delay(){return this.timeout}set delay(e){this.timeout=e}isScheduled(){return-1!==this.timeoutToken}onTimeout(){this.timeoutToken=-1,this.runner&&this.doRun()}doRun(){var e;null===(e=this.runner)||void 0===e||e.call(this)}}let w,y;y="function"!==typeof globalThis.requestIdleCallback||"function"!==typeof globalThis.cancelIdleCallback?(e,t)=>{(0,a.fn)((()=>{if(i)return;const e=Date.now()+15,n={didTimeout:!0,timeRemaining:()=>Math.max(0,e-Date.now())};t(Object.freeze(n))}));let i=!1;return{dispose(){i||(i=!0)}}}:(e,t,i)=>{const n=e.requestIdleCallback(t,"number"===typeof i?{timeout:i}:void 0);let o=!1;return{dispose(){o||(o=!0,e.cancelIdleCallback(n))}}},w=e=>y(globalThis,e);class S{constructor(e,t){this._didRun=!1,this._executor=()=>{try{this._value=t()}catch(e){this._error=e}finally{this._didRun=!0}},this._handle=y(e,(()=>this._executor()))}dispose(){this._handle.dispose()}get value(){if(this._didRun||(this._handle.dispose(),this._executor()),this._error)throw this._error;return this._value}get isInitialized(){return this._didRun}}class L extends S{constructor(e){super(globalThis,e)}}class k{get isRejected(){var e;return 1===(null===(e=this.outcome)||void 0===e?void 0:e.outcome)}get isSettled(){return!!this.outcome}constructor(){this.p=new Promise(((e,t)=>{this.completeCallback=e,this.errorCallback=t}))}complete(e){return new Promise((t=>{this.completeCallback(e),this.outcome={outcome:0,value:e},t()}))}error(e){return new Promise((t=>{this.errorCallback(e),this.outcome={outcome:1,value:e},t()}))}cancel(){return this.error(new o.FU)}}var D;!function(e){e.settled=async function(e){let t;const i=await Promise.all(e.map((e=>e.then((e=>e),(e=>{t||(t=e)})))));if("undefined"!==typeof t)throw t;return i},e.withAsyncBody=function(e){return new Promise((async(t,i)=>{try{await e(t,i)}catch(n){i(n)}}))}}(D||(D={}));class N{static fromArray(e){return new N((t=>{t.emitMany(e)}))}static fromPromise(e){return new N((async t=>{t.emitMany(await e)}))}static fromPromises(e){return new N((async t=>{await Promise.all(e.map((async e=>t.emitOne(await e))))}))}static merge(e){return new N((async t=>{await Promise.all(e.map((async e=>{for await(const i of e)t.emitOne(i)})))}))}constructor(e){this._state=0,this._results=[],this._error=null,this._onStateChanged=new s.Q5,queueMicrotask((async()=>{const t={emitOne:e=>this.emitOne(e),emitMany:e=>this.emitMany(e),reject:e=>this.reject(e)};try{await Promise.resolve(e(t)),this.resolve()}catch(i){this.reject(i)}finally{t.emitOne=void 0,t.emitMany=void 0,t.reject=void 0}}))}[Symbol.asyncIterator](){let e=0;return{next:async()=>{for(;;){if(2===this._state)throw this._error;if(e{for await(const n of e)i.emitOne(t(n))}))}map(e){return N.map(this,e)}static filter(e,t){return new N((async i=>{for await(const n of e)t(n)&&i.emitOne(n)}))}filter(e){return N.filter(this,e)}static coalesce(e){return N.filter(e,(e=>!!e))}coalesce(){return N.coalesce(this)}static async toPromise(e){const t=[];for await(const i of e)t.push(i);return t}toPromise(){return N.toPromise(this)}emitOne(e){0===this._state&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){0===this._state&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){0===this._state&&(this._state=1,this._onStateChanged.fire())}reject(e){0===this._state&&(this._state=2,this._error=e,this._onStateChanged.fire())}}N.EMPTY=N.fromArray([]);class x extends N{constructor(e,t){super(t),this._source=e}cancel(){this._source.cancel()}}function E(e){const t=new n.A,i=e(t.token);return new x(t,(async e=>{const n=t.token.onCancellationRequested((()=>{n.dispose(),t.dispose(),e.reject(new o.FU)}));try{for await(const n of i){if(t.token.isCancellationRequested)return;e.emitOne(n)}n.dispose(),t.dispose()}catch(s){n.dispose(),t.dispose(),e.reject(s)}}))}},12966:(e,t,i)=>{i.d(t,{Ag:()=>h,Cg:()=>u,KN:()=>r,Q$:()=>c,T4:()=>d,mP:()=>a,oq:()=>l});var n=i(73187);const o="undefined"!==typeof Buffer;new n.o((()=>new Uint8Array(256)));let s;class r{static wrap(e){return o&&!Buffer.isBuffer(e)&&(e=Buffer.from(e.buffer,e.byteOffset,e.byteLength)),new r(e)}constructor(e){this.buffer=e,this.byteLength=this.buffer.byteLength}toString(){return o?this.buffer.toString():(s||(s=new TextDecoder),s.decode(this.buffer))}}function a(e,t){return e[t+0]<<0>>>0|e[t+1]<<8>>>0}function l(e,t,i){e[i+0]=255&t,t>>>=8,e[i+1]=255&t}function h(e,t){return e[t]*2**24+65536*e[t+1]+256*e[t+2]+e[t+3]}function d(e,t,i){e[i+3]=t,t>>>=8,e[i+2]=t,t>>>=8,e[i+1]=t,t>>>=8,e[i]=t}function c(e,t){return e[t]}function u(e,t,i){e[i]=t}},31372:(e,t,i)=>{i.d(t,{b:()=>o,t:()=>n});class n{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:JSON.stringify;this.fn=e,this._computeKey=t,this.lastCache=void 0,this.lastArgKey=void 0}get(e){const t=this._computeKey(e);return this.lastArgKey!==t&&(this.lastArgKey=t,this.lastCache=this.fn(e)),this.lastCache}}class o{get cachedValues(){return this._map}constructor(e){this.fn=e,this._map=new Map}get(e){if(this._map.has(e))return this._map.get(e);const t=this.fn(e);return this._map.set(e,t),t}}},16113:(e,t,i)=>{i.d(t,{A:()=>a,T:()=>s});var n=i(24219);const o=Object.freeze((function(e,t){const i=setTimeout(e.bind(t),0);return{dispose(){clearTimeout(i)}}}));var s;!function(e){e.isCancellationToken=function(t){return t===e.None||t===e.Cancelled||(t instanceof r||!(!t||"object"!==typeof t)&&("boolean"===typeof t.isCancellationRequested&&"function"===typeof t.onCancellationRequested))},e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:n.ju.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:o})}(s||(s={}));class r{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?o:(this._emitter||(this._emitter=new n.Q5),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class a{constructor(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new r),this._token}cancel(){this._token?this._token instanceof r&&this._token.cancel():this._token=s.Cancelled}dispose(){var e;arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&this.cancel(),null===(e=this._parentListener)||void 0===e||e.dispose(),this._token?this._token instanceof r&&this._token.dispose():this._token=s.None}}},62974:(e,t,i)=>{i.d(t,{l:()=>o});var n=i(68406);const o={...{add:(0,n.z)("add",6e4),plus:(0,n.z)("plus",6e4),gistNew:(0,n.z)("gist-new",6e4),repoCreate:(0,n.z)("repo-create",6e4),lightbulb:(0,n.z)("lightbulb",60001),lightBulb:(0,n.z)("light-bulb",60001),repo:(0,n.z)("repo",60002),repoDelete:(0,n.z)("repo-delete",60002),gistFork:(0,n.z)("gist-fork",60003),repoForked:(0,n.z)("repo-forked",60003),gitPullRequest:(0,n.z)("git-pull-request",60004),gitPullRequestAbandoned:(0,n.z)("git-pull-request-abandoned",60004),recordKeys:(0,n.z)("record-keys",60005),keyboard:(0,n.z)("keyboard",60005),tag:(0,n.z)("tag",60006),gitPullRequestLabel:(0,n.z)("git-pull-request-label",60006),tagAdd:(0,n.z)("tag-add",60006),tagRemove:(0,n.z)("tag-remove",60006),person:(0,n.z)("person",60007),personFollow:(0,n.z)("person-follow",60007),personOutline:(0,n.z)("person-outline",60007),personFilled:(0,n.z)("person-filled",60007),gitBranch:(0,n.z)("git-branch",60008),gitBranchCreate:(0,n.z)("git-branch-create",60008),gitBranchDelete:(0,n.z)("git-branch-delete",60008),sourceControl:(0,n.z)("source-control",60008),mirror:(0,n.z)("mirror",60009),mirrorPublic:(0,n.z)("mirror-public",60009),star:(0,n.z)("star",60010),starAdd:(0,n.z)("star-add",60010),starDelete:(0,n.z)("star-delete",60010),starEmpty:(0,n.z)("star-empty",60010),comment:(0,n.z)("comment",60011),commentAdd:(0,n.z)("comment-add",60011),alert:(0,n.z)("alert",60012),warning:(0,n.z)("warning",60012),search:(0,n.z)("search",60013),searchSave:(0,n.z)("search-save",60013),logOut:(0,n.z)("log-out",60014),signOut:(0,n.z)("sign-out",60014),logIn:(0,n.z)("log-in",60015),signIn:(0,n.z)("sign-in",60015),eye:(0,n.z)("eye",60016),eyeUnwatch:(0,n.z)("eye-unwatch",60016),eyeWatch:(0,n.z)("eye-watch",60016),circleFilled:(0,n.z)("circle-filled",60017),primitiveDot:(0,n.z)("primitive-dot",60017),closeDirty:(0,n.z)("close-dirty",60017),debugBreakpoint:(0,n.z)("debug-breakpoint",60017),debugBreakpointDisabled:(0,n.z)("debug-breakpoint-disabled",60017),debugHint:(0,n.z)("debug-hint",60017),terminalDecorationSuccess:(0,n.z)("terminal-decoration-success",60017),primitiveSquare:(0,n.z)("primitive-square",60018),edit:(0,n.z)("edit",60019),pencil:(0,n.z)("pencil",60019),info:(0,n.z)("info",60020),issueOpened:(0,n.z)("issue-opened",60020),gistPrivate:(0,n.z)("gist-private",60021),gitForkPrivate:(0,n.z)("git-fork-private",60021),lock:(0,n.z)("lock",60021),mirrorPrivate:(0,n.z)("mirror-private",60021),close:(0,n.z)("close",60022),removeClose:(0,n.z)("remove-close",60022),x:(0,n.z)("x",60022),repoSync:(0,n.z)("repo-sync",60023),sync:(0,n.z)("sync",60023),clone:(0,n.z)("clone",60024),desktopDownload:(0,n.z)("desktop-download",60024),beaker:(0,n.z)("beaker",60025),microscope:(0,n.z)("microscope",60025),vm:(0,n.z)("vm",60026),deviceDesktop:(0,n.z)("device-desktop",60026),file:(0,n.z)("file",60027),fileText:(0,n.z)("file-text",60027),more:(0,n.z)("more",60028),ellipsis:(0,n.z)("ellipsis",60028),kebabHorizontal:(0,n.z)("kebab-horizontal",60028),mailReply:(0,n.z)("mail-reply",60029),reply:(0,n.z)("reply",60029),organization:(0,n.z)("organization",60030),organizationFilled:(0,n.z)("organization-filled",60030),organizationOutline:(0,n.z)("organization-outline",60030),newFile:(0,n.z)("new-file",60031),fileAdd:(0,n.z)("file-add",60031),newFolder:(0,n.z)("new-folder",60032),fileDirectoryCreate:(0,n.z)("file-directory-create",60032),trash:(0,n.z)("trash",60033),trashcan:(0,n.z)("trashcan",60033),history:(0,n.z)("history",60034),clock:(0,n.z)("clock",60034),folder:(0,n.z)("folder",60035),fileDirectory:(0,n.z)("file-directory",60035),symbolFolder:(0,n.z)("symbol-folder",60035),logoGithub:(0,n.z)("logo-github",60036),markGithub:(0,n.z)("mark-github",60036),github:(0,n.z)("github",60036),terminal:(0,n.z)("terminal",60037),console:(0,n.z)("console",60037),repl:(0,n.z)("repl",60037),zap:(0,n.z)("zap",60038),symbolEvent:(0,n.z)("symbol-event",60038),error:(0,n.z)("error",60039),stop:(0,n.z)("stop",60039),variable:(0,n.z)("variable",60040),symbolVariable:(0,n.z)("symbol-variable",60040),array:(0,n.z)("array",60042),symbolArray:(0,n.z)("symbol-array",60042),symbolModule:(0,n.z)("symbol-module",60043),symbolPackage:(0,n.z)("symbol-package",60043),symbolNamespace:(0,n.z)("symbol-namespace",60043),symbolObject:(0,n.z)("symbol-object",60043),symbolMethod:(0,n.z)("symbol-method",60044),symbolFunction:(0,n.z)("symbol-function",60044),symbolConstructor:(0,n.z)("symbol-constructor",60044),symbolBoolean:(0,n.z)("symbol-boolean",60047),symbolNull:(0,n.z)("symbol-null",60047),symbolNumeric:(0,n.z)("symbol-numeric",60048),symbolNumber:(0,n.z)("symbol-number",60048),symbolStructure:(0,n.z)("symbol-structure",60049),symbolStruct:(0,n.z)("symbol-struct",60049),symbolParameter:(0,n.z)("symbol-parameter",60050),symbolTypeParameter:(0,n.z)("symbol-type-parameter",60050),symbolKey:(0,n.z)("symbol-key",60051),symbolText:(0,n.z)("symbol-text",60051),symbolReference:(0,n.z)("symbol-reference",60052),goToFile:(0,n.z)("go-to-file",60052),symbolEnum:(0,n.z)("symbol-enum",60053),symbolValue:(0,n.z)("symbol-value",60053),symbolRuler:(0,n.z)("symbol-ruler",60054),symbolUnit:(0,n.z)("symbol-unit",60054),activateBreakpoints:(0,n.z)("activate-breakpoints",60055),archive:(0,n.z)("archive",60056),arrowBoth:(0,n.z)("arrow-both",60057),arrowDown:(0,n.z)("arrow-down",60058),arrowLeft:(0,n.z)("arrow-left",60059),arrowRight:(0,n.z)("arrow-right",60060),arrowSmallDown:(0,n.z)("arrow-small-down",60061),arrowSmallLeft:(0,n.z)("arrow-small-left",60062),arrowSmallRight:(0,n.z)("arrow-small-right",60063),arrowSmallUp:(0,n.z)("arrow-small-up",60064),arrowUp:(0,n.z)("arrow-up",60065),bell:(0,n.z)("bell",60066),bold:(0,n.z)("bold",60067),book:(0,n.z)("book",60068),bookmark:(0,n.z)("bookmark",60069),debugBreakpointConditionalUnverified:(0,n.z)("debug-breakpoint-conditional-unverified",60070),debugBreakpointConditional:(0,n.z)("debug-breakpoint-conditional",60071),debugBreakpointConditionalDisabled:(0,n.z)("debug-breakpoint-conditional-disabled",60071),debugBreakpointDataUnverified:(0,n.z)("debug-breakpoint-data-unverified",60072),debugBreakpointData:(0,n.z)("debug-breakpoint-data",60073),debugBreakpointDataDisabled:(0,n.z)("debug-breakpoint-data-disabled",60073),debugBreakpointLogUnverified:(0,n.z)("debug-breakpoint-log-unverified",60074),debugBreakpointLog:(0,n.z)("debug-breakpoint-log",60075),debugBreakpointLogDisabled:(0,n.z)("debug-breakpoint-log-disabled",60075),briefcase:(0,n.z)("briefcase",60076),broadcast:(0,n.z)("broadcast",60077),browser:(0,n.z)("browser",60078),bug:(0,n.z)("bug",60079),calendar:(0,n.z)("calendar",60080),caseSensitive:(0,n.z)("case-sensitive",60081),check:(0,n.z)("check",60082),checklist:(0,n.z)("checklist",60083),chevronDown:(0,n.z)("chevron-down",60084),chevronLeft:(0,n.z)("chevron-left",60085),chevronRight:(0,n.z)("chevron-right",60086),chevronUp:(0,n.z)("chevron-up",60087),chromeClose:(0,n.z)("chrome-close",60088),chromeMaximize:(0,n.z)("chrome-maximize",60089),chromeMinimize:(0,n.z)("chrome-minimize",60090),chromeRestore:(0,n.z)("chrome-restore",60091),circleOutline:(0,n.z)("circle-outline",60092),circle:(0,n.z)("circle",60092),debugBreakpointUnverified:(0,n.z)("debug-breakpoint-unverified",60092),terminalDecorationIncomplete:(0,n.z)("terminal-decoration-incomplete",60092),circleSlash:(0,n.z)("circle-slash",60093),circuitBoard:(0,n.z)("circuit-board",60094),clearAll:(0,n.z)("clear-all",60095),clippy:(0,n.z)("clippy",60096),closeAll:(0,n.z)("close-all",60097),cloudDownload:(0,n.z)("cloud-download",60098),cloudUpload:(0,n.z)("cloud-upload",60099),code:(0,n.z)("code",60100),collapseAll:(0,n.z)("collapse-all",60101),colorMode:(0,n.z)("color-mode",60102),commentDiscussion:(0,n.z)("comment-discussion",60103),creditCard:(0,n.z)("credit-card",60105),dash:(0,n.z)("dash",60108),dashboard:(0,n.z)("dashboard",60109),database:(0,n.z)("database",60110),debugContinue:(0,n.z)("debug-continue",60111),debugDisconnect:(0,n.z)("debug-disconnect",60112),debugPause:(0,n.z)("debug-pause",60113),debugRestart:(0,n.z)("debug-restart",60114),debugStart:(0,n.z)("debug-start",60115),debugStepInto:(0,n.z)("debug-step-into",60116),debugStepOut:(0,n.z)("debug-step-out",60117),debugStepOver:(0,n.z)("debug-step-over",60118),debugStop:(0,n.z)("debug-stop",60119),debug:(0,n.z)("debug",60120),deviceCameraVideo:(0,n.z)("device-camera-video",60121),deviceCamera:(0,n.z)("device-camera",60122),deviceMobile:(0,n.z)("device-mobile",60123),diffAdded:(0,n.z)("diff-added",60124),diffIgnored:(0,n.z)("diff-ignored",60125),diffModified:(0,n.z)("diff-modified",60126),diffRemoved:(0,n.z)("diff-removed",60127),diffRenamed:(0,n.z)("diff-renamed",60128),diff:(0,n.z)("diff",60129),diffSidebyside:(0,n.z)("diff-sidebyside",60129),discard:(0,n.z)("discard",60130),editorLayout:(0,n.z)("editor-layout",60131),emptyWindow:(0,n.z)("empty-window",60132),exclude:(0,n.z)("exclude",60133),extensions:(0,n.z)("extensions",60134),eyeClosed:(0,n.z)("eye-closed",60135),fileBinary:(0,n.z)("file-binary",60136),fileCode:(0,n.z)("file-code",60137),fileMedia:(0,n.z)("file-media",60138),filePdf:(0,n.z)("file-pdf",60139),fileSubmodule:(0,n.z)("file-submodule",60140),fileSymlinkDirectory:(0,n.z)("file-symlink-directory",60141),fileSymlinkFile:(0,n.z)("file-symlink-file",60142),fileZip:(0,n.z)("file-zip",60143),files:(0,n.z)("files",60144),filter:(0,n.z)("filter",60145),flame:(0,n.z)("flame",60146),foldDown:(0,n.z)("fold-down",60147),foldUp:(0,n.z)("fold-up",60148),fold:(0,n.z)("fold",60149),folderActive:(0,n.z)("folder-active",60150),folderOpened:(0,n.z)("folder-opened",60151),gear:(0,n.z)("gear",60152),gift:(0,n.z)("gift",60153),gistSecret:(0,n.z)("gist-secret",60154),gist:(0,n.z)("gist",60155),gitCommit:(0,n.z)("git-commit",60156),gitCompare:(0,n.z)("git-compare",60157),compareChanges:(0,n.z)("compare-changes",60157),gitMerge:(0,n.z)("git-merge",60158),githubAction:(0,n.z)("github-action",60159),githubAlt:(0,n.z)("github-alt",60160),globe:(0,n.z)("globe",60161),grabber:(0,n.z)("grabber",60162),graph:(0,n.z)("graph",60163),gripper:(0,n.z)("gripper",60164),heart:(0,n.z)("heart",60165),home:(0,n.z)("home",60166),horizontalRule:(0,n.z)("horizontal-rule",60167),hubot:(0,n.z)("hubot",60168),inbox:(0,n.z)("inbox",60169),issueReopened:(0,n.z)("issue-reopened",60171),issues:(0,n.z)("issues",60172),italic:(0,n.z)("italic",60173),jersey:(0,n.z)("jersey",60174),json:(0,n.z)("json",60175),kebabVertical:(0,n.z)("kebab-vertical",60176),key:(0,n.z)("key",60177),law:(0,n.z)("law",60178),lightbulbAutofix:(0,n.z)("lightbulb-autofix",60179),linkExternal:(0,n.z)("link-external",60180),link:(0,n.z)("link",60181),listOrdered:(0,n.z)("list-ordered",60182),listUnordered:(0,n.z)("list-unordered",60183),liveShare:(0,n.z)("live-share",60184),loading:(0,n.z)("loading",60185),location:(0,n.z)("location",60186),mailRead:(0,n.z)("mail-read",60187),mail:(0,n.z)("mail",60188),markdown:(0,n.z)("markdown",60189),megaphone:(0,n.z)("megaphone",60190),mention:(0,n.z)("mention",60191),milestone:(0,n.z)("milestone",60192),gitPullRequestMilestone:(0,n.z)("git-pull-request-milestone",60192),mortarBoard:(0,n.z)("mortar-board",60193),move:(0,n.z)("move",60194),multipleWindows:(0,n.z)("multiple-windows",60195),mute:(0,n.z)("mute",60196),noNewline:(0,n.z)("no-newline",60197),note:(0,n.z)("note",60198),octoface:(0,n.z)("octoface",60199),openPreview:(0,n.z)("open-preview",60200),package:(0,n.z)("package",60201),paintcan:(0,n.z)("paintcan",60202),pin:(0,n.z)("pin",60203),play:(0,n.z)("play",60204),run:(0,n.z)("run",60204),plug:(0,n.z)("plug",60205),preserveCase:(0,n.z)("preserve-case",60206),preview:(0,n.z)("preview",60207),project:(0,n.z)("project",60208),pulse:(0,n.z)("pulse",60209),question:(0,n.z)("question",60210),quote:(0,n.z)("quote",60211),radioTower:(0,n.z)("radio-tower",60212),reactions:(0,n.z)("reactions",60213),references:(0,n.z)("references",60214),refresh:(0,n.z)("refresh",60215),regex:(0,n.z)("regex",60216),remoteExplorer:(0,n.z)("remote-explorer",60217),remote:(0,n.z)("remote",60218),remove:(0,n.z)("remove",60219),replaceAll:(0,n.z)("replace-all",60220),replace:(0,n.z)("replace",60221),repoClone:(0,n.z)("repo-clone",60222),repoForcePush:(0,n.z)("repo-force-push",60223),repoPull:(0,n.z)("repo-pull",60224),repoPush:(0,n.z)("repo-push",60225),report:(0,n.z)("report",60226),requestChanges:(0,n.z)("request-changes",60227),rocket:(0,n.z)("rocket",60228),rootFolderOpened:(0,n.z)("root-folder-opened",60229),rootFolder:(0,n.z)("root-folder",60230),rss:(0,n.z)("rss",60231),ruby:(0,n.z)("ruby",60232),saveAll:(0,n.z)("save-all",60233),saveAs:(0,n.z)("save-as",60234),save:(0,n.z)("save",60235),screenFull:(0,n.z)("screen-full",60236),screenNormal:(0,n.z)("screen-normal",60237),searchStop:(0,n.z)("search-stop",60238),server:(0,n.z)("server",60240),settingsGear:(0,n.z)("settings-gear",60241),settings:(0,n.z)("settings",60242),shield:(0,n.z)("shield",60243),smiley:(0,n.z)("smiley",60244),sortPrecedence:(0,n.z)("sort-precedence",60245),splitHorizontal:(0,n.z)("split-horizontal",60246),splitVertical:(0,n.z)("split-vertical",60247),squirrel:(0,n.z)("squirrel",60248),starFull:(0,n.z)("star-full",60249),starHalf:(0,n.z)("star-half",60250),symbolClass:(0,n.z)("symbol-class",60251),symbolColor:(0,n.z)("symbol-color",60252),symbolConstant:(0,n.z)("symbol-constant",60253),symbolEnumMember:(0,n.z)("symbol-enum-member",60254),symbolField:(0,n.z)("symbol-field",60255),symbolFile:(0,n.z)("symbol-file",60256),symbolInterface:(0,n.z)("symbol-interface",60257),symbolKeyword:(0,n.z)("symbol-keyword",60258),symbolMisc:(0,n.z)("symbol-misc",60259),symbolOperator:(0,n.z)("symbol-operator",60260),symbolProperty:(0,n.z)("symbol-property",60261),wrench:(0,n.z)("wrench",60261),wrenchSubaction:(0,n.z)("wrench-subaction",60261),symbolSnippet:(0,n.z)("symbol-snippet",60262),tasklist:(0,n.z)("tasklist",60263),telescope:(0,n.z)("telescope",60264),textSize:(0,n.z)("text-size",60265),threeBars:(0,n.z)("three-bars",60266),thumbsdown:(0,n.z)("thumbsdown",60267),thumbsup:(0,n.z)("thumbsup",60268),tools:(0,n.z)("tools",60269),triangleDown:(0,n.z)("triangle-down",60270),triangleLeft:(0,n.z)("triangle-left",60271),triangleRight:(0,n.z)("triangle-right",60272),triangleUp:(0,n.z)("triangle-up",60273),twitter:(0,n.z)("twitter",60274),unfold:(0,n.z)("unfold",60275),unlock:(0,n.z)("unlock",60276),unmute:(0,n.z)("unmute",60277),unverified:(0,n.z)("unverified",60278),verified:(0,n.z)("verified",60279),versions:(0,n.z)("versions",60280),vmActive:(0,n.z)("vm-active",60281),vmOutline:(0,n.z)("vm-outline",60282),vmRunning:(0,n.z)("vm-running",60283),watch:(0,n.z)("watch",60284),whitespace:(0,n.z)("whitespace",60285),wholeWord:(0,n.z)("whole-word",60286),window:(0,n.z)("window",60287),wordWrap:(0,n.z)("word-wrap",60288),zoomIn:(0,n.z)("zoom-in",60289),zoomOut:(0,n.z)("zoom-out",60290),listFilter:(0,n.z)("list-filter",60291),listFlat:(0,n.z)("list-flat",60292),listSelection:(0,n.z)("list-selection",60293),selection:(0,n.z)("selection",60293),listTree:(0,n.z)("list-tree",60294),debugBreakpointFunctionUnverified:(0,n.z)("debug-breakpoint-function-unverified",60295),debugBreakpointFunction:(0,n.z)("debug-breakpoint-function",60296),debugBreakpointFunctionDisabled:(0,n.z)("debug-breakpoint-function-disabled",60296),debugStackframeActive:(0,n.z)("debug-stackframe-active",60297),circleSmallFilled:(0,n.z)("circle-small-filled",60298),debugStackframeDot:(0,n.z)("debug-stackframe-dot",60298),terminalDecorationMark:(0,n.z)("terminal-decoration-mark",60298),debugStackframe:(0,n.z)("debug-stackframe",60299),debugStackframeFocused:(0,n.z)("debug-stackframe-focused",60299),debugBreakpointUnsupported:(0,n.z)("debug-breakpoint-unsupported",60300),symbolString:(0,n.z)("symbol-string",60301),debugReverseContinue:(0,n.z)("debug-reverse-continue",60302),debugStepBack:(0,n.z)("debug-step-back",60303),debugRestartFrame:(0,n.z)("debug-restart-frame",60304),debugAlt:(0,n.z)("debug-alt",60305),callIncoming:(0,n.z)("call-incoming",60306),callOutgoing:(0,n.z)("call-outgoing",60307),menu:(0,n.z)("menu",60308),expandAll:(0,n.z)("expand-all",60309),feedback:(0,n.z)("feedback",60310),gitPullRequestReviewer:(0,n.z)("git-pull-request-reviewer",60310),groupByRefType:(0,n.z)("group-by-ref-type",60311),ungroupByRefType:(0,n.z)("ungroup-by-ref-type",60312),account:(0,n.z)("account",60313),gitPullRequestAssignee:(0,n.z)("git-pull-request-assignee",60313),bellDot:(0,n.z)("bell-dot",60314),debugConsole:(0,n.z)("debug-console",60315),library:(0,n.z)("library",60316),output:(0,n.z)("output",60317),runAll:(0,n.z)("run-all",60318),syncIgnored:(0,n.z)("sync-ignored",60319),pinned:(0,n.z)("pinned",60320),githubInverted:(0,n.z)("github-inverted",60321),serverProcess:(0,n.z)("server-process",60322),serverEnvironment:(0,n.z)("server-environment",60323),pass:(0,n.z)("pass",60324),issueClosed:(0,n.z)("issue-closed",60324),stopCircle:(0,n.z)("stop-circle",60325),playCircle:(0,n.z)("play-circle",60326),record:(0,n.z)("record",60327),debugAltSmall:(0,n.z)("debug-alt-small",60328),vmConnect:(0,n.z)("vm-connect",60329),cloud:(0,n.z)("cloud",60330),merge:(0,n.z)("merge",60331),export:(0,n.z)("export",60332),graphLeft:(0,n.z)("graph-left",60333),magnet:(0,n.z)("magnet",60334),notebook:(0,n.z)("notebook",60335),redo:(0,n.z)("redo",60336),checkAll:(0,n.z)("check-all",60337),pinnedDirty:(0,n.z)("pinned-dirty",60338),passFilled:(0,n.z)("pass-filled",60339),circleLargeFilled:(0,n.z)("circle-large-filled",60340),circleLarge:(0,n.z)("circle-large",60341),circleLargeOutline:(0,n.z)("circle-large-outline",60341),combine:(0,n.z)("combine",60342),gather:(0,n.z)("gather",60342),table:(0,n.z)("table",60343),variableGroup:(0,n.z)("variable-group",60344),typeHierarchy:(0,n.z)("type-hierarchy",60345),typeHierarchySub:(0,n.z)("type-hierarchy-sub",60346),typeHierarchySuper:(0,n.z)("type-hierarchy-super",60347),gitPullRequestCreate:(0,n.z)("git-pull-request-create",60348),runAbove:(0,n.z)("run-above",60349),runBelow:(0,n.z)("run-below",60350),notebookTemplate:(0,n.z)("notebook-template",60351),debugRerun:(0,n.z)("debug-rerun",60352),workspaceTrusted:(0,n.z)("workspace-trusted",60353),workspaceUntrusted:(0,n.z)("workspace-untrusted",60354),workspaceUnknown:(0,n.z)("workspace-unknown",60355),terminalCmd:(0,n.z)("terminal-cmd",60356),terminalDebian:(0,n.z)("terminal-debian",60357),terminalLinux:(0,n.z)("terminal-linux",60358),terminalPowershell:(0,n.z)("terminal-powershell",60359),terminalTmux:(0,n.z)("terminal-tmux",60360),terminalUbuntu:(0,n.z)("terminal-ubuntu",60361),terminalBash:(0,n.z)("terminal-bash",60362),arrowSwap:(0,n.z)("arrow-swap",60363),copy:(0,n.z)("copy",60364),personAdd:(0,n.z)("person-add",60365),filterFilled:(0,n.z)("filter-filled",60366),wand:(0,n.z)("wand",60367),debugLineByLine:(0,n.z)("debug-line-by-line",60368),inspect:(0,n.z)("inspect",60369),layers:(0,n.z)("layers",60370),layersDot:(0,n.z)("layers-dot",60371),layersActive:(0,n.z)("layers-active",60372),compass:(0,n.z)("compass",60373),compassDot:(0,n.z)("compass-dot",60374),compassActive:(0,n.z)("compass-active",60375),azure:(0,n.z)("azure",60376),issueDraft:(0,n.z)("issue-draft",60377),gitPullRequestClosed:(0,n.z)("git-pull-request-closed",60378),gitPullRequestDraft:(0,n.z)("git-pull-request-draft",60379),debugAll:(0,n.z)("debug-all",60380),debugCoverage:(0,n.z)("debug-coverage",60381),runErrors:(0,n.z)("run-errors",60382),folderLibrary:(0,n.z)("folder-library",60383),debugContinueSmall:(0,n.z)("debug-continue-small",60384),beakerStop:(0,n.z)("beaker-stop",60385),graphLine:(0,n.z)("graph-line",60386),graphScatter:(0,n.z)("graph-scatter",60387),pieChart:(0,n.z)("pie-chart",60388),bracket:(0,n.z)("bracket",60175),bracketDot:(0,n.z)("bracket-dot",60389),bracketError:(0,n.z)("bracket-error",60390),lockSmall:(0,n.z)("lock-small",60391),azureDevops:(0,n.z)("azure-devops",60392),verifiedFilled:(0,n.z)("verified-filled",60393),newline:(0,n.z)("newline",60394),layout:(0,n.z)("layout",60395),layoutActivitybarLeft:(0,n.z)("layout-activitybar-left",60396),layoutActivitybarRight:(0,n.z)("layout-activitybar-right",60397),layoutPanelLeft:(0,n.z)("layout-panel-left",60398),layoutPanelCenter:(0,n.z)("layout-panel-center",60399),layoutPanelJustify:(0,n.z)("layout-panel-justify",60400),layoutPanelRight:(0,n.z)("layout-panel-right",60401),layoutPanel:(0,n.z)("layout-panel",60402),layoutSidebarLeft:(0,n.z)("layout-sidebar-left",60403),layoutSidebarRight:(0,n.z)("layout-sidebar-right",60404),layoutStatusbar:(0,n.z)("layout-statusbar",60405),layoutMenubar:(0,n.z)("layout-menubar",60406),layoutCentered:(0,n.z)("layout-centered",60407),target:(0,n.z)("target",60408),indent:(0,n.z)("indent",60409),recordSmall:(0,n.z)("record-small",60410),errorSmall:(0,n.z)("error-small",60411),terminalDecorationError:(0,n.z)("terminal-decoration-error",60411),arrowCircleDown:(0,n.z)("arrow-circle-down",60412),arrowCircleLeft:(0,n.z)("arrow-circle-left",60413),arrowCircleRight:(0,n.z)("arrow-circle-right",60414),arrowCircleUp:(0,n.z)("arrow-circle-up",60415),layoutSidebarRightOff:(0,n.z)("layout-sidebar-right-off",60416),layoutPanelOff:(0,n.z)("layout-panel-off",60417),layoutSidebarLeftOff:(0,n.z)("layout-sidebar-left-off",60418),blank:(0,n.z)("blank",60419),heartFilled:(0,n.z)("heart-filled",60420),map:(0,n.z)("map",60421),mapHorizontal:(0,n.z)("map-horizontal",60421),foldHorizontal:(0,n.z)("fold-horizontal",60421),mapFilled:(0,n.z)("map-filled",60422),mapHorizontalFilled:(0,n.z)("map-horizontal-filled",60422),foldHorizontalFilled:(0,n.z)("fold-horizontal-filled",60422),circleSmall:(0,n.z)("circle-small",60423),bellSlash:(0,n.z)("bell-slash",60424),bellSlashDot:(0,n.z)("bell-slash-dot",60425),commentUnresolved:(0,n.z)("comment-unresolved",60426),gitPullRequestGoToChanges:(0,n.z)("git-pull-request-go-to-changes",60427),gitPullRequestNewChanges:(0,n.z)("git-pull-request-new-changes",60428),searchFuzzy:(0,n.z)("search-fuzzy",60429),commentDraft:(0,n.z)("comment-draft",60430),send:(0,n.z)("send",60431),sparkle:(0,n.z)("sparkle",60432),insert:(0,n.z)("insert",60433),mic:(0,n.z)("mic",60434),thumbsdownFilled:(0,n.z)("thumbsdown-filled",60435),thumbsupFilled:(0,n.z)("thumbsup-filled",60436),coffee:(0,n.z)("coffee",60437),snake:(0,n.z)("snake",60438),game:(0,n.z)("game",60439),vr:(0,n.z)("vr",60440),chip:(0,n.z)("chip",60441),piano:(0,n.z)("piano",60442),music:(0,n.z)("music",60443),micFilled:(0,n.z)("mic-filled",60444),repoFetch:(0,n.z)("repo-fetch",60445),copilot:(0,n.z)("copilot",60446),lightbulbSparkle:(0,n.z)("lightbulb-sparkle",60447),robot:(0,n.z)("robot",60448),sparkleFilled:(0,n.z)("sparkle-filled",60449),diffSingle:(0,n.z)("diff-single",60450),diffMultiple:(0,n.z)("diff-multiple",60451),surroundWith:(0,n.z)("surround-with",60452),share:(0,n.z)("share",60453),gitStash:(0,n.z)("git-stash",60454),gitStashApply:(0,n.z)("git-stash-apply",60455),gitStashPop:(0,n.z)("git-stash-pop",60456),vscode:(0,n.z)("vscode",60457),vscodeInsiders:(0,n.z)("vscode-insiders",60458),codeOss:(0,n.z)("code-oss",60459),runCoverage:(0,n.z)("run-coverage",60460),runAllCoverage:(0,n.z)("run-all-coverage",60461),coverage:(0,n.z)("coverage",60462),githubProject:(0,n.z)("github-project",60463),mapVertical:(0,n.z)("map-vertical",60464),foldVertical:(0,n.z)("fold-vertical",60464),mapVerticalFilled:(0,n.z)("map-vertical-filled",60465),foldVerticalFilled:(0,n.z)("fold-vertical-filled",60465)},...{dialogError:(0,n.z)("dialog-error","error"),dialogWarning:(0,n.z)("dialog-warning","warning"),dialogInfo:(0,n.z)("dialog-info","info"),dialogClose:(0,n.z)("dialog-close","close"),treeItemExpanded:(0,n.z)("tree-item-expanded","chevron-down"),treeFilterOnTypeOn:(0,n.z)("tree-filter-on-type-on","list-filter"),treeFilterOnTypeOff:(0,n.z)("tree-filter-on-type-off","list-selection"),treeFilterClear:(0,n.z)("tree-filter-clear","close"),treeItemLoading:(0,n.z)("tree-item-loading","loading"),menuSelection:(0,n.z)("menu-selection","check"),menuSubmenu:(0,n.z)("menu-submenu","chevron-right"),menuBarMore:(0,n.z)("menubar-more","more"),scrollbarButtonLeft:(0,n.z)("scrollbar-button-left","triangle-left"),scrollbarButtonRight:(0,n.z)("scrollbar-button-right","triangle-right"),scrollbarButtonUp:(0,n.z)("scrollbar-button-up","triangle-up"),scrollbarButtonDown:(0,n.z)("scrollbar-button-down","triangle-down"),toolBarMore:(0,n.z)("toolbar-more","more"),quickInputBack:(0,n.z)("quick-input-back","arrow-left"),dropDownButton:(0,n.z)("drop-down-button",60084),symbolCustomColor:(0,n.z)("symbol-customcolor",60252),exportIcon:(0,n.z)("export",60332),workspaceUnspecified:(0,n.z)("workspace-unspecified",60355),newLine:(0,n.z)("newline",60394),thumbsDownFilled:(0,n.z)("thumbsdown-filled",60435),thumbsUpFilled:(0,n.z)("thumbsup-filled",60436),gitFetch:(0,n.z)("git-fetch",60445),lightbulbSparkleAutofix:(0,n.z)("lightbulb-sparkle-autofix",60447),debugBreakpointPending:(0,n.z)("debug-breakpoint-pending",60377)}}},68406:(e,t,i)=>{i.d(t,{u:()=>r,z:()=>s});var n=i(63686);const o=Object.create(null);function s(e,t){if((0,n.HD)(t)){const i=o[t];if(void 0===i)throw new Error("".concat(e," references an unknown codicon: ").concat(t));t=i}return o[e]=t,{id:e}}function r(){return o}},99927:(e,t,i)=>{function n(e,t){const i=[],n=[];for(const o of e)t.has(o)||i.push(o);for(const o of t)e.has(o)||n.push(o);return{removed:i,added:n}}function o(e,t){const i=new Set;for(const n of t)e.has(n)&&i.add(n);return i}i.d(t,{j:()=>o,q:()=>n})},89652:(e,t,i)=>{function n(e,t){const i=Math.pow(10,t);return Math.round(e*i)/i}i.d(t,{Il:()=>a,Oz:()=>s,VS:()=>o,tx:()=>r});class o{constructor(e,t,i){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;this._rgbaBrand=void 0,this.r=0|Math.min(255,Math.max(0,e)),this.g=0|Math.min(255,Math.max(0,t)),this.b=0|Math.min(255,Math.max(0,i)),this.a=n(Math.max(Math.min(1,o),0),3)}static equals(e,t){return e.r===t.r&&e.g===t.g&&e.b===t.b&&e.a===t.a}}class s{constructor(e,t,i,o){this._hslaBrand=void 0,this.h=0|Math.max(Math.min(360,e),0),this.s=n(Math.max(Math.min(1,t),0),3),this.l=n(Math.max(Math.min(1,i),0),3),this.a=n(Math.max(Math.min(1,o),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.l===t.l&&e.a===t.a}static fromRGBA(e){const t=e.r/255,i=e.g/255,n=e.b/255,o=e.a,r=Math.max(t,i,n),a=Math.min(t,i,n);let l=0,h=0;const d=(a+r)/2,c=r-a;if(c>0){switch(h=Math.min(d<=.5?c/(2*d):c/(2-2*d),1),r){case t:l=(i-n)/c+(i1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+(t-e)*(2/3-i)*6:e}static toRGBA(e){const t=e.h/360,{s:i,l:n,a:r}=e;let a,l,h;if(0===i)a=l=h=n;else{const e=n<.5?n*(1+i):n+i-n*i,o=2*n-e;a=s._hue2rgb(o,e,t+1/3),l=s._hue2rgb(o,e,t),h=s._hue2rgb(o,e,t-1/3)}return new o(Math.round(255*a),Math.round(255*l),Math.round(255*h),r)}}class r{constructor(e,t,i,o){this._hsvaBrand=void 0,this.h=0|Math.max(Math.min(360,e),0),this.s=n(Math.max(Math.min(1,t),0),3),this.v=n(Math.max(Math.min(1,i),0),3),this.a=n(Math.max(Math.min(1,o),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.v===t.v&&e.a===t.a}static fromRGBA(e){const t=e.r/255,i=e.g/255,n=e.b/255,o=Math.max(t,i,n),s=o-Math.min(t,i,n),a=0===o?0:s/o;let l;return l=0===s?0:o===t?((i-n)/s%6+6)%6:o===i?(n-t)/s+2:(t-i)/s+4,new r(Math.round(60*l),a,o,e.a)}static toRGBA(e){const{h:t,s:i,v:n,a:s}=e,r=n*i,a=r*(1-Math.abs(t/60%2-1)),l=n-r;let[h,d,c]=[0,0,0];return t<60?(h=r,d=a):t<120?(h=a,d=r):t<180?(d=r,c=a):t<240?(d=a,c=r):t<300?(h=a,c=r):t<=360&&(h=r,c=a),h=Math.round(255*(h+l)),d=Math.round(255*(d+l)),c=Math.round(255*(c+l)),new o(h,d,c,s)}}class a{static fromHex(e){return a.Format.CSS.parseHex(e)||a.red}static equals(e,t){return!e&&!t||!(!e||!t)&&e.equals(t)}get hsla(){return this._hsla?this._hsla:s.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:r.fromRGBA(this.rgba)}constructor(e){if(!e)throw new Error("Color needs a value");if(e instanceof o)this.rgba=e;else if(e instanceof s)this._hsla=e,this.rgba=s.toRGBA(e);else{if(!(e instanceof r))throw new Error("Invalid color ctor argument");this._hsva=e,this.rgba=r.toRGBA(e)}}equals(e){return!!e&&o.equals(this.rgba,e.rgba)&&s.equals(this.hsla,e.hsla)&&r.equals(this.hsva,e.hsva)}getRelativeLuminance(){return n(.2126*a._relativeLuminanceForComponent(this.rgba.r)+.7152*a._relativeLuminanceForComponent(this.rgba.g)+.0722*a._relativeLuminanceForComponent(this.rgba.b),4)}static _relativeLuminanceForComponent(e){const t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}isLighter(){return(299*this.rgba.r+587*this.rgba.g+114*this.rgba.b)/1e3>=128}isLighterThan(e){return this.getRelativeLuminance()>e.getRelativeLuminance()}isDarkerThan(e){return this.getRelativeLuminance()1&&void 0!==arguments[1]&&arguments[1]&&1===t.rgba.a?e.Format.CSS.formatHex(t):"#".concat(i(t.rgba.r)).concat(i(t.rgba.g)).concat(i(t.rgba.b)).concat(i(Math.round(255*t.rgba.a)))},t.format=function(t){return t.isOpaque()?e.Format.CSS.formatHex(t):e.Format.CSS.formatRGBA(t)},t.parseHex=function(t){const i=t.length;if(0===i)return null;if(35!==t.charCodeAt(0))return null;if(7===i){const i=16*n(t.charCodeAt(1))+n(t.charCodeAt(2)),s=16*n(t.charCodeAt(3))+n(t.charCodeAt(4)),r=16*n(t.charCodeAt(5))+n(t.charCodeAt(6));return new e(new o(i,s,r,1))}if(9===i){const i=16*n(t.charCodeAt(1))+n(t.charCodeAt(2)),s=16*n(t.charCodeAt(3))+n(t.charCodeAt(4)),r=16*n(t.charCodeAt(5))+n(t.charCodeAt(6)),a=16*n(t.charCodeAt(7))+n(t.charCodeAt(8));return new e(new o(i,s,r,a/255))}if(4===i){const i=n(t.charCodeAt(1)),s=n(t.charCodeAt(2)),r=n(t.charCodeAt(3));return new e(new o(16*i+i,16*s+s,16*r+r))}if(5===i){const i=n(t.charCodeAt(1)),s=n(t.charCodeAt(2)),r=n(t.charCodeAt(3)),a=n(t.charCodeAt(4));return new e(new o(16*i+i,16*s+s,16*r+r,(16*a+a)/255))}return null}}(i=t.CSS||(t.CSS={}))}(t=e.Format||(e.Format={}))}(a||(a={}))},30333:(e,t,i)=>{function n(e,t,i){let n=null,o=null;if("function"===typeof i.value?(n="value",o=i.value,0!==o.length&&console.warn("Memoize should only be used in functions with zero parameters")):"function"===typeof i.get&&(n="get",o=i.get),!o)throw new Error("not supported");const s="$memoize$".concat(t);i[n]=function(){if(!this.hasOwnProperty(s)){for(var e=arguments.length,t=new Array(e),i=0;in})},24323:(e,t,i)=>{i.d(t,{Hs:()=>d,a$:()=>r});class n{constructor(e,t,i,n){this.originalStart=e,this.originalLength=t,this.modifiedStart=i,this.modifiedLength=n}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}var o=i(48367);class s{constructor(e){this.source=e}getElements(){const e=this.source,t=new Int32Array(e.length);for(let i=0,n=e.length;i0||this.m_modifiedCount>0)&&this.m_changes.push(new n(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++}AddModifiedElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class d{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this.ContinueProcessingPredicate=i,this._originalSequence=e,this._modifiedSequence=t;const[n,o,s]=d._getElements(e),[r,a,l]=d._getElements(t);this._hasStrings=s&&l,this._originalStringElements=n,this._originalElementsOrHash=o,this._modifiedStringElements=r,this._modifiedElementsOrHash=a,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(e){return e.length>0&&"string"===typeof e[0]}static _getElements(e){const t=e.getElements();if(d._isStringArray(t)){const e=new Int32Array(t.length);for(let i=0,n=t.length;i=e&&o>=i&&this.ElementsAreEqual(t,o);)t--,o--;if(e>t||i>o){let s;return i<=o?(a.Assert(e===t+1,"originalStart should only be one more than originalEnd"),s=[new n(e,0,i,o-i+1)]):e<=t?(a.Assert(i===o+1,"modifiedStart should only be one more than modifiedEnd"),s=[new n(e,t-e+1,i,0)]):(a.Assert(e===t+1,"originalStart should only be one more than originalEnd"),a.Assert(i===o+1,"modifiedStart should only be one more than modifiedEnd"),s=[]),s}const r=[0],l=[0],h=this.ComputeRecursionPoint(e,t,i,o,r,l,s),d=r[0],c=l[0];if(null!==h)return h;if(!s[0]){const r=this.ComputeDiffRecursive(e,d,i,c,s);let a=[];return a=s[0]?[new n(d+1,t-(d+1)+1,c+1,o-(c+1)+1)]:this.ComputeDiffRecursive(d+1,t,c+1,o,s),this.ConcatenateChanges(r,a)}return[new n(e,t-e+1,i,o-i+1)]}WALKTRACE(e,t,i,o,s,r,a,l,d,c,u,g,m,f,p,_,v,b){let C=null,w=null,y=new h,S=t,L=i,k=m[0]-_[0]-o,D=-1073741824,N=this.m_forwardHistory.length-1;do{const t=k+e;t===S||t=0&&(e=(d=this.m_forwardHistory[N])[0],S=1,L=d.length-1)}while(--N>=-1);if(C=y.getReverseChanges(),b[0]){let e=m[0]+1,t=_[0]+1;if(null!==C&&C.length>0){const i=C[C.length-1];e=Math.max(e,i.getOriginalEnd()),t=Math.max(t,i.getModifiedEnd())}w=[new n(e,g-e+1,t,p-t+1)]}else{y=new h,S=r,L=a,k=m[0]-_[0]-l,D=1073741824,N=v?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const e=k+s;e===S||e=c[e+1]?(f=(u=c[e+1]-1)-k-l,u>D&&y.MarkNextChange(),D=u+1,y.AddOriginalElement(u+1,f+1),k=e+1-s):(f=(u=c[e-1])-k-l,u>D&&y.MarkNextChange(),D=u,y.AddModifiedElement(u+1,f+1),k=e-1-s),N>=0&&(s=(c=this.m_reverseHistory[N])[0],S=1,L=c.length-1)}while(--N>=-1);w=y.getChanges()}return this.ConcatenateChanges(C,w)}ComputeRecursionPoint(e,t,i,o,s,r,a){let h=0,d=0,c=0,u=0,g=0,m=0;e--,i--,s[0]=0,r[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const f=t-e+(o-i),p=f+1,_=new Int32Array(p),v=new Int32Array(p),b=o-i,C=t-e,w=e-i,y=t-o,S=(C-b)%2===0;_[b]=e,v[C]=t,a[0]=!1;for(let L=1;L<=f/2+1;L++){let f=0,k=0;c=this.ClipDiagonalBound(b-L,L,b,p),u=this.ClipDiagonalBound(b+L,L,b,p);for(let e=c;e<=u;e+=2){h=e===c||ef+k&&(f=h,k=d),!S&&Math.abs(e-C)<=L-1&&h>=v[e])return s[0]=h,r[0]=d,i<=v[e]&&L<=1448?this.WALKTRACE(b,c,u,w,C,g,m,y,_,v,h,t,s,d,o,r,S,a):null}const D=(f-e+(k-i)-L)/2;if(null!==this.ContinueProcessingPredicate&&!this.ContinueProcessingPredicate(f,D))return a[0]=!0,s[0]=f,r[0]=k,D>0&&L<=1448?this.WALKTRACE(b,c,u,w,C,g,m,y,_,v,h,t,s,d,o,r,S,a):(e++,i++,[new n(e,t-e+1,i,o-i+1)]);g=this.ClipDiagonalBound(C-L,L,C,p),m=this.ClipDiagonalBound(C+L,L,C,p);for(let n=g;n<=m;n+=2){h=n===g||n=v[n+1]?v[n+1]-1:v[n-1],d=h-(n-C)-y;const l=h;for(;h>e&&d>i&&this.ElementsAreEqual(h,d);)h--,d--;if(v[n]=h,S&&Math.abs(n-b)<=L&&h<=_[n])return s[0]=h,r[0]=d,l>=_[n]&&L<=1448?this.WALKTRACE(b,c,u,w,C,g,m,y,_,v,h,t,s,d,o,r,S,a):null}if(L<=1447){let e=new Int32Array(u-c+2);e[0]=b-c+1,l.Copy2(_,c,e,1,u-c+1),this.m_forwardHistory.push(e),e=new Int32Array(m-g+2),e[0]=C-g+1,l.Copy2(v,g,e,1,m-g+1),this.m_reverseHistory.push(e)}}return this.WALKTRACE(b,c,u,w,C,g,m,y,_,v,h,t,s,d,o,r,S,a)}PrettifyChanges(e){for(let t=0;t0,r=i.modifiedLength>0;for(;i.originalStart+i.originalLength=0;t--){const i=e[t];let n=0,o=0;if(t>0){const i=e[t-1];n=i.originalStart+i.originalLength,o=i.modifiedStart+i.modifiedLength}const s=i.originalLength>0,r=i.modifiedLength>0;let a=0,l=this._boundaryScore(i.originalStart,i.originalLength,i.modifiedStart,i.modifiedLength);for(let e=1;;e++){const t=i.originalStart-e,h=i.modifiedStart-e;if(tl&&(l=d,a=e)}i.originalStart-=a,i.modifiedStart-=a;const h=[null];t>0&&this.ChangesOverlap(e[t-1],e[t],h)&&(e[t-1]=h[0],e.splice(t,1),t++)}if(this._hasStrings)for(let t=1,i=e.length;t0&&t>a&&(a=t,l=d,h=e)}return a>0?[l,h]:null}_contiguousSequenceScore(e,t,i){let n=0;for(let o=0;o=this._originalElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}_OriginalRegionIsBoundary(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){const i=e+t;if(this._OriginalIsBoundary(i-1)||this._OriginalIsBoundary(i))return!0}return!1}_ModifiedIsBoundary(e){return e<=0||e>=this._modifiedElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}_ModifiedRegionIsBoundary(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){const i=e+t;if(this._ModifiedIsBoundary(i-1)||this._ModifiedIsBoundary(i))return!0}return!1}_boundaryScore(e,t,i,n){return(this._OriginalRegionIsBoundary(e,t)?1:0)+(this._ModifiedRegionIsBoundary(i,n)?1:0)}ConcatenateChanges(e,t){const i=[];if(0===e.length||0===t.length)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],i)){const n=new Array(e.length+t.length-1);return l.Copy(e,0,n,0,e.length-1),n[e.length-1]=i[0],l.Copy(t,1,n,e.length,t.length-1),n}{const i=new Array(e.length+t.length);return l.Copy(e,0,i,0,e.length),l.Copy(t,0,i,e.length,t.length),i}}ChangesOverlap(e,t,i){if(a.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),a.Assert(e.modifiedStart<=t.modifiedStart,"Left change is not less than or equal to right change"),e.originalStart+e.originalLength>=t.originalStart||e.modifiedStart+e.modifiedLength>=t.modifiedStart){const o=e.originalStart;let s=e.originalLength;const r=e.modifiedStart;let a=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(s=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(a=t.modifiedStart+t.modifiedLength-e.modifiedStart),i[0]=new n(o,s,r,a),!0}return i[0]=null,!1}ClipDiagonalBound(e,t,i,n){if(e>=0&&e{i.d(t,{B8:()=>g,Cp:()=>s,F0:()=>d,FU:()=>h,L6:()=>u,b1:()=>c,dL:()=>o,he:()=>f,n2:()=>l,ri:()=>r});const n=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout((()=>{if(e.stack){if(m.isErrorNoTelemetry(e))throw new m(e.message+"\n\n"+e.stack);throw new Error(e.message+"\n\n"+e.stack)}throw e}),0)}}emit(e){this.listeners.forEach((t=>{t(e)}))}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}};function o(e){l(e)||n.onUnexpectedError(e)}function s(e){l(e)||n.onUnexpectedExternalError(e)}function r(e){if(e instanceof Error){const{name:t,message:i}=e;return{$isError:!0,name:t,message:i,stack:e.stacktrace||e.stack,noTelemetry:m.isErrorNoTelemetry(e)}}return e}const a="Canceled";function l(e){return e instanceof h||e instanceof Error&&e.name===a&&e.message===a}class h extends Error{constructor(){super(a),this.name=this.message}}function d(){const e=new Error(a);return e.name=e.message,e}function c(e){return e?new Error("Illegal argument: ".concat(e)):new Error("Illegal argument")}function u(e){return e?new Error("Illegal state: ".concat(e)):new Error("Illegal state")}class g extends Error{constructor(e){super("NotSupported"),e&&(this.message=e)}}class m extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof m)return e;const t=new m;return t.message=e.message,t.stack=e.stack,t}static isErrorNoTelemetry(e){return"CodeExpectedError"===e.name}}class f extends Error{constructor(e){super(e||"An unexpected bug occurred."),Object.setPrototypeOf(this,f.prototype)}}},24219:(e,t,i)=>{i.d(t,{D0:()=>b,E7:()=>y,K3:()=>v,Q5:()=>f,SZ:()=>C,Sp:()=>p,ZD:()=>S,ju:()=>h,z5:()=>w});var n=i(85108),o=i(75937),s=i(89599),r=i(44713),a=i(6459);const l=!1;var h;!function(e){function t(e){if(l){const{onDidAddListener:t}=e,i=u.create();let n=0;e.onDidAddListener=()=>{2===++n&&(console.warn("snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here"),i.print()),null===t||void 0===t||t()}}}function i(e){return function(t){let i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=!1;return i=e((e=>{if(!o)return i?i.dispose():o=!0,t.call(n,e)}),null,arguments.length>2?arguments[2]:void 0),o&&i.dispose(),i}}function n(e,t,i){return r((function(i){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e((e=>i.call(n,t(e))),null,arguments.length>2?arguments[2]:void 0)}),i)}function o(e,t,i){return r((function(i){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e((e=>t(e)&&i.call(n,e)),null,arguments.length>2?arguments[2]:void 0)}),i)}function r(e,i){let n;const o={onWillAddFirstListener(){n=e(s.fire,s)},onDidRemoveLastListener(){null===n||void 0===n||n.dispose()}};i||t(o);const s=new f(o);return null===i||void 0===i||i.add(s),s.event}function a(e,i){let n,o,s,r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100,l=arguments.length>3&&void 0!==arguments[3]&&arguments[3],h=arguments.length>4&&void 0!==arguments[4]&&arguments[4],d=arguments.length>6?arguments[6]:void 0,c=0;const u={leakWarningThreshold:arguments.length>5?arguments[5]:void 0,onWillAddFirstListener(){n=e((e=>{c++,o=i(o,e),l&&!s&&(g.fire(o),o=void 0),r=()=>{const e=o;o=void 0,s=void 0,(!l||c>1)&&g.fire(e),c=0},"number"===typeof a?(clearTimeout(s),s=setTimeout(r,a)):void 0===s&&(s=0,queueMicrotask(r))}))},onWillRemoveListener(){h&&c>0&&(null===r||void 0===r||r())},onDidRemoveLastListener(){r=void 0,n.dispose()}};d||t(u);const g=new f(u);return null===d||void 0===d||d.add(g),g.event}e.None=()=>s.JT.None,e.defer=function(e,t){return a(e,(()=>{}),0,void 0,!0,void 0,t)},e.once=i,e.map=n,e.forEach=function(e,t,i){return r((function(i){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e((e=>{t(e),i.call(n,e)}),null,arguments.length>2?arguments[2]:void 0)}),i)},e.filter=o,e.signal=function(e){return e},e.any=function(){for(var e=arguments.length,t=new Array(e),i=0;i1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2?arguments[2]:void 0;return function(e,t){t instanceof Array?t.push(e):t&&t.add(e);return e}((0,s.F8)(...t.map((t=>t((t=>e.call(i,t)))))),n)}},e.reduce=function(e,t,i,o){let s=i;return n(e,(e=>(s=t(s,e),s)),o)},e.debounce=a,e.accumulate=function(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0;return e.debounce(t,((e,t)=>e?(e.push(t),e):[t]),i,void 0,!0,void 0,n)},e.latch=function(e){let t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e,t)=>e===t,n=!0;return o(e,(e=>{const o=n||!i(e,t);return n=!1,t=e,o}),arguments.length>2?arguments[2]:void 0)},e.split=function(t,i,n){return[e.filter(t,i,n),e.filter(t,(e=>!i(e)),n)]},e.buffer=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>3?arguments[3]:void 0,n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:[]).slice(),o=e((e=>{n?n.push(e):r.fire(e)}));i&&i.add(o);const s=()=>{null===n||void 0===n||n.forEach((e=>r.fire(e))),n=null},r=new f({onWillAddFirstListener(){o||(o=e((e=>r.fire(e))),i&&i.add(o))},onDidAddFirstListener(){n&&(t?setTimeout(s):s())},onDidRemoveLastListener(){o&&o.dispose(),o=null}});return i&&i.add(r),r.event},e.chain=function(e,t){return(i,n,o)=>{const s=t(new d);return e((function(e){const t=s.evaluate(e);t!==h&&i.call(n,t)}),void 0,o)}};const h=Symbol("HaltChainable");class d{constructor(){this.steps=[]}map(e){return this.steps.push(e),this}forEach(e){return this.steps.push((t=>(e(t),t))),this}filter(e){return this.steps.push((t=>e(t)?t:h)),this}reduce(e,t){let i=t;return this.steps.push((t=>(i=e(i,t),i))),this}latch(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:(e,t)=>e===t,i=!0;return this.steps.push((n=>{const o=i||!t(n,e);return i=!1,e=n,o?n:h})),this}evaluate(e){for(const t of this.steps)if((e=t(e))===h)break;return e}}e.fromNodeEventEmitter=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e=>e;const n=function(){return o.fire(i(...arguments))},o=new f({onWillAddFirstListener:()=>e.on(t,n),onDidRemoveLastListener:()=>e.removeListener(t,n)});return o.event},e.fromDOMEventEmitter=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e=>e;const n=function(){return o.fire(i(...arguments))},o=new f({onWillAddFirstListener:()=>e.addEventListener(t,n),onDidRemoveLastListener:()=>e.removeEventListener(t,n)});return o.event},e.toPromise=function(e){return new Promise((t=>i(e)(t)))},e.fromPromise=function(e){const t=new f;return e.then((e=>{t.fire(e)}),(()=>{t.fire(void 0)})).finally((()=>{t.dispose()})),t.event},e.runAndSubscribe=function(e,t,i){return t(i),e((e=>t(e)))};class c{constructor(e,i){this._observable=e,this._counter=0,this._hasChanged=!1;const n={onWillAddFirstListener:()=>{e.addObserver(this)},onDidRemoveLastListener:()=>{e.removeObserver(this)}};i||t(n),this.emitter=new f(n),i&&i.add(this.emitter)}beginUpdate(e){this._counter++}handlePossibleChange(e){}handleChange(e,t){this._hasChanged=!0}endUpdate(e){this._counter--,0===this._counter&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}e.fromObservable=function(e,t){return new c(e,t).emitter.event},e.fromObservableLight=function(e){return(t,i,n)=>{let o=0,r=!1;const a={beginUpdate(){o++},endUpdate(){o--,0===o&&(e.reportChanges(),r&&(r=!1,t.call(i)))},handlePossibleChange(){},handleChange(){r=!0}};e.addObserver(a),e.reportChanges();const l={dispose(){e.removeObserver(a)}};return n instanceof s.SL?n.add(l):Array.isArray(n)&&n.push(l),l}}}(h||(h={}));class d{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name="".concat(e,"_").concat(d._idPool++),d.all.add(this)}start(e){this._stopWatch=new a.G,this.listenerCount=e}stop(){if(this._stopWatch){const e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}}d.all=new Set,d._idPool=0;class c{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.random().toString(18).slice(2,5);this.threshold=e,this.name=t,this._warnCountdown=0}dispose(){var e;null===(e=this._stacks)||void 0===e||e.clear()}check(e,t){const i=this.threshold;if(i<=0||t{const t=this._stacks.get(e.value)||0;this._stacks.set(e.value,t-1)}}}class u{static create(){var e;return new u(null!==(e=(new Error).stack)&&void 0!==e?e:"")}constructor(e){this.value=e}print(){console.warn(this.value.split("\n").slice(2).join("\n"))}}class g{constructor(e){this.value=e}}const m=void 0;class f{constructor(e){var t,i,n,o,s;this._size=0,this._options=e,this._leakageMon=(null===(t=this._options)||void 0===t?void 0:t.leakWarningThreshold)?new c(null!==(n=null===(i=this._options)||void 0===i?void 0:i.leakWarningThreshold)&&void 0!==n?n:-1):void 0,this._perfMon=(null===(o=this._options)||void 0===o?void 0:o._profName)?new d(this._options._profName):void 0,this._deliveryQueue=null===(s=this._options)||void 0===s?void 0:s.deliveryQueue}dispose(){var e,t,i,n;this._disposed||(this._disposed=!0,(null===(e=this._deliveryQueue)||void 0===e?void 0:e.current)===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),null===(i=null===(t=this._options)||void 0===t?void 0:t.onDidRemoveLastListener)||void 0===i||i.call(t),null===(n=this._leakageMon)||void 0===n||n.dispose())}get event(){var e;return null!==(e=this._event)&&void 0!==e||(this._event=(e,t,i)=>{var n,o,r,a,l;if(this._leakageMon&&this._size>3*this._leakageMon.threshold)return console.warn("[".concat(this._leakageMon.name,"] REFUSES to accept new listeners because it exceeded its threshold by far")),s.JT.None;if(this._disposed)return s.JT.None;t&&(e=e.bind(t));const h=new g(e);let d;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(h.stack=u.create(),d=this._leakageMon.check(h.stack,this._size+1)),this._listeners?this._listeners instanceof g?(null!==(l=this._deliveryQueue)&&void 0!==l||(this._deliveryQueue=new _),this._listeners=[this._listeners,h]):this._listeners.push(h):(null===(o=null===(n=this._options)||void 0===n?void 0:n.onWillAddFirstListener)||void 0===o||o.call(n,this),this._listeners=h,null===(a=null===(r=this._options)||void 0===r?void 0:r.onDidAddFirstListener)||void 0===a||a.call(r,this)),this._size++;const c=(0,s.OF)((()=>{null===m||void 0===m||m.unregister(c),null===d||void 0===d||d(),this._removeListener(h)}));if(i instanceof s.SL?i.add(c):Array.isArray(i)&&i.push(c),m){const e=(new Error).stack.split("\n").slice(2).join("\n").trim();m.register(c,e,c)}return c}),this._event}_removeListener(e){var t,i,n,o;if(null===(i=null===(t=this._options)||void 0===t?void 0:t.onWillRemoveListener)||void 0===i||i.call(t,this),!this._listeners)return;if(1===this._size)return this._listeners=void 0,null===(o=null===(n=this._options)||void 0===n?void 0:n.onDidRemoveLastListener)||void 0===o||o.call(n,this),void(this._size=0);const s=this._listeners,r=s.indexOf(e);if(-1===r)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,s[r]=void 0;const a=this._deliveryQueue.current===this;if(2*this._size<=s.length){let e=0;for(let t=0;t0}}const p=()=>new _;class _{constructor(){this.i=-1,this.end=0}enqueue(e,t,i){this.i=0,this.end=i,this.current=e,this.value=t}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class v extends f{constructor(e){super(e),this._isPaused=0,this._eventQueue=new r.S,this._mergeFn=null===e||void 0===e?void 0:e.merge}pause(){this._isPaused++}resume(){if(0!==this._isPaused&&0===--this._isPaused)if(this._mergeFn){if(this._eventQueue.size>0){const e=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(e))}}else for(;!this._isPaused&&0!==this._eventQueue.size;)super.fire(this._eventQueue.shift())}fire(e){this._size&&(0!==this._isPaused?this._eventQueue.push(e):super.fire(e))}}class b extends v{constructor(e){var t;super(e),this._delay=null!==(t=e.delay)&&void 0!==t?t:100}fire(e){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(e)}}class C extends f{constructor(e){super(e),this._queuedEvents=[],this._mergeFn=null===e||void 0===e?void 0:e.merge}fire(e){this.hasListeners()&&(this._queuedEvents.push(e),1===this._queuedEvents.length&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((e=>super.fire(e))),this._queuedEvents=[]})))}}class w{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new f({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(e){const t={event:e,listener:null};this.events.push(t),this.hasListeners&&this.hook(t);return(0,s.OF)((0,o.M)((()=>{this.hasListeners&&this.unhook(t);const e=this.events.indexOf(t);this.events.splice(e,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((e=>this.hook(e)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((e=>this.unhook(e)))}hook(e){e.listener=e.event((e=>this.emitter.fire(e)))}unhook(e){var t;null===(t=e.listener)||void 0===t||t.dispose(),e.listener=null}dispose(){var e;this.emitter.dispose();for(const t of this.events)null===(e=t.listener)||void 0===e||e.dispose();this.events=[]}}class y{constructor(){this.buffers=[]}wrapEvent(e){return(t,i,n)=>e((e=>{const n=this.buffers[this.buffers.length-1];n?n.push((()=>t.call(i,e))):t.call(i,e)}),void 0,n)}bufferEvents(e){const t=[];this.buffers.push(t);const i=e();return this.buffers.pop(),t.forEach((e=>e())),i}}class S{constructor(){this.listening=!1,this.inputEvent=h.None,this.inputEventListener=s.JT.None,this.emitter=new f({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}},9861:(e,t,i)=>{i.d(t,{KM:()=>d,ej:()=>a,fn:()=>l,oP:()=>u,yj:()=>h});var n=i(51169),o=i(21511),s=i(25085);function r(e){return 47===e||92===e}function a(e){return e.replace(/[\\/]/g,n.KR.sep)}function l(e){return-1===e.indexOf("/")&&(e=a(e)),/^[a-zA-Z]:(\/|$)/.test(e)&&(e="/"+e),e}function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.KR.sep;if(!e)return"";const i=e.length,o=e.charCodeAt(0);if(r(o)){if(r(e.charCodeAt(1))&&!r(e.charCodeAt(2))){let n=3;const o=n;for(;n3&&void 0!==arguments[3]?arguments[3]:n.ir;if(e===t)return!0;if(!e||!t)return!1;if(t.length>e.length)return!1;if(i){if(!(0,s.ok)(e,t))return!1;if(t.length===e.length)return!0;let i=t.length;return t.charAt(t.length-1)===o&&i--,e.charAt(i)===o}return t.charAt(t.length-1)!==o&&(t+=o),0===e.indexOf(t)}function c(e){return e>=65&&e<=90||e>=97&&e<=122}function u(e){return!!(arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.ED)&&(c(e.charCodeAt(0))&&58===e.charCodeAt(1))}},66835:(e,t,i)=>{i.d(t,{CL:()=>ie,mX:()=>ne,jB:()=>W,mB:()=>H,EW:()=>oe,l7:()=>re,ir:()=>p,Oh:()=>z,XU:()=>V,Ji:()=>m,Sy:()=>_,KZ:()=>A,or:()=>g});var n=i(65549);function o(e){const t=function(e){if(s=0,a(e,l,4352),s>0)return r.subarray(0,s);if(a(e,h,4449),s>0)return r.subarray(0,s);if(a(e,d,4520),s>0)return r.subarray(0,s);if(a(e,c,12593),s)return r.subarray(0,s);if(e>=44032&&e<=55203){const t=e-44032,i=t%588,n=Math.floor(t/588),o=Math.floor(i/28),u=i%28-1;if(n=0&&(u0)return r.subarray(0,s)}return}(e);if(t&&t.length>0)return new Uint32Array(t)}let s=0;const r=new Uint32Array(10);function a(e,t,i){e>=i&&e>8&&(r[s++]=e>>8&255);e>>16&&(r[s++]=e>>16&255)}(t[e-i])}const l=new Uint8Array([114,82,115,101,69,102,97,113,81,116,84,100,119,87,99,122,120,118,103]),h=new Uint16Array([107,111,105,79,106,112,117,80,104,27496,28520,27752,121,110,27246,28782,27758,98,109,27757,108]),d=new Uint16Array([114,82,29810,115,30579,26483,101,102,29286,24934,29030,29798,30822,30310,26470,97,113,29809,116,84,100,119,99,122,120,118,103]),c=new Uint16Array([114,82,29810,115,30579,26483,101,69,102,29286,24934,29030,29798,30822,30310,26470,97,113,81,29809,116,84,100,119,87,99,122,120,118,103,107,111,105,79,106,112,117,80,104,27496,28520,27752,121,110,27246,28782,27758,98,109,27757,108]);var u=i(25085);function g(){for(var e=arguments.length,t=new Array(e),i=0;i0?[{start:0,end:t.length}]:[]:null}function p(e,t){const i=t.toLowerCase().indexOf(e.toLowerCase());return-1===i?null:[{start:i,end:i+e.length}]}function _(e,t){return v(e.toLowerCase(),t.toLowerCase(),0,0)}function v(e,t,i,n){if(i===e.length)return[];if(n===t.length)return null;if(e[i]===t[n]){let o=null;return(o=v(e,t,i+1,n+1))?E({start:n,end:n+1},o):null}return v(e,t,i,n+1)}function b(e){return 97<=e&&e<=122}function C(e){return 65<=e&&e<=90}function w(e){return 48<=e&&e<=57}function y(e){return 32===e||9===e||10===e||13===e}const S=new Set;function L(e){return y(e)||S.has(e)}function k(e,t){return e===t||L(e)&&L(t)}"()[]{}<>`'\"-/;:,.?!".split("").forEach((e=>S.add(e.charCodeAt(0))));const D=new Map;function N(e){if(D.has(e))return D.get(e);let t;const i=o(e);return i&&(t=i),D.set(e,t),t}function x(e){return b(e)||C(e)||w(e)}function E(e,t){return 0===t.length?t=[e]:e.end===t[0].start?t[0].start=e.start:t.unshift(e),t}function I(e,t){for(let i=t;i0&&!x(e.charCodeAt(i-1)))return i}return e.length}function T(e,t,i,n){if(i===e.length)return[];if(n===t.length)return null;if(e[i]!==t[n].toLowerCase())return null;{let o=null,s=n+1;for(o=T(e,t,i+1,n+1);!o&&(s=I(t,s))60&&(t=t.substring(0,60));const i=function(e){let t=0,i=0,n=0,o=0,s=0;for(let r=0;r.2&&t<.8&&n>.6&&o<.2}(i)){if(!function(e){const{upperPercent:t,lowerPercent:i}=e;return 0===i&&t>.6}(i))return null;t=t.toLowerCase()}let n=null,o=0;for(e=e.toLowerCase();o2&&void 0!==arguments[2]&&arguments[2];if(!t||0===t.length)return null;let n=null,o=0;for(e=e.toLowerCase(),t=t.toLowerCase();o0&&L(e.charCodeAt(i-1)))return i;return e.length}const P=g(m,M,p),F=g(m,M,_),B=new n.z6(1e4);function z(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"!==typeof e||"string"!==typeof t)return null;let n=B.get(e);n||(n=new RegExp(u.un(e),"i"),B.set(e,n));const o=n.exec(t);return o?[{start:o.index,end:o.index+o[0].length}]:i?F(e,t):P(e,t)}function V(e,t){const i=oe(e,e.toLowerCase(),0,t,t.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return i?H(i):null}function W(e,t,i,n,o,s){const r=Math.min(13,e.length);for(;i1;n--){const o=e[n]+i,s=t[t.length-1];s&&s.end===o?s.end=o+1:t.push({start:o,end:o+1})}return t}const K=128;function U(){const e=[],t=[];for(let i=0;i<=K;i++)t[i]=0;for(let i=0;i<=K;i++)e.push(t.slice(0));return e}function j(e){const t=[];for(let i=0;i<=e;i++)t[i]=0;return t}const q=j(2*K),G=j(2*K),Q=U(),Z=U(),Y=U(),$=!1;function J(e,t,i,n,o){function s(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:" ";for(;e.lengths(e,3))).join("|"),"\n");for(let a=0;a<=i;a++)r+=0===a?" |":"".concat(t[a-1],"|"),r+=e[a].slice(0,o+1).map((e=>s(e.toString(),3))).join("|")+"\n";return r}function X(e,t){if(t<0||t>=e.length)return!1;const i=e.codePointAt(t);switch(i){case 95:case 45:case 46:case 32:case 47:case 92:case 39:case 34:case 58:case 36:case 60:case 62:case 40:case 41:case 91:case 93:case 123:case 125:return!0;case void 0:return!1;default:return!!u.C8(i)}}function ee(e,t){if(t<0||t>=e.length)return!1;switch(e.charCodeAt(t)){case 32:case 9:return!0;default:return!1}}function te(e,t,i){return t[e]!==i[e]}var ie;!function(e){e.Default=[-100,0],e.isDefault=function(e){return!e||2===e.length&&-100===e[0]&&0===e[1]}}(ie||(ie={}));class ne{constructor(e,t){this.firstMatchCanBeWeak=e,this.boostFullMatch=t}}function oe(e,t,i,n,o,s){let r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:ne.default;const a=e.length>K?K:e.length,l=n.length>K?K:n.length;if(i>=a||s>=l||a-i>l-s)return;if(!function(e,t,i,n,o,s){let r=arguments.length>6&&void 0!==arguments[6]&&arguments[6];for(;t=i&&a>=n;)o[r]===s[a]&&(G[r]=a,r--),a--}(a,l,i,s,t,o);let h=1,d=1,c=i,u=s;const g=[!1];for(h=1,c=i;cr,v=_?Z[h][d-1]+(Q[h][d-1]>0?-5:0):0,b=u>r+1&&Q[h][d-1]>0,C=b?Z[h][d-2]+(Q[h][d-2]>0?-5:0):0;if(b&&(!_||C>=v)&&(!f||C>=p))Z[h][d]=C,Y[h][d]=3,Q[h][d]=0;else if(_&&(!f||v>=p))Z[h][d]=v,Y[h][d]=2,Q[h][d]=0;else{if(!f)throw new Error("not possible");Z[h][d]=p,Y[h][d]=1,Q[h][d]=Q[h-1][d-1]+1}}}if($&&function(e,t,i,n){e=e.substr(t),i=i.substr(n),console.log(J(Z,e,e.length,i,i.length)),console.log(J(Y,e,e.length,i,i.length)),console.log(J(Q,e,e.length,i,i.length))}(e,i,n,s),!g[0]&&!r.firstMatchCanBeWeak)return;h--,d--;const m=[Z[h][d],s];let f=0,p=0;for(;h>=1;){let e=d;do{const t=Y[h][e];if(3===t)e-=2;else{if(2!==t)break;e-=1}}while(e>=1);f>1&&t[i+h-1]===o[s+d-1]&&!te(e+s-1,n,o)&&f+1>Q[h][e]&&(e=d),e===d?f++:f=1,p||(p=e),h--,d=e-1,m.push(d)}l===a&&r.boostFullMatch&&(m[0]+=2);const _=p-a;return m[0]-=_,m}function se(e,t,i,n,o,s,r,a,l,h,d){if(t[i]!==s[r])return Number.MIN_SAFE_INTEGER;let c=1,u=!1;return r===i-n?c=e[i]===o[r]?7:5:!te(r,o,s)||0!==r&&te(r-1,o,s)?!X(s,r)||0!==r&&X(s,r-1)?(X(s,r-1)||ee(s,r-1))&&(c=5,u=!0):c=5:(c=e[i]===o[r]?7:5,u=!0),c>1&&i===n&&(d[0]=!0),u||(u=te(r,o,s)||X(s,r-1)||ee(s,r-1)),i===n?r>l&&(c-=u?3:5):c+=h?u?2:0:u?0:1,r+1===a&&(c-=u?3:5),c}function re(e,t,i,n,o,s,r){return function(e,t,i,n,o,s,r,a){let l=oe(e,t,i,n,o,s,a);if(l&&!r)return l;if(e.length>=3){const t=Math.min(7,e.length-1);for(let r=i+1;rl[0])&&(l=e))}}}return l}(e,t,i,n,o,s,!0,r)}function ae(e,t){if(t+1>=e.length)return;const i=e[t],n=e[t+1];return i!==n?e.slice(0,t)+n+i+e.slice(t+2):void 0}ne.default={boostFullMatch:!0,firstMatchCanBeWeak:!1}},75937:(e,t,i)=>{function n(e,t){const i=this;let n,o=!1;return function(){if(o)return n;if(o=!0,t)try{n=e.apply(i,arguments)}finally{t()}else n=e.apply(i,arguments);return n}}i.d(t,{M:()=>n})},52223:(e,t,i)=>{i.d(t,{EQ:()=>I,Qc:()=>T});var n=i(60282),o=i(9861),s=i(65549),r=i(51169),a=i(21511),l=i(25085);const h="**",d="/",c="[/\\\\]",u="[^/\\\\]",g=/\//g;function m(e,t){switch(e){case 0:return"";case 1:return"".concat(u,"*?");default:return"(?:".concat(c,"|").concat(u,"+").concat(c).concat(t?"|".concat(c).concat(u,"+"):"",")*?")}}function f(e,t){if(!e)return[];const i=[];let n=!1,o=!1,s="";for(const r of e){switch(r){case t:if(!n&&!o){i.push(s),s="";continue}break;case"{":n=!0;break;case"}":n=!1;break;case"[":o=!0;break;case"]":o=!1}s+=r}return s&&i.push(s),i}function p(e){if(!e)return"";let t="";const i=f(e,d);if(i.every((e=>e===h)))t=".*";else{let e=!1;i.forEach(((n,o)=>{if(n===h){if(e)return;t+=m(2,o===i.length-1)}else{let e=!1,s="",r=!1,a="";for(const i of n)if("}"!==i&&e)s+=i;else if(!r||"]"===i&&a)switch(i){case"{":e=!0;continue;case"[":r=!0;continue;case"}":{const i=f(s,","),n="(?:".concat(i.map((e=>p(e))).join("|"),")");t+=n,e=!1,s="";break}case"]":t+="["+a+"]",r=!1,a="";break;case"?":t+=u;continue;case"*":t+=m(1);continue;default:t+=(0,l.ec)(i)}else{let e;e="-"===i?i:"^"!==i&&"!"!==i||a?i===d?"":(0,l.ec)(i):"^",a+=e}oD(e,t))).filter((e=>e!==k)),e),n=i.length;if(!n)return k;if(1===n)return i[0];const o=function(t,n){for(let o=0,s=i.length;o!!e.allBasenames));s&&(o.allBasenames=s.allBasenames);const r=i.reduce(((e,t)=>t.allPaths?e.concat(t.allPaths):e),[]);r.length&&(o.allPaths=r);return o}(i,t):(o=w.exec(x(i,t)))?E(o[1].substr(1),i,!0):(o=y.exec(x(i,t)))?E(o[1],i,!1):function(e){try{const t=new RegExp("^".concat(p(e),"$"));return function(i){return t.lastIndex=0,"string"===typeof i&&t.test(i)?e:null}}catch(t){return k}}(i),S.set(n,s)),N(s,e)}function N(e,t){if("string"===typeof t)return e;const i=function(i,n){return(0,o.KM)(i,t.base,!a.IJ)?e((0,l.j3)(i.substr(t.base.length),r.ir),n):null};return i.allBasenames=e.allBasenames,i.allPaths=e.allPaths,i.basenames=e.basenames,i.patterns=e.patterns,i}function x(e,t){return t.trimForExclusions&&e.endsWith("/**")?e.substr(0,e.length-2):e}function E(e,t,i){const n=r.ir===r.KR.sep,o=n?e:e.replace(g,r.ir),s=r.ir+o,a=r.KR.sep+e;let l;return l=i?function(i,r){return"string"!==typeof i||i!==o&&!i.endsWith(s)&&(n||i!==e&&!i.endsWith(a))?null:t}:function(i,s){return"string"!==typeof i||i!==o&&(n||i!==e)?null:t},l.allPaths=[(i?"*/":"./")+e],l}function I(e,t,i){return!(!e||"string"!==typeof t)&&T(e)(t,void 0,i)}function T(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return L;if("string"===typeof e||function(e){const t=e;if(!t)return!1;return"string"===typeof t.base&&"string"===typeof t.pattern}(e)){const i=D(e,t);if(i===k)return L;const n=function(e,t){return!!i(e,t)};return i.allBasenames&&(n.allBasenames=i.allBasenames),i.allPaths&&(n.allPaths=i.allPaths),n}return function(e,t){const i=M(Object.getOwnPropertyNames(e).map((i=>function(e,t,i){if(!1===t)return k;const o=D(e,i);if(o===k)return k;if("boolean"===typeof t)return o;if(t){const i=t.when;if("string"===typeof i){const t=(t,s,r,a)=>{if(!a||!o(t,s))return null;const l=a(i.replace("$(basename)",(()=>r)));return(0,n.J8)(l)?l.then((t=>t?e:null)):l?e:null};return t.requiresSiblings=!0,t}}return o}(i,e[i],t))).filter((e=>e!==k))),o=i.length;if(!o)return k;if(!i.some((e=>!!e.requiresSiblings))){if(1===o)return i[0];const e=function(e,t){let o;for(let s=0,r=i.length;s{for(const e of o){const t=await e;if("string"===typeof t)return t}return null})():null},t=i.find((e=>!!e.allBasenames));t&&(e.allBasenames=t.allBasenames);const s=i.reduce(((e,t)=>t.allPaths?e.concat(t.allPaths):e),[]);return s.length&&(e.allPaths=s),e}const s=function(e,t,o){let s,a;for(let l=0,h=i.length;l{for(const e of a){const t=await e;if("string"===typeof t)return t}return null})():null},a=i.find((e=>!!e.allBasenames));a&&(s.allBasenames=a.allBasenames);const l=i.reduce(((e,t)=>t.allPaths?e.concat(t.allPaths):e),[]);l.length&&(s.allPaths=l);return s}(e,t)}function M(e,t){const i=e.filter((e=>!!e.basenames));if(i.length<2)return e;const n=i.reduce(((e,t)=>{const i=t.basenames;return i?e.concat(i):e}),[]);let o;if(t){o=[];for(let e=0,i=n.length;e{const i=t.patterns;return i?e.concat(i):e}),[]);const s=function(e,t){if("string"!==typeof e)return null;if(!t){let i;for(i=e.length;i>0;i--){const t=e.charCodeAt(i-1);if(47===t||92===t)break}t=e.substr(i)}const i=n.indexOf(t);return-1!==i?o[i]:null};s.basenames=n,s.patterns=o,s.allBasenames=n;const r=e.filter((e=>!e.basenames));return r.push(s),r}},48367:(e,t,i)=>{i.d(t,{Cv:()=>a,SP:()=>s,vp:()=>o,yP:()=>c});var n=i(25085);function o(e){return s(e,0)}function s(e,t){switch(typeof e){case"object":return null===e?r(349,t):Array.isArray(e)?(i=e,n=r(104579,n=t),i.reduce(((e,t)=>s(t,e)),n)):function(e,t){return t=r(181387,t),Object.keys(e).sort().reduce(((t,i)=>(t=a(i,t),s(e[i],t))),t)}(e,t);case"string":return a(e,t);case"boolean":return function(e,t){return r(e?433:863,t)}(e,t);case"number":return r(e,t);case"undefined":return r(937,t);default:return r(617,t)}var i,n}function r(e,t){return(t<<5)-t+e|0}function a(e,t){t=r(149417,t);for(let i=0,n=e.length;i2&&void 0!==arguments[2]?arguments[2]:32)-t;return(e<>>i)>>>0}function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.byteLength,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;for(let o=0;o1&&void 0!==arguments[1]?arguments[1]:32;return e instanceof ArrayBuffer?Array.from(new Uint8Array(e)).map((e=>e.toString(16).padStart(2,"0"))).join(""):function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"0";for(;e.length>>0).toString(16),t/4)}class c{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(67),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(e){const t=e.length;if(0===t)return;const i=this._buff;let o,s,r=this._buffLen,a=this._leftoverHighSurrogate;for(0!==a?(o=a,s=-1,a=0):(o=e.charCodeAt(0),s=0);;){let l=o;if(n.ZG(o)){if(!(s+1>>6,e[t++]=128|(63&i)>>>0):i<65536?(e[t++]=224|(61440&i)>>>12,e[t++]=128|(4032&i)>>>6,e[t++]=128|(63&i)>>>0):(e[t++]=240|(1835008&i)>>>18,e[t++]=128|(258048&i)>>>12,e[t++]=128|(4032&i)>>>6,e[t++]=128|(63&i)>>>0),t>=64&&(this._step(),t-=64,this._totalLen+=64,e[0]=e[64],e[1]=e[65],e[2]=e[66]),t}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),d(this._h0)+d(this._h1)+d(this._h2)+d(this._h3)+d(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,h(this._buff,this._buffLen),this._buffLen>56&&(this._step(),h(this._buff));const e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}_step(){const e=c._bigBlock32,t=this._buffDV;for(let l=0;l<64;l+=4)e.setUint32(l,t.getUint32(l,!1),!1);for(let c=64;c<320;c+=4)e.setUint32(c,l(e.getUint32(c-12,!1)^e.getUint32(c-32,!1)^e.getUint32(c-56,!1)^e.getUint32(c-64,!1),1),!1);let i,n,o,s=this._h0,r=this._h1,a=this._h2,h=this._h3,d=this._h4;for(let c=0;c<80;c++)c<20?(i=r&a|~r&h,n=1518500249):c<40?(i=r^a^h,n=1859775393):c<60?(i=r&a|r&h|a&h,n=2400959708):(i=r^a^h,n=3395469782),o=l(s,5)+i+d+n+e.getUint32(4*c,!1)&4294967295,d=h,h=a,a=l(r,30),r=s,s=o;this._h0=this._h0+s&4294967295,this._h1=this._h1+r&4294967295,this._h2=this._h2+a&4294967295,this._h3=this._h3+h&4294967295,this._h4=this._h4+d&4294967295}}c._bigBlock32=new DataView(new ArrayBuffer(320))},32936:(e,t,i)=>{i.d(t,{CP:()=>h,Fr:()=>d,W5:()=>l,d9:()=>u,g_:()=>c,oR:()=>g,v1:()=>m});var n=i(85108),o=i(43020),s=i(55694),r=i(25085),a=i(82682);class l{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var i,o,s;if(this.value=e,"string"!==typeof this.value)throw(0,n.b1)("value");"boolean"===typeof t?(this.isTrusted=t,this.supportThemeIcons=!1,this.supportHtml=!1):(this.isTrusted=null!==(i=t.isTrusted)&&void 0!==i?i:void 0,this.supportThemeIcons=null!==(o=t.supportThemeIcons)&&void 0!==o&&o,this.supportHtml=null!==(s=t.supportHtml)&&void 0!==s&&s)}appendText(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;var i;return this.value+=(i=this.supportThemeIcons?(0,o.Qo)(e):e,i.replace(/[\\`*_{}[\]()#+\-!~]/g,"\\$&")).replace(/([ \t]+)/g,((e,t)=>" ".repeat(t.length))).replace(/\>/gm,"\\>").replace(/\n/g,1===t?"\\\n":"\n\n"),this}appendMarkdown(e){return this.value+=e,this}appendCodeblock(e,t){return this.value+="\n".concat(function(e,t){var i,n;const o=null!==(n=null===(i=e.match(/^`+/gm))||void 0===i?void 0:i.reduce(((e,t)=>e.length>t.length?e:t)).length)&&void 0!==n?n:0,s=o>=3?o+1:3;return["".concat("`".repeat(s)).concat(t),e,"".concat("`".repeat(s))].join("\n")}(t,e),"\n"),this}appendLink(e,t,i){return this.value+="[",this.value+=this._escape(t,"]"),this.value+="](",this.value+=this._escape(String(e),")"),i&&(this.value+=' "'.concat(this._escape(this._escape(i,'"'),")"),'"')),this.value+=")",this}_escape(e,t){const i=new RegExp((0,r.ec)(t),"g");return e.replace(i,((t,i)=>"\\"!==e.charAt(i-1)?"\\".concat(t):t))}}function h(e){return d(e)?!e.value:!Array.isArray(e)||e.every(h)}function d(e){return e instanceof l||!(!e||"object"!==typeof e)&&("string"===typeof e.value&&("boolean"===typeof e.isTrusted||"object"===typeof e.isTrusted||void 0===e.isTrusted)&&("boolean"===typeof e.supportThemeIcons||void 0===e.supportThemeIcons))}function c(e,t){return e===t||!(!e||!t)&&(e.value===t.value&&e.isTrusted===t.isTrusted&&e.supportThemeIcons===t.supportThemeIcons&&e.supportHtml===t.supportHtml&&(e.baseUri===t.baseUri||!!e.baseUri&&!!t.baseUri&&(0,s.Xy)(a.o.from(e.baseUri),a.o.from(t.baseUri))))}function u(e){return e.replace(/"/g,""")}function g(e){return e?e.replace(/\\([\\`*_{}[\]()#+\-.!~])/g,"$1"):e}function m(e){const t=[],i=e.split("|").map((e=>e.trim()));e=i[0];const n=i[1];if(n){const e=/height=(\d+)/.exec(n),i=/width=(\d+)/.exec(n),o=e?e[1]:"",s=i?i[1]:"",r=isFinite(parseInt(s)),a=isFinite(parseInt(o));r&&t.push('width="'.concat(s,'"')),a&&t.push('height="'.concat(o,'"'))}return{href:e,dimensions:t}}},43020:(e,t,i)=>{i.d(t,{Gt:()=>_,Ho:()=>p,JL:()=>m,Qo:()=>h,f$:()=>c,x$:()=>g});var n=i(66835),o=i(25085),s=i(62502);const r="$(",a=new RegExp("\\$\\(".concat(s.k.iconNameExpression,"(?:").concat(s.k.iconModifierExpression,")?\\)"),"g"),l=new RegExp("(\\\\)?".concat(a.source),"g");function h(e){return e.replace(l,((e,t)=>t?e:"\\".concat(e)))}const d=new RegExp("\\\\".concat(a.source),"g");function c(e){return e.replace(d,(e=>"\\".concat(e)))}const u=new RegExp("(\\s)?(\\\\)?".concat(a.source,"(\\s)?"),"g");function g(e){return-1===e.indexOf(r)?e:e.replace(u,((e,t,i,n)=>i?e:t||n||""))}function m(e){return e?e.replace(/\$\((.*?)\)/g,((e,t)=>" ".concat(t," "))).trim():""}const f=new RegExp("\\$\\(".concat(s.k.iconNameCharacter,"+\\)"),"g");function p(e){f.lastIndex=0;let t="";const i=[];let n=0;for(;;){const o=f.lastIndex,s=f.exec(e),r=e.substring(o,null===s||void 0===s?void 0:s.index);if(r.length>0){t+=r;for(let e=0;e2&&void 0!==arguments[2]&&arguments[2];const{text:s,iconOffsets:r}=t;if(!r||0===r.length)return(0,n.Oh)(e,s,i);const a=(0,o.j3)(s," "),l=s.length-a.length,h=(0,n.Oh)(e,a,i);if(h)for(const n of h){const e=r[n.start+l]+l;n.start+=e,n.end+=e}return h}},58276:(e,t,i)=>{i.d(t,{R:()=>n,a:()=>o});class n{constructor(e){this._prefix=e,this._lastId=0}nextId(){return this._prefix+ ++this._lastId}}const o=new n("id#")},43283:(e,t,i)=>{i.d(t,{F:()=>o});var n=i(24219);const o=new class{constructor(){this._onDidChange=new n.Q5,this.onDidChange=this._onDidChange.event,this._enabled=!0}get enabled(){return this._enabled}enable(){this._enabled=!0,this._onDidChange.fire()}disable(){this._enabled=!1,this._onDidChange.fire()}}},36952:(e,t,i)=>{var n;i.d(t,{$:()=>n}),function(e){function t(e){return e&&"object"===typeof e&&"function"===typeof e[Symbol.iterator]}e.is=t;const i=Object.freeze([]);function*n(e){yield e}e.empty=function(){return i},e.single=n,e.wrap=function(e){return t(e)?e:n(e)},e.from=function(e){return e||i},e.reverse=function*(e){for(let t=e.length-1;t>=0;t--)yield e[t]},e.isEmpty=function(e){return!e||!0===e[Symbol.iterator]().next().done},e.first=function(e){return e[Symbol.iterator]().next().value},e.some=function(e,t){for(const i of e)if(t(i))return!0;return!1},e.find=function(e,t){for(const i of e)if(t(i))return i},e.filter=function*(e,t){for(const i of e)t(i)&&(yield i)},e.map=function*(e,t){let i=0;for(const n of e)yield t(n,i++)},e.concat=function*(){for(var e=arguments.length,t=new Array(e),i=0;i2&&void 0!==arguments[2]?arguments[2]:e.length;return function*(){for(t<0&&(t+=e.length),i<0?i+=e.length:i>e.length&&(i=e.length);t1&&void 0!==arguments[1]?arguments[1]:Number.POSITIVE_INFINITY;const n=[];if(0===i)return[n,t];const o=t[Symbol.iterator]();for(let s=0;so}]},e.asyncToArray=async function(e){const t=[];for await(const i of e)t.push(i);return Promise.resolve(t)}}(n||(n={}))},67925:(e,t,i)=>{i.d(t,{H_:()=>a,Vd:()=>u,gx:()=>f,kL:()=>m});class n{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}const o=new n,s=new n,r=new n,a=new Array(230),l={},h=[],d=Object.create(null),c=Object.create(null),u=[],g=[];for(let p=0;p<=193;p++)u[p]=-1;for(let p=0;p<=132;p++)g[p]=-1;var m;function f(e,t){return(e|(65535&t)<<16>>>0)>>>0}!function(){const e="",t=[[1,0,"None",0,"unknown",0,"VK_UNKNOWN",e,e],[1,1,"Hyper",0,e,0,e,e,e],[1,2,"Super",0,e,0,e,e,e],[1,3,"Fn",0,e,0,e,e,e],[1,4,"FnLock",0,e,0,e,e,e],[1,5,"Suspend",0,e,0,e,e,e],[1,6,"Resume",0,e,0,e,e,e],[1,7,"Turbo",0,e,0,e,e,e],[1,8,"Sleep",0,e,0,"VK_SLEEP",e,e],[1,9,"WakeUp",0,e,0,e,e,e],[0,10,"KeyA",31,"A",65,"VK_A",e,e],[0,11,"KeyB",32,"B",66,"VK_B",e,e],[0,12,"KeyC",33,"C",67,"VK_C",e,e],[0,13,"KeyD",34,"D",68,"VK_D",e,e],[0,14,"KeyE",35,"E",69,"VK_E",e,e],[0,15,"KeyF",36,"F",70,"VK_F",e,e],[0,16,"KeyG",37,"G",71,"VK_G",e,e],[0,17,"KeyH",38,"H",72,"VK_H",e,e],[0,18,"KeyI",39,"I",73,"VK_I",e,e],[0,19,"KeyJ",40,"J",74,"VK_J",e,e],[0,20,"KeyK",41,"K",75,"VK_K",e,e],[0,21,"KeyL",42,"L",76,"VK_L",e,e],[0,22,"KeyM",43,"M",77,"VK_M",e,e],[0,23,"KeyN",44,"N",78,"VK_N",e,e],[0,24,"KeyO",45,"O",79,"VK_O",e,e],[0,25,"KeyP",46,"P",80,"VK_P",e,e],[0,26,"KeyQ",47,"Q",81,"VK_Q",e,e],[0,27,"KeyR",48,"R",82,"VK_R",e,e],[0,28,"KeyS",49,"S",83,"VK_S",e,e],[0,29,"KeyT",50,"T",84,"VK_T",e,e],[0,30,"KeyU",51,"U",85,"VK_U",e,e],[0,31,"KeyV",52,"V",86,"VK_V",e,e],[0,32,"KeyW",53,"W",87,"VK_W",e,e],[0,33,"KeyX",54,"X",88,"VK_X",e,e],[0,34,"KeyY",55,"Y",89,"VK_Y",e,e],[0,35,"KeyZ",56,"Z",90,"VK_Z",e,e],[0,36,"Digit1",22,"1",49,"VK_1",e,e],[0,37,"Digit2",23,"2",50,"VK_2",e,e],[0,38,"Digit3",24,"3",51,"VK_3",e,e],[0,39,"Digit4",25,"4",52,"VK_4",e,e],[0,40,"Digit5",26,"5",53,"VK_5",e,e],[0,41,"Digit6",27,"6",54,"VK_6",e,e],[0,42,"Digit7",28,"7",55,"VK_7",e,e],[0,43,"Digit8",29,"8",56,"VK_8",e,e],[0,44,"Digit9",30,"9",57,"VK_9",e,e],[0,45,"Digit0",21,"0",48,"VK_0",e,e],[1,46,"Enter",3,"Enter",13,"VK_RETURN",e,e],[1,47,"Escape",9,"Escape",27,"VK_ESCAPE",e,e],[1,48,"Backspace",1,"Backspace",8,"VK_BACK",e,e],[1,49,"Tab",2,"Tab",9,"VK_TAB",e,e],[1,50,"Space",10,"Space",32,"VK_SPACE",e,e],[0,51,"Minus",88,"-",189,"VK_OEM_MINUS","-","OEM_MINUS"],[0,52,"Equal",86,"=",187,"VK_OEM_PLUS","=","OEM_PLUS"],[0,53,"BracketLeft",92,"[",219,"VK_OEM_4","[","OEM_4"],[0,54,"BracketRight",94,"]",221,"VK_OEM_6","]","OEM_6"],[0,55,"Backslash",93,"\\",220,"VK_OEM_5","\\","OEM_5"],[0,56,"IntlHash",0,e,0,e,e,e],[0,57,"Semicolon",85,";",186,"VK_OEM_1",";","OEM_1"],[0,58,"Quote",95,"'",222,"VK_OEM_7","'","OEM_7"],[0,59,"Backquote",91,"`",192,"VK_OEM_3","`","OEM_3"],[0,60,"Comma",87,",",188,"VK_OEM_COMMA",",","OEM_COMMA"],[0,61,"Period",89,".",190,"VK_OEM_PERIOD",".","OEM_PERIOD"],[0,62,"Slash",90,"/",191,"VK_OEM_2","/","OEM_2"],[1,63,"CapsLock",8,"CapsLock",20,"VK_CAPITAL",e,e],[1,64,"F1",59,"F1",112,"VK_F1",e,e],[1,65,"F2",60,"F2",113,"VK_F2",e,e],[1,66,"F3",61,"F3",114,"VK_F3",e,e],[1,67,"F4",62,"F4",115,"VK_F4",e,e],[1,68,"F5",63,"F5",116,"VK_F5",e,e],[1,69,"F6",64,"F6",117,"VK_F6",e,e],[1,70,"F7",65,"F7",118,"VK_F7",e,e],[1,71,"F8",66,"F8",119,"VK_F8",e,e],[1,72,"F9",67,"F9",120,"VK_F9",e,e],[1,73,"F10",68,"F10",121,"VK_F10",e,e],[1,74,"F11",69,"F11",122,"VK_F11",e,e],[1,75,"F12",70,"F12",123,"VK_F12",e,e],[1,76,"PrintScreen",0,e,0,e,e,e],[1,77,"ScrollLock",84,"ScrollLock",145,"VK_SCROLL",e,e],[1,78,"Pause",7,"PauseBreak",19,"VK_PAUSE",e,e],[1,79,"Insert",19,"Insert",45,"VK_INSERT",e,e],[1,80,"Home",14,"Home",36,"VK_HOME",e,e],[1,81,"PageUp",11,"PageUp",33,"VK_PRIOR",e,e],[1,82,"Delete",20,"Delete",46,"VK_DELETE",e,e],[1,83,"End",13,"End",35,"VK_END",e,e],[1,84,"PageDown",12,"PageDown",34,"VK_NEXT",e,e],[1,85,"ArrowRight",17,"RightArrow",39,"VK_RIGHT","Right",e],[1,86,"ArrowLeft",15,"LeftArrow",37,"VK_LEFT","Left",e],[1,87,"ArrowDown",18,"DownArrow",40,"VK_DOWN","Down",e],[1,88,"ArrowUp",16,"UpArrow",38,"VK_UP","Up",e],[1,89,"NumLock",83,"NumLock",144,"VK_NUMLOCK",e,e],[1,90,"NumpadDivide",113,"NumPad_Divide",111,"VK_DIVIDE",e,e],[1,91,"NumpadMultiply",108,"NumPad_Multiply",106,"VK_MULTIPLY",e,e],[1,92,"NumpadSubtract",111,"NumPad_Subtract",109,"VK_SUBTRACT",e,e],[1,93,"NumpadAdd",109,"NumPad_Add",107,"VK_ADD",e,e],[1,94,"NumpadEnter",3,e,0,e,e,e],[1,95,"Numpad1",99,"NumPad1",97,"VK_NUMPAD1",e,e],[1,96,"Numpad2",100,"NumPad2",98,"VK_NUMPAD2",e,e],[1,97,"Numpad3",101,"NumPad3",99,"VK_NUMPAD3",e,e],[1,98,"Numpad4",102,"NumPad4",100,"VK_NUMPAD4",e,e],[1,99,"Numpad5",103,"NumPad5",101,"VK_NUMPAD5",e,e],[1,100,"Numpad6",104,"NumPad6",102,"VK_NUMPAD6",e,e],[1,101,"Numpad7",105,"NumPad7",103,"VK_NUMPAD7",e,e],[1,102,"Numpad8",106,"NumPad8",104,"VK_NUMPAD8",e,e],[1,103,"Numpad9",107,"NumPad9",105,"VK_NUMPAD9",e,e],[1,104,"Numpad0",98,"NumPad0",96,"VK_NUMPAD0",e,e],[1,105,"NumpadDecimal",112,"NumPad_Decimal",110,"VK_DECIMAL",e,e],[0,106,"IntlBackslash",97,"OEM_102",226,"VK_OEM_102",e,e],[1,107,"ContextMenu",58,"ContextMenu",93,e,e,e],[1,108,"Power",0,e,0,e,e,e],[1,109,"NumpadEqual",0,e,0,e,e,e],[1,110,"F13",71,"F13",124,"VK_F13",e,e],[1,111,"F14",72,"F14",125,"VK_F14",e,e],[1,112,"F15",73,"F15",126,"VK_F15",e,e],[1,113,"F16",74,"F16",127,"VK_F16",e,e],[1,114,"F17",75,"F17",128,"VK_F17",e,e],[1,115,"F18",76,"F18",129,"VK_F18",e,e],[1,116,"F19",77,"F19",130,"VK_F19",e,e],[1,117,"F20",78,"F20",131,"VK_F20",e,e],[1,118,"F21",79,"F21",132,"VK_F21",e,e],[1,119,"F22",80,"F22",133,"VK_F22",e,e],[1,120,"F23",81,"F23",134,"VK_F23",e,e],[1,121,"F24",82,"F24",135,"VK_F24",e,e],[1,122,"Open",0,e,0,e,e,e],[1,123,"Help",0,e,0,e,e,e],[1,124,"Select",0,e,0,e,e,e],[1,125,"Again",0,e,0,e,e,e],[1,126,"Undo",0,e,0,e,e,e],[1,127,"Cut",0,e,0,e,e,e],[1,128,"Copy",0,e,0,e,e,e],[1,129,"Paste",0,e,0,e,e,e],[1,130,"Find",0,e,0,e,e,e],[1,131,"AudioVolumeMute",117,"AudioVolumeMute",173,"VK_VOLUME_MUTE",e,e],[1,132,"AudioVolumeUp",118,"AudioVolumeUp",175,"VK_VOLUME_UP",e,e],[1,133,"AudioVolumeDown",119,"AudioVolumeDown",174,"VK_VOLUME_DOWN",e,e],[1,134,"NumpadComma",110,"NumPad_Separator",108,"VK_SEPARATOR",e,e],[0,135,"IntlRo",115,"ABNT_C1",193,"VK_ABNT_C1",e,e],[1,136,"KanaMode",0,e,0,e,e,e],[0,137,"IntlYen",0,e,0,e,e,e],[1,138,"Convert",0,e,0,e,e,e],[1,139,"NonConvert",0,e,0,e,e,e],[1,140,"Lang1",0,e,0,e,e,e],[1,141,"Lang2",0,e,0,e,e,e],[1,142,"Lang3",0,e,0,e,e,e],[1,143,"Lang4",0,e,0,e,e,e],[1,144,"Lang5",0,e,0,e,e,e],[1,145,"Abort",0,e,0,e,e,e],[1,146,"Props",0,e,0,e,e,e],[1,147,"NumpadParenLeft",0,e,0,e,e,e],[1,148,"NumpadParenRight",0,e,0,e,e,e],[1,149,"NumpadBackspace",0,e,0,e,e,e],[1,150,"NumpadMemoryStore",0,e,0,e,e,e],[1,151,"NumpadMemoryRecall",0,e,0,e,e,e],[1,152,"NumpadMemoryClear",0,e,0,e,e,e],[1,153,"NumpadMemoryAdd",0,e,0,e,e,e],[1,154,"NumpadMemorySubtract",0,e,0,e,e,e],[1,155,"NumpadClear",131,"Clear",12,"VK_CLEAR",e,e],[1,156,"NumpadClearEntry",0,e,0,e,e,e],[1,0,e,5,"Ctrl",17,"VK_CONTROL",e,e],[1,0,e,4,"Shift",16,"VK_SHIFT",e,e],[1,0,e,6,"Alt",18,"VK_MENU",e,e],[1,0,e,57,"Meta",91,"VK_COMMAND",e,e],[1,157,"ControlLeft",5,e,0,"VK_LCONTROL",e,e],[1,158,"ShiftLeft",4,e,0,"VK_LSHIFT",e,e],[1,159,"AltLeft",6,e,0,"VK_LMENU",e,e],[1,160,"MetaLeft",57,e,0,"VK_LWIN",e,e],[1,161,"ControlRight",5,e,0,"VK_RCONTROL",e,e],[1,162,"ShiftRight",4,e,0,"VK_RSHIFT",e,e],[1,163,"AltRight",6,e,0,"VK_RMENU",e,e],[1,164,"MetaRight",57,e,0,"VK_RWIN",e,e],[1,165,"BrightnessUp",0,e,0,e,e,e],[1,166,"BrightnessDown",0,e,0,e,e,e],[1,167,"MediaPlay",0,e,0,e,e,e],[1,168,"MediaRecord",0,e,0,e,e,e],[1,169,"MediaFastForward",0,e,0,e,e,e],[1,170,"MediaRewind",0,e,0,e,e,e],[1,171,"MediaTrackNext",124,"MediaTrackNext",176,"VK_MEDIA_NEXT_TRACK",e,e],[1,172,"MediaTrackPrevious",125,"MediaTrackPrevious",177,"VK_MEDIA_PREV_TRACK",e,e],[1,173,"MediaStop",126,"MediaStop",178,"VK_MEDIA_STOP",e,e],[1,174,"Eject",0,e,0,e,e,e],[1,175,"MediaPlayPause",127,"MediaPlayPause",179,"VK_MEDIA_PLAY_PAUSE",e,e],[1,176,"MediaSelect",128,"LaunchMediaPlayer",181,"VK_MEDIA_LAUNCH_MEDIA_SELECT",e,e],[1,177,"LaunchMail",129,"LaunchMail",180,"VK_MEDIA_LAUNCH_MAIL",e,e],[1,178,"LaunchApp2",130,"LaunchApp2",183,"VK_MEDIA_LAUNCH_APP2",e,e],[1,179,"LaunchApp1",0,e,0,"VK_MEDIA_LAUNCH_APP1",e,e],[1,180,"SelectTask",0,e,0,e,e,e],[1,181,"LaunchScreenSaver",0,e,0,e,e,e],[1,182,"BrowserSearch",120,"BrowserSearch",170,"VK_BROWSER_SEARCH",e,e],[1,183,"BrowserHome",121,"BrowserHome",172,"VK_BROWSER_HOME",e,e],[1,184,"BrowserBack",122,"BrowserBack",166,"VK_BROWSER_BACK",e,e],[1,185,"BrowserForward",123,"BrowserForward",167,"VK_BROWSER_FORWARD",e,e],[1,186,"BrowserStop",0,e,0,"VK_BROWSER_STOP",e,e],[1,187,"BrowserRefresh",0,e,0,"VK_BROWSER_REFRESH",e,e],[1,188,"BrowserFavorites",0,e,0,"VK_BROWSER_FAVORITES",e,e],[1,189,"ZoomToggle",0,e,0,e,e,e],[1,190,"MailReply",0,e,0,e,e,e],[1,191,"MailForward",0,e,0,e,e,e],[1,192,"MailSend",0,e,0,e,e,e],[1,0,e,114,"KeyInComposition",229,e,e,e],[1,0,e,116,"ABNT_C2",194,"VK_ABNT_C2",e,e],[1,0,e,96,"OEM_8",223,"VK_OEM_8",e,e],[1,0,e,0,e,0,"VK_KANA",e,e],[1,0,e,0,e,0,"VK_HANGUL",e,e],[1,0,e,0,e,0,"VK_JUNJA",e,e],[1,0,e,0,e,0,"VK_FINAL",e,e],[1,0,e,0,e,0,"VK_HANJA",e,e],[1,0,e,0,e,0,"VK_KANJI",e,e],[1,0,e,0,e,0,"VK_CONVERT",e,e],[1,0,e,0,e,0,"VK_NONCONVERT",e,e],[1,0,e,0,e,0,"VK_ACCEPT",e,e],[1,0,e,0,e,0,"VK_MODECHANGE",e,e],[1,0,e,0,e,0,"VK_SELECT",e,e],[1,0,e,0,e,0,"VK_PRINT",e,e],[1,0,e,0,e,0,"VK_EXECUTE",e,e],[1,0,e,0,e,0,"VK_SNAPSHOT",e,e],[1,0,e,0,e,0,"VK_HELP",e,e],[1,0,e,0,e,0,"VK_APPS",e,e],[1,0,e,0,e,0,"VK_PROCESSKEY",e,e],[1,0,e,0,e,0,"VK_PACKET",e,e],[1,0,e,0,e,0,"VK_DBE_SBCSCHAR",e,e],[1,0,e,0,e,0,"VK_DBE_DBCSCHAR",e,e],[1,0,e,0,e,0,"VK_ATTN",e,e],[1,0,e,0,e,0,"VK_CRSEL",e,e],[1,0,e,0,e,0,"VK_EXSEL",e,e],[1,0,e,0,e,0,"VK_EREOF",e,e],[1,0,e,0,e,0,"VK_PLAY",e,e],[1,0,e,0,e,0,"VK_ZOOM",e,e],[1,0,e,0,e,0,"VK_NONAME",e,e],[1,0,e,0,e,0,"VK_PA1",e,e],[1,0,e,0,e,0,"VK_OEM_CLEAR",e,e]],i=[],n=[];for(const m of t){const[e,t,f,p,_,v,b,C,w]=m;if(n[t]||(n[t]=!0,h[t]=f,d[f]=t,c[f.toLowerCase()]=t,e&&(u[t]=p,0!==p&&3!==p&&5!==p&&4!==p&&6!==p&&57!==p&&(g[p]=t))),!i[p]){if(i[p]=!0,!_)throw new Error("String representation missing for key code ".concat(p," around scan code ").concat(f));o.define(p,_),s.define(p,C||_),r.define(p,w||C||_)}v&&(a[v]=p),b&&(l[b]=p)}g[3]=46}(),function(e){e.toString=function(e){return o.keyCodeToStr(e)},e.fromString=function(e){return o.strToKeyCode(e)},e.toUserSettingsUS=function(e){return s.keyCodeToStr(e)},e.toUserSettingsGeneral=function(e){return r.keyCodeToStr(e)},e.fromUserSettings=function(e){return s.strToKeyCode(e)||r.strToKeyCode(e)},e.toElectronAccelerator=function(e){if(e>=98&&e<=113)return null;switch(e){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return o.keyCodeToStr(e)}}(m||(m={}))},87818:(e,t,i)=>{i.d(t,{X4:()=>r,jC:()=>a,r6:()=>l,xo:()=>s});var n=i(71721);class o{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;this.modifierLabels=[null],this.modifierLabels[2]=e,this.modifierLabels[1]=t,this.modifierLabels[3]=i}toLabel(e,t,i){if(0===t.length)return null;const n=[];for(let o=0,s=t.length;o{i.d(t,{$M:()=>r,Z9:()=>o,aZ:()=>l,f1:()=>h});var n=i(85108);function o(e,t){if("number"===typeof e){if(0===e)return null;const i=(65535&e)>>>0,n=(4294901760&e)>>>16;return new a(0!==n?[s(i,t),s(n,t)]:[s(i,t)])}{const i=[];for(let n=0;n{i.d(t,{o:()=>n});class n{constructor(e){this.executor=e,this._didRun=!1}get value(){if(!this._didRun)try{this._value=this.executor()}catch(e){this._error=e}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}},89599:(e,t,i)=>{i.d(t,{B9:()=>c,F8:()=>u,JT:()=>f,Jz:()=>v,L6:()=>_,Nq:()=>a,OF:()=>g,SL:()=>m,Wf:()=>d,XK:()=>p,b2:()=>b,dk:()=>h,wi:()=>r});var n=i(75937),o=i(36952);let s=null;function r(e){return null===s||void 0===s||s.trackDisposable(e),e}function a(e){null===s||void 0===s||s.markAsDisposed(e)}function l(e,t){null===s||void 0===s||s.setParent(e,t)}function h(e){return null===s||void 0===s||s.markAsSingleton(e),e}function d(e){return"function"===typeof e.dispose&&0===e.dispose.length}function c(e){if(o.$.is(e)){const i=[];for(const n of e)if(n)try{n.dispose()}catch(t){i.push(t)}if(1===i.length)throw i[0];if(i.length>1)throw new AggregateError(i,"Encountered errors while disposing of store");return Array.isArray(e)?[]:e}if(e)return e.dispose(),e}function u(){for(var e=arguments.length,t=new Array(e),i=0;ic(t)));return function(e,t){if(s)for(const i of e)s.setParent(i,t)}(t,n),n}function g(e){const t=r({dispose:(0,n.M)((()=>{a(t),e()}))});return t}class m{constructor(){this._toDispose=new Set,this._isDisposed=!1,r(this)}dispose(){this._isDisposed||(a(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(0!==this._toDispose.size)try{c(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return l(e,this),this._isDisposed?m.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}deleteAndLeak(e){e&&this._toDispose.has(e)&&(this._toDispose.delete(e),l(e,null))}}m.DISABLE_DISPOSED_WARNING=!1;class f{constructor(){this._store=new m,r(this),l(this._store,this)}dispose(){a(this),this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}}f.None=Object.freeze({dispose(){}});class p{constructor(){this._isDisposed=!1,r(this)}get value(){return this._isDisposed?void 0:this._value}set value(e){var t;this._isDisposed||e===this._value||(null===(t=this._value)||void 0===t||t.dispose(),e&&l(e,this),this._value=e)}clear(){this.value=void 0}dispose(){var e;this._isDisposed=!0,a(this),null===(e=this._value)||void 0===e||e.dispose(),this._value=void 0}}class _{constructor(e){this._disposable=e,this._counter=1}acquire(){return this._counter++,this}release(){return 0===--this._counter&&this._disposable.dispose(),this}}class v{constructor(e){this.object=e}dispose(){}}class b{constructor(){this._store=new Map,this._isDisposed=!1,r(this)}dispose(){a(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{c(this._store.values())}finally{this._store.clear()}}get(e){return this._store.get(e)}set(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];var n;this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),i||null===(n=this._store.get(e))||void 0===n||n.dispose(),this._store.set(e,t)}deleteAndDispose(e){var t;null===(t=this._store.get(e))||void 0===t||t.dispose(),this._store.delete(e)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}},44713:(e,t,i)=>{i.d(t,{S:()=>o});class n{constructor(e){this.element=e,this.next=n.Undefined,this.prev=n.Undefined}}n.Undefined=new n(void 0);class o{constructor(){this._first=n.Undefined,this._last=n.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===n.Undefined}clear(){let e=this._first;for(;e!==n.Undefined;){const t=e.next;e.prev=n.Undefined,e.next=n.Undefined,e=t}this._first=n.Undefined,this._last=n.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){const i=new n(e);if(this._first===n.Undefined)this._first=i,this._last=i;else if(t){const e=this._last;this._last=i,i.prev=e,e.next=i}else{const e=this._first;this._first=i,i.next=e,e.prev=i}this._size+=1;let o=!1;return()=>{o||(o=!0,this._remove(i))}}shift(){if(this._first!==n.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==n.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==n.Undefined&&e.next!==n.Undefined){const t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===n.Undefined&&e.next===n.Undefined?(this._first=n.Undefined,this._last=n.Undefined):e.next===n.Undefined?(this._last=this._last.prev,this._last.next=n.Undefined):e.prev===n.Undefined&&(this._first=this._first.next,this._first.prev=n.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==n.Undefined;)yield e.element,e=e.next}}},65549:(e,t,i)=>{var n,o;i.d(t,{Y9:()=>r,YQ:()=>h,ri:()=>d,z6:()=>l});class s{constructor(e,t){this.uri=e,this.value=t}}class r{constructor(e,t){if(this[n]="ResourceMap",e instanceof r)this.map=new Map(e.map),this.toKey=null!==t&&void 0!==t?t:r.defaultToKey;else if(function(e){return Array.isArray(e)}(e)){this.map=new Map,this.toKey=null!==t&&void 0!==t?t:r.defaultToKey;for(const[t,i]of e)this.set(t,i)}else this.map=new Map,this.toKey=null!==e&&void 0!==e?e:r.defaultToKey}set(e,t){return this.map.set(this.toKey(e),new s(e,t)),this}get(e){var t;return null===(t=this.map.get(this.toKey(e)))||void 0===t?void 0:t.value}has(e){return this.map.has(this.toKey(e))}get size(){return this.map.size}clear(){this.map.clear()}delete(e){return this.map.delete(this.toKey(e))}forEach(e,t){"undefined"!==typeof t&&(e=e.bind(t));for(const[i,n]of this.map)e(n.value,n.uri,this)}*values(){for(const e of this.map.values())yield e.value}*keys(){for(const e of this.map.values())yield e.uri}*entries(){for(const e of this.map.values())yield[e.uri,e.value]}*[(n=Symbol.toStringTag,Symbol.iterator)](){for(const[,e]of this.map)yield[e.uri,e.value]}}r.defaultToKey=e=>e.toString();class a{constructor(){this[o]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){var e;return null===(e=this._head)||void 0===e?void 0:e.value}get last(){var e;return null===(e=this._tail)||void 0===e?void 0:e.value}has(e){return this._map.has(e)}get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=this._map.get(e);if(i)return 0!==t&&this.touch(i,t),i.value}set(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=this._map.get(e);if(n)n.value=t,0!==i&&this.touch(n,i);else{switch(n={key:e,value:t,next:void 0,previous:void 0},i){case 0:case 2:default:this.addItemLast(n);break;case 1:this.addItemFirst(n)}this._map.set(e,n),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){const t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){const i=this._state;let n=this._head;for(;n;){if(t?e.bind(t)(n.value,n.key,this):e(n.value,n.key,this),this._state!==i)throw new Error("LinkedMap got modified during iteration.");n=n.next}}keys(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator]:()=>n,next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const e={value:i.key,done:!1};return i=i.next,e}return{value:void 0,done:!0}}};return n}values(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator]:()=>n,next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const e={value:i.value,done:!1};return i=i.next,e}return{value:void 0,done:!0}}};return n}entries(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator]:()=>n,next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const e={value:[i.key,i.value],done:!1};return i=i.next,e}return{value:void 0,done:!0}}};return n}[(o=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(0===e)return void this.clear();let t=this._head,i=this.size;for(;t&&i>e;)this._map.delete(t.key),t=t.next,i--;this._head=t,this._size=i,t&&(t.previous=void 0),this._state++}addItemFirst(e){if(this._head||this._tail){if(!this._head)throw new Error("Invalid list");e.next=this._head,this._head.previous=e}else this._tail=e;this._head=e,this._state++}addItemLast(e){if(this._head||this._tail){if(!this._tail)throw new Error("Invalid list");e.previous=this._tail,this._tail.next=e}else this._head=e;this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{const t=e.next,i=e.previous;if(!t||!i)throw new Error("Invalid list");t.previous=i,i.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(1===t||2===t)if(1===t){if(e===this._head)return;const t=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(t.previous=i,i.next=t),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(2===t){if(e===this._tail)return;const t=e.next,i=e.previous;e===this._head?(t.previous=void 0,this._head=t):(t.previous=i,i.next=t),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}toJSON(){const e=[];return this.forEach(((t,i)=>{e.push([i,t])})),e}fromJSON(e){this.clear();for(const[t,i]of e)this.set(t,i)}}class l extends a{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return super.get(e,t)}peek(e){return super.get(e,0)}set(e,t){return super.set(e,t,2),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}}class h{constructor(e){if(this._m1=new Map,this._m2=new Map,e)for(const[t,i]of e)this.set(t,i)}clear(){this._m1.clear(),this._m2.clear()}set(e,t){this._m1.set(e,t),this._m2.set(t,e)}get(e){return this._m1.get(e)}getKey(e){return this._m2.get(e)}delete(e){const t=this._m1.get(e);return void 0!==t&&(this._m1.delete(e),this._m2.delete(t),!0)}keys(){return this._m1.keys()}values(){return this._m1.values()}}class d{constructor(){this.map=new Map}add(e,t){let i=this.map.get(e);i||(i=new Set,this.map.set(e,i)),i.add(t)}delete(e,t){const i=this.map.get(e);i&&(i.delete(t),0===i.size&&this.map.delete(e))}forEach(e,t){const i=this.map.get(e);i&&i.forEach(t)}get(e){const t=this.map.get(e);return t||new Set}}},61423:(e,t,i)=>{i.d(t,{Pz:()=>s,Qc:()=>r});var n=i(12966),o=i(82682);function s(e){return JSON.stringify(e,a)}function r(e){let t=JSON.parse(e);return t=l(t),t}function a(e,t){return t instanceof RegExp?{$mid:2,source:t.source,flags:t.flags}:t}function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!e||t>200)return e;if("object"===typeof e){switch(e.$mid){case 1:return o.o.revive(e);case 2:return new RegExp(e.source,e.flags);case 17:return new Date(e.source)}if(e instanceof n.KN||e instanceof Uint8Array)return e;if(Array.isArray(e))for(let i=0;i{i.d(t,{v:()=>n});const n=Object.freeze({text:"text/plain",binary:"application/octet-stream",unknown:"application/unknown",markdown:"text/markdown",latex:"text/latex",uriList:"text/uri-list"})},33211:(e,t,i)=>{i.d(t,{Gi:()=>g,Gs:()=>d,WX:()=>c,lg:()=>n,xn:()=>h});var n,o=i(85108),s=i(21511),r=i(25085),a=i(82682),l=i(51169);function h(e,t){return a.o.isUri(e)?(0,r.qq)(e.scheme,t):(0,r.ok)(e,t+":")}function d(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;nh(e,t)))}!function(e){e.inMemory="inmemory",e.vscode="vscode",e.internal="private",e.walkThrough="walkThrough",e.walkThroughSnippet="walkThroughSnippet",e.http="http",e.https="https",e.file="file",e.mailto="mailto",e.untitled="untitled",e.data="data",e.command="command",e.vscodeRemote="vscode-remote",e.vscodeRemoteResource="vscode-remote-resource",e.vscodeManagedRemoteResource="vscode-managed-remote-resource",e.vscodeUserData="vscode-userdata",e.vscodeCustomEditor="vscode-custom-editor",e.vscodeNotebookCell="vscode-notebook-cell",e.vscodeNotebookCellMetadata="vscode-notebook-cell-metadata",e.vscodeNotebookCellOutput="vscode-notebook-cell-output",e.vscodeInteractiveInput="vscode-interactive-input",e.vscodeSettings="vscode-settings",e.vscodeWorkspaceTrust="vscode-workspace-trust",e.vscodeTerminal="vscode-terminal",e.vscodeChatCodeBlock="vscode-chat-code-block",e.vscodeChatSesssion="vscode-chat-editor",e.webviewPanel="webview-panel",e.vscodeWebview="vscode-webview",e.extension="extension",e.vscodeFileResource="vscode-file",e.tmp="tmp",e.vsls="vsls",e.vscodeSourceControl="vscode-scm",e.codeSetting="code-setting"}(n||(n={}));const c=new class{constructor(){this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema="http",this._delegate=null,this._serverRootPath="/"}setPreferredWebSchema(e){this._preferredWebSchema=e}get _remoteResourcesPath(){return l.KR.join(this._serverRootPath,n.vscodeRemoteResource)}rewrite(e){if(this._delegate)try{return this._delegate(e)}catch(d){return o.dL(d),e}const t=e.authority;let i=this._hosts[t];i&&-1!==i.indexOf(":")&&-1===i.indexOf("[")&&(i="[".concat(i,"]"));const r=this._ports[t],l=this._connectionTokens[t];let h="path=".concat(encodeURIComponent(e.path));return"string"===typeof l&&(h+="&".concat("tkn","=").concat(encodeURIComponent(l))),a.o.from({scheme:s.$L?this._preferredWebSchema:n.vscodeRemoteResource,authority:"".concat(i,":").concat(r),path:this._remoteResourcesPath,query:h})}};class u{uriToBrowserUri(e){return e.scheme===n.vscodeRemote?c.rewrite(e):e.scheme!==n.file||!s.tY&&s.qB!=="".concat(n.vscodeFileResource,"://").concat(u.FALLBACK_AUTHORITY)?e:e.with({scheme:n.vscodeFileResource,authority:e.authority||u.FALLBACK_AUTHORITY,query:null,fragment:null})}}u.FALLBACK_AUTHORITY="vscode-app";const g=new u;var m;!function(e){const t=new Map([["1",{"Cross-Origin-Opener-Policy":"same-origin"}],["2",{"Cross-Origin-Embedder-Policy":"require-corp"}],["3",{"Cross-Origin-Opener-Policy":"same-origin","Cross-Origin-Embedder-Policy":"require-corp"}]]);e.CoopAndCoep=Object.freeze(t.get("3"));const i="vscode-coi";e.getHeadersFromQuery=function(e){let n;"string"===typeof e?n=new URL(e).searchParams:e instanceof URL?n=e.searchParams:a.o.isUri(e)&&(n=new URL(e.toString(!0)).searchParams);const o=null===n||void 0===n?void 0:n.get(i);if(o)return t.get(o)},e.addSearchParam=function(e,t,n){if(!globalThis.crossOriginIsolated)return;const o=t&&n?"3":n?"2":"1";e instanceof URLSearchParams?e.set(i,o):e[i]=o}}(m||(m={}))},63229:(e,t,i)=>{function n(e,t,i){return Math.min(Math.max(e,t),i)}i.d(t,{N:()=>s,nM:()=>o,uZ:()=>n});class o{constructor(){this._n=1,this._val=0}update(e){return this._val=this._val+(e-this._val)/this._n,this._n+=1,this._val}get value(){return this._val}}class s{constructor(e){this._n=0,this._val=0,this._values=[],this._index=0,this._sum=0,this._values=new Array(e),this._values.fill(0,0,e)}update(e){const t=this._values[this._index];return this._values[this._index]=e,this._index=(this._index+1)%this._values.length,this._sum-=t,this._sum+=e,this._n{i.d(t,{$E:()=>c,I8:()=>o,IU:()=>u,_A:()=>s,fS:()=>d,jB:()=>h,rs:()=>a});var n=i(63686);function o(e){if(!e||"object"!==typeof e)return e;if(e instanceof RegExp)return e;const t=Array.isArray(e)?[]:{};return Object.entries(e).forEach((e=>{let[i,n]=e;t[i]=n&&"object"===typeof n?o(n):n})),t}function s(e){if(!e||"object"!==typeof e)return e;const t=[e];for(;t.length>0;){const e=t.shift();Object.freeze(e);for(const i in e)if(r.call(e,i)){const o=e[i];"object"!==typeof o||Object.isFrozen(o)||(0,n.fU)(o)||t.push(o)}}return e}const r=Object.prototype.hasOwnProperty;function a(e,t){return l(e,t,new Set)}function l(e,t,i){if((0,n.Jp)(e))return e;const o=t(e);if("undefined"!==typeof o)return o;if(Array.isArray(e)){const n=[];for(const o of e)n.push(l(o,t,i));return n}if((0,n.Kn)(e)){if(i.has(e))throw new Error("Cannot clone recursive data-structure");i.add(e);const n={};for(const o in e)r.call(e,o)&&(n[o]=l(e[o],t,i));return i.delete(e),n}return e}function h(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return(0,n.Kn)(e)?((0,n.Kn)(t)&&Object.keys(t).forEach((o=>{o in e?i&&((0,n.Kn)(e[o])&&(0,n.Kn)(t[o])?h(e[o],t[o],i):e[o]=t[o]):e[o]=t[o]})),e):t}function d(e,t){if(e===t)return!0;if(null===e||void 0===e||null===t||void 0===t)return!1;if(typeof e!==typeof t)return!1;if("object"!==typeof e)return!1;if(Array.isArray(e)!==Array.isArray(t))return!1;let i,n;if(Array.isArray(e)){if(e.length!==t.length)return!1;for(i=0;ifunction(){const i=Array.prototype.slice.call(arguments,0);return t(e,i)},n={};for(const o of e)n[o]=i(o);return n}},59130:(e,t,i)=>{i.d(t,{EH:()=>h,nJ:()=>c,UV:()=>d,gp:()=>u,Dz:()=>m.Dz,nK:()=>o.nK,aK:()=>o.aK,bx:()=>m.bx,bk:()=>o.bk,Be:()=>o.Be,DN:()=>n.DN,rD:()=>m.rD,GN:()=>m.GN,aq:()=>m.aq,uh:()=>n.uh,jx:()=>m.DN,c8:()=>n.c8,PS:()=>n.PS,F_:()=>f});var n=i(52938),o=i(4542),s=i(39880),r=i(89599),a=i(77434),l=i(47665);function h(e){return new g(new a.IZ(void 0,void 0,e),e,void 0,void 0)}function d(e,t){var i;return new g(new a.IZ(e.owner,e.debugName,null!==(i=e.debugReferenceFn)&&void 0!==i?i:t),t,void 0,void 0)}function c(e,t){var i;return new g(new a.IZ(e.owner,e.debugName,null!==(i=e.debugReferenceFn)&&void 0!==i?i:t),t,e.createEmptyChangeSummary,e.handleChange)}function u(e){const t=new r.SL,i=d({owner:void 0,debugName:void 0,debugReferenceFn:e},(i=>{t.clear(),e(i,t)}));return(0,r.OF)((()=>{i.dispose(),t.dispose()}))}class g{get debugName(){var e;return null!==(e=this._debugNameData.getDebugName(this))&&void 0!==e?e:"(anonymous)"}constructor(e,t,i,n){var o,s;this._debugNameData=e,this._runFn=t,this.createChangeSummary=i,this._handleChange=n,this.state=2,this.updateCount=0,this.disposed=!1,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=null===(o=this.createChangeSummary)||void 0===o?void 0:o.call(this),null===(s=(0,l.jl)())||void 0===s||s.handleAutorunCreated(this),this._runIfNeeded(),(0,r.wi)(this)}dispose(){this.disposed=!0;for(const e of this.dependencies)e.removeObserver(this);this.dependencies.clear(),(0,r.Nq)(this)}_runIfNeeded(){var e,t,i;if(3===this.state)return;const n=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=n,this.state=3;const o=this.disposed;try{if(!o){null===(e=(0,l.jl)())||void 0===e||e.handleAutorunTriggered(this);const i=this.changeSummary;this.changeSummary=null===(t=this.createChangeSummary)||void 0===t?void 0:t.call(this),this._runFn(this,i)}}finally{o||null===(i=(0,l.jl)())||void 0===i||i.handleAutorunFinished(this);for(const e of this.dependenciesToBeRemoved)e.removeObserver(this);this.dependenciesToBeRemoved.clear()}}toString(){return"Autorun<".concat(this.debugName,">")}beginUpdate(){3===this.state&&(this.state=1),this.updateCount++}endUpdate(){if(1===this.updateCount)do{if(1===this.state){this.state=3;for(const e of this.dependencies)if(e.reportChanges(),2===this.state)break}this._runIfNeeded()}while(3!==this.state);this.updateCount--,(0,s.eZ)((()=>this.updateCount>=0))}handlePossibleChange(e){3===this.state&&this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)&&(this.state=1)}handleChange(e,t){if(this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){(!this._handleChange||this._handleChange({changedObservable:e,change:t,didChange:t=>t===e},this.changeSummary))&&(this.state=2)}}readObservable(e){if(this.disposed)return e.get();e.addObserver(this);const t=e.get();return this.dependencies.add(e),this.dependenciesToBeRemoved.delete(e),t}}!function(e){e.Observer=g}(h||(h={}));var m=i(90094);function f(e,t,i){return new Promise(((n,o)=>{let s=!0,r=!1;const a=e.map((e=>({isFinished:t(e),error:!!i&&i(e),state:e}))),l=h((e=>{const{isFinished:t,error:i,state:h}=a.read(e);(t||i)&&(s?r=!0:l.dispose(),i?o(!0===i?h:i):n(h))}));s=!1,r&&l.dispose()}))}},52938:(e,t,i)=>{i.d(t,{Bl:()=>f,DN:()=>w,Hr:()=>p,Jn:()=>d,MK:()=>h,Nc:()=>u,PS:()=>m,c8:()=>_,hm:()=>g,mT:()=>c,uh:()=>b});var n=i(77434),o=i(47665);let s,r,a,l;function h(e){s=e}function d(e){r=e}function c(e){a=e}class u{get TChange(){return null}reportChanges(){this.get()}read(e){return e?e.readObservable(this):this.get()}map(e,t){const i=void 0===t?void 0:e,o=void 0===t?e:t;return a({owner:i,debugName:()=>{const e=(0,n.$P)(o);if(void 0!==e)return e;const t=/^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1(?:\??)\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/.exec(o.toString());return t?"".concat(this.debugName,".").concat(t[2]):i?void 0:"".concat(this.debugName," (mapped)")}},(e=>o(this.read(e),e)))}recomputeInitiallyAndOnChange(e,t){return e.add(s(this,t)),this}}class g extends u{constructor(){super(...arguments),this.observers=new Set}addObserver(e){const t=this.observers.size;this.observers.add(e),0===t&&this.onFirstObserverAdded()}removeObserver(e){this.observers.delete(e)&&0===this.observers.size&&this.onLastObserverRemoved()}onFirstObserverAdded(){}onLastObserverRemoved(){}}function m(e,t){const i=new v(e,t);try{e(i)}finally{i.finish()}}function f(e){if(l)e(l);else{const t=new v(e,void 0);l=t;try{e(t)}finally{t.finish(),l=void 0}}}async function p(e,t){const i=new v(e,t);try{await e(i)}finally{i.finish()}}function _(e,t,i){e?t(e):m(t,i)}class v{constructor(e,t){var i;this._fn=e,this._getDebugName=t,this.updatingObservers=[],null===(i=(0,o.jl)())||void 0===i||i.handleBeginTransaction(this)}getDebugName(){return this._getDebugName?this._getDebugName():(0,n.$P)(this._fn)}updateObserver(e,t){this.updatingObservers.push({observer:e,observable:t}),e.beginUpdate(t)}finish(){var e;const t=this.updatingObservers;for(let i=0;i{}),(()=>"Setting ".concat(this.debugName))));try{const s=this._value;this._setValue(e),null===(n=(0,o.jl)())||void 0===n||n.handleObservableChanged(this,{oldValue:s,newValue:e,change:i,didChange:!0,hadValue:!0});for(const e of this.observers)t.updateObserver(e,this),e.handleChange(this,i)}finally{s&&s.finish()}}toString(){return"".concat(this.debugName,": ").concat(this._value)}_setValue(e){this._value=e}}function w(e,t){return"string"===typeof e?new y(void 0,e,t):new y(e,void 0,t)}class y extends C{_setValue(e){this._value!==e&&(this._value&&this._value.dispose(),this._value=e)}dispose(){var e;null===(e=this._value)||void 0===e||e.dispose()}}},77434:(e,t,i)=>{i.d(t,{$P:()=>l,IZ:()=>n});class n{constructor(e,t,i){this.owner=e,this.debugNameSource=t,this.referenceFn=i}getDebugName(e){return function(e,t){var i;const n=s.get(e);if(n)return n;const h=function(e,t){const i=s.get(e);if(i)return i;const n=t.owner?function(e){var t;const i=a.get(e);if(i)return i;const n=function(e){const t=e.constructor;if(t)return t.name;return"Object"}(e);let o=null!==(t=r.get(n))&&void 0!==t?t:0;o++,r.set(n,o);const s=1===o?n:"".concat(n,"#").concat(o);return a.set(e,s),s}(t.owner)+".":"";let o;const h=t.debugNameSource;if(void 0!==h){if("function"!==typeof h)return n+h;if(o=h(),void 0!==o)return n+o}const d=t.referenceFn;if(void 0!==d&&(o=l(d),void 0!==o))return n+o;if(void 0!==t.owner){const i=function(e,t){for(const i in e)if(e[i]===t)return i;return}(t.owner,e);if(void 0!==i)return n+i}return}(e,t);if(h){let t=null!==(i=o.get(h))&&void 0!==i?i:0;t++,o.set(h,t);const n=1===t?h:"".concat(h,"#").concat(t);return s.set(e,n),n}return}(e,this)}}const o=new Map,s=new WeakMap;const r=new Map,a=new WeakMap;function l(e){const t=e.toString(),i=/\/\*\*\s*@description\s*([^*]*)\*\//.exec(t),n=i?i[1]:void 0;return null===n||void 0===n?void 0:n.trim()}},4542:(e,t,i)=>{i.d(t,{Be:()=>u,aK:()=>c,bk:()=>d,kA:()=>g,nK:()=>h});var n=i(39880),o=i(89599),s=i(52938),r=i(77434),a=i(47665);const l=(e,t)=>e===t;function h(e,t){return void 0!==t?new m(new r.IZ(e,void 0,t),t,void 0,void 0,void 0,l):new m(new r.IZ(void 0,void 0,e),e,void 0,void 0,void 0,l)}function d(e,t){var i;return new m(new r.IZ(e.owner,e.debugName,e.debugReferenceFn),t,void 0,void 0,e.onLastObserverRemoved,null!==(i=e.equalityComparer)&&void 0!==i?i:l)}function c(e,t){var i;return new m(new r.IZ(e.owner,e.debugName,void 0),t,e.createEmptyChangeSummary,e.handleChange,void 0,null!==(i=e.equalityComparer)&&void 0!==i?i:l)}function u(e,t){let i,n;void 0===t?(i=e,n=void 0):(n=e,i=t);const s=new o.SL;return new m(new r.IZ(n,void 0,i),(e=>(s.clear(),i(e,s))),void 0,void 0,(()=>s.dispose()),l)}function g(e,t){let i,n;void 0===t?(i=e,n=void 0):(n=e,i=t);const s=new o.SL;return new m(new r.IZ(n,void 0,i),(e=>{s.clear();const t=i(e);return t&&s.add(t),t}),void 0,void 0,(()=>s.dispose()),l)}(0,s.mT)(d);class m extends s.hm{get debugName(){var e;return null!==(e=this._debugNameData.getDebugName(this))&&void 0!==e?e:"(anonymous)"}constructor(e,t,i,n){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,s=arguments.length>5?arguments[5]:void 0;var r,l;super(),this._debugNameData=e,this._computeFn=t,this.createChangeSummary=i,this._handleChange=n,this._handleLastObserverRemoved=o,this._equalityComparator=s,this.state=0,this.value=void 0,this.updateCount=0,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=void 0,this.changeSummary=null===(r=this.createChangeSummary)||void 0===r?void 0:r.call(this),null===(l=(0,a.jl)())||void 0===l||l.handleDerivedCreated(this)}onLastObserverRemoved(){var e;this.state=0,this.value=void 0;for(const t of this.dependencies)t.removeObserver(this);this.dependencies.clear(),null===(e=this._handleLastObserverRemoved)||void 0===e||e.call(this)}get(){var e;if(0===this.observers.size){const t=this._computeFn(this,null===(e=this.createChangeSummary)||void 0===e?void 0:e.call(this));return this.onLastObserverRemoved(),t}do{if(1===this.state)for(const e of this.dependencies)if(e.reportChanges(),2===this.state)break;1===this.state&&(this.state=3),this._recomputeIfNeeded()}while(3!==this.state);return this.value}_recomputeIfNeeded(){var e,t;if(3===this.state)return;const i=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=i;const n=0!==this.state,o=this.value;this.state=3;const s=this.changeSummary;this.changeSummary=null===(e=this.createChangeSummary)||void 0===e?void 0:e.call(this);try{this.value=this._computeFn(this,s)}finally{for(const e of this.dependenciesToBeRemoved)e.removeObserver(this);this.dependenciesToBeRemoved.clear()}const r=n&&!this._equalityComparator(o,this.value);if(null===(t=(0,a.jl)())||void 0===t||t.handleDerivedRecomputed(this,{oldValue:o,newValue:this.value,change:void 0,didChange:r,hadValue:n}),r)for(const a of this.observers)a.handleChange(this,void 0)}toString(){return"LazyDerived<".concat(this.debugName,">")}beginUpdate(e){this.updateCount++;const t=1===this.updateCount;if(3===this.state&&(this.state=1,!t))for(const i of this.observers)i.handlePossibleChange(this);if(t)for(const i of this.observers)i.beginUpdate(this)}endUpdate(e){if(this.updateCount--,0===this.updateCount){const e=[...this.observers];for(const t of e)t.endUpdate(this)}(0,n.eZ)((()=>this.updateCount>=0))}handlePossibleChange(e){if(3===this.state&&this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){this.state=1;for(const e of this.observers)e.handlePossibleChange(this)}}handleChange(e,t){if(this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){const i=!this._handleChange||this._handleChange({changedObservable:e,change:t,didChange:t=>t===e},this.changeSummary),n=3===this.state;if(i&&(1===this.state||n)&&(this.state=2,n))for(const e of this.observers)e.handlePossibleChange(this)}}readObservable(e){e.addObserver(this);const t=e.get();return this.dependencies.add(e),this.dependenciesToBeRemoved.delete(e),t}addObserver(e){const t=!this.observers.has(e)&&this.updateCount>0;super.addObserver(e),t&&e.beginUpdate(this)}removeObserver(e){const t=this.observers.has(e)&&this.updateCount>0;super.removeObserver(e),t&&e.endUpdate(this)}}},47665:(e,t,i)=>{let n;function o(e){n=e}function s(){return n}i.d(t,{EK:()=>o,Qy:()=>r,jl:()=>s});class r{constructor(){this.indentation=0,this.changedObservablesSets=new WeakMap}textToConsoleArgs(e){return function(e){const t=new Array,i=[];let n="";function o(e){if("length"in e)for(const t of e)t&&o(t);else"text"in e?(n+="%c".concat(e.text),t.push(e.style),e.data&&i.push(...e.data)):"data"in e&&i.push(...e.data)}o(e);const s=[n,...t];return s.push(...i),s}([a(c("| ",this.indentation)),e])}formatInfo(e){return e.hadValue?e.didChange?[a(" "),h(d(e.oldValue,70),{color:"red",strikeThrough:!0}),a(" "),h(d(e.newValue,60),{color:"green"})]:[a(" (unchanged)")]:[a(" "),h(d(e.newValue,60),{color:"green"}),a(" (initial)")]}handleObservableChanged(e,t){console.log(...this.textToConsoleArgs([l("observable value changed"),h(e.debugName,{color:"BlueViolet"}),...this.formatInfo(t)]))}formatChanges(e){if(0!==e.size)return h(" (changed deps: "+[...e].map((e=>e.debugName)).join(", ")+")",{color:"gray"})}handleDerivedCreated(e){const t=e.handleChange;this.changedObservablesSets.set(e,new Set),e.handleChange=(i,n)=>(this.changedObservablesSets.get(e).add(i),t.apply(e,[i,n]))}handleDerivedRecomputed(e,t){const i=this.changedObservablesSets.get(e);console.log(...this.textToConsoleArgs([l("derived recomputed"),h(e.debugName,{color:"BlueViolet"}),...this.formatInfo(t),this.formatChanges(i),{data:[{fn:e._computeFn}]}])),i.clear()}handleFromEventObservableTriggered(e,t){console.log(...this.textToConsoleArgs([l("observable from event triggered"),h(e.debugName,{color:"BlueViolet"}),...this.formatInfo(t),{data:[{fn:e._getValue}]}]))}handleAutorunCreated(e){const t=e.handleChange;this.changedObservablesSets.set(e,new Set),e.handleChange=(i,n)=>(this.changedObservablesSets.get(e).add(i),t.apply(e,[i,n]))}handleAutorunTriggered(e){const t=this.changedObservablesSets.get(e);console.log(...this.textToConsoleArgs([l("autorun"),h(e.debugName,{color:"BlueViolet"}),this.formatChanges(t),{data:[{fn:e._runFn}]}])),t.clear(),this.indentation++}handleAutorunFinished(e){this.indentation--}handleBeginTransaction(e){let t=e.getDebugName();void 0===t&&(t=""),console.log(...this.textToConsoleArgs([l("transaction"),h(t,{color:"BlueViolet"}),{data:[{fn:e._fn}]}])),this.indentation++}handleEndTransaction(){this.indentation--}}function a(e){return h(e,{color:"black"})}function l(e){return h(function(e,t){for(;e.length1&&void 0!==arguments[1]?arguments[1]:{color:"black"};const i={color:t.color};return t.strikeThrough&&(i["text-decoration"]="line-through"),t.bold&&(i["font-weight"]="bold"),{text:e,style:(n=i,Object.entries(n).reduce(((e,t)=>{let[i,n]=t;return"".concat(e).concat(i,":").concat(n,";")}),""))};var n}function d(e,t){switch(typeof e){case"number":default:return""+e;case"string":return e.length+2<=t?'"'.concat(e,'"'):'"'.concat(e.substr(0,t-7),'"+...');case"boolean":return e?"true":"false";case"undefined":return"undefined";case"object":return null===e?"null":Array.isArray(e)?function(e,t){let i="[ ",n=!0;for(const o of e){if(n||(i+=", "),i.length-5>t){i+="...";break}n=!1,i+="".concat(d(o,t-i.length))}return i+=" ]",i}(e,t):function(e,t){let i="{ ",n=!0;for(const[o,s]of Object.entries(e)){if(n||(i+=", "),i.length-5>t){i+="...";break}n=!1,i+="".concat(o,": ").concat(d(s,t-i.length))}return i+=" }",i}(e,t);case"symbol":return e.toString();case"function":return"[[Function".concat(e.name?" "+e.name:"","]]")}}function c(e,t){let i="";for(let n=1;n<=t;n++)i+=e;return i}},90094:(e,t,i)=>{i.d(t,{DN:()=>p,Dz:()=>l,GN:()=>m,Zg:()=>b,aq:()=>u,bx:()=>v,rD:()=>d});var n=i(89599),o=i(52938),s=i(77434),r=i(4542),a=i(47665);function l(e){return new h(e)}class h extends o.Nc{constructor(e){super(),this.value=e}get debugName(){return this.toString()}get(){return this.value}addObserver(e){}removeObserver(e){}toString(){return"Const: ".concat(this.value)}}function d(e,t){return new c(e,t)}class c extends o.hm{constructor(e,t){super(),this.event=e,this._getValue=t,this.hasValue=!1,this.handleEvent=e=>{var t;const i=this._getValue(e),n=this.value,s=!this.hasValue||n!==i;let r=!1;s&&(this.value=i,this.hasValue&&(r=!0,(0,o.c8)(c.globalTransaction,(e=>{var t;null===(t=(0,a.jl)())||void 0===t||t.handleFromEventObservableTriggered(this,{oldValue:n,newValue:i,change:void 0,didChange:s,hadValue:this.hasValue});for(const i of this.observers)e.updateObserver(i,this),i.handleChange(this,void 0)}),(()=>{const e=this.getDebugName();return"Event fired"+(e?": ".concat(e):"")}))),this.hasValue=!0),r||null===(t=(0,a.jl)())||void 0===t||t.handleFromEventObservableTriggered(this,{oldValue:n,newValue:i,change:void 0,didChange:s,hadValue:this.hasValue})}}getDebugName(){return(0,s.$P)(this._getValue)}get debugName(){const e=this.getDebugName();return"From Event"+(e?": ".concat(e):"")}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0,this.hasValue=!1,this.value=void 0}get(){return this.subscription?(this.hasValue||this.handleEvent(void 0),this.value):this._getValue(void 0)}}function u(e,t){return new g(e,t)}!function(e){e.Observer=c,e.batchEventsGlobally=function(e,t){let i=!1;void 0===c.globalTransaction&&(c.globalTransaction=e,i=!0);try{t()}finally{i&&(c.globalTransaction=void 0)}}}(d||(d={}));class g extends o.hm{constructor(e,t){super(),this.debugName=e,this.event=t,this.handleEvent=()=>{(0,o.PS)((e=>{for(const t of this.observers)e.updateObserver(t,this),t.handleChange(this,void 0)}),(()=>this.debugName))}}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0}get(){}}function m(e){return"string"===typeof e?new f(e):new f(void 0,e)}class f extends o.hm{get debugName(){var e;return null!==(e=new s.IZ(this._owner,this._debugName,void 0).getDebugName(this))&&void 0!==e?e:"Observable Signal"}constructor(e,t){super(),this._debugName=e,this._owner=t}trigger(e,t){if(e)for(const i of this.observers)e.updateObserver(i,this),i.handleChange(this,t);else(0,o.PS)((e=>{this.trigger(e,t)}),(()=>"Trigger signal ".concat(this.debugName)))}get(){}}function p(e,t){const i=new _(!0,t);return e.addObserver(i),t?t(e.get()):e.reportChanges(),(0,n.OF)((()=>{e.removeObserver(i)}))}(0,o.Jn)((function(e){const t=new _(!1,void 0);return e.addObserver(t),(0,n.OF)((()=>{e.removeObserver(t)}))})),(0,o.MK)(p);class _{constructor(e,t){this._forceRecompute=e,this._handleValue=t,this._counter=0}beginUpdate(e){this._counter++}endUpdate(e){this._counter--,0===this._counter&&this._forceRecompute&&(this._handleValue?this._handleValue(e.get()):e.reportChanges())}handlePossibleChange(e){}handleChange(e,t){}}function v(e){let t;return(0,r.nK)((i=>(t=e(i,t),t)))}function b(e,t,i,n){let o=new C(i,n);return(0,r.bk)({debugReferenceFn:i,owner:e,onLastObserverRemoved:()=>{o.dispose(),o=new C(i)}},(e=>(o.setItems(t.read(e)),o.getItems())))}class C{constructor(e,t){this._map=e,this._keySelector=t,this._cache=new Map,this._items=[]}dispose(){this._cache.forEach((e=>e.store.dispose())),this._cache.clear()}setItems(e){const t=[],i=new Set(this._cache.keys());for(const o of e){const e=this._keySelector?this._keySelector(o):o;let s=this._cache.get(e);if(s)i.delete(e);else{const t=new n.SL;s={out:this._map(o,t),store:t},this._cache.set(e,s)}t.push(s.out)}for(const n of i){this._cache.get(n).store.dispose(),this._cache.delete(n)}this._items=t}getItems(){return this._items}}},51169:(e,t,i)=>{i.d(t,{DB:()=>L,DZ:()=>x,EZ:()=>N,Fv:()=>S,Gf:()=>k,KR:()=>y,Ku:()=>C,XX:()=>D,ir:()=>E});var n=i(17167);const o=65,s=97,r=90,a=122,l=46,h=47,d=92,c=58;class u extends Error{constructor(e,t,i){let n;"string"===typeof t&&0===t.indexOf("not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";const o=-1!==e.indexOf(".")?"property":"argument";let s='The "'.concat(e,'" ').concat(o," ").concat(n," of type ").concat(t);s+=". Received type ".concat(typeof i),super(s),this.code="ERR_INVALID_ARG_TYPE"}}function g(e,t){if("string"!==typeof e)throw new u(t,"string",e)}const m="win32"===n.Jv;function f(e){return e===h||e===d}function p(e){return e===h}function _(e){return e>=o&&e<=r||e>=s&&e<=a}function v(e,t,i,n){let o="",s=0,r=-1,a=0,d=0;for(let c=0;c<=e.length;++c){if(c2){const e=o.lastIndexOf(i);-1===e?(o="",s=0):(o=o.slice(0,e),s=o.length-1-o.lastIndexOf(i)),r=c,a=0;continue}if(0!==o.length){o="",s=0,r=c,a=0;continue}}t&&(o+=o.length>0?"".concat(i,".."):"..",s=2)}else o.length>0?o+="".concat(i).concat(e.slice(r+1,c)):o=e.slice(r+1,c),s=c-r-1;r=c,a=0}else d===l&&-1!==a?++a:a=-1}return o}function b(e,t){!function(e,t){if(null===e||"object"!==typeof e)throw new u(t,"Object",e)}(t,"pathObject");const i=t.dir||t.root,n=t.base||"".concat(t.name||"").concat(t.ext||"");return i?i===t.root?"".concat(i).concat(n):"".concat(i).concat(e).concat(n):n}const C={resolve(){let e="",t="",i=!1;for(let o=arguments.length-1;o>=-1;o--){let s;if(o>=0){if(s=o<0||arguments.length<=o?void 0:arguments[o],g(s,"path"),0===s.length)continue}else 0===e.length?s=n.Vj():(s={NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0,REACT_APP_BACKEND:"http://localhost:8765",REACT_APP_META_BACKEND:"undefined"}["=".concat(e)]||n.Vj(),(void 0===s||s.slice(0,2).toLowerCase()!==e.toLowerCase()&&s.charCodeAt(2)===d)&&(s="".concat(e,"\\")));const r=s.length;let a=0,l="",h=!1;const u=s.charCodeAt(0);if(1===r)f(u)&&(a=1,h=!0);else if(f(u))if(h=!0,f(s.charCodeAt(1))){let e=2,t=e;for(;e2&&f(s.charCodeAt(2))&&(h=!0,a=3));if(l.length>0)if(e.length>0){if(l.toLowerCase()!==e.toLowerCase())continue}else e=l;if(i){if(e.length>0)break}else if(t="".concat(s.slice(a),"\\").concat(t),i=h,h&&e.length>0)break}return t=v(t,!i,"\\",f),i?"".concat(e,"\\").concat(t):"".concat(e).concat(t)||"."},normalize(e){g(e,"path");const t=e.length;if(0===t)return".";let i,n=0,o=!1;const s=e.charCodeAt(0);if(1===t)return p(s)?"\\":e;if(f(s))if(o=!0,f(e.charCodeAt(1))){let o=2,s=o;for(;o2&&f(e.charCodeAt(2))&&(o=!0,n=3));let r=n0&&f(e.charCodeAt(t-1))&&(r+="\\"),void 0===i?o?"\\".concat(r):r:o?"".concat(i,"\\").concat(r):"".concat(i).concat(r)},isAbsolute(e){g(e,"path");const t=e.length;if(0===t)return!1;const i=e.charCodeAt(0);return f(i)||t>2&&_(i)&&e.charCodeAt(1)===c&&f(e.charCodeAt(2))},join(){if(0===arguments.length)return".";let e,t;for(let o=0;o0&&(void 0===e?e=t=i:e+="\\".concat(i))}if(void 0===e)return".";let i=!0,n=0;if("string"===typeof t&&f(t.charCodeAt(0))){++n;const e=t.length;e>1&&f(t.charCodeAt(1))&&(++n,e>2&&(f(t.charCodeAt(2))?++n:i=!1))}if(i){for(;n=2&&(e="\\".concat(e.slice(n)))}return C.normalize(e)},relative(e,t){if(g(e,"from"),g(t,"to"),e===t)return"";const i=C.resolve(e),n=C.resolve(t);if(i===n)return"";if((e=i.toLowerCase())===(t=n.toLowerCase()))return"";let o=0;for(;oo&&e.charCodeAt(s-1)===d;)s--;const r=s-o;let a=0;for(;aa&&t.charCodeAt(l-1)===d;)l--;const h=l-a,c=rc){if(t.charCodeAt(a+m)===d)return n.slice(a+m+1);if(2===m)return n.slice(a+m)}r>c&&(e.charCodeAt(o+m)===d?u=m:2===m&&(u=3)),-1===u&&(u=0)}let f="";for(m=o+u+1;m<=s;++m)m!==s&&e.charCodeAt(m)!==d||(f+=0===f.length?"..":"\\..");return a+=u,f.length>0?"".concat(f).concat(n.slice(a,l)):(n.charCodeAt(a)===d&&++a,n.slice(a,l))},toNamespacedPath(e){if("string"!==typeof e||0===e.length)return e;const t=C.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===d){if(t.charCodeAt(1)===d){const e=t.charCodeAt(2);if(63!==e&&e!==l)return"\\\\?\\UNC\\".concat(t.slice(2))}}else if(_(t.charCodeAt(0))&&t.charCodeAt(1)===c&&t.charCodeAt(2)===d)return"\\\\?\\".concat(t);return e},dirname(e){g(e,"path");const t=e.length;if(0===t)return".";let i=-1,n=0;const o=e.charCodeAt(0);if(1===t)return f(o)?e:".";if(f(o)){if(i=n=1,f(e.charCodeAt(1))){let o=2,s=o;for(;o2&&f(e.charCodeAt(2))?3:2,n=i);let s=-1,r=!0;for(let a=t-1;a>=n;--a)if(f(e.charCodeAt(a))){if(!r){s=a;break}}else r=!1;if(-1===s){if(-1===i)return".";s=i}return e.slice(0,s)},basename(e,t){void 0!==t&&g(t,"ext"),g(e,"path");let i,n=0,o=-1,s=!0;if(e.length>=2&&_(e.charCodeAt(0))&&e.charCodeAt(1)===c&&(n=2),void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let r=t.length-1,a=-1;for(i=e.length-1;i>=n;--i){const l=e.charCodeAt(i);if(f(l)){if(!s){n=i+1;break}}else-1===a&&(s=!1,a=i+1),r>=0&&(l===t.charCodeAt(r)?-1===--r&&(o=i):(r=-1,o=a))}return n===o?o=a:-1===o&&(o=e.length),e.slice(n,o)}for(i=e.length-1;i>=n;--i)if(f(e.charCodeAt(i))){if(!s){n=i+1;break}}else-1===o&&(s=!1,o=i+1);return-1===o?"":e.slice(n,o)},extname(e){g(e,"path");let t=0,i=-1,n=0,o=-1,s=!0,r=0;e.length>=2&&e.charCodeAt(1)===c&&_(e.charCodeAt(0))&&(t=n=2);for(let a=e.length-1;a>=t;--a){const t=e.charCodeAt(a);if(f(t)){if(!s){n=a+1;break}}else-1===o&&(s=!1,o=a+1),t===l?-1===i?i=a:1!==r&&(r=1):-1!==i&&(r=-1)}return-1===i||-1===o||0===r||1===r&&i===o-1&&i===n+1?"":e.slice(i,o)},format:b.bind(null,"\\"),parse(e){g(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const i=e.length;let n=0,o=e.charCodeAt(0);if(1===i)return f(o)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(f(o)){if(n=1,f(e.charCodeAt(1))){let t=2,o=t;for(;t0&&(t.root=e.slice(0,n));let s=-1,r=n,a=-1,h=!0,d=e.length-1,u=0;for(;d>=n;--d)if(o=e.charCodeAt(d),f(o)){if(!h){r=d+1;break}}else-1===a&&(h=!1,a=d+1),o===l?-1===s?s=d:1!==u&&(u=1):-1!==s&&(u=-1);return-1!==a&&(-1===s||0===u||1===u&&s===a-1&&s===r+1?t.base=t.name=e.slice(r,a):(t.name=e.slice(r,s),t.base=e.slice(r,a),t.ext=e.slice(s,a))),t.dir=r>0&&r!==n?e.slice(0,r-1):t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},w=(()=>{if(m){const e=/\\/g;return()=>{const t=n.Vj().replace(e,"/");return t.slice(t.indexOf("/"))}}return()=>n.Vj()})(),y={resolve(){let e="",t=!1;for(let i=arguments.length-1;i>=-1&&!t;i--){const n=i>=0?i<0||arguments.length<=i?void 0:arguments[i]:w();g(n,"path"),0!==n.length&&(e="".concat(n,"/").concat(e),t=n.charCodeAt(0)===h)}return e=v(e,!t,"/",p),t?"/".concat(e):e.length>0?e:"."},normalize(e){if(g(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===h,i=e.charCodeAt(e.length-1)===h;return 0===(e=v(e,!t,"/",p)).length?t?"/":i?"./":".":(i&&(e+="/"),t?"/".concat(e):e)},isAbsolute:e=>(g(e,"path"),e.length>0&&e.charCodeAt(0)===h),join(){if(0===arguments.length)return".";let e;for(let t=0;t0&&(void 0===e?e=i:e+="/".concat(i))}return void 0===e?".":y.normalize(e)},relative(e,t){if(g(e,"from"),g(t,"to"),e===t)return"";if((e=y.resolve(e))===(t=y.resolve(t)))return"";const i=e.length,n=i-1,o=t.length-1,s=ns){if(t.charCodeAt(1+a)===h)return t.slice(1+a+1);if(0===a)return t.slice(1+a)}else n>s&&(e.charCodeAt(1+a)===h?r=a:0===a&&(r=0));let l="";for(a=1+r+1;a<=i;++a)a!==i&&e.charCodeAt(a)!==h||(l+=0===l.length?"..":"/..");return"".concat(l).concat(t.slice(1+r))},toNamespacedPath:e=>e,dirname(e){if(g(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===h;let i=-1,n=!0;for(let o=e.length-1;o>=1;--o)if(e.charCodeAt(o)===h){if(!n){i=o;break}}else n=!1;return-1===i?t?"/":".":t&&1===i?"//":e.slice(0,i)},basename(e,t){void 0!==t&&g(t,"ext"),g(e,"path");let i,n=0,o=-1,s=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let r=t.length-1,a=-1;for(i=e.length-1;i>=0;--i){const l=e.charCodeAt(i);if(l===h){if(!s){n=i+1;break}}else-1===a&&(s=!1,a=i+1),r>=0&&(l===t.charCodeAt(r)?-1===--r&&(o=i):(r=-1,o=a))}return n===o?o=a:-1===o&&(o=e.length),e.slice(n,o)}for(i=e.length-1;i>=0;--i)if(e.charCodeAt(i)===h){if(!s){n=i+1;break}}else-1===o&&(s=!1,o=i+1);return-1===o?"":e.slice(n,o)},extname(e){g(e,"path");let t=-1,i=0,n=-1,o=!0,s=0;for(let r=e.length-1;r>=0;--r){const a=e.charCodeAt(r);if(a!==h)-1===n&&(o=!1,n=r+1),a===l?-1===t?t=r:1!==s&&(s=1):-1!==t&&(s=-1);else if(!o){i=r+1;break}}return-1===t||-1===n||0===s||1===s&&t===n-1&&t===i+1?"":e.slice(t,n)},format:b.bind(null,"/"),parse(e){g(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const i=e.charCodeAt(0)===h;let n;i?(t.root="/",n=1):n=0;let o=-1,s=0,r=-1,a=!0,d=e.length-1,c=0;for(;d>=n;--d){const t=e.charCodeAt(d);if(t!==h)-1===r&&(a=!1,r=d+1),t===l?-1===o?o=d:1!==c&&(c=1):-1!==o&&(c=-1);else if(!a){s=d+1;break}}if(-1!==r){const n=0===s&&i?1:s;-1===o||0===c||1===c&&o===r-1&&o===s+1?t.base=t.name=e.slice(n,r):(t.name=e.slice(n,o),t.base=e.slice(n,r),t.ext=e.slice(o,r))}return s>0?t.dir=e.slice(0,s-1):i&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};y.win32=C.win32=C,y.posix=C.posix=y;const S=m?C.normalize:y.normalize,L=m?C.resolve:y.resolve,k=m?C.relative:y.relative,D=m?C.dirname:y.dirname,N=m?C.basename:y.basename,x=m?C.extname:y.extname,E=m?C.sep:y.sep},21511:(e,t,i)=>{i.d(t,{$L:()=>T,Dt:()=>G,ED:()=>N,G6:()=>j,IJ:()=>E,OS:()=>z,dK:()=>P,dz:()=>x,fn:()=>B,gn:()=>A,i7:()=>K,qB:()=>M,r:()=>H,tY:()=>I,tq:()=>R,un:()=>q,vU:()=>U});var n,o,s=i(71721);const r="en";let a,l,h=!1,d=!1,c=!1,u=!1,g=!1,m=!1,f=!1,p=!1,_=!1,v=!1,b=r,C=null,w=null;const y=globalThis;let S;"undefined"!==typeof y.vscode&&"undefined"!==typeof y.vscode.process?S=y.vscode.process:"undefined"!==typeof process&&"string"===typeof(null===(n=null===process||void 0===process?void 0:process.versions)||void 0===n?void 0:n.node)&&(S=process);const L="string"===typeof(null===(o=null===S||void 0===S?void 0:S.versions)||void 0===o?void 0:o.electron),k=L&&"renderer"===(null===S||void 0===S?void 0:S.type);if("object"===typeof S){h="win32"===S.platform,d="darwin"===S.platform,c="linux"===S.platform,u=c&&!!S.env.SNAP&&!!S.env.SNAP_REVISION,f=L,_=!!S.env.CI||!!S.env.BUILD_ARTIFACTSTAGINGDIRECTORY,a=r,b=r;const e=S.env.VSCODE_NLS_CONFIG;if(e)try{const t=JSON.parse(e),i=t.availableLanguages["*"];a=t.locale,C=t.osLocale,b=i||r,w=t._translationsConfigFile}catch(Q){}g=!0}else if("object"!==typeof navigator||k)console.error("Unable to resolve platform.");else{l=navigator.userAgent,h=l.indexOf("Windows")>=0,d=l.indexOf("Macintosh")>=0,p=(l.indexOf("Macintosh")>=0||l.indexOf("iPad")>=0||l.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,c=l.indexOf("Linux")>=0,v=(null===l||void 0===l?void 0:l.indexOf("Mobi"))>=0,m=!0;a=s.aj(s.NC({key:"ensureLoaderPluginIsLoaded",comment:["{Locked}"]},"_"))||r,b=a,C=navigator.language}let D=0;d?D=1:h?D=3:c&&(D=2);const N=h,x=d,E=c,I=g,T=m,M=m&&"function"===typeof y.importScripts?y.origin:void 0,A=p,R=v,O=l,P=b,F="function"===typeof y.postMessage&&!y.importScripts,B=(()=>{if(F){const e=[];y.addEventListener("message",(t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let i=0,n=e.length;i{const n=++t;e.push({id:n,callback:i}),y.postMessage({vscodeScheduleAsyncWork:n},"*")}}return e=>setTimeout(e)})(),z=d||p?2:h?1:3;let V=!0,W=!1;function H(){if(!W){W=!0;const e=new Uint8Array(2);e[0]=1,e[1]=2;const t=new Uint16Array(e.buffer);V=513===t[0]}return V}const K=!!(O&&O.indexOf("Chrome")>=0),U=!!(O&&O.indexOf("Firefox")>=0),j=!!(!K&&O&&O.indexOf("Safari")>=0),q=!!(O&&O.indexOf("Edg/")>=0),G=!!(O&&O.indexOf("Android")>=0)},17167:(e,t,i)=>{i.d(t,{Jv:()=>l,OB:()=>a,Vj:()=>r});var n=i(21511);let o;const s=globalThis.vscode;if("undefined"!==typeof s&&"undefined"!==typeof s.process){const e=s.process;o={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd:()=>e.cwd()}}else o="undefined"!==typeof process?{get platform(){return process.platform},get arch(){return process.arch},get env(){return{NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0,REACT_APP_BACKEND:"http://localhost:8765",REACT_APP_META_BACKEND:"undefined"}},cwd:()=>({NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0,REACT_APP_BACKEND:"http://localhost:8765",REACT_APP_META_BACKEND:"undefined"}.VSCODE_CWD||process.cwd())}:{get platform(){return n.ED?"win32":n.dz?"darwin":"linux"},get arch(){},get env(){return{}},cwd:()=>"/"};const r=o.cwd,a=o.env,l=o.platform},75799:(e,t,i)=>{var n;i.d(t,{e:()=>n}),function(e){function t(e,t){if(e.start>=t.end||t.start>=e.end)return{start:0,end:0};const i=Math.max(e.start,t.start),n=Math.min(e.end,t.end);return n-i<=0?{start:0,end:0}:{start:i,end:n}}function i(e){return e.end-e.start<=0}e.intersect=t,e.isEmpty=i,e.intersects=function(e,n){return!i(t(e,n))},e.relativeComplement=function(e,t){const n=[],o={start:e.start,end:Math.min(t.start,e.end)},s={start:Math.max(t.end,e.start),end:e.end};return i(o)||n.push(o),i(s)||n.push(s),n}}(n||(n={}))},55694:(e,t,i)=>{i.d(t,{AH:()=>v,DZ:()=>f,EZ:()=>m,Hx:()=>g,SF:()=>c,Vb:()=>S,Vo:()=>_,XX:()=>p,Xy:()=>u,i3:()=>C,lX:()=>b,z_:()=>h});var n=i(9861),o=i(33211),s=i(51169),r=i(21511),a=i(25085),l=i(82682);function h(e){return(0,l.q)(e,!0)}class d{constructor(e){this._ignorePathCasing=e}compare(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e===t?0:(0,a.qu)(this.getComparisonKey(e,i),this.getComparisonKey(t,i))}isEqual(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e===t||!(!e||!t)&&this.getComparisonKey(e,i)===this.getComparisonKey(t,i)}getComparisonKey(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e.with({path:this._ignorePathCasing(e)?e.path.toLowerCase():void 0,fragment:t?null:void 0}).toString()}isEqualOrParent(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e.scheme===t.scheme){if(e.scheme===o.lg.file)return n.KM(h(e),h(t),this._ignorePathCasing(e))&&e.query===t.query&&(i||e.fragment===t.fragment);if(w(e.authority,t.authority))return n.KM(e.path,t.path,this._ignorePathCasing(e),"/")&&e.query===t.query&&(i||e.fragment===t.fragment)}return!1}joinPath(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n1&&void 0!==arguments[1]?arguments[1]:s.ir;if(e.scheme===o.lg.file){const i=h(e);return i.length>n.yj(i).length&&i[i.length-1]===t}{const t=e.path;return t.length>1&&47===t.charCodeAt(t.length-1)&&!/^[a-zA-Z]:(\/$|\\$)/.test(e.fsPath)}}removeTrailingPathSeparator(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.ir;return y(e,t)?e.with({path:e.path.substr(0,e.path.length-1)}):e}addTrailingPathSeparator(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.ir,i=!1;if(e.scheme===o.lg.file){const o=h(e);i=void 0!==o&&o.length===n.yj(o).length&&o[o.length-1]===t}else{t="/";const n=e.path;i=1===n.length&&47===n.charCodeAt(n.length-1)}return i||y(e,t)?e:e.with({path:e.path+"/"})}}const c=new d((()=>!1)),u=(new d((e=>e.scheme!==o.lg.file||!r.IJ)),new d((e=>!0)),c.isEqual.bind(c)),g=(c.isEqualOrParent.bind(c),c.getComparisonKey.bind(c),c.basenameOrAuthority.bind(c)),m=c.basename.bind(c),f=c.extname.bind(c),p=c.dirname.bind(c),_=c.joinPath.bind(c),v=c.normalizePath.bind(c),b=c.relativePath.bind(c),C=c.resolvePath.bind(c),w=(c.isAbsolutePath.bind(c),c.isEqualAuthority.bind(c)),y=c.hasTrailingPathSeparator.bind(c);c.removeTrailingPathSeparator.bind(c),c.addTrailingPathSeparator.bind(c);var S;!function(e){e.META_DATA_LABEL="label",e.META_DATA_DESCRIPTION="description",e.META_DATA_SIZE="size",e.META_DATA_MIME="mime",e.parseMetaData=function(t){const i=new Map;t.path.substring(t.path.indexOf(";")+1,t.path.lastIndexOf(";")).split(";").forEach((e=>{const[t,n]=e.split(":");t&&n&&i.set(t,n)}));const n=t.path.substring(0,t.path.indexOf(";"));return n&&i.set(e.META_DATA_MIME,n),i}}(S||(S={}))},89314:(e,t,i)=>{i.d(t,{Rm:()=>r});var n=i(24219),o=i(89599);class s{constructor(e,t,i,n,o,s,r){this._forceIntegerValues=e,this._scrollStateBrand=void 0,this._forceIntegerValues&&(t|=0,i|=0,n|=0,o|=0,s|=0,r|=0),this.rawScrollLeft=n,this.rawScrollTop=r,t<0&&(t=0),n+t>i&&(n=i-t),n<0&&(n=0),o<0&&(o=0),r+o>s&&(r=s-o),r<0&&(r=0),this.width=t,this.scrollWidth=i,this.scrollLeft=n,this.height=o,this.scrollHeight=s,this.scrollTop=r}equals(e){return this.rawScrollLeft===e.rawScrollLeft&&this.rawScrollTop===e.rawScrollTop&&this.width===e.width&&this.scrollWidth===e.scrollWidth&&this.scrollLeft===e.scrollLeft&&this.height===e.height&&this.scrollHeight===e.scrollHeight&&this.scrollTop===e.scrollTop}withScrollDimensions(e,t){return new s(this._forceIntegerValues,"undefined"!==typeof e.width?e.width:this.width,"undefined"!==typeof e.scrollWidth?e.scrollWidth:this.scrollWidth,t?this.rawScrollLeft:this.scrollLeft,"undefined"!==typeof e.height?e.height:this.height,"undefined"!==typeof e.scrollHeight?e.scrollHeight:this.scrollHeight,t?this.rawScrollTop:this.scrollTop)}withScrollPosition(e){return new s(this._forceIntegerValues,this.width,this.scrollWidth,"undefined"!==typeof e.scrollLeft?e.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,"undefined"!==typeof e.scrollTop?e.scrollTop:this.rawScrollTop)}createScrollEvent(e,t){const i=this.width!==e.width,n=this.scrollWidth!==e.scrollWidth,o=this.scrollLeft!==e.scrollLeft,s=this.height!==e.height,r=this.scrollHeight!==e.scrollHeight,a=this.scrollTop!==e.scrollTop;return{inSmoothScrolling:t,oldWidth:e.width,oldScrollWidth:e.scrollWidth,oldScrollLeft:e.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:e.height,oldScrollHeight:e.scrollHeight,oldScrollTop:e.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:i,scrollWidthChanged:n,scrollLeftChanged:o,heightChanged:s,scrollHeightChanged:r,scrollTopChanged:a}}}class r extends o.JT{constructor(e){super(),this._scrollableBrand=void 0,this._onScroll=this._register(new n.Q5),this.onScroll=this._onScroll.event,this._smoothScrollDuration=e.smoothScrollDuration,this._scheduleAtNextAnimationFrame=e.scheduleAtNextAnimationFrame,this._state=new s(e.forceIntegerValues,0,0,0,0,0,0),this._smoothScrolling=null}dispose(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),super.dispose()}setSmoothScrollDuration(e){this._smoothScrollDuration=e}validateScrollPosition(e){return this._state.withScrollPosition(e)}getScrollDimensions(){return this._state}setScrollDimensions(e,t){var i;const n=this._state.withScrollDimensions(e,t);this._setState(n,Boolean(this._smoothScrolling)),null===(i=this._smoothScrolling)||void 0===i||i.acceptScrollDimensions(this._state)}getFutureScrollPosition(){return this._smoothScrolling?this._smoothScrolling.to:this._state}getCurrentScrollPosition(){return this._state}setScrollPositionNow(e){const t=this._state.withScrollPosition(e);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(t,!1)}setScrollPositionSmooth(e,t){if(0===this._smoothScrollDuration)return this.setScrollPositionNow(e);if(this._smoothScrolling){e={scrollLeft:"undefined"===typeof e.scrollLeft?this._smoothScrolling.to.scrollLeft:e.scrollLeft,scrollTop:"undefined"===typeof e.scrollTop?this._smoothScrolling.to.scrollTop:e.scrollTop};const i=this._state.withScrollPosition(e);if(this._smoothScrolling.to.scrollLeft===i.scrollLeft&&this._smoothScrolling.to.scrollTop===i.scrollTop)return;let n;n=t?new h(this._smoothScrolling.from,i,this._smoothScrolling.startTime,this._smoothScrolling.duration):this._smoothScrolling.combine(this._state,i,this._smoothScrollDuration),this._smoothScrolling.dispose(),this._smoothScrolling=n}else{const t=this._state.withScrollPosition(e);this._smoothScrolling=h.start(this._state,t,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame((()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())}))}hasPendingScrollAnimation(){return Boolean(this._smoothScrolling)}_performSmoothScrolling(){if(!this._smoothScrolling)return;const e=this._smoothScrolling.tick(),t=this._state.withScrollPosition(e);return this._setState(t,!0),this._smoothScrolling?e.isDone?(this._smoothScrolling.dispose(),void(this._smoothScrolling=null)):void(this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame((()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())}))):void 0}_setState(e,t){const i=this._state;i.equals(e)||(this._state=e,this._onScroll.fire(this._state.createScrollEvent(i,t)))}}class a{constructor(e,t,i){this.scrollLeft=e,this.scrollTop=t,this.isDone=i}}function l(e,t){const i=t-e;return function(t){return e+i*(1-function(e){return Math.pow(e,3)}(1-t))}}class h{constructor(e,t,i,n){this.from=e,this.to=t,this.duration=n,this.startTime=i,this.animationFrameDisposable=null,this._initAnimations()}_initAnimations(){this.scrollLeft=this._initAnimation(this.from.scrollLeft,this.to.scrollLeft,this.to.width),this.scrollTop=this._initAnimation(this.from.scrollTop,this.to.scrollTop,this.to.height)}_initAnimation(e,t,i){if(Math.abs(e-t)>2.5*i){let r,a;return e{i.d(t,{Z:()=>s});var n,o=i(25085);!function(e){e[e.Ignore=0]="Ignore",e[e.Info=1]="Info",e[e.Warning=2]="Warning",e[e.Error=3]="Error"}(n||(n={})),function(e){const t="error",i="warning",n="warn",s="info",r="ignore";e.fromValue=function(r){return r?o.qq(t,r)?e.Error:o.qq(i,r)||o.qq(n,r)?e.Warning:o.qq(s,r)?e.Info:e.Ignore:e.Ignore},e.toString=function(n){switch(n){case e.Error:return t;case e.Warning:return i;case e.Info:return s;default:return r}}}(n||(n={}));const s=n},6459:(e,t,i)=>{i.d(t,{G:()=>o});const n=globalThis.performance&&"function"===typeof globalThis.performance.now;class o{static create(e){return new o(e)}constructor(e){this._now=n&&!1===e?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return-1!==this._stopTime?this._stopTime-this._startTime:this._now()-this._startTime}}},25085:(e,t,i)=>{i.d(t,{$i:()=>G,B4:()=>re,C8:()=>$,Fw:()=>C,GF:()=>_,HO:()=>H,IO:()=>v,J_:()=>K,K7:()=>Y,Kw:()=>ee,LC:()=>w,Mh:()=>A,P1:()=>R,PJ:()=>te,Qe:()=>Q,R1:()=>p,T5:()=>x,TT:()=>k,Ut:()=>j,V8:()=>y,W1:()=>V,WU:()=>l,YK:()=>P,YU:()=>d,ZG:()=>O,ZH:()=>B,ZK:()=>ae,ab:()=>Z,c1:()=>J,df:()=>I,ec:()=>c,fA:()=>h,fy:()=>u,j3:()=>g,j_:()=>N,m5:()=>r,mK:()=>E,oH:()=>oe,oL:()=>m,ok:()=>M,ow:()=>S,qq:()=>T,qu:()=>L,rL:()=>F,uS:()=>X,un:()=>f,uq:()=>b,vH:()=>W,vU:()=>le,zY:()=>D});var n,o=i(31372),s=i(73187);function r(e){return!e||"string"!==typeof e||0===e.trim().length}const a=/{(\d+)}/g;function l(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n=i.length?e:i[n]}))}function h(e){return e.replace(/[<>"'&]/g,(e=>{switch(e){case"<":return"<";case">":return">";case'"':return""";case"'":return"'";case"&":return"&"}return e}))}function d(e){return e.replace(/[<>&]/g,(function(e){switch(e){case"<":return"<";case">":return">";case"&":return"&";default:return e}}))}function c(e){return e.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";return m(g(e,t),t)}function g(e,t){if(!e||!t)return e;const i=t.length;if(0===i||0===e.length)return e;let n=0;for(;e.indexOf(t,n)===n;)n+=i;return e.substring(n)}function m(e,t){if(!e||!t)return e;const i=t.length,n=e.length;if(0===i||0===n)return e;let o=n,s=-1;for(;s=e.lastIndexOf(t,o-1),-1!==s&&s+i===o;){if(0===s)return"";o=s}return e.substring(0,o)}function f(e){return e.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}function p(e){return e.replace(/\*/g,"")}function _(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e)throw new Error("Cannot create regex from empty string");t||(e=c(e)),i.wholeWord&&(/\B/.test(e.charAt(0))||(e="\\b"+e),/\B/.test(e.charAt(e.length-1))||(e+="\\b"));let n="";return i.global&&(n+="g"),i.matchCase||(n+="i"),i.multiline&&(n+="m"),i.unicode&&(n+="u"),new RegExp(e,n)}function v(e){if("^"===e.source||"^$"===e.source||"$"===e.source||"^\\s*$"===e.source)return!1;return!(!e.exec("")||0!==e.lastIndex)}function b(e){return e.split(/\r\n|\r|\n/)}function C(e){var t;const i=[],n=e.split(/(\r\n|\r|\n)/);for(let o=0;o1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length;for(let n=t;n1&&void 0!==arguments[1]?arguments[1]:e.length-1;t>=0;t--){const i=e.charCodeAt(t);if(32!==i&&9!==i)return t}return-1}function L(e,t){return et?1:0}function k(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:t.length;for(;is)return 1}const r=n-i,a=s-o;return ra?1:0}function D(e,t){return N(e,t,0,e.length,0,t.length)}function N(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:t.length;for(;i=128||a>=128)return k(e.toLowerCase(),t.toLowerCase(),i,n,o,s);E(r)&&(r-=32),E(a)&&(a-=32);const l=r-a;if(0!==l)return l}const r=n-i,a=s-o;return ra?1:0}function x(e){return e>=48&&e<=57}function E(e){return e>=97&&e<=122}function I(e){return e>=65&&e<=90}function T(e,t){return e.length===t.length&&0===N(e,t)}function M(e,t){const i=t.length;return!(t.length>e.length)&&0===N(e,t,0,i)}function A(e,t){const i=Math.min(e.length,t.length);let n;for(n=0;n1&&void 0!==arguments[1]?arguments[1]:0;this._str=e,this._len=e.length,this._offset=t}setOffset(e){this._offset=e}prevCodePoint(){const e=function(e,t){const i=e.charCodeAt(t-1);if(P(i)&&t>1){const n=e.charCodeAt(t-2);if(O(n))return F(n,i)}return i}(this._str,this._offset);return this._offset-=e>=65536?2:1,e}nextCodePoint(){const e=B(this._str,this._len,this._offset);return this._offset+=e>=65536?2:1,e}eol(){return this._offset>=this._len}}class V{get offset(){return this._iterator.offset}constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._iterator=new z(e,t)}nextGraphemeLength(){const e=ne.getInstance(),t=this._iterator,i=t.offset;let n=e.getGraphemeBreakType(t.nextCodePoint());for(;!t.eol();){const i=t.offset,o=e.getGraphemeBreakType(t.nextCodePoint());if(ie(n,o)){t.setOffset(i);break}n=o}return t.offset-i}prevGraphemeLength(){const e=ne.getInstance(),t=this._iterator,i=t.offset;let n=e.getGraphemeBreakType(t.prevCodePoint());for(;t.offset>0;){const i=t.offset,o=e.getGraphemeBreakType(t.prevCodePoint());if(ie(o,n)){t.setOffset(i);break}n=o}return i-t.offset}eol(){return this._iterator.eol()}}function W(e,t){return new V(e,t).nextGraphemeLength()}function H(e,t){return new V(e,t).prevGraphemeLength()}function K(e,t){t>0&&P(e.charCodeAt(t))&&t--;const i=t+W(e,t);return[i-H(e,i),i]}let U;function j(e){return U||(U=/(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDC7\uFDF0-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE35\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDD23\uDE80-\uDEA9\uDEAD-\uDF45\uDF51-\uDF81\uDF86-\uDFF6]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD4B-\uDFFF]|\uD83B[\uDC00-\uDEBB])/),U.test(e)}const q=/^[\t\n\r\x20-\x7E]*$/;function G(e){return q.test(e)}const Q=/[\u2028\u2029]/;function Z(e){return Q.test(e)}function Y(e){return e>=11904&&e<=55215||e>=63744&&e<=64255||e>=65281&&e<=65374}function $(e){return e>=127462&&e<=127487||8986===e||8987===e||9200===e||9203===e||e>=9728&&e<=10175||11088===e||11093===e||e>=127744&&e<=128591||e>=128640&&e<=128764||e>=128992&&e<=129008||e>=129280&&e<=129535||e>=129648&&e<=129782}const J=String.fromCharCode(65279);function X(e){return!!(e&&e.length>0&&65279===e.charCodeAt(0))}function ee(e){return!!e&&(arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&(e=e.replace(/\\./g,"")),e.toLowerCase()!==e)}function te(e){return(e%=52)<26?String.fromCharCode(97+e):String.fromCharCode(65+e-26)}function ie(e,t){return 0===e?5!==t&&7!==t:(2!==e||3!==t)&&(4===e||2===e||3===e||(4===t||2===t||3===t||(8!==e||8!==t&&9!==t&&11!==t&&12!==t)&&((11!==e&&9!==e||9!==t&&10!==t)&&((12!==e&&10!==e||10!==t)&&(5!==t&&13!==t&&(7!==t&&(1!==e&&((13!==e||14!==t)&&(6!==e||6!==t)))))))))}class ne{static getInstance(){return ne._INSTANCE||(ne._INSTANCE=new ne),ne._INSTANCE}constructor(){this._data=JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}getGraphemeBreakType(e){if(e<32)return 10===e?3:13===e?2:4;if(e<127)return 0;const t=this._data,i=t.length/3;let n=1;for(;n<=i;)if(et[3*n+1]))return t[3*n+2];n=2*n+1}return 0}}function oe(e,t){if(0===e)return 0;const i=function(e,t){const i=new z(t,e);let n=i.prevCodePoint();for(;se(n)||65039===n||8419===n;){if(0===i.offset)return;n=i.prevCodePoint()}if(!$(n))return;let o=i.offset;if(o>0){8205===i.prevCodePoint()&&(o=i.offset)}return o}(e,t);if(void 0!==i)return i;const n=new z(t,e);return n.prevCodePoint(),n.offset}function se(e){return 127995<=e&&e<=127999}ne._INSTANCE=null;const re="\xa0";class ae{static getInstance(e){return n.cache.get(Array.from(e))}static getLocales(){return n._locales.value}constructor(e){this.confusableDictionary=e}isAmbiguous(e){return this.confusableDictionary.has(e)}getPrimaryConfusable(e){return this.confusableDictionary.get(e)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}n=ae,ae.ambiguousCharacterData=new s.o((()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"cs":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"es":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"fr":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"it":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ja":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],"ko":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pt-BR":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ru":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"zh-hans":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],"zh-hant":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}'))),ae.cache=new o.t((e=>{function t(e){const t=new Map;for(let i=0;i!e.startsWith("_")&&e in o));0===r.length&&(r=["_default"]);for(const n of r){s=i(s,t(o[n]))}const a=function(e,t){const i=new Map(e);for(const[n,o]of t)i.set(n,o);return i}(t(o._common),s);return new n(a)})),ae._locales=new s.o((()=>Object.keys(n.ambiguousCharacterData.value).filter((e=>!e.startsWith("_")))));class le{static getRawData(){return JSON.parse("[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]")}static getData(){return this._data||(this._data=new Set(le.getRawData())),this._data}static isInvisibleCharacter(e){return le.getData().has(e)}static get codePoints(){return le.getData()}}le._data=void 0},59786:(e,t,i)=>{i.d(t,{n:()=>n});const n=Symbol("MicrotaskDelay")},737:(e,t,i)=>{i.d(t,{Id:()=>h});var n=i(25085);class o{constructor(){this._value="",this._pos=0}reset(e){return this._value=e,this._pos=0,this}next(){return this._pos+=1,this}hasNext(){return this._pos0&&void 0!==arguments[0])||arguments[0];this._caseSensitive=e}reset(e){return this._value=e,this._from=0,this._to=0,this.next()}hasNext(){return this._to0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._splitOnBackslash=e,this._caseSensitive=t}reset(e){this._from=0,this._to=0,this._value=e,this._valueLen=e.length;for(let t=e.length-1;t>=0;t--,this._valueLen--){const e=this._value.charCodeAt(t);if(!(47===e||this._splitOnBackslash&&92===e))break}return this.next()}hasNext(){return this._to0&&void 0!==arguments[0]?arguments[0]:()=>!1,arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>!1))}static forStrings(){return new h(new o)}static forConfigKeys(){return new h(new s)}constructor(e){this._iter=e}clear(){this._root=void 0}set(e,t){const i=this._iter.reset(e);let n;this._root||(this._root=new l,this._root.segment=i.value());const o=[];for(n=this._root;;){const e=i.cmp(n.segment);if(e>0)n.left||(n.left=new l,n.left.segment=i.value()),o.push([-1,n]),n=n.left;else if(e<0)n.right||(n.right=new l,n.right.segment=i.value()),o.push([1,n]),n=n.right;else{if(!i.hasNext())break;i.next(),n.mid||(n.mid=new l,n.mid.segment=i.value()),o.push([0,n]),n=n.mid}}const s=n.value;n.value=t,n.key=e;for(let r=o.length-1;r>=0;r--){const e=o[r][1];e.updateHeight();const t=e.balanceFactor();if(t<-1||t>1){const t=o[r][0],i=o[r+1][0];if(1===t&&1===i)o[r][1]=e.rotateLeft();else if(-1===t&&-1===i)o[r][1]=e.rotateRight();else if(1===t&&-1===i)e.right=o[r+1][1]=o[r+1][1].rotateRight(),o[r][1]=e.rotateLeft();else{if(-1!==t||1!==i)throw new Error;e.left=o[r+1][1]=o[r+1][1].rotateLeft(),o[r][1]=e.rotateRight()}if(r>0)switch(o[r-1][0]){case-1:o[r-1][1].left=o[r][1];break;case 1:o[r-1][1].right=o[r][1];break;case 0:o[r-1][1].mid=o[r][1]}else this._root=o[0][1]}}return s}get(e){var t;return null===(t=this._getNode(e))||void 0===t?void 0:t.value}_getNode(e){const t=this._iter.reset(e);let i=this._root;for(;i;){const e=t.cmp(i.segment);if(e>0)i=i.left;else if(e<0)i=i.right;else{if(!t.hasNext())break;t.next(),i=i.mid}}return i}has(e){const t=this._getNode(e);return!(void 0===(null===t||void 0===t?void 0:t.value)&&void 0===(null===t||void 0===t?void 0:t.mid))}delete(e){return this._delete(e,!1)}deleteSuperstr(e){return this._delete(e,!0)}_delete(e,t){var i;const n=this._iter.reset(e),o=[];let s=this._root;for(;s;){const e=n.cmp(s.segment);if(e>0)o.push([-1,s]),s=s.left;else if(e<0)o.push([1,s]),s=s.right;else{if(!n.hasNext())break;n.next(),o.push([0,s]),s=s.mid}}if(s){if(t?(s.left=void 0,s.mid=void 0,s.right=void 0,s.height=1):(s.key=void 0,s.value=void 0),!s.mid&&!s.value)if(s.left&&s.right){const e=this._min(s.right);if(e.key){const{key:t,value:i,segment:n}=e;this._delete(e.key,!1),s.key=t,s.value=i,s.segment=n}}else{const e=null!==(i=s.left)&&void 0!==i?i:s.right;if(o.length>0){const[t,i]=o[o.length-1];switch(t){case-1:i.left=e;break;case 0:i.mid=e;break;case 1:i.right=e}}else this._root=e}for(let e=o.length-1;e>=0;e--){const t=o[e][1];t.updateHeight();const i=t.balanceFactor();if(i>1?(t.right.balanceFactor()>=0||(t.right=t.right.rotateRight()),o[e][1]=t.rotateLeft()):i<-1&&(t.left.balanceFactor()<=0||(t.left=t.left.rotateLeft()),o[e][1]=t.rotateRight()),e>0)switch(o[e-1][0]){case-1:o[e-1][1].left=o[e][1];break;case 1:o[e-1][1].right=o[e][1];break;case 0:o[e-1][1].mid=o[e][1]}else this._root=o[0][1]}}}_min(e){for(;e.left;)e=e.left;return e}findSubstr(e){const t=this._iter.reset(e);let i,n=this._root;for(;n;){const e=t.cmp(n.segment);if(e>0)n=n.left;else if(e<0)n=n.right;else{if(!t.hasNext())break;t.next(),i=n.value||i,n=n.mid}}return n&&n.value||i}findSuperstr(e){return this._findSuperstrOrElement(e,!1)}_findSuperstrOrElement(e,t){const i=this._iter.reset(e);let n=this._root;for(;n;){const e=i.cmp(n.segment);if(e>0)n=n.left;else if(e<0)n=n.right;else{if(!i.hasNext())return n.mid?this._entries(n.mid):t?n.value:void 0;i.next(),n=n.mid}}}forEach(e){for(const[t,i]of this)e(i,t)}*[Symbol.iterator](){yield*this._entries(this._root)}_entries(e){const t=[];return this._dfsEntries(e,t),t[Symbol.iterator]()}_dfsEntries(e,t){e&&(e.left&&this._dfsEntries(e.left,t),e.value&&t.push([e.key,e.value]),e.mid&&this._dfsEntries(e.mid,t),e.right&&this._dfsEntries(e.right,t))}}},62502:(e,t,i)=>{i.d(t,{k:()=>o});var n,o,s=i(62974);!function(e){e.isThemeColor=function(e){return e&&"object"===typeof e&&"string"===typeof e.id}}(n||(n={})),function(e){e.iconNameSegment="[A-Za-z0-9]+",e.iconNameExpression="[A-Za-z0-9-]+",e.iconModifierExpression="~[A-Za-z]+",e.iconNameCharacter="[A-Za-z0-9~-]";const t=new RegExp("^(".concat(e.iconNameExpression,")(").concat(e.iconModifierExpression,")?$"));function i(e){const n=t.exec(e.id);if(!n)return i(s.l.error);const[,o,r]=n,a=["codicon","codicon-"+o];return r&&a.push("codicon-modifier-"+r.substring(1)),a}e.asClassNameArray=i,e.asClassName=function(e){return i(e).join(" ")},e.asCSSSelector=function(e){return"."+i(e).join(".")},e.isThemeIcon=function(e){return e&&"object"===typeof e&&"string"===typeof e.id&&("undefined"===typeof e.color||n.isThemeColor(e.color))};const o=new RegExp("^\\$\\((".concat(e.iconNameExpression,"(?:").concat(e.iconModifierExpression,")?)\\)$"));e.fromString=function(e){const t=o.exec(e);if(!t)return;const[,i]=t;return{id:i}},e.fromId=function(e){return{id:e}},e.modify=function(e,t){let i=e.id;const n=i.lastIndexOf("~");return-1!==n&&(i=i.substring(0,n)),t&&(i="".concat(i,"~").concat(t)),{id:i}},e.getModifier=function(e){const t=e.id.lastIndexOf("~");if(-1!==t)return e.id.substring(t+1)},e.isEqual=function(e,t){var i,n;return e.id===t.id&&(null===(i=e.color)||void 0===i?void 0:i.id)===(null===(n=t.color)||void 0===n?void 0:n.id)}}(o||(o={}))},63686:(e,t,i)=>{function n(e){return"string"===typeof e}function o(e){return"object"===typeof e&&null!==e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function s(e){const t=Object.getPrototypeOf(Uint8Array);return"object"===typeof e&&e instanceof t}function r(e){return"number"===typeof e&&!isNaN(e)}function a(e){return!!e&&"function"===typeof e[Symbol.iterator]}function l(e){return!0===e||!1===e}function h(e){return"undefined"===typeof e}function d(e){return!c(e)}function c(e){return h(e)||null===e}function u(e,t){if(!e)throw new Error(t?"Unexpected type, expected '".concat(t,"'"):"Unexpected type")}function g(e){if(c(e))throw new Error("Assertion Failed: argument is undefined or null");return e}function m(e){return"function"===typeof e}function f(e,t){const i=Math.min(e.length,t.length);for(let n=0;nd,D8:()=>f,HD:()=>n,Jp:()=>c,Kn:()=>o,TW:()=>a,cW:()=>g,fU:()=>s,hj:()=>r,jn:()=>l,mf:()=>m,o8:()=>h,p_:()=>u})},44918:(e,t,i)=>{function n(e){return e<0?0:e>255?255:0|e}function o(e){return e<0?0:e>4294967295?4294967295:0|e}i.d(t,{A:()=>o,K:()=>n})},82682:(e,t,i)=>{i.d(t,{o:()=>c,q:()=>_});var n=i(51169),o=i(21511);const s=/^\w[\w\d+.-]*$/,r=/^\//,a=/^\/\//;const l="",h="/",d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class c{static isUri(e){return e instanceof c||!!e&&("string"===typeof e.authority&&"string"===typeof e.fragment&&"string"===typeof e.path&&"string"===typeof e.query&&"string"===typeof e.scheme&&"string"===typeof e.fsPath&&"function"===typeof e.with&&"function"===typeof e.toString)}constructor(e,t,i,n,o){let d=arguments.length>5&&void 0!==arguments[5]&&arguments[5];"object"===typeof e?(this.scheme=e.scheme||l,this.authority=e.authority||l,this.path=e.path||l,this.query=e.query||l,this.fragment=e.fragment||l):(this.scheme=function(e,t){return e||t?e:"file"}(e,d),this.authority=t||l,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==h&&(t=h+t):t=h}return t}(this.scheme,i||l),this.query=n||l,this.fragment=o||l,function(e,t){if(!e.scheme&&t)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'.concat(e.authority,'", path: "').concat(e.path,'", query: "').concat(e.query,'", fragment: "').concat(e.fragment,'"}'));if(e.scheme&&!s.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!r.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(a.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,d))}get fsPath(){return _(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:i,path:n,query:o,fragment:s}=e;return void 0===t?t=this.scheme:null===t&&(t=l),void 0===i?i=this.authority:null===i&&(i=l),void 0===n?n=this.path:null===n&&(n=l),void 0===o?o=this.query:null===o&&(o=l),void 0===s?s=this.fragment:null===s&&(s=l),t===this.scheme&&i===this.authority&&n===this.path&&o===this.query&&s===this.fragment?this:new g(t,i,n,o,s)}static parse(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=d.exec(e);return i?new g(i[2]||l,w(i[4]||l),w(i[5]||l),w(i[7]||l),w(i[9]||l),t):new g(l,l,l,l,l)}static file(e){let t=l;if(o.ED&&(e=e.replace(/\\/g,h)),e[0]===h&&e[1]===h){const i=e.indexOf(h,2);-1===i?(t=e.substring(2),e=h):(t=e.substring(2,i),e=e.substring(i)||h)}return new g("file",t,e,l,l)}static from(e,t){return new g(e.scheme,e.authority,e.path,e.query,e.fragment,t)}static joinPath(e){if(!e.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let t;for(var i=arguments.length,s=new Array(i>1?i-1:0),r=1;r0&&void 0!==arguments[0]&&arguments[0])}toJSON(){return this}static revive(e){var t,i;if(e){if(e instanceof c)return e;{const n=new g(e);return n._formatted=null!==(t=e.external)&&void 0!==t?t:null,n._fsPath=e._sep===u&&null!==(i=e.fsPath)&&void 0!==i?i:null,n}}return e}}const u=o.ED?1:void 0;class g extends c{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=_(this,!1)),this._fsPath}toString(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?v(this,!0):(this._formatted||(this._formatted=v(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=u),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const m={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function f(e,t,i){let n,o=-1;for(let s=0;s=97&&r<=122||r>=65&&r<=90||r>=48&&r<=57||45===r||46===r||95===r||126===r||t&&47===r||i&&91===r||i&&93===r||i&&58===r)-1!==o&&(n+=encodeURIComponent(e.substring(o,s)),o=-1),void 0!==n&&(n+=e.charAt(s));else{void 0===n&&(n=e.substr(0,s));const t=m[r];void 0!==t?(-1!==o&&(n+=encodeURIComponent(e.substring(o,s)),o=-1),n+=t):-1===o&&(o=s)}}return-1!==o&&(n+=encodeURIComponent(e.substring(o))),void 0!==n?n:e}function p(e){let t;for(let i=0;i1&&"file"===e.scheme?"//".concat(e.authority).concat(e.path):47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,o.ED&&(i=i.replace(/\//g,"\\")),i}function v(e,t){const i=t?p:f;let n="",{scheme:o,authority:s,path:r,query:a,fragment:l}=e;if(o&&(n+=o,n+=":"),(s||"file"===o)&&(n+=h,n+=h),s){let e=s.indexOf("@");if(-1!==e){const t=s.substr(0,e);s=s.substr(e+1),e=t.lastIndexOf(":"),-1===e?n+=i(t,!1,!1):(n+=i(t.substr(0,e),!1,!1),n+=":",n+=i(t.substr(e+1),!1,!0)),n+="@"}s=s.toLowerCase(),e=s.lastIndexOf(":"),-1===e?n+=i(s,!1,!0):(n+=i(s.substr(0,e),!1,!0),n+=s.substr(e))}if(r){if(r.length>=3&&47===r.charCodeAt(0)&&58===r.charCodeAt(2)){const e=r.charCodeAt(1);e>=65&&e<=90&&(r="/".concat(String.fromCharCode(e+32),":").concat(r.substr(3)))}else if(r.length>=2&&58===r.charCodeAt(1)){const e=r.charCodeAt(0);e>=65&&e<=90&&(r="".concat(String.fromCharCode(e+32),":").concat(r.substr(2)))}n+=i(r,!0,!1)}return a&&(n+="?",n+=i(a,!1,!1)),l&&(n+="#",n+=t?l:f(l,!1,!1)),n}function b(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+b(e.substr(3)):e}}const C=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function w(e){return e.match(C)?e.replace(C,(e=>b(e))):e}},99916:(e,t,i)=>{i.d(t,{N:()=>o});var n=i(45153);function o(e,t){e instanceof n.Z?(e.setFontFamily(t.getMassagedFontFamily()),e.setFontWeight(t.fontWeight),e.setFontSize(t.fontSize),e.setFontFeatureSettings(t.fontFeatureSettings),e.setFontVariationSettings(t.fontVariationSettings),e.setLineHeight(t.lineHeight),e.setLetterSpacing(t.letterSpacing)):(e.style.fontFamily=t.getMassagedFontFamily(),e.style.fontWeight=t.fontWeight,e.style.fontSize=t.fontSize+"px",e.style.fontFeatureSettings=t.fontFeatureSettings,e.style.fontVariationSettings=t.fontVariationSettings,e.style.lineHeight=t.lineHeight+"px",e.style.letterSpacing=t.letterSpacing+"px")}},97363:(e,t,i)=>{i.d(t,{I:()=>r});var n=i(89599),o=i(24219),s=i(85714);class r extends n.JT{constructor(e,t){super(),this._onDidChange=this._register(new o.Q5),this.onDidChange=this._onDidChange.event,this._referenceDomElement=e,this._width=-1,this._height=-1,this._resizeObserver=null,this.measureReferenceDomElement(!1,t)}dispose(){this.stopObserving(),super.dispose()}getWidth(){return this._width}getHeight(){return this._height}startObserving(){if(!this._resizeObserver&&this._referenceDomElement){let e=null;const t=()=>{e?this.observe({width:e.width,height:e.height}):this.observe()};let i=!1,n=!1;const o=()=>{if(i&&!n)try{i=!1,n=!0,t()}finally{(0,s.jL)((0,s.Jj)(this._referenceDomElement),(()=>{n=!1,o()}))}};this._resizeObserver=new ResizeObserver((t=>{e=t&&t[0]&&t[0].contentRect?{width:t[0].contentRect.width,height:t[0].contentRect.height}:null,i=!0,o()})),this._resizeObserver.observe(this._referenceDomElement)}}stopObserving(){this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null)}observe(e){this.measureReferenceDomElement(!0,e)}measureReferenceDomElement(e,t){let i=0,n=0;t?(i=t.width,n=t.height):this._referenceDomElement&&(i=this._referenceDomElement.clientWidth,n=this._referenceDomElement.clientHeight),i=Math.max(5,i),n=Math.max(5,n),this._width===i&&this._height===n||(this._width=i,this._height=n,e&&this._onDidChange.fire())}}},86392:(e,t,i)=>{i.d(t,{g:()=>m});var n=i(85714),o=i(39830),s=i(24219),r=i(89599),a=i(99916);class l{constructor(e,t){this.chr=e,this.type=t,this.width=0}fulfill(e){this.width=e}}class h{constructor(e,t){this._bareFontInfo=e,this._requests=t,this._container=null,this._testElements=null}read(e){this._createDomElements(),e.document.body.appendChild(this._container),this._readFromDomElements(),e.document.body.removeChild(this._container),this._container=null,this._testElements=null}_createDomElements(){const e=document.createElement("div");e.style.position="absolute",e.style.top="-50000px",e.style.width="50000px";const t=document.createElement("div");(0,a.N)(t,this._bareFontInfo),e.appendChild(t);const i=document.createElement("div");(0,a.N)(i,this._bareFontInfo),i.style.fontWeight="bold",e.appendChild(i);const n=document.createElement("div");(0,a.N)(n,this._bareFontInfo),n.style.fontStyle="italic",e.appendChild(n);const o=[];for(const s of this._requests){let e;0===s.type&&(e=t),2===s.type&&(e=i),1===s.type&&(e=n),e.appendChild(document.createElement("br"));const r=document.createElement("span");h._render(r,s),e.appendChild(r),o.push(r)}this._container=e,this._testElements=o}static _render(e,t){if(" "===t.chr){let t="\xa0";for(let e=0;e<8;e++)t+=t;e.innerText=t}else{let i=t.chr;for(let e=0;e<8;e++)i+=i;e.textContent=i}}_readFromDomElements(){for(let e=0,t=this._requests.length;e{this._evictUntrustedReadingsTimeout=-1,this._evictUntrustedReadings(e)}),5e3))}_evictUntrustedReadings(e){const t=this._ensureCache(e),i=t.getValues();let n=!1;for(const o of i)o.isTrusted||(n=!0,t.remove(o));n&&this._onDidChange.fire()}readFontInfo(e,t){const i=this._ensureCache(e);if(!i.has(t)){let i=this._actualReadFontInfo(e,t);(i.typicalHalfwidthCharacterWidth<=2||i.typicalFullwidthCharacterWidth<=2||i.spaceWidth<=2||i.maxDigitWidth<=2)&&(i=new c.pR({pixelRatio:o.T.getInstance(e).value,fontFamily:i.fontFamily,fontWeight:i.fontWeight,fontSize:i.fontSize,fontFeatureSettings:i.fontFeatureSettings,fontVariationSettings:i.fontVariationSettings,lineHeight:i.lineHeight,letterSpacing:i.letterSpacing,isMonospace:i.isMonospace,typicalHalfwidthCharacterWidth:Math.max(i.typicalHalfwidthCharacterWidth,5),typicalFullwidthCharacterWidth:Math.max(i.typicalFullwidthCharacterWidth,5),canUseHalfwidthRightwardsArrow:i.canUseHalfwidthRightwardsArrow,spaceWidth:Math.max(i.spaceWidth,5),middotWidth:Math.max(i.middotWidth,5),wsmiddotWidth:Math.max(i.wsmiddotWidth,5),maxDigitWidth:Math.max(i.maxDigitWidth,5)},!1)),this._writeToCache(e,t,i)}return i.get(t)}_createRequest(e,t,i,n){const o=new l(e,t);return i.push(o),null===n||void 0===n||n.push(o),o}_actualReadFontInfo(e,t){const i=[],n=[],s=this._createRequest("n",0,i,n),r=this._createRequest("\uff4d",0,i,null),a=this._createRequest(" ",0,i,n),l=this._createRequest("0",0,i,n),u=this._createRequest("1",0,i,n),g=this._createRequest("2",0,i,n),m=this._createRequest("3",0,i,n),f=this._createRequest("4",0,i,n),p=this._createRequest("5",0,i,n),_=this._createRequest("6",0,i,n),v=this._createRequest("7",0,i,n),b=this._createRequest("8",0,i,n),C=this._createRequest("9",0,i,n),w=this._createRequest("\u2192",0,i,n),y=this._createRequest("\uffeb",0,i,null),S=this._createRequest("\xb7",0,i,n),L=this._createRequest(String.fromCharCode(11825),0,i,null),k="|/-_ilm%";for(let o=0,h=k.length;o.001){N=!1;break}}let E=!0;return N&&y.width!==x&&(E=!1),y.width>w.width&&(E=!1),new c.pR({pixelRatio:o.T.getInstance(e).value,fontFamily:t.fontFamily,fontWeight:t.fontWeight,fontSize:t.fontSize,fontFeatureSettings:t.fontFeatureSettings,fontVariationSettings:t.fontVariationSettings,lineHeight:t.lineHeight,letterSpacing:t.letterSpacing,isMonospace:N,typicalHalfwidthCharacterWidth:s.width,typicalFullwidthCharacterWidth:r.width,canUseHalfwidthRightwardsArrow:E,spaceWidth:a.width,middotWidth:S.width,wsmiddotWidth:L.width,maxDigitWidth:D},!0)}}class g{constructor(){this._keys=Object.create(null),this._values=Object.create(null)}has(e){const t=e.getId();return!!this._values[t]}get(e){const t=e.getId();return this._values[t]}put(e,t){const i=e.getId();this._keys[i]=e,this._values[i]=t}remove(e){const t=e.getId();delete this._keys[t],delete this._values[t]}getValues(){return Object.keys(this._keys).map((e=>this._values[e]))}}const m=new u},25391:(e,t,i)=>{i.d(t,{n:()=>o});var n=i(24219);const o=new class{constructor(){this._tabFocus=!1,this._onDidChangeTabFocus=new n.Q5,this.onDidChangeTabFocus=this._onDidChangeTabFocus.event}getTabFocusMode(){return this._tabFocus}setTabFocusMode(e){this._tabFocus=e,this._onDidChangeTabFocus.fire(this._tabFocus)}}},73451:(e,t,i)=>{i.d(t,{Fz:()=>S,Nl:()=>w,RA:()=>C,Tj:()=>k,b6:()=>L,pd:()=>n});var n,o=i(42606),s=i(85714),r=i(3640),a=i(39341),l=i(10115),h=i(60282),d=i(24219),c=i(89599),u=i(51572),g=i(25085),m=i(38954),f=i(67078),p=i(46385),_=i(83717),v=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},b=function(e,t){return function(i,n){t(i,n,e)}};!function(e){e.Tap="-monaco-textarea-synthetic-tap"}(n||(n={}));const C={forceCopyWithSyntaxHighlighting:!1};class w{constructor(){this._lastState=null}set(e,t){this._lastState={lastCopiedValue:e,data:t}}get(e){return this._lastState&&this._lastState.lastCopiedValue===e?this._lastState.data:(this._lastState=null,null)}}w.INSTANCE=new w;class y{constructor(){this._lastTypeTextLength=0}handleCompositionUpdate(e){const t={text:e=e||"",replacePrevCharCnt:this._lastTypeTextLength,replaceNextCharCnt:0,positionDelta:0};return this._lastTypeTextLength=e.length,t}}let S=class extends c.JT{get textAreaState(){return this._textAreaState}constructor(e,t,i,n,o,s){super(),this._host=e,this._textArea=t,this._OS=i,this._browser=n,this._accessibilityService=o,this._logService=s,this._onFocus=this._register(new d.Q5),this.onFocus=this._onFocus.event,this._onBlur=this._register(new d.Q5),this.onBlur=this._onBlur.event,this._onKeyDown=this._register(new d.Q5),this.onKeyDown=this._onKeyDown.event,this._onKeyUp=this._register(new d.Q5),this.onKeyUp=this._onKeyUp.event,this._onCut=this._register(new d.Q5),this.onCut=this._onCut.event,this._onPaste=this._register(new d.Q5),this.onPaste=this._onPaste.event,this._onType=this._register(new d.Q5),this.onType=this._onType.event,this._onCompositionStart=this._register(new d.Q5),this.onCompositionStart=this._onCompositionStart.event,this._onCompositionUpdate=this._register(new d.Q5),this.onCompositionUpdate=this._onCompositionUpdate.event,this._onCompositionEnd=this._register(new d.Q5),this.onCompositionEnd=this._onCompositionEnd.event,this._onSelectionChangeRequest=this._register(new d.Q5),this.onSelectionChangeRequest=this._onSelectionChangeRequest.event,this._asyncFocusGainWriteScreenReaderContent=this._register(new c.XK),this._asyncTriggerCut=this._register(new h.pY((()=>this._onCut.fire()),0)),this._textAreaState=m.un.EMPTY,this._selectionChangeListener=null,this._accessibilityService.isScreenReaderOptimized()&&this.writeNativeTextAreaContent("ctor"),this._register(d.ju.runAndSubscribe(this._accessibilityService.onDidChangeScreenReaderOptimized,(()=>{this._accessibilityService.isScreenReaderOptimized()&&!this._asyncFocusGainWriteScreenReaderContent.value?this._asyncFocusGainWriteScreenReaderContent.value=this._register(new h.pY((()=>this.writeNativeTextAreaContent("asyncFocusGain")),0)):this._asyncFocusGainWriteScreenReaderContent.clear()}))),this._hasFocus=!1,this._currentComposition=null;let r=null;this._register(this._textArea.onKeyDown((e=>{const t=new a.y(e);(114===t.keyCode||this._currentComposition&&1===t.keyCode)&&t.stopPropagation(),t.equals(9)&&t.preventDefault(),r=t,this._onKeyDown.fire(t)}))),this._register(this._textArea.onKeyUp((e=>{const t=new a.y(e);this._onKeyUp.fire(t)}))),this._register(this._textArea.onCompositionStart((e=>{m.al&&console.log("[compositionstart]",e);const t=new y;if(this._currentComposition)this._currentComposition=t;else{if(this._currentComposition=t,2===this._OS&&r&&r.equals(114)&&this._textAreaState.selectionStart===this._textAreaState.selectionEnd&&this._textAreaState.selectionStart>0&&this._textAreaState.value.substr(this._textAreaState.selectionStart-1,1)===e.data&&("ArrowRight"===r.code||"ArrowLeft"===r.code))return m.al&&console.log("[compositionstart] Handling long press case on macOS + arrow key",e),t.handleCompositionUpdate("x"),void this._onCompositionStart.fire({data:e.data});this._browser.isAndroid,this._onCompositionStart.fire({data:e.data})}}))),this._register(this._textArea.onCompositionUpdate((e=>{m.al&&console.log("[compositionupdate]",e);const t=this._currentComposition;if(!t)return;if(this._browser.isAndroid){const t=m.un.readFromTextArea(this._textArea,this._textAreaState),i=m.un.deduceAndroidCompositionInput(this._textAreaState,t);return this._textAreaState=t,this._onType.fire(i),void this._onCompositionUpdate.fire(e)}const i=t.handleCompositionUpdate(e.data);this._textAreaState=m.un.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(i),this._onCompositionUpdate.fire(e)}))),this._register(this._textArea.onCompositionEnd((e=>{m.al&&console.log("[compositionend]",e);const t=this._currentComposition;if(!t)return;if(this._currentComposition=null,this._browser.isAndroid){const e=m.un.readFromTextArea(this._textArea,this._textAreaState),t=m.un.deduceAndroidCompositionInput(this._textAreaState,e);return this._textAreaState=e,this._onType.fire(t),void this._onCompositionEnd.fire()}const i=t.handleCompositionUpdate(e.data);this._textAreaState=m.un.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(i),this._onCompositionEnd.fire()}))),this._register(this._textArea.onInput((e=>{if(m.al&&console.log("[input]",e),this._textArea.setIgnoreSelectionChangeTime("received input event"),this._currentComposition)return;const t=m.un.readFromTextArea(this._textArea,this._textAreaState),i=m.un.deduceInput(this._textAreaState,t,2===this._OS);(0!==i.replacePrevCharCnt||1!==i.text.length||!g.ZG(i.text.charCodeAt(0))&&127!==i.text.charCodeAt(0))&&(this._textAreaState=t,""===i.text&&0===i.replacePrevCharCnt&&0===i.replaceNextCharCnt&&0===i.positionDelta||this._onType.fire(i))}))),this._register(this._textArea.onCut((e=>{this._textArea.setIgnoreSelectionChangeTime("received cut event"),this._ensureClipboardGetsEditorSelection(e),this._asyncTriggerCut.schedule()}))),this._register(this._textArea.onCopy((e=>{this._ensureClipboardGetsEditorSelection(e)}))),this._register(this._textArea.onPaste((e=>{if(this._textArea.setIgnoreSelectionChangeTime("received paste event"),e.preventDefault(),!e.clipboardData)return;let[t,i]=L.getTextData(e.clipboardData);t&&(i=i||w.INSTANCE.get(t),this._onPaste.fire({text:t,metadata:i}))}))),this._register(this._textArea.onFocus((()=>{const e=this._hasFocus;this._setHasFocus(!0),this._accessibilityService.isScreenReaderOptimized()&&this._browser.isSafari&&!e&&this._hasFocus&&(this._asyncFocusGainWriteScreenReaderContent.value||(this._asyncFocusGainWriteScreenReaderContent.value=new h.pY((()=>this.writeNativeTextAreaContent("asyncFocusGain")),0)),this._asyncFocusGainWriteScreenReaderContent.value.schedule())}))),this._register(this._textArea.onBlur((()=>{this._currentComposition&&(this._currentComposition=null,this.writeNativeTextAreaContent("blurWithoutCompositionEnd"),this._onCompositionEnd.fire()),this._setHasFocus(!1)}))),this._register(this._textArea.onSyntheticTap((()=>{this._browser.isAndroid&&this._currentComposition&&(this._currentComposition=null,this.writeNativeTextAreaContent("tapWithoutCompositionEnd"),this._onCompositionEnd.fire())})))}_installSelectionChangeListener(){let e=0;return s.nm(this._textArea.ownerDocument,"selectionchange",(t=>{if(l.B.onSelectionChange(),!this._hasFocus)return;if(this._currentComposition)return;if(!this._browser.isChrome)return;const i=Date.now(),n=i-e;if(e=i,n<5)return;const o=i-this._textArea.getIgnoreSelectionChangeTime();if(this._textArea.resetSelectionChangeTime(),o<100)return;if(!this._textAreaState.selection)return;const s=this._textArea.getValue();if(this._textAreaState.value!==s)return;const r=this._textArea.getSelectionStart(),a=this._textArea.getSelectionEnd();if(this._textAreaState.selectionStart===r&&this._textAreaState.selectionEnd===a)return;const h=this._textAreaState.deduceEditorPosition(r),d=this._host.deduceModelPosition(h[0],h[1],h[2]),c=this._textAreaState.deduceEditorPosition(a),u=this._host.deduceModelPosition(c[0],c[1],c[2]),g=new f.Y(d.lineNumber,d.column,u.lineNumber,u.column);this._onSelectionChangeRequest.fire(g)}))}dispose(){super.dispose(),this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null)}focusTextArea(){this._setHasFocus(!0),this.refreshFocusState()}isFocused(){return this._hasFocus}refreshFocusState(){this._setHasFocus(this._textArea.hasFocus())}_setHasFocus(e){this._hasFocus!==e&&(this._hasFocus=e,this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null),this._hasFocus&&(this._selectionChangeListener=this._installSelectionChangeListener()),this._hasFocus&&this.writeNativeTextAreaContent("focusgain"),this._hasFocus?this._onFocus.fire():this._onBlur.fire())}_setAndWriteTextAreaState(e,t){this._hasFocus||(t=t.collapseSelection()),t.writeToTextArea(e,this._textArea,this._hasFocus),this._textAreaState=t}writeNativeTextAreaContent(e){!this._accessibilityService.isScreenReaderOptimized()&&"render"===e||this._currentComposition||(this._logService.trace("writeTextAreaState(reason: ".concat(e,")")),this._setAndWriteTextAreaState(e,this._host.getScreenReaderContent()))}_ensureClipboardGetsEditorSelection(e){const t=this._host.getDataToCopy(),i={version:1,isFromEmptySelection:t.isFromEmptySelection,multicursorText:t.multicursorText,mode:t.mode};w.INSTANCE.set(this._browser.isFirefox?t.text.replace(/\r\n/g,"\n"):t.text,i),e.preventDefault(),e.clipboardData&&L.setTextData(e.clipboardData,t.text,t.html,i)}};S=v([b(4,p.F),b(5,_.VZ)],S);const L={getTextData(e){const t=e.getData(u.v.text);let i=null;const n=e.getData("vscode-editor-data");if("string"===typeof n)try{i=JSON.parse(n),1!==i.version&&(i=null)}catch(o){}if(0===t.length&&null===i&&e.files.length>0){return[Array.prototype.slice.call(e.files,0).map((e=>e.name)).join("\n"),null]}return[t,i]},setTextData(e,t,i,n){e.setData(u.v.text,t),"string"===typeof i&&e.setData("text/html",i),e.setData("vscode-editor-data",JSON.stringify(n))}};class k extends c.JT{get ownerDocument(){return this._actual.ownerDocument}constructor(e){super(),this._actual=e,this.onKeyDown=this._register(new r.Y(this._actual,"keydown")).event,this.onKeyUp=this._register(new r.Y(this._actual,"keyup")).event,this.onCompositionStart=this._register(new r.Y(this._actual,"compositionstart")).event,this.onCompositionUpdate=this._register(new r.Y(this._actual,"compositionupdate")).event,this.onCompositionEnd=this._register(new r.Y(this._actual,"compositionend")).event,this.onBeforeInput=this._register(new r.Y(this._actual,"beforeinput")).event,this.onInput=this._register(new r.Y(this._actual,"input")).event,this.onCut=this._register(new r.Y(this._actual,"cut")).event,this.onCopy=this._register(new r.Y(this._actual,"copy")).event,this.onPaste=this._register(new r.Y(this._actual,"paste")).event,this.onFocus=this._register(new r.Y(this._actual,"focus")).event,this.onBlur=this._register(new r.Y(this._actual,"blur")).event,this._onSyntheticTap=this._register(new d.Q5),this.onSyntheticTap=this._onSyntheticTap.event,this._ignoreSelectionChangeTime=0,this._register(this.onKeyDown((()=>l.B.onKeyDown()))),this._register(this.onBeforeInput((()=>l.B.onBeforeInput()))),this._register(this.onInput((()=>l.B.onInput()))),this._register(this.onKeyUp((()=>l.B.onKeyUp()))),this._register(s.nm(this._actual,n.Tap,(()=>this._onSyntheticTap.fire())))}hasFocus(){const e=s.Ay(this._actual);return e?e.activeElement===this._actual:!!this._actual.isConnected&&s.vY()===this._actual}setIgnoreSelectionChangeTime(e){this._ignoreSelectionChangeTime=Date.now()}getIgnoreSelectionChangeTime(){return this._ignoreSelectionChangeTime}resetSelectionChangeTime(){this._ignoreSelectionChangeTime=0}getValue(){return this._actual.value}setValue(e,t){const i=this._actual;i.value!==t&&(this.setIgnoreSelectionChangeTime("setValue"),i.value=t)}getSelectionStart(){return"backward"===this._actual.selectionDirection?this._actual.selectionEnd:this._actual.selectionStart}getSelectionEnd(){return"backward"===this._actual.selectionDirection?this._actual.selectionStart:this._actual.selectionEnd}setSelectionRange(e,t,i){const n=this._actual;let r=null;const a=s.Ay(n);r=a?a.activeElement:s.vY();const l=s.Jj(r),h=r===n,d=n.selectionStart,c=n.selectionEnd;if(h&&d===t&&c===i)o.vU&&l.parent!==l&&n.focus();else{if(h)return this.setIgnoreSelectionChangeTime("setSelectionRange"),n.setSelectionRange(t,i),void(o.vU&&l.parent!==l&&n.focus());try{const e=s.vL(n);this.setIgnoreSelectionChangeTime("setSelectionRange"),n.focus(),n.setSelectionRange(t,i),s._0(n,e)}catch(u){}}}}},38954:(e,t,i)=>{i.d(t,{al:()=>s,ee:()=>a,un:()=>r});var n=i(25085),o=i(10670);const s=!1;class r{constructor(e,t,i,n,o){this.value=e,this.selectionStart=t,this.selectionEnd=i,this.selection=n,this.newlineCountBeforeSelection=o}toString(){return"[ <".concat(this.value,">, selectionStart: ").concat(this.selectionStart,", selectionEnd: ").concat(this.selectionEnd,"]")}static readFromTextArea(e,t){const i=e.getValue(),n=e.getSelectionStart(),o=e.getSelectionEnd();let s;if(t){i.substring(0,n)===t.value.substring(0,t.selectionStart)&&(s=t.newlineCountBeforeSelection)}return new r(i,n,o,null,s)}collapseSelection(){return this.selectionStart===this.value.length?this:new r(this.value,this.value.length,this.value.length,null,void 0)}writeToTextArea(e,t,i){s&&console.log("writeToTextArea ".concat(e,": ").concat(this.toString())),t.setValue(e,this.value),i&&t.setSelectionRange(e,this.selectionStart,this.selectionEnd)}deduceEditorPosition(e){var t,i,n,o,s,r,a,l;if(e<=this.selectionStart){const n=this.value.substring(e,this.selectionStart);return this._finishDeduceEditorPosition(null!==(i=null===(t=this.selection)||void 0===t?void 0:t.getStartPosition())&&void 0!==i?i:null,n,-1)}if(e>=this.selectionEnd){const t=this.value.substring(this.selectionEnd,e);return this._finishDeduceEditorPosition(null!==(o=null===(n=this.selection)||void 0===n?void 0:n.getEndPosition())&&void 0!==o?o:null,t,1)}const h=this.value.substring(this.selectionStart,e);if(-1===h.indexOf(String.fromCharCode(8230)))return this._finishDeduceEditorPosition(null!==(r=null===(s=this.selection)||void 0===s?void 0:s.getStartPosition())&&void 0!==r?r:null,h,1);const d=this.value.substring(e,this.selectionEnd);return this._finishDeduceEditorPosition(null!==(l=null===(a=this.selection)||void 0===a?void 0:a.getEndPosition())&&void 0!==l?l:null,d,-1)}_finishDeduceEditorPosition(e,t,i){let n=0,o=-1;for(;-1!==(o=t.indexOf("\n",o+1));)n++;return[e,i*t.length,n]}static deduceInput(e,t,i){if(!e)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};s&&(console.log("------------------------deduceInput"),console.log("PREVIOUS STATE: ".concat(e.toString())),console.log("CURRENT STATE: ".concat(t.toString())));const o=Math.min(n.Mh(e.value,t.value),e.selectionStart,t.selectionStart),r=Math.min(n.P1(e.value,t.value),e.value.length-e.selectionEnd,t.value.length-t.selectionEnd),a=e.value.substring(o,e.value.length-r),l=t.value.substring(o,t.value.length-r),h=e.selectionStart-o,d=e.selectionEnd-o,c=t.selectionStart-o,u=t.selectionEnd-o;if(s&&(console.log("AFTER DIFFING PREVIOUS STATE: <".concat(a,">, selectionStart: ").concat(h,", selectionEnd: ").concat(d)),console.log("AFTER DIFFING CURRENT STATE: <".concat(l,">, selectionStart: ").concat(c,", selectionEnd: ").concat(u))),c===u){const t=e.selectionStart-o;return s&&console.log("REMOVE PREVIOUS: ".concat(t," chars")),{text:l,replacePrevCharCnt:t,replaceNextCharCnt:0,positionDelta:0}}return{text:l,replacePrevCharCnt:d-h,replaceNextCharCnt:0,positionDelta:0}}static deduceAndroidCompositionInput(e,t){if(!e)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};if(s&&(console.log("------------------------deduceAndroidCompositionInput"),console.log("PREVIOUS STATE: ".concat(e.toString())),console.log("CURRENT STATE: ".concat(t.toString()))),e.value===t.value)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:t.selectionEnd-e.selectionEnd};const i=Math.min(n.Mh(e.value,t.value),e.selectionEnd),o=Math.min(n.P1(e.value,t.value),e.value.length-e.selectionEnd),r=e.value.substring(i,e.value.length-o),a=t.value.substring(i,t.value.length-o),l=e.selectionStart-i,h=e.selectionEnd-i,d=t.selectionStart-i,c=t.selectionEnd-i;return s&&(console.log("AFTER DIFFING PREVIOUS STATE: <".concat(r,">, selectionStart: ").concat(l,", selectionEnd: ").concat(h)),console.log("AFTER DIFFING CURRENT STATE: <".concat(a,">, selectionStart: ").concat(d,", selectionEnd: ").concat(c))),{text:a,replacePrevCharCnt:h,replaceNextCharCnt:r.length-h,positionDelta:c-a.length}}}r.EMPTY=new r("",0,0,null,void 0);class a{static _getPageOfLine(e,t){return Math.floor((e-1)/t)}static _getRangeForPage(e,t){const i=e*t,n=i+1,s=i+t;return new o.e(n,1,s+1,1)}static fromEditorSelection(e,t,i,n){const s=500,l=a._getPageOfLine(t.startLineNumber,i),h=a._getRangeForPage(l,i),d=a._getPageOfLine(t.endLineNumber,i),c=a._getRangeForPage(d,i);let u=h.intersectRanges(new o.e(1,1,t.startLineNumber,t.startColumn));if(n&&e.getValueLengthInRange(u,1)>s){const t=e.modifyPosition(u.getEndPosition(),-500);u=o.e.fromPositions(t,u.getEndPosition())}const g=e.getValueInRange(u,1),m=e.getLineCount(),f=e.getLineMaxColumn(m);let p=c.intersectRanges(new o.e(t.endLineNumber,t.endColumn,m,f));if(n&&e.getValueLengthInRange(p,1)>s){const t=e.modifyPosition(p.getStartPosition(),s);p=o.e.fromPositions(p.getStartPosition(),t)}const _=e.getValueInRange(p,1);let v;if(l===d||l+1===d)v=e.getValueInRange(t,1);else{const i=h.intersectRanges(t),n=c.intersectRanges(t);v=e.getValueInRange(i,1)+String.fromCharCode(8230)+e.getValueInRange(n,1)}return n&&v.length>1e3&&(v=v.substring(0,s)+String.fromCharCode(8230)+v.substring(v.length-s,v.length)),new r(g+v+_,g.length,g.length+v.length,t,u.endLineNumber-u.startLineNumber)}}},70469:(e,t,i)=>{i.d(t,{wk:()=>E,Ox:()=>L});var n=i(71721),o=i(42606),s=i(63686),r=i(70036),a=i(23001),l=i(38119),h=i(68170),d=i(2067),c=i(10670);class u{static columnSelect(e,t,i,n,o,s){const r=Math.abs(o-i)+1,a=i>o,l=n>s,u=ns)continue;if(_n)continue;if(p0&&n--,u.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,i.toViewLineNumber,n)}static columnSelectRight(e,t,i){let n=0;const o=Math.min(i.fromViewLineNumber,i.toViewLineNumber),s=Math.max(i.fromViewLineNumber,i.toViewLineNumber);for(let a=o;a<=s;a++){const i=t.getLineMaxColumn(a),o=e.visibleColumnFromColumn(t,new d.L(a,i));n=Math.max(n,o)}let r=i.toViewVisualColumn;return r{const i=e.get(l.$).getFocusedCodeEditor();return!(!i||!i.hasTextFocus())&&this._runEditorCommand(e,i,t)})),e.addImplementation(1e3,"generic-dom-input-textarea",((e,t)=>{const i=(0,b.vY)();return!!(i&&["input","textarea"].indexOf(i.tagName.toLowerCase())>=0)&&(this.runDOMCommand(i),!0)})),e.addImplementation(0,"generic-dom",((e,t)=>{const i=e.get(l.$).getActiveCodeEditor();return!!i&&(i.focus(),this._runEditorCommand(e,i,t))}))}_runEditorCommand(e,t,i){const n=this.runEditorCommand(e,t,i);return n||!0}}!function(e){class t extends w{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode}runCoreEditorCommand(e,t){if(!t.position)return;e.model.pushStackElement();e.setCursorStates(t.source,3,[m.P.moveTo(e,e.getPrimaryCursorState(),this._inSelectionMode,t.position,t.viewPosition)])&&2!==t.revealType&&e.revealAllCursors(t.source,!0,!0)}}e.MoveTo=(0,a.fK)(new t({id:"_moveTo",inSelectionMode:!1,precondition:void 0})),e.MoveToSelect=(0,a.fK)(new t({id:"_moveToSelect",inSelectionMode:!0,precondition:void 0}));class i extends w{runCoreEditorCommand(e,t){e.model.pushStackElement();const i=this._getColumnSelectResult(e,e.getPrimaryCursorState(),e.getCursorColumnSelectData(),t);null!==i&&(e.setCursorStates(t.source,3,i.viewStates.map((e=>h.Vi.fromViewState(e)))),e.setCursorColumnSelectData({isReal:!0,fromViewLineNumber:i.fromLineNumber,fromViewVisualColumn:i.fromVisualColumn,toViewLineNumber:i.toLineNumber,toViewVisualColumn:i.toVisualColumn}),i.reversed?e.revealTopMostCursor(t.source):e.revealBottomMostCursor(t.source))}}e.ColumnSelect=(0,a.fK)(new class extends i{constructor(){super({id:"columnSelect",precondition:void 0})}_getColumnSelectResult(e,t,i,n){if("undefined"===typeof n.position||"undefined"===typeof n.viewPosition||"undefined"===typeof n.mouseColumn)return null;const o=e.model.validatePosition(n.position),s=e.coordinatesConverter.validateViewPosition(new d.L(n.viewPosition.lineNumber,n.viewPosition.column),o),r=n.doColumnSelect?i.fromViewLineNumber:s.lineNumber,a=n.doColumnSelect?i.fromViewVisualColumn:n.mouseColumn-1;return u.columnSelect(e.cursorConfig,e,r,a,s.lineNumber,n.mouseColumn-1)}}),e.CursorColumnSelectLeft=(0,a.fK)(new class extends i{constructor(){super({id:"cursorColumnSelectLeft",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:3599,linux:{primary:0}}})}_getColumnSelectResult(e,t,i,n){return u.columnSelectLeft(e.cursorConfig,e,i)}}),e.CursorColumnSelectRight=(0,a.fK)(new class extends i{constructor(){super({id:"cursorColumnSelectRight",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:3601,linux:{primary:0}}})}_getColumnSelectResult(e,t,i,n){return u.columnSelectRight(e.cursorConfig,e,i)}});class s extends i{constructor(e){super(e),this._isPaged=e.isPaged}_getColumnSelectResult(e,t,i,n){return u.columnSelectUp(e.cursorConfig,e,i,this._isPaged)}}e.CursorColumnSelectUp=(0,a.fK)(new s({isPaged:!1,id:"cursorColumnSelectUp",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:3600,linux:{primary:0}}})),e.CursorColumnSelectPageUp=(0,a.fK)(new s({isPaged:!0,id:"cursorColumnSelectPageUp",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:3595,linux:{primary:0}}}));class l extends i{constructor(e){super(e),this._isPaged=e.isPaged}_getColumnSelectResult(e,t,i,n){return u.columnSelectDown(e.cursorConfig,e,i,this._isPaged)}}e.CursorColumnSelectDown=(0,a.fK)(new l({isPaged:!1,id:"cursorColumnSelectDown",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:3602,linux:{primary:0}}})),e.CursorColumnSelectPageDown=(0,a.fK)(new l({isPaged:!0,id:"cursorColumnSelectPageDown",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:3596,linux:{primary:0}}}));class g extends w{constructor(){super({id:"cursorMove",precondition:void 0,metadata:m.N.metadata})}runCoreEditorCommand(e,t){const i=m.N.parse(t);i&&this._runCursorMove(e,t.source,i)}_runCursorMove(e,t,i){e.model.pushStackElement(),e.setCursorStates(t,3,g._move(e,e.getCursorStates(),i)),e.revealAllCursors(t,!0)}static _move(e,t,i){const n=i.select,o=i.value;switch(i.direction){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:return m.P.simpleMove(e,t,i.direction,n,o,i.unit);case 11:case 13:case 12:case 14:return m.P.viewportMove(e,t,i.direction,n,o);default:return null}}}e.CursorMoveImpl=g,e.CursorMove=(0,a.fK)(new g);class f extends w{constructor(e){super(e),this._staticArgs=e.args}runCoreEditorCommand(e,t){let i=this._staticArgs;-1===this._staticArgs.value&&(i={direction:this._staticArgs.direction,unit:this._staticArgs.unit,select:this._staticArgs.select,value:t.pageSize||e.cursorConfig.pageSize}),e.model.pushStackElement(),e.setCursorStates(t.source,3,m.P.simpleMove(e,e.getCursorStates(),i.direction,i.select,i.value,i.unit)),e.revealAllCursors(t.source,!0)}}e.CursorLeft=(0,a.fK)(new f({args:{direction:0,unit:0,select:!1,value:1},id:"cursorLeft",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:15,mac:{primary:15,secondary:[288]}}})),e.CursorLeftSelect=(0,a.fK)(new f({args:{direction:0,unit:0,select:!0,value:1},id:"cursorLeftSelect",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:1039}})),e.CursorRight=(0,a.fK)(new f({args:{direction:1,unit:0,select:!1,value:1},id:"cursorRight",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:17,mac:{primary:17,secondary:[292]}}})),e.CursorRightSelect=(0,a.fK)(new f({args:{direction:1,unit:0,select:!0,value:1},id:"cursorRightSelect",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:1041}})),e.CursorUp=(0,a.fK)(new f({args:{direction:2,unit:2,select:!1,value:1},id:"cursorUp",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:16,mac:{primary:16,secondary:[302]}}})),e.CursorUpSelect=(0,a.fK)(new f({args:{direction:2,unit:2,select:!0,value:1},id:"cursorUpSelect",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:1040,secondary:[3088],mac:{primary:1040},linux:{primary:1040}}})),e.CursorPageUp=(0,a.fK)(new f({args:{direction:2,unit:2,select:!1,value:-1},id:"cursorPageUp",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:11}})),e.CursorPageUpSelect=(0,a.fK)(new f({args:{direction:2,unit:2,select:!0,value:-1},id:"cursorPageUpSelect",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:1035}})),e.CursorDown=(0,a.fK)(new f({args:{direction:3,unit:2,select:!1,value:1},id:"cursorDown",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:18,mac:{primary:18,secondary:[300]}}})),e.CursorDownSelect=(0,a.fK)(new f({args:{direction:3,unit:2,select:!0,value:1},id:"cursorDownSelect",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:1042,secondary:[3090],mac:{primary:1042},linux:{primary:1042}}})),e.CursorPageDown=(0,a.fK)(new f({args:{direction:3,unit:2,select:!1,value:-1},id:"cursorPageDown",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:12}})),e.CursorPageDownSelect=(0,a.fK)(new f({args:{direction:3,unit:2,select:!0,value:-1},id:"cursorPageDownSelect",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:1036}})),e.CreateCursor=(0,a.fK)(new class extends w{constructor(){super({id:"createCursor",precondition:void 0})}runCoreEditorCommand(e,t){if(!t.position)return;let i;i=t.wholeLine?m.P.line(e,e.getPrimaryCursorState(),!1,t.position,t.viewPosition):m.P.moveTo(e,e.getPrimaryCursorState(),!1,t.position,t.viewPosition);const n=e.getCursorStates();if(n.length>1){const o=i.modelState?i.modelState.position:null,s=i.viewState?i.viewState.position:null;for(let i=0,r=n.length;is&&(o=s);const r=new c.e(o,1,o,e.model.getLineMaxColumn(o));let a=0;if(i.at)switch(i.at){case S.RawAtArgument.Top:a=3;break;case S.RawAtArgument.Center:a=1;break;case S.RawAtArgument.Bottom:a=4}const l=e.coordinatesConverter.convertModelRangeToViewRange(r);e.revealRange(t.source,!1,l,a,0)}}),e.SelectAll=new class extends k{constructor(){super(a.Sq)}runDOMCommand(e){o.vU&&(e.focus(),e.select()),e.ownerDocument.execCommand("selectAll")}runEditorCommand(e,t,i){const n=t._getViewModel();n&&this.runCoreEditorCommand(n,i)}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates("keyboard",3,[m.P.selectAll(e,e.getPrimaryCursorState())])}},e.SetSelection=(0,a.fK)(new class extends w{constructor(){super({id:"setSelection",precondition:void 0})}runCoreEditorCommand(e,t){t.selection&&(e.model.pushStackElement(),e.setCursorStates(t.source,3,[h.Vi.fromModelSelection(t.selection)]))}})}(L||(L={}));const D=_.Ao.and(p.u.textInputFocus,p.u.columnSelection);function N(e,t){v.W.registerKeybindingRule({id:e,primary:t,when:D,weight:C+1})}function x(e){return e.register(),e}var E;N(L.CursorColumnSelectLeft.id,1039),N(L.CursorColumnSelectRight.id,1041),N(L.CursorColumnSelectUp.id,1040),N(L.CursorColumnSelectPageUp.id,1035),N(L.CursorColumnSelectDown.id,1042),N(L.CursorColumnSelectPageDown.id,1036),function(e){class t extends a._l{runEditorCommand(e,t,i){const n=t._getViewModel();n&&this.runCoreEditingCommand(t,n,i||{})}}e.CoreEditingCommand=t,e.LineBreakInsert=(0,a.fK)(new class extends t{constructor(){super({id:"lineBreakInsert",precondition:p.u.writable,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:0,mac:{primary:301}}})}runCoreEditingCommand(e,t,i){e.pushUndoStop(),e.executeCommands(this.id,f.u6.lineBreakInsert(t.cursorConfig,t.model,t.getCursorStates().map((e=>e.modelState.selection))))}}),e.Outdent=(0,a.fK)(new class extends t{constructor(){super({id:"outdent",precondition:p.u.writable,kbOpts:{weight:C,kbExpr:_.Ao.and(p.u.editorTextFocus,p.u.tabDoesNotMoveFocus),primary:1026}})}runCoreEditingCommand(e,t,i){e.pushUndoStop(),e.executeCommands(this.id,f.u6.outdent(t.cursorConfig,t.model,t.getCursorStates().map((e=>e.modelState.selection)))),e.pushUndoStop()}}),e.Tab=(0,a.fK)(new class extends t{constructor(){super({id:"tab",precondition:p.u.writable,kbOpts:{weight:C,kbExpr:_.Ao.and(p.u.editorTextFocus,p.u.tabDoesNotMoveFocus),primary:2}})}runCoreEditingCommand(e,t,i){e.pushUndoStop(),e.executeCommands(this.id,f.u6.tab(t.cursorConfig,t.model,t.getCursorStates().map((e=>e.modelState.selection)))),e.pushUndoStop()}}),e.DeleteLeft=(0,a.fK)(new class extends t{constructor(){super({id:"deleteLeft",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:1,secondary:[1025],mac:{primary:1,secondary:[1025,294,257]}}})}runCoreEditingCommand(e,t,i){const[n,o]=g.A.deleteLeft(t.getPrevEditOperationType(),t.cursorConfig,t.model,t.getCursorStates().map((e=>e.modelState.selection)),t.getCursorAutoClosedCharacters());n&&e.pushUndoStop(),e.executeCommands(this.id,o),t.setPrevEditOperationType(2)}}),e.DeleteRight=(0,a.fK)(new class extends t{constructor(){super({id:"deleteRight",precondition:void 0,kbOpts:{weight:C,kbExpr:p.u.textInputFocus,primary:20,mac:{primary:20,secondary:[290,276]}}})}runCoreEditingCommand(e,t,i){const[n,o]=g.A.deleteRight(t.getPrevEditOperationType(),t.cursorConfig,t.model,t.getCursorStates().map((e=>e.modelState.selection)));n&&e.pushUndoStop(),e.executeCommands(this.id,o),t.setPrevEditOperationType(3)}}),e.Undo=new class extends k{constructor(){super(a.n_)}runDOMCommand(e){e.ownerDocument.execCommand("undo")}runEditorCommand(e,t,i){if(t.hasModel()&&!0!==t.getOption(91))return t.getModel().undo()}},e.Redo=new class extends k{constructor(){super(a.kz)}runDOMCommand(e){e.ownerDocument.execCommand("redo")}runEditorCommand(e,t,i){if(t.hasModel()&&!0!==t.getOption(91))return t.getModel().redo()}}}(E||(E={}));class I extends a.mY{constructor(e,t,i){super({id:e,precondition:void 0,metadata:i}),this._handlerId=t}runCommand(e,t){const i=e.get(l.$).getFocusedCodeEditor();i&&i.trigger("keyboard",this._handlerId,t)}}function T(e,t){x(new I("default:"+e,e)),x(new I(e,e,t))}T("type",{description:"Type",args:[{name:"args",schema:{type:"object",required:["text"],properties:{text:{type:"string"}}}}]}),T("replacePreviousChar"),T("compositionType"),T("compositionStart"),T("compositionEnd"),T("paste"),T("cut")},20411:(e,t,i)=>{i.d(t,{CL:()=>o,Pi:()=>r,QI:()=>s});var n=i(7906);function o(e){return!(!e||"function"!==typeof e.getEditorType)&&e.getEditorType()===n.g.ICodeEditor}function s(e){return!(!e||"function"!==typeof e.getEditorType)&&e.getEditorType()===n.g.IDiffEditor}function r(e){return o(e)?e:s(e)?e.getModifiedEditor():function(e){return!!e&&"object"===typeof e&&"function"===typeof e.onDidChangeActiveEditor}(e)&&o(e.activeCodeEditor)?e.activeCodeEditor:null}},64370:(e,t,i)=>{i.d(t,{AL:()=>v,N5:()=>p,Pp:()=>m,YN:()=>h,gy:()=>f,kG:()=>g,rU:()=>d,t7:()=>b,tC:()=>_});var n=i(85714),o=i(13505),s=i(21494),r=i(60282),a=i(89599),l=i(87701);class h{constructor(e,t){this.x=e,this.y=t,this._pageCoordinatesBrand=void 0}toClientCoordinates(e){return new d(this.x-e.scrollX,this.y-e.scrollY)}}class d{constructor(e,t){this.clientX=e,this.clientY=t,this._clientCoordinatesBrand=void 0}toPageCoordinates(e){return new h(this.clientX+e.scrollX,this.clientY+e.scrollY)}}class c{constructor(e,t,i,n){this.x=e,this.y=t,this.width=i,this.height=n,this._editorPagePositionBrand=void 0}}class u{constructor(e,t){this.x=e,this.y=t,this._positionRelativeToEditorBrand=void 0}}function g(e){const t=n.i(e);return new c(t.left,t.top,t.width,t.height)}function m(e,t,i){const n=t.width/e.offsetWidth,o=t.height/e.offsetHeight,s=(i.x-t.x)/n,r=(i.y-t.y)/o;return new u(s,r)}class f extends s.n{constructor(e,t,i){super(n.Jj(i),e),this._editorMouseEventBrand=void 0,this.isFromPointerCapture=t,this.pos=new h(this.posx,this.posy),this.editorPos=g(i),this.relativePos=m(i,this.editorPos,this.pos)}}class p{constructor(e){this._editorViewDomNode=e}_create(e){return new f(e,!1,this._editorViewDomNode)}onContextMenu(e,t){return n.nm(e,"contextmenu",(e=>{t(this._create(e))}))}onMouseUp(e,t){return n.nm(e,"mouseup",(e=>{t(this._create(e))}))}onMouseDown(e,t){return n.nm(e,n.tw.MOUSE_DOWN,(e=>{t(this._create(e))}))}onPointerDown(e,t){return n.nm(e,n.tw.POINTER_DOWN,(e=>{t(this._create(e),e.pointerId)}))}onMouseLeave(e,t){return n.nm(e,n.tw.MOUSE_LEAVE,(e=>{t(this._create(e))}))}onMouseMove(e,t){return n.nm(e,"mousemove",(e=>t(this._create(e))))}}class _{constructor(e){this._editorViewDomNode=e}_create(e){return new f(e,!1,this._editorViewDomNode)}onPointerUp(e,t){return n.nm(e,"pointerup",(e=>{t(this._create(e))}))}onPointerDown(e,t){return n.nm(e,n.tw.POINTER_DOWN,(e=>{t(this._create(e),e.pointerId)}))}onPointerLeave(e,t){return n.nm(e,n.tw.POINTER_LEAVE,(e=>{t(this._create(e))}))}onPointerMove(e,t){return n.nm(e,"pointermove",(e=>t(this._create(e))))}}class v extends a.JT{constructor(e){super(),this._editorViewDomNode=e,this._globalPointerMoveMonitor=this._register(new o.C),this._keydownListener=null}startMonitoring(e,t,i,o,s){this._keydownListener=n.mu(e.ownerDocument,"keydown",(e=>{e.toKeyCodeChord().isModifierKey()||this._globalPointerMoveMonitor.stopMonitoring(!0,e.browserEvent)}),!0),this._globalPointerMoveMonitor.startMonitoring(e,t,i,(e=>{o(new f(e,!0,this._editorViewDomNode))}),(e=>{this._keydownListener.dispose(),s(e)}))}stopMonitoring(){this._globalPointerMoveMonitor.stopMonitoring(!0)}}class b{constructor(e){this._editor=e,this._instanceId=++b._idPool,this._counter=0,this._rules=new Map,this._garbageCollectionScheduler=new r.pY((()=>this.garbageCollect()),1e3)}createClassNameRef(e){const t=this.getOrCreateRule(e);return t.increaseRefCount(),{className:t.className,dispose:()=>{t.decreaseRefCount(),this._garbageCollectionScheduler.schedule()}}}getOrCreateRule(e){const t=this.computeUniqueKey(e);let i=this._rules.get(t);if(!i){const o=this._counter++;i=new C(t,"dyn-rule-".concat(this._instanceId,"-").concat(o),n.OO(this._editor.getContainerDomNode())?this._editor.getContainerDomNode():void 0,e),this._rules.set(t,i)}return i}computeUniqueKey(e){return JSON.stringify(e)}garbageCollect(){for(const e of this._rules.values())e.hasReferences()||(this._rules.delete(e.key),e.dispose())}}b._idPool=0;class C{constructor(e,t,i,o){this.key=e,this.className=t,this.properties=o,this._referenceCount=0,this._styleElementDisposables=new a.SL,this._styleElement=n.dS(i,void 0,this._styleElementDisposables),this._styleElement.textContent=this.getCssText(this.className,this.properties)}getCssText(e,t){let i=".".concat(e," {");for(const n in t){const e=t[n];let o;o="object"===typeof e?(0,l.n_1)(e.id):e;const s=w(n);i+="\n\t".concat(s,": ").concat(o,";")}return i+="\n}",i}dispose(){this._styleElementDisposables.dispose(),this._styleElement=void 0}increaseRefCount(){this._referenceCount++}decreaseRefCount(){this._referenceCount--}hasReferences(){return this._referenceCount>0}}function w(e){return e.replace(/(^[A-Z])/,(e=>{let[t]=e;return t.toLowerCase()})).replace(/([A-Z])/g,(e=>{let[t]=e;return"-".concat(t.toLowerCase())}))}},23001:(e,t,i)=>{i.d(t,{AJ:()=>w,QG:()=>T,Qr:()=>E,R6:()=>L,Sq:()=>F,Uc:()=>n,_K:()=>M,_l:()=>S,fK:()=>x,jY:()=>k,kz:()=>P,mY:()=>C,n_:()=>O,rn:()=>I,sb:()=>N,x1:()=>D});var n,o=i(71721),s=i(82682),r=i(38119),a=i(2067),l=i(42175),h=i(93984),d=i(48489),c=i(60982),u=i(24920),g=i(34304),m=i(86728),f=i(70311),p=i(38015),_=i(63686),v=i(83717),b=i(85714);class C{constructor(e){this.id=e.id,this.precondition=e.precondition,this._kbOpts=e.kbOpts,this._menuOpts=e.menuOpts,this.metadata=e.metadata}register(){if(Array.isArray(this._menuOpts)?this._menuOpts.forEach(this._registerMenuItem,this):this._menuOpts&&this._registerMenuItem(this._menuOpts),this._kbOpts){const e=Array.isArray(this._kbOpts)?this._kbOpts:[this._kbOpts];for(const t of e){let e=t.kbExpr;this.precondition&&(e=e?u.Ao.and(e,this.precondition):this.precondition);const i={id:this.id,weight:t.weight,args:t.args,when:e,primary:t.primary,secondary:t.secondary,win:t.win,linux:t.linux,mac:t.mac};m.W.registerKeybindingRule(i)}}c.P.registerCommand({id:this.id,handler:(e,t)=>this.runCommand(e,t),metadata:this.metadata})}_registerMenuItem(e){d.BH.appendMenuItem(e.menuId,{group:e.group,command:{id:this.id,title:e.title,icon:e.icon,precondition:this.precondition},when:e.when,order:e.order})}}class w extends C{constructor(){super(...arguments),this._implementations=[]}addImplementation(e,t,i,n){return this._implementations.push({priority:e,name:t,implementation:i,when:n}),this._implementations.sort(((e,t)=>t.priority-e.priority)),{dispose:()=>{for(let e=0;e{if(e.get(u.i6).contextMatchesRules(null!==i&&void 0!==i?i:void 0))return n(e,s,t)}))}runCommand(e,t){return S.runEditorCommand(e,t,this.precondition,((e,t,i)=>this.runEditorCommand(e,t,i)))}}class L extends S{static convertOptions(e){let t;function i(t){return t.menuId||(t.menuId=d.eH.EditorContext),t.title||(t.title=e.label),t.when=u.Ao.and(e.precondition,t.when),t}return t=Array.isArray(e.menuOpts)?e.menuOpts:e.menuOpts?[e.menuOpts]:[],Array.isArray(e.contextMenuOpts)?t.push(...e.contextMenuOpts.map(i)):e.contextMenuOpts&&t.push(i(e.contextMenuOpts)),e.menuOpts=t,e}constructor(e){super(L.convertOptions(e)),this.label=e.label,this.alias=e.alias}runEditorCommand(e,t,i){return this.reportTelemetry(e,t),this.run(e,t,i||{})}reportTelemetry(e,t){e.get(p.b).publicLog2("editorActionInvoked",{name:this.label,id:this.id})}}class k extends L{constructor(){super(...arguments),this._implementations=[]}addImplementation(e,t){return this._implementations.push([e,t]),this._implementations.sort(((e,t)=>t[0]-e[0])),{dispose:()=>{for(let e=0;e1?t-1:0),n=1;n{var t,n;const o=e.get(u.i6),r=e.get(v.VZ);if(o.contextMatchesRules(null!==(t=this.desc.precondition)&&void 0!==t?t:void 0))return this.runEditorCommand(e,s,...i);r.debug("[EditorAction2] NOT running command because its precondition is FALSE",this.desc.id,null===(n=this.desc.precondition)||void 0===n?void 0:n.serialize())}))}}function N(e,t){c.P.registerCommand(e,(function(e){for(var i=arguments.length,n=new Array(i>1?i-1:0),o=1;onew Promise(((i,o)=>{try{i(r.invokeFunction(t,e.object.textEditorModel,a.L.lift(c),n.slice(2)))}catch(s){o(s)}})).finally((()=>{e.dispose()}))))}))}function x(e){return A.INSTANCE.registerEditorCommand(e),e}function E(e){const t=new e;return A.INSTANCE.registerEditorAction(t),t}function I(e){return A.INSTANCE.registerEditorAction(e),e}function T(e){A.INSTANCE.registerEditorAction(e)}function M(e,t,i){A.INSTANCE.registerEditorContribution(e,t,i)}!function(e){e.getEditorCommand=function(e){return A.INSTANCE.getEditorCommand(e)},e.getEditorActions=function(){return A.INSTANCE.getEditorActions()},e.getEditorContributions=function(){return A.INSTANCE.getEditorContributions()},e.getSomeEditorContributions=function(e){return A.INSTANCE.getEditorContributions().filter((t=>e.indexOf(t.id)>=0))},e.getDiffEditorContributions=function(){return A.INSTANCE.getDiffEditorContributions()}}(n||(n={}));class A{constructor(){this.editorContributions=[],this.diffEditorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}registerEditorContribution(e,t,i){this.editorContributions.push({id:e,ctor:t,instantiation:i})}getEditorContributions(){return this.editorContributions.slice(0)}getDiffEditorContributions(){return this.diffEditorContributions.slice(0)}registerEditorAction(e){e.register(),this.editorActions.push(e)}getEditorActions(){return this.editorActions}registerEditorCommand(e){e.register(),this.editorCommands[e.id]=e}getEditorCommand(e){return this.editorCommands[e]||null}}function R(e){return e.register(),e}A.INSTANCE=new A,f.B.add("editor.contributions",A.INSTANCE);const O=R(new w({id:"undo",precondition:void 0,kbOpts:{weight:0,primary:2104},menuOpts:[{menuId:d.eH.MenubarEditMenu,group:"1_do",title:o.NC({key:"miUndo",comment:["&& denotes a mnemonic"]},"&&Undo"),order:1},{menuId:d.eH.CommandPalette,group:"",title:o.NC("undo","Undo"),order:1}]}));R(new y(O,{id:"default:undo",precondition:void 0}));const P=R(new w({id:"redo",precondition:void 0,kbOpts:{weight:0,primary:2103,secondary:[3128],mac:{primary:3128}},menuOpts:[{menuId:d.eH.MenubarEditMenu,group:"1_do",title:o.NC({key:"miRedo",comment:["&& denotes a mnemonic"]},"&&Redo"),order:2},{menuId:d.eH.CommandPalette,group:"",title:o.NC("redo","Redo"),order:1}]}));R(new y(P,{id:"default:redo",precondition:void 0}));const F=R(new w({id:"editor.action.selectAll",precondition:void 0,kbOpts:{weight:0,kbExpr:null,primary:2079},menuOpts:[{menuId:d.eH.MenubarSelectionMenu,group:"1_basic",title:o.NC({key:"miSelectAll",comment:["&& denotes a mnemonic"]},"&&Select All"),order:1},{menuId:d.eH.CommandPalette,group:"",title:o.NC("selectAll","Select All"),order:1}]}))},621:(e,t,i)=>{i.d(t,{Gl:()=>l,fo:()=>a,vu:()=>r});var n=i(34304),o=i(82682),s=i(63686);const r=(0,n.yh)("IWorkspaceEditService");class a{constructor(e){this.metadata=e}static convert(e){return e.edits.map((e=>{if(l.is(e))return l.lift(e);if(h.is(e))return h.lift(e);throw new Error("Unsupported edit")}))}}class l extends a{static is(e){return e instanceof l||(0,s.Kn)(e)&&o.o.isUri(e.resource)&&(0,s.Kn)(e.textEdit)}static lift(e){return e instanceof l?e:new l(e.resource,e.textEdit,e.versionId,e.metadata)}constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;super(arguments.length>3?arguments[3]:void 0),this.resource=e,this.textEdit=t,this.versionId=i}}class h extends a{static is(e){return e instanceof h||(0,s.Kn)(e)&&(Boolean(e.newResource)||Boolean(e.oldResource))}static lift(e){return e instanceof h?e:new h(e.oldResource,e.newResource,e.options,e.metadata)}constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super(arguments.length>3?arguments[3]:void 0),this.oldResource=e,this.newResource=t,this.options=i}}},38119:(e,t,i)=>{i.d(t,{$:()=>n});const n=(0,i(34304).yh)("codeEditorService")},56965:(e,t,i)=>{i.d(t,{Q8:()=>We,eu:()=>Oe});var n=i(60282),o=i(89599),s=i(85108),r=i(24219),a=i(10451),l=i(21511),h=i(25085);const d="$initialize";let c=!1;function u(e){l.$L&&(c||(c=!0,console.warn("Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq")),console.warn(e.message))}class g{constructor(e,t,i,n){this.vsWorker=e,this.req=t,this.method=i,this.args=n,this.type=0}}class m{constructor(e,t,i,n){this.vsWorker=e,this.seq=t,this.res=i,this.err=n,this.type=1}}class f{constructor(e,t,i,n){this.vsWorker=e,this.req=t,this.eventName=i,this.arg=n,this.type=2}}class p{constructor(e,t,i){this.vsWorker=e,this.req=t,this.event=i,this.type=3}}class _{constructor(e,t){this.vsWorker=e,this.req=t,this.type=4}}class v{constructor(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(e){this._workerId=e}sendMessage(e,t){const i=String(++this._lastSentReq);return new Promise(((n,o)=>{this._pendingReplies[i]={resolve:n,reject:o},this._send(new g(this._workerId,i,e,t))}))}listen(e,t){let i=null;const n=new r.Q5({onWillAddFirstListener:()=>{i=String(++this._lastSentReq),this._pendingEmitters.set(i,n),this._send(new f(this._workerId,i,e,t))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(i),this._send(new _(this._workerId,i)),i=null}});return n.event}handleMessage(e){e&&e.vsWorker&&(-1!==this._workerId&&e.vsWorker!==this._workerId||this._handleMessage(e))}_handleMessage(e){switch(e.type){case 1:return this._handleReplyMessage(e);case 0:return this._handleRequestMessage(e);case 2:return this._handleSubscribeEventMessage(e);case 3:return this._handleEventMessage(e);case 4:return this._handleUnsubscribeEventMessage(e)}}_handleReplyMessage(e){if(!this._pendingReplies[e.seq])return void console.warn("Got reply to unknown seq");const t=this._pendingReplies[e.seq];if(delete this._pendingReplies[e.seq],e.err){let i=e.err;return e.err.$isError&&(i=new Error,i.name=e.err.name,i.message=e.err.message,i.stack=e.err.stack),void t.reject(i)}t.resolve(e.res)}_handleRequestMessage(e){const t=e.req;this._handler.handleMessage(e.method,e.args).then((e=>{this._send(new m(this._workerId,t,e,void 0))}),(e=>{e.detail instanceof Error&&(e.detail=(0,s.ri)(e.detail)),this._send(new m(this._workerId,t,void 0,(0,s.ri)(e)))}))}_handleSubscribeEventMessage(e){const t=e.req,i=this._handler.handleEvent(e.eventName,e.arg)((e=>{this._send(new p(this._workerId,t,e))}));this._pendingEvents.set(t,i)}_handleEventMessage(e){this._pendingEmitters.has(e.req)?this._pendingEmitters.get(e.req).fire(e.event):console.warn("Got event for unknown req")}_handleUnsubscribeEventMessage(e){this._pendingEvents.has(e.req)?(this._pendingEvents.get(e.req).dispose(),this._pendingEvents.delete(e.req)):console.warn("Got unsubscribe for unknown req")}_send(e){const t=[];if(0===e.type)for(let i=0;i{this._protocol.handleMessage(e)}),(e=>{null===n||void 0===n||n(e)}))),this._protocol=new v({sendMessage:(e,t)=>{this._worker.postMessage(e,t)},handleMessage:(e,t)=>{if("function"!==typeof i[e])return Promise.reject(new Error("Missing method "+e+" on main thread host."));try{return Promise.resolve(i[e].apply(i,t))}catch(n){return Promise.reject(n)}},handleEvent:(e,t)=>{if(w(e)){const n=i[e].call(i,t);if("function"!==typeof n)throw new Error("Missing dynamic event ".concat(e," on main thread host."));return n}if(C(e)){const t=i[e];if("function"!==typeof t)throw new Error("Missing event ".concat(e," on main thread host."));return t}throw new Error("Malformed event name ".concat(e))}}),this._protocol.setWorkerId(this._worker.getId());let o=null;const s=globalThis.require;"undefined"!==typeof s&&"function"===typeof s.getConfig?o=s.getConfig():"undefined"!==typeof globalThis.requirejs&&(o=globalThis.requirejs.s.contexts._.config);const r=(0,a.$E)(i);this._onModuleLoaded=this._protocol.sendMessage(d,[this._worker.getId(),JSON.parse(JSON.stringify(o)),t,r]);const l=(e,t)=>this._request(e,t),h=(e,t)=>this._protocol.listen(e,t);this._lazyProxy=new Promise(((e,i)=>{n=i,this._onModuleLoaded.then((t=>{e(y(t,l,h))}),(e=>{i(e),this._onError("Worker failed to load "+t,e)}))}))}getProxyObject(){return this._lazyProxy}_request(e,t){return new Promise(((i,n)=>{this._onModuleLoaded.then((()=>{this._protocol.sendMessage(e,t).then(i,n)}),n)}))}_onError(e,t){console.error(e),console.info(t)}}function C(e){return"o"===e[0]&&"n"===e[1]&&h.df(e.charCodeAt(2))}function w(e){return/^onDynamic/.test(e)&&h.df(e.charCodeAt(9))}function y(e,t,i){const n=e=>function(){const i=Array.prototype.slice.call(arguments,0);return t(e,i)},o=e=>function(t){return i(e,t)},s={};for(const r of e)w(r)?s[r]=o(r):C(r)?s[r]=i(r,void 0):s[r]=n(r);return s}const S=(0,i(52047).Z)("defaultWorkerFactory",{createScriptURL:e=>e});class L extends o.JT{constructor(e,t,i,n,s){super(),this.id=t,this.label=i;const r=function(e){const t=globalThis.MonacoEnvironment;if(t){if("function"===typeof t.getWorker)return t.getWorker("workerMain.js",e);if("function"===typeof t.getWorkerUrl){const i=t.getWorkerUrl("workerMain.js",e);return new Worker(S?S.createScriptURL(i):i,{name:e})}}throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}(i);"function"===typeof r.then?this.worker=r:this.worker=Promise.resolve(r),this.postMessage(e,[]),this.worker.then((e=>{e.onmessage=function(e){n(e.data)},e.onmessageerror=s,"function"===typeof e.addEventListener&&e.addEventListener("error",s)})),this._register((0,o.OF)((()=>{var e;null===(e=this.worker)||void 0===e||e.then((e=>{e.onmessage=null,e.onmessageerror=null,e.removeEventListener("error",s),e.terminate()})),this.worker=null})))}getId(){return this.id}postMessage(e,t){var i;null===(i=this.worker)||void 0===i||i.then((i=>{try{i.postMessage(e,t)}catch(n){(0,s.dL)(n),(0,s.dL)(new Error("FAILED to post message to '".concat(this.label,"'-worker"),{cause:n}))}}))}}class k{constructor(e){this._label=e,this._webWorkerFailedBeforeError=!1}create(e,t,i){const n=++k.LAST_WORKER_ID;if(this._webWorkerFailedBeforeError)throw this._webWorkerFailedBeforeError;return new L(e,n,this._label||"anonymous"+n,t,(e=>{u(e),this._webWorkerFailedBeforeError=e,i(e)}))}}k.LAST_WORKER_ID=0;var D=i(10670),N=i(40801),x=i(24323),E=i(82682),I=i(2067),T=i(7967);class M{constructor(e,t,i,n){this._uri=e,this._lines=t,this._eol=i,this._versionId=n,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}get version(){return this._versionId}getText(){return null===this._cachedTextValue&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(e){e.eol&&e.eol!==this._eol&&(this._eol=e.eol,this._lineStarts=null);const t=e.changes;for(const i of t)this._acceptDeleteRange(i.range),this._acceptInsertText(new I.L(i.range.startLineNumber,i.range.startColumn),i.text);this._versionId=e.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const e=this._eol.length,t=this._lines.length,i=new Uint32Array(t);for(let n=0;nt&&(t=s),n>i&&(i=n),r>i&&(i=r)}t++,i++;const n=new O(i,t,0);for(let o=0,s=e.length;o=this._maxCharCode?0:this._states.get(e,t)}}let F=null;let B=null;class z{static _createLink(e,t,i,n,o){let s=o-1;do{const i=t.charCodeAt(s);if(2!==e.get(i))break;s--}while(s>n);if(n>0){const e=t.charCodeAt(n-1),i=t.charCodeAt(s);(40===e&&41===i||91===e&&93===i||123===e&&125===i)&&s--}return{range:{startLineNumber:i,startColumn:n+1,endLineNumber:i,endColumn:s+2},url:t.substring(n,s+1)}}static computeLinks(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(null===F&&(F=new P([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),F);const i=function(){if(null===B){B=new R.N(0);const e=" \t<>'\"\u3001\u3002\uff61\uff64\uff0c\uff0e\uff1a\uff1b\u2018\u3008\u300c\u300e\u3014\uff08\uff3b\uff5b\uff62\uff63\uff5d\uff3d\uff09\u3015\u300f\u300d\u3009\u2019\uff40\uff5e\u2026";for(let i=0;i=0?(n+=i?1:-1,n<0?n=e.length-1:n%=e.length,e[n]):null}}V.INSTANCE=new V;var W=i(13930),H=i(6459),K=i(90428),U=i(55338),j=i(94739),q=i(39880),G=i(56590);const Q=3;class Z{computeDiff(e,t,i){var n;const o=new te(e,t,{maxComputationTime:i.maxComputationTimeMs,shouldIgnoreTrimWhitespace:i.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}).computeDiff(),s=[];let r=null;for(const a of o.changes){let e,t;e=0===a.originalEndLineNumber?new G.z(a.originalStartLineNumber+1,a.originalStartLineNumber+1):new G.z(a.originalStartLineNumber,a.originalEndLineNumber+1),t=0===a.modifiedEndLineNumber?new G.z(a.modifiedStartLineNumber+1,a.modifiedStartLineNumber+1):new G.z(a.modifiedStartLineNumber,a.modifiedEndLineNumber+1);let i=new j.gB(e,t,null===(n=a.charChanges)||void 0===n?void 0:n.map((e=>new j.iy(new D.e(e.originalStartLineNumber,e.originalStartColumn,e.originalEndLineNumber,e.originalEndColumn),new D.e(e.modifiedStartLineNumber,e.modifiedStartColumn,e.modifiedEndLineNumber,e.modifiedEndColumn)))));r&&(r.modified.endLineNumberExclusive!==i.modified.startLineNumber&&r.original.endLineNumberExclusive!==i.original.startLineNumber||(i=new j.gB(r.original.join(i.original),r.modified.join(i.modified),r.innerChanges&&i.innerChanges?r.innerChanges.concat(i.innerChanges):void 0),s.pop())),s.push(i),r=i}return(0,q.eZ)((()=>(0,q.DM)(s,((e,t)=>t.original.startLineNumber-e.original.endLineNumberExclusive===t.modified.startLineNumber-e.modified.endLineNumberExclusive&&e.original.endLineNumberExclusive(10===e?"\\n":String.fromCharCode(e))+"-(".concat(this._lineNumbers[t],",").concat(this._columns[t],")"))).join(", ")+"]"}_assertIndex(e,t){if(e<0||e>=t.length)throw new Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(e){return e>0&&e===this._lineNumbers.length?this.getEndLineNumber(e-1):(this._assertIndex(e,this._lineNumbers),this._lineNumbers[e])}getEndLineNumber(e){return-1===e?this.getStartLineNumber(e+1):(this._assertIndex(e,this._lineNumbers),10===this._charCodes[e]?this._lineNumbers[e]+1:this._lineNumbers[e])}getStartColumn(e){return e>0&&e===this._columns.length?this.getEndColumn(e-1):(this._assertIndex(e,this._columns),this._columns[e])}getEndColumn(e){return-1===e?this.getStartColumn(e+1):(this._assertIndex(e,this._columns),10===this._charCodes[e]?1:this._columns[e]+1)}}class X{constructor(e,t,i,n,o,s,r,a){this.originalStartLineNumber=e,this.originalStartColumn=t,this.originalEndLineNumber=i,this.originalEndColumn=n,this.modifiedStartLineNumber=o,this.modifiedStartColumn=s,this.modifiedEndLineNumber=r,this.modifiedEndColumn=a}static createFromDiffChange(e,t,i){const n=t.getStartLineNumber(e.originalStart),o=t.getStartColumn(e.originalStart),s=t.getEndLineNumber(e.originalStart+e.originalLength-1),r=t.getEndColumn(e.originalStart+e.originalLength-1),a=i.getStartLineNumber(e.modifiedStart),l=i.getStartColumn(e.modifiedStart),h=i.getEndLineNumber(e.modifiedStart+e.modifiedLength-1),d=i.getEndColumn(e.modifiedStart+e.modifiedLength-1);return new X(n,o,s,r,a,l,h,d)}}class ee{constructor(e,t,i,n,o){this.originalStartLineNumber=e,this.originalEndLineNumber=t,this.modifiedStartLineNumber=i,this.modifiedEndLineNumber=n,this.charChanges=o}static createFromDiffResult(e,t,i,n,o,s,r){let a,l,h,d,c;if(0===t.originalLength?(a=i.getStartLineNumber(t.originalStart)-1,l=0):(a=i.getStartLineNumber(t.originalStart),l=i.getEndLineNumber(t.originalStart+t.originalLength-1)),0===t.modifiedLength?(h=n.getStartLineNumber(t.modifiedStart)-1,d=0):(h=n.getStartLineNumber(t.modifiedStart),d=n.getEndLineNumber(t.modifiedStart+t.modifiedLength-1)),s&&t.originalLength>0&&t.originalLength<20&&t.modifiedLength>0&&t.modifiedLength<20&&o()){const s=i.createCharSequence(e,t.originalStart,t.originalStart+t.originalLength-1),a=n.createCharSequence(e,t.modifiedStart,t.modifiedStart+t.modifiedLength-1);if(s.getElements().length>0&&a.getElements().length>0){let e=Y(s,a,o,!0).changes;r&&(e=function(e){if(e.length<=1)return e;const t=[e[0]];let i=t[0];for(let n=1,o=e.length;n1&&r>1;){if(e.charCodeAt(i-2)!==t.charCodeAt(r-2))break;i--,r--}(i>1||r>1)&&this._pushTrimWhitespaceCharChange(n,o+1,1,i,s+1,1,r)}{let i=ne(e,1),r=ne(t,1);const a=e.length+1,l=t.length+1;for(;i!0;const t=Date.now();return()=>Date.now()-tnew Z,ae=()=>new se.DW;var le=i(89652);function he(e){const t=[];for(const i of e){const e=Number(i);(e||0===e&&""!==i.replace(/\s/g,""))&&t.push(e)}return t}function de(e,t,i,n){return{red:e/255,blue:i/255,green:t/255,alpha:n}}function ce(e,t){const i=t.index,n=t[0].length;if(!i)return;const o=e.positionAt(i);return{startLineNumber:o.lineNumber,startColumn:o.column,endLineNumber:o.lineNumber,endColumn:o.column+n}}function ue(e,t){if(!e)return;const i=le.Il.Format.CSS.parseHex(t);return i?{range:e,color:de(i.rgba.r,i.rgba.g,i.rgba.b,i.rgba.a)}:void 0}function ge(e,t,i){if(!e||1!==t.length)return;const n=he(t[0].values());return{range:e,color:de(n[0],n[1],n[2],i?n[3]:1)}}function me(e,t,i){if(!e||1!==t.length)return;const n=he(t[0].values()),o=new le.Il(new le.Oz(n[0],n[1]/100,n[2]/100,i?n[3]:1));return{range:e,color:de(o.rgba.r,o.rgba.g,o.rgba.b,o.rgba.a)}}function fe(e,t){return"string"===typeof e?[...e.matchAll(t)]:e.findMatches(t)}function pe(e){return e&&"function"===typeof e.getValue&&"function"===typeof e.positionAt?function(e){const t=[],i=fe(e,/\b(rgb|rgba|hsl|hsla)(\([0-9\s,.\%]*\))|(#)([A-Fa-f0-9]{3})\b|(#)([A-Fa-f0-9]{4})\b|(#)([A-Fa-f0-9]{6})\b|(#)([A-Fa-f0-9]{8})\b/gm);if(i.length>0)for(const n of i){const i=n.filter((e=>void 0!==e)),o=i[1],s=i[2];if(!s)continue;let r;if("rgb"===o){const t=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm;r=ge(ce(e,n),fe(s,t),!1)}else if("rgba"===o){const t=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;r=ge(ce(e,n),fe(s,t),!0)}else if("hsl"===o){const t=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm;r=me(ce(e,n),fe(s,t),!1)}else if("hsla"===o){const t=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;r=me(ce(e,n),fe(s,t),!0)}else"#"===o&&(r=ue(ce(e,n),o+s));r&&t.push(r)}return t}(e):[]}const _e=/\bMARK:\s*(.*)$/d,ve=/^-+|-+$/g;function be(e,t){var i;let n=[];if(t.findRegionSectionHeaders&&(null===(i=t.foldingRules)||void 0===i?void 0:i.markers)){const i=function(e,t){const i=[],n=e.getLineCount();for(let o=1;o<=n;o++){const n=e.getLineContent(o),s=n.match(t.foldingRules.markers.start);if(s){const e={startLineNumber:o,startColumn:s[0].length+1,endLineNumber:o,endColumn:n.length+1};if(e.endColumn>e.startColumn){const t={range:e,...we(n.substring(s[0].length)),shouldBeInComments:!1};(t.text||t.hasSeparatorLine)&&i.push(t)}}}return i}(e,t);n=n.concat(i)}if(t.findMarkSectionHeaders){const t=function(e){const t=[],i=e.getLineCount();for(let n=1;n<=i;n++){Ce(e.getLineContent(n),n,t)}return t}(e);n=n.concat(t)}return n}function Ce(e,t,i){_e.lastIndex=0;const n=_e.exec(e);if(n){const e={startLineNumber:t,startColumn:n.indices[1][0]+1,endLineNumber:t,endColumn:n.indices[1][1]+1};if(e.endColumn>e.startColumn){const t={range:e,...we(n[1]),shouldBeInComments:!0};(t.text||t.hasSeparatorLine)&&i.push(t)}}}function we(e){const t=(e=e.trim()).startsWith("-");return{text:e=e.replace(ve,""),hasSeparatorLine:t}}class ye extends M{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(e){const t=[];for(let i=0;ithis._lines.length)t=this._lines.length,i=this._lines[t-1].length+1,n=!0;else{const e=this._lines[t-1].length+1;i<1?(i=1,n=!0):i>e&&(i=e,n=!0)}return n?{lineNumber:t,column:i}:e}}class Se{constructor(e,t){this._host=e,this._models=Object.create(null),this._foreignModuleFactory=t,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(e){return this._models[e]}_getModels(){const e=[];return Object.keys(this._models).forEach((t=>e.push(this._models[t]))),e}acceptNewModel(e){this._models[e.url]=new ye(E.o.parse(e.url),e.lines,e.EOL,e.versionId)}acceptModelChanged(e,t){if(!this._models[e])return;this._models[e].onEvents(t)}acceptRemovedModel(e){this._models[e]&&delete this._models[e]}async computeUnicodeHighlights(e,t,i){const n=this._getModel(e);return n?K.a.computeUnicodeHighlights(n,t,i):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}}async findSectionHeaders(e,t){const i=this._getModel(e);return i?be(i,t):[]}async computeDiff(e,t,i,n){const o=this._getModel(e),s=this._getModel(t);if(!o||!s)return null;return Se.computeDiff(o,s,i,n)}static computeDiff(e,t,i,n){const o="advanced"===n?ae():re(),s=e.getLinesContent(),r=t.getLinesContent(),a=o.computeDiff(s,r,i);function l(e){return e.map((e=>{var t;return[e.original.startLineNumber,e.original.endLineNumberExclusive,e.modified.startLineNumber,e.modified.endLineNumberExclusive,null===(t=e.innerChanges)||void 0===t?void 0:t.map((e=>[e.originalRange.startLineNumber,e.originalRange.startColumn,e.originalRange.endLineNumber,e.originalRange.endColumn,e.modifiedRange.startLineNumber,e.modifiedRange.startColumn,e.modifiedRange.endLineNumber,e.modifiedRange.endColumn]))]}))}return{identical:!(a.changes.length>0)&&this._modelsAreIdentical(e,t),quitEarly:a.hitTimeout,changes:l(a.changes),moves:a.moves.map((e=>[e.lineRangeMapping.original.startLineNumber,e.lineRangeMapping.original.endLineNumberExclusive,e.lineRangeMapping.modified.startLineNumber,e.lineRangeMapping.modified.endLineNumberExclusive,l(e.changes)]))}}static _modelsAreIdentical(e,t){const i=e.getLineCount();if(i!==t.getLineCount())return!1;for(let n=1;n<=i;n++){if(e.getLineContent(n)!==t.getLineContent(n))return!1}return!0}async computeMoreMinimalEdits(e,t,i){const n=this._getModel(e);if(!n)return t;const o=[];let s;t=t.slice(0).sort(((e,t)=>{if(e.range&&t.range)return D.e.compareRangesUsingStarts(e.range,t.range);return(e.range?0:1)-(t.range?0:1)}));let r=0;for(let a=1;aSe._diffLimit){o.push({range:a,text:l});continue}const t=(0,x.a$)(e,l,i),r=n.offsetAt(D.e.lift(a).getStartPosition());for(const i of t){const e=n.positionAt(r+i.originalStart),t=n.positionAt(r+i.originalStart+i.originalLength),s={text:l.substr(i.modifiedStart,i.modifiedLength),range:{startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:t.lineNumber,endColumn:t.column}};n.getValueInRange(s.range)!==s.text&&o.push(s)}}return"number"===typeof s&&o.push({eol:s,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),o}async computeLinks(e){const t=this._getModel(e);return t?function(e){return e&&"function"===typeof e.getLineCount&&"function"===typeof e.getLineContent?z.computeLinks(e):[]}(t):null}async computeDefaultDocumentColors(e){const t=this._getModel(e);return t?pe(t):null}async textualSuggest(e,t,i,n){const o=new H.G,s=new RegExp(i,n),r=new Set;e:for(const a of e){const e=this._getModel(a);if(e)for(const i of e.words(s))if(i!==t&&isNaN(Number(i))&&(r.add(i),r.size>Se._suggestionsLimit))break e}return{words:Array.from(r),duration:o.elapsed()}}async computeWordRanges(e,t,i,n){const o=this._getModel(e);if(!o)return Object.create(null);const s=new RegExp(i,n),r=Object.create(null);for(let a=t.startLineNumber;athis._host.fhr(e,t))),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(n,t),Promise.resolve((0,a.$E)(this._foreignModule))):Promise.reject(new Error("Unexpected usage"))}fmr(e,t){if(!this._foreignModule||"function"!==typeof this._foreignModule[e])return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._foreignModule[e].apply(this._foreignModule,t))}catch(i){return Promise.reject(i)}}}Se._diffLimit=1e5,Se._suggestionsLimit=1e4,"function"===typeof importScripts&&(globalThis.monaco=(0,W.O)());var Le=i(42175),ke=i(61315),De=i(75629),Ne=i(83717),xe=i(89752),Ee=i(29880),Ie=i(85714),Te=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Me=function(e,t){return function(i,n){t(i,n,e)}};const Ae=3e5;function Re(e,t){const i=e.getModel(t);return!!i&&!i.isTooLargeForSyncing()}let Oe=class extends o.JT{constructor(e,t,i,n,o){super(),this._modelService=e,this._workerManager=this._register(new Fe(this._modelService,n)),this._logService=i,this._register(o.linkProvider.register({language:"*",hasAccessToAllModels:!0},{provideLinks:(e,t)=>Re(this._modelService,e.uri)?this._workerManager.withWorker().then((t=>t.computeLinks(e.uri))).then((e=>e&&{links:e})):Promise.resolve({links:[]})})),this._register(o.completionProvider.register("*",new Pe(this._workerManager,t,this._modelService,n)))}dispose(){super.dispose()}canComputeUnicodeHighlights(e){return Re(this._modelService,e)}computedUnicodeHighlights(e,t,i){return this._workerManager.withWorker().then((n=>n.computedUnicodeHighlights(e,t,i)))}async computeDiff(e,t,i,n){const o=await this._workerManager.withWorker().then((o=>o.computeDiff(e,t,i,n)));if(!o)return null;return{identical:o.identical,quitEarly:o.quitEarly,changes:s(o.changes),moves:o.moves.map((e=>new U.y(new j.f0(new G.z(e[0],e[1]),new G.z(e[2],e[3])),s(e[4]))))};function s(e){return e.map((e=>{var t;return new j.gB(new G.z(e[0],e[1]),new G.z(e[2],e[3]),null===(t=e[4])||void 0===t?void 0:t.map((e=>new j.iy(new D.e(e[0],e[1],e[2],e[3]),new D.e(e[4],e[5],e[6],e[7])))))}))}}computeMoreMinimalEdits(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if((0,De.Of)(t)){if(!Re(this._modelService,e))return Promise.resolve(t);const o=H.G.create(),s=this._workerManager.withWorker().then((n=>n.computeMoreMinimalEdits(e,t,i)));return s.finally((()=>this._logService.trace("FORMAT#computeMoreMinimalEdits",e.toString(!0),o.elapsed()))),Promise.race([s,(0,n.Vs)(1e3).then((()=>t))])}return Promise.resolve(void 0)}canNavigateValueSet(e){return Re(this._modelService,e)}navigateValueSet(e,t,i){return this._workerManager.withWorker().then((n=>n.navigateValueSet(e,t,i)))}canComputeWordRanges(e){return Re(this._modelService,e)}computeWordRanges(e,t){return this._workerManager.withWorker().then((i=>i.computeWordRanges(e,t)))}findSectionHeaders(e,t){return this._workerManager.withWorker().then((i=>i.findSectionHeaders(e,t)))}};Oe=Te([Me(0,Le.q),Me(1,ke.V),Me(2,Ne.VZ),Me(3,N.c_),Me(4,xe.p)],Oe);class Pe{constructor(e,t,i,n){this.languageConfigurationService=n,this._debugDisplayName="wordbasedCompletions",this._workerManager=e,this._configurationService=t,this._modelService=i}async provideCompletionItems(e,t){const i=this._configurationService.getValue(e.uri,t,"editor");if("off"===i.wordBasedSuggestions)return;const n=[];if("currentDocument"===i.wordBasedSuggestions)Re(this._modelService,e.uri)&&n.push(e.uri);else for(const d of this._modelService.getModels())Re(this._modelService,d.uri)&&(d===e?n.unshift(d.uri):"allDocuments"!==i.wordBasedSuggestions&&d.getLanguageId()!==e.getLanguageId()||n.push(d.uri));if(0===n.length)return;const o=this.languageConfigurationService.getLanguageConfiguration(e.getLanguageId()).getWordDefinition(),s=e.getWordAtPosition(t),r=s?new D.e(t.lineNumber,s.startColumn,t.lineNumber,s.endColumn):D.e.fromPositions(t),a=r.setEndPosition(t.lineNumber,t.column),l=await this._workerManager.withWorker(),h=await l.textualSuggest(n,null===s||void 0===s?void 0:s.word,o);return h?{duration:h.duration,suggestions:h.words.map((e=>({kind:18,label:e,insertText:e,range:{insert:a,replace:r}})))}:void 0}}class Fe extends o.JT{constructor(e,t){super(),this.languageConfigurationService=t,this._modelService=e,this._editorWorkerClient=null,this._lastWorkerUsedTime=(new Date).getTime();this._register(new Ie.ne).cancelAndSet((()=>this._checkStopIdleWorker()),Math.round(15e4),Ee.E),this._register(this._modelService.onModelRemoved((e=>this._checkStopEmptyWorker())))}dispose(){this._editorWorkerClient&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null),super.dispose()}_checkStopEmptyWorker(){if(!this._editorWorkerClient)return;0===this._modelService.getModels().length&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}_checkStopIdleWorker(){if(!this._editorWorkerClient)return;(new Date).getTime()-this._lastWorkerUsedTime>Ae&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}withWorker(){return this._lastWorkerUsedTime=(new Date).getTime(),this._editorWorkerClient||(this._editorWorkerClient=new We(this._modelService,!1,"editorWorkerService",this.languageConfigurationService)),Promise.resolve(this._editorWorkerClient)}}class Be extends o.JT{constructor(e,t,i){if(super(),this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),this._proxy=e,this._modelService=t,!i){const e=new n.zh;e.cancelAndSet((()=>this._checkStopModelSync()),Math.round(3e4)),this._register(e)}}dispose(){for(const e in this._syncedModels)(0,o.B9)(this._syncedModels[e]);this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),super.dispose()}ensureSyncedResources(e,t){for(const i of e){const e=i.toString();this._syncedModels[e]||this._beginModelSync(i,t),this._syncedModels[e]&&(this._syncedModelsLastUsedTime[e]=(new Date).getTime())}}_checkStopModelSync(){const e=(new Date).getTime(),t=[];for(const i in this._syncedModelsLastUsedTime){e-this._syncedModelsLastUsedTime[i]>6e4&&t.push(i)}for(const i of t)this._stopModelSync(i)}_beginModelSync(e,t){const i=this._modelService.getModel(e);if(!i)return;if(!t&&i.isTooLargeForSyncing())return;const n=e.toString();this._proxy.acceptNewModel({url:i.uri.toString(),lines:i.getLinesContent(),EOL:i.getEOL(),versionId:i.getVersionId()});const s=new o.SL;s.add(i.onDidChangeContent((e=>{this._proxy.acceptModelChanged(n.toString(),e)}))),s.add(i.onWillDispose((()=>{this._stopModelSync(n)}))),s.add((0,o.OF)((()=>{this._proxy.acceptRemovedModel(n)}))),this._syncedModels[n]=s}_stopModelSync(e){const t=this._syncedModels[e];delete this._syncedModels[e],delete this._syncedModelsLastUsedTime[e],(0,o.B9)(t)}}class ze{constructor(e){this._instance=e,this._proxyObj=Promise.resolve(this._instance)}dispose(){this._instance.dispose()}getProxyObject(){return this._proxyObj}}class Ve{constructor(e){this._workerClient=e}fhr(e,t){return this._workerClient.fhr(e,t)}}class We extends o.JT{constructor(e,t,i,n){super(),this.languageConfigurationService=n,this._disposed=!1,this._modelService=e,this._keepIdleModels=t,this._workerFactory=new k(i),this._worker=null,this._modelManager=null}fhr(e,t){throw new Error("Not implemented!")}_getOrCreateWorker(){if(!this._worker)try{this._worker=this._register(new b(this._workerFactory,"vs/editor/common/services/editorSimpleWorker",new Ve(this)))}catch(e){u(e),this._worker=new ze(new Se(new Ve(this),null))}return this._worker}_getProxy(){return this._getOrCreateWorker().getProxyObject().then(void 0,(e=>(u(e),this._worker=new ze(new Se(new Ve(this),null)),this._getOrCreateWorker().getProxyObject())))}_getOrCreateModelManager(e){return this._modelManager||(this._modelManager=this._register(new Be(e,this._modelService,this._keepIdleModels))),this._modelManager}async _withSyncedResources(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this._disposed?Promise.reject((0,s.F0)()):this._getProxy().then((i=>(this._getOrCreateModelManager(i).ensureSyncedResources(e,t),i)))}computedUnicodeHighlights(e,t,i){return this._withSyncedResources([e]).then((n=>n.computeUnicodeHighlights(e.toString(),t,i)))}computeDiff(e,t,i,n){return this._withSyncedResources([e,t],!0).then((o=>o.computeDiff(e.toString(),t.toString(),i,n)))}computeMoreMinimalEdits(e,t,i){return this._withSyncedResources([e]).then((n=>n.computeMoreMinimalEdits(e.toString(),t,i)))}computeLinks(e){return this._withSyncedResources([e]).then((t=>t.computeLinks(e.toString())))}computeDefaultDocumentColors(e){return this._withSyncedResources([e]).then((t=>t.computeDefaultDocumentColors(e.toString())))}async textualSuggest(e,t,i){const n=await this._withSyncedResources(e),o=i.source,s=i.flags;return n.textualSuggest(e.map((e=>e.toString())),t,o,s)}computeWordRanges(e,t){return this._withSyncedResources([e]).then((i=>{const n=this._modelService.getModel(e);if(!n)return Promise.resolve(null);const o=this.languageConfigurationService.getLanguageConfiguration(n.getLanguageId()).getWordDefinition(),s=o.source,r=o.flags;return i.computeWordRanges(e.toString(),t,s,r)}))}navigateValueSet(e,t,i){return this._withSyncedResources([e]).then((n=>{const o=this._modelService.getModel(e);if(!o)return null;const s=this.languageConfigurationService.getLanguageConfiguration(o.getLanguageId()).getWordDefinition(),r=s.source,a=s.flags;return n.navigateValueSet(e.toString(),t,i,r,a)}))}findSectionHeaders(e,t){return this._withSyncedResources([e]).then((i=>i.findSectionHeaders(e.toString(),t)))}dispose(){super.dispose(),this._disposed=!0}}},1135:(e,t,i)=>{i.d(t,{Z:()=>n});class n{static capture(e){if(0===e.getScrollTop()||e.hasPendingScrollAnimation())return new n(e.getScrollTop(),e.getContentHeight(),null,0,null);let t=null,i=0;const o=e.getVisibleRanges();if(o.length>0){t=o[0].getStartPosition();const n=e.getTopForPosition(t.lineNumber,t.column);i=e.getScrollTop()-n}return new n(e.getScrollTop(),e.getContentHeight(),t,i,e.getPosition())}constructor(e,t,i,n,o){this._initialScrollTop=e,this._initialContentHeight=t,this._visiblePosition=i,this._visiblePositionScrollDelta=n,this._cursorPosition=o}restore(e){if((this._initialContentHeight!==e.getContentHeight()||this._initialScrollTop!==e.getScrollTop())&&this._visiblePosition){const t=e.getTopForPosition(this._visiblePosition.lineNumber,this._visiblePosition.column);e.setScrollTop(t+this._visiblePositionScrollDelta)}}restoreRelativeVerticalPositionOfCursor(e){if(this._initialContentHeight===e.getContentHeight()&&this._initialScrollTop===e.getScrollTop())return;const t=e.getPosition();if(!this._cursorPosition||!t)return;const i=e.getTopForLineNumber(t.lineNumber)-e.getTopForLineNumber(this._cursorPosition.lineNumber);e.setScrollTop(e.getScrollTop()+i)}}},15115:(e,t,i)=>{i.d(t,{CH:()=>h,CR:()=>a,D4:()=>l,u7:()=>s,xh:()=>o,yu:()=>r});class n{constructor(e,t){this._restrictedRenderingContextBrand=void 0,this._viewLayout=e,this.viewportData=t,this.scrollWidth=this._viewLayout.getScrollWidth(),this.scrollHeight=this._viewLayout.getScrollHeight(),this.visibleRange=this.viewportData.visibleRange,this.bigNumbersDelta=this.viewportData.bigNumbersDelta;const i=this._viewLayout.getCurrentViewport();this.scrollTop=i.top,this.scrollLeft=i.left,this.viewportWidth=i.width,this.viewportHeight=i.height}getScrolledTopFromAbsoluteTop(e){return e-this.scrollTop}getVerticalOffsetForLineNumber(e,t){return this._viewLayout.getVerticalOffsetForLineNumber(e,t)}getVerticalOffsetAfterLineNumber(e,t){return this._viewLayout.getVerticalOffsetAfterLineNumber(e,t)}getDecorationsInViewport(){return this.viewportData.getDecorationsInViewport()}}class o extends n{constructor(e,t,i){super(e,t),this._renderingContextBrand=void 0,this._viewLines=i}linesVisibleRangesForRange(e,t){return this._viewLines.linesVisibleRangesForRange(e,t)}visibleRangeForPosition(e){return this._viewLines.visibleRangeForPosition(e)}}class s{constructor(e,t,i,n){this.outsideRenderedLine=e,this.lineNumber=t,this.ranges=i,this.continuesOnNextLine=n}}class r{static from(e){const t=new Array(e.length);for(let i=0,n=e.length;i{i.d(t,{Nt:()=>f,ob:()=>m,dL:()=>y});var n=i(42606),o=i(45153),s=i(21511),r=i(15115);class a{static _createRange(){return this._handyReadyRange||(this._handyReadyRange=document.createRange()),this._handyReadyRange}static _detachRange(e,t){e.selectNodeContents(t)}static _readClientRects(e,t,i,n,o){const s=this._createRange();try{return s.setStart(e,t),s.setEnd(i,n),s.getClientRects()}catch(r){return null}finally{this._detachRange(s,o)}}static _mergeAdjacentRanges(e){if(1===e.length)return e;e.sort(r.CR.compare);const t=[];let i=0,n=e[0];for(let o=1,s=e.length;o=s.left?n.width=Math.max(n.width,s.left+s.width-n.left):(t[i++]=n,n=s)}return t[i++]=n,t}static _createHorizontalRangesFromClientRects(e,t,i){if(!e||0===e.length)return null;const n=[];for(let o=0,s=e.length;or)return null;if((t=Math.min(r,Math.max(0,t)))===(n=Math.min(r,Math.max(0,n)))&&i===o&&0===i&&!e.children[t].firstChild){const i=e.children[t].getClientRects();return s.markDidDomLayout(),this._createHorizontalRangesFromClientRects(i,s.clientRectDeltaLeft,s.clientRectScale)}t!==n&&n>0&&0===o&&(n--,o=1073741824);let a=e.children[t].firstChild,l=e.children[n].firstChild;if(a&&l||(!a&&0===i&&t>0&&(a=e.children[t-1].firstChild,i=1073741824),!l&&0===o&&n>0&&(l=e.children[n-1].firstChild,o=1073741824)),!a||!l)return null;i=Math.min(a.textContent.length,Math.max(0,i)),o=Math.min(l.textContent.length,Math.max(0,o));const h=this._readClientRects(a,i,l,o,s.endNode);return s.markDidDomLayout(),this._createHorizontalRangesFromClientRects(h,s.clientRectDeltaLeft,s.clientRectScale)}}var l=i(85766),h=i(34543),d=i(75826),c=i(38092);const u=!!s.tY||!(s.IJ||n.vU||n.G6);let g=!0;class m{constructor(e,t){this.themeType=t;const i=e.options,n=i.get(50),o=i.get(38);this.renderWhitespace="off"===o?i.get(99):"none",this.renderControlCharacters=i.get(94),this.spaceWidth=n.spaceWidth,this.middotWidth=n.middotWidth,this.wsmiddotWidth=n.wsmiddotWidth,this.useMonospaceOptimizations=n.isMonospace&&!i.get(33),this.canUseHalfwidthRightwardsArrow=n.canUseHalfwidthRightwardsArrow,this.lineHeight=i.get(67),this.stopRenderingLineAfter=i.get(117),this.fontLigatures=i.get(51)}equals(e){return this.themeType===e.themeType&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineHeight===e.lineHeight&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.fontLigatures===e.fontLigatures}}class f{constructor(e){this._options=e,this._isMaybeInvalid=!0,this._renderedViewLine=null}getDomNode(){return this._renderedViewLine&&this._renderedViewLine.domNode?this._renderedViewLine.domNode.domNode:null}setDomNode(e){if(!this._renderedViewLine)throw new Error("I have no rendered view line to set the dom node to...");this._renderedViewLine.domNode=(0,o.X)(e)}onContentChanged(){this._isMaybeInvalid=!0}onTokensChanged(){this._isMaybeInvalid=!0}onDecorationsChanged(){this._isMaybeInvalid=!0}onOptionsChanged(e){this._isMaybeInvalid=!0,this._options=e}onSelectionChanged(){return!(!(0,d.c3)(this._options.themeType)&&"selection"!==this._options.renderWhitespace)&&(this._isMaybeInvalid=!0,!0)}renderLine(e,t,i,n,o){if(!1===this._isMaybeInvalid)return!1;this._isMaybeInvalid=!1;const s=n.getViewLineRenderingData(e),r=this._options,a=l.Kp.filter(s.inlineDecorations,e,s.minColumn,s.maxColumn);let m=null;if((0,d.c3)(r.themeType)||"selection"===this._options.renderWhitespace){const t=n.selections;for(const i of t){if(i.endLineNumbere)continue;const t=i.startLineNumber===e?i.startColumn:s.minColumn,n=i.endLineNumber===e?i.endColumn:s.maxColumn;t');const v=(0,h.d1)(_,o);o.appendString("");let C=null;return g&&u&&s.isBasicASCII&&r.useMonospaceOptimizations&&0===v.containsForeignElements&&(C=new p(this._renderedViewLine?this._renderedViewLine.domNode:null,_,v.characterMapping)),C||(C=b(this._renderedViewLine?this._renderedViewLine.domNode:null,_,v.characterMapping,v.containsRTL,v.containsForeignElements)),this._renderedViewLine=C,!0}layoutLine(e,t,i){this._renderedViewLine&&this._renderedViewLine.domNode&&(this._renderedViewLine.domNode.setTop(t),this._renderedViewLine.domNode.setHeight(i))}getWidth(e){return this._renderedViewLine?this._renderedViewLine.getWidth(e):0}getWidthIsFast(){return!this._renderedViewLine||this._renderedViewLine.getWidthIsFast()}needsMonospaceFontCheck(){return!!this._renderedViewLine&&this._renderedViewLine instanceof p}monospaceAssumptionsAreValid(){return this._renderedViewLine&&this._renderedViewLine instanceof p?this._renderedViewLine.monospaceAssumptionsAreValid():g}onMonospaceAssumptionsInvalidated(){this._renderedViewLine&&this._renderedViewLine instanceof p&&(this._renderedViewLine=this._renderedViewLine.toSlowRenderedLine())}getVisibleRangesForRange(e,t,i,n){if(!this._renderedViewLine)return null;t=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,t)),i=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,i));const o=this._renderedViewLine.input.stopRenderingLineAfter;if(-1!==o&&t>o+1&&i>o+1)return new r.CH(!0,[new r.CR(this.getWidth(n),0)]);-1!==o&&t>o+1&&(t=o+1),-1!==o&&i>o+1&&(i=o+1);const s=this._renderedViewLine.getVisibleRangesForRange(e,t,i,n);return s&&s.length>0?new r.CH(!1,s):null}getColumnOfNodeOffset(e,t){return this._renderedViewLine?this._renderedViewLine.getColumnOfNodeOffset(e,t):1}}f.CLASS_NAME="view-line";class p{constructor(e,t,i){this._cachedWidth=-1,this.domNode=e,this.input=t;const n=Math.floor(t.lineContent.length/300);if(n>0){this._keyColumnPixelOffsetCache=new Float32Array(n);for(let e=0;e=2&&(console.warn("monospace assumptions have been violated, therefore disabling monospace optimizations!"),g=!1)}return g}toSlowRenderedLine(){return b(this.domNode,this.input,this._characterMapping,!1,0)}getVisibleRangesForRange(e,t,i,n){const o=this._getColumnPixelOffset(e,t,n),s=this._getColumnPixelOffset(e,i,n);return[new r.CR(o,s-o)]}_getColumnPixelOffset(e,t,i){if(t<=300){const e=this._characterMapping.getHorizontalOffset(t);return this._charWidth*e}const n=Math.floor((t-1)/300)-1,o=300*(n+1)+1;let s=-1;if(this._keyColumnPixelOffsetCache&&(s=this._keyColumnPixelOffsetCache[n],-1===s&&(s=this._actualReadPixelOffset(e,o,i),this._keyColumnPixelOffsetCache[n]=s)),-1===s){const e=this._characterMapping.getHorizontalOffset(t);return this._charWidth*e}const r=this._characterMapping.getHorizontalOffset(o),a=this._characterMapping.getHorizontalOffset(t);return s+this._charWidth*(a-r)}_getReadingTarget(e){return e.domNode.firstChild}_actualReadPixelOffset(e,t,i){if(!this.domNode)return-1;const n=this._characterMapping.getDomPosition(t),o=a.readHorizontalRanges(this._getReadingTarget(this.domNode),n.partIndex,n.charIndex,n.partIndex,n.charIndex,i);return o&&0!==o.length?o[0].left:-1}getColumnOfNodeOffset(e,t){return y(this._characterMapping,e,t)}}class _{constructor(e,t,i,n,o){if(this.domNode=e,this.input=t,this._characterMapping=i,this._isWhitespaceOnly=/^\s*$/.test(t.lineContent),this._containsForeignElements=o,this._cachedWidth=-1,this._pixelOffsetCache=null,!n||0===this._characterMapping.length){this._pixelOffsetCache=new Float32Array(Math.max(2,this._characterMapping.length+1));for(let e=0,t=this._characterMapping.length;e<=t;e++)this._pixelOffsetCache[e]=-1}}_getReadingTarget(e){return e.domNode.firstChild}getWidth(e){return this.domNode?(-1===this._cachedWidth&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth,null===e||void 0===e||e.markDidDomLayout()),this._cachedWidth):0}getWidthIsFast(){return-1!==this._cachedWidth}getVisibleRangesForRange(e,t,i,n){if(!this.domNode)return null;if(null!==this._pixelOffsetCache){const o=this._readPixelOffset(this.domNode,e,t,n);if(-1===o)return null;const s=this._readPixelOffset(this.domNode,e,i,n);return-1===s?null:[new r.CR(o,s-o)]}return this._readVisibleRangesForRange(this.domNode,e,t,i,n)}_readVisibleRangesForRange(e,t,i,n,o){if(i===n){const n=this._readPixelOffset(e,t,i,o);return-1===n?null:[new r.CR(n,0)]}return this._readRawVisibleRangesForRange(e,i,n,o)}_readPixelOffset(e,t,i,n){if(0===this._characterMapping.length){if(0===this._containsForeignElements)return 0;if(2===this._containsForeignElements)return 0;if(1===this._containsForeignElements)return this.getWidth(n);const t=this._getReadingTarget(e);return t.firstChild?(n.markDidDomLayout(),t.firstChild.offsetWidth):0}if(null!==this._pixelOffsetCache){const o=this._pixelOffsetCache[i];if(-1!==o)return o;const s=this._actualReadPixelOffset(e,t,i,n);return this._pixelOffsetCache[i]=s,s}return this._actualReadPixelOffset(e,t,i,n)}_actualReadPixelOffset(e,t,i,n){if(0===this._characterMapping.length){const t=a.readHorizontalRanges(this._getReadingTarget(e),0,0,0,0,n);return t&&0!==t.length?t[0].left:-1}if(i===this._characterMapping.length&&this._isWhitespaceOnly&&0===this._containsForeignElements)return this.getWidth(n);const o=this._characterMapping.getDomPosition(i),s=a.readHorizontalRanges(this._getReadingTarget(e),o.partIndex,o.charIndex,o.partIndex,o.charIndex,n);if(!s||0===s.length)return-1;const r=s[0].left;if(this.input.isBasicASCII){const e=this._characterMapping.getHorizontalOffset(i),t=Math.round(this.input.spaceWidth*e);if(Math.abs(t-r)<=1)return t}return r}_readRawVisibleRangesForRange(e,t,i,n){if(1===t&&i===this._characterMapping.length)return[new r.CR(0,this.getWidth(n))];const o=this._characterMapping.getDomPosition(t),s=this._characterMapping.getDomPosition(i);return a.readHorizontalRanges(this._getReadingTarget(e),o.partIndex,o.charIndex,s.partIndex,s.charIndex,n)}getColumnOfNodeOffset(e,t){return y(this._characterMapping,e,t)}}class v extends _{_readVisibleRangesForRange(e,t,i,n,o){const s=super._readVisibleRangesForRange(e,t,i,n,o);if(!s||0===s.length||i===n||1===i&&n===this._characterMapping.length)return s;if(!this.input.containsRTL){const i=this._readPixelOffset(e,t,n,o);if(-1!==i){const e=s[s.length-1];e.left{i.d(t,{Gm:()=>Yo});var n=i(11974),o=i(23001),s=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},r=function(e,t){return function(i,n){t(i,n,e)}};let a=class{constructor(e,t){}dispose(){}};a.ID="editor.contrib.markerDecorations",a=s([r(1,n.i)],a),(0,o._K)(a.ID,a,0);var l=i(85714),h=i(85108),d=i(24219),c=i(89599),u=i(33211),g=i(99916),m=i(42606),f=i(75629),p=i(10451),_=i(21511),v=i(97363),b=i(86392);class C{constructor(e,t){this.key=e,this.migrate=t}apply(e){const t=C._read(e,this.key);this.migrate(t,(t=>C._read(e,t)),((t,i)=>C._write(e,t,i)))}static _read(e,t){if("undefined"===typeof e)return;const i=t.indexOf(".");if(i>=0){const n=t.substring(0,i);return this._read(e[n],t.substring(i+1))}return e[t]}static _write(e,t,i){const n=t.indexOf(".");if(n>=0){const o=t.substring(0,n);return e[o]=e[o]||{},void this._write(e[o],t.substring(n+1),i)}e[t]=i}}function w(e,t){C.items.push(new C(e,t))}function y(e,t){w(e,((i,n,o)=>{if("undefined"!==typeof i)for(const[s,r]of t)if(i===s)return void o(e,r)}))}C.items=[],y("wordWrap",[[!0,"on"],[!1,"off"]]),y("lineNumbers",[[!0,"on"],[!1,"off"]]),y("cursorBlinking",[["visible","solid"]]),y("renderWhitespace",[[!0,"boundary"],[!1,"none"]]),y("renderLineHighlight",[[!0,"line"],[!1,"none"]]),y("acceptSuggestionOnEnter",[[!0,"on"],[!1,"off"]]),y("tabCompletion",[[!1,"off"],[!0,"onlySnippets"]]),y("hover",[[!0,{enabled:!0}],[!1,{enabled:!1}]]),y("parameterHints",[[!0,{enabled:!0}],[!1,{enabled:!1}]]),y("autoIndent",[[!1,"advanced"],[!0,"full"]]),y("matchBrackets",[[!0,"always"],[!1,"never"]]),y("renderFinalNewline",[[!0,"on"],[!1,"off"]]),y("cursorSmoothCaretAnimation",[[!0,"on"],[!1,"off"]]),y("occurrencesHighlight",[[!0,"singleFile"],[!1,"off"]]),y("wordBasedSuggestions",[[!0,"matchingDocuments"],[!1,"off"]]),w("autoClosingBrackets",((e,t,i)=>{!1===e&&(i("autoClosingBrackets","never"),"undefined"===typeof t("autoClosingQuotes")&&i("autoClosingQuotes","never"),"undefined"===typeof t("autoSurround")&&i("autoSurround","never"))})),w("renderIndentGuides",((e,t,i)=>{"undefined"!==typeof e&&(i("renderIndentGuides",void 0),"undefined"===typeof t("guides.indentation")&&i("guides.indentation",!!e))})),w("highlightActiveIndentGuide",((e,t,i)=>{"undefined"!==typeof e&&(i("highlightActiveIndentGuide",void 0),"undefined"===typeof t("guides.highlightActiveIndentation")&&i("guides.highlightActiveIndentation",!!e))}));const S={method:"showMethods",function:"showFunctions",constructor:"showConstructors",deprecated:"showDeprecated",field:"showFields",variable:"showVariables",class:"showClasses",struct:"showStructs",interface:"showInterfaces",module:"showModules",property:"showProperties",event:"showEvents",operator:"showOperators",unit:"showUnits",value:"showValues",constant:"showConstants",enum:"showEnums",enumMember:"showEnumMembers",keyword:"showKeywords",text:"showWords",color:"showColors",file:"showFiles",reference:"showReferences",folder:"showFolders",typeParameter:"showTypeParameters",snippet:"showSnippets"};w("suggest.filteredTypes",((e,t,i)=>{if(e&&"object"===typeof e){for(const n of Object.entries(S)){!1===e[n[0]]&&"undefined"===typeof t("suggest.".concat(n[1]))&&i("suggest.".concat(n[1]),!1)}i("suggest.filteredTypes",void 0)}})),w("quickSuggestions",((e,t,i)=>{if("boolean"===typeof e){const t=e?"on":"off";i("quickSuggestions",{comments:t,strings:t,other:t})}})),w("experimental.stickyScroll.enabled",((e,t,i)=>{"boolean"===typeof e&&(i("experimental.stickyScroll.enabled",void 0),"undefined"===typeof t("stickyScroll.enabled")&&i("stickyScroll.enabled",e))})),w("experimental.stickyScroll.maxLineCount",((e,t,i)=>{"number"===typeof e&&(i("experimental.stickyScroll.maxLineCount",void 0),"undefined"===typeof t("stickyScroll.maxLineCount")&&i("stickyScroll.maxLineCount",e))})),w("codeActionsOnSave",((e,t,i)=>{if(e&&"object"===typeof e){let t=!1;const n={};for(const i of Object.entries(e))"boolean"===typeof i[1]?(t=!0,n[i[0]]=i[1]?"explicit":"never"):n[i[0]]=i[1];t&&i("codeActionsOnSave",n)}})),w("codeActionWidget.includeNearbyQuickfixes",((e,t,i)=>{"boolean"===typeof e&&(i("codeActionWidget.includeNearbyQuickfixes",void 0),"undefined"===typeof t("codeActionWidget.includeNearbyQuickFixes")&&i("codeActionWidget.includeNearbyQuickFixes",e))})),w("lightbulb.enabled",((e,t,i)=>{"boolean"===typeof e&&i("lightbulb.enabled",e?void 0:"off")}));var L=i(25391),k=i(38092),D=i(15804),N=i(64864),x=i(46385),E=i(39830),I=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},T=function(e,t){return function(i,n){t(i,n,e)}};let M=class extends c.JT{constructor(e,t,i,n){super(),this._accessibilityService=n,this._onDidChange=this._register(new d.Q5),this.onDidChange=this._onDidChange.event,this._onDidChangeFast=this._register(new d.Q5),this.onDidChangeFast=this._onDidChangeFast.event,this._isDominatedByLongLines=!1,this._viewLineCount=1,this._lineNumbersDigitCount=1,this._reservedHeight=0,this._glyphMarginDecorationLaneCount=1,this._computeOptionsMemory=new k.LJ,this.isSimpleWidget=e,this._containerObserver=this._register(new v.I(i,t.dimension)),this._targetWindowId=(0,l.Jj)(i).vscodeWindowId,this._rawOptions=F(t),this._validatedOptions=P.validateOptions(this._rawOptions),this.options=this._computeOptions(),this.options.get(13)&&this._containerObserver.startObserving(),this._register(D.C.onDidChangeZoomLevel((()=>this._recomputeOptions()))),this._register(L.n.onDidChangeTabFocus((()=>this._recomputeOptions()))),this._register(this._containerObserver.onDidChange((()=>this._recomputeOptions()))),this._register(b.g.onDidChange((()=>this._recomputeOptions()))),this._register(E.T.getInstance((0,l.Jj)(i)).onDidChange((()=>this._recomputeOptions()))),this._register(this._accessibilityService.onDidChangeScreenReaderOptimized((()=>this._recomputeOptions())))}_recomputeOptions(){const e=this._computeOptions(),t=P.checkEquals(this.options,e);null!==t&&(this.options=e,this._onDidChangeFast.fire(t),this._onDidChange.fire(t))}_computeOptions(){const e=this._readEnvConfiguration(),t=N.E4.createFromValidatedSettings(this._validatedOptions,e.pixelRatio,this.isSimpleWidget),i=this._readFontInfo(t),n={memory:this._computeOptionsMemory,outerWidth:e.outerWidth,outerHeight:e.outerHeight-this._reservedHeight,fontInfo:i,extraEditorClassName:e.extraEditorClassName,isDominatedByLongLines:this._isDominatedByLongLines,viewLineCount:this._viewLineCount,lineNumbersDigitCount:this._lineNumbersDigitCount,emptySelectionClipboard:e.emptySelectionClipboard,pixelRatio:e.pixelRatio,tabFocusMode:L.n.getTabFocusMode(),accessibilitySupport:e.accessibilitySupport,glyphMarginDecorationLaneCount:this._glyphMarginDecorationLaneCount};return P.computeOptions(this._validatedOptions,n)}_readEnvConfiguration(){return{extraEditorClassName:A(),outerWidth:this._containerObserver.getWidth(),outerHeight:this._containerObserver.getHeight(),emptySelectionClipboard:m.Pf||m.vU,pixelRatio:E.T.getInstance((0,l.ed)(this._targetWindowId,!0).window).value,accessibilitySupport:this._accessibilityService.isScreenReaderOptimized()?2:this._accessibilityService.getAccessibilitySupport()}}_readFontInfo(e){return b.g.readFontInfo((0,l.ed)(this._targetWindowId,!0).window,e)}getRawOptions(){return this._rawOptions}updateOptions(e){const t=F(e);P.applyUpdate(this._rawOptions,t)&&(this._validatedOptions=P.validateOptions(this._rawOptions),this._recomputeOptions())}observeContainer(e){this._containerObserver.observe(e)}setIsDominatedByLongLines(e){this._isDominatedByLongLines!==e&&(this._isDominatedByLongLines=e,this._recomputeOptions())}setModelLineCount(e){const t=function(e){let t=0;for(;e;)e=Math.floor(e/10),t++;return t||1}(e);this._lineNumbersDigitCount!==t&&(this._lineNumbersDigitCount=t,this._recomputeOptions())}setViewLineCount(e){this._viewLineCount!==e&&(this._viewLineCount=e,this._recomputeOptions())}setReservedHeight(e){this._reservedHeight!==e&&(this._reservedHeight=e,this._recomputeOptions())}setGlyphMarginDecorationLaneCount(e){this._glyphMarginDecorationLaneCount!==e&&(this._glyphMarginDecorationLaneCount=e,this._recomputeOptions())}};function A(){let e="";return m.G6||m.MG||(e+="no-user-select "),m.G6&&(e+="no-minimap-shadow ",e+="enable-user-select "),_.dz&&(e+="mac "),e}M=I([T(3,x.F)],M);class R{constructor(){this._values=[]}_read(e){return this._values[e]}get(e){return this._values[e]}_write(e,t){this._values[e]=t}}class O{constructor(){this._values=[]}_read(e){if(e>=this._values.length)throw new Error("Cannot read uninitialized value");return this._values[e]}get(e){return this._read(e)}_write(e,t){this._values[e]=t}}class P{static validateOptions(e){const t=new R;for(const i of k.Bc){const n="_never_"===i.name?void 0:e[i.name];t._write(i.id,i.validate(n))}return t}static computeOptions(e,t){const i=new O;for(const n of k.Bc)i._write(n.id,n.compute(t,i,e._read(n.id)));return i}static _deepEquals(e,t){if("object"!==typeof e||"object"!==typeof t||!e||!t)return e===t;if(Array.isArray(e)||Array.isArray(t))return!(!Array.isArray(e)||!Array.isArray(t))&&f.fS(e,t);if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const i in e)if(!P._deepEquals(e[i],t[i]))return!1;return!0}static checkEquals(e,t){const i=[];let n=!1;for(const o of k.Bc){const s=!P._deepEquals(e._read(o.id),t._read(o.id));i[o.id]=s,s&&(n=!0)}return n?new k.Bb(i):null}static applyUpdate(e,t){let i=!1;for(const n of k.Bc)if(t.hasOwnProperty(n.name)){const o=n.applyUpdate(e[n.name],t[n.name]);e[n.name]=o.newValue,i=i||o.didChange}return i}}function F(e){const t=p.I8(e);return function(e){C.items.forEach((t=>t.apply(e)))}(t),t}var B=i(38119),z=i(45153),V=i(10115),W=i(64370);class H extends c.JT{constructor(){super(),this._shouldRender=!0}shouldRender(){return this._shouldRender}forceShouldRender(){this._shouldRender=!0}setShouldRender(){this._shouldRender=!0}onDidRender(){this._shouldRender=!1}onCompositionStart(e){return!1}onCompositionEnd(e){return!1}onConfigurationChanged(e){return!1}onCursorStateChanged(e){return!1}onDecorationsChanged(e){return!1}onFlushed(e){return!1}onFocusChanged(e){return!1}onLanguageConfigurationChanged(e){return!1}onLineMappingChanged(e){return!1}onLinesChanged(e){return!1}onLinesDeleted(e){return!1}onLinesInserted(e){return!1}onRevealRangeRequest(e){return!1}onScrollChanged(e){return!1}onThemeChanged(e){return!1}onTokensChanged(e){return!1}onTokensColorsChanged(e){return!1}onZonesChanged(e){return!1}handleEvents(e){let t=!1;for(let i=0,n=e.length;i0&&void 0!==arguments[0]?arguments[0]:null;this.hitTarget=e,this.type=0}}class X{get hitTarget(){return this.spanNode}constructor(e,t,i){this.position=e,this.spanNode=t,this.injectedText=i,this.type=1}}!function(e){e.createFromDOMInfo=function(e,t,i){const n=e.getPositionFromDOMInfo(t,i);return n?new X(n,t,null):new J(t)}}(j||(j={}));class ee{constructor(e,t){this.lastViewCursorsRenderData=e,this.lastTextareaPosition=t}}class te{static _deduceRage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return!t&&e?new Q.e(e.lineNumber,e.column,e.lineNumber,e.column):null!==t&&void 0!==t?t:null}static createUnknown(e,t,i){return{type:0,element:e,mouseColumn:t,position:i,range:this._deduceRage(i)}}static createTextarea(e,t){return{type:1,element:e,mouseColumn:t,position:null,range:null}}static createMargin(e,t,i,n,o,s){return{type:e,element:t,mouseColumn:i,position:n,range:o,detail:s}}static createViewZone(e,t,i,n,o){return{type:e,element:t,mouseColumn:i,position:n,range:this._deduceRage(n),detail:o}}static createContentText(e,t,i,n,o){return{type:6,element:e,mouseColumn:t,position:i,range:this._deduceRage(i,n),detail:o}}static createContentEmpty(e,t,i,n){return{type:7,element:e,mouseColumn:t,position:i,range:this._deduceRage(i),detail:n}}static createContentWidget(e,t,i){return{type:9,element:e,mouseColumn:t,position:null,range:null,detail:i}}static createScrollbar(e,t,i){return{type:11,element:e,mouseColumn:t,position:i,range:this._deduceRage(i)}}static createOverlayWidget(e,t,i){return{type:12,element:e,mouseColumn:t,position:null,range:null,detail:i}}static createOutsideEditor(e,t,i,n){return{type:13,element:null,mouseColumn:e,position:t,range:this._deduceRage(t),outsidePosition:i,outsideDistance:n}}static _typeToString(e){return 1===e?"TEXTAREA":2===e?"GUTTER_GLYPH_MARGIN":3===e?"GUTTER_LINE_NUMBERS":4===e?"GUTTER_LINE_DECORATIONS":5===e?"GUTTER_VIEW_ZONE":6===e?"CONTENT_TEXT":7===e?"CONTENT_EMPTY":8===e?"CONTENT_VIEW_ZONE":9===e?"CONTENT_WIDGET":10===e?"OVERVIEW_RULER":11===e?"SCROLLBAR":12===e?"OVERLAY_WIDGET":"UNKNOWN"}static toString(e){return this._typeToString(e.type)+": "+e.position+" - "+e.range+" - "+JSON.stringify(e.detail)}}class ie{static isTextArea(e){return 2===e.length&&3===e[0]&&7===e[1]}static isChildOfViewLines(e){return e.length>=4&&3===e[0]&&8===e[3]}static isStrictChildOfViewLines(e){return e.length>4&&3===e[0]&&8===e[3]}static isChildOfScrollableElement(e){return e.length>=2&&3===e[0]&&6===e[1]}static isChildOfMinimap(e){return e.length>=2&&3===e[0]&&9===e[1]}static isChildOfContentWidgets(e){return e.length>=4&&3===e[0]&&1===e[3]}static isChildOfOverflowGuard(e){return e.length>=1&&3===e[0]}static isChildOfOverflowingContentWidgets(e){return e.length>=1&&2===e[0]}static isChildOfOverlayWidgets(e){return e.length>=2&&3===e[0]&&4===e[1]}static isChildOfOverflowingOverlayWidgets(e){return e.length>=1&&5===e[0]}}class ne{constructor(e,t,i){this.viewModel=e.viewModel;const n=e.configuration.options;this.layoutInfo=n.get(145),this.viewDomNode=t.viewDomNode,this.lineHeight=n.get(67),this.stickyTabStops=n.get(116),this.typicalHalfwidthCharacterWidth=n.get(50).typicalHalfwidthCharacterWidth,this.lastRenderData=i,this._context=e,this._viewHelper=t}getZoneAtCoord(e){return ne.getZoneAtCoord(this._context,e)}static getZoneAtCoord(e,t){const i=e.viewLayout.getWhitespaceAtVerticalOffset(t);if(i){const n=i.verticalOffset+i.height/2,o=e.viewModel.getLineCount();let s,r=null,a=null;return i.afterLineNumber!==o&&(a=new G.L(i.afterLineNumber+1,1)),i.afterLineNumber>0&&(r=new G.L(i.afterLineNumber,e.viewModel.getLineMaxColumn(i.afterLineNumber))),s=null===a?r:null===r?a:t=e.layoutInfo.glyphMarginLeft,this.isInContentArea=!this.isInMarginArea,this.mouseColumn=Math.max(0,le._getMouseColumn(this.mouseContentHorizontalOffset,e.typicalHalfwidthCharacterWidth))}}class se extends oe{get target(){return this._useHitTestTarget?this.hitTestResult.value.hitTarget:this._eventTarget}get targetPath(){return this._targetPathCacheElement!==this.target&&(this._targetPathCacheElement=this.target,this._targetPathCacheValue=U.collect(this.target,this._ctx.viewDomNode)),this._targetPathCacheValue}constructor(e,t,i,n,o){super(e,t,i,n),this.hitTestResult=new $.o((()=>le.doHitTest(this._ctx,this))),this._targetPathCacheElement=null,this._targetPathCacheValue=new Uint8Array(0),this._ctx=e,this._eventTarget=o;const s=Boolean(this._eventTarget);this._useHitTestTarget=!s}toString(){return"pos(".concat(this.pos.x,",").concat(this.pos.y,"), editorPos(").concat(this.editorPos.x,",").concat(this.editorPos.y,"), relativePos(").concat(this.relativePos.x,",").concat(this.relativePos.y,"), mouseVerticalOffset: ").concat(this.mouseVerticalOffset,", mouseContentHorizontalOffset: ").concat(this.mouseContentHorizontalOffset,"\n\ttarget: ").concat(this.target?this.target.outerHTML:null)}get wouldBenefitFromHitTestTargetSwitch(){return!this._useHitTestTarget&&null!==this.hitTestResult.value.hitTarget&&this.target!==this.hitTestResult.value.hitTarget}switchToHitTestTarget(){this._useHitTestTarget=!0}_getMouseColumn(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return e&&e.column0&&void 0!==arguments[0]?arguments[0]:null;return te.createUnknown(this.target,this._getMouseColumn(e),e)}fulfillTextarea(){return te.createTextarea(this.target,this._getMouseColumn())}fulfillMargin(e,t,i,n){return te.createMargin(e,this.target,this._getMouseColumn(t),t,i,n)}fulfillViewZone(e,t,i){return te.createViewZone(e,this.target,this._getMouseColumn(t),t,i)}fulfillContentText(e,t,i){return te.createContentText(this.target,this._getMouseColumn(e),e,t,i)}fulfillContentEmpty(e,t){return te.createContentEmpty(this.target,this._getMouseColumn(e),e,t)}fulfillContentWidget(e){return te.createContentWidget(this.target,this._getMouseColumn(),e)}fulfillScrollbar(e){return te.createScrollbar(this.target,this._getMouseColumn(e),e)}fulfillOverlayWidget(e){return te.createOverlayWidget(this.target,this._getMouseColumn(),e)}}const re={isAfterLines:!0};function ae(e){return{isAfterLines:!1,horizontalDistanceToText:e}}class le{constructor(e,t){this._context=e,this._viewHelper=t}mouseTargetIsWidget(e){const t=e.target,i=U.collect(t,this._viewHelper.viewDomNode);return!(!ie.isChildOfContentWidgets(i)&&!ie.isChildOfOverflowingContentWidgets(i))||!(!ie.isChildOfOverlayWidgets(i)&&!ie.isChildOfOverflowingOverlayWidgets(i))}createMouseTarget(e,t,i,n,o){const s=new ne(this._context,this._viewHelper,e),r=new se(s,t,i,n,o);try{const e=le._createMouseTarget(s,r);if(6===e.type&&s.stickyTabStops&&null!==e.position){const t=le._snapToSoftTabBoundary(e.position,s.viewModel),i=Q.e.fromPositions(t,t).plusRange(e.range);return r.fulfillContentText(t,i,e.detail)}return e}catch(a){return r.fulfillUnknown()}}static _createMouseTarget(e,t){if(null===t.target)return t.fulfillUnknown();const i=t;let n=null;return ie.isChildOfOverflowGuard(t.targetPath)||ie.isChildOfOverflowingContentWidgets(t.targetPath)||ie.isChildOfOverflowingOverlayWidgets(t.targetPath)||(n=n||t.fulfillUnknown()),n=n||le._hitTestContentWidget(e,i),n=n||le._hitTestOverlayWidget(e,i),n=n||le._hitTestMinimap(e,i),n=n||le._hitTestScrollbarSlider(e,i),n=n||le._hitTestViewZone(e,i),n=n||le._hitTestMargin(e,i),n=n||le._hitTestViewCursor(e,i),n=n||le._hitTestTextArea(e,i),n=n||le._hitTestViewLines(e,i),n=n||le._hitTestScrollbar(e,i),n||t.fulfillUnknown()}static _hitTestContentWidget(e,t){if(ie.isChildOfContentWidgets(t.targetPath)||ie.isChildOfOverflowingContentWidgets(t.targetPath)){const i=e.findAttribute(t.target,"widgetId");return i?t.fulfillContentWidget(i):t.fulfillUnknown()}return null}static _hitTestOverlayWidget(e,t){if(ie.isChildOfOverlayWidgets(t.targetPath)||ie.isChildOfOverflowingOverlayWidgets(t.targetPath)){const i=e.findAttribute(t.target,"widgetId");return i?t.fulfillOverlayWidget(i):t.fulfillUnknown()}return null}static _hitTestViewCursor(e,t){if(t.target){const i=e.lastRenderData.lastViewCursorsRenderData;for(const e of i)if(t.target===e.domNode)return t.fulfillContentText(e.position,null,{mightBeForeignElement:!1,injectedText:null})}if(t.isInContentArea){const i=e.lastRenderData.lastViewCursorsRenderData,n=t.mouseContentHorizontalOffset,o=t.mouseVerticalOffset;for(const s of i){if(ns.contentLeft+s.width)continue;const i=e.getVerticalOffsetForLineNumber(s.position.lineNumber);if(i<=o&&o<=i+s.height)return t.fulfillContentText(s.position,null,{mightBeForeignElement:!1,injectedText:null})}}return null}static _hitTestViewZone(e,t){const i=e.getZoneAtCoord(t.mouseVerticalOffset);if(i){const e=t.isInContentArea?8:5;return t.fulfillViewZone(e,i.position,i)}return null}static _hitTestTextArea(e,t){return ie.isTextArea(t.targetPath)?e.lastRenderData.lastTextareaPosition?t.fulfillContentText(e.lastRenderData.lastTextareaPosition,null,{mightBeForeignElement:!1,injectedText:null}):t.fulfillTextarea():null}static _hitTestMargin(e,t){if(t.isInMarginArea){const i=e.getFullLineRangeAtCoord(t.mouseVerticalOffset),n=i.range.getStartPosition();let o=Math.abs(t.relativePos.x);const s={isAfterLines:i.isAfterLines,glyphMarginLeft:e.layoutInfo.glyphMarginLeft,glyphMarginWidth:e.layoutInfo.glyphMarginWidth,lineNumbersWidth:e.layoutInfo.lineNumbersWidth,offsetX:o};if(o-=e.layoutInfo.glyphMarginLeft,o<=e.layoutInfo.glyphMarginWidth){const r=e.viewModel.coordinatesConverter.convertViewPositionToModelPosition(i.range.getStartPosition()),a=e.viewModel.glyphLanes.getLanesAtLine(r.lineNumber);return s.glyphMarginLane=a[Math.floor(o/e.lineHeight)],t.fulfillMargin(2,n,i.range,s)}return o-=e.layoutInfo.glyphMarginWidth,o<=e.layoutInfo.lineNumbersWidth?t.fulfillMargin(3,n,i.range,s):(o-=e.layoutInfo.lineNumbersWidth,t.fulfillMargin(4,n,i.range,s))}return null}static _hitTestViewLines(e,t){if(!ie.isChildOfViewLines(t.targetPath))return null;if(e.isInTopPadding(t.mouseVerticalOffset))return t.fulfillContentEmpty(new G.L(1,1),re);if(e.isAfterLines(t.mouseVerticalOffset)||e.isInBottomPadding(t.mouseVerticalOffset)){const i=e.viewModel.getLineCount(),n=e.viewModel.getLineMaxColumn(i);return t.fulfillContentEmpty(new G.L(i,n),re)}if(ie.isStrictChildOfViewLines(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset);if(0===e.viewModel.getLineLength(i)){const n=e.getLineWidth(i),o=ae(t.mouseContentHorizontalOffset-n);return t.fulfillContentEmpty(new G.L(i,1),o)}const n=e.getLineWidth(i);if(t.mouseContentHorizontalOffset>=n){const o=ae(t.mouseContentHorizontalOffset-n),s=new G.L(i,e.viewModel.getLineMaxColumn(i));return t.fulfillContentEmpty(s,o)}}const i=t.hitTestResult.value;return 1===i.type?le.createMouseTargetFromHitTestPosition(e,t,i.spanNode,i.position,i.injectedText):t.wouldBenefitFromHitTestTargetSwitch?(t.switchToHitTestTarget(),this._createMouseTarget(e,t)):t.fulfillUnknown()}static _hitTestMinimap(e,t){if(ie.isChildOfMinimap(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.viewModel.getLineMaxColumn(i);return t.fulfillScrollbar(new G.L(i,n))}return null}static _hitTestScrollbarSlider(e,t){if(ie.isChildOfScrollableElement(t.targetPath)&&t.target&&1===t.target.nodeType){const i=t.target.className;if(i&&/\b(slider|scrollbar)\b/.test(i)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.viewModel.getLineMaxColumn(i);return t.fulfillScrollbar(new G.L(i,n))}}return null}static _hitTestScrollbar(e,t){if(ie.isChildOfScrollableElement(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.viewModel.getLineMaxColumn(i);return t.fulfillScrollbar(new G.L(i,n))}return null}getMouseColumn(e){const t=this._context.configuration.options,i=t.get(145),n=this._context.viewLayout.getCurrentScrollLeft()+e.x-i.contentLeft;return le._getMouseColumn(n,t.get(50).typicalHalfwidthCharacterWidth)}static _getMouseColumn(e,t){if(e<0)return 1;return Math.round(e/t)+1}static createMouseTargetFromHitTestPosition(e,t,i,n,o){const s=n.lineNumber,r=n.column,a=e.getLineWidth(s);if(t.mouseContentHorizontalOffset>a){const e=ae(t.mouseContentHorizontalOffset-a);return t.fulfillContentEmpty(n,e)}const h=e.visibleRangeForPosition(s,r);if(!h)return t.fulfillUnknown(n);const d=h.left;if(Math.abs(t.mouseContentHorizontalOffset-d)<1)return t.fulfillContentText(n,null,{mightBeForeignElement:!!o,injectedText:o});const c=[];if(c.push({offset:h.left,column:r}),r>1){const t=e.visibleRangeForPosition(s,r-1);t&&c.push({offset:t.left,column:r-1})}if(re.offset-t.offset));const u=t.pos.toClientCoordinates(l.Jj(e.viewDomNode)),g=i.getBoundingClientRect(),m=g.left<=u.clientX&&u.clientX<=g.right;let f=null;for(let l=1;lo)){const i=Math.floor((n+o)/2);let s=t.pos.y+(i-t.mouseVerticalOffset);s<=t.editorPos.y&&(s=t.editorPos.y+1),s>=t.editorPos.y+t.editorPos.height&&(s=t.editorPos.y+t.editorPos.height-1);const r=new W.YN(t.pos.x,s),a=this._actualDoHitTestWithCaretRangeFromPoint(e,r.toClientCoordinates(l.Jj(e.viewDomNode)));if(1===a.type)return a}return this._actualDoHitTestWithCaretRangeFromPoint(e,t.pos.toClientCoordinates(l.Jj(e.viewDomNode)))}static _actualDoHitTestWithCaretRangeFromPoint(e,t){const i=l.Ay(e.viewDomNode);let n;if(n=i?"undefined"===typeof i.caretRangeFromPoint?function(e,t,i){const n=document.createRange();let o=e.elementFromPoint(t,i);if(null!==o){for(;o&&o.firstChild&&o.firstChild.nodeType!==o.firstChild.TEXT_NODE&&o.lastChild&&o.lastChild.firstChild;)o=o.lastChild;const e=o.getBoundingClientRect(),i=l.Jj(o),s=i.getComputedStyle(o,null).getPropertyValue("font-style"),r=i.getComputedStyle(o,null).getPropertyValue("font-variant"),a=i.getComputedStyle(o,null).getPropertyValue("font-weight"),h=i.getComputedStyle(o,null).getPropertyValue("font-size"),d=i.getComputedStyle(o,null).getPropertyValue("line-height"),c=i.getComputedStyle(o,null).getPropertyValue("font-family"),u="".concat(s," ").concat(r," ").concat(a," ").concat(h,"/").concat(d," ").concat(c),g=o.innerText;let m,f=e.left,p=0;if(t>e.left+e.width)p=g.length;else{const e=he.getInstance();for(let i=0;ithis._createMouseTarget(e,t)),(e=>this._getMouseColumn(e)))),this.lastMouseLeaveTime=-1,this._height=this._context.configuration.options.get(145).height;const n=new W.N5(this.viewHelper.viewDomNode);this._register(n.onContextMenu(this.viewHelper.viewDomNode,(e=>this._onContextMenu(e,!0)))),this._register(n.onMouseMove(this.viewHelper.viewDomNode,(e=>{this._onMouseMove(e),this._mouseLeaveMonitor||(this._mouseLeaveMonitor=l.nm(this.viewHelper.viewDomNode.ownerDocument,"mousemove",(e=>{this.viewHelper.viewDomNode.contains(e.target)||this._onMouseLeave(new W.gy(e,!1,this.viewHelper.viewDomNode))})))}))),this._register(n.onMouseUp(this.viewHelper.viewDomNode,(e=>this._onMouseUp(e)))),this._register(n.onMouseLeave(this.viewHelper.viewDomNode,(e=>this._onMouseLeave(e))));let o=0;this._register(n.onPointerDown(this.viewHelper.viewDomNode,((e,t)=>{o=t}))),this._register(l.nm(this.viewHelper.viewDomNode,l.tw.POINTER_UP,(e=>{this._mouseDownOperation.onPointerUp()}))),this._register(n.onMouseDown(this.viewHelper.viewDomNode,(e=>this._onMouseDown(e,o)))),this._setupMouseWheelZoomListener(),this._context.addEventHandler(this)}_setupMouseWheelZoomListener(){const e=fe.Io.INSTANCE;let t=0,i=D.C.getZoomLevel(),n=!1,o=0;function s(e){return _.dz?(e.metaKey||e.ctrlKey)&&!e.shiftKey&&!e.altKey:e.ctrlKey&&!e.metaKey&&!e.shiftKey&&!e.altKey}this._register(l.nm(this.viewHelper.viewDomNode,l.tw.MOUSE_WHEEL,(r=>{if(this.viewController.emitMouseWheel(r),!this._context.configuration.options.get(76))return;const a=new ge.q(r);if(e.acceptStandardWheelEvent(a),e.isPhysicalMouseWheel()){if(s(r)){const e=D.C.getZoomLevel(),t=a.deltaY>0?1:-1;D.C.setZoomLevel(e+t),a.preventDefault(),a.stopPropagation()}}else Date.now()-t>50&&(i=D.C.getZoomLevel(),n=s(r),o=0),t=Date.now(),o+=a.deltaY,n&&(D.C.setZoomLevel(i+o/5),a.preventDefault(),a.stopPropagation())}),{capture:!0,passive:!1}))}dispose(){this._context.removeEventHandler(this),this._mouseLeaveMonitor&&(this._mouseLeaveMonitor.dispose(),this._mouseLeaveMonitor=null),super.dispose()}onConfigurationChanged(e){if(e.hasChanged(145)){const e=this._context.configuration.options.get(145).height;this._height!==e&&(this._height=e,this._mouseDownOperation.onHeightChanged())}return!1}onCursorStateChanged(e){return this._mouseDownOperation.onCursorStateChanged(e),!1}onFocusChanged(e){return!1}getTargetAtClientPoint(e,t){const i=new W.rU(e,t).toPageCoordinates(l.Jj(this.viewHelper.viewDomNode)),n=(0,W.kG)(this.viewHelper.viewDomNode);if(i.yn.y+n.height||i.xn.x+n.width)return null;const o=(0,W.Pp)(this.viewHelper.viewDomNode,n,i);return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),n,i,o,null)}_createMouseTarget(e,t){let i=e.target;if(!this.viewHelper.viewDomNode.contains(i)){const t=l.Ay(this.viewHelper.viewDomNode);t&&(i=t.elementsFromPoint(e.posx,e.posy).find((e=>this.viewHelper.viewDomNode.contains(e))))}return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),e.editorPos,e.pos,e.relativePos,t?i:null)}_getMouseColumn(e){return this.mouseTargetFactory.getMouseColumn(e.relativePos)}_onContextMenu(e,t){this.viewController.emitContextMenu({event:e,target:this._createMouseTarget(e,t)})}_onMouseMove(e){if(this.mouseTargetFactory.mouseTargetIsWidget(e)||e.preventDefault(),this._mouseDownOperation.isActive())return;e.timestamp{e.preventDefault(),this.viewHelper.focusTextArea()};if(h&&(n||s&&r))d(),this._mouseDownOperation.start(i.type,e,t);else if(o)e.preventDefault();else if(a){const n=i.detail;h&&this.viewHelper.shouldSuppressMouseDownOnViewZone(n.viewZoneId)&&(d(),this._mouseDownOperation.start(i.type,e,t),e.preventDefault())}else l&&this.viewHelper.shouldSuppressMouseDownOnWidget(i.detail)&&(d(),e.preventDefault());this.viewController.emitMouseDown({event:e,target:i})}}class _e extends c.JT{constructor(e,t,i,n,o,s){super(),this._context=e,this._viewController=t,this._viewHelper=i,this._mouseTargetFactory=n,this._createMouseTarget=o,this._getMouseColumn=s,this._mouseMoveMonitor=this._register(new W.AL(this._viewHelper.viewDomNode)),this._topBottomDragScrolling=this._register(new ve(this._context,this._viewHelper,this._mouseTargetFactory,((e,t,i)=>this._dispatchMouse(e,t,i)))),this._mouseState=new Ce,this._currentSelection=new me.Y(1,1,1,1),this._isActive=!1,this._lastMouseEvent=null}dispose(){super.dispose()}isActive(){return this._isActive}_onMouseDownThenMove(e){this._lastMouseEvent=e,this._mouseState.setModifiers(e);const t=this._findMousePosition(e,!1);t&&(this._mouseState.isDragAndDrop?this._viewController.emitMouseDrag({event:e,target:t}):13!==t.type||"above"!==t.outsidePosition&&"below"!==t.outsidePosition?(this._topBottomDragScrolling.stop(),this._dispatchMouse(t,!0,1)):this._topBottomDragScrolling.start(t,e))}start(e,t,i){this._lastMouseEvent=t,this._mouseState.setStartedOnLineNumbers(3===e),this._mouseState.setStartButtons(t),this._mouseState.setModifiers(t);const n=this._findMousePosition(t,!0);if(!n||!n.position)return;this._mouseState.trySetCount(t.detail,n.position),t.detail=this._mouseState.count;const o=this._context.configuration.options;if(!o.get(91)&&o.get(35)&&!o.get(22)&&!this._mouseState.altKey&&t.detail<2&&!this._isActive&&!this._currentSelection.isEmpty()&&6===n.type&&n.position&&this._currentSelection.containsPosition(n.position))return this._mouseState.isDragAndDrop=!0,this._isActive=!0,void this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,i,t.buttons,(e=>this._onMouseDownThenMove(e)),(e=>{const t=this._findMousePosition(this._lastMouseEvent,!1);l.vd(e)?this._viewController.emitMouseDropCanceled():this._viewController.emitMouseDrop({event:this._lastMouseEvent,target:t?this._createMouseTarget(this._lastMouseEvent,!0):null}),this._stop()}));this._mouseState.isDragAndDrop=!1,this._dispatchMouse(n,t.shiftKey,1),this._isActive||(this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,i,t.buttons,(e=>this._onMouseDownThenMove(e)),(()=>this._stop())))}_stop(){this._isActive=!1,this._topBottomDragScrolling.stop()}onHeightChanged(){this._mouseMoveMonitor.stopMonitoring()}onPointerUp(){this._mouseMoveMonitor.stopMonitoring()}onCursorStateChanged(e){this._currentSelection=e.selections[0]}_getPositionOutsideEditor(e){const t=e.editorPos,i=this._context.viewModel,n=this._context.viewLayout,o=this._getMouseColumn(e);if(e.posyt.y+t.height){const s=e.posy-t.y-t.height,r=n.getCurrentScrollTop()+e.relativePos.y,a=ne.getZoneAtCoord(this._context,r);if(a){const e=this._helpPositionJumpOverViewZone(a);if(e)return te.createOutsideEditor(o,e,"below",s)}const l=n.getLineNumberAtVerticalOffset(r);return te.createOutsideEditor(o,new G.L(l,i.getLineMaxColumn(l)),"below",s)}const s=n.getLineNumberAtVerticalOffset(n.getCurrentScrollTop()+e.relativePos.y);if(e.posxt.x+t.width){const n=e.posx-t.x-t.width;return te.createOutsideEditor(o,new G.L(s,i.getLineMaxColumn(s)),"right",n)}return null}_findMousePosition(e,t){const i=this._getPositionOutsideEditor(e);if(i)return i;const n=this._createMouseTarget(e,t);if(!n.position)return null;if(8===n.type||5===n.type){const e=this._helpPositionJumpOverViewZone(n.detail);if(e)return te.createViewZone(n.type,n.element,n.mouseColumn,e,n.detail)}return n}_helpPositionJumpOverViewZone(e){const t=new G.L(this._currentSelection.selectionStartLineNumber,this._currentSelection.selectionStartColumn),i=e.positionBefore,n=e.positionAfter;return i&&n?i.isBefore(t)?i:n:null}_dispatchMouse(e,t,i){e.position&&this._viewController.dispatchMouse({position:e.position,mouseColumn:e.mouseColumn,startedOnLineNumbers:this._mouseState.startedOnLineNumbers,revealType:i,inSelectionMode:t,mouseDownCount:this._mouseState.count,altKey:this._mouseState.altKey,ctrlKey:this._mouseState.ctrlKey,metaKey:this._mouseState.metaKey,shiftKey:this._mouseState.shiftKey,leftButton:this._mouseState.leftButton,middleButton:this._mouseState.middleButton,onInjectedText:6===e.type&&null!==e.detail.injectedText})}}class ve extends c.JT{constructor(e,t,i,n){super(),this._context=e,this._viewHelper=t,this._mouseTargetFactory=i,this._dispatchMouse=n,this._operation=null}dispose(){super.dispose(),this.stop()}start(e,t){this._operation?this._operation.setPosition(e,t):this._operation=new be(this._context,this._viewHelper,this._mouseTargetFactory,this._dispatchMouse,e,t)}stop(){this._operation&&(this._operation.dispose(),this._operation=null)}}class be extends c.JT{constructor(e,t,i,n,o,s){super(),this._context=e,this._viewHelper=t,this._mouseTargetFactory=i,this._dispatchMouse=n,this._position=o,this._mouseEvent=s,this._lastTime=Date.now(),this._animationFrameDisposable=l.jL(l.Jj(s.browserEvent),(()=>this._execute()))}dispose(){this._animationFrameDisposable.dispose(),super.dispose()}setPosition(e,t){this._position=e,this._mouseEvent=t}_tick(){const e=Date.now(),t=e-this._lastTime;return this._lastTime=e,t}_getScrollSpeed(){const e=this._context.configuration.options.get(67),t=this._context.configuration.options.get(145).height/e,i=this._position.outsideDistance/e;return i<=1.5?Math.max(30,t*(1+i)):i<=3?Math.max(60,t*(2+i)):Math.max(200,t*(7+i))}_execute(){const e=this._context.configuration.options.get(67),t=this._getScrollSpeed()*(this._tick()/1e3)*e,i="above"===this._position.outsidePosition?-t:t;this._context.viewModel.viewLayout.deltaScrollNow(0,i),this._viewHelper.renderNow();const n=this._context.viewLayout.getLinesViewportData(),o="above"===this._position.outsidePosition?n.startLineNumber:n.endLineNumber;let s;{const e=(0,W.kG)(this._viewHelper.viewDomNode),t=this._context.configuration.options.get(145).horizontalScrollbarHeight,i=new W.YN(this._mouseEvent.pos.x,e.y+e.height-t-.1),n=(0,W.Pp)(this._viewHelper.viewDomNode,e,i);s=this._mouseTargetFactory.createMouseTarget(this._viewHelper.getLastRenderData(),e,i,n,null)}s.position&&s.position.lineNumber===o||(s="above"===this._position.outsidePosition?te.createOutsideEditor(this._position.mouseColumn,new G.L(o,1),"above",this._position.outsideDistance):te.createOutsideEditor(this._position.mouseColumn,new G.L(o,this._context.viewModel.getLineMaxColumn(o)),"below",this._position.outsideDistance)),this._dispatchMouse(s,!0,2),this._animationFrameDisposable=l.jL(l.Jj(s.element),(()=>this._execute()))}}class Ce{get altKey(){return this._altKey}get ctrlKey(){return this._ctrlKey}get metaKey(){return this._metaKey}get shiftKey(){return this._shiftKey}get leftButton(){return this._leftButton}get middleButton(){return this._middleButton}get startedOnLineNumbers(){return this._startedOnLineNumbers}constructor(){this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._leftButton=!1,this._middleButton=!1,this._startedOnLineNumbers=!1,this._lastMouseDownPosition=null,this._lastMouseDownPositionEqualCount=0,this._lastMouseDownCount=0,this._lastSetMouseDownCountTime=0,this.isDragAndDrop=!1}get count(){return this._lastMouseDownCount}setModifiers(e){this._altKey=e.altKey,this._ctrlKey=e.ctrlKey,this._metaKey=e.metaKey,this._shiftKey=e.shiftKey}setStartButtons(e){this._leftButton=e.leftButton,this._middleButton=e.middleButton}setStartedOnLineNumbers(e){this._startedOnLineNumbers=e}trySetCount(e,t){const i=(new Date).getTime();i-this._lastSetMouseDownCountTime>Ce.CLEAR_MOUSE_DOWN_COUNT_TIME&&(e=1),this._lastSetMouseDownCountTime=i,e>this._lastMouseDownCount+1&&(e=this._lastMouseDownCount+1),this._lastMouseDownPosition&&this._lastMouseDownPosition.equals(t)?this._lastMouseDownPositionEqualCount++:this._lastMouseDownPositionEqualCount=1,this._lastMouseDownPosition=t,this._lastMouseDownCount=Math.min(e,this._lastMouseDownPositionEqualCount)}}Ce.CLEAR_MOUSE_DOWN_COUNT_TIME=400;var we=i(73451);class ye extends pe{constructor(e,t,i){super(e,t,i),this._register(ce.o.addTarget(this.viewHelper.linesContentDomNode)),this._register(l.nm(this.viewHelper.linesContentDomNode,ce.t.Tap,(e=>this.onTap(e)))),this._register(l.nm(this.viewHelper.linesContentDomNode,ce.t.Change,(e=>this.onChange(e)))),this._register(l.nm(this.viewHelper.linesContentDomNode,ce.t.Contextmenu,(e=>this._onContextMenu(new W.gy(e,!1,this.viewHelper.viewDomNode),!1)))),this._lastPointerType="mouse",this._register(l.nm(this.viewHelper.linesContentDomNode,"pointerdown",(e=>{const t=e.pointerType;this._lastPointerType="mouse"!==t?"touch"===t?"touch":"pen":"mouse"})));const n=new W.tC(this.viewHelper.viewDomNode);this._register(n.onPointerMove(this.viewHelper.viewDomNode,(e=>this._onMouseMove(e)))),this._register(n.onPointerUp(this.viewHelper.viewDomNode,(e=>this._onMouseUp(e)))),this._register(n.onPointerLeave(this.viewHelper.viewDomNode,(e=>this._onMouseLeave(e)))),this._register(n.onPointerDown(this.viewHelper.viewDomNode,((e,t)=>this._onMouseDown(e,t))))}onTap(e){e.initialTarget&&this.viewHelper.linesContentDomNode.contains(e.initialTarget)&&(e.preventDefault(),this.viewHelper.focusTextArea(),this._dispatchGesture(e,!1))}onChange(e){"touch"===this._lastPointerType&&this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX,-e.translationY),"pen"===this._lastPointerType&&this._dispatchGesture(e,!0)}_dispatchGesture(e,t){const i=this._createMouseTarget(new W.gy(e,!1,this.viewHelper.viewDomNode),!1);i.position&&this.viewController.dispatchMouse({position:i.position,mouseColumn:i.position.column,startedOnLineNumbers:!1,revealType:1,mouseDownCount:e.tapCount,inSelectionMode:t,altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,leftButton:!1,middleButton:!1,onInjectedText:6===i.type&&null!==i.detail.injectedText})}_onMouseDown(e,t){"touch"!==e.browserEvent.pointerType&&super._onMouseDown(e,t)}}class Se extends pe{constructor(e,t,i){super(e,t,i),this._register(ce.o.addTarget(this.viewHelper.linesContentDomNode)),this._register(l.nm(this.viewHelper.linesContentDomNode,ce.t.Tap,(e=>this.onTap(e)))),this._register(l.nm(this.viewHelper.linesContentDomNode,ce.t.Change,(e=>this.onChange(e)))),this._register(l.nm(this.viewHelper.linesContentDomNode,ce.t.Contextmenu,(e=>this._onContextMenu(new W.gy(e,!1,this.viewHelper.viewDomNode),!1))))}onTap(e){e.preventDefault(),this.viewHelper.focusTextArea();const t=this._createMouseTarget(new W.gy(e,!1,this.viewHelper.viewDomNode),!1);if(t.position){const e=document.createEvent("CustomEvent");e.initEvent(we.pd.Tap,!1,!0),this.viewHelper.dispatchTextAreaEvent(e),this.viewController.moveTo(t.position,1)}}onChange(e){this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX,-e.translationY)}}class Le extends c.JT{constructor(e,t,i){super();(_.gn||_.Dt&&_.tq)&&de.D.pointerEvents?this.handler=this._register(new ye(e,t,i)):ue.E.TouchEvent?this.handler=this._register(new Se(e,t,i)):this.handler=this._register(new pe(e,t,i))}getTargetAtClientPoint(e,t){return this.handler.getTargetAtClientPoint(e,t)}}var ke=i(71721),De=i(25085),Ne=i(38954);class xe extends H{}var Ee=i(17903),Ie=i(36729);class Te extends xe{constructor(e){super(),this._context=e,this._readConfig(),this._lastCursorModelPosition=new G.L(1,1),this._renderResult=null,this._activeLineNumber=1,this._context.addEventHandler(this)}_readConfig(){const e=this._context.configuration.options;this._lineHeight=e.get(67);const t=e.get(68);this._renderLineNumbers=t.renderType,this._renderCustomLineNumbers=t.renderFn,this._renderFinalNewline=e.get(95);const i=e.get(145);this._lineNumbersLeft=i.lineNumbersLeft,this._lineNumbersWidth=i.lineNumbersWidth}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){return this._readConfig(),!0}onCursorStateChanged(e){const t=e.selections[0].getPosition();this._lastCursorModelPosition=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(t);let i=!1;return this._activeLineNumber!==t.lineNumber&&(this._activeLineNumber=t.lineNumber,i=!0),2!==this._renderLineNumbers&&3!==this._renderLineNumbers||(i=!0),i}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}onDecorationsChanged(e){return e.affectsLineNumber}_getLineRenderLineNumber(e){const t=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new G.L(e,1));if(1!==t.column)return"";const i=t.lineNumber;if(this._renderCustomLineNumbers)return this._renderCustomLineNumbers(i);if(2===this._renderLineNumbers){const e=Math.abs(this._lastCursorModelPosition.lineNumber-i);return 0===e?''+i+"":String(e)}if(3===this._renderLineNumbers){if(this._lastCursorModelPosition.lineNumber===i)return String(i);if(i%10===0)return String(i);return i===this._context.viewModel.getLineCount()?String(i):""}return String(i)}prepareRender(e){if(0===this._renderLineNumbers)return void(this._renderResult=null);const t=_.IJ?this._lineHeight%2===0?" lh-even":" lh-odd":"",i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,o=this._context.viewModel.getDecorationsInViewport(e.visibleRange).filter((e=>!!e.options.lineNumberClassName));o.sort(((e,t)=>Q.e.compareRangesUsingEnds(e.range,t.range)));let s=0;const r=this._context.viewModel.getLineCount(),a=[];for(let l=i;l<=n;l++){const e=l-i;let n=this._getLineRenderLineNumber(l),h="";for(;s').concat(n,"")):a[e]=""}this._renderResult=a}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}Te.CLASS_NAME="line-numbers",(0,Ee.Ic)(((e,t)=>{const i=e.getColor(Ie.hw),n=e.getColor(Ie.Bj);n?t.addRule(".monaco-editor .line-numbers.dimmed-line-number { color: ".concat(n,"; }")):i&&t.addRule(".monaco-editor .line-numbers.dimmed-line-number { color: ".concat(i.transparent(.4),"; }"))}));class Me extends K{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(145);this._canUseLayerHinting=!t.get(32),this._contentLeft=i.contentLeft,this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._domNode=(0,z.X)(document.createElement("div")),this._domNode.setClassName(Me.OUTER_CLASS_NAME),this._domNode.setPosition("absolute"),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._glyphMarginBackgroundDomNode=(0,z.X)(document.createElement("div")),this._glyphMarginBackgroundDomNode.setClassName(Me.CLASS_NAME),this._domNode.appendChild(this._glyphMarginBackgroundDomNode)}dispose(){super.dispose()}getDomNode(){return this._domNode}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(145);return this._canUseLayerHinting=!t.get(32),this._contentLeft=i.contentLeft,this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollTopChanged}prepareRender(e){}render(e){this._domNode.setLayerHinting(this._canUseLayerHinting),this._domNode.setContain("strict");const t=e.scrollTop-e.bigNumbersDelta;this._domNode.setTop(-t);const i=Math.min(e.scrollHeight,1e6);this._domNode.setHeight(i),this._domNode.setWidth(this._contentLeft),this._glyphMarginBackgroundDomNode.setLeft(this._glyphMarginLeft),this._glyphMarginBackgroundDomNode.setWidth(this._glyphMarginWidth),this._glyphMarginBackgroundDomNode.setHeight(i)}}Me.CLASS_NAME="glyph-margin",Me.OUTER_CLASS_NAME="margin";var Ae=i(67055);const Re="monaco-mouse-cursor-text";var Oe=i(761),Pe=i(89652),Fe=i(43283),Be=i(46765),ze=i(34304),Ve=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},We=function(e,t){return function(i,n){t(i,n,e)}};class He{constructor(e,t,i,n,o){this._context=e,this.modelLineNumber=t,this.distanceToModelLineStart=i,this.widthOfHiddenLineTextBefore=n,this.distanceToModelLineEnd=o,this._visibleTextAreaBrand=void 0,this.startPosition=null,this.endPosition=null,this.visibleTextareaStart=null,this.visibleTextareaEnd=null,this._previousPresentation=null}prepareRender(e){const t=new G.L(this.modelLineNumber,this.distanceToModelLineStart+1),i=new G.L(this.modelLineNumber,this._context.viewModel.model.getLineMaxColumn(this.modelLineNumber)-this.distanceToModelLineEnd);this.startPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(t),this.endPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(i),this.startPosition.lineNumber===this.endPosition.lineNumber?(this.visibleTextareaStart=e.visibleRangeForPosition(this.startPosition),this.visibleTextareaEnd=e.visibleRangeForPosition(this.endPosition)):(this.visibleTextareaStart=null,this.visibleTextareaEnd=null)}definePresentation(e){return this._previousPresentation||(this._previousPresentation=e||{foreground:1,italic:!1,bold:!1,underline:!1,strikethrough:!1}),this._previousPresentation}}const Ke=m.vU;let Ue=class extends K{constructor(e,t,i,n,o){super(e),this._keybindingService=n,this._instantiationService=o,this._primaryCursorPosition=new G.L(1,1),this._primaryCursorVisibleRange=null,this._viewController=t,this._visibleRangeProvider=i,this._scrollLeft=0,this._scrollTop=0;const s=this._context.configuration.options,r=s.get(145);this._setAccessibilityOptions(s),this._contentLeft=r.contentLeft,this._contentWidth=r.contentWidth,this._contentHeight=r.height,this._fontInfo=s.get(50),this._lineHeight=s.get(67),this._emptySelectionClipboard=s.get(37),this._copyWithSyntaxHighlighting=s.get(25),this._visibleTextArea=null,this._selections=[new me.Y(1,1,1,1)],this._modelSelections=[new me.Y(1,1,1,1)],this._lastRenderPosition=null,this.textArea=(0,z.X)(document.createElement("textarea")),U.write(this.textArea,7),this.textArea.setClassName("inputarea ".concat(Re)),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off");const{tabSize:a}=this._context.viewModel.model.getOptions();this.textArea.domNode.style.tabSize="".concat(a*this._fontInfo.spaceWidth,"px"),this.textArea.setAttribute("autocorrect","off"),this.textArea.setAttribute("autocapitalize","off"),this.textArea.setAttribute("autocomplete","off"),this.textArea.setAttribute("spellcheck","false"),this.textArea.setAttribute("aria-label",this._getAriaLabel(s)),this.textArea.setAttribute("aria-required",s.get(5)?"true":"false"),this.textArea.setAttribute("tabindex",String(s.get(124))),this.textArea.setAttribute("role","textbox"),this.textArea.setAttribute("aria-roledescription",ke.NC("editor","editor")),this.textArea.setAttribute("aria-multiline","true"),this.textArea.setAttribute("aria-autocomplete",s.get(91)?"none":"both"),this._ensureReadOnlyAttribute(),this.textAreaCover=(0,z.X)(document.createElement("div")),this.textAreaCover.setPosition("absolute");const l={getLineCount:()=>this._context.viewModel.getLineCount(),getLineMaxColumn:e=>this._context.viewModel.getLineMaxColumn(e),getValueInRange:(e,t)=>this._context.viewModel.getValueInRange(e,t),getValueLengthInRange:(e,t)=>this._context.viewModel.getValueLengthInRange(e,t),modifyPosition:(e,t)=>this._context.viewModel.modifyPosition(e,t)},h={getDataToCopy:()=>{const e=this._context.viewModel.getPlainTextToCopy(this._modelSelections,this._emptySelectionClipboard,_.ED),t=this._context.viewModel.model.getEOL(),i=this._emptySelectionClipboard&&1===this._modelSelections.length&&this._modelSelections[0].isEmpty(),n=Array.isArray(e)?e:null,o=Array.isArray(e)?e.join(t):e;let s,r=null;if(we.RA.forceCopyWithSyntaxHighlighting||this._copyWithSyntaxHighlighting&&o.length<65536){const e=this._context.viewModel.getRichTextToCopy(this._modelSelections,this._emptySelectionClipboard);e&&(s=e.html,r=e.mode)}return{isFromEmptySelection:i,multicursorText:n,text:o,html:s,mode:r}},getScreenReaderContent:()=>{if(1===this._accessibilitySupport){const e=this._selections[0];if(_.dz&&e.isEmpty()){const t=e.getStartPosition();let i=this._getWordBeforePosition(t);if(0===i.length&&(i=this._getCharacterBeforePosition(t)),i.length>0)return new Ne.un(i,i.length,i.length,Q.e.fromPositions(t),0)}const t=500;if(_.dz&&!e.isEmpty()&&l.getValueLengthInRange(e,0)0)return new Ne.un(i,n,n,Q.e.fromPositions(t),0)}return Ne.un.EMPTY}return Ne.ee.fromEditorSelection(l,this._selections[0],this._accessibilityPageSize,0===this._accessibilitySupport)},deduceModelPosition:(e,t,i)=>this._context.viewModel.deduceModelPositionRelativeToViewPosition(e,t,i)},d=this._register(new we.Tj(this.textArea.domNode));this._textAreaInput=this._register(this._instantiationService.createInstance(we.Fz,h,d,_.OS,{isAndroid:m.Dt,isChrome:m.i7,isFirefox:m.vU,isSafari:m.G6})),this._register(this._textAreaInput.onKeyDown((e=>{this._viewController.emitKeyDown(e)}))),this._register(this._textAreaInput.onKeyUp((e=>{this._viewController.emitKeyUp(e)}))),this._register(this._textAreaInput.onPaste((e=>{let t=!1,i=null,n=null;e.metadata&&(t=this._emptySelectionClipboard&&!!e.metadata.isFromEmptySelection,i="undefined"!==typeof e.metadata.multicursorText?e.metadata.multicursorText:null,n=e.metadata.mode),this._viewController.paste(e.text,t,i,n)}))),this._register(this._textAreaInput.onCut((()=>{this._viewController.cut()}))),this._register(this._textAreaInput.onType((e=>{e.replacePrevCharCnt||e.replaceNextCharCnt||e.positionDelta?(Ne.al&&console.log(" => compositionType: <<".concat(e.text,">>, ").concat(e.replacePrevCharCnt,", ").concat(e.replaceNextCharCnt,", ").concat(e.positionDelta)),this._viewController.compositionType(e.text,e.replacePrevCharCnt,e.replaceNextCharCnt,e.positionDelta)):(Ne.al&&console.log(" => type: <<".concat(e.text,">>")),this._viewController.type(e.text))}))),this._register(this._textAreaInput.onSelectionChangeRequest((e=>{this._viewController.setSelection(e)}))),this._register(this._textAreaInput.onCompositionStart((e=>{const t=this.textArea.domNode,i=this._modelSelections[0],{distanceToModelLineStart:n,widthOfHiddenTextBefore:o}=(()=>{const e=t.value.substring(0,Math.min(t.selectionStart,t.selectionEnd)),n=e.lastIndexOf("\n"),o=e.substring(n+1),s=o.lastIndexOf("\t"),r=o.length-s-1,a=i.getStartPosition(),l=Math.min(a.column-1,r),h=a.column-1-l,d=o.substring(0,o.length-l),{tabSize:c}=this._context.viewModel.model.getOptions(),u=function(e,t,i,n){if(0===t.length)return 0;const o=e.createElement("div");o.style.position="absolute",o.style.top="-50000px",o.style.width="50000px";const s=e.createElement("span");(0,g.N)(s,i),s.style.whiteSpace="pre",s.style.tabSize="".concat(n*i.spaceWidth,"px"),s.append(t),o.appendChild(s),e.body.appendChild(o);const r=s.offsetWidth;return e.body.removeChild(o),r}(this.textArea.domNode.ownerDocument,d,this._fontInfo,c);return{distanceToModelLineStart:h,widthOfHiddenTextBefore:u}})(),{distanceToModelLineEnd:s}=(()=>{const e=t.value.substring(Math.max(t.selectionStart,t.selectionEnd)),n=e.indexOf("\n"),o=-1===n?e:e.substring(0,n),s=o.indexOf("\t"),r=-1===s?o.length:o.length-s-1,a=i.getEndPosition(),l=Math.min(this._context.viewModel.model.getLineMaxColumn(a.lineNumber)-a.column,r);return{distanceToModelLineEnd:this._context.viewModel.model.getLineMaxColumn(a.lineNumber)-a.column-l}})();this._context.viewModel.revealRange("keyboard",!0,Q.e.fromPositions(this._selections[0].getStartPosition()),0,1),this._visibleTextArea=new He(this._context,i.startLineNumber,n,o,s),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off"),this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render(),this.textArea.setClassName("inputarea ".concat(Re," ime-input")),this._viewController.compositionStart(),this._context.viewModel.onCompositionStart()}))),this._register(this._textAreaInput.onCompositionUpdate((e=>{this._visibleTextArea&&(this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render())}))),this._register(this._textAreaInput.onCompositionEnd((()=>{this._visibleTextArea=null,this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off"),this._render(),this.textArea.setClassName("inputarea ".concat(Re)),this._viewController.compositionEnd(),this._context.viewModel.onCompositionEnd()}))),this._register(this._textAreaInput.onFocus((()=>{this._context.viewModel.setHasFocus(!0)}))),this._register(this._textAreaInput.onBlur((()=>{this._context.viewModel.setHasFocus(!1)}))),this._register(Fe.F.onDidChange((()=>{this._ensureReadOnlyAttribute()})))}writeScreenReaderContent(e){this._textAreaInput.writeNativeTextAreaContent(e)}dispose(){super.dispose()}_getAndroidWordAtPosition(e){const t=this._context.viewModel.getLineContent(e.lineNumber),i=(0,Ae.u)('`~!@#$%^&*()-=+[{]}\\|;:",.<>/?',[]);let n=!0,o=e.column,s=!0,r=e.column,a=0;for(;a<50&&(n||s);){if(n&&o<=1&&(n=!1),n){const e=t.charCodeAt(o-2);0!==i.get(e)?n=!1:o--}if(s&&r>t.length&&(s=!1),s){const e=t.charCodeAt(r-1);0!==i.get(e)?s=!1:r++}a++}return[t.substring(o-1,r-1),e.column-o]}_getWordBeforePosition(e){const t=this._context.viewModel.getLineContent(e.lineNumber),i=(0,Ae.u)(this._context.configuration.options.get(131),[]);let n=e.column,o=0;for(;n>1;){const s=t.charCodeAt(n-2);if(0!==i.get(s)||o>50)return t.substring(n-1,e.column-1);o++,n--}return t.substring(0,e.column-1)}_getCharacterBeforePosition(e){if(e.column>1){const t=this._context.viewModel.getLineContent(e.lineNumber).charAt(e.column-2);if(!De.ZG(t.charCodeAt(0)))return t}return""}_getAriaLabel(e){var t,i,n;if(1===e.get(2)){const e=null===(t=this._keybindingService.lookupKeybinding("editor.action.toggleScreenReaderAccessibilityMode"))||void 0===t?void 0:t.getAriaLabel(),o=null===(i=this._keybindingService.lookupKeybinding("workbench.action.showCommands"))||void 0===i?void 0:i.getAriaLabel(),s=null===(n=this._keybindingService.lookupKeybinding("workbench.action.openGlobalKeybindings"))||void 0===n?void 0:n.getAriaLabel(),r=ke.NC("accessibilityModeOff","The editor is not accessible at this time.");return e?ke.NC("accessibilityOffAriaLabel","{0} To enable screen reader optimized mode, use {1}",r,e):o?ke.NC("accessibilityOffAriaLabelNoKb","{0} To enable screen reader optimized mode, open the quick pick with {1} and run the command Toggle Screen Reader Accessibility Mode, which is currently not triggerable via keyboard.",r,o):s?ke.NC("accessibilityOffAriaLabelNoKbs","{0} Please assign a keybinding for the command Toggle Screen Reader Accessibility Mode by accessing the keybindings editor with {1} and run it.",r,s):r}return e.get(4)}_setAccessibilityOptions(e){this._accessibilitySupport=e.get(2);const t=e.get(3);2===this._accessibilitySupport&&t===k.BH.accessibilityPageSize.defaultValue?this._accessibilityPageSize=500:this._accessibilityPageSize=t;const i=e.get(145).wrappingColumn;if(-1!==i&&1!==this._accessibilitySupport){const t=e.get(50);this._textAreaWrapping=!0,this._textAreaWidth=Math.round(i*t.typicalHalfwidthCharacterWidth)}else this._textAreaWrapping=!1,this._textAreaWidth=Ke?0:1}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(145);this._setAccessibilityOptions(t),this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._contentHeight=i.height,this._fontInfo=t.get(50),this._lineHeight=t.get(67),this._emptySelectionClipboard=t.get(37),this._copyWithSyntaxHighlighting=t.get(25),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off");const{tabSize:n}=this._context.viewModel.model.getOptions();return this.textArea.domNode.style.tabSize="".concat(n*this._fontInfo.spaceWidth,"px"),this.textArea.setAttribute("aria-label",this._getAriaLabel(t)),this.textArea.setAttribute("aria-required",t.get(5)?"true":"false"),this.textArea.setAttribute("tabindex",String(t.get(124))),(e.hasChanged(34)||e.hasChanged(91))&&this._ensureReadOnlyAttribute(),e.hasChanged(2)&&this._textAreaInput.writeNativeTextAreaContent("strategy changed"),!0}onCursorStateChanged(e){return this._selections=e.selections.slice(0),this._modelSelections=e.modelSelections.slice(0),this._textAreaInput.writeNativeTextAreaContent("selection changed"),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return this._scrollLeft=e.scrollLeft,this._scrollTop=e.scrollTop,!0}onZonesChanged(e){return!0}isFocused(){return this._textAreaInput.isFocused()}focusTextArea(){this._textAreaInput.focusTextArea()}getLastRenderData(){return this._lastRenderPosition}setAriaOptions(e){e.activeDescendant?(this.textArea.setAttribute("aria-haspopup","true"),this.textArea.setAttribute("aria-autocomplete","list"),this.textArea.setAttribute("aria-activedescendant",e.activeDescendant)):(this.textArea.setAttribute("aria-haspopup","false"),this.textArea.setAttribute("aria-autocomplete","both"),this.textArea.removeAttribute("aria-activedescendant")),e.role&&this.textArea.setAttribute("role",e.role)}_ensureReadOnlyAttribute(){const e=this._context.configuration.options;!Fe.F.enabled||e.get(34)&&e.get(91)?this.textArea.setAttribute("readonly","true"):this.textArea.removeAttribute("readonly")}prepareRender(e){var t;this._primaryCursorPosition=new G.L(this._selections[0].positionLineNumber,this._selections[0].positionColumn),this._primaryCursorVisibleRange=e.visibleRangeForPosition(this._primaryCursorPosition),null===(t=this._visibleTextArea)||void 0===t||t.prepareRender(e)}render(e){this._textAreaInput.writeNativeTextAreaContent("render"),this._render()}_render(){var e;if(this._visibleTextArea){const e=this._visibleTextArea.visibleTextareaStart,t=this._visibleTextArea.visibleTextareaEnd,i=this._visibleTextArea.startPosition,n=this._visibleTextArea.endPosition;if(i&&n&&e&&t&&t.left>=this._scrollLeft&&e.left<=this._scrollLeft+this._contentWidth){const o=this._context.viewLayout.getVerticalOffsetForLineNumber(this._primaryCursorPosition.lineNumber)-this._scrollTop,s=this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));let r=this._visibleTextArea.widthOfHiddenLineTextBefore,a=this._contentLeft+e.left-this._scrollLeft,l=t.left-e.left+1;if(athis._contentWidth&&(l=this._contentWidth);const h=this._context.viewModel.getViewLineData(i.lineNumber),d=h.tokens.findTokenIndexAtOffset(i.column-1),c=d===h.tokens.findTokenIndexAtOffset(n.column-1),u=this._visibleTextArea.definePresentation(c?h.tokens.getPresentation(d):null);this.textArea.domNode.scrollTop=s*this._lineHeight,this.textArea.domNode.scrollLeft=r,this._doRender({lastRenderPosition:null,top:o,left:a,width:l,height:this._lineHeight,useCover:!1,color:(Oe.RW.getColorMap()||[])[u.foreground],italic:u.italic,bold:u.bold,underline:u.underline,strikethrough:u.strikethrough})}return}if(!this._primaryCursorVisibleRange)return void this._renderAtTopLeft();const t=this._contentLeft+this._primaryCursorVisibleRange.left-this._scrollLeft;if(tthis._contentLeft+this._contentWidth)return void this._renderAtTopLeft();const i=this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber)-this._scrollTop;if(i<0||i>this._contentHeight)this._renderAtTopLeft();else if(_.dz||2===this._accessibilitySupport){this._doRender({lastRenderPosition:this._primaryCursorPosition,top:i,left:this._textAreaWrapping?this._contentLeft:t,width:this._textAreaWidth,height:this._lineHeight,useCover:!1}),this.textArea.domNode.scrollLeft=this._primaryCursorVisibleRange.left;const n=null!==(e=this._textAreaInput.textAreaState.newlineCountBeforeSelection)&&void 0!==e?e:this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));this.textArea.domNode.scrollTop=n*this._lineHeight}else this._doRender({lastRenderPosition:this._primaryCursorPosition,top:i,left:this._textAreaWrapping?this._contentLeft:t,width:this._textAreaWidth,height:Ke?0:1,useCover:!1})}_newlinecount(e){let t=0,i=-1;for(;;){if(i=e.indexOf("\n",i+1),-1===i)break;t++}return t}_renderAtTopLeft(){this._doRender({lastRenderPosition:null,top:0,left:0,width:this._textAreaWidth,height:Ke?0:1,useCover:!0})}_doRender(e){this._lastRenderPosition=e.lastRenderPosition;const t=this.textArea,i=this.textAreaCover;(0,g.N)(t,this._fontInfo),t.setTop(e.top),t.setLeft(e.left),t.setWidth(e.width),t.setHeight(e.height),t.setColor(e.color?Pe.Il.Format.CSS.formatHex(e.color):""),t.setFontStyle(e.italic?"italic":""),e.bold&&t.setFontWeight("bold"),t.setTextDecoration("".concat(e.underline?" underline":"").concat(e.strikethrough?" line-through":"")),i.setTop(e.useCover?e.top:0),i.setLeft(e.useCover?e.left:0),i.setWidth(e.useCover?e.width:0),i.setHeight(e.useCover?e.height:0);const n=this._context.configuration.options;n.get(57)?i.setClassName("monaco-editor-background textAreaCover "+Me.OUTER_CLASS_NAME):0!==n.get(68).renderType?i.setClassName("monaco-editor-background textAreaCover "+Te.CLASS_NAME):i.setClassName("monaco-editor-background textAreaCover")}};Ue=Ve([We(3,Be.d),We(4,ze.TG)],Ue);var je=i(15115),qe=i(70469);class Ge{constructor(e,t,i,n){this.configuration=e,this.viewModel=t,this.userInputEvents=i,this.commandDelegate=n}paste(e,t,i,n){this.commandDelegate.paste(e,t,i,n)}type(e){this.commandDelegate.type(e)}compositionType(e,t,i,n){this.commandDelegate.compositionType(e,t,i,n)}compositionStart(){this.commandDelegate.startComposition()}compositionEnd(){this.commandDelegate.endComposition()}cut(){this.commandDelegate.cut()}setSelection(e){qe.Ox.SetSelection.runCoreEditorCommand(this.viewModel,{source:"keyboard",selection:e})}_validateViewColumn(e){const t=this.viewModel.getLineMinColumn(e.lineNumber);return e.column=4?this._selectAll():3===e.mouseDownCount?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelectDrag(e.position,e.revealType):this._lastCursorLineSelect(e.position,e.revealType):e.inSelectionMode?this._lineSelectDrag(e.position,e.revealType):this._lineSelect(e.position,e.revealType):2===e.mouseDownCount?e.onInjectedText||(this._hasMulticursorModifier(e)?this._lastCursorWordSelect(e.position,e.revealType):e.inSelectionMode?this._wordSelectDrag(e.position,e.revealType):this._wordSelect(e.position,e.revealType)):this._hasMulticursorModifier(e)?this._hasNonMulticursorModifier(e)||(e.shiftKey?this._columnSelect(e.position,e.mouseColumn,!0):e.inSelectionMode?this._lastCursorMoveToSelect(e.position,e.revealType):this._createCursor(e.position,!1)):e.inSelectionMode?e.altKey||n?this._columnSelect(e.position,e.mouseColumn,!0):this._moveToSelect(e.position,e.revealType):this.moveTo(e.position,e.revealType)}_usualArgs(e,t){return e=this._validateViewColumn(e),{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,revealType:t}}moveTo(e,t){qe.Ox.MoveTo.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_moveToSelect(e,t){qe.Ox.MoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_columnSelect(e,t,i){e=this._validateViewColumn(e),qe.Ox.ColumnSelect.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,mouseColumn:t,doColumnSelect:i})}_createCursor(e,t){e=this._validateViewColumn(e),qe.Ox.CreateCursor.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,wholeLine:t})}_lastCursorMoveToSelect(e,t){qe.Ox.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_wordSelect(e,t){qe.Ox.WordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_wordSelectDrag(e,t){qe.Ox.WordSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorWordSelect(e,t){qe.Ox.LastCursorWordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lineSelect(e,t){qe.Ox.LineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lineSelectDrag(e,t){qe.Ox.LineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorLineSelect(e,t){qe.Ox.LastCursorLineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorLineSelectDrag(e,t){qe.Ox.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_selectAll(){qe.Ox.SelectAll.runCoreEditorCommand(this.viewModel,{source:"mouse"})}_convertViewToModelPosition(e){return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(e)}emitKeyDown(e){this.userInputEvents.emitKeyDown(e)}emitKeyUp(e){this.userInputEvents.emitKeyUp(e)}emitContextMenu(e){this.userInputEvents.emitContextMenu(e)}emitMouseMove(e){this.userInputEvents.emitMouseMove(e)}emitMouseLeave(e){this.userInputEvents.emitMouseLeave(e)}emitMouseUp(e){this.userInputEvents.emitMouseUp(e)}emitMouseDown(e){this.userInputEvents.emitMouseDown(e)}emitMouseDrag(e){this.userInputEvents.emitMouseDrag(e)}emitMouseDrop(e){this.userInputEvents.emitMouseDrop(e)}emitMouseDropCanceled(){this.userInputEvents.emitMouseDropCanceled()}emitMouseWheel(e){this.userInputEvents.emitMouseWheel(e)}}var Qe=i(52047),Ze=i(76071);class Ye{constructor(e){this._createLine=e,this._set(1,[])}flush(){this._set(1,[])}_set(e,t){this._lines=t,this._rendLineNumberStart=e}_get(){return{rendLineNumberStart:this._rendLineNumberStart,lines:this._lines}}getStartLineNumber(){return this._rendLineNumberStart}getEndLineNumber(){return this._rendLineNumberStart+this._lines.length-1}getCount(){return this._lines.length}getLine(e){const t=e-this._rendLineNumberStart;if(t<0||t>=this._lines.length)throw new h.he("Illegal value for lineNumber");return this._lines[t]}onLinesDeleted(e,t){if(0===this.getCount())return null;const i=this.getStartLineNumber(),n=this.getEndLineNumber();if(tn)return null;let o=0,s=0;for(let r=i;r<=n;r++){const i=r-this._rendLineNumberStart;e<=r&&r<=t&&(0===s?(o=i,s=1):s++)}if(e=n&&r<=o&&(this._lines[r-this._rendLineNumberStart].onContentChanged(),s=!0);return s}onLinesInserted(e,t){if(0===this.getCount())return null;const i=t-e+1,n=this.getStartLineNumber(),o=this.getEndLineNumber();if(e<=n)return this._rendLineNumberStart+=i,null;if(e>o)return null;if(i+e>o){return this._lines.splice(e-this._rendLineNumberStart,o-e+1)}const s=[];for(let d=0;di)continue;const r=Math.max(t,s.fromLineNumber),a=Math.min(i,s.toLineNumber);for(let e=r;e<=a;e++){const t=e-this._rendLineNumberStart;this._lines[t].onTokensChanged(),n=!0}}return n}}class $e{constructor(e){this._host=e,this.domNode=this._createDomNode(),this._linesCollection=new Ye((()=>this._host.createVisibleLine()))}_createDomNode(){const e=(0,z.X)(document.createElement("div"));return e.setClassName("view-layer"),e.setPosition("absolute"),e.domNode.setAttribute("role","presentation"),e.domNode.setAttribute("aria-hidden","true"),e}onConfigurationChanged(e){return!!e.hasChanged(145)}onFlushed(e){return this._linesCollection.flush(),!0}onLinesChanged(e){return this._linesCollection.onLinesChanged(e.fromLineNumber,e.count)}onLinesDeleted(e){const t=this._linesCollection.onLinesDeleted(e.fromLineNumber,e.toLineNumber);if(t)for(let i=0,n=t.length;it){const e=t,s=Math.min(i,o.rendLineNumberStart-1);e<=s&&(this._insertLinesBefore(o,e,s,n,t),o.linesLength+=s-e+1)}else if(o.rendLineNumberStart0&&(this._removeLinesBefore(o,e),o.linesLength-=e)}if(o.rendLineNumberStart=t,o.rendLineNumberStart+o.linesLength-1i){const e=Math.max(0,i-o.rendLineNumberStart+1),t=o.linesLength-1-e+1;t>0&&(this._removeLinesAfter(o,t),o.linesLength-=t)}return this._finishRendering(o,!1,n),o}_renderUntouchedLines(e,t,i,n,o){const s=e.rendLineNumberStart,r=e.lines;for(let a=t;a<=i;a++){const e=s+a;r[a].layoutLine(e,n[e-o],this.viewportData.lineHeight)}}_insertLinesBefore(e,t,i,n,o){const s=[];let r=0;for(let a=t;a<=i;a++)s[r++]=this.host.createVisibleLine();e.lines=s.concat(e.lines)}_removeLinesBefore(e,t){for(let i=0;i=0;r--){const t=e.lines[r];n[r]&&(t.setDomNode(s),s=s.previousSibling)}}_finishRenderingInvalidLines(e,t,i){const n=document.createElement("div");Je._ttPolicy&&(t=Je._ttPolicy.createHTML(t)),n.innerHTML=t;for(let o=0;oe}),Je._sb=new Ze.HT(1e5);class Xe extends K{constructor(e){super(e),this._visibleLines=new $e(this),this.domNode=this._visibleLines.domNode;const t=this._context.configuration.options.get(50);(0,g.N)(this.domNode,t),this._dynamicOverlays=[],this._isFocused=!1,this.domNode.setClassName("view-overlays")}shouldRender(){if(super.shouldRender())return!0;for(let e=0,t=this._dynamicOverlays.length;ee.shouldRender()));for(let i=0,n=t.length;i'),o.appendString(s),o.appendString(""),!0)}layoutLine(e,t,i){this._domNode&&(this._domNode.setTop(t),this._domNode.setHeight(i))}}class tt extends Xe{constructor(e){super(e);const t=this._context.configuration.options.get(145);this._contentWidth=t.contentWidth,this.domNode.setHeight(0)}onConfigurationChanged(e){const t=this._context.configuration.options.get(145);return this._contentWidth=t.contentWidth,super.onConfigurationChanged(e)||!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollWidthChanged}_viewOverlaysRender(e){super._viewOverlaysRender(e),this.domNode.setWidth(Math.max(e.scrollWidth,this._contentWidth))}}class it extends Xe{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(145);this._contentLeft=i.contentLeft,this.domNode.setClassName("margin-view-overlays"),this.domNode.setWidth(1),(0,g.N)(this.domNode,t.get(50))}onConfigurationChanged(e){const t=this._context.configuration.options;(0,g.N)(this.domNode,t.get(50));const i=t.get(145);return this._contentLeft=i.contentLeft,super.onConfigurationChanged(e)||!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollHeightChanged}_viewOverlaysRender(e){super._viewOverlaysRender(e);const t=Math.min(e.scrollHeight,1e6);this.domNode.setHeight(t),this.domNode.setWidth(this._contentLeft)}}class nt{constructor(e){this.onKeyDown=null,this.onKeyUp=null,this.onContextMenu=null,this.onMouseMove=null,this.onMouseLeave=null,this.onMouseDown=null,this.onMouseUp=null,this.onMouseDrag=null,this.onMouseDrop=null,this.onMouseDropCanceled=null,this.onMouseWheel=null,this._coordinatesConverter=e}emitKeyDown(e){var t;null===(t=this.onKeyDown)||void 0===t||t.call(this,e)}emitKeyUp(e){var t;null===(t=this.onKeyUp)||void 0===t||t.call(this,e)}emitContextMenu(e){var t;null===(t=this.onContextMenu)||void 0===t||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseMove(e){var t;null===(t=this.onMouseMove)||void 0===t||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseLeave(e){var t;null===(t=this.onMouseLeave)||void 0===t||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDown(e){var t;null===(t=this.onMouseDown)||void 0===t||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseUp(e){var t;null===(t=this.onMouseUp)||void 0===t||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDrag(e){var t;null===(t=this.onMouseDrag)||void 0===t||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDrop(e){var t;null===(t=this.onMouseDrop)||void 0===t||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDropCanceled(){var e;null===(e=this.onMouseDropCanceled)||void 0===e||e.call(this)}emitMouseWheel(e){var t;null===(t=this.onMouseWheel)||void 0===t||t.call(this,e)}_convertViewToModelMouseEvent(e){return e.target?{event:e.event,target:this._convertViewToModelMouseTarget(e.target)}:e}_convertViewToModelMouseTarget(e){return nt.convertViewToModelMouseTarget(e,this._coordinatesConverter)}static convertViewToModelMouseTarget(e,t){const i={...e};return i.position&&(i.position=t.convertViewPositionToModelPosition(i.position)),i.range&&(i.range=t.convertViewRangeToModelRange(i.range)),5!==i.type&&8!==i.type||(i.detail=this.convertViewToModelViewZoneData(i.detail,t)),i}static convertViewToModelViewZoneData(e,t){return{viewZoneId:e.viewZoneId,positionBefore:e.positionBefore?t.convertViewPositionToModelPosition(e.positionBefore):e.positionBefore,positionAfter:e.positionAfter?t.convertViewPositionToModelPosition(e.positionAfter):e.positionAfter,position:t.convertViewPositionToModelPosition(e.position),afterLineNumber:t.convertViewPositionToModelPosition(new G.L(e.afterLineNumber,1)).lineNumber}}}class ot extends K{constructor(e){super(e),this.blocks=[],this.contentWidth=-1,this.contentLeft=0,this.domNode=(0,z.X)(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.domNode.setClassName("blockDecorations-container"),this.update()}update(){let e=!1;const t=this._context.configuration.options.get(145),i=t.contentWidth-t.verticalScrollbarWidth;this.contentWidth!==i&&(this.contentWidth=i,e=!0);const n=t.contentLeft;return this.contentLeft!==n&&(this.contentLeft=n,e=!0),e}dispose(){super.dispose()}onConfigurationChanged(e){return this.update()}onScrollChanged(e){return e.scrollTopChanged||e.scrollLeftChanged}onDecorationsChanged(e){return!0}onZonesChanged(e){return!0}prepareRender(e){}render(e){var t;let i=0;const n=e.getDecorationsInViewport();for(const o of n){if(!o.options.blockClassName)continue;let n,s,r=this.blocks[i];r||(r=this.blocks[i]=(0,z.X)(document.createElement("div")),this.domNode.appendChild(r)),o.options.blockIsAfterEnd?(n=e.getVerticalOffsetAfterLineNumber(o.range.endLineNumber,!1),s=e.getVerticalOffsetAfterLineNumber(o.range.endLineNumber,!0)):(n=e.getVerticalOffsetForLineNumber(o.range.startLineNumber,!0),s=o.range.isEmpty()&&!o.options.blockDoesNotCollapse?e.getVerticalOffsetForLineNumber(o.range.startLineNumber,!1):e.getVerticalOffsetAfterLineNumber(o.range.endLineNumber,!0));const[a,l,h,d]=null!==(t=o.options.blockPadding)&&void 0!==t?t:[0,0,0,0];r.setClassName("blockDecorations-block "+o.options.blockClassName),r.setLeft(this.contentLeft-d),r.setWidth(this.contentWidth+d+l),r.setTop(n-e.scrollTop-a),r.setHeight(s-n+a+h),i++}for(let o=i;o0?this.domNode.setDisplay("block"):this.domNode.setDisplay("none"),this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1}_layoutBoxInViewport(e,t,i,n){const o=e.top,s=o,r=e.top+e.height,a=o-i,l=s>=i,h=r,d=n.viewportHeight-r>=i;let c=e.left;return c+t>n.scrollLeft+n.viewportWidth&&(c=n.scrollLeft+n.viewportWidth-t),cr){const e=l-(r-n);l-=e,i-=e}if(l=22,v=g+i<=m.height-22;return this._fixedOverflowWidgets?{fitsAbove:_,aboveTop:Math.max(u,22),fitsBelow:v,belowTop:g,left:p}:{fitsAbove:_,aboveTop:r,fitsBelow:v,belowTop:a,left:f}}_prepareRenderWidgetAtExactPositionOverflowing(e){return new lt(e.top,e.left+this._contentLeft)}_getAnchorsCoordinates(e){var t,i;return{primary:n(this._primaryAnchor.viewPosition,this._affinity,this._lineHeight),secondary:n((null===(t=this._secondaryAnchor.viewPosition)||void 0===t?void 0:t.lineNumber)===(null===(i=this._primaryAnchor.viewPosition)||void 0===i?void 0:i.lineNumber)?this._secondaryAnchor.viewPosition:null,this._affinity,this._lineHeight)};function n(t,i,n){if(!t)return null;const o=e.visibleRangeForPosition(t);if(!o)return null;const s=1===t.column&&3===i?0:o.left,r=e.getVerticalOffsetForLineNumber(t.lineNumber)-e.scrollTop;return new ht(r,s,n)}}_reduceAnchorCoordinates(e,t,i){if(!t)return e;const n=this._context.configuration.options.get(50);let o=t.left;return o=oe.endLineNumber||this.domNode.setMaxWidth(this._maxWidth))}prepareRender(e){this._renderData=this._prepareRenderWidget(e)}render(e){if(!this._renderData)return this._isVisible&&(this.domNode.removeAttribute("monaco-visible-content-widget"),this._isVisible=!1,this.domNode.setVisibility("hidden")),void("function"===typeof this._actual.afterRender&&dt(this._actual.afterRender,this._actual,null));this.allowEditorOverflow?(this.domNode.setTop(this._renderData.coordinate.top),this.domNode.setLeft(this._renderData.coordinate.left)):(this.domNode.setTop(this._renderData.coordinate.top+e.scrollTop-e.bigNumbersDelta),this.domNode.setLeft(this._renderData.coordinate.left)),this._isVisible||(this.domNode.setVisibility("inherit"),this.domNode.setAttribute("monaco-visible-content-widget","true"),this._isVisible=!0),"function"===typeof this._actual.afterRender&&dt(this._actual.afterRender,this._actual,this._renderData.position)}}class at{constructor(e,t){this.modelPosition=e,this.viewPosition=t}}class lt{constructor(e,t){this.top=e,this.left=t,this._coordinateBrand=void 0}}class ht{constructor(e,t,i){this.top=e,this.left=t,this.height=i,this._anchorCoordinateBrand=void 0}}function dt(e,t){try{for(var i=arguments.length,n=new Array(i>2?i-2:0),o=2;oe-t)),f.fS(this._cursorLineNumbers,i)||(this._cursorLineNumbers=i,e=!0);const n=this._selections.every((e=>e.isEmpty()));return this._selectionIsEmpty!==n&&(this._selectionIsEmpty=n,e=!0),e}onThemeChanged(e){return this._readFromSelections()}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(145);return this._renderLineHighlight=t.get(96),this._renderLineHighlightOnlyWhenFocus=t.get(97),this._wordWrap=i.isViewportWrapping,this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,!0}onCursorStateChanged(e){return this._selections=e.selections,this._readFromSelections()}onFlushed(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollWidthChanged||e.scrollTopChanged}onZonesChanged(e){return!0}onFocusChanged(e){return!!this._renderLineHighlightOnlyWhenFocus&&(this._focused=e.isFocused,!0)}prepareRender(e){if(!this._shouldRenderThis())return void(this._renderData=null);const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=[];for(let s=t;s<=i;s++){n[s-t]=""}if(this._wordWrap){const o=this._renderOne(e,!1);for(const e of this._cursorLineNumbers){const s=this._context.viewModel.coordinatesConverter,r=s.convertViewPositionToModelPosition(new G.L(e,1)).lineNumber,a=s.convertModelPositionToViewPosition(new G.L(r,1)).lineNumber,l=s.convertModelPositionToViewPosition(new G.L(r,this._context.viewModel.model.getLineMaxColumn(r))).lineNumber,h=Math.max(a,t),d=Math.min(l,i);for(let e=h;e<=d;e++){n[e-t]=o}}}const o=this._renderOne(e,!0);for(const s of this._cursorLineNumbers){if(si)continue;n[s-t]=o}this._renderData=n}render(e,t){if(!this._renderData)return"";const i=t-e;return i>=this._renderData.length?"":this._renderData[i]}_shouldRenderInMargin(){return("gutter"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}_shouldRenderInContent(){return("line"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&this._selectionIsEmpty&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}}class gt extends ut{_renderOne(e,t){const i="current-line"+(this._shouldRenderInMargin()?" current-line-both":"")+(t?" current-line-exact":"");return'
    ')}_shouldRenderThis(){return this._shouldRenderInContent()}_shouldRenderOther(){return this._shouldRenderInMargin()}}class mt extends ut{_renderOne(e,t){const i="current-line"+(this._shouldRenderInMargin()?" current-line-margin":"")+(this._shouldRenderOther()?" current-line-margin-both":"")+(this._shouldRenderInMargin()&&t?" current-line-exact-margin":"");return'
    ')}_shouldRenderThis(){return!0}_shouldRenderOther(){return this._shouldRenderInContent()}}(0,Ee.Ic)(((e,t)=>{const i=e.getColor(Ie.Kh);if(i&&(t.addRule(".monaco-editor .view-overlays .current-line { background-color: ".concat(i,"; }")),t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { background-color: ".concat(i,"; border: none; }"))),!i||i.isTransparent()||e.defines(Ie.Mm)){const i=e.getColor(Ie.Mm);i&&(t.addRule(".monaco-editor .view-overlays .current-line-exact { border: 2px solid ".concat(i,"; }")),t.addRule(".monaco-editor .margin-view-overlays .current-line-exact-margin { border: 2px solid ".concat(i,"; }")),(0,ct.c3)(e.type)&&(t.addRule(".monaco-editor .view-overlays .current-line-exact { border-width: 1px; }"),t.addRule(".monaco-editor .margin-view-overlays .current-line-exact-margin { border-width: 1px; }")))}}));class ft extends xe{constructor(e){super(),this._context=e;const t=this._context.configuration.options;this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged||e.scrollWidthChanged}onZonesChanged(e){return!0}prepareRender(e){const t=e.getDecorationsInViewport();let i=[],n=0;for(let a=0,l=t.length;a{if(e.options.zIndext.options.zIndex)return 1;const i=e.options.className,n=t.options.className;return in?1:Q.e.compareRangesUsingStarts(e.range,t.range)}));const o=e.visibleRange.startLineNumber,s=e.visibleRange.endLineNumber,r=[];for(let a=o;a<=s;a++){r[a-o]=""}this._renderWholeLineDecorations(e,i,r),this._renderNormalDecorations(e,i,r),this._renderResult=r}_renderWholeLineDecorations(e,t,i){const n=e.visibleRange.startLineNumber,o=e.visibleRange.endLineNumber;for(let s=0,r=t.length;s',a=Math.max(e.range.startLineNumber,n),l=Math.min(e.range.endLineNumber,o);for(let t=a;t<=l;t++){i[t-n]+=r}}}_renderNormalDecorations(e,t,i){var n;const o=e.visibleRange.startLineNumber;let s=null,r=!1,a=null,l=!1;for(let h=0,d=t.length;h';r[t]+=h}}}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}class pt extends K{constructor(e,t,i,n){super(e);const o=this._context.configuration.options,s=o.get(103),r=o.get(75),a=o.get(40),h=o.get(106),d={listenOnDomNode:i.domNode,className:"editor-scrollable "+(0,Ee.m6)(e.theme.type),useShadows:!1,lazyRender:!0,vertical:s.vertical,horizontal:s.horizontal,verticalHasArrows:s.verticalHasArrows,horizontalHasArrows:s.horizontalHasArrows,verticalScrollbarSize:s.verticalScrollbarSize,verticalSliderSize:s.verticalSliderSize,horizontalScrollbarSize:s.horizontalScrollbarSize,horizontalSliderSize:s.horizontalSliderSize,handleMouseWheel:s.handleMouseWheel,alwaysConsumeMouseWheel:s.alwaysConsumeMouseWheel,arrowSize:s.arrowSize,mouseWheelScrollSensitivity:r,fastScrollSensitivity:a,scrollPredominantAxis:h,scrollByPage:s.scrollByPage};this.scrollbar=this._register(new fe.$Z(t.domNode,d,this._context.viewLayout.getScrollable())),U.write(this.scrollbar.getDomNode(),6),this.scrollbarDomNode=(0,z.X)(this.scrollbar.getDomNode()),this.scrollbarDomNode.setPosition("absolute"),this._setLayout();const c=(e,t,i)=>{const n={};if(t){const t=e.scrollTop;t&&(n.scrollTop=this._context.viewLayout.getCurrentScrollTop()+t,e.scrollTop=0)}if(i){const t=e.scrollLeft;t&&(n.scrollLeft=this._context.viewLayout.getCurrentScrollLeft()+t,e.scrollLeft=0)}this._context.viewModel.viewLayout.setScrollPosition(n,1)};this._register(l.nm(i.domNode,"scroll",(e=>c(i.domNode,!0,!0)))),this._register(l.nm(t.domNode,"scroll",(e=>c(t.domNode,!0,!1)))),this._register(l.nm(n.domNode,"scroll",(e=>c(n.domNode,!0,!1)))),this._register(l.nm(this.scrollbarDomNode.domNode,"scroll",(e=>c(this.scrollbarDomNode.domNode,!0,!1))))}dispose(){super.dispose()}_setLayout(){const e=this._context.configuration.options,t=e.get(145);this.scrollbarDomNode.setLeft(t.contentLeft);"right"===e.get(73).side?this.scrollbarDomNode.setWidth(t.contentWidth+t.minimap.minimapWidth):this.scrollbarDomNode.setWidth(t.contentWidth),this.scrollbarDomNode.setHeight(t.height)}getOverviewRulerLayoutInfo(){return this.scrollbar.getOverviewRulerLayoutInfo()}getDomNode(){return this.scrollbarDomNode}delegateVerticalScrollbarPointerDown(e){this.scrollbar.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){this.scrollbar.delegateScrollFromMouseWheelEvent(e)}onConfigurationChanged(e){if(e.hasChanged(103)||e.hasChanged(75)||e.hasChanged(40)){const e=this._context.configuration.options,t=e.get(103),i=e.get(75),n=e.get(40),o=e.get(106),s={vertical:t.vertical,horizontal:t.horizontal,verticalScrollbarSize:t.verticalScrollbarSize,horizontalScrollbarSize:t.horizontalScrollbarSize,scrollByPage:t.scrollByPage,handleMouseWheel:t.handleMouseWheel,mouseWheelScrollSensitivity:i,fastScrollSensitivity:n,scrollPredominantAxis:o};this.scrollbar.updateOptions(s)}return e.hasChanged(145)&&this._setLayout(),!0}onScrollChanged(e){return!0}onThemeChanged(e){return this.scrollbar.updateClassName("editor-scrollable "+(0,Ee.m6)(this._context.theme.type)),!0}prepareRender(e){}render(e){this.scrollbar.renderNow()}}var _t=i(27127);class vt{constructor(e,t,i,n,o){this.startLineNumber=e,this.endLineNumber=t,this.className=i,this.tooltip=n,this._decorationToRenderBrand=void 0,this.zIndex=null!==o&&void 0!==o?o:0}}class bt{constructor(e,t,i){this.className=e,this.zIndex=t,this.tooltip=i}}class Ct{constructor(){this.decorations=[]}add(e){this.decorations.push(e)}getDecorations(){return this.decorations}}class wt extends xe{_render(e,t,i){const n=[];for(let r=e;r<=t;r++){n[r-e]=new Ct}if(0===i.length)return n;i.sort(((e,t)=>e.className===t.className?e.startLineNumber===t.startLineNumber?e.endLineNumber-t.endLineNumber:e.startLineNumber-t.startLineNumber:e.classNamen)continue;const a=Math.max(s,i),l=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new G.L(a,0)),h=this._context.viewModel.glyphLanes.getLanesAtLine(l.lineNumber).indexOf(o.preference.lane);t.push(new Lt(a,h,o.preference.zIndex,o))}}_collectSortedGlyphRenderRequests(e){const t=[];return this._collectDecorationBasedGlyphRenderRequest(e,t),this._collectWidgetBasedGlyphRenderRequest(e,t),t.sort(((e,t)=>e.lineNumber===t.lineNumber?e.laneIndex===t.laneIndex?e.zIndex===t.zIndex?t.type===e.type?0===e.type&&0===t.type?e.className0;){const e=t.peek();if(!e)break;const n=t.takeWhile((t=>t.lineNumber===e.lineNumber&&t.laneIndex===e.laneIndex));if(!n||0===n.length)break;const o=n[0];if(0===o.type){const e=[];for(const t of n){if(t.zIndex!==o.zIndex||t.type!==o.type)break;0!==e.length&&e[e.length-1]===t.className||e.push(t.className)}i.push(o.accept(e.join(" ")))}else o.widget.renderInfo={lineNumber:o.lineNumber,laneIndex:o.laneIndex}}this._decorationGlyphsToRender=i}render(e){if(!this._glyphMargin){for(const e of Object.values(this._widgets))e.domNode.setDisplay("none");for(;this._managedDomNodes.length>0;){const e=this._managedDomNodes.pop();null===e||void 0===e||e.domNode.remove()}return}const t=Math.round(this._glyphMarginWidth/this._glyphMarginDecorationLaneCount);for(const i of Object.values(this._widgets))if(i.renderInfo){const n=e.viewportData.relativeVerticalOffset[i.renderInfo.lineNumber-e.viewportData.startLineNumber],o=this._glyphMarginLeft+i.renderInfo.laneIndex*this._lineHeight;i.domNode.setDisplay("block"),i.domNode.setTop(n),i.domNode.setLeft(o),i.domNode.setWidth(t),i.domNode.setHeight(this._lineHeight)}else i.domNode.setDisplay("none");for(let i=0;ithis._decorationGlyphsToRender.length;){const e=this._managedDomNodes.pop();null===e||void 0===e||e.domNode.remove()}}}class St{constructor(e,t,i,n){this.lineNumber=e,this.laneIndex=t,this.zIndex=i,this.className=n,this.type=0}accept(e){return new kt(this.lineNumber,this.laneIndex,e)}}class Lt{constructor(e,t,i,n){this.lineNumber=e,this.laneIndex=t,this.zIndex=i,this.widget=n,this.type=1}}class kt{constructor(e,t,i){this.lineNumber=e,this.laneIndex=t,this.combinedClassName=i}}var Dt=i(63686),Nt=i(8236),xt=i(6192);class Et extends xe{constructor(e){super(),this._context=e,this._primaryPosition=null;const t=this._context.configuration.options,i=t.get(146),n=t.get(50);this._spaceWidth=n.spaceWidth,this._maxIndentLeft=-1===i.wrappingColumn?-1:i.wrappingColumn*n.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(16),this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(146),n=t.get(50);return this._spaceWidth=n.spaceWidth,this._maxIndentLeft=-1===i.wrappingColumn?-1:i.wrappingColumn*n.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(16),!0}onCursorStateChanged(e){var t;const i=e.selections[0].getPosition();return!(null===(t=this._primaryPosition)||void 0===t?void 0:t.equals(i))&&(this._primaryPosition=i,!0)}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}onLanguageConfigurationChanged(e){return!0}prepareRender(e){var t,i,n,o;if(!this._bracketPairGuideOptions.indentation&&!1===this._bracketPairGuideOptions.bracketPairs)return void(this._renderResult=null);const s=e.visibleRange.startLineNumber,r=e.visibleRange.endLineNumber,a=e.scrollWidth,l=this._primaryPosition,h=this.getGuidesByLine(s,Math.min(r+1,this._context.viewModel.getLineCount()),l),d=[];for(let c=s;c<=r;c++){const r=c-s,l=h[r];let u="";const g=null!==(i=null===(t=e.visibleRangeForPosition(new G.L(c,1)))||void 0===t?void 0:t.left)&&void 0!==i?i:0;for(const t of l){const i=-1===t.column?g+(t.visibleColumn-1)*this._spaceWidth:e.visibleRangeForPosition(new G.L(c,t.column)).left;if(i>a||this._maxIndentLeft>0&&i>this._maxIndentLeft)break;const s=t.horizontalLine?t.horizontalLine.top?"horizontal-top":"horizontal-bottom":"vertical",r=t.horizontalLine?(null!==(o=null===(n=e.visibleRangeForPosition(new G.L(c,t.horizontalLine.endColumn)))||void 0===n?void 0:n.left)&&void 0!==o?o:i+this._spaceWidth)-i:this._spaceWidth;u+='
    ')}d[r]=u}this._renderResult=d}getGuidesByLine(e,t,i){const n=!1!==this._bracketPairGuideOptions.bracketPairs?this._context.viewModel.getBracketGuidesInRangeByLine(e,t,i,{highlightActive:this._bracketPairGuideOptions.highlightActiveBracketPair,horizontalGuides:!0===this._bracketPairGuideOptions.bracketPairsHorizontal?xt.s6.Enabled:"active"===this._bracketPairGuideOptions.bracketPairsHorizontal?xt.s6.EnabledForActive:xt.s6.Disabled,includeInactive:!0===this._bracketPairGuideOptions.bracketPairs}):null,o=this._bracketPairGuideOptions.indentation?this._context.viewModel.getLinesIndentGuides(e,t):null;let s=0,r=0,a=0;if(!1!==this._bracketPairGuideOptions.highlightActiveIndentation&&i){const n=this._context.viewModel.getActiveIndentGuide(i.lineNumber,e,t);s=n.startLineNumber,r=n.endLineNumber,a=n.indent}const{indentSize:l}=this._context.viewModel.model.getOptions(),h=[];for(let d=e;d<=t;d++){const t=new Array;h.push(t);const i=n?n[d-e]:[],c=new f.H9(i),u=o?o[d-e]:0;for(let e=1;e<=u;e++){const n=(e-1)*l+1,o=("always"===this._bracketPairGuideOptions.highlightActiveIndentation||0===i.length)&&s<=d&&d<=r&&e===a;t.push(...c.takeWhile((e=>e.visibleColumn!0))||[])}return h}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}function It(e){if(!e||!e.isTransparent())return e}(0,Ee.Ic)(((e,t)=>{const i=[{bracketColor:Ie.zJ,guideColor:Ie.oV,guideColorActive:Ie.Qb},{bracketColor:Ie.Vs,guideColor:Ie.m$,guideColorActive:Ie.m3},{bracketColor:Ie.CE,guideColor:Ie.DS,guideColorActive:Ie.To},{bracketColor:Ie.UP,guideColor:Ie.lS,guideColorActive:Ie.L7},{bracketColor:Ie.r0,guideColor:Ie.Jn,guideColorActive:Ie.HV},{bracketColor:Ie.m1,guideColor:Ie.YF,guideColorActive:Ie.f9}],n=new Nt.W,o=[{indentColor:Ie.gS,indentColorActive:Ie.qe},{indentColor:Ie.Tf,indentColorActive:Ie.Xy},{indentColor:Ie.H_,indentColorActive:Ie.cK},{indentColor:Ie.h1,indentColorActive:Ie.N8},{indentColor:Ie.vP,indentColorActive:Ie.zd},{indentColor:Ie.e9,indentColorActive:Ie.ll}],s=i.map((t=>{var i,n;const o=e.getColor(t.bracketColor),s=e.getColor(t.guideColor),r=e.getColor(t.guideColorActive),a=It(null!==(i=It(s))&&void 0!==i?i:null===o||void 0===o?void 0:o.transparent(.3)),l=It(null!==(n=It(r))&&void 0!==n?n:o);if(a&&l)return{guideColor:a,guideColorActive:l}})).filter(Dt.$K),r=o.map((t=>{const i=e.getColor(t.indentColor),n=e.getColor(t.indentColorActive),o=It(i),s=It(n);if(o&&s)return{indentColor:o,indentColorActive:s}})).filter(Dt.$K);if(s.length>0){for(let e=0;e<30;e++){const i=s[e%s.length];t.addRule(".monaco-editor .".concat(n.getInlineClassNameOfLevel(e).replace(/ /g,".")," { --guide-color: ").concat(i.guideColor,"; --guide-color-active: ").concat(i.guideColorActive,"; }"))}t.addRule(".monaco-editor .vertical { box-shadow: 1px 0 0 0 var(--guide-color) inset; }"),t.addRule(".monaco-editor .horizontal-top { border-top: 1px solid var(--guide-color); }"),t.addRule(".monaco-editor .horizontal-bottom { border-bottom: 1px solid var(--guide-color); }"),t.addRule(".monaco-editor .vertical.".concat(n.activeClassName," { box-shadow: 1px 0 0 0 var(--guide-color-active) inset; }")),t.addRule(".monaco-editor .horizontal-top.".concat(n.activeClassName," { border-top: 1px solid var(--guide-color-active); }")),t.addRule(".monaco-editor .horizontal-bottom.".concat(n.activeClassName," { border-bottom: 1px solid var(--guide-color-active); }"))}if(r.length>0){for(let e=0;e<30;e++){const i=r[e%r.length];t.addRule(".monaco-editor .lines-content .core-guide-indent.lvl-".concat(e," { --indent-color: ").concat(i.indentColor,"; --indent-color-active: ").concat(i.indentColorActive,"; }"))}t.addRule(".monaco-editor .lines-content .core-guide-indent { box-shadow: 1px 0 0 0 var(--indent-color) inset; }"),t.addRule(".monaco-editor .lines-content .core-guide-indent.indent-active { box-shadow: 1px 0 0 0 var(--indent-color-active) inset; }")}}));var Tt=i(60282);class Mt{get didDomLayout(){return this._didDomLayout}readClientRect(){if(!this._clientRectRead){this._clientRectRead=!0;const e=this._domNode.getBoundingClientRect();this.markDidDomLayout(),this._clientRectDeltaLeft=e.left,this._clientRectScale=e.width/this._domNode.offsetWidth}}get clientRectDeltaLeft(){return this._clientRectRead||this.readClientRect(),this._clientRectDeltaLeft}get clientRectScale(){return this._clientRectRead||this.readClientRect(),this._clientRectScale}constructor(e,t){this._domNode=e,this.endNode=t,this._didDomLayout=!1,this._clientRectDeltaLeft=0,this._clientRectScale=1,this._clientRectRead=!1}markDidDomLayout(){this._didDomLayout=!0}}class At{constructor(){this._currentVisibleRange=new Q.e(1,1,1,1)}getCurrentVisibleRange(){return this._currentVisibleRange}setCurrentVisibleRange(e){this._currentVisibleRange=e}}class Rt{constructor(e,t,i,n,o,s,r){this.minimalReveal=e,this.lineNumber=t,this.startColumn=i,this.endColumn=n,this.startScrollTop=o,this.stopScrollTop=s,this.scrollType=r,this.type="range",this.minLineNumber=t,this.maxLineNumber=t}}class Ot{constructor(e,t,i,n,o){this.minimalReveal=e,this.selections=t,this.startScrollTop=i,this.stopScrollTop=n,this.scrollType=o,this.type="selections";let s=t[0].startLineNumber,r=t[0].endLineNumber;for(let a=1,l=t.length;a{this._updateLineWidthsSlow()}),200),this._asyncCheckMonospaceFontAssumptions=new Tt.pY((()=>{this._checkMonospaceFontAssumptions()}),2e3),this._lastRenderedData=new At,this._horizontalRevealRequest=null,this._stickyScrollEnabled=n.get(115).enabled,this._maxNumberStickyLines=n.get(115).maxLineCount}dispose(){this._asyncUpdateLineWidths.dispose(),this._asyncCheckMonospaceFontAssumptions.dispose(),super.dispose()}getDomNode(){return this.domNode}createVisibleLine(){return new q.Nt(this._viewLineOptions)}onConfigurationChanged(e){this._visibleLines.onConfigurationChanged(e),e.hasChanged(146)&&(this._maxLineWidth=0);const t=this._context.configuration.options,i=t.get(50),n=t.get(146);return this._lineHeight=t.get(67),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._isViewportWrapping=n.isViewportWrapping,this._revealHorizontalRightPadding=t.get(100),this._cursorSurroundingLines=t.get(29),this._cursorSurroundingLinesStyle=t.get(30),this._canUseLayerHinting=!t.get(32),this._stickyScrollEnabled=t.get(115).enabled,this._maxNumberStickyLines=t.get(115).maxLineCount,(0,g.N)(this.domNode,i),this._onOptionsMaybeChanged(),e.hasChanged(145)&&(this._maxLineWidth=0),!0}_onOptionsMaybeChanged(){const e=this._context.configuration,t=new q.ob(e,this._context.theme.type);if(!this._viewLineOptions.equals(t)){this._viewLineOptions=t;const e=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();for(let t=e;t<=i;t++){this._visibleLines.getVisibleLine(t).onOptionsChanged(this._viewLineOptions)}return!0}return!1}onCursorStateChanged(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();let n=!1;for(let o=t;o<=i;o++)n=this._visibleLines.getVisibleLine(o).onSelectionChanged()||n;return n}onDecorationsChanged(e){{const e=this._visibleLines.getStartLineNumber(),t=this._visibleLines.getEndLineNumber();for(let i=e;i<=t;i++)this._visibleLines.getVisibleLine(i).onDecorationsChanged()}return!0}onFlushed(e){const t=this._visibleLines.onFlushed(e);return this._maxLineWidth=0,t}onLinesChanged(e){return this._visibleLines.onLinesChanged(e)}onLinesDeleted(e){return this._visibleLines.onLinesDeleted(e)}onLinesInserted(e){return this._visibleLines.onLinesInserted(e)}onRevealRangeRequest(e){const t=this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(),e.source,e.minimalReveal,e.range,e.selections,e.verticalType);if(-1===t)return!1;let i=this._context.viewLayout.validateScrollPosition({scrollTop:t});e.revealHorizontal?e.range&&e.range.startLineNumber!==e.range.endLineNumber?i={scrollTop:i.scrollTop,scrollLeft:0}:e.range?this._horizontalRevealRequest=new Rt(e.minimalReveal,e.range.startLineNumber,e.range.startColumn,e.range.endColumn,this._context.viewLayout.getCurrentScrollTop(),i.scrollTop,e.scrollType):e.selections&&e.selections.length>0&&(this._horizontalRevealRequest=new Ot(e.minimalReveal,e.selections,this._context.viewLayout.getCurrentScrollTop(),i.scrollTop,e.scrollType)):this._horizontalRevealRequest=null;const n=Math.abs(this._context.viewLayout.getCurrentScrollTop()-i.scrollTop)<=this._lineHeight?1:e.scrollType;return this._context.viewModel.viewLayout.setScrollPosition(i,n),!0}onScrollChanged(e){if(this._horizontalRevealRequest&&e.scrollLeftChanged&&(this._horizontalRevealRequest=null),this._horizontalRevealRequest&&e.scrollTopChanged){const t=Math.min(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop),i=Math.max(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop);(e.scrollTopi)&&(this._horizontalRevealRequest=null)}return this.domNode.setWidth(e.scrollWidth),this._visibleLines.onScrollChanged(e)||!0}onTokensChanged(e){return this._visibleLines.onTokensChanged(e)}onZonesChanged(e){return this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth),this._visibleLines.onZonesChanged(e)}onThemeChanged(e){return this._onOptionsMaybeChanged()}getPositionFromDOMInfo(e,t){const i=this._getViewLineDomNode(e);if(null===i)return null;const n=this._getLineNumberFor(i);if(-1===n)return null;if(n<1||n>this._context.viewModel.getLineCount())return null;if(1===this._context.viewModel.getLineMaxColumn(n))return new G.L(n,1);const o=this._visibleLines.getStartLineNumber(),s=this._visibleLines.getEndLineNumber();if(ns)return null;let r=this._visibleLines.getVisibleLine(n).getColumnOfNodeOffset(e,t);const a=this._context.viewModel.getLineMinColumn(n);return ri)return-1;const n=new Mt(this.domNode.domNode,this._textRangeRestingSpot),o=this._visibleLines.getVisibleLine(e).getWidth(n);return this._updateLineWidthsSlowIfDomDidLayout(n),o}linesVisibleRangesForRange(e,t){if(this.shouldRender())return null;const i=e.endLineNumber,n=Q.e.intersectRanges(e,this._lastRenderedData.getCurrentVisibleRange());if(!n)return null;const o=[];let s=0;const r=new Mt(this.domNode.domNode,this._textRangeRestingSpot);let a=0;t&&(a=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new G.L(n.startLineNumber,1)).lineNumber);const l=this._visibleLines.getStartLineNumber(),h=this._visibleLines.getEndLineNumber();for(let d=n.startLineNumber;d<=n.endLineNumber;d++){if(dh)continue;const e=d===n.startLineNumber?n.startColumn:1,c=d!==n.endLineNumber,u=c?this._context.viewModel.getLineMaxColumn(d):n.endColumn,g=this._visibleLines.getVisibleLine(d).getVisibleRangesForRange(d,e,u,r);if(g){if(t&&dthis._visibleLines.getEndLineNumber())return null;const n=new Mt(this.domNode.domNode,this._textRangeRestingSpot),o=this._visibleLines.getVisibleLine(e).getVisibleRangesForRange(e,t,i,n);return this._updateLineWidthsSlowIfDomDidLayout(n),o}visibleRangeForPosition(e){const t=this._visibleRangesForLineRange(e.lineNumber,e.column,e.column);return t?new je.D4(t.outsideRenderedLine,t.ranges[0].left):null}_updateLineWidthsFast(){return this._updateLineWidths(!0)}_updateLineWidthsSlow(){this._updateLineWidths(!1)}_updateLineWidthsSlowIfDomDidLayout(e){e.didDomLayout&&(this._asyncUpdateLineWidths.isScheduled()||(this._asyncUpdateLineWidths.cancel(),this._updateLineWidthsSlow()))}_updateLineWidths(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();let n=1,o=!0;for(let s=t;s<=i;s++){const t=this._visibleLines.getVisibleLine(s);!e||t.getWidthIsFast()?n=Math.max(n,t.getWidth(null)):o=!1}return o&&1===t&&i===this._context.viewModel.getLineCount()&&(this._maxLineWidth=0),this._ensureMaxLineWidth(n),o}_checkMonospaceFontAssumptions(){let e=-1,t=-1;const i=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber();for(let o=i;o<=n;o++){const i=this._visibleLines.getVisibleLine(o);if(i.needsMonospaceFontCheck()){const n=i.getWidth(null);n>t&&(t=n,e=o)}}if(-1!==e&&!this._visibleLines.getVisibleLine(e).monospaceAssumptionsAreValid())for(let o=i;o<=n;o++){this._visibleLines.getVisibleLine(o).onMonospaceAssumptionsInvalidated()}}prepareRender(){throw new Error("Not supported")}render(){throw new Error("Not supported")}renderText(e){if(this._visibleLines.renderLines(e),this._lastRenderedData.setCurrentVisibleRange(e.visibleRange),this.domNode.setWidth(this._context.viewLayout.getScrollWidth()),this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(),1e6)),this._horizontalRevealRequest){const t=this._horizontalRevealRequest;if(e.startLineNumber<=t.minLineNumber&&t.maxLineNumber<=e.endLineNumber){this._horizontalRevealRequest=null,this.onDidRender();const e=this._computeScrollLeftToReveal(t);e&&(this._isViewportWrapping||this._ensureMaxLineWidth(e.maxHorizontalOffset),this._context.viewModel.viewLayout.setScrollPosition({scrollLeft:e.scrollLeft},t.scrollType))}}if(this._updateLineWidthsFast()?this._asyncUpdateLineWidths.cancel():this._asyncUpdateLineWidths.schedule(),_.IJ&&!this._asyncCheckMonospaceFontAssumptions.isScheduled()){const e=this._visibleLines.getStartLineNumber(),t=this._visibleLines.getEndLineNumber();for(let i=e;i<=t;i++){if(this._visibleLines.getVisibleLine(i).needsMonospaceFontCheck()){this._asyncCheckMonospaceFontAssumptions.schedule();break}}}this._linesContent.setLayerHinting(this._canUseLayerHinting),this._linesContent.setContain("strict");const t=this._context.viewLayout.getCurrentScrollTop()-e.bigNumbersDelta;this._linesContent.setTop(-t),this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft())}_ensureMaxLineWidth(e){const t=Math.ceil(e);this._maxLineWidth0){let e=o[0].startLineNumber,t=o[0].endLineNumber;for(let i=1,n=o.length;ia){if(!h)return-1;u=d}else if(5===s||6===s)if(6===s&&r<=d&&c<=l)u=r;else{const e=d-Math.max(5*this._lineHeight,.2*a),t=c-a;u=Math.max(t,e)}else if(1===s||2===s)if(2===s&&r<=d&&c<=l)u=r;else{const e=(d+c)/2;u=Math.max(0,e-a/2)}else u=this._computeMinimumScrolling(r,l,d,c,3===s,4===s);return u}_computeScrollLeftToReveal(e){const t=this._context.viewLayout.getCurrentViewport(),i=this._context.configuration.options.get(145),n=t.left,o=n+t.width-i.verticalScrollbarWidth;let s=1073741824,r=0;if("range"===e.type){const t=this._visibleRangesForLineRange(e.lineNumber,e.startColumn,e.endColumn);if(!t)return null;for(const e of t.ranges)s=Math.min(s,Math.round(e.left)),r=Math.max(r,Math.round(e.left+e.width))}else for(const a of e.selections){if(a.startLineNumber!==a.endLineNumber)return null;const e=this._visibleRangesForLineRange(a.startLineNumber,a.startColumn,a.endColumn);if(!e)return null;for(const t of e.ranges)s=Math.min(s,Math.round(t.left)),r=Math.max(r,Math.round(t.left+t.width))}if(e.minimalReveal||(s=Math.max(0,s-Pt.HORIZONTAL_EXTRA_PX),r+=this._revealHorizontalRightPadding),"selections"===e.type&&r-s>t.width)return null;return{scrollLeft:this._computeMinimumScrolling(n,o,s,r),maxHorizontalOffset:r}}_computeMinimumScrolling(e,t,i,n,o,s){o=!!o,s=!!s;const r=(t|=0)-(e|=0);return(n|=0)-(i|=0)t?Math.max(0,n-r):e:i}}Pt.HORIZONTAL_EXTRA_PX=30;class Ft extends wt{constructor(e){super(),this._context=e;const t=this._context.configuration.options.get(145);this._decorationsLeft=t.decorationsLeft,this._decorationsWidth=t.decorationsWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options.get(145);return this._decorationsLeft=t.decorationsLeft,this._decorationsWidth=t.decorationsWidth,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getDecorations(e){var t,i;const n=e.getDecorationsInViewport(),o=[];let s=0;for(let r=0,a=n.length;r',s=[];for(let r=t;r<=i;r++){const e=r-t,i=n[e].getDecorations();let a="";for(const t of i){let e='
    ';o[e]=r}this._renderResult=o}render(e,t){return this._renderResult?this._renderResult[t-e]:""}}var zt=i(13505);class Vt{constructor(e,t,i,n){this._rgba8Brand=void 0,this.r=Vt._clamp(e),this.g=Vt._clamp(t),this.b=Vt._clamp(i),this.a=Vt._clamp(n)}equals(e){return this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}static _clamp(e){return e<0?0:e>255?255:0|e}}Vt.Empty=new Vt(0,0,0,0);class Wt extends c.JT{static getInstance(){return this._INSTANCE||(this._INSTANCE=(0,c.dk)(new Wt)),this._INSTANCE}constructor(){super(),this._onDidChange=new d.Q5,this.onDidChange=this._onDidChange.event,this._updateColorMap(),this._register(Oe.RW.onDidChange((e=>{e.changedColorMap&&this._updateColorMap()})))}_updateColorMap(){const e=Oe.RW.getColorMap();if(!e)return this._colors=[Vt.Empty],void(this._backgroundIsLight=!0);this._colors=[Vt.Empty];for(let i=1;i=.5,this._onDidChange.fire(void 0)}getColor(e){return(e<1||e>=this._colors.length)&&(e=2),this._colors[e]}backgroundIsLight(){return this._backgroundIsLight}}Wt._INSTANCE=null;var Ht=i(33072),Kt=i(87701);const Ut=(()=>{const e=[];for(let t=32;t<=126;t++)e.push(t);return e.push(65533),e})();var jt=i(44918);class qt{constructor(e,t){this.scale=t,this._minimapCharRendererBrand=void 0,this.charDataNormal=qt.soften(e,.8),this.charDataLight=qt.soften(e,50/60)}static soften(e,t){const i=new Uint8ClampedArray(e.length);for(let n=0,o=e.length;ne.width||i+g>e.height)return void console.warn("bad render request outside image data");const m=h?this.charDataLight:this.charDataNormal,f=((e,t)=>(e-=32)<0||e>96?t<=2?(e+96)%96:95:e)(n,l),p=4*e.width,_=r.r,v=r.g,b=r.b,C=o.r-_,w=o.g-v,y=o.b-b,S=Math.max(s,a),L=e.data;let k=f*c*u,D=i*p+4*t;for(let N=0;Ne.width||i+d>e.height)return void console.warn("bad render request outside image data");const c=4*e.width,u=o/255*.5,g=s.r,m=s.g,f=s.b,p=g+(n.r-g)*u,_=m+(n.g-m)*u,v=f+(n.b-f)*u,b=Math.max(o,r),C=e.data;let w=i*c+4*t;for(let y=0;y{const t=new Uint8ClampedArray(e.length/2);for(let i=0;i>1]=Qt[e[i]]<<4|15&Qt[e[i+1]];return t},Yt={1:(0,Gt.M)((()=>Zt("0000511D6300CF609C709645A78432005642574171487021003C451900274D35D762755E8B629C5BA856AF57BA649530C167D1512A272A3F6038604460398526BCA2A968DB6F8957C768BE5FBE2FB467CF5D8D5B795DC7625B5DFF50DE64C466DB2FC47CD860A65E9A2EB96CB54CE06DA763AB2EA26860524D3763536601005116008177A8705E53AB738E6A982F88BAA35B5F5B626D9C636B449B737E5B7B678598869A662F6B5B8542706C704C80736A607578685B70594A49715A4522E792"))),2:(0,Gt.M)((()=>Zt("000000000000000055394F383D2800008B8B1F210002000081B1CBCBCC820000847AAF6B9AAF2119BE08B8881AD60000A44FD07DCCF107015338130C00000000385972265F390B406E2437634B4B48031B12B8A0847000001E15B29A402F0000000000004B33460B00007A752C2A0000000000004D3900000084394B82013400ABA5CFC7AD9C0302A45A3E5A98AB000089A43382D97900008BA54AA087A70A0248A6A7AE6DBE0000BF6F94987EA40A01A06DCFA7A7A9030496C32F77891D0000A99FB1A0AFA80603B29AB9CA75930D010C0948354D3900000C0948354F37460D0028BE673D8400000000AF9D7B6E00002B007AA8933400007AA642675C2700007984CFB9C3985B768772A8A6B7B20000CAAECAAFC4B700009F94A6009F840009D09F9BA4CA9C0000CC8FC76DC87F0000C991C472A2000000A894A48CA7B501079BA2C9C69BA20000B19A5D3FA89000005CA6009DA2960901B0A7F0669FB200009D009E00B7890000DAD0F5D092820000D294D4C48BD10000B5A7A4A3B1A50402CAB6CBA6A2000000B5A7A4A3B1A8044FCDADD19D9CB00000B7778F7B8AAE0803C9AB5D3F5D3F00009EA09EA0BAB006039EA0989A8C7900009B9EF4D6B7C00000A9A7816CACA80000ABAC84705D3F000096DA635CDC8C00006F486F266F263D4784006124097B00374F6D2D6D2D6D4A3A95872322000000030000000000008D8939130000000000002E22A5C9CBC70600AB25C0B5C9B400061A2DB04CA67001082AA6BEBEBFC606002321DACBC19E03087AA08B6768380000282FBAC0B8CA7A88AD25BBA5A29900004C396C5894A6000040485A6E356E9442A32CD17EADA70000B4237923628600003E2DE9C1D7B500002F25BBA5A2990000231DB6AFB4A804023025C0B5CAB588062B2CBDBEC0C706882435A75CA20000002326BD6A82A908048B4B9A5A668000002423A09CB4BB060025259C9D8A7900001C1FCAB2C7C700002A2A9387ABA200002626A4A47D6E9D14333163A0C87500004B6F9C2D643A257049364936493647358A34438355497F1A0000A24C1D590000D38DFFBDD4CD3126")))};class $t{static create(e,t){if(this.lastCreated&&e===this.lastCreated.scale&&t===this.lastFontFamily)return this.lastCreated;let i;return i=Yt[e]?new qt(Yt[e](),e):$t.createFromSampleData($t.createSampleData(t).data,e),this.lastFontFamily=t,this.lastCreated=i,i}static createSampleData(e){const t=document.createElement("canvas"),i=t.getContext("2d");t.style.height="".concat(16,"px"),t.height=16,t.width=960,t.style.width="960px",i.fillStyle="#ffffff",i.font="bold ".concat(16,"px ",e),i.textBaseline="middle";let n=0;for(const o of Ut)i.fillText(String.fromCharCode(o),n,8),n+=10;return i.getImageData(0,0,960,16)}static createFromSampleData(e,t){if(61440!==e.length)throw new Error("Unexpected source in MinimapCharRenderer");const i=$t._downsample(e,t);return new qt(i,t)}static _downsampleChar(e,t,i,n,o){const s=1*o,r=2*o;let a=n,l=0;for(let h=0;h0){const e=255/a;for(let t=0;t$t.create(this.fontScale,a.fontFamily))),this.defaultBackgroundColor=i.getColor(2),this.backgroundColor=ei._getMinimapBackground(t,this.defaultBackgroundColor),this.foregroundAlpha=ei._getMinimapForegroundOpacity(t)}static _getMinimapBackground(e,t){const i=e.getColor(Kt.kVY);return i?new Vt(i.rgba.r,i.rgba.g,i.rgba.b,Math.round(255*i.rgba.a)):t}static _getMinimapForegroundOpacity(e){const t=e.getColor(Kt.Itd);return t?Vt._clamp(Math.round(255*t.rgba.a)):255}static _getSectionHeaderColor(e,t){const i=e.getColor(Kt.NOs);return i?new Vt(i.rgba.r,i.rgba.g,i.rgba.b,Math.round(255*i.rgba.a)):t}equals(e){return this.renderMinimap===e.renderMinimap&&this.size===e.size&&this.minimapHeightIsEditorHeight===e.minimapHeightIsEditorHeight&&this.scrollBeyondLastLine===e.scrollBeyondLastLine&&this.paddingTop===e.paddingTop&&this.paddingBottom===e.paddingBottom&&this.showSlider===e.showSlider&&this.autohide===e.autohide&&this.pixelRatio===e.pixelRatio&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.lineHeight===e.lineHeight&&this.minimapLeft===e.minimapLeft&&this.minimapWidth===e.minimapWidth&&this.minimapHeight===e.minimapHeight&&this.canvasInnerWidth===e.canvasInnerWidth&&this.canvasInnerHeight===e.canvasInnerHeight&&this.canvasOuterWidth===e.canvasOuterWidth&&this.canvasOuterHeight===e.canvasOuterHeight&&this.isSampling===e.isSampling&&this.editorHeight===e.editorHeight&&this.fontScale===e.fontScale&&this.minimapLineHeight===e.minimapLineHeight&&this.minimapCharWidth===e.minimapCharWidth&&this.sectionHeaderFontSize===e.sectionHeaderFontSize&&this.defaultBackgroundColor&&this.defaultBackgroundColor.equals(e.defaultBackgroundColor)&&this.backgroundColor&&this.backgroundColor.equals(e.backgroundColor)&&this.foregroundAlpha===e.foregroundAlpha}}class ti{constructor(e,t,i,n,o,s,r,a,l){this.scrollTop=e,this.scrollHeight=t,this.sliderNeeded=i,this._computedSliderRatio=n,this.sliderTop=o,this.sliderHeight=s,this.topPaddingLineCount=r,this.startLineNumber=a,this.endLineNumber=l}getDesiredScrollTopFromDelta(e){return Math.round(this.scrollTop+e/this._computedSliderRatio)}getDesiredScrollTopFromTouchLocation(e){return Math.round((e-this.sliderHeight/2)/this._computedSliderRatio)}intersectWithViewport(e){const t=Math.max(this.startLineNumber,e.startLineNumber),i=Math.min(this.endLineNumber,e.endLineNumber);return t>i?null:[t,i]}getYForLineNumber(e,t){return+(e-this.startLineNumber+this.topPaddingLineCount)*t}static create(e,t,i,n,o,s,r,a,l,h,d){const c=e.pixelRatio,u=e.minimapLineHeight,g=Math.floor(e.canvasInnerHeight/u),m=e.lineHeight;if(e.minimapHeightIsEditorHeight){let t=a*e.lineHeight+e.paddingTop+e.paddingBottom;e.scrollBeyondLastLine&&(t+=Math.max(0,o-e.lineHeight-e.paddingBottom));const i=Math.max(1,Math.floor(o*o/t)),n=Math.max(0,e.minimapHeight-i),s=n/(h-o),d=l*s,c=n>0,u=Math.floor(e.canvasInnerHeight/e.minimapLineHeight),g=Math.floor(e.paddingTop/e.lineHeight);return new ti(l,h,c,s,d,i,g,1,Math.min(r,u))}let f;if(s&&i!==r){const e=i-t+1;f=Math.floor(e*u/c)}else{const e=o/m;f=Math.floor(e*u/c)}const p=Math.floor(e.paddingTop/m);let _,v=Math.floor(e.paddingBottom/m);if(e.scrollBeyondLastLine){const e=o/m;v=Math.max(v,e-1)}if(v>0){_=(p+r+v-o/m-1)*u/c}else _=Math.max(0,(p+r)*u/c-f);_=Math.min(e.minimapHeight-f,_);const b=_/(h-o),C=l*b;if(g>=p+r+v){return new ti(l,h,_>0,b,C,f,p,1,r)}{let i,o;i=t>1?t+p:Math.max(1,l/m);let s=Math.max(1,Math.floor(i-C*c/u));sl&&(s=Math.min(s,d.startLineNumber),o=Math.max(o,d.topPaddingLineCount)),d.scrollTop=e.paddingTop?(t-s+o+_)*u/c:l/e.paddingTop*(o+_)*u/c,new ti(l,h,!0,b,v,f,o,s,a)}}}class ii{constructor(e){this.dy=e}onContentChanged(){this.dy=-1}onTokensChanged(){this.dy=-1}}ii.INVALID=new ii(-1);class ni{constructor(e,t,i){this.renderedLayout=e,this._imageData=t,this._renderedLines=new Ye((()=>ii.INVALID)),this._renderedLines._set(e.startLineNumber,i)}linesEquals(e){if(!this.scrollEquals(e))return!1;const t=this._renderedLines._get().lines;for(let i=0,n=t.length;i1){for(let t=0,i=n-1;t0&&this.minimapLines[i-1]>=e;)i--;let n=this.modelLineToMinimapLine(t)-1;for(;n+1t)return null}return[i+1,n+1]}decorationLineRangeToMinimapLineRange(e,t){let i=this.modelLineToMinimapLine(e),n=this.modelLineToMinimapLine(t);return e!==t&&n===i&&(n===this.minimapLines.length?i>1&&i--:n++),[i,n]}onLinesDeleted(e){const t=e.toLineNumber-e.fromLineNumber+1;let i=this.minimapLines.length,n=0;for(let o=this.minimapLines.length-1;o>=0&&!(this.minimapLines[o]=0&&!(this.minimapLines[i]0,scrollWidth:e.scrollWidth,scrollHeight:e.scrollHeight,viewportStartLineNumber:t,viewportEndLineNumber:i,viewportStartLineNumberVerticalOffset:e.getVerticalOffsetForLineNumber(t),scrollTop:e.scrollTop,scrollLeft:e.scrollLeft,viewportWidth:e.viewportWidth,viewportHeight:e.viewportHeight};this._actual.render(n)}_recreateLineSampling(){this._minimapSelections=null;const e=Boolean(this._samplingState),[t,i]=si.compute(this.options,this._context.viewModel.getLineCount(),this._samplingState);if(this._samplingState=t,e&&this._samplingState)for(const n of i)switch(n.type){case"deleted":this._actual.onLinesDeleted(n.deleteFromLineNumber,n.deleteToLineNumber);break;case"inserted":this._actual.onLinesInserted(n.insertFromLineNumber,n.insertToLineNumber);break;case"flush":this._actual.onFlushed()}}getLineCount(){return this._samplingState?this._samplingState.minimapLines.length:this._context.viewModel.getLineCount()}getRealLineCount(){return this._context.viewModel.getLineCount()}getLineContent(e){return this._samplingState?this._context.viewModel.getLineContent(this._samplingState.minimapLines[e-1]):this._context.viewModel.getLineContent(e)}getLineMaxColumn(e){return this._samplingState?this._context.viewModel.getLineMaxColumn(this._samplingState.minimapLines[e-1]):this._context.viewModel.getLineMaxColumn(e)}getMinimapLinesRenderingData(e,t,i){if(this._samplingState){const n=[];for(let o=0,s=t-e+1;o{var t;return!(null===(t=e.options.minimap)||void 0===t?void 0:t.sectionHeaderStyle)}));if(this._samplingState){const e=[];for(const t of i){if(!t.options.minimap)continue;const i=t.range,n=this._samplingState.modelLineToMinimapLine(i.startLineNumber),o=this._samplingState.modelLineToMinimapLine(i.endLineNumber);e.push(new Ht.$l(new Q.e(n,i.startColumn,o,i.endColumn),t.options))}return e}return i}getSectionHeaderDecorationsInViewport(e,t){const i=this.options.minimapLineHeight,n=this.options.sectionHeaderFontSize/i;return e=Math.floor(Math.max(1,e-n)),this._getMinimapDecorationsInViewport(e,t).filter((e=>{var t;return!!(null===(t=e.options.minimap)||void 0===t?void 0:t.sectionHeaderStyle)}))}_getMinimapDecorationsInViewport(e,t){let i;if(this._samplingState){const n=this._samplingState.minimapLines[e-1],o=this._samplingState.minimapLines[t-1];i=new Q.e(n,1,o,this._context.viewModel.getLineMaxColumn(o))}else i=new Q.e(e,1,t,this._context.viewModel.getLineMaxColumn(t));return this._context.viewModel.getMinimapDecorationsInRange(i)}getSectionHeaderText(e,t){var i;const n=null===(i=e.options.minimap)||void 0===i?void 0:i.sectionHeaderText;if(!n)return null;const o=this._sectionHeaderCache.get(n);if(o)return o;const s=t(n);return this._sectionHeaderCache.set(n,s),s}getOptions(){return this._context.viewModel.model.getOptions()}revealLineNumber(e){this._samplingState&&(e=this._samplingState.minimapLines[e-1]),this._context.viewModel.revealRange("mouse",!1,new Q.e(e,1,e,1),1,0)}setScrollTop(e){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:e},1)}}class ai extends c.JT{constructor(e,t){super(),this._renderDecorations=!1,this._gestureInProgress=!1,this._theme=e,this._model=t,this._lastRenderData=null,this._buffers=null,this._selectionColor=this._theme.getColor(Kt.ov3),this._domNode=(0,z.X)(document.createElement("div")),U.write(this._domNode,9),this._domNode.setClassName(this._getMinimapDomNodeClassName()),this._domNode.setPosition("absolute"),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._shadow=(0,z.X)(document.createElement("div")),this._shadow.setClassName("minimap-shadow-hidden"),this._domNode.appendChild(this._shadow),this._canvas=(0,z.X)(document.createElement("canvas")),this._canvas.setPosition("absolute"),this._canvas.setLeft(0),this._domNode.appendChild(this._canvas),this._decorationsCanvas=(0,z.X)(document.createElement("canvas")),this._decorationsCanvas.setPosition("absolute"),this._decorationsCanvas.setClassName("minimap-decorations-layer"),this._decorationsCanvas.setLeft(0),this._domNode.appendChild(this._decorationsCanvas),this._slider=(0,z.X)(document.createElement("div")),this._slider.setPosition("absolute"),this._slider.setClassName("minimap-slider"),this._slider.setLayerHinting(!0),this._slider.setContain("strict"),this._domNode.appendChild(this._slider),this._sliderHorizontal=(0,z.X)(document.createElement("div")),this._sliderHorizontal.setPosition("absolute"),this._sliderHorizontal.setClassName("minimap-slider-horizontal"),this._slider.appendChild(this._sliderHorizontal),this._applyLayout(),this._pointerDownListener=l.mu(this._domNode.domNode,l.tw.POINTER_DOWN,(e=>{e.preventDefault();if(0===this._model.options.renderMinimap)return;if(!this._lastRenderData)return;if("proportional"!==this._model.options.size){if(0===e.button&&this._lastRenderData){const t=l.i(this._slider.domNode),i=t.top+t.height/2;this._startSliderDragging(e,i,this._lastRenderData.renderedLayout)}return}const t=this._model.options.minimapLineHeight,i=this._model.options.canvasInnerHeight/this._model.options.canvasOuterHeight*e.offsetY;let n=Math.floor(i/t)+this._lastRenderData.renderedLayout.startLineNumber-this._lastRenderData.renderedLayout.topPaddingLineCount;n=Math.min(n,this._model.getLineCount()),this._model.revealLineNumber(n)})),this._sliderPointerMoveMonitor=new zt.C,this._sliderPointerDownListener=l.mu(this._slider.domNode,l.tw.POINTER_DOWN,(e=>{e.preventDefault(),e.stopPropagation(),0===e.button&&this._lastRenderData&&this._startSliderDragging(e,e.pageY,this._lastRenderData.renderedLayout)})),this._gestureDisposable=ce.o.addTarget(this._domNode.domNode),this._sliderTouchStartListener=l.nm(this._domNode.domNode,ce.t.Start,(e=>{e.preventDefault(),e.stopPropagation(),this._lastRenderData&&(this._slider.toggleClassName("active",!0),this._gestureInProgress=!0,this.scrollDueToTouchEvent(e))}),{passive:!1}),this._sliderTouchMoveListener=l.nm(this._domNode.domNode,ce.t.Change,(e=>{e.preventDefault(),e.stopPropagation(),this._lastRenderData&&this._gestureInProgress&&this.scrollDueToTouchEvent(e)}),{passive:!1}),this._sliderTouchEndListener=l.mu(this._domNode.domNode,ce.t.End,(e=>{e.preventDefault(),e.stopPropagation(),this._gestureInProgress=!1,this._slider.toggleClassName("active",!1)}))}_startSliderDragging(e,t,i){if(!e.target||!(e.target instanceof Element))return;const n=e.pageX;this._slider.toggleClassName("active",!0);const o=(e,o)=>{const s=l.i(this._domNode.domNode),r=Math.min(Math.abs(o-n),Math.abs(o-s.left),Math.abs(o-s.left-s.width));if(_.ED&&r>140)return void this._model.setScrollTop(i.scrollTop);const a=e-t;this._model.setScrollTop(i.getDesiredScrollTopFromDelta(a))};e.pageY!==t&&o(e.pageY,n),this._sliderPointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,(e=>o(e.pageY,e.pageX)),(()=>{this._slider.toggleClassName("active",!1)}))}scrollDueToTouchEvent(e){const t=this._domNode.domNode.getBoundingClientRect().top,i=this._lastRenderData.renderedLayout.getDesiredScrollTopFromTouchLocation(e.pageY-t);this._model.setScrollTop(i)}dispose(){this._pointerDownListener.dispose(),this._sliderPointerMoveMonitor.dispose(),this._sliderPointerDownListener.dispose(),this._gestureDisposable.dispose(),this._sliderTouchStartListener.dispose(),this._sliderTouchMoveListener.dispose(),this._sliderTouchEndListener.dispose(),super.dispose()}_getMinimapDomNodeClassName(){const e=["minimap"];return"always"===this._model.options.showSlider?e.push("slider-always"):e.push("slider-mouseover"),this._model.options.autohide&&e.push("autohide"),e.join(" ")}getDomNode(){return this._domNode}_applyLayout(){this._domNode.setLeft(this._model.options.minimapLeft),this._domNode.setWidth(this._model.options.minimapWidth),this._domNode.setHeight(this._model.options.minimapHeight),this._shadow.setHeight(this._model.options.minimapHeight),this._canvas.setWidth(this._model.options.canvasOuterWidth),this._canvas.setHeight(this._model.options.canvasOuterHeight),this._canvas.domNode.width=this._model.options.canvasInnerWidth,this._canvas.domNode.height=this._model.options.canvasInnerHeight,this._decorationsCanvas.setWidth(this._model.options.canvasOuterWidth),this._decorationsCanvas.setHeight(this._model.options.canvasOuterHeight),this._decorationsCanvas.domNode.width=this._model.options.canvasInnerWidth,this._decorationsCanvas.domNode.height=this._model.options.canvasInnerHeight,this._slider.setWidth(this._model.options.minimapWidth)}_getBuffer(){return this._buffers||this._model.options.canvasInnerWidth>0&&this._model.options.canvasInnerHeight>0&&(this._buffers=new oi(this._canvas.domNode.getContext("2d"),this._model.options.canvasInnerWidth,this._model.options.canvasInnerHeight,this._model.options.backgroundColor)),this._buffers?this._buffers.getBuffer():null}onDidChangeOptions(){this._lastRenderData=null,this._buffers=null,this._applyLayout(),this._domNode.setClassName(this._getMinimapDomNodeClassName())}onSelectionChanged(){return this._renderDecorations=!0,!0}onDecorationsChanged(){return this._renderDecorations=!0,!0}onFlushed(){return this._lastRenderData=null,!0}onLinesChanged(e,t){return!!this._lastRenderData&&this._lastRenderData.onLinesChanged(e,t)}onLinesDeleted(e,t){var i;return null===(i=this._lastRenderData)||void 0===i||i.onLinesDeleted(e,t),!0}onLinesInserted(e,t){var i;return null===(i=this._lastRenderData)||void 0===i||i.onLinesInserted(e,t),!0}onScrollChanged(){return this._renderDecorations=!0,!0}onThemeChanged(){return this._selectionColor=this._theme.getColor(Kt.ov3),this._renderDecorations=!0,!0}onTokensChanged(e){return!!this._lastRenderData&&this._lastRenderData.onTokensChanged(e)}onTokensColorsChanged(){return this._lastRenderData=null,this._buffers=null,!0}onZonesChanged(){return this._lastRenderData=null,!0}render(e){if(0===this._model.options.renderMinimap)return this._shadow.setClassName("minimap-shadow-hidden"),this._sliderHorizontal.setWidth(0),void this._sliderHorizontal.setHeight(0);e.scrollLeft+e.viewportWidth>=e.scrollWidth?this._shadow.setClassName("minimap-shadow-hidden"):this._shadow.setClassName("minimap-shadow-visible");const t=ti.create(this._model.options,e.viewportStartLineNumber,e.viewportEndLineNumber,e.viewportStartLineNumberVerticalOffset,e.viewportHeight,e.viewportContainsWhitespaceGaps,this._model.getLineCount(),this._model.getRealLineCount(),e.scrollTop,e.scrollHeight,this._lastRenderData?this._lastRenderData.renderedLayout:null);this._slider.setDisplay(t.sliderNeeded?"block":"none"),this._slider.setTop(t.sliderTop),this._slider.setHeight(t.sliderHeight),this._sliderHorizontal.setLeft(0),this._sliderHorizontal.setWidth(this._model.options.minimapWidth),this._sliderHorizontal.setTop(0),this._sliderHorizontal.setHeight(t.sliderHeight),this.renderDecorations(t),this._lastRenderData=this.renderLines(t)}renderDecorations(e){if(this._renderDecorations){this._renderDecorations=!1;const t=this._model.getSelections();t.sort(Q.e.compareRangesUsingStarts);const i=this._model.getMinimapDecorationsInViewport(e.startLineNumber,e.endLineNumber);i.sort(((e,t)=>(e.options.zIndex||0)-(t.options.zIndex||0)));const{canvasInnerWidth:n,canvasInnerHeight:o}=this._model.options,s=this._model.options.minimapLineHeight,r=this._model.options.minimapCharWidth,a=this._model.getOptions().tabSize,l=this._decorationsCanvas.domNode.getContext("2d");l.clearRect(0,0,n,o);const h=new li(e.startLineNumber,e.endLineNumber,!1);this._renderSelectionLineHighlights(l,t,h,e,s),this._renderDecorationsLineHighlights(l,i,h,e,s);const d=new li(e.startLineNumber,e.endLineNumber,null);this._renderSelectionsHighlights(l,t,d,e,s,a,r,n),this._renderDecorationsHighlights(l,i,d,e,s,a,r,n),this._renderSectionHeaders(e)}}_renderSelectionLineHighlights(e,t,i,n,o){if(!this._selectionColor||this._selectionColor.isTransparent())return;e.fillStyle=this._selectionColor.transparent(.5).toString();let s=0,r=0;for(const a of t){const t=n.intersectWithViewport(a);if(!t)continue;const[l,h]=t;for(let e=l;e<=h;e++)i.set(e,!0);const d=n.getYForLineNumber(l,o),c=n.getYForLineNumber(h,o);r>=d||(r>s&&e.fillRect(k.y0,s,e.canvas.width,r-s),s=d),r=c}r>s&&e.fillRect(k.y0,s,e.canvas.width,r-s)}_renderDecorationsLineHighlights(e,t,i,n,o){const s=new Map;for(let r=t.length-1;r>=0;r--){const a=t[r],l=a.options.minimap;if(!l||1!==l.position)continue;const h=n.intersectWithViewport(a.range);if(!h)continue;const[d,c]=h,u=l.getColor(this._theme.value);if(!u||u.isTransparent())continue;let g=s.get(u.toString());g||(g=u.transparent(.5).toString(),s.set(u.toString(),g)),e.fillStyle=g;for(let t=d;t<=c;t++){if(i.has(t))continue;i.set(t,!0);const s=n.getYForLineNumber(d,o);e.fillRect(k.y0,s,e.canvas.width,o)}}}_renderSelectionsHighlights(e,t,i,n,o,s,r,a){if(this._selectionColor&&!this._selectionColor.isTransparent())for(const l of t){const t=n.intersectWithViewport(l);if(!t)continue;const[h,d]=t;for(let c=h;c<=d;c++)this.renderDecorationOnLine(e,i,l,this._selectionColor,n,c,o,o,s,r,a)}}_renderDecorationsHighlights(e,t,i,n,o,s,r,a){for(const l of t){const t=l.options.minimap;if(!t)continue;const h=n.intersectWithViewport(l.range);if(!h)continue;const[d,c]=h,u=t.getColor(this._theme.value);if(u&&!u.isTransparent())for(let g=d;g<=c;g++)switch(t.position){case 1:this.renderDecorationOnLine(e,i,l.range,u,n,g,o,o,s,r,a);continue;case 2:{const t=n.getYForLineNumber(g,o),i=2;this.renderDecoration(e,u,i,t,2,o);continue}}}}renderDecorationOnLine(e,t,i,n,o,s,r,a,l,h,d){const c=o.getYForLineNumber(s,a);if(c+r<0||c>this._model.options.canvasInnerHeight)return;const{startLineNumber:u,endLineNumber:g}=i,m=u===s?i.startColumn:1,f=g===s?i.endColumn:this._model.getLineMaxColumn(s),p=this.getXOffsetForPosition(t,s,m,l,h,d),_=this.getXOffsetForPosition(t,s,f,l,h,d);this.renderDecoration(e,n,p,c,_-p,r)}getXOffsetForPosition(e,t,i,n,o,s){if(1===i)return k.y0;if((i-1)*o>=s)return s;let r=e.get(t);if(!r){const i=this._model.getLineContent(t);r=[k.y0];let a=k.y0;for(let e=1;e=s){r[e]=s;break}r[e]=l,a=l}e.set(t,r)}return i-1e.range.startLineNumber-t.range.startLineNumber));const g=ai._fitSectionHeader.bind(null,c,s-k.y0);for(const m of u){const r=e.getYForLineNumber(m.range.startLineNumber,i)+n,l=r-n,d=l+2,u=this._model.getSectionHeaderText(m,g);ai._renderSectionLabel(c,u,2===(null===(t=m.options.minimap)||void 0===t?void 0:t.sectionHeaderStyle),a,h,s,l,o,r,d)}}static _fitSectionHeader(e,t,i){if(!i)return i;const n=e.measureText(i).width,o=e.measureText("\u2026").width;if(n<=t||n<=o)return i;const s=i.length,r=n/i.length,a=Math.floor((t-o)/r)-1;let l=Math.ceil(a/2);for(;l>0&&/\s/.test(i[l-1]);)--l;return i.substring(0,l)+"\u2026"+i.substring(s-(a-l))}static _renderSectionLabel(e,t,i,n,o,s,r,a,l,h){t&&(e.fillStyle=n,e.fillRect(0,r,s,a),e.fillStyle=o,e.fillText(t,k.y0,l)),i&&(e.beginPath(),e.moveTo(0,h),e.lineTo(s,h),e.closePath(),e.stroke())}renderLines(e){const t=e.startLineNumber,i=e.endLineNumber,n=this._model.options.minimapLineHeight;if(this._lastRenderData&&this._lastRenderData.linesEquals(e)){const t=this._lastRenderData._get();return new ni(e,t.imageData,t.lines)}const o=this._getBuffer();if(!o)return null;const[s,r,a]=ai._renderUntouchedLines(o,e.topPaddingLineCount,t,i,n,this._lastRenderData),l=this._model.getMinimapLinesRenderingData(t,i,a),h=this._model.getOptions().tabSize,d=this._model.options.defaultBackgroundColor,c=this._model.options.backgroundColor,u=this._model.options.foregroundAlpha,g=this._model.tokensColorTracker,m=g.backgroundIsLight(),f=this._model.options.renderMinimap,p=this._model.options.charRenderer(),_=this._model.options.fontScale,v=this._model.options.minimapCharWidth,b=(1===f?2:3)*_,C=n>b?Math.floor((n-b)/2):0,w=c.a/255,y=new Vt(Math.round((c.r-d.r)*w+d.r),Math.round((c.g-d.g)*w+d.g),Math.round((c.b-d.b)*w+d.b),255);let S=e.topPaddingLineCount*n;const L=[];for(let N=0,x=i-t+1;N=0&&t_)return;const r=f.charCodeAt(C);if(9===r){const e=c-(C+w)%c;w+=e-1,b+=e*s}else if(32===r)b+=s;else{const c=De.K7(r)?2:1;for(let u=0;u_)return}}}}}class li{constructor(e,t,i){this._startLineNumber=e,this._endLineNumber=t,this._defaultValue=i,this._values=[];for(let n=0,o=this._endLineNumber-this._startLineNumber+1;nthis._endLineNumber||(this._values[e-this._startLineNumber]=t)}get(e){return ethis._endLineNumber?this._defaultValue:this._values[e-this._startLineNumber]}}class hi extends K{constructor(e,t){super(e),this._viewDomNode=t;const i=this._context.configuration.options.get(145);this._widgets={},this._verticalScrollbarWidth=i.verticalScrollbarWidth,this._minimapWidth=i.minimap.minimapWidth,this._horizontalScrollbarHeight=i.horizontalScrollbarHeight,this._editorHeight=i.height,this._editorWidth=i.width,this._viewDomNodeRect={top:0,left:0,width:0,height:0},this._domNode=(0,z.X)(document.createElement("div")),U.write(this._domNode,4),this._domNode.setClassName("overlayWidgets"),this.overflowingOverlayWidgetsDomNode=(0,z.X)(document.createElement("div")),U.write(this.overflowingOverlayWidgetsDomNode,5),this.overflowingOverlayWidgetsDomNode.setClassName("overflowingOverlayWidgets")}dispose(){super.dispose(),this._widgets={}}getDomNode(){return this._domNode}onConfigurationChanged(e){const t=this._context.configuration.options.get(145);return this._verticalScrollbarWidth=t.verticalScrollbarWidth,this._minimapWidth=t.minimap.minimapWidth,this._horizontalScrollbarHeight=t.horizontalScrollbarHeight,this._editorHeight=t.height,this._editorWidth=t.width,!0}addWidget(e){const t=(0,z.X)(e.getDomNode());this._widgets[e.getId()]={widget:e,preference:null,domNode:t},t.setPosition("absolute"),t.setAttribute("widgetId",e.getId()),e.allowEditorOverflow?this.overflowingOverlayWidgetsDomNode.appendChild(t):this._domNode.appendChild(t),this.setShouldRender(),this._updateMaxMinWidth()}setWidgetPosition(e,t){const i=this._widgets[e.getId()];return i.preference===t?(this._updateMaxMinWidth(),!1):(i.preference=t,this.setShouldRender(),this._updateMaxMinWidth(),!0)}removeWidget(e){const t=e.getId();if(this._widgets.hasOwnProperty(t)){const e=this._widgets[t].domNode.domNode;delete this._widgets[t],e.remove(),this.setShouldRender(),this._updateMaxMinWidth()}}_updateMaxMinWidth(){var e,t;let i=0;const n=Object.keys(this._widgets);for(let o=0,s=n.length;o=3){const t=Math.floor(n/3),i=Math.floor(n/3),o=n-t-i,s=e+t;return[[0,e,s,e,e+t+o,e,s,e],[0,t,o,t+o,i,t+o+i,o+i,t+o+i]]}if(2===i){const t=Math.floor(n/2),i=n-t;return[[0,e,e,e,e+t,e,e,e],[0,t,t,t,i,t+i,t+i,t+i]]}return[[0,e,e,e,e,e,e,e],[0,n,n,n,n,n,n,n]]}equals(e){return this.lineHeight===e.lineHeight&&this.pixelRatio===e.pixelRatio&&this.overviewRulerLanes===e.overviewRulerLanes&&this.renderBorder===e.renderBorder&&this.borderColor===e.borderColor&&this.hideCursor===e.hideCursor&&this.cursorColorSingle===e.cursorColorSingle&&this.cursorColorPrimary===e.cursorColorPrimary&&this.cursorColorSecondary===e.cursorColorSecondary&&this.themeType===e.themeType&&Pe.Il.equals(this.backgroundColor,e.backgroundColor)&&this.top===e.top&&this.right===e.right&&this.domWidth===e.domWidth&&this.domHeight===e.domHeight&&this.canvasWidth===e.canvasWidth&&this.canvasHeight===e.canvasHeight}}class ci extends K{constructor(e){super(e),this._actualShouldRender=0,this._renderedDecorations=[],this._renderedCursorPositions=[],this._domNode=(0,z.X)(document.createElement("canvas")),this._domNode.setClassName("decorationsOverviewRuler"),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._domNode.setAttribute("aria-hidden","true"),this._updateSettings(!1),this._tokensColorTrackerListener=Oe.RW.onDidChange((e=>{e.changedColorMap&&this._updateSettings(!0)})),this._cursorPositions=[{position:new G.L(1,1),color:this._settings.cursorColorSingle}]}dispose(){super.dispose(),this._tokensColorTrackerListener.dispose()}_updateSettings(e){const t=new di(this._context.configuration,this._context.theme);return(!this._settings||!this._settings.equals(t))&&(this._settings=t,this._domNode.setTop(this._settings.top),this._domNode.setRight(this._settings.right),this._domNode.setWidth(this._settings.domWidth),this._domNode.setHeight(this._settings.domHeight),this._domNode.domNode.width=this._settings.canvasWidth,this._domNode.domNode.height=this._settings.canvasHeight,e&&this._render(),!0)}_markRenderingIsNeeded(){return this._actualShouldRender=2,!0}_markRenderingIsMaybeNeeded(){return this._actualShouldRender=1,!0}onConfigurationChanged(e){return!!this._updateSettings(!1)&&this._markRenderingIsNeeded()}onCursorStateChanged(e){this._cursorPositions=[];for(let t=0,i=e.selections.length;t1&&(n=0===t?this._settings.cursorColorPrimary:this._settings.cursorColorSecondary),this._cursorPositions.push({position:e.selections[t].getPosition(),color:n})}return this._cursorPositions.sort(((e,t)=>G.L.compare(e.position,t.position))),this._markRenderingIsMaybeNeeded()}onDecorationsChanged(e){return!!e.affectsOverviewRuler&&this._markRenderingIsMaybeNeeded()}onFlushed(e){return this._markRenderingIsNeeded()}onScrollChanged(e){return!!e.scrollHeightChanged&&this._markRenderingIsNeeded()}onZonesChanged(e){return this._markRenderingIsNeeded()}onThemeChanged(e){return!!this._updateSettings(!1)&&this._markRenderingIsNeeded()}getDomNode(){return this._domNode.domNode}prepareRender(e){}render(e){this._render(),this._actualShouldRender=0}_render(){const e=this._settings.backgroundColor;if(0===this._settings.overviewRulerLanes)return this._domNode.setBackgroundColor(e?Pe.Il.Format.CSS.formatHexA(e):""),void this._domNode.setDisplay("none");const t=this._context.viewModel.getAllOverviewRulerDecorations(this._context.theme);if(t.sort(Ht.SQ.compareByRenderingProps),1!==this._actualShouldRender||Ht.SQ.equalsArr(this._renderedDecorations,t)||(this._actualShouldRender=2),1!==this._actualShouldRender||(0,f.fS)(this._renderedCursorPositions,this._cursorPositions,((e,t)=>e.position.lineNumber===t.position.lineNumber&&e.color===t.color))||(this._actualShouldRender=2),1===this._actualShouldRender)return;this._renderedDecorations=t,this._renderedCursorPositions=this._cursorPositions,this._domNode.setDisplay("block");const i=this._settings.canvasWidth,n=this._settings.canvasHeight,o=this._settings.lineHeight,s=this._context.viewLayout,r=n/this._context.viewLayout.getScrollHeight(),a=6*this._settings.pixelRatio|0,l=a/2|0,h=this._domNode.domNode.getContext("2d");e?e.isOpaque()?(h.fillStyle=Pe.Il.Format.CSS.formatHexA(e),h.fillRect(0,0,i,n)):(h.clearRect(0,0,i,n),h.fillStyle=Pe.Il.Format.CSS.formatHexA(e),h.fillRect(0,0,i,n)):h.clearRect(0,0,i,n);const d=this._settings.x,c=this._settings.w;for(const u of t){const e=u.color,t=u.data;h.fillStyle=e;let i=0,g=0,m=0;for(let u=0,f=t.length/3;un&&(e=n-l),_=e-l,v=e+l}_>m+1||e!==i?(0!==u&&h.fillRect(d[i],g,c[i],m-g),i=e,g=_,m=v):v>m&&(m=v)}h.fillRect(d[i],g,c[i],m-g)}if(!this._settings.hideCursor){const e=2*this._settings.pixelRatio|0,t=e/2|0,i=this._settings.x[7],o=this._settings.w[7];let a=-100,l=-100,d=null;for(let c=0,u=this._cursorPositions.length;cn&&(m=n-t);const f=m-t,p=f+e;f>l+1||u!==d?(0!==c&&d&&h.fillRect(i,a,o,l-a),a=f,l=p):p>l&&(l=p),d=u,h.fillStyle=u}d&&h.fillRect(i,a,o,l-a)}this._settings.renderBorder&&this._settings.borderColor&&this._settings.overviewRulerLanes>0&&(h.beginPath(),h.lineWidth=1,h.strokeStyle=this._settings.borderColor,h.moveTo(0,0),h.lineTo(0,n),h.stroke(),h.moveTo(0,0),h.lineTo(i,0),h.stroke())}}var ui,gi=i(70397);class mi extends H{constructor(e,t){super(),this._context=e;const i=this._context.configuration.options;this._domNode=(0,z.X)(document.createElement("canvas")),this._domNode.setClassName(t),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._zoneManager=new gi.Tj((e=>this._context.viewLayout.getVerticalOffsetForLineNumber(e))),this._zoneManager.setDOMWidth(0),this._zoneManager.setDOMHeight(0),this._zoneManager.setOuterHeight(this._context.viewLayout.getScrollHeight()),this._zoneManager.setLineHeight(i.get(67)),this._zoneManager.setPixelRatio(i.get(143)),this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return e.hasChanged(67)&&(this._zoneManager.setLineHeight(t.get(67)),this._render()),e.hasChanged(143)&&(this._zoneManager.setPixelRatio(t.get(143)),this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render()),!0}onFlushed(e){return this._render(),!0}onScrollChanged(e){return e.scrollHeightChanged&&(this._zoneManager.setOuterHeight(e.scrollHeight),this._render()),!0}onZonesChanged(e){return this._render(),!0}getDomNode(){return this._domNode.domNode}setLayout(e){this._domNode.setTop(e.top),this._domNode.setRight(e.right);let t=!1;t=this._zoneManager.setDOMWidth(e.width)||t,t=this._zoneManager.setDOMHeight(e.height)||t,t&&(this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render())}setZones(e){this._zoneManager.setZones(e),this._render()}_render(){if(0===this._zoneManager.getOuterHeight())return!1;const e=this._zoneManager.getCanvasWidth(),t=this._zoneManager.getCanvasHeight(),i=this._zoneManager.resolveColorZones(),n=this._zoneManager.getId2Color(),o=this._domNode.domNode.getContext("2d");return o.clearRect(0,0,e,t),i.length>0&&this._renderOneLane(o,i,n,e),!0}_renderOneLane(e,t,i,n){let o=0,s=0,r=0;for(const a of t){const t=a.colorId,l=a.from,h=a.to;t!==o?(e.fillRect(0,s,n,r-s),o=t,e.fillStyle=i[o],s=l,r=h):r>=l?r=Math.max(r,h):(e.fillRect(0,s,n,r-s),s=l,r=h)}e.fillRect(0,s,n,r-s)}}class fi extends K{constructor(e){super(e),this.domNode=(0,z.X)(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.domNode.setClassName("view-rulers"),this._renderedRulers=[];const t=this._context.configuration.options;this._rulers=t.get(102),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth}dispose(){super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._rulers=t.get(102),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onScrollChanged(e){return e.scrollHeightChanged}prepareRender(e){}_ensureRulersCount(){const e=this._renderedRulers.length,t=this._rulers.length;if(e===t)return;if(e0;){const e=(0,z.X)(document.createElement("div"));e.setClassName("view-ruler"),e.setWidth(n),this.domNode.appendChild(e),this._renderedRulers.push(e),o--}return}let i=e-t;for(;i>0;){const e=this._renderedRulers.pop();this.domNode.removeChild(e),i--}}render(e){this._ensureRulersCount();for(let t=0,i=this._rulers.length;t0;return this._shouldShow!==e&&(this._shouldShow=e,!0)}getDomNode(){return this._domNode}_updateWidth(){const e=this._context.configuration.options.get(145);0===e.minimap.renderMinimap||e.minimap.minimapWidth>0&&0===e.minimap.minimapLeft?this._width=e.width:this._width=e.width-e.verticalScrollbarWidth}onConfigurationChanged(e){const t=this._context.configuration.options.get(103);return this._useShadows=t.useShadows,this._updateWidth(),this._updateShouldShow(),!0}onScrollChanged(e){return this._scrollTop=e.scrollTop,this._updateShouldShow()}prepareRender(e){}render(e){this._domNode.setWidth(this._width),this._domNode.setClassName(this._shouldShow?"scroll-decoration":"")}}class _i{constructor(e){this.left=e.left,this.width=e.width,this.startStyle=null,this.endStyle=null}}class vi{constructor(e,t){this.lineNumber=e,this.ranges=t}}function bi(e){return new _i(e)}function Ci(e){return new vi(e.lineNumber,e.ranges.map(bi))}class wi extends xe{constructor(e){super(),this._previousFrameVisibleRangesWithStyle=[],this._context=e;const t=this._context.configuration.options;this._roundedSelection=t.get(101),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,this._selections=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._roundedSelection=t.get(101),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onCursorStateChanged(e){return this._selections=e.selections.slice(0),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_visibleRangesHaveGaps(e){for(let t=0,i=e.length;t1)return!0}return!1}_enrichVisibleRangesWithStyle(e,t,i){const n=this._typicalHalfwidthCharacterWidth/4;let o=null,s=null;if(i&&i.length>0&&t.length>0){const n=t[0].lineNumber;if(n===e.startLineNumber)for(let e=0;!o&&e=0;e--)i[e].lineNumber===r&&(s=i[e].ranges[0]);o&&!o.startStyle&&(o=null),s&&!s.startStyle&&(s=null)}for(let r=0,a=t.length;r0){const e=t[r-1].ranges[0].left,o=t[r-1].ranges[0].left+t[r-1].ranges[0].width;yi(i-e)e&&(h.top=1),yi(l-o)'}_actualRenderOneSelection(e,t,i,n){if(0===n.length)return;const o=!!n[0].ranges[0].startStyle,s=n[0].lineNumber,r=n[n.length-1].lineNumber;for(let a=0,l=n.length;a1,r)}this._previousFrameVisibleRangesWithStyle=o,this._renderResult=t.map((e=>{let[t,i]=e;return t+i}))}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}function yi(e){return e<0?-e:e}wi.SELECTION_CLASS_NAME="selected-text",wi.SELECTION_TOP_LEFT="top-left-radius",wi.SELECTION_BOTTOM_LEFT="bottom-left-radius",wi.SELECTION_TOP_RIGHT="top-right-radius",wi.SELECTION_BOTTOM_RIGHT="bottom-right-radius",wi.EDITOR_BACKGROUND_CLASS_NAME="monaco-editor-background",wi.ROUNDED_PIECE_WIDTH=10,(0,Ee.Ic)(((e,t)=>{const i=e.getColor(Kt.yb5);i&&!i.isTransparent()&&t.addRule(".monaco-editor .view-line span.inline-selected-text { color: ".concat(i,"; }"))}));class Si{constructor(e,t,i,n,o,s,r){this.top=e,this.left=t,this.paddingLeft=i,this.width=n,this.height=o,this.textContent=s,this.textContentClassName=r}}!function(e){e[e.Single=0]="Single",e[e.MultiPrimary=1]="MultiPrimary",e[e.MultiSecondary=2]="MultiSecondary"}(ui||(ui={}));class Li{constructor(e,t){this._context=e;const i=this._context.configuration.options,n=i.get(50);this._cursorStyle=i.get(28),this._lineHeight=i.get(67),this._typicalHalfwidthCharacterWidth=n.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(i.get(31),this._typicalHalfwidthCharacterWidth),this._isVisible=!0,this._domNode=(0,z.X)(document.createElement("div")),this._domNode.setClassName("cursor ".concat(Re)),this._domNode.setHeight(this._lineHeight),this._domNode.setTop(0),this._domNode.setLeft(0),(0,g.N)(this._domNode,n),this._domNode.setDisplay("none"),this._position=new G.L(1,1),this._pluralityClass="",this.setPlurality(t),this._lastRenderedContent="",this._renderData=null}getDomNode(){return this._domNode}getPosition(){return this._position}setPlurality(e){switch(e){default:case ui.Single:this._pluralityClass="";break;case ui.MultiPrimary:this._pluralityClass="cursor-primary";break;case ui.MultiSecondary:this._pluralityClass="cursor-secondary"}}show(){this._isVisible||(this._domNode.setVisibility("inherit"),this._isVisible=!0)}hide(){this._isVisible&&(this._domNode.setVisibility("hidden"),this._isVisible=!1)}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(50);return this._cursorStyle=t.get(28),this._lineHeight=t.get(67),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(31),this._typicalHalfwidthCharacterWidth),(0,g.N)(this._domNode,i),!0}onCursorPositionChanged(e,t){return this._domNode.domNode.style.transitionProperty=t?"none":"",this._position=e,!0}_getGraphemeAwarePosition(){const{lineNumber:e,column:t}=this._position,i=this._context.viewModel.getLineContent(e),[n,o]=De.J_(i,t-1);return[new G.L(e,n+1),i.substring(n,o)]}_prepareRender(e){let t="",i="";const[n,o]=this._getGraphemeAwarePosition();if(this._cursorStyle===k.d2.Line||this._cursorStyle===k.d2.LineThin){const s=e.visibleRangeForPosition(n);if(!s||s.outsideRenderedLine)return null;const r=l.Jj(this._domNode.domNode);let a;this._cursorStyle===k.d2.Line?(a=l.Uh(r,this._lineCursorWidth>0?this._lineCursorWidth:2),a>2&&(t=o,i=this._getTokenClassName(n))):a=l.Uh(r,1);let h=s.left,d=0;a>=2&&h>=1&&(d=1,h-=d);const c=e.getVerticalOffsetForLineNumber(n.lineNumber)-e.bigNumbersDelta;return new Si(c,h,d,a,this._lineHeight,t,i)}const s=e.linesVisibleRangesForRange(new Q.e(n.lineNumber,n.column,n.lineNumber,n.column+o.length),!1);if(!s||0===s.length)return null;const r=s[0];if(r.outsideRenderedLine||0===r.ranges.length)return null;const a=r.ranges[0],h="\t"===o||a.width<1?this._typicalHalfwidthCharacterWidth:a.width;this._cursorStyle===k.d2.Block&&(t=o,i=this._getTokenClassName(n));let d=e.getVerticalOffsetForLineNumber(n.lineNumber)-e.bigNumbersDelta,c=this._lineHeight;return this._cursorStyle!==k.d2.Underline&&this._cursorStyle!==k.d2.UnderlineThin||(d+=this._lineHeight-2,c=2),new Si(d,a.left,0,h,c,t,i)}_getTokenClassName(e){const t=this._context.viewModel.getViewLineData(e.lineNumber),i=t.tokens.findTokenIndexAtOffset(e.column-1);return t.tokens.getClassName(i)}prepareRender(e){this._renderData=this._prepareRender(e)}render(e){return this._renderData?(this._lastRenderedContent!==this._renderData.textContent&&(this._lastRenderedContent=this._renderData.textContent,this._domNode.domNode.textContent=this._lastRenderedContent),this._domNode.setClassName("cursor ".concat(this._pluralityClass," ").concat(Re," ").concat(this._renderData.textContentClassName)),this._domNode.setDisplay("block"),this._domNode.setTop(this._renderData.top),this._domNode.setLeft(this._renderData.left),this._domNode.setPaddingLeft(this._renderData.paddingLeft),this._domNode.setWidth(this._renderData.width),this._domNode.setLineHeight(this._renderData.height),this._domNode.setHeight(this._renderData.height),{domNode:this._domNode.domNode,position:this._position,contentLeft:this._renderData.left,height:this._renderData.height,width:2}):(this._domNode.setDisplay("none"),null)}}class ki extends K{constructor(e){super(e);const t=this._context.configuration.options;this._readOnly=t.get(91),this._cursorBlinking=t.get(26),this._cursorStyle=t.get(28),this._cursorSmoothCaretAnimation=t.get(27),this._selectionIsEmpty=!0,this._isComposingInput=!1,this._isVisible=!1,this._primaryCursor=new Li(this._context,ui.Single),this._secondaryCursors=[],this._renderData=[],this._domNode=(0,z.X)(document.createElement("div")),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._updateDomClassName(),this._domNode.appendChild(this._primaryCursor.getDomNode()),this._startCursorBlinkAnimation=new Tt._F,this._cursorFlatBlinkInterval=new l.ne,this._blinkingEnabled=!1,this._editorHasFocus=!1,this._updateBlinking()}dispose(){super.dispose(),this._startCursorBlinkAnimation.dispose(),this._cursorFlatBlinkInterval.dispose()}getDomNode(){return this._domNode}onCompositionStart(e){return this._isComposingInput=!0,this._updateBlinking(),!0}onCompositionEnd(e){return this._isComposingInput=!1,this._updateBlinking(),!0}onConfigurationChanged(e){const t=this._context.configuration.options;this._readOnly=t.get(91),this._cursorBlinking=t.get(26),this._cursorStyle=t.get(28),this._cursorSmoothCaretAnimation=t.get(27),this._updateBlinking(),this._updateDomClassName(),this._primaryCursor.onConfigurationChanged(e);for(let i=0,n=this._secondaryCursors.length;it.length){const e=this._secondaryCursors.length-t.length;for(let t=0;t{for(let i=0,n=e.ranges.length;i{this._isVisible?this._hide():this._show()}),ki.BLINK_INTERVAL,(0,l.Jj)(this._domNode.domNode)):this._startCursorBlinkAnimation.setIfNotSet((()=>{this._blinkingEnabled=!0,this._updateDomClassName()}),ki.BLINK_INTERVAL))}_updateDomClassName(){this._domNode.setClassName(this._getClassName())}_getClassName(){let e="cursors-layer";switch(this._selectionIsEmpty||(e+=" has-selection"),this._cursorStyle){case k.d2.Line:e+=" cursor-line-style";break;case k.d2.Block:e+=" cursor-block-style";break;case k.d2.Underline:e+=" cursor-underline-style";break;case k.d2.LineThin:e+=" cursor-line-thin-style";break;case k.d2.BlockOutline:e+=" cursor-block-outline-style";break;case k.d2.UnderlineThin:e+=" cursor-underline-thin-style";break;default:e+=" cursor-line-style"}if(this._blinkingEnabled)switch(this._getCursorBlinking()){case 1:e+=" cursor-blink";break;case 2:e+=" cursor-smooth";break;case 3:e+=" cursor-phase";break;case 4:e+=" cursor-expand";break;default:e+=" cursor-solid"}else e+=" cursor-solid";return"on"!==this._cursorSmoothCaretAnimation&&"explicit"!==this._cursorSmoothCaretAnimation||(e+=" cursor-smooth-caret-animation"),e}_show(){this._primaryCursor.show();for(let e=0,t=this._secondaryCursors.length;e{const i=[{class:".cursor",foreground:Ie.n0,background:Ie.fY},{class:".cursor-primary",foreground:Ie.jD,background:Ie.s2},{class:".cursor-secondary",foreground:Ie.x_,background:Ie.P0}];for(const n of i){const i=e.getColor(n.foreground);if(i){let o=e.getColor(n.background);o||(o=i.opposite()),t.addRule(".monaco-editor .cursors-layer ".concat(n.class," { background-color: ").concat(i,"; border-color: ").concat(i,"; color: ").concat(o,"; }")),(0,ct.c3)(e.type)&&t.addRule(".monaco-editor .cursors-layer.has-selection ".concat(n.class," { border-left: 1px solid ").concat(o,"; border-right: 1px solid ").concat(o,"; }"))}}}));const Di=()=>{throw new Error("Invalid change accessor")};class Ni extends K{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(145);this._lineHeight=t.get(67),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,this.domNode=(0,z.X)(document.createElement("div")),this.domNode.setClassName("view-zones"),this.domNode.setPosition("absolute"),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.marginDomNode=(0,z.X)(document.createElement("div")),this.marginDomNode.setClassName("margin-view-zones"),this.marginDomNode.setPosition("absolute"),this.marginDomNode.setAttribute("role","presentation"),this.marginDomNode.setAttribute("aria-hidden","true"),this._zones={}}dispose(){super.dispose(),this._zones={}}_recomputeWhitespacesProps(){const e=this._context.viewLayout.getWhitespaces(),t=new Map;for(const n of e)t.set(n.id,n);let i=!1;return this._context.viewModel.changeWhitespace((e=>{const n=Object.keys(this._zones);for(let o=0,s=n.length;o{const n={addZone:e=>(t=!0,this._addZone(i,e)),removeZone:e=>{e&&(t=this._removeZone(i,e)||t)},layoutZone:e=>{e&&(t=this._layoutZone(i,e)||t)}};!function(e,t){try{return e(t)}catch(i){(0,h.dL)(i)}}(e,n),n.addZone=Di,n.removeZone=Di,n.layoutZone=Di})),t}_addZone(e,t){const i=this._computeWhitespaceProps(t),n={whitespaceId:e.insertWhitespace(i.afterViewLineNumber,this._getZoneOrdinal(t),i.heightInPx,i.minWidthInPx),delegate:t,isInHiddenArea:i.isInHiddenArea,isVisible:!1,domNode:(0,z.X)(t.domNode),marginDomNode:t.marginDomNode?(0,z.X)(t.marginDomNode):null};return this._safeCallOnComputedHeight(n.delegate,i.heightInPx),n.domNode.setPosition("absolute"),n.domNode.domNode.style.width="100%",n.domNode.setDisplay("none"),n.domNode.setAttribute("monaco-view-zone",n.whitespaceId),this.domNode.appendChild(n.domNode),n.marginDomNode&&(n.marginDomNode.setPosition("absolute"),n.marginDomNode.domNode.style.width="100%",n.marginDomNode.setDisplay("none"),n.marginDomNode.setAttribute("monaco-view-zone",n.whitespaceId),this.marginDomNode.appendChild(n.marginDomNode)),this._zones[n.whitespaceId]=n,this.setShouldRender(),n.whitespaceId}_removeZone(e,t){if(this._zones.hasOwnProperty(t)){const i=this._zones[t];return delete this._zones[t],e.removeWhitespace(i.whitespaceId),i.domNode.removeAttribute("monaco-visible-view-zone"),i.domNode.removeAttribute("monaco-view-zone"),i.domNode.domNode.parentNode.removeChild(i.domNode.domNode),i.marginDomNode&&(i.marginDomNode.removeAttribute("monaco-visible-view-zone"),i.marginDomNode.removeAttribute("monaco-view-zone"),i.marginDomNode.domNode.parentNode.removeChild(i.marginDomNode.domNode)),this.setShouldRender(),!0}return!1}_layoutZone(e,t){if(this._zones.hasOwnProperty(t)){const i=this._zones[t],n=this._computeWhitespaceProps(i.delegate);return i.isInHiddenArea=n.isInHiddenArea,e.changeOneWhitespace(i.whitespaceId,n.afterViewLineNumber,n.heightInPx),this._safeCallOnComputedHeight(i.delegate,n.heightInPx),this.setShouldRender(),!0}return!1}shouldSuppressMouseDownOnViewZone(e){if(this._zones.hasOwnProperty(e)){const t=this._zones[e];return Boolean(t.delegate.suppressMouseDown)}return!1}_heightInPixels(e){return"number"===typeof e.heightInPx?e.heightInPx:"number"===typeof e.heightInLines?this._lineHeight*e.heightInLines:this._lineHeight}_minWidthInPixels(e){return"number"===typeof e.minWidthInPx?e.minWidthInPx:0}_safeCallOnComputedHeight(e,t){if("function"===typeof e.onComputedHeight)try{e.onComputedHeight(t)}catch(i){(0,h.dL)(i)}}_safeCallOnDomNodeTop(e,t){if("function"===typeof e.onDomNodeTop)try{e.onDomNodeTop(t)}catch(i){(0,h.dL)(i)}}prepareRender(e){}render(e){const t=e.viewportData.whitespaceViewportData,i={};let n=!1;for(const s of t)this._zones[s.id].isInHiddenArea||(i[s.id]=s,n=!0);const o=Object.keys(this._zones);for(let s=0,r=o.length;ss)continue;const e=t.startLineNumber===s?t.startColumn:i.minColumn,o=t.endLineNumber===s?t.endColumn:i.maxColumn;e=S.endOffset&&(y++,S=i&&i[y]),9!==n&&32!==n)continue;if(c&&!C&&k<=v)continue;if(d&&k>=w&&k<=v&&32===n){const e=k-1>=0?r.charCodeAt(k-1):0,t=k+1=0?r.charCodeAt(k-1):0;if(32===n&&32!==e&&9!==e)continue}if(i&&(!S||S.startOffset>k||S.endOffset<=k))continue;const o=e.visibleRangeForPosition(new G.L(t,k+1));o&&(s?(L=Math.max(L,o.left),b+=9===n?this._renderArrow(u,f,o.left):'')):b+=9===n?'
    ').concat(_?String.fromCharCode(65515):String.fromCharCode(8594),"
    "):'
    ').concat(String.fromCharCode(p),"
    "))}return s?(L=Math.round(L+f),'')+b+""):b}_renderArrow(e,t,i){const n=e/2,o=i,s={x:0,y:t/7/2},r={x:.8*t,y:s.y},a={x:r.x-.2*r.x,y:r.y+.2*r.x},l={x:a.x+.1*r.x,y:a.y+.1*r.x},h={x:l.x+.35*r.x,y:l.y-.35*r.x},d=[s,r,a,l,h,{x:h.x,y:-h.y},{x:l.x,y:-l.y},{x:a.x,y:-a.y},{x:r.x,y:-r.y},{x:s.x,y:-s.y}].map((e=>"".concat((o+e.x).toFixed(2)," ").concat((n+e.y).toFixed(2)))).join(" L ");return'')}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}class Ii{constructor(e){const t=e.options,i=t.get(50),n=t.get(38);"off"===n?(this.renderWhitespace="none",this.renderWithSVG=!1):"svg"===n?(this.renderWhitespace=t.get(99),this.renderWithSVG=!0):(this.renderWhitespace=t.get(99),this.renderWithSVG=!1),this.spaceWidth=i.spaceWidth,this.middotWidth=i.middotWidth,this.wsmiddotWidth=i.wsmiddotWidth,this.canUseHalfwidthRightwardsArrow=i.canUseHalfwidthRightwardsArrow,this.lineHeight=t.get(67),this.stopRenderingLineAfter=t.get(117)}equals(e){return this.renderWhitespace===e.renderWhitespace&&this.renderWithSVG===e.renderWithSVG&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineHeight===e.lineHeight&&this.stopRenderingLineAfter===e.stopRenderingLineAfter}}class Ti{constructor(e,t,i,n){this.selections=e,this.startLineNumber=0|t.startLineNumber,this.endLineNumber=0|t.endLineNumber,this.relativeVerticalOffset=t.relativeVerticalOffset,this.bigNumbersDelta=0|t.bigNumbersDelta,this.lineHeight=0|t.lineHeight,this.whitespaceViewportData=i,this._model=n,this.visibleRange=new Q.e(t.startLineNumber,this._model.getLineMinColumn(t.startLineNumber),t.endLineNumber,this._model.getLineMaxColumn(t.endLineNumber))}getViewLineRenderingData(e){return this._model.getViewportViewLineRenderingData(this.visibleRange,e)}getDecorationsInViewport(){return this._model.getDecorationsInViewport(this.visibleRange)}}class Mi{get type(){return this._theme.type}get value(){return this._theme}constructor(e){this._theme=e}update(e){this._theme=e}getColor(e){return this._theme.getColor(e)}}class Ai{constructor(e,t,i){this.configuration=e,this.theme=new Mi(t),this.viewModel=i,this.viewLayout=i.viewLayout}addEventHandler(e){this.viewModel.addViewEventHandler(e)}removeEventHandler(e){this.viewModel.removeViewEventHandler(e)}}var Ri=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Oi=function(e,t){return function(i,n){t(i,n,e)}};let Pi=class extends H{constructor(e,t,i,n,o,s,r){super(),this._instantiationService=r,this._shouldRecomputeGlyphMarginLanes=!1,this._selections=[new me.Y(1,1,1,1)],this._renderAnimationFrame=null;const a=new Ge(t,n,o,e);this._context=new Ai(t,i,n),this._context.addEventHandler(this),this._viewParts=[],this._textAreaHandler=this._instantiationService.createInstance(Ue,this._context,a,this._createTextAreaHandlerHelper()),this._viewParts.push(this._textAreaHandler),this._linesContent=(0,z.X)(document.createElement("div")),this._linesContent.setClassName("lines-content monaco-editor-background"),this._linesContent.setPosition("absolute"),this.domNode=(0,z.X)(document.createElement("div")),this.domNode.setClassName(this._getEditorClassName()),this.domNode.setAttribute("role","code"),this._overflowGuardContainer=(0,z.X)(document.createElement("div")),U.write(this._overflowGuardContainer,3),this._overflowGuardContainer.setClassName("overflow-guard"),this._scrollbar=new pt(this._context,this._linesContent,this.domNode,this._overflowGuardContainer),this._viewParts.push(this._scrollbar),this._viewLines=new Pt(this._context,this._linesContent),this._viewZones=new Ni(this._context),this._viewParts.push(this._viewZones);const l=new ci(this._context);this._viewParts.push(l);const h=new pi(this._context);this._viewParts.push(h);const d=new tt(this._context);this._viewParts.push(d),d.addDynamicOverlay(new gt(this._context)),d.addDynamicOverlay(new wi(this._context)),d.addDynamicOverlay(new Et(this._context)),d.addDynamicOverlay(new ft(this._context)),d.addDynamicOverlay(new Ei(this._context));const c=new it(this._context);this._viewParts.push(c),c.addDynamicOverlay(new mt(this._context)),c.addDynamicOverlay(new Bt(this._context)),c.addDynamicOverlay(new Ft(this._context)),c.addDynamicOverlay(new Te(this._context)),this._glyphMarginWidgets=new yt(this._context),this._viewParts.push(this._glyphMarginWidgets);const u=new Me(this._context);u.getDomNode().appendChild(this._viewZones.marginDomNode),u.getDomNode().appendChild(c.getDomNode()),u.getDomNode().appendChild(this._glyphMarginWidgets.domNode),this._viewParts.push(u),this._contentWidgets=new st(this._context,this.domNode),this._viewParts.push(this._contentWidgets),this._viewCursors=new ki(this._context),this._viewParts.push(this._viewCursors),this._overlayWidgets=new hi(this._context,this.domNode),this._viewParts.push(this._overlayWidgets);const g=new fi(this._context);this._viewParts.push(g);const m=new ot(this._context);this._viewParts.push(m);const f=new ri(this._context);if(this._viewParts.push(f),l){const e=this._scrollbar.getOverviewRulerLayoutInfo();e.parent.insertBefore(l.getDomNode(),e.insertBefore)}this._linesContent.appendChild(d.getDomNode()),this._linesContent.appendChild(g.domNode),this._linesContent.appendChild(this._viewZones.domNode),this._linesContent.appendChild(this._viewLines.getDomNode()),this._linesContent.appendChild(this._contentWidgets.domNode),this._linesContent.appendChild(this._viewCursors.getDomNode()),this._overflowGuardContainer.appendChild(u.getDomNode()),this._overflowGuardContainer.appendChild(this._scrollbar.getDomNode()),this._overflowGuardContainer.appendChild(h.getDomNode()),this._overflowGuardContainer.appendChild(this._textAreaHandler.textArea),this._overflowGuardContainer.appendChild(this._textAreaHandler.textAreaCover),this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode()),this._overflowGuardContainer.appendChild(f.getDomNode()),this._overflowGuardContainer.appendChild(m.domNode),this.domNode.appendChild(this._overflowGuardContainer),s?(s.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode),s.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode)):(this.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode),this.domNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode)),this._applyLayout(),this._pointerHandler=this._register(new Le(this._context,a,this._createPointerHandlerHelper()))}_computeGlyphMarginLanes(){const e=this._context.viewModel.model,t=this._context.viewModel.glyphLanes;let i=[],n=0;i=i.concat(e.getAllMarginDecorations().map((e=>{var t,i,o;const s=null!==(i=null===(t=e.options.glyphMargin)||void 0===t?void 0:t.position)&&void 0!==i?i:_t.U.Center;return n=Math.max(n,e.range.endLineNumber),{range:e.range,lane:s,persist:null===(o=e.options.glyphMargin)||void 0===o?void 0:o.persistLane}}))),i=i.concat(this._glyphMarginWidgets.getWidgets().map((t=>{const i=e.validateRange(t.preference.range);return n=Math.max(n,i.endLineNumber),{range:i,lane:t.preference.lane}}))),i.sort(((e,t)=>Q.e.compareRangesUsingStarts(e.range,t.range))),t.reset(n);for(const o of i)t.push(o.lane,o.range,o.persist);return t}_createPointerHandlerHelper(){return{viewDomNode:this.domNode.domNode,linesContentDomNode:this._linesContent.domNode,viewLinesDomNode:this._viewLines.getDomNode().domNode,focusTextArea:()=>{this.focus()},dispatchTextAreaEvent:e=>{this._textAreaHandler.textArea.domNode.dispatchEvent(e)},getLastRenderData:()=>{const e=this._viewCursors.getLastRenderData()||[],t=this._textAreaHandler.getLastRenderData();return new ee(e,t)},renderNow:()=>{this.render(!0,!1)},shouldSuppressMouseDownOnViewZone:e=>this._viewZones.shouldSuppressMouseDownOnViewZone(e),shouldSuppressMouseDownOnWidget:e=>this._contentWidgets.shouldSuppressMouseDownOnWidget(e),getPositionFromDOMInfo:(e,t)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getPositionFromDOMInfo(e,t)),visibleRangeForPosition:(e,t)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(new G.L(e,t))),getLineWidth:e=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getLineWidth(e))}}_createTextAreaHandlerHelper(){return{visibleRangeForPosition:e=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(e))}}_applyLayout(){const e=this._context.configuration.options.get(145);this.domNode.setWidth(e.width),this.domNode.setHeight(e.height),this._overflowGuardContainer.setWidth(e.width),this._overflowGuardContainer.setHeight(e.height),this._linesContent.setWidth(16777216),this._linesContent.setHeight(16777216)}_getEditorClassName(){const e=this._textAreaHandler.isFocused()?" focused":"";return this._context.configuration.options.get(142)+" "+(0,Ee.m6)(this._context.theme.type)+e}handleEvents(e){super.handleEvents(e),this._scheduleRender()}onConfigurationChanged(e){return this.domNode.setClassName(this._getEditorClassName()),this._applyLayout(),!1}onCursorStateChanged(e){return this._selections=e.selections,!1}onDecorationsChanged(e){return e.affectsGlyphMargin&&(this._shouldRecomputeGlyphMarginLanes=!0),!1}onFocusChanged(e){return this.domNode.setClassName(this._getEditorClassName()),!1}onThemeChanged(e){return this._context.theme.update(e.theme),this.domNode.setClassName(this._getEditorClassName()),!1}dispose(){null!==this._renderAnimationFrame&&(this._renderAnimationFrame.dispose(),this._renderAnimationFrame=null),this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove(),this._context.removeEventHandler(this),this._viewLines.dispose();for(const e of this._viewParts)e.dispose();super.dispose()}_scheduleRender(){if(this._store.isDisposed)throw new h.he;if(null===this._renderAnimationFrame){const e=this._createCoordinatedRendering();this._renderAnimationFrame=Bi.INSTANCE.scheduleCoordinatedRendering({window:l.Jj(this.domNode.domNode),prepareRenderText:()=>{if(this._store.isDisposed)throw new h.he;try{return e.prepareRenderText()}finally{this._renderAnimationFrame=null}},renderText:()=>{if(this._store.isDisposed)throw new h.he;return e.renderText()},prepareRender:(t,i)=>{if(this._store.isDisposed)throw new h.he;return e.prepareRender(t,i)},render:(t,i)=>{if(this._store.isDisposed)throw new h.he;return e.render(t,i)}})}}_flushAccumulatedAndRenderNow(){const e=this._createCoordinatedRendering();Fi((()=>e.prepareRenderText()));const t=Fi((()=>e.renderText()));if(t){const[i,n]=t;Fi((()=>e.prepareRender(i,n))),Fi((()=>e.render(i,n)))}}_getViewPartsToRender(){const e=[];let t=0;for(const i of this._viewParts)i.shouldRender()&&(e[t++]=i);return e}_createCoordinatedRendering(){return{prepareRenderText:()=>{if(this._shouldRecomputeGlyphMarginLanes){this._shouldRecomputeGlyphMarginLanes=!1;const e=this._computeGlyphMarginLanes();this._context.configuration.setGlyphMarginDecorationLaneCount(e.requiredLanes)}V.B.onRenderStart()},renderText:()=>{if(!this.domNode.domNode.isConnected)return null;let e=this._getViewPartsToRender();if(!this._viewLines.shouldRender()&&0===e.length)return null;const t=this._context.viewLayout.getLinesViewportData();this._context.viewModel.setViewport(t.startLineNumber,t.endLineNumber,t.centeredLineNumber);const i=new Ti(this._selections,t,this._context.viewLayout.getWhitespaceViewportData(),this._context.viewModel);return this._contentWidgets.shouldRender()&&this._contentWidgets.onBeforeRender(i),this._viewLines.shouldRender()&&(this._viewLines.renderText(i),this._viewLines.onDidRender(),e=this._getViewPartsToRender()),[e,new je.xh(this._context.viewLayout,i,this._viewLines)]},prepareRender:(e,t)=>{for(const i of e)i.prepareRender(t)},render:(e,t)=>{for(const i of e)i.render(t),i.onDidRender()}}}delegateVerticalScrollbarPointerDown(e){this._scrollbar.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){this._scrollbar.delegateScrollFromMouseWheelEvent(e)}restoreState(e){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:e.scrollTop,scrollLeft:e.scrollLeft},1),this._context.viewModel.visibleLinesStabilized()}getOffsetForColumn(e,t){const i=this._context.viewModel.model.validatePosition({lineNumber:e,column:t}),n=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(i);this._flushAccumulatedAndRenderNow();const o=this._viewLines.visibleRangeForPosition(new G.L(n.lineNumber,n.column));return o?o.left:-1}getTargetAtClientPoint(e,t){const i=this._pointerHandler.getTargetAtClientPoint(e,t);return i?nt.convertViewToModelMouseTarget(i,this._context.viewModel.coordinatesConverter):null}createOverviewRuler(e){return new mi(this._context,e)}change(e){this._viewZones.changeViewZones(e),this._scheduleRender()}render(e,t){if(t){this._viewLines.forceShouldRender();for(const e of this._viewParts)e.forceShouldRender()}e?this._flushAccumulatedAndRenderNow():this._scheduleRender()}writeScreenReaderContent(e){this._textAreaHandler.writeScreenReaderContent(e)}focus(){this._textAreaHandler.focusTextArea()}isFocused(){return this._textAreaHandler.isFocused()}setAriaOptions(e){this._textAreaHandler.setAriaOptions(e)}addContentWidget(e){this._contentWidgets.addWidget(e.widget),this.layoutContentWidget(e),this._scheduleRender()}layoutContentWidget(e){var t,i,n,o,s,r,a,l;this._contentWidgets.setWidgetPosition(e.widget,null!==(i=null===(t=e.position)||void 0===t?void 0:t.position)&&void 0!==i?i:null,null!==(o=null===(n=e.position)||void 0===n?void 0:n.secondaryPosition)&&void 0!==o?o:null,null!==(r=null===(s=e.position)||void 0===s?void 0:s.preference)&&void 0!==r?r:null,null!==(l=null===(a=e.position)||void 0===a?void 0:a.positionAffinity)&&void 0!==l?l:null),this._scheduleRender()}removeContentWidget(e){this._contentWidgets.removeWidget(e.widget),this._scheduleRender()}addOverlayWidget(e){this._overlayWidgets.addWidget(e.widget),this.layoutOverlayWidget(e),this._scheduleRender()}layoutOverlayWidget(e){const t=e.position?e.position.preference:null;this._overlayWidgets.setWidgetPosition(e.widget,t)&&this._scheduleRender()}removeOverlayWidget(e){this._overlayWidgets.removeWidget(e.widget),this._scheduleRender()}addGlyphMarginWidget(e){this._glyphMarginWidgets.addWidget(e.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}layoutGlyphMarginWidget(e){const t=e.position;this._glyphMarginWidgets.setWidgetPosition(e.widget,t)&&(this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender())}removeGlyphMarginWidget(e){this._glyphMarginWidgets.removeWidget(e.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}};function Fi(e){try{return e()}catch(t){return(0,h.dL)(t),null}}Pi=Ri([Oi(6,ze.TG)],Pi);class Bi{constructor(){this._coordinatedRenderings=[],this._animationFrameRunners=new Map}scheduleCoordinatedRendering(e){return this._coordinatedRenderings.push(e),this._scheduleRender(e.window),{dispose:()=>{const t=this._coordinatedRenderings.indexOf(e);if(-1!==t&&(this._coordinatedRenderings.splice(t,1),0===this._coordinatedRenderings.length)){for(const[e,t]of this._animationFrameRunners)t.dispose();this._animationFrameRunners.clear()}}}}_scheduleRender(e){if(!this._animationFrameRunners.has(e)){const t=()=>{this._animationFrameRunners.delete(e),this._onRenderScheduled()};this._animationFrameRunners.set(e,l.lI(e,t,100))}}_onRenderScheduled(){const e=this._coordinatedRenderings.slice(0);this._coordinatedRenderings=[];for(const i of e)Fi((()=>i.prepareRenderText()));const t=[];for(let i=0,n=e.length;in.renderText()))}for(let i=0,n=e.length;in.prepareRender(s,r)))}for(let i=0,n=e.length;in.render(s,r)))}}}Bi.INSTANCE=new Bi;var zi=i(39880);class Vi{constructor(e,t,i,n,o){this.injectionOffsets=e,this.injectionOptions=t,this.breakOffsets=i,this.breakOffsetsVisibleColumn=n,this.wrappedTextIndentLength=o}getOutputLineCount(){return this.breakOffsets.length}getMinOutputOffset(e){return e>0?this.wrappedTextIndentLength:0}getLineLength(e){const t=e>0?this.breakOffsets[e-1]:0;let i=this.breakOffsets[e]-t;return e>0&&(i+=this.wrappedTextIndentLength),i}getMaxOutputOffset(e){return this.getLineLength(e)}translateToInputOffset(e,t){e>0&&(t=Math.max(0,t-this.wrappedTextIndentLength));let i=0===e?t:this.breakOffsets[e-1]+t;if(null!==this.injectionOffsets)for(let n=0;nthis.injectionOffsets[n];n++)i1&&void 0!==arguments[1]?arguments[1]:2,i=e;if(null!==this.injectionOffsets)for(let n=0;n1&&void 0!==arguments[1]?arguments[1]:2,i=0,n=this.breakOffsets.length-1,o=0,s=0;for(;i<=n;){o=i+(n-i)/2|0;const r=this.breakOffsets[o];if(s=o>0?this.breakOffsets[o-1]:0,0===t)if(e<=s)n=o-1;else{if(!(e>r))break;i=o+1}else if(e=r))break;i=o+1}}let r=e-s;return o>0&&(r+=this.wrappedTextIndentLength),new Ki(o,r)}normalizeOutputPosition(e,t,i){if(null!==this.injectionOffsets){const n=this.outputPositionToOffsetInInputWithInjections(e,t),o=this.normalizeOffsetInInputWithInjectionsAroundInjections(n,i);if(o!==n)return this.offsetInInputWithInjectionsToOutputPosition(o,i)}if(0===i){if(e>0&&t===this.getMinOutputOffset(e))return new Ki(e-1,this.getMaxOutputOffset(e-1))}else if(1===i){if(e0&&(t=Math.max(0,t-this.wrappedTextIndentLength));return(e>0?this.breakOffsets[e-1]:0)+t}normalizeOffsetInInputWithInjectionsAroundInjections(e,t){const i=this.getInjectedTextAtOffset(e);if(!i)return e;if(2===t){if(e===i.offsetInInputWithInjections+i.length&&Wi(this.injectionOptions[i.injectedTextIndex].cursorStops))return i.offsetInInputWithInjections+i.length;{let e=i.offsetInInputWithInjections;if(Hi(this.injectionOptions[i.injectedTextIndex].cursorStops))return e;let t=i.injectedTextIndex-1;for(;t>=0&&this.injectionOffsets[t]===this.injectionOffsets[i.injectedTextIndex]&&!Wi(this.injectionOptions[t].cursorStops)&&(e-=this.injectionOptions[t].content.length,!Hi(this.injectionOptions[t].cursorStops));)t--;return e}}if(1===t||4===t){let e=i.offsetInInputWithInjections+i.length,t=i.injectedTextIndex;for(;t+1=0&&this.injectionOffsets[t-1]===this.injectionOffsets[t];)e-=this.injectionOptions[t-1].content.length,t--;return e}(0,zi.vE)(t)}getInjectedText(e,t){const i=this.outputPositionToOffsetInInputWithInjections(e,t),n=this.getInjectedTextAtOffset(i);return n?{options:this.injectionOptions[n.injectedTextIndex]}:null}getInjectedTextAtOffset(e){const t=this.injectionOffsets,i=this.injectionOptions;if(null!==t){let n=0;for(let o=0;oe)break;if(e<=a)return{injectedTextIndex:o,offsetInInputWithInjections:r,length:s};n+=s}}}}function Wi(e){return null===e||void 0===e||(e===_t.RM.Right||e===_t.RM.Both)}function Hi(e){return null===e||void 0===e||(e===_t.RM.Left||e===_t.RM.Both)}class Ki{constructor(e,t){this.outputLineIndex=e,this.outputOffset=t}toString(){return"".concat(this.outputLineIndex,":").concat(this.outputOffset)}toPosition(e){return new G.L(e+this.outputLineIndex,this.outputOffset+1)}}var Ui=i(65497);const ji=(0,Qe.Z)("domLineBreaksComputer",{createHTML:e=>e});class qi{static create(e){return new qi(new WeakRef(e))}constructor(e){this.targetWindow=e}createLineBreaksComputer(e,t,i,n,o){const s=[],r=[];return{addRequest:(e,t,i)=>{s.push(e),r.push(t)},finalize:()=>function(e,t,i,n,o,s,r,a){var l;function h(e){const i=a[e];if(i){const n=Ui.gk.applyInjectedText(t[e],i),o=i.map((e=>e.options)),s=i.map((e=>e.column-1));return new Vi(s,o,[n.length],[],0)}return null}if(-1===o){const e=[];for(let i=0,n=t.length;id?(o=0,r=0):l=d-t}const h=e.substr(o),c=Gi(h,r,n,l,p,m);_[g]=o,v[g]=r,b[g]=h,C[g]=c[0],w[g]=c[1]}const y=p.build(),S=null!==(l=null===ji||void 0===ji?void 0:ji.createHTML(y))&&void 0!==l?l:y;f.innerHTML=S,f.style.position="absolute",f.style.top="10000","keepAll"===r?(f.style.wordBreak="keep-all",f.style.overflowWrap="anywhere"):(f.style.wordBreak="inherit",f.style.overflowWrap="break-word");e.document.body.appendChild(f);const L=document.createRange(),k=Array.prototype.slice.call(f.children,0),D=[];for(let g=0;ge.options)),r=l.map((e=>e.column-1))):(s=null,r=null),D[g]=new Vi(r,s,e,o,i)}return e.document.body.removeChild(f),D}((0,Dt.cW)(this.targetWindow.deref()),s,e,t,i,n,o,r)}}}function Gi(e,t,i,n,o,s){if(0!==s){const e=String(s);o.appendString('
    ');const r=e.length;let a=t,l=0;const h=[],d=[];let c=0");for(let u=0;u"),h[u]=l,d[u]=a;const t=c;c=u+1"),h[e.length]=l,d[e.length]=a,o.appendString("
    "),[h,d]}function Qi(e,t,i,n){if(i.length<=1)return null;const o=Array.prototype.slice.call(t.children,0),s=[];try{Zi(e,o,n,0,null,i.length-1,null,s)}catch(r){return console.log(r),null}return 0===s.length?null:(s.push(i.length),s)}function Zi(e,t,i,n,o,s,r,a){if(n===s)return;if(o=o||Yi(e,t,i[n],i[n+1]),r=r||Yi(e,t,i[s],i[s+1]),Math.abs(o[0].top-r[0].top)<=.1)return;if(n+1===s)return void a.push(s);const l=n+(s-n)/2|0,h=Yi(e,t,i[l],i[l+1]);Zi(e,t,i,n,o,l,h,a),Zi(e,t,i,l,h,s,r,a)}function Yi(e,t,i,n){return e.setStart(t[i/16384|0].firstChild,i%16384),e.setEnd(t[n/16384|0].firstChild,n%16384),e.getClientRects()}class $i extends c.JT{constructor(){super(),this._editor=null,this._instantiationService=null,this._instances=this._register(new c.b2),this._pending=new Map,this._finishedInstantiation=[],this._finishedInstantiation[0]=!1,this._finishedInstantiation[1]=!1,this._finishedInstantiation[2]=!1,this._finishedInstantiation[3]=!1}initialize(e,t,i){this._editor=e,this._instantiationService=i;for(const n of t)this._pending.has(n.id)?(0,h.dL)(new Error("Cannot have two contributions with the same id ".concat(n.id))):this._pending.set(n.id,n);this._instantiateSome(0),this._register((0,l.se)((0,l.Jj)(this._editor.getDomNode()),(()=>{this._instantiateSome(1)}))),this._register((0,l.se)((0,l.Jj)(this._editor.getDomNode()),(()=>{this._instantiateSome(2)}))),this._register((0,l.se)((0,l.Jj)(this._editor.getDomNode()),(()=>{this._instantiateSome(3)}),5e3))}saveViewState(){const e={};for(const[t,i]of this._instances)"function"===typeof i.saveViewState&&(e[t]=i.saveViewState());return e}restoreViewState(e){for(const[t,i]of this._instances)"function"===typeof i.restoreViewState&&i.restoreViewState(e[t])}get(e){return this._instantiateById(e),this._instances.get(e)||null}onBeforeInteractionEvent(){this._instantiateSome(2)}onAfterModelAttached(){var e;return(0,l.se)((0,l.Jj)(null===(e=this._editor)||void 0===e?void 0:e.getDomNode()),(()=>{this._instantiateSome(1)}),50)}_instantiateSome(e){if(this._finishedInstantiation[e])return;this._finishedInstantiation[e]=!0;const t=this._findPendingContributionsByInstantiation(e);for(const i of t)this._instantiateById(i.id)}_findPendingContributionsByInstantiation(e){const t=[];for(const[,i]of this._pending)i.instantiation===e&&t.push(i);return t}_instantiateById(e){const t=this._pending.get(e);if(t){if(this._pending.delete(e),!this._instantiationService||!this._editor)throw new Error("Cannot instantiate contributions before being initialized!");try{const e=this._instantiationService.createInstance(t.ctor,this._editor);this._instances.set(t.id,e),"function"===typeof e.restoreViewState&&0!==t.instantiation&&console.warn("Editor contribution '".concat(t.id,"' should be eager instantiated because it uses saveViewState / restoreViewState."))}catch(i){(0,h.dL)(i)}}}}var Ji=i(78626),Xi=i(45754),en=i(7906),tn=i(54081),nn=i(40801),on=i(22659),sn=i(89752),rn=i(89505);class an{static create(e){return new an(e.get(134),e.get(133))}constructor(e,t){this.classifier=new ln(e,t)}createLineBreaksComputer(e,t,i,n,o){const s=[],r=[],a=[];return{addRequest:(e,t,i)=>{s.push(e),r.push(t),a.push(i)},finalize:()=>{const l=e.typicalFullwidthCharacterWidth/e.typicalHalfwidthCharacterWidth,h=[];for(let e=0,d=s.length;e=0&&e<256?this._asciiMap[e]:e>=12352&&e<=12543||e>=13312&&e<=19903||e>=19968&&e<=40959?3:this._map.get(e)||this._defaultValue}}let hn=[],dn=[];function cn(e,t,i,n,o,s,r,a){if(-1===o)return null;const l=i.length;if(l<=1)return null;const h="keepAll"===a,d=t.breakOffsets,c=t.breakOffsetsVisibleColumn,u=pn(i,n,o,s,r),g=o-u,m=hn,f=dn;let p=0,_=0,v=0,b=o;const C=d.length;let w=0;if(w>=0){let e=Math.abs(c[w]-b);for(;w+1=e)break;e=t,w++}}for(;wt&&(t=_,o=v);let r=0,a=0,u=0,y=0;if(o<=b){let v=o,C=0===t?0:i.charCodeAt(t-1),w=0===t?0:e.get(C),S=!0;for(let o=t;o_&&fn(C,w,l,d,h)&&(r=t,a=v),v+=c,v>b){t>_?(u=t,y=v-c):(u=o+1,y=v),v-a>g&&(r=0),S=!1;break}C=l,w=d}if(S){p>0&&(m[p]=d[d.length-1],f[p]=c[d.length-1],p++);break}}if(0===r){let l=o,d=i.charCodeAt(t),c=e.get(d),m=!1;for(let n=t-1;n>=_;n--){const t=n+1,o=i.charCodeAt(n);if(9===o){m=!0;break}let f,p;if(De.YK(o)?(n--,f=0,p=2):(f=e.get(o),p=De.K7(o)?s:1),l<=b){if(0===u&&(u=t,y=l),l<=b-g)break;if(fn(o,f,d,c,h)){r=t,a=l;break}}l-=p,d=o,c=f}if(0!==r){const e=g-(y-a);if(e<=n){const t=i.charCodeAt(u);let o;o=De.ZG(t)?2:gn(t,y,n,s),e-o<0&&(r=0)}}if(m){w--;continue}}if(0===r&&(r=u,a=y),r<=_){const e=i.charCodeAt(_);De.ZG(e)?(r=_+2,a=v+2):(r=_+1,a=v+gn(e,v,n,s))}for(_=r,m[p]=r,v=a,f[p]=a,p++,b=a+g;w<0||w=S)break;S=e,w++}}return 0===p?null:(m.length=p,f.length=p,hn=t.breakOffsets,dn=t.breakOffsetsVisibleColumn,t.breakOffsets=m,t.breakOffsetsVisibleColumn=f,t.wrappedTextIndentLength=u,t)}function un(e,t,i,n,o,s,r,a){const l=Ui.gk.applyInjectedText(t,i);let h,d;if(i&&i.length>0?(h=i.map((e=>e.options)),d=i.map((e=>e.column-1))):(h=null,d=null),-1===o)return h?new Vi(d,h,[l.length],[],0):null;const c=l.length;if(c<=1)return h?new Vi(d,h,[l.length],[],0):null;const u="keepAll"===a,g=pn(l,n,o,s,r),m=o-g,f=[],p=[];let _=0,v=0,b=0,C=o,w=l.charCodeAt(0),y=e.get(w),S=gn(w,0,n,s),L=1;De.ZG(w)&&(S+=1,w=l.charCodeAt(1),y=e.get(w),L++);for(let k=L;kC&&((0===v||S-b>m)&&(v=t,b=S-r),f[_]=v,p[_]=b,_++,C=b+m,v=0),w=i,y=o}return 0!==_||i&&0!==i.length?(f[_]=c,p[_]=S,new Vi(d,h,f,p,g)):null}function gn(e,t,i,n){return 9===e?i-t%i:De.K7(e)||e<32?n:1}function mn(e,t){return t-e%t}function fn(e,t,i,n,o){return 32!==i&&(2===t&&2!==n||1!==t&&1===n||!o&&3===t&&2!==n||!o&&3===n&&1!==t)}function pn(e,t,i,n,o){let s=0;if(0!==o){const r=De.LC(e);if(-1!==r){for(let i=0;ii&&(s=0)}}return s}var _n=i(52910),vn=i(68170);class bn{constructor(e){this._selTrackedRange=null,this._trackSelection=!0,this._setState(e,new vn.rS(new Q.e(1,1,1,1),0,0,new G.L(1,1),0),new vn.rS(new Q.e(1,1,1,1),0,0,new G.L(1,1),0))}dispose(e){this._removeTrackedRange(e)}startTrackingSelection(e){this._trackSelection=!0,this._updateTrackedRange(e)}stopTrackingSelection(e){this._trackSelection=!1,this._removeTrackedRange(e)}_updateTrackedRange(e){this._trackSelection&&(this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,this.modelState.selection,0))}_removeTrackedRange(e){this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,null,0)}asCursorState(){return new vn.Vi(this.modelState,this.viewState)}readSelectionFromMarkers(e){const t=e.model._getTrackedRange(this._selTrackedRange);return this.modelState.selection.isEmpty()&&!t.isEmpty()?me.Y.fromRange(t.collapseToEnd(),this.modelState.selection.getDirection()):me.Y.fromRange(t,this.modelState.selection.getDirection())}ensureValidState(e){this._setState(e,this.modelState,this.viewState)}setState(e,t,i){this._setState(e,t,i)}static _validatePositionWithCache(e,t,i,n){return t.equals(i)?n:e.normalizePosition(t,2)}static _validateViewState(e,t){const i=t.position,n=t.selectionStart.getStartPosition(),o=t.selectionStart.getEndPosition(),s=e.normalizePosition(i,2),r=this._validatePositionWithCache(e,n,i,s),a=this._validatePositionWithCache(e,o,n,r);return i.equals(s)&&n.equals(r)&&o.equals(a)?t:new vn.rS(Q.e.fromPositions(r,a),t.selectionStartKind,t.selectionStartLeftoverVisibleColumns+n.column-r.column,s,t.leftoverVisibleColumns+i.column-s.column)}_setState(e,t,i){if(i&&(i=bn._validateViewState(e.viewModel,i)),t){const i=e.model.validateRange(t.selectionStart),n=t.selectionStart.equalsRange(i)?t.selectionStartLeftoverVisibleColumns:0,o=e.model.validatePosition(t.position),s=t.position.equals(o)?t.leftoverVisibleColumns:0;t=new vn.rS(i,t.selectionStartKind,n,o,s)}else{if(!i)return;const n=e.model.validateRange(e.coordinatesConverter.convertViewRangeToModelRange(i.selectionStart)),o=e.model.validatePosition(e.coordinatesConverter.convertViewPositionToModelPosition(i.position));t=new vn.rS(n,i.selectionStartKind,i.selectionStartLeftoverVisibleColumns,o,i.leftoverVisibleColumns)}if(i){const n=e.coordinatesConverter.validateViewRange(i.selectionStart,t.selectionStart),o=e.coordinatesConverter.validateViewPosition(i.position,t.position);i=new vn.rS(n,t.selectionStartKind,t.selectionStartLeftoverVisibleColumns,o,t.leftoverVisibleColumns)}else{const n=e.coordinatesConverter.convertModelPositionToViewPosition(new G.L(t.selectionStart.startLineNumber,t.selectionStart.startColumn)),o=e.coordinatesConverter.convertModelPositionToViewPosition(new G.L(t.selectionStart.endLineNumber,t.selectionStart.endColumn)),s=new Q.e(n.lineNumber,n.column,o.lineNumber,o.column),r=e.coordinatesConverter.convertModelPositionToViewPosition(t.position);i=new vn.rS(s,t.selectionStartKind,t.selectionStartLeftoverVisibleColumns,r,t.leftoverVisibleColumns)}this.modelState=t,this.viewState=i,this._updateTrackedRange(e)}}class Cn{constructor(e){this.context=e,this.cursors=[new bn(e)],this.lastAddedCursorIndex=0}dispose(){for(const e of this.cursors)e.dispose(this.context)}startTrackingSelections(){for(const e of this.cursors)e.startTrackingSelection(this.context)}stopTrackingSelections(){for(const e of this.cursors)e.stopTrackingSelection(this.context)}updateContext(e){this.context=e}ensureValidState(){for(const e of this.cursors)e.ensureValidState(this.context)}readSelectionFromMarkers(){return this.cursors.map((e=>e.readSelectionFromMarkers(this.context)))}getAll(){return this.cursors.map((e=>e.asCursorState()))}getViewPositions(){return this.cursors.map((e=>e.viewState.position))}getTopMostViewPosition(){return(0,_n.Ph)(this.cursors,(0,f.tT)((e=>e.viewState.position),G.L.compare)).viewState.position}getBottomMostViewPosition(){return(0,_n.jV)(this.cursors,(0,f.tT)((e=>e.viewState.position),G.L.compare)).viewState.position}getSelections(){return this.cursors.map((e=>e.modelState.selection))}getViewSelections(){return this.cursors.map((e=>e.viewState.selection))}setSelections(e){this.setStates(vn.Vi.fromModelSelections(e))}getPrimaryCursor(){return this.cursors[0].asCursorState()}setStates(e){null!==e&&(this.cursors[0].setState(this.context,e[0].modelState,e[0].viewState),this._setSecondaryStates(e.slice(1)))}_setSecondaryStates(e){const t=this.cursors.length-1,i=e.length;if(ti){const e=t-i;for(let t=0;t=e+1&&this.lastAddedCursorIndex--,this.cursors[e+1].dispose(this.context),this.cursors.splice(e+1,1)}normalize(){if(1===this.cursors.length)return;const e=this.cursors.slice(0),t=[];for(let i=0,n=e.length;ie.selection),Q.e.compareRangesUsingStarts));for(let i=0;ia&&e.index--;e.splice(a,1),t.splice(r,1),this._removeSecondaryCursor(a-1),i--}}}}class wn{constructor(e,t,i,n){this._cursorContextBrand=void 0,this.model=e,this.viewModel=t,this.coordinatesConverter=i,this.cursorConfig=n}}var yn=i(51521),Sn=i(67016);class Ln{constructor(){this.type=0}}class kn{constructor(){this.type=1}}class Dn{constructor(e){this.type=2,this._source=e}hasChanged(e){return this._source.hasChanged(e)}}class Nn{constructor(e,t,i){this.selections=e,this.modelSelections=t,this.reason=i,this.type=3}}class xn{constructor(e){this.type=4,e?(this.affectsMinimap=e.affectsMinimap,this.affectsOverviewRuler=e.affectsOverviewRuler,this.affectsGlyphMargin=e.affectsGlyphMargin,this.affectsLineNumber=e.affectsLineNumber):(this.affectsMinimap=!0,this.affectsOverviewRuler=!0,this.affectsGlyphMargin=!0,this.affectsLineNumber=!0)}}class En{constructor(){this.type=5}}class In{constructor(e){this.type=6,this.isFocused=e}}class Tn{constructor(){this.type=7}}class Mn{constructor(){this.type=8}}class An{constructor(e,t){this.fromLineNumber=e,this.count=t,this.type=9}}class Rn{constructor(e,t){this.type=10,this.fromLineNumber=e,this.toLineNumber=t}}class On{constructor(e,t){this.type=11,this.fromLineNumber=e,this.toLineNumber=t}}class Pn{constructor(e,t,i,n,o,s,r){this.source=e,this.minimalReveal=t,this.range=i,this.selections=n,this.verticalType=o,this.revealHorizontal=s,this.scrollType=r,this.type=12}}class Fn{constructor(e){this.type=13,this.scrollWidth=e.scrollWidth,this.scrollLeft=e.scrollLeft,this.scrollHeight=e.scrollHeight,this.scrollTop=e.scrollTop,this.scrollWidthChanged=e.scrollWidthChanged,this.scrollLeftChanged=e.scrollLeftChanged,this.scrollHeightChanged=e.scrollHeightChanged,this.scrollTopChanged=e.scrollTopChanged}}class Bn{constructor(e){this.theme=e,this.type=14}}class zn{constructor(e){this.type=15,this.ranges=e}}class Vn{constructor(){this.type=16}}class Wn{constructor(){this.type=17}}class Hn extends c.JT{constructor(){super(),this._onEvent=this._register(new d.Q5),this.onEvent=this._onEvent.event,this._eventHandlers=[],this._viewEventQueue=null,this._isConsumingViewEventQueue=!1,this._collector=null,this._collectorCnt=0,this._outgoingEvents=[]}emitOutgoingEvent(e){this._addOutgoingEvent(e),this._emitOutgoingEvents()}_addOutgoingEvent(e){for(let t=0,i=this._outgoingEvents.length;t0;){if(this._collector||this._isConsumingViewEventQueue)return;const e=this._outgoingEvents.shift();e.isNoOp()||this._onEvent.fire(e)}}addViewEventHandler(e){for(let t=0,i=this._eventHandlers.length;t0&&this._emitMany(t)}this._emitOutgoingEvents()}emitSingleViewEvent(e){try{this.beginEmitViewEvents().emitViewEvent(e)}finally{this.endEmitViewEvents()}}_emitMany(e){this._viewEventQueue?this._viewEventQueue=this._viewEventQueue.concat(e):this._viewEventQueue=e,this._isConsumingViewEventQueue||this._consumeViewEventQueue()}_consumeViewEventQueue(){try{this._isConsumingViewEventQueue=!0,this._doConsumeQueue()}finally{this._isConsumingViewEventQueue=!1}}_doConsumeQueue(){for(;this._viewEventQueue;){const e=this._viewEventQueue;this._viewEventQueue=null;const t=this._eventHandlers.slice(0);for(const i of t)i.handleEvents(e)}}}class Kn{constructor(){this.viewEvents=[],this.outgoingEvents=[]}emitViewEvent(e){this.viewEvents.push(e)}emitOutgoingEvent(e){this.outgoingEvents.push(e)}}class Un{constructor(e,t,i,n){this.kind=0,this._oldContentWidth=e,this._oldContentHeight=t,this.contentWidth=i,this.contentHeight=n,this.contentWidthChanged=this._oldContentWidth!==this.contentWidth,this.contentHeightChanged=this._oldContentHeight!==this.contentHeight}isNoOp(){return!this.contentWidthChanged&&!this.contentHeightChanged}attemptToMerge(e){return e.kind!==this.kind?null:new Un(this._oldContentWidth,this._oldContentHeight,e.contentWidth,e.contentHeight)}}class jn{constructor(e,t){this.kind=1,this.oldHasFocus=e,this.hasFocus=t}isNoOp(){return this.oldHasFocus===this.hasFocus}attemptToMerge(e){return e.kind!==this.kind?null:new jn(this.oldHasFocus,e.hasFocus)}}class qn{constructor(e,t,i,n,o,s,r,a){this.kind=2,this._oldScrollWidth=e,this._oldScrollLeft=t,this._oldScrollHeight=i,this._oldScrollTop=n,this.scrollWidth=o,this.scrollLeft=s,this.scrollHeight=r,this.scrollTop=a,this.scrollWidthChanged=this._oldScrollWidth!==this.scrollWidth,this.scrollLeftChanged=this._oldScrollLeft!==this.scrollLeft,this.scrollHeightChanged=this._oldScrollHeight!==this.scrollHeight,this.scrollTopChanged=this._oldScrollTop!==this.scrollTop}isNoOp(){return!this.scrollWidthChanged&&!this.scrollLeftChanged&&!this.scrollHeightChanged&&!this.scrollTopChanged}attemptToMerge(e){return e.kind!==this.kind?null:new qn(this._oldScrollWidth,this._oldScrollLeft,this._oldScrollHeight,this._oldScrollTop,e.scrollWidth,e.scrollLeft,e.scrollHeight,e.scrollTop)}}class Gn{constructor(){this.kind=3}isNoOp(){return!1}attemptToMerge(e){return e.kind!==this.kind?null:this}}class Qn{constructor(){this.kind=4}isNoOp(){return!1}attemptToMerge(e){return e.kind!==this.kind?null:this}}class Zn{constructor(e,t,i,n,o,s,r){this.kind=6,this.oldSelections=e,this.selections=t,this.oldModelVersionId=i,this.modelVersionId=n,this.source=o,this.reason=s,this.reachedMaxCursorCount=r}static _selectionsAreEqual(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;const i=e.length;if(i!==t.length)return!1;for(let n=0;n0){const e=this._cursors.getSelections();for(let t=0;ts&&(n=n.slice(0,s),o=!0);const r=oo.from(this._model,this);return this._cursors.setStates(n),this._cursors.normalize(),this._columnSelectData=null,this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,t,i,r,o)}setCursorColumnSelectData(e){this._columnSelectData=e}revealAll(e,t,i,n,o,s){const r=this._cursors.getViewPositions();let a=null,l=null;r.length>1?l=this._cursors.getViewSelections():a=Q.e.fromPositions(r[0],r[0]),e.emitViewEvent(new Pn(t,i,a,l,n,o,s))}revealPrimary(e,t,i,n,o,s){const r=[this._cursors.getPrimaryCursor().viewState.selection];e.emitViewEvent(new Pn(t,i,null,r,n,o,s))}saveState(){const e=[],t=this._cursors.getSelections();for(let i=0,n=t.length;i0){const t=vn.Vi.fromModelSelections(i.resultingSelection);this.setStates(e,"modelChange",i.isUndoing?5:i.isRedoing?6:2,t)&&this.revealAll(e,"modelChange",!1,0,!0,0)}else{const t=this._cursors.readSelectionFromMarkers();this.setStates(e,"modelChange",2,vn.Vi.fromModelSelections(t))}}}getSelection(){return this._cursors.getPrimaryCursor().modelState.selection}getTopMostViewPosition(){return this._cursors.getTopMostViewPosition()}getBottomMostViewPosition(){return this._cursors.getBottomMostViewPosition()}getCursorColumnSelectData(){if(this._columnSelectData)return this._columnSelectData;const e=this._cursors.getPrimaryCursor(),t=e.viewState.selectionStart.getStartPosition(),i=e.viewState.position;return{isReal:!1,fromViewLineNumber:t.lineNumber,fromViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,t),toViewLineNumber:i.lineNumber,toViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,i)}}getSelections(){return this._cursors.getSelections()}setSelections(e,t,i,n){this.setStates(e,t,n,vn.Vi.fromModelSelections(i))}getPrevEditOperationType(){return this._prevEditOperationType}setPrevEditOperationType(e){this._prevEditOperationType=e}_pushAutoClosedAction(e,t){const i=[],n=[];for(let r=0,a=e.length;r0&&this._pushAutoClosedAction(i,n),this._prevEditOperationType=e.type}e.shouldPushStackElementAfter&&this._model.pushStackElement()}_interpretCommandResult(e){e&&0!==e.length||(e=this._cursors.readSelectionFromMarkers()),this._columnSelectData=null,this._cursors.setSelections(e),this._cursors.normalize()}_emitStateChangedIfNecessary(e,t,i,n,o){const s=oo.from(this._model,this);if(s.equals(n))return!1;const r=this._cursors.getSelections(),a=this._cursors.getViewSelections();if(e.emitViewEvent(new Nn(a,r,i)),!n||n.cursorState.length!==s.cursorState.length||s.cursorState.some(((e,t)=>!e.modelState.equals(n.cursorState[t].modelState)))){const a=n?n.cursorState.map((e=>e.modelState.selection)):null,l=n?n.modelVersionId:0;e.emitOutgoingEvent(new Zn(a,r,l,s.modelVersionId,t||"keyboard",i,o))}return!0}_findAutoClosingPairs(e){if(!e.length)return null;const t=[];for(let i=0,n=e.length;i=0)return null;const o=n.text.match(/([)\]}>'"`])([^)\]}>'"`]*)$/);if(!o)return null;const s=o[1],r=this.context.cursorConfig.autoClosingPairs.autoClosingPairsCloseSingleChar.get(s);if(!r||1!==r.length)return null;const a=r[0].open,l=n.text.length-o[2].length-1,h=n.text.lastIndexOf(a,l-1);if(-1===h)return null;t.push([h,l])}return t}executeEdits(e,t,i,n){let o=null;"snippet"===t&&(o=this._findAutoClosingPairs(i)),o&&(i[0]._isTracked=!0);const s=[],r=[],a=this._model.pushEditOperations(this.getSelections(),i,(e=>{if(o)for(let i=0,n=o.length;i0&&this._pushAutoClosedAction(s,r)}_executeEdit(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(this.context.cursorConfig.readOnly)return;const o=oo.from(this._model,this);this._cursors.stopTrackingSelections(),this._isHandling=!0;try{this._cursors.ensureValidState(),e()}catch(s){(0,h.dL)(s)}this._isHandling=!1,this._cursors.startTrackingSelections(),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(t,i,n,o,!1)&&this.revealAll(t,i,!1,0,!0,0)}getAutoClosedCharacters(){return so.getAllAutoClosedCharacters(this._autoClosedActions)}startComposition(e){this._compositionState=new lo(this._model,this.getSelections())}endComposition(e,t){const i=this._compositionState?this._compositionState.deduceOutcome(this._model,this.getSelections()):null;this._compositionState=null,this._executeEdit((()=>{"keyboard"===t&&this._executeEditOperation(Sn.u6.compositionEndWithInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,i,this.getSelections(),this.getAutoClosedCharacters()))}),e,t)}type(e,t,i){this._executeEdit((()=>{if("keyboard"===i){const e=t.length;let i=0;for(;i{this._executeEditOperation(Sn.u6.compositionType(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),t,i,n,o))}),e,s);else if(0!==o){const t=this.getSelections().map((e=>{const t=e.getPosition();return new me.Y(t.lineNumber,t.column+o,t.lineNumber,t.column+o)}));this.setSelections(e,s,t,0)}}paste(e,t,i,n,o){this._executeEdit((()=>{this._executeEditOperation(Sn.u6.paste(this.context.cursorConfig,this._model,this.getSelections(),t,i,n||[]))}),e,o,4)}cut(e,t){this._executeEdit((()=>{this._executeEditOperation(yn.A.cut(this.context.cursorConfig,this._model,this.getSelections()))}),e,t)}executeCommand(e,t,i){this._executeEdit((()=>{this._cursors.killSecondaryCursors(),this._executeEditOperation(new vn.Tp(0,[t],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))}),e,i)}executeCommands(e,t,i){this._executeEdit((()=>{this._executeEditOperation(new vn.Tp(0,t,{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))}),e,i)}}class oo{static from(e,t){return new oo(e.getVersionId(),t.getCursorStates())}constructor(e,t){this.modelVersionId=e,this.cursorState=t}equals(e){if(!e)return!1;if(this.modelVersionId!==e.modelVersionId)return!1;if(this.cursorState.length!==e.cursorState.length)return!1;for(let t=0,i=this.cursorState.length;t=t.length)return!1;if(!t[i].strictContainsRange(e[i]))return!1}return!0}}class ro{static executeCommands(e,t,i){const n={model:e,selectionsBefore:t,trackedRanges:[],trackedRangesDirection:[]},o=this._innerExecuteCommands(n,i);for(let s=0,r=n.trackedRanges.length;s0&&(s[0]._isTracked=!0);let r=e.model.pushEditOperations(e.selectionsBefore,s,(i=>{const n=[];for(let t=0;te.identifier.minor-t.identifier.minor,s=[];for(let r=0;r0?(n[r].sort(o),s[r]=t[r].computeCursorState(e.model,{getInverseEditOperations:()=>n[r],getTrackedSelection:t=>{const i=parseInt(t,10),n=e.model._getTrackedRange(e.trackedRanges[i]);return 0===e.trackedRangesDirection[i]?new me.Y(n.startLineNumber,n.startColumn,n.endLineNumber,n.endColumn):new me.Y(n.endLineNumber,n.endColumn,n.startLineNumber,n.startColumn)}})):s[r]=e.selectionsBefore[r];return s}));r||(r=e.selectionsBefore);const a=[];for(const l in o)o.hasOwnProperty(l)&&a.push(parseInt(l,10));a.sort(((e,t)=>t-e));for(const l of a)r.splice(l,1);return r}static _arrayIsEmpty(e){for(let t=0,i=e.length;t2&&void 0!==arguments[2]&&arguments[2];Q.e.isEmpty(e)&&""===s||n.push({identifier:{major:t,minor:o++},range:e,text:s,forceMoveMarkers:r,isAutoWhitespaceEdit:i.insertsAutoWhitespace})};let r=!1;const a={addEditOperation:s,addTrackedEditOperation:(e,t,i)=>{r=!0,s(e,t,i)},trackSelection:(t,i)=>{const n=me.Y.liftSelection(t);let o;if(n.isEmpty())if("boolean"===typeof i)o=i?2:3;else{const t=e.model.getLineMaxColumn(n.startLineNumber);o=n.startColumn===t?2:3}else o=1;const s=e.trackedRanges.length,r=e.model._setTrackedRange(null,n,o);return e.trackedRanges[s]=r,e.trackedRangesDirection[s]=n.getDirection(),s.toString()}};try{i.getEditOperations(e.model,a)}catch(l){return(0,h.dL)(l),{operations:[],hadTrackedEditOperation:!1}}return{operations:n,hadTrackedEditOperation:r}}static _getLoserCursorMap(e){(e=e.slice(0)).sort(((e,t)=>-Q.e.compareRangesUsingEnds(e.range,t.range)));const t={};for(let i=1;io.identifier.major?n.identifier.major:o.identifier.major,t[s.toString()]=!0;for(let t=0;t0&&i--}}return t}}class ao{constructor(e,t,i){this.text=e,this.startSelection=t,this.endSelection=i}}class lo{static _capture(e,t){const i=[];for(const n of t){if(n.startLineNumber!==n.endLineNumber)return null;i.push(new ao(e.getLineContent(n.startLineNumber),n.startColumn-1,n.endColumn-1))}return i}constructor(e,t){this._original=lo._capture(e,t)}deduceOutcome(e,t){if(!this._original)return null;const i=lo._capture(e,t);if(!i)return null;if(this._original.length!==i.length)return null;const n=[];for(let o=0,s=this._original.length;o>>1;t===e[s].afterLineNumber?i{t=!0,e|=0,i|=0,n|=0,o|=0;const s=this._instanceId+ ++this._lastWhitespaceId;return this._pendingChanges.insert(new mo(s,e,i,n,o)),s},changeOneWhitespace:(e,i,n)=>{t=!0,i|=0,n|=0,this._pendingChanges.change({id:e,newAfterLineNumber:i,newHeight:n})},removeWhitespace:e=>{t=!0,this._pendingChanges.remove({id:e})}})}finally{this._pendingChanges.commit(this)}return t}_commitPendingChanges(e,t,i){if((e.length>0||i.length>0)&&(this._minWidth=-1),e.length+t.length+i.length<=1){for(const t of e)this._insertWhitespace(t);for(const e of t)this._changeOneWhitespace(e.id,e.newAfterLineNumber,e.newHeight);for(const e of i){const t=this._findWhitespaceIndex(e.id);-1!==t&&this._removeWhitespace(t)}return}const n=new Set;for(const a of i)n.add(a.id);const o=new Map;for(const a of t)o.set(a.id,a);const s=e=>{const t=[];for(const i of e)if(!n.has(i.id)){if(o.has(i.id)){const e=o.get(i.id);i.afterLineNumber=e.newAfterLineNumber,i.height=e.newHeight}t.push(i)}return t},r=s(this._arr).concat(s(e));r.sort(((e,t)=>e.afterLineNumber===t.afterLineNumber?e.ordinal-t.ordinal:e.afterLineNumber-t.afterLineNumber)),this._arr=r,this._prefixSumValidIndex=-1}_checkPendingChanges(){this._pendingChanges.mustCommit()&&this._pendingChanges.commit(this)}_insertWhitespace(e){const t=fo.findInsertionIndex(this._arr,e.afterLineNumber,e.ordinal);this._arr.splice(t,0,e),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,t-1)}_findWhitespaceIndex(e){const t=this._arr;for(let i=0,n=t.length;it&&(this._arr[i].afterLineNumber-=t-e+1)}}onLinesInserted(e,t){this._checkPendingChanges(),e|=0,t|=0,this._lineCount+=t-e+1;for(let i=0,n=this._arr.length;i=t.length||t[o+1].afterLineNumber>=e)return o;i=o+1|0}else n=o-1|0}return-1}_findFirstWhitespaceAfterLineNumber(e){e|=0;const t=this._findLastWhitespaceBeforeLineNumber(e)+1;return t1&&void 0!==arguments[1]&&arguments[1];this._checkPendingChanges(),t=(e|=0)>1?this._lineHeight*(e-1):0;return t+this.getWhitespaceAccumulatedHeightBeforeLineNumber(e-(i?1:0))+this._paddingTop}getVerticalOffsetAfterLineNumber(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._checkPendingChanges(),e|=0;return this._lineHeight*e+this.getWhitespaceAccumulatedHeightBeforeLineNumber(e+(t?1:0))+this._paddingTop}getWhitespaceMinWidth(){if(this._checkPendingChanges(),-1===this._minWidth){let e=0;for(let t=0,i=this._arr.length;tthis.getLinesTotalHeight()}isInTopPadding(e){return 0!==this._paddingTop&&(this._checkPendingChanges(),e=this.getLinesTotalHeight()-this._paddingBottom}getLineNumberAtOrAfterVerticalOffset(e){if(this._checkPendingChanges(),(e|=0)<0)return 1;const t=0|this._lineCount,i=this._lineHeight;let n=1,o=t;for(;n=s+i)n=t+1;else{if(e>=s)return t;o=t}}return n>t?t:n}getLinesViewportData(e,t){this._checkPendingChanges(),e|=0,t|=0;const i=this._lineHeight,n=0|this.getLineNumberAtOrAfterVerticalOffset(e),o=0|this.getVerticalOffsetForLineNumber(n);let s=0|this._lineCount,r=0|this.getFirstWhitespaceIndexAfterLineNumber(n);const a=0|this.getWhitespacesCount();let l,h;-1===r?(r=a,h=s+1,l=0):(h=0|this.getAfterLineNumberForWhitespaceIndex(r),l=0|this.getHeightForWhitespaceIndex(r));let d=o,c=d;const u=5e5;let g=0;o>=u&&(g=Math.floor(o/u)*u,g=Math.floor(g/i)*i,c-=g);const m=[],f=e+(t-e)/2;let p=-1;for(let C=n;C<=s;C++){if(-1===p){(d<=f&&ff)&&(p=C)}for(d+=i,m[C-n]=c,c+=i;h===C;)c+=l,d+=l,r++,r>=a?h=s+1:(h=0|this.getAfterLineNumberForWhitespaceIndex(r),l=0|this.getHeightForWhitespaceIndex(r));if(d>=t){s=C;break}}-1===p&&(p=s);const _=0|this.getVerticalOffsetForLineNumber(s);let v=n,b=s;return vt&&b--,{bigNumbersDelta:g,startLineNumber:n,endLineNumber:s,relativeVerticalOffset:m,centeredLineNumber:p,completelyVisibleStartLineNumber:v,completelyVisibleEndLineNumber:b,lineHeight:this._lineHeight}}getVerticalOffsetForWhitespaceIndex(e){this._checkPendingChanges(),e|=0;const t=this.getAfterLineNumberForWhitespaceIndex(e);let i,n;return i=t>=1?this._lineHeight*t:0,n=e>0?this.getWhitespacesAccumulatedHeight(e-1):0,i+n+this._paddingTop}getWhitespaceIndexAtOrAfterVerticallOffset(e){this._checkPendingChanges(),e|=0;let t=0,i=this.getWhitespacesCount()-1;if(i<0)return-1;if(e>=this.getVerticalOffsetForWhitespaceIndex(i)+this.getHeightForWhitespaceIndex(i))return-1;for(;t=o+this.getHeightForWhitespaceIndex(n))t=n+1;else{if(e>=o)return n;i=n}}return t}getWhitespaceAtVerticalOffset(e){this._checkPendingChanges(),e|=0;const t=this.getWhitespaceIndexAtOrAfterVerticallOffset(e);if(t<0)return null;if(t>=this.getWhitespacesCount())return null;const i=this.getVerticalOffsetForWhitespaceIndex(t);if(i>e)return null;const n=this.getHeightForWhitespaceIndex(t);return{id:this.getIdForWhitespaceIndex(t),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(t),verticalOffset:i,height:n}}getWhitespaceViewportData(e,t){this._checkPendingChanges(),e|=0,t|=0;const i=this.getWhitespaceIndexAtOrAfterVerticallOffset(e),n=this.getWhitespacesCount()-1;if(i<0)return[];const o=[];for(let s=i;s<=n;s++){const e=this.getVerticalOffsetForWhitespaceIndex(s),i=this.getHeightForWhitespaceIndex(s);if(e>=t)break;o.push({id:this.getIdForWhitespaceIndex(s),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(s),verticalOffset:e,height:i})}return o}getWhitespaces(){return this._checkPendingChanges(),this._arr.slice(0)}getWhitespacesCount(){return this._checkPendingChanges(),this._arr.length}getIdForWhitespaceIndex(e){return this._checkPendingChanges(),e|=0,this._arr[e].id}getAfterLineNumberForWhitespaceIndex(e){return this._checkPendingChanges(),e|=0,this._arr[e].afterLineNumber}getHeightForWhitespaceIndex(e){return this._checkPendingChanges(),e|=0,this._arr[e].height}}fo.INSTANCE_COUNT=0;class po{constructor(e,t,i,n){(e|=0)<0&&(e=0),(t|=0)<0&&(t=0),(i|=0)<0&&(i=0),(n|=0)<0&&(n=0),this.width=e,this.contentWidth=t,this.scrollWidth=Math.max(e,t),this.height=i,this.contentHeight=n,this.scrollHeight=Math.max(i,n)}equals(e){return this.width===e.width&&this.contentWidth===e.contentWidth&&this.height===e.height&&this.contentHeight===e.contentHeight}}class _o extends c.JT{constructor(e,t){super(),this._onDidContentSizeChange=this._register(new d.Q5),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._dimensions=new po(0,0,0,0),this._scrollable=this._register(new uo.Rm({forceIntegerValues:!0,smoothScrollDuration:e,scheduleAtNextAnimationFrame:t})),this.onDidScroll=this._scrollable.onScroll}getScrollable(){return this._scrollable}setSmoothScrollDuration(e){this._scrollable.setSmoothScrollDuration(e)}validateScrollPosition(e){return this._scrollable.validateScrollPosition(e)}getScrollDimensions(){return this._dimensions}setScrollDimensions(e){if(this._dimensions.equals(e))return;const t=this._dimensions;this._dimensions=e,this._scrollable.setScrollDimensions({width:e.width,scrollWidth:e.scrollWidth,height:e.height,scrollHeight:e.scrollHeight},!0);const i=t.contentWidth!==e.contentWidth,n=t.contentHeight!==e.contentHeight;(i||n)&&this._onDidContentSizeChange.fire(new Un(t.contentWidth,t.contentHeight,e.contentWidth,e.contentHeight))}getFutureScrollPosition(){return this._scrollable.getFutureScrollPosition()}getCurrentScrollPosition(){return this._scrollable.getCurrentScrollPosition()}setScrollPositionNow(e){this._scrollable.setScrollPositionNow(e)}setScrollPositionSmooth(e){this._scrollable.setScrollPositionSmooth(e)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}}class vo extends c.JT{constructor(e,t,i){super(),this._configuration=e;const n=this._configuration.options,o=n.get(145),s=n.get(84);this._linesLayout=new fo(t,n.get(67),s.top,s.bottom),this._maxLineWidth=0,this._overlayWidgetsMinWidth=0,this._scrollable=this._register(new _o(0,i)),this._configureSmoothScrollDuration(),this._scrollable.setScrollDimensions(new po(o.contentWidth,0,o.height,0)),this.onDidScroll=this._scrollable.onDidScroll,this.onDidContentSizeChange=this._scrollable.onDidContentSizeChange,this._updateHeight()}dispose(){super.dispose()}getScrollable(){return this._scrollable.getScrollable()}onHeightMaybeChanged(){this._updateHeight()}_configureSmoothScrollDuration(){this._scrollable.setSmoothScrollDuration(this._configuration.options.get(114)?125:0)}onConfigurationChanged(e){const t=this._configuration.options;if(e.hasChanged(67)&&this._linesLayout.setLineHeight(t.get(67)),e.hasChanged(84)){const e=t.get(84);this._linesLayout.setPadding(e.top,e.bottom)}if(e.hasChanged(145)){const e=t.get(145),i=e.contentWidth,n=e.height,o=this._scrollable.getScrollDimensions(),s=o.contentWidth;this._scrollable.setScrollDimensions(new po(i,o.contentWidth,n,this._getContentHeight(i,n,s)))}else this._updateHeight();e.hasChanged(114)&&this._configureSmoothScrollDuration()}onFlushed(e){this._linesLayout.onFlushed(e)}onLinesDeleted(e,t){this._linesLayout.onLinesDeleted(e,t)}onLinesInserted(e,t){this._linesLayout.onLinesInserted(e,t)}_getHorizontalScrollbarHeight(e,t){const i=this._configuration.options.get(103);return 2===i.horizontal||e>=t?0:i.horizontalScrollbarSize}_getContentHeight(e,t,i){const n=this._configuration.options;let o=this._linesLayout.getLinesTotalHeight();return n.get(105)?o+=Math.max(0,t-n.get(67)-n.get(84).bottom):n.get(103).ignoreHorizontalScrollbarInContentHeight||(o+=this._getHorizontalScrollbarHeight(e,i)),o}_updateHeight(){const e=this._scrollable.getScrollDimensions(),t=e.width,i=e.height,n=e.contentWidth;this._scrollable.setScrollDimensions(new po(t,e.contentWidth,i,this._getContentHeight(t,i,n)))}getCurrentViewport(){const e=this._scrollable.getScrollDimensions(),t=this._scrollable.getCurrentScrollPosition();return new Ht.l_(t.scrollTop,t.scrollLeft,e.width,e.height)}getFutureViewport(){const e=this._scrollable.getScrollDimensions(),t=this._scrollable.getFutureScrollPosition();return new Ht.l_(t.scrollTop,t.scrollLeft,e.width,e.height)}_computeContentWidth(){const e=this._configuration.options,t=this._maxLineWidth,i=e.get(146),n=e.get(50),o=e.get(145);if(i.isViewportWrapping){const i=e.get(73);return t>o.contentWidth+n.typicalHalfwidthCharacterWidth&&i.enabled&&"right"===i.side?t+o.verticalScrollbarWidth:t}{const i=e.get(104)*n.typicalHalfwidthCharacterWidth,s=this._linesLayout.getWhitespaceMinWidth();return Math.max(t+i+o.verticalScrollbarWidth,s,this._overlayWidgetsMinWidth)}}setMaxLineWidth(e){this._maxLineWidth=e,this._updateContentWidth()}setOverlayWidgetsMinWidth(e){this._overlayWidgetsMinWidth=e,this._updateContentWidth()}_updateContentWidth(){const e=this._scrollable.getScrollDimensions();this._scrollable.setScrollDimensions(new po(e.width,this._computeContentWidth(),e.height,e.contentHeight)),this._updateHeight()}saveState(){const e=this._scrollable.getFutureScrollPosition(),t=e.scrollTop,i=this._linesLayout.getLineNumberAtOrAfterVerticalOffset(t);return{scrollTop:t,scrollTopWithoutViewZones:t-this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(i),scrollLeft:e.scrollLeft}}changeWhitespace(e){const t=this._linesLayout.changeWhitespace(e);return t&&this.onHeightMaybeChanged(),t}getVerticalOffsetForLineNumber(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this._linesLayout.getVerticalOffsetForLineNumber(e,t)}getVerticalOffsetAfterLineNumber(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this._linesLayout.getVerticalOffsetAfterLineNumber(e,t)}isAfterLines(e){return this._linesLayout.isAfterLines(e)}isInTopPadding(e){return this._linesLayout.isInTopPadding(e)}isInBottomPadding(e){return this._linesLayout.isInBottomPadding(e)}getLineNumberAtVerticalOffset(e){return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(e)}getWhitespaceAtVerticalOffset(e){return this._linesLayout.getWhitespaceAtVerticalOffset(e)}getLinesViewportData(){const e=this.getCurrentViewport();return this._linesLayout.getLinesViewportData(e.top,e.top+e.height)}getLinesViewportDataAtScrollTop(e){const t=this._scrollable.getScrollDimensions();return e+t.height>t.scrollHeight&&(e=t.scrollHeight-t.height),e<0&&(e=0),this._linesLayout.getLinesViewportData(e,e+t.height)}getWhitespaceViewportData(){const e=this.getCurrentViewport();return this._linesLayout.getWhitespaceViewportData(e.top,e.top+e.height)}getWhitespaces(){return this._linesLayout.getWhitespaces()}getContentWidth(){return this._scrollable.getScrollDimensions().contentWidth}getScrollWidth(){return this._scrollable.getScrollDimensions().scrollWidth}getContentHeight(){return this._scrollable.getScrollDimensions().contentHeight}getScrollHeight(){return this._scrollable.getScrollDimensions().scrollHeight}getCurrentScrollLeft(){return this._scrollable.getCurrentScrollPosition().scrollLeft}getCurrentScrollTop(){return this._scrollable.getCurrentScrollPosition().scrollTop}validateScrollPosition(e){return this._scrollable.validateScrollPosition(e)}setScrollPosition(e,t){1===t?this._scrollable.setScrollPositionNow(e):this._scrollable.setScrollPositionSmooth(e)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}deltaScrollNow(e,t){const i=this._scrollable.getCurrentScrollPosition();this._scrollable.setScrollPositionNow({scrollLeft:i.scrollLeft+e,scrollTop:i.scrollTop+t})}}var bo=i(19907),Co=i(43471);function wo(e,t){return null===e?t?So.INSTANCE:Lo.INSTANCE:new yo(e,t)}class yo{constructor(e,t){this._projectionData=e,this._isVisible=t}isVisible(){return this._isVisible}setVisible(e){return this._isVisible=e,this}getProjectionData(){return this._projectionData}getViewLineCount(){return this._isVisible?this._projectionData.getOutputLineCount():0}getViewLineContent(e,t,i){this._assertVisible();const n=i>0?this._projectionData.breakOffsets[i-1]:0,o=this._projectionData.breakOffsets[i];let s;if(null!==this._projectionData.injectionOffsets){const i=this._projectionData.injectionOffsets.map(((e,t)=>new Ui.gk(0,0,e+1,this._projectionData.injectionOptions[t],0)));s=Ui.gk.applyInjectedText(e.getLineContent(t),i).substring(n,o)}else s=e.getValueInRange({startLineNumber:t,startColumn:n+1,endLineNumber:t,endColumn:o+1});return i>0&&(s=Do(this._projectionData.wrappedTextIndentLength)+s),s}getViewLineLength(e,t,i){return this._assertVisible(),this._projectionData.getLineLength(i)}getViewLineMinColumn(e,t,i){return this._assertVisible(),this._projectionData.getMinOutputOffset(i)+1}getViewLineMaxColumn(e,t,i){return this._assertVisible(),this._projectionData.getMaxOutputOffset(i)+1}getViewLineData(e,t,i){const n=new Array;return this.getViewLinesData(e,t,i,1,0,[!0],n),n[0]}getViewLinesData(e,t,i,n,o,s,r){this._assertVisible();const a=this._projectionData,l=a.injectionOffsets,h=a.injectionOptions;let d,c=null;if(l){c=[];let e=0,t=0;for(let i=0;i0?a.breakOffsets[i-1]:0,s=a.breakOffsets[i];for(;ts)break;if(o0?a.wrappedTextIndentLength:0,r=t+Math.max(d-o,0),l=t+Math.min(c-o,s-o);r!==l&&n.push(new Ht.Wx(r,l,e.inlineClassName,e.inlineClassNameAffectsLetterSpacing))}}if(!(c<=s))break;e+=r,t++}}}d=l?e.tokenization.getLineTokens(t).withInserted(l.map(((e,t)=>({offset:e,text:h[t].content,tokenMetadata:Co.A.defaultTokenMetadata})))):e.tokenization.getLineTokens(t);for(let u=i;u0?n.wrappedTextIndentLength:0,s=i>0?n.breakOffsets[i-1]:0,r=n.breakOffsets[i],a=e.sliceAndInflate(s,r,o);let l=a.getLineContent();i>0&&(l=Do(n.wrappedTextIndentLength)+l);const h=this._projectionData.getMinOutputOffset(i)+1,d=l.length+1,c=i+12&&void 0!==arguments[2]?arguments[2]:2;this._assertVisible();return this._projectionData.translateToOutputPosition(t-1,i).toPosition(e)}getViewLineNumberOfModelPosition(e,t){this._assertVisible();return e+this._projectionData.translateToOutputPosition(t-1).outputLineIndex}normalizePosition(e,t,i){const n=t.lineNumber-e;return this._projectionData.normalizeOutputPosition(e,t.column-1,i).toPosition(n)}getInjectedTextAt(e,t){return this._projectionData.getInjectedText(e,t-1)}_assertVisible(){if(!this._isVisible)throw new Error("Not supported")}}class So{constructor(){}isVisible(){return!0}setVisible(e){return e?this:Lo.INSTANCE}getProjectionData(){return null}getViewLineCount(){return 1}getViewLineContent(e,t,i){return e.getLineContent(t)}getViewLineLength(e,t,i){return e.getLineLength(t)}getViewLineMinColumn(e,t,i){return e.getLineMinColumn(t)}getViewLineMaxColumn(e,t,i){return e.getLineMaxColumn(t)}getViewLineData(e,t,i){const n=e.tokenization.getLineTokens(t),o=n.getLineContent();return new Ht.IP(o,!1,1,o.length+1,0,n.inflate(),null)}getViewLinesData(e,t,i,n,o,s,r){s[o]?r[o]=this.getViewLineData(e,t,0):r[o]=null}getModelColumnOfViewPosition(e,t){return t}getViewPositionOfModelPosition(e,t){return new G.L(e,t)}getViewLineNumberOfModelPosition(e,t){return e}normalizePosition(e,t,i){return t}getInjectedTextAt(e,t){return null}}So.INSTANCE=new So;class Lo{constructor(){}isVisible(){return!1}setVisible(e){return e?So.INSTANCE:this}getProjectionData(){return null}getViewLineCount(){return 0}getViewLineContent(e,t,i){throw new Error("Not supported")}getViewLineLength(e,t,i){throw new Error("Not supported")}getViewLineMinColumn(e,t,i){throw new Error("Not supported")}getViewLineMaxColumn(e,t,i){throw new Error("Not supported")}getViewLineData(e,t,i){throw new Error("Not supported")}getViewLinesData(e,t,i,n,o,s,r){throw new Error("Not supported")}getModelColumnOfViewPosition(e,t){throw new Error("Not supported")}getViewPositionOfModelPosition(e,t){throw new Error("Not supported")}getViewLineNumberOfModelPosition(e,t){throw new Error("Not supported")}normalizePosition(e,t,i){throw new Error("Not supported")}getInjectedTextAt(e,t){throw new Error("Not supported")}}Lo.INSTANCE=new Lo;const ko=[""];function Do(e){if(e>=ko.length)for(let t=1;t<=e;t++)ko[t]=No(t);return ko[e]}function No(e){return new Array(e+1).join(" ")}var xo=i(7967);class Eo{constructor(e,t,i,n,o,s,r,a,l,h){this._editorId=e,this.model=t,this._validModelVersionId=-1,this._domLineBreaksComputerFactory=i,this._monospaceLineBreaksComputerFactory=n,this.fontInfo=o,this.tabSize=s,this.wrappingStrategy=r,this.wrappingColumn=a,this.wrappingIndent=l,this.wordBreak=h,this._constructLines(!0,null)}dispose(){this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[])}createCoordinatesConverter(){return new Mo(this)}_constructLines(e,t){this.modelLineProjections=[],e&&(this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[]));const i=this.model.getLinesContent(),n=this.model.getInjectedTextDecorations(this._editorId),o=i.length,s=this.createLineBreaksComputer(),r=new f.H9(Ui.gk.fromDecorations(n));for(let m=0;me.lineNumber===m+1));s.addRequest(i[m],e,t?t[m]:null)}const a=s.finalize(),l=[],h=this.hiddenAreasDecorationIds.map((e=>this.model.getDecorationRange(e))).sort(Q.e.compareRangesUsingStarts);let d=1,c=0,u=-1,g=u+1=d&&e<=c,i=wo(a[m],!t);l[m]=i.getViewLineCount(),this.modelLineProjections[m]=i}this._validModelVersionId=this.model.getVersionId(),this.projectedModelLineLineCounts=new xo.Ck(l)}getHiddenAreas(){return this.hiddenAreasDecorationIds.map((e=>this.model.getDecorationRange(e)))}setHiddenAreas(e){const t=function(e){if(0===e.length)return[];const t=e.slice();t.sort(Q.e.compareRangesUsingStarts);const i=[];let n=t[0].startLineNumber,o=t[0].endLineNumber;for(let s=1,r=t.length;so+1?(i.push(new Q.e(n,1,o,1)),n=e.startLineNumber,o=e.endLineNumber):e.endLineNumber>o&&(o=e.endLineNumber)}return i.push(new Q.e(n,1,o,1)),i}(e.map((e=>this.model.validateRange(e)))),i=this.hiddenAreasDecorationIds.map((e=>this.model.getDecorationRange(e))).sort(Q.e.compareRangesUsingStarts);if(t.length===i.length){let e=!1;for(let n=0;n({range:e,options:on.qx.EMPTY})));this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,n);const o=t;let s=1,r=0,a=-1,l=a+1=s&&e<=r?this.modelLineProjections[d].isVisible()&&(this.modelLineProjections[d]=this.modelLineProjections[d].setVisible(!1),t=!0):(h=!0,this.modelLineProjections[d].isVisible()||(this.modelLineProjections[d]=this.modelLineProjections[d].setVisible(!0),t=!0)),t){const e=this.modelLineProjections[d].getViewLineCount();this.projectedModelLineLineCounts.setValue(d,e)}}return h||this.setHiddenAreas([]),!0}modelPositionIsVisible(e,t){return!(e<1||e>this.modelLineProjections.length)&&this.modelLineProjections[e-1].isVisible()}getModelLineViewLineCount(e){return e<1||e>this.modelLineProjections.length?1:this.modelLineProjections[e-1].getViewLineCount()}setTabSize(e){return this.tabSize!==e&&(this.tabSize=e,this._constructLines(!1,null),!0)}setWrappingSettings(e,t,i,n,o){const s=this.fontInfo.equals(e),r=this.wrappingStrategy===t,a=this.wrappingColumn===i,l=this.wrappingIndent===n,h=this.wordBreak===o;if(s&&r&&a&&l&&h)return!1;const d=s&&r&&!a&&l&&h;this.fontInfo=e,this.wrappingStrategy=t,this.wrappingColumn=i,this.wrappingIndent=n,this.wordBreak=o;let c=null;if(d){c=[];for(let e=0,t=this.modelLineProjections.length;e2&&!this.modelLineProjections[t-2].isVisible(),s=1===t?1:this.projectedModelLineLineCounts.getPrefixSum(t-1)+1;let r=0;const a=[],l=[];for(let h=0,d=n.length;hr?(l=this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,h=l+r-1,u=h+1,g=u+(o-r)-1,a=!0):ot?t:0|e}getActiveIndentGuide(e,t,i){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t),i=this._toValidViewLineNumber(i);const n=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),o=this.convertViewPositionToModelPosition(t,this.getViewLineMinColumn(t)),s=this.convertViewPositionToModelPosition(i,this.getViewLineMinColumn(i)),r=this.model.guides.getActiveIndentGuide(n.lineNumber,o.lineNumber,s.lineNumber),a=this.convertModelPositionToViewPosition(r.startLineNumber,1),l=this.convertModelPositionToViewPosition(r.endLineNumber,this.model.getLineMaxColumn(r.endLineNumber));return{startLineNumber:a.lineNumber,endLineNumber:l.lineNumber,indent:r.indent}}getViewLineInfo(e){e=this._toValidViewLineNumber(e);const t=this.projectedModelLineLineCounts.getIndexOf(e-1),i=t.index,n=t.remainder;return new Io(i+1,n)}getMinColumnOfViewLine(e){return this.modelLineProjections[e.modelLineNumber-1].getViewLineMinColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx)}getMaxColumnOfViewLine(e){return this.modelLineProjections[e.modelLineNumber-1].getViewLineMaxColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx)}getModelStartPositionOfViewLine(e){const t=this.modelLineProjections[e.modelLineNumber-1],i=t.getViewLineMinColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx),n=t.getModelColumnOfViewPosition(e.modelLineWrappedLineIdx,i);return new G.L(e.modelLineNumber,n)}getModelEndPositionOfViewLine(e){const t=this.modelLineProjections[e.modelLineNumber-1],i=t.getViewLineMaxColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx),n=t.getModelColumnOfViewPosition(e.modelLineWrappedLineIdx,i);return new G.L(e.modelLineNumber,n)}getViewLineInfosGroupedByModelRanges(e,t){const i=this.getViewLineInfo(e),n=this.getViewLineInfo(t),o=new Array;let s=this.getModelStartPositionOfViewLine(i),r=new Array;for(let a=i.modelLineNumber;a<=n.modelLineNumber;a++){const e=this.modelLineProjections[a-1];if(e.isVisible()){const t=a===i.modelLineNumber?i.modelLineWrappedLineIdx:0,o=a===n.modelLineNumber?n.modelLineWrappedLineIdx+1:e.getViewLineCount();for(let e=t;e{if(-1!==e.forWrappedLinesAfterColumn){if(this.modelLineProjections[i.modelLineNumber-1].getViewPositionOfModelPosition(0,e.forWrappedLinesAfterColumn).lineNumber>=i.modelLineWrappedLineIdx)return}if(-1!==e.forWrappedLinesBeforeOrAtColumn){if(this.modelLineProjections[i.modelLineNumber-1].getViewPositionOfModelPosition(0,e.forWrappedLinesBeforeOrAtColumn).lineNumberi.modelLineWrappedLineIdx)return}const n=this.convertModelPositionToViewPosition(i.modelLineNumber,e.horizontalLine.endColumn),o=this.modelLineProjections[i.modelLineNumber-1].getViewPositionOfModelPosition(0,e.horizontalLine.endColumn);return o.lineNumber===i.modelLineWrappedLineIdx?new xt.UO(e.visibleColumn,t,e.className,new xt.vW(e.horizontalLine.top,n.column),-1,-1):o.lineNumber!!e)))}}return s}getViewLinesIndentGuides(e,t){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);const i=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),n=this.convertViewPositionToModelPosition(t,this.getViewLineMaxColumn(t));let o=[];const s=[],r=[],a=i.lineNumber-1,l=n.lineNumber-1;let h=null;for(let g=a;g<=l;g++){const e=this.modelLineProjections[g];if(e.isVisible()){const t=e.getViewLineNumberOfModelPosition(0,g===a?i.column:1),n=e.getViewLineNumberOfModelPosition(0,this.model.getLineMaxColumn(g+1)),o=n-t+1;let l=0;o>1&&1===e.getViewLineMinColumn(this.model,g+1,n)&&(l=0===t?1:2),s.push(o),r.push(l),null===h&&(h=new G.L(g+1,0))}else null!==h&&(o=o.concat(this.model.guides.getLinesIndentGuides(h.lineNumber,g)),h=null)}null!==h&&(o=o.concat(this.model.guides.getLinesIndentGuides(h.lineNumber,n.lineNumber)),h=null);const d=t-e+1,c=new Array(d);let u=0;for(let g=0,m=o.length;gt&&(c=!0,d=t-o+1),n.getViewLinesData(this.model,l+1,h,d,o-e,i,a),o+=d,c)break}return a}validateViewPosition(e,t,i){e=this._toValidViewLineNumber(e);const n=this.projectedModelLineLineCounts.getIndexOf(e-1),o=n.index,s=n.remainder,r=this.modelLineProjections[o],a=r.getViewLineMinColumn(this.model,o+1,s),l=r.getViewLineMaxColumn(this.model,o+1,s);tl&&(t=l);const h=r.getModelColumnOfViewPosition(s,t);return this.model.validatePosition(new G.L(o+1,h)).equals(i)?new G.L(e,t):this.convertModelPositionToViewPosition(i.lineNumber,i.column)}validateViewRange(e,t){const i=this.validateViewPosition(e.startLineNumber,e.startColumn,t.getStartPosition()),n=this.validateViewPosition(e.endLineNumber,e.endColumn,t.getEndPosition());return new Q.e(i.lineNumber,i.column,n.lineNumber,n.column)}convertViewPositionToModelPosition(e,t){const i=this.getViewLineInfo(e),n=this.modelLineProjections[i.modelLineNumber-1].getModelColumnOfViewPosition(i.modelLineWrappedLineIdx,t);return this.model.validatePosition(new G.L(i.modelLineNumber,n))}convertViewRangeToModelRange(e){const t=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),i=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);return new Q.e(t.lineNumber,t.column,i.lineNumber,i.column)}convertModelPositionToViewPosition(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const s=this.model.validatePosition(new G.L(e,t)),r=s.lineNumber,a=s.column;let l=r-1,h=!1;if(o)for(;l0&&!this.modelLineProjections[l].isVisible();)l--,h=!0;if(0===l&&!this.modelLineProjections[l].isVisible())return new G.L(n?0:1,1);const d=1+this.projectedModelLineLineCounts.getPrefixSum(l);let c;return c=h?o?this.modelLineProjections[l].getViewPositionOfModelPosition(d,1,i):this.modelLineProjections[l].getViewPositionOfModelPosition(d,this.model.getLineMaxColumn(l+1),i):this.modelLineProjections[r-1].getViewPositionOfModelPosition(d,a,i),c}convertModelRangeToViewRange(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e.isEmpty()){const i=this.convertModelPositionToViewPosition(e.startLineNumber,e.startColumn,t);return Q.e.fromPositions(i)}{const t=this.convertModelPositionToViewPosition(e.startLineNumber,e.startColumn,1),i=this.convertModelPositionToViewPosition(e.endLineNumber,e.endColumn,0);return new Q.e(t.lineNumber,t.column,i.lineNumber,i.column)}}getViewLineNumberOfModelPosition(e,t){let i=e-1;if(this.modelLineProjections[i].isVisible()){const e=1+this.projectedModelLineLineCounts.getPrefixSum(i);return this.modelLineProjections[i].getViewLineNumberOfModelPosition(e,t)}for(;i>0&&!this.modelLineProjections[i].isVisible();)i--;if(0===i&&!this.modelLineProjections[i].isVisible())return 1;const n=1+this.projectedModelLineLineCounts.getPrefixSum(i);return this.modelLineProjections[i].getViewLineNumberOfModelPosition(n,this.model.getLineMaxColumn(i+1))}getDecorationsInRange(e,t,i,n,o){const s=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),r=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);if(r.lineNumber-s.lineNumber<=e.endLineNumber-e.startLineNumber)return this.model.getDecorationsInRange(new Q.e(s.lineNumber,1,r.lineNumber,r.column),t,i,n,o);let a=[];const l=s.lineNumber-1,h=r.lineNumber-1;let d=null;for(let m=l;m<=h;m++){if(this.modelLineProjections[m].isVisible())null===d&&(d=new G.L(m+1,m===l?s.column:1));else if(null!==d){const e=this.model.getLineMaxColumn(m);a=a.concat(this.model.getDecorationsInRange(new Q.e(d.lineNumber,d.column,m,e),t,i,n)),d=null}}null!==d&&(a=a.concat(this.model.getDecorationsInRange(new Q.e(d.lineNumber,d.column,r.lineNumber,r.column),t,i,n)),d=null),a.sort(((e,t)=>{const i=Q.e.compareRangesUsingStarts(e.range,t.range);return 0===i?e.idt.id?1:0:i}));const c=[];let u=0,g=null;for(const m of a){const e=m.id;g!==e&&(g=e,c[u++]=m)}return c}getInjectedTextAt(e){const t=this.getViewLineInfo(e.lineNumber);return this.modelLineProjections[t.modelLineNumber-1].getInjectedTextAt(t.modelLineWrappedLineIdx,e.column)}normalizePosition(e,t){const i=this.getViewLineInfo(e.lineNumber);return this.modelLineProjections[i.modelLineNumber-1].normalizePosition(i.modelLineWrappedLineIdx,e,t)}getLineIndentColumn(e){const t=this.getViewLineInfo(e);return 0===t.modelLineWrappedLineIdx?this.model.getLineIndentColumn(t.modelLineNumber):0}}class Io{constructor(e,t){this.modelLineNumber=e,this.modelLineWrappedLineIdx=t}}class To{constructor(e,t){this.modelRange=e,this.viewLines=t}}class Mo{constructor(e){this._lines=e}convertViewPositionToModelPosition(e){return this._lines.convertViewPositionToModelPosition(e.lineNumber,e.column)}convertViewRangeToModelRange(e){return this._lines.convertViewRangeToModelRange(e)}validateViewPosition(e,t){return this._lines.validateViewPosition(e.lineNumber,e.column,t)}validateViewRange(e,t){return this._lines.validateViewRange(e,t)}convertModelPositionToViewPosition(e,t,i,n){return this._lines.convertModelPositionToViewPosition(e.lineNumber,e.column,t,i,n)}convertModelRangeToViewRange(e,t){return this._lines.convertModelRangeToViewRange(e,t)}modelPositionIsVisible(e){return this._lines.modelPositionIsVisible(e.lineNumber,e.column)}getModelLineViewLineCount(e){return this._lines.getModelLineViewLineCount(e)}getViewLineNumberOfModelPosition(e,t){return this._lines.getViewLineNumberOfModelPosition(e,t)}}class Ao{constructor(e){this.model=e}dispose(){}createCoordinatesConverter(){return new Ro(this)}getHiddenAreas(){return[]}setHiddenAreas(e){return!1}setTabSize(e){return!1}setWrappingSettings(e,t,i,n){return!1}createLineBreaksComputer(){const e=[];return{addRequest:(t,i,n)=>{e.push(null)},finalize:()=>e}}onModelFlushed(){}onModelLinesDeleted(e,t,i){return new Rn(t,i)}onModelLinesInserted(e,t,i,n){return new On(t,i)}onModelLineChanged(e,t,i){return[!1,new An(t,1),null,null]}acceptVersionId(e){}getViewLineCount(){return this.model.getLineCount()}getActiveIndentGuide(e,t,i){return{startLineNumber:e,endLineNumber:e,indent:0}}getViewLinesBracketGuides(e,t,i){return new Array(t-e+1).fill([])}getViewLinesIndentGuides(e,t){const i=t-e+1,n=new Array(i);for(let o=0;ot)}getModelLineViewLineCount(e){return 1}getViewLineNumberOfModelPosition(e,t){return e}}const Oo=_t.U.Right;class Po{constructor(e){this.persist=0,this._requiredLanes=1,this.lanes=new Uint8Array(Math.ceil((e+1)*Oo/8))}reset(e){const t=Math.ceil((e+1)*Oo/8);this.lanes.length>>3]|=1<>>3]&1<>>3]&1<this._updateConfigurationViewLineCountNow()),0)),this._hasFocus=!1,this._viewportStart=Bo.create(this.model),this.glyphLanes=new Po(0),this.model.isTooLargeForTokenization())this._lines=new Ao(this.model);else{const e=this._configuration.options,t=e.get(50),i=e.get(139),s=e.get(146),r=e.get(138),a=e.get(129);this._lines=new Eo(this._editorId,this.model,n,o,t,this.model.getOptions().tabSize,i,s.wrappingColumn,r,a)}this.coordinatesConverter=this._lines.createCoordinatesConverter(),this._cursor=this._register(new no(i,this,this.coordinatesConverter,this.cursorConfig)),this.viewLayout=this._register(new vo(this._configuration,this.getLineCount(),s)),this._register(this.viewLayout.onDidScroll((e=>{e.scrollTopChanged&&this._handleVisibleLinesChanged(),e.scrollTopChanged&&this._viewportStart.invalidate(),this._eventDispatcher.emitSingleViewEvent(new Fn(e)),this._eventDispatcher.emitOutgoingEvent(new qn(e.oldScrollWidth,e.oldScrollLeft,e.oldScrollHeight,e.oldScrollTop,e.scrollWidth,e.scrollLeft,e.scrollHeight,e.scrollTop))}))),this._register(this.viewLayout.onDidContentSizeChange((e=>{this._eventDispatcher.emitOutgoingEvent(e)}))),this._decorations=new bo.CU(this._editorId,this.model,this._configuration,this._lines,this.coordinatesConverter),this._registerModelEvents(),this._register(this._configuration.onDidChangeFast((e=>{try{const t=this._eventDispatcher.beginEmitViewEvents();this._onConfigurationChanged(t,e)}finally{this._eventDispatcher.endEmitViewEvents()}}))),this._register(Wt.getInstance().onDidChange((()=>{this._eventDispatcher.emitSingleViewEvent(new Vn)}))),this._register(this._themeService.onDidColorThemeChange((e=>{this._invalidateDecorationsColorCache(),this._eventDispatcher.emitSingleViewEvent(new Bn(e))}))),this._updateConfigurationViewLineCountNow()}dispose(){super.dispose(),this._decorations.dispose(),this._lines.dispose(),this._viewportStart.dispose(),this._eventDispatcher.dispose()}createLineBreaksComputer(){return this._lines.createLineBreaksComputer()}addViewEventHandler(e){this._eventDispatcher.addViewEventHandler(e)}removeViewEventHandler(e){this._eventDispatcher.removeViewEventHandler(e)}_updateConfigurationViewLineCountNow(){this._configuration.setViewLineCount(this._lines.getViewLineCount())}getModelVisibleRanges(){const e=this.viewLayout.getLinesViewportData(),t=new Q.e(e.startLineNumber,this.getLineMinColumn(e.startLineNumber),e.endLineNumber,this.getLineMaxColumn(e.endLineNumber));return this._toModelVisibleRanges(t)}visibleLinesStabilized(){const e=this.getModelVisibleRanges();this._attachedView.setVisibleLines(e,!0)}_handleVisibleLinesChanged(){const e=this.getModelVisibleRanges();this._attachedView.setVisibleLines(e,!1)}setHasFocus(e){this._hasFocus=e,this._cursor.setHasFocus(e),this._eventDispatcher.emitSingleViewEvent(new In(e)),this._eventDispatcher.emitOutgoingEvent(new jn(!e,e))}onCompositionStart(){this._eventDispatcher.emitSingleViewEvent(new Ln)}onCompositionEnd(){this._eventDispatcher.emitSingleViewEvent(new kn)}_captureStableViewport(){if(this._viewportStart.isValid&&this.viewLayout.getCurrentScrollTop()>0){const e=new G.L(this._viewportStart.viewLineNumber,this.getLineMinColumn(this._viewportStart.viewLineNumber)),t=this.coordinatesConverter.convertViewPositionToModelPosition(e);return new Ho(t,this._viewportStart.startLineDelta)}return new Ho(null,0)}_onConfigurationChanged(e,t){const i=this._captureStableViewport(),n=this._configuration.options,o=n.get(50),s=n.get(139),r=n.get(146),a=n.get(138),l=n.get(129);this._lines.setWrappingSettings(o,s,r.wrappingColumn,a,l)&&(e.emitViewEvent(new En),e.emitViewEvent(new Mn),e.emitViewEvent(new xn(null)),this._cursor.onLineMappingChanged(e),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this._updateConfigurationViewLineCount.schedule()),t.hasChanged(91)&&(this._decorations.reset(),e.emitViewEvent(new xn(null))),t.hasChanged(98)&&(this._decorations.reset(),e.emitViewEvent(new xn(null))),e.emitViewEvent(new Dn(t)),this.viewLayout.onConfigurationChanged(t),i.recoverViewportStart(this.coordinatesConverter,this.viewLayout),vn.LM.shouldRecreate(t)&&(this.cursorConfig=new vn.LM(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig))}_registerModelEvents(){this._register(this.model.onDidChangeContentOrInjectedText((e=>{try{const t=this._eventDispatcher.beginEmitViewEvents();let i=!1,n=!1;const o=e instanceof Ui.fV?e.rawContentChangedEvent.changes:e.changes,s=e instanceof Ui.fV?e.rawContentChangedEvent.versionId:null,r=this._lines.createLineBreaksComputer();for(const e of o)switch(e.changeType){case 4:for(let t=0;t!e.ownerId||e.ownerId===this._editorId))),r.addRequest(i,n,null)}break;case 2:{let t=null;e.injectedText&&(t=e.injectedText.filter((e=>!e.ownerId||e.ownerId===this._editorId))),r.addRequest(e.detail,t,null);break}}const a=r.finalize(),l=new f.H9(a);for(const e of o)switch(e.changeType){case 1:this._lines.onModelFlushed(),t.emitViewEvent(new En),this._decorations.reset(),this.viewLayout.onFlushed(this.getLineCount()),i=!0;break;case 3:{const n=this._lines.onModelLinesDeleted(s,e.fromLineNumber,e.toLineNumber);null!==n&&(t.emitViewEvent(n),this.viewLayout.onLinesDeleted(n.fromLineNumber,n.toLineNumber)),i=!0;break}case 4:{const n=l.takeCount(e.detail.length),o=this._lines.onModelLinesInserted(s,e.fromLineNumber,e.toLineNumber,n);null!==o&&(t.emitViewEvent(o),this.viewLayout.onLinesInserted(o.fromLineNumber,o.toLineNumber)),i=!0;break}case 2:{const i=l.dequeue(),[o,r,a,h]=this._lines.onModelLineChanged(s,e.lineNumber,i);n=o,r&&t.emitViewEvent(r),a&&(t.emitViewEvent(a),this.viewLayout.onLinesInserted(a.fromLineNumber,a.toLineNumber)),h&&(t.emitViewEvent(h),this.viewLayout.onLinesDeleted(h.fromLineNumber,h.toLineNumber));break}}null!==s&&this._lines.acceptVersionId(s),this.viewLayout.onHeightMaybeChanged(),!i&&n&&(t.emitViewEvent(new Mn),t.emitViewEvent(new xn(null)),this._cursor.onLineMappingChanged(t),this._decorations.onLineMappingChanged())}finally{this._eventDispatcher.endEmitViewEvents()}const t=this._viewportStart.isValid;if(this._viewportStart.invalidate(),this._configuration.setModelLineCount(this.model.getLineCount()),this._updateConfigurationViewLineCountNow(),!this._hasFocus&&this.model.getAttachedEditorCount()>=2&&t){const e=this.model._getTrackedRange(this._viewportStart.modelTrackedRange);if(e){const t=this.coordinatesConverter.convertModelPositionToViewPosition(e.getStartPosition()),i=this.viewLayout.getVerticalOffsetForLineNumber(t.lineNumber);this.viewLayout.setScrollPosition({scrollTop:i+this._viewportStart.startLineDelta},1)}}try{const t=this._eventDispatcher.beginEmitViewEvents();e instanceof Ui.fV&&t.emitOutgoingEvent(new eo(e.contentChangedEvent)),this._cursor.onModelContentChanged(t,e)}finally{this._eventDispatcher.endEmitViewEvents()}this._handleVisibleLinesChanged()}))),this._register(this.model.onDidChangeTokens((e=>{const t=[];for(let i=0,n=e.ranges.length;i{this._eventDispatcher.emitSingleViewEvent(new Tn),this.cursorConfig=new vn.LM(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new Xn(e))}))),this._register(this.model.onDidChangeLanguage((e=>{this.cursorConfig=new vn.LM(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new Jn(e))}))),this._register(this.model.onDidChangeOptions((e=>{if(this._lines.setTabSize(this.model.getOptions().tabSize)){try{const e=this._eventDispatcher.beginEmitViewEvents();e.emitViewEvent(new En),e.emitViewEvent(new Mn),e.emitViewEvent(new xn(null)),this._cursor.onLineMappingChanged(e),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount())}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule()}this.cursorConfig=new vn.LM(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new to(e))}))),this._register(this.model.onDidChangeDecorations((e=>{this._decorations.onModelDecorationsChanged(),this._eventDispatcher.emitSingleViewEvent(new xn(e)),this._eventDispatcher.emitOutgoingEvent(new $n(e))})))}setHiddenAreas(e,t){var i;this.hiddenAreasModel.setHiddenAreas(t,e);const n=this.hiddenAreasModel.getMergedRanges();if(n===this.previousHiddenAreas)return;this.previousHiddenAreas=n;const o=this._captureStableViewport();let s=!1;try{const e=this._eventDispatcher.beginEmitViewEvents();s=this._lines.setHiddenAreas(n),s&&(e.emitViewEvent(new En),e.emitViewEvent(new Mn),e.emitViewEvent(new xn(null)),this._cursor.onLineMappingChanged(e),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this.viewLayout.onHeightMaybeChanged());const t=null===(i=o.viewportStartModelPosition)||void 0===i?void 0:i.lineNumber;t&&n.some((e=>e.startLineNumber<=t&&t<=e.endLineNumber))||o.recoverViewportStart(this.coordinatesConverter,this.viewLayout)}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule(),s&&this._eventDispatcher.emitOutgoingEvent(new Qn)}getVisibleRangesPlusViewportAboveBelow(){const e=this._configuration.options.get(145),t=this._configuration.options.get(67),i=Math.max(20,Math.round(e.height/t)),n=this.viewLayout.getLinesViewportData(),o=Math.max(1,n.completelyVisibleStartLineNumber-i),s=Math.min(this.getLineCount(),n.completelyVisibleEndLineNumber+i);return this._toModelVisibleRanges(new Q.e(o,this.getLineMinColumn(o),s,this.getLineMaxColumn(s)))}getVisibleRanges(){const e=this.getCompletelyVisibleViewRange();return this._toModelVisibleRanges(e)}getHiddenAreas(){return this._lines.getHiddenAreas()}_toModelVisibleRanges(e){const t=this.coordinatesConverter.convertViewRangeToModelRange(e),i=this._lines.getHiddenAreas();if(0===i.length)return[t];const n=[];let o=0,s=t.startLineNumber,r=t.startColumn;const a=t.endLineNumber,l=t.endColumn;for(let h=0,d=i.length;ha||(st.toInlineDecoration(e)))]),new Ht.wA(s.minColumn,s.maxColumn,s.content,s.continuesWithWrappedLine,i,n,s.tokens,t,o,s.startVisibleColumn)}getViewLineData(e){return this._lines.getViewLineData(e)}getMinimapLinesRenderingData(e,t,i){const n=this._lines.getViewLinesData(e,t,i);return new Ht.ud(this.getTabSize(),n)}getAllOverviewRulerDecorations(e){const t=this.model.getOverviewRulerDecorations(this._editorId,(0,k.$J)(this._configuration.options)),i=new zo;for(const n of t){const t=n.options,o=t.overviewRuler;if(!o)continue;const s=o.position;if(0===s)continue;const r=o.getColor(e.value),a=this.coordinatesConverter.getViewLineNumberOfModelPosition(n.range.startLineNumber,n.range.startColumn),l=this.coordinatesConverter.getViewLineNumberOfModelPosition(n.range.endLineNumber,n.range.endColumn);i.accept(r,t.zIndex,a,l,s)}return i.asArray}_invalidateDecorationsColorCache(){const e=this.model.getOverviewRulerDecorations();for(const t of e){const e=t.options.overviewRuler;null===e||void 0===e||e.invalidateCachedColor();const i=t.options.minimap;null===i||void 0===i||i.invalidateCachedColor()}}getValueInRange(e,t){const i=this.coordinatesConverter.convertViewRangeToModelRange(e);return this.model.getValueInRange(i,t)}getValueLengthInRange(e,t){const i=this.coordinatesConverter.convertViewRangeToModelRange(e);return this.model.getValueLengthInRange(i,t)}modifyPosition(e,t){const i=this.coordinatesConverter.convertViewPositionToModelPosition(e),n=this.model.modifyPosition(i,t);return this.coordinatesConverter.convertModelPositionToViewPosition(n)}deduceModelPositionRelativeToViewPosition(e,t,i){const n=this.coordinatesConverter.convertViewPositionToModelPosition(e);2===this.model.getEOL().length&&(t<0?t-=i:t+=i);const o=this.model.getOffsetAt(n)+t;return this.model.getPositionAt(o)}getPlainTextToCopy(e,t,i){const n=i?"\r\n":this.model.getEOL();(e=e.slice(0)).sort(Q.e.compareRangesUsingStarts);let o=!1,s=!1;for(const a of e)a.isEmpty()?o=!0:s=!0;if(!s){if(!t)return"";const i=e.map((e=>e.startLineNumber));let o="";for(let e=0;e0&&i[e-1]===i[e]||(o+=this.model.getLineContent(i[e])+n);return o}if(o&&t){const t=[];let n=0;for(const o of e){const e=o.startLineNumber;o.isEmpty()?e!==n&&t.push(this.model.getLineContent(e)):t.push(this.model.getValueInRange(o,i?2:0)),n=e}return 1===t.length?t[0]:t}const r=[];for(const a of e)a.isEmpty()||r.push(this.model.getValueInRange(a,i?2:0));return 1===r.length?r[0]:r}getRichTextToCopy(e,t){const i=this.model.getLanguageId();if(i===ho.bd)return null;if(1!==e.length)return null;let n=e[0];if(n.isEmpty()){if(!t)return null;const e=n.startLineNumber;n=new Q.e(e,this.model.getLineMinColumn(e),e,this.model.getLineMaxColumn(e))}const o=this._configuration.options.get(50),s=this._getColorMap();let r;if(/[:;\\\/<>]/.test(o.fontFamily)||o.fontFamily===k.hL.fontFamily)r=k.hL.fontFamily;else{r=o.fontFamily,r=r.replace(/"/g,"'");if(!/[,']/.test(r)){/[+ ]/.test(r)&&(r="'".concat(r,"'"))}r="".concat(r,", ").concat(k.hL.fontFamily)}return{mode:i,html:'
    '+this._getHTMLToCopy(n,s)+"
    "}}_getHTMLToCopy(e,t){const i=e.startLineNumber,n=e.startColumn,o=e.endLineNumber,s=e.endColumn,r=this.getTabSize();let a="";for(let l=i;l<=o;l++){const e=this.model.tokenization.getLineTokens(l),h=e.getLineContent(),d=l===i?n-1:0,c=l===o?s-1:h.length;a+=""===h?"
    ":(0,co.Fq)(h,e.inflate(),t,d,c,r,_.ED)}return a}_getColorMap(){const e=Oe.RW.getColorMap(),t=["#000000"];if(e)for(let i=1,n=e.length;ithis._cursor.setStates(n,e,t,i)))}getCursorColumnSelectData(){return this._cursor.getCursorColumnSelectData()}getCursorAutoClosedCharacters(){return this._cursor.getAutoClosedCharacters()}setCursorColumnSelectData(e){this._cursor.setCursorColumnSelectData(e)}getPrevEditOperationType(){return this._cursor.getPrevEditOperationType()}setPrevEditOperationType(e){this._cursor.setPrevEditOperationType(e)}getSelection(){return this._cursor.getSelection()}getSelections(){return this._cursor.getSelections()}getPosition(){return this._cursor.getPrimaryCursorState().modelState.position}setSelections(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._withViewEventsCollector((n=>this._cursor.setSelections(n,e,t,i)))}saveCursorState(){return this._cursor.saveState()}restoreCursorState(e){this._withViewEventsCollector((t=>this._cursor.restoreState(t,e)))}_executeCursorEdit(e){this._cursor.context.cursorConfig.readOnly?this._eventDispatcher.emitOutgoingEvent(new Yn):this._withViewEventsCollector(e)}executeEdits(e,t,i){this._executeCursorEdit((n=>this._cursor.executeEdits(n,e,t,i)))}startComposition(){this._executeCursorEdit((e=>this._cursor.startComposition(e)))}endComposition(e){this._executeCursorEdit((t=>this._cursor.endComposition(t,e)))}type(e,t){this._executeCursorEdit((i=>this._cursor.type(i,e,t)))}compositionType(e,t,i,n,o){this._executeCursorEdit((s=>this._cursor.compositionType(s,e,t,i,n,o)))}paste(e,t,i,n){this._executeCursorEdit((o=>this._cursor.paste(o,e,t,i,n)))}cut(e){this._executeCursorEdit((t=>this._cursor.cut(t,e)))}executeCommand(e,t){this._executeCursorEdit((i=>this._cursor.executeCommand(i,e,t)))}executeCommands(e,t){this._executeCursorEdit((i=>this._cursor.executeCommands(i,e,t)))}revealAllCursors(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this._withViewEventsCollector((n=>this._cursor.revealAll(n,e,i,0,t,0)))}revealPrimaryCursor(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this._withViewEventsCollector((n=>this._cursor.revealPrimary(n,e,i,0,t,0)))}revealTopMostCursor(e){const t=this._cursor.getTopMostViewPosition(),i=new Q.e(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector((t=>t.emitViewEvent(new Pn(e,!1,i,null,0,!0,0))))}revealBottomMostCursor(e){const t=this._cursor.getBottomMostViewPosition(),i=new Q.e(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector((t=>t.emitViewEvent(new Pn(e,!1,i,null,0,!0,0))))}revealRange(e,t,i,n,o){this._withViewEventsCollector((s=>s.emitViewEvent(new Pn(e,!1,i,null,n,t,o))))}changeWhitespace(e){this.viewLayout.changeWhitespace(e)&&(this._eventDispatcher.emitSingleViewEvent(new Wn),this._eventDispatcher.emitOutgoingEvent(new Gn))}_withViewEventsCollector(e){try{return e(this._eventDispatcher.beginEmitViewEvents())}finally{this._eventDispatcher.endEmitViewEvents()}}normalizePosition(e,t){return this._lines.normalizePosition(e,t)}getLineIndentColumn(e){return this._lines.getLineIndentColumn(e)}}class Bo{static create(e){const t=e._setTrackedRange(null,new Q.e(1,1,1,1),1);return new Bo(e,1,!1,t,0)}get viewLineNumber(){return this._viewLineNumber}get isValid(){return this._isValid}get modelTrackedRange(){return this._modelTrackedRange}get startLineDelta(){return this._startLineDelta}constructor(e,t,i,n,o){this._model=e,this._viewLineNumber=t,this._isValid=i,this._modelTrackedRange=n,this._startLineDelta=o}dispose(){this._model._setTrackedRange(this._modelTrackedRange,null,1)}update(e,t){const i=e.coordinatesConverter.convertViewPositionToModelPosition(new G.L(t,e.getLineMinColumn(t))),n=e.model._setTrackedRange(this._modelTrackedRange,new Q.e(i.lineNumber,i.column,i.lineNumber,i.column),1),o=e.viewLayout.getVerticalOffsetForLineNumber(t),s=e.viewLayout.getCurrentScrollTop();this._viewLineNumber=t,this._isValid=!0,this._modelTrackedRange=n,this._startLineDelta=s-o}invalidate(){this._isValid=!1}}class zo{constructor(){this._asMap=Object.create(null),this.asArray=[]}accept(e,t,i,n,o){const s=this._asMap[e];if(s){const e=s.data,t=e[e.length-3],r=e[e.length-1];if(t===o&&r+1>=i)return void(n>r&&(e[e.length-1]=n));e.push(o,i,n)}else{const s=new Ht.SQ(e,t,[o,i,n]);this._asMap[e]=s,this.asArray.push(s)}}}class Vo{constructor(){this.hiddenAreas=new Map,this.shouldRecompute=!1,this.ranges=[]}setHiddenAreas(e,t){const i=this.hiddenAreas.get(e);i&&Wo(i,t)||(this.hiddenAreas.set(e,t),this.shouldRecompute=!0)}getMergedRanges(){if(!this.shouldRecompute)return this.ranges;this.shouldRecompute=!1;const e=Array.from(this.hiddenAreas.values()).reduce(((e,t)=>function(e,t){const i=[];let n=0,o=0;for(;n=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Zo=function(e,t){return function(i,n){t(i,n,e)}};let Yo=Ko=class extends c.JT{get isSimpleWidget(){return this._configuration.isSimpleWidget}constructor(e,t,i,n,s,r,a,c,u,g,m,f){var p;super(),this.languageConfigurationService=m,this._deliveryQueue=(0,d.Sp)(),this._contributions=this._register(new $i),this._onDidDispose=this._register(new d.Q5),this.onDidDispose=this._onDidDispose.event,this._onDidChangeModelContent=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelContent=this._onDidChangeModelContent.event,this._onDidChangeModelLanguage=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelLanguage=this._onDidChangeModelLanguage.event,this._onDidChangeModelLanguageConfiguration=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelLanguageConfiguration=this._onDidChangeModelLanguageConfiguration.event,this._onDidChangeModelOptions=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelOptions=this._onDidChangeModelOptions.event,this._onDidChangeModelDecorations=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelDecorations=this._onDidChangeModelDecorations.event,this._onDidChangeModelTokens=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelTokens=this._onDidChangeModelTokens.event,this._onDidChangeConfiguration=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeConfiguration=this._onDidChangeConfiguration.event,this._onWillChangeModel=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onWillChangeModel=this._onWillChangeModel.event,this._onDidChangeModel=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeModel=this._onDidChangeModel.event,this._onDidChangeCursorPosition=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeCursorPosition=this._onDidChangeCursorPosition.event,this._onDidChangeCursorSelection=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeCursorSelection=this._onDidChangeCursorSelection.event,this._onDidAttemptReadOnlyEdit=this._register(new es(this._contributions,this._deliveryQueue)),this.onDidAttemptReadOnlyEdit=this._onDidAttemptReadOnlyEdit.event,this._onDidLayoutChange=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidLayoutChange=this._onDidLayoutChange.event,this._editorTextFocus=this._register(new Xo({deliveryQueue:this._deliveryQueue})),this.onDidFocusEditorText=this._editorTextFocus.onDidChangeToTrue,this.onDidBlurEditorText=this._editorTextFocus.onDidChangeToFalse,this._editorWidgetFocus=this._register(new Xo({deliveryQueue:this._deliveryQueue})),this.onDidFocusEditorWidget=this._editorWidgetFocus.onDidChangeToTrue,this.onDidBlurEditorWidget=this._editorWidgetFocus.onDidChangeToFalse,this._onWillType=this._register(new es(this._contributions,this._deliveryQueue)),this.onWillType=this._onWillType.event,this._onDidType=this._register(new es(this._contributions,this._deliveryQueue)),this.onDidType=this._onDidType.event,this._onDidCompositionStart=this._register(new es(this._contributions,this._deliveryQueue)),this.onDidCompositionStart=this._onDidCompositionStart.event,this._onDidCompositionEnd=this._register(new es(this._contributions,this._deliveryQueue)),this.onDidCompositionEnd=this._onDidCompositionEnd.event,this._onDidPaste=this._register(new es(this._contributions,this._deliveryQueue)),this.onDidPaste=this._onDidPaste.event,this._onMouseUp=this._register(new es(this._contributions,this._deliveryQueue)),this.onMouseUp=this._onMouseUp.event,this._onMouseDown=this._register(new es(this._contributions,this._deliveryQueue)),this.onMouseDown=this._onMouseDown.event,this._onMouseDrag=this._register(new es(this._contributions,this._deliveryQueue)),this.onMouseDrag=this._onMouseDrag.event,this._onMouseDrop=this._register(new es(this._contributions,this._deliveryQueue)),this.onMouseDrop=this._onMouseDrop.event,this._onMouseDropCanceled=this._register(new es(this._contributions,this._deliveryQueue)),this.onMouseDropCanceled=this._onMouseDropCanceled.event,this._onDropIntoEditor=this._register(new es(this._contributions,this._deliveryQueue)),this.onDropIntoEditor=this._onDropIntoEditor.event,this._onContextMenu=this._register(new es(this._contributions,this._deliveryQueue)),this.onContextMenu=this._onContextMenu.event,this._onMouseMove=this._register(new es(this._contributions,this._deliveryQueue)),this.onMouseMove=this._onMouseMove.event,this._onMouseLeave=this._register(new es(this._contributions,this._deliveryQueue)),this.onMouseLeave=this._onMouseLeave.event,this._onMouseWheel=this._register(new es(this._contributions,this._deliveryQueue)),this.onMouseWheel=this._onMouseWheel.event,this._onKeyUp=this._register(new es(this._contributions,this._deliveryQueue)),this.onKeyUp=this._onKeyUp.event,this._onKeyDown=this._register(new es(this._contributions,this._deliveryQueue)),this.onKeyDown=this._onKeyDown.event,this._onDidContentSizeChange=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._onDidScrollChange=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidScrollChange=this._onDidScrollChange.event,this._onDidChangeViewZones=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeViewZones=this._onDidChangeViewZones.event,this._onDidChangeHiddenAreas=this._register(new d.Q5({deliveryQueue:this._deliveryQueue})),this.onDidChangeHiddenAreas=this._onDidChangeHiddenAreas.event,this._actions=new Map,this._bannerDomNode=null,this._dropIntoEditorDecorations=this.createDecorationsCollection(),s.willCreateCodeEditor();const _={...t};let v;this._domElement=e,this._overflowWidgetsDomNode=_.overflowWidgetsDomNode,delete _.overflowWidgetsDomNode,this._id=++$o,this._decorationTypeKeysToIds={},this._decorationTypeSubtypes={},this._telemetryData=i.telemetryData,this._configuration=this._register(this._createConfiguration(i.isSimpleWidget||!1,_,g)),this._register(this._configuration.onDidChange((e=>{this._onDidChangeConfiguration.fire(e);const t=this._configuration.options;if(e.hasChanged(145)){const e=t.get(145);this._onDidLayoutChange.fire(e)}}))),this._contextKeyService=this._register(a.createScoped(this._domElement)),this._notificationService=u,this._codeEditorService=s,this._commandService=r,this._themeService=c,this._register(new ts(this,this._contextKeyService)),this._register(new is(this,this._contextKeyService,f)),this._instantiationService=n.createChild(new qo.y([jo.i6,this._contextKeyService])),this._modelData=null,this._focusTracker=new ns(e,this._overflowWidgetsDomNode),this._register(this._focusTracker.onChange((()=>{this._editorWidgetFocus.setValue(this._focusTracker.hasFocus())}))),this._contentWidgets={},this._overlayWidgets={},this._glyphMarginWidgets={},v=Array.isArray(i.contributions)?i.contributions:o.Uc.getEditorContributions(),this._contributions.initialize(this,v,this._instantiationService);for(const l of o.Uc.getEditorActions()){if(this._actions.has(l.id)){(0,h.dL)(new Error("Cannot have two actions with the same id ".concat(l.id)));continue}const e=new Xi.p(l.id,l.label,l.alias,l.metadata,null!==(p=l.precondition)&&void 0!==p?p:void 0,(e=>this._instantiationService.invokeFunction((t=>Promise.resolve(l.runEditorCommand(t,this,e))))),this._contextKeyService);this._actions.set(e.id,e)}const b=()=>!this._configuration.options.get(91)&&this._configuration.options.get(36).enabled;this._register(new l.eg(this._domElement,{onDragOver:e=>{if(!b())return;const t=this.getTargetAtClientPoint(e.clientX,e.clientY);(null===t||void 0===t?void 0:t.position)&&this.showDropIndicatorAt(t.position)},onDrop:async e=>{if(!b())return;if(this.removeDropIndicator(),!e.dataTransfer)return;const t=this.getTargetAtClientPoint(e.clientX,e.clientY);(null===t||void 0===t?void 0:t.position)&&this._onDropIntoEditor.fire({position:t.position,event:e})},onDragLeave:()=>{this.removeDropIndicator()},onDragEnd:()=>{this.removeDropIndicator()}})),this._codeEditorService.addCodeEditor(this)}writeScreenReaderContent(e){var t;null===(t=this._modelData)||void 0===t||t.view.writeScreenReaderContent(e)}_createConfiguration(e,t,i){return new M(e,t,this._domElement,i)}getId(){return this.getEditorType()+":"+this._id}getEditorType(){return en.g.ICodeEditor}dispose(){this._codeEditorService.removeCodeEditor(this),this._focusTracker.dispose(),this._actions.clear(),this._contentWidgets={},this._overlayWidgets={},this._removeDecorationTypes(),this._postDetachModelCleanup(this._detachModel()),this._onDidDispose.fire(),super.dispose()}invokeWithinContext(e){return this._instantiationService.invokeFunction(e)}updateOptions(e){this._configuration.updateOptions(e||{})}getOptions(){return this._configuration.options}getOption(e){return this._configuration.options.get(e)}getRawOptions(){return this._configuration.getRawOptions()}getOverflowWidgetsDomNode(){return this._overflowWidgetsDomNode}getConfiguredWordAtPosition(e){return this._modelData?Ji.w.getWordAtPosition(this._modelData.model,this._configuration.options.get(131),this._configuration.options.get(130),e):null}getValue(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!this._modelData)return"";const t=!(!e||!e.preserveBOM);let i=0;return e&&e.lineEnding&&"\n"===e.lineEnding?i=1:e&&e.lineEnding&&"\r\n"===e.lineEnding&&(i=2),this._modelData.model.getValue(i,t)}setValue(e){this._modelData&&this._modelData.model.setValue(e)}getModel(){return this._modelData?this._modelData.model:null}setModel(){var e;const t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(null===this._modelData&&null===t)return;if(this._modelData&&this._modelData.model===t)return;const i={oldModelUrl:(null===(e=this._modelData)||void 0===e?void 0:e.model.uri)||null,newModelUrl:(null===t||void 0===t?void 0:t.uri)||null};this._onWillChangeModel.fire(i);const n=this.hasTextFocus(),o=this._detachModel();this._attachModel(t),n&&this.hasModel()&&this.focus(),this._removeDecorationTypes(),this._onDidChangeModel.fire(i),this._postDetachModelCleanup(o),this._contributionsDisposable=this._contributions.onAfterModelAttached()}_removeDecorationTypes(){if(this._decorationTypeKeysToIds={},this._decorationTypeSubtypes){for(const e in this._decorationTypeSubtypes){const t=this._decorationTypeSubtypes[e];for(const i in t)this._removeDecorationType(e+"-"+i)}this._decorationTypeSubtypes={}}}getVisibleRanges(){return this._modelData?this._modelData.viewModel.getVisibleRanges():[]}getVisibleRangesPlusViewportAboveBelow(){return this._modelData?this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow():[]}getWhitespaces(){return this._modelData?this._modelData.viewModel.viewLayout.getWhitespaces():[]}static _getVerticalOffsetAfterPosition(e,t,i,n){const o=e.model.validatePosition({lineNumber:t,column:i}),s=e.viewModel.coordinatesConverter.convertModelPositionToViewPosition(o);return e.viewModel.viewLayout.getVerticalOffsetAfterLineNumber(s.lineNumber,n)}getTopForLineNumber(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this._modelData?Ko._getVerticalOffsetForPosition(this._modelData,e,1,t):-1}getTopForPosition(e,t){return this._modelData?Ko._getVerticalOffsetForPosition(this._modelData,e,t,!1):-1}static _getVerticalOffsetForPosition(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const o=e.model.validatePosition({lineNumber:t,column:i}),s=e.viewModel.coordinatesConverter.convertModelPositionToViewPosition(o);return e.viewModel.viewLayout.getVerticalOffsetForLineNumber(s.lineNumber,n)}getBottomForLineNumber(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this._modelData?Ko._getVerticalOffsetAfterPosition(this._modelData,e,1,t):-1}setHiddenAreas(e,t){var i;null===(i=this._modelData)||void 0===i||i.viewModel.setHiddenAreas(e.map((e=>Q.e.lift(e))),t)}getVisibleColumnFromPosition(e){if(!this._modelData)return e.column;const t=this._modelData.model.validatePosition(e),i=this._modelData.model.getOptions().tabSize;return Z.i.visibleColumnFromColumn(this._modelData.model.getLineContent(t.lineNumber),t.column,i)+1}getPosition(){return this._modelData?this._modelData.viewModel.getPosition():null}setPosition(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"api";if(this._modelData){if(!G.L.isIPosition(e))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(t,[{selectionStartLineNumber:e.lineNumber,selectionStartColumn:e.column,positionLineNumber:e.lineNumber,positionColumn:e.column}])}}_sendRevealRange(e,t,i,n){if(!this._modelData)return;if(!Q.e.isIRange(e))throw new Error("Invalid arguments");const o=this._modelData.model.validateRange(e),s=this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(o);this._modelData.viewModel.revealRange("api",i,s,t,n)}revealLine(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealLine(e,0,t)}revealLineInCenter(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealLine(e,1,t)}revealLineInCenterIfOutsideViewport(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealLine(e,2,t)}revealLineNearTop(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealLine(e,5,t)}_revealLine(e,t,i){if("number"!==typeof e)throw new Error("Invalid arguments");this._sendRevealRange(new Q.e(e,1,e,1),t,!1,i)}revealPosition(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealPosition(e,0,!0,t)}revealPositionInCenter(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealPosition(e,1,!0,t)}revealPositionInCenterIfOutsideViewport(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealPosition(e,2,!0,t)}revealPositionNearTop(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealPosition(e,5,!0,t)}_revealPosition(e,t,i,n){if(!G.L.isIPosition(e))throw new Error("Invalid arguments");this._sendRevealRange(new Q.e(e.lineNumber,e.column,e.lineNumber,e.column),t,i,n)}getSelection(){return this._modelData?this._modelData.viewModel.getSelection():null}getSelections(){return this._modelData?this._modelData.viewModel.getSelections():null}setSelection(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"api";const i=me.Y.isISelection(e),n=Q.e.isIRange(e);if(!i&&!n)throw new Error("Invalid arguments");if(i)this._setSelectionImpl(e,t);else if(n){const i={selectionStartLineNumber:e.startLineNumber,selectionStartColumn:e.startColumn,positionLineNumber:e.endLineNumber,positionColumn:e.endColumn};this._setSelectionImpl(i,t)}}_setSelectionImpl(e,t){if(!this._modelData)return;const i=new me.Y(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn);this._modelData.viewModel.setSelections(t,[i])}revealLines(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._revealLines(e,t,0,i)}revealLinesInCenter(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._revealLines(e,t,1,i)}revealLinesInCenterIfOutsideViewport(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._revealLines(e,t,2,i)}revealLinesNearTop(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._revealLines(e,t,5,i)}_revealLines(e,t,i,n){if("number"!==typeof e||"number"!==typeof t)throw new Error("Invalid arguments");this._sendRevealRange(new Q.e(e,1,t,1),i,!1,n)}revealRange(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];this._revealRange(e,i?1:0,n,t)}revealRangeInCenter(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealRange(e,1,!0,t)}revealRangeInCenterIfOutsideViewport(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealRange(e,2,!0,t)}revealRangeNearTop(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealRange(e,5,!0,t)}revealRangeNearTopIfOutsideViewport(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealRange(e,6,!0,t)}revealRangeAtTop(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealRange(e,3,!0,t)}_revealRange(e,t,i,n){if(!Q.e.isIRange(e))throw new Error("Invalid arguments");this._sendRevealRange(Q.e.lift(e),t,i,n)}setSelections(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"api",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(this._modelData){if(!e||0===e.length)throw new Error("Invalid arguments");for(let t=0,i=e.length;t1&&void 0!==arguments[1]?arguments[1]:1;if(this._modelData){if("number"!==typeof e)throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollLeft:e},t)}}setScrollTop(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(this._modelData){if("number"!==typeof e)throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollTop:e},t)}}setScrollPosition(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this._modelData&&this._modelData.viewModel.viewLayout.setScrollPosition(e,t)}hasPendingScrollAnimation(){return!!this._modelData&&this._modelData.viewModel.viewLayout.hasPendingScrollAnimation()}saveViewState(){if(!this._modelData)return null;const e=this._contributions.saveViewState();return{cursorState:this._modelData.viewModel.saveCursorState(),viewState:this._modelData.viewModel.saveState(),contributionsState:e}}restoreViewState(e){if(!this._modelData||!this._modelData.hasRealView)return;const t=e;if(t&&t.cursorState&&t.viewState){const e=t.cursorState;Array.isArray(e)?e.length>0&&this._modelData.viewModel.restoreCursorState(e):this._modelData.viewModel.restoreCursorState([e]),this._contributions.restoreViewState(t.contributionsState||{});const i=this._modelData.viewModel.reduceRestoreState(t.viewState);this._modelData.view.restoreState(i)}}handleInitialized(){var e;null===(e=this._getViewModel())||void 0===e||e.visibleLinesStabilized()}getContribution(e){return this._contributions.get(e)}getActions(){return Array.from(this._actions.values())}getSupportedActions(){let e=this.getActions();return e=e.filter((e=>e.isSupported())),e}getAction(e){return this._actions.get(e)||null}trigger(e,t,i){switch(i=i||{},t){case"compositionStart":return void this._startComposition();case"compositionEnd":return void this._endComposition(e);case"type":{const t=i;return void this._type(e,t.text||"")}case"replacePreviousChar":{const t=i;return void this._compositionType(e,t.text||"",t.replaceCharCnt||0,0,0)}case"compositionType":{const t=i;return void this._compositionType(e,t.text||"",t.replacePrevCharCnt||0,t.replaceNextCharCnt||0,t.positionDelta||0)}case"paste":{const t=i;return void this._paste(e,t.text||"",t.pasteOnNewLine||!1,t.multicursorText||null,t.mode||null,t.clipboardEvent)}case"cut":return void this._cut(e)}const n=this.getAction(t);n?Promise.resolve(n.run(i)).then(void 0,h.dL):this._modelData&&(this._triggerEditorCommand(e,t,i)||this._triggerCommand(t,i))}_triggerCommand(e,t){this._commandService.executeCommand(e,t)}_startComposition(){this._modelData&&(this._modelData.viewModel.startComposition(),this._onDidCompositionStart.fire())}_endComposition(e){this._modelData&&(this._modelData.viewModel.endComposition(e),this._onDidCompositionEnd.fire())}_type(e,t){this._modelData&&0!==t.length&&("keyboard"===e&&this._onWillType.fire(t),this._modelData.viewModel.type(t,e),"keyboard"===e&&this._onDidType.fire(t))}_compositionType(e,t,i,n,o){this._modelData&&this._modelData.viewModel.compositionType(t,i,n,o,e)}_paste(e,t,i,n,o,s){if(!this._modelData)return;const r=this._modelData.viewModel,a=r.getSelection().getStartPosition();r.paste(t,i,n,e);const l=r.getSelection().getStartPosition();"keyboard"===e&&this._onDidPaste.fire({clipboardEvent:s,range:new Q.e(a.lineNumber,a.column,l.lineNumber,l.column),languageId:o})}_cut(e){this._modelData&&this._modelData.viewModel.cut(e)}_triggerEditorCommand(e,t,i){const n=o.Uc.getEditorCommand(t);return!!n&&((i=i||{}).source=e,this._instantiationService.invokeFunction((e=>{Promise.resolve(n.runEditorCommand(e,this,i)).then(void 0,h.dL)})),!0)}_getViewModel(){return this._modelData?this._modelData.viewModel:null}pushUndoStop(){return!!this._modelData&&(!this._configuration.options.get(91)&&(this._modelData.model.pushStackElement(),!0))}popUndoStop(){return!!this._modelData&&(!this._configuration.options.get(91)&&(this._modelData.model.popStackElement(),!0))}executeEdits(e,t,i){if(!this._modelData)return!1;if(this._configuration.options.get(91))return!1;let n;return n=i?Array.isArray(i)?()=>i:i:()=>null,this._modelData.viewModel.executeEdits(e,t,n),!0}executeCommand(e,t){this._modelData&&this._modelData.viewModel.executeCommand(t,e)}executeCommands(e,t){this._modelData&&this._modelData.viewModel.executeCommands(t,e)}createDecorationsCollection(e){return new os(this,e)}changeDecorations(e){return this._modelData?this._modelData.model.changeDecorations(e,this._id):null}getLineDecorations(e){return this._modelData?this._modelData.model.getLineDecorations(e,this._id,(0,k.$J)(this._configuration.options)):null}getDecorationsInRange(e){return this._modelData?this._modelData.model.getDecorationsInRange(e,this._id,(0,k.$J)(this._configuration.options)):null}deltaDecorations(e,t){return this._modelData?0===e.length&&0===t.length?e:this._modelData.model.deltaDecorations(e,t,this._id):[]}removeDecorations(e){this._modelData&&0!==e.length&&this._modelData.model.changeDecorations((t=>{t.deltaDecorations(e,[])}))}removeDecorationsByType(e){const t=this._decorationTypeKeysToIds[e];t&&this.changeDecorations((e=>e.deltaDecorations(t,[]))),this._decorationTypeKeysToIds.hasOwnProperty(e)&&delete this._decorationTypeKeysToIds[e],this._decorationTypeSubtypes.hasOwnProperty(e)&&delete this._decorationTypeSubtypes[e]}getLayoutInfo(){return this._configuration.options.get(145)}createOverviewRuler(e){return this._modelData&&this._modelData.hasRealView?this._modelData.view.createOverviewRuler(e):null}getContainerDomNode(){return this._domElement}getDomNode(){return this._modelData&&this._modelData.hasRealView?this._modelData.view.domNode.domNode:null}delegateVerticalScrollbarPointerDown(e){this._modelData&&this._modelData.hasRealView&&this._modelData.view.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){this._modelData&&this._modelData.hasRealView&&this._modelData.view.delegateScrollFromMouseWheelEvent(e)}layout(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._configuration.observeContainer(e),t||this.render()}focus(){this._modelData&&this._modelData.hasRealView&&this._modelData.view.focus()}hasTextFocus(){return!(!this._modelData||!this._modelData.hasRealView)&&this._modelData.view.isFocused()}hasWidgetFocus(){return this._focusTracker&&this._focusTracker.hasFocus()}addContentWidget(e){const t={widget:e,position:e.getPosition()};this._contentWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting a content widget with the same id:"+e.getId()),this._contentWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addContentWidget(t)}layoutContentWidget(e){const t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){const i=this._contentWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutContentWidget(i)}}removeContentWidget(e){const t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){const e=this._contentWidgets[t];delete this._contentWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeContentWidget(e)}}addOverlayWidget(e){const t={widget:e,position:e.getPosition()};this._overlayWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting an overlay widget with the same id."),this._overlayWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addOverlayWidget(t)}layoutOverlayWidget(e){const t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){const i=this._overlayWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutOverlayWidget(i)}}removeOverlayWidget(e){const t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){const e=this._overlayWidgets[t];delete this._overlayWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeOverlayWidget(e)}}addGlyphMarginWidget(e){const t={widget:e,position:e.getPosition()};this._glyphMarginWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting a glyph margin widget with the same id."),this._glyphMarginWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addGlyphMarginWidget(t)}layoutGlyphMarginWidget(e){const t=e.getId();if(this._glyphMarginWidgets.hasOwnProperty(t)){const i=this._glyphMarginWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutGlyphMarginWidget(i)}}removeGlyphMarginWidget(e){const t=e.getId();if(this._glyphMarginWidgets.hasOwnProperty(t)){const e=this._glyphMarginWidgets[t];delete this._glyphMarginWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeGlyphMarginWidget(e)}}changeViewZones(e){this._modelData&&this._modelData.hasRealView&&this._modelData.view.change(e)}getTargetAtClientPoint(e,t){return this._modelData&&this._modelData.hasRealView?this._modelData.view.getTargetAtClientPoint(e,t):null}getScrolledVisiblePosition(e){if(!this._modelData||!this._modelData.hasRealView)return null;const t=this._modelData.model.validatePosition(e),i=this._configuration.options,n=i.get(145);return{top:Ko._getVerticalOffsetForPosition(this._modelData,t.lineNumber,t.column)-this.getScrollTop(),left:this._modelData.view.getOffsetForColumn(t.lineNumber,t.column)+n.glyphMarginWidth+n.lineNumbersWidth+n.decorationsWidth-this.getScrollLeft(),height:i.get(67)}}getOffsetForColumn(e,t){return this._modelData&&this._modelData.hasRealView?this._modelData.view.getOffsetForColumn(e,t):-1}render(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._modelData&&this._modelData.hasRealView&&this._modelData.view.render(!0,e)}setAriaOptions(e){this._modelData&&this._modelData.hasRealView&&this._modelData.view.setAriaOptions(e)}applyFontInfo(e){(0,g.N)(e,this._configuration.options.get(50))}setBanner(e,t){this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._domElement.removeChild(this._bannerDomNode),this._bannerDomNode=e,this._configuration.setReservedHeight(e?t:0),this._bannerDomNode&&this._domElement.prepend(this._bannerDomNode)}_attachModel(e){if(!e)return void(this._modelData=null);const t=[];this._domElement.setAttribute("data-mode-id",e.getLanguageId()),this._configuration.setIsDominatedByLongLines(e.isDominatedByLongLines()),this._configuration.setModelLineCount(e.getLineCount());const i=e.onBeforeAttached(),n=new Fo(this._id,this._configuration,e,qi.create(l.Jj(this._domElement)),an.create(this._configuration.options),(e=>l.jL(l.Jj(this._domElement),e)),this.languageConfigurationService,this._themeService,i);t.push(e.onWillDispose((()=>this.setModel(null)))),t.push(n.onEvent((t=>{switch(t.kind){case 0:this._onDidContentSizeChange.fire(t);break;case 1:this._editorTextFocus.setValue(t.hasFocus);break;case 2:this._onDidScrollChange.fire(t);break;case 3:this._onDidChangeViewZones.fire();break;case 4:this._onDidChangeHiddenAreas.fire();break;case 5:this._onDidAttemptReadOnlyEdit.fire();break;case 6:{if(t.reachedMaxCursorCount){const e=this.getOption(80),t=ke.NC("cursors.maximum","The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.",e);this._notificationService.prompt(Go.zb.Warning,t,[{label:"Find and Replace",run:()=>{this._commandService.executeCommand("editor.action.startFindReplaceAction")}},{label:ke.NC("goToSetting","Increase Multi Cursor Limit"),run:()=>{this._commandService.executeCommand("workbench.action.openSettings2",{query:"editor.multiCursorLimit"})}}])}const e=[];for(let o=0,s=t.selections.length;o{this._paste("keyboard",e,t,i,n)},type:e=>{this._type("keyboard",e)},compositionType:(e,t,i,n)=>{this._compositionType("keyboard",e,t,i,n)},startComposition:()=>{this._startComposition()},endComposition:()=>{this._endComposition("keyboard")},cut:()=>{this._cut("keyboard")}}:{paste:(e,t,i,n)=>{const o={text:e,pasteOnNewLine:t,multicursorText:i,mode:n};this._commandService.executeCommand("paste",o)},type:e=>{const t={text:e};this._commandService.executeCommand("type",t)},compositionType:(e,t,i,n)=>{if(i||n){const o={text:e,replacePrevCharCnt:t,replaceNextCharCnt:i,positionDelta:n};this._commandService.executeCommand("compositionType",o)}else{const i={text:e,replaceCharCnt:t};this._commandService.executeCommand("replacePreviousChar",i)}},startComposition:()=>{this._commandService.executeCommand("compositionStart",{})},endComposition:()=>{this._commandService.executeCommand("compositionEnd",{})},cut:()=>{this._commandService.executeCommand("cut",{})}};const i=new nt(e.coordinatesConverter);i.onKeyDown=e=>this._onKeyDown.fire(e),i.onKeyUp=e=>this._onKeyUp.fire(e),i.onContextMenu=e=>this._onContextMenu.fire(e),i.onMouseMove=e=>this._onMouseMove.fire(e),i.onMouseLeave=e=>this._onMouseLeave.fire(e),i.onMouseDown=e=>this._onMouseDown.fire(e),i.onMouseUp=e=>this._onMouseUp.fire(e),i.onMouseDrag=e=>this._onMouseDrag.fire(e),i.onMouseDrop=e=>this._onMouseDrop.fire(e),i.onMouseDropCanceled=e=>this._onMouseDropCanceled.fire(e),i.onMouseWheel=e=>this._onMouseWheel.fire(e);return[new Pi(t,this._configuration,this._themeService.getColorTheme(),e,i,this._overflowWidgetsDomNode,this._instantiationService),!0]}_postDetachModelCleanup(e){null===e||void 0===e||e.removeAllDecorationsWithOwnerId(this._id)}_detachModel(){var e;if(null===(e=this._contributionsDisposable)||void 0===e||e.dispose(),this._contributionsDisposable=void 0,!this._modelData)return null;const t=this._modelData.model,i=this._modelData.hasRealView?this._modelData.view.domNode.domNode:null;return this._modelData.dispose(),this._modelData=null,this._domElement.removeAttribute("data-mode-id"),i&&this._domElement.contains(i)&&this._domElement.removeChild(i),this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._domElement.removeChild(this._bannerDomNode),t}_removeDecorationType(e){this._codeEditorService.removeDecorationType(e)}hasModel(){return null!==this._modelData}showDropIndicatorAt(e){const t=[{range:new Q.e(e.lineNumber,e.column,e.lineNumber,e.column),options:Ko.dropIntoEditorDecorationOptions}];this._dropIntoEditorDecorations.set(t),this.revealPosition(e,1)}removeDropIndicator(){this._dropIntoEditorDecorations.clear()}setContextValue(e,t){this._contextKeyService.createKey(e,t)}};Yo.dropIntoEditorDecorationOptions=on.qx.register({description:"workbench-dnd-target",className:"dnd-target"}),Yo=Ko=Qo([Zo(3,ze.TG),Zo(4,B.$),Zo(5,Uo.H),Zo(6,jo.i6),Zo(7,Ee.XE),Zo(8,Go.lT),Zo(9,x.F),Zo(10,nn.c_),Zo(11,sn.p)],Yo);let $o=0;class Jo{constructor(e,t,i,n,o,s){this.model=e,this.viewModel=t,this.view=i,this.hasRealView=n,this.listenersToRemove=o,this.attachedView=s}dispose(){(0,c.B9)(this.listenersToRemove),this.model.onBeforeDetached(this.attachedView),this.hasRealView&&this.view.dispose(),this.viewModel.dispose()}}class Xo extends c.JT{constructor(e){super(),this._emitterOptions=e,this._onDidChangeToTrue=this._register(new d.Q5(this._emitterOptions)),this.onDidChangeToTrue=this._onDidChangeToTrue.event,this._onDidChangeToFalse=this._register(new d.Q5(this._emitterOptions)),this.onDidChangeToFalse=this._onDidChangeToFalse.event,this._value=0}setValue(e){const t=e?2:1;this._value!==t&&(this._value=t,2===this._value?this._onDidChangeToTrue.fire():1===this._value&&this._onDidChangeToFalse.fire())}}class es extends d.Q5{constructor(e,t){super({deliveryQueue:t}),this._contributions=e}fire(e){this._contributions.onBeforeInteractionEvent(),super.fire(e)}}class ts extends c.JT{constructor(e,t){super(),this._editor=e,t.createKey("editorId",e.getId()),this._editorSimpleInput=tn.u.editorSimpleInput.bindTo(t),this._editorFocus=tn.u.focus.bindTo(t),this._textInputFocus=tn.u.textInputFocus.bindTo(t),this._editorTextFocus=tn.u.editorTextFocus.bindTo(t),this._tabMovesFocus=tn.u.tabMovesFocus.bindTo(t),this._editorReadonly=tn.u.readOnly.bindTo(t),this._inDiffEditor=tn.u.inDiffEditor.bindTo(t),this._editorColumnSelection=tn.u.columnSelection.bindTo(t),this._hasMultipleSelections=tn.u.hasMultipleSelections.bindTo(t),this._hasNonEmptySelection=tn.u.hasNonEmptySelection.bindTo(t),this._canUndo=tn.u.canUndo.bindTo(t),this._canRedo=tn.u.canRedo.bindTo(t),this._register(this._editor.onDidChangeConfiguration((()=>this._updateFromConfig()))),this._register(this._editor.onDidChangeCursorSelection((()=>this._updateFromSelection()))),this._register(this._editor.onDidFocusEditorWidget((()=>this._updateFromFocus()))),this._register(this._editor.onDidBlurEditorWidget((()=>this._updateFromFocus()))),this._register(this._editor.onDidFocusEditorText((()=>this._updateFromFocus()))),this._register(this._editor.onDidBlurEditorText((()=>this._updateFromFocus()))),this._register(this._editor.onDidChangeModel((()=>this._updateFromModel()))),this._register(this._editor.onDidChangeConfiguration((()=>this._updateFromModel()))),this._register(L.n.onDidChangeTabFocus((e=>this._tabMovesFocus.set(e)))),this._updateFromConfig(),this._updateFromSelection(),this._updateFromFocus(),this._updateFromModel(),this._editorSimpleInput.set(this._editor.isSimpleWidget)}_updateFromConfig(){const e=this._editor.getOptions();this._tabMovesFocus.set(L.n.getTabFocusMode()),this._editorReadonly.set(e.get(91)),this._inDiffEditor.set(e.get(61)),this._editorColumnSelection.set(e.get(22))}_updateFromSelection(){const e=this._editor.getSelections();e?(this._hasMultipleSelections.set(e.length>1),this._hasNonEmptySelection.set(e.some((e=>!e.isEmpty())))):(this._hasMultipleSelections.reset(),this._hasNonEmptySelection.reset())}_updateFromFocus(){this._editorFocus.set(this._editor.hasWidgetFocus()&&!this._editor.isSimpleWidget),this._editorTextFocus.set(this._editor.hasTextFocus()&&!this._editor.isSimpleWidget),this._textInputFocus.set(this._editor.hasTextFocus())}_updateFromModel(){const e=this._editor.getModel();this._canUndo.set(Boolean(e&&e.canUndo())),this._canRedo.set(Boolean(e&&e.canRedo()))}}class is extends c.JT{constructor(e,t,i){super(),this._editor=e,this._contextKeyService=t,this._languageFeaturesService=i,this._langId=tn.u.languageId.bindTo(t),this._hasCompletionItemProvider=tn.u.hasCompletionItemProvider.bindTo(t),this._hasCodeActionsProvider=tn.u.hasCodeActionsProvider.bindTo(t),this._hasCodeLensProvider=tn.u.hasCodeLensProvider.bindTo(t),this._hasDefinitionProvider=tn.u.hasDefinitionProvider.bindTo(t),this._hasDeclarationProvider=tn.u.hasDeclarationProvider.bindTo(t),this._hasImplementationProvider=tn.u.hasImplementationProvider.bindTo(t),this._hasTypeDefinitionProvider=tn.u.hasTypeDefinitionProvider.bindTo(t),this._hasHoverProvider=tn.u.hasHoverProvider.bindTo(t),this._hasDocumentHighlightProvider=tn.u.hasDocumentHighlightProvider.bindTo(t),this._hasDocumentSymbolProvider=tn.u.hasDocumentSymbolProvider.bindTo(t),this._hasReferenceProvider=tn.u.hasReferenceProvider.bindTo(t),this._hasRenameProvider=tn.u.hasRenameProvider.bindTo(t),this._hasSignatureHelpProvider=tn.u.hasSignatureHelpProvider.bindTo(t),this._hasInlayHintsProvider=tn.u.hasInlayHintsProvider.bindTo(t),this._hasDocumentFormattingProvider=tn.u.hasDocumentFormattingProvider.bindTo(t),this._hasDocumentSelectionFormattingProvider=tn.u.hasDocumentSelectionFormattingProvider.bindTo(t),this._hasMultipleDocumentFormattingProvider=tn.u.hasMultipleDocumentFormattingProvider.bindTo(t),this._hasMultipleDocumentSelectionFormattingProvider=tn.u.hasMultipleDocumentSelectionFormattingProvider.bindTo(t),this._isInEmbeddedEditor=tn.u.isInEmbeddedEditor.bindTo(t);const n=()=>this._update();this._register(e.onDidChangeModel(n)),this._register(e.onDidChangeModelLanguage(n)),this._register(i.completionProvider.onDidChange(n)),this._register(i.codeActionProvider.onDidChange(n)),this._register(i.codeLensProvider.onDidChange(n)),this._register(i.definitionProvider.onDidChange(n)),this._register(i.declarationProvider.onDidChange(n)),this._register(i.implementationProvider.onDidChange(n)),this._register(i.typeDefinitionProvider.onDidChange(n)),this._register(i.hoverProvider.onDidChange(n)),this._register(i.documentHighlightProvider.onDidChange(n)),this._register(i.documentSymbolProvider.onDidChange(n)),this._register(i.referenceProvider.onDidChange(n)),this._register(i.renameProvider.onDidChange(n)),this._register(i.documentFormattingEditProvider.onDidChange(n)),this._register(i.documentRangeFormattingEditProvider.onDidChange(n)),this._register(i.signatureHelpProvider.onDidChange(n)),this._register(i.inlayHintsProvider.onDidChange(n)),n()}dispose(){super.dispose()}reset(){this._contextKeyService.bufferChangeEvents((()=>{this._langId.reset(),this._hasCompletionItemProvider.reset(),this._hasCodeActionsProvider.reset(),this._hasCodeLensProvider.reset(),this._hasDefinitionProvider.reset(),this._hasDeclarationProvider.reset(),this._hasImplementationProvider.reset(),this._hasTypeDefinitionProvider.reset(),this._hasHoverProvider.reset(),this._hasDocumentHighlightProvider.reset(),this._hasDocumentSymbolProvider.reset(),this._hasReferenceProvider.reset(),this._hasRenameProvider.reset(),this._hasDocumentFormattingProvider.reset(),this._hasDocumentSelectionFormattingProvider.reset(),this._hasSignatureHelpProvider.reset(),this._isInEmbeddedEditor.reset()}))}_update(){const e=this._editor.getModel();e?this._contextKeyService.bufferChangeEvents((()=>{this._langId.set(e.getLanguageId()),this._hasCompletionItemProvider.set(this._languageFeaturesService.completionProvider.has(e)),this._hasCodeActionsProvider.set(this._languageFeaturesService.codeActionProvider.has(e)),this._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(e)),this._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(e)),this._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(e)),this._hasImplementationProvider.set(this._languageFeaturesService.implementationProvider.has(e)),this._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(e)),this._hasHoverProvider.set(this._languageFeaturesService.hoverProvider.has(e)),this._hasDocumentHighlightProvider.set(this._languageFeaturesService.documentHighlightProvider.has(e)),this._hasDocumentSymbolProvider.set(this._languageFeaturesService.documentSymbolProvider.has(e)),this._hasReferenceProvider.set(this._languageFeaturesService.referenceProvider.has(e)),this._hasRenameProvider.set(this._languageFeaturesService.renameProvider.has(e)),this._hasSignatureHelpProvider.set(this._languageFeaturesService.signatureHelpProvider.has(e)),this._hasInlayHintsProvider.set(this._languageFeaturesService.inlayHintsProvider.has(e)),this._hasDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.has(e)||this._languageFeaturesService.documentRangeFormattingEditProvider.has(e)),this._hasDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.has(e)),this._hasMultipleDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.all(e).length+this._languageFeaturesService.documentRangeFormattingEditProvider.all(e).length>1),this._hasMultipleDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.all(e).length>1),this._isInEmbeddedEditor.set(e.uri.scheme===u.lg.walkThroughSnippet||e.uri.scheme===u.lg.vscodeChatCodeBlock)})):this.reset()}}class ns extends c.JT{constructor(e,t){super(),this._onChange=this._register(new d.Q5),this.onChange=this._onChange.event,this._hadFocus=void 0,this._hasDomElementFocus=!1,this._domFocusTracker=this._register(l.go(e)),this._overflowWidgetsDomNodeHasFocus=!1,this._register(this._domFocusTracker.onDidFocus((()=>{this._hasDomElementFocus=!0,this._update()}))),this._register(this._domFocusTracker.onDidBlur((()=>{this._hasDomElementFocus=!1,this._update()}))),t&&(this._overflowWidgetsDomNode=this._register(l.go(t)),this._register(this._overflowWidgetsDomNode.onDidFocus((()=>{this._overflowWidgetsDomNodeHasFocus=!0,this._update()}))),this._register(this._overflowWidgetsDomNode.onDidBlur((()=>{this._overflowWidgetsDomNodeHasFocus=!1,this._update()}))))}_update(){const e=this._hasDomElementFocus||this._overflowWidgetsDomNodeHasFocus;this._hadFocus!==e&&(this._hadFocus=e,this._onChange.fire(void 0))}hasFocus(){var e;return null!==(e=this._hadFocus)&&void 0!==e&&e}}class os{get length(){return this._decorationIds.length}constructor(e,t){this._editor=e,this._decorationIds=[],this._isChangingDecorations=!1,Array.isArray(t)&&t.length>0&&this.set(t)}onDidChange(e,t,i){return this._editor.onDidChangeModelDecorations((i=>{this._isChangingDecorations||e.call(t,i)}),i)}getRange(e){return this._editor.hasModel()?e>=this._decorationIds.length?null:this._editor.getModel().getDecorationRange(this._decorationIds[e]):null}getRanges(){if(!this._editor.hasModel())return[];const e=this._editor.getModel(),t=[];for(const i of this._decorationIds){const n=e.getDecorationRange(i);n&&t.push(n)}return t}has(e){return this._decorationIds.includes(e.id)}clear(){0!==this._decorationIds.length&&this.set([])}set(e){try{this._isChangingDecorations=!0,this._editor.changeDecorations((t=>{this._decorationIds=t.deltaDecorations(this._decorationIds,e)}))}finally{this._isChangingDecorations=!1}return this._decorationIds}append(e){let t=[];try{this._isChangingDecorations=!0,this._editor.changeDecorations((i=>{t=i.deltaDecorations([],e),this._decorationIds=this._decorationIds.concat(t)}))}finally{this._isChangingDecorations=!1}return t}}const ss=encodeURIComponent("");function as(e){return ss+encodeURIComponent(e.toString())+rs}const ls=encodeURIComponent('');(0,Ee.Ic)(((e,t)=>{const i=e.getColor(Kt.lXJ);i&&t.addRule(".monaco-editor .".concat("squiggly-error",' { background: url("data:image/svg+xml,',as(i),'") repeat-x bottom left; }'));const n=e.getColor(Kt.uoC);n&&t.addRule(".monaco-editor .".concat("squiggly-warning",' { background: url("data:image/svg+xml,',as(n),'") repeat-x bottom left; }'));const o=e.getColor(Kt.c63);o&&t.addRule(".monaco-editor .".concat("squiggly-info",' { background: url("data:image/svg+xml,',as(o),'") repeat-x bottom left; }'));const s=e.getColor(Kt.Dut);s&&t.addRule(".monaco-editor .".concat("squiggly-hint",' { background: url("data:image/svg+xml,',function(e){return ls+encodeURIComponent(e.toString())+hs}(s),'") no-repeat bottom left; }'));const r=e.getColor(Ie.zu);r&&t.addRule(".monaco-editor.showUnused .".concat("squiggly-inline-unnecessary"," { opacity: ",r.rgba.a,"; }"))}))},95233:(e,t,i)=>{i.d(t,{p:()=>Ht});var n=i(85714),o=i(52910),s=i(85108),r=i(24219),a=i(89599),l=i(59130),h=i(4542),d=i(23001),c=i(38119),u=i(1135),g=i(76025),m=i(52047),f=i(65122),p=i(66561),_=i(22337),v=i(75629),b=i(62974),C=i(62502),w=i(99916),y=i(5545),S=i(38092),L=i(56590),k=i(57866),D=i(2067),N=i(10670),x=i(94739),E=i(69311),I=i(43471),T=i(34543),M=i(33072),A=i(71721),R=i(68633),O=i(34304),P=i(38261),F=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},B=function(e,t){return function(i,n){t(i,n,e)}};const z=(0,P.q5)("diff-review-insert",b.l.add,(0,A.NC)("accessibleDiffViewerInsertIcon","Icon for 'Insert' in accessible diff viewer.")),V=(0,P.q5)("diff-review-remove",b.l.remove,(0,A.NC)("accessibleDiffViewerRemoveIcon","Icon for 'Remove' in accessible diff viewer.")),W=(0,P.q5)("diff-review-close",b.l.close,(0,A.NC)("accessibleDiffViewerCloseIcon","Icon for 'Close' in accessible diff viewer."));let H=class extends a.JT{constructor(e,t,i,n,o,s,r,a,h){super(),this._parentNode=e,this._visible=t,this._setVisible=i,this._canClose=n,this._width=o,this._height=s,this._diffs=r,this._models=a,this._instantiationService=h,this._state=(0,l.Be)(this,((e,t)=>{const i=this._visible.read(e);if(this._parentNode.style.visibility=i?"visible":"hidden",!i)return null;const n=t.add(this._instantiationService.createInstance(K,this._diffs,this._models,this._setVisible,this._canClose));return{model:n,view:t.add(this._instantiationService.createInstance($,this._parentNode,n,this._width,this._height,this._models))}})).recomputeInitiallyAndOnChange(this._store)}next(){(0,l.PS)((e=>{const t=this._visible.get();this._setVisible(!0,e),t&&this._state.get().model.nextGroup(e)}))}prev(){(0,l.PS)((e=>{this._setVisible(!0,e),this._state.get().model.previousGroup(e)}))}close(){(0,l.PS)((e=>{this._setVisible(!1,e)}))}};H._ttPolicy=(0,m.Z)("diffReview",{createHTML:e=>e}),H=F([B(8,O.TG)],H);let K=class extends a.JT{constructor(e,t,i,n,o){super(),this._diffs=e,this._models=t,this._setVisible=i,this.canClose=n,this._accessibilitySignalService=o,this._groups=(0,l.uh)(this,[]),this._currentGroupIdx=(0,l.uh)(this,0),this._currentElementIdx=(0,l.uh)(this,0),this.groups=this._groups,this.currentGroup=this._currentGroupIdx.map(((e,t)=>this._groups.read(t)[e])),this.currentGroupIndex=this._currentGroupIdx,this.currentElement=this._currentElementIdx.map(((e,t)=>{var i;return null===(i=this.currentGroup.read(t))||void 0===i?void 0:i.lines[e]})),this._register((0,l.EH)((e=>{const t=this._diffs.read(e);if(!t)return void this._groups.set([],void 0);const i=function(e,t,i){const n=[];for(const o of(0,v.mw)(e,((e,t)=>t.modified.startLineNumber-e.modified.endLineNumberExclusive<2*U))){const e=[];e.push(new G);const s=new L.z(Math.max(1,o[0].original.startLineNumber-U),Math.min(o[o.length-1].original.endLineNumberExclusive+U,t+1)),r=new L.z(Math.max(1,o[0].modified.startLineNumber-U),Math.min(o[o.length-1].modified.endLineNumberExclusive+U,i+1));(0,v.zy)(o,((t,i)=>{const n=new L.z(t?t.original.endLineNumberExclusive:s.startLineNumber,i?i.original.startLineNumber:s.endLineNumberExclusive),o=new L.z(t?t.modified.endLineNumberExclusive:r.startLineNumber,i?i.modified.startLineNumber:r.endLineNumberExclusive);n.forEach((t=>{e.push(new Y(t,o.startLineNumber+(t-n.startLineNumber)))})),i&&(i.original.forEach((t=>{e.push(new Q(i,t))})),i.modified.forEach((t=>{e.push(new Z(i,t))})))}));const a=o[0].modified.join(o[o.length-1].modified),l=o[0].original.join(o[o.length-1].original);n.push(new q(new x.f0(a,l),e))}return n}(t,this._models.getOriginalModel().getLineCount(),this._models.getModifiedModel().getLineCount());(0,l.PS)((e=>{const t=this._models.getModifiedPosition();if(t){const n=i.findIndex((e=>(null===t||void 0===t?void 0:t.lineNumber){const t=this.currentElement.read(e);(null===t||void 0===t?void 0:t.type)===j.Deleted?this._accessibilitySignalService.playSignal(R.iP.diffLineDeleted,{source:"accessibleDiffViewer.currentElementChanged"}):(null===t||void 0===t?void 0:t.type)===j.Added&&this._accessibilitySignalService.playSignal(R.iP.diffLineInserted,{source:"accessibleDiffViewer.currentElementChanged"})}))),this._register((0,l.EH)((e=>{var t;const i=this.currentElement.read(e);if(i&&i.type!==j.Header){const e=null!==(t=i.modifiedLineNumber)&&void 0!==t?t:i.diff.modified.startLineNumber;this._models.modifiedSetSelection(N.e.fromPositions(new D.L(e,1)))}})))}_goToGroupDelta(e,t){const i=this.groups.get();!i||i.length<=1||(0,l.c8)(t,(t=>{this._currentGroupIdx.set(k.q.ofLength(i.length).clipCyclic(this._currentGroupIdx.get()+e),t),this._currentElementIdx.set(0,t)}))}nextGroup(e){this._goToGroupDelta(1,e)}previousGroup(e){this._goToGroupDelta(-1,e)}_goToLineDelta(e){const t=this.currentGroup.get();!t||t.lines.length<=1||(0,l.PS)((i=>{this._currentElementIdx.set(k.q.ofLength(t.lines.length).clip(this._currentElementIdx.get()+e),i)}))}goToNextLine(){this._goToLineDelta(1)}goToPreviousLine(){this._goToLineDelta(-1)}goToLine(e){const t=this.currentGroup.get();if(!t)return;const i=t.lines.indexOf(e);-1!==i&&(0,l.PS)((e=>{this._currentElementIdx.set(i,e)}))}revealCurrentElementInEditor(){if(!this.canClose.get())return;this._setVisible(!1,void 0);const e=this.currentElement.get();e&&(e.type===j.Deleted?this._models.originalReveal(N.e.fromPositions(new D.L(e.originalLineNumber,1))):this._models.modifiedReveal(e.type!==j.Header?N.e.fromPositions(new D.L(e.modifiedLineNumber,1)):void 0))}close(){this.canClose.get()&&(this._setVisible(!1,void 0),this._models.modifiedFocus())}};K=F([B(4,R.IV)],K);const U=3;var j;!function(e){e[e.Header=0]="Header",e[e.Unchanged=1]="Unchanged",e[e.Deleted=2]="Deleted",e[e.Added=3]="Added"}(j||(j={}));class q{constructor(e,t){this.range=e,this.lines=t}}class G{constructor(){this.type=j.Header}}class Q{constructor(e,t){this.diff=e,this.originalLineNumber=t,this.type=j.Deleted,this.modifiedLineNumber=void 0}}class Z{constructor(e,t){this.diff=e,this.modifiedLineNumber=t,this.type=j.Added,this.originalLineNumber=void 0}}class Y{constructor(e,t){this.originalLineNumber=e,this.modifiedLineNumber=t,this.type=j.Unchanged}}let $=class extends a.JT{constructor(e,t,i,o,s,r){super(),this._element=e,this._model=t,this._width=i,this._height=o,this._models=s,this._languageService=r,this.domNode=this._element,this.domNode.className="monaco-component diff-review monaco-editor-background";const h=document.createElement("div");h.className="diff-review-actions",this._actionBar=this._register(new f.o(h)),this._register((0,l.EH)((e=>{this._actionBar.clear(),this._model.canClose.read(e)&&this._actionBar.push(new _.aU("diffreview.close",(0,A.NC)("label.close","Close"),"close-diff-review "+C.k.asClassName(W),!0,(async()=>t.close())),{label:!1,icon:!0})}))),this._content=document.createElement("div"),this._content.className="diff-review-content",this._content.setAttribute("role","code"),this._scrollbar=this._register(new p.s$(this._content,{})),(0,n.mc)(this.domNode,this._scrollbar.getDomNode(),h),this._register((0,l.EH)((e=>{this._height.read(e),this._width.read(e),this._scrollbar.scanDomNode()}))),this._register((0,a.OF)((()=>{(0,n.mc)(this.domNode)}))),this._register((0,y.bg)(this.domNode,{width:this._width,height:this._height})),this._register((0,y.bg)(this._content,{width:this._width,height:this._height})),this._register((0,l.gp)(((e,t)=>{this._model.currentGroup.read(e),this._render(t)}))),this._register((0,n.mu)(this.domNode,"keydown",(e=>{(e.equals(18)||e.equals(2066)||e.equals(530))&&(e.preventDefault(),this._model.goToNextLine()),(e.equals(16)||e.equals(2064)||e.equals(528))&&(e.preventDefault(),this._model.goToPreviousLine()),(e.equals(9)||e.equals(2057)||e.equals(521)||e.equals(1033))&&(e.preventDefault(),this._model.close()),(e.equals(10)||e.equals(3))&&(e.preventDefault(),this._model.revealCurrentElementInEditor())})))}_render(e){const t=this._models.getOriginalOptions(),i=this._models.getModifiedOptions(),o=document.createElement("div");o.className="diff-review-table",o.setAttribute("role","list"),o.setAttribute("aria-label",(0,A.NC)("ariaLabel","Accessible Diff Viewer. Use arrow up and down to navigate.")),(0,w.N)(o,i.get(50)),(0,n.mc)(this._content,o);const s=this._models.getOriginalModel(),r=this._models.getModifiedModel();if(!s||!r)return;const a=s.getOptions(),h=r.getOptions(),d=i.get(67),c=this._model.currentGroup.get();for(const u of(null===c||void 0===c?void 0:c.lines)||[]){if(!c)break;let g;if(u.type===j.Header){const e=document.createElement("div");e.className="diff-review-row",e.setAttribute("role","listitem");const t=c.range,i=this._model.currentGroupIndex.get(),n=this._model.groups.get().length,o=e=>0===e?(0,A.NC)("no_lines_changed","no lines changed"):1===e?(0,A.NC)("one_line_changed","1 line changed"):(0,A.NC)("more_lines_changed","{0} lines changed",e),s=o(t.original.length),r=o(t.modified.length);e.setAttribute("aria-label",(0,A.NC)({key:"header",comment:["This is the ARIA label for a git diff header.","A git diff header looks like this: @@ -154,12 +159,39 @@.","That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.","Variables 0 and 1 refer to the diff index out of total number of diffs.","Variables 2 and 4 will be numbers (a line number).",'Variables 3 and 5 will be "no lines changed", "1 line changed" or "X lines changed", localized separately.']},"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}",i+1,n,t.original.startLineNumber,s,t.modified.startLineNumber,r));const a=document.createElement("div");a.className="diff-review-cell diff-review-summary",a.appendChild(document.createTextNode("".concat(i+1,"/").concat(n,": @@ -").concat(t.original.startLineNumber,",").concat(t.original.length," +").concat(t.modified.startLineNumber,",").concat(t.modified.length," @@"))),e.appendChild(a),g=e}else g=this._createRow(u,d,this._width.get(),t,s,a,i,r,h);o.appendChild(g);const m=(0,l.nK)((e=>this._model.currentElement.read(e)===u));e.add((0,l.EH)((e=>{const t=m.read(e);g.tabIndex=t?0:-1,t&&g.focus()}))),e.add((0,n.nm)(g,"focus",(()=>{this._model.goToLine(u)})))}this._scrollbar.scanDomNode()}_createRow(e,t,i,n,o,s,r,a,l){const h=n.get(145),d=h.glyphMarginWidth+h.lineNumbersWidth,c=r.get(145),u=10+c.glyphMarginWidth+c.lineNumbersWidth;let g="diff-review-row",m="";let f=null;switch(e.type){case j.Added:g="diff-review-row line-insert",m=" char-insert",f=z;break;case j.Deleted:g="diff-review-row line-delete",m=" char-delete",f=V}const p=document.createElement("div");p.style.minWidth=i+"px",p.className=g,p.setAttribute("role","listitem"),p.ariaLevel="";const _=document.createElement("div");_.className="diff-review-cell",_.style.height="".concat(t,"px"),p.appendChild(_);const v=document.createElement("span");v.style.width=d+"px",v.style.minWidth=d+"px",v.className="diff-review-line-number"+m,void 0!==e.originalLineNumber?v.appendChild(document.createTextNode(String(e.originalLineNumber))):v.innerText="\xa0",_.appendChild(v);const b=document.createElement("span");b.style.width=u+"px",b.style.minWidth=u+"px",b.style.paddingRight="10px",b.className="diff-review-line-number"+m,void 0!==e.modifiedLineNumber?b.appendChild(document.createTextNode(String(e.modifiedLineNumber))):b.innerText="\xa0",_.appendChild(b);const w=document.createElement("span");if(w.className="diff-review-spacer",f){const e=document.createElement("span");e.className=C.k.asClassName(f),e.innerText="\xa0\xa0",w.appendChild(e)}else w.innerText="\xa0\xa0";let y;if(_.appendChild(w),void 0!==e.modifiedLineNumber){let t=this._getLineHtml(a,r,l.tabSize,e.modifiedLineNumber,this._languageService.languageIdCodec);H._ttPolicy&&(t=H._ttPolicy.createHTML(t)),_.insertAdjacentHTML("beforeend",t),y=a.getLineContent(e.modifiedLineNumber)}else{let t=this._getLineHtml(o,n,s.tabSize,e.originalLineNumber,this._languageService.languageIdCodec);H._ttPolicy&&(t=H._ttPolicy.createHTML(t)),_.insertAdjacentHTML("beforeend",t),y=o.getLineContent(e.originalLineNumber)}0===y.length&&(y=(0,A.NC)("blankLine","blank"));let S="";switch(e.type){case j.Unchanged:S=e.originalLineNumber===e.modifiedLineNumber?(0,A.NC)({key:"unchangedLine",comment:["The placeholders are contents of the line and should not be translated."]},"{0} unchanged line {1}",y,e.originalLineNumber):(0,A.NC)("equalLine","{0} original line {1} modified line {2}",y,e.originalLineNumber,e.modifiedLineNumber);break;case j.Added:S=(0,A.NC)("insertLine","+ {0} modified line {1}",y,e.modifiedLineNumber);break;case j.Deleted:S=(0,A.NC)("deleteLine","- {0} original line {1}",y,e.originalLineNumber)}return p.setAttribute("aria-label",S),p}_getLineHtml(e,t,i,n,o){const s=e.getLineContent(n),r=t.get(50),a=I.A.createEmpty(s,o),l=M.wA.isBasicASCII(s,e.mightContainNonBasicASCII()),h=M.wA.containsRTL(s,l,e.mightContainRTL());return(0,T.tF)(new T.IJ(r.isMonospace&&!t.get(33),r.canUseHalfwidthRightwardsArrow,s,!1,l,h,0,a,[],i,0,r.spaceWidth,r.middotWidth,r.wsmiddotWidth,t.get(117),t.get(99),t.get(94),t.get(51)!==S.n0.OFF,null)).html}};$=F([B(5,E.O)],$);class J{constructor(e){this.editors=e}getOriginalModel(){return this.editors.original.getModel()}getOriginalOptions(){return this.editors.original.getOptions()}originalReveal(e){this.editors.original.revealRange(e),this.editors.original.setSelection(e),this.editors.original.focus()}getModifiedModel(){return this.editors.modified.getModel()}getModifiedOptions(){return this.editors.modified.getOptions()}modifiedReveal(e){e&&(this.editors.modified.revealRange(e),this.editors.modified.setSelection(e)),this.editors.modified.focus()}modifiedSetSelection(e){this.editors.modified.setSelection(e)}modifiedFocus(){this.editors.modified.focus()}getModifiedPosition(){var e;return null!==(e=this.editors.modified.getPosition())&&void 0!==e?e:void 0}}class X extends a.JT{constructor(e,t,i,n,o){super(),this._rootElement=e,this._diffModel=t,this._originalEditorLayoutInfo=i,this._modifiedEditorLayoutInfo=n,this._editors=o,this._originalScrollTop=(0,l.rD)(this._editors.original.onDidScrollChange,(()=>this._editors.original.getScrollTop())),this._modifiedScrollTop=(0,l.rD)(this._editors.modified.onDidScrollChange,(()=>this._editors.modified.getScrollTop())),this._viewZonesChanged=(0,l.aq)("onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this.width=(0,l.uh)(this,0),this._modifiedViewZonesChangedSignal=(0,l.aq)("modified.onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this._originalViewZonesChangedSignal=(0,l.aq)("original.onDidChangeViewZones",this._editors.original.onDidChangeViewZones),this._state=(0,l.Be)(this,((e,t)=>{var i;this._element.replaceChildren();const n=this._diffModel.read(e),o=null===(i=null===n||void 0===n?void 0:n.diff.read(e))||void 0===i?void 0:i.movedTexts;if(!o||0===o.length)return void this.width.set(0,void 0);this._viewZonesChanged.read(e);const s=this._originalEditorLayoutInfo.read(e),r=this._modifiedEditorLayoutInfo.read(e);if(!s||!r)return void this.width.set(0,void 0);this._modifiedViewZonesChangedSignal.read(e),this._originalViewZonesChangedSignal.read(e);const a=o.map((t=>{function i(e,t){return(t.getTopForLineNumber(e.startLineNumber,!0)+t.getTopForLineNumber(e.endLineNumberExclusive,!0))/2}const n=i(t.lineRangeMapping.original,this._editors.original),o=this._originalScrollTop.read(e),s=i(t.lineRangeMapping.modified,this._editors.modified),r=n-o,a=s-this._modifiedScrollTop.read(e),l=Math.min(n,s),h=Math.max(n,s);return{range:new k.q(l,h),from:r,to:a,fromWithoutScroll:n,toWithoutScroll:s,move:t}}));a.sort((0,v.f_)((0,v.tT)((e=>e.fromWithoutScroll>e.toWithoutScroll),v.nW),(0,v.tT)((e=>e.fromWithoutScroll>e.toWithoutScroll?e.fromWithoutScroll:-e.toWithoutScroll),v.fv)));const h=ee.compute(a.map((e=>e.range))),d=s.verticalScrollbarWidth,c=10*(h.getTrackCount()-1)+20,u=d+c+(r.contentLeft-X.movedCodeBlockPadding);let g=0;for(const m of a){const e=d+10+10*h.getTrack(g),i=15,o=15,s=u,a=r.glyphMarginWidth+r.lineNumbersWidth,c=18,f=document.createElementNS("http://www.w3.org/2000/svg","rect");f.classList.add("arrow-rectangle"),f.setAttribute("x","".concat(s-a)),f.setAttribute("y","".concat(m.to-c/2)),f.setAttribute("width","".concat(a)),f.setAttribute("height","".concat(c)),this._element.appendChild(f);const p=document.createElementNS("http://www.w3.org/2000/svg","g"),_=document.createElementNS("http://www.w3.org/2000/svg","path");_.setAttribute("d","M ".concat(0," ",m.from," L ").concat(e," ").concat(m.from," L ").concat(e," ").concat(m.to," L ").concat(s-o," ").concat(m.to)),_.setAttribute("fill","none"),p.appendChild(_);const v=document.createElementNS("http://www.w3.org/2000/svg","polygon");v.classList.add("arrow"),t.add((0,l.EH)((e=>{_.classList.toggle("currentMove",m.move===n.activeMovedText.read(e)),v.classList.toggle("currentMove",m.move===n.activeMovedText.read(e))}))),v.setAttribute("points","".concat(s-o,",").concat(m.to-i/2," ").concat(s,",").concat(m.to," ").concat(s-o,",").concat(m.to+i/2)),p.appendChild(v),this._element.appendChild(p),g++}this.width.set(c,void 0)})),this._element=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._element.setAttribute("class","moved-blocks-lines"),this._rootElement.appendChild(this._element),this._register((0,a.OF)((()=>this._element.remove()))),this._register((0,l.EH)((e=>{const t=this._originalEditorLayoutInfo.read(e),i=this._modifiedEditorLayoutInfo.read(e);t&&i&&(this._element.style.left="".concat(t.width-t.verticalScrollbarWidth,"px"),this._element.style.height="".concat(t.height,"px"),this._element.style.width="".concat(t.verticalScrollbarWidth+t.contentLeft-X.movedCodeBlockPadding+this.width.read(e),"px"))}))),this._register((0,l.jx)(this._state));const s=(0,l.nK)((e=>{const t=this._diffModel.read(e),i=null===t||void 0===t?void 0:t.diff.read(e);return i?i.movedTexts.map((e=>({move:e,original:new y.GD((0,l.Dz)(e.lineRangeMapping.original.startLineNumber-1),18),modified:new y.GD((0,l.Dz)(e.lineRangeMapping.modified.startLineNumber-1),18)}))):[]}));this._register((0,y.Sv)(this._editors.original,s.map((e=>e.map((e=>e.original)))))),this._register((0,y.Sv)(this._editors.modified,s.map((e=>e.map((e=>e.modified)))))),this._register((0,l.gp)(((e,t)=>{const i=s.read(e);for(const n of i)t.add(new te(this._editors.original,n.original,n.move,"original",this._diffModel.get())),t.add(new te(this._editors.modified,n.modified,n.move,"modified",this._diffModel.get()))})));const r=(0,l.aq)("original.onDidFocusEditorWidget",(e=>this._editors.original.onDidFocusEditorWidget((()=>setTimeout((()=>e(void 0)),0))))),h=(0,l.aq)("modified.onDidFocusEditorWidget",(e=>this._editors.modified.onDidFocusEditorWidget((()=>setTimeout((()=>e(void 0)),0)))));let d="modified";this._register((0,l.nJ)({createEmptyChangeSummary:()=>{},handleChange:(e,t)=>(e.didChange(r)&&(d="original"),e.didChange(h)&&(d="modified"),!0)},(e=>{r.read(e),h.read(e);const t=this._diffModel.read(e);if(!t)return;const i=t.diff.read(e);let n;if(i&&"original"===d){const t=this._editors.originalCursor.read(e);t&&(n=i.movedTexts.find((e=>e.lineRangeMapping.original.contains(t.lineNumber))))}if(i&&"modified"===d){const t=this._editors.modifiedCursor.read(e);t&&(n=i.movedTexts.find((e=>e.lineRangeMapping.modified.contains(t.lineNumber))))}n!==t.movedTextToCompare.get()&&t.movedTextToCompare.set(void 0,void 0),t.setActiveMovedText(n)})))}}X.movedCodeBlockPadding=4;class ee{static compute(e){const t=[],i=[];for(const n of e){let e=t.findIndex((e=>!e.intersectsStrict(n)));if(-1===e){const i=6;t.length>=i?e=(0,o.tQ)(t,(0,v.tT)((e=>e.intersectWithRangeLength(n)),v.fv)):(e=t.length,t.push(new k.M))}t[e].addRange(n),i.push(e)}return new ee(t.length,i)}constructor(e,t){this._trackCount=e,this.trackPerLineIdx=t}getTrack(e){return this.trackPerLineIdx[e]}getTrackCount(){return this._trackCount}}class te extends y.N9{constructor(e,t,i,o,s){const r=(0,n.h)("div.diff-hidden-lines-widget");super(e,t,r.root),this._editor=e,this._move=i,this._kind=o,this._diffModel=s,this._nodes=(0,n.h)("div.diff-moved-code-block",{style:{marginRight:"4px"}},[(0,n.h)("div.text-content@textContent"),(0,n.h)("div.action-bar@actionBar")]),r.root.appendChild(this._nodes.root);const a=(0,l.rD)(this._editor.onDidLayoutChange,(()=>this._editor.getLayoutInfo()));let h;this._register((0,y.bg)(this._nodes.root,{paddingRight:a.map((e=>e.verticalScrollbarWidth))})),h=i.changes.length>0?"original"===this._kind?(0,A.NC)("codeMovedToWithChanges","Code moved with changes to line {0}-{1}",this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):(0,A.NC)("codeMovedFromWithChanges","Code moved with changes from line {0}-{1}",this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1):"original"===this._kind?(0,A.NC)("codeMovedTo","Code moved to line {0}-{1}",this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):(0,A.NC)("codeMovedFrom","Code moved from line {0}-{1}",this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1);const d=this._register(new f.o(this._nodes.actionBar,{highlightToggledItems:!0})),c=new _.aU("",h,"",!1);d.push(c,{icon:!1,label:!0});const u=new _.aU("","Compare",C.k.asClassName(b.l.compareChanges),!0,(()=>{this._editor.focus(),this._diffModel.movedTextToCompare.set(this._diffModel.movedTextToCompare.get()===i?void 0:this._move,void 0)}));this._register((0,l.EH)((e=>{const t=this._diffModel.movedTextToCompare.read(e)===i;u.checked=t}))),d.push(u,{icon:!1,label:!0})}}var ie=i(94817);class ne extends a.JT{constructor(e,t,i,n){super(),this._editors=e,this._diffModel=t,this._options=i,this._decorations=(0,l.nK)(this,(e=>{var t;const i=null===(t=this._diffModel.read(e))||void 0===t?void 0:t.diff.read(e);if(!i)return null;const n=this._diffModel.read(e).movedTextToCompare.read(e),o=this._options.renderIndicators.read(e),s=this._options.showEmptyDecorations.read(e),r=[],a=[];if(!n)for(const h of i.mappings)if(h.lineRangeMapping.original.isEmpty||r.push({range:h.lineRangeMapping.original.toInclusiveRange(),options:o?ie.iq:ie.i_}),h.lineRangeMapping.modified.isEmpty||a.push({range:h.lineRangeMapping.modified.toInclusiveRange(),options:o?ie.vv:ie.rd}),h.lineRangeMapping.modified.isEmpty||h.lineRangeMapping.original.isEmpty)h.lineRangeMapping.original.isEmpty||r.push({range:h.lineRangeMapping.original.toInclusiveRange(),options:ie.W3}),h.lineRangeMapping.modified.isEmpty||a.push({range:h.lineRangeMapping.modified.toInclusiveRange(),options:ie.Jv});else for(const e of h.lineRangeMapping.innerChanges||[])h.lineRangeMapping.original.contains(e.originalRange.startLineNumber)&&r.push({range:e.originalRange,options:e.originalRange.isEmpty()&&s?ie.$F:ie.rq}),h.lineRangeMapping.modified.contains(e.modifiedRange.startLineNumber)&&a.push({range:e.modifiedRange,options:e.modifiedRange.isEmpty()&&s?ie.n_:ie.LE});if(n)for(const h of n.changes){const e=h.original.toInclusiveRange();e&&r.push({range:e,options:o?ie.iq:ie.i_});const t=h.modified.toInclusiveRange();t&&a.push({range:t,options:o?ie.vv:ie.rd});for(const i of h.innerChanges||[])r.push({range:i.originalRange,options:ie.rq}),a.push({range:i.modifiedRange,options:ie.LE})}const l=this._diffModel.read(e).activeMovedText.read(e);for(const h of i.movedTexts)r.push({range:h.lineRangeMapping.original.toInclusiveRange(),options:{description:"moved",blockClassName:"movedOriginal"+(h===l?" currentMove":""),blockPadding:[X.movedCodeBlockPadding,0,X.movedCodeBlockPadding,X.movedCodeBlockPadding]}}),a.push({range:h.lineRangeMapping.modified.toInclusiveRange(),options:{description:"moved",blockClassName:"movedModified"+(h===l?" currentMove":""),blockPadding:[4,0,4,4]}});return{originalDecorations:r,modifiedDecorations:a}})),this._register((0,y.RP)(this._editors.original,this._decorations.map((e=>(null===e||void 0===e?void 0:e.originalDecorations)||[])))),this._register((0,y.RP)(this._editors.modified,this._decorations.map((e=>(null===e||void 0===e?void 0:e.modifiedDecorations)||[]))))}}var oe=i(38059);class se extends a.JT{constructor(e,t,i,n){super(),this._options=e,this._domNode=t,this._dimensions=i,this._sashes=n,this._sashRatio=(0,l.uh)(this,void 0),this.sashLeft=(0,l.nK)(this,(e=>{var t;const i=null!==(t=this._sashRatio.read(e))&&void 0!==t?t:this._options.splitViewDefaultRatio.read(e);return this._computeSashLeft(i,e)})),this._sash=this._register(new oe.g(this._domNode,{getVerticalSashTop:e=>0,getVerticalSashLeft:e=>this.sashLeft.get(),getVerticalSashHeight:e=>this._dimensions.height.get()},{orientation:0})),this._startSashPosition=void 0,this._register(this._sash.onDidStart((()=>{this._startSashPosition=this.sashLeft.get()}))),this._register(this._sash.onDidChange((e=>{const t=this._dimensions.width.get(),i=this._computeSashLeft((this._startSashPosition+(e.currentX-e.startX))/t,void 0);this._sashRatio.set(i/t,void 0)}))),this._register(this._sash.onDidEnd((()=>this._sash.layout()))),this._register(this._sash.onDidReset((()=>this._sashRatio.set(void 0,void 0)))),this._register((0,l.EH)((e=>{const t=this._sashes.read(e);t&&(this._sash.orthogonalEndSash=t.bottom)}))),this._register((0,l.EH)((e=>{const t=this._options.enableSplitViewResizing.read(e);this._sash.state=t?3:0,this.sashLeft.read(e),this._dimensions.height.read(e),this._sash.layout()})))}_computeSashLeft(e,t){const i=this._dimensions.width.read(t),n=Math.floor(this._options.splitViewDefaultRatio.read(t)*i),o=this._options.enableSplitViewResizing.read(t)?Math.floor(e*i):n,s=100;return i<=200?n:oi-s?i-s:o}}var re,ae=i(60282),le=i(63686),he=i(16113),de=i(43837),ce=i(6459),ue=i(60918),ge=i(38015),me=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},fe=function(e,t){return function(i,n){t(i,n,e)}};const pe=(0,O.yh)("diffProviderFactoryService");let _e=class{constructor(e){this.instantiationService=e}createDiffProvider(e){return this.instantiationService.createInstance(ve,e)}};_e=me([fe(0,O.TG)],_e),(0,de.z)(pe,_e,1);let ve=re=class{constructor(e,t,i){this.editorWorkerService=t,this.telemetryService=i,this.onDidChangeEventEmitter=new r.Q5,this.onDidChange=this.onDidChangeEventEmitter.event,this.diffAlgorithm="advanced",this.diffAlgorithmOnDidChangeSubscription=void 0,this.setOptions(e)}dispose(){var e;null===(e=this.diffAlgorithmOnDidChangeSubscription)||void 0===e||e.dispose()}async computeDiff(e,t,i,n){var o,s;if("string"!==typeof this.diffAlgorithm)return this.diffAlgorithm.computeDiff(e,t,i,n);if(1===e.getLineCount()&&1===e.getLineMaxColumn(1))return 1===t.getLineCount()&&1===t.getLineMaxColumn(1)?{changes:[],identical:!0,quitEarly:!1,moves:[]}:{changes:[new x.gB(new L.z(1,2),new L.z(1,t.getLineCount()+1),[new x.iy(e.getFullModelRange(),t.getFullModelRange())])],identical:!1,quitEarly:!1,moves:[]};const r=JSON.stringify([e.uri.toString(),t.uri.toString()]),a=JSON.stringify([e.id,t.id,e.getAlternativeVersionId(),t.getAlternativeVersionId(),JSON.stringify(i)]),l=re.diffCache.get(r);if(l&&l.context===a)return l.result;const h=ce.G.create(),d=await this.editorWorkerService.computeDiff(e.uri,t.uri,i,this.diffAlgorithm),c=h.elapsed();if(this.telemetryService.publicLog2("diffEditor.computeDiff",{timeMs:c,timedOut:null===(o=null===d||void 0===d?void 0:d.quitEarly)||void 0===o||o,detectedMoves:i.computeMoves?null!==(s=null===d||void 0===d?void 0:d.moves.length)&&void 0!==s?s:0:-1}),n.isCancellationRequested)return{changes:[],identical:!1,quitEarly:!0,moves:[]};if(!d)throw new Error("no diff result available");return re.diffCache.size>10&&re.diffCache.delete(re.diffCache.keys().next().value),re.diffCache.set(r,{result:d,context:a}),d}setOptions(e){var t;let i=!1;e.diffAlgorithm&&this.diffAlgorithm!==e.diffAlgorithm&&(null===(t=this.diffAlgorithmOnDidChangeSubscription)||void 0===t||t.dispose(),this.diffAlgorithmOnDidChangeSubscription=void 0,this.diffAlgorithm=e.diffAlgorithm,"string"!==typeof e.diffAlgorithm&&(this.diffAlgorithmOnDidChangeSubscription=e.diffAlgorithm.onDidChange((()=>this.onDidChangeEventEmitter.fire()))),i=!0),i&&this.onDidChangeEventEmitter.fire()}};ve.diffCache=new Map,ve=re=me([fe(1,ue.p),fe(2,ge.b)],ve);var be=i(20870),Ce=i(74196),we=i(31246),ye=i(96025),Se=i(39880),Le=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ke=function(e,t){return function(i,n){t(i,n,e)}};let De=class extends a.JT{setActiveMovedText(e){this._activeMovedText.set(e,void 0)}constructor(e,t,i){super(),this.model=e,this._options=t,this._diffProviderFactoryService=i,this._isDiffUpToDate=(0,l.uh)(this,!1),this.isDiffUpToDate=this._isDiffUpToDate,this._diff=(0,l.uh)(this,void 0),this.diff=this._diff,this._unchangedRegions=(0,l.uh)(this,void 0),this.unchangedRegions=(0,l.nK)(this,(e=>{var t,i;return this._options.hideUnchangedRegions.read(e)?null!==(i=null===(t=this._unchangedRegions.read(e))||void 0===t?void 0:t.regions)&&void 0!==i?i:[]:((0,l.PS)((e=>{var t;for(const i of(null===(t=this._unchangedRegions.get())||void 0===t?void 0:t.regions)||[])i.collapseAll(e)})),[])})),this.movedTextToCompare=(0,l.uh)(this,void 0),this._activeMovedText=(0,l.uh)(this,void 0),this._hoveredMovedText=(0,l.uh)(this,void 0),this.activeMovedText=(0,l.nK)(this,(e=>{var t,i;return null!==(i=null!==(t=this.movedTextToCompare.read(e))&&void 0!==t?t:this._hoveredMovedText.read(e))&&void 0!==i?i:this._activeMovedText.read(e)})),this._cancellationTokenSource=new he.A,this._diffProvider=(0,l.nK)(this,(e=>{const t=this._diffProviderFactoryService.createDiffProvider({diffAlgorithm:this._options.diffAlgorithm.read(e)});return{diffProvider:t,onChangeSignal:(0,l.aq)("onDidChange",t.onDidChange)}})),this._register((0,a.OF)((()=>this._cancellationTokenSource.cancel())));const n=(0,l.GN)("contentChangedSignal"),o=this._register(new ae.pY((()=>n.trigger(void 0)),200));this._register((0,l.EH)((t=>{const i=this._unchangedRegions.read(t);if(!i||i.regions.some((e=>e.isDragged.read(t))))return;const n=i.originalDecorationIds.map((t=>e.original.getDecorationRange(t))).map((e=>e?L.z.fromRangeInclusive(e):void 0)),o=i.modifiedDecorationIds.map((t=>e.modified.getDecorationRange(t))).map((e=>e?L.z.fromRangeInclusive(e):void 0)),s=i.regions.map(((e,i)=>n[i]&&o[i]?new Ee(n[i].startLineNumber,o[i].startLineNumber,n[i].length,e.visibleLineCountTop.read(t),e.visibleLineCountBottom.read(t)):void 0)).filter(le.$K),r=[];let a=!1;for(const e of(0,v.mw)(s,((e,i)=>e.getHiddenModifiedRange(t).endLineNumberExclusive===i.getHiddenModifiedRange(t).startLineNumber)))if(e.length>1){a=!0;const t=e.reduce(((e,t)=>e+t.lineCount),0),i=new Ee(e[0].originalLineNumber,e[0].modifiedLineNumber,t,e[0].visibleLineCountTop.get(),e[e.length-1].visibleLineCountBottom.get());r.push(i)}else r.push(e[0]);if(a){const t=e.original.deltaDecorations(i.originalDecorationIds,r.map((e=>({range:e.originalUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}})))),n=e.modified.deltaDecorations(i.modifiedDecorationIds,r.map((e=>({range:e.modifiedUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}}))));(0,l.PS)((e=>{this._unchangedRegions.set({regions:r,originalDecorationIds:t,modifiedDecorationIds:n},e)}))}})));const s=(t,i,n)=>{const o=Ee.fromDiffs(t.changes,e.original.getLineCount(),e.modified.getLineCount(),this._options.hideUnchangedRegionsMinimumLineCount.read(n),this._options.hideUnchangedRegionsContextLineCount.read(n));let s;const r=this._unchangedRegions.get();if(r){const t=r.originalDecorationIds.map((t=>e.original.getDecorationRange(t))).map((e=>e?L.z.fromRangeInclusive(e):void 0)),i=r.modifiedDecorationIds.map((t=>e.modified.getDecorationRange(t))).map((e=>e?L.z.fromRangeInclusive(e):void 0));let o=(0,y.W7)(r.regions.map(((e,n)=>{if(!t[n]||!i[n])return;const o=t[n].length;return new Ee(t[n].startLineNumber,i[n].startLineNumber,o,Math.min(e.visibleLineCountTop.get(),o),Math.min(e.visibleLineCountBottom.get(),o-e.visibleLineCountTop.get()))})).filter(le.$K),((e,t)=>!t||e.modifiedLineNumber>=t.modifiedLineNumber+t.lineCount&&e.originalLineNumber>=t.originalLineNumber+t.lineCount)).map((e=>new x.f0(e.getHiddenOriginalRange(n),e.getHiddenModifiedRange(n))));o=x.f0.clip(o,L.z.ofLength(1,e.original.getLineCount()),L.z.ofLength(1,e.modified.getLineCount())),s=x.f0.inverse(o,e.original.getLineCount(),e.modified.getLineCount())}const a=[];if(s)for(const e of o){const t=s.filter((t=>t.original.intersectsStrict(e.originalUnchangedRange)&&t.modified.intersectsStrict(e.modifiedUnchangedRange)));a.push(...e.setVisibleRanges(t,i))}else a.push(...o);const l=e.original.deltaDecorations((null===r||void 0===r?void 0:r.originalDecorationIds)||[],a.map((e=>({range:e.originalUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}})))),h=e.modified.deltaDecorations((null===r||void 0===r?void 0:r.modifiedDecorationIds)||[],a.map((e=>({range:e.modifiedUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}}))));this._unchangedRegions.set({regions:a,originalDecorationIds:l,modifiedDecorationIds:h},i)};this._register(e.modified.onDidChangeContent((t=>{if(this._diff.get()){const i=Ce.Q.fromModelContentChanges(t.changes),n=Te(this._lastDiff,i,e.original,e.modified);n&&(this._lastDiff=n,(0,l.PS)((e=>{this._diff.set(Ne.fromDiffResult(this._lastDiff),e),s(n,e);const t=this.movedTextToCompare.get();this.movedTextToCompare.set(t?this._lastDiff.moves.find((e=>e.lineRangeMapping.modified.intersect(t.lineRangeMapping.modified))):void 0,e)})))}this._isDiffUpToDate.set(!1,void 0),o.schedule()}))),this._register(e.original.onDidChangeContent((t=>{if(this._diff.get()){const i=Ce.Q.fromModelContentChanges(t.changes),n=Ie(this._lastDiff,i,e.original,e.modified);n&&(this._lastDiff=n,(0,l.PS)((e=>{this._diff.set(Ne.fromDiffResult(this._lastDiff),e),s(n,e);const t=this.movedTextToCompare.get();this.movedTextToCompare.set(t?this._lastDiff.moves.find((e=>e.lineRangeMapping.modified.intersect(t.lineRangeMapping.modified))):void 0,e)})))}this._isDiffUpToDate.set(!1,void 0),o.schedule()}))),this._register((0,l.gp)((async(t,i)=>{var r,a;this._options.hideUnchangedRegionsMinimumLineCount.read(t),this._options.hideUnchangedRegionsContextLineCount.read(t),o.cancel(),n.read(t);const h=this._diffProvider.read(t);h.onChangeSignal.read(t),(0,y.NW)(be.DW,t),(0,y.NW)(ye.xG,t),this._isDiffUpToDate.set(!1,void 0);let d=[];i.add(e.original.onDidChangeContent((e=>{const t=Ce.Q.fromModelContentChanges(e.changes);d=(0,we.o)(d,t)})));let c=[];i.add(e.modified.onDidChangeContent((e=>{const t=Ce.Q.fromModelContentChanges(e.changes);c=(0,we.o)(c,t)})));let u=await h.diffProvider.computeDiff(e.original,e.modified,{ignoreTrimWhitespace:this._options.ignoreTrimWhitespace.read(t),maxComputationTimeMs:this._options.maxComputationTimeMs.read(t),computeMoves:this._options.showMoves.read(t)},this._cancellationTokenSource.token);var g,m,f;this._cancellationTokenSource.token.isCancellationRequested||(g=u,m=e.original,f=e.modified,u={changes:g.changes.map((e=>new x.gB(e.original,e.modified,e.innerChanges?e.innerChanges.map((e=>function(e,t,i){let n=e.originalRange,o=e.modifiedRange;return(1!==n.endColumn||1!==o.endColumn)&&n.endColumn===t.getLineMaxColumn(n.endLineNumber)&&o.endColumn===i.getLineMaxColumn(o.endLineNumber)&&n.endLineNumber{s(u,e),this._lastDiff=u;const t=Ne.fromDiffResult(u);this._diff.set(t,e),this._isDiffUpToDate.set(!0,e);const i=this.movedTextToCompare.get();this.movedTextToCompare.set(i?this._lastDiff.moves.find((e=>e.lineRangeMapping.modified.intersect(i.lineRangeMapping.modified))):void 0,e)})))})))}ensureModifiedLineIsVisible(e,t,i){var n,o;if(0===(null===(n=this.diff.get())||void 0===n?void 0:n.mappings.length))return;const s=(null===(o=this._unchangedRegions.get())||void 0===o?void 0:o.regions)||[];for(const r of s)if(r.getHiddenModifiedRange(void 0).contains(e))return void r.showModifiedLine(e,t,i)}ensureOriginalLineIsVisible(e,t,i){var n,o;if(0===(null===(n=this.diff.get())||void 0===n?void 0:n.mappings.length))return;const s=(null===(o=this._unchangedRegions.get())||void 0===o?void 0:o.regions)||[];for(const r of s)if(r.getHiddenOriginalRange(void 0).contains(e))return void r.showOriginalLine(e,t,i)}async waitForDiff(){await(0,l.F_)(this.isDiffUpToDate,(e=>e))}serializeState(){const e=this._unchangedRegions.get();return{collapsedRegions:null===e||void 0===e?void 0:e.regions.map((e=>({range:e.getHiddenModifiedRange(void 0).serialize()})))}}restoreSerializedState(e){var t;const i=null===(t=e.collapsedRegions)||void 0===t?void 0:t.map((e=>L.z.deserialize(e.range))),n=this._unchangedRegions.get();n&&i&&(0,l.PS)((e=>{for(const t of n.regions)for(const n of i)if(t.modifiedUnchangedRange.intersect(n)){t.setHiddenModifiedRange(n,e);break}}))}};De=Le([ke(2,pe)],De);class Ne{static fromDiffResult(e){return new Ne(e.changes.map((e=>new xe(e))),e.moves||[],e.identical,e.quitEarly)}constructor(e,t,i,n){this.mappings=e,this.movedTexts=t,this.identical=i,this.quitEarly=n}}class xe{constructor(e){this.lineRangeMapping=e}}class Ee{static fromDiffs(e,t,i,n,o){const s=x.gB.inverse(e,t,i),r=[];for(const a of s){let e=a.original.startLineNumber,s=a.modified.startLineNumber,l=a.original.length;const h=1===e&&1===s,d=e+l===t+1&&s+l===i+1;(h||d)&&l>=o+n?(h&&!d&&(l-=o),d&&!h&&(e+=o,s+=o,l-=o),r.push(new Ee(e,s,l,0,0))):l>=2*o+n&&(e+=o,s+=o,l-=2*o,r.push(new Ee(e,s,l,0,0)))}return r}get originalUnchangedRange(){return L.z.ofLength(this.originalLineNumber,this.lineCount)}get modifiedUnchangedRange(){return L.z.ofLength(this.modifiedLineNumber,this.lineCount)}constructor(e,t,i,n,o){this.originalLineNumber=e,this.modifiedLineNumber=t,this.lineCount=i,this._visibleLineCountTop=(0,l.uh)(this,0),this.visibleLineCountTop=this._visibleLineCountTop,this._visibleLineCountBottom=(0,l.uh)(this,0),this.visibleLineCountBottom=this._visibleLineCountBottom,this._shouldHideControls=(0,l.nK)(this,(e=>this.visibleLineCountTop.read(e)+this.visibleLineCountBottom.read(e)===this.lineCount&&!this.isDragged.read(e))),this.isDragged=(0,l.uh)(this,void 0);const s=Math.max(Math.min(n,this.lineCount),0),r=Math.max(Math.min(o,this.lineCount-n),0);(0,Se.wN)(n===s),(0,Se.wN)(o===r),this._visibleLineCountTop.set(s,void 0),this._visibleLineCountBottom.set(r,void 0)}setVisibleRanges(e,t){const i=[],n=new L.i(e.map((e=>e.modified))).subtractFrom(this.modifiedUnchangedRange);let o=this.originalLineNumber,s=this.modifiedLineNumber;const r=this.modifiedLineNumber+this.lineCount;if(0===n.ranges.length)this.showAll(t),i.push(this);else{let e=0;for(const a of n.ranges){const l=e===n.ranges.length-1;e++;const h=(l?r:a.endLineNumberExclusive)-s,d=new Ee(o,s,h,0,0);d.setHiddenModifiedRange(a,t),i.push(d),o=d.originalUnchangedRange.endLineNumberExclusive,s=d.modifiedUnchangedRange.endLineNumberExclusive}}return i}shouldHideControls(e){return this._shouldHideControls.read(e)}getHiddenOriginalRange(e){return L.z.ofLength(this.originalLineNumber+this._visibleLineCountTop.read(e),this.lineCount-this._visibleLineCountTop.read(e)-this._visibleLineCountBottom.read(e))}getHiddenModifiedRange(e){return L.z.ofLength(this.modifiedLineNumber+this._visibleLineCountTop.read(e),this.lineCount-this._visibleLineCountTop.read(e)-this._visibleLineCountBottom.read(e))}setHiddenModifiedRange(e,t){const i=e.startLineNumber-this.modifiedLineNumber,n=this.modifiedLineNumber+this.lineCount-e.endLineNumberExclusive;this.setState(i,n,t)}getMaxVisibleLineCountTop(){return this.lineCount-this._visibleLineCountBottom.get()}getMaxVisibleLineCountBottom(){return this.lineCount-this._visibleLineCountTop.get()}showMoreAbove(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=arguments.length>1?arguments[1]:void 0;const i=this.getMaxVisibleLineCountTop();this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+e,i),t)}showMoreBelow(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=arguments.length>1?arguments[1]:void 0;const i=this.lineCount-this._visibleLineCountTop.get();this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+e,i),t)}showAll(e){this._visibleLineCountBottom.set(this.lineCount-this._visibleLineCountTop.get(),e)}showModifiedLine(e,t,i){const n=e+1-(this.modifiedLineNumber+this._visibleLineCountTop.get()),o=this.modifiedLineNumber-this._visibleLineCountBottom.get()+this.lineCount-e;0===t&&n{var n;this._contextMenuService.showContextMenu({domForShadowRoot:u&&null!==(n=i.getDomNode())&&void 0!==n?n:void 0,getAnchor:()=>({x:e,y:t}),getActions:()=>{const e=[],t=o.modified.isEmpty;e.push(new _.aU("diff.clipboard.copyDeletedContent",t?o.original.length>1?(0,A.NC)("diff.clipboard.copyDeletedLinesContent.label","Copy deleted lines"):(0,A.NC)("diff.clipboard.copyDeletedLinesContent.single.label","Copy deleted line"):o.original.length>1?(0,A.NC)("diff.clipboard.copyChangedLinesContent.label","Copy changed lines"):(0,A.NC)("diff.clipboard.copyChangedLinesContent.single.label","Copy changed line"),void 0,!0,(async()=>{const e=this._originalTextModel.getValueInRange(o.original.toExclusiveRange());await this._clipboardService.writeText(e)}))),o.original.length>1&&e.push(new _.aU("diff.clipboard.copyDeletedLineContent",t?(0,A.NC)("diff.clipboard.copyDeletedLineContent.label","Copy deleted line ({0})",o.original.startLineNumber+c):(0,A.NC)("diff.clipboard.copyChangedLineContent.label","Copy changed line ({0})",o.original.startLineNumber+c),void 0,!0,(async()=>{let e=this._originalTextModel.getLineContent(o.original.startLineNumber+c);if(""===e){e=0===this._originalTextModel.getEndOfLineSequence()?"\n":"\r\n"}await this._clipboardService.writeText(e)})));return i.getOption(91)||e.push(new _.aU("diff.inline.revertChange",(0,A.NC)("diff.inline.revertChange.label","Revert this change"),void 0,!0,(async()=>{this._editor.revert(this._diff)}))),e},autoSelectFirstItem:!0})};this._register((0,n.mu)(this._diffActions,"mousedown",(e=>{if(!e.leftButton)return;const{top:t,height:i}=(0,n.i)(this._diffActions),o=Math.floor(d/3);e.preventDefault(),g(e.posx,t+i+o)}))),this._register(i.onMouseMove((e=>{8!==e.target.type&&5!==e.target.type||e.target.detail.viewZoneId!==this._getViewZoneId()?this.visibility=!1:(c=this._updateLightBulbPosition(this._marginDomNode,e.event.browserEvent.y,d),this.visibility=!0)}))),this._register(i.onMouseDown((e=>{if(e.event.leftButton&&(8===e.target.type||5===e.target.type)){e.target.detail.viewZoneId===this._getViewZoneId()&&(e.event.preventDefault(),c=this._updateLightBulbPosition(this._marginDomNode,e.event.browserEvent.y,d),g(e.event.posx,e.event.posy+d))}})))}_updateLightBulbPosition(e,t,i){const{top:o}=(0,n.i)(e),s=t-o,r=Math.floor(s/i),a=r*i;if(this._diffActions.style.top="".concat(a,"px"),this._viewLineCounts){let e=0;for(let t=0;te});function Fe(e,t,i,n){(0,w.N)(n,t.fontInfo);const o=i.length>0,s=new Re.HT(1e4);let r=0,a=0;const l=[];for(let c=0;c');const l=t.getLineContent(),h=M.wA.isBasicASCII(l,o),d=M.wA.containsRTL(l,h,s),c=(0,T.d1)(new T.IJ(r.fontInfo.isMonospace&&!r.disableMonospaceOptimizations,r.fontInfo.canUseHalfwidthRightwardsArrow,l,!1,h,d,0,t,i,r.tabSize,0,r.fontInfo.spaceWidth,r.fontInfo.middotWidth,r.fontInfo.wsmiddotWidth,r.stopRenderingLineAfter,r.renderWhitespace,r.renderControlCharacters,r.fontLigatures!==S.n0.OFF,null),a);return a.appendString(""),c.characterMapping.getHorizontalOffset(c.characterMapping.length)}var We=i(85729),He=i(58868),Ke=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ue=function(e,t){return function(i,n){t(i,n,e)}};let je=class extends a.JT{constructor(e,t,i,o,s,r,h,d,c,u){super(),this._targetWindow=e,this._editors=t,this._diffModel=i,this._options=o,this._diffEditorWidget=s,this._canIgnoreViewZoneUpdateEvent=r,this._origViewZonesToIgnore=h,this._modViewZonesToIgnore=d,this._clipboardService=c,this._contextMenuService=u,this._originalTopPadding=(0,l.uh)(this,0),this._originalScrollOffset=(0,l.uh)(this,0),this._originalScrollOffsetAnimated=(0,y.Vm)(this._targetWindow,this._originalScrollOffset,this._store),this._modifiedTopPadding=(0,l.uh)(this,0),this._modifiedScrollOffset=(0,l.uh)(this,0),this._modifiedScrollOffsetAnimated=(0,y.Vm)(this._targetWindow,this._modifiedScrollOffset,this._store);const g=(0,l.uh)("invalidateAlignmentsState",0),m=this._register(new ae.pY((()=>{g.set(g.get()+1,void 0)}),0));this._register(this._editors.original.onDidChangeViewZones((e=>{this._canIgnoreViewZoneUpdateEvent()||m.schedule()}))),this._register(this._editors.modified.onDidChangeViewZones((e=>{this._canIgnoreViewZoneUpdateEvent()||m.schedule()}))),this._register(this._editors.original.onDidChangeConfiguration((e=>{(e.hasChanged(146)||e.hasChanged(67))&&m.schedule()}))),this._register(this._editors.modified.onDidChangeConfiguration((e=>{(e.hasChanged(146)||e.hasChanged(67))&&m.schedule()})));const f=this._diffModel.map((e=>e?(0,l.rD)(e.model.original.onDidChangeTokens,(()=>2===e.model.original.tokenization.backgroundTokenizationState)):void 0)).map(((e,t)=>null===e||void 0===e?void 0:e.read(t))),p=(0,l.nK)((e=>{const t=this._diffModel.read(e),i=null===t||void 0===t?void 0:t.diff.read(e);if(!t||!i)return null;g.read(e);const n=this._options.renderSideBySide.read(e);return qe(this._editors.original,this._editors.modified,i.mappings,this._origViewZonesToIgnore,this._modViewZonesToIgnore,n)})),_=(0,l.nK)((e=>{var t;const i=null===(t=this._diffModel.read(e))||void 0===t?void 0:t.movedTextToCompare.read(e);if(!i)return null;g.read(e);const n=i.changes.map((e=>new xe(e)));return qe(this._editors.original,this._editors.modified,n,this._origViewZonesToIgnore,this._modViewZonesToIgnore,!0)}));function v(){const e=document.createElement("div");return e.className="diagonal-fill",e}const S=this._register(new a.SL);this.viewZones=(0,l.Be)(this,((e,t)=>{var i,o,r,a,l,h,d,c;S.clear();const u=p.read(e)||[],g=[],m=[],y=this._modifiedTopPadding.read(e);y>0&&m.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:y,showInHiddenAreas:!0,suppressMouseDown:!0});const L=this._originalTopPadding.read(e);L>0&&g.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:L,showInHiddenAreas:!0,suppressMouseDown:!0});const k=this._options.renderSideBySide.read(e),D=k||null===(i=this._editors.modified._getViewModel())||void 0===i?void 0:i.createLineBreaksComputer();if(D){const O=this._editors.original.getModel();for(const P of u)if(P.diff)for(let F=P.originalRange.startLineNumber;FO.getLineCount())return{orig:g,mod:m};null===D||void 0===D||D.addRequest(O.getLineContent(F),null,null)}}const N=null!==(o=null===D||void 0===D?void 0:D.finalize())&&void 0!==o?o:[];let x=0;const E=this._editors.modified.getOption(67),I=null===(r=this._diffModel.read(e))||void 0===r?void 0:r.movedTextToCompare.read(e),T=null!==(l=null===(a=this._editors.original.getModel())||void 0===a?void 0:a.mightContainNonBasicASCII())&&void 0!==l&&l,A=null!==(d=null===(h=this._editors.original.getModel())||void 0===h?void 0:h.mightContainRTL())&&void 0!==d&&d,R=ze.fromEditor(this._editors.modified);for(const B of u)if(B.diff&&!k){if(!B.originalRange.isEmpty){f.read(e);const V=document.createElement("div");V.classList.add("view-lines","line-delete","monaco-mouse-cursor-text");const W=this._editors.original.getModel();if(B.originalRange.endLineNumberExclusive-1>W.getLineCount())return{orig:g,mod:m};const H=new Be(B.originalRange.mapToLineArray((e=>W.tokenization.getLineTokens(e))),B.originalRange.mapToLineArray((e=>N[x++])),T,A),K=[];for(const G of B.diff.innerChanges||[])K.push(new M.$t(G.originalRange.delta(-(B.diff.original.startLineNumber-1)),ie.rq.className,0));const U=Fe(H,R,K,V),j=document.createElement("div");if(j.className="inline-deleted-margin-view-zone",(0,w.N)(j,R.fontInfo),this._options.renderIndicators.read(e))for(let Q=0;Q(0,le.cW)(q)),j,this._editors.modified,B.diff,this._diffEditorWidget,U.viewLineCounts,this._editors.original.getModel(),this._contextMenuService,this._clipboardService));for(let Y=0;Y1&&g.push({afterLineNumber:B.originalRange.startLineNumber+Y,domNode:v(),heightInPx:($-1)*E,showInHiddenAreas:!0,suppressMouseDown:!0})}m.push({afterLineNumber:B.modifiedRange.startLineNumber-1,domNode:V,heightInPx:U.heightInLines*E,minWidthInPx:U.minWidthInPx,marginDomNode:j,setZoneId(e){q=e},showInHiddenAreas:!0,suppressMouseDown:!0})}const z=document.createElement("div");z.className="gutter-delete",g.push({afterLineNumber:B.originalRange.endLineNumberExclusive-1,domNode:v(),heightInPx:B.modifiedHeightInPx,marginDomNode:z,showInHiddenAreas:!0,suppressMouseDown:!0})}else{const J=B.modifiedHeightInPx-B.originalHeightInPx;if(J>0){if(null===I||void 0===I?void 0:I.lineRangeMapping.original.delta(-1).deltaLength(2).contains(B.originalRange.endLineNumberExclusive-1))continue;g.push({afterLineNumber:B.originalRange.endLineNumberExclusive-1,domNode:v(),heightInPx:J,showInHiddenAreas:!0,suppressMouseDown:!0})}else{if(null===I||void 0===I?void 0:I.lineRangeMapping.modified.delta(-1).deltaLength(2).contains(B.modifiedRange.endLineNumberExclusive-1))continue;function X(){const e=document.createElement("div");return e.className="arrow-revert-change "+C.k.asClassName(b.l.arrowRight),t.add((0,n.nm)(e,"mousedown",(e=>e.stopPropagation()))),t.add((0,n.nm)(e,"click",(e=>{e.stopPropagation(),s.revert(B.diff)}))),(0,n.$)("div",{},e)}let ee;B.diff&&B.diff.modified.isEmpty&&this._options.shouldRenderOldRevertArrows.read(e)&&(ee=X()),m.push({afterLineNumber:B.modifiedRange.endLineNumberExclusive-1,domNode:v(),heightInPx:-J,marginDomNode:ee,showInHiddenAreas:!0,suppressMouseDown:!0})}}for(const te of null!==(c=_.read(e))&&void 0!==c?c:[]){if(!(null===I||void 0===I?void 0:I.lineRangeMapping.original.intersect(te.originalRange))||!(null===I||void 0===I?void 0:I.lineRangeMapping.modified.intersect(te.modifiedRange)))continue;const ne=te.modifiedHeightInPx-te.originalHeightInPx;ne>0?g.push({afterLineNumber:te.originalRange.endLineNumberExclusive-1,domNode:v(),heightInPx:ne,showInHiddenAreas:!0,suppressMouseDown:!0}):m.push({afterLineNumber:te.modifiedRange.endLineNumberExclusive-1,domNode:v(),heightInPx:-ne,showInHiddenAreas:!0,suppressMouseDown:!0})}return{orig:g,mod:m}}));let L=!1;this._register(this._editors.original.onDidScrollChange((e=>{e.scrollLeftChanged&&!L&&(L=!0,this._editors.modified.setScrollLeft(e.scrollLeft),L=!1)}))),this._register(this._editors.modified.onDidScrollChange((e=>{e.scrollLeftChanged&&!L&&(L=!0,this._editors.original.setScrollLeft(e.scrollLeft),L=!1)}))),this._originalScrollTop=(0,l.rD)(this._editors.original.onDidScrollChange,(()=>this._editors.original.getScrollTop())),this._modifiedScrollTop=(0,l.rD)(this._editors.modified.onDidScrollChange,(()=>this._editors.modified.getScrollTop())),this._register((0,l.EH)((e=>{const t=this._originalScrollTop.read(e)-(this._originalScrollOffsetAnimated.get()-this._modifiedScrollOffsetAnimated.read(e))-(this._originalTopPadding.get()-this._modifiedTopPadding.read(e));t!==this._editors.modified.getScrollTop()&&this._editors.modified.setScrollTop(t,1)}))),this._register((0,l.EH)((e=>{const t=this._modifiedScrollTop.read(e)-(this._modifiedScrollOffsetAnimated.get()-this._originalScrollOffsetAnimated.read(e))-(this._modifiedTopPadding.get()-this._originalTopPadding.read(e));t!==this._editors.original.getScrollTop()&&this._editors.original.setScrollTop(t,1)}))),this._register((0,l.EH)((e=>{var t;const i=null===(t=this._diffModel.read(e))||void 0===t?void 0:t.movedTextToCompare.read(e);let n=0;if(i){const e=this._editors.original.getTopForLineNumber(i.lineRangeMapping.original.startLineNumber,!0)-this._originalTopPadding.get();n=this._editors.modified.getTopForLineNumber(i.lineRangeMapping.modified.startLineNumber,!0)-this._modifiedTopPadding.get()-e}n>0?(this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(n,void 0)):n<0?(this._modifiedTopPadding.set(-n,void 0),this._originalTopPadding.set(0,void 0)):setTimeout((()=>{this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(0,void 0)}),400),this._editors.modified.hasTextFocus()?this._originalScrollOffset.set(this._modifiedScrollOffset.get()-n,void 0,!0):this._modifiedScrollOffset.set(this._originalScrollOffset.get()+n,void 0,!0)})))}};function qe(e,t,i,n,o,s){const r=new v.H9(Ge(e,n)),a=new v.H9(Ge(t,o)),l=e.getOption(67),h=t.getOption(67),d=[];let c=0,u=0;function g(e,t){for(;;){let i=r.peek(),n=a.peek();if(i&&i.lineNumber>=e&&(i=void 0),n&&n.lineNumber>=t&&(n=void 0),!i&&!n)break;const o=i?i.lineNumber-c:Number.MAX_VALUE,s=n?n.lineNumber-u:Number.MAX_VALUE;os?(a.dequeue(),i={lineNumber:n.lineNumber-u+c,heightInPx:0}):(r.dequeue(),a.dequeue()),d.push({originalRange:L.z.ofLength(i.lineNumber,1),modifiedRange:L.z.ofLength(n.lineNumber,1),originalHeightInPx:l+i.heightInPx,modifiedHeightInPx:h+n.heightInPx,diff:void 0})}}for(const m of i){const f=m.lineRangeMapping;g(f.original.startLineNumber,f.modified.startLineNumber);let p=!0,_=f.modified.startLineNumber,b=f.original.startLineNumber;function C(e,t){var i,n,o,s;if(et.lineNumbere+t.heightInPx),0))&&void 0!==n?n:0,f=null!==(s=null===(o=a.takeWhile((e=>e.lineNumbere+t.heightInPx),0))&&void 0!==s?s:0;d.push({originalRange:c,modifiedRange:u,originalHeightInPx:c.length*l+g,modifiedHeightInPx:u.length*h+f,diff:m.lineRangeMapping}),b=e,_=t}if(s)for(const w of f.innerChanges||[]){w.originalRange.startColumn>1&&w.modifiedRange.startColumn>1&&C(w.originalRange.startLineNumber,w.modifiedRange.startLineNumber);const y=e.getModel(),S=w.originalRange.endLineNumber<=y.getLineCount()?y.getLineMaxColumn(w.originalRange.endLineNumber):Number.MAX_SAFE_INTEGER;w.originalRange.endColumn1&&n.push({lineNumber:a,heightInPx:r*(e-1)})}for(const a of e.getWhitespaces()){if(t.has(a.id))continue;const e=0===a.afterLineNumber?0:s.convertViewPositionToModelPosition(new D.L(a.afterLineNumber,1)).lineNumber;i.push({lineNumber:e,heightInPx:a.height})}return(0,y.Ap)(i,n,(e=>e.lineNumber),((e,t)=>({lineNumber:e.lineNumber,heightInPx:e.heightInPx+t.heightInPx})))}je=Ke([Ue(8,We.p),Ue(9,He.i)],je);var Qe,Ze=i(39196),Ye=i(45153),$e=i(62413),Je=i(70397),Xe=i(87701),et=i(17903),tt=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},it=function(e,t){return function(i,n){t(i,n,e)}};let nt=Qe=class extends a.JT{constructor(e,t,i,o,s,r,a){super(),this._editors=e,this._rootElement=t,this._diffModel=i,this._rootWidth=o,this._rootHeight=s,this._modifiedEditorLayoutInfo=r,this._themeService=a,this.width=Qe.ENTIRE_DIFF_OVERVIEW_WIDTH;const h=(0,l.rD)(this._themeService.onDidColorThemeChange,(()=>this._themeService.getColorTheme())),d=(0,l.nK)((e=>{const t=h.read(e);return{insertColor:t.getColor(Xe.P6Y)||(t.getColor(Xe.ypS)||Xe.CzK).transparent(2),removeColor:t.getColor(Xe.F9q)||(t.getColor(Xe.P4M)||Xe.keg).transparent(2)}})),c=(0,Ye.X)(document.createElement("div"));c.setClassName("diffViewport"),c.setPosition("absolute");const u=(0,n.h)("div.diffOverview",{style:{position:"absolute",top:"0px",width:Qe.ENTIRE_DIFF_OVERVIEW_WIDTH+"px"}}).root;this._register((0,y.xx)(u,c.domNode)),this._register((0,n.mu)(u,n.tw.POINTER_DOWN,(e=>{this._editors.modified.delegateVerticalScrollbarPointerDown(e)}))),this._register((0,n.nm)(u,n.tw.MOUSE_WHEEL,(e=>{this._editors.modified.delegateScrollFromMouseWheelEvent(e)}),{passive:!1})),this._register((0,y.xx)(this._rootElement,u)),this._register((0,l.gp)(((e,t)=>{const i=this._diffModel.read(e),n=this._editors.original.createOverviewRuler("original diffOverviewRuler");n&&(t.add(n),t.add((0,y.xx)(u,n.getDomNode())));const o=this._editors.modified.createOverviewRuler("modified diffOverviewRuler");if(o&&(t.add(o),t.add((0,y.xx)(u,o.getDomNode()))),!n||!o)return;const s=(0,l.aq)("viewZoneChanged",this._editors.original.onDidChangeViewZones),r=(0,l.aq)("viewZoneChanged",this._editors.modified.onDidChangeViewZones),a=(0,l.aq)("hiddenRangesChanged",this._editors.original.onDidChangeHiddenAreas),h=(0,l.aq)("hiddenRangesChanged",this._editors.modified.onDidChangeHiddenAreas);t.add((0,l.EH)((e=>{var t;s.read(e),r.read(e),a.read(e),h.read(e);const l=d.read(e),c=null===(t=null===i||void 0===i?void 0:i.diff.read(e))||void 0===t?void 0:t.mappings;function u(e,t,i){const n=i._getViewModel();return n?e.filter((e=>e.length>0)).map((e=>{const i=n.coordinatesConverter.convertModelPositionToViewPosition(new D.L(e.startLineNumber,1)),o=n.coordinatesConverter.convertModelPositionToViewPosition(new D.L(e.endLineNumberExclusive,1)),s=o.lineNumber-i.lineNumber;return new Je.EY(i.lineNumber,o.lineNumber,s,t.toString())})):[]}const g=u((c||[]).map((e=>e.lineRangeMapping.original)),l.removeColor,this._editors.original),m=u((c||[]).map((e=>e.lineRangeMapping.modified)),l.insertColor,this._editors.modified);null===n||void 0===n||n.setZones(g),null===o||void 0===o||o.setZones(m)}))),t.add((0,l.EH)((e=>{const t=this._rootHeight.read(e),i=this._rootWidth.read(e),s=this._modifiedEditorLayoutInfo.read(e);if(s){const i=Qe.ENTIRE_DIFF_OVERVIEW_WIDTH-2*Qe.ONE_OVERVIEW_WIDTH;n.setLayout({top:0,height:t,right:i+Qe.ONE_OVERVIEW_WIDTH,width:Qe.ONE_OVERVIEW_WIDTH}),o.setLayout({top:0,height:t,right:0,width:Qe.ONE_OVERVIEW_WIDTH});const r=this._editors.modifiedScrollTop.read(e),a=this._editors.modifiedScrollHeight.read(e),l=this._editors.modified.getOption(103),h=new $e.M(l.verticalHasArrows?l.arrowSize:0,l.verticalScrollbarSize,0,s.height,a,r);c.setTop(h.getSliderPosition()),c.setHeight(h.getSliderSize())}else c.setTop(0),c.setHeight(0);u.style.height=t+"px",u.style.left=i-Qe.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",c.setWidth(Qe.ENTIRE_DIFF_OVERVIEW_WIDTH)})))})))}};nt.ONE_OVERVIEW_WIDTH=15,nt.ENTIRE_DIFF_OVERVIEW_WIDTH=2*Qe.ONE_OVERVIEW_WIDTH,nt=Qe=tt([it(6,et.XE)],nt);var ot=i(76272),st=i(27127);const rt=[];class at extends a.JT{constructor(e,t,i,n){super(),this._editors=e,this._diffModel=t,this._options=i,this._widget=n,this._selectedDiffs=(0,l.nK)(this,(e=>{const t=this._diffModel.read(e),i=null===t||void 0===t?void 0:t.diff.read(e);if(!i)return rt;const n=this._editors.modifiedSelections.read(e);if(n.every((e=>e.isEmpty())))return rt;const o=new L.i(n.map((e=>L.z.fromRangeInclusive(e)))),s=i.mappings.filter((e=>e.lineRangeMapping.innerChanges&&o.intersects(e.lineRangeMapping.modified))).map((e=>({mapping:e,rangeMappings:e.lineRangeMapping.innerChanges.filter((e=>n.some((t=>N.e.areIntersecting(e.modifiedRange,t)))))})));return 0===s.length||s.every((e=>0===e.rangeMappings.length))?rt:s})),this._register((0,l.gp)(((e,t)=>{if(!this._options.shouldRenderOldRevertArrows.read(e))return;const i=this._diffModel.read(e),n=null===i||void 0===i?void 0:i.diff.read(e);if(!i||!n)return;if(i.movedTextToCompare.read(e))return;const o=[],s=this._selectedDiffs.read(e),r=new Set(s.map((e=>e.mapping)));if(s.length>0){const i=this._editors.modifiedSelections.read(e),n=t.add(new lt(i[i.length-1].positionLineNumber,this._widget,s.flatMap((e=>e.rangeMappings)),!0));this._editors.modified.addGlyphMarginWidget(n),o.push(n)}for(const a of n.mappings)if(!r.has(a)&&!a.lineRangeMapping.modified.isEmpty&&a.lineRangeMapping.innerChanges){const e=t.add(new lt(a.lineRangeMapping.modified.startLineNumber,this._widget,a.lineRangeMapping,!1));this._editors.modified.addGlyphMarginWidget(e),o.push(e)}t.add((0,a.OF)((()=>{for(const e of o)this._editors.modified.removeGlyphMarginWidget(e)})))})))}}class lt extends a.JT{getId(){return this._id}constructor(e,t,i,o){super(),this._lineNumber=e,this._widget=t,this._diffs=i,this._revertSelection=o,this._id="revertButton".concat(lt.counter++),this._domNode=(0,n.h)("div.revertButton",{title:this._revertSelection?(0,A.NC)("revertSelectedChanges","Revert Selected Changes"):(0,A.NC)("revertChange","Revert Change")},[(0,ot.h)(b.l.arrowRight)]).root,this._register((0,n.nm)(this._domNode,n.tw.MOUSE_DOWN,(e=>{2!==e.button&&(e.stopPropagation(),e.preventDefault())}))),this._register((0,n.nm)(this._domNode,n.tw.MOUSE_UP,(e=>{e.stopPropagation(),e.preventDefault()}))),this._register((0,n.nm)(this._domNode,n.tw.CLICK,(e=>{this._diffs instanceof x.f0?this._widget.revert(this._diffs):this._widget.revertRangeMappings(this._diffs),e.stopPropagation(),e.preventDefault()})))}getDomNode(){return this._domNode}getPosition(){return{lane:st.U.Right,range:{startColumn:1,startLineNumber:this._lineNumber,endColumn:1,endLineNumber:this._lineNumber},zIndex:10001}}}lt.counter=0;var ht=i(7906),dt=i(54081),ct=i(24920),ut=i(54731),gt=i(39040),mt=i(46765),ft=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},pt=function(e,t){return function(i,n){t(i,n,e)}};let _t=class extends a.JT{get onDidContentSizeChange(){return this._onDidContentSizeChange.event}constructor(e,t,i,n,o,s,a){super(),this.originalEditorElement=e,this.modifiedEditorElement=t,this._options=i,this._argCodeEditorWidgetOptions=n,this._createInnerEditor=o,this._instantiationService=s,this._keybindingService=a,this.original=this._register(this._createLeftHandSideEditor(this._options.editorOptions.get(),this._argCodeEditorWidgetOptions.originalEditor||{})),this.modified=this._register(this._createRightHandSideEditor(this._options.editorOptions.get(),this._argCodeEditorWidgetOptions.modifiedEditor||{})),this._onDidContentSizeChange=this._register(new r.Q5),this.modifiedScrollTop=(0,l.rD)(this.modified.onDidScrollChange,(()=>this.modified.getScrollTop())),this.modifiedScrollHeight=(0,l.rD)(this.modified.onDidScrollChange,(()=>this.modified.getScrollHeight())),this.modifiedModel=(0,l.rD)(this.modified.onDidChangeModel,(()=>this.modified.getModel())),this.modifiedSelections=(0,l.rD)(this.modified.onDidChangeCursorSelection,(()=>{var e;return null!==(e=this.modified.getSelections())&&void 0!==e?e:[]})),this.modifiedCursor=(0,l.bk)({owner:this,equalityComparer:D.L.equals},(e=>{var t,i;return null!==(i=null===(t=this.modifiedSelections.read(e)[0])||void 0===t?void 0:t.getPosition())&&void 0!==i?i:new D.L(1,1)})),this.originalCursor=(0,l.rD)(this.original.onDidChangeCursorPosition,(()=>{var e;return null!==(e=this.original.getPosition())&&void 0!==e?e:new D.L(1,1)})),this._argCodeEditorWidgetOptions=null,this._register((0,l.nJ)({createEmptyChangeSummary:()=>({}),handleChange:(e,t)=>(e.didChange(i.editorOptions)&&Object.assign(t,e.change.changedOptions),!0)},((e,t)=>{i.editorOptions.read(e),this._options.renderSideBySide.read(e),this.modified.updateOptions(this._adjustOptionsForRightHandSide(e,t)),this.original.updateOptions(this._adjustOptionsForLeftHandSide(e,t))})))}_createLeftHandSideEditor(e,t){const i=this._adjustOptionsForLeftHandSide(void 0,e),n=this._constructInnerEditor(this._instantiationService,this.originalEditorElement,i,t);return n.setContextValue("isInDiffLeftEditor",!0),n}_createRightHandSideEditor(e,t){const i=this._adjustOptionsForRightHandSide(void 0,e),n=this._constructInnerEditor(this._instantiationService,this.modifiedEditorElement,i,t);return n.setContextValue("isInDiffRightEditor",!0),n}_constructInnerEditor(e,t,i,n){const o=this._createInnerEditor(e,t,i,n);return this._register(o.onDidContentSizeChange((e=>{const t=this.original.getContentWidth()+this.modified.getContentWidth()+nt.ENTIRE_DIFF_OVERVIEW_WIDTH,i=Math.max(this.modified.getContentHeight(),this.original.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:i,contentWidth:t,contentHeightChanged:e.contentHeightChanged,contentWidthChanged:e.contentWidthChanged})}))),o}_adjustOptionsForLeftHandSide(e,t){const i=this._adjustOptionsForSubEditor(t);return this._options.renderSideBySide.get()?(i.unicodeHighlight=this._options.editorOptions.get().unicodeHighlight||{},i.wordWrapOverride1=this._options.diffWordWrap.get()):(i.wordWrapOverride1="off",i.wordWrapOverride2="off",i.stickyScroll={enabled:!1},i.unicodeHighlight={nonBasicASCII:!1,ambiguousCharacters:!1,invisibleCharacters:!1}),i.glyphMargin=this._options.renderSideBySide.get(),t.originalAriaLabel&&(i.ariaLabel=t.originalAriaLabel),i.ariaLabel=this._updateAriaLabel(i.ariaLabel),i.readOnly=!this._options.originalEditable.get(),i.dropIntoEditor={enabled:!i.readOnly},i.extraEditorClassName="original-in-monaco-diff-editor",i}_adjustOptionsForRightHandSide(e,t){const i=this._adjustOptionsForSubEditor(t);return t.modifiedAriaLabel&&(i.ariaLabel=t.modifiedAriaLabel),i.ariaLabel=this._updateAriaLabel(i.ariaLabel),i.wordWrapOverride1=this._options.diffWordWrap.get(),i.revealHorizontalRightPadding=S.BH.revealHorizontalRightPadding.defaultValue+nt.ENTIRE_DIFF_OVERVIEW_WIDTH,i.scrollbar.verticalHasArrows=!1,i.extraEditorClassName="modified-in-monaco-diff-editor",i}_adjustOptionsForSubEditor(e){const t={...e,dimension:{height:0,width:0}};return t.inDiffEditor=!0,t.automaticLayout=!1,t.scrollbar={...t.scrollbar||{}},t.folding=!1,t.codeLens=this._options.diffCodeLens.get(),t.fixedOverflowWidgets=!0,t.minimap={...t.minimap||{}},t.minimap.enabled=!1,this._options.hideUnchangedRegions.get()?t.stickyScroll={enabled:!1}:t.stickyScroll=this._options.editorOptions.get().stickyScroll,t}_updateAriaLabel(e){var t;e||(e="");const i=(0,A.NC)("diff-aria-navigation-tip"," use {0} to open the accessibility help.",null===(t=this._keybindingService.lookupKeybinding("editor.action.accessibilityHelp"))||void 0===t?void 0:t.getAriaLabel());return this._options.accessibilityVerbose.get()?e+i:e?e.replaceAll(i,""):""}};_t=ft([pt(5,O.TG),pt(6,mt.d)],_t);class vt extends a.JT{constructor(){super(...arguments),this._id=++vt.idCounter,this._onDidDispose=this._register(new r.Q5),this.onDidDispose=this._onDidDispose.event}getId(){return this.getEditorType()+":v2:"+this._id}getVisibleColumnFromPosition(e){return this._targetEditor.getVisibleColumnFromPosition(e)}getPosition(){return this._targetEditor.getPosition()}setPosition(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"api";this._targetEditor.setPosition(e,t)}revealLine(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealLine(e,t)}revealLineInCenter(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealLineInCenter(e,t)}revealLineInCenterIfOutsideViewport(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealLineInCenterIfOutsideViewport(e,t)}revealLineNearTop(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealLineNearTop(e,t)}revealPosition(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealPosition(e,t)}revealPositionInCenter(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealPositionInCenter(e,t)}revealPositionInCenterIfOutsideViewport(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealPositionInCenterIfOutsideViewport(e,t)}revealPositionNearTop(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealPositionNearTop(e,t)}getSelection(){return this._targetEditor.getSelection()}getSelections(){return this._targetEditor.getSelections()}setSelection(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"api";this._targetEditor.setSelection(e,t)}setSelections(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"api";this._targetEditor.setSelections(e,t)}revealLines(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._targetEditor.revealLines(e,t,i)}revealLinesInCenter(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._targetEditor.revealLinesInCenter(e,t,i)}revealLinesInCenterIfOutsideViewport(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._targetEditor.revealLinesInCenterIfOutsideViewport(e,t,i)}revealLinesNearTop(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._targetEditor.revealLinesNearTop(e,t,i)}revealRange(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];this._targetEditor.revealRange(e,t,i,n)}revealRangeInCenter(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealRangeInCenter(e,t)}revealRangeInCenterIfOutsideViewport(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealRangeInCenterIfOutsideViewport(e,t)}revealRangeNearTop(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealRangeNearTop(e,t)}revealRangeNearTopIfOutsideViewport(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealRangeNearTopIfOutsideViewport(e,t)}revealRangeAtTop(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._targetEditor.revealRangeAtTop(e,t)}getSupportedActions(){return this._targetEditor.getSupportedActions()}focus(){this._targetEditor.focus()}trigger(e,t,i){this._targetEditor.trigger(e,t,i)}createDecorationsCollection(e){return this._targetEditor.createDecorationsCollection(e)}changeDecorations(e){return this._targetEditor.changeDecorations(e)}}vt.idCounter=0;var bt=i(44114),Ct=i(46385),wt=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},yt=function(e,t){return function(i,n){t(i,n,e)}};let St=class{get editorOptions(){return this._options}constructor(e,t){this._accessibilityService=t,this._diffEditorWidth=(0,l.uh)(this,0),this._screenReaderMode=(0,l.rD)(this._accessibilityService.onDidChangeScreenReaderOptimized,(()=>this._accessibilityService.isScreenReaderOptimized())),this.couldShowInlineViewBecauseOfSize=(0,l.nK)(this,(e=>this._options.read(e).renderSideBySide&&this._diffEditorWidth.read(e)<=this._options.read(e).renderSideBySideInlineBreakpoint)),this.renderOverviewRuler=(0,l.nK)(this,(e=>this._options.read(e).renderOverviewRuler)),this.renderSideBySide=(0,l.nK)(this,(e=>this._options.read(e).renderSideBySide&&!(this._options.read(e).useInlineViewWhenSpaceIsLimited&&this.couldShowInlineViewBecauseOfSize.read(e)&&!this._screenReaderMode.read(e)))),this.readOnly=(0,l.nK)(this,(e=>this._options.read(e).readOnly)),this.shouldRenderOldRevertArrows=(0,l.nK)(this,(e=>!!this._options.read(e).renderMarginRevertIcon&&(!!this.renderSideBySide.read(e)&&(!this.readOnly.read(e)&&!this.shouldRenderGutterMenu.read(e))))),this.shouldRenderGutterMenu=(0,l.nK)(this,(e=>this._options.read(e).renderGutterMenu)),this.renderIndicators=(0,l.nK)(this,(e=>this._options.read(e).renderIndicators)),this.enableSplitViewResizing=(0,l.nK)(this,(e=>this._options.read(e).enableSplitViewResizing)),this.splitViewDefaultRatio=(0,l.nK)(this,(e=>this._options.read(e).splitViewDefaultRatio)),this.ignoreTrimWhitespace=(0,l.nK)(this,(e=>this._options.read(e).ignoreTrimWhitespace)),this.maxComputationTimeMs=(0,l.nK)(this,(e=>this._options.read(e).maxComputationTime)),this.showMoves=(0,l.nK)(this,(e=>this._options.read(e).experimental.showMoves&&this.renderSideBySide.read(e))),this.isInEmbeddedEditor=(0,l.nK)(this,(e=>this._options.read(e).isInEmbeddedEditor)),this.diffWordWrap=(0,l.nK)(this,(e=>this._options.read(e).diffWordWrap)),this.originalEditable=(0,l.nK)(this,(e=>this._options.read(e).originalEditable)),this.diffCodeLens=(0,l.nK)(this,(e=>this._options.read(e).diffCodeLens)),this.accessibilityVerbose=(0,l.nK)(this,(e=>this._options.read(e).accessibilityVerbose)),this.diffAlgorithm=(0,l.nK)(this,(e=>this._options.read(e).diffAlgorithm)),this.showEmptyDecorations=(0,l.nK)(this,(e=>this._options.read(e).experimental.showEmptyDecorations)),this.onlyShowAccessibleDiffViewer=(0,l.nK)(this,(e=>this._options.read(e).onlyShowAccessibleDiffViewer)),this.hideUnchangedRegions=(0,l.nK)(this,(e=>this._options.read(e).hideUnchangedRegions.enabled)),this.hideUnchangedRegionsRevealLineCount=(0,l.nK)(this,(e=>this._options.read(e).hideUnchangedRegions.revealLineCount)),this.hideUnchangedRegionsContextLineCount=(0,l.nK)(this,(e=>this._options.read(e).hideUnchangedRegions.contextLineCount)),this.hideUnchangedRegionsMinimumLineCount=(0,l.nK)(this,(e=>this._options.read(e).hideUnchangedRegions.minimumLineCount));const i={...e,...Lt(e,bt.k)};this._options=(0,l.uh)(this,i)}updateOptions(e){const t=Lt(e,this._options.get()),i={...this._options.get(),...e,...t};this._options.set(i,void 0,{changedOptions:e})}setWidth(e){this._diffEditorWidth.set(e,void 0)}};function Lt(e,t){var i,n,o,s,r,a,l,h;return{enableSplitViewResizing:(0,S.O7)(e.enableSplitViewResizing,t.enableSplitViewResizing),splitViewDefaultRatio:(0,S.L_)(e.splitViewDefaultRatio,.5,.1,.9),renderSideBySide:(0,S.O7)(e.renderSideBySide,t.renderSideBySide),renderMarginRevertIcon:(0,S.O7)(e.renderMarginRevertIcon,t.renderMarginRevertIcon),maxComputationTime:(0,S.Zc)(e.maxComputationTime,t.maxComputationTime,0,1073741824),maxFileSize:(0,S.Zc)(e.maxFileSize,t.maxFileSize,0,1073741824),ignoreTrimWhitespace:(0,S.O7)(e.ignoreTrimWhitespace,t.ignoreTrimWhitespace),renderIndicators:(0,S.O7)(e.renderIndicators,t.renderIndicators),originalEditable:(0,S.O7)(e.originalEditable,t.originalEditable),diffCodeLens:(0,S.O7)(e.diffCodeLens,t.diffCodeLens),renderOverviewRuler:(0,S.O7)(e.renderOverviewRuler,t.renderOverviewRuler),diffWordWrap:(0,S.NY)(e.diffWordWrap,t.diffWordWrap,["off","on","inherit"]),diffAlgorithm:(0,S.NY)(e.diffAlgorithm,t.diffAlgorithm,["legacy","advanced"],{smart:"legacy",experimental:"advanced"}),accessibilityVerbose:(0,S.O7)(e.accessibilityVerbose,t.accessibilityVerbose),experimental:{showMoves:(0,S.O7)(null===(i=e.experimental)||void 0===i?void 0:i.showMoves,t.experimental.showMoves),showEmptyDecorations:(0,S.O7)(null===(n=e.experimental)||void 0===n?void 0:n.showEmptyDecorations,t.experimental.showEmptyDecorations)},hideUnchangedRegions:{enabled:(0,S.O7)(null!==(s=null===(o=e.hideUnchangedRegions)||void 0===o?void 0:o.enabled)&&void 0!==s?s:null===(r=e.experimental)||void 0===r?void 0:r.collapseUnchangedRegions,t.hideUnchangedRegions.enabled),contextLineCount:(0,S.Zc)(null===(a=e.hideUnchangedRegions)||void 0===a?void 0:a.contextLineCount,t.hideUnchangedRegions.contextLineCount,0,1073741824),minimumLineCount:(0,S.Zc)(null===(l=e.hideUnchangedRegions)||void 0===l?void 0:l.minimumLineCount,t.hideUnchangedRegions.minimumLineCount,0,1073741824),revealLineCount:(0,S.Zc)(null===(h=e.hideUnchangedRegions)||void 0===h?void 0:h.revealLineCount,t.hideUnchangedRegions.revealLineCount,0,1073741824)},isInEmbeddedEditor:(0,S.O7)(e.isInEmbeddedEditor,t.isInEmbeddedEditor),onlyShowAccessibleDiffViewer:(0,S.O7)(e.onlyShowAccessibleDiffViewer,t.onlyShowAccessibleDiffViewer),renderSideBySideInlineBreakpoint:(0,S.Zc)(e.renderSideBySideInlineBreakpoint,t.renderSideBySideInlineBreakpoint,0,1073741824),useInlineViewWhenSpaceIsLimited:(0,S.O7)(e.useInlineViewWhenSpaceIsLimited,t.useInlineViewWhenSpaceIsLimited),renderGutterMenu:(0,S.O7)(e.renderGutterMenu,t.renderGutterMenu)}}St=wt([yt(1,Ct.F)],St);class kt extends a.JT{constructor(e,t,i){super(),this._editor=e,this._domNode=t,this.itemProvider=i,this.scrollTop=(0,l.rD)(this._editor.onDidScrollChange,(e=>this._editor.getScrollTop())),this.isScrollTopZero=this.scrollTop.map((e=>0===e)),this.modelAttached=(0,l.rD)(this._editor.onDidChangeModel,(e=>this._editor.hasModel())),this.editorOnDidChangeViewZones=(0,l.aq)("onDidChangeViewZones",this._editor.onDidChangeViewZones),this.editorOnDidContentSizeChange=(0,l.aq)("onDidContentSizeChange",this._editor.onDidContentSizeChange),this.domNodeSizeChanged=(0,l.GN)("domNodeSizeChanged"),this.views=new Map,this._domNode.className="gutter monaco-editor";const o=this._domNode.appendChild((0,n.h)("div.scroll-decoration",{role:"presentation",ariaHidden:"true",style:{width:"100%"}}).root),s=new ResizeObserver((()=>{(0,l.PS)((e=>{this.domNodeSizeChanged.trigger(e)}))}));s.observe(this._domNode),this._register((0,a.OF)((()=>s.disconnect()))),this._register((0,l.EH)((e=>{o.className=this.isScrollTopZero.read(e)?"":"scroll-decoration"}))),this._register((0,l.EH)((e=>this.render(e))))}dispose(){super.dispose(),(0,n.mc)(this._domNode)}render(e){if(!this.modelAttached.read(e))return;this.domNodeSizeChanged.read(e),this.editorOnDidChangeViewZones.read(e),this.editorOnDidContentSizeChange.read(e);const t=this.scrollTop.read(e),i=this._editor.getVisibleRanges(),n=new Set(this.views.keys()),o=k.q.ofStartAndLength(0,this._domNode.clientHeight);if(!o.isEmpty)for(const s of i){const i=new L.z(s.startLineNumber,s.endLineNumber+1),r=this.itemProvider.getIntersectingGutterItems(i,e);(0,l.PS)((e=>{for(const s of r){if(!s.range.intersect(i))continue;n.delete(s.id);let r=this.views.get(s.id);if(r)r.item.set(s,e);else{const e=document.createElement("div");this._domNode.appendChild(e);const t=(0,l.uh)("item",s),i=this.itemProvider.createView(t,e);r=new Dt(t,i,e),this.views.set(s.id,r)}const a=s.range.startLineNumber<=this._editor.getModel().getLineCount()?this._editor.getTopForLineNumber(s.range.startLineNumber,!0)-t:this._editor.getBottomForLineNumber(s.range.startLineNumber-1,!1)-t,h=(s.range.isEmpty?a:this._editor.getBottomForLineNumber(s.range.endLineNumberExclusive-1,!0)-t)-a;r.domNode.style.top="".concat(a,"px"),r.domNode.style.height="".concat(h,"px"),r.gutterItemView.layout(k.q.ofStartAndLength(a,h),o)}}))}for(const s of n){const e=this.views.get(s);e.gutterItemView.dispose(),this._domNode.removeChild(e.domNode),this.views.delete(s)}}}class Dt{constructor(e,t,i){this.item=e,this.gutterItemView=t,this.domNode=i}}var Nt=i(11630),xt=i(24272),Et=i(59122);class It extends xt.MS{constructor(e){super(),this._textModel=e}getValueOfRange(e){return this._textModel.getValueInRange(e)}get length(){const e=this._textModel.getLineCount(),t=this._textModel.getLineLength(e);return new Et.A(e-1,t)}}var Tt=i(60548),Mt=i(48489),At=i(8695),Rt=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ot=function(e,t){return function(i,n){t(i,n,e)}};const Pt=[];let Ft=class extends a.JT{constructor(e,t,i,o,s,r){super(),this._diffModel=t,this._editors=i,this._instantiationService=o,this._contextKeyService=s,this._menuService=r,this._menu=this._register(this._menuService.createMenu(Mt.eH.DiffEditorHunkToolbar,this._contextKeyService)),this._actions=(0,l.rD)(this._menu.onDidChange,(()=>this._menu.getActions())),this._hasActions=this._actions.map((e=>e.length>0)),this.width=(0,l.nK)(this,(e=>this._hasActions.read(e)?35:0)),this.elements=(0,n.h)("div.gutter@gutter",{style:{position:"absolute",height:"100%",width:"35px"}},[]),this._currentDiff=(0,l.nK)(this,(e=>{var t;const i=this._diffModel.read(e);if(!i)return;const n=null===(t=i.diff.read(e))||void 0===t?void 0:t.mappings,o=this._editors.modifiedCursor.read(e);return o?null===n||void 0===n?void 0:n.find((e=>e.lineRangeMapping.modified.contains(o.lineNumber))):void 0})),this._selectedDiffs=(0,l.nK)(this,(e=>{const t=this._diffModel.read(e),i=null===t||void 0===t?void 0:t.diff.read(e);if(!i)return Pt;const n=this._editors.modifiedSelections.read(e);if(n.every((e=>e.isEmpty())))return Pt;const o=new L.i(n.map((e=>L.z.fromRangeInclusive(e)))),s=i.mappings.filter((e=>e.lineRangeMapping.innerChanges&&o.intersects(e.lineRangeMapping.modified))).map((e=>({mapping:e,rangeMappings:e.lineRangeMapping.innerChanges.filter((e=>n.some((t=>N.e.areIntersecting(e.modifiedRange,t)))))})));return 0===s.length||s.every((e=>0===e.rangeMappings.length))?Pt:s})),this._register((0,y.RL)(e,this.elements.root)),this._register((0,n.nm)(this.elements.root,"click",(()=>{this._editors.modified.focus()}))),this._register((0,y.bg)(this.elements.root,{display:this._hasActions.map((e=>e?"block":"none"))})),this._register(new kt(this._editors.modified,this.elements.root,{getIntersectingGutterItems:(e,t)=>{const i=this._diffModel.read(t);if(!i)return[];const n=i.diff.read(t);if(!n)return[];const o=this._selectedDiffs.read(t);if(o.length>0){const e=x.gB.fromRangeMappings(o.flatMap((e=>e.rangeMappings)));return[new Bt(e,!0,Mt.eH.DiffEditorSelectionToolbar,void 0,i.model.original.uri,i.model.modified.uri)]}const s=this._currentDiff.read(t);return n.mappings.map((e=>new Bt(e.lineRangeMapping.withInnerChangesFromLineRanges(),e.lineRangeMapping===(null===s||void 0===s?void 0:s.lineRangeMapping),Mt.eH.DiffEditorHunkToolbar,void 0,i.model.original.uri,i.model.modified.uri)))},createView:(e,t)=>this._instantiationService.createInstance(zt,e,t,this)})),this._register((0,n.nm)(this.elements.gutter,n.tw.MOUSE_WHEEL,(e=>{this._editors.modified.getOption(103).handleMouseWheel&&this._editors.modified.delegateScrollFromMouseWheelEvent(e)}),{passive:!1}))}computeStagedValue(e){var t;const i=null!==(t=e.innerChanges)&&void 0!==t?t:[];return new xt.PY(i.map((e=>new xt.At(e.originalRange,this._editors.modifiedModel.get().getValueInRange(e.modifiedRange))))).apply(new It(this._editors.original.getModel()))}layout(e){this.elements.gutter.style.left=e+"px"}};Ft=Rt([Ot(3,O.TG),Ot(4,ct.i6),Ot(5,Mt.co)],Ft);class Bt{constructor(e,t,i,n,o,s){this.mapping=e,this.showAlways=t,this.menuId=i,this.rangeOverride=n,this.originalUri=o,this.modifiedUri=s}get id(){return this.mapping.modified.toString()}get range(){var e;return null!==(e=this.rangeOverride)&&void 0!==e?e:this.mapping.modified}}let zt=class extends a.JT{constructor(e,t,i,o){super(),this._item=e,this._elements=(0,n.h)("div.gutterItem",{style:{height:"20px",width:"34px"}},[(0,n.h)("div.background@background",{},[]),(0,n.h)("div.buttons@buttons",{},[])]),this._showAlways=this._item.map(this,(e=>e.showAlways)),this._menuId=this._item.map(this,(e=>e.menuId)),this._isSmall=(0,l.uh)(this,!1),this._lastItemRange=void 0,this._lastViewRange=void 0;const s=this._register(o.createInstance(At.mQ,"element",!0,{position:{hoverPosition:1}}));this._register((0,y.xx)(t,this._elements.root)),this._register((0,l.EH)((e=>{const t=this._showAlways.read(e);this._elements.root.classList.toggle("noTransition",!0),this._elements.root.classList.toggle("showAlways",t),setTimeout((()=>{this._elements.root.classList.toggle("noTransition",!1)}),0)}))),this._register((0,l.gp)(((e,t)=>{this._elements.buttons.replaceChildren();const n=t.add(o.createInstance(Tt.r,this._elements.buttons,this._menuId.read(e),{orientation:1,hoverDelegate:s,toolbarOptions:{primaryGroup:e=>e.startsWith("primary")},overflowBehavior:{maxItems:this._isSmall.read(e)?1:3},hiddenItemStrategy:0,actionRunner:new Nt.D((()=>{const e=this._item.get(),t=e.mapping;return{mapping:t,originalWithModifiedChanges:i.computeStagedValue(t),originalUri:e.originalUri,modifiedUri:e.modifiedUri}})),menuOptions:{shouldForwardArgs:!0}}));t.add(n.onDidChangeMenuItems((()=>{this._lastItemRange&&this.layout(this._lastItemRange,this._lastViewRange)})))})))}layout(e,t){this._lastItemRange=e,this._lastViewRange=t;let i=this._elements.buttons.clientHeight;this._isSmall.set(1===this._item.get().mapping.original.startLineNumber&&e.length<30,void 0),i=this._elements.buttons.clientHeight,this._elements.root.style.top=e.start+"px",this._elements.root.style.height=e.length+"px";const n=e.length/2-i/2,o=i;let s=e.start+n;const r=k.q.tryCreate(o,t.endExclusive-o-i),a=k.q.tryCreate(e.start+o,e.endExclusive-i-o);a&&r&&a.start=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Wt=function(e,t){return function(i,n){t(i,n,e)}};let Ht=class extends vt{get onDidContentSizeChange(){return this._editors.onDidContentSizeChange}constructor(e,t,i,o,s,d,c,g){var m;super(),this._domElement=e,this._parentContextKeyService=o,this._parentInstantiationService=s,this._accessibilitySignalService=c,this._editorProgressService=g,this.elements=(0,n.h)("div.monaco-diff-editor.side-by-side",{style:{position:"relative",height:"100%"}},[(0,n.h)("div.noModificationsOverlay@overlay",{style:{position:"absolute",height:"100%",visibility:"hidden"}},[(0,n.$)("span",{},"No Changes")]),(0,n.h)("div.editor.original@original",{style:{position:"absolute",height:"100%"}}),(0,n.h)("div.editor.modified@modified",{style:{position:"absolute",height:"100%"}}),(0,n.h)("div.accessibleDiffViewer@accessibleDiffViewer",{style:{position:"absolute",height:"100%"}})]),this._diffModel=(0,l.uh)(this,void 0),this._shouldDisposeDiffModel=!1,this.onDidChangeModel=r.ju.fromObservableLight(this._diffModel),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._domElement)),this._instantiationService=this._parentInstantiationService.createChild(new ut.y([ct.i6,this._contextKeyService])),this._boundarySashes=(0,l.uh)(this,void 0),this._accessibleDiffViewerShouldBeVisible=(0,l.uh)(this,!1),this._accessibleDiffViewerVisible=(0,l.nK)(this,(e=>!!this._options.onlyShowAccessibleDiffViewer.read(e)||this._accessibleDiffViewerShouldBeVisible.read(e))),this._movedBlocksLinesPart=(0,l.uh)(this,void 0),this._layoutInfo=(0,l.nK)(this,(e=>{var t,i,n,o,s;const r=this._rootSizeObserver.width.read(e),a=this._rootSizeObserver.height.read(e),l=this._sash.read(e),h=this._gutter.read(e),d=null!==(t=null===h||void 0===h?void 0:h.width.read(e))&&void 0!==t?t:0,c=null!==(n=null===(i=this._overviewRulerPart.read(e))||void 0===i?void 0:i.width)&&void 0!==n?n:0;let u,g,m,f,p;if(!!l){const t=l.sashLeft.read(e);u=0,g=t-d-(null!==(s=null===(o=this._movedBlocksLinesPart.read(e))||void 0===o?void 0:o.width.read(e))&&void 0!==s?s:0),p=t-d,m=t,f=r-m-c}else p=0,u=d,g=Math.max(5,this._editors.original.getLayoutInfo().decorationsLeft),m=d+g,f=r-m-c;return this.elements.original.style.left=u+"px",this.elements.original.style.width=g+"px",this._editors.original.layout({width:g,height:a},!0),null===h||void 0===h||h.layout(p),this.elements.modified.style.left=m+"px",this.elements.modified.style.width=f+"px",this._editors.modified.layout({width:f,height:a},!0),{modifiedEditor:this._editors.modified.getLayoutInfo(),originalEditor:this._editors.original.getLayoutInfo()}})),this._diffValue=this._diffModel.map(((e,t)=>null===e||void 0===e?void 0:e.diff.read(t))),this.onDidUpdateDiff=r.ju.fromObservableLight(this._diffValue),d.willCreateDiffEditor(),this._contextKeyService.createKey("isInDiffEditor",!0),this._domElement.appendChild(this.elements.root),this._register((0,a.OF)((()=>this._domElement.removeChild(this.elements.root)))),this._rootSizeObserver=this._register(new y.DU(this.elements.root,t.dimension)),this._rootSizeObserver.setAutomaticLayout(null!==(m=t.automaticLayout)&&void 0!==m&&m),this._options=this._instantiationService.createInstance(St,t),this._register((0,l.EH)((e=>{this._options.setWidth(this._rootSizeObserver.width.read(e))}))),this._contextKeyService.createKey(dt.u.isEmbeddedDiffEditor.key,!1),this._register((0,y.GU)(dt.u.isEmbeddedDiffEditor,this._contextKeyService,(e=>this._options.isInEmbeddedEditor.read(e)))),this._register((0,y.GU)(dt.u.comparingMovedCode,this._contextKeyService,(e=>{var t;return!!(null===(t=this._diffModel.read(e))||void 0===t?void 0:t.movedTextToCompare.read(e))}))),this._register((0,y.GU)(dt.u.diffEditorRenderSideBySideInlineBreakpointReached,this._contextKeyService,(e=>this._options.couldShowInlineViewBecauseOfSize.read(e)))),this._register((0,y.GU)(dt.u.diffEditorInlineMode,this._contextKeyService,(e=>!this._options.renderSideBySide.read(e)))),this._register((0,y.GU)(dt.u.hasChanges,this._contextKeyService,(e=>{var t,i,n;return(null!==(n=null===(i=null===(t=this._diffModel.read(e))||void 0===t?void 0:t.diff.read(e))||void 0===i?void 0:i.mappings.length)&&void 0!==n?n:0)>0}))),this._editors=this._register(this._instantiationService.createInstance(_t,this.elements.original,this.elements.modified,this._options,i,((e,t,i,n)=>this._createInnerEditor(e,t,i,n)))),this._register((0,y.GU)(dt.u.diffEditorOriginalWritable,this._contextKeyService,(e=>this._options.originalEditable.read(e)))),this._register((0,y.GU)(dt.u.diffEditorModifiedWritable,this._contextKeyService,(e=>!this._options.readOnly.read(e)))),this._register((0,y.GU)(dt.u.diffEditorOriginalUri,this._contextKeyService,(e=>{var t,i;return null!==(i=null===(t=this._diffModel.read(e))||void 0===t?void 0:t.model.original.uri.toString())&&void 0!==i?i:""}))),this._register((0,y.GU)(dt.u.diffEditorModifiedUri,this._contextKeyService,(e=>{var t,i;return null!==(i=null===(t=this._diffModel.read(e))||void 0===t?void 0:t.model.modified.uri.toString())&&void 0!==i?i:""}))),this._overviewRulerPart=(0,h.kA)(this,(e=>this._options.renderOverviewRuler.read(e)?this._instantiationService.createInstance((0,y.NW)(nt,e),this._editors,this.elements.root,this._diffModel,this._rootSizeObserver.width,this._rootSizeObserver.height,this._layoutInfo.map((e=>e.modifiedEditor))):void 0)).recomputeInitiallyAndOnChange(this._store),this._sash=(0,h.kA)(this,(e=>{const t=this._options.renderSideBySide.read(e);return this.elements.root.classList.toggle("side-by-side",t),t?new se(this._options,this.elements.root,{height:this._rootSizeObserver.height,width:this._rootSizeObserver.width.map(((e,t)=>{var i,n;return e-(null!==(n=null===(i=this._overviewRulerPart.read(t))||void 0===i?void 0:i.width)&&void 0!==n?n:0)}))},this._boundarySashes):void 0})).recomputeInitiallyAndOnChange(this._store);const f=(0,h.kA)(this,(e=>this._instantiationService.createInstance((0,y.NW)(Ze.O,e),this._editors,this._diffModel,this._options))).recomputeInitiallyAndOnChange(this._store);(0,h.kA)(this,(e=>this._instantiationService.createInstance((0,y.NW)(ne,e),this._editors,this._diffModel,this._options,this))).recomputeInitiallyAndOnChange(this._store);const p=new Set,_=new Set;let v=!1;const b=(0,h.kA)(this,(e=>this._instantiationService.createInstance((0,y.NW)(je,e),(0,n.Jj)(this._domElement),this._editors,this._diffModel,this._options,this,(()=>v||f.get().isUpdatingHiddenAreas),p,_))).recomputeInitiallyAndOnChange(this._store),C=(0,l.nK)(this,(e=>{const t=b.read(e).viewZones.read(e).orig,i=f.read(e).viewZones.read(e).origViewZones;return t.concat(i)})),w=(0,l.nK)(this,(e=>{const t=b.read(e).viewZones.read(e).mod,i=f.read(e).viewZones.read(e).modViewZones;return t.concat(i)}));let S;this._register((0,y.Sv)(this._editors.original,C,(e=>{v=e}),p)),this._register((0,y.Sv)(this._editors.modified,w,(e=>{v=e,v?S=u.Z.capture(this._editors.modified):(null===S||void 0===S||S.restore(this._editors.modified),S=void 0)}),_)),this._accessibleDiffViewer=(0,h.kA)(this,(e=>this._instantiationService.createInstance((0,y.NW)(H,e),this.elements.accessibleDiffViewer,this._accessibleDiffViewerVisible,((e,t)=>this._accessibleDiffViewerShouldBeVisible.set(e,t)),this._options.onlyShowAccessibleDiffViewer.map((e=>!e)),this._rootSizeObserver.width,this._rootSizeObserver.height,this._diffModel.map(((e,t)=>{var i;return null===(i=null===e||void 0===e?void 0:e.diff.read(t))||void 0===i?void 0:i.mappings.map((e=>e.lineRangeMapping))})),new J(this._editors)))).recomputeInitiallyAndOnChange(this._store);const L=this._accessibleDiffViewerVisible.map((e=>e?"hidden":"visible"));this._register((0,y.bg)(this.elements.modified,{visibility:L})),this._register((0,y.bg)(this.elements.original,{visibility:L})),this._createDiffEditorContributions(),d.addDiffEditor(this),this._gutter=(0,h.kA)(this,(e=>this._options.shouldRenderGutterMenu.read(e)?this._instantiationService.createInstance((0,y.NW)(Ft,e),this.elements.root,this._diffModel,this._editors):void 0)),this._register((0,l.jx)(this._layoutInfo)),(0,h.kA)(this,(e=>new((0,y.NW)(X,e))(this.elements.root,this._diffModel,this._layoutInfo.map((e=>e.originalEditor)),this._layoutInfo.map((e=>e.modifiedEditor)),this._editors))).recomputeInitiallyAndOnChange(this._store,(e=>{this._movedBlocksLinesPart.set(e,void 0)})),this._register((0,y.bg)(this.elements.overlay,{width:this._layoutInfo.map(((e,t)=>e.originalEditor.width+(this._options.renderSideBySide.read(t)?0:e.modifiedEditor.width))),visibility:(0,l.nK)((e=>{var t,i;return this._options.hideUnchangedRegions.read(e)&&0===(null===(i=null===(t=this._diffModel.read(e))||void 0===t?void 0:t.diff.read(e))||void 0===i?void 0:i.mappings.length)?"visible":"hidden"}))})),this._register(r.ju.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition,(e=>this._handleCursorPositionChange(e,!0)))),this._register(r.ju.runAndSubscribe(this._editors.original.onDidChangeCursorPosition,(e=>this._handleCursorPositionChange(e,!1))));const k=this._diffModel.map(this,((e,t)=>{if(e)return void 0===e.diff.read(t)&&!e.isDiffUpToDate.read(t)}));this._register((0,l.gp)(((e,t)=>{if(!0===k.read(e)){const e=this._editorProgressService.show(!0,1e3);t.add((0,a.OF)((()=>e.done())))}}))),this._register((0,a.OF)((()=>{var e;this._shouldDisposeDiffModel&&(null===(e=this._diffModel.get())||void 0===e||e.dispose())}))),this._register((0,l.gp)(((e,t)=>{t.add(new((0,y.NW)(at,e))(this._editors,this._diffModel,this._options,this))})))}_createInnerEditor(e,t,i,n){return e.createInstance(g.Gm,t,i,n)}_createDiffEditorContributions(){const e=d.Uc.getDiffEditorContributions();for(const i of e)try{this._register(this._instantiationService.createInstance(i.ctor,this))}catch(t){(0,s.dL)(t)}}get _targetEditor(){return this._editors.modified}getEditorType(){return ht.g.IDiffEditor}layout(e){this._rootSizeObserver.observe(e)}hasTextFocus(){return this._editors.original.hasTextFocus()||this._editors.modified.hasTextFocus()}saveViewState(){var e;return{original:this._editors.original.saveViewState(),modified:this._editors.modified.saveViewState(),modelState:null===(e=this._diffModel.get())||void 0===e?void 0:e.serializeState()}}restoreViewState(e){var t;if(e&&e.original&&e.modified){const i=e;this._editors.original.restoreViewState(i.original),this._editors.modified.restoreViewState(i.modified),i.modelState&&(null===(t=this._diffModel.get())||void 0===t||t.restoreSerializedState(i.modelState))}}handleInitialized(){this._editors.original.handleInitialized(),this._editors.modified.handleInitialized()}createViewModel(e){return this._instantiationService.createInstance(De,e,this._options)}getModel(){var e,t;return null!==(t=null===(e=this._diffModel.get())||void 0===e?void 0:e.model)&&void 0!==t?t:null}setModel(e,t){!e&&this._diffModel.get()&&this._accessibleDiffViewer.get().close();const i=e?"model"in e?{model:e,shouldDispose:!1}:{model:this.createViewModel(e),shouldDispose:!0}:void 0;this._diffModel.get()!==(null===i||void 0===i?void 0:i.model)&&(0,l.c8)(t,(e=>{var t;l.rD.batchEventsGlobally(e,(()=>{this._editors.original.setModel(i?i.model.model.original:null),this._editors.modified.setModel(i?i.model.model.modified:null)}));const n=this._diffModel.get(),o=this._shouldDisposeDiffModel;this._shouldDisposeDiffModel=null!==(t=null===i||void 0===i?void 0:i.shouldDispose)&&void 0!==t&&t,this._diffModel.set(null===i||void 0===i?void 0:i.model,e),o&&(null===n||void 0===n||n.dispose())}))}updateOptions(e){this._options.updateOptions(e)}getContainerDomNode(){return this._domElement}getOriginalEditor(){return this._editors.original}getModifiedEditor(){return this._editors.modified}getLineChanges(){var e;const t=null===(e=this._diffModel.get())||void 0===e?void 0:e.diff.get();return t?t.mappings.map((e=>{const t=e.lineRangeMapping;let i,n,o,s,r=t.innerChanges;return t.original.isEmpty?(i=t.original.startLineNumber-1,n=0,r=void 0):(i=t.original.startLineNumber,n=t.original.endLineNumberExclusive-1),t.modified.isEmpty?(o=t.modified.startLineNumber-1,s=0,r=void 0):(o=t.modified.startLineNumber,s=t.modified.endLineNumberExclusive-1),{originalStartLineNumber:i,originalEndLineNumber:n,modifiedStartLineNumber:o,modifiedEndLineNumber:s,charChanges:null===r||void 0===r?void 0:r.map((e=>({originalStartLineNumber:e.originalRange.startLineNumber,originalStartColumn:e.originalRange.startColumn,originalEndLineNumber:e.originalRange.endLineNumber,originalEndColumn:e.originalRange.endColumn,modifiedStartLineNumber:e.modifiedRange.startLineNumber,modifiedStartColumn:e.modifiedRange.startColumn,modifiedEndLineNumber:e.modifiedRange.endLineNumber,modifiedEndColumn:e.modifiedRange.endColumn})))}})):null}revert(e){const t=this._diffModel.get();t&&t.isDiffUpToDate.get()&&this._editors.modified.executeEdits("diffEditor",[{range:e.modified.toExclusiveRange(),text:t.model.original.getValueInRange(e.original.toExclusiveRange())}])}revertRangeMappings(e){const t=this._diffModel.get();if(!t||!t.isDiffUpToDate.get())return;const i=e.map((e=>({range:e.modifiedRange,text:t.model.original.getValueInRange(e.originalRange)})));this._editors.modified.executeEdits("diffEditor",i)}_goTo(e){this._editors.modified.setPosition(new D.L(e.lineRangeMapping.modified.startLineNumber,1)),this._editors.modified.revealRangeInCenter(e.lineRangeMapping.modified.toExclusiveRange())}goToDiff(e){var t,i,n,s;const r=null===(i=null===(t=this._diffModel.get())||void 0===t?void 0:t.diff.get())||void 0===i?void 0:i.mappings;if(!r||0===r.length)return;const a=this._editors.modified.getPosition().lineNumber;let l;l="next"===e?null!==(n=r.find((e=>e.lineRangeMapping.modified.startLineNumber>a)))&&void 0!==n?n:r[0]:null!==(s=(0,o.dF)(r,(e=>e.lineRangeMapping.modified.startLineNumber{var t;const i=null===(t=e.diff.get())||void 0===t?void 0:t.mappings;i&&0!==i.length&&this._goTo(i[0])}))}accessibleDiffViewerNext(){this._accessibleDiffViewer.get().next()}accessibleDiffViewerPrev(){this._accessibleDiffViewer.get().prev()}async waitForDiff(){const e=this._diffModel.get();e&&await e.waitForDiff()}mapToOtherSide(){var e,t;const i=this._editors.modified.hasWidgetFocus(),n=i?this._editors.modified:this._editors.original,o=i?this._editors.original:this._editors.modified;let s;const r=n.getSelection();if(r){const n=null===(t=null===(e=this._diffModel.get())||void 0===e?void 0:e.diff.get())||void 0===t?void 0:t.mappings.map((e=>i?e.lineRangeMapping.flip():e.lineRangeMapping));if(n){const e=(0,y.cV)(r.getStartPosition(),n),t=(0,y.cV)(r.getEndPosition(),n);s=N.e.plusRange(e,t)}}return{destination:o,destinationSelection:s}}switchSide(){const{destination:e,destinationSelection:t}=this.mapToOtherSide();e.focus(),t&&e.setSelection(t)}exitCompareMove(){const e=this._diffModel.get();e&&e.movedTextToCompare.set(void 0,void 0)}collapseAllUnchangedRegions(){var e;const t=null===(e=this._diffModel.get())||void 0===e?void 0:e.unchangedRegions.get();t&&(0,l.PS)((e=>{for(const i of t)i.collapseAll(e)}))}showAllUnchangedRegions(){var e;const t=null===(e=this._diffModel.get())||void 0===e?void 0:e.unchangedRegions.get();t&&(0,l.PS)((e=>{for(const i of t)i.showAll(e)}))}_handleCursorPositionChange(e,t){var i,n;if(3===(null===e||void 0===e?void 0:e.reason)){const o=null===(n=null===(i=this._diffModel.get())||void 0===i?void 0:i.diff.get())||void 0===n?void 0:n.mappings.find((i=>t?i.lineRangeMapping.modified.contains(e.position.lineNumber):i.lineRangeMapping.original.contains(e.position.lineNumber)));(null===o||void 0===o?void 0:o.lineRangeMapping.modified.isEmpty)?this._accessibilitySignalService.playSignal(R.iP.diffLineDeleted,{source:"diffEditor.cursorPositionChanged"}):(null===o||void 0===o?void 0:o.lineRangeMapping.original.isEmpty)?this._accessibilitySignalService.playSignal(R.iP.diffLineInserted,{source:"diffEditor.cursorPositionChanged"}):o&&this._accessibilitySignalService.playSignal(R.iP.diffLineModified,{source:"diffEditor.cursorPositionChanged"})}}};Ht=Vt([Wt(3,ct.i6),Wt(4,O.TG),Wt(5,c.$),Wt(6,R.IV),Wt(7,gt.ek)],Ht)},39196:(e,t,i)=>{i.d(t,{O:()=>y});var n,o=i(85714),s=i(76272),r=i(62974),a=i(32936),l=i(89599),h=i(59130),d=i(4542),c=i(62502),u=i(63686),g=i(5545),m=i(56590),f=i(2067),p=i(10670),_=i(761),v=i(71721),b=i(34304),C=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},w=function(e,t){return function(i,n){t(i,n,e)}};let y=n=class extends l.JT{static setBreadcrumbsSourceFactory(e){this._breadcrumbsSourceFactory.set(e,void 0)}get isUpdatingHiddenAreas(){return this._isUpdatingHiddenAreas}constructor(e,t,i,o){super(),this._editors=e,this._diffModel=t,this._options=i,this._instantiationService=o,this._modifiedOutlineSource=(0,d.kA)(this,(e=>{const t=this._editors.modifiedModel.read(e),i=n._breadcrumbsSourceFactory.read(e);return t&&i?i(t,this._instantiationService):void 0})),this._isUpdatingHiddenAreas=!1,this._register(this._editors.original.onDidChangeCursorPosition((e=>{if(1===e.reason)return;const t=this._diffModel.get();(0,h.PS)((e=>{for(const i of this._editors.original.getSelections()||[])null===t||void 0===t||t.ensureOriginalLineIsVisible(i.getStartPosition().lineNumber,0,e),null===t||void 0===t||t.ensureOriginalLineIsVisible(i.getEndPosition().lineNumber,0,e)}))}))),this._register(this._editors.modified.onDidChangeCursorPosition((e=>{if(1===e.reason)return;const t=this._diffModel.get();(0,h.PS)((e=>{for(const i of this._editors.modified.getSelections()||[])null===t||void 0===t||t.ensureModifiedLineIsVisible(i.getStartPosition().lineNumber,0,e),null===t||void 0===t||t.ensureModifiedLineIsVisible(i.getEndPosition().lineNumber,0,e)}))})));const s=this._diffModel.map(((e,t)=>{var i,n;const o=null!==(i=null===e||void 0===e?void 0:e.unchangedRegions.read(t))&&void 0!==i?i:[];return 1===o.length&&1===o[0].modifiedLineNumber&&o[0].lineCount===(null===(n=this._editors.modifiedModel.read(t))||void 0===n?void 0:n.getLineCount())?[]:o}));this.viewZones=(0,h.Be)(this,((e,t)=>{const i=this._modifiedOutlineSource.read(e);if(!i)return{origViewZones:[],modViewZones:[]};const n=[],o=[],r=this._options.renderSideBySide.read(e),a=s.read(e);for(const s of a)if(!s.shouldHideControls(e)){{const e=(0,h.nK)(this,(e=>s.getHiddenOriginalRange(e).startLineNumber-1)),o=new g.GD(e,24);n.push(o),t.add(new S(this._editors.original,o,s,s.originalUnchangedRange,!r,i,(e=>this._diffModel.get().ensureModifiedLineIsVisible(e,2,void 0)),this._options))}{const e=(0,h.nK)(this,(e=>s.getHiddenModifiedRange(e).startLineNumber-1)),n=new g.GD(e,24);o.push(n),t.add(new S(this._editors.modified,n,s,s.modifiedUnchangedRange,!1,i,(e=>this._diffModel.get().ensureModifiedLineIsVisible(e,2,void 0)),this._options))}}return{origViewZones:n,modViewZones:o}}));const l={description:"unchanged lines",className:"diff-unchanged-lines",isWholeLine:!0},_={description:"Fold Unchanged",glyphMarginHoverMessage:new a.W5(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown((0,v.NC)("foldUnchanged","Fold Unchanged Region")),glyphMarginClassName:"fold-unchanged "+c.k.asClassName(r.l.fold),zIndex:10001};this._register((0,g.RP)(this._editors.original,(0,h.nK)(this,(e=>{const t=s.read(e),i=t.map((e=>({range:e.originalUnchangedRange.toInclusiveRange(),options:l})));for(const n of t)n.shouldHideControls(e)&&i.push({range:p.e.fromPositions(new f.L(n.originalLineNumber,1)),options:_});return i})))),this._register((0,g.RP)(this._editors.modified,(0,h.nK)(this,(e=>{const t=s.read(e),i=t.map((e=>({range:e.modifiedUnchangedRange.toInclusiveRange(),options:l})));for(const n of t)n.shouldHideControls(e)&&i.push({range:m.z.ofLength(n.modifiedLineNumber,1).toInclusiveRange(),options:_});return i})))),this._register((0,h.EH)((e=>{const t=s.read(e);this._isUpdatingHiddenAreas=!0;try{this._editors.original.setHiddenAreas(t.map((t=>t.getHiddenOriginalRange(e).toInclusiveRange())).filter(u.$K)),this._editors.modified.setHiddenAreas(t.map((t=>t.getHiddenModifiedRange(e).toInclusiveRange())).filter(u.$K))}finally{this._isUpdatingHiddenAreas=!1}}))),this._register(this._editors.modified.onMouseUp((e=>{var t;if(!e.event.rightButton&&e.target.position&&(null===(t=e.target.element)||void 0===t?void 0:t.className.includes("fold-unchanged"))){const t=e.target.position.lineNumber,i=this._diffModel.get();if(!i)return;const n=i.unchangedRegions.get().find((e=>e.modifiedUnchangedRange.includes(t)));if(!n)return;n.collapseAll(void 0),e.event.stopPropagation(),e.event.preventDefault()}}))),this._register(this._editors.original.onMouseUp((e=>{var t;if(!e.event.rightButton&&e.target.position&&(null===(t=e.target.element)||void 0===t?void 0:t.className.includes("fold-unchanged"))){const t=e.target.position.lineNumber,i=this._diffModel.get();if(!i)return;const n=i.unchangedRegions.get().find((e=>e.originalUnchangedRange.includes(t)));if(!n)return;n.collapseAll(void 0),e.event.stopPropagation(),e.event.preventDefault()}})))}};y._breadcrumbsSourceFactory=(0,h.uh)("breadcrumbsSourceFactory",void 0),y=n=C([w(3,b.TG)],y);class S extends g.N9{constructor(e,t,i,n,a,l,d,c){const u=(0,o.h)("div.diff-hidden-lines-widget");super(e,t,u.root),this._editor=e,this._unchangedRegion=i,this._unchangedRegionRange=n,this._hide=a,this._modifiedOutlineSource=l,this._revealModifiedHiddenLine=d,this._options=c,this._nodes=(0,o.h)("div.diff-hidden-lines",[(0,o.h)("div.top@top",{title:(0,v.NC)("diff.hiddenLines.top","Click or drag to show more above")}),(0,o.h)("div.center@content",{style:{display:"flex"}},[(0,o.h)("div@first",{style:{display:"flex",justifyContent:"center",alignItems:"center",flexShrink:"0"}},[(0,o.$)("a",{title:(0,v.NC)("showUnchangedRegion","Show Unchanged Region"),role:"button",onclick:()=>{this._unchangedRegion.showAll(void 0)}},...(0,s.T)("$(unfold)"))]),(0,o.h)("div@others",{style:{display:"flex",justifyContent:"center",alignItems:"center"}})]),(0,o.h)("div.bottom@bottom",{title:(0,v.NC)("diff.bottom","Click or drag to show more below"),role:"button"})]),u.root.appendChild(this._nodes.root);const m=(0,h.rD)(this._editor.onDidLayoutChange,(()=>this._editor.getLayoutInfo()));this._hide?(0,o.mc)(this._nodes.first):this._register((0,g.bg)(this._nodes.first,{width:m.map((e=>e.contentLeft))})),this._register((0,h.EH)((e=>{const t=this._unchangedRegion.visibleLineCountTop.read(e)+this._unchangedRegion.visibleLineCountBottom.read(e)===this._unchangedRegion.lineCount;this._nodes.bottom.classList.toggle("canMoveTop",!t),this._nodes.bottom.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(e)>0),this._nodes.top.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(e)>0),this._nodes.top.classList.toggle("canMoveBottom",!t);const i=this._unchangedRegion.isDragged.read(e),n=this._editor.getDomNode();n&&(n.classList.toggle("draggingUnchangedRegion",!!i),"top"===i?(n.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(e)>0),n.classList.toggle("canMoveBottom",!t)):"bottom"===i?(n.classList.toggle("canMoveTop",!t),n.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(e)>0)):(n.classList.toggle("canMoveTop",!1),n.classList.toggle("canMoveBottom",!1)))})));const f=this._editor;this._register((0,o.nm)(this._nodes.top,"mousedown",(e=>{if(0!==e.button)return;this._nodes.top.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),e.preventDefault();const t=e.clientY;let i=!1;const n=this._unchangedRegion.visibleLineCountTop.get();this._unchangedRegion.isDragged.set("top",void 0);const s=(0,o.Jj)(this._nodes.top),r=(0,o.nm)(s,"mousemove",(e=>{const o=e.clientY-t;i=i||Math.abs(o)>2;const s=Math.round(o/f.getOption(67)),r=Math.max(0,Math.min(n+s,this._unchangedRegion.getMaxVisibleLineCountTop()));this._unchangedRegion.visibleLineCountTop.set(r,void 0)})),a=(0,o.nm)(s,"mouseup",(e=>{i||this._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0),this._nodes.top.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),this._unchangedRegion.isDragged.set(void 0,void 0),r.dispose(),a.dispose()}))}))),this._register((0,o.nm)(this._nodes.bottom,"mousedown",(e=>{if(0!==e.button)return;this._nodes.bottom.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),e.preventDefault();const t=e.clientY;let i=!1;const n=this._unchangedRegion.visibleLineCountBottom.get();this._unchangedRegion.isDragged.set("bottom",void 0);const s=(0,o.Jj)(this._nodes.bottom),r=(0,o.nm)(s,"mousemove",(e=>{const o=e.clientY-t;i=i||Math.abs(o)>2;const s=Math.round(o/f.getOption(67)),r=Math.max(0,Math.min(n-s,this._unchangedRegion.getMaxVisibleLineCountBottom())),a=this._unchangedRegionRange.endLineNumberExclusive>f.getModel().getLineCount()?f.getContentHeight():f.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.visibleLineCountBottom.set(r,void 0);const l=this._unchangedRegionRange.endLineNumberExclusive>f.getModel().getLineCount()?f.getContentHeight():f.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);f.setScrollTop(f.getScrollTop()+(l-a))})),a=(0,o.nm)(s,"mouseup",(e=>{if(this._unchangedRegion.isDragged.set(void 0,void 0),!i){const e=f.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0);const t=f.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);f.setScrollTop(f.getScrollTop()+(t-e))}this._nodes.bottom.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),r.dispose(),a.dispose()}))}))),this._register((0,h.EH)((e=>{const t=[];if(!this._hide){const n=i.getHiddenModifiedRange(e).length,a=(0,v.NC)("hiddenLines","{0} hidden lines",n),l=(0,o.$)("span",{title:(0,v.NC)("diff.hiddenLines.expandAll","Double click to unfold")},a);l.addEventListener("dblclick",(e=>{0===e.button&&(e.preventDefault(),this._unchangedRegion.showAll(void 0))})),t.push(l);const h=this._unchangedRegion.getHiddenModifiedRange(e),d=this._modifiedOutlineSource.getBreadcrumbItems(h,e);if(d.length>0){t.push((0,o.$)("span",void 0,"\xa0\xa0|\xa0\xa0"));for(let e=0;e{this._revealModifiedHiddenLine(i.startLineNumber)}}}}(0,o.mc)(this._nodes.others,...t)})))}}},94817:(e,t,i)=>{i.d(t,{$F:()=>C,Jv:()=>p,LE:()=>f,W3:()=>b,fO:()=>d,i_:()=>m,iq:()=>u,n_:()=>_,rd:()=>g,rq:()=>v,vv:()=>c});var n=i(62974),o=i(62502),s=i(22659),r=i(71721),a=i(87701),l=i(38261);(0,a.P6G)("diffEditor.move.border",{dark:"#8b8b8b9c",light:"#8b8b8b9c",hcDark:"#8b8b8b9c",hcLight:"#8b8b8b9c"},(0,r.NC)("diffEditor.move.border","The border color for text that got moved in the diff editor.")),(0,a.P6G)("diffEditor.moveActive.border",{dark:"#FFA500",light:"#FFA500",hcDark:"#FFA500",hcLight:"#FFA500"},(0,r.NC)("diffEditor.moveActive.border","The active border color for text that got moved in the diff editor.")),(0,a.P6G)("diffEditor.unchangedRegionShadow",{dark:"#000000",light:"#737373BF",hcDark:"#000000",hcLight:"#737373BF"},(0,r.NC)("diffEditor.unchangedRegionShadow","The color of the shadow around unchanged region widgets."));const h=(0,l.q5)("diff-insert",n.l.add,(0,r.NC)("diffInsertIcon","Line decoration for inserts in the diff editor.")),d=(0,l.q5)("diff-remove",n.l.remove,(0,r.NC)("diffRemoveIcon","Line decoration for removals in the diff editor.")),c=s.qx.register({className:"line-insert",description:"line-insert",isWholeLine:!0,linesDecorationsClassName:"insert-sign "+o.k.asClassName(h),marginClassName:"gutter-insert"}),u=s.qx.register({className:"line-delete",description:"line-delete",isWholeLine:!0,linesDecorationsClassName:"delete-sign "+o.k.asClassName(d),marginClassName:"gutter-delete"}),g=s.qx.register({className:"line-insert",description:"line-insert",isWholeLine:!0,marginClassName:"gutter-insert"}),m=s.qx.register({className:"line-delete",description:"line-delete",isWholeLine:!0,marginClassName:"gutter-delete"}),f=s.qx.register({className:"char-insert",description:"char-insert",shouldFillLineOnLineBreak:!0}),p=s.qx.register({className:"char-insert",description:"char-insert",isWholeLine:!0}),_=s.qx.register({className:"char-insert diff-range-empty",description:"char-insert diff-range-empty"}),v=s.qx.register({className:"char-delete",description:"char-delete",shouldFillLineOnLineBreak:!0}),b=s.qx.register({className:"char-delete",description:"char-delete",isWholeLine:!0}),C=s.qx.register({className:"char-delete diff-range-empty",description:"char-delete diff-range-empty"})},5545:(e,t,i)=>{i.d(t,{t2:()=>N,DU:()=>b,GD:()=>y,N9:()=>w,Vm:()=>C,xx:()=>_,RP:()=>p,bg:()=>L,Sv:()=>D,GU:()=>E,W7:()=>I,Ap:()=>f,RL:()=>v,NW:()=>k,cV:()=>x});var n=i(52910),o=i(16113),s=i(17167);function r(){return s.OB&&!!s.OB.VSCODE_DEV}function a(e){if(r()){const t=function(){l||(l=new Set);const e=globalThis;e.$hotReload_applyNewExports||(e.$hotReload_applyNewExports=e=>{const t={config:{mode:void 0},...e};for(const i of l){const e=i(t);if(e)return e}});return l}();return t.add(e),{dispose(){t.delete(e)}}}return{dispose(){}}}let l;r()&&a((e=>{let{oldExports:t,newSrc:i,config:n}=e;if("patch-prototype"===n.mode)return e=>{var i,n;for(const o in e){const s=e[o];if(console.log("[hot-reload] Patching prototype methods of '".concat(o,"'"),{exportedItem:s}),"function"===typeof s&&s.prototype){const r=t[o];if(r){for(const e of Object.getOwnPropertyNames(s.prototype)){const t=Object.getOwnPropertyDescriptor(s.prototype,e),a=Object.getOwnPropertyDescriptor(r.prototype,e);(null===(i=null===t||void 0===t?void 0:t.value)||void 0===i?void 0:i.toString())!==(null===(n=null===a||void 0===a?void 0:a.value)||void 0===n?void 0:n.toString())&&console.log("[hot-reload] Patching prototype method '".concat(o,".").concat(e,"'")),Object.defineProperty(r.prototype,e,t)}e[o]=r}}}return!0}}));var h=i(89599),d=i(59130),c=i(97363),u=i(2067),g=i(10670),m=i(59122);function f(e,t,i,n){if(0===e.length)return t;if(0===t.length)return e;const o=[];let s=0,r=0;for(;sd?(o.push(l),r++):(o.push(n(a,l)),s++,r++)}for(;s"Apply decorations from ".concat(t.debugName)},(e=>{const i=t.read(e);n.set(i)}))),i.add({dispose:()=>{n.clear()}}),i}function _(e,t){return e.appendChild(t),(0,h.OF)((()=>{e.removeChild(t)}))}function v(e,t){return e.prepend(t),(0,h.OF)((()=>{e.removeChild(t)}))}class b extends h.JT{get width(){return this._width}get height(){return this._height}constructor(e,t){super(),this.elementSizeObserver=this._register(new c.I(e,t)),this._width=(0,d.uh)(this,this.elementSizeObserver.getWidth()),this._height=(0,d.uh)(this,this.elementSizeObserver.getHeight()),this._register(this.elementSizeObserver.onDidChange((e=>(0,d.PS)((e=>{this._width.set(this.elementSizeObserver.getWidth(),e),this._height.set(this.elementSizeObserver.getHeight(),e)})))))}observe(e){this.elementSizeObserver.observe(e)}setAutomaticLayout(e){e?this.elementSizeObserver.startObserving():this.elementSizeObserver.stopObserving()}}function C(e,t,i){let n=t.get(),o=n,s=n;const r=(0,d.uh)("animatedValue",n);let a=-1;const l=300;let h;function c(){const t=Date.now()-a;var i,d,u,g;s=Math.floor((d=o,u=n-o,(i=t)===(g=l)?d+u:u*(1-Math.pow(2,-10*i/g))+d)),t({animate:!1}),handleChange:(e,i)=>(e.didChange(t)&&(i.animate=i.animate||e.change),!0)},((i,r)=>{void 0!==h&&(e.cancelAnimationFrame(h),h=void 0),o=s,n=t.read(i),a=Date.now()-(r.animate?0:l),c()}))),r}class w extends h.JT{constructor(e,t,i){super(),this._register(new S(e,i)),this._register(L(i,{height:t.actualHeight,top:t.actualTop}))}}class y{get afterLineNumber(){return this._afterLineNumber.get()}constructor(e,t){this._afterLineNumber=e,this.heightInPx=t,this.domNode=document.createElement("div"),this._actualTop=(0,d.uh)(this,void 0),this._actualHeight=(0,d.uh)(this,void 0),this.actualTop=this._actualTop,this.actualHeight=this._actualHeight,this.showInHiddenAreas=!0,this.onChange=this._afterLineNumber,this.onDomNodeTop=e=>{this._actualTop.set(e,void 0)},this.onComputedHeight=e=>{this._actualHeight.set(e,void 0)}}}class S{constructor(e,t){this._editor=e,this._domElement=t,this._overlayWidgetId="managedOverlayWidget-".concat(S._counter++),this._overlayWidget={getId:()=>this._overlayWidgetId,getDomNode:()=>this._domElement,getPosition:()=>null},this._editor.addOverlayWidget(this._overlayWidget)}dispose(){this._editor.removeOverlayWidget(this._overlayWidget)}}function L(e,t){return(0,d.EH)((i=>{for(let[n,o]of Object.entries(t))o&&"object"===typeof o&&"read"in o&&(o=o.read(i)),"number"===typeof o&&(o="".concat(o,"px")),n=n.replace(/[A-Z]/g,(e=>"-"+e.toLowerCase())),e.style[n]=o}))}function k(e,t){return function(e,t){if(r()){(0,d.aq)("reload",(t=>a((i=>{let{oldExports:n}=i;if([...Object.values(n)].some((t=>e.includes(t))))return e=>(t(void 0),!0)})))).read(t)}}([e],t),e}function D(e,t,i,n){const o=new h.SL,s=[];return o.add((0,d.gp)(((o,r)=>{const a=t.read(o),l=new Map,h=new Map;i&&i(!0),e.changeViewZones((e=>{for(const t of s)e.removeZone(t),null===n||void 0===n||n.delete(t);s.length=0;for(const t of a){const i=e.addZone(t);t.setZoneId&&t.setZoneId(i),s.push(i),null===n||void 0===n||n.add(i),l.set(t,i)}})),i&&i(!1),r.add((0,d.nJ)({createEmptyChangeSummary:()=>({zoneIds:[]}),handleChange(e,t){const i=h.get(e.changedObservable);return void 0!==i&&t.zoneIds.push(i),!0}},((t,n)=>{for(const e of a)e.onChange&&(h.set(e.onChange,l.get(e)),e.onChange.read(t));i&&i(!0),e.changeViewZones((e=>{for(const t of n.zoneIds)e.layoutZone(t)})),i&&i(!1)})))}))),o.add({dispose(){i&&i(!0),e.changeViewZones((e=>{for(const t of s)e.removeZone(t)})),null===n||void 0===n||n.clear(),i&&i(!1)}}),o}S._counter=0;class N extends o.A{dispose(){super.dispose(!0)}}function x(e,t){const i=(0,n.dF)(t,(t=>t.original.startLineNumber<=e.lineNumber));if(!i)return g.e.fromPositions(e);if(i.original.endLineNumberExclusive<=e.lineNumber){const t=e.lineNumber-i.original.endLineNumberExclusive+i.modified.endLineNumberExclusive;return g.e.fromPositions(new u.L(t,e.column))}if(!i.innerChanges)return g.e.fromPositions(new u.L(i.modified.startLineNumber,1));const o=(0,n.dF)(i.innerChanges,(t=>t.originalRange.getStartPosition().isBeforeOrEqual(e)));if(!o){const t=e.lineNumber-i.original.startLineNumber+i.modified.startLineNumber;return g.e.fromPositions(new u.L(t,e.column))}if(o.originalRange.containsPosition(e))return o.modifiedRange;{const t=(s=o.originalRange.getEndPosition(),r=e,s.lineNumber===r.lineNumber?new m.A(0,r.column-s.column):new m.A(r.lineNumber-s.lineNumber,r.column-1));return g.e.fromPositions(t.addToPosition(o.modifiedRange.getEndPosition()))}var s,r}function E(e,t,i){const n=e.bindTo(t);return(0,d.UV)({debugName:()=>'Set Context Key "'.concat(e.key,'"')},(e=>{n.set(i(e))}))}function I(e,t){let i;return e.filter((e=>{const n=t(e,i);return i=e,n}))}},36281:(e,t,i)=>{i.d(t,{$:()=>p,N:()=>_});var n,o=i(21687),s=i(52047),r=i(85108),a=i(24219),l=i(89599),h=i(99916),d=i(69311),c=i(68150),u=i(2778),g=i(51460),m=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},f=function(e,t){return function(i,n){t(i,n,e)}};let p=n=class{constructor(e,t,i){this._options=e,this._languageService=t,this._openerService=i,this._onDidRenderAsync=new a.Q5,this.onDidRenderAsync=this._onDidRenderAsync.event}dispose(){this._onDidRenderAsync.dispose()}render(e,t,i){if(!e){return{element:document.createElement("span"),dispose:()=>{}}}const n=new l.SL,s=n.add((0,o.ap)(e,{...this._getRenderOptions(e,n),...t},i));return s.element.classList.add("rendered-markdown"),{element:s.element,dispose:()=>n.dispose()}}_getRenderOptions(e,t){return{codeBlockRenderer:async(e,t)=>{var i,o,s;let r;e?r=this._languageService.getLanguageIdByLanguageName(e):this._options.editor&&(r=null===(i=this._options.editor.getModel())||void 0===i?void 0:i.getLanguageId()),r||(r=c.bd);const a=await(0,u.C2)(this._languageService,t,r),l=document.createElement("span");if(l.innerHTML=null!==(s=null===(o=n._ttpTokenizer)||void 0===o?void 0:o.createHTML(a))&&void 0!==s?s:a,this._options.editor){const e=this._options.editor.getOption(50);(0,h.N)(l,e)}else this._options.codeBlockFontFamily&&(l.style.fontFamily=this._options.codeBlockFontFamily);return void 0!==this._options.codeBlockFontSize&&(l.style.fontSize=this._options.codeBlockFontSize),l},asyncRenderCallback:()=>this._onDidRenderAsync.fire(),actionHandler:{callback:t=>_(this._openerService,t,e.isTrusted),disposables:t}}}};async function _(e,t,i){try{return await e.open(t,{fromUserGesture:!0,allowContributedOpeners:!0,allowCommands:v(i)})}catch(n){return(0,r.dL)(n),!1}}function v(e){return!0===e||!(!e||!Array.isArray(e.enabledCommands))&&e.enabledCommands}p._ttpTokenizer=(0,s.Z)("tokenizeToString",{createHTML:e=>e}),p=n=m([f(1,d.O),f(2,g.v)],p)},11630:(e,t,i)=>{i.d(t,{D:()=>o});var n=i(22337);class o extends n.Wi{constructor(e){super(),this._getContext=e}runAction(e,t){const i=this._getContext();return super.runAction(e,i)}}},27121:(e,t,i)=>{i.d(t,{OY:()=>s,Sj:()=>r,T4:()=>o,Uo:()=>a,hP:()=>l});var n=i(67078);class o{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this._range=e,this._text=t,this.insertsAutoWhitespace=i}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const i=t.getInverseEditOperations()[0].range;return n.Y.fromPositions(i.getEndPosition())}}class s{constructor(e,t){this._range=e,this._text=t}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const i=t.getInverseEditOperations()[0].range;return n.Y.fromRange(i,0)}}class r{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this._range=e,this._text=t,this.insertsAutoWhitespace=i}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const i=t.getInverseEditOperations()[0].range;return n.Y.fromPositions(i.getStartPosition())}}class a{constructor(e,t,i,n){let o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];this._range=e,this._text=t,this._columnDeltaOffset=n,this._lineNumberDeltaOffset=i,this.insertsAutoWhitespace=o}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const i=t.getInverseEditOperations()[0].range;return n.Y.fromPositions(i.getEndPosition().delta(this._lineNumberDeltaOffset,this._columnDeltaOffset))}}class l{constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this._range=e,this._text=t,this._initialSelection=i,this._forceMoveMarkers=n,this._selectionId=null}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text,this._forceMoveMarkers),this._selectionId=t.trackSelection(this._initialSelection)}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}},42443:(e,t,i)=>{i.d(t,{U:()=>m});var n,o=i(25085),s=i(5255),r=i(10670),a=i(67078),l=i(16726),h=i(40801),d=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},c=function(e,t){return function(i,n){t(i,n,e)}};const u=Object.create(null);function g(e,t){if(t<=0)return"";u[e]||(u[e]=["",e]);const i=u[e];for(let n=i.length;n<=t;n++)i[n]=i[n-1]+e;return i[t]}let m=n=class{static unshiftIndent(e,t,i,n,o){const r=s.i.visibleColumnFromColumn(e,t,i);if(o){const e=g(" ",n);return g(e,s.i.prevIndentTabStop(r,n)/n)}return g("\t",s.i.prevRenderTabStop(r,i)/i)}static shiftIndent(e,t,i,n,o){const r=s.i.visibleColumnFromColumn(e,t,i);if(o){const e=g(" ",n);return g(e,s.i.nextIndentTabStop(r,n)/n)}return g("\t",s.i.nextRenderTabStop(r,i)/i)}constructor(e,t,i){this._languageConfigurationService=i,this._opts=t,this._selection=e,this._selectionId=null,this._useLastEditRangeForCursorEndPosition=!1,this._selectionStartColumnStaysPut=!1}_addEditOperation(e,t,i){this._useLastEditRangeForCursorEndPosition?e.addTrackedEditOperation(t,i):e.addEditOperation(t,i)}getEditOperations(e,t){const i=this._selection.startLineNumber;let a=this._selection.endLineNumber;1===this._selection.endColumn&&i!==a&&(a-=1);const{tabSize:h,indentSize:d,insertSpaces:c}=this._opts,u=i===a;if(this._opts.useTabStops){this._selection.isEmpty()&&/^\s*$/.test(e.getLineContent(i))&&(this._useLastEditRangeForCursorEndPosition=!0);let g=0,m=0;for(let f=i;f<=a;f++,g=m){m=0;const a=e.getLineContent(f);let p,_=o.LC(a);if((!this._opts.isUnshift||0!==a.length&&0!==_)&&(u||this._opts.isUnshift||0!==a.length)){if(-1===_&&(_=a.length),f>1){if(s.i.visibleColumnFromColumn(a,_+1,h)%d!==0&&e.tokenization.isCheapToTokenize(f-1)){const t=(0,l.A)(this._opts.autoIndent,e,new r.e(f-1,e.getLineMaxColumn(f-1),f-1,e.getLineMaxColumn(f-1)),this._languageConfigurationService);if(t){if(m=g,t.appendText)for(let e=0,i=t.appendText.length;e{i.d(t,{k:()=>n});const n={enableSplitViewResizing:!0,splitViewDefaultRatio:.5,renderSideBySide:!0,renderMarginRevertIcon:!0,renderGutterMenu:!0,maxComputationTime:5e3,maxFileSize:50,ignoreTrimWhitespace:!0,renderIndicators:!0,originalEditable:!1,diffCodeLens:!1,renderOverviewRuler:!0,diffWordWrap:"inherit",diffAlgorithm:"advanced",accessibilityVerbose:!1,experimental:{showMoves:!1,showEmptyDecorations:!0},hideUnchangedRegions:{enabled:!1,contextLineCount:3,minimumLineCount:3,revealLineCount:20},isInEmbeddedEditor:!1,onlyShowAccessibleDiffViewer:!1,renderSideBySideInlineBreakpoint:900,useInlineViewWhenSpaceIsLimited:!0}},65175:(e,t,i)=>{i.d(t,{Pe:()=>f,ei:()=>m,wk:()=>h});var n=i(44114),o=i(38092),s=i(88975),r=i(71721),a=i(9694),l=i(70311);const h=Object.freeze({id:"editor",order:5,type:"object",title:r.NC("editorConfigurationTitle","Editor"),scope:5}),d={...h,properties:{"editor.tabSize":{type:"number",default:s.D.tabSize,minimum:1,markdownDescription:r.NC("tabSize","The number of spaces a tab is equal to. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.indentSize":{anyOf:[{type:"string",enum:["tabSize"]},{type:"number",minimum:1}],default:"tabSize",markdownDescription:r.NC("indentSize",'The number of spaces used for indentation or `"tabSize"` to use the value from `#editor.tabSize#`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.')},"editor.insertSpaces":{type:"boolean",default:s.D.insertSpaces,markdownDescription:r.NC("insertSpaces","Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.detectIndentation":{type:"boolean",default:s.D.detectIndentation,markdownDescription:r.NC("detectIndentation","Controls whether {0} and {1} will be automatically detected when a file is opened based on the file contents.","`#editor.tabSize#`","`#editor.insertSpaces#`")},"editor.trimAutoWhitespace":{type:"boolean",default:s.D.trimAutoWhitespace,description:r.NC("trimAutoWhitespace","Remove trailing auto inserted whitespace.")},"editor.largeFileOptimizations":{type:"boolean",default:s.D.largeFileOptimizations,description:r.NC("largeFileOptimizations","Special handling for large files to disable certain memory intensive features.")},"editor.wordBasedSuggestions":{enum:["off","currentDocument","matchingDocuments","allDocuments"],default:"matchingDocuments",enumDescriptions:[r.NC("wordBasedSuggestions.off","Turn off Word Based Suggestions."),r.NC("wordBasedSuggestions.currentDocument","Only suggest words from the active document."),r.NC("wordBasedSuggestions.matchingDocuments","Suggest words from all open documents of the same language."),r.NC("wordBasedSuggestions.allDocuments","Suggest words from all open documents.")],description:r.NC("wordBasedSuggestions","Controls whether completions should be computed based on words in the document and from which documents they are computed.")},"editor.semanticHighlighting.enabled":{enum:[!0,!1,"configuredByTheme"],enumDescriptions:[r.NC("semanticHighlighting.true","Semantic highlighting enabled for all color themes."),r.NC("semanticHighlighting.false","Semantic highlighting disabled for all color themes."),r.NC("semanticHighlighting.configuredByTheme","Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.")],default:"configuredByTheme",description:r.NC("semanticHighlighting.enabled","Controls whether the semanticHighlighting is shown for the languages that support it.")},"editor.stablePeek":{type:"boolean",default:!1,markdownDescription:r.NC("stablePeek","Keep peek editors open even when double-clicking their content or when hitting `Escape`.")},"editor.maxTokenizationLineLength":{type:"integer",default:2e4,description:r.NC("maxTokenizationLineLength","Lines above this length will not be tokenized for performance reasons")},"editor.experimental.asyncTokenization":{type:"boolean",default:!1,description:r.NC("editor.experimental.asyncTokenization","Controls whether the tokenization should happen asynchronously on a web worker."),tags:["experimental"]},"editor.experimental.asyncTokenizationLogging":{type:"boolean",default:!1,description:r.NC("editor.experimental.asyncTokenizationLogging","Controls whether async tokenization should be logged. For debugging only.")},"editor.experimental.asyncTokenizationVerification":{type:"boolean",default:!1,description:r.NC("editor.experimental.asyncTokenizationVerification","Controls whether async tokenization should be verified against legacy background tokenization. Might slow down tokenization. For debugging only."),tags:["experimental"]},"editor.language.brackets":{type:["array","null"],default:null,description:r.NC("schema.brackets","Defines the bracket symbols that increase or decrease the indentation."),items:{type:"array",items:[{type:"string",description:r.NC("schema.openBracket","The opening bracket character or string sequence.")},{type:"string",description:r.NC("schema.closeBracket","The closing bracket character or string sequence.")}]}},"editor.language.colorizedBracketPairs":{type:["array","null"],default:null,description:r.NC("schema.colorizedBracketPairs","Defines the bracket pairs that are colorized by their nesting level if bracket pair colorization is enabled."),items:{type:"array",items:[{type:"string",description:r.NC("schema.openBracket","The opening bracket character or string sequence.")},{type:"string",description:r.NC("schema.closeBracket","The closing bracket character or string sequence.")}]}},"diffEditor.maxComputationTime":{type:"number",default:n.k.maxComputationTime,description:r.NC("maxComputationTime","Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.")},"diffEditor.maxFileSize":{type:"number",default:n.k.maxFileSize,description:r.NC("maxFileSize","Maximum file size in MB for which to compute diffs. Use 0 for no limit.")},"diffEditor.renderSideBySide":{type:"boolean",default:n.k.renderSideBySide,description:r.NC("sideBySide","Controls whether the diff editor shows the diff side by side or inline.")},"diffEditor.renderSideBySideInlineBreakpoint":{type:"number",default:n.k.renderSideBySideInlineBreakpoint,description:r.NC("renderSideBySideInlineBreakpoint","If the diff editor width is smaller than this value, the inline view is used.")},"diffEditor.useInlineViewWhenSpaceIsLimited":{type:"boolean",default:n.k.useInlineViewWhenSpaceIsLimited,description:r.NC("useInlineViewWhenSpaceIsLimited","If enabled and the editor width is too small, the inline view is used.")},"diffEditor.renderMarginRevertIcon":{type:"boolean",default:n.k.renderMarginRevertIcon,description:r.NC("renderMarginRevertIcon","When enabled, the diff editor shows arrows in its glyph margin to revert changes.")},"diffEditor.renderGutterMenu":{type:"boolean",default:n.k.renderGutterMenu,description:r.NC("renderGutterMenu","When enabled, the diff editor shows a special gutter for revert and stage actions.")},"diffEditor.ignoreTrimWhitespace":{type:"boolean",default:n.k.ignoreTrimWhitespace,description:r.NC("ignoreTrimWhitespace","When enabled, the diff editor ignores changes in leading or trailing whitespace.")},"diffEditor.renderIndicators":{type:"boolean",default:n.k.renderIndicators,description:r.NC("renderIndicators","Controls whether the diff editor shows +/- indicators for added/removed changes.")},"diffEditor.codeLens":{type:"boolean",default:n.k.diffCodeLens,description:r.NC("codeLens","Controls whether the editor shows CodeLens.")},"diffEditor.wordWrap":{type:"string",enum:["off","on","inherit"],default:n.k.diffWordWrap,markdownEnumDescriptions:[r.NC("wordWrap.off","Lines will never wrap."),r.NC("wordWrap.on","Lines will wrap at the viewport width."),r.NC("wordWrap.inherit","Lines will wrap according to the {0} setting.","`#editor.wordWrap#`")]},"diffEditor.diffAlgorithm":{type:"string",enum:["legacy","advanced"],default:n.k.diffAlgorithm,markdownEnumDescriptions:[r.NC("diffAlgorithm.legacy","Uses the legacy diffing algorithm."),r.NC("diffAlgorithm.advanced","Uses the advanced diffing algorithm.")],tags:["experimental"]},"diffEditor.hideUnchangedRegions.enabled":{type:"boolean",default:n.k.hideUnchangedRegions.enabled,markdownDescription:r.NC("hideUnchangedRegions.enabled","Controls whether the diff editor shows unchanged regions.")},"diffEditor.hideUnchangedRegions.revealLineCount":{type:"integer",default:n.k.hideUnchangedRegions.revealLineCount,markdownDescription:r.NC("hideUnchangedRegions.revealLineCount","Controls how many lines are used for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.minimumLineCount":{type:"integer",default:n.k.hideUnchangedRegions.minimumLineCount,markdownDescription:r.NC("hideUnchangedRegions.minimumLineCount","Controls how many lines are used as a minimum for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.contextLineCount":{type:"integer",default:n.k.hideUnchangedRegions.contextLineCount,markdownDescription:r.NC("hideUnchangedRegions.contextLineCount","Controls how many lines are used as context when comparing unchanged regions."),minimum:1},"diffEditor.experimental.showMoves":{type:"boolean",default:n.k.experimental.showMoves,markdownDescription:r.NC("showMoves","Controls whether the diff editor should show detected code moves.")},"diffEditor.experimental.showEmptyDecorations":{type:"boolean",default:n.k.experimental.showEmptyDecorations,description:r.NC("showEmptyDecorations","Controls whether the diff editor shows empty decorations to see where characters got inserted or deleted.")}}};for(const p of o.Bc){const e=p.schema;if("undefined"!==typeof e)if("undefined"!==typeof(c=e).type||"undefined"!==typeof c.anyOf)d.properties["editor.".concat(p.name)]=e;else for(const t in e)Object.hasOwnProperty.call(e,t)&&(d.properties[t]=e[t])}var c;let u=null;function g(){return null===u&&(u=Object.create(null),Object.keys(d.properties).forEach((e=>{u[e]=!0}))),u}function m(e){return g()["editor.".concat(e)]||!1}function f(e){return g()["diffEditor.".concat(e)]||!1}l.B.as(a.IP.Configuration).registerConfiguration(d)},38092:(e,t,i)=>{i.d(t,{$J:()=>A,$r:()=>x,Av:()=>O,BH:()=>W,Bb:()=>d,Bc:()=>z,Bo:()=>I,LJ:()=>c,L_:()=>w,NY:()=>L,O7:()=>_,Zc:()=>b,d2:()=>N,gk:()=>M,hL:()=>B,n0:()=>E,qt:()=>P,rk:()=>g,y0:()=>h});var n=i(75629),o=i(10451),s=i(21511),r=i(88975),a=i(42696),l=i(71721);const h=8;class d{constructor(e){this._values=e}hasChanged(e){return this._values[e]}}class c{constructor(){this.stableMinimapLayoutInput=null,this.stableFitMaxMinimapScale=0,this.stableFitRemainingWidth=0}}class u{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}applyUpdate(e,t){return m(e,t)}compute(e,t,i){return i}}class g{constructor(e,t){this.newValue=e,this.didChange=t}}function m(e,t){if("object"!==typeof e||"object"!==typeof t||!e||!t)return new g(t,e!==t);if(Array.isArray(e)||Array.isArray(t)){const i=Array.isArray(e)&&Array.isArray(t)&&n.fS(e,t);return new g(t,!i)}let i=!1;for(const n in t)if(t.hasOwnProperty(n)){const o=m(e[n],t[n]);o.didChange&&(e[n]=o.newValue,i=!0)}return new g(e,i)}class f{constructor(e){this.schema=void 0,this.id=e,this.name="_never_",this.defaultValue=void 0}applyUpdate(e,t){return m(e,t)}validate(e){return this.defaultValue}}class p{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}applyUpdate(e,t){return m(e,t)}validate(e){return"undefined"===typeof e?this.defaultValue:e}compute(e,t,i){return i}}function _(e,t){return"undefined"===typeof e?t:"false"!==e&&Boolean(e)}class v extends p{constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;"undefined"!==typeof n&&(n.type="boolean",n.default=i),super(e,t,i,n)}validate(e){return _(e,this.defaultValue)}}function b(e,t,i,n){if("undefined"===typeof e)return t;let o=parseInt(e,10);return isNaN(o)?t:(o=Math.max(i,o),o=Math.min(n,o),0|o)}class C extends p{static clampedInt(e,t,i,n){return b(e,t,i,n)}constructor(e,t,i,n,o){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:void 0;"undefined"!==typeof s&&(s.type="integer",s.default=i,s.minimum=n,s.maximum=o),super(e,t,i,s),this.minimum=n,this.maximum=o}validate(e){return C.clampedInt(e,this.defaultValue,this.minimum,this.maximum)}}function w(e,t,i,n){if("undefined"===typeof e)return t;const o=y.float(e,t);return y.clamp(o,i,n)}class y extends p{static clamp(e,t,i){return ei?i:e}static float(e,t){if("number"===typeof e)return e;if("undefined"===typeof e)return t;const i=parseFloat(e);return isNaN(i)?t:i}constructor(e,t,i,n,o){"undefined"!==typeof o&&(o.type="number",o.default=i),super(e,t,i,o),this.validationFn=n}validate(e){return this.validationFn(y.float(e,this.defaultValue))}}class S extends p{static string(e,t){return"string"!==typeof e?t:e}constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;"undefined"!==typeof n&&(n.type="string",n.default=i),super(e,t,i,n)}validate(e){return S.string(e,this.defaultValue)}}function L(e,t,i,n){return"string"!==typeof e?t:n&&e in n?n[e]:-1===i.indexOf(e)?t:e}class k extends p{constructor(e,t,i,n){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0;"undefined"!==typeof o&&(o.type="string",o.enum=n,o.default=i),super(e,t,i,o),this._allowedValues=n}validate(e){return L(e,this.defaultValue,this._allowedValues)}}class D extends u{constructor(e,t,i,n,o,s){let r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:void 0;"undefined"!==typeof r&&(r.type="string",r.enum=o,r.default=n),super(e,t,i,r),this._allowedValues=o,this._convert=s}validate(e){return"string"!==typeof e||-1===this._allowedValues.indexOf(e)?this.defaultValue:this._convert(e)}}var N,x;!function(e){e[e.Line=1]="Line",e[e.Block=2]="Block",e[e.Underline=3]="Underline",e[e.LineThin=4]="LineThin",e[e.BlockOutline=5]="BlockOutline",e[e.UnderlineThin=6]="UnderlineThin"}(N||(N={}));class E extends u{constructor(){super(51,"fontLigatures",E.OFF,{anyOf:[{type:"boolean",description:l.NC("fontLigatures","Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.")},{type:"string",description:l.NC("fontFeatureSettings","Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.")}],description:l.NC("fontLigaturesGeneral","Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property."),default:!1})}validate(e){return"undefined"===typeof e?this.defaultValue:"string"===typeof e?"false"===e||0===e.length?E.OFF:"true"===e?E.ON:e:Boolean(e)?E.ON:E.OFF}}E.OFF='"liga" off, "calt" off',E.ON='"liga" on, "calt" on';class I extends u{constructor(){super(54,"fontVariations",I.OFF,{anyOf:[{type:"boolean",description:l.NC("fontVariations","Enables/Disables the translation from font-weight to font-variation-settings. Change this to a string for fine-grained control of the 'font-variation-settings' CSS property.")},{type:"string",description:l.NC("fontVariationSettings","Explicit 'font-variation-settings' CSS property. A boolean can be passed instead if one only needs to translate font-weight to font-variation-settings.")}],description:l.NC("fontVariationsGeneral","Configures font variations. Can be either a boolean to enable/disable the translation from font-weight to font-variation-settings or a string for the value of the CSS 'font-variation-settings' property."),default:!1})}validate(e){return"undefined"===typeof e?this.defaultValue:"string"===typeof e?"false"===e?I.OFF:"true"===e?I.TRANSLATE:e:Boolean(e)?I.TRANSLATE:I.OFF}compute(e,t,i){return e.fontInfo.fontVariationSettings}}I.OFF="normal",I.TRANSLATE="translate";class T extends u{constructor(){super(53,"fontWeight",B.fontWeight,{anyOf:[{type:"number",minimum:T.MINIMUM_VALUE,maximum:T.MAXIMUM_VALUE,errorMessage:l.NC("fontWeightErrorMessage",'Only "normal" and "bold" keywords or numbers between 1 and 1000 are allowed.')},{type:"string",pattern:"^(normal|bold|1000|[1-9][0-9]{0,2})$"},{enum:T.SUGGESTION_VALUES}],default:B.fontWeight,description:l.NC("fontWeight",'Controls the font weight. Accepts "normal" and "bold" keywords or numbers between 1 and 1000.')})}validate(e){return"normal"===e||"bold"===e?e:String(C.clampedInt(e,B.fontWeight,T.MINIMUM_VALUE,T.MAXIMUM_VALUE))}}T.SUGGESTION_VALUES=["normal","bold","100","200","300","400","500","600","700","800","900"],T.MINIMUM_VALUE=1,T.MAXIMUM_VALUE=1e3;class M extends f{constructor(){super(145)}compute(e,t,i){return M.computeLayout(t,{memory:e.memory,outerWidth:e.outerWidth,outerHeight:e.outerHeight,isDominatedByLongLines:e.isDominatedByLongLines,lineHeight:e.fontInfo.lineHeight,viewLineCount:e.viewLineCount,lineNumbersDigitCount:e.lineNumbersDigitCount,typicalHalfwidthCharacterWidth:e.fontInfo.typicalHalfwidthCharacterWidth,maxDigitWidth:e.fontInfo.maxDigitWidth,pixelRatio:e.pixelRatio,glyphMarginDecorationLaneCount:e.glyphMarginDecorationLaneCount})}static computeContainedMinimapLineCount(e){const t=e.height/e.lineHeight,i=Math.floor(e.paddingTop/e.lineHeight);let n=Math.floor(e.paddingBottom/e.lineHeight);e.scrollBeyondLastLine&&(n=Math.max(n,t-1));const o=(i+e.viewLineCount+n)/(e.pixelRatio*e.height);return{typicalViewportLineCount:t,extraLinesBeforeFirstLine:i,extraLinesBeyondLastLine:n,desiredRatio:o,minimapLineCount:Math.floor(e.viewLineCount/o)}}static _computeMinimapLayout(e,t){const i=e.outerWidth,n=e.outerHeight,o=e.pixelRatio;if(!e.minimap.enabled)return{renderMinimap:0,minimapLeft:0,minimapWidth:0,minimapHeightIsEditorHeight:!1,minimapIsSampling:!1,minimapScale:1,minimapLineHeight:1,minimapCanvasInnerWidth:0,minimapCanvasInnerHeight:Math.floor(o*n),minimapCanvasOuterWidth:0,minimapCanvasOuterHeight:n};const s=t.stableMinimapLayoutInput,r=s&&e.outerHeight===s.outerHeight&&e.lineHeight===s.lineHeight&&e.typicalHalfwidthCharacterWidth===s.typicalHalfwidthCharacterWidth&&e.pixelRatio===s.pixelRatio&&e.scrollBeyondLastLine===s.scrollBeyondLastLine&&e.paddingTop===s.paddingTop&&e.paddingBottom===s.paddingBottom&&e.minimap.enabled===s.minimap.enabled&&e.minimap.side===s.minimap.side&&e.minimap.size===s.minimap.size&&e.minimap.showSlider===s.minimap.showSlider&&e.minimap.renderCharacters===s.minimap.renderCharacters&&e.minimap.maxColumn===s.minimap.maxColumn&&e.minimap.scale===s.minimap.scale&&e.verticalScrollbarWidth===s.verticalScrollbarWidth&&e.isViewportWrapping===s.isViewportWrapping,a=e.lineHeight,l=e.typicalHalfwidthCharacterWidth,d=e.scrollBeyondLastLine,c=e.minimap.renderCharacters;let u=o>=2?Math.round(2*e.minimap.scale):e.minimap.scale;const g=e.minimap.maxColumn,m=e.minimap.size,f=e.minimap.side,p=e.verticalScrollbarWidth,_=e.viewLineCount,v=e.remainingWidth,b=e.isViewportWrapping,C=c?2:3;let w=Math.floor(o*n);const y=w/o;let S=!1,L=!1,k=C*u,D=u/o,N=1;if("fill"===m||"fit"===m){const{typicalViewportLineCount:i,extraLinesBeforeFirstLine:s,extraLinesBeyondLastLine:l,desiredRatio:h,minimapLineCount:c}=M.computeContainedMinimapLineCount({viewLineCount:_,scrollBeyondLastLine:d,paddingTop:e.paddingTop,paddingBottom:e.paddingBottom,height:n,lineHeight:a,pixelRatio:o});if(_/c>1)S=!0,L=!0,u=1,k=1,D=u/o;else{let n=!1,d=u+1;if("fit"===m){const e=Math.ceil((s+_+l)*k);b&&r&&v<=t.stableFitRemainingWidth?(n=!0,d=t.stableFitMaxMinimapScale):n=e>w}if("fill"===m||n){S=!0;const n=u;k=Math.min(a*o,Math.max(1,Math.floor(1/h))),b&&r&&v<=t.stableFitRemainingWidth&&(d=t.stableFitMaxMinimapScale),u=Math.min(d,Math.max(1,Math.floor(k/C))),u>n&&(N=Math.min(2,u/n)),D=u/o/N,w=Math.ceil(Math.max(i,s+_+l)*k),b?(t.stableMinimapLayoutInput=e,t.stableFitRemainingWidth=v,t.stableFitMaxMinimapScale=u):(t.stableMinimapLayoutInput=null,t.stableFitRemainingWidth=0)}}}const x=Math.floor(g*D),E=Math.min(x,Math.max(0,Math.floor((v-p-2)*D/(l+D)))+h);let I=Math.floor(o*E);const T=I/o;I=Math.floor(I*N);return{renderMinimap:c?1:2,minimapLeft:"left"===f?0:i-E-p,minimapWidth:E,minimapHeightIsEditorHeight:S,minimapIsSampling:L,minimapScale:u,minimapLineHeight:k,minimapCanvasInnerWidth:I,minimapCanvasInnerHeight:w,minimapCanvasOuterWidth:T,minimapCanvasOuterHeight:y}}static computeLayout(e,t){const i=0|t.outerWidth,n=0|t.outerHeight,o=0|t.lineHeight,s=0|t.lineNumbersDigitCount,r=t.typicalHalfwidthCharacterWidth,a=t.maxDigitWidth,l=t.pixelRatio,h=t.viewLineCount,d=e.get(137),u="inherit"===d?e.get(136):d,g="inherit"===u?e.get(132):u,m=e.get(135),f=t.isDominatedByLongLines,p=e.get(57),_=0!==e.get(68).renderType,v=e.get(69),b=e.get(105),C=e.get(84),w=e.get(73),y=e.get(103),S=y.verticalScrollbarSize,L=y.verticalHasArrows,k=y.arrowSize,D=y.horizontalScrollbarSize,N=e.get(43),x="never"!==e.get(110);let E=e.get(66);N&&x&&(E+=16);let I=0;if(_){const e=Math.max(s,v);I=Math.round(e*a)}let T=0;p&&(T=o*t.glyphMarginDecorationLaneCount);let A=0,R=A+T,O=R+I,P=O+E;const F=i-T-I-E;let B=!1,z=!1,V=-1;"inherit"===u&&f?(B=!0,z=!0):"on"===g||"bounded"===g?z=!0:"wordWrapColumn"===g&&(V=m);const W=M._computeMinimapLayout({outerWidth:i,outerHeight:n,lineHeight:o,typicalHalfwidthCharacterWidth:r,pixelRatio:l,scrollBeyondLastLine:b,paddingTop:C.top,paddingBottom:C.bottom,minimap:w,verticalScrollbarWidth:S,viewLineCount:h,remainingWidth:F,isViewportWrapping:z},t.memory||new c);0!==W.renderMinimap&&0===W.minimapLeft&&(A+=W.minimapWidth,R+=W.minimapWidth,O+=W.minimapWidth,P+=W.minimapWidth);const H=F-W.minimapWidth,K=Math.max(1,Math.floor((H-S-2)/r)),U=L?k:0;return z&&(V=Math.max(1,K),"bounded"===g&&(V=Math.min(V,m))),{width:i,height:n,glyphMarginLeft:A,glyphMarginWidth:T,glyphMarginDecorationLaneCount:t.glyphMarginDecorationLaneCount,lineNumbersLeft:R,lineNumbersWidth:I,decorationsLeft:O,decorationsWidth:E,contentLeft:P,contentWidth:H,minimap:W,viewportColumn:K,isWordWrapMinified:B,isViewportWrapping:z,wrappingColumn:V,verticalScrollbarWidth:S,horizontalScrollbarHeight:D,overviewRuler:{top:U,width:S,height:n-2*U,right:0}}}}!function(e){e.Off="off",e.OnCode="onCode",e.On="on"}(x||(x={}));function A(e){const t=e.get(98);return"editable"===t?e.get(91):"on"!==t}function R(e,t){if("string"!==typeof e)return t;switch(e){case"hidden":return 2;case"visible":return 3;default:return 1}}const O="inUntrustedWorkspace",P={allowedCharacters:"editor.unicodeHighlight.allowedCharacters",invisibleCharacters:"editor.unicodeHighlight.invisibleCharacters",nonBasicASCII:"editor.unicodeHighlight.nonBasicASCII",ambiguousCharacters:"editor.unicodeHighlight.ambiguousCharacters",includeComments:"editor.unicodeHighlight.includeComments",includeStrings:"editor.unicodeHighlight.includeStrings",allowedLocales:"editor.unicodeHighlight.allowedLocales"};function F(e,t,i){const n=i.indexOf(e);return-1===n?t:i[n]}const B={fontFamily:s.dz?"Menlo, Monaco, 'Courier New', monospace":s.IJ?"'Droid Sans Mono', 'monospace', monospace":"Consolas, 'Courier New', monospace",fontWeight:"normal",fontSize:s.dz?12:14,lineHeight:0,letterSpacing:0},z=[];function V(e){return z[e.id]=e,e}const W={acceptSuggestionOnCommitCharacter:V(new v(0,"acceptSuggestionOnCommitCharacter",!0,{markdownDescription:l.NC("acceptSuggestionOnCommitCharacter","Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.")})),acceptSuggestionOnEnter:V(new k(1,"acceptSuggestionOnEnter","on",["on","smart","off"],{markdownEnumDescriptions:["",l.NC("acceptSuggestionOnEnterSmart","Only accept a suggestion with `Enter` when it makes a textual change."),""],markdownDescription:l.NC("acceptSuggestionOnEnter","Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.")})),accessibilitySupport:V(new class extends u{constructor(){super(2,"accessibilitySupport",0,{type:"string",enum:["auto","on","off"],enumDescriptions:[l.NC("accessibilitySupport.auto","Use platform APIs to detect when a Screen Reader is attached."),l.NC("accessibilitySupport.on","Optimize for usage with a Screen Reader."),l.NC("accessibilitySupport.off","Assume a screen reader is not attached.")],default:"auto",tags:["accessibility"],description:l.NC("accessibilitySupport","Controls if the UI should run in a mode where it is optimized for screen readers.")})}validate(e){switch(e){case"auto":return 0;case"off":return 1;case"on":return 2}return this.defaultValue}compute(e,t,i){return 0===i?e.accessibilitySupport:i}}),accessibilityPageSize:V(new C(3,"accessibilityPageSize",10,1,1073741824,{description:l.NC("accessibilityPageSize","Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default."),tags:["accessibility"]})),ariaLabel:V(new S(4,"ariaLabel",l.NC("editorViewAccessibleLabel","Editor content"))),ariaRequired:V(new v(5,"ariaRequired",!1,void 0)),screenReaderAnnounceInlineSuggestion:V(new v(8,"screenReaderAnnounceInlineSuggestion",!0,{description:l.NC("screenReaderAnnounceInlineSuggestion","Control whether inline suggestions are announced by a screen reader."),tags:["accessibility"]})),autoClosingBrackets:V(new k(6,"autoClosingBrackets","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",l.NC("editor.autoClosingBrackets.languageDefined","Use language configurations to determine when to autoclose brackets."),l.NC("editor.autoClosingBrackets.beforeWhitespace","Autoclose brackets only when the cursor is to the left of whitespace."),""],description:l.NC("autoClosingBrackets","Controls whether the editor should automatically close brackets after the user adds an opening bracket.")})),autoClosingComments:V(new k(7,"autoClosingComments","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",l.NC("editor.autoClosingComments.languageDefined","Use language configurations to determine when to autoclose comments."),l.NC("editor.autoClosingComments.beforeWhitespace","Autoclose comments only when the cursor is to the left of whitespace."),""],description:l.NC("autoClosingComments","Controls whether the editor should automatically close comments after the user adds an opening comment.")})),autoClosingDelete:V(new k(9,"autoClosingDelete","auto",["always","auto","never"],{enumDescriptions:["",l.NC("editor.autoClosingDelete.auto","Remove adjacent closing quotes or brackets only if they were automatically inserted."),""],description:l.NC("autoClosingDelete","Controls whether the editor should remove adjacent closing quotes or brackets when deleting.")})),autoClosingOvertype:V(new k(10,"autoClosingOvertype","auto",["always","auto","never"],{enumDescriptions:["",l.NC("editor.autoClosingOvertype.auto","Type over closing quotes or brackets only if they were automatically inserted."),""],description:l.NC("autoClosingOvertype","Controls whether the editor should type over closing quotes or brackets.")})),autoClosingQuotes:V(new k(11,"autoClosingQuotes","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",l.NC("editor.autoClosingQuotes.languageDefined","Use language configurations to determine when to autoclose quotes."),l.NC("editor.autoClosingQuotes.beforeWhitespace","Autoclose quotes only when the cursor is to the left of whitespace."),""],description:l.NC("autoClosingQuotes","Controls whether the editor should automatically close quotes after the user adds an opening quote.")})),autoIndent:V(new D(12,"autoIndent",4,"full",["none","keep","brackets","advanced","full"],(function(e){switch(e){case"none":return 0;case"keep":return 1;case"brackets":return 2;case"advanced":return 3;case"full":return 4}}),{enumDescriptions:[l.NC("editor.autoIndent.none","The editor will not insert indentation automatically."),l.NC("editor.autoIndent.keep","The editor will keep the current line's indentation."),l.NC("editor.autoIndent.brackets","The editor will keep the current line's indentation and honor language defined brackets."),l.NC("editor.autoIndent.advanced","The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages."),l.NC("editor.autoIndent.full","The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.")],description:l.NC("autoIndent","Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.")})),automaticLayout:V(new v(13,"automaticLayout",!1)),autoSurround:V(new k(14,"autoSurround","languageDefined",["languageDefined","quotes","brackets","never"],{enumDescriptions:[l.NC("editor.autoSurround.languageDefined","Use language configurations to determine when to automatically surround selections."),l.NC("editor.autoSurround.quotes","Surround with quotes but not brackets."),l.NC("editor.autoSurround.brackets","Surround with brackets but not quotes."),""],description:l.NC("autoSurround","Controls whether the editor should automatically surround selections when typing quotes or brackets.")})),bracketPairColorization:V(new class extends u{constructor(){const e={enabled:r.D.bracketPairColorizationOptions.enabled,independentColorPoolPerBracketType:r.D.bracketPairColorizationOptions.independentColorPoolPerBracketType};super(15,"bracketPairColorization",e,{"editor.bracketPairColorization.enabled":{type:"boolean",default:e.enabled,markdownDescription:l.NC("bracketPairColorization.enabled","Controls whether bracket pair colorization is enabled or not. Use {0} to override the bracket highlight colors.","`#workbench.colorCustomizations#`")},"editor.bracketPairColorization.independentColorPoolPerBracketType":{type:"boolean",default:e.independentColorPoolPerBracketType,description:l.NC("bracketPairColorization.independentColorPoolPerBracketType","Controls whether each bracket type has its own independent color pool.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),independentColorPoolPerBracketType:_(t.independentColorPoolPerBracketType,this.defaultValue.independentColorPoolPerBracketType)}}}),bracketPairGuides:V(new class extends u{constructor(){const e={bracketPairs:!1,bracketPairsHorizontal:"active",highlightActiveBracketPair:!0,indentation:!0,highlightActiveIndentation:!0};super(16,"guides",e,{"editor.guides.bracketPairs":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[l.NC("editor.guides.bracketPairs.true","Enables bracket pair guides."),l.NC("editor.guides.bracketPairs.active","Enables bracket pair guides only for the active bracket pair."),l.NC("editor.guides.bracketPairs.false","Disables bracket pair guides.")],default:e.bracketPairs,description:l.NC("editor.guides.bracketPairs","Controls whether bracket pair guides are enabled or not.")},"editor.guides.bracketPairsHorizontal":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[l.NC("editor.guides.bracketPairsHorizontal.true","Enables horizontal guides as addition to vertical bracket pair guides."),l.NC("editor.guides.bracketPairsHorizontal.active","Enables horizontal guides only for the active bracket pair."),l.NC("editor.guides.bracketPairsHorizontal.false","Disables horizontal bracket pair guides.")],default:e.bracketPairsHorizontal,description:l.NC("editor.guides.bracketPairsHorizontal","Controls whether horizontal bracket pair guides are enabled or not.")},"editor.guides.highlightActiveBracketPair":{type:"boolean",default:e.highlightActiveBracketPair,description:l.NC("editor.guides.highlightActiveBracketPair","Controls whether the editor should highlight the active bracket pair.")},"editor.guides.indentation":{type:"boolean",default:e.indentation,description:l.NC("editor.guides.indentation","Controls whether the editor should render indent guides.")},"editor.guides.highlightActiveIndentation":{type:["boolean","string"],enum:[!0,"always",!1],enumDescriptions:[l.NC("editor.guides.highlightActiveIndentation.true","Highlights the active indent guide."),l.NC("editor.guides.highlightActiveIndentation.always","Highlights the active indent guide even if bracket guides are highlighted."),l.NC("editor.guides.highlightActiveIndentation.false","Do not highlight the active indent guide.")],default:e.highlightActiveIndentation,description:l.NC("editor.guides.highlightActiveIndentation","Controls whether the editor should highlight the active indent guide.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{bracketPairs:F(t.bracketPairs,this.defaultValue.bracketPairs,[!0,!1,"active"]),bracketPairsHorizontal:F(t.bracketPairsHorizontal,this.defaultValue.bracketPairsHorizontal,[!0,!1,"active"]),highlightActiveBracketPair:_(t.highlightActiveBracketPair,this.defaultValue.highlightActiveBracketPair),indentation:_(t.indentation,this.defaultValue.indentation),highlightActiveIndentation:F(t.highlightActiveIndentation,this.defaultValue.highlightActiveIndentation,[!0,!1,"always"])}}}),stickyTabStops:V(new v(116,"stickyTabStops",!1,{description:l.NC("stickyTabStops","Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.")})),codeLens:V(new v(17,"codeLens",!0,{description:l.NC("codeLens","Controls whether the editor shows CodeLens.")})),codeLensFontFamily:V(new S(18,"codeLensFontFamily","",{description:l.NC("codeLensFontFamily","Controls the font family for CodeLens.")})),codeLensFontSize:V(new C(19,"codeLensFontSize",0,0,100,{type:"number",default:0,minimum:0,maximum:100,markdownDescription:l.NC("codeLensFontSize","Controls the font size in pixels for CodeLens. When set to 0, 90% of `#editor.fontSize#` is used.")})),colorDecorators:V(new v(20,"colorDecorators",!0,{description:l.NC("colorDecorators","Controls whether the editor should render the inline color decorators and color picker.")})),colorDecoratorActivatedOn:V(new k(148,"colorDecoratorsActivatedOn","clickAndHover",["clickAndHover","hover","click"],{enumDescriptions:[l.NC("editor.colorDecoratorActivatedOn.clickAndHover","Make the color picker appear both on click and hover of the color decorator"),l.NC("editor.colorDecoratorActivatedOn.hover","Make the color picker appear on hover of the color decorator"),l.NC("editor.colorDecoratorActivatedOn.click","Make the color picker appear on click of the color decorator")],description:l.NC("colorDecoratorActivatedOn","Controls the condition to make a color picker appear from a color decorator")})),colorDecoratorsLimit:V(new C(21,"colorDecoratorsLimit",500,1,1e6,{markdownDescription:l.NC("colorDecoratorsLimit","Controls the max number of color decorators that can be rendered in an editor at once.")})),columnSelection:V(new v(22,"columnSelection",!1,{description:l.NC("columnSelection","Enable that the selection with the mouse and keys is doing column selection.")})),comments:V(new class extends u{constructor(){const e={insertSpace:!0,ignoreEmptyLines:!0};super(23,"comments",e,{"editor.comments.insertSpace":{type:"boolean",default:e.insertSpace,description:l.NC("comments.insertSpace","Controls whether a space character is inserted when commenting.")},"editor.comments.ignoreEmptyLines":{type:"boolean",default:e.ignoreEmptyLines,description:l.NC("comments.ignoreEmptyLines","Controls if empty lines should be ignored with toggle, add or remove actions for line comments.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{insertSpace:_(t.insertSpace,this.defaultValue.insertSpace),ignoreEmptyLines:_(t.ignoreEmptyLines,this.defaultValue.ignoreEmptyLines)}}}),contextmenu:V(new v(24,"contextmenu",!0)),copyWithSyntaxHighlighting:V(new v(25,"copyWithSyntaxHighlighting",!0,{description:l.NC("copyWithSyntaxHighlighting","Controls whether syntax highlighting should be copied into the clipboard.")})),cursorBlinking:V(new D(26,"cursorBlinking",1,"blink",["blink","smooth","phase","expand","solid"],(function(e){switch(e){case"blink":return 1;case"smooth":return 2;case"phase":return 3;case"expand":return 4;case"solid":return 5}}),{description:l.NC("cursorBlinking","Control the cursor animation style.")})),cursorSmoothCaretAnimation:V(new k(27,"cursorSmoothCaretAnimation","off",["off","explicit","on"],{enumDescriptions:[l.NC("cursorSmoothCaretAnimation.off","Smooth caret animation is disabled."),l.NC("cursorSmoothCaretAnimation.explicit","Smooth caret animation is enabled only when the user moves the cursor with an explicit gesture."),l.NC("cursorSmoothCaretAnimation.on","Smooth caret animation is always enabled.")],description:l.NC("cursorSmoothCaretAnimation","Controls whether the smooth caret animation should be enabled.")})),cursorStyle:V(new D(28,"cursorStyle",N.Line,"line",["line","block","underline","line-thin","block-outline","underline-thin"],(function(e){switch(e){case"line":return N.Line;case"block":return N.Block;case"underline":return N.Underline;case"line-thin":return N.LineThin;case"block-outline":return N.BlockOutline;case"underline-thin":return N.UnderlineThin}}),{description:l.NC("cursorStyle","Controls the cursor style.")})),cursorSurroundingLines:V(new C(29,"cursorSurroundingLines",0,0,1073741824,{description:l.NC("cursorSurroundingLines","Controls the minimal number of visible leading lines (minimum 0) and trailing lines (minimum 1) surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.")})),cursorSurroundingLinesStyle:V(new k(30,"cursorSurroundingLinesStyle","default",["default","all"],{enumDescriptions:[l.NC("cursorSurroundingLinesStyle.default","`cursorSurroundingLines` is enforced only when triggered via the keyboard or API."),l.NC("cursorSurroundingLinesStyle.all","`cursorSurroundingLines` is enforced always.")],markdownDescription:l.NC("cursorSurroundingLinesStyle","Controls when `#editor.cursorSurroundingLines#` should be enforced.")})),cursorWidth:V(new C(31,"cursorWidth",0,0,1073741824,{markdownDescription:l.NC("cursorWidth","Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.")})),disableLayerHinting:V(new v(32,"disableLayerHinting",!1)),disableMonospaceOptimizations:V(new v(33,"disableMonospaceOptimizations",!1)),domReadOnly:V(new v(34,"domReadOnly",!1)),dragAndDrop:V(new v(35,"dragAndDrop",!0,{description:l.NC("dragAndDrop","Controls whether the editor should allow moving selections via drag and drop.")})),emptySelectionClipboard:V(new class extends v{constructor(){super(37,"emptySelectionClipboard",!0,{description:l.NC("emptySelectionClipboard","Controls whether copying without a selection copies the current line.")})}compute(e,t,i){return i&&e.emptySelectionClipboard}}),dropIntoEditor:V(new class extends u{constructor(){const e={enabled:!0,showDropSelector:"afterDrop"};super(36,"dropIntoEditor",e,{"editor.dropIntoEditor.enabled":{type:"boolean",default:e.enabled,markdownDescription:l.NC("dropIntoEditor.enabled","Controls whether you can drag and drop a file into a text editor by holding down the `Shift` key (instead of opening the file in an editor).")},"editor.dropIntoEditor.showDropSelector":{type:"string",markdownDescription:l.NC("dropIntoEditor.showDropSelector","Controls if a widget is shown when dropping files into the editor. This widget lets you control how the file is dropped."),enum:["afterDrop","never"],enumDescriptions:[l.NC("dropIntoEditor.showDropSelector.afterDrop","Show the drop selector widget after a file is dropped into the editor."),l.NC("dropIntoEditor.showDropSelector.never","Never show the drop selector widget. Instead the default drop provider is always used.")],default:"afterDrop"}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),showDropSelector:L(t.showDropSelector,this.defaultValue.showDropSelector,["afterDrop","never"])}}}),stickyScroll:V(new class extends u{constructor(){const e={enabled:!0,maxLineCount:5,defaultModel:"outlineModel",scrollWithEditor:!0};super(115,"stickyScroll",e,{"editor.stickyScroll.enabled":{type:"boolean",default:e.enabled,description:l.NC("editor.stickyScroll.enabled","Shows the nested current scopes during the scroll at the top of the editor."),tags:["experimental"]},"editor.stickyScroll.maxLineCount":{type:"number",default:e.maxLineCount,minimum:1,maximum:20,description:l.NC("editor.stickyScroll.maxLineCount","Defines the maximum number of sticky lines to show.")},"editor.stickyScroll.defaultModel":{type:"string",enum:["outlineModel","foldingProviderModel","indentationModel"],default:e.defaultModel,description:l.NC("editor.stickyScroll.defaultModel","Defines the model to use for determining which lines to stick. If the outline model does not exist, it will fall back on the folding provider model which falls back on the indentation model. This order is respected in all three cases.")},"editor.stickyScroll.scrollWithEditor":{type:"boolean",default:e.scrollWithEditor,description:l.NC("editor.stickyScroll.scrollWithEditor","Enable scrolling of Sticky Scroll with the editor's horizontal scrollbar.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),maxLineCount:C.clampedInt(t.maxLineCount,this.defaultValue.maxLineCount,1,20),defaultModel:L(t.defaultModel,this.defaultValue.defaultModel,["outlineModel","foldingProviderModel","indentationModel"]),scrollWithEditor:_(t.scrollWithEditor,this.defaultValue.scrollWithEditor)}}}),experimentalWhitespaceRendering:V(new k(38,"experimentalWhitespaceRendering","svg",["svg","font","off"],{enumDescriptions:[l.NC("experimentalWhitespaceRendering.svg","Use a new rendering method with svgs."),l.NC("experimentalWhitespaceRendering.font","Use a new rendering method with font characters."),l.NC("experimentalWhitespaceRendering.off","Use the stable rendering method.")],description:l.NC("experimentalWhitespaceRendering","Controls whether whitespace is rendered with a new, experimental method.")})),extraEditorClassName:V(new S(39,"extraEditorClassName","")),fastScrollSensitivity:V(new y(40,"fastScrollSensitivity",5,(e=>e<=0?5:e),{markdownDescription:l.NC("fastScrollSensitivity","Scrolling speed multiplier when pressing `Alt`.")})),find:V(new class extends u{constructor(){const e={cursorMoveOnType:!0,seedSearchStringFromSelection:"always",autoFindInSelection:"never",globalFindClipboard:!1,addExtraSpaceOnTop:!0,loop:!0};super(41,"find",e,{"editor.find.cursorMoveOnType":{type:"boolean",default:e.cursorMoveOnType,description:l.NC("find.cursorMoveOnType","Controls whether the cursor should jump to find matches while typing.")},"editor.find.seedSearchStringFromSelection":{type:"string",enum:["never","always","selection"],default:e.seedSearchStringFromSelection,enumDescriptions:[l.NC("editor.find.seedSearchStringFromSelection.never","Never seed search string from the editor selection."),l.NC("editor.find.seedSearchStringFromSelection.always","Always seed search string from the editor selection, including word at cursor position."),l.NC("editor.find.seedSearchStringFromSelection.selection","Only seed search string from the editor selection.")],description:l.NC("find.seedSearchStringFromSelection","Controls whether the search string in the Find Widget is seeded from the editor selection.")},"editor.find.autoFindInSelection":{type:"string",enum:["never","always","multiline"],default:e.autoFindInSelection,enumDescriptions:[l.NC("editor.find.autoFindInSelection.never","Never turn on Find in Selection automatically (default)."),l.NC("editor.find.autoFindInSelection.always","Always turn on Find in Selection automatically."),l.NC("editor.find.autoFindInSelection.multiline","Turn on Find in Selection automatically when multiple lines of content are selected.")],description:l.NC("find.autoFindInSelection","Controls the condition for turning on Find in Selection automatically.")},"editor.find.globalFindClipboard":{type:"boolean",default:e.globalFindClipboard,description:l.NC("find.globalFindClipboard","Controls whether the Find Widget should read or modify the shared find clipboard on macOS."),included:s.dz},"editor.find.addExtraSpaceOnTop":{type:"boolean",default:e.addExtraSpaceOnTop,description:l.NC("find.addExtraSpaceOnTop","Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.")},"editor.find.loop":{type:"boolean",default:e.loop,description:l.NC("find.loop","Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{cursorMoveOnType:_(t.cursorMoveOnType,this.defaultValue.cursorMoveOnType),seedSearchStringFromSelection:"boolean"===typeof e.seedSearchStringFromSelection?e.seedSearchStringFromSelection?"always":"never":L(t.seedSearchStringFromSelection,this.defaultValue.seedSearchStringFromSelection,["never","always","selection"]),autoFindInSelection:"boolean"===typeof e.autoFindInSelection?e.autoFindInSelection?"always":"never":L(t.autoFindInSelection,this.defaultValue.autoFindInSelection,["never","always","multiline"]),globalFindClipboard:_(t.globalFindClipboard,this.defaultValue.globalFindClipboard),addExtraSpaceOnTop:_(t.addExtraSpaceOnTop,this.defaultValue.addExtraSpaceOnTop),loop:_(t.loop,this.defaultValue.loop)}}}),fixedOverflowWidgets:V(new v(42,"fixedOverflowWidgets",!1)),folding:V(new v(43,"folding",!0,{description:l.NC("folding","Controls whether the editor has code folding enabled.")})),foldingStrategy:V(new k(44,"foldingStrategy","auto",["auto","indentation"],{enumDescriptions:[l.NC("foldingStrategy.auto","Use a language-specific folding strategy if available, else the indentation-based one."),l.NC("foldingStrategy.indentation","Use the indentation-based folding strategy.")],description:l.NC("foldingStrategy","Controls the strategy for computing folding ranges.")})),foldingHighlight:V(new v(45,"foldingHighlight",!0,{description:l.NC("foldingHighlight","Controls whether the editor should highlight folded ranges.")})),foldingImportsByDefault:V(new v(46,"foldingImportsByDefault",!1,{description:l.NC("foldingImportsByDefault","Controls whether the editor automatically collapses import ranges.")})),foldingMaximumRegions:V(new C(47,"foldingMaximumRegions",5e3,10,65e3,{description:l.NC("foldingMaximumRegions","The maximum number of foldable regions. Increasing this value may result in the editor becoming less responsive when the current source has a large number of foldable regions.")})),unfoldOnClickAfterEndOfLine:V(new v(48,"unfoldOnClickAfterEndOfLine",!1,{description:l.NC("unfoldOnClickAfterEndOfLine","Controls whether clicking on the empty content after a folded line will unfold the line.")})),fontFamily:V(new S(49,"fontFamily",B.fontFamily,{description:l.NC("fontFamily","Controls the font family.")})),fontInfo:V(new class extends f{constructor(){super(50)}compute(e,t,i){return e.fontInfo}}),fontLigatures2:V(new E),fontSize:V(new class extends p{constructor(){super(52,"fontSize",B.fontSize,{type:"number",minimum:6,maximum:100,default:B.fontSize,description:l.NC("fontSize","Controls the font size in pixels.")})}validate(e){const t=y.float(e,this.defaultValue);return 0===t?B.fontSize:y.clamp(t,6,100)}compute(e,t,i){return e.fontInfo.fontSize}}),fontWeight:V(new T),fontVariations:V(new I),formatOnPaste:V(new v(55,"formatOnPaste",!1,{description:l.NC("formatOnPaste","Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.")})),formatOnType:V(new v(56,"formatOnType",!1,{description:l.NC("formatOnType","Controls whether the editor should automatically format the line after typing.")})),glyphMargin:V(new v(57,"glyphMargin",!0,{description:l.NC("glyphMargin","Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.")})),gotoLocation:V(new class extends u{constructor(){const e={multiple:"peek",multipleDefinitions:"peek",multipleTypeDefinitions:"peek",multipleDeclarations:"peek",multipleImplementations:"peek",multipleReferences:"peek",alternativeDefinitionCommand:"editor.action.goToReferences",alternativeTypeDefinitionCommand:"editor.action.goToReferences",alternativeDeclarationCommand:"editor.action.goToReferences",alternativeImplementationCommand:"",alternativeReferenceCommand:""},t={type:"string",enum:["peek","gotoAndPeek","goto"],default:e.multiple,enumDescriptions:[l.NC("editor.gotoLocation.multiple.peek","Show Peek view of the results (default)"),l.NC("editor.gotoLocation.multiple.gotoAndPeek","Go to the primary result and show a Peek view"),l.NC("editor.gotoLocation.multiple.goto","Go to the primary result and enable Peek-less navigation to others")]},i=["","editor.action.referenceSearch.trigger","editor.action.goToReferences","editor.action.peekImplementation","editor.action.goToImplementation","editor.action.peekTypeDefinition","editor.action.goToTypeDefinition","editor.action.peekDeclaration","editor.action.revealDeclaration","editor.action.peekDefinition","editor.action.revealDefinitionAside","editor.action.revealDefinition"];super(58,"gotoLocation",e,{"editor.gotoLocation.multiple":{deprecationMessage:l.NC("editor.gotoLocation.multiple.deprecated","This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.")},"editor.gotoLocation.multipleDefinitions":{description:l.NC("editor.editor.gotoLocation.multipleDefinitions","Controls the behavior the 'Go to Definition'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleTypeDefinitions":{description:l.NC("editor.editor.gotoLocation.multipleTypeDefinitions","Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleDeclarations":{description:l.NC("editor.editor.gotoLocation.multipleDeclarations","Controls the behavior the 'Go to Declaration'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleImplementations":{description:l.NC("editor.editor.gotoLocation.multipleImplemenattions","Controls the behavior the 'Go to Implementations'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleReferences":{description:l.NC("editor.editor.gotoLocation.multipleReferences","Controls the behavior the 'Go to References'-command when multiple target locations exist."),...t},"editor.gotoLocation.alternativeDefinitionCommand":{type:"string",default:e.alternativeDefinitionCommand,enum:i,description:l.NC("alternativeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Definition' is the current location.")},"editor.gotoLocation.alternativeTypeDefinitionCommand":{type:"string",default:e.alternativeTypeDefinitionCommand,enum:i,description:l.NC("alternativeTypeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.")},"editor.gotoLocation.alternativeDeclarationCommand":{type:"string",default:e.alternativeDeclarationCommand,enum:i,description:l.NC("alternativeDeclarationCommand","Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.")},"editor.gotoLocation.alternativeImplementationCommand":{type:"string",default:e.alternativeImplementationCommand,enum:i,description:l.NC("alternativeImplementationCommand","Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.")},"editor.gotoLocation.alternativeReferenceCommand":{type:"string",default:e.alternativeReferenceCommand,enum:i,description:l.NC("alternativeReferenceCommand","Alternative command id that is being executed when the result of 'Go to Reference' is the current location.")}})}validate(e){var t,i,n,o,s;if(!e||"object"!==typeof e)return this.defaultValue;const r=e;return{multiple:L(r.multiple,this.defaultValue.multiple,["peek","gotoAndPeek","goto"]),multipleDefinitions:null!==(t=r.multipleDefinitions)&&void 0!==t?t:L(r.multipleDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleTypeDefinitions:null!==(i=r.multipleTypeDefinitions)&&void 0!==i?i:L(r.multipleTypeDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleDeclarations:null!==(n=r.multipleDeclarations)&&void 0!==n?n:L(r.multipleDeclarations,"peek",["peek","gotoAndPeek","goto"]),multipleImplementations:null!==(o=r.multipleImplementations)&&void 0!==o?o:L(r.multipleImplementations,"peek",["peek","gotoAndPeek","goto"]),multipleReferences:null!==(s=r.multipleReferences)&&void 0!==s?s:L(r.multipleReferences,"peek",["peek","gotoAndPeek","goto"]),alternativeDefinitionCommand:S.string(r.alternativeDefinitionCommand,this.defaultValue.alternativeDefinitionCommand),alternativeTypeDefinitionCommand:S.string(r.alternativeTypeDefinitionCommand,this.defaultValue.alternativeTypeDefinitionCommand),alternativeDeclarationCommand:S.string(r.alternativeDeclarationCommand,this.defaultValue.alternativeDeclarationCommand),alternativeImplementationCommand:S.string(r.alternativeImplementationCommand,this.defaultValue.alternativeImplementationCommand),alternativeReferenceCommand:S.string(r.alternativeReferenceCommand,this.defaultValue.alternativeReferenceCommand)}}}),hideCursorInOverviewRuler:V(new v(59,"hideCursorInOverviewRuler",!1,{description:l.NC("hideCursorInOverviewRuler","Controls whether the cursor should be hidden in the overview ruler.")})),hover:V(new class extends u{constructor(){const e={enabled:!0,delay:300,hidingDelay:300,sticky:!0,above:!0};super(60,"hover",e,{"editor.hover.enabled":{type:"boolean",default:e.enabled,description:l.NC("hover.enabled","Controls whether the hover is shown.")},"editor.hover.delay":{type:"number",default:e.delay,minimum:0,maximum:1e4,description:l.NC("hover.delay","Controls the delay in milliseconds after which the hover is shown.")},"editor.hover.sticky":{type:"boolean",default:e.sticky,description:l.NC("hover.sticky","Controls whether the hover should remain visible when mouse is moved over it.")},"editor.hover.hidingDelay":{type:"integer",minimum:0,default:e.hidingDelay,description:l.NC("hover.hidingDelay","Controls the delay in milliseconds after which the hover is hidden. Requires `editor.hover.sticky` to be enabled.")},"editor.hover.above":{type:"boolean",default:e.above,description:l.NC("hover.above","Prefer showing hovers above the line, if there's space.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),delay:C.clampedInt(t.delay,this.defaultValue.delay,0,1e4),sticky:_(t.sticky,this.defaultValue.sticky),hidingDelay:C.clampedInt(t.hidingDelay,this.defaultValue.hidingDelay,0,6e5),above:_(t.above,this.defaultValue.above)}}}),inDiffEditor:V(new v(61,"inDiffEditor",!1)),letterSpacing:V(new y(64,"letterSpacing",B.letterSpacing,(e=>y.clamp(e,-5,20)),{description:l.NC("letterSpacing","Controls the letter spacing in pixels.")})),lightbulb:V(new class extends u{constructor(){const e={enabled:x.On};super(65,"lightbulb",e,{"editor.lightbulb.enabled":{type:"string",tags:["experimental"],enum:[x.Off,x.OnCode,x.On],default:e.enabled,enumDescriptions:[l.NC("editor.lightbulb.enabled.off","Disable the code action menu."),l.NC("editor.lightbulb.enabled.onCode","Show the code action menu when the cursor is on lines with code."),l.NC("editor.lightbulb.enabled.on","Show the code action menu when the cursor is on lines with code or on empty lines.")],description:l.NC("enabled","Enables the Code Action lightbulb in the editor.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;return{enabled:L(e.enabled,this.defaultValue.enabled,[x.Off,x.OnCode,x.On])}}}),lineDecorationsWidth:V(new class extends u{constructor(){super(66,"lineDecorationsWidth",10)}validate(e){if("string"===typeof e&&/^\d+(\.\d+)?ch$/.test(e)){return-parseFloat(e.substring(0,e.length-2))}return C.clampedInt(e,this.defaultValue,0,1e3)}compute(e,t,i){return i<0?C.clampedInt(-i*e.fontInfo.typicalHalfwidthCharacterWidth,this.defaultValue,0,1e3):i}}),lineHeight:V(new class extends y{constructor(){super(67,"lineHeight",B.lineHeight,(e=>y.clamp(e,0,150)),{markdownDescription:l.NC("lineHeight","Controls the line height. \n - Use 0 to automatically compute the line height from the font size.\n - Values between 0 and 8 will be used as a multiplier with the font size.\n - Values greater than or equal to 8 will be used as effective values.")})}compute(e,t,i){return e.fontInfo.lineHeight}}),lineNumbers:V(new class extends u{constructor(){super(68,"lineNumbers",{renderType:1,renderFn:null},{type:"string",enum:["off","on","relative","interval"],enumDescriptions:[l.NC("lineNumbers.off","Line numbers are not rendered."),l.NC("lineNumbers.on","Line numbers are rendered as absolute number."),l.NC("lineNumbers.relative","Line numbers are rendered as distance in lines to cursor position."),l.NC("lineNumbers.interval","Line numbers are rendered every 10 lines.")],default:"on",description:l.NC("lineNumbers","Controls the display of line numbers.")})}validate(e){let t=this.defaultValue.renderType,i=this.defaultValue.renderFn;return"undefined"!==typeof e&&("function"===typeof e?(t=4,i=e):t="interval"===e?3:"relative"===e?2:"on"===e?1:0),{renderType:t,renderFn:i}}}),lineNumbersMinChars:V(new C(69,"lineNumbersMinChars",5,1,300)),linkedEditing:V(new v(70,"linkedEditing",!1,{description:l.NC("linkedEditing","Controls whether the editor has linked editing enabled. Depending on the language, related symbols such as HTML tags, are updated while editing.")})),links:V(new v(71,"links",!0,{description:l.NC("links","Controls whether the editor should detect links and make them clickable.")})),matchBrackets:V(new k(72,"matchBrackets","always",["always","near","never"],{description:l.NC("matchBrackets","Highlight matching brackets.")})),minimap:V(new class extends u{constructor(){const e={enabled:!0,size:"proportional",side:"right",showSlider:"mouseover",autohide:!1,renderCharacters:!0,maxColumn:120,scale:1,showRegionSectionHeaders:!0,showMarkSectionHeaders:!0,sectionHeaderFontSize:9};super(73,"minimap",e,{"editor.minimap.enabled":{type:"boolean",default:e.enabled,description:l.NC("minimap.enabled","Controls whether the minimap is shown.")},"editor.minimap.autohide":{type:"boolean",default:e.autohide,description:l.NC("minimap.autohide","Controls whether the minimap is hidden automatically.")},"editor.minimap.size":{type:"string",enum:["proportional","fill","fit"],enumDescriptions:[l.NC("minimap.size.proportional","The minimap has the same size as the editor contents (and might scroll)."),l.NC("minimap.size.fill","The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling)."),l.NC("minimap.size.fit","The minimap will shrink as necessary to never be larger than the editor (no scrolling).")],default:e.size,description:l.NC("minimap.size","Controls the size of the minimap.")},"editor.minimap.side":{type:"string",enum:["left","right"],default:e.side,description:l.NC("minimap.side","Controls the side where to render the minimap.")},"editor.minimap.showSlider":{type:"string",enum:["always","mouseover"],default:e.showSlider,description:l.NC("minimap.showSlider","Controls when the minimap slider is shown.")},"editor.minimap.scale":{type:"number",default:e.scale,minimum:1,maximum:3,enum:[1,2,3],description:l.NC("minimap.scale","Scale of content drawn in the minimap: 1, 2 or 3.")},"editor.minimap.renderCharacters":{type:"boolean",default:e.renderCharacters,description:l.NC("minimap.renderCharacters","Render the actual characters on a line as opposed to color blocks.")},"editor.minimap.maxColumn":{type:"number",default:e.maxColumn,description:l.NC("minimap.maxColumn","Limit the width of the minimap to render at most a certain number of columns.")},"editor.minimap.showRegionSectionHeaders":{type:"boolean",default:e.showRegionSectionHeaders,description:l.NC("minimap.showRegionSectionHeaders","Controls whether named regions are shown as section headers in the minimap.")},"editor.minimap.showMarkSectionHeaders":{type:"boolean",default:e.showMarkSectionHeaders,description:l.NC("minimap.showMarkSectionHeaders","Controls whether MARK: comments are shown as section headers in the minimap.")},"editor.minimap.sectionHeaderFontSize":{type:"number",default:e.sectionHeaderFontSize,description:l.NC("minimap.sectionHeaderFontSize","Controls the font size of section headers in the minimap.")}})}validate(e){var t;if(!e||"object"!==typeof e)return this.defaultValue;const i=e;return{enabled:_(i.enabled,this.defaultValue.enabled),autohide:_(i.autohide,this.defaultValue.autohide),size:L(i.size,this.defaultValue.size,["proportional","fill","fit"]),side:L(i.side,this.defaultValue.side,["right","left"]),showSlider:L(i.showSlider,this.defaultValue.showSlider,["always","mouseover"]),renderCharacters:_(i.renderCharacters,this.defaultValue.renderCharacters),scale:C.clampedInt(i.scale,1,1,3),maxColumn:C.clampedInt(i.maxColumn,this.defaultValue.maxColumn,1,1e4),showRegionSectionHeaders:_(i.showRegionSectionHeaders,this.defaultValue.showRegionSectionHeaders),showMarkSectionHeaders:_(i.showMarkSectionHeaders,this.defaultValue.showMarkSectionHeaders),sectionHeaderFontSize:y.clamp(null!==(t=i.sectionHeaderFontSize)&&void 0!==t?t:this.defaultValue.sectionHeaderFontSize,4,32)}}}),mouseStyle:V(new k(74,"mouseStyle","text",["text","default","copy"])),mouseWheelScrollSensitivity:V(new y(75,"mouseWheelScrollSensitivity",1,(e=>0===e?1:e),{markdownDescription:l.NC("mouseWheelScrollSensitivity","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")})),mouseWheelZoom:V(new v(76,"mouseWheelZoom",!1,{markdownDescription:s.dz?l.NC("mouseWheelZoom.mac","Zoom the font of the editor when using mouse wheel and holding `Cmd`."):l.NC("mouseWheelZoom","Zoom the font of the editor when using mouse wheel and holding `Ctrl`.")})),multiCursorMergeOverlapping:V(new v(77,"multiCursorMergeOverlapping",!0,{description:l.NC("multiCursorMergeOverlapping","Merge multiple cursors when they are overlapping.")})),multiCursorModifier:V(new D(78,"multiCursorModifier","altKey","alt",["ctrlCmd","alt"],(function(e){return"ctrlCmd"===e?s.dz?"metaKey":"ctrlKey":"altKey"}),{markdownEnumDescriptions:[l.NC("multiCursorModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),l.NC("multiCursorModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],markdownDescription:l.NC({key:"multiCursorModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add multiple cursors with the mouse. The Go to Definition and Open Link mouse gestures will adapt such that they do not conflict with the [multicursor modifier](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).")})),multiCursorPaste:V(new k(79,"multiCursorPaste","spread",["spread","full"],{markdownEnumDescriptions:[l.NC("multiCursorPaste.spread","Each cursor pastes a single line of the text."),l.NC("multiCursorPaste.full","Each cursor pastes the full text.")],markdownDescription:l.NC("multiCursorPaste","Controls pasting when the line count of the pasted text matches the cursor count.")})),multiCursorLimit:V(new C(80,"multiCursorLimit",1e4,1,1e5,{markdownDescription:l.NC("multiCursorLimit","Controls the max number of cursors that can be in an active editor at once.")})),occurrencesHighlight:V(new k(81,"occurrencesHighlight","singleFile",["off","singleFile","multiFile"],{markdownEnumDescriptions:[l.NC("occurrencesHighlight.off","Does not highlight occurrences."),l.NC("occurrencesHighlight.singleFile","Highlights occurrences only in the current file."),l.NC("occurrencesHighlight.multiFile","Experimental: Highlights occurrences across all valid open files.")],markdownDescription:l.NC("occurrencesHighlight","Controls whether occurrences should be highlighted across open files.")})),overviewRulerBorder:V(new v(82,"overviewRulerBorder",!0,{description:l.NC("overviewRulerBorder","Controls whether a border should be drawn around the overview ruler.")})),overviewRulerLanes:V(new C(83,"overviewRulerLanes",3,0,3)),padding:V(new class extends u{constructor(){super(84,"padding",{top:0,bottom:0},{"editor.padding.top":{type:"number",default:0,minimum:0,maximum:1e3,description:l.NC("padding.top","Controls the amount of space between the top edge of the editor and the first line.")},"editor.padding.bottom":{type:"number",default:0,minimum:0,maximum:1e3,description:l.NC("padding.bottom","Controls the amount of space between the bottom edge of the editor and the last line.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{top:C.clampedInt(t.top,0,0,1e3),bottom:C.clampedInt(t.bottom,0,0,1e3)}}}),pasteAs:V(new class extends u{constructor(){const e={enabled:!0,showPasteSelector:"afterPaste"};super(85,"pasteAs",e,{"editor.pasteAs.enabled":{type:"boolean",default:e.enabled,markdownDescription:l.NC("pasteAs.enabled","Controls whether you can paste content in different ways.")},"editor.pasteAs.showPasteSelector":{type:"string",markdownDescription:l.NC("pasteAs.showPasteSelector","Controls if a widget is shown when pasting content in to the editor. This widget lets you control how the file is pasted."),enum:["afterPaste","never"],enumDescriptions:[l.NC("pasteAs.showPasteSelector.afterPaste","Show the paste selector widget after content is pasted into the editor."),l.NC("pasteAs.showPasteSelector.never","Never show the paste selector widget. Instead the default pasting behavior is always used.")],default:"afterPaste"}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),showPasteSelector:L(t.showPasteSelector,this.defaultValue.showPasteSelector,["afterPaste","never"])}}}),parameterHints:V(new class extends u{constructor(){const e={enabled:!0,cycle:!0};super(86,"parameterHints",e,{"editor.parameterHints.enabled":{type:"boolean",default:e.enabled,description:l.NC("parameterHints.enabled","Enables a pop-up that shows parameter documentation and type information as you type.")},"editor.parameterHints.cycle":{type:"boolean",default:e.cycle,description:l.NC("parameterHints.cycle","Controls whether the parameter hints menu cycles or closes when reaching the end of the list.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),cycle:_(t.cycle,this.defaultValue.cycle)}}}),peekWidgetDefaultFocus:V(new k(87,"peekWidgetDefaultFocus","tree",["tree","editor"],{enumDescriptions:[l.NC("peekWidgetDefaultFocus.tree","Focus the tree when opening peek"),l.NC("peekWidgetDefaultFocus.editor","Focus the editor when opening peek")],description:l.NC("peekWidgetDefaultFocus","Controls whether to focus the inline editor or the tree in the peek widget.")})),definitionLinkOpensInPeek:V(new v(88,"definitionLinkOpensInPeek",!1,{description:l.NC("definitionLinkOpensInPeek","Controls whether the Go to Definition mouse gesture always opens the peek widget.")})),quickSuggestions:V(new class extends u{constructor(){const e={other:"on",comments:"off",strings:"off"},t=[{type:"boolean"},{type:"string",enum:["on","inline","off"],enumDescriptions:[l.NC("on","Quick suggestions show inside the suggest widget"),l.NC("inline","Quick suggestions show as ghost text"),l.NC("off","Quick suggestions are disabled")]}];super(89,"quickSuggestions",e,{type:"object",additionalProperties:!1,properties:{strings:{anyOf:t,default:e.strings,description:l.NC("quickSuggestions.strings","Enable quick suggestions inside strings.")},comments:{anyOf:t,default:e.comments,description:l.NC("quickSuggestions.comments","Enable quick suggestions inside comments.")},other:{anyOf:t,default:e.other,description:l.NC("quickSuggestions.other","Enable quick suggestions outside of strings and comments.")}},default:e,markdownDescription:l.NC("quickSuggestions","Controls whether suggestions should automatically show up while typing. This can be controlled for typing in comments, strings, and other code. Quick suggestion can be configured to show as ghost text or with the suggest widget. Also be aware of the '{0}'-setting which controls if suggestions are triggered by special characters.","#editor.suggestOnTriggerCharacters#")}),this.defaultValue=e}validate(e){if("boolean"===typeof e){const t=e?"on":"off";return{comments:t,strings:t,other:t}}if(!e||"object"!==typeof e)return this.defaultValue;const{other:t,comments:i,strings:n}=e,o=["on","inline","off"];let s,r,a;return s="boolean"===typeof t?t?"on":"off":L(t,this.defaultValue.other,o),r="boolean"===typeof i?i?"on":"off":L(i,this.defaultValue.comments,o),a="boolean"===typeof n?n?"on":"off":L(n,this.defaultValue.strings,o),{other:s,comments:r,strings:a}}}),quickSuggestionsDelay:V(new C(90,"quickSuggestionsDelay",10,0,1073741824,{description:l.NC("quickSuggestionsDelay","Controls the delay in milliseconds after which quick suggestions will show up.")})),readOnly:V(new v(91,"readOnly",!1)),readOnlyMessage:V(new class extends u{constructor(){super(92,"readOnlyMessage",undefined)}validate(e){return e&&"object"===typeof e?e:this.defaultValue}}),renameOnType:V(new v(93,"renameOnType",!1,{description:l.NC("renameOnType","Controls whether the editor auto renames on type."),markdownDeprecationMessage:l.NC("renameOnTypeDeprecate","Deprecated, use `editor.linkedEditing` instead.")})),renderControlCharacters:V(new v(94,"renderControlCharacters",!0,{description:l.NC("renderControlCharacters","Controls whether the editor should render control characters."),restricted:!0})),renderFinalNewline:V(new k(95,"renderFinalNewline",s.IJ?"dimmed":"on",["off","on","dimmed"],{description:l.NC("renderFinalNewline","Render last line number when the file ends with a newline.")})),renderLineHighlight:V(new k(96,"renderLineHighlight","line",["none","gutter","line","all"],{enumDescriptions:["","","",l.NC("renderLineHighlight.all","Highlights both the gutter and the current line.")],description:l.NC("renderLineHighlight","Controls how the editor should render the current line highlight.")})),renderLineHighlightOnlyWhenFocus:V(new v(97,"renderLineHighlightOnlyWhenFocus",!1,{description:l.NC("renderLineHighlightOnlyWhenFocus","Controls if the editor should render the current line highlight only when the editor is focused.")})),renderValidationDecorations:V(new k(98,"renderValidationDecorations","editable",["editable","on","off"])),renderWhitespace:V(new k(99,"renderWhitespace","selection",["none","boundary","selection","trailing","all"],{enumDescriptions:["",l.NC("renderWhitespace.boundary","Render whitespace characters except for single spaces between words."),l.NC("renderWhitespace.selection","Render whitespace characters only on selected text."),l.NC("renderWhitespace.trailing","Render only trailing whitespace characters."),""],description:l.NC("renderWhitespace","Controls how the editor should render whitespace characters.")})),revealHorizontalRightPadding:V(new C(100,"revealHorizontalRightPadding",15,0,1e3)),roundedSelection:V(new v(101,"roundedSelection",!0,{description:l.NC("roundedSelection","Controls whether selections should have rounded corners.")})),rulers:V(new class extends u{constructor(){const e=[],t={type:"number",description:l.NC("rulers.size","Number of monospace characters at which this editor ruler will render.")};super(102,"rulers",e,{type:"array",items:{anyOf:[t,{type:["object"],properties:{column:t,color:{type:"string",description:l.NC("rulers.color","Color of this editor ruler."),format:"color-hex"}}}]},default:e,description:l.NC("rulers","Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.")})}validate(e){if(Array.isArray(e)){const t=[];for(const i of e)if("number"===typeof i)t.push({column:C.clampedInt(i,0,0,1e4),color:null});else if(i&&"object"===typeof i){const e=i;t.push({column:C.clampedInt(e.column,0,0,1e4),color:e.color})}return t.sort(((e,t)=>e.column-t.column)),t}return this.defaultValue}}),scrollbar:V(new class extends u{constructor(){const e={vertical:1,horizontal:1,arrowSize:11,useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,horizontalScrollbarSize:12,horizontalSliderSize:12,verticalScrollbarSize:14,verticalSliderSize:14,handleMouseWheel:!0,alwaysConsumeMouseWheel:!0,scrollByPage:!1,ignoreHorizontalScrollbarInContentHeight:!1};super(103,"scrollbar",e,{"editor.scrollbar.vertical":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[l.NC("scrollbar.vertical.auto","The vertical scrollbar will be visible only when necessary."),l.NC("scrollbar.vertical.visible","The vertical scrollbar will always be visible."),l.NC("scrollbar.vertical.fit","The vertical scrollbar will always be hidden.")],default:"auto",description:l.NC("scrollbar.vertical","Controls the visibility of the vertical scrollbar.")},"editor.scrollbar.horizontal":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[l.NC("scrollbar.horizontal.auto","The horizontal scrollbar will be visible only when necessary."),l.NC("scrollbar.horizontal.visible","The horizontal scrollbar will always be visible."),l.NC("scrollbar.horizontal.fit","The horizontal scrollbar will always be hidden.")],default:"auto",description:l.NC("scrollbar.horizontal","Controls the visibility of the horizontal scrollbar.")},"editor.scrollbar.verticalScrollbarSize":{type:"number",default:e.verticalScrollbarSize,description:l.NC("scrollbar.verticalScrollbarSize","The width of the vertical scrollbar.")},"editor.scrollbar.horizontalScrollbarSize":{type:"number",default:e.horizontalScrollbarSize,description:l.NC("scrollbar.horizontalScrollbarSize","The height of the horizontal scrollbar.")},"editor.scrollbar.scrollByPage":{type:"boolean",default:e.scrollByPage,description:l.NC("scrollbar.scrollByPage","Controls whether clicks scroll by page or jump to click position.")},"editor.scrollbar.ignoreHorizontalScrollbarInContentHeight":{type:"boolean",default:e.ignoreHorizontalScrollbarInContentHeight,description:l.NC("scrollbar.ignoreHorizontalScrollbarInContentHeight","When set, the horizontal scrollbar will not increase the size of the editor's content.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e,i=C.clampedInt(t.horizontalScrollbarSize,this.defaultValue.horizontalScrollbarSize,0,1e3),n=C.clampedInt(t.verticalScrollbarSize,this.defaultValue.verticalScrollbarSize,0,1e3);return{arrowSize:C.clampedInt(t.arrowSize,this.defaultValue.arrowSize,0,1e3),vertical:R(t.vertical,this.defaultValue.vertical),horizontal:R(t.horizontal,this.defaultValue.horizontal),useShadows:_(t.useShadows,this.defaultValue.useShadows),verticalHasArrows:_(t.verticalHasArrows,this.defaultValue.verticalHasArrows),horizontalHasArrows:_(t.horizontalHasArrows,this.defaultValue.horizontalHasArrows),handleMouseWheel:_(t.handleMouseWheel,this.defaultValue.handleMouseWheel),alwaysConsumeMouseWheel:_(t.alwaysConsumeMouseWheel,this.defaultValue.alwaysConsumeMouseWheel),horizontalScrollbarSize:i,horizontalSliderSize:C.clampedInt(t.horizontalSliderSize,i,0,1e3),verticalScrollbarSize:n,verticalSliderSize:C.clampedInt(t.verticalSliderSize,n,0,1e3),scrollByPage:_(t.scrollByPage,this.defaultValue.scrollByPage),ignoreHorizontalScrollbarInContentHeight:_(t.ignoreHorizontalScrollbarInContentHeight,this.defaultValue.ignoreHorizontalScrollbarInContentHeight)}}}),scrollBeyondLastColumn:V(new C(104,"scrollBeyondLastColumn",4,0,1073741824,{description:l.NC("scrollBeyondLastColumn","Controls the number of extra characters beyond which the editor will scroll horizontally.")})),scrollBeyondLastLine:V(new v(105,"scrollBeyondLastLine",!0,{description:l.NC("scrollBeyondLastLine","Controls whether the editor will scroll beyond the last line.")})),scrollPredominantAxis:V(new v(106,"scrollPredominantAxis",!0,{description:l.NC("scrollPredominantAxis","Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.")})),selectionClipboard:V(new v(107,"selectionClipboard",!0,{description:l.NC("selectionClipboard","Controls whether the Linux primary clipboard should be supported."),included:s.IJ})),selectionHighlight:V(new v(108,"selectionHighlight",!0,{description:l.NC("selectionHighlight","Controls whether the editor should highlight matches similar to the selection.")})),selectOnLineNumbers:V(new v(109,"selectOnLineNumbers",!0)),showFoldingControls:V(new k(110,"showFoldingControls","mouseover",["always","never","mouseover"],{enumDescriptions:[l.NC("showFoldingControls.always","Always show the folding controls."),l.NC("showFoldingControls.never","Never show the folding controls and reduce the gutter size."),l.NC("showFoldingControls.mouseover","Only show the folding controls when the mouse is over the gutter.")],description:l.NC("showFoldingControls","Controls when the folding controls on the gutter are shown.")})),showUnused:V(new v(111,"showUnused",!0,{description:l.NC("showUnused","Controls fading out of unused code.")})),showDeprecated:V(new v(140,"showDeprecated",!0,{description:l.NC("showDeprecated","Controls strikethrough deprecated variables.")})),inlayHints:V(new class extends u{constructor(){const e={enabled:"on",fontSize:0,fontFamily:"",padding:!1};super(141,"inlayHints",e,{"editor.inlayHints.enabled":{type:"string",default:e.enabled,description:l.NC("inlayHints.enable","Enables the inlay hints in the editor."),enum:["on","onUnlessPressed","offUnlessPressed","off"],markdownEnumDescriptions:[l.NC("editor.inlayHints.on","Inlay hints are enabled"),l.NC("editor.inlayHints.onUnlessPressed","Inlay hints are showing by default and hide when holding {0}",s.dz?"Ctrl+Option":"Ctrl+Alt"),l.NC("editor.inlayHints.offUnlessPressed","Inlay hints are hidden by default and show when holding {0}",s.dz?"Ctrl+Option":"Ctrl+Alt"),l.NC("editor.inlayHints.off","Inlay hints are disabled")]},"editor.inlayHints.fontSize":{type:"number",default:e.fontSize,markdownDescription:l.NC("inlayHints.fontSize","Controls font size of inlay hints in the editor. As default the {0} is used when the configured value is less than {1} or greater than the editor font size.","`#editor.fontSize#`","`5`")},"editor.inlayHints.fontFamily":{type:"string",default:e.fontFamily,markdownDescription:l.NC("inlayHints.fontFamily","Controls font family of inlay hints in the editor. When set to empty, the {0} is used.","`#editor.fontFamily#`")},"editor.inlayHints.padding":{type:"boolean",default:e.padding,description:l.NC("inlayHints.padding","Enables the padding around the inlay hints in the editor.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return"boolean"===typeof t.enabled&&(t.enabled=t.enabled?"on":"off"),{enabled:L(t.enabled,this.defaultValue.enabled,["on","off","offUnlessPressed","onUnlessPressed"]),fontSize:C.clampedInt(t.fontSize,this.defaultValue.fontSize,0,100),fontFamily:S.string(t.fontFamily,this.defaultValue.fontFamily),padding:_(t.padding,this.defaultValue.padding)}}}),snippetSuggestions:V(new k(112,"snippetSuggestions","inline",["top","bottom","inline","none"],{enumDescriptions:[l.NC("snippetSuggestions.top","Show snippet suggestions on top of other suggestions."),l.NC("snippetSuggestions.bottom","Show snippet suggestions below other suggestions."),l.NC("snippetSuggestions.inline","Show snippets suggestions with other suggestions."),l.NC("snippetSuggestions.none","Do not show snippet suggestions.")],description:l.NC("snippetSuggestions","Controls whether snippets are shown with other suggestions and how they are sorted.")})),smartSelect:V(new class extends u{constructor(){super(113,"smartSelect",{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},{"editor.smartSelect.selectLeadingAndTrailingWhitespace":{description:l.NC("selectLeadingAndTrailingWhitespace","Whether leading and trailing whitespace should always be selected."),default:!0,type:"boolean"},"editor.smartSelect.selectSubwords":{description:l.NC("selectSubwords","Whether subwords (like 'foo' in 'fooBar' or 'foo_bar') should be selected."),default:!0,type:"boolean"}})}validate(e){return e&&"object"===typeof e?{selectLeadingAndTrailingWhitespace:_(e.selectLeadingAndTrailingWhitespace,this.defaultValue.selectLeadingAndTrailingWhitespace),selectSubwords:_(e.selectSubwords,this.defaultValue.selectSubwords)}:this.defaultValue}}),smoothScrolling:V(new v(114,"smoothScrolling",!1,{description:l.NC("smoothScrolling","Controls whether the editor will scroll using an animation.")})),stopRenderingLineAfter:V(new C(117,"stopRenderingLineAfter",1e4,-1,1073741824)),suggest:V(new class extends u{constructor(){const e={insertMode:"insert",filterGraceful:!0,snippetsPreventQuickSuggestions:!1,localityBonus:!1,shareSuggestSelections:!1,selectionMode:"always",showIcons:!0,showStatusBar:!1,preview:!1,previewMode:"subwordSmart",showInlineDetails:!0,showMethods:!0,showFunctions:!0,showConstructors:!0,showDeprecated:!0,matchOnWordStartOnly:!0,showFields:!0,showVariables:!0,showClasses:!0,showStructs:!0,showInterfaces:!0,showModules:!0,showProperties:!0,showEvents:!0,showOperators:!0,showUnits:!0,showValues:!0,showConstants:!0,showEnums:!0,showEnumMembers:!0,showKeywords:!0,showWords:!0,showColors:!0,showFiles:!0,showReferences:!0,showFolders:!0,showTypeParameters:!0,showSnippets:!0,showUsers:!0,showIssues:!0};super(118,"suggest",e,{"editor.suggest.insertMode":{type:"string",enum:["insert","replace"],enumDescriptions:[l.NC("suggest.insertMode.insert","Insert suggestion without overwriting text right of the cursor."),l.NC("suggest.insertMode.replace","Insert suggestion and overwrite text right of the cursor.")],default:e.insertMode,description:l.NC("suggest.insertMode","Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.")},"editor.suggest.filterGraceful":{type:"boolean",default:e.filterGraceful,description:l.NC("suggest.filterGraceful","Controls whether filtering and sorting suggestions accounts for small typos.")},"editor.suggest.localityBonus":{type:"boolean",default:e.localityBonus,description:l.NC("suggest.localityBonus","Controls whether sorting favors words that appear close to the cursor.")},"editor.suggest.shareSuggestSelections":{type:"boolean",default:e.shareSuggestSelections,markdownDescription:l.NC("suggest.shareSuggestSelections","Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).")},"editor.suggest.selectionMode":{type:"string",enum:["always","never","whenTriggerCharacter","whenQuickSuggestion"],enumDescriptions:[l.NC("suggest.insertMode.always","Always select a suggestion when automatically triggering IntelliSense."),l.NC("suggest.insertMode.never","Never select a suggestion when automatically triggering IntelliSense."),l.NC("suggest.insertMode.whenTriggerCharacter","Select a suggestion only when triggering IntelliSense from a trigger character."),l.NC("suggest.insertMode.whenQuickSuggestion","Select a suggestion only when triggering IntelliSense as you type.")],default:e.selectionMode,markdownDescription:l.NC("suggest.selectionMode","Controls whether a suggestion is selected when the widget shows. Note that this only applies to automatically triggered suggestions (`#editor.quickSuggestions#` and `#editor.suggestOnTriggerCharacters#`) and that a suggestion is always selected when explicitly invoked, e.g via `Ctrl+Space`.")},"editor.suggest.snippetsPreventQuickSuggestions":{type:"boolean",default:e.snippetsPreventQuickSuggestions,description:l.NC("suggest.snippetsPreventQuickSuggestions","Controls whether an active snippet prevents quick suggestions.")},"editor.suggest.showIcons":{type:"boolean",default:e.showIcons,description:l.NC("suggest.showIcons","Controls whether to show or hide icons in suggestions.")},"editor.suggest.showStatusBar":{type:"boolean",default:e.showStatusBar,description:l.NC("suggest.showStatusBar","Controls the visibility of the status bar at the bottom of the suggest widget.")},"editor.suggest.preview":{type:"boolean",default:e.preview,description:l.NC("suggest.preview","Controls whether to preview the suggestion outcome in the editor.")},"editor.suggest.showInlineDetails":{type:"boolean",default:e.showInlineDetails,description:l.NC("suggest.showInlineDetails","Controls whether suggest details show inline with the label or only in the details widget.")},"editor.suggest.maxVisibleSuggestions":{type:"number",deprecationMessage:l.NC("suggest.maxVisibleSuggestions.dep","This setting is deprecated. The suggest widget can now be resized.")},"editor.suggest.filteredTypes":{type:"object",deprecationMessage:l.NC("deprecated","This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.")},"editor.suggest.showMethods":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showMethods","When enabled IntelliSense shows `method`-suggestions.")},"editor.suggest.showFunctions":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showFunctions","When enabled IntelliSense shows `function`-suggestions.")},"editor.suggest.showConstructors":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showConstructors","When enabled IntelliSense shows `constructor`-suggestions.")},"editor.suggest.showDeprecated":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showDeprecated","When enabled IntelliSense shows `deprecated`-suggestions.")},"editor.suggest.matchOnWordStartOnly":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.matchOnWordStartOnly","When enabled IntelliSense filtering requires that the first character matches on a word start. For example, `c` on `Console` or `WebContext` but _not_ on `description`. When disabled IntelliSense will show more results but still sorts them by match quality.")},"editor.suggest.showFields":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showFields","When enabled IntelliSense shows `field`-suggestions.")},"editor.suggest.showVariables":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showVariables","When enabled IntelliSense shows `variable`-suggestions.")},"editor.suggest.showClasses":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showClasss","When enabled IntelliSense shows `class`-suggestions.")},"editor.suggest.showStructs":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showStructs","When enabled IntelliSense shows `struct`-suggestions.")},"editor.suggest.showInterfaces":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showInterfaces","When enabled IntelliSense shows `interface`-suggestions.")},"editor.suggest.showModules":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showModules","When enabled IntelliSense shows `module`-suggestions.")},"editor.suggest.showProperties":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showPropertys","When enabled IntelliSense shows `property`-suggestions.")},"editor.suggest.showEvents":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showEvents","When enabled IntelliSense shows `event`-suggestions.")},"editor.suggest.showOperators":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showOperators","When enabled IntelliSense shows `operator`-suggestions.")},"editor.suggest.showUnits":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showUnits","When enabled IntelliSense shows `unit`-suggestions.")},"editor.suggest.showValues":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showValues","When enabled IntelliSense shows `value`-suggestions.")},"editor.suggest.showConstants":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showConstants","When enabled IntelliSense shows `constant`-suggestions.")},"editor.suggest.showEnums":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showEnums","When enabled IntelliSense shows `enum`-suggestions.")},"editor.suggest.showEnumMembers":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showEnumMembers","When enabled IntelliSense shows `enumMember`-suggestions.")},"editor.suggest.showKeywords":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showKeywords","When enabled IntelliSense shows `keyword`-suggestions.")},"editor.suggest.showWords":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showTexts","When enabled IntelliSense shows `text`-suggestions.")},"editor.suggest.showColors":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showColors","When enabled IntelliSense shows `color`-suggestions.")},"editor.suggest.showFiles":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showFiles","When enabled IntelliSense shows `file`-suggestions.")},"editor.suggest.showReferences":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showReferences","When enabled IntelliSense shows `reference`-suggestions.")},"editor.suggest.showCustomcolors":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showCustomcolors","When enabled IntelliSense shows `customcolor`-suggestions.")},"editor.suggest.showFolders":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showFolders","When enabled IntelliSense shows `folder`-suggestions.")},"editor.suggest.showTypeParameters":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showTypeParameters","When enabled IntelliSense shows `typeParameter`-suggestions.")},"editor.suggest.showSnippets":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showSnippets","When enabled IntelliSense shows `snippet`-suggestions.")},"editor.suggest.showUsers":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showUsers","When enabled IntelliSense shows `user`-suggestions.")},"editor.suggest.showIssues":{type:"boolean",default:!0,markdownDescription:l.NC("editor.suggest.showIssues","When enabled IntelliSense shows `issues`-suggestions.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{insertMode:L(t.insertMode,this.defaultValue.insertMode,["insert","replace"]),filterGraceful:_(t.filterGraceful,this.defaultValue.filterGraceful),snippetsPreventQuickSuggestions:_(t.snippetsPreventQuickSuggestions,this.defaultValue.filterGraceful),localityBonus:_(t.localityBonus,this.defaultValue.localityBonus),shareSuggestSelections:_(t.shareSuggestSelections,this.defaultValue.shareSuggestSelections),selectionMode:L(t.selectionMode,this.defaultValue.selectionMode,["always","never","whenQuickSuggestion","whenTriggerCharacter"]),showIcons:_(t.showIcons,this.defaultValue.showIcons),showStatusBar:_(t.showStatusBar,this.defaultValue.showStatusBar),preview:_(t.preview,this.defaultValue.preview),previewMode:L(t.previewMode,this.defaultValue.previewMode,["prefix","subword","subwordSmart"]),showInlineDetails:_(t.showInlineDetails,this.defaultValue.showInlineDetails),showMethods:_(t.showMethods,this.defaultValue.showMethods),showFunctions:_(t.showFunctions,this.defaultValue.showFunctions),showConstructors:_(t.showConstructors,this.defaultValue.showConstructors),showDeprecated:_(t.showDeprecated,this.defaultValue.showDeprecated),matchOnWordStartOnly:_(t.matchOnWordStartOnly,this.defaultValue.matchOnWordStartOnly),showFields:_(t.showFields,this.defaultValue.showFields),showVariables:_(t.showVariables,this.defaultValue.showVariables),showClasses:_(t.showClasses,this.defaultValue.showClasses),showStructs:_(t.showStructs,this.defaultValue.showStructs),showInterfaces:_(t.showInterfaces,this.defaultValue.showInterfaces),showModules:_(t.showModules,this.defaultValue.showModules),showProperties:_(t.showProperties,this.defaultValue.showProperties),showEvents:_(t.showEvents,this.defaultValue.showEvents),showOperators:_(t.showOperators,this.defaultValue.showOperators),showUnits:_(t.showUnits,this.defaultValue.showUnits),showValues:_(t.showValues,this.defaultValue.showValues),showConstants:_(t.showConstants,this.defaultValue.showConstants),showEnums:_(t.showEnums,this.defaultValue.showEnums),showEnumMembers:_(t.showEnumMembers,this.defaultValue.showEnumMembers),showKeywords:_(t.showKeywords,this.defaultValue.showKeywords),showWords:_(t.showWords,this.defaultValue.showWords),showColors:_(t.showColors,this.defaultValue.showColors),showFiles:_(t.showFiles,this.defaultValue.showFiles),showReferences:_(t.showReferences,this.defaultValue.showReferences),showFolders:_(t.showFolders,this.defaultValue.showFolders),showTypeParameters:_(t.showTypeParameters,this.defaultValue.showTypeParameters),showSnippets:_(t.showSnippets,this.defaultValue.showSnippets),showUsers:_(t.showUsers,this.defaultValue.showUsers),showIssues:_(t.showIssues,this.defaultValue.showIssues)}}}),inlineSuggest:V(new class extends u{constructor(){const e={enabled:!0,mode:"subwordSmart",showToolbar:"onHover",suppressSuggestions:!1,keepOnBlur:!1,fontFamily:"default"};super(62,"inlineSuggest",e,{"editor.inlineSuggest.enabled":{type:"boolean",default:e.enabled,description:l.NC("inlineSuggest.enabled","Controls whether to automatically show inline suggestions in the editor.")},"editor.inlineSuggest.showToolbar":{type:"string",default:e.showToolbar,enum:["always","onHover","never"],enumDescriptions:[l.NC("inlineSuggest.showToolbar.always","Show the inline suggestion toolbar whenever an inline suggestion is shown."),l.NC("inlineSuggest.showToolbar.onHover","Show the inline suggestion toolbar when hovering over an inline suggestion."),l.NC("inlineSuggest.showToolbar.never","Never show the inline suggestion toolbar.")],description:l.NC("inlineSuggest.showToolbar","Controls when to show the inline suggestion toolbar.")},"editor.inlineSuggest.suppressSuggestions":{type:"boolean",default:e.suppressSuggestions,description:l.NC("inlineSuggest.suppressSuggestions","Controls how inline suggestions interact with the suggest widget. If enabled, the suggest widget is not shown automatically when inline suggestions are available.")},"editor.inlineSuggest.fontFamily":{type:"string",default:e.fontFamily,description:l.NC("inlineSuggest.fontFamily","Controls the font family of the inline suggestions.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),mode:L(t.mode,this.defaultValue.mode,["prefix","subword","subwordSmart"]),showToolbar:L(t.showToolbar,this.defaultValue.showToolbar,["always","onHover","never"]),suppressSuggestions:_(t.suppressSuggestions,this.defaultValue.suppressSuggestions),keepOnBlur:_(t.keepOnBlur,this.defaultValue.keepOnBlur),fontFamily:S.string(t.fontFamily,this.defaultValue.fontFamily)}}}),inlineEdit:V(new class extends u{constructor(){const e={enabled:!1,showToolbar:"onHover",fontFamily:"default",keepOnBlur:!1,backgroundColoring:!1};super(63,"experimentalInlineEdit",e,{"editor.experimentalInlineEdit.enabled":{type:"boolean",default:e.enabled,description:l.NC("inlineEdit.enabled","Controls whether to show inline edits in the editor.")},"editor.experimentalInlineEdit.showToolbar":{type:"string",default:e.showToolbar,enum:["always","onHover","never"],enumDescriptions:[l.NC("inlineEdit.showToolbar.always","Show the inline edit toolbar whenever an inline suggestion is shown."),l.NC("inlineEdit.showToolbar.onHover","Show the inline edit toolbar when hovering over an inline suggestion."),l.NC("inlineEdit.showToolbar.never","Never show the inline edit toolbar.")],description:l.NC("inlineEdit.showToolbar","Controls when to show the inline edit toolbar.")},"editor.experimentalInlineEdit.fontFamily":{type:"string",default:e.fontFamily,description:l.NC("inlineEdit.fontFamily","Controls the font family of the inline edit.")},"editor.experimentalInlineEdit.backgroundColoring":{type:"boolean",default:e.backgroundColoring,description:l.NC("inlineEdit.backgroundColoring","Controls whether to color the background of inline edits.")}})}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),showToolbar:L(t.showToolbar,this.defaultValue.showToolbar,["always","onHover","never"]),fontFamily:S.string(t.fontFamily,this.defaultValue.fontFamily),keepOnBlur:_(t.keepOnBlur,this.defaultValue.keepOnBlur),backgroundColoring:_(t.backgroundColoring,this.defaultValue.backgroundColoring)}}}),inlineCompletionsAccessibilityVerbose:V(new v(149,"inlineCompletionsAccessibilityVerbose",!1,{description:l.NC("inlineCompletionsAccessibilityVerbose","Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.")})),suggestFontSize:V(new C(119,"suggestFontSize",0,0,1e3,{markdownDescription:l.NC("suggestFontSize","Font size for the suggest widget. When set to {0}, the value of {1} is used.","`0`","`#editor.fontSize#`")})),suggestLineHeight:V(new C(120,"suggestLineHeight",0,0,1e3,{markdownDescription:l.NC("suggestLineHeight","Line height for the suggest widget. When set to {0}, the value of {1} is used. The minimum value is 8.","`0`","`#editor.lineHeight#`")})),suggestOnTriggerCharacters:V(new v(121,"suggestOnTriggerCharacters",!0,{description:l.NC("suggestOnTriggerCharacters","Controls whether suggestions should automatically show up when typing trigger characters.")})),suggestSelection:V(new k(122,"suggestSelection","first",["first","recentlyUsed","recentlyUsedByPrefix"],{markdownEnumDescriptions:[l.NC("suggestSelection.first","Always select the first suggestion."),l.NC("suggestSelection.recentlyUsed","Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently."),l.NC("suggestSelection.recentlyUsedByPrefix","Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.")],description:l.NC("suggestSelection","Controls how suggestions are pre-selected when showing the suggest list.")})),tabCompletion:V(new k(123,"tabCompletion","off",["on","off","onlySnippets"],{enumDescriptions:[l.NC("tabCompletion.on","Tab complete will insert the best matching suggestion when pressing tab."),l.NC("tabCompletion.off","Disable tab completions."),l.NC("tabCompletion.onlySnippets","Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.")],description:l.NC("tabCompletion","Enables tab completions.")})),tabIndex:V(new C(124,"tabIndex",0,-1,1073741824)),unicodeHighlight:V(new class extends u{constructor(){const e={nonBasicASCII:O,invisibleCharacters:!0,ambiguousCharacters:!0,includeComments:O,includeStrings:!0,allowedCharacters:{},allowedLocales:{_os:!0,_vscode:!0}};super(125,"unicodeHighlight",e,{[P.nonBasicASCII]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,O],default:e.nonBasicASCII,description:l.NC("unicodeHighlight.nonBasicASCII","Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.")},[P.invisibleCharacters]:{restricted:!0,type:"boolean",default:e.invisibleCharacters,description:l.NC("unicodeHighlight.invisibleCharacters","Controls whether characters that just reserve space or have no width at all are highlighted.")},[P.ambiguousCharacters]:{restricted:!0,type:"boolean",default:e.ambiguousCharacters,description:l.NC("unicodeHighlight.ambiguousCharacters","Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.")},[P.includeComments]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,O],default:e.includeComments,description:l.NC("unicodeHighlight.includeComments","Controls whether characters in comments should also be subject to Unicode highlighting.")},[P.includeStrings]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,O],default:e.includeStrings,description:l.NC("unicodeHighlight.includeStrings","Controls whether characters in strings should also be subject to Unicode highlighting.")},[P.allowedCharacters]:{restricted:!0,type:"object",default:e.allowedCharacters,description:l.NC("unicodeHighlight.allowedCharacters","Defines allowed characters that are not being highlighted."),additionalProperties:{type:"boolean"}},[P.allowedLocales]:{restricted:!0,type:"object",additionalProperties:{type:"boolean"},default:e.allowedLocales,description:l.NC("unicodeHighlight.allowedLocales","Unicode characters that are common in allowed locales are not being highlighted.")}})}applyUpdate(e,t){let i=!1;t.allowedCharacters&&e&&(o.fS(e.allowedCharacters,t.allowedCharacters)||(e={...e,allowedCharacters:t.allowedCharacters},i=!0)),t.allowedLocales&&e&&(o.fS(e.allowedLocales,t.allowedLocales)||(e={...e,allowedLocales:t.allowedLocales},i=!0));const n=super.applyUpdate(e,t);return i?new g(n.newValue,!0):n}validate(e){if(!e||"object"!==typeof e)return this.defaultValue;const t=e;return{nonBasicASCII:F(t.nonBasicASCII,O,[!0,!1,O]),invisibleCharacters:_(t.invisibleCharacters,this.defaultValue.invisibleCharacters),ambiguousCharacters:_(t.ambiguousCharacters,this.defaultValue.ambiguousCharacters),includeComments:F(t.includeComments,O,[!0,!1,O]),includeStrings:F(t.includeStrings,O,[!0,!1,O]),allowedCharacters:this.validateBooleanMap(e.allowedCharacters,this.defaultValue.allowedCharacters),allowedLocales:this.validateBooleanMap(e.allowedLocales,this.defaultValue.allowedLocales)}}validateBooleanMap(e,t){if("object"!==typeof e||!e)return t;const i={};for(const[n,o]of Object.entries(e))!0===o&&(i[n]=!0);return i}}),unusualLineTerminators:V(new k(126,"unusualLineTerminators","prompt",["auto","off","prompt"],{enumDescriptions:[l.NC("unusualLineTerminators.auto","Unusual line terminators are automatically removed."),l.NC("unusualLineTerminators.off","Unusual line terminators are ignored."),l.NC("unusualLineTerminators.prompt","Unusual line terminators prompt to be removed.")],description:l.NC("unusualLineTerminators","Remove unusual line terminators that might cause problems.")})),useShadowDOM:V(new v(127,"useShadowDOM",!0)),useTabStops:V(new v(128,"useTabStops",!0,{description:l.NC("useTabStops","Spaces and tabs are inserted and deleted in alignment with tab stops.")})),wordBreak:V(new k(129,"wordBreak","normal",["normal","keepAll"],{markdownEnumDescriptions:[l.NC("wordBreak.normal","Use the default line break rule."),l.NC("wordBreak.keepAll","Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.")],description:l.NC("wordBreak","Controls the word break rules used for Chinese/Japanese/Korean (CJK) text.")})),wordSegmenterLocales:V(new class extends u{constructor(){super(130,"wordSegmenterLocales",[],{anyOf:[{description:l.NC("wordSegmenterLocales","Locales to be used for word segmentation when doing word related navigations or operations. Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.)."),type:"string"},{description:l.NC("wordSegmenterLocales","Locales to be used for word segmentation when doing word related navigations or operations. Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.)."),type:"array",items:{type:"string"}}]})}validate(e){if("string"===typeof e&&(e=[e]),Array.isArray(e)){const i=[];for(const n of e)if("string"===typeof n)try{Intl.Segmenter.supportedLocalesOf(n).length>0&&i.push(n)}catch(t){}return i}return this.defaultValue}}),wordSeparators:V(new S(131,"wordSeparators",a.vu,{description:l.NC("wordSeparators","Characters that will be used as word separators when doing word related navigations or operations.")})),wordWrap:V(new k(132,"wordWrap","off",["off","on","wordWrapColumn","bounded"],{markdownEnumDescriptions:[l.NC("wordWrap.off","Lines will never wrap."),l.NC("wordWrap.on","Lines will wrap at the viewport width."),l.NC({key:"wordWrap.wordWrapColumn",comment:["- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at `#editor.wordWrapColumn#`."),l.NC({key:"wordWrap.bounded",comment:["- viewport means the edge of the visible window size.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.")],description:l.NC({key:"wordWrap",comment:["- 'off', 'on', 'wordWrapColumn' and 'bounded' refer to values the setting can take and should not be localized.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Controls how lines should wrap.")})),wordWrapBreakAfterCharacters:V(new S(133,"wordWrapBreakAfterCharacters"," \t})]?|/&.,;\xa2\xb0\u2032\u2033\u2030\u2103\u3001\u3002\uff61\uff64\uffe0\uff0c\uff0e\uff1a\uff1b\uff1f\uff01\uff05\u30fb\uff65\u309d\u309e\u30fd\u30fe\u30fc\u30a1\u30a3\u30a5\u30a7\u30a9\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u3041\u3043\u3045\u3047\u3049\u3063\u3083\u3085\u3087\u308e\u3095\u3096\u31f0\u31f1\u31f2\u31f3\u31f4\u31f5\u31f6\u31f7\u31f8\u31f9\u31fa\u31fb\u31fc\u31fd\u31fe\u31ff\u3005\u303b\uff67\uff68\uff69\uff6a\uff6b\uff6c\uff6d\uff6e\uff6f\uff70\u201d\u3009\u300b\u300d\u300f\u3011\u3015\uff09\uff3d\uff5d\uff63")),wordWrapBreakBeforeCharacters:V(new S(134,"wordWrapBreakBeforeCharacters","([{\u2018\u201c\u3008\u300a\u300c\u300e\u3010\u3014\uff08\uff3b\uff5b\uff62\xa3\xa5\uff04\uffe1\uffe5+\uff0b")),wordWrapColumn:V(new C(135,"wordWrapColumn",80,1,1073741824,{markdownDescription:l.NC({key:"wordWrapColumn",comment:["- `editor.wordWrap` refers to a different setting and should not be localized.","- 'wordWrapColumn' and 'bounded' refer to values the different setting can take and should not be localized."]},"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.")})),wordWrapOverride1:V(new k(136,"wordWrapOverride1","inherit",["off","on","inherit"])),wordWrapOverride2:V(new k(137,"wordWrapOverride2","inherit",["off","on","inherit"])),editorClassName:V(new class extends f{constructor(){super(142)}compute(e,t,i){const n=["monaco-editor"];return t.get(39)&&n.push(t.get(39)),e.extraEditorClassName&&n.push(e.extraEditorClassName),"default"===t.get(74)?n.push("mouse-default"):"copy"===t.get(74)&&n.push("mouse-copy"),t.get(111)&&n.push("showUnused"),t.get(140)&&n.push("showDeprecated"),n.join(" ")}}),defaultColorDecorators:V(new v(147,"defaultColorDecorators",!1,{markdownDescription:l.NC("defaultColorDecorators","Controls whether inline color decorations should be shown using the default document color provider")})),pixelRatio:V(new class extends f{constructor(){super(143)}compute(e,t,i){return e.pixelRatio}}),tabFocusMode:V(new v(144,"tabFocusMode",!1,{markdownDescription:l.NC("tabFocusMode","Controls whether the editor receives tabs or defers them to the workbench for navigation.")})),layoutInfo:V(new M),wrappingInfo:V(new class extends f{constructor(){super(146)}compute(e,t,i){const n=t.get(145);return{isDominatedByLongLines:e.isDominatedByLongLines,isWordWrapMinified:n.isWordWrapMinified,isViewportWrapping:n.isViewportWrapping,wrappingColumn:n.wrappingColumn}}}),wrappingIndent:V(new class extends u{constructor(){super(138,"wrappingIndent",1,{"editor.wrappingIndent":{type:"string",enum:["none","same","indent","deepIndent"],enumDescriptions:[l.NC("wrappingIndent.none","No indentation. Wrapped lines begin at column 1."),l.NC("wrappingIndent.same","Wrapped lines get the same indentation as the parent."),l.NC("wrappingIndent.indent","Wrapped lines get +1 indentation toward the parent."),l.NC("wrappingIndent.deepIndent","Wrapped lines get +2 indentation toward the parent.")],description:l.NC("wrappingIndent","Controls the indentation of wrapped lines."),default:"same"}})}validate(e){switch(e){case"none":return 0;case"same":return 1;case"indent":return 2;case"deepIndent":return 3}return 1}compute(e,t,i){return 2===t.get(2)?0:i}}),wrappingStrategy:V(new class extends u{constructor(){super(139,"wrappingStrategy","simple",{"editor.wrappingStrategy":{enumDescriptions:[l.NC("wrappingStrategy.simple","Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width."),l.NC("wrappingStrategy.advanced","Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.")],type:"string",enum:["simple","advanced"],default:"simple",description:l.NC("wrappingStrategy","Controls the algorithm that computes wrapping points. Note that when in accessibility mode, advanced will be used for the best experience.")}})}validate(e){return L(e,"simple",["simple","advanced"])}compute(e,t,i){return 2===t.get(2)?"advanced":i}})}},15804:(e,t,i)=>{i.d(t,{C:()=>o});var n=i(24219);const o=new class{constructor(){this._zoomLevel=0,this._onDidChangeZoomLevel=new n.Q5,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event}getZoomLevel(){return this._zoomLevel}setZoomLevel(e){e=Math.min(Math.max(-5,e),20),this._zoomLevel!==e&&(this._zoomLevel=e,this._onDidChangeZoomLevel.fire(this._zoomLevel))}}},64864:(e,t,i)=>{i.d(t,{E4:()=>a,pR:()=>l});var n=i(21511),o=i(38092),s=i(15804);const r=n.dz?1.5:1.35;class a{static createFromValidatedSettings(e,t,i){const n=e.get(49),o=e.get(53),s=e.get(52),r=e.get(51),l=e.get(54),h=e.get(67),d=e.get(64);return a._create(n,o,s,r,l,h,d,t,i)}static _create(e,t,i,n,l,h,d,c,u){0===h?h=r*i:h<8&&(h*=i),(h=Math.round(h))<8&&(h=8);const g=1+(u?0:.1*s.C.getZoomLevel());if(i*=g,h*=g,l===o.Bo.TRANSLATE)if("normal"===t||"bold"===t)l=o.Bo.OFF;else{const e=parseInt(t,10);l="'wght' ".concat(e),t="normal"}return new a({pixelRatio:c,fontFamily:e,fontWeight:t,fontSize:i,fontFeatureSettings:n,fontVariationSettings:l,lineHeight:h,letterSpacing:d})}constructor(e){this._bareFontInfoBrand=void 0,this.pixelRatio=e.pixelRatio,this.fontFamily=String(e.fontFamily),this.fontWeight=String(e.fontWeight),this.fontSize=e.fontSize,this.fontFeatureSettings=e.fontFeatureSettings,this.fontVariationSettings=e.fontVariationSettings,this.lineHeight=0|e.lineHeight,this.letterSpacing=e.letterSpacing}getId(){return"".concat(this.pixelRatio,"-").concat(this.fontFamily,"-").concat(this.fontWeight,"-").concat(this.fontSize,"-").concat(this.fontFeatureSettings,"-").concat(this.fontVariationSettings,"-").concat(this.lineHeight,"-").concat(this.letterSpacing)}getMassagedFontFamily(){const e=o.hL.fontFamily,t=a._wrapInQuotes(this.fontFamily);return e&&this.fontFamily!==e?"".concat(t,", ").concat(e):t}static _wrapInQuotes(e){return/[,"']/.test(e)?e:/[+ ]/.test(e)?'"'.concat(e,'"'):e}}class l extends a{constructor(e,t){super(e),this._editorStylingBrand=void 0,this.version=2,this.isTrusted=t,this.isMonospace=e.isMonospace,this.typicalHalfwidthCharacterWidth=e.typicalHalfwidthCharacterWidth,this.typicalFullwidthCharacterWidth=e.typicalFullwidthCharacterWidth,this.canUseHalfwidthRightwardsArrow=e.canUseHalfwidthRightwardsArrow,this.spaceWidth=e.spaceWidth,this.middotWidth=e.middotWidth,this.wsmiddotWidth=e.wsmiddotWidth,this.maxDigitWidth=e.maxDigitWidth}equals(e){return this.fontFamily===e.fontFamily&&this.fontWeight===e.fontWeight&&this.fontSize===e.fontSize&&this.fontFeatureSettings===e.fontFeatureSettings&&this.fontVariationSettings===e.fontVariationSettings&&this.lineHeight===e.lineHeight&&this.letterSpacing===e.letterSpacing&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.typicalFullwidthCharacterWidth===e.typicalFullwidthCharacterWidth&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.maxDigitWidth===e.maxDigitWidth}}},89505:(e,t,i)=>{i.d(t,{N:()=>o,q:()=>s});var n=i(44918);class o{constructor(e){const t=(0,n.K)(e);this._defaultValue=t,this._asciiMap=o._createAsciiMap(t),this._map=new Map}static _createAsciiMap(e){const t=new Uint8Array(256);return t.fill(e),t}set(e,t){const i=(0,n.K)(t);e>=0&&e<256?this._asciiMap[e]=i:this._map.set(e,i)}get(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}class s{constructor(){this._actual=new o(0)}add(e){this._actual.set(e,1)}has(e){return 1===this._actual.get(e)}clear(){return this._actual.clear()}}},5255:(e,t,i)=>{i.d(t,{i:()=>o});var n=i(25085);class o{static _nextVisibleColumn(e,t,i){return 9===e?o.nextRenderTabStop(t,i):n.K7(e)||n.C8(e)?t+2:t+1}static visibleColumnFromColumn(e,t,i){const o=Math.min(t-1,e.length),s=e.substring(0,o),r=new n.W1(s);let a=0;for(;!r.eol();){const e=n.ZH(s,o,r.offset);r.nextGraphemeLength(),a=this._nextVisibleColumn(e,a,i)}return a}static columnFromVisibleColumn(e,t,i){if(t<=0)return 1;const o=e.length,s=new n.W1(e);let r=0,a=1;for(;!s.eol();){const l=n.ZH(e,o,s.offset);s.nextGraphemeLength();const h=this._nextVisibleColumn(l,r,i),d=s.offset+1;if(h>=t){return h-t{i.d(t,{h:()=>o});var n=i(10670);class o{static insert(e,t){return{range:new n.e(e.lineNumber,e.column,e.lineNumber,e.column),text:t,forceMoveMarkers:!0}}static delete(e){return{range:e,text:null}}static replace(e,t){return{range:e,text:t}}static replaceMove(e,t){return{range:e,text:t,forceMoveMarkers:!0}}}},36729:(e,t,i)=>{i.d(t,{Bj:()=>M,CE:()=>K,DS:()=>Y,HV:()=>oe,H_:()=>w,Jn:()=>J,Kh:()=>a,L7:()=>ne,Mm:()=>l,N8:()=>x,P0:()=>m,Qb:()=>ee,Re:()=>z,Tf:()=>C,To:()=>ie,UP:()=>U,Vs:()=>H,Xy:()=>D,YF:()=>X,cK:()=>N,dI:()=>f,e9:()=>L,eS:()=>V,e_:()=>R,f9:()=>se,fY:()=>d,gS:()=>b,h1:()=>y,hw:()=>p,jD:()=>c,lK:()=>B,lS:()=>$,ll:()=>I,m$:()=>Z,m1:()=>q,m3:()=>te,m9:()=>F,n0:()=>h,oV:()=>Q,qe:()=>k,r0:()=>j,s2:()=>u,ts:()=>G,vP:()=>S,x_:()=>g,zJ:()=>W,zd:()=>E,zu:()=>O,zw:()=>A});var n=i(71721),o=i(89652),s=i(87701),r=i(17903);const a=(0,s.P6G)("editor.lineHighlightBackground",{dark:null,light:null,hcDark:null,hcLight:null},n.NC("lineHighlight","Background color for the highlight of line at the cursor position.")),l=(0,s.P6G)("editor.lineHighlightBorder",{dark:"#282828",light:"#eeeeee",hcDark:"#f38518",hcLight:s.lRK},n.NC("lineHighlightBorderBox","Background color for the border around the line at the cursor position.")),h=((0,s.P6G)("editor.rangeHighlightBackground",{dark:"#ffffff0b",light:"#fdff0033",hcDark:null,hcLight:null},n.NC("rangeHighlight","Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations."),!0),(0,s.P6G)("editor.rangeHighlightBorder",{dark:null,light:null,hcDark:s.xL1,hcLight:s.xL1},n.NC("rangeHighlightBorder","Background color of the border around highlighted ranges."),!0),(0,s.P6G)("editor.symbolHighlightBackground",{dark:s.MUv,light:s.MUv,hcDark:null,hcLight:null},n.NC("symbolHighlight","Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations."),!0),(0,s.P6G)("editor.symbolHighlightBorder",{dark:null,light:null,hcDark:s.xL1,hcLight:s.xL1},n.NC("symbolHighlightBorder","Background color of the border around highlighted symbols."),!0),(0,s.P6G)("editorCursor.foreground",{dark:"#AEAFAD",light:o.Il.black,hcDark:o.Il.white,hcLight:"#0F4A85"},n.NC("caret","Color of the editor cursor."))),d=(0,s.P6G)("editorCursor.background",null,n.NC("editorCursorBackground","The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.")),c=(0,s.P6G)("editorMultiCursor.primary.foreground",{dark:h,light:h,hcDark:h,hcLight:h},n.NC("editorMultiCursorPrimaryForeground","Color of the primary editor cursor when multiple cursors are present.")),u=(0,s.P6G)("editorMultiCursor.primary.background",{dark:d,light:d,hcDark:d,hcLight:d},n.NC("editorMultiCursorPrimaryBackground","The background color of the primary editor cursor when multiple cursors are present. Allows customizing the color of a character overlapped by a block cursor.")),g=(0,s.P6G)("editorMultiCursor.secondary.foreground",{dark:h,light:h,hcDark:h,hcLight:h},n.NC("editorMultiCursorSecondaryForeground","Color of secondary editor cursors when multiple cursors are present.")),m=(0,s.P6G)("editorMultiCursor.secondary.background",{dark:d,light:d,hcDark:d,hcLight:d},n.NC("editorMultiCursorSecondaryBackground","The background color of secondary editor cursors when multiple cursors are present. Allows customizing the color of a character overlapped by a block cursor.")),f=(0,s.P6G)("editorWhitespace.foreground",{dark:"#e3e4e229",light:"#33333333",hcDark:"#e3e4e229",hcLight:"#CCCCCC"},n.NC("editorWhitespaces","Color of whitespace characters in the editor.")),p=(0,s.P6G)("editorLineNumber.foreground",{dark:"#858585",light:"#237893",hcDark:o.Il.white,hcLight:"#292929"},n.NC("editorLineNumbers","Color of editor line numbers.")),_=(0,s.P6G)("editorIndentGuide.background",{dark:f,light:f,hcDark:f,hcLight:f},n.NC("editorIndentGuides","Color of the editor indentation guides."),!1,n.NC("deprecatedEditorIndentGuides","'editorIndentGuide.background' is deprecated. Use 'editorIndentGuide.background1' instead.")),v=(0,s.P6G)("editorIndentGuide.activeBackground",{dark:f,light:f,hcDark:f,hcLight:f},n.NC("editorActiveIndentGuide","Color of the active editor indentation guides."),!1,n.NC("deprecatedEditorActiveIndentGuide","'editorIndentGuide.activeBackground' is deprecated. Use 'editorIndentGuide.activeBackground1' instead.")),b=(0,s.P6G)("editorIndentGuide.background1",{dark:_,light:_,hcDark:_,hcLight:_},n.NC("editorIndentGuides1","Color of the editor indentation guides (1).")),C=(0,s.P6G)("editorIndentGuide.background2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorIndentGuides2","Color of the editor indentation guides (2).")),w=(0,s.P6G)("editorIndentGuide.background3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorIndentGuides3","Color of the editor indentation guides (3).")),y=(0,s.P6G)("editorIndentGuide.background4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorIndentGuides4","Color of the editor indentation guides (4).")),S=(0,s.P6G)("editorIndentGuide.background5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorIndentGuides5","Color of the editor indentation guides (5).")),L=(0,s.P6G)("editorIndentGuide.background6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorIndentGuides6","Color of the editor indentation guides (6).")),k=(0,s.P6G)("editorIndentGuide.activeBackground1",{dark:v,light:v,hcDark:v,hcLight:v},n.NC("editorActiveIndentGuide1","Color of the active editor indentation guides (1).")),D=(0,s.P6G)("editorIndentGuide.activeBackground2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorActiveIndentGuide2","Color of the active editor indentation guides (2).")),N=(0,s.P6G)("editorIndentGuide.activeBackground3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorActiveIndentGuide3","Color of the active editor indentation guides (3).")),x=(0,s.P6G)("editorIndentGuide.activeBackground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorActiveIndentGuide4","Color of the active editor indentation guides (4).")),E=(0,s.P6G)("editorIndentGuide.activeBackground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorActiveIndentGuide5","Color of the active editor indentation guides (5).")),I=(0,s.P6G)("editorIndentGuide.activeBackground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorActiveIndentGuide6","Color of the active editor indentation guides (6).")),T=(0,s.P6G)("editorActiveLineNumber.foreground",{dark:"#c6c6c6",light:"#0B216F",hcDark:s.xL1,hcLight:s.xL1},n.NC("editorActiveLineNumber","Color of editor active line number"),!1,n.NC("deprecatedEditorActiveLineNumber","Id is deprecated. Use 'editorLineNumber.activeForeground' instead.")),M=((0,s.P6G)("editorLineNumber.activeForeground",{dark:T,light:T,hcDark:T,hcLight:T},n.NC("editorActiveLineNumber","Color of editor active line number")),(0,s.P6G)("editorLineNumber.dimmedForeground",{dark:null,light:null,hcDark:null,hcLight:null},n.NC("editorDimmedLineNumber","Color of the final editor line when editor.renderFinalNewline is set to dimmed."))),A=((0,s.P6G)("editorRuler.foreground",{dark:"#5A5A5A",light:o.Il.lightgrey,hcDark:o.Il.white,hcLight:"#292929"},n.NC("editorRuler","Color of the editor rulers.")),(0,s.P6G)("editorCodeLens.foreground",{dark:"#999999",light:"#919191",hcDark:"#999999",hcLight:"#292929"},n.NC("editorCodeLensForeground","Foreground color of editor CodeLens")),(0,s.P6G)("editorBracketMatch.background",{dark:"#0064001a",light:"#0064001a",hcDark:"#0064001a",hcLight:"#0000"},n.NC("editorBracketMatchBackground","Background color behind matching brackets")),(0,s.P6G)("editorBracketMatch.border",{dark:"#888",light:"#B9B9B9",hcDark:s.lRK,hcLight:s.lRK},n.NC("editorBracketMatchBorder","Color for matching brackets boxes")),(0,s.P6G)("editorOverviewRuler.border",{dark:"#7f7f7f4d",light:"#7f7f7f4d",hcDark:"#7f7f7f4d",hcLight:"#666666"},n.NC("editorOverviewRulerBorder","Color of the overview ruler border."))),R=(0,s.P6G)("editorOverviewRuler.background",null,n.NC("editorOverviewRulerBackground","Background color of the editor overview ruler.")),O=((0,s.P6G)("editorGutter.background",{dark:s.cvW,light:s.cvW,hcDark:s.cvW,hcLight:s.cvW},n.NC("editorGutter","Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.")),(0,s.P6G)("editorUnnecessaryCode.border",{dark:null,light:null,hcDark:o.Il.fromHex("#fff").transparent(.8),hcLight:s.lRK},n.NC("unnecessaryCodeBorder","Border color of unnecessary (unused) source code in the editor.")),(0,s.P6G)("editorUnnecessaryCode.opacity",{dark:o.Il.fromHex("#000a"),light:o.Il.fromHex("#0007"),hcDark:null,hcLight:null},n.NC("unnecessaryCodeOpacity","Opacity of unnecessary (unused) source code in the editor. For example, \"#000000c0\" will render the code with 75% opacity. For high contrast themes, use the 'editorUnnecessaryCode.border' theme color to underline unnecessary code instead of fading it out."))),P=((0,s.P6G)("editorGhostText.border",{dark:null,light:null,hcDark:o.Il.fromHex("#fff").transparent(.8),hcLight:o.Il.fromHex("#292929").transparent(.8)},n.NC("editorGhostTextBorder","Border color of ghost text in the editor.")),(0,s.P6G)("editorGhostText.foreground",{dark:o.Il.fromHex("#ffffff56"),light:o.Il.fromHex("#0007"),hcDark:null,hcLight:null},n.NC("editorGhostTextForeground","Foreground color of the ghost text in the editor.")),(0,s.P6G)("editorGhostText.background",{dark:null,light:null,hcDark:null,hcLight:null},n.NC("editorGhostTextBackground","Background color of the ghost text in the editor.")),new o.Il(new o.VS(0,122,204,.6))),F=(0,s.P6G)("editorOverviewRuler.rangeHighlightForeground",{dark:P,light:P,hcDark:P,hcLight:P},n.NC("overviewRulerRangeHighlight","Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations."),!0),B=(0,s.P6G)("editorOverviewRuler.errorForeground",{dark:new o.Il(new o.VS(255,18,18,.7)),light:new o.Il(new o.VS(255,18,18,.7)),hcDark:new o.Il(new o.VS(255,50,50,1)),hcLight:"#B5200D"},n.NC("overviewRuleError","Overview ruler marker color for errors.")),z=(0,s.P6G)("editorOverviewRuler.warningForeground",{dark:s.uoC,light:s.uoC,hcDark:s.pW3,hcLight:s.pW3},n.NC("overviewRuleWarning","Overview ruler marker color for warnings.")),V=(0,s.P6G)("editorOverviewRuler.infoForeground",{dark:s.c63,light:s.c63,hcDark:s.T83,hcLight:s.T83},n.NC("overviewRuleInfo","Overview ruler marker color for infos.")),W=(0,s.P6G)("editorBracketHighlight.foreground1",{dark:"#FFD700",light:"#0431FAFF",hcDark:"#FFD700",hcLight:"#0431FAFF"},n.NC("editorBracketHighlightForeground1","Foreground color of brackets (1). Requires enabling bracket pair colorization.")),H=(0,s.P6G)("editorBracketHighlight.foreground2",{dark:"#DA70D6",light:"#319331FF",hcDark:"#DA70D6",hcLight:"#319331FF"},n.NC("editorBracketHighlightForeground2","Foreground color of brackets (2). Requires enabling bracket pair colorization.")),K=(0,s.P6G)("editorBracketHighlight.foreground3",{dark:"#179FFF",light:"#7B3814FF",hcDark:"#87CEFA",hcLight:"#7B3814FF"},n.NC("editorBracketHighlightForeground3","Foreground color of brackets (3). Requires enabling bracket pair colorization.")),U=(0,s.P6G)("editorBracketHighlight.foreground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketHighlightForeground4","Foreground color of brackets (4). Requires enabling bracket pair colorization.")),j=(0,s.P6G)("editorBracketHighlight.foreground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketHighlightForeground5","Foreground color of brackets (5). Requires enabling bracket pair colorization.")),q=(0,s.P6G)("editorBracketHighlight.foreground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketHighlightForeground6","Foreground color of brackets (6). Requires enabling bracket pair colorization.")),G=(0,s.P6G)("editorBracketHighlight.unexpectedBracket.foreground",{dark:new o.Il(new o.VS(255,18,18,.8)),light:new o.Il(new o.VS(255,18,18,.8)),hcDark:new o.Il(new o.VS(255,50,50,1)),hcLight:""},n.NC("editorBracketHighlightUnexpectedBracketForeground","Foreground color of unexpected brackets.")),Q=(0,s.P6G)("editorBracketPairGuide.background1",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.background1","Background color of inactive bracket pair guides (1). Requires enabling bracket pair guides.")),Z=(0,s.P6G)("editorBracketPairGuide.background2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.background2","Background color of inactive bracket pair guides (2). Requires enabling bracket pair guides.")),Y=(0,s.P6G)("editorBracketPairGuide.background3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.background3","Background color of inactive bracket pair guides (3). Requires enabling bracket pair guides.")),$=(0,s.P6G)("editorBracketPairGuide.background4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.background4","Background color of inactive bracket pair guides (4). Requires enabling bracket pair guides.")),J=(0,s.P6G)("editorBracketPairGuide.background5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.background5","Background color of inactive bracket pair guides (5). Requires enabling bracket pair guides.")),X=(0,s.P6G)("editorBracketPairGuide.background6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.background6","Background color of inactive bracket pair guides (6). Requires enabling bracket pair guides.")),ee=(0,s.P6G)("editorBracketPairGuide.activeBackground1",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.activeBackground1","Background color of active bracket pair guides (1). Requires enabling bracket pair guides.")),te=(0,s.P6G)("editorBracketPairGuide.activeBackground2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.activeBackground2","Background color of active bracket pair guides (2). Requires enabling bracket pair guides.")),ie=(0,s.P6G)("editorBracketPairGuide.activeBackground3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.activeBackground3","Background color of active bracket pair guides (3). Requires enabling bracket pair guides.")),ne=(0,s.P6G)("editorBracketPairGuide.activeBackground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.activeBackground4","Background color of active bracket pair guides (4). Requires enabling bracket pair guides.")),oe=(0,s.P6G)("editorBracketPairGuide.activeBackground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.activeBackground5","Background color of active bracket pair guides (5). Requires enabling bracket pair guides.")),se=(0,s.P6G)("editorBracketPairGuide.activeBackground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},n.NC("editorBracketPairGuide.activeBackground6","Background color of active bracket pair guides (6). Requires enabling bracket pair guides."));(0,s.P6G)("editorUnicodeHighlight.border",{dark:s.uoC,light:s.uoC,hcDark:s.uoC,hcLight:s.uoC},n.NC("editorUnicodeHighlight.border","Border color used to highlight unicode characters.")),(0,s.P6G)("editorUnicodeHighlight.background",{dark:s.gpD,light:s.gpD,hcDark:s.gpD,hcLight:s.gpD},n.NC("editorUnicodeHighlight.background","Background color used to highlight unicode characters."));(0,r.Ic)(((e,t)=>{const i=e.getColor(s.cvW),n=e.getColor(a),o=n&&!n.isTransparent()?n:i;o&&t.addRule(".monaco-editor .inputarea.ime-input { background-color: ".concat(o,"; }"))}))},55494:(e,t,i)=>{function n(e){let t=0,i=0,n=0,o=0;for(let s=0,r=e.length;sn})},48941:(e,t,i)=>{i.d(t,{x:()=>s});var n=i(25085),o=i(5255);function s(e,t,i){let s=n.LC(e);return-1===s&&(s=e.length),function(e,t,i){let n=0;for(let r=0;r{i.d(t,{i:()=>l,z:()=>a});var n=i(85108),o=i(57866),s=i(10670),r=i(52910);class a{static fromRangeInclusive(e){return new a(e.startLineNumber,e.endLineNumber+1)}static joinMany(e){if(0===e.length)return[];let t=new l(e[0].slice());for(let i=1;it)throw new n.he("startLineNumber ".concat(e," cannot be after endLineNumberExclusive ").concat(t));this.startLineNumber=e,this.endLineNumberExclusive=t}contains(e){return this.startLineNumber<=e&&e0&&void 0!==arguments[0]?arguments[0]:[];this._normalizedRanges=e}get ranges(){return this._normalizedRanges}addRange(e){if(0===e.length)return;const t=(0,r.J_)(this._normalizedRanges,(t=>t.endLineNumberExclusive>=e.startLineNumber)),i=(0,r.Jw)(this._normalizedRanges,(t=>t.startLineNumber<=e.endLineNumberExclusive))+1;if(t===i)this._normalizedRanges.splice(t,0,e);else if(t===i-1){const i=this._normalizedRanges[t];this._normalizedRanges[t]=i.join(e)}else{const n=this._normalizedRanges[t].join(this._normalizedRanges[i-1]).join(e);this._normalizedRanges.splice(t,i-t,n)}}contains(e){const t=(0,r.ti)(this._normalizedRanges,(t=>t.startLineNumber<=e));return!!t&&t.endLineNumberExclusive>e}intersects(e){const t=(0,r.ti)(this._normalizedRanges,(t=>t.startLineNumbere.startLineNumber}getUnion(e){if(0===this._normalizedRanges.length)return e;if(0===e._normalizedRanges.length)return this;const t=[];let i=0,n=0,o=null;for(;i=s.startLineNumber?o=new a(o.startLineNumber,Math.max(o.endLineNumberExclusive,s.endLineNumberExclusive)):(t.push(o),o=s)}return null!==o&&t.push(o),new l(t)}subtractFrom(e){const t=(0,r.J_)(this._normalizedRanges,(t=>t.endLineNumberExclusive>=e.startLineNumber)),i=(0,r.Jw)(this._normalizedRanges,(t=>t.startLineNumber<=e.endLineNumberExclusive))+1;if(t===i)return new l([e]);const n=[];let o=e.startLineNumber;for(let s=t;so&&n.push(new a(o,e.startLineNumber)),o=e.endLineNumberExclusive}return oe.toString())).join(", ")}getIntersection(e){const t=[];let i=0,n=0;for(;it.delta(e))))}}},57866:(e,t,i)=>{i.d(t,{M:()=>s,q:()=>o});var n=i(85108);class o{static addRange(e,t){let i=0;for(;it))return new o(e,t)}static ofLength(e){return new o(0,e)}static ofStartAndLength(e,t){return new o(e,e+t)}constructor(e,t){if(this.start=e,this.endExclusive=t,e>t)throw new n.he("Invalid range: ".concat(this.toString()))}get isEmpty(){return this.start===this.endExclusive}delta(e){return new o(this.start+e,this.endExclusive+e)}deltaStart(e){return new o(this.start+e,this.endExclusive)}deltaEnd(e){return new o(this.start,this.endExclusive+e)}get length(){return this.endExclusive-this.start}toString(){return"[".concat(this.start,", ").concat(this.endExclusive,")")}contains(e){return this.start<=e&&e=e.endExclusive}slice(e){return e.slice(this.start,this.endExclusive)}substring(e){return e.substring(this.start,this.endExclusive)}clip(e){if(this.isEmpty)throw new n.he("Invalid clipping range: ".concat(this.toString()));return Math.max(this.start,Math.min(this.endExclusive-1,e))}clipCyclic(e){if(this.isEmpty)throw new n.he("Invalid clipping range: ".concat(this.toString()));return e=this.endExclusive?this.start+(e-this.start)%this.length:e}forEach(e){for(let t=this.start;te.toString())).join(", ")}intersectsStrict(e){let t=0;for(;te+t.length),0)}}},2067:(e,t,i)=>{i.d(t,{L:()=>n});class n{constructor(e,t){this.lineNumber=e,this.column=t}with(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.lineNumber,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.column;return e===this.lineNumber&&t===this.column?this:new n(e,t)}delta(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.with(this.lineNumber+e,this.column+t)}equals(e){return n.equals(this,e)}static equals(e,t){return!e&&!t||!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column}isBefore(e){return n.isBefore(this,e)}static isBefore(e,t){return e.lineNumber{i.d(t,{e:()=>o});var n=i(2067);class o{constructor(e,t,i,n){e>i||e===i&&t>n?(this.startLineNumber=i,this.startColumn=n,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=i,this.endColumn=n)}isEmpty(){return o.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return o.containsPosition(this,e)}static containsPosition(e,t){return!(t.lineNumbere.endLineNumber)&&(!(t.lineNumber===e.startLineNumber&&t.columne.endColumn))}static strictContainsPosition(e,t){return!(t.lineNumbere.endLineNumber)&&(!(t.lineNumber===e.startLineNumber&&t.column<=e.startColumn)&&!(t.lineNumber===e.endLineNumber&&t.column>=e.endColumn))}containsRange(e){return o.containsRange(this,e)}static containsRange(e,t){return!(t.startLineNumbere.endLineNumber||t.endLineNumber>e.endLineNumber)&&(!(t.startLineNumber===e.startLineNumber&&t.startColumne.endColumn)))}strictContainsRange(e){return o.strictContainsRange(this,e)}static strictContainsRange(e,t){return!(t.startLineNumbere.endLineNumber||t.endLineNumber>e.endLineNumber)&&(!(t.startLineNumber===e.startLineNumber&&t.startColumn<=e.startColumn)&&!(t.endLineNumber===e.endLineNumber&&t.endColumn>=e.endColumn)))}plusRange(e){return o.plusRange(this,e)}static plusRange(e,t){let i,n,s,r;return t.startLineNumbere.endLineNumber?(s=t.endLineNumber,r=t.endColumn):t.endLineNumber===e.endLineNumber?(s=t.endLineNumber,r=Math.max(t.endColumn,e.endColumn)):(s=e.endLineNumber,r=e.endColumn),new o(i,n,s,r)}intersectRanges(e){return o.intersectRanges(this,e)}static intersectRanges(e,t){let i=e.startLineNumber,n=e.startColumn,s=e.endLineNumber,r=e.endColumn;const a=t.startLineNumber,l=t.startColumn,h=t.endLineNumber,d=t.endColumn;return ih?(s=h,r=d):s===h&&(r=Math.min(r,d)),i>s||i===s&&n>r?null:new o(i,n,s,r)}equalsRange(e){return o.equalsRange(this,e)}static equalsRange(e,t){return!e&&!t||!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn}getEndPosition(){return o.getEndPosition(this)}static getEndPosition(e){return new n.L(e.endLineNumber,e.endColumn)}getStartPosition(){return o.getStartPosition(this)}static getStartPosition(e){return new n.L(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,t){return new o(this.startLineNumber,this.startColumn,e,t)}setStartPosition(e,t){return new o(e,t,this.endLineNumber,this.endColumn)}collapseToStart(){return o.collapseToStart(this)}static collapseToStart(e){return new o(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}collapseToEnd(){return o.collapseToEnd(this)}static collapseToEnd(e){return new o(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn)}delta(e){return new o(this.startLineNumber+e,this.startColumn,this.endLineNumber+e,this.endColumn)}static fromPositions(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return new o(e.lineNumber,e.column,t.lineNumber,t.column)}static lift(e){return e?new o(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return e&&"number"===typeof e.startLineNumber&&"number"===typeof e.startColumn&&"number"===typeof e.endLineNumber&&"number"===typeof e.endColumn}static areIntersectingOrTouching(e,t){return!(e.endLineNumbere.startLineNumber}toJSON(){return this}}},67078:(e,t,i)=>{i.d(t,{Y:()=>s});var n=i(2067),o=i(10670);class s extends o.e{constructor(e,t,i,n){super(e,t,i,n),this.selectionStartLineNumber=e,this.selectionStartColumn=t,this.positionLineNumber=i,this.positionColumn=n}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(e){return s.selectionsEqual(this,e)}static selectionsEqual(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(e,t){return 0===this.getDirection()?new s(this.startLineNumber,this.startColumn,e,t):new s(e,t,this.startLineNumber,this.startColumn)}getPosition(){return new n.L(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new n.L(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(e,t){return 0===this.getDirection()?new s(e,t,this.endLineNumber,this.endColumn):new s(this.endLineNumber,this.endColumn,e,t)}static fromPositions(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return new s(e.lineNumber,e.column,t.lineNumber,t.column)}static fromRange(e,t){return 0===t?new s(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):new s(e.endLineNumber,e.endColumn,e.startLineNumber,e.startColumn)}static liftSelection(e){return new s(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}static selectionsArrEqual(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(let i=0,n=e.length;i{i.d(t,{HT:()=>u,kH:()=>c,oe:()=>d});var n=i(25085),o=i(21511),s=i(12966);let r,a,l;function h(){return r||(r=new TextDecoder("UTF-16LE")),r}function d(){return l||(l=o.r()?h():(a||(a=new TextDecoder("UTF-16BE")),a)),l}function c(e,t,i){const n=new Uint16Array(e.buffer,t,i);return i>0&&(65279===n[0]||65534===n[0])?function(e,t,i){const n=[];let o=0;for(let r=0;r=this._capacity)return this._flushBuffer(),void(this._completedStrings[this._completedStrings.length]=e);for(let i=0;i{i.d(t,{b:()=>a,q:()=>r});var n=i(12966),o=i(76071);function s(e){return e.replace(/\n/g,"\\n").replace(/\r/g,"\\r")}class r{get oldLength(){return this.oldText.length}get oldEnd(){return this.oldPosition+this.oldText.length}get newLength(){return this.newText.length}get newEnd(){return this.newPosition+this.newText.length}constructor(e,t,i,n){this.oldPosition=e,this.oldText=t,this.newPosition=i,this.newText=n}toString(){return 0===this.oldText.length?"(insert@".concat(this.oldPosition,' "').concat(s(this.newText),'")'):0===this.newText.length?"(delete@".concat(this.oldPosition,' "').concat(s(this.oldText),'")'):"(replace@".concat(this.oldPosition,' "').concat(s(this.oldText),'" with "').concat(s(this.newText),'")')}static _writeStringSize(e){return 4+2*e.length}static _writeString(e,t,i){const o=t.length;n.T4(e,o,i),i+=4;for(let s=0;s{i.d(t,{MS:()=>g,At:()=>c,PY:()=>d});var n=i(39880),o=i(85108),s=i(2067),r=i(57866),a=i(59122);class l{constructor(e){this.text=e,this.lineStartOffsetByLineIdx=[],this.lineStartOffsetByLineIdx.push(0);for(let t=0;t(0,n.DM)(e,((e,t)=>e.range.getEndPosition().isBeforeOrEqual(t.range.getStartPosition())))))}apply(e){let t="",i=new s.L(1,1);for(const o of this.edits){const n=o.range,s=n.getStartPosition(),r=n.getEndPosition(),a=u(i,s);a.isEmpty()||(t+=e.getValueOfRange(a)),t+=o.text,i=r}const n=u(i,e.endPositionExclusive);return n.isEmpty()||(t+=e.getValueOfRange(n)),t}applyToString(e){const t=new m(e);return this.apply(t)}getNewRanges(){const e=[];let t=0,i=0,n=0;for(const o of this.edits){const r=a.A.ofText(o.text),l=s.L.lift({lineNumber:o.range.startLineNumber+i,column:o.range.startColumn+(o.range.startLineNumber===t?n:0)}),h=r.createRange(l);e.push(h),i=h.endLineNumber-o.range.endLineNumber,n=h.endColumn-o.range.endColumn,t=o.range.endLineNumber}return e}}class c{constructor(e,t){this.range=e,this.text=t}}function u(e,t){if(!e.isBeforeOrEqual(t))throw new o.he("start must be before end");return new h.e(e.lineNumber,e.column,t.lineNumber,t.column)}class g{get endPositionExclusive(){return this.length.addToPosition(new s.L(1,1))}}class m extends g{constructor(e){super(),this.value=e,this._t=new l(this.value)}getValueOfRange(e){return this._t.getOffsetRange(e).substring(this.value)}get length(){return this._t.textLength}}},59122:(e,t,i)=>{i.d(t,{A:()=>s});var n=i(2067),o=i(10670);class s{static ofText(e){let t=0,i=0;for(const n of e)"\n"===n?(t++,i=0):i++;return new s(t,i)}constructor(e,t){this.lineCount=e,this.columnCount=t}createRange(e){return 0===this.lineCount?new o.e(e.lineNumber,e.column,e.lineNumber,e.column+this.columnCount):new o.e(e.lineNumber,e.column,e.lineNumber+this.lineCount,this.columnCount+1)}addToPosition(e){return 0===this.lineCount?new n.L(e.lineNumber,e.column+this.columnCount):new n.L(e.lineNumber+this.lineCount,this.columnCount+1)}toString(){return"".concat(this.lineCount,",").concat(this.columnCount)}}s.zero=new s(0,0)},88975:(e,t,i)=>{i.d(t,{D:()=>n});const n={tabSize:4,indentSize:4,insertSpaces:!0,detectIndentation:!0,trimAutoWhitespace:!0,largeFileOptimizations:!0,bracketPairColorizationOptions:{enabled:!0,independentColorPoolPerBracketType:!1}}},67055:(e,t,i)=>{i.d(t,{u:()=>a});var n=i(65549),o=i(89505);class s extends o.N{constructor(e,t){super(0),this._segmenter=null,this._cachedLine=null,this._cachedSegments=[],this.intlSegmenterLocales=t,this.intlSegmenterLocales.length>0?this._segmenter=new Intl.Segmenter(this.intlSegmenterLocales,{granularity:"word"}):this._segmenter=null;for(let i=0,n=e.length;it)break;i=n}return i}findNextIntlWordAtOrAfterOffset(e,t){for(const i of this._getIntlSegmenterWordsOnLine(e))if(!(i.index{i.d(t,{Af:()=>r,eq:()=>a,t2:()=>h,vu:()=>s});var n=i(36952),o=i(44713);const s="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";const r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="(-?\\d*\\.\\d\\w*)|([^";for(const i of s)e.indexOf(i)>=0||(t+="\\"+i);return t+="\\s]+)",new RegExp(t,"g")}();function a(e){let t=r;if(e&&e instanceof RegExp)if(e.global)t=e;else{let i="g";e.ignoreCase&&(i+="i"),e.multiline&&(i+="m"),e.unicode&&(i+="u"),t=new RegExp(e.source,i)}return t.lastIndex=0,t}const l=new o.S;function h(e,t,i,o,s){if(t=a(t),s||(s=n.$.first(l)),i.length>s.maxLen){let n=e-s.maxLen/2;return n<0?n=0:o+=n,h(e,t,i=i.substring(n,e+s.maxLen/2),o,s)}const r=Date.now(),c=e-1-o;let u=-1,g=null;for(let n=1;!(Date.now()-r>=s.timeBudget);n++){const e=c-s.windowSize*n;t.lastIndex=Math.max(0,e);const o=d(t,i,c,u);if(!o&&g)break;if(g=o,e<=0)break;u=e}if(g){const e={word:g[0],startColumn:o+1+g.index,endColumn:o+1+g.index+g[0].length};return t.lastIndex=0,e}return null}function d(e,t,i,n){let o;for(;o=e.exec(t);){const t=o.index||0;if(t<=i&&e.lastIndex>=i)return o;if(n>0&&t>n)return null}return null}l.unshift({maxLen:1e3,windowSize:15,timeBudget:150})},98083:(e,t,i)=>{i.d(t,{l:()=>o});var n=i(5255);class o{static whitespaceVisibleColumn(e,t,i){const o=e.length;let s=0,r=-1,a=-1;for(let l=0;l{i.d(t,{A:()=>d});var n=i(25085),o=i(27121),s=i(68170),r=i(5255),a=i(96939),l=i(10670),h=i(2067);class d{static deleteRight(e,t,i,n){const s=[];let r=3!==e;for(let h=0,d=n.length;h=c.length+1)return!1;const u=c.charAt(d.column-2),g=n.get(u);if(!g)return!1;if((0,s.LN)(u)){if("never"===i)return!1}else if("never"===t)return!1;const m=c.charAt(d.column-1);let f=!1;for(const e of g)e.open===u&&e.close===m&&(f=!0);if(!f)return!1;if("auto"===e){let e=!1;for(let t=0,i=a.length;t1){const e=t.getLineContent(o.lineNumber),s=n.LC(e),a=-1===s?e.length+1:s+1;if(o.column<=a){const e=i.visibleColumnFromColumn(t,o),n=r.i.prevIndentTabStop(e,i.indentSize),s=i.columnFromVisibleColumn(t,o.lineNumber,n);return new l.e(o.lineNumber,s,o.lineNumber,o.column)}}return l.e.fromPositions(d.getPositionAfterDeleteLeft(o,t),o)}static getPositionAfterDeleteLeft(e,t){if(e.column>1){const i=n.oH(e.column-1,t.getLineContent(e.lineNumber));return e.with(void 0,i+1)}if(e.lineNumber>1){const i=e.lineNumber-1;return new h.L(i,t.getLineMaxColumn(i))}return e}static cut(e,t,i){const n=[];let r=null;i.sort(((e,t)=>h.L.compare(e.getStartPosition(),t.getEndPosition())));for(let s=0,a=i.length;s1&&(null===r||void 0===r?void 0:r.endLineNumber)!==e.lineNumber?(i=e.lineNumber-1,h=t.getLineMaxColumn(e.lineNumber-1),d=e.lineNumber,c=t.getLineMaxColumn(e.lineNumber)):(i=e.lineNumber,h=1,d=e.lineNumber,c=t.getLineMaxColumn(e.lineNumber));const u=new l.e(i,h,d,c);r=u,u.isEmpty()?n[s]=null:n[s]=new o.T4(u,"")}else n[s]=null;else n[s]=new o.T4(a,"")}return new s.Tp(0,n,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}},82999:(e,t,i)=>{i.d(t,{N:()=>n,P:()=>d});var n,o=i(63686),s=i(68170),r=i(96939),a=i(78626),l=i(2067),h=i(10670);class d{static addCursorDown(e,t,i){const n=[];let o=0;for(let a=0,l=t.length;at&&(i=t,n=e.model.getLineMaxColumn(i)),s.Vi.fromModelState(new s.rS(new h.e(r.lineNumber,1,i,n),2,0,new l.L(i,n),0))}const d=t.modelState.selectionStart.getStartPosition().lineNumber;if(r.lineNumberd){const i=e.getLineCount();let n=a.lineNumber+1,o=1;return n>i&&(n=i,o=e.getLineMaxColumn(n)),s.Vi.fromViewState(t.viewState.move(!0,n,o,0))}{const e=t.modelState.selectionStart.getEndPosition();return s.Vi.fromModelState(t.modelState.move(!0,e.lineNumber,e.column,0))}}static word(e,t,i,n){const o=e.model.validatePosition(n);return s.Vi.fromModelState(a.w.word(e.cursorConfig,e.model,t.modelState,i,o))}static cancelSelection(e,t){if(!t.modelState.hasSelection())return new s.Vi(t.modelState,t.viewState);const i=t.viewState.position.lineNumber,n=t.viewState.position.column;return s.Vi.fromViewState(new s.rS(new h.e(i,n,i,n),0,0,new l.L(i,n),0))}static moveTo(e,t,i,n,o){if(i){if(1===t.modelState.selectionStartKind)return this.word(e,t,i,n);if(2===t.modelState.selectionStartKind)return this.line(e,t,i,n,o)}const r=e.model.validatePosition(n),a=o?e.coordinatesConverter.validateViewPosition(new l.L(o.lineNumber,o.column),r):e.coordinatesConverter.convertModelPositionToViewPosition(r);return s.Vi.fromViewState(t.viewState.move(i,a.lineNumber,a.column,0))}static simpleMove(e,t,i,n,o,a){switch(i){case 0:return 4===a?this._moveHalfLineLeft(e,t,n):this._moveLeft(e,t,n,o);case 1:return 4===a?this._moveHalfLineRight(e,t,n):this._moveRight(e,t,n,o);case 2:return 2===a?this._moveUpByViewLines(e,t,n,o):this._moveUpByModelLines(e,t,n,o);case 3:return 2===a?this._moveDownByViewLines(e,t,n,o):this._moveDownByModelLines(e,t,n,o);case 4:return 2===a?t.map((t=>s.Vi.fromViewState(r.o.moveToPrevBlankLine(e.cursorConfig,e,t.viewState,n)))):t.map((t=>s.Vi.fromModelState(r.o.moveToPrevBlankLine(e.cursorConfig,e.model,t.modelState,n))));case 5:return 2===a?t.map((t=>s.Vi.fromViewState(r.o.moveToNextBlankLine(e.cursorConfig,e,t.viewState,n)))):t.map((t=>s.Vi.fromModelState(r.o.moveToNextBlankLine(e.cursorConfig,e.model,t.modelState,n))));case 6:return this._moveToViewMinColumn(e,t,n);case 7:return this._moveToViewFirstNonWhitespaceColumn(e,t,n);case 8:return this._moveToViewCenterColumn(e,t,n);case 9:return this._moveToViewMaxColumn(e,t,n);case 10:return this._moveToViewLastNonWhitespaceColumn(e,t,n);default:return null}}static viewportMove(e,t,i,n,o){const s=e.getCompletelyVisibleViewRange(),r=e.coordinatesConverter.convertViewRangeToModelRange(s);switch(i){case 11:{const i=this._firstLineNumberInRange(e.model,r,o),s=e.model.getLineFirstNonWhitespaceColumn(i);return[this._moveToModelPosition(e,t[0],n,i,s)]}case 13:{const i=this._lastLineNumberInRange(e.model,r,o),s=e.model.getLineFirstNonWhitespaceColumn(i);return[this._moveToModelPosition(e,t[0],n,i,s)]}case 12:{const i=Math.round((r.startLineNumber+r.endLineNumber)/2),o=e.model.getLineFirstNonWhitespaceColumn(i);return[this._moveToModelPosition(e,t[0],n,i,o)]}case 14:{const i=[];for(let o=0,r=t.length;oi.endLineNumber-1?i.endLineNumber-1:os.Vi.fromViewState(r.o.moveLeft(e.cursorConfig,e,t.viewState,i,n))))}static _moveHalfLineLeft(e,t,i){const n=[];for(let o=0,a=t.length;os.Vi.fromViewState(r.o.moveRight(e.cursorConfig,e,t.viewState,i,n))))}static _moveHalfLineRight(e,t,i){const n=[];for(let o=0,a=t.length;o{i.d(t,{o:()=>d});var n=i(25085),o=i(5255),s=i(2067),r=i(10670),a=i(98083),l=i(68170);class h{constructor(e,t,i){this._cursorPositionBrand=void 0,this.lineNumber=e,this.column=t,this.leftoverVisibleColumns=i}}class d{static leftPosition(e,t){if(t.column>e.getLineMinColumn(t.lineNumber))return t.delta(void 0,-n.HO(e.getLineContent(t.lineNumber),t.column-1));if(t.lineNumber>1){const i=t.lineNumber-1;return new s.L(i,e.getLineMaxColumn(i))}return t}static leftPositionAtomicSoftTabs(e,t,i){if(t.column<=e.getLineIndentColumn(t.lineNumber)){const n=e.getLineMinColumn(t.lineNumber),o=e.getLineContent(t.lineNumber),r=a.l.atomicPosition(o,t.column-1,i,0);if(-1!==r&&r+1>=n)return new s.L(t.lineNumber,r+1)}return this.leftPosition(e,t)}static left(e,t,i){const n=e.stickyTabStops?d.leftPositionAtomicSoftTabs(t,i,e.tabSize):d.leftPosition(t,i);return new h(n.lineNumber,n.column,0)}static moveLeft(e,t,i,n,o){let s,r;if(i.hasSelection()&&!n)s=i.selection.startLineNumber,r=i.selection.startColumn;else{const n=i.position.delta(void 0,-(o-1)),a=t.normalizePosition(d.clipPositionColumn(n,t),0),l=d.left(e,t,a);s=l.lineNumber,r=l.column}return i.move(n,s,r,0)}static clipPositionColumn(e,t){return new s.L(e.lineNumber,d.clipRange(e.column,t.getLineMinColumn(e.lineNumber),t.getLineMaxColumn(e.lineNumber)))}static clipRange(e,t,i){return ei?i:e}static rightPosition(e,t,i){return iu?(i=u,n=l?t.getLineMaxColumn(i):Math.min(t.getLineMaxColumn(i),n)):n=e.columnFromVisibleColumn(t,i,c),r=f?0:c-o.i.visibleColumnFromColumn(t.getLineContent(i),n,e.tabSize),void 0!==d){const e=new s.L(i,n),o=t.normalizePosition(e,d);r+=n-o.column,i=o.lineNumber,n=o.column}return new h(i,n,r)}static down(e,t,i,n,o,s,r){return this.vertical(e,t,i,n,o,i+s,r,4)}static moveDown(e,t,i,n,o){let r,a;i.hasSelection()&&!n?(r=i.selection.endLineNumber,a=i.selection.endColumn):(r=i.position.lineNumber,a=i.position.column);let l,h=0;do{l=d.down(e,t,r+h,a,i.leftoverVisibleColumns,o,!0);if(t.normalizePosition(new s.L(l.lineNumber,l.column),2).lineNumber>r)break}while(h++<10&&r+h1&&this._isBlankLine(t,o);)o--;for(;o>1&&!this._isBlankLine(t,o);)o--;return i.move(n,o,t.getLineMinColumn(o),0)}static moveToNextBlankLine(e,t,i,n){const o=t.getLineCount();let s=i.position.lineNumber;for(;s{i.d(t,{Nu:()=>w,u6:()=>b,g_:()=>C});var n=i(85108),o=i(25085),s=i(27121),r=i(42443),a=i(10670),l=i(67078);class h{constructor(e,t,i){this._range=e,this._charBeforeSelection=t,this._charAfterSelection=i}getEditOperations(e,t){t.addTrackedEditOperation(new a.e(this._range.startLineNumber,this._range.startColumn,this._range.startLineNumber,this._range.startColumn),this._charBeforeSelection),t.addTrackedEditOperation(new a.e(this._range.endLineNumber,this._range.endColumn,this._range.endLineNumber,this._range.endColumn),this._charAfterSelection)}computeCursorState(e,t){const i=t.getInverseEditOperations(),n=i[0].range,o=i[1].range;return new l.Y(n.endLineNumber,n.endColumn,o.endLineNumber,o.endColumn-this._charAfterSelection.length)}}class d{constructor(e,t,i){this._position=e,this._text=t,this._charAfter=i}getEditOperations(e,t){t.addTrackedEditOperation(new a.e(this._position.lineNumber,this._position.column,this._position.lineNumber,this._position.column),this._text+this._charAfter)}computeCursorState(e,t){const i=t.getInverseEditOperations()[0].range;return new l.Y(i.endLineNumber,i.startColumn,i.endLineNumber,i.endColumn-this._charAfter.length)}}var c=i(68170),u=i(67055),g=i(2067),m=i(10405),f=i(40801),p=i(78366),_=i(1761),v=i(16726);class b{static indent(e,t,i){if(null===t||null===i)return[];const n=[];for(let o=0,s=i.length;o1){let n;for(n=i-1;n>=1;n--){const e=t.getLineContent(n);if(o.ow(e)>=0)break}if(n<1)return null;const r=t.getLineMaxColumn(n),l=(0,v.A)(e.autoIndent,t,new a.e(n,r,n,r),e.languageConfigurationService);l&&(s=l.indentation+l.appendText)}return n&&(n===m.wU.Indent&&(s=b.shiftIndent(e,s)),n===m.wU.Outdent&&(s=b.unshiftIndent(e,s)),s=e.normalizeIndentation(s)),s||null}static _replaceJumpToNextIndent(e,t,i,n){let o="";const r=i.getStartPosition();if(e.insertSpaces){const i=e.visibleColumnFromColumn(t,r),n=e.indentSize,s=n-i%n;for(let e=0;ethis._compositionType(i,e,o,s,r,a)));return new c.Tp(4,l,{shouldPushStackElementBefore:S(e,4),shouldPushStackElementAfter:!1})}static _compositionType(e,t,i,n,o,r){if(!t.isEmpty())return null;const l=t.getPosition(),h=Math.max(1,l.column-n),d=Math.min(e.getLineMaxColumn(l.lineNumber),l.column+o),c=new a.e(l.lineNumber,h,l.lineNumber,d);return e.getValueInRange(c)===i&&0===r?null:new s.Uo(c,i,0,r)}static _typeCommand(e,t,i){return i?new s.Sj(e,t,!0):new s.T4(e,t,!0)}static _enter(e,t,i,n){if(0===e.autoIndent)return b._typeCommand(n,"\n",i);if(!t.tokenization.isCheapToTokenize(n.getStartPosition().lineNumber)||1===e.autoIndent){const s=t.getLineContent(n.startLineNumber),r=o.V8(s).substring(0,n.startColumn-1);return b._typeCommand(n,"\n"+e.normalizeIndentation(r),i)}const r=(0,v.A)(e.autoIndent,t,n,e.languageConfigurationService);if(r){if(r.indentAction===m.wU.None)return b._typeCommand(n,"\n"+e.normalizeIndentation(r.indentation+r.appendText),i);if(r.indentAction===m.wU.Indent)return b._typeCommand(n,"\n"+e.normalizeIndentation(r.indentation+r.appendText),i);if(r.indentAction===m.wU.IndentOutdent){const t=e.normalizeIndentation(r.indentation),o=e.normalizeIndentation(r.indentation+r.appendText),a="\n"+o+"\n"+t;return i?new s.Sj(n,a,!0):new s.Uo(n,a,-1,o.length-t.length,!0)}if(r.indentAction===m.wU.Outdent){const t=b.unshiftIndent(e,r.indentation);return b._typeCommand(n,"\n"+e.normalizeIndentation(t+r.appendText),i)}}const a=t.getLineContent(n.startLineNumber),l=o.V8(a).substring(0,n.startColumn-1);if(e.autoIndent>=4){const r=(0,_.UF)(e.autoIndent,t,n,{unshiftIndent:t=>b.unshiftIndent(e,t),shiftIndent:t=>b.shiftIndent(e,t),normalizeIndentation:t=>e.normalizeIndentation(t)},e.languageConfigurationService);if(r){let a=e.visibleColumnFromColumn(t,n.getEndPosition());const l=n.endColumn,h=t.getLineContent(n.endLineNumber),d=o.LC(h);if(n=d>=0?n.setEndPosition(n.endLineNumber,Math.max(n.endColumn,d+1)):n.setEndPosition(n.endLineNumber,t.getLineMaxColumn(n.endLineNumber)),i)return new s.Sj(n,"\n"+e.normalizeIndentation(r.afterEnter),!0);{let t=0;return l<=d+1&&(e.insertSpaces||(a=Math.ceil(a/e.indentSize)),t=Math.min(a+1-e.normalizeIndentation(r.afterEnter).length-1,0)),new s.Uo(n,"\n"+e.normalizeIndentation(r.afterEnter),0,t,!0)}}}return b._typeCommand(n,"\n"+e.normalizeIndentation(l),i)}static _isAutoIndentType(e,t,i){if(e.autoIndent<4)return!1;for(let n=0,o=i.length;nb.shiftIndent(e,t),unshiftIndent:t=>b.unshiftIndent(e,t)},e.languageConfigurationService);if(null===s)return null;if(s!==e.normalizeIndentation(o)){const o=t.getLineFirstNonWhitespaceColumn(i.startLineNumber);return 0===o?b._typeCommand(new a.e(i.startLineNumber,1,i.endLineNumber,i.endColumn),e.normalizeIndentation(s)+n,!1):b._typeCommand(new a.e(i.startLineNumber,1,i.endLineNumber,i.endColumn),e.normalizeIndentation(s)+t.getLineContent(i.startLineNumber).substring(o-1,i.startColumn-1)+n,!1)}return null}static _isAutoClosingOvertype(e,t,i,n,o){if("never"===e.autoClosingOvertype)return!1;if(!e.autoClosingPairs.autoClosingPairsCloseSingleChar.has(o))return!1;for(let s=0,r=i.length;s2?l.charCodeAt(a.column-2):0)&&h)return!1;if("auto"===e.autoClosingOvertype){let e=!1;for(let t=0,i=n.length;tt.startsWith(e.open))),r=o.some((e=>t.startsWith(e.close)));return!s&&r}static _findAutoClosingPairOpen(e,t,i,n){const o=e.autoClosingPairs.autoClosingPairsOpenByEnd.get(n);if(!o)return null;let s=null;for(const r of o)if(null===s||r.open.length>s.open.length){let e=!0;for(const o of i){if(t.getValueInRange(new a.e(o.lineNumber,o.column-r.open.length+1,o.lineNumber,o.column))+n!==r.open){e=!1;break}}e&&(s=r)}return s}static _findContainedAutoClosingPair(e,t){if(t.open.length<=1)return null;const i=t.close.charAt(t.close.length-1),n=e.autoClosingPairs.autoClosingPairsCloseByEnd.get(i)||[];let o=null;for(const s of n)s.open!==t.open&&t.open.includes(s.open)&&t.close.endsWith(s.close)&&(!o||s.open.length>o.open.length)&&(o=s);return o}static _getAutoClosingPairClose(e,t,i,n,o){for(const c of i)if(!c.isEmpty())return null;const s=i.map((e=>{const t=e.getPosition();return o?{lineNumber:t.lineNumber,beforeColumn:t.column-n.length,afterColumn:t.column}:{lineNumber:t.lineNumber,beforeColumn:t.column,afterColumn:t.column}})),r=this._findAutoClosingPairOpen(e,t,s.map((e=>new g.L(e.lineNumber,e.beforeColumn))),n);if(!r)return null;let a,l;if((0,c.LN)(n))a=e.autoClosingQuotes,l=e.shouldAutoCloseBefore.quote;else{!!e.blockCommentStartToken&&r.open.includes(e.blockCommentStartToken)?(a=e.autoClosingComments,l=e.shouldAutoCloseBefore.comment):(a=e.autoClosingBrackets,l=e.shouldAutoCloseBefore.bracket)}if("never"===a)return null;const h=this._findContainedAutoClosingPair(e,r),d=h?h.close:"";let m=!0;for(const c of s){const{lineNumber:i,beforeColumn:o,afterColumn:s}=c,h=t.getLineContent(i),g=h.substring(0,o-1),f=h.substring(s-1);if(f.startsWith(d)||(m=!1),f.length>0){const t=f.charAt(0);if(!b._isBeforeClosingBrace(e,f)&&!l(t))return null}if(1===r.open.length&&("'"===n||'"'===n)&&"always"!==a){const t=(0,u.u)(e.wordSeparators,[]);if(g.length>0){const e=g.charCodeAt(g.length-1);if(0===t.get(e))return null}}if(!t.tokenization.isCheapToTokenize(i))return null;t.tokenization.forceTokenization(i);const _=t.tokenization.getLineTokens(i),v=(0,p.wH)(_,o-1);if(!r.shouldAutoClose(v,o-v.firstCharOffset))return null;const C=r.findNeutralCharacter();if(C){const e=t.tokenization.getTokenTypeIfInsertingCharacter(i,o,C);if(!r.isOK(e))return null}}return m?r.close.substring(0,r.close.length-d.length):r.close}static _runAutoClosingOpenCharType(e,t,i,n,o,s,r){const a=[];for(let l=0,h=n.length;lnew s.T4(new a.e(e.positionLineNumber,e.positionColumn,e.positionLineNumber,e.positionColumn+1),"",!1)));return new c.Tp(4,e,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}const g=this._getAutoClosingPairClose(t,i,o,h,!0);return null!==g?this._runAutoClosingOpenCharType(e,t,i,o,h,!0,g):null}static typeWithInterceptors(e,t,i,n,o,r,a){if(!e&&"\n"===a){const e=[];for(let t=0,s=o.length;t{i.d(t,{L:()=>d,w:()=>h});var n=i(25085),o=i(68170),s=i(51521),r=i(67055),a=i(2067),l=i(10670);class h{static _createWord(e,t,i,n,o){return{start:n,end:o,wordType:t,nextCharClass:i}}static _createIntlWord(e,t){return{start:e.index,end:e.index+e.segment.length,wordType:1,nextCharClass:t}}static _findPreviousWordOnLine(e,t,i){const n=t.getLineContent(i.lineNumber);return this._doFindPreviousWordOnLine(n,e,i)}static _doFindPreviousWordOnLine(e,t,i){let n=0;const o=t.findPrevIntlWordBeforeOrAtOffset(e,i.column-2);for(let s=i.column-2;s>=0;s--){const i=e.charCodeAt(s),r=t.get(i);if(o&&s===o.index)return this._createIntlWord(o,r);if(0===r){if(2===n)return this._createWord(e,n,r,s+1,this._findEndOfWord(e,t,n,s+1));n=1}else if(2===r){if(1===n)return this._createWord(e,n,r,s+1,this._findEndOfWord(e,t,n,s+1));n=2}else if(1===r&&0!==n)return this._createWord(e,n,r,s+1,this._findEndOfWord(e,t,n,s+1))}return 0!==n?this._createWord(e,n,1,0,this._findEndOfWord(e,t,n,0)):null}static _findEndOfWord(e,t,i,n){const o=t.findNextIntlWordAtOrAfterOffset(e,n),s=e.length;for(let r=n;r=0;s--){const n=e.charCodeAt(s),r=t.get(n);if(o&&s===o.index)return s;if(1===r)return s+1;if(1===i&&2===r)return s+1;if(2===i&&0===r)return s+1}return 0}static moveWordLeft(e,t,i,n){let o=i.lineNumber,s=i.column;1===s&&o>1&&(o-=1,s=t.getLineMaxColumn(o));let r=h._findPreviousWordOnLine(e,t,new a.L(o,s));if(0===n)return new a.L(o,r?r.start+1:1);if(1===n)return r&&2===r.wordType&&r.end-r.start===1&&0===r.nextCharClass&&(r=h._findPreviousWordOnLine(e,t,new a.L(o,r.start+1))),new a.L(o,r?r.start+1:1);if(3===n){for(;r&&2===r.wordType;)r=h._findPreviousWordOnLine(e,t,new a.L(o,r.start+1));return new a.L(o,r?r.start+1:1)}return r&&s<=r.end+1&&(r=h._findPreviousWordOnLine(e,t,new a.L(o,r.start+1))),new a.L(o,r?r.end+1:1)}static _moveWordPartLeft(e,t){const i=t.lineNumber,o=e.getLineMaxColumn(i);if(1===t.column)return i>1?new a.L(i-1,e.getLineMaxColumn(i-1)):t;const s=e.getLineContent(i);for(let r=t.column-1;r>1;r--){const e=s.charCodeAt(r-2),t=s.charCodeAt(r-1);if(95===e&&95!==t)return new a.L(i,r);if(45===e&&45!==t)return new a.L(i,r);if((n.mK(e)||n.T5(e))&&n.df(t))return new a.L(i,r);if(n.df(e)&&n.df(t)&&r+1=l.start+1&&(l=h._findNextWordOnLine(e,t,new a.L(o,l.end+1))),s=l?l.start+1:t.getLineMaxColumn(o);return new a.L(o,s)}static _moveWordPartRight(e,t){const i=t.lineNumber,o=e.getLineMaxColumn(i);if(t.column===o)return i1?u=1:(c--,u=n.getLineMaxColumn(c)):(g&&u<=g.end+1&&(g=h._findPreviousWordOnLine(i,n,new a.L(c,g.start+1))),g?u=g.end+1:u>1?u=1:(c--,u=n.getLineMaxColumn(c))),new l.e(c,u,d.lineNumber,d.column)}static deleteInsideWord(e,t,i){if(!i.isEmpty())return i;const n=new a.L(i.positionLineNumber,i.positionColumn),o=this._deleteInsideWordWhitespace(t,n);return o||this._deleteInsideWordDetermineDeleteRange(e,t,n)}static _charAtIsWhitespace(e,t){const i=e.charCodeAt(t);return 32===i||9===i}static _deleteInsideWordWhitespace(e,t){const i=e.getLineContent(t.lineNumber),n=i.length;if(0===n)return null;let o=Math.max(t.column-2,0);if(!this._charAtIsWhitespace(i,o))return null;let s=Math.min(t.column-1,n-1);if(!this._charAtIsWhitespace(i,s))return null;for(;o>0&&this._charAtIsWhitespace(i,o-1);)o--;for(;s+11?new l.e(i.lineNumber-1,t.getLineMaxColumn(i.lineNumber-1),i.lineNumber,1):i.lineNumbere.start+1<=i.column&&i.column<=e.end+1,r=(e,t)=>(e=Math.min(e,i.column),t=Math.max(t,i.column),new l.e(i.lineNumber,e,i.lineNumber,t)),a=e=>{let t=e.start+1,i=e.end+1,s=!1;for(;i-11&&this._charAtIsWhitespace(n,t-2);)t--;return r(t,i)},d=h._findPreviousWordOnLine(e,t,i);if(d&&s(d))return a(d);const c=h._findNextWordOnLine(e,t,i);return c&&s(c)?a(c):d&&c?r(d.end+1,c.start+1):d?r(d.start+1,d.end+1):c?r(c.start+1,c.end+1):r(1,o+1)}static _deleteWordPartLeft(e,t){if(!t.isEmpty())return t;const i=t.getPosition(),n=h._moveWordPartLeft(e,i);return new l.e(i.lineNumber,i.column,n.lineNumber,n.column)}static _findFirstNonWhitespaceChar(e,t){const i=e.length;for(let n=t;n=m.start+1&&(m=h._findNextWordOnLine(i,n,new a.L(d,m.end+1))),m?c=m.start+1:cBoolean(e)))}},68170:(e,t,i)=>{i.d(t,{LM:()=>u,LN:()=>v,Tp:()=>_,Vi:()=>g,rS:()=>p});var n=i(2067),o=i(10670),s=i(67078),r=i(78366),a=i(5255),l=i(48941);const h=()=>!0,d=()=>!1,c=e=>" "===e||"\t"===e;class u{static shouldRecreate(e){return e.hasChanged(145)||e.hasChanged(131)||e.hasChanged(37)||e.hasChanged(77)||e.hasChanged(79)||e.hasChanged(80)||e.hasChanged(6)||e.hasChanged(7)||e.hasChanged(11)||e.hasChanged(9)||e.hasChanged(10)||e.hasChanged(14)||e.hasChanged(128)||e.hasChanged(50)||e.hasChanged(91)||e.hasChanged(130)}constructor(e,t,i,n){var o;this.languageConfigurationService=n,this._cursorMoveConfigurationBrand=void 0,this._languageId=e;const s=i.options,r=s.get(145),a=s.get(50);this.readOnly=s.get(91),this.tabSize=t.tabSize,this.indentSize=t.indentSize,this.insertSpaces=t.insertSpaces,this.stickyTabStops=s.get(116),this.lineHeight=a.lineHeight,this.typicalHalfwidthCharacterWidth=a.typicalHalfwidthCharacterWidth,this.pageSize=Math.max(1,Math.floor(r.height/this.lineHeight)-2),this.useTabStops=s.get(128),this.wordSeparators=s.get(131),this.emptySelectionClipboard=s.get(37),this.copyWithSyntaxHighlighting=s.get(25),this.multiCursorMergeOverlapping=s.get(77),this.multiCursorPaste=s.get(79),this.multiCursorLimit=s.get(80),this.autoClosingBrackets=s.get(6),this.autoClosingComments=s.get(7),this.autoClosingQuotes=s.get(11),this.autoClosingDelete=s.get(9),this.autoClosingOvertype=s.get(10),this.autoSurround=s.get(14),this.autoIndent=s.get(12),this.wordSegmenterLocales=s.get(130),this.surroundingPairs={},this._electricChars=null,this.shouldAutoCloseBefore={quote:this._getShouldAutoClose(e,this.autoClosingQuotes,!0),comment:this._getShouldAutoClose(e,this.autoClosingComments,!1),bracket:this._getShouldAutoClose(e,this.autoClosingBrackets,!1)},this.autoClosingPairs=this.languageConfigurationService.getLanguageConfiguration(e).getAutoClosingPairs();const l=this.languageConfigurationService.getLanguageConfiguration(e).getSurroundingPairs();if(l)for(const d of l)this.surroundingPairs[d.open]=d.close;const h=this.languageConfigurationService.getLanguageConfiguration(e).comments;this.blockCommentStartToken=null!==(o=null===h||void 0===h?void 0:h.blockCommentStartToken)&&void 0!==o?o:null}get electricChars(){var e;if(!this._electricChars){this._electricChars={};const t=null===(e=this.languageConfigurationService.getLanguageConfiguration(this._languageId).electricCharacter)||void 0===e?void 0:e.getElectricCharacters();if(t)for(const e of t)this._electricChars[e]=!0}return this._electricChars}onElectricCharacter(e,t,i){const n=(0,r.wH)(t,i-1),o=this.languageConfigurationService.getLanguageConfiguration(n.languageId).electricCharacter;return o?o.onElectricCharacter(e,n,i-n.firstCharOffset):null}normalizeIndentation(e){return(0,l.x)(e,this.indentSize,this.insertSpaces)}_getShouldAutoClose(e,t,i){switch(t){case"beforeWhitespace":return c;case"languageDefined":return this._getLanguageDefinedShouldAutoClose(e,i);case"always":return h;case"never":return d}}_getLanguageDefinedShouldAutoClose(e,t){const i=this.languageConfigurationService.getLanguageConfiguration(e).getAutoCloseBeforeSet(t);return e=>-1!==i.indexOf(e)}visibleColumnFromColumn(e,t){return a.i.visibleColumnFromColumn(e.getLineContent(t.lineNumber),t.column,this.tabSize)}columnFromVisibleColumn(e,t,i){const n=a.i.columnFromVisibleColumn(e.getLineContent(t),i,this.tabSize),o=e.getLineMinColumn(t);if(ns?s:n}}class g{static fromModelState(e){return new m(e)}static fromViewState(e){return new f(e)}static fromModelSelection(e){const t=s.Y.liftSelection(e),i=new p(o.e.fromPositions(t.getSelectionStart()),0,0,t.getPosition(),0);return g.fromModelState(i)}static fromModelSelections(e){const t=[];for(let i=0,n=e.length;i{i.d(t,{KU:()=>r,NT:()=>d,i8:()=>a,n0:()=>h,zl:()=>l});var n=i(75629),o=i(85108),s=i(57866);class r{static trivial(e,t){return new r([new a(s.q.ofLength(e.length),s.q.ofLength(t.length))],!1)}static trivialTimedOut(e,t){return new r([new a(s.q.ofLength(e.length),s.q.ofLength(t.length))],!0)}constructor(e,t){this.diffs=e,this.hitTimeout=t}}class a{static invert(e,t){const i=[];return(0,n.zy)(e,((e,n)=>{i.push(a.fromOffsetPairs(e?e.getEndExclusives():l.zero,n?n.getStarts():new l(t,(e?e.seq2Range.endExclusive-e.seq1Range.endExclusive:0)+t)))})),i}static fromOffsetPairs(e,t){return new a(new s.q(e.offset1,t.offset1),new s.q(e.offset2,t.offset2))}constructor(e,t){this.seq1Range=e,this.seq2Range=t}swap(){return new a(this.seq2Range,this.seq1Range)}toString(){return"".concat(this.seq1Range," <-> ").concat(this.seq2Range)}join(e){return new a(this.seq1Range.join(e.seq1Range),this.seq2Range.join(e.seq2Range))}delta(e){return 0===e?this:new a(this.seq1Range.delta(e),this.seq2Range.delta(e))}deltaStart(e){return 0===e?this:new a(this.seq1Range.deltaStart(e),this.seq2Range.deltaStart(e))}deltaEnd(e){return 0===e?this:new a(this.seq1Range.deltaEnd(e),this.seq2Range.deltaEnd(e))}intersect(e){const t=this.seq1Range.intersect(e.seq1Range),i=this.seq2Range.intersect(e.seq2Range);if(t&&i)return new a(t,i)}getStarts(){return new l(this.seq1Range.start,this.seq2Range.start)}getEndExclusives(){return new l(this.seq1Range.endExclusive,this.seq2Range.endExclusive)}}class l{constructor(e,t){this.offset1=e,this.offset2=t}toString(){return"".concat(this.offset1," <-> ").concat(this.offset2)}delta(e){return 0===e?this:new l(this.offset1+e,this.offset2+e)}equals(e){return this.offset1===e.offset1&&this.offset2===e.offset2}}l.zero=new l(0,0),l.max=new l(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);class h{isValid(){return!0}}h.instance=new h;class d{constructor(e){if(this.timeout=e,this.startTime=Date.now(),this.valid=!0,e<=0)throw new o.he("timeout must be positive")}isValid(){return!(Date.now()-this.startTime{i.d(t,{DW:()=>M});var n=i(75629),o=i(39880),s=i(56590),r=i(57866),a=i(10670),l=i(26006);class h{constructor(e,t){this.width=e,this.height=t,this.array=[],this.array=new Array(e*t)}get(e,t){return this.array[e+t*this.width]}set(e,t,i){this.array[e+t*this.width]=i}}function d(e){return 32===e||9===e}class c{static getKey(e){let t=this.chrKeys.get(e);return void 0===t&&(t=this.chrKeys.size,this.chrKeys.set(e,t)),t}constructor(e,t,i){this.range=e,this.lines=t,this.source=i,this.histogram=[];let n=0;for(let o=e.startLineNumber-1;o2&&void 0!==arguments[2]?arguments[2]:l.n0.instance,n=arguments.length>3?arguments[3]:void 0;if(0===e.length||0===t.length)return l.KU.trivial(e,t);const o=new h(e.length,t.length),s=new h(e.length,t.length),a=new h(e.length,t.length);for(let r=0;r0&&h>0&&3===s.get(r-1,h-1)&&(u+=a.get(r-1,h-1)),u+=n?n(r,h):1):u=-1;const g=Math.max(d,c,u);if(g===u){const e=r>0&&h>0?a.get(r-1,h-1):0;a.set(r,h,e+1),s.set(r,h,3)}else g===d?(a.set(r,h,0),s.set(r,h,1)):g===c&&(a.set(r,h,0),s.set(r,h,2));o.set(r,h,g)}const d=[];let c=e.length,u=t.length;function g(e,t){e+1===c&&t+1===u||d.push(new l.i8(new r.q(e+1,c),new r.q(t+1,u))),c=e,u=t}let m=e.length-1,f=t.length-1;for(;m>=0&&f>=0;)3===s.get(m,f)?(g(m,f),m--,f--):1===s.get(m,f)?m--:f--;return g(-1,-1),d.reverse(),new l.KU(d,!1)}}class g{compute(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l.n0.instance;if(0===e.length||0===t.length)return l.KU.trivial(e,t);const n=e,o=t;function s(e,t){for(;en.length||u>o.length)continue;const g=s(l,u);h.set(c,g);const f=l===r?d.get(c+1):d.get(c-1);if(d.set(c,g!==l?new m(f,l,u,g-l):f),h.get(c)===n.length&&h.get(c)-c===o.length)break e}}let u=d.get(c);const g=[];let _=n.length,v=o.length;for(;;){const e=u?u.x+u.length:0,t=u?u.y+u.length:0;if(e===_&&t===v||g.push(new l.i8(new r.q(e,_),new r.q(t,v))),!u)break;_=u.x,v=u.y,u=u.prev}return g.reverse(),new l.KU(g,!1)}}class m{constructor(e,t,i,n){this.prev=e,this.x=t,this.y=i,this.length=n}}class f{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){if(e<0){if((e=-e-1)>=this.negativeArr.length){const e=this.negativeArr;this.negativeArr=new Int32Array(2*e.length),this.negativeArr.set(e)}this.negativeArr[e]=t}else{if(e>=this.positiveArr.length){const e=this.positiveArr;this.positiveArr=new Int32Array(2*e.length),this.positiveArr.set(e)}this.positiveArr[e]=t}}}class p{constructor(){this.positiveArr=[],this.negativeArr=[]}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){e<0?(e=-e-1,this.negativeArr[e]=t):this.positiveArr[e]=t}}var _=i(94739),v=i(52910),b=i(65549),C=i(2067);class w{constructor(e,t,i){this.lines=e,this.considerWhitespaceChanges=i,this.elements=[],this.firstCharOffsetByLine=[],this.additionalOffsetByLine=[];let n=!1;t.start>0&&t.endExclusive>=e.length&&(t=new r.q(t.start-1,t.endExclusive),n=!0),this.lineRange=t,this.firstCharOffsetByLine[0]=0;for(let o=this.lineRange.start;oString.fromCharCode(e))).join("")}getElement(e){return this.elements[e]}get length(){return this.elements.length}getBoundaryScore(e){const t=k(e>0?this.elements[e-1]:-1),i=k(et<=e));return new C.L(this.lineRange.start+t+1,e-this.firstCharOffsetByLine[t]+this.additionalOffsetByLine[t]+1)}translateRange(e){return a.e.fromPositions(this.translateOffset(e.start),this.translateOffset(e.endExclusive))}findWordContaining(e){if(e<0||e>=this.elements.length)return;if(!y(this.elements[e]))return;let t=e;for(;t>0&&y(this.elements[t-1]);)t--;let i=e;for(;it<=e.start)))&&void 0!==t?t:0,o=null!==(i=(0,v.cn)(this.firstCharOffsetByLine,(t=>e.endExclusive<=t)))&&void 0!==i?i:this.elements.length;return new r.q(n,o)}}function y(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57}const S={0:0,1:0,2:0,3:10,4:2,5:30,6:3,7:10,8:10};function L(e){return S[e]}function k(e){return 10===e?8:13===e?7:d(e)?6:e>=97&&e<=122?0:e>=65&&e<=90?1:e>=48&&e<=57?2:-1===e?3:44===e||59===e?5:4}function D(e,t,i,o,r,a){let{moves:l,excludedChanges:h}=function(e,t,i,n){const o=[],s=e.filter((e=>e.modified.isEmpty&&e.original.length>=3)).map((e=>new c(e.original,t,e))),r=new Set(e.filter((e=>e.original.isEmpty&&e.modified.length>=3)).map((e=>new c(e.modified,i,e)))),a=new Set;for(const l of s){let e,t=-1;for(const i of r){const n=l.computeSimilarity(i);n>t&&(t=n,e=i)}if(t>.9&&e&&(r.delete(e),o.push(new _.f0(l.range,e.range)),a.add(l.source),a.add(e.source)),!n.isValid())return{moves:o,excludedChanges:a}}return{moves:o,excludedChanges:a}}(e,t,i,a);if(!a.isValid())return[];const d=function(e,t,i,o,r,a){const l=[],h=new b.ri;for(const n of e)for(let e=n.original.startLineNumber;ee.modified.startLineNumber),n.fv));for(const n of e){let e=[];for(let t=n.modified.startLineNumber;t{let{range:i}=t;for(const a of e)if(a.originalLineRange.endLineNumberExclusive+1===i.endLineNumberExclusive&&a.modifiedLineRange.endLineNumberExclusive+1===o.endLineNumberExclusive)return a.originalLineRange=new s.z(a.originalLineRange.startLineNumber,i.endLineNumberExclusive),a.modifiedLineRange=new s.z(a.modifiedLineRange.startLineNumber,o.endLineNumberExclusive),void r.push(a);const n={modifiedLineRange:o,originalLineRange:i};d.push(n),r.push(n)})),e=r}if(!a.isValid())return[]}d.sort((0,n.BV)((0,n.tT)((e=>e.modifiedLineRange.length),n.fv)));const c=new s.i,u=new s.i;for(const n of d){const e=n.modifiedLineRange.startLineNumber-n.originalLineRange.startLineNumber,t=c.subtractFrom(n.modifiedLineRange),i=u.subtractFrom(n.originalLineRange).getWithDelta(e),o=t.getIntersection(i);for(const n of o.ranges){if(n.length<3)continue;const t=n,i=n.delta(-e);l.push(new _.f0(i,t)),c.addRange(t),u.addRange(i)}}l.sort((0,n.tT)((e=>e.original.startLineNumber),n.fv));const g=new v.b1(e);for(let n=0;ne.original.startLineNumber<=t.original.startLineNumber)),h=(0,v.ti)(e,(e=>e.modified.startLineNumber<=t.modified.startLineNumber)),d=Math.max(t.original.startLineNumber-i.original.startLineNumber,t.modified.startLineNumber-h.modified.startLineNumber),m=g.findLastMonotonous((e=>e.original.startLineNumbere.modified.startLineNumbero.length||i>r.length)break;if(c.contains(i)||u.contains(e))break;if(!N(o[e-1],r[i-1],a))break}for(b>0&&(u.addRange(new s.z(t.original.startLineNumber-b,t.original.startLineNumber)),c.addRange(new s.z(t.modified.startLineNumber-b,t.modified.startLineNumber))),C=0;Co.length||i>r.length)break;if(c.contains(i)||u.contains(e))break;if(!N(o[e-1],r[i-1],a))break}C>0&&(u.addRange(new s.z(t.original.endLineNumberExclusive,t.original.endLineNumberExclusive+C)),c.addRange(new s.z(t.modified.endLineNumberExclusive,t.modified.endLineNumberExclusive+C))),(b>0||C>0)&&(l[n]=new _.f0(new s.z(t.original.startLineNumber-b,t.original.endLineNumberExclusive+C),new s.z(t.modified.startLineNumber-b,t.modified.endLineNumberExclusive+C)))}return l}(e.filter((e=>!h.has(e))),o,r,t,i,a);return(0,n.vA)(l,d),l=function(e){if(0===e.length)return e;e.sort((0,n.tT)((e=>e.original.startLineNumber),n.fv));const t=[e[0]];for(let i=1;i=0&&r>=0&&s+r<=2?t[t.length-1]=n.join(o):t.push(o)}return t}(l),l=l.filter((e=>{const i=e.original.toOffsetRange().slice(t).map((e=>e.trim()));return i.join("\n").length>=15&&function(e,t){let i=0;for(const n of e)t(n)&&i++;return i}(i,(e=>e.length>=2))>=2})),l=function(e,t){const i=new v.b1(e);return t=t.filter((t=>(i.findLastMonotonous((e=>e.original.startLineNumbere.modified.startLineNumber300&&t.length>300)return!1;const n=(new g).compute(new w([e],new r.q(0,1),!1),new w([t],new r.q(0,1),!1),i);let o=0;const s=l.i8.invert(n.diffs,e.length);for(const r of s)r.seq1Range.forEach((t=>{d(e.charCodeAt(t))||o++}));const a=function(t){let i=0;for(let n=0;nt.length?e:t);return o/a>.6&&a>10}var x=i(96025);class E{constructor(e,t){this.trimmedHash=e,this.lines=t}getElement(e){return this.trimmedHash[e]}get length(){return this.trimmedHash.length}getBoundaryScore(e){return 1e3-((0===e?0:I(this.lines[e-1]))+(e===this.lines.length?0:I(this.lines[e])))}getText(e){return this.lines.slice(e.start,e.endExclusive).join("\n")}isStronglyEqual(e,t){return this.lines[e]===this.lines[t]}}function I(e){let t=0;for(;te===t)))return new T.h([],[],!1);if(1===e.length&&0===e[0].length||1===t.length&&0===t[0].length)return new T.h([new _.gB(new s.z(1,e.length+1),new s.z(1,t.length+1),[new _.iy(new a.e(1,1,e.length,e[0].length+1),new a.e(1,1,t.length,t[0].length+1))])],[],!1);const h=0===i.maxComputationTimeMs?l.n0.instance:new l.NT(i.maxComputationTimeMs),d=!i.ignoreTrimWhitespace,c=new Map;function u(e){let t=c.get(e);return void 0===t&&(t=c.size,c.set(e,t)),t}const g=e.map((e=>u(e.trim()))),m=t.map((e=>u(e.trim()))),f=new E(g,e),p=new E(m,t),v=(()=>f.length+p.length<1700?this.dynamicProgrammingDiffing.compute(f,p,h,((i,n)=>e[i]===t[n]?0===t[n].length?.1:1+Math.log(1+t[n].length):.99)):this.myersDiffingAlgorithm.compute(f,p))();let b=v.diffs,C=v.hitTimeout;b=(0,x.xG)(f,p,b),b=(0,x.rh)(f,p,b);const w=[],y=i=>{if(d)for(let n=0;nn.seq1Range.start-S===n.seq2Range.start-L));y(n.seq1Range.start-S),S=n.seq1Range.endExclusive,L=n.seq2Range.endExclusive;const i=this.refineDiff(e,t,n,h,d);i.hitTimeout&&(C=!0);for(const e of i.mappings)w.push(e)}y(e.length-S);const k=A(w,e,t);let D=[];return i.computeMoves&&(D=this.computeMoves(k,e,t,g,m,h,d)),(0,o.eZ)((()=>{function i(e,t){if(e.lineNumber<1||e.lineNumber>t.length)return!1;const i=t[e.lineNumber-1];return!(e.column<1||e.column>i.length+1)}function n(e,t){return!(e.startLineNumber<1||e.startLineNumber>t.length+1)&&!(e.endLineNumberExclusive<1||e.endLineNumberExclusive>t.length+1)}for(const o of k){if(!o.innerChanges)return!1;for(const n of o.innerChanges){if(!(i(n.modifiedRange.getStartPosition(),t)&&i(n.modifiedRange.getEndPosition(),t)&&i(n.originalRange.getStartPosition(),e)&&i(n.originalRange.getEndPosition(),e)))return!1}if(!n(o.modified,t)||!n(o.original,e))return!1}return!0})),new T.h(k,D,C)}computeMoves(e,t,i,n,o,s,r){return D(e,t,i,n,o,s).map((e=>{const n=A(this.refineDiff(t,i,new l.i8(e.original.toOffsetRange(),e.modified.toOffsetRange()),s,r).mappings,t,i,!0);return new T.y(e,n)}))}refineDiff(e,t,i,n,o){const s=new w(e,i.seq1Range,o),r=new w(t,i.seq2Range,o),a=s.length+r.length<500?this.dynamicProgrammingDiffing.compute(s,r,n):this.myersDiffingAlgorithm.compute(s,r,n);let l=a.diffs;l=(0,x.xG)(s,r,l),l=(0,x.g0)(s,r,l),l=(0,x.oK)(s,r,l),l=(0,x.DI)(s,r,l);return{mappings:l.map((e=>new _.iy(s.translateRange(e.seq1Range),r.translateRange(e.seq2Range)))),hitTimeout:a.hitTimeout}}}function A(e,t,i){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const a=[];for(const o of(0,n.mw)(e.map((e=>function(e,t,i){let n=0,o=0;1===e.modifiedRange.endColumn&&1===e.originalRange.endColumn&&e.originalRange.startLineNumber+n<=e.originalRange.endLineNumber&&e.modifiedRange.startLineNumber+n<=e.modifiedRange.endLineNumber&&(o=-1);e.modifiedRange.startColumn-1>=i[e.modifiedRange.startLineNumber-1].length&&e.originalRange.startColumn-1>=t[e.originalRange.startLineNumber-1].length&&e.originalRange.startLineNumber<=e.originalRange.endLineNumber+o&&e.modifiedRange.startLineNumber<=e.modifiedRange.endLineNumber+o&&(n=1);const r=new s.z(e.originalRange.startLineNumber+n,e.originalRange.endLineNumber+1+o),a=new s.z(e.modifiedRange.startLineNumber+n,e.modifiedRange.endLineNumber+1+o);return new _.gB(r,a,[e])}(e,t,i))),((e,t)=>e.original.overlapOrTouch(t.original)||e.modified.overlapOrTouch(t.modified)))){const e=o[0],t=o[o.length-1];a.push(new _.gB(e.original.join(t.original),e.modified.join(t.modified),o.map((e=>e.innerChanges[0]))))}return(0,o.eZ)((()=>{if(!r&&a.length>0){if(a[0].modified.startLineNumber!==a[0].original.startLineNumber)return!1;if(i.length-a[a.length-1].modified.endLineNumberExclusive!==t.length-a[a.length-1].original.endLineNumberExclusive)return!1}return(0,o.DM)(a,((e,t)=>t.original.startLineNumber-e.original.endLineNumberExclusive===t.modified.startLineNumber-e.modified.endLineNumberExclusive&&e.original.endLineNumberExclusive{i.d(t,{DI:()=>u,g0:()=>d,oK:()=>h,rh:()=>c,xG:()=>r});var n=i(75629),o=i(57866),s=i(26006);function r(e,t,i){let n=i;return n=a(e,t,n),n=a(e,t,n),n=function(e,t,i){if(!e.getBoundaryScore||!t.getBoundaryScore)return i;for(let n=0;n0?i[n-1]:void 0,r=i[n],a=n+10&&(l=l.delta(h))}r.push(l)}return n.length>0&&r.push(n[n.length-1]),r}function l(e,t,i,n,o){let s=1;for(;e.seq1Range.start-s>=n.start&&e.seq2Range.start-s>=o.start&&i.isStronglyEqual(e.seq2Range.start-s,e.seq2Range.endExclusive-s)&&s<100;)s++;s--;let r=0;for(;e.seq1Range.start+rl&&(l=r,a=h)}return e.delta(a)}function h(e,t,i){const n=[];for(const o of i){const e=n[n.length-1];e?o.seq1Range.start-e.seq1Range.endExclusive<=2||o.seq2Range.start-e.seq2Range.endExclusive<=2?n[n.length-1]=new s.i8(e.seq1Range.join(o.seq1Range),e.seq2Range.join(o.seq2Range)):n.push(o):n.push(o)}return n}function d(e,t,i){const n=s.i8.invert(i,e.length),o=[];let r=new s.zl(0,0);function a(i,a){if(i.offset10;){const i=n[0];if(!(i.seq1Range.intersects(d.seq1Range)||i.seq2Range.intersects(d.seq2Range)))break;const o=e.findWordContaining(i.seq1Range.start),r=t.findWordContaining(i.seq2Range.start),a=new s.i8(o,r),l=a.intersect(i);if(u+=l.seq1Range.length,g+=l.seq2Range.length,d=d.join(a),!(d.seq1Range.endExclusive>=i.seq1Range.endExclusive))break;n.shift()}u+g<2*(d.seq1Range.length+d.seq2Range.length)/3&&o.push(d),r=d.getEndExclusives()}for(;n.length>0;){const e=n.shift();e.seq1Range.isEmpty||(a(e.getStarts(),e),a(e.getEndExclusives().delta(-1),e))}return function(e,t){const i=[];for(;e.length>0||t.length>0;){const n=e[0],o=t[0];let s;s=n&&(!o||n.seq1Range.start0&&i[i.length-1].seq1Range.endExclusive>=s.seq1Range.start?i[i.length-1]=i[i.length-1].join(s):i.push(s)}return i}(i,o)}function c(e,t,i){let n=i;if(0===n.length)return n;let s,r=0;do{s=!1;const a=[n[0]];for(let l=1;l5||i.seq1Range.length+i.seq2Range.length>5)}c(d,h)?(s=!0,a[a.length-1]=a[a.length-1].join(h)):a.push(h)}n=a}while(r++<10&&s);return n}function u(e,t,i){let r=i;if(0===r.length)return r;let a,l=0;do{a=!1;const d=[r[0]];for(let c=1;c5||s.length>500)return!1;const r=e.getText(s).trim();if(r.length>20||r.split(/\r\n|\r|\n/).length>1)return!1;const a=e.countLinesIn(i.seq1Range),l=i.seq1Range.length,h=t.countLinesIn(i.seq2Range),d=i.seq2Range.length,c=e.countLinesIn(n.seq1Range),m=n.seq1Range.length,f=t.countLinesIn(n.seq2Range),p=n.seq2Range.length,_=130;function v(e){return Math.min(e,_)}return Math.pow(Math.pow(v(40*a+l),1.5)+Math.pow(v(40*h+d),1.5),1.5)+Math.pow(Math.pow(v(40*c+m),1.5)+Math.pow(v(40*f+p),1.5),1.5)>(_**1.5)**1.5*1.3}m(g,u)?(a=!0,d[d.length-1]=d[d.length-1].join(u)):d.push(u)}r=d}while(l++<10&&a);const h=[];return(0,n.KO)(r,((t,i,n)=>{let r=i;function a(e){return e.length>0&&e.trim().length<=3&&i.seq1Range.length+i.seq2Range.length>100}const l=e.extendToFullLines(i.seq1Range),d=e.getText(new o.q(l.start,i.seq1Range.start));a(d)&&(r=r.deltaStart(-d.length));const c=e.getText(new o.q(i.seq1Range.endExclusive,l.endExclusive));a(c)&&(r=r.deltaEnd(c.length));const u=s.i8.fromOffsetPairs(t?t.getEndExclusives():s.zl.zero,n?n.getStarts():s.zl.max),g=r.intersect(u);h.length>0&&g.getStarts().equals(h[h.length-1].getEndExclusives())?h[h.length-1]=h[h.length-1].join(g):h.push(g)})),h}},55338:(e,t,i)=>{i.d(t,{h:()=>n,y:()=>o});class n{constructor(e,t,i){this.changes=e,this.moves=t,this.hitTimeout=i}}class o{constructor(e,t){this.lineRangeMapping=e,this.changes=t}}},94739:(e,t,i)=>{i.d(t,{f0:()=>o,gB:()=>s,iy:()=>r});var n=i(56590);class o{static inverse(e,t,i){const s=[];let r=1,a=1;for(const h of e){const e=new o(new n.z(r,h.original.startLineNumber),new n.z(a,h.modified.startLineNumber));e.modified.isEmpty||s.push(e),r=h.original.endLineNumberExclusive,a=h.modified.endLineNumberExclusive}const l=new o(new n.z(r,t+1),new n.z(a,i+1));return l.modified.isEmpty||s.push(l),s}static clip(e,t,i){const n=[];for(const s of e){const e=s.original.intersect(t),r=s.modified.intersect(i);e&&!e.isEmpty&&r&&!r.isEmpty&&n.push(new o(e,r))}return n}constructor(e,t){this.original=e,this.modified=t}toString(){return"{".concat(this.original.toString(),"->").concat(this.modified.toString(),"}")}flip(){return new o(this.modified,this.original)}join(e){return new o(this.original.join(e.original),this.modified.join(e.modified))}}class s extends o{static fromRangeMappings(e){const t=n.z.join(e.map((e=>n.z.fromRangeInclusive(e.originalRange)))),i=n.z.join(e.map((e=>n.z.fromRangeInclusive(e.modifiedRange))));return new s(t,i,e)}constructor(e,t,i){super(e,t),this.innerChanges=i}flip(){var e;return new s(this.modified,this.original,null===(e=this.innerChanges)||void 0===e?void 0:e.map((e=>e.flip())))}withInnerChangesFromLineRanges(){return new s(this.original,this.modified,[new r(this.original.toExclusiveRange(),this.modified.toExclusiveRange())])}}class r{constructor(e,t){this.originalRange=e,this.modifiedRange=t}toString(){return"{".concat(this.originalRange.toString(),"->").concat(this.modifiedRange.toString(),"}")}flip(){return new r(this.modifiedRange,this.originalRange)}}},45754:(e,t,i)=>{i.d(t,{p:()=>n});class n{constructor(e,t,i,n,o,s,r){this.id=e,this.label=t,this.alias=i,this.metadata=n,this._precondition=o,this._run=s,this._contextKeyService=r}isSupported(){return this._contextKeyService.contextMatchesRules(this._precondition)}run(e){return this.isSupported()?this._run(e):Promise.resolve(void 0)}}},7906:(e,t,i)=>{i.d(t,{g:()=>n});const n={ICodeEditor:"vs.editor.ICodeEditor",IDiffEditor:"vs.editor.IDiffEditor"}},54081:(e,t,i)=>{i.d(t,{u:()=>n});var n,o=i(71721),s=i(24920);!function(e){e.editorSimpleInput=new s.uy("editorSimpleInput",!1,!0),e.editorTextFocus=new s.uy("editorTextFocus",!1,o.NC("editorTextFocus","Whether the editor text has focus (cursor is blinking)")),e.focus=new s.uy("editorFocus",!1,o.NC("editorFocus","Whether the editor or an editor widget has focus (e.g. focus is in the find widget)")),e.textInputFocus=new s.uy("textInputFocus",!1,o.NC("textInputFocus","Whether an editor or a rich text input has focus (cursor is blinking)")),e.readOnly=new s.uy("editorReadonly",!1,o.NC("editorReadonly","Whether the editor is read-only")),e.inDiffEditor=new s.uy("inDiffEditor",!1,o.NC("inDiffEditor","Whether the context is a diff editor")),e.isEmbeddedDiffEditor=new s.uy("isEmbeddedDiffEditor",!1,o.NC("isEmbeddedDiffEditor","Whether the context is an embedded diff editor")),e.inMultiDiffEditor=new s.uy("inMultiDiffEditor",!1,o.NC("inMultiDiffEditor","Whether the context is a multi diff editor")),e.multiDiffEditorAllCollapsed=new s.uy("multiDiffEditorAllCollapsed",void 0,o.NC("multiDiffEditorAllCollapsed","Whether all files in multi diff editor are collapsed")),e.hasChanges=new s.uy("diffEditorHasChanges",!1,o.NC("diffEditorHasChanges","Whether the diff editor has changes")),e.comparingMovedCode=new s.uy("comparingMovedCode",!1,o.NC("comparingMovedCode","Whether a moved code block is selected for comparison")),e.accessibleDiffViewerVisible=new s.uy("accessibleDiffViewerVisible",!1,o.NC("accessibleDiffViewerVisible","Whether the accessible diff viewer is visible")),e.diffEditorRenderSideBySideInlineBreakpointReached=new s.uy("diffEditorRenderSideBySideInlineBreakpointReached",!1,o.NC("diffEditorRenderSideBySideInlineBreakpointReached","Whether the diff editor render side by side inline breakpoint is reached")),e.diffEditorInlineMode=new s.uy("diffEditorInlineMode",!1,o.NC("diffEditorInlineMode","Whether inline mode is active")),e.diffEditorOriginalWritable=new s.uy("diffEditorOriginalWritable",!1,o.NC("diffEditorOriginalWritable","Whether modified is writable in the diff editor")),e.diffEditorModifiedWritable=new s.uy("diffEditorModifiedWritable",!1,o.NC("diffEditorModifiedWritable","Whether modified is writable in the diff editor")),e.diffEditorOriginalUri=new s.uy("diffEditorOriginalUri","",o.NC("diffEditorOriginalUri","The uri of the original document")),e.diffEditorModifiedUri=new s.uy("diffEditorModifiedUri","",o.NC("diffEditorModifiedUri","The uri of the modified document")),e.columnSelection=new s.uy("editorColumnSelection",!1,o.NC("editorColumnSelection","Whether `editor.columnSelection` is enabled")),e.writable=e.readOnly.toNegated(),e.hasNonEmptySelection=new s.uy("editorHasSelection",!1,o.NC("editorHasSelection","Whether the editor has text selected")),e.hasOnlyEmptySelection=e.hasNonEmptySelection.toNegated(),e.hasMultipleSelections=new s.uy("editorHasMultipleSelections",!1,o.NC("editorHasMultipleSelections","Whether the editor has multiple selections")),e.hasSingleSelection=e.hasMultipleSelections.toNegated(),e.tabMovesFocus=new s.uy("editorTabMovesFocus",!1,o.NC("editorTabMovesFocus","Whether `Tab` will move focus out of the editor")),e.tabDoesNotMoveFocus=e.tabMovesFocus.toNegated(),e.isInEmbeddedEditor=new s.uy("isInEmbeddedEditor",!1,!0),e.canUndo=new s.uy("canUndo",!1,!0),e.canRedo=new s.uy("canRedo",!1,!0),e.hoverVisible=new s.uy("editorHoverVisible",!1,o.NC("editorHoverVisible","Whether the editor hover is visible")),e.hoverFocused=new s.uy("editorHoverFocused",!1,o.NC("editorHoverFocused","Whether the editor hover is focused")),e.stickyScrollFocused=new s.uy("stickyScrollFocused",!1,o.NC("stickyScrollFocused","Whether the sticky scroll is focused")),e.stickyScrollVisible=new s.uy("stickyScrollVisible",!1,o.NC("stickyScrollVisible","Whether the sticky scroll is visible")),e.standaloneColorPickerVisible=new s.uy("standaloneColorPickerVisible",!1,o.NC("standaloneColorPickerVisible","Whether the standalone color picker is visible")),e.standaloneColorPickerFocused=new s.uy("standaloneColorPickerFocused",!1,o.NC("standaloneColorPickerFocused","Whether the standalone color picker is focused")),e.inCompositeEditor=new s.uy("inCompositeEditor",void 0,o.NC("inCompositeEditor","Whether the editor is part of a larger editor (e.g. notebooks)")),e.notInCompositeEditor=e.inCompositeEditor.toNegated(),e.languageId=new s.uy("editorLangId","",o.NC("editorLangId","The language identifier of the editor")),e.hasCompletionItemProvider=new s.uy("editorHasCompletionItemProvider",!1,o.NC("editorHasCompletionItemProvider","Whether the editor has a completion item provider")),e.hasCodeActionsProvider=new s.uy("editorHasCodeActionsProvider",!1,o.NC("editorHasCodeActionsProvider","Whether the editor has a code actions provider")),e.hasCodeLensProvider=new s.uy("editorHasCodeLensProvider",!1,o.NC("editorHasCodeLensProvider","Whether the editor has a code lens provider")),e.hasDefinitionProvider=new s.uy("editorHasDefinitionProvider",!1,o.NC("editorHasDefinitionProvider","Whether the editor has a definition provider")),e.hasDeclarationProvider=new s.uy("editorHasDeclarationProvider",!1,o.NC("editorHasDeclarationProvider","Whether the editor has a declaration provider")),e.hasImplementationProvider=new s.uy("editorHasImplementationProvider",!1,o.NC("editorHasImplementationProvider","Whether the editor has an implementation provider")),e.hasTypeDefinitionProvider=new s.uy("editorHasTypeDefinitionProvider",!1,o.NC("editorHasTypeDefinitionProvider","Whether the editor has a type definition provider")),e.hasHoverProvider=new s.uy("editorHasHoverProvider",!1,o.NC("editorHasHoverProvider","Whether the editor has a hover provider")),e.hasDocumentHighlightProvider=new s.uy("editorHasDocumentHighlightProvider",!1,o.NC("editorHasDocumentHighlightProvider","Whether the editor has a document highlight provider")),e.hasDocumentSymbolProvider=new s.uy("editorHasDocumentSymbolProvider",!1,o.NC("editorHasDocumentSymbolProvider","Whether the editor has a document symbol provider")),e.hasReferenceProvider=new s.uy("editorHasReferenceProvider",!1,o.NC("editorHasReferenceProvider","Whether the editor has a reference provider")),e.hasRenameProvider=new s.uy("editorHasRenameProvider",!1,o.NC("editorHasRenameProvider","Whether the editor has a rename provider")),e.hasSignatureHelpProvider=new s.uy("editorHasSignatureHelpProvider",!1,o.NC("editorHasSignatureHelpProvider","Whether the editor has a signature help provider")),e.hasInlayHintsProvider=new s.uy("editorHasInlayHintsProvider",!1,o.NC("editorHasInlayHintsProvider","Whether the editor has an inline hints provider")),e.hasDocumentFormattingProvider=new s.uy("editorHasDocumentFormattingProvider",!1,o.NC("editorHasDocumentFormattingProvider","Whether the editor has a document formatting provider")),e.hasDocumentSelectionFormattingProvider=new s.uy("editorHasDocumentSelectionFormattingProvider",!1,o.NC("editorHasDocumentSelectionFormattingProvider","Whether the editor has a document selection formatting provider")),e.hasMultipleDocumentFormattingProvider=new s.uy("editorHasMultipleDocumentFormattingProvider",!1,o.NC("editorHasMultipleDocumentFormattingProvider","Whether the editor has multiple document formatting providers")),e.hasMultipleDocumentSelectionFormattingProvider=new s.uy("editorHasMultipleDocumentSelectionFormattingProvider",!1,o.NC("editorHasMultipleDocumentSelectionFormattingProvider","Whether the editor has multiple document selection formatting providers"))}(n||(n={}))},78278:(e,t,i)=>{i.d(t,{n:()=>s,y:()=>o});const n=[];function o(e){n.push(e)}function s(){return n.slice(0)}},55562:(e,t,i)=>{i.d(t,{N:()=>n});class n{static getLanguageId(e){return(255&e)>>>0}static getTokenType(e){return(768&e)>>>8}static containsBalancedBrackets(e){return 0!==(1024&e)}static getFontStyle(e){return(30720&e)>>>11}static getForeground(e){return(16744448&e)>>>15}static getBackground(e){return(4278190080&e)>>>24}static getClassNameFromMetadata(e){let t="mtk"+this.getForeground(e);const i=this.getFontStyle(e);return 1&i&&(t+=" mtki"),2&i&&(t+=" mtkb"),4&i&&(t+=" mtku"),8&i&&(t+=" mtks"),t}static getInlineStyleFromMetadata(e,t){const i=this.getForeground(e),n=this.getFontStyle(e);let o="color: ".concat(t[i],";");1&n&&(o+="font-style: italic;"),2&n&&(o+="font-weight: bold;");let s="";return 4&n&&(s+=" underline"),8&n&&(s+=" line-through"),s&&(o+="text-decoration:".concat(s,";")),o}static getPresentationFromMetadata(e){const t=this.getForeground(e),i=this.getFontStyle(e);return{foreground:t,italic:Boolean(1&i),bold:Boolean(2&i),underline:Boolean(4&i),strikethrough:Boolean(8&i)}}}},6440:(e,t,i)=>{i.d(t,{G:()=>s});var n=i(52223),o=i(51169);function s(e,t,i,r,a,l){if(Array.isArray(e)){let n=0;for(const o of e){const e=s(o,t,i,r,a,l);if(10===e)return e;e>n&&(n=e)}return n}if("string"===typeof e)return r?"*"===e?5:e===i?10:0:0;if(e){const{language:s,pattern:h,scheme:d,hasAccessToAllModels:c,notebookType:u}=e;if(!r&&!c)return 0;u&&a&&(t=a);let g=0;if(d)if(d===t.scheme)g=10;else{if("*"!==d)return 0;g=5}if(s)if(s===i)g=10;else{if("*"!==s)return 0;g=Math.max(g,5)}if(u)if(u===l)g=10;else{if("*"!==u||void 0===l)return 0;g=Math.max(g,5)}if(h){let e;if(e="string"===typeof h?h:{...h,base:(0,o.Fv)(h.base)},e!==t.fsPath&&!(0,n.EQ)(e,t.fsPath))return 0;g=10}return g}return 0}},761:(e,t,i)=>{i.d(t,{mY:()=>L,gX:()=>h,MY:()=>g,Nq:()=>c,DI:()=>_,AD:()=>D,gl:()=>k,bw:()=>d,rn:()=>E,MO:()=>N,w:()=>S,ln:()=>v,WW:()=>u,uZ:()=>y,WU:()=>f,RW:()=>x,hG:()=>p,R4:()=>w,vx:()=>b});var n=i(62974),o=i(82682),s=i(10670),r=i(24219),a=i(89599);class l extends a.JT{get isResolved(){return this._isResolved}constructor(e,t,i){super(),this._registry=e,this._languageId=t,this._factory=i,this._isDisposed=!1,this._resolvePromise=null,this._isResolved=!1}dispose(){this._isDisposed=!0,super.dispose()}async resolve(){return this._resolvePromise||(this._resolvePromise=this._create()),this._resolvePromise}async _create(){const e=await this._factory.tokenizationSupport;this._isResolved=!0,e&&!this._isDisposed&&this._register(this._registry.register(this._languageId,e))}}var h,d,c,u,g,m=i(71721);class f{constructor(e,t,i){this.offset=e,this.type=t,this.language=i,this._tokenBrand=void 0}toString(){return"("+this.offset+", "+this.type+")"}}class p{constructor(e,t){this.tokens=e,this.endState=t,this._tokenizationResultBrand=void 0}}class _{constructor(e,t){this.tokens=e,this.endState=t,this._encodedTokenizationResultBrand=void 0}}!function(e){const t=new Map;t.set(0,n.l.symbolMethod),t.set(1,n.l.symbolFunction),t.set(2,n.l.symbolConstructor),t.set(3,n.l.symbolField),t.set(4,n.l.symbolVariable),t.set(5,n.l.symbolClass),t.set(6,n.l.symbolStruct),t.set(7,n.l.symbolInterface),t.set(8,n.l.symbolModule),t.set(9,n.l.symbolProperty),t.set(10,n.l.symbolEvent),t.set(11,n.l.symbolOperator),t.set(12,n.l.symbolUnit),t.set(13,n.l.symbolValue),t.set(15,n.l.symbolEnum),t.set(14,n.l.symbolConstant),t.set(15,n.l.symbolEnum),t.set(16,n.l.symbolEnumMember),t.set(17,n.l.symbolKeyword),t.set(27,n.l.symbolSnippet),t.set(18,n.l.symbolText),t.set(19,n.l.symbolColor),t.set(20,n.l.symbolFile),t.set(21,n.l.symbolReference),t.set(22,n.l.symbolCustomColor),t.set(23,n.l.symbolFolder),t.set(24,n.l.symbolTypeParameter),t.set(25,n.l.account),t.set(26,n.l.issues),e.toIcon=function(e){let i=t.get(e);return i||(console.info("No codicon found for CompletionItemKind "+e),i=n.l.symbolProperty),i};const i=new Map;i.set("method",0),i.set("function",1),i.set("constructor",2),i.set("field",3),i.set("variable",4),i.set("class",5),i.set("struct",6),i.set("interface",7),i.set("module",8),i.set("property",9),i.set("event",10),i.set("operator",11),i.set("unit",12),i.set("value",13),i.set("constant",14),i.set("enum",15),i.set("enum-member",16),i.set("enumMember",16),i.set("keyword",17),i.set("snippet",27),i.set("text",18),i.set("color",19),i.set("file",20),i.set("reference",21),i.set("customcolor",22),i.set("folder",23),i.set("type-parameter",24),i.set("typeParameter",24),i.set("account",25),i.set("issue",26),e.fromString=function(e,t){let n=i.get(e);return"undefined"!==typeof n||t||(n=9),n}}(h||(h={})),function(e){e[e.Automatic=0]="Automatic",e[e.Explicit=1]="Explicit"}(d||(d={}));class v{constructor(e,t,i,n){this.range=e,this.text=t,this.completionKind=i,this.isSnippetText=n}equals(e){return s.e.lift(this.range).equalsRange(e.range)&&this.text===e.text&&this.completionKind===e.completionKind&&this.isSnippetText===e.isSnippetText}}function b(e){return e&&o.o.isUri(e.uri)&&s.e.isIRange(e.range)&&(s.e.isIRange(e.originSelectionRange)||s.e.isIRange(e.targetSelectionRange))}!function(e){e[e.Automatic=0]="Automatic",e[e.PasteAs=1]="PasteAs"}(c||(c={})),function(e){e[e.Invoke=1]="Invoke",e[e.TriggerCharacter=2]="TriggerCharacter",e[e.ContentChange=3]="ContentChange"}(u||(u={})),function(e){e[e.Text=0]="Text",e[e.Read=1]="Read",e[e.Write=2]="Write"}(g||(g={}));const C={17:(0,m.NC)("Array","array"),16:(0,m.NC)("Boolean","boolean"),4:(0,m.NC)("Class","class"),13:(0,m.NC)("Constant","constant"),8:(0,m.NC)("Constructor","constructor"),9:(0,m.NC)("Enum","enumeration"),21:(0,m.NC)("EnumMember","enumeration member"),23:(0,m.NC)("Event","event"),7:(0,m.NC)("Field","field"),0:(0,m.NC)("File","file"),11:(0,m.NC)("Function","function"),10:(0,m.NC)("Interface","interface"),19:(0,m.NC)("Key","key"),5:(0,m.NC)("Method","method"),1:(0,m.NC)("Module","module"),2:(0,m.NC)("Namespace","namespace"),20:(0,m.NC)("Null","null"),15:(0,m.NC)("Number","number"),18:(0,m.NC)("Object","object"),24:(0,m.NC)("Operator","operator"),3:(0,m.NC)("Package","package"),6:(0,m.NC)("Property","property"),14:(0,m.NC)("String","string"),22:(0,m.NC)("Struct","struct"),25:(0,m.NC)("TypeParameter","type parameter"),12:(0,m.NC)("Variable","variable")};function w(e,t){return(0,m.NC)("symbolAriaLabel","{0} ({1})",e,C[t])}var y,S,L,k;!function(e){const t=new Map;t.set(0,n.l.symbolFile),t.set(1,n.l.symbolModule),t.set(2,n.l.symbolNamespace),t.set(3,n.l.symbolPackage),t.set(4,n.l.symbolClass),t.set(5,n.l.symbolMethod),t.set(6,n.l.symbolProperty),t.set(7,n.l.symbolField),t.set(8,n.l.symbolConstructor),t.set(9,n.l.symbolEnum),t.set(10,n.l.symbolInterface),t.set(11,n.l.symbolFunction),t.set(12,n.l.symbolVariable),t.set(13,n.l.symbolConstant),t.set(14,n.l.symbolString),t.set(15,n.l.symbolNumber),t.set(16,n.l.symbolBoolean),t.set(17,n.l.symbolArray),t.set(18,n.l.symbolObject),t.set(19,n.l.symbolKey),t.set(20,n.l.symbolNull),t.set(21,n.l.symbolEnumMember),t.set(22,n.l.symbolStruct),t.set(23,n.l.symbolEvent),t.set(24,n.l.symbolOperator),t.set(25,n.l.symbolTypeParameter),e.toIcon=function(e){let i=t.get(e);return i||(console.info("No codicon found for SymbolKind "+e),i=n.l.symbolProperty),i}}(y||(y={}));class D{static fromValue(e){switch(e){case"comment":return D.Comment;case"imports":return D.Imports;case"region":return D.Region}return new D(e)}constructor(e){this.value=e}}D.Comment=new D("comment"),D.Imports=new D("imports"),D.Region=new D("region"),function(e){e[e.AIGenerated=1]="AIGenerated"}(S||(S={})),function(e){e.is=function(e){return!(!e||"object"!==typeof e)&&("string"===typeof e.id&&"string"===typeof e.title)}}(L||(L={})),function(e){e[e.Type=1]="Type",e[e.Parameter=2]="Parameter"}(k||(k={}));class N{constructor(e){this.createSupport=e,this._tokenizationSupport=null}dispose(){this._tokenizationSupport&&this._tokenizationSupport.then((e=>{e&&e.dispose()}))}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}const x=new class{constructor(){this._tokenizationSupports=new Map,this._factories=new Map,this._onDidChange=new r.Q5,this.onDidChange=this._onDidChange.event,this._colorMap=null}handleChange(e){this._onDidChange.fire({changedLanguages:e,changedColorMap:!1})}register(e,t){return this._tokenizationSupports.set(e,t),this.handleChange([e]),(0,a.OF)((()=>{this._tokenizationSupports.get(e)===t&&(this._tokenizationSupports.delete(e),this.handleChange([e]))}))}get(e){return this._tokenizationSupports.get(e)||null}registerFactory(e,t){var i;null===(i=this._factories.get(e))||void 0===i||i.dispose();const n=new l(this,e,t);return this._factories.set(e,n),(0,a.OF)((()=>{const t=this._factories.get(e);t&&t===n&&(this._factories.delete(e),t.dispose())}))}async getOrCreate(e){const t=this.get(e);if(t)return t;const i=this._factories.get(e);return!i||i.isResolved?null:(await i.resolve(),this.get(e))}isResolved(e){if(this.get(e))return!0;const t=this._factories.get(e);return!(t&&!t.isResolved)}setColorMap(e){this._colorMap=e,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}};var E;!function(e){e[e.Invoke=0]="Invoke",e[e.Automatic=1]="Automatic"}(E||(E={}))},1761:(e,t,i)=>{i.d(t,{$9:()=>d,UF:()=>h,n8:()=>l,r7:()=>a,tI:()=>c});var n=i(25085),o=i(10405),s=i(78366),r=i(40801);function a(e,t,i){let s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(e<4)return null;const r=(arguments.length>4?arguments[4]:void 0).getLanguageConfiguration(t.tokenization.getLanguageId()).indentRulesSupport;if(!r)return null;if(i<=1)return{indentation:"",action:null};for(let n=i-1;n>0&&""===t.getLineContent(n);n--)if(1===n)return{indentation:"",action:null};const a=function(e,t,i){const n=e.tokenization.getLanguageIdAtPosition(t,0);if(t>1){let o,s=-1;for(o=t-1;o>=1;o--){if(e.tokenization.getLanguageIdAtPosition(o,0)!==n)return s;const t=e.getLineContent(o);if(!i.shouldIgnore(t)&&!/^\s+$/.test(t)&&""!==t)return o;s=o}}return-1}(t,i,r);if(a<0)return null;if(a<1)return{indentation:"",action:null};const l=t.getLineContent(a);if(r.shouldIncrease(l)||r.shouldIndentNextLine(l))return{indentation:n.V8(l),action:o.wU.Indent,line:a};if(r.shouldDecrease(l))return{indentation:n.V8(l),action:null,line:a};{if(1===a)return{indentation:n.V8(t.getLineContent(a)),action:null,line:a};const e=a-1,i=r.getIndentMetadata(t.getLineContent(e));if(!(3&i)&&4&i){let i=0;for(let n=e-1;n>0;n--)if(!r.shouldIndentNextLine(t.getLineContent(n))){i=n;break}return{indentation:n.V8(t.getLineContent(i+1)),action:null,line:i+1}}if(s)return{indentation:n.V8(t.getLineContent(a)),action:null,line:a};for(let s=a;s>0;s--){const e=t.getLineContent(s);if(r.shouldIncrease(e))return{indentation:n.V8(e),action:o.wU.Indent,line:s};if(r.shouldIndentNextLine(e)){let e=0;for(let i=s-1;i>0;i--)if(!r.shouldIndentNextLine(t.getLineContent(s))){e=i;break}return{indentation:n.V8(t.getLineContent(e+1)),action:null,line:e+1}}if(r.shouldDecrease(e))return{indentation:n.V8(e),action:null,line:s}}return{indentation:n.V8(t.getLineContent(1)),action:null,line:1}}}function l(e,t,i,s,r,l){if(e<4)return null;const h=l.getLanguageConfiguration(i);if(!h)return null;const d=l.getLanguageConfiguration(i).indentRulesSupport;if(!d)return null;const c=a(e,t,s,void 0,l),u=t.getLineContent(s);if(c){const i=c.line;if(void 0!==i){let a=!0;for(let e=i;e0&&d.getLanguageId(0)!==c.languageId?(f=!0,g=u.substr(0,i.startColumn-1-c.firstCharOffset)):g=d.getLineContent().substring(0,i.startColumn-1),i.isEmpty())m=u.substr(i.startColumn-1-c.firstCharOffset);else{m=(0,r.n2)(t,i.endLineNumber,i.endColumn).getLineContent().substr(i.endColumn-1-c.firstCharOffset)}const p=h.getLanguageConfiguration(c.languageId).indentRulesSupport;if(!p)return null;const _=g,v=n.V8(g),b={tokenization:{getLineTokens:e=>t.tokenization.getLineTokens(e),getLanguageId:()=>t.getLanguageId(),getLanguageIdAtPosition:(e,i)=>t.getLanguageIdAtPosition(e,i)},getLineContent:e=>e===i.startLineNumber?_:t.getLineContent(e)},C=n.V8(d.getLineContent()),w=a(e,b,i.startLineNumber+1,void 0,h);if(!w){const e=f?C:v;return{beforeEnter:e,afterEnter:e}}let y=f?C:w.indentation;return w.action===o.wU.Indent&&(y=l.shiftIndent(y)),p.shouldDecrease(m)&&(y=l.unshiftIndent(y)),{beforeEnter:f?C:v,afterEnter:y}}function d(e,t,i,n,s,l){if(e<4)return null;const h=(0,r.n2)(t,i.startLineNumber,i.startColumn);if(h.firstCharOffset)return null;const d=l.getLanguageConfiguration(h.languageId).indentRulesSupport;if(!d)return null;const c=h.getLineContent(),u=c.substr(0,i.startColumn-1-h.firstCharOffset);let g;if(i.isEmpty())g=c.substr(i.startColumn-1-h.firstCharOffset);else{g=(0,r.n2)(t,i.endLineNumber,i.endColumn).getLineContent().substr(i.endColumn-1-h.firstCharOffset)}if(!d.shouldDecrease(u+g)&&d.shouldDecrease(u+n+g)){const n=a(e,t,i.startLineNumber,!1,l);if(!n)return null;let r=n.indentation;return n.action!==o.wU.Indent&&(r=s.unshiftIndent(r)),r}return null}function c(e,t,i){const n=i.getLanguageConfiguration(e.getLanguageId()).indentRulesSupport;return n?t<1||t>e.getLineCount()?null:n.getIndentMetadata(e.getLineContent(t)):null}},16726:(e,t,i)=>{i.d(t,{A:()=>s});var n=i(10405),o=i(40801);function s(e,t,i,s){const r=(0,o.n2)(t,i.startLineNumber,i.startColumn),a=s.getLanguageConfiguration(r.languageId);if(!a)return null;const l=r.getLineContent(),h=l.substr(0,i.startColumn-1-r.firstCharOffset);let d;if(i.isEmpty())d=l.substr(i.startColumn-1-r.firstCharOffset);else{d=(0,o.n2)(t,i.endLineNumber,i.endColumn).getLineContent().substr(i.endColumn-1-r.firstCharOffset)}let c="";if(i.startLineNumber>1&&0===r.firstCharOffset){const e=(0,o.n2)(t,i.startLineNumber-1);e.languageId===r.languageId&&(c=e.getLineContent())}const u=a.onEnter(e,c,h,d);if(!u)return null;const g=u.indentAction;let m=u.appendText;const f=u.removeText||0;m?g===n.wU.Indent&&(m="\t"+m):m=g===n.wU.Indent||g===n.wU.IndentOutdent?"\t":"";let p=(0,o.u0)(t,i.startLineNumber,i.startColumn);return f&&(p=p.substring(0,p.length-f)),{indentAction:g,appendText:m,removeText:f,indentation:p}}},69311:(e,t,i)=>{i.d(t,{O:()=>n});const n=(0,i(34304).yh)("languageService")},10405:(e,t,i)=>{var n;i.d(t,{V6:()=>o,c$:()=>s,wU:()=>n}),function(e){e[e.None=0]="None",e[e.Indent=1]="Indent",e[e.IndentOutdent=2]="IndentOutdent",e[e.Outdent=3]="Outdent"}(n||(n={}));class o{constructor(e){if(this._neutralCharacter=null,this._neutralCharacterSearched=!1,this.open=e.open,this.close=e.close,this._inString=!0,this._inComment=!0,this._inRegEx=!0,Array.isArray(e.notIn))for(let t=0,i=e.notIn.length;t{i.d(t,{c_:()=>T,u0:()=>O,n2:()=>P});var n=i(24219),o=i(89599),s=i(25085),r=i(42696),a=i(10405),l=i(78366);class h{constructor(e){if(e.autoClosingPairs?this._autoClosingPairs=e.autoClosingPairs.map((e=>new a.V6(e))):e.brackets?this._autoClosingPairs=e.brackets.map((e=>new a.V6({open:e[0],close:e[1]}))):this._autoClosingPairs=[],e.__electricCharacterSupport&&e.__electricCharacterSupport.docComment){const t=e.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new a.V6({open:t.open,close:t.close||""}))}this._autoCloseBeforeForQuotes="string"===typeof e.autoCloseBefore?e.autoCloseBefore:h.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES,this._autoCloseBeforeForBrackets="string"===typeof e.autoCloseBefore?e.autoCloseBefore:h.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS,this._surroundingPairs=e.surroundingPairs||this._autoClosingPairs}getAutoClosingPairs(){return this._autoClosingPairs}getAutoCloseBeforeSet(e){return e?this._autoCloseBeforeForQuotes:this._autoCloseBeforeForBrackets}getSurroundingPairs(){return this._surroundingPairs}}h.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES=";:.,=}])> \n\t",h.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS="'\"`;:.,=}])> \n\t";var d=i(75629),c=i(43097);class u{constructor(e){this._richEditBrackets=e}getElectricCharacters(){const e=[];if(this._richEditBrackets)for(const t of this._richEditBrackets.brackets)for(const i of t.close){const t=i.charAt(i.length-1);e.push(t)}return(0,d.EB)(e)}onElectricCharacter(e,t,i){if(!this._richEditBrackets||0===this._richEditBrackets.brackets.length)return null;const n=t.findTokenIndexAtOffset(i-1);if((0,l.Bu)(t.getStandardTokenType(n)))return null;const o=this._richEditBrackets.reversedRegex,s=t.getLineContent().substring(0,i-1)+e,r=c.Vr.findPrevBracketInRange(o,1,s,0,s.length);if(!r)return null;const a=s.substring(r.startColumn-1,r.endColumn-1).toLowerCase();if(this._richEditBrackets.textIsOpenBracket[a])return null;const h=t.getActualLineContentBefore(r.startColumn-1);return/^\s*$/.test(h)?{matchOpenBracket:a}:null}}function g(e){return e.global&&(e.lastIndex=0),!0}class m{constructor(e){this._indentationRules=e}shouldIncrease(e){return!!(this._indentationRules&&this._indentationRules.increaseIndentPattern&&g(this._indentationRules.increaseIndentPattern)&&this._indentationRules.increaseIndentPattern.test(e))}shouldDecrease(e){return!!(this._indentationRules&&this._indentationRules.decreaseIndentPattern&&g(this._indentationRules.decreaseIndentPattern)&&this._indentationRules.decreaseIndentPattern.test(e))}shouldIndentNextLine(e){return!!(this._indentationRules&&this._indentationRules.indentNextLinePattern&&g(this._indentationRules.indentNextLinePattern)&&this._indentationRules.indentNextLinePattern.test(e))}shouldIgnore(e){return!!(this._indentationRules&&this._indentationRules.unIndentedLinePattern&&g(this._indentationRules.unIndentedLinePattern)&&this._indentationRules.unIndentedLinePattern.test(e))}getIndentMetadata(e){let t=0;return this.shouldIncrease(e)&&(t+=1),this.shouldDecrease(e)&&(t+=2),this.shouldIndentNextLine(e)&&(t+=4),this.shouldIgnore(e)&&(t+=8),t}}var f=i(85108);class p{constructor(e){(e=e||{}).brackets=e.brackets||[["(",")"],["{","}"],["[","]"]],this._brackets=[],e.brackets.forEach((e=>{const t=p._createOpenBracketRegExp(e[0]),i=p._createCloseBracketRegExp(e[1]);t&&i&&this._brackets.push({open:e[0],openRegExp:t,close:e[1],closeRegExp:i})})),this._regExpRules=e.onEnterRules||[]}onEnter(e,t,i,n){if(e>=3)for(let o=0,s=this._regExpRules.length;o!e.reg||(e.reg.lastIndex=0,e.reg.test(e.text)))))return e.action}if(e>=2&&i.length>0&&n.length>0)for(let o=0,s=this._brackets.length;o=2&&i.length>0)for(let o=0,s=this._brackets.length;o{const t=new Set;return{info:new D(this,e,t),closing:t}})),o=new y.b((e=>{const t=new Set,i=new Set;return{info:new N(this,e,t,i),opening:t,openingColorized:i}}));for(const[r,a]of i){const e=n.get(r),t=o.get(a);e.closing.add(t.info),t.opening.add(e.info)}const s=t.colorizedBracketPairs?L(t.colorizedBracketPairs):i.filter((e=>!("<"===e[0]&&">"===e[1])));for(const[r,a]of s){const e=n.get(r),t=o.get(a);e.closing.add(t.info),t.openingColorized.add(e.info),t.opening.add(e.info)}this._openingBrackets=new Map([...n.cachedValues].map((e=>{let[t,i]=e;return[t,i.info]}))),this._closingBrackets=new Map([...o.cachedValues].map((e=>{let[t,i]=e;return[t,i.info]})))}get openingBrackets(){return[...this._openingBrackets.values()]}get closingBrackets(){return[...this._closingBrackets.values()]}getOpeningBracketInfo(e){return this._openingBrackets.get(e)}getClosingBracketInfo(e){return this._closingBrackets.get(e)}getBracketInfo(e){return this.getOpeningBracketInfo(e)||this.getClosingBracketInfo(e)}}function L(e){return e.filter((e=>{let[t,i]=e;return""!==t&&""!==i}))}class k{constructor(e,t){this.config=e,this.bracketText=t}get languageId(){return this.config.languageId}}class D extends k{constructor(e,t,i){super(e,t),this.openedBrackets=i,this.isOpeningBracket=!0}}class N extends k{constructor(e,t,i,n){super(e,t),this.openingBrackets=i,this.openingColorizedBrackets=n,this.isOpeningBracket=!1}closes(e){return e.config===this.config&&this.openingBrackets.has(e)}closesColorized(e){return e.config===this.config&&this.openingColorizedBrackets.has(e)}getOpeningBrackets(){return[...this.openingBrackets]}}var x=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},E=function(e,t){return function(i,n){t(i,n,e)}};class I{constructor(e){this.languageId=e}affects(e){return!this.languageId||this.languageId===e}}const T=(0,_.yh)("languageConfigurationService");let M=class extends o.JT{constructor(e,t){super(),this.configurationService=e,this.languageService=t,this._registry=this._register(new W),this.onDidChangeEmitter=this._register(new n.Q5),this.onDidChange=this.onDidChangeEmitter.event,this.configurations=new Map;const i=new Set(Object.values(A));this._register(this.configurationService.onDidChangeConfiguration((e=>{const t=e.change.keys.some((e=>i.has(e))),n=e.change.overrides.filter((e=>{let[t,n]=e;return n.some((e=>i.has(e)))})).map((e=>{let[t]=e;return t}));if(t)this.configurations.clear(),this.onDidChangeEmitter.fire(new I(void 0));else for(const i of n)this.languageService.isRegisteredLanguageId(i)&&(this.configurations.delete(i),this.onDidChangeEmitter.fire(new I(i)))}))),this._register(this._registry.onDidChange((e=>{this.configurations.delete(e.languageId),this.onDidChangeEmitter.fire(new I(e.languageId))})))}register(e,t,i){return this._registry.register(e,t,i)}getLanguageConfiguration(e){let t=this.configurations.get(e);return t||(t=function(e,t,i,n){let o=t.getLanguageConfiguration(e);if(!o){if(!n.isRegisteredLanguageId(e))return new H(e,{});o=new H(e,{})}const s=function(e,t){const i=t.getValue(A.brackets,{overrideIdentifier:e}),n=t.getValue(A.colorizedBracketPairs,{overrideIdentifier:e});return{brackets:R(i),colorizedBracketPairs:R(n)}}(o.languageId,i),r=B([o.underlyingConfig,s]);return new H(o.languageId,r)}(e,this._registry,this.configurationService,this.languageService),this.configurations.set(e,t)),t}};M=x([E(0,v.Ui),E(1,b.O)],M);const A={brackets:"editor.language.brackets",colorizedBracketPairs:"editor.language.colorizedBracketPairs"};function R(e){if(Array.isArray(e))return e.map((e=>{if(Array.isArray(e)&&2===e.length)return[e[0],e[1]]})).filter((e=>!!e))}function O(e,t,i){const n=e.getLineContent(t);let o=s.V8(n);return o.length>i-1&&(o=o.substring(0,i-1)),o}function P(e,t,i){e.tokenization.forceTokenization(t);const n=e.tokenization.getLineTokens(t),o="undefined"===typeof i?e.getLineMaxColumn(t)-1:i-1;return(0,l.wH)(n,o)}class F{constructor(e){this.languageId=e,this._resolved=null,this._entries=[],this._order=0,this._resolved=null}register(e,t){const i=new z(e,t,++this._order);return this._entries.push(i),this._resolved=null,(0,o.OF)((()=>{for(let e=0;ee.configuration))))}}function B(e){let t={comments:void 0,brackets:void 0,wordPattern:void 0,indentationRules:void 0,onEnterRules:void 0,autoClosingPairs:void 0,surroundingPairs:void 0,autoCloseBefore:void 0,folding:void 0,colorizedBracketPairs:void 0,__electricCharacterSupport:void 0};for(const i of e)t={comments:i.comments||t.comments,brackets:i.brackets||t.brackets,wordPattern:i.wordPattern||t.wordPattern,indentationRules:i.indentationRules||t.indentationRules,onEnterRules:i.onEnterRules||t.onEnterRules,autoClosingPairs:i.autoClosingPairs||t.autoClosingPairs,surroundingPairs:i.surroundingPairs||t.surroundingPairs,autoCloseBefore:i.autoCloseBefore||t.autoCloseBefore,folding:i.folding||t.folding,colorizedBracketPairs:i.colorizedBracketPairs||t.colorizedBracketPairs,__electricCharacterSupport:i.__electricCharacterSupport||t.__electricCharacterSupport};return t}class z{constructor(e,t,i){this.configuration=e,this.priority=t,this.order=i}static cmp(e,t){return e.priority===t.priority?e.order-t.order:e.priority-t.priority}}class V{constructor(e){this.languageId=e}}class W extends o.JT{constructor(){super(),this._entries=new Map,this._onDidChange=this._register(new n.Q5),this.onDidChange=this._onDidChange.event,this._register(this.register(w.bd,{brackets:[["(",")"],["[","]"],["{","}"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],colorizedBracketPairs:[],folding:{offSide:!0}},0))}register(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=this._entries.get(e);n||(n=new F(e),this._entries.set(e,n));const s=n.register(t,i);return this._onDidChange.fire(new V(e)),(0,o.OF)((()=>{s.dispose(),this._onDidChange.fire(new V(e))}))}getLanguageConfiguration(e){const t=this._entries.get(e);return(null===t||void 0===t?void 0:t.getResolvedConfiguration())||null}}class H{constructor(e,t){this.languageId=e,this.underlyingConfig=t,this._brackets=null,this._electricCharacter=null,this._onEnterSupport=this.underlyingConfig.brackets||this.underlyingConfig.indentationRules||this.underlyingConfig.onEnterRules?new p(this.underlyingConfig):null,this.comments=H._handleComments(this.underlyingConfig),this.characterPair=new h(this.underlyingConfig),this.wordDefinition=this.underlyingConfig.wordPattern||r.Af,this.indentationRules=this.underlyingConfig.indentationRules,this.underlyingConfig.indentationRules?this.indentRulesSupport=new m(this.underlyingConfig.indentationRules):this.indentRulesSupport=null,this.foldingRules=this.underlyingConfig.folding||{},this.bracketsNew=new S(e,this.underlyingConfig)}getWordDefinition(){return(0,r.eq)(this.wordDefinition)}get brackets(){return!this._brackets&&this.underlyingConfig.brackets&&(this._brackets=new c.EA(this.languageId,this.underlyingConfig.brackets)),this._brackets}get electricCharacter(){return this._electricCharacter||(this._electricCharacter=new u(this.brackets)),this._electricCharacter}onEnter(e,t,i,n){return this._onEnterSupport?this._onEnterSupport.onEnter(e,t,i,n):null}getAutoClosingPairs(){return new a.c$(this.characterPair.getAutoClosingPairs())}getAutoCloseBeforeSet(e){return this.characterPair.getAutoCloseBeforeSet(e)}getSurroundingPairs(){return this.characterPair.getSurroundingPairs()}static _handleComments(e){const t=e.comments;if(!t)return null;const i={};if(t.lineComment&&(i.lineCommentToken=t.lineComment),t.blockComment){const[e,n]=t.blockComment;i.blockCommentStartToken=e,i.blockCommentEndToken=n}return i}}(0,C.z)(T,M,1)},68150:(e,t,i)=>{i.d(t,{bd:()=>h,dQ:()=>l});var n=i(71721),o=i(24219),s=i(70311),r=i(51572),a=i(9694);const l=new class{constructor(){this._onDidChangeLanguages=new o.Q5,this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[]}registerLanguage(e){return this._languages.push(e),this._onDidChangeLanguages.fire(void 0),{dispose:()=>{for(let t=0,i=this._languages.length;t{i.d(t,{Dy:()=>r,Ri:()=>s,TJ:()=>o});var n=i(761);const o=new class{clone(){return this}equals(e){return this===e}};function s(e,t){return new n.hG([new n.WU(0,"",e)],t)}function r(e,t){const i=new Uint32Array(2);return i[0]=0,i[1]=(32768|e<<0|2<<24)>>>0,new n.DI(i,null===t?o:t)}},78366:(e,t,i)=>{function n(e,t){const i=e.getCount(),n=e.findTokenIndexAtOffset(t),s=e.getLanguageId(n);let r=n;for(;r+10&&e.getLanguageId(a-1)===s;)a--;return new o(e,s,a,r+1,e.getStartOffset(a),e.getEndOffset(r))}i.d(t,{Bu:()=>s,wH:()=>n});class o{constructor(e,t,i,n,o,s){this._scopedLineTokensBrand=void 0,this._actual=e,this.languageId=t,this._firstTokenIndex=i,this._lastTokenIndex=n,this.firstCharOffset=o,this._lastCharOffset=s}getLineContent(){return this._actual.getLineContent().substring(this.firstCharOffset,this._lastCharOffset)}getActualLineContentBefore(e){return this._actual.getLineContent().substring(0,this.firstCharOffset+e)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(e){return this._actual.findTokenIndexAtOffset(e+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(e){return this._actual.getStandardTokenType(e+this._firstTokenIndex)}}function s(e){return 0!==(3&e)}},43097:(e,t,i)=>{i.d(t,{EA:()=>a,Vr:()=>m});var n=i(25085),o=i(76071),s=i(10670);class r{constructor(e,t,i,n,o,s){this._richEditBracketBrand=void 0,this.languageId=e,this.index=t,this.open=i,this.close=n,this.forwardRegex=o,this.reversedRegex=s,this._openSet=r._toSet(this.open),this._closeSet=r._toSet(this.close)}isOpen(e){return this._openSet.has(e)}isClose(e){return this._closeSet.has(e)}static _toSet(e){const t=new Set;for(const i of e)t.add(i);return t}}class a{constructor(e,t){this._richEditBracketsBrand=void 0;const i=function(e){const t=e.length;e=e.map((e=>[e[0].toLowerCase(),e[1].toLowerCase()]));const i=[];for(let r=0;r{const[i,n]=e,[o,s]=t;return i===o||i===s||n===o||n===s},o=(e,n)=>{const o=Math.min(e,n),s=Math.max(e,n);for(let r=0;r0&&s.push({open:n,close:o})}return s}(t);this.brackets=i.map(((t,n)=>new r(e,n,t.open,t.close,function(e,t,i,n){let o=[];o=o.concat(e),o=o.concat(t);for(let s=0,r=o.length;s=0&&n.push(t);for(const t of s.close)t.indexOf(e)>=0&&n.push(t)}}function h(e,t){return e.length-t.length}function d(e){if(e.length<=1)return e;const t=[],i=new Set;for(const n of e)i.has(n)||(t.push(n),i.add(n));return t}function c(e){const t=/^[\w ]+$/.test(e);return e=n.ec(e),t?"\\b".concat(e,"\\b"):e}function u(e){const t="(".concat(e.map(c).join(")|("),")");return n.GF(t,!0)}const g=function(){let e=null,t=null;return function(i){return e!==i&&(e=i,t=function(e){const t=new Uint16Array(e.length);let i=0;for(let n=e.length-1;n>=0;n--)t[i++]=e.charCodeAt(n);return o.oe().decode(t)}(e)),t}}();class m{static _findPrevBracketInText(e,t,i,n){const o=i.match(e);if(!o)return null;const r=i.length-(o.index||0),a=o[0].length,l=n+r;return new s.e(t,l-a+1,t,l+1)}static findPrevBracketInRange(e,t,i,n,o){const s=g(i).substring(i.length-o,i.length-n);return this._findPrevBracketInText(e,t,s,n)}static findNextBracketInText(e,t,i,n){const o=i.match(e);if(!o)return null;const r=o.index||0,a=o[0].length;if(0===a)return null;const l=n+r;return new s.e(t,l+1,t,l+1+a)}static findNextBracketInRange(e,t,i,n,o){const s=i.substring(n,o);return this.findNextBracketInText(e,t,s,n)}}},2778:(e,t,i)=>{i.d(t,{C2:()=>l,Fq:()=>h});var n=i(25085),o=i(43471),s=i(761),r=i(22191);const a={getInitialState:()=>r.TJ,tokenizeEncoded:(e,t,i)=>(0,r.Dy)(0,i)};async function l(e,t,i){if(!i)return d(t,e.languageIdCodec,a);const n=await s.RW.getOrCreate(i);return d(t,e.languageIdCodec,n||a)}function h(e,t,i,n,o,s,r){let a="
    ",l=n,h=0,d=!0;for(let c=0,u=t.getCount();c0;)r&&d?(g+=" ",d=!1):(g+=" ",d=!0),e--;break}case 60:g+="<",d=!1;break;case 62:g+=">",d=!1;break;case 38:g+="&",d=!1;break;case 0:g+="�",d=!1;break;case 65279:case 8232:case 8233:case 133:g+="\ufffd",d=!1;break;case 13:g+="​",d=!1;break;case 32:r&&d?(g+=" ",d=!1):(g+=" ",d=!0);break;default:g+=String.fromCharCode(t),d=!1}}if(a+='').concat(g,""),u>o||l>=o)break}return a+="
    ",a}function d(e,t,i){let s='
    ';const r=n.uq(e);let a=i.getInitialState();for(let l=0,h=r.length;l0&&(s+="
    ");const h=i.tokenizeEncoded(e,!0,a);o.A.convertToEndOffset(h.tokens,e.length);const d=new o.A(h.tokens,e,t).inflate();let c=0;for(let t=0,i=d.getCount();t').concat(n.YU(e.substring(c,o)),""),c=o}a=h.endState}return s+="
    ",s}},27127:(e,t,i)=>{i.d(t,{Hf:()=>h,Qi:()=>d,RM:()=>s,Tx:()=>c,U:()=>o,dJ:()=>a,je:()=>u,pt:()=>g,sh:()=>n,tk:()=>l});var n,o,s,r=i(10451);!function(e){e[e.Left=1]="Left",e[e.Center=2]="Center",e[e.Right=4]="Right",e[e.Full=7]="Full"}(n||(n={})),function(e){e[e.Left=1]="Left",e[e.Center=2]="Center",e[e.Right=3]="Right"}(o||(o={})),function(e){e[e.Both=0]="Both",e[e.Right=1]="Right",e[e.Left=2]="Left",e[e.None=3]="None"}(s||(s={}));class a{get originalIndentSize(){return this._indentSizeIsTabSize?"tabSize":this.indentSize}constructor(e){this._textModelResolvedOptionsBrand=void 0,this.tabSize=Math.max(1,0|e.tabSize),"tabSize"===e.indentSize?(this.indentSize=this.tabSize,this._indentSizeIsTabSize=!0):(this.indentSize=Math.max(1,0|e.indentSize),this._indentSizeIsTabSize=!1),this.insertSpaces=Boolean(e.insertSpaces),this.defaultEOL=0|e.defaultEOL,this.trimAutoWhitespace=Boolean(e.trimAutoWhitespace),this.bracketPairColorizationOptions=e.bracketPairColorizationOptions}equals(e){return this.tabSize===e.tabSize&&this._indentSizeIsTabSize===e._indentSizeIsTabSize&&this.indentSize===e.indentSize&&this.insertSpaces===e.insertSpaces&&this.defaultEOL===e.defaultEOL&&this.trimAutoWhitespace===e.trimAutoWhitespace&&(0,r.fS)(this.bracketPairColorizationOptions,e.bracketPairColorizationOptions)}createChangeEvent(e){return{tabSize:this.tabSize!==e.tabSize,indentSize:this.indentSize!==e.indentSize,insertSpaces:this.insertSpaces!==e.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==e.trimAutoWhitespace}}}class l{constructor(e,t){this._findMatchBrand=void 0,this.range=e,this.matches=t}}function h(e){return e&&"function"===typeof e.read}class d{constructor(e,t,i,n,o,s){this.identifier=e,this.range=t,this.text=i,this.forceMoveMarkers=n,this.isAutoWhitespaceEdit=o,this._isTracked=s}}class c{constructor(e,t,i){this.regex=e,this.wordSeparators=t,this.simpleSearch=i}}class u{constructor(e,t,i){this.reverseEdits=e,this.changes=t,this.trimAutoWhitespaceLineNumbers=i}}function g(e){return!e.isTooLargeForSyncing()&&!e.isForSimpleWidget}},44028:(e,t,i)=>{i.d(t,{BH:()=>p,Dm:()=>v,Kd:()=>l,Y0:()=>h,n2:()=>_});var n=i(85108),o=i(5255),s=i(59321),r=i(36779);class a{get length(){return this._length}constructor(e){this._length=e}}class l extends a{static create(e,t,i){let n=e.length;return t&&(n=(0,s.Ii)(n,t.length)),i&&(n=(0,s.Ii)(n,i.length)),new l(n,e,t,i,t?t.missingOpeningBracketIds:r.tS.getEmpty())}get kind(){return 2}get listHeight(){return 0}get childrenLength(){return 3}getChild(e){switch(e){case 0:return this.openingBracket;case 1:return this.child;case 2:return this.closingBracket}throw new Error("Invalid child index")}get children(){const e=[];return e.push(this.openingBracket),this.child&&e.push(this.child),this.closingBracket&&e.push(this.closingBracket),e}constructor(e,t,i,n,o){super(e),this.openingBracket=t,this.child=i,this.closingBracket=n,this.missingOpeningBracketIds=o}canBeReused(e){return null!==this.closingBracket&&!e.intersects(this.missingOpeningBracketIds)}deepClone(){return new l(this.length,this.openingBracket.deepClone(),this.child&&this.child.deepClone(),this.closingBracket&&this.closingBracket.deepClone(),this.missingOpeningBracketIds)}computeMinIndentation(e,t){return this.child?this.child.computeMinIndentation((0,s.Ii)(e,this.openingBracket.length),t):Number.MAX_SAFE_INTEGER}}class h extends a{static create23(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=e.length,r=e.missingOpeningBracketIds;if(e.listHeight!==t.listHeight)throw new Error("Invalid list heights");if(o=(0,s.Ii)(o,t.length),r=r.merge(t.missingOpeningBracketIds),i){if(e.listHeight!==i.listHeight)throw new Error("Invalid list heights");o=(0,s.Ii)(o,i.length),r=r.merge(i.missingOpeningBracketIds)}return n?new c(o,e.listHeight+1,e,t,i,r):new d(o,e.listHeight+1,e,t,i,r)}static getEmpty(){return new g(s.xl,0,[],r.tS.getEmpty())}get kind(){return 4}get missingOpeningBracketIds(){return this._missingOpeningBracketIds}constructor(e,t,i){super(e),this.listHeight=t,this._missingOpeningBracketIds=i,this.cachedMinIndentation=-1}throwIfImmutable(){}makeLastElementMutable(){this.throwIfImmutable();const e=this.childrenLength;if(0===e)return;const t=this.getChild(e-1),i=4===t.kind?t.toMutable():t;return t!==i&&this.setChild(e-1,i),i}makeFirstElementMutable(){this.throwIfImmutable();if(0===this.childrenLength)return;const e=this.getChild(0),t=4===e.kind?e.toMutable():e;return e!==t&&this.setChild(0,t),t}canBeReused(e){if(e.intersects(this.missingOpeningBracketIds))return!1;if(0===this.childrenLength)return!1;let t=this;for(;4===t.kind;){const e=t.childrenLength;if(0===e)throw new n.he;t=t.getChild(e-1)}return t.canBeReused(e)}handleChildrenChanged(){this.throwIfImmutable();const e=this.childrenLength;let t=this.getChild(0).length,i=this.getChild(0).missingOpeningBracketIds;for(let n=1;n{i.d(t,{Q:()=>s,Y:()=>r});var n=i(10670),o=i(59321);class s{static fromModelContentChanges(e){return e.map((e=>{const t=n.e.lift(e.range);return new s((0,o.PZ)(t.getStartPosition()),(0,o.PZ)(t.getEndPosition()),(0,o.oR)(e.text))})).reverse()}constructor(e,t,i){this.startOffset=e,this.endOffset=t,this.newLength=i}toString(){return"[".concat((0,o.Hw)(this.startOffset),"...").concat((0,o.Hw)(this.endOffset),") -> ").concat((0,o.Hw)(this.newLength))}}class r{constructor(e){this.nextEditIdx=0,this.deltaOldToNewLineCount=0,this.deltaOldToNewColumnCount=0,this.deltaLineIdxInOld=-1,this.edits=e.map((e=>a.from(e)))}getOffsetBeforeChange(e){return this.adjustNextEdit(e),this.translateCurToOld(e)}getDistanceToNextChange(e){this.adjustNextEdit(e);const t=this.edits[this.nextEditIdx],i=t?this.translateOldToCur(t.offsetObj):null;return null===i?null:(0,o.BE)(e,i)}translateOldToCur(e){return e.lineCount===this.deltaLineIdxInOld?(0,o.Hg)(e.lineCount+this.deltaOldToNewLineCount,e.columnCount+this.deltaOldToNewColumnCount):(0,o.Hg)(e.lineCount+this.deltaOldToNewLineCount,e.columnCount)}translateCurToOld(e){const t=(0,o.Hw)(e);return t.lineCount-this.deltaOldToNewLineCount===this.deltaLineIdxInOld?(0,o.Hg)(t.lineCount-this.deltaOldToNewLineCount,t.columnCount-this.deltaOldToNewColumnCount):(0,o.Hg)(t.lineCount-this.deltaOldToNewLineCount,t.columnCount)}adjustNextEdit(e){for(;this.nextEditIdx{i.d(t,{Z:()=>h});var n=i(25085),o=i(44028),s=i(59321),r=i(36779),a=i(85421);class l{static createFromLanguage(e,t){function i(e){return t.getKey("".concat(e.languageId,":::").concat(e.bracketText))}const n=new Map;for(const l of e.bracketsNew.openingBrackets){const e=(0,s.Hg)(0,l.bracketText.length),t=i(l),h=r.tS.getEmpty().add(t,r.Qw);n.set(l.bracketText,new a.WU(e,1,t,h,o.n2.create(e,l,h)))}for(const l of e.bracketsNew.closingBrackets){const e=(0,s.Hg)(0,l.bracketText.length);let t=r.tS.getEmpty();const h=l.getOpeningBrackets();for(const n of h)t=t.add(i(n),r.Qw);n.set(l.bracketText,new a.WU(e,2,i(h[0]),t,o.n2.create(e,l,t)))}return new l(n)}constructor(e){this.map=e,this.hasRegExp=!1,this._regExpGlobal=null}getRegExpStr(){if(this.isEmpty)return null;{const e=[...this.map.keys()];return e.sort(),e.reverse(),e.map((e=>function(e){let t=(0,n.ec)(e);/^[\w ]+/.test(e)&&(t="\\b".concat(t));/[\w ]+$/.test(e)&&(t="".concat(t,"\\b"));return t}(e))).join("|")}}get regExpGlobal(){if(!this.hasRegExp){const e=this.getRegExpStr();this._regExpGlobal=e?new RegExp(e,"gi"):null,this.hasRegExp=!0}return this._regExpGlobal}getToken(e){return this.map.get(e.toLowerCase())}findClosingTokenText(e){for(const[t,i]of this.map)if(2===i.kind&&i.bracketIds.intersects(e))return t}get isEmpty(){return 0===this.map.size}}class h{constructor(e,t){this.denseKeyProvider=e,this.getLanguageConfiguration=t,this.languageIdToBracketTokens=new Map}didLanguageChange(e){return this.languageIdToBracketTokens.has(e)}getSingleLanguageBracketTokens(e){let t=this.languageIdToBracketTokens.get(e);return t||(t=l.createFromLanguage(this.getLanguageConfiguration(e),this.denseKeyProvider),this.languageIdToBracketTokens.set(e,t)),t}}},31246:(e,t,i)=>{i.d(t,{o:()=>r});var n=i(75629),o=i(74196),s=i(59321);function r(e,t){if(0===e.length)return t;if(0===t.length)return e;const i=new n.H9(l(e)),r=l(t);r.push({modified:!1,lengthBefore:void 0,lengthAfter:void 0});let h=i.dequeue();function d(e){if(void 0===e){const e=i.takeWhile((e=>!0))||[];return h&&e.unshift(h),e}const t=[];for(;h&&!(0,s.xd)(e);){const[n,o]=h.splitAt(e);t.push(n),e=(0,s.BE)(n.lengthAfter,e),h=null!==o&&void 0!==o?o:i.dequeue()}return(0,s.xd)(e)||t.push(new a(!1,e,e)),t}const c=[];function u(e,t,i){if(c.length>0&&(0,s.rM)(c[c.length-1].endOffset,e)){const e=c[c.length-1];c[c.length-1]=new o.Q(e.startOffset,t,(0,s.Ii)(e.newLength,i))}else c.push({startOffset:e,endOffset:t,newLength:i})}let g=s.xl;for(const n of r){const e=d(n.lengthBefore);if(n.modified){const t=(0,s.tQ)(e,(e=>e.lengthBefore)),i=(0,s.Ii)(g,t);u(g,i,n.lengthAfter),g=i}else for(const t of e){const e=g;g=(0,s.Ii)(g,t.lengthBefore),t.modified&&u(e,g,t.lengthAfter)}}return c}class a{constructor(e,t,i){this.modified=e,this.lengthBefore=t,this.lengthAfter=i}splitAt(e){const t=(0,s.BE)(e,this.lengthAfter);return(0,s.rM)(t,s.xl)?[this,void 0]:this.modified?[new a(this.modified,this.lengthBefore,e),new a(this.modified,s.xl,t)]:[new a(this.modified,e,e),new a(this.modified,t,t)]}toString(){return"".concat(this.modified?"M":"U",":").concat((0,s.Hw)(this.lengthBefore)," -> ").concat((0,s.Hw)(this.lengthAfter))}}function l(e){const t=[];let i=s.xl;for(const n of e){const e=(0,s.BE)(i,n.startOffset);(0,s.xd)(e)||t.push(new a(!1,e,e));const o=(0,s.BE)(n.startOffset,n.endOffset);t.push(new a(!0,o,n.newLength)),i=n.endOffset}return t}},59321:(e,t,i)=>{i.d(t,{BE:()=>_,By:()=>b,F_:()=>g,Hg:()=>d,Hw:()=>c,Ii:()=>m,PZ:()=>w,Qw:()=>y,VR:()=>v,W9:()=>u,Zq:()=>C,av:()=>r,oR:()=>S,rM:()=>p,tQ:()=>f,xd:()=>l,xl:()=>a});var n=i(25085),o=i(10670),s=i(59122);function r(e,t,i,n){return e!==i?d(i-e,n):d(0,n-t)}const a=0;function l(e){return 0===e}const h=2**26;function d(e,t){return e*h+t}function c(e){const t=e,i=Math.floor(t/h),n=t-i*h;return new s.A(i,n)}function u(e){return Math.floor(e/h)}function g(e){return e}function m(e,t){let i=e+t;return t>=h&&(i-=e%h),i}function f(e,t){return e.reduce(((e,i)=>m(e,t(i))),a)}function p(e,t){return e===t}function _(e,t){const i=e,n=t;if(n-i<=0)return a;const o=Math.floor(i/h),s=Math.floor(n/h),r=n-s*h;if(o===s){return d(0,r-(i-o*h))}return d(s-o,r)}function v(e,t){return e=t}function w(e){return d(e.lineNumber-1,e.column-1)}function y(e,t){const i=e,n=Math.floor(i/h),s=i-n*h,r=t,a=Math.floor(r/h),l=r-a*h;return new o.e(n+1,s+1,a+1,l+1)}function S(e){const t=(0,n.uq)(e);return d(t.length-1,t[t.length-1].length)}},3596:(e,t,i)=>{i.d(t,{w:()=>g});var n=i(44028),o=i(74196),s=i(36779),r=i(59321);function a(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(0===e.length)return null;if(1===e.length)return e[0];let i=e.length;for(;i>3;){const o=i>>1;for(let s=0;s=3?e[2]:null,t)}function l(e,t){return Math.abs(e.listHeight-t.listHeight)}function h(e,t){return e.listHeight===t.listHeight?n.Y0.create23(e,t,null,!1):e.listHeight>t.listHeight?function(e,t){let i=e=e.toMutable();const o=[];let s;for(;;){if(t.listHeight===i.listHeight){s=t;break}if(4!==i.kind)throw new Error("unexpected");o.push(i),i=i.makeLastElementMutable()}for(let r=o.length-1;r>=0;r--){const e=o[r];s?e.childrenLength>=3?s=n.Y0.create23(e.unappendChild(),s,null,!1):(e.appendChildOfSameHeight(s),s=void 0):e.handleChildrenChanged()}return s?n.Y0.create23(e,s,null,!1):e}(e,t):function(e,t){let i=e=e.toMutable();const o=[];for(;t.listHeight!==i.listHeight;){if(4!==i.kind)throw new Error("unexpected");o.push(i),i=i.makeFirstElementMutable()}let s=t;for(let r=o.length-1;r>=0;r--){const e=o[r];s?e.childrenLength>=3?s=n.Y0.create23(s,e.unprependChild(),null,!1):(e.prependChildOfSameHeight(s),s=void 0):e.handleChildrenChanged()}return s?n.Y0.create23(s,e,null,!1):e}(t,e)}class d{constructor(e){this.lastOffset=r.xl,this.nextNodes=[e],this.offsets=[r.xl],this.idxs=[]}readLongestNodeAt(e,t){if((0,r.VR)(e,this.lastOffset))throw new Error("Invalid offset");for(this.lastOffset=e;;){const i=u(this.nextNodes);if(!i)return;const n=u(this.offsets);if((0,r.VR)(e,n))return;if((0,r.VR)(n,e))if((0,r.Ii)(n,i.length)<=e)this.nextNodeAfterCurrent();else{const e=c(i);-1!==e?(this.nextNodes.push(i.getChild(e)),this.offsets.push(n),this.idxs.push(e)):this.nextNodeAfterCurrent()}else{if(t(i))return this.nextNodeAfterCurrent(),i;{const e=c(i);if(-1===e)return void this.nextNodeAfterCurrent();this.nextNodes.push(i.getChild(e)),this.offsets.push(n),this.idxs.push(e)}}}}nextNodeAfterCurrent(){for(;;){const e=u(this.offsets),t=u(this.nextNodes);if(this.nextNodes.pop(),this.offsets.pop(),0===this.idxs.length)break;const i=u(this.nextNodes),n=c(i,this.idxs[this.idxs.length-1]);if(-1!==n){this.nextNodes.push(i.getChild(n)),this.offsets.push((0,r.Ii)(e,t.length)),this.idxs[this.idxs.length-1]=n;break}this.idxs.pop()}}}function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;for(;;){if(t++,t>=e.childrenLength)return-1;if(e.getChild(t))return t}}function u(e){return e.length>0?e[e.length-1]:void 0}function g(e,t,i,n){return new m(e,t,i,n).parseDocument()}class m{constructor(e,t,i,n){if(this.tokenizer=e,this.createImmutableLists=n,this._itemsConstructed=0,this._itemsFromCache=0,i&&n)throw new Error("Not supported");this.oldNodeReader=i?new d(i):void 0,this.positionMapper=new o.Y(t)}parseDocument(){this._itemsConstructed=0,this._itemsFromCache=0;let e=this.parseList(s.tS.getEmpty(),0);return e||(e=n.Y0.getEmpty()),e}parseList(e,t){const i=[];for(;;){let n=this.tryReadChildFromCache(e);if(!n){const i=this.tokenizer.peek();if(!i||2===i.kind&&i.bracketIds.intersects(e))break;n=this.parseChild(e,t+1)}4===n.kind&&0===n.childrenLength||i.push(n)}const n=this.oldNodeReader?function(e){if(0===e.length)return null;if(1===e.length)return e[0];let t=0;function i(){if(t>=e.length)return null;const i=t,n=e[i].listHeight;for(t++;t=2?a(0===i&&t===e.length?e:e.slice(i,t),!1):e[i]}let n=i(),o=i();if(!o)return n;for(let s=i();s;s=i())l(n,o)<=l(o,s)?(n=h(n,o),o=s):o=h(o,s);return h(n,o)}(i):a(i,this.createImmutableLists);return n}tryReadChildFromCache(e){if(this.oldNodeReader){const t=this.positionMapper.getDistanceToNextChange(this.tokenizer.offset);if(null===t||!(0,r.xd)(t)){const i=this.oldNodeReader.readLongestNodeAt(this.positionMapper.getOffsetBeforeChange(this.tokenizer.offset),(i=>{if(null!==t&&!(0,r.VR)(i.length,t))return!1;return i.canBeReused(e)}));if(i)return this._itemsFromCache++,this.tokenizer.skip(i.length),i}}}parseChild(e,t){this._itemsConstructed++;const i=this.tokenizer.read();switch(i.kind){case 2:return new n.Dm(i.bracketIds,i.length);case 0:return i.astNode;case 1:{if(t>300)return new n.BH(i.length);const o=e.merge(i.bracketIds),s=this.parseList(o,t+1),r=this.tokenizer.peek();return r&&2===r.kind&&(r.bracketId===i.bracketId||r.bracketIds.intersects(i.bracketIds))?(this.tokenizer.read(),n.Kd.create(i.astNode,s,r.astNode)):n.Kd.create(i.astNode,s,null)}default:throw new Error("unexpected")}}}},36779:(e,t,i)=>{i.d(t,{FE:()=>r,Qw:()=>s,tS:()=>o});const n=[];class o{static create(e,t){if(e<=128&&0===t.length){let i=o.cache[e];return i||(i=new o(e,t),o.cache[e]=i),i}return new o(e,t)}static getEmpty(){return this.empty}constructor(e,t){this.items=e,this.additionalItems=t}add(e,t){const i=t.getKey(e);let n=i>>5;if(0===n){const e=1<e};class r{constructor(){this.items=new Map}getKey(e){let t=this.items.get(e);return void 0===t&&(t=this.items.size,this.items.set(e,t)),t}}},85421:(e,t,i)=>{i.d(t,{WU:()=>l,g:()=>c,xH:()=>h});var n=i(85108),o=i(55562),s=i(44028),r=i(59321),a=i(36779);class l{constructor(e,t,i,n,o){this.length=e,this.kind=t,this.bracketId=i,this.bracketIds=n,this.astNode=o}}class h{constructor(e,t){this.textModel=e,this.bracketTokens=t,this.reader=new d(this.textModel,this.bracketTokens),this._offset=r.xl,this.didPeek=!1,this.peeked=null,this.textBufferLineCount=e.getLineCount(),this.textBufferLastLineLength=e.getLineLength(this.textBufferLineCount)}get offset(){return this._offset}get length(){return(0,r.Hg)(this.textBufferLineCount-1,this.textBufferLastLineLength)}skip(e){this.didPeek=!1,this._offset=(0,r.Ii)(this._offset,e);const t=(0,r.Hw)(this._offset);this.reader.setPosition(t.lineCount,t.columnCount)}read(){let e;return this.peeked?(this.didPeek=!1,e=this.peeked):e=this.reader.read(),e&&(this._offset=(0,r.Ii)(this._offset,e.length)),e}peek(){return this.didPeek||(this.peeked=this.reader.read(),this.didPeek=!0),this.peeked}}class d{constructor(e,t){this.textModel=e,this.bracketTokens=t,this.lineIdx=0,this.line=null,this.lineCharOffset=0,this.lineTokens=null,this.lineTokenOffset=0,this.peekedToken=null,this.textBufferLineCount=e.getLineCount(),this.textBufferLastLineLength=e.getLineLength(this.textBufferLineCount)}setPosition(e,t){e===this.lineIdx?(this.lineCharOffset=t,null!==this.line&&(this.lineTokenOffset=0===this.lineCharOffset?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset))):(this.lineIdx=e,this.lineCharOffset=t,this.line=null),this.peekedToken=null}read(){if(this.peekedToken){const e=this.peekedToken;return this.peekedToken=null,this.lineCharOffset+=(0,r.F_)(e.length),e}if(this.lineIdx>this.textBufferLineCount-1||this.lineIdx===this.textBufferLineCount-1&&this.lineCharOffset>=this.textBufferLastLineLength)return null;null===this.line&&(this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.line=this.lineTokens.getLineContent(),this.lineTokenOffset=0===this.lineCharOffset?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset));const e=this.lineIdx,t=this.lineCharOffset;let i=0;for(;;){const n=this.lineTokens,s=n.getCount();let a=null;if(this.lineTokenOffset1e3)break}if(i>1500)break}const n=(0,r.av)(e,t,this.lineIdx,this.lineCharOffset);return new l(n,0,-1,a.tS.getEmpty(),new s.BH(n))}}class c{constructor(e,t){this.text=e,this._offset=r.xl,this.idx=0;const i=t.getRegExpStr(),n=i?new RegExp(i+"|\n","gi"):null,o=[];let h,d=0,c=0,u=0,g=0;const m=[];for(let _=0;_<60;_++)m.push(new l((0,r.Hg)(0,_),0,-1,a.tS.getEmpty(),new s.BH((0,r.Hg)(0,_))));const f=[];for(let _=0;_<60;_++)f.push(new l((0,r.Hg)(1,_),0,-1,a.tS.getEmpty(),new s.BH((0,r.Hg)(1,_))));if(n)for(n.lastIndex=0;null!==(h=n.exec(e));){const e=h.index,i=h[0];if("\n"===i)d++,c=e+1;else{if(u!==e){let t;if(g===d){const i=e-u;if(i{i.d(t,{NL:()=>p,e9:()=>f});var n=i(71721),o=i(85108),s=i(67078),r=i(82682),a=i(52058),l=i(12966),h=i(55694);function d(e){return e.toString()}class c{static create(e,t){const i=e.getAlternativeVersionId(),n=m(e);return new c(i,i,n,n,t,t,[])}constructor(e,t,i,n,o,s,r){this.beforeVersionId=e,this.afterVersionId=t,this.beforeEOL=i,this.afterEOL=n,this.beforeCursorState=o,this.afterCursorState=s,this.changes=r}append(e,t,i,n,o){t.length>0&&(this.changes=(0,a.b)(this.changes,t)),this.afterEOL=i,this.afterVersionId=n,this.afterCursorState=o}static _writeSelectionsSize(e){return 4+16*(e?e.length:0)}static _writeSelections(e,t,i){if(l.T4(e,t?t.length:0,i),i+=4,t)for(const n of t)l.T4(e,n.selectionStartLineNumber,i),i+=4,l.T4(e,n.selectionStartColumn,i),i+=4,l.T4(e,n.positionLineNumber,i),i+=4,l.T4(e,n.positionColumn,i),i+=4;return i}static _readSelections(e,t,i){const n=l.Ag(e,t);t+=4;for(let o=0;oe.toString())).join(", ")}matchesResource(e){return(r.o.isUri(this.model)?this.model:this.model.uri).toString()===e.toString()}setModel(e){this.model=e}canAppend(e){return this.model===e&&this._data instanceof c}append(e,t,i,n,o){this._data instanceof c&&this._data.append(e,t,i,n,o)}close(){this._data instanceof c&&(this._data=this._data.serialize())}open(){this._data instanceof c||(this._data=c.deserialize(this._data))}undo(){if(r.o.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof c&&(this._data=this._data.serialize());const e=c.deserialize(this._data);this.model._applyUndo(e.changes,e.beforeEOL,e.beforeVersionId,e.beforeCursorState)}redo(){if(r.o.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof c&&(this._data=this._data.serialize());const e=c.deserialize(this._data);this.model._applyRedo(e.changes,e.afterEOL,e.afterVersionId,e.afterCursorState)}heapSize(){return this._data instanceof c&&(this._data=this._data.serialize()),this._data.byteLength+168}}class g{get resources(){return this._editStackElementsArr.map((e=>e.resource))}constructor(e,t,i){this.label=e,this.code=t,this.type=1,this._isOpen=!0,this._editStackElementsArr=i.slice(0),this._editStackElementsMap=new Map;for(const n of this._editStackElementsArr){const e=d(n.resource);this._editStackElementsMap.set(e,n)}this._delegate=null}prepareUndoRedo(){if(this._delegate)return this._delegate.prepareUndoRedo(this)}matchesResource(e){const t=d(e);return this._editStackElementsMap.has(t)}setModel(e){const t=d(r.o.isUri(e)?e:e.uri);this._editStackElementsMap.has(t)&&this._editStackElementsMap.get(t).setModel(e)}canAppend(e){if(!this._isOpen)return!1;const t=d(e.uri);if(this._editStackElementsMap.has(t)){return this._editStackElementsMap.get(t).canAppend(e)}return!1}append(e,t,i,n,o){const s=d(e.uri);this._editStackElementsMap.get(s).append(e,t,i,n,o)}close(){this._isOpen=!1}open(){}undo(){this._isOpen=!1;for(const e of this._editStackElementsArr)e.undo()}redo(){for(const e of this._editStackElementsArr)e.redo()}heapSize(e){const t=d(e);if(this._editStackElementsMap.has(t)){return this._editStackElementsMap.get(t).heapSize()}return 0}split(){return this._editStackElementsArr}toString(){const e=[];for(const t of this._editStackElementsArr)e.push("".concat((0,h.EZ)(t.resource),": ").concat(t));return"{".concat(e.join(", "),"}")}}function m(e){return"\n"===e.getEOL()?0:1}function f(e){return!!e&&(e instanceof u||e instanceof g)}class p{constructor(e,t){this._model=e,this._undoRedoService=t}pushStackElement(){const e=this._undoRedoService.getLastElement(this._model.uri);f(e)&&e.close()}popStackElement(){const e=this._undoRedoService.getLastElement(this._model.uri);f(e)&&e.open()}clear(){this._undoRedoService.removeElements(this._model.uri)}_getOrCreateEditStackElement(e,t){const i=this._undoRedoService.getLastElement(this._model.uri);if(f(i)&&i.canAppend(this._model))return i;const o=new u(n.NC("edit","Typing"),"undoredo.textBufferEdit",this._model,e);return this._undoRedoService.pushElement(o,t),o}pushEOL(e){const t=this._getOrCreateEditStackElement(null,void 0);this._model.setEOL(e),t.append(this._model,[],m(this._model),this._model.getAlternativeVersionId(),null)}pushEditOperation(e,t,i,n){const o=this._getOrCreateEditStackElement(e,n),s=this._model.applyEdits(t,!0),r=p._computeCursorState(i,s),a=s.map(((e,t)=>({index:t,textChange:e.textChange})));return a.sort(((e,t)=>e.textChange.oldPosition===t.textChange.oldPosition?e.index-t.index:e.textChange.oldPosition-t.textChange.oldPosition)),o.append(this._model,a.map((e=>e.textChange)),m(this._model),this._model.getAlternativeVersionId(),r),r}static _computeCursorState(e,t){try{return e?e(t):null}catch(i){return(0,o.dL)(i),null}}}},8236:(e,t,i)=>{i.d(t,{W:()=>u,l:()=>c});var n=i(52910),o=i(25085),s=i(5255),r=i(10670),a=i(81958),l=i(29430),h=i(6192),d=i(85108);class c extends a.U{constructor(e,t){super(),this.textModel=e,this.languageConfigurationService=t}getLanguageConfiguration(e){return this.languageConfigurationService.getLanguageConfiguration(e)}_computeIndentLevel(e){return(0,l.q)(this.textModel.getLineContent(e+1),this.textModel.getOptions().tabSize)}getActiveIndentGuide(e,t,i){this.assertNotDisposed();const n=this.textModel.getLineCount();if(e<1||e>n)throw new d.he("Illegal value for lineNumber");const o=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,s=Boolean(o&&o.offSide);let r=-2,a=-1,l=-2,h=-1;const c=e=>{if(-1!==r&&(-2===r||r>e-1)){r=-1,a=-1;for(let t=e-2;t>=0;t--){const e=this._computeIndentLevel(t);if(e>=0){r=t,a=e;break}}}if(-2===l){l=-1,h=-1;for(let t=e;t=0){l=t,h=e;break}}}};let u=-2,g=-1,m=-2,f=-1;const p=e=>{if(-2===u){u=-1,g=-1;for(let t=e-2;t>=0;t--){const e=this._computeIndentLevel(t);if(e>=0){u=t,g=e;break}}}if(-1!==m&&(-2===m||m=0){m=t,f=e;break}}}};let _=0,v=!0,b=0,C=!0,w=0,y=0;for(let d=0;v||C;d++){const o=e-d,r=e+d;d>1&&(o<1||o1&&(r>n||r>i)&&(C=!1),d>5e4&&(v=!1,C=!1);let m=-1;if(v&&o>=1){const e=this._computeIndentLevel(o-1);e>=0?(l=o-1,h=e,m=Math.ceil(e/this.textModel.getOptions().indentSize)):(c(o),m=this._getIndentLevelForWhitespaceLine(s,a,h))}let S=-1;if(C&&r<=n){const e=this._computeIndentLevel(r-1);e>=0?(u=r-1,g=e,S=Math.ceil(e/this.textModel.getOptions().indentSize)):(p(r),S=this._getIndentLevelForWhitespaceLine(s,g,f))}if(0!==d){if(1===d){if(r<=n&&S>=0&&y+1===S){v=!1,_=r,b=r,w=S;continue}if(o>=1&&m>=0&&m-1===y){C=!1,_=o,b=o,w=m;continue}if(_=e,b=e,w=y,0===w)return{startLineNumber:_,endLineNumber:b,indent:w}}v&&(m>=w?_=o:v=!1),C&&(S>=w?b=r:C=!1)}else y=m}return{startLineNumber:_,endLineNumber:b,indent:w}}getLinesBracketGuides(e,t,i,s){var a;const l=[];for(let n=e;n<=t;n++)l.push([]);const d=this.textModel.bracketPairs.getBracketPairsInRangeWithMinIndentation(new r.e(e,1,t,this.textModel.getLineMaxColumn(t))).toArray();let c;if(i&&d.length>0){const o=(e<=i.lineNumber&&i.lineNumber<=t?d:this.textModel.bracketPairs.getBracketPairsInRange(r.e.fromPositions(i)).toArray()).filter((e=>r.e.strictContainsPosition(e.range,i)));c=null===(a=(0,n.dF)(o,(e=>true)))||void 0===a?void 0:a.range}const g=this.textModel.getOptions().bracketPairColorizationOptions.independentColorPoolPerBracketType,m=new u;for(const n of d){if(!n.closingBracketRange)continue;const i=c&&n.range.equalsRange(c);if(!i&&!s.includeInactive)continue;const r=m.getInlineClassName(n.nestingLevel,n.nestingLevelOfEqualBracketType,g)+(s.highlightActive&&i?" "+m.activeClassName:""),a=n.openingBracketRange.getStartPosition(),d=n.closingBracketRange.getStartPosition(),u=s.horizontalGuides===h.s6.Enabled||s.horizontalGuides===h.s6.EnabledForActive&&i;if(n.range.startLineNumber===n.range.endLineNumber){u&&l[n.range.startLineNumber-e].push(new h.UO(-1,n.openingBracketRange.getEndPosition().column,r,new h.vW(!1,d.column),-1,-1));continue}const f=this.getVisibleColumnFromPosition(d),p=this.getVisibleColumnFromPosition(n.openingBracketRange.getStartPosition()),_=Math.min(p,f,n.minVisibleColumnIndentation+1);let v=!1;o.LC(this.textModel.getLineContent(n.closingBracketRange.startLineNumber))=e&&p>_&&l[a.lineNumber-e].push(new h.UO(_,-1,r,new h.vW(!1,a.column),-1,-1)),d.lineNumber<=t&&f>_&&l[d.lineNumber-e].push(new h.UO(_,-1,r,new h.vW(!v,d.column),-1,-1)))}for(const n of l)n.sort(((e,t)=>e.visibleColumn-t.visibleColumn));return l}getVisibleColumnFromPosition(e){return s.i.visibleColumnFromColumn(this.textModel.getLineContent(e.lineNumber),e.column,this.textModel.getOptions().tabSize)+1}getLinesIndentGuides(e,t){this.assertNotDisposed();const i=this.textModel.getLineCount();if(e<1||e>i)throw new Error("Illegal value for startLineNumber");if(t<1||t>i)throw new Error("Illegal value for endLineNumber");const n=this.textModel.getOptions(),o=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,s=Boolean(o&&o.offSide),r=new Array(t-e+1);let a=-2,l=-1,h=-2,d=-1;for(let c=e;c<=t;c++){const t=c-e,o=this._computeIndentLevel(c-1);if(o>=0)a=c-1,l=o,r[t]=Math.ceil(o/n.indentSize);else{if(-2===a){a=-1,l=-1;for(let e=c-2;e>=0;e--){const t=this._computeIndentLevel(e);if(t>=0){a=e,l=t;break}}}if(-1!==h&&(-2===h||h=0){h=e,d=t;break}}}r[t]=this._getIndentLevelForWhitespaceLine(s,l,d)}}return r}_getIndentLevelForWhitespaceLine(e,t,i){const n=this.textModel.getOptions();return-1===t||-1===i?0:t{i.d(t,{Ck:()=>r,oQ:()=>s});var n=i(75629),o=i(44918);class s{constructor(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(e,t){e=(0,o.A)(e);const i=this.values,n=this.prefixSum,s=t.length;return 0!==s&&(this.values=new Uint32Array(i.length+s),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e),e+s),this.values.set(t,e),e-1=0&&this.prefixSum.set(n.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(e,t){return e=(0,o.A)(e),t=(0,o.A)(t),this.values[e]!==t&&(this.values[e]=t,e-1=i.length)return!1;const s=i.length-e;return t>=s&&(t=s),0!==t&&(this.values=new Uint32Array(i.length-t),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1=0&&this.prefixSum.set(n.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return 0===this.values.length?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(e){return e<0?0:(e=(0,o.A)(e),this._getPrefixSum(e))}_getPrefixSum(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];let t=this.prefixSumValidIndex[0]+1;0===t&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(let i=t;i<=e;i++)this.prefixSum[i]=this.prefixSum[i-1]+this.values[i];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]}getIndexOf(e){e=Math.floor(e),this.getTotalSum();let t=0,i=this.values.length-1,n=0,o=0,s=0;for(;t<=i;)if(n=t+(i-t)/2|0,o=this.prefixSum[n],s=o-this.values[n],e=o))break;t=n+1}return new a(n,e-s)}}class r{constructor(e){this._values=e,this._isValid=!1,this._validEndIndex=-1,this._prefixSum=[],this._indexBySum=[]}getTotalSum(){return this._ensureValid(),this._indexBySum.length}getPrefixSum(e){return this._ensureValid(),0===e?0:this._prefixSum[e-1]}getIndexOf(e){this._ensureValid();const t=this._indexBySum[e],i=t>0?this._prefixSum[t-1]:0;return new a(t,e-i)}removeValues(e,t){this._values.splice(e,t),this._invalidate(e)}insertValues(e,t){this._values=(0,n.Zv)(this._values,e,t),this._invalidate(e)}_invalidate(e){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,e-1)}_ensureValid(){if(!this._isValid){for(let e=this._validEndIndex+1,t=this._values.length;e0?this._prefixSum[e-1]:0;this._prefixSum[e]=i+t;for(let n=0;n{i.d(t,{HS:()=>Wt,qx:()=>Ht,yO:()=>Mt});var n=i(75629),o=i(89652),s=i(85108),r=i(24219),a=i(89599),l=i(25085),h=i(82682),d=i(55494),c=i(48941),u=i(56590),g=i(2067),m=i(10670),f=i(67078),p=i(88975),_=i(69311),v=i(40801),b=i(27127),C=i(78366),w=i(43097);class y{constructor(e,t,i,n){this.range=e,this.nestingLevel=t,this.nestingLevelOfEqualBracketType=i,this.isInvalid=n}}class S{constructor(e,t,i,n,o,s){this.range=e,this.openingBracketRange=t,this.closingBracketRange=i,this.nestingLevel=n,this.nestingLevelOfEqualBracketType=o,this.bracketPairNode=s}get openingBracketInfo(){return this.bracketPairNode.openingBracket.bracketInfo}}class L extends S{constructor(e,t,i,n,o,s,r){super(e,t,i,n,o,s),this.minVisibleColumnIndentation=r}}var k=i(74196),D=i(43328),N=i(59321),x=i(3596),E=i(36779),I=i(85421),T=i(31246);class M extends a.JT{didLanguageChange(e){return this.brackets.didLanguageChange(e)}constructor(e,t){if(super(),this.textModel=e,this.getLanguageConfiguration=t,this.didChangeEmitter=new r.Q5,this.denseKeyProvider=new E.FE,this.brackets=new D.Z(this.denseKeyProvider,this.getLanguageConfiguration),this.onDidChange=this.didChangeEmitter.event,this.queuedTextEditsForInitialAstWithoutTokens=[],this.queuedTextEdits=[],e.tokenization.hasTokens)2===e.tokenization.backgroundTokenizationState?(this.initialAstWithoutTokens=void 0,this.astWithTokens=this.parseDocumentFromTextBuffer([],void 0,!1)):(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer([],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens);else{const e=this.brackets.getSingleLanguageBracketTokens(this.textModel.getLanguageId()),t=new I.g(this.textModel.getValue(),e);this.initialAstWithoutTokens=(0,x.w)(t,[],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens}}handleDidChangeBackgroundTokenizationState(){if(2===this.textModel.tokenization.backgroundTokenizationState){const e=void 0===this.initialAstWithoutTokens;this.initialAstWithoutTokens=void 0,e||this.didChangeEmitter.fire()}}handleDidChangeTokens(e){let{ranges:t}=e;const i=t.map((e=>new k.Q((0,N.Hg)(e.fromLineNumber-1,0),(0,N.Hg)(e.toLineNumber,0),(0,N.Hg)(e.toLineNumber-e.fromLineNumber+1,0))));this.handleEdits(i,!0),this.initialAstWithoutTokens||this.didChangeEmitter.fire()}handleContentChanged(e){const t=k.Q.fromModelContentChanges(e.changes);this.handleEdits(t,!1)}handleEdits(e,t){const i=(0,T.o)(this.queuedTextEdits,e);this.queuedTextEdits=i,this.initialAstWithoutTokens&&!t&&(this.queuedTextEditsForInitialAstWithoutTokens=(0,T.o)(this.queuedTextEditsForInitialAstWithoutTokens,e))}flushQueue(){this.queuedTextEdits.length>0&&(this.astWithTokens=this.parseDocumentFromTextBuffer(this.queuedTextEdits,this.astWithTokens,!1),this.queuedTextEdits=[]),this.queuedTextEditsForInitialAstWithoutTokens.length>0&&(this.initialAstWithoutTokens&&(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer(this.queuedTextEditsForInitialAstWithoutTokens,this.initialAstWithoutTokens,!1)),this.queuedTextEditsForInitialAstWithoutTokens=[])}parseDocumentFromTextBuffer(e,t,i){const n=t,o=new I.xH(this.textModel,this.brackets);return(0,x.w)(o,e,n,i)}getBracketsInRange(e,t){this.flushQueue();const i=(0,N.Hg)(e.startLineNumber-1,e.startColumn-1),o=(0,N.Hg)(e.endLineNumber-1,e.endColumn-1);return new n.W$((e=>{const n=this.initialAstWithoutTokens||this.astWithTokens;O(n,N.xl,n.length,i,o,e,0,0,new Map,t)}))}getBracketPairsInRange(e,t){this.flushQueue();const i=(0,N.PZ)(e.getStartPosition()),o=(0,N.PZ)(e.getEndPosition());return new n.W$((e=>{const n=this.initialAstWithoutTokens||this.astWithTokens,s=new P(e,t,this.textModel);F(n,N.xl,n.length,i,o,s,0,new Map)}))}getFirstBracketAfter(e){this.flushQueue();const t=this.initialAstWithoutTokens||this.astWithTokens;return R(t,N.xl,t.length,(0,N.PZ)(e))}getFirstBracketBefore(e){this.flushQueue();const t=this.initialAstWithoutTokens||this.astWithTokens;return A(t,N.xl,t.length,(0,N.PZ)(e))}}function A(e,t,i,n){if(4===e.kind||2===e.kind){const o=[];for(const n of e.children)i=(0,N.Ii)(t,n.length),o.push({nodeOffsetStart:t,nodeOffsetEnd:i}),t=i;for(let t=o.length-1;t>=0;t--){const{nodeOffsetStart:i,nodeOffsetEnd:s}=o[t];if((0,N.VR)(i,n)){const o=A(e.children[t],i,s,n);if(o)return o}}return null}if(3===e.kind)return null;if(1===e.kind){const n=(0,N.Qw)(t,i);return{bracketInfo:e.bracketInfo,range:n}}return null}function R(e,t,i,n){if(4===e.kind||2===e.kind){for(const o of e.children){if(i=(0,N.Ii)(t,o.length),(0,N.VR)(n,i)){const e=R(o,t,i,n);if(e)return e}t=i}return null}if(3===e.kind)return null;if(1===e.kind){const n=(0,N.Qw)(t,i);return{bracketInfo:e.bracketInfo,range:n}}return null}function O(e,t,i,n,o,s,r,a,l,h){let d=arguments.length>10&&void 0!==arguments[10]&&arguments[10];if(r>200)return!0;e:for(;;)switch(e.kind){case 4:{const a=e.childrenLength;for(let d=0;d200)return!0;let h=!0;if(2===e.kind){let d=0;if(a){let t=a.get(e.openingBracket.text);void 0===t&&(t=0),d=t,t++,a.set(e.openingBracket.text,t)}const c=(0,N.Ii)(t,e.openingBracket.length);let u=-1;if(s.includeMinIndentation&&(u=e.computeMinIndentation(t,s.textModel)),h=s.push(new L((0,N.Qw)(t,i),(0,N.Qw)(t,c),e.closingBracket?(0,N.Qw)((0,N.Ii)(c,(null===(l=e.child)||void 0===l?void 0:l.length)||N.xl),i):void 0,r,d,e,u)),t=c,h&&e.child){const l=e.child;if(i=(0,N.Ii)(t,l.length),(0,N.By)(t,o)&&(0,N.Zq)(i,n)&&(h=F(l,t,i,n,o,s,r+1,a),!h))return!1}null===a||void 0===a||a.set(e.openingBracket.text,d)}else{let i=t;for(const t of e.children){const e=i;if(i=(0,N.Ii)(i,t.length),(0,N.By)(e,o)&&(0,N.By)(n,i)&&(h=F(t,e,i,n,o,s,r,a),!h))return!1}}return h}class B extends a.JT{get canBuildAST(){return this.textModel.getValueLength()<=5e6}constructor(e,t){super(),this.textModel=e,this.languageConfigurationService=t,this.bracketPairsTree=this._register(new a.XK),this.onDidChangeEmitter=new r.Q5,this.onDidChange=this.onDidChangeEmitter.event,this.bracketsRequested=!1,this._register(this.languageConfigurationService.onDidChange((e=>{var t;e.languageId&&!(null===(t=this.bracketPairsTree.value)||void 0===t?void 0:t.object.didLanguageChange(e.languageId))||(this.bracketPairsTree.clear(),this.updateBracketPairsTree())})))}handleDidChangeOptions(e){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeLanguage(e){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeContent(e){var t;null===(t=this.bracketPairsTree.value)||void 0===t||t.object.handleContentChanged(e)}handleDidChangeBackgroundTokenizationState(){var e;null===(e=this.bracketPairsTree.value)||void 0===e||e.object.handleDidChangeBackgroundTokenizationState()}handleDidChangeTokens(e){var t;null===(t=this.bracketPairsTree.value)||void 0===t||t.object.handleDidChangeTokens(e)}updateBracketPairsTree(){if(this.bracketsRequested&&this.canBuildAST){if(!this.bracketPairsTree.value){const i=new a.SL;this.bracketPairsTree.value=(e=i.add(new M(this.textModel,(e=>this.languageConfigurationService.getLanguageConfiguration(e)))),t=i,{object:e,dispose:()=>null===t||void 0===t?void 0:t.dispose()}),i.add(this.bracketPairsTree.value.object.onDidChange((e=>this.onDidChangeEmitter.fire(e)))),this.onDidChangeEmitter.fire()}}else this.bracketPairsTree.value&&(this.bracketPairsTree.clear(),this.onDidChangeEmitter.fire());var e,t}getBracketPairsInRange(e){var t;return this.bracketsRequested=!0,this.updateBracketPairsTree(),(null===(t=this.bracketPairsTree.value)||void 0===t?void 0:t.object.getBracketPairsInRange(e,!1))||n.W$.empty}getBracketPairsInRangeWithMinIndentation(e){var t;return this.bracketsRequested=!0,this.updateBracketPairsTree(),(null===(t=this.bracketPairsTree.value)||void 0===t?void 0:t.object.getBracketPairsInRange(e,!0))||n.W$.empty}getBracketsInRange(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var i;return this.bracketsRequested=!0,this.updateBracketPairsTree(),(null===(i=this.bracketPairsTree.value)||void 0===i?void 0:i.object.getBracketsInRange(e,t))||n.W$.empty}findMatchingBracketUp(e,t,i){const n=this.textModel.validatePosition(t),o=this.textModel.getLanguageIdAtPosition(n.lineNumber,n.column);if(this.canBuildAST){const i=this.languageConfigurationService.getLanguageConfiguration(o).bracketsNew.getClosingBracketInfo(e);if(!i)return null;const n=this.getBracketPairsInRange(m.e.fromPositions(t,t)).findLast((e=>i.closes(e.openingBracketInfo)));return n?n.openingBracketRange:null}{const t=e.toLowerCase(),s=this.languageConfigurationService.getLanguageConfiguration(o).brackets;if(!s)return null;const r=s.textIsBracket[t];return r?W(this._findMatchingBracketUp(r,n,z(i))):null}}matchBracket(e,t){if(this.canBuildAST){const t=this.getBracketPairsInRange(m.e.fromPositions(e,e)).filter((t=>void 0!==t.closingBracketRange&&(t.openingBracketRange.containsPosition(e)||t.closingBracketRange.containsPosition(e)))).findLastMaxBy((0,n.tT)((t=>t.openingBracketRange.containsPosition(e)?t.openingBracketRange:t.closingBracketRange),m.e.compareRangesUsingStarts));return t?[t.openingBracketRange,t.closingBracketRange]:null}{const i=z(t);return this._matchBracket(this.textModel.validatePosition(e),i)}}_establishBracketSearchOffsets(e,t,i,n){const o=t.getCount(),s=t.getLanguageId(n);let r=Math.max(0,e.column-1-i.maxBracketLength);for(let l=n-1;l>=0;l--){const e=t.getEndOffset(l);if(e<=r)break;if((0,C.Bu)(t.getStandardTokenType(l))||t.getLanguageId(l)!==s){r=e;break}}let a=Math.min(t.getLineContent().length,e.column-1+i.maxBracketLength);for(let l=n+1;l=a)break;if((0,C.Bu)(t.getStandardTokenType(l))||t.getLanguageId(l)!==s){a=e;break}}return{searchStartOffset:r,searchEndOffset:a}}_matchBracket(e,t){const i=e.lineNumber,n=this.textModel.tokenization.getLineTokens(i),o=this.textModel.getLineContent(i),s=n.findTokenIndexAtOffset(e.column-1);if(s<0)return null;const r=this.languageConfigurationService.getLanguageConfiguration(n.getLanguageId(s)).brackets;if(r&&!(0,C.Bu)(n.getStandardTokenType(s))){let{searchStartOffset:a,searchEndOffset:l}=this._establishBracketSearchOffsets(e,n,r,s),h=null;for(;;){const n=w.Vr.findNextBracketInRange(r.forwardRegex,i,o,a,l);if(!n)break;if(n.startColumn<=e.column&&e.column<=n.endColumn){const e=o.substring(n.startColumn-1,n.endColumn-1).toLowerCase(),i=this._matchFoundBracket(n,r.textIsBracket[e],r.textIsOpenBracket[e],t);if(i){if(i instanceof V)return null;h=i}}a=n.endColumn-1}if(h)return h}if(s>0&&n.getStartOffset(s)===e.column-1){const r=s-1,a=this.languageConfigurationService.getLanguageConfiguration(n.getLanguageId(r)).brackets;if(a&&!(0,C.Bu)(n.getStandardTokenType(r))){const{searchStartOffset:s,searchEndOffset:l}=this._establishBracketSearchOffsets(e,n,a,r),h=w.Vr.findPrevBracketInRange(a.reversedRegex,i,o,s,l);if(h&&h.startColumn<=e.column&&e.column<=h.endColumn){const e=o.substring(h.startColumn-1,h.endColumn-1).toLowerCase(),i=this._matchFoundBracket(h,a.textIsBracket[e],a.textIsOpenBracket[e],t);if(i)return i instanceof V?null:i}}}return null}_matchFoundBracket(e,t,i,n){if(!t)return null;const o=i?this._findMatchingBracketDown(t,e.getEndPosition(),n):this._findMatchingBracketUp(t,e.getStartPosition(),n);return o?o instanceof V?o:[e,o]:null}_findMatchingBracketUp(e,t,i){const n=e.languageId,o=e.reversedRegex;let s=-1,r=0;const a=(t,n,a,l)=>{for(;;){if(i&&++r%100===0&&!i())return V.INSTANCE;const h=w.Vr.findPrevBracketInRange(o,t,n,a,l);if(!h)break;const d=n.substring(h.startColumn-1,h.endColumn-1).toLowerCase();if(e.isOpen(d)?s++:e.isClose(d)&&s--,0===s)return h;l=h.startColumn-1}return null};for(let l=t.lineNumber;l>=1;l--){const e=this.textModel.tokenization.getLineTokens(l),i=e.getCount(),o=this.textModel.getLineContent(l);let s=i-1,r=o.length,h=o.length;l===t.lineNumber&&(s=e.findTokenIndexAtOffset(t.column-1),r=t.column-1,h=t.column-1);let d=!0;for(;s>=0;s--){const t=e.getLanguageId(s)===n&&!(0,C.Bu)(e.getStandardTokenType(s));if(t)d?r=e.getStartOffset(s):(r=e.getStartOffset(s),h=e.getEndOffset(s));else if(d&&r!==h){const e=a(l,o,r,h);if(e)return e}d=t}if(d&&r!==h){const e=a(l,o,r,h);if(e)return e}}return null}_findMatchingBracketDown(e,t,i){const n=e.languageId,o=e.forwardRegex;let s=1,r=0;const a=(t,n,a,l)=>{for(;;){if(i&&++r%100===0&&!i())return V.INSTANCE;const h=w.Vr.findNextBracketInRange(o,t,n,a,l);if(!h)break;const d=n.substring(h.startColumn-1,h.endColumn-1).toLowerCase();if(e.isOpen(d)?s++:e.isClose(d)&&s--,0===s)return h;a=h.endColumn-1}return null},l=this.textModel.getLineCount();for(let h=t.lineNumber;h<=l;h++){const e=this.textModel.tokenization.getLineTokens(h),i=e.getCount(),o=this.textModel.getLineContent(h);let s=0,r=0,l=0;h===t.lineNumber&&(s=e.findTokenIndexAtOffset(t.column-1),r=t.column-1,l=t.column-1);let d=!0;for(;s=1;r--){const e=this.textModel.tokenization.getLineTokens(r),t=e.getCount(),a=this.textModel.getLineContent(r);let l=t-1,h=a.length,d=a.length;if(r===i.lineNumber){l=e.findTokenIndexAtOffset(i.column-1),h=i.column-1,d=i.column-1;const t=e.getLanguageId(l);n!==t&&(n=t,o=this.languageConfigurationService.getLanguageConfiguration(n).brackets,s=this.languageConfigurationService.getLanguageConfiguration(n).bracketsNew)}let c=!0;for(;l>=0;l--){const t=e.getLanguageId(l);if(n!==t){if(o&&s&&c&&h!==d){const e=w.Vr.findPrevBracketInRange(o.reversedRegex,r,a,h,d);if(e)return this._toFoundBracket(s,e);c=!1}n=t,o=this.languageConfigurationService.getLanguageConfiguration(n).brackets,s=this.languageConfigurationService.getLanguageConfiguration(n).bracketsNew}const i=!!o&&!(0,C.Bu)(e.getStandardTokenType(l));if(i)c?h=e.getStartOffset(l):(h=e.getStartOffset(l),d=e.getEndOffset(l));else if(s&&o&&c&&h!==d){const e=w.Vr.findPrevBracketInRange(o.reversedRegex,r,a,h,d);if(e)return this._toFoundBracket(s,e)}c=i}if(s&&o&&c&&h!==d){const e=w.Vr.findPrevBracketInRange(o.reversedRegex,r,a,h,d);if(e)return this._toFoundBracket(s,e)}}return null}findNextBracket(e){var t;const i=this.textModel.validatePosition(e);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),(null===(t=this.bracketPairsTree.value)||void 0===t?void 0:t.object.getFirstBracketAfter(i))||null;const n=this.textModel.getLineCount();let o=null,s=null,r=null;for(let a=i.lineNumber;a<=n;a++){const e=this.textModel.tokenization.getLineTokens(a),t=e.getCount(),n=this.textModel.getLineContent(a);let l=0,h=0,d=0;if(a===i.lineNumber){l=e.findTokenIndexAtOffset(i.column-1),h=i.column-1,d=i.column-1;const t=e.getLanguageId(l);o!==t&&(o=t,s=this.languageConfigurationService.getLanguageConfiguration(o).brackets,r=this.languageConfigurationService.getLanguageConfiguration(o).bracketsNew)}let c=!0;for(;lvoid 0!==t.closingBracketRange&&t.range.strictContainsRange(e)));return t?[t.openingBracketRange,t.closingBracketRange]:null}const n=z(t),o=this.textModel.getLineCount(),s=new Map;let r=[];const a=(e,t)=>{if(!s.has(e)){const i=[];for(let e=0,n=t?t.brackets.length:0;e{for(;;){if(n&&++l%100===0&&!n())return V.INSTANCE;const a=w.Vr.findNextBracketInRange(e.forwardRegex,t,i,o,s);if(!a)break;const h=i.substring(a.startColumn-1,a.endColumn-1).toLowerCase(),d=e.textIsBracket[h];if(d&&(d.isOpen(h)?r[d.index]++:d.isClose(h)&&r[d.index]--,-1===r[d.index]))return this._matchFoundBracket(a,d,!1,n);o=a.endColumn-1}return null};let d=null,c=null;for(let u=i.lineNumber;u<=o;u++){const e=this.textModel.tokenization.getLineTokens(u),t=e.getCount(),n=this.textModel.getLineContent(u);let o=0,s=0,r=0;if(u===i.lineNumber){o=e.findTokenIndexAtOffset(i.column-1),s=i.column-1,r=i.column-1;const t=e.getLanguageId(o);d!==t&&(d=t,c=this.languageConfigurationService.getLanguageConfiguration(d).brackets,a(d,c))}let l=!0;for(;o!0;{const t=Date.now();return()=>Date.now()-t<=e}}class V{constructor(){this._searchCanceledBrand=void 0}}function W(e){return e instanceof V?null:e}V.INSTANCE=new V;var H=i(36729),K=i(17903);class U extends a.JT{constructor(e){super(),this.textModel=e,this.colorProvider=new j,this.onDidChangeEmitter=new r.Q5,this.onDidChange=this.onDidChangeEmitter.event,this.colorizationOptions=e.getOptions().bracketPairColorizationOptions,this._register(e.bracketPairs.onDidChange((e=>{this.onDidChangeEmitter.fire()})))}handleDidChangeOptions(e){this.colorizationOptions=this.textModel.getOptions().bracketPairColorizationOptions}getDecorationsInRange(e,t,i,n){if(n)return[];if(void 0===t)return[];if(!this.colorizationOptions.enabled)return[];return this.textModel.bracketPairs.getBracketsInRange(e,!0).map((e=>({id:"bracket".concat(e.range.toString(),"-").concat(e.nestingLevel),options:{description:"BracketPairColorization",inlineClassName:this.colorProvider.getInlineClassName(e,this.colorizationOptions.independentColorPoolPerBracketType)},ownerId:0,range:e.range}))).toArray()}getAllDecorations(e,t){return void 0===e?[]:this.colorizationOptions.enabled?this.getDecorationsInRange(new m.e(1,1,this.textModel.getLineCount(),1),e,t):[]}}class j{constructor(){this.unexpectedClosingBracketClassName="unexpected-closing-bracket"}getInlineClassName(e,t){return e.isInvalid?this.unexpectedClosingBracketClassName:this.getInlineClassNameOfLevel(t?e.nestingLevelOfEqualBracketType:e.nestingLevel)}getInlineClassNameOfLevel(e){return"bracket-highlighting-".concat(e%30)}}(0,K.Ic)(((e,t)=>{const i=[H.zJ,H.Vs,H.CE,H.UP,H.r0,H.m1],n=new j;t.addRule(".monaco-editor .".concat(n.unexpectedClosingBracketClassName," { color: ").concat(e.getColor(H.ts),"; }"));const o=i.map((t=>e.getColor(t))).filter((e=>!!e)).filter((e=>!e.isTransparent()));for(let s=0;s<30;s++){const e=o[s%o.length];t.addRule(".monaco-editor .".concat(n.getInlineClassNameOfLevel(s)," { color: ").concat(e,"; }"))}}));var q=i(29193),G=i(8236);class Q{constructor(){this.spacesDiff=0,this.looksLikeAlignment=!1}}function Z(e,t,i,n,o){let s;for(o.spacesDiff=0,o.looksLikeAlignment=!1,s=0;s0&&a>0)return;if(l>0&&h>0)return;const d=Math.abs(a-h),c=Math.abs(r-l);if(0===d)return o.spacesDiff=c,void(c>0&&0<=l-1&&l-10?o++:f>1&&s++,Z(r,a,l,m,d),d.looksLikeAlignment&&(!i||t!==d.spacesDiff))continue;const _=d.spacesDiff;_<=8&&h[_]++,r=l,a=m}let c=i;o!==s&&(c=o{const i=h[t];i>e&&(e=i,u=t)})),4===u&&h[4]>0&&h[2]>0&&h[2]>=h[4]/2&&(u=2)}return{insertSpaces:c,tabSize:u}}function $(e){return(1&e.metadata)>>>0}function J(e,t){e.metadata=254&e.metadata|t<<0}function X(e){return(2&e.metadata)>>>1===1}function ee(e,t){e.metadata=253&e.metadata|(t?1:0)<<1}function te(e){return(4&e.metadata)>>>2===1}function ie(e,t){e.metadata=251&e.metadata|(t?1:0)<<2}function ne(e){return(64&e.metadata)>>>6===1}function oe(e,t){e.metadata=191&e.metadata|(t?1:0)<<6}function se(e,t){e.metadata=231&e.metadata|t<<3}function re(e,t){e.metadata=223&e.metadata|(t?1:0)<<5}class ae{constructor(e,t,i){this.metadata=0,this.parent=this,this.left=this,this.right=this,J(this,1),this.start=t,this.end=i,this.delta=0,this.maxEnd=i,this.id=e,this.ownerId=0,this.options=null,ie(this,!1),oe(this,!1),se(this,1),re(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=i,this.range=null,ee(this,!1)}reset(e,t,i,n){this.start=t,this.end=i,this.maxEnd=i,this.cachedVersionId=e,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=i,this.range=n}setOptions(e){this.options=e;const t=this.options.className;ie(this,"squiggly-error"===t||"squiggly-warning"===t||"squiggly-info"===t),oe(this,null!==this.options.glyphMarginClassName),se(this,this.options.stickiness),re(this,this.options.collapseOnReplaceEdit)}setCachedOffsets(e,t,i){this.cachedVersionId!==i&&(this.range=null),this.cachedVersionId=i,this.cachedAbsoluteStart=e,this.cachedAbsoluteEnd=t}detach(){this.parent=null,this.left=null,this.right=null}}const le=new ae(null,0,0);le.parent=le,le.left=le,le.right=le,J(le,0);class he{constructor(){this.root=le,this.requestNormalizeDelta=!1}intervalSearch(e,t,i,n,o,s){return this.root===le?[]:function(e,t,i,n,o,s,r){let a=e.root,l=0,h=0,d=0,c=0;const u=[];let g=0;for(;a!==le;)if(X(a))ee(a.left,!1),ee(a.right,!1),a===a.parent.right&&(l-=a.parent.delta),a=a.parent;else{if(!X(a.left)){if(h=l+a.maxEnd,hi)ee(a,!0);else{if(c=l+a.end,c>=t){a.setCachedOffsets(d,c,s);let e=!0;n&&a.ownerId&&a.ownerId!==n&&(e=!1),o&&te(a)&&(e=!1),r&&!ne(a)&&(e=!1),e&&(u[g++]=a)}ee(a,!0),a.right===le||X(a.right)||(l+=a.delta,a=a.right)}}return ee(e.root,!1),u}(this,e,t,i,n,o,s)}search(e,t,i,n){return this.root===le?[]:function(e,t,i,n,o){let s=e.root,r=0,a=0,l=0;const h=[];let d=0;for(;s!==le;){if(X(s)){ee(s.left,!1),ee(s.right,!1),s===s.parent.right&&(r-=s.parent.delta),s=s.parent;continue}if(s.left!==le&&!X(s.left)){s=s.left;continue}a=r+s.start,l=r+s.end,s.setCachedOffsets(a,l,n);let e=!0;t&&s.ownerId&&s.ownerId!==t&&(e=!1),i&&te(s)&&(e=!1),o&&!ne(s)&&(e=!1),e&&(h[d++]=s),ee(s,!0),s.right===le||X(s.right)||(r+=s.delta,s=s.right)}return ee(e.root,!1),h}(this,e,t,i,n)}collectNodesFromOwner(e){return function(e,t){let i=e.root;const n=[];let o=0;for(;i!==le;)X(i)?(ee(i.left,!1),ee(i.right,!1),i=i.parent):i.left===le||X(i.left)?(i.ownerId===t&&(n[o++]=i),ee(i,!0),i.right===le||X(i.right)||(i=i.right)):i=i.left;return ee(e.root,!1),n}(this,e)}collectNodesPostOrder(){return function(e){let t=e.root;const i=[];let n=0;for(;t!==le;)X(t)?(ee(t.left,!1),ee(t.right,!1),t=t.parent):t.left===le||X(t.left)?t.right===le||X(t.right)?(i[n++]=t,ee(t,!0)):t=t.right:t=t.left;return ee(e.root,!1),i}(this)}insert(e){ue(this,e),this._normalizeDeltaIfNecessary()}delete(e){ge(this,e),this._normalizeDeltaIfNecessary()}resolveNode(e,t){const i=e;let n=0;for(;e!==this.root;)e===e.parent.right&&(n+=e.parent.delta),e=e.parent;const o=i.start+n,s=i.end+n;i.setCachedOffsets(o,s,t)}acceptReplace(e,t,i,n){const o=function(e,t,i){let n=e.root,o=0,s=0,r=0,a=0;const l=[];let h=0;for(;n!==le;)if(X(n))ee(n.left,!1),ee(n.right,!1),n===n.parent.right&&(o-=n.parent.delta),n=n.parent;else{if(!X(n.left)){if(s=o+n.maxEnd,si?ee(n,!0):(a=o+n.end,a>=t&&(n.setCachedOffsets(r,a,0),l[h++]=n),ee(n,!0),n.right===le||X(n.right)||(o+=n.delta,n=n.right))}return ee(e.root,!1),l}(this,e,e+t);for(let s=0,r=o.length;si?(o.start+=l,o.end+=l,o.delta+=l,(o.delta<-1073741824||o.delta>1073741824)&&(e.requestNormalizeDelta=!0),ee(o,!0)):(ee(o,!0),o.right===le||X(o.right)||(s+=o.delta,o=o.right))}ee(e.root,!1)}(this,e,e+t,i),this._normalizeDeltaIfNecessary();for(let s=0,r=o.length;si)&&(1!==n&&(2===n||t))}function ce(e,t,i,n,o){const s=function(e){return(24&e.metadata)>>>3}(e),r=0===s||2===s,a=1===s||2===s,l=i-t,h=n,d=Math.min(l,h),c=e.start;let u=!1;const g=e.end;let m=!1;t<=c&&g<=i&&function(e){return(32&e.metadata)>>>5===1}(e)&&(e.start=t,u=!0,e.end=t,m=!0);{const e=o?1:l>0?2:0;!u&&de(c,r,t,e)&&(u=!0),!m&&de(g,a,t,e)&&(m=!0)}if(d>0&&!o){const e=l>h?2:0;!u&&de(c,r,t+d,e)&&(u=!0),!m&&de(g,a,t+d,e)&&(m=!0)}{const n=o?1:0;!u&&de(c,r,i,n)&&(e.start=t+h,u=!0),!m&&de(g,a,i,n)&&(e.end=t+h,m=!0)}const f=h-l;u||(e.start=Math.max(0,c+f)),m||(e.end=Math.max(0,g+f)),e.start>e.end&&(e.end=e.start)}function ue(e,t){if(e.root===le)return t.parent=le,t.left=le,t.right=le,J(t,0),e.root=t,e.root;!function(e,t){let i=0,n=e.root;const o=t.start,s=t.end;for(;;){if(Ce(o,s,n.start+i,n.end+i)<0){if(n.left===le){t.start-=i,t.end-=i,t.maxEnd-=i,n.left=t;break}n=n.left}else{if(n.right===le){t.start-=i+n.delta,t.end-=i+n.delta,t.maxEnd-=i+n.delta,n.right=t;break}i+=n.delta,n=n.right}}t.parent=n,t.left=le,t.right=le,J(t,1)}(e,t),be(t.parent);let i=t;for(;i!==e.root&&1===$(i.parent);)if(i.parent===i.parent.parent.left){const t=i.parent.parent.right;1===$(t)?(J(i.parent,0),J(t,0),J(i.parent.parent,1),i=i.parent.parent):(i===i.parent.right&&(i=i.parent,fe(e,i)),J(i.parent,0),J(i.parent.parent,1),pe(e,i.parent.parent))}else{const t=i.parent.parent.left;1===$(t)?(J(i.parent,0),J(t,0),J(i.parent.parent,1),i=i.parent.parent):(i===i.parent.left&&(i=i.parent,pe(e,i)),J(i.parent,0),J(i.parent.parent,1),fe(e,i.parent.parent))}return J(e.root,0),t}function ge(e,t){let i,n;if(t.left===le?(i=t.right,n=t,i.delta+=t.delta,(i.delta<-1073741824||i.delta>1073741824)&&(e.requestNormalizeDelta=!0),i.start+=t.delta,i.end+=t.delta):t.right===le?(i=t.left,n=t):(n=function(e){for(;e.left!==le;)e=e.left;return e}(t.right),i=n.right,i.start+=n.delta,i.end+=n.delta,i.delta+=n.delta,(i.delta<-1073741824||i.delta>1073741824)&&(e.requestNormalizeDelta=!0),n.start+=t.delta,n.end+=t.delta,n.delta=t.delta,(n.delta<-1073741824||n.delta>1073741824)&&(e.requestNormalizeDelta=!0)),n===e.root)return e.root=i,J(i,0),t.detach(),me(),ve(i),void(e.root.parent=le);const o=1===$(n);if(n===n.parent.left?n.parent.left=i:n.parent.right=i,n===t?i.parent=n.parent:(n.parent===t?i.parent=n:i.parent=n.parent,n.left=t.left,n.right=t.right,n.parent=t.parent,J(n,$(t)),t===e.root?e.root=n:t===t.parent.left?t.parent.left=n:t.parent.right=n,n.left!==le&&(n.left.parent=n),n.right!==le&&(n.right.parent=n)),t.detach(),o)return be(i.parent),n!==t&&(be(n),be(n.parent)),void me();let s;for(be(i),be(i.parent),n!==t&&(be(n),be(n.parent));i!==e.root&&0===$(i);)i===i.parent.left?(s=i.parent.right,1===$(s)&&(J(s,0),J(i.parent,1),fe(e,i.parent),s=i.parent.right),0===$(s.left)&&0===$(s.right)?(J(s,1),i=i.parent):(0===$(s.right)&&(J(s.left,0),J(s,1),pe(e,s),s=i.parent.right),J(s,$(i.parent)),J(i.parent,0),J(s.right,0),fe(e,i.parent),i=e.root)):(s=i.parent.left,1===$(s)&&(J(s,0),J(i.parent,1),pe(e,i.parent),s=i.parent.left),0===$(s.left)&&0===$(s.right)?(J(s,1),i=i.parent):(0===$(s.left)&&(J(s.right,0),J(s,1),fe(e,s),s=i.parent.left),J(s,$(i.parent)),J(i.parent,0),J(s.left,0),pe(e,i.parent),i=e.root));J(i,0),me()}function me(){le.parent=le,le.delta=0,le.start=0,le.end=0}function fe(e,t){const i=t.right;i.delta+=t.delta,(i.delta<-1073741824||i.delta>1073741824)&&(e.requestNormalizeDelta=!0),i.start+=t.delta,i.end+=t.delta,t.right=i.left,i.left!==le&&(i.left.parent=t),i.parent=t.parent,t.parent===le?e.root=i:t===t.parent.left?t.parent.left=i:t.parent.right=i,i.left=t,t.parent=i,ve(t),ve(i)}function pe(e,t){const i=t.left;t.delta-=i.delta,(t.delta<-1073741824||t.delta>1073741824)&&(e.requestNormalizeDelta=!0),t.start-=i.delta,t.end-=i.delta,t.left=i.right,i.right!==le&&(i.right.parent=t),i.parent=t.parent,t.parent===le?e.root=i:t===t.parent.right?t.parent.right=i:t.parent.left=i,i.right=t,t.parent=i,ve(t),ve(i)}function _e(e){let t=e.end;if(e.left!==le){const i=e.left.maxEnd;i>t&&(t=i)}if(e.right!==le){const i=e.right.maxEnd+e.delta;i>t&&(t=i)}return t}function ve(e){e.maxEnd=_e(e)}function be(e){for(;e!==le;){const t=_e(e);if(e.maxEnd===t)return;e.maxEnd=t,e=e.parent}}function Ce(e,t,i,n){return e===i?t-n:e-i}class we{constructor(e,t){this.piece=e,this.color=t,this.size_left=0,this.lf_left=0,this.parent=this,this.left=this,this.right=this}next(){if(this.right!==ye)return Se(this.right);let e=this;for(;e.parent!==ye&&e.parent.left!==e;)e=e.parent;return e.parent===ye?ye:e.parent}prev(){if(this.left!==ye)return Le(this.left);let e=this;for(;e.parent!==ye&&e.parent.right!==e;)e=e.parent;return e.parent===ye?ye:e.parent}detach(){this.parent=null,this.left=null,this.right=null}}const ye=new we(null,0);function Se(e){for(;e.left!==ye;)e=e.left;return e}function Le(e){for(;e.right!==ye;)e=e.right;return e}function ke(e){return e===ye?0:e.size_left+e.piece.length+ke(e.right)}function De(e){return e===ye?0:e.lf_left+e.piece.lineFeedCnt+De(e.right)}function Ne(){ye.parent=ye}function xe(e,t){const i=t.right;i.size_left+=t.size_left+(t.piece?t.piece.length:0),i.lf_left+=t.lf_left+(t.piece?t.piece.lineFeedCnt:0),t.right=i.left,i.left!==ye&&(i.left.parent=t),i.parent=t.parent,t.parent===ye?e.root=i:t.parent.left===t?t.parent.left=i:t.parent.right=i,i.left=t,t.parent=i}function Ee(e,t){const i=t.left;t.left=i.right,i.right!==ye&&(i.right.parent=t),i.parent=t.parent,t.size_left-=i.size_left+(i.piece?i.piece.length:0),t.lf_left-=i.lf_left+(i.piece?i.piece.lineFeedCnt:0),t.parent===ye?e.root=i:t===t.parent.right?t.parent.right=i:t.parent.left=i,i.right=t,t.parent=i}function Ie(e,t){let i,n;if(t.left===ye?(n=t,i=n.right):t.right===ye?(n=t,i=n.left):(n=Se(t.right),i=n.right),n===e.root)return e.root=i,i.color=0,t.detach(),Ne(),void(e.root.parent=ye);const o=1===n.color;if(n===n.parent.left?n.parent.left=i:n.parent.right=i,n===t?(i.parent=n.parent,Ae(e,i)):(n.parent===t?i.parent=n:i.parent=n.parent,Ae(e,i),n.left=t.left,n.right=t.right,n.parent=t.parent,n.color=t.color,t===e.root?e.root=n:t===t.parent.left?t.parent.left=n:t.parent.right=n,n.left!==ye&&(n.left.parent=n),n.right!==ye&&(n.right.parent=n),n.size_left=t.size_left,n.lf_left=t.lf_left,Ae(e,n)),t.detach(),i.parent.left===i){const t=ke(i),n=De(i);if(t!==i.parent.size_left||n!==i.parent.lf_left){const o=t-i.parent.size_left,s=n-i.parent.lf_left;i.parent.size_left=t,i.parent.lf_left=n,Me(e,i.parent,o,s)}}if(Ae(e,i.parent),o)return void Ne();let s;for(;i!==e.root&&0===i.color;)i===i.parent.left?(s=i.parent.right,1===s.color&&(s.color=0,i.parent.color=1,xe(e,i.parent),s=i.parent.right),0===s.left.color&&0===s.right.color?(s.color=1,i=i.parent):(0===s.right.color&&(s.left.color=0,s.color=1,Ee(e,s),s=i.parent.right),s.color=i.parent.color,i.parent.color=0,s.right.color=0,xe(e,i.parent),i=e.root)):(s=i.parent.left,1===s.color&&(s.color=0,i.parent.color=1,Ee(e,i.parent),s=i.parent.left),0===s.left.color&&0===s.right.color?(s.color=1,i=i.parent):(0===s.left.color&&(s.right.color=0,s.color=1,xe(e,s),s=i.parent.left),s.color=i.parent.color,i.parent.color=0,s.left.color=0,Ee(e,i.parent),i=e.root));i.color=0,Ne()}function Te(e,t){for(Ae(e,t);t!==e.root&&1===t.parent.color;)if(t.parent===t.parent.parent.left){const i=t.parent.parent.right;1===i.color?(t.parent.color=0,i.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.right&&xe(e,t=t.parent),t.parent.color=0,t.parent.parent.color=1,Ee(e,t.parent.parent))}else{const i=t.parent.parent.left;1===i.color?(t.parent.color=0,i.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.left&&Ee(e,t=t.parent),t.parent.color=0,t.parent.parent.color=1,xe(e,t.parent.parent))}e.root.color=0}function Me(e,t,i,n){for(;t!==e.root&&t!==ye;)t.parent.left===t&&(t.parent.size_left+=i,t.parent.lf_left+=n),t=t.parent}function Ae(e,t){let i=0,n=0;if(t!==e.root){for(;t!==e.root&&t===t.parent.right;)t=t.parent;if(t!==e.root)for(i=ke((t=t.parent).left)-t.size_left,n=De(t.left)-t.lf_left,t.size_left+=i,t.lf_left+=n;t!==e.root&&(0!==i||0!==n);)t.parent.left===t&&(t.parent.size_left+=i,t.parent.lf_left+=n),t=t.parent}}ye.parent=ye,ye.left=ye,ye.right=ye,ye.color=0;var Re=i(90255);const Oe=65535;function Pe(e){let t;return t=e[e.length-1]<65536?new Uint16Array(e.length):new Uint32Array(e.length),t.set(e,0),t}class Fe{constructor(e,t,i,n,o){this.lineStarts=e,this.cr=t,this.lf=i,this.crlf=n,this.isBasicASCII=o}}function Be(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const i=[0];let n=1;for(let o=0,s=e.length;o(e!==ye&&this._pieces.push(e.piece),!0)))}read(){return 0===this._pieces.length?0===this._index?(this._index++,this._BOM):null:this._index>this._pieces.length-1?null:0===this._index?this._BOM+this._tree.getPieceContent(this._pieces[this._index++]):this._tree.getPieceContent(this._pieces[this._index++])}}class He{constructor(e){this._limit=e,this._cache=[]}get(e){for(let t=this._cache.length-1;t>=0;t--){const i=this._cache[t];if(i.nodeStartOffset<=e&&i.nodeStartOffset+i.node.piece.length>=e)return i}return null}get2(e){for(let t=this._cache.length-1;t>=0;t--){const i=this._cache[t];if(i.nodeStartLineNumber&&i.nodeStartLineNumber=e)return i}return null}set(e){this._cache.length>=this._limit&&this._cache.shift(),this._cache.push(e)}validate(e){let t=!1;const i=this._cache;for(let n=0;n=e)&&(i[n]=null,t=!0)}if(t){const e=[];for(const t of i)null!==t&&e.push(t);this._cache=e}}}class Ke{constructor(e,t,i){this.create(e,t,i)}create(e,t,i){this._buffers=[new Ve("",[0])],this._lastChangeBufferPos={line:0,column:0},this.root=ye,this._lineCnt=1,this._length=0,this._EOL=t,this._EOLLength=t.length,this._EOLNormalized=i;let n=null;for(let o=0,s=e.length;o0){e[o].lineStarts||(e[o].lineStarts=Be(e[o].buffer));const t=new ze(o+1,{line:0,column:0},{line:e[o].lineStarts.length-1,column:e[o].buffer.length-e[o].lineStarts[e[o].lineStarts.length-1]},e[o].lineStarts.length-1,e[o].buffer.length);this._buffers.push(e[o]),n=this.rbInsertRight(n,t)}this._searchCache=new He(1),this._lastVisitedLine={lineNumber:0,value:""},this.computeBufferMetadata()}normalizeEOL(e){const t=65535-Math.floor(21845),i=2*t;let n="",o=0;const s=[];if(this.iterate(this.root,(r=>{const a=this.getNodeContent(r),l=a.length;if(o<=t||o+l0){const t=n.replace(/\r\n|\r|\n/g,e);s.push(new Ve(t,Be(t)))}this.create(s,e,!0)}getEOL(){return this._EOL}setEOL(e){this._EOL=e,this._EOLLength=this._EOL.length,this.normalizeEOL(e)}createSnapshot(e){return new We(this,e)}getOffsetAt(e,t){let i=0,n=this.root;for(;n!==ye;)if(n.left!==ye&&n.lf_left+1>=e)n=n.left;else{if(n.lf_left+n.piece.lineFeedCnt+1>=e){i+=n.size_left;return i+(this.getAccumulatedValue(n,e-n.lf_left-2)+t-1)}e-=n.lf_left+n.piece.lineFeedCnt,i+=n.size_left+n.piece.length,n=n.right}return i}getPositionAt(e){e=Math.floor(e),e=Math.max(0,e);let t=this.root,i=0;const n=e;for(;t!==ye;)if(0!==t.size_left&&t.size_left>=e)t=t.left;else{if(t.size_left+t.piece.length>=e){const o=this.getIndexOf(t,e-t.size_left);if(i+=t.lf_left+o.index,0===o.index){const e=n-this.getOffsetAt(i+1,1);return new g.L(i+1,e+1)}return new g.L(i+1,o.remainder+1)}if(e-=t.size_left+t.piece.length,i+=t.lf_left+t.piece.lineFeedCnt,t.right===ye){const t=n-e-this.getOffsetAt(i+1,1);return new g.L(i+1,t+1)}t=t.right}return new g.L(1,1)}getValueInRange(e,t){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return"";const i=this.nodeAt2(e.startLineNumber,e.startColumn),n=this.nodeAt2(e.endLineNumber,e.endColumn),o=this.getValueInRange2(i,n);return t?t===this._EOL&&this._EOLNormalized&&t===this.getEOL()&&this._EOLNormalized?o:o.replace(/\r\n|\r|\n/g,t):o}getValueInRange2(e,t){if(e.node===t.node){const i=e.node,n=this._buffers[i.piece.bufferIndex].buffer,o=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return n.substring(o+e.remainder,o+t.remainder)}let i=e.node;const n=this._buffers[i.piece.bufferIndex].buffer,o=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);let s=n.substring(o+e.remainder,o+i.piece.length);for(i=i.next();i!==ye;){const e=this._buffers[i.piece.bufferIndex].buffer,n=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);if(i===t.node){s+=e.substring(n,n+t.remainder);break}s+=e.substr(n,i.piece.length),i=i.next()}return s}getLinesContent(){const e=[];let t=0,i="",n=!1;return this.iterate(this.root,(o=>{if(o===ye)return!0;const s=o.piece;let r=s.length;if(0===r)return!0;const a=this._buffers[s.bufferIndex].buffer,l=this._buffers[s.bufferIndex].lineStarts,h=s.start.line,d=s.end.line;let c=l[h]+s.start.column;if(n&&(10===a.charCodeAt(c)&&(c++,r--),e[t++]=i,i="",n=!1,0===r))return!0;if(h===d)return this._EOLNormalized||13!==a.charCodeAt(c+r-1)?i+=a.substr(c,r):(n=!0,i+=a.substr(c,r-1)),!0;i+=this._EOLNormalized?a.substring(c,Math.max(c,l[h+1]-this._EOLLength)):a.substring(c,l[h+1]).replace(/(\r\n|\r|\n)$/,""),e[t++]=i;for(let n=h+1;ne+g,t.reset(0)):(v=c.buffer,b=e=>e,t.reset(g));do{if(p=t.next(v),p){if(b(p.index)>=f)return h;this.positionInBuffer(e,b(p.index)-u,_);const t=this.getLineFeedCnt(e.piece.bufferIndex,o,_),s=_.line===o.line?_.column-o.column+n:_.column+1,r=s+p[0].length;if(d[h++]=(0,Re.iE)(new m.e(i+t,s,i+t,r),p,a),b(p.index)+p[0].length>=f)return h;if(h>=l)return h}}while(p);return h}findMatchesLineByLine(e,t,i,n){const o=[];let s=0;const r=new Re.sz(t.wordSeparators,t.regex);let a=this.nodeAt2(e.startLineNumber,e.startColumn);if(null===a)return[];const l=this.nodeAt2(e.endLineNumber,e.endColumn);if(null===l)return[];let h=this.positionInBuffer(a.node,a.remainder);const d=this.positionInBuffer(l.node,l.remainder);if(a.node===l.node)return this.findMatchesInNode(a.node,r,e.startLineNumber,e.startColumn,h,d,t,i,n,s,o),o;let c=e.startLineNumber,u=a.node;for(;u!==l.node;){const l=this.getLineFeedCnt(u.piece.bufferIndex,h,u.piece.end);if(l>=1){const a=this._buffers[u.piece.bufferIndex].lineStarts,d=this.offsetInBuffer(u.piece.bufferIndex,u.piece.start),g=a[h.line+l],m=c===e.startLineNumber?e.startColumn:1;if(s=this.findMatchesInNode(u,r,c,m,h,this.positionInBuffer(u,g-d),t,i,n,s,o),s>=n)return o;c+=l}const d=c===e.startLineNumber?e.startColumn-1:0;if(c===e.endLineNumber){const a=this.getLineContent(c).substring(d,e.endColumn-1);return s=this._findMatchesInLine(t,r,a,e.endLineNumber,d,s,o,i,n),o}if(s=this._findMatchesInLine(t,r,this.getLineContent(c).substr(d),c,d,s,o,i,n),s>=n)return o;c++,a=this.nodeAt2(c,1),u=a.node,h=this.positionInBuffer(a.node,a.remainder)}if(c===e.endLineNumber){const a=c===e.startLineNumber?e.startColumn-1:0,l=this.getLineContent(c).substring(a,e.endColumn-1);return s=this._findMatchesInLine(t,r,l,e.endLineNumber,a,s,o,i,n),o}const g=c===e.startLineNumber?e.startColumn:1;return s=this.findMatchesInNode(l.node,r,c,g,h,d,t,i,n,s,o),o}_findMatchesInLine(e,t,i,n,o,s,r,a,l){const h=e.wordSeparators;if(!a&&e.simpleSearch){const t=e.simpleSearch,a=t.length,d=i.length;let c=-a;for(;-1!==(c=i.indexOf(t,c+a));)if((!h||(0,Re.cM)(h,i,d,c,a))&&(r[s++]=new b.tk(new m.e(n,c+1+o,n,c+1+a+o),null),s>=l))return s;return s}let d;t.reset(0);do{if(d=t.next(i),d&&(r[s++]=(0,Re.iE)(new m.e(n,d.index+1+o,n,d.index+1+d[0].length+o),d,a),s>=l))return s}while(d);return s}insert(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this._EOLNormalized=this._EOLNormalized&&i,this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",this.root!==ye){const{node:i,remainder:n,nodeStartOffset:o}=this.nodeAt(e),s=i.piece,r=s.bufferIndex,a=this.positionInBuffer(i,n);if(0===i.piece.bufferIndex&&s.end.line===this._lastChangeBufferPos.line&&s.end.column===this._lastChangeBufferPos.column&&o+s.length===e&&t.lengthe){const e=[];let o=new ze(s.bufferIndex,a,s.end,this.getLineFeedCnt(s.bufferIndex,a,s.end),this.offsetInBuffer(r,s.end)-this.offsetInBuffer(r,a));if(this.shouldCheckCRLF()&&this.endWithCR(t)){if(10===this.nodeCharCodeAt(i,n)){const e={line:o.start.line+1,column:0};o=new ze(o.bufferIndex,e,o.end,this.getLineFeedCnt(o.bufferIndex,e,o.end),o.length-1),t+="\n"}}if(this.shouldCheckCRLF()&&this.startWithLF(t)){if(13===this.nodeCharCodeAt(i,n-1)){const o=this.positionInBuffer(i,n-1);this.deleteNodeTail(i,o),t="\r"+t,0===i.piece.length&&e.push(i)}else this.deleteNodeTail(i,a)}else this.deleteNodeTail(i,a);const l=this.createNewPieces(t);o.length>0&&this.rbInsertRight(i,o);let h=i;for(let t=0;t=0;s--)o=this.rbInsertLeft(o,n[s]);this.validateCRLFWithPrevNode(o),this.deleteNodes(i)}insertContentToNodeRight(e,t){this.adjustCarriageReturnFromNext(e,t)&&(e+="\n");const i=this.createNewPieces(e),n=this.rbInsertRight(t,i[0]);let o=n;for(let s=1;s=d))break;a=h+1}return i?(i.line=h,i.column=r-c,null):{line:h,column:r-c}}getLineFeedCnt(e,t,i){if(0===i.column)return i.line-t.line;const n=this._buffers[e].lineStarts;if(i.line===n.length-1)return i.line-t.line;const o=n[i.line+1],s=n[i.line]+i.column;if(o>s+1)return i.line-t.line;const r=s-1;return 13===this._buffers[e].buffer.charCodeAt(r)?i.line-t.line+1:i.line-t.line}offsetInBuffer(e,t){return this._buffers[e].lineStarts[t.line]+t.column}deleteNodes(e){for(let t=0;tOe){const t=[];for(;e.length>Oe;){const i=e.charCodeAt(65534);let n;13===i||i>=55296&&i<=56319?(n=e.substring(0,65534),e=e.substring(65534)):(n=e.substring(0,Oe),e=e.substring(Oe));const o=Be(n);t.push(new ze(this._buffers.length,{line:0,column:0},{line:o.length-1,column:n.length-o[o.length-1]},o.length-1,n.length)),this._buffers.push(new Ve(n,o))}const i=Be(e);return t.push(new ze(this._buffers.length,{line:0,column:0},{line:i.length-1,column:e.length-i[i.length-1]},i.length-1,e.length)),this._buffers.push(new Ve(e,i)),t}let t=this._buffers[0].buffer.length;const i=Be(e,!1);let n=this._lastChangeBufferPos;if(this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-1]===t&&0!==t&&this.startWithLF(e)&&this.endWithCR(this._buffers[0].buffer)){this._lastChangeBufferPos={line:this._lastChangeBufferPos.line,column:this._lastChangeBufferPos.column+1},n=this._lastChangeBufferPos;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0,i=this.root,n="";const o=this._searchCache.get2(e);if(o){i=o.node;const s=this.getAccumulatedValue(i,e-o.nodeStartLineNumber-1),r=this._buffers[i.piece.bufferIndex].buffer,a=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);if(o.nodeStartLineNumber+i.piece.lineFeedCnt!==e){const n=this.getAccumulatedValue(i,e-o.nodeStartLineNumber);return r.substring(a+s,a+n-t)}n=r.substring(a+s,a+i.piece.length)}else{let o=0;const s=e;for(;i!==ye;)if(i.left!==ye&&i.lf_left>=e-1)i=i.left;else{if(i.lf_left+i.piece.lineFeedCnt>e-1){const n=this.getAccumulatedValue(i,e-i.lf_left-2),r=this.getAccumulatedValue(i,e-i.lf_left-1),a=this._buffers[i.piece.bufferIndex].buffer,l=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return o+=i.size_left,this._searchCache.set({node:i,nodeStartOffset:o,nodeStartLineNumber:s-(e-1-i.lf_left)}),a.substring(l+n,l+r-t)}if(i.lf_left+i.piece.lineFeedCnt===e-1){const t=this.getAccumulatedValue(i,e-i.lf_left-2),o=this._buffers[i.piece.bufferIndex].buffer,s=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);n=o.substring(s+t,s+i.piece.length);break}e-=i.lf_left+i.piece.lineFeedCnt,o+=i.size_left+i.piece.length,i=i.right}}for(i=i.next();i!==ye;){const e=this._buffers[i.piece.bufferIndex].buffer;if(i.piece.lineFeedCnt>0){const o=this.getAccumulatedValue(i,0),s=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return n+=e.substring(s,s+o-t),n}{const t=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);n+=e.substr(t,i.piece.length)}i=i.next()}return n}computeBufferMetadata(){let e=this.root,t=1,i=0;for(;e!==ye;)t+=e.lf_left+e.piece.lineFeedCnt,i+=e.size_left+e.piece.length,e=e.right;this._lineCnt=t,this._length=i,this._searchCache.validate(this._length)}getIndexOf(e,t){const i=e.piece,n=this.positionInBuffer(e,t),o=n.line-i.start.line;if(this.offsetInBuffer(i.bufferIndex,i.end)-this.offsetInBuffer(i.bufferIndex,i.start)===t){const t=this.getLineFeedCnt(e.piece.bufferIndex,i.start,n);if(t!==o)return{index:t,remainder:0}}return{index:o,remainder:n.column}}getAccumulatedValue(e,t){if(t<0)return 0;const i=e.piece,n=this._buffers[i.bufferIndex].lineStarts,o=i.start.line+t+1;return o>i.end.line?n[i.end.line]+i.end.column-n[i.start.line]-i.start.column:n[o]-n[i.start.line]-i.start.column}deleteNodeTail(e,t){const i=e.piece,n=i.lineFeedCnt,o=this.offsetInBuffer(i.bufferIndex,i.end),s=t,r=this.offsetInBuffer(i.bufferIndex,s),a=this.getLineFeedCnt(i.bufferIndex,i.start,s),l=a-n,h=r-o,d=i.length+h;e.piece=new ze(i.bufferIndex,i.start,s,a,d),Me(this,e,h,l)}deleteNodeHead(e,t){const i=e.piece,n=i.lineFeedCnt,o=this.offsetInBuffer(i.bufferIndex,i.start),s=t,r=this.getLineFeedCnt(i.bufferIndex,s,i.end),a=r-n,l=o-this.offsetInBuffer(i.bufferIndex,s),h=i.length+l;e.piece=new ze(i.bufferIndex,s,i.end,r,h),Me(this,e,l,a)}shrinkNode(e,t,i){const n=e.piece,o=n.start,s=n.end,r=n.length,a=n.lineFeedCnt,l=t,h=this.getLineFeedCnt(n.bufferIndex,n.start,l),d=this.offsetInBuffer(n.bufferIndex,t)-this.offsetInBuffer(n.bufferIndex,o);e.piece=new ze(n.bufferIndex,n.start,l,h,d),Me(this,e,d-r,h-a);const c=new ze(n.bufferIndex,i,s,this.getLineFeedCnt(n.bufferIndex,i,s),this.offsetInBuffer(n.bufferIndex,s)-this.offsetInBuffer(n.bufferIndex,i)),u=this.rbInsertRight(e,c);this.validateCRLFWithPrevNode(u)}appendToNode(e,t){this.adjustCarriageReturnFromNext(t,e)&&(t+="\n");const i=this.shouldCheckCRLF()&&this.startWithLF(t)&&this.endWithCR(e),n=this._buffers[0].buffer.length;this._buffers[0].buffer+=t;const o=Be(t,!1);for(let c=0;ce)t=t.left;else{if(t.size_left+t.piece.length>=e){n+=t.size_left;const i={node:t,remainder:e-t.size_left,nodeStartOffset:n};return this._searchCache.set(i),i}e-=t.size_left+t.piece.length,n+=t.size_left+t.piece.length,t=t.right}return null}nodeAt2(e,t){let i=this.root,n=0;for(;i!==ye;)if(i.left!==ye&&i.lf_left>=e-1)i=i.left;else{if(i.lf_left+i.piece.lineFeedCnt>e-1){const o=this.getAccumulatedValue(i,e-i.lf_left-2),s=this.getAccumulatedValue(i,e-i.lf_left-1);return n+=i.size_left,{node:i,remainder:Math.min(o+t-1,s),nodeStartOffset:n}}if(i.lf_left+i.piece.lineFeedCnt===e-1){const o=this.getAccumulatedValue(i,e-i.lf_left-2);if(o+t-1<=i.piece.length)return{node:i,remainder:o+t-1,nodeStartOffset:n};t-=i.piece.length-o;break}e-=i.lf_left+i.piece.lineFeedCnt,n+=i.size_left+i.piece.length,i=i.right}for(i=i.next();i!==ye;){if(i.piece.lineFeedCnt>0){const e=this.getAccumulatedValue(i,0),n=this.offsetOfNode(i);return{node:i,remainder:Math.min(t-1,e),nodeStartOffset:n}}if(i.piece.length>=t-1){return{node:i,remainder:t-1,nodeStartOffset:this.offsetOfNode(i)}}t-=i.piece.length,i=i.next()}return null}nodeCharCodeAt(e,t){if(e.piece.lineFeedCnt<1)return-1;const i=this._buffers[e.piece.bufferIndex],n=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start)+t;return i.buffer.charCodeAt(n)}offsetOfNode(e){if(!e)return 0;let t=e.size_left;for(;e!==this.root;)e.parent.right===e&&(t+=e.parent.size_left+e.parent.piece.length),e=e.parent;return t}shouldCheckCRLF(){return!(this._EOLNormalized&&"\n"===this._EOL)}startWithLF(e){if("string"===typeof e)return 10===e.charCodeAt(0);if(e===ye||0===e.piece.lineFeedCnt)return!1;const t=e.piece,i=this._buffers[t.bufferIndex].lineStarts,n=t.start.line,o=i[n]+t.start.column;if(n===i.length-1)return!1;return!(i[n+1]>o+1)&&10===this._buffers[t.bufferIndex].buffer.charCodeAt(o)}endWithCR(e){return"string"===typeof e?13===e.charCodeAt(e.length-1):e!==ye&&0!==e.piece.lineFeedCnt&&13===this.nodeCharCodeAt(e,e.piece.length-1)}validateCRLFWithPrevNode(e){if(this.shouldCheckCRLF()&&this.startWithLF(e)){const t=e.prev();this.endWithCR(t)&&this.fixCRLF(t,e)}}validateCRLFWithNextNode(e){if(this.shouldCheckCRLF()&&this.endWithCR(e)){const t=e.next();this.startWithLF(t)&&this.fixCRLF(e,t)}}fixCRLF(e,t){const i=[],n=this._buffers[e.piece.bufferIndex].lineStarts;let o;o=0===e.piece.end.column?{line:e.piece.end.line-1,column:n[e.piece.end.line]-n[e.piece.end.line-1]-1}:{line:e.piece.end.line,column:e.piece.end.column-1};const s=e.piece.length-1,r=e.piece.lineFeedCnt-1;e.piece=new ze(e.piece.bufferIndex,e.piece.start,o,r,s),Me(this,e,-1,-1),0===e.piece.length&&i.push(e);const a={line:t.piece.start.line+1,column:0},l=t.piece.length-1,h=this.getLineFeedCnt(t.piece.bufferIndex,a,t.piece.end);t.piece=new ze(t.piece.bufferIndex,a,t.piece.end,h,l),Me(this,t,-1,-1),0===t.piece.length&&i.push(t);const d=this.createNewPieces("\r\n");this.rbInsertRight(e,d[0]);for(let c=0;c1&&void 0!==arguments[1]?arguments[1]:0;if(e.isEmpty())return"";const i=this._getEndOfLine(t);return this._pieceTree.getValueInRange(e,i)}getValueLengthInRange(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e.isEmpty())return 0;if(e.startLineNumber===e.endLineNumber)return e.endColumn-e.startColumn;const i=this.getOffsetAt(e.startLineNumber,e.startColumn),n=this.getOffsetAt(e.endLineNumber,e.endColumn);let o=0;const s=this._getEndOfLine(t),r=this.getEOL();if(s.length!==r.length){o=(s.length-r.length)*(e.endLineNumber-e.startLineNumber)}return n-i+o}getCharacterCountInRange(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(this._mightContainNonBasicASCII){let i=0;const n=e.startLineNumber,o=e.endLineNumber;for(let t=n;t<=o;t++){const s=this.getLineContent(t),r=t===n?e.startColumn-1:0,a=t===o?e.endColumn-1:s.length;for(let e=r;ee.sortIndex-t.sortIndex))}this._mightContainRTL=n,this._mightContainUnusualLineTerminators=o,this._mightContainNonBasicASCII=s;const m=this._doApplyEdits(a);let f=null;if(t&&u.length>0){u.sort(((e,t)=>t.lineNumber-e.lineNumber)),f=[];for(let e=0,t=u.length;e0&&u[e-1].lineNumber===t)continue;const i=u[e].oldContent,n=this.getLineContent(t);0!==n.length&&n!==i&&-1===l.LC(n)&&f.push(t)}}return this._onDidChangeContent.fire(),new b.je(g,m,f)}_reduceOperations(e){return e.length<1e3?e:[this._toSingleEditOperation(e)]}_toSingleEditOperation(e){let t=!1;const i=e[0].range,n=e[e.length-1].range,o=new m.e(i.startLineNumber,i.startColumn,n.endLineNumber,n.endColumn);let s=i.startLineNumber,r=i.startColumn;const a=[];for(let d=0,g=e.length;d0&&a.push(i.text),s=n.endLineNumber,r=n.endColumn}const l=a.join(""),[h,c,u]=(0,d.Q)(l);return{sortIndex:0,identifier:e[0].identifier,range:o,rangeOffset:this.getOffsetAt(o.startLineNumber,o.startColumn),rangeLength:this.getValueLengthInRange(o,0),text:l,eolCount:h,firstLineLength:c,lastLineLength:u,forceMoveMarkers:t,isAutoWhitespaceEdit:!1}}_doApplyEdits(e){e.sort(je._sortOpsDescending);const t=[];for(let i=0;i0){const e=r.eolCount+1;h=1===e?new m.e(a,l,a,l+r.firstLineLength):new m.e(a,l,a+e-1,r.lastLineLength+1)}else h=new m.e(a,l,a,l);i=h.endLineNumber,n=h.endColumn,t.push(h),o=r}return t}static _sortOpsAscending(e,t){const i=m.e.compareRangesUsingEnds(e.range,t.range);return 0===i?e.sortIndex-t.sortIndex:i}static _sortOpsDescending(e,t){const i=m.e.compareRangesUsingEnds(e.range,t.range);return 0===i?t.sortIndex-e.sortIndex:-i}}class qe{constructor(e,t,i,n,o,s,r,a,l){this._chunks=e,this._bom=t,this._cr=i,this._lf=n,this._crlf=o,this._containsRTL=s,this._containsUnusualLineTerminators=r,this._isBasicASCII=a,this._normalizeEOL=l}_getEOL(e){const t=this._cr+this._lf+this._crlf,i=this._cr+this._crlf;return 0===t?1===e?"\n":"\r\n":i>t/2?"\r\n":"\n"}create(e){const t=this._getEOL(e),i=this._chunks;if(this._normalizeEOL&&("\r\n"===t&&(this._cr>0||this._lf>0)||"\n"===t&&(this._cr>0||this._crlf>0)))for(let o=0,s=i.length;o=55296&&t<=56319?(this._acceptChunk1(e.substr(0,e.length-1),!1),this._hasPreviousChar=!0,this._previousChar=t):(this._acceptChunk1(e,!1),this._hasPreviousChar=!1,this._previousChar=t)}_acceptChunk1(e,t){(t||0!==e.length)&&(this._hasPreviousChar?this._acceptChunk2(String.fromCharCode(this._previousChar)+e):this._acceptChunk2(e))}_acceptChunk2(e){const t=function(e,t){e.length=0,e[0]=0;let i=1,n=0,o=0,s=0,r=!0;for(let l=0,h=t.length;l126)&&(r=!1)}const a=new Fe(Pe(e),n,o,s,r);return e.length=0,a}(this._tmpLineStarts,e);this.chunks.push(new Ve(e,t.lineStarts)),this.cr+=t.cr,this.lf+=t.lf,this.crlf+=t.crlf,t.isBasicASCII||(this.isBasicASCII=!1,this.containsRTL||(this.containsRTL=l.Ut(e)),this.containsUnusualLineTerminators||(this.containsUnusualLineTerminators=l.ab(e)))}finish(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._finish(),new qe(this.chunks,this.BOM,this.cr,this.lf,this.crlf,this.containsRTL,this.containsUnusualLineTerminators,this.isBasicASCII,e)}_finish(){if(0===this.chunks.length&&this._acceptChunk1("",!0),this._hasPreviousChar){this._hasPreviousChar=!1;const e=this.chunks[this.chunks.length-1];e.buffer+=String.fromCharCode(this._previousChar);const t=Be(e.buffer);e.lineStarts=t,13===this._previousChar&&this.cr++}}}var Qe=i(60282),Ze=i(42696),Ye=i(761),$e=i(81958),Je=i(21511),Xe=i(6459),et=i(57866),tt=i(22191);class it{constructor(e){this._default=e,this._store=[]}get(e){return e=this._store.length;)this._store[this._store.length]=this._default;this._store[e]=t}replace(e,t,i){if(e>=this._store.length)return;if(0===t)return void this.insert(e,i);if(0===i)return void this.delete(e,t);const n=this._store.slice(0,e),o=this._store.slice(e+t),s=function(e,t){const i=[];for(let n=0;n=this._store.length||this._store.splice(e,t)}insert(e,t){if(0===t||e>=this._store.length)return;const i=[];for(let n=0;n0){const i=this._tokens[this._tokens.length-1];if(i.endLineNumber+1===e)return void i.appendLineTokens(t)}this._tokens.push(new nt(e,[t]))}finalize(){return this._tokens}}var st=i(43471);class rt{constructor(e,t){this.tokenizationSupport=t,this.initialState=this.tokenizationSupport.getInitialState(),this.store=new lt(e)}getStartState(e){return this.store.getStartState(e,this.initialState)}getFirstInvalidLine(){return this.store.getFirstInvalidLine(this.initialState)}}class at extends rt{constructor(e,t,i,n){super(e,t),this._textModel=i,this._languageIdCodec=n}updateTokensUntilLine(e,t){const i=this._textModel.getLanguageId();for(;;){const n=this.getFirstInvalidLine();if(!n||n.lineNumber>t)break;const o=this._textModel.getLineContent(n.lineNumber),s=ct(this._languageIdCodec,i,this.tokenizationSupport,o,!0,n.startState);e.add(n.lineNumber,s.tokens),this.store.setEndState(n.lineNumber,s.endState)}}getTokenTypeIfInsertingCharacter(e,t){const i=this.getStartState(e.lineNumber);if(!i)return 0;const n=this._textModel.getLanguageId(),o=this._textModel.getLineContent(e.lineNumber),s=o.substring(0,e.column-1)+t+o.substring(e.column-1),r=ct(this._languageIdCodec,n,this.tokenizationSupport,s,!0,i),a=new st.A(r.tokens,s,this._languageIdCodec);if(0===a.getCount())return 0;const l=a.findTokenIndexAtOffset(e.column-1);return a.getStandardTokenType(l)}tokenizeLineWithEdit(e,t,i){const n=e.lineNumber,o=e.column,s=this.getStartState(n);if(!s)return null;const r=this._textModel.getLineContent(n),a=r.substring(0,o-1)+i+r.substring(o-1+t),l=this._textModel.getLanguageIdAtPosition(n,0),h=ct(this._languageIdCodec,l,this.tokenizationSupport,a,!0,s);return new st.A(h.tokens,a,this._languageIdCodec)}hasAccurateTokensForLine(e){return e1&&r>=1;r--){const e=this._textModel.getLineFirstNonWhitespaceColumn(r);if(0!==e&&(e0&&i>0&&(i--,t--),this._lineEndStates.replace(e.startLineNumber,i,t)}}class dt{constructor(){this._ranges=[]}get min(){return 0===this._ranges.length?null:this._ranges[0].start}delete(e){const t=this._ranges.findIndex((t=>t.contains(e)));if(-1!==t){const i=this._ranges[t];i.start===e?i.endExclusive===e+1?this._ranges.splice(t,1):this._ranges[t]=new et.q(e+1,i.endExclusive):i.endExclusive===e+1?this._ranges[t]=new et.q(i.start,e):this._ranges.splice(t,1,new et.q(i.start,e),new et.q(e+1,i.endExclusive))}}addRange(e){et.q.addRange(e,this._ranges)}addRangeAndResize(e,t){let i=0;for(;!(i>=this._ranges.length||e.start<=this._ranges[i].endExclusive);)i++;let n=i;for(;!(n>=this._ranges.length||e.endExclusivee.toString())).join(" + ")}}function ct(e,t,i,n,o,r){let a=null;if(i)try{a=i.tokenizeEncoded(n,o,r.clone())}catch(l){(0,s.dL)(l)}return a||(a=(0,tt.Dy)(e.encodeLanguageId(t),r)),st.A.convertToEndOffset(a.tokens,n.length),a}class ut{constructor(e,t){this._tokenizerWithStateStore=e,this._backgroundTokenStore=t,this._isDisposed=!1,this._isScheduled=!1}dispose(){this._isDisposed=!0}handleChanges(){this._beginBackgroundTokenization()}_beginBackgroundTokenization(){!this._isScheduled&&this._tokenizerWithStateStore._textModel.isAttachedToEditor()&&this._hasLinesToTokenize()&&(this._isScheduled=!0,(0,Qe.jg)((e=>{this._isScheduled=!1,this._backgroundTokenizeWithDeadline(e)})))}_backgroundTokenizeWithDeadline(e){const t=Date.now()+e.timeRemaining(),i=()=>{!this._isDisposed&&this._tokenizerWithStateStore._textModel.isAttachedToEditor()&&this._hasLinesToTokenize()&&(this._backgroundTokenizeForAtLeast1ms(),Date.now()1)break;if(this._tokenizeOneInvalidLine(t)>=e)break}while(this._hasLinesToTokenize());this._backgroundTokenStore.setTokens(t.finalize()),this.checkFinished()}_hasLinesToTokenize(){return!!this._tokenizerWithStateStore&&!this._tokenizerWithStateStore.store.allStatesValid()}_tokenizeOneInvalidLine(e){var t;const i=null===(t=this._tokenizerWithStateStore)||void 0===t?void 0:t.getFirstInvalidLine();return i?(this._tokenizerWithStateStore.updateTokensUntilLine(e,i.lineNumber),i.lineNumber):this._tokenizerWithStateStore._textModel.getLineCount()+1}checkFinished(){this._isDisposed||this._tokenizerWithStateStore.store.allStatesValid()&&this._backgroundTokenStore.backgroundTokenizationFinished()}requestTokens(e,t){this._tokenizerWithStateStore.store.invalidateEndStateRange(new u.z(e,t))}}const gt=new Uint32Array(0).buffer;class mt{static deleteBeginning(e,t){return null===e||e===gt?e:mt.delete(e,0,t)}static deleteEnding(e,t){if(null===e||e===gt)return e;const i=ft(e),n=i[i.length-2];return mt.delete(e,t,n)}static delete(e,t,i){if(null===e||e===gt||t===i)return e;const n=ft(e),o=n.length>>>1;if(0===t&&n[n.length-2]===i)return gt;const s=st.A.findIndexInTokensArray(n,t),r=s>0?n[s-1<<1]:0;if(il&&(n[a++]=e,n[a++]=n[1+(c<<1)],l=e)}if(a===n.length)return e;const d=new Uint32Array(a);return d.set(n.subarray(0,a),0),d.buffer}static append(e,t){if(t===gt)return e;if(e===gt)return t;if(null===e)return e;if(null===t)return null;const i=ft(e),n=ft(t),o=n.length>>>1,s=new Uint32Array(i.length+n.length);s.set(i,0);let r=i.length;const a=i[i.length-2];for(let l=0;l>>1;let s=st.A.findIndexInTokensArray(n,t);if(s>0){n[s-1<<1]===t&&s--}for(let r=s;r0}getTokens(e,t,i){let n=null;if(t1&&(t=pt.N.getLanguageId(n[1])!==e),!t)return gt}if(!n||0===n.length){const i=new Uint32Array(2);return i[0]=t,i[1]=vt(e),i.buffer}return n[n.length-2]=t,0===n.byteOffset&&n.byteLength===n.buffer.byteLength?n.buffer:n}_ensureLine(e){for(;e>=this._len;)this._lineTokens[this._len]=null,this._len++}_deleteLines(e,t){0!==t&&(e+t>this._len&&(t=this._len-e),this._lineTokens.splice(e,t),this._len-=t)}_insertLines(e,t){if(0===t)return;const i=[];for(let n=0;n=this._len)return;if(e.startLineNumber===e.endLineNumber){if(e.startColumn===e.endColumn)return;return void(this._lineTokens[t]=mt.delete(this._lineTokens[t],e.startColumn-1,e.endColumn-1))}this._lineTokens[t]=mt.deleteEnding(this._lineTokens[t],e.startColumn-1);const i=e.endLineNumber-1;let n=null;i=this._len||(0!==t?(this._lineTokens[n]=mt.deleteEnding(this._lineTokens[n],e.column-1),this._lineTokens[n]=mt.insert(this._lineTokens[n],e.column-1,i),this._insertLines(e.lineNumber,t)):this._lineTokens[n]=mt.insert(this._lineTokens[n],e.column-1,i))}setMultilineTokens(e,t){if(0===e.length)return{changes:[]};const i=[];for(let n=0,o=e.length;n>>0}class bt{constructor(e){this._pieces=[],this._isComplete=!1,this._languageIdCodec=e}flush(){this._pieces=[],this._isComplete=!1}isEmpty(){return 0===this._pieces.length}set(e,t){this._pieces=e||[],this._isComplete=t}setPartial(e,t){let i=e;if(t.length>0){const n=t[0].getRange(),o=t[t.length-1].getRange();if(!n||!o)return e;i=e.plusRange(n).plusRange(o)}let o=null;for(let n=0,s=this._pieces.length;ni.endLineNumber){o=o||{index:n};break}if(e.removeTokens(i),e.isEmpty()){this._pieces.splice(n,1),n--,s--;continue}if(e.endLineNumberi.endLineNumber){o=o||{index:n};continue}const[t,r]=e.split(i);t.isEmpty()?o=o||{index:n}:r.isEmpty()||(this._pieces.splice(n,1,t,r),n++,s++,o=o||{index:n})}return o=o||{index:this._pieces.length},t.length>0&&(this._pieces=n.Zv(this._pieces,o.index,t)),i}isComplete(){return this._isComplete}addSparseTokens(e,t){if(0===t.getLineContent().length)return t;const i=this._pieces;if(0===i.length)return t;const n=i[bt._findFirstPieceWithLine(i,e)].getLineTokens(e);if(!n)return t;const o=t.getCount(),s=n.getCount();let r=0;const a=[];let l=0,h=0;const d=(e,t)=>{e!==h&&(h=e,a[l++]=e,a[l++]=t)};for(let c=0;c>>0,l=~a>>>0;for(;rt)){for(;o>i&&e[o-1].startLineNumber<=t&&t<=e[o-1].endLineNumber;)o--;return o}n=o-1}}return i}acceptEdit(e,t,i,n,o){for(const s of this._pieces)s.acceptEdit(e,t,i,n,o)}}class Ct extends $e.U{constructor(e,t,i,n,o,s){super(),this._languageService=e,this._languageConfigurationService=t,this._textModel=i,this._bracketPairsTextModelPart=n,this._languageId=o,this._attachedViews=s,this._semanticTokens=new bt(this._languageService.languageIdCodec),this._onDidChangeLanguage=this._register(new r.Q5),this.onDidChangeLanguage=this._onDidChangeLanguage.event,this._onDidChangeLanguageConfiguration=this._register(new r.Q5),this.onDidChangeLanguageConfiguration=this._onDidChangeLanguageConfiguration.event,this._onDidChangeTokens=this._register(new r.Q5),this.onDidChangeTokens=this._onDidChangeTokens.event,this.grammarTokens=this._register(new wt(this._languageService.languageIdCodec,this._textModel,(()=>this._languageId),this._attachedViews)),this._register(this._languageConfigurationService.onDidChange((e=>{e.affects(this._languageId)&&this._onDidChangeLanguageConfiguration.fire({})}))),this._register(this.grammarTokens.onDidChangeTokens((e=>{this._emitModelTokensChangedEvent(e)}))),this._register(this.grammarTokens.onDidChangeBackgroundTokenizationState((e=>{this._bracketPairsTextModelPart.handleDidChangeBackgroundTokenizationState()})))}handleDidChangeContent(e){if(e.isFlush)this._semanticTokens.flush();else if(!e.isEolChange)for(const t of e.changes){const[e,i,n]=(0,d.Q)(t.text);this._semanticTokens.acceptEdit(t.range,e,i,n,t.text.length>0?t.text.charCodeAt(0):0)}this.grammarTokens.handleDidChangeContent(e)}handleDidChangeAttached(){this.grammarTokens.handleDidChangeAttached()}getLineTokens(e){this.validateLineNumber(e);const t=this.grammarTokens.getLineTokens(e);return this._semanticTokens.addSparseTokens(e,t)}_emitModelTokensChangedEvent(e){this._textModel._isDisposing()||(this._bracketPairsTextModelPart.handleDidChangeTokens(e),this._onDidChangeTokens.fire(e))}validateLineNumber(e){if(e<1||e>this._textModel.getLineCount())throw new s.he("Illegal value for lineNumber")}get hasTokens(){return this.grammarTokens.hasTokens}resetTokenization(){this.grammarTokens.resetTokenization()}get backgroundTokenizationState(){return this.grammarTokens.backgroundTokenizationState}forceTokenization(e){this.validateLineNumber(e),this.grammarTokens.forceTokenization(e)}hasAccurateTokensForLine(e){return this.validateLineNumber(e),this.grammarTokens.hasAccurateTokensForLine(e)}isCheapToTokenize(e){return this.validateLineNumber(e),this.grammarTokens.isCheapToTokenize(e)}tokenizeIfCheap(e){this.validateLineNumber(e),this.grammarTokens.tokenizeIfCheap(e)}getTokenTypeIfInsertingCharacter(e,t,i){return this.grammarTokens.getTokenTypeIfInsertingCharacter(e,t,i)}tokenizeLineWithEdit(e,t,i){return this.grammarTokens.tokenizeLineWithEdit(e,t,i)}setSemanticTokens(e,t){this._semanticTokens.set(e,t),this._emitModelTokensChangedEvent({semanticTokensApplied:null!==e,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]})}hasCompleteSemanticTokens(){return this._semanticTokens.isComplete()}hasSomeSemanticTokens(){return!this._semanticTokens.isEmpty()}setPartialSemanticTokens(e,t){if(this.hasCompleteSemanticTokens())return;const i=this._textModel.validateRange(this._semanticTokens.setPartial(e,t));this._emitModelTokensChangedEvent({semanticTokensApplied:!0,ranges:[{fromLineNumber:i.startLineNumber,toLineNumber:i.endLineNumber}]})}getWordAtPosition(e){this.assertNotDisposed();const t=this._textModel.validatePosition(e),i=this._textModel.getLineContent(t.lineNumber),n=this.getLineTokens(t.lineNumber),o=n.findTokenIndexAtOffset(t.column-1),[s,r]=Ct._findLanguageBoundaries(n,o),a=(0,Ze.t2)(t.column,this.getLanguageConfiguration(n.getLanguageId(o)).getWordDefinition(),i.substring(s,r),s);if(a&&a.startColumn<=e.column&&e.column<=a.endColumn)return a;if(o>0&&s===t.column-1){const[s,r]=Ct._findLanguageBoundaries(n,o-1),a=(0,Ze.t2)(t.column,this.getLanguageConfiguration(n.getLanguageId(o-1)).getWordDefinition(),i.substring(s,r),s);if(a&&a.startColumn<=e.column&&e.column<=a.endColumn)return a}return null}getLanguageConfiguration(e){return this._languageConfigurationService.getLanguageConfiguration(e)}static _findLanguageBoundaries(e,t){const i=e.getLanguageId(t);let n=0;for(let s=t;s>=0&&e.getLanguageId(s)===i;s--)n=e.getStartOffset(s);let o=e.getLineContent().length;for(let s=t,r=e.getCount();s1&&void 0!==arguments[1]?arguments[1]:"api";if(this._languageId===e)return;const i={oldLanguage:this._languageId,newLanguage:e,source:t};this._languageId=e,this._bracketPairsTextModelPart.handleDidChangeLanguage(i),this.grammarTokens.resetTokenization(),this._onDidChangeLanguage.fire(i),this._onDidChangeLanguageConfiguration.fire({})}}class wt extends a.JT{get backgroundTokenizationState(){return this._backgroundTokenizationState}constructor(e,t,i,n){super(),this._languageIdCodec=e,this._textModel=t,this.getLanguageId=i,this._tokenizer=null,this._defaultBackgroundTokenizer=null,this._backgroundTokenizer=this._register(new a.XK),this._tokens=new _t(this._languageIdCodec),this._debugBackgroundTokenizer=this._register(new a.XK),this._backgroundTokenizationState=1,this._onDidChangeBackgroundTokenizationState=this._register(new r.Q5),this.onDidChangeBackgroundTokenizationState=this._onDidChangeBackgroundTokenizationState.event,this._onDidChangeTokens=this._register(new r.Q5),this.onDidChangeTokens=this._onDidChangeTokens.event,this._attachedViewStates=this._register(new a.b2),this._register(Ye.RW.onDidChange((e=>{const t=this.getLanguageId();-1!==e.changedLanguages.indexOf(t)&&this.resetTokenization()}))),this.resetTokenization(),this._register(n.onDidChangeVisibleRanges((e=>{let{view:t,state:i}=e;if(i){let e=this._attachedViewStates.get(t);e||(e=new yt((()=>this.refreshRanges(e.lineRanges))),this._attachedViewStates.set(t,e)),e.handleStateChange(i)}else this._attachedViewStates.deleteAndDispose(t)})))}resetTokenization(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];var t;this._tokens.flush(),null===(t=this._debugBackgroundTokens)||void 0===t||t.flush(),this._debugBackgroundStates&&(this._debugBackgroundStates=new lt(this._textModel.getLineCount())),e&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]});const[i,n]=(()=>{if(this._textModel.isTooLargeForTokenization())return[null,null];const e=Ye.RW.get(this.getLanguageId());if(!e)return[null,null];let t;try{t=e.getInitialState()}catch(i){return(0,s.dL)(i),[null,null]}return[e,t]})();if(this._tokenizer=i&&n?new at(this._textModel.getLineCount(),i,this._textModel,this._languageIdCodec):null,this._backgroundTokenizer.clear(),this._defaultBackgroundTokenizer=null,this._tokenizer){const e={setTokens:e=>{this.setTokens(e)},backgroundTokenizationFinished:()=>{if(2===this._backgroundTokenizationState)return;this._backgroundTokenizationState=2,this._onDidChangeBackgroundTokenizationState.fire()},setEndState:(e,t)=>{var i;if(!this._tokenizer)return;const n=this._tokenizer.store.getFirstInvalidEndStateLineNumber();null!==n&&e>=n&&(null===(i=this._tokenizer)||void 0===i||i.store.setEndState(e,t))}};i&&i.createBackgroundTokenizer&&!i.backgroundTokenizerShouldOnlyVerifyTokens&&(this._backgroundTokenizer.value=i.createBackgroundTokenizer(this._textModel,e)),this._backgroundTokenizer.value||this._textModel.isTooLargeForTokenization()||(this._backgroundTokenizer.value=this._defaultBackgroundTokenizer=new ut(this._tokenizer,e),this._defaultBackgroundTokenizer.handleChanges()),(null===i||void 0===i?void 0:i.backgroundTokenizerShouldOnlyVerifyTokens)&&i.createBackgroundTokenizer?(this._debugBackgroundTokens=new _t(this._languageIdCodec),this._debugBackgroundStates=new lt(this._textModel.getLineCount()),this._debugBackgroundTokenizer.clear(),this._debugBackgroundTokenizer.value=i.createBackgroundTokenizer(this._textModel,{setTokens:e=>{var t;null===(t=this._debugBackgroundTokens)||void 0===t||t.setMultilineTokens(e,this._textModel)},backgroundTokenizationFinished(){},setEndState:(e,t)=>{var i;null===(i=this._debugBackgroundStates)||void 0===i||i.setEndState(e,t)}})):(this._debugBackgroundTokens=void 0,this._debugBackgroundStates=void 0,this._debugBackgroundTokenizer.value=void 0)}this.refreshAllVisibleLineTokens()}handleDidChangeAttached(){var e;null===(e=this._defaultBackgroundTokenizer)||void 0===e||e.handleChanges()}handleDidChangeContent(e){var t,i,n;if(e.isFlush)this.resetTokenization(!1);else if(!e.isEolChange){for(const i of e.changes){const[e,n]=(0,d.Q)(i.text);this._tokens.acceptEdit(i.range,e,n),null===(t=this._debugBackgroundTokens)||void 0===t||t.acceptEdit(i.range,e,n)}null===(i=this._debugBackgroundStates)||void 0===i||i.acceptChanges(e.changes),this._tokenizer&&this._tokenizer.store.acceptChanges(e.changes),null===(n=this._defaultBackgroundTokenizer)||void 0===n||n.handleChanges()}}setTokens(e){const{changes:t}=this._tokens.setMultilineTokens(e,this._textModel);return t.length>0&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:t}),{changes:t}}refreshAllVisibleLineTokens(){const e=u.z.joinMany([...this._attachedViewStates].map((e=>{let[t,i]=e;return i.lineRanges})));this.refreshRanges(e)}refreshRanges(e){for(const t of e)this.refreshRange(t.startLineNumber,t.endLineNumberExclusive-1)}refreshRange(e,t){var i,n;if(!this._tokenizer)return;e=Math.max(1,Math.min(this._textModel.getLineCount(),e)),t=Math.min(this._textModel.getLineCount(),t);const o=new ot,{heuristicTokens:s}=this._tokenizer.tokenizeHeuristically(o,e,t),r=this.setTokens(o.finalize());if(s)for(const a of r.changes)null===(i=this._backgroundTokenizer.value)||void 0===i||i.requestTokens(a.fromLineNumber,a.toLineNumber+1);null===(n=this._defaultBackgroundTokenizer)||void 0===n||n.checkFinished()}forceTokenization(e){var t,i;const n=new ot;null===(t=this._tokenizer)||void 0===t||t.updateTokensUntilLine(n,e),this.setTokens(n.finalize()),null===(i=this._defaultBackgroundTokenizer)||void 0===i||i.checkFinished()}hasAccurateTokensForLine(e){return!this._tokenizer||this._tokenizer.hasAccurateTokensForLine(e)}isCheapToTokenize(e){return!this._tokenizer||this._tokenizer.isCheapToTokenize(e)}tokenizeIfCheap(e){this.isCheapToTokenize(e)&&this.forceTokenization(e)}getLineTokens(e){var t;const i=this._textModel.getLineContent(e),n=this._tokens.getTokens(this._textModel.getLanguageId(),e-1,i);if(this._debugBackgroundTokens&&this._debugBackgroundStates&&this._tokenizer&&this._debugBackgroundStates.getFirstInvalidEndStateLineNumberOrMax()>e&&this._tokenizer.store.getFirstInvalidEndStateLineNumberOrMax()>e){const o=this._debugBackgroundTokens.getTokens(this._textModel.getLanguageId(),e-1,i);!n.equals(o)&&(null===(t=this._debugBackgroundTokenizer.value)||void 0===t?void 0:t.reportMismatchingTokens)&&this._debugBackgroundTokenizer.value.reportMismatchingTokens(e)}return n}getTokenTypeIfInsertingCharacter(e,t,i){if(!this._tokenizer)return 0;const n=this._textModel.validatePosition(new g.L(e,t));return this.forceTokenization(n.lineNumber),this._tokenizer.getTokenTypeIfInsertingCharacter(n,i)}tokenizeLineWithEdit(e,t,i){if(!this._tokenizer)return null;const n=this._textModel.validatePosition(e);return this.forceTokenization(n.lineNumber),this._tokenizer.tokenizeLineWithEdit(n,t,i)}get hasTokens(){return this._tokens.hasTokens}}class yt extends a.JT{get lineRanges(){return this._lineRanges}constructor(e){super(),this._refreshTokens=e,this.runner=this._register(new Qe.pY((()=>this.update()),50)),this._computedLineRanges=[],this._lineRanges=[]}update(){(0,n.fS)(this._computedLineRanges,this._lineRanges,((e,t)=>e.equals(t)))||(this._computedLineRanges=this._lineRanges,this._refreshTokens())}handleStateChange(e){this._lineRanges=e.visibleLineRanges,e.stabilized?(this.runner.cancel(),this.update()):this.runner.schedule()}}var St,Lt=i(65497),kt=i(96484),Dt=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Nt=function(e,t){return function(i,n){t(i,n,e)}};function xt(e,t){let i;return i="string"===typeof e?function(e){const t=new Ge;return t.acceptChunk(e),t.finish()}(e):b.Hf(e)?function(e){const t=new Ge;let i;for(;"string"===typeof(i=e.read());)t.acceptChunk(i);return t.finish()}(e):e,i.create(t)}let Et=0;class It{constructor(e){this._source=e,this._eos=!1}read(){if(this._eos)return null;const e=[];let t=0,i=0;for(;;){const n=this._source.read();if(null===n)return this._eos=!0,0===t?null:e.join("");if(n.length>0&&(e[t++]=n,i+=n.length),i>=65536)return e.join("")}}}const Tt=()=>{throw new Error("Invalid change accessor")};let Mt=St=class extends a.JT{static resolveOptions(e,t){if(t.detectIndentation){const i=Y(e,t.tabSize,t.insertSpaces);return new b.dJ({tabSize:i.tabSize,indentSize:"tabSize",insertSpaces:i.insertSpaces,trimAutoWhitespace:t.trimAutoWhitespace,defaultEOL:t.defaultEOL,bracketPairColorizationOptions:t.bracketPairColorizationOptions})}return new b.dJ(t)}get onDidChangeLanguage(){return this._tokenizationTextModelPart.onDidChangeLanguage}get onDidChangeLanguageConfiguration(){return this._tokenizationTextModelPart.onDidChangeLanguageConfiguration}get onDidChangeTokens(){return this._tokenizationTextModelPart.onDidChangeTokens}onDidChangeContent(e){return this._eventEmitter.slowEvent((t=>e(t.contentChangedEvent)))}onDidChangeContentOrInjectedText(e){return(0,a.F8)(this._eventEmitter.fastEvent((t=>e(t))),this._onDidChangeInjectedText.event((t=>e(t))))}_isDisposing(){return this.__isDisposing}get tokenization(){return this._tokenizationTextModelPart}get bracketPairs(){return this._bracketPairs}get guides(){return this._guidesTextModelPart}constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4?arguments[4]:void 0,s=arguments.length>5?arguments[5]:void 0,d=arguments.length>6?arguments[6]:void 0;super(),this._undoRedoService=o,this._languageService=s,this._languageConfigurationService=d,this._onWillDispose=this._register(new r.Q5),this.onWillDispose=this._onWillDispose.event,this._onDidChangeDecorations=this._register(new jt((e=>this.handleBeforeFireDecorationsChangedEvent(e)))),this.onDidChangeDecorations=this._onDidChangeDecorations.event,this._onDidChangeOptions=this._register(new r.Q5),this.onDidChangeOptions=this._onDidChangeOptions.event,this._onDidChangeAttached=this._register(new r.Q5),this.onDidChangeAttached=this._onDidChangeAttached.event,this._onDidChangeInjectedText=this._register(new r.Q5),this._eventEmitter=this._register(new qt),this._languageSelectionListener=this._register(new a.XK),this._deltaDecorationCallCnt=0,this._attachedViews=new Gt,Et++,this.id="$model"+Et,this.isForSimpleWidget=i.isForSimpleWidget,this._associatedResource="undefined"===typeof n||null===n?h.o.parse("inmemory://model/"+Et):n,this._attachedEditorCount=0;const{textBuffer:c,disposable:u}=xt(e,i.defaultEOL);this._buffer=c,this._bufferDisposable=u,this._options=St.resolveOptions(this._buffer,i);const g="string"===typeof t?t:t.languageId;"string"!==typeof t&&(this._languageSelectionListener.value=t.onDidChange((()=>this._setLanguage(t.languageId)))),this._bracketPairs=this._register(new B(this,this._languageConfigurationService)),this._guidesTextModelPart=this._register(new G.l(this,this._languageConfigurationService)),this._decorationProvider=this._register(new U(this)),this._tokenizationTextModelPart=new Ct(this._languageService,this._languageConfigurationService,this,this._bracketPairs,g,this._attachedViews);const f=this._buffer.getLineCount(),p=this._buffer.getValueLengthInRange(new m.e(1,1,f,this._buffer.getLineLength(f)+1),0);i.largeFileOptimizations?(this._isTooLargeForTokenization=p>St.LARGE_FILE_SIZE_THRESHOLD||f>St.LARGE_FILE_LINE_COUNT_THRESHOLD,this._isTooLargeForHeapOperation=p>St.LARGE_FILE_HEAP_OPERATION_THRESHOLD):(this._isTooLargeForTokenization=!1,this._isTooLargeForHeapOperation=!1),this._isTooLargeForSyncing=p>St._MODEL_SYNC_LIMIT,this._versionId=1,this._alternativeVersionId=1,this._initialUndoRedoSnapshot=null,this._isDisposed=!1,this.__isDisposing=!1,this._instanceId=l.PJ(Et),this._lastDecorationId=0,this._decorations=Object.create(null),this._decorationsTree=new Ot,this._commandManager=new q.NL(this,this._undoRedoService),this._isUndoing=!1,this._isRedoing=!1,this._trimAutoWhitespaceLines=null,this._register(this._decorationProvider.onDidChange((()=>{this._onDidChangeDecorations.beginDeferredEmit(),this._onDidChangeDecorations.fire(),this._onDidChangeDecorations.endDeferredEmit()}))),this._languageService.requestRichLanguageFeatures(g)}dispose(){this.__isDisposing=!0,this._onWillDispose.fire(),this._tokenizationTextModelPart.dispose(),this._isDisposed=!0,super.dispose(),this._bufferDisposable.dispose(),this.__isDisposing=!1;const e=new je([],"","\n",!1,!1,!0,!0);e.dispose(),this._buffer=e,this._bufferDisposable=a.JT.None}_assertNotDisposed(){if(this._isDisposed)throw new Error("Model is disposed!")}_emitContentChangedEvent(e,t){this.__isDisposing||(this._tokenizationTextModelPart.handleDidChangeContent(t),this._bracketPairs.handleDidChangeContent(t),this._eventEmitter.fire(new Lt.fV(e,t)))}setValue(e){if(this._assertNotDisposed(),null===e||void 0===e)throw(0,s.b1)();const{textBuffer:t,disposable:i}=xt(e,this._options.defaultEOL);this._setValueFromTextBuffer(t,i)}_createContentChanged2(e,t,i,n,o,s,r,a){return{changes:[{range:e,rangeOffset:t,rangeLength:i,text:n}],eol:this._buffer.getEOL(),isEolChange:a,versionId:this.getVersionId(),isUndoing:o,isRedoing:s,isFlush:r}}_setValueFromTextBuffer(e,t){this._assertNotDisposed();const i=this.getFullModelRange(),n=this.getValueLengthInRange(i),o=this.getLineCount(),s=this.getLineMaxColumn(o);this._buffer=e,this._bufferDisposable.dispose(),this._bufferDisposable=t,this._increaseVersionId(),this._decorations=Object.create(null),this._decorationsTree=new Ot,this._commandManager.clear(),this._trimAutoWhitespaceLines=null,this._emitContentChangedEvent(new Lt.dQ([new Lt.Jx],this._versionId,!1,!1),this._createContentChanged2(new m.e(1,1,o,s),0,n,this.getValue(),!1,!1,!0,!1))}setEOL(e){this._assertNotDisposed();const t=1===e?"\r\n":"\n";if(this._buffer.getEOL()===t)return;const i=this.getFullModelRange(),n=this.getValueLengthInRange(i),o=this.getLineCount(),s=this.getLineMaxColumn(o);this._onBeforeEOLChange(),this._buffer.setEOL(t),this._increaseVersionId(),this._onAfterEOLChange(),this._emitContentChangedEvent(new Lt.dQ([new Lt.CZ],this._versionId,!1,!1),this._createContentChanged2(new m.e(1,1,o,s),0,n,this.getValue(),!1,!1,!1,!0))}_onBeforeEOLChange(){this._decorationsTree.ensureAllNodesHaveRanges(this)}_onAfterEOLChange(){const e=this.getVersionId(),t=this._decorationsTree.collectNodesPostOrder();for(let i=0,n=t.length;i0}getAttachedEditorCount(){return this._attachedEditorCount}isTooLargeForSyncing(){return this._isTooLargeForSyncing}isTooLargeForTokenization(){return this._isTooLargeForTokenization}isTooLargeForHeapOperation(){return this._isTooLargeForHeapOperation}isDisposed(){return this._isDisposed}isDominatedByLongLines(){if(this._assertNotDisposed(),this.isTooLargeForTokenization())return!1;let e=0,t=0;const i=this._buffer.getLineCount();for(let n=1;n<=i;n++){const i=this._buffer.getLineLength(n);i>=1e4?t+=i:e+=i}return t>e}get uri(){return this._associatedResource}getOptions(){return this._assertNotDisposed(),this._options}getFormattingOptions(){return{tabSize:this._options.indentSize,insertSpaces:this._options.insertSpaces}}updateOptions(e){this._assertNotDisposed();const t="undefined"!==typeof e.tabSize?e.tabSize:this._options.tabSize,i="undefined"!==typeof e.indentSize?e.indentSize:this._options.originalIndentSize,n="undefined"!==typeof e.insertSpaces?e.insertSpaces:this._options.insertSpaces,o="undefined"!==typeof e.trimAutoWhitespace?e.trimAutoWhitespace:this._options.trimAutoWhitespace,s="undefined"!==typeof e.bracketColorizationOptions?e.bracketColorizationOptions:this._options.bracketPairColorizationOptions,r=new b.dJ({tabSize:t,indentSize:i,insertSpaces:n,defaultEOL:this._options.defaultEOL,trimAutoWhitespace:o,bracketPairColorizationOptions:s});if(this._options.equals(r))return;const a=this._options.createChangeEvent(r);this._options=r,this._bracketPairs.handleDidChangeOptions(a),this._decorationProvider.handleDidChangeOptions(a),this._onDidChangeOptions.fire(a)}detectIndentation(e,t){this._assertNotDisposed();const i=Y(this._buffer,t,e);this.updateOptions({insertSpaces:i.insertSpaces,tabSize:i.tabSize,indentSize:i.tabSize})}normalizeIndentation(e){return this._assertNotDisposed(),(0,c.x)(e,this._options.indentSize,this._options.insertSpaces)}getVersionId(){return this._assertNotDisposed(),this._versionId}mightContainRTL(){return this._buffer.mightContainRTL()}mightContainUnusualLineTerminators(){return this._buffer.mightContainUnusualLineTerminators()}removeUnusualLineTerminators(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=this.findMatches(l.Qe.source,!1,!0,!1,null,!1,1073741824);this._buffer.resetMightContainUnusualLineTerminators(),this.pushEditOperations(e,t.map((e=>({range:e.range,text:null}))),(()=>null))}mightContainNonBasicASCII(){return this._buffer.mightContainNonBasicASCII()}getAlternativeVersionId(){return this._assertNotDisposed(),this._alternativeVersionId}getInitialUndoRedoSnapshot(){return this._assertNotDisposed(),this._initialUndoRedoSnapshot}getOffsetAt(e){this._assertNotDisposed();const t=this._validatePosition(e.lineNumber,e.column,0);return this._buffer.getOffsetAt(t.lineNumber,t.column)}getPositionAt(e){this._assertNotDisposed();const t=Math.min(this._buffer.getLength(),Math.max(0,e));return this._buffer.getPositionAt(t)}_increaseVersionId(){this._versionId=this._versionId+1,this._alternativeVersionId=this._versionId}_overwriteVersionId(e){this._versionId=e}_overwriteAlternativeVersionId(e){this._alternativeVersionId=e}_overwriteInitialUndoRedoSnapshot(e){this._initialUndoRedoSnapshot=e}getValue(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this._assertNotDisposed(),this.isTooLargeForHeapOperation())throw new s.he("Operation would exceed heap memory limits");const i=this.getFullModelRange(),n=this.getValueInRange(i,e);return t?this._buffer.getBOM()+n:n}createSnapshot(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new It(this._buffer.createSnapshot(e))}getValueLength(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._assertNotDisposed();const i=this.getFullModelRange(),n=this.getValueLengthInRange(i,e);return t?this._buffer.getBOM().length+n:n}getValueInRange(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._assertNotDisposed(),this._buffer.getValueInRange(this.validateRange(e),t)}getValueLengthInRange(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._assertNotDisposed(),this._buffer.getValueLengthInRange(this.validateRange(e),t)}getCharacterCountInRange(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._assertNotDisposed(),this._buffer.getCharacterCountInRange(this.validateRange(e),t)}getLineCount(){return this._assertNotDisposed(),this._buffer.getLineCount()}getLineContent(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new s.he("Illegal value for lineNumber");return this._buffer.getLineContent(e)}getLineLength(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new s.he("Illegal value for lineNumber");return this._buffer.getLineLength(e)}getLinesContent(){if(this._assertNotDisposed(),this.isTooLargeForHeapOperation())throw new s.he("Operation would exceed heap memory limits");return this._buffer.getLinesContent()}getEOL(){return this._assertNotDisposed(),this._buffer.getEOL()}getEndOfLineSequence(){return this._assertNotDisposed(),"\n"===this._buffer.getEOL()?0:1}getLineMinColumn(e){return this._assertNotDisposed(),1}getLineMaxColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new s.he("Illegal value for lineNumber");return this._buffer.getLineLength(e)+1}getLineFirstNonWhitespaceColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new s.he("Illegal value for lineNumber");return this._buffer.getLineFirstNonWhitespaceColumn(e)}getLineLastNonWhitespaceColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new s.he("Illegal value for lineNumber");return this._buffer.getLineLastNonWhitespaceColumn(e)}_validateRangeRelaxedNoAllocations(e){const t=this._buffer.getLineCount(),i=e.startLineNumber,n=e.startColumn;let o=Math.floor("number"!==typeof i||isNaN(i)?1:i),s=Math.floor("number"!==typeof n||isNaN(n)?1:n);if(o<1)o=1,s=1;else if(o>t)o=t,s=this.getLineMaxColumn(o);else if(s<=1)s=1;else{const e=this.getLineMaxColumn(o);s>=e&&(s=e)}const r=e.endLineNumber,a=e.endColumn;let l=Math.floor("number"!==typeof r||isNaN(r)?1:r),h=Math.floor("number"!==typeof a||isNaN(a)?1:a);if(l<1)l=1,h=1;else if(l>t)l=t,h=this.getLineMaxColumn(l);else if(h<=1)h=1;else{const e=this.getLineMaxColumn(l);h>=e&&(h=e)}return i===o&&n===s&&r===l&&a===h&&e instanceof m.e&&!(e instanceof f.Y)?e:new m.e(o,s,l,h)}_isValidPosition(e,t,i){if("number"!==typeof e||"number"!==typeof t)return!1;if(isNaN(e)||isNaN(t))return!1;if(e<1||t<1)return!1;if((0|e)!==e||(0|t)!==t)return!1;if(e>this._buffer.getLineCount())return!1;if(1===t)return!0;if(t>this.getLineMaxColumn(e))return!1;if(1===i){const i=this._buffer.getLineCharCode(e,t-2);if(l.ZG(i))return!1}return!0}_validatePosition(e,t,i){const n=Math.floor("number"!==typeof e||isNaN(e)?1:e),o=Math.floor("number"!==typeof t||isNaN(t)?1:t),s=this._buffer.getLineCount();if(n<1)return new g.L(1,1);if(n>s)return new g.L(s,this.getLineMaxColumn(s));if(o<=1)return new g.L(n,1);const r=this.getLineMaxColumn(n);if(o>=r)return new g.L(n,r);if(1===i){const e=this._buffer.getLineCharCode(n,o-2);if(l.ZG(e))return new g.L(n,o-1)}return new g.L(n,o)}validatePosition(e){return this._assertNotDisposed(),e instanceof g.L&&this._isValidPosition(e.lineNumber,e.column,1)?e:this._validatePosition(e.lineNumber,e.column,1)}_isValidRange(e,t){const i=e.startLineNumber,n=e.startColumn,o=e.endLineNumber,s=e.endColumn;if(!this._isValidPosition(i,n,0))return!1;if(!this._isValidPosition(o,s,0))return!1;if(1===t){const e=n>1?this._buffer.getLineCharCode(i,n-2):0,t=s>1&&s<=this._buffer.getLineLength(o)?this._buffer.getLineCharCode(o,s-2):0,r=l.ZG(e),a=l.ZG(t);return!r&&!a}return!0}validateRange(e){if(this._assertNotDisposed(),e instanceof m.e&&!(e instanceof f.Y)&&this._isValidRange(e,1))return e;const t=this._validatePosition(e.startLineNumber,e.startColumn,0),i=this._validatePosition(e.endLineNumber,e.endColumn,0),n=t.lineNumber,o=t.column,s=i.lineNumber,r=i.column;{const e=o>1?this._buffer.getLineCharCode(n,o-2):0,t=r>1&&r<=this._buffer.getLineLength(s)?this._buffer.getLineCharCode(s,r-2):0,i=l.ZG(e),a=l.ZG(t);return i||a?n===s&&o===r?new m.e(n,o-1,s,r-1):i&&a?new m.e(n,o-1,s,r+1):i?new m.e(n,o-1,s,r):new m.e(n,o,s,r+1):new m.e(n,o,s,r)}}modifyPosition(e,t){this._assertNotDisposed();const i=this.getOffsetAt(e)+t;return this.getPositionAt(Math.min(this._buffer.getLength(),Math.max(0,i)))}getFullModelRange(){this._assertNotDisposed();const e=this.getLineCount();return new m.e(1,1,e,this.getLineMaxColumn(e))}findMatchesLineByLine(e,t,i,n){return this._buffer.findMatchesLineByLine(e,t,i,n)}findMatches(e,t,i,n,o,s){let r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:999;this._assertNotDisposed();let a=null;null!==t&&(Array.isArray(t)||(t=[t]),t.every((e=>m.e.isIRange(e)))&&(a=t.map((e=>this.validateRange(e))))),null===a&&(a=[this.getFullModelRange()]),a=a.sort(((e,t)=>e.startLineNumber-t.startLineNumber||e.startColumn-t.startColumn));const l=[];let h;if(l.push(a.reduce(((e,t)=>m.e.areIntersecting(e,t)?e.plusRange(t):(l.push(e),t)))),!i&&e.indexOf("\n")<0){const t=new Re.bc(e,i,n,o).parseSearchRequest();if(!t)return[];h=e=>this.findMatchesLineByLine(e,t,s,r)}else h=t=>Re.pM.findMatches(this,new Re.bc(e,i,n,o),t,s,r);return l.map(h).reduce(((e,t)=>e.concat(t)),[])}findNextMatch(e,t,i,n,o,s){this._assertNotDisposed();const r=this.validatePosition(t);if(!i&&e.indexOf("\n")<0){const t=new Re.bc(e,i,n,o).parseSearchRequest();if(!t)return null;const a=this.getLineCount();let l=new m.e(r.lineNumber,r.column,a,this.getLineMaxColumn(a)),h=this.findMatchesLineByLine(l,t,s,1);return Re.pM.findNextMatch(this,new Re.bc(e,i,n,o),r,s),h.length>0?h[0]:(l=new m.e(1,1,r.lineNumber,this.getLineMaxColumn(r.lineNumber)),h=this.findMatchesLineByLine(l,t,s,1),h.length>0?h[0]:null)}return Re.pM.findNextMatch(this,new Re.bc(e,i,n,o),r,s)}findPreviousMatch(e,t,i,n,o,s){this._assertNotDisposed();const r=this.validatePosition(t);return Re.pM.findPreviousMatch(this,new Re.bc(e,i,n,o),r,s)}pushStackElement(){this._commandManager.pushStackElement()}popStackElement(){this._commandManager.popStackElement()}pushEOL(e){if(("\n"===this.getEOL()?0:1)!==e)try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),null===this._initialUndoRedoSnapshot&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEOL(e)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_validateEditOperation(e){return e instanceof b.Qi?e:new b.Qi(e.identifier||null,this.validateRange(e.range),e.text,e.forceMoveMarkers||!1,e.isAutoWhitespaceEdit||!1,e._isTracked||!1)}_validateEditOperations(e){const t=[];for(let i=0,n=e.length;i({range:this.validateRange(e.range),text:e.text})));let n=!0;if(e)for(let t=0,o=e.length;to.endLineNumber,r=o.startLineNumber>t.endLineNumber;if(!n&&!r){s=!0;break}}if(!s){n=!1;break}}if(n)for(let e=0,o=this._trimAutoWhitespaceLines.length;et.endLineNumber)&&(!(n===t.startLineNumber&&t.startColumn===o&&t.isEmpty()&&r&&r.length>0&&"\n"===r.charAt(0))&&!(n===t.startLineNumber&&1===t.startColumn&&t.isEmpty()&&r&&r.length>0&&"\n"===r.charAt(r.length-1)))){s=!1;break}}if(s){const e=new m.e(n,1,n,o);t.push(new b.Qi(null,e,null,!1,!1,!1))}}this._trimAutoWhitespaceLines=null}return null===this._initialUndoRedoSnapshot&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEditOperation(e,t,i,n)}_applyUndo(e,t,i,n){const o=e.map((e=>{const t=this.getPositionAt(e.newPosition),i=this.getPositionAt(e.newEnd);return{range:new m.e(t.lineNumber,t.column,i.lineNumber,i.column),text:e.oldText}}));this._applyUndoRedoEdits(o,t,!0,!1,i,n)}_applyRedo(e,t,i,n){const o=e.map((e=>{const t=this.getPositionAt(e.oldPosition),i=this.getPositionAt(e.oldEnd);return{range:new m.e(t.lineNumber,t.column,i.lineNumber,i.column),text:e.newText}}));this._applyUndoRedoEdits(o,t,!1,!0,i,n)}_applyUndoRedoEdits(e,t,i,n,o,s){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._isUndoing=i,this._isRedoing=n,this.applyEdits(e,!1),this.setEOL(t),this._overwriteAlternativeVersionId(o)}finally{this._isUndoing=!1,this._isRedoing=!1,this._eventEmitter.endDeferredEmit(s),this._onDidChangeDecorations.endDeferredEmit()}}applyEdits(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit();const i=this._validateEditOperations(e);return this._doApplyEdits(i,t)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_doApplyEdits(e,t){const i=this._buffer.getLineCount(),o=this._buffer.applyEdits(e,this._options.trimAutoWhitespace,t),s=this._buffer.getLineCount(),r=o.changes;if(this._trimAutoWhitespaceLines=o.trimAutoWhitespaceLineNumbers,0!==r.length){for(let i=0,n=r.length;i=0;t--){const i=l+t,n=p+t;w.takeFromEndWhile((e=>e.lineNumber>n));const o=w.takeFromEndWhile((e=>e.lineNumber===n));e.push(new Lt.rU(i,this.getLineContent(n),o))}if(me.lineNumbere.lineNumber===t))}e.push(new Lt.Tx(o+1,l+u,d,h))}t+=f}this._emitContentChangedEvent(new Lt.dQ(e,this.getVersionId(),this._isUndoing,this._isRedoing),{changes:r,eol:this._buffer.getEOL(),isEolChange:!1,versionId:this.getVersionId(),isUndoing:this._isUndoing,isRedoing:this._isRedoing,isFlush:!1})}return null===o.reverseEdits?void 0:o.reverseEdits}undo(){return this._undoRedoService.undo(this.uri)}canUndo(){return this._undoRedoService.canUndo(this.uri)}redo(){return this._undoRedoService.redo(this.uri)}canRedo(){return this._undoRedoService.canRedo(this.uri)}handleBeforeFireDecorationsChangedEvent(e){if(null===e||0===e.size)return;const t=Array.from(e).map((e=>new Lt.rU(e,this.getLineContent(e),this._getInjectedTextInLine(e))));this._onDidChangeInjectedText.fire(new Lt.D8(t))}changeDecorations(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._assertNotDisposed();try{return this._onDidChangeDecorations.beginDeferredEmit(),this._changeDecorations(t,e)}finally{this._onDidChangeDecorations.endDeferredEmit()}}_changeDecorations(e,t){const i={addDecoration:(t,i)=>this._deltaDecorationsImpl(e,[],[{range:t,options:i}])[0],changeDecoration:(e,t)=>{this._changeDecorationImpl(e,t)},changeDecorationOptions:(e,t)=>{this._changeDecorationOptionsImpl(e,Ut(t))},removeDecoration:t=>{this._deltaDecorationsImpl(e,[t],[])},deltaDecorations:(t,i)=>0===t.length&&0===i.length?[]:this._deltaDecorationsImpl(e,t,i)};let n=null;try{n=t(i)}catch(o){(0,s.dL)(o)}return i.addDecoration=Tt,i.changeDecoration=Tt,i.changeDecorationOptions=Tt,i.removeDecoration=Tt,i.deltaDecorations=Tt,n}deltaDecorations(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(this._assertNotDisposed(),e||(e=[]),0===e.length&&0===t.length)return[];try{return this._deltaDecorationCallCnt++,this._deltaDecorationCallCnt>1&&(console.warn("Invoking deltaDecorations recursively could lead to leaking decorations."),(0,s.dL)(new Error("Invoking deltaDecorations recursively could lead to leaking decorations."))),this._onDidChangeDecorations.beginDeferredEmit(),this._deltaDecorationsImpl(i,e,t)}finally{this._onDidChangeDecorations.endDeferredEmit(),this._deltaDecorationCallCnt--}}_getTrackedRange(e){return this.getDecorationRange(e)}_setTrackedRange(e,t,i){const n=e?this._decorations[e]:null;if(!n)return t?this._deltaDecorationsImpl(0,[],[{range:t,options:Kt[i]}],!0)[0]:null;if(!t)return this._decorationsTree.delete(n),delete this._decorations[n.id],null;const o=this._validateRangeRelaxedNoAllocations(t),s=this._buffer.getOffsetAt(o.startLineNumber,o.startColumn),r=this._buffer.getOffsetAt(o.endLineNumber,o.endColumn);return this._decorationsTree.delete(n),n.reset(this.getVersionId(),s,r,o),n.setOptions(Kt[i]),this._decorationsTree.insert(n),n.id}removeAllDecorationsWithOwnerId(e){if(this._isDisposed)return;const t=this._decorationsTree.collectNodesFromOwner(e);for(let i=0,n=t.length;i1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e<1||e>this.getLineCount()?[]:this.getLinesDecorations(e,e,t,i)}getLinesDecorations(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const r=this.getLineCount(),a=Math.min(r,Math.max(1,e)),l=Math.min(r,Math.max(1,t)),h=this.getLineMaxColumn(l),d=new m.e(a,1,l,h),c=this._getDecorationsInRange(d,i,o,s);return(0,n.vA)(c,this._decorationProvider.getDecorationsInRange(d,i,o)),c}getDecorationsInRange(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const r=this.validateRange(e),a=this._getDecorationsInRange(r,t,i,s);return(0,n.vA)(a,this._decorationProvider.getDecorationsInRange(r,t,i,o)),a}getOverviewRulerDecorations(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this._decorationsTree.getAll(this,e,t,!0,!1)}getInjectedTextDecorations(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this._decorationsTree.getAllInjectedText(this,e)}_getInjectedTextInLine(e){const t=this._buffer.getOffsetAt(e,1),i=t+this._buffer.getLineLength(e),n=this._decorationsTree.getInjectedTextInInterval(this,t,i,0);return Lt.gk.fromDecorations(n).filter((t=>t.lineNumber===e))}getAllDecorations(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this._decorationsTree.getAll(this,e,t,!1,!1);return i=i.concat(this._decorationProvider.getAllDecorations(e,t)),i}getAllMarginDecorations(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this._decorationsTree.getAll(this,e,!1,!1,!0)}_getDecorationsInRange(e,t,i,n){const o=this._buffer.getOffsetAt(e.startLineNumber,e.startColumn),s=this._buffer.getOffsetAt(e.endLineNumber,e.endColumn);return this._decorationsTree.getAllInInterval(this,o,s,t,i,n)}getRangeAt(e,t){return this._buffer.getRangeAt(e,t-e)}_changeDecorationImpl(e,t){const i=this._decorations[e];if(!i)return;if(i.options.after){const t=this.getDecorationRange(e);this._onDidChangeDecorations.recordLineAffectedByInjectedText(t.endLineNumber)}if(i.options.before){const t=this.getDecorationRange(e);this._onDidChangeDecorations.recordLineAffectedByInjectedText(t.startLineNumber)}const n=this._validateRangeRelaxedNoAllocations(t),o=this._buffer.getOffsetAt(n.startLineNumber,n.startColumn),s=this._buffer.getOffsetAt(n.endLineNumber,n.endColumn);this._decorationsTree.delete(i),i.reset(this.getVersionId(),o,s,n),this._decorationsTree.insert(i),this._onDidChangeDecorations.checkAffectedAndFire(i.options),i.options.after&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(n.endLineNumber),i.options.before&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(n.startLineNumber)}_changeDecorationOptionsImpl(e,t){const i=this._decorations[e];if(!i)return;const n=!(!i.options.overviewRuler||!i.options.overviewRuler.color),o=!(!t.overviewRuler||!t.overviewRuler.color);if(this._onDidChangeDecorations.checkAffectedAndFire(i.options),this._onDidChangeDecorations.checkAffectedAndFire(t),i.options.after||t.after){const e=this._decorationsTree.getNodeRange(this,i);this._onDidChangeDecorations.recordLineAffectedByInjectedText(e.endLineNumber)}if(i.options.before||t.before){const e=this._decorationsTree.getNodeRange(this,i);this._onDidChangeDecorations.recordLineAffectedByInjectedText(e.startLineNumber)}const s=n!==o,r=function(e){return!!e.after||!!e.before}(t)!==Rt(i);s||r?(this._decorationsTree.delete(i),i.setOptions(t),this._decorationsTree.insert(i)):i.setOptions(t)}_deltaDecorationsImpl(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const o=this.getVersionId(),s=t.length;let r=0;const a=i.length;let l=0;this._onDidChangeDecorations.beginDeferredEmit();try{const h=new Array(a);for(;rthis._setLanguage(e.languageId,t))),this._setLanguage(e.languageId,t))}_setLanguage(e,t){this.tokenization.setLanguageId(e,t),this._languageService.requestRichLanguageFeatures(e)}getLanguageIdAtPosition(e,t){return this.tokenization.getLanguageIdAtPosition(e,t)}getWordAtPosition(e){return this._tokenizationTextModelPart.getWordAtPosition(e)}getWordUntilPosition(e){return this._tokenizationTextModelPart.getWordUntilPosition(e)}normalizePosition(e,t){return e}getLineIndentColumn(e){return function(e){let t=0;for(const i of e){if(" "!==i&&"\t"!==i)break;t++}return t}(this.getLineContent(e))+1}};function At(e){return!(!e.options.overviewRuler||!e.options.overviewRuler.color)}function Rt(e){return!!e.options.after||!!e.options.before}Mt._MODEL_SYNC_LIMIT=52428800,Mt.LARGE_FILE_SIZE_THRESHOLD=20971520,Mt.LARGE_FILE_LINE_COUNT_THRESHOLD=3e5,Mt.LARGE_FILE_HEAP_OPERATION_THRESHOLD=268435456,Mt.DEFAULT_CREATION_OPTIONS={isForSimpleWidget:!1,tabSize:p.D.tabSize,indentSize:p.D.indentSize,insertSpaces:p.D.insertSpaces,detectIndentation:!1,defaultEOL:1,trimAutoWhitespace:p.D.trimAutoWhitespace,largeFileOptimizations:p.D.largeFileOptimizations,bracketPairColorizationOptions:p.D.bracketPairColorizationOptions},Mt=St=Dt([Nt(4,kt.tJ),Nt(5,_.O),Nt(6,v.c_)],Mt);class Ot{constructor(){this._decorationsTree0=new he,this._decorationsTree1=new he,this._injectedTextDecorationsTree=new he}ensureAllNodesHaveRanges(e){this.getAll(e,0,!1,!1,!1)}_ensureNodesHaveRanges(e,t){for(const i of t)null===i.range&&(i.range=e.getRangeAt(i.cachedAbsoluteStart,i.cachedAbsoluteEnd));return t}getAllInInterval(e,t,i,n,o,s){const r=e.getVersionId(),a=this._intervalSearch(t,i,n,o,r,s);return this._ensureNodesHaveRanges(e,a)}_intervalSearch(e,t,i,n,o,s){const r=this._decorationsTree0.intervalSearch(e,t,i,n,o,s),a=this._decorationsTree1.intervalSearch(e,t,i,n,o,s),l=this._injectedTextDecorationsTree.intervalSearch(e,t,i,n,o,s);return r.concat(a).concat(l)}getInjectedTextInInterval(e,t,i,n){const o=e.getVersionId(),s=this._injectedTextDecorationsTree.intervalSearch(t,i,n,!1,o,!1);return this._ensureNodesHaveRanges(e,s).filter((e=>e.options.showIfCollapsed||!e.range.isEmpty()))}getAllInjectedText(e,t){const i=e.getVersionId(),n=this._injectedTextDecorationsTree.search(t,!1,i,!1);return this._ensureNodesHaveRanges(e,n).filter((e=>e.options.showIfCollapsed||!e.range.isEmpty()))}getAll(e,t,i,n,o){const s=e.getVersionId(),r=this._search(t,i,n,s,o);return this._ensureNodesHaveRanges(e,r)}_search(e,t,i,n,o){if(i)return this._decorationsTree1.search(e,t,n,o);{const i=this._decorationsTree0.search(e,t,n,o),s=this._decorationsTree1.search(e,t,n,o),r=this._injectedTextDecorationsTree.search(e,t,n,o);return i.concat(s).concat(r)}}collectNodesFromOwner(e){const t=this._decorationsTree0.collectNodesFromOwner(e),i=this._decorationsTree1.collectNodesFromOwner(e),n=this._injectedTextDecorationsTree.collectNodesFromOwner(e);return t.concat(i).concat(n)}collectNodesPostOrder(){const e=this._decorationsTree0.collectNodesPostOrder(),t=this._decorationsTree1.collectNodesPostOrder(),i=this._injectedTextDecorationsTree.collectNodesPostOrder();return e.concat(t).concat(i)}insert(e){Rt(e)?this._injectedTextDecorationsTree.insert(e):At(e)?this._decorationsTree1.insert(e):this._decorationsTree0.insert(e)}delete(e){Rt(e)?this._injectedTextDecorationsTree.delete(e):At(e)?this._decorationsTree1.delete(e):this._decorationsTree0.delete(e)}getNodeRange(e,t){const i=e.getVersionId();return t.cachedVersionId!==i&&this._resolveNode(t,i),null===t.range&&(t.range=e.getRangeAt(t.cachedAbsoluteStart,t.cachedAbsoluteEnd)),t.range}_resolveNode(e,t){Rt(e)?this._injectedTextDecorationsTree.resolveNode(e,t):At(e)?this._decorationsTree1.resolveNode(e,t):this._decorationsTree0.resolveNode(e,t)}acceptReplace(e,t,i,n){this._decorationsTree0.acceptReplace(e,t,i,n),this._decorationsTree1.acceptReplace(e,t,i,n),this._injectedTextDecorationsTree.acceptReplace(e,t,i,n)}}function Pt(e){return e.replace(/[^a-z0-9\-_]/gi," ")}class Ft{constructor(e){this.color=e.color||"",this.darkColor=e.darkColor||""}}class Bt extends Ft{constructor(e){super(e),this._resolvedColor=null,this.position="number"===typeof e.position?e.position:b.sh.Center}getColor(e){return this._resolvedColor||("light"!==e.type&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=null}_resolveColor(e,t){if("string"===typeof e)return e;const i=e?t.getColor(e.id):null;return i?i.toString():""}}class zt{constructor(e){var t;this.position=null!==(t=null===e||void 0===e?void 0:e.position)&&void 0!==t?t:b.U.Center,this.persistLane=null===e||void 0===e?void 0:e.persistLane}}class Vt extends Ft{constructor(e){var t,i;super(e),this.position=e.position,this.sectionHeaderStyle=null!==(t=e.sectionHeaderStyle)&&void 0!==t?t:null,this.sectionHeaderText=null!==(i=e.sectionHeaderText)&&void 0!==i?i:null}getColor(e){return this._resolvedColor||("light"!==e.type&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=void 0}_resolveColor(e,t){return"string"===typeof e?o.Il.fromHex(e):t.getColor(e.id)}}class Wt{static from(e){return e instanceof Wt?e:new Wt(e)}constructor(e){this.content=e.content||"",this.inlineClassName=e.inlineClassName||null,this.inlineClassNameAffectsLetterSpacing=e.inlineClassNameAffectsLetterSpacing||!1,this.attachedData=e.attachedData||null,this.cursorStops=e.cursorStops||null}}class Ht{static register(e){return new Ht(e)}static createDynamic(e){return new Ht(e)}constructor(e){var t,i,n,o,s,r;this.description=e.description,this.blockClassName=e.blockClassName?Pt(e.blockClassName):null,this.blockDoesNotCollapse=null!==(t=e.blockDoesNotCollapse)&&void 0!==t?t:null,this.blockIsAfterEnd=null!==(i=e.blockIsAfterEnd)&&void 0!==i?i:null,this.blockPadding=null!==(n=e.blockPadding)&&void 0!==n?n:null,this.stickiness=e.stickiness||0,this.zIndex=e.zIndex||0,this.className=e.className?Pt(e.className):null,this.shouldFillLineOnLineBreak=null!==(o=e.shouldFillLineOnLineBreak)&&void 0!==o?o:null,this.hoverMessage=e.hoverMessage||null,this.glyphMarginHoverMessage=e.glyphMarginHoverMessage||null,this.lineNumberHoverMessage=e.lineNumberHoverMessage||null,this.isWholeLine=e.isWholeLine||!1,this.showIfCollapsed=e.showIfCollapsed||!1,this.collapseOnReplaceEdit=e.collapseOnReplaceEdit||!1,this.overviewRuler=e.overviewRuler?new Bt(e.overviewRuler):null,this.minimap=e.minimap?new Vt(e.minimap):null,this.glyphMargin=e.glyphMarginClassName?new zt(e.glyphMargin):null,this.glyphMarginClassName=e.glyphMarginClassName?Pt(e.glyphMarginClassName):null,this.linesDecorationsClassName=e.linesDecorationsClassName?Pt(e.linesDecorationsClassName):null,this.lineNumberClassName=e.lineNumberClassName?Pt(e.lineNumberClassName):null,this.linesDecorationsTooltip=e.linesDecorationsTooltip?l.fA(e.linesDecorationsTooltip):null,this.firstLineDecorationClassName=e.firstLineDecorationClassName?Pt(e.firstLineDecorationClassName):null,this.marginClassName=e.marginClassName?Pt(e.marginClassName):null,this.inlineClassName=e.inlineClassName?Pt(e.inlineClassName):null,this.inlineClassNameAffectsLetterSpacing=e.inlineClassNameAffectsLetterSpacing||!1,this.beforeContentClassName=e.beforeContentClassName?Pt(e.beforeContentClassName):null,this.afterContentClassName=e.afterContentClassName?Pt(e.afterContentClassName):null,this.after=e.after?Wt.from(e.after):null,this.before=e.before?Wt.from(e.before):null,this.hideInCommentTokens=null!==(s=e.hideInCommentTokens)&&void 0!==s&&s,this.hideInStringTokens=null!==(r=e.hideInStringTokens)&&void 0!==r&&r}}Ht.EMPTY=Ht.register({description:"empty"});const Kt=[Ht.register({description:"tracked-range-always-grows-when-typing-at-edges",stickiness:0}),Ht.register({description:"tracked-range-never-grows-when-typing-at-edges",stickiness:1}),Ht.register({description:"tracked-range-grows-only-when-typing-before",stickiness:2}),Ht.register({description:"tracked-range-grows-only-when-typing-after",stickiness:3})];function Ut(e){return e instanceof Ht?e:Ht.createDynamic(e)}class jt extends a.JT{constructor(e){super(),this.handleBeforeFire=e,this._actual=this._register(new r.Q5),this.event=this._actual.event,this._affectedInjectedTextLines=null,this._deferredCnt=0,this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1,this._affectsLineNumber=!1}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(){var e;this._deferredCnt--,0===this._deferredCnt&&(this._shouldFireDeferred&&this.doFire(),null===(e=this._affectedInjectedTextLines)||void 0===e||e.clear(),this._affectedInjectedTextLines=null)}recordLineAffectedByInjectedText(e){this._affectedInjectedTextLines||(this._affectedInjectedTextLines=new Set),this._affectedInjectedTextLines.add(e)}checkAffectedAndFire(e){var t,i;this._affectsMinimap||(this._affectsMinimap=!!(null===(t=e.minimap)||void 0===t?void 0:t.position)),this._affectsOverviewRuler||(this._affectsOverviewRuler=!!(null===(i=e.overviewRuler)||void 0===i?void 0:i.color)),this._affectsGlyphMargin||(this._affectsGlyphMargin=!!e.glyphMarginClassName),this._affectsLineNumber||(this._affectsLineNumber=!!e.lineNumberClassName),this.tryFire()}fire(){this._affectsMinimap=!0,this._affectsOverviewRuler=!0,this._affectsGlyphMargin=!0,this.tryFire()}tryFire(){0===this._deferredCnt?this.doFire():this._shouldFireDeferred=!0}doFire(){this.handleBeforeFire(this._affectedInjectedTextLines);const e={affectsMinimap:this._affectsMinimap,affectsOverviewRuler:this._affectsOverviewRuler,affectsGlyphMargin:this._affectsGlyphMargin,affectsLineNumber:this._affectsLineNumber};this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1,this._actual.fire(e)}}class qt extends a.JT{constructor(){super(),this._fastEmitter=this._register(new r.Q5),this.fastEvent=this._fastEmitter.event,this._slowEmitter=this._register(new r.Q5),this.slowEvent=this._slowEmitter.event,this._deferredCnt=0,this._deferredEvent=null}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(this._deferredCnt--,0===this._deferredCnt&&null!==this._deferredEvent){this._deferredEvent.rawContentChangedEvent.resultingSelection=e;const t=this._deferredEvent;this._deferredEvent=null,this._fastEmitter.fire(t),this._slowEmitter.fire(t)}}fire(e){this._deferredCnt>0?this._deferredEvent?this._deferredEvent=this._deferredEvent.merge(e):this._deferredEvent=e:(this._fastEmitter.fire(e),this._slowEmitter.fire(e))}}class Gt{constructor(){this._onDidChangeVisibleRanges=new r.Q5,this.onDidChangeVisibleRanges=this._onDidChangeVisibleRanges.event,this._views=new Set}attachView(){const e=new Qt((t=>{this._onDidChangeVisibleRanges.fire({view:e,state:t})}));return this._views.add(e),e}detachView(e){this._views.delete(e),this._onDidChangeVisibleRanges.fire({view:e,state:void 0})}}class Qt{constructor(e){this.handleStateChange=e}setVisibleLines(e,t){const i=e.map((e=>new u.z(e.startLineNumber,e.endLineNumber+1)));this.handleStateChange({visibleLineRanges:i,stabilized:t})}}},81958:(e,t,i)=>{i.d(t,{U:()=>o});var n=i(89599);class o extends n.JT{constructor(){super(...arguments),this._isDisposed=!1}dispose(){super.dispose(),this._isDisposed=!0}assertNotDisposed(){if(this._isDisposed)throw new Error("TextModelPart is disposed!")}}},90255:(e,t,i)=>{i.d(t,{bc:()=>l,cM:()=>u,iE:()=>h,pM:()=>c,sz:()=>g});var n=i(25085),o=i(67055),s=i(2067),r=i(10670),a=i(27127);class l{constructor(e,t,i,n){this.searchString=e,this.isRegex=t,this.matchCase=i,this.wordSeparators=n}parseSearchRequest(){if(""===this.searchString)return null;let e;e=this.isRegex?function(e){if(!e||0===e.length)return!1;for(let t=0,i=e.length;t=i)break;const n=e.charCodeAt(t);if(110===n||114===n||87===n)return!0}}return!1}(this.searchString):this.searchString.indexOf("\n")>=0;let t=null;try{t=n.GF(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:e,global:!0,unicode:!0})}catch(s){return null}if(!t)return null;let i=!this.isRegex&&!e;return i&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(i=this.matchCase),new a.Tx(t,this.wordSeparators?(0,o.u)(this.wordSeparators,[]):null,i?this.searchString:null)}}function h(e,t,i){if(!i)return new a.tk(e,null);const n=[];for(let o=0,s=t.length;o>0);t[o]>=e?n=o-1:t[o+1]>=e?(i=o,n=o):i=o+1}return i+1}}class c{static findMatches(e,t,i,n,o){const s=t.parseSearchRequest();return s?s.regex.multiline?this._doFindMatchesMultiline(e,i,new g(s.wordSeparators,s.regex),n,o):this._doFindMatchesLineByLine(e,i,s,n,o):[]}static _getMultilineMatchRange(e,t,i,n,o,s){let a,l,h=0;if(n?(h=n.findLineFeedCountBeforeOffset(o),a=t+o+h):a=t+o,n){const e=n.findLineFeedCountBeforeOffset(o+s.length)-h;l=a+s.length+e}else l=a+s.length;const d=e.getPositionAt(a),c=e.getPositionAt(l);return new r.e(d.lineNumber,d.column,c.lineNumber,c.column)}static _doFindMatchesMultiline(e,t,i,n,o){const s=e.getOffsetAt(t.getStartPosition()),r=e.getValueInRange(t,1),a="\r\n"===e.getEOL()?new d(r):null,l=[];let c,u=0;for(i.reset(0);c=i.next(r);)if(l[u++]=h(this._getMultilineMatchRange(e,s,r,a,c.index,c[0]),c,n),u>=o)return l;return l}static _doFindMatchesLineByLine(e,t,i,n,o){const s=[];let r=0;if(t.startLineNumber===t.endLineNumber){const a=e.getLineContent(t.startLineNumber).substring(t.startColumn-1,t.endColumn-1);return r=this._findMatchesInLine(i,a,t.startLineNumber,t.startColumn-1,r,s,n,o),s}const a=e.getLineContent(t.startLineNumber).substring(t.startColumn-1);r=this._findMatchesInLine(i,a,t.startLineNumber,t.startColumn-1,r,s,n,o);for(let l=t.startLineNumber+1;l=d))return o;return o}const m=new g(e.wordSeparators,e.regex);let f;m.reset(0);do{if(f=m.next(t),f&&(s[o++]=h(new r.e(i,f.index+1+n,i,f.index+1+f[0].length+n),f,l),o>=d))return o}while(f);return o}static findNextMatch(e,t,i,n){const o=t.parseSearchRequest();if(!o)return null;const s=new g(o.wordSeparators,o.regex);return o.regex.multiline?this._doFindNextMatchMultiline(e,i,s,n):this._doFindNextMatchLineByLine(e,i,s,n)}static _doFindNextMatchMultiline(e,t,i,n){const o=new s.L(t.lineNumber,1),a=e.getOffsetAt(o),l=e.getLineCount(),c=e.getValueInRange(new r.e(o.lineNumber,o.column,l,e.getLineMaxColumn(l)),1),u="\r\n"===e.getEOL()?new d(c):null;i.reset(t.column-1);const g=i.next(c);return g?h(this._getMultilineMatchRange(e,a,c,u,g.index,g[0]),g,n):1!==t.lineNumber||1!==t.column?this._doFindNextMatchMultiline(e,new s.L(1,1),i,n):null}static _doFindNextMatchLineByLine(e,t,i,n){const o=e.getLineCount(),s=t.lineNumber,r=e.getLineContent(s),a=this._findFirstMatchInLine(i,r,s,t.column,n);if(a)return a;for(let l=1;l<=o;l++){const t=(s+l-1)%o,r=e.getLineContent(t+1),a=this._findFirstMatchInLine(i,r,t+1,1,n);if(a)return a}return null}static _findFirstMatchInLine(e,t,i,n,o){e.reset(n-1);const s=e.next(t);return s?h(new r.e(i,s.index+1,i,s.index+1+s[0].length),s,o):null}static findPreviousMatch(e,t,i,n){const o=t.parseSearchRequest();if(!o)return null;const s=new g(o.wordSeparators,o.regex);return o.regex.multiline?this._doFindPreviousMatchMultiline(e,i,s,n):this._doFindPreviousMatchLineByLine(e,i,s,n)}static _doFindPreviousMatchMultiline(e,t,i,n){const o=this._doFindMatchesMultiline(e,new r.e(1,1,t.lineNumber,t.column),i,n,9990);if(o.length>0)return o[o.length-1];const a=e.getLineCount();return t.lineNumber!==a||t.column!==e.getLineMaxColumn(a)?this._doFindPreviousMatchMultiline(e,new s.L(a,e.getLineMaxColumn(a)),i,n):null}static _doFindPreviousMatchLineByLine(e,t,i,n){const o=e.getLineCount(),s=t.lineNumber,r=e.getLineContent(s).substring(0,t.column-1),a=this._findLastMatchInLine(i,r,s,n);if(a)return a;for(let l=1;l<=o;l++){const t=(o+s-l-1)%o,r=e.getLineContent(t+1),a=this._findLastMatchInLine(i,r,t+1,n);if(a)return a}return null}static _findLastMatchInLine(e,t,i,n){let o,s=null;for(e.reset(0);o=e.next(t);)s=h(new r.e(i,o.index+1,i,o.index+1+o[0].length),o,n);return s}}function u(e,t,i,n,o){return function(e,t,i,n,o){if(0===n)return!0;const s=t.charCodeAt(n-1);if(0!==e.get(s))return!0;if(13===s||10===s)return!0;if(o>0){const i=t.charCodeAt(n);if(0!==e.get(i))return!0}return!1}(e,t,0,n,o)&&function(e,t,i,n,o){if(n+o===i)return!0;const s=t.charCodeAt(n+o);if(0!==e.get(s))return!0;if(13===s||10===s)return!0;if(o>0){const i=t.charCodeAt(n+o-1);if(0!==e.get(i))return!0}return!1}(e,t,i,n,o)}class g{constructor(e,t){this._wordSeparators=e,this._searchRegex=t,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(e){this._searchRegex.lastIndex=e,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(e){const t=e.length;let i;do{if(this._prevMatchStartIndex+this._prevMatchLength===t)return null;if(i=this._searchRegex.exec(e),!i)return null;const o=i.index,s=i[0].length;if(o===this._prevMatchStartIndex&&s===this._prevMatchLength){if(0===s){n.ZH(e,t,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=o,this._prevMatchLength=s,!this._wordSeparators||u(this._wordSeparators,e,t,o,s))return i}while(i);return null}}},29430:(e,t,i)=>{function n(e,t){let i=0,n=0;const o=e.length;for(;nn})},13930:(e,t,i)=>{i.d(t,{O:()=>g});var n=i(16113),o=i(24219),s=i(67925),r=i(82682),a=i(2067),l=i(10670),h=i(67078),d=i(761),c=i(13521);class u{static chord(e,t){return(0,s.gx)(e,t)}}function g(){return{editor:void 0,languages:void 0,CancellationTokenSource:n.A,Emitter:o.Q5,KeyCode:c.VD,KeyMod:u,Position:a.L,Range:l.e,Selection:h.Y,SelectionDirection:c.a$,MarkerSeverity:c.ZL,MarkerTag:c.eB,Uri:r.o,Token:d.WU}}u.CtrlCmd=2048,u.Shift=1024,u.Alt=512,u.WinCtrl=256},60918:(e,t,i)=>{i.d(t,{p:()=>n});const n=(0,i(34304).yh)("editorWorkerService")},25233:(e,t,i)=>{i.d(t,{A:()=>g});var n=i(48367),o=i(65549),s=i(63229),r=i(33473),a=i(43837),l=i(34304),h=i(83717),d=i(33211),c=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},u=function(e,t){return function(i,n){t(i,n,e)}};const g=(0,l.yh)("ILanguageFeatureDebounceService");var m;!function(e){const t=new WeakMap;let i=0;e.of=function(e){let n=t.get(e);return void 0===n&&(n=++i,t.set(e,n)),n}}(m||(m={}));class f{constructor(e){this._default=e}get(e){return this._default}update(e,t){return this._default}default(){return this._default}}class p{constructor(e,t,i,n,s,r){this._logService=e,this._name=t,this._registry=i,this._default=n,this._min=s,this._max=r,this._cache=new o.z6(50,.7)}_key(e){return e.id+this._registry.all(e).reduce(((e,t)=>(0,n.SP)(m.of(t),e)),0)}get(e){const t=this._key(e),i=this._cache.get(t);return i?(0,s.uZ)(i.value,this._min,this._max):this.default()}update(e,t){const i=this._key(e);let n=this._cache.get(i);n||(n=new s.N(6),this._cache.set(i,n));const o=(0,s.uZ)(n.update(t),this._min,this._max);return(0,d.xn)(e.uri,"output")||this._logService.trace("[DEBOUNCE: ".concat(this._name,"] for ").concat(e.uri.toString()," is ").concat(o,"ms")),o}_overall(){const e=new s.nM;for(const[,t]of this._cache)e.update(t.value);return e.value}default(){const e=0|this._overall()||this._default;return(0,s.uZ)(e,this._min,this._max)}}let _=class{constructor(e,t){this._logService=e,this._data=new Map,this._isDev=t.isExtensionDevelopment||!t.isBuilt}for(e,t,i){var n,o,s;const r=null!==(n=null===i||void 0===i?void 0:i.min)&&void 0!==n?n:50,a=null!==(o=null===i||void 0===i?void 0:i.max)&&void 0!==o?o:r**2,l=null!==(s=null===i||void 0===i?void 0:i.key)&&void 0!==s?s:void 0,h="".concat(m.of(e),",").concat(r).concat(l?","+l:"");let d=this._data.get(h);return d||(this._isDev?d=new p(this._logService,t,e,0|this._overallAverage()||1.5*r,r,a):(this._logService.debug("[DEBOUNCE: ".concat(t,"] is disabled in developed mode")),d=new f(1.5*r)),this._data.set(h,d)),d}_overallAverage(){const e=new s.nM;for(const t of this._data.values())e.update(t.default());return e.value}};_=c([u(0,h.VZ),u(1,r.Y)],_),(0,a.z)(g,_,1)},89752:(e,t,i)=>{i.d(t,{p:()=>n});const n=(0,i(34304).yh)("ILanguageFeaturesService")},11974:(e,t,i)=>{i.d(t,{i:()=>n});const n=(0,i(34304).yh)("markerDecorationsService")},42175:(e,t,i)=>{i.d(t,{q:()=>n});const n=(0,i(34304).yh)("modelService")},93984:(e,t,i)=>{i.d(t,{S:()=>n});const n=(0,i(34304).yh)("textModelService")},24415:(e,t,i)=>{i.d(t,{$:()=>f,h:()=>p});var n=i(55562),o=i(17903),s=i(83717),r=i(2067),a=i(10670),l=i(55494);class h{static create(e,t){return new h(e,new d(t))}get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._endLineNumber}constructor(e,t){this._startLineNumber=e,this._tokens=t,this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}toString(){return this._tokens.toString(this._startLineNumber)}_updateEndLineNumber(){this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}isEmpty(){return this._tokens.isEmpty()}getLineTokens(e){return this._startLineNumber<=e&&e<=this._endLineNumber?this._tokens.getLineTokens(e-this._startLineNumber):null}getRange(){const e=this._tokens.getRange();return e?new a.e(this._startLineNumber+e.startLineNumber,e.startColumn,this._startLineNumber+e.endLineNumber,e.endColumn):e}removeTokens(e){const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber;this._startLineNumber+=this._tokens.removeTokens(t,e.startColumn-1,i,e.endColumn-1),this._updateEndLineNumber()}split(e){const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber,[n,o,s]=this._tokens.split(t,e.startColumn-1,i,e.endColumn-1);return[new h(this._startLineNumber,n),new h(this._startLineNumber+s,o)]}applyEdit(e,t){const[i,n,o]=(0,l.Q)(t);this.acceptEdit(e,i,n,o,t.length>0?t.charCodeAt(0):0)}acceptEdit(e,t,i,n,o){this._acceptDeleteRange(e),this._acceptInsertText(new r.L(e.startLineNumber,e.startColumn),t,i,n,o),this._updateEndLineNumber()}_acceptDeleteRange(e){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return;const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber;if(i<0){const e=i-t;return void(this._startLineNumber-=e)}const n=this._tokens.getMaxDeltaLine();if(!(t>=n+1)){if(t<0&&i>=n+1)return this._startLineNumber=0,void this._tokens.clear();if(t<0){const n=-t;this._startLineNumber-=n,this._tokens.acceptDeleteRange(e.startColumn-1,0,0,i,e.endColumn-1)}else this._tokens.acceptDeleteRange(0,t,e.startColumn-1,i,e.endColumn-1)}}_acceptInsertText(e,t,i,n,o){if(0===t&&0===i)return;const s=e.lineNumber-this._startLineNumber;if(s<0)return void(this._startLineNumber+=t);s>=this._tokens.getMaxDeltaLine()+1||this._tokens.acceptInsertText(s,e.column-1,t,i,n,o)}}class d{constructor(e){this._tokens=e,this._tokenCount=e.length/4}toString(e){const t=[];for(let i=0;ie)){let o=n;for(;o>t&&this._getDeltaLine(o-1)===e;)o--;let s=n;for(;se||d===e&&u>=t)&&(de||r===e&&g>=t){if(ro?m-=o-i:m=i;else if(u===t&&g===i){if(!(u===n&&m>o)){h=!0;continue}m-=o-i}else if(uo)){h=!0;continue}u=t,g=i,m=g+(m-o)}else if(u>n){if(0===a&&!h){l=r;break}u-=a}else{if(!(u===n&&g>=o))throw new Error("Not possible!");e&&0===u&&(g+=e,m+=e),u-=a,g-=o-i,m-=o-i}const p=4*l;s[p]=u,s[p+1]=g,s[p+2]=m,s[p+3]=f,l++}this._tokenCount=l}acceptInsertText(e,t,i,n,o,s){const r=0===i&&1===n&&(s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122),a=this._tokens,l=this._tokenCount;for(let h=0;h=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},m=function(e,t){return function(i,n){t(i,n,e)}};let f=class{constructor(e,t,i,n){this._legend=e,this._themeService=t,this._languageService=i,this._logService=n,this._hasWarnedOverlappingTokens=!1,this._hasWarnedInvalidLengthTokens=!1,this._hasWarnedInvalidEditStart=!1,this._hashTable=new v}getMetadata(e,t,i){const o=this._languageService.languageIdCodec.encodeLanguageId(i),r=this._hashTable.get(e,t,o);let a;if(r)a=r.metadata,this._logService.getLevel()===s.in.Trace&&this._logService.trace("SemanticTokensProviderStyling [CACHED] ".concat(e," / ").concat(t,": foreground ").concat(n.N.getForeground(a),", fontStyle ").concat(n.N.getFontStyle(a).toString(2)));else{let r=this._legend.tokenTypes[e];const l=[];if(r){let e=t;for(let t=0;e>0&&t>=1;e>0&&this._logService.getLevel()===s.in.Trace&&(this._logService.trace("SemanticTokensProviderStyling: unknown token modifier index: ".concat(t.toString(2)," for legend: ").concat(JSON.stringify(this._legend.tokenModifiers))),l.push("not-in-legend"));const n=this._themeService.getColorTheme().getTokenStyleMetadata(r,l,i);if("undefined"===typeof n)a=2147483647;else{if(a=0,"undefined"!==typeof n.italic){a|=1|(n.italic?1:0)<<11}if("undefined"!==typeof n.bold){a|=2|(n.bold?2:0)<<11}if("undefined"!==typeof n.underline){a|=4|(n.underline?4:0)<<11}if("undefined"!==typeof n.strikethrough){a|=8|(n.strikethrough?8:0)<<11}if(n.foreground){a|=16|n.foreground<<15}0===a&&(a=2147483647)}}else this._logService.getLevel()===s.in.Trace&&this._logService.trace("SemanticTokensProviderStyling: unknown token type index: ".concat(e," for legend: ").concat(JSON.stringify(this._legend.tokenTypes))),a=2147483647,r="not-in-legend";this._hashTable.add(e,t,o,a),this._logService.getLevel()===s.in.Trace&&this._logService.trace("SemanticTokensProviderStyling ".concat(e," (").concat(r,") / ").concat(t," (").concat(l.join(" "),"): foreground ").concat(n.N.getForeground(a),", fontStyle ").concat(n.N.getFontStyle(a).toString(2)))}return a}warnOverlappingSemanticTokens(e,t){this._hasWarnedOverlappingTokens||(this._hasWarnedOverlappingTokens=!0,this._logService.warn("Overlapping semantic tokens detected at lineNumber ".concat(e,", column ").concat(t)))}warnInvalidLengthSemanticTokens(e,t){this._hasWarnedInvalidLengthTokens||(this._hasWarnedInvalidLengthTokens=!0,this._logService.warn("Semantic token with invalid length detected at lineNumber ".concat(e,", column ").concat(t)))}warnInvalidEditStart(e,t,i,n,o){this._hasWarnedInvalidEditStart||(this._hasWarnedInvalidEditStart=!0,this._logService.warn("Invalid semantic tokens edit detected (previousResultId: ".concat(e,", resultId: ").concat(t,") at edit #").concat(i,": The provided start offset ").concat(n," is outside the previous data (length ").concat(o,").")))}};function p(e,t,i){const n=e.data,o=e.data.length/5|0,s=Math.max(Math.ceil(o/1024),400),r=[];let a=0,l=1,d=0;for(;ae&&0===n[5*t];)t--;if(t-1===e){let e=c;for(;e+1h)t.warnOverlappingSemanticTokens(r,h+1);else{const e=t.getMetadata(_,v,i);2147483647!==e&&(0===m&&(m=r),u[g]=r-m,u[g+1]=h,u[g+2]=c,u[g+3]=e,g+=4,f=r,p=c)}l=r,d=h,a++}g!==u.length&&(u=u.subarray(0,g));const _=h.create(m,u);r.push(_)}return r}f=g([m(1,o.XE),m(2,u.O),m(3,s.VZ)],f);class _{constructor(e,t,i,n){this.tokenTypeIndex=e,this.tokenModifierSet=t,this.languageId=i,this.metadata=n,this.next=null}}class v{constructor(){this._elementsCount=0,this._currentLengthIndex=0,this._currentLength=v._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1=this._growCount){const e=this._elements;this._currentLengthIndex++,this._currentLength=v._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1{i.d(t,{s:()=>n});const n=(0,i(34304).yh)("semanticTokensStylingService")},61315:(e,t,i)=>{i.d(t,{V:()=>o,y:()=>s});var n=i(34304);const o=(0,n.yh)("textResourceConfigurationService"),s=(0,n.yh)("textResourcePropertiesService")},90428:(e,t,i)=>{i.d(t,{a:()=>l});var n=i(10670),o=i(90255),s=i(25085),r=i(39880),a=i(42696);class l{static computeUnicodeHighlights(e,t,i){const l=i?i.startLineNumber:1,d=i?i.endLineNumber:e.getLineCount(),c=new h(t),u=c.getCandidateCodePoints();let g;var m;g="allNonBasicAscii"===u?new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):new RegExp("".concat((m=Array.from(u),"[".concat(s.ec(m.map((e=>String.fromCodePoint(e))).join("")),"]"))),"g");const f=new o.sz(null,g),p=[];let _,v=!1,b=0,C=0,w=0;e:for(let o=l,h=d;o<=h;o++){const t=e.getLineContent(o),i=t.length;f.reset(0);do{if(_=f.next(t),_){let e=_.index,l=_.index+_[0].length;if(e>0){const i=t.charCodeAt(e-1);s.ZG(i)&&e--}if(l+1=t){v=!0;break e}p.push(new n.e(o,e+1,o,l+1))}}}while(_)}return{ranges:p,hasMore:v,ambiguousCharacterCount:b,invisibleCharacterCount:C,nonBasicAsciiCharacterCount:w}}static computeUnicodeHighlightReason(e,t){const i=new h(t);switch(i.shouldHighlightNonBasicASCII(e,null)){case 0:return null;case 2:return{kind:1};case 3:{const n=e.codePointAt(0),o=i.ambiguousCharacters.getPrimaryConfusable(n),r=s.ZK.getLocales().filter((e=>!s.ZK.getInstance(new Set([...t.allowedLocales,e])).isAmbiguous(n)));return{kind:0,confusableWith:String.fromCodePoint(o),notAmbiguousInLocales:r}}case 1:return{kind:2}}}}class h{constructor(e){this.options=e,this.allowedCodePoints=new Set(e.allowedCodePoints),this.ambiguousCharacters=s.ZK.getInstance(new Set(e.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const e=new Set;if(this.options.invisibleCharacters)for(const t of s.vU.codePoints)d(String.fromCodePoint(t))||e.add(t);if(this.options.ambiguousCharacters)for(const t of this.ambiguousCharacters.getConfusableCodePoints())e.add(t);for(const t of this.allowedCodePoints)e.delete(t);return e}shouldHighlightNonBasicASCII(e,t){const i=e.codePointAt(0);if(this.allowedCodePoints.has(i))return 0;if(this.options.nonBasicASCII)return 1;let n=!1,o=!1;if(t)for(const r of t){const e=r.codePointAt(0),t=s.$i(r);n=n||t,t||this.ambiguousCharacters.isAmbiguous(e)||s.vU.isInvisibleCharacter(e)||(o=!0)}return!n&&o?0:this.options.invisibleCharacters&&!d(e)&&s.vU.isInvisibleCharacter(i)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(i)?3:0}}function d(e){return" "===e||"\n"===e||"\t"===e}},13521:(e,t,i)=>{var n,o,s,r,a,l,h,d,c,u,g,m,f,p,_,v,b,C,w,y,S,L,k,D,N,x,E,I,T,M,A,R,O,P,F,B,z,V,W,H,K,U,j,q;i.d(t,{$r:()=>z,E$:()=>I,F5:()=>D,Ij:()=>l,In:()=>K,Lu:()=>R,MG:()=>x,MY:()=>u,NA:()=>M,OI:()=>j,RM:()=>b,U:()=>_,VD:()=>S,Vi:()=>d,WG:()=>N,WW:()=>V,ZL:()=>L,_x:()=>c,a$:()=>B,a7:()=>s,ao:()=>n,bw:()=>w,cR:()=>W,cm:()=>r,d2:()=>U,eB:()=>k,g4:()=>P,g_:()=>F,gl:()=>C,gm:()=>f,jl:()=>p,np:()=>o,py:()=>A,r3:()=>h,r4:()=>H,rf:()=>g,rn:()=>y,sh:()=>T,up:()=>q,vQ:()=>O,w:()=>E,wT:()=>m,wU:()=>v,we:()=>a}),function(e){e[e.Unknown=0]="Unknown",e[e.Disabled=1]="Disabled",e[e.Enabled=2]="Enabled"}(n||(n={})),function(e){e[e.Invoke=1]="Invoke",e[e.Auto=2]="Auto"}(o||(o={})),function(e){e[e.None=0]="None",e[e.KeepWhitespace=1]="KeepWhitespace",e[e.InsertAsSnippet=4]="InsertAsSnippet"}(s||(s={})),function(e){e[e.Method=0]="Method",e[e.Function=1]="Function",e[e.Constructor=2]="Constructor",e[e.Field=3]="Field",e[e.Variable=4]="Variable",e[e.Class=5]="Class",e[e.Struct=6]="Struct",e[e.Interface=7]="Interface",e[e.Module=8]="Module",e[e.Property=9]="Property",e[e.Event=10]="Event",e[e.Operator=11]="Operator",e[e.Unit=12]="Unit",e[e.Value=13]="Value",e[e.Constant=14]="Constant",e[e.Enum=15]="Enum",e[e.EnumMember=16]="EnumMember",e[e.Keyword=17]="Keyword",e[e.Text=18]="Text",e[e.Color=19]="Color",e[e.File=20]="File",e[e.Reference=21]="Reference",e[e.Customcolor=22]="Customcolor",e[e.Folder=23]="Folder",e[e.TypeParameter=24]="TypeParameter",e[e.User=25]="User",e[e.Issue=26]="Issue",e[e.Snippet=27]="Snippet"}(r||(r={})),function(e){e[e.Deprecated=1]="Deprecated"}(a||(a={})),function(e){e[e.Invoke=0]="Invoke",e[e.TriggerCharacter=1]="TriggerCharacter",e[e.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"}(l||(l={})),function(e){e[e.EXACT=0]="EXACT",e[e.ABOVE=1]="ABOVE",e[e.BELOW=2]="BELOW"}(h||(h={})),function(e){e[e.NotSet=0]="NotSet",e[e.ContentFlush=1]="ContentFlush",e[e.RecoverFromMarkers=2]="RecoverFromMarkers",e[e.Explicit=3]="Explicit",e[e.Paste=4]="Paste",e[e.Undo=5]="Undo",e[e.Redo=6]="Redo"}(d||(d={})),function(e){e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"}(c||(c={})),function(e){e[e.Text=0]="Text",e[e.Read=1]="Read",e[e.Write=2]="Write"}(u||(u={})),function(e){e[e.None=0]="None",e[e.Keep=1]="Keep",e[e.Brackets=2]="Brackets",e[e.Advanced=3]="Advanced",e[e.Full=4]="Full"}(g||(g={})),function(e){e[e.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",e[e.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",e[e.accessibilitySupport=2]="accessibilitySupport",e[e.accessibilityPageSize=3]="accessibilityPageSize",e[e.ariaLabel=4]="ariaLabel",e[e.ariaRequired=5]="ariaRequired",e[e.autoClosingBrackets=6]="autoClosingBrackets",e[e.autoClosingComments=7]="autoClosingComments",e[e.screenReaderAnnounceInlineSuggestion=8]="screenReaderAnnounceInlineSuggestion",e[e.autoClosingDelete=9]="autoClosingDelete",e[e.autoClosingOvertype=10]="autoClosingOvertype",e[e.autoClosingQuotes=11]="autoClosingQuotes",e[e.autoIndent=12]="autoIndent",e[e.automaticLayout=13]="automaticLayout",e[e.autoSurround=14]="autoSurround",e[e.bracketPairColorization=15]="bracketPairColorization",e[e.guides=16]="guides",e[e.codeLens=17]="codeLens",e[e.codeLensFontFamily=18]="codeLensFontFamily",e[e.codeLensFontSize=19]="codeLensFontSize",e[e.colorDecorators=20]="colorDecorators",e[e.colorDecoratorsLimit=21]="colorDecoratorsLimit",e[e.columnSelection=22]="columnSelection",e[e.comments=23]="comments",e[e.contextmenu=24]="contextmenu",e[e.copyWithSyntaxHighlighting=25]="copyWithSyntaxHighlighting",e[e.cursorBlinking=26]="cursorBlinking",e[e.cursorSmoothCaretAnimation=27]="cursorSmoothCaretAnimation",e[e.cursorStyle=28]="cursorStyle",e[e.cursorSurroundingLines=29]="cursorSurroundingLines",e[e.cursorSurroundingLinesStyle=30]="cursorSurroundingLinesStyle",e[e.cursorWidth=31]="cursorWidth",e[e.disableLayerHinting=32]="disableLayerHinting",e[e.disableMonospaceOptimizations=33]="disableMonospaceOptimizations",e[e.domReadOnly=34]="domReadOnly",e[e.dragAndDrop=35]="dragAndDrop",e[e.dropIntoEditor=36]="dropIntoEditor",e[e.emptySelectionClipboard=37]="emptySelectionClipboard",e[e.experimentalWhitespaceRendering=38]="experimentalWhitespaceRendering",e[e.extraEditorClassName=39]="extraEditorClassName",e[e.fastScrollSensitivity=40]="fastScrollSensitivity",e[e.find=41]="find",e[e.fixedOverflowWidgets=42]="fixedOverflowWidgets",e[e.folding=43]="folding",e[e.foldingStrategy=44]="foldingStrategy",e[e.foldingHighlight=45]="foldingHighlight",e[e.foldingImportsByDefault=46]="foldingImportsByDefault",e[e.foldingMaximumRegions=47]="foldingMaximumRegions",e[e.unfoldOnClickAfterEndOfLine=48]="unfoldOnClickAfterEndOfLine",e[e.fontFamily=49]="fontFamily",e[e.fontInfo=50]="fontInfo",e[e.fontLigatures=51]="fontLigatures",e[e.fontSize=52]="fontSize",e[e.fontWeight=53]="fontWeight",e[e.fontVariations=54]="fontVariations",e[e.formatOnPaste=55]="formatOnPaste",e[e.formatOnType=56]="formatOnType",e[e.glyphMargin=57]="glyphMargin",e[e.gotoLocation=58]="gotoLocation",e[e.hideCursorInOverviewRuler=59]="hideCursorInOverviewRuler",e[e.hover=60]="hover",e[e.inDiffEditor=61]="inDiffEditor",e[e.inlineSuggest=62]="inlineSuggest",e[e.inlineEdit=63]="inlineEdit",e[e.letterSpacing=64]="letterSpacing",e[e.lightbulb=65]="lightbulb",e[e.lineDecorationsWidth=66]="lineDecorationsWidth",e[e.lineHeight=67]="lineHeight",e[e.lineNumbers=68]="lineNumbers",e[e.lineNumbersMinChars=69]="lineNumbersMinChars",e[e.linkedEditing=70]="linkedEditing",e[e.links=71]="links",e[e.matchBrackets=72]="matchBrackets",e[e.minimap=73]="minimap",e[e.mouseStyle=74]="mouseStyle",e[e.mouseWheelScrollSensitivity=75]="mouseWheelScrollSensitivity",e[e.mouseWheelZoom=76]="mouseWheelZoom",e[e.multiCursorMergeOverlapping=77]="multiCursorMergeOverlapping",e[e.multiCursorModifier=78]="multiCursorModifier",e[e.multiCursorPaste=79]="multiCursorPaste",e[e.multiCursorLimit=80]="multiCursorLimit",e[e.occurrencesHighlight=81]="occurrencesHighlight",e[e.overviewRulerBorder=82]="overviewRulerBorder",e[e.overviewRulerLanes=83]="overviewRulerLanes",e[e.padding=84]="padding",e[e.pasteAs=85]="pasteAs",e[e.parameterHints=86]="parameterHints",e[e.peekWidgetDefaultFocus=87]="peekWidgetDefaultFocus",e[e.definitionLinkOpensInPeek=88]="definitionLinkOpensInPeek",e[e.quickSuggestions=89]="quickSuggestions",e[e.quickSuggestionsDelay=90]="quickSuggestionsDelay",e[e.readOnly=91]="readOnly",e[e.readOnlyMessage=92]="readOnlyMessage",e[e.renameOnType=93]="renameOnType",e[e.renderControlCharacters=94]="renderControlCharacters",e[e.renderFinalNewline=95]="renderFinalNewline",e[e.renderLineHighlight=96]="renderLineHighlight",e[e.renderLineHighlightOnlyWhenFocus=97]="renderLineHighlightOnlyWhenFocus",e[e.renderValidationDecorations=98]="renderValidationDecorations",e[e.renderWhitespace=99]="renderWhitespace",e[e.revealHorizontalRightPadding=100]="revealHorizontalRightPadding",e[e.roundedSelection=101]="roundedSelection",e[e.rulers=102]="rulers",e[e.scrollbar=103]="scrollbar",e[e.scrollBeyondLastColumn=104]="scrollBeyondLastColumn",e[e.scrollBeyondLastLine=105]="scrollBeyondLastLine",e[e.scrollPredominantAxis=106]="scrollPredominantAxis",e[e.selectionClipboard=107]="selectionClipboard",e[e.selectionHighlight=108]="selectionHighlight",e[e.selectOnLineNumbers=109]="selectOnLineNumbers",e[e.showFoldingControls=110]="showFoldingControls",e[e.showUnused=111]="showUnused",e[e.snippetSuggestions=112]="snippetSuggestions",e[e.smartSelect=113]="smartSelect",e[e.smoothScrolling=114]="smoothScrolling",e[e.stickyScroll=115]="stickyScroll",e[e.stickyTabStops=116]="stickyTabStops",e[e.stopRenderingLineAfter=117]="stopRenderingLineAfter",e[e.suggest=118]="suggest",e[e.suggestFontSize=119]="suggestFontSize",e[e.suggestLineHeight=120]="suggestLineHeight",e[e.suggestOnTriggerCharacters=121]="suggestOnTriggerCharacters",e[e.suggestSelection=122]="suggestSelection",e[e.tabCompletion=123]="tabCompletion",e[e.tabIndex=124]="tabIndex",e[e.unicodeHighlighting=125]="unicodeHighlighting",e[e.unusualLineTerminators=126]="unusualLineTerminators",e[e.useShadowDOM=127]="useShadowDOM",e[e.useTabStops=128]="useTabStops",e[e.wordBreak=129]="wordBreak",e[e.wordSegmenterLocales=130]="wordSegmenterLocales",e[e.wordSeparators=131]="wordSeparators",e[e.wordWrap=132]="wordWrap",e[e.wordWrapBreakAfterCharacters=133]="wordWrapBreakAfterCharacters",e[e.wordWrapBreakBeforeCharacters=134]="wordWrapBreakBeforeCharacters",e[e.wordWrapColumn=135]="wordWrapColumn",e[e.wordWrapOverride1=136]="wordWrapOverride1",e[e.wordWrapOverride2=137]="wordWrapOverride2",e[e.wrappingIndent=138]="wrappingIndent",e[e.wrappingStrategy=139]="wrappingStrategy",e[e.showDeprecated=140]="showDeprecated",e[e.inlayHints=141]="inlayHints",e[e.editorClassName=142]="editorClassName",e[e.pixelRatio=143]="pixelRatio",e[e.tabFocusMode=144]="tabFocusMode",e[e.layoutInfo=145]="layoutInfo",e[e.wrappingInfo=146]="wrappingInfo",e[e.defaultColorDecorators=147]="defaultColorDecorators",e[e.colorDecoratorsActivatedOn=148]="colorDecoratorsActivatedOn",e[e.inlineCompletionsAccessibilityVerbose=149]="inlineCompletionsAccessibilityVerbose"}(m||(m={})),function(e){e[e.TextDefined=0]="TextDefined",e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"}(f||(f={})),function(e){e[e.LF=0]="LF",e[e.CRLF=1]="CRLF"}(p||(p={})),function(e){e[e.Left=1]="Left",e[e.Center=2]="Center",e[e.Right=3]="Right"}(_||(_={})),function(e){e[e.None=0]="None",e[e.Indent=1]="Indent",e[e.IndentOutdent=2]="IndentOutdent",e[e.Outdent=3]="Outdent"}(v||(v={})),function(e){e[e.Both=0]="Both",e[e.Right=1]="Right",e[e.Left=2]="Left",e[e.None=3]="None"}(b||(b={})),function(e){e[e.Type=1]="Type",e[e.Parameter=2]="Parameter"}(C||(C={})),function(e){e[e.Automatic=0]="Automatic",e[e.Explicit=1]="Explicit"}(w||(w={})),function(e){e[e.Invoke=0]="Invoke",e[e.Automatic=1]="Automatic"}(y||(y={})),function(e){e[e.DependsOnKbLayout=-1]="DependsOnKbLayout",e[e.Unknown=0]="Unknown",e[e.Backspace=1]="Backspace",e[e.Tab=2]="Tab",e[e.Enter=3]="Enter",e[e.Shift=4]="Shift",e[e.Ctrl=5]="Ctrl",e[e.Alt=6]="Alt",e[e.PauseBreak=7]="PauseBreak",e[e.CapsLock=8]="CapsLock",e[e.Escape=9]="Escape",e[e.Space=10]="Space",e[e.PageUp=11]="PageUp",e[e.PageDown=12]="PageDown",e[e.End=13]="End",e[e.Home=14]="Home",e[e.LeftArrow=15]="LeftArrow",e[e.UpArrow=16]="UpArrow",e[e.RightArrow=17]="RightArrow",e[e.DownArrow=18]="DownArrow",e[e.Insert=19]="Insert",e[e.Delete=20]="Delete",e[e.Digit0=21]="Digit0",e[e.Digit1=22]="Digit1",e[e.Digit2=23]="Digit2",e[e.Digit3=24]="Digit3",e[e.Digit4=25]="Digit4",e[e.Digit5=26]="Digit5",e[e.Digit6=27]="Digit6",e[e.Digit7=28]="Digit7",e[e.Digit8=29]="Digit8",e[e.Digit9=30]="Digit9",e[e.KeyA=31]="KeyA",e[e.KeyB=32]="KeyB",e[e.KeyC=33]="KeyC",e[e.KeyD=34]="KeyD",e[e.KeyE=35]="KeyE",e[e.KeyF=36]="KeyF",e[e.KeyG=37]="KeyG",e[e.KeyH=38]="KeyH",e[e.KeyI=39]="KeyI",e[e.KeyJ=40]="KeyJ",e[e.KeyK=41]="KeyK",e[e.KeyL=42]="KeyL",e[e.KeyM=43]="KeyM",e[e.KeyN=44]="KeyN",e[e.KeyO=45]="KeyO",e[e.KeyP=46]="KeyP",e[e.KeyQ=47]="KeyQ",e[e.KeyR=48]="KeyR",e[e.KeyS=49]="KeyS",e[e.KeyT=50]="KeyT",e[e.KeyU=51]="KeyU",e[e.KeyV=52]="KeyV",e[e.KeyW=53]="KeyW",e[e.KeyX=54]="KeyX",e[e.KeyY=55]="KeyY",e[e.KeyZ=56]="KeyZ",e[e.Meta=57]="Meta",e[e.ContextMenu=58]="ContextMenu",e[e.F1=59]="F1",e[e.F2=60]="F2",e[e.F3=61]="F3",e[e.F4=62]="F4",e[e.F5=63]="F5",e[e.F6=64]="F6",e[e.F7=65]="F7",e[e.F8=66]="F8",e[e.F9=67]="F9",e[e.F10=68]="F10",e[e.F11=69]="F11",e[e.F12=70]="F12",e[e.F13=71]="F13",e[e.F14=72]="F14",e[e.F15=73]="F15",e[e.F16=74]="F16",e[e.F17=75]="F17",e[e.F18=76]="F18",e[e.F19=77]="F19",e[e.F20=78]="F20",e[e.F21=79]="F21",e[e.F22=80]="F22",e[e.F23=81]="F23",e[e.F24=82]="F24",e[e.NumLock=83]="NumLock",e[e.ScrollLock=84]="ScrollLock",e[e.Semicolon=85]="Semicolon",e[e.Equal=86]="Equal",e[e.Comma=87]="Comma",e[e.Minus=88]="Minus",e[e.Period=89]="Period",e[e.Slash=90]="Slash",e[e.Backquote=91]="Backquote",e[e.BracketLeft=92]="BracketLeft",e[e.Backslash=93]="Backslash",e[e.BracketRight=94]="BracketRight",e[e.Quote=95]="Quote",e[e.OEM_8=96]="OEM_8",e[e.IntlBackslash=97]="IntlBackslash",e[e.Numpad0=98]="Numpad0",e[e.Numpad1=99]="Numpad1",e[e.Numpad2=100]="Numpad2",e[e.Numpad3=101]="Numpad3",e[e.Numpad4=102]="Numpad4",e[e.Numpad5=103]="Numpad5",e[e.Numpad6=104]="Numpad6",e[e.Numpad7=105]="Numpad7",e[e.Numpad8=106]="Numpad8",e[e.Numpad9=107]="Numpad9",e[e.NumpadMultiply=108]="NumpadMultiply",e[e.NumpadAdd=109]="NumpadAdd",e[e.NUMPAD_SEPARATOR=110]="NUMPAD_SEPARATOR",e[e.NumpadSubtract=111]="NumpadSubtract",e[e.NumpadDecimal=112]="NumpadDecimal",e[e.NumpadDivide=113]="NumpadDivide",e[e.KEY_IN_COMPOSITION=114]="KEY_IN_COMPOSITION",e[e.ABNT_C1=115]="ABNT_C1",e[e.ABNT_C2=116]="ABNT_C2",e[e.AudioVolumeMute=117]="AudioVolumeMute",e[e.AudioVolumeUp=118]="AudioVolumeUp",e[e.AudioVolumeDown=119]="AudioVolumeDown",e[e.BrowserSearch=120]="BrowserSearch",e[e.BrowserHome=121]="BrowserHome",e[e.BrowserBack=122]="BrowserBack",e[e.BrowserForward=123]="BrowserForward",e[e.MediaTrackNext=124]="MediaTrackNext",e[e.MediaTrackPrevious=125]="MediaTrackPrevious",e[e.MediaStop=126]="MediaStop",e[e.MediaPlayPause=127]="MediaPlayPause",e[e.LaunchMediaPlayer=128]="LaunchMediaPlayer",e[e.LaunchMail=129]="LaunchMail",e[e.LaunchApp2=130]="LaunchApp2",e[e.Clear=131]="Clear",e[e.MAX_VALUE=132]="MAX_VALUE"}(S||(S={})),function(e){e[e.Hint=1]="Hint",e[e.Info=2]="Info",e[e.Warning=4]="Warning",e[e.Error=8]="Error"}(L||(L={})),function(e){e[e.Unnecessary=1]="Unnecessary",e[e.Deprecated=2]="Deprecated"}(k||(k={})),function(e){e[e.Inline=1]="Inline",e[e.Gutter=2]="Gutter"}(D||(D={})),function(e){e[e.Normal=1]="Normal",e[e.Underlined=2]="Underlined"}(N||(N={})),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TEXTAREA=1]="TEXTAREA",e[e.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",e[e.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",e[e.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",e[e.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",e[e.CONTENT_TEXT=6]="CONTENT_TEXT",e[e.CONTENT_EMPTY=7]="CONTENT_EMPTY",e[e.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",e[e.CONTENT_WIDGET=9]="CONTENT_WIDGET",e[e.OVERVIEW_RULER=10]="OVERVIEW_RULER",e[e.SCROLLBAR=11]="SCROLLBAR",e[e.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",e[e.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"}(x||(x={})),function(e){e[e.AIGenerated=1]="AIGenerated"}(E||(E={})),function(e){e[e.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",e[e.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",e[e.TOP_CENTER=2]="TOP_CENTER"}(I||(I={})),function(e){e[e.Left=1]="Left",e[e.Center=2]="Center",e[e.Right=4]="Right",e[e.Full=7]="Full"}(T||(T={})),function(e){e[e.Word=0]="Word",e[e.Line=1]="Line",e[e.Suggest=2]="Suggest"}(M||(M={})),function(e){e[e.Left=0]="Left",e[e.Right=1]="Right",e[e.None=2]="None",e[e.LeftOfInjectedText=3]="LeftOfInjectedText",e[e.RightOfInjectedText=4]="RightOfInjectedText"}(A||(A={})),function(e){e[e.Off=0]="Off",e[e.On=1]="On",e[e.Relative=2]="Relative",e[e.Interval=3]="Interval",e[e.Custom=4]="Custom"}(R||(R={})),function(e){e[e.None=0]="None",e[e.Text=1]="Text",e[e.Blocks=2]="Blocks"}(O||(O={})),function(e){e[e.Smooth=0]="Smooth",e[e.Immediate=1]="Immediate"}(P||(P={})),function(e){e[e.Auto=1]="Auto",e[e.Hidden=2]="Hidden",e[e.Visible=3]="Visible"}(F||(F={})),function(e){e[e.LTR=0]="LTR",e[e.RTL=1]="RTL"}(B||(B={})),function(e){e.Off="off",e.OnCode="onCode",e.On="on"}(z||(z={})),function(e){e[e.Invoke=1]="Invoke",e[e.TriggerCharacter=2]="TriggerCharacter",e[e.ContentChange=3]="ContentChange"}(V||(V={})),function(e){e[e.File=0]="File",e[e.Module=1]="Module",e[e.Namespace=2]="Namespace",e[e.Package=3]="Package",e[e.Class=4]="Class",e[e.Method=5]="Method",e[e.Property=6]="Property",e[e.Field=7]="Field",e[e.Constructor=8]="Constructor",e[e.Enum=9]="Enum",e[e.Interface=10]="Interface",e[e.Function=11]="Function",e[e.Variable=12]="Variable",e[e.Constant=13]="Constant",e[e.String=14]="String",e[e.Number=15]="Number",e[e.Boolean=16]="Boolean",e[e.Array=17]="Array",e[e.Object=18]="Object",e[e.Key=19]="Key",e[e.Null=20]="Null",e[e.EnumMember=21]="EnumMember",e[e.Struct=22]="Struct",e[e.Event=23]="Event",e[e.Operator=24]="Operator",e[e.TypeParameter=25]="TypeParameter"}(W||(W={})),function(e){e[e.Deprecated=1]="Deprecated"}(H||(H={})),function(e){e[e.Hidden=0]="Hidden",e[e.Blink=1]="Blink",e[e.Smooth=2]="Smooth",e[e.Phase=3]="Phase",e[e.Expand=4]="Expand",e[e.Solid=5]="Solid"}(K||(K={})),function(e){e[e.Line=1]="Line",e[e.Block=2]="Block",e[e.Underline=3]="Underline",e[e.LineThin=4]="LineThin",e[e.BlockOutline=5]="BlockOutline",e[e.UnderlineThin=6]="UnderlineThin"}(U||(U={})),function(e){e[e.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",e[e.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",e[e.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",e[e.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"}(j||(j={})),function(e){e[e.None=0]="None",e[e.Same=1]="Same",e[e.Indent=2]="Indent",e[e.DeepIndent=3]="DeepIndent"}(q||(q={}))},36334:(e,t,i)=>{i.d(t,{B8:()=>l,UX:()=>r,aq:()=>a,iN:()=>d,ld:()=>s,qq:()=>o,ug:()=>n,xi:()=>h});var n,o,s,r,a,l,h,d,c=i(71721);!function(e){e.inspectTokensAction=c.NC("inspectTokens","Developer: Inspect Tokens")}(n||(n={})),function(e){e.gotoLineActionLabel=c.NC("gotoLineActionLabel","Go to Line/Column...")}(o||(o={})),function(e){e.helpQuickAccessActionLabel=c.NC("helpQuickAccess","Show all Quick Access Providers")}(s||(s={})),function(e){e.quickCommandActionLabel=c.NC("quickCommandActionLabel","Command Palette"),e.quickCommandHelp=c.NC("quickCommandActionHelp","Show And Run Commands")}(r||(r={})),function(e){e.quickOutlineActionLabel=c.NC("quickOutlineActionLabel","Go to Symbol..."),e.quickOutlineByCategoryActionLabel=c.NC("quickOutlineByCategoryActionLabel","Go to Symbol by Category...")}(a||(a={})),function(e){e.editorViewAccessibleLabel=c.NC("editorViewAccessibleLabel","Editor content"),e.accessibilityHelpMessage=c.NC("accessibilityHelpMessage","Press Alt+F1 for Accessibility Options.")}(l||(l={})),function(e){e.toggleHighContrast=c.NC("toggleHighContrast","Toggle High Contrast Theme")}(h||(h={})),function(e){e.bulkEditServiceSummary=c.NC("bulkEditServiceSummary","Made {0} edits in {1} files")}(d||(d={}))},65497:(e,t,i)=>{i.d(t,{CZ:()=>l,D8:()=>d,Jx:()=>n,Tx:()=>a,dQ:()=>h,fV:()=>c,gk:()=>o,lN:()=>r,rU:()=>s});class n{constructor(){this.changeType=1}}class o{static applyInjectedText(e,t){if(!t||0===t.length)return e;let i="",n=0;for(const o of t)i+=e.substring(n,o.column-1),n=o.column-1,i+=o.options.content;return i+=e.substring(n),i}static fromDecorations(e){const t=[];for(const i of e)i.options.before&&i.options.before.content.length>0&&t.push(new o(i.ownerId,i.range.startLineNumber,i.range.startColumn,i.options.before,0)),i.options.after&&i.options.after.content.length>0&&t.push(new o(i.ownerId,i.range.endLineNumber,i.range.endColumn,i.options.after,1));return t.sort(((e,t)=>e.lineNumber===t.lineNumber?e.column===t.column?e.order-t.order:e.column-t.column:e.lineNumber-t.lineNumber)),t}constructor(e,t,i,n,o){this.ownerId=e,this.lineNumber=t,this.column=i,this.options=n,this.order=o}}class s{constructor(e,t,i){this.changeType=2,this.lineNumber=e,this.detail=t,this.injectedText=i}}class r{constructor(e,t){this.changeType=3,this.fromLineNumber=e,this.toLineNumber=t}}class a{constructor(e,t,i,n){this.changeType=4,this.injectedTexts=n,this.fromLineNumber=e,this.toLineNumber=t,this.detail=i}}class l{constructor(){this.changeType=5}}class h{constructor(e,t,i,n){this.changes=e,this.versionId=t,this.isUndoing=i,this.isRedoing=n,this.resultingSelection=null}containsEvent(e){for(let t=0,i=this.changes.length;t{var n;i.d(t,{UO:()=>o,s6:()=>n,vW:()=>s}),function(e){e[e.Disabled=0]="Disabled",e[e.EnabledForActive=1]="EnabledForActive",e[e.Enabled=2]="Enabled"}(n||(n={}));class o{constructor(e,t,i,n,o,s){if(this.visibleColumn=e,this.column=t,this.className=i,this.horizontalLine=n,this.forWrappedLinesAfterColumn=o,this.forWrappedLinesBeforeOrAtColumn=s,-1!==e===(-1!==t))throw new Error}}class s{constructor(e,t){this.top=e,this.endColumn=t}}},43471:(e,t,i)=>{i.d(t,{A:()=>o});var n=i(55562);class o{static createEmpty(e,t){const i=o.defaultTokenMetadata,n=new Uint32Array(2);return n[0]=e.length,n[1]=i,new o(n,e,t)}constructor(e,t,i){this._lineTokensBrand=void 0,this._tokens=e,this._tokensCount=this._tokens.length>>>1,this._text=t,this._languageIdCodec=i}equals(e){return e instanceof o&&this.slicedEquals(e,0,this._tokensCount)}slicedEquals(e,t,i){if(this._text!==e._text)return!1;if(this._tokensCount!==e._tokensCount)return!1;const n=t<<1,o=n+(i<<1);for(let s=n;s0?this._tokens[e-1<<1]:0}getMetadata(e){return this._tokens[1+(e<<1)]}getLanguageId(e){const t=this._tokens[1+(e<<1)],i=n.N.getLanguageId(t);return this._languageIdCodec.decodeLanguageId(i)}getStandardTokenType(e){const t=this._tokens[1+(e<<1)];return n.N.getTokenType(t)}getForeground(e){const t=this._tokens[1+(e<<1)];return n.N.getForeground(t)}getClassName(e){const t=this._tokens[1+(e<<1)];return n.N.getClassNameFromMetadata(t)}getInlineStyle(e,t){const i=this._tokens[1+(e<<1)];return n.N.getInlineStyleFromMetadata(i,t)}getPresentation(e){const t=this._tokens[1+(e<<1)];return n.N.getPresentationFromMetadata(t)}getEndOffset(e){return this._tokens[e<<1]}findTokenIndexAtOffset(e){return o.findIndexInTokensArray(this._tokens,e)}inflate(){return this}sliceAndInflate(e,t,i){return new s(this,e,t,i)}static convertToEndOffset(e,t){const i=(e.length>>>1)-1;for(let n=0;n>>1)-1;for(;it&&(n=o)}return i}withInserted(e){if(0===e.length)return this;let t=0,i=0,n="";const s=new Array;let r=0;for(;;){const o=tr){n+=this._text.substring(r,a.offset);const e=this._tokens[1+(t<<1)];s.push(n.length,e),r=a.offset}n+=a.text,s.push(n.length,a.tokenMetadata),i++}}return new o(new Uint32Array(s),n,this._languageIdCodec)}}o.defaultTokenMetadata=33587200;class s{constructor(e,t,i,n){this._source=e,this._startOffset=t,this._endOffset=i,this._deltaOffset=n,this._firstTokenIndex=e.findTokenIndexAtOffset(t),this._tokensCount=0;for(let o=this._firstTokenIndex,s=e.getCount();o=i)break;this._tokensCount++}}getMetadata(e){return this._source.getMetadata(this._firstTokenIndex+e)}getLanguageId(e){return this._source.getLanguageId(this._firstTokenIndex+e)}getLineContent(){return this._source.getLineContent().substring(this._startOffset,this._endOffset)}equals(e){return e instanceof s&&(this._startOffset===e._startOffset&&this._endOffset===e._endOffset&&this._deltaOffset===e._deltaOffset&&this._source.slicedEquals(e._source,this._firstTokenIndex,this._tokensCount))}getCount(){return this._tokensCount}getForeground(e){return this._source.getForeground(this._firstTokenIndex+e)}getEndOffset(e){const t=this._source.getEndOffset(this._firstTokenIndex+e);return Math.min(this._endOffset,t)-this._startOffset+this._deltaOffset}getClassName(e){return this._source.getClassName(this._firstTokenIndex+e)}getInlineStyle(e,t){return this._source.getInlineStyle(this._firstTokenIndex+e,t)}getPresentation(e){return this._source.getPresentation(this._firstTokenIndex+e)}findTokenIndexAtOffset(e){return this._source.findTokenIndexAtOffset(e+this._startOffset-this._deltaOffset)-this._firstTokenIndex}}},85766:(e,t,i)=>{i.d(t,{Kp:()=>o,k:()=>a});var n=i(25085);class o{constructor(e,t,i,n){this.startColumn=e,this.endColumn=t,this.className=i,this.type=n,this._lineDecorationBrand=void 0}static _equals(e,t){return e.startColumn===t.startColumn&&e.endColumn===t.endColumn&&e.className===t.className&&e.type===t.type}static equalsArr(e,t){const i=e.length;if(i!==t.length)return!1;for(let n=0;n=s||(a[l++]=new o(Math.max(1,h.startColumn-n+1),Math.min(r+1,h.endColumn-n+1),h.className,h.type));return a}static filter(e,t,i,n){if(0===e.length)return[];const s=[];let r=0;for(let a=0,l=e.length;at)continue;if(h.isEmpty()&&(0===l.type||3===l.type))continue;const d=h.startLineNumber===t?h.startColumn:i,c=h.endLineNumber===t?h.endColumn:n;s[r++]=new o(d,c,l.inlineClassName,l.type)}return s}static _typeCompare(e,t){const i=[2,0,1,3];return i[e]-i[t]}static compare(e,t){if(e.startColumn!==t.startColumn)return e.startColumn-t.startColumn;if(e.endColumn!==t.endColumn)return e.endColumn-t.endColumn;const i=o._typeCompare(e.type,t.type);return 0!==i?i:e.className!==t.className?e.className0&&this.stopOffsets[0]0&&t=e){this.stopOffsets.splice(n,0,e),this.classNames.splice(n,0,t),this.metadata.splice(n,0,i);break}this.count++}}class a{static normalize(e,t){if(0===t.length)return[];const i=[],o=new r;let s=0;for(let r=0,a=t.length;r1){const t=e.charCodeAt(l-2);n.ZG(t)&&l--}if(h>1){const t=e.charCodeAt(h-2);n.ZG(t)&&h--}const u=l-1,g=h-2;s=o.consumeLowerThan(u,s,i),0===o.count&&(s=u),o.insert(g,d,c)}return o.consumeLowerThan(1073741824,s,i),i}}},34543:(e,t,i)=>{i.d(t,{Nd:()=>d,zG:()=>l,IJ:()=>h,d1:()=>g,tF:()=>f});var n=i(71721),o=i(25085),s=i(76071),r=i(85766);class a{constructor(e,t,i,n){this.endIndex=e,this.type=t,this.metadata=i,this.containsRTL=n,this._linePartBrand=void 0}isWhitespace(){return!!(1&this.metadata)}isPseudoAfter(){return!!(4&this.metadata)}}class l{constructor(e,t){this.startOffset=e,this.endOffset=t}equals(e){return this.startOffset===e.startOffset&&this.endOffset===e.endOffset}}class h{constructor(e,t,i,n,o,s,a,l,h,d,c,u,g,m,f,p,_,v,b){this.useMonospaceOptimizations=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=i,this.continuesWithWrappedLine=n,this.isBasicASCII=o,this.containsRTL=s,this.fauxIndentLength=a,this.lineTokens=l,this.lineDecorations=h.sort(r.Kp.compare),this.tabSize=d,this.startVisibleColumn=c,this.spaceWidth=u,this.stopRenderingLineAfter=f,this.renderWhitespace="all"===p?4:"boundary"===p?1:"selection"===p?2:"trailing"===p?3:0,this.renderControlCharacters=_,this.fontLigatures=v,this.selectionsOnLine=b&&b.sort(((e,t)=>e.startOffset>>16}static getCharIndex(e){return(65535&e)>>>0}constructor(e,t){this.length=e,this._data=new Uint32Array(this.length),this._horizontalOffset=new Uint32Array(this.length)}setColumnInfo(e,t,i,n){const o=(t<<16|i<<0)>>>0;this._data[e-1]=o,this._horizontalOffset[e-1]=n}getHorizontalOffset(e){return 0===this._horizontalOffset.length?0:this._horizontalOffset[e-1]}charOffsetToPartData(e){return 0===this.length?0:e<0?this._data[0]:e>=this.length?this._data[this.length-1]:this._data[e]}getDomPosition(e){const t=this.charOffsetToPartData(e-1),i=c.getPartIndex(t),n=c.getCharIndex(t);return new d(i,n)}getColumn(e,t){return this.partDataToCharOffset(e.partIndex,t,e.charIndex)+1}partDataToCharOffset(e,t,i){if(0===this.length)return 0;const n=(e<<16|i<<0)>>>0;let o=0,s=this.length-1;for(;o+1>>1,t=this._data[e];if(t===n)return e;t>n?s=e:o=e}if(o===s)return o;const r=this._data[o],a=this._data[s];if(r===n)return o;if(a===n)return s;const l=c.getPartIndex(r),h=c.getCharIndex(r);let d;d=l!==c.getPartIndex(a)?t:c.getCharIndex(a);return i-h<=d-i?o:s}}class u{constructor(e,t,i){this._renderLineOutputBrand=void 0,this.characterMapping=e,this.containsRTL=t,this.containsForeignElements=i}}function g(e,t){if(0===e.lineContent.length){if(e.lineDecorations.length>0){t.appendString("");let i=0,n=0,o=0;for(const r of e.lineDecorations)1!==r.type&&2!==r.type||(t.appendString(''),1===r.type&&(o|=1,i++),2===r.type&&(o|=2,n++));t.appendString("");const s=new c(1,i+n);return s.setColumnInfo(1,i,0,0),new u(s,!1,o)}return t.appendString(""),new u(new c(0,0),!1,0)}return function(e,t){const i=e.fontIsMonospace,s=e.canUseHalfwidthRightwardsArrow,r=e.containsForeignElements,a=e.lineContent,l=e.len,h=e.isOverflowing,d=e.overflowingCharCount,g=e.parts,m=e.fauxIndentLength,f=e.tabSize,p=e.startVisibleColumn,b=e.containsRTL,C=e.spaceWidth,w=e.renderSpaceCharCode,y=e.renderWhitespace,S=e.renderControlCharacters,L=new c(l+1,g.length);let k=!1,D=0,N=p,x=0,E=0,I=0;b?t.appendString(''):t.appendString("");for(let n=0,c=g.length;n=m&&(i+=n)}}for(p&&(t.appendString(' style="width:'),t.appendString(String(C*e)),t.appendString('px"')),t.appendASCIICharCode(62);D1?t.appendCharCode(8594):t.appendCharCode(65515);for(let e=2;e<=i;e++)t.appendCharCode(160)}else e=2,i=1,t.appendCharCode(w),t.appendCharCode(8204);x+=e,E+=i,D>=m&&(N+=i)}}else for(t.appendASCIICharCode(62);D=m&&(N+=s)}b?I++:I=0,D>=l&&!k&&e.isPseudoAfter()&&(k=!0,L.setColumnInfo(D+1,n,x,E)),t.appendString("")}k||L.setColumnInfo(l+1,g.length-1,x,E);h&&(t.appendString(''),t.appendString(n.NC("showMore","Show more ({0})",function(e){if(e<1024)return n.NC("overflow.chars","{0} chars",e);if(e<1048576)return"".concat((e/1024).toFixed(1)," KB");return"".concat((e/1024/1024).toFixed(1)," MB")}(d))),t.appendString(""));return t.appendString(""),new u(L,b,r)}(function(e){const t=e.lineContent;let i,n,s;-1!==e.stopRenderingLineAfter&&e.stopRenderingLineAfter0&&(r[l++]=new a(n,"",0,!1));let h=n;for(let d=0,c=i.getCount();d=s){const i=!!t&&o.Ut(e.substring(h,s));r[l++]=new a(s,u,0,i);break}const g=!!t&&o.Ut(e.substring(h,c));r[l++]=new a(c,u,0,g),h=c}return r}(t,e.containsRTL,e.lineTokens,e.fauxIndentLength,s);e.renderControlCharacters&&!e.isBasicASCII&&(l=function(e,t){const i=[];let n=new a(0,"",0,!1),o=0;for(const s of t){const t=s.endIndex;for(;on.endIndex&&(n=new a(o,s.type,s.metadata,s.containsRTL),i.push(n)),n=new a(o+1,"mtkcontrol",s.metadata,!1),i.push(n))}o>n.endIndex&&(n=new a(t,s.type,s.metadata,s.containsRTL),i.push(n))}return i}(t,l));(4===e.renderWhitespace||1===e.renderWhitespace||2===e.renderWhitespace&&e.selectionsOnLine||3===e.renderWhitespace&&!e.continuesWithWrappedLine)&&(l=function(e,t,i,n){const s=e.continuesWithWrappedLine,r=e.fauxIndentLength,l=e.tabSize,h=e.startVisibleColumn,d=e.useMonospaceOptimizations,c=e.selectionsOnLine,u=1===e.renderWhitespace,g=3===e.renderWhitespace,m=e.renderSpaceWidth!==e.spaceWidth,f=[];let p=0,_=0,v=n[_].type,b=n[_].containsRTL,C=n[_].endIndex;const w=n.length;let y,S=!1,L=o.LC(t);-1===L?(S=!0,L=i,y=i):y=o.ow(t);let k=!1,D=0,N=c&&c[D],x=h%l;for(let I=r;I=N.endOffset&&(D++,N=c&&c[D]),Iy)s=!0;else if(9===e)s=!0;else if(32===e)if(u)if(k)s=!0;else{const e=I+1I),s&&g&&(s=S||I>y),s&&b&&I>=L&&I<=y&&(s=!1),k){if(!s||!d&&x>=l){if(m){for(let e=(p>0?f[p-1].endIndex:r)+1;e<=I;e++)f[p++]=new a(e,"mtkw",1,!1)}else f[p++]=new a(I,"mtkw",1,!1);x%=l}}else(I===C||s&&I>r)&&(f[p++]=new a(I,v,0,b),x%=l);for(9===e?x=l:o.K7(e)?x+=2:x++,k=s;I===C&&(_++,_0?t.charCodeAt(i-1):0,n=i>1?t.charCodeAt(i-2):0;32===e&&32!==n&&9!==n||(E=!0)}else E=!0;if(E)if(m){for(let e=(p>0?f[p-1].endIndex:r)+1;e<=i;e++)f[p++]=new a(e,"mtkw",1,!1)}else f[p++]=new a(i,"mtkw",1,!1);else f[p++]=new a(i,v,0,b);return f}(e,t,s,l));let h=0;if(e.lineDecorations.length>0){for(let t=0,i=e.lineDecorations.length;tc&&(c=e.startOffset,h[d++]=new a(c,n,u,g)),!(e.endOffset+1<=t)){c=t,h[d++]=new a(c,n+" "+e.className,u|e.metadata,g);break}c=e.endOffset+1,h[d++]=new a(c,n+" "+e.className,u|e.metadata,g),l++}t>c&&(c=t,h[d++]=new a(c,n,u,g))}const u=i[i.length-1].endIndex;if(l=50&&(o[s++]=new a(d+1,t,r,h),c=d+1,d=-1);c!==l&&(o[s++]=new a(l,t,r,h))}else o[s++]=i;n=l}else for(let r=0,l=t.length;r50){const t=e.type,r=e.metadata,h=e.containsRTL,d=Math.ceil(l/50);for(let e=1;e=8234&&e<=8238||e>=8294&&e<=8297||e>=8206&&e<=8207||1564===e)}function v(e){return e.toString(16).toUpperCase().padStart(4,"0")}},33072:(e,t,i)=>{i.d(t,{$l:()=>u,$t:()=>d,IP:()=>l,SQ:()=>g,Wx:()=>c,l_:()=>r,ud:()=>a,wA:()=>h});var n=i(75629),o=i(25085),s=i(10670);class r{constructor(e,t,i,n){this._viewportBrand=void 0,this.top=0|e,this.left=0|t,this.width=0|i,this.height=0|n}}class a{constructor(e,t){this.tabSize=e,this.data=t}}class l{constructor(e,t,i,n,o,s,r){this._viewLineDataBrand=void 0,this.content=e,this.continuesWithWrappedLine=t,this.minColumn=i,this.maxColumn=n,this.startVisibleColumn=o,this.tokens=s,this.inlineDecorations=r}}class h{constructor(e,t,i,n,o,s,r,a,l,d){this.minColumn=e,this.maxColumn=t,this.content=i,this.continuesWithWrappedLine=n,this.isBasicASCII=h.isBasicASCII(i,s),this.containsRTL=h.containsRTL(i,this.isBasicASCII,o),this.tokens=r,this.inlineDecorations=a,this.tabSize=l,this.startVisibleColumn=d}static isBasicASCII(e,t){return!t||o.$i(e)}static containsRTL(e,t,i){return!(t||!i)&&o.Ut(e)}}class d{constructor(e,t,i){this.range=e,this.inlineClassName=t,this.type=i}}class c{constructor(e,t,i,n){this.startOffset=e,this.endOffset=t,this.inlineClassName=i,this.inlineClassNameAffectsLetterSpacing=n}toInlineDecoration(e){return new d(new s.e(e,this.startOffset+1,e,this.endOffset+1),this.inlineClassName,this.inlineClassNameAffectsLetterSpacing?3:0)}}class u{constructor(e,t){this._viewModelDecorationBrand=void 0,this.range=e,this.options=t}}class g{constructor(e,t,i){this.color=e,this.zIndex=t,this.data=i}static compareByRenderingProps(e,t){return e.zIndex===t.zIndex?e.colort.color?1:0:e.zIndex-t.zIndex}static equals(e,t){return e.color===t.color&&e.zIndex===t.zIndex&&n.fS(e.data,t.data)}static equalsArr(e,t){return n.fS(e,t,g.equals)}}},70397:(e,t,i)=>{i.d(t,{EY:()=>o,Tj:()=>s});class n{constructor(e,t,i){this._colorZoneBrand=void 0,this.from=0|e,this.to=0|t,this.colorId=0|i}static compare(e,t){return e.colorId===t.colorId?e.from===t.from?e.to-t.to:e.from-t.from:e.colorId-t.colorId}}class o{constructor(e,t,i,n){this._overviewRulerZoneBrand=void 0,this.startLineNumber=e,this.endLineNumber=t,this.heightInLines=i,this.color=n,this._colorZone=null}static compare(e,t){return e.color===t.color?e.startLineNumber===t.startLineNumber?e.heightInLines===t.heightInLines?e.endLineNumber-t.endLineNumber:e.heightInLines-t.heightInLines:e.startLineNumber-t.startLineNumber:e.colori&&(g=i-m);const f=l.color;let p=this._color2Id[f];p||(p=++this._lastAssignedId,this._color2Id[f]=p,this._id2Color[p]=f);const _=new n(g-m,g+m,p);l.setColorZone(_),r.push(_)}return this._colorZonesInvalid=!1,r.sort(n.compare),r}}},19907:(e,t,i)=>{i.d(t,{$t:()=>h,CU:()=>a,Fd:()=>l,zg:()=>d});var n=i(2067),o=i(10670),s=i(33072),r=i(38092);class a{constructor(e,t,i,n,o){this.editorId=e,this.model=t,this.configuration=i,this._linesCollection=n,this._coordinatesConverter=o,this._decorationsCache=Object.create(null),this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}_clearCachedModelDecorationsResolver(){this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}dispose(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}reset(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onModelDecorationsChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onLineMappingChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}_getOrCreateViewModelDecoration(e){const t=e.id;let i=this._decorationsCache[t];if(!i){const r=e.range,a=e.options;let l;if(a.isWholeLine){const e=this._coordinatesConverter.convertModelPositionToViewPosition(new n.L(r.startLineNumber,1),0,!1,!0),t=this._coordinatesConverter.convertModelPositionToViewPosition(new n.L(r.endLineNumber,this.model.getLineMaxColumn(r.endLineNumber)),1);l=new o.e(e.lineNumber,e.column,t.lineNumber,t.column)}else l=this._coordinatesConverter.convertModelRangeToViewRange(r,1);i=new s.$l(l,a),this._decorationsCache[t]=i}return i}getMinimapDecorationsInRange(e){return this._getDecorationsInRange(e,!0,!1).decorations}getDecorationsViewportData(e){let t=null!==this._cachedModelDecorationsResolver;return t=t&&e.equalsRange(this._cachedModelDecorationsResolverViewRange),t||(this._cachedModelDecorationsResolver=this._getDecorationsInRange(e,!1,!1),this._cachedModelDecorationsResolverViewRange=e),this._cachedModelDecorationsResolver}getInlineDecorationsOnLine(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=new o.e(e,this._linesCollection.getViewLineMinColumn(e),e,this._linesCollection.getViewLineMaxColumn(e));return this._getDecorationsInRange(n,t,i).inlineDecorations[0]}_getDecorationsInRange(e,t,i){const n=this._linesCollection.getDecorationsInRange(e,this.editorId,(0,r.$J)(this.configuration.options),t,i),a=e.startLineNumber,h=e.endLineNumber,d=[];let c=0;const u=[];for(let o=a;o<=h;o++)u[o-a]=[];for(let r=0,g=n.length;r1===e))}function d(e,t){return c(e,t.range,(e=>2===e))}function c(e,t,i){for(let n=t.startLineNumber;n<=t.endLineNumber;n++){const o=e.tokenization.getLineTokens(n),s=n===t.startLineNumber,r=n===t.endLineNumber;let a=s?o.findTokenIndexAtOffset(t.startColumn-1):0;for(;at.endColumn-1)break}if(!i(o.getStandardTokenType(a)))return!1;a++}}return!0}},15176:(e,t,i)=>{i.d(t,{yy:()=>p,Dl:()=>_,YQ:()=>v});var n=i(25085),o=i(10670),s=i(16113),r=i(89599),a=i(23001),l=i(24920),h=i(44713),d=i(34304),c=i(43837),u=i(71721);const g=(0,d.yh)("IEditorCancelService"),m=new l.uy("cancellableOperation",!1,(0,u.NC)("cancellableOperation","Whether the editor runs a cancellable operation, e.g. like 'Peek References'"));(0,c.z)(g,class{constructor(){this._tokens=new WeakMap}add(e,t){let i,n=this._tokens.get(e);return n||(n=e.invokeWithinContext((e=>({key:m.bindTo(e.get(l.i6)),tokens:new h.S}))),this._tokens.set(e,n)),n.key.set(!0),i=n.tokens.push(t),()=>{i&&(i(),n.key.set(!n.tokens.isEmpty()),i=void 0)}}cancel(e){const t=this._tokens.get(e);if(!t)return;const i=t.tokens.pop();i&&(i.cancel(),t.key.set(!t.tokens.isEmpty()))}},1);class f extends s.A{constructor(e,t){super(t),this.editor=e,this._unregister=e.invokeWithinContext((t=>t.get(g).add(e,this)))}dispose(){this._unregister(),super.dispose()}}(0,a.fK)(new class extends a._l{constructor(){super({id:"editor.cancelOperation",kbOpts:{weight:100,primary:9},precondition:m})}runEditorCommand(e,t){e.get(g).cancel(t)}});class p{constructor(e,t){if(this.flags=t,0!==(1&this.flags)){const t=e.getModel();this.modelVersionId=t?n.WU("{0}#{1}",t.uri.toString(),t.getVersionId()):null}else this.modelVersionId=null;0!==(4&this.flags)?this.position=e.getPosition():this.position=null,0!==(2&this.flags)?this.selection=e.getSelection():this.selection=null,0!==(8&this.flags)?(this.scrollLeft=e.getScrollLeft(),this.scrollTop=e.getScrollTop()):(this.scrollLeft=-1,this.scrollTop=-1)}_equals(e){if(!(e instanceof p))return!1;const t=e;return this.modelVersionId===t.modelVersionId&&(this.scrollLeft===t.scrollLeft&&this.scrollTop===t.scrollTop&&(!(!this.position&&t.position||this.position&&!t.position||this.position&&t.position&&!this.position.equals(t.position))&&!(!this.selection&&t.selection||this.selection&&!t.selection||this.selection&&t.selection&&!this.selection.equalsRange(t.selection))))}validate(e){return this._equals(new p(e,this.flags))}}class _ extends f{constructor(e,t,i,n){super(e,n),this._listener=new r.SL,4&t&&this._listener.add(e.onDidChangeCursorPosition((e=>{i&&o.e.containsPosition(i,e.position)||this.cancel()}))),2&t&&this._listener.add(e.onDidChangeCursorSelection((e=>{i&&o.e.containsRange(i,e.selection)||this.cancel()}))),8&t&&this._listener.add(e.onDidScrollChange((e=>this.cancel()))),1&t&&(this._listener.add(e.onDidChangeModel((e=>this.cancel()))),this._listener.add(e.onDidChangeModelContent((e=>this.cancel()))))}dispose(){this._listener.dispose(),super.dispose()}}class v extends s.A{constructor(e,t){super(t),this._listener=e.onDidChangeContent((()=>this.cancel()))}dispose(){this._listener.dispose(),super.dispose()}}},44492:(e,t,i)=>{i.d(t,{xC:()=>D,x$:()=>N,Qq:()=>E,Qs:()=>T});var n=i(75629),o=i(16113),s=i(85108),r=i(36952),a=i(44713),l=i(63686),h=i(82682),d=i(15176),c=i(20411),u=i(2067),g=i(10670),m=i(67078),f=i(60918),p=i(93984),_=i(58028),v=i(60982);class b{constructor(e){this.value=e,this._lower=e.toLowerCase()}static toKey(e){return"string"===typeof e?e.toLowerCase():e._lower}}class C{constructor(e){if(this._set=new Set,e)for(const t of e)this.add(t)}add(e){this._set.add(b.toKey(e))}has(e){return this._set.has(b.toKey(e))}}var w=i(34304),y=i(89752),S=i(83717),L=i(68633);function k(e,t,i){const n=[],o=new C,s=e.ordered(i);for(const a of s)n.push(a),a.extensionId&&o.add(a.extensionId);const r=t.ordered(i);for(const a of r){if(a.extensionId){if(o.has(a.extensionId))continue;o.add(a.extensionId)}n.push({displayName:a.displayName,extensionId:a.extensionId,provideDocumentFormattingEdits:(e,t,i)=>a.provideDocumentRangeFormattingEdits(e,e.getFullModelRange(),t,i)})}return n}class D{static setFormatterSelector(e){return{dispose:D._selectors.unshift(e)}}static async select(e,t,i,n){if(0===e.length)return;const o=r.$.first(D._selectors);return o?await o(e,t,i,n):void 0}}async function N(e,t,i,n,o,s,r){const a=e.get(w.TG),{documentRangeFormattingEditProvider:l}=e.get(y.p),h=(0,c.CL)(t)?t.getModel():t,d=l.ordered(h),u=await D.select(d,h,n,2);u&&(o.report(u),await a.invokeFunction(x,u,t,i,s,r))}async function x(e,t,i,o,s,r){var a,l;const h=e.get(f.p),u=e.get(S.VZ),p=e.get(L.IV);let v,b;(0,c.CL)(i)?(v=i.getModel(),b=new d.Dl(i,5,void 0,s)):(v=i,b=new d.YQ(i,s));const C=[];let w=0;for(const d of(0,n._2)(o).sort(g.e.compareRangesUsingStarts))w>0&&g.e.areIntersectingOrTouching(C[w-1],d)?C[w-1]=g.e.fromPositions(C[w-1].getStartPosition(),d.getEndPosition()):w=C.push(d);const y=async e=>{var i,n;u.trace("[format][provideDocumentRangeFormattingEdits] (request)",null===(i=t.extensionId)||void 0===i?void 0:i.value,e);const o=await t.provideDocumentRangeFormattingEdits(v,e,v.getFormattingOptions(),b.token)||[];return u.trace("[format][provideDocumentRangeFormattingEdits] (response)",null===(n=t.extensionId)||void 0===n?void 0:n.value,o),o},k=(e,t)=>{if(!e.length||!t.length)return!1;const i=e.reduce(((e,t)=>g.e.plusRange(e,t.range)),e[0].range);if(!t.some((e=>g.e.intersectRanges(i,e.range))))return!1;for(const n of e)for(const e of t)if(g.e.intersectRanges(n.range,e.range))return!0;return!1},D=[],N=[];try{if("function"===typeof t.provideDocumentRangesFormattingEdits){u.trace("[format][provideDocumentRangeFormattingEdits] (request)",null===(a=t.extensionId)||void 0===a?void 0:a.value,C);const e=await t.provideDocumentRangesFormattingEdits(v,C,v.getFormattingOptions(),b.token)||[];u.trace("[format][provideDocumentRangeFormattingEdits] (response)",null===(l=t.extensionId)||void 0===l?void 0:l.value,e),N.push(e)}else{for(const e of C){if(b.token.isCancellationRequested)return!0;N.push(await y(e))}for(let e=0;e({text:e.text,range:g.e.lift(e.range),forceMoveMarkers:!0}))),(e=>{for(const{range:i}of e)if(g.e.areIntersectingOrTouching(i,t))return[new m.Y(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn)];return null}))}return p.playSignal(L.iP.format,{userGesture:r}),!0}async function E(e,t,i,n,o,s){const r=e.get(w.TG),a=e.get(y.p),l=(0,c.CL)(t)?t.getModel():t,h=k(a.documentFormattingEditProvider,a.documentRangeFormattingEditProvider,l),d=await D.select(h,l,i,1);d&&(n.report(d),await r.invokeFunction(I,d,t,i,o,s))}async function I(e,t,i,n,o,s){const r=e.get(f.p),a=e.get(L.IV);let l,h,u;(0,c.CL)(i)?(l=i.getModel(),h=new d.Dl(i,5,void 0,o)):(l=i,h=new d.YQ(i,o));try{const e=await t.provideDocumentFormattingEdits(l,l.getFormattingOptions(),h.token);if(u=await r.computeMoreMinimalEdits(l.uri,e),h.token.isCancellationRequested)return!0}finally{h.dispose()}if(!u||0===u.length)return!1;if((0,c.CL)(i))_.V.execute(i,u,2!==n),2!==n&&i.revealPositionInCenterIfOutsideViewport(i.getPosition(),1);else{const[{range:e}]=u,t=new m.Y(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn);l.pushEditOperations([t],u.map((e=>({text:e.text,range:g.e.lift(e.range),forceMoveMarkers:!0}))),(e=>{for(const{range:i}of e)if(g.e.areIntersectingOrTouching(i,t))return[new m.Y(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn)];return null}))}return a.playSignal(L.iP.format,{userGesture:s}),!0}function T(e,t,i,n,o,r,a){const l=t.onTypeFormattingEditProvider.ordered(i);return 0===l.length||l[0].autoFormatTriggerCharacters.indexOf(o)<0?Promise.resolve(void 0):Promise.resolve(l[0].provideOnTypeFormattingEdits(i,n,o,r,a)).catch(s.Cp).then((t=>e.computeMoreMinimalEdits(i.uri,t)))}D._selectors=new a.S,v.P.registerCommand("_executeFormatRangeProvider",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),n=1;n{i.d(t,{V:()=>r});var n=i(39376),o=i(10670),s=i(1135);class r{static _handleEolEdits(e,t){let i;const n=[];for(const o of t)"number"===typeof o.eol&&(i=o.eol),o.range&&"string"===typeof o.text&&n.push(o);return"number"===typeof i&&e.hasModel()&&e.getModel().pushEOL(i),n}static _isFullModelReplaceEdit(e,t){if(!e.hasModel())return!1;const i=e.getModel(),n=i.validateRange(t.range);return i.getFullModelRange().equalsRange(n)}static execute(e,t,i){i&&e.pushUndoStop();const a=s.Z.capture(e),l=r._handleEolEdits(e,t);1===l.length&&r._isFullModelReplaceEdit(e,l[0])?e.executeEdits("formatEditsCommand",l.map((e=>n.h.replace(o.e.lift(e.range),e.text)))):e.executeEdits("formatEditsCommand",l.map((e=>n.h.replaceMove(o.e.lift(e.range),e.text)))),i&&e.pushUndoStop(),a.restoreRelativeVerticalPositionOfCursor(e)}}},41551:(e,t,i)=>{i.r(t),i.d(t,{CancellationTokenSource:()=>Bl,Emitter:()=>zl,KeyCode:()=>Vl,KeyMod:()=>Wl,MarkerSeverity:()=>ql,MarkerTag:()=>Gl,Position:()=>Hl,Range:()=>Kl,Selection:()=>Ul,SelectionDirection:()=>jl,Token:()=>Zl,Uri:()=>Ql,editor:()=>Yl,languages:()=>$l});var n=i(38092),o=i(13930),s=i(29880),r=i(89599),a=i(25085),l=i(82682),h=i(86392),d=i(23001),c=i(38119),u=i(10451),g=i(56965);class m extends g.Q8{constructor(e,t,i){super(e,i.keepIdleModels||!1,i.label,t),this._foreignModuleId=i.moduleId,this._foreignModuleCreateData=i.createData||null,this._foreignModuleHost=i.host||null,this._foreignProxy=null}fhr(e,t){if(!this._foreignModuleHost||"function"!==typeof this._foreignModuleHost[e])return Promise.reject(new Error("Missing method "+e+" or missing main thread foreign host."));try{return Promise.resolve(this._foreignModuleHost[e].apply(this._foreignModuleHost,t))}catch(i){return Promise.reject(i)}}_getForeignProxy(){return this._foreignProxy||(this._foreignProxy=this._getProxy().then((e=>{const t=this._foreignModuleHost?(0,u.$E)(this._foreignModuleHost):[];return e.loadForeignModule(this._foreignModuleId,this._foreignModuleCreateData,t).then((t=>{this._foreignModuleCreateData=null;const i=(t,i)=>e.fmr(t,i),n=(e,t)=>function(){const i=Array.prototype.slice.call(arguments,0);return t(e,i)},o={};for(const e of t)o[e]=n(e,i);return o}))}))),this._foreignProxy}getProxy(){return this._getForeignProxy()}withSyncedResources(e){return this._withSyncedResources(e).then((e=>this.getProxy()))}}var f=i(15804),p=i(64864),_=i(7906),v=i(761),b=i(69311),C=i(40801),w=i(68150),y=i(22191),S=i(27127),L=i(42175),k=i(13521),D=i(52047),N=i(43471),x=i(34543),E=i(33072);function I(e){return!function(e){return Array.isArray(e)}(e)}function T(e){return"string"===typeof e}function M(e){return!T(e)}function A(e){return!e}function R(e,t){return e.ignoreCase&&t?t.toLowerCase():t}function O(e){return e.replace(/[&<>'"_]/g,"-")}function P(e,t){return new Error("".concat(e.languageId,": ").concat(t))}function F(e,t,i,n,o){let s=null;return t.replace(/\$((\$)|(#)|(\d\d?)|[sS](\d\d?)|@(\w+))/g,(function(t,r,a,l,h,d,c,u,g){return A(a)?A(l)?!A(h)&&h0;){const t=e.tokenizer[i];if(t)return t;const n=i.lastIndexOf(".");i=n<0?null:i.substr(0,n)}return null}var z,V=i(25195),W=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},H=function(e,t){return function(i,n){t(i,n,e)}};class K{static create(e,t){return this._INSTANCE.create(e,t)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e,t){if(null!==e&&e.depth>=this._maxCacheDepth)return new U(e,t);let i=U.getStackElementId(e);i.length>0&&(i+="|"),i+=t;let n=this._entries[i];return n||(n=new U(e,t),this._entries[i]=n,n)}}K._INSTANCE=new K(5);class U{constructor(e,t){this.parent=e,this.state=t,this.depth=(this.parent?this.parent.depth:0)+1}static getStackElementId(e){let t="";for(;null!==e;)t.length>0&&(t+="|"),t+=e.state,e=e.parent;return t}static _equals(e,t){for(;null!==e&&null!==t;){if(e===t)return!0;if(e.state!==t.state)return!1;e=e.parent,t=t.parent}return null===e&&null===t}equals(e){return U._equals(this,e)}push(e){return K.create(this,e)}pop(){return this.parent}popall(){let e=this;for(;e.parent;)e=e.parent;return e}switchTo(e){return K.create(this.parent,e)}}class j{constructor(e,t){this.languageId=e,this.state=t}equals(e){return this.languageId===e.languageId&&this.state.equals(e.state)}clone(){return this.state.clone()===this.state?this:new j(this.languageId,this.state)}}class q{static create(e,t){return this._INSTANCE.create(e,t)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e,t){if(null!==t)return new G(e,t);if(null!==e&&e.depth>=this._maxCacheDepth)return new G(e,t);const i=U.getStackElementId(e);let n=this._entries[i];return n||(n=new G(e,null),this._entries[i]=n,n)}}q._INSTANCE=new q(5);class G{constructor(e,t){this.stack=e,this.embeddedLanguageData=t}clone(){return(this.embeddedLanguageData?this.embeddedLanguageData.clone():null)===this.embeddedLanguageData?this:q.create(this.stack,this.embeddedLanguageData)}equals(e){return e instanceof G&&(!!this.stack.equals(e.stack)&&(null===this.embeddedLanguageData&&null===e.embeddedLanguageData||null!==this.embeddedLanguageData&&null!==e.embeddedLanguageData&&this.embeddedLanguageData.equals(e.embeddedLanguageData)))}}class Q{constructor(){this._tokens=[],this._languageId=null,this._lastTokenType=null,this._lastTokenLanguage=null}enterLanguage(e){this._languageId=e}emit(e,t){this._lastTokenType===t&&this._lastTokenLanguage===this._languageId||(this._lastTokenType=t,this._lastTokenLanguage=this._languageId,this._tokens.push(new v.WU(e,t,this._languageId)))}nestedLanguageTokenize(e,t,i,n){const o=i.languageId,s=i.state,r=v.RW.get(o);if(!r)return this.enterLanguage(o),this.emit(n,""),s;const a=r.tokenize(e,t,s);if(0!==n)for(const l of a.tokens)this._tokens.push(new v.WU(l.offset+n,l.type,l.language));else this._tokens=this._tokens.concat(a.tokens);return this._lastTokenType=null,this._lastTokenLanguage=null,this._languageId=null,a.endState}finalize(e){return new v.hG(this._tokens,e)}}class Z{constructor(e,t){this._languageService=e,this._theme=t,this._prependTokens=null,this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0}enterLanguage(e){this._currentLanguageId=this._languageService.languageIdCodec.encodeLanguageId(e)}emit(e,t){const i=1024|this._theme.match(this._currentLanguageId,t);this._lastTokenMetadata!==i&&(this._lastTokenMetadata=i,this._tokens.push(e),this._tokens.push(i))}static _merge(e,t,i){const n=null!==e?e.length:0,o=t.length,s=null!==i?i.length:0;if(0===n&&0===o&&0===s)return new Uint32Array(0);if(0===n&&0===o)return i;if(0===o&&0===s)return e;const r=new Uint32Array(n+o+s);null!==e&&r.set(e);for(let a=0;a{if(s)return;let t=!1;for(let i=0,n=e.changedLanguages.length;i{e.affectsConfiguration("editor.maxTokenizationLineLength")&&(this._maxTokenizationLineLength=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:this._languageId}))})))}getLoadStatus(){const e=[];for(const t in this._embeddedLanguages){const i=v.RW.get(t);if(i){if(i instanceof z){const t=i.getLoadStatus();!1===t.loaded&&e.push(t.promise)}}else v.RW.isResolved(t)||e.push(v.RW.getOrCreate(t))}return 0===e.length?{loaded:!0}:{loaded:!1,promise:Promise.all(e).then((e=>{}))}}getInitialState(){const e=K.create(null,this._lexer.start);return q.create(e,null)}tokenize(e,t,i){if(e.length>=this._maxTokenizationLineLength)return(0,y.Ri)(this._languageId,i);const n=new Q,o=this._tokenize(e,t,i,n);return n.finalize(o)}tokenizeEncoded(e,t,i){if(e.length>=this._maxTokenizationLineLength)return(0,y.Dy)(this._languageService.languageIdCodec.encodeLanguageId(this._languageId),i);const n=new Z(this._languageService,this._standaloneThemeService.getColorTheme().tokenTheme),o=this._tokenize(e,t,i,n);return n.finalize(o)}_tokenize(e,t,i,n){return i.embeddedLanguageData?this._nestedTokenize(e,t,i,0,n):this._myTokenize(e,t,i,0,n)}_findLeavingNestedLanguageOffset(e,t){let i=this._lexer.tokenizer[t.stack.state];if(!i&&(i=B(this._lexer,t.stack.state),!i))throw P(this._lexer,"tokenizer state is not defined: "+t.stack.state);let n=-1,o=!1;for(const s of i){if(!M(s.action)||"@pop"!==s.action.nextEmbedded)continue;o=!0;let i=s.resolveRegex(t.stack.state);const r=i.source;if("^(?:"===r.substr(0,4)&&")"===r.substr(r.length-1,1)){const e=(i.ignoreCase?"i":"")+(i.unicode?"u":"");i=new RegExp(r.substr(4,r.length-5),e)}const a=e.search(i);-1===a||0!==a&&s.matchOnlyAtLineStart||(-1===n||a0&&o.nestedLanguageTokenize(r,!1,i.embeddedLanguageData,n);const a=e.substring(s);return this._myTokenize(a,t,i,n+s,o)}_safeRuleName(e){return e?e.name:"(unknown)"}_myTokenize(e,t,i,n,o){o.enterLanguage(this._languageId);const s=e.length,r=t&&this._lexer.includeLF?e+"\n":e,a=r.length;let l=i.embeddedLanguageData,h=i.stack,d=0,c=null,u=!0;for(;u||d=a)break;u=!1;let e=this._lexer.tokenizer[_];if(!e&&(e=B(this._lexer,_),!e))throw P(this._lexer,"tokenizer state is not defined: "+_);const t=r.substr(d);for(const i of e)if((0===d||!i.matchOnlyAtLineStart)&&(v=t.match(i.resolveRegex(_)),v)){b=v[0],C=i.action;break}}if(v||(v=[""],b=""),C||(d=this._lexer.maxStack)throw P(this._lexer,"maximum tokenizer stack size reached: ["+h.state+","+h.parent.state+",...]");h=h.push(_)}else if("@pop"===C.next){if(h.depth<=1)throw P(this._lexer,"trying to pop an empty stack in rule: "+this._safeRuleName(w));h=h.pop()}else if("@popall"===C.next)h=h.popall();else{let e=F(this._lexer,C.next,b,v,_);if("@"===e[0]&&(e=e.substr(1)),!B(this._lexer,e))throw P(this._lexer,"trying to set a next state '"+e+"' that is undefined in rule: "+this._safeRuleName(w));h=h.push(e)}}C.log&&"string"===typeof C.log&&(g=this._lexer,m=this._lexer.languageId+": "+F(this._lexer,C.log,b,v,_),console.log("".concat(g.languageId,": ").concat(m)))}if(null===S)throw P(this._lexer,"lexer rule has no well-defined action in rule: "+this._safeRuleName(w));const L=i=>{const s=this._languageService.getLanguageIdByLanguageName(i)||this._languageService.getLanguageIdByMimeType(i)||i,r=this._getNestedEmbeddedLanguageData(s);if(d0)throw P(this._lexer,"groups cannot be nested: "+this._safeRuleName(w));if(v.length!==S.length+1)throw P(this._lexer,"matched number of groups does not match the number of actions in rule: "+this._safeRuleName(w));let e=0;for(let t=1;te});class X{static colorizeElement(e,t,i,n){const o=(n=n||{}).theme||"vs",s=n.mimeType||i.getAttribute("lang")||i.getAttribute("data-lang");if(!s)return console.error("Mode not detected"),Promise.resolve();const r=t.getLanguageIdByMimeType(s)||s;e.setTheme(o);const a=i.firstChild?i.firstChild.nodeValue:"";i.className+=" "+o;return this.colorize(t,a||"",r,n).then((e=>{var t;const n=null!==(t=null===J||void 0===J?void 0:J.createHTML(e))&&void 0!==t?t:e;i.innerHTML=n}),(e=>console.error(e)))}static async colorize(e,t,i,n){const o=e.languageIdCodec;let s=4;n&&"number"===typeof n.tabSize&&(s=n.tabSize),a.uS(t)&&(t=t.substr(1));const r=a.uq(t);if(!e.isRegisteredLanguageId(i))return ee(r,s,o);const l=await v.RW.getOrCreate(i);return l?function(e,t,i,n){return new Promise(((o,s)=>{const r=()=>{const a=function(e,t,i,n){let o=[],s=i.getInitialState();for(let r=0,a=e.length;r"),s=l.endState}return o.join("")}(e,t,i,n);if(i instanceof Y){const e=i.getLoadStatus();if(!1===e.loaded)return void e.promise.then(r,s)}o(a)};r()}))}(r,s,l,o):ee(r,s,o)}static colorizeLine(e,t,i,n){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:4;const s=E.wA.isBasicASCII(e,t),r=E.wA.containsRTL(e,s,i);return(0,x.tF)(new x.IJ(!1,!0,e,!1,s,r,0,n,[],o,0,0,0,0,-1,"none",!1,!1,null)).html}static colorizeModelLine(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4;const n=e.getLineContent(t);e.tokenization.forceTokenization(t);const o=e.tokenization.getLineTokens(t).inflate();return this.colorizeLine(n,e.mightContainNonBasicASCII(),e.mightContainRTL(),o,i)}}function ee(e,t,i){let n=[];const o=new Uint32Array(2);o[0]=0,o[1]=33587200;for(let s=0,r=e.length;s")}return n.join("")}var te=i(70036),ie=i(76025),ne=i(45754),oe=i(85714),se=i(33211),re=i(24219),ae=i(44713),le=i(17903),he=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},de=function(e,t){return function(i,n){t(i,n,e)}};let ce=class extends r.JT{constructor(e){super(),this._themeService=e,this._onWillCreateCodeEditor=this._register(new re.Q5),this._onCodeEditorAdd=this._register(new re.Q5),this.onCodeEditorAdd=this._onCodeEditorAdd.event,this._onCodeEditorRemove=this._register(new re.Q5),this.onCodeEditorRemove=this._onCodeEditorRemove.event,this._onWillCreateDiffEditor=this._register(new re.Q5),this._onDiffEditorAdd=this._register(new re.Q5),this.onDiffEditorAdd=this._onDiffEditorAdd.event,this._onDiffEditorRemove=this._register(new re.Q5),this.onDiffEditorRemove=this._onDiffEditorRemove.event,this._decorationOptionProviders=new Map,this._codeEditorOpenHandlers=new ae.S,this._modelProperties=new Map,this._codeEditors=Object.create(null),this._diffEditors=Object.create(null),this._globalStyleSheet=null}willCreateCodeEditor(){this._onWillCreateCodeEditor.fire()}addCodeEditor(e){this._codeEditors[e.getId()]=e,this._onCodeEditorAdd.fire(e)}removeCodeEditor(e){delete this._codeEditors[e.getId()]&&this._onCodeEditorRemove.fire(e)}listCodeEditors(){return Object.keys(this._codeEditors).map((e=>this._codeEditors[e]))}willCreateDiffEditor(){this._onWillCreateDiffEditor.fire()}addDiffEditor(e){this._diffEditors[e.getId()]=e,this._onDiffEditorAdd.fire(e)}listDiffEditors(){return Object.keys(this._diffEditors).map((e=>this._diffEditors[e]))}getFocusedCodeEditor(){let e=null;const t=this.listCodeEditors();for(const i of t){if(i.hasTextFocus())return i;i.hasWidgetFocus()&&(e=i)}return e}removeDecorationType(e){const t=this._decorationOptionProviders.get(e);t&&(t.refCount--,t.refCount<=0&&(this._decorationOptionProviders.delete(e),t.dispose(),this.listCodeEditors().forEach((t=>t.removeDecorationsByType(e)))))}setModelProperty(e,t,i){const n=e.toString();let o;this._modelProperties.has(n)?o=this._modelProperties.get(n):(o=new Map,this._modelProperties.set(n,o)),o.set(t,i)}getModelProperty(e,t){const i=e.toString();if(this._modelProperties.has(i)){return this._modelProperties.get(i).get(t)}}async openCodeEditor(e,t,i){for(const n of this._codeEditorOpenHandlers){const o=await n(e,t,i);if(null!==o)return o}return null}registerCodeEditorOpenHandler(e){const t=this._codeEditorOpenHandlers.unshift(e);return(0,r.OF)(t)}};ce=he([de(0,le.XE)],ce);var ue=i(24920),ge=i(43837),me=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},fe=function(e,t){return function(i,n){t(i,n,e)}};let pe=class extends ce{constructor(e,t){super(t),this._register(this.onCodeEditorAdd((()=>this._checkContextKey()))),this._register(this.onCodeEditorRemove((()=>this._checkContextKey()))),this._editorIsOpen=e.createKey("editorIsOpen",!1),this._activeCodeEditor=null,this._register(this.registerCodeEditorOpenHandler((async(e,t,i)=>t?this.doOpenEditor(t,e):null)))}_checkContextKey(){let e=!1;for(const t of this.listCodeEditors())if(!t.isSimpleWidget){e=!0;break}this._editorIsOpen.set(e)}setActiveCodeEditor(e){this._activeCodeEditor=e}getActiveCodeEditor(){return this._activeCodeEditor}doOpenEditor(e,t){if(!this.findModel(e,t.resource)){if(t.resource){const i=t.resource.scheme;if(i===se.lg.http||i===se.lg.https)return(0,oe.V3)(t.resource.toString()),e}return null}const i=t.options?t.options.selection:null;if(i)if("number"===typeof i.endLineNumber&&"number"===typeof i.endColumn)e.setSelection(i),e.revealRangeInCenter(i,1);else{const t={lineNumber:i.startLineNumber,column:i.startColumn};e.setPosition(t),e.revealPositionInCenter(t,1)}return e}findModel(e,t){const i=e.getModel();return i&&i.uri.toString()!==t.toString()?null:i}};pe=me([fe(0,ue.i6),fe(1,le.XE)],pe),(0,ge.z)(c.$,pe,0);var _e=i(75629),ve=i(34304);const be=(0,ve.yh)("layoutService");var Ce=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},we=function(e,t){return function(i,n){t(i,n,e)}};let ye=class{get mainContainer(){var e,t;return null!==(t=null===(e=(0,_e.Xh)(this._codeEditorService.listCodeEditors()))||void 0===e?void 0:e.getContainerDomNode())&&void 0!==t?t:s.E.document.body}get activeContainer(){var e,t;const i=null!==(e=this._codeEditorService.getFocusedCodeEditor())&&void 0!==e?e:this._codeEditorService.getActiveCodeEditor();return null!==(t=null===i||void 0===i?void 0:i.getContainerDomNode())&&void 0!==t?t:this.mainContainer}get mainContainerDimension(){return oe.D6(this.mainContainer)}get activeContainerDimension(){return oe.D6(this.activeContainer)}get containers(){return(0,_e.kX)(this._codeEditorService.listCodeEditors().map((e=>e.getContainerDomNode())))}getContainer(){return this.activeContainer}whenContainerStylesLoaded(){}focus(){var e;null===(e=this._codeEditorService.getFocusedCodeEditor())||void 0===e||e.focus()}constructor(e){this._codeEditorService=e,this.onDidLayoutMainContainer=re.ju.None,this.onDidLayoutActiveContainer=re.ju.None,this.onDidLayoutContainer=re.ju.None,this.onDidChangeActiveContainer=re.ju.None,this.onDidAddContainer=re.ju.None,this.mainContainerOffset={top:0,quickPickTop:0},this.activeContainerOffset={top:0,quickPickTop:0}}};ye=Ce([we(0,c.$)],ye);let Se=class extends ye{get mainContainer(){return this._container}constructor(e,t){super(t),this._container=e}};Se=Ce([we(1,c.$)],Se),(0,ge.z)(be,ye,1);var Le=i(85108),ke=i(6225),De=i(71721),Ne=i(78025),xe=i(13200),Ee=i(96484),Ie=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Te=function(e,t){return function(i,n){t(i,n,e)}};const Me=!1;function Ae(e){return e.scheme===se.lg.file?e.fsPath:e.path}let Re=0;class Oe{constructor(e,t,i,n,o,s,r){this.id=++Re,this.type=0,this.actual=e,this.label=e.label,this.confirmBeforeUndo=e.confirmBeforeUndo||!1,this.resourceLabel=t,this.strResource=i,this.resourceLabels=[this.resourceLabel],this.strResources=[this.strResource],this.groupId=n,this.groupOrder=o,this.sourceId=s,this.sourceOrder=r,this.isValid=!0}setValid(e){this.isValid=e}toString(){return"[id:".concat(this.id,"] [group:").concat(this.groupId,"] [").concat(this.isValid?" VALID":"INVALID","] ").concat(this.actual.constructor.name," - ").concat(this.actual)}}class Pe{constructor(e,t){this.resourceLabel=e,this.reason=t}}class Fe{constructor(){this.elements=new Map}createMessage(){const e=[],t=[];for(const[,n]of this.elements){(0===n.reason?e:t).push(n.resourceLabel)}const i=[];return e.length>0&&i.push(De.NC({key:"externalRemoval",comment:["{0} is a list of filenames"]},"The following files have been closed and modified on disk: {0}.",e.join(", "))),t.length>0&&i.push(De.NC({key:"noParallelUniverses",comment:["{0} is a list of filenames"]},"The following files have been modified in an incompatible way: {0}.",t.join(", "))),i.join("\n")}get size(){return this.elements.size}has(e){return this.elements.has(e)}set(e,t){this.elements.set(e,t)}delete(e){return this.elements.delete(e)}}class Be{constructor(e,t,i,n,o,s,r){this.id=++Re,this.type=1,this.actual=e,this.label=e.label,this.confirmBeforeUndo=e.confirmBeforeUndo||!1,this.resourceLabels=t,this.strResources=i,this.groupId=n,this.groupOrder=o,this.sourceId=s,this.sourceOrder=r,this.removedResources=null,this.invalidatedResources=null}canSplit(){return"function"===typeof this.actual.split}removeResource(e,t,i){this.removedResources||(this.removedResources=new Fe),this.removedResources.has(t)||this.removedResources.set(t,new Pe(e,i))}setValid(e,t,i){i?this.invalidatedResources&&(this.invalidatedResources.delete(t),0===this.invalidatedResources.size&&(this.invalidatedResources=null)):(this.invalidatedResources||(this.invalidatedResources=new Fe),this.invalidatedResources.has(t)||this.invalidatedResources.set(t,new Pe(e,0)))}toString(){return"[id:".concat(this.id,"] [group:").concat(this.groupId,"] [").concat(this.invalidatedResources?"INVALID":" VALID","] ").concat(this.actual.constructor.name," - ").concat(this.actual)}}class ze{constructor(e,t){this.resourceLabel=e,this.strResource=t,this._past=[],this._future=[],this.locked=!1,this.versionId=1}dispose(){for(const e of this._past)1===e.type&&e.removeResource(this.resourceLabel,this.strResource,0);for(const e of this._future)1===e.type&&e.removeResource(this.resourceLabel,this.strResource,0);this.versionId++}toString(){const e=[];e.push("* ".concat(this.strResource,":"));for(let t=0;t=0;t--)e.push(" * [REDO] ".concat(this._future[t]));return e.join("\n")}flushAllElements(){this._past=[],this._future=[],this.versionId++}_setElementValidFlag(e,t){1===e.type?e.setValid(this.resourceLabel,this.strResource,t):e.setValid(t)}setElementsValidFlag(e,t){for(const i of this._past)t(i.actual)&&this._setElementValidFlag(i,e);for(const i of this._future)t(i.actual)&&this._setElementValidFlag(i,e)}pushElement(e){for(const t of this._future)1===t.type&&t.removeResource(this.resourceLabel,this.strResource,1);this._future=[],this._past.push(e),this.versionId++}createSnapshot(e){const t=[];for(let i=0,n=this._past.length;i=0;i--)t.push(this._future[i].id);return new Ee.YO(e,t)}restoreSnapshot(e){const t=e.elements.length;let i=!0,n=0,o=-1;for(let r=0,a=this._past.length;r=t||s.id!==e.elements[n])&&(i=!1,o=0),i||1!==s.type||s.removeResource(this.resourceLabel,this.strResource,0)}let s=-1;for(let r=this._future.length-1;r>=0;r--,n++){const o=this._future[r];i&&(n>=t||o.id!==e.elements[n])&&(i=!1,s=r),i||1!==o.type||o.removeResource(this.resourceLabel,this.strResource,0)}-1!==o&&(this._past=this._past.slice(0,o)),-1!==s&&(this._future=this._future.slice(s+1)),this.versionId++}getElements(){const e=[],t=[];for(const i of this._past)e.push(i.actual);for(const i of this._future)t.push(i.actual);return{past:e,future:t}}getClosestPastElement(){return 0===this._past.length?null:this._past[this._past.length-1]}getSecondClosestPastElement(){return this._past.length<2?null:this._past[this._past.length-2]}getClosestFutureElement(){return 0===this._future.length?null:this._future[this._future.length-1]}hasPastElements(){return this._past.length>0}hasFutureElements(){return this._future.length>0}splitPastWorkspaceElement(e,t){for(let i=this._past.length-1;i>=0;i--)if(this._past[i]===e){t.has(this.strResource)?this._past[i]=t.get(this.strResource):this._past.splice(i,1);break}this.versionId++}splitFutureWorkspaceElement(e,t){for(let i=this._future.length-1;i>=0;i--)if(this._future[i]===e){t.has(this.strResource)?this._future[i]=t.get(this.strResource):this._future.splice(i,1);break}this.versionId++}moveBackward(e){this._past.pop(),this._future.push(e),this.versionId++}moveForward(e){this._future.pop(),this._past.push(e),this.versionId++}}class Ve{constructor(e){this.editStacks=e,this._versionIds=[];for(let t=0,i=this.editStacks.length;t1&&void 0!==arguments[1]?arguments[1]:Ee.Xt.None,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Ee.gJ.None;if(0===e.type){const n=Ae(e.resource),o=this.getUriComparisonKey(e.resource);this._pushElement(new Oe(e,n,o,t.id,t.nextOrder(),i.id,i.nextOrder()))}else{const n=new Set,o=[],s=[];for(const t of e.resources){const e=Ae(t),i=this.getUriComparisonKey(t);n.has(i)||(n.add(i),o.push(e),s.push(i))}1===o.length?this._pushElement(new Oe(e,o[0],s[0],t.id,t.nextOrder(),i.id,i.nextOrder())):this._pushElement(new Be(e,o,s,t.id,t.nextOrder(),i.id,i.nextOrder()))}}_pushElement(e){for(let t=0,i=e.strResources.length;tt.sourceOrder)&&(t=s,i=n))}return[t,i]}canUndo(e){if(e instanceof Ee.gJ){const[,t]=this._findClosestUndoElementWithSource(e.id);return!!t}const t=this.getUriComparisonKey(e);if(this._editStacks.has(t)){return this._editStacks.get(t).hasPastElements()}return!1}_onError(e,t){(0,Le.dL)(e);for(const i of t.strResources)this.removeElements(i);this._notificationService.error(e)}_acquireLocks(e){for(const t of e.editStacks)if(t.locked)throw new Error("Cannot acquire edit stack lock");for(const t of e.editStacks)t.locked=!0;return()=>{for(const t of e.editStacks)t.locked=!1}}_safeInvokeWithLocks(e,t,i,n,o){const s=this._acquireLocks(i);let r;try{r=t()}catch(a){return s(),n.dispose(),this._onError(a,e)}return r?r.then((()=>(s(),n.dispose(),o())),(t=>(s(),n.dispose(),this._onError(t,e)))):(s(),n.dispose(),o())}async _invokeWorkspacePrepare(e){if("undefined"===typeof e.actual.prepareUndoRedo)return r.JT.None;const t=e.actual.prepareUndoRedo();return"undefined"===typeof t?r.JT.None:t}_invokeResourcePrepare(e,t){if(1!==e.actual.type||"undefined"===typeof e.actual.prepareUndoRedo)return t(r.JT.None);const i=e.actual.prepareUndoRedo();return i?(0,r.Wf)(i)?t(i):i.then((e=>t(e))):t(r.JT.None)}_getAffectedEditStacks(e){const t=[];for(const i of e.strResources)t.push(this._editStacks.get(i)||We);return new Ve(t)}_tryToSplitAndUndo(e,t,i,n){if(t.canSplit())return this._splitPastWorkspaceElement(t,i),this._notificationService.warn(n),new Ke(this._undo(e,0,!0));for(const o of t.strResources)this.removeElements(o);return this._notificationService.warn(n),new Ke}_checkWorkspaceUndo(e,t,i,n){if(t.removedResources)return this._tryToSplitAndUndo(e,t,t.removedResources,De.NC({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.removedResources.createMessage()));if(n&&t.invalidatedResources)return this._tryToSplitAndUndo(e,t,t.invalidatedResources,De.NC({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.invalidatedResources.createMessage()));const o=[];for(const r of i.editStacks)r.getClosestPastElement()!==t&&o.push(r.resourceLabel);if(o.length>0)return this._tryToSplitAndUndo(e,t,null,De.NC({key:"cannotWorkspaceUndoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because changes were made to {1}",t.label,o.join(", ")));const s=[];for(const r of i.editStacks)r.locked&&s.push(r.resourceLabel);return s.length>0?this._tryToSplitAndUndo(e,t,null,De.NC({key:"cannotWorkspaceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,s.join(", "))):i.isValid()?null:this._tryToSplitAndUndo(e,t,null,De.NC({key:"cannotWorkspaceUndoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}_workspaceUndo(e,t,i){const n=this._getAffectedEditStacks(t),o=this._checkWorkspaceUndo(e,t,n,!1);return o?o.returnValue:this._confirmAndExecuteWorkspaceUndo(e,t,n,i)}_isPartOfUndoGroup(e){if(!e.groupId)return!1;for(const[,t]of this._editStacks){const i=t.getClosestPastElement();if(i){if(i===e){const i=t.getSecondClosestPastElement();if(i&&i.groupId===e.groupId)return!0}if(i.groupId===e.groupId)return!0}}return!1}async _confirmAndExecuteWorkspaceUndo(e,t,i,n){if(t.canSplit()&&!this._isPartOfUndoGroup(t)){let o;!function(e){e[e.All=0]="All",e[e.This=1]="This",e[e.Cancel=2]="Cancel"}(o||(o={}));const{result:s}=await this._dialogService.prompt({type:ke.Z.Info,message:De.NC("confirmWorkspace","Would you like to undo '{0}' across all files?",t.label),buttons:[{label:De.NC({key:"ok",comment:["{0} denotes a number that is > 1, && denotes a mnemonic"]},"&&Undo in {0} Files",i.editStacks.length),run:()=>o.All},{label:De.NC({key:"nok",comment:["&& denotes a mnemonic"]},"Undo this &&File"),run:()=>o.This}],cancelButton:{run:()=>o.Cancel}});if(s===o.Cancel)return;if(s===o.This)return this._splitPastWorkspaceElement(t,null),this._undo(e,0,!0);const r=this._checkWorkspaceUndo(e,t,i,!1);if(r)return r.returnValue;n=!0}let o;try{o=await this._invokeWorkspacePrepare(t)}catch(r){return this._onError(r,t)}const s=this._checkWorkspaceUndo(e,t,i,!0);if(s)return o.dispose(),s.returnValue;for(const a of i.editStacks)a.moveBackward(t);return this._safeInvokeWithLocks(t,(()=>t.actual.undo()),i,o,(()=>this._continueUndoInGroup(t.groupId,n)))}_resourceUndo(e,t,i){if(t.isValid){if(!e.locked)return this._invokeResourcePrepare(t,(n=>(e.moveBackward(t),this._safeInvokeWithLocks(t,(()=>t.actual.undo()),new Ve([e]),n,(()=>this._continueUndoInGroup(t.groupId,i))))));{const e=De.NC({key:"cannotResourceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not undo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.warn(e)}}else e.flushAllElements()}_findClosestUndoElementInGroup(e){if(!e)return[null,null];let t=null,i=null;for(const[n,o]of this._editStacks){const s=o.getClosestPastElement();s&&(s.groupId===e&&(!t||s.groupOrder>t.groupOrder)&&(t=s,i=n))}return[t,i]}_continueUndoInGroup(e,t){if(!e)return;const[,i]=this._findClosestUndoElementInGroup(e);return i?this._undo(i,0,t):void 0}undo(e){if(e instanceof Ee.gJ){const[,t]=this._findClosestUndoElementWithSource(e.id);return t?this._undo(t,e.id,!1):void 0}return"string"===typeof e?this._undo(e,0,!1):this._undo(this.getUriComparisonKey(e),0,!1)}_undo(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2?arguments[2]:void 0;if(!this._editStacks.has(e))return;const n=this._editStacks.get(e),o=n.getClosestPastElement();if(!o)return;if(o.groupId){const[e,n]=this._findClosestUndoElementInGroup(o.groupId);if(o!==e&&n)return this._undo(n,t,i)}if((o.sourceId!==t||o.confirmBeforeUndo)&&!i)return this._confirmAndContinueUndo(e,t,o);try{return 1===o.type?this._workspaceUndo(e,o,i):this._resourceUndo(n,o,i)}finally{Me}}async _confirmAndContinueUndo(e,t,i){if((await this._dialogService.confirm({message:De.NC("confirmDifferentSource","Would you like to undo '{0}'?",i.label),primaryButton:De.NC({key:"confirmDifferentSource.yes",comment:["&& denotes a mnemonic"]},"&&Yes"),cancelButton:De.NC("confirmDifferentSource.no","No")})).confirmed)return this._undo(e,t,!0)}_findClosestRedoElementWithSource(e){if(!e)return[null,null];let t=null,i=null;for(const[n,o]of this._editStacks){const s=o.getClosestFutureElement();s&&(s.sourceId===e&&(!t||s.sourceOrder0)return this._tryToSplitAndRedo(e,t,null,De.NC({key:"cannotWorkspaceRedoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because changes were made to {1}",t.label,o.join(", ")));const s=[];for(const r of i.editStacks)r.locked&&s.push(r.resourceLabel);return s.length>0?this._tryToSplitAndRedo(e,t,null,De.NC({key:"cannotWorkspaceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,s.join(", "))):i.isValid()?null:this._tryToSplitAndRedo(e,t,null,De.NC({key:"cannotWorkspaceRedoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}_workspaceRedo(e,t){const i=this._getAffectedEditStacks(t),n=this._checkWorkspaceRedo(e,t,i,!1);return n?n.returnValue:this._executeWorkspaceRedo(e,t,i)}async _executeWorkspaceRedo(e,t,i){let n;try{n=await this._invokeWorkspacePrepare(t)}catch(s){return this._onError(s,t)}const o=this._checkWorkspaceRedo(e,t,i,!0);if(o)return n.dispose(),o.returnValue;for(const r of i.editStacks)r.moveForward(t);return this._safeInvokeWithLocks(t,(()=>t.actual.redo()),i,n,(()=>this._continueRedoInGroup(t.groupId)))}_resourceRedo(e,t){if(t.isValid){if(!e.locked)return this._invokeResourcePrepare(t,(i=>(e.moveForward(t),this._safeInvokeWithLocks(t,(()=>t.actual.redo()),new Ve([e]),i,(()=>this._continueRedoInGroup(t.groupId))))));{const e=De.NC({key:"cannotResourceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not redo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.warn(e)}}else e.flushAllElements()}_findClosestRedoElementInGroup(e){if(!e)return[null,null];let t=null,i=null;for(const[n,o]of this._editStacks){const s=o.getClosestFutureElement();s&&(s.groupId===e&&(!t||s.groupOrder=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Qe=function(e,t){return function(i,n){t(i,n,e)}};let Ze=class extends r.JT{constructor(e,t,i){super(),this._themeService=e,this._logService=t,this._languageService=i,this._caches=new WeakMap,this._register(this._themeService.onDidColorThemeChange((()=>{this._caches=new WeakMap})))}getStyling(e){return this._caches.has(e)||this._caches.set(e,new je.$(e.getLegend(),this._themeService,this._languageService,this._logService)),this._caches.get(e)}};Ze=Ge([Qe(0,le.XE),Qe(1,Ue.VZ),Qe(2,b.O)],Ze),(0,ge.z)(qe.s,Ze,1);var Ye=i(6440);function $e(e){return"string"!==typeof e&&(Array.isArray(e)?e.every($e):!!e.exclusive)}class Je{constructor(e,t,i,n){this.uri=e,this.languageId=t,this.notebookUri=i,this.notebookType=n}equals(e){var t,i;return this.notebookType===e.notebookType&&this.languageId===e.languageId&&this.uri.toString()===e.uri.toString()&&(null===(t=this.notebookUri)||void 0===t?void 0:t.toString())===(null===(i=e.notebookUri)||void 0===i?void 0:i.toString())}}class Xe{constructor(e){this._notebookInfoResolver=e,this._clock=0,this._entries=[],this._onDidChange=new re.Q5,this.onDidChange=this._onDidChange.event}register(e,t){let i={selector:e,provider:t,_score:-1,_time:this._clock++};return this._entries.push(i),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),(0,r.OF)((()=>{if(i){const e=this._entries.indexOf(i);e>=0&&(this._entries.splice(e,1),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),i=void 0)}}))}has(e){return this.all(e).length>0}all(e){if(!e)return[];this._updateScores(e);const t=[];for(const i of this._entries)i._score>0&&t.push(i.provider);return t}ordered(e){const t=[];return this._orderedForEach(e,(e=>t.push(e.provider))),t}orderedGroups(e){const t=[];let i,n;return this._orderedForEach(e,(e=>{i&&n===e._score?i.push(e.provider):(n=e._score,i=[e.provider],t.push(i))})),t}_orderedForEach(e,t){this._updateScores(e);for(const i of this._entries)i._score>0&&t(i)}_updateScores(e){var t,i;const n=null===(t=this._notebookInfoResolver)||void 0===t?void 0:t.call(this,e.uri),o=n?new Je(e.uri,e.getLanguageId(),n.uri,n.type):new Je(e.uri,e.getLanguageId(),void 0,void 0);if(!(null===(i=this._lastCandidate)||void 0===i?void 0:i.equals(o))){this._lastCandidate=o;for(const t of this._entries)if(t._score=(0,Ye.G)(t.selector,o.uri,o.languageId,(0,S.pt)(e),o.notebookUri,o.notebookType),$e(t.selector)&&t._score>0){for(const e of this._entries)e._score=0;t._score=1e3;break}this._entries.sort(Xe._compareByScoreAndTime)}}static _compareByScoreAndTime(e,t){return e._scoret._score?-1:et(e.selector)&&!et(t.selector)?1:!et(e.selector)&&et(t.selector)?-1:e._timet._time?-1:0}}function et(e){return"string"!==typeof e&&(Array.isArray(e)?e.some(et):Boolean(e.isBuiltin))}var tt=i(89752);(0,ge.z)(tt.p,class{constructor(){this.referenceProvider=new Xe(this._score.bind(this)),this.renameProvider=new Xe(this._score.bind(this)),this.newSymbolNamesProvider=new Xe(this._score.bind(this)),this.codeActionProvider=new Xe(this._score.bind(this)),this.definitionProvider=new Xe(this._score.bind(this)),this.typeDefinitionProvider=new Xe(this._score.bind(this)),this.declarationProvider=new Xe(this._score.bind(this)),this.implementationProvider=new Xe(this._score.bind(this)),this.documentSymbolProvider=new Xe(this._score.bind(this)),this.inlayHintsProvider=new Xe(this._score.bind(this)),this.colorProvider=new Xe(this._score.bind(this)),this.codeLensProvider=new Xe(this._score.bind(this)),this.documentFormattingEditProvider=new Xe(this._score.bind(this)),this.documentRangeFormattingEditProvider=new Xe(this._score.bind(this)),this.onTypeFormattingEditProvider=new Xe(this._score.bind(this)),this.signatureHelpProvider=new Xe(this._score.bind(this)),this.hoverProvider=new Xe(this._score.bind(this)),this.documentHighlightProvider=new Xe(this._score.bind(this)),this.multiDocumentHighlightProvider=new Xe(this._score.bind(this)),this.selectionRangeProvider=new Xe(this._score.bind(this)),this.foldingRangeProvider=new Xe(this._score.bind(this)),this.linkProvider=new Xe(this._score.bind(this)),this.inlineCompletionsProvider=new Xe(this._score.bind(this)),this.inlineEditProvider=new Xe(this._score.bind(this)),this.completionProvider=new Xe(this._score.bind(this)),this.linkedEditingRangeProvider=new Xe(this._score.bind(this)),this.documentRangeSemanticTokensProvider=new Xe(this._score.bind(this)),this.documentSemanticTokensProvider=new Xe(this._score.bind(this)),this.documentOnDropEditProvider=new Xe(this._score.bind(this)),this.documentPasteEditProvider=new Xe(this._score.bind(this))}_score(e){var t;return null===(t=this._notebookTypeResolver)||void 0===t?void 0:t.call(this,e)}},1);var it=i(87701),nt=i(8695),ot=i(58868),st=i(46765),rt=i(89883),at=i(74812),lt=i(51460),ht=i(36281),dt=i(32936),ct=i(21511),ut=i(46385),gt=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},mt=function(e,t){return function(i,n){t(i,n,e)}};const ft=oe.$;let pt=class extends at.${get _targetWindow(){return oe.Jj(this._target.targetElements[0])}get _targetDocumentElement(){return oe.Jj(this._target.targetElements[0]).document.documentElement}get isDisposed(){return this._isDisposed}get isMouseIn(){return this._lockMouseTracker.isMouseIn}get domNode(){return this._hover.containerDomNode}get onDispose(){return this._onDispose.event}get onRequestLayout(){return this._onRequestLayout.event}get anchor(){return 2===this._hoverPosition?0:1}get x(){return this._x}get y(){return this._y}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked!==e&&(this._isLocked=e,this._hoverContainer.classList.toggle("locked",this._isLocked))}constructor(e,t,i,o,s,a){var l,h,d,c,u,g,m,f;super(),this._keybindingService=t,this._configurationService=i,this._openerService=o,this._instantiationService=s,this._accessibilityService=a,this._messageListeners=new r.SL,this._isDisposed=!1,this._forcePosition=!1,this._x=0,this._y=0,this._isLocked=!1,this._enableFocusTraps=!1,this._addedFocusTrap=!1,this._onDispose=this._register(new re.Q5),this._onRequestLayout=this._register(new re.Q5),this._linkHandler=e.linkHandler||(t=>(0,ht.N)(this._openerService,t,(0,dt.Fr)(e.content)?e.content.isTrusted:void 0)),this._target="targetElements"in e.target?e.target:new vt(e.target),this._hoverPointer=(null===(l=e.appearance)||void 0===l?void 0:l.showPointer)?ft("div.workbench-hover-pointer"):void 0,this._hover=this._register(new rt.c8),this._hover.containerDomNode.classList.add("workbench-hover","fadeIn"),(null===(h=e.appearance)||void 0===h?void 0:h.compact)&&this._hover.containerDomNode.classList.add("workbench-hover","compact"),(null===(d=e.appearance)||void 0===d?void 0:d.skipFadeInAnimation)&&this._hover.containerDomNode.classList.add("skip-fade-in"),e.additionalClasses&&this._hover.containerDomNode.classList.add(...e.additionalClasses),(null===(c=e.position)||void 0===c?void 0:c.forcePosition)&&(this._forcePosition=!0),e.trapFocus&&(this._enableFocusTraps=!0),this._hoverPosition=null!==(g=null===(u=e.position)||void 0===u?void 0:u.hoverPosition)&&void 0!==g?g:3,this.onmousedown(this._hover.containerDomNode,(e=>e.stopPropagation())),this.onkeydown(this._hover.containerDomNode,(e=>{e.equals(9)&&this.dispose()})),this._register(oe.nm(this._targetWindow,"blur",(()=>this.dispose())));const p=ft("div.hover-row.markdown-hover"),_=ft("div.hover-contents");if("string"===typeof e.content)_.textContent=e.content,_.style.whiteSpace="pre-wrap";else if(e.content instanceof HTMLElement)_.appendChild(e.content),_.classList.add("html-hover-contents");else{const t=e.content,i=this._instantiationService.createInstance(ht.$,{codeBlockFontFamily:this._configurationService.getValue("editor").fontFamily||n.hL.fontFamily}),{element:o}=i.render(t,{actionHandler:{callback:e=>this._linkHandler(e),disposables:this._messageListeners},asyncRenderCallback:()=>{_.classList.add("code-hover-contents"),this.layout(),this._onRequestLayout.fire()}});_.appendChild(o)}if(p.appendChild(_),this._hover.contentsDomNode.appendChild(p),e.actions&&e.actions.length>0){const t=ft("div.hover-row.status-bar"),i=ft("div.actions");e.actions.forEach((e=>{const t=this._keybindingService.lookupKeybinding(e.commandId),n=t?t.getLabel():null;rt.Sr.render(i,{label:e.label,commandId:e.commandId,run:t=>{e.run(t),this.dispose()},iconClass:e.iconClass},n)})),t.appendChild(i),this._hover.containerDomNode.appendChild(t)}let v;if(this._hoverContainer=ft("div.workbench-hover-container"),this._hoverPointer&&this._hoverContainer.appendChild(this._hoverPointer),this._hoverContainer.appendChild(this._hover.containerDomNode),v=!(e.actions&&e.actions.length>0)&&(void 0===(null===(m=e.persistence)||void 0===m?void 0:m.hideOnHover)?"string"===typeof e.content||(0,dt.Fr)(e.content)&&!e.content.value.includes("](")&&!e.content.value.includes(""):e.persistence.hideOnHover),v&&(null===(f=e.appearance)||void 0===f?void 0:f.showHoverHint)){const e=ft("div.hover-row.status-bar"),t=ft("div.info");t.textContent=(0,De.NC)("hoverhint","Hold {0} key to mouse over",ct.dz?"Option":"Alt"),e.appendChild(t),this._hover.containerDomNode.appendChild(e)}const b=[...this._target.targetElements];v||b.push(this._hoverContainer);const C=this._register(new _t(b));if(this._register(C.onMouseOut((()=>{this._isLocked||this.dispose()}))),v){const e=[...this._target.targetElements,this._hoverContainer];this._lockMouseTracker=this._register(new _t(e)),this._register(this._lockMouseTracker.onMouseOut((()=>{this._isLocked||this.dispose()})))}else this._lockMouseTracker=C}addFocusTrap(){if(!this._enableFocusTraps||this._addedFocusTrap)return;this._addedFocusTrap=!0;const e=this._hover.containerDomNode,t=this.findLastFocusableChild(this._hover.containerDomNode);if(t){const i=oe.Ce(this._hoverContainer,ft("div")),n=oe.R3(this._hoverContainer,ft("div"));i.tabIndex=0,n.tabIndex=0,this._register(oe.nm(n,"focus",(t=>{e.focus(),t.preventDefault()}))),this._register(oe.nm(i,"focus",(e=>{t.focus(),e.preventDefault()})))}}findLastFocusableChild(e){if(e.hasChildNodes())for(let t=0;t=0)return e}const n=this.findLastFocusableChild(i);if(n)return n}}render(e){var t;e.appendChild(this._hoverContainer);const i=this._hoverContainer.contains(this._hoverContainer.ownerDocument.activeElement)&&(0,rt.uX)(!0===this._configurationService.getValue("accessibility.verbosity.hover")&&this._accessibilityService.isScreenReaderOptimized(),null===(t=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))||void 0===t?void 0:t.getAriaLabel());i&&(0,te.i7)(i),this.layout(),this.addFocusTrap()}layout(){this._hover.containerDomNode.classList.remove("right-aligned"),this._hover.contentsDomNode.style.maxHeight="";const e=this._target.targetElements.map((e=>(e=>{const t=oe.I8(e),i=e.getBoundingClientRect();return{top:i.top*t,bottom:i.bottom*t,right:i.right*t,left:i.left*t}})(e))),{top:t,right:i,bottom:n,left:o}=e[0],s=i-o,r=n-t,a={top:t,right:i,bottom:n,left:o,width:s,height:r,center:{x:o+s/2,y:t+r/2}};if(this.adjustHorizontalHoverPosition(a),this.adjustVerticalHoverPosition(a),this.adjustHoverMaxHeight(a),this._hoverContainer.style.padding="",this._hoverContainer.style.margin="",this._hoverPointer){switch(this._hoverPosition){case 1:a.left+=3,a.right+=3,this._hoverContainer.style.paddingLeft="".concat(3,"px"),this._hoverContainer.style.marginLeft="".concat(-3,"px");break;case 0:a.left-=3,a.right-=3,this._hoverContainer.style.paddingRight="".concat(3,"px"),this._hoverContainer.style.marginRight="".concat(-3,"px");break;case 2:a.top+=3,a.bottom+=3,this._hoverContainer.style.paddingTop="".concat(3,"px"),this._hoverContainer.style.marginTop="".concat(-3,"px");break;case 3:a.top-=3,a.bottom-=3,this._hoverContainer.style.paddingBottom="".concat(3,"px"),this._hoverContainer.style.marginBottom="".concat(-3,"px")}a.center.x=a.left+s/2,a.center.y=a.top+r/2}this.computeXCordinate(a),this.computeYCordinate(a),this._hoverPointer&&(this._hoverPointer.classList.remove("top"),this._hoverPointer.classList.remove("left"),this._hoverPointer.classList.remove("right"),this._hoverPointer.classList.remove("bottom"),this.setHoverPointerPosition(a)),this._hover.onContentsChanged()}computeXCordinate(e){const t=this._hover.containerDomNode.clientWidth+2;void 0!==this._target.x?this._x=this._target.x:1===this._hoverPosition?this._x=e.right:0===this._hoverPosition?this._x=e.left-t:(this._hoverPointer?this._x=e.center.x-this._hover.containerDomNode.clientWidth/2:this._x=e.left,this._x+t>=this._targetDocumentElement.clientWidth&&(this._hover.containerDomNode.classList.add("right-aligned"),this._x=Math.max(this._targetDocumentElement.clientWidth-t-2,this._targetDocumentElement.clientLeft))),this._xthis._targetWindow.innerHeight&&(this._y=e.bottom)}adjustHorizontalHoverPosition(e){if(void 0!==this._target.x)return;const t=this._hoverPointer?3:0;if(this._forcePosition){const i=t+2;1===this._hoverPosition?this._hover.containerDomNode.style.maxWidth="".concat(this._targetDocumentElement.clientWidth-e.right-i,"px"):0===this._hoverPosition&&(this._hover.containerDomNode.style.maxWidth="".concat(e.left-i,"px"))}else if(1===this._hoverPosition){if(this._targetDocumentElement.clientWidth-e.right=this._hover.containerDomNode.clientWidth+t?this._hoverPosition=0:this._hoverPosition=2}}else if(0===this._hoverPosition){if(e.left=this._hover.containerDomNode.clientWidth+t?this._hoverPosition=1:this._hoverPosition=2}e.left-this._hover.containerDomNode.clientWidth-t<=this._targetDocumentElement.clientLeft&&(this._hoverPosition=1)}}adjustVerticalHoverPosition(e){if(void 0!==this._target.y||this._forcePosition)return;const t=this._hoverPointer?3:0;3===this._hoverPosition?e.top-this._hover.containerDomNode.clientHeight-t<0&&(this._hoverPosition=2):2===this._hoverPosition&&e.bottom+this._hover.containerDomNode.clientHeight+t>this._targetWindow.innerHeight&&(this._hoverPosition=3)}adjustHoverMaxHeight(e){let t=this._targetWindow.innerHeight/2;if(this._forcePosition){const i=2+(this._hoverPointer?3:0);3===this._hoverPosition?t=Math.min(t,e.top-i):2===this._hoverPosition&&(t=Math.min(t,this._targetWindow.innerHeight-e.bottom-i))}if(this._hover.containerDomNode.style.maxHeight="".concat(t,"px"),this._hover.contentsDomNode.clientHeighte.height?this._hoverPointer.style.top="".concat(e.center.y-(this._y-t)-3,"px"):this._hoverPointer.style.top="".concat(Math.round(t/2)-3,"px");break}case 3:case 2:{this._hoverPointer.classList.add(3===this._hoverPosition?"bottom":"top");const t=this._hover.containerDomNode.clientWidth;let i=Math.round(t/2)-3;const n=this._x+i;(ne.right)&&(i=e.center.x-this._x-3),this._hoverPointer.style.left="".concat(i,"px");break}}}focus(){this._hover.containerDomNode.focus()}dispose(){this._isDisposed||(this._onDispose.fire(),this._hoverContainer.remove(),this._messageListeners.dispose(),this._target.dispose(),super.dispose()),this._isDisposed=!0}};pt=gt([mt(1,st.d),mt(2,V.Ui),mt(3,lt.v),mt(4,ve.TG),mt(5,ut.F)],pt);class _t extends at.${get onMouseOut(){return this._onMouseOut.event}get isMouseIn(){return this._isMouseIn}constructor(e){super(),this._elements=e,this._isMouseIn=!0,this._onMouseOut=this._register(new re.Q5),this._elements.forEach((e=>this.onmouseover(e,(()=>this._onTargetMouseOver(e))))),this._elements.forEach((e=>this.onmouseleave(e,(()=>this._onTargetMouseLeave(e)))))}_onTargetMouseOver(e){this._isMouseIn=!0,this._clearEvaluateMouseStateTimeout(e)}_onTargetMouseLeave(e){this._isMouseIn=!1,this._evaluateMouseState(e)}_evaluateMouseState(e){this._clearEvaluateMouseStateTimeout(e),this._mouseTimeout=oe.Jj(e).setTimeout((()=>this._fireIfMouseOutside()),0)}_clearEvaluateMouseStateTimeout(e){this._mouseTimeout&&(oe.Jj(e).clearTimeout(this._mouseTimeout),this._mouseTimeout=void 0)}_fireIfMouseOutside(){this._isMouseIn||this._onMouseOut.fire()}}class vt{constructor(e){this._element=e,this.targetElements=[this._element]}dispose(){}}var bt,Ct=i(39341),wt=i(74449),yt=i(75799);function St(e,t,i){const n=i.mode===bt.ALIGN?i.offset:i.offset+i.size,o=i.mode===bt.ALIGN?i.offset+i.size:i.offset;return 0===i.position?t<=e-n?n:t<=o?o-t:Math.max(e-t,0):t<=o?o-t:t<=e-n?n:0}!function(e){e[e.AVOID=0]="AVOID",e[e.ALIGN=1]="ALIGN"}(bt||(bt={}));class Lt extends r.JT{constructor(e,t){super(),this.container=null,this.useFixedPosition=!1,this.useShadowDOM=!1,this.delegate=null,this.toDisposeOnClean=r.JT.None,this.toDisposeOnSetContainer=r.JT.None,this.shadowRoot=null,this.shadowRootHostElement=null,this.view=oe.$(".context-view"),oe.Cp(this.view),this.setContainer(e,t),this._register((0,r.OF)((()=>this.setContainer(null,1))))}setContainer(e,t){var i;this.useFixedPosition=1!==t;const n=this.useShadowDOM;if(this.useShadowDOM=3===t,(e!==this.container||n!==this.useShadowDOM)&&(this.container&&(this.toDisposeOnSetContainer.dispose(),this.shadowRoot?(this.shadowRoot.removeChild(this.view),this.shadowRoot=null,null===(i=this.shadowRootHostElement)||void 0===i||i.remove(),this.shadowRootHostElement=null):this.container.removeChild(this.view),this.container=null),e)){if(this.container=e,this.useShadowDOM){this.shadowRootHostElement=oe.$(".shadow-root-host"),this.container.appendChild(this.shadowRootHostElement),this.shadowRoot=this.shadowRootHostElement.attachShadow({mode:"open"});const e=document.createElement("style");e.textContent=kt,this.shadowRoot.appendChild(e),this.shadowRoot.appendChild(this.view),this.shadowRoot.appendChild(oe.$("slot"))}else this.container.appendChild(this.view);const t=new r.SL;Lt.BUBBLE_UP_EVENTS.forEach((e=>{t.add(oe.mu(this.container,e,(e=>{this.onDOMEvent(e,!1)})))})),Lt.BUBBLE_DOWN_EVENTS.forEach((e=>{t.add(oe.mu(this.container,e,(e=>{this.onDOMEvent(e,!0)}),!0))})),this.toDisposeOnSetContainer=t}}show(e){var t,i,n;this.isVisible()&&this.hide(),oe.PO(this.view),this.view.className="context-view",this.view.style.top="0px",this.view.style.left="0px",this.view.style.zIndex="".concat(2575+(null!==(t=e.layer)&&void 0!==t?t:0)),this.view.style.position=this.useFixedPosition?"fixed":"absolute",oe.$Z(this.view),this.toDisposeOnClean=e.render(this.view)||r.JT.None,this.delegate=e,this.doLayout(),null===(n=(i=this.delegate).focus)||void 0===n||n.call(i)}getViewElement(){return this.view}layout(){var e,t;this.isVisible()&&(!1!==this.delegate.canRelayout||ct.gn&&wt.D.pointerEvents?(null===(t=null===(e=this.delegate)||void 0===e?void 0:e.layout)||void 0===t||t.call(e),this.doLayout()):this.hide())}doLayout(){if(!this.isVisible())return;const e=this.delegate.getAnchor();let t;if(e instanceof HTMLElement){const i=oe.i(e),n=oe.I8(e);t={top:i.top*n,left:i.left*n,width:i.width*n,height:i.height*n}}else t=function(e){const t=e;return!!t&&"number"===typeof t.x&&"number"===typeof t.y}(e)?{top:e.y,left:e.x,width:e.width||1,height:e.height||2}:{top:e.posy,left:e.posx,width:2,height:2};const i=oe.w(this.view),n=oe.wn(this.view),o=this.delegate.anchorPosition||0,s=this.delegate.anchorAlignment||0,r=this.delegate.anchorAxisAlignment||0;let a,l;const h=oe.WN();if(0===r){const e={offset:t.top-h.pageYOffset,size:t.height,position:0===o?0:1},r={offset:t.left,size:t.width,position:0===s?0:1,mode:bt.ALIGN};a=St(h.innerHeight,n,e)+h.pageYOffset,yt.e.intersects({start:a,end:a+n},{start:e.offset,end:e.offset+e.size})&&(r.mode=bt.AVOID),l=St(h.innerWidth,i,r)}else{const e={offset:t.left,size:t.width,position:0===s?0:1},r={offset:t.top,size:t.height,position:0===o?0:1,mode:bt.ALIGN};l=St(h.innerWidth,i,e),yt.e.intersects({start:l,end:l+i},{start:e.offset,end:e.offset+e.size})&&(r.mode=bt.AVOID),a=St(h.innerHeight,n,r)+h.pageYOffset}this.view.classList.remove("top","bottom","left","right"),this.view.classList.add(0===o?"bottom":"top"),this.view.classList.add(0===s?"left":"right"),this.view.classList.toggle("fixed",this.useFixedPosition);const d=oe.i(this.container);this.view.style.top="".concat(a-(this.useFixedPosition?oe.i(this.view).top:d.top),"px"),this.view.style.left="".concat(l-(this.useFixedPosition?oe.i(this.view).left:d.left),"px"),this.view.style.width="initial"}hide(e){const t=this.delegate;this.delegate=null,(null===t||void 0===t?void 0:t.onHide)&&t.onHide(e),this.toDisposeOnClean.dispose(),oe.Cp(this.view)}isVisible(){return!!this.delegate}onDOMEvent(e,t){this.delegate&&(this.delegate.onDOMEvent?this.delegate.onDOMEvent(e,oe.Jj(e).document.activeElement):t&&!oe.jg(e.target,this.container)&&this.hide())}dispose(){this.hide(),super.dispose()}}Lt.BUBBLE_UP_EVENTS=["click","keydown","focus","blur"],Lt.BUBBLE_DOWN_EVENTS=["click"];const kt='\n\t:host {\n\t\tall: initial; /* 1st rule so subsequent properties are reset. */\n\t}\n\n\t.codicon[class*=\'codicon-\'] {\n\t\tfont: normal normal normal 16px/1 codicon;\n\t\tdisplay: inline-block;\n\t\ttext-decoration: none;\n\t\ttext-rendering: auto;\n\t\ttext-align: center;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\tuser-select: none;\n\t\t-webkit-user-select: none;\n\t\t-ms-user-select: none;\n\t}\n\n\t:host {\n\t\tfont-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", system-ui, "Ubuntu", "Droid Sans", sans-serif;\n\t}\n\n\t:host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; }\n\t:host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", sans-serif; }\n\t:host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang TC", sans-serif; }\n\t:host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic Pro", sans-serif; }\n\t:host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, "Nanum Gothic", "Apple SD Gothic Neo", "AppleGothic", sans-serif; }\n\n\t:host-context(.windows) { font-family: "Segoe WPC", "Segoe UI", sans-serif; }\n\t:host-context(.windows:lang(zh-Hans)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft YaHei", sans-serif; }\n\t:host-context(.windows:lang(zh-Hant)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft Jhenghei", sans-serif; }\n\t:host-context(.windows:lang(ja)) { font-family: "Segoe WPC", "Segoe UI", "Yu Gothic UI", "Meiryo UI", sans-serif; }\n\t:host-context(.windows:lang(ko)) { font-family: "Segoe WPC", "Segoe UI", "Malgun Gothic", "Dotom", sans-serif; }\n\n\t:host-context(.linux) { font-family: system-ui, "Ubuntu", "Droid Sans", sans-serif; }\n\t:host-context(.linux:lang(zh-Hans)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans SC", "Source Han Sans CN", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(zh-Hant)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans TC", "Source Han Sans TW", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(ja)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans J", "Source Han Sans JP", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(ko)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans K", "Source Han Sans JR", "Source Han Sans", "UnDotum", "FBaekmuk Gulim", sans-serif; }\n';var Dt=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Nt=function(e,t){return function(i,n){t(i,n,e)}};let xt=class extends r.JT{constructor(e){super(),this.layoutService=e,this.currentViewDisposable=this._register(new r.XK),this.contextView=this._register(new Lt(this.layoutService.mainContainer,1)),this.layout(),this._register(e.onDidLayoutContainer((()=>this.layout())))}showContextView(e,t,i){let n;n=t?t===this.layoutService.getContainer((0,oe.Jj)(t))?1:i?3:2:1,this.contextView.setContainer(null!==t&&void 0!==t?t:this.layoutService.activeContainer,n),this.contextView.show(e);const o=(0,r.OF)((()=>{this.currentViewDisposable===o&&this.hideContextView()}));return this.currentViewDisposable.value=o,o}layout(){this.contextView.layout()}hideContextView(e){this.contextView.hide(e)}};xt=Dt([Nt(0,be)],xt);class Et extends xt{getContextViewElement(){return this.contextView.getViewElement()}}var It=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Tt=function(e,t){return function(i,n){t(i,n,e)}};let Mt=class extends r.JT{constructor(e,t,i,n,o){super(),this._instantiationService=e,this._keybindingService=i,this._layoutService=n,this._accessibilityService=o,t.onDidShowContextMenu((()=>this.hideHover())),this._contextViewHandler=this._register(new xt(this._layoutService))}showHover(e,t,i){var n,o,a,l;if(At(this._currentHoverOptions)===At(e))return;if(this._currentHover&&(null===(o=null===(n=this._currentHoverOptions)||void 0===n?void 0:n.persistence)||void 0===o?void 0:o.sticky))return;this._currentHoverOptions=e,this._lastHoverOptions=e;const h=e.trapFocus||this._accessibilityService.isScreenReaderOptimized(),d=(0,oe.vY)();i||(this._lastFocusedElementBeforeOpen=h&&d?d:void 0);const c=new r.SL,u=this._instantiationService.createInstance(pt,e);if((null===(a=e.persistence)||void 0===a?void 0:a.sticky)&&(u.isLocked=!0),u.onDispose((()=>{var t,i;(null===(t=this._currentHover)||void 0===t?void 0:t.domNode)&&(0,oe.b5)(this._currentHover.domNode)&&(null===(i=this._lastFocusedElementBeforeOpen)||void 0===i||i.focus()),this._currentHoverOptions===e&&(this._currentHoverOptions=void 0),c.dispose()})),!e.container){const t=e.target instanceof HTMLElement?e.target:e.target.targetElements[0];e.container=this._layoutService.getContainer((0,oe.Jj)(t))}if(this._contextViewHandler.showContextView(new Rt(u,t),e.container),u.onRequestLayout((()=>this._contextViewHandler.layout())),null===(l=e.persistence)||void 0===l?void 0:l.sticky)c.add((0,oe.nm)((0,oe.Jj)(e.container).document,oe.tw.MOUSE_DOWN,(e=>{(0,oe.jg)(e.target,u.domNode)||this.doHideHover()})));else{if("targetElements"in e.target)for(const i of e.target.targetElements)c.add((0,oe.nm)(i,oe.tw.CLICK,(()=>this.hideHover())));else c.add((0,oe.nm)(e.target,oe.tw.CLICK,(()=>this.hideHover())));const t=(0,oe.vY)();if(t){const i=(0,oe.Jj)(t).document;c.add((0,oe.nm)(t,oe.tw.KEY_DOWN,(t=>{var i;return this._keyDown(t,u,!!(null===(i=e.persistence)||void 0===i?void 0:i.hideOnKeyDown))}))),c.add((0,oe.nm)(i,oe.tw.KEY_DOWN,(t=>{var i;return this._keyDown(t,u,!!(null===(i=e.persistence)||void 0===i?void 0:i.hideOnKeyDown))}))),c.add((0,oe.nm)(t,oe.tw.KEY_UP,(e=>this._keyUp(e,u)))),c.add((0,oe.nm)(i,oe.tw.KEY_UP,(e=>this._keyUp(e,u))))}}if("IntersectionObserver"in s.E){const t=new IntersectionObserver((e=>this._intersectionChange(e,u)),{threshold:0}),i="targetElements"in e.target?e.target.targetElements[0]:e.target;t.observe(i),c.add((0,r.OF)((()=>t.disconnect())))}return this._currentHover=u,u}hideHover(){var e;!(null===(e=this._currentHover)||void 0===e?void 0:e.isLocked)&&this._currentHoverOptions&&this.doHideHover()}doHideHover(){this._currentHover=void 0,this._currentHoverOptions=void 0,this._contextViewHandler.hideContextView()}_intersectionChange(e,t){e[e.length-1].isIntersecting||t.dispose()}_keyDown(e,t,i){var n,o;if("Alt"===e.key)return void(t.isLocked=!0);const s=new Ct.y(e);this._keybindingService.resolveKeyboardEvent(s).getSingleModifierDispatchChords().some((e=>!!e))||0!==this._keybindingService.softDispatch(s,s.target).kind||!i||(null===(n=this._currentHoverOptions)||void 0===n?void 0:n.trapFocus)&&"Tab"===e.key||(this.hideHover(),null===(o=this._lastFocusedElementBeforeOpen)||void 0===o||o.focus())}_keyUp(e,t){var i;"Alt"===e.key&&(t.isLocked=!1,t.isMouseIn||(this.hideHover(),null===(i=this._lastFocusedElementBeforeOpen)||void 0===i||i.focus()))}};function At(e){var t;if(void 0!==e)return null!==(t=null===e||void 0===e?void 0:e.id)&&void 0!==t?t:e}Mt=It([Tt(0,ve.TG),Tt(1,ot.i),Tt(2,st.d),Tt(3,be),Tt(4,ut.F)],Mt);class Rt{get anchorPosition(){return this._hover.anchor}constructor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._hover=e,this._focus=t,this.layer=1}render(e){return this._hover.render(e),this._focus&&this._hover.focus(),this._hover}getAnchor(){return{x:this._hover.x,y:this._hover.y}}layout(){this._hover.layout()}}(0,ge.z)(nt.Bs,Mt,1),(0,le.Ic)(((e,t)=>{const i=e.getColor(it.CNo);i&&(t.addRule(".monaco-workbench .workbench-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ".concat(i.transparent(.5),"; }")),t.addRule(".monaco-workbench .workbench-hover hr { border-top: 1px solid ".concat(i.transparent(.5),"; }")))}));var Ot=i(97162),Pt=i(621),Ft=i(65175),Bt=i(39376),zt=i(2067),Vt=i(10670),Wt=i(93984),Ht=i(61315),Kt=i(60982),Ut=i(65549),jt=i(63686),qt=i(9694),Gt=i(70311);function Qt(e){return Object.isFrozen(e)?e:u._A(e)}class Zt{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=arguments.length>3?arguments[3]:void 0;this._contents=e,this._keys=t,this._overrides=i,this.raw=n,this.overrideConfigurations=new Map}get rawConfiguration(){var e;if(!this._rawConfiguration)if(null===(e=this.raw)||void 0===e?void 0:e.length){const e=this.raw.map((e=>{if(e instanceof Zt)return e;const t=new Yt("");return t.parseRaw(e),t.configurationModel}));this._rawConfiguration=e.reduce(((e,t)=>t===e?t:e.merge(t)),e[0])}else this._rawConfiguration=this;return this._rawConfiguration}get contents(){return this._contents}get overrides(){return this._overrides}get keys(){return this._keys}isEmpty(){return 0===this._keys.length&&0===Object.keys(this._contents).length&&0===this._overrides.length}getValue(e){return e?(0,V.Mt)(this.contents,e):this.contents}inspect(e,t){const i=this;return{get value(){return Qt(i.rawConfiguration.getValue(e))},get override(){return t?Qt(i.rawConfiguration.getOverrideValue(e,t)):void 0},get merged(){return Qt(t?i.rawConfiguration.override(t).getValue(e):i.rawConfiguration.getValue(e))},get overrides(){const t=[];for(const{contents:n,identifiers:o,keys:s}of i.rawConfiguration.overrides){const i=new Zt(n,s).getValue(e);void 0!==i&&t.push({identifiers:o,value:i})}return t.length?Qt(t):void 0}}}getOverrideValue(e,t){const i=this.getContentsForOverrideIdentifer(t);return i?e?(0,V.Mt)(i,e):i:void 0}override(e){let t=this.overrideConfigurations.get(e);return t||(t=this.createOverrideConfigurationModel(e),this.overrideConfigurations.set(e,t)),t}merge(){var e,t;const i=u.I8(this.contents),n=u.I8(this.overrides),o=[...this.keys],s=(null===(e=this.raw)||void 0===e?void 0:e.length)?[...this.raw]:[this];for(var r=arguments.length,a=new Array(r),l=0;l_e.fS(t.identifiers,e.identifiers)));t?(this.mergeContents(t.contents,e.contents),t.keys.push(...e.keys),t.keys=_e.EB(t.keys)):n.push(u.I8(e))}for(const e of h.keys)-1===o.indexOf(e)&&o.push(e)}return new Zt(i,o,n,s.every((e=>e instanceof Zt))?void 0:s)}createOverrideConfigurationModel(e){const t=this.getContentsForOverrideIdentifer(e);if(!t||"object"!==typeof t||!Object.keys(t).length)return this;const i={};for(const n of _e.EB([...Object.keys(this.contents),...Object.keys(t)])){let e=this.contents[n];const o=t[n];o&&("object"===typeof e&&"object"===typeof o?(e=u.I8(e),this.mergeContents(e,o)):e=o),i[n]=e}return new Zt(i,this.keys,this.overrides)}mergeContents(e,t){for(const i of Object.keys(t))i in e&&jt.Kn(e[i])&&jt.Kn(t[i])?this.mergeContents(e[i],t[i]):e[i]=u.I8(t[i])}getContentsForOverrideIdentifer(e){let t=null,i=null;const n=e=>{e&&(i?this.mergeContents(i,e):i=u.I8(e))};for(const o of this.overrides)1===o.identifiers.length&&o.identifiers[0]===e?t=o.contents:o.identifiers.includes(e)&&n(o.contents);return n(t),i}toJSON(){return{contents:this.contents,overrides:this.overrides,keys:this.keys}}addValue(e,t){this.updateValue(e,t,!0)}setValue(e,t){this.updateValue(e,t,!1)}removeValue(e){const t=this.keys.indexOf(e);-1!==t&&(this.keys.splice(t,1),(0,V.xL)(this.contents,e),qt.eU.test(e)&&this.overrides.splice(this.overrides.findIndex((t=>_e.fS(t.identifiers,(0,qt.ny)(e)))),1))}updateValue(e,t,i){(0,V.KV)(this.contents,e,t,(e=>console.error(e))),(i=i||-1===this.keys.indexOf(e))&&this.keys.push(e),qt.eU.test(e)&&this.overrides.push({identifiers:(0,qt.ny)(e),keys:Object.keys(this.contents[e]),contents:(0,V.Od)(this.contents[e],(e=>console.error(e)))})}}class Yt{constructor(e){this._name=e,this._raw=null,this._configurationModel=null,this._restrictedConfigurations=[]}get configurationModel(){return this._configurationModel||new Zt}parseRaw(e,t){this._raw=e;const{contents:i,keys:n,overrides:o,restricted:s,hasExcludedProperties:r}=this.doParseRaw(e,t);this._configurationModel=new Zt(i,n,o,r?[e]:void 0),this._restrictedConfigurations=s||[]}doParseRaw(e,t){const i=Gt.B.as(qt.IP.Configuration).getConfigurationProperties(),n=this.filter(e,i,!0,t);e=n.raw;return{contents:(0,V.Od)(e,(e=>console.error("Conflict in settings file ".concat(this._name,": ").concat(e)))),keys:Object.keys(e),overrides:this.toOverrides(e,(e=>console.error("Conflict in settings file ".concat(this._name,": ").concat(e)))),restricted:n.restricted,hasExcludedProperties:n.hasExcludedProperties}}filter(e,t,i,n){var o,s,r;let a=!1;if(!(null===n||void 0===n?void 0:n.scopes)&&!(null===n||void 0===n?void 0:n.skipRestricted)&&!(null===(o=null===n||void 0===n?void 0:n.exclude)||void 0===o?void 0:o.length))return{raw:e,restricted:[],hasExcludedProperties:a};const l={},h=[];for(const d in e)if(qt.eU.test(d)&&i){const i=this.filter(e[d],t,!1,n);l[d]=i.raw,a=a||i.hasExcludedProperties,h.push(...i.restricted)}else{const i=t[d],o=i?"undefined"!==typeof i.scope?i.scope:3:void 0;(null===i||void 0===i?void 0:i.restricted)&&h.push(d),(null===(s=n.exclude)||void 0===s?void 0:s.includes(d))||!(null===(r=n.include)||void 0===r?void 0:r.includes(d))&&(void 0!==o&&void 0!==n.scopes&&!n.scopes.includes(o)||n.skipRestricted&&(null===i||void 0===i?void 0:i.restricted))?a=!0:l[d]=e[d]}return{raw:l,restricted:h,hasExcludedProperties:a}}toOverrides(e,t){const i=[];for(const n of Object.keys(e))if(qt.eU.test(n)){const o={};for(const t in e[n])o[t]=e[n][t];i.push({identifiers:(0,qt.ny)(n),keys:Object.keys(o),contents:(0,V.Od)(o,t)})}return i}}class $t{constructor(e,t,i,n,o,s,r,a,l,h,d,c,u){this.key=e,this.overrides=t,this._value=i,this.overrideIdentifiers=n,this.defaultConfiguration=o,this.policyConfiguration=s,this.applicationConfiguration=r,this.userConfiguration=a,this.localUserConfiguration=l,this.remoteUserConfiguration=h,this.workspaceConfiguration=d,this.folderConfigurationModel=c,this.memoryConfigurationModel=u}toInspectValue(e){return void 0!==(null===e||void 0===e?void 0:e.value)||void 0!==(null===e||void 0===e?void 0:e.override)||void 0!==(null===e||void 0===e?void 0:e.overrides)?e:void 0}get userInspectValue(){return this._userInspectValue||(this._userInspectValue=this.userConfiguration.inspect(this.key,this.overrides.overrideIdentifier)),this._userInspectValue}get user(){return this.toInspectValue(this.userInspectValue)}}class Jt{constructor(e,t,i,n){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:new Zt,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:new Zt,r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:new Ut.Y9,a=arguments.length>7&&void 0!==arguments[7]?arguments[7]:new Zt,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:new Ut.Y9;this._defaultConfiguration=e,this._policyConfiguration=t,this._applicationConfiguration=i,this._localUserConfiguration=n,this._remoteUserConfiguration=o,this._workspaceConfiguration=s,this._folderConfigurations=r,this._memoryConfiguration=a,this._memoryConfigurationByResource=l,this._workspaceConsolidatedConfiguration=null,this._foldersConsolidatedConfigurations=new Ut.Y9,this._userConfiguration=null}getValue(e,t,i){return this.getConsolidatedConfigurationModel(e,t,i).getValue(e)}updateValue(e,t){let i,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n.resource?(i=this._memoryConfigurationByResource.get(n.resource),i||(i=new Zt,this._memoryConfigurationByResource.set(n.resource,i))):i=this._memoryConfiguration,void 0===t?i.removeValue(e):i.setValue(e,t),n.resource||(this._workspaceConsolidatedConfiguration=null)}inspect(e,t,i){const n=this.getConsolidatedConfigurationModel(e,t,i),o=this.getFolderConfigurationModelForResource(t.resource,i),s=t.resource&&this._memoryConfigurationByResource.get(t.resource)||this._memoryConfiguration,r=new Set;for(const a of n.overrides)for(const t of a.identifiers)void 0!==n.getOverrideValue(e,t)&&r.add(t);return new $t(e,t,n.getValue(e),r.size?[...r]:void 0,this._defaultConfiguration,this._policyConfiguration.isEmpty()?void 0:this._policyConfiguration,this.applicationConfiguration.isEmpty()?void 0:this.applicationConfiguration,this.userConfiguration,this.localUserConfiguration,this.remoteUserConfiguration,i?this._workspaceConfiguration:void 0,o||void 0,s)}get applicationConfiguration(){return this._applicationConfiguration}get userConfiguration(){return this._userConfiguration||(this._userConfiguration=this._remoteUserConfiguration.isEmpty()?this._localUserConfiguration:this._localUserConfiguration.merge(this._remoteUserConfiguration)),this._userConfiguration}get localUserConfiguration(){return this._localUserConfiguration}get remoteUserConfiguration(){return this._remoteUserConfiguration}getConsolidatedConfigurationModel(e,t,i){let n=this.getConsolidatedConfigurationModelForResource(t,i);return t.overrideIdentifier&&(n=n.override(t.overrideIdentifier)),this._policyConfiguration.isEmpty()||void 0===this._policyConfiguration.getValue(e)||(n=n.merge(this._policyConfiguration)),n}getConsolidatedConfigurationModelForResource(e,t){let{resource:i}=e,n=this.getWorkspaceConsolidatedConfiguration();if(t&&i){const e=t.getFolder(i);e&&(n=this.getFolderConsolidatedConfiguration(e.uri)||n);const o=this._memoryConfigurationByResource.get(i);o&&(n=n.merge(o))}return n}getWorkspaceConsolidatedConfiguration(){return this._workspaceConsolidatedConfiguration||(this._workspaceConsolidatedConfiguration=this._defaultConfiguration.merge(this.applicationConfiguration,this.userConfiguration,this._workspaceConfiguration,this._memoryConfiguration)),this._workspaceConsolidatedConfiguration}getFolderConsolidatedConfiguration(e){let t=this._foldersConsolidatedConfigurations.get(e);if(!t){const i=this.getWorkspaceConsolidatedConfiguration(),n=this._folderConfigurations.get(e);n?(t=i.merge(n),this._foldersConsolidatedConfigurations.set(e,t)):t=i}return t}getFolderConfigurationModelForResource(e,t){if(t&&e){const i=t.getFolder(e);if(i)return this._folderConfigurations.get(i.uri)}}toData(){return{defaults:{contents:this._defaultConfiguration.contents,overrides:this._defaultConfiguration.overrides,keys:this._defaultConfiguration.keys},policy:{contents:this._policyConfiguration.contents,overrides:this._policyConfiguration.overrides,keys:this._policyConfiguration.keys},application:{contents:this.applicationConfiguration.contents,overrides:this.applicationConfiguration.overrides,keys:this.applicationConfiguration.keys},user:{contents:this.userConfiguration.contents,overrides:this.userConfiguration.overrides,keys:this.userConfiguration.keys},workspace:{contents:this._workspaceConfiguration.contents,overrides:this._workspaceConfiguration.overrides,keys:this._workspaceConfiguration.keys},folders:[...this._folderConfigurations.keys()].reduce(((e,t)=>{const{contents:i,overrides:n,keys:o}=this._folderConfigurations.get(t);return e.push([t,{contents:i,overrides:n,keys:o}]),e}),[])}}static parse(e){const t=this.parseConfigurationModel(e.defaults),i=this.parseConfigurationModel(e.policy),n=this.parseConfigurationModel(e.application),o=this.parseConfigurationModel(e.user),s=this.parseConfigurationModel(e.workspace),r=e.folders.reduce(((e,t)=>(e.set(l.o.revive(t[0]),this.parseConfigurationModel(t[1])),e)),new Ut.Y9);return new Jt(t,i,n,o,new Zt,s,r,new Zt,new Ut.Y9)}static parseConfigurationModel(e){return new Zt(e.contents,e.keys,e.overrides)}}class Xt{constructor(e,t,i,n){this.change=e,this.previous=t,this.currentConfiguraiton=i,this.currentWorkspace=n,this._marker="\n",this._markerCode1=this._marker.charCodeAt(0),this._markerCode2=".".charCodeAt(0),this.affectedKeys=new Set,this._previousConfiguration=void 0;for(const o of e.keys)this.affectedKeys.add(o);for(const[,o]of e.overrides)for(const e of o)this.affectedKeys.add(e);this._affectsConfigStr=this._marker;for(const o of this.affectedKeys)this._affectsConfigStr+=o+this._marker}get previousConfiguration(){return!this._previousConfiguration&&this.previous&&(this._previousConfiguration=Jt.parse(this.previous.data)),this._previousConfiguration}affectsConfiguration(e,t){var i;const n=this._marker+e,o=this._affectsConfigStr.indexOf(n);if(o<0)return!1;const s=o+n.length;if(s>=this._affectsConfigStr.length)return!1;const r=this._affectsConfigStr.charCodeAt(s);if(r!==this._markerCode1&&r!==this._markerCode2)return!1;if(t){const n=this.previousConfiguration?this.previousConfiguration.getValue(e,t,null===(i=this.previous)||void 0===i?void 0:i.workspace):void 0,o=this.currentConfiguraiton.getValue(e,t,this.currentWorkspace);return!u.fS(n,o)}return!0}}var ei=i(60282),ti=i(43283);const ii={kind:0},ni={kind:1};class oi{constructor(e,t,i){var n;this._log=i,this._defaultKeybindings=e,this._defaultBoundCommands=new Map;for(const o of e){const e=o.command;e&&"-"!==e.charAt(0)&&this._defaultBoundCommands.set(e,!0)}this._map=new Map,this._lookupMap=new Map,this._keybindings=oi.handleRemovals([].concat(e).concat(t));for(let o=0,s=this._keybindings.length;o=0;n--){const e=i[n];if(e.command===t.command)continue;let o=!0;for(let i=1;i=0;n--){const e=i[n];if(t.contextMatchesRules(e.when))return e}return i[i.length-1]}resolve(e,t,i){const n=[...t,i];this._log("| Resolving ".concat(n));const o=this._map.get(n[0]);if(void 0===o)return this._log("\\ No keybinding entries."),ii;let s=null;if(n.length<2)s=o;else{s=[];for(let e=0,t=o.length;et.chords.length)continue;let i=!0;for(let e=1;e=0;i--){const n=t[i];if(oi._contextMatchesRules(e,n.when))return n}return null}static _contextMatchesRules(e,t){return!t||t.evaluate(e)}}function si(e){return e?"".concat(e.serialize()):"no when condition"}function ri(e){return e.extensionId?e.isBuiltinExtension?"built-in extension ".concat(e.extensionId):"user extension ".concat(e.extensionId):e.isDefault?"built-in":"user"}const ai=/^(cursor|delete|undo|redo|tab|editor\.action\.clipboard)/;class li extends r.JT{get onDidUpdateKeybindings(){return this._onDidUpdateKeybindings?this._onDidUpdateKeybindings.event:re.ju.None}get inChordMode(){return this._currentChords.length>0}constructor(e,t,i,n,o){super(),this._contextKeyService=e,this._commandService=t,this._telemetryService=i,this._notificationService=n,this._logService=o,this._onDidUpdateKeybindings=this._register(new re.Q5),this._currentChords=[],this._currentChordChecker=new ei.zh,this._currentChordStatusMessage=null,this._ignoreSingleModifiers=hi.EMPTY,this._currentSingleModifier=null,this._currentSingleModifierClearTimeout=new ei._F,this._currentlyDispatchingCommandId=null,this._logging=!1}dispose(){super.dispose()}_log(e){this._logging&&this._logService.info("[KeybindingService]: ".concat(e))}getKeybindings(){return this._getResolver().getKeybindings()}lookupKeybinding(e,t){const i=this._getResolver().lookupPrimaryKeybinding(e,t||this._contextKeyService);if(i)return i.resolvedKeybinding}dispatchEvent(e,t){return this._dispatch(e,t)}softDispatch(e,t){this._log("/ Soft dispatching keyboard event");const i=this.resolveKeyboardEvent(e);if(i.hasMultipleChords())return console.warn("keyboard event should not be mapped to multiple chords"),ii;const[n]=i.getDispatchChords();if(null===n)return this._log("\\ Keyboard event cannot be dispatched"),ii;const o=this._contextKeyService.getContext(t),s=this._currentChords.map((e=>{let{keypress:t}=e;return t}));return this._getResolver().resolve(o,s,n)}_scheduleLeaveChordMode(){const e=Date.now();this._currentChordChecker.cancelAndSet((()=>{this._documentHasFocus()?Date.now()-e>5e3&&this._leaveChordMode():this._leaveChordMode()}),500)}_expectAnotherChord(e,t){switch(this._currentChords.push({keypress:e,label:t}),this._currentChords.length){case 0:throw(0,Le.L6)("impossible");case 1:this._currentChordStatusMessage=this._notificationService.status(De.NC("first.chord","({0}) was pressed. Waiting for second key of chord...",t));break;default:{const e=this._currentChords.map((e=>{let{label:t}=e;return t})).join(", ");this._currentChordStatusMessage=this._notificationService.status(De.NC("next.chord","({0}) was pressed. Waiting for next key of chord...",e))}}this._scheduleLeaveChordMode(),ti.F.enabled&&ti.F.disable()}_leaveChordMode(){this._currentChordStatusMessage&&(this._currentChordStatusMessage.dispose(),this._currentChordStatusMessage=null),this._currentChordChecker.cancel(),this._currentChords=[],ti.F.enable()}_dispatch(e,t){return this._doDispatch(this.resolveKeyboardEvent(e),t,!1)}_singleModifierDispatch(e,t){const i=this.resolveKeyboardEvent(e),[n]=i.getSingleModifierDispatchChords();if(n)return this._ignoreSingleModifiers.has(n)?(this._log("+ Ignoring single modifier ".concat(n," due to it being pressed together with other keys.")),this._ignoreSingleModifiers=hi.EMPTY,this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1):(this._ignoreSingleModifiers=hi.EMPTY,null===this._currentSingleModifier?(this._log("+ Storing single modifier for possible chord ".concat(n,".")),this._currentSingleModifier=n,this._currentSingleModifierClearTimeout.cancelAndSet((()=>{this._log("+ Clearing single modifier due to 300ms elapsed."),this._currentSingleModifier=null}),300),!1):n===this._currentSingleModifier?(this._log("/ Dispatching single modifier chord ".concat(n," ").concat(n)),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,this._doDispatch(i,t,!0)):(this._log("+ Clearing single modifier due to modifier mismatch: ".concat(this._currentSingleModifier," ").concat(n)),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1));const[o]=i.getChords();return this._ignoreSingleModifiers=new hi(o),null!==this._currentSingleModifier&&this._log("+ Clearing single modifier due to other key up."),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1}_doDispatch(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];var n;let o=!1;if(e.hasMultipleChords())return console.warn("Unexpected keyboard event mapped to multiple chords"),!1;let s=null,r=null;if(i){const[t]=e.getSingleModifierDispatchChords();s=t,r=t?[t]:[]}else[s]=e.getDispatchChords(),r=this._currentChords.map((e=>{let{keypress:t}=e;return t}));if(null===s)return this._log("\\ Keyboard event cannot be dispatched in keydown phase."),o;const a=this._contextKeyService.getContext(t),l=e.getLabel(),h=this._getResolver().resolve(a,r,s);switch(h.kind){case 0:if(this._logService.trace("KeybindingService#dispatch",l,"[ No matching keybinding ]"),this.inChordMode){const e=this._currentChords.map((e=>{let{label:t}=e;return t})).join(", ");this._log('+ Leaving multi-chord mode: Nothing bound to "'.concat(e,", ").concat(l,'".')),this._notificationService.status(De.NC("missing.chord","The key combination ({0}, {1}) is not a command.",e,l),{hideAfter:1e4}),this._leaveChordMode(),o=!0}return o;case 1:return this._logService.trace("KeybindingService#dispatch",l,"[ Several keybindings match - more chords needed ]"),o=!0,this._expectAnotherChord(s,l),this._log(1===this._currentChords.length?"+ Entering multi-chord mode...":"+ Continuing multi-chord mode..."),o;case 2:if(this._logService.trace("KeybindingService#dispatch",l,"[ Will dispatch command ".concat(h.commandId," ]")),null===h.commandId||""===h.commandId){if(this.inChordMode){const e=this._currentChords.map((e=>{let{label:t}=e;return t})).join(", ");this._log('+ Leaving chord mode: Nothing bound to "'.concat(e,", ").concat(l,'".')),this._notificationService.status(De.NC("missing.chord","The key combination ({0}, {1}) is not a command.",e,l),{hideAfter:1e4}),this._leaveChordMode(),o=!0}}else{this.inChordMode&&this._leaveChordMode(),h.isBubble||(o=!0),this._log("+ Invoking command ".concat(h.commandId,".")),this._currentlyDispatchingCommandId=h.commandId;try{"undefined"===typeof h.commandArgs?this._commandService.executeCommand(h.commandId).then(void 0,(e=>this._notificationService.warn(e))):this._commandService.executeCommand(h.commandId,h.commandArgs).then(void 0,(e=>this._notificationService.warn(e)))}finally{this._currentlyDispatchingCommandId=null}ai.test(h.commandId)||this._telemetryService.publicLog2("workbenchActionExecuted",{id:h.commandId,from:"keybinding",detail:null!==(n=e.getUserSettingsLabel())&&void 0!==n?n:void 0})}return o}}mightProducePrintableCharacter(e){return!e.ctrlKey&&!e.metaKey&&(e.keyCode>=31&&e.keyCode<=56||e.keyCode>=21&&e.keyCode<=30)}}class hi{constructor(e){this._ctrlKey=!!e&&e.ctrlKey,this._shiftKey=!!e&&e.shiftKey,this._altKey=!!e&&e.altKey,this._metaKey=!!e&&e.metaKey}has(e){switch(e){case"ctrl":return this._ctrlKey;case"shift":return this._shiftKey;case"alt":return this._altKey;case"meta":return this._metaKey}}}hi.EMPTY=new hi(null);var di=i(86728);class ci{constructor(e,t,i,n,o,s,r){this._resolvedKeybindingItemBrand=void 0,this.resolvedKeybinding=e,this.chords=e?ui(e.getDispatchChords()):[],e&&0===this.chords.length&&(this.chords=ui(e.getSingleModifierDispatchChords())),this.bubble=!!t&&94===t.charCodeAt(0),this.command=this.bubble?t.substr(1):t,this.commandArgs=i,this.when=n,this.isDefault=o,this.extensionId=s,this.isBuiltinExtension=r}}function ui(e){const t=[];for(let i=0,n=e.length;ithis._getLabel(e)))}getAriaLabel(){return mi.X4.toLabel(this._os,this._chords,(e=>this._getAriaLabel(e)))}getElectronAccelerator(){return this._chords.length>1||this._chords[0].isDuplicateModifierCase()?null:mi.jC.toLabel(this._os,this._chords,(e=>this._getElectronAccelerator(e)))}getUserSettingsLabel(){return mi.r6.toLabel(this._os,this._chords,(e=>this._getUserSettingsLabel(e)))}hasMultipleChords(){return this._chords.length>1}getChords(){return this._chords.map((e=>this._getChord(e)))}_getChord(e){return new Ot.aZ(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,this._getLabel(e),this._getAriaLabel(e))}getDispatchChords(){return this._chords.map((e=>this._getChordDispatch(e)))}getSingleModifierDispatchChords(){return this._chords.map((e=>this._getSingleModifierChordDispatch(e)))}}class pi extends fi{constructor(e,t){super(t,e)}_keyCodeToUILabel(e){if(2===this._os)switch(e){case 15:return"\u2190";case 16:return"\u2191";case 17:return"\u2192";case 18:return"\u2193"}return gi.kL.toString(e)}_getLabel(e){return e.isDuplicateModifierCase()?"":this._keyCodeToUILabel(e.keyCode)}_getAriaLabel(e){return e.isDuplicateModifierCase()?"":gi.kL.toString(e.keyCode)}_getElectronAccelerator(e){return gi.kL.toElectronAccelerator(e.keyCode)}_getUserSettingsLabel(e){if(e.isDuplicateModifierCase())return"";const t=gi.kL.toUserSettingsUS(e.keyCode);return t?t.toLowerCase():t}_getChordDispatch(e){return pi.getDispatchStr(e)}static getDispatchStr(e){if(e.isModifierKey())return null;let t="";return e.ctrlKey&&(t+="ctrl+"),e.shiftKey&&(t+="shift+"),e.altKey&&(t+="alt+"),e.metaKey&&(t+="meta+"),t+=gi.kL.toString(e.keyCode),t}_getSingleModifierChordDispatch(e){return 5!==e.keyCode||e.shiftKey||e.altKey||e.metaKey?4!==e.keyCode||e.ctrlKey||e.altKey||e.metaKey?6!==e.keyCode||e.ctrlKey||e.shiftKey||e.metaKey?57!==e.keyCode||e.ctrlKey||e.shiftKey||e.altKey?null:"meta":"alt":"shift":"ctrl"}static _scanCodeToKeyCode(e){const t=gi.Vd[e];if(-1!==t)return t;switch(e){case 10:return 31;case 11:return 32;case 12:return 33;case 13:return 34;case 14:return 35;case 15:return 36;case 16:return 37;case 17:return 38;case 18:return 39;case 19:return 40;case 20:return 41;case 21:return 42;case 22:return 43;case 23:return 44;case 24:return 45;case 25:return 46;case 26:return 47;case 27:return 48;case 28:return 49;case 29:return 50;case 30:return 51;case 31:return 52;case 32:return 53;case 33:return 54;case 34:return 55;case 35:return 56;case 36:return 22;case 37:return 23;case 38:return 24;case 39:return 25;case 40:return 26;case 41:return 27;case 42:return 28;case 43:return 29;case 44:return 30;case 45:return 21;case 51:return 88;case 52:return 86;case 53:return 92;case 54:return 94;case 55:return 93;case 56:return 0;case 57:return 85;case 58:return 95;case 59:return 91;case 60:return 87;case 61:return 89;case 62:return 90;case 106:return 97}return 0}static _toKeyCodeChord(e){if(!e)return null;if(e instanceof Ot.$M)return e;const t=this._scanCodeToKeyCode(e.scanCode);return 0===t?null:new Ot.$M(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,t)}static resolveKeybinding(e,t){const i=ui(e.chords.map((e=>this._toKeyCodeChord(e))));return i.length>0?[new pi(i,t)]:[]}}var _i=i(82611),vi=i(39040),bi=i(38015),Ci=i(73449),wi=i(36334),yi=i(55694),Si=i(20790),Li=i(52223),ki=i(51572),Di=i(51169);let Ni=[],xi=[],Ei=[];function Ii(e){!function(e,t,i){const n=function(e,t){return{id:e.id,mime:e.mime,filename:e.filename,extension:e.extension,filepattern:e.filepattern,firstline:e.firstline,userConfigured:t,filenameLowercase:e.filename?e.filename.toLowerCase():void 0,extensionLowercase:e.extension?e.extension.toLowerCase():void 0,filepatternLowercase:e.filepattern?(0,Li.Qc)(e.filepattern.toLowerCase()):void 0,filepatternOnPath:!!e.filepattern&&e.filepattern.indexOf(Di.KR.sep)>=0}}(e,t);Ni.push(n),n.userConfigured?Ei.push(n):xi.push(n);i&&!n.userConfigured&&Ni.forEach((e=>{e.mime===n.mime||e.userConfigured||(n.extension&&e.extension===n.extension&&console.warn("Overwriting extension <<".concat(n.extension,">> to now point to mime <<").concat(n.mime,">>")),n.filename&&e.filename===n.filename&&console.warn("Overwriting filename <<".concat(n.filename,">> to now point to mime <<").concat(n.mime,">>")),n.filepattern&&e.filepattern===n.filepattern&&console.warn("Overwriting filepattern <<".concat(n.filepattern,">> to now point to mime <<").concat(n.mime,">>")),n.firstline&&e.firstline===n.firstline&&console.warn("Overwriting firstline <<".concat(n.firstline,">> to now point to mime <<").concat(n.mime,">>")))}))}(e,!1,arguments.length>1&&void 0!==arguments[1]&&arguments[1])}function Ti(e,t){return function(e,t){let i;if(e)switch(e.scheme){case se.lg.file:i=e.fsPath;break;case se.lg.data:i=yi.Vb.parseMetaData(e).get(yi.Vb.META_DATA_LABEL);break;case se.lg.vscodeNotebookCell:i=void 0;break;default:i=e.path}if(!i)return[{id:"unknown",mime:ki.v.unknown}];i=i.toLowerCase();const n=(0,Di.EZ)(i),o=Mi(i,n,Ei);if(o)return[o,{id:w.bd,mime:ki.v.text}];const s=Mi(i,n,xi);if(s)return[s,{id:w.bd,mime:ki.v.text}];if(t){const e=function(e){(0,a.uS)(e)&&(e=e.substr(1));if(e.length>0)for(let t=Ni.length-1;t>=0;t--){const i=Ni[t];if(!i.firstline)continue;const n=e.match(i.firstline);if(n&&n.length>0)return i}return}(t);if(e)return[e,{id:w.bd,mime:ki.v.text}]}return[{id:"unknown",mime:ki.v.unknown}]}(e,t).map((e=>e.id))}function Mi(e,t,i){var n;let o,s,r;for(let a=i.length-1;a>=0;a--){const l=i[a];if(t===l.filenameLowercase){o=l;break}if(l.filepattern&&(!s||l.filepattern.length>s.filepattern.length)){const i=l.filepatternOnPath?e:t;(null===(n=l.filepatternLowercase)||void 0===n?void 0:n.call(l,i))&&(s=l)}l.extension&&(!r||l.extension.length>r.extension.length)&&t.endsWith(l.extensionLowercase)&&(r=l)}return o||(s||(r||void 0))}const Ai=Object.prototype.hasOwnProperty,Ri="vs.editor.nullLanguage";class Oi{constructor(){this._languageIdToLanguage=[],this._languageToLanguageId=new Map,this._register(Ri,0),this._register(w.bd,1),this._nextLanguageId=2}_register(e,t){this._languageIdToLanguage[t]=e,this._languageToLanguageId.set(e,t)}register(e){if(this._languageToLanguageId.has(e))return;const t=this._nextLanguageId++;this._register(e,t)}encodeLanguageId(e){return this._languageToLanguageId.get(e)||0}decodeLanguageId(e){return this._languageIdToLanguage[e]||Ri}}class Pi extends r.JT{constructor(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];super(),this._onDidChange=this._register(new re.Q5),this.onDidChange=this._onDidChange.event,Pi.instanceCount++,this._warnOnOverwrite=t,this.languageIdCodec=new Oi,this._dynamicLanguages=[],this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},e&&(this._initializeFromRegistry(),this._register(w.dQ.onDidChangeLanguages((e=>{this._initializeFromRegistry()}))))}dispose(){Pi.instanceCount--,super.dispose()}_initializeFromRegistry(){this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},Ni=Ni.filter((e=>e.userConfigured)),xi=[];const e=[].concat(w.dQ.getLanguages()).concat(this._dynamicLanguages);this._registerLanguages(e)}_registerLanguages(e){for(const t of e)this._registerLanguage(t);this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},Object.keys(this._languages).forEach((e=>{const t=this._languages[e];t.name&&(this._nameMap[t.name]=t.identifier),t.aliases.forEach((e=>{this._lowercaseNameMap[e.toLowerCase()]=t.identifier})),t.mimetypes.forEach((e=>{this._mimeTypesMap[e]=t.identifier}))})),Gt.B.as(qt.IP.Configuration).registerOverrideIdentifiers(this.getRegisteredLanguageIds()),this._onDidChange.fire()}_registerLanguage(e){const t=e.id;let i;Ai.call(this._languages,t)?i=this._languages[t]:(this.languageIdCodec.register(t),i={identifier:t,name:null,mimetypes:[],aliases:[],extensions:[],filenames:[],configurationFiles:[],icons:[]},this._languages[t]=i),this._mergeLanguage(i,e)}_mergeLanguage(e,t){const i=t.id;let n=null;if(Array.isArray(t.mimetypes)&&t.mimetypes.length>0&&(e.mimetypes.push(...t.mimetypes),n=t.mimetypes[0]),n||(n="text/x-".concat(i),e.mimetypes.push(n)),Array.isArray(t.extensions)){t.configuration?e.extensions=t.extensions.concat(e.extensions):e.extensions=e.extensions.concat(t.extensions);for(const e of t.extensions)Ii({id:i,mime:n,extension:e},this._warnOnOverwrite)}if(Array.isArray(t.filenames))for(const a of t.filenames)Ii({id:i,mime:n,filename:a},this._warnOnOverwrite),e.filenames.push(a);if(Array.isArray(t.filenamePatterns))for(const a of t.filenamePatterns)Ii({id:i,mime:n,filepattern:a},this._warnOnOverwrite);if("string"===typeof t.firstLine&&t.firstLine.length>0){let e=t.firstLine;"^"!==e.charAt(0)&&(e="^"+e);try{const t=new RegExp(e);(0,a.IO)(t)||Ii({id:i,mime:n,firstline:t},this._warnOnOverwrite)}catch(r){console.warn("[".concat(t.id,"]: Invalid regular expression `").concat(e,"`: "),r)}}e.aliases.push(i);let o=null;if("undefined"!==typeof t.aliases&&Array.isArray(t.aliases)&&(o=0===t.aliases.length?[null]:t.aliases),null!==o)for(const a of o)a&&0!==a.length&&e.aliases.push(a);const s=null!==o&&o.length>0;if(s&&null===o[0]);else{const t=(s?o[0]:null)||i;!s&&e.name||(e.name=t)}t.configuration&&e.configurationFiles.push(t.configuration),t.icon&&e.icons.push(t.icon)}isRegisteredLanguageId(e){return!!e&&Ai.call(this._languages,e)}getRegisteredLanguageIds(){return Object.keys(this._languages)}getLanguageIdByLanguageName(e){const t=e.toLowerCase();return Ai.call(this._lowercaseNameMap,t)?this._lowercaseNameMap[t]:null}getLanguageIdByMimeType(e){return e&&Ai.call(this._mimeTypesMap,e)?this._mimeTypesMap[e]:null}guessLanguageIdByFilepathOrFirstLine(e,t){return e||t?Ti(e,t):[]}}Pi.instanceCount=0;class Fi extends r.JT{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];super(),this._onDidRequestBasicLanguageFeatures=this._register(new re.Q5),this.onDidRequestBasicLanguageFeatures=this._onDidRequestBasicLanguageFeatures.event,this._onDidRequestRichLanguageFeatures=this._register(new re.Q5),this.onDidRequestRichLanguageFeatures=this._onDidRequestRichLanguageFeatures.event,this._onDidChange=this._register(new re.Q5({leakWarningThreshold:200})),this.onDidChange=this._onDidChange.event,this._requestedBasicLanguages=new Set,this._requestedRichLanguages=new Set,Fi.instanceCount++,this._registry=this._register(new Pi(!0,e)),this.languageIdCodec=this._registry.languageIdCodec,this._register(this._registry.onDidChange((()=>this._onDidChange.fire())))}dispose(){Fi.instanceCount--,super.dispose()}isRegisteredLanguageId(e){return this._registry.isRegisteredLanguageId(e)}getLanguageIdByLanguageName(e){return this._registry.getLanguageIdByLanguageName(e)}getLanguageIdByMimeType(e){return this._registry.getLanguageIdByMimeType(e)}guessLanguageIdByFilepathOrFirstLine(e,t){const i=this._registry.guessLanguageIdByFilepathOrFirstLine(e,t);return(0,_e.Xh)(i,null)}createById(e){return new Bi(this.onDidChange,(()=>this._createAndGetLanguageIdentifier(e)))}createByFilepathOrFirstLine(e,t){return new Bi(this.onDidChange,(()=>{const i=this.guessLanguageIdByFilepathOrFirstLine(e,t);return this._createAndGetLanguageIdentifier(i)}))}_createAndGetLanguageIdentifier(e){return e&&this.isRegisteredLanguageId(e)||(e=w.bd),e}requestBasicLanguageFeatures(e){this._requestedBasicLanguages.has(e)||(this._requestedBasicLanguages.add(e),this._onDidRequestBasicLanguageFeatures.fire(e))}requestRichLanguageFeatures(e){this._requestedRichLanguages.has(e)||(this._requestedRichLanguages.add(e),this.requestBasicLanguageFeatures(e),v.RW.getOrCreate(e),this._onDidRequestRichLanguageFeatures.fire(e))}}Fi.instanceCount=0;class Bi{constructor(e,t){this._onDidChangeLanguages=e,this._selector=t,this._listener=null,this._emitter=null,this.languageId=this._selector()}_dispose(){this._listener&&(this._listener.dispose(),this._listener=null),this._emitter&&(this._emitter.dispose(),this._emitter=null)}get onDidChange(){return this._listener||(this._listener=this._onDidChangeLanguages((()=>this._evaluate()))),this._emitter||(this._emitter=new re.Q5({onDidRemoveLastListener:()=>{this._dispose()}})),this._emitter.event}_evaluate(){var e;const t=this._selector();t!==this.languageId&&(this.languageId=t,null===(e=this._emitter)||void 0===e||e.fire(this.languageId))}}var zi=i(22337),Vi=i(69833),Wi=i(48489),Hi=i(21494),Ki=i(42606),Ui=i(48688),ji=i(65122),qi=i(66193),Gi=i(66561),Qi=i(62974),Zi=i(68406),Yi=i(62502),$i=i(43020);const Ji=/\(&([^\s&])\)|(^|[^&])&([^\s&])/,Xi=/(&)?(&)([^\s&])/g;var en,tn;!function(e){e[e.Right=0]="Right",e[e.Left=1]="Left"}(en||(en={})),function(e){e[e.Above=0]="Above",e[e.Below=1]="Below"}(tn||(tn={}));class nn extends ji.o{constructor(e,t,i,n){e.classList.add("monaco-menu-container"),e.setAttribute("role","presentation");const o=document.createElement("div");o.classList.add("monaco-menu"),o.setAttribute("role","presentation"),super(o,{orientation:1,actionViewItemProvider:e=>this.doGetActionViewItem(e,i,s),context:i.context,actionRunner:i.actionRunner,ariaLabel:i.ariaLabel,ariaRole:"menu",focusOnlyEnabledItems:!0,triggerKeys:{keys:[3,...ct.dz||ct.IJ?[10]:[]],keyDown:!0}}),this.menuStyles=n,this.menuElement=o,this.actionsList.tabIndex=0,this.initializeOrUpdateStyleSheet(e,n),this._register(Ui.o.addTarget(o)),this._register((0,oe.nm)(o,oe.tw.KEY_DOWN,(e=>{new Ct.y(e).equals(2)&&e.preventDefault()}))),i.enableMnemonics&&this._register((0,oe.nm)(o,oe.tw.KEY_DOWN,(e=>{const t=e.key.toLocaleLowerCase();if(this.mnemonics.has(t)){oe.zB.stop(e,!0);const i=this.mnemonics.get(t);if(1===i.length&&(i[0]instanceof sn&&i[0].container&&this.focusItemByElement(i[0].container),i[0].onClick(e)),i.length>1){const e=i.shift();e&&e.container&&(this.focusItemByElement(e.container),i.push(e)),this.mnemonics.set(t,i)}}}))),ct.IJ&&this._register((0,oe.nm)(o,oe.tw.KEY_DOWN,(e=>{const t=new Ct.y(e);t.equals(14)||t.equals(11)?(this.focusedItem=this.viewItems.length-1,this.focusNext(),oe.zB.stop(e,!0)):(t.equals(13)||t.equals(12))&&(this.focusedItem=0,this.focusPrevious(),oe.zB.stop(e,!0))}))),this._register((0,oe.nm)(this.domNode,oe.tw.MOUSE_OUT,(e=>{const t=e.relatedTarget;(0,oe.jg)(t,this.domNode)||(this.focusedItem=void 0,this.updateFocus(),e.stopPropagation())}))),this._register((0,oe.nm)(this.actionsList,oe.tw.MOUSE_OVER,(e=>{let t=e.target;if(t&&(0,oe.jg)(t,this.actionsList)&&t!==this.actionsList){for(;t.parentElement!==this.actionsList&&null!==t.parentElement;)t=t.parentElement;if(t.classList.contains("action-item")){const e=this.focusedItem;this.setFocusedItem(t),e!==this.focusedItem&&this.updateFocus()}}}))),this._register(Ui.o.addTarget(this.actionsList)),this._register((0,oe.nm)(this.actionsList,Ui.t.Tap,(e=>{let t=e.initialTarget;if(t&&(0,oe.jg)(t,this.actionsList)&&t!==this.actionsList){for(;t.parentElement!==this.actionsList&&null!==t.parentElement;)t=t.parentElement;if(t.classList.contains("action-item")){const e=this.focusedItem;this.setFocusedItem(t),e!==this.focusedItem&&this.updateFocus()}}})));const s={parent:this};this.mnemonics=new Map,this.scrollableElement=this._register(new Gi.s$(o,{alwaysConsumeMouseWheel:!0,horizontal:2,vertical:3,verticalScrollbarSize:7,handleMouseWheel:!0,useShadows:!0}));const r=this.scrollableElement.getDomNode();r.style.position="",this.styleScrollElement(r,n),this._register((0,oe.nm)(o,Ui.t.Change,(e=>{oe.zB.stop(e,!0);const t=this.scrollableElement.getScrollPosition().scrollTop;this.scrollableElement.setScrollPosition({scrollTop:t-e.translationY})}))),this._register((0,oe.nm)(r,oe.tw.MOUSE_UP,(e=>{e.preventDefault()})));const a=(0,oe.Jj)(e);o.style.maxHeight="".concat(Math.max(10,a.innerHeight-e.getBoundingClientRect().top-35),"px"),t=t.filter(((e,n)=>{var o;if(null===(o=i.submenuIds)||void 0===o?void 0:o.has(e.id))return console.warn("Found submenu cycle: ".concat(e.id)),!1;if(e instanceof zi.Z0){if(n===t.length-1||0===n)return!1;if(t[n-1]instanceof zi.Z0)return!1}return!0})),this.push(t,{icon:!0,label:!0,isMenu:!0}),e.appendChild(this.scrollableElement.getDomNode()),this.scrollableElement.scanDomNode(),this.viewItems.filter((e=>!(e instanceof rn))).forEach(((e,t,i)=>{e.updatePositionInSet(t+1,i.length)}))}initializeOrUpdateStyleSheet(e,t){this.styleSheet||((0,oe.OO)(e)?this.styleSheet=(0,oe.dS)(e):(nn.globalStyleSheet||(nn.globalStyleSheet=(0,oe.dS)()),this.styleSheet=nn.globalStyleSheet)),this.styleSheet.textContent=function(e,t){let i="\n.monaco-menu {\n\tfont-size: 13px;\n\tborder-radius: 5px;\n\tmin-width: 160px;\n}\n\n".concat(an(Qi.l.menuSelection),"\n").concat(an(Qi.l.menuSubmenu),"\n\n.monaco-menu .monaco-action-bar {\n\ttext-align: right;\n\toverflow: hidden;\n\twhite-space: nowrap;\n}\n\n.monaco-menu .monaco-action-bar .actions-container {\n\tdisplay: flex;\n\tmargin: 0 auto;\n\tpadding: 0;\n\twidth: 100%;\n\tjustify-content: flex-end;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar.reverse .actions-container {\n\tflex-direction: row-reverse;\n}\n\n.monaco-menu .monaco-action-bar .action-item {\n\tcursor: pointer;\n\tdisplay: inline-block;\n\ttransition: transform 50ms ease;\n\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled {\n\tcursor: default;\n}\n\n.monaco-menu .monaco-action-bar .action-item .icon,\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar .action-label {\n\tfont-size: 11px;\n\tmargin-right: 4px;\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label,\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover {\n\tcolor: var(--vscode-disabledForeground);\n}\n\n/* Vertical actions */\n\n.monaco-menu .monaco-action-bar.vertical {\n\ttext-align: left;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tdisplay: block;\n\tborder-bottom: 1px solid var(--vscode-menu-separatorBackground);\n\tpadding-top: 1px;\n\tpadding: 30px;\n}\n\n.monaco-menu .secondary-actions .monaco-action-bar .action-label {\n\tmargin-left: 6px;\n}\n\n/* Action Items */\n.monaco-menu .monaco-action-bar .action-item.select-container {\n\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\n\tflex: 1;\n\tmax-width: 170px;\n\tmin-width: 60px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 10px;\n}\n\n.monaco-menu .monaco-action-bar.vertical {\n\tmargin-left: 0;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tpadding: 0;\n\ttransform: none;\n\tdisplay: flex;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.active {\n\ttransform: none;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\tflex: 1 1 auto;\n\tdisplay: flex;\n\theight: 2em;\n\talign-items: center;\n\tposition: relative;\n\tmargin: 0 4px;\n\tborder-radius: 4px;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .keybinding {\n\topacity: unset;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label {\n\tflex: 1 1 auto;\n\ttext-decoration: none;\n\tpadding: 0 1em;\n\tbackground: none;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .keybinding,\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tdisplay: inline-block;\n\tflex: 2 1 auto;\n\tpadding: 0 1em;\n\ttext-align: right;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon {\n\tfont-size: 16px !important;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before {\n\tmargin-left: auto;\n\tmargin-right: -20px;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator {\n\topacity: 0.4;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) {\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\tmargin: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tposition: static;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu {\n\tposition: absolute;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\twidth: 100%;\n\theight: 0px !important;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator.text {\n\tpadding: 0.7em 1em 0.1em 1em;\n\tfont-weight: bold;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:hover {\n\tcolor: inherit;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tposition: absolute;\n\tvisibility: hidden;\n\twidth: 1em;\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check {\n\tvisibility: visible;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Context Menu */\n\n.context-view.monaco-menu-container {\n\toutline: 0;\n\tborder: none;\n\tanimation: fadeIn 0.083s linear;\n\t-webkit-app-region: no-drag;\n}\n\n.context-view.monaco-menu-container :focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical:focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical :focus {\n\toutline: 0;\n}\n\n.hc-black .context-view.monaco-menu-container,\n.hc-light .context-view.monaco-menu-container,\n:host-context(.hc-black) .context-view.monaco-menu-container,\n:host-context(.hc-light) .context-view.monaco-menu-container {\n\tbox-shadow: none;\n}\n\n.hc-black .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n.hc-light .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n:host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n:host-context(.hc-light) .monaco-menu .monaco-action-bar.vertical .action-item.focused {\n\tbackground: none;\n}\n\n/* Vertical Action Bar Styles */\n\n.monaco-menu .monaco-action-bar.vertical {\n\tpadding: 4px 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\theight: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator),\n.monaco-menu .monaco-action-bar.vertical .keybinding {\n\tfont-size: inherit;\n\tpadding: 0 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tfont-size: inherit;\n\twidth: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tfont-size: inherit;\n\tmargin: 5px 0 !important;\n\tpadding: 0;\n\tborder-radius: 0;\n}\n\n.linux .monaco-menu .monaco-action-bar.vertical .action-label.separator,\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tfont-size: 60%;\n\tpadding: 0 1.8em;\n}\n\n.linux .monaco-menu .monaco-action-bar.vertical .submenu-indicator,\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n\tmask-size: 10px 10px;\n\t-webkit-mask-size: 10px 10px;\n}\n\n.monaco-menu .action-item {\n\tcursor: default;\n}");if(t){i+="\n\t\t\t/* Arrows */\n\t\t\t.monaco-scrollable-element > .scrollbar > .scra {\n\t\t\t\tcursor: pointer;\n\t\t\t\tfont-size: 11px !important;\n\t\t\t}\n\n\t\t\t.monaco-scrollable-element > .visible {\n\t\t\t\topacity: 1;\n\n\t\t\t\t/* Background rule added for IE9 - to allow clicks on dom node */\n\t\t\t\tbackground:rgba(0,0,0,0);\n\n\t\t\t\ttransition: opacity 100ms linear;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .invisible {\n\t\t\t\topacity: 0;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .invisible.fade {\n\t\t\t\ttransition: opacity 800ms linear;\n\t\t\t}\n\n\t\t\t/* Scrollable Content Inset Shadow */\n\t\t\t.monaco-scrollable-element > .shadow {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.top {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 3px;\n\t\t\t\theight: 3px;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.left {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 3px;\n\t\t\t\tleft: 0;\n\t\t\t\theight: 100%;\n\t\t\t\twidth: 3px;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.top-left-corner {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 0;\n\t\t\t\theight: 3px;\n\t\t\t\twidth: 3px;\n\t\t\t}\n\t\t";const t=e.scrollbarShadow;t&&(i+="\n\t\t\t\t.monaco-scrollable-element > .shadow.top {\n\t\t\t\t\tbox-shadow: ".concat(t," 0 6px 6px -6px inset;\n\t\t\t\t}\n\n\t\t\t\t.monaco-scrollable-element > .shadow.left {\n\t\t\t\t\tbox-shadow: ").concat(t," 6px 0 6px -6px inset;\n\t\t\t\t}\n\n\t\t\t\t.monaco-scrollable-element > .shadow.top.left {\n\t\t\t\t\tbox-shadow: ").concat(t," 6px 6px 6px -6px inset;\n\t\t\t\t}\n\t\t\t"));const n=e.scrollbarSliderBackground;n&&(i+="\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider {\n\t\t\t\t\tbackground: ".concat(n,";\n\t\t\t\t}\n\t\t\t"));const o=e.scrollbarSliderHoverBackground;o&&(i+="\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider:hover {\n\t\t\t\t\tbackground: ".concat(o,";\n\t\t\t\t}\n\t\t\t"));const s=e.scrollbarSliderActiveBackground;s&&(i+="\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider.active {\n\t\t\t\t\tbackground: ".concat(s,";\n\t\t\t\t}\n\t\t\t"))}return i}(t,(0,oe.OO)(e))}styleScrollElement(e,t){var i,n;const o=null!==(i=t.foregroundColor)&&void 0!==i?i:"",s=null!==(n=t.backgroundColor)&&void 0!==n?n:"",r=t.borderColor?"1px solid ".concat(t.borderColor):"",a=t.shadowColor?"0 2px 8px ".concat(t.shadowColor):"";e.style.outline=r,e.style.borderRadius="5px",e.style.color=o,e.style.backgroundColor=s,e.style.boxShadow=a}getContainer(){return this.scrollableElement.getDomNode()}get onScroll(){return this.scrollableElement.onScroll}focusItemByElement(e){const t=this.focusedItem;this.setFocusedItem(e),t!==this.focusedItem&&this.updateFocus()}setFocusedItem(e){for(let t=0;t{this.element&&(this._register((0,oe.nm)(this.element,oe.tw.MOUSE_UP,(e=>{if(oe.zB.stop(e,!0),Ki.vU){if(new Hi.n((0,oe.Jj)(this.element),e).rightButton)return;this.onClick(e)}else setTimeout((()=>{this.onClick(e)}),0)}))),this._register((0,oe.nm)(this.element,oe.tw.CONTEXT_MENU,(e=>{oe.zB.stop(e,!0)}))))}),100),this._register(this.runOnceToEnableMouseUp)}render(e){super.render(e),this.element&&(this.container=e,this.item=(0,oe.R3)(this.element,(0,oe.$)("a.action-menu-item")),this._action.id===zi.Z0.ID?this.item.setAttribute("role","presentation"):(this.item.setAttribute("role","menuitem"),this.mnemonic&&this.item.setAttribute("aria-keyshortcuts","".concat(this.mnemonic))),this.check=(0,oe.R3)(this.item,(0,oe.$)("span.menu-item-check"+Yi.k.asCSSSelector(Qi.l.menuSelection))),this.check.setAttribute("role","none"),this.label=(0,oe.R3)(this.item,(0,oe.$)("span.action-label")),this.options.label&&this.options.keybinding&&((0,oe.R3)(this.item,(0,oe.$)("span.keybinding")).textContent=this.options.keybinding),this.runOnceToEnableMouseUp.schedule(),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked(),this.applyStyle())}blur(){super.blur(),this.applyStyle()}focus(){var e;super.focus(),null===(e=this.item)||void 0===e||e.focus(),this.applyStyle()}updatePositionInSet(e,t){this.item&&(this.item.setAttribute("aria-posinset","".concat(e)),this.item.setAttribute("aria-setsize","".concat(t)))}updateLabel(){var e;if(this.label&&this.options.label){(0,oe.PO)(this.label);let t=(0,$i.x$)(this.action.label);if(t){const i=function(e){const t=Ji,i=t.exec(e);if(!i)return e;const n=!i[1];return e.replace(t,n?"$2$3":"").trim()}(t);this.options.enableMnemonics||(t=i),this.label.setAttribute("aria-label",i.replace(/&&/g,"&"));const n=Ji.exec(t);if(n){t=a.YU(t),Xi.lastIndex=0;let i=Xi.exec(t);for(;i&&i[1];)i=Xi.exec(t);const o=e=>e.replace(/&&/g,"&");i?this.label.append(a.j3(o(t.substr(0,i.index))," "),(0,oe.$)("u",{"aria-hidden":"true"},i[3]),a.oL(o(t.substr(i.index+i[0].length))," ")):this.label.innerText=o(t).trim(),null===(e=this.item)||void 0===e||e.setAttribute("aria-keyshortcuts",(n[1]?n[1]:n[3]).toLocaleLowerCase())}else this.label.innerText=t.replace(/&&/g,"&").trim()}}}updateTooltip(){}updateClass(){this.cssClass&&this.item&&this.item.classList.remove(...this.cssClass.split(" ")),this.options.icon&&this.label?(this.cssClass=this.action.class||"",this.label.classList.add("icon"),this.cssClass&&this.label.classList.add(...this.cssClass.split(" ")),this.updateEnabled()):this.label&&this.label.classList.remove("icon")}updateEnabled(){this.action.enabled?(this.element&&(this.element.classList.remove("disabled"),this.element.removeAttribute("aria-disabled")),this.item&&(this.item.classList.remove("disabled"),this.item.removeAttribute("aria-disabled"),this.item.tabIndex=0)):(this.element&&(this.element.classList.add("disabled"),this.element.setAttribute("aria-disabled","true")),this.item&&(this.item.classList.add("disabled"),this.item.setAttribute("aria-disabled","true")))}updateChecked(){if(!this.item)return;const e=this.action.checked;this.item.classList.toggle("checked",!!e),void 0!==e?(this.item.setAttribute("role","menuitemcheckbox"),this.item.setAttribute("aria-checked",e?"true":"false")):(this.item.setAttribute("role","menuitem"),this.item.setAttribute("aria-checked",""))}getMnemonic(){return this.mnemonic}applyStyle(){const e=this.element&&this.element.classList.contains("focused"),t=e&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor,i=e&&this.menuStyle.selectionBackgroundColor?this.menuStyle.selectionBackgroundColor:void 0,n=e&&this.menuStyle.selectionBorderColor?"1px solid ".concat(this.menuStyle.selectionBorderColor):"",o=e&&this.menuStyle.selectionBorderColor?"-1px":"";this.item&&(this.item.style.color=null!==t&&void 0!==t?t:"",this.item.style.backgroundColor=null!==i&&void 0!==i?i:"",this.item.style.outline=n,this.item.style.outlineOffset=o),this.check&&(this.check.style.color=null!==t&&void 0!==t?t:"")}}class sn extends on{constructor(e,t,i,n,o){super(e,e,n,o),this.submenuActions=t,this.parentData=i,this.submenuOptions=n,this.mysubmenu=null,this.submenuDisposables=this._register(new r.SL),this.mouseOver=!1,this.expandDirection=n&&void 0!==n.expandDirection?n.expandDirection:{horizontal:en.Right,vertical:tn.Below},this.showScheduler=new ei.pY((()=>{this.mouseOver&&(this.cleanupExistingSubmenu(!1),this.createSubmenu(!1))}),250),this.hideScheduler=new ei.pY((()=>{this.element&&!(0,oe.jg)((0,oe.vY)(),this.element)&&this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))}),750)}render(e){super.render(e),this.element&&(this.item&&(this.item.classList.add("monaco-submenu-item"),this.item.tabIndex=0,this.item.setAttribute("aria-haspopup","true"),this.updateAriaExpanded("false"),this.submenuIndicator=(0,oe.R3)(this.item,(0,oe.$)("span.submenu-indicator"+Yi.k.asCSSSelector(Qi.l.menuSubmenu))),this.submenuIndicator.setAttribute("aria-hidden","true")),this._register((0,oe.nm)(this.element,oe.tw.KEY_UP,(e=>{const t=new Ct.y(e);(t.equals(17)||t.equals(3))&&(oe.zB.stop(e,!0),this.createSubmenu(!0))}))),this._register((0,oe.nm)(this.element,oe.tw.KEY_DOWN,(e=>{const t=new Ct.y(e);(0,oe.vY)()===this.item&&(t.equals(17)||t.equals(3))&&oe.zB.stop(e,!0)}))),this._register((0,oe.nm)(this.element,oe.tw.MOUSE_OVER,(e=>{this.mouseOver||(this.mouseOver=!0,this.showScheduler.schedule())}))),this._register((0,oe.nm)(this.element,oe.tw.MOUSE_LEAVE,(e=>{this.mouseOver=!1}))),this._register((0,oe.nm)(this.element,oe.tw.FOCUS_OUT,(e=>{this.element&&!(0,oe.jg)((0,oe.vY)(),this.element)&&this.hideScheduler.schedule()}))),this._register(this.parentData.parent.onScroll((()=>{this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))}))))}updateEnabled(){}onClick(e){oe.zB.stop(e,!0),this.cleanupExistingSubmenu(!1),this.createSubmenu(!0)}cleanupExistingSubmenu(e){if(this.parentData.submenu&&(e||this.parentData.submenu!==this.mysubmenu)){try{this.parentData.submenu.dispose()}catch(t){}this.parentData.submenu=void 0,this.updateAriaExpanded("false"),this.submenuContainer&&(this.submenuDisposables.clear(),this.submenuContainer=void 0)}}calculateSubmenuMenuLayout(e,t,i,n){const o={top:0,left:0};return o.left=St(e.width,t.width,{position:n.horizontal===en.Right?0:1,offset:i.left,size:i.width}),o.left>=i.left&&o.left0&&void 0!==arguments[0])||arguments[0];if(this.element)if(this.parentData.submenu)this.parentData.submenu.focus(!1);else{this.updateAriaExpanded("true"),this.submenuContainer=(0,oe.R3)(this.element,(0,oe.$)("div.monaco-submenu")),this.submenuContainer.classList.add("menubar-menu-items-holder","context-view");const t=(0,oe.Jj)(this.parentData.parent.domNode).getComputedStyle(this.parentData.parent.domNode),i=parseFloat(t.paddingTop||"0")||0;this.submenuContainer.style.zIndex="1",this.submenuContainer.style.position="fixed",this.submenuContainer.style.top="0",this.submenuContainer.style.left="0",this.parentData.submenu=new nn(this.submenuContainer,this.submenuActions.length?this.submenuActions:[new zi.eZ],this.submenuOptions,this.menuStyle);const n=this.element.getBoundingClientRect(),o={top:n.top-i,left:n.left,height:n.height+2*i,width:n.width},s=this.submenuContainer.getBoundingClientRect(),r=(0,oe.Jj)(this.element),{top:a,left:l}=this.calculateSubmenuMenuLayout(new oe.Ro(r.innerWidth,r.innerHeight),oe.Ro.lift(s),o,this.expandDirection);this.submenuContainer.style.left="".concat(l-s.left,"px"),this.submenuContainer.style.top="".concat(a-s.top,"px"),this.submenuDisposables.add((0,oe.nm)(this.submenuContainer,oe.tw.KEY_UP,(e=>{new Ct.y(e).equals(15)&&(oe.zB.stop(e,!0),this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0))}))),this.submenuDisposables.add((0,oe.nm)(this.submenuContainer,oe.tw.KEY_DOWN,(e=>{new Ct.y(e).equals(15)&&oe.zB.stop(e,!0)}))),this.submenuDisposables.add(this.parentData.submenu.onDidCancel((()=>{this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0)}))),this.parentData.submenu.focus(e),this.mysubmenu=this.parentData.submenu}}updateAriaExpanded(e){var t;this.item&&(null===(t=this.item)||void 0===t||t.setAttribute("aria-expanded",e))}applyStyle(){super.applyStyle();const e=this.element&&this.element.classList.contains("focused")&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor;this.submenuIndicator&&(this.submenuIndicator.style.color=null!==e&&void 0!==e?e:"")}dispose(){super.dispose(),this.hideScheduler.dispose(),this.mysubmenu&&(this.mysubmenu.dispose(),this.mysubmenu=null),this.submenuContainer&&(this.submenuContainer=void 0)}}class rn extends qi.gU{constructor(e,t,i,n){super(e,t,i),this.menuStyles=n}render(e){super.render(e),this.label&&(this.label.style.borderBottomColor=this.menuStyles.separatorColor?"".concat(this.menuStyles.separatorColor):"")}}function an(e){const t=(0,Zi.u)()[e.id];return".codicon-".concat(e.id,":before { content: '\\").concat(t.toString(16),"'; }")}var ln=i(29581);class hn{constructor(e,t,i,n){this.contextViewService=e,this.telemetryService=t,this.notificationService=i,this.keybindingService=n,this.focusToReturn=null,this.lastContainer=null,this.block=null,this.blockDisposable=null,this.options={blockMouse:!0}}configure(e){this.options=e}showContextMenu(e){const t=e.getActions();if(!t.length)return;let i;this.focusToReturn=(0,oe.vY)();const n=e.domForShadowRoot instanceof HTMLElement?e.domForShadowRoot:void 0;this.contextViewService.showContextView({getAnchor:()=>e.getAnchor(),canRelayout:!1,anchorAlignment:e.anchorAlignment,anchorAxisAlignment:e.anchorAxisAlignment,render:n=>{var o;this.lastContainer=n;const s=e.getMenuClassName?e.getMenuClassName():"";s&&(n.className+=" "+s),this.options.blockMouse&&(this.block=n.appendChild((0,oe.$)(".context-view-block")),this.block.style.position="fixed",this.block.style.cursor="initial",this.block.style.left="0",this.block.style.top="0",this.block.style.width="100%",this.block.style.height="100%",this.block.style.zIndex="-1",null===(o=this.blockDisposable)||void 0===o||o.dispose(),this.blockDisposable=(0,oe.nm)(this.block,oe.tw.MOUSE_DOWN,(e=>e.stopPropagation())));const a=new r.SL,l=e.actionRunner||new zi.Wi;l.onWillRun((t=>this.onActionRun(t,!e.skipTelemetry)),this,a),l.onDidRun(this.onDidActionRun,this,a),i=new nn(n,t,{actionViewItemProvider:e.getActionViewItem,context:e.getActionsContext?e.getActionsContext():null,actionRunner:l,getKeyBinding:e.getKeyBinding?e.getKeyBinding:e=>this.keybindingService.lookupKeybinding(e.id)},ln.ZR),i.onDidCancel((()=>this.contextViewService.hideContextView(!0)),null,a),i.onDidBlur((()=>this.contextViewService.hideContextView(!0)),null,a);const h=(0,oe.Jj)(n);return a.add((0,oe.nm)(h,oe.tw.BLUR,(()=>this.contextViewService.hideContextView(!0)))),a.add((0,oe.nm)(h,oe.tw.MOUSE_DOWN,(e=>{if(e.defaultPrevented)return;const t=new Hi.n(h,e);let i=t.target;if(!t.rightButton){for(;i;){if(i===n)return;i=i.parentElement}this.contextViewService.hideContextView(!0)}}))),(0,r.F8)(a,i)},focus:()=>{null===i||void 0===i||i.focus(!!e.autoSelectFirstItem)},onHide:t=>{var i,n,o;null===(i=e.onHide)||void 0===i||i.call(e,!!t),this.block&&(this.block.remove(),this.block=null),null===(n=this.blockDisposable)||void 0===n||n.dispose(),this.blockDisposable=null,this.lastContainer&&((0,oe.vY)()===this.lastContainer||(0,oe.jg)((0,oe.vY)(),this.lastContainer))&&(null===(o=this.focusToReturn)||void 0===o||o.focus()),this.lastContainer=null}},n,!!n)}onActionRun(e,t){t&&this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.action.id,from:"contextMenu"}),this.contextViewService.hideContextView(!1)}onDidActionRun(e){e.error&&!(0,Le.n2)(e.error)&&this.notificationService.error(e.error)}}var dn=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},cn=function(e,t){return function(i,n){t(i,n,e)}};let un=class extends r.JT{get contextMenuHandler(){return this._contextMenuHandler||(this._contextMenuHandler=new hn(this.contextViewService,this.telemetryService,this.notificationService,this.keybindingService)),this._contextMenuHandler}constructor(e,t,i,n,o,s){super(),this.telemetryService=e,this.notificationService=t,this.contextViewService=i,this.keybindingService=n,this.menuService=o,this.contextKeyService=s,this._contextMenuHandler=void 0,this._onDidShowContextMenu=this._store.add(new re.Q5),this.onDidShowContextMenu=this._onDidShowContextMenu.event,this._onDidHideContextMenu=this._store.add(new re.Q5)}configure(e){this.contextMenuHandler.configure(e)}showContextMenu(e){e=gn.transform(e,this.menuService,this.contextKeyService),this.contextMenuHandler.showContextMenu({...e,onHide:t=>{var i;null===(i=e.onHide)||void 0===i||i.call(e,t),this._onDidHideContextMenu.fire()}}),oe._q.getInstance().resetKeyStatus(),this._onDidShowContextMenu.fire()}};var gn;un=dn([cn(0,bi.b),cn(1,xe.lT),cn(2,ot.u),cn(3,st.d),cn(4,Wi.co),cn(5,ue.i6)],un),function(e){e.transform=function(e,t,i){if(!((n=e)&&n.menuId instanceof Wi.eH))return e;var n;const{menuId:o,menuActionOptions:s,contextKeyService:r}=e;return{...e,getActions:()=>{const n=[];if(o){const e=t.createMenu(o,null!==r&&void 0!==r?r:i);(0,Vi.LJ)(e,s,n),e.dispose()}return e.getActions?zi.Z0.join(e.getActions(),n):n}}}}(gn||(gn={}));var mn,fn=i(16113),pn=i(61423);!function(e){e[e.API=0]="API",e[e.USER=1]="USER"}(mn||(mn={}));var _n=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},vn=function(e,t){return function(i,n){t(i,n,e)}};let bn=class{constructor(e){this._commandService=e}async open(e,t){if(!(0,se.xn)(e,se.lg.command))return!1;if(!(null===t||void 0===t?void 0:t.allowCommands))return!0;if("string"===typeof e&&(e=l.o.parse(e)),Array.isArray(t.allowCommands)&&!t.allowCommands.includes(e.path))return!0;let i=[];try{i=(0,pn.Qc)(decodeURIComponent(e.query))}catch(n){try{i=(0,pn.Qc)(e.query)}catch(o){}}return Array.isArray(i)||(i=[i]),await this._commandService.executeCommand(e.path,...i),!0}};bn=_n([vn(0,Kt.H)],bn);let Cn=class{constructor(e){this._editorService=e}async open(e,t){"string"===typeof e&&(e=l.o.parse(e));const{selection:i,uri:n}=(0,lt.x)(e);return(e=n).scheme===se.lg.file&&(e=(0,yi.AH)(e)),await this._editorService.openCodeEditor({resource:e,options:{selection:i,source:(null===t||void 0===t?void 0:t.fromUserGesture)?mn.USER:mn.API,...null===t||void 0===t?void 0:t.editorOptions}},this._editorService.getFocusedCodeEditor(),null===t||void 0===t?void 0:t.openToSide),!0}};Cn=_n([vn(0,c.$)],Cn);let wn=class{constructor(e,t){this._openers=new ae.S,this._validators=new ae.S,this._resolvers=new ae.S,this._resolvedUriTargets=new Ut.Y9((e=>e.with({path:null,fragment:null,query:null}).toString())),this._externalOpeners=new ae.S,this._defaultExternalOpener={openExternal:async e=>((0,se.Gs)(e,se.lg.http,se.lg.https)?oe.V3(e):s.E.location.href=e,!0)},this._openers.push({open:async(e,t)=>!(!(null===t||void 0===t?void 0:t.openExternal)&&!(0,se.Gs)(e,se.lg.mailto,se.lg.http,se.lg.https,se.lg.vsls))&&(await this._doOpenExternal(e,t),!0)}),this._openers.push(new bn(t)),this._openers.push(new Cn(e))}registerOpener(e){return{dispose:this._openers.unshift(e)}}async open(e,t){var i;const n="string"===typeof e?l.o.parse(e):e,o=null!==(i=this._resolvedUriTargets.get(n))&&void 0!==i?i:e;for(const s of this._validators)if(!await s.shouldOpen(o,t))return!1;for(const s of this._openers){if(await s.open(e,t))return!0}return!1}async resolveExternalUri(e,t){for(const n of this._resolvers)try{const i=await n.resolveExternalUri(e,t);if(i)return this._resolvedUriTargets.has(i.resolved)||this._resolvedUriTargets.set(i.resolved,e),i}catch(i){}throw new Error("Could not resolve external URI: "+e.toString())}async _doOpenExternal(e,t){const i="string"===typeof e?l.o.parse(e):e;let n,o;try{n=(await this.resolveExternalUri(i,t)).resolved}catch(s){n=i}if(o="string"===typeof e&&i.toString()===n.toString()?e:encodeURI(n.toString(!0)),null===t||void 0===t?void 0:t.allowContributedOpeners){const e="string"===typeof(null===t||void 0===t?void 0:t.allowContributedOpeners)?null===t||void 0===t?void 0:t.allowContributedOpeners:void 0;for(const t of this._externalOpeners){if(await t.openExternal(o,{sourceUri:i,preferredOpenerId:e},fn.T.None))return!0}}return this._defaultExternalOpener.openExternal(o,{sourceUri:i},fn.T.None)}dispose(){this._validators.clear()}};wn=_n([vn(0,c.$),vn(1,Kt.H)],wn);var yn=i(60918),Sn=i(41911),Ln=i(36729),kn=i(99927),Dn=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Nn=function(e,t){return function(i,n){t(i,n,e)}};let xn=class extends r.JT{constructor(e,t){super(),this._markerService=t,this._onDidChangeMarker=this._register(new re.Q5),this._markerDecorations=new Ut.Y9,e.getModels().forEach((e=>this._onModelAdded(e))),this._register(e.onModelAdded(this._onModelAdded,this)),this._register(e.onModelRemoved(this._onModelRemoved,this)),this._register(this._markerService.onMarkerChanged(this._handleMarkerChange,this))}dispose(){super.dispose(),this._markerDecorations.forEach((e=>e.dispose())),this._markerDecorations.clear()}getMarker(e,t){const i=this._markerDecorations.get(e);return i&&i.getMarker(t)||null}_handleMarkerChange(e){e.forEach((e=>{const t=this._markerDecorations.get(e);t&&this._updateDecorations(t)}))}_onModelAdded(e){const t=new En(e);this._markerDecorations.set(e.uri,t),this._updateDecorations(t)}_onModelRemoved(e){var t;const i=this._markerDecorations.get(e.uri);i&&(i.dispose(),this._markerDecorations.delete(e.uri)),e.uri.scheme!==se.lg.inMemory&&e.uri.scheme!==se.lg.internal&&e.uri.scheme!==se.lg.vscode||null===(t=this._markerService)||void 0===t||t.read({resource:e.uri}).map((e=>e.owner)).forEach((t=>this._markerService.remove(t,[e.uri])))}_updateDecorations(e){const t=this._markerService.read({resource:e.model.uri,take:500});e.update(t)&&this._onDidChangeMarker.fire(e.model)}};xn=Dn([Nn(0,L.q),Nn(1,Sn.lT)],xn);class En extends r.JT{constructor(e){super(),this.model=e,this._map=new Ut.YQ,this._register((0,r.OF)((()=>{this.model.deltaDecorations([...this._map.values()],[]),this._map.clear()})))}update(e){const{added:t,removed:i}=(0,kn.q)(new Set(this._map.keys()),new Set(e));if(0===t.length&&0===i.length)return!1;const n=i.map((e=>this._map.get(e))),o=t.map((e=>({range:this._createDecorationRange(this.model,e),options:this._createDecorationOption(e)}))),s=this.model.deltaDecorations(n,o);for(const r of i)this._map.delete(r);for(let r=0;r=t)return i;const n=e.getWordAtPosition(i.getStartPosition());n&&(i=new Vt.e(i.startLineNumber,n.startColumn,i.endLineNumber,n.endColumn))}else if(t.endColumn===Number.MAX_VALUE&&1===t.startColumn&&i.startLineNumber===i.endLineNumber){const n=e.getLineFirstNonWhitespaceColumn(t.startLineNumber);n=0}}var In,Tn=i(11974),Mn=i(22659),An=i(88975),Rn=i(48367),On=i(29193),Pn=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Fn=function(e,t){return function(i,n){t(i,n,e)}};function Bn(e){return e.toString()}class zn{constructor(e,t,i){this.model=e,this._modelEventListeners=new r.SL,this.model=e,this._modelEventListeners.add(e.onWillDispose((()=>t(e)))),this._modelEventListeners.add(e.onDidChangeLanguage((t=>i(e,t))))}dispose(){this._modelEventListeners.dispose()}}const Vn=ct.IJ||ct.dz?1:2;class Wn{constructor(e,t,i,n,o,s,r,a){this.uri=e,this.initialUndoRedoSnapshot=t,this.time=i,this.sharesUndoRedoStack=n,this.heapSize=o,this.sha1=s,this.versionId=r,this.alternativeVersionId=a}}let Hn=In=class extends r.JT{constructor(e,t,i,n,o){super(),this._configurationService=e,this._resourcePropertiesService=t,this._undoRedoService=i,this._languageService=n,this._languageConfigurationService=o,this._onModelAdded=this._register(new re.Q5),this.onModelAdded=this._onModelAdded.event,this._onModelRemoved=this._register(new re.Q5),this.onModelRemoved=this._onModelRemoved.event,this._onModelModeChanged=this._register(new re.Q5),this.onModelLanguageChanged=this._onModelModeChanged.event,this._modelCreationOptionsByLanguageAndResource=Object.create(null),this._models={},this._disposedModels=new Map,this._disposedModelsHeapSize=0,this._register(this._configurationService.onDidChangeConfiguration((e=>this._updateModelOptions(e)))),this._updateModelOptions(void 0)}static _readModelOptions(e,t){var i;let n=An.D.tabSize;if(e.editor&&"undefined"!==typeof e.editor.tabSize){const t=parseInt(e.editor.tabSize,10);isNaN(t)||(n=t),n<1&&(n=1)}let o="tabSize";if(e.editor&&"undefined"!==typeof e.editor.indentSize&&"tabSize"!==e.editor.indentSize){const t=parseInt(e.editor.indentSize,10);isNaN(t)||(o=Math.max(t,1))}let s=An.D.insertSpaces;e.editor&&"undefined"!==typeof e.editor.insertSpaces&&(s="false"!==e.editor.insertSpaces&&Boolean(e.editor.insertSpaces));let r=Vn;const a=e.eol;"\r\n"===a?r=2:"\n"===a&&(r=1);let l=An.D.trimAutoWhitespace;e.editor&&"undefined"!==typeof e.editor.trimAutoWhitespace&&(l="false"!==e.editor.trimAutoWhitespace&&Boolean(e.editor.trimAutoWhitespace));let h=An.D.detectIndentation;e.editor&&"undefined"!==typeof e.editor.detectIndentation&&(h="false"!==e.editor.detectIndentation&&Boolean(e.editor.detectIndentation));let d=An.D.largeFileOptimizations;e.editor&&"undefined"!==typeof e.editor.largeFileOptimizations&&(d="false"!==e.editor.largeFileOptimizations&&Boolean(e.editor.largeFileOptimizations));let c=An.D.bracketPairColorizationOptions;return(null===(i=e.editor)||void 0===i?void 0:i.bracketPairColorization)&&"object"===typeof e.editor.bracketPairColorization&&(c={enabled:!!e.editor.bracketPairColorization.enabled,independentColorPoolPerBracketType:!!e.editor.bracketPairColorization.independentColorPoolPerBracketType}),{isForSimpleWidget:t,tabSize:n,indentSize:o,insertSpaces:s,detectIndentation:h,defaultEOL:r,trimAutoWhitespace:l,largeFileOptimizations:d,bracketPairColorizationOptions:c}}_getEOL(e,t){if(e)return this._resourcePropertiesService.getEOL(e,t);const i=this._configurationService.getValue("files.eol",{overrideIdentifier:t});return i&&"string"===typeof i&&"auto"!==i?i:3===ct.OS||2===ct.OS?"\n":"\r\n"}_shouldRestoreUndoStack(){const e=this._configurationService.getValue("files.restoreUndoStack");return"boolean"!==typeof e||e}getCreationOptions(e,t,i){const n="string"===typeof e?e:e.languageId;let o=this._modelCreationOptionsByLanguageAndResource[n+t];if(!o){const e=this._configurationService.getValue("editor",{overrideIdentifier:n,resource:t}),s=this._getEOL(t,n);o=In._readModelOptions({editor:e,eol:s},i),this._modelCreationOptionsByLanguageAndResource[n+t]=o}return o}_updateModelOptions(e){const t=this._modelCreationOptionsByLanguageAndResource;this._modelCreationOptionsByLanguageAndResource=Object.create(null);const i=Object.keys(this._models);for(let n=0,o=i.length;ne){const t=[];for(this._disposedModels.forEach((e=>{e.sharesUndoRedoStack||t.push(e)})),t.sort(((e,t)=>e.time-t.time));t.length>0&&this._disposedModelsHeapSize>e;){const e=t.shift();this._removeDisposedModel(e.uri),null!==e.initialUndoRedoSnapshot&&this._undoRedoService.restoreSnapshot(e.initialUndoRedoSnapshot)}}}_createModelData(e,t,i,n){const o=this.getCreationOptions(t,i,n),s=new Mn.yO(e,t,o,i,this._undoRedoService,this._languageService,this._languageConfigurationService);if(i&&this._disposedModels.has(Bn(i))){const e=this._removeDisposedModel(i),t=this._undoRedoService.getElements(i),n=this._getSHA1Computer(),o=!!n.canComputeSHA1(s)&&n.computeSHA1(s)===e.sha1;if(o||e.sharesUndoRedoStack){for(const e of t.past)(0,On.e9)(e)&&e.matchesResource(i)&&e.setModel(s);for(const e of t.future)(0,On.e9)(e)&&e.matchesResource(i)&&e.setModel(s);this._undoRedoService.setElementsValidFlag(i,!0,(e=>(0,On.e9)(e)&&e.matchesResource(i))),o&&(s._overwriteVersionId(e.versionId),s._overwriteAlternativeVersionId(e.alternativeVersionId),s._overwriteInitialUndoRedoSnapshot(e.initialUndoRedoSnapshot))}else null!==e.initialUndoRedoSnapshot&&this._undoRedoService.restoreSnapshot(e.initialUndoRedoSnapshot)}const r=Bn(s.uri);if(this._models[r])throw new Error("ModelService: Cannot add model because it already exists!");const a=new zn(s,(e=>this._onWillDispose(e)),((e,t)=>this._onDidChangeLanguage(e,t)));return this._models[r]=a,a}createModel(e,t,i){let n,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return n=t?this._createModelData(e,t,i,o):this._createModelData(e,w.bd,i,o),this._onModelAdded.fire(n.model),n.model}getModels(){const e=[],t=Object.keys(this._models);for(let i=0,n=t.length;i0||t.future.length>0){for(const i of t.past)(0,On.e9)(i)&&i.matchesResource(e.uri)&&(o=!0,s+=i.heapSize(e.uri),i.setModel(e.uri));for(const i of t.future)(0,On.e9)(i)&&i.matchesResource(e.uri)&&(o=!0,s+=i.heapSize(e.uri),i.setModel(e.uri))}}const r=In.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK,a=this._getSHA1Computer();if(o)if(n||!(s>r)&&a.canComputeSHA1(e))this._ensureDisposedModelsHeapSize(r-s),this._undoRedoService.setElementsValidFlag(e.uri,!1,(t=>(0,On.e9)(t)&&t.matchesResource(e.uri))),this._insertDisposedModel(new Wn(e.uri,i.model.getInitialUndoRedoSnapshot(),Date.now(),n,s,a.computeSHA1(e),e.getVersionId(),e.getAlternativeVersionId()));else{const e=i.model.getInitialUndoRedoSnapshot();null!==e&&this._undoRedoService.restoreSnapshot(e)}else if(!n){const e=i.model.getInitialUndoRedoSnapshot();null!==e&&this._undoRedoService.restoreSnapshot(e)}delete this._models[t],i.dispose(),delete this._modelCreationOptionsByLanguageAndResource[e.getLanguageId()+e.uri],this._onModelRemoved.fire(e)}_onDidChangeLanguage(e,t){const i=t.oldLanguage,n=e.getLanguageId(),o=this.getCreationOptions(i,e.uri,e.isForSimpleWidget),s=this.getCreationOptions(n,e.uri,e.isForSimpleWidget);In._setModelOptionsForModel(e,s,o),this._onModelModeChanged.fire({model:e,oldLanguageId:i})}_getSHA1Computer(){return new Kn}};Hn.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK=20971520,Hn=In=Pn([Fn(0,V.Ui),Fn(1,Ht.y),Fn(2,Ee.tJ),Fn(3,b.O),Fn(4,C.c_)],Hn);class Kn{canComputeSHA1(e){return e.getValueLength()<=Kn.MAX_MODEL_SIZE}computeSHA1(e){const t=new Rn.yP,i=e.createSnapshot();let n;for(;n=i.read();)t.update(n);return t.digest()}}Kn.MAX_MODEL_SIZE=10485760;var Un=i(53643),jn=i(35786),qn=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Gn=function(e,t){return function(i,n){t(i,n,e)}};let Qn=class extends r.JT{constructor(e,t){super(),this.quickInputService=e,this.instantiationService=t,this.registry=Gt.B.as(Un.IP.Quickaccess),this.mapProviderToDescriptor=new Map,this.lastAcceptedPickerValues=new Map,this.visibleQuickAccess=void 0}show(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;this.doShowOrPick(e,!1,t)}doShowOrPick(e,t,i){var n,o,s;const[a,l]=this.getOrInstantiateProvider(e),h=this.visibleQuickAccess,d=null===h||void 0===h?void 0:h.descriptor;if(h&&l&&d===l)return e===l.prefix||(null===i||void 0===i?void 0:i.preserveValue)||(h.picker.value=e),void this.adjustValueSelection(h.picker,l,i);if(l&&!(null===i||void 0===i?void 0:i.preserveValue)){let t;if(h&&d&&d!==l){const e=h.value.substr(d.prefix.length);e&&(t="".concat(l.prefix).concat(e))}if(!t){const e=null===a||void 0===a?void 0:a.defaultFilterValue;e===Un.Ry.LAST?t=this.lastAcceptedPickerValues.get(l):"string"===typeof e&&(t="".concat(l.prefix).concat(e))}"string"===typeof t&&(e=t)}const c=null===(n=null===h||void 0===h?void 0:h.picker)||void 0===n?void 0:n.valueSelection,u=null===(o=null===h||void 0===h?void 0:h.picker)||void 0===o?void 0:o.value,g=new r.SL,m=g.add(this.quickInputService.createQuickPick());let f;m.value=e,this.adjustValueSelection(m,l,i),m.placeholder=null===l||void 0===l?void 0:l.placeholder,m.quickNavigate=null===i||void 0===i?void 0:i.quickNavigateConfiguration,m.hideInput=!!m.quickNavigate&&!h,("number"===typeof(null===i||void 0===i?void 0:i.itemActivation)||(null===i||void 0===i?void 0:i.quickNavigateConfiguration))&&(m.itemActivation=null!==(s=null===i||void 0===i?void 0:i.itemActivation)&&void 0!==s?s:jn.jG.SECOND),m.contextKey=null===l||void 0===l?void 0:l.contextKey,m.filterValue=e=>e.substring(l?l.prefix.length:0),t&&(f=new ei.CR,g.add(re.ju.once(m.onWillAccept)((e=>{e.veto(),m.hide()})))),g.add(this.registerPickerListeners(m,a,l,e,null===i||void 0===i?void 0:i.providerOptions));const p=g.add(new fn.A);return a&&g.add(a.provide(m,p.token,null===i||void 0===i?void 0:i.providerOptions)),re.ju.once(m.onDidHide)((()=>{0===m.selectedItems.length&&p.cancel(),g.dispose(),null===f||void 0===f||f.complete(m.selectedItems.slice(0))})),m.show(),c&&u===e&&(m.valueSelection=c),t?null===f||void 0===f?void 0:f.p:void 0}adjustValueSelection(e,t,i){var n;let o;o=(null===i||void 0===i?void 0:i.preserveValue)?[e.value.length,e.value.length]:[null!==(n=null===t||void 0===t?void 0:t.prefix.length)&&void 0!==n?n:0,e.value.length],e.valueSelection=o}registerPickerListeners(e,t,i,n,o){const s=new r.SL,a=this.visibleQuickAccess={picker:e,descriptor:i,value:n};return s.add((0,r.OF)((()=>{a===this.visibleQuickAccess&&(this.visibleQuickAccess=void 0)}))),s.add(e.onDidChangeValue((e=>{const[i]=this.getOrInstantiateProvider(e);i!==t?this.show(e,{preserveValue:!0,providerOptions:o}):a.value=e}))),i&&s.add(e.onDidAccept((()=>{this.lastAcceptedPickerValues.set(i,e.value)}))),s}getOrInstantiateProvider(e){const t=this.registry.getQuickAccessProvider(e);if(!t)return[void 0,void 0];let i=this.mapProviderToDescriptor.get(t);return i||(i=this.instantiationService.createInstance(t.ctor),this.mapProviderToDescriptor.set(t,i)),[i,t]}};Qn=qn([Gn(0,jn.eJ),Gn(1,ve.TG)],Qn);var Zn=i(79242),Yn=i(3640),$n=i(76272),Jn=i(58276),Xn=i(30333),eo=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r};class to{constructor(e){this.nodes=e}toString(){return this.nodes.map((e=>"string"===typeof e?e:e.label)).join("")}}eo([Xn.H],to.prototype,"toString",null);const io=/\[([^\]]+)\]\(((?:https?:\/\/|command:|file:)[^\)\s]+)(?: (["'])(.+?)(\3))?\)/gi;const no={},oo=new Jn.R("quick-input-button-icon-");function so(e,t,i){let n=e.iconClass||function(e){if(!e)return;let t;const i=e.dark.toString();return no[i]?t=no[i]:(t=oo.nextId(),oe.fk(".".concat(t,", .hc-light .").concat(t),"background-image: ".concat(oe.wY(e.light||e.dark))),oe.fk(".vs-dark .".concat(t,", .hc-black .").concat(t),"background-image: ".concat(oe.wY(e.dark))),no[i]=t),t}(e.iconPath);return e.alwaysVisible&&(n=n?"".concat(n," always-visible"):"always-visible"),{id:t,label:"",tooltip:e.tooltip||"",class:n,enabled:!0,run:i}}function ro(e,t,i){oe.mc(t);const n=function(e){const t=[];let i,n=0;for(;i=io.exec(e);){i.index-n>0&&t.push(e.substring(n,i.index));const[,o,s,,r]=i;r?t.push({label:o,href:s,title:r}):t.push({label:o,href:s}),n=i.index+i[0].length}return n{oe.cl(e)&&oe.zB.stop(e,!0),i.callback(s.href)},a=i.disposables.add(new Yn.Y(n,oe.tw.CLICK)).event,l=i.disposables.add(new Yn.Y(n,oe.tw.KEY_DOWN)).event,h=re.ju.chain(l,(e=>e.filter((e=>{const t=new Ct.y(e);return t.equals(10)||t.equals(3)}))));i.disposables.add(Ui.o.addTarget(n));const d=i.disposables.add(new Yn.Y(n,Ui.t.Tap)).event;re.ju.any(a,d,h)(r,null,i.disposables),t.appendChild(n)}}var ao=i(51927),lo=i(25938),ho=i(75404),co=i(75826),uo=i(73187);const go=new uo.o((()=>{const e=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});return{collator:e,collatorIsNumeric:e.resolvedOptions().numeric}}));new uo.o((()=>({collator:new Intl.Collator(void 0,{numeric:!0})}))),new uo.o((()=>({collator:new Intl.Collator(void 0,{numeric:!0,sensitivity:"accent"})})));function mo(e,t,i){const n=e.toLowerCase(),o=t.toLowerCase(),s=function(e,t,i){const n=e.toLowerCase(),o=t.toLowerCase(),s=n.startsWith(i),r=o.startsWith(i);if(s!==r)return s?-1:1;if(s&&r){if(n.lengtho.length)return 1}return 0}(e,t,i);if(s)return s;const r=n.endsWith(i);if(r!==o.endsWith(i))return r?-1:1;const a=function(e,t){const i=e||"",n=t||"",o=go.value.collator.compare(i,n);return go.value.collatorIsNumeric&&0===o&&i!==n?i=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},vo=function(e,t){return function(i,n){t(i,n,e)}};const bo=oe.$;var Co,wo;!function(e){e[e.First=1]="First",e[e.Second=2]="Second",e[e.Last=3]="Last",e[e.Next=4]="Next",e[e.Previous=5]="Previous",e[e.NextPage=6]="NextPage",e[e.PreviousPage=7]="PreviousPage",e[e.NextSeparator=8]="NextSeparator",e[e.PreviousSeparator=9]="PreviousSeparator"}(Co||(Co={}));class yo{constructor(e,t,i){this.index=e,this.hasCheckbox=t,this._hidden=!1,this._init=new uo.o((()=>{var e;const t=null!==(e=i.label)&&void 0!==e?e:"",n=(0,$i.Ho)(t).text.trim(),o=i.ariaLabel||[t,this.saneDescription,this.saneDetail].map((e=>(0,$i.JL)(e))).filter((e=>!!e)).join(", ");return{saneLabel:t,saneSortLabel:n,saneAriaLabel:o}})),this._saneDescription=i.description,this._saneTooltip=i.tooltip}get saneLabel(){return this._init.value.saneLabel}get saneSortLabel(){return this._init.value.saneSortLabel}get saneAriaLabel(){return this._init.value.saneAriaLabel}get element(){return this._element}set element(e){this._element=e}get hidden(){return this._hidden}set hidden(e){this._hidden=e}get saneDescription(){return this._saneDescription}set saneDescription(e){this._saneDescription=e}get saneDetail(){return this._saneDetail}set saneDetail(e){this._saneDetail=e}get saneTooltip(){return this._saneTooltip}set saneTooltip(e){this._saneTooltip=e}get labelHighlights(){return this._labelHighlights}set labelHighlights(e){this._labelHighlights=e}get descriptionHighlights(){return this._descriptionHighlights}set descriptionHighlights(e){this._descriptionHighlights=e}get detailHighlights(){return this._detailHighlights}set detailHighlights(e){this._detailHighlights=e}}class So extends yo{constructor(e,t,i,n,o,s){var r,a,l;super(e,t,o),this.fireButtonTriggered=i,this._onChecked=n,this.item=o,this._separator=s,this._checked=!1,this.onChecked=t?re.ju.map(re.ju.filter(this._onChecked.event,(e=>e.element===this)),(e=>e.checked)):re.ju.None,this._saneDetail=o.detail,this._labelHighlights=null===(r=o.highlights)||void 0===r?void 0:r.label,this._descriptionHighlights=null===(a=o.highlights)||void 0===a?void 0:a.description,this._detailHighlights=null===(l=o.highlights)||void 0===l?void 0:l.detail}get separator(){return this._separator}set separator(e){this._separator=e}get checked(){return this._checked}set checked(e){e!==this._checked&&(this._checked=e,this._onChecked.fire({element:this,checked:e}))}get checkboxDisabled(){return!!this.item.disabled}}!function(e){e[e.NONE=0]="NONE",e[e.MOUSE_HOVER=1]="MOUSE_HOVER",e[e.ACTIVE_ITEM=2]="ACTIVE_ITEM"}(wo||(wo={}));class Lo extends yo{constructor(e,t,i){super(e,!1,i),this.fireSeparatorButtonTriggered=t,this.separator=i,this.children=new Array,this.focusInsideSeparator=wo.NONE}}class ko{getHeight(e){return e instanceof Lo?30:e.saneDetail?44:22}getTemplateId(e){return e instanceof So?xo.ID:Eo.ID}}class Do{getWidgetAriaLabel(){return(0,De.NC)("quickInput","Quick Input")}getAriaLabel(e){var t;return(null===(t=e.separator)||void 0===t?void 0:t.label)?"".concat(e.saneAriaLabel,", ").concat(e.separator.label):e.saneAriaLabel}getWidgetRole(){return"listbox"}getRole(e){return e.hasCheckbox?"checkbox":"option"}isChecked(e){if(e.hasCheckbox&&e instanceof So)return{value:e.checked,onDidChange:e.onChecked}}}class No{constructor(e){this.hoverDelegate=e}renderTemplate(e){const t=Object.create(null);t.toDisposeElement=new r.SL,t.toDisposeTemplate=new r.SL,t.entry=oe.R3(e,bo(".quick-input-list-entry"));const i=oe.R3(t.entry,bo("label.quick-input-list-label"));t.toDisposeTemplate.add(oe.mu(i,oe.tw.CLICK,(e=>{t.checkbox.offsetParent||e.preventDefault()}))),t.checkbox=oe.R3(i,bo("input.quick-input-list-checkbox")),t.checkbox.type="checkbox";const n=oe.R3(i,bo(".quick-input-list-rows")),o=oe.R3(n,bo(".quick-input-list-row")),s=oe.R3(n,bo(".quick-input-list-row"));t.label=new lo.g(o,{supportHighlights:!0,supportDescriptionHighlights:!0,supportIcons:!0,hoverDelegate:this.hoverDelegate}),t.toDisposeTemplate.add(t.label),t.icon=oe.Ce(t.label.element,bo(".quick-input-list-icon"));const a=oe.R3(o,bo(".quick-input-list-entry-keybinding"));t.keybinding=new ho.e(a,ct.OS),t.toDisposeTemplate.add(t.keybinding);const l=oe.R3(s,bo(".quick-input-list-label-meta"));return t.detail=new lo.g(l,{supportHighlights:!0,supportIcons:!0,hoverDelegate:this.hoverDelegate}),t.toDisposeTemplate.add(t.detail),t.separator=oe.R3(t.entry,bo(".quick-input-list-separator")),t.actionBar=new ji.o(t.entry,this.hoverDelegate?{hoverDelegate:this.hoverDelegate}:void 0),t.actionBar.domNode.classList.add("quick-input-list-entry-action-bar"),t.toDisposeTemplate.add(t.actionBar),t}disposeTemplate(e){e.toDisposeElement.dispose(),e.toDisposeTemplate.dispose()}disposeElement(e,t,i){i.toDisposeElement.clear(),i.actionBar.clear()}}let xo=fo=class extends No{constructor(e,t){super(e),this.themeService=t,this._itemsWithSeparatorsFrequency=new Map}get templateId(){return fo.ID}renderTemplate(e){const t=super.renderTemplate(e);return t.toDisposeTemplate.add(oe.mu(t.checkbox,oe.tw.CHANGE,(e=>{t.element.checked=t.checkbox.checked}))),t}renderElement(e,t,i){var n,o,s;const r=e.element;i.element=r,r.element=null!==(n=i.entry)&&void 0!==n?n:void 0;const a=r.item;i.checkbox.checked=r.checked,i.toDisposeElement.add(r.onChecked((e=>i.checkbox.checked=e))),i.checkbox.disabled=r.checkboxDisabled;const{labelHighlights:h,descriptionHighlights:d,detailHighlights:c}=r;if(a.iconPath){const e=(0,co._T)(this.themeService.getColorTheme().type)?a.iconPath.dark:null!==(o=a.iconPath.light)&&void 0!==o?o:a.iconPath.dark,t=l.o.revive(e);i.icon.className="quick-input-list-icon",i.icon.style.backgroundImage=oe.wY(t)}else i.icon.style.backgroundImage="",i.icon.className=a.iconClass?"quick-input-list-icon ".concat(a.iconClass):"";let u;!r.saneTooltip&&r.saneDescription&&(u={markdown:{value:r.saneDescription,supportThemeIcons:!0},markdownNotSupportedFallback:r.saneDescription});const g={matches:h||[],descriptionTitle:u,descriptionMatches:d||[],labelEscapeNewLines:!0};if(g.extraClasses=a.iconClasses,g.italic=a.italic,g.strikethrough=a.strikethrough,i.entry.classList.remove("quick-input-list-separator-as-item"),i.label.setLabel(r.saneLabel,r.saneDescription,g),i.keybinding.set(a.keybinding),r.saneDetail){let e;r.saneTooltip||(e={markdown:{value:r.saneDetail,supportThemeIcons:!0},markdownNotSupportedFallback:r.saneDetail}),i.detail.element.style.display="",i.detail.setLabel(r.saneDetail,void 0,{matches:c,title:e,labelEscapeNewLines:!0})}else i.detail.element.style.display="none";(null===(s=r.separator)||void 0===s?void 0:s.label)?(i.separator.textContent=r.separator.label,i.separator.style.display="",this.addItemWithSeparator(r)):i.separator.style.display="none",i.entry.classList.toggle("quick-input-list-separator-border",!!r.separator);const m=a.buttons;m&&m.length?(i.actionBar.push(m.map(((e,t)=>so(e,"id-".concat(t),(()=>r.fireButtonTriggered({button:e,item:r.item}))))),{icon:!0,label:!1}),i.entry.classList.add("has-actions")):i.entry.classList.remove("has-actions")}disposeElement(e,t,i){this.removeItemWithSeparator(e.element),super.disposeElement(e,t,i)}isItemWithSeparatorVisible(e){return this._itemsWithSeparatorsFrequency.has(e)}addItemWithSeparator(e){this._itemsWithSeparatorsFrequency.set(e,(this._itemsWithSeparatorsFrequency.get(e)||0)+1)}removeItemWithSeparator(e){const t=this._itemsWithSeparatorsFrequency.get(e)||0;t>1?this._itemsWithSeparatorsFrequency.set(e,t-1):this._itemsWithSeparatorsFrequency.delete(e)}};xo.ID="quickpickitem",xo=fo=_o([vo(1,le.XE)],xo);class Eo extends No{constructor(){super(...arguments),this._visibleSeparatorsFrequency=new Map}get templateId(){return Eo.ID}get visibleSeparators(){return[...this._visibleSeparatorsFrequency.keys()]}isSeparatorVisible(e){return this._visibleSeparatorsFrequency.has(e)}renderElement(e,t,i){var n;const o=e.element;i.element=o,o.element=null!==(n=i.entry)&&void 0!==n?n:void 0,o.element.classList.toggle("focus-inside",!!o.focusInsideSeparator);const s=o.separator,{labelHighlights:r,descriptionHighlights:a,detailHighlights:l}=o;let h;i.icon.style.backgroundImage="",i.icon.className="",!o.saneTooltip&&o.saneDescription&&(h={markdown:{value:o.saneDescription,supportThemeIcons:!0},markdownNotSupportedFallback:o.saneDescription});const d={matches:r||[],descriptionTitle:h,descriptionMatches:a||[],labelEscapeNewLines:!0};if(i.entry.classList.add("quick-input-list-separator-as-item"),i.label.setLabel(o.saneLabel,o.saneDescription,d),o.saneDetail){let e;o.saneTooltip||(e={markdown:{value:o.saneDetail,supportThemeIcons:!0},markdownNotSupportedFallback:o.saneDetail}),i.detail.element.style.display="",i.detail.setLabel(o.saneDetail,void 0,{matches:l,title:e,labelEscapeNewLines:!0})}else i.detail.element.style.display="none";i.separator.style.display="none",i.entry.classList.add("quick-input-list-separator-border");const c=s.buttons;c&&c.length?(i.actionBar.push(c.map(((e,t)=>so(e,"id-".concat(t),(()=>o.fireSeparatorButtonTriggered({button:e,separator:o.separator}))))),{icon:!0,label:!1}),i.entry.classList.add("has-actions")):i.entry.classList.remove("has-actions"),this.addSeparator(o)}disposeElement(e,t,i){var n;this.removeSeparator(e.element),this.isSeparatorVisible(e.element)||null===(n=e.element.element)||void 0===n||n.classList.remove("focus-inside"),super.disposeElement(e,t,i)}addSeparator(e){this._visibleSeparatorsFrequency.set(e,(this._visibleSeparatorsFrequency.get(e)||0)+1)}removeSeparator(e){const t=this._visibleSeparatorsFrequency.get(e)||0;t>1?this._visibleSeparatorsFrequency.set(e,t-1):this._visibleSeparatorsFrequency.delete(e)}}Eo.ID="quickpickseparator";let Io=class extends r.JT{constructor(e,t,i,n,o){super(),this.parent=e,this.hoverDelegate=t,this.linkOpenerDelegate=i,this._onKeyDown=new re.Q5,this.onKeyDown=this._onKeyDown.event,this._onLeave=new re.Q5,this.onLeave=this._onLeave.event,this._onChangedAllVisibleChecked=new re.Q5,this.onChangedAllVisibleChecked=this._onChangedAllVisibleChecked.event,this._onChangedCheckedCount=new re.Q5,this.onChangedCheckedCount=this._onChangedCheckedCount.event,this._onChangedVisibleCount=new re.Q5,this.onChangedVisibleCount=this._onChangedVisibleCount.event,this._onChangedCheckedElements=new re.Q5,this.onChangedCheckedElements=this._onChangedCheckedElements.event,this._onButtonTriggered=new re.Q5,this.onButtonTriggered=this._onButtonTriggered.event,this._onSeparatorButtonTriggered=new re.Q5,this.onSeparatorButtonTriggered=this._onSeparatorButtonTriggered.event,this._onTriggerEmptySelectionOrFocus=new re.Q5,this._elementChecked=new re.Q5,this._inputElements=new Array,this._elementTree=new Array,this._itemElements=new Array,this._elementDisposable=this._register(new r.SL),this._shouldFireCheckedEvents=!0,this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._matchOnLabelMode="fuzzy",this._sortByLabel=!0,this._container=oe.R3(this.parent,bo(".quick-input-list")),this._separatorRenderer=new Eo(t),this._itemRenderer=o.createInstance(xo,t),this._tree=this._register(o.createInstance(ao.PF,"QuickInput",this._container,new ko,[this._itemRenderer,this._separatorRenderer],{accessibilityProvider:new Do,setRowLineHeight:!1,multipleSelectionSupport:!1,hideTwistiesOfChildlessElements:!0,renderIndentGuides:po.E4.None,findWidgetEnabled:!1,indent:0,horizontalScrolling:!1,allowNonCollapsibleParents:!0,identityProvider:{getId:e=>{var t,i,n,o,s,r,a,l;return null!==(l=null!==(r=null!==(o=null!==(i=null===(t=e.item)||void 0===t?void 0:t.id)&&void 0!==i?i:null===(n=e.item)||void 0===n?void 0:n.label)&&void 0!==o?o:null===(s=e.separator)||void 0===s?void 0:s.id)&&void 0!==r?r:null===(a=e.separator)||void 0===a?void 0:a.label)&&void 0!==l?l:""}},alwaysConsumeMouseWheel:!0})),this._tree.getHTMLElement().id=n,this._registerListeners()}get onDidChangeFocus(){return re.ju.map(re.ju.any(this._tree.onDidChangeFocus,this._onTriggerEmptySelectionOrFocus.event),(e=>e.elements.filter((e=>e instanceof So)).map((e=>e.item))))}get onDidChangeSelection(){return re.ju.map(re.ju.any(this._tree.onDidChangeSelection,this._onTriggerEmptySelectionOrFocus.event),(e=>({items:e.elements.filter((e=>e instanceof So)).map((e=>e.item)),event:e.browserEvent})))}get scrollTop(){return this._tree.scrollTop}set scrollTop(e){this._tree.scrollTop=e}get ariaLabel(){return this._tree.ariaLabel}set ariaLabel(e){this._tree.ariaLabel=null!==e&&void 0!==e?e:""}set enabled(e){this._tree.getHTMLElement().style.pointerEvents=e?"":"none"}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(e){this._matchOnDescription=e}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(e){this._matchOnDetail=e}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(e){this._matchOnLabel=e}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(e){this._matchOnLabelMode=e}get sortByLabel(){return this._sortByLabel}set sortByLabel(e){this._sortByLabel=e}_registerListeners(){this._registerOnKeyDown(),this._registerOnContainerClick(),this._registerOnMouseMiddleClick(),this._registerOnElementChecked(),this._registerOnContextMenu(),this._registerHoverListeners(),this._registerSelectionChangeListener(),this._registerSeparatorActionShowingListeners()}_registerOnKeyDown(){this._register(this._tree.onKeyDown((e=>{const t=new Ct.y(e);switch(t.keyCode){case 10:this.toggleCheckbox();break;case 31:(ct.dz?e.metaKey:e.ctrlKey)&&this._tree.setFocus(this._itemElements);break;case 16:{const e=this._tree.getFocus();1===e.length&&e[0]===this._itemElements[0]&&this._onLeave.fire();break}case 18:{const e=this._tree.getFocus();1===e.length&&e[0]===this._itemElements[this._itemElements.length-1]&&this._onLeave.fire();break}}this._onKeyDown.fire(t)})))}_registerOnContainerClick(){this._register(oe.nm(this._container,oe.tw.CLICK,(e=>{(e.x||e.y)&&this._onLeave.fire()})))}_registerOnMouseMiddleClick(){this._register(oe.nm(this._container,oe.tw.AUXCLICK,(e=>{1===e.button&&this._onLeave.fire()})))}_registerOnElementChecked(){this._register(this._elementChecked.event((e=>this._fireCheckedEvents())))}_registerOnContextMenu(){this._register(this._tree.onContextMenu((e=>{e.element&&(e.browserEvent.preventDefault(),this._tree.setSelection([e.element]))})))}_registerHoverListeners(){const e=this._register(new ei.rH(this.hoverDelegate.delay));this._register(this._tree.onMouseOver((async t=>{var i;if(t.browserEvent.target instanceof HTMLAnchorElement)e.cancel();else if(t.browserEvent.relatedTarget instanceof HTMLAnchorElement||!oe.jg(t.browserEvent.relatedTarget,null===(i=t.element)||void 0===i?void 0:i.element))try{await e.trigger((async()=>{t.element instanceof So&&this.showHover(t.element)}))}catch(t){if(!(0,Le.n2)(t))throw t}}))),this._register(this._tree.onMouseOut((t=>{var i;oe.jg(t.browserEvent.relatedTarget,null===(i=t.element)||void 0===i?void 0:i.element)||e.cancel()})))}_registerSeparatorActionShowingListeners(){this._register(this._tree.onDidChangeFocus((e=>{const t=e.elements[0]?this._tree.getParentElement(e.elements[0]):null;for(const i of this._separatorRenderer.visibleSeparators){const e=i===t;!!(i.focusInsideSeparator&wo.ACTIVE_ITEM)!==e&&(e?i.focusInsideSeparator|=wo.ACTIVE_ITEM:i.focusInsideSeparator&=~wo.ACTIVE_ITEM,this._tree.rerender(i))}}))),this._register(this._tree.onMouseOver((e=>{const t=e.element?this._tree.getParentElement(e.element):null;for(const i of this._separatorRenderer.visibleSeparators){if(i!==t)continue;!!(i.focusInsideSeparator&wo.MOUSE_HOVER)||(i.focusInsideSeparator|=wo.MOUSE_HOVER,this._tree.rerender(i))}}))),this._register(this._tree.onMouseOut((e=>{const t=e.element?this._tree.getParentElement(e.element):null;for(const i of this._separatorRenderer.visibleSeparators){if(i!==t)continue;!!(i.focusInsideSeparator&wo.MOUSE_HOVER)&&(i.focusInsideSeparator&=~wo.MOUSE_HOVER,this._tree.rerender(i))}})))}_registerSelectionChangeListener(){this._register(this._tree.onDidChangeSelection((e=>{const t=e.elements.filter((e=>e instanceof So));t.length!==e.elements.length&&(1===e.elements.length&&e.elements[0]instanceof Lo&&(this._tree.setFocus([e.elements[0].children[0]]),this._tree.reveal(e.elements[0],0)),this._tree.setSelection(t))})))}getAllVisibleChecked(){return this._allVisibleChecked(this._itemElements,!1)}getCheckedCount(){return this._itemElements.filter((e=>e.checked)).length}getVisibleCount(){return this._itemElements.filter((e=>!e.hidden)).length}setAllVisibleChecked(e){try{this._shouldFireCheckedEvents=!1,this._itemElements.forEach((t=>{t.hidden||t.checkboxDisabled||(t.checked=e)}))}finally{this._shouldFireCheckedEvents=!0,this._fireCheckedEvents()}}setElements(e){this._elementDisposable.clear(),this._inputElements=e;const t=this.parent.classList.contains("show-checkboxes");let i;this._itemElements=new Array,this._elementTree=e.reduce(((n,o,s)=>{let r;if("separator"===o.type){if(!o.buttons)return n;i=new Lo(s,(e=>this.fireSeparatorButtonTriggered(e)),o),r=i}else{const a=s>0?e[s-1]:void 0;let l;a&&"separator"===a.type&&!a.buttons&&(i=void 0,l=a);const h=new So(s,t,(e=>this.fireButtonTriggered(e)),this._elementChecked,o,l);if(this._itemElements.push(h),i)return i.children.push(h),n;r=h}return n.push(r),n}),new Array);const n=new Array;let o=0;for(const s of this._elementTree)s instanceof Lo?(n.push({element:s,collapsible:!1,collapsed:!1,children:s.children.map((e=>({element:e,collapsible:!1,collapsed:!1})))}),o+=s.children.length+1):(n.push({element:s,collapsible:!1,collapsed:!1}),o++);this._tree.setChildren(null,n),this._onChangedVisibleCount.fire(o)}setFocusedElements(e){const t=e.map((e=>this._itemElements.find((t=>t.item===e)))).filter((e=>!!e));if(this._tree.setFocus(t),e.length>0){const e=this._tree.getFocus()[0];e&&this._tree.reveal(e)}}getActiveDescendant(){return this._tree.getHTMLElement().getAttribute("aria-activedescendant")}setSelectedElements(e){const t=e.map((e=>this._itemElements.find((t=>t.item===e)))).filter((e=>!!e));this._tree.setSelection(t)}getCheckedElements(){return this._itemElements.filter((e=>e.checked)).map((e=>e.item))}setCheckedElements(e){try{this._shouldFireCheckedEvents=!1;const t=new Set;for(const i of e)t.add(i);for(const e of this._itemElements)e.checked=t.has(e.item)}finally{this._shouldFireCheckedEvents=!0,this._fireCheckedEvents()}}focus(e){var t;if(this._itemElements.length)switch(e===Co.Second&&this._itemElements.length<2&&(e=Co.First),e){case Co.First:this._tree.scrollTop=0,this._tree.focusFirst(void 0,(e=>e.element instanceof So));break;case Co.Second:this._tree.scrollTop=0,this._tree.setFocus([this._itemElements[1]]);break;case Co.Last:this._tree.scrollTop=this._tree.scrollHeight,this._tree.setFocus([this._itemElements[this._itemElements.length-1]]);break;case Co.Next:this._tree.focusNext(void 0,!0,void 0,(e=>e.element instanceof So&&(this._tree.reveal(e.element),!0)));break;case Co.Previous:this._tree.focusPrevious(void 0,!0,void 0,(e=>{if(!(e.element instanceof So))return!1;const t=this._tree.getParentElement(e.element);return null===t||t.children[0]!==e.element?this._tree.reveal(e.element):this._tree.reveal(t),!0}));break;case Co.NextPage:this._tree.focusNextPage(void 0,(e=>e.element instanceof So&&(this._tree.reveal(e.element),!0)));break;case Co.PreviousPage:this._tree.focusPreviousPage(void 0,(e=>{if(!(e.element instanceof So))return!1;const t=this._tree.getParentElement(e.element);return null===t||t.children[0]!==e.element?this._tree.reveal(e.element):this._tree.reveal(t),!0}));break;case Co.NextSeparator:{let e=!1;const t=this._tree.getFocus()[0];this._tree.focusNext(void 0,!0,void 0,(t=>{if(e)return!0;if(t.element instanceof Lo)e=!0,this._separatorRenderer.isSeparatorVisible(t.element)?this._tree.reveal(t.element.children[0]):this._tree.reveal(t.element,0);else if(t.element instanceof So){if(t.element.separator)return this._itemRenderer.isItemWithSeparatorVisible(t.element)?this._tree.reveal(t.element):this._tree.reveal(t.element,0),!0;if(t.element===this._elementTree[0])return this._tree.reveal(t.element,0),!0}return!1}));t===this._tree.getFocus()[0]&&(this._tree.scrollTop=this._tree.scrollHeight,this._tree.setFocus([this._itemElements[this._itemElements.length-1]]));break}case Co.PreviousSeparator:{let e,i=!!(null===(t=this._tree.getFocus()[0])||void 0===t?void 0:t.separator);this._tree.focusPrevious(void 0,!0,void 0,(t=>{if(t.element instanceof Lo)i?e||(this._separatorRenderer.isSeparatorVisible(t.element)?this._tree.reveal(t.element):this._tree.reveal(t.element,0),e=t.element.children[0]):i=!0;else if(t.element instanceof So&&!e)if(t.element.separator)this._itemRenderer.isItemWithSeparatorVisible(t.element)?this._tree.reveal(t.element):this._tree.reveal(t.element,0),e=t.element;else if(t.element===this._elementTree[0])return this._tree.reveal(t.element,0),!0;return!1})),e&&this._tree.setFocus([e]);break}}}clearFocus(){this._tree.setFocus([])}domFocus(){this._tree.domFocus()}layout(e){this._tree.getHTMLElement().style.maxHeight=e?"".concat(44*Math.floor(e/44)+6,"px"):"",this._tree.layout()}filter(e){if(!(this._sortByLabel||this._matchOnLabel||this._matchOnDescription||this._matchOnDetail))return this._tree.layout(),!1;const t=e;if((e=e.trim())&&(this.matchOnLabel||this.matchOnDescription||this.matchOnDetail)){let i;this._elementTree.forEach((n=>{var o,s,r,l;let h;h="fuzzy"===this.matchOnLabelMode?this.matchOnLabel&&null!==(o=(0,$i.Gt)(e,(0,$i.Ho)(n.saneLabel)))&&void 0!==o?o:void 0:this.matchOnLabel&&null!==(s=function(e,t){const{text:i,iconOffsets:n}=t;if(!n||0===n.length)return To(e,i);const o=(0,a.j3)(i," "),s=i.length-o.length,r=To(e,o);if(r)for(const a of r){const e=n[a.start+s]+s;a.start+=e,a.end+=e}return r}(t,(0,$i.Ho)(n.saneLabel)))&&void 0!==s?s:void 0;const d=this.matchOnDescription&&null!==(r=(0,$i.Gt)(e,(0,$i.Ho)(n.saneDescription||"")))&&void 0!==r?r:void 0,c=this.matchOnDetail&&null!==(l=(0,$i.Gt)(e,(0,$i.Ho)(n.saneDetail||"")))&&void 0!==l?l:void 0;if(h||d||c?(n.labelHighlights=h,n.descriptionHighlights=d,n.detailHighlights=c,n.hidden=!1):(n.labelHighlights=void 0,n.descriptionHighlights=void 0,n.detailHighlights=void 0,n.hidden=!n.item||!n.item.alwaysShow),n.item?n.separator=void 0:n.separator&&(n.hidden=!0),!this.sortByLabel){const e=n.index&&this._inputElements[n.index-1];i=e&&"separator"===e.type?e:i,i&&!n.hidden&&(n.separator=i,i=void 0)}}))}else this._itemElements.forEach((e=>{e.labelHighlights=void 0,e.descriptionHighlights=void 0,e.detailHighlights=void 0,e.hidden=!1;const t=e.index&&this._inputElements[e.index-1];e.item&&(e.separator=t&&"separator"===t.type&&!t.buttons?t:void 0)}));const i=this._elementTree.filter((e=>!e.hidden));if(this.sortByLabel&&e){const t=e.toLowerCase();i.sort(((e,i)=>function(e,t,i){const n=e.labelHighlights||[],o=t.labelHighlights||[];if(n.length&&!o.length)return-1;if(!n.length&&o.length)return 1;if(0===n.length&&0===o.length)return 0;return mo(e.saneSortLabel,t.saneSortLabel,i)}(e,i,t)))}let n;const o=i.reduce(((e,t,i)=>(t instanceof So?n?n.children.push(t):e.push(t):t instanceof Lo&&(t.children=[],n=t,e.push(t)),e)),new Array),s=new Array;for(const a of o)a instanceof Lo?s.push({element:a,collapsible:!1,collapsed:!1,children:a.children.map((e=>({element:e,collapsible:!1,collapsed:!1})))}):s.push({element:a,collapsible:!1,collapsed:!1});const r=this._tree.getFocus().length;return this._tree.setChildren(null,s),r>0&&0===s.length&&this._onTriggerEmptySelectionOrFocus.fire({elements:[]}),this._tree.layout(),this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedVisibleCount.fire(i.length),!0}toggleCheckbox(){try{this._shouldFireCheckedEvents=!1;const e=this._tree.getFocus().filter((e=>e instanceof So)),t=this._allVisibleChecked(e);for(const i of e)i.checkboxDisabled||(i.checked=!t)}finally{this._shouldFireCheckedEvents=!0,this._fireCheckedEvents()}}display(e){this._container.style.display=e?"":"none"}isDisplayed(){return"none"!==this._container.style.display}style(e){this._tree.style(e)}toggleHover(){const e=this._tree.getFocus()[0];if(!(null===e||void 0===e?void 0:e.saneTooltip)||!(e instanceof So))return;if(this._lastHover&&!this._lastHover.isDisposed)return void this._lastHover.dispose();this.showHover(e);const t=new r.SL;t.add(this._tree.onDidChangeFocus((e=>{e.elements[0]instanceof So&&this.showHover(e.elements[0])}))),this._lastHover&&t.add(this._lastHover),this._elementDisposable.add(t)}_allVisibleChecked(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];for(let i=0,n=e.length;i{this.linkOpenerDelegate(e)},appearance:{showPointer:!0},container:this._container,position:{hoverPosition:1}},!1))}};function To(e,t){const i=t.toLowerCase().indexOf(e.toLowerCase());return-1!==i?[{start:i,end:i+e.length}]:null}_o([Xn.H],Io.prototype,"onDidChangeFocus",null),_o([Xn.H],Io.prototype,"onDidChangeSelection",null),Io=_o([vo(4,ve.TG)],Io);var Mo=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ao=function(e,t){return function(i,n){t(i,n,e)}};const Ro={iconClass:Yi.k.asClassName(Qi.l.quickInputBack),tooltip:(0,De.NC)("quickInput.back","Back"),handle:-1};class Oo extends r.JT{constructor(e){super(),this.ui=e,this._widgetUpdated=!1,this.visible=!1,this._enabled=!0,this._busy=!1,this._ignoreFocusOut=!1,this._buttons=[],this.buttonsUpdated=!1,this._toggles=[],this.togglesUpdated=!1,this.noValidationMessage=Oo.noPromptMessage,this._severity=ke.Z.Ignore,this.onDidTriggerButtonEmitter=this._register(new re.Q5),this.onDidHideEmitter=this._register(new re.Q5),this.onWillHideEmitter=this._register(new re.Q5),this.onDisposeEmitter=this._register(new re.Q5),this.visibleDisposables=this._register(new r.SL),this.onDidHide=this.onDidHideEmitter.event}get title(){return this._title}set title(e){this._title=e,this.update()}get description(){return this._description}set description(e){this._description=e,this.update()}get step(){return this._steps}set step(e){this._steps=e,this.update()}get totalSteps(){return this._totalSteps}set totalSteps(e){this._totalSteps=e,this.update()}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this.update()}get contextKey(){return this._contextKey}set contextKey(e){this._contextKey=e,this.update()}get busy(){return this._busy}set busy(e){this._busy=e,this.update()}get ignoreFocusOut(){return this._ignoreFocusOut}set ignoreFocusOut(e){const t=this._ignoreFocusOut!==e&&!ct.gn;this._ignoreFocusOut=e&&!ct.gn,t&&this.update()}get buttons(){return this._buttons}set buttons(e){this._buttons=e,this.buttonsUpdated=!0,this.update()}get toggles(){return this._toggles}set toggles(e){this._toggles=null!==e&&void 0!==e?e:[],this.togglesUpdated=!0,this.update()}get validationMessage(){return this._validationMessage}set validationMessage(e){this._validationMessage=e,this.update()}get severity(){return this._severity}set severity(e){this._severity=e,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.onDidTriggerButton((e=>{-1!==this.buttons.indexOf(e)&&this.onDidTriggerButtonEmitter.fire(e)}))),this.ui.show(this),this.visible=!0,this._lastValidationMessage=void 0,this._lastSeverity=void 0,this.buttons.length&&(this.buttonsUpdated=!0),this.toggles.length&&(this.togglesUpdated=!0),this.update())}hide(){this.visible&&this.ui.hide()}didHide(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:jn.Jq.Other;this.visible=!1,this.visibleDisposables.clear(),this.onDidHideEmitter.fire({reason:e})}willHide(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:jn.Jq.Other;this.onWillHideEmitter.fire({reason:e})}update(){var e,t;if(!this.visible)return;const i=this.getTitle();i&&this.ui.title.textContent!==i?this.ui.title.textContent=i:i||" "===this.ui.title.innerHTML||(this.ui.title.innerText="\xa0");const n=this.getDescription();if(this.ui.description1.textContent!==n&&(this.ui.description1.textContent=n),this.ui.description2.textContent!==n&&(this.ui.description2.textContent=n),this._widgetUpdated&&(this._widgetUpdated=!1,this._widget?oe.mc(this.ui.widget,this._widget):oe.mc(this.ui.widget)),this.busy&&!this.busyDelay&&(this.busyDelay=new ei._F,this.busyDelay.setIfNotSet((()=>{this.visible&&this.ui.progressBar.infinite()}),800)),!this.busy&&this.busyDelay&&(this.ui.progressBar.stop(),this.busyDelay.cancel(),this.busyDelay=void 0),this.buttonsUpdated){this.buttonsUpdated=!1,this.ui.leftActionBar.clear();const e=this.buttons.filter((e=>e===Ro)).map(((e,t)=>so(e,"id-".concat(t),(async()=>this.onDidTriggerButtonEmitter.fire(e)))));this.ui.leftActionBar.push(e,{icon:!0,label:!1}),this.ui.rightActionBar.clear();const t=this.buttons.filter((e=>e!==Ro)).map(((e,t)=>so(e,"id-".concat(t),(async()=>this.onDidTriggerButtonEmitter.fire(e)))));this.ui.rightActionBar.push(t,{icon:!0,label:!1})}if(this.togglesUpdated){this.togglesUpdated=!1;const i=null!==(t=null===(e=this.toggles)||void 0===e?void 0:e.filter((e=>e instanceof Zn.Z)))&&void 0!==t?t:[];this.ui.inputBox.toggles=i}this.ui.ignoreFocusOut=this.ignoreFocusOut,this.ui.setEnabled(this.enabled),this.ui.setContextKey(this.contextKey);const o=this.validationMessage||this.noValidationMessage;this._lastValidationMessage!==o&&(this._lastValidationMessage=o,oe.mc(this.ui.message),ro(o,this.ui.message,{callback:e=>{this.ui.linkOpenerDelegate(e)},disposables:this.visibleDisposables})),this._lastSeverity!==this.severity&&(this._lastSeverity=this.severity,this.showMessageDecoration(this.severity))}getTitle(){return this.title&&this.step?"".concat(this.title," (").concat(this.getSteps(),")"):this.title?this.title:this.step?this.getSteps():""}getDescription(){return this.description||""}getSteps(){return this.step&&this.totalSteps?(0,De.NC)("quickInput.steps","{0}/{1}",this.step,this.totalSteps):this.step?String(this.step):""}showMessageDecoration(e){if(this.ui.inputBox.showDecoration(e),e!==ke.Z.Ignore){const t=this.ui.inputBox.stylesForType(e);this.ui.message.style.color=t.foreground?"".concat(t.foreground):"",this.ui.message.style.backgroundColor=t.background?"".concat(t.background):"",this.ui.message.style.border=t.border?"1px solid ".concat(t.border):"",this.ui.message.style.marginBottom="-2px"}else this.ui.message.style.color="",this.ui.message.style.backgroundColor="",this.ui.message.style.border="",this.ui.message.style.marginBottom=""}dispose(){this.hide(),this.onDisposeEmitter.fire(),super.dispose()}}Oo.noPromptMessage=(0,De.NC)("inputModeEntry","Press 'Enter' to confirm your input or 'Escape' to cancel");class Po extends Oo{constructor(){super(...arguments),this._value="",this.onDidChangeValueEmitter=this._register(new re.Q5),this.onWillAcceptEmitter=this._register(new re.Q5),this.onDidAcceptEmitter=this._register(new re.Q5),this.onDidCustomEmitter=this._register(new re.Q5),this._items=[],this.itemsUpdated=!1,this._canSelectMany=!1,this._canAcceptInBackground=!1,this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._matchOnLabelMode="fuzzy",this._sortByLabel=!0,this._keepScrollPosition=!1,this._itemActivation=jn.jG.FIRST,this._activeItems=[],this.activeItemsUpdated=!1,this.activeItemsToConfirm=[],this.onDidChangeActiveEmitter=this._register(new re.Q5),this._selectedItems=[],this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=[],this.onDidChangeSelectionEmitter=this._register(new re.Q5),this.onDidTriggerItemButtonEmitter=this._register(new re.Q5),this.onDidTriggerSeparatorButtonEmitter=this._register(new re.Q5),this.valueSelectionUpdated=!0,this._ok="default",this._customButton=!1,this.filterValue=e=>e,this.onDidChangeValue=this.onDidChangeValueEmitter.event,this.onWillAccept=this.onWillAcceptEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event,this.onDidChangeActive=this.onDidChangeActiveEmitter.event,this.onDidChangeSelection=this.onDidChangeSelectionEmitter.event,this.onDidTriggerItemButton=this.onDidTriggerItemButtonEmitter.event,this.onDidTriggerSeparatorButton=this.onDidTriggerSeparatorButtonEmitter.event}get quickNavigate(){return this._quickNavigate}set quickNavigate(e){this._quickNavigate=e,this.update()}get value(){return this._value}set value(e){this.doSetValue(e)}doSetValue(e,t){if(this._value!==e){if(this._value=e,t||this.update(),this.visible){this.ui.list.filter(this.filterValue(this._value))&&this.trySelectFirst()}this.onDidChangeValueEmitter.fire(this._value)}}set ariaLabel(e){this._ariaLabel=e,this.update()}get ariaLabel(){return this._ariaLabel}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.update()}get items(){return this._items}get scrollTop(){return this.ui.list.scrollTop}set scrollTop(e){this.ui.list.scrollTop=e}set items(e){this._items=e,this.itemsUpdated=!0,this.update()}get canSelectMany(){return this._canSelectMany}set canSelectMany(e){this._canSelectMany=e,this.update()}get canAcceptInBackground(){return this._canAcceptInBackground}set canAcceptInBackground(e){this._canAcceptInBackground=e}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(e){this._matchOnDescription=e,this.update()}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(e){this._matchOnDetail=e,this.update()}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(e){this._matchOnLabel=e,this.update()}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(e){this._matchOnLabelMode=e,this.update()}get sortByLabel(){return this._sortByLabel}set sortByLabel(e){this._sortByLabel=e,this.update()}get keepScrollPosition(){return this._keepScrollPosition}set keepScrollPosition(e){this._keepScrollPosition=e}get itemActivation(){return this._itemActivation}set itemActivation(e){this._itemActivation=e}get activeItems(){return this._activeItems}set activeItems(e){this._activeItems=e,this.activeItemsUpdated=!0,this.update()}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems=e,this.selectedItemsUpdated=!0,this.update()}get keyMods(){return this._quickNavigate?jn.X5:this.ui.keyMods}get valueSelection(){const e=this.ui.inputBox.getSelection();if(e)return[e.start,e.end]}set valueSelection(e){this._valueSelection=e,this.valueSelectionUpdated=!0,this.update()}get customButton(){return this._customButton}set customButton(e){this._customButton=e,this.update()}get customLabel(){return this._customButtonLabel}set customLabel(e){this._customButtonLabel=e,this.update()}get customHover(){return this._customButtonHover}set customHover(e){this._customButtonHover=e,this.update()}get ok(){return this._ok}set ok(e){this._ok=e,this.update()}get hideInput(){return!!this._hideInput}set hideInput(e){this._hideInput=e,this.update()}trySelectFirst(){this.canSelectMany||this.ui.list.focus(Co.First)}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange((e=>{this.doSetValue(e,!0)}))),this.visibleDisposables.add((this._hideInput?this.ui.list:this.ui.inputBox).onKeyDown((e=>{switch(e.keyCode){case 18:(ct.dz?e.metaKey:e.altKey)?this.ui.list.focus(Co.NextSeparator):this.ui.list.focus(Co.Next),this.canSelectMany&&this.ui.list.domFocus(),oe.zB.stop(e,!0);break;case 16:(ct.dz?e.metaKey:e.altKey)?this.ui.list.focus(Co.PreviousSeparator):this.ui.list.focus(Co.Previous),this.canSelectMany&&this.ui.list.domFocus(),oe.zB.stop(e,!0);break;case 12:this.ui.list.focus(Co.NextPage),this.canSelectMany&&this.ui.list.domFocus(),oe.zB.stop(e,!0);break;case 11:this.ui.list.focus(Co.PreviousPage),this.canSelectMany&&this.ui.list.domFocus(),oe.zB.stop(e,!0);break;case 17:if(!this._canAcceptInBackground)return;if(!this.ui.inputBox.isSelectionAtEnd())return;this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!0));break;case 14:!e.ctrlKey&&!e.metaKey||e.shiftKey||e.altKey||(this.ui.list.focus(Co.First),oe.zB.stop(e,!0));break;case 13:!e.ctrlKey&&!e.metaKey||e.shiftKey||e.altKey||(this.ui.list.focus(Co.Last),oe.zB.stop(e,!0))}}))),this.visibleDisposables.add(this.ui.onDidAccept((()=>{this.canSelectMany?this.ui.list.getCheckedElements().length||(this._selectedItems=[],this.onDidChangeSelectionEmitter.fire(this.selectedItems)):this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems)),this.handleAccept(!1)}))),this.visibleDisposables.add(this.ui.onDidCustom((()=>{this.onDidCustomEmitter.fire()}))),this.visibleDisposables.add(this.ui.list.onDidChangeFocus((e=>{this.activeItemsUpdated||this.activeItemsToConfirm!==this._activeItems&&(0,_e.fS)(e,this._activeItems,((e,t)=>e===t))||(this._activeItems=e,this.onDidChangeActiveEmitter.fire(e))}))),this.visibleDisposables.add(this.ui.list.onDidChangeSelection((e=>{let{items:t,event:i}=e;this.canSelectMany?t.length&&this.ui.list.setSelectedElements([]):this.selectedItemsToConfirm!==this._selectedItems&&(0,_e.fS)(t,this._selectedItems,((e,t)=>e===t))||(this._selectedItems=t,this.onDidChangeSelectionEmitter.fire(t),t.length&&this.handleAccept(oe.N5(i)&&1===i.button))}))),this.visibleDisposables.add(this.ui.list.onChangedCheckedElements((e=>{this.canSelectMany&&(this.selectedItemsToConfirm!==this._selectedItems&&(0,_e.fS)(e,this._selectedItems,((e,t)=>e===t))||(this._selectedItems=e,this.onDidChangeSelectionEmitter.fire(e)))}))),this.visibleDisposables.add(this.ui.list.onButtonTriggered((e=>this.onDidTriggerItemButtonEmitter.fire(e)))),this.visibleDisposables.add(this.ui.list.onSeparatorButtonTriggered((e=>this.onDidTriggerSeparatorButtonEmitter.fire(e)))),this.visibleDisposables.add(this.registerQuickNavigation()),this.valueSelectionUpdated=!0),super.show()}handleAccept(e){let t=!1;this.onWillAcceptEmitter.fire({veto:()=>t=!0}),t||this.onDidAcceptEmitter.fire({inBackground:e})}registerQuickNavigation(){return oe.nm(this.ui.container,oe.tw.KEY_UP,(e=>{if(this.canSelectMany||!this._quickNavigate)return;const t=new Ct.y(e),i=t.keyCode;this._quickNavigate.keybindings.some((e=>{const n=e.getChords();return!(n.length>1)&&(n[0].shiftKey&&4===i?!(t.ctrlKey||t.altKey||t.metaKey):!(!n[0].altKey||6!==i)||(!(!n[0].ctrlKey||5!==i)||!(!n[0].metaKey||57!==i)))}))&&(this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!1)),this._quickNavigate=void 0)}))}update(){if(!this.visible)return;const e=this.keepScrollPosition?this.scrollTop:0,t=!!this.description,i={title:!!this.title||!!this.step||!!this.buttons.length,description:t,checkAll:this.canSelectMany&&!this._hideCheckAll,checkBox:this.canSelectMany,inputBox:!this._hideInput,progressBar:!this._hideInput||t,visibleCount:!0,count:this.canSelectMany&&!this._hideCountBadge,ok:"default"===this.ok?this.canSelectMany:this.ok,list:!0,message:!!this.validationMessage,customButton:this.customButton};this.ui.setVisibilities(i),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||"");let n=this.ariaLabel;if(!n&&i.inputBox&&(n=this.placeholder||Po.DEFAULT_ARIA_LABEL,this.title&&(n+=" - ".concat(this.title))),this.ui.list.ariaLabel!==n&&(this.ui.list.ariaLabel=null!==n&&void 0!==n?n:null),this.ui.list.matchOnDescription=this.matchOnDescription,this.ui.list.matchOnDetail=this.matchOnDetail,this.ui.list.matchOnLabel=this.matchOnLabel,this.ui.list.matchOnLabelMode=this.matchOnLabelMode,this.ui.list.sortByLabel=this.sortByLabel,this.itemsUpdated){this.itemsUpdated=!1;const e=this._activeItems;switch(this.ui.list.setElements(this.items),this.ui.list.filter(this.filterValue(this.ui.inputBox.value)),this.ui.checkAll.checked=this.ui.list.getAllVisibleChecked(),this.ui.visibleCount.setCount(this.ui.list.getVisibleCount()),this.ui.count.setCount(this.ui.list.getCheckedCount()),this._itemActivation){case jn.jG.NONE:e.length>0&&(this._activeItems=[],this.onDidChangeActiveEmitter.fire(this._activeItems)),this._itemActivation=jn.jG.FIRST;break;case jn.jG.SECOND:this.ui.list.focus(Co.Second),this._itemActivation=jn.jG.FIRST;break;case jn.jG.LAST:this.ui.list.focus(Co.Last),this._itemActivation=jn.jG.FIRST;break;default:this.trySelectFirst()}}this.ui.container.classList.contains("show-checkboxes")!==!!this.canSelectMany&&(this.canSelectMany?this.ui.list.clearFocus():this.trySelectFirst()),this.activeItemsUpdated&&(this.activeItemsUpdated=!1,this.activeItemsToConfirm=this._activeItems,this.ui.list.setFocusedElements(this.activeItems),this.activeItemsToConfirm===this._activeItems&&(this.activeItemsToConfirm=null)),this.selectedItemsUpdated&&(this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=this._selectedItems,this.canSelectMany?this.ui.list.setCheckedElements(this.selectedItems):this.ui.list.setSelectedElements(this.selectedItems),this.selectedItemsToConfirm===this._selectedItems&&(this.selectedItemsToConfirm=null)),this.ui.customButton.label=this.customLabel||"",this.ui.customButton.element.title=this.customHover||"",i.inputBox||(this.ui.list.domFocus(),this.canSelectMany&&this.ui.list.focus(Co.First)),this.keepScrollPosition&&(this.scrollTop=e)}}Po.DEFAULT_ARIA_LABEL=(0,De.NC)("quickInputBox.ariaLabel","Type to narrow down results.");class Fo extends Oo{constructor(){super(...arguments),this._value="",this.valueSelectionUpdated=!0,this._password=!1,this.onDidValueChangeEmitter=this._register(new re.Q5),this.onDidAcceptEmitter=this._register(new re.Q5),this.onDidChangeValue=this.onDidValueChangeEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event}get value(){return this._value}set value(e){this._value=e||"",this.update()}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.update()}get password(){return this._password}set password(e){this._password=e,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange((e=>{e!==this.value&&(this._value=e,this.onDidValueChangeEmitter.fire(e))}))),this.visibleDisposables.add(this.ui.onDidAccept((()=>this.onDidAcceptEmitter.fire()))),this.valueSelectionUpdated=!0),super.show()}update(){if(!this.visible)return;this.ui.container.classList.remove("hidden-input");const e={title:!!this.title||!!this.step||!!this.buttons.length,description:!!this.description||!!this.step,inputBox:!0,message:!0,progressBar:!0};this.ui.setVisibilities(e),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||""),this.ui.inputBox.password!==this.password&&(this.ui.inputBox.password=this.password)}}let Bo=class extends nt.mQ{constructor(e,t){super("element",!1,(e=>this.getOverrideOptions(e)),e,t)}getOverrideOptions(e){var t;return{persistence:{hideOnKeyDown:!1},appearance:{showHoverHint:(e.content instanceof HTMLElement?null!==(t=e.content.textContent)&&void 0!==t?t:"":"string"===typeof e.content?e.content:e.content.value).includes("\n"),skipFadeInAnimation:!0}}}};Bo=Mo([Ao(0,V.Ui),Ao(1,nt.Bs)],Bo);var zo=i(56925),Vo=i(87699);const Wo="done",Ho="active",Ko="infinite",Uo="infinite-long-running",jo="discrete";class qo extends r.JT{constructor(e,t){super(),this.workedVal=0,this.showDelayedScheduler=this._register(new ei.pY((()=>(0,oe.$Z)(this.element)),0)),this.longRunningScheduler=this._register(new ei.pY((()=>this.infiniteLongRunning()),qo.LONG_RUNNING_INFINITE_THRESHOLD)),this.create(e,t)}create(e,t){this.element=document.createElement("div"),this.element.classList.add("monaco-progress-container"),this.element.setAttribute("role","progressbar"),this.element.setAttribute("aria-valuemin","0"),e.appendChild(this.element),this.bit=document.createElement("div"),this.bit.classList.add("progress-bit"),this.bit.style.backgroundColor=(null===t||void 0===t?void 0:t.progressBarBackground)||"#0E70C0",this.element.appendChild(this.bit)}off(){this.bit.style.width="inherit",this.bit.style.opacity="1",this.element.classList.remove(Ho,Ko,Uo,jo),this.workedVal=0,this.totalWork=void 0,this.longRunningScheduler.cancel()}stop(){return this.doDone(!1)}doDone(e){return this.element.classList.add(Wo),this.element.classList.contains(Ko)?(this.bit.style.opacity="0",e?setTimeout((()=>this.off()),200):this.off()):(this.bit.style.width="inherit",e?setTimeout((()=>this.off()),200):this.off()),this}infinite(){return this.bit.style.width="2%",this.bit.style.opacity="1",this.element.classList.remove(jo,Wo,Uo),this.element.classList.add(Ho,Ko),this.longRunningScheduler.schedule(),this}infiniteLongRunning(){this.element.classList.add(Uo)}getContainer(){return this.element}}qo.LONG_RUNNING_INFINITE_THRESHOLD=1e4;var Go=i(51459);const Qo=oe.$;class Zo extends r.JT{constructor(e,t,i){super(),this.parent=e,this.onKeyDown=e=>oe.mu(this.findInput.inputBox.inputElement,oe.tw.KEY_DOWN,e),this.onDidChange=e=>this.findInput.onDidChange(e),this.container=oe.R3(this.parent,Qo(".quick-input-box")),this.findInput=this._register(new Go.V(this.container,void 0,{label:"",inputBoxStyles:t,toggleStyles:i}));const n=this.findInput.inputBox.inputElement;n.role="combobox",n.ariaHasPopup="menu",n.ariaAutoComplete="list",n.ariaExpanded="true"}get value(){return this.findInput.getValue()}set value(e){this.findInput.setValue(e)}select(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.findInput.inputBox.select(e)}getSelection(){return this.findInput.inputBox.getSelection()}isSelectionAtEnd(){return this.findInput.inputBox.isSelectionAtEnd()}get placeholder(){return this.findInput.inputBox.inputElement.getAttribute("placeholder")||""}set placeholder(e){this.findInput.inputBox.setPlaceHolder(e)}get password(){return"password"===this.findInput.inputBox.inputElement.type}set password(e){this.findInput.inputBox.inputElement.type=e?"password":"text"}set enabled(e){this.findInput.inputBox.inputElement.toggleAttribute("readonly",!e)}set toggles(e){this.findInput.setAdditionalToggles(e)}setAttribute(e,t){this.findInput.inputBox.inputElement.setAttribute(e,t)}showDecoration(e){e===ke.Z.Ignore?this.findInput.clearMessage():this.findInput.showMessage({type:e===ke.Z.Info?1:e===ke.Z.Warning?2:3,content:""})}stylesForType(e){return this.findInput.inputBox.stylesForType(e===ke.Z.Info?1:e===ke.Z.Warning?2:3)}setFocus(){this.findInput.focus()}layout(){this.findInput.inputBox.layout()}}var Yo,$o=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Jo=function(e,t){return function(i,n){t(i,n,e)}};const Xo=oe.$;let es=Yo=class extends r.JT{get container(){return this._container}constructor(e,t,i){super(),this.options=e,this.layoutService=t,this.instantiationService=i,this.enabled=!0,this.onDidAcceptEmitter=this._register(new re.Q5),this.onDidCustomEmitter=this._register(new re.Q5),this.onDidTriggerButtonEmitter=this._register(new re.Q5),this.keyMods={ctrlCmd:!1,alt:!1},this.controller=null,this.onShowEmitter=this._register(new re.Q5),this.onShow=this.onShowEmitter.event,this.onHideEmitter=this._register(new re.Q5),this.onHide=this.onHideEmitter.event,this.idPrefix=e.idPrefix,this._container=e.container,this.styles=e.styles,this._register(re.ju.runAndSubscribe(oe.Xo,(e=>{let{window:t,disposables:i}=e;return this.registerKeyModsListeners(t,i)}),{window:s.E,disposables:this._store})),this._register(oe.Jc((e=>{this.ui&&oe.Jj(this.ui.container)===e&&(this.reparentUI(this.layoutService.mainContainer),this.layout(this.layoutService.mainContainerDimension,this.layoutService.mainContainerOffset.quickPickTop))})))}registerKeyModsListeners(e,t){const i=e=>{this.keyMods.ctrlCmd=e.ctrlKey||e.metaKey,this.keyMods.alt=e.altKey};for(const n of[oe.tw.KEY_DOWN,oe.tw.KEY_UP,oe.tw.MOUSE_DOWN])t.add(oe.nm(e,n,i,!0))}getUI(e){if(this.ui)return e&&oe.Jj(this._container)!==oe.Jj(this.layoutService.activeContainer)&&(this.reparentUI(this.layoutService.activeContainer),this.layout(this.layoutService.activeContainerDimension,this.layoutService.activeContainerOffset.quickPickTop)),this.ui;const t=oe.R3(this._container,Xo(".quick-input-widget.show-file-icons"));t.tabIndex=-1,t.style.display="none";const i=oe.dS(t),n=oe.R3(t,Xo(".quick-input-titlebar")),o=this._register(new ji.o(n,{hoverDelegate:this.options.hoverDelegate}));o.domNode.classList.add("quick-input-left-action-bar");const s=oe.R3(n,Xo(".quick-input-title")),r=this._register(new ji.o(n,{hoverDelegate:this.options.hoverDelegate}));r.domNode.classList.add("quick-input-right-action-bar");const a=oe.R3(t,Xo(".quick-input-header")),l=oe.R3(a,Xo("input.quick-input-check-all"));l.type="checkbox",l.setAttribute("aria-label",(0,De.NC)("quickInput.checkAll","Toggle all checkboxes")),this._register(oe.mu(l,oe.tw.CHANGE,(e=>{const t=l.checked;D.setAllVisibleChecked(t)}))),this._register(oe.nm(l,oe.tw.CLICK,(e=>{(e.x||e.y)&&u.setFocus()})));const h=oe.R3(a,Xo(".quick-input-description")),d=oe.R3(a,Xo(".quick-input-and-message")),c=oe.R3(d,Xo(".quick-input-filter")),u=this._register(new Zo(c,this.styles.inputBox,this.styles.toggle));u.setAttribute("aria-describedby","".concat(this.idPrefix,"message"));const g=oe.R3(c,Xo(".quick-input-visible-count"));g.setAttribute("aria-live","polite"),g.setAttribute("aria-atomic","true");const m=new Vo.Z(g,{countFormat:(0,De.NC)({key:"quickInput.visibleCount",comment:["This tells the user how many items are shown in a list of items to select from. The items can be anything. Currently not visible, but read by screen readers."]},"{0} Results")},this.styles.countBadge),f=oe.R3(c,Xo(".quick-input-count"));f.setAttribute("aria-live","polite");const p=new Vo.Z(f,{countFormat:(0,De.NC)({key:"quickInput.countSelected",comment:["This tells the user how many items are selected in a list of items to select from. The items can be anything."]},"{0} Selected")},this.styles.countBadge),_=oe.R3(a,Xo(".quick-input-action")),v=this._register(new zo.z(_,this.styles.button));v.label=(0,De.NC)("ok","OK"),this._register(v.onDidClick((e=>{this.onDidAcceptEmitter.fire()})));const b=oe.R3(a,Xo(".quick-input-action")),C=this._register(new zo.z(b,{...this.styles.button,supportIcons:!0}));C.label=(0,De.NC)("custom","Custom"),this._register(C.onDidClick((e=>{this.onDidCustomEmitter.fire()})));const w=oe.R3(d,Xo("#".concat(this.idPrefix,"message.quick-input-message"))),y=this._register(new qo(t,this.styles.progressBar));y.getContainer().classList.add("quick-input-progress");const S=oe.R3(t,Xo(".quick-input-html-widget"));S.tabIndex=-1;const L=oe.R3(t,Xo(".quick-input-description")),k=this.idPrefix+"list",D=this._register(this.instantiationService.createInstance(Io,t,this.options.hoverDelegate,this.options.linkOpenerDelegate,k));u.setAttribute("aria-controls",k),this._register(D.onDidChangeFocus((()=>{var e;u.setAttribute("aria-activedescendant",null!==(e=D.getActiveDescendant())&&void 0!==e?e:"")}))),this._register(D.onChangedAllVisibleChecked((e=>{l.checked=e}))),this._register(D.onChangedVisibleCount((e=>{m.setCount(e)}))),this._register(D.onChangedCheckedCount((e=>{p.setCount(e)}))),this._register(D.onLeave((()=>{setTimeout((()=>{this.controller&&(u.setFocus(),this.controller instanceof Po&&this.controller.canSelectMany&&D.clearFocus())}),0)})));const N=oe.go(t);return this._register(N),this._register(oe.nm(t,oe.tw.FOCUS,(e=>{oe.jg(e.relatedTarget,t)||(this.previousFocusElement=e.relatedTarget instanceof HTMLElement?e.relatedTarget:void 0)}),!0)),this._register(N.onDidBlur((()=>{this.getUI().ignoreFocusOut||this.options.ignoreFocusOut()||this.hide(jn.Jq.Blur),this.previousFocusElement=void 0}))),this._register(oe.nm(t,oe.tw.FOCUS,(e=>{u.setFocus()}))),this._register(oe.mu(t,oe.tw.KEY_DOWN,(e=>{if(!oe.jg(e.target,S))switch(e.keyCode){case 3:oe.zB.stop(e,!0),this.enabled&&this.onDidAcceptEmitter.fire();break;case 9:oe.zB.stop(e,!0),this.hide(jn.Jq.Gesture);break;case 2:if(!e.altKey&&!e.ctrlKey&&!e.metaKey){const i=[".quick-input-list .monaco-action-bar .always-visible",".quick-input-list-entry:hover .monaco-action-bar",".monaco-list-row.focused .monaco-action-bar"];if(t.classList.contains("show-checkboxes")?i.push("input"):i.push("input[type=text]"),this.getUI().list.isDisplayed()&&i.push(".monaco-list"),this.getUI().message&&i.push(".quick-input-message a"),this.getUI().widget){if(oe.jg(e.target,this.getUI().widget))break;i.push(".quick-input-html-widget")}const n=t.querySelectorAll(i.join(", "));e.shiftKey&&e.target===n[0]?(oe.zB.stop(e,!0),D.clearFocus()):!e.shiftKey&&oe.jg(e.target,n[n.length-1])&&(oe.zB.stop(e,!0),n[0].focus())}break;case 10:e.ctrlKey&&(oe.zB.stop(e,!0),this.getUI().list.toggleHover())}}))),this.ui={container:t,styleSheet:i,leftActionBar:o,titleBar:n,title:s,description1:L,description2:h,widget:S,rightActionBar:r,checkAll:l,inputContainer:d,filterContainer:c,inputBox:u,visibleCountContainer:g,visibleCount:m,countContainer:f,count:p,okContainer:_,ok:v,message:w,customButtonContainer:b,customButton:C,list:D,progressBar:y,onDidAccept:this.onDidAcceptEmitter.event,onDidCustom:this.onDidCustomEmitter.event,onDidTriggerButton:this.onDidTriggerButtonEmitter.event,ignoreFocusOut:!1,keyMods:this.keyMods,show:e=>this.show(e),hide:()=>this.hide(),setVisibilities:e=>this.setVisibilities(e),setEnabled:e=>this.setEnabled(e),setContextKey:e=>this.options.setContextKey(e),linkOpenerDelegate:e=>this.options.linkOpenerDelegate(e)},this.updateStyles(),this.ui}reparentUI(e){this.ui&&(this._container=e,oe.R3(this._container,this.ui.container))}pick(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:fn.T.None;return new Promise(((n,o)=>{let s=e=>{var i;s=n,null===(i=t.onKeyMods)||void 0===i||i.call(t,a.keyMods),n(e)};if(i.isCancellationRequested)return void s(void 0);const a=this.createQuickPick();let l;const h=[a,a.onDidAccept((()=>{if(a.canSelectMany)s(a.selectedItems.slice()),a.hide();else{const e=a.activeItems[0];e&&(s(e),a.hide())}})),a.onDidChangeActive((e=>{const i=e[0];i&&t.onDidFocus&&t.onDidFocus(i)})),a.onDidChangeSelection((e=>{if(!a.canSelectMany){const t=e[0];t&&(s(t),a.hide())}})),a.onDidTriggerItemButton((e=>t.onDidTriggerItemButton&&t.onDidTriggerItemButton({...e,removeItem:()=>{const t=a.items.indexOf(e.item);if(-1!==t){const e=a.items.slice(),i=e.splice(t,1),n=a.activeItems.filter((e=>e!==i[0])),o=a.keepScrollPosition;a.keepScrollPosition=!0,a.items=e,n&&(a.activeItems=n),a.keepScrollPosition=o}}}))),a.onDidTriggerSeparatorButton((e=>{var i;return null===(i=t.onDidTriggerSeparatorButton)||void 0===i?void 0:i.call(t,e)})),a.onDidChangeValue((e=>{!l||e||1===a.activeItems.length&&a.activeItems[0]===l||(a.activeItems=[l])})),i.onCancellationRequested((()=>{a.hide()})),a.onDidHide((()=>{(0,r.B9)(h),s(void 0)}))];a.title=t.title,a.canSelectMany=!!t.canPickMany,a.placeholder=t.placeHolder,a.ignoreFocusOut=!!t.ignoreFocusLost,a.matchOnDescription=!!t.matchOnDescription,a.matchOnDetail=!!t.matchOnDetail,a.matchOnLabel=void 0===t.matchOnLabel||t.matchOnLabel,a.quickNavigate=t.quickNavigate,a.hideInput=!!t.hideInput,a.contextKey=t.contextKey,a.busy=!0,Promise.all([e,t.activeItem]).then((e=>{let[t,i]=e;l=i,a.busy=!1,a.items=t,a.canSelectMany&&(a.selectedItems=t.filter((e=>"separator"!==e.type&&e.picked))),l&&(a.activeItems=[l])})),a.show(),Promise.resolve(e).then(void 0,(e=>{o(e),a.hide()}))}))}createQuickPick(){const e=this.getUI(!0);return new Po(e)}createInputBox(){const e=this.getUI(!0);return new Fo(e)}show(e){const t=this.getUI(!0);this.onShowEmitter.fire();const i=this.controller;this.controller=e,null===i||void 0===i||i.didHide(),this.setEnabled(!0),t.leftActionBar.clear(),t.title.textContent="",t.description1.textContent="",t.description2.textContent="",oe.mc(t.widget),t.rightActionBar.clear(),t.checkAll.checked=!1,t.inputBox.placeholder="",t.inputBox.password=!1,t.inputBox.showDecoration(ke.Z.Ignore),t.visibleCount.setCount(0),t.count.setCount(0),oe.mc(t.message),t.progressBar.stop(),t.list.setElements([]),t.list.matchOnDescription=!1,t.list.matchOnDetail=!1,t.list.matchOnLabel=!0,t.list.sortByLabel=!0,t.ignoreFocusOut=!1,t.inputBox.toggles=void 0;const n=this.options.backKeybindingLabel();Ro.tooltip=n?(0,De.NC)("quickInput.backWithKeybinding","Back ({0})",n):(0,De.NC)("quickInput.back","Back"),t.container.style.display="",this.updateLayout(),t.inputBox.setFocus()}isVisible(){return!!this.ui&&"none"!==this.ui.container.style.display}setVisibilities(e){const t=this.getUI();t.title.style.display=e.title?"":"none",t.description1.style.display=e.description&&(e.inputBox||e.checkAll)?"":"none",t.description2.style.display=!e.description||e.inputBox||e.checkAll?"none":"",t.checkAll.style.display=e.checkAll?"":"none",t.inputContainer.style.display=e.inputBox?"":"none",t.filterContainer.style.display=e.inputBox?"":"none",t.visibleCountContainer.style.display=e.visibleCount?"":"none",t.countContainer.style.display=e.count?"":"none",t.okContainer.style.display=e.ok?"":"none",t.customButtonContainer.style.display=e.customButton?"":"none",t.message.style.display=e.message?"":"none",t.progressBar.getContainer().style.display=e.progressBar?"":"none",t.list.display(!!e.list),t.container.classList.toggle("show-checkboxes",!!e.checkBox),t.container.classList.toggle("hidden-input",!e.inputBox&&!e.description),this.updateLayout()}setEnabled(e){if(e!==this.enabled){this.enabled=e;for(const t of this.getUI().leftActionBar.viewItems)t.action.enabled=e;for(const t of this.getUI().rightActionBar.viewItems)t.action.enabled=e;this.getUI().checkAll.disabled=!e,this.getUI().inputBox.enabled=e,this.getUI().ok.enabled=e,this.getUI().list.enabled=e}}hide(e){var t,i;const n=this.controller;if(!n)return;n.willHide(e);const o=null===(t=this.ui)||void 0===t?void 0:t.container,s=o&&!oe.b5(o);if(this.controller=null,this.onHideEmitter.fire(),o&&(o.style.display="none"),!s){let e=this.previousFocusElement;for(;e&&!e.offsetParent;)e=null!==(i=e.parentElement)&&void 0!==i?i:void 0;(null===e||void 0===e?void 0:e.offsetParent)?(e.focus(),this.previousFocusElement=void 0):this.options.returnFocus()}n.didHide(e)}layout(e,t){this.dimension=e,this.titleBarOffset=t,this.updateLayout()}updateLayout(){if(this.ui&&this.isVisible()){this.ui.container.style.top="".concat(this.titleBarOffset,"px");const e=this.ui.container.style,t=Math.min(.62*this.dimension.width,Yo.MAX_WIDTH);e.width=t+"px",e.marginLeft="-"+t/2+"px",this.ui.inputBox.layout(),this.ui.list.layout(this.dimension&&.4*this.dimension.height)}}applyStyles(e){this.styles=e,this.updateStyles()}updateStyles(){if(this.ui){const{quickInputTitleBackground:e,quickInputBackground:t,quickInputForeground:i,widgetBorder:n,widgetShadow:o}=this.styles.widget;this.ui.titleBar.style.backgroundColor=null!==e&&void 0!==e?e:"",this.ui.container.style.backgroundColor=null!==t&&void 0!==t?t:"",this.ui.container.style.color=null!==i&&void 0!==i?i:"",this.ui.container.style.border=n?"1px solid ".concat(n):"",this.ui.container.style.boxShadow=o?"0 0 8px 2px ".concat(o):"",this.ui.list.style(this.styles.list);const s=[];this.styles.pickerGroup.pickerGroupBorder&&s.push(".quick-input-list .quick-input-list-entry { border-top-color: ".concat(this.styles.pickerGroup.pickerGroupBorder,"; }")),this.styles.pickerGroup.pickerGroupForeground&&s.push(".quick-input-list .quick-input-list-separator { color: ".concat(this.styles.pickerGroup.pickerGroupForeground,"; }")),this.styles.pickerGroup.pickerGroupForeground&&s.push(".quick-input-list .quick-input-list-separator-as-item { color: var(--vscode-descriptionForeground); }"),(this.styles.keybindingLabel.keybindingLabelBackground||this.styles.keybindingLabel.keybindingLabelBorder||this.styles.keybindingLabel.keybindingLabelBottomBorder||this.styles.keybindingLabel.keybindingLabelShadow||this.styles.keybindingLabel.keybindingLabelForeground)&&(s.push(".quick-input-list .monaco-keybinding > .monaco-keybinding-key {"),this.styles.keybindingLabel.keybindingLabelBackground&&s.push("background-color: ".concat(this.styles.keybindingLabel.keybindingLabelBackground,";")),this.styles.keybindingLabel.keybindingLabelBorder&&s.push("border-color: ".concat(this.styles.keybindingLabel.keybindingLabelBorder,";")),this.styles.keybindingLabel.keybindingLabelBottomBorder&&s.push("border-bottom-color: ".concat(this.styles.keybindingLabel.keybindingLabelBottomBorder,";")),this.styles.keybindingLabel.keybindingLabelShadow&&s.push("box-shadow: inset 0 -1px 0 ".concat(this.styles.keybindingLabel.keybindingLabelShadow,";")),this.styles.keybindingLabel.keybindingLabelForeground&&s.push("color: ".concat(this.styles.keybindingLabel.keybindingLabelForeground,";")),s.push("}"));const r=s.join("\n");r!==this.ui.styleSheet.textContent&&(this.ui.styleSheet.textContent=r)}}};es.MAX_WIDTH=600,es=Yo=$o([Jo(1,be),Jo(2,ve.TG)],es);var ts=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},is=function(e,t){return function(i,n){t(i,n,e)}};let ns=class extends le.bB{get controller(){return this._controller||(this._controller=this._register(this.createController())),this._controller}get hasController(){return!!this._controller}get quickAccess(){return this._quickAccess||(this._quickAccess=this._register(this.instantiationService.createInstance(Qn))),this._quickAccess}constructor(e,t,i,n,o){super(i),this.instantiationService=e,this.contextKeyService=t,this.layoutService=n,this.configurationService=o,this._onShow=this._register(new re.Q5),this._onHide=this._register(new re.Q5),this.contexts=new Map}createController(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.layoutService,t=arguments.length>1?arguments[1]:void 0;const i={idPrefix:"quickInput_",container:e.activeContainer,ignoreFocusOut:()=>!1,backKeybindingLabel:()=>{},setContextKey:e=>this.setContextKey(e),linkOpenerDelegate:e=>{this.instantiationService.invokeFunction((t=>{t.get(lt.v).open(e,{allowCommands:!0,fromUserGesture:!0})}))},returnFocus:()=>e.focus(),styles:this.computeStyles(),hoverDelegate:this._register(this.instantiationService.createInstance(Bo))},n=this._register(this.instantiationService.createInstance(es,{...i,...t}));return n.layout(e.activeContainerDimension,e.activeContainerOffset.quickPickTop),this._register(e.onDidLayoutActiveContainer((t=>{(0,oe.Jj)(e.activeContainer)===(0,oe.Jj)(n.container)&&n.layout(t,e.activeContainerOffset.quickPickTop)}))),this._register(e.onDidChangeActiveContainer((()=>{n.isVisible()||n.layout(e.activeContainerDimension,e.activeContainerOffset.quickPickTop)}))),this._register(n.onShow((()=>{this.resetContextKeys(),this._onShow.fire()}))),this._register(n.onHide((()=>{this.resetContextKeys(),this._onHide.fire()}))),n}setContextKey(e){let t;e&&(t=this.contexts.get(e),t||(t=new ue.uy(e,!1).bindTo(this.contextKeyService),this.contexts.set(e,t))),t&&t.get()||(this.resetContextKeys(),null===t||void 0===t||t.set(!0))}resetContextKeys(){this.contexts.forEach((e=>{e.get()&&e.reset()}))}pick(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:fn.T.None;return this.controller.pick(e,t,i)}createQuickPick(){return this.controller.createQuickPick()}createInputBox(){return this.controller.createInputBox()}updateStyles(){this.hasController&&this.controller.applyStyles(this.computeStyles())}computeStyles(){return{widget:{quickInputBackground:(0,it.n_1)(it.zKr),quickInputForeground:(0,it.n_1)(it.tZ6),quickInputTitleBackground:(0,it.n_1)(it.loF),widgetBorder:(0,it.n_1)(it.A42),widgetShadow:(0,it.n_1)(it.rh)},inputBox:ln.Hc,toggle:ln.pl,countBadge:ln.ku,button:ln.wG,progressBar:ln.b5,keybindingLabel:ln.eO,list:(0,ln.TU)({listBackground:it.zKr,listFocusBackground:it.Vqd,listFocusForeground:it.NPS,listInactiveFocusForeground:it.NPS,listInactiveSelectionIconForeground:it.cbQ,listInactiveFocusBackground:it.Vqd,listFocusOutline:it.xL1,listInactiveFocusOutline:it.xL1}),pickerGroup:{pickerGroupBorder:(0,it.n_1)(it.opG),pickerGroupForeground:(0,it.n_1)(it.kJk)}}}};ns=ts([is(0,ve.TG),is(1,ue.i6),is(2,le.XE),is(3,be),is(4,V.Ui)],ns);var os=i(75937),ss=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},rs=function(e,t){return function(i,n){t(i,n,e)}};let as=class extends ns{constructor(e,t,i,n,o,s){super(t,i,n,new Se(e.getContainerDomNode(),o),s),this.host=void 0;const r=hs.get(e);if(r){const t=r.widget;this.host={_serviceBrand:void 0,get mainContainer(){return t.getDomNode()},getContainer:()=>t.getDomNode(),whenContainerStylesLoaded(){},get containers(){return[t.getDomNode()]},get activeContainer(){return t.getDomNode()},get mainContainerDimension(){return e.getLayoutInfo()},get activeContainerDimension(){return e.getLayoutInfo()},get onDidLayoutMainContainer(){return e.onDidLayoutChange},get onDidLayoutActiveContainer(){return e.onDidLayoutChange},get onDidLayoutContainer(){return re.ju.map(e.onDidLayoutChange,(e=>({container:t.getDomNode(),dimension:e})))},get onDidChangeActiveContainer(){return re.ju.None},get onDidAddContainer(){return re.ju.None},get mainContainerOffset(){return{top:0,quickPickTop:0}},get activeContainerOffset(){return{top:0,quickPickTop:0}},focus:()=>e.focus()}}else this.host=void 0}createController(){return super.createController(this.host)}};as=ss([rs(1,ve.TG),rs(2,ue.i6),rs(3,le.XE),rs(4,c.$),rs(5,V.Ui)],as);let ls=class{get activeService(){const e=this.codeEditorService.getFocusedCodeEditor();if(!e)throw new Error("Quick input service needs a focused editor to work.");let t=this.mapEditorToService.get(e);if(!t){const i=t=this.instantiationService.createInstance(as,e);this.mapEditorToService.set(e,t),(0,os.M)(e.onDidDispose)((()=>{i.dispose(),this.mapEditorToService.delete(e)}))}return t}get quickAccess(){return this.activeService.quickAccess}constructor(e,t){this.instantiationService=e,this.codeEditorService=t,this.mapEditorToService=new Map}pick(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:fn.T.None;return this.activeService.pick(e,t,i)}createQuickPick(){return this.activeService.createQuickPick()}createInputBox(){return this.activeService.createInputBox()}};ls=ss([rs(0,ve.TG),rs(1,c.$)],ls);class hs{static get(e){return e.getContribution(hs.ID)}constructor(e){this.editor=e,this.widget=new ds(this.editor)}dispose(){this.widget.dispose()}}hs.ID="editor.controller.quickInput";class ds{constructor(e){this.codeEditor=e,this.domNode=document.createElement("div"),this.codeEditor.addOverlayWidget(this)}getId(){return ds.ID}getDomNode(){return this.domNode}getPosition(){return{preference:2}}dispose(){this.codeEditor.removeOverlayWidget(this)}}ds.ID="editor.contrib.quickInputWidget",(0,d._K)(hs.ID,hs,4);var cs=i(16049),us=i(24587),gs=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ms=function(e,t){return function(i,n){t(i,n,e)}};let fs=class extends r.JT{constructor(e,t,i){super(),this._contextKeyService=e,this._layoutService=t,this._configurationService=i,this._accessibilitySupport=0,this._onDidChangeScreenReaderOptimized=new re.Q5,this._onDidChangeReducedMotion=new re.Q5,this._accessibilityModeEnabledContext=ut.U.bindTo(this._contextKeyService);const n=()=>this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());this._register(this._configurationService.onDidChangeConfiguration((e=>{e.affectsConfiguration("editor.accessibilitySupport")&&(n(),this._onDidChangeScreenReaderOptimized.fire()),e.affectsConfiguration("workbench.reduceMotion")&&(this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._onDidChangeReducedMotion.fire())}))),n(),this._register(this.onDidChangeScreenReaderOptimized((()=>n())));const o=s.E.matchMedia("(prefers-reduced-motion: reduce)");this._systemMotionReduced=o.matches,this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this.initReducedMotionListeners(o)}initReducedMotionListeners(e){this._register((0,oe.nm)(e,"change",(()=>{this._systemMotionReduced=e.matches,"auto"===this._configMotionReduced&&this._onDidChangeReducedMotion.fire()})));const t=()=>{const e=this.isMotionReduced();this._layoutService.mainContainer.classList.toggle("reduce-motion",e),this._layoutService.mainContainer.classList.toggle("enable-motion",!e)};t(),this._register(this.onDidChangeReducedMotion((()=>t())))}get onDidChangeScreenReaderOptimized(){return this._onDidChangeScreenReaderOptimized.event}isScreenReaderOptimized(){const e=this._configurationService.getValue("editor.accessibilitySupport");return"on"===e||"auto"===e&&2===this._accessibilitySupport}get onDidChangeReducedMotion(){return this._onDidChangeReducedMotion.event}isMotionReduced(){const e=this._configMotionReduced;return"on"===e||"auto"===e&&this._systemMotionReduced}getAccessibilitySupport(){return this._accessibilitySupport}};fs=gs([ms(0,ue.i6),ms(1,be),ms(2,V.Ui)],fs);var ps,_s,vs=i(89965),bs=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Cs=function(e,t){return function(i,n){t(i,n,e)}};let ws=class{constructor(e,t){this._commandService=e,this._hiddenStates=new ys(t)}createMenu(e,t,i){return new Ls(e,this._hiddenStates,{emitEventsForSubmenuChanges:!1,eventDebounceDelay:50,...i},this._commandService,t)}resetHiddenStates(e){this._hiddenStates.reset(e)}};ws=bs([Cs(0,Kt.H),Cs(1,vs.Uy)],ws);let ys=ps=class{constructor(e){this._storageService=e,this._disposables=new r.SL,this._onDidChange=new re.Q5,this.onDidChange=this._onDidChange.event,this._ignoreChangeEvent=!1,this._hiddenByDefaultCache=new Map;try{const t=e.get(ps._key,0,"{}");this._data=JSON.parse(t)}catch(t){this._data=Object.create(null)}this._disposables.add(e.onDidChangeValue(0,ps._key,this._disposables)((()=>{if(!this._ignoreChangeEvent)try{const t=e.get(ps._key,0,"{}");this._data=JSON.parse(t)}catch(t){console.log("FAILED to read storage after UPDATE",t)}this._onDidChange.fire()})))}dispose(){this._onDidChange.dispose(),this._disposables.dispose()}_isHiddenByDefault(e,t){var i;return null!==(i=this._hiddenByDefaultCache.get("".concat(e.id,"/").concat(t)))&&void 0!==i&&i}setDefaultState(e,t,i){this._hiddenByDefaultCache.set("".concat(e.id,"/").concat(t),i)}isHidden(e,t){var i,n;const o=this._isHiddenByDefault(e,t),s=null!==(n=null===(i=this._data[e.id])||void 0===i?void 0:i.includes(t))&&void 0!==n&&n;return o?!s:s}updateHidden(e,t,i){this._isHiddenByDefault(e,t)&&(i=!i);const n=this._data[e.id];if(i)if(n){n.indexOf(t)<0&&n.push(t)}else this._data[e.id]=[t];else if(n){const i=n.indexOf(t);i>=0&&(0,_e.LS)(n,i),0===n.length&&delete this._data[e.id]}this._persist()}reset(e){if(void 0===e)this._data=Object.create(null),this._persist();else{for(const{id:t}of e)this._data[t]&&delete this._data[t];this._persist()}}_persist(){try{this._ignoreChangeEvent=!0;const e=JSON.stringify(this._data);this._storageService.store(ps._key,e,0,0)}finally{this._ignoreChangeEvent=!1}}};ys._key="menu.hiddenCommands",ys=ps=bs([Cs(0,vs.Uy)],ys);let Ss=_s=class{constructor(e,t,i,n,o){this._id=e,this._hiddenStates=t,this._collectContextKeysForSubmenus=i,this._commandService=n,this._contextKeyService=o,this._menuGroups=[],this._structureContextKeys=new Set,this._preconditionContextKeys=new Set,this._toggledContextKeys=new Set,this.refresh()}get structureContextKeys(){return this._structureContextKeys}get preconditionContextKeys(){return this._preconditionContextKeys}get toggledContextKeys(){return this._toggledContextKeys}refresh(){this._menuGroups.length=0,this._structureContextKeys.clear(),this._preconditionContextKeys.clear(),this._toggledContextKeys.clear();const e=Wi.BH.getMenuItems(this._id);let t;e.sort(_s._compareMenuItems);for(const i of e){const e=i.group||"";t&&t[0]===e||(t=[e,[]],this._menuGroups.push(t)),t[1].push(i),this._collectContextKeys(i)}}_collectContextKeys(e){if(_s._fillInKbExprKeys(e.when,this._structureContextKeys),(0,Wi.vr)(e)){if(e.command.precondition&&_s._fillInKbExprKeys(e.command.precondition,this._preconditionContextKeys),e.command.toggled){const t=e.command.toggled.condition||e.command.toggled;_s._fillInKbExprKeys(t,this._toggledContextKeys)}}else this._collectContextKeysForSubmenus&&Wi.BH.getMenuItems(e.submenu).forEach(this._collectContextKeys,this)}createActionGroups(e){const t=[];for(const i of this._menuGroups){const[n,o]=i,s=[];for(const t of o)if(this._contextKeyService.contextMatchesRules(t.when)){const i=(0,Wi.vr)(t);i&&this._hiddenStates.setDefaultState(this._id,t.command.id,!!t.isHiddenByDefault);const n=ks(this._id,i?t.command:t,this._hiddenStates);if(i)s.push(new Wi.U8(t.command,t.alt,e,n,this._contextKeyService,this._commandService));else{const i=new _s(t.submenu,this._hiddenStates,this._collectContextKeysForSubmenus,this._commandService,this._contextKeyService).createActionGroups(e),o=zi.Z0.join(...i.map((e=>e[1])));o.length>0&&s.push(new Wi.NZ(t,n,o))}}s.length>0&&t.push([n,s])}return t}static _fillInKbExprKeys(e,t){if(e)for(const i of e.keys())t.add(i)}static _compareMenuItems(e,t){const i=e.group,n=t.group;if(i!==n){if(!i)return 1;if(!n)return-1;if("navigation"===i)return-1;if("navigation"===n)return 1;const e=i.localeCompare(n);if(0!==e)return e}const o=e.order||0,s=t.order||0;return os?1:_s._compareTitles((0,Wi.vr)(e)?e.command.title:e.title,(0,Wi.vr)(t)?t.command.title:t.title)}static _compareTitles(e,t){const i="string"===typeof e?e:e.original,n="string"===typeof t?t:t.original;return i.localeCompare(n)}};Ss=_s=bs([Cs(3,Kt.H),Cs(4,ue.i6)],Ss);let Ls=class{constructor(e,t,i,n,o){this._disposables=new r.SL,this._menuInfo=new Ss(e,t,i.emitEventsForSubmenuChanges,n,o);const s=new ei.pY((()=>{this._menuInfo.refresh(),this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!0,isToggleChange:!0})}),i.eventDebounceDelay);this._disposables.add(s),this._disposables.add(Wi.BH.onDidChangeMenu((t=>{t.has(e)&&s.schedule()})));const a=this._disposables.add(new r.SL);this._onDidChange=new re.D0({onWillAddFirstListener:()=>{a.add(o.onDidChangeContext((e=>{const t=e.affectsSome(this._menuInfo.structureContextKeys),i=e.affectsSome(this._menuInfo.preconditionContextKeys),n=e.affectsSome(this._menuInfo.toggledContextKeys);(t||i||n)&&this._onDidChange.fire({menu:this,isStructuralChange:t,isEnablementChange:i,isToggleChange:n})}))),a.add(t.onDidChange((e=>{this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!1,isToggleChange:!1})})))},onDidRemoveLastListener:a.clear.bind(a),delay:i.eventDebounceDelay,merge:e=>{let t=!1,i=!1,n=!1;for(const o of e)if(t=t||o.isStructuralChange,i=i||o.isEnablementChange,n=n||o.isToggleChange,t&&i&&n)break;return{menu:this,isStructuralChange:t,isEnablementChange:i,isToggleChange:n}}}),this.onDidChange=this._onDidChange.event}getActions(e){return this._menuInfo.createActionGroups(e)}dispose(){this._disposables.dispose(),this._onDidChange.dispose()}};function ks(e,t,i){const n=(0,Wi.f6)(t)?t.submenu.id:t.id,o="string"===typeof t.title?t.title:t.title.value,s=(0,zi.xw)({id:"hide/".concat(e.id,"/").concat(n),label:(0,De.NC)("hide.label","Hide '{0}'",o),run(){i.updateHidden(e,n,!0)}}),r=(0,zi.xw)({id:"toggle/".concat(e.id,"/").concat(n),label:o,get checked(){return!i.isHidden(e,n)},run(){i.updateHidden(e,n,!!this.checked)}});return{hide:s,toggle:r,get isHidden(){return!r.checked}}}Ls=bs([Cs(3,Kt.H),Cs(4,ue.i6)],Ls);var Ds,Ns=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},xs=function(e,t){return function(i,n){t(i,n,e)}};let Es=Ds=class extends r.JT{constructor(e,t){super(),this.layoutService=e,this.logService=t,this.mapTextToType=new Map,this.findText="",this.resources=[],this.resourcesStateHash=void 0,(Ki.G6||Ki.MG)&&this.installWebKitWriteTextWorkaround(),this._register(re.ju.runAndSubscribe(oe.Xo,(e=>{let{window:t,disposables:i}=e;i.add((0,oe.nm)(t.document,"copy",(()=>this.clearResources())))}),{window:s.E,disposables:this._store}))}installWebKitWriteTextWorkaround(){const e=()=>{const e=new ei.CR;this.webKitPendingClipboardWritePromise&&!this.webKitPendingClipboardWritePromise.isSettled&&this.webKitPendingClipboardWritePromise.cancel(),this.webKitPendingClipboardWritePromise=e,navigator.clipboard.write([new ClipboardItem({"text/plain":e.p})]).catch((async t=>{t instanceof Error&&"NotAllowedError"===t.name&&e.isRejected||this.logService.error(t)}))};this._register(re.ju.runAndSubscribe(this.layoutService.onDidAddContainer,(t=>{let{container:i,disposables:n}=t;n.add((0,oe.nm)(i,"click",e)),n.add((0,oe.nm)(i,"keydown",e))}),{container:this.layoutService.mainContainer,disposables:this._store}))}async writeText(e,t){if(this.writeResources([]),t)this.mapTextToType.set(t,e);else{if(this.webKitPendingClipboardWritePromise)return this.webKitPendingClipboardWritePromise.complete(e);try{return await navigator.clipboard.writeText(e)}catch(i){console.error(i)}this.fallbackWriteText(e)}}fallbackWriteText(e){const t=(0,oe.uP)(),i=t.activeElement,n=t.body.appendChild((0,oe.$)("textarea",{"aria-hidden":!0}));n.style.height="1px",n.style.width="1px",n.style.position="absolute",n.value=e,n.focus(),n.select(),t.execCommand("copy"),i instanceof HTMLElement&&i.focus(),t.body.removeChild(n)}async readText(e){if(e)return this.mapTextToType.get(e)||"";try{return await navigator.clipboard.readText()}catch(t){console.error(t)}return""}async readFindText(){return this.findText}async writeFindText(e){this.findText=e}async writeResources(e){0===e.length?this.clearResources():(this.resources=e,this.resourcesStateHash=await this.computeResourcesStateHash())}async readResources(){const e=await this.computeResourcesStateHash();return this.resourcesStateHash!==e&&this.clearResources(),this.resources}async computeResourcesStateHash(){if(0===this.resources.length)return;const e=await this.readText();return(0,Rn.vp)(e.substring(0,Ds.MAX_RESOURCE_STATE_SOURCE_LENGTH))}clearResources(){this.resources=[],this.resourcesStateHash=void 0}};Es.MAX_RESOURCE_STATE_SOURCE_LENGTH=1e3,Es=Ds=Ns([xs(0,be),xs(1,Ue.VZ)],Es);var Is=i(85729),Ts=i(36952),Ms=i(737),As=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Rs=function(e,t){return function(i,n){t(i,n,e)}};const Os="data-keybinding-context";class Ps{constructor(e,t){this._id=e,this._parent=t,this._value=Object.create(null),this._value._contextId=e}get value(){return{...this._value}}setValue(e,t){return this._value[e]!==t&&(this._value[e]=t,!0)}removeValue(e){return e in this._value&&(delete this._value[e],!0)}getValue(e){const t=this._value[e];return"undefined"===typeof t&&this._parent?this._parent.getValue(e):t}}class Fs extends Ps{constructor(){super(-1,null)}setValue(e,t){return!1}removeValue(e){return!1}getValue(e){}}Fs.INSTANCE=new Fs;class Bs extends Ps{constructor(e,t,i){super(e,null),this._configurationService=t,this._values=Ms.Id.forConfigKeys(),this._listener=this._configurationService.onDidChangeConfiguration((e=>{if(7===e.source){const e=Array.from(this._values,(e=>{let[t]=e;return t}));this._values.clear(),i.fire(new Ws(e))}else{const t=[];for(const i of e.affectedKeys){const e="config.".concat(i),n=this._values.findSuperstr(e);void 0!==n&&(t.push(...Ts.$.map(n,(e=>{let[t]=e;return t}))),this._values.deleteSuperstr(e)),this._values.has(e)&&(t.push(e),this._values.delete(e))}i.fire(new Ws(t))}}))}dispose(){this._listener.dispose()}getValue(e){if(0!==e.indexOf(Bs._keyPrefix))return super.getValue(e);if(this._values.has(e))return this._values.get(e);const t=e.substr(Bs._keyPrefix.length),i=this._configurationService.getValue(t);let n;switch(typeof i){case"number":case"boolean":case"string":n=i;break;default:n=Array.isArray(i)?JSON.stringify(i):i}return this._values.set(e,n),n}setValue(e,t){return super.setValue(e,t)}removeValue(e){return super.removeValue(e)}}Bs._keyPrefix="config.";class zs{constructor(e,t,i){this._service=e,this._key=t,this._defaultValue=i,this.reset()}set(e){this._service.setContext(this._key,e)}reset(){"undefined"===typeof this._defaultValue?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}get(){return this._service.getContextKeyValue(this._key)}}class Vs{constructor(e){this.key=e}affectsSome(e){return e.has(this.key)}allKeysContainedIn(e){return this.affectsSome(e)}}class Ws{constructor(e){this.keys=e}affectsSome(e){for(const t of this.keys)if(e.has(t))return!0;return!1}allKeysContainedIn(e){return this.keys.every((t=>e.has(t)))}}class Hs{constructor(e){this.events=e}affectsSome(e){for(const t of this.events)if(t.affectsSome(e))return!0;return!1}allKeysContainedIn(e){return this.events.every((t=>t.allKeysContainedIn(e)))}}class Ks extends r.JT{constructor(e){super(),this._onDidChangeContext=this._register(new re.K3({merge:e=>new Hs(e)})),this.onDidChangeContext=this._onDidChangeContext.event,this._isDisposed=!1,this._myContextId=e}createKey(e,t){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new zs(this,e,t)}bufferChangeEvents(e){this._onDidChangeContext.pause();try{e()}finally{this._onDidChangeContext.resume()}}createScoped(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new js(this,e)}contextMatchesRules(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");const t=this.getContextValuesContainer(this._myContextId);return!e||e.evaluate(t)}getContextKeyValue(e){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(e)}setContext(e,t){if(this._isDisposed)return;const i=this.getContextValuesContainer(this._myContextId);i&&i.setValue(e,t)&&this._onDidChangeContext.fire(new Vs(e))}removeContext(e){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(e)&&this._onDidChangeContext.fire(new Vs(e))}getContext(e){return this._isDisposed?Fs.INSTANCE:this.getContextValuesContainer(function(e){for(;e;){if(e.hasAttribute(Os)){const t=e.getAttribute(Os);return t?parseInt(t,10):NaN}e=e.parentElement}return 0}(e))}dispose(){super.dispose(),this._isDisposed=!0}}let Us=class extends Ks{constructor(e){super(0),this._contexts=new Map,this._lastContextId=0;const t=this._register(new Bs(this._myContextId,e,this._onDidChangeContext));this._contexts.set(this._myContextId,t)}getContextValuesContainer(e){return this._isDisposed?Fs.INSTANCE:this._contexts.get(e)||Fs.INSTANCE}createChildContext(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._myContextId;if(this._isDisposed)throw new Error("ContextKeyService has been disposed");const t=++this._lastContextId;return this._contexts.set(t,new Ps(t,this.getContextValuesContainer(e))),t}disposeContext(e){this._isDisposed||this._contexts.delete(e)}};Us=As([Rs(0,V.Ui)],Us);class js extends Ks{constructor(e,t){if(super(e.createChildContext()),this._parentChangeListener=this._register(new r.XK),this._parent=e,this._updateParentChangeListener(),this._domNode=t,this._domNode.hasAttribute(Os)){let e="";this._domNode.classList&&(e=Array.from(this._domNode.classList.values()).join(", ")),console.error("Element already has context attribute".concat(e?": "+e:""))}this._domNode.setAttribute(Os,String(this._myContextId))}_updateParentChangeListener(){this._parentChangeListener.value=this._parent.onDidChangeContext((e=>{const t=this._parent.getContextValuesContainer(this._myContextId).value;var i;i=t,e.allKeysContainedIn(new Set(Object.keys(i)))||this._onDidChangeContext.fire(e)}))}dispose(){this._isDisposed||(this._parent.disposeContext(this._myContextId),this._domNode.removeAttribute(Os),super.dispose())}getContextValuesContainer(e){return this._isDisposed?Fs.INSTANCE:this._parent.getContextValuesContainer(e)}createChildContext(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._myContextId;if(this._isDisposed)throw new Error("ScopedContextKeyService has been disposed");return this._parent.createChildContext(e)}disposeContext(e){this._isDisposed||this._parent.disposeContext(e)}}Kt.P.registerCommand("_setContext",(function(e,t,i){e.get(ue.i6).createKey(String(t),function(e){return(0,u.rs)(e,(e=>"object"===typeof e&&1===e.$mid?l.o.revive(e).toString():e instanceof l.o?e.toString():void 0))}(i))})),Kt.P.registerCommand({id:"getContextKeyInfo",handler:()=>[...ue.uy.all()].sort(((e,t)=>e.key.localeCompare(t.key))),metadata:{description:(0,De.NC)("getContextKeyInfo","A command that returns information about context keys"),args:[]}}),Kt.P.registerCommand("_generateContextKeyInfo",(function(){const e=[],t=new Set;for(const i of ue.uy.all())t.has(i.key)||(t.add(i.key),e.push(i));e.sort(((e,t)=>e.key.localeCompare(t.key))),console.log(JSON.stringify(e,void 0,2))}));var qs=i(58834);class Gs{constructor(e,t){this.key=e,this.data=t,this.incoming=new Map,this.outgoing=new Map}}class Qs{constructor(e){this._hashFn=e,this._nodes=new Map}roots(){const e=[];for(const t of this._nodes.values())0===t.outgoing.size&&e.push(t);return e}insertEdge(e,t){const i=this.lookupOrInsertNode(e),n=this.lookupOrInsertNode(t);i.outgoing.set(n.key,n),n.incoming.set(i.key,i)}removeNode(e){const t=this._hashFn(e);this._nodes.delete(t);for(const i of this._nodes.values())i.outgoing.delete(t),i.incoming.delete(t)}lookupOrInsertNode(e){const t=this._hashFn(e);let i=this._nodes.get(t);return i||(i=new Gs(t,e),this._nodes.set(t,i)),i}isEmpty(){return 0===this._nodes.size}toString(){const e=[];for(const[t,i]of this._nodes)e.push("".concat(t,"\n\t(-> incoming)[").concat([...i.incoming.keys()].join(", "),"]\n\t(outgoing ->)[").concat([...i.outgoing.keys()].join(","),"]\n"));return e.join("\n")}findCycleSlow(){for(const[e,t]of this._nodes){const i=new Set([e]),n=this._findCycle(t,i);if(n)return n}}_findCycle(e,t){for(const[i,n]of e.outgoing){if(t.has(i))return[...t,i].join(" -> ");t.add(i);const e=this._findCycle(n,t);if(e)return e;t.delete(i)}}}var Zs=i(54731);class Ys extends Error{constructor(e){var t;super("cyclic dependency between services"),this.message=null!==(t=e.findCycleSlow())&&void 0!==t?t:"UNABLE to detect cycle, dumping graph: \n".concat(e.toString())}}class $s{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Zs.y,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];var o;this._services=e,this._strict=t,this._parent=i,this._enableTracing=n,this._activeInstantiations=new Set,this._services.set(ve.TG,this),this._globalGraph=n?null!==(o=null===i||void 0===i?void 0:i._globalGraph)&&void 0!==o?o:new Qs((e=>e)):void 0}createChild(e){return new $s(e,this._strict,this,this._enableTracing)}invokeFunction(e){const t=Js.traceInvocation(this._enableTracing,e);let i=!1;try{const r={get:e=>{if(i)throw(0,Le.L6)("service accessor is only valid during the invocation of its target method");const n=this._getOrCreateServiceInstance(e,t);if(!n)throw new Error("[invokeFunction] unknown service '".concat(e,"'"));return n}};for(var n=arguments.length,o=new Array(n>1?n-1:0),s=1;s1?n-1:0),s=1;s1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;const n=ve.I8.getServiceDependencies(e).sort(((e,t)=>e.index-t.index)),o=[];for(const r of n){const t=this._getOrCreateServiceInstance(r.id,i);t||this._throwIfStrict("[createInstance] ".concat(e.name," depends on UNKNOWN service ").concat(r.id,"."),!1),o.push(t)}const s=n.length>0?n[0].index:t.length;if(t.length!==s){console.trace("[createInstance] First service dependency of ".concat(e.name," at position ").concat(s+1," conflicts with ").concat(t.length," static arguments"));const i=s-t.length;t=i>0?t.concat(new Array(i)):t.slice(0,s)}return Reflect.construct(e,t.concat(o))}_setServiceInstance(e,t){if(this._services.get(e)instanceof qs.M)this._services.set(e,t);else{if(!this._parent)throw new Error("illegalState - setting UNKNOWN service instance");this._parent._setServiceInstance(e,t)}}_getServiceInstanceOrDescriptor(e){const t=this._services.get(e);return!t&&this._parent?this._parent._getServiceInstanceOrDescriptor(e):t}_getOrCreateServiceInstance(e,t){this._globalGraph&&this._globalGraphImplicitDependency&&this._globalGraph.insertEdge(this._globalGraphImplicitDependency,String(e));const i=this._getServiceInstanceOrDescriptor(e);return i instanceof qs.M?this._safeCreateAndCacheServiceInstance(e,i,t.branch(e,!0)):(t.branch(e,!1),i)}_safeCreateAndCacheServiceInstance(e,t,i){if(this._activeInstantiations.has(e))throw new Error("illegal state - RECURSIVELY instantiating service '".concat(e,"'"));this._activeInstantiations.add(e);try{return this._createAndCacheServiceInstance(e,t,i)}finally{this._activeInstantiations.delete(e)}}_createAndCacheServiceInstance(e,t,i){var n;const o=new Qs((e=>e.id.toString()));let s=0;const r=[{id:e,desc:t,_trace:i}];for(;r.length;){const t=r.pop();if(o.lookupOrInsertNode(t),s++>1e3)throw new Ys(o);for(const i of ve.I8.getServiceDependencies(t.desc.ctor)){const s=this._getServiceInstanceOrDescriptor(i.id);if(s||this._throwIfStrict("[createInstance] ".concat(e," depends on ").concat(i.id," which is NOT registered."),!0),null===(n=this._globalGraph)||void 0===n||n.insertEdge(String(t.id),String(i.id)),s instanceof qs.M){const e={id:i.id,desc:s,_trace:t._trace.branch(i.id,!0)};o.insertEdge(t,e),r.push(e)}}}for(;;){const e=o.roots();if(0===e.length){if(!o.isEmpty())throw new Ys(o);break}for(const{data:t}of e){if(this._getServiceInstanceOrDescriptor(t.id)instanceof qs.M){const e=this._createServiceInstanceWithOwner(t.id,t.desc.ctor,t.desc.staticArguments,t.desc.supportsDelayedInstantiation,t._trace);this._setServiceInstance(t.id,e)}o.removeNode(t)}}return this._getServiceInstanceOrDescriptor(e)}_createServiceInstanceWithOwner(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0;if(this._services.get(e)instanceof qs.M)return this._createServiceInstance(e,t,i,n,o);if(this._parent)return this._parent._createServiceInstanceWithOwner(e,t,i,n,o);throw new Error("illegalState - creating UNKNOWN service instance ".concat(t.name))}_createServiceInstance(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=arguments.length>4?arguments[4]:void 0;if(arguments.length>3?arguments[3]:void 0){const o=new $s(void 0,this._strict,this,this._enableTracing);o._globalGraphImplicitDependency=String(e);const s=new Map,a=new ei.R5((()=>{const e=o._createInstance(t,i,n);for(const[t,i]of s){const n=e[t];if("function"===typeof n)for(const t of i)t.disposable=n.apply(e,t.listener)}return s.clear(),e}));return new Proxy(Object.create(null),{get(e,t){if(!a.isInitialized&&"string"===typeof t&&(t.startsWith("onDid")||t.startsWith("onWill"))){let e=s.get(t);e||(e=new ae.S,s.set(t,e));return(i,n,o)=>{if(a.isInitialized)return a.value[t](i,n,o);{const t={listener:[i,n,o],disposable:void 0},s=e.push(t);return(0,r.OF)((()=>{var e;s(),null===(e=t.disposable)||void 0===e||e.dispose()}))}}}if(t in e)return e[t];const i=a.value;let n=i[t];return"function"!==typeof n||(n=n.bind(i),e[t]=n),n},set:(e,t,i)=>(a.value[t]=i,!0),getPrototypeOf:e=>t.prototype})}return this._createInstance(t,i,n)}_throwIfStrict(e,t){if(t&&console.warn(e),this._strict)throw new Error(e)}}class Js{static traceInvocation(e,t){return e?new Js(2,t.name||(new Error).stack.split("\n").slice(3,4).join("\n")):Js._None}static traceCreation(e,t){return e?new Js(1,t.name):Js._None}constructor(e,t){this.type=e,this.name=t,this._start=Date.now(),this._dep=[]}branch(e,t){const i=new Js(3,e.toString());return this._dep.push([e,t,i]),i}stop(){const e=Date.now()-this._start;Js._totals+=e;let t=!1;const i=["".concat(1===this.type?"CREATE":"CALL"," ").concat(this.name),"".concat(function e(i,n){const o=[],s=new Array(i+1).join("\t");for(const[r,a,l]of n._dep)if(a&&l){t=!0,o.push("".concat(s,"CREATES -> ").concat(r));const n=e(i+1,l);n&&o.push(n)}else o.push("".concat(s,"uses -> ").concat(r));return o.join("\n")}(1,this)),"DONE, took ".concat(e.toFixed(2),"ms (grand total ").concat(Js._totals.toFixed(2),"ms)")];(e>2||t)&&Js.all.add(i.join("\n"))}}Js.all=new Set,Js._None=new class extends Js{constructor(){super(0,null)}stop(){}branch(){return this}},Js._totals=0;const Xs=new Set([se.lg.inMemory,se.lg.vscodeSourceControl,se.lg.walkThrough,se.lg.walkThroughSnippet,se.lg.vscodeChatCodeBlock]);class er{constructor(){this._byResource=new Ut.Y9,this._byOwner=new Map}set(e,t,i){let n=this._byResource.get(e);n||(n=new Map,this._byResource.set(e,n)),n.set(t,i);let o=this._byOwner.get(t);o||(o=new Ut.Y9,this._byOwner.set(t,o)),o.set(e,i)}get(e,t){const i=this._byResource.get(e);return null===i||void 0===i?void 0:i.get(t)}delete(e,t){let i=!1,n=!1;const o=this._byResource.get(e);o&&(i=o.delete(t));const s=this._byOwner.get(t);if(s&&(n=s.delete(e)),i!==n)throw new Error("illegal state");return i&&n}values(e){var t,i,n,o;return"string"===typeof e?null!==(i=null===(t=this._byOwner.get(e))||void 0===t?void 0:t.values())&&void 0!==i?i:Ts.$.empty():l.o.isUri(e)?null!==(o=null===(n=this._byResource.get(e))||void 0===n?void 0:n.values())&&void 0!==o?o:Ts.$.empty():Ts.$.map(Ts.$.concat(...this._byOwner.values()),(e=>e[1]))}}class tr{constructor(e){this.errors=0,this.infos=0,this.warnings=0,this.unknowns=0,this._data=new Ut.Y9,this._service=e,this._subscription=e.onMarkerChanged(this._update,this)}dispose(){this._subscription.dispose()}_update(e){for(const t of e){const e=this._data.get(t);e&&this._substract(e);const i=this._resourceStats(t);this._add(i),this._data.set(t,i)}}_resourceStats(e){const t={errors:0,warnings:0,infos:0,unknowns:0};if(Xs.has(e.scheme))return t;for(const{severity:i}of this._service.read({resource:e}))i===Sn.ZL.Error?t.errors+=1:i===Sn.ZL.Warning?t.warnings+=1:i===Sn.ZL.Info?t.infos+=1:t.unknowns+=1;return t}_substract(e){this.errors-=e.errors,this.warnings-=e.warnings,this.infos-=e.infos,this.unknowns-=e.unknowns}_add(e){this.errors+=e.errors,this.warnings+=e.warnings,this.infos+=e.infos,this.unknowns+=e.unknowns}}class ir{constructor(){this._onMarkerChanged=new re.D0({delay:0,merge:ir._merge}),this.onMarkerChanged=this._onMarkerChanged.event,this._data=new er,this._stats=new tr(this)}dispose(){this._stats.dispose(),this._onMarkerChanged.dispose()}remove(e,t){for(const i of t||[])this.changeOne(e,i,[])}changeOne(e,t,i){if((0,_e.XY)(i)){this._data.delete(t,e)&&this._onMarkerChanged.fire([t])}else{const n=[];for(const o of i){const i=ir._toMarker(e,t,o);i&&n.push(i)}this._data.set(t,e,n),this._onMarkerChanged.fire([t])}}static _toMarker(e,t,i){let{code:n,severity:o,message:s,source:r,startLineNumber:a,startColumn:l,endLineNumber:h,endColumn:d,relatedInformation:c,tags:u}=i;if(s)return a=a>0?a:1,l=l>0?l:1,h=h>=a?h:a,d=d>0?d:l,{resource:t,owner:e,code:n,severity:o,message:s,source:r,startLineNumber:a,startColumn:l,endLineNumber:h,endColumn:d,relatedInformation:c,tags:u}}changeAll(e,t){const i=[],n=this._data.values(e);if(n)for(const o of n){const t=Ts.$.first(o);t&&(i.push(t.resource),this._data.delete(t.resource,e))}if((0,_e.Of)(t)){const n=new Ut.Y9;for(const{resource:o,marker:s}of t){const t=ir._toMarker(e,o,s);if(!t)continue;const r=n.get(o);r?r.push(t):(n.set(o,[t]),i.push(o))}for(const[t,i]of n)this._data.set(t,e,i)}i.length>0&&this._onMarkerChanged.fire(i)}read(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Object.create(null),{owner:t,resource:i,severities:n,take:o}=e;if((!o||o<0)&&(o=-1),t&&i){const e=this._data.get(i,t);if(e){const t=[];for(const i of e)if(ir._accept(i,n)){const e=t.push(i);if(o>0&&e===o)break}return t}return[]}if(t||i){const e=this._data.values(null!==i&&void 0!==i?i:t),s=[];for(const t of e)for(const e of t)if(ir._accept(e,n)){const t=s.push(e);if(o>0&&t===o)return s}return s}{const e=[];for(const t of this._data.values())for(const i of t)if(ir._accept(i,n)){const t=e.push(i);if(o>0&&t===o)return e}return e}}static _accept(e,t){return void 0===t||(t&e.severity)===e.severity}static _merge(e){const t=new Ut.Y9;for(const i of e)for(const e of i)t.set(e,!0);return Array.from(t.keys())}}class nr extends r.JT{constructor(){super(...arguments),this._configurationModel=new Zt}get configurationModel(){return this._configurationModel}reload(){return this.resetConfigurationModel(),this.configurationModel}getConfigurationDefaultOverrides(){return{}}resetConfigurationModel(){this._configurationModel=new Zt;const e=Gt.B.as(qt.IP.Configuration).getConfigurationProperties();this.updateConfigurationModel(Object.keys(e),e)}updateConfigurationModel(e,t){const i=this.getConfigurationDefaultOverrides();for(const n of e){const e=i[n],o=t[n];void 0!==e?this._configurationModel.addValue(n,e):o?this._configurationModel.addValue(n,o.default):this._configurationModel.removeValue(n)}}}var or=i(68633);class sr extends r.JT{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];super(),this.logger=new Ue.qA([e,...t]),this._register(e.onDidChangeLogLevel((e=>this.setLevel(e))))}get onDidChangeLogLevel(){return this.logger.onDidChangeLogLevel}setLevel(e){this.logger.setLevel(e)}getLevel(){return this.logger.getLevel()}trace(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},hr=function(e,t){return function(i,n){t(i,n,e)}};class dr{constructor(e){this.disposed=!1,this.model=e,this._onWillDispose=new re.Q5}get textEditorModel(){return this.model}dispose(){this.disposed=!0,this._onWillDispose.fire()}}let cr=class{constructor(e){this.modelService=e}createModelReference(e){const t=this.modelService.getModel(e);return t?Promise.resolve(new r.Jz(new dr(t))):Promise.reject(new Error("Model not found"))}};cr=lr([hr(0,L.q)],cr);class ur{show(){return ur.NULL_PROGRESS_RUNNER}async showWhile(e,t){await e}}ur.NULL_PROGRESS_RUNNER={done:()=>{},total:()=>{},worked:()=>{}};class gr{info(e){return this.notify({severity:ke.Z.Info,message:e})}warn(e){return this.notify({severity:ke.Z.Warning,message:e})}error(e){return this.notify({severity:ke.Z.Error,message:e})}notify(e){switch(e.severity){case ke.Z.Error:console.error(e.message);break;case ke.Z.Warning:console.warn(e.message);break;default:console.log(e.message)}return gr.NO_OP}prompt(e,t,i,n){return gr.NO_OP}status(e,t){return r.JT.None}}gr.NO_OP=new xe.EO;let mr=class{constructor(e){this._onWillExecuteCommand=new re.Q5,this._onDidExecuteCommand=new re.Q5,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this._instantiationService=e}executeCommand(e){const t=Kt.P.getCommand(e);if(!t)return Promise.reject(new Error("command '".concat(e,"' not found")));try{for(var i=arguments.length,n=new Array(i>1?i-1:0),o=1;o{const t=new r.SL;t.add(oe.nm(e,oe.tw.KEY_DOWN,(e=>{const t=new Ct.y(e);this._dispatch(t,t.target)&&(t.preventDefault(),t.stopPropagation())}))),t.add(oe.nm(e,oe.tw.KEY_UP,(e=>{const t=new Ct.y(e);this._singleModifierDispatch(t,t.target)&&t.preventDefault()}))),this._domNodeListeners.push(new pr(e,t))},l=e=>{for(let t=0;t{e.getOption(61)||a(e.getContainerDomNode())};this._register(s.onCodeEditorAdd(h)),this._register(s.onCodeEditorRemove((e=>{e.getOption(61)||l(e.getContainerDomNode())}))),s.listCodeEditors().forEach(h);const d=e=>{a(e.getContainerDomNode())};this._register(s.onDiffEditorAdd(d)),this._register(s.onDiffEditorRemove((e=>{l(e.getContainerDomNode())}))),s.listDiffEditors().forEach(d)}addDynamicKeybinding(e,t,i,n){return(0,r.F8)(Kt.P.registerCommand(e,i),this.addDynamicKeybindings([{keybinding:t,command:e,when:n}]))}addDynamicKeybindings(e){const t=e.map((e=>{var t;return{keybinding:(0,Ot.Z9)(e.keybinding,ct.OS),command:null!==(t=e.command)&&void 0!==t?t:null,commandArgs:e.commandArgs,when:e.when,weight1:1e3,weight2:0,extensionId:null,isBuiltinExtension:!1}}));return this._dynamicKeybindings=this._dynamicKeybindings.concat(t),this.updateResolver(),(0,r.OF)((()=>{for(let e=0;ethis._log(e)))}return this._cachedResolver}_documentHasFocus(){return s.E.document.hasFocus()}_toNormalizedKeybindingItems(e,t){const i=[];let n=0;for(const o of e){const e=o.when||void 0,s=o.keybinding;if(s){const r=pi.resolveKeybinding(s,ct.OS);for(const s of r)i[n++]=new ci(s,o.command,o.commandArgs,e,t,null,!1)}else i[n++]=new ci(void 0,o.command,o.commandArgs,e,t,null,!1)}return i}resolveKeyboardEvent(e){const t=new Ot.$M(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,e.keyCode);return new pi([t],ct.OS)}};fr=lr([hr(0,ue.i6),hr(1,Kt.H),hr(2,bi.b),hr(3,xe.lT),hr(4,Ue.VZ),hr(5,c.$)],fr);class pr extends r.JT{constructor(e,t){super(),this.domNode=e,this._register(t)}}function _r(e){return e&&"object"===typeof e&&(!e.overrideIdentifier||"string"===typeof e.overrideIdentifier)&&(!e.resource||e.resource instanceof l.o)}class vr{constructor(){this._onDidChangeConfiguration=new re.Q5,this.onDidChangeConfiguration=this._onDidChangeConfiguration.event;const e=new nr;this._configuration=new Jt(e.reload(),new Zt,new Zt,new Zt),e.dispose()}getValue(e,t){const i="string"===typeof e?e:void 0,n=_r(e)?e:_r(t)?t:{};return this._configuration.getValue(i,n,void 0)}updateValues(e){const t={data:this._configuration.toData()},i=[];for(const n of e){const[e,t]=n;this.getValue(e)!==t&&(this._configuration.updateValue(e,t),i.push(e))}if(i.length>0){const e=new Xt({keys:i,overrides:[]},t,this._configuration);e.source=8,this._onDidChangeConfiguration.fire(e)}return Promise.resolve()}updateValue(e,t,i,n){return this.updateValues([[e,t]])}inspect(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this._configuration.inspect(e,t,void 0)}}let br=class{constructor(e,t,i){this.configurationService=e,this.modelService=t,this.languageService=i,this._onDidChangeConfiguration=new re.Q5,this.configurationService.onDidChangeConfiguration((e=>{this._onDidChangeConfiguration.fire({affectedKeys:e.affectedKeys,affectsConfiguration:(t,i)=>e.affectsConfiguration(i)})}))}getValue(e,t,i){const n=zt.L.isIPosition(t)?t:null,o=n?"string"===typeof i?i:void 0:"string"===typeof t?t:void 0,s=e?this.getLanguage(e,n):void 0;return"undefined"===typeof o?this.configurationService.getValue({resource:e,overrideIdentifier:s}):this.configurationService.getValue(o,{resource:e,overrideIdentifier:s})}getLanguage(e,t){const i=this.modelService.getModel(e);return i?t?i.getLanguageIdAtPosition(t.lineNumber,t.column):i.getLanguageId():this.languageService.guessLanguageIdByFilepathOrFirstLine(e)}};br=lr([hr(0,V.Ui),hr(1,L.q),hr(2,b.O)],br);let Cr=class{constructor(e){this.configurationService=e}getEOL(e,t){const i=this.configurationService.getValue("files.eol",{overrideIdentifier:t,resource:e});return i&&"string"===typeof i&&"auto"!==i?i:ct.IJ||ct.dz?"\n":"\r\n"}};Cr=lr([hr(0,V.Ui)],Cr);class wr{constructor(){const e=l.o.from({scheme:wr.SCHEME,authority:"model",path:"/"});this.workspace={id:Ci.p$,folders:[new Ci.md({uri:e,name:"",index:0})]}}getWorkspace(){return this.workspace}getWorkspaceFolder(e){return e&&e.scheme===wr.SCHEME?this.workspace.folders[0]:null}}function yr(e,t,i){if(!t)return;if(!(e instanceof vr))return;const n=[];Object.keys(t).forEach((e=>{(0,Ft.ei)(e)&&n.push(["editor.".concat(e),t[e]]),i&&(0,Ft.Pe)(e)&&n.push(["diffEditor.".concat(e),t[e]])})),n.length>0&&e.updateValues(n)}wr.SCHEME="inmemory";let Sr=class{constructor(e){this._modelService=e}hasPreviewHandler(){return!1}async apply(e,t){const i=Array.isArray(e)?e:Pt.fo.convert(e),n=new Map;for(const r of i){if(!(r instanceof Pt.Gl))throw new Error("bad edit - only text edits are supported");const e=this._modelService.getModel(r.resource);if(!e)throw new Error("bad edit - model not found");if("number"===typeof r.versionId&&e.getVersionId()!==r.versionId)throw new Error("bad state - model changed in the meantime");let t=n.get(e);t||(t=[],n.set(e,t)),t.push(Bt.h.replaceMove(Vt.e.lift(r.textEdit.range),r.textEdit.text))}let o=0,s=0;for(const[r,a]of n)r.pushStackElement(),r.pushEditOperations([],a,(()=>[])),r.pushStackElement(),s+=1,o+=a.length;return{ariaSummary:a.WU(wi.iN.bulkEditServiceSummary,o,s),isApplied:o>0}}};Sr=lr([hr(0,L.q)],Sr);let Lr=class extends Et{constructor(e,t){super(e),this._codeEditorService=t}showContextView(e,t,i){if(!t){const e=this._codeEditorService.getFocusedCodeEditor()||this._codeEditorService.getActiveCodeEditor();e&&(t=e.getContainerDomNode())}return super.showContextView(e,t,i)}};Lr=lr([hr(0,be),hr(1,c.$)],Lr);let kr=class extends un{constructor(e,t,i,n,o,s){super(e,t,i,n,o,s),this.configure({blockMouse:!1})}};kr=lr([hr(0,bi.b),hr(1,xe.lT),hr(2,ot.u),hr(3,st.d),hr(4,Wi.co),hr(5,ue.i6)],kr);var Dr;(0,ge.z)(V.Ui,vr,0),(0,ge.z)(Ht.V,br,0),(0,ge.z)(Ht.y,Cr,0),(0,ge.z)(Ci.ec,wr,0),(0,ge.z)(_i.e,class{getUriLabel(e,t){return"file"===e.scheme?e.fsPath:e.path}getUriBasenameLabel(e){return(0,yi.EZ)(e)}},0),(0,ge.z)(bi.b,class{publicLog2(){}},0),(0,ge.z)(Ne.S,class{async confirm(e){return{confirmed:this.doConfirm(e.message,e.detail),checkboxChecked:!1}}doConfirm(e,t){let i=e;return t&&(i=i+"\n\n"+t),s.E.confirm(i)}async prompt(e){var t,i;let n;if(this.doConfirm(e.message,e.detail)){const o=[...null!==(t=e.buttons)&&void 0!==t?t:[]];e.cancelButton&&"string"!==typeof e.cancelButton&&"boolean"!==typeof e.cancelButton&&o.push(e.cancelButton),n=await(null===(i=o[0])||void 0===i?void 0:i.run({checkboxChecked:!1}))}return{result:n}}async error(e,t){await this.prompt({type:ke.Z.Error,message:e,detail:t})}},0),(0,ge.z)(ar.Y,class{constructor(){this.isExtensionDevelopment=!1,this.isBuilt=!1}},0),(0,ge.z)(xe.lT,gr,0),(0,ge.z)(Sn.lT,ir,0),(0,ge.z)(b.O,class extends Fi{constructor(){super()}},0),(0,ge.z)(us.Z,cs.nI,0),(0,ge.z)(Ue.VZ,class extends sr{constructor(){super(new Ue.kw)}},0),(0,ge.z)(L.q,Hn,0),(0,ge.z)(Tn.i,xn,0),(0,ge.z)(ue.i6,Us,0),(0,ge.z)(vi.R9,class{withProgress(e,t,i){return t({report:()=>{}})}},0),(0,ge.z)(vi.ek,ur,0),(0,ge.z)(vs.Uy,vs.vm,0),(0,ge.z)(yn.p,g.eu,0),(0,ge.z)(Pt.vu,Sr,0),(0,ge.z)(Si.Y,class{constructor(){this._neverEmitter=new re.Q5,this.onDidChangeTrust=this._neverEmitter.event}isWorkspaceTrusted(){return!0}},0),(0,ge.z)(Wt.S,cr,0),(0,ge.z)(ut.F,fs,0),(0,ge.z)(ao.Lw,ao.XN,0),(0,ge.z)(Kt.H,mr,0),(0,ge.z)(st.d,fr,0),(0,ge.z)(jn.eJ,ls,0),(0,ge.z)(ot.u,Lr,0),(0,ge.z)(lt.v,wn,0),(0,ge.z)(Is.p,Es,0),(0,ge.z)(ot.i,kr,0),(0,ge.z)(Wi.co,ws,0),(0,ge.z)(or.IV,class{async playSignal(e,t){}},0),function(e){const t=new Zs.y;for(const[r,a]of(0,ge.d)())t.set(r,a);const i=new $s(t,!0);t.set(ve.TG,i),e.get=function(e){n||s({});const o=t.get(e);if(!o)throw new Error("Missing service "+e);return o instanceof qs.M?i.invokeFunction((t=>t.get(e))):o};let n=!1;const o=new re.Q5;function s(e){if(n)return i;n=!0;for(const[i,n]of(0,ge.d)())t.get(i)||t.set(i,n);for(const i in e)if(e.hasOwnProperty(i)){const n=(0,ve.yh)(i);t.get(n)instanceof qs.M&&t.set(n,e[i])}const s=(0,rr.n)();for(const t of s)try{i.createInstance(t)}catch(r){(0,Le.dL)(r)}return o.fire(),i}e.initialize=s,e.withServices=function(e){if(n)return e();const t=new r.SL,i=t.add(o.event((()=>{i.dispose(),t.add(e())})));return t}}(Dr||(Dr={}));var Nr=i(95233),xr=i(14561),Er=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ir=function(e,t){return function(i,n){t(i,n,e)}};let Tr=0,Mr=!1;let Ar=class extends ie.Gm{constructor(e,t,i,n,o,r,a,l,h,d,c,u){const g={...t};g.ariaLabel=g.ariaLabel||wi.B8.editorViewAccessibleLabel,g.ariaLabel=g.ariaLabel+";"+wi.B8.accessibilityHelpMessage,super(e,g,{},i,n,o,r,l,h,d,c,u),this._standaloneKeybindingService=a instanceof fr?a:null,function(e){if(!e){if(Mr)return;Mr=!0}te.wW(e||s.E.document.body)}(g.ariaContainerElement),(0,xr.rM)(((e,t)=>i.createInstance(nt.mQ,e,t,{})))}addCommand(e,t,i){if(!this._standaloneKeybindingService)return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"),null;const n="DYNAMIC_"+ ++Tr,o=ue.Ao.deserialize(i);return this._standaloneKeybindingService.addDynamicKeybinding(n,e,t,o),n}createContextKey(e,t){return this._contextKeyService.createKey(e,t)}addAction(e){var t=this;if("string"!==typeof e.id||"string"!==typeof e.label||"function"!==typeof e.run)throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");if(!this._standaloneKeybindingService)return console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),r.JT.None;const i=e.id,n=e.label,o=ue.Ao.and(ue.Ao.equals("editorId",this.getId()),ue.Ao.deserialize(e.precondition)),s=e.keybindings,a=ue.Ao.and(o,ue.Ao.deserialize(e.keybindingContext)),l=e.contextMenuGroupId||null,h=e.contextMenuOrder||0,d=function(i){for(var n=arguments.length,o=new Array(n>1?n-1:0),s=1;s{this._actions.delete(i)}))),c}_triggerCommand(e,t){if(this._codeEditorService instanceof pe)try{this._codeEditorService.setActiveCodeEditor(this),super._triggerCommand(e,t)}finally{this._codeEditorService.setActiveCodeEditor(null)}else super._triggerCommand(e,t)}};Ar=Er([Ir(2,ve.TG),Ir(3,c.$),Ir(4,Kt.H),Ir(5,ue.i6),Ir(6,st.d),Ir(7,le.XE),Ir(8,xe.lT),Ir(9,ut.F),Ir(10,C.c_),Ir(11,tt.p)],Ar);let Rr=class extends Ar{constructor(e,t,i,n,o,s,r,a,l,h,d,c,u,g,m){const f={...t};yr(h,f,!1);const p=a.registerEditorContainer(e);"string"===typeof f.theme&&a.setTheme(f.theme),"undefined"!==typeof f.autoDetectHighContrast&&a.setAutoDetectHighContrast(Boolean(f.autoDetectHighContrast));const _=f.model;let v;if(delete f.model,super(e,f,i,n,o,s,r,a,l,d,g,m),this._configurationService=h,this._standaloneThemeService=a,this._register(p),"undefined"===typeof _){const e=u.getLanguageIdByMimeType(f.language)||f.language||w.bd;v=Pr(c,u,f.value||"",e,void 0),this._ownsModel=!0}else v=_,this._ownsModel=!1;if(this._attachModel(v),v){const e={oldModelUrl:null,newModelUrl:v.uri};this._onDidChangeModel.fire(e)}}dispose(){super.dispose()}updateOptions(e){yr(this._configurationService,e,!1),"string"===typeof e.theme&&this._standaloneThemeService.setTheme(e.theme),"undefined"!==typeof e.autoDetectHighContrast&&this._standaloneThemeService.setAutoDetectHighContrast(Boolean(e.autoDetectHighContrast)),super.updateOptions(e)}_postDetachModelCleanup(e){super._postDetachModelCleanup(e),e&&this._ownsModel&&(e.dispose(),this._ownsModel=!1)}};Rr=Er([Ir(2,ve.TG),Ir(3,c.$),Ir(4,Kt.H),Ir(5,ue.i6),Ir(6,st.d),Ir(7,us.Z),Ir(8,xe.lT),Ir(9,V.Ui),Ir(10,ut.F),Ir(11,L.q),Ir(12,b.O),Ir(13,C.c_),Ir(14,tt.p)],Rr);let Or=class extends Nr.p{constructor(e,t,i,n,o,s,r,a,l,h,d,c){const u={...t};yr(a,u,!0);const g=s.registerEditorContainer(e);"string"===typeof u.theme&&s.setTheme(u.theme),"undefined"!==typeof u.autoDetectHighContrast&&s.setAutoDetectHighContrast(Boolean(u.autoDetectHighContrast)),super(e,u,{},n,i,o,c,h),this._configurationService=a,this._standaloneThemeService=s,this._register(g)}dispose(){super.dispose()}updateOptions(e){yr(this._configurationService,e,!0),"string"===typeof e.theme&&this._standaloneThemeService.setTheme(e.theme),"undefined"!==typeof e.autoDetectHighContrast&&this._standaloneThemeService.setAutoDetectHighContrast(Boolean(e.autoDetectHighContrast)),super.updateOptions(e)}_createInnerEditor(e,t,i){return e.createInstance(Ar,t,i)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(e,t,i){return this.getModifiedEditor().addCommand(e,t,i)}createContextKey(e,t){return this.getModifiedEditor().createContextKey(e,t)}addAction(e){return this.getModifiedEditor().addAction(e)}};function Pr(e,t,i,n,o){if(i=i||"",!n){const n=i.indexOf("\n");let s=i;return-1!==n&&(s=i.substring(0,n)),Fr(e,i,t.createByFilepathOrFirstLine(o||null,s),o)}return Fr(e,i,t.createById(n),o)}function Fr(e,t,i,n){return e.createModel(t,i,n)}Or=Er([Ir(2,ve.TG),Ir(3,ue.i6),Ir(4,c.$),Ir(5,us.Z),Ir(6,xe.lT),Ir(7,V.Ui),Ir(8,ot.i),Ir(9,vi.ek),Ir(10,Is.p),Ir(11,or.IV)],Or);var Br=i(59130),zr=i(5545),Vr=i(52910),Wr=i(52938),Hr=i(89314),Kr=i(57866),Ur=i(67078),jr=i(54081),qr=i(60548),Gr=i(11630),Qr=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Zr=function(e,t){return function(i,n){t(i,n,e)}};class Yr{constructor(e,t){this.viewModel=e,this.deltaScrollVertical=t}getId(){return this.viewModel}}let $r=class extends r.JT{constructor(e,t,i,n){super(),this._container=e,this._overflowWidgetsDomNode=t,this._workbenchUIElementFactory=i,this._instantiationService=n,this._viewModel=(0,Wr.uh)(this,void 0),this._collapsed=(0,Br.nK)(this,(e=>{var t;return null===(t=this._viewModel.read(e))||void 0===t?void 0:t.collapsed.read(e)})),this._editorContentHeight=(0,Wr.uh)(this,500),this.contentHeight=(0,Br.nK)(this,(e=>(this._collapsed.read(e)?0:this._editorContentHeight.read(e))+this._outerEditorHeight)),this._modifiedContentWidth=(0,Wr.uh)(this,0),this._modifiedWidth=(0,Wr.uh)(this,0),this._originalContentWidth=(0,Wr.uh)(this,0),this._originalWidth=(0,Wr.uh)(this,0),this.maxScroll=(0,Br.nK)(this,(e=>{const t=this._modifiedContentWidth.read(e)-this._modifiedWidth.read(e),i=this._originalContentWidth.read(e)-this._originalWidth.read(e);return t>i?{maxScroll:t,width:this._modifiedWidth.read(e)}:{maxScroll:i,width:this._originalWidth.read(e)}})),this._elements=(0,oe.h)("div.multiDiffEntry",[(0,oe.h)("div.header@header",[(0,oe.h)("div.header-content",[(0,oe.h)("div.collapse-button@collapseButton"),(0,oe.h)("div.file-path",[(0,oe.h)("div.title.modified.show-file-icons@primaryPath",[]),(0,oe.h)("div.status.deleted@status",["R"]),(0,oe.h)("div.title.original.show-file-icons@secondaryPath",[])]),(0,oe.h)("div.actions@actions")])]),(0,oe.h)("div.editorParent",[(0,oe.h)("div.editorContainer@editor")])]),this.editor=this._register(this._instantiationService.createInstance(Nr.p,this._elements.editor,{overflowWidgetsDomNode:this._overflowWidgetsDomNode},{})),this.isModifedFocused=Jr(this.editor.getModifiedEditor()),this.isOriginalFocused=Jr(this.editor.getOriginalEditor()),this.isFocused=(0,Br.nK)(this,(e=>this.isModifedFocused.read(e)||this.isOriginalFocused.read(e))),this._resourceLabel=this._workbenchUIElementFactory.createResourceLabel?this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath)):void 0,this._resourceLabel2=this._workbenchUIElementFactory.createResourceLabel?this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath)):void 0,this._dataStore=new r.SL,this._headerHeight=40,this._lastScrollTop=-1,this._isSettingScrollTop=!1;const o=new zo.z(this._elements.collapseButton,{});this._register((0,Br.EH)((e=>{o.element.className="",o.icon=this._collapsed.read(e)?Qi.l.chevronRight:Qi.l.chevronDown}))),this._register(o.onDidClick((()=>{var e;null===(e=this._viewModel.get())||void 0===e||e.collapsed.set(!this._collapsed.get(),void 0)}))),this._register((0,Br.EH)((e=>{this._elements.editor.style.display=this._collapsed.read(e)?"none":"block"}))),this._register(this.editor.getModifiedEditor().onDidLayoutChange((e=>{const t=this.editor.getModifiedEditor().getLayoutInfo().contentWidth;this._modifiedWidth.set(t,void 0)}))),this._register(this.editor.getOriginalEditor().onDidLayoutChange((e=>{const t=this.editor.getOriginalEditor().getLayoutInfo().contentWidth;this._originalWidth.set(t,void 0)}))),this._register(this.editor.onDidContentSizeChange((e=>{(0,Wr.Bl)((t=>{this._editorContentHeight.set(e.contentHeight,t),this._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(),t),this._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(),t)}))}))),this._register(this.editor.getOriginalEditor().onDidScrollChange((e=>{if(this._isSettingScrollTop)return;if(!e.scrollTopChanged||!this._data)return;const t=e.scrollTop-this._lastScrollTop;this._data.deltaScrollVertical(t)}))),this._register((0,Br.EH)((e=>{const t=this.isFocused.read(e);this._elements.root.classList.toggle("focused",t)}))),this._container.appendChild(this._elements.root),this._outerEditorHeight=this._headerHeight,this._register(this._instantiationService.createInstance(qr.r,this._elements.actions,Wi.eH.MultiDiffEditorFileToolbar,{actionRunner:this._register(new Gr.D((()=>{var e;return null===(e=this._viewModel.get())||void 0===e?void 0:e.modifiedUri}))),menuOptions:{shouldForwardArgs:!0},toolbarOptions:{primaryGroup:e=>e.startsWith("navigation")},actionViewItemProvider:(e,t)=>(0,Vi.Id)(n,e,t)}))}setScrollLeft(e){this._modifiedContentWidth.get()-this._modifiedWidth.get()>this._originalContentWidth.get()-this._originalWidth.get()?this.editor.getModifiedEditor().setScrollLeft(e):this.editor.getOriginalEditor().setScrollLeft(e)}setData(e){function t(e){return{...e,scrollBeyondLastLine:!1,hideUnchangedRegions:{enabled:!0},scrollbar:{vertical:"hidden",horizontal:"hidden",handleMouseWheel:!1,useShadows:!1},renderOverviewRuler:!1,fixedOverflowWidgets:!0,overviewRulerBorder:!1}}this._data=e;const i=e.viewModel.entry.value;i.onOptionsDidChange&&this._dataStore.add(i.onOptionsDidChange((()=>{var e;this.editor.updateOptions(t(null!==(e=i.options)&&void 0!==e?e:{}))}))),(0,Wr.Bl)((n=>{var o,s,r,a;null===(o=this._resourceLabel)||void 0===o||o.setUri(null!==(s=e.viewModel.modifiedUri)&&void 0!==s?s:e.viewModel.originalUri,{strikethrough:void 0===e.viewModel.modifiedUri});let l=!1,h=!1,d=!1,c="";e.viewModel.modifiedUri&&e.viewModel.originalUri&&e.viewModel.modifiedUri.path!==e.viewModel.originalUri.path?(c="R",l=!0):e.viewModel.modifiedUri?e.viewModel.originalUri||(c="A",d=!0):(c="D",h=!0),this._elements.status.classList.toggle("renamed",l),this._elements.status.classList.toggle("deleted",h),this._elements.status.classList.toggle("added",d),this._elements.status.innerText=c,null===(r=this._resourceLabel2)||void 0===r||r.setUri(l?e.viewModel.originalUri:void 0,{strikethrough:!0}),this._dataStore.clear(),this._viewModel.set(e.viewModel,n),this.editor.setModel(e.viewModel.diffEditorViewModel,n),this.editor.updateOptions(t(null!==(a=i.options)&&void 0!==a?a:{}))}))}render(e,t,i,n){this._elements.root.style.visibility="visible",this._elements.root.style.top="".concat(e.start,"px"),this._elements.root.style.height="".concat(e.length,"px"),this._elements.root.style.width="".concat(t,"px"),this._elements.root.style.position="absolute";const o=e.length-this._headerHeight,s=Math.max(0,Math.min(n.start-e.start,o));this._elements.header.style.transform="translateY(".concat(s,"px)"),(0,Wr.Bl)((i=>{this.editor.layout({width:t-16-2,height:e.length-this._outerEditorHeight})}));try{this._isSettingScrollTop=!0,this._lastScrollTop=i,this.editor.getOriginalEditor().setScrollTop(i)}finally{this._isSettingScrollTop=!1}this._elements.header.classList.toggle("shadow",s>0||i>0),this._elements.header.classList.toggle("collapsed",s===o)}hide(){this._elements.root.style.top="-100000px",this._elements.root.style.visibility="hidden"}};function Jr(e){return(0,Br.rD)((t=>{const i=new r.SL;return i.add(e.onDidFocusEditorWidget((()=>t(!0)))),i.add(e.onDidBlurEditorWidget((()=>t(!1)))),i}),(()=>e.hasTextFocus()))}$r=Qr([Zr(3,ve.TG)],$r);class Xr{constructor(e){this._create=e,this._unused=new Set,this._used=new Set,this._itemData=new Map}getUnusedObj(e){var t;let i;if(0===this._unused.size)i=this._create(e),this._itemData.set(i,e);else{const n=[...this._unused.values()];i=null!==(t=n.find((t=>this._itemData.get(t).getId()===e.getId())))&&void 0!==t?t:n[0],this._unused.delete(i),this._itemData.set(i,e),i.setData(e)}return this._used.add(i),{object:i,dispose:()=>{this._used.delete(i),this._unused.size>5?i.dispose():this._unused.add(i)}}}dispose(){for(const e of this._used)e.dispose();for(const e of this._unused)e.dispose();this._used.clear(),this._unused.clear()}}var ea=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ta=function(e,t){return function(i,n){t(i,n,e)}};let ia=class extends r.JT{constructor(e,t,i,n,o,s){super(),this._element=e,this._dimension=t,this._viewModel=i,this._workbenchUIElementFactory=n,this._parentContextKeyService=o,this._parentInstantiationService=s,this._elements=(0,oe.h)("div.monaco-component.multiDiffEditor",[(0,oe.h)("div@content",{style:{overflow:"hidden"}}),(0,oe.h)("div.monaco-editor@overflowWidgetsDomNode",{})]),this._sizeObserver=this._register(new zr.DU(this._element,void 0)),this._objectPool=this._register(new Xr((e=>{const t=this._instantiationService.createInstance($r,this._elements.content,this._elements.overflowWidgetsDomNode,this._workbenchUIElementFactory);return t.setData(e),t}))),this._scrollable=this._register(new Hr.Rm({forceIntegerValues:!1,scheduleAtNextAnimationFrame:e=>(0,oe.jL)((0,oe.Jj)(this._element),e),smoothScrollDuration:100})),this._scrollableElement=this._register(new Gi.$Z(this._elements.root,{vertical:1,horizontal:1,useShadows:!1},this._scrollable)),this.scrollTop=(0,Br.rD)(this._scrollableElement.onScroll,(()=>this._scrollableElement.getScrollPosition().scrollTop)),this.scrollLeft=(0,Br.rD)(this._scrollableElement.onScroll,(()=>this._scrollableElement.getScrollPosition().scrollLeft)),this._viewItems=(0,Br.Be)(this,((e,t)=>{const i=this._viewModel.read(e);if(!i)return[];return i.items.read(e).map((e=>{var i;const n=t.add(new na(e,this._objectPool,this.scrollLeft,(e=>{this._scrollableElement.setScrollPosition({scrollTop:this._scrollableElement.getScrollPosition().scrollTop+e})}))),o=null===(i=this._lastDocStates)||void 0===i?void 0:i[n.getKey()];return o&&(0,Wr.PS)((e=>{n.setViewState(o,e)})),n}))})),this._spaceBetweenPx=0,this._totalHeight=this._viewItems.map(this,((e,t)=>e.reduce(((e,i)=>e+i.contentHeight.read(t)+this._spaceBetweenPx),0))),this.activeDiffItem=(0,Br.nK)(this,(e=>this._viewItems.read(e).find((t=>{var i;return null===(i=t.template.read(e))||void 0===i?void 0:i.isFocused.read(e)})))),this.lastActiveDiffItem=(0,Br.bx)(((e,t)=>{var i;return null!==(i=this.activeDiffItem.read(e))&&void 0!==i?i:t})),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._element)),this._instantiationService=this._parentInstantiationService.createChild(new Zs.y([ue.i6,this._contextKeyService])),this._lastDocStates={},this._contextKeyService.createKey(jr.u.inMultiDiffEditor.key,!0),this._register((0,Br.gp)(((e,t)=>{const i=this._viewModel.read(e);if(i&&i.contextKeys)for(const[n,o]of Object.entries(i.contextKeys)){const e=this._contextKeyService.createKey(n,void 0);e.set(o),t.add((0,r.OF)((()=>e.reset())))}})));const a=this._parentContextKeyService.createKey(jr.u.multiDiffEditorAllCollapsed.key,!1);this._register((0,Br.EH)((e=>{const t=this._viewModel.read(e);if(t){const i=t.items.read(e).every((t=>t.collapsed.read(e)));a.set(i)}}))),this._register((0,Br.EH)((e=>{const t=this.lastActiveDiffItem.read(e);(0,Wr.PS)((i=>{var n;null===(n=this._viewModel.read(e))||void 0===n||n.activeDiffItem.set(null===t||void 0===t?void 0:t.viewModel,i)}))}))),this._register((0,Br.EH)((e=>{const t=this._dimension.read(e);this._sizeObserver.observe(t)}))),this._elements.content.style.position="relative",this._register((0,Br.EH)((e=>{const t=this._sizeObserver.height.read(e);this._elements.root.style.height="".concat(t,"px");const i=this._totalHeight.read(e);this._elements.content.style.height="".concat(i,"px");const n=this._sizeObserver.width.read(e);let o=n;const s=this._viewItems.read(e),r=(0,Vr.dI)(s,(t=>t.maxScroll.read(e).maxScroll));if(r){o=n+r.maxScroll.read(e).maxScroll}this._scrollableElement.setScrollDimensions({width:n,height:t,scrollHeight:i,scrollWidth:o})}))),e.replaceChildren(this._scrollableElement.getDomNode()),this._register((0,r.OF)((()=>{e.replaceChildren()}))),this._register(this._register((0,Br.EH)((e=>{(0,Wr.Bl)((t=>{this.render(e)}))}))))}render(e){const t=this.scrollTop.read(e);let i=0,n=0,o=0;const s=this._sizeObserver.height.read(e),r=Kr.q.ofStartAndLength(t,s),a=this._sizeObserver.width.read(e);for(const l of this._viewItems.read(e)){const h=l.contentHeight.read(e),d=Math.min(h,s),c=Kr.q.ofStartAndLength(n,d),u=Kr.q.ofStartAndLength(o,h);if(u.isBefore(r))i-=h-d,l.hide();else if(u.isAfter(r))l.hide();else{const e=Math.max(0,Math.min(r.start-u.start,h-d));i-=e;const n=Kr.q.ofStartAndLength(t+i,s);l.render(c,e,a,n)}n+=d+this._spaceBetweenPx,o+=h+this._spaceBetweenPx}this._elements.content.style.transform="translateY(".concat(-(t+i),"px)")}};ia=ea([ta(4,ue.i6),ta(5,ve.TG)],ia);class na extends r.JT{constructor(e,t,i,n){super(),this.viewModel=e,this._objectPool=t,this._scrollLeft=i,this._deltaScrollVertical=n,this._templateRef=this._register((0,Wr.DN)(this,void 0)),this.contentHeight=(0,Br.nK)(this,(e=>{var t,i,n;return null!==(n=null===(i=null===(t=this._templateRef.read(e))||void 0===t?void 0:t.object.contentHeight)||void 0===i?void 0:i.read(e))&&void 0!==n?n:this.viewModel.lastTemplateData.read(e).contentHeight})),this.maxScroll=(0,Br.nK)(this,(e=>{var t,i;return null!==(i=null===(t=this._templateRef.read(e))||void 0===t?void 0:t.object.maxScroll.read(e))&&void 0!==i?i:{maxScroll:0,scrollWidth:0}})),this.template=(0,Br.nK)(this,(e=>{var t;return null===(t=this._templateRef.read(e))||void 0===t?void 0:t.object})),this._isHidden=(0,Br.uh)(this,!1),this._register((0,Br.EH)((e=>{var t;const i=this._scrollLeft.read(e);null===(t=this._templateRef.read(e))||void 0===t||t.object.setScrollLeft(i)}))),this._register((0,Br.EH)((e=>{const t=this._templateRef.read(e);if(!t)return;if(!this._isHidden.read(e))return;t.object.isFocused.read(e)||this._clear()})))}dispose(){this._clear(),super.dispose()}toString(){var e;return"VirtualViewItem(".concat(null===(e=this.viewModel.entry.value.modified)||void 0===e?void 0:e.uri.toString(),")")}getKey(){return this.viewModel.getKey()}setViewState(e,t){var i;this.viewModel.collapsed.set(e.collapsed,t),this._updateTemplateData(t);const n=this.viewModel.lastTemplateData.get(),o=null===(i=e.selections)||void 0===i?void 0:i.map(Ur.Y.liftSelection);this.viewModel.lastTemplateData.set({...n,selections:o},t);const s=this._templateRef.get();s&&o&&s.object.editor.setSelections(o)}_updateTemplateData(e){var t;const i=this._templateRef.get();i&&this.viewModel.lastTemplateData.set({contentHeight:i.object.contentHeight.get(),selections:null!==(t=i.object.editor.getSelections())&&void 0!==t?t:void 0},e)}_clear(){const e=this._templateRef.get();e&&(0,Wr.PS)((t=>{this._updateTemplateData(t),e.object.hide(),this._templateRef.set(void 0,t)}))}hide(){this._isHidden.set(!0,void 0)}render(e,t,i,n){this._isHidden.set(!1,void 0);let o=this._templateRef.get();if(!o){o=this._objectPool.getUnusedObj(new Yr(this.viewModel,this._deltaScrollVertical)),this._templateRef.set(o,void 0);const e=this.viewModel.lastTemplateData.get().selections;e&&o.object.editor.setSelections(e)}o.object.render(e,i,t,n)}}(0,it.P6G)("multiDiffEditor.headerBackground",{dark:"#262626",light:"tab.inactiveBackground",hcDark:"tab.inactiveBackground",hcLight:"tab.inactiveBackground"},(0,De.NC)("multiDiffEditor.headerBackground","The background color of the diff editor's header")),(0,it.P6G)("multiDiffEditor.background",{dark:"editorBackground",light:"editorBackground",hcDark:"editorBackground",hcLight:"editorBackground"},(0,De.NC)("multiDiffEditor.background","The background color of the multi file diff editor")),(0,it.P6G)("multiDiffEditor.border",{dark:"sideBarSectionHeader.border",light:"#cccccc",hcDark:"sideBarSectionHeader.border",hcLight:"#cccccc"},(0,De.NC)("multiDiffEditor.border","The border color of the multi file diff editor"));var oa=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},sa=function(e,t){return function(i,n){t(i,n,e)}};let ra=class extends r.JT{constructor(e,t,i){super(),this._element=e,this._workbenchUIElementFactory=t,this._instantiationService=i,this._dimension=(0,Br.uh)(this,void 0),this._viewModel=(0,Br.uh)(this,void 0),this._widgetImpl=(0,Br.Be)(this,((e,t)=>((0,zr.NW)($r,e),t.add(this._instantiationService.createInstance((0,zr.NW)(ia,e),this._element,this._dimension,this._viewModel,this._workbenchUIElementFactory))))),this._register((0,Br.jx)(this._widgetImpl))}};function aa(e,t,i){return Dr.initialize(i||{}).createInstance(Rr,e,t)}function la(e){return Dr.get(c.$).onCodeEditorAdd((t=>{e(t)}))}function ha(e){return Dr.get(c.$).onDiffEditorAdd((t=>{e(t)}))}function da(){return Dr.get(c.$).listCodeEditors()}function ca(){return Dr.get(c.$).listDiffEditors()}function ua(e,t,i){return Dr.initialize(i||{}).createInstance(Or,e,t)}function ga(e,t){const i=Dr.initialize(t||{});return new ra(e,{},i)}function ma(e){if("string"!==typeof e.id||"function"!==typeof e.run)throw new Error("Invalid command descriptor, `id` and `run` are required properties!");return Kt.P.registerCommand(e.id,e.run)}function fa(e){if("string"!==typeof e.id||"string"!==typeof e.label||"function"!==typeof e.run)throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");const t=ue.Ao.deserialize(e.precondition),i=new r.SL;if(i.add(Kt.P.registerCommand(e.id,(function(i){for(var n=arguments.length,o=new Array(n>1?n-1:0),s=1;sPromise.resolve(e.run(i,...n))))}))),e.contextMenuGroupId){const n={command:{id:e.id,title:e.label},when:t,group:e.contextMenuGroupId,order:e.contextMenuOrder||0};i.add(Wi.BH.appendMenuItem(Wi.eH.EditorContext,n))}if(Array.isArray(e.keybindings)){const n=Dr.get(st.d);if(n instanceof fr){const o=ue.Ao.and(t,ue.Ao.deserialize(e.keybindingContext));i.add(n.addDynamicKeybindings(e.keybindings.map((t=>({keybinding:t,command:e.id,when:o})))))}else console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService")}return i}function pa(e){return _a([e])}function _a(e){const t=Dr.get(st.d);return t instanceof fr?t.addDynamicKeybindings(e.map((e=>({keybinding:e.keybinding,command:e.command,commandArgs:e.commandArgs,when:ue.Ao.deserialize(e.when)})))):(console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),r.JT.None)}function va(e,t,i){const n=Dr.get(b.O),o=n.getLanguageIdByMimeType(t)||t;return Pr(Dr.get(L.q),n,e,o,i)}function ba(e,t){const i=Dr.get(b.O),n=i.getLanguageIdByMimeType(t)||t||w.bd;e.setLanguage(i.createById(n))}function Ca(e,t,i){if(e){Dr.get(Sn.lT).changeOne(t,e.uri,i)}}function wa(e){Dr.get(Sn.lT).changeAll(e,[])}function ya(e){return Dr.get(Sn.lT).read(e)}function Sa(e){return Dr.get(Sn.lT).onMarkerChanged(e)}function La(e){return Dr.get(L.q).getModel(e)}function ka(){return Dr.get(L.q).getModels()}function Da(e){return Dr.get(L.q).onModelAdded(e)}function Na(e){return Dr.get(L.q).onModelRemoved(e)}function xa(e){return Dr.get(L.q).onModelLanguageChanged((t=>{e({model:t.model,oldLanguage:t.oldLanguageId})}))}function Ea(e){return function(e,t,i){return new m(e,t,i)}(Dr.get(L.q),Dr.get(C.c_),e)}function Ia(e,t){const i=Dr.get(b.O),n=Dr.get(us.Z);return X.colorizeElement(n,i,e,t).then((()=>{n.registerEditorContainer(e)}))}function Ta(e,t,i){const n=Dr.get(b.O);return Dr.get(us.Z).registerEditorContainer(s.E.document.body),X.colorize(n,e,t,i)}function Ma(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4;return Dr.get(us.Z).registerEditorContainer(s.E.document.body),X.colorizeModelLine(e,t,i)}function Aa(e,t){v.RW.getOrCreate(t);const i=function(e){const t=v.RW.get(e);return t||{getInitialState:()=>y.TJ,tokenize:(t,i,n)=>(0,y.Ri)(e,n)}}(t),n=(0,a.uq)(e),o=[];let s=i.getInitialState();for(let r=0,a=n.length;r("string"===typeof t&&(t=l.o.parse(t)),e.open(t))})}function za(e){return Dr.get(c.$).registerCodeEditorOpenHandler((async(t,i,n)=>{var o;if(!i)return null;const s=null===(o=t.options)||void 0===o?void 0:o.selection;let r;return s&&"number"===typeof s.endLineNumber&&"number"===typeof s.endColumn?r=s:s&&(r={lineNumber:s.startLineNumber,column:s.startColumn}),await e.openCodeEditor(i,t.resource,r)?i:null}))}ra=oa([sa(2,ve.TG)],ra);var Va=i(89652);function Wa(e,t){return"boolean"===typeof e?e:t}function Ha(e,t){return"string"===typeof e?e:t}function Ka(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];t&&(e=e.map((function(e){return e.toLowerCase()})));const i=function(e){const t={};for(const i of e)t[i]=!0;return t}(e);return t?function(e){return void 0!==i[e.toLowerCase()]&&i.hasOwnProperty(e.toLowerCase())}:function(e){return void 0!==i[e]&&i.hasOwnProperty(e)}}function Ua(e,t,i){t=t.replace(/@@/g,"\x01");let n,o=0;do{n=!1,t=t.replace(/@(\w+)/g,(function(i,o){n=!0;let s="";if("string"===typeof e[o])s=e[o];else{if(!(e[o]&&e[o]instanceof RegExp))throw void 0===e[o]?P(e,"language definition does not contain attribute '"+o+"', used at: "+t):P(e,"attribute reference '"+o+"' must be a string, used at: "+t);s=e[o].source}return A(s)?"":"(?:"+s+")"})),o++}while(n&&o<5);t=t.replace(/\x01/g,"@");const s=(e.ignoreCase?"i":"")+(e.unicode?"u":"");if(i){if(t.match(/\$[sS](\d\d?)/g)){let i=null,n=null;return o=>(n&&i===o||(i=o,n=new RegExp(function(e,t,i){let n=null;return t.replace(/\$[sS](\d\d?)/g,(function(t,o){return null===n&&(n=i.split("."),n.unshift(i)),!A(o)&&o=100){n-=100;const e=i.split(".");if(e.unshift(i),n=0&&(n.tokenSubst=!0),"string"===typeof i.bracket)if("@open"===i.bracket)n.bracket=1;else{if("@close"!==i.bracket)throw P(e,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+t);n.bracket=-1}if(i.next){if("string"!==typeof i.next)throw P(e,"the next state must be a string value in rule: "+t);{let o=i.next;if(!/^(@pop|@push|@popall)$/.test(o)&&("@"===o[0]&&(o=o.substr(1)),o.indexOf("$")<0&&!function(e,t){let i=t;for(;i&&i.length>0;){if(e.stateNames[i])return!0;const t=i.lastIndexOf(".");i=t<0?null:i.substr(0,t)}return!1}(e,F(e,o,"",[],""))))throw P(e,"the next state '"+i.next+"' is not defined in rule: "+t);n.next=o}}return"number"===typeof i.goBack&&(n.goBack=i.goBack),"string"===typeof i.switchTo&&(n.switchTo=i.switchTo),"string"===typeof i.log&&(n.log=i.log),"string"===typeof i.nextEmbedded&&(n.nextEmbedded=i.nextEmbedded,e.usesEmbedded=!0),n}}if(Array.isArray(i)){const n=[];for(let o=0,s=i.length;o0&&"^"===i[0],this.name=this.name+": "+i,this.regex=Ua(e,"^(?:"+(this.matchOnlyAtLineStart?i.substr(1):i)+")",!0)}setAction(e,t){this.action=qa(e,this.name,t)}resolveRegex(e){return this.regex instanceof RegExp?this.regex:this.regex(e)}}function Qa(e,t){if(!t||"object"!==typeof t)throw new Error("Monarch: expecting a language definition object");const i={};i.languageId=e,i.includeLF=Wa(t.includeLF,!1),i.noThrow=!1,i.maxStack=100,i.start="string"===typeof t.start?t.start:null,i.ignoreCase=Wa(t.ignoreCase,!1),i.unicode=Wa(t.unicode,!1),i.tokenPostfix=Ha(t.tokenPostfix,"."+i.languageId),i.defaultToken=Ha(t.defaultToken,"source"),i.usesEmbedded=!1;const n=t;function o(e,s,r){for(const a of r){let r=a.include;if(r){if("string"!==typeof r)throw P(i,"an 'include' attribute must be a string at: "+e);if("@"===r[0]&&(r=r.substr(1)),!t.tokenizer[r])throw P(i,"include target '"+r+"' is not defined at: "+e);o(e+"."+r,s,t.tokenizer[r])}else{const t=new Ga(e);if(Array.isArray(a)&&a.length>=1&&a.length<=3)if(t.setRegex(n,a[0]),a.length>=3)if("string"===typeof a[1])t.setAction(n,{token:a[1],next:a[2]});else{if("object"!==typeof a[1])throw P(i,"a next state as the last element of a rule can only be given if the action is either an object or a string, at: "+e);{const e=a[1];e.next=a[2],t.setAction(n,e)}}else t.setAction(n,a[1]);else{if(!a.regex)throw P(i,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+e);a.name&&"string"===typeof a.name&&(t.name=a.name),a.matchOnlyAtStart&&(t.matchOnlyAtLineStart=Wa(a.matchOnlyAtLineStart,!1)),t.setRegex(n,a.regex),t.setAction(n,a.action)}s.push(t)}}}if(n.languageId=e,n.includeLF=i.includeLF,n.ignoreCase=i.ignoreCase,n.unicode=i.unicode,n.noThrow=i.noThrow,n.usesEmbedded=i.usesEmbedded,n.stateNames=t.tokenizer,n.defaultToken=i.defaultToken,!t.tokenizer||"object"!==typeof t.tokenizer)throw P(i,"a language definition must define the 'tokenizer' attribute as an object");i.tokenizer=[];for(const r in t.tokenizer)if(t.tokenizer.hasOwnProperty(r)){i.start||(i.start=r);const e=t.tokenizer[r];i.tokenizer[r]=new Array,o("tokenizer."+r,i.tokenizer[r],e)}if(i.usesEmbedded=n.usesEmbedded,t.brackets){if(!Array.isArray(t.brackets))throw P(i,"the 'brackets' attribute must be defined as an array")}else t.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];const s=[];for(const r of t.brackets){let e=r;if(e&&Array.isArray(e)&&3===e.length&&(e={token:e[2],open:e[0],close:e[1]}),e.open===e.close)throw P(i,"open and close brackets in a 'brackets' attribute must be different: "+e.open+"\n hint: use the 'bracket' attribute if matching on equal brackets is required.");if("string"!==typeof e.open||"string"!==typeof e.token||"string"!==typeof e.close)throw P(i,"every element in the 'brackets' array must be a '{open,close,token}' object or array");s.push({token:e.token+i.tokenPostfix,open:R(i,e.open),close:R(i,e.close)})}return i.brackets=s,i.noThrow=!0,i}function Za(e){w.dQ.registerLanguage(e)}function Ya(){let e=[];return e=e.concat(w.dQ.getLanguages()),e}function $a(e){return Dr.get(b.O).languageIdCodec.encodeLanguageId(e)}function Ja(e,t){return Dr.withServices((()=>{const i=Dr.get(b.O).onDidRequestRichLanguageFeatures((n=>{n===e&&(i.dispose(),t())}));return i}))}function Xa(e,t){return Dr.withServices((()=>{const i=Dr.get(b.O).onDidRequestBasicLanguageFeatures((n=>{n===e&&(i.dispose(),t())}));return i}))}function el(e,t){if(!Dr.get(b.O).isRegisteredLanguageId(e))throw new Error("Cannot set configuration for unknown language ".concat(e));return Dr.get(C.c_).register(e,t,100)}class tl{constructor(e,t){this._languageId=e,this._actual=t}dispose(){}getInitialState(){return this._actual.getInitialState()}tokenize(e,t,i){if("function"===typeof this._actual.tokenize)return il.adaptTokenize(this._languageId,this._actual,e,i);throw new Error("Not supported!")}tokenizeEncoded(e,t,i){const n=this._actual.tokenizeEncoded(e,i);return new v.DI(n.tokens,n.endState)}}class il{constructor(e,t,i,n){this._languageId=e,this._actual=t,this._languageService=i,this._standaloneThemeService=n}dispose(){}getInitialState(){return this._actual.getInitialState()}static _toClassicTokens(e,t){const i=[];let n=0;for(let o=0,s=e.length;o0&&o[s-1]===a)continue;let h=e.startIndex;0===l?h=0:h{const i=await Promise.resolve(t.create());return i?"function"===typeof i.getInitialState?sl(e,i):new Y(Dr.get(b.O),Dr.get(us.Z),e,Qa(e,i),Dr.get(V.Ui)):null}));return v.RW.registerFactory(e,i)}function al(e,t){if(!Dr.get(b.O).isRegisteredLanguageId(e))throw new Error("Cannot set tokens provider for unknown language ".concat(e));return nl(t)?rl(e,{create:()=>t}):v.RW.register(e,sl(e,t))}function ll(e,t){return nl(t)?rl(e,{create:()=>t}):v.RW.register(e,(t=>new Y(Dr.get(b.O),Dr.get(us.Z),e,Qa(e,t),Dr.get(V.Ui)))(t))}function hl(e,t){return Dr.get(tt.p).referenceProvider.register(e,t)}function dl(e,t){return Dr.get(tt.p).renameProvider.register(e,t)}function cl(e,t){return Dr.get(tt.p).newSymbolNamesProvider.register(e,t)}function ul(e,t){return Dr.get(tt.p).signatureHelpProvider.register(e,t)}function gl(e,t){return Dr.get(tt.p).hoverProvider.register(e,{provideHover:(e,i,n)=>{const o=e.getWordAtPosition(i);return Promise.resolve(t.provideHover(e,i,n)).then((e=>{if(e)return!e.range&&o&&(e.range=new Vt.e(i.lineNumber,o.startColumn,i.lineNumber,o.endColumn)),e.range||(e.range=new Vt.e(i.lineNumber,i.column,i.lineNumber,i.column)),e}))}})}function ml(e,t){return Dr.get(tt.p).documentSymbolProvider.register(e,t)}function fl(e,t){return Dr.get(tt.p).documentHighlightProvider.register(e,t)}function pl(e,t){return Dr.get(tt.p).linkedEditingRangeProvider.register(e,t)}function _l(e,t){return Dr.get(tt.p).definitionProvider.register(e,t)}function vl(e,t){return Dr.get(tt.p).implementationProvider.register(e,t)}function bl(e,t){return Dr.get(tt.p).typeDefinitionProvider.register(e,t)}function Cl(e,t){return Dr.get(tt.p).codeLensProvider.register(e,t)}function wl(e,t,i){return Dr.get(tt.p).codeActionProvider.register(e,{providedCodeActionKinds:null===i||void 0===i?void 0:i.providedCodeActionKinds,documentation:null===i||void 0===i?void 0:i.documentation,provideCodeActions:(e,i,n,o)=>{const s=Dr.get(Sn.lT).read({resource:e.uri}).filter((e=>Vt.e.areIntersectingOrTouching(e,i)));return t.provideCodeActions(e,i,{markers:s,only:n.only,trigger:n.trigger},o)},resolveCodeAction:t.resolveCodeAction})}function yl(e,t){return Dr.get(tt.p).documentFormattingEditProvider.register(e,t)}function Sl(e,t){return Dr.get(tt.p).documentRangeFormattingEditProvider.register(e,t)}function Ll(e,t){return Dr.get(tt.p).onTypeFormattingEditProvider.register(e,t)}function kl(e,t){return Dr.get(tt.p).linkProvider.register(e,t)}function Dl(e,t){return Dr.get(tt.p).completionProvider.register(e,t)}function Nl(e,t){return Dr.get(tt.p).colorProvider.register(e,t)}function xl(e,t){return Dr.get(tt.p).foldingRangeProvider.register(e,t)}function El(e,t){return Dr.get(tt.p).declarationProvider.register(e,t)}function Il(e,t){return Dr.get(tt.p).selectionRangeProvider.register(e,t)}function Tl(e,t){return Dr.get(tt.p).documentSemanticTokensProvider.register(e,t)}function Ml(e,t){return Dr.get(tt.p).documentRangeSemanticTokensProvider.register(e,t)}function Al(e,t){return Dr.get(tt.p).inlineCompletionsProvider.register(e,t)}function Rl(e,t){return Dr.get(tt.p).inlineEditProvider.register(e,t)}function Ol(e,t){return Dr.get(tt.p).inlayHintsProvider.register(e,t)}var Pl=i(44492);n.BH.wrappingIndent.defaultValue=0,n.BH.glyphMargin.defaultValue=!1,n.BH.autoIndent.defaultValue=3,n.BH.overviewRulerLanes.defaultValue=2,Pl.xC.setFormatterSelector(((e,t,i)=>Promise.resolve(e[0])));const Fl=(0,o.O)();Fl.editor={create:aa,getEditors:da,getDiffEditors:ca,onDidCreateEditor:la,onDidCreateDiffEditor:ha,createDiffEditor:ua,addCommand:ma,addEditorAction:fa,addKeybindingRule:pa,addKeybindingRules:_a,createModel:va,setModelLanguage:ba,setModelMarkers:Ca,getModelMarkers:ya,removeAllMarkers:wa,onDidChangeMarkers:Sa,getModels:ka,getModel:La,onDidCreateModel:Da,onWillDisposeModel:Na,onDidChangeModelLanguage:xa,createWebWorker:Ea,colorizeElement:Ia,colorize:Ta,colorizeModelLine:Ma,tokenize:Aa,defineTheme:Ra,setTheme:Oa,remeasureFonts:Pa,registerCommand:Fa,registerLinkOpener:Ba,registerEditorOpener:za,AccessibilitySupport:k.ao,ContentWidgetPositionPreference:k.r3,CursorChangeReason:k.Vi,DefaultEndOfLine:k._x,EditorAutoIndentStrategy:k.rf,EditorOption:k.wT,EndOfLinePreference:k.gm,EndOfLineSequence:k.jl,MinimapPosition:k.F5,MinimapSectionHeaderStyle:k.WG,MouseTargetType:k.MG,OverlayWidgetPositionPreference:k.E$,OverviewRulerLane:k.sh,GlyphMarginLane:k.U,RenderLineNumbersType:k.Lu,RenderMinimap:k.vQ,ScrollbarVisibility:k.g_,ScrollType:k.g4,TextEditorCursorBlinkingStyle:k.In,TextEditorCursorStyle:k.d2,TrackedRangeStickiness:k.OI,WrappingIndent:k.up,InjectedTextCursorStops:k.RM,PositionAffinity:k.py,ShowLightbulbIconMode:k.$r,ConfigurationChangedEvent:n.Bb,BareFontInfo:p.E4,FontInfo:p.pR,TextModelResolvedOptions:S.dJ,FindMatch:S.tk,ApplyUpdateResult:n.rk,EditorZoom:f.C,createMultiFileDiffEditor:ga,EditorType:_.g,EditorOptions:n.BH},Fl.languages={register:Za,getLanguages:Ya,onLanguage:Ja,onLanguageEncountered:Xa,getEncodedLanguageId:$a,setLanguageConfiguration:el,setColorMap:ol,registerTokensProviderFactory:rl,setTokensProvider:al,setMonarchTokensProvider:ll,registerReferenceProvider:hl,registerRenameProvider:dl,registerNewSymbolNameProvider:cl,registerCompletionItemProvider:Dl,registerSignatureHelpProvider:ul,registerHoverProvider:gl,registerDocumentSymbolProvider:ml,registerDocumentHighlightProvider:fl,registerLinkedEditingRangeProvider:pl,registerDefinitionProvider:_l,registerImplementationProvider:vl,registerTypeDefinitionProvider:bl,registerCodeLensProvider:Cl,registerCodeActionProvider:wl,registerDocumentFormattingEditProvider:yl,registerDocumentRangeFormattingEditProvider:Sl,registerOnTypeFormattingEditProvider:Ll,registerLinkProvider:kl,registerColorProvider:Nl,registerFoldingRangeProvider:xl,registerDeclarationProvider:El,registerSelectionRangeProvider:Il,registerDocumentSemanticTokensProvider:Tl,registerDocumentRangeSemanticTokensProvider:Ml,registerInlineCompletionsProvider:Al,registerInlineEditProvider:Rl,registerInlayHintsProvider:Ol,DocumentHighlightKind:k.MY,CompletionItemKind:k.cm,CompletionItemTag:k.we,CompletionItemInsertTextRule:k.a7,SymbolKind:k.cR,SymbolTag:k.r4,IndentAction:k.wU,CompletionTriggerKind:k.Ij,SignatureHelpTriggerKind:k.WW,InlayHintKind:k.gl,InlineCompletionTriggerKind:k.bw,InlineEditTriggerKind:k.rn,CodeActionTriggerType:k.np,NewSymbolNameTag:k.w,PartialAcceptTriggerKind:k.NA,FoldingRangeKind:v.AD,SelectedSuggestionInfo:v.ln};const Bl=Fl.CancellationTokenSource,zl=Fl.Emitter,Vl=Fl.KeyCode,Wl=Fl.KeyMod,Hl=Fl.Position,Kl=Fl.Range,Ul=Fl.Selection,jl=Fl.SelectionDirection,ql=Fl.MarkerSeverity,Gl=Fl.MarkerTag,Ql=Fl.Uri,Zl=Fl.Token,Yl=Fl.editor,$l=Fl.languages,Jl=globalThis.MonacoEnvironment;((null===Jl||void 0===Jl?void 0:Jl.globalAPI)||"function"===typeof define&&i.amdO)&&(globalThis.monaco=Fl),"undefined"!==typeof globalThis.require&&"function"===typeof globalThis.require.config&&globalThis.require.config({ignoreDuplicateModules:["vscode-languageserver-types","vscode-languageserver-types/main","vscode-languageserver-textdocument","vscode-languageserver-textdocument/main","vscode-nls","vscode-nls/vscode-nls","jsonc-parser","jsonc-parser/main","vscode-uri","vscode-uri/index","vs/basic-languages/typescript/typescript"]})},16049:(e,t,i)=>{i.d(t,{kR:()=>M,MU:()=>A,nI:()=>V,rW:()=>T,TG:()=>I});var n=i(85714),o=i(42606),s=i(89652),r=i(24219),a=i(761),l=i(55562);class h{constructor(e,t,i,n,o){this._parsedThemeRuleBrand=void 0,this.token=e,this.index=t,this.fontStyle=i,this.foreground=n,this.background=o}}const d=/^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/;class c{constructor(){this._lastColorId=0,this._id2color=[],this._color2id=new Map}getId(e){if(null===e)return 0;const t=e.match(d);if(!t)throw new Error("Illegal value for token color: "+e);e=t[1].toUpperCase();let i=this._color2id.get(e);return i||(i=++this._lastColorId,this._color2id.set(e,i),this._id2color[i]=s.Il.fromHex("#"+e),i)}getColorMap(){return this._id2color.slice(0)}}class u{static createFromRawTokenTheme(e,t){return this.createFromParsedTokenTheme(function(e){if(!e||!Array.isArray(e))return[];const t=[];let i=0;for(let n=0,o=e.length;n{const i=function(e,t){return et?1:0}(e.token,t.token);return 0!==i?i:e.index-t.index}));let i=0,n="000000",o="ffffff";for(;e.length>=1&&""===e[0].token;){const t=e.shift();-1!==t.fontStyle&&(i=t.fontStyle),null!==t.foreground&&(n=t.foreground),null!==t.background&&(o=t.background)}const s=new c;for(const d of t)s.getId(d);const r=s.getId(n),a=s.getId(o),l=new m(i,r,a),h=new f(l);for(let d=0,c=e.length;d>>0,this._cache.set(t,i)}return(i|e<<0)>>>0}}const g=/\b(comment|string|regex|regexp)\b/;class m{constructor(e,t,i){this._themeTrieElementRuleBrand=void 0,this._fontStyle=e,this._foreground=t,this._background=i,this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}clone(){return new m(this._fontStyle,this._foreground,this._background)}acceptOverwrite(e,t,i){-1!==e&&(this._fontStyle=e),0!==t&&(this._foreground=t),0!==i&&(this._background=i),this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}}class f{constructor(e){this._themeTrieElementBrand=void 0,this._mainRule=e,this._children=new Map}match(e){if(""===e)return this._mainRule;const t=e.indexOf(".");let i,n;-1===t?(i=e,n=""):(i=e.substring(0,t),n=e.substring(t+1));const o=this._children.get(i);return"undefined"!==typeof o?o.match(n):this._mainRule}insert(e,t,i,n){if(""===e)return void this._mainRule.acceptOverwrite(t,i,n);const o=e.indexOf(".");let s,r;-1===o?(s=e,r=""):(s=e.substring(0,o),r=e.substring(o+1));let a=this._children.get(s);"undefined"===typeof a&&(a=new f(this._mainRule.clone()),this._children.set(s,a)),a.insert(r,t,i,n)}}var p=i(36729),_=i(87701);const v={base:"vs",inherit:!1,rules:[{token:"",foreground:"000000",background:"fffffe"},{token:"invalid",foreground:"cd3131"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"001188"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"delimiter.xml",foreground:"0000FF"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"FF0000"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"FF0000"},{token:"attribute.value",foreground:"0451A5"},{token:"attribute.value.number",foreground:"098658"},{token:"attribute.value.unit",foreground:"098658"},{token:"attribute.value.html",foreground:"0000FF"},{token:"attribute.value.xml",foreground:"0000FF"},{token:"string",foreground:"A31515"},{token:"string.html",foreground:"0000FF"},{token:"string.sql",foreground:"FF0000"},{token:"string.yaml",foreground:"0451A5"},{token:"keyword",foreground:"0000FF"},{token:"keyword.json",foreground:"0451A5"},{token:"keyword.flow",foreground:"AF00DB"},{token:"keyword.flow.scss",foreground:"0000FF"},{token:"operator.scss",foreground:"666666"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"C700C7"}],colors:{[_.cvW]:"#FFFFFE",[_.NOs]:"#000000",[_.ES4]:"#E5EBF1",[p.gS]:"#D3D3D3",[p.qe]:"#939393",[_.Rzx]:"#ADD6FF4D"}},b={base:"vs-dark",inherit:!1,rules:[{token:"",foreground:"D4D4D4",background:"1E1E1E"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"74B0DF"},{token:"variable.predefined",foreground:"4864AA"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"B5CEA8"},{token:"number.hex",foreground:"5BB498"},{token:"regexp",foreground:"B46695"},{token:"annotation",foreground:"cc6666"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"DCDCDC"},{token:"delimiter.html",foreground:"808080"},{token:"delimiter.xml",foreground:"808080"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"A79873"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"DD6A6F"},{token:"metatag.content.html",foreground:"9CDCFE"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key.json",foreground:"9CDCFE"},{token:"string.value.json",foreground:"CE9178"},{token:"attribute.name",foreground:"9CDCFE"},{token:"attribute.value",foreground:"CE9178"},{token:"attribute.value.number.css",foreground:"B5CEA8"},{token:"attribute.value.unit.css",foreground:"B5CEA8"},{token:"attribute.value.hex.css",foreground:"D4D4D4"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"keyword.json",foreground:"CE9178"},{token:"keyword.flow.scss",foreground:"569CD6"},{token:"operator.scss",foreground:"909090"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[_.cvW]:"#1E1E1E",[_.NOs]:"#D4D4D4",[_.ES4]:"#3A3D41",[p.gS]:"#404040",[p.qe]:"#707070",[_.Rzx]:"#ADD6FF26"}},C={base:"hc-black",inherit:!1,rules:[{token:"",foreground:"FFFFFF",background:"000000"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"1AEBFF"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"FFFFFF"},{token:"regexp",foreground:"C0C0C0"},{token:"annotation",foreground:"569CD6"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"FFFF00"},{token:"delimiter.html",foreground:"FFFF00"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta",foreground:"D4D4D4"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"569CD6"},{token:"metatag.content.html",foreground:"1AEBFF"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key",foreground:"9CDCFE"},{token:"string.value",foreground:"CE9178"},{token:"attribute.name",foreground:"569CD6"},{token:"attribute.value",foreground:"3FF23F"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[_.cvW]:"#000000",[_.NOs]:"#FFFFFF",[p.gS]:"#FFFFFF",[p.qe]:"#FFFFFF"}},w={base:"hc-light",inherit:!1,rules:[{token:"",foreground:"292929",background:"FFFFFF"},{token:"invalid",foreground:"B5200D"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"264F70"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"B5200D"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"264F78"},{token:"attribute.value",foreground:"0451A5"},{token:"string",foreground:"A31515"},{token:"string.sql",foreground:"B5200D"},{token:"keyword",foreground:"0000FF"},{token:"keyword.flow",foreground:"AF00DB"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"C700C7"}],colors:{[_.cvW]:"#FFFFFF",[_.NOs]:"#292929",[p.gS]:"#292929",[p.qe]:"#292929"}};var y=i(70311),S=i(17903),L=i(89599),k=i(75826),D=i(62502),N=i(38261);class x{getIcon(e){const t=(0,N.Ks)();let i=e.defaults;for(;D.k.isThemeIcon(i);){const e=t.getIcon(i.id);if(!e)return;i=e.defaults}return i}}var E=i(29880);const I="vs",T="vs-dark",M="hc-black",A="hc-light",R=y.B.as(_.IPX.ColorContribution),O=y.B.as(S.IP.ThemingContribution);class P{constructor(e,t){this.semanticHighlighting=!1,this.themeData=t;const i=t.base;e.length>0?(F(e)?this.id=e:this.id=i+" "+e,this.themeName=e):(this.id=i,this.themeName=i),this.colors=null,this.defaultColors=Object.create(null),this._tokenTheme=null}get base(){return this.themeData.base}notifyBaseUpdated(){this.themeData.inherit&&(this.colors=null,this._tokenTheme=null)}getColors(){if(!this.colors){const e=new Map;for(const t in this.themeData.colors)e.set(t,s.Il.fromHex(this.themeData.colors[t]));if(this.themeData.inherit){const t=B(this.themeData.base);for(const i in t.colors)e.has(i)||e.set(i,s.Il.fromHex(t.colors[i]))}this.colors=e}return this.colors}getColor(e,t){const i=this.getColors().get(e);return i||(!1!==t?this.getDefault(e):void 0)}getDefault(e){let t=this.defaultColors[e];return t||(t=R.resolveDefaultColor(e,this),this.defaultColors[e]=t,t)}defines(e){return this.getColors().has(e)}get type(){switch(this.base){case I:return k.eL.LIGHT;case M:return k.eL.HIGH_CONTRAST_DARK;case A:return k.eL.HIGH_CONTRAST_LIGHT;default:return k.eL.DARK}}get tokenTheme(){if(!this._tokenTheme){let e=[],t=[];if(this.themeData.inherit){const i=B(this.themeData.base);e=i.rules,i.encodedTokensColors&&(t=i.encodedTokensColors)}const i=this.themeData.colors["editor.foreground"],n=this.themeData.colors["editor.background"];if(i||n){const t={token:""};i&&(t.foreground=i),n&&(t.background=n),e.push(t)}e=e.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(t=this.themeData.encodedTokensColors),this._tokenTheme=u.createFromRawTokenTheme(e,t)}return this._tokenTheme}getTokenStyleMetadata(e,t,i){const n=this.tokenTheme._match([e].concat(t).join(".")).metadata,o=l.N.getForeground(n),s=l.N.getFontStyle(n);return{foreground:o,italic:Boolean(1&s),bold:Boolean(2&s),underline:Boolean(4&s),strikethrough:Boolean(8&s)}}}function F(e){return e===I||e===T||e===M||e===A}function B(e){switch(e){case I:return v;case T:return b;case M:return C;case A:return w}}function z(e){const t=B(e);return new P(e,t)}class V extends L.JT{constructor(){super(),this._onColorThemeChange=this._register(new r.Q5),this.onDidColorThemeChange=this._onColorThemeChange.event,this._onProductIconThemeChange=this._register(new r.Q5),this.onDidProductIconThemeChange=this._onProductIconThemeChange.event,this._environment=Object.create(null),this._builtInProductIconTheme=new x,this._autoDetectHighContrast=!0,this._knownThemes=new Map,this._knownThemes.set(I,z(I)),this._knownThemes.set(T,z(T)),this._knownThemes.set(M,z(M)),this._knownThemes.set(A,z(A));const e=this._register(function(e){const t=new L.SL,i=t.add(new r.Q5),o=(0,N.Ks)();return t.add(o.onDidChange((()=>i.fire()))),e&&t.add(e.onDidProductIconThemeChange((()=>i.fire()))),{dispose:()=>t.dispose(),onDidChange:i.event,getCSS(){const t=e?e.getProductIconTheme():new x,i={},s=e=>{const o=t.getIcon(e);if(!o)return;const s=o.font;return s?(i[s.id]=s.definition,".codicon-".concat(e.id,":before { content: '").concat(o.fontCharacter,"'; font-family: ").concat((0,n._h)(s.id),"; }")):".codicon-".concat(e.id,":before { content: '").concat(o.fontCharacter,"'; }")},r=[];for(const e of o.getIcons()){const t=s(e);t&&r.push(t)}for(const e in i){const t=i[e],o=t.weight?"font-weight: ".concat(t.weight,";"):"",s=t.style?"font-style: ".concat(t.style,";"):"",a=t.src.map((e=>"".concat((0,n.wY)(e.location)," format('").concat(e.format,"')"))).join(", ");r.push("@font-face { src: ".concat(a,"; font-family: ").concat((0,n._h)(e),";").concat(o).concat(s," font-display: block; }"))}return r.join("\n")}}}(this));this._codiconCSS=e.getCSS(),this._themeCSS="",this._allCSS="".concat(this._codiconCSS,"\n").concat(this._themeCSS),this._globalStyleElement=null,this._styleElements=[],this._colorMapOverride=null,this.setTheme(I),this._onOSSchemeChanged(),this._register(e.onDidChange((()=>{this._codiconCSS=e.getCSS(),this._updateCSS()}))),(0,o.uB)(E.E,"(forced-colors: active)",(()=>{this._onOSSchemeChanged()}))}registerEditorContainer(e){return n.OO(e)?this._registerShadowDomContainer(e):this._registerRegularEditorContainer()}_registerRegularEditorContainer(){return this._globalStyleElement||(this._globalStyleElement=n.dS(void 0,(e=>{e.className="monaco-colors",e.textContent=this._allCSS})),this._styleElements.push(this._globalStyleElement)),L.JT.None}_registerShadowDomContainer(e){const t=n.dS(e,(e=>{e.className="monaco-colors",e.textContent=this._allCSS}));return this._styleElements.push(t),{dispose:()=>{for(let e=0;e{t.base===e&&t.notifyBaseUpdated()})),this._theme.themeName===e&&this.setTheme(e)}getColorTheme(){return this._theme}setColorMapOverride(e){this._colorMapOverride=e,this._updateThemeOrColorMap()}setTheme(e){let t;t=this._knownThemes.has(e)?this._knownThemes.get(e):this._knownThemes.get(I),this._updateActualTheme(t)}_updateActualTheme(e){e&&this._theme!==e&&(this._theme=e,this._updateThemeOrColorMap())}_onOSSchemeChanged(){if(this._autoDetectHighContrast){const e=E.E.matchMedia("(forced-colors: active)").matches;if(e!==(0,k.c3)(this._theme.type)){let t;t=(0,k._T)(this._theme.type)?e?M:T:e?A:I,this._updateActualTheme(this._knownThemes.get(t))}}}setAutoDetectHighContrast(e){this._autoDetectHighContrast=e,this._onOSSchemeChanged()}_updateThemeOrColorMap(){const e=[],t={},i={addRule:i=>{t[i]||(e.push(i),t[i]=!0)}};O.getThemingParticipants().forEach((e=>e(this._theme,i,this._environment)));const n=[];for(const s of R.getColors()){const e=this._theme.getColor(s.id,!0);e&&n.push("".concat((0,_.QO2)(s.id),": ").concat(e.toString(),";"))}i.addRule(".monaco-editor, .monaco-diff-editor, .monaco-component { ".concat(n.join("\n")," }"));const o=this._colorMapOverride||this._theme.tokenTheme.getColorMap();i.addRule(function(e){const t=[];for(let i=1,n=e.length;ie.textContent=this._allCSS))}getFileIconTheme(){return{hasFileIcons:!1,hasFolderIcons:!1,hidesExplorerArrows:!1}}getProductIconTheme(){return this._builtInProductIconTheme}}},24587:(e,t,i)=>{i.d(t,{Z:()=>n});const n=(0,i(34304).yh)("themeService")},71721:(e,t,i)=>{i.d(t,{NC:()=>s,aj:()=>a,vv:()=>r});let n="undefined"!==typeof document&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;function o(e,t){let i;return i=0===t.length?e:e.replace(/\{(\d+)\}/g,((e,i)=>{const n=i[0],o=t[n];let s=e;return"string"===typeof o?s=o:"number"!==typeof o&&"boolean"!==typeof o&&void 0!==o&&null!==o||(s=String(o)),s})),n&&(i="\uff3b"+i.replace(/[aouei]/g,"$&$&")+"\uff3d"),i}function s(e,t){for(var i=arguments.length,n=new Array(i>2?i-2:0),s=2;s2?i-2:0),s=2;s{i.d(t,{F:()=>o,U:()=>s});var n=i(24920);const o=(0,i(34304).yh)("accessibilityService"),s=new n.uy("accessibilityModeEnabled",!1)},68633:(e,t,i)=>{i.d(t,{IV:()=>s,iP:()=>l});var n=i(34304),o=i(71721);const s=(0,n.yh)("accessibilitySignalService");class r{static register(e){return new r(e.fileName)}constructor(e){this.fileName=e}}r.error=r.register({fileName:"error.mp3"}),r.warning=r.register({fileName:"warning.mp3"}),r.foldedArea=r.register({fileName:"foldedAreas.mp3"}),r.break=r.register({fileName:"break.mp3"}),r.quickFixes=r.register({fileName:"quickFixes.mp3"}),r.taskCompleted=r.register({fileName:"taskCompleted.mp3"}),r.taskFailed=r.register({fileName:"taskFailed.mp3"}),r.terminalBell=r.register({fileName:"terminalBell.mp3"}),r.diffLineInserted=r.register({fileName:"diffLineInserted.mp3"}),r.diffLineDeleted=r.register({fileName:"diffLineDeleted.mp3"}),r.diffLineModified=r.register({fileName:"diffLineModified.mp3"}),r.chatRequestSent=r.register({fileName:"chatRequestSent.mp3"}),r.chatResponsePending=r.register({fileName:"chatResponsePending.mp3"}),r.chatResponseReceived1=r.register({fileName:"chatResponseReceived1.mp3"}),r.chatResponseReceived2=r.register({fileName:"chatResponseReceived2.mp3"}),r.chatResponseReceived3=r.register({fileName:"chatResponseReceived3.mp3"}),r.chatResponseReceived4=r.register({fileName:"chatResponseReceived4.mp3"}),r.clear=r.register({fileName:"clear.mp3"}),r.save=r.register({fileName:"save.mp3"}),r.format=r.register({fileName:"format.mp3"}),r.voiceRecordingStarted=r.register({fileName:"voiceRecordingStarted.mp3"}),r.voiceRecordingStopped=r.register({fileName:"voiceRecordingStopped.mp3"});class a{constructor(e){this.randomOneOf=e}}class l{static register(e){const t=new a("randomOneOf"in e.sound?e.sound.randomOneOf:[e.sound]),i=new l(t,e.name,e.legacySoundSettingsKey,e.settingsKey,e.legacyAnnouncementSettingsKey,e.announcementMessage);return l._signals.add(i),i}constructor(e,t,i,n,o,s){this.sound=e,this.name=t,this.legacySoundSettingsKey=i,this.settingsKey=n,this.legacyAnnouncementSettingsKey=o,this.announcementMessage=s}}l._signals=new Set,l.error=l.register({name:(0,o.NC)("accessibilitySignals.lineHasError.name","Error on Line"),sound:r.error,legacySoundSettingsKey:"audioCues.lineHasError",legacyAnnouncementSettingsKey:"accessibility.alert.error",announcementMessage:(0,o.NC)("accessibility.signals.lineHasError","Error"),settingsKey:"accessibility.signals.lineHasError"}),l.warning=l.register({name:(0,o.NC)("accessibilitySignals.lineHasWarning.name","Warning on Line"),sound:r.warning,legacySoundSettingsKey:"audioCues.lineHasWarning",legacyAnnouncementSettingsKey:"accessibility.alert.warning",announcementMessage:(0,o.NC)("accessibility.signals.lineHasWarning","Warning"),settingsKey:"accessibility.signals.lineHasWarning"}),l.foldedArea=l.register({name:(0,o.NC)("accessibilitySignals.lineHasFoldedArea.name","Folded Area on Line"),sound:r.foldedArea,legacySoundSettingsKey:"audioCues.lineHasFoldedArea",legacyAnnouncementSettingsKey:"accessibility.alert.foldedArea",announcementMessage:(0,o.NC)("accessibility.signals.lineHasFoldedArea","Folded"),settingsKey:"accessibility.signals.lineHasFoldedArea"}),l.break=l.register({name:(0,o.NC)("accessibilitySignals.lineHasBreakpoint.name","Breakpoint on Line"),sound:r.break,legacySoundSettingsKey:"audioCues.lineHasBreakpoint",legacyAnnouncementSettingsKey:"accessibility.alert.breakpoint",announcementMessage:(0,o.NC)("accessibility.signals.lineHasBreakpoint","Breakpoint"),settingsKey:"accessibility.signals.lineHasBreakpoint"}),l.inlineSuggestion=l.register({name:(0,o.NC)("accessibilitySignals.lineHasInlineSuggestion.name","Inline Suggestion on Line"),sound:r.quickFixes,legacySoundSettingsKey:"audioCues.lineHasInlineSuggestion",settingsKey:"accessibility.signals.lineHasInlineSuggestion"}),l.terminalQuickFix=l.register({name:(0,o.NC)("accessibilitySignals.terminalQuickFix.name","Terminal Quick Fix"),sound:r.quickFixes,legacySoundSettingsKey:"audioCues.terminalQuickFix",legacyAnnouncementSettingsKey:"accessibility.alert.terminalQuickFix",announcementMessage:(0,o.NC)("accessibility.signals.terminalQuickFix","Quick Fix"),settingsKey:"accessibility.signals.terminalQuickFix"}),l.onDebugBreak=l.register({name:(0,o.NC)("accessibilitySignals.onDebugBreak.name","Debugger Stopped on Breakpoint"),sound:r.break,legacySoundSettingsKey:"audioCues.onDebugBreak",legacyAnnouncementSettingsKey:"accessibility.alert.onDebugBreak",announcementMessage:(0,o.NC)("accessibility.signals.onDebugBreak","Breakpoint"),settingsKey:"accessibility.signals.onDebugBreak"}),l.noInlayHints=l.register({name:(0,o.NC)("accessibilitySignals.noInlayHints","No Inlay Hints on Line"),sound:r.error,legacySoundSettingsKey:"audioCues.noInlayHints",legacyAnnouncementSettingsKey:"accessibility.alert.noInlayHints",announcementMessage:(0,o.NC)("accessibility.signals.noInlayHints","No Inlay Hints"),settingsKey:"accessibility.signals.noInlayHints"}),l.taskCompleted=l.register({name:(0,o.NC)("accessibilitySignals.taskCompleted","Task Completed"),sound:r.taskCompleted,legacySoundSettingsKey:"audioCues.taskCompleted",legacyAnnouncementSettingsKey:"accessibility.alert.taskCompleted",announcementMessage:(0,o.NC)("accessibility.signals.taskCompleted","Task Completed"),settingsKey:"accessibility.signals.taskCompleted"}),l.taskFailed=l.register({name:(0,o.NC)("accessibilitySignals.taskFailed","Task Failed"),sound:r.taskFailed,legacySoundSettingsKey:"audioCues.taskFailed",legacyAnnouncementSettingsKey:"accessibility.alert.taskFailed",announcementMessage:(0,o.NC)("accessibility.signals.taskFailed","Task Failed"),settingsKey:"accessibility.signals.taskFailed"}),l.terminalCommandFailed=l.register({name:(0,o.NC)("accessibilitySignals.terminalCommandFailed","Terminal Command Failed"),sound:r.error,legacySoundSettingsKey:"audioCues.terminalCommandFailed",legacyAnnouncementSettingsKey:"accessibility.alert.terminalCommandFailed",announcementMessage:(0,o.NC)("accessibility.signals.terminalCommandFailed","Command Failed"),settingsKey:"accessibility.signals.terminalCommandFailed"}),l.terminalBell=l.register({name:(0,o.NC)("accessibilitySignals.terminalBell","Terminal Bell"),sound:r.terminalBell,legacySoundSettingsKey:"audioCues.terminalBell",legacyAnnouncementSettingsKey:"accessibility.alert.terminalBell",announcementMessage:(0,o.NC)("accessibility.signals.terminalBell","Terminal Bell"),settingsKey:"accessibility.signals.terminalBell"}),l.notebookCellCompleted=l.register({name:(0,o.NC)("accessibilitySignals.notebookCellCompleted","Notebook Cell Completed"),sound:r.taskCompleted,legacySoundSettingsKey:"audioCues.notebookCellCompleted",legacyAnnouncementSettingsKey:"accessibility.alert.notebookCellCompleted",announcementMessage:(0,o.NC)("accessibility.signals.notebookCellCompleted","Notebook Cell Completed"),settingsKey:"accessibility.signals.notebookCellCompleted"}),l.notebookCellFailed=l.register({name:(0,o.NC)("accessibilitySignals.notebookCellFailed","Notebook Cell Failed"),sound:r.taskFailed,legacySoundSettingsKey:"audioCues.notebookCellFailed",legacyAnnouncementSettingsKey:"accessibility.alert.notebookCellFailed",announcementMessage:(0,o.NC)("accessibility.signals.notebookCellFailed","Notebook Cell Failed"),settingsKey:"accessibility.signals.notebookCellFailed"}),l.diffLineInserted=l.register({name:(0,o.NC)("accessibilitySignals.diffLineInserted","Diff Line Inserted"),sound:r.diffLineInserted,legacySoundSettingsKey:"audioCues.diffLineInserted",settingsKey:"accessibility.signals.diffLineInserted"}),l.diffLineDeleted=l.register({name:(0,o.NC)("accessibilitySignals.diffLineDeleted","Diff Line Deleted"),sound:r.diffLineDeleted,legacySoundSettingsKey:"audioCues.diffLineDeleted",settingsKey:"accessibility.signals.diffLineDeleted"}),l.diffLineModified=l.register({name:(0,o.NC)("accessibilitySignals.diffLineModified","Diff Line Modified"),sound:r.diffLineModified,legacySoundSettingsKey:"audioCues.diffLineModified",settingsKey:"accessibility.signals.diffLineModified"}),l.chatRequestSent=l.register({name:(0,o.NC)("accessibilitySignals.chatRequestSent","Chat Request Sent"),sound:r.chatRequestSent,legacySoundSettingsKey:"audioCues.chatRequestSent",legacyAnnouncementSettingsKey:"accessibility.alert.chatRequestSent",announcementMessage:(0,o.NC)("accessibility.signals.chatRequestSent","Chat Request Sent"),settingsKey:"accessibility.signals.chatRequestSent"}),l.chatResponseReceived=l.register({name:(0,o.NC)("accessibilitySignals.chatResponseReceived","Chat Response Received"),legacySoundSettingsKey:"audioCues.chatResponseReceived",sound:{randomOneOf:[r.chatResponseReceived1,r.chatResponseReceived2,r.chatResponseReceived3,r.chatResponseReceived4]},settingsKey:"accessibility.signals.chatResponseReceived"}),l.chatResponsePending=l.register({name:(0,o.NC)("accessibilitySignals.chatResponsePending","Chat Response Pending"),sound:r.chatResponsePending,legacySoundSettingsKey:"audioCues.chatResponsePending",legacyAnnouncementSettingsKey:"accessibility.alert.chatResponsePending",announcementMessage:(0,o.NC)("accessibility.signals.chatResponsePending","Chat Response Pending"),settingsKey:"accessibility.signals.chatResponsePending"}),l.clear=l.register({name:(0,o.NC)("accessibilitySignals.clear","Clear"),sound:r.clear,legacySoundSettingsKey:"audioCues.clear",legacyAnnouncementSettingsKey:"accessibility.alert.clear",announcementMessage:(0,o.NC)("accessibility.signals.clear","Clear"),settingsKey:"accessibility.signals.clear"}),l.save=l.register({name:(0,o.NC)("accessibilitySignals.save","Save"),sound:r.save,legacySoundSettingsKey:"audioCues.save",legacyAnnouncementSettingsKey:"accessibility.alert.save",announcementMessage:(0,o.NC)("accessibility.signals.save","Save"),settingsKey:"accessibility.signals.save"}),l.format=l.register({name:(0,o.NC)("accessibilitySignals.format","Format"),sound:r.format,legacySoundSettingsKey:"audioCues.format",legacyAnnouncementSettingsKey:"accessibility.alert.format",announcementMessage:(0,o.NC)("accessibility.signals.format","Format"),settingsKey:"accessibility.signals.format"}),l.voiceRecordingStarted=l.register({name:(0,o.NC)("accessibilitySignals.voiceRecordingStarted","Voice Recording Started"),sound:r.voiceRecordingStarted,legacySoundSettingsKey:"audioCues.voiceRecordingStarted",settingsKey:"accessibility.signals.voiceRecordingStarted"}),l.voiceRecordingStopped=l.register({name:(0,o.NC)("accessibilitySignals.voiceRecordingStopped","Voice Recording Stopped"),sound:r.voiceRecordingStopped,legacySoundSettingsKey:"audioCues.voiceRecordingStopped",settingsKey:"accessibility.signals.voiceRecordingStopped"})},69833:(e,t,i)=>{i.d(t,{Mm:()=>T,Id:()=>O,vr:()=>E,LJ:()=>x});var n=i(85714),o=i(39341),s=i(66193),r=i(754),a=i(22337),l=i(87818),h=i(89599),d=i(21511),c=i(71721),u=i(48489);var g=i(24920),m=i(58868),f=i(34304),p=i(46765),_=i(13200),v=i(89965),b=i(17903),C=i(62502),w=i(75826),y=i(63686),S=i(87701),L=i(29581),k=i(46385),D=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},N=function(e,t){return function(i,n){t(i,n,e)}};function x(e,t,i,o){const s=e.getActions(t),r=n._q.getInstance();I(s,i,r.keyStatus.altKey||(d.ED||d.IJ)&&r.keyStatus.shiftKey,o?e=>e===o:e=>"navigation"===e)}function E(e,t,i,n,o,s){I(e.getActions(t),i,!1,"string"===typeof n?e=>e===n:n,o,s)}function I(e,t,i){let n,o,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e=>"navigation"===e,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>!1,l=arguments.length>5&&void 0!==arguments[5]&&arguments[5];Array.isArray(t)?(n=t,o=t):(n=t.primary,o=t.secondary);const h=new Set;for(const[d,c]of e){let e;s(d)?(e=n,e.length>0&&l&&e.push(new a.Z0)):(e=o,e.length>0&&e.push(new a.Z0));for(let t of c){i&&(t=t instanceof u.U8&&t.alt?t.alt:t);const n=e.push(t);t instanceof a.wY&&h.add({group:d,action:t,index:n-1})}}for(const{group:a,action:d,index:c}of h){const e=s(a)?n:o,t=d.actions;r(d,a,e.length)&&e.splice(c,1,...t)}}let T=class extends s.gU{constructor(e,t,i,o,s,r,a,l){super(void 0,e,{icon:!(!e.class&&!e.item.icon),label:!e.class&&!e.item.icon,draggable:null===t||void 0===t?void 0:t.draggable,keybinding:null===t||void 0===t?void 0:t.keybinding,hoverDelegate:null===t||void 0===t?void 0:t.hoverDelegate}),this._keybindingService=i,this._notificationService=o,this._contextKeyService=s,this._themeService=r,this._contextMenuService=a,this._accessibilityService=l,this._wantsAltCommand=!1,this._itemClassDispose=this._register(new h.XK),this._altKey=n._q.getInstance()}get _menuItemAction(){return this._action}get _commandAction(){return this._wantsAltCommand&&this._menuItemAction.alt||this._menuItemAction}async onClick(e){e.preventDefault(),e.stopPropagation();try{await this.actionRunner.run(this._commandAction,this._context)}catch(t){this._notificationService.error(t)}}render(e){if(super.render(e),e.classList.add("menu-entry"),this.options.icon&&this._updateItemClass(this._menuItemAction.item),this._menuItemAction.alt){let t=!1;const i=()=>{var e;const i=!!(null===(e=this._menuItemAction.alt)||void 0===e?void 0:e.enabled)&&(!this._accessibilityService.isMotionReduced()||t)&&(this._altKey.keyStatus.altKey||this._altKey.keyStatus.shiftKey&&t);i!==this._wantsAltCommand&&(this._wantsAltCommand=i,this.updateLabel(),this.updateTooltip(),this.updateClass())};this._register(this._altKey.event(i)),this._register((0,n.nm)(e,"mouseleave",(e=>{t=!1,i()}))),this._register((0,n.nm)(e,"mouseenter",(e=>{t=!0,i()}))),i()}}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this._commandAction.label)}getTooltip(){var e;const t=this._keybindingService.lookupKeybinding(this._commandAction.id,this._contextKeyService),i=t&&t.getLabel(),n=this._commandAction.tooltip||this._commandAction.label;let o=i?(0,c.NC)("titleAndKb","{0} ({1})",n,i):n;if(!this._wantsAltCommand&&(null===(e=this._menuItemAction.alt)||void 0===e?void 0:e.enabled)){const e=this._menuItemAction.alt.tooltip||this._menuItemAction.alt.label,t=this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id,this._contextKeyService),i=t&&t.getLabel(),n=i?(0,c.NC)("titleAndKb","{0} ({1})",e,i):e;o=(0,c.NC)("titleAndKbAndAlt","{0}\n[{1}] {2}",o,l.xo.modifierLabels[d.OS].altKey,n)}return o}updateClass(){this.options.icon&&(this._commandAction!==this._menuItemAction?this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.alt.item):this._updateItemClass(this._menuItemAction.item))}_updateItemClass(e){this._itemClassDispose.value=void 0;const{element:t,label:i}=this;if(!t||!i)return;const o=this._commandAction.checked&&((s=e.toggled)&&void 0!==s.condition)&&e.toggled.icon?e.toggled.icon:e.icon;var s;if(o)if(C.k.isThemeIcon(o)){const e=C.k.asClassNameArray(o);i.classList.add(...e),this._itemClassDispose.value=(0,h.OF)((()=>{i.classList.remove(...e)}))}else i.style.backgroundImage=(0,w._T)(this._themeService.getColorTheme().type)?(0,n.wY)(o.dark):(0,n.wY)(o.light),i.classList.add("icon"),this._itemClassDispose.value=(0,h.F8)((0,h.OF)((()=>{i.style.backgroundImage="",i.classList.remove("icon")})),this._themeService.onDidColorThemeChange((()=>{this.updateClass()})))}};T=D([N(2,p.d),N(3,_.lT),N(4,g.i6),N(5,b.XE),N(6,m.i),N(7,k.F)],T);let M=class extends r.C{constructor(e,t,i,n,o){var s,r,a;const l={...t,menuAsChild:null!==(s=null===t||void 0===t?void 0:t.menuAsChild)&&void 0!==s&&s,classNames:null!==(r=null===t||void 0===t?void 0:t.classNames)&&void 0!==r?r:C.k.isThemeIcon(e.item.icon)?C.k.asClassName(e.item.icon):void 0,keybindingProvider:null!==(a=null===t||void 0===t?void 0:t.keybindingProvider)&&void 0!==a?a:e=>i.lookupKeybinding(e.id)};super(e,{getActions:()=>e.actions},n,l),this._keybindingService=i,this._contextMenuService=n,this._themeService=o}render(e){super.render(e),(0,y.p_)(this.element),e.classList.add("menu-entry");const t=this._action,{icon:i}=t.item;if(i&&!C.k.isThemeIcon(i)){this.element.classList.add("icon");const e=()=>{this.element&&(this.element.style.backgroundImage=(0,w._T)(this._themeService.getColorTheme().type)?(0,n.wY)(i.dark):(0,n.wY)(i.light))};e(),this._register(this._themeService.onDidColorThemeChange((()=>{e()})))}}};M=D([N(2,p.d),N(3,m.i),N(4,b.XE)],M);let A=class extends s.YH{constructor(e,t,i,n,o,s,l,h){var d,c,g;let m;super(null,e),this._keybindingService=i,this._notificationService=n,this._contextMenuService=o,this._menuService=s,this._instaService=l,this._storageService=h,this._container=null,this._options=t,this._storageKey="".concat(e.item.submenu.id,"_lastActionId");const f=(null===t||void 0===t?void 0:t.persistLastActionId)?h.get(this._storageKey,1):void 0;f&&(m=e.actions.find((e=>f===e.id))),m||(m=e.actions[0]),this._defaultAction=this._instaService.createInstance(T,m,{keybinding:this._getDefaultActionKeybindingLabel(m)});const p={keybindingProvider:e=>this._keybindingService.lookupKeybinding(e.id),...t,menuAsChild:null===(d=null===t||void 0===t?void 0:t.menuAsChild)||void 0===d||d,classNames:null!==(c=null===t||void 0===t?void 0:t.classNames)&&void 0!==c?c:["codicon","codicon-chevron-down"],actionRunner:null!==(g=null===t||void 0===t?void 0:t.actionRunner)&&void 0!==g?g:new a.Wi};this._dropdown=new r.C(e,e.actions,this._contextMenuService,p),this._register(this._dropdown.actionRunner.onDidRun((e=>{e.action instanceof u.U8&&this.update(e.action)})))}update(e){var t;(null===(t=this._options)||void 0===t?void 0:t.persistLastActionId)&&this._storageService.store(this._storageKey,e.id,1,1),this._defaultAction.dispose(),this._defaultAction=this._instaService.createInstance(T,e,{keybinding:this._getDefaultActionKeybindingLabel(e)}),this._defaultAction.actionRunner=new class extends a.Wi{async runAction(e,t){await e.run(void 0)}},this._container&&this._defaultAction.render((0,n.Ce)(this._container,(0,n.$)(".action-container")))}_getDefaultActionKeybindingLabel(e){var t;let i;if(null===(t=this._options)||void 0===t?void 0:t.renderKeybindingWithDefaultActionLabel){const t=this._keybindingService.lookupKeybinding(e.id);t&&(i="(".concat(t.getLabel(),")"))}return i}setActionContext(e){super.setActionContext(e),this._defaultAction.setActionContext(e),this._dropdown.setActionContext(e)}render(e){this._container=e,super.render(this._container),this._container.classList.add("monaco-dropdown-with-default");const t=(0,n.$)(".action-container");this._defaultAction.render((0,n.R3)(this._container,t)),this._register((0,n.nm)(t,n.tw.KEY_DOWN,(e=>{const t=new o.y(e);t.equals(17)&&(this._defaultAction.element.tabIndex=-1,this._dropdown.focus(),t.stopPropagation())})));const i=(0,n.$)(".dropdown-action-container");this._dropdown.render((0,n.R3)(this._container,i)),this._register((0,n.nm)(i,n.tw.KEY_DOWN,(e=>{var t;const i=new o.y(e);i.equals(15)&&(this._defaultAction.element.tabIndex=0,this._dropdown.setFocusable(!1),null===(t=this._defaultAction.element)||void 0===t||t.focus(),i.stopPropagation())})))}focus(e){e?this._dropdown.focus():(this._defaultAction.element.tabIndex=0,this._defaultAction.element.focus())}blur(){this._defaultAction.element.tabIndex=-1,this._dropdown.blur(),this._container.blur()}setFocusable(e){e?this._defaultAction.element.tabIndex=0:(this._defaultAction.element.tabIndex=-1,this._dropdown.setFocusable(!1))}dispose(){this._defaultAction.dispose(),this._dropdown.dispose(),super.dispose()}};A=D([N(2,p.d),N(3,_.lT),N(4,m.i),N(5,u.co),N(6,f.TG),N(7,v.Uy)],A);let R=class extends s.Lc{constructor(e,t){super(null,e,e.actions.map((e=>({text:e.id===a.Z0.ID?"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500":e.label,isDisabled:!e.enabled}))),0,t,L.BM,{ariaLabel:e.tooltip,optionsAsChildren:!0}),this.select(Math.max(0,e.actions.findIndex((e=>e.checked))))}render(e){super.render(e),e.style.borderColor=(0,S.n_1)(S.a9O)}runAction(e,t){const i=this.action.actions[t];i&&this.actionRunner.run(i)}};function O(e,t,i){return t instanceof u.U8?e.createInstance(T,t,i):t instanceof u.NZ?t.item.isSelection?e.createInstance(R,t):t.item.rememberDefaultAction?e.createInstance(A,t,{...i,persistLastActionId:!0}):e.createInstance(M,t,i):void 0}R=D([N(1,m.u)],R)},60548:(e,t,i)=>{i.d(t,{r:()=>E,T:()=>x});var n=i(85714),o=i(21494),s=i(65122),r=i(754),a=i(22337),l=i(62974),h=i(62502),d=i(24219),c=i(89599),u=i(71721),g=i(14561);class m extends c.JT{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{orientation:0};var n;super(),this.submenuActionViewItems=[],this.hasSecondaryActions=!1,this._onDidChangeDropdownVisibility=this._register(new d.z5),this.onDidChangeDropdownVisibility=this._onDidChangeDropdownVisibility.event,this.disposables=this._register(new c.SL),i.hoverDelegate=null!==(n=i.hoverDelegate)&&void 0!==n?n:this._register((0,g.p0)()),this.options=i,this.lookupKeybindings="function"===typeof this.options.getKeyBinding,this.toggleMenuAction=this._register(new f((()=>{var e;return null===(e=this.toggleMenuActionViewItem)||void 0===e?void 0:e.show()}),i.toggleMenuTitle)),this.element=document.createElement("div"),this.element.className="monaco-toolbar",e.appendChild(this.element),this.actionBar=this._register(new s.o(this.element,{orientation:i.orientation,ariaLabel:i.ariaLabel,actionRunner:i.actionRunner,allowContextMenu:i.allowContextMenu,highlightToggledItems:i.highlightToggledItems,hoverDelegate:i.hoverDelegate,actionViewItemProvider:(e,n)=>{var o;if(e.id===f.ID)return this.toggleMenuActionViewItem=new r.C(e,e.menuActions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:h.k.asClassNameArray(null!==(o=i.moreIcon)&&void 0!==o?o:l.l.toolBarMore),anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry,isMenu:!0,hoverDelegate:this.options.hoverDelegate}),this.toggleMenuActionViewItem.setActionContext(this.actionBar.context),this.disposables.add(this._onDidChangeDropdownVisibility.add(this.toggleMenuActionViewItem.onDidChangeVisibility)),this.toggleMenuActionViewItem;if(i.actionViewItemProvider){const t=i.actionViewItemProvider(e,n);if(t)return t}if(e instanceof a.wY){const i=new r.C(e,e.actions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:e.class,anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry,hoverDelegate:this.options.hoverDelegate});return i.setActionContext(this.actionBar.context),this.submenuActionViewItems.push(i),this.disposables.add(this._onDidChangeDropdownVisibility.add(i.onDidChangeVisibility)),i}}}))}set actionRunner(e){this.actionBar.actionRunner=e}get actionRunner(){return this.actionBar.actionRunner}getElement(){return this.element}getItemAction(e){return this.actionBar.getAction(e)}setActions(e,t){this.clear();const i=e?e.slice(0):[];this.hasSecondaryActions=!!(t&&t.length>0),this.hasSecondaryActions&&t&&(this.toggleMenuAction.menuActions=t.slice(0),i.push(this.toggleMenuAction)),i.forEach((e=>{this.actionBar.push(e,{icon:!0,label:!1,keybinding:this.getKeybindingLabel(e)})}))}getKeybindingLabel(e){var t,i,n;const o=this.lookupKeybindings?null===(i=(t=this.options).getKeyBinding)||void 0===i?void 0:i.call(t,e):void 0;return null!==(n=null===o||void 0===o?void 0:o.getLabel())&&void 0!==n?n:void 0}clear(){this.submenuActionViewItems=[],this.disposables.clear(),this.actionBar.clear()}dispose(){this.clear(),this.disposables.dispose(),super.dispose()}}class f extends a.aU{constructor(e,t){t=t||u.NC("moreActions","More Actions..."),super(f.ID,t,void 0,!0),this._menuActions=[],this.toggleDropdownMenu=e}async run(){this.toggleDropdownMenu()}get menuActions(){return this._menuActions}set menuActions(e){this._menuActions=e}}f.ID="toolbar.toggle.more";var p=i(75629),_=i(99927),v=i(85108),b=i(36952),C=i(69833),w=i(48489),y=i(24920),S=i(58868),L=i(46765),k=i(38015),D=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},N=function(e,t){return function(i,n){t(i,n,e)}};let x=class extends m{constructor(e,t,i,n,o,s,r){super(e,o,{getKeyBinding:e=>{var t;return null!==(t=s.lookupKeybinding(e.id))&&void 0!==t?t:void 0},...t,allowContextMenu:!0,skipTelemetry:"string"===typeof(null===t||void 0===t?void 0:t.telemetrySource)}),this._options=t,this._menuService=i,this._contextKeyService=n,this._contextMenuService=o,this._sessionDisposables=this._store.add(new c.SL);const a=null===t||void 0===t?void 0:t.telemetrySource;a&&this._store.add(this.actionBar.onDidRun((e=>r.publicLog2("workbenchActionExecuted",{id:e.action.id,from:a}))))}setActions(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;var s,r,l;this._sessionDisposables.clear();const h=e.slice(),d=t.slice(),c=[];let g=0;const m=[];let f=!1;if(-1!==(null===(s=this._options)||void 0===s?void 0:s.hiddenItemStrategy))for(let n=0;nnull===e||void 0===e?void 0:e.id))),t=this._options.overflowBehavior.maxItems-e.size;let i=0;for(let n=0;n=t&&(h[n]=void 0,m[n]=o))}}(0,p.Rs)(h),(0,p.Rs)(m),super.setActions(h,a.Z0.join(m,d)),c.length>0&&this._sessionDisposables.add((0,n.nm)(this.getElement(),"contextmenu",(e=>{var t,s,r,l,h;const d=new o.n((0,n.Jj)(this.getElement()),e),m=this.getItemAction(d.target);if(!m)return;d.preventDefault(),d.stopPropagation();let p,_=!1;if(1===g&&0===(null===(t=this._options)||void 0===t?void 0:t.hiddenItemStrategy)){_=!0;for(let e=0;ethis._menuService.resetHiddenStates(i)}))),this._contextMenuService.showContextMenu({getAnchor:()=>d,getActions:()=>v,menuId:null===(r=this._options)||void 0===r?void 0:r.contextMenu,menuActionOptions:{renderShortTitle:!0,...null===(l=this._options)||void 0===l?void 0:l.menuOptions},skipTelemetry:"string"===typeof(null===(h=this._options)||void 0===h?void 0:h.telemetrySource),contextKeyService:this._contextKeyService})})))}};x=D([N(2,w.co),N(3,y.i6),N(4,S.i),N(5,L.d),N(6,k.b)],x);let E=class extends x{constructor(e,t,i,n,o,s,r,a){super(e,{resetMenu:t,...i},n,o,s,r,a),this._onDidChangeMenuItems=this._store.add(new d.Q5),this.onDidChangeMenuItems=this._onDidChangeMenuItems.event;const l=this._store.add(n.createMenu(t,o,{emitEventsForSubmenuChanges:!0})),h=()=>{var t,n,o;const s=[],r=[];(0,C.vr)(l,null===i||void 0===i?void 0:i.menuOptions,{primary:s,secondary:r},null===(t=null===i||void 0===i?void 0:i.toolbarOptions)||void 0===t?void 0:t.primaryGroup,null===(n=null===i||void 0===i?void 0:i.toolbarOptions)||void 0===n?void 0:n.shouldInlineSubmenu,null===(o=null===i||void 0===i?void 0:i.toolbarOptions)||void 0===o?void 0:o.useSeparatorsInPrimaryActions),e.classList.toggle("has-no-actions",0===s.length&&0===r.length),super.setActions(s,r)};this._store.add(l.onDidChange((()=>{h(),this._onDidChangeMenuItems.fire(this)}))),h()}setActions(){throw new v.he("This toolbar is populated from a menu.")}};E=D([N(3,w.co),N(4,y.i6),N(5,S.i),N(6,L.d),N(7,k.b)],E)},48489:(e,t,i)=>{i.d(t,{BH:()=>C,Ke:()=>S,NZ:()=>w,U8:()=>y,co:()=>v,eH:()=>_,f6:()=>p,r1:()=>L,vr:()=>f});var n,o=i(22337),s=i(62502),r=i(24219),a=i(89599),l=i(44713),h=i(60982),d=i(24920),c=i(34304),u=i(86728),g=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},m=function(e,t){return function(i,n){t(i,n,e)}};function f(e){return void 0!==e.command}function p(e){return void 0!==e.submenu}class _{constructor(e){if(_._instances.has(e))throw new TypeError("MenuId with identifier '".concat(e,"' already exists. Use MenuId.for(ident) or a unique identifier"));_._instances.set(e,this),this.id=e}}_._instances=new Map,_.CommandPalette=new _("CommandPalette"),_.DebugBreakpointsContext=new _("DebugBreakpointsContext"),_.DebugCallStackContext=new _("DebugCallStackContext"),_.DebugConsoleContext=new _("DebugConsoleContext"),_.DebugVariablesContext=new _("DebugVariablesContext"),_.NotebookVariablesContext=new _("NotebookVariablesContext"),_.DebugHoverContext=new _("DebugHoverContext"),_.DebugWatchContext=new _("DebugWatchContext"),_.DebugToolBar=new _("DebugToolBar"),_.DebugToolBarStop=new _("DebugToolBarStop"),_.EditorContext=new _("EditorContext"),_.SimpleEditorContext=new _("SimpleEditorContext"),_.EditorContent=new _("EditorContent"),_.EditorLineNumberContext=new _("EditorLineNumberContext"),_.EditorContextCopy=new _("EditorContextCopy"),_.EditorContextPeek=new _("EditorContextPeek"),_.EditorContextShare=new _("EditorContextShare"),_.EditorTitle=new _("EditorTitle"),_.EditorTitleRun=new _("EditorTitleRun"),_.EditorTitleContext=new _("EditorTitleContext"),_.EditorTitleContextShare=new _("EditorTitleContextShare"),_.EmptyEditorGroup=new _("EmptyEditorGroup"),_.EmptyEditorGroupContext=new _("EmptyEditorGroupContext"),_.EditorTabsBarContext=new _("EditorTabsBarContext"),_.EditorTabsBarShowTabsSubmenu=new _("EditorTabsBarShowTabsSubmenu"),_.EditorTabsBarShowTabsZenModeSubmenu=new _("EditorTabsBarShowTabsZenModeSubmenu"),_.EditorActionsPositionSubmenu=new _("EditorActionsPositionSubmenu"),_.ExplorerContext=new _("ExplorerContext"),_.ExplorerContextShare=new _("ExplorerContextShare"),_.ExtensionContext=new _("ExtensionContext"),_.GlobalActivity=new _("GlobalActivity"),_.CommandCenter=new _("CommandCenter"),_.CommandCenterCenter=new _("CommandCenterCenter"),_.LayoutControlMenuSubmenu=new _("LayoutControlMenuSubmenu"),_.LayoutControlMenu=new _("LayoutControlMenu"),_.MenubarMainMenu=new _("MenubarMainMenu"),_.MenubarAppearanceMenu=new _("MenubarAppearanceMenu"),_.MenubarDebugMenu=new _("MenubarDebugMenu"),_.MenubarEditMenu=new _("MenubarEditMenu"),_.MenubarCopy=new _("MenubarCopy"),_.MenubarFileMenu=new _("MenubarFileMenu"),_.MenubarGoMenu=new _("MenubarGoMenu"),_.MenubarHelpMenu=new _("MenubarHelpMenu"),_.MenubarLayoutMenu=new _("MenubarLayoutMenu"),_.MenubarNewBreakpointMenu=new _("MenubarNewBreakpointMenu"),_.PanelAlignmentMenu=new _("PanelAlignmentMenu"),_.PanelPositionMenu=new _("PanelPositionMenu"),_.ActivityBarPositionMenu=new _("ActivityBarPositionMenu"),_.MenubarPreferencesMenu=new _("MenubarPreferencesMenu"),_.MenubarRecentMenu=new _("MenubarRecentMenu"),_.MenubarSelectionMenu=new _("MenubarSelectionMenu"),_.MenubarShare=new _("MenubarShare"),_.MenubarSwitchEditorMenu=new _("MenubarSwitchEditorMenu"),_.MenubarSwitchGroupMenu=new _("MenubarSwitchGroupMenu"),_.MenubarTerminalMenu=new _("MenubarTerminalMenu"),_.MenubarViewMenu=new _("MenubarViewMenu"),_.MenubarHomeMenu=new _("MenubarHomeMenu"),_.OpenEditorsContext=new _("OpenEditorsContext"),_.OpenEditorsContextShare=new _("OpenEditorsContextShare"),_.ProblemsPanelContext=new _("ProblemsPanelContext"),_.SCMInputBox=new _("SCMInputBox"),_.SCMChangesSeparator=new _("SCMChangesSeparator"),_.SCMIncomingChanges=new _("SCMIncomingChanges"),_.SCMIncomingChangesContext=new _("SCMIncomingChangesContext"),_.SCMIncomingChangesSetting=new _("SCMIncomingChangesSetting"),_.SCMOutgoingChanges=new _("SCMOutgoingChanges"),_.SCMOutgoingChangesContext=new _("SCMOutgoingChangesContext"),_.SCMOutgoingChangesSetting=new _("SCMOutgoingChangesSetting"),_.SCMIncomingChangesAllChangesContext=new _("SCMIncomingChangesAllChangesContext"),_.SCMIncomingChangesHistoryItemContext=new _("SCMIncomingChangesHistoryItemContext"),_.SCMOutgoingChangesAllChangesContext=new _("SCMOutgoingChangesAllChangesContext"),_.SCMOutgoingChangesHistoryItemContext=new _("SCMOutgoingChangesHistoryItemContext"),_.SCMChangeContext=new _("SCMChangeContext"),_.SCMResourceContext=new _("SCMResourceContext"),_.SCMResourceContextShare=new _("SCMResourceContextShare"),_.SCMResourceFolderContext=new _("SCMResourceFolderContext"),_.SCMResourceGroupContext=new _("SCMResourceGroupContext"),_.SCMSourceControl=new _("SCMSourceControl"),_.SCMSourceControlInline=new _("SCMSourceControlInline"),_.SCMSourceControlTitle=new _("SCMSourceControlTitle"),_.SCMTitle=new _("SCMTitle"),_.SearchContext=new _("SearchContext"),_.SearchActionMenu=new _("SearchActionContext"),_.StatusBarWindowIndicatorMenu=new _("StatusBarWindowIndicatorMenu"),_.StatusBarRemoteIndicatorMenu=new _("StatusBarRemoteIndicatorMenu"),_.StickyScrollContext=new _("StickyScrollContext"),_.TestItem=new _("TestItem"),_.TestItemGutter=new _("TestItemGutter"),_.TestMessageContext=new _("TestMessageContext"),_.TestMessageContent=new _("TestMessageContent"),_.TestPeekElement=new _("TestPeekElement"),_.TestPeekTitle=new _("TestPeekTitle"),_.TouchBarContext=new _("TouchBarContext"),_.TitleBarContext=new _("TitleBarContext"),_.TitleBarTitleContext=new _("TitleBarTitleContext"),_.TunnelContext=new _("TunnelContext"),_.TunnelPrivacy=new _("TunnelPrivacy"),_.TunnelProtocol=new _("TunnelProtocol"),_.TunnelPortInline=new _("TunnelInline"),_.TunnelTitle=new _("TunnelTitle"),_.TunnelLocalAddressInline=new _("TunnelLocalAddressInline"),_.TunnelOriginInline=new _("TunnelOriginInline"),_.ViewItemContext=new _("ViewItemContext"),_.ViewContainerTitle=new _("ViewContainerTitle"),_.ViewContainerTitleContext=new _("ViewContainerTitleContext"),_.ViewTitle=new _("ViewTitle"),_.ViewTitleContext=new _("ViewTitleContext"),_.CommentEditorActions=new _("CommentEditorActions"),_.CommentThreadTitle=new _("CommentThreadTitle"),_.CommentThreadActions=new _("CommentThreadActions"),_.CommentThreadAdditionalActions=new _("CommentThreadAdditionalActions"),_.CommentThreadTitleContext=new _("CommentThreadTitleContext"),_.CommentThreadCommentContext=new _("CommentThreadCommentContext"),_.CommentTitle=new _("CommentTitle"),_.CommentActions=new _("CommentActions"),_.CommentsViewThreadActions=new _("CommentsViewThreadActions"),_.InteractiveToolbar=new _("InteractiveToolbar"),_.InteractiveCellTitle=new _("InteractiveCellTitle"),_.InteractiveCellDelete=new _("InteractiveCellDelete"),_.InteractiveCellExecute=new _("InteractiveCellExecute"),_.InteractiveInputExecute=new _("InteractiveInputExecute"),_.IssueReporter=new _("IssueReporter"),_.NotebookToolbar=new _("NotebookToolbar"),_.NotebookStickyScrollContext=new _("NotebookStickyScrollContext"),_.NotebookCellTitle=new _("NotebookCellTitle"),_.NotebookCellDelete=new _("NotebookCellDelete"),_.NotebookCellInsert=new _("NotebookCellInsert"),_.NotebookCellBetween=new _("NotebookCellBetween"),_.NotebookCellListTop=new _("NotebookCellTop"),_.NotebookCellExecute=new _("NotebookCellExecute"),_.NotebookCellExecuteGoTo=new _("NotebookCellExecuteGoTo"),_.NotebookCellExecutePrimary=new _("NotebookCellExecutePrimary"),_.NotebookDiffCellInputTitle=new _("NotebookDiffCellInputTitle"),_.NotebookDiffCellMetadataTitle=new _("NotebookDiffCellMetadataTitle"),_.NotebookDiffCellOutputsTitle=new _("NotebookDiffCellOutputsTitle"),_.NotebookOutputToolbar=new _("NotebookOutputToolbar"),_.NotebookOutlineFilter=new _("NotebookOutlineFilter"),_.NotebookOutlineActionMenu=new _("NotebookOutlineActionMenu"),_.NotebookEditorLayoutConfigure=new _("NotebookEditorLayoutConfigure"),_.NotebookKernelSource=new _("NotebookKernelSource"),_.BulkEditTitle=new _("BulkEditTitle"),_.BulkEditContext=new _("BulkEditContext"),_.TimelineItemContext=new _("TimelineItemContext"),_.TimelineTitle=new _("TimelineTitle"),_.TimelineTitleContext=new _("TimelineTitleContext"),_.TimelineFilterSubMenu=new _("TimelineFilterSubMenu"),_.AccountsContext=new _("AccountsContext"),_.SidebarTitle=new _("SidebarTitle"),_.PanelTitle=new _("PanelTitle"),_.AuxiliaryBarTitle=new _("AuxiliaryBarTitle"),_.AuxiliaryBarHeader=new _("AuxiliaryBarHeader"),_.TerminalInstanceContext=new _("TerminalInstanceContext"),_.TerminalEditorInstanceContext=new _("TerminalEditorInstanceContext"),_.TerminalNewDropdownContext=new _("TerminalNewDropdownContext"),_.TerminalTabContext=new _("TerminalTabContext"),_.TerminalTabEmptyAreaContext=new _("TerminalTabEmptyAreaContext"),_.TerminalStickyScrollContext=new _("TerminalStickyScrollContext"),_.WebviewContext=new _("WebviewContext"),_.InlineCompletionsActions=new _("InlineCompletionsActions"),_.InlineEditActions=new _("InlineEditActions"),_.NewFile=new _("NewFile"),_.MergeInput1Toolbar=new _("MergeToolbar1Toolbar"),_.MergeInput2Toolbar=new _("MergeToolbar2Toolbar"),_.MergeBaseToolbar=new _("MergeBaseToolbar"),_.MergeInputResultToolbar=new _("MergeToolbarResultToolbar"),_.InlineSuggestionToolbar=new _("InlineSuggestionToolbar"),_.InlineEditToolbar=new _("InlineEditToolbar"),_.ChatContext=new _("ChatContext"),_.ChatCodeBlock=new _("ChatCodeblock"),_.ChatMessageTitle=new _("ChatMessageTitle"),_.ChatExecute=new _("ChatExecute"),_.ChatExecuteSecondary=new _("ChatExecuteSecondary"),_.ChatInputSide=new _("ChatInputSide"),_.AccessibleView=new _("AccessibleView"),_.MultiDiffEditorFileToolbar=new _("MultiDiffEditorFileToolbar"),_.DiffEditorHunkToolbar=new _("DiffEditorHunkToolbar"),_.DiffEditorSelectionToolbar=new _("DiffEditorSelectionToolbar");const v=(0,c.yh)("menuService");class b{static for(e){let t=this._all.get(e);return t||(t=new b(e),this._all.set(e,t)),t}static merge(e){const t=new Set;for(const i of e)i instanceof b&&t.add(i.id);return t}constructor(e){this.id=e,this.has=t=>t===e}}b._all=new Map;const C=new class{constructor(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new r.SZ({merge:b.merge}),this.onDidChangeMenu=this._onDidChangeMenu.event}addCommand(e){return this._commands.set(e.id,e),this._onDidChangeMenu.fire(b.for(_.CommandPalette)),(0,a.OF)((()=>{this._commands.delete(e.id)&&this._onDidChangeMenu.fire(b.for(_.CommandPalette))}))}getCommand(e){return this._commands.get(e)}getCommands(){const e=new Map;return this._commands.forEach(((t,i)=>e.set(i,t))),e}appendMenuItem(e,t){let i=this._menuItems.get(e);i||(i=new l.S,this._menuItems.set(e,i));const n=i.push(t);return this._onDidChangeMenu.fire(b.for(e)),(0,a.OF)((()=>{n(),this._onDidChangeMenu.fire(b.for(e))}))}appendMenuItems(e){const t=new a.SL;for(const{id:i,item:n}of e)t.add(this.appendMenuItem(i,n));return t}getMenuItems(e){let t;return t=this._menuItems.has(e)?[...this._menuItems.get(e)]:[],e===_.CommandPalette&&this._appendImplicitItems(t),t}_appendImplicitItems(e){const t=new Set;for(const i of e)f(i)&&(t.add(i.command.id),i.alt&&t.add(i.alt.id));this._commands.forEach(((i,n)=>{t.has(n)||e.push({command:i})}))}};class w extends o.wY{constructor(e,t,i){super("submenuitem.".concat(e.submenu.id),"string"===typeof e.title?e.title:e.title.value,i,"submenu"),this.item=e,this.hideActions=t}}let y=n=class{static label(e,t){return(null===t||void 0===t?void 0:t.renderShortTitle)&&e.shortTitle?"string"===typeof e.shortTitle?e.shortTitle:e.shortTitle.value:"string"===typeof e.title?e.title:e.title.value}constructor(e,t,i,o,r,a){var l,h;let d;if(this.hideActions=o,this._commandService=a,this.id=e.id,this.label=n.label(e,i),this.tooltip=null!==(h="string"===typeof e.tooltip?e.tooltip:null===(l=e.tooltip)||void 0===l?void 0:l.value)&&void 0!==h?h:"",this.enabled=!e.precondition||r.contextMatchesRules(e.precondition),this.checked=void 0,e.toggled){const t=e.toggled.condition?e.toggled:{condition:e.toggled};this.checked=r.contextMatchesRules(t.condition),this.checked&&t.tooltip&&(this.tooltip="string"===typeof t.tooltip?t.tooltip:t.tooltip.value),this.checked&&s.k.isThemeIcon(t.icon)&&(d=t.icon),this.checked&&t.title&&(this.label="string"===typeof t.title?t.title:t.title.value)}d||(d=s.k.isThemeIcon(e.icon)?e.icon:void 0),this.item=e,this.alt=t?new n(t,void 0,i,o,r,a):void 0,this._options=i,this.class=d&&s.k.asClassName(d)}run(){var e,t;let i=[];if((null===(e=this._options)||void 0===e?void 0:e.arg)&&(i=[...i,this._options.arg]),null===(t=this._options)||void 0===t?void 0:t.shouldForwardArgs){for(var n=arguments.length,o=new Array(n),s=0;s1?t-1:0),o=1;o{i.d(t,{p:()=>n});const n=(0,i(34304).yh)("clipboardService")},60982:(e,t,i)=>{i.d(t,{H:()=>l,P:()=>h});var n=i(24219),o=i(36952),s=i(89599),r=i(44713),a=i(63686);const l=(0,i(34304).yh)("commandService"),h=new class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new n.Q5,this.onDidRegisterCommand=this._onDidRegisterCommand.event}registerCommand(e,t){if(!e)throw new Error("invalid command");if("string"===typeof e){if(!t)throw new Error("invalid command");return this.registerCommand({id:e,handler:t})}if(e.metadata&&Array.isArray(e.metadata.args)){const t=[];for(const n of e.metadata.args)t.push(n.constraint);const i=e.handler;e.handler=function(e){for(var n=arguments.length,o=new Array(n>1?n-1:0),s=1;s{o();const e=this._commands.get(i);(null===e||void 0===e?void 0:e.isEmpty())&&this._commands.delete(i)}));return this._onDidRegisterCommand.fire(i),l}registerCommandAlias(e,t){return h.registerCommand(e,(function(e){for(var i=arguments.length,n=new Array(i>1?i-1:0),o=1;o{}))},25195:(e,t,i)=>{i.d(t,{KV:()=>s,Mt:()=>l,Od:()=>o,UI:()=>h,Ui:()=>n,xL:()=>r});const n=(0,i(34304).yh)("configurationService");function o(e,t){const i=Object.create(null);for(const n in e)s(i,n,e[n],t);return i}function s(e,t,i,n){const o=t.split("."),s=o.pop();let r=e;for(let l=0;l{i.d(t,{IP:()=>d,eU:()=>y,ny:()=>S});var n=i(75629),o=i(24219),s=i(63686),r=i(71721),a=i(25195),l=i(72677),h=i(70311);const d={Configuration:"base.contributions.configuration"},c={properties:{},patternProperties:{}},u={properties:{},patternProperties:{}},g={properties:{},patternProperties:{}},m={properties:{},patternProperties:{}},f={properties:{},patternProperties:{}},p={properties:{},patternProperties:{}},_="vscode://schemas/settings/resourceLanguage",v=h.B.as(l.I.JSONContribution);const b="\\[([^\\]]+)\\]",C=new RegExp(b,"g"),w="^(".concat(b,")+$"),y=new RegExp(w);function S(e){const t=[];if(y.test(e)){let i=C.exec(e);for(;null===i||void 0===i?void 0:i.length;){const n=i[1].trim();n&&t.push(n),i=C.exec(e)}}return(0,n.EB)(t)}const L=new class{constructor(){this.overrideIdentifiers=new Set,this._onDidSchemaChange=new o.Q5,this._onDidUpdateConfiguration=new o.Q5,this.configurationDefaultsOverrides=new Map,this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:r.NC("defaultLanguageConfigurationOverrides.title","Default Language Configuration Overrides"),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!0,allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.policyConfigurations=new Map,this.excludedConfigurationProperties={},v.registerSchema(_,this.resourceLanguageSettingsSchema),this.registerOverridePropertyPatternKey()}registerConfiguration(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.registerConfigurations([e],t)}registerConfigurations(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const i=new Set;this.doRegisterConfigurations(e,t,i),v.registerSchema(_,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:i})}registerDefaultConfigurations(e){const t=new Set;this.doRegisterDefaultConfigurations(e,t),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:t,defaultsOverrides:!0})}doRegisterDefaultConfigurations(e,t){var i;const n=[];for(const{overrides:o,source:l}of e)for(const e in o)if(t.add(e),y.test(e)){const t=this.configurationDefaultsOverrides.get(e),h=null!==(i=null===t||void 0===t?void 0:t.valuesSources)&&void 0!==i?i:new Map;if(l)for(const i of Object.keys(o[e]))h.set(i,l);const d={...(null===t||void 0===t?void 0:t.value)||{},...o[e]};this.configurationDefaultsOverrides.set(e,{source:l,value:d,valuesSources:h});const c=(0,a.UI)(e),u={type:"object",default:d,description:r.NC("defaultLanguageConfiguration.description","Configure settings to be overridden for the {0} language.",c),$ref:_,defaultDefaultValue:d,source:s.HD(l)?void 0:l,defaultValueSource:l};n.push(...S(e)),this.configurationProperties[e]=u,this.defaultLanguageConfigurationOverridesNode.properties[e]=u}else{this.configurationDefaultsOverrides.set(e,{value:o[e],source:l});const t=this.configurationProperties[e];t&&(this.updatePropertyDefaultValue(e,t),this.updateSchema(e,t))}this.doRegisterOverrideIdentifiers(n)}registerOverrideIdentifiers(e){this.doRegisterOverrideIdentifiers(e),this._onDidSchemaChange.fire()}doRegisterOverrideIdentifiers(e){for(const t of e)this.overrideIdentifiers.add(t);this.updateOverridePropertyPatternKey()}doRegisterConfigurations(e,t,i){e.forEach((e=>{this.validateAndRegisterProperties(e,t,e.extensionInfo,e.restrictedProperties,void 0,i),this.configurationContributors.push(e),this.registerJSONConfiguration(e)}))}validateAndRegisterProperties(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:3,r=arguments.length>5?arguments[5]:void 0;var a;o=s.Jp(e.scope)?o:e.scope;const l=e.properties;if(l)for(const d in l){const e=l[d];t&&k(d,e)?delete l[d]:(e.source=i,e.defaultDefaultValue=l[d].default,this.updatePropertyDefaultValue(d,e),y.test(d)?e.scope=void 0:(e.scope=s.Jp(e.scope)?o:e.scope,e.restricted=s.Jp(e.restricted)?!!(null===n||void 0===n?void 0:n.includes(d)):e.restricted),!l[d].hasOwnProperty("included")||l[d].included?(this.configurationProperties[d]=l[d],(null===(a=l[d].policy)||void 0===a?void 0:a.name)&&this.policyConfigurations.set(l[d].policy.name,d),!l[d].deprecationMessage&&l[d].markdownDeprecationMessage&&(l[d].deprecationMessage=l[d].markdownDeprecationMessage),r.add(d)):(this.excludedConfigurationProperties[d]=l[d],delete l[d]))}const h=e.allOf;if(h)for(const s of h)this.validateAndRegisterProperties(s,t,i,n,o,r)}getConfigurationProperties(){return this.configurationProperties}getPolicyConfigurations(){return this.policyConfigurations}registerJSONConfiguration(e){const t=e=>{const i=e.properties;if(i)for(const t in i)this.updateSchema(t,i[t]);const n=e.allOf;null===n||void 0===n||n.forEach(t)};t(e)}updateSchema(e,t){switch(c.properties[e]=t,t.scope){case 1:u.properties[e]=t;break;case 2:g.properties[e]=t;break;case 6:m.properties[e]=t;break;case 3:f.properties[e]=t;break;case 4:p.properties[e]=t;break;case 5:p.properties[e]=t,this.resourceLanguageSettingsSchema.properties[e]=t}}updateOverridePropertyPatternKey(){for(const e of this.overrideIdentifiers.values()){const t="[".concat(e,"]"),i={type:"object",description:r.NC("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:r.NC("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:_};this.updatePropertyDefaultValue(t,i),c.properties[t]=i,u.properties[t]=i,g.properties[t]=i,m.properties[t]=i,f.properties[t]=i,p.properties[t]=i}}registerOverridePropertyPatternKey(){const e={type:"object",description:r.NC("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:r.NC("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:_};c.patternProperties[w]=e,u.patternProperties[w]=e,g.patternProperties[w]=e,m.patternProperties[w]=e,f.patternProperties[w]=e,p.patternProperties[w]=e,this._onDidSchemaChange.fire()}updatePropertyDefaultValue(e,t){const i=this.configurationDefaultsOverrides.get(e);let n=null===i||void 0===i?void 0:i.value,o=null===i||void 0===i?void 0:i.source;s.o8(n)&&(n=t.defaultDefaultValue,o=void 0),s.o8(n)&&(n=function(e){switch(Array.isArray(e)?e[0]:e){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}(t.type)),t.default=n,t.defaultValueSource=o}};function k(e,t){var i,n,o,s;return e.trim()?y.test(e)?r.NC("config.property.languageDefault","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.",e):void 0!==L.getConfigurationProperties()[e]?r.NC("config.property.duplicate","Cannot register '{0}'. This property is already registered.",e):(null===(i=t.policy)||void 0===i?void 0:i.name)&&void 0!==L.getPolicyConfigurations().get(null===(n=t.policy)||void 0===n?void 0:n.name)?r.NC("config.policy.duplicate","Cannot register '{0}'. The associated policy {1} is already registered with {2}.",e,null===(o=t.policy)||void 0===o?void 0:o.name,L.getPolicyConfigurations().get(null===(s=t.policy)||void 0===s?void 0:s.name)):null:r.NC("config.property.empty","Cannot register an empty property")}h.B.add(d.Configuration,L)},24920:(e,t,i)=>{i.d(t,{cP:()=>I,Ao:()=>L,i6:()=>q,uy:()=>j,Fb:()=>k,K8:()=>Z});var n=i(21511),o=i(25085),s=i(85108),r=i(71721);function a(){switch(arguments.length){case 1:return(0,r.NC)("contextkey.scanner.hint.didYouMean1","Did you mean {0}?",arguments.length<=0?void 0:arguments[0]);case 2:return(0,r.NC)("contextkey.scanner.hint.didYouMean2","Did you mean {0} or {1}?",arguments.length<=0?void 0:arguments[0],arguments.length<=1?void 0:arguments[1]);case 3:return(0,r.NC)("contextkey.scanner.hint.didYouMean3","Did you mean {0}, {1} or {2}?",arguments.length<=0?void 0:arguments[0],arguments.length<=1?void 0:arguments[1],arguments.length<=2?void 0:arguments[2]);default:return}}const l=(0,r.NC)("contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote","Did you forget to open or close the quote?"),h=(0,r.NC)("contextkey.scanner.hint.didYouForgetToEscapeSlash","Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'.");class d{constructor(){this._input="",this._start=0,this._current=0,this._tokens=[],this._errors=[],this.stringRe=/[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(e){switch(e.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return e.isTripleEq?"===":"==";case 4:return e.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:case 8:return">=";case 9:return"=~";case 10:case 17:case 18:case 19:return e.lexeme;case 11:return"true";case 12:return"false";case 13:return"in";case 14:return"not";case 15:return"&&";case 16:return"||";case 20:return"EOF";default:throw(0,s.L6)("unhandled token type: ".concat(JSON.stringify(e),"; have you forgotten to add a case?"))}}reset(e){return this._input=e,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();){this._start=this._current;switch(this._advance()){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){const e=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:e})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){const e=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:e})}else this._match(126)?this._addToken(9):this._error(a("==","=~"));break;case 60:this._addToken(this._match(61)?6:5);break;case 62:this._addToken(this._match(61)?8:7);break;case 38:this._match(38)?this._addToken(15):this._error(a("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(a("||"));break;case 32:case 13:case 9:case 10:case 160:break;default:this._string()}}return this._start=this._current,this._addToken(20),Array.from(this._tokens)}_match(e){return!this._isAtEnd()&&(this._input.charCodeAt(this._current)===e&&(this._current++,!0))}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(e){this._tokens.push({type:e,offset:this._start})}_error(e){const t=this._start,i=this._input.substring(this._start,this._current),n={type:19,offset:this._start,lexeme:i};this._errors.push({offset:t,lexeme:i,additionalInfo:e}),this._tokens.push(n)}_string(){this.stringRe.lastIndex=this._start;const e=this.stringRe.exec(this._input);if(e){this._current=this._start+e[0].length;const t=this._input.substring(this._start,this._current),i=d._keywords.get(t);i?this._addToken(i):this._tokens.push({type:17,lexeme:t,offset:this._start})}}_quotedString(){for(;39!==this._peek()&&!this._isAtEnd();)this._advance();this._isAtEnd()?this._error(l):(this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1}))}_regex(){let e=this._current,t=!1,i=!1;for(;;){if(e>=this._input.length)return this._current=e,void this._error(h);const n=this._input.charCodeAt(e);if(t)t=!1;else{if(47===n&&!i){e++;break}91===n?i=!0:92===n?t=!0:93===n&&(i=!1)}e++}for(;e=this._input.length}}d._regexFlags=new Set(["i","g","s","m","y","u"].map((e=>e.charCodeAt(0)))),d._keywords=new Map([["not",14],["in",13],["false",12],["true",11]]);var c=i(34304);const u=new Map;u.set("false",!1),u.set("true",!0),u.set("isMac",n.dz),u.set("isLinux",n.IJ),u.set("isWindows",n.ED),u.set("isWeb",n.$L),u.set("isMacNative",n.dz&&!n.$L),u.set("isEdge",n.un),u.set("isFirefox",n.vU),u.set("isChrome",n.i7),u.set("isSafari",n.G6);const g=Object.prototype.hasOwnProperty,m={regexParsingWithErrorRecovery:!0},f=(0,r.NC)("contextkey.parser.error.emptyString","Empty context key expression"),p=(0,r.NC)("contextkey.parser.error.emptyString.hint","Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."),_=(0,r.NC)("contextkey.parser.error.noInAfterNot","'in' after 'not'."),v=(0,r.NC)("contextkey.parser.error.closingParenthesis","closing parenthesis ')'"),b=(0,r.NC)("contextkey.parser.error.unexpectedToken","Unexpected token"),C=(0,r.NC)("contextkey.parser.error.unexpectedToken.hint","Did you forget to put && or || before the token?"),w=(0,r.NC)("contextkey.parser.error.unexpectedEOF","Unexpected end of expression"),y=(0,r.NC)("contextkey.parser.error.unexpectedEOF.hint","Did you forget to put a context key?");class S{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;this._config=e,this._scanner=new d,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(e){if(""!==e){this._tokens=this._scanner.reset(e).scan(),this._current=0,this._parsingErrors=[];try{const e=this._expr();if(!this._isAtEnd()){const e=this._peek(),t=17===e.type?C:void 0;throw this._parsingErrors.push({message:b,offset:e.offset,lexeme:d.getLexeme(e),additionalInfo:t}),S._parseError}return e}catch(t){if(t!==S._parseError)throw t;return}}else this._parsingErrors.push({message:f,offset:0,lexeme:"",additionalInfo:p})}_expr(){return this._or()}_or(){const e=[this._and()];for(;this._matchOne(16);){const t=this._and();e.push(t)}return 1===e.length?e[0]:L.or(...e)}_and(){const e=[this._term()];for(;this._matchOne(15);){const t=this._term();e.push(t)}return 1===e.length?e[0]:L.and(...e)}_term(){if(this._matchOne(2)){const e=this._peek();switch(e.type){case 11:return this._advance(),N.INSTANCE;case 12:return this._advance(),x.INSTANCE;case 0:{this._advance();const e=this._expr();return this._consume(1,v),null===e||void 0===e?void 0:e.negate()}case 17:return this._advance(),R.create(e.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",e)}}return this._primary()}_primary(){const e=this._peek();switch(e.type){case 11:return this._advance(),L.true();case 12:return this._advance(),L.false();case 0:{this._advance();const e=this._expr();return this._consume(1,v),e}case 17:{const n=e.lexeme;if(this._advance(),this._matchOne(9)){const e=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),10!==e.type)throw this._errExpectedButGot("REGEX",e);const i=e.lexeme,o=i.lastIndexOf("/"),s=o===i.length-1?void 0:this._removeFlagsGY(i.substring(o+1));let r;try{r=new RegExp(i.substring(1,o),s)}catch(t){throw this._errExpectedButGot("REGEX",e)}return V.create(n,r)}switch(e.type){case 10:case 19:{const i=[e.lexeme];this._advance();let o=this._peek(),s=0;for(let t=0;t=0){const r=t.slice(n+1,o),a="i"===t[o+1]?"i":"";try{s=new RegExp(r,a)}catch(i){throw this._errExpectedButGot("REGEX",e)}}}if(null===s)throw this._errExpectedButGot("REGEX",e);return V.create(n,s)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,_);const e=this._value();return L.notIn(n,e)}switch(this._peek().type){case 3:{this._advance();const e=this._value();if(18===this._previous().type)return L.equals(n,e);switch(e){case"true":return L.has(n);case"false":return L.not(n);default:return L.equals(n,e)}}case 4:{this._advance();const e=this._value();if(18===this._previous().type)return L.notEquals(n,e);switch(e){case"true":return L.not(n);case"false":return L.has(n);default:return L.notEquals(n,e)}}case 5:return this._advance(),B.create(n,this._value());case 6:return this._advance(),z.create(n,this._value());case 7:return this._advance(),P.create(n,this._value());case 8:return this._advance(),F.create(n,this._value());case 13:return this._advance(),L.in(n,this._value());default:return L.has(n)}}case 20:throw this._parsingErrors.push({message:w,offset:e.offset,lexeme:"",additionalInfo:y}),S._parseError;default:throw this._errExpectedButGot("true | false | KEY \n\t| KEY '=~' REGEX \n\t| KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value",this._peek())}}_value(){const e=this._peek();switch(e.type){case 17:case 18:return this._advance(),e.lexeme;case 11:return this._advance(),"true";case 12:return this._advance(),"false";case 13:return this._advance(),"in";default:return""}}_removeFlagsGY(e){return e.replaceAll(this._flagsGYRe,"")}_previous(){return this._tokens[this._current-1]}_matchOne(e){return!!this._check(e)&&(this._advance(),!0)}_advance(){return this._isAtEnd()||this._current++,this._previous()}_consume(e,t){if(this._check(e))return this._advance();throw this._errExpectedButGot(t,this._peek())}_errExpectedButGot(e,t,i){const n=(0,r.NC)("contextkey.parser.error.expectedButGot","Expected: {0}\nReceived: '{1}'.",e,d.getLexeme(t)),o=t.offset,s=d.getLexeme(t);return this._parsingErrors.push({message:n,offset:o,lexeme:s,additionalInfo:i}),S._parseError}_check(e){return this._peek().type===e}_peek(){return this._tokens[this._current]}_isAtEnd(){return 20===this._peek().type}}S._parseError=new Error;class L{static false(){return N.INSTANCE}static true(){return x.INSTANCE}static has(e){return E.create(e)}static equals(e,t){return I.create(e,t)}static notEquals(e,t){return A.create(e,t)}static regex(e,t){return V.create(e,t)}static in(e,t){return T.create(e,t)}static notIn(e,t){return M.create(e,t)}static not(e){return R.create(e)}static and(){for(var e=arguments.length,t=new Array(e),i=0;i1&&void 0!==arguments[1]?arguments[1]:null;const i=u.get(e);return"boolean"===typeof i?i?x.INSTANCE:N.INSTANCE:new E(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=2}cmp(e){return e.type!==this.type?this.type-e.type:G(this.key,e.key)}equals(e){return e.type===this.type&&this.key===e.key}substituteConstants(){const e=u.get(this.key);return"boolean"===typeof e?e?x.INSTANCE:N.INSTANCE:this}evaluate(e){return!!e.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return this.negated||(this.negated=R.create(this.key,this)),this.negated}}class I{static create(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if("boolean"===typeof t)return t?E.create(e,i):R.create(e,i);const n=u.get(e);if("boolean"===typeof n){return t===(n?"true":"false")?x.INSTANCE:N.INSTANCE}return new I(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=4}cmp(e){return e.type!==this.type?this.type-e.type:Q(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){const e=u.get(this.key);if("boolean"===typeof e){const t=e?"true":"false";return this.value===t?x.INSTANCE:N.INSTANCE}return this}evaluate(e){return e.getValue(this.key)==this.value}serialize(){return"".concat(this.key," == '").concat(this.value,"'")}keys(){return[this.key]}negate(){return this.negated||(this.negated=A.create(this.key,this.value,this)),this.negated}}class T{static create(e,t){return new T(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=10,this.negated=null}cmp(e){return e.type!==this.type?this.type-e.type:Q(this.key,this.valueKey,e.key,e.valueKey)}equals(e){return e.type===this.type&&(this.key===e.key&&this.valueKey===e.valueKey)}substituteConstants(){return this}evaluate(e){const t=e.getValue(this.valueKey),i=e.getValue(this.key);return Array.isArray(t)?t.includes(i):"string"===typeof i&&"object"===typeof t&&null!==t&&g.call(t,i)}serialize(){return"".concat(this.key," in '").concat(this.valueKey,"'")}keys(){return[this.key,this.valueKey]}negate(){return this.negated||(this.negated=M.create(this.key,this.valueKey)),this.negated}}class M{static create(e,t){return new M(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=11,this._negated=T.create(e,t)}cmp(e){return e.type!==this.type?this.type-e.type:this._negated.cmp(e._negated)}equals(e){return e.type===this.type&&this._negated.equals(e._negated)}substituteConstants(){return this}evaluate(e){return!this._negated.evaluate(e)}serialize(){return"".concat(this.key," not in '").concat(this.valueKey,"'")}keys(){return this._negated.keys()}negate(){return this._negated}}class A{static create(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if("boolean"===typeof t)return t?R.create(e,i):E.create(e,i);const n=u.get(e);if("boolean"===typeof n){return t===(n?"true":"false")?N.INSTANCE:x.INSTANCE}return new A(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=5}cmp(e){return e.type!==this.type?this.type-e.type:Q(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){const e=u.get(this.key);if("boolean"===typeof e){const t=e?"true":"false";return this.value===t?N.INSTANCE:x.INSTANCE}return this}evaluate(e){return e.getValue(this.key)!=this.value}serialize(){return"".concat(this.key," != '").concat(this.value,"'")}keys(){return[this.key]}negate(){return this.negated||(this.negated=I.create(this.key,this.value,this)),this.negated}}class R{static create(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const i=u.get(e);return"boolean"===typeof i?i?N.INSTANCE:x.INSTANCE:new R(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=3}cmp(e){return e.type!==this.type?this.type-e.type:G(this.key,e.key)}equals(e){return e.type===this.type&&this.key===e.key}substituteConstants(){const e=u.get(this.key);return"boolean"===typeof e?e?N.INSTANCE:x.INSTANCE:this}evaluate(e){return!e.getValue(this.key)}serialize(){return"!".concat(this.key)}keys(){return[this.key]}negate(){return this.negated||(this.negated=E.create(this.key,this)),this.negated}}function O(e,t){if("string"===typeof e){const t=parseFloat(e);isNaN(t)||(e=t)}return"string"===typeof e||"number"===typeof e?t(e):N.INSTANCE}class P{static create(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return O(t,(t=>new P(e,t,i)))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=12}cmp(e){return e.type!==this.type?this.type-e.type:Q(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){return this}evaluate(e){return"string"!==typeof this.value&&parseFloat(e.getValue(this.key))>this.value}serialize(){return"".concat(this.key," > ").concat(this.value)}keys(){return[this.key]}negate(){return this.negated||(this.negated=z.create(this.key,this.value,this)),this.negated}}class F{static create(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return O(t,(t=>new F(e,t,i)))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=13}cmp(e){return e.type!==this.type?this.type-e.type:Q(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){return this}evaluate(e){return"string"!==typeof this.value&&parseFloat(e.getValue(this.key))>=this.value}serialize(){return"".concat(this.key," >= ").concat(this.value)}keys(){return[this.key]}negate(){return this.negated||(this.negated=B.create(this.key,this.value,this)),this.negated}}class B{static create(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return O(t,(t=>new B(e,t,i)))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=14}cmp(e){return e.type!==this.type?this.type-e.type:Q(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){return this}evaluate(e){return"string"!==typeof this.value&&parseFloat(e.getValue(this.key))2&&void 0!==arguments[2]?arguments[2]:null;return O(t,(t=>new z(e,t,i)))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=15}cmp(e){return e.type!==this.type?this.type-e.type:Q(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){return this}evaluate(e){return"string"!==typeof this.value&&parseFloat(e.getValue(this.key))<=this.value}serialize(){return"".concat(this.key," <= ").concat(this.value)}keys(){return[this.key]}negate(){return this.negated||(this.negated=P.create(this.key,this.value,this)),this.negated}}class V{static create(e,t){return new V(e,t)}constructor(e,t){this.key=e,this.regexp=t,this.type=7,this.negated=null}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.keye.key)return 1;const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return ti?1:0}equals(e){if(e.type===this.type){const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return this.key===e.key&&t===i}return!1}substituteConstants(){return this}evaluate(e){const t=e.getValue(this.key);return!!this.regexp&&this.regexp.test(t)}serialize(){const e=this.regexp?"/".concat(this.regexp.source,"/").concat(this.regexp.flags):"/invalid/";return"".concat(this.key," =~ ").concat(e)}keys(){return[this.key]}negate(){return this.negated||(this.negated=W.create(this)),this.negated}}class W{static create(e){return new W(e)}constructor(e){this._actual=e,this.type=8}cmp(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}equals(e){return e.type===this.type&&this._actual.equals(e._actual)}substituteConstants(){return this}evaluate(e){return!this._actual.evaluate(e)}serialize(){return"!(".concat(this._actual.serialize(),")")}keys(){return this._actual.keys()}negate(){return this._actual}}function H(e){let t=null;for(let i=0,n=e.length;ie.expr.length)return 1;for(let t=0,i=this.expr.length;t1;){const e=n[n.length-1];if(9!==e.type)break;n.pop();const t=n.pop(),o=0===n.length,s=U.create(e.expr.map((e=>K.create([e,t],null,i))),null,o);s&&(n.push(s),n.sort(D))}if(1===n.length)return n[0];if(i){for(let e=0;ee.serialize())).join(" && ")}keys(){const e=[];for(const t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){const e=[];for(const t of this.expr)e.push(t.negate());this.negated=U.create(e,this,!0)}return this.negated}}class U{static create(e,t,i){return U._normalizeArr(e,t,i)}constructor(e,t){this.expr=e,this.negated=t,this.type=9}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.lengthe.expr.length)return 1;for(let t=0,i=this.expr.length;te.serialize())).join(" || ")}keys(){const e=[];for(const t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){const e=[];for(const t of this.expr)e.push(t.negate());for(;e.length>1;){const t=e.shift(),i=e.shift(),n=[];for(const e of $(t))for(const t of $(i))n.push(K.create([e,t],null,!1));e.unshift(U.create(n,null,!1))}this.negated=U.create(e,this,!0)}return this.negated}}class j extends E{static all(){return j._info.values()}constructor(e,t,i){super(e,null),this._defaultValue=t,"object"===typeof i?j._info.push({...i,key:e}):!0!==i&&j._info.push({key:e,description:i,type:null!==t&&void 0!==t?typeof t:void 0})}bindTo(e){return e.createKey(this.key,this._defaultValue)}getValue(e){return e.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(e){return I.create(this.key,e)}}j._info=[];const q=(0,c.yh)("contextKeyService");function G(e,t){return et?1:0}function Q(e,t,i,n){return ei?1:tn?1:0}function Z(e,t){if(0===e.type||1===t.type)return!0;if(9===e.type)return 9===t.type&&Y(e.expr,t.expr);if(9===t.type){for(const i of t.expr)if(Z(e,i))return!0;return!1}if(6===e.type){if(6===t.type)return Y(t.expr,e.expr);for(const i of e.expr)if(Z(i,t))return!0;return!1}return e.equals(t)}function Y(e,t){let i=0,n=0;for(;i{i.d(t,{Pf:()=>a,Ul:()=>h,cv:()=>r,d0:()=>l});var n=i(21511),o=i(71721),s=i(24920);new s.uy("isMac",n.dz,(0,o.NC)("isMac","Whether the operating system is macOS")),new s.uy("isLinux",n.IJ,(0,o.NC)("isLinux","Whether the operating system is Linux"));const r=new s.uy("isWindows",n.ED,(0,o.NC)("isWindows","Whether the operating system is Windows")),a=new s.uy("isWeb",n.$L,(0,o.NC)("isWeb","Whether the platform is a web browser")),l=(new s.uy("isMacNative",n.dz&&!n.$L,(0,o.NC)("isMacNative","Whether the operating system is macOS on a non-browser platform")),new s.uy("isIOS",n.gn,(0,o.NC)("isIOS","Whether the operating system is iOS")),new s.uy("isMobile",n.tq,(0,o.NC)("isMobile","Whether the platform is a mobile web browser")),new s.uy("isDevelopment",!1,!0),new s.uy("productQualityType","",(0,o.NC)("productQualityType","Quality type of VS Code")),"inputFocus"),h=new s.uy(l,!1,(0,o.NC)("inputFocus","Whether keyboard focus is inside an input box"))},58868:(e,t,i)=>{i.d(t,{i:()=>s,u:()=>o});var n=i(34304);const o=(0,n.yh)("contextViewService"),s=(0,n.yh)("contextMenuService")},78025:(e,t,i)=>{i.d(t,{S:()=>n});const n=(0,i(34304).yh)("dialogService")},33473:(e,t,i)=>{i.d(t,{Y:()=>n});const n=(0,i(34304).yh)("environmentService")},8695:(e,t,i)=>{i.d(t,{Bs:()=>h,mQ:()=>d});var n=i(34304),o=i(89599),s=i(25195),r=i(85714),a=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},l=function(e,t){return function(i,n){t(i,n,e)}};const h=(0,n.yh)("hoverService");let d=class extends o.JT{get delay(){return this.isInstantlyHovering()?0:this._delay}constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3?arguments[3]:void 0,s=arguments.length>4?arguments[4]:void 0;super(),this.placement=e,this.instantHover=t,this.overrideOptions=i,this.configurationService=n,this.hoverService=s,this.lastHoverHideTime=0,this.timeLimit=200,this.hoverDisposables=this._register(new o.SL),this._delay=this.configurationService.getValue("workbench.hover.delay"),this._register(this.configurationService.onDidChangeConfiguration((e=>{e.affectsConfiguration("workbench.hover.delay")&&(this._delay=this.configurationService.getValue("workbench.hover.delay"))})))}showHover(e,t){const i="function"===typeof this.overrideOptions?this.overrideOptions(e,t):this.overrideOptions;this.hoverDisposables.clear();const n=e.target instanceof HTMLElement?[e.target]:e.target.targetElements;for(const s of n)this.hoverDisposables.add((0,r.mu)(s,"keydown",(e=>{e.equals(9)&&this.hoverService.hideHover()})));const o=e.content instanceof HTMLElement?void 0:e.content.toString();return this.hoverService.showHover({...e,...i,persistence:{hideOnKeyDown:!0,...i.persistence},id:o,appearance:{...e.appearance,compact:!0,skipFadeInAnimation:this.isInstantlyHovering(),...i.appearance}},t)}isInstantlyHovering(){return this.instantHover&&Date.now()-this.lastHoverHideTime{i.d(t,{M:()=>n});class n{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.ctor=e,this.staticArguments=t,this.supportsDelayedInstantiation=i}}},43837:(e,t,i)=>{i.d(t,{d:()=>r,z:()=>s});var n=i(58834);const o=[];function s(e,t,i){t instanceof n.M||(t=new n.M(t,[],Boolean(i))),o.push([e,t])}function r(){return o}},34304:(e,t,i)=>{var n;i.d(t,{I8:()=>n,TG:()=>o,yh:()=>s}),function(e){e.serviceIds=new Map,e.DI_TARGET="$di$target",e.DI_DEPENDENCIES="$di$dependencies",e.getServiceDependencies=function(t){return t[e.DI_DEPENDENCIES]||[]}}(n||(n={}));const o=s("instantiationService");function s(e){if(n.serviceIds.has(e))return n.serviceIds.get(e);const t=function(e,i,o){if(3!==arguments.length)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");!function(e,t,i){t[n.DI_TARGET]===t?t[n.DI_DEPENDENCIES].push({id:e,index:i}):(t[n.DI_DEPENDENCIES]=[{id:e,index:i}],t[n.DI_TARGET]=t)}(t,e,o)};return t.toString=()=>e,n.serviceIds.set(e,t),t}},54731:(e,t,i)=>{i.d(t,{y:()=>n});class n{constructor(){this._entries=new Map;for(var e=arguments.length,t=new Array(e),i=0;i{i.d(t,{I:()=>s});var n=i(24219),o=i(70311);const s={JSONContribution:"base.contributions.json"};const r=new class{constructor(){this._onDidChangeSchema=new n.Q5,this.schemasById={}}registerSchema(e,t){var i;this.schemasById[(i=e,i.length>0&&"#"===i.charAt(i.length-1)?i.substring(0,i.length-1):i)]=t,this._onDidChangeSchema.fire(e)}notifySchemaChanged(e){this._onDidChangeSchema.fire(e)}};o.B.add(s.JSONContribution,r)},46765:(e,t,i)=>{i.d(t,{d:()=>n});const n=(0,i(34304).yh)("keybindingService")},86728:(e,t,i)=>{i.d(t,{W:()=>d});var n=i(97162),o=i(21511),s=i(60982),r=i(70311),a=i(89599),l=i(44713);class h{constructor(){this._coreKeybindings=new l.S,this._extensionKeybindings=[],this._cachedMergedKeybindings=null}static bindToCurrentPlatform(e){if(1===o.OS){if(e&&e.win)return e.win}else if(2===o.OS){if(e&&e.mac)return e.mac}else if(e&&e.linux)return e.linux;return e}registerKeybindingRule(e){const t=h.bindToCurrentPlatform(e),i=new a.SL;if(t&&t.primary){const s=(0,n.Z9)(t.primary,o.OS);s&&i.add(this._registerDefaultKeybinding(s,e.id,e.args,e.weight,0,e.when))}if(t&&Array.isArray(t.secondary))for(let s=0,r=t.secondary.length;s{r(),this._cachedMergedKeybindings=null}))}getDefaultKeybindings(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=Array.from(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(c)),this._cachedMergedKeybindings.slice(0)}}const d=new h;function c(e,t){if(e.weight1!==t.weight1)return e.weight1-t.weight1;if(e.command&&t.command){if(e.commandt.command)return 1}return e.weight2-t.weight2}r.B.add("platform.keybindingsRegistry",d)},82611:(e,t,i)=>{i.d(t,{e:()=>n});const n=(0,i(34304).yh)("labelService")},51927:(e,t,i)=>{i.d(t,{Lw:()=>be,XN:()=>Ce,ls:()=>pt,CQ:()=>ke,PF:()=>gt,PS:()=>Te,uJ:()=>Ae});var n=i(85714),o=i(75629),s=i(16113),r=i(24219),a=i(89599),l=(i(71619),i(53430));class h{get templateId(){return this.renderer.templateId}constructor(e,t){this.renderer=e,this.modelProvider=t}renderTemplate(e){return{data:this.renderer.renderTemplate(e),disposable:a.JT.None}}renderElement(e,t,i,n){var o;if(null===(o=i.disposable)||void 0===o||o.dispose(),!i.data)return;const r=this.modelProvider();if(r.isResolved(e))return this.renderer.renderElement(r.get(e),e,i.data,n);const a=new s.A,l=r.resolve(e,a.token);i.disposable={dispose:()=>a.cancel()},this.renderer.renderPlaceholder(e,i.data),l.then((t=>this.renderer.renderElement(t,e,i.data,n)))}disposeTemplate(e){e.disposable&&(e.disposable.dispose(),e.disposable=void 0),e.data&&(this.renderer.disposeTemplate(e.data),e.data=void 0)}}class d{constructor(e,t){this.modelProvider=e,this.accessibilityProvider=t}getWidgetAriaLabel(){return this.accessibilityProvider.getWidgetAriaLabel()}getAriaLabel(e){const t=this.modelProvider();return t.isResolved(e)?this.accessibilityProvider.getAriaLabel(t.get(e)):null}}class c{constructor(e,t,i,n){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};const s=()=>this.model,r=n.map((e=>new h(e,s)));this.list=new l.aV(e,t,i,r,function(e,t){return{...t,accessibilityProvider:t.accessibilityProvider&&new d(e,t.accessibilityProvider)}}(s,o))}updateOptions(e){this.list.updateOptions(e)}getHTMLElement(){return this.list.getHTMLElement()}get onDidFocus(){return this.list.onDidFocus}get widget(){return this.list}get onDidDispose(){return this.list.onDidDispose}get onMouseDblClick(){return r.ju.map(this.list.onMouseDblClick,(e=>{let{element:t,index:i,browserEvent:n}=e;return{element:void 0===t?void 0:this._model.get(t),index:i,browserEvent:n}}))}get onPointer(){return r.ju.map(this.list.onPointer,(e=>{let{element:t,index:i,browserEvent:n}=e;return{element:void 0===t?void 0:this._model.get(t),index:i,browserEvent:n}}))}get onDidChangeSelection(){return r.ju.map(this.list.onDidChangeSelection,(e=>{let{elements:t,indexes:i,browserEvent:n}=e;return{elements:t.map((e=>this._model.get(e))),indexes:i,browserEvent:n}}))}get model(){return this._model}set model(e){this._model=e,this.list.splice(0,this.list.length,(0,o.w6)(e.length))}getFocus(){return this.list.getFocus()}getSelection(){return this.list.getSelection()}getSelectedElements(){return this.getSelection().map((e=>this.model.get(e)))}style(e){this.list.style(e)}dispose(){this.list.dispose()}}var u=i(14561),g=i(34392),m=i(45660);class f{constructor(e,t,i){this.columns=e,this.getColumnSize=i,this.templateId=f.TemplateId,this.renderedTemplates=new Set;const n=new Map(t.map((e=>[e.templateId,e])));this.renderers=[];for(const o of e){const e=n.get(o.templateId);if(!e)throw new Error("Table cell renderer for template id ".concat(o.templateId," not found."));this.renderers.push(e)}}renderTemplate(e){const t=(0,n.R3)(e,(0,n.$)(".monaco-table-tr")),i=[],o=[];for(let r=0;rthis.disposables.add(new p(e,t)))),c={size:d.reduce(((e,t)=>e+t.column.weight),0),views:d.map((e=>({size:e.column.weight,view:e})))};this.splitview=this.disposables.add(new m.z(this.domNode,{orientation:1,scrollbarVisibility:2,getSashOrthogonalSize:()=>this.cachedHeight,descriptor:c})),this.splitview.el.style.height="".concat(i.headerRowHeight,"px"),this.splitview.el.style.lineHeight="".concat(i.headerRowHeight,"px");const u=new f(o,s,(e=>this.splitview.getViewSize(e)));var g;this.list=this.disposables.add(new l.aV(e,this.domNode,(g=i,{getHeight:e=>g.getHeight(e),getTemplateId:()=>f.TemplateId}),[u],h)),r.ju.any(...d.map((e=>e.onDidLayout)))((e=>{let[t,i]=e;return u.layoutColumn(t,i)}),null,this.disposables),this.splitview.onDidSashReset((e=>{const t=o.reduce(((e,t)=>e+t.weight),0),i=o[e].weight/t*this.cachedWidth;this.splitview.resizeView(e,i)}),null,this.disposables),this.styleElement=(0,n.dS)(this.domNode),this.style(l.uZ)}updateOptions(e){this.list.updateOptions(e)}splice(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];this.list.splice(e,t,i)}getHTMLElement(){return this.domNode}style(e){const t=[];t.push(".monaco-table.".concat(this.domId," > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\ttop: ").concat(this.virtualDelegate.headerRowHeight+1,"px;\n\t\t\theight: calc(100% - ").concat(this.virtualDelegate.headerRowHeight,"px);\n\t\t}")),this.styleElement.textContent=t.join("\n"),this.list.style(e)}getSelectedElements(){return this.list.getSelectedElements()}getSelection(){return this.list.getSelection()}getFocus(){return this.list.getFocus()}dispose(){this.disposables.dispose()}}_.InstanceCount=0;var v=i(83438),b=i(84931),C=i(18416),w=i(61746),y=i(36952);class S{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.user=e,this.rootRef=null,this.nodes=new Map,this.nodesByIdentity=new Map,this.model=new C.X(e,t,null,i),this.onDidSplice=this.model.onDidSplice,this.onDidChangeCollapseState=this.model.onDidChangeCollapseState,this.onDidChangeRenderNodeCount=this.model.onDidChangeRenderNodeCount,i.sorter&&(this.sorter={compare:(e,t)=>i.sorter.compare(e.element,t.element)}),this.identityProvider=i.identityProvider}setChildren(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:y.$.empty(),i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=this.getElementLocation(e);this._setChildren(n,this.preserveCollapseState(t),i)}_setChildren(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:y.$.empty(),i=arguments.length>2?arguments[2]:void 0;const n=new Set,o=new Set;this.model.splice([...e,0],Number.MAX_VALUE,t,{...i,onDidCreateNode:e=>{var t;if(null===e.element)return;const s=e;if(n.add(s.element),this.nodes.set(s.element,s),this.identityProvider){const e=this.identityProvider.getId(s.element).toString();o.add(e),this.nodesByIdentity.set(e,s)}null===(t=i.onDidCreateNode)||void 0===t||t.call(i,s)},onDidDeleteNode:e=>{var t;if(null===e.element)return;const s=e;if(n.has(s.element)||this.nodes.delete(s.element),this.identityProvider){const e=this.identityProvider.getId(s.element).toString();o.has(e)||this.nodesByIdentity.delete(e)}null===(t=i.onDidDeleteNode)||void 0===t||t.call(i,s)}})}preserveCollapseState(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y.$.empty();return this.sorter&&(e=[...e].sort(this.sorter.compare.bind(this.sorter))),y.$.map(e,(e=>{let t=this.nodes.get(e.element);if(!t&&this.identityProvider){const i=this.identityProvider.getId(e.element).toString();t=this.nodesByIdentity.get(i)}if(!t){let t;return t="undefined"===typeof e.collapsed?void 0:e.collapsed===w.kn.Collapsed||e.collapsed===w.kn.PreserveOrCollapsed||e.collapsed!==w.kn.Expanded&&e.collapsed!==w.kn.PreserveOrExpanded&&Boolean(e.collapsed),{...e,children:this.preserveCollapseState(e.children),collapsed:t}}const i="boolean"===typeof e.collapsible?e.collapsible:t.collapsible;let n;return n="undefined"===typeof e.collapsed||e.collapsed===w.kn.PreserveOrCollapsed||e.collapsed===w.kn.PreserveOrExpanded?t.collapsed:e.collapsed===w.kn.Collapsed||e.collapsed!==w.kn.Expanded&&Boolean(e.collapsed),{...e,collapsible:i,collapsed:n,children:this.preserveCollapseState(e.children)}}))}rerender(e){const t=this.getElementLocation(e);this.model.rerender(t)}getFirstElementChild(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=this.getElementLocation(e);return this.model.getFirstElementChild(t)}has(e){return this.nodes.has(e)}getListIndex(e){const t=this.getElementLocation(e);return this.model.getListIndex(t)}getListRenderCount(e){const t=this.getElementLocation(e);return this.model.getListRenderCount(t)}isCollapsible(e){const t=this.getElementLocation(e);return this.model.isCollapsible(t)}setCollapsible(e,t){const i=this.getElementLocation(e);return this.model.setCollapsible(i,t)}isCollapsed(e){const t=this.getElementLocation(e);return this.model.isCollapsed(t)}setCollapsed(e,t,i){const n=this.getElementLocation(e);return this.model.setCollapsed(n,t,i)}expandTo(e){const t=this.getElementLocation(e);this.model.expandTo(t)}refilter(){this.model.refilter()}getNode(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(null===e)return this.model.getNode(this.model.rootRef);const t=this.nodes.get(e);if(!t)throw new w.ac(this.user,"Tree element not found: ".concat(e));return t}getNodeLocation(e){return e.element}getParentNodeLocation(e){if(null===e)throw new w.ac(this.user,"Invalid getParentNodeLocation call");const t=this.nodes.get(e);if(!t)throw new w.ac(this.user,"Tree element not found: ".concat(e));const i=this.model.getNodeLocation(t),n=this.model.getParentNodeLocation(i);return this.model.getNode(n).element}getElementLocation(e){if(null===e)return[];const t=this.nodes.get(e);if(!t)throw new w.ac(this.user,"Tree element not found: ".concat(e));return this.model.getNodeLocation(t)}}function L(e){return{element:{elements:[e.element],incompressible:e.incompressible||!1},children:y.$.map(y.$.from(e.children),L),collapsible:e.collapsible,collapsed:e.collapsed}}function k(e){const t=[e.element],i=e.incompressible||!1;let n,o;for(;[o,n]=y.$.consume(y.$.from(e.children),2),1===o.length&&!o[0].incompressible;)e=o[0],t.push(e.element);return{element:{elements:t,incompressible:i},children:y.$.map(y.$.concat(o,n),k),collapsible:e.collapsible,collapsed:e.collapsed}}function D(e){let t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t=iD(e,0))),0===i&&e.element.incompressible?{element:e.element.elements[i],children:t,incompressible:!0,collapsible:e.collapsible,collapsed:e.collapsed}:{element:e.element.elements[i],children:t,collapsible:e.collapsible,collapsed:e.collapsed}}function N(e){return D(e,0)}function x(e,t,i){return e.element===t?{...e,children:i}:{...e,children:y.$.map(y.$.from(e.children),(e=>x(e,t,i)))}}class E{get onDidSplice(){return this.model.onDidSplice}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get onDidChangeRenderNodeCount(){return this.model.onDidChangeRenderNodeCount}constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.user=e,this.rootRef=null,this.nodes=new Map,this.model=new S(e,t,i),this.enabled="undefined"===typeof i.compressionEnabled||i.compressionEnabled,this.identityProvider=i.identityProvider}setChildren(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:y.$.empty(),i=arguments.length>2?arguments[2]:void 0;const n=i.diffIdentityProvider&&(s=i.diffIdentityProvider,{getId:e=>e.elements.map((e=>s.getId(e).toString())).join("\0")});var s;if(null===e){const e=y.$.map(t,this.enabled?k:L);return void this._setChildren(null,e,{diffIdentityProvider:n,diffDepth:1/0})}const r=this.nodes.get(e);if(!r)throw new w.ac(this.user,"Unknown compressed tree node");const a=this.model.getNode(r),l=this.model.getParentNodeLocation(r),h=this.model.getNode(l),d=x(N(a),e,t),c=(this.enabled?k:L)(d),u=i.diffIdentityProvider?(e,t)=>i.diffIdentityProvider.getId(e)===i.diffIdentityProvider.getId(t):void 0;if((0,o.fS)(c.element.elements,a.element.elements,u))return void this._setChildren(r,c.children||y.$.empty(),{diffIdentityProvider:n,diffDepth:1});const g=h.children.map((e=>e===a?c:e));this._setChildren(h.element,g,{diffIdentityProvider:n,diffDepth:a.depth-h.depth})}isCompressionEnabled(){return this.enabled}setCompressionEnabled(e){if(e===this.enabled)return;this.enabled=e;const t=this.model.getNode().children,i=y.$.map(t,N),n=y.$.map(i,e?k:L);this._setChildren(null,n,{diffIdentityProvider:this.identityProvider,diffDepth:1/0})}_setChildren(e,t,i){const n=new Set;this.model.setChildren(e,t,{...i,onDidCreateNode:e=>{for(const t of e.element.elements)n.add(t),this.nodes.set(t,e.element)},onDidDeleteNode:e=>{for(const t of e.element.elements)n.has(t)||this.nodes.delete(t)}})}has(e){return this.nodes.has(e)}getListIndex(e){const t=this.getCompressedNode(e);return this.model.getListIndex(t)}getListRenderCount(e){const t=this.getCompressedNode(e);return this.model.getListRenderCount(t)}getNode(e){if("undefined"===typeof e)return this.model.getNode();const t=this.getCompressedNode(e);return this.model.getNode(t)}getNodeLocation(e){const t=this.model.getNodeLocation(e);return null===t?null:t.elements[t.elements.length-1]}getParentNodeLocation(e){const t=this.getCompressedNode(e),i=this.model.getParentNodeLocation(t);return null===i?null:i.elements[i.elements.length-1]}getFirstElementChild(e){const t=this.getCompressedNode(e);return this.model.getFirstElementChild(t)}isCollapsible(e){const t=this.getCompressedNode(e);return this.model.isCollapsible(t)}setCollapsible(e,t){const i=this.getCompressedNode(e);return this.model.setCollapsible(i,t)}isCollapsed(e){const t=this.getCompressedNode(e);return this.model.isCollapsed(t)}setCollapsed(e,t,i){const n=this.getCompressedNode(e);return this.model.setCollapsed(n,t,i)}expandTo(e){const t=this.getCompressedNode(e);this.model.expandTo(t)}rerender(e){const t=this.getCompressedNode(e);this.model.rerender(t)}refilter(){this.model.refilter()}getCompressedNode(e){if(null===e)return null;const t=this.nodes.get(e);if(!t)throw new w.ac(this.user,"Tree element not found: ".concat(e));return t}}const I=e=>e[e.length-1];class T{get element(){return null===this.node.element?null:this.unwrapper(this.node.element)}get children(){return this.node.children.map((e=>new T(this.unwrapper,e)))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e,t){this.unwrapper=e,this.node=t}}class M{get onDidSplice(){return r.ju.map(this.model.onDidSplice,(e=>{let{insertedNodes:t,deletedNodes:i}=e;return{insertedNodes:t.map((e=>this.nodeMapper.map(e))),deletedNodes:i.map((e=>this.nodeMapper.map(e)))}}))}get onDidChangeCollapseState(){return r.ju.map(this.model.onDidChangeCollapseState,(e=>{let{node:t,deep:i}=e;return{node:this.nodeMapper.map(t),deep:i}}))}get onDidChangeRenderNodeCount(){return r.ju.map(this.model.onDidChangeRenderNodeCount,(e=>this.nodeMapper.map(e)))}constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.rootRef=null,this.elementMapper=i.elementMapper||I;const n=e=>this.elementMapper(e.elements);this.nodeMapper=new w.VA((e=>new T(n,e))),this.model=new E(e,function(e,t){return{splice(i,n,o){t.splice(i,n,o.map((t=>e.map(t))))},updateElementHeight(e,i){t.updateElementHeight(e,i)}}}(this.nodeMapper,t),function(e,t){return{...t,identityProvider:t.identityProvider&&{getId:i=>t.identityProvider.getId(e(i))},sorter:t.sorter&&{compare:(e,i)=>t.sorter.compare(e.elements[0],i.elements[0])},filter:t.filter&&{filter:(i,n)=>t.filter.filter(e(i),n)}}}(n,i))}setChildren(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:y.$.empty(),i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.model.setChildren(e,t,i)}isCompressionEnabled(){return this.model.isCompressionEnabled()}setCompressionEnabled(e){this.model.setCompressionEnabled(e)}has(e){return this.model.has(e)}getListIndex(e){return this.model.getListIndex(e)}getListRenderCount(e){return this.model.getListRenderCount(e)}getNode(e){return this.nodeMapper.map(this.model.getNode(e))}getNodeLocation(e){return e.element}getParentNodeLocation(e){return this.model.getParentNodeLocation(e)}getFirstElementChild(e){const t=this.model.getFirstElementChild(e);return null===t||"undefined"===typeof t?t:this.elementMapper(t.elements)}isCollapsible(e){return this.model.isCollapsible(e)}setCollapsible(e,t){return this.model.setCollapsible(e,t)}isCollapsed(e){return this.model.isCollapsed(e)}setCollapsed(e,t,i){return this.model.setCollapsed(e,t,i)}expandTo(e){return this.model.expandTo(e)}rerender(e){return this.model.rerender(e)}refilter(){return this.model.refilter()}getCompressedTreeNode(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return this.model.getNode(e)}}var A=i(30333),R=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r};class O extends v.CH{get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}constructor(e,t,i,n){super(e,t,i,n,arguments.length>4&&void 0!==arguments[4]?arguments[4]:{}),this.user=e}setChildren(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:y.$.empty(),i=arguments.length>2?arguments[2]:void 0;this.model.setChildren(e,t,i)}rerender(e){void 0!==e?this.model.rerender(e):this.view.rerender()}hasElement(e){return this.model.has(e)}createModel(e,t,i){return new S(e,t,i)}}class P{get compressedTreeNodeProvider(){return this._compressedTreeNodeProvider()}constructor(e,t,i){this._compressedTreeNodeProvider=e,this.stickyScrollDelegate=t,this.renderer=i,this.templateId=i.templateId,i.onDidChangeTwistieState&&(this.onDidChangeTwistieState=i.onDidChangeTwistieState)}renderTemplate(e){return{compressedTreeNode:void 0,data:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){let o=this.stickyScrollDelegate.getCompressedNode(e);o||(o=this.compressedTreeNodeProvider.getCompressedTreeNode(e.element)),1===o.element.elements.length?(i.compressedTreeNode=void 0,this.renderer.renderElement(e,t,i.data,n)):(i.compressedTreeNode=o,this.renderer.renderCompressedElements(o,t,i.data,n))}disposeElement(e,t,i,n){var o,s,r,a;i.compressedTreeNode?null===(s=(o=this.renderer).disposeCompressedElements)||void 0===s||s.call(o,i.compressedTreeNode,t,i.data,n):null===(a=(r=this.renderer).disposeElement)||void 0===a||a.call(r,e,t,i.data,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.data)}renderTwistie(e,t){return!!this.renderer.renderTwistie&&this.renderer.renderTwistie(e,t)}}R([A.H],P.prototype,"compressedTreeNodeProvider",null);class F{constructor(e){this.modelProvider=e,this.compressedStickyNodes=new Map}getCompressedNode(e){return this.compressedStickyNodes.get(e)}constrainStickyScrollNodes(e,t,i){if(this.compressedStickyNodes.clear(),0===e.length)return[];for(let n=0;ni||n>=t-1&&t4&&void 0!==arguments[4]?arguments[4]:{};const s=()=>this,r=new F((()=>this.model));super(e,t,i,n.map((e=>new P(s,r,e))),{...B(s,o),stickyScrollDelegate:r})}setChildren(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:y.$.empty(),i=arguments.length>2?arguments[2]:void 0;this.model.setChildren(e,t,i)}createModel(e,t,i){return new M(e,t,i)}updateOptions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super.updateOptions(e),"undefined"!==typeof e.compressionEnabled&&this.model.setCompressionEnabled(e.compressionEnabled)}getCompressedTreeNode(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return this.model.getCompressedTreeNode(e)}}var V=i(60282),W=i(62974),H=i(62502),K=i(85108),U=i(63686);function j(e){return{...e,children:[],refreshPromise:void 0,stale:!0,slow:!1,forceExpanded:!1}}function q(e,t){return!!t.parent&&(t.parent===e||q(e,t.parent))}class G{get element(){return this.node.element.element}get children(){return this.node.children.map((e=>new G(e)))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e){this.node=e}}class Q{constructor(e,t,i){this.renderer=e,this.nodeMapper=t,this.onDidChangeTwistieState=i,this.renderedNodes=new Map,this.templateId=e.templateId}renderTemplate(e){return{templateData:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){this.renderer.renderElement(this.nodeMapper.map(e),t,i.templateData,n)}renderTwistie(e,t){return e.slow?(t.classList.add(...H.k.asClassNameArray(W.l.treeItemLoading)),!0):(t.classList.remove(...H.k.asClassNameArray(W.l.treeItemLoading)),!1)}disposeElement(e,t,i,n){var o,s;null===(s=(o=this.renderer).disposeElement)||void 0===s||s.call(o,this.nodeMapper.map(e),t,i.templateData,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}dispose(){this.renderedNodes.clear()}}function Z(e){return{browserEvent:e.browserEvent,elements:e.elements.map((e=>e.element))}}function Y(e){return{browserEvent:e.browserEvent,element:e.element&&e.element.element,target:e.target}}class $ extends b.kX{constructor(e){super(e.elements.map((e=>e.element))),this.data=e}}function J(e){return e instanceof b.kX?new $(e):e}class X{constructor(e){this.dnd=e}getDragURI(e){return this.dnd.getDragURI(e.element)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map((e=>e.element)),t)}onDragStart(e,t){var i,n;null===(n=(i=this.dnd).onDragStart)||void 0===n||n.call(i,J(e),t)}onDragOver(e,t,i,n,o){return this.dnd.onDragOver(J(e),t&&t.element,i,n,o)}drop(e,t,i,n,o){this.dnd.drop(J(e),t&&t.element,i,n,o)}onDragEnd(e){var t,i;null===(i=(t=this.dnd).onDragEnd)||void 0===i||i.call(t,e)}dispose(){this.dnd.dispose()}}function ee(e){return e&&{...e,collapseByDefault:!0,identityProvider:e.identityProvider&&{getId:t=>e.identityProvider.getId(t.element)},dnd:e.dnd&&new X(e.dnd),multipleSelectionController:e.multipleSelectionController&&{isSelectionSingleChangeEvent:t=>e.multipleSelectionController.isSelectionSingleChangeEvent({...t,element:t.element}),isSelectionRangeChangeEvent:t=>e.multipleSelectionController.isSelectionRangeChangeEvent({...t,element:t.element})},accessibilityProvider:e.accessibilityProvider&&{...e.accessibilityProvider,getPosInSet:void 0,getSetSize:void 0,getRole:e.accessibilityProvider.getRole?t=>e.accessibilityProvider.getRole(t.element):()=>"treeitem",isChecked:e.accessibilityProvider.isChecked?t=>{var i;return!!(null===(i=e.accessibilityProvider)||void 0===i?void 0:i.isChecked(t.element))}:void 0,getAriaLabel:t=>e.accessibilityProvider.getAriaLabel(t.element),getWidgetAriaLabel:()=>e.accessibilityProvider.getWidgetAriaLabel(),getWidgetRole:e.accessibilityProvider.getWidgetRole?()=>e.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:e.accessibilityProvider.getAriaLevel&&(t=>e.accessibilityProvider.getAriaLevel(t.element)),getActiveDescendantId:e.accessibilityProvider.getActiveDescendantId&&(t=>e.accessibilityProvider.getActiveDescendantId(t.element))},filter:e.filter&&{filter:(t,i)=>e.filter.filter(t.element,i)},keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&{...e.keyboardNavigationLabelProvider,getKeyboardNavigationLabel:t=>e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t.element)},sorter:void 0,expandOnlyOnTwistieClick:"undefined"===typeof e.expandOnlyOnTwistieClick?void 0:"function"!==typeof e.expandOnlyOnTwistieClick?e.expandOnlyOnTwistieClick:t=>e.expandOnlyOnTwistieClick(t.element),defaultFindVisibility:t=>t.hasChildren&&t.stale?1:"number"===typeof e.defaultFindVisibility?e.defaultFindVisibility:"undefined"===typeof e.defaultFindVisibility?2:e.defaultFindVisibility(t.element)}}function te(e,t){t(e),e.children.forEach((e=>te(e,t)))}class ie{get onDidScroll(){return this.tree.onDidScroll}get onDidChangeFocus(){return r.ju.map(this.tree.onDidChangeFocus,Z)}get onDidChangeSelection(){return r.ju.map(this.tree.onDidChangeSelection,Z)}get onMouseDblClick(){return r.ju.map(this.tree.onMouseDblClick,Y)}get onPointer(){return r.ju.map(this.tree.onPointer,Y)}get onDidFocus(){return this.tree.onDidFocus}get onDidChangeModel(){return this.tree.onDidChangeModel}get onDidChangeCollapseState(){return this.tree.onDidChangeCollapseState}get onDidChangeFindOpenState(){return this.tree.onDidChangeFindOpenState}get onDidChangeStickyScrollFocused(){return this.tree.onDidChangeStickyScrollFocused}get onDidDispose(){return this.tree.onDidDispose}constructor(e,t,i,n,o){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};this.user=e,this.dataSource=o,this.nodes=new Map,this.subTreeRefreshPromises=new Map,this.refreshPromises=new Map,this._onDidRender=new r.Q5,this._onDidChangeNodeSlowState=new r.Q5,this.nodeMapper=new w.VA((e=>new G(e))),this.disposables=new a.SL,this.identityProvider=s.identityProvider,this.autoExpandSingleChildren="undefined"!==typeof s.autoExpandSingleChildren&&s.autoExpandSingleChildren,this.sorter=s.sorter,this.getDefaultCollapseState=e=>s.collapseByDefault?s.collapseByDefault(e)?w.kn.PreserveOrCollapsed:w.kn.PreserveOrExpanded:void 0,this.tree=this.createTree(e,t,i,n,s),this.onDidChangeFindMode=this.tree.onDidChangeFindMode,this.onDidChangeFindMatchType=this.tree.onDidChangeFindMatchType,this.root=j({element:void 0,parent:null,hasChildren:!0,defaultCollapseState:void 0}),this.identityProvider&&(this.root={...this.root,id:null}),this.nodes.set(null,this.root),this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState,this,this.disposables)}createTree(e,t,i,n,o){const s=new v.cz(i),r=n.map((e=>new Q(e,this.nodeMapper,this._onDidChangeNodeSlowState.event))),a=ee(o)||{};return new O(e,t,s,r,a)}updateOptions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.tree.updateOptions(e)}getHTMLElement(){return this.tree.getHTMLElement()}get scrollTop(){return this.tree.scrollTop}set scrollTop(e){this.tree.scrollTop=e}get scrollHeight(){return this.tree.scrollHeight}get renderHeight(){return this.tree.renderHeight}domFocus(){this.tree.domFocus()}layout(e,t){this.tree.layout(e,t)}style(e){this.tree.style(e)}getInput(){return this.root.element}async setInput(e,t){this.refreshPromises.forEach((e=>e.cancel())),this.refreshPromises.clear(),this.root.element=e;const i=t&&{viewState:t,focus:[],selection:[]};await this._updateChildren(e,!0,!1,i),i&&(this.tree.setFocus(i.focus),this.tree.setSelection(i.selection)),t&&"number"===typeof t.scrollTop&&(this.scrollTop=t.scrollTop)}async _updateChildren(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.root.element,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0;if("undefined"===typeof this.root.element)throw new w.ac(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await r.ju.toPromise(this._onDidRender.event));const s=this.getDataNode(e);if(await this.refreshAndRenderNode(s,t,n,o),i)try{this.tree.rerender(s)}catch(a){}}rerender(e){if(void 0===e||e===this.root.element)return void this.tree.rerender();const t=this.getDataNode(e);this.tree.rerender(t)}getNode(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.root.element;const t=this.getDataNode(e),i=this.tree.getNode(t===this.root?null:t);return this.nodeMapper.map(i)}collapse(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.getDataNode(e);return this.tree.collapse(i===this.root?null:i,t)}async expand(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("undefined"===typeof this.root.element)throw new w.ac(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await r.ju.toPromise(this._onDidRender.event));const i=this.getDataNode(e);if(this.tree.hasElement(i)&&!this.tree.isCollapsible(i))return!1;if(i.refreshPromise&&(await this.root.refreshPromise,await r.ju.toPromise(this._onDidRender.event)),i!==this.root&&!i.refreshPromise&&!this.tree.isCollapsed(i))return!1;const n=this.tree.expand(i===this.root?null:i,t);return i.refreshPromise&&(await this.root.refreshPromise,await r.ju.toPromise(this._onDidRender.event)),n}setSelection(e,t){const i=e.map((e=>this.getDataNode(e)));this.tree.setSelection(i,t)}getSelection(){return this.tree.getSelection().map((e=>e.element))}setFocus(e,t){const i=e.map((e=>this.getDataNode(e)));this.tree.setFocus(i,t)}getFocus(){return this.tree.getFocus().map((e=>e.element))}reveal(e,t){this.tree.reveal(this.getDataNode(e),t)}getParentElement(e){const t=this.tree.getParentElement(this.getDataNode(e));return t&&t.element}getFirstElementChild(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.root.element;const t=this.getDataNode(e),i=this.tree.getFirstElementChild(t===this.root?null:t);return i&&i.element}getDataNode(e){const t=this.nodes.get(e===this.root.element?null:e);if(!t)throw new w.ac(this.user,"Data tree node not found: ".concat(e));return t}async refreshAndRenderNode(e,t,i,n){await this.refreshNode(e,t,i),this.disposables.isDisposed||this.render(e,i,n)}async refreshNode(e,t,i){let n;if(this.subTreeRefreshPromises.forEach(((o,s)=>{!n&&function(e,t){return e===t||q(e,t)||q(t,e)}(s,e)&&(n=o.then((()=>this.refreshNode(e,t,i))))})),n)return n;if(e!==this.root){if(this.tree.getNode(e).collapsed)return e.hasChildren=!!this.dataSource.hasChildren(e.element),e.stale=!0,void this.setChildren(e,[],t,i)}return this.doRefreshSubTree(e,t,i)}async doRefreshSubTree(e,t,i){let n;e.refreshPromise=new Promise((e=>n=e)),this.subTreeRefreshPromises.set(e,e.refreshPromise),e.refreshPromise.finally((()=>{e.refreshPromise=void 0,this.subTreeRefreshPromises.delete(e)}));try{const n=await this.doRefreshNode(e,t,i);e.stale=!1,await V.jT.settled(n.map((e=>this.doRefreshSubTree(e,t,i))))}finally{n()}}async doRefreshNode(e,t,i){let n;if(e.hasChildren=!!this.dataSource.hasChildren(e.element),e.hasChildren){const t=this.doGetChildren(e);if((0,U.TW)(t))n=Promise.resolve(t);else{const i=(0,V.Vs)(800);i.then((()=>{e.slow=!0,this._onDidChangeNodeSlowState.fire(e)}),(e=>null)),n=t.finally((()=>i.cancel()))}}else n=Promise.resolve(y.$.empty());try{const o=await n;return this.setChildren(e,o,t,i)}catch(o){if(e!==this.root&&this.tree.hasElement(e)&&this.tree.collapse(e),(0,K.n2)(o))return[];throw o}finally{e.slow&&(e.slow=!1,this._onDidChangeNodeSlowState.fire(e))}}doGetChildren(e){let t=this.refreshPromises.get(e);if(t)return t;const i=this.dataSource.getChildren(e.element);return(0,U.TW)(i)?this.processChildren(i):(t=(0,V.PG)((async()=>this.processChildren(await i))),this.refreshPromises.set(e,t),t.finally((()=>{this.refreshPromises.delete(e)})))}_onDidChangeCollapseState(e){let{node:t,deep:i}=e;null!==t.element&&!t.collapsed&&t.element.stale&&(i?this.collapse(t.element.element):this.refreshAndRenderNode(t.element,!1).catch(K.dL))}setChildren(e,t,i,n){const o=[...t];if(0===e.children.length&&0===o.length)return[];const s=new Map,r=new Map;for(const h of e.children)s.set(h.element,h),this.identityProvider&&r.set(h.id,{node:h,collapsed:this.tree.hasElement(h)&&this.tree.isCollapsed(h)});const a=[],l=o.map((t=>{const o=!!this.dataSource.hasChildren(t);if(!this.identityProvider){const i=j({element:t,parent:e,hasChildren:o,defaultCollapseState:this.getDefaultCollapseState(t)});return o&&i.defaultCollapseState===w.kn.PreserveOrExpanded&&a.push(i),i}const l=this.identityProvider.getId(t).toString(),h=r.get(l);if(h){const e=h.node;return s.delete(e.element),this.nodes.delete(e.element),this.nodes.set(t,e),e.element=t,e.hasChildren=o,i?h.collapsed?(e.children.forEach((e=>te(e,(e=>this.nodes.delete(e.element))))),e.children.splice(0,e.children.length),e.stale=!0):a.push(e):o&&!h.collapsed&&a.push(e),e}const d=j({element:t,parent:e,id:l,hasChildren:o,defaultCollapseState:this.getDefaultCollapseState(t)});return n&&n.viewState.focus&&n.viewState.focus.indexOf(l)>-1&&n.focus.push(d),n&&n.viewState.selection&&n.viewState.selection.indexOf(l)>-1&&n.selection.push(d),(n&&n.viewState.expanded&&n.viewState.expanded.indexOf(l)>-1||o&&d.defaultCollapseState===w.kn.PreserveOrExpanded)&&a.push(d),d}));for(const h of s.values())te(h,(e=>this.nodes.delete(e.element)));for(const h of l)this.nodes.set(h.element,h);return e.children.splice(0,e.children.length,...l),e!==this.root&&this.autoExpandSingleChildren&&1===l.length&&0===a.length&&(l[0].forceExpanded=!0,a.push(l[0])),a}render(e,t,i){const n=e.children.map((e=>this.asTreeElement(e,t))),o=i&&{...i,diffIdentityProvider:i.diffIdentityProvider&&{getId:e=>i.diffIdentityProvider.getId(e.element)}};this.tree.setChildren(e===this.root?null:e,n,o),e!==this.root&&this.tree.setCollapsible(e,e.hasChildren),this._onDidRender.fire()}asTreeElement(e,t){if(e.stale)return{element:e,collapsible:e.hasChildren,collapsed:!0};let i;return t&&t.viewState.expanded&&e.id&&t.viewState.expanded.indexOf(e.id)>-1?i=!1:e.forceExpanded?(i=!1,e.forceExpanded=!1):i=e.defaultCollapseState,{element:e,children:e.hasChildren?y.$.map(e.children,(e=>this.asTreeElement(e,t))):[],collapsible:e.hasChildren,collapsed:i}}processChildren(e){return this.sorter&&(e=[...e].sort(this.sorter.compare.bind(this.sorter))),e}dispose(){this.disposables.dispose(),this.tree.dispose()}}class ne{get element(){return{elements:this.node.element.elements.map((e=>e.element)),incompressible:this.node.element.incompressible}}get children(){return this.node.children.map((e=>new ne(e)))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e){this.node=e}}class oe{constructor(e,t,i,n){this.renderer=e,this.nodeMapper=t,this.compressibleNodeMapperProvider=i,this.onDidChangeTwistieState=n,this.renderedNodes=new Map,this.disposables=[],this.templateId=e.templateId}renderTemplate(e){return{templateData:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){this.renderer.renderElement(this.nodeMapper.map(e),t,i.templateData,n)}renderCompressedElements(e,t,i,n){this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(e),t,i.templateData,n)}renderTwistie(e,t){return e.slow?(t.classList.add(...H.k.asClassNameArray(W.l.treeItemLoading)),!0):(t.classList.remove(...H.k.asClassNameArray(W.l.treeItemLoading)),!1)}disposeElement(e,t,i,n){var o,s;null===(s=(o=this.renderer).disposeElement)||void 0===s||s.call(o,this.nodeMapper.map(e),t,i.templateData,n)}disposeCompressedElements(e,t,i,n){var o,s;null===(s=(o=this.renderer).disposeCompressedElements)||void 0===s||s.call(o,this.compressibleNodeMapperProvider().map(e),t,i.templateData,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}dispose(){this.renderedNodes.clear(),this.disposables=(0,a.B9)(this.disposables)}}class se extends ie{constructor(e,t,i,n,o,s){let r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{};super(e,t,i,o,s,r),this.compressionDelegate=n,this.compressibleNodeMapper=new w.VA((e=>new ne(e))),this.filter=r.filter}createTree(e,t,i,n,o){const s=new v.cz(i),r=n.map((e=>new oe(e,this.nodeMapper,(()=>this.compressibleNodeMapper),this._onDidChangeNodeSlowState.event))),a=function(e){const t=e&&ee(e);return t&&{...t,keyboardNavigationLabelProvider:t.keyboardNavigationLabelProvider&&{...t.keyboardNavigationLabelProvider,getCompressedNodeKeyboardNavigationLabel:t=>e.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(t.map((e=>e.element)))}}}(o)||{};return new z(e,t,s,r,a)}asTreeElement(e,t){return{incompressible:this.compressionDelegate.isIncompressible(e.element),...super.asTreeElement(e,t)}}updateOptions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.tree.updateOptions(e)}render(e,t,i){if(!this.identityProvider)return super.render(e,t);const n=e=>this.identityProvider.getId(e).toString(),o=e=>{const t=new Set;for(const i of e){const e=this.tree.getCompressedTreeNode(i===this.root?null:i);if(e.element)for(const i of e.element.elements)t.add(n(i.element))}return t},s=o(this.tree.getSelection()),r=o(this.tree.getFocus());super.render(e,t,i);const a=this.getSelection();let l=!1;const h=this.getFocus();let d=!1;const c=e=>{const t=e.element;if(t)for(let i=0;i{const t=this.filter.filter(e,1),i="boolean"===typeof(n=t)?n?1:0:(0,C.gB)(n)?(0,C.aG)(n.visibility):(0,C.aG)(n);var n;if(2===i)throw new Error("Recursive tree visibility not supported in async data compressed trees");return 1===i}))),super.processChildren(e)}}class re extends v.CH{constructor(e,t,i,n,o){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};super(e,t,i,n,s),this.user=e,this.dataSource=o,this.identityProvider=s.identityProvider}createModel(e,t,i){return new S(e,t,i)}}var ae=i(71721),le=i(25195),he=i(9694),de=i(24920),ce=i(57341),ue=i(58868),ge=i(34304),me=i(46765),fe=i(70311),pe=i(29581),_e=function(e,t,i,n){var o,s=arguments.length,r=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(s<3?o(r):s>3?o(t,i,r):o(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ve=function(e,t){return function(i,n){t(i,n,e)}};const be=(0,ge.yh)("listService");class Ce{get lastFocusedList(){return this._lastFocusedWidget}constructor(){this.disposables=new a.SL,this.lists=[],this._lastFocusedWidget=void 0,this._hasCreatedStyleController=!1}setLastFocusedList(e){var t,i;e!==this._lastFocusedWidget&&(null===(t=this._lastFocusedWidget)||void 0===t||t.getHTMLElement().classList.remove("last-focused"),this._lastFocusedWidget=e,null===(i=this._lastFocusedWidget)||void 0===i||i.getHTMLElement().classList.add("last-focused"))}register(e,t){if(!this._hasCreatedStyleController){this._hasCreatedStyleController=!0;new l.wD((0,n.dS)(),"").style(pe.O2)}if(this.lists.some((t=>t.widget===e)))throw new Error("Cannot register the same widget multiple times");const i={widget:e,extraContextKeys:t};return this.lists.push(i),(0,n.H9)(e.getHTMLElement())&&this.setLastFocusedList(e),(0,a.F8)(e.onDidFocus((()=>this.setLastFocusedList(e))),(0,a.OF)((()=>this.lists.splice(this.lists.indexOf(i),1))),e.onDidDispose((()=>{this.lists=this.lists.filter((e=>e!==i)),this._lastFocusedWidget===e&&this.setLastFocusedList(void 0)})))}dispose(){this.disposables.dispose()}}const we=new de.uy("listScrollAtBoundary","none"),ye=(de.Ao.or(we.isEqualTo("top"),we.isEqualTo("both")),de.Ao.or(we.isEqualTo("bottom"),we.isEqualTo("both")),new de.uy("listFocus",!0)),Se=new de.uy("treestickyScrollFocused",!1),Le=new de.uy("listSupportsMultiselect",!0),ke=de.Ao.and(ye,de.Ao.not(ce.d0),Se.negate()),De=new de.uy("listHasSelectionOrFocus",!1),Ne=new de.uy("listDoubleSelection",!1),xe=new de.uy("listMultiSelection",!1),Ee=new de.uy("listSelectionNavigation",!1),Ie=new de.uy("listSupportsFind",!0),Te=new de.uy("treeElementCanCollapse",!1),Me=new de.uy("treeElementHasParent",!1),Ae=new de.uy("treeElementCanExpand",!1),Re=new de.uy("treeElementHasChild",!1),Oe=new de.uy("treeFindOpen",!1),Pe="listTypeNavigationMode",Fe="listAutomaticKeyboardNavigation";function Be(e,t){const i=e.createScoped(t.getHTMLElement());return ye.bindTo(i),i}function ze(e,t){const i=we.bindTo(e),n=()=>{const e=0===t.scrollTop,n=t.scrollHeight-t.renderHeight-t.scrollTop<1;e&&n?i.set("both"):e?i.set("top"):n?i.set("bottom"):i.set("none")};return n(),t.onDidScroll(n)}const Ve="workbench.list.multiSelectModifier",We="workbench.list.openMode",He="workbench.list.horizontalScrolling",Ke="workbench.list.defaultFindMode",Ue="workbench.list.typeNavigationMode",je="workbench.list.keyboardNavigation",qe="workbench.list.scrollByPage",Ge="workbench.list.defaultFindMatchType",Qe="workbench.tree.indent",Ze="workbench.tree.renderIndentGuides",Ye="workbench.list.smoothScrolling",$e="workbench.list.mouseWheelScrollSensitivity",Je="workbench.list.fastScrollSensitivity",Xe="workbench.tree.expandMode",et="workbench.tree.enableStickyScroll",tt="workbench.tree.stickyScrollMaxItemCount";function it(e){return"alt"===e.getValue(Ve)}class nt extends a.JT{constructor(e){super(),this.configurationService=e,this.useAltAsMultipleSelectionModifier=it(e),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration((e=>{e.affectsConfiguration(Ve)&&(this.useAltAsMultipleSelectionModifier=it(this.configurationService))})))}isSelectionSingleChangeEvent(e){return this.useAltAsMultipleSelectionModifier?e.browserEvent.altKey:(0,l.Zo)(e)}isSelectionRangeChangeEvent(e){return(0,l.wn)(e)}}function ot(e,t){var i;const n=e.get(le.Ui),o=e.get(me.d),s=new a.SL;return[{...t,keyboardNavigationDelegate:{mightProducePrintableCharacter:e=>o.mightProducePrintableCharacter(e)},smoothScrolling:Boolean(n.getValue(Ye)),mouseWheelScrollSensitivity:n.getValue($e),fastScrollSensitivity:n.getValue(Je),multipleSelectionController:null!==(i=t.multipleSelectionController)&&void 0!==i?i:s.add(new nt(n)),keyboardNavigationEventFilter:ut(o),scrollByPage:Boolean(n.getValue(qe))},s]}let st=class extends l.aV{constructor(e,t,i,n,o,s,r,a,l){const h="undefined"!==typeof o.horizontalScrolling?o.horizontalScrolling:Boolean(a.getValue(He)),[d,c]=l.invokeFunction(ot,o);super(e,t,i,n,{keyboardSupport:!1,...d,horizontalScrolling:h}),this.disposables.add(c),this.contextKeyService=Be(s,this),this.disposables.add(ze(this.contextKeyService,this)),this.listSupportsMultiSelect=Le.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(!1!==o.multipleSelectionSupport);Ee.bindTo(this.contextKeyService).set(Boolean(o.selectionNavigation)),this.listHasSelectionOrFocus=De.bindTo(this.contextKeyService),this.listDoubleSelection=Ne.bindTo(this.contextKeyService),this.listMultiSelection=xe.bindTo(this.contextKeyService),this.horizontalScrolling=o.horizontalScrolling,this._useAltAsMultipleSelectionModifier=it(a),this.disposables.add(this.contextKeyService),this.disposables.add(r.register(this)),this.updateStyles(o.overrideStyles),this.disposables.add(this.onDidChangeSelection((()=>{const e=this.getSelection(),t=this.getFocus();this.contextKeyService.bufferChangeEvents((()=>{this.listHasSelectionOrFocus.set(e.length>0||t.length>0),this.listMultiSelection.set(e.length>1),this.listDoubleSelection.set(2===e.length)}))}))),this.disposables.add(this.onDidChangeFocus((()=>{const e=this.getSelection(),t=this.getFocus();this.listHasSelectionOrFocus.set(e.length>0||t.length>0)}))),this.disposables.add(a.onDidChangeConfiguration((e=>{e.affectsConfiguration(Ve)&&(this._useAltAsMultipleSelectionModifier=it(a));let t={};if(e.affectsConfiguration(He)&&void 0===this.horizontalScrolling){const e=Boolean(a.getValue(He));t={...t,horizontalScrolling:e}}if(e.affectsConfiguration(qe)){const e=Boolean(a.getValue(qe));t={...t,scrollByPage:e}}if(e.affectsConfiguration(Ye)){const e=Boolean(a.getValue(Ye));t={...t,smoothScrolling:e}}if(e.affectsConfiguration($e)){const e=a.getValue($e);t={...t,mouseWheelScrollSensitivity:e}}if(e.affectsConfiguration(Je)){const e=a.getValue(Je);t={...t,fastScrollSensitivity:e}}Object.keys(t).length>0&&this.updateOptions(t)}))),this.navigator=new ht(this,{configurationService:a,...o}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),void 0!==e.overrideStyles&&this.updateStyles(e.overrideStyles),void 0!==e.multipleSelectionSupport&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?(0,pe.TU)(e):pe.O2)}};st=_e([ve(5,de.i6),ve(6,be),ve(7,le.Ui),ve(8,ge.TG)],st);let rt=class extends c{constructor(e,t,i,n,o,s,r,l,h){const d="undefined"!==typeof o.horizontalScrolling?o.horizontalScrolling:Boolean(l.getValue(He)),[c,u]=h.invokeFunction(ot,o);super(e,t,i,n,{keyboardSupport:!1,...c,horizontalScrolling:d}),this.disposables=new a.SL,this.disposables.add(u),this.contextKeyService=Be(s,this),this.disposables.add(ze(this.contextKeyService,this.widget)),this.horizontalScrolling=o.horizontalScrolling,this.listSupportsMultiSelect=Le.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(!1!==o.multipleSelectionSupport);Ee.bindTo(this.contextKeyService).set(Boolean(o.selectionNavigation)),this._useAltAsMultipleSelectionModifier=it(l),this.disposables.add(this.contextKeyService),this.disposables.add(r.register(this)),this.updateStyles(o.overrideStyles),this.disposables.add(l.onDidChangeConfiguration((e=>{e.affectsConfiguration(Ve)&&(this._useAltAsMultipleSelectionModifier=it(l));let t={};if(e.affectsConfiguration(He)&&void 0===this.horizontalScrolling){const e=Boolean(l.getValue(He));t={...t,horizontalScrolling:e}}if(e.affectsConfiguration(qe)){const e=Boolean(l.getValue(qe));t={...t,scrollByPage:e}}if(e.affectsConfiguration(Ye)){const e=Boolean(l.getValue(Ye));t={...t,smoothScrolling:e}}if(e.affectsConfiguration($e)){const e=l.getValue($e);t={...t,mouseWheelScrollSensitivity:e}}if(e.affectsConfiguration(Je)){const e=l.getValue(Je);t={...t,fastScrollSensitivity:e}}Object.keys(t).length>0&&this.updateOptions(t)}))),this.navigator=new ht(this,{configurationService:l,...o}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),void 0!==e.overrideStyles&&this.updateStyles(e.overrideStyles),void 0!==e.multipleSelectionSupport&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?(0,pe.TU)(e):pe.O2)}dispose(){this.disposables.dispose(),super.dispose()}};rt=_e([ve(5,de.i6),ve(6,be),ve(7,le.Ui),ve(8,ge.TG)],rt);let at=class extends _{constructor(e,t,i,n,o,s,r,a,l,h){const d="undefined"!==typeof s.horizontalScrolling?s.horizontalScrolling:Boolean(l.getValue(He)),[c,u]=h.invokeFunction(ot,s);super(e,t,i,n,o,{keyboardSupport:!1,...c,horizontalScrolling:d}),this.disposables.add(u),this.contextKeyService=Be(r,this),this.disposables.add(ze(this.contextKeyService,this)),this.listSupportsMultiSelect=Le.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(!1!==s.multipleSelectionSupport);Ee.bindTo(this.contextKeyService).set(Boolean(s.selectionNavigation)),this.listHasSelectionOrFocus=De.bindTo(this.contextKeyService),this.listDoubleSelection=Ne.bindTo(this.contextKeyService),this.listMultiSelection=xe.bindTo(this.contextKeyService),this.horizontalScrolling=s.horizontalScrolling,this._useAltAsMultipleSelectionModifier=it(l),this.disposables.add(this.contextKeyService),this.disposables.add(a.register(this)),this.updateStyles(s.overrideStyles),this.disposables.add(this.onDidChangeSelection((()=>{const e=this.getSelection(),t=this.getFocus();this.contextKeyService.bufferChangeEvents((()=>{this.listHasSelectionOrFocus.set(e.length>0||t.length>0),this.listMultiSelection.set(e.length>1),this.listDoubleSelection.set(2===e.length)}))}))),this.disposables.add(this.onDidChangeFocus((()=>{const e=this.getSelection(),t=this.getFocus();this.listHasSelectionOrFocus.set(e.length>0||t.length>0)}))),this.disposables.add(l.onDidChangeConfiguration((e=>{e.affectsConfiguration(Ve)&&(this._useAltAsMultipleSelectionModifier=it(l));let t={};if(e.affectsConfiguration(He)&&void 0===this.horizontalScrolling){const e=Boolean(l.getValue(He));t={...t,horizontalScrolling:e}}if(e.affectsConfiguration(qe)){const e=Boolean(l.getValue(qe));t={...t,scrollByPage:e}}if(e.affectsConfiguration(Ye)){const e=Boolean(l.getValue(Ye));t={...t,smoothScrolling:e}}if(e.affectsConfiguration($e)){const e=l.getValue($e);t={...t,mouseWheelScrollSensitivity:e}}if(e.affectsConfiguration(Je)){const e=l.getValue(Je);t={...t,fastScrollSensitivity:e}}Object.keys(t).length>0&&this.updateOptions(t)}))),this.navigator=new dt(this,{configurationService:l,...s}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),void 0!==e.overrideStyles&&this.updateStyles(e.overrideStyles),void 0!==e.multipleSelectionSupport&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?(0,pe.TU)(e):pe.O2)}dispose(){this.disposables.dispose(),super.dispose()}};at=_e([ve(6,de.i6),ve(7,be),ve(8,le.Ui),ve(9,ge.TG)],at);class lt extends a.JT{constructor(e,t){var i;super(),this.widget=e,this._onDidOpen=this._register(new r.Q5),this.onDidOpen=this._onDidOpen.event,this._register(r.ju.filter(this.widget.onDidChangeSelection,(e=>(0,n.vd)(e.browserEvent)))((e=>this.onSelectionFromKeyboard(e)))),this._register(this.widget.onPointer((e=>this.onPointer(e.element,e.browserEvent)))),this._register(this.widget.onMouseDblClick((e=>this.onMouseDblClick(e.element,e.browserEvent)))),"boolean"!==typeof(null===t||void 0===t?void 0:t.openOnSingleClick)&&(null===t||void 0===t?void 0:t.configurationService)?(this.openOnSingleClick="doubleClick"!==(null===t||void 0===t?void 0:t.configurationService.getValue(We)),this._register(null===t||void 0===t?void 0:t.configurationService.onDidChangeConfiguration((e=>{e.affectsConfiguration(We)&&(this.openOnSingleClick="doubleClick"!==(null===t||void 0===t?void 0:t.configurationService.getValue(We)))})))):this.openOnSingleClick=null===(i=null===t||void 0===t?void 0:t.openOnSingleClick)||void 0===i||i}onSelectionFromKeyboard(e){if(1!==e.elements.length)return;const t=e.browserEvent,i="boolean"!==typeof t.preserveFocus||t.preserveFocus,n="boolean"===typeof t.pinned?t.pinned:!i;this._open(this.getSelectedElement(),i,n,!1,e.browserEvent)}onPointer(e,t){if(!this.openOnSingleClick)return;if(2===t.detail)return;const i=1===t.button,n=t.ctrlKey||t.metaKey||t.altKey;this._open(e,!0,i,n,t)}onMouseDblClick(e,t){if(!t)return;const i=t.target;if(i.classList.contains("monaco-tl-twistie")||i.classList.contains("monaco-icon-label")&&i.classList.contains("folder-icon")&&t.offsetX<16)return;const n=t.ctrlKey||t.metaKey||t.altKey;this._open(e,!1,!0,n,t)}_open(e,t,i,n,o){e&&this._onDidOpen.fire({editorOptions:{preserveFocus:t,pinned:i,revealIfVisible:!0},sideBySide:n,element:e,browserEvent:o})}}class ht extends lt{constructor(e,t){super(e,t),this.widget=e}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class dt extends lt{constructor(e,t){super(e,t)}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class ct extends lt{constructor(e,t){super(e,t)}getSelectedElement(){var e;return null!==(e=this.widget.getSelection()[0])&&void 0!==e?e:void 0}}function ut(e){let t=!1;return i=>{if(i.toKeyCodeChord().isModifierKey())return!1;if(t)return t=!1,!1;const n=e.softDispatch(i,i.target);return 1===n.kind?(t=!0,!1):(t=!1,0===n.kind)}}let gt=class extends O{constructor(e,t,i,n,o,s,r,a,l){const{options:h,getTypeNavigationMode:d,disposable:c}=s.invokeFunction(Ct,o);super(e,t,i,n,h),this.disposables.add(c),this.internals=new wt(this,o,d,o.overrideStyles,r,a,l),this.disposables.add(this.internals)}updateOptions(e){super.updateOptions(e),this.internals.updateOptions(e)}};gt=_e([ve(5,ge.TG),ve(6,de.i6),ve(7,be),ve(8,le.Ui)],gt);let mt=class extends z{constructor(e,t,i,n,o,s,r,a,l){const{options:h,getTypeNavigationMode:d,disposable:c}=s.invokeFunction(Ct,o);super(e,t,i,n,h),this.disposables.add(c),this.internals=new wt(this,o,d,o.overrideStyles,r,a,l),this.disposables.add(this.internals)}updateOptions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super.updateOptions(e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};mt=_e([ve(5,ge.TG),ve(6,de.i6),ve(7,be),ve(8,le.Ui)],mt);let ft=class extends re{constructor(e,t,i,n,o,s,r,a,l,h){const{options:d,getTypeNavigationMode:c,disposable:u}=r.invokeFunction(Ct,s);super(e,t,i,n,o,d),this.disposables.add(u),this.internals=new wt(this,s,c,s.overrideStyles,a,l,h),this.disposables.add(this.internals)}updateOptions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super.updateOptions(e),void 0!==e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};ft=_e([ve(6,ge.TG),ve(7,de.i6),ve(8,be),ve(9,le.Ui)],ft);let pt=class extends ie{get onDidOpen(){return this.internals.onDidOpen}constructor(e,t,i,n,o,s,r,a,l,h){const{options:d,getTypeNavigationMode:c,disposable:u}=r.invokeFunction(Ct,s);super(e,t,i,n,o,d),this.disposables.add(u),this.internals=new wt(this,s,c,s.overrideStyles,a,l,h),this.disposables.add(this.internals)}updateOptions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super.updateOptions(e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};pt=_e([ve(6,ge.TG),ve(7,de.i6),ve(8,be),ve(9,le.Ui)],pt);let _t=class extends se{constructor(e,t,i,n,o,s,r,a,l,h,d){const{options:c,getTypeNavigationMode:u,disposable:g}=a.invokeFunction(Ct,r);super(e,t,i,n,o,s,c),this.disposables.add(g),this.internals=new wt(this,r,u,r.overrideStyles,l,h,d),this.disposables.add(this.internals)}updateOptions(e){super.updateOptions(e),this.internals.updateOptions(e)}};function vt(e){const t=e.getValue(Ke);if("highlight"===t)return v.sZ.Highlight;if("filter"===t)return v.sZ.Filter;const i=e.getValue(je);return"simple"===i||"highlight"===i?v.sZ.Highlight:"filter"===i?v.sZ.Filter:void 0}function bt(e){const t=e.getValue(Ge);return"fuzzy"===t?v.Zd.Fuzzy:"contiguous"===t?v.Zd.Contiguous:void 0}function Ct(e,t){var i;const n=e.get(le.Ui),o=e.get(ue.u),s=e.get(de.i6),r=e.get(ge.TG),a=void 0!==t.horizontalScrolling?t.horizontalScrolling:Boolean(n.getValue(He)),[h,d]=r.invokeFunction(ot,t),c=t.paddingBottom,u=void 0!==t.renderIndentGuides?t.renderIndentGuides:n.getValue(Ze);return{getTypeNavigationMode:()=>{const e=s.getContextKeyValue(Pe);if("automatic"===e)return l.AA.Automatic;if("trigger"===e)return l.AA.Trigger;if(!1===s.getContextKeyValue(Fe))return l.AA.Trigger;const t=n.getValue(Ue);return"automatic"===t?l.AA.Automatic:"trigger"===t?l.AA.Trigger:void 0},disposable:d,options:{keyboardSupport:!1,...h,indent:"number"===typeof n.getValue(Qe)?n.getValue(Qe):void 0,renderIndentGuides:u,smoothScrolling:Boolean(n.getValue(Ye)),defaultFindMode:vt(n),defaultFindMatchType:bt(n),horizontalScrolling:a,scrollByPage:Boolean(n.getValue(qe)),paddingBottom:c,hideTwistiesOfChildlessElements:t.hideTwistiesOfChildlessElements,expandOnlyOnTwistieClick:null!==(i=t.expandOnlyOnTwistieClick)&&void 0!==i?i:"doubleClick"===n.getValue(Xe),contextViewProvider:o,findWidgetStyles:pe.uX,enableStickyScroll:Boolean(n.getValue(et)),stickyScrollMaxItemCount:Number(n.getValue(tt))}}}_t=_e([ve(7,ge.TG),ve(8,de.i6),ve(9,be),ve(10,le.Ui)],_t);let wt=class{get onDidOpen(){return this.navigator.onDidOpen}constructor(e,t,i,n,o,s,r){var a;this.tree=e,this.disposables=[],this.contextKeyService=Be(o,e),this.disposables.push(ze(this.contextKeyService,e)),this.listSupportsMultiSelect=Le.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(!1!==t.multipleSelectionSupport);Ee.bindTo(this.contextKeyService).set(Boolean(t.selectionNavigation)),this.listSupportFindWidget=Ie.bindTo(this.contextKeyService),this.listSupportFindWidget.set(null===(a=t.findWidgetEnabled)||void 0===a||a),this.hasSelectionOrFocus=De.bindTo(this.contextKeyService),this.hasDoubleSelection=Ne.bindTo(this.contextKeyService),this.hasMultiSelection=xe.bindTo(this.contextKeyService),this.treeElementCanCollapse=Te.bindTo(this.contextKeyService),this.treeElementHasParent=Me.bindTo(this.contextKeyService),this.treeElementCanExpand=Ae.bindTo(this.contextKeyService),this.treeElementHasChild=Re.bindTo(this.contextKeyService),this.treeFindOpen=Oe.bindTo(this.contextKeyService),this.treeStickyScrollFocused=Se.bindTo(this.contextKeyService),this._useAltAsMultipleSelectionModifier=it(r),this.updateStyleOverrides(n);const l=()=>{const t=e.getFocus()[0];if(!t)return;const i=e.getNode(t);this.treeElementCanCollapse.set(i.collapsible&&!i.collapsed),this.treeElementHasParent.set(!!e.getParentElement(t)),this.treeElementCanExpand.set(i.collapsible&&i.collapsed),this.treeElementHasChild.set(!!e.getFirstElementChild(t))},h=new Set;h.add(Pe),h.add(Fe),this.disposables.push(this.contextKeyService,s.register(e),e.onDidChangeSelection((()=>{const t=e.getSelection(),i=e.getFocus();this.contextKeyService.bufferChangeEvents((()=>{this.hasSelectionOrFocus.set(t.length>0||i.length>0),this.hasMultiSelection.set(t.length>1),this.hasDoubleSelection.set(2===t.length)}))})),e.onDidChangeFocus((()=>{const t=e.getSelection(),i=e.getFocus();this.hasSelectionOrFocus.set(t.length>0||i.length>0),l()})),e.onDidChangeCollapseState(l),e.onDidChangeModel(l),e.onDidChangeFindOpenState((e=>this.treeFindOpen.set(e))),e.onDidChangeStickyScrollFocused((e=>this.treeStickyScrollFocused.set(e))),r.onDidChangeConfiguration((n=>{let o={};if(n.affectsConfiguration(Ve)&&(this._useAltAsMultipleSelectionModifier=it(r)),n.affectsConfiguration(Qe)){const e=r.getValue(Qe);o={...o,indent:e}}if(n.affectsConfiguration(Ze)&&void 0===t.renderIndentGuides){const e=r.getValue(Ze);o={...o,renderIndentGuides:e}}if(n.affectsConfiguration(Ye)){const e=Boolean(r.getValue(Ye));o={...o,smoothScrolling:e}}if(n.affectsConfiguration(Ke)||n.affectsConfiguration(je)){const e=vt(r);o={...o,defaultFindMode:e}}if(n.affectsConfiguration(Ue)||n.affectsConfiguration(je)){const e=i();o={...o,typeNavigationMode:e}}if(n.affectsConfiguration(Ge)){const e=bt(r);o={...o,defaultFindMatchType:e}}if(n.affectsConfiguration(He)&&void 0===t.horizontalScrolling){const e=Boolean(r.getValue(He));o={...o,horizontalScrolling:e}}if(n.affectsConfiguration(qe)){const e=Boolean(r.getValue(qe));o={...o,scrollByPage:e}}if(n.affectsConfiguration(Xe)&&void 0===t.expandOnlyOnTwistieClick&&(o={...o,expandOnlyOnTwistieClick:"doubleClick"===r.getValue(Xe)}),n.affectsConfiguration(et)){const e=r.getValue(et);o={...o,enableStickyScroll:e}}if(n.affectsConfiguration(tt)){const e=Math.max(1,r.getValue(tt));o={...o,stickyScrollMaxItemCount:e}}if(n.affectsConfiguration($e)){const e=r.getValue($e);o={...o,mouseWheelScrollSensitivity:e}}if(n.affectsConfiguration(Je)){const e=r.getValue(Je);o={...o,fastScrollSensitivity:e}}Object.keys(o).length>0&&e.updateOptions(o)})),this.contextKeyService.onDidChangeContext((t=>{t.affectsSome(h)&&e.updateOptions({typeNavigationMode:i()})}))),this.navigator=new ct(e,{configurationService:r,...t}),this.disposables.push(this.navigator)}updateOptions(e){void 0!==e.multipleSelectionSupport&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyleOverrides(e){this.tree.style(e?(0,pe.TU)(e):pe.O2)}dispose(){this.disposables=(0,a.B9)(this.disposables)}};wt=_e([ve(4,de.i6),ve(5,be),ve(6,le.Ui)],wt);fe.B.as(he.IP.Configuration).registerConfiguration({id:"workbench",order:7,title:(0,ae.NC)("workbenchConfigurationTitle","Workbench"),type:"object",properties:{[Ve]:{type:"string",enum:["ctrlCmd","alt"],markdownEnumDescriptions:[(0,ae.NC)("multiSelectModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),(0,ae.NC)("multiSelectModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],default:"ctrlCmd",description:(0,ae.NC)({key:"multiSelectModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.")},[We]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:(0,ae.NC)({key:"openModeModifier",comment:["`singleClick` and `doubleClick` refers to a value the setting can take and should not be localized."]},"Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.")},[He]:{type:"boolean",default:!1,description:(0,ae.NC)("horizontalScrolling setting","Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.")},[qe]:{type:"boolean",default:!1,description:(0,ae.NC)("list.scrollByPage","Controls whether clicks in the scrollbar scroll page by page.")},[Qe]:{type:"number",default:8,minimum:4,maximum:40,description:(0,ae.NC)("tree indent setting","Controls tree indentation in pixels.")},[Ze]:{type:"string",enum:["none","onHover","always"],default:"onHover",description:(0,ae.NC)("render tree indent guides","Controls whether the tree should render indent guides.")},[Ye]:{type:"boolean",default:!1,description:(0,ae.NC)("list smoothScrolling setting","Controls whether lists and trees have smooth scrolling.")},[$e]:{type:"number",default:1,markdownDescription:(0,ae.NC)("Mouse Wheel Scroll Sensitivity","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")},[Je]:{type:"number",default:5,markdownDescription:(0,ae.NC)("Fast Scroll Sensitivity","Scrolling speed multiplier when pressing `Alt`.")},[Ke]:{type:"string",enum:["highlight","filter"],enumDescriptions:[(0,ae.NC)("defaultFindModeSettingKey.highlight","Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements."),(0,ae.NC)("defaultFindModeSettingKey.filter","Filter elements when searching.")],default:"highlight",description:(0,ae.NC)("defaultFindModeSettingKey","Controls the default find mode for lists and trees in the workbench.")},[je]:{type:"string",enum:["simple","highlight","filter"],enumDescriptions:[(0,ae.NC)("keyboardNavigationSettingKey.simple","Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes."),(0,ae.NC)("keyboardNavigationSettingKey.highlight","Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements."),(0,ae.NC)("keyboardNavigationSettingKey.filter","Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.")],default:"highlight",description:(0,ae.NC)("keyboardNavigationSettingKey","Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter."),deprecated:!0,deprecationMessage:(0,ae.NC)("keyboardNavigationSettingKeyDeprecated","Please use 'workbench.list.defaultFindMode' and\t'workbench.list.typeNavigationMode' instead.")},[Ge]:{type:"string",enum:["fuzzy","contiguous"],enumDescriptions:[(0,ae.NC)("defaultFindMatchTypeSettingKey.fuzzy","Use fuzzy matching when searching."),(0,ae.NC)("defaultFindMatchTypeSettingKey.contiguous","Use contiguous matching when searching.")],default:"fuzzy",description:(0,ae.NC)("defaultFindMatchTypeSettingKey","Controls the type of matching used when searching lists and trees in the workbench.")},[Xe]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:(0,ae.NC)("expand mode","Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable.")},[et]:{type:"boolean",default:!0,description:(0,ae.NC)("sticky scroll","Controls whether sticky scrolling is enabled in trees.")},[tt]:{type:"number",minimum:1,default:7,markdownDescription:(0,ae.NC)("sticky scroll maximum items","Controls the number of sticky elements displayed in the tree when `#workbench.tree.enableStickyScroll#` is enabled.")},[Ue]:{type:"string",enum:["automatic","trigger"],default:"automatic",markdownDescription:(0,ae.NC)("typeNavigationMode2","Controls how type navigation works in lists and trees in the workbench. When set to `trigger`, type navigation begins once the `list.triggerTypeNavigation` command is run.")}}})},83717:(e,t,i)=>{i.d(t,{VZ:()=>r,in:()=>a,kw:()=>d,qA:()=>c});var n=i(24219),o=i(89599),s=i(24920);const r=(0,i(34304).yh)("logService");var a;!function(e){e[e.Off=0]="Off",e[e.Trace=1]="Trace",e[e.Debug=2]="Debug",e[e.Info=3]="Info",e[e.Warning=4]="Warning",e[e.Error=5]="Error"}(a||(a={}));const l=a.Info;class h extends o.JT{constructor(){super(...arguments),this.level=l,this._onDidChangeLogLevel=this._register(new n.Q5),this.onDidChangeLogLevel=this._onDidChangeLogLevel.event}setLevel(e){this.level!==e&&(this.level=e,this._onDidChangeLogLevel.fire(this.level))}getLevel(){return this.level}checkLogLevel(e){return this.level!==a.Off&&this.level<=e}}class d extends h{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];super(),this.useColors=t,this.setLevel(e)}trace(e){if(this.checkLogLevel(a.Trace)){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n{i.d(t,{H0:()=>o,ZL:()=>n,lT:()=>l});var n,o,s=i(6225),r=i(71721),a=i(34304);!function(e){e[e.Hint=1]="Hint",e[e.Info=2]="Info",e[e.Warning=4]="Warning",e[e.Error=8]="Error"}(n||(n={})),function(e){e.compare=function(e,t){return t-e};const t=Object.create(null);t[e.Error]=(0,r.NC)("sev.error","Error"),t[e.Warning]=(0,r.NC)("sev.warning","Warning"),t[e.Info]=(0,r.NC)("sev.info","Info"),e.toString=function(e){return t[e]||""},e.fromSeverity=function(t){switch(t){case s.Z.Error:return e.Error;case s.Z.Warning:return e.Warning;case s.Z.Info:return e.Info;case s.Z.Ignore:return e.Hint}},e.toSeverity=function(t){switch(t){case e.Error:return s.Z.Error;case e.Warning:return s.Z.Warning;case e.Info:return s.Z.Info;case e.Hint:return s.Z.Ignore}}}(n||(n={})),function(e){const t="";function i(e,i){const o=[t];return e.source?o.push(e.source.replace("\xa6","\\\xa6")):o.push(t),e.code?"string"===typeof e.code?o.push(e.code.replace("\xa6","\\\xa6")):o.push(e.code.value.replace("\xa6","\\\xa6")):o.push(t),void 0!==e.severity&&null!==e.severity?o.push(n.toString(e.severity)):o.push(t),e.message&&i?o.push(e.message.replace("\xa6","\\\xa6")):o.push(t),void 0!==e.startLineNumber&&null!==e.startLineNumber?o.push(e.startLineNumber.toString()):o.push(t),void 0!==e.startColumn&&null!==e.startColumn?o.push(e.startColumn.toString()):o.push(t),void 0!==e.endLineNumber&&null!==e.endLineNumber?o.push(e.endLineNumber.toString()):o.push(t),void 0!==e.endColumn&&null!==e.endColumn?o.push(e.endColumn.toString()):o.push(t),o.push(t),o.join("\xa6")}e.makeKey=function(e){return i(e,!0)},e.makeKeyOptionalMessage=i}(o||(o={}));const l=(0,a.yh)("markerService")},13200:(e,t,i)=>{i.d(t,{EO:()=>a,lT:()=>r,zb:()=>s});var n=i(6225),o=i(34304),s=n.Z;const r=(0,o.yh)("notificationService");class a{}},51460:(e,t,i)=>{i.d(t,{v:()=>n,x:()=>o});const n=(0,i(34304).yh)("openerService");function o(e){let t;const i=/^L?(\d+)(?:,(\d+))?(-L?(\d+)(?:,(\d+))?)?/.exec(e.fragment);return i&&(t={startLineNumber:parseInt(i[1]),startColumn:i[2]?parseInt(i[2]):1,endLineNumber:i[4]?parseInt(i[4]):void 0,endColumn:i[4]?i[5]?parseInt(i[5]):1:void 0},e=e.with({fragment:""})),{selection:t,uri:e}}},39040:(e,t,i)=>{i.d(t,{Ex:()=>s,R9:()=>o,ek:()=>r});var n=i(34304);const o=(0,n.yh)("progressService");Object.freeze({total(){},worked(){},done(){}});class s{constructor(e){this.callback=e}report(e){this._value=e,this.callback(this._value)}}s.None=Object.freeze({report(){}});const r=(0,n.yh)("editorProgressService")},53643:(e,t,i)=>{i.d(t,{IP:()=>a,Ry:()=>n});var n,o=i(75629),s=i(89599),r=i(70311);!function(e){e[e.PRESERVE=0]="PRESERVE",e[e.LAST=1]="LAST"}(n||(n={}));const a={Quickaccess:"workbench.contributions.quickaccess"};r.B.add(a.Quickaccess,new class{constructor(){this.providers=[],this.defaultProvider=void 0}registerQuickAccessProvider(e){return 0===e.prefix.length?this.defaultProvider=e:this.providers.push(e),this.providers.sort(((e,t)=>t.prefix.length-e.prefix.length)),(0,s.OF)((()=>{this.providers.splice(this.providers.indexOf(e),1),this.defaultProvider===e&&(this.defaultProvider=void 0)}))}getQuickAccessProviders(){return(0,o.kX)([this.defaultProvider,...this.providers])}getQuickAccessProvider(e){return e&&this.providers.find((t=>e.startsWith(t.prefix)))||void 0||this.defaultProvider}})},35786:(e,t,i)=>{i.d(t,{Jq:()=>s,X5:()=>o,eJ:()=>a,jG:()=>r});var n=i(34304);const o={ctrlCmd:!1,alt:!1};var s,r;!function(e){e[e.Blur=1]="Blur",e[e.Gesture=2]="Gesture",e[e.Other=3]="Other"}(s||(s={})),function(e){e[e.NONE=0]="NONE",e[e.FIRST=1]="FIRST",e[e.SECOND=2]="SECOND",e[e.LAST=3]="LAST"}(r||(r={}));new class{constructor(e){this.options=e}};const a=(0,n.yh)("quickInputService")},70311:(e,t,i)=>{i.d(t,{B:()=>s});var n=i(39880),o=i(63686);const s=new class{constructor(){this.data=new Map}add(e,t){n.ok(o.HD(e)),n.ok(o.Kn(t)),n.ok(!this.data.has(e),"There is already an extension with this id"),this.data.set(e,t)}as(e){return this.data.get(e)||null}}},89965:(e,t,i)=>{i.d(t,{Uy:()=>m,vm:()=>_,fk:()=>f});var n,o,s=i(24219),r=i(89599),a=i(63686),l=i(60282),h=i(61423);!function(e){e[e.STORAGE_DOES_NOT_EXIST=0]="STORAGE_DOES_NOT_EXIST",e[e.STORAGE_IN_MEMORY=1]="STORAGE_IN_MEMORY"}(n||(n={})),function(e){e[e.None=0]="None",e[e.Initialized=1]="Initialized",e[e.Closed=2]="Closed"}(o||(o={}));class d extends r.JT{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Object.create(null);super(),this.database=e,this.options=t,this._onDidChangeStorage=this._register(new s.K3),this.onDidChangeStorage=this._onDidChangeStorage.event,this.state=o.None,this.cache=new Map,this.flushDelayer=this._register(new l.rH(d.DEFAULT_FLUSH_DELAY)),this.pendingDeletes=new Set,this.pendingInserts=new Map,this.whenFlushedCallbacks=[],this.registerListeners()}registerListeners(){this._register(this.database.onDidChangeItemsExternal((e=>this.onDidChangeItemsExternal(e))))}onDidChangeItemsExternal(e){var t,i;this._onDidChangeStorage.pause();try{null===(t=e.changed)||void 0===t||t.forEach(((e,t)=>this.acceptExternal(t,e))),null===(i=e.deleted)||void 0===i||i.forEach((e=>this.acceptExternal(e,void 0)))}finally{this._onDidChangeStorage.resume()}}acceptExternal(e,t){if(this.state===o.Closed)return;let i=!1;if((0,a.Jp)(t))i=this.cache.delete(e);else{this.cache.get(e)!==t&&(this.cache.set(e,t),i=!0)}i&&this._onDidChangeStorage.fire({key:e,external:!0})}get(e,t){const i=this.cache.get(e);return(0,a.Jp)(i)?t:i}getBoolean(e,t){const i=this.get(e);return(0,a.Jp)(i)?t:"true"===i}getNumber(e,t){const i=this.get(e);return(0,a.Jp)(i)?t:parseInt(i,10)}async set(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.state===o.Closed)return;if((0,a.Jp)(t))return this.delete(e,i);const n=(0,a.Kn)(t)||Array.isArray(t)?(0,h.Pz)(t):String(t);return this.cache.get(e)!==n?(this.cache.set(e,n),this.pendingInserts.set(e,n),this.pendingDeletes.delete(e),this._onDidChangeStorage.fire({key:e,external:i}),this.doFlush()):void 0}async delete(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.state===o.Closed)return;return this.cache.delete(e)?(this.pendingDeletes.has(e)||this.pendingDeletes.add(e),this.pendingInserts.delete(e),this._onDidChangeStorage.fire({key:e,external:t}),this.doFlush()):void 0}get hasPending(){return this.pendingInserts.size>0||this.pendingDeletes.size>0}async flushPending(){if(!this.hasPending)return;const e={insert:this.pendingInserts,delete:this.pendingDeletes};return this.pendingDeletes=new Set,this.pendingInserts=new Map,this.database.updateItems(e).finally((()=>{var e;if(!this.hasPending)for(;this.whenFlushedCallbacks.length;)null===(e=this.whenFlushedCallbacks.pop())||void 0===e||e()}))}async doFlush(e){return this.options.hint===n.STORAGE_IN_MEMORY?this.flushPending():this.flushDelayer.trigger((()=>this.flushPending()),e)}}d.DEFAULT_FLUSH_DELAY=100;class c{constructor(){this.onDidChangeItemsExternal=s.ju.None,this.items=new Map}async updateItems(e){var t,i;null===(t=e.insert)||void 0===t||t.forEach(((e,t)=>this.items.set(t,e))),null===(i=e.delete)||void 0===i||i.forEach((e=>this.items.delete(e)))}}var u=i(34304);const g="__$__targetStorageMarker",m=(0,u.yh)("storageService");var f;!function(e){e[e.NONE=0]="NONE",e[e.SHUTDOWN=1]="SHUTDOWN"}(f||(f={}));class p extends r.JT{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{flushInterval:p.DEFAULT_FLUSH_INTERVAL};super(),this.options=e,this._onDidChangeValue=this._register(new s.K3),this._onDidChangeTarget=this._register(new s.K3),this._onWillSaveState=this._register(new s.Q5),this.onWillSaveState=this._onWillSaveState.event,this._workspaceKeyTargets=void 0,this._profileKeyTargets=void 0,this._applicationKeyTargets=void 0}onDidChangeValue(e,t,i){return s.ju.filter(this._onDidChangeValue.event,(i=>i.scope===e&&(void 0===t||i.key===t)),i)}emitDidChangeValue(e,t){const{key:i,external:n}=t;if(i===g){switch(e){case-1:this._applicationKeyTargets=void 0;break;case 0:this._profileKeyTargets=void 0;break;case 1:this._workspaceKeyTargets=void 0}this._onDidChangeTarget.fire({scope:e})}else this._onDidChangeValue.fire({scope:e,key:i,target:this.getKeyTargets(e)[i],external:n})}get(e,t,i){var n;return null===(n=this.getStorage(t))||void 0===n?void 0:n.get(e,i)}getBoolean(e,t,i){var n;return null===(n=this.getStorage(t))||void 0===n?void 0:n.getBoolean(e,i)}getNumber(e,t,i){var n;return null===(n=this.getStorage(t))||void 0===n?void 0:n.getNumber(e,i)}store(e,t,i,n){let o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];(0,a.Jp)(t)?this.remove(e,i,o):this.withPausedEmitters((()=>{var s;this.updateKeyTarget(e,i,n),null===(s=this.getStorage(i))||void 0===s||s.set(e,t,o)}))}remove(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.withPausedEmitters((()=>{var n;this.updateKeyTarget(e,t,void 0),null===(n=this.getStorage(t))||void 0===n||n.delete(e,i)}))}withPausedEmitters(e){this._onDidChangeValue.pause(),this._onDidChangeTarget.pause();try{e()}finally{this._onDidChangeValue.resume(),this._onDidChangeTarget.resume()}}updateKeyTarget(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];var o,s;const r=this.getKeyTargets(t);"number"===typeof i?r[e]!==i&&(r[e]=i,null===(o=this.getStorage(t))||void 0===o||o.set(g,JSON.stringify(r),n)):"number"===typeof r[e]&&(delete r[e],null===(s=this.getStorage(t))||void 0===s||s.set(g,JSON.stringify(r),n))}get workspaceKeyTargets(){return this._workspaceKeyTargets||(this._workspaceKeyTargets=this.loadKeyTargets(1)),this._workspaceKeyTargets}get profileKeyTargets(){return this._profileKeyTargets||(this._profileKeyTargets=this.loadKeyTargets(0)),this._profileKeyTargets}get applicationKeyTargets(){return this._applicationKeyTargets||(this._applicationKeyTargets=this.loadKeyTargets(-1)),this._applicationKeyTargets}getKeyTargets(e){switch(e){case-1:return this.applicationKeyTargets;case 0:return this.profileKeyTargets;default:return this.workspaceKeyTargets}}loadKeyTargets(e){const t=this.getStorage(e);return t?function(e){const t=e.get(g);if(t)try{return JSON.parse(t)}catch(i){}return Object.create(null)}(t):Object.create(null)}}p.DEFAULT_FLUSH_INTERVAL=6e4;class _ extends p{constructor(){super(),this.applicationStorage=this._register(new d(new c,{hint:n.STORAGE_IN_MEMORY})),this.profileStorage=this._register(new d(new c,{hint:n.STORAGE_IN_MEMORY})),this.workspaceStorage=this._register(new d(new c,{hint:n.STORAGE_IN_MEMORY})),this._register(this.workspaceStorage.onDidChangeStorage((e=>this.emitDidChangeValue(1,e)))),this._register(this.profileStorage.onDidChangeStorage((e=>this.emitDidChangeValue(0,e)))),this._register(this.applicationStorage.onDidChangeStorage((e=>this.emitDidChangeValue(-1,e))))}getStorage(e){switch(e){case-1:return this.applicationStorage;case 0:return this.profileStorage;default:return this.workspaceStorage}}}},38015:(e,t,i)=>{i.d(t,{b:()=>n});const n=(0,i(34304).yh)("telemetryService")},29581:(e,t,i)=>{i.d(t,{BM:()=>m,Hc:()=>h,O2:()=>u,TU:()=>g,ZR:()=>f,b5:()=>a,eO:()=>s,ku:()=>c,pl:()=>l,uX:()=>d,wG:()=>r});var n=i(87701),o=i(89652);const s={keybindingLabelBackground:(0,n.n_1)(n.oQ$),keybindingLabelForeground:(0,n.n_1)(n.lWp),keybindingLabelBorder:(0,n.n_1)(n.AWI),keybindingLabelBottomBorder:(0,n.n_1)(n.K19),keybindingLabelShadow:(0,n.n_1)(n.rh)},r={buttonForeground:(0,n.n_1)(n.j5u),buttonSeparator:(0,n.n_1)(n.iFQ),buttonBackground:(0,n.n_1)(n.b7$),buttonHoverBackground:(0,n.n_1)(n.GO4),buttonSecondaryForeground:(0,n.n_1)(n.qBU),buttonSecondaryBackground:(0,n.n_1)(n.ESD),buttonSecondaryHoverBackground:(0,n.n_1)(n.xEn),buttonBorder:(0,n.n_1)(n.GYc)},a={progressBarBackground:(0,n.n_1)(n.zRJ)},l={inputActiveOptionBorder:(0,n.n_1)(n.PRb),inputActiveOptionForeground:(0,n.n_1)(n.Pvw),inputActiveOptionBackground:(0,n.n_1)(n.XEs)},h=((0,n.n_1)(n.SUp),(0,n.n_1)(n.nd),(0,n.n_1)(n.BQ0),(0,n.n_1)(n.D0T),(0,n.n_1)(n.Hfx),(0,n.n_1)(n.rh),(0,n.n_1)(n.lRK),(0,n.n_1)(n.JpG),(0,n.n_1)(n.BOY),(0,n.n_1)(n.OLZ),(0,n.n_1)(n.url),{inputBackground:(0,n.n_1)(n.sEe),inputForeground:(0,n.n_1)(n.zJb),inputBorder:(0,n.n_1)(n.dt_),inputValidationInfoBorder:(0,n.n_1)(n.EPQ),inputValidationInfoBackground:(0,n.n_1)(n._lC),inputValidationInfoForeground:(0,n.n_1)(n.YI3),inputValidationWarningBorder:(0,n.n_1)(n.C3g),inputValidationWarningBackground:(0,n.n_1)(n.RV_),inputValidationWarningForeground:(0,n.n_1)(n.SUG),inputValidationErrorBorder:(0,n.n_1)(n.OZR),inputValidationErrorBackground:(0,n.n_1)(n.paE),inputValidationErrorForeground:(0,n.n_1)(n._t9)}),d={listFilterWidgetBackground:(0,n.n_1)(n.vGG),listFilterWidgetOutline:(0,n.n_1)(n.oSI),listFilterWidgetNoMatchesOutline:(0,n.n_1)(n.Saq),listFilterWidgetShadow:(0,n.n_1)(n.y65),inputBoxStyles:h,toggleStyles:l},c={badgeBackground:(0,n.n_1)(n.g8u),badgeForeground:(0,n.n_1)(n.qeD),badgeBorder:(0,n.n_1)(n.lRK)},u=((0,n.n_1)(n.ixd),(0,n.n_1)(n.l80),(0,n.n_1)(n.H6q),(0,n.n_1)(n.H6q),(0,n.n_1)(n.fSI),{listBackground:void 0,listInactiveFocusForeground:void 0,listFocusBackground:(0,n.n_1)(n._bK),listFocusForeground:(0,n.n_1)(n._2n),listFocusOutline:(0,n.n_1)(n.Oop),listActiveSelectionBackground:(0,n.n_1)(n.dCr),listActiveSelectionForeground:(0,n.n_1)(n.M6C),listActiveSelectionIconForeground:(0,n.n_1)(n.Tnx),listFocusAndSelectionOutline:(0,n.n_1)(n.Bqu),listFocusAndSelectionBackground:(0,n.n_1)(n.dCr),listFocusAndSelectionForeground:(0,n.n_1)(n.M6C),listInactiveSelectionBackground:(0,n.n_1)(n.rg2),listInactiveSelectionIconForeground:(0,n.n_1)(n.kvU),listInactiveSelectionForeground:(0,n.n_1)(n.ytC),listInactiveFocusBackground:(0,n.n_1)(n.s$),listInactiveFocusOutline:(0,n.n_1)(n.F3d),listHoverBackground:(0,n.n_1)(n.mV1),listHoverForeground:(0,n.n_1)(n.$d5),listDropOverBackground:(0,n.n_1)(n.pdn),listDropBetweenBackground:(0,n.n_1)(n.XVp),listSelectionOutline:(0,n.n_1)(n.xL1),listHoverOutline:(0,n.n_1)(n.xL1),treeIndentGuidesStroke:(0,n.n_1)(n.UnT),treeInactiveIndentGuidesStroke:(0,n.n_1)(n.KjV),tableColumnsBorder:(0,n.n_1)(n.uxu),tableOddRowsBackgroundColor:(0,n.n_1)(n.EQn)});function g(e){return function(e,t){const i={...t};for(const o in e){const t=e[o];i[o]=void 0!==t?(0,n.n_1)(t):void 0}return i}(e,u)}const m={selectBackground:(0,n.n_1)(n.XV0),selectListBackground:(0,n.n_1)(n.Fgs),selectForeground:(0,n.n_1)(n._g0),decoratorRightForeground:(0,n.n_1)(n.kJk),selectBorder:(0,n.n_1)(n.a9O),focusBorder:(0,n.n_1)(n.R80),listFocusBackground:(0,n.n_1)(n.Vqd),listInactiveSelectionIconForeground:(0,n.n_1)(n.cbQ),listFocusForeground:(0,n.n_1)(n.NPS),listFocusOutline:(0,n.BtC)(n.xL1,o.Il.transparent.toString()),listHoverBackground:(0,n.n_1)(n.mV1),listHoverForeground:(0,n.n_1)(n.$d5),listHoverOutline:(0,n.n_1)(n.xL1),selectListBorder:(0,n.n_1)(n.D1_),listBackground:void 0,listActiveSelectionBackground:void 0,listActiveSelectionForeground:void 0,listActiveSelectionIconForeground:void 0,listFocusAndSelectionBackground:void 0,listDropOverBackground:void 0,listDropBetweenBackground:void 0,listInactiveSelectionBackground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusBackground:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listFocusAndSelectionForeground:void 0,listFocusAndSelectionOutline:void 0,listInactiveFocusForeground:void 0,tableColumnsBorder:void 0,tableOddRowsBackgroundColor:void 0,treeIndentGuidesStroke:void 0,treeInactiveIndentGuidesStroke:void 0},f={shadowColor:(0,n.n_1)(n.rh),borderColor:(0,n.n_1)(n.Cdg),foregroundColor:(0,n.n_1)(n.DEr),backgroundColor:(0,n.n_1)(n.Hz8),selectionForegroundColor:(0,n.n_1)(n.jbW),selectionBackgroundColor:(0,n.n_1)(n.$DX),selectionBorderColor:(0,n.n_1)(n.E3h),separatorColor:(0,n.n_1)(n.ZGJ),scrollbarShadow:(0,n.n_1)(n._wn),scrollbarSliderBackground:(0,n.n_1)(n.etL),scrollbarSliderHoverBackground:(0,n.n_1)(n.ABB),scrollbarSliderActiveBackground:(0,n.n_1)(n.ynu)}},87701:(e,t,i)=>{i.d(t,{IPX:()=>u,xL1:()=>E,n_1:()=>d,QO2:()=>h,BtC:()=>c,g8u:()=>T,qeD:()=>M,fSI:()=>De,ixd:()=>Le,H6q:()=>ke,l80:()=>Se,b7$:()=>ft,GYc:()=>_t,j5u:()=>gt,GO4:()=>pt,ESD:()=>bt,qBU:()=>vt,xEn:()=>Ct,iFQ:()=>mt,SUp:()=>wt,nd:()=>St,BQ0:()=>yt,lRK:()=>x,CzK:()=>me,keg:()=>fe,ypS:()=>pe,P6Y:()=>ve,F9q:()=>be,P4M:()=>_e,_Yy:()=>$,cvW:()=>B,b6y:()=>U,lXJ:()=>K,MUv:()=>ie,EiJ:()=>ne,gkn:()=>oe,NOs:()=>z,Dut:()=>Y,yJx:()=>se,CNo:()=>re,ES4:()=>ee,T83:()=>Z,c63:()=>Q,PpC:()=>le,VVv:()=>ae,phM:()=>ue,HCL:()=>ce,bKB:()=>de,hX8:()=>he,hEj:()=>J,yb5:()=>X,Rzx:()=>te,gpD:()=>j,pW3:()=>G,uoC:()=>q,D0T:()=>V,D1_:()=>H,Hfx:()=>W,R80:()=>N,dRz:()=>k,XZx:()=>D,XEs:()=>Je,PRb:()=>$e,Pvw:()=>Xe,sEe:()=>Qe,dt_:()=>Ye,zJb:()=>Ze,paE:()=>rt,OZR:()=>lt,_t9:()=>at,_lC:()=>et,EPQ:()=>it,YI3:()=>tt,RV_:()=>nt,C3g:()=>st,SUG:()=>ot,oQ$:()=>Lt,AWI:()=>Dt,K19:()=>Nt,lWp:()=>kt,dCr:()=>Mt,M6C:()=>At,Tnx:()=>Rt,XVp:()=>Kt,pdn:()=>Ht,vGG:()=>Zt,Saq:()=>$t,oSI:()=>Yt,y65:()=>Jt,Bqu:()=>Tt,_bK:()=>xt,_2n:()=>Et,PX0:()=>jt,Oop:()=>It,Gwp:()=>Ut,mV1:()=>Vt,$d5:()=>Wt,s$:()=>Bt,F3d:()=>zt,rg2:()=>Ot,ytC:()=>Pt,kvU:()=>Ft,Hz8:()=>si,Cdg:()=>ni,DEr:()=>oi,$DX:()=>ai,E3h:()=>li,jbW:()=>ri,ZGJ:()=>hi,kVY:()=>qe,Gj_:()=>je,SUY:()=>Ve,Itd:()=>Ge,Gvr:()=>Ke,ov3:()=>He,IYc:()=>We,Ivo:()=>Ue,kwl:()=>v,Fm_:()=>Oe,SPM:()=>Pe,opG:()=>mi,kJk:()=>gi,JpG:()=>Fe,OLZ:()=>ze,BOY:()=>Be,zRJ:()=>F,zKr:()=>di,tZ6:()=>ci,Vqd:()=>vi,NPS:()=>pi,cbQ:()=>_i,loF:()=>ui,P6G:()=>m,_wn:()=>A,ynu:()=>P,etL:()=>R,ABB:()=>O,XV0:()=>ht,a9O:()=>ut,_g0:()=>ct,Fgs:()=>dt,uxu:()=>ti,EQn:()=>ii,url:()=>I,ZnX:()=>_,KjV:()=>ei,UnT:()=>Xt,A42:()=>we,rh:()=>Ce});var n=i(39880),o=i(60282),s=i(89652),r=i(24219),a=i(72677),l=i(70311);function h(e){return"--vscode-".concat(e.replace(/\./g,"-"))}function d(e){return"var(".concat(h(e),")")}function c(e,t){return"var(".concat(h(e),", ").concat(t,")")}const u={ColorContribution:"base.contributions.colors"};const g=new class{constructor(){this._onDidChangeSchema=new r.Q5,this.onDidChangeSchema=this._onDidChangeSchema.event,this.colorSchema={type:"object",properties:{}},this.colorReferenceSchema={type:"string",enum:[],enumDescriptions:[]},this.colorsById={}}registerColor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4?arguments[4]:void 0;const s={id:e,description:i,defaults:t,needsTransparency:n,deprecationMessage:o};this.colorsById[e]=s;const r={type:"string",description:i,format:"color-hex",defaultSnippets:[{body:"${1:#ff0000}"}]};return o&&(r.deprecationMessage=o),n&&(r.pattern="^#(?:(?[0-9a-fA-f]{3}[0-9a-eA-E])|(?:[0-9a-fA-F]{6}(?:(?![fF]{2})(?:[0-9a-fA-F]{2}))))?$",r.patternErrorMessage="This color must be transparent or it will obscure content"),this.colorSchema.properties[e]=r,this.colorReferenceSchema.enum.push(e),this.colorReferenceSchema.enumDescriptions.push(i),this._onDidChangeSchema.fire(),e}getColors(){return Object.keys(this.colorsById).map((e=>this.colorsById[e]))}resolveDefaultColor(e,t){const i=this.colorsById[e];if(i&&i.defaults){return C(i.defaults[t.type],t)}}getColorSchema(){return this.colorSchema}toString(){return Object.keys(this.colorsById).sort(((e,t)=>{const i=-1===e.indexOf(".")?0:1,n=-1===t.indexOf(".")?0:1;return i!==n?i-n:e.localeCompare(t)})).map((e=>"- `".concat(e,"`: ").concat(this.colorsById[e].description))).join("\n")}};function m(e,t,i,n,o){return g.registerColor(e,t,i,n,o)}function f(e,t){return{op:0,value:e,factor:t}}function p(e,t){return{op:1,value:e,factor:t}}function _(e,t){return{op:2,value:e,factor:t}}function v(){for(var e=arguments.length,t=new Array(e),i=0;iy.notifySchemaChanged(w)),200);g.onDidChangeSchema((()=>{S.isScheduled()||S.schedule()}));var L=i(71721);const k=m("foreground",{dark:"#CCCCCC",light:"#616161",hcDark:"#FFFFFF",hcLight:"#292929"},L.NC("foreground","Overall foreground color. This color is only used if not overridden by a component.")),D=(m("disabledForeground",{dark:"#CCCCCC80",light:"#61616180",hcDark:"#A5A5A5",hcLight:"#7F7F7F"},L.NC("disabledForeground","Overall foreground for disabled elements. This color is only used if not overridden by a component.")),m("errorForeground",{dark:"#F48771",light:"#A1260D",hcDark:"#F48771",hcLight:"#B5200D"},L.NC("errorForeground","Overall foreground color for error messages. This color is only used if not overridden by a component.")),m("descriptionForeground",{light:"#717171",dark:_(k,.7),hcDark:_(k,.7),hcLight:_(k,.7)},L.NC("descriptionForeground","Foreground color for description text providing additional information, for example for a label.")),m("icon.foreground",{dark:"#C5C5C5",light:"#424242",hcDark:"#FFFFFF",hcLight:"#292929"},L.NC("iconForeground","The default color for icons in the workbench."))),N=m("focusBorder",{dark:"#007FD4",light:"#0090F1",hcDark:"#F38518",hcLight:"#006BBD"},L.NC("focusBorder","Overall border color for focused elements. This color is only used if not overridden by a component.")),x=m("contrastBorder",{light:null,dark:null,hcDark:"#6FC3DF",hcLight:"#0F4A85"},L.NC("contrastBorder","An extra border around elements to separate them from others for greater contrast.")),E=m("contrastActiveBorder",{light:null,dark:null,hcDark:N,hcLight:N},L.NC("activeContrastBorder","An extra border around active elements to separate them from others for greater contrast.")),I=(m("selection.background",{light:null,dark:null,hcDark:null,hcLight:null},L.NC("selectionBackground","The background color of text selections in the workbench (e.g. for input fields or text areas). Note that this does not apply to selections within the editor.")),m("textLink.foreground",{light:"#006AB1",dark:"#3794FF",hcDark:"#21A6FF",hcLight:"#0F4A85"},L.NC("textLinkForeground","Foreground color for links in text."))),T=(m("textLink.activeForeground",{light:"#006AB1",dark:"#3794FF",hcDark:"#21A6FF",hcLight:"#0F4A85"},L.NC("textLinkActiveForeground","Foreground color for links in text when clicked on and on mouse hover.")),m("textSeparator.foreground",{light:"#0000002e",dark:"#ffffff2e",hcDark:s.Il.black,hcLight:"#292929"},L.NC("textSeparatorForeground","Color for text separators.")),m("textPreformat.foreground",{light:"#A31515",dark:"#D7BA7D",hcDark:"#000000",hcLight:"#FFFFFF"},L.NC("textPreformatForeground","Foreground color for preformatted text segments.")),m("textPreformat.background",{light:"#0000001A",dark:"#FFFFFF1A",hcDark:"#FFFFFF",hcLight:"#09345f"},L.NC("textPreformatBackground","Background color for preformatted text segments.")),m("textBlockQuote.background",{light:"#f2f2f2",dark:"#222222",hcDark:null,hcLight:"#F2F2F2"},L.NC("textBlockQuoteBackground","Background color for block quotes in text.")),m("textBlockQuote.border",{light:"#007acc80",dark:"#007acc80",hcDark:s.Il.white,hcLight:"#292929"},L.NC("textBlockQuoteBorder","Border color for block quotes in text.")),m("textCodeBlock.background",{light:"#dcdcdc66",dark:"#0a0a0a66",hcDark:s.Il.black,hcLight:"#F2F2F2"},L.NC("textCodeBlockBackground","Background color for code blocks in text.")),m("sash.hoverBorder",{dark:N,light:N,hcDark:N,hcLight:N},L.NC("sashActiveBorder","Border color of active sashes.")),m("badge.background",{dark:"#4D4D4D",light:"#C4C4C4",hcDark:s.Il.black,hcLight:"#0F4A85"},L.NC("badgeBackground","Badge background color. Badges are small information labels, e.g. for search results count."))),M=m("badge.foreground",{dark:s.Il.white,light:"#333",hcDark:s.Il.white,hcLight:s.Il.white},L.NC("badgeForeground","Badge foreground color. Badges are small information labels, e.g. for search results count.")),A=m("scrollbar.shadow",{dark:"#000000",light:"#DDDDDD",hcDark:null,hcLight:null},L.NC("scrollbarShadow","Scrollbar shadow to indicate that the view is scrolled.")),R=m("scrollbarSlider.background",{dark:s.Il.fromHex("#797979").transparent(.4),light:s.Il.fromHex("#646464").transparent(.4),hcDark:_(x,.6),hcLight:_(x,.4)},L.NC("scrollbarSliderBackground","Scrollbar slider background color.")),O=m("scrollbarSlider.hoverBackground",{dark:s.Il.fromHex("#646464").transparent(.7),light:s.Il.fromHex("#646464").transparent(.7),hcDark:_(x,.8),hcLight:_(x,.8)},L.NC("scrollbarSliderHoverBackground","Scrollbar slider background color when hovering.")),P=m("scrollbarSlider.activeBackground",{dark:s.Il.fromHex("#BFBFBF").transparent(.4),light:s.Il.fromHex("#000000").transparent(.6),hcDark:x,hcLight:x},L.NC("scrollbarSliderActiveBackground","Scrollbar slider background color when clicked on.")),F=m("progressBar.background",{dark:s.Il.fromHex("#0E70C0"),light:s.Il.fromHex("#0E70C0"),hcDark:x,hcLight:x},L.NC("progressBarBackground","Background color of the progress bar that can show for long running operations.")),B=m("editor.background",{light:"#ffffff",dark:"#1E1E1E",hcDark:s.Il.black,hcLight:s.Il.white},L.NC("editorBackground","Editor background color.")),z=m("editor.foreground",{light:"#333333",dark:"#BBBBBB",hcDark:s.Il.white,hcLight:k},L.NC("editorForeground","Editor default foreground color.")),V=(m("editorStickyScroll.background",{light:B,dark:B,hcDark:B,hcLight:B},L.NC("editorStickyScrollBackground","Background color of sticky scroll in the editor")),m("editorStickyScrollHover.background",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:null,hcLight:s.Il.fromHex("#0F4A85").transparent(.1)},L.NC("editorStickyScrollHoverBackground","Background color of sticky scroll on hover in the editor")),m("editorStickyScroll.border",{dark:null,light:null,hcDark:x,hcLight:x},L.NC("editorStickyScrollBorder","Border color of sticky scroll in the editor")),m("editorStickyScroll.shadow",{dark:A,light:A,hcDark:A,hcLight:A},L.NC("editorStickyScrollShadow"," Shadow color of sticky scroll in the editor")),m("editorWidget.background",{dark:"#252526",light:"#F3F3F3",hcDark:"#0C141F",hcLight:s.Il.white},L.NC("editorWidgetBackground","Background color of editor widgets, such as find/replace."))),W=m("editorWidget.foreground",{dark:k,light:k,hcDark:k,hcLight:k},L.NC("editorWidgetForeground","Foreground color of editor widgets, such as find/replace.")),H=m("editorWidget.border",{dark:"#454545",light:"#C8C8C8",hcDark:x,hcLight:x},L.NC("editorWidgetBorder","Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.")),K=(m("editorWidget.resizeBorder",{light:null,dark:null,hcDark:null,hcLight:null},L.NC("editorWidgetResizeBorder","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.")),m("editorError.background",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("editorError.background","Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0),m("editorError.foreground",{dark:"#F14C4C",light:"#E51400",hcDark:"#F48771",hcLight:"#B5200D"},L.NC("editorError.foreground","Foreground color of error squigglies in the editor."))),U=m("editorError.border",{dark:null,light:null,hcDark:s.Il.fromHex("#E47777").transparent(.8),hcLight:"#B5200D"},L.NC("errorBorder","If set, color of double underlines for errors in the editor.")),j=m("editorWarning.background",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("editorWarning.background","Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0),q=m("editorWarning.foreground",{dark:"#CCA700",light:"#BF8803",hcDark:"#FFD370",hcLight:"#895503"},L.NC("editorWarning.foreground","Foreground color of warning squigglies in the editor.")),G=m("editorWarning.border",{dark:null,light:null,hcDark:s.Il.fromHex("#FFCC00").transparent(.8),hcLight:s.Il.fromHex("#FFCC00").transparent(.8)},L.NC("warningBorder","If set, color of double underlines for warnings in the editor.")),Q=(m("editorInfo.background",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("editorInfo.background","Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0),m("editorInfo.foreground",{dark:"#3794FF",light:"#1a85ff",hcDark:"#3794FF",hcLight:"#1a85ff"},L.NC("editorInfo.foreground","Foreground color of info squigglies in the editor."))),Z=m("editorInfo.border",{dark:null,light:null,hcDark:s.Il.fromHex("#3794FF").transparent(.8),hcLight:"#292929"},L.NC("infoBorder","If set, color of double underlines for infos in the editor.")),Y=m("editorHint.foreground",{dark:s.Il.fromHex("#eeeeee").transparent(.7),light:"#6c6c6c",hcDark:null,hcLight:null},L.NC("editorHint.foreground","Foreground color of hint squigglies in the editor.")),$=(m("editorHint.border",{dark:null,light:null,hcDark:s.Il.fromHex("#eeeeee").transparent(.8),hcLight:"#292929"},L.NC("hintBorder","If set, color of double underlines for hints in the editor.")),m("editorLink.activeForeground",{dark:"#4E94CE",light:s.Il.blue,hcDark:s.Il.cyan,hcLight:"#292929"},L.NC("activeLinkForeground","Color of active links."))),J=m("editor.selectionBackground",{light:"#ADD6FF",dark:"#264F78",hcDark:"#f3f518",hcLight:"#0F4A85"},L.NC("editorSelectionBackground","Color of the editor selection.")),X=m("editor.selectionForeground",{light:null,dark:null,hcDark:"#000000",hcLight:s.Il.white},L.NC("editorSelectionForeground","Color of the selected text for high contrast.")),ee=m("editor.inactiveSelectionBackground",{light:_(J,.5),dark:_(J,.5),hcDark:_(J,.7),hcLight:_(J,.5)},L.NC("editorInactiveSelection","Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations."),!0),te=m("editor.selectionHighlightBackground",{light:b(J,B,.3,.6),dark:b(J,B,.3,.6),hcDark:null,hcLight:null},L.NC("editorSelectionHighlight","Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations."),!0),ie=(m("editor.selectionHighlightBorder",{light:null,dark:null,hcDark:E,hcLight:E},L.NC("editorSelectionHighlightBorder","Border color for regions with the same content as the selection.")),m("editor.findMatchBackground",{light:"#A8AC94",dark:"#515C6A",hcDark:null,hcLight:null},L.NC("editorFindMatch","Color of the current search match.")),m("editor.findMatchHighlightBackground",{light:"#EA5C0055",dark:"#EA5C0055",hcDark:null,hcLight:null},L.NC("findMatchHighlight","Color of the other search matches. The color must not be opaque so as not to hide underlying decorations."),!0)),ne=(m("editor.findRangeHighlightBackground",{dark:"#3a3d4166",light:"#b4b4b44d",hcDark:null,hcLight:null},L.NC("findRangeHighlight","Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0),m("editor.findMatchBorder",{light:null,dark:null,hcDark:E,hcLight:E},L.NC("editorFindMatchBorder","Border color of the current search match.")),m("editor.findMatchHighlightBorder",{light:null,dark:null,hcDark:E,hcLight:E},L.NC("findMatchHighlightBorder","Border color of the other search matches."))),oe=m("editor.findRangeHighlightBorder",{dark:null,light:null,hcDark:_(E,.4),hcLight:_(E,.4)},L.NC("findRangeHighlightBorder","Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0),se=(m("editor.hoverHighlightBackground",{light:"#ADD6FF26",dark:"#264f7840",hcDark:"#ADD6FF26",hcLight:null},L.NC("hoverHighlight","Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations."),!0),m("editorHoverWidget.background",{light:V,dark:V,hcDark:V,hcLight:V},L.NC("hoverBackground","Background color of the editor hover."))),re=(m("editorHoverWidget.foreground",{light:W,dark:W,hcDark:W,hcLight:W},L.NC("hoverForeground","Foreground color of the editor hover.")),m("editorHoverWidget.border",{light:H,dark:H,hcDark:H,hcLight:H},L.NC("hoverBorder","Border color of the editor hover."))),ae=(m("editorHoverWidget.statusBarBackground",{dark:p(se,.2),light:f(se,.05),hcDark:V,hcLight:V},L.NC("statusBarBackground","Background color of the editor hover status bar.")),m("editorInlayHint.foreground",{dark:"#969696",light:"#969696",hcDark:s.Il.white,hcLight:s.Il.black},L.NC("editorInlayHintForeground","Foreground color of inline hints"))),le=m("editorInlayHint.background",{dark:_(T,.1),light:_(T,.1),hcDark:_(s.Il.white,.1),hcLight:_(T,.1)},L.NC("editorInlayHintBackground","Background color of inline hints")),he=m("editorInlayHint.typeForeground",{dark:ae,light:ae,hcDark:ae,hcLight:ae},L.NC("editorInlayHintForegroundTypes","Foreground color of inline hints for types")),de=m("editorInlayHint.typeBackground",{dark:le,light:le,hcDark:le,hcLight:le},L.NC("editorInlayHintBackgroundTypes","Background color of inline hints for types")),ce=m("editorInlayHint.parameterForeground",{dark:ae,light:ae,hcDark:ae,hcLight:ae},L.NC("editorInlayHintForegroundParameter","Foreground color of inline hints for parameters")),ue=m("editorInlayHint.parameterBackground",{dark:le,light:le,hcDark:le,hcLight:le},L.NC("editorInlayHintBackgroundParameter","Background color of inline hints for parameters")),ge=m("editorLightBulb.foreground",{dark:"#FFCC00",light:"#DDB100",hcDark:"#FFCC00",hcLight:"#007ACC"},L.NC("editorLightBulbForeground","The color used for the lightbulb actions icon.")),me=(m("editorLightBulbAutoFix.foreground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},L.NC("editorLightBulbAutoFixForeground","The color used for the lightbulb auto fix actions icon.")),m("editorLightBulbAi.foreground",{dark:ge,light:ge,hcDark:ge,hcLight:ge},L.NC("editorLightBulbAiForeground","The color used for the lightbulb AI icon.")),m("editor.snippetTabstopHighlightBackground",{dark:new s.Il(new s.VS(124,124,124,.3)),light:new s.Il(new s.VS(10,50,100,.2)),hcDark:new s.Il(new s.VS(124,124,124,.3)),hcLight:new s.Il(new s.VS(10,50,100,.2))},L.NC("snippetTabstopHighlightBackground","Highlight background color of a snippet tabstop.")),m("editor.snippetTabstopHighlightBorder",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("snippetTabstopHighlightBorder","Highlight border color of a snippet tabstop.")),m("editor.snippetFinalTabstopHighlightBackground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("snippetFinalTabstopHighlightBackground","Highlight background color of the final tabstop of a snippet.")),m("editor.snippetFinalTabstopHighlightBorder",{dark:"#525252",light:new s.Il(new s.VS(10,50,100,.5)),hcDark:"#525252",hcLight:"#292929"},L.NC("snippetFinalTabstopHighlightBorder","Highlight border color of the final tabstop of a snippet.")),new s.Il(new s.VS(155,185,85,.2))),fe=new s.Il(new s.VS(255,0,0,.2)),pe=m("diffEditor.insertedTextBackground",{dark:"#9ccc2c33",light:"#9ccc2c40",hcDark:null,hcLight:null},L.NC("diffEditorInserted","Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations."),!0),_e=m("diffEditor.removedTextBackground",{dark:"#ff000033",light:"#ff000033",hcDark:null,hcLight:null},L.NC("diffEditorRemoved","Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations."),!0),ve=(m("diffEditor.insertedLineBackground",{dark:me,light:me,hcDark:null,hcLight:null},L.NC("diffEditorInsertedLines","Background color for lines that got inserted. The color must not be opaque so as not to hide underlying decorations."),!0),m("diffEditor.removedLineBackground",{dark:fe,light:fe,hcDark:null,hcLight:null},L.NC("diffEditorRemovedLines","Background color for lines that got removed. The color must not be opaque so as not to hide underlying decorations."),!0),m("diffEditorGutter.insertedLineBackground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("diffEditorInsertedLineGutter","Background color for the margin where lines got inserted.")),m("diffEditorGutter.removedLineBackground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("diffEditorRemovedLineGutter","Background color for the margin where lines got removed.")),m("diffEditorOverview.insertedForeground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("diffEditorOverviewInserted","Diff overview ruler foreground for inserted content."))),be=m("diffEditorOverview.removedForeground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("diffEditorOverviewRemoved","Diff overview ruler foreground for removed content.")),Ce=(m("diffEditor.insertedTextBorder",{dark:null,light:null,hcDark:"#33ff2eff",hcLight:"#374E06"},L.NC("diffEditorInsertedOutline","Outline color for the text that got inserted.")),m("diffEditor.removedTextBorder",{dark:null,light:null,hcDark:"#FF008F",hcLight:"#AD0707"},L.NC("diffEditorRemovedOutline","Outline color for text that got removed.")),m("diffEditor.border",{dark:null,light:null,hcDark:x,hcLight:x},L.NC("diffEditorBorder","Border color between the two text editors.")),m("diffEditor.diagonalFill",{dark:"#cccccc33",light:"#22222233",hcDark:null,hcLight:null},L.NC("diffDiagonalFill","Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views.")),m("diffEditor.unchangedRegionBackground",{dark:"sideBar.background",light:"sideBar.background",hcDark:"sideBar.background",hcLight:"sideBar.background"},L.NC("diffEditor.unchangedRegionBackground","The background color of unchanged blocks in the diff editor.")),m("diffEditor.unchangedRegionForeground",{dark:"foreground",light:"foreground",hcDark:"foreground",hcLight:"foreground"},L.NC("diffEditor.unchangedRegionForeground","The foreground color of unchanged blocks in the diff editor.")),m("diffEditor.unchangedCodeBackground",{dark:"#74747429",light:"#b8b8b829",hcDark:null,hcLight:null},L.NC("diffEditor.unchangedCodeBackground","The background color of unchanged code in the diff editor.")),m("widget.shadow",{dark:_(s.Il.black,.36),light:_(s.Il.black,.16),hcDark:null,hcLight:null},L.NC("widgetShadow","Shadow color of widgets such as find/replace inside the editor."))),we=m("widget.border",{dark:null,light:null,hcDark:x,hcLight:x},L.NC("widgetBorder","Border color of widgets such as find/replace inside the editor.")),ye=m("toolbar.hoverBackground",{dark:"#5a5d5e50",light:"#b8b8b850",hcDark:null,hcLight:null},L.NC("toolbarHoverBackground","Toolbar background when hovering over actions using the mouse")),Se=(m("toolbar.hoverOutline",{dark:null,light:null,hcDark:E,hcLight:E},L.NC("toolbarHoverOutline","Toolbar outline when hovering over actions using the mouse")),m("toolbar.activeBackground",{dark:p(ye,.1),light:f(ye,.1),hcDark:null,hcLight:null},L.NC("toolbarActiveBackground","Toolbar background when holding the mouse over actions")),m("breadcrumb.foreground",{light:_(k,.8),dark:_(k,.8),hcDark:_(k,.8),hcLight:_(k,.8)},L.NC("breadcrumbsFocusForeground","Color of focused breadcrumb items."))),Le=m("breadcrumb.background",{light:B,dark:B,hcDark:B,hcLight:B},L.NC("breadcrumbsBackground","Background color of breadcrumb items.")),ke=m("breadcrumb.focusForeground",{light:f(k,.2),dark:p(k,.1),hcDark:p(k,.1),hcLight:p(k,.1)},L.NC("breadcrumbsFocusForeground","Color of focused breadcrumb items.")),De=m("breadcrumb.activeSelectionForeground",{light:f(k,.2),dark:p(k,.1),hcDark:p(k,.1),hcLight:p(k,.1)},L.NC("breadcrumbsSelectedForeground","Color of selected breadcrumb items.")),Ne=(m("breadcrumbPicker.background",{light:V,dark:V,hcDark:V,hcLight:V},L.NC("breadcrumbsSelectedBackground","Background color of breadcrumb item picker.")),s.Il.fromHex("#40C8AE").transparent(.5)),xe=s.Il.fromHex("#40A6FF").transparent(.5),Ee=s.Il.fromHex("#606060").transparent(.4),Ie=.4,Te=m("merge.currentHeaderBackground",{dark:Ne,light:Ne,hcDark:null,hcLight:null},L.NC("mergeCurrentHeaderBackground","Current header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0),Me=(m("merge.currentContentBackground",{dark:_(Te,Ie),light:_(Te,Ie),hcDark:_(Te,Ie),hcLight:_(Te,Ie)},L.NC("mergeCurrentContentBackground","Current content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0),m("merge.incomingHeaderBackground",{dark:xe,light:xe,hcDark:null,hcLight:null},L.NC("mergeIncomingHeaderBackground","Incoming header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0)),Ae=(m("merge.incomingContentBackground",{dark:_(Me,Ie),light:_(Me,Ie),hcDark:_(Me,Ie),hcLight:_(Me,Ie)},L.NC("mergeIncomingContentBackground","Incoming content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0),m("merge.commonHeaderBackground",{dark:Ee,light:Ee,hcDark:null,hcLight:null},L.NC("mergeCommonHeaderBackground","Common ancestor header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0)),Re=(m("merge.commonContentBackground",{dark:_(Ae,Ie),light:_(Ae,Ie),hcDark:_(Ae,Ie),hcLight:_(Ae,Ie)},L.NC("mergeCommonContentBackground","Common ancestor content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0),m("merge.border",{dark:null,light:null,hcDark:"#C3DF6F",hcLight:"#007ACC"},L.NC("mergeBorder","Border color on headers and the splitter in inline merge-conflicts."))),Oe=(m("editorOverviewRuler.currentContentForeground",{dark:_(Te,1),light:_(Te,1),hcDark:Re,hcLight:Re},L.NC("overviewRulerCurrentContentForeground","Current overview ruler foreground for inline merge-conflicts.")),m("editorOverviewRuler.incomingContentForeground",{dark:_(Me,1),light:_(Me,1),hcDark:Re,hcLight:Re},L.NC("overviewRulerIncomingContentForeground","Incoming overview ruler foreground for inline merge-conflicts.")),m("editorOverviewRuler.commonContentForeground",{dark:_(Ae,1),light:_(Ae,1),hcDark:Re,hcLight:Re},L.NC("overviewRulerCommonContentForeground","Common ancestor overview ruler foreground for inline merge-conflicts.")),m("editorOverviewRuler.findMatchForeground",{dark:"#d186167e",light:"#d186167e",hcDark:"#AB5A00",hcLight:""},L.NC("overviewRulerFindMatchForeground","Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations."),!0)),Pe=m("editorOverviewRuler.selectionHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hcDark:"#A0A0A0CC",hcLight:"#A0A0A0CC"},L.NC("overviewRulerSelectionHighlightForeground","Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations."),!0),Fe=m("problemsErrorIcon.foreground",{dark:K,light:K,hcDark:K,hcLight:K},L.NC("problemsErrorIconForeground","The color used for the problems error icon.")),Be=m("problemsWarningIcon.foreground",{dark:q,light:q,hcDark:q,hcLight:q},L.NC("problemsWarningIconForeground","The color used for the problems warning icon.")),ze=m("problemsInfoIcon.foreground",{dark:Q,light:Q,hcDark:Q,hcLight:Q},L.NC("problemsInfoIconForeground","The color used for the problems info icon.")),Ve=m("minimap.findMatchHighlight",{light:"#d18616",dark:"#d18616",hcDark:"#AB5A00",hcLight:"#0F4A85"},L.NC("minimapFindMatchHighlight","Minimap marker color for find matches."),!0),We=m("minimap.selectionOccurrenceHighlight",{light:"#c9c9c9",dark:"#676767",hcDark:"#ffffff",hcLight:"#0F4A85"},L.NC("minimapSelectionOccurrenceHighlight","Minimap marker color for repeating editor selections."),!0),He=m("minimap.selectionHighlight",{light:"#ADD6FF",dark:"#264F78",hcDark:"#ffffff",hcLight:"#0F4A85"},L.NC("minimapSelectionHighlight","Minimap marker color for the editor selection."),!0),Ke=m("minimap.infoHighlight",{dark:Q,light:Q,hcDark:Z,hcLight:Z},L.NC("minimapInfo","Minimap marker color for infos.")),Ue=m("minimap.warningHighlight",{dark:q,light:q,hcDark:G,hcLight:G},L.NC("overviewRuleWarning","Minimap marker color for warnings.")),je=m("minimap.errorHighlight",{dark:new s.Il(new s.VS(255,18,18,.7)),light:new s.Il(new s.VS(255,18,18,.7)),hcDark:new s.Il(new s.VS(255,50,50,1)),hcLight:"#B5200D"},L.NC("minimapError","Minimap marker color for errors.")),qe=m("minimap.background",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("minimapBackground","Minimap background color.")),Ge=m("minimap.foregroundOpacity",{dark:s.Il.fromHex("#000f"),light:s.Il.fromHex("#000f"),hcDark:s.Il.fromHex("#000f"),hcLight:s.Il.fromHex("#000f")},L.NC("minimapForegroundOpacity",'Opacity of foreground elements rendered in the minimap. For example, "#000000c0" will render the elements with 75% opacity.')),Qe=(m("minimapSlider.background",{light:_(R,.5),dark:_(R,.5),hcDark:_(R,.5),hcLight:_(R,.5)},L.NC("minimapSliderBackground","Minimap slider background color.")),m("minimapSlider.hoverBackground",{light:_(O,.5),dark:_(O,.5),hcDark:_(O,.5),hcLight:_(O,.5)},L.NC("minimapSliderHoverBackground","Minimap slider background color when hovering.")),m("minimapSlider.activeBackground",{light:_(P,.5),dark:_(P,.5),hcDark:_(P,.5),hcLight:_(P,.5)},L.NC("minimapSliderActiveBackground","Minimap slider background color when clicked on.")),m("charts.foreground",{dark:k,light:k,hcDark:k,hcLight:k},L.NC("chartsForeground","The foreground color used in charts.")),m("charts.lines",{dark:_(k,.5),light:_(k,.5),hcDark:_(k,.5),hcLight:_(k,.5)},L.NC("chartsLines","The color used for horizontal lines in charts.")),m("charts.red",{dark:K,light:K,hcDark:K,hcLight:K},L.NC("chartsRed","The red color used in chart visualizations.")),m("charts.blue",{dark:Q,light:Q,hcDark:Q,hcLight:Q},L.NC("chartsBlue","The blue color used in chart visualizations.")),m("charts.yellow",{dark:q,light:q,hcDark:q,hcLight:q},L.NC("chartsYellow","The yellow color used in chart visualizations.")),m("charts.orange",{dark:Ve,light:Ve,hcDark:Ve,hcLight:Ve},L.NC("chartsOrange","The orange color used in chart visualizations.")),m("charts.green",{dark:"#89D185",light:"#388A34",hcDark:"#89D185",hcLight:"#374e06"},L.NC("chartsGreen","The green color used in chart visualizations.")),m("charts.purple",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},L.NC("chartsPurple","The purple color used in chart visualizations.")),m("input.background",{dark:"#3C3C3C",light:s.Il.white,hcDark:s.Il.black,hcLight:s.Il.white},L.NC("inputBoxBackground","Input box background."))),Ze=m("input.foreground",{dark:k,light:k,hcDark:k,hcLight:k},L.NC("inputBoxForeground","Input box foreground.")),Ye=m("input.border",{dark:null,light:null,hcDark:x,hcLight:x},L.NC("inputBoxBorder","Input box border.")),$e=m("inputOption.activeBorder",{dark:"#007ACC",light:"#007ACC",hcDark:x,hcLight:x},L.NC("inputBoxActiveOptionBorder","Border color of activated options in input fields.")),Je=(m("inputOption.hoverBackground",{dark:"#5a5d5e80",light:"#b8b8b850",hcDark:null,hcLight:null},L.NC("inputOption.hoverBackground","Background color of activated options in input fields.")),m("inputOption.activeBackground",{dark:_(N,.4),light:_(N,.2),hcDark:s.Il.transparent,hcLight:s.Il.transparent},L.NC("inputOption.activeBackground","Background hover color of options in input fields."))),Xe=m("inputOption.activeForeground",{dark:s.Il.white,light:s.Il.black,hcDark:k,hcLight:k},L.NC("inputOption.activeForeground","Foreground color of activated options in input fields.")),et=(m("input.placeholderForeground",{light:_(k,.5),dark:_(k,.5),hcDark:_(k,.7),hcLight:_(k,.7)},L.NC("inputPlaceholderForeground","Input box foreground color for placeholder text.")),m("inputValidation.infoBackground",{dark:"#063B49",light:"#D6ECF2",hcDark:s.Il.black,hcLight:s.Il.white},L.NC("inputValidationInfoBackground","Input validation background color for information severity."))),tt=m("inputValidation.infoForeground",{dark:null,light:null,hcDark:null,hcLight:k},L.NC("inputValidationInfoForeground","Input validation foreground color for information severity.")),it=m("inputValidation.infoBorder",{dark:"#007acc",light:"#007acc",hcDark:x,hcLight:x},L.NC("inputValidationInfoBorder","Input validation border color for information severity.")),nt=m("inputValidation.warningBackground",{dark:"#352A05",light:"#F6F5D2",hcDark:s.Il.black,hcLight:s.Il.white},L.NC("inputValidationWarningBackground","Input validation background color for warning severity.")),ot=m("inputValidation.warningForeground",{dark:null,light:null,hcDark:null,hcLight:k},L.NC("inputValidationWarningForeground","Input validation foreground color for warning severity.")),st=m("inputValidation.warningBorder",{dark:"#B89500",light:"#B89500",hcDark:x,hcLight:x},L.NC("inputValidationWarningBorder","Input validation border color for warning severity.")),rt=m("inputValidation.errorBackground",{dark:"#5A1D1D",light:"#F2DEDE",hcDark:s.Il.black,hcLight:s.Il.white},L.NC("inputValidationErrorBackground","Input validation background color for error severity.")),at=m("inputValidation.errorForeground",{dark:null,light:null,hcDark:null,hcLight:k},L.NC("inputValidationErrorForeground","Input validation foreground color for error severity.")),lt=m("inputValidation.errorBorder",{dark:"#BE1100",light:"#BE1100",hcDark:x,hcLight:x},L.NC("inputValidationErrorBorder","Input validation border color for error severity.")),ht=m("dropdown.background",{dark:"#3C3C3C",light:s.Il.white,hcDark:s.Il.black,hcLight:s.Il.white},L.NC("dropdownBackground","Dropdown background.")),dt=m("dropdown.listBackground",{dark:null,light:null,hcDark:s.Il.black,hcLight:s.Il.white},L.NC("dropdownListBackground","Dropdown list background.")),ct=m("dropdown.foreground",{dark:"#F0F0F0",light:k,hcDark:s.Il.white,hcLight:k},L.NC("dropdownForeground","Dropdown foreground.")),ut=m("dropdown.border",{dark:ht,light:"#CECECE",hcDark:x,hcLight:x},L.NC("dropdownBorder","Dropdown border.")),gt=m("button.foreground",{dark:s.Il.white,light:s.Il.white,hcDark:s.Il.white,hcLight:s.Il.white},L.NC("buttonForeground","Button foreground color.")),mt=m("button.separator",{dark:_(gt,.4),light:_(gt,.4),hcDark:_(gt,.4),hcLight:_(gt,.4)},L.NC("buttonSeparator","Button separator color.")),ft=m("button.background",{dark:"#0E639C",light:"#007ACC",hcDark:null,hcLight:"#0F4A85"},L.NC("buttonBackground","Button background color.")),pt=m("button.hoverBackground",{dark:p(ft,.2),light:f(ft,.2),hcDark:ft,hcLight:ft},L.NC("buttonHoverBackground","Button background color when hovering.")),_t=m("button.border",{dark:x,light:x,hcDark:x,hcLight:x},L.NC("buttonBorder","Button border color.")),vt=m("button.secondaryForeground",{dark:s.Il.white,light:s.Il.white,hcDark:s.Il.white,hcLight:k},L.NC("buttonSecondaryForeground","Secondary button foreground color.")),bt=m("button.secondaryBackground",{dark:"#3A3D41",light:"#5F6A79",hcDark:null,hcLight:s.Il.white},L.NC("buttonSecondaryBackground","Secondary button background color.")),Ct=m("button.secondaryHoverBackground",{dark:p(bt,.2),light:f(bt,.2),hcDark:null,hcLight:null},L.NC("buttonSecondaryHoverBackground","Secondary button background color when hovering.")),wt=m("checkbox.background",{dark:ht,light:ht,hcDark:ht,hcLight:ht},L.NC("checkbox.background","Background color of checkbox widget.")),yt=(m("checkbox.selectBackground",{dark:V,light:V,hcDark:V,hcLight:V},L.NC("checkbox.select.background","Background color of checkbox widget when the element it's in is selected.")),m("checkbox.foreground",{dark:ct,light:ct,hcDark:ct,hcLight:ct},L.NC("checkbox.foreground","Foreground color of checkbox widget."))),St=m("checkbox.border",{dark:ut,light:ut,hcDark:ut,hcLight:ut},L.NC("checkbox.border","Border color of checkbox widget.")),Lt=(m("checkbox.selectBorder",{dark:D,light:D,hcDark:D,hcLight:D},L.NC("checkbox.select.border","Border color of checkbox widget when the element it's in is selected.")),m("keybindingLabel.background",{dark:new s.Il(new s.VS(128,128,128,.17)),light:new s.Il(new s.VS(221,221,221,.4)),hcDark:s.Il.transparent,hcLight:s.Il.transparent},L.NC("keybindingLabelBackground","Keybinding label background color. The keybinding label is used to represent a keyboard shortcut."))),kt=m("keybindingLabel.foreground",{dark:s.Il.fromHex("#CCCCCC"),light:s.Il.fromHex("#555555"),hcDark:s.Il.white,hcLight:k},L.NC("keybindingLabelForeground","Keybinding label foreground color. The keybinding label is used to represent a keyboard shortcut.")),Dt=m("keybindingLabel.border",{dark:new s.Il(new s.VS(51,51,51,.6)),light:new s.Il(new s.VS(204,204,204,.4)),hcDark:new s.Il(new s.VS(111,195,223)),hcLight:x},L.NC("keybindingLabelBorder","Keybinding label border color. The keybinding label is used to represent a keyboard shortcut.")),Nt=m("keybindingLabel.bottomBorder",{dark:new s.Il(new s.VS(68,68,68,.6)),light:new s.Il(new s.VS(187,187,187,.4)),hcDark:new s.Il(new s.VS(111,195,223)),hcLight:k},L.NC("keybindingLabelBottomBorder","Keybinding label border bottom color. The keybinding label is used to represent a keyboard shortcut.")),xt=m("list.focusBackground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("listFocusBackground","List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),Et=m("list.focusForeground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("listFocusForeground","List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),It=m("list.focusOutline",{dark:N,light:N,hcDark:E,hcLight:E},L.NC("listFocusOutline","List/Tree outline color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),Tt=m("list.focusAndSelectionOutline",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("listFocusAndSelectionOutline","List/Tree outline color for the focused item when the list/tree is active and selected. An active list/tree has keyboard focus, an inactive does not.")),Mt=m("list.activeSelectionBackground",{dark:"#04395E",light:"#0060C0",hcDark:null,hcLight:s.Il.fromHex("#0F4A85").transparent(.1)},L.NC("listActiveSelectionBackground","List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),At=m("list.activeSelectionForeground",{dark:s.Il.white,light:s.Il.white,hcDark:null,hcLight:null},L.NC("listActiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),Rt=m("list.activeSelectionIconForeground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("listActiveSelectionIconForeground","List/Tree icon foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),Ot=m("list.inactiveSelectionBackground",{dark:"#37373D",light:"#E4E6F1",hcDark:null,hcLight:s.Il.fromHex("#0F4A85").transparent(.1)},L.NC("listInactiveSelectionBackground","List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),Pt=m("list.inactiveSelectionForeground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("listInactiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),Ft=m("list.inactiveSelectionIconForeground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("listInactiveSelectionIconForeground","List/Tree icon foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),Bt=m("list.inactiveFocusBackground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("listInactiveFocusBackground","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),zt=m("list.inactiveFocusOutline",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("listInactiveFocusOutline","List/Tree outline color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),Vt=m("list.hoverBackground",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:s.Il.white.transparent(.1),hcLight:s.Il.fromHex("#0F4A85").transparent(.1)},L.NC("listHoverBackground","List/Tree background when hovering over items using the mouse.")),Wt=m("list.hoverForeground",{dark:null,light:null,hcDark:null,hcLight:null},L.NC("listHoverForeground","List/Tree foreground when hovering over items using the mouse.")),Ht=m("list.dropBackground",{dark:"#062F4A",light:"#D6EBFF",hcDark:null,hcLight:null},L.NC("listDropBackground","List/Tree drag and drop background when moving items over other items when using the mouse.")),Kt=m("list.dropBetweenBackground",{dark:D,light:D,hcDark:null,hcLight:null},L.NC("listDropBetweenBackground","List/Tree drag and drop border color when moving items between items when using the mouse.")),Ut=m("list.highlightForeground",{dark:"#2AAAFF",light:"#0066BF",hcDark:N,hcLight:N},L.NC("highlight","List/Tree foreground color of the match highlights when searching inside the list/tree.")),jt=m("list.focusHighlightForeground",{dark:Ut,light:(qt=Mt,Gt=Ut,Qt="#BBE7FF",{op:6,if:qt,then:Gt,else:Qt}),hcDark:Ut,hcLight:Ut},L.NC("listFocusHighlightForeground","List/Tree foreground color of the match highlights on actively focused items when searching inside the list/tree."));var qt,Gt,Qt;m("list.invalidItemForeground",{dark:"#B89500",light:"#B89500",hcDark:"#B89500",hcLight:"#B5200D"},L.NC("invalidItemForeground","List/Tree foreground color for invalid items, for example an unresolved root in explorer.")),m("list.errorForeground",{dark:"#F88070",light:"#B01011",hcDark:null,hcLight:null},L.NC("listErrorForeground","Foreground color of list items containing errors.")),m("list.warningForeground",{dark:"#CCA700",light:"#855F00",hcDark:null,hcLight:null},L.NC("listWarningForeground","Foreground color of list items containing warnings."));const Zt=m("listFilterWidget.background",{light:f(V,0),dark:p(V,0),hcDark:V,hcLight:V},L.NC("listFilterWidgetBackground","Background color of the type filter widget in lists and trees.")),Yt=m("listFilterWidget.outline",{dark:s.Il.transparent,light:s.Il.transparent,hcDark:"#f38518",hcLight:"#007ACC"},L.NC("listFilterWidgetOutline","Outline color of the type filter widget in lists and trees.")),$t=m("listFilterWidget.noMatchesOutline",{dark:"#BE1100",light:"#BE1100",hcDark:x,hcLight:x},L.NC("listFilterWidgetNoMatchesOutline","Outline color of the type filter widget in lists and trees, when there are no matches.")),Jt=m("listFilterWidget.shadow",{dark:Ce,light:Ce,hcDark:Ce,hcLight:Ce},L.NC("listFilterWidgetShadow","Shadow color of the type filter widget in lists and trees.")),Xt=(m("list.filterMatchBackground",{dark:ie,light:ie,hcDark:null,hcLight:null},L.NC("listFilterMatchHighlight","Background color of the filtered match.")),m("list.filterMatchBorder",{dark:ne,light:ne,hcDark:x,hcLight:E},L.NC("listFilterMatchHighlightBorder","Border color of the filtered match.")),m("list.deemphasizedForeground",{dark:"#8C8C8C",light:"#8E8E90",hcDark:"#A7A8A9",hcLight:"#666666"},L.NC("listDeemphasizedForeground","List/Tree foreground color for items that are deemphasized.")),m("tree.indentGuidesStroke",{dark:"#585858",light:"#a9a9a9",hcDark:"#a9a9a9",hcLight:"#a5a5a5"},L.NC("treeIndentGuidesStroke","Tree stroke color for the indentation guides."))),ei=m("tree.inactiveIndentGuidesStroke",{dark:_(Xt,.4),light:_(Xt,.4),hcDark:_(Xt,.4),hcLight:_(Xt,.4)},L.NC("treeInactiveIndentGuidesStroke","Tree stroke color for the indentation guides that are not active.")),ti=m("tree.tableColumnsBorder",{dark:"#CCCCCC20",light:"#61616120",hcDark:null,hcLight:null},L.NC("tableColumnsBorder","Table border color between columns.")),ii=m("tree.tableOddRowsBackground",{dark:_(k,.04),light:_(k,.04),hcDark:null,hcLight:null},L.NC("tableOddRowsBackgroundColor","Background color for odd table rows.")),ni=m("menu.border",{dark:null,light:null,hcDark:x,hcLight:x},L.NC("menuBorder","Border color of menus.")),oi=m("menu.foreground",{dark:ct,light:ct,hcDark:ct,hcLight:ct},L.NC("menuForeground","Foreground color of menu items.")),si=m("menu.background",{dark:ht,light:ht,hcDark:ht,hcLight:ht},L.NC("menuBackground","Background color of menu items.")),ri=m("menu.selectionForeground",{dark:At,light:At,hcDark:At,hcLight:At},L.NC("menuSelectionForeground","Foreground color of the selected menu item in menus.")),ai=m("menu.selectionBackground",{dark:Mt,light:Mt,hcDark:Mt,hcLight:Mt},L.NC("menuSelectionBackground","Background color of the selected menu item in menus.")),li=m("menu.selectionBorder",{dark:null,light:null,hcDark:E,hcLight:E},L.NC("menuSelectionBorder","Border color of the selected menu item in menus.")),hi=m("menu.separatorBackground",{dark:"#606060",light:"#D4D4D4",hcDark:x,hcLight:x},L.NC("menuSeparatorBackground","Color of a separator menu item in menus.")),di=m("quickInput.background",{dark:V,light:V,hcDark:V,hcLight:V},L.NC("pickerBackground","Quick picker background color. The quick picker widget is the container for pickers like the command palette.")),ci=m("quickInput.foreground",{dark:W,light:W,hcDark:W,hcLight:W},L.NC("pickerForeground","Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.")),ui=m("quickInputTitle.background",{dark:new s.Il(new s.VS(255,255,255,.105)),light:new s.Il(new s.VS(0,0,0,.06)),hcDark:"#000000",hcLight:s.Il.white},L.NC("pickerTitleBackground","Quick picker title background color. The quick picker widget is the container for pickers like the command palette.")),gi=m("pickerGroup.foreground",{dark:"#3794FF",light:"#0066BF",hcDark:s.Il.white,hcLight:"#0F4A85"},L.NC("pickerGroupForeground","Quick picker color for grouping labels.")),mi=m("pickerGroup.border",{dark:"#3F3F46",light:"#CCCEDB",hcDark:s.Il.white,hcLight:"#0F4A85"},L.NC("pickerGroupBorder","Quick picker color for grouping borders.")),fi=m("quickInput.list.focusBackground",{dark:null,light:null,hcDark:null,hcLight:null},"",void 0,L.NC("quickInput.list.focusBackground deprecation","Please use quickInputList.focusBackground instead")),pi=m("quickInputList.focusForeground",{dark:At,light:At,hcDark:At,hcLight:At},L.NC("quickInput.listFocusForeground","Quick picker foreground color for the focused item.")),_i=m("quickInputList.focusIconForeground",{dark:Rt,light:Rt,hcDark:Rt,hcLight:Rt},L.NC("quickInput.listFocusIconForeground","Quick picker icon foreground color for the focused item.")),vi=m("quickInputList.focusBackground",{dark:v(fi,Mt),light:v(fi,Mt),hcDark:null,hcLight:null},L.NC("quickInput.listFocusBackground","Quick picker background color for the focused item."));m("search.resultsInfoForeground",{light:k,dark:_(k,.65),hcDark:k,hcLight:k},L.NC("search.resultsInfoForeground","Color of the text in the search viewlet's completion message.")),m("searchEditor.findMatchBackground",{light:_(ie,.66),dark:_(ie,.66),hcDark:ie,hcLight:ie},L.NC("searchEditor.queryMatch","Color of the Search Editor query matches.")),m("searchEditor.findMatchBorder",{light:_(ne,.66),dark:_(ne,.66),hcDark:ne,hcLight:ne},L.NC("searchEditor.editorFindMatchBorder","Border color of the Search Editor query matches."))},38261:(e,t,i)=>{i.d(t,{Ks:()=>_,q5:()=>p,s_:()=>w});var n=i(60282),o=i(62974),s=i(68406),r=i(62502),a=i(24219),l=i(63686),h=i(82682),d=i(71721),c=i(72677),u=i(70311);var g,m;!function(e){e.getDefinition=function(e,t){let i=e.defaults;for(;r.k.isThemeIcon(i);){const e=f.getIcon(i.id);if(!e)return;i=e.defaults}return i}}(g||(g={})),function(e){e.toJSONObject=function(e){return{weight:e.weight,style:e.style,src:e.src.map((e=>({format:e.format,location:e.location.toString()})))}},e.fromJSONObject=function(e){const t=e=>(0,l.HD)(e)?e:void 0;if(e&&Array.isArray(e.src)&&e.src.every((e=>(0,l.HD)(e.format)&&(0,l.HD)(e.location))))return{weight:t(e.weight),style:t(e.style),src:e.src.map((e=>({format:e.format,location:h.o.parse(e.location)})))}}}(m||(m={}));const f=new class{constructor(){this._onDidChange=new a.Q5,this.onDidChange=this._onDidChange.event,this.iconSchema={definitions:{icons:{type:"object",properties:{fontId:{type:"string",description:(0,d.NC)("iconDefinition.fontId","The id of the font to use. If not set, the font that is defined first is used.")},fontCharacter:{type:"string",description:(0,d.NC)("iconDefinition.fontCharacter","The font character associated with the icon definition.")}},additionalProperties:!1,defaultSnippets:[{body:{fontCharacter:"\\\\e030"}}]}},type:"object",properties:{}},this.iconReferenceSchema={type:"string",pattern:"^".concat(r.k.iconNameExpression,"$"),enum:[],enumDescriptions:[]},this.iconsById={},this.iconFontsById={}}registerIcon(e,t,i,n){const o=this.iconsById[e];if(o){if(i&&!o.description){o.description=i,this.iconSchema.properties[e].markdownDescription="".concat(i," $(").concat(e,")");const t=this.iconReferenceSchema.enum.indexOf(e);-1!==t&&(this.iconReferenceSchema.enumDescriptions[t]=i),this._onDidChange.fire()}return o}const s={id:e,description:i,defaults:t,deprecationMessage:n};this.iconsById[e]=s;const r={$ref:"#/definitions/icons"};return n&&(r.deprecationMessage=n),i&&(r.markdownDescription="".concat(i,": $(").concat(e,")")),this.iconSchema.properties[e]=r,this.iconReferenceSchema.enum.push(e),this.iconReferenceSchema.enumDescriptions.push(i||""),this._onDidChange.fire(),{id:e}}getIcons(){return Object.keys(this.iconsById).map((e=>this.iconsById[e]))}getIcon(e){return this.iconsById[e]}getIconSchema(){return this.iconSchema}toString(){const e=(e,t)=>e.id.localeCompare(t.id),t=e=>{for(;r.k.isThemeIcon(e.defaults);)e=this.iconsById[e.defaults.id];return"codicon codicon-".concat(e?e.id:"")},i=[];i.push("| preview | identifier | default codicon ID | description"),i.push("| ----------- | --------------------------------- | --------------------------------- | --------------------------------- |");const n=Object.keys(this.iconsById).map((e=>this.iconsById[e]));for(const o of n.filter((e=>!!e.description)).sort(e))i.push('||').concat(o.id,"|").concat(r.k.isThemeIcon(o.defaults)?o.defaults.id:o.id,"|").concat(o.description||"","|"));i.push("| preview | identifier "),i.push("| ----------- | --------------------------------- |");for(const o of n.filter((e=>!r.k.isThemeIcon(e.defaults))).sort(e))i.push('||').concat(o.id,"|"));return i.join("\n")}};function p(e,t,i,n){return f.registerIcon(e,t,i,n)}function _(){return f}u.B.add("base.contributions.icons",f),function(){const e=(0,s.u)();for(const t in e){const i="\\"+e[t].toString(16);f.registerIcon(t,{fontCharacter:i})}}();const v="vscode://schemas/icons",b=u.B.as(c.I.JSONContribution);b.registerSchema(v,f.getIconSchema());const C=new n.pY((()=>b.notifySchemaChanged(v)),200);f.onDidChange((()=>{C.isScheduled()||C.schedule()}));const w=p("widget-close",o.l.close,(0,d.NC)("widgetClose","Icon for the close action in widgets."));p("goto-previous-location",o.l.arrowUp,(0,d.NC)("previousChangeIcon","Icon for goto previous editor location.")),p("goto-next-location",o.l.arrowDown,(0,d.NC)("nextChangeIcon","Icon for goto next editor location.")),r.k.modify(o.l.sync,"spin"),r.k.modify(o.l.loading,"spin")},75826:(e,t,i)=>{var n;function o(e){return e===n.HIGH_CONTRAST_DARK||e===n.HIGH_CONTRAST_LIGHT}function s(e){return e===n.DARK||e===n.HIGH_CONTRAST_DARK}i.d(t,{_T:()=>s,c3:()=>o,eL:()=>n}),function(e){e.DARK="dark",e.LIGHT="light",e.HIGH_CONTRAST_DARK="hcDark",e.HIGH_CONTRAST_LIGHT="hcLight"}(n||(n={}))},17903:(e,t,i)=>{i.d(t,{EN:()=>h,IP:()=>c,Ic:()=>g,XE:()=>l,bB:()=>m,m6:()=>d});var n=i(24219),o=i(89599),s=i(34304),r=i(70311),a=i(75826);const l=(0,s.yh)("themeService");function h(e){return{id:e}}function d(e){switch(e){case a.eL.DARK:return"vs-dark";case a.eL.HIGH_CONTRAST_DARK:return"hc-black";case a.eL.HIGH_CONTRAST_LIGHT:return"hc-light";default:return"vs"}}const c={ThemingContribution:"base.contributions.theming"};const u=new class{constructor(){this.themingParticipants=[],this.themingParticipants=[],this.onThemingParticipantAddedEmitter=new n.Q5}onColorThemeChange(e){return this.themingParticipants.push(e),this.onThemingParticipantAddedEmitter.fire(e),(0,o.OF)((()=>{const t=this.themingParticipants.indexOf(e);this.themingParticipants.splice(t,1)}))}getThemingParticipants(){return this.themingParticipants}};function g(e){return u.onColorThemeChange(e)}r.B.add(c.ThemingContribution,u);class m extends o.JT{constructor(e){super(),this.themeService=e,this.theme=e.getColorTheme(),this._register(this.themeService.onDidColorThemeChange((e=>this.onThemeChange(e))))}onThemeChange(e){this.theme=e,this.updateStyles()}updateStyles(){}}},96484:(e,t,i)=>{i.d(t,{Xt:()=>s,YO:()=>o,gJ:()=>r,tJ:()=>n});const n=(0,i(34304).yh)("undoRedoService");class o{constructor(e,t){this.resource=e,this.elements=t}}class s{constructor(){this.id=s._ID++,this.order=1}nextOrder(){return 0===this.id?0:this.order++}}s._ID=0,s.None=new s;class r{constructor(){this.id=r._ID++,this.order=1}nextOrder(){return 0===this.id?0:this.order++}}r._ID=0,r.None=new r},73449:(e,t,i)=>{i.d(t,{A6:()=>g,c$:()=>l,eb:()=>a,ec:()=>r,md:()=>u,p$:()=>m,uT:()=>c,x:()=>f});var n=i(71721),o=i(51169),s=(i(737),i(82682));const r=(0,i(34304).yh)("contextService");function a(e){const t=e;return"string"===typeof(null===t||void 0===t?void 0:t.id)&&s.o.isUri(t.uri)}function l(e){return"string"===typeof(null===e||void 0===e?void 0:e.id)&&!a(e)&&!function(e){const t=e;return"string"===typeof(null===t||void 0===t?void 0:t.id)&&s.o.isUri(t.configPath)}(e)}const h={id:"ext-dev"},d={id:"empty-window"};function c(e,t){if("string"===typeof e||"undefined"===typeof e)return"string"===typeof e?{id:(0,o.EZ)(e)}:t?h:d;const i=e;return i.configuration?{id:i.id,configPath:i.configuration}:1===i.folders.length?{id:i.id,uri:i.folders[0].uri}:{id:i.id}}class u{constructor(e,t){this.raw=t,this.uri=e.uri,this.index=e.index,this.name=e.name}toJSON(){return{uri:this.uri,name:this.name,index:this.index}}}const g="code-workspace",m=((0,n.NC)("codeWorkspace","Code Workspace"),"4064f6ec-cb38-4ad0-af64-ee6467e63c82");function f(e){return e.id===m}},20790:(e,t,i)=>{i.d(t,{Y:()=>n});const n=(0,i(34304).yh)("workspaceTrustManagementService")},11316:()=>{},35542:()=>{},71619:()=>{}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/1551.2e8e3e50.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/1551.2e8e3e50.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..4ed2c3c0eb4c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/1551.2e8e3e50.chunk.js.LICENSE.txt @@ -0,0 +1 @@ +/*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */ diff --git a/ydb/core/viewer/monitoring/static/js/1593.571b4393.chunk.js b/ydb/core/viewer/monitoring/static/js/1593.571b4393.chunk.js deleted file mode 100644 index 5f89538ffe10..000000000000 --- a/ydb/core/viewer/monitoring/static/js/1593.571b4393.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[1593],{21593:function(e,t,r){r.r(t),r.d(t,{ReactComponent:function(){return E}});var C,n,a,o,i,l,s,d,c,p,H,u,k,V=r(4519),f=["title","titleId"];function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(C=0;C=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Z(e,t){var r=e.title,Z=e.titleId,E=M(e,f);return V.createElement("svg",h({width:260,height:260,viewBox:"0 0 520 520",fill:"none",xmlns:"http://www.w3.org/2000/svg",ref:t,"aria-labelledby":Z},E),r?V.createElement("title",{id:Z},r):null,C||(C=V.createElement("path",{opacity:.1,d:"M228.637 445C217.178 445.049 206.065 441.074 197.233 433.768L28.4227 288.499C24.7711 285.319 22.4943 280.846 22.0715 276.02C21.6487 271.195 23.1128 266.393 26.1557 262.626L65.3512 214.612C66.9235 212.684 68.8667 211.091 71.0657 209.927C73.2646 208.764 75.6745 208.055 78.1525 207.841C80.6305 207.627 83.1263 207.913 85.4917 208.682C87.8572 209.452 90.0443 210.688 91.9234 212.319L223.682 326.793L435.516 94.088C438.811 90.4596 443.405 88.2807 448.298 88.0253C453.191 87.7699 457.987 89.4587 461.642 92.7243L507.824 134.205C509.647 135.841 511.129 137.821 512.184 140.032C513.24 142.243 513.849 144.64 513.975 147.087C514.102 149.534 513.744 151.982 512.922 154.29C512.101 156.598 510.831 158.721 509.187 160.536L265.553 428.549C260.881 433.709 255.185 437.838 248.829 440.671C242.472 443.503 235.595 444.978 228.637 445Z",fill:"#509CF5"})),n||(n=V.createElement("path",{d:"M412.933 102.332H294.933C289.433 102.332 284.933 106.832 284.933 112.332V315.432C284.933 320.932 289.433 325.432 294.933 325.432H446.433C451.933 325.432 456.433 320.932 456.433 315.432V133.732L429.933 107.332",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.01 10.02"})),a||(a=V.createElement("path",{d:"M425.033 102.332V104.332",stroke:"#00E6C5",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),o||(o=V.createElement("path",{d:"M425.033 115.031V126.331C425.033 130.431 428.333 133.731 432.433 133.731H449.033",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.27 10.68"})),i||(i=V.createElement("path",{d:"M454.333 133.73H456.333",stroke:"#00E6C5",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),l||(l=V.createElement("path",{d:"M77 397.052L89.1 409L110 388",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4.84211,strokeLinecap:"round",strokeLinejoin:"round"})),s||(s=V.createElement("path",{d:"M125 398C125 416.775 109.775 432 91 432C72.2252 432 57 416.775 57 398C57 379.225 72.2252 364 91 364C109.775 364 125 379.225 125 398Z",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4.84211,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.84 12.11"})),d||(d=V.createElement("path",{d:"M147.5 119C147.5 117.895 146.605 117 145.5 117C144.395 117 143.5 117.895 143.5 119H147.5ZM143.5 129.8C143.5 130.905 144.395 131.8 145.5 131.8C146.605 131.8 147.5 130.905 147.5 129.8H143.5ZM147.5 152.5C147.5 151.395 146.605 150.5 145.5 150.5C144.395 150.5 143.5 151.395 143.5 152.5H147.5ZM143.5 164.2C143.5 165.305 144.395 166.2 145.5 166.2C146.605 166.2 147.5 165.305 147.5 164.2H143.5ZM168.1 143.602C169.205 143.602 170.1 142.706 170.1 141.602C170.1 140.497 169.205 139.602 168.1 139.602V143.602ZM157.2 139.602C156.096 139.602 155.2 140.497 155.2 141.602C155.2 142.706 156.096 143.602 157.2 143.602V139.602ZM133.7 143.602C134.805 143.602 135.7 142.706 135.7 141.602C135.7 140.497 134.805 139.602 133.7 139.602V143.602ZM122.9 139.602C121.795 139.602 120.9 140.497 120.9 141.602C120.9 142.706 121.795 143.602 122.9 143.602V139.602ZM143.5 119V129.8H147.5V119H143.5ZM143.5 152.5V164.2H147.5V152.5H143.5ZM168.1 139.602H157.2V143.602H168.1V139.602ZM133.7 139.602H122.9V143.602H133.7V139.602Z",fill:"#2EE5C0",fillOpacity:.8})),c||(c=V.createElement("path",{d:"M406.3 397.5C406.3 396.395 405.405 395.5 404.3 395.5C403.195 395.5 402.3 396.395 402.3 397.5H406.3ZM402.3 403.1C402.3 404.205 403.195 405.1 404.3 405.1C405.405 405.1 406.3 404.205 406.3 403.1H402.3ZM406.3 414.898C406.3 413.794 405.405 412.898 404.3 412.898C403.195 412.898 402.3 413.794 402.3 414.898H406.3ZM402.3 420.998C402.3 422.103 403.195 422.998 404.3 422.998C405.405 422.998 406.3 422.103 406.3 420.998H402.3ZM416.1 411.2C417.205 411.2 418.1 410.305 418.1 409.2C418.1 408.095 417.205 407.2 416.1 407.2V411.2ZM410.4 407.2C409.295 407.2 408.4 408.095 408.4 409.2C408.4 410.305 409.295 411.2 410.4 411.2V407.2ZM398.2 411.2C399.305 411.2 400.2 410.305 400.2 409.2C400.2 408.095 399.305 407.2 398.2 407.2V411.2ZM392.5 407.2C391.395 407.2 390.5 408.095 390.5 409.2C390.5 410.305 391.395 411.2 392.5 411.2V407.2ZM402.3 397.5V403.1H406.3V397.5H402.3ZM402.3 414.898V420.998H406.3V414.898H402.3ZM416.1 407.2H410.4V411.2H416.1V407.2ZM398.2 407.2H392.5V411.2H398.2V407.2Z",fill:"#2EE5C0",fillOpacity:.8})),p||(p=V.createElement("path",{d:"M186 385.667V394.833C186 397.264 185.012 399.596 183.254 401.315C181.496 403.034 179.111 404 176.625 404H121C115.477 404 111 399.523 111 394V249C111 243.477 115.477 239 121 239H176.625C179.111 239 181.496 239.966 183.254 241.685C185.012 243.404 186 245.736 186 248.167V385.667Z",fill:"#0067C1"})),H||(H=V.createElement("path",{d:"M177.143 375.273V384.637C177.143 387.12 176.153 389.501 174.392 391.257C172.63 393.013 170.241 394 167.75 394H112C106.477 394 102 389.522 102 384V235.465C102 229.942 106.477 225.465 112 225.465H167.75C170.241 225.465 172.63 226.451 174.392 228.207C176.153 229.963 177.143 232.345 177.143 234.828V375.273Z",fill:"#007CE9"})),u||(u=V.createElement("path",{d:"M292.385 235.185C291.545 236.543 292.529 238.321 294.126 238.321H375.327C379.067 238.242 382.784 238.917 386.255 240.305C389.726 241.693 392.879 243.765 395.524 246.398C398.169 249.031 400.252 252.169 401.646 255.623C403.041 259.078 403.718 262.778 403.639 266.5C403.639 294.679 394.201 398 356.452 398H242.081C230.712 398 219.806 393.497 211.748 385.477L206.04 379.797C205.665 379.424 205.158 379.214 204.629 379.214H191.299H179.143C178.038 379.214 177.143 378.319 177.143 377.214V239.495C177.143 238.847 177.668 238.321 178.317 238.321C195.697 238.321 212.371 231.438 224.69 219.177L233.949 209.961C240.092 203.848 245.391 196.942 249.705 189.426L267.012 159.283C275.636 144.262 293.887 133.185 306.212 145.354C312.929 151.987 316.741 160.994 316.815 170.411C316.815 171.538 316.721 172.665 316.626 173.886C314.302 197.951 298.104 225.943 292.385 235.185Z",fill:"#FFCC00"})),k||(k=V.createElement("path",{d:"M356.457 369.801H237.651C229.12 369.801 220.937 366.421 214.893 360.401C208.849 354.381 200.666 351.001 192.135 351.001H177.143V379.2H192.135C200.666 379.2 208.849 382.58 214.893 388.6C220.937 394.62 229.12 398 237.651 398H356.457C394.207 398 403.645 294.601 403.645 266.402C403.645 263.723 403.328 261.054 402.701 258.449C399.568 298.831 387.743 369.801 356.457 369.801Z",fill:"#DEB700"})))}var E=V.forwardRef(Z);t.default=r.p+"static/media/thumbsUp.d4a03fbaa64ce85a0045bf8ba77f8e2b.svg"}}]); -//# sourceMappingURL=1593.571b4393.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/1602.86ed3169.chunk.js b/ydb/core/viewer/monitoring/static/js/1602.86ed3169.chunk.js deleted file mode 100644 index b0f01080a17d..000000000000 --- a/ydb/core/viewer/monitoring/static/js/1602.86ed3169.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[1602],{61602:function(e,n,r){r.r(n),r.d(n,{conf:function(){return t},language:function(){return s}});var t={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\$\-\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{blockComment:["###","###"],lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},s={defaultToken:"",ignoreCase:!0,tokenPostfix:".coffee",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],regEx:/\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,keywords:["and","or","is","isnt","not","on","yes","@","no","off","true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","if","else","switch","for","while","do","try","catch","finally","class","extends","super","undefined","then","unless","until","loop","of","by","when"],symbols:/[=>{r.r(t),r.d(t,{conf:()=>n,language:()=>o});var n={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},o={tokenPostfix:".julia",keywords:["begin","while","if","for","try","return","break","continue","function","macro","quote","let","local","global","const","do","struct","module","baremodule","using","import","export","end","else","elseif","catch","finally","mutable","primitive","abstract","type","in","isa","where","new"],types:["LinRange","LineNumberNode","LinearIndices","LoadError","MIME","Matrix","Method","MethodError","Missing","MissingException","Module","NTuple","NamedTuple","Nothing","Number","OrdinalRange","OutOfMemoryError","OverflowError","Pair","PartialQuickSort","PermutedDimsArray","Pipe","Ptr","QuoteNode","Rational","RawFD","ReadOnlyMemoryError","Real","ReentrantLock","Ref","Regex","RegexMatch","RoundingMode","SegmentationFault","Set","Signed","Some","StackOverflowError","StepRange","StepRangeLen","StridedArray","StridedMatrix","StridedVecOrMat","StridedVector","String","StringIndexError","SubArray","SubString","SubstitutionString","Symbol","SystemError","Task","Text","TextDisplay","Timer","Tuple","Type","TypeError","TypeVar","UInt","UInt128","UInt16","UInt32","UInt64","UInt8","UndefInitializer","AbstractArray","UndefKeywordError","AbstractChannel","UndefRefError","AbstractChar","UndefVarError","AbstractDict","Union","AbstractDisplay","UnionAll","AbstractFloat","UnitRange","AbstractIrrational","Unsigned","AbstractMatrix","AbstractRange","Val","AbstractSet","Vararg","AbstractString","VecElement","AbstractUnitRange","VecOrMat","AbstractVecOrMat","Vector","AbstractVector","VersionNumber","Any","WeakKeyDict","ArgumentError","WeakRef","Array","AssertionError","BigFloat","BigInt","BitArray","BitMatrix","BitSet","BitVector","Bool","BoundsError","CapturedException","CartesianIndex","CartesianIndices","Cchar","Cdouble","Cfloat","Channel","Char","Cint","Cintmax_t","Clong","Clonglong","Cmd","Colon","Complex","ComplexF16","ComplexF32","ComplexF64","CompositeException","Condition","Cptrdiff_t","Cshort","Csize_t","Cssize_t","Cstring","Cuchar","Cuint","Cuintmax_t","Culong","Culonglong","Cushort","Cvoid","Cwchar_t","Cwstring","DataType","DenseArray","DenseMatrix","DenseVecOrMat","DenseVector","Dict","DimensionMismatch","Dims","DivideError","DomainError","EOFError","Enum","ErrorException","Exception","ExponentialBackOff","Expr","Float16","Float32","Float64","Function","GlobalRef","HTML","IO","IOBuffer","IOContext","IOStream","IdDict","IndexCartesian","IndexLinear","IndexStyle","InexactError","InitError","Int","Int128","Int16","Int32","Int64","Int8","Integer","InterruptException","InvalidStateException","Irrational","KeyError"],keywordops:["<:",">:",":","=>","...",".","->","?"],allops:/[^\w\d\s()\[\]{}"'#]+/,constants:["true","false","nothing","missing","undef","Inf","pi","NaN","\u03c0","\u212f","ans","PROGRAM_FILE","ARGS","C_NULL","VERSION","DEPOT_PATH","LOAD_PATH"],operators:["!","!=","!==","%","&","*","+","-","/","//","<","<<","<=","==","===","=>",">",">=",">>",">>>","\\","^","|","|>","~","\xf7","\u2208","\u2209","\u220b","\u220c","\u2218","\u221a","\u221b","\u2229","\u222a","\u2248","\u2249","\u2260","\u2261","\u2262","\u2264","\u2265","\u2286","\u2287","\u2288","\u2289","\u228a","\u228b","\u22bb"],brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],ident:/\u03c0|\u212f|\b(?!\d)\w+\b/,escape:/(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,escapes:/\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,tokenizer:{root:[[/(::)\s*|\b(isa)\s+/,"keyword","@typeanno"],[/\b(isa)(\s*\(@ident\s*,\s*)/,["keyword",{token:"",next:"@typeanno"}]],[/\b(type|struct)[ \t]+/,"keyword","@typeanno"],[/^\s*:@ident[!?]?/,"metatag"],[/(return)(\s*:@ident[!?]?)/,["keyword","metatag"]],[/(\(|\[|\{|@allops)(\s*:@ident[!?]?)/,["","metatag"]],[/:\(/,"metatag","@quote"],[/r"""/,"regexp.delim","@tregexp"],[/r"/,"regexp.delim","@sregexp"],[/raw"""/,"string.delim","@rtstring"],[/[bv]?"""/,"string.delim","@dtstring"],[/raw"/,"string.delim","@rsstring"],[/[bv]?"/,"string.delim","@dsstring"],[/(@ident)\{/,{cases:{"$1@types":{token:"type",next:"@gen"},"@default":{token:"type",next:"@gen"}}}],[/@ident[!?'']?(?=\.?\()/,{cases:{"@types":"type","@keywords":"keyword","@constants":"variable","@default":"keyword.flow"}}],[/@ident[!?']?/,{cases:{"@types":"type","@keywords":"keyword","@constants":"variable","@default":"identifier"}}],[/\$\w+/,"key"],[/\$\(/,"key","@paste"],[/@@@ident/,"annotation"],{include:"@whitespace"},[/'(?:@escapes|.)'/,"string.character"],[/[()\[\]{}]/,"@brackets"],[/@allops/,{cases:{"@keywordops":"keyword","@operators":"operator"}}],[/[;,]/,"delimiter"],[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/,"number.hex"],[/0[_oO][0-7](_?[0-7])*/,"number.octal"],[/0[bB][01](_?[01])*/,"number.binary"],[/[+\-]?\d+(\.\d+)?(im?|[eE][+\-]?\d+(\.\d+)?)?/,"number"]],typeanno:[[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*\{/,"type","@gen"],[/([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(\s*<:\s*)/,["type","keyword"]],[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*/,"type","@pop"],["","","@pop"]],gen:[[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*\{/,"type","@push"],[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*/,"type"],[/<:/,"keyword"],[/(\})(\s*<:\s*)/,["type",{token:"keyword",next:"@pop"}]],[/\}/,"type","@pop"],{include:"@root"}],quote:[[/\$\(/,"key","@paste"],[/\(/,"@brackets","@paren"],[/\)/,"metatag","@pop"],{include:"@root"}],paste:[[/:\(/,"metatag","@quote"],[/\(/,"@brackets","@paren"],[/\)/,"key","@pop"],{include:"@root"}],paren:[[/\$\(/,"key","@paste"],[/:\(/,"metatag","@quote"],[/\(/,"@brackets","@push"],[/\)/,"@brackets","@pop"],{include:"@root"}],sregexp:[[/^.*/,"invalid"],[/[^\\"()\[\]{}]/,"regexp"],[/[()\[\]{}]/,"@brackets"],[/\\./,"operator.scss"],[/"[imsx]*/,"regexp.delim","@pop"]],tregexp:[[/[^\\"()\[\]{}]/,"regexp"],[/[()\[\]{}]/,"@brackets"],[/\\./,"operator.scss"],[/"(?!"")/,"string"],[/"""[imsx]*/,"regexp.delim","@pop"]],rsstring:[[/^.*/,"invalid"],[/[^\\"]/,"string"],[/\\./,"string.escape"],[/"/,"string.delim","@pop"]],rtstring:[[/[^\\"]/,"string"],[/\\./,"string.escape"],[/"(?!"")/,"string"],[/"""/,"string.delim","@pop"]],dsstring:[[/^.*/,"invalid"],[/[^\\"\$]/,"string"],[/\$/,"","@interpolated"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string.delim","@pop"]],dtstring:[[/[^\\"\$]/,"string"],[/\$/,"","@interpolated"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"(?!"")/,"string"],[/"""/,"string.delim","@pop"]],interpolated:[[/\(/,{token:"",switchTo:"@interpolated_compound"}],[/[a-zA-Z_]\w*/,"identifier"],["","","@pop"]],interpolated_compound:[[/\)/,"","@pop"],{include:"@root"}],whitespace:[[/[ \t\r\n]+/,""],[/#=/,"comment","@multi_comment"],[/#.*$/,"comment"]],multi_comment:[[/#=/,"comment","@push"],[/=#/,"comment","@pop"],[/=(?!#)|#(?!=)/,"comment"],[/[^#=]+/,"comment"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/1747.b4331799.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/1747.b4331799.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/1747.b4331799.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/178.e0df04cc.chunk.js b/ydb/core/viewer/monitoring/static/js/178.e0df04cc.chunk.js new file mode 100644 index 000000000000..34369ebcd484 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/178.e0df04cc.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[178],{10178:function(u,t,e){u.exports=function(u){"use strict";function t(u){return u&&"object"==typeof u&&"default"in u?u:{default:u}}var e=t(u);function n(u,t,e,n){var i={s:"muutama sekunti",m:"minuutti",mm:"%d minuuttia",h:"tunti",hh:"%d tuntia",d:"p\xe4iv\xe4",dd:"%d p\xe4iv\xe4\xe4",M:"kuukausi",MM:"%d kuukautta",y:"vuosi",yy:"%d vuotta",numbers:"nolla_yksi_kaksi_kolme_nelj\xe4_viisi_kuusi_seitsem\xe4n_kahdeksan_yhdeks\xe4n".split("_")},a={s:"muutaman sekunnin",m:"minuutin",mm:"%d minuutin",h:"tunnin",hh:"%d tunnin",d:"p\xe4iv\xe4n",dd:"%d p\xe4iv\xe4n",M:"kuukauden",MM:"%d kuukauden",y:"vuoden",yy:"%d vuoden",numbers:"nollan_yhden_kahden_kolmen_nelj\xe4n_viiden_kuuden_seitsem\xe4n_kahdeksan_yhdeks\xe4n".split("_")},_=n&&!t?a:i,s=_[e];return u<10?s.replace("%d",_.numbers[u]):s.replace("%d",u)}var i={name:"fi",weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),ordinal:function(u){return u+"."},weekStart:1,yearStart:4,relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM[ta] YYYY",LLL:"D. MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, D. MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"D. MMM YYYY",lll:"D. MMM YYYY, [klo] HH.mm",llll:"ddd, D. MMM YYYY, [klo] HH.mm"}};return e.default.locale(i,null,!0),i}(e(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/185.7d51fcfa.chunk.js b/ydb/core/viewer/monitoring/static/js/185.7d51fcfa.chunk.js new file mode 100644 index 000000000000..c721e64d1be2 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/185.7d51fcfa.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 185.7d51fcfa.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[185],{90185:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>i,language:()=>r});var i={wordPattern:/(#?-?\d*\.\d\w*%?)|([@#!.:]?[\w-?]+%?)|[@#!.]/g,comments:{blockComment:["/*","*/"],lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/"),end:new RegExp("^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/")}}},r={defaultToken:"",tokenPostfix:".less",identifier:"-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",identifierPlus:"-?-?([a-zA-Z:.]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-:.]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],tokenizer:{root:[{include:"@nestedJSBegin"},["[ \\t\\r\\n]+",""],{include:"@comments"},{include:"@keyword"},{include:"@strings"},{include:"@numbers"},["[*_]?[a-zA-Z\\-\\s]+(?=:.*(;|(\\\\$)))","attribute.name","@attribute"],["url(\\-prefix)?\\(",{token:"tag",next:"@urldeclaration"}],["[{}()\\[\\]]","@brackets"],["[,:;]","delimiter"],["#@identifierPlus","tag.id"],["&","tag"],["\\.@identifierPlus(?=\\()","tag.class","@attribute"],["\\.@identifierPlus","tag.class"],["@identifierPlus","tag"],{include:"@operators"},["@(@identifier(?=[:,\\)]))","variable","@attribute"],["@(@identifier)","variable"],["@","key","@atRules"]],nestedJSBegin:[["``","delimiter.backtick"],["`",{token:"delimiter.backtick",next:"@nestedJSEnd",nextEmbedded:"text/javascript"}]],nestedJSEnd:[["`",{token:"delimiter.backtick",next:"@pop",nextEmbedded:"@pop"}]],operators:[["[<>=\\+\\-\\*\\/\\^\\|\\~]","operator"]],keyword:[["(@[\\s]*import|![\\s]*important|true|false|when|iscolor|isnumber|isstring|iskeyword|isurl|ispixel|ispercentage|isem|hue|saturation|lightness|alpha|lighten|darken|saturate|desaturate|fadein|fadeout|fade|spin|mix|round|ceil|floor|percentage)\\b","keyword"]],urldeclaration:[{include:"@strings"},["[^)\r\n]+","string"],["\\)",{token:"tag",next:"@pop"}]],attribute:[{include:"@nestedJSBegin"},{include:"@comments"},{include:"@strings"},{include:"@numbers"},{include:"@keyword"},["[a-zA-Z\\-]+(?=\\()","attribute.value","@attribute"],[">","operator","@pop"],["@identifier","attribute.value"],{include:"@operators"},["@(@identifier)","variable"],["[)\\}]","@brackets","@pop"],["[{}()\\[\\]>]","@brackets"],["[;]","delimiter","@pop"],["[,=:]","delimiter"],["\\s",""],[".","attribute.value"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],numbers:[["(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?",{token:"attribute.value.number",next:"@units"}],["#[0-9a-fA-F_]+(?!\\w)","attribute.value.hex"]],units:[["(em|ex|ch|rem|fr|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?","attribute.value.unit","@pop"]],strings:[['~?"',{token:"string.delimiter",next:"@stringsEndDoubleQuote"}],["~?'",{token:"string.delimiter",next:"@stringsEndQuote"}]],stringsEndDoubleQuote:[['\\\\"',"string"],['"',{token:"string.delimiter",next:"@popall"}],[".","string"]],stringsEndQuote:[["\\\\'","string"],["'",{token:"string.delimiter",next:"@popall"}],[".","string"]],atRules:[{include:"@comments"},{include:"@strings"},["[()]","delimiter"],["[\\{;]","delimiter","@pop"],[".","key"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/185.7d51fcfa.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/185.7d51fcfa.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/185.7d51fcfa.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/1869.d6661a03.chunk.js b/ydb/core/viewer/monitoring/static/js/1869.d6661a03.chunk.js new file mode 100644 index 000000000000..6795046be21b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/1869.d6661a03.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[1869],{11869:function(e,a,d){e.exports=function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=a(e),_={name:"nl",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),ordinal:function(e){return"["+e+(1===e||8===e||e>=20?"ste":"de")+"]"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"een minuut",mm:"%d minuten",h:"een uur",hh:"%d uur",d:"een dag",dd:"%d dagen",M:"een maand",MM:"%d maanden",y:"een jaar",yy:"%d jaar"}};return d.default.locale(_,null,!0),_}(d(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/1876.2f512037.chunk.js b/ydb/core/viewer/monitoring/static/js/1876.2f512037.chunk.js deleted file mode 100644 index c29b2d8f8e3e..000000000000 --- a/ydb/core/viewer/monitoring/static/js/1876.2f512037.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[1876],{1876:function(e,t,l){l.r(t),l.d(t,{ReactComponent:function(){return E}});var r,a,n,i,c,o,d,f,s=l(4519),u=["title","titleId"];function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(a[l]=e[l]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(a[l]=e[l])}return a}function h(e,t){var l=e.title,h=e.titleId,E=m(e,u);return s.createElement("svg",p({xmlns:"http://www.w3.org/2000/svg",width:230,height:230,fill:"none",ref:t,"aria-labelledby":h},E),l?s.createElement("title",{id:h},l):null,r||(r=s.createElement("path",{fill:"#BECFE0",fillOpacity:.8,fillRule:"evenodd",d:"M169.001 51.666c5.523 0 10 4.477 10 10v21.017l18.197-10.506c4.783-2.762 10.899-1.123 13.66 3.66 2.761 4.783 1.123 10.899-3.66 13.66l-18.197 10.507 18.198 10.506c4.783 2.762 6.421 8.878 3.66 13.661-2.762 4.782-8.877 6.421-13.66 3.66l-18.198-10.506v21.008c0 5.523-4.477 10-10 10-5.522 0-10-4.477-10-10v-21.009l-18.199 10.507c-4.782 2.761-10.898 1.122-13.66-3.66-2.761-4.783-1.122-10.899 3.66-13.661l18.199-10.506-18.198-10.507c-4.783-2.761-6.421-8.877-3.66-13.66 2.762-4.783 8.877-6.422 13.66-3.66l18.198 10.507V61.666c0-5.523 4.478-10 10-10Z",clipRule:"evenodd"})),a||(a=s.createElement("path",{fill:"#E7E7E7",fillRule:"evenodd",d:"M171.523 95.922a11.003 11.003 0 0 1 1.099 8.347l-13.208 49.291c-1.572 5.868-7.604 9.351-13.472 7.778l-25.356-6.794a44.998 44.998 0 0 1-.53 1.929l25.368 6.797c6.935 1.858 14.064-2.257 15.922-9.192l13.207-49.291c.893-3.33.426-6.879-1.298-9.865L155.598 64.34a12.999 12.999 0 0 0-7.894-6.057l-29.972-8.031c-6.935-1.858-14.063 2.257-15.922 9.192l-11.328 42.277c.64.192 1.276.398 1.905.618l11.355-42.377c1.573-5.868 7.604-9.35 13.472-7.778l29.973 8.03a11 11 0 0 1 6.679 5.126l17.657 30.582Z",clipRule:"evenodd"})),n||(n=s.createElement("path",{fill:"#FF5958",fillOpacity:.8,d:"M35.388 155.273c-6.29-23.472 7.64-47.599 31.113-53.889 23.472-6.289 47.599 7.641 53.889 31.113 6.289 23.473-7.641 47.599-31.113 53.889-23.473 6.289-47.6-7.64-53.889-31.113Z"})),i||(i=s.createElement("path",{stroke:"#E7E7E7",strokeWidth:2,d:"M60.636 117.734c53.586-33.459-26.868-81.505-36.557-61.318-11.802 24.59 99.395 51.098 128.865-26.3"})),s.createElement("mask",{id:"b",width:89,height:89,x:33,y:99,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},c||(c=s.createElement("path",{fill:"#FF5958",fillOpacity:.9,d:"M35.388 155.273c-6.29-23.472 7.64-47.599 31.113-53.889 23.472-6.289 47.599 7.641 53.889 31.113 6.289 23.473-7.641 47.599-31.113 53.889-23.473 6.289-47.6-7.64-53.889-31.113Z"}))),o||(o=s.createElement("g",{filter:"url(#a)",mask:"url(#b)"},s.createElement("path",{stroke:"#E7E7E7",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.6,strokeWidth:2,d:"M172.389 95.422a12.004 12.004 0 0 1 1.199 9.106l-13.208 49.291c-1.715 6.401-8.295 10.2-14.697 8.485L91.591 147.81c-6.401-1.715-10.2-8.295-8.485-14.697l19.67-73.41c1.716-6.402 8.296-10.2 14.697-8.485l29.972 8.03a11.998 11.998 0 0 1 7.287 5.592l17.657 30.582Z"}))),d||(d=s.createElement("g",{filter:"url(#c)"},s.createElement("path",{fill:"#fff",fillOpacity:.72,fillRule:"evenodd",d:"M80.866 130.432a6.359 6.359 0 1 1-12.284 3.29 6.359 6.359 0 0 1 12.284-3.29Zm4.817-1.291c1.621 6.052-1.97 12.273-8.022 13.894-6.052 1.622-12.273-1.97-13.895-8.022-1.621-6.052 1.97-12.272 8.022-13.894 6.052-1.622 12.273 1.97 13.895 8.022Zm-21.346 32.565c-.154-.577-.009-2.61 2.877-5.555 2.665-2.721 6.917-5.33 12.158-6.734 5.24-1.404 10.227-1.271 13.896-.247 3.971 1.108 5.114 2.796 5.268 3.372a3.116 3.116 0 0 1-2.204 3.817l-28.178 7.55a3.116 3.116 0 0 1-3.817-2.203ZM78.081 144.6c-12.054 3.23-20.238 12.134-18.56 18.396a8.103 8.103 0 0 0 9.924 5.73l28.178-7.55a8.104 8.104 0 0 0 5.73-9.925c-1.678-6.261-13.218-9.881-25.272-6.651Z",clipRule:"evenodd"}))),f||(f=s.createElement("defs",null,s.createElement("filter",{id:"a",width:113.303,height:133.91,x:71.693,y:39.806,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse"},s.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),s.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),s.createElement("feGaussianBlur",{result:"effect1_foregroundBlur_1301_35376",stdDeviation:5})),s.createElement("filter",{id:"c",width:73.289,height:73.288,x:41.018,y:106.391,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse"},s.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),s.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),s.createElement("feColorMatrix",{in:"SourceAlpha",result:"hardAlpha",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"}),s.createElement("feOffset",null),s.createElement("feGaussianBlur",{stdDeviation:1.917}),s.createElement("feComposite",{in2:"hardAlpha",k2:-1,k3:1,operator:"arithmetic"}),s.createElement("feColorMatrix",{values:"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.8 0"}),s.createElement("feBlend",{in2:"shape",result:"effect1_innerShadow_1301_35376"})))))}var E=s.forwardRef(h);t.default=l.p+"static/media/error.ca9e31d5d3dc34da07e11a00f7af0842.svg"}}]); -//# sourceMappingURL=1876.2f512037.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/1898.a0e4bd43.chunk.js b/ydb/core/viewer/monitoring/static/js/1898.a0e4bd43.chunk.js deleted file mode 100644 index 2398b608e60a..000000000000 --- a/ydb/core/viewer/monitoring/static/js/1898.a0e4bd43.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[1898],{21898:function(e,t,n){n.r(t),n.d(t,{conf:function(){return s},language:function(){return i}});var s={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:))")}}},o=[];["abstract","activate","and","any","array","as","asc","assert","autonomous","begin","bigdecimal","blob","boolean","break","bulk","by","case","cast","catch","char","class","collect","commit","const","continue","convertcurrency","decimal","default","delete","desc","do","double","else","end","enum","exception","exit","export","extends","false","final","finally","float","for","from","future","get","global","goto","group","having","hint","if","implements","import","in","inner","insert","instanceof","int","interface","into","join","last_90_days","last_month","last_n_days","last_week","like","limit","list","long","loop","map","merge","native","new","next_90_days","next_month","next_n_days","next_week","not","null","nulls","number","object","of","on","or","outer","override","package","parallel","pragma","private","protected","public","retrieve","return","returning","rollback","savepoint","search","select","set","short","sort","stat","static","strictfp","super","switch","synchronized","system","testmethod","then","this","this_month","this_week","throw","throws","today","tolabel","tomorrow","transaction","transient","trigger","true","try","type","undelete","update","upsert","using","virtual","void","volatile","webservice","when","where","while","yesterday"].forEach((function(e){o.push(e),o.push(e.toUpperCase()),o.push(function(e){return e.charAt(0).toUpperCase()+e.substr(1)}(e))}));var i={defaultToken:"",tokenPostfix:".apex",keywords:o,operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,"annotation"],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,"number.float"],[/(@digits)[fFdD]/,"number.float"],[/(@digits)[lL]?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@apexdoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],apexdoc:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}}}]); -//# sourceMappingURL=1898.a0e4bd43.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/1956.0205a5bb.chunk.js b/ydb/core/viewer/monitoring/static/js/1956.0205a5bb.chunk.js new file mode 100644 index 000000000000..82c5fabe3b72 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/1956.0205a5bb.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 1956.0205a5bb.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[1956],{71956:(E,T,S)=>{S.r(T),S.d(T,{conf:()=>R,language:()=>_});var R={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},_={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["ACCESSIBLE","ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","ASENSITIVE","BEFORE","BETWEEN","BIGINT","BINARY","BLOB","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHAR","CHARACTER","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CUBE","CUME_DIST","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DEC","DECIMAL","DECLARE","DEFAULT","DELAYED","DELETE","DENSE_RANK","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DOUBLE","DROP","DUAL","EACH","ELSE","ELSEIF","EMPTY","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FIRST_VALUE","FLOAT","FLOAT4","FLOAT8","FOR","FORCE","FOREIGN","FROM","FULLTEXT","FUNCTION","GENERATED","GET","GRANT","GROUP","GROUPING","GROUPS","HAVING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","IN","INDEX","INFILE","INNER","INOUT","INSENSITIVE","INSERT","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","INTERVAL","INTO","IO_AFTER_GTIDS","IO_BEFORE_GTIDS","IS","ITERATE","JOIN","JSON_TABLE","KEY","KEYS","KILL","LAG","LAST_VALUE","LATERAL","LEAD","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LONG","LONGBLOB","LONGTEXT","LOOP","LOW_PRIORITY","MASTER_BIND","MASTER_SSL_VERIFY_SERVER_CERT","MATCH","MAXVALUE","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MIDDLEINT","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","MODIFIES","NATURAL","NOT","NO_WRITE_TO_BINLOG","NTH_VALUE","NTILE","NULL","NUMERIC","OF","ON","OPTIMIZE","OPTIMIZER_COSTS","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PARTITION","PERCENT_RANK","PRECISION","PRIMARY","PROCEDURE","PURGE","RANGE","RANK","READ","READS","READ_WRITE","REAL","RECURSIVE","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESIGNAL","RESTRICT","RETURN","REVOKE","RIGHT","RLIKE","ROW","ROWS","ROW_NUMBER","SCHEMA","SCHEMAS","SECOND_MICROSECOND","SELECT","SENSITIVE","SEPARATOR","SET","SHOW","SIGNAL","SMALLINT","SPATIAL","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STORED","STRAIGHT_JOIN","SYSTEM","TABLE","TERMINATED","THEN","TINYBLOB","TINYINT","TINYTEXT","TO","TRAILING","TRIGGER","TRUE","UNDO","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALUES","VARBINARY","VARCHAR","VARCHARACTER","VARYING","VIRTUAL","WHEN","WHERE","WHILE","WINDOW","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"],operators:["AND","BETWEEN","IN","LIKE","NOT","OR","IS","NULL","INTERSECT","UNION","INNER","JOIN","LEFT","OUTER","RIGHT"],builtinFunctions:["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","Area","AsBinary","AsWKB","ASCII","ASIN","AsText","AsWKT","ASYMMETRIC_DECRYPT","ASYMMETRIC_DERIVE","ASYMMETRIC_ENCRYPT","ASYMMETRIC_SIGN","ASYMMETRIC_VERIFY","ATAN","ATAN2","ATAN","AVG","BENCHMARK","BIN","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_XOR","Buffer","CAST","CEIL","CEILING","Centroid","CHAR","CHAR_LENGTH","CHARACTER_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","Contains","CONV","CONVERT","CONVERT_TZ","ConvexHull","COS","COT","COUNT","CRC32","CREATE_ASYMMETRIC_PRIV_KEY","CREATE_ASYMMETRIC_PUB_KEY","CREATE_DH_PARAMETERS","CREATE_DIGEST","Crosses","CUME_DIST","CURDATE","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEFAULT","DEGREES","DES_DECRYPT","DES_ENCRYPT","DENSE_RANK","Dimension","Disjoint","Distance","ELT","ENCODE","ENCRYPT","EndPoint","Envelope","Equals","EXP","EXPORT_SET","ExteriorRing","EXTRACT","ExtractValue","FIELD","FIND_IN_SET","FIRST_VALUE","FLOOR","FORMAT","FORMAT_BYTES","FORMAT_PICO_TIME","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GEN_RANGE","GEN_RND_EMAIL","GEN_RND_PAN","GEN_RND_SSN","GEN_RND_US_PHONE","GeomCollection","GeomCollFromText","GeometryCollectionFromText","GeomCollFromWKB","GeometryCollectionFromWKB","GeometryCollection","GeometryN","GeometryType","GeomFromText","GeometryFromText","GeomFromWKB","GeometryFromWKB","GET_FORMAT","GET_LOCK","GLength","GREATEST","GROUP_CONCAT","GROUPING","GTID_SUBSET","GTID_SUBTRACT","HEX","HOUR","ICU_VERSION","IF","IFNULL","INET_ATON","INET_NTOA","INET6_ATON","INET6_NTOA","INSERT","INSTR","InteriorRingN","Intersects","INTERVAL","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS_USED_LOCK","IS_UUID","IsClosed","IsEmpty","ISNULL","IsSimple","JSON_APPEND","JSON_ARRAY","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_ARRAYAGG","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_OBJECTAGG","JSON_OVERLAPS","JSON_PRETTY","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SCHEMA_VALID","JSON_SCHEMA_VALIDATION_REPORT","JSON_SEARCH","JSON_SET","JSON_STORAGE_FREE","JSON_STORAGE_SIZE","JSON_TABLE","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","LAG","LAST_DAY","LAST_INSERT_ID","LAST_VALUE","LCASE","LEAD","LEAST","LEFT","LENGTH","LineFromText","LineStringFromText","LineFromWKB","LineStringFromWKB","LineString","LN","LOAD_FILE","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","MAKE_SET","MAKEDATE","MAKETIME","MASK_INNER","MASK_OUTER","MASK_PAN","MASK_PAN_RELAXED","MASK_SSN","MASTER_POS_WAIT","MAX","MBRContains","MBRCoveredBy","MBRCovers","MBRDisjoint","MBREqual","MBREquals","MBRIntersects","MBROverlaps","MBRTouches","MBRWithin","MD5","MEMBER OF","MICROSECOND","MID","MIN","MINUTE","MLineFromText","MultiLineStringFromText","MLineFromWKB","MultiLineStringFromWKB","MOD","MONTH","MONTHNAME","MPointFromText","MultiPointFromText","MPointFromWKB","MultiPointFromWKB","MPolyFromText","MultiPolygonFromText","MPolyFromWKB","MultiPolygonFromWKB","MultiLineString","MultiPoint","MultiPolygon","NAME_CONST","NOT IN","NOW","NTH_VALUE","NTILE","NULLIF","NumGeometries","NumInteriorRings","NumPoints","OCT","OCTET_LENGTH","OLD_PASSWORD","ORD","Overlaps","PASSWORD","PERCENT_RANK","PERIOD_ADD","PERIOD_DIFF","PI","Point","PointFromText","PointFromWKB","PointN","PolyFromText","PolygonFromText","PolyFromWKB","PolygonFromWKB","Polygon","POSITION","POW","POWER","PS_CURRENT_THREAD_ID","PS_THREAD_ID","PROCEDURE ANALYSE","QUARTER","QUOTE","RADIANS","RAND","RANDOM_BYTES","RANK","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_REPLACE","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPEAT","REPLACE","REVERSE","RIGHT","ROLES_GRAPHML","ROUND","ROW_COUNT","ROW_NUMBER","RPAD","RTRIM","SCHEMA","SEC_TO_TIME","SECOND","SESSION_USER","SHA1","SHA","SHA2","SIGN","SIN","SLEEP","SOUNDEX","SOURCE_POS_WAIT","SPACE","SQRT","SRID","ST_Area","ST_AsBinary","ST_AsWKB","ST_AsGeoJSON","ST_AsText","ST_AsWKT","ST_Buffer","ST_Buffer_Strategy","ST_Centroid","ST_Collect","ST_Contains","ST_ConvexHull","ST_Crosses","ST_Difference","ST_Dimension","ST_Disjoint","ST_Distance","ST_Distance_Sphere","ST_EndPoint","ST_Envelope","ST_Equals","ST_ExteriorRing","ST_FrechetDistance","ST_GeoHash","ST_GeomCollFromText","ST_GeometryCollectionFromText","ST_GeomCollFromTxt","ST_GeomCollFromWKB","ST_GeometryCollectionFromWKB","ST_GeometryN","ST_GeometryType","ST_GeomFromGeoJSON","ST_GeomFromText","ST_GeometryFromText","ST_GeomFromWKB","ST_GeometryFromWKB","ST_HausdorffDistance","ST_InteriorRingN","ST_Intersection","ST_Intersects","ST_IsClosed","ST_IsEmpty","ST_IsSimple","ST_IsValid","ST_LatFromGeoHash","ST_Length","ST_LineFromText","ST_LineStringFromText","ST_LineFromWKB","ST_LineStringFromWKB","ST_LineInterpolatePoint","ST_LineInterpolatePoints","ST_LongFromGeoHash","ST_Longitude","ST_MakeEnvelope","ST_MLineFromText","ST_MultiLineStringFromText","ST_MLineFromWKB","ST_MultiLineStringFromWKB","ST_MPointFromText","ST_MultiPointFromText","ST_MPointFromWKB","ST_MultiPointFromWKB","ST_MPolyFromText","ST_MultiPolygonFromText","ST_MPolyFromWKB","ST_MultiPolygonFromWKB","ST_NumGeometries","ST_NumInteriorRing","ST_NumInteriorRings","ST_NumPoints","ST_Overlaps","ST_PointAtDistance","ST_PointFromGeoHash","ST_PointFromText","ST_PointFromWKB","ST_PointN","ST_PolyFromText","ST_PolygonFromText","ST_PolyFromWKB","ST_PolygonFromWKB","ST_Simplify","ST_SRID","ST_StartPoint","ST_SwapXY","ST_SymDifference","ST_Touches","ST_Transform","ST_Union","ST_Validate","ST_Within","ST_X","ST_Y","StartPoint","STATEMENT_DIGEST","STATEMENT_DIGEST_TEXT","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","STRCMP","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUBTIME","SUM","SYSDATE","SYSTEM_USER","TAN","TIME","TIME_FORMAT","TIME_TO_SEC","TIMEDIFF","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TO_BASE64","TO_DAYS","TO_SECONDS","Touches","TRIM","TRUNCATE","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UpdateXML","UPPER","USER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","UUID_SHORT","UUID_TO_BIN","VALIDATE_PASSWORD_STRENGTH","VALUES","VAR_POP","VAR_SAMP","VARIANCE","VERSION","WAIT_FOR_EXECUTED_GTID_SET","WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS","WEEK","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","Within","X","Y","YEAR","YEARWEEK"],builtinVariables:[],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@]+/,{cases:{"@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@keywords":"keyword","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/#+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}],[/"/,{token:"string.double",next:"@stringDouble"}]],string:[[/\\'/,"string"],[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],stringDouble:[[/[^"]+/,"string.double"],[/""/,"string.double"],[/"/,{token:"string.double",next:"@pop"}]],complexIdentifiers:[[/`/,{token:"identifier.quote",next:"@quotedIdentifier"}]],quotedIdentifier:[[/[^`]+/,"identifier"],[/``/,"identifier"],[/`/,{token:"identifier.quote",next:"@pop"}]],scopes:[]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/1956.0205a5bb.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/1956.0205a5bb.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/1956.0205a5bb.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/202.52f13cd5.chunk.js b/ydb/core/viewer/monitoring/static/js/202.52f13cd5.chunk.js new file mode 100644 index 000000000000..32f1ae29015b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/202.52f13cd5.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[202],{10202:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},r={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},d={name:"bn-bd",weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u0983_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekStart:0,preparse:function(_){return _.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,(function(_){return r[_]}))},postformat:function(_){return _.replace(/\d/g,(function(_){return n[_]}))},ordinal:function(_){var e=["\u0987","\u09b2\u09be","\u09b0\u09be","\u09a0\u09be","\u09b6\u09c7"],t=_%100;return"["+_+(e[(t-20)%10]||e[t]||e[0])+"]"},formats:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY \u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09be\u09ac\u09cd\u09a6",LL:"D MMMM YYYY \u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09be\u09ac\u09cd\u09a6",LLL:"D MMMM YYYY \u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09be\u09ac\u09cd\u09a6, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY \u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09be\u09ac\u09cd\u09a6, A h:mm \u09b8\u09ae\u09df"},meridiem:function(_){return _<4?"\u09b0\u09be\u09a4":_<6?"\u09ad\u09cb\u09b0":_<12?"\u09b8\u0995\u09be\u09b2":_<15?"\u09a6\u09c1\u09aa\u09c1\u09b0":_<18?"\u09ac\u09bf\u0995\u09be\u09b2":_<20?"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be":"\u09b0\u09be\u09a4"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2033.5c6dfca9.chunk.js b/ydb/core/viewer/monitoring/static/js/2033.5c6dfca9.chunk.js new file mode 100644 index 000000000000..e97d7443e164 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2033.5c6dfca9.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2033],{2033:function(e,_,t){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),a={name:"me",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return t.default.locale(a,null,!0),a}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2056.b607e590.chunk.js b/ydb/core/viewer/monitoring/static/js/2056.b607e590.chunk.js deleted file mode 100644 index f56e12742066..000000000000 --- a/ydb/core/viewer/monitoring/static/js/2056.b607e590.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2056],{32056:function(e,t,n){n.r(t),n.d(t,{conf:function(){return o},language:function(){return a}});var i=n(37456),o={comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["<",">"]],autoClosingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],surroundingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],onEnterRules:[{beforeText:new RegExp("<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:i.Mj.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:i.Mj.IndentAction.Indent}}]},a={defaultToken:"",tokenPostfix:".xml",ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,""],{include:"@whitespace"},[/(<)(@qualifiedName)/,[{token:"delimiter"},{token:"tag",next:"@tag"}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:"delimiter"},{token:"tag"},"",{token:"delimiter"}]],[/(<\?)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/(<\!)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/<\!\[CDATA\[/,{token:"delimiter.cdata",next:"@cdata"}],[/&\w+;/,"string.escape"]],cdata:[[/[^\]]+/,""],[/\]\]>/,{token:"delimiter.cdata",next:"@pop"}],[/\]/,""]],tag:[[/[ \t\r\n]+/,""],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,["attribute.name","","attribute.value"]],[/@qualifiedName/,"attribute.name"],[/\?>/,{token:"delimiter",next:"@pop"}],[/(\/)(>)/,[{token:"tag"},{token:"delimiter",next:"@pop"}]],[/>/,{token:"delimiter",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[//,{token:"comment",next:"@pop"}],[//,"comment","@pop"],[/[^-]+/,"comment.content"],[/./,"comment.content"]],otherTag:[[/\/?>/,"delimiter","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter","tag",{token:"delimiter",next:"@pop"}]]],scriptAfterType:[[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/>/,{token:"delimiter",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]],style:[[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter","tag",{token:"delimiter",next:"@pop"}]]],styleAfterType:[[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/>/,{token:"delimiter",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]]}}}}]); -//# sourceMappingURL=2406.180cb966.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2435.092e8d7f.chunk.js b/ydb/core/viewer/monitoring/static/js/2435.092e8d7f.chunk.js new file mode 100644 index 000000000000..4972c6154d9a --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2435.092e8d7f.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2435],{32435:(e,t,l)=>{l.r(t),l.d(t,{ReactComponent:()=>m,default:()=>h});var a,r,i,c,n,o,d,s,f=l(68963);function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t",token:"delimiter.angle"}],tokenizer:{root:[{include:"@selector"}],selector:[{include:"@comments"},{include:"@import"},{include:"@strings"},["[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)",{token:"keyword",next:"@keyframedeclaration"}],["[@](page|content|font-face|-moz-document)",{token:"keyword"}],["[@](charset|namespace)",{token:"keyword",next:"@declarationbody"}],["(url-prefix)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],["(url)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],{include:"@selectorname"},["[\\*]","tag"],["[>\\+,]","delimiter"],["\\[",{token:"delimiter.bracket",next:"@selectorattribute"}],["{",{token:"delimiter.bracket",next:"@selectorbody"}]],selectorbody:[{include:"@comments"},["[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))","attribute.name","@rulevalue"],["}",{token:"delimiter.bracket",next:"@pop"}]],selectorname:[["(\\.|#(?=[^{])|%|(@identifier)|:)+","tag"]],selectorattribute:[{include:"@term"},["]",{token:"delimiter.bracket",next:"@pop"}]],term:[{include:"@comments"},["(url-prefix)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],["(url)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],{include:"@functioninvocation"},{include:"@numbers"},{include:"@name"},{include:"@strings"},["([<>=\\+\\-\\*\\/\\^\\|\\~,])","delimiter"],[",","delimiter"]],rulevalue:[{include:"@comments"},{include:"@strings"},{include:"@term"},["!important","keyword"],[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],warndebug:[["[@](warn|debug)",{token:"keyword",next:"@declarationbody"}]],import:[["[@](import)",{token:"keyword",next:"@declarationbody"}]],urldeclaration:[{include:"@strings"},["[^)\r\n]+","string"],["\\)",{token:"delimiter.parenthesis",next:"@pop"}]],parenthizedterm:[{include:"@term"},["\\)",{token:"delimiter.parenthesis",next:"@pop"}]],declarationbody:[{include:"@term"},[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[/[^*/]+/,"comment"],[/./,"comment"]],name:[["@identifier","attribute.value"]],numbers:[["-?(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?",{token:"attribute.value.number",next:"@units"}],["#[0-9a-fA-F_]+(?!\\w)","attribute.value.hex"]],units:[["(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?","attribute.value.unit","@pop"]],keyframedeclaration:[["@identifier","attribute.value"],["{",{token:"delimiter.bracket",switchTo:"@keyframebody"}]],keyframebody:[{include:"@term"},["{",{token:"delimiter.bracket",next:"@selectorbody"}],["}",{token:"delimiter.bracket",next:"@pop"}]],functioninvocation:[["@identifier\\(",{token:"attribute.value",next:"@functionarguments"}]],functionarguments:[["\\$@identifier@ws:","attribute.name"],["[,]","delimiter"],{include:"@term"},["\\)",{token:"attribute.value",next:"@pop"}]],strings:[['~?"',{token:"string",next:"@stringenddoublequote"}],["~?'",{token:"string",next:"@stringendquote"}]],stringenddoublequote:[["\\\\.","string"],['"',{token:"string",next:"@pop"}],[/[^\\"]+/,"string"],[".","string"]],stringendquote:[["\\\\.","string"],["'",{token:"string",next:"@pop"}],[/[^\\']+/,"string"],[".","string"]]}}}}]); -//# sourceMappingURL=245.6db2db52.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2477.e6121bfd.chunk.js b/ydb/core/viewer/monitoring/static/js/2477.e6121bfd.chunk.js new file mode 100644 index 000000000000..e23ed9755ad9 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2477.e6121bfd.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2477],{22477:function(e,_,n){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=_(e),t={name:"jv",weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),weekStart:1,weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"}};return n.default.locale(t,null,!0),t}(n(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/248.736ab237.chunk.js b/ydb/core/viewer/monitoring/static/js/248.736ab237.chunk.js deleted file mode 100644 index cd881a3e1800..000000000000 --- a/ydb/core/viewer/monitoring/static/js/248.736ab237.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[248],{248:function(e,t,n){n.r(t),n.d(t,{conf:function(){return o},language:function(){return s}});var o={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}]},s={defaultToken:"",tokenPostfix:".aes",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["contract","library","entrypoint","function","stateful","state","hash","signature","tuple","list","address","string","bool","int","record","datatype","type","option","oracle","oracle_query","Call","Bits","Bytes","Oracle","String","Crypto","Address","Auth","Chain","None","Some","bits","bytes","event","let","map","private","public","true","false","var","if","else","throw"],operators:["=",">","<","!","~","?","::",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}}}}]); -//# sourceMappingURL=248.736ab237.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2492.64b7d727.chunk.js b/ydb/core/viewer/monitoring/static/js/2492.64b7d727.chunk.js new file mode 100644 index 000000000000..ebfac88f075c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2492.64b7d727.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 2492.64b7d727.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2492],{82492:(e,t,o)=>{o.r(t),o.d(t,{conf:()=>r,language:()=>n});var r={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["{","}"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\{\\$REGION(\\s\\'.*\\')?\\}"),end:new RegExp("^\\s*\\{\\$ENDREGION\\}")}}},n={defaultToken:"",tokenPostfix:".pascal",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["absolute","abstract","all","and_then","array","as","asm","attribute","begin","bindable","case","class","const","contains","default","div","else","end","except","exports","external","far","file","finalization","finally","forward","generic","goto","if","implements","import","in","index","inherited","initialization","interrupt","is","label","library","mod","module","name","near","not","object","of","on","only","operator","or_else","otherwise","override","package","packed","pow","private","program","protected","public","published","interface","implementation","qualified","read","record","resident","requires","resourcestring","restricted","segment","set","shl","shr","specialize","stored","strict","then","threadvar","to","try","type","unit","uses","var","view","virtual","dynamic","overload","reintroduce","with","write","xor","true","false","procedure","function","constructor","destructor","property","break","continue","exit","abort","while","do","for","raise","repeat","until"],typeKeywords:["boolean","double","byte","integer","shortint","char","longint","float","string"],operators:["=",">","<","<=",">=","<>",":",":=","and","or","+","-","*","/","@","&","^","%"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\*\}]+/,"comment"],[/\}/,"comment","@pop"],[/[\{]/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\{/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2492.64b7d727.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/2492.64b7d727.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2492.64b7d727.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/2507.2d9c4b5c.chunk.js b/ydb/core/viewer/monitoring/static/js/2507.2d9c4b5c.chunk.js deleted file mode 100644 index b219f06b694b..000000000000 --- a/ydb/core/viewer/monitoring/static/js/2507.2d9c4b5c.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2507],{2507:function(E,S,e){e.r(S),e.d(S,{conf:function(){return T},language:function(){return R}});var T={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},R={defaultToken:"",tokenPostfix:".redis",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["APPEND","AUTH","BGREWRITEAOF","BGSAVE","BITCOUNT","BITFIELD","BITOP","BITPOS","BLPOP","BRPOP","BRPOPLPUSH","CLIENT","KILL","LIST","GETNAME","PAUSE","REPLY","SETNAME","CLUSTER","ADDSLOTS","COUNT-FAILURE-REPORTS","COUNTKEYSINSLOT","DELSLOTS","FAILOVER","FORGET","GETKEYSINSLOT","INFO","KEYSLOT","MEET","NODES","REPLICATE","RESET","SAVECONFIG","SET-CONFIG-EPOCH","SETSLOT","SLAVES","SLOTS","COMMAND","COUNT","GETKEYS","CONFIG","GET","REWRITE","SET","RESETSTAT","DBSIZE","DEBUG","OBJECT","SEGFAULT","DECR","DECRBY","DEL","DISCARD","DUMP","ECHO","EVAL","EVALSHA","EXEC","EXISTS","EXPIRE","EXPIREAT","FLUSHALL","FLUSHDB","GEOADD","GEOHASH","GEOPOS","GEODIST","GEORADIUS","GEORADIUSBYMEMBER","GETBIT","GETRANGE","GETSET","HDEL","HEXISTS","HGET","HGETALL","HINCRBY","HINCRBYFLOAT","HKEYS","HLEN","HMGET","HMSET","HSET","HSETNX","HSTRLEN","HVALS","INCR","INCRBY","INCRBYFLOAT","KEYS","LASTSAVE","LINDEX","LINSERT","LLEN","LPOP","LPUSH","LPUSHX","LRANGE","LREM","LSET","LTRIM","MGET","MIGRATE","MONITOR","MOVE","MSET","MSETNX","MULTI","PERSIST","PEXPIRE","PEXPIREAT","PFADD","PFCOUNT","PFMERGE","PING","PSETEX","PSUBSCRIBE","PUBSUB","PTTL","PUBLISH","PUNSUBSCRIBE","QUIT","RANDOMKEY","READONLY","READWRITE","RENAME","RENAMENX","RESTORE","ROLE","RPOP","RPOPLPUSH","RPUSH","RPUSHX","SADD","SAVE","SCARD","SCRIPT","FLUSH","LOAD","SDIFF","SDIFFSTORE","SELECT","SETBIT","SETEX","SETNX","SETRANGE","SHUTDOWN","SINTER","SINTERSTORE","SISMEMBER","SLAVEOF","SLOWLOG","SMEMBERS","SMOVE","SORT","SPOP","SRANDMEMBER","SREM","STRLEN","SUBSCRIBE","SUNION","SUNIONSTORE","SWAPDB","SYNC","TIME","TOUCH","TTL","TYPE","UNSUBSCRIBE","UNLINK","UNWATCH","WAIT","WATCH","ZADD","ZCARD","ZCOUNT","ZINCRBY","ZINTERSTORE","ZLEXCOUNT","ZRANGE","ZRANGEBYLEX","ZREVRANGEBYLEX","ZRANGEBYSCORE","ZRANK","ZREM","ZREMRANGEBYLEX","ZREMRANGEBYRANK","ZREMRANGEBYSCORE","ZREVRANGE","ZREVRANGEBYSCORE","ZREVRANK","ZSCORE","ZUNIONSTORE","SCAN","SSCAN","HSCAN","ZSCAN"],operators:[],builtinFunctions:[],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}],[/"/,{token:"string.double",next:"@stringDouble"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],stringDouble:[[/[^"]+/,"string.double"],[/""/,"string.double"],[/"/,{token:"string.double",next:"@pop"}]],scopes:[]}}}}]); -//# sourceMappingURL=2507.2d9c4b5c.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2521.21bdfab9.chunk.js b/ydb/core/viewer/monitoring/static/js/2521.21bdfab9.chunk.js new file mode 100644 index 000000000000..69130f03d8d1 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2521.21bdfab9.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 2521.21bdfab9.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2521],{52521:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>o,language:()=>a});var o={comments:{lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}],folding:{offSide:!0}},a={defaultToken:"",tokenPostfix:".pug",ignoreCase:!0,brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],keywords:["append","block","case","default","doctype","each","else","extends","for","if","in","include","mixin","typeof","unless","var","when"],tags:["a","abbr","acronym","address","area","article","aside","audio","b","base","basefont","bdi","bdo","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","command","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","font","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","keygen","kbd","label","li","link","map","mark","menu","meta","meter","nav","noframes","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strike","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","tracks","tt","u","ul","video","wbr"],symbols:/[\+\-\*\%\&\|\!\=\/\.\,\:]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^(\s*)([a-zA-Z_-][\w-]*)/,{cases:{"$2@tags":{cases:{"@eos":["","tag"],"@default":["",{token:"tag",next:"@tag.$1"}]}},"$2@keywords":["",{token:"keyword.$2"}],"@default":["",""]}}],[/^(\s*)(#[a-zA-Z_-][\w-]*)/,{cases:{"@eos":["","tag.id"],"@default":["",{token:"tag.id",next:"@tag.$1"}]}}],[/^(\s*)(\.[a-zA-Z_-][\w-]*)/,{cases:{"@eos":["","tag.class"],"@default":["",{token:"tag.class",next:"@tag.$1"}]}}],[/^(\s*)(\|.*)$/,""],{include:"@whitespace"},[/[a-zA-Z_$][\w$]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":""}}],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d+\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\d+/,"number"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],tag:[[/(\.)(\s*$)/,[{token:"delimiter",next:"@blockText.$S2."},""]],[/\s+/,{token:"",next:"@simpleText"}],[/#[a-zA-Z_-][\w-]*/,{cases:{"@eos":{token:"tag.id",next:"@pop"},"@default":"tag.id"}}],[/\.[a-zA-Z_-][\w-]*/,{cases:{"@eos":{token:"tag.class",next:"@pop"},"@default":"tag.class"}}],[/\(/,{token:"delimiter.parenthesis",next:"@attributeList"}]],simpleText:[[/[^#]+$/,{token:"",next:"@popall"}],[/[^#]+/,{token:""}],[/(#{)([^}]*)(})/,{cases:{"@eos":["interpolation.delimiter","interpolation",{token:"interpolation.delimiter",next:"@popall"}],"@default":["interpolation.delimiter","interpolation","interpolation.delimiter"]}}],[/#$/,{token:"",next:"@popall"}],[/#/,""]],attributeList:[[/\s+/,""],[/(\w+)(\s*=\s*)("|')/,["attribute.name","delimiter",{token:"attribute.value",next:"@value.$3"}]],[/\w+/,"attribute.name"],[/,/,{cases:{"@eos":{token:"attribute.delimiter",next:"@popall"},"@default":"attribute.delimiter"}}],[/\)$/,{token:"delimiter.parenthesis",next:"@popall"}],[/\)/,{token:"delimiter.parenthesis",next:"@pop"}]],whitespace:[[/^(\s*)(\/\/.*)$/,{token:"comment",next:"@blockText.$1.comment"}],[/[ \t\r\n]+/,""],[//,{token:"comment",next:"@pop"}],[/|<\/?script\s*\/?>?/i);if(0===u.length)return c.goToEnd(),m(t,fe.Script);if("\x3c!--"===u)1===d&&(d=2);else if("--\x3e"===u)d=1;else if("/"!==u[1])2===d&&(d=3);else{if(3!==d){c.goBack(u.length);break}d=2}}return h=ge.WithinContent,t=0){var n=this.children[t];if(e>n.start){if(e=0){var n=this.children[t];if(e>n.start&&e<=n.end)return n.findNodeAt(e)}return this}}();var je={"Aacute;":"\xc1",Aacute:"\xc1","aacute;":"\xe1",aacute:"\xe1","Abreve;":"\u0102","abreve;":"\u0103","ac;":"\u223e","acd;":"\u223f","acE;":"\u223e\u0333","Acirc;":"\xc2",Acirc:"\xc2","acirc;":"\xe2",acirc:"\xe2","acute;":"\xb4",acute:"\xb4","Acy;":"\u0410","acy;":"\u0430","AElig;":"\xc6",AElig:"\xc6","aelig;":"\xe6",aelig:"\xe6","af;":"\u2061","Afr;":"\ud835\udd04","afr;":"\ud835\udd1e","Agrave;":"\xc0",Agrave:"\xc0","agrave;":"\xe0",agrave:"\xe0","alefsym;":"\u2135","aleph;":"\u2135","Alpha;":"\u0391","alpha;":"\u03b1","Amacr;":"\u0100","amacr;":"\u0101","amalg;":"\u2a3f","AMP;":"&",AMP:"&","amp;":"&",amp:"&","And;":"\u2a53","and;":"\u2227","andand;":"\u2a55","andd;":"\u2a5c","andslope;":"\u2a58","andv;":"\u2a5a","ang;":"\u2220","ange;":"\u29a4","angle;":"\u2220","angmsd;":"\u2221","angmsdaa;":"\u29a8","angmsdab;":"\u29a9","angmsdac;":"\u29aa","angmsdad;":"\u29ab","angmsdae;":"\u29ac","angmsdaf;":"\u29ad","angmsdag;":"\u29ae","angmsdah;":"\u29af","angrt;":"\u221f","angrtvb;":"\u22be","angrtvbd;":"\u299d","angsph;":"\u2222","angst;":"\xc5","angzarr;":"\u237c","Aogon;":"\u0104","aogon;":"\u0105","Aopf;":"\ud835\udd38","aopf;":"\ud835\udd52","ap;":"\u2248","apacir;":"\u2a6f","apE;":"\u2a70","ape;":"\u224a","apid;":"\u224b","apos;":"'","ApplyFunction;":"\u2061","approx;":"\u2248","approxeq;":"\u224a","Aring;":"\xc5",Aring:"\xc5","aring;":"\xe5",aring:"\xe5","Ascr;":"\ud835\udc9c","ascr;":"\ud835\udcb6","Assign;":"\u2254","ast;":"*","asymp;":"\u2248","asympeq;":"\u224d","Atilde;":"\xc3",Atilde:"\xc3","atilde;":"\xe3",atilde:"\xe3","Auml;":"\xc4",Auml:"\xc4","auml;":"\xe4",auml:"\xe4","awconint;":"\u2233","awint;":"\u2a11","backcong;":"\u224c","backepsilon;":"\u03f6","backprime;":"\u2035","backsim;":"\u223d","backsimeq;":"\u22cd","Backslash;":"\u2216","Barv;":"\u2ae7","barvee;":"\u22bd","Barwed;":"\u2306","barwed;":"\u2305","barwedge;":"\u2305","bbrk;":"\u23b5","bbrktbrk;":"\u23b6","bcong;":"\u224c","Bcy;":"\u0411","bcy;":"\u0431","bdquo;":"\u201e","becaus;":"\u2235","Because;":"\u2235","because;":"\u2235","bemptyv;":"\u29b0","bepsi;":"\u03f6","bernou;":"\u212c","Bernoullis;":"\u212c","Beta;":"\u0392","beta;":"\u03b2","beth;":"\u2136","between;":"\u226c","Bfr;":"\ud835\udd05","bfr;":"\ud835\udd1f","bigcap;":"\u22c2","bigcirc;":"\u25ef","bigcup;":"\u22c3","bigodot;":"\u2a00","bigoplus;":"\u2a01","bigotimes;":"\u2a02","bigsqcup;":"\u2a06","bigstar;":"\u2605","bigtriangledown;":"\u25bd","bigtriangleup;":"\u25b3","biguplus;":"\u2a04","bigvee;":"\u22c1","bigwedge;":"\u22c0","bkarow;":"\u290d","blacklozenge;":"\u29eb","blacksquare;":"\u25aa","blacktriangle;":"\u25b4","blacktriangledown;":"\u25be","blacktriangleleft;":"\u25c2","blacktriangleright;":"\u25b8","blank;":"\u2423","blk12;":"\u2592","blk14;":"\u2591","blk34;":"\u2593","block;":"\u2588","bne;":"=\u20e5","bnequiv;":"\u2261\u20e5","bNot;":"\u2aed","bnot;":"\u2310","Bopf;":"\ud835\udd39","bopf;":"\ud835\udd53","bot;":"\u22a5","bottom;":"\u22a5","bowtie;":"\u22c8","boxbox;":"\u29c9","boxDL;":"\u2557","boxDl;":"\u2556","boxdL;":"\u2555","boxdl;":"\u2510","boxDR;":"\u2554","boxDr;":"\u2553","boxdR;":"\u2552","boxdr;":"\u250c","boxH;":"\u2550","boxh;":"\u2500","boxHD;":"\u2566","boxHd;":"\u2564","boxhD;":"\u2565","boxhd;":"\u252c","boxHU;":"\u2569","boxHu;":"\u2567","boxhU;":"\u2568","boxhu;":"\u2534","boxminus;":"\u229f","boxplus;":"\u229e","boxtimes;":"\u22a0","boxUL;":"\u255d","boxUl;":"\u255c","boxuL;":"\u255b","boxul;":"\u2518","boxUR;":"\u255a","boxUr;":"\u2559","boxuR;":"\u2558","boxur;":"\u2514","boxV;":"\u2551","boxv;":"\u2502","boxVH;":"\u256c","boxVh;":"\u256b","boxvH;":"\u256a","boxvh;":"\u253c","boxVL;":"\u2563","boxVl;":"\u2562","boxvL;":"\u2561","boxvl;":"\u2524","boxVR;":"\u2560","boxVr;":"\u255f","boxvR;":"\u255e","boxvr;":"\u251c","bprime;":"\u2035","Breve;":"\u02d8","breve;":"\u02d8","brvbar;":"\xa6",brvbar:"\xa6","Bscr;":"\u212c","bscr;":"\ud835\udcb7","bsemi;":"\u204f","bsim;":"\u223d","bsime;":"\u22cd","bsol;":"\\","bsolb;":"\u29c5","bsolhsub;":"\u27c8","bull;":"\u2022","bullet;":"\u2022","bump;":"\u224e","bumpE;":"\u2aae","bumpe;":"\u224f","Bumpeq;":"\u224e","bumpeq;":"\u224f","Cacute;":"\u0106","cacute;":"\u0107","Cap;":"\u22d2","cap;":"\u2229","capand;":"\u2a44","capbrcup;":"\u2a49","capcap;":"\u2a4b","capcup;":"\u2a47","capdot;":"\u2a40","CapitalDifferentialD;":"\u2145","caps;":"\u2229\ufe00","caret;":"\u2041","caron;":"\u02c7","Cayleys;":"\u212d","ccaps;":"\u2a4d","Ccaron;":"\u010c","ccaron;":"\u010d","Ccedil;":"\xc7",Ccedil:"\xc7","ccedil;":"\xe7",ccedil:"\xe7","Ccirc;":"\u0108","ccirc;":"\u0109","Cconint;":"\u2230","ccups;":"\u2a4c","ccupssm;":"\u2a50","Cdot;":"\u010a","cdot;":"\u010b","cedil;":"\xb8",cedil:"\xb8","Cedilla;":"\xb8","cemptyv;":"\u29b2","cent;":"\xa2",cent:"\xa2","CenterDot;":"\xb7","centerdot;":"\xb7","Cfr;":"\u212d","cfr;":"\ud835\udd20","CHcy;":"\u0427","chcy;":"\u0447","check;":"\u2713","checkmark;":"\u2713","Chi;":"\u03a7","chi;":"\u03c7","cir;":"\u25cb","circ;":"\u02c6","circeq;":"\u2257","circlearrowleft;":"\u21ba","circlearrowright;":"\u21bb","circledast;":"\u229b","circledcirc;":"\u229a","circleddash;":"\u229d","CircleDot;":"\u2299","circledR;":"\xae","circledS;":"\u24c8","CircleMinus;":"\u2296","CirclePlus;":"\u2295","CircleTimes;":"\u2297","cirE;":"\u29c3","cire;":"\u2257","cirfnint;":"\u2a10","cirmid;":"\u2aef","cirscir;":"\u29c2","ClockwiseContourIntegral;":"\u2232","CloseCurlyDoubleQuote;":"\u201d","CloseCurlyQuote;":"\u2019","clubs;":"\u2663","clubsuit;":"\u2663","Colon;":"\u2237","colon;":":","Colone;":"\u2a74","colone;":"\u2254","coloneq;":"\u2254","comma;":",","commat;":"@","comp;":"\u2201","compfn;":"\u2218","complement;":"\u2201","complexes;":"\u2102","cong;":"\u2245","congdot;":"\u2a6d","Congruent;":"\u2261","Conint;":"\u222f","conint;":"\u222e","ContourIntegral;":"\u222e","Copf;":"\u2102","copf;":"\ud835\udd54","coprod;":"\u2210","Coproduct;":"\u2210","COPY;":"\xa9",COPY:"\xa9","copy;":"\xa9",copy:"\xa9","copysr;":"\u2117","CounterClockwiseContourIntegral;":"\u2233","crarr;":"\u21b5","Cross;":"\u2a2f","cross;":"\u2717","Cscr;":"\ud835\udc9e","cscr;":"\ud835\udcb8","csub;":"\u2acf","csube;":"\u2ad1","csup;":"\u2ad0","csupe;":"\u2ad2","ctdot;":"\u22ef","cudarrl;":"\u2938","cudarrr;":"\u2935","cuepr;":"\u22de","cuesc;":"\u22df","cularr;":"\u21b6","cularrp;":"\u293d","Cup;":"\u22d3","cup;":"\u222a","cupbrcap;":"\u2a48","CupCap;":"\u224d","cupcap;":"\u2a46","cupcup;":"\u2a4a","cupdot;":"\u228d","cupor;":"\u2a45","cups;":"\u222a\ufe00","curarr;":"\u21b7","curarrm;":"\u293c","curlyeqprec;":"\u22de","curlyeqsucc;":"\u22df","curlyvee;":"\u22ce","curlywedge;":"\u22cf","curren;":"\xa4",curren:"\xa4","curvearrowleft;":"\u21b6","curvearrowright;":"\u21b7","cuvee;":"\u22ce","cuwed;":"\u22cf","cwconint;":"\u2232","cwint;":"\u2231","cylcty;":"\u232d","Dagger;":"\u2021","dagger;":"\u2020","daleth;":"\u2138","Darr;":"\u21a1","dArr;":"\u21d3","darr;":"\u2193","dash;":"\u2010","Dashv;":"\u2ae4","dashv;":"\u22a3","dbkarow;":"\u290f","dblac;":"\u02dd","Dcaron;":"\u010e","dcaron;":"\u010f","Dcy;":"\u0414","dcy;":"\u0434","DD;":"\u2145","dd;":"\u2146","ddagger;":"\u2021","ddarr;":"\u21ca","DDotrahd;":"\u2911","ddotseq;":"\u2a77","deg;":"\xb0",deg:"\xb0","Del;":"\u2207","Delta;":"\u0394","delta;":"\u03b4","demptyv;":"\u29b1","dfisht;":"\u297f","Dfr;":"\ud835\udd07","dfr;":"\ud835\udd21","dHar;":"\u2965","dharl;":"\u21c3","dharr;":"\u21c2","DiacriticalAcute;":"\xb4","DiacriticalDot;":"\u02d9","DiacriticalDoubleAcute;":"\u02dd","DiacriticalGrave;":"`","DiacriticalTilde;":"\u02dc","diam;":"\u22c4","Diamond;":"\u22c4","diamond;":"\u22c4","diamondsuit;":"\u2666","diams;":"\u2666","die;":"\xa8","DifferentialD;":"\u2146","digamma;":"\u03dd","disin;":"\u22f2","div;":"\xf7","divide;":"\xf7",divide:"\xf7","divideontimes;":"\u22c7","divonx;":"\u22c7","DJcy;":"\u0402","djcy;":"\u0452","dlcorn;":"\u231e","dlcrop;":"\u230d","dollar;":"$","Dopf;":"\ud835\udd3b","dopf;":"\ud835\udd55","Dot;":"\xa8","dot;":"\u02d9","DotDot;":"\u20dc","doteq;":"\u2250","doteqdot;":"\u2251","DotEqual;":"\u2250","dotminus;":"\u2238","dotplus;":"\u2214","dotsquare;":"\u22a1","doublebarwedge;":"\u2306","DoubleContourIntegral;":"\u222f","DoubleDot;":"\xa8","DoubleDownArrow;":"\u21d3","DoubleLeftArrow;":"\u21d0","DoubleLeftRightArrow;":"\u21d4","DoubleLeftTee;":"\u2ae4","DoubleLongLeftArrow;":"\u27f8","DoubleLongLeftRightArrow;":"\u27fa","DoubleLongRightArrow;":"\u27f9","DoubleRightArrow;":"\u21d2","DoubleRightTee;":"\u22a8","DoubleUpArrow;":"\u21d1","DoubleUpDownArrow;":"\u21d5","DoubleVerticalBar;":"\u2225","DownArrow;":"\u2193","Downarrow;":"\u21d3","downarrow;":"\u2193","DownArrowBar;":"\u2913","DownArrowUpArrow;":"\u21f5","DownBreve;":"\u0311","downdownarrows;":"\u21ca","downharpoonleft;":"\u21c3","downharpoonright;":"\u21c2","DownLeftRightVector;":"\u2950","DownLeftTeeVector;":"\u295e","DownLeftVector;":"\u21bd","DownLeftVectorBar;":"\u2956","DownRightTeeVector;":"\u295f","DownRightVector;":"\u21c1","DownRightVectorBar;":"\u2957","DownTee;":"\u22a4","DownTeeArrow;":"\u21a7","drbkarow;":"\u2910","drcorn;":"\u231f","drcrop;":"\u230c","Dscr;":"\ud835\udc9f","dscr;":"\ud835\udcb9","DScy;":"\u0405","dscy;":"\u0455","dsol;":"\u29f6","Dstrok;":"\u0110","dstrok;":"\u0111","dtdot;":"\u22f1","dtri;":"\u25bf","dtrif;":"\u25be","duarr;":"\u21f5","duhar;":"\u296f","dwangle;":"\u29a6","DZcy;":"\u040f","dzcy;":"\u045f","dzigrarr;":"\u27ff","Eacute;":"\xc9",Eacute:"\xc9","eacute;":"\xe9",eacute:"\xe9","easter;":"\u2a6e","Ecaron;":"\u011a","ecaron;":"\u011b","ecir;":"\u2256","Ecirc;":"\xca",Ecirc:"\xca","ecirc;":"\xea",ecirc:"\xea","ecolon;":"\u2255","Ecy;":"\u042d","ecy;":"\u044d","eDDot;":"\u2a77","Edot;":"\u0116","eDot;":"\u2251","edot;":"\u0117","ee;":"\u2147","efDot;":"\u2252","Efr;":"\ud835\udd08","efr;":"\ud835\udd22","eg;":"\u2a9a","Egrave;":"\xc8",Egrave:"\xc8","egrave;":"\xe8",egrave:"\xe8","egs;":"\u2a96","egsdot;":"\u2a98","el;":"\u2a99","Element;":"\u2208","elinters;":"\u23e7","ell;":"\u2113","els;":"\u2a95","elsdot;":"\u2a97","Emacr;":"\u0112","emacr;":"\u0113","empty;":"\u2205","emptyset;":"\u2205","EmptySmallSquare;":"\u25fb","emptyv;":"\u2205","EmptyVerySmallSquare;":"\u25ab","emsp;":"\u2003","emsp13;":"\u2004","emsp14;":"\u2005","ENG;":"\u014a","eng;":"\u014b","ensp;":"\u2002","Eogon;":"\u0118","eogon;":"\u0119","Eopf;":"\ud835\udd3c","eopf;":"\ud835\udd56","epar;":"\u22d5","eparsl;":"\u29e3","eplus;":"\u2a71","epsi;":"\u03b5","Epsilon;":"\u0395","epsilon;":"\u03b5","epsiv;":"\u03f5","eqcirc;":"\u2256","eqcolon;":"\u2255","eqsim;":"\u2242","eqslantgtr;":"\u2a96","eqslantless;":"\u2a95","Equal;":"\u2a75","equals;":"=","EqualTilde;":"\u2242","equest;":"\u225f","Equilibrium;":"\u21cc","equiv;":"\u2261","equivDD;":"\u2a78","eqvparsl;":"\u29e5","erarr;":"\u2971","erDot;":"\u2253","Escr;":"\u2130","escr;":"\u212f","esdot;":"\u2250","Esim;":"\u2a73","esim;":"\u2242","Eta;":"\u0397","eta;":"\u03b7","ETH;":"\xd0",ETH:"\xd0","eth;":"\xf0",eth:"\xf0","Euml;":"\xcb",Euml:"\xcb","euml;":"\xeb",euml:"\xeb","euro;":"\u20ac","excl;":"!","exist;":"\u2203","Exists;":"\u2203","expectation;":"\u2130","ExponentialE;":"\u2147","exponentiale;":"\u2147","fallingdotseq;":"\u2252","Fcy;":"\u0424","fcy;":"\u0444","female;":"\u2640","ffilig;":"\ufb03","fflig;":"\ufb00","ffllig;":"\ufb04","Ffr;":"\ud835\udd09","ffr;":"\ud835\udd23","filig;":"\ufb01","FilledSmallSquare;":"\u25fc","FilledVerySmallSquare;":"\u25aa","fjlig;":"fj","flat;":"\u266d","fllig;":"\ufb02","fltns;":"\u25b1","fnof;":"\u0192","Fopf;":"\ud835\udd3d","fopf;":"\ud835\udd57","ForAll;":"\u2200","forall;":"\u2200","fork;":"\u22d4","forkv;":"\u2ad9","Fouriertrf;":"\u2131","fpartint;":"\u2a0d","frac12;":"\xbd",frac12:"\xbd","frac13;":"\u2153","frac14;":"\xbc",frac14:"\xbc","frac15;":"\u2155","frac16;":"\u2159","frac18;":"\u215b","frac23;":"\u2154","frac25;":"\u2156","frac34;":"\xbe",frac34:"\xbe","frac35;":"\u2157","frac38;":"\u215c","frac45;":"\u2158","frac56;":"\u215a","frac58;":"\u215d","frac78;":"\u215e","frasl;":"\u2044","frown;":"\u2322","Fscr;":"\u2131","fscr;":"\ud835\udcbb","gacute;":"\u01f5","Gamma;":"\u0393","gamma;":"\u03b3","Gammad;":"\u03dc","gammad;":"\u03dd","gap;":"\u2a86","Gbreve;":"\u011e","gbreve;":"\u011f","Gcedil;":"\u0122","Gcirc;":"\u011c","gcirc;":"\u011d","Gcy;":"\u0413","gcy;":"\u0433","Gdot;":"\u0120","gdot;":"\u0121","gE;":"\u2267","ge;":"\u2265","gEl;":"\u2a8c","gel;":"\u22db","geq;":"\u2265","geqq;":"\u2267","geqslant;":"\u2a7e","ges;":"\u2a7e","gescc;":"\u2aa9","gesdot;":"\u2a80","gesdoto;":"\u2a82","gesdotol;":"\u2a84","gesl;":"\u22db\ufe00","gesles;":"\u2a94","Gfr;":"\ud835\udd0a","gfr;":"\ud835\udd24","Gg;":"\u22d9","gg;":"\u226b","ggg;":"\u22d9","gimel;":"\u2137","GJcy;":"\u0403","gjcy;":"\u0453","gl;":"\u2277","gla;":"\u2aa5","glE;":"\u2a92","glj;":"\u2aa4","gnap;":"\u2a8a","gnapprox;":"\u2a8a","gnE;":"\u2269","gne;":"\u2a88","gneq;":"\u2a88","gneqq;":"\u2269","gnsim;":"\u22e7","Gopf;":"\ud835\udd3e","gopf;":"\ud835\udd58","grave;":"`","GreaterEqual;":"\u2265","GreaterEqualLess;":"\u22db","GreaterFullEqual;":"\u2267","GreaterGreater;":"\u2aa2","GreaterLess;":"\u2277","GreaterSlantEqual;":"\u2a7e","GreaterTilde;":"\u2273","Gscr;":"\ud835\udca2","gscr;":"\u210a","gsim;":"\u2273","gsime;":"\u2a8e","gsiml;":"\u2a90","GT;":">",GT:">","Gt;":"\u226b","gt;":">",gt:">","gtcc;":"\u2aa7","gtcir;":"\u2a7a","gtdot;":"\u22d7","gtlPar;":"\u2995","gtquest;":"\u2a7c","gtrapprox;":"\u2a86","gtrarr;":"\u2978","gtrdot;":"\u22d7","gtreqless;":"\u22db","gtreqqless;":"\u2a8c","gtrless;":"\u2277","gtrsim;":"\u2273","gvertneqq;":"\u2269\ufe00","gvnE;":"\u2269\ufe00","Hacek;":"\u02c7","hairsp;":"\u200a","half;":"\xbd","hamilt;":"\u210b","HARDcy;":"\u042a","hardcy;":"\u044a","hArr;":"\u21d4","harr;":"\u2194","harrcir;":"\u2948","harrw;":"\u21ad","Hat;":"^","hbar;":"\u210f","Hcirc;":"\u0124","hcirc;":"\u0125","hearts;":"\u2665","heartsuit;":"\u2665","hellip;":"\u2026","hercon;":"\u22b9","Hfr;":"\u210c","hfr;":"\ud835\udd25","HilbertSpace;":"\u210b","hksearow;":"\u2925","hkswarow;":"\u2926","hoarr;":"\u21ff","homtht;":"\u223b","hookleftarrow;":"\u21a9","hookrightarrow;":"\u21aa","Hopf;":"\u210d","hopf;":"\ud835\udd59","horbar;":"\u2015","HorizontalLine;":"\u2500","Hscr;":"\u210b","hscr;":"\ud835\udcbd","hslash;":"\u210f","Hstrok;":"\u0126","hstrok;":"\u0127","HumpDownHump;":"\u224e","HumpEqual;":"\u224f","hybull;":"\u2043","hyphen;":"\u2010","Iacute;":"\xcd",Iacute:"\xcd","iacute;":"\xed",iacute:"\xed","ic;":"\u2063","Icirc;":"\xce",Icirc:"\xce","icirc;":"\xee",icirc:"\xee","Icy;":"\u0418","icy;":"\u0438","Idot;":"\u0130","IEcy;":"\u0415","iecy;":"\u0435","iexcl;":"\xa1",iexcl:"\xa1","iff;":"\u21d4","Ifr;":"\u2111","ifr;":"\ud835\udd26","Igrave;":"\xcc",Igrave:"\xcc","igrave;":"\xec",igrave:"\xec","ii;":"\u2148","iiiint;":"\u2a0c","iiint;":"\u222d","iinfin;":"\u29dc","iiota;":"\u2129","IJlig;":"\u0132","ijlig;":"\u0133","Im;":"\u2111","Imacr;":"\u012a","imacr;":"\u012b","image;":"\u2111","ImaginaryI;":"\u2148","imagline;":"\u2110","imagpart;":"\u2111","imath;":"\u0131","imof;":"\u22b7","imped;":"\u01b5","Implies;":"\u21d2","in;":"\u2208","incare;":"\u2105","infin;":"\u221e","infintie;":"\u29dd","inodot;":"\u0131","Int;":"\u222c","int;":"\u222b","intcal;":"\u22ba","integers;":"\u2124","Integral;":"\u222b","intercal;":"\u22ba","Intersection;":"\u22c2","intlarhk;":"\u2a17","intprod;":"\u2a3c","InvisibleComma;":"\u2063","InvisibleTimes;":"\u2062","IOcy;":"\u0401","iocy;":"\u0451","Iogon;":"\u012e","iogon;":"\u012f","Iopf;":"\ud835\udd40","iopf;":"\ud835\udd5a","Iota;":"\u0399","iota;":"\u03b9","iprod;":"\u2a3c","iquest;":"\xbf",iquest:"\xbf","Iscr;":"\u2110","iscr;":"\ud835\udcbe","isin;":"\u2208","isindot;":"\u22f5","isinE;":"\u22f9","isins;":"\u22f4","isinsv;":"\u22f3","isinv;":"\u2208","it;":"\u2062","Itilde;":"\u0128","itilde;":"\u0129","Iukcy;":"\u0406","iukcy;":"\u0456","Iuml;":"\xcf",Iuml:"\xcf","iuml;":"\xef",iuml:"\xef","Jcirc;":"\u0134","jcirc;":"\u0135","Jcy;":"\u0419","jcy;":"\u0439","Jfr;":"\ud835\udd0d","jfr;":"\ud835\udd27","jmath;":"\u0237","Jopf;":"\ud835\udd41","jopf;":"\ud835\udd5b","Jscr;":"\ud835\udca5","jscr;":"\ud835\udcbf","Jsercy;":"\u0408","jsercy;":"\u0458","Jukcy;":"\u0404","jukcy;":"\u0454","Kappa;":"\u039a","kappa;":"\u03ba","kappav;":"\u03f0","Kcedil;":"\u0136","kcedil;":"\u0137","Kcy;":"\u041a","kcy;":"\u043a","Kfr;":"\ud835\udd0e","kfr;":"\ud835\udd28","kgreen;":"\u0138","KHcy;":"\u0425","khcy;":"\u0445","KJcy;":"\u040c","kjcy;":"\u045c","Kopf;":"\ud835\udd42","kopf;":"\ud835\udd5c","Kscr;":"\ud835\udca6","kscr;":"\ud835\udcc0","lAarr;":"\u21da","Lacute;":"\u0139","lacute;":"\u013a","laemptyv;":"\u29b4","lagran;":"\u2112","Lambda;":"\u039b","lambda;":"\u03bb","Lang;":"\u27ea","lang;":"\u27e8","langd;":"\u2991","langle;":"\u27e8","lap;":"\u2a85","Laplacetrf;":"\u2112","laquo;":"\xab",laquo:"\xab","Larr;":"\u219e","lArr;":"\u21d0","larr;":"\u2190","larrb;":"\u21e4","larrbfs;":"\u291f","larrfs;":"\u291d","larrhk;":"\u21a9","larrlp;":"\u21ab","larrpl;":"\u2939","larrsim;":"\u2973","larrtl;":"\u21a2","lat;":"\u2aab","lAtail;":"\u291b","latail;":"\u2919","late;":"\u2aad","lates;":"\u2aad\ufe00","lBarr;":"\u290e","lbarr;":"\u290c","lbbrk;":"\u2772","lbrace;":"{","lbrack;":"[","lbrke;":"\u298b","lbrksld;":"\u298f","lbrkslu;":"\u298d","Lcaron;":"\u013d","lcaron;":"\u013e","Lcedil;":"\u013b","lcedil;":"\u013c","lceil;":"\u2308","lcub;":"{","Lcy;":"\u041b","lcy;":"\u043b","ldca;":"\u2936","ldquo;":"\u201c","ldquor;":"\u201e","ldrdhar;":"\u2967","ldrushar;":"\u294b","ldsh;":"\u21b2","lE;":"\u2266","le;":"\u2264","LeftAngleBracket;":"\u27e8","LeftArrow;":"\u2190","Leftarrow;":"\u21d0","leftarrow;":"\u2190","LeftArrowBar;":"\u21e4","LeftArrowRightArrow;":"\u21c6","leftarrowtail;":"\u21a2","LeftCeiling;":"\u2308","LeftDoubleBracket;":"\u27e6","LeftDownTeeVector;":"\u2961","LeftDownVector;":"\u21c3","LeftDownVectorBar;":"\u2959","LeftFloor;":"\u230a","leftharpoondown;":"\u21bd","leftharpoonup;":"\u21bc","leftleftarrows;":"\u21c7","LeftRightArrow;":"\u2194","Leftrightarrow;":"\u21d4","leftrightarrow;":"\u2194","leftrightarrows;":"\u21c6","leftrightharpoons;":"\u21cb","leftrightsquigarrow;":"\u21ad","LeftRightVector;":"\u294e","LeftTee;":"\u22a3","LeftTeeArrow;":"\u21a4","LeftTeeVector;":"\u295a","leftthreetimes;":"\u22cb","LeftTriangle;":"\u22b2","LeftTriangleBar;":"\u29cf","LeftTriangleEqual;":"\u22b4","LeftUpDownVector;":"\u2951","LeftUpTeeVector;":"\u2960","LeftUpVector;":"\u21bf","LeftUpVectorBar;":"\u2958","LeftVector;":"\u21bc","LeftVectorBar;":"\u2952","lEg;":"\u2a8b","leg;":"\u22da","leq;":"\u2264","leqq;":"\u2266","leqslant;":"\u2a7d","les;":"\u2a7d","lescc;":"\u2aa8","lesdot;":"\u2a7f","lesdoto;":"\u2a81","lesdotor;":"\u2a83","lesg;":"\u22da\ufe00","lesges;":"\u2a93","lessapprox;":"\u2a85","lessdot;":"\u22d6","lesseqgtr;":"\u22da","lesseqqgtr;":"\u2a8b","LessEqualGreater;":"\u22da","LessFullEqual;":"\u2266","LessGreater;":"\u2276","lessgtr;":"\u2276","LessLess;":"\u2aa1","lesssim;":"\u2272","LessSlantEqual;":"\u2a7d","LessTilde;":"\u2272","lfisht;":"\u297c","lfloor;":"\u230a","Lfr;":"\ud835\udd0f","lfr;":"\ud835\udd29","lg;":"\u2276","lgE;":"\u2a91","lHar;":"\u2962","lhard;":"\u21bd","lharu;":"\u21bc","lharul;":"\u296a","lhblk;":"\u2584","LJcy;":"\u0409","ljcy;":"\u0459","Ll;":"\u22d8","ll;":"\u226a","llarr;":"\u21c7","llcorner;":"\u231e","Lleftarrow;":"\u21da","llhard;":"\u296b","lltri;":"\u25fa","Lmidot;":"\u013f","lmidot;":"\u0140","lmoust;":"\u23b0","lmoustache;":"\u23b0","lnap;":"\u2a89","lnapprox;":"\u2a89","lnE;":"\u2268","lne;":"\u2a87","lneq;":"\u2a87","lneqq;":"\u2268","lnsim;":"\u22e6","loang;":"\u27ec","loarr;":"\u21fd","lobrk;":"\u27e6","LongLeftArrow;":"\u27f5","Longleftarrow;":"\u27f8","longleftarrow;":"\u27f5","LongLeftRightArrow;":"\u27f7","Longleftrightarrow;":"\u27fa","longleftrightarrow;":"\u27f7","longmapsto;":"\u27fc","LongRightArrow;":"\u27f6","Longrightarrow;":"\u27f9","longrightarrow;":"\u27f6","looparrowleft;":"\u21ab","looparrowright;":"\u21ac","lopar;":"\u2985","Lopf;":"\ud835\udd43","lopf;":"\ud835\udd5d","loplus;":"\u2a2d","lotimes;":"\u2a34","lowast;":"\u2217","lowbar;":"_","LowerLeftArrow;":"\u2199","LowerRightArrow;":"\u2198","loz;":"\u25ca","lozenge;":"\u25ca","lozf;":"\u29eb","lpar;":"(","lparlt;":"\u2993","lrarr;":"\u21c6","lrcorner;":"\u231f","lrhar;":"\u21cb","lrhard;":"\u296d","lrm;":"\u200e","lrtri;":"\u22bf","lsaquo;":"\u2039","Lscr;":"\u2112","lscr;":"\ud835\udcc1","Lsh;":"\u21b0","lsh;":"\u21b0","lsim;":"\u2272","lsime;":"\u2a8d","lsimg;":"\u2a8f","lsqb;":"[","lsquo;":"\u2018","lsquor;":"\u201a","Lstrok;":"\u0141","lstrok;":"\u0142","LT;":"<",LT:"<","Lt;":"\u226a","lt;":"<",lt:"<","ltcc;":"\u2aa6","ltcir;":"\u2a79","ltdot;":"\u22d6","lthree;":"\u22cb","ltimes;":"\u22c9","ltlarr;":"\u2976","ltquest;":"\u2a7b","ltri;":"\u25c3","ltrie;":"\u22b4","ltrif;":"\u25c2","ltrPar;":"\u2996","lurdshar;":"\u294a","luruhar;":"\u2966","lvertneqq;":"\u2268\ufe00","lvnE;":"\u2268\ufe00","macr;":"\xaf",macr:"\xaf","male;":"\u2642","malt;":"\u2720","maltese;":"\u2720","Map;":"\u2905","map;":"\u21a6","mapsto;":"\u21a6","mapstodown;":"\u21a7","mapstoleft;":"\u21a4","mapstoup;":"\u21a5","marker;":"\u25ae","mcomma;":"\u2a29","Mcy;":"\u041c","mcy;":"\u043c","mdash;":"\u2014","mDDot;":"\u223a","measuredangle;":"\u2221","MediumSpace;":"\u205f","Mellintrf;":"\u2133","Mfr;":"\ud835\udd10","mfr;":"\ud835\udd2a","mho;":"\u2127","micro;":"\xb5",micro:"\xb5","mid;":"\u2223","midast;":"*","midcir;":"\u2af0","middot;":"\xb7",middot:"\xb7","minus;":"\u2212","minusb;":"\u229f","minusd;":"\u2238","minusdu;":"\u2a2a","MinusPlus;":"\u2213","mlcp;":"\u2adb","mldr;":"\u2026","mnplus;":"\u2213","models;":"\u22a7","Mopf;":"\ud835\udd44","mopf;":"\ud835\udd5e","mp;":"\u2213","Mscr;":"\u2133","mscr;":"\ud835\udcc2","mstpos;":"\u223e","Mu;":"\u039c","mu;":"\u03bc","multimap;":"\u22b8","mumap;":"\u22b8","nabla;":"\u2207","Nacute;":"\u0143","nacute;":"\u0144","nang;":"\u2220\u20d2","nap;":"\u2249","napE;":"\u2a70\u0338","napid;":"\u224b\u0338","napos;":"\u0149","napprox;":"\u2249","natur;":"\u266e","natural;":"\u266e","naturals;":"\u2115","nbsp;":"\xa0",nbsp:"\xa0","nbump;":"\u224e\u0338","nbumpe;":"\u224f\u0338","ncap;":"\u2a43","Ncaron;":"\u0147","ncaron;":"\u0148","Ncedil;":"\u0145","ncedil;":"\u0146","ncong;":"\u2247","ncongdot;":"\u2a6d\u0338","ncup;":"\u2a42","Ncy;":"\u041d","ncy;":"\u043d","ndash;":"\u2013","ne;":"\u2260","nearhk;":"\u2924","neArr;":"\u21d7","nearr;":"\u2197","nearrow;":"\u2197","nedot;":"\u2250\u0338","NegativeMediumSpace;":"\u200b","NegativeThickSpace;":"\u200b","NegativeThinSpace;":"\u200b","NegativeVeryThinSpace;":"\u200b","nequiv;":"\u2262","nesear;":"\u2928","nesim;":"\u2242\u0338","NestedGreaterGreater;":"\u226b","NestedLessLess;":"\u226a","NewLine;":"\n","nexist;":"\u2204","nexists;":"\u2204","Nfr;":"\ud835\udd11","nfr;":"\ud835\udd2b","ngE;":"\u2267\u0338","nge;":"\u2271","ngeq;":"\u2271","ngeqq;":"\u2267\u0338","ngeqslant;":"\u2a7e\u0338","nges;":"\u2a7e\u0338","nGg;":"\u22d9\u0338","ngsim;":"\u2275","nGt;":"\u226b\u20d2","ngt;":"\u226f","ngtr;":"\u226f","nGtv;":"\u226b\u0338","nhArr;":"\u21ce","nharr;":"\u21ae","nhpar;":"\u2af2","ni;":"\u220b","nis;":"\u22fc","nisd;":"\u22fa","niv;":"\u220b","NJcy;":"\u040a","njcy;":"\u045a","nlArr;":"\u21cd","nlarr;":"\u219a","nldr;":"\u2025","nlE;":"\u2266\u0338","nle;":"\u2270","nLeftarrow;":"\u21cd","nleftarrow;":"\u219a","nLeftrightarrow;":"\u21ce","nleftrightarrow;":"\u21ae","nleq;":"\u2270","nleqq;":"\u2266\u0338","nleqslant;":"\u2a7d\u0338","nles;":"\u2a7d\u0338","nless;":"\u226e","nLl;":"\u22d8\u0338","nlsim;":"\u2274","nLt;":"\u226a\u20d2","nlt;":"\u226e","nltri;":"\u22ea","nltrie;":"\u22ec","nLtv;":"\u226a\u0338","nmid;":"\u2224","NoBreak;":"\u2060","NonBreakingSpace;":"\xa0","Nopf;":"\u2115","nopf;":"\ud835\udd5f","Not;":"\u2aec","not;":"\xac",not:"\xac","NotCongruent;":"\u2262","NotCupCap;":"\u226d","NotDoubleVerticalBar;":"\u2226","NotElement;":"\u2209","NotEqual;":"\u2260","NotEqualTilde;":"\u2242\u0338","NotExists;":"\u2204","NotGreater;":"\u226f","NotGreaterEqual;":"\u2271","NotGreaterFullEqual;":"\u2267\u0338","NotGreaterGreater;":"\u226b\u0338","NotGreaterLess;":"\u2279","NotGreaterSlantEqual;":"\u2a7e\u0338","NotGreaterTilde;":"\u2275","NotHumpDownHump;":"\u224e\u0338","NotHumpEqual;":"\u224f\u0338","notin;":"\u2209","notindot;":"\u22f5\u0338","notinE;":"\u22f9\u0338","notinva;":"\u2209","notinvb;":"\u22f7","notinvc;":"\u22f6","NotLeftTriangle;":"\u22ea","NotLeftTriangleBar;":"\u29cf\u0338","NotLeftTriangleEqual;":"\u22ec","NotLess;":"\u226e","NotLessEqual;":"\u2270","NotLessGreater;":"\u2278","NotLessLess;":"\u226a\u0338","NotLessSlantEqual;":"\u2a7d\u0338","NotLessTilde;":"\u2274","NotNestedGreaterGreater;":"\u2aa2\u0338","NotNestedLessLess;":"\u2aa1\u0338","notni;":"\u220c","notniva;":"\u220c","notnivb;":"\u22fe","notnivc;":"\u22fd","NotPrecedes;":"\u2280","NotPrecedesEqual;":"\u2aaf\u0338","NotPrecedesSlantEqual;":"\u22e0","NotReverseElement;":"\u220c","NotRightTriangle;":"\u22eb","NotRightTriangleBar;":"\u29d0\u0338","NotRightTriangleEqual;":"\u22ed","NotSquareSubset;":"\u228f\u0338","NotSquareSubsetEqual;":"\u22e2","NotSquareSuperset;":"\u2290\u0338","NotSquareSupersetEqual;":"\u22e3","NotSubset;":"\u2282\u20d2","NotSubsetEqual;":"\u2288","NotSucceeds;":"\u2281","NotSucceedsEqual;":"\u2ab0\u0338","NotSucceedsSlantEqual;":"\u22e1","NotSucceedsTilde;":"\u227f\u0338","NotSuperset;":"\u2283\u20d2","NotSupersetEqual;":"\u2289","NotTilde;":"\u2241","NotTildeEqual;":"\u2244","NotTildeFullEqual;":"\u2247","NotTildeTilde;":"\u2249","NotVerticalBar;":"\u2224","npar;":"\u2226","nparallel;":"\u2226","nparsl;":"\u2afd\u20e5","npart;":"\u2202\u0338","npolint;":"\u2a14","npr;":"\u2280","nprcue;":"\u22e0","npre;":"\u2aaf\u0338","nprec;":"\u2280","npreceq;":"\u2aaf\u0338","nrArr;":"\u21cf","nrarr;":"\u219b","nrarrc;":"\u2933\u0338","nrarrw;":"\u219d\u0338","nRightarrow;":"\u21cf","nrightarrow;":"\u219b","nrtri;":"\u22eb","nrtrie;":"\u22ed","nsc;":"\u2281","nsccue;":"\u22e1","nsce;":"\u2ab0\u0338","Nscr;":"\ud835\udca9","nscr;":"\ud835\udcc3","nshortmid;":"\u2224","nshortparallel;":"\u2226","nsim;":"\u2241","nsime;":"\u2244","nsimeq;":"\u2244","nsmid;":"\u2224","nspar;":"\u2226","nsqsube;":"\u22e2","nsqsupe;":"\u22e3","nsub;":"\u2284","nsubE;":"\u2ac5\u0338","nsube;":"\u2288","nsubset;":"\u2282\u20d2","nsubseteq;":"\u2288","nsubseteqq;":"\u2ac5\u0338","nsucc;":"\u2281","nsucceq;":"\u2ab0\u0338","nsup;":"\u2285","nsupE;":"\u2ac6\u0338","nsupe;":"\u2289","nsupset;":"\u2283\u20d2","nsupseteq;":"\u2289","nsupseteqq;":"\u2ac6\u0338","ntgl;":"\u2279","Ntilde;":"\xd1",Ntilde:"\xd1","ntilde;":"\xf1",ntilde:"\xf1","ntlg;":"\u2278","ntriangleleft;":"\u22ea","ntrianglelefteq;":"\u22ec","ntriangleright;":"\u22eb","ntrianglerighteq;":"\u22ed","Nu;":"\u039d","nu;":"\u03bd","num;":"#","numero;":"\u2116","numsp;":"\u2007","nvap;":"\u224d\u20d2","nVDash;":"\u22af","nVdash;":"\u22ae","nvDash;":"\u22ad","nvdash;":"\u22ac","nvge;":"\u2265\u20d2","nvgt;":">\u20d2","nvHarr;":"\u2904","nvinfin;":"\u29de","nvlArr;":"\u2902","nvle;":"\u2264\u20d2","nvlt;":"<\u20d2","nvltrie;":"\u22b4\u20d2","nvrArr;":"\u2903","nvrtrie;":"\u22b5\u20d2","nvsim;":"\u223c\u20d2","nwarhk;":"\u2923","nwArr;":"\u21d6","nwarr;":"\u2196","nwarrow;":"\u2196","nwnear;":"\u2927","Oacute;":"\xd3",Oacute:"\xd3","oacute;":"\xf3",oacute:"\xf3","oast;":"\u229b","ocir;":"\u229a","Ocirc;":"\xd4",Ocirc:"\xd4","ocirc;":"\xf4",ocirc:"\xf4","Ocy;":"\u041e","ocy;":"\u043e","odash;":"\u229d","Odblac;":"\u0150","odblac;":"\u0151","odiv;":"\u2a38","odot;":"\u2299","odsold;":"\u29bc","OElig;":"\u0152","oelig;":"\u0153","ofcir;":"\u29bf","Ofr;":"\ud835\udd12","ofr;":"\ud835\udd2c","ogon;":"\u02db","Ograve;":"\xd2",Ograve:"\xd2","ograve;":"\xf2",ograve:"\xf2","ogt;":"\u29c1","ohbar;":"\u29b5","ohm;":"\u03a9","oint;":"\u222e","olarr;":"\u21ba","olcir;":"\u29be","olcross;":"\u29bb","oline;":"\u203e","olt;":"\u29c0","Omacr;":"\u014c","omacr;":"\u014d","Omega;":"\u03a9","omega;":"\u03c9","Omicron;":"\u039f","omicron;":"\u03bf","omid;":"\u29b6","ominus;":"\u2296","Oopf;":"\ud835\udd46","oopf;":"\ud835\udd60","opar;":"\u29b7","OpenCurlyDoubleQuote;":"\u201c","OpenCurlyQuote;":"\u2018","operp;":"\u29b9","oplus;":"\u2295","Or;":"\u2a54","or;":"\u2228","orarr;":"\u21bb","ord;":"\u2a5d","order;":"\u2134","orderof;":"\u2134","ordf;":"\xaa",ordf:"\xaa","ordm;":"\xba",ordm:"\xba","origof;":"\u22b6","oror;":"\u2a56","orslope;":"\u2a57","orv;":"\u2a5b","oS;":"\u24c8","Oscr;":"\ud835\udcaa","oscr;":"\u2134","Oslash;":"\xd8",Oslash:"\xd8","oslash;":"\xf8",oslash:"\xf8","osol;":"\u2298","Otilde;":"\xd5",Otilde:"\xd5","otilde;":"\xf5",otilde:"\xf5","Otimes;":"\u2a37","otimes;":"\u2297","otimesas;":"\u2a36","Ouml;":"\xd6",Ouml:"\xd6","ouml;":"\xf6",ouml:"\xf6","ovbar;":"\u233d","OverBar;":"\u203e","OverBrace;":"\u23de","OverBracket;":"\u23b4","OverParenthesis;":"\u23dc","par;":"\u2225","para;":"\xb6",para:"\xb6","parallel;":"\u2225","parsim;":"\u2af3","parsl;":"\u2afd","part;":"\u2202","PartialD;":"\u2202","Pcy;":"\u041f","pcy;":"\u043f","percnt;":"%","period;":".","permil;":"\u2030","perp;":"\u22a5","pertenk;":"\u2031","Pfr;":"\ud835\udd13","pfr;":"\ud835\udd2d","Phi;":"\u03a6","phi;":"\u03c6","phiv;":"\u03d5","phmmat;":"\u2133","phone;":"\u260e","Pi;":"\u03a0","pi;":"\u03c0","pitchfork;":"\u22d4","piv;":"\u03d6","planck;":"\u210f","planckh;":"\u210e","plankv;":"\u210f","plus;":"+","plusacir;":"\u2a23","plusb;":"\u229e","pluscir;":"\u2a22","plusdo;":"\u2214","plusdu;":"\u2a25","pluse;":"\u2a72","PlusMinus;":"\xb1","plusmn;":"\xb1",plusmn:"\xb1","plussim;":"\u2a26","plustwo;":"\u2a27","pm;":"\xb1","Poincareplane;":"\u210c","pointint;":"\u2a15","Popf;":"\u2119","popf;":"\ud835\udd61","pound;":"\xa3",pound:"\xa3","Pr;":"\u2abb","pr;":"\u227a","prap;":"\u2ab7","prcue;":"\u227c","prE;":"\u2ab3","pre;":"\u2aaf","prec;":"\u227a","precapprox;":"\u2ab7","preccurlyeq;":"\u227c","Precedes;":"\u227a","PrecedesEqual;":"\u2aaf","PrecedesSlantEqual;":"\u227c","PrecedesTilde;":"\u227e","preceq;":"\u2aaf","precnapprox;":"\u2ab9","precneqq;":"\u2ab5","precnsim;":"\u22e8","precsim;":"\u227e","Prime;":"\u2033","prime;":"\u2032","primes;":"\u2119","prnap;":"\u2ab9","prnE;":"\u2ab5","prnsim;":"\u22e8","prod;":"\u220f","Product;":"\u220f","profalar;":"\u232e","profline;":"\u2312","profsurf;":"\u2313","prop;":"\u221d","Proportion;":"\u2237","Proportional;":"\u221d","propto;":"\u221d","prsim;":"\u227e","prurel;":"\u22b0","Pscr;":"\ud835\udcab","pscr;":"\ud835\udcc5","Psi;":"\u03a8","psi;":"\u03c8","puncsp;":"\u2008","Qfr;":"\ud835\udd14","qfr;":"\ud835\udd2e","qint;":"\u2a0c","Qopf;":"\u211a","qopf;":"\ud835\udd62","qprime;":"\u2057","Qscr;":"\ud835\udcac","qscr;":"\ud835\udcc6","quaternions;":"\u210d","quatint;":"\u2a16","quest;":"?","questeq;":"\u225f","QUOT;":'"',QUOT:'"',"quot;":'"',quot:'"',"rAarr;":"\u21db","race;":"\u223d\u0331","Racute;":"\u0154","racute;":"\u0155","radic;":"\u221a","raemptyv;":"\u29b3","Rang;":"\u27eb","rang;":"\u27e9","rangd;":"\u2992","range;":"\u29a5","rangle;":"\u27e9","raquo;":"\xbb",raquo:"\xbb","Rarr;":"\u21a0","rArr;":"\u21d2","rarr;":"\u2192","rarrap;":"\u2975","rarrb;":"\u21e5","rarrbfs;":"\u2920","rarrc;":"\u2933","rarrfs;":"\u291e","rarrhk;":"\u21aa","rarrlp;":"\u21ac","rarrpl;":"\u2945","rarrsim;":"\u2974","Rarrtl;":"\u2916","rarrtl;":"\u21a3","rarrw;":"\u219d","rAtail;":"\u291c","ratail;":"\u291a","ratio;":"\u2236","rationals;":"\u211a","RBarr;":"\u2910","rBarr;":"\u290f","rbarr;":"\u290d","rbbrk;":"\u2773","rbrace;":"}","rbrack;":"]","rbrke;":"\u298c","rbrksld;":"\u298e","rbrkslu;":"\u2990","Rcaron;":"\u0158","rcaron;":"\u0159","Rcedil;":"\u0156","rcedil;":"\u0157","rceil;":"\u2309","rcub;":"}","Rcy;":"\u0420","rcy;":"\u0440","rdca;":"\u2937","rdldhar;":"\u2969","rdquo;":"\u201d","rdquor;":"\u201d","rdsh;":"\u21b3","Re;":"\u211c","real;":"\u211c","realine;":"\u211b","realpart;":"\u211c","reals;":"\u211d","rect;":"\u25ad","REG;":"\xae",REG:"\xae","reg;":"\xae",reg:"\xae","ReverseElement;":"\u220b","ReverseEquilibrium;":"\u21cb","ReverseUpEquilibrium;":"\u296f","rfisht;":"\u297d","rfloor;":"\u230b","Rfr;":"\u211c","rfr;":"\ud835\udd2f","rHar;":"\u2964","rhard;":"\u21c1","rharu;":"\u21c0","rharul;":"\u296c","Rho;":"\u03a1","rho;":"\u03c1","rhov;":"\u03f1","RightAngleBracket;":"\u27e9","RightArrow;":"\u2192","Rightarrow;":"\u21d2","rightarrow;":"\u2192","RightArrowBar;":"\u21e5","RightArrowLeftArrow;":"\u21c4","rightarrowtail;":"\u21a3","RightCeiling;":"\u2309","RightDoubleBracket;":"\u27e7","RightDownTeeVector;":"\u295d","RightDownVector;":"\u21c2","RightDownVectorBar;":"\u2955","RightFloor;":"\u230b","rightharpoondown;":"\u21c1","rightharpoonup;":"\u21c0","rightleftarrows;":"\u21c4","rightleftharpoons;":"\u21cc","rightrightarrows;":"\u21c9","rightsquigarrow;":"\u219d","RightTee;":"\u22a2","RightTeeArrow;":"\u21a6","RightTeeVector;":"\u295b","rightthreetimes;":"\u22cc","RightTriangle;":"\u22b3","RightTriangleBar;":"\u29d0","RightTriangleEqual;":"\u22b5","RightUpDownVector;":"\u294f","RightUpTeeVector;":"\u295c","RightUpVector;":"\u21be","RightUpVectorBar;":"\u2954","RightVector;":"\u21c0","RightVectorBar;":"\u2953","ring;":"\u02da","risingdotseq;":"\u2253","rlarr;":"\u21c4","rlhar;":"\u21cc","rlm;":"\u200f","rmoust;":"\u23b1","rmoustache;":"\u23b1","rnmid;":"\u2aee","roang;":"\u27ed","roarr;":"\u21fe","robrk;":"\u27e7","ropar;":"\u2986","Ropf;":"\u211d","ropf;":"\ud835\udd63","roplus;":"\u2a2e","rotimes;":"\u2a35","RoundImplies;":"\u2970","rpar;":")","rpargt;":"\u2994","rppolint;":"\u2a12","rrarr;":"\u21c9","Rrightarrow;":"\u21db","rsaquo;":"\u203a","Rscr;":"\u211b","rscr;":"\ud835\udcc7","Rsh;":"\u21b1","rsh;":"\u21b1","rsqb;":"]","rsquo;":"\u2019","rsquor;":"\u2019","rthree;":"\u22cc","rtimes;":"\u22ca","rtri;":"\u25b9","rtrie;":"\u22b5","rtrif;":"\u25b8","rtriltri;":"\u29ce","RuleDelayed;":"\u29f4","ruluhar;":"\u2968","rx;":"\u211e","Sacute;":"\u015a","sacute;":"\u015b","sbquo;":"\u201a","Sc;":"\u2abc","sc;":"\u227b","scap;":"\u2ab8","Scaron;":"\u0160","scaron;":"\u0161","sccue;":"\u227d","scE;":"\u2ab4","sce;":"\u2ab0","Scedil;":"\u015e","scedil;":"\u015f","Scirc;":"\u015c","scirc;":"\u015d","scnap;":"\u2aba","scnE;":"\u2ab6","scnsim;":"\u22e9","scpolint;":"\u2a13","scsim;":"\u227f","Scy;":"\u0421","scy;":"\u0441","sdot;":"\u22c5","sdotb;":"\u22a1","sdote;":"\u2a66","searhk;":"\u2925","seArr;":"\u21d8","searr;":"\u2198","searrow;":"\u2198","sect;":"\xa7",sect:"\xa7","semi;":";","seswar;":"\u2929","setminus;":"\u2216","setmn;":"\u2216","sext;":"\u2736","Sfr;":"\ud835\udd16","sfr;":"\ud835\udd30","sfrown;":"\u2322","sharp;":"\u266f","SHCHcy;":"\u0429","shchcy;":"\u0449","SHcy;":"\u0428","shcy;":"\u0448","ShortDownArrow;":"\u2193","ShortLeftArrow;":"\u2190","shortmid;":"\u2223","shortparallel;":"\u2225","ShortRightArrow;":"\u2192","ShortUpArrow;":"\u2191","shy;":"\xad",shy:"\xad","Sigma;":"\u03a3","sigma;":"\u03c3","sigmaf;":"\u03c2","sigmav;":"\u03c2","sim;":"\u223c","simdot;":"\u2a6a","sime;":"\u2243","simeq;":"\u2243","simg;":"\u2a9e","simgE;":"\u2aa0","siml;":"\u2a9d","simlE;":"\u2a9f","simne;":"\u2246","simplus;":"\u2a24","simrarr;":"\u2972","slarr;":"\u2190","SmallCircle;":"\u2218","smallsetminus;":"\u2216","smashp;":"\u2a33","smeparsl;":"\u29e4","smid;":"\u2223","smile;":"\u2323","smt;":"\u2aaa","smte;":"\u2aac","smtes;":"\u2aac\ufe00","SOFTcy;":"\u042c","softcy;":"\u044c","sol;":"/","solb;":"\u29c4","solbar;":"\u233f","Sopf;":"\ud835\udd4a","sopf;":"\ud835\udd64","spades;":"\u2660","spadesuit;":"\u2660","spar;":"\u2225","sqcap;":"\u2293","sqcaps;":"\u2293\ufe00","sqcup;":"\u2294","sqcups;":"\u2294\ufe00","Sqrt;":"\u221a","sqsub;":"\u228f","sqsube;":"\u2291","sqsubset;":"\u228f","sqsubseteq;":"\u2291","sqsup;":"\u2290","sqsupe;":"\u2292","sqsupset;":"\u2290","sqsupseteq;":"\u2292","squ;":"\u25a1","Square;":"\u25a1","square;":"\u25a1","SquareIntersection;":"\u2293","SquareSubset;":"\u228f","SquareSubsetEqual;":"\u2291","SquareSuperset;":"\u2290","SquareSupersetEqual;":"\u2292","SquareUnion;":"\u2294","squarf;":"\u25aa","squf;":"\u25aa","srarr;":"\u2192","Sscr;":"\ud835\udcae","sscr;":"\ud835\udcc8","ssetmn;":"\u2216","ssmile;":"\u2323","sstarf;":"\u22c6","Star;":"\u22c6","star;":"\u2606","starf;":"\u2605","straightepsilon;":"\u03f5","straightphi;":"\u03d5","strns;":"\xaf","Sub;":"\u22d0","sub;":"\u2282","subdot;":"\u2abd","subE;":"\u2ac5","sube;":"\u2286","subedot;":"\u2ac3","submult;":"\u2ac1","subnE;":"\u2acb","subne;":"\u228a","subplus;":"\u2abf","subrarr;":"\u2979","Subset;":"\u22d0","subset;":"\u2282","subseteq;":"\u2286","subseteqq;":"\u2ac5","SubsetEqual;":"\u2286","subsetneq;":"\u228a","subsetneqq;":"\u2acb","subsim;":"\u2ac7","subsub;":"\u2ad5","subsup;":"\u2ad3","succ;":"\u227b","succapprox;":"\u2ab8","succcurlyeq;":"\u227d","Succeeds;":"\u227b","SucceedsEqual;":"\u2ab0","SucceedsSlantEqual;":"\u227d","SucceedsTilde;":"\u227f","succeq;":"\u2ab0","succnapprox;":"\u2aba","succneqq;":"\u2ab6","succnsim;":"\u22e9","succsim;":"\u227f","SuchThat;":"\u220b","Sum;":"\u2211","sum;":"\u2211","sung;":"\u266a","Sup;":"\u22d1","sup;":"\u2283","sup1;":"\xb9",sup1:"\xb9","sup2;":"\xb2",sup2:"\xb2","sup3;":"\xb3",sup3:"\xb3","supdot;":"\u2abe","supdsub;":"\u2ad8","supE;":"\u2ac6","supe;":"\u2287","supedot;":"\u2ac4","Superset;":"\u2283","SupersetEqual;":"\u2287","suphsol;":"\u27c9","suphsub;":"\u2ad7","suplarr;":"\u297b","supmult;":"\u2ac2","supnE;":"\u2acc","supne;":"\u228b","supplus;":"\u2ac0","Supset;":"\u22d1","supset;":"\u2283","supseteq;":"\u2287","supseteqq;":"\u2ac6","supsetneq;":"\u228b","supsetneqq;":"\u2acc","supsim;":"\u2ac8","supsub;":"\u2ad4","supsup;":"\u2ad6","swarhk;":"\u2926","swArr;":"\u21d9","swarr;":"\u2199","swarrow;":"\u2199","swnwar;":"\u292a","szlig;":"\xdf",szlig:"\xdf","Tab;":"\t","target;":"\u2316","Tau;":"\u03a4","tau;":"\u03c4","tbrk;":"\u23b4","Tcaron;":"\u0164","tcaron;":"\u0165","Tcedil;":"\u0162","tcedil;":"\u0163","Tcy;":"\u0422","tcy;":"\u0442","tdot;":"\u20db","telrec;":"\u2315","Tfr;":"\ud835\udd17","tfr;":"\ud835\udd31","there4;":"\u2234","Therefore;":"\u2234","therefore;":"\u2234","Theta;":"\u0398","theta;":"\u03b8","thetasym;":"\u03d1","thetav;":"\u03d1","thickapprox;":"\u2248","thicksim;":"\u223c","ThickSpace;":"\u205f\u200a","thinsp;":"\u2009","ThinSpace;":"\u2009","thkap;":"\u2248","thksim;":"\u223c","THORN;":"\xde",THORN:"\xde","thorn;":"\xfe",thorn:"\xfe","Tilde;":"\u223c","tilde;":"\u02dc","TildeEqual;":"\u2243","TildeFullEqual;":"\u2245","TildeTilde;":"\u2248","times;":"\xd7",times:"\xd7","timesb;":"\u22a0","timesbar;":"\u2a31","timesd;":"\u2a30","tint;":"\u222d","toea;":"\u2928","top;":"\u22a4","topbot;":"\u2336","topcir;":"\u2af1","Topf;":"\ud835\udd4b","topf;":"\ud835\udd65","topfork;":"\u2ada","tosa;":"\u2929","tprime;":"\u2034","TRADE;":"\u2122","trade;":"\u2122","triangle;":"\u25b5","triangledown;":"\u25bf","triangleleft;":"\u25c3","trianglelefteq;":"\u22b4","triangleq;":"\u225c","triangleright;":"\u25b9","trianglerighteq;":"\u22b5","tridot;":"\u25ec","trie;":"\u225c","triminus;":"\u2a3a","TripleDot;":"\u20db","triplus;":"\u2a39","trisb;":"\u29cd","tritime;":"\u2a3b","trpezium;":"\u23e2","Tscr;":"\ud835\udcaf","tscr;":"\ud835\udcc9","TScy;":"\u0426","tscy;":"\u0446","TSHcy;":"\u040b","tshcy;":"\u045b","Tstrok;":"\u0166","tstrok;":"\u0167","twixt;":"\u226c","twoheadleftarrow;":"\u219e","twoheadrightarrow;":"\u21a0","Uacute;":"\xda",Uacute:"\xda","uacute;":"\xfa",uacute:"\xfa","Uarr;":"\u219f","uArr;":"\u21d1","uarr;":"\u2191","Uarrocir;":"\u2949","Ubrcy;":"\u040e","ubrcy;":"\u045e","Ubreve;":"\u016c","ubreve;":"\u016d","Ucirc;":"\xdb",Ucirc:"\xdb","ucirc;":"\xfb",ucirc:"\xfb","Ucy;":"\u0423","ucy;":"\u0443","udarr;":"\u21c5","Udblac;":"\u0170","udblac;":"\u0171","udhar;":"\u296e","ufisht;":"\u297e","Ufr;":"\ud835\udd18","ufr;":"\ud835\udd32","Ugrave;":"\xd9",Ugrave:"\xd9","ugrave;":"\xf9",ugrave:"\xf9","uHar;":"\u2963","uharl;":"\u21bf","uharr;":"\u21be","uhblk;":"\u2580","ulcorn;":"\u231c","ulcorner;":"\u231c","ulcrop;":"\u230f","ultri;":"\u25f8","Umacr;":"\u016a","umacr;":"\u016b","uml;":"\xa8",uml:"\xa8","UnderBar;":"_","UnderBrace;":"\u23df","UnderBracket;":"\u23b5","UnderParenthesis;":"\u23dd","Union;":"\u22c3","UnionPlus;":"\u228e","Uogon;":"\u0172","uogon;":"\u0173","Uopf;":"\ud835\udd4c","uopf;":"\ud835\udd66","UpArrow;":"\u2191","Uparrow;":"\u21d1","uparrow;":"\u2191","UpArrowBar;":"\u2912","UpArrowDownArrow;":"\u21c5","UpDownArrow;":"\u2195","Updownarrow;":"\u21d5","updownarrow;":"\u2195","UpEquilibrium;":"\u296e","upharpoonleft;":"\u21bf","upharpoonright;":"\u21be","uplus;":"\u228e","UpperLeftArrow;":"\u2196","UpperRightArrow;":"\u2197","Upsi;":"\u03d2","upsi;":"\u03c5","upsih;":"\u03d2","Upsilon;":"\u03a5","upsilon;":"\u03c5","UpTee;":"\u22a5","UpTeeArrow;":"\u21a5","upuparrows;":"\u21c8","urcorn;":"\u231d","urcorner;":"\u231d","urcrop;":"\u230e","Uring;":"\u016e","uring;":"\u016f","urtri;":"\u25f9","Uscr;":"\ud835\udcb0","uscr;":"\ud835\udcca","utdot;":"\u22f0","Utilde;":"\u0168","utilde;":"\u0169","utri;":"\u25b5","utrif;":"\u25b4","uuarr;":"\u21c8","Uuml;":"\xdc",Uuml:"\xdc","uuml;":"\xfc",uuml:"\xfc","uwangle;":"\u29a7","vangrt;":"\u299c","varepsilon;":"\u03f5","varkappa;":"\u03f0","varnothing;":"\u2205","varphi;":"\u03d5","varpi;":"\u03d6","varpropto;":"\u221d","vArr;":"\u21d5","varr;":"\u2195","varrho;":"\u03f1","varsigma;":"\u03c2","varsubsetneq;":"\u228a\ufe00","varsubsetneqq;":"\u2acb\ufe00","varsupsetneq;":"\u228b\ufe00","varsupsetneqq;":"\u2acc\ufe00","vartheta;":"\u03d1","vartriangleleft;":"\u22b2","vartriangleright;":"\u22b3","Vbar;":"\u2aeb","vBar;":"\u2ae8","vBarv;":"\u2ae9","Vcy;":"\u0412","vcy;":"\u0432","VDash;":"\u22ab","Vdash;":"\u22a9","vDash;":"\u22a8","vdash;":"\u22a2","Vdashl;":"\u2ae6","Vee;":"\u22c1","vee;":"\u2228","veebar;":"\u22bb","veeeq;":"\u225a","vellip;":"\u22ee","Verbar;":"\u2016","verbar;":"|","Vert;":"\u2016","vert;":"|","VerticalBar;":"\u2223","VerticalLine;":"|","VerticalSeparator;":"\u2758","VerticalTilde;":"\u2240","VeryThinSpace;":"\u200a","Vfr;":"\ud835\udd19","vfr;":"\ud835\udd33","vltri;":"\u22b2","vnsub;":"\u2282\u20d2","vnsup;":"\u2283\u20d2","Vopf;":"\ud835\udd4d","vopf;":"\ud835\udd67","vprop;":"\u221d","vrtri;":"\u22b3","Vscr;":"\ud835\udcb1","vscr;":"\ud835\udccb","vsubnE;":"\u2acb\ufe00","vsubne;":"\u228a\ufe00","vsupnE;":"\u2acc\ufe00","vsupne;":"\u228b\ufe00","Vvdash;":"\u22aa","vzigzag;":"\u299a","Wcirc;":"\u0174","wcirc;":"\u0175","wedbar;":"\u2a5f","Wedge;":"\u22c0","wedge;":"\u2227","wedgeq;":"\u2259","weierp;":"\u2118","Wfr;":"\ud835\udd1a","wfr;":"\ud835\udd34","Wopf;":"\ud835\udd4e","wopf;":"\ud835\udd68","wp;":"\u2118","wr;":"\u2240","wreath;":"\u2240","Wscr;":"\ud835\udcb2","wscr;":"\ud835\udccc","xcap;":"\u22c2","xcirc;":"\u25ef","xcup;":"\u22c3","xdtri;":"\u25bd","Xfr;":"\ud835\udd1b","xfr;":"\ud835\udd35","xhArr;":"\u27fa","xharr;":"\u27f7","Xi;":"\u039e","xi;":"\u03be","xlArr;":"\u27f8","xlarr;":"\u27f5","xmap;":"\u27fc","xnis;":"\u22fb","xodot;":"\u2a00","Xopf;":"\ud835\udd4f","xopf;":"\ud835\udd69","xoplus;":"\u2a01","xotime;":"\u2a02","xrArr;":"\u27f9","xrarr;":"\u27f6","Xscr;":"\ud835\udcb3","xscr;":"\ud835\udccd","xsqcup;":"\u2a06","xuplus;":"\u2a04","xutri;":"\u25b3","xvee;":"\u22c1","xwedge;":"\u22c0","Yacute;":"\xdd",Yacute:"\xdd","yacute;":"\xfd",yacute:"\xfd","YAcy;":"\u042f","yacy;":"\u044f","Ycirc;":"\u0176","ycirc;":"\u0177","Ycy;":"\u042b","ycy;":"\u044b","yen;":"\xa5",yen:"\xa5","Yfr;":"\ud835\udd1c","yfr;":"\ud835\udd36","YIcy;":"\u0407","yicy;":"\u0457","Yopf;":"\ud835\udd50","yopf;":"\ud835\udd6a","Yscr;":"\ud835\udcb4","yscr;":"\ud835\udcce","YUcy;":"\u042e","yucy;":"\u044e","Yuml;":"\u0178","yuml;":"\xff",yuml:"\xff","Zacute;":"\u0179","zacute;":"\u017a","Zcaron;":"\u017d","zcaron;":"\u017e","Zcy;":"\u0417","zcy;":"\u0437","Zdot;":"\u017b","zdot;":"\u017c","zeetrf;":"\u2128","ZeroWidthSpace;":"\u200b","Zeta;":"\u0396","zeta;":"\u03b6","Zfr;":"\u2128","zfr;":"\ud835\udd37","ZHcy;":"\u0416","zhcy;":"\u0436","zigrarr;":"\u21dd","Zopf;":"\u2124","zopf;":"\ud835\udd6b","Zscr;":"\ud835\udcb5","zscr;":"\ud835\udccf","zwj;":"\u200d","zwnj;":"\u200c"};function Fe(e,t){if(e.length0?e.lastIndexOf(t)===n:0===n&&e===t}var Ge="a".charCodeAt(0),Ve="z".charCodeAt(0),Ke="A".charCodeAt(0),Je="Z".charCodeAt(0),Xe="0".charCodeAt(0),Ye="9".charCodeAt(0);function $e(e,t){var n=e.charCodeAt(t);return Ge<=n&&n<=Ve||Ke<=n&&n<=Je||Xe<=n&&n<=Ye}var Ze=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"];function Qe(e){return!!e&&function(e,t,n){for(var i=0,r=e.length-1;i<=r;){var a=(i+r)/2|0,o=n(e[a],t);if(o<0)i=a+1;else{if(!(o>0))return a;r=a-1}}return-(i+1)}(Ze,e.toLowerCase(),(function(e,t){return e.localeCompare(t)}))>=0}function et(e){return"undefined"!==typeof e}var tt=function(){function e(e,t){var n=this;this.id=e,this._tags=[],this._tagMap={},this._valueSetMap={},this._tags=t.tags||[],this._globalAttributes=t.globalAttributes||[],this._tags.forEach((function(e){n._tagMap[e.name.toLowerCase()]=e})),t.valueSets&&t.valueSets.forEach((function(e){n._valueSetMap[e.name]=e.values}))}return e.prototype.isApplicable=function(){return!0},e.prototype.getId=function(){return this.id},e.prototype.provideTags=function(){return this._tags},e.prototype.provideAttributes=function(e){var t=[],n=function(e){t.push(e)},i=this._tagMap[e.toLowerCase()];return i&&i.attributes.forEach(n),this._globalAttributes.forEach(n),t},e.prototype.provideValues=function(e,t){var n=this,i=[];t=t.toLowerCase();var r=function(e){e.forEach((function(e){e.name.toLowerCase()===t&&(e.values&&e.values.forEach((function(e){i.push(e)})),e.valueSet&&n._valueSetMap[e.valueSet]&&n._valueSetMap[e.valueSet].forEach((function(e){i.push(e)})))}))},a=this._tagMap[e.toLowerCase()];return a?(r(a.attributes),r(this._globalAttributes),i):[]},e}();function nt(e,t,n){void 0===t&&(t={});var i={kind:n?"markdown":"plaintext",value:""};if(e.description&&!1!==t.documentation){var r=function(e){if(e)return"string"===typeof e?{kind:"markdown",value:e}:{kind:"markdown",value:e.value}}(e.description);r&&(i.value+=r.value)}if(e.references&&e.references.length>0&&!1!==t.references&&(i.value.length&&(i.value+="\n\n"),i.value+=n?e.references.map((function(e){return"["+e.name+"]("+e.url+")"})).join(" | "):e.references.map((function(e){return e.name+": "+e.url})).join("\n")),""!==i.value)return i}var it=function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{l(i.next(e))}catch(t){a(t)}}function s(e){try{l(i.throw(e))}catch(t){a(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))},rt=function(e,t){var n,i,r,a,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"===typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,i&&(r=2&a[0]?i.return:a[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,a[1])).done)return r;switch(i=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,i=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(r=(r=o.trys).length>0&&r[r.length-1])&&(6===a[0]||2===a[0])){o=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]0&&r[r.length-1])&&(6===a[0]||2===a[0])){o=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]d&&(t=d),{start:e.positionAt(t),end:e.positionAt(n)}}function b(e,t){var n=g(e,t);return l.forEach((function(e){e.provideTags().forEach((function(e){r.items.push({label:e.name,kind:O.Property,documentation:nt(e,void 0,c),textEdit:v.replace(n,e.name),insertTextFormat:N.PlainText})}))})),r}function _(e){for(var t=e;t>0;){var n=h.charAt(t-1);if("\n\r".indexOf(n)>=0)return h.substring(t,e);if(!pt(n))return null;t--}return h.substring(0,e)}function w(e,t,n){void 0===n&&(n=d);var i=g(e,n),a=mt(h,n,ge.WithinEndTag,fe.EndTagClose)?"":">",o=u;for(t&&(o=o.parent);o;){var s=o.tag;if(s&&(!o.closed||o.endTagStart&&o.endTagStart>d)){var p={label:"/"+s,kind:O.Property,filterText:"/"+s,textEdit:v.replace(i,"/"+s+a),insertTextFormat:N.PlainText},m=_(o.start),f=_(e-1);if(null!==m&&null!==f&&m!==f){var b=m+"",kind:O.Property,filterText:"",textEdit:v.insert(a,"$0"),insertTextFormat:N.Snippet})}return r}function T(e,t){return b(e,t),w(e,!0,t),r}function k(e,t){void 0===t&&(t=d);for(var i=d;in&&d<=i&&(m=h[n],/^["']*$/.test(m))){var b=n+1,_=i;i>n&&h[i-1]===h[n]&&_--;var w=function(e,t,n){for(;t>n&&!pt(e[t-1]);)t--;return t}(h,d,b),y=function(e,t,n){for(;t=b&&d<=_?h.substring(b,d):"",o=!1}else a=g(n,i),u=h.substring(n,d),o=!0;if(s.length>0)for(var T=f.toLowerCase(),k=p.toLowerCase(),S=g(n,i),x=0,M=s;x=0&&$e(h,e);)e--,n--;if(e>=0&&"&"===h[e]){var i=o.create(a.create(t.line,n-1),t);for(var s in je)if(Be(s,";")){var l="&"+s;r.items.push({label:l,kind:O.Keyword,documentation:ut("entity.propose","Character entity representing '"+je[s]+"'"),textEdit:v.replace(i,l),insertTextFormat:N.PlainText})}}return r}function E(e,t){var n=g(e,t);r.items.push({label:"!DOCTYPE",kind:O.Property,documentation:"A preamble for an HTML document.",textEdit:v.replace(n,"!DOCTYPE html>"),insertTextFormat:N.PlainText})}for(var A=m.scan();A!==fe.EOS&&m.getTokenOffset()<=d;){switch(A){case fe.StartTagOpen:if(m.getTokenEnd()===d){var R=x(fe.StartTag);return 0===t.line&&E(d,R),T(d,R)}break;case fe.StartTag:if(m.getTokenOffset()<=d&&d<=m.getTokenEnd())return b(m.getTokenOffset(),m.getTokenEnd());f=m.getTokenText();break;case fe.AttributeName:if(m.getTokenOffset()<=d&&d<=m.getTokenEnd())return k(m.getTokenOffset(),m.getTokenEnd());p=m.getTokenText();break;case fe.DelimiterAssign:if(m.getTokenEnd()===d){R=x(fe.AttributeValue);return S(d,R)}break;case fe.AttributeValue:if(m.getTokenOffset()<=d&&d<=m.getTokenEnd())return S(m.getTokenOffset(),m.getTokenEnd());break;case fe.Whitespace:if(d<=m.getTokenEnd())switch(m.getScannerState()){case ge.AfterOpeningStartTag:return T(m.getTokenOffset(),x(fe.StartTag));case ge.WithinTag:case ge.AfterAttributeName:return k(m.getTokenEnd());case ge.BeforeAttributeValue:return S(m.getTokenEnd());case ge.AfterOpeningEndTag:return w(m.getTokenOffset()-1,!1);case ge.WithinContent:return M()}break;case fe.EndTagOpen:if(d<=m.getTokenEnd())return w(m.getTokenOffset()+1,!1,x(fe.EndTag));break;case fe.EndTag:if(d<=m.getTokenEnd())for(var z=m.getTokenOffset()-1;z>=0;){var I=h.charAt(z);if("/"===I)return w(z,!1,m.getTokenEnd());if(!pt(I))break;z--}break;case fe.StartTagClose:if(d<=m.getTokenEnd()&&f)return y(m.getTokenEnd(),f);break;case fe.Content:if(d<=m.getTokenEnd())return M();break;default:if(d<=m.getTokenEnd())return r}A=m.scan()}return r},e.prototype.doTagComplete=function(e,t,n){var i=e.offsetAt(t);if(i<=0)return null;var r=e.getText().charAt(i-1);if(">"===r){if((o=n.findNodeBefore(i))&&o.tag&&!Qe(o.tag)&&o.starti))for(var a=(s=Ne(e.getText(),o.start)).scan();a!==fe.EOS&&s.getTokenEnd()<=i;){if(a===fe.StartTagClose&&s.getTokenEnd()===i)return"$0";a=s.scan()}}else if("/"===r){for(var o=n.findNodeBefore(i);o&&o.closed;)o=o.parent;if(o&&o.tag){var s;for(a=(s=Ne(e.getText(),o.start)).scan();a!==fe.EOS&&s.getTokenEnd()<=i;){if(a===fe.EndTagOpen&&s.getTokenEnd()===i)return o.tag+">";a=s.scan()}}}return null},e.prototype.convertCompletionList=function(e){return this.doesSupportMarkdown()||e.items.forEach((function(e){e.documentation&&"string"!==typeof e.documentation&&(e.documentation={kind:"plaintext",value:e.documentation.value})})),e},e.prototype.doesSupportMarkdown=function(){var e,t,n;if(!et(this.supportsMarkdown)){if(!et(this.lsOptions.clientCapabilities))return this.supportsMarkdown=!0,this.supportsMarkdown;var i=null===(n=null===(t=null===(e=this.lsOptions.clientCapabilities.textDocument)||void 0===e?void 0:e.completion)||void 0===t?void 0:t.completionItem)||void 0===n?void 0:n.documentationFormat;this.supportsMarkdown=Array.isArray(i)&&-1!==i.indexOf(D.Markdown)}return this.supportsMarkdown}}();function pt(e){return/^\s*$/.test(e)}function mt(e,t,n,i){for(var r=Ne(e,t,n),a=r.scan();a===fe.Whitespace;)a=r.scan();return a===i}var ft=I();!function(){function e(e,t){this.lsOptions=e,this.dataManager=t}e.prototype.doHover=function(e,t,n,i){var r=this.convertContents.bind(this),s=this.doesSupportMarkdown(),l=e.offsetAt(t),c=n.findNodeAt(l),h=e.getText();if(!c||!c.tag)return null;var d=this.dataManager.getDataProviders().filter((function(t){return t.isApplicable(e.languageId)}));function u(e,t,n){for(var a=function(n){var a=null;if(n.provideTags().forEach((function(n){if(n.name.toLowerCase()===e.toLowerCase()){var r=nt(n,i,s);r||(r={kind:s?"markdown":"plaintext",value:""}),a={contents:r,range:t}}})),a)return a.contents=r(a.contents),{value:a}},o=0,l=d;o=c.endTagStart){var m=p(fe.EndTag,c.endTagStart);return m?u(c.tag,m):null}var f=p(fe.StartTag,c.start);if(f)return u(c.tag,f);var g=p(fe.AttributeName,c.start);if(g)return function(e,t,n){for(var a=function(a){var o=null;if(a.provideAttributes(e).forEach((function(e){if(t===e.name&&e.description){var r=nt(e,i,s);o=r?{contents:r,range:n}:null}})),o)return o.contents=r(o.contents),{value:o}},o=0,l=d;o=0&&$e(h,e);)e--,n--;for(var i=e+1,r=n;$e(h,i);)i++,r++;if(e>=0&&"&"===h[e]){return";"===h[i]?o.create(a.create(t.line,n),a.create(t.line,r+1)):o.create(a.create(t.line,n),a.create(t.line,r))}return null}();if(b)return function(e,t){var n=function(e){for(var t=l-1,n="&";t>=0&&$e(e,t);)t--;for(t+=1;$e(e,t);)n+=e[t],t+=1;return n+";"}(e);for(var i in je){var a=null;if(n==="&"+i){var o=je[i].charCodeAt(0).toString(16).toUpperCase(),s="U+";if(o.length<4)for(var c=4-o.length,h=0;h0&&(t=new Array(e.indent_level+1).join(this.__indent_string)),this.__base_string=t,this.__base_string_length=t.length}function a(e,t){this.__indent_cache=new r(e,t),this.raw=!1,this._end_with_newline=e.end_with_newline,this.indent_size=e.indent_size,this.wrap_line_length=e.wrap_line_length,this.indent_empty_lines=e.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new i(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}i.prototype.clone_empty=function(){var e=new i(this.__parent);return e.set_indent(this.__indent_count,this.__alignment_count),e},i.prototype.item=function(e){return e<0?this.__items[this.__items.length+e]:this.__items[e]},i.prototype.has_match=function(e){for(var t=this.__items.length-1;t>=0;t--)if(this.__items[t].match(e))return!0;return!1},i.prototype.set_indent=function(e,t){this.is_empty()&&(this.__indent_count=e||0,this.__alignment_count=t||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},i.prototype._set_wrap_point=function(){this.__parent.wrap_line_length&&(this.__wrap_point_index=this.__items.length,this.__wrap_point_character_count=this.__character_count,this.__wrap_point_indent_count=this.__parent.next_line.__indent_count,this.__wrap_point_alignment_count=this.__parent.next_line.__alignment_count)},i.prototype._should_wrap=function(){return this.__wrap_point_index&&this.__character_count>this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},i.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var e=this.__parent.current_line;return e.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),e.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),e.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count," "===e.__items[0]&&(e.__items.splice(0,1),e.__character_count-=1),!0}return!1},i.prototype.is_empty=function(){return 0===this.__items.length},i.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},i.prototype.push=function(e){this.__items.push(e);var t=e.lastIndexOf("\n");-1!==t?this.__character_count=e.length-t:this.__character_count+=e.length},i.prototype.pop=function(){var e=null;return this.is_empty()||(e=this.__items.pop(),this.__character_count-=e.length),e},i.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},i.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},i.prototype.trim=function(){for(;" "===this.last();)this.__items.pop(),this.__character_count-=1},i.prototype.toString=function(){var e="";return this.is_empty()?this.__parent.indent_empty_lines&&(e=this.__parent.get_indent_string(this.__indent_count)):(e=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),e+=this.__items.join("")),e},r.prototype.get_indent_size=function(e,t){var n=this.__base_string_length;return t=t||0,e<0&&(n=0),n+=e*this.__indent_size,n+=t},r.prototype.get_indent_string=function(e,t){var n=this.__base_string;return t=t||0,e<0&&(e=0,n=""),t+=e*this.__indent_size,this.__ensure_cache(t),n+=this.__cache[t]},r.prototype.__ensure_cache=function(e){for(;e>=this.__cache.length;)this.__add_column()},r.prototype.__add_column=function(){var e=this.__cache.length,t=0,n="";this.__indent_size&&e>=this.__indent_size&&(e-=(t=Math.floor(e/this.__indent_size))*this.__indent_size,n=new Array(t+1).join(this.__indent_string)),e&&(n+=new Array(e+1).join(" ")),this.__cache.push(n)},a.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},a.prototype.get_line_number=function(){return this.__lines.length},a.prototype.get_indent_string=function(e,t){return this.__indent_cache.get_indent_string(e,t)},a.prototype.get_indent_size=function(e,t){return this.__indent_cache.get_indent_size(e,t)},a.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},a.prototype.add_new_line=function(e){return!(this.is_empty()||!e&&this.just_added_newline())&&(this.raw||this.__add_outputline(),!0)},a.prototype.get_code=function(e){this.trim(!0);var t=this.current_line.pop();t&&("\n"===t[t.length-1]&&(t=t.replace(/\n+$/g,"")),this.current_line.push(t)),this._end_with_newline&&this.__add_outputline();var n=this.__lines.join("\n");return"\n"!==e&&(n=n.replace(/[\n]/g,e)),n},a.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},a.prototype.set_indent=function(e,t){return e=e||0,t=t||0,this.next_line.set_indent(e,t),this.__lines.length>1?(this.current_line.set_indent(e,t),!0):(this.current_line.set_indent(),!1)},a.prototype.add_raw_token=function(e){for(var t=0;t1&&this.current_line.is_empty();)this.__lines.pop(),this.current_line=this.__lines[this.__lines.length-1],this.current_line.trim();this.previous_line=this.__lines.length>1?this.__lines[this.__lines.length-2]:null},a.prototype.just_added_newline=function(){return this.current_line.is_empty()},a.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},a.prototype.ensure_empty_line_above=function(e,t){for(var n=this.__lines.length-2;n>=0;){var r=this.__lines[n];if(r.is_empty())break;if(0!==r.item(0).indexOf(e)&&r.item(-1)!==t){this.__lines.splice(n+1,0,new i(this)),this.previous_line=this.__lines[this.__lines.length-2];break}n--}},e.exports.Output=a},,,,function(e,t,n){function i(e,t){this.raw_options=r(e,t),this.disabled=this._get_boolean("disabled"),this.eol=this._get_characters("eol","auto"),this.end_with_newline=this._get_boolean("end_with_newline"),this.indent_size=this._get_number("indent_size",4),this.indent_char=this._get_characters("indent_char"," "),this.indent_level=this._get_number("indent_level"),this.preserve_newlines=this._get_boolean("preserve_newlines",!0),this.max_preserve_newlines=this._get_number("max_preserve_newlines",32786),this.preserve_newlines||(this.max_preserve_newlines=0),this.indent_with_tabs=this._get_boolean("indent_with_tabs","\t"===this.indent_char),this.indent_with_tabs&&(this.indent_char="\t",1===this.indent_size&&(this.indent_size=4)),this.wrap_line_length=this._get_number("wrap_line_length",this._get_number("max_char")),this.indent_empty_lines=this._get_boolean("indent_empty_lines"),this.templating=this._get_selection_list("templating",["auto","none","django","erb","handlebars","php","smarty"],["auto"])}function r(e,t){var n,i={};for(n in e=a(e))n!==t&&(i[n]=e[n]);if(t&&e[t])for(n in e[t])i[n]=e[t][n];return i}function a(e){var t,n={};for(t in e){n[t.replace(/-/g,"_")]=e[t]}return n}i.prototype._get_array=function(e,t){var n=this.raw_options[e],i=t||[];return"object"===typeof n?null!==n&&"function"===typeof n.concat&&(i=n.concat()):"string"===typeof n&&(i=n.split(/[^a-zA-Z0-9_\/\-]+/)),i},i.prototype._get_boolean=function(e,t){var n=this.raw_options[e];return void 0===n?!!t:!!n},i.prototype._get_characters=function(e,t){var n=this.raw_options[e],i=t||"";return"string"===typeof n&&(i=n.replace(/\\r/,"\r").replace(/\\n/,"\n").replace(/\\t/,"\t")),i},i.prototype._get_number=function(e,t){var n=this.raw_options[e];t=parseInt(t,10),isNaN(t)&&(t=0);var i=parseInt(n,10);return isNaN(i)&&(i=t),i},i.prototype._get_selection=function(e,t,n){var i=this._get_selection_list(e,t,n);if(1!==i.length)throw new Error("Invalid Option Value: The option '"+e+"' can only be one of the following values:\n"+t+"\nYou passed in: '"+this.raw_options[e]+"'");return i[0]},i.prototype._get_selection_list=function(e,t,n){if(!t||0===t.length)throw new Error("Selection list cannot be empty.");if(n=n||[t[0]],!this._is_valid_selection(n,t))throw new Error("Invalid Default Value!");var i=this._get_array(e,n);if(!this._is_valid_selection(i,t))throw new Error("Invalid Option Value: The option '"+e+"' can contain only the following values:\n"+t+"\nYou passed in: '"+this.raw_options[e]+"'");return i},i.prototype._is_valid_selection=function(e,t){return e.length&&t.length&&!e.some((function(e){return-1===t.indexOf(e)}))},e.exports.Options=i,e.exports.normalizeOpts=a,e.exports.mergeOpts=r},,function(e,t,n){var i=RegExp.prototype.hasOwnProperty("sticky");function r(e){this.__input=e||"",this.__input_length=this.__input.length,this.__position=0}r.prototype.restart=function(){this.__position=0},r.prototype.back=function(){this.__position>0&&(this.__position-=1)},r.prototype.hasNext=function(){return this.__position=0&&e=0&&t=e.length&&this.__input.substring(t-e.length,t).toLowerCase()===e},e.exports.InputScanner=r},,,,,function(e,t,n){function i(e,t){e="string"===typeof e?e:e.source,t="string"===typeof t?t:t.source,this.__directives_block_pattern=new RegExp(e+/ beautify( \w+[:]\w+)+ /.source+t,"g"),this.__directive_pattern=/ (\w+)[:](\w+)/g,this.__directives_end_ignore_pattern=new RegExp(e+/\sbeautify\signore:end\s/.source+t,"g")}i.prototype.get_directives=function(e){if(!e.match(this.__directives_block_pattern))return null;var t={};this.__directive_pattern.lastIndex=0;for(var n=this.__directive_pattern.exec(e);n;)t[n[1]]=n[2],n=this.__directive_pattern.exec(e);return t},i.prototype.readIgnored=function(e){return e.readUntilAfter(this.__directives_end_ignore_pattern)},e.exports.Directives=i},,function(e,t,n){var i=n(16).Beautifier,r=n(17).Options;e.exports=function(e,t){return new i(e,t).beautify()},e.exports.defaultOptions=function(){return new r}},function(e,t,n){var i=n(17).Options,r=n(2).Output,a=n(8).InputScanner,o=new(0,n(13).Directives)(/\/\*/,/\*\//),s=/\r\n|[\r\n]/,l=/\r\n|[\r\n]/g,c=/\s/,h=/(?:\s|\n)+/g,d=/\/\*(?:[\s\S]*?)((?:\*\/)|$)/g,u=/\/\/(?:[^\n\r\u2028\u2029]*)/g;function p(e,t){this._source_text=e||"",this._options=new i(t),this._ch=null,this._input=null,this.NESTED_AT_RULE={"@page":!0,"@font-face":!0,"@keyframes":!0,"@media":!0,"@supports":!0,"@document":!0},this.CONDITIONAL_GROUP_RULE={"@media":!0,"@supports":!0,"@document":!0}}p.prototype.eatString=function(e){var t="";for(this._ch=this._input.next();this._ch;){if(t+=this._ch,"\\"===this._ch)t+=this._input.next();else if(-1!==e.indexOf(this._ch)||"\n"===this._ch)break;this._ch=this._input.next()}return t},p.prototype.eatWhitespace=function(e){for(var t=c.test(this._input.peek()),n=0;c.test(this._input.peek());)this._ch=this._input.next(),e&&"\n"===this._ch&&(0===n||n0&&this._indentLevel--},p.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var e=this._source_text,t=this._options.eol;"auto"===t&&(t="\n",e&&s.test(e||"")&&(t=e.match(s)[0]));var n=(e=e.replace(l,"\n")).match(/^[\t ]*/)[0];this._output=new r(this._options,n),this._input=new a(e),this._indentLevel=0,this._nestedLevel=0,this._ch=null;for(var i,p,m=0,f=!1,g=!1,b=!1,_=!1,w=!1,v=this._ch;i=""!==this._input.read(h),p=v,this._ch=this._input.next(),"\\"===this._ch&&this._input.hasNext()&&(this._ch+=this._input.next()),v=this._ch,this._ch;)if("/"===this._ch&&"*"===this._input.peek()){this._output.add_new_line(),this._input.back();var y=this._input.read(d),T=o.get_directives(y);T&&"start"===T.ignore&&(y+=o.readIgnored(this._input)),this.print_string(y),this.eatWhitespace(!0),this._output.add_new_line()}else if("/"===this._ch&&"/"===this._input.peek())this._output.space_before_token=!0,this._input.back(),this.print_string(this._input.read(u)),this.eatWhitespace(!0);else if("@"===this._ch)if(this.preserveSingleSpace(i),"{"===this._input.peek())this.print_string(this._ch+this.eatString("}"));else{this.print_string(this._ch);var k=this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g);k.match(/[ :]$/)&&(k=this.eatString(": ").replace(/\s$/,""),this.print_string(k),this._output.space_before_token=!0),"extend"===(k=k.replace(/\s$/,""))?_=!0:"import"===k&&(w=!0),k in this.NESTED_AT_RULE?(this._nestedLevel+=1,k in this.CONDITIONAL_GROUP_RULE&&(b=!0)):f||0!==m||-1===k.indexOf(":")||(g=!0,this.indent())}else"#"===this._ch&&"{"===this._input.peek()?(this.preserveSingleSpace(i),this.print_string(this._ch+this.eatString("}"))):"{"===this._ch?(g&&(g=!1,this.outdent()),b?(b=!1,f=this._indentLevel>=this._nestedLevel):f=this._indentLevel>=this._nestedLevel-1,this._options.newline_between_rules&&f&&this._output.previous_line&&"{"!==this._output.previous_line.item(-1)&&this._output.ensure_empty_line_above("/",","),this._output.space_before_token=!0,"expand"===this._options.brace_style?(this._output.add_new_line(),this.print_string(this._ch),this.indent(),this._output.set_indent(this._indentLevel)):(this.indent(),this.print_string(this._ch)),this.eatWhitespace(!0),this._output.add_new_line()):"}"===this._ch?(this.outdent(),this._output.add_new_line(),"{"===p&&this._output.trim(!0),w=!1,_=!1,g&&(this.outdent(),g=!1),this.print_string(this._ch),f=!1,this._nestedLevel&&this._nestedLevel--,this.eatWhitespace(!0),this._output.add_new_line(),this._options.newline_between_rules&&!this._output.just_added_blankline()&&"}"!==this._input.peek()&&this._output.add_new_line(!0)):":"===this._ch?!f&&!b||this._input.lookBack("&")||this.foundNestedPseudoClass()||this._input.lookBack("(")||_||0!==m?(this._input.lookBack(" ")&&(this._output.space_before_token=!0),":"===this._input.peek()?(this._ch=this._input.next(),this.print_string("::")):this.print_string(":")):(this.print_string(":"),g||(g=!0,this._output.space_before_token=!0,this.eatWhitespace(!0),this.indent())):'"'===this._ch||"'"===this._ch?(this.preserveSingleSpace(i),this.print_string(this._ch+this.eatString(this._ch)),this.eatWhitespace(!0)):";"===this._ch?0===m?(g&&(this.outdent(),g=!1),_=!1,w=!1,this.print_string(this._ch),this.eatWhitespace(!0),"/"!==this._input.peek()&&this._output.add_new_line()):(this.print_string(this._ch),this.eatWhitespace(!0),this._output.space_before_token=!0):"("===this._ch?this._input.lookBack("url")?(this.print_string(this._ch),this.eatWhitespace(),m++,this.indent(),this._ch=this._input.next(),")"===this._ch||'"'===this._ch||"'"===this._ch?this._input.back():this._ch&&(this.print_string(this._ch+this.eatString(")")),m&&(m--,this.outdent()))):(this.preserveSingleSpace(i),this.print_string(this._ch),this.eatWhitespace(),m++,this.indent()):")"===this._ch?(m&&(m--,this.outdent()),this.print_string(this._ch)):","===this._ch?(this.print_string(this._ch),this.eatWhitespace(!0),!this._options.selector_separator_newline||g||0!==m||w?this._output.space_before_token=!0:this._output.add_new_line()):">"!==this._ch&&"+"!==this._ch&&"~"!==this._ch||g||0!==m?"]"===this._ch?this.print_string(this._ch):"["===this._ch?(this.preserveSingleSpace(i),this.print_string(this._ch)):"="===this._ch?(this.eatWhitespace(),this.print_string("="),c.test(this._ch)&&(this._ch="")):"!"!==this._ch||this._input.lookBack("\\")?(this.preserveSingleSpace(i),this.print_string(this._ch)):(this.print_string(" "),this.print_string(this._ch)):this._options.space_around_combinator?(this._output.space_before_token=!0,this.print_string(this._ch),this._output.space_before_token=!0):(this.print_string(this._ch),this.eatWhitespace(),this._ch&&c.test(this._ch)&&(this._ch=""));return this._output.get_code(t)},e.exports.Beautifier=p},function(e,t,n){var i=n(6).Options;function r(e){i.call(this,e,"css"),this.selector_separator_newline=this._get_boolean("selector_separator_newline",!0),this.newline_between_rules=this._get_boolean("newline_between_rules",!0);var t=this._get_boolean("space_around_selector_separator");this.space_around_combinator=this._get_boolean("space_around_combinator")||t;var n=this._get_selection_list("brace_style",["collapse","expand","end-expand","none","preserve-inline"]);this.brace_style="collapse";for(var r=0;r0&&(t=new Array(e.indent_level+1).join(this.__indent_string)),this.__base_string=t,this.__base_string_length=t.length}function a(e,t){this.__indent_cache=new r(e,t),this.raw=!1,this._end_with_newline=e.end_with_newline,this.indent_size=e.indent_size,this.wrap_line_length=e.wrap_line_length,this.indent_empty_lines=e.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new i(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}i.prototype.clone_empty=function(){var e=new i(this.__parent);return e.set_indent(this.__indent_count,this.__alignment_count),e},i.prototype.item=function(e){return e<0?this.__items[this.__items.length+e]:this.__items[e]},i.prototype.has_match=function(e){for(var t=this.__items.length-1;t>=0;t--)if(this.__items[t].match(e))return!0;return!1},i.prototype.set_indent=function(e,t){this.is_empty()&&(this.__indent_count=e||0,this.__alignment_count=t||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},i.prototype._set_wrap_point=function(){this.__parent.wrap_line_length&&(this.__wrap_point_index=this.__items.length,this.__wrap_point_character_count=this.__character_count,this.__wrap_point_indent_count=this.__parent.next_line.__indent_count,this.__wrap_point_alignment_count=this.__parent.next_line.__alignment_count)},i.prototype._should_wrap=function(){return this.__wrap_point_index&&this.__character_count>this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},i.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var e=this.__parent.current_line;return e.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),e.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),e.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count," "===e.__items[0]&&(e.__items.splice(0,1),e.__character_count-=1),!0}return!1},i.prototype.is_empty=function(){return 0===this.__items.length},i.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},i.prototype.push=function(e){this.__items.push(e);var t=e.lastIndexOf("\n");-1!==t?this.__character_count=e.length-t:this.__character_count+=e.length},i.prototype.pop=function(){var e=null;return this.is_empty()||(e=this.__items.pop(),this.__character_count-=e.length),e},i.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},i.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},i.prototype.trim=function(){for(;" "===this.last();)this.__items.pop(),this.__character_count-=1},i.prototype.toString=function(){var e="";return this.is_empty()?this.__parent.indent_empty_lines&&(e=this.__parent.get_indent_string(this.__indent_count)):(e=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),e+=this.__items.join("")),e},r.prototype.get_indent_size=function(e,t){var n=this.__base_string_length;return t=t||0,e<0&&(n=0),n+=e*this.__indent_size,n+=t},r.prototype.get_indent_string=function(e,t){var n=this.__base_string;return t=t||0,e<0&&(e=0,n=""),t+=e*this.__indent_size,this.__ensure_cache(t),n+=this.__cache[t]},r.prototype.__ensure_cache=function(e){for(;e>=this.__cache.length;)this.__add_column()},r.prototype.__add_column=function(){var e=this.__cache.length,t=0,n="";this.__indent_size&&e>=this.__indent_size&&(e-=(t=Math.floor(e/this.__indent_size))*this.__indent_size,n=new Array(t+1).join(this.__indent_string)),e&&(n+=new Array(e+1).join(" ")),this.__cache.push(n)},a.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},a.prototype.get_line_number=function(){return this.__lines.length},a.prototype.get_indent_string=function(e,t){return this.__indent_cache.get_indent_string(e,t)},a.prototype.get_indent_size=function(e,t){return this.__indent_cache.get_indent_size(e,t)},a.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},a.prototype.add_new_line=function(e){return!(this.is_empty()||!e&&this.just_added_newline())&&(this.raw||this.__add_outputline(),!0)},a.prototype.get_code=function(e){this.trim(!0);var t=this.current_line.pop();t&&("\n"===t[t.length-1]&&(t=t.replace(/\n+$/g,"")),this.current_line.push(t)),this._end_with_newline&&this.__add_outputline();var n=this.__lines.join("\n");return"\n"!==e&&(n=n.replace(/[\n]/g,e)),n},a.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},a.prototype.set_indent=function(e,t){return e=e||0,t=t||0,this.next_line.set_indent(e,t),this.__lines.length>1?(this.current_line.set_indent(e,t),!0):(this.current_line.set_indent(),!1)},a.prototype.add_raw_token=function(e){for(var t=0;t1&&this.current_line.is_empty();)this.__lines.pop(),this.current_line=this.__lines[this.__lines.length-1],this.current_line.trim();this.previous_line=this.__lines.length>1?this.__lines[this.__lines.length-2]:null},a.prototype.just_added_newline=function(){return this.current_line.is_empty()},a.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},a.prototype.ensure_empty_line_above=function(e,t){for(var n=this.__lines.length-2;n>=0;){var r=this.__lines[n];if(r.is_empty())break;if(0!==r.item(0).indexOf(e)&&r.item(-1)!==t){this.__lines.splice(n+1,0,new i(this)),this.previous_line=this.__lines[this.__lines.length-2];break}n--}},e.exports.Output=a},function(e,t,n){e.exports.Token=function(e,t,n,i){this.type=e,this.text=t,this.comments_before=null,this.newlines=n||0,this.whitespace_before=i||"",this.parent=null,this.next=null,this.previous=null,this.opened=null,this.closed=null,this.directives=null}},,,function(e,t,n){function i(e,t){this.raw_options=r(e,t),this.disabled=this._get_boolean("disabled"),this.eol=this._get_characters("eol","auto"),this.end_with_newline=this._get_boolean("end_with_newline"),this.indent_size=this._get_number("indent_size",4),this.indent_char=this._get_characters("indent_char"," "),this.indent_level=this._get_number("indent_level"),this.preserve_newlines=this._get_boolean("preserve_newlines",!0),this.max_preserve_newlines=this._get_number("max_preserve_newlines",32786),this.preserve_newlines||(this.max_preserve_newlines=0),this.indent_with_tabs=this._get_boolean("indent_with_tabs","\t"===this.indent_char),this.indent_with_tabs&&(this.indent_char="\t",1===this.indent_size&&(this.indent_size=4)),this.wrap_line_length=this._get_number("wrap_line_length",this._get_number("max_char")),this.indent_empty_lines=this._get_boolean("indent_empty_lines"),this.templating=this._get_selection_list("templating",["auto","none","django","erb","handlebars","php","smarty"],["auto"])}function r(e,t){var n,i={};for(n in e=a(e))n!==t&&(i[n]=e[n]);if(t&&e[t])for(n in e[t])i[n]=e[t][n];return i}function a(e){var t,n={};for(t in e){n[t.replace(/-/g,"_")]=e[t]}return n}i.prototype._get_array=function(e,t){var n=this.raw_options[e],i=t||[];return"object"===typeof n?null!==n&&"function"===typeof n.concat&&(i=n.concat()):"string"===typeof n&&(i=n.split(/[^a-zA-Z0-9_\/\-]+/)),i},i.prototype._get_boolean=function(e,t){var n=this.raw_options[e];return void 0===n?!!t:!!n},i.prototype._get_characters=function(e,t){var n=this.raw_options[e],i=t||"";return"string"===typeof n&&(i=n.replace(/\\r/,"\r").replace(/\\n/,"\n").replace(/\\t/,"\t")),i},i.prototype._get_number=function(e,t){var n=this.raw_options[e];t=parseInt(t,10),isNaN(t)&&(t=0);var i=parseInt(n,10);return isNaN(i)&&(i=t),i},i.prototype._get_selection=function(e,t,n){var i=this._get_selection_list(e,t,n);if(1!==i.length)throw new Error("Invalid Option Value: The option '"+e+"' can only be one of the following values:\n"+t+"\nYou passed in: '"+this.raw_options[e]+"'");return i[0]},i.prototype._get_selection_list=function(e,t,n){if(!t||0===t.length)throw new Error("Selection list cannot be empty.");if(n=n||[t[0]],!this._is_valid_selection(n,t))throw new Error("Invalid Default Value!");var i=this._get_array(e,n);if(!this._is_valid_selection(i,t))throw new Error("Invalid Option Value: The option '"+e+"' can contain only the following values:\n"+t+"\nYou passed in: '"+this.raw_options[e]+"'");return i},i.prototype._is_valid_selection=function(e,t){return e.length&&t.length&&!e.some((function(e){return-1===t.indexOf(e)}))},e.exports.Options=i,e.exports.normalizeOpts=a,e.exports.mergeOpts=r},,function(e,t,n){var i=RegExp.prototype.hasOwnProperty("sticky");function r(e){this.__input=e||"",this.__input_length=this.__input.length,this.__position=0}r.prototype.restart=function(){this.__position=0},r.prototype.back=function(){this.__position>0&&(this.__position-=1)},r.prototype.hasNext=function(){return this.__position=0&&e=0&&t=e.length&&this.__input.substring(t-e.length,t).toLowerCase()===e},e.exports.InputScanner=r},function(e,t,n){var i=n(8).InputScanner,r=n(3).Token,a=n(10).TokenStream,o=n(11).WhitespacePattern,s={START:"TK_START",RAW:"TK_RAW",EOF:"TK_EOF"},l=function(e,t){this._input=new i(e),this._options=t||{},this.__tokens=null,this._patterns={},this._patterns.whitespace=new o(this._input)};l.prototype.tokenize=function(){var e;this._input.restart(),this.__tokens=new a,this._reset();for(var t=new r(s.START,""),n=null,i=[],o=new a;t.type!==s.EOF;){for(e=this._get_next_token(t,n);this._is_comment(e);)o.add(e),e=this._get_next_token(t,n);o.isEmpty()||(e.comments_before=o,o=new a),e.parent=n,this._is_opening(e)?(i.push(n),n=e):n&&this._is_closing(e,n)&&(e.opened=n,n.closed=e,n=i.pop(),e.parent=n),e.previous=t,t.next=e,this.__tokens.add(e),t=e}return this.__tokens},l.prototype._is_first_token=function(){return this.__tokens.isEmpty()},l.prototype._reset=function(){},l.prototype._get_next_token=function(e,t){this._readWhitespace();var n=this._input.read(/.+/g);return n?this._create_token(s.RAW,n):this._create_token(s.EOF,"")},l.prototype._is_comment=function(e){return!1},l.prototype._is_opening=function(e){return!1},l.prototype._is_closing=function(e,t){return!1},l.prototype._create_token=function(e,t){return new r(e,t,this._patterns.whitespace.newline_count,this._patterns.whitespace.whitespace_before_token)},l.prototype._readWhitespace=function(){return this._patterns.whitespace.read()},e.exports.Tokenizer=l,e.exports.TOKEN=s},function(e,t,n){function i(e){this.__tokens=[],this.__tokens_length=this.__tokens.length,this.__position=0,this.__parent_token=e}i.prototype.restart=function(){this.__position=0},i.prototype.isEmpty=function(){return 0===this.__tokens_length},i.prototype.hasNext=function(){return this.__position=0&&e/),erb:n.starting_with(/<%[^%]/).until_after(/[^%]%>/),django:n.starting_with(/{%/).until_after(/%}/),django_value:n.starting_with(/{{/).until_after(/}}/),django_comment:n.starting_with(/{#/).until_after(/#}/),smarty:n.starting_with(/{(?=[^}{\s\n])/).until_after(/[^\s\n]}/),smarty_comment:n.starting_with(/{\*/).until_after(/\*}/),smarty_literal:n.starting_with(/{literal}/).until_after(/{\/literal}/)}}a.prototype=new i,a.prototype._create=function(){return new a(this._input,this)},a.prototype._update=function(){this.__set_templated_pattern()},a.prototype.disable=function(e){var t=this._create();return t._disabled[e]=!0,t._update(),t},a.prototype.read_options=function(e){var t=this._create();for(var n in r)t._disabled[n]=-1===e.templating.indexOf(n);return t._update(),t},a.prototype.exclude=function(e){var t=this._create();return t._excluded[e]=!0,t._update(),t},a.prototype.read=function(){var e="";e=this._match_pattern?this._input.read(this._starting_pattern):this._input.read(this._starting_pattern,this.__template_pattern);for(var t=this._read_template();t;)this._match_pattern?t+=this._input.read(this._match_pattern):t+=this._input.readUntil(this.__template_pattern),e+=t,t=this._read_template();return this._until_after&&(e+=this._input.readUntilAfter(this._until_pattern)),e},a.prototype.__set_templated_pattern=function(){var e=[];this._disabled.php||e.push(this.__patterns.php._starting_pattern.source),this._disabled.handlebars||e.push(this.__patterns.handlebars._starting_pattern.source),this._disabled.erb||e.push(this.__patterns.erb._starting_pattern.source),this._disabled.django||(e.push(this.__patterns.django._starting_pattern.source),e.push(this.__patterns.django_value._starting_pattern.source),e.push(this.__patterns.django_comment._starting_pattern.source)),this._disabled.smarty||e.push(this.__patterns.smarty._starting_pattern.source),this._until_pattern&&e.push(this._until_pattern.source),this.__template_pattern=this._input.get_regexp("(?:"+e.join("|")+")")},a.prototype._read_template=function(){var e="",t=this._input.peek();if("<"===t){var n=this._input.peek(1);this._disabled.php||this._excluded.php||"?"!==n||(e=e||this.__patterns.php.read()),this._disabled.erb||this._excluded.erb||"%"!==n||(e=e||this.__patterns.erb.read())}else"{"===t&&(this._disabled.handlebars||this._excluded.handlebars||(e=(e=(e=e||this.__patterns.handlebars_comment.read())||this.__patterns.handlebars_unescaped.read())||this.__patterns.handlebars.read()),this._disabled.django||(this._excluded.django||this._excluded.handlebars||(e=e||this.__patterns.django_value.read()),this._excluded.django||(e=(e=e||this.__patterns.django_comment.read())||this.__patterns.django.read())),this._disabled.smarty||this._disabled.django&&this._disabled.handlebars&&(e=(e=(e=e||this.__patterns.smarty_comment.read())||this.__patterns.smarty_literal.read())||this.__patterns.smarty.read()));return e},e.exports.TemplatablePattern=a},,,,function(e,t,n){var i=n(19).Beautifier,r=n(20).Options;e.exports=function(e,t,n,r){return new i(e,t,n,r).beautify()},e.exports.defaultOptions=function(){return new r}},function(e,t,n){var i=n(20).Options,r=n(2).Output,a=n(21).Tokenizer,o=n(21).TOKEN,s=/\r\n|[\r\n]/,l=/\r\n|[\r\n]/g,c=function(e,t){this.indent_level=0,this.alignment_size=0,this.max_preserve_newlines=e.max_preserve_newlines,this.preserve_newlines=e.preserve_newlines,this._output=new r(e,t)};c.prototype.current_line_has_match=function(e){return this._output.current_line.has_match(e)},c.prototype.set_space_before_token=function(e,t){this._output.space_before_token=e,this._output.non_breaking_space=t},c.prototype.set_wrap_point=function(){this._output.set_indent(this.indent_level,this.alignment_size),this._output.set_wrap_point()},c.prototype.add_raw_token=function(e){this._output.add_raw_token(e)},c.prototype.print_preserved_newlines=function(e){var t=0;e.type!==o.TEXT&&e.previous.type!==o.TEXT&&(t=e.newlines?1:0),this.preserve_newlines&&(t=e.newlines0);return 0!==t},c.prototype.traverse_whitespace=function(e){return!(!e.whitespace_before&&!e.newlines)&&(this.print_preserved_newlines(e)||(this._output.space_before_token=!0),!0)},c.prototype.previous_token_wrapped=function(){return this._output.previous_token_wrapped},c.prototype.print_newline=function(e){this._output.add_new_line(e)},c.prototype.print_token=function(e){e.text&&(this._output.set_indent(this.indent_level,this.alignment_size),this._output.add_token(e.text))},c.prototype.indent=function(){this.indent_level++},c.prototype.get_full_indent=function(e){return(e=this.indent_level+(e||0))<1?"":this._output.get_indent_string(e)};var h=function(e,t){var n=null,i=null;return t.closed?("script"===e?n="text/javascript":"style"===e&&(n="text/css"),n=function(e){for(var t=null,n=e.next;n.type!==o.EOF&&e.closed!==n;){if(n.type===o.ATTRIBUTE&&"type"===n.text){n.next&&n.next.type===o.EQUALS&&n.next.next&&n.next.next.type===o.VALUE&&(t=n.next.next.text);break}n=n.next}return t}(t)||n,n.search("text/css")>-1?i="css":n.search(/module|((text|application|dojo)\/(x-)?(javascript|ecmascript|jscript|livescript|(ld\+)?json|method|aspect))/)>-1?i="javascript":n.search(/(text|application|dojo)\/(x-)?(html)/)>-1?i="html":n.search(/test\/null/)>-1&&(i="null"),i):null};function d(e,t){return-1!==t.indexOf(e)}function u(e,t,n){this.parent=e||null,this.tag=t?t.tag_name:"",this.indent_level=n||0,this.parser_token=t||null}function p(e){this._printer=e,this._current_frame=null}function m(e,t,n,r){this._source_text=e||"",t=t||{},this._js_beautify=n,this._css_beautify=r,this._tag_stack=null;var a=new i(t,"html");this._options=a,this._is_wrap_attributes_force="force"===this._options.wrap_attributes.substr(0,"force".length),this._is_wrap_attributes_force_expand_multiline="force-expand-multiline"===this._options.wrap_attributes,this._is_wrap_attributes_force_aligned="force-aligned"===this._options.wrap_attributes,this._is_wrap_attributes_aligned_multiple="aligned-multiple"===this._options.wrap_attributes,this._is_wrap_attributes_preserve="preserve"===this._options.wrap_attributes.substr(0,"preserve".length),this._is_wrap_attributes_preserve_aligned="preserve-aligned"===this._options.wrap_attributes}p.prototype.get_parser_token=function(){return this._current_frame?this._current_frame.parser_token:null},p.prototype.record_tag=function(e){var t=new u(this._current_frame,e,this._printer.indent_level);this._current_frame=t},p.prototype._try_pop_frame=function(e){var t=null;return e&&(t=e.parser_token,this._printer.indent_level=e.indent_level,this._current_frame=e.parent),t},p.prototype._get_frame=function(e,t){for(var n=this._current_frame;n&&-1===e.indexOf(n.tag);){if(t&&-1!==t.indexOf(n.tag)){n=null;break}n=n.parent}return n},p.prototype.try_pop=function(e,t){var n=this._get_frame([e],t);return this._try_pop_frame(n)},p.prototype.indent_to_tag=function(e){var t=this._get_frame(e);t&&(this._printer.indent_level=t.indent_level)},m.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var e=this._source_text,t=this._options.eol;"auto"===this._options.eol&&(t="\n",e&&s.test(e)&&(t=e.match(s)[0]));var n=(e=e.replace(l,"\n")).match(/^[\t ]*/)[0],i={text:"",type:""},r=new f,h=new c(this._options,n),d=new a(e,this._options).tokenize();this._tag_stack=new p(h);for(var u=null,m=d.next();m.type!==o.EOF;)m.type===o.TAG_OPEN||m.type===o.COMMENT?r=u=this._handle_tag_open(h,m,r,i):m.type===o.ATTRIBUTE||m.type===o.EQUALS||m.type===o.VALUE||m.type===o.TEXT&&!r.tag_complete?u=this._handle_inside_tag(h,m,r,d):m.type===o.TAG_CLOSE?u=this._handle_tag_close(h,m,r):m.type===o.TEXT?u=this._handle_text(h,m,r):h.add_raw_token(m),i=u,m=d.next();return h._output.get_code(t)},m.prototype._handle_tag_close=function(e,t,n){var i={text:t.text,type:t.type};return e.alignment_size=0,n.tag_complete=!0,e.set_space_before_token(t.newlines||""!==t.whitespace_before,!0),n.is_unformatted?e.add_raw_token(t):("<"===n.tag_start_char&&(e.set_space_before_token("/"===t.text[0],!0),this._is_wrap_attributes_force_expand_multiline&&n.has_wrapped_attrs&&e.print_newline(!1)),e.print_token(t)),!n.indent_content||n.is_unformatted||n.is_content_unformatted||(e.indent(),n.indent_content=!1),n.is_inline_element||n.is_unformatted||n.is_content_unformatted||e.set_wrap_point(),i},m.prototype._handle_inside_tag=function(e,t,n,i){var r=n.has_wrapped_attrs,a={text:t.text,type:t.type};if(e.set_space_before_token(t.newlines||""!==t.whitespace_before,!0),n.is_unformatted)e.add_raw_token(t);else if("{"===n.tag_start_char&&t.type===o.TEXT)e.print_preserved_newlines(t)?(t.newlines=0,e.add_raw_token(t)):e.print_token(t);else{if(t.type===o.ATTRIBUTE?(e.set_space_before_token(!0),n.attr_count+=1):(t.type===o.EQUALS||t.type===o.VALUE&&t.previous.type===o.EQUALS)&&e.set_space_before_token(!1),t.type===o.ATTRIBUTE&&"<"===n.tag_start_char&&((this._is_wrap_attributes_preserve||this._is_wrap_attributes_preserve_aligned)&&(e.traverse_whitespace(t),r=r||0!==t.newlines),this._is_wrap_attributes_force)){var s=n.attr_count>1;if(this._is_wrap_attributes_force_expand_multiline&&1===n.attr_count){var l,c=!0,h=0;do{if((l=i.peek(h)).type===o.ATTRIBUTE){c=!1;break}h+=1}while(h<4&&l.type!==o.EOF&&l.type!==o.TAG_CLOSE);s=!c}s&&(e.print_newline(!1),r=!0)}e.print_token(t),r=r||e.previous_token_wrapped(),n.has_wrapped_attrs=r}return a},m.prototype._handle_text=function(e,t,n){var i={text:t.text,type:"TK_CONTENT"};return n.custom_beautifier_name?this._print_custom_beatifier_text(e,t,n):n.is_unformatted||n.is_content_unformatted?e.add_raw_token(t):(e.traverse_whitespace(t),e.print_token(t)),i},m.prototype._print_custom_beatifier_text=function(e,t,n){var i=this;if(""!==t.text){var r,a=t.text,o=1,s="",l="";"javascript"===n.custom_beautifier_name&&"function"===typeof this._js_beautify?r=this._js_beautify:"css"===n.custom_beautifier_name&&"function"===typeof this._css_beautify?r=this._css_beautify:"html"===n.custom_beautifier_name&&(r=function(e,t){return new m(e,t,i._js_beautify,i._css_beautify).beautify()}),"keep"===this._options.indent_scripts?o=0:"separate"===this._options.indent_scripts&&(o=-e.indent_level);var c=e.get_full_indent(o);if(a=a.replace(/\n[ \t]*$/,""),"html"!==n.custom_beautifier_name&&"<"===a[0]&&a.match(/^(|]]>)$/.exec(a);if(!h)return void e.add_raw_token(t);s=c+h[1]+"\n",a=h[4],h[5]&&(l=c+h[5]),a=a.replace(/\n[ \t]*$/,""),(h[2]||-1!==h[3].indexOf("\n"))&&(h=h[3].match(/[ \t]+$/))&&(t.whitespace_before=h[0])}if(a)if(r){var d=function(){this.eol="\n"};d.prototype=this._options.raw_options,a=r(c+a,new d)}else{var u=t.whitespace_before;u&&(a=a.replace(new RegExp("\n("+u+")?","g"),"\n")),a=c+a.replace(/\n/g,"\n"+c)}s&&(a=a?s+a+"\n"+l:s+l),e.print_newline(!1),a&&(t.text=a,t.whitespace_before="",t.newlines=0,e.add_raw_token(t),e.print_newline(!0))}},m.prototype._handle_tag_open=function(e,t,n,i){var r=this._get_tag_open_token(t);return!n.is_unformatted&&!n.is_content_unformatted||n.is_empty_element||t.type!==o.TAG_OPEN||0!==t.text.indexOf("]*)/),this.tag_check=n?n[1]:""):(n=t.text.match(/^{{(?:[\^]|#\*?)?([^\s}]+)/),this.tag_check=n?n[1]:"","{{#>"===t.text&&">"===this.tag_check&&null!==t.next&&(this.tag_check=t.next.text)),this.tag_check=this.tag_check.toLowerCase(),t.type===o.COMMENT&&(this.tag_complete=!0),this.is_start_tag="/"!==this.tag_check.charAt(0),this.tag_name=this.is_start_tag?this.tag_check:this.tag_check.substr(1),this.is_end_tag=!this.is_start_tag||t.closed&&"/>"===t.closed.text,this.is_end_tag=this.is_end_tag||"{"===this.tag_start_char&&(this.text.length<3||/[^#\^]/.test(this.text.charAt(2)))):this.tag_complete=!0};m.prototype._get_tag_open_token=function(e){var t=new f(this._tag_stack.get_parser_token(),e);return t.alignment_size=this._options.wrap_attributes_indent_size,t.is_end_tag=t.is_end_tag||d(t.tag_check,this._options.void_elements),t.is_empty_element=t.tag_complete||t.is_start_tag&&t.is_end_tag,t.is_unformatted=!t.tag_complete&&d(t.tag_check,this._options.unformatted),t.is_content_unformatted=!t.is_empty_element&&d(t.tag_check,this._options.content_unformatted),t.is_inline_element=d(t.tag_name,this._options.inline)||"{"===t.tag_start_char,t},m.prototype._set_tag_position=function(e,t,n,i,r){if(n.is_empty_element||(n.is_end_tag?n.start_tag_token=this._tag_stack.try_pop(n.tag_name):(this._do_optional_end_element(n)&&(n.is_inline_element||e.print_newline(!1)),this._tag_stack.record_tag(n),"script"!==n.tag_name&&"style"!==n.tag_name||n.is_unformatted||n.is_content_unformatted||(n.custom_beautifier_name=h(n.tag_check,t)))),d(n.tag_check,this._options.extra_liners)&&(e.print_newline(!1),e._output.just_added_blankline()||e.print_newline(!0)),n.is_empty_element){if("{"===n.tag_start_char&&"else"===n.tag_check)this._tag_stack.indent_to_tag(["if","unless","each"]),n.indent_content=!0,e.current_line_has_match(/{{#if/)||e.print_newline(!1);"!--"===n.tag_name&&r.type===o.TAG_CLOSE&&i.is_end_tag&&-1===n.text.indexOf("\n")||(n.is_inline_element||n.is_unformatted||e.print_newline(!1),this._calcluate_parent_multiline(e,n))}else if(n.is_end_tag){var a=!1;a=(a=n.start_tag_token&&n.start_tag_token.multiline_content)||!n.is_inline_element&&!(i.is_inline_element||i.is_unformatted)&&!(r.type===o.TAG_CLOSE&&n.start_tag_token===i)&&"TK_CONTENT"!==r.type,(n.is_content_unformatted||n.is_unformatted)&&(a=!1),a&&e.print_newline(!1)}else n.indent_content=!n.custom_beautifier_name,"<"===n.tag_start_char&&("html"===n.tag_name?n.indent_content=this._options.indent_inner_html:"head"===n.tag_name?n.indent_content=this._options.indent_head_inner_html:"body"===n.tag_name&&(n.indent_content=this._options.indent_body_inner_html)),n.is_inline_element||n.is_unformatted||"TK_CONTENT"===r.type&&!n.is_content_unformatted||e.print_newline(!1),this._calcluate_parent_multiline(e,n)},m.prototype._calcluate_parent_multiline=function(e,t){!t.parent||!e._output.just_added_newline()||(t.is_inline_element||t.is_unformatted)&&t.parent.is_inline_element||(t.parent.multiline_content=!0)};var g=["address","article","aside","blockquote","details","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hr","main","nav","ol","p","pre","section","table","ul"],b=["a","audio","del","ins","map","noscript","video"];m.prototype._do_optional_end_element=function(e){var t=null;if(!e.is_empty_element&&e.is_start_tag&&e.parent){if("body"===e.tag_name)t=t||this._tag_stack.try_pop("head");else if("li"===e.tag_name)t=t||this._tag_stack.try_pop("li",["ol","ul"]);else if("dd"===e.tag_name||"dt"===e.tag_name)t=(t=t||this._tag_stack.try_pop("dt",["dl"]))||this._tag_stack.try_pop("dd",["dl"]);else if("p"===e.parent.tag_name&&-1!==g.indexOf(e.tag_name)){var n=e.parent.parent;n&&-1!==b.indexOf(n.tag_name)||(t=t||this._tag_stack.try_pop("p"))}else"rp"===e.tag_name||"rt"===e.tag_name?t=(t=t||this._tag_stack.try_pop("rt",["ruby","rtc"]))||this._tag_stack.try_pop("rp",["ruby","rtc"]):"optgroup"===e.tag_name?t=t||this._tag_stack.try_pop("optgroup",["select"]):"option"===e.tag_name?t=t||this._tag_stack.try_pop("option",["select","datalist","optgroup"]):"colgroup"===e.tag_name?t=t||this._tag_stack.try_pop("caption",["table"]):"thead"===e.tag_name?t=(t=t||this._tag_stack.try_pop("caption",["table"]))||this._tag_stack.try_pop("colgroup",["table"]):"tbody"===e.tag_name||"tfoot"===e.tag_name?t=(t=(t=(t=t||this._tag_stack.try_pop("caption",["table"]))||this._tag_stack.try_pop("colgroup",["table"]))||this._tag_stack.try_pop("thead",["table"]))||this._tag_stack.try_pop("tbody",["table"]):"tr"===e.tag_name?t=(t=(t=t||this._tag_stack.try_pop("caption",["table"]))||this._tag_stack.try_pop("colgroup",["table"]))||this._tag_stack.try_pop("tr",["table","thead","tbody","tfoot"]):"th"!==e.tag_name&&"td"!==e.tag_name||(t=(t=t||this._tag_stack.try_pop("td",["table","thead","tbody","tfoot","tr"]))||this._tag_stack.try_pop("th",["table","thead","tbody","tfoot","tr"]));return e.parent=this._tag_stack.get_parser_token(),t}},e.exports.Beautifier=m},function(e,t,n){var i=n(6).Options;function r(e){i.call(this,e,"html"),1===this.templating.length&&"auto"===this.templating[0]&&(this.templating=["django","erb","handlebars","php"]),this.indent_inner_html=this._get_boolean("indent_inner_html"),this.indent_body_inner_html=this._get_boolean("indent_body_inner_html",!0),this.indent_head_inner_html=this._get_boolean("indent_head_inner_html",!0),this.indent_handlebars=this._get_boolean("indent_handlebars",!0),this.wrap_attributes=this._get_selection("wrap_attributes",["auto","force","force-aligned","force-expand-multiline","aligned-multiple","preserve","preserve-aligned"]),this.wrap_attributes_indent_size=this._get_number("wrap_attributes_indent_size",this.indent_size),this.extra_liners=this._get_array("extra_liners",["head","body","/html"]),this.inline=this._get_array("inline",["a","abbr","area","audio","b","bdi","bdo","br","button","canvas","cite","code","data","datalist","del","dfn","em","embed","i","iframe","img","input","ins","kbd","keygen","label","map","mark","math","meter","noscript","object","output","progress","q","ruby","s","samp","select","small","span","strong","sub","sup","svg","template","textarea","time","u","var","video","wbr","text","acronym","big","strike","tt"]),this.void_elements=this._get_array("void_elements",["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr","!doctype","?xml","basefont","isindex"]),this.unformatted=this._get_array("unformatted",[]),this.content_unformatted=this._get_array("content_unformatted",["pre","textarea"]),this.unformatted_content_delimiter=this._get_characters("unformatted_content_delimiter"),this.indent_scripts=this._get_selection("indent_scripts",["normal","keep","separate"])}r.prototype=new i,e.exports.Options=r},function(e,t,n){var i=n(9).Tokenizer,r=n(9).TOKEN,a=n(13).Directives,o=n(14).TemplatablePattern,s=n(12).Pattern,l={TAG_OPEN:"TK_TAG_OPEN",TAG_CLOSE:"TK_TAG_CLOSE",ATTRIBUTE:"TK_ATTRIBUTE",EQUALS:"TK_EQUALS",VALUE:"TK_VALUE",COMMENT:"TK_COMMENT",TEXT:"TK_TEXT",UNKNOWN:"TK_UNKNOWN",START:r.START,RAW:r.RAW,EOF:r.EOF},c=new a(/<\!--/,/-->/),h=function(e,t){i.call(this,e,t),this._current_tag_name="";var n=new o(this._input).read_options(this._options),r=new s(this._input);if(this.__patterns={word:n.until(/[\n\r\t <]/),single_quote:n.until_after(/'/),double_quote:n.until_after(/"/),attribute:n.until(/[\n\r\t =>]|\/>/),element_name:n.until(/[\n\r\t >\/]/),handlebars_comment:r.starting_with(/{{!--/).until_after(/--}}/),handlebars:r.starting_with(/{{/).until_after(/}}/),handlebars_open:r.until(/[\n\r\t }]/),handlebars_raw_close:r.until(/}}/),comment:r.starting_with(//),cdata:r.starting_with(//),conditional_comment:r.starting_with(//),processing:r.starting_with(/<\?/).until_after(/\?>/)},this._options.indent_handlebars&&(this.__patterns.word=this.__patterns.word.exclude("handlebars")),this._unformatted_content_delimiter=null,this._options.unformatted_content_delimiter){var a=this._input.get_literal_regexp(this._options.unformatted_content_delimiter);this.__patterns.unformatted_content_delimiter=r.matching(a).until_after(a)}};(h.prototype=new i)._is_comment=function(e){return!1},h.prototype._is_opening=function(e){return e.type===l.TAG_OPEN},h.prototype._is_closing=function(e,t){return e.type===l.TAG_CLOSE&&t&&((">"===e.text||"/>"===e.text)&&"<"===t.text[0]||"}}"===e.text&&"{"===t.text[0]&&"{"===t.text[1])},h.prototype._reset=function(){this._current_tag_name=""},h.prototype._get_next_token=function(e,t){var n=null;this._readWhitespace();var i=this._input.peek();return null===i?this._create_token(l.EOF,""):n=(n=(n=(n=(n=(n=(n=(n=(n=n||this._read_open_handlebars(i,t))||this._read_attribute(i,e,t))||this._read_close(i,t))||this._read_raw_content(i,e,t))||this._read_content_word(i))||this._read_comment_or_cdata(i))||this._read_processing(i))||this._read_open(i,t))||this._create_token(l.UNKNOWN,this._input.next())},h.prototype._read_comment_or_cdata=function(e){var t=null,n=null,i=null;"<"===e&&("!"===this._input.peek(1)&&((n=this.__patterns.comment.read())?(i=c.get_directives(n))&&"start"===i.ignore&&(n+=c.readIgnored(this._input)):n=this.__patterns.cdata.read()),n&&((t=this._create_token(l.COMMENT,n)).directives=i));return t},h.prototype._read_processing=function(e){var t=null,n=null;if("<"===e){var i=this._input.peek(1);"!"!==i&&"?"!==i||(n=(n=this.__patterns.conditional_comment.read())||this.__patterns.processing.read()),n&&((t=this._create_token(l.COMMENT,n)).directives=null)}return t},h.prototype._read_open=function(e,t){var n=null,i=null;return t||"<"===e&&(n=this._input.next(),"/"===this._input.peek()&&(n+=this._input.next()),n+=this.__patterns.element_name.read(),i=this._create_token(l.TAG_OPEN,n)),i},h.prototype._read_open_handlebars=function(e,t){var n=null,i=null;return t||this._options.indent_handlebars&&"{"===e&&"{"===this._input.peek(1)&&("!"===this._input.peek(2)?(n=(n=this.__patterns.handlebars_comment.read())||this.__patterns.handlebars.read(),i=this._create_token(l.COMMENT,n)):(n=this.__patterns.handlebars_open.read(),i=this._create_token(l.TAG_OPEN,n))),i},h.prototype._read_close=function(e,t){var n=null,i=null;return t&&("<"===t.text[0]&&(">"===e||"/"===e&&">"===this._input.peek(1))?(n=this._input.next(),"/"===e&&(n+=this._input.next()),i=this._create_token(l.TAG_CLOSE,n)):"{"===t.text[0]&&"}"===e&&"}"===this._input.peek(1)&&(this._input.next(),this._input.next(),i=this._create_token(l.TAG_CLOSE,"}}"))),i},h.prototype._read_attribute=function(e,t,n){var i=null,r="";if(n&&"<"===n.text[0])if("="===e)i=this._create_token(l.EQUALS,this._input.next());else if('"'===e||"'"===e){var a=this._input.next();a+='"'===e?this.__patterns.double_quote.read():this.__patterns.single_quote.read(),i=this._create_token(l.VALUE,a)}else(r=this.__patterns.attribute.read())&&(i=t.type===l.EQUALS?this._create_token(l.VALUE,r):this._create_token(l.ATTRIBUTE,r));return i},h.prototype._is_content_unformatted=function(e){return-1===this._options.void_elements.indexOf(e)&&(-1!==this._options.content_unformatted.indexOf(e)||-1!==this._options.unformatted.indexOf(e))},h.prototype._read_raw_content=function(e,t,n){var i="";if(n&&"{"===n.text[0])i=this.__patterns.handlebars_raw_close.read();else if(t.type===l.TAG_CLOSE&&"<"===t.opened.text[0]&&"/"!==t.text[0]){var r=t.opened.text.substr(1).toLowerCase();if("script"===r||"style"===r){var a=this._read_comment_or_cdata(e);if(a)return a.type=l.TEXT,a;i=this._input.readUntil(new RegExp("","ig"))}else this._is_content_unformatted(r)&&(i=this._input.readUntil(new RegExp("","ig")))}return i?this._create_token(l.TEXT,i):null},h.prototype._read_content_word=function(e){var t="";if(this._options.unformatted_content_delimiter&&e===this._options.unformatted_content_delimiter[0]&&(t=this.__patterns.unformatted_content_delimiter.read()),t||(t=this.__patterns.word.read()),t)return this._create_token(l.TEXT,t)},e.exports.Tokenizer=h,e.exports.TOKEN=l}]);gt=function(){var e={470:function(e){function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,i="",r=0,a=-1,o=0,s=0;s<=e.length;++s){if(s2){var l=i.lastIndexOf("/");if(l!==i.length-1){-1===l?(i="",r=0):r=(i=i.slice(0,l)).length-1-i.lastIndexOf("/"),a=s,o=0;continue}}else if(2===i.length||1===i.length){i="",r=0,a=s,o=0;continue}t&&(i.length>0?i+="/..":i="..",r=2)}else i.length>0?i+="/"+e.slice(a+1,s):i=e.slice(a+1,s),r=s-a-1;a=s,o=0}else 46===n&&-1!==o?++o:o=-1}return i}var i={resolve:function(){for(var e,i="",r=!1,a=arguments.length-1;a>=-1&&!r;a--){var o;a>=0?o=arguments[a]:(void 0===e&&(e=process.cwd()),o=e),t(o),0!==o.length&&(i=o+"/"+i,r=47===o.charCodeAt(0))}return i=n(i,!r),r?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(e){if(t(e),0===e.length)return".";var i=47===e.charCodeAt(0),r=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!i)).length||i||(e="."),e.length>0&&r&&(e+="/"),i?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n0&&(void 0===e?e=r:e+="/"+r)}return void 0===e?".":i.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=i.resolve(e))===(n=i.resolve(n)))return"";for(var r=1;rc){if(47===n.charCodeAt(s+d))return n.slice(s+d+1);if(0===d)return n.slice(s+d)}else o>c&&(47===e.charCodeAt(r+d)?h=d:0===d&&(h=0));break}var u=e.charCodeAt(r+d);if(u!==n.charCodeAt(s+d))break;47===u&&(h=d)}var p="";for(d=r+h+1;d<=a;++d)d!==a&&47!==e.charCodeAt(d)||(0===p.length?p+="..":p+="/..");return p.length>0?p+n.slice(s+h):(s+=h,47===n.charCodeAt(s)&&++s,n.slice(s))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),i=47===n,r=-1,a=!0,o=e.length-1;o>=1;--o)if(47===(n=e.charCodeAt(o))){if(!a){r=o;break}}else a=!1;return-1===r?i?"/":".":i&&1===r?"//":e.slice(0,r)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var i,r=0,a=-1,o=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var s=n.length-1,l=-1;for(i=e.length-1;i>=0;--i){var c=e.charCodeAt(i);if(47===c){if(!o){r=i+1;break}}else-1===l&&(o=!1,l=i+1),s>=0&&(c===n.charCodeAt(s)?-1==--s&&(a=i):(s=-1,a=l))}return r===a?a=l:-1===a&&(a=e.length),e.slice(r,a)}for(i=e.length-1;i>=0;--i)if(47===e.charCodeAt(i)){if(!o){r=i+1;break}}else-1===a&&(o=!1,a=i+1);return-1===a?"":e.slice(r,a)},extname:function(e){t(e);for(var n=-1,i=0,r=-1,a=!0,o=0,s=e.length-1;s>=0;--s){var l=e.charCodeAt(s);if(47!==l)-1===r&&(a=!1,r=s+1),46===l?-1===n?n=s:1!==o&&(o=1):-1!==n&&(o=-1);else if(!a){i=s+1;break}}return-1===n||-1===r||0===o||1===o&&n===r-1&&n===i+1?"":e.slice(n,r)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,i=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+i:n+"/"+i:i}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var i,r=e.charCodeAt(0),a=47===r;a?(n.root="/",i=1):i=0;for(var o=-1,s=0,l=-1,c=!0,h=e.length-1,d=0;h>=i;--h)if(47!==(r=e.charCodeAt(h)))-1===l&&(c=!1,l=h+1),46===r?-1===o?o=h:1!==d&&(d=1):-1!==o&&(d=-1);else if(!c){s=h+1;break}return-1===o||-1===l||0===d||1===d&&o===l-1&&o===s+1?-1!==l&&(n.base=n.name=0===s&&a?e.slice(1,l):e.slice(s,l)):(0===s&&a?(n.name=e.slice(1,o),n.base=e.slice(1,l)):(n.name=e.slice(s,o),n.base=e.slice(s,l)),n.ext=e.slice(o,l)),s>0?n.dir=e.slice(0,s-1):a&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};i.posix=i,e.exports=i},447:function(e,t,n){var i;if(n.r(t),n.d(t,{URI:function(){return m},Utils:function(){return x}}),"object"==typeof process)i="win32"===process.platform;else if("object"==typeof navigator){var r=navigator.userAgent;i=r.indexOf("Windows")>=0}var a,o,s=(a=function(e,t){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}a(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),l=/^\w[\w\d+.-]*$/,c=/^\//,h=/^\/\//,d="",u="/",p=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,m=function(){function e(e,t,n,i,r,a){void 0===a&&(a=!1),"object"==typeof e?(this.scheme=e.scheme||d,this.authority=e.authority||d,this.path=e.path||d,this.query=e.query||d,this.fragment=e.fragment||d):(this.scheme=function(e,t){return e||t?e:"file"}(e,a),this.authority=t||d,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==u&&(t=u+t):t=u}return t}(this.scheme,n||d),this.query=i||d,this.fragment=r||d,function(e,t){if(!e.scheme&&t)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}');if(e.scheme&&!l.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!c.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(h.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,a))}return e.isUri=function(t){return t instanceof e||!!t&&"string"==typeof t.authority&&"string"==typeof t.fragment&&"string"==typeof t.path&&"string"==typeof t.query&&"string"==typeof t.scheme&&"function"==typeof t.fsPath&&"function"==typeof t.with&&"function"==typeof t.toString},Object.defineProperty(e.prototype,"fsPath",{get:function(){return v(this,!1)},enumerable:!1,configurable:!0}),e.prototype.with=function(e){if(!e)return this;var t=e.scheme,n=e.authority,i=e.path,r=e.query,a=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=d),void 0===n?n=this.authority:null===n&&(n=d),void 0===i?i=this.path:null===i&&(i=d),void 0===r?r=this.query:null===r&&(r=d),void 0===a?a=this.fragment:null===a&&(a=d),t===this.scheme&&n===this.authority&&i===this.path&&r===this.query&&a===this.fragment?this:new g(t,n,i,r,a)},e.parse=function(e,t){void 0===t&&(t=!1);var n=p.exec(e);return n?new g(n[2]||d,S(n[4]||d),S(n[5]||d),S(n[7]||d),S(n[9]||d),t):new g(d,d,d,d,d)},e.file=function(e){var t=d;if(i&&(e=e.replace(/\\/g,u)),e[0]===u&&e[1]===u){var n=e.indexOf(u,2);-1===n?(t=e.substring(2),e=u):(t=e.substring(2,n),e=e.substring(n)||u)}return new g("file",t,e,d,d)},e.from=function(e){return new g(e.scheme,e.authority,e.path,e.query,e.fragment)},e.prototype.toString=function(e){return void 0===e&&(e=!1),y(this,e)},e.prototype.toJSON=function(){return this},e.revive=function(t){if(t){if(t instanceof e)return t;var n=new g(t);return n._formatted=t.external,n._fsPath=t._sep===f?t.fsPath:null,n}return t},e}(),f=i?1:void 0,g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._formatted=null,t._fsPath=null,t}return s(t,e),Object.defineProperty(t.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=v(this,!1)),this._fsPath},enumerable:!1,configurable:!0}),t.prototype.toString=function(e){return void 0===e&&(e=!1),e?y(this,!0):(this._formatted||(this._formatted=y(this,!1)),this._formatted)},t.prototype.toJSON=function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=f),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e},t}(m),b=((o={})[58]="%3A",o[47]="%2F",o[63]="%3F",o[35]="%23",o[91]="%5B",o[93]="%5D",o[64]="%40",o[33]="%21",o[36]="%24",o[38]="%26",o[39]="%27",o[40]="%28",o[41]="%29",o[42]="%2A",o[43]="%2B",o[44]="%2C",o[59]="%3B",o[61]="%3D",o[32]="%20",o);function _(e,t){for(var n=void 0,i=-1,r=0;r=97&&a<=122||a>=65&&a<=90||a>=48&&a<=57||45===a||46===a||95===a||126===a||t&&47===a)-1!==i&&(n+=encodeURIComponent(e.substring(i,r)),i=-1),void 0!==n&&(n+=e.charAt(r));else{void 0===n&&(n=e.substr(0,r));var o=b[a];void 0!==o?(-1!==i&&(n+=encodeURIComponent(e.substring(i,r)),i=-1),n+=o):-1===i&&(i=r)}}return-1!==i&&(n+=encodeURIComponent(e.substring(i))),void 0!==n?n:e}function w(e){for(var t=void 0,n=0;n1&&"file"===e.scheme?"//"+e.authority+e.path:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,i&&(n=n.replace(/\//g,"\\")),n}function y(e,t){var n=t?w:_,i="",r=e.scheme,a=e.authority,o=e.path,s=e.query,l=e.fragment;if(r&&(i+=r,i+=":"),(a||"file"===r)&&(i+=u,i+=u),a){var c=a.indexOf("@");if(-1!==c){var h=a.substr(0,c);a=a.substr(c+1),-1===(c=h.indexOf(":"))?i+=n(h,!1):(i+=n(h.substr(0,c),!1),i+=":",i+=n(h.substr(c+1),!1)),i+="@"}-1===(c=(a=a.toLowerCase()).indexOf(":"))?i+=n(a,!1):(i+=n(a.substr(0,c),!1),i+=a.substr(c))}if(o){if(o.length>=3&&47===o.charCodeAt(0)&&58===o.charCodeAt(2))(d=o.charCodeAt(1))>=65&&d<=90&&(o="/"+String.fromCharCode(d+32)+":"+o.substr(3));else if(o.length>=2&&58===o.charCodeAt(1)){var d;(d=o.charCodeAt(0))>=65&&d<=90&&(o=String.fromCharCode(d+32)+":"+o.substr(2))}i+=n(o,!0)}return s&&(i+="?",i+=n(s,!1)),l&&(i+="#",i+=t?l:_(l,!1)),i}function T(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+T(e.substr(3)):e}}var k=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function S(e){return e.match(k)?e.replace(k,(function(e){return T(e)})):e}var x,M=n(470),L=function(){for(var e=0,t=0,n=arguments.length;t" preamble found at the top of all documents. Its sole purpose is to prevent a browser from switching into so-called \u201cquirks mode\u201d when rendering a document; that is, the "" doctype ensures that the browser makes a best-effort attempt at following the relevant specifications, rather than using a different rendering mode that is incompatible with some specifications.") that governs the current document. This attribute is not needed, because it is redundant with the version information in the document type declaration.'},{name:"xmlns",description:'Specifies the XML Namespace of the document. Default value is `"http://www.w3.org/1999/xhtml"`. This is required in documents parsed with XML parsers, and optional in text/html documents.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/html"}]},{name:"head",description:{kind:"markdown",value:"The head element represents a collection of metadata for the Document."},attributes:[{name:"profile",description:"The URIs of one or more metadata profiles, separated by white space."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/head"}]},{name:"title",description:{kind:"markdown",value:"The title element represents the document's title or name. Authors should use titles that identify their documents even when they are used out of context, for example in a user's history or bookmarks, or in search results. The document's title is often different from its first heading, since the first heading does not have to stand alone when taken out of context."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/title"}]},{name:"base",description:{kind:"markdown",value:"The base element allows authors to specify the document base URL for the purposes of resolving relative URLs, and the name of the default browsing context for the purposes of following hyperlinks. The element does not represent any content beyond this information."},attributes:[{name:"href",description:{kind:"markdown",value:"The base URL to be used throughout the document for relative URL addresses. If this attribute is specified, this element must come before any other elements with attributes whose values are URLs. Absolute and relative URLs are allowed."}},{name:"target",description:{kind:"markdown",value:"A name or keyword indicating the default location to display the result when hyperlinks or forms cause navigation, for elements that do not have an explicit target reference. It is a name of, or keyword for, a _browsing context_ (for example: tab, window, or inline frame). The following keywords have special meanings:\n\n* `_self`: Load the result into the same browsing context as the current one. This value is the default if the attribute is not specified.\n* `_blank`: Load the result into a new unnamed browsing context.\n* `_parent`: Load the result into the parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\n* `_top`: Load the result into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`.\n\nIf this attribute is specified, this element must come before any other elements with attributes whose values are URLs."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/base"}]},{name:"link",description:{kind:"markdown",value:"The link element allows authors to link their document to other resources."},attributes:[{name:"href",description:{kind:"markdown",value:'This attribute specifies the [URL](https://developer.mozilla.org/en-US/docs/Glossary/URL "URL: Uniform Resource Locator (URL) is a text string specifying where a resource can be found on the Internet.") of the linked resource. A URL can be absolute or relative.'}},{name:"crossorigin",valueSet:"xo",description:{kind:"markdown",value:'This enumerated attribute indicates whether [CORS](https://developer.mozilla.org/en-US/docs/Glossary/CORS "CORS: CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.") must be used when fetching the resource. [CORS-enabled images](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_Enabled_Image) can be reused in the [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas "Use the HTML element with either the canvas scripting API or the WebGL API to draw graphics and animations.") element without being _tainted_. The allowed values are:\n\n`anonymous`\n\nA cross-origin request (i.e. with an [`Origin`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin "The Origin request header indicates where a fetch originates from. It doesn\'t include any path information, but only the server name. It is sent with CORS requests, as well as with POST requests. It is similar to the Referer header, but, unlike this header, it doesn\'t disclose the whole path.") HTTP header) is performed, but no credential is sent (i.e. no cookie, X.509 certificate, or HTTP Basic authentication). If the server does not give credentials to the origin site (by not setting the [`Access-Control-Allow-Origin`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin "The Access-Control-Allow-Origin response header indicates whether the response can be shared with requesting code from the given origin.") HTTP header) the image will be tainted and its usage restricted.\n\n`use-credentials`\n\nA cross-origin request (i.e. with an `Origin` HTTP header) is performed along with a credential sent (i.e. a cookie, certificate, and/or HTTP Basic authentication is performed). If the server does not give credentials to the origin site (through [`Access-Control-Allow-Credentials`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials "The Access-Control-Allow-Credentials response header tells browsers whether to expose the response to frontend JavaScript code when the request\'s credentials mode (Request.credentials) is "include".") HTTP header), the resource will be _tainted_ and its usage restricted.\n\nIf the attribute is not present, the resource is fetched without a [CORS](https://developer.mozilla.org/en-US/docs/Glossary/CORS "CORS: CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.") request (i.e. without sending the `Origin` HTTP header), preventing its non-tainted usage. If invalid, it is handled as if the enumerated keyword **anonymous** was used. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for additional information.'}},{name:"rel",description:{kind:"markdown",value:"This attribute names a relationship of the linked document to the current document. The attribute must be a space-separated list of the [link types values](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types)."}},{name:"media",description:{kind:"markdown",value:"This attribute specifies the media that the linked resource applies to. Its value must be a media type / [media query](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries). This attribute is mainly useful when linking to external stylesheets \u2014 it allows the user agent to pick the best adapted one for the device it runs on.\n\n**Notes:**\n\n* In HTML 4, this can only be a simple white-space-separated list of media description literals, i.e., [media types and groups](https://developer.mozilla.org/en-US/docs/Web/CSS/@media), where defined and allowed as values for this attribute, such as `print`, `screen`, `aural`, `braille`. HTML5 extended this to any kind of [media queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries), which are a superset of the allowed values of HTML 4.\n* Browsers not supporting [CSS3 Media Queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries) won't necessarily recognize the adequate link; do not forget to set fallback links, the restricted set of media queries defined in HTML 4."}},{name:"hreflang",description:{kind:"markdown",value:"This attribute indicates the language of the linked resource. It is purely advisory. Allowed values are determined by [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt). Use this attribute only if the [`href`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href) attribute is present."}},{name:"type",description:{kind:"markdown",value:'This attribute is used to define the type of the content linked to. The value of the attribute should be a MIME type such as **text/html**, **text/css**, and so on. The common use of this attribute is to define the type of stylesheet being referenced (such as **text/css**), but given that CSS is the only stylesheet language used on the web, not only is it possible to omit the `type` attribute, but is actually now recommended practice. It is also used on `rel="preload"` link types, to make sure the browser only downloads file types that it supports.'}},{name:"sizes",description:{kind:"markdown",value:"This attribute defines the sizes of the icons for visual media contained in the resource. It must be present only if the [`rel`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#attr-rel) contains a value of `icon` or a non-standard type such as Apple's `apple-touch-icon`. It may have the following values:\n\n* `any`, meaning that the icon can be scaled to any size as it is in a vector format, like `image/svg+xml`.\n* a white-space separated list of sizes, each in the format `__x__` or `__X__`. Each of these sizes must be contained in the resource.\n\n**Note:** Most icon formats are only able to store one single icon; therefore most of the time the [`sizes`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-sizes) contains only one entry. MS's ICO format does, as well as Apple's ICNS. ICO is more ubiquitous; you should definitely use it."}},{name:"as",description:'This attribute is only used when `rel="preload"` or `rel="prefetch"` has been set on the `` element. It specifies the type of content being loaded by the ``, which is necessary for content prioritization, request matching, application of correct [content security policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP), and setting of correct [`Accept`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept "The Accept request HTTP header advertises which content types, expressed as MIME types, the client is able to understand. Using content negotiation, the server then selects one of the proposals, uses it and informs the client of its choice with the Content-Type response header. Browsers set adequate values for this header depending on\xa0the context where the request is done: when fetching a CSS stylesheet a different value is set for the request than when fetching an image,\xa0video or a script.") request header.'},{name:"importance",description:"Indicates the relative importance of the resource. Priority hints are delegated using the values:"},{name:"importance",description:'**`auto`**: Indicates\xa0**no\xa0preference**. The browser may use its own heuristics to decide the priority of the resource.\n\n**`high`**: Indicates to the\xa0browser\xa0that the resource is of\xa0**high** priority.\n\n**`low`**:\xa0Indicates to the\xa0browser\xa0that the resource is of\xa0**low** priority.\n\n**Note:** The `importance` attribute may only be used for the `` element if `rel="preload"` or `rel="prefetch"` is present.'},{name:"integrity",description:"Contains inline metadata \u2014 a base64-encoded cryptographic hash of the resource (file) you\u2019re telling the browser to fetch. The browser can use this to verify that the fetched resource has been delivered free of unexpected manipulation. See [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity)."},{name:"referrerpolicy",description:'A string indicating which referrer to use when fetching the resource:\n\n* `no-referrer` means that the [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer "The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.") header will not be sent.\n* `no-referrer-when-downgrade` means that no [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer "The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.") header will be sent when navigating to an origin without TLS (HTTPS). This is a user agent\u2019s default behavior, if no policy is otherwise specified.\n* `origin` means that the referrer will be the origin of the page, which is roughly the scheme, the host, and the port.\n* `origin-when-cross-origin` means that navigating to other origins will be limited to the scheme, the host, and the port, while navigating on the same origin will include the referrer\'s path.\n* `unsafe-url` means that the referrer will include the origin and the path (but not the fragment, password, or username). This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins.'},{name:"title",description:'The `title` attribute has special semantics on the `` element. When used on a `` it defines a [preferred or an alternate stylesheet](https://developer.mozilla.org/en-US/docs/Web/CSS/Alternative_style_sheets). Incorrectly using it may [cause the stylesheet to be ignored](https://developer.mozilla.org/en-US/docs/Correctly_Using_Titles_With_External_Stylesheets).'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/link"}]},{name:"meta",description:{kind:"markdown",value:"The meta element represents various kinds of metadata that cannot be expressed using the title, base, link, style, and script elements."},attributes:[{name:"name",description:{kind:"markdown",value:'This attribute defines the name of a piece of document-level metadata. It should not be set if one of the attributes [`itemprop`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-itemprop), [`http-equiv`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-http-equiv) or [`charset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) is also set.\n\nThis metadata name is associated with the value contained by the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute. The possible values for the name attribute are:\n\n* `application-name` which defines the name of the application running in the web page.\n \n **Note:**\n \n * Browsers may use this to identify the application. It is different from the [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title "The HTML Title element (<title>) defines the document\'s title that is shown in a browser\'s title bar or a page\'s tab.") element, which usually contain the application name, but may also contain information like the document name or a status.\n * Simple web pages shouldn\'t define an application-name.\n \n* `author` which defines the name of the document\'s author.\n* `description` which contains a short and accurate summary of the content of the page. Several browsers, like Firefox and Opera, use this as the default description of bookmarked pages.\n* `generator` which contains the identifier of the software that generated the page.\n* `keywords` which contains words relevant to the page\'s content separated by commas.\n* `referrer` which controls the [`Referer` HTTP header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer) attached to requests sent from the document:\n \n Values for the `content` attribute of `<meta name="referrer">`\n \n `no-referrer`\n \n Do not send a HTTP `Referrer` header.\n \n `origin`\n \n Send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) of the document.\n \n `no-referrer-when-downgrade`\n \n Send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) as a referrer to URLs as secure as the current page, (https\u2192https), but does not send a referrer to less secure URLs (https\u2192http). This is the default behaviour.\n \n `origin-when-cross-origin`\n \n Send the full URL (stripped of parameters) for same-origin requests, but only send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) for other cases.\n \n `same-origin`\n \n A referrer will be sent for [same-site origins](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy), but cross-origin requests will contain no referrer information.\n \n `strict-origin`\n \n Only send the origin of the document as the referrer to a-priori as-much-secure destination (HTTPS->HTTPS), but don\'t send it to a less secure destination (HTTPS->HTTP).\n \n `strict-origin-when-cross-origin`\n \n Send a full URL when performing a same-origin request, only send the origin of the document to a-priori as-much-secure destination (HTTPS->HTTPS), and send no header to a less secure destination (HTTPS->HTTP).\n \n `unsafe-URL`\n \n Send the full URL (stripped of parameters) for same-origin or cross-origin requests.\n \n **Notes:**\n \n * Some browsers support the deprecated values of `always`, `default`, and `never` for referrer.\n * Dynamically inserting `<meta name="referrer">` (with [`document.write`](https://developer.mozilla.org/en-US/docs/Web/API/Document/write) or [`appendChild`](https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild)) makes the referrer behaviour unpredictable.\n * When several conflicting policies are defined, the no-referrer policy is applied.\n \n\nThis attribute may also have a value taken from the extended list defined on [WHATWG Wiki MetaExtensions page](https://wiki.whatwg.org/wiki/MetaExtensions). Although none have been formally accepted yet, a few commonly used names are:\n\n* `creator` which defines the name of the creator of the document, such as an organization or institution. If there are more than one, several [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta "The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.") elements should be used.\n* `googlebot`, a synonym of `robots`, is only followed by Googlebot (the indexing crawler for Google).\n* `publisher` which defines the name of the document\'s publisher.\n* `robots` which defines the behaviour that cooperative crawlers, or "robots", should use with the page. It is a comma-separated list of the values below:\n \n Values for the content of `<meta name="robots">`\n \n Value\n \n Description\n \n Used by\n \n `index`\n \n Allows the robot to index the page (default).\n \n All\n \n `noindex`\n \n Requests the robot to not index the page.\n \n All\n \n `follow`\n \n Allows the robot to follow the links on the page (default).\n \n All\n \n `nofollow`\n \n Requests the robot to not follow the links on the page.\n \n All\n \n `none`\n \n Equivalent to `noindex, nofollow`\n \n [Google](https://support.google.com/webmasters/answer/79812)\n \n `noodp`\n \n Prevents using the [Open Directory Project](https://www.dmoz.org/) description, if any, as the page description in search engine results.\n \n [Google](https://support.google.com/webmasters/answer/35624#nodmoz), [Yahoo](https://help.yahoo.com/kb/search-for-desktop/meta-tags-robotstxt-yahoo-search-sln2213.html#cont5), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n \n `noarchive`\n \n Requests the search engine not to cache the page content.\n \n [Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives), [Yahoo](https://help.yahoo.com/kb/search-for-desktop/SLN2213.html), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n \n `nosnippet`\n \n Prevents displaying any description of the page in search engine results.\n \n [Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n \n `noimageindex`\n \n Requests this page not to appear as the referring page of an indexed image.\n \n [Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives)\n \n `nocache`\n \n Synonym of `noarchive`.\n \n [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n \n **Notes:**\n \n * Only cooperative robots follow these rules. Do not expect to prevent e-mail harvesters with them.\n * The robot still needs to access the page in order to read these rules. To prevent bandwidth consumption, use a _[robots.txt](https://developer.mozilla.org/en-US/docs/Glossary/robots.txt "robots.txt: Robots.txt is a file which is usually placed in the root of any website. It decides whether\xa0crawlers are permitted or forbidden access to the web site.")_ file.\n * If you want to remove a page, `noindex` will work, but only after the robot visits the page again. Ensure that the `robots.txt` file is not preventing revisits.\n * Some values are mutually exclusive, like `index` and `noindex`, or `follow` and `nofollow`. In these cases the robot\'s behaviour is undefined and may vary between them.\n * Some crawler robots, like Google, Yahoo and Bing, support the same values for the HTTP header `X-Robots-Tag`; this allows non-HTML documents like images to use these rules.\n \n* `slurp`, is a synonym of `robots`, but only for Slurp - the crawler for Yahoo Search.\n* `viewport`, which gives hints about the size of the initial size of the [viewport](https://developer.mozilla.org/en-US/docs/Glossary/viewport "viewport: A viewport represents a polygonal (normally rectangular) area in computer graphics that is currently being viewed. In web browser terms, it refers to the part of the document you\'re viewing which is currently visible in its window (or the screen, if the document is being viewed in full screen mode). Content outside the viewport is not visible onscreen until scrolled into view."). Used by mobile devices only.\n \n Values for the content of `<meta name="viewport">`\n \n Value\n \n Possible subvalues\n \n Description\n \n `width`\n \n A positive integer number, or the text `device-width`\n \n Defines the pixel width of the viewport that you want the web site to be rendered at.\n \n `height`\n \n A positive integer, or the text `device-height`\n \n Defines the height of the viewport. Not used by any browser.\n \n `initial-scale`\n \n A positive number between `0.0` and `10.0`\n \n Defines the ratio between the device width (`device-width` in portrait mode or `device-height` in landscape mode) and the viewport size.\n \n `maximum-scale`\n \n A positive number between `0.0` and `10.0`\n \n Defines the maximum amount to zoom in. It must be greater or equal to the `minimum-scale` or the behaviour is undefined. Browser settings can ignore this rule and iOS10+ ignores it by default.\n \n `minimum-scale`\n \n A positive number between `0.0` and `10.0`\n \n Defines the minimum zoom level. It must be smaller or equal to the `maximum-scale` or the behaviour is undefined. Browser settings can ignore this rule and iOS10+ ignores it by default.\n \n `user-scalable`\n \n `yes` or `no`\n \n If set to `no`, the user is not able to zoom in the webpage. The default is `yes`. Browser settings can ignore this rule, and iOS10+ ignores it by default.\n \n Specification\n \n Status\n \n Comment\n \n [CSS Device Adaptation \n The definition of \'<meta name="viewport">\' in that specification.](https://drafts.csswg.org/css-device-adapt/#viewport-meta)\n \n Working Draft\n \n Non-normatively describes the Viewport META element\n \n See also: [`@viewport`](https://developer.mozilla.org/en-US/docs/Web/CSS/@viewport "The @viewport CSS at-rule lets you configure the viewport through which the document is viewed. It\'s primarily used for mobile devices, but is also used by desktop browsers that support features like "snap to edge" (such as Microsoft Edge).")\n \n **Notes:**\n \n * Though unstandardized, this declaration is respected by most mobile browsers due to de-facto dominance.\n * The default values may vary between devices and browsers.\n * To learn about this declaration in Firefox for Mobile, see [this article](https://developer.mozilla.org/en-US/docs/Mobile/Viewport_meta_tag "Mobile/Viewport meta tag").'}},{name:"http-equiv",description:{kind:"markdown",value:'Defines a pragma directive. The attribute is named `**http-equiv**(alent)` because all the allowed values are names of particular HTTP headers:\n\n* `"content-language"` \n Defines the default language of the page. It can be overridden by the [lang](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang) attribute on any element.\n \n **Warning:** Do not use this value, as it is obsolete. Prefer the `lang` attribute on the [`<html>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/html "The HTML <html> element represents the root (top-level element) of an HTML document, so it is also referred to as the root element. All other elements must be descendants of this element.") element.\n \n* `"content-security-policy"` \n Allows page authors to define a [content policy](https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives) for the current page. Content policies mostly specify allowed server origins and script endpoints which help guard against cross-site scripting attacks.\n* `"content-type"` \n Defines the [MIME type](https://developer.mozilla.org/en-US/docs/Glossary/MIME_type) of the document, followed by its character encoding. It follows the same syntax as the HTTP `content-type` entity-header field, but as it is inside a HTML page, most values other than `text/html` are impossible. Therefore the valid syntax for its `content` is the string \'`text/html`\' followed by a character set with the following syntax: \'`; charset=_IANAcharset_`\', where `IANAcharset` is the _preferred MIME name_ for a character set as [defined by the IANA.](https://www.iana.org/assignments/character-sets)\n \n **Warning:** Do not use this value, as it is obsolete. Use the [`charset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) attribute on the [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta "The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.") element.\n \n **Note:** As [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta "The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.") can\'t change documents\' types in XHTML or HTML5\'s XHTML serialization, never set the MIME type to an XHTML MIME type with `<meta>`.\n \n* `"refresh"` \n This instruction specifies:\n * The number of seconds until the page should be reloaded - only if the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute contains a positive integer.\n * The number of seconds until the page should redirect to another - only if the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute contains a positive integer followed by the string \'`;url=`\', and a valid URL.\n* `"set-cookie"` \n Defines a [cookie](https://developer.mozilla.org/en-US/docs/cookie) for the page. Its content must follow the syntax defined in the [IETF HTTP Cookie Specification](https://tools.ietf.org/html/draft-ietf-httpstate-cookie-14).\n \n **Warning:** Do not use this instruction, as it is obsolete. Use the HTTP header [`Set-Cookie`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) instead.'}},{name:"content",description:{kind:"markdown",value:"This attribute contains the value for the [`http-equiv`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-http-equiv) or [`name`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-name) attribute, depending on which is used."}},{name:"charset",description:{kind:"markdown",value:'This attribute declares the page\'s character encoding. It must contain a [standard IANA MIME name for character encodings](https://www.iana.org/assignments/character-sets). Although the standard doesn\'t request a specific encoding, it suggests:\n\n* Authors are encouraged to use [`UTF-8`](https://developer.mozilla.org/en-US/docs/Glossary/UTF-8).\n* Authors should not use ASCII-incompatible encodings to avoid security risk: browsers not supporting them may interpret harmful content as HTML. This happens with the `JIS_C6226-1983`, `JIS_X0212-1990`, `HZ-GB-2312`, `JOHAB`, the ISO-2022 family and the EBCDIC family.\n\n**Note:** ASCII-incompatible encodings are those that don\'t map the 8-bit code points `0x20` to `0x7E` to the `0x0020` to `0x007E` Unicode code points)\n\n* Authors **must not** use `CESU-8`, `UTF-7`, `BOCU-1` and/or `SCSU` as [cross-site scripting](https://developer.mozilla.org/en-US/docs/Glossary/Cross-site_scripting) attacks with these encodings have been demonstrated.\n* Authors should not use `UTF-32` because not all HTML5 encoding algorithms can distinguish it from `UTF-16`.\n\n**Notes:**\n\n* The declared character encoding must match the one the page was saved with to avoid garbled characters and security holes.\n* The [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta "The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.") element declaring the encoding must be inside the [`<head>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head "The HTML <head> element provides general information (metadata) about the document, including its title and links to its\xa0scripts and style sheets.") element and **within the first 1024 bytes** of the HTML as some browsers only look at those bytes before choosing an encoding.\n* This [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta "The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.") element is only one part of the [algorithm to determine a page\'s character set](https://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#encoding-sniffing-algorithm "Algorithm charset page"). The [`Content-Type` header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type) and any [Byte-Order Marks](https://developer.mozilla.org/en-US/docs/Glossary/Byte-Order_Mark "The definition of that term (Byte-Order Marks) has not been written yet; please consider contributing it!") override this element.\n* It is strongly recommended to define the character encoding. If a page\'s encoding is undefined, cross-scripting techniques are possible, such as the [`UTF-7` fallback cross-scripting technique](https://code.google.com/p/doctype-mirror/wiki/ArticleUtf7).\n* The [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta "The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.") element with a `charset` attribute is a synonym for the pre-HTML5 `<meta http-equiv="Content-Type" content="text/html; charset=_IANAcharset_">`, where _`IANAcharset`_ contains the value of the equivalent [`charset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) attribute. This syntax is still allowed, although no longer recommended.'}},{name:"scheme",description:"This attribute defines the scheme in which metadata is described. A scheme is a context leading to the correct interpretations of the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) value, like a format.\n\n**Warning:** Do not use this value, as it is obsolete. There is no replacement as there was no real usage for it."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/meta"}]},{name:"style",description:{kind:"markdown",value:"The style element allows authors to embed style information in their documents. The style element is one of several inputs to the styling processing model. The element does not represent content for the user."},attributes:[{name:"media",description:{kind:"markdown",value:"This attribute defines which media the style should be applied to. Its value is a [media query](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries), which defaults to `all` if the attribute is missing."}},{name:"nonce",description:{kind:"markdown",value:"A cryptographic nonce (number used once) used to whitelist inline styles in a [style-src Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src). The server must generate a unique nonce value each time it transmits a policy. It is critical to provide a nonce that cannot be guessed as bypassing a resource\u2019s policy is otherwise trivial."}},{name:"type",description:{kind:"markdown",value:"This attribute defines the styling language as a MIME type (charset should not be specified). This attribute is optional and defaults to `text/css` if it is not specified \u2014 there is very little reason to include this in modern web documents."}},{name:"scoped",valueSet:"v"},{name:"title",description:"This attribute specifies [alternative style sheet](https://developer.mozilla.org/en-US/docs/Web/CSS/Alternative_style_sheets) sets."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/style"}]},{name:"body",description:{kind:"markdown",value:"The body element represents the content of the document."},attributes:[{name:"onafterprint",description:{kind:"markdown",value:"Function to call after the user has printed the document."}},{name:"onbeforeprint",description:{kind:"markdown",value:"Function to call when the user requests printing of the document."}},{name:"onbeforeunload",description:{kind:"markdown",value:"Function to call when the document is about to be unloaded."}},{name:"onhashchange",description:{kind:"markdown",value:"Function to call when the fragment identifier part (starting with the hash (`'#'`) character) of the document's current address has changed."}},{name:"onlanguagechange",description:{kind:"markdown",value:"Function to call when the preferred languages changed."}},{name:"onmessage",description:{kind:"markdown",value:"Function to call when the document has received a message."}},{name:"onoffline",description:{kind:"markdown",value:"Function to call when network communication has failed."}},{name:"ononline",description:{kind:"markdown",value:"Function to call when network communication has been restored."}},{name:"onpagehide"},{name:"onpageshow"},{name:"onpopstate",description:{kind:"markdown",value:"Function to call when the user has navigated session history."}},{name:"onstorage",description:{kind:"markdown",value:"Function to call when the storage area has changed."}},{name:"onunload",description:{kind:"markdown",value:"Function to call when the document is going away."}},{name:"alink",description:'Color of text for hyperlinks when selected. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color "The color CSS property sets the foreground color value of an element\'s text and text decorations, and sets the currentcolor value.") property in conjunction with the [`:active`](https://developer.mozilla.org/en-US/docs/Web/CSS/:active "The :active CSS pseudo-class represents an element (such as a button) that is being activated by the user.") pseudo-class instead._'},{name:"background",description:'URI of a image to use as a background. _This method is non-conforming, use CSS [`background`](https://developer.mozilla.org/en-US/docs/Web/CSS/background "The background shorthand CSS property sets all background style properties at once, such as color, image, origin and size, or repeat method.") property on the element instead._'},{name:"bgcolor",description:'Background color for the document. _This method is non-conforming, use CSS [`background-color`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color "The background-color CSS property sets the background color of an element.") property on the element instead._'},{name:"bottommargin",description:'The margin of the bottom of the body. _This method is non-conforming, use CSS [`margin-bottom`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-bottom "The margin-bottom CSS property sets the margin area on the bottom of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") property on the element instead._'},{name:"leftmargin",description:'The margin of the left of the body. _This method is non-conforming, use CSS [`margin-left`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left "The margin-left CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") property on the element instead._'},{name:"link",description:'Color of text for unvisited hypertext links. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color "The color CSS property sets the foreground color value of an element\'s text and text decorations, and sets the currentcolor value.") property in conjunction with the [`:link`](https://developer.mozilla.org/en-US/docs/Web/CSS/:link "The :link CSS pseudo-class represents an element that has not yet been visited. It matches every unvisited <a>, <area>, or <link> element that has an href attribute.") pseudo-class instead._'},{name:"onblur",description:"Function to call when the document loses focus."},{name:"onerror",description:"Function to call when the document fails to load properly."},{name:"onfocus",description:"Function to call when the document receives focus."},{name:"onload",description:"Function to call when the document has finished loading."},{name:"onredo",description:"Function to call when the user has moved forward in undo transaction history."},{name:"onresize",description:"Function to call when the document has been resized."},{name:"onundo",description:"Function to call when the user has moved backward in undo transaction history."},{name:"rightmargin",description:'The margin of the right of the body. _This method is non-conforming, use CSS [`margin-right`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right "The margin-right CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") property on the element instead._'},{name:"text",description:'Foreground color of text. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color "The color CSS property sets the foreground color value of an element\'s text and text decorations, and sets the currentcolor value.") property on the element instead._'},{name:"topmargin",description:'The margin of the top of the body. _This method is non-conforming, use CSS [`margin-top`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-top "The margin-top CSS property sets the margin area on the top of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") property on the element instead._'},{name:"vlink",description:'Color of text for visited hypertext links. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color "The color CSS property sets the foreground color value of an element\'s text and text decorations, and sets the currentcolor value.") property in conjunction with the [`:visited`](https://developer.mozilla.org/en-US/docs/Web/CSS/:visited "The :visited CSS pseudo-class represents links that the user has already visited. For privacy reasons, the styles that can be modified using this selector are very limited.") pseudo-class instead._'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/body"}]},{name:"article",description:{kind:"markdown",value:"The article element represents a complete, or self-contained, composition in a document, page, application, or site and that is, in principle, independently distributable or reusable, e.g. in syndication. This could be a forum post, a magazine or newspaper article, a blog entry, a user-submitted comment, an interactive widget or gadget, or any other independent item of content. Each article should be identified, typically by including a heading (h1\u2013h6 element) as a child of the article element."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/article"}]},{name:"section",description:{kind:"markdown",value:"The section element represents a generic section of a document or application. A section, in this context, is a thematic grouping of content. Each section should be identified, typically by including a heading ( h1- h6 element) as a child of the section element."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/section"}]},{name:"nav",description:{kind:"markdown",value:"The nav element represents a section of a page that links to other pages or to parts within the page: a section with navigation links."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/nav"}]},{name:"aside",description:{kind:"markdown",value:"The aside element represents a section of a page that consists of content that is tangentially related to the content around the aside element, and which could be considered separate from that content. Such sections are often represented as sidebars in printed typography."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/aside"}]},{name:"h1",description:{kind:"markdown",value:"The h1 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"h2",description:{kind:"markdown",value:"The h2 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"h3",description:{kind:"markdown",value:"The h3 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"h4",description:{kind:"markdown",value:"The h4 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"h5",description:{kind:"markdown",value:"The h5 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"h6",description:{kind:"markdown",value:"The h6 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"header",description:{kind:"markdown",value:"The header element represents introductory content for its nearest ancestor sectioning content or sectioning root element. A header typically contains a group of introductory or navigational aids. When the nearest ancestor sectioning content or sectioning root element is the body element, then it applies to the whole page."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/header"}]},{name:"footer",description:{kind:"markdown",value:"The footer element represents a footer for its nearest ancestor sectioning content or sectioning root element. A footer typically contains information about its section such as who wrote it, links to related documents, copyright data, and the like."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/footer"}]},{name:"address",description:{kind:"markdown",value:"The address element represents the contact information for its nearest article or body element ancestor. If that is the body element, then the contact information applies to the document as a whole."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/address"}]},{name:"p",description:{kind:"markdown",value:"The p element represents a paragraph."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/p"}]},{name:"hr",description:{kind:"markdown",value:"The hr element represents a paragraph-level thematic break, e.g. a scene change in a story, or a transition to another topic within a section of a reference book."},attributes:[{name:"align",description:"Sets the alignment of the rule on the page. If no value is specified, the default value is `left`."},{name:"color",description:"Sets the color of the rule through color name or hexadecimal value."},{name:"noshade",description:"Sets the rule to have no shading."},{name:"size",description:"Sets the height, in pixels, of the rule."},{name:"width",description:"Sets the length of the rule on the page through a pixel or percentage value."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/hr"}]},{name:"pre",description:{kind:"markdown",value:"The pre element represents a block of preformatted text, in which structure is represented by typographic conventions rather than by elements."},attributes:[{name:"cols",description:'Contains the _preferred_ count of characters that a line should have. It was a non-standard synonym of [`width`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre#attr-width). To achieve such an effect, use CSS [`width`](https://developer.mozilla.org/en-US/docs/Web/CSS/width "The width CSS property sets an element\'s width. By default it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.") instead.'},{name:"width",description:'Contains the _preferred_ count of characters that a line should have. Though technically still implemented, this attribute has no visual effect; to achieve such an effect, use CSS [`width`](https://developer.mozilla.org/en-US/docs/Web/CSS/width "The width CSS property sets an element\'s width. By default it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.") instead.'},{name:"wrap",description:'Is a _hint_ indicating how the overflow must happen. In modern browser this hint is ignored and no visual effect results in its present; to achieve such an effect, use CSS [`white-space`](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space "The white-space CSS property sets how white space inside an element is handled.") instead.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/pre"}]},{name:"blockquote",description:{kind:"markdown",value:"The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a footer or cite element, and optionally with in-line changes such as annotations and abbreviations."},attributes:[{name:"cite",description:{kind:"markdown",value:"A URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/blockquote"}]},{name:"ol",description:{kind:"markdown",value:"The ol element represents a list of items, where the items have been intentionally ordered, such that changing the order would change the meaning of the document."},attributes:[{name:"reversed",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute specifies that the items of the list are specified in reversed order."}},{name:"start",description:{kind:"markdown",value:'This integer attribute specifies the start value for numbering the individual list items. Although the ordering type of list elements might be Roman numerals, such as XXXI, or letters, the value of start is always represented as a number. To start numbering elements from the letter "C", use `<ol start="3">`.\n\n**Note**: This attribute was deprecated in HTML4, but reintroduced in HTML5.'}},{name:"type",valueSet:"lt",description:{kind:"markdown",value:"Indicates the numbering type:\n\n* `'a'` indicates lowercase letters,\n* `'A'` indicates uppercase letters,\n* `'i'` indicates lowercase Roman numerals,\n* `'I'` indicates uppercase Roman numerals,\n* and `'1'` indicates numbers (default).\n\nThe type set is used for the entire list unless a different [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li#attr-type) attribute is used within an enclosed [`<li>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li \"The HTML <li> element is used to represent an item in a list. It must be contained in a parent element: an ordered list (<ol>), an unordered list (<ul>), or a menu (<menu>). In menus and unordered lists, list items are usually displayed using bullet points. In ordered lists, they are usually displayed with an ascending counter on the left, such as a number or letter.\") element.\n\n**Note:** This attribute was deprecated in HTML4, but reintroduced in HTML5.\n\nUnless the value of the list number matters (e.g. in legal or technical documents where items are to be referenced by their number/letter), the CSS [`list-style-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type \"The list-style-type CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element.\") property should be used instead."}},{name:"compact",description:'This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the user agent and it doesn\'t work in all browsers.\n\n**Warning:** Do not use this attribute, as it has been deprecated: the [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol "The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To give an effect similar to the `compact` attribute, the [CSS](https://developer.mozilla.org/en-US/docs/CSS) property [`line-height`](https://developer.mozilla.org/en-US/docs/Web/CSS/line-height "The line-height CSS property sets the amount of space used for lines, such as in text. On block-level elements, it specifies the minimum height of line boxes within the element. On non-replaced inline elements, it specifies the height that is used to calculate line box height.") can be used with a value of `80%`.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/ol"}]},{name:"ul",description:{kind:"markdown",value:"The ul element represents a list of items, where the order of the items is not important \u2014 that is, where changing the order would not materially change the meaning of the document."},attributes:[{name:"compact",description:'This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the user agent and it doesn\'t work in all browsers.\n\n**Usage note:\xa0**Do not use this attribute, as it has been deprecated: the [`<ul>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul "The HTML <ul> element represents an unordered list of items, typically rendered as a bulleted list.") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To give a similar effect as the `compact` attribute, the [CSS](https://developer.mozilla.org/en-US/docs/CSS) property [line-height](https://developer.mozilla.org/en-US/docs/CSS/line-height) can be used with a value of `80%`.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/ul"}]},{name:"li",description:{kind:"markdown",value:"The li element represents a list item. If its parent element is an ol, ul, or menu element, then the element is an item of the parent element's list, as defined for those elements. Otherwise, the list item has no defined list-related relationship to any other li element."},attributes:[{name:"value",description:{kind:"markdown",value:'This integer attribute indicates the current ordinal value of the list item as defined by the [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol "The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.") element. The only allowed value for this attribute is a number, even if the list is displayed with Roman numerals or letters. List items that follow this one continue numbering from the value set. The **value** attribute has no meaning for unordered lists ([`<ul>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul "The HTML <ul> element represents an unordered list of items, typically rendered as a bulleted list.")) or for menus ([`<menu>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu "The HTML <menu> element represents a group of commands that a user can perform or activate. This includes both list menus, which might appear across the top of a screen, as well as context menus, such as those that might appear underneath a button after it has been clicked.")).\n\n**Note**: This attribute was deprecated in HTML4, but reintroduced in HTML5.\n\n**Note:** Prior to Gecko\xa09.0, negative values were incorrectly converted to 0. Starting in Gecko\xa09.0 all integer values are correctly parsed.'}},{name:"type",description:'This character attribute indicates the numbering type:\n\n* `a`: lowercase letters\n* `A`: uppercase letters\n* `i`: lowercase Roman numerals\n* `I`: uppercase Roman numerals\n* `1`: numbers\n\nThis type overrides the one used by its parent [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol "The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.") element, if any.\n\n**Usage note:** This attribute has been deprecated: use the CSS [`list-style-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type "The list-style-type CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element.") property instead.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/li"}]},{name:"dl",description:{kind:"markdown",value:"The dl element represents an association list consisting of zero or more name-value groups (a description list). A name-value group consists of one or more names (dt elements) followed by one or more values (dd elements), ignoring any nodes other than dt and dd elements. Within a single dl element, there should not be more than one dt element for each name."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/dl"}]},{name:"dt",description:{kind:"markdown",value:"The dt element represents the term, or name, part of a term-description group in a description list (dl element)."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/dt"}]},{name:"dd",description:{kind:"markdown",value:"The dd element represents the description, definition, or value, part of a term-description group in a description list (dl element)."},attributes:[{name:"nowrap",description:"If the value of this attribute is set to `yes`, the definition text will not wrap. The default value is `no`."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/dd"}]},{name:"figure",description:{kind:"markdown",value:"The figure element represents some flow content, optionally with a caption, that is self-contained (like a complete sentence) and is typically referenced as a single unit from the main flow of the document."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/figure"}]},{name:"figcaption",description:{kind:"markdown",value:"The figcaption element represents a caption or legend for the rest of the contents of the figcaption element's parent figure element, if any."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/figcaption"}]},{name:"main",description:{kind:"markdown",value:"The main element represents the main content of the body of a document or application. The main content area consists of content that is directly related to or expands upon the central topic of a document or central functionality of an application."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/main"}]},{name:"div",description:{kind:"markdown",value:"The div element has no special meaning at all. It represents its children. It can be used with the class, lang, and title attributes to mark up semantics common to a group of consecutive elements."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/div"}]},{name:"a",description:{kind:"markdown",value:"If the a element has an href attribute, then it represents a hyperlink (a hypertext anchor) labeled by its contents."},attributes:[{name:"href",description:{kind:"markdown",value:"Contains a URL or a URL fragment that the hyperlink points to."}},{name:"target",description:{kind:"markdown",value:'Specifies where to display the linked URL. It is a name of, or keyword for, a _browsing context_: a tab, window, or `<iframe>`. The following keywords have special meanings:\n\n* `_self`: Load the URL into the same browsing context as the current one. This is the default behavior.\n* `_blank`: Load the URL into a new browsing context. This is usually a tab, but users can configure browsers to use new windows instead.\n* `_parent`: Load the URL into the parent browsing context of the current one. If there is no parent, this behaves the same way as `_self`.\n* `_top`: Load the URL into the top-level browsing context (that is, the "highest" browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this behaves the same way as `_self`.\n\n**Note:** When using `target`, consider adding `rel="noreferrer"` to avoid exploitation of the `window.opener` API.\n\n**Note:** Linking to another page using `target="_blank"` will run the new page on the same process as your page. If the new page is executing expensive JS, your page\'s performance may suffer. To avoid this use `rel="noopener"`.'}},{name:"download",description:{kind:"markdown",value:"This attribute instructs browsers to download a URL instead of navigating to it, so the user will be prompted to save it as a local file. If the attribute has a value, it is used as the pre-filled file name in the Save prompt (the user can still change the file name if they want). There are no restrictions on allowed values, though `/` and `\\` are converted to underscores. Most file systems limit some punctuation in file names, and browsers will adjust the suggested name accordingly.\n\n**Notes:**\n\n* This attribute only works for [same-origin URLs](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy).\n* Although HTTP(s) URLs need to be in the same-origin, [`blob:` URLs](https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL) and [`data:` URLs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) are allowed so that content generated by JavaScript, such as pictures created in an image-editor Web app, can be downloaded.\n* If the HTTP header [`Content-Disposition:`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) gives a different filename than this attribute, the HTTP header takes priority over this attribute.\n* If `Content-Disposition:` is set to `inline`, Firefox prioritizes `Content-Disposition`, like the filename case, while Chrome prioritizes the `download` attribute."}},{name:"ping",description:{kind:"markdown",value:'Contains a space-separated list of URLs to which, when the hyperlink is followed, [`POST`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST "The HTTP POST method sends data to the server. The type of the body of the request is indicated by the Content-Type header.") requests with the body `PING` will be sent by the browser (in the background). Typically used for tracking.'}},{name:"rel",description:{kind:"markdown",value:"Specifies the relationship of the target object to the link object. The value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types)."}},{name:"hreflang",description:{kind:"markdown",value:'This attribute indicates the human language of the linked resource. It is purely advisory, with no built-in functionality. Allowed values are determined by [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt "Tags for Identifying Languages").'}},{name:"type",description:{kind:"markdown",value:'Specifies the media type in the form of a [MIME type](https://developer.mozilla.org/en-US/docs/Glossary/MIME_type "MIME type: A\xa0MIME type\xa0(now properly called "media type", but\xa0also sometimes "content type") is a string sent along\xa0with a file indicating the type of the file (describing the content format, for example, a sound file might be labeled\xa0audio/ogg, or an image file\xa0image/png).") for the linked URL. It is purely advisory, with no built-in functionality.'}},{name:"referrerpolicy",description:"Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer) to send when fetching the URL:\n\n* `'no-referrer'` means the `Referer:` header will not be sent.\n* `'no-referrer-when-downgrade'` means no `Referer:` header will be sent when navigating to an origin without HTTPS. This is the default behavior.\n* `'origin'` means the referrer will be the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) of the page, not including information after the domain.\n* `'origin-when-cross-origin'` meaning that navigations to other origins will be limited to the scheme, the host and the port, while navigations on the same origin will include the referrer's path.\n* `'strict-origin-when-cross-origin'`\n* `'unsafe-url'` means the referrer will include the origin and path, but not the fragment, password, or username. This is unsafe because it can leak data from secure URLs to insecure ones."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/a"}]},{name:"em",description:{kind:"markdown",value:"The em element represents stress emphasis of its contents."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/em"}]},{name:"strong",description:{kind:"markdown",value:"The strong element represents strong importance, seriousness, or urgency for its contents."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/strong"}]},{name:"small",description:{kind:"markdown",value:"The small element represents side comments such as small print."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/small"}]},{name:"s",description:{kind:"markdown",value:"The s element represents contents that are no longer accurate or no longer relevant."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/s"}]},{name:"cite",description:{kind:"markdown",value:"The cite element represents a reference to a creative work. It must include the title of the work or the name of the author(person, people or organization) or an URL reference, or a reference in abbreviated form as per the conventions used for the addition of citation metadata."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/cite"}]},{name:"q",description:{kind:"markdown",value:"The q element represents some phrasing content quoted from another source."},attributes:[{name:"cite",description:{kind:"markdown",value:"The value of this attribute is a URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/q"}]},{name:"dfn",description:{kind:"markdown",value:"The dfn element represents the defining instance of a term. The paragraph, description list group, or section that is the nearest ancestor of the dfn element must also contain the definition(s) for the term given by the dfn element."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/dfn"}]},{name:"abbr",description:{kind:"markdown",value:"The abbr element represents an abbreviation or acronym, optionally with its expansion. The title attribute may be used to provide an expansion of the abbreviation. The attribute, if specified, must contain an expansion of the abbreviation, and nothing else."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/abbr"}]},{name:"ruby",description:{kind:"markdown",value:"The ruby element allows one or more spans of phrasing content to be marked with ruby annotations. Ruby annotations are short runs of text presented alongside base text, primarily used in East Asian typography as a guide for pronunciation or to include other annotations. In Japanese, this form of typography is also known as furigana. Ruby text can appear on either side, and sometimes both sides, of the base text, and it is possible to control its position using CSS. A more complete introduction to ruby can be found in the Use Cases & Exploratory Approaches for Ruby Markup document as well as in CSS Ruby Module Level 1. [RUBY-UC] [CSSRUBY]"},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/ruby"}]},{name:"rb",description:{kind:"markdown",value:"The rb element marks the base text component of a ruby annotation. When it is the child of a ruby element, it doesn't represent anything itself, but its parent ruby element uses it as part of determining what it represents."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/rb"}]},{name:"rt",description:{kind:"markdown",value:"The rt element marks the ruby text component of a ruby annotation. When it is the child of a ruby element or of an rtc element that is itself the child of a ruby element, it doesn't represent anything itself, but its ancestor ruby element uses it as part of determining what it represents."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/rt"}]},{name:"rp",description:{kind:"markdown",value:"The rp element is used to provide fallback text to be shown by user agents that don't support ruby annotations. One widespread convention is to provide parentheses around the ruby text component of a ruby annotation."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/rp"}]},{name:"time",description:{kind:"markdown",value:"The time element represents its contents, along with a machine-readable form of those contents in the datetime attribute. The kind of content is limited to various kinds of dates, times, time-zone offsets, and durations, as described below."},attributes:[{name:"datetime",description:{kind:"markdown",value:"This attribute indicates the time and/or date of the element and must be in one of the formats described below."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/time"}]},{name:"code",description:{kind:"markdown",value:"The code element represents a fragment of computer code. This could be an XML element name, a file name, a computer program, or any other string that a computer would recognize."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/code"}]},{name:"var",description:{kind:"markdown",value:"The var element represents a variable. This could be an actual variable in a mathematical expression or programming context, an identifier representing a constant, a symbol identifying a physical quantity, a function parameter, or just be a term used as a placeholder in prose."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/var"}]},{name:"samp",description:{kind:"markdown",value:"The samp element represents sample or quoted output from another program or computing system."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/samp"}]},{name:"kbd",description:{kind:"markdown",value:"The kbd element represents user input (typically keyboard input, although it may also be used to represent other input, such as voice commands)."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/kbd"}]},{name:"sub",description:{kind:"markdown",value:"The sub element represents a subscript."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/sub"}]},{name:"sup",description:{kind:"markdown",value:"The sup element represents a superscript."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/sup"}]},{name:"i",description:{kind:"markdown",value:"The i element represents a span of text in an alternate voice or mood, or otherwise offset from the normal prose in a manner indicating a different quality of text, such as a taxonomic designation, a technical term, an idiomatic phrase from another language, transliteration, a thought, or a ship name in Western texts."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/i"}]},{name:"b",description:{kind:"markdown",value:"The b element represents a span of text to which attention is being drawn for utilitarian purposes without conveying any extra importance and with no implication of an alternate voice or mood, such as key words in a document abstract, product names in a review, actionable words in interactive text-driven software, or an article lede."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/b"}]},{name:"u",description:{kind:"markdown",value:"The u element represents a span of text with an unarticulated, though explicitly rendered, non-textual annotation, such as labeling the text as being a proper name in Chinese text (a Chinese proper name mark), or labeling the text as being misspelt."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/u"}]},{name:"mark",description:{kind:"markdown",value:"The mark element represents a run of text in one document marked or highlighted for reference purposes, due to its relevance in another context. When used in a quotation or other block of text referred to from the prose, it indicates a highlight that was not originally present but which has been added to bring the reader's attention to a part of the text that might not have been considered important by the original author when the block was originally written, but which is now under previously unexpected scrutiny. When used in the main prose of a document, it indicates a part of the document that has been highlighted due to its likely relevance to the user's current activity."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/mark"}]},{name:"bdi",description:{kind:"markdown",value:"The bdi element represents a span of text that is to be isolated from its surroundings for the purposes of bidirectional text formatting. [BIDI]"},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/bdi"}]},{name:"bdo",description:{kind:"markdown",value:"The bdo element represents explicit text directionality formatting control for its children. It allows authors to override the Unicode bidirectional algorithm by explicitly specifying a direction override. [BIDI]"},attributes:[{name:"dir",description:"The direction in which text should be rendered in this element's contents. Possible values are:\n\n* `ltr`: Indicates that the text should go in a left-to-right direction.\n* `rtl`: Indicates that the text should go in a right-to-left direction."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/bdo"}]},{name:"span",description:{kind:"markdown",value:"The span element doesn't mean anything on its own, but can be useful when used together with the global attributes, e.g. class, lang, or dir. It represents its children."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/span"}]},{name:"br",description:{kind:"markdown",value:"The br element represents a line break."},attributes:[{name:"clear",description:"Indicates where to begin the next line after the break."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/br"}]},{name:"wbr",description:{kind:"markdown",value:"The wbr element represents a line break opportunity."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/wbr"}]},{name:"ins",description:{kind:"markdown",value:"The ins element represents an addition to the document."},attributes:[{name:"cite",description:"This attribute defines the URI of a resource that explains the change, such as a link to meeting minutes or a ticket in a troubleshooting system."},{name:"datetime",description:'This attribute indicates the time and date of the change and must be a valid date with an optional time string. If the value cannot be parsed as a date with an optional time string, the element does not have an associated time stamp. For the format of the string without a time, see [Format of a valid date string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_date_string "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article."). The format of the string if it includes both date and time is covered in [Format of a valid local date and time string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_local_date_and_time_string "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.").'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/ins"}]},{name:"del",description:{kind:"markdown",value:"The del element represents a removal from the document."},attributes:[{name:"cite",description:{kind:"markdown",value:"A URI for a resource that explains the change (for example, meeting minutes)."}},{name:"datetime",description:{kind:"markdown",value:'This attribute indicates the time and date of the change and must be a valid date string with an optional time. If the value cannot be parsed as a date with an optional time string, the element does not have an associated time stamp. For the format of the string without a time, see [Format of a valid date string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_date_string "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article."). The format of the string if it includes both date and time is covered in [Format of a valid local date and time string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_local_date_and_time_string "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.").'}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/del"}]},{name:"picture",description:{kind:"markdown",value:"The picture element is a container which provides multiple sources to its contained img element to allow authors to declaratively control or give hints to the user agent about which image resource to use, based on the screen pixel density, viewport size, image format, and other factors. It represents its children."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/picture"}]},{name:"img",description:{kind:"markdown",value:"An img element represents an image."},attributes:[{name:"alt",description:{kind:"markdown",value:'This attribute defines an alternative text description of the image.\n\n**Note:** Browsers do not always display the image referenced by the element. This is the case for non-graphical browsers (including those used by people with visual impairments), if the user chooses not to display images, or if the browser cannot display the image because it is invalid or an [unsupported type](#Supported_image_formats). In these cases, the browser may replace the image with the text defined in this element\'s `alt` attribute. You should, for these reasons and others, provide a useful value for `alt` whenever possible.\n\n**Note:** Omitting this attribute altogether indicates that the image is a key part of the content, and no textual equivalent is available. Setting this attribute to an empty string (`alt=""`) indicates that this image is _not_ a key part of the content (decorative), and that non-visual browsers may omit it from rendering.'}},{name:"src",description:{kind:"markdown",value:"The image URL. This attribute is mandatory for the `<img>` element. On browsers supporting `srcset`, `src` is treated like a candidate image with a pixel density descriptor `1x` unless an image with this pixel density descriptor is already defined in `srcset,` or unless `srcset` contains '`w`' descriptors."}},{name:"srcset",description:{kind:"markdown",value:"A list of one or more strings separated by commas indicating a set of possible image sources for the user agent to use. Each string is composed of:\n\n1. a URL to an image,\n2. optionally, whitespace followed by one of:\n * A width descriptor, or a positive integer directly followed by '`w`'. The width descriptor is divided by the source size given in the `sizes` attribute to calculate the effective pixel density.\n * A pixel density descriptor, which is a positive floating point number directly followed by '`x`'.\n\nIf no descriptor is specified, the source is assigned the default descriptor: `1x`.\n\nIt is incorrect to mix width descriptors and pixel density descriptors in the same `srcset` attribute. Duplicate descriptors (for instance, two sources in the same `srcset` which are both described with '`2x`') are also invalid.\n\nThe user agent selects any one of the available sources at its discretion. This provides them with significant leeway to tailor their selection based on things like user preferences or bandwidth conditions. See our [Responsive images](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images) tutorial for an example."}},{name:"crossorigin",valueSet:"xo",description:{kind:"markdown",value:'This enumerated attribute indicates if the fetching of the related image must be done using CORS or not. [CORS-enabled images](https://developer.mozilla.org/en-US/docs/CORS_Enabled_Image) can be reused in the [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas "Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.") element without being "[tainted](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image#What_is_a_tainted_canvas)." The allowed values are:'}},{name:"usemap",description:{kind:"markdown",value:'The partial URL (starting with \'#\') of an [image map](https://developer.mozilla.org/en-US/docs/HTML/Element/map) associated with the element.\n\n**Note:** You cannot use this attribute if the `<img>` element is a descendant of an [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a "The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL.") or [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button "The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.") element.'}},{name:"ismap",valueSet:"v",description:{kind:"markdown",value:'This Boolean attribute indicates that the image is part of a server-side map. If so, the precise coordinates of a click are sent to the server.\n\n**Note:** This attribute is allowed only if the `<img>` element is a descendant of an [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a "The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL.") element with a valid [`href`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href) attribute.'}},{name:"width",description:{kind:"markdown",value:"The intrinsic width of the image in pixels."}},{name:"height",description:{kind:"markdown",value:"The intrinsic height of the image in pixels."}},{name:"decoding",description:"Provides an image decoding hint to the browser. The allowed values are:"},{name:"decoding",description:"`sync`\n\nDecode the image synchronously for atomic presentation with other content.\n\n`async`\n\nDecode the image asynchronously to reduce delay in presenting other content.\n\n`auto`\n\nDefault mode, which indicates no preference for the decoding mode. The browser decides what is best for the user."},{name:"importance",description:"Indicates the relative importance of the resource. Priority hints are delegated using the values:"},{name:"importance",description:"`auto`: Indicates\xa0**no\xa0preference**. The browser may use its own heuristics to decide the priority of the image.\n\n`high`: Indicates to the\xa0browser\xa0that the image is of\xa0**high** priority.\n\n`low`:\xa0Indicates to the\xa0browser\xa0that the image is of\xa0**low** priority."},{name:"intrinsicsize",description:"This attribute tells the browser to ignore the actual intrinsic size of the image and pretend it\u2019s the size specified in the attribute. Specifically, the image would raster at these dimensions and `naturalWidth`/`naturalHeight` on images would return the values specified in this attribute. [Explainer](https://github.com/ojanvafai/intrinsicsize-attribute), [examples](https://googlechrome.github.io/samples/intrinsic-size/index.html)"},{name:"referrerpolicy",description:"A string indicating which referrer to use when fetching the resource:\n\n* `no-referrer:` The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent.\n* `no-referrer-when-downgrade:` No `Referer` header will be sent when navigating to an origin without TLS (HTTPS). This is a user agent\u2019s default behavior if no policy is otherwise specified.\n* `origin:` The `Referer` header will include the page of origin's scheme, the host, and the port.\n* `origin-when-cross-origin:` Navigating to other origins will limit the included referral data to the scheme, the host and the port, while navigating from the same origin will include the referrer's full path.\n* `unsafe-url:` The `Referer` header will include the origin and the path, but not the fragment, password, or username. This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins."},{name:"sizes",description:"A list of one or more strings separated by commas indicating a set of source sizes. Each source size consists of:\n\n1. a media condition. This must be omitted for the last item.\n2. a source size value.\n\nSource size values specify the intended display size of the image. User agents use the current source size to select one of the sources supplied by the `srcset` attribute, when those sources are described using width ('`w`') descriptors. The selected source size affects the intrinsic size of the image (the image\u2019s display size if no CSS styling is applied). If the `srcset` attribute is absent, or contains no values with a width (`w`) descriptor, then the `sizes` attribute has no effect."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/img"}]},{name:"iframe",description:{kind:"markdown",value:"The iframe element represents a nested browsing context."},attributes:[{name:"src",description:{kind:"markdown",value:'The URL of the page to embed. Use a value of `about:blank` to embed an empty page that conforms to the [same-origin policy](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy#Inherited_origins). Also note that programatically removing an `<iframe>`\'s src attribute (e.g. via [`Element.removeAttribute()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute "The Element method removeAttribute() removes the attribute with the specified name from the element.")) causes `about:blank` to be loaded in the frame in Firefox (from version 65), Chromium-based browsers, and Safari/iOS.'}},{name:"srcdoc",description:{kind:"markdown",value:"Inline HTML to embed, overriding the `src` attribute. If a browser does not support the `srcdoc` attribute, it will fall back to the URL in the `src` attribute."}},{name:"name",description:{kind:"markdown",value:'A targetable name for the embedded browsing context. This can be used in the `target` attribute of the [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a "The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL."), [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server."), or [`<base>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base "The HTML <base> element specifies the base URL to use for all relative URLs contained within a document. There can be only one <base> element in a document.") elements; the `formtarget` attribute of the [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") or [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button "The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.") elements; or the `windowName` parameter in the [`window.open()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/open "The\xa0Window interface\'s open() method loads the specified resource into the browsing context (window, <iframe> or tab) with the specified name. If the name doesn\'t exist, then a new window is opened and the specified resource is loaded into its browsing context.") method.'}},{name:"sandbox",valueSet:"sb",description:{kind:"markdown",value:'Applies extra restrictions to the content in the frame. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions:\n\n* `allow-forms`: Allows the resource to submit forms. If this keyword is not used, form submission is blocked.\n* `allow-modals`: Lets the resource [open modal windows](https://html.spec.whatwg.org/multipage/origin.html#sandboxed-modals-flag).\n* `allow-orientation-lock`: Lets the resource [lock the screen orientation](https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation).\n* `allow-pointer-lock`: Lets the resource use the [Pointer Lock API](https://developer.mozilla.org/en-US/docs/WebAPI/Pointer_Lock).\n* `allow-popups`: Allows popups (such as `window.open()`, `target="_blank"`, or `showModalDialog()`). If this keyword is not used, the popup will silently fail to open.\n* `allow-popups-to-escape-sandbox`: Lets the sandboxed document open new windows without those windows inheriting the sandboxing. For example, this can safely sandbox an advertisement without forcing the same restrictions upon the page the ad links to.\n* `allow-presentation`: Lets the resource start a [presentation session](https://developer.mozilla.org/en-US/docs/Web/API/PresentationRequest).\n* `allow-same-origin`: If this token is not used, the resource is treated as being from a special origin that always fails the [same-origin policy](https://developer.mozilla.org/en-US/docs/Glossary/same-origin_policy "same-origin policy: The same-origin policy is a critical security mechanism that restricts how a document or script loaded from one origin can interact with a resource from another origin.").\n* `allow-scripts`: Lets the resource run scripts (but not create popup windows).\n* `allow-storage-access-by-user-activation` : Lets the resource request access to the parent\'s storage capabilities with the [Storage Access API](https://developer.mozilla.org/en-US/docs/Web/API/Storage_Access_API).\n* `allow-top-navigation`: Lets the resource navigate the top-level browsing context (the one named `_top`).\n* `allow-top-navigation-by-user-activation`: Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture.\n\n**Notes about sandboxing:**\n\n* When the embedded document has the same origin as the embedding page, it is **strongly discouraged** to use both `allow-scripts` and `allow-same-origin`, as that lets the embedded document remove the `sandbox` attribute \u2014 making it no more secure than not using the `sandbox` attribute at all.\n* Sandboxing is useless if the attacker can display content outside a sandboxed `iframe` \u2014 such as if the viewer opens the frame in a new tab. Such content should be also served from a _separate origin_ to limit potential damage.\n* The `sandbox` attribute is unsupported in Internet Explorer 9 and earlier.'}},{name:"seamless",valueSet:"v"},{name:"allowfullscreen",valueSet:"v",description:{kind:"markdown",value:'Set to `true` if the `<iframe>` can activate fullscreen mode by calling the [`requestFullscreen()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen "The Element.requestFullscreen() method issues an asynchronous request to make the element be displayed in full-screen mode.") method.'}},{name:"width",description:{kind:"markdown",value:"The width of the frame in CSS pixels. Default is `300`."}},{name:"height",description:{kind:"markdown",value:"The height of the frame in CSS pixels. Default is `150`."}},{name:"allow",description:"Specifies a [feature policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Feature_Policy) for the `<iframe>`."},{name:"allowpaymentrequest",description:"Set to `true` if a cross-origin `<iframe>` should be allowed to invoke the [Payment Request API](https://developer.mozilla.org/en-US/docs/Web/API/Payment_Request_API)."},{name:"allowpaymentrequest",description:'This attribute is considered a legacy attribute and redefined as `allow="payment"`.'},{name:"csp",description:'A [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) enforced for the embedded resource. See [`HTMLIFrameElement.csp`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/csp "The csp property of the HTMLIFrameElement interface specifies the Content Security Policy that an embedded document must agree to enforce upon itself.") for details.'},{name:"importance",description:"The download priority of the resource in the `<iframe>`'s `src` attribute. Allowed values:\n\n`auto` (default)\n\nNo preference. The browser uses its own heuristics to decide the priority of the resource.\n\n`high`\n\nThe resource should be downloaded before other lower-priority page resources.\n\n`low`\n\nThe resource should be downloaded after other higher-priority page resources."},{name:"referrerpolicy",description:'Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer) to send when fetching the frame\'s resource:\n\n* `no-referrer`: The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer "The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.") header will not be sent.\n* `no-referrer-when-downgrade` (default): The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer "The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.") header will not be sent to [origin](https://developer.mozilla.org/en-US/docs/Glossary/origin "origin: Web content\'s origin is defined by the scheme (protocol), host (domain), and port of the URL used to access it. Two objects have the same origin only when the scheme, host, and port all match.")s without [TLS](https://developer.mozilla.org/en-US/docs/Glossary/TLS "TLS: Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), is a protocol used by applications to communicate securely across a network, preventing tampering with and eavesdropping on email, web browsing, messaging, and other protocols.") ([HTTPS](https://developer.mozilla.org/en-US/docs/Glossary/HTTPS "HTTPS: HTTPS (HTTP Secure) is an encrypted version of the HTTP protocol. It usually uses SSL or TLS to encrypt all communication between a client and a server. This secure connection allows clients to safely exchange sensitive data with a server, for example for banking activities or online shopping.")).\n* `origin`: The sent referrer will be limited to the origin of the referring page: its [scheme](https://developer.mozilla.org/en-US/docs/Archive/Mozilla/URIScheme), [host](https://developer.mozilla.org/en-US/docs/Glossary/host "host: A host is a device connected to the Internet (or a local network). Some hosts called servers offer additional services like serving webpages or storing files and emails."), and [port](https://developer.mozilla.org/en-US/docs/Glossary/port "port: For a computer connected to a network with an IP address, a port is a communication endpoint. Ports are designated by numbers, and below 1024 each port is associated by default with a specific protocol.").\n* `origin-when-cross-origin`: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path.\n* `same-origin`: A referrer will be sent for [same origin](https://developer.mozilla.org/en-US/docs/Glossary/Same-origin_policy "same origin: The same-origin policy is a critical security mechanism that restricts how a document or script loaded from one origin can interact with a resource from another origin."), but cross-origin requests will contain no referrer information.\n* `strict-origin`: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS\u2192HTTPS), but don\'t send it to a less secure destination (HTTPS\u2192HTTP).\n* `strict-origin-when-cross-origin`: Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS\u2192HTTPS), and send no header to a less secure destination (HTTPS\u2192HTTP).\n* `unsafe-url`: The referrer will include the origin _and_ the path (but not the [fragment](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/hash), [password](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/password), or [username](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/username)). **This value is unsafe**, because it leaks origins and paths from TLS-protected resources to insecure origins.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/iframe"}]},{name:"embed",description:{kind:"markdown",value:"The embed element provides an integration point for an external (typically non-HTML) application or interactive content."},attributes:[{name:"src",description:{kind:"markdown",value:"The URL\xa0of the resource being embedded."}},{name:"type",description:{kind:"markdown",value:"The MIME\xa0type to use to select the plug-in to instantiate."}},{name:"width",description:{kind:"markdown",value:"The displayed width of the resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). This must be an absolute value; percentages are _not_ allowed."}},{name:"height",description:{kind:"markdown",value:"The displayed height of the resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). This must be an absolute value; percentages are _not_ allowed."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/embed"}]},{name:"object",description:{kind:"markdown",value:"The object element can represent an external resource, which, depending on the type of the resource, will either be treated as an image, as a nested browsing context, or as an external resource to be processed by a plugin."},attributes:[{name:"data",description:{kind:"markdown",value:"The address of the resource as a valid URL. At least one of **data** and **type** must be defined."}},{name:"type",description:{kind:"markdown",value:"The [content type](https://developer.mozilla.org/en-US/docs/Glossary/Content_type) of the resource specified by **data**. At least one of **data** and **type** must be defined."}},{name:"typemustmatch",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute indicates if the **type** attribute and the actual [content type](https://developer.mozilla.org/en-US/docs/Glossary/Content_type) of the resource must match to be used."}},{name:"name",description:{kind:"markdown",value:"The name of valid browsing context (HTML5), or the name of the control (HTML 4)."}},{name:"usemap",description:{kind:"markdown",value:"A hash-name reference to a [`<map>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map \"The HTML <map> element is used with <area> elements to define an image map (a clickable link area).\") element; that is a '#' followed by the value of a [`name`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map#attr-name) of a map element."}},{name:"form",description:{kind:"markdown",value:'The form element, if any, that the object element is associated with (its _form owner_). The value of the attribute must be an ID of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element in the same document.'}},{name:"width",description:{kind:"markdown",value:"The width of the display resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). -- (Absolute values only. [NO percentages](https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes))"}},{name:"height",description:{kind:"markdown",value:"The height of the displayed resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). -- (Absolute values only. [NO percentages](https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes))"}},{name:"archive",description:"A space-separated list of URIs for archives of resources for the object."},{name:"border",description:"The width of a border around the control, in pixels."},{name:"classid",description:"The URI of the object's implementation. It can be used together with, or in place of, the **data** attribute."},{name:"codebase",description:"The base path used to resolve relative URIs specified by **classid**, **data**, or **archive**. If not specified, the default is the base URI of the current document."},{name:"codetype",description:"The content type of the data specified by **classid**."},{name:"declare",description:"The presence of this Boolean attribute makes this element a declaration only. The object must be instantiated by a subsequent `<object>` element. In HTML5, repeat the <object> element completely each that that the resource is reused."},{name:"standby",description:"A message that the browser can show while loading the object's implementation and data."},{name:"tabindex",description:"The position of the element in the tabbing navigation order for the current document."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/object"}]},{name:"param",description:{kind:"markdown",value:"The param element defines parameters for plugins invoked by object elements. It does not represent anything on its own."},attributes:[{name:"name",description:{kind:"markdown",value:"Name of the parameter."}},{name:"value",description:{kind:"markdown",value:"Specifies the value of the parameter."}},{name:"type",description:'Only used if the `valuetype` is set to "ref". Specifies the MIME type of values found at the URI specified by value.'},{name:"valuetype",description:'Specifies the type of the `value` attribute. Possible values are:\n\n* data: Default value. The value is passed to the object\'s implementation as a string.\n* ref: The value is a URI to a resource where run-time values are stored.\n* object: An ID of another [`<object>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object "The HTML <object> element represents an external resource, which can be treated as an image, a nested browsing context, or a resource to be handled by a plugin.") in the same document.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/param"}]},{name:"video",description:{kind:"markdown",value:"A video element is used for playing videos or movies, and audio files with captions."},attributes:[{name:"src"},{name:"crossorigin",valueSet:"xo"},{name:"poster"},{name:"preload",valueSet:"pl"},{name:"autoplay",valueSet:"v",description:{kind:"markdown",value:"A Boolean attribute; if specified, the video automatically begins to play back as soon as it can do so without stopping to finish loading the data."}},{name:"mediagroup"},{name:"loop",valueSet:"v"},{name:"muted",valueSet:"v"},{name:"controls",valueSet:"v"},{name:"width"},{name:"height"}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/video"}]},{name:"audio",description:{kind:"markdown",value:"An audio element represents a sound or audio stream."},attributes:[{name:"src",description:{kind:"markdown",value:'The URL of the audio to embed. This is subject to [HTTP access controls](https://developer.mozilla.org/en-US/docs/HTTP_access_control). This is optional; you may instead use the [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source "The HTML <source> element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element.") element within the audio block to specify the audio to embed.'}},{name:"crossorigin",valueSet:"xo",description:{kind:"markdown",value:'This enumerated attribute indicates whether to use CORS to fetch the related image. [CORS-enabled resources](https://developer.mozilla.org/en-US/docs/CORS_Enabled_Image) can be reused in the [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas "Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.") element without being _tainted_. The allowed values are:\n\nanonymous\n\nSends a cross-origin request without a credential. In other words, it sends the `Origin:` HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the `Access-Control-Allow-Origin:` HTTP header), the image will be _tainted_, and its usage restricted.\n\nuse-credentials\n\nSends a cross-origin request with a credential. In other words, it sends the `Origin:` HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through `Access-Control-Allow-Credentials:` HTTP header), the image will be _tainted_ and its usage restricted.\n\nWhen not present, the resource is fetched without a CORS request (i.e. without sending the `Origin:` HTTP header), preventing its non-tainted used in [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas "Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.") elements. If invalid, it is handled as if the enumerated keyword **anonymous** was used. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes) for additional information.'}},{name:"preload",valueSet:"pl",description:{kind:"markdown",value:"This enumerated attribute is intended to provide a hint to the browser about what the author thinks will lead to the best user experience. It may have one of the following values:\n\n* `none`: Indicates that the audio should not be preloaded.\n* `metadata`: Indicates that only audio metadata (e.g. length) is fetched.\n* `auto`: Indicates that the whole audio file can be downloaded, even if the user is not expected to use it.\n* _empty string_: A synonym of the `auto` value.\n\nIf not set, `preload`'s default value is browser-defined (i.e. each browser may have its own default value). The spec advises it to be set to `metadata`.\n\n**Usage notes:**\n\n* The `autoplay` attribute has precedence over\xa0`preload`. If `autoplay` is specified, the browser would obviously need to start downloading the audio for playback.\n* The browser is not forced by the specification to follow the value of this attribute; it is a mere hint."}},{name:"autoplay",valueSet:"v",description:{kind:"markdown",value:"A Boolean attribute:\xa0if specified, the audio will automatically begin playback as soon as it can do so, without waiting for the entire audio file to finish downloading.\n\n**Note**: Sites that automatically play audio (or videos with an audio track) can be an unpleasant experience for users, so should be avoided when possible. If you must offer autoplay functionality, you should make it opt-in (requiring a user to specifically enable it). However, this can be useful when creating media elements whose source will be set at a later time, under user control."}},{name:"mediagroup"},{name:"loop",valueSet:"v",description:{kind:"markdown",value:"A Boolean attribute:\xa0if specified, the audio player will\xa0automatically seek back to the start\xa0upon reaching the end of the audio."}},{name:"muted",valueSet:"v",description:{kind:"markdown",value:"A Boolean attribute that indicates whether the audio will be initially silenced. Its default value is `false`."}},{name:"controls",valueSet:"v",description:{kind:"markdown",value:"If this attribute is present, the browser will offer controls to allow the user to control audio playback, including volume, seeking, and pause/resume playback."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/audio"}]},{name:"source",description:{kind:"markdown",value:"The source element allows authors to specify multiple alternative media resources for media elements. It does not represent anything on its own."},attributes:[{name:"src",description:{kind:"markdown",value:'Required for [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio "The HTML <audio> element is used to embed sound content in documents. It may contain one or more audio sources, represented using the src attribute or the <source> element:\xa0the browser will choose the most suitable one. It can also be the destination for streamed media, using a MediaStream.") and [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video "The HTML Video element (<video>) embeds a media player which supports video playback into the document."), address of the media resource. The value of this attribute is ignored when the `<source>` element is placed inside a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture "The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.") element.'}},{name:"type",description:{kind:"markdown",value:"The MIME-type of the resource, optionally with a `codecs` parameter. See [RFC 4281](https://tools.ietf.org/html/rfc4281) for information about how to specify codecs."}},{name:"sizes",description:'Is a list of source sizes that describes the final rendered width of the image represented by the source. Each source size consists of a comma-separated list of media condition-length pairs. This information is used by the browser to determine, before laying the page out, which image defined in [`srcset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source#attr-srcset) to use. \nThe `sizes` attribute has an effect only when the [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source "The HTML <source> element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element.") element is the direct child of a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture "The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.") element.'},{name:"srcset",description:"A list of one or more strings separated by commas indicating a set of possible images represented by the source for the browser to use. Each string is composed of:\n\n1. one URL to an image,\n2. a width descriptor, that is a positive integer directly followed by `'w'`. The default value, if missing, is the infinity.\n3. a pixel density descriptor, that is a positive floating number directly followed by `'x'`. The default value, if missing, is `1x`.\n\nEach string in the list must have at least a width descriptor or a pixel density descriptor to be valid. Among the list, there must be only one string containing the same tuple of width descriptor and pixel density descriptor. \nThe browser chooses the most adequate image to display at a given point of time. \nThe `srcset` attribute has an effect only when the [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source \"The HTML <source> element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element.\") element is the direct child of a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture \"The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.\") element."},{name:"media",description:'[Media query](https://developer.mozilla.org/en-US/docs/CSS/Media_queries) of the resource\'s intended media; this should be used only in a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture "The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.") element.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/source"}]},{name:"track",description:{kind:"markdown",value:"The track element allows authors to specify explicit external timed text tracks for media elements. It does not represent anything on its own."},attributes:[{name:"default",valueSet:"v",description:{kind:"markdown",value:"This attribute indicates that the track should be enabled unless the user's preferences indicate that another track is more appropriate. This may only be used on one `track` element per media element."}},{name:"kind",valueSet:"tk",description:{kind:"markdown",value:"How the text track is meant to be used. If omitted the default kind is `subtitles`. If the attribute is not present, it will use the `subtitles`. If the attribute contains an invalid value, it will use `metadata`. (Versions of Chrome earlier than 52 treated an invalid value as `subtitles`.)\xa0The following keywords are allowed:\n\n* `subtitles`\n * Subtitles provide translation of content that cannot be understood by the viewer. For example dialogue or text that is not English in an English language film.\n * Subtitles may contain additional content, usually extra background information. For example the text at the beginning of the Star Wars films, or the date, time, and location of a scene.\n* `captions`\n * Closed captions provide a transcription and possibly a translation of audio.\n * It may include important non-verbal information such as music cues or sound effects. It may indicate the cue's source (e.g. music, text, character).\n * Suitable for users who are deaf or when the sound is muted.\n* `descriptions`\n * Textual description of the video content.\n * Suitable for users who are blind or where the video cannot be seen.\n* `chapters`\n * Chapter titles are intended to be used when the user is navigating the media resource.\n* `metadata`\n * Tracks used by scripts. Not visible to the user."}},{name:"label",description:{kind:"markdown",value:"A user-readable title of the text track which is used by the browser when listing available text tracks."}},{name:"src",description:{kind:"markdown",value:'Address of the track (`.vtt` file). Must be a valid URL. This attribute must be specified and its URL value must have the same origin as the document \u2014 unless the [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio "The HTML <audio> element is used to embed sound content in documents. It may contain one or more audio sources, represented using the src attribute or the <source> element:\xa0the browser will choose the most suitable one. It can also be the destination for streamed media, using a MediaStream.") or [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video "The HTML Video element (<video>) embeds a media player which supports video playback into the document.") parent element of the `track` element has a [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute.'}},{name:"srclang",description:{kind:"markdown",value:"Language of the track text data. It must be a valid [BCP 47](https://r12a.github.io/app-subtags/) language tag. If the `kind` attribute is set to\xa0`subtitles,` then `srclang` must be defined."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/track"}]},{name:"map",description:{kind:"markdown",value:"The map element, in conjunction with an img element and any area element descendants, defines an image map. The element represents its children."},attributes:[{name:"name",description:{kind:"markdown",value:"The name attribute gives the map a name so that it can be referenced. The attribute must be present and must have a non-empty value with no space characters. The value of the name attribute must not be a compatibility-caseless match for the value of the name attribute of another map element in the same document. If the id attribute is also specified, both attributes must have the same value."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/map"}]},{name:"area",description:{kind:"markdown",value:"The area element represents either a hyperlink with some text and a corresponding area on an image map, or a dead area on an image map."},attributes:[{name:"alt"},{name:"coords"},{name:"shape",valueSet:"sh"},{name:"href"},{name:"target"},{name:"download"},{name:"ping"},{name:"rel"},{name:"hreflang"},{name:"type"},{name:"accesskey",description:"Specifies a keyboard navigation accelerator for the element. Pressing ALT or a similar key in association with the specified character selects the form control correlated with that key sequence. Page designers are forewarned to avoid key sequences already bound to browsers. This attribute is global since HTML5."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/area"}]},{name:"table",description:{kind:"markdown",value:"The table element represents data with more than one dimension, in the form of a table."},attributes:[{name:"border"},{name:"align",description:'This enumerated attribute indicates how the table must be aligned inside the containing document. It may have the following values:\n\n* left: the table is displayed on the left side of the document;\n* center: the table is displayed in the center of the document;\n* right: the table is displayed on the right side of the document.\n\n**Usage Note**\n\n* **Do not use this attribute**, as it has been deprecated. The [`<table>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table "The HTML <table> element represents tabular data \u2014 that is, information presented in a two-dimensional table comprised of rows and columns of cells containing data.") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). Set [`margin-left`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left "The margin-left CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") and [`margin-right`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right "The margin-right CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") to `auto` or [`margin`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin "The margin CSS property sets the margin area on all four sides of an element. It is a shorthand for margin-top, margin-right, margin-bottom, and margin-left.") to `0 auto` to achieve an effect that is similar to the align attribute.\n* Prior to Firefox 4, Firefox also supported the `middle`, `absmiddle`, and `abscenter` values as synonyms of `center`, in quirks mode only.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/table"}]},{name:"caption",description:{kind:"markdown",value:"The caption element represents the title of the table that is its parent, if it has a parent and that is a table element."},attributes:[{name:"align",description:'This enumerated attribute indicates how the caption must be aligned with respect to the table. It may have one of the following values:\n\n`left`\n\nThe caption is displayed to the left of the table.\n\n`top`\n\nThe caption is displayed above the table.\n\n`right`\n\nThe caption is displayed to the right of the table.\n\n`bottom`\n\nThe caption is displayed below the table.\n\n**Usage note:** Do not use this attribute, as it has been deprecated. The [`<caption>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption "The HTML Table Caption element (<caption>) specifies the caption (or title) of a table, and if used is always the first child of a <table>.") element should be styled using the [CSS](https://developer.mozilla.org/en-US/docs/CSS) properties [`caption-side`](https://developer.mozilla.org/en-US/docs/Web/CSS/caption-side "The caption-side CSS property puts the content of a table\'s <caption> on the specified side. The values are relative to the writing-mode of the table.") and [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.").'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/caption"}]},{name:"colgroup",description:{kind:"markdown",value:"The colgroup element represents a group of one or more columns in the table that is its parent, if it has a parent and that is a table element."},attributes:[{name:"span"},{name:"align",description:'This enumerated attribute specifies how horizontal alignment of each column cell content will be handled. Possible values are:\n\n* `left`, aligning the content to the left of the cell\n* `center`, centering the content in the cell\n* `right`, aligning the content to the right of the cell\n* `justify`, inserting spaces into the textual content so that the content is justified in the cell\n* `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-charoff) attributes Unimplemented (see [bug\xa02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 "character alignment not implemented (align=char, charoff=, text-align:<string>)")).\n\nIf this attribute is not set, the `left` value is assumed. The descendant [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col "The HTML <col> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <colgroup> element.") elements may override this value using their own [`align`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-align) attribute.\n\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values:\n * Do not try to set the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property on a selector giving a [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup "The HTML <colgroup> element defines a group of columns within a table.") element. Because [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td "The HTML <td> element defines a cell of a table that contains data. It participates in the table model.") elements are not descendant of the [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup "The HTML <colgroup> element defines a group of columns within a table.") element, they won\'t inherit it.\n * If the table doesn\'t use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, use one `td:nth-child(an+b)` CSS selector per column, where a is the total number of the columns in the table and b is the ordinal position of this column in the table. Only after this selector the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property can be used.\n * If the table does use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, the effect can be achieved by combining adequate CSS attribute selectors like `[colspan=n]`, though this is not trivial.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property Unimplemented.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/colgroup"}]},{name:"col",description:{kind:"markdown",value:"If a col element has a parent and that is a colgroup element that itself has a parent that is a table element, then the col element represents one or more columns in the column group represented by that colgroup."},attributes:[{name:"span"},{name:"align",description:'This enumerated attribute specifies how horizontal alignment of each column cell content will be handled. Possible values are:\n\n* `left`, aligning the content to the left of the cell\n* `center`, centering the content in the cell\n* `right`, aligning the content to the right of the cell\n* `justify`, inserting spaces into the textual content so that the content is justified in the cell\n* `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-charoff) attributes Unimplemented (see [bug\xa02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 "character alignment not implemented (align=char, charoff=, text-align:<string>)")).\n\nIf this attribute is not set, its value is inherited from the [`align`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup#attr-align) of the [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup "The HTML <colgroup> element defines a group of columns within a table.") element this `<col>` element belongs too. If there are none, the `left` value is assumed.\n\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values:\n * Do not try to set the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property on a selector giving a [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col "The HTML <col> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <colgroup> element.") element. Because [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td "The HTML <td> element defines a cell of a table that contains data. It participates in the table model.") elements are not descendant of the [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col "The HTML <col> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <colgroup> element.") element, they won\'t inherit it.\n * If the table doesn\'t use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, use the `td:nth-child(an+b)` CSS selector. Set `a` to zero and `b` to the position of the column in the table, e.g. `td:nth-child(2) { text-align: right; }` to right-align the second column.\n * If the table does use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, the effect can be achieved by combining adequate CSS attribute selectors like `[colspan=n]`, though this is not trivial.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property Unimplemented.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/col"}]},{name:"tbody",description:{kind:"markdown",value:"The tbody element represents a block of rows that consist of a body of data for the parent table element, if the tbody element has a parent and it is a table."},attributes:[{name:"align",description:'This enumerated attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:\n\n* `left`, aligning the content to the left of the cell\n* `center`, centering the content in the cell\n* `right`, aligning the content to the right of the cell\n* `justify`, inserting spaces into the textual content so that the content is justified in the cell\n* `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-charoff) attributes.\n\nIf this attribute is not set, the `left` value is assumed.\n\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property on it.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property Unimplemented.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/tbody"}]},{name:"thead",description:{kind:"markdown",value:"The thead element represents the block of rows that consist of the column labels (headers) for the parent table element, if the thead element has a parent and it is a table."},attributes:[{name:"align",description:'This enumerated attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:\n\n* `left`, aligning the content to the left of the cell\n* `center`, centering the content in the cell\n* `right`, aligning the content to the right of the cell\n* `justify`, inserting spaces into the textual content so that the content is justified in the cell\n* `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead#attr-charoff) attributes Unimplemented (see [bug\xa02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 "character alignment not implemented (align=char, charoff=, text-align:<string>)")).\n\nIf this attribute is not set, the `left` value is assumed.\n\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property on it.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property Unimplemented.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/thead"}]},{name:"tfoot",description:{kind:"markdown",value:"The tfoot element represents the block of rows that consist of the column summaries (footers) for the parent table element, if the tfoot element has a parent and it is a table."},attributes:[{name:"align",description:'This enumerated attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:\n\n* `left`, aligning the content to the left of the cell\n* `center`, centering the content in the cell\n* `right`, aligning the content to the right of the cell\n* `justify`, inserting spaces into the textual content so that the content is justified in the cell\n* `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-charoff) attributes Unimplemented (see [bug\xa02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 "character alignment not implemented (align=char, charoff=, text-align:<string>)")).\n\nIf this attribute is not set, the `left` value is assumed.\n\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property on it.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property Unimplemented.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/tfoot"}]},{name:"tr",description:{kind:"markdown",value:"The tr element represents a row of cells in a table."},attributes:[{name:"align",description:'A [`DOMString`](https://developer.mozilla.org/en-US/docs/Web/API/DOMString "DOMString is a UTF-16 String. As JavaScript already uses such strings, DOMString is mapped directly to a String.") which specifies how the cell\'s context should be aligned horizontally within the cells in the row; this is shorthand for using `align` on every cell in the row individually. Possible values are:\n\n`left`\n\nAlign the content of each cell at its left edge.\n\n`center`\n\nCenter the contents of each cell between their left and right edges.\n\n`right`\n\nAlign the content of each cell at its right edge.\n\n`justify`\n\nWiden whitespaces within the text of each cell so that the text fills the full width of each cell (full justification).\n\n`char`\n\nAlign each cell in the row on a specific character (such that each row in the column that is configured this way will horizontally align its cells on that character). This uses the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr#attr-charoff) to establish the alignment character (typically "." or "," when aligning numerical data) and the number of characters that should follow the alignment character. This alignment type was never widely supported.\n\nIf no value is expressly set for `align`, the parent node\'s value is inherited.\n\nInstead of using the obsolete `align` attribute, you should instead use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property to establish `left`, `center`, `right`, or `justify` alignment for the row\'s cells. To apply character-based alignment, set the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property to the alignment character (such as `"."` or `","`).'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/tr"}]},{name:"td",description:{kind:"markdown",value:"The td element represents a data cell in a table."},attributes:[{name:"colspan"},{name:"rowspan"},{name:"headers"},{name:"abbr",description:"This attribute contains a short abbreviated description of the cell's content. Some user-agents, such as speech readers, may present this description before the content itself.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard. Alternatively, you can put the abbreviated description inside the cell and place the long content in the **title** attribute."},{name:"align",description:'This enumerated attribute specifies how the cell content\'s horizontal alignment will be handled. Possible values are:\n\n* `left`: The content is aligned to the left of the cell.\n* `center`: The content is centered in the cell.\n* `right`: The content is aligned to the right of the cell.\n* `justify` (with text only): The content is stretched out inside the cell so that it covers its entire width.\n* `char` (with text only): The content is aligned to a character inside the `<th>` element with minimal offset. This character is defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-charoff) attributes Unimplemented (see [bug\xa02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 "character alignment not implemented (align=char, charoff=, text-align:<string>)")).\n\nThe default value when this attribute is not specified is `left`.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, apply the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property to the element.\n* To achieve the same effect as the `char` value, give the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property the same value you would use for the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-char). Unimplemented in CSS3.'},{name:"axis",description:"This attribute contains a list of space-separated strings. Each string is the `id` of a group of cells that this header applies to.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard."},{name:"bgcolor",description:'This attribute defines the background color of each cell in a column. It consists of a 6-digit hexadecimal code as defined in [sRGB](https://www.w3.org/Graphics/Color/sRGB) and is prefixed by \'#\'. This attribute may be used with one of sixteen predefined color strings:\n\n\xa0\n\n`black` = "#000000"\n\n\xa0\n\n`green` = "#008000"\n\n\xa0\n\n`silver` = "#C0C0C0"\n\n\xa0\n\n`lime` = "#00FF00"\n\n\xa0\n\n`gray` = "#808080"\n\n\xa0\n\n`olive` = "#808000"\n\n\xa0\n\n`white` = "#FFFFFF"\n\n\xa0\n\n`yellow` = "#FFFF00"\n\n\xa0\n\n`maroon` = "#800000"\n\n\xa0\n\n`navy` = "#000080"\n\n\xa0\n\n`red` = "#FF0000"\n\n\xa0\n\n`blue` = "#0000FF"\n\n\xa0\n\n`purple` = "#800080"\n\n\xa0\n\n`teal` = "#008080"\n\n\xa0\n\n`fuchsia` = "#FF00FF"\n\n\xa0\n\n`aqua` = "#00FFFF"\n\n**Note:** Do not use this attribute, as it is non-standard and only implemented in some versions of Microsoft Internet Explorer: The [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td "The HTML <td> element defines a cell of a table that contains data. It participates in the table model.") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To create a similar effect use the [`background-color`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color "The background-color CSS property sets the background color of an element.") property in [CSS](https://developer.mozilla.org/en-US/docs/CSS) instead.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/td"}]},{name:"th",description:{kind:"markdown",value:"The th element represents a header cell in a table."},attributes:[{name:"colspan"},{name:"rowspan"},{name:"headers"},{name:"scope",valueSet:"s"},{name:"sorted"},{name:"abbr",description:{kind:"markdown",value:"This attribute contains a short abbreviated description of the cell's content. Some user-agents, such as speech readers, may present this description before the content itself."}},{name:"align",description:'This enumerated attribute specifies how the cell content\'s horizontal alignment will be handled. Possible values are:\n\n* `left`: The content is aligned to the left of the cell.\n* `center`: The content is centered in the cell.\n* `right`: The content is aligned to the right of the cell.\n* `justify` (with text only): The content is stretched out inside the cell so that it covers its entire width.\n* `char` (with text only): The content is aligned to a character inside the `<th>` element with minimal offset. This character is defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-charoff) attributes.\n\nThe default value when this attribute is not specified is `left`.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, apply the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property to the element.\n* To achieve the same effect as the `char` value, give the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property the same value you would use for the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-char). Unimplemented in CSS3.'},{name:"axis",description:"This attribute contains a list of space-separated strings. Each string is the `id` of a group of cells that this header applies to.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard: use the [`scope`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-scope) attribute instead."},{name:"bgcolor",description:'This attribute defines the background color of each cell in a column. It consists of a 6-digit hexadecimal code as defined in [sRGB](https://www.w3.org/Graphics/Color/sRGB) and is prefixed by \'#\'. This attribute may be used with one of sixteen predefined color strings:\n\n\xa0\n\n`black` = "#000000"\n\n\xa0\n\n`green` = "#008000"\n\n\xa0\n\n`silver` = "#C0C0C0"\n\n\xa0\n\n`lime` = "#00FF00"\n\n\xa0\n\n`gray` = "#808080"\n\n\xa0\n\n`olive` = "#808000"\n\n\xa0\n\n`white` = "#FFFFFF"\n\n\xa0\n\n`yellow` = "#FFFF00"\n\n\xa0\n\n`maroon` = "#800000"\n\n\xa0\n\n`navy` = "#000080"\n\n\xa0\n\n`red` = "#FF0000"\n\n\xa0\n\n`blue` = "#0000FF"\n\n\xa0\n\n`purple` = "#800080"\n\n\xa0\n\n`teal` = "#008080"\n\n\xa0\n\n`fuchsia` = "#FF00FF"\n\n\xa0\n\n`aqua` = "#00FFFF"\n\n**Note:** Do not use this attribute, as it is non-standard and only implemented in some versions of Microsoft Internet Explorer: The [`<th>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th "The HTML <th> element defines a cell as header of a group of table cells. The exact nature of this group is defined by the scope and headers attributes.") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS). To create a similar effect use the [`background-color`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color "The background-color CSS property sets the background color of an element.") property in [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS) instead.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/th"}]},{name:"form",description:{kind:"markdown",value:"The form element represents a collection of form-associated elements, some of which can represent editable values that can be submitted to a server for processing."},attributes:[{name:"accept-charset",description:{kind:"markdown",value:'A space- or comma-delimited list of character encodings that the server accepts. The browser uses them in the order in which they are listed. The default value, the reserved string `"UNKNOWN"`, indicates the same encoding as that of the document containing the form element. \nIn previous versions of HTML, the different character encodings could be delimited by spaces or commas. In HTML5, only spaces are allowed as delimiters.'}},{name:"action",description:{kind:"markdown",value:'The URI of a program that processes the form information. This value can be overridden by a [`formaction`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formaction) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button "The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") element.'}},{name:"autocomplete",valueSet:"o",description:{kind:"markdown",value:"Indicates whether input elements can by default have their values automatically completed by the browser. This setting can be overridden by an `autocomplete` attribute on an element belonging to the form. Possible values are:\n\n* `off`: The user must explicitly enter a value into each field for every use, or the document provides its own auto-completion method; the browser does not automatically complete entries.\n* `on`: The browser can automatically complete values based on values that the user has previously entered in the form.\n\nFor most modern browsers (including Firefox 38+, Google Chrome 34+, IE 11+) setting the autocomplete attribute will not prevent a browser's password manager from asking the user if they want to store login fields (username and password), if the user permits the storage the browser will autofill the login the next time the user visits the page. See [The autocomplete attribute and login fields](https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion#The_autocomplete_attribute_and_login_fields)."}},{name:"enctype",valueSet:"et",description:{kind:"markdown",value:'When the value of the `method` attribute is `post`, enctype is the [MIME type](https://en.wikipedia.org/wiki/Mime_type) of content that is used to submit the form to the server. Possible values are:\n\n* `application/x-www-form-urlencoded`: The default value if the attribute is not specified.\n* `multipart/form-data`: The value used for an [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") element with the `type` attribute set to "file".\n* `text/plain`: (HTML5)\n\nThis value can be overridden by a [`formenctype`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formenctype) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button "The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") element.'}},{name:"method",valueSet:"m",description:{kind:"markdown",value:'The [HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP) method that the browser uses to submit the form. Possible values are:\n\n* `post`: Corresponds to the HTTP [POST method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5) ; form data are included in the body of the form and sent to the server.\n* `get`: Corresponds to the HTTP [GET method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3); form data are appended to the `action` attribute URI with a \'?\' as separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters.\n* `dialog`: Use when the form is inside a\xa0[`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog "The HTML <dialog> element represents a dialog box or other interactive component, such as an inspector or window.") element to close the dialog when submitted.\n\nThis value can be overridden by a [`formmethod`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formmethod) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button "The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") element.'}},{name:"name",description:{kind:"markdown",value:"The name of the form. In HTML 4, its use is deprecated (`id` should be used instead). It must be unique among the forms in a document and not just an empty string in HTML 5."}},{name:"novalidate",valueSet:"v",description:{kind:"markdown",value:'This Boolean attribute indicates that the form is not to be validated when submitted. If this attribute is not specified (and therefore the form is validated), this default setting can be overridden by a [`formnovalidate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formnovalidate) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button "The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") element belonging to the form.'}},{name:"target",description:{kind:"markdown",value:'A name or keyword indicating where to display the response that is received after submitting the form. In HTML 4, this is the name/keyword for a frame. In HTML5, it is a name/keyword for a _browsing context_ (for example, tab, window, or inline frame). The following keywords have special meanings:\n\n* `_self`: Load the response into the same HTML 4 frame (or HTML5 browsing context) as the current one. This value is the default if the attribute is not specified.\n* `_blank`: Load the response into a new unnamed HTML 4 window or HTML5 browsing context.\n* `_parent`: Load the response into the HTML 4 frameset parent of the current frame, or HTML5 parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\n* `_top`: HTML 4: Load the response into the full original window, and cancel all other frames. HTML5: Load the response into the top-level browsing context (i.e., the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`.\n* _iframename_: The response is displayed in a named [`<iframe>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe "The HTML Inline Frame element (<iframe>) represents a nested browsing context, embedding another HTML page into the current one.").\n\nHTML5: This value can be overridden by a [`formtarget`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formtarget) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button "The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") element.'}},{name:"accept",description:'A comma-separated list of content types that the server accepts.\n\n**Usage note:** This attribute has been removed in HTML5 and should no longer be used. Instead, use the [`accept`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept) attribute of the specific [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") element.'},{name:"autocapitalize",description:"This is a nonstandard attribute used by iOS Safari Mobile which controls whether and how the text value for textual form control descendants should be automatically capitalized as it is entered/edited by the user. If the `autocapitalize` attribute is specified on an individual form control descendant, it trumps the form-wide `autocapitalize` setting. The non-deprecated values are available in iOS 5 and later. The default value is `sentences`. Possible values are:\n\n* `none`: Completely disables automatic capitalization\n* `sentences`: Automatically capitalize the first letter of sentences.\n* `words`: Automatically capitalize the first letter of words.\n* `characters`: Automatically capitalize all characters.\n* `on`: Deprecated since iOS 5.\n* `off`: Deprecated since iOS 5."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/form"}]},{name:"label",description:{kind:"markdown",value:"The label element represents a caption in a user interface. The caption can be associated with a specific form control, known as the label element's labeled control, either using the for attribute, or by putting the form control inside the label element itself."},attributes:[{name:"form",description:{kind:"markdown",value:'The [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element with which the label is associated (its _form owner_). If specified, the value of the attribute is the `id` of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element in the same document. This lets you place label elements anywhere within a document, not just as descendants of their form elements.'}},{name:"for",description:{kind:"markdown",value:"The [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-id) of a [labelable](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Form_labelable) form-related element in the same document as the `<label>` element. The first element in the document with an `id` matching the value of the `for` attribute is the _labeled control_ for this label element, if it is a labelable element. If it is\xa0not labelable then the `for` attribute has no effect. If there are other elements which also match the `id` value, later in the document, they are not considered.\n\n**Note**: A `<label>` element can have both a `for` attribute and a contained control element, as long as the `for` attribute points to the contained control element."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/label"}]},{name:"input",description:{kind:"markdown",value:"The input element represents a typed data field, usually with a form control to allow the user to edit the data."},attributes:[{name:"accept"},{name:"alt"},{name:"autocomplete",valueSet:"inputautocomplete"},{name:"autofocus",valueSet:"v"},{name:"checked",valueSet:"v"},{name:"dirname"},{name:"disabled",valueSet:"v"},{name:"form"},{name:"formaction"},{name:"formenctype",valueSet:"et"},{name:"formmethod",valueSet:"fm"},{name:"formnovalidate",valueSet:"v"},{name:"formtarget"},{name:"height"},{name:"inputmode",valueSet:"im"},{name:"list"},{name:"max"},{name:"maxlength"},{name:"min"},{name:"minlength"},{name:"multiple",valueSet:"v"},{name:"name"},{name:"pattern"},{name:"placeholder"},{name:"readonly",valueSet:"v"},{name:"required",valueSet:"v"},{name:"size"},{name:"src"},{name:"step"},{name:"type",valueSet:"t"},{name:"value"},{name:"width"}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/input"}]},{name:"button",description:{kind:"markdown",value:"The button element represents a button labeled by its contents."},attributes:[{name:"autofocus",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute lets you specify that the button should have input focus when the page loads, unless the user overrides it, for example by typing in a different control. Only one form-associated element in a document can have this attribute specified."}},{name:"disabled",valueSet:"v",description:{kind:"markdown",value:'This Boolean attribute indicates that the user cannot interact with the button. If this attribute is not specified, the button inherits its setting from the containing element, for example [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset "The HTML <fieldset> element is used to group several controls as well as labels (<label>) within a web form."); if there is no containing element with the **disabled** attribute set, then the button is enabled.\n\nFirefox will, unlike other browsers, by default, [persist the dynamic disabled state](https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing) of a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button "The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.") across page loads. Use the [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-autocomplete) attribute to control this feature.'}},{name:"form",description:{kind:"markdown",value:'The form element that the button is associated with (its _form owner_). The value of the attribute must be the **id** attribute of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element in the same document. If this attribute is not specified, the `<button>` element will be associated to an ancestor [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element, if one exists. This attribute enables you to associate `<button>` elements to [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") elements anywhere within a document, not just as descendants of [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") elements.'}},{name:"formaction",description:{kind:"markdown",value:"The URI of a program that processes the information submitted by the button. If specified, it overrides the [`action`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-action) attribute of the button's form owner."}},{name:"formenctype",valueSet:"et",description:{kind:"markdown",value:'If the button is a submit button, this attribute specifies the type of content that is used to submit the form to the server. Possible values are:\n\n* `application/x-www-form-urlencoded`: The default value if the attribute is not specified.\n* `multipart/form-data`: Use this value if you are using an [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") element with the [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-type) attribute set to `file`.\n* `text/plain`\n\nIf this attribute is specified, it overrides the [`enctype`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-enctype) attribute of the button\'s form owner.'}},{name:"formmethod",valueSet:"fm",description:{kind:"markdown",value:"If the button is a submit button, this attribute specifies the HTTP method that the browser uses to submit the form. Possible values are:\n\n* `post`: The data from the form are included in the body of the form and sent to the server.\n* `get`: The data from the form are appended to the **form** attribute URI, with a '?' as a separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters.\n\nIf specified, this attribute overrides the [`method`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-method) attribute of the button's form owner."}},{name:"formnovalidate",valueSet:"v",description:{kind:"markdown",value:"If the button is a submit button, this Boolean attribute specifies that the form is not to be validated when it is submitted. If this attribute is specified, it overrides the [`novalidate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-novalidate) attribute of the button's form owner."}},{name:"formtarget",description:{kind:"markdown",value:"If the button is a submit button, this attribute is a name or keyword indicating where to display the response that is received after submitting the form. This is a name of, or keyword for, a _browsing context_ (for example, tab, window, or inline frame). If this attribute is specified, it overrides the [`target`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-target) attribute of the button's form owner. The following keywords have special meanings:\n\n* `_self`: Load the response into the same browsing context as the current one. This value is the default if the attribute is not specified.\n* `_blank`: Load the response into a new unnamed browsing context.\n* `_parent`: Load the response into the parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\n* `_top`: Load the response into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`."}},{name:"name",description:{kind:"markdown",value:"The name of the button, which is submitted with the form data."}},{name:"type",valueSet:"bt",description:{kind:"markdown",value:"The type of the button. Possible values are:\n\n* `submit`: The button submits the form data to the server. This is the default if the attribute is not specified, or if the attribute is dynamically changed to an empty or invalid value.\n* `reset`: The button resets all the controls to their initial values.\n* `button`: The button has no default behavior. It can have client-side scripts associated with the element's events, which are triggered when the events occur."}},{name:"value",description:{kind:"markdown",value:"The initial value of the button. It defines the value associated with the button which is submitted with the form data. This value is passed to the server in params when the form is submitted."}},{name:"autocomplete",description:'The use of this attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button "The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.") is nonstandard and Firefox-specific. By default, unlike other browsers, [Firefox persists the dynamic disabled state](https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing) of a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button "The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.") across page loads. Setting the value of this attribute to `off` (i.e. `autocomplete="off"`) disables this feature. See [bug\xa0654072](https://bugzilla.mozilla.org/show_bug.cgi?id=654072 "if disabled state is changed with javascript, the normal state doesn\'t return after refreshing the page").'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/button"}]},{name:"select",description:{kind:"markdown",value:"The select element represents a control for selecting amongst a set of options."},attributes:[{name:"autocomplete",valueSet:"inputautocomplete",description:{kind:"markdown",value:'A [`DOMString`](https://developer.mozilla.org/en-US/docs/Web/API/DOMString "DOMString is a UTF-16 String. As JavaScript already uses such strings, DOMString is mapped directly to a String.") providing a hint for a [user agent\'s](https://developer.mozilla.org/en-US/docs/Glossary/user_agent "user agent\'s: A user agent is a computer program representing a person, for example, a browser in a Web context.") autocomplete feature. See [The HTML autocomplete attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for a complete list of values and details on how to use autocomplete.'}},{name:"autofocus",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form element in a document can have the `autofocus` attribute."}},{name:"disabled",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example `fieldset`; if there is no containing element with the `disabled` attribute set, then the control is enabled."}},{name:"form",description:{kind:"markdown",value:'This attribute lets you specify the form element to\xa0which\xa0the select element is associated\xa0(that is, its "form owner"). If this attribute is specified, its value must be the same as the `id` of a form element in the same document. This enables you to place select elements anywhere within a document, not just as descendants of their form elements.'}},{name:"multiple",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute indicates that multiple options can be selected in the list. If it is not specified, then only one option can be selected at a time. When `multiple` is specified, most browsers will show a scrolling list box instead of a single line dropdown."}},{name:"name",description:{kind:"markdown",value:"This attribute is used to specify the name of the control."}},{name:"required",valueSet:"v",description:{kind:"markdown",value:"A Boolean attribute indicating that an option with a non-empty string value must be selected."}},{name:"size",description:{kind:"markdown",value:"If the control is presented as a scrolling list box (e.g. when `multiple` is specified), this attribute represents the number of rows in the list that should be visible at one time. Browsers are not required to present a select element as a scrolled list box. The default value is 0.\n\n**Note:** According to the HTML5 specification, the default value for size should be 1; however, in practice, this has been found to break some web sites, and no other browser currently does that, so Mozilla has opted to continue to return 0 for the time being with Firefox."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/select"}]},{name:"datalist",description:{kind:"markdown",value:"The datalist element represents a set of option elements that represent predefined options for other controls. In the rendering, the datalist element represents nothing and it, along with its children, should be hidden."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/datalist"}]},{name:"optgroup",description:{kind:"markdown",value:"The optgroup element represents a group of option elements with a common label."},attributes:[{name:"disabled",valueSet:"v",description:{kind:"markdown",value:"If this Boolean attribute is set, none of the items in this option group is selectable. Often browsers grey out such control and it won't receive any browsing events, like mouse clicks or focus-related ones."}},{name:"label",description:{kind:"markdown",value:"The name of the group of options, which the browser can use when labeling the options in the user interface. This attribute is mandatory if this element is used."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/optgroup"}]},{name:"option",description:{kind:"markdown",value:"The option element represents an option in a select element or as part of a list of suggestions in a datalist element."},attributes:[{name:"disabled",valueSet:"v",description:{kind:"markdown",value:'If this Boolean attribute is set, this option is not checkable. Often browsers grey out such control and it won\'t receive any browsing event, like mouse clicks or focus-related ones. If this attribute is not set, the element can still be disabled if one of its ancestors is a disabled [`<optgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup "The HTML <optgroup> element creates a grouping of options within a <select> element.") element.'}},{name:"label",description:{kind:"markdown",value:"This attribute is text for the label indicating the meaning of the option. If the `label` attribute isn't defined, its value is that of the element text content."}},{name:"selected",valueSet:"v",description:{kind:"markdown",value:'If present, this Boolean attribute indicates that the option is initially selected. If the `<option>` element is the descendant of a [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select "The HTML <select> element represents a control that provides a menu of options") element whose [`multiple`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple) attribute is not set, only one single `<option>` of this [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select "The HTML <select> element represents a control that provides a menu of options") element may have the `selected` attribute.'}},{name:"value",description:{kind:"markdown",value:"The content of this attribute represents the value to be submitted with the form, should this option be selected.\xa0If this attribute is omitted, the value is taken from the text content of the option element."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/option"}]},{name:"textarea",description:{kind:"markdown",value:"The textarea element represents a multiline plain text edit control for the element's raw value. The contents of the control represent the control's default value."},attributes:[{name:"autocomplete",valueSet:"inputautocomplete",description:{kind:"markdown",value:'This attribute indicates whether the value of the control can be automatically completed by the browser. Possible values are:\n\n* `off`: The user must explicitly enter a value into this field for every use, or the document provides its own auto-completion method; the browser does not automatically complete the entry.\n* `on`: The browser can automatically complete the value based on values that the user has entered during previous uses.\n\nIf the `autocomplete` attribute is not specified on a `<textarea>` element, then the browser uses the `autocomplete` attribute value of the `<textarea>` element\'s form owner. The form owner is either the [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element that this `<textarea>` element is a descendant of or the form element whose `id` is specified by the `form` attribute of the input element. For more information, see the [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-autocomplete) attribute in [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.").'}},{name:"autofocus",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form-associated element in a document can have this attribute specified."}},{name:"cols",description:{kind:"markdown",value:"The visible width of the text control, in average character widths. If it is specified, it must be a positive integer. If it is not specified, the default value is `20`."}},{name:"dirname"},{name:"disabled",valueSet:"v",description:{kind:"markdown",value:'This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset "The HTML <fieldset> element is used to group several controls as well as labels (<label>) within a web form."); if there is no containing element when the `disabled` attribute is set, the control is enabled.'}},{name:"form",description:{kind:"markdown",value:'The form element that the `<textarea>` element is associated with (its "form owner"). The value of the attribute must be the `id` of a form element in the same document. If this attribute is not specified, the `<textarea>` element must be a descendant of a form element. This attribute enables you to place `<textarea>` elements anywhere within a document, not just as descendants of form elements.'}},{name:"inputmode",valueSet:"im"},{name:"maxlength",description:{kind:"markdown",value:"The maximum number of characters (unicode code points) that the user can enter. If this value isn't specified, the user can enter an unlimited number of characters."}},{name:"minlength",description:{kind:"markdown",value:"The minimum number of characters (unicode code points) required that the user should enter."}},{name:"name",description:{kind:"markdown",value:"The name of the control."}},{name:"placeholder",description:{kind:"markdown",value:'A hint to the user of what can be entered in the control. Carriage returns or line-feeds within the placeholder text must be treated as line breaks when rendering the hint.\n\n**Note:** Placeholders should only be used to show an example of the type of data that should be entered into a form; they are _not_ a substitute for a proper [`<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label "The HTML <label> element represents a caption for an item in a user interface.") element tied to the input. See [Labels and placeholders](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Labels_and_placeholders "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") in [<input>: The Input (Form Input) element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") for a full explanation.'}},{name:"readonly",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute indicates that the user cannot modify the value of the control. Unlike the `disabled` attribute, the `readonly` attribute does not prevent the user from clicking or selecting in the control. The value of a read-only control is still submitted with the form."}},{name:"required",valueSet:"v",description:{kind:"markdown",value:"This attribute specifies that the user must fill in a value before submitting a form."}},{name:"rows",description:{kind:"markdown",value:"The number of visible text lines for the control."}},{name:"wrap",valueSet:"w",description:{kind:"markdown",value:"Indicates how the control wraps text. Possible values are:\n\n* `hard`: The browser automatically inserts line breaks (CR+LF) so that each line has no more than the width of the control; the `cols` attribute must also be specified for this to take effect.\n* `soft`: The browser ensures that all line breaks in the value consist of a CR+LF pair, but does not insert any additional line breaks.\n* `off` : Like `soft` but changes appearance to `white-space: pre` so line segments exceeding `cols` are not wrapped and the `<textarea>` becomes horizontally scrollable.\n\nIf this attribute is not specified, `soft` is its default value."}},{name:"autocapitalize",description:"This is a non-standard attribute supported by WebKit on iOS (therefore nearly all browsers running on iOS, including Safari, Firefox, and Chrome), which controls whether and how the text value should be automatically capitalized as it is entered/edited by the user. The non-deprecated values are available in iOS 5 and later. Possible values are:\n\n* `none`: Completely disables automatic capitalization.\n* `sentences`: Automatically capitalize the first letter of sentences.\n* `words`: Automatically capitalize the first letter of words.\n* `characters`: Automatically capitalize all characters.\n* `on`: Deprecated since iOS 5.\n* `off`: Deprecated since iOS 5."},{name:"spellcheck",description:"Specifies whether the `<textarea>` is subject to spell checking by the underlying browser/OS. the value can be:\n\n* `true`: Indicates that the element needs to have its spelling and grammar checked.\n* `default` : Indicates that the element is to act according to a default behavior, possibly based on the parent element's own `spellcheck` value.\n* `false` : Indicates that the element should not be spell checked."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/textarea"}]},{name:"output",description:{kind:"markdown",value:"The output element represents the result of a calculation performed by the application, or the result of a user action."},attributes:[{name:"for",description:{kind:"markdown",value:"A space-separated list of other elements\u2019 [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id)s, indicating that those elements contributed input values to (or otherwise affected) the calculation."}},{name:"form",description:{kind:"markdown",value:'The [form element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form) that this element is associated with (its "form owner"). The value of the attribute must be an `id` of a form element in the same document. If this attribute is not specified, the output element must be a descendant of a form element. This attribute enables you to place output elements anywhere within a document, not just as descendants of their form elements.'}},{name:"name",description:{kind:"markdown",value:'The name of the element, exposed in the [`HTMLFormElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement "The HTMLFormElement interface represents a <form> element in the DOM; it allows access to and in some cases modification of aspects of the form, as well as access to its component elements.") API.'}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/output"}]},{name:"progress",description:{kind:"markdown",value:"The progress element represents the completion progress of a task. The progress is either indeterminate, indicating that progress is being made but that it is not clear how much more work remains to be done before the task is complete (e.g. because the task is waiting for a remote host to respond), or the progress is a number in the range zero to a maximum, giving the fraction of work that has so far been completed."},attributes:[{name:"value",description:{kind:"markdown",value:"This attribute specifies how much of the task that has been completed. It must be a valid floating point number between 0 and `max`, or between 0 and 1 if `max` is omitted. If there is no `value` attribute, the progress bar is indeterminate; this indicates that an activity is ongoing with no indication of how long it is expected to take."}},{name:"max",description:{kind:"markdown",value:"This attribute describes how much work the task indicated by the `progress` element requires. The `max` attribute, if present, must have a value greater than zero and be a valid floating point number. The default value is 1."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/progress"}]},{name:"meter",description:{kind:"markdown",value:"The meter element represents a scalar measurement within a known range, or a fractional value; for example disk usage, the relevance of a query result, or the fraction of a voting population to have selected a particular candidate."},attributes:[{name:"value",description:{kind:"markdown",value:"The current numeric value. This must be between the minimum and maximum values (`min` attribute and `max` attribute) if they are specified. If unspecified or malformed, the value is 0. If specified, but not within the range given by the `min` attribute and `max` attribute, the value is equal to the nearest end of the range.\n\n**Usage note:** Unless the `value` attribute is between `0` and `1` (inclusive), the `min` and `max` attributes should define the range so that the `value` attribute's value is within it."}},{name:"min",description:{kind:"markdown",value:"The lower numeric bound of the measured range. This must be less than the maximum value (`max` attribute), if specified. If unspecified, the minimum value is 0."}},{name:"max",description:{kind:"markdown",value:"The upper numeric bound of the measured range. This must be greater than the minimum value (`min` attribute), if specified. If unspecified, the maximum value is 1."}},{name:"low",description:{kind:"markdown",value:"The upper numeric bound of the low end of the measured range. This must be greater than the minimum value (`min` attribute), and it also must be less than the high value and maximum value (`high` attribute and `max` attribute, respectively), if any are specified. If unspecified, or if less than the minimum value, the `low` value is equal to the minimum value."}},{name:"high",description:{kind:"markdown",value:"The lower numeric bound of the high end of the measured range. This must be less than the maximum value (`max` attribute), and it also must be greater than the low value and minimum value (`low` attribute and **min** attribute, respectively), if any are specified. If unspecified, or if greater than the maximum value, the `high` value is equal to the maximum value."}},{name:"optimum",description:{kind:"markdown",value:"This attribute indicates the optimal numeric value. It must be within the range (as defined by the `min` attribute and `max` attribute). When used with the `low` attribute and `high` attribute, it gives an indication where along the range is considered preferable. For example, if it is between the `min` attribute and the `low` attribute, then the lower range is considered preferred."}},{name:"form",description:"This attribute associates the element with a `form` element that has ownership of the `meter` element. For example, a `meter` might be displaying a range corresponding to an `input` element of `type` _number_. This attribute is only used if the `meter` element is being used as a form-associated element; even then, it may be omitted if the element appears as a descendant of a `form` element."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/meter"}]},{name:"fieldset",description:{kind:"markdown",value:"The fieldset element represents a set of form controls optionally grouped under a common name."},attributes:[{name:"disabled",valueSet:"v",description:{kind:"markdown",value:"If this Boolean attribute is set, all form controls that are descendants of the `<fieldset>`, are disabled, meaning they are not editable and won't be submitted along with the `<form>`. They won't receive any browsing events, like mouse clicks or focus-related events. By default browsers display such controls grayed out. Note that form elements inside the [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend \"The HTML <legend> element represents a caption for the content of its parent <fieldset>.\") element won't be disabled."}},{name:"form",description:{kind:"markdown",value:'This attribute takes the value of the `id` attribute of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element you want the `<fieldset>` to be part of, even if it is not inside the form.'}},{name:"name",description:{kind:"markdown",value:'The name associated with the group.\n\n**Note**: The caption for the fieldset is given by the first [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend "The HTML <legend> element represents a caption for the content of its parent <fieldset>.") element nested inside it.'}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/fieldset"}]},{name:"legend",description:{kind:"markdown",value:"The legend element represents a caption for the rest of the contents of the legend element's parent fieldset element, if any."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/legend"}]},{name:"details",description:{kind:"markdown",value:"The details element represents a disclosure widget from which the user can obtain additional information or controls."},attributes:[{name:"open",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute indicates whether or not the details \u2014 that is, the contents of the `<details>` element \u2014 are currently visible. The default, `false`, means the details are not visible."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/details"}]},{name:"summary",description:{kind:"markdown",value:"The summary element represents a summary, caption, or legend for the rest of the contents of the summary element's parent details element, if any."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/summary"}]},{name:"dialog",description:{kind:"markdown",value:"The dialog element represents a part of an application that a user interacts with to perform a task, for example a dialog box, inspector, or window."},attributes:[{name:"open",description:"Indicates that the dialog is active and available for interaction. When the `open` attribute is not set, the dialog shouldn't be shown to the user."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/dialog"}]},{name:"script",description:{kind:"markdown",value:"The script element allows authors to include dynamic script and data blocks in their documents. The element does not represent content for the user."},attributes:[{name:"src",description:{kind:"markdown",value:"This attribute specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document.\n\nIf a `script` element has a `src` attribute specified, it should not have a script embedded inside its tags."}},{name:"type",description:{kind:"markdown",value:'This attribute indicates the type of script represented. The value of this attribute will be in one of the following categories:\n\n* **Omitted or a JavaScript MIME type:** For HTML5-compliant browsers this indicates the script is JavaScript. HTML5 specification urges authors to omit the attribute rather than provide a redundant MIME type. In earlier browsers, this identified the scripting language of the embedded or imported (via the `src` attribute) code. JavaScript MIME types are [listed in the specification](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#JavaScript_types).\n* **`module`:** For HTML5-compliant browsers the code is treated as a JavaScript module. The processing of the script contents is not affected by the `charset` and `defer` attributes. For information on using `module`, see [ES6 in Depth: Modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/). Code may behave differently when the `module` keyword is used.\n* **Any other value:** The embedded content is treated as a data block which won\'t be processed by the browser. Developers must use a valid MIME type that is not a JavaScript MIME type to denote data blocks. The `src` attribute will be ignored.\n\n**Note:** in Firefox you could specify the version of JavaScript contained in a `<script>` element by including a non-standard `version` parameter inside the `type` attribute \u2014 for example `type="text/javascript;version=1.8"`. This has been removed in Firefox 59 (see [bug\xa01428745](https://bugzilla.mozilla.org/show_bug.cgi?id=1428745 "FIXED: Remove support for version parameter from script loader")).'}},{name:"charset"},{name:"async",valueSet:"v",description:{kind:"markdown",value:'This is a Boolean attribute indicating that the browser should, if possible, load the script asynchronously.\n\nThis attribute must not be used if the `src` attribute is absent (i.e. for inline scripts). If it is included in this case it will have no effect.\n\nBrowsers usually assume the worst case scenario and load scripts synchronously, (i.e. `async="false"`) during HTML parsing.\n\nDynamically inserted scripts (using [`document.createElement()`](https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement "In an HTML document, the document.createElement() method creates the HTML element specified by tagName, or an HTMLUnknownElement if tagName isn\'t recognized.")) load asynchronously by default, so to turn on synchronous loading (i.e. scripts load in the order they were inserted) set `async="false"`.\n\nSee [Browser compatibility](#Browser_compatibility) for notes on browser support. See also [Async scripts for asm.js](https://developer.mozilla.org/en-US/docs/Games/Techniques/Async_scripts).'}},{name:"defer",valueSet:"v",description:{kind:"markdown",value:'This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the document has been parsed, but before firing [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded "/en-US/docs/Web/Events/DOMContentLoaded").\n\nScripts with the `defer` attribute will prevent the `DOMContentLoaded` event from firing until the script has loaded and finished evaluating.\n\nThis attribute must not be used if the `src` attribute is absent (i.e. for inline scripts), in this case it would have no effect.\n\nTo achieve a similar effect for dynamically inserted scripts use `async="false"` instead. Scripts with the `defer` attribute will execute in the order in which they appear in the document.'}},{name:"crossorigin",valueSet:"xo",description:{kind:"markdown",value:'Normal `script` elements pass minimal information to the [`window.onerror`](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror "The onerror property of the GlobalEventHandlers mixin is an EventHandler that processes error events.") for scripts which do not pass the standard [CORS](https://developer.mozilla.org/en-US/docs/Glossary/CORS "CORS: CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.") checks. To allow error logging for sites which use a separate domain for static media, use this attribute. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for a more descriptive explanation of its valid arguments.'}},{name:"nonce",description:{kind:"markdown",value:"A cryptographic nonce (number used once) to whitelist inline scripts in a [script-src Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src). The server must generate a unique nonce value each time it transmits a policy. It is critical to provide a nonce that cannot be guessed as bypassing a resource's policy is otherwise trivial."}},{name:"integrity",description:"This attribute contains inline metadata that a user agent can use to verify that a fetched resource has been delivered free of unexpected manipulation. See [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity)."},{name:"nomodule",description:"This Boolean attribute is set to indicate that the script should not be executed in browsers that support [ES2015 modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) \u2014 in effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code."},{name:"referrerpolicy",description:'Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer) to send when fetching the script, or resources fetched by the script:\n\n* `no-referrer`: The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer "The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.") header will not be sent.\n* `no-referrer-when-downgrade` (default): The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer "The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.") header will not be sent to [origin](https://developer.mozilla.org/en-US/docs/Glossary/origin "origin: Web content\'s origin is defined by the scheme (protocol), host (domain), and port of the URL used to access it. Two objects have the same origin only when the scheme, host, and port all match.")s without [TLS](https://developer.mozilla.org/en-US/docs/Glossary/TLS "TLS: Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), is a protocol used by applications to communicate securely across a network, preventing tampering with and eavesdropping on email, web browsing, messaging, and other protocols.") ([HTTPS](https://developer.mozilla.org/en-US/docs/Glossary/HTTPS "HTTPS: HTTPS (HTTP Secure) is an encrypted version of the HTTP protocol. It usually uses SSL or TLS to encrypt all communication between a client and a server. This secure connection allows clients to safely exchange sensitive data with a server, for example for banking activities or online shopping.")).\n* `origin`: The sent referrer will be limited to the origin of the referring page: its [scheme](https://developer.mozilla.org/en-US/docs/Archive/Mozilla/URIScheme), [host](https://developer.mozilla.org/en-US/docs/Glossary/host "host: A host is a device connected to the Internet (or a local network). Some hosts called servers offer additional services like serving webpages or storing files and emails."), and [port](https://developer.mozilla.org/en-US/docs/Glossary/port "port: For a computer connected to a network with an IP address, a port is a communication endpoint. Ports are designated by numbers, and below 1024 each port is associated by default with a specific protocol.").\n* `origin-when-cross-origin`: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path.\n* `same-origin`: A referrer will be sent for [same origin](https://developer.mozilla.org/en-US/docs/Glossary/Same-origin_policy "same origin: The same-origin policy is a critical security mechanism that restricts how a document or script loaded from one origin can interact with a resource from another origin."), but cross-origin requests will contain no referrer information.\n* `strict-origin`: Only send the origin of the document as the referrer when the protocol security level stays the same (e.g. HTTPS\u2192HTTPS), but don\'t send it to a less secure destination (e.g. HTTPS\u2192HTTP).\n* `strict-origin-when-cross-origin`: Send a full URL when performing a same-origin request, but only send the origin when the protocol security level stays the same (e.g.HTTPS\u2192HTTPS), and send no header to a less secure destination (e.g. HTTPS\u2192HTTP).\n* `unsafe-url`: The referrer will include the origin _and_ the path (but not the [fragment](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/hash), [password](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/password), or [username](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/username)). **This value is unsafe**, because it leaks origins and paths from TLS-protected resources to insecure origins.\n\n**Note**: An empty string value (`""`) is both the default value, and a fallback value if `referrerpolicy` is not supported. If `referrerpolicy` is not explicitly specified on the `<script>` element, it will adopt a higher-level referrer policy, i.e. one set on the whole document or domain. If a higher-level policy is not available,\xa0the empty string is treated as being equivalent to `no-referrer-when-downgrade`.'},{name:"text",description:"Like the `textContent` attribute, this attribute sets the text content of the element. Unlike the `textContent` attribute, however, this attribute is evaluated as executable code after the node is inserted into the DOM."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/script"}]},{name:"noscript",description:{kind:"markdown",value:"The noscript element represents nothing if scripting is enabled, and represents its children if scripting is disabled. It is used to present different markup to user agents that support scripting and those that don't support scripting, by affecting how the document is parsed."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/noscript"}]},{name:"template",description:{kind:"markdown",value:"The template element is used to declare fragments of HTML that can be cloned and inserted in the document by script."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/template"}]},{name:"canvas",description:{kind:"markdown",value:"The canvas element provides scripts with a resolution-dependent bitmap canvas, which can be used for rendering graphs, game graphics, art, or other visual images on the fly."},attributes:[{name:"width",description:{kind:"markdown",value:"The width of the coordinate space in CSS pixels. Defaults to 300."}},{name:"height",description:{kind:"markdown",value:"The height of the coordinate space in CSS pixels. Defaults to 150."}},{name:"moz-opaque",description:"Lets the canvas know whether or not translucency will be a factor. If the canvas knows there's no translucency, painting performance can be optimized. This is only supported by Mozilla-based browsers; use the standardized [`canvas.getContext('2d', { alpha: false })`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext \"The HTMLCanvasElement.getContext() method returns a drawing context on the canvas, or null if the context identifier is not supported.\") instead."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/canvas"}]}],globalAttributes:[{name:"accesskey",description:{kind:"markdown",value:"Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/accesskey"}]},{name:"autocapitalize",description:{kind:"markdown",value:"Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:\n\n* `off` or `none`, no autocapitalization is applied (all letters default to lowercase)\n* `on` or `sentences`, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase\n* `words`, the first letter of each word defaults to a capital letter; all other letters default to lowercase\n* `characters`, all letters should default to uppercase"},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/autocapitalize"}]},{name:"class",description:{kind:"markdown",value:'A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the [class selectors](/en-US/docs/Web/CSS/Class_selectors) or functions like the method [`Document.getElementsByClassName()`](/en-US/docs/Web/API/Document/getElementsByClassName "returns an array-like object of all child elements which have all of the given class names.").'},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/class"}]},{name:"contenteditable",description:{kind:"markdown",value:"An enumerated attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:\n\n* `true` or the _empty string_, which indicates that the element must be editable;\n* `false`, which indicates that the element must not be editable."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/contenteditable"}]},{name:"contextmenu",description:{kind:"markdown",value:'The `[**id**](#attr-id)` of a [`<menu>`](/en-US/docs/Web/HTML/Element/menu "The HTML <menu> element represents a group of commands that a user can perform or activate. This includes both list menus, which might appear across the top of a screen, as well as context menus, such as those that might appear underneath a button after it has been clicked.") to use as the contextual menu for this element.'},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/contextmenu"}]},{name:"dir",description:{kind:"markdown",value:"An enumerated attribute indicating the directionality of the element's text. It can have the following values:\n\n* `ltr`, which means _left to right_ and is to be used for languages that are written from the left to the right (like English);\n* `rtl`, which means _right to left_ and is to be used for languages that are written from the right to the left (like Arabic);\n* `auto`, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element."},valueSet:"d",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/dir"}]},{name:"draggable",description:{kind:"markdown",value:"An enumerated attribute indicating whether the element can be dragged, using the [Drag and Drop API](/en-us/docs/DragDrop/Drag_and_Drop). It can have the following values:\n\n* `true`, which indicates that the element may be dragged\n* `false`, which indicates that the element may not be dragged."},valueSet:"b",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/draggable"}]},{name:"dropzone",description:{kind:"markdown",value:"An enumerated attribute indicating what types of content can be dropped on an element, using the [Drag and Drop API](/en-US/docs/DragDrop/Drag_and_Drop). It can have the following values:\n\n* `copy`, which indicates that dropping will create a copy of the element that was dragged\n* `move`, which indicates that the element that was dragged will be moved to this new location.\n* `link`, will create a link to the dragged data."}},{name:"exportparts",description:{kind:"markdown",value:"Used to transitively export shadow parts from a nested shadow tree into a containing light tree."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/exportparts"}]},{name:"hidden",description:{kind:"markdown",value:"A Boolean attribute indicates that the element is not yet, or is no longer, _relevant_. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown."},valueSet:"v",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/hidden"}]},{name:"id",description:{kind:"markdown",value:"Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS)."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/id"}]},{name:"inputmode",description:{kind:"markdown",value:'Provides a hint to browsers as to the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on [`<input>`](/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") elements, but is usable on any element while in `[contenteditable](/en-US/docs/Web/HTML/Global_attributes#attr-contenteditable)` mode.'},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/inputmode"}]},{name:"is",description:{kind:"markdown",value:"Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see [Using custom elements](/en-US/docs/Web/Web_Components/Using_custom_elements) for more details)."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/is"}]},{name:"itemid",description:{kind:"markdown",value:"The unique, global identifier of an item."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemid"}]},{name:"itemprop",description:{kind:"markdown",value:"Used to add properties to an item. Every HTML element may have an `itemprop` attribute specified, where an `itemprop` consists of a name and value pair."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemprop"}]},{name:"itemref",description:{kind:"markdown",value:"Properties that are not descendants of an element with the `itemscope` attribute can be associated with the item using an `itemref`. It provides a list of element ids (not `itemid`s) with additional properties elsewhere in the document."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemref"}]},{name:"itemscope",description:{kind:"markdown",value:"`itemscope` (usually) works along with `[itemtype](/en-US/docs/Web/HTML/Global_attributes#attr-itemtype)` to specify that the HTML contained in a block is about a particular item. `itemscope` creates the Item and defines the scope of the `itemtype` associated with it. `itemtype` is a valid URL of a vocabulary (such as [schema.org](https://schema.org/)) that describes the item and its properties context."},valueSet:"v",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemscope"}]},{name:"itemtype",description:{kind:"markdown",value:"Specifies the URL of the vocabulary that will be used to define `itemprop`s (item properties) in the data structure. `[itemscope](/en-US/docs/Web/HTML/Global_attributes#attr-itemscope)` is used to set the scope of where in the data structure the vocabulary set by `itemtype` will be active."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemtype"}]},{name:"lang",description:{kind:"markdown",value:"Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one \u201clanguage tag\u201d (made of hyphen-separated \u201clanguage subtags\u201d) in the format defined in [_Tags for Identifying Languages (BCP47)_](https://www.ietf.org/rfc/bcp/bcp47.txt). [**xml:lang**](#attr-xml:lang) has priority over it."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/lang"}]},{name:"part",description:{kind:"markdown",value:'A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the [`::part`](/en-US/docs/Web/CSS/::part "The ::part CSS pseudo-element represents any element within a shadow tree that has a matching part attribute.") pseudo-element.'},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/part"}]},{name:"role",valueSet:"roles"},{name:"slot",description:{kind:"markdown",value:"Assigns a slot in a [shadow DOM](/en-US/docs/Web/Web_Components/Shadow_DOM) shadow tree to an element: An element with a `slot` attribute is assigned to the slot created by the [`<slot>`](/en-US/docs/Web/HTML/Element/slot \"The HTML <slot> element\u2014part of the Web Components technology suite\u2014is a placeholder inside a web component that you can fill with your own markup, which lets you create separate DOM trees and present them together.\") element whose `[name](/en-US/docs/Web/HTML/Element/slot#attr-name)` attribute's value matches that `slot` attribute's value."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/slot"}]},{name:"spellcheck",description:{kind:"markdown",value:"An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:\n\n* `true`, which indicates that the element should be, if possible, checked for spelling errors;\n* `false`, which indicates that the element should not be checked for spelling errors."},valueSet:"b",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/spellcheck"}]},{name:"style",description:{kind:"markdown",value:'Contains [CSS](/en-US/docs/Web/CSS) styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the [`<style>`](/en-US/docs/Web/HTML/Element/style "The HTML <style> element contains style information for a document, or part of a document.") element have mainly the purpose of allowing for quick styling, for example for testing purposes.'},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/style"}]},{name:"tabindex",description:{kind:"markdown",value:"An integer attribute indicating if the element can take input focus (is _focusable_), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:\n\n* a _negative value_ means that the element should be focusable, but should not be reachable via sequential keyboard navigation;\n* `0` means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;\n* a _positive value_ means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the [**tabindex**](#attr-tabindex). If several elements share the same tabindex, their relative order follows their relative positions in the document."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/tabindex"}]},{name:"title",description:{kind:"markdown",value:"Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/title"}]},{name:"translate",description:{kind:"markdown",value:"An enumerated attribute that is used to specify whether an element's attribute values and the values of its [`Text`](/en-US/docs/Web/API/Text \"The Text interface represents the textual content of Element or Attr. If an element has no markup within its content, it has a single child implementing Text that contains the element's text. However, if the element contains markup, it is parsed into information items and Text nodes that form its children.\") node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:\n\n* empty string and `yes`, which indicates that the element will be translated.\n* `no`, which indicates that the element will not be translated."},valueSet:"y",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/translate"}]},{name:"onabort",description:{kind:"markdown",value:"The loading of a resource has been aborted."}},{name:"onblur",description:{kind:"markdown",value:"An element has lost focus (does not bubble)."}},{name:"oncanplay",description:{kind:"markdown",value:"The user agent can play the media, but estimates that not enough data has been loaded to play the media up to its end without having to stop for further buffering of content."}},{name:"oncanplaythrough",description:{kind:"markdown",value:"The user agent can play the media up to its end without having to stop for further buffering of content."}},{name:"onchange",description:{kind:"markdown",value:"The change event is fired for <input>, <select>, and <textarea> elements when a change to the element's value is committed by the user."}},{name:"onclick",description:{kind:"markdown",value:"A pointing device button has been pressed and released on an element."}},{name:"oncontextmenu",description:{kind:"markdown",value:"The right button of the mouse is clicked (before the context menu is displayed)."}},{name:"ondblclick",description:{kind:"markdown",value:"A pointing device button is clicked twice on an element."}},{name:"ondrag",description:{kind:"markdown",value:"An element or text selection is being dragged (every 350ms)."}},{name:"ondragend",description:{kind:"markdown",value:"A drag operation is being ended (by releasing a mouse button or hitting the escape key)."}},{name:"ondragenter",description:{kind:"markdown",value:"A dragged element or text selection enters a valid drop target."}},{name:"ondragleave",description:{kind:"markdown",value:"A dragged element or text selection leaves a valid drop target."}},{name:"ondragover",description:{kind:"markdown",value:"An element or text selection is being dragged over a valid drop target (every 350ms)."}},{name:"ondragstart",description:{kind:"markdown",value:"The user starts dragging an element or text selection."}},{name:"ondrop",description:{kind:"markdown",value:"An element is dropped on a valid drop target."}},{name:"ondurationchange",description:{kind:"markdown",value:"The duration attribute has been updated."}},{name:"onemptied",description:{kind:"markdown",value:"The media has become empty; for example, this event is sent if the media has already been loaded (or partially loaded), and the load() method is called to reload it."}},{name:"onended",description:{kind:"markdown",value:"Playback has stopped because the end of the media was reached."}},{name:"onerror",description:{kind:"markdown",value:"A resource failed to load."}},{name:"onfocus",description:{kind:"markdown",value:"An element has received focus (does not bubble)."}},{name:"onformchange"},{name:"onforminput"},{name:"oninput",description:{kind:"markdown",value:"The value of an element changes or the content of an element with the attribute contenteditable is modified."}},{name:"oninvalid",description:{kind:"markdown",value:"A submittable element has been checked and doesn't satisfy its constraints."}},{name:"onkeydown",description:{kind:"markdown",value:"A key is pressed down."}},{name:"onkeypress",description:{kind:"markdown",value:"A key is pressed down and that key normally produces a character value (use input instead)."}},{name:"onkeyup",description:{kind:"markdown",value:"A key is released."}},{name:"onload",description:{kind:"markdown",value:"A resource and its dependent resources have finished loading."}},{name:"onloadeddata",description:{kind:"markdown",value:"The first frame of the media has finished loading."}},{name:"onloadedmetadata",description:{kind:"markdown",value:"The metadata has been loaded."}},{name:"onloadstart",description:{kind:"markdown",value:"Progress has begun."}},{name:"onmousedown",description:{kind:"markdown",value:"A pointing device button (usually a mouse) is pressed on an element."}},{name:"onmousemove",description:{kind:"markdown",value:"A pointing device is moved over an element."}},{name:"onmouseout",description:{kind:"markdown",value:"A pointing device is moved off the element that has the listener attached or off one of its children."}},{name:"onmouseover",description:{kind:"markdown",value:"A pointing device is moved onto the element that has the listener attached or onto one of its children."}},{name:"onmouseup",description:{kind:"markdown",value:"A pointing device button is released over an element."}},{name:"onmousewheel"},{name:"onpause",description:{kind:"markdown",value:"Playback has been paused."}},{name:"onplay",description:{kind:"markdown",value:"Playback has begun."}},{name:"onplaying",description:{kind:"markdown",value:"Playback is ready to start after having been paused or delayed due to lack of data."}},{name:"onprogress",description:{kind:"markdown",value:"In progress."}},{name:"onratechange",description:{kind:"markdown",value:"The playback rate has changed."}},{name:"onreset",description:{kind:"markdown",value:"A form is reset."}},{name:"onresize",description:{kind:"markdown",value:"The document view has been resized."}},{name:"onreadystatechange",description:{kind:"markdown",value:"The readyState attribute of a document has changed."}},{name:"onscroll",description:{kind:"markdown",value:"The document view or an element has been scrolled."}},{name:"onseeked",description:{kind:"markdown",value:"A seek operation completed."}},{name:"onseeking",description:{kind:"markdown",value:"A seek operation began."}},{name:"onselect",description:{kind:"markdown",value:"Some text is being selected."}},{name:"onshow",description:{kind:"markdown",value:"A contextmenu event was fired on/bubbled to an element that has a contextmenu attribute"}},{name:"onstalled",description:{kind:"markdown",value:"The user agent is trying to fetch media data, but data is unexpectedly not forthcoming."}},{name:"onsubmit",description:{kind:"markdown",value:"A form is submitted."}},{name:"onsuspend",description:{kind:"markdown",value:"Media data loading has been suspended."}},{name:"ontimeupdate",description:{kind:"markdown",value:"The time indicated by the currentTime attribute has been updated."}},{name:"onvolumechange",description:{kind:"markdown",value:"The volume has changed."}},{name:"onwaiting",description:{kind:"markdown",value:"Playback has stopped because of a temporary lack of data."}},{name:"aria-activedescendant",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-activedescendant"}],description:{kind:"markdown",value:"Identifies the currently active element when DOM focus is on a [`composite`](https://www.w3.org/TR/wai-aria-1.1/#composite) widget, [`textbox`](https://www.w3.org/TR/wai-aria-1.1/#textbox), [`group`](https://www.w3.org/TR/wai-aria-1.1/#group), or [`application`](https://www.w3.org/TR/wai-aria-1.1/#application)."}},{name:"aria-atomic",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-atomic"}],description:{kind:"markdown",value:"Indicates whether [assistive technologies](https://www.w3.org/TR/wai-aria-1.1/#dfn-assistive-technology) will present all, or only parts of, the changed region based on the change notifications defined by the [`aria-relevant`](https://www.w3.org/TR/wai-aria-1.1/#aria-relevant) attribute."}},{name:"aria-autocomplete",valueSet:"autocomplete",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-autocomplete"}],description:{kind:"markdown",value:"Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made."}},{name:"aria-busy",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-busy"}],description:{kind:"markdown",value:"Indicates an element is being modified and that assistive technologies _MAY_ want to wait until the modifications are complete before exposing them to the user."}},{name:"aria-checked",valueSet:"tristate",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-checked"}],description:{kind:"markdown",value:'Indicates the current "checked" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of checkboxes, radio buttons, and other [widgets](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.1/#aria-pressed) and [`aria-selected`](https://www.w3.org/TR/wai-aria-1.1/#aria-selected).'}},{name:"aria-colcount",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-colcount"}],description:{kind:"markdown",value:"Defines the total number of columns in a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-colindex)."}},{name:"aria-colindex",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-colindex"}],description:{kind:"markdown",value:"Defines an [element's](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) column index or position with respect to the total number of columns within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colcount`](https://www.w3.org/TR/wai-aria-1.1/#aria-colcount) and [`aria-colspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-colspan)."}},{name:"aria-colspan",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-colspan"}],description:{kind:"markdown",value:"Defines the number of columns spanned by a cell or gridcell within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-colindex) and [`aria-rowspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan)."}},{name:"aria-controls",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-controls"}],description:{kind:"markdown",value:"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) whose contents or presence are controlled by the current element. See related [`aria-owns`](https://www.w3.org/TR/wai-aria-1.1/#aria-owns)."}},{name:"aria-current",valueSet:"current",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-current"}],description:{kind:"markdown",value:"Indicates the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that represents the current item within a container or set of related elements."}},{name:"aria-describedat",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-describedat"}]},{name:"aria-describedby",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-describedby"}],description:{kind:"markdown",value:"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) that describes the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-labelledby`](https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby)."}},{name:"aria-disabled",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-disabled"}],description:{kind:"markdown",value:"Indicates that the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is [perceivable](https://www.w3.org/TR/wai-aria-1.1/#dfn-perceivable) but disabled, so it is not editable or otherwise [operable](https://www.w3.org/TR/wai-aria-1.1/#dfn-operable). See related [`aria-hidden`](https://www.w3.org/TR/wai-aria-1.1/#aria-hidden) and [`aria-readonly`](https://www.w3.org/TR/wai-aria-1.1/#aria-readonly)."}},{name:"aria-dropeffect",valueSet:"dropeffect",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-dropeffect"}],description:{kind:"markdown",value:"\\[Deprecated in ARIA 1.1\\] Indicates what functions can be performed when a dragged object is released on the drop target."}},{name:"aria-errormessage",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-errormessage"}],description:{kind:"markdown",value:"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that provides an error message for the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-invalid`](https://www.w3.org/TR/wai-aria-1.1/#aria-invalid) and [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby)."}},{name:"aria-expanded",valueSet:"u",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-expanded"}],description:{kind:"markdown",value:"Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed."}},{name:"aria-flowto",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-flowto"}],description:{kind:"markdown",value:"Identifies the next [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order."}},{name:"aria-grabbed",valueSet:"u",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-grabbed"}],description:{kind:"markdown",value:'\\[Deprecated in ARIA 1.1\\] Indicates an element\'s "grabbed" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) in a drag-and-drop operation.'}},{name:"aria-haspopup",valueSet:"haspopup",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-haspopup"}],description:{kind:"markdown",value:"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element)."}},{name:"aria-hidden",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-hidden"}],description:{kind:"markdown",value:"Indicates whether the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is exposed to an accessibility API. See related [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.1/#aria-disabled)."}},{name:"aria-invalid",valueSet:"invalid",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-invalid"}],description:{kind:"markdown",value:"Indicates the entered value does not conform to the format expected by the application. See related [`aria-errormessage`](https://www.w3.org/TR/wai-aria-1.1/#aria-errormessage)."}},{name:"aria-kbdshortcuts",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-kbdshortcuts"}]},{name:"aria-label",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-label"}],description:{kind:"markdown",value:"Defines a string value that labels the current element. See related [`aria-labelledby`](https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby)."}},{name:"aria-labelledby",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby"}],description:{kind:"markdown",value:"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) that labels the current element. See related [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby)."}},{name:"aria-level",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-level"}],description:{kind:"markdown",value:"Defines the hierarchical level of an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) within a structure."}},{name:"aria-live",valueSet:"live",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-live"}],description:{kind:"markdown",value:"Indicates that an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) will be updated, and describes the types of updates the [user agents](https://www.w3.org/TR/wai-aria-1.1/#dfn-user-agent), [assistive technologies](https://www.w3.org/TR/wai-aria-1.1/#dfn-assistive-technology), and user can expect from the [live region](https://www.w3.org/TR/wai-aria-1.1/#dfn-live-region)."}},{name:"aria-modal",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-modal"}],description:{kind:"markdown",value:"Indicates whether an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is modal when displayed."}},{name:"aria-multiline",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-multiline"}],description:{kind:"markdown",value:"Indicates whether a text box accepts multiple lines of input or only a single line."}},{name:"aria-multiselectable",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-multiselectable"}],description:{kind:"markdown",value:"Indicates that the user may select more than one item from the current selectable descendants."}},{name:"aria-orientation",valueSet:"orientation",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-orientation"}],description:{kind:"markdown",value:"Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous."}},{name:"aria-owns",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-owns"}],description:{kind:"markdown",value:"Identifies an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) in order to define a visual, functional, or contextual parent/child [relationship](https://www.w3.org/TR/wai-aria-1.1/#dfn-relationship) between DOM elements where the DOM hierarchy cannot be used to represent the relationship. See related [`aria-controls`](https://www.w3.org/TR/wai-aria-1.1/#aria-controls)."}},{name:"aria-placeholder",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-placeholder"}],description:{kind:"markdown",value:"Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format."}},{name:"aria-posinset",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-posinset"}],description:{kind:"markdown",value:"Defines an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element)'s number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See related [`aria-setsize`](https://www.w3.org/TR/wai-aria-1.1/#aria-setsize)."}},{name:"aria-pressed",valueSet:"tristate",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-pressed"}],description:{kind:"markdown",value:'Indicates the current "pressed" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of toggle buttons. See related [`aria-checked`](https://www.w3.org/TR/wai-aria-1.1/#aria-checked) and [`aria-selected`](https://www.w3.org/TR/wai-aria-1.1/#aria-selected).'}},{name:"aria-readonly",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-readonly"}],description:{kind:"markdown",value:"Indicates that the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is not editable, but is otherwise [operable](https://www.w3.org/TR/wai-aria-1.1/#dfn-operable). See related [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.1/#aria-disabled)."}},{name:"aria-relevant",valueSet:"relevant",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-relevant"}],description:{kind:"markdown",value:"Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. See related [`aria-atomic`](https://www.w3.org/TR/wai-aria-1.1/#aria-atomic)."}},{name:"aria-required",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-required"}],description:{kind:"markdown",value:"Indicates that user input is required on the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) before a form may be submitted."}},{name:"aria-roledescription",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-roledescription"}],description:{kind:"markdown",value:"Defines a human-readable, author-localized description for the [role](https://www.w3.org/TR/wai-aria-1.1/#dfn-role) of an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element)."}},{name:"aria-rowcount",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-rowcount"}],description:{kind:"markdown",value:"Defines the total number of rows in a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex)."}},{name:"aria-rowindex",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex"}],description:{kind:"markdown",value:"Defines an [element's](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) row index or position with respect to the total number of rows within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowcount`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowcount) and [`aria-rowspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan)."}},{name:"aria-rowspan",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan"}],description:{kind:"markdown",value:"Defines the number of rows spanned by a cell or gridcell within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex) and [`aria-colspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-colspan)."}},{name:"aria-selected",valueSet:"u",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-selected"}],description:{kind:"markdown",value:'Indicates the current "selected" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of various [widgets](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-checked`](https://www.w3.org/TR/wai-aria-1.1/#aria-checked) and [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.1/#aria-pressed).'}},{name:"aria-setsize",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-setsize"}],description:{kind:"markdown",value:"Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See related [`aria-posinset`](https://www.w3.org/TR/wai-aria-1.1/#aria-posinset)."}},{name:"aria-sort",valueSet:"sort",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-sort"}],description:{kind:"markdown",value:"Indicates if items in a table or grid are sorted in ascending or descending order."}},{name:"aria-valuemax",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-valuemax"}],description:{kind:"markdown",value:"Defines the maximum allowed value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget)."}},{name:"aria-valuemin",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-valuemin"}],description:{kind:"markdown",value:"Defines the minimum allowed value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget)."}},{name:"aria-valuenow",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-valuenow"}],description:{kind:"markdown",value:"Defines the current value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-valuetext`](https://www.w3.org/TR/wai-aria-1.1/#aria-valuetext)."}},{name:"aria-valuetext",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-valuetext"}],description:{kind:"markdown",value:"Defines the human readable text alternative of [`aria-valuenow`](https://www.w3.org/TR/wai-aria-1.1/#aria-valuenow) for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget)."}},{name:"aria-details",description:{kind:"markdown",value:"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that provides a detailed, extended description for the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby)."}},{name:"aria-keyshortcuts",description:{kind:"markdown",value:"Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element."}}],valueSets:[{name:"b",values:[{name:"true"},{name:"false"}]},{name:"u",values:[{name:"true"},{name:"false"},{name:"undefined"}]},{name:"o",values:[{name:"on"},{name:"off"}]},{name:"y",values:[{name:"yes"},{name:"no"}]},{name:"w",values:[{name:"soft"},{name:"hard"}]},{name:"d",values:[{name:"ltr"},{name:"rtl"},{name:"auto"}]},{name:"m",values:[{name:"GET",description:{kind:"markdown",value:"Corresponds to the HTTP [GET method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3); form data are appended to the `action` attribute URI with a '?' as separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters."}},{name:"POST",description:{kind:"markdown",value:"Corresponds to the HTTP [POST method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5); form data are included in the body of the form and sent to the server."}},{name:"dialog",description:{kind:"markdown",value:"Use when the form is inside a [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog) element to close the dialog when submitted."}}]},{name:"fm",values:[{name:"GET"},{name:"POST"}]},{name:"s",values:[{name:"row"},{name:"col"},{name:"rowgroup"},{name:"colgroup"}]},{name:"t",values:[{name:"hidden"},{name:"text"},{name:"search"},{name:"tel"},{name:"url"},{name:"email"},{name:"password"},{name:"datetime"},{name:"date"},{name:"month"},{name:"week"},{name:"time"},{name:"datetime-local"},{name:"number"},{name:"range"},{name:"color"},{name:"checkbox"},{name:"radio"},{name:"file"},{name:"submit"},{name:"image"},{name:"reset"},{name:"button"}]},{name:"im",values:[{name:"verbatim"},{name:"latin"},{name:"latin-name"},{name:"latin-prose"},{name:"full-width-latin"},{name:"kana"},{name:"kana-name"},{name:"katakana"},{name:"numeric"},{name:"tel"},{name:"email"},{name:"url"}]},{name:"bt",values:[{name:"button"},{name:"submit"},{name:"reset"},{name:"menu"}]},{name:"lt",values:[{name:"1"},{name:"a"},{name:"A"},{name:"i"},{name:"I"}]},{name:"mt",values:[{name:"context"},{name:"toolbar"}]},{name:"mit",values:[{name:"command"},{name:"checkbox"},{name:"radio"}]},{name:"et",values:[{name:"application/x-www-form-urlencoded"},{name:"multipart/form-data"},{name:"text/plain"}]},{name:"tk",values:[{name:"subtitles"},{name:"captions"},{name:"descriptions"},{name:"chapters"},{name:"metadata"}]},{name:"pl",values:[{name:"none"},{name:"metadata"},{name:"auto"}]},{name:"sh",values:[{name:"circle"},{name:"default"},{name:"poly"},{name:"rect"}]},{name:"xo",values:[{name:"anonymous"},{name:"use-credentials"}]},{name:"sb",values:[{name:"allow-forms"},{name:"allow-modals"},{name:"allow-pointer-lock"},{name:"allow-popups"},{name:"allow-popups-to-escape-sandbox"},{name:"allow-same-origin"},{name:"allow-scripts"},{name:"allow-top-navigation"}]},{name:"tristate",values:[{name:"true"},{name:"false"},{name:"mixed"},{name:"undefined"}]},{name:"inputautocomplete",values:[{name:"additional-name"},{name:"address-level1"},{name:"address-level2"},{name:"address-level3"},{name:"address-level4"},{name:"address-line1"},{name:"address-line2"},{name:"address-line3"},{name:"bday"},{name:"bday-year"},{name:"bday-day"},{name:"bday-month"},{name:"billing"},{name:"cc-additional-name"},{name:"cc-csc"},{name:"cc-exp"},{name:"cc-exp-month"},{name:"cc-exp-year"},{name:"cc-family-name"},{name:"cc-given-name"},{name:"cc-name"},{name:"cc-number"},{name:"cc-type"},{name:"country"},{name:"country-name"},{name:"current-password"},{name:"email"},{name:"family-name"},{name:"fax"},{name:"given-name"},{name:"home"},{name:"honorific-prefix"},{name:"honorific-suffix"},{name:"impp"},{name:"language"},{name:"mobile"},{name:"name"},{name:"new-password"},{name:"nickname"},{name:"organization"},{name:"organization-title"},{name:"pager"},{name:"photo"},{name:"postal-code"},{name:"sex"},{name:"shipping"},{name:"street-address"},{name:"tel-area-code"},{name:"tel"},{name:"tel-country-code"},{name:"tel-extension"},{name:"tel-local"},{name:"tel-local-prefix"},{name:"tel-local-suffix"},{name:"tel-national"},{name:"transaction-amount"},{name:"transaction-currency"},{name:"url"},{name:"username"},{name:"work"}]},{name:"autocomplete",values:[{name:"inline"},{name:"list"},{name:"both"},{name:"none"}]},{name:"current",values:[{name:"page"},{name:"step"},{name:"location"},{name:"date"},{name:"time"},{name:"true"},{name:"false"}]},{name:"dropeffect",values:[{name:"copy"},{name:"move"},{name:"link"},{name:"execute"},{name:"popup"},{name:"none"}]},{name:"invalid",values:[{name:"grammar"},{name:"false"},{name:"spelling"},{name:"true"}]},{name:"live",values:[{name:"off"},{name:"polite"},{name:"assertive"}]},{name:"orientation",values:[{name:"vertical"},{name:"horizontal"},{name:"undefined"}]},{name:"relevant",values:[{name:"additions"},{name:"removals"},{name:"text"},{name:"all"},{name:"additions text"}]},{name:"sort",values:[{name:"ascending"},{name:"descending"},{name:"none"},{name:"other"}]},{name:"roles",values:[{name:"alert"},{name:"alertdialog"},{name:"button"},{name:"checkbox"},{name:"dialog"},{name:"gridcell"},{name:"link"},{name:"log"},{name:"marquee"},{name:"menuitem"},{name:"menuitemcheckbox"},{name:"menuitemradio"},{name:"option"},{name:"progressbar"},{name:"radio"},{name:"scrollbar"},{name:"searchbox"},{name:"slider"},{name:"spinbutton"},{name:"status"},{name:"switch"},{name:"tab"},{name:"tabpanel"},{name:"textbox"},{name:"timer"},{name:"tooltip"},{name:"treeitem"},{name:"combobox"},{name:"grid"},{name:"listbox"},{name:"menu"},{name:"menubar"},{name:"radiogroup"},{name:"tablist"},{name:"tree"},{name:"treegrid"},{name:"application"},{name:"article"},{name:"cell"},{name:"columnheader"},{name:"definition"},{name:"directory"},{name:"document"},{name:"feed"},{name:"figure"},{name:"group"},{name:"heading"},{name:"img"},{name:"list"},{name:"listitem"},{name:"math"},{name:"none"},{name:"note"},{name:"presentation"},{name:"region"},{name:"row"},{name:"rowgroup"},{name:"rowheader"},{name:"separator"},{name:"table"},{name:"term"},{name:"text"},{name:"toolbar"},{name:"banner"},{name:"complementary"},{name:"contentinfo"},{name:"form"},{name:"main"},{name:"navigation"},{name:"region"},{name:"search"},{name:"doc-abstract"},{name:"doc-acknowledgments"},{name:"doc-afterword"},{name:"doc-appendix"},{name:"doc-backlink"},{name:"doc-biblioentry"},{name:"doc-bibliography"},{name:"doc-biblioref"},{name:"doc-chapter"},{name:"doc-colophon"},{name:"doc-conclusion"},{name:"doc-cover"},{name:"doc-credit"},{name:"doc-credits"},{name:"doc-dedication"},{name:"doc-endnote"},{name:"doc-endnotes"},{name:"doc-epigraph"},{name:"doc-epilogue"},{name:"doc-errata"},{name:"doc-example"},{name:"doc-footnote"},{name:"doc-foreword"},{name:"doc-glossary"},{name:"doc-glossref"},{name:"doc-index"},{name:"doc-introduction"},{name:"doc-noteref"},{name:"doc-notice"},{name:"doc-pagebreak"},{name:"doc-pagelist"},{name:"doc-part"},{name:"doc-preface"},{name:"doc-prologue"},{name:"doc-pullquote"},{name:"doc-qna"},{name:"doc-subtitle"},{name:"doc-tip"},{name:"doc-toc"}]},{name:"metanames",values:[{name:"application-name"},{name:"author"},{name:"description"},{name:"format-detection"},{name:"generator"},{name:"keywords"},{name:"publisher"},{name:"referrer"},{name:"robots"},{name:"theme-color"},{name:"viewport"}]},{name:"haspopup",values:[{name:"false",description:{kind:"markdown",value:"(default) Indicates the element does not have a popup."}},{name:"true",description:{kind:"markdown",value:"Indicates the popup is a menu."}},{name:"menu",description:{kind:"markdown",value:"Indicates the popup is a menu."}},{name:"listbox",description:{kind:"markdown",value:"Indicates the popup is a listbox."}},{name:"tree",description:{kind:"markdown",value:"Indicates the popup is a tree."}},{name:"grid",description:{kind:"markdown",value:"Indicates the popup is a grid."}},{name:"dialog",description:{kind:"markdown",value:"Indicates the popup is a dialog."}}]}]};!function(){function e(e){this.dataProviders=[],this.setDataProviders(!1!==e.useDefaultDataProvider,e.customDataProviders||[])}e.prototype.setDataProviders=function(e,t){var n;this.dataProviders=[],e&&this.dataProviders.push(new tt("html5",_t)),(n=this.dataProviders).push.apply(n,t)},e.prototype.getDataProviders=function(){return this.dataProviders}}();var wt=function(){function e(e,t,n){var i=this;this._languageId=e,this._worker=t,this._disposables=[],this._listener=Object.create(null);var r=function(e){var t,n=e.getModeId();n===i._languageId&&(i._listener[e.uri.toString()]=e.onDidChangeContent((function(){clearTimeout(t),t=setTimeout((function(){return i._doValidate(e.uri,n)}),500)})),i._doValidate(e.uri,n))},a=function(e){A.j6.setModelMarkers(e,i._languageId,[]);var t=e.uri.toString(),n=i._listener[t];n&&(n.dispose(),delete i._listener[t])};this._disposables.push(A.j6.onDidCreateModel(r)),this._disposables.push(A.j6.onWillDisposeModel((function(e){a(e)}))),this._disposables.push(A.j6.onDidChangeModelLanguage((function(e){a(e.model),r(e.model)}))),this._disposables.push(n.onDidChange((function(e){A.j6.getModels().forEach((function(e){e.getModeId()===i._languageId&&(a(e),r(e))}))}))),this._disposables.push({dispose:function(){for(var e in i._listener)i._listener[e].dispose()}}),A.j6.getModels().forEach(r)}return e.prototype.dispose=function(){this._disposables.forEach((function(e){return e&&e.dispose()})),this._disposables=[]},e.prototype._doValidate=function(e,t){this._worker(e).then((function(n){return n.doValidation(e.toString()).then((function(n){var i=n.map((function(e){return function(e,t){var n="number"===typeof t.code?String(t.code):t.code;return{severity:vt(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:n,source:t.source}}(0,e)})),r=A.j6.getModel(e);r&&r.getModeId()===t&&A.j6.setModelMarkers(r,t,i)}))})).then(void 0,(function(e){console.error(e)}))},e}();function vt(e){switch(e){case f.Error:return A.ZL.Error;case f.Warning:return A.ZL.Warning;case f.Information:return A.ZL.Info;case f.Hint:return A.ZL.Hint;default:return A.ZL.Info}}function yt(e){if(e)return{character:e.column-1,line:e.lineNumber-1}}function Tt(e){if(e)return new A.e6(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function kt(e){var t=A.Mj.CompletionItemKind;switch(e){case O.Text:return t.Text;case O.Method:return t.Method;case O.Function:return t.Function;case O.Constructor:return t.Constructor;case O.Field:return t.Field;case O.Variable:return t.Variable;case O.Class:return t.Class;case O.Interface:return t.Interface;case O.Module:return t.Module;case O.Property:return t.Property;case O.Unit:return t.Unit;case O.Value:return t.Value;case O.Enum:return t.Enum;case O.Keyword:return t.Keyword;case O.Snippet:return t.Snippet;case O.Color:return t.Color;case O.File:return t.File;case O.Reference:return t.Reference}return t.Property}function St(e){if(e)return{range:Tt(e.range),text:e.newText}}var xt=function(){function e(e){this._worker=e}return Object.defineProperty(e.prototype,"triggerCharacters",{get:function(){return[".",":","<",'"',"=","/"]},enumerable:!1,configurable:!0}),e.prototype.provideCompletionItems=function(e,t,n,i){var r=e.uri;return this._worker(r).then((function(e){return e.doComplete(r.toString(),yt(t))})).then((function(n){if(n){var i=e.getWordUntilPosition(t),r=new A.e6(t.lineNumber,i.startColumn,t.lineNumber,i.endColumn),a=n.items.map((function(e){var t,n={label:e.label,insertText:e.insertText||e.label,sortText:e.sortText,filterText:e.filterText,documentation:e.documentation,detail:e.detail,range:r,kind:kt(e.kind)};return e.textEdit&&("undefined"!==typeof(t=e.textEdit).insert&&"undefined"!==typeof t.replace?n.range={insert:Tt(e.textEdit.insert),replace:Tt(e.textEdit.replace)}:n.range=Tt(e.textEdit.range),n.insertText=e.textEdit.newText),e.additionalTextEdits&&(n.additionalTextEdits=e.additionalTextEdits.map(St)),e.insertTextFormat===N.Snippet&&(n.insertTextRules=A.Mj.CompletionItemInsertTextRule.InsertAsSnippet),n}));return{isIncomplete:n.isIncomplete,suggestions:a}}}))},e}();function Mt(e){return"string"===typeof e?{value:e}:(t=e)&&"object"===typeof t&&"string"===typeof t.kind?"plaintext"===e.kind?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:e.value}:{value:"```"+e.language+"\n"+e.value+"\n```\n"};var t}function Lt(e){if(e)return Array.isArray(e)?e.map(Mt):[Mt(e)]}var Et=function(){function e(e){this._worker=e}return e.prototype.provideHover=function(e,t,n){var i=e.uri;return this._worker(i).then((function(e){return e.doHover(i.toString(),yt(t))})).then((function(e){if(e)return{range:Tt(e.range),contents:Lt(e.contents)}}))},e}();function At(e){var t=A.Mj.DocumentHighlightKind;switch(e){case Y.Read:return t.Read;case Y.Write:return t.Write;case Y.Text:return t.Text}return t.Text}var Rt=function(){function e(e){this._worker=e}return e.prototype.provideDocumentHighlights=function(e,t,n){var i=e.uri;return this._worker(i).then((function(e){return e.findDocumentHighlights(i.toString(),yt(t))})).then((function(e){if(e)return e.map((function(e){return{range:Tt(e.range),kind:At(e.kind)}}))}))},e}();function zt(e){var t=A.Mj.SymbolKind;switch(e){case Z.File:return t.Array;case Z.Module:return t.Module;case Z.Namespace:return t.Namespace;case Z.Package:return t.Package;case Z.Class:return t.Class;case Z.Method:return t.Method;case Z.Property:return t.Property;case Z.Field:return t.Field;case Z.Constructor:return t.Constructor;case Z.Enum:return t.Enum;case Z.Interface:return t.Interface;case Z.Function:return t.Function;case Z.Variable:return t.Variable;case Z.Constant:return t.Constant;case Z.String:return t.String;case Z.Number:return t.Number;case Z.Boolean:return t.Boolean;case Z.Array:return t.Array}return t.Function}var It=function(){function e(e){this._worker=e}return e.prototype.provideDocumentSymbols=function(e,t){var n=e.uri;return this._worker(n).then((function(e){return e.findDocumentSymbols(n.toString())})).then((function(e){if(e)return e.map((function(e){return{name:e.name,detail:"",containerName:e.containerName,kind:zt(e.kind),tags:[],range:Tt(e.location.range),selectionRange:Tt(e.location.range)}}))}))},e}(),Ct=function(){function e(e){this._worker=e}return e.prototype.provideLinks=function(e,t){var n=e.uri;return this._worker(n).then((function(e){return e.findDocumentLinks(n.toString())})).then((function(e){if(e)return{links:e.map((function(e){return{range:Tt(e.range),url:e.target}}))}}))},e}();function Ht(e){return{tabSize:e.tabSize,insertSpaces:e.insertSpaces}}var Ut=function(){function e(e){this._worker=e}return e.prototype.provideDocumentFormattingEdits=function(e,t,n){var i=e.uri;return this._worker(i).then((function(e){return e.format(i.toString(),null,Ht(t)).then((function(e){if(e&&0!==e.length)return e.map(St)}))}))},e}(),Wt=function(){function e(e){this._worker=e}return e.prototype.provideDocumentRangeFormattingEdits=function(e,t,n,i){var r=e.uri;return this._worker(r).then((function(e){return e.format(r.toString(),function(e){if(e)return{start:yt(e.getStartPosition()),end:yt(e.getEndPosition())}}(t),Ht(n)).then((function(e){if(e&&0!==e.length)return e.map(St)}))}))},e}(),Dt=function(){function e(e){this._worker=e}return e.prototype.provideRenameEdits=function(e,t,n,i){var r=e.uri;return this._worker(r).then((function(e){return e.doRename(r.toString(),yt(t),n)})).then((function(e){return function(e){if(!e||!e.changes)return;var t=[];for(var n in e.changes)for(var i=A.Sf.parse(n),r=0,a=e.changes[n];r<a.length;r++){var o=a[r];t.push({resource:i,edit:{range:Tt(o.range),text:o.newText}})}return{edits:t}}(e)}))},e}();var Pt=function(){function e(e){this._worker=e}return e.prototype.provideFoldingRanges=function(e,t,n){var i=e.uri;return this._worker(i).then((function(e){return e.getFoldingRanges(i.toString(),t)})).then((function(e){if(e)return e.map((function(e){var t={start:e.startLine+1,end:e.endLine+1};return"undefined"!==typeof e.kind&&(t.kind=function(e){switch(e){case u.Comment:return A.Mj.FoldingRangeKind.Comment;case u.Imports:return A.Mj.FoldingRangeKind.Imports;case u.Region:return A.Mj.FoldingRangeKind.Region}}(e.kind)),t}))}))},e}();var Ot=function(){function e(e){this._worker=e}return e.prototype.provideSelectionRanges=function(e,t,n){var i=e.uri;return this._worker(i).then((function(e){return e.getSelectionRanges(i.toString(),t.map(yt))})).then((function(e){if(e)return e.map((function(e){for(var t=[];e;)t.push({range:Tt(e.range)}),e=e.parent;return t}))}))},e}();function Nt(e){var t=new R(e),n=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return t.getLanguageServiceWorker.apply(t,e)},i=e.languageId;A.Mj.registerCompletionItemProvider(i,new xt(n)),A.Mj.registerHoverProvider(i,new Et(n)),A.Mj.registerDocumentHighlightProvider(i,new Rt(n)),A.Mj.registerLinkProvider(i,new Ct(n)),A.Mj.registerFoldingRangeProvider(i,new Pt(n)),A.Mj.registerDocumentSymbolProvider(i,new It(n)),A.Mj.registerSelectionRangeProvider(i,new Ot(n)),A.Mj.registerRenameProvider(i,new Dt(n)),"html"===i&&(A.Mj.registerDocumentFormattingEditProvider(i,new Ut(n)),A.Mj.registerDocumentRangeFormattingEditProvider(i,new Wt(n)),new wt(i,n,e))}function qt(e){var t=[],n=[],i=new R(e);t.push(i);var r=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return i.getLanguageServiceWorker.apply(i,e)};return function(){var t=e.languageId,i=e.modeConfiguration;Ft(n),i.completionItems&&n.push(A.Mj.registerCompletionItemProvider(t,new xt(r))),i.hovers&&n.push(A.Mj.registerHoverProvider(t,new Et(r))),i.documentHighlights&&n.push(A.Mj.registerDocumentHighlightProvider(t,new Rt(r))),i.links&&n.push(A.Mj.registerLinkProvider(t,new Ct(r))),i.documentSymbols&&n.push(A.Mj.registerDocumentSymbolProvider(t,new It(r))),i.rename&&n.push(A.Mj.registerRenameProvider(t,new Dt(r))),i.foldingRanges&&n.push(A.Mj.registerFoldingRangeProvider(t,new Pt(r))),i.selectionRanges&&n.push(A.Mj.registerSelectionRangeProvider(t,new Ot(r))),i.documentFormattingEdits&&n.push(A.Mj.registerDocumentFormattingEditProvider(t,new Ut(r))),i.documentRangeFormattingEdits&&n.push(A.Mj.registerDocumentRangeFormattingEditProvider(t,new Wt(r))),i.diagnostics&&n.push(new wt(t,r,e))}(),t.push(jt(n)),jt(t)}function jt(e){return{dispose:function(){return Ft(e)}}}function Ft(e){for(;e.length;)e.pop().dispose()}}}]); -//# sourceMappingURL=254.a91c0bf4.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2553.5faabf5a.chunk.js b/ydb/core/viewer/monitoring/static/js/2553.5faabf5a.chunk.js new file mode 100644 index 000000000000..4eedc5b7fd60 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2553.5faabf5a.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 2553.5faabf5a.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2553],{12553:(t,e,i)=>{i.r(e),i.d(e,{conf:()=>m,language:()=>r});var m={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["{#","#}"]},brackets:[["{#","#}"],["{%","%}"],["{{","}}"],["(",")"],["[","]"],["\x3c!--","--\x3e"],["<",">"]],autoClosingPairs:[{open:"{# ",close:" #}"},{open:"{% ",close:" %}"},{open:"{{ ",close:" }}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}]},r={defaultToken:"",tokenPostfix:"",ignoreCase:!0,keywords:["apply","autoescape","block","deprecated","do","embed","extends","flush","for","from","if","import","include","macro","sandbox","set","use","verbatim","with","endapply","endautoescape","endblock","endembed","endfor","endif","endmacro","endsandbox","endset","endwith","true","false"],tokenizer:{root:[[/\s+/],[/{#/,"comment.twig","@commentState"],[/{%[-~]?/,"delimiter.twig","@blockState"],[/{{[-~]?/,"delimiter.twig","@variableState"],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@comment"],[/(<)((?:[\w\-]+:)?[\w\-]+)(\s*)(\/>)/,["delimiter.html","tag.html","","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)((?:[\w\-]+:)?[\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)((?:[\w\-]+:)?[\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/[^<{]+/]],commentState:[[/#}/,"comment.twig","@pop"],[/./,"comment.twig"]],blockState:[[/[-~]?%}/,"delimiter.twig","@pop"],[/\s+/],[/(verbatim)(\s*)([-~]?%})/,["keyword.twig","",{token:"delimiter.twig",next:"@rawDataState"}]],{include:"expression"}],rawDataState:[[/({%[-~]?)(\s*)(endverbatim)(\s*)([-~]?%})/,["delimiter.twig","","keyword.twig","",{token:"delimiter.twig",next:"@popall"}]],[/./,"string.twig"]],variableState:[[/[-~]?}}/,"delimiter.twig","@pop"],{include:"expression"}],stringState:[[/"/,"string.twig","@pop"],[/#{\s*/,"string.twig","@interpolationState"],[/[^#"\\]*(?:(?:\\.|#(?!\{))[^#"\\]*)*/,"string.twig"]],interpolationState:[[/}/,"string.twig","@pop"],{include:"expression"}],expression:[[/\s+/],[/\+|-|\/{1,2}|%|\*{1,2}/,"operators.twig"],[/(and|or|not|b-and|b-xor|b-or)(\s+)/,["operators.twig",""]],[/==|!=|<|>|>=|<=/,"operators.twig"],[/(starts with|ends with|matches)(\s+)/,["operators.twig",""]],[/(in)(\s+)/,["operators.twig",""]],[/(is)(\s+)/,["operators.twig",""]],[/\||~|:|\.{1,2}|\?{1,2}/,"operators.twig"],[/[^\W\d][\w]*/,{cases:{"@keywords":"keyword.twig","@default":"variable.twig"}}],[/\d+(\.\d+)?/,"number.twig"],[/\(|\)|\[|\]|{|}|,/,"delimiter.twig"],[/"([^#"\\]*(?:\\.[^#"\\]*)*)"|\'([^\'\\]*(?:\\.[^\'\\]*)*)\'/,"string.twig"],[/"/,"string.twig","@stringState"],[/=>/,"operators.twig"],[/=/,"operators.twig"]],doctype:[[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/]],script:[[/type/,"attribute.name.html","@scriptAfterType"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/=/,"delimiter.html","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value.html",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value.html",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]],style:[[/type/,"attribute.name.html","@styleAfterType"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/=/,"delimiter.html","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value.html",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value.html",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2553.5faabf5a.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/2553.5faabf5a.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2553.5faabf5a.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/2590.75b6626e.chunk.js b/ydb/core/viewer/monitoring/static/js/2590.75b6626e.chunk.js new file mode 100644 index 000000000000..6fe44682d682 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2590.75b6626e.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2590],{92590:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ug-cn",weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekStart:1,weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2620.8e5c52fb.chunk.js b/ydb/core/viewer/monitoring/static/js/2620.8e5c52fb.chunk.js new file mode 100644 index 000000000000..53f3f318355e --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2620.8e5c52fb.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2620],{12620:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),t={name:"en-in",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var _=["th","st","nd","rd"],a=e%100;return"["+e+(_[(a-20)%10]||_[a]||_[0])+"]"}};return a.default.locale(t,null,!0),t}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2677.3d7ea3fc.chunk.js b/ydb/core/viewer/monitoring/static/js/2677.3d7ea3fc.chunk.js new file mode 100644 index 000000000000..6987bb821553 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2677.3d7ea3fc.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2677],{92677:function(_,e,Y){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var Y=e(_),d={name:"ja",weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),ordinal:function(_){return _+"\u65e5"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiem:function(_){return _<12?"\u5348\u524d":"\u5348\u5f8c"},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}};return Y.default.locale(d,null,!0),d}(Y(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2701.86912840.chunk.js b/ydb/core/viewer/monitoring/static/js/2701.86912840.chunk.js new file mode 100644 index 000000000000..a0ebbe56a38b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2701.86912840.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2701],{32701:function(e,_,n){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=_(e),t={name:"it-ch",weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"}};return n.default.locale(t,null,!0),t}(n(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2799.64ec0194.chunk.js b/ydb/core/viewer/monitoring/static/js/2799.64ec0194.chunk.js deleted file mode 100644 index 46d2403607df..000000000000 --- a/ydb/core/viewer/monitoring/static/js/2799.64ec0194.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2799],{12799:function(e,n,t){t.r(n),t.d(n,{conf:function(){return o},language:function(){return s}});var o={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".go",keywords:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var","bool","true","false","uint8","uint16","uint32","uint64","int8","int16","int32","int64","float32","float64","complex64","complex128","byte","rune","uint","int","uintptr","string","nil"],operators:["+","-","*","/","%","&","|","^","<<",">>","&^","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>=","&^=","&&","||","<-","++","--","==","<",">","=","!","!=","<=",">=",":=","...","(",")","","]","{","}",",",";",".",":"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/\[\[.*\]\]/,"annotation"],[/^\s*#\w+/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex"],[/0[0-7']*[0-7]/,"number.octal"],[/0[bB][0-1']*[0-1]/,"number.binary"],[/\d[\d']*/,"number"],[/\d/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/`/,"string","@rawstring"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],rawstring:[[/[^\`]/,"string"],[/`/,"string","@pop"]]}}}}]); -//# sourceMappingURL=2799.64ec0194.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2840.b69eb597.chunk.js b/ydb/core/viewer/monitoring/static/js/2840.b69eb597.chunk.js new file mode 100644 index 000000000000..48da03e8f158 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2840.b69eb597.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 2840.b69eb597.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2840],{2840:(e,n,s)=>{s.r(n),s.d(n,{conf:()=>i,language:()=>o});var i={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},o={defaultToken:"",tokenPostfix:".ini",escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^\[[^\]]*\]/,"metatag"],[/(^\w+)(\s*)(\=)/,["key","","delimiter"]],{include:"@whitespace"},[/\d+/,"number"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,""],[/^\s*[#;].*$/,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2840.b69eb597.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/2840.b69eb597.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2840.b69eb597.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/2862.29a56bf7.chunk.js b/ydb/core/viewer/monitoring/static/js/2862.29a56bf7.chunk.js deleted file mode 100644 index 4edd789e1c01..000000000000 --- a/ydb/core/viewer/monitoring/static/js/2862.29a56bf7.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2862],{12862:function(t,e,i){i.r(e),i.d(e,{conf:function(){return r},language:function(){return m}});var r={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["{#","#}"]},brackets:[["{#","#}"],["{%","%}"],["{{","}}"],["(",")"],["[","]"],["\x3c!--","--\x3e"],["<",">"]],autoClosingPairs:[{open:"{# ",close:" #}"},{open:"{% ",close:" %}"},{open:"{{ ",close:" }}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}]},m={defaultToken:"",tokenPostfix:"",ignoreCase:!0,keywords:["apply","autoescape","block","deprecated","do","embed","extends","flush","for","from","if","import","include","macro","sandbox","set","use","verbatim","with","endapply","endautoescape","endblock","endembed","endfor","endif","endmacro","endsandbox","endset","endwith","true","false"],tokenizer:{root:[[/\s+/],[/{#/,"comment.twig","@commentState"],[/{%[-~]?/,"delimiter.twig","@blockState"],[/{{[-~]?/,"delimiter.twig","@variableState"],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@comment"],[/(<)((?:[\w\-]+:)?[\w\-]+)(\s*)(\/>)/,["delimiter.html","tag.html","","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)((?:[\w\-]+:)?[\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)((?:[\w\-]+:)?[\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/[^<]+/]],commentState:[[/#}/,"comment.twig","@pop"],[/./,"comment.twig"]],blockState:[[/[-~]?%}/,"delimiter.twig","@pop"],[/\s+/],[/(verbatim)(\s*)([-~]?%})/,["keyword.twig","",{token:"delimiter.twig",next:"@rawDataState"}]],{include:"expression"}],rawDataState:[[/({%[-~]?)(\s*)(endverbatim)(\s*)([-~]?%})/,["delimiter.twig","","keyword.twig","",{token:"delimiter.twig",next:"@popall"}]],[/./,"string.twig"]],variableState:[[/[-~]?}}/,"delimiter.twig","@pop"],{include:"expression"}],stringState:[[/"/,"string.twig","@pop"],[/#{\s*/,"string.twig","@interpolationState"],[/[^#"\\]*(?:(?:\\.|#(?!\{))[^#"\\]*)*/,"string.twig"]],interpolationState:[[/}/,"string.twig","@pop"],{include:"expression"}],expression:[[/\s+/],[/\+|-|\/{1,2}|%|\*{1,2}/,"operators.twig"],[/(and|or|not|b-and|b-xor|b-or)(\s+)/,["operators.twig",""]],[/==|!=|<|>|>=|<=/,"operators.twig"],[/(starts with|ends with|matches)(\s+)/,["operators.twig",""]],[/(in)(\s+)/,["operators.twig",""]],[/(is)(\s+)/,["operators.twig",""]],[/\||~|:|\.{1,2}|\?{1,2}/,"operators.twig"],[/[^\W\d][\w]*/,{cases:{"@keywords":"keyword.twig","@default":"variable.twig"}}],[/\d+(\.\d+)?/,"number.twig"],[/\(|\)|\[|\]|{|}|,/,"delimiter.twig"],[/"([^#"\\]*(?:\\.[^#"\\]*)*)"|\'([^\'\\]*(?:\\.[^\'\\]*)*)\'/,"string.twig"],[/"/,"string.twig","@stringState"],[/=>/,"operators.twig"],[/=/,"operators.twig"]],doctype:[[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/]],script:[[/type/,"attribute.name.html","@scriptAfterType"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/=/,"delimiter.html","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value.html",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value.html",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]],style:[[/type/,"attribute.name.html","@styleAfterType"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/=/,"delimiter.html","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value.html",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value.html",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]]}}}}]); -//# sourceMappingURL=2862.29a56bf7.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2876.afe7e47f.chunk.js b/ydb/core/viewer/monitoring/static/js/2876.afe7e47f.chunk.js new file mode 100644 index 000000000000..a652561dfa67 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2876.afe7e47f.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 2876.afe7e47f.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2876],{12876:(e,n,i)=>{i.r(n),i.d(n,{conf:()=>t,language:()=>r});var t={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"],["begin","end"],["case","endcase"],["casex","endcase"],["casez","endcase"],["checker","endchecker"],["class","endclass"],["clocking","endclocking"],["config","endconfig"],["function","endfunction"],["generate","endgenerate"],["group","endgroup"],["interface","endinterface"],["module","endmodule"],["package","endpackage"],["primitive","endprimitive"],["program","endprogram"],["property","endproperty"],["specify","endspecify"],["sequence","endsequence"],["table","endtable"],["task","endtask"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!1,markers:{start:new RegExp("^(?:\\s*|.*(?!\\/[\\/\\*])[^\\w])(?:begin|case(x|z)?|class|clocking|config|covergroup|function|generate|interface|module|package|primitive|property|program|sequence|specify|table|task)\\b"),end:new RegExp("^(?:\\s*|.*(?!\\/[\\/\\*])[^\\w])(?:end|endcase|endclass|endclocking|endconfig|endgroup|endfunction|endgenerate|endinterface|endmodule|endpackage|endprimitive|endproperty|endprogram|endsequence|endspecify|endtable|endtask)\\b")}}},r={defaultToken:"",tokenPostfix:".sv",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["accept_on","alias","always","always_comb","always_ff","always_latch","and","assert","assign","assume","automatic","before","begin","bind","bins","binsof","bit","break","buf","bufif0","bufif1","byte","case","casex","casez","cell","chandle","checker","class","clocking","cmos","config","const","constraint","context","continue","cover","covergroup","coverpoint","cross","deassign","default","defparam","design","disable","dist","do","edge","else","end","endcase","endchecker","endclass","endclocking","endconfig","endfunction","endgenerate","endgroup","endinterface","endmodule","endpackage","endprimitive","endprogram","endproperty","endspecify","endsequence","endtable","endtask","enum","event","eventually","expect","export","extends","extern","final","first_match","for","force","foreach","forever","fork","forkjoin","function","generate","genvar","global","highz0","highz1","if","iff","ifnone","ignore_bins","illegal_bins","implements","implies","import","incdir","include","initial","inout","input","inside","instance","int","integer","interconnect","interface","intersect","join","join_any","join_none","large","let","liblist","library","local","localparam","logic","longint","macromodule","matches","medium","modport","module","nand","negedge","nettype","new","nexttime","nmos","nor","noshowcancelled","not","notif0","notif1","null","or","output","package","packed","parameter","pmos","posedge","primitive","priority","program","property","protected","pull0","pull1","pulldown","pullup","pulsestyle_ondetect","pulsestyle_onevent","pure","rand","randc","randcase","randsequence","rcmos","real","realtime","ref","reg","reject_on","release","repeat","restrict","return","rnmos","rpmos","rtran","rtranif0","rtranif1","s_always","s_eventually","s_nexttime","s_until","s_until_with","scalared","sequence","shortint","shortreal","showcancelled","signed","small","soft","solve","specify","specparam","static","string","strong","strong0","strong1","struct","super","supply0","supply1","sync_accept_on","sync_reject_on","table","tagged","task","this","throughout","time","timeprecision","timeunit","tran","tranif0","tranif1","tri","tri0","tri1","triand","trior","trireg","type","typedef","union","unique","unique0","unsigned","until","until_with","untyped","use","uwire","var","vectored","virtual","void","wait","wait_order","wand","weak","weak0","weak1","while","wildcard","wire","with","within","wor","xnor","xor"],builtin_gates:["and","nand","nor","or","xor","xnor","buf","not","bufif0","bufif1","notif1","notif0","cmos","nmos","pmos","rcmos","rnmos","rpmos","tran","tranif1","tranif0","rtran","rtranif1","rtranif0"],operators:["=","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>+","<<<=",">>>=","?",":","+","-","!","~","&","~&","|","~|","^","~^","^~","+","-","*","/","%","==","!=","===","!==","==?","!=?","&&","||","**","<","<=",">",">=","&","|","^",">>","<<",">>>","<<<","++","--","->","<->","inside","dist","::","+:","-:","*>","&&&","|->","|=>","#=#"],symbols:/[=><!~?:&|+\-*\/\^%#]+/,escapes:/%%|\\(?:[antvf\\"']|x[0-9A-Fa-f]{1,2}|[0-7]{1,3})/,identifier:/(?:[a-zA-Z_][a-zA-Z0-9_$\.]*|\\\S+ )/,systemcall:/[$][a-zA-Z0-9_]+/,timeunits:/s|ms|us|ns|ps|fs/,tokenizer:{root:[[/^(\s*)(@identifier)/,["",{cases:{"@builtin_gates":{token:"keyword.$2",next:"@module_instance"},table:{token:"keyword.$2",next:"@table"},"@keywords":{token:"keyword.$2"},"@default":{token:"identifier",next:"@module_instance"}}}]],[/^\s*`include/,{token:"keyword.directive.include",next:"@include"}],[/^\s*`\s*\w+/,"keyword"],{include:"@identifier_or_keyword"},{include:"@whitespace"},[/\(\*.*\*\)/,"annotation"],[/@systemcall/,"variable.predefined"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],{include:"@numbers"},[/[;,.]/,"delimiter"],{include:"@strings"}],identifier_or_keyword:[[/@identifier/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}]],numbers:[[/\d+?[\d_]*(?:\.[\d_]+)?[eE][\-+]?\d+/,"number.float"],[/\d+?[\d_]*\.[\d_]+(?:\s*@timeunits)?/,"number.float"],[/(?:\d+?[\d_]*\s*)?'[sS]?[dD]\s*[0-9xXzZ?]+?[0-9xXzZ?_]*/,"number"],[/(?:\d+?[\d_]*\s*)?'[sS]?[bB]\s*[0-1xXzZ?]+?[0-1xXzZ?_]*/,"number.binary"],[/(?:\d+?[\d_]*\s*)?'[sS]?[oO]\s*[0-7xXzZ?]+?[0-7xXzZ?_]*/,"number.octal"],[/(?:\d+?[\d_]*\s*)?'[sS]?[hH]\s*[0-9a-fA-FxXzZ?]+?[0-9a-fA-FxXzZ?_]*/,"number.hex"],[/1step/,"number"],[/[\dxXzZ]+?[\dxXzZ_]*(?:\s*@timeunits)?/,"number"],[/'[01xXzZ]+/,"number"]],module_instance:[{include:"@whitespace"},[/(#?)(\()/,["",{token:"@brackets",next:"@port_connection"}]],[/@identifier\s*[;={}\[\],]/,{token:"@rematch",next:"@pop"}],[/@symbols|[;={}\[\],]/,{token:"@rematch",next:"@pop"}],[/@identifier/,"type"],[/;/,"delimiter","@pop"]],port_connection:[{include:"@identifier_or_keyword"},{include:"@whitespace"},[/@systemcall/,"variable.predefined"],{include:"@numbers"},{include:"@strings"},[/[,]/,"delimiter"],[/\(/,"@brackets","@port_connection"],[/\)/,"@brackets","@pop"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],strings:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],include:[[/(\s*)(")([\w*\/*]*)(.\w*)(")/,["","string.include.identifier","string.include.identifier","string.include.identifier",{token:"string.include.identifier",next:"@pop"}]],[/(\s*)(<)([\w*\/*]*)(.\w*)(>)/,["","string.include.identifier","string.include.identifier","string.include.identifier",{token:"string.include.identifier",next:"@pop"}]]],table:[{include:"@whitespace"},[/[()]/,"@brackets"],[/[:;]/,"delimiter"],[/[01\-*?xXbBrRfFpPnN]/,"variable.predefined"],["endtable","keyword.endtable","@pop"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2876.afe7e47f.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/2876.afe7e47f.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2876.afe7e47f.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/2931.3ade3bc3.chunk.js b/ydb/core/viewer/monitoring/static/js/2931.3ade3bc3.chunk.js new file mode 100644 index 000000000000..446b8965472b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2931.3ade3bc3.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 2931.3ade3bc3.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2931],{62931:(e,o,t)=>{t.r(o),t.d(o,{conf:()=>n,language:()=>i});var n={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}]},i={defaultToken:"",tokenPostfix:".swift",identifier:/[a-zA-Z_][\w$]*/,attributes:["@GKInspectable","@IBAction","@IBDesignable","@IBInspectable","@IBOutlet","@IBSegueAction","@NSApplicationMain","@NSCopying","@NSManaged","@Sendable","@UIApplicationMain","@autoclosure","@actorIndependent","@asyncHandler","@available","@convention","@derivative","@differentiable","@discardableResult","@dynamicCallable","@dynamicMemberLookup","@escaping","@frozen","@globalActor","@inlinable","@inline","@main","@noDerivative","@nonobjc","@noreturn","@objc","@objcMembers","@preconcurrency","@propertyWrapper","@requires_stored_property_inits","@resultBuilder","@testable","@unchecked","@unknown","@usableFromInline","@warn_unqualified_access"],accessmodifiers:["open","public","internal","fileprivate","private"],keywords:["#available","#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning","Any","Protocol","Self","Type","actor","as","assignment","associatedtype","associativity","async","await","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","dynamicType","else","enum","extension","fallthrough","false","fileprivate","final","for","func","get","guard","higherThan","if","import","in","indirect","infix","init","inout","internal","is","isolated","lazy","left","let","lowerThan","mutating","nil","none","nonisolated","nonmutating","open","operator","optional","override","postfix","precedence","precedencegroup","prefix","private","protocol","public","repeat","required","rethrows","return","right","safe","self","set","some","static","struct","subscript","super","switch","throw","throws","true","try","typealias","unowned","unsafe","var","weak","where","while","willSet","__consuming","__owned"],symbols:/[=(){}\[\].,:;@#\_&\-<>`?!+*\\\/]/,operatorstart:/[\/=\-+!*%<>&|^~?\u00A1-\u00A7\u00A9\u00AB\u00AC\u00AE\u00B0-\u00B1\u00B6\u00BB\u00BF\u00D7\u00F7\u2016-\u2017\u2020-\u2027\u2030-\u203E\u2041-\u2053\u2055-\u205E\u2190-\u23FF\u2500-\u2775\u2794-\u2BFF\u2E00-\u2E7F\u3001-\u3003\u3008-\u3030]/,operatorend:/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE00-\uFE0F\uFE20-\uFE2F\uE0100-\uE01EF]/,operators:/(@operatorstart)((@operatorstart)|(@operatorend))*/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},{include:"@attribute"},{include:"@literal"},{include:"@keyword"},{include:"@invokedmethod"},{include:"@symbol"}],whitespace:[[/\s+/,"white"],[/"""/,"string.quote","@endDblDocString"]],endDblDocString:[[/[^"]+/,"string"],[/\\"/,"string"],[/"""/,"string.quote","@popall"],[/"/,"string"]],symbol:[[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/[.]/,"delimiter"],[/@operators/,"operator"],[/@symbols/,"operator"]],comment:[[/\/\/\/.*$/,"comment.doc"],[/\/\*\*/,"comment.doc","@commentdocbody"],[/\/\/.*$/,"comment"],[/\/\*/,"comment","@commentbody"]],commentdocbody:[[/\/\*/,"comment","@commentbody"],[/\*\//,"comment.doc","@pop"],[/\:[a-zA-Z]+\:/,"comment.doc.param"],[/./,"comment.doc"]],commentbody:[[/\/\*/,"comment","@commentbody"],[/\*\//,"comment","@pop"],[/./,"comment"]],attribute:[[/@@@identifier/,{cases:{"@attributes":"keyword.control","@default":""}}]],literal:[[/"/,{token:"string.quote",next:"@stringlit"}],[/0[b]([01]_?)+/,"number.binary"],[/0[o]([0-7]_?)+/,"number.octal"],[/0[x]([0-9a-fA-F]_?)+([pP][\-+](\d_?)+)?/,"number.hex"],[/(\d_?)*\.(\d_?)+([eE][\-+]?(\d_?)+)?/,"number.float"],[/(\d_?)+/,"number"]],stringlit:[[/\\\(/,{token:"operator",next:"@interpolatedexpression"}],[/@escapes/,"string"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",next:"@pop"}],[/./,"string"]],interpolatedexpression:[[/\(/,{token:"operator",next:"@interpolatedexpression"}],[/\)/,{token:"operator",next:"@pop"}],{include:"@literal"},{include:"@keyword"},{include:"@symbol"}],keyword:[[/`/,{token:"operator",next:"@escapedkeyword"}],[/@identifier/,{cases:{"@keywords":"keyword","[A-Z][a-zA-Z0-9$]*":"type.identifier","@default":"identifier"}}]],escapedkeyword:[[/`/,{token:"operator",next:"@pop"}],[/./,"identifier"]],invokedmethod:[[/([.])(@identifier)/,{cases:{$2:["delimeter","type.identifier"],"@default":""}}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2931.3ade3bc3.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/2931.3ade3bc3.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..10047b8b1dac --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2931.3ade3bc3.chunk.js.LICENSE.txt @@ -0,0 +1,10 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ + +/*!--------------------------------------------------------------------------------------------- + * Copyright (C) David Owens II, owensd.io. All rights reserved. + *--------------------------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/2962.66e01691.chunk.js b/ydb/core/viewer/monitoring/static/js/2962.66e01691.chunk.js new file mode 100644 index 000000000000..e052ae6247b6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2962.66e01691.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 2962.66e01691.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2962],{92962:(e,n,t)=>{t.r(n),t.d(n,{conf:()=>s,language:()=>o});var s={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*//\\s*#region\\b|^\\s*\\(\\*\\s*#region(.*)\\*\\)"),end:new RegExp("^\\s*//\\s*#endregion\\b|^\\s*\\(\\*\\s*#endregion\\s*\\*\\)")}}},o={defaultToken:"",tokenPostfix:".fs",keywords:["abstract","and","atomic","as","assert","asr","base","begin","break","checked","component","const","constraint","constructor","continue","class","default","delegate","do","done","downcast","downto","elif","else","end","exception","eager","event","external","extern","false","finally","for","fun","function","fixed","functor","global","if","in","include","inherit","inline","interface","internal","land","lor","lsl","lsr","lxor","lazy","let","match","member","mod","module","mutable","namespace","method","mixin","new","not","null","of","open","or","object","override","private","parallel","process","protected","pure","public","rec","return","static","sealed","struct","sig","then","to","true","tailcall","trait","try","type","upcast","use","val","void","virtual","volatile","when","while","with","yield"],symbols:/[=><!~?:&|+\-*\^%;\.,\/]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/[uU]?[yslnLI]?/,floatsuffix:/[fFmM]?/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/\[<.*>\]/,"annotation"],[/^#(if|else|endif)/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0x[0-9a-fA-F]+LF/,"number.float"],[/0x[0-9a-fA-F]+(@integersuffix)/,"number.hex"],[/0b[0-1]+(@integersuffix)/,"number.bin"],[/\d+(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"""/,"string",'@string."""'],[/"/,"string",'@string."'],[/\@"/,{token:"string.quote",next:"@litstring"}],[/'[^\\']'B?/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\(\*(?!\))/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^*(]+/,"comment"],[/\*\)/,"comment","@pop"],[/\*/,"comment"],[/\(\*\)/,"comment"],[/\(/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/("""|"B?)/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]],litstring:[[/[^"]+/,"string"],[/""/,"string.escape"],[/"/,{token:"string.quote",next:"@pop"}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2962.66e01691.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/2962.66e01691.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2962.66e01691.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/2981.6d027811.chunk.js b/ydb/core/viewer/monitoring/static/js/2981.6d027811.chunk.js new file mode 100644 index 000000000000..7f824286461c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2981.6d027811.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2981],{72981:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"gu",weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ac7\u0ab9\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2986.2100fcad.chunk.js b/ydb/core/viewer/monitoring/static/js/2986.2100fcad.chunk.js new file mode 100644 index 000000000000..2969084c843f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2986.2100fcad.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2986],{42986:function(_,e,a){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var a=e(_),t={name:"yo",weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekStart:1,weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".split("_"),ordinal:function(_){return _},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"}};return a.default.locale(t,null,!0),t}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2991.0db887ba.chunk.js b/ydb/core/viewer/monitoring/static/js/2991.0db887ba.chunk.js deleted file mode 100644 index 84bea123ffcc..000000000000 --- a/ydb/core/viewer/monitoring/static/js/2991.0db887ba.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2991],{22991:function(e,t,l){l.r(t),l.d(t,{ReactComponent:function(){return m}});var c,a=l(4519),n=["title","titleId"];function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var l=arguments[t];for(var c in l)Object.prototype.hasOwnProperty.call(l,c)&&(e[c]=l[c])}return e},r.apply(this,arguments)}function v(e,t){if(null==e)return{};var l,c,a=function(e,t){if(null==e)return{};var l,c,a={},n=Object.keys(e);for(c=0;c<n.length;c++)l=n[c],t.indexOf(l)>=0||(a[l]=e[l]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(c=0;c<n.length;c++)l=n[c],t.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(a[l]=e[l])}return a}function h(e,t){var l=e.title,h=e.titleId,m=v(e,n);return a.createElement("svg",r({width:349,height:356,fill:"none",xmlns:"http://www.w3.org/2000/svg",ref:t,"aria-labelledby":h},m),l?a.createElement("title",{id:h},l):null,c||(c=a.createElement("g",{opacity:.8},a.createElement("path",{d:"M275.008 84.928c0 24.7-9.9 83.9-9.9 117.1 0 33.2 0 106.3-27.8 134.1-27.8 27.8-61.9 16.1-61.9 16.1s-46.7 13-76.3-14.8c-29.6-27.8-60.1-83.5-69.1-115.3-9.9-35-26.5-49.3-27.8-56.5-1.3-7.2 3.6-12.1 12.1-12.6 8.5-.4 22.9 4 34.5 22 11.6 18 17.5 26 23.8 35.9 6.3 9.9 20.6 23.3 20.6 23.3s.4-44.9 1.3-64.1c.9-19.3-1.8-111.7 1.8-132.3 3.6-20.6 26.5-20.2 28.7-4 2.2 16.1 8.8 66.8 9.8 79.8s3.7 44.4 3.7 44.4l7.6-2.7s-.9-105.8-.9-132.9c0-29.2 28.7-29.2 32.3-4 3.6 25.2 6.7 142.8 6.7 142.8l6.7 2.7s2.2-111.7 5.8-129.6c3.6-17.9 26.5-17.5 30.1 4.9 3.6 22.4 1.3 72.2.9 94.2s-.9 43.5-.9 43.5l5.4 4s11-73.3 14.4-99.1c3.7-27.8 28.4-21.5 28.4 3.1z",fill:"#fff",fillOpacity:.07}),a.createElement("path",{d:"M279.207 266.428l-216.9 12c-7.3.4-13.3-5.2-13.3-12.5v-167.4c0-7.3 6-12.9 13.3-12.5l216.9 12c5.6.3 10.1 5.7 10.1 12v144.4c0 6.3-4.5 11.7-10.1 12z",fill:"#FF4645"}),a.createElement("path",{d:"M191.308 139.226l-32.3-1.4c-1.9-.1-3.8.6-5.2 1.9l-24.3 22.8c-1.4 1.3-2.2 3.2-2.2 5.2v33.7c0 2 .8 3.8 2.2 5.2l24.3 22.8c1.4 1.3 3.3 2 5.2 1.9l32.3-1.4c1.8-.1 3.6-.9 4.9-2.2l21.5-22.8c1.2-1.3 1.9-3.1 1.9-4.9v-31c0-1.8-.7-3.6-1.9-4.9l-21.5-22.8c-1.3-1.3-3.1-2.1-4.9-2.1z",fill:"#fff"}),a.createElement("path",{d:"M203.408 195.526l-58.1.6c-1.6 0-3-1.3-3-3v-17.2c0-1.6 1.3-3 3-3l58.1.6c1.6 0 2.9 1.3 2.9 3v16c0 1.7-1.3 3-2.9 3z",fill:"#FF4645"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M74.707 103.727c0 3.4-2.7 6-6.1 5.8-3.4-.1-6.1-3-6.1-6.4 0-3.4 2.8-6 6.1-5.8 3.4.2 6.1 3 6.1 6.4zm19.7.9c0 3.3-2.7 5.9-6 5.8-3.3-.1-6-3-6-6.3s2.7-5.9 6-5.8c3.3.1 6 2.9 6 6.3zm13.4 6.499c3.2.2 5.8-2.4 5.8-5.7 0-3.3-2.6-6.1-5.8-6.2-3.3-.2-5.9 2.4-5.9 5.7 0 3.3 2.7 6.1 5.9 6.2z",fill:"#fff"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M248.707 247.329h84.6v-62c0-22.5-18.3-40.7-40.7-40.7h-3.2c-22.5 0-40.7 18.3-40.7 40.7v62zm70.2-14.3h-56v-47.7c0-14.6 11.9-26.4 26.4-26.4h3.2c14.6 0 26.4 11.9 26.4 26.4v47.7z",fill:"#DEB700"}),a.createElement("path",{d:"M340.507 205.528s-16.3-2.7-17.3-2.7l-78.6 1.1c-7 .1-13.7 6.5-13.7 13.1v58.6c0 4.7 2.9 8.5 7 10.1 1.5.6 3.1.9 4.8.9l12.5 2.3 7.6-3.7 60.4-4.3c6.2-.4 11.2-5.8 11.2-11.9v-43.3l6.1-20.2z",fill:"#DEB700"}),a.createElement("path",{d:"M337.607 283.43l-79.6 5.7c-7 .5-12.7-4.4-12.7-11v-59.6c0-6.6 5.7-12 12.7-12.1l79.6-1.1c6.2-.1 11.2 4.8 11.2 10.9v55.4c-.1 6-5 11.3-11.2 11.8z",fill:"#FBC900"}),a.createElement("path",{d:"M313.007 236.029c0-6.3-5.2-11.4-11.7-11.4-6.7 0-12.3 5.4-12.3 12 0 5 3.2 9.1 7.6 10.7v15.5c0 2.5 2.1 4.4 4.7 4.2 2.6-.2 4.6-2.5 4.6-4.9v-15.1c4.3-2.1 7.1-6.3 7.1-11z",fill:"#00236B"}),a.createElement("path",{d:"M308.307 236.028c0-5.5-4-10.1-9.3-11.2-5.6 1.1-10 6-10 11.8 0 5 3.2 9.1 7.6 10.7v15.5c0 1.5.8 2.8 2 3.5 1.6-.9 2.6-2.5 2.6-4.3v-15.1c4.2-2 7.1-6.2 7.1-10.9z",fill:"#18123D"}),a.createElement("path",{d:"M21.708 40.727a2 2 0 1 0-4 0h4zm-4 8.2a2 2 0 0 0 4 0h-4zm4 17.198a2 2 0 0 0-4 0h4zm-4 8.9a2 2 0 1 0 4 0h-4zm19.2-15.197a2 2 0 1 0 0-4v4zm-8.3-4a2 2 0 0 0 0 4v-4zm-17.8 4a2 2 0 1 0 0-4v4zm-8.3-4a2 2 0 0 0 0 4v-4zm15.2-15.101v8.2h4v-8.2h-4zm0 25.398v8.9h4v-8.9h-4zm19.2-10.297h-8.3v4h8.3v-4zm-26.1 0h-8.3v4h8.3v-4zm284.199 259.098a2 2 0 1 0-4 0h4zm-4 6.2a2 2 0 0 0 4 0h-4zm4 13.1a2 2 0 1 0-4 0h4zm-4 6.8a2 2 0 0 0 4 0h-4zm15-11.1a2 2 0 0 0 0-4v4zm-6.2-4a2 2 0 0 0 0 4v-4zm-13.6 4a2 2 0 0 0 0-4v4zm-6.3-4a2 2 0 0 0 0 4v-4zm11.1-11v6.2h4v-6.2h-4zm0 19.3v6.8h4v-6.8h-4zm15-8.3h-6.2v4h6.2v-4zm-19.8 0h-6.3v4h6.3v-4z",fill:"#2EE5C0"}),a.createElement("path",{clipRule:"evenodd",d:"M15.207 325.426c7.18 0 13-5.821 13-13 0-7.18-5.82-13-13-13s-13 5.82-13 13c0 7.179 5.82 13 13 13z",stroke:"#2EE5C0",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"}),a.createElement("path",{d:"M28.207 310.426a2 2 0 1 0 0 4v-4zm35.2 2h2a2 2 0 0 0-2-2v2zm-2 12.2a2 2 0 0 0 4 0h-4zm-17.1 0a2 2 0 0 0 4 0h-4zm4-12.2a2 2 0 1 0-4 0h4zm-20.1 2h35.2v-4h-35.2v4zm33.2-2v12.2h4v-12.2h-4zm-13.1 12.2v-12.2h-4v12.2h4z",fill:"#2EE5C0"}))))}var m=a.forwardRef(h);t.default=l.p+"static/media/403.271ae19f0d1101a2c67a904146bbd4d3.svg"}}]); -//# sourceMappingURL=2991.0db887ba.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2994.e6c77407.chunk.js b/ydb/core/viewer/monitoring/static/js/2994.e6c77407.chunk.js new file mode 100644 index 000000000000..180b4edc1594 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2994.e6c77407.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 2994.e6c77407.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[2994],{82994:(e,o,n)=>{n.r(o),n.d(o,{conf:()=>t,language:()=>r});var t={comments:{lineComment:"'"},brackets:[["(",")"],["[","]"],["If","EndIf"],["While","EndWhile"],["For","EndFor"],["Sub","EndSub"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]}]},r={defaultToken:"",tokenPostfix:".sb",ignoreCase:!0,brackets:[{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"keyword.tag-if",open:"If",close:"EndIf"},{token:"keyword.tag-while",open:"While",close:"EndWhile"},{token:"keyword.tag-for",open:"For",close:"EndFor"},{token:"keyword.tag-sub",open:"Sub",close:"EndSub"}],keywords:["Else","ElseIf","EndFor","EndIf","EndSub","EndWhile","For","Goto","If","Step","Sub","Then","To","While"],tagwords:["If","Sub","While","For"],operators:[">","<","<>","<=",">=","And","Or","+","-","*","/","="],identifier:/[a-zA-Z_][\w]*/,symbols:/[=><:+\-*\/%\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},[/(@identifier)(?=[.])/,"type"],[/@identifier/,{cases:{"@keywords":{token:"keyword.$0"},"@operators":"operator","@default":"variable.name"}}],[/([.])(@identifier)/,{cases:{$2:["delimiter","type.member"],"@default":""}}],[/\d*\.\d+/,"number.float"],[/\d+/,"number"],[/[()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":"delimiter"}}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],whitespace:[[/[ \t\r\n]+/,""],[/(\').*$/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"C?/,"string","@pop"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/2994.e6c77407.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/2994.e6c77407.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/2994.e6c77407.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/30.b097cbb4.chunk.js b/ydb/core/viewer/monitoring/static/js/30.b097cbb4.chunk.js new file mode 100644 index 000000000000..6d9cf99e9115 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/30.b097cbb4.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[30],{50030:function(e,_,s){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=_(e),d={name:"es-mx",weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:function(e){return e+"\xba"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"}};return s.default.locale(d,null,!0),d}(s(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3001.b1a75b50.chunk.js b/ydb/core/viewer/monitoring/static/js/3001.b1a75b50.chunk.js deleted file mode 100644 index b1b2d8763d53..000000000000 --- a/ydb/core/viewer/monitoring/static/js/3001.b1a75b50.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3001],{23001:function(e,t,n){n.r(t),n.d(t,{conf:function(){return r},language:function(){return s}});var r={comments:{lineComment:";;"},brackets:[["[","]"],["(",")"],["{","}"]],autoClosingPairs:[{open:"[",close:"]"},{open:'"',close:'"'},{open:"(",close:")"},{open:"{",close:"}"}],surroundingPairs:[{open:"[",close:"]"},{open:'"',close:'"'},{open:"(",close:")"},{open:"{",close:"}"}]},s={defaultToken:"",ignoreCase:!0,tokenPostfix:".clj",brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"}],constants:["true","false","nil"],numbers:/^(?:[+\-]?\d+(?:(?:N|(?:[eE][+\-]?\d+))|(?:\.?\d*(?:M|(?:[eE][+\-]?\d+))?)|\/\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\[\]\s"#'(),;@^`{}~]|$))/,characters:/^(?:\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\[\]\s"(),;@^`{}~]|$))/,escapes:/^\\(?:["'\\bfnrt]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,qualifiedSymbols:/^(?:(?:[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*(?:\.[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*\/)?(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*(?=[\\\[\]\s"(),;@^`{}~]|$))/,specialForms:[".","catch","def","do","if","monitor-enter","monitor-exit","new","quote","recur","set!","throw","try","var"],coreSymbols:["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","..","/","<","<=","=","==",">",">=","EMPTY-NODE","Inst","StackTraceElement->vec","Throwable->map","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","any?","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","case","cast","cat","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","cond","cond->","cond->>","condp","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","dedupe","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","if-let","if-not","if-some","ifn?","import","in-ns","inc","inc'","indexed?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some->","some->>","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","sync","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","time","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","vswap!","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"],tokenizer:{root:[{include:"@whitespace"},[/@numbers/,"number"],[/@characters/,"string"],{include:"@string"},[/[()\[\]{}]/,"@brackets"],[/\/#"(?:\.|(?:")|[^"\n])*"\/g/,"regexp"],[/[#'@^`~]/,"meta"],[/@qualifiedSymbols/,{cases:{"^:.+$":"constant","@specialForms":"keyword","@coreSymbols":"keyword","@constants":"constant","@default":"identifier"}}]],whitespace:[[/[\s,]+/,"white"],[/;.*$/,"comment"],[/\(comment\b/,"comment","@comment"]],comment:[[/\(/,"comment","@push"],[/\)/,"comment","@pop"],[/[^()]/,"comment"]],string:[[/"/,"string","@multiLineString"]],multiLineString:[[/"/,"string","@popall"],[/@escapes/,"string.escape"],[/./,"string"]]}}}}]); -//# sourceMappingURL=3001.b1a75b50.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3025.7e536c57.chunk.js b/ydb/core/viewer/monitoring/static/js/3025.7e536c57.chunk.js new file mode 100644 index 000000000000..7165ad4a00e3 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3025.7e536c57.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3025],{73025:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"pa-in",weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3074.bbb8aaef.chunk.js b/ydb/core/viewer/monitoring/static/js/3074.bbb8aaef.chunk.js new file mode 100644 index 000000000000..2b24e4ded4c1 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3074.bbb8aaef.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 3074.bbb8aaef.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3074],{63074:(e,o,r)=>{r.r(o),r.d(o,{conf:()=>t,language:()=>a});var t={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},a={defaultToken:"",tokenPostfix:".r",roxygen:["@alias","@aliases","@assignee","@author","@backref","@callGraph","@callGraphDepth","@callGraphPrimitives","@concept","@describeIn","@description","@details","@docType","@encoding","@evalNamespace","@evalRd","@example","@examples","@export","@exportClass","@exportMethod","@exportPattern","@family","@field","@formals","@format","@import","@importClassesFrom","@importFrom","@importMethodsFrom","@include","@inherit","@inheritDotParams","@inheritParams","@inheritSection","@keywords","@md","@method","@name","@noMd","@noRd","@note","@param","@rawNamespace","@rawRd","@rdname","@references","@return","@S3method","@section","@seealso","@setClass","@slot","@source","@template","@templateVar","@title","@TODO","@usage","@useDynLib"],constants:["NULL","FALSE","TRUE","NA","Inf","NaN","NA_integer_","NA_real_","NA_complex_","NA_character_","T","F","LETTERS","letters","month.abb","month.name","pi","R.version.string"],keywords:["break","next","return","if","else","for","in","repeat","while","array","category","character","complex","double","function","integer","list","logical","matrix","numeric","vector","data.frame","factor","library","require","attach","detach","source"],special:["\\n","\\r","\\t","\\b","\\a","\\f","\\v","\\'",'\\"',"\\\\"],brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"}],tokenizer:{root:[{include:"@numbers"},{include:"@strings"},[/[{}\[\]()]/,"@brackets"],{include:"@operators"},[/#'$/,"comment.doc"],[/#'/,"comment.doc","@roxygen"],[/(^#.*$)/,"comment"],[/\s+/,"white"],[/[,:;]/,"delimiter"],[/@[a-zA-Z]\w*/,"tag"],[/[a-zA-Z]\w*/,{cases:{"@keywords":"keyword","@constants":"constant","@default":"identifier"}}]],roxygen:[[/@\w+/,{cases:{"@roxygen":"tag","@eos":{token:"comment.doc",next:"@pop"},"@default":"comment.doc"}}],[/\s+/,{cases:{"@eos":{token:"comment.doc",next:"@pop"},"@default":"comment.doc"}}],[/.*/,{token:"comment.doc",next:"@pop"}]],numbers:[[/0[xX][0-9a-fA-F]+/,"number.hex"],[/-?(\d*\.)?\d+([eE][+\-]?\d+)?/,"number"]],operators:[[/<{1,2}-/,"operator"],[/->{1,2}/,"operator"],[/%[^%\s]+%/,"operator"],[/\*\*/,"operator"],[/%%/,"operator"],[/&&/,"operator"],[/\|\|/,"operator"],[/<</,"operator"],[/>>/,"operator"],[/[-+=&|!<>^~*/:$]/,"operator"]],strings:[[/'/,"string.escape","@stringBody"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/\\./,{cases:{"@special":"string","@default":"error-token"}}],[/'/,"string.escape","@popall"],[/./,"string"]],dblStringBody:[[/\\./,{cases:{"@special":"string","@default":"error-token"}}],[/"/,"string.escape","@popall"],[/./,"string"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3074.bbb8aaef.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/3074.bbb8aaef.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3074.bbb8aaef.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/3191.c6dbae35.chunk.js b/ydb/core/viewer/monitoring/static/js/3191.c6dbae35.chunk.js deleted file mode 100644 index 7652f13a138f..000000000000 --- a/ydb/core/viewer/monitoring/static/js/3191.c6dbae35.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3191],{13191:function(e,t,r){r.r(t),r.d(t,{conf:function(){return n},language:function(){return m}});var o=r(37456),i=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["\x3c!--","--\x3e"],["<",">"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],onEnterRules:[{beforeText:new RegExp("<(?!(?:"+i.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:o.Mj.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(?!(?:"+i.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:o.Mj.IndentAction.Indent}}]},m={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/@@@@/],[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.root"}],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@comment"],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)(\w+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/[ \t\r\n]+/],[/[^<@]+/]],doctype:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.comment"}],[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.comment"}],[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.script"}],[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptAfterType"}],[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInEmbeddedState.scriptEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],style:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.style"}],[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleAfterType"}],[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInEmbeddedState.styleEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],razorInSimpleState:[[/@\*/,"comment.cs","@razorBlockCommentTopLevel"],[/@[{(]/,"metatag.cs","@razorRootTopLevel"],[/(@)(\s*[\w]+)/,["metatag.cs",{token:"identifier.cs",switchTo:"@$S2.$S3"}]],[/[})]/,{token:"metatag.cs",switchTo:"@$S2.$S3"}],[/\*@/,{token:"comment.cs",switchTo:"@$S2.$S3"}]],razorInEmbeddedState:[[/@\*/,"comment.cs","@razorBlockCommentTopLevel"],[/@[{(]/,"metatag.cs","@razorRootTopLevel"],[/(@)(\s*[\w]+)/,["metatag.cs",{token:"identifier.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}]],[/[})]/,{token:"metatag.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}],[/\*@/,{token:"comment.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}]],razorBlockCommentTopLevel:[[/\*@/,"@rematch","@pop"],[/[^*]+/,"comment.cs"],[/./,"comment.cs"]],razorBlockComment:[[/\*@/,"comment.cs","@pop"],[/[^*]+/,"comment.cs"],[/./,"comment.cs"]],razorRootTopLevel:[[/\{/,"delimiter.bracket.cs","@razorRoot"],[/\(/,"delimiter.parenthesis.cs","@razorRoot"],[/[})]/,"@rematch","@pop"],{include:"razorCommon"}],razorRoot:[[/\{/,"delimiter.bracket.cs","@razorRoot"],[/\(/,"delimiter.parenthesis.cs","@razorRoot"],[/\}/,"delimiter.bracket.cs","@pop"],[/\)/,"delimiter.parenthesis.cs","@pop"],{include:"razorCommon"}],razorCommon:[[/[a-zA-Z_]\w*/,{cases:{"@razorKeywords":{token:"keyword.cs"},"@default":"identifier.cs"}}],[/[\[\]]/,"delimiter.array.cs"],[/[ \t\r\n]+/],[/\/\/.*$/,"comment.cs"],[/@\*/,"comment.cs","@razorBlockComment"],[/"([^"]*)"/,"string.cs"],[/'([^']*)'/,"string.cs"],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(\w+)(>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<\/)(\w+)(>)/,["delimiter.html","tag.html","delimiter.html"]],[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,]/,"delimiter.cs"],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float.cs"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float.cs"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex.cs"],[/0[0-7']*[0-7]/,"number.octal.cs"],[/0[bB][0-1']*[0-1]/,"number.binary.cs"],[/\d[\d']*/,"number.cs"],[/\d/,"number.cs"]]},razorKeywords:["abstract","as","async","await","base","bool","break","by","byte","case","catch","char","checked","class","const","continue","decimal","default","delegate","do","double","descending","explicit","event","extern","else","enum","false","finally","fixed","float","for","foreach","from","goto","group","if","implicit","in","int","interface","internal","into","is","lock","long","nameof","new","null","namespace","object","operator","out","override","orderby","params","private","protected","public","readonly","ref","return","switch","struct","sbyte","sealed","short","sizeof","stackalloc","static","string","select","this","throw","true","try","typeof","uint","ulong","unchecked","unsafe","ushort","using","var","virtual","volatile","void","when","while","where","yield","model","inject"],escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/}}}]); -//# sourceMappingURL=3191.c6dbae35.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3231.65396654.chunk.js b/ydb/core/viewer/monitoring/static/js/3231.65396654.chunk.js new file mode 100644 index 000000000000..ed7b0e643aad --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3231.65396654.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3231],{83231:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),u={name:"en-ie",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return a.default.locale(u,null,!0),u}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3254.78ce4d35.chunk.js b/ydb/core/viewer/monitoring/static/js/3254.78ce4d35.chunk.js deleted file mode 100644 index f2ea9e1235ca..000000000000 --- a/ydb/core/viewer/monitoring/static/js/3254.78ce4d35.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3254],{93254:function(e,t,r){r.r(t),r.d(t,{conf:function(){return n},language:function(){return o}});var n={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},o={tokenPostfix:".julia",keywords:["begin","while","if","for","try","return","break","continue","function","macro","quote","let","local","global","const","do","struct","module","baremodule","using","import","export","end","else","elseif","catch","finally","mutable","primitive","abstract","type","in","isa","where","new"],types:["LinRange","LineNumberNode","LinearIndices","LoadError","MIME","Matrix","Method","MethodError","Missing","MissingException","Module","NTuple","NamedTuple","Nothing","Number","OrdinalRange","OutOfMemoryError","OverflowError","Pair","PartialQuickSort","PermutedDimsArray","Pipe","Ptr","QuoteNode","Rational","RawFD","ReadOnlyMemoryError","Real","ReentrantLock","Ref","Regex","RegexMatch","RoundingMode","SegmentationFault","Set","Signed","Some","StackOverflowError","StepRange","StepRangeLen","StridedArray","StridedMatrix","StridedVecOrMat","StridedVector","String","StringIndexError","SubArray","SubString","SubstitutionString","Symbol","SystemError","Task","Text","TextDisplay","Timer","Tuple","Type","TypeError","TypeVar","UInt","UInt128","UInt16","UInt32","UInt64","UInt8","UndefInitializer","AbstractArray","UndefKeywordError","AbstractChannel","UndefRefError","AbstractChar","UndefVarError","AbstractDict","Union","AbstractDisplay","UnionAll","AbstractFloat","UnitRange","AbstractIrrational","Unsigned","AbstractMatrix","AbstractRange","Val","AbstractSet","Vararg","AbstractString","VecElement","AbstractUnitRange","VecOrMat","AbstractVecOrMat","Vector","AbstractVector","VersionNumber","Any","WeakKeyDict","ArgumentError","WeakRef","Array","AssertionError","BigFloat","BigInt","BitArray","BitMatrix","BitSet","BitVector","Bool","BoundsError","CapturedException","CartesianIndex","CartesianIndices","Cchar","Cdouble","Cfloat","Channel","Char","Cint","Cintmax_t","Clong","Clonglong","Cmd","Colon","Complex","ComplexF16","ComplexF32","ComplexF64","CompositeException","Condition","Cptrdiff_t","Cshort","Csize_t","Cssize_t","Cstring","Cuchar","Cuint","Cuintmax_t","Culong","Culonglong","Cushort","Cvoid","Cwchar_t","Cwstring","DataType","DenseArray","DenseMatrix","DenseVecOrMat","DenseVector","Dict","DimensionMismatch","Dims","DivideError","DomainError","EOFError","Enum","ErrorException","Exception","ExponentialBackOff","Expr","Float16","Float32","Float64","Function","GlobalRef","HTML","IO","IOBuffer","IOContext","IOStream","IdDict","IndexCartesian","IndexLinear","IndexStyle","InexactError","InitError","Int","Int128","Int16","Int32","Int64","Int8","Integer","InterruptException","InvalidStateException","Irrational","KeyError"],keywordops:["<:",">:",":","=>","...",".","->","?"],allops:/[^\w\d\s()\[\]{}"'#]+/,constants:["true","false","nothing","missing","undef","Inf","pi","NaN","\u03c0","\u212f","ans","PROGRAM_FILE","ARGS","C_NULL","VERSION","DEPOT_PATH","LOAD_PATH"],operators:["!","!=","!==","%","&","*","+","-","/","//","<","<<","<=","==","===","=>",">",">=",">>",">>>","\\","^","|","|>","~","\xf7","\u2208","\u2209","\u220b","\u220c","\u2218","\u221a","\u221b","\u2229","\u222a","\u2248","\u2249","\u2260","\u2261","\u2262","\u2264","\u2265","\u2286","\u2287","\u2288","\u2289","\u228a","\u228b","\u22bb"],brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],ident:/\u03c0|\u212f|\b(?!\d)\w+\b/,escape:/(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,escapes:/\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,tokenizer:{root:[[/(::)\s*|\b(isa)\s+/,"keyword","@typeanno"],[/\b(isa)(\s*\(@ident\s*,\s*)/,["keyword",{token:"",next:"@typeanno"}]],[/\b(type|struct)[ \t]+/,"keyword","@typeanno"],[/^\s*:@ident[!?]?/,"metatag"],[/(return)(\s*:@ident[!?]?)/,["keyword","metatag"]],[/(\(|\[|\{|@allops)(\s*:@ident[!?]?)/,["","metatag"]],[/:\(/,"metatag","@quote"],[/r"""/,"regexp.delim","@tregexp"],[/r"/,"regexp.delim","@sregexp"],[/raw"""/,"string.delim","@rtstring"],[/[bv]?"""/,"string.delim","@dtstring"],[/raw"/,"string.delim","@rsstring"],[/[bv]?"/,"string.delim","@dsstring"],[/(@ident)\{/,{cases:{"$1@types":{token:"type",next:"@gen"},"@default":{token:"type",next:"@gen"}}}],[/@ident[!?'']?(?=\.?\()/,{cases:{"@types":"type","@keywords":"keyword","@constants":"variable","@default":"keyword.flow"}}],[/@ident[!?']?/,{cases:{"@types":"type","@keywords":"keyword","@constants":"variable","@default":"identifier"}}],[/\$\w+/,"key"],[/\$\(/,"key","@paste"],[/@@@ident/,"annotation"],{include:"@whitespace"},[/'(?:@escapes|.)'/,"string.character"],[/[()\[\]{}]/,"@brackets"],[/@allops/,{cases:{"@keywordops":"keyword","@operators":"operator"}}],[/[;,]/,"delimiter"],[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/,"number.hex"],[/0[_oO][0-7](_?[0-7])*/,"number.octal"],[/0[bB][01](_?[01])*/,"number.binary"],[/[+\-]?\d+(\.\d+)?(im?|[eE][+\-]?\d+(\.\d+)?)?/,"number"]],typeanno:[[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*\{/,"type","@gen"],[/([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(\s*<:\s*)/,["type","keyword"]],[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*/,"type","@pop"],["","","@pop"]],gen:[[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*\{/,"type","@push"],[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*/,"type"],[/<:/,"keyword"],[/(\})(\s*<:\s*)/,["type",{token:"keyword",next:"@pop"}]],[/\}/,"type","@pop"],{include:"@root"}],quote:[[/\$\(/,"key","@paste"],[/\(/,"@brackets","@paren"],[/\)/,"metatag","@pop"],{include:"@root"}],paste:[[/:\(/,"metatag","@quote"],[/\(/,"@brackets","@paren"],[/\)/,"key","@pop"],{include:"@root"}],paren:[[/\$\(/,"key","@paste"],[/:\(/,"metatag","@quote"],[/\(/,"@brackets","@push"],[/\)/,"@brackets","@pop"],{include:"@root"}],sregexp:[[/^.*/,"invalid"],[/[^\\"()\[\]{}]/,"regexp"],[/[()\[\]{}]/,"@brackets"],[/\\./,"operator.scss"],[/"[imsx]*/,"regexp.delim","@pop"]],tregexp:[[/[^\\"()\[\]{}]/,"regexp"],[/[()\[\]{}]/,"@brackets"],[/\\./,"operator.scss"],[/"(?!"")/,"string"],[/"""[imsx]*/,"regexp.delim","@pop"]],rsstring:[[/^.*/,"invalid"],[/[^\\"]/,"string"],[/\\./,"string.escape"],[/"/,"string.delim","@pop"]],rtstring:[[/[^\\"]/,"string"],[/\\./,"string.escape"],[/"(?!"")/,"string"],[/"""/,"string.delim","@pop"]],dsstring:[[/^.*/,"invalid"],[/[^\\"\$]/,"string"],[/\$/,"","@interpolated"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string.delim","@pop"]],dtstring:[[/[^\\"\$]/,"string"],[/\$/,"","@interpolated"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"(?!"")/,"string"],[/"""/,"string.delim","@pop"]],interpolated:[[/\(/,{token:"",switchTo:"@interpolated_compound"}],[/[a-zA-Z_]\w*/,"identifier"],["","","@pop"]],interpolated_compound:[[/\)/,"","@pop"],{include:"@root"}],whitespace:[[/[ \t\r\n]+/,""],[/#=/,"comment","@multi_comment"],[/#.*$/,"comment"]],multi_comment:[[/#=/,"comment","@push"],[/=#/,"comment","@pop"],[/=(?!#)|#(?!=)/,"comment"],[/[^#=]+/,"comment"]]}}}}]); -//# sourceMappingURL=3254.78ce4d35.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3258.248867bd.chunk.js b/ydb/core/viewer/monitoring/static/js/3258.248867bd.chunk.js deleted file mode 100644 index f3138502b614..000000000000 --- a/ydb/core/viewer/monitoring/static/js/3258.248867bd.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3258],{43258:function(e,n,s){s.r(n),s.d(n,{conf:function(){return o},language:function(){return t}});var o={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},t={defaultToken:"",tokenPostfix:".dockerfile",variable:/\${?[\w]+}?/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/(ONBUILD)(\s+)/,["keyword",""]],[/(ENV)(\s+)([\w]+)/,["keyword","",{token:"variable",next:"@arguments"}]],[/(FROM|MAINTAINER|RUN|EXPOSE|ENV|ADD|ARG|VOLUME|LABEL|USER|WORKDIR|COPY|CMD|STOPSIGNAL|SHELL|HEALTHCHECK|ENTRYPOINT)/,{token:"keyword",next:"@arguments"}]],arguments:[{include:"@whitespace"},{include:"@strings"},[/(@variable)/,{cases:{"@eos":{token:"variable",next:"@popall"},"@default":"variable"}}],[/\\/,{cases:{"@eos":"","@default":""}}],[/./,{cases:{"@eos":{token:"",next:"@popall"},"@default":""}}]],whitespace:[[/\s+/,{cases:{"@eos":{token:"",next:"@popall"},"@default":""}}]],comment:[[/(^#.*$)/,"comment","@popall"]],strings:[[/\\'$/,"","@popall"],[/\\'/,""],[/'$/,"string","@popall"],[/'/,"string","@stringBody"],[/"$/,"string","@popall"],[/"/,"string","@dblStringBody"]],stringBody:[[/[^\\\$']/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/\\./,"string.escape"],[/'$/,"string","@popall"],[/'/,"string","@pop"],[/(@variable)/,"variable"],[/\\$/,"string"],[/$/,"string","@popall"]],dblStringBody:[[/[^\\\$"]/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/\\./,"string.escape"],[/"$/,"string","@popall"],[/"/,"string","@pop"],[/(@variable)/,"variable"],[/\\$/,"string"],[/$/,"string","@popall"]]}}}}]); -//# sourceMappingURL=3258.248867bd.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3271.7b005742.chunk.js b/ydb/core/viewer/monitoring/static/js/3271.7b005742.chunk.js new file mode 100644 index 000000000000..5bec97b51f3d --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3271.7b005742.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3271],{53271:function(e,_,s){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=_(e),d={name:"es-do",weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekStart:1,relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:function(e){return e+"\xba"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return s.default.locale(d,null,!0),d}(s(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/328.f24db8bf.chunk.js b/ydb/core/viewer/monitoring/static/js/328.f24db8bf.chunk.js new file mode 100644 index 000000000000..5b6725dbd319 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/328.f24db8bf.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[328],{30328:(e,t,l)=>{l.r(t),l.d(t,{TopPanel:()=>P});var n=l(68963),a=l(77280),r=l(17176),o=l(91387),s=l(88776),i=l(39137),c=l(95216),u=l(77796);const d=n.createContext(null),m=()=>{const e=n.useContext(d);if(!e)throw new Error('Alert: `useAlertContext` hook is used out of "AlertContext"');return e},v=e=>{const{view:t}=m();return n.createElement(r.z,Object.assign({view:"filled"===t?"normal-contrast":void 0},e))};var p=l(36951);const g=18,w=(0,p.Ge)("alert"),f=e=>{let{layout:t,view:l,children:a}=e;return n.createElement(d.Provider,{value:{layout:t,view:l}},a)};var h=l(76506),E=l(80518),y=l(67585),b=l(68010);const C=e=>n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),n.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3.1-8.55a.75.75 0 1 0-1.2-.9L7.419 8.858 6.03 7.47a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.13-.08l3-4Z",clipRule:"evenodd"}));var x=l(96261),N=l(71586),k=l(93316);const A=e=>n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),n.createElement("path",{fill:"currentColor",d:"m14.61 6.914-7.632 8.08a1.614 1.614 0 0 1-2.69-1.66L5.5 10H2.677A1.677 1.677 0 0 1 1.12 7.7l2.323-5.807A2.216 2.216 0 0 1 5.5.5h4c.968 0 1.637.967 1.298 1.873L10 4.5h3.569a1.431 1.431 0 0 1 1.04 2.414Z"}));var Z=l(3442);const z={danger:{filled:h.Z,outlined:E.Z},info:{filled:y.Z,outlined:b.Z},success:{filled:C,outlined:x.Z},warning:{filled:N.Z,outlined:k.Z},utility:{filled:A,outlined:Z.Z},normal:null};var _=l(10288);var L=l(54973);const S=JSON.parse('{"label_close":"Close"}'),T=JSON.parse('{"label_close":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c"}'),O=(0,L.e)({en:S,ru:T},"Alert"),R=e=>{const{theme:t="normal",view:l="filled",layout:d="vertical",message:m,className:v,corners:p,style:h,onClose:E,align:y,qa:b}=e;return n.createElement(f,{layout:d,view:l},n.createElement(o.Z,{style:h,className:w({corners:p},(0,c.W)({py:4,px:5},v)),theme:t,view:l,qa:b},n.createElement(u.k,{gap:"3",alignItems:y},"undefined"===typeof e.icon?n.createElement(R.Icon,{theme:t,view:l}):e.icon,n.createElement(u.k,{direction:"vertical"===d?"column":"row",gap:"5",grow:!0},n.createElement(u.k,{gap:"2",grow:!0,className:w("text-content")},n.createElement(u.k,{direction:"column",gap:"1",grow:!0,justifyContent:y},"string"===typeof e.title?n.createElement(R.Title,{text:e.title}):e.title,m)),Array.isArray(e.actions)?n.createElement(R.Actions,{items:e.actions}):e.actions),E&&n.createElement(r.z,{view:"flat",className:w("close-btn"),onClick:E,extraProps:{"aria-label":O("label_close")}},n.createElement(s.J,{data:a.Z,size:g,className:(0,i.V)({color:"secondary"})})))))};R.Icon=e=>{let{className:t,theme:l,view:a="filled",size:r=g}=e;const o=z[l];if(!o)return null;let c;return"success"===l?c="positive":"normal"!==l&&(c=l),n.createElement("div",{className:w("icon",(0,i.V)({color:c},t))},n.createElement(s.J,{data:o[a],size:r}))},R.Title=e=>{let{text:t,className:l}=e;return n.createElement(_.x,{variant:"subheader-2",className:w("title",l)},t)},R.Actions=e=>{let{items:t,children:l,className:a}=e;const{layout:r}=m();return n.createElement(u.k,{className:w("actions",{minContent:"horizontal"===r},a),direction:"row",gap:"3",wrap:!0,alignItems:"horizontal"===r?"center":"flex-start"},(null===t||void 0===t?void 0:t.map(((e,t)=>{let{handler:l,text:a}=e;return n.createElement(v,{key:t,onClick:l},a)})))||l)},R.Action=v;var j=l(5687),I=l(50528);l(5247);const J=e=>{let{topAlert:t}=e;const l=n.useRef(null),a=(e=>{const[t,l]=n.useState(0);return n.useEffect((()=>{if(e.current){const{current:t}=e;l(t.clientHeight)}}),[e]),t})(l),r=n.useCallback((e=>{const t=document.getElementsByClassName("g-root").item(0);null===t||void 0===t||t.style.setProperty("--gn-aside-top-panel-height",e+"px")}),[]),o=n.useCallback((()=>{var e;l.current&&r((null===(e=l.current)||void 0===e?void 0:e.clientHeight)||0)}),[l,r]);return n.useLayoutEffect((()=>{const e=(0,j.d)(o,200,{leading:!0});return t&&(window.addEventListener("resize",e),e()),()=>{window.removeEventListener("resize",e),r(0)}}),[t,a,l,o,r]),{topRef:l,updateTopSize:o}},P=e=>{let{topAlert:t}=e;const{topRef:l,updateTopSize:a}=J({topAlert:t}),[r,o]=n.useState(!0),s=n.useCallback((()=>{var e;o(!1),null===(e=null===t||void 0===t?void 0:t.onCloseTopAlert)||void 0===e||e.call(t)}),[t]);return n.useEffect((()=>{r||a()}),[r,a]),t&&t.message?n.createElement("div",{ref:l,className:(0,I.b)("pane-top",{opened:r})},r&&n.createElement(n.Fragment,null,n.createElement(R,{className:(0,I.b)("pane-top-alert",{centered:t.centered,dense:t.dense}),corners:"square",layout:"horizontal",theme:t.theme||"warning",icon:t.icon,title:t.title,message:t.message,actions:t.actions,onClose:t.closable?s:void 0}),n.createElement("div",{className:(0,I.b)("pane-top-divider")}))):null}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3304.f5897a96.chunk.js b/ydb/core/viewer/monitoring/static/js/3304.f5897a96.chunk.js new file mode 100644 index 000000000000..7f80ac0b9021 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3304.f5897a96.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3304],{73304:function(e){e.exports=function(){"use strict";return{name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var _=["th","st","nd","rd"],r=e%100;return"["+e+(_[(r-20)%10]||_[r]||_[0])+"]"}}}()}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3333.ceb196e6.chunk.js b/ydb/core/viewer/monitoring/static/js/3333.ceb196e6.chunk.js new file mode 100644 index 000000000000..0fc2a8c68216 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3333.ceb196e6.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3333],{3333:function(a,e,t){a.exports=function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var t=e(a),_={name:"eu",weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),weekStart:1,weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"}};return t.default.locale(_,null,!0),_}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3358.c777fe1f.chunk.js b/ydb/core/viewer/monitoring/static/js/3358.c777fe1f.chunk.js new file mode 100644 index 000000000000..c286147c6f3f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3358.c777fe1f.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 3358.c777fe1f.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3358],{13358:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>i,language:()=>o});var i={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'"},{open:'"',close:'"'}],autoClosingPairs:[{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["comment"]},{open:'"""',close:'"""'},{open:"`",close:"`",notIn:["string","comment"]},{open:"(",close:")"},{open:"{",close:"}"},{open:"[",close:"]"},{open:"<<",close:">>"}],indentationRules:{increaseIndentPattern:/^\s*(after|else|catch|rescue|fn|[^#]*(do|<\-|\->|\{|\[|\=))\s*$/,decreaseIndentPattern:/^\s*((\}|\])\s*$|(after|else|catch|rescue|end)\b)/}},o={defaultToken:"source",tokenPostfix:".elixir",brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"<<",close:">>",token:"delimiter.angle.special"}],declarationKeywords:["def","defp","defn","defnp","defguard","defguardp","defmacro","defmacrop","defdelegate","defcallback","defmacrocallback","defmodule","defprotocol","defexception","defimpl","defstruct"],operatorKeywords:["and","in","not","or","when"],namespaceKeywords:["alias","import","require","use"],otherKeywords:["after","case","catch","cond","do","else","end","fn","for","if","quote","raise","receive","rescue","super","throw","try","unless","unquote_splicing","unquote","with"],constants:["true","false","nil"],nameBuiltin:["__MODULE__","__DIR__","__ENV__","__CALLER__","__STACKTRACE__"],operator:/-[->]?|!={0,2}|\*{1,2}|\/|\\\\|&{1,3}|\.\.?|\^(?:\^\^)?|\+\+?|<(?:-|<<|=|>|\|>|~>?)?|=~|={1,3}|>(?:=|>>)?|\|~>|\|>|\|{1,3}|~>>?|~~~|::/,variableName:/[a-z_][a-zA-Z0-9_]*[?!]?/,atomName:/[a-zA-Z_][a-zA-Z0-9_@]*[?!]?|@specialAtomName|@operator/,specialAtomName:/\.\.\.|<<>>|%\{\}|%|\{\}/,aliasPart:/[A-Z][a-zA-Z0-9_]*/,moduleName:/@aliasPart(?:\.@aliasPart)*/,sigilSymmetricDelimiter:/"""|'''|"|'|\/|\|/,sigilStartDelimiter:/@sigilSymmetricDelimiter|<|\{|\[|\(/,sigilEndDelimiter:/@sigilSymmetricDelimiter|>|\}|\]|\)/,sigilModifiers:/[a-zA-Z0-9]*/,decimal:/\d(?:_?\d)*/,hex:/[0-9a-fA-F](_?[0-9a-fA-F])*/,octal:/[0-7](_?[0-7])*/,binary:/[01](_?[01])*/,escape:/\\u[0-9a-fA-F]{4}|\\x[0-9a-fA-F]{2}|\\./,tokenizer:{root:[{include:"@whitespace"},{include:"@comments"},{include:"@keywordsShorthand"},{include:"@numbers"},{include:"@identifiers"},{include:"@strings"},{include:"@atoms"},{include:"@sigils"},{include:"@attributes"},{include:"@symbols"}],whitespace:[[/\s+/,"white"]],comments:[[/(#)(.*)/,["comment.punctuation","comment"]]],keywordsShorthand:[[/(@atomName)(:)(\s+)/,["constant","constant.punctuation","white"]],[/"(?=([^"]|#\{.*?\}|\\")*":)/,{token:"constant.delimiter",next:"@doubleQuotedStringKeyword"}],[/'(?=([^']|#\{.*?\}|\\')*':)/,{token:"constant.delimiter",next:"@singleQuotedStringKeyword"}]],doubleQuotedStringKeyword:[[/":/,{token:"constant.delimiter",next:"@pop"}],{include:"@stringConstantContentInterpol"}],singleQuotedStringKeyword:[[/':/,{token:"constant.delimiter",next:"@pop"}],{include:"@stringConstantContentInterpol"}],numbers:[[/0b@binary/,"number.binary"],[/0o@octal/,"number.octal"],[/0x@hex/,"number.hex"],[/@decimal\.@decimal([eE]-?@decimal)?/,"number.float"],[/@decimal/,"number"]],identifiers:[[/\b(defp?|defnp?|defmacrop?|defguardp?|defdelegate)(\s+)(@variableName)(?!\s+@operator)/,["keyword.declaration","white",{cases:{unquote:"keyword","@default":"function"}}]],[/(@variableName)(?=\s*\.?\s*\()/,{cases:{"@declarationKeywords":"keyword.declaration","@namespaceKeywords":"keyword","@otherKeywords":"keyword","@default":"function.call"}}],[/(@moduleName)(\s*)(\.)(\s*)(@variableName)/,["type.identifier","white","operator","white","function.call"]],[/(:)(@atomName)(\s*)(\.)(\s*)(@variableName)/,["constant.punctuation","constant","white","operator","white","function.call"]],[/(\|>)(\s*)(@variableName)/,["operator","white",{cases:{"@otherKeywords":"keyword","@default":"function.call"}}]],[/(&)(\s*)(@variableName)/,["operator","white","function.call"]],[/@variableName/,{cases:{"@declarationKeywords":"keyword.declaration","@operatorKeywords":"keyword.operator","@namespaceKeywords":"keyword","@otherKeywords":"keyword","@constants":"constant.language","@nameBuiltin":"variable.language","_.*":"comment.unused","@default":"identifier"}}],[/@moduleName/,"type.identifier"]],strings:[[/"""/,{token:"string.delimiter",next:"@doubleQuotedHeredoc"}],[/'''/,{token:"string.delimiter",next:"@singleQuotedHeredoc"}],[/"/,{token:"string.delimiter",next:"@doubleQuotedString"}],[/'/,{token:"string.delimiter",next:"@singleQuotedString"}]],doubleQuotedHeredoc:[[/"""/,{token:"string.delimiter",next:"@pop"}],{include:"@stringContentInterpol"}],singleQuotedHeredoc:[[/'''/,{token:"string.delimiter",next:"@pop"}],{include:"@stringContentInterpol"}],doubleQuotedString:[[/"/,{token:"string.delimiter",next:"@pop"}],{include:"@stringContentInterpol"}],singleQuotedString:[[/'/,{token:"string.delimiter",next:"@pop"}],{include:"@stringContentInterpol"}],atoms:[[/(:)(@atomName)/,["constant.punctuation","constant"]],[/:"/,{token:"constant.delimiter",next:"@doubleQuotedStringAtom"}],[/:'/,{token:"constant.delimiter",next:"@singleQuotedStringAtom"}]],doubleQuotedStringAtom:[[/"/,{token:"constant.delimiter",next:"@pop"}],{include:"@stringConstantContentInterpol"}],singleQuotedStringAtom:[[/'/,{token:"constant.delimiter",next:"@pop"}],{include:"@stringConstantContentInterpol"}],sigils:[[/~[a-z]@sigilStartDelimiter/,{token:"@rematch",next:"@sigil.interpol"}],[/~([A-Z]+)@sigilStartDelimiter/,{token:"@rematch",next:"@sigil.noInterpol"}]],sigil:[[/~([a-z]|[A-Z]+)\{/,{token:"@rematch",switchTo:"@sigilStart.$S2.$1.{.}"}],[/~([a-z]|[A-Z]+)\[/,{token:"@rematch",switchTo:"@sigilStart.$S2.$1.[.]"}],[/~([a-z]|[A-Z]+)\(/,{token:"@rematch",switchTo:"@sigilStart.$S2.$1.(.)"}],[/~([a-z]|[A-Z]+)\</,{token:"@rematch",switchTo:"@sigilStart.$S2.$1.<.>"}],[/~([a-z]|[A-Z]+)(@sigilSymmetricDelimiter)/,{token:"@rematch",switchTo:"@sigilStart.$S2.$1.$2.$2"}]],"sigilStart.interpol.s":[[/~s@sigilStartDelimiter/,{token:"string.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.interpol.s":[[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{"$1==$S5":{token:"string.delimiter",next:"@pop"},"@default":"string"}}],{include:"@stringContentInterpol"}],"sigilStart.noInterpol.S":[[/~S@sigilStartDelimiter/,{token:"string.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.noInterpol.S":[[/(^|[^\\])\\@sigilEndDelimiter/,"string"],[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{"$1==$S5":{token:"string.delimiter",next:"@pop"},"@default":"string"}}],{include:"@stringContent"}],"sigilStart.interpol.r":[[/~r@sigilStartDelimiter/,{token:"regexp.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.interpol.r":[[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{"$1==$S5":{token:"regexp.delimiter",next:"@pop"},"@default":"regexp"}}],{include:"@regexpContentInterpol"}],"sigilStart.noInterpol.R":[[/~R@sigilStartDelimiter/,{token:"regexp.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.noInterpol.R":[[/(^|[^\\])\\@sigilEndDelimiter/,"regexp"],[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{"$1==$S5":{token:"regexp.delimiter",next:"@pop"},"@default":"regexp"}}],{include:"@regexpContent"}],"sigilStart.interpol":[[/~([a-z]|[A-Z]+)@sigilStartDelimiter/,{token:"sigil.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.interpol":[[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{"$1==$S5":{token:"sigil.delimiter",next:"@pop"},"@default":"sigil"}}],{include:"@sigilContentInterpol"}],"sigilStart.noInterpol":[[/~([a-z]|[A-Z]+)@sigilStartDelimiter/,{token:"sigil.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.noInterpol":[[/(^|[^\\])\\@sigilEndDelimiter/,"sigil"],[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{"$1==$S5":{token:"sigil.delimiter",next:"@pop"},"@default":"sigil"}}],{include:"@sigilContent"}],attributes:[[/\@(module|type)?doc (~[sS])?"""/,{token:"comment.block.documentation",next:"@doubleQuotedHeredocDocstring"}],[/\@(module|type)?doc (~[sS])?'''/,{token:"comment.block.documentation",next:"@singleQuotedHeredocDocstring"}],[/\@(module|type)?doc (~[sS])?"/,{token:"comment.block.documentation",next:"@doubleQuotedStringDocstring"}],[/\@(module|type)?doc (~[sS])?'/,{token:"comment.block.documentation",next:"@singleQuotedStringDocstring"}],[/\@(module|type)?doc false/,"comment.block.documentation"],[/\@(@variableName)/,"variable"]],doubleQuotedHeredocDocstring:[[/"""/,{token:"comment.block.documentation",next:"@pop"}],{include:"@docstringContent"}],singleQuotedHeredocDocstring:[[/'''/,{token:"comment.block.documentation",next:"@pop"}],{include:"@docstringContent"}],doubleQuotedStringDocstring:[[/"/,{token:"comment.block.documentation",next:"@pop"}],{include:"@docstringContent"}],singleQuotedStringDocstring:[[/'/,{token:"comment.block.documentation",next:"@pop"}],{include:"@docstringContent"}],symbols:[[/\?(\\.|[^\\\s])/,"number.constant"],[/&\d+/,"operator"],[/<<<|>>>/,"operator"],[/[()\[\]\{\}]|<<|>>/,"@brackets"],[/\.\.\./,"identifier"],[/=>/,"punctuation"],[/@operator/,"operator"],[/[:;,.%]/,"punctuation"]],stringContentInterpol:[{include:"@interpolation"},{include:"@escapeChar"},{include:"@stringContent"}],stringContent:[[/./,"string"]],stringConstantContentInterpol:[{include:"@interpolation"},{include:"@escapeChar"},{include:"@stringConstantContent"}],stringConstantContent:[[/./,"constant"]],regexpContentInterpol:[{include:"@interpolation"},{include:"@escapeChar"},{include:"@regexpContent"}],regexpContent:[[/(\s)(#)(\s.*)$/,["white","comment.punctuation","comment"]],[/./,"regexp"]],sigilContentInterpol:[{include:"@interpolation"},{include:"@escapeChar"},{include:"@sigilContent"}],sigilContent:[[/./,"sigil"]],docstringContent:[[/./,"comment.block.documentation"]],escapeChar:[[/@escape/,"constant.character.escape"]],interpolation:[[/#{/,{token:"delimiter.bracket.embed",next:"@interpolationContinue"}]],interpolationContinue:[[/}/,{token:"delimiter.bracket.embed",next:"@pop"}],{include:"@root"}]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3358.c777fe1f.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/3358.c777fe1f.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3358.c777fe1f.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/337.b6fc715e.chunk.js b/ydb/core/viewer/monitoring/static/js/337.b6fc715e.chunk.js new file mode 100644 index 000000000000..91b207fddc30 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/337.b6fc715e.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 337.b6fc715e.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[337],{80337:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>s,language:()=>o});var s={comments:{lineComment:"#"}},o={defaultToken:"keyword",ignoreCase:!0,tokenPostfix:".azcli",str:/[^#\s]/,tokenizer:{root:[{include:"@comment"},[/\s-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}],[/^-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}]],type:[{include:"@comment"},[/-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":"key.identifier"}}],[/@str+\s*/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}]],comment:[[/#.*$/,{cases:{"@eos":{token:"comment",next:"@popall"}}}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/337.b6fc715e.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/337.b6fc715e.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/337.b6fc715e.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/3397.9c0005a3.chunk.js b/ydb/core/viewer/monitoring/static/js/3397.9c0005a3.chunk.js new file mode 100644 index 000000000000..59b8571aa505 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3397.9c0005a3.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3397],{53397:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ur",weekdays:"\u0627\u062a\u0648\u0627\u0631_\u067e\u06cc\u0631_\u0645\u0646\u06af\u0644_\u0628\u062f\u06be_\u062c\u0645\u0639\u0631\u0627\u062a_\u062c\u0645\u0639\u06c1_\u06c1\u0641\u062a\u06c1".split("_"),months:"\u062c\u0646\u0648\u0631\u06cc_\u0641\u0631\u0648\u0631\u06cc_\u0645\u0627\u0631\u0686_\u0627\u067e\u0631\u06cc\u0644_\u0645\u0626\u06cc_\u062c\u0648\u0646_\u062c\u0648\u0644\u0627\u0626\u06cc_\u0627\u06af\u0633\u062a_\u0633\u062a\u0645\u0628\u0631_\u0627\u06a9\u062a\u0648\u0628\u0631_\u0646\u0648\u0645\u0628\u0631_\u062f\u0633\u0645\u0628\u0631".split("_"),weekStart:1,weekdaysShort:"\u0627\u062a\u0648\u0627\u0631_\u067e\u06cc\u0631_\u0645\u0646\u06af\u0644_\u0628\u062f\u06be_\u062c\u0645\u0639\u0631\u0627\u062a_\u062c\u0645\u0639\u06c1_\u06c1\u0641\u062a\u06c1".split("_"),monthsShort:"\u062c\u0646\u0648\u0631\u06cc_\u0641\u0631\u0648\u0631\u06cc_\u0645\u0627\u0631\u0686_\u0627\u067e\u0631\u06cc\u0644_\u0645\u0626\u06cc_\u062c\u0648\u0646_\u062c\u0648\u0644\u0627\u0626\u06cc_\u0627\u06af\u0633\u062a_\u0633\u062a\u0645\u0628\u0631_\u0627\u06a9\u062a\u0648\u0628\u0631_\u0646\u0648\u0645\u0628\u0631_\u062f\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u0627\u062a\u0648\u0627\u0631_\u067e\u06cc\u0631_\u0645\u0646\u06af\u0644_\u0628\u062f\u06be_\u062c\u0645\u0639\u0631\u0627\u062a_\u062c\u0645\u0639\u06c1_\u06c1\u0641\u062a\u06c1".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3451.774580b7.chunk.js b/ydb/core/viewer/monitoring/static/js/3451.774580b7.chunk.js deleted file mode 100644 index b888b8ee7c6e..000000000000 --- a/ydb/core/viewer/monitoring/static/js/3451.774580b7.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3451],{73451:function(e,t,n){n.r(t),n.d(t,{conf:function(){return o},language:function(){return s}});var o={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={tokenPostfix:".tcl",specialFunctions:["set","unset","rename","variable","proc","coroutine","foreach","incr","append","lappend","linsert","lreplace"],mainFunctions:["if","then","elseif","else","case","switch","while","for","break","continue","return","package","namespace","catch","exit","eval","expr","uplevel","upvar"],builtinFunctions:["file","info","concat","join","lindex","list","llength","lrange","lsearch","lsort","split","array","parray","binary","format","regexp","regsub","scan","string","subst","dict","cd","clock","exec","glob","pid","pwd","close","eof","fblocked","fconfigure","fcopy","fileevent","flush","gets","open","puts","read","seek","socket","tell","interp","after","auto_execok","auto_load","auto_mkindex","auto_reset","bgerror","error","global","history","load","source","time","trace","unknown","unset","update","vwait","winfo","wm","bind","event","pack","place","grid","font","bell","clipboard","destroy","focus","grab","lower","option","raise","selection","send","tk","tkwait","tk_bisque","tk_focusNext","tk_focusPrev","tk_focusFollowsMouse","tk_popup","tk_setPalette"],symbols:/[=><!~?:&|+\-*\/\^%]+/,brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],escapes:/\\(?:[abfnrtv\\"'\[\]\{\};\$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,variables:/(?:\$+(?:(?:\:\:?)?[a-zA-Z_]\w*)+)/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@specialFunctions":{token:"keyword.flow",next:"@specialFunc"},"@mainFunctions":"keyword","@builtinFunctions":"variable","@default":"operator.scss"}}],[/\s+\-+(?!\d|\.)\w*|{\*}/,"metatag"],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/@symbols/,"operator"],[/\$+(?:\:\:)?\{/,{token:"identifier",next:"@nestedVariable"}],[/@variables/,"type.identifier"],[/\.(?!\d|\.)[\w\-]*/,"operator.sql"],[/\d+(\.\d+)?/,"number"],[/\d+/,"number"],[/;/,"delimiter"],[/"/,{token:"string.quote",bracket:"@open",next:"@dstring"}],[/'/,{token:"string.quote",bracket:"@open",next:"@sstring"}]],dstring:[[/\[/,{token:"@brackets",next:"@nestedCall"}],[/\$+(?:\:\:)?\{/,{token:"identifier",next:"@nestedVariable"}],[/@variables/,"type.identifier"],[/[^\\$\[\]"]+/,"string"],[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],sstring:[[/\[/,{token:"@brackets",next:"@nestedCall"}],[/\$+(?:\:\:)?\{/,{token:"identifier",next:"@nestedVariable"}],[/@variables/,"type.identifier"],[/[^\\$\[\]']+/,"string"],[/@escapes/,"string.escape"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/#.*\\$/,{token:"comment",next:"@newlineComment"}],[/#.*(?!\\)$/,"comment"]],newlineComment:[[/.*\\$/,"comment"],[/.*(?!\\)$/,{token:"comment",next:"@pop"}]],nestedVariable:[[/[^\{\}\$]+/,"type.identifier"],[/\}/,{token:"identifier",next:"@pop"}]],nestedCall:[[/\[/,{token:"@brackets",next:"@nestedCall"}],[/\]/,{token:"@brackets",next:"@pop"}],{include:"root"}],specialFunc:[[/"/,{token:"string",next:"@dstring"}],[/'/,{token:"string",next:"@sstring"}],[/\S+/,{token:"type",next:"@pop"}]]}}}}]); -//# sourceMappingURL=3451.774580b7.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3457.b193afe6.chunk.js b/ydb/core/viewer/monitoring/static/js/3457.b193afe6.chunk.js new file mode 100644 index 000000000000..bf06b820fb0b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3457.b193afe6.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3457],{73457:(e,l,t)=>{t.r(l),t.d(l,{ReactComponent:()=>M,default:()=>b});var c,a,h,v,m,n,z,d,r,i,f,s,p,o=t(68963);function E(){return E=Object.assign?Object.assign.bind():function(e){for(var l=1;l<arguments.length;l++){var t=arguments[l];for(var c in t)Object.prototype.hasOwnProperty.call(t,c)&&(e[c]=t[c])}return e},E.apply(this,arguments)}function u(e,l){let{title:t,titleId:u,...M}=e;return o.createElement("svg",E({width:349,height:357,fill:"none",xmlns:"http://www.w3.org/2000/svg",ref:l,"aria-labelledby":u},M),t?o.createElement("title",{id:u},t):null,c||(c=o.createElement("path",{d:"M275.033 85.83c0 24.7-9.9 83.9-9.9 117.1 0 33.2 0 106.3-27.8 134.1-27.8 27.8-61.9 16.1-61.9 16.1s-46.7 13-76.3-14.8c-29.6-27.8-60.1-83.5-69.1-115.3-9.9-35-26.5-49.3-27.8-56.5-1.3-7.2 3.6-12.1 12.1-12.6 8.5-.4 22.9 4 34.5 22 11.6 18 17.5 26 23.8 35.9 6.3 9.9 20.6 23.3 20.6 23.3s.4-44.9 1.3-64.1c.9-19.3-1.8-111.7 1.8-132.3 3.6-20.6 26.5-20.2 28.7-4 2.2 16.1 8.8 66.8 9.8 79.8s3.7 44.4 3.7 44.4l7.6-2.7s-.9-105.8-.9-132.9c0-29.2 28.7-29.2 32.3-4 3.6 25.2 6.7 142.8 6.7 142.8l6.7 2.7s2.2-111.7 5.8-129.6c3.6-17.9 26.5-17.5 30.1 4.9 3.6 22.4 1.3 72.2.9 94.2s-.9 43.5-.9 43.5l5.4 4s11-73.3 14.4-99.1c3.7-27.8 28.4-21.5 28.4 3.1z",fill:"#ECF2F9"})),a||(a=o.createElement("path",{d:"M279.233 267.33l-216.9 12c-7.3.4-13.3-5.2-13.3-12.5V99.43c0-7.3 6-12.9 13.3-12.5l216.9 12c5.6.3 10.1 5.7 10.1 12v144.4c0 6.3-4.5 11.7-10.1 12z",fill:"#FF4645"})),h||(h=o.createElement("path",{d:"M191.333 140.128l-32.3-1.4c-1.9-.1-3.8.6-5.2 1.9l-24.3 22.8c-1.4 1.3-2.2 3.2-2.2 5.2v33.7c0 2 .8 3.8 2.2 5.2l24.3 22.8c1.4 1.3 3.3 2 5.2 1.9l32.3-1.4c1.8-.1 3.6-.9 4.9-2.2l21.5-22.8c1.2-1.3 1.9-3.1 1.9-4.9v-31c0-1.8-.7-3.6-1.9-4.9l-21.5-22.8c-1.3-1.3-3.1-2.1-4.9-2.1z",fill:"#fff"})),v||(v=o.createElement("path",{d:"M203.433 196.428l-58.1.6c-1.6 0-3-1.3-3-3v-17.2c0-1.6 1.3-3 3-3l58.1.6c1.6 0 2.9 1.3 2.9 3v16c0 1.7-1.3 3-2.9 3z",fill:"#FF4645"})),m||(m=o.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M74.733 104.63c0 3.4-2.7 6-6.1 5.8-3.4-.1-6.1-3-6.1-6.4 0-3.4 2.8-6 6.1-5.8 3.4.2 6.1 3 6.1 6.4zm19.7.9c0 3.3-2.7 5.9-6 5.8-3.3-.1-6-3-6-6.3s2.7-5.9 6-5.8c3.3.1 6 2.9 6 6.3zm13.4 6.498c3.2.2 5.8-2.4 5.8-5.7 0-3.3-2.6-6.1-5.8-6.2-3.3-.2-5.9 2.4-5.9 5.7 0 3.3 2.7 6.1 5.9 6.2z",fill:"#fff"})),n||(n=o.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M248.733 248.231h84.6v-62c0-22.5-18.3-40.7-40.7-40.7h-3.2c-22.5 0-40.7 18.3-40.7 40.7v62zm70.2-14.3h-56v-47.7c0-14.6 11.9-26.4 26.4-26.4h3.2c14.6 0 26.4 11.9 26.4 26.4v47.7z",fill:"#DEB700"})),z||(z=o.createElement("path",{d:"M340.533 206.43s-16.3-2.7-17.3-2.7l-78.6 1.1c-7 .1-13.7 6.5-13.7 13.1v58.6c0 4.7 2.9 8.5 7 10.1 1.5.6 3.1.9 4.8.9l12.5 2.3 7.6-3.7 60.4-4.3c6.2-.4 11.2-5.8 11.2-11.9v-43.3l6.1-20.2z",fill:"#DEB700"})),d||(d=o.createElement("path",{d:"M337.633 284.332l-79.6 5.7c-7 .5-12.7-4.4-12.7-11v-59.6c0-6.6 5.7-12 12.7-12.1l79.6-1.1c6.2-.1 11.2 4.8 11.2 10.9v55.4c-.1 6-5 11.3-11.2 11.8z",fill:"#FBC900"})),r||(r=o.createElement("path",{d:"M313.033 236.931c0-6.3-5.2-11.4-11.7-11.4-6.7 0-12.3 5.4-12.3 12 0 5 3.2 9.1 7.6 10.7v15.5c0 2.5 2.1 4.4 4.7 4.2 2.6-.2 4.6-2.5 4.6-4.9v-15.1c4.3-2.1 7.1-6.3 7.1-11z",fill:"#00236B"})),i||(i=o.createElement("path",{d:"M308.333 236.93c0-5.5-4-10.1-9.3-11.2-5.6 1.1-10 6-10 11.8 0 5 3.2 9.1 7.6 10.7v15.5c0 1.5.8 2.8 2 3.5 1.6-.9 2.6-2.5 2.6-4.3v-15.1c4.2-2 7.1-6.2 7.1-10.9z",fill:"#18123D"})),f||(f=o.createElement("path",{d:"M21.733 41.629a2 2 0 0 0-4 0h4zm-4 8.2a2 2 0 1 0 4 0h-4zm4 17.198a2 2 0 0 0-4 0h4zm-4 8.9a2 2 0 1 0 4 0h-4zm19.2-15.197a2 2 0 0 0 0-4v4zm-8.3-4a2 2 0 1 0 0 4v-4zm-17.8 4a2 2 0 0 0 0-4v4zm-8.3-4a2 2 0 1 0 0 4v-4zm15.2-15.101v8.2h4v-8.2h-4zm0 25.398v8.9h4v-8.9h-4zm19.2-10.297h-8.3v4h8.3v-4zm-26.1 0h-8.3v4h8.3v-4zm284.2 259.098a2 2 0 0 0-4 0h4zm-4 6.2a2 2 0 1 0 4 0h-4zm4 13.1a2 2 0 0 0-4 0h4zm-4 6.8a2 2 0 1 0 4 0h-4zm15-11.1a2 2 0 0 0 0-4v4zm-6.2-4a2 2 0 0 0 0 4v-4zm-13.6 4a2 2 0 0 0 0-4v4zm-6.3-4a2 2 0 0 0 0 4v-4zm11.1-11v6.2h4v-6.2h-4zm0 19.3v6.8h4v-6.8h-4zm15-8.3h-6.2v4h6.2v-4zm-19.8 0h-6.3v4h6.3v-4z",fill:"#2EE5C0"})),s||(s=o.createElement("path",{clipRule:"evenodd",d:"M15.233 326.328c7.18 0 13-5.82 13-13s-5.82-13-13-13-13 5.82-13 13 5.82 13 13 13z",stroke:"#2EE5C0",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),p||(p=o.createElement("path",{d:"M28.233 311.328a2 2 0 0 0 0 4v-4zm35.2 2h2a2 2 0 0 0-2-2v2zm-2 12.2a2 2 0 1 0 4 0h-4zm-17.1 0a2 2 0 1 0 4 0h-4zm4-12.2a2 2 0 0 0-4 0h4zm-20.1 2h35.2v-4h-35.2v4zm33.2-2v12.2h4v-12.2h-4zm-13.1 12.2v-12.2h-4v12.2h4z",fill:"#2EE5C0"})))}const M=o.forwardRef(u),b=t.p+"static/media/403.6367e52f9464706633f52a2488a41958.svg"}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3466.98f036ac.chunk.js b/ydb/core/viewer/monitoring/static/js/3466.98f036ac.chunk.js new file mode 100644 index 000000000000..fd9c3fdf291e --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3466.98f036ac.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3466],{33466:function(e,t,_){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),a={name:"mt",weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),weekStart:1,weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"}};return _.default.locale(a,null,!0),a}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3498.c7d39060.chunk.js b/ydb/core/viewer/monitoring/static/js/3498.c7d39060.chunk.js new file mode 100644 index 000000000000..71c2b096a56b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3498.c7d39060.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 3498.c7d39060.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3498],{53498:(e,i,t)=>{t.r(i),t.d(i,{conf:()=>n,language:()=>s});var n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))"),end:new RegExp("^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))")}}},s={defaultToken:"",tokenPostfix:".kt",keywords:["as","as?","break","class","continue","do","else","false","for","fun","if","in","!in","interface","is","!is","null","object","package","return","super","this","throw","true","try","typealias","val","var","when","while","by","catch","constructor","delegate","dynamic","field","file","finally","get","import","init","param","property","receiver","set","setparam","where","actual","abstract","annotation","companion","const","crossinline","data","enum","expect","external","final","infix","inline","inner","internal","lateinit","noinline","open","operator","out","override","private","protected","public","reified","sealed","suspend","tailrec","vararg","field","it"],operators:["+","-","*","/","%","=","+=","-=","*=","/=","%=","++","--","&&","||","!","==","!=","===","!==",">","<","<=",">=","[","]","!!","?.","?:","::","..",":","?","->","@",";","$","_"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,tokenizer:{root:[[/[A-Z][\w\$]*/,"type.identifier"],[/[a-zA-Z_$][\w$]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,"annotation"],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,"number.float"],[/0[xX](@hexdigits)[Ll]?/,"number.hex"],[/0(@octaldigits)[Ll]?/,"number.octal"],[/0[bB](@binarydigits)[Ll]?/,"number.binary"],[/(@digits)[fFdD]/,"number.float"],[/(@digits)[lL]?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"""/,"string","@multistring"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@javadoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],javadoc:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc","@push"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],multistring:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"""/,"string","@pop"],[/./,"string"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3498.c7d39060.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/3498.c7d39060.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3498.c7d39060.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/358.d6300019.chunk.js b/ydb/core/viewer/monitoring/static/js/358.d6300019.chunk.js new file mode 100644 index 000000000000..acb05ea06d92 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/358.d6300019.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 358.d6300019.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[358],{80358:(e,_,t)=>{t.r(_),t.d(_,{conf:()=>r,language:()=>i});var r={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},i={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["AES128","AES256","ALL","ALLOWOVERWRITE","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","AUTHORIZATION","AZ64","BACKUP","BETWEEN","BINARY","BLANKSASNULL","BOTH","BYTEDICT","BZIP2","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","CREDENTIALS","CROSS","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURRENT_USER_ID","DEFAULT","DEFERRABLE","DEFLATE","DEFRAG","DELTA","DELTA32K","DESC","DISABLE","DISTINCT","DO","ELSE","EMPTYASNULL","ENABLE","ENCODE","ENCRYPT","ENCRYPTION","END","EXCEPT","EXPLICIT","FALSE","FOR","FOREIGN","FREEZE","FROM","FULL","GLOBALDICT256","GLOBALDICT64K","GRANT","GROUP","GZIP","HAVING","IDENTITY","IGNORE","ILIKE","IN","INITIALLY","INNER","INTERSECT","INTO","IS","ISNULL","JOIN","LANGUAGE","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","LUN","LUNS","LZO","LZOP","MINUS","MOSTLY16","MOSTLY32","MOSTLY8","NATURAL","NEW","NOT","NOTNULL","NULL","NULLS","OFF","OFFLINE","OFFSET","OID","OLD","ON","ONLY","OPEN","OR","ORDER","OUTER","OVERLAPS","PARALLEL","PARTITION","PERCENT","PERMISSIONS","PLACING","PRIMARY","RAW","READRATIO","RECOVER","REFERENCES","RESPECT","REJECTLOG","RESORT","RESTORE","RIGHT","SELECT","SESSION_USER","SIMILAR","SNAPSHOT","SOME","SYSDATE","SYSTEM","TABLE","TAG","TDES","TEXT255","TEXT32K","THEN","TIMESTAMP","TO","TOP","TRAILING","TRUE","TRUNCATECOLUMNS","UNION","UNIQUE","USER","USING","VERBOSE","WALLET","WHEN","WHERE","WITH","WITHOUT"],operators:["AND","BETWEEN","IN","LIKE","NOT","OR","IS","NULL","INTERSECT","UNION","INNER","JOIN","LEFT","OUTER","RIGHT"],builtinFunctions:["current_schema","current_schemas","has_database_privilege","has_schema_privilege","has_table_privilege","age","current_time","current_timestamp","localtime","isfinite","now","ascii","get_bit","get_byte","set_bit","set_byte","to_ascii","approximate percentile_disc","avg","count","listagg","max","median","min","percentile_cont","stddev_samp","stddev_pop","sum","var_samp","var_pop","bit_and","bit_or","bool_and","bool_or","cume_dist","first_value","lag","last_value","lead","nth_value","ratio_to_report","dense_rank","ntile","percent_rank","rank","row_number","case","coalesce","decode","greatest","least","nvl","nvl2","nullif","add_months","at time zone","convert_timezone","current_date","date_cmp","date_cmp_timestamp","date_cmp_timestamptz","date_part_year","dateadd","datediff","date_part","date_trunc","extract","getdate","interval_cmp","last_day","months_between","next_day","sysdate","timeofday","timestamp_cmp","timestamp_cmp_date","timestamp_cmp_timestamptz","timestamptz_cmp","timestamptz_cmp_date","timestamptz_cmp_timestamp","timezone","to_timestamp","trunc","abs","acos","asin","atan","atan2","cbrt","ceil","ceiling","checksum","cos","cot","degrees","dexp","dlog1","dlog10","exp","floor","ln","log","mod","pi","power","radians","random","round","sin","sign","sqrt","tan","to_hex","bpcharcmp","btrim","bttext_pattern_cmp","char_length","character_length","charindex","chr","concat","crc32","func_sha1","initcap","left and rights","len","length","lower","lpad and rpads","ltrim","md5","octet_length","position","quote_ident","quote_literal","regexp_count","regexp_instr","regexp_replace","regexp_substr","repeat","replace","replicate","reverse","rtrim","split_part","strpos","strtol","substring","textlen","translate","trim","upper","cast","convert","to_char","to_date","to_number","json_array_length","json_extract_array_element_text","json_extract_path_text","current_setting","pg_cancel_backend","pg_terminate_backend","set_config","current_database","current_user","current_user_id","pg_backend_pid","pg_last_copy_count","pg_last_copy_id","pg_last_query_id","pg_last_unload_count","session_user","slice_num","user","version","abbrev","acosd","any","area","array_agg","array_append","array_cat","array_dims","array_fill","array_length","array_lower","array_ndims","array_position","array_positions","array_prepend","array_remove","array_replace","array_to_json","array_to_string","array_to_tsvector","array_upper","asind","atan2d","atand","bit","bit_length","bound_box","box","brin_summarize_new_values","broadcast","cardinality","center","circle","clock_timestamp","col_description","concat_ws","convert_from","convert_to","corr","cosd","cotd","covar_pop","covar_samp","current_catalog","current_query","current_role","currval","cursor_to_xml","diameter","div","encode","enum_first","enum_last","enum_range","every","family","format","format_type","generate_series","generate_subscripts","get_current_ts_config","gin_clean_pending_list","grouping","has_any_column_privilege","has_column_privilege","has_foreign_data_wrapper_privilege","has_function_privilege","has_language_privilege","has_sequence_privilege","has_server_privilege","has_tablespace_privilege","has_type_privilege","height","host","hostmask","inet_client_addr","inet_client_port","inet_merge","inet_same_family","inet_server_addr","inet_server_port","isclosed","isempty","isopen","json_agg","json_object","json_object_agg","json_populate_record","json_populate_recordset","json_to_record","json_to_recordset","jsonb_agg","jsonb_object_agg","justify_days","justify_hours","justify_interval","lastval","left","line","localtimestamp","lower_inc","lower_inf","lpad","lseg","make_date","make_interval","make_time","make_timestamp","make_timestamptz","masklen","mode","netmask","network","nextval","npoints","num_nonnulls","num_nulls","numnode","obj_description","overlay","parse_ident","path","pclose","percentile_disc","pg_advisory_lock","pg_advisory_lock_shared","pg_advisory_unlock","pg_advisory_unlock_all","pg_advisory_unlock_shared","pg_advisory_xact_lock","pg_advisory_xact_lock_shared","pg_backup_start_time","pg_blocking_pids","pg_client_encoding","pg_collation_is_visible","pg_column_size","pg_conf_load_time","pg_control_checkpoint","pg_control_init","pg_control_recovery","pg_control_system","pg_conversion_is_visible","pg_create_logical_replication_slot","pg_create_physical_replication_slot","pg_create_restore_point","pg_current_xlog_flush_location","pg_current_xlog_insert_location","pg_current_xlog_location","pg_database_size","pg_describe_object","pg_drop_replication_slot","pg_export_snapshot","pg_filenode_relation","pg_function_is_visible","pg_get_constraintdef","pg_get_expr","pg_get_function_arguments","pg_get_function_identity_arguments","pg_get_function_result","pg_get_functiondef","pg_get_indexdef","pg_get_keywords","pg_get_object_address","pg_get_owned_sequence","pg_get_ruledef","pg_get_serial_sequence","pg_get_triggerdef","pg_get_userbyid","pg_get_viewdef","pg_has_role","pg_identify_object","pg_identify_object_as_address","pg_index_column_has_property","pg_index_has_property","pg_indexam_has_property","pg_indexes_size","pg_is_in_backup","pg_is_in_recovery","pg_is_other_temp_schema","pg_is_xlog_replay_paused","pg_last_committed_xact","pg_last_xact_replay_timestamp","pg_last_xlog_receive_location","pg_last_xlog_replay_location","pg_listening_channels","pg_logical_emit_message","pg_logical_slot_get_binary_changes","pg_logical_slot_get_changes","pg_logical_slot_peek_binary_changes","pg_logical_slot_peek_changes","pg_ls_dir","pg_my_temp_schema","pg_notification_queue_usage","pg_opclass_is_visible","pg_operator_is_visible","pg_opfamily_is_visible","pg_options_to_table","pg_postmaster_start_time","pg_read_binary_file","pg_read_file","pg_relation_filenode","pg_relation_filepath","pg_relation_size","pg_reload_conf","pg_replication_origin_create","pg_replication_origin_drop","pg_replication_origin_oid","pg_replication_origin_progress","pg_replication_origin_session_is_setup","pg_replication_origin_session_progress","pg_replication_origin_session_reset","pg_replication_origin_session_setup","pg_replication_origin_xact_reset","pg_replication_origin_xact_setup","pg_rotate_logfile","pg_size_bytes","pg_size_pretty","pg_sleep","pg_sleep_for","pg_sleep_until","pg_start_backup","pg_stat_file","pg_stop_backup","pg_switch_xlog","pg_table_is_visible","pg_table_size","pg_tablespace_databases","pg_tablespace_location","pg_tablespace_size","pg_total_relation_size","pg_trigger_depth","pg_try_advisory_lock","pg_try_advisory_lock_shared","pg_try_advisory_xact_lock","pg_try_advisory_xact_lock_shared","pg_ts_config_is_visible","pg_ts_dict_is_visible","pg_ts_parser_is_visible","pg_ts_template_is_visible","pg_type_is_visible","pg_typeof","pg_xact_commit_timestamp","pg_xlog_location_diff","pg_xlog_replay_pause","pg_xlog_replay_resume","pg_xlogfile_name","pg_xlogfile_name_offset","phraseto_tsquery","plainto_tsquery","point","polygon","popen","pqserverversion","query_to_xml","querytree","quote_nullable","radius","range_merge","regexp_matches","regexp_split_to_array","regexp_split_to_table","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","right","row_security_active","row_to_json","rpad","scale","set_masklen","setseed","setval","setweight","shobj_description","sind","sprintf","statement_timestamp","stddev","string_agg","string_to_array","strip","substr","table_to_xml","table_to_xml_and_xmlschema","tand","text","to_json","to_regclass","to_regnamespace","to_regoper","to_regoperator","to_regproc","to_regprocedure","to_regrole","to_regtype","to_tsquery","to_tsvector","transaction_timestamp","ts_debug","ts_delete","ts_filter","ts_headline","ts_lexize","ts_parse","ts_rank","ts_rank_cd","ts_rewrite","ts_stat","ts_token_type","tsquery_phrase","tsvector_to_array","tsvector_update_trigger","tsvector_update_trigger_column","txid_current","txid_current_snapshot","txid_snapshot_xip","txid_snapshot_xmax","txid_snapshot_xmin","txid_visible_in_snapshot","unnest","upper_inc","upper_inf","variance","width","width_bucket","xml_is_well_formed","xml_is_well_formed_content","xml_is_well_formed_document","xmlagg","xmlcomment","xmlconcat","xmlelement","xmlexists","xmlforest","xmlparse","xmlpi","xmlroot","xmlserialize","xpath","xpath_exists"],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/"/,{token:"identifier.quote",next:"@quotedIdentifier"}]],quotedIdentifier:[[/[^"]+/,"identifier"],[/""/,"identifier"],[/"/,{token:"identifier.quote",next:"@pop"}]],scopes:[]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/358.d6300019.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/358.d6300019.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/358.d6300019.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/3621.9b6c61ab.chunk.js b/ydb/core/viewer/monitoring/static/js/3621.9b6c61ab.chunk.js new file mode 100644 index 000000000000..dd6205e938ae --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3621.9b6c61ab.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 3621.9b6c61ab.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3621],{13621:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>o,language:()=>s});var o={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#pragma\\s+region\\b"),end:new RegExp("^\\s*#pragma\\s+endregion\\b")}}},s={tokenPostfix:".rust",defaultToken:"invalid",keywords:["as","async","await","box","break","const","continue","crate","dyn","else","enum","extern","false","fn","for","if","impl","in","let","loop","match","mod","move","mut","pub","ref","return","self","static","struct","super","trait","true","try","type","unsafe","use","where","while","catch","default","union","static","abstract","alignof","become","do","final","macro","offsetof","override","priv","proc","pure","sizeof","typeof","unsized","virtual","yield"],typeKeywords:["Self","m32","m64","m128","f80","f16","f128","int","uint","float","char","bool","u8","u16","u32","u64","f32","f64","i8","i16","i32","i64","str","Option","Either","c_float","c_double","c_void","FILE","fpos_t","DIR","dirent","c_char","c_schar","c_uchar","c_short","c_ushort","c_int","c_uint","c_long","c_ulong","size_t","ptrdiff_t","clock_t","time_t","c_longlong","c_ulonglong","intptr_t","uintptr_t","off_t","dev_t","ino_t","pid_t","mode_t","ssize_t"],constants:["true","false","Some","None","Left","Right","Ok","Err"],supportConstants:["EXIT_FAILURE","EXIT_SUCCESS","RAND_MAX","EOF","SEEK_SET","SEEK_CUR","SEEK_END","_IOFBF","_IONBF","_IOLBF","BUFSIZ","FOPEN_MAX","FILENAME_MAX","L_tmpnam","TMP_MAX","O_RDONLY","O_WRONLY","O_RDWR","O_APPEND","O_CREAT","O_EXCL","O_TRUNC","S_IFIFO","S_IFCHR","S_IFBLK","S_IFDIR","S_IFREG","S_IFMT","S_IEXEC","S_IWRITE","S_IREAD","S_IRWXU","S_IXUSR","S_IWUSR","S_IRUSR","F_OK","R_OK","W_OK","X_OK","STDIN_FILENO","STDOUT_FILENO","STDERR_FILENO"],supportMacros:["format!","print!","println!","panic!","format_args!","unreachable!","write!","writeln!"],operators:["!","!=","%","%=","&","&=","&&","*","*=","+","+=","-","-=","->",".","..","...","/","/=",":",";","<<","<<=","<","<=","=","==","=>",">",">=",">>",">>=","@","^","^=","|","|=","||","_","?","#"],escapes:/\\([nrt0\"''\\]|x\h{2}|u\{\h{1,6}\})/,delimiters:/[,]/,symbols:/[\#\!\%\&\*\+\-\.\/\:\;\<\=\>\@\^\|_\?]+/,intSuffixes:/[iu](8|16|32|64|128|size)/,floatSuffixes:/f(32|64)/,tokenizer:{root:[[/r(#*)"/,{token:"string.quote",bracket:"@open",next:"@stringraw.$1"}],[/[a-zA-Z][a-zA-Z0-9_]*!?|_[a-zA-Z0-9_]+/,{cases:{"@typeKeywords":"keyword.type","@keywords":"keyword","@supportConstants":"keyword","@supportMacros":"keyword","@constants":"keyword","@default":"identifier"}}],[/\$/,"identifier"],[/'[a-zA-Z_][a-zA-Z0-9_]*(?=[^\'])/,"identifier"],[/'(\S|@escapes)'/,"string.byteliteral"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],{include:"@numbers"},{include:"@whitespace"},[/@delimiters/,{cases:{"@keywords":"keyword","@default":"delimiter"}}],[/[{}()\[\]<>]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],stringraw:[[/[^"#]+/,{token:"string"}],[/"(#*)/,{cases:{"$1==$S2":{token:"string.quote",bracket:"@close",next:"@pop"},"@default":{token:"string"}}}],[/["#]/,{token:"string"}]],numbers:[[/(0o[0-7_]+)(@intSuffixes)?/,{token:"number"}],[/(0b[0-1_]+)(@intSuffixes)?/,{token:"number"}],[/[\d][\d_]*(\.[\d][\d_]*)?[eE][+-][\d_]+(@floatSuffixes)?/,{token:"number"}],[/\b(\d\.?[\d_]*)(@floatSuffixes)?\b/,{token:"number"}],[/(0x[\da-fA-F]+)_?(@intSuffixes)?/,{token:"number"}],[/[\d][\d_]*(@intSuffixes?)?/,{token:"number"}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3621.9b6c61ab.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/3621.9b6c61ab.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3621.9b6c61ab.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/3630.8eda2d3f.chunk.js b/ydb/core/viewer/monitoring/static/js/3630.8eda2d3f.chunk.js new file mode 100644 index 000000000000..3866f41f48ce --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3630.8eda2d3f.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3630],{63630:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),t={name:"en-gb",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var _=["th","st","nd","rd"],a=e%100;return"["+e+(_[(a-20)%10]||_[a]||_[0])+"]"}};return a.default.locale(t,null,!0),t}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3644.aeda46ca.chunk.js b/ydb/core/viewer/monitoring/static/js/3644.aeda46ca.chunk.js new file mode 100644 index 000000000000..8bad7a4dd18a --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3644.aeda46ca.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 3644.aeda46ca.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3644],{93644:(e,n,s)=>{s.r(n),s.d(n,{conf:()=>t,language:()=>o});var t={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"#",blockComment:["<#","#>"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},o={defaultToken:"",ignoreCase:!0,tokenPostfix:".ps1",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],keywords:["begin","break","catch","class","continue","data","define","do","dynamicparam","else","elseif","end","exit","filter","finally","for","foreach","from","function","if","in","param","process","return","switch","throw","trap","try","until","using","var","while","workflow","parallel","sequence","inlinescript","configuration"],helpKeywords:/SYNOPSIS|DESCRIPTION|PARAMETER|EXAMPLE|INPUTS|OUTPUTS|NOTES|LINK|COMPONENT|ROLE|FUNCTIONALITY|FORWARDHELPTARGETNAME|FORWARDHELPCATEGORY|REMOTEHELPRUNSPACE|EXTERNALHELP/,symbols:/[=><!~?&%|+\-*\/\^;\.,]+/,escapes:/`(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_][\w-]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":""}}],[/[ \t\r\n]+/,""],[/^:\w*/,"metatag"],[/\$(\{((global|local|private|script|using):)?[\w]+\}|((global|local|private|script|using):)?[\w]+)/,"variable"],[/<#/,"comment","@comment"],[/#.*$/,"comment"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+?/,"number"],[/[;,.]/,"delimiter"],[/\@"/,"string",'@herestring."'],[/\@'/,"string","@herestring.'"],[/"/,{cases:{"@eos":"string","@default":{token:"string",next:'@string."'}}}],[/'/,{cases:{"@eos":"string","@default":{token:"string",next:"@string.'"}}}]],string:[[/[^"'\$`]+/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/@escapes/,{cases:{"@eos":{token:"string.escape",next:"@popall"},"@default":"string.escape"}}],[/`./,{cases:{"@eos":{token:"string.escape.invalid",next:"@popall"},"@default":"string.escape.invalid"}}],[/\$[\w]+$/,{cases:{'$S2=="':{token:"variable",next:"@popall"},"@default":{token:"string",next:"@popall"}}}],[/\$[\w]+/,{cases:{'$S2=="':"variable","@default":"string"}}],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}}}]],herestring:[[/^\s*(["'])@/,{cases:{"$1==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/[^\$`]+/,"string"],[/@escapes/,"string.escape"],[/`./,"string.escape.invalid"],[/\$[\w]+/,{cases:{'$S2=="':"variable","@default":"string"}}]],comment:[[/[^#\.]+/,"comment"],[/#>/,"comment","@pop"],[/(\.)(@helpKeywords)(?!\w)/,{token:"comment.keyword.$2"}],[/[\.#]/,"comment"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3644.aeda46ca.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/3644.aeda46ca.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3644.aeda46ca.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/3645.bdd20200.chunk.js b/ydb/core/viewer/monitoring/static/js/3645.bdd20200.chunk.js new file mode 100644 index 000000000000..52e4b3485b7f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3645.bdd20200.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3645],{73645:function(e,_,n){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=_(e),o={name:"it",weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"qualche secondo",m:"un minuto",mm:"%d minuti",h:"un' ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:function(e){return e+"\xba"}};return n.default.locale(o,null,!0),o}(n(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/371.93a1186d.chunk.js b/ydb/core/viewer/monitoring/static/js/371.93a1186d.chunk.js deleted file mode 100644 index 6e4dbe200085..000000000000 --- a/ydb/core/viewer/monitoring/static/js/371.93a1186d.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[371],{20371:function(e,s,n){n.r(s),n.d(s,{conf:function(){return o},language:function(){return t}});var o={comments:{lineComment:"REM"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*(::\\s*|REM\\s+)#region"),end:new RegExp("^\\s*(::\\s*|REM\\s+)#endregion")}}},t={defaultToken:"",ignoreCase:!0,tokenPostfix:".bat",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:/call|defined|echo|errorlevel|exist|for|goto|if|pause|set|shift|start|title|not|pushd|popd/,symbols:/[=><!~?&|+\-*\/\^;\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^(\s*)(rem(?:\s.*|))$/,["","comment"]],[/(\@?)(@keywords)(?!\w)/,[{token:"keyword"},{token:"keyword.$2"}]],[/[ \t\r\n]+/,""],[/setlocal(?!\w)/,"keyword.tag-setlocal"],[/endlocal(?!\w)/,"keyword.tag-setlocal"],[/[a-zA-Z_]\w*/,""],[/:\w*/,"metatag"],[/%[^%]+%/,"variable"],[/%%[\w]+(?!\w)/,"variable"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],string:[[/[^\\"'%]+/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/%[\w ]+%/,"variable"],[/%%[\w]+(?!\w)/,"variable"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/$/,"string","@popall"]]}}}}]); -//# sourceMappingURL=371.93a1186d.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3756.67bd6b00.chunk.js b/ydb/core/viewer/monitoring/static/js/3756.67bd6b00.chunk.js new file mode 100644 index 000000000000..cd720477a728 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3756.67bd6b00.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3756],{83756:function(e,i,_){e.exports=function(e){"use strict";function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=i(e),u={name:"ro",weekdays:"Duminic\u0103_Luni_Mar\u021bi_Miercuri_Joi_Vineri_S\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"peste %s",past:"acum %s",s:"c\xe2teva secunde",m:"un minut",mm:"%d minute",h:"o or\u0103",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lun\u0103",MM:"%d luni",y:"un an",yy:"%d ani"},ordinal:function(e){return e}};return _.default.locale(u,null,!0),u}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3757.7c534899.chunk.js b/ydb/core/viewer/monitoring/static/js/3757.7c534899.chunk.js new file mode 100644 index 000000000000..9917f0abed18 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3757.7c534899.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3757],{93757:(e,t,r)=>{r.r(t),r.d(t,{MonacoDiffEditor:()=>c,default:()=>g,monaco:()=>n});var n=r(41551),o=r(68963);function u(e){return/^\d+$/.test(e)?"".concat(e,"px"):e}function i(){}var l=function(){return l=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},l.apply(this,arguments)};function a(e){var t=e.width,r=e.height,i=e.value,a=e.defaultValue,c=e.language,d=e.theme,s=e.options,f=e.overrideServices,g=e.editorWillMount,p=e.editorDidMount,h=e.editorWillUnmount,v=e.onChange,m=e.className,M=e.original,E=e.originalUri,y=e.modifiedUri,O=(0,o.useRef)(null),b=(0,o.useRef)(null),C=(0,o.useRef)(null),w=(0,o.useRef)(null),N=u(t),V=u(r),j=(0,o.useMemo)((function(){return{width:N,height:V}}),[N,V]);return(0,o.useEffect)((function(){O.current&&(g(n),b.current=n.editor.createDiffEditor(O.current,l(l(l({},m?{extraEditorClassName:m}:{}),s),d?{theme:d}:{}),f),function(){var e=null!=i?i:a,t=null===E||void 0===E?void 0:E(n),r=null===y||void 0===y?void 0:y(n),o=t&&n.editor.getModel(t),u=r&&n.editor.getModel(r);o?(o.setValue(M),n.editor.setModelLanguage(o,c)):o=n.editor.createModel(e,c,t),u?(o.setValue(e),n.editor.setModelLanguage(u,c)):u=n.editor.createModel(e,c,r),b.current.setModel({original:o,modified:u})}(),function(){p(b.current,n);var e=b.current.getModel().modified;C.current=e.onDidChangeContent((function(t){w.current||v(e.getValue(),t)}))}())}),[]),(0,o.useEffect)((function(){b.current&&b.current.updateOptions(l(l({},m?{extraEditorClassName:m}:{}),s))}),[m,s]),(0,o.useEffect)((function(){b.current&&b.current.layout()}),[t,r]),(0,o.useEffect)((function(){if(b.current){var e=b.current.getModel(),t=e.original,r=e.modified;n.editor.setModelLanguage(t,c),n.editor.setModelLanguage(r,c)}}),[c]),(0,o.useEffect)((function(){if(b.current){var e=b.current.getModel().modified;w.current=!0,b.current.getModifiedEditor().pushUndoStop(),e.pushEditOperations([],[{range:e.getFullModelRange(),text:i}]),b.current.getModifiedEditor().pushUndoStop(),w.current=!1}}),[i]),(0,o.useEffect)((function(){n.editor.setTheme(d)}),[d]),(0,o.useEffect)((function(){if(b.current){var e=b.current.getModel().original;M!==e.getValue()&&e.setValue(M)}}),[M]),(0,o.useEffect)((function(){return function(){if(b.current){h(b.current,n),b.current.dispose();var e=b.current.getModel(),t=e.original,r=e.modified;t&&t.dispose(),r&&r.dispose()}C.current&&C.current.dispose()}}),[]),o.createElement("div",{ref:O,style:j,className:"react-monaco-editor-container"})}a.defaultProps={width:"100%",height:"100%",original:null,value:null,defaultValue:"",language:"javascript",theme:null,options:{},overrideServices:{},editorWillMount:i,editorDidMount:i,editorWillUnmount:i,onChange:i,className:null},a.displayName="MonacoDiffEditor";const c=a;var d=function(){return d=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},d.apply(this,arguments)},s=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r};function f(e){var t=e.width,r=e.height,i=e.value,l=e.defaultValue,a=e.language,c=e.theme,f=e.options,g=e.overrideServices,p=e.editorWillMount,h=e.editorDidMount,v=e.editorWillUnmount,m=e.onChange,M=e.className,E=e.uri,y=(0,o.useRef)(null),O=(0,o.useRef)(null),b=(0,o.useRef)(null),C=(0,o.useRef)(null),w=u(t),N=u(r),V=(0,o.useMemo)((function(){return{width:w,height:N}}),[w,N]);return(0,o.useEffect)((function(){var e=null!==i?i:l;if(y.current){var t=d(d({},f),p(n)||{}),r=null===E||void 0===E?void 0:E(n),o=r&&n.editor.getModel(r);o?(o.setValue(e),n.editor.setModelLanguage(o,a)):o=n.editor.createModel(e,a,r),O.current=n.editor.create(y.current,d(d(d({model:o},M?{extraEditorClassName:M}:{}),t),c?{theme:c}:{}),g),h(O.current,n),b.current=O.current.onDidChangeModelContent((function(e){C.current||m(O.current.getValue(),e)}))}}),[]),(0,o.useEffect)((function(){if(O.current){if(i===O.current.getValue())return;var e=O.current.getModel();C.current=!0,O.current.pushUndoStop(),e.pushEditOperations([],[{range:e.getFullModelRange(),text:i}],void 0),O.current.pushUndoStop(),C.current=!1}}),[i]),(0,o.useEffect)((function(){if(O.current){var e=O.current.getModel();n.editor.setModelLanguage(e,a)}}),[a]),(0,o.useEffect)((function(){if(O.current){f.model;var e=s(f,["model"]);O.current.updateOptions(d(d({},M?{extraEditorClassName:M}:{}),e))}}),[M,f]),(0,o.useEffect)((function(){O.current&&O.current.layout()}),[t,r]),(0,o.useEffect)((function(){n.editor.setTheme(c)}),[c]),(0,o.useEffect)((function(){return function(){O.current&&(v(O.current,n),O.current.dispose()),b.current&&b.current.dispose()}}),[]),o.createElement("div",{ref:y,style:V,className:"react-monaco-editor-container"})}f.defaultProps={width:"100%",height:"100%",value:null,defaultValue:"",language:"javascript",theme:null,options:{},overrideServices:{},editorWillMount:i,editorDidMount:i,editorWillUnmount:i,onChange:i,className:null},f.displayName="MonacoEditor";const g=f}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3771.0e0bb0f3.chunk.js b/ydb/core/viewer/monitoring/static/js/3771.0e0bb0f3.chunk.js deleted file mode 100644 index f24146af4142..000000000000 --- a/ydb/core/viewer/monitoring/static/js/3771.0e0bb0f3.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3771],{53771:function(e,n,t){t.r(n),t.d(n,{conf:function(){return r},language:function(){return o}});var r={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0}},o={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|.*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/[^#]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}}}}]); -//# sourceMappingURL=3771.0e0bb0f3.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3771.764124c3.chunk.js b/ydb/core/viewer/monitoring/static/js/3771.764124c3.chunk.js new file mode 100644 index 000000000000..8836351f7e30 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3771.764124c3.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 3771.764124c3.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3771],{23771:(e,n,o)=>{o.r(n),o.d(n,{conf:()=>s,language:()=>t});var s={comments:{lineComment:"--",blockComment:["--[[","]]"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},t={defaultToken:"",tokenPostfix:".lua",keywords:["and","break","do","else","elseif","end","false","for","function","goto","if","in","local","nil","not","or","repeat","return","then","true","until","while"],brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],operators:["+","-","*","/","%","^","#","==","~=","<=",">=","<",">","=",";",":",",",".","..","..."],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/(,)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/,["delimiter","","key","","delimiter"]],[/({)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/,["@brackets","","key","","delimiter"]],[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,""],[/--\[([=]*)\[/,"comment","@comment.$1"],[/--.*$/,"comment"]],comment:[[/[^\]]+/,"comment"],[/\]([=]*)\]/,{cases:{"$1==$S2":{token:"comment",next:"@pop"},"@default":"comment"}}],[/./,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3771.764124c3.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/3771.764124c3.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3771.764124c3.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/383.4faec08b.chunk.js b/ydb/core/viewer/monitoring/static/js/383.4faec08b.chunk.js new file mode 100644 index 000000000000..3e4a0dbd6aee --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/383.4faec08b.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[383],{20383:function(u,r,n){u.exports=function(u){"use strict";function r(u){return u&&"object"==typeof u&&"default"in u?u:{default:u}}var n=r(u),e={s:["nokkrar sek\xfandur","nokkrar sek\xfandur","nokkrum sek\xfandum"],m:["m\xedn\xfata","m\xedn\xfatu","m\xedn\xfatu"],mm:["m\xedn\xfatur","m\xedn\xfatur","m\xedn\xfatum"],h:["klukkustund","klukkustund","klukkustund"],hh:["klukkustundir","klukkustundir","klukkustundum"],d:["dagur","dag","degi"],dd:["dagar","daga","d\xf6gum"],M:["m\xe1nu\xf0ur","m\xe1nu\xf0","m\xe1nu\xf0i"],MM:["m\xe1nu\xf0ir","m\xe1nu\xf0i","m\xe1nu\xf0um"],y:["\xe1r","\xe1r","\xe1ri"],yy:["\xe1r","\xe1r","\xe1rum"]};function t(u,r,n,t){var m=function(u,r,n,t){var m=t?0:n?1:2,a=2===u.length&&r%10==1?u[0]:u,d=e[a][m];return 1===u.length?d:"%d "+d}(n,u,t,r);return m.replace("%d",u)}var m={name:"is",weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),weekStart:1,weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),ordinal:function(u){return u},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t}};return n.default.locale(m,null,!0),m}(n(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3848.be131fc6.chunk.js b/ydb/core/viewer/monitoring/static/js/3848.be131fc6.chunk.js deleted file mode 100644 index fb126f6214b9..000000000000 --- a/ydb/core/viewer/monitoring/static/js/3848.be131fc6.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3848],{93848:function(e,t,l){l.r(t),l.d(t,{ReactComponent:function(){return E}});var r,a,n,i,c,o,d,f,s=l(4519),u=["title","titleId"];function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var l=arguments[t];for(var r in l)Object.prototype.hasOwnProperty.call(l,r)&&(e[r]=l[r])}return e},p.apply(this,arguments)}function m(e,t){if(null==e)return{};var l,r,a=function(e,t){if(null==e)return{};var l,r,a={},n=Object.keys(e);for(r=0;r<n.length;r++)l=n[r],t.indexOf(l)>=0||(a[l]=e[l]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)l=n[r],t.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(a[l]=e[l])}return a}function h(e,t){var l=e.title,h=e.titleId,E=m(e,u);return s.createElement("svg",p({xmlns:"http://www.w3.org/2000/svg",width:230,height:230,fill:"none",ref:t,"aria-labelledby":h},E),l?s.createElement("title",{id:h},l):null,r||(r=s.createElement("path",{fill:"#BECFE0",fillOpacity:.9,fillRule:"evenodd",d:"M169.001 51.666c5.523 0 10 4.477 10 10v21.017l18.197-10.506c4.783-2.762 10.899-1.123 13.66 3.66 2.761 4.783 1.123 10.899-3.66 13.66l-18.197 10.507 18.198 10.506c4.783 2.762 6.421 8.878 3.66 13.661-2.762 4.782-8.877 6.421-13.66 3.66l-18.198-10.506v21.008c0 5.523-4.477 10-10 10-5.522 0-10-4.477-10-10v-21.009l-18.199 10.507c-4.782 2.761-10.898 1.122-13.66-3.66-2.761-4.783-1.122-10.899 3.66-13.661l18.199-10.506-18.198-10.507c-4.783-2.761-6.421-8.877-3.66-13.66 2.762-4.783 8.877-6.422 13.66-3.66l18.198 10.507V61.666c0-5.523 4.478-10 10-10Z",clipRule:"evenodd"})),a||(a=s.createElement("path",{fill:"#262626",fillRule:"evenodd",d:"M171.523 95.922a11.003 11.003 0 0 1 1.099 8.347l-13.208 49.291c-1.572 5.868-7.604 9.351-13.472 7.778l-25.356-6.794a44.998 44.998 0 0 1-.53 1.929l25.368 6.797c6.935 1.858 14.064-2.257 15.922-9.192l13.207-49.291c.893-3.33.426-6.879-1.298-9.865L155.598 64.34a12.999 12.999 0 0 0-7.894-6.057l-29.972-8.031c-6.935-1.858-14.063 2.257-15.922 9.192l-11.328 42.277c.64.192 1.276.398 1.905.618l11.355-42.377c1.573-5.868 7.604-9.35 13.472-7.778l29.973 8.03a11 11 0 0 1 6.679 5.126l17.657 30.582Z",clipRule:"evenodd"})),n||(n=s.createElement("path",{fill:"#FF5958",fillOpacity:.9,d:"M35.388 155.273c-6.29-23.472 7.64-47.599 31.113-53.889 23.472-6.289 47.599 7.641 53.889 31.113 6.289 23.473-7.641 47.599-31.113 53.889-23.473 6.289-47.6-7.64-53.889-31.113Z"})),i||(i=s.createElement("path",{stroke:"#262626",strokeWidth:2,d:"M60.636 117.734c53.586-33.459-26.868-81.505-36.557-61.318-11.802 24.59 99.395 51.098 128.865-26.3"})),s.createElement("mask",{id:"b",width:89,height:89,x:33,y:99,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},c||(c=s.createElement("path",{fill:"#FF5958",fillOpacity:.9,d:"M35.388 155.273c-6.29-23.472 7.64-47.599 31.113-53.889 23.472-6.289 47.599 7.641 53.889 31.113 6.289 23.473-7.641 47.599-31.113 53.889-23.473 6.289-47.6-7.64-53.889-31.113Z"}))),o||(o=s.createElement("g",{filter:"url(#a)",mask:"url(#b)"},s.createElement("path",{stroke:"#262626",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.6,strokeWidth:2,d:"M172.389 95.422a12.004 12.004 0 0 1 1.199 9.106l-13.208 49.291c-1.715 6.401-8.295 10.2-14.697 8.485L91.591 147.81c-6.401-1.715-10.2-8.295-8.485-14.697l19.67-73.41c1.716-6.402 8.296-10.2 14.697-8.485l29.972 8.03a11.998 11.998 0 0 1 7.287 5.592l17.657 30.582Z"}))),d||(d=s.createElement("g",{filter:"url(#c)"},s.createElement("path",{fill:"#fff",fillOpacity:.72,fillRule:"evenodd",d:"M80.866 130.432a6.359 6.359 0 1 1-12.284 3.29 6.359 6.359 0 0 1 12.284-3.29Zm4.817-1.291c1.621 6.052-1.97 12.273-8.022 13.894-6.052 1.622-12.273-1.97-13.895-8.022-1.621-6.052 1.97-12.272 8.022-13.894 6.052-1.622 12.273 1.97 13.895 8.022Zm-21.346 32.565c-.154-.577-.009-2.61 2.877-5.555 2.665-2.721 6.917-5.33 12.158-6.734 5.24-1.404 10.227-1.271 13.896-.247 3.971 1.108 5.114 2.796 5.268 3.372a3.116 3.116 0 0 1-2.204 3.817l-28.178 7.55a3.116 3.116 0 0 1-3.817-2.203ZM78.081 144.6c-12.054 3.23-20.238 12.134-18.56 18.396a8.103 8.103 0 0 0 9.924 5.73l28.178-7.55a8.104 8.104 0 0 0 5.73-9.925c-1.678-6.261-13.218-9.881-25.272-6.651Z",clipRule:"evenodd"}))),f||(f=s.createElement("defs",null,s.createElement("filter",{id:"a",width:113.303,height:133.91,x:71.693,y:39.806,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse"},s.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),s.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),s.createElement("feGaussianBlur",{result:"effect1_foregroundBlur_1301_31085",stdDeviation:5})),s.createElement("filter",{id:"c",width:73.289,height:73.288,x:41.018,y:106.391,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse"},s.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),s.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),s.createElement("feColorMatrix",{in:"SourceAlpha",result:"hardAlpha",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"}),s.createElement("feOffset",null),s.createElement("feGaussianBlur",{stdDeviation:1.917}),s.createElement("feComposite",{in2:"hardAlpha",k2:-1,k3:1,operator:"arithmetic"}),s.createElement("feColorMatrix",{values:"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.8 0"}),s.createElement("feBlend",{in2:"shape",result:"effect1_innerShadow_1301_31085"})))))}var E=s.forwardRef(h);t.default=l.p+"static/media/error.9bbd075178a739dcc30f2a7a3e2a3249.svg"}}]); -//# sourceMappingURL=3848.be131fc6.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3883.62a3dee4.chunk.js b/ydb/core/viewer/monitoring/static/js/3883.62a3dee4.chunk.js deleted file mode 100644 index e800a8ba92fb..000000000000 --- a/ydb/core/viewer/monitoring/static/js/3883.62a3dee4.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3883],{33883:function(e,n,s){s.r(n),s.d(n,{conf:function(){return t},language:function(){return i}});var t={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},i={defaultToken:"",tokenPostfix:".ini",escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^\[[^\]]*\]/,"metatag"],[/(^\w+)(\s*)(\=)/,["key","","delimiter"]],{include:"@whitespace"},[/\d+/,"number"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,""],[/^\s*[#;].*$/,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}}}]); -//# sourceMappingURL=3883.62a3dee4.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3898.1fec42e6.chunk.js b/ydb/core/viewer/monitoring/static/js/3898.1fec42e6.chunk.js new file mode 100644 index 000000000000..8dc853648166 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3898.1fec42e6.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3898],{73898:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"zh-hk",months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),ordinal:function(_,e){return"W"===e?_+"\u9031":_+"\u65e5"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",m:"\u4e00\u5206\u9418",mm:"%d \u5206\u9418",h:"\u4e00\u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"\u4e00\u5929",dd:"%d \u5929",M:"\u4e00\u500b\u6708",MM:"%d \u500b\u6708",y:"\u4e00\u5e74",yy:"%d \u5e74"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3920.11b8c9d7.chunk.js b/ydb/core/viewer/monitoring/static/js/3920.11b8c9d7.chunk.js new file mode 100644 index 000000000000..a1177e7f7913 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3920.11b8c9d7.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3920],{33920:function(a,_,e){a.exports=function(a){"use strict";function _(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var e=_(a),t={name:"tr",weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(a){return a+"."}};return e.default.locale(t,null,!0),t}(e(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3926.8f2c9741.chunk.js b/ydb/core/viewer/monitoring/static/js/3926.8f2c9741.chunk.js new file mode 100644 index 000000000000..79b75bbe0ec0 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3926.8f2c9741.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3926],{3926:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"hi",weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/3945.054c871d.chunk.js b/ydb/core/viewer/monitoring/static/js/3945.054c871d.chunk.js new file mode 100644 index 000000000000..0adadf5b6089 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/3945.054c871d.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[3945],{53945:function(_,e,a){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var a=e(_),t={name:"gom-latn",weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),weekStart:1,weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"}};return a.default.locale(t,null,!0),t}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4046.5dac72a9.chunk.js b/ydb/core/viewer/monitoring/static/js/4046.5dac72a9.chunk.js new file mode 100644 index 000000000000..20008dd18ead --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4046.5dac72a9.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 4046.5dac72a9.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4046],{44046:(e,s,o)=>{o.r(s),o.d(s,{conf:()=>n,language:()=>l});var n={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},l={defaultToken:"",tokenPostfix:".dockerfile",variable:/\${?[\w]+}?/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/(ONBUILD)(\s+)/,["keyword",""]],[/(ENV)(\s+)([\w]+)/,["keyword","",{token:"variable",next:"@arguments"}]],[/(FROM|MAINTAINER|RUN|EXPOSE|ENV|ADD|ARG|VOLUME|LABEL|USER|WORKDIR|COPY|CMD|STOPSIGNAL|SHELL|HEALTHCHECK|ENTRYPOINT)/,{token:"keyword",next:"@arguments"}]],arguments:[{include:"@whitespace"},{include:"@strings"},[/(@variable)/,{cases:{"@eos":{token:"variable",next:"@popall"},"@default":"variable"}}],[/\\/,{cases:{"@eos":"","@default":""}}],[/./,{cases:{"@eos":{token:"",next:"@popall"},"@default":""}}]],whitespace:[[/\s+/,{cases:{"@eos":{token:"",next:"@popall"},"@default":""}}]],comment:[[/(^#.*$)/,"comment","@popall"]],strings:[[/\\'$/,"","@popall"],[/\\'/,""],[/'$/,"string","@popall"],[/'/,"string","@stringBody"],[/"$/,"string","@popall"],[/"/,"string","@dblStringBody"]],stringBody:[[/[^\\\$']/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/\\./,"string.escape"],[/'$/,"string","@popall"],[/'/,"string","@pop"],[/(@variable)/,"variable"],[/\\$/,"string"],[/$/,"string","@popall"]],dblStringBody:[[/[^\\\$"]/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/\\./,"string.escape"],[/"$/,"string","@popall"],[/"/,"string","@pop"],[/(@variable)/,"variable"],[/\\$/,"string"],[/$/,"string","@popall"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4046.5dac72a9.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/4046.5dac72a9.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4046.5dac72a9.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/4080.07be3744.chunk.js b/ydb/core/viewer/monitoring/static/js/4080.07be3744.chunk.js new file mode 100644 index 000000000000..37cbf2076552 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4080.07be3744.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4080],{4080:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"zh-cn",weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),ordinal:function(_,e){return"W"===e?_+"\u5468":_+"\u65e5"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},meridiem:function(_,e){var t=100*_+e;return t<600?"\u51cc\u6668":t<900?"\u65e9\u4e0a":t<1100?"\u4e0a\u5348":t<1300?"\u4e2d\u5348":t<1800?"\u4e0b\u5348":"\u665a\u4e0a"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4123.64882a16.chunk.js b/ydb/core/viewer/monitoring/static/js/4123.64882a16.chunk.js new file mode 100644 index 000000000000..c00aeeeaf23c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4123.64882a16.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 4123.64882a16.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4123],{14123:(e,o,t)=>{t.r(o),t.d(o,{conf:()=>n,language:()=>s});var n={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'},{open:"(*",close:"*)"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'},{open:"(*",close:"*)"}]},s={defaultToken:"",tokenPostfix:".cameligo",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["abs","assert","block","Bytes","case","Crypto","Current","else","failwith","false","for","fun","if","in","let","let%entry","let%init","List","list","Map","map","match","match%nat","mod","not","operation","Operation","of","record","Set","set","sender","skip","source","String","then","to","true","type","with"],typeKeywords:["int","unit","string","tz","nat","bool"],operators:["=",">","<","<=",">=","<>",":",":=","and","mod","or","+","-","*","/","@","&","^","%","->","<-","&&","||"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\(\*]+/,"comment"],[/\*\)/,"comment","@pop"],[/\(\*/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4123.64882a16.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/4123.64882a16.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4123.64882a16.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/4132.04be158e.chunk.js b/ydb/core/viewer/monitoring/static/js/4132.04be158e.chunk.js new file mode 100644 index 000000000000..b8115b388528 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4132.04be158e.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4132],{84132:function(e,n,t){e.exports=function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),a={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function r(e,n,t){var r=a[t];return Array.isArray(r)&&(r=r[n?0:1]),r.replace("%d",e)}var _={name:"de",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r}};return t.default.locale(_,null,!0),_}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4159.5e0cfd91.chunk.js b/ydb/core/viewer/monitoring/static/js/4159.5e0cfd91.chunk.js new file mode 100644 index 000000000000..a524df3e5823 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4159.5e0cfd91.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4159],{14159:function(e,_,t){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),a={name:"sv",weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){var _=e%10;return"["+e+(1===_||2===_?"a":"e")+"]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"}};return t.default.locale(a,null,!0),a}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4198.d0671061.chunk.js b/ydb/core/viewer/monitoring/static/js/4198.d0671061.chunk.js new file mode 100644 index 000000000000..7511b797b3c3 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4198.d0671061.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4198],{34198:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-sa",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/425.c6dd581a.chunk.js b/ydb/core/viewer/monitoring/static/js/425.c6dd581a.chunk.js new file mode 100644 index 000000000000..048a2886cc83 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/425.c6dd581a.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 425.c6dd581a.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[425],{425:(e,r,i)=>{i.r(r),i.d(r,{conf:()=>t,language:()=>s});var t={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}]},s={defaultToken:"",ignoreCase:!0,tokenPostfix:".shell",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["if","then","do","else","elif","while","until","for","in","esac","fi","fin","fil","done","exit","set","unset","export","function"],builtins:["ab","awk","bash","beep","cat","cc","cd","chown","chmod","chroot","clear","cp","curl","cut","diff","echo","find","gawk","gcc","get","git","grep","hg","kill","killall","ln","ls","make","mkdir","openssl","mv","nc","node","npm","ping","ps","restart","rm","rmdir","sed","service","sh","shopt","shred","source","sort","sleep","ssh","start","stop","su","sudo","svn","tee","telnet","top","touch","vi","vim","wall","wc","wget","who","write","yes","zsh"],startingWithDash:/\-+\w+/,identifiersWithDashes:/[a-zA-Z]\w+(?:@startingWithDash)+/,symbols:/[=><!~?&|+\-*\/\^;\.,]+/,tokenizer:{root:[[/@identifiersWithDashes/,""],[/(\s)((?:@startingWithDash)+)/,["white","attribute.name"]],[/[a-zA-Z]\w*/,{cases:{"@keywords":"keyword","@builtins":"type.identifier","@default":""}}],{include:"@whitespace"},{include:"@strings"},{include:"@parameters"},{include:"@heredoc"},[/[{}\[\]()]/,"@brackets"],[/@symbols/,"delimiter"],{include:"@numbers"},[/[,;]/,"delimiter"]],whitespace:[[/\s+/,"white"],[/(^#!.*$)/,"metatag"],[/(^#.*$)/,"comment"]],numbers:[[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+/,"number"]],strings:[[/'/,"string","@stringBody"],[/"/,"string","@dblStringBody"]],stringBody:[[/'/,"string","@popall"],[/./,"string"]],dblStringBody:[[/"/,"string","@popall"],[/./,"string"]],heredoc:[[/(<<[-<]?)(\s*)(['"`]?)([\w\-]+)(['"`]?)/,["constants","white","string.heredoc.delimiter","string.heredoc","string.heredoc.delimiter"]]],parameters:[[/\$\d+/,"variable.predefined"],[/\$\w+/,"variable"],[/\$[*@#?\-$!0_]/,"variable"],[/\$'/,"variable","@parameterBodyQuote"],[/\$"/,"variable","@parameterBodyDoubleQuote"],[/\$\(/,"variable","@parameterBodyParen"],[/\$\{/,"variable","@parameterBodyCurlyBrace"]],parameterBodyQuote:[[/[^#:%*@\-!_']+/,"variable"],[/[#:%*@\-!_]/,"delimiter"],[/[']/,"variable","@pop"]],parameterBodyDoubleQuote:[[/[^#:%*@\-!_"]+/,"variable"],[/[#:%*@\-!_]/,"delimiter"],[/["]/,"variable","@pop"]],parameterBodyParen:[[/[^#:%*@\-!_)]+/,"variable"],[/[#:%*@\-!_]/,"delimiter"],[/[)]/,"variable","@pop"]],parameterBodyCurlyBrace:[[/[^#:%*@\-!_}]+/,"variable"],[/[#:%*@\-!_]/,"delimiter"],[/[}]/,"variable","@pop"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/425.c6dd581a.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/425.c6dd581a.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/425.c6dd581a.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/4326.d5c34c54.chunk.js b/ydb/core/viewer/monitoring/static/js/4326.d5c34c54.chunk.js new file mode 100644 index 000000000000..cff2f9cbf2a5 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4326.d5c34c54.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4326],{94326:function(e,_,n){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=_(e),d={name:"fr-ch",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),weekStart:1,weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"}};return n.default.locale(d,null,!0),d}(n(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4345.9238776d.chunk.js b/ydb/core/viewer/monitoring/static/js/4345.9238776d.chunk.js new file mode 100644 index 000000000000..982d64d8ce90 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4345.9238776d.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 4345.9238776d.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4345],{44345:(e,n,t)=>{t.r(n),t.d(n,{conf:()=>i,language:()=>_});var i={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#pragma\\s+region\\b"),end:new RegExp("^\\s*#pragma\\s+endregion\\b")}}},_={defaultToken:"",tokenPostfix:".cpp",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["abstract","amp","array","auto","bool","break","case","catch","char","class","const","constexpr","const_cast","continue","cpu","decltype","default","delegate","delete","do","double","dynamic_cast","each","else","enum","event","explicit","export","extern","false","final","finally","float","for","friend","gcnew","generic","goto","if","in","initonly","inline","int","interface","interior_ptr","internal","literal","long","mutable","namespace","new","noexcept","nullptr","__nullptr","operator","override","partial","pascal","pin_ptr","private","property","protected","public","ref","register","reinterpret_cast","restrict","return","safe_cast","sealed","short","signed","sizeof","static","static_assert","static_cast","struct","switch","template","this","thread_local","throw","tile_static","true","try","typedef","typeid","typename","union","unsigned","using","virtual","void","volatile","wchar_t","where","while","_asm","_based","_cdecl","_declspec","_fastcall","_if_exists","_if_not_exists","_inline","_multiple_inheritance","_pascal","_single_inheritance","_stdcall","_virtual_inheritance","_w64","__abstract","__alignof","__asm","__assume","__based","__box","__builtin_alignof","__cdecl","__clrcall","__declspec","__delegate","__event","__except","__fastcall","__finally","__forceinline","__gc","__hook","__identifier","__if_exists","__if_not_exists","__inline","__int128","__int16","__int32","__int64","__int8","__interface","__leave","__m128","__m128d","__m128i","__m256","__m256d","__m256i","__m512","__m512d","__m512i","__m64","__multiple_inheritance","__newslot","__nogc","__noop","__nounwind","__novtordisp","__pascal","__pin","__pragma","__property","__ptr32","__ptr64","__raise","__restrict","__resume","__sealed","__single_inheritance","__stdcall","__super","__thiscall","__try","__try_cast","__typeof","__unaligned","__unhook","__uuidof","__value","__virtual_inheritance","__w64","__wchar_t"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[0abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/([uU](ll|LL|l|L)|(ll|LL|l|L)?[uU]?)/,floatsuffix:/[fFlL]?/,encoding:/u|u8|U|L/,tokenizer:{root:[[/@encoding?R\"(?:([^ ()\\\t]*))\(/,{token:"string.raw.begin",next:"@raw.$1"}],[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],[/^\s*#\s*include/,{token:"keyword.directive.include",next:"@include"}],[/^\s*#\s*\w+/,"keyword.directive"],{include:"@whitespace"},[/\[\s*\[/,{token:"annotation",next:"@annotation"}],[/[{}()<>\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*\\$/,"comment","@linecomment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],linecomment:[[/.*[^\\]$/,"comment","@pop"],[/[^]+/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],raw:[[/[^)]+/,"string.raw"],[/\)$S2\"/,{token:"string.raw.end",next:"@pop"}],[/\)/,"string.raw"]],annotation:[{include:"@whitespace"},[/using|alignas/,"keyword"],[/[a-zA-Z0-9_]+/,"annotation"],[/[,:]/,"delimiter"],[/[()]/,"@brackets"],[/\]\s*\]/,{token:"annotation",next:"@pop"}]],include:[[/(\s*)(<)([^<>]*)(>)/,["","keyword.directive.include.begin","string.include.identifier",{token:"keyword.directive.include.end",next:"@pop"}]],[/(\s*)(")([^"]*)(")/,["","keyword.directive.include.begin","string.include.identifier",{token:"keyword.directive.include.end",next:"@pop"}]]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4345.9238776d.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/4345.9238776d.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4345.9238776d.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/4347.adf03999.chunk.js b/ydb/core/viewer/monitoring/static/js/4347.adf03999.chunk.js new file mode 100644 index 000000000000..02abffe4d6d3 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4347.adf03999.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4347],{64347:function(s,e,i){s.exports=function(s){"use strict";function e(s){return s&&"object"==typeof s&&"default"in s?s:{default:s}}var i=e(s),M="sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),d="sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),a=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,Y=function(s,e){return a.test(e)?M[s.month()]:d[s.month()]};Y.s=d,Y.f=M;var l={name:"lt",weekdays:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),weekdaysShort:"sek_pir_ant_tre_ket_pen_\u0161e\u0161".split("_"),weekdaysMin:"s_p_a_t_k_pn_\u0161".split("_"),months:Y,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),ordinal:function(s){return s+"."},weekStart:1,relativeTime:{future:"u\u017e %s",past:"prie\u0161 %s",s:"kelias sekundes",m:"minut\u0119",mm:"%d minutes",h:"valand\u0105",hh:"%d valandas",d:"dien\u0105",dd:"%d dienas",M:"m\u0117nes\u012f",MM:"%d m\u0117nesius",y:"metus",yy:"%d metus"},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"}};return i.default.locale(l,null,!0),l}(i(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/436.564ff0f8.chunk.js b/ydb/core/viewer/monitoring/static/js/436.564ff0f8.chunk.js new file mode 100644 index 000000000000..dfe8576df9c9 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/436.564ff0f8.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[436],{75643:function(a,u,e){a.exports=function(a){"use strict";function u(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var e=u(a),t={name:"rw",weekdays:"Ku Cyumweru_Kuwa Mbere_Kuwa Kabiri_Kuwa Gatatu_Kuwa Kane_Kuwa Gatanu_Kuwa Gatandatu".split("_"),months:"Mutarama_Gashyantare_Werurwe_Mata_Gicurasi_Kamena_Nyakanga_Kanama_Nzeri_Ukwakira_Ugushyingo_Ukuboza".split("_"),relativeTime:{future:"mu %s",past:"%s",s:"amasegonda",m:"Umunota",mm:"%d iminota",h:"isaha",hh:"%d amasaha",d:"Umunsi",dd:"%d iminsi",M:"ukwezi",MM:"%d amezi",y:"umwaka",yy:"%d imyaka"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(a){return a}};return e.default.locale(t,null,!0),t}(e(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4388.edb51304.chunk.js b/ydb/core/viewer/monitoring/static/js/4388.edb51304.chunk.js new file mode 100644 index 000000000000..1cf72bf9fad8 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4388.edb51304.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 4388.edb51304.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4388],{34388:(e,n,t)=>{t.r(n),t.d(n,{conf:()=>o,language:()=>r});var o={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]},{open:"`",close:"`",notIn:["string","comment"]},{open:"/**",close:" */",notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"},{open:"(",close:")"},{open:'"',close:'"'},{open:"`",close:"`"}],folding:{markers:{start:/^\s*\s*#?region\b/,end:/^\s*\s*#?endregion\b/}}},r={defaultToken:"invalid",tokenPostfix:".dart",keywords:["abstract","dynamic","implements","show","as","else","import","static","assert","enum","in","super","async","export","interface","switch","await","extends","is","sync","break","external","library","this","case","factory","mixin","throw","catch","false","new","true","class","final","null","try","const","finally","on","typedef","continue","for","operator","var","covariant","Function","part","void","default","get","rethrow","while","deferred","hide","return","with","do","if","set","yield"],typeKeywords:["int","double","String","bool"],operators:["+","-","*","/","~/","%","++","--","==","!=",">","<",">=","<=","=","-=","/=","%=",">>=","^=","+=","*=","~/=","<<=","&=","!=","||","&&","&","|","^","~","<<",">>","!",">>>","??","?",":","|="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,"delimiter.bracket"],{include:"common"}],common:[[/[a-z_$][\w$]*/,{cases:{"@typeKeywords":"type.identifier","@keywords":"keyword","@default":"identifier"}}],[/[A-Z_$][\w\$]*/,"type.identifier"],{include:"@whitespace"},[/\/(?=([^\\\/]|\\.)+\/([gimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,{token:"regexp",bracket:"@open",next:"@regexp"}],[/@[a-zA-Z]+/,"annotation"],[/[()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/!(?=([^=]|$))/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/(@digits)[eE]([\-+]?(@digits))?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,"number.float"],[/0[xX](@hexdigits)n?/,"number.hex"],[/0[oO]?(@octaldigits)n?/,"number.octal"],[/0[bB](@binarydigits)n?/,"number.binary"],[/(@digits)n?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@jsdoc"],[/\/\*/,"comment","@comment"],[/\/\/\/.*$/,"comment.doc"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],jsdoc:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,["regexp.escape.control","regexp.escape.control","regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,["regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?:|\?=|\?!)/,["regexp.escape.control","regexp.escape.control"]],[/[()]/,"regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/[^\\\/]/,"regexp"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/(\/)([gimsuy]*)/,[{token:"regexp",bracket:"@close",next:"@pop"},"keyword.other"]]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,{token:"regexp.escape.control",next:"@pop",bracket:"@close"}]],string_double:[[/[^\\"\$]+/,"string"],[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"],[/\$\w+/,"identifier"]],string_single:[[/[^\\'\$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"],[/\$\w+/,"identifier"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4388.edb51304.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/4388.edb51304.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4388.edb51304.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/451.3b449e79.chunk.js b/ydb/core/viewer/monitoring/static/js/451.3b449e79.chunk.js new file mode 100644 index 000000000000..48e51546ae09 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/451.3b449e79.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 451.3b449e79.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[451],{80451:(e,s,o)=>{o.r(s),o.d(s,{conf:()=>t,language:()=>n});var t={comments:{lineComment:"REM"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*(::\\s*|REM\\s+)#region"),end:new RegExp("^\\s*(::\\s*|REM\\s+)#endregion")}}},n={defaultToken:"",ignoreCase:!0,tokenPostfix:".bat",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:/call|defined|echo|errorlevel|exist|for|goto|if|pause|set|shift|start|title|not|pushd|popd/,symbols:/[=><!~?&|+\-*\/\^;\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^(\s*)(rem(?:\s.*|))$/,["","comment"]],[/(\@?)(@keywords)(?!\w)/,[{token:"keyword"},{token:"keyword.$2"}]],[/[ \t\r\n]+/,""],[/setlocal(?!\w)/,"keyword.tag-setlocal"],[/endlocal(?!\w)/,"keyword.tag-setlocal"],[/[a-zA-Z_]\w*/,""],[/:\w*/,"metatag"],[/%[^%]+%/,"variable"],[/%%[\w]+(?!\w)/,"variable"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],string:[[/[^\\"'%]+/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/%[\w ]+%/,"variable"],[/%%[\w]+(?!\w)/,"variable"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/$/,"string","@popall"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/451.3b449e79.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/451.3b449e79.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/451.3b449e79.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/4529.eb0068c3.chunk.js b/ydb/core/viewer/monitoring/static/js/4529.eb0068c3.chunk.js deleted file mode 100644 index 52a013c8a752..000000000000 --- a/ydb/core/viewer/monitoring/static/js/4529.eb0068c3.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4529],{34529:function(e,t,n){n.r(t),n.d(t,{getCLS:function(){return p},getFCP:function(){return y},getFID:function(){return k},getLCP:function(){return F},getTTFB:function(){return C}});var i,a,r,o,u=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:"v1-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)}},c=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if("first-input"===e&&!("PerformanceEventTiming"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},f=function(e,t){var n=function n(i){"pagehide"!==i.type&&"hidden"!==document.visibilityState||(e(i),t&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},s=function(e){addEventListener("pageshow",(function(t){t.persisted&&e(t)}),!0)},d="function"==typeof WeakSet?new WeakSet:new Set,m=function(e,t,n){var i;return function(){t.value>=0&&(n||d.has(t)||"hidden"===document.visibilityState)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},p=function(e,t){var n,i=u("CLS",0),a=function(e){e.hadRecentInput||(i.value+=e.value,i.entries.push(e),n())},r=c("layout-shift",a);r&&(n=m(e,i,t),f((function(){r.takeRecords().map(a),n()})),s((function(){i=u("CLS",0),n=m(e,i,t)})))},v=-1,l=function(){return"hidden"===document.visibilityState?0:1/0},h=function(){f((function(e){var t=e.timeStamp;v=t}),!0)},g=function(){return v<0&&(v=l(),h(),s((function(){setTimeout((function(){v=l(),h()}),0)}))),{get timeStamp(){return v}}},y=function(e,t){var n,i=g(),a=u("FCP"),r=function(e){"first-contentful-paint"===e.name&&(f&&f.disconnect(),e.startTime<i.timeStamp&&(a.value=e.startTime,a.entries.push(e),d.add(a),n()))},o=performance.getEntriesByName("first-contentful-paint")[0],f=o?null:c("paint",r);(o||f)&&(n=m(e,a,t),o&&r(o),s((function(i){a=u("FCP"),n=m(e,a,t),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,d.add(a),n()}))}))})))},S={passive:!0,capture:!0},E=new Date,w=function(e,t){i||(i=t,a=e,r=new Date,T(removeEventListener),L())},L=function(){if(a>=0&&a<r-E){var e={entryType:"first-input",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+a};o.forEach((function(t){t(e)})),o=[]}},b=function(e){if(e.cancelable){var t=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){w(e,t),a()},i=function(){a()},a=function(){removeEventListener("pointerup",n,S),removeEventListener("pointercancel",i,S)};addEventListener("pointerup",n,S),addEventListener("pointercancel",i,S)}(t,e):w(t,e)}},T=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,b,S)}))},k=function(e,t){var n,r=g(),p=u("FID"),v=function(e){e.startTime<r.timeStamp&&(p.value=e.processingStart-e.startTime,p.entries.push(e),d.add(p),n())},l=c("first-input",v);n=m(e,p,t),l&&f((function(){l.takeRecords().map(v),l.disconnect()}),!0),l&&s((function(){var r;p=u("FID"),n=m(e,p,t),o=[],a=-1,i=null,T(addEventListener),r=v,o.push(r),L()}))},F=function(e,t){var n,i=g(),a=u("LCP"),r=function(e){var t=e.startTime;t<i.timeStamp&&(a.value=t,a.entries.push(e)),n()},o=c("largest-contentful-paint",r);if(o){n=m(e,a,t);var p=function(){d.has(a)||(o.takeRecords().map(r),o.disconnect(),d.add(a),n())};["keydown","click"].forEach((function(e){addEventListener(e,p,{once:!0,capture:!0})})),f(p,!0),s((function(i){a=u("LCP"),n=m(e,a,t),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,d.add(a),n()}))}))}))}},C=function(e){var t,n=u("TTFB");t=function(){try{var t=performance.getEntriesByType("navigation")[0]||function(){var e=performance.timing,t={entryType:"navigation",startTime:0};for(var n in e)"navigationStart"!==n&&"toJSON"!==n&&(t[n]=Math.max(e[n]-e.navigationStart,0));return t}();if(n.value=n.delta=t.responseStart,n.value<0)return;n.entries=[t],e(n)}catch(e){}},"complete"===document.readyState?setTimeout(t,0):addEventListener("pageshow",t)}}}]); -//# sourceMappingURL=4529.eb0068c3.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4535.5d1c8322.chunk.js b/ydb/core/viewer/monitoring/static/js/4535.5d1c8322.chunk.js new file mode 100644 index 000000000000..cb48f00d4bac --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4535.5d1c8322.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4535],{44535:function(t,_,h){t.exports=function(t){"use strict";function _(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var h=_(t),n={name:"vi",weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".split("_"),months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),weekStart:1,weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),ordinal:function(t){return t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"}};return h.default.locale(n,null,!0),n}(h(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4546.6820709e.chunk.js b/ydb/core/viewer/monitoring/static/js/4546.6820709e.chunk.js deleted file mode 100644 index 6d1c1d4476da..000000000000 --- a/ydb/core/viewer/monitoring/static/js/4546.6820709e.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4546],{34546:function(e,t,r){r.r(t),r.d(t,{conf:function(){return n},language:function(){return s}});var n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\$\-\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{blockComment:["###","###"],lineComment:"#"},folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},s={defaultToken:"",ignoreCase:!1,tokenPostfix:".mips",regEx:/\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,keywords:[".data",".text","syscall","trap","add","addu","addi","addiu","and","andi","div","divu","mult","multu","nor","or","ori","sll","slv","sra","srav","srl","srlv","sub","subu","xor","xori","lhi","lho","lhi","llo","slt","slti","sltu","sltiu","beq","bgtz","blez","bne","j","jal","jalr","jr","lb","lbu","lh","lhu","lw","li","la","sb","sh","sw","mfhi","mflo","mthi","mtlo","move"],symbols:/[\.,\:]+/,escapes:/\\(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\$[a-zA-Z_]\w*/,"variable.predefined"],[/[.a-zA-Z_]\w*/,{cases:{this:"variable.predefined","@keywords":{token:"keyword.$0"},"@default":""}}],[/[ \t\r\n]+/,""],[/#.*$/,"comment"],["///",{token:"regexp",next:"@hereregexp"}],[/^(\s*)(@regEx)/,["","regexp"]],[/(\,)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\:)(\s*)(@regEx)/,["delimiter","","regexp"]],[/@symbols/,"delimiter"],[/\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d+\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/0[0-7]+(?!\d)/,"number.octal"],[/\d+/,"number"],[/[,.]/,"delimiter"],[/"""/,"string",'@herestring."""'],[/'''/,"string","@herestring.'''"],[/"/,{cases:{"@eos":"string","@default":{token:"string",next:'@string."'}}}],[/'/,{cases:{"@eos":"string","@default":{token:"string",next:"@string.'"}}}]],string:[[/[^"'\#\\]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/\./,"string.escape.invalid"],[/#{/,{cases:{'$S2=="':{token:"string",next:"root.interpolatedstring"},"@default":"string"}}],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/#/,"string"]],herestring:[[/("""|''')/,{cases:{"$1==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/[^#\\'"]+/,"string"],[/['"]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/#{/,{token:"string.quote",next:"root.interpolatedstring"}],[/#/,"string"]],comment:[[/[^#]+/,"comment"],[/#/,"comment"]],hereregexp:[[/[^\\\/#]+/,"regexp"],[/\\./,"regexp"],[/#.*$/,"comment"],["///[igm]*",{token:"regexp",next:"@pop"}],[/\//,"regexp"]]}}}}]); -//# sourceMappingURL=4546.6820709e.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4550.2e04d705.chunk.js b/ydb/core/viewer/monitoring/static/js/4550.2e04d705.chunk.js new file mode 100644 index 000000000000..1a91fb9bef7f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4550.2e04d705.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 4550.2e04d705.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4550],{74550:(e,t,a)=>{a.r(t),a.d(t,{conf:()=>n,language:()=>i});var n={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["[","]"],["(",")"],["{","}"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment","identifier"]},{open:"[",close:"]",notIn:["string","comment","identifier"]},{open:"(",close:")",notIn:["string","comment","identifier"]},{open:"{",close:"}",notIn:["string","comment","identifier"]}]},i={defaultToken:"",tokenPostfix:".pq",ignoreCase:!1,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"{",close:"}",token:"delimiter.brackets"},{open:"(",close:")",token:"delimiter.parenthesis"}],operatorKeywords:["and","not","or"],keywords:["as","each","else","error","false","if","in","is","let","meta","otherwise","section","shared","then","true","try","type"],constructors:["#binary","#date","#datetime","#datetimezone","#duration","#table","#time"],constants:["#infinity","#nan","#sections","#shared"],typeKeywords:["action","any","anynonnull","none","null","logical","number","time","date","datetime","datetimezone","duration","text","binary","list","record","table","function"],builtinFunctions:["Access.Database","Action.Return","Action.Sequence","Action.Try","ActiveDirectory.Domains","AdoDotNet.DataSource","AdoDotNet.Query","AdobeAnalytics.Cubes","AnalysisServices.Database","AnalysisServices.Databases","AzureStorage.BlobContents","AzureStorage.Blobs","AzureStorage.Tables","Binary.Buffer","Binary.Combine","Binary.Compress","Binary.Decompress","Binary.End","Binary.From","Binary.FromList","Binary.FromText","Binary.InferContentType","Binary.Length","Binary.ToList","Binary.ToText","BinaryFormat.7BitEncodedSignedInteger","BinaryFormat.7BitEncodedUnsignedInteger","BinaryFormat.Binary","BinaryFormat.Byte","BinaryFormat.ByteOrder","BinaryFormat.Choice","BinaryFormat.Decimal","BinaryFormat.Double","BinaryFormat.Group","BinaryFormat.Length","BinaryFormat.List","BinaryFormat.Null","BinaryFormat.Record","BinaryFormat.SignedInteger16","BinaryFormat.SignedInteger32","BinaryFormat.SignedInteger64","BinaryFormat.Single","BinaryFormat.Text","BinaryFormat.Transform","BinaryFormat.UnsignedInteger16","BinaryFormat.UnsignedInteger32","BinaryFormat.UnsignedInteger64","Byte.From","Character.FromNumber","Character.ToNumber","Combiner.CombineTextByDelimiter","Combiner.CombineTextByEachDelimiter","Combiner.CombineTextByLengths","Combiner.CombineTextByPositions","Combiner.CombineTextByRanges","Comparer.Equals","Comparer.FromCulture","Comparer.Ordinal","Comparer.OrdinalIgnoreCase","Csv.Document","Cube.AddAndExpandDimensionColumn","Cube.AddMeasureColumn","Cube.ApplyParameter","Cube.AttributeMemberId","Cube.AttributeMemberProperty","Cube.CollapseAndRemoveColumns","Cube.Dimensions","Cube.DisplayFolders","Cube.Measures","Cube.Parameters","Cube.Properties","Cube.PropertyKey","Cube.ReplaceDimensions","Cube.Transform","Currency.From","DB2.Database","Date.AddDays","Date.AddMonths","Date.AddQuarters","Date.AddWeeks","Date.AddYears","Date.Day","Date.DayOfWeek","Date.DayOfWeekName","Date.DayOfYear","Date.DaysInMonth","Date.EndOfDay","Date.EndOfMonth","Date.EndOfQuarter","Date.EndOfWeek","Date.EndOfYear","Date.From","Date.FromText","Date.IsInCurrentDay","Date.IsInCurrentMonth","Date.IsInCurrentQuarter","Date.IsInCurrentWeek","Date.IsInCurrentYear","Date.IsInNextDay","Date.IsInNextMonth","Date.IsInNextNDays","Date.IsInNextNMonths","Date.IsInNextNQuarters","Date.IsInNextNWeeks","Date.IsInNextNYears","Date.IsInNextQuarter","Date.IsInNextWeek","Date.IsInNextYear","Date.IsInPreviousDay","Date.IsInPreviousMonth","Date.IsInPreviousNDays","Date.IsInPreviousNMonths","Date.IsInPreviousNQuarters","Date.IsInPreviousNWeeks","Date.IsInPreviousNYears","Date.IsInPreviousQuarter","Date.IsInPreviousWeek","Date.IsInPreviousYear","Date.IsInYearToDate","Date.IsLeapYear","Date.Month","Date.MonthName","Date.QuarterOfYear","Date.StartOfDay","Date.StartOfMonth","Date.StartOfQuarter","Date.StartOfWeek","Date.StartOfYear","Date.ToRecord","Date.ToText","Date.WeekOfMonth","Date.WeekOfYear","Date.Year","DateTime.AddZone","DateTime.Date","DateTime.FixedLocalNow","DateTime.From","DateTime.FromFileTime","DateTime.FromText","DateTime.IsInCurrentHour","DateTime.IsInCurrentMinute","DateTime.IsInCurrentSecond","DateTime.IsInNextHour","DateTime.IsInNextMinute","DateTime.IsInNextNHours","DateTime.IsInNextNMinutes","DateTime.IsInNextNSeconds","DateTime.IsInNextSecond","DateTime.IsInPreviousHour","DateTime.IsInPreviousMinute","DateTime.IsInPreviousNHours","DateTime.IsInPreviousNMinutes","DateTime.IsInPreviousNSeconds","DateTime.IsInPreviousSecond","DateTime.LocalNow","DateTime.Time","DateTime.ToRecord","DateTime.ToText","DateTimeZone.FixedLocalNow","DateTimeZone.FixedUtcNow","DateTimeZone.From","DateTimeZone.FromFileTime","DateTimeZone.FromText","DateTimeZone.LocalNow","DateTimeZone.RemoveZone","DateTimeZone.SwitchZone","DateTimeZone.ToLocal","DateTimeZone.ToRecord","DateTimeZone.ToText","DateTimeZone.ToUtc","DateTimeZone.UtcNow","DateTimeZone.ZoneHours","DateTimeZone.ZoneMinutes","Decimal.From","Diagnostics.ActivityId","Diagnostics.Trace","DirectQueryCapabilities.From","Double.From","Duration.Days","Duration.From","Duration.FromText","Duration.Hours","Duration.Minutes","Duration.Seconds","Duration.ToRecord","Duration.ToText","Duration.TotalDays","Duration.TotalHours","Duration.TotalMinutes","Duration.TotalSeconds","Embedded.Value","Error.Record","Excel.CurrentWorkbook","Excel.Workbook","Exchange.Contents","Expression.Constant","Expression.Evaluate","Expression.Identifier","Facebook.Graph","File.Contents","Folder.Contents","Folder.Files","Function.From","Function.Invoke","Function.InvokeAfter","Function.IsDataSource","GoogleAnalytics.Accounts","Guid.From","HdInsight.Containers","HdInsight.Contents","HdInsight.Files","Hdfs.Contents","Hdfs.Files","Informix.Database","Int16.From","Int32.From","Int64.From","Int8.From","ItemExpression.From","Json.Document","Json.FromValue","Lines.FromBinary","Lines.FromText","Lines.ToBinary","Lines.ToText","List.Accumulate","List.AllTrue","List.Alternate","List.AnyTrue","List.Average","List.Buffer","List.Combine","List.Contains","List.ContainsAll","List.ContainsAny","List.Count","List.Covariance","List.DateTimeZones","List.DateTimes","List.Dates","List.Difference","List.Distinct","List.Durations","List.FindText","List.First","List.FirstN","List.Generate","List.InsertRange","List.Intersect","List.IsDistinct","List.IsEmpty","List.Last","List.LastN","List.MatchesAll","List.MatchesAny","List.Max","List.MaxN","List.Median","List.Min","List.MinN","List.Mode","List.Modes","List.NonNullCount","List.Numbers","List.PositionOf","List.PositionOfAny","List.Positions","List.Product","List.Random","List.Range","List.RemoveFirstN","List.RemoveItems","List.RemoveLastN","List.RemoveMatchingItems","List.RemoveNulls","List.RemoveRange","List.Repeat","List.ReplaceMatchingItems","List.ReplaceRange","List.ReplaceValue","List.Reverse","List.Select","List.Single","List.SingleOrDefault","List.Skip","List.Sort","List.StandardDeviation","List.Sum","List.Times","List.Transform","List.TransformMany","List.Union","List.Zip","Logical.From","Logical.FromText","Logical.ToText","MQ.Queue","MySQL.Database","Number.Abs","Number.Acos","Number.Asin","Number.Atan","Number.Atan2","Number.BitwiseAnd","Number.BitwiseNot","Number.BitwiseOr","Number.BitwiseShiftLeft","Number.BitwiseShiftRight","Number.BitwiseXor","Number.Combinations","Number.Cos","Number.Cosh","Number.Exp","Number.Factorial","Number.From","Number.FromText","Number.IntegerDivide","Number.IsEven","Number.IsNaN","Number.IsOdd","Number.Ln","Number.Log","Number.Log10","Number.Mod","Number.Permutations","Number.Power","Number.Random","Number.RandomBetween","Number.Round","Number.RoundAwayFromZero","Number.RoundDown","Number.RoundTowardZero","Number.RoundUp","Number.Sign","Number.Sin","Number.Sinh","Number.Sqrt","Number.Tan","Number.Tanh","Number.ToText","OData.Feed","Odbc.DataSource","Odbc.Query","OleDb.DataSource","OleDb.Query","Oracle.Database","Percentage.From","PostgreSQL.Database","RData.FromBinary","Record.AddField","Record.Combine","Record.Field","Record.FieldCount","Record.FieldNames","Record.FieldOrDefault","Record.FieldValues","Record.FromList","Record.FromTable","Record.HasFields","Record.RemoveFields","Record.RenameFields","Record.ReorderFields","Record.SelectFields","Record.ToList","Record.ToTable","Record.TransformFields","Replacer.ReplaceText","Replacer.ReplaceValue","RowExpression.Column","RowExpression.From","Salesforce.Data","Salesforce.Reports","SapBusinessWarehouse.Cubes","SapHana.Database","SharePoint.Contents","SharePoint.Files","SharePoint.Tables","Single.From","Soda.Feed","Splitter.SplitByNothing","Splitter.SplitTextByAnyDelimiter","Splitter.SplitTextByDelimiter","Splitter.SplitTextByEachDelimiter","Splitter.SplitTextByLengths","Splitter.SplitTextByPositions","Splitter.SplitTextByRanges","Splitter.SplitTextByRepeatedLengths","Splitter.SplitTextByWhitespace","Sql.Database","Sql.Databases","SqlExpression.SchemaFrom","SqlExpression.ToExpression","Sybase.Database","Table.AddColumn","Table.AddIndexColumn","Table.AddJoinColumn","Table.AddKey","Table.AggregateTableColumn","Table.AlternateRows","Table.Buffer","Table.Column","Table.ColumnCount","Table.ColumnNames","Table.ColumnsOfType","Table.Combine","Table.CombineColumns","Table.Contains","Table.ContainsAll","Table.ContainsAny","Table.DemoteHeaders","Table.Distinct","Table.DuplicateColumn","Table.ExpandListColumn","Table.ExpandRecordColumn","Table.ExpandTableColumn","Table.FillDown","Table.FillUp","Table.FilterWithDataTable","Table.FindText","Table.First","Table.FirstN","Table.FirstValue","Table.FromColumns","Table.FromList","Table.FromPartitions","Table.FromRecords","Table.FromRows","Table.FromValue","Table.Group","Table.HasColumns","Table.InsertRows","Table.IsDistinct","Table.IsEmpty","Table.Join","Table.Keys","Table.Last","Table.LastN","Table.MatchesAllRows","Table.MatchesAnyRows","Table.Max","Table.MaxN","Table.Min","Table.MinN","Table.NestedJoin","Table.Partition","Table.PartitionValues","Table.Pivot","Table.PositionOf","Table.PositionOfAny","Table.PrefixColumns","Table.Profile","Table.PromoteHeaders","Table.Range","Table.RemoveColumns","Table.RemoveFirstN","Table.RemoveLastN","Table.RemoveMatchingRows","Table.RemoveRows","Table.RemoveRowsWithErrors","Table.RenameColumns","Table.ReorderColumns","Table.Repeat","Table.ReplaceErrorValues","Table.ReplaceKeys","Table.ReplaceMatchingRows","Table.ReplaceRelationshipIdentity","Table.ReplaceRows","Table.ReplaceValue","Table.ReverseRows","Table.RowCount","Table.Schema","Table.SelectColumns","Table.SelectRows","Table.SelectRowsWithErrors","Table.SingleRow","Table.Skip","Table.Sort","Table.SplitColumn","Table.ToColumns","Table.ToList","Table.ToRecords","Table.ToRows","Table.TransformColumnNames","Table.TransformColumnTypes","Table.TransformColumns","Table.TransformRows","Table.Transpose","Table.Unpivot","Table.UnpivotOtherColumns","Table.View","Table.ViewFunction","TableAction.DeleteRows","TableAction.InsertRows","TableAction.UpdateRows","Tables.GetRelationships","Teradata.Database","Text.AfterDelimiter","Text.At","Text.BeforeDelimiter","Text.BetweenDelimiters","Text.Clean","Text.Combine","Text.Contains","Text.End","Text.EndsWith","Text.Format","Text.From","Text.FromBinary","Text.Insert","Text.Length","Text.Lower","Text.Middle","Text.NewGuid","Text.PadEnd","Text.PadStart","Text.PositionOf","Text.PositionOfAny","Text.Proper","Text.Range","Text.Remove","Text.RemoveRange","Text.Repeat","Text.Replace","Text.ReplaceRange","Text.Select","Text.Split","Text.SplitAny","Text.Start","Text.StartsWith","Text.ToBinary","Text.ToList","Text.Trim","Text.TrimEnd","Text.TrimStart","Text.Upper","Time.EndOfHour","Time.From","Time.FromText","Time.Hour","Time.Minute","Time.Second","Time.StartOfHour","Time.ToRecord","Time.ToText","Type.AddTableKey","Type.ClosedRecord","Type.Facets","Type.ForFunction","Type.ForRecord","Type.FunctionParameters","Type.FunctionRequiredParameters","Type.FunctionReturn","Type.Is","Type.IsNullable","Type.IsOpenRecord","Type.ListItem","Type.NonNullable","Type.OpenRecord","Type.RecordFields","Type.ReplaceFacets","Type.ReplaceTableKeys","Type.TableColumn","Type.TableKeys","Type.TableRow","Type.TableSchema","Type.Union","Uri.BuildQueryString","Uri.Combine","Uri.EscapeDataString","Uri.Parts","Value.Add","Value.As","Value.Compare","Value.Divide","Value.Equals","Value.Firewall","Value.FromText","Value.Is","Value.Metadata","Value.Multiply","Value.NativeQuery","Value.NullableEquals","Value.RemoveMetadata","Value.ReplaceMetadata","Value.ReplaceType","Value.Subtract","Value.Type","ValueAction.NativeStatement","ValueAction.Replace","Variable.Value","Web.Contents","Web.Page","WebAction.Request","Xml.Document","Xml.Tables"],builtinConstants:["BinaryEncoding.Base64","BinaryEncoding.Hex","BinaryOccurrence.Optional","BinaryOccurrence.Repeating","BinaryOccurrence.Required","ByteOrder.BigEndian","ByteOrder.LittleEndian","Compression.Deflate","Compression.GZip","CsvStyle.QuoteAfterDelimiter","CsvStyle.QuoteAlways","Culture.Current","Day.Friday","Day.Monday","Day.Saturday","Day.Sunday","Day.Thursday","Day.Tuesday","Day.Wednesday","ExtraValues.Error","ExtraValues.Ignore","ExtraValues.List","GroupKind.Global","GroupKind.Local","JoinAlgorithm.Dynamic","JoinAlgorithm.LeftHash","JoinAlgorithm.LeftIndex","JoinAlgorithm.PairwiseHash","JoinAlgorithm.RightHash","JoinAlgorithm.RightIndex","JoinAlgorithm.SortMerge","JoinKind.FullOuter","JoinKind.Inner","JoinKind.LeftAnti","JoinKind.LeftOuter","JoinKind.RightAnti","JoinKind.RightOuter","JoinSide.Left","JoinSide.Right","MissingField.Error","MissingField.Ignore","MissingField.UseNull","Number.E","Number.Epsilon","Number.NaN","Number.NegativeInfinity","Number.PI","Number.PositiveInfinity","Occurrence.All","Occurrence.First","Occurrence.Last","Occurrence.Optional","Occurrence.Repeating","Occurrence.Required","Order.Ascending","Order.Descending","Precision.Decimal","Precision.Double","QuoteStyle.Csv","QuoteStyle.None","RelativePosition.FromEnd","RelativePosition.FromStart","RoundingMode.AwayFromZero","RoundingMode.Down","RoundingMode.ToEven","RoundingMode.TowardZero","RoundingMode.Up","SapHanaDistribution.All","SapHanaDistribution.Connection","SapHanaDistribution.Off","SapHanaDistribution.Statement","SapHanaRangeOperator.Equals","SapHanaRangeOperator.GreaterThan","SapHanaRangeOperator.GreaterThanOrEquals","SapHanaRangeOperator.LessThan","SapHanaRangeOperator.LessThanOrEquals","SapHanaRangeOperator.NotEquals","TextEncoding.Ascii","TextEncoding.BigEndianUnicode","TextEncoding.Unicode","TextEncoding.Utf16","TextEncoding.Utf8","TextEncoding.Windows","TraceLevel.Critical","TraceLevel.Error","TraceLevel.Information","TraceLevel.Verbose","TraceLevel.Warning","WebMethod.Delete","WebMethod.Get","WebMethod.Head","WebMethod.Patch","WebMethod.Post","WebMethod.Put"],builtinTypes:["Action.Type","Any.Type","Binary.Type","BinaryEncoding.Type","BinaryOccurrence.Type","Byte.Type","ByteOrder.Type","Character.Type","Compression.Type","CsvStyle.Type","Currency.Type","Date.Type","DateTime.Type","DateTimeZone.Type","Day.Type","Decimal.Type","Double.Type","Duration.Type","ExtraValues.Type","Function.Type","GroupKind.Type","Guid.Type","Int16.Type","Int32.Type","Int64.Type","Int8.Type","JoinAlgorithm.Type","JoinKind.Type","JoinSide.Type","List.Type","Logical.Type","MissingField.Type","None.Type","Null.Type","Number.Type","Occurrence.Type","Order.Type","Password.Type","Percentage.Type","Precision.Type","QuoteStyle.Type","Record.Type","RelativePosition.Type","RoundingMode.Type","SapHanaDistribution.Type","SapHanaRangeOperator.Type","Single.Type","Table.Type","Text.Type","TextEncoding.Type","Time.Type","TraceLevel.Type","Type.Type","Uri.Type","WebMethod.Type"],tokenizer:{root:[[/#"[\w \.]+"/,"identifier.quote"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/\d+([eE][\-+]?\d+)?/,"number"],[/(#?[a-z]+)\b/,{cases:{"@typeKeywords":"type","@keywords":"keyword","@constants":"constant","@constructors":"constructor","@operatorKeywords":"operators","@default":"identifier"}}],[/\b([A-Z][a-zA-Z0-9]+\.Type)\b/,{cases:{"@builtinTypes":"type","@default":"identifier"}}],[/\b([A-Z][a-zA-Z0-9]+\.[A-Z][a-zA-Z0-9]+)\b/,{cases:{"@builtinFunctions":"keyword.function","@builtinConstants":"constant","@default":"identifier"}}],[/\b([a-zA-Z_][\w\.]*)\b/,"identifier"],{include:"@whitespace"},{include:"@comments"},{include:"@strings"},[/[{}()\[\]]/,"@brackets"],[/([=\+<>\-\*&@\?\/!])|([<>]=)|(<>)|(=>)|(\.\.\.)|(\.\.)/,"operators"],[/[,;]/,"delimiter"]],whitespace:[[/\s+/,"white"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],strings:[['"',"string","@string"]],string:[['""',"string.escape"],['"',"string","@pop"],[".","string"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4550.2e04d705.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/4550.2e04d705.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4550.2e04d705.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/4583.1682cf86.chunk.js b/ydb/core/viewer/monitoring/static/js/4583.1682cf86.chunk.js new file mode 100644 index 000000000000..f9371bd5b239 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4583.1682cf86.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4583],{4583:function(a,j,r){a.exports=function(a){"use strict";function j(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var r=j(a),_={name:"tlh",weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),weekStart:1,weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return r.default.locale(_,null,!0),_}(r(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4618.131d9563.chunk.js b/ydb/core/viewer/monitoring/static/js/4618.131d9563.chunk.js new file mode 100644 index 000000000000..39a219293d16 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4618.131d9563.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4618],{24618:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"am",weekdays:"\u12a5\u1211\u12f5_\u1230\u129e_\u121b\u12ad\u1230\u129e_\u1228\u1261\u12d5_\u1210\u1219\u1235_\u12a0\u122d\u1265_\u1245\u12f3\u121c".split("_"),weekdaysShort:"\u12a5\u1211\u12f5_\u1230\u129e_\u121b\u12ad\u1230_\u1228\u1261\u12d5_\u1210\u1219\u1235_\u12a0\u122d\u1265_\u1245\u12f3\u121c".split("_"),weekdaysMin:"\u12a5\u1211_\u1230\u129e_\u121b\u12ad_\u1228\u1261_\u1210\u1219_\u12a0\u122d_\u1245\u12f3".split("_"),months:"\u1303\u1295\u12cb\u122a_\u134c\u1265\u122f\u122a_\u121b\u122d\u127d_\u12a4\u1355\u122a\u120d_\u121c\u12ed_\u1301\u1295_\u1301\u120b\u12ed_\u12a6\u1308\u1235\u1275_\u1234\u1355\u1274\u121d\u1260\u122d_\u12a6\u12ad\u1276\u1260\u122d_\u1296\u126c\u121d\u1260\u122d_\u12f2\u1234\u121d\u1260\u122d".split("_"),monthsShort:"\u1303\u1295\u12cb_\u134c\u1265\u122f_\u121b\u122d\u127d_\u12a4\u1355\u122a_\u121c\u12ed_\u1301\u1295_\u1301\u120b\u12ed_\u12a6\u1308\u1235_\u1234\u1355\u1274_\u12a6\u12ad\u1276_\u1296\u126c\u121d_\u12f2\u1234\u121d".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"\u1260%s",past:"%s \u1260\u134a\u1275",s:"\u1325\u1242\u1275 \u1230\u12a8\u1295\u12f6\u127d",m:"\u12a0\u1295\u12f5 \u12f0\u1242\u1243",mm:"%d \u12f0\u1242\u1243\u12ce\u127d",h:"\u12a0\u1295\u12f5 \u1230\u12d3\u1275",hh:"%d \u1230\u12d3\u1273\u1275",d:"\u12a0\u1295\u12f5 \u1240\u1295",dd:"%d \u1240\u1293\u1275",M:"\u12a0\u1295\u12f5 \u12c8\u122d",MM:"%d \u12c8\u122b\u1275",y:"\u12a0\u1295\u12f5 \u12d3\u1218\u1275",yy:"%d \u12d3\u1218\u1273\u1275"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM D \u1363 YYYY",LLL:"MMMM D \u1363 YYYY HH:mm",LLLL:"dddd \u1363 MMMM D \u1363 YYYY HH:mm"},ordinal:function(_){return _+"\u129b"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4635.ffa9b6b7.chunk.js b/ydb/core/viewer/monitoring/static/js/4635.ffa9b6b7.chunk.js new file mode 100644 index 000000000000..a74765bc360f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4635.ffa9b6b7.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 4635.ffa9b6b7.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4635],{74635:(e,r,n)=>{n.r(r),n.d(r,{conf:()=>t,language:()=>s});var t={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\$\-\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{blockComment:["###","###"],lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},s={defaultToken:"",ignoreCase:!0,tokenPostfix:".coffee",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],regEx:/\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,keywords:["and","or","is","isnt","not","on","yes","@","no","off","true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","if","else","switch","for","while","do","try","catch","finally","class","extends","super","undefined","then","unless","until","loop","of","by","when"],symbols:/[=><!~?&%|+\-*\/\^\.,\:]+/,escapes:/\\(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\@[a-zA-Z_]\w*/,"variable.predefined"],[/[a-zA-Z_]\w*/,{cases:{this:"variable.predefined","@keywords":{token:"keyword.$0"},"@default":""}}],[/[ \t\r\n]+/,""],[/###/,"comment","@comment"],[/#.*$/,"comment"],["///",{token:"regexp",next:"@hereregexp"}],[/^(\s*)(@regEx)/,["","regexp"]],[/(\()(\s*)(@regEx)/,["@brackets","","regexp"]],[/(\,)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\=)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\:)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\[)(\s*)(@regEx)/,["@brackets","","regexp"]],[/(\!)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\&)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\|)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\?)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\{)(\s*)(@regEx)/,["@brackets","","regexp"]],[/(\;)(\s*)(@regEx)/,["","","regexp"]],[/}/,{cases:{"$S2==interpolatedstring":{token:"string",next:"@pop"},"@default":"@brackets"}}],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d+\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/0[0-7]+(?!\d)/,"number.octal"],[/\d+/,"number"],[/[,.]/,"delimiter"],[/"""/,"string",'@herestring."""'],[/'''/,"string","@herestring.'''"],[/"/,{cases:{"@eos":"string","@default":{token:"string",next:'@string."'}}}],[/'/,{cases:{"@eos":"string","@default":{token:"string",next:"@string.'"}}}]],string:[[/[^"'\#\\]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/\./,"string.escape.invalid"],[/#{/,{cases:{'$S2=="':{token:"string",next:"root.interpolatedstring"},"@default":"string"}}],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/#/,"string"]],herestring:[[/("""|''')/,{cases:{"$1==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/[^#\\'"]+/,"string"],[/['"]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/#{/,{token:"string.quote",next:"root.interpolatedstring"}],[/#/,"string"]],comment:[[/[^#]+/,"comment"],[/###/,"comment","@pop"],[/#/,"comment"]],hereregexp:[[/[^\\\/#]+/,"regexp"],[/\\./,"regexp"],[/#.*$/,"comment"],["///[igm]*",{token:"regexp",next:"@pop"}],[/\//,"regexp"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4635.ffa9b6b7.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/4635.ffa9b6b7.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4635.ffa9b6b7.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/4663.b893c670.chunk.js b/ydb/core/viewer/monitoring/static/js/4663.b893c670.chunk.js new file mode 100644 index 000000000000..9097bc6a6391 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4663.b893c670.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4663],{74663:function(e,a,_){e.exports=function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=a(e),t={name:"pt",weekdays:"domingo_segunda-feira_ter\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sab".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_Sa".split("_"),months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),ordinal:function(e){return e+"\xba"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"alguns segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"}};return _.default.locale(t,null,!0),t}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4663.cc239299.chunk.js b/ydb/core/viewer/monitoring/static/js/4663.cc239299.chunk.js deleted file mode 100644 index f6f377adb567..000000000000 --- a/ydb/core/viewer/monitoring/static/js/4663.cc239299.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4663],{14663:function(e,n,t){t.r(n),t.d(n,{conf:function(){return r},language:function(){return i}});var s=t(37456),r={comments:{lineComment:"#",blockComment:["'''","'''"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:new RegExp("^\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\\s*$"),action:{indentAction:s.Mj.IndentAction.Indent}}],folding:{offSide:!0,markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},i={defaultToken:"",tokenPostfix:".python",keywords:["False","None","True","and","as","assert","async","await","break","class","continue","def","del","elif","else","except","exec","finally","for","from","global","if","import","in","is","lambda","nonlocal","not","or","pass","print","raise","return","try","while","with","yield","int","float","long","complex","hex","abs","all","any","apply","basestring","bin","bool","buffer","bytearray","callable","chr","classmethod","cmp","coerce","compile","complex","delattr","dict","dir","divmod","enumerate","eval","execfile","file","filter","format","frozenset","getattr","globals","hasattr","hash","help","id","input","intern","isinstance","issubclass","iter","len","locals","list","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","reversed","range","raw_input","reduce","reload","repr","reversed","round","self","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","unichr","unicode","vars","xrange","zip","__dict__","__methods__","__members__","__class__","__bases__","__name__","__mro__","__subclasses__","__init__","__import__"],brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"}],tokenizer:{root:[{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},[/[,:;]/,"delimiter"],[/[{}\[\]()]/,"@brackets"],[/@[a-zA-Z_]\w*/,"tag"],[/[a-zA-Z_]\w*/,{cases:{"@keywords":"keyword","@default":"identifier"}}]],whitespace:[[/\s+/,"white"],[/(^#.*$)/,"comment"],[/'''/,"string","@endDocString"],[/"""/,"string","@endDblDocString"]],endDocString:[[/[^']+/,"string"],[/\\'/,"string"],[/'''/,"string","@popall"],[/'/,"string"]],endDblDocString:[[/[^"]+/,"string"],[/\\"/,"string"],[/"""/,"string","@popall"],[/"/,"string"]],numbers:[[/-?0x([abcdef]|[ABCDEF]|\d)+[lL]?/,"number.hex"],[/-?(\d*\.)?\d+([eE][+\-]?\d+)?[jJ]?[lL]?/,"number"]],strings:[[/'$/,"string.escape","@popall"],[/'/,"string.escape","@stringBody"],[/"$/,"string.escape","@popall"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/[^\\']+$/,"string","@popall"],[/[^\\']+/,"string"],[/\\./,"string"],[/'/,"string.escape","@popall"],[/\\$/,"string"]],dblStringBody:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string"],[/"/,"string.escape","@popall"],[/\\$/,"string"]]}}}}]); -//# sourceMappingURL=4663.cc239299.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4684.27f737c4.chunk.js b/ydb/core/viewer/monitoring/static/js/4684.27f737c4.chunk.js new file mode 100644 index 000000000000..acf6f5ec45d6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4684.27f737c4.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4684],{44684:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"my",weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),weekStart:1,weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4712.4e557974.chunk.js b/ydb/core/viewer/monitoring/static/js/4712.4e557974.chunk.js deleted file mode 100644 index 9c14eb0b44fa..000000000000 --- a/ydb/core/viewer/monitoring/static/js/4712.4e557974.chunk.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see 4712.4e557974.chunk.js.LICENSE.txt */ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4712],{94712:function(e,t,o){o.r(t),o.d(t,{conf:function(){return n},language:function(){return i}});var n={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}]},i={defaultToken:"",tokenPostfix:".swift",identifier:/[a-zA-Z_][\w$]*/,attributes:["@autoclosure","@noescape","@noreturn","@NSApplicationMain","@NSCopying","@NSManaged","@objc","@UIApplicationMain","@noreturn","@availability","@IBAction","@IBDesignable","@IBInspectable","@IBOutlet"],accessmodifiers:["public","private","internal"],keywords:["__COLUMN__","__FILE__","__FUNCTION__","__LINE__","as","as!","as?","associativity","break","case","catch","class","continue","convenience","default","deinit","didSet","do","dynamic","dynamicType","else","enum","extension","fallthrough","final","for","func","get","guard","if","import","in","infix","init","inout","internal","is","lazy","left","let","mutating","nil","none","nonmutating","operator","optional","override","postfix","precedence","prefix","private","protocol","Protocol","public","repeat","required","return","right","self","Self","set","static","struct","subscript","super","switch","throw","throws","try","try!","Type","typealias","unowned","var","weak","where","while","willSet","FALSE","TRUE"],symbols:/[=(){}\[\].,:;@#\_&\-<>`?!+*\\\/]/,operatorstart:/[\/=\-+!*%<>&|^~?\u00A1-\u00A7\u00A9\u00AB\u00AC\u00AE\u00B0-\u00B1\u00B6\u00BB\u00BF\u00D7\u00F7\u2016-\u2017\u2020-\u2027\u2030-\u203E\u2041-\u2053\u2055-\u205E\u2190-\u23FF\u2500-\u2775\u2794-\u2BFF\u2E00-\u2E7F\u3001-\u3003\u3008-\u3030]/,operatorend:/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE00-\uFE0F\uFE20-\uFE2F\uE0100-\uE01EF]/,operators:/(@operatorstart)((@operatorstart)|(@operatorend))*/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},{include:"@attribute"},{include:"@literal"},{include:"@keyword"},{include:"@invokedmethod"},{include:"@symbol"}],whitespace:[[/\s+/,"white"],[/"""/,"string.quote","@endDblDocString"]],endDblDocString:[[/[^"]+/,"string"],[/\\"/,"string"],[/"""/,"string.quote","@popall"],[/"/,"string"]],symbol:[[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/[.]/,"delimiter"],[/@operators/,"operator"],[/@symbols/,"operator"]],comment:[[/\/\/\/.*$/,"comment.doc"],[/\/\*\*/,"comment.doc","@commentdocbody"],[/\/\/.*$/,"comment"],[/\/\*/,"comment","@commentbody"]],commentdocbody:[[/\/\*/,"comment","@commentbody"],[/\*\//,"comment.doc","@pop"],[/\:[a-zA-Z]+\:/,"comment.doc.param"],[/./,"comment.doc"]],commentbody:[[/\/\*/,"comment","@commentbody"],[/\*\//,"comment","@pop"],[/./,"comment"]],attribute:[[/@@@identifier/,{cases:{"@attributes":"keyword.control","@default":""}}]],literal:[[/"/,{token:"string.quote",next:"@stringlit"}],[/0[b]([01]_?)+/,"number.binary"],[/0[o]([0-7]_?)+/,"number.octal"],[/0[x]([0-9a-fA-F]_?)+([pP][\-+](\d_?)+)?/,"number.hex"],[/(\d_?)*\.(\d_?)+([eE][\-+]?(\d_?)+)?/,"number.float"],[/(\d_?)+/,"number"]],stringlit:[[/\\\(/,{token:"operator",next:"@interpolatedexpression"}],[/@escapes/,"string"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",next:"@pop"}],[/./,"string"]],interpolatedexpression:[[/\(/,{token:"operator",next:"@interpolatedexpression"}],[/\)/,{token:"operator",next:"@pop"}],{include:"@literal"},{include:"@keyword"},{include:"@symbol"}],keyword:[[/`/,{token:"operator",next:"@escapedkeyword"}],[/@identifier/,{cases:{"@keywords":"keyword","[A-Z][a-zA-Z0-9$]*":"type.identifier","@default":"identifier"}}]],escapedkeyword:[[/`/,{token:"operator",next:"@pop"}],[/./,"identifier"]],invokedmethod:[[/([.])(@identifier)/,{cases:{$2:["delimeter","type.identifier"],"@default":""}}]]}}}}]); -//# sourceMappingURL=4712.4e557974.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4731.6929d6df.chunk.js b/ydb/core/viewer/monitoring/static/js/4731.6929d6df.chunk.js deleted file mode 100644 index 9907b288dc96..000000000000 --- a/ydb/core/viewer/monitoring/static/js/4731.6929d6df.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4731],{84731:function(e,n,t){t.r(n),t.d(n,{conf:function(){return o},language:function(){return s}});var o={comments:{lineComment:"--",blockComment:["--[[","]]"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".lua",keywords:["and","break","do","else","elseif","end","false","for","function","goto","if","in","local","nil","not","or","repeat","return","then","true","until","while"],brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],operators:["+","-","*","/","%","^","#","==","~=","<=",">=","<",">","=",";",":",",",".","..","..."],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/(,)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/,["delimiter","","key","","delimiter"]],[/({)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/,["@brackets","","key","","delimiter"]],[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,""],[/--\[([=]*)\[/,"comment","@comment.$1"],[/--.*$/,"comment"]],comment:[[/[^\]]+/,"comment"],[/\]([=]*)\]/,{cases:{"$1==$S2":{token:"comment",next:"@pop"},"@default":"comment"}}],[/./,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}}}]); -//# sourceMappingURL=4731.6929d6df.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4789.d52069de.chunk.js b/ydb/core/viewer/monitoring/static/js/4789.d52069de.chunk.js new file mode 100644 index 000000000000..9b694428ae34 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4789.d52069de.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4789],{14789:(e,t,i)=>{i.r(t),i.d(t,{Adapter:()=>y,CodeActionAdaptor:()=>K,DefinitionAdapter:()=>D,DiagnosticsAdapter:()=>w,DocumentHighlightAdapter:()=>C,FormatAdapter:()=>N,FormatHelper:()=>O,FormatOnTypeAdapter:()=>M,InlayHintsAdapter:()=>E,Kind:()=>I,LibFiles:()=>_,OutlineAdapter:()=>F,QuickInfoAdapter:()=>x,ReferenceAdapter:()=>A,RenameAdapter:()=>R,SignatureHelpAdapter:()=>v,SuggestAdapter:()=>S,WorkerManager:()=>m,flattenDiagnosticMessageText:()=>b,getJavaScriptWorker:()=>W,getTypeScriptWorker:()=>j,setupJavaScript:()=>V,setupTypeScript:()=>H});var s,r,n,a=i(41551),o=i(13746),l=Object.defineProperty,c=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,u=Object.prototype.hasOwnProperty,g=(e,t,i,s)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let r of d(t))u.call(e,r)||r===i||l(e,r,{get:()=>t[r],enumerable:!(s=c(t,r))||s.enumerable});return e},p={};g(p,r=a,"default"),n&&g(n,r,"default");var m=class{constructor(e,t){this._modeId=e,this._defaults=t,this._worker=null,this._client=null,this._configChangeListener=this._defaults.onDidChange((()=>this._stopWorker())),this._updateExtraLibsToken=0,this._extraLibsChangeListener=this._defaults.onDidExtraLibsChange((()=>this._updateExtraLibs()))}dispose(){this._configChangeListener.dispose(),this._extraLibsChangeListener.dispose(),this._stopWorker()}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}async _updateExtraLibs(){if(!this._worker)return;const e=++this._updateExtraLibsToken,t=await this._worker.getProxy();this._updateExtraLibsToken===e&&t.updateExtraLibs(this._defaults.getExtraLibs())}_getClient(){return this._client||(this._client=(async()=>(this._worker=p.editor.createWebWorker({moduleId:"vs/language/typescript/tsWorker",label:this._modeId,keepIdleModels:!0,createData:{compilerOptions:this._defaults.getCompilerOptions(),extraLibs:this._defaults.getExtraLibs(),customWorkerPath:this._defaults.workerOptions.customWorkerPath,inlayHintsOptions:this._defaults.inlayHintsOptions}}),this._defaults.getEagerModelSync()?await this._worker.withSyncedResources(p.editor.getModels().filter((e=>e.getLanguageId()===this._modeId)).map((e=>e.uri))):await this._worker.getProxy()))()),this._client}async getLanguageServiceWorker(){const e=await this._getClient();if(this._worker){for(var t=arguments.length,i=new Array(t),s=0;s<t;s++)i[s]=arguments[s];await this._worker.withSyncedResources(i)}return e}},h={};function b(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if("string"===typeof e)return e;if(void 0===e)return"";let s="";if(i){s+=t;for(let e=0;e<i;e++)s+=" "}if(s+=e.messageText,i++,e.next)for(const r of e.next)s+=b(r,t,i);return s}function f(e){return e?e.map((e=>e.text)).join(""):""}h["lib.d.ts"]=!0,h["lib.decorators.d.ts"]=!0,h["lib.decorators.legacy.d.ts"]=!0,h["lib.dom.d.ts"]=!0,h["lib.dom.iterable.d.ts"]=!0,h["lib.es2015.collection.d.ts"]=!0,h["lib.es2015.core.d.ts"]=!0,h["lib.es2015.d.ts"]=!0,h["lib.es2015.generator.d.ts"]=!0,h["lib.es2015.iterable.d.ts"]=!0,h["lib.es2015.promise.d.ts"]=!0,h["lib.es2015.proxy.d.ts"]=!0,h["lib.es2015.reflect.d.ts"]=!0,h["lib.es2015.symbol.d.ts"]=!0,h["lib.es2015.symbol.wellknown.d.ts"]=!0,h["lib.es2016.array.include.d.ts"]=!0,h["lib.es2016.d.ts"]=!0,h["lib.es2016.full.d.ts"]=!0,h["lib.es2017.d.ts"]=!0,h["lib.es2017.full.d.ts"]=!0,h["lib.es2017.intl.d.ts"]=!0,h["lib.es2017.object.d.ts"]=!0,h["lib.es2017.sharedmemory.d.ts"]=!0,h["lib.es2017.string.d.ts"]=!0,h["lib.es2017.typedarrays.d.ts"]=!0,h["lib.es2018.asyncgenerator.d.ts"]=!0,h["lib.es2018.asynciterable.d.ts"]=!0,h["lib.es2018.d.ts"]=!0,h["lib.es2018.full.d.ts"]=!0,h["lib.es2018.intl.d.ts"]=!0,h["lib.es2018.promise.d.ts"]=!0,h["lib.es2018.regexp.d.ts"]=!0,h["lib.es2019.array.d.ts"]=!0,h["lib.es2019.d.ts"]=!0,h["lib.es2019.full.d.ts"]=!0,h["lib.es2019.intl.d.ts"]=!0,h["lib.es2019.object.d.ts"]=!0,h["lib.es2019.string.d.ts"]=!0,h["lib.es2019.symbol.d.ts"]=!0,h["lib.es2020.bigint.d.ts"]=!0,h["lib.es2020.d.ts"]=!0,h["lib.es2020.date.d.ts"]=!0,h["lib.es2020.full.d.ts"]=!0,h["lib.es2020.intl.d.ts"]=!0,h["lib.es2020.number.d.ts"]=!0,h["lib.es2020.promise.d.ts"]=!0,h["lib.es2020.sharedmemory.d.ts"]=!0,h["lib.es2020.string.d.ts"]=!0,h["lib.es2020.symbol.wellknown.d.ts"]=!0,h["lib.es2021.d.ts"]=!0,h["lib.es2021.full.d.ts"]=!0,h["lib.es2021.intl.d.ts"]=!0,h["lib.es2021.promise.d.ts"]=!0,h["lib.es2021.string.d.ts"]=!0,h["lib.es2021.weakref.d.ts"]=!0,h["lib.es2022.array.d.ts"]=!0,h["lib.es2022.d.ts"]=!0,h["lib.es2022.error.d.ts"]=!0,h["lib.es2022.full.d.ts"]=!0,h["lib.es2022.intl.d.ts"]=!0,h["lib.es2022.object.d.ts"]=!0,h["lib.es2022.regexp.d.ts"]=!0,h["lib.es2022.sharedmemory.d.ts"]=!0,h["lib.es2022.string.d.ts"]=!0,h["lib.es2023.array.d.ts"]=!0,h["lib.es2023.d.ts"]=!0,h["lib.es2023.full.d.ts"]=!0,h["lib.es5.d.ts"]=!0,h["lib.es6.d.ts"]=!0,h["lib.esnext.d.ts"]=!0,h["lib.esnext.full.d.ts"]=!0,h["lib.esnext.intl.d.ts"]=!0,h["lib.scripthost.d.ts"]=!0,h["lib.webworker.d.ts"]=!0,h["lib.webworker.importscripts.d.ts"]=!0,h["lib.webworker.iterable.d.ts"]=!0;var y=class{constructor(e){this._worker=e}_textSpanToRange(e,t){let i=e.getPositionAt(t.start),s=e.getPositionAt(t.start+t.length),{lineNumber:r,column:n}=i,{lineNumber:a,column:o}=s;return{startLineNumber:r,startColumn:n,endLineNumber:a,endColumn:o}}},_=class{constructor(e){this._worker=e,this._libFiles={},this._hasFetchedLibFiles=!1,this._fetchLibFilesPromise=null}isLibFile(e){return!!e&&(0===e.path.indexOf("/lib.")&&!!h[e.path.slice(1)])}getOrCreateModel(e){const t=p.Uri.parse(e),i=p.editor.getModel(t);if(i)return i;if(this.isLibFile(t)&&this._hasFetchedLibFiles)return p.editor.createModel(this._libFiles[t.path.slice(1)],"typescript",t);const s=o.TG.getExtraLibs()[e];return s?p.editor.createModel(s.content,"typescript",t):null}_containsLibFile(e){for(let t of e)if(this.isLibFile(t))return!0;return!1}async fetchLibFilesIfNecessary(e){this._containsLibFile(e)&&await this._fetchLibFiles()}_fetchLibFiles(){return this._fetchLibFilesPromise||(this._fetchLibFilesPromise=this._worker().then((e=>e.getLibFiles())).then((e=>{this._hasFetchedLibFiles=!0,this._libFiles=e}))),this._fetchLibFilesPromise}},w=class extends y{constructor(e,t,i,s){super(s),this._libFiles=e,this._defaults=t,this._selector=i,this._disposables=[],this._listener=Object.create(null);const r=e=>{if(e.getLanguageId()!==i)return;const t=()=>{const{onlyVisible:t}=this._defaults.getDiagnosticsOptions();t?e.isAttachedToEditor()&&this._doValidate(e):this._doValidate(e)};let s;const r=e.onDidChangeContent((()=>{clearTimeout(s),s=window.setTimeout(t,500)})),n=e.onDidChangeAttached((()=>{const{onlyVisible:i}=this._defaults.getDiagnosticsOptions();i&&(e.isAttachedToEditor()?t():p.editor.setModelMarkers(e,this._selector,[]))}));this._listener[e.uri.toString()]={dispose(){r.dispose(),n.dispose(),clearTimeout(s)}},t()},n=e=>{p.editor.setModelMarkers(e,this._selector,[]);const t=e.uri.toString();this._listener[t]&&(this._listener[t].dispose(),delete this._listener[t])};this._disposables.push(p.editor.onDidCreateModel((e=>r(e)))),this._disposables.push(p.editor.onWillDisposeModel(n)),this._disposables.push(p.editor.onDidChangeModelLanguage((e=>{n(e.model),r(e.model)}))),this._disposables.push({dispose(){for(const e of p.editor.getModels())n(e)}});const a=()=>{for(const e of p.editor.getModels())n(e),r(e)};this._disposables.push(this._defaults.onDidChange(a)),this._disposables.push(this._defaults.onDidExtraLibsChange(a)),p.editor.getModels().forEach((e=>r(e)))}dispose(){this._disposables.forEach((e=>e&&e.dispose())),this._disposables=[]}async _doValidate(e){const t=await this._worker(e.uri);if(e.isDisposed())return;const i=[],{noSyntaxValidation:s,noSemanticValidation:r,noSuggestionDiagnostics:n}=this._defaults.getDiagnosticsOptions();s||i.push(t.getSyntacticDiagnostics(e.uri.toString())),r||i.push(t.getSemanticDiagnostics(e.uri.toString())),n||i.push(t.getSuggestionDiagnostics(e.uri.toString()));const a=await Promise.all(i);if(!a||e.isDisposed())return;const o=a.reduce(((e,t)=>t.concat(e)),[]).filter((e=>-1===(this._defaults.getDiagnosticsOptions().diagnosticCodesToIgnore||[]).indexOf(e.code))),l=o.map((e=>e.relatedInformation||[])).reduce(((e,t)=>t.concat(e)),[]).map((e=>e.file?p.Uri.parse(e.file.fileName):null));await this._libFiles.fetchLibFilesIfNecessary(l),e.isDisposed()||p.editor.setModelMarkers(e,this._selector,o.map((t=>this._convertDiagnostics(e,t))))}_convertDiagnostics(e,t){const i=t.start||0,s=t.length||1,{lineNumber:r,column:n}=e.getPositionAt(i),{lineNumber:a,column:o}=e.getPositionAt(i+s),l=[];return t.reportsUnnecessary&&l.push(p.MarkerTag.Unnecessary),t.reportsDeprecated&&l.push(p.MarkerTag.Deprecated),{severity:this._tsDiagnosticCategoryToMarkerSeverity(t.category),startLineNumber:r,startColumn:n,endLineNumber:a,endColumn:o,message:b(t.messageText,"\n"),code:t.code.toString(),tags:l,relatedInformation:this._convertRelatedInformation(e,t.relatedInformation)}}_convertRelatedInformation(e,t){if(!t)return[];const i=[];return t.forEach((t=>{let s=e;if(t.file&&(s=this._libFiles.getOrCreateModel(t.file.fileName)),!s)return;const r=t.start||0,n=t.length||1,{lineNumber:a,column:o}=s.getPositionAt(r),{lineNumber:l,column:c}=s.getPositionAt(r+n);i.push({resource:s.uri,startLineNumber:a,startColumn:o,endLineNumber:l,endColumn:c,message:b(t.messageText,"\n")})})),i}_tsDiagnosticCategoryToMarkerSeverity(e){switch(e){case 1:return p.MarkerSeverity.Error;case 3:return p.MarkerSeverity.Info;case 0:return p.MarkerSeverity.Warning;case 2:return p.MarkerSeverity.Hint}return p.MarkerSeverity.Info}},S=class e extends y{get triggerCharacters(){return["."]}async provideCompletionItems(t,i,s,r){const n=t.getWordUntilPosition(i),a=new p.Range(i.lineNumber,n.startColumn,i.lineNumber,n.endColumn),o=t.uri,l=t.getOffsetAt(i),c=await this._worker(o);if(t.isDisposed())return;const d=await c.getCompletionsAtPosition(o.toString(),l);if(!d||t.isDisposed())return;return{suggestions:d.entries.map((s=>{let r=a;if(s.replacementSpan){const e=t.getPositionAt(s.replacementSpan.start),i=t.getPositionAt(s.replacementSpan.start+s.replacementSpan.length);r=new p.Range(e.lineNumber,e.column,i.lineNumber,i.column)}const n=[];return void 0!==s.kindModifiers&&-1!==s.kindModifiers.indexOf("deprecated")&&n.push(p.languages.CompletionItemTag.Deprecated),{uri:o,position:i,offset:l,range:r,label:s.name,insertText:s.name,sortText:s.sortText,kind:e.convertKind(s.kind),tags:n}}))}}async resolveCompletionItem(t,i){const s=t,r=s.uri,n=s.position,a=s.offset,o=await this._worker(r),l=await o.getCompletionEntryDetails(r.toString(),a,s.label);return l?{uri:r,position:n,label:l.name,kind:e.convertKind(l.kind),detail:f(l.displayParts),documentation:{value:e.createDocumentationString(l)}}:s}static convertKind(e){switch(e){case I.primitiveType:case I.keyword:return p.languages.CompletionItemKind.Keyword;case I.variable:case I.localVariable:return p.languages.CompletionItemKind.Variable;case I.memberVariable:case I.memberGetAccessor:case I.memberSetAccessor:return p.languages.CompletionItemKind.Field;case I.function:case I.memberFunction:case I.constructSignature:case I.callSignature:case I.indexSignature:return p.languages.CompletionItemKind.Function;case I.enum:return p.languages.CompletionItemKind.Enum;case I.module:return p.languages.CompletionItemKind.Module;case I.class:return p.languages.CompletionItemKind.Class;case I.interface:return p.languages.CompletionItemKind.Interface;case I.warning:return p.languages.CompletionItemKind.File}return p.languages.CompletionItemKind.Property}static createDocumentationString(e){let t=f(e.documentation);if(e.tags)for(const i of e.tags)t+="\n\n".concat(k(i));return t}};function k(e){let t="*@".concat(e.name,"*");if("param"===e.name&&e.text){const[i,...s]=e.text;t+="`".concat(i.text,"`"),s.length>0&&(t+=" \u2014 ".concat(s.map((e=>e.text)).join(" ")))}else Array.isArray(e.text)?t+=" \u2014 ".concat(e.text.map((e=>e.text)).join(" ")):e.text&&(t+=" \u2014 ".concat(e.text));return t}var v=class e extends y{constructor(){super(...arguments),this.signatureHelpTriggerCharacters=["(",","]}static _toSignatureHelpTriggerReason(e){switch(e.triggerKind){case p.languages.SignatureHelpTriggerKind.TriggerCharacter:return e.triggerCharacter?e.isRetrigger?{kind:"retrigger",triggerCharacter:e.triggerCharacter}:{kind:"characterTyped",triggerCharacter:e.triggerCharacter}:{kind:"invoked"};case p.languages.SignatureHelpTriggerKind.ContentChange:return e.isRetrigger?{kind:"retrigger"}:{kind:"invoked"};case p.languages.SignatureHelpTriggerKind.Invoke:default:return{kind:"invoked"}}}async provideSignatureHelp(t,i,s,r){const n=t.uri,a=t.getOffsetAt(i),o=await this._worker(n);if(t.isDisposed())return;const l=await o.getSignatureHelpItems(n.toString(),a,{triggerReason:e._toSignatureHelpTriggerReason(r)});if(!l||t.isDisposed())return;const c={activeSignature:l.selectedItemIndex,activeParameter:l.argumentIndex,signatures:[]};return l.items.forEach((e=>{const t={label:"",parameters:[]};t.documentation={value:f(e.documentation)},t.label+=f(e.prefixDisplayParts),e.parameters.forEach(((i,s,r)=>{const n=f(i.displayParts),a={label:n,documentation:{value:f(i.documentation)}};t.label+=n,t.parameters.push(a),s<r.length-1&&(t.label+=f(e.separatorDisplayParts))})),t.label+=f(e.suffixDisplayParts),c.signatures.push(t)})),{value:c,dispose(){}}}},x=class extends y{async provideHover(e,t,i){const s=e.uri,r=e.getOffsetAt(t),n=await this._worker(s);if(e.isDisposed())return;const a=await n.getQuickInfoAtPosition(s.toString(),r);if(!a||e.isDisposed())return;const o=f(a.documentation),l=a.tags?a.tags.map((e=>k(e))).join(" \n\n"):"",c=f(a.displayParts);return{range:this._textSpanToRange(e,a.textSpan),contents:[{value:"```typescript\n"+c+"\n```\n"},{value:o+(l?"\n\n"+l:"")}]}}},C=class extends y{async provideDocumentHighlights(e,t,i){const s=e.uri,r=e.getOffsetAt(t),n=await this._worker(s);if(e.isDisposed())return;const a=await n.getDocumentHighlights(s.toString(),r,[s.toString()]);return a&&!e.isDisposed()?a.flatMap((t=>t.highlightSpans.map((t=>({range:this._textSpanToRange(e,t.textSpan),kind:"writtenReference"===t.kind?p.languages.DocumentHighlightKind.Write:p.languages.DocumentHighlightKind.Text}))))):void 0}},D=class extends y{constructor(e,t){super(t),this._libFiles=e}async provideDefinition(e,t,i){const s=e.uri,r=e.getOffsetAt(t),n=await this._worker(s);if(e.isDisposed())return;const a=await n.getDefinitionAtPosition(s.toString(),r);if(!a||e.isDisposed())return;if(await this._libFiles.fetchLibFilesIfNecessary(a.map((e=>p.Uri.parse(e.fileName)))),e.isDisposed())return;const o=[];for(let l of a){const e=this._libFiles.getOrCreateModel(l.fileName);e&&o.push({uri:e.uri,range:this._textSpanToRange(e,l.textSpan)})}return o}},A=class extends y{constructor(e,t){super(t),this._libFiles=e}async provideReferences(e,t,i,s){const r=e.uri,n=e.getOffsetAt(t),a=await this._worker(r);if(e.isDisposed())return;const o=await a.getReferencesAtPosition(r.toString(),n);if(!o||e.isDisposed())return;if(await this._libFiles.fetchLibFilesIfNecessary(o.map((e=>p.Uri.parse(e.fileName)))),e.isDisposed())return;const l=[];for(let c of o){const e=this._libFiles.getOrCreateModel(c.fileName);e&&l.push({uri:e.uri,range:this._textSpanToRange(e,c.textSpan)})}return l}},F=class extends y{async provideDocumentSymbols(e,t){const i=e.uri,s=await this._worker(i);if(e.isDisposed())return;const r=await s.getNavigationTree(i.toString());if(!r||e.isDisposed())return;const n=(t,i)=>{var s;return{name:t.text,detail:"",kind:T[t.kind]||p.languages.SymbolKind.Variable,range:this._textSpanToRange(e,t.spans[0]),selectionRange:this._textSpanToRange(e,t.spans[0]),tags:[],children:null===(s=t.childItems)||void 0===s?void 0:s.map((e=>n(e,t.text))),containerName:i}};return r.childItems?r.childItems.map((e=>n(e))):[]}},I=((s=class{}).unknown="",s.keyword="keyword",s.script="script",s.module="module",s.class="class",s.interface="interface",s.type="type",s.enum="enum",s.variable="var",s.localVariable="local var",s.function="function",s.localFunction="local function",s.memberFunction="method",s.memberGetAccessor="getter",s.memberSetAccessor="setter",s.memberVariable="property",s.constructorImplementation="constructor",s.callSignature="call",s.indexSignature="index",s.constructSignature="construct",s.parameter="parameter",s.typeParameter="type parameter",s.primitiveType="primitive type",s.label="label",s.alias="alias",s.const="const",s.let="let",s.warning="warning",s),T=Object.create(null);T[I.module]=p.languages.SymbolKind.Module,T[I.class]=p.languages.SymbolKind.Class,T[I.enum]=p.languages.SymbolKind.Enum,T[I.interface]=p.languages.SymbolKind.Interface,T[I.memberFunction]=p.languages.SymbolKind.Method,T[I.memberVariable]=p.languages.SymbolKind.Property,T[I.memberGetAccessor]=p.languages.SymbolKind.Property,T[I.memberSetAccessor]=p.languages.SymbolKind.Property,T[I.variable]=p.languages.SymbolKind.Variable,T[I.const]=p.languages.SymbolKind.Variable,T[I.localVariable]=p.languages.SymbolKind.Variable,T[I.variable]=p.languages.SymbolKind.Variable,T[I.function]=p.languages.SymbolKind.Function,T[I.localFunction]=p.languages.SymbolKind.Function;var P,L,O=class extends y{static _convertOptions(e){return{ConvertTabsToSpaces:e.insertSpaces,TabSize:e.tabSize,IndentSize:e.tabSize,IndentStyle:2,NewLineCharacter:"\n",InsertSpaceAfterCommaDelimiter:!0,InsertSpaceAfterSemicolonInForStatements:!0,InsertSpaceBeforeAndAfterBinaryOperators:!0,InsertSpaceAfterKeywordsInControlFlowStatements:!0,InsertSpaceAfterFunctionKeywordForAnonymousFunctions:!0,InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis:!1,InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets:!1,InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces:!1,PlaceOpenBraceOnNewLineForControlBlocks:!1,PlaceOpenBraceOnNewLineForFunctions:!1}}_convertTextChanges(e,t){return{text:t.newText,range:this._textSpanToRange(e,t.span)}}},N=class extends O{constructor(){super(...arguments),this.canFormatMultipleRanges=!1}async provideDocumentRangeFormattingEdits(e,t,i,s){const r=e.uri,n=e.getOffsetAt({lineNumber:t.startLineNumber,column:t.startColumn}),a=e.getOffsetAt({lineNumber:t.endLineNumber,column:t.endColumn}),o=await this._worker(r);if(e.isDisposed())return;const l=await o.getFormattingEditsForRange(r.toString(),n,a,O._convertOptions(i));return l&&!e.isDisposed()?l.map((t=>this._convertTextChanges(e,t))):void 0}},M=class extends O{get autoFormatTriggerCharacters(){return[";","}","\n"]}async provideOnTypeFormattingEdits(e,t,i,s,r){const n=e.uri,a=e.getOffsetAt(t),o=await this._worker(n);if(e.isDisposed())return;const l=await o.getFormattingEditsAfterKeystroke(n.toString(),a,i,O._convertOptions(s));return l&&!e.isDisposed()?l.map((t=>this._convertTextChanges(e,t))):void 0}},K=class extends O{async provideCodeActions(e,t,i,s){const r=e.uri,n=e.getOffsetAt({lineNumber:t.startLineNumber,column:t.startColumn}),a=e.getOffsetAt({lineNumber:t.endLineNumber,column:t.endColumn}),o=O._convertOptions(e.getOptions()),l=i.markers.filter((e=>e.code)).map((e=>e.code)).map(Number),c=await this._worker(r);if(e.isDisposed())return;const d=await c.getCodeFixesAtPosition(r.toString(),n,a,l,o);if(!d||e.isDisposed())return{actions:[],dispose:()=>{}};return{actions:d.filter((e=>0===e.changes.filter((e=>e.isNewFile)).length)).map((t=>this._tsCodeFixActionToMonacoCodeAction(e,i,t))),dispose:()=>{}}}_tsCodeFixActionToMonacoCodeAction(e,t,i){const s=[];for(const r of i.changes)for(const t of r.textChanges)s.push({resource:e.uri,versionId:void 0,textEdit:{range:this._textSpanToRange(e,t.span),text:t.newText}});return{title:i.description,edit:{edits:s},diagnostics:t.markers,kind:"quickfix"}}},R=class extends y{constructor(e,t){super(t),this._libFiles=e}async provideRenameEdits(e,t,i,s){const r=e.uri,n=r.toString(),a=e.getOffsetAt(t),o=await this._worker(r);if(e.isDisposed())return;const l=await o.getRenameInfo(n,a,{allowRenameOfImportPath:!1});if(!1===l.canRename)return{edits:[],rejectReason:l.localizedErrorMessage};if(void 0!==l.fileToRename)throw new Error("Renaming files is not supported.");const c=await o.findRenameLocations(n,a,!1,!1,!1);if(!c||e.isDisposed())return;const d=[];for(const u of c){const e=this._libFiles.getOrCreateModel(u.fileName);if(!e)throw new Error("Unknown file ".concat(u.fileName,"."));d.push({resource:e.uri,versionId:void 0,textEdit:{range:this._textSpanToRange(e,u.textSpan),text:i}})}return{edits:d}}},E=class extends y{async provideInlayHints(e,t,i){const s=e.uri,r=s.toString(),n=e.getOffsetAt({lineNumber:t.startLineNumber,column:t.startColumn}),a=e.getOffsetAt({lineNumber:t.endLineNumber,column:t.endColumn}),o=await this._worker(s);if(e.isDisposed())return null;return{hints:(await o.provideInlayHints(r,n,a)).map((t=>({...t,label:t.text,position:e.getPositionAt(t.position),kind:this._convertHintKind(t.kind)}))),dispose:()=>{}}}_convertHintKind(e){return"Parameter"===e?p.languages.InlayHintKind.Parameter:p.languages.InlayHintKind.Type}};function H(e){L=B(e,"typescript")}function V(e){P=B(e,"javascript")}function W(){return new Promise(((e,t)=>{if(!P)return t("JavaScript not registered!");e(P)}))}function j(){return new Promise(((e,t)=>{if(!L)return t("TypeScript not registered!");e(L)}))}function B(e,t){const i=[],s=[],r=new m(t,e);i.push(r);const n=function(){return r.getLanguageServiceWorker(...arguments)},a=new _(n);return function(){const{modeConfiguration:i}=e;U(s),i.completionItems&&s.push(p.languages.registerCompletionItemProvider(t,new S(n))),i.signatureHelp&&s.push(p.languages.registerSignatureHelpProvider(t,new v(n))),i.hovers&&s.push(p.languages.registerHoverProvider(t,new x(n))),i.documentHighlights&&s.push(p.languages.registerDocumentHighlightProvider(t,new C(n))),i.definitions&&s.push(p.languages.registerDefinitionProvider(t,new D(a,n))),i.references&&s.push(p.languages.registerReferenceProvider(t,new A(a,n))),i.documentSymbols&&s.push(p.languages.registerDocumentSymbolProvider(t,new F(n))),i.rename&&s.push(p.languages.registerRenameProvider(t,new R(a,n))),i.documentRangeFormattingEdits&&s.push(p.languages.registerDocumentRangeFormattingEditProvider(t,new N(n))),i.onTypeFormattingEdits&&s.push(p.languages.registerOnTypeFormattingEditProvider(t,new M(n))),i.codeActions&&s.push(p.languages.registerCodeActionProvider(t,new K(n))),i.inlayHints&&s.push(p.languages.registerInlayHintsProvider(t,new E(n))),i.diagnostics&&s.push(new w(a,e,t,n))}(),i.push(function(e){return{dispose:()=>U(e)}}(s)),n}function U(e){for(;e.length;)e.pop().dispose()}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4812.73af8448.chunk.js b/ydb/core/viewer/monitoring/static/js/4812.73af8448.chunk.js new file mode 100644 index 000000000000..0a058587eae7 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4812.73af8448.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 4812.73af8448.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4812],{14812:(e,t,o)=>{o.r(t),o.d(t,{conf:()=>r,language:()=>n});var r={wordPattern:/(unary_[@~!#%^&*()\-=+\\|:<>\/?]+)|([a-zA-Z_$][\w$]*?_=)|(`[^`]+`)|([a-zA-Z_$][\w$]*)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))"),end:new RegExp("^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))")}}},n={tokenPostfix:".scala",keywords:["asInstanceOf","catch","class","classOf","def","do","else","extends","finally","for","foreach","forSome","if","import","isInstanceOf","macro","match","new","object","package","return","throw","trait","try","type","until","val","var","while","with","yield","given","enum","then"],softKeywords:["as","export","extension","end","derives","on"],constants:["true","false","null","this","super"],modifiers:["abstract","final","implicit","lazy","override","private","protected","sealed"],softModifiers:["inline","opaque","open","transparent","using"],name:/(?:[a-z_$][\w$]*|`[^`]+`)/,type:/(?:[A-Z][\w$]*)/,symbols:/[=><!~?:&|+\-*\/^\\%@#]+/,digits:/\d+(_+\d+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,escapes:/\\(?:[btnfr\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,fstring_conv:/[bBhHsScCdoxXeEfgGaAt]|[Tn](?:[HIklMSLNpzZsQ]|[BbhAaCYyjmde]|[RTrDFC])/,tokenizer:{root:[[/\braw"""/,{token:"string.quote",bracket:"@open",next:"@rawstringt"}],[/\braw"/,{token:"string.quote",bracket:"@open",next:"@rawstring"}],[/\bs"""/,{token:"string.quote",bracket:"@open",next:"@sstringt"}],[/\bs"/,{token:"string.quote",bracket:"@open",next:"@sstring"}],[/\bf""""/,{token:"string.quote",bracket:"@open",next:"@fstringt"}],[/\bf"/,{token:"string.quote",bracket:"@open",next:"@fstring"}],[/"""/,{token:"string.quote",bracket:"@open",next:"@stringt"}],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,"number.float","@allowMethod"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,"number.float","@allowMethod"],[/0[xX](@hexdigits)[Ll]?/,"number.hex","@allowMethod"],[/(@digits)[fFdD]/,"number.float","@allowMethod"],[/(@digits)[lL]?/,"number","@allowMethod"],[/\b_\*/,"key"],[/\b(_)\b/,"keyword","@allowMethod"],[/\bimport\b/,"keyword","@import"],[/\b(case)([ \t]+)(class)\b/,["keyword.modifier","white","keyword"]],[/\bcase\b/,"keyword","@case"],[/\bva[lr]\b/,"keyword","@vardef"],[/\b(def)([ \t]+)((?:unary_)?@symbols|@name(?:_=)|@name)/,["keyword","white","identifier"]],[/@name(?=[ \t]*:(?!:))/,"variable"],[/(\.)(@name|@symbols)/,["operator",{token:"@rematch",next:"@allowMethod"}]],[/([{(])(\s*)(@name(?=\s*=>))/,["@brackets","white","variable"]],[/@name/,{cases:{"@keywords":"keyword","@softKeywords":"keyword","@modifiers":"keyword.modifier","@softModifiers":"keyword.modifier","@constants":{token:"constant",next:"@allowMethod"},"@default":{token:"identifier",next:"@allowMethod"}}}],[/@type/,"type","@allowMethod"],{include:"@whitespace"},[/@[a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*/,"annotation"],[/[{(]/,"@brackets"],[/[})]/,"@brackets","@allowMethod"],[/\[/,"operator.square"],[/](?!\s*(?:va[rl]|def|type)\b)/,"operator.square","@allowMethod"],[/]/,"operator.square"],[/([=-]>|<-|>:|<:|:>|<%)(?=[\s\w()[\]{},\."'`])/,"keyword"],[/@symbols/,"operator"],[/[;,\.]/,"delimiter"],[/'[a-zA-Z$][\w$]*(?!')/,"attribute.name"],[/'[^\\']'/,"string","@allowMethod"],[/(')(@escapes)(')/,["string","string.escape",{token:"string",next:"@allowMethod"}]],[/'/,"string.invalid"]],import:[[/;/,"delimiter","@pop"],[/^|$/,"","@pop"],[/[ \t]+/,"white"],[/[\n\r]+/,"white","@pop"],[/\/\*/,"comment","@comment"],[/@name|@type/,"type"],[/[(){}]/,"@brackets"],[/[[\]]/,"operator.square"],[/[\.,]/,"delimiter"]],allowMethod:[[/^|$/,"","@pop"],[/[ \t]+/,"white"],[/[\n\r]+/,"white","@pop"],[/\/\*/,"comment","@comment"],[/(?==>[\s\w([{])/,"keyword","@pop"],[/(@name|@symbols)(?=[ \t]*[[({"'`]|[ \t]+(?:[+-]?\.?\d|\w))/,{cases:{"@keywords":{token:"keyword",next:"@pop"},"->|<-|>:|<:|<%":{token:"keyword",next:"@pop"},"@default":{token:"@rematch",next:"@pop"}}}],["","","@pop"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],case:[[/\b_\*/,"key"],[/\b(_|true|false|null|this|super)\b/,"keyword","@allowMethod"],[/\bif\b|=>/,"keyword","@pop"],[/`[^`]+`/,"identifier","@allowMethod"],[/@name/,"variable","@allowMethod"],[/:::?|\||@(?![a-z_$])/,"keyword"],{include:"@root"}],vardef:[[/\b_\*/,"key"],[/\b(_|true|false|null|this|super)\b/,"keyword"],[/@name/,"variable"],[/:::?|\||@(?![a-z_$])/,"keyword"],[/=|:(?!:)/,"operator","@pop"],[/$/,"white","@pop"],{include:"@root"}],string:[[/[^\\"\n\r]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}]],stringt:[[/[^\\"\n\r]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/"/,"string"]],fstring:[[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/%%/,"string"],[/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","keyword.modifier","number","metatag"]],[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","number","metatag"]],[/(%)([\-#+ 0,(])(@fstring_conv)/,["metatag","keyword.modifier","metatag"]],[/(%)(@fstring_conv)/,["metatag","metatag"]],[/./,"string"]],fstringt:[[/@escapes/,"string.escape"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/%%/,"string"],[/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","keyword.modifier","number","metatag"]],[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","number","metatag"]],[/(%)([\-#+ 0,(])(@fstring_conv)/,["metatag","keyword.modifier","metatag"]],[/(%)(@fstring_conv)/,["metatag","metatag"]],[/./,"string"]],sstring:[[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/./,"string"]],sstringt:[[/@escapes/,"string.escape"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/./,"string"]],interp:[[/{/,"operator","@push"],[/}/,"operator","@pop"],{include:"@root"}],rawstring:[[/[^"]/,"string"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}]],rawstringt:[[/[^"]/,"string"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/"/,"string"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4812.73af8448.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/4812.73af8448.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4812.73af8448.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/4814.11309069.chunk.js b/ydb/core/viewer/monitoring/static/js/4814.11309069.chunk.js new file mode 100644 index 000000000000..6dd6055a4c83 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4814.11309069.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4814],{34814:function(a,e,l){a.exports=function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var l=e(a),_={name:"bm",weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),weekStart:1,weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"}};return l.default.locale(_,null,!0),_}(l(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4826.d2723706.chunk.js b/ydb/core/viewer/monitoring/static/js/4826.d2723706.chunk.js new file mode 100644 index 000000000000..a07d16dd8220 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4826.d2723706.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4826],{14826:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ta",weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4842.57182d38.chunk.js b/ydb/core/viewer/monitoring/static/js/4842.57182d38.chunk.js new file mode 100644 index 000000000000..6d4ad8a6df63 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4842.57182d38.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4842],{14842:(e,t,n)=>{n.r(t),n.d(t,{registerLanguages:()=>m});var i=n(88424),s=n(60749);var a=n(62729);const r="$row|$rows|action|all|and|any|as|asc|assume|begin|bernoulli|between|by|case|columns|commit|compact|create|cross|cube|declare|define|delete|desc|dict|discard|distinct|do|drop|else|empty_action|end|erase|evaluate|exclusion|exists|export|flatten|for|from|full|group|grouping|having|if|ignore|ilike|import|in|inner|insert|into|is|join|left|like|limit|list|match|not|null|nulls|offset|on|only|optional|or|order|over|partition|pragma|presort|process|reduce|regexp|repeatable|replace|respect|result|return|right|rlike|rollup|sample|schema|select|semi|set|sets|stream|subquery|table|tablesample|then|truncate|union|update|upsert|use|using|values|view|when|where|window|with|without|xor".split("|"),o="bool|date|datetime|decimal|double|float|int16|int32|int64|int8|interval|json|string|timestamp|tzdate|tzdatetime|tztimestamp|uint16|uint32|uint64|uint8|utf8|uuid|yson".split("|"),l="abs|aggregate_by|aggregate_list|aggregate_list_distinct|agg_list|agg_list_distinct|as_table|avg|avg_if|adaptivedistancehistogram|adaptivewardhistogram|adaptiveweighthistogram|addmember|addtimezone|aggregateflatten|aggregatetransforminput|aggregatetransformoutput|aggregationfactory|asatom|asdict|asdictstrict|asenum|aslist|asliststrict|asset|assetstrict|asstruct|astagged|astuple|asvariant|atomcode|bitcast|bit_and|bit_or|bit_xor|bool_and|bool_or|bool_xor|bottom|bottom_by|blockwardhistogram|blockweighthistogram|cast|coalesce|concat|concat_strict|correlation|count|count_if|covariance|covariance_population|covariance_sample|callableargument|callableargumenttype|callableresulttype|callabletype|callabletypecomponents|callabletypehandle|choosemembers|combinemembers|countdistinctestimate|currentauthenticateduser|currentoperationid|currentoperationsharedid|currenttzdate|currenttzdatetime|currenttztimestamp|currentutcdate|currentutcdatetime|currentutctimestamp|dense_rank|datatype|datatypecomponents|datatypehandle|dictaggregate|dictcontains|dictcreate|dicthasitems|dictitems|dictkeytype|dictkeys|dictlength|dictlookup|dictpayloadtype|dictpayloads|dicttype|dicttypecomponents|dicttypehandle|each|each_strict|emptydicttype|emptydicttypehandle|emptylisttype|emptylisttypehandle|endswith|ensure|ensureconvertibleto|ensuretype|enum|evaluateatom|evaluatecode|evaluateexpr|evaluatetype|expandstruct|filter|filter_strict|find|first_value|folder|filecontent|filepath|flattenmembers|forceremovemember|forceremovemembers|forcerenamemembers|forcespreadmembers|formatcode|formattype|frombytes|funccode|greatest|grouping|gathermembers|generictype|histogram|hll|hyperloglog|if|if_strict|instanceof|json_exists|json_query|json_value|jointablerow|just|lag|last_value|lead|least|len|length|like|likely|like_strict|lambdaargumentscount|lambdacode|linearhistogram|listaggregate|listall|listany|listavg|listcode|listcollect|listconcat|listcreate|listdistinct|listenumerate|listextend|listextendstrict|listextract|listfilter|listflatmap|listflatten|listfromrange|listhas|listhasitems|listhead|listindexof|listitemtype|listlast|listlength|listmap|listmax|listmin|listnotnull|listreplicate|listreverse|listskip|listskipwhile|listskipwhileinclusive|listsort|listsortasc|listsortdesc|listsum|listtake|listtakewhile|listtakewhileinclusive|listtype|listtypehandle|listunionall|listuniq|listzip|listzipall|loghistogram|logarithmichistogram|max|max_by|max_of|median|min|min_by|min_of|mode|multi_aggregate_by|nanvl|nvl|nothing|nulltype|nulltypehandle|optionalitemtype|optionaltype|optionaltypehandle|percentile|parsefile|parsetype|parsetypehandle|pickle|quotecode|range|range_strict|rank|regexp|regexp_strict|rfind|row_number|random|randomnumber|randomuuid|removemember|removemembers|removetimezone|renamemembers|replacemember|reprcode|resourcetype|resourcetypehandle|resourcetypetag|some|stddev|stddev_population|stddev_sample|substring|sum|sum_if|sessionstart|sessionwindow|setcreate|setdifference|setincludes|setintersection|setisdisjoint|setsymmetricdifference|setunion|spreadmembers|stablepickle|startswith|staticmap|streamitemtype|streamtype|streamtypehandle|structmembertype|structmembers|structtypecomponents|structtypehandle|subqueryextend|subqueryextendfor|subquerymerge|subquerymergefor|subqueryunionall|subqueryunionallfor|subqueryunionmerge|subqueryunionmergefor|top|topfreq|top_by|tablename|tablepath|tablerecordindex|tablerow|taggedtype|taggedtypecomponents|taggedtypehandle|tobytes|todict|tomultidict|toset|tosorteddict|tosortedmultidict|trymember|tupleelementtype|tupletype|tupletypecomponents|tupletypehandle|typehandle|typekind|typeof|udaf|unittype|unpickle|untag|unwrap|variance|variance_population|variance_sample|variant|varianttype|varianttypehandle|variantunderlyingtype|voidtype|voidtypehandle|way|worldcode".split("|"),c={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],wordPattern:/(-?\d*\.\d\w*)|([^`~!@#%^&*()\-=+[{\]}\\|;:'",./?\s]+)/g};function p(){i.Mj.register({id:a.Oo}),i.Mj.setMonarchTokensProvider(a.Oo,function(){let{ansi:e=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{defaultToken:"text",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"}],keywords:r,typeKeywords:o,constants:["true","false"],builtinFunctions:l,operators:["+","-","/","//","%","<@>","@>","<@","&","^","~","<",">","<=",">=","=>","==","!=","<>","="],symbols:/[=><!~?:&|+\-*/^%]+/,escapes:/\\(?:[abfnrtv\\"'`]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,variables:/[a-zA-Z_]\w*/,tokenizer:{root:[{include:"@whitespace"},{include:"@comments"},{include:"@numbers"},{include:"@tablePath"},{include:"@strings"},[/(@variables)::(@variables)/,"support.function"],[/[;,.]/,"delimiter"],[/[(){}[\]]/,"@brackets"],[/@?[a-zA-Z_$]\w*/,{cases:{"@keywords":"keyword","@typeKeywords":"keyword.type","@constants":"constant.yql","@builtinFunctions":"constant.other.color","[$@][a-zA-Z_]\\w*":"variable","@default":"identifier"}}],[/@symbols/,{cases:{"@operators":"operator.sql","@default":""}}]],whitespace:[[/\s+/,"white"]],comments:[[/--.*/,"comment"],[/\/\*/,{token:"comment.quote",next:e?"@commentAnsi":"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],commentAnsi:[[/\/\*/,{token:"comment.quote",next:"@comment"}],[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],numbers:[[/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?f?\b/,"number.float"],[/[+-]?(?:\d+|0b[01]+|0o[0-8]+|0x[\da-f]+)(?:u?[lst]?)?\b/,"number"]],strings:[[/'/,{token:"string",next:e?"@stringAnsiSingle":"@stringSingle"}],[/"/,{token:"string",next:e?"@stringAnsiDouble":"@stringDouble"}],[/[@]{2}/,{token:"string",next:"@multilineString"}]],stringSingle:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'[uyj]?/,{token:"string",next:"@pop"}]],stringAnsiSingle:[[/[^']+/,"string"],[/''/,"string"],[/'[uyj]?/,{token:"string",next:"@pop"}]],stringDouble:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"[uyj]?/,{token:"string",next:"@pop"}]],stringAnsiDouble:[[/[^"]+/,"string"],[/""/,"string"],[/"[uyj]?/,{token:"string",next:"@pop"}]],multilineString:[[/#py/,{token:"string.python",nextEmbedded:"python",next:"@embedded",goBack:3}],[/\/\/js/,{token:"string.js",nextEmbedded:"javascript",next:"@embedded",goBack:4}],[/[^@]+/,"string"],[/[@]{4}/,"string"],[/[@]{2}[uyj]?/,{token:"string",next:"@pop"}],[/./,"string"]],embedded:[[/([^@]|^)([@]{4})*[@]{2}([@]([^@]|$)|[^@]|$)/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],tablePath:[[/((`)?[\w/]+\2\s*\.\s*)?`/,{token:"string.tablepath",next:"@table"}]],table:[[/[^\\`]+/,"string.tablepath"],[/``/,"string.tablepath"],[/@escapes/,"string.escape.tablepath"],[/\\./,"string.escape.invalid.tablepath"],[/`/,{token:"string.tablepath",next:"@pop"}]]}}}()),i.Mj.setLanguageConfiguration(a.Oo,c)}function m(){i.Mj.register({id:s.K}),i.Mj.setMonarchTokensProvider(s.K,{defaultToken:"text",ignoreCase:!0,tokenPostfix:".yql",brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"}],keywordControl:"bind|block|declare|export|import|lambda|let|quote|return".split("|"),escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/(#)((?:\w|[\\+-=<>'"&#])+)/,["delimiter","constant"]],[/(?:\b(?:(defun|defmethod|defmacro))\b)(\s+)((?:\w|-|\?)*)/,["type.function","text","entity.name"]],[/(\*)(\S*)(\*)/,["delimiter","variable","delimiter"]],{include:"@strings"},[/'[^#\s)(]+/,"variable.parameter"],[/[(){}[\]]/,"@brackets"],[/(?:(?:<=?|>=?|==|!=|[-+*/%])|[a-zA-Z][a-zA-Z0-9!]*)/,{cases:{"@keywordControl":{token:"keyword.operator"},"@default":"identifier"}}]],whitespace:[[/\s+/,"white"]],comment:[[/#.*/,"comment"]],strings:[[/'?"(?=.)/,{token:"string",next:"@qqstring"}],[/'?[@]{2}/,{token:"string",next:"@multiline"}],[/'?x"(?:[0-9A-Fa-f]{2})*"/,"string"]],qqstring:[[/\\(?:[0-3][0-7][0-7]|x[0-9A-Fa-f]{2}|["tnrbfav\\])/,"string.escape"],[/[^"\\]+/,"string"],[/"|$/,{token:"string",next:"@pop"}]],multiline:[[/[^@]+/,"string"],[/[@]{2}/,{token:"string",next:"@pop"}],[/./,{token:"string"}]]}}),p()}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4848.64f47dc3.chunk.js b/ydb/core/viewer/monitoring/static/js/4848.64f47dc3.chunk.js new file mode 100644 index 000000000000..c5de9a911be6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4848.64f47dc3.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4848],{94848:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-ma",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekStart:6,weekdaysShort:"\u0627\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4949.6bf46e71.chunk.js b/ydb/core/viewer/monitoring/static/js/4949.6bf46e71.chunk.js new file mode 100644 index 000000000000..cfe623d0321d --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4949.6bf46e71.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4949],{84949:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),t={name:"id",weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(e){return e+"."}};return a.default.locale(t,null,!0),t}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4952.58b99bba.chunk.js b/ydb/core/viewer/monitoring/static/js/4952.58b99bba.chunk.js deleted file mode 100644 index 3048be2b98d1..000000000000 --- a/ydb/core/viewer/monitoring/static/js/4952.58b99bba.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4952],{64952:function(e,t,n){n.r(t),n.d(t,{setupMode:function(){return pn}});var r,i=n(3570),o=function(){function e(e){var t=this;this._defaults=e,this._worker=null,this._idleCheckInterval=setInterval((function(){return t._checkIfIdle()}),3e4),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange((function(){return t._stopWorker()}))}return e.prototype._stopWorker=function(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null},e.prototype.dispose=function(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()},e.prototype._checkIfIdle=function(){this._worker&&(Date.now()-this._lastUsedTime>12e4&&this._stopWorker())},e.prototype._getClient=function(){return this._lastUsedTime=Date.now(),this._client||(this._worker=i.j6.createWebWorker({moduleId:"vs/language/json/jsonWorker",label:this._defaults.languageId,createData:{languageSettings:this._defaults.diagnosticsOptions,languageId:this._defaults.languageId,enableSchemaRequest:this._defaults.diagnosticsOptions.enableSchemaRequest}}),this._client=this._worker.getProxy()),this._client},e.prototype.getLanguageServiceWorker=function(){for(var e,t=this,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return this._getClient().then((function(t){e=t})).then((function(e){return t._worker.withSyncedResources(n)})).then((function(t){return e}))},e}();function a(e,t){void 0===t&&(t=!1);var n=e.length,r=0,i="",o=0,a=16,f=0,l=0,h=0,p=0,d=0;function m(t,n){for(var i=0,o=0;i<t||!n;){var a=e.charCodeAt(r);if(a>=48&&a<=57)o=16*o+a-48;else if(a>=65&&a<=70)o=16*o+a-65+10;else{if(!(a>=97&&a<=102))break;o=16*o+a-97+10}r++,i++}return i<t&&(o=-1),o}function g(){if(i="",d=0,o=r,l=f,p=h,r>=n)return o=n,a=17;var t=e.charCodeAt(r);if(s(t)){do{r++,i+=String.fromCharCode(t),t=e.charCodeAt(r)}while(s(t));return a=15}if(u(t))return r++,i+=String.fromCharCode(t),13===t&&10===e.charCodeAt(r)&&(r++,i+="\n"),f++,h=r,a=14;switch(t){case 123:return r++,a=1;case 125:return r++,a=2;case 91:return r++,a=3;case 93:return r++,a=4;case 58:return r++,a=6;case 44:return r++,a=5;case 34:return r++,i=function(){for(var t="",i=r;;){if(r>=n){t+=e.substring(i,r),d=2;break}var o=e.charCodeAt(r);if(34===o){t+=e.substring(i,r),r++;break}if(92!==o){if(o>=0&&o<=31){if(u(o)){t+=e.substring(i,r),d=2;break}d=6}r++}else{if(t+=e.substring(i,r),++r>=n){d=2;break}switch(e.charCodeAt(r++)){case 34:t+='"';break;case 92:t+="\\";break;case 47:t+="/";break;case 98:t+="\b";break;case 102:t+="\f";break;case 110:t+="\n";break;case 114:t+="\r";break;case 116:t+="\t";break;case 117:var a=m(4,!0);a>=0?t+=String.fromCharCode(a):d=4;break;default:d=5}i=r}}return t}(),a=10;case 47:var g=r-1;if(47===e.charCodeAt(r+1)){for(r+=2;r<n&&!u(e.charCodeAt(r));)r++;return i=e.substring(g,r),a=12}if(42===e.charCodeAt(r+1)){r+=2;for(var y=n-1,b=!1;r<y;){var x=e.charCodeAt(r);if(42===x&&47===e.charCodeAt(r+1)){r+=2,b=!0;break}r++,u(x)&&(13===x&&10===e.charCodeAt(r)&&r++,f++,h=r)}return b||(r++,d=1),i=e.substring(g,r),a=13}return i+=String.fromCharCode(t),r++,a=16;case 45:if(i+=String.fromCharCode(t),++r===n||!c(e.charCodeAt(r)))return a=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return i+=function(){var t=r;if(48===e.charCodeAt(r))r++;else for(r++;r<e.length&&c(e.charCodeAt(r));)r++;if(r<e.length&&46===e.charCodeAt(r)){if(!(++r<e.length&&c(e.charCodeAt(r))))return d=3,e.substring(t,r);for(r++;r<e.length&&c(e.charCodeAt(r));)r++}var n=r;if(r<e.length&&(69===e.charCodeAt(r)||101===e.charCodeAt(r)))if((++r<e.length&&43===e.charCodeAt(r)||45===e.charCodeAt(r))&&r++,r<e.length&&c(e.charCodeAt(r))){for(r++;r<e.length&&c(e.charCodeAt(r));)r++;n=r}else d=3;return e.substring(t,n)}(),a=11;default:for(;r<n&&v(t);)r++,t=e.charCodeAt(r);if(o!==r){switch(i=e.substring(o,r)){case"true":return a=8;case"false":return a=9;case"null":return a=7}return a=16}return i+=String.fromCharCode(t),r++,a=16}}function v(e){if(s(e)||u(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}return{setPosition:function(e){r=e,i="",o=0,a=16,d=0},getPosition:function(){return r},scan:t?function(){var e;do{e=g()}while(e>=12&&e<=15);return e}:g,getToken:function(){return a},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return r-o},getTokenStartLine:function(){return l},getTokenStartCharacter:function(){return o-p},getTokenError:function(){return d}}}function s(e){return 32===e||9===e||11===e||12===e||160===e||5760===e||e>=8192&&e<=8203||8239===e||8287===e||12288===e||65279===e}function u(e){return 10===e||13===e||8232===e||8233===e}function c(e){return e>=48&&e<=57}function f(e,t,n){void 0===n&&(n=r.DEFAULT);var i=a(e,!1);function o(e){return e?function(){return e(i.getTokenOffset(),i.getTokenLength(),i.getTokenStartLine(),i.getTokenStartCharacter())}:function(){return!0}}function s(e){return e?function(t){return e(t,i.getTokenOffset(),i.getTokenLength(),i.getTokenStartLine(),i.getTokenStartCharacter())}:function(){return!0}}var u=o(t.onObjectBegin),c=s(t.onObjectProperty),f=o(t.onObjectEnd),l=o(t.onArrayBegin),h=o(t.onArrayEnd),p=s(t.onLiteralValue),d=s(t.onSeparator),m=o(t.onComment),g=s(t.onError),v=n&&n.disallowComments,y=n&&n.allowTrailingComma;function b(){for(;;){var e=i.scan();switch(i.getTokenError()){case 4:x(14);break;case 5:x(15);break;case 3:x(13);break;case 1:v||x(11);break;case 2:x(12);break;case 6:x(16)}switch(e){case 12:case 13:v?x(10):m();break;case 16:x(1);break;case 15:case 14:break;default:return e}}}function x(e,t,n){if(void 0===t&&(t=[]),void 0===n&&(n=[]),g(e),t.length+n.length>0)for(var r=i.getToken();17!==r;){if(-1!==t.indexOf(r)){b();break}if(-1!==n.indexOf(r))break;r=b()}}function A(e){var t=i.getTokenValue();return e?p(t):c(t),b(),!0}function C(){switch(i.getToken()){case 3:return function(){l(),b();for(var e=!1;4!==i.getToken()&&17!==i.getToken();){if(5===i.getToken()){if(e||x(4,[],[]),d(","),b(),4===i.getToken()&&y)break}else e&&x(6,[],[]);C()||x(4,[],[4,5]),e=!0}return h(),4!==i.getToken()?x(8,[4],[]):b(),!0}();case 1:return function(){u(),b();for(var e=!1;2!==i.getToken()&&17!==i.getToken();){if(5===i.getToken()){if(e||x(4,[],[]),d(","),b(),2===i.getToken()&&y)break}else e&&x(6,[],[]);(10!==i.getToken()?(x(3,[],[2,5]),0):(A(!1),6===i.getToken()?(d(":"),b(),C()||x(4,[],[2,5])):x(5,[],[2,5]),1))||x(4,[],[2,5]),e=!0}return f(),2!==i.getToken()?x(7,[2],[]):b(),!0}();case 10:return A(!0);default:return function(){switch(i.getToken()){case 11:var e=i.getTokenValue(),t=Number(e);isNaN(t)&&(x(2),t=0),p(t);break;case 7:p(null);break;case 8:p(!0);break;case 9:p(!1);break;default:return!1}return b(),!0}()}}return b(),17===i.getToken()?!!n.allowEmptyContent||(x(4,[],[]),!1):C()?(17!==i.getToken()&&x(9,[],[]),!0):(x(4,[],[]),!1)}!function(e){e.DEFAULT={allowTrailingComma:!1}}(r||(r={}));var l,h,p,d,m,g,v,y,b,x,A,C,S,k,w,I,j,E,T,O,_,M,P,V,N,F,R=a,L=function(e,t,n){void 0===t&&(t=[]),void 0===n&&(n=r.DEFAULT);var i=null,o=[],a=[];function s(e){Array.isArray(o)?o.push(e):null!==i&&(o[i]=e)}return f(e,{onObjectBegin:function(){var e={};s(e),a.push(o),o=e,i=null},onObjectProperty:function(e){i=e},onObjectEnd:function(){o=a.pop()},onArrayBegin:function(){var e=[];s(e),a.push(o),o=e,i=null},onArrayEnd:function(){o=a.pop()},onLiteralValue:s,onError:function(e,n,r){t.push({error:e,offset:n,length:r})}},n),o[0]},$=function e(t,n,r){if(void 0===r&&(r=!1),function(e,t,n){return void 0===n&&(n=!1),t>=e.offset&&t<e.offset+e.length||n&&t===e.offset+e.length}(t,n,r)){var i=t.children;if(Array.isArray(i))for(var o=0;o<i.length&&i[o].offset<=n;o++){var a=e(i[o],n,r);if(a)return a}return t}},D=function e(t){if(!t.parent||!t.parent.children)return[];var n=e(t.parent);if("property"===t.parent.type){var r=t.parent.children[0].value;n.push(r)}else if("array"===t.parent.type){var i=t.parent.children.indexOf(t);-1!==i&&n.push(i)}return n},U=function e(t){switch(t.type){case"array":return t.children.map(e);case"object":for(var n=Object.create(null),r=0,i=t.children;r<i.length;r++){var o=i[r],a=o.children[1];a&&(n[o.children[0].value]=e(a))}return n;case"null":case"string":case"number":case"boolean":return t.value;default:return}};function W(e,t){if(e===t)return!0;if(null===e||void 0===e||null===t||void 0===t)return!1;if(typeof e!==typeof t)return!1;if("object"!==typeof e)return!1;if(Array.isArray(e)!==Array.isArray(t))return!1;var n,r;if(Array.isArray(e)){if(e.length!==t.length)return!1;for(n=0;n<e.length;n++)if(!W(e[n],t[n]))return!1}else{var i=[];for(r in e)i.push(r);i.sort();var o=[];for(r in t)o.push(r);if(o.sort(),!W(i,o))return!1;for(n=0;n<i.length;n++)if(!W(e[i[n]],t[i[n]]))return!1}return!0}function q(e){return"number"===typeof e}function B(e){return"undefined"!==typeof e}function K(e){return"boolean"===typeof e}!function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647}(l||(l={})),function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647}(h||(h={})),function(e){e.create=function(e,t){return e===Number.MAX_VALUE&&(e=h.MAX_VALUE),t===Number.MAX_VALUE&&(t=h.MAX_VALUE),{line:e,character:t}},e.is=function(e){var t=e;return we.objectLiteral(t)&&we.uinteger(t.line)&&we.uinteger(t.character)}}(p||(p={})),function(e){e.create=function(e,t,n,r){if(we.uinteger(e)&&we.uinteger(t)&&we.uinteger(n)&&we.uinteger(r))return{start:p.create(e,t),end:p.create(n,r)};if(p.is(e)&&p.is(t))return{start:e,end:t};throw new Error("Range#create called with invalid arguments["+e+", "+t+", "+n+", "+r+"]")},e.is=function(e){var t=e;return we.objectLiteral(t)&&p.is(t.start)&&p.is(t.end)}}(d||(d={})),function(e){e.create=function(e,t){return{uri:e,range:t}},e.is=function(e){var t=e;return we.defined(t)&&d.is(t.range)&&(we.string(t.uri)||we.undefined(t.uri))}}(m||(m={})),function(e){e.create=function(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}},e.is=function(e){var t=e;return we.defined(t)&&d.is(t.targetRange)&&we.string(t.targetUri)&&(d.is(t.targetSelectionRange)||we.undefined(t.targetSelectionRange))&&(d.is(t.originSelectionRange)||we.undefined(t.originSelectionRange))}}(g||(g={})),function(e){e.create=function(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}},e.is=function(e){var t=e;return we.numberRange(t.red,0,1)&&we.numberRange(t.green,0,1)&&we.numberRange(t.blue,0,1)&&we.numberRange(t.alpha,0,1)}}(v||(v={})),function(e){e.create=function(e,t){return{range:e,color:t}},e.is=function(e){var t=e;return d.is(t.range)&&v.is(t.color)}}(y||(y={})),function(e){e.create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},e.is=function(e){var t=e;return we.string(t.label)&&(we.undefined(t.textEdit)||E.is(t))&&(we.undefined(t.additionalTextEdits)||we.typedArray(t.additionalTextEdits,E.is))}}(b||(b={})),function(e){e.Comment="comment",e.Imports="imports",e.Region="region"}(x||(x={})),function(e){e.create=function(e,t,n,r,i){var o={startLine:e,endLine:t};return we.defined(n)&&(o.startCharacter=n),we.defined(r)&&(o.endCharacter=r),we.defined(i)&&(o.kind=i),o},e.is=function(e){var t=e;return we.uinteger(t.startLine)&&we.uinteger(t.startLine)&&(we.undefined(t.startCharacter)||we.uinteger(t.startCharacter))&&(we.undefined(t.endCharacter)||we.uinteger(t.endCharacter))&&(we.undefined(t.kind)||we.string(t.kind))}}(A||(A={})),function(e){e.create=function(e,t){return{location:e,message:t}},e.is=function(e){var t=e;return we.defined(t)&&m.is(t.location)&&we.string(t.message)}}(C||(C={})),function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4}(S||(S={})),function(e){e.Unnecessary=1,e.Deprecated=2}(k||(k={})),function(e){e.is=function(e){var t=e;return void 0!==t&&null!==t&&we.string(t.href)}}(w||(w={})),function(e){e.create=function(e,t,n,r,i,o){var a={range:e,message:t};return we.defined(n)&&(a.severity=n),we.defined(r)&&(a.code=r),we.defined(i)&&(a.source=i),we.defined(o)&&(a.relatedInformation=o),a},e.is=function(e){var t,n=e;return we.defined(n)&&d.is(n.range)&&we.string(n.message)&&(we.number(n.severity)||we.undefined(n.severity))&&(we.integer(n.code)||we.string(n.code)||we.undefined(n.code))&&(we.undefined(n.codeDescription)||we.string(null===(t=n.codeDescription)||void 0===t?void 0:t.href))&&(we.string(n.source)||we.undefined(n.source))&&(we.undefined(n.relatedInformation)||we.typedArray(n.relatedInformation,C.is))}}(I||(I={})),function(e){e.create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={title:e,command:t};return we.defined(n)&&n.length>0&&(i.arguments=n),i},e.is=function(e){var t=e;return we.defined(t)&&we.string(t.title)&&we.string(t.command)}}(j||(j={})),function(e){e.replace=function(e,t){return{range:e,newText:t}},e.insert=function(e,t){return{range:{start:e,end:e},newText:t}},e.del=function(e){return{range:e,newText:""}},e.is=function(e){var t=e;return we.objectLiteral(t)&&we.string(t.newText)&&d.is(t.range)}}(E||(E={})),function(e){e.create=function(e,t,n){var r={label:e};return void 0!==t&&(r.needsConfirmation=t),void 0!==n&&(r.description=n),r},e.is=function(e){var t=e;return void 0!==t&&we.objectLiteral(t)&&we.string(t.label)&&(we.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(we.string(t.description)||void 0===t.description)}}(T||(T={})),function(e){e.is=function(e){return"string"===typeof e}}(O||(O={})),function(e){e.replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},e.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},e.del=function(e,t){return{range:e,newText:"",annotationId:t}},e.is=function(e){var t=e;return E.is(t)&&(T.is(t.annotationId)||O.is(t.annotationId))}}(_||(_={})),function(e){e.create=function(e,t){return{textDocument:e,edits:t}},e.is=function(e){var t=e;return we.defined(t)&&H.is(t.textDocument)&&Array.isArray(t.edits)}}(M||(M={})),function(e){e.create=function(e,t,n){var r={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){var t=e;return t&&"create"===t.kind&&we.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||we.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||we.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||O.is(t.annotationId))}}(P||(P={})),function(e){e.create=function(e,t,n,r){var i={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(i.options=n),void 0!==r&&(i.annotationId=r),i},e.is=function(e){var t=e;return t&&"rename"===t.kind&&we.string(t.oldUri)&&we.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||we.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||we.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||O.is(t.annotationId))}}(V||(V={})),function(e){e.create=function(e,t,n){var r={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){var t=e;return t&&"delete"===t.kind&&we.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||we.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||we.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||O.is(t.annotationId))}}(N||(N={})),function(e){e.is=function(e){var t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every((function(e){return we.string(e.kind)?P.is(e)||V.is(e)||N.is(e):M.is(e)})))}}(F||(F={}));var J,z,H,G,X,Z,Q,Y,ee,te,ne,re,ie,oe,ae,se,ue,ce,fe,le,he,pe,de,me,ge,ve,ye,be,xe,Ae,Ce=function(){function e(e,t){this.edits=e,this.changeAnnotations=t}return e.prototype.insert=function(e,t,n){var r,i;if(void 0===n?r=E.insert(e,t):O.is(n)?(i=n,r=_.insert(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=_.insert(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.replace=function(e,t,n){var r,i;if(void 0===n?r=E.replace(e,t):O.is(n)?(i=n,r=_.replace(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=_.replace(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.delete=function(e,t){var n,r;if(void 0===t?n=E.del(e):O.is(t)?(r=t,n=_.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),r=this.changeAnnotations.manage(t),n=_.del(e,r)),this.edits.push(n),void 0!==r)return r},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e.prototype.assertChangeAnnotations=function(e){if(void 0===e)throw new Error("Text edit change is not configured to manage change annotations.")},e}(),Se=function(){function e(e){this._annotations=void 0===e?Object.create(null):e,this._counter=0,this._size=0}return e.prototype.all=function(){return this._annotations},Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),e.prototype.manage=function(e,t){var n;if(O.is(e)?n=e:(n=this.nextId(),t=e),void 0!==this._annotations[n])throw new Error("Id "+n+" is already in use.");if(void 0===t)throw new Error("No annotation provided for id "+n);return this._annotations[n]=t,this._size++,n},e.prototype.nextId=function(){return this._counter++,this._counter.toString()},e}();!function(){function e(e){var t=this;this._textEditChanges=Object.create(null),void 0!==e?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new Se(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach((function(e){if(M.is(e)){var n=new Ce(e.edits,t._changeAnnotations);t._textEditChanges[e.textDocument.uri]=n}}))):e.changes&&Object.keys(e.changes).forEach((function(n){var r=new Ce(e.changes[n]);t._textEditChanges[n]=r}))):this._workspaceEdit={}}Object.defineProperty(e.prototype,"edit",{get:function(){return this.initDocumentChanges(),void 0!==this._changeAnnotations&&(0===this._changeAnnotations.size?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),e.prototype.getTextEditChange=function(e){if(H.is(e)){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var t={uri:e.uri,version:e.version};if(!(r=this._textEditChanges[t.uri])){var n={textDocument:t,edits:i=[]};this._workspaceEdit.documentChanges.push(n),r=new Ce(i,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}if(this.initChanges(),void 0===this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");var r;if(!(r=this._textEditChanges[e])){var i=[];this._workspaceEdit.changes[e]=i,r=new Ce(i),this._textEditChanges[e]=r}return r},e.prototype.initDocumentChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._changeAnnotations=new Se,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},e.prototype.initChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._workspaceEdit.changes=Object.create(null))},e.prototype.createFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var r,i,o;if(T.is(t)||O.is(t)?r=t:n=t,void 0===r?i=P.create(e,n):(o=O.is(r)?r:this._changeAnnotations.manage(r),i=P.create(e,n,o)),this._workspaceEdit.documentChanges.push(i),void 0!==o)return o},e.prototype.renameFile=function(e,t,n,r){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var i,o,a;if(T.is(n)||O.is(n)?i=n:r=n,void 0===i?o=V.create(e,t,r):(a=O.is(i)?i:this._changeAnnotations.manage(i),o=V.create(e,t,r,a)),this._workspaceEdit.documentChanges.push(o),void 0!==a)return a},e.prototype.deleteFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var r,i,o;if(T.is(t)||O.is(t)?r=t:n=t,void 0===r?i=N.create(e,n):(o=O.is(r)?r:this._changeAnnotations.manage(r),i=N.create(e,n,o)),this._workspaceEdit.documentChanges.push(i),void 0!==o)return o}}();!function(e){e.create=function(e){return{uri:e}},e.is=function(e){var t=e;return we.defined(t)&&we.string(t.uri)}}(J||(J={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){var t=e;return we.defined(t)&&we.string(t.uri)&&we.integer(t.version)}}(z||(z={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){var t=e;return we.defined(t)&&we.string(t.uri)&&(null===t.version||we.integer(t.version))}}(H||(H={})),function(e){e.create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},e.is=function(e){var t=e;return we.defined(t)&&we.string(t.uri)&&we.string(t.languageId)&&we.integer(t.version)&&we.string(t.text)}}(G||(G={})),function(e){e.PlainText="plaintext",e.Markdown="markdown"}(X||(X={})),function(e){e.is=function(t){var n=t;return n===e.PlainText||n===e.Markdown}}(X||(X={})),function(e){e.is=function(e){var t=e;return we.objectLiteral(e)&&X.is(t.kind)&&we.string(t.value)}}(Z||(Z={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(Q||(Q={})),function(e){e.PlainText=1,e.Snippet=2}(Y||(Y={})),function(e){e.Deprecated=1}(ee||(ee={})),function(e){e.create=function(e,t,n){return{newText:e,insert:t,replace:n}},e.is=function(e){var t=e;return t&&we.string(t.newText)&&d.is(t.insert)&&d.is(t.replace)}}(te||(te={})),function(e){e.asIs=1,e.adjustIndentation=2}(ne||(ne={})),function(e){e.create=function(e){return{label:e}}}(re||(re={})),function(e){e.create=function(e,t){return{items:e||[],isIncomplete:!!t}}}(ie||(ie={})),function(e){e.fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},e.is=function(e){var t=e;return we.string(t)||we.objectLiteral(t)&&we.string(t.language)&&we.string(t.value)}}(oe||(oe={})),function(e){e.is=function(e){var t=e;return!!t&&we.objectLiteral(t)&&(Z.is(t.contents)||oe.is(t.contents)||we.typedArray(t.contents,oe.is))&&(void 0===e.range||d.is(e.range))}}(ae||(ae={})),function(e){e.create=function(e,t){return t?{label:e,documentation:t}:{label:e}}}(se||(se={})),function(e){e.create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={label:e};return we.defined(t)&&(i.documentation=t),we.defined(n)?i.parameters=n:i.parameters=[],i}}(ue||(ue={})),function(e){e.Text=1,e.Read=2,e.Write=3}(ce||(ce={})),function(e){e.create=function(e,t){var n={range:e};return we.number(t)&&(n.kind=t),n}}(fe||(fe={})),function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26}(le||(le={})),function(e){e.Deprecated=1}(he||(he={})),function(e){e.create=function(e,t,n,r,i){var o={name:e,kind:t,location:{uri:r,range:n}};return i&&(o.containerName=i),o}}(pe||(pe={})),function(e){e.create=function(e,t,n,r,i,o){var a={name:e,detail:t,kind:n,range:r,selectionRange:i};return void 0!==o&&(a.children=o),a},e.is=function(e){var t=e;return t&&we.string(t.name)&&we.number(t.kind)&&d.is(t.range)&&d.is(t.selectionRange)&&(void 0===t.detail||we.string(t.detail))&&(void 0===t.deprecated||we.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))}}(de||(de={})),function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"}(me||(me={})),function(e){e.create=function(e,t){var n={diagnostics:e};return void 0!==t&&null!==t&&(n.only=t),n},e.is=function(e){var t=e;return we.defined(t)&&we.typedArray(t.diagnostics,I.is)&&(void 0===t.only||we.typedArray(t.only,we.string))}}(ge||(ge={})),function(e){e.create=function(e,t,n){var r={title:e},i=!0;return"string"===typeof t?(i=!1,r.kind=t):j.is(t)?r.command=t:r.edit=t,i&&void 0!==n&&(r.kind=n),r},e.is=function(e){var t=e;return t&&we.string(t.title)&&(void 0===t.diagnostics||we.typedArray(t.diagnostics,I.is))&&(void 0===t.kind||we.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||j.is(t.command))&&(void 0===t.isPreferred||we.boolean(t.isPreferred))&&(void 0===t.edit||F.is(t.edit))}}(ve||(ve={})),function(e){e.create=function(e,t){var n={range:e};return we.defined(t)&&(n.data=t),n},e.is=function(e){var t=e;return we.defined(t)&&d.is(t.range)&&(we.undefined(t.command)||j.is(t.command))}}(ye||(ye={})),function(e){e.create=function(e,t){return{tabSize:e,insertSpaces:t}},e.is=function(e){var t=e;return we.defined(t)&&we.uinteger(t.tabSize)&&we.boolean(t.insertSpaces)}}(be||(be={})),function(e){e.create=function(e,t,n){return{range:e,target:t,data:n}},e.is=function(e){var t=e;return we.defined(t)&&d.is(t.range)&&(we.undefined(t.target)||we.string(t.target))}}(xe||(xe={})),function(e){e.create=function(e,t){return{range:e,parent:t}},e.is=function(t){var n=t;return void 0!==n&&d.is(n.range)&&(void 0===n.parent||e.is(n.parent))}}(Ae||(Ae={}));var ke;!function(e){function t(e,n){if(e.length<=1)return e;var r=e.length/2|0,i=e.slice(0,r),o=e.slice(r);t(i,n),t(o,n);for(var a=0,s=0,u=0;a<i.length&&s<o.length;){var c=n(i[a],o[s]);e[u++]=c<=0?i[a++]:o[s++]}for(;a<i.length;)e[u++]=i[a++];for(;s<o.length;)e[u++]=o[s++];return e}e.create=function(e,t,n,r){return new Ie(e,t,n,r)},e.is=function(e){var t=e;return!!(we.defined(t)&&we.string(t.uri)&&(we.undefined(t.languageId)||we.string(t.languageId))&&we.uinteger(t.lineCount)&&we.func(t.getText)&&we.func(t.positionAt)&&we.func(t.offsetAt))},e.applyEdits=function(e,n){for(var r=e.getText(),i=t(n,(function(e,t){var n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n})),o=r.length,a=i.length-1;a>=0;a--){var s=i[a],u=e.offsetAt(s.range.start),c=e.offsetAt(s.range.end);if(!(c<=o))throw new Error("Overlapping edit");r=r.substring(0,u)+s.newText+r.substring(c,r.length),o=u}return r}}(ke||(ke={}));var we,Ie=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!1,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0},e.prototype.getLineOffsets=function(){if(void 0===this._lineOffsets){for(var e=[],t=this._content,n=!0,r=0;r<t.length;r++){n&&(e.push(r),n=!1);var i=t.charAt(r);n="\r"===i||"\n"===i,"\r"===i&&r+1<t.length&&"\n"===t.charAt(r+1)&&r++}n&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return p.create(0,e);for(;n<r;){var i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}var o=n-1;return p.create(o,e-t[o])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),e}();!function(e){var t=Object.prototype.toString;e.defined=function(e){return"undefined"!==typeof e},e.undefined=function(e){return"undefined"===typeof e},e.boolean=function(e){return!0===e||!1===e},e.string=function(e){return"[object String]"===t.call(e)},e.number=function(e){return"[object Number]"===t.call(e)},e.numberRange=function(e,n,r){return"[object Number]"===t.call(e)&&n<=e&&e<=r},e.integer=function(e){return"[object Number]"===t.call(e)&&-2147483648<=e&&e<=2147483647},e.uinteger=function(e){return"[object Number]"===t.call(e)&&0<=e&&e<=2147483647},e.func=function(e){return"[object Function]"===t.call(e)},e.objectLiteral=function(e){return null!==e&&"object"===typeof e},e.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)}}(we||(we={}));var je,Ee,Te,Oe=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!0,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(t,n){for(var r=0,i=t;r<i.length;r++){var o=i[r];if(e.isIncremental(o)){var a=Pe(o.range),s=this.offsetAt(a.start),u=this.offsetAt(a.end);this._content=this._content.substring(0,s)+o.text+this._content.substring(u,this._content.length);var c=Math.max(a.start.line,0),f=Math.max(a.end.line,0),l=this._lineOffsets,h=Me(o.text,!1,s);if(f-c===h.length)for(var p=0,d=h.length;p<d;p++)l[p+c+1]=h[p];else h.length<1e4?l.splice.apply(l,[c+1,f-c].concat(h)):this._lineOffsets=l=l.slice(0,c+1).concat(h,l.slice(f+1));var m=o.text.length-(u-s);if(0!==m)for(p=c+1+h.length,d=l.length;p<d;p++)l[p]=l[p]+m}else{if(!e.isFull(o))throw new Error("Unknown change event received");this._content=o.text,this._lineOffsets=void 0}}this._version=n},e.prototype.getLineOffsets=function(){return void 0===this._lineOffsets&&(this._lineOffsets=Me(this._content,!0)),this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return{line:0,character:e};for(;n<r;){var i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}var o=n-1;return{line:o,character:e-t[o]}},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!0,configurable:!0}),e.isIncremental=function(e){var t=e;return void 0!==t&&null!==t&&"string"===typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"===typeof t.rangeLength)},e.isFull=function(e){var t=e;return void 0!==t&&null!==t&&"string"===typeof t.text&&void 0===t.range&&void 0===t.rangeLength},e}();function _e(e,t){if(e.length<=1)return e;var n=e.length/2|0,r=e.slice(0,n),i=e.slice(n);_e(r,t),_e(i,t);for(var o=0,a=0,s=0;o<r.length&&a<i.length;){var u=t(r[o],i[a]);e[s++]=u<=0?r[o++]:i[a++]}for(;o<r.length;)e[s++]=r[o++];for(;a<i.length;)e[s++]=i[a++];return e}function Me(e,t,n){void 0===n&&(n=0);for(var r=t?[n]:[],i=0;i<e.length;i++){var o=e.charCodeAt(i);13!==o&&10!==o||(13===o&&i+1<e.length&&10===e.charCodeAt(i+1)&&i++,r.push(n+i+1))}return r}function Pe(e){var t=e.start,n=e.end;return t.line>n.line||t.line===n.line&&t.character>n.character?{start:n,end:t}:e}function Ve(e){var t=Pe(e.range);return t!==e.range?{newText:e.newText,range:t}:e}function Ne(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];return function(e,t){return 0===t.length?e:e.replace(/\{(\d+)\}/g,(function(e,n){var r=n[0];return"undefined"!==typeof t[r]?t[r]:e}))}(t,n)}function Fe(e){return Ne}!function(e){e.create=function(e,t,n,r){return new Oe(e,t,n,r)},e.update=function(e,t,n){if(e instanceof Oe)return e.update(t,n),e;throw new Error("TextDocument.update: document must be created by TextDocument.create")},e.applyEdits=function(e,t){for(var n=e.getText(),r=_e(t.map(Ve),(function(e,t){var n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n})),i=0,o=[],a=0,s=r;a<s.length;a++){var u=s[a],c=e.offsetAt(u.range.start);if(c<i)throw new Error("Overlapping edit");c>i&&o.push(n.substring(i,c)),u.newText.length&&o.push(u.newText),i=e.offsetAt(u.range.end)}return o.push(n.substr(i)),o.join("")}}(je||(je={})),function(e){e[e.Undefined=0]="Undefined",e[e.EnumValueMismatch=1]="EnumValueMismatch",e[e.Deprecated=2]="Deprecated",e[e.UnexpectedEndOfComment=257]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=258]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=259]="UnexpectedEndOfNumber",e[e.InvalidUnicode=260]="InvalidUnicode",e[e.InvalidEscapeCharacter=261]="InvalidEscapeCharacter",e[e.InvalidCharacter=262]="InvalidCharacter",e[e.PropertyExpected=513]="PropertyExpected",e[e.CommaExpected=514]="CommaExpected",e[e.ColonExpected=515]="ColonExpected",e[e.ValueExpected=516]="ValueExpected",e[e.CommaOrCloseBacketExpected=517]="CommaOrCloseBacketExpected",e[e.CommaOrCloseBraceExpected=518]="CommaOrCloseBraceExpected",e[e.TrailingComma=519]="TrailingComma",e[e.DuplicateKey=520]="DuplicateKey",e[e.CommentNotPermitted=521]="CommentNotPermitted",e[e.SchemaResolveError=768]="SchemaResolveError"}(Ee||(Ee={})),function(e){e.LATEST={textDocument:{completion:{completionItem:{documentationFormat:[X.Markdown,X.PlainText],commitCharactersSupport:!0}}}}}(Te||(Te={}));var Re,Le=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),$e=Fe(),De={"color-hex":{errorMessage:$e("colorHexFormatWarning","Invalid color format. Use #RGB, #RGBA, #RRGGBB or #RRGGBBAA."),pattern:/^#([0-9A-Fa-f]{3,4}|([0-9A-Fa-f]{2}){3,4})$/},"date-time":{errorMessage:$e("dateTimeFormatWarning","String is not a RFC3339 date-time."),pattern:/^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i},date:{errorMessage:$e("dateFormatWarning","String is not a RFC3339 date."),pattern:/^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/i},time:{errorMessage:$e("timeFormatWarning","String is not a RFC3339 time."),pattern:/^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i},email:{errorMessage:$e("emailFormatWarning","String is not an e-mail address."),pattern:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/}},Ue=function(){function e(e,t,n){void 0===n&&(n=0),this.offset=t,this.length=n,this.parent=e}return Object.defineProperty(e.prototype,"children",{get:function(){return[]},enumerable:!1,configurable:!0}),e.prototype.toString=function(){return"type: "+this.type+" ("+this.offset+"/"+this.length+")"+(this.parent?" parent: {"+this.parent.toString()+"}":"")},e}();(function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="null",r.value=null,r}Le(t,e)})(Ue),function(e){function t(t,n,r){var i=e.call(this,t,r)||this;return i.type="boolean",i.value=n,i}Le(t,e)}(Ue),function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="array",r.items=[],r}Le(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.items},enumerable:!1,configurable:!0})}(Ue),function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="number",r.isInteger=!0,r.value=Number.NaN,r}Le(t,e)}(Ue),function(e){function t(t,n,r){var i=e.call(this,t,n,r)||this;return i.type="string",i.value="",i}Le(t,e)}(Ue),function(e){function t(t,n,r){var i=e.call(this,t,n)||this;return i.type="property",i.colonOffset=-1,i.keyNode=r,i}Le(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.valueNode?[this.keyNode,this.valueNode]:[this.keyNode]},enumerable:!1,configurable:!0})}(Ue),function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="object",r.properties=[],r}Le(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.properties},enumerable:!1,configurable:!0})}(Ue);function We(e){return K(e)?e?{}:{not:{}}:e}!function(e){e[e.Key=0]="Key",e[e.Enum=1]="Enum"}(Re||(Re={}));var qe=function(){function e(e,t){void 0===e&&(e=-1),this.focusOffset=e,this.exclude=t,this.schemas=[]}return e.prototype.add=function(e){this.schemas.push(e)},e.prototype.merge=function(e){Array.prototype.push.apply(this.schemas,e.schemas)},e.prototype.include=function(e){return(-1===this.focusOffset||He(e,this.focusOffset))&&e!==this.exclude},e.prototype.newSub=function(){return new e(-1,this.exclude)},e}(),Be=function(){function e(){}return Object.defineProperty(e.prototype,"schemas",{get:function(){return[]},enumerable:!1,configurable:!0}),e.prototype.add=function(e){},e.prototype.merge=function(e){},e.prototype.include=function(e){return!0},e.prototype.newSub=function(){return this},e.instance=new e,e}(),Ke=function(){function e(){this.problems=[],this.propertiesMatches=0,this.propertiesValueMatches=0,this.primaryValueMatches=0,this.enumValueMatch=!1,this.enumValues=void 0}return e.prototype.hasProblems=function(){return!!this.problems.length},e.prototype.mergeAll=function(e){for(var t=0,n=e;t<n.length;t++){var r=n[t];this.merge(r)}},e.prototype.merge=function(e){this.problems=this.problems.concat(e.problems)},e.prototype.mergeEnumValues=function(e){if(!this.enumValueMatch&&!e.enumValueMatch&&this.enumValues&&e.enumValues){this.enumValues=this.enumValues.concat(e.enumValues);for(var t=0,n=this.problems;t<n.length;t++){var r=n[t];r.code===Ee.EnumValueMismatch&&(r.message=$e("enumWarning","Value is not accepted. Valid values: {0}.",this.enumValues.map((function(e){return JSON.stringify(e)})).join(", ")))}}},e.prototype.mergePropertyMatch=function(e){this.merge(e),this.propertiesMatches++,(e.enumValueMatch||!e.hasProblems()&&e.propertiesMatches)&&this.propertiesValueMatches++,e.enumValueMatch&&e.enumValues&&1===e.enumValues.length&&this.primaryValueMatches++},e.prototype.compare=function(e){var t=this.hasProblems();return t!==e.hasProblems()?t?-1:1:this.enumValueMatch!==e.enumValueMatch?e.enumValueMatch?-1:1:this.primaryValueMatches!==e.primaryValueMatches?this.primaryValueMatches-e.primaryValueMatches:this.propertiesValueMatches!==e.propertiesValueMatches?this.propertiesValueMatches-e.propertiesValueMatches:this.propertiesMatches-e.propertiesMatches},e}();function Je(e){return U(e)}function ze(e){return D(e)}function He(e,t,n){return void 0===n&&(n=!1),t>=e.offset&&t<e.offset+e.length||n&&t===e.offset+e.length}!function(){function e(e,t,n){void 0===t&&(t=[]),void 0===n&&(n=[]),this.root=e,this.syntaxErrors=t,this.comments=n}e.prototype.getNodeFromOffset=function(e,t){if(void 0===t&&(t=!1),this.root)return $(this.root,e,t)},e.prototype.visit=function(e){if(this.root){!function t(n){var r=e(n),i=n.children;if(Array.isArray(i))for(var o=0;o<i.length&&r;o++)r=t(i[o]);return r}(this.root)}},e.prototype.validate=function(e,t,n){if(void 0===n&&(n=S.Warning),this.root&&t){var r=new Ke;return Ge(this.root,t,r,Be.instance),r.problems.map((function(t){var r,i=d.create(e.positionAt(t.location.offset),e.positionAt(t.location.offset+t.location.length));return I.create(i,t.message,null!==(r=t.severity)&&void 0!==r?r:n,t.code)}))}},e.prototype.getMatchingSchemas=function(e,t,n){void 0===t&&(t=-1);var r=new qe(t,n);return this.root&&e&&Ge(this.root,e,new Ke,r),r.schemas}}();function Ge(e,t,n,r){if(e&&r.include(e)){var i=e;switch(i.type){case"object":!function(e,t,n,r){for(var i=Object.create(null),o=[],a=0,s=e.properties;a<s.length;a++){i[$=(g=s[a]).keyNode.value]=g.valueNode,o.push($)}if(Array.isArray(t.required))for(var u=0,c=t.required;u<c.length;u++){if(!i[S=c[u]]){var f=e.parent&&"property"===e.parent.type&&e.parent.keyNode,l=f?{offset:f.offset,length:f.length}:{offset:e.offset,length:1};n.problems.push({location:l,message:$e("MissingRequiredPropWarning",'Missing property "{0}".',S)})}}var h=function(e){for(var t=o.indexOf(e);t>=0;)o.splice(t,1),t=o.indexOf(e)};if(t.properties)for(var p=0,d=Object.keys(t.properties);p<d.length;p++){h(S=d[p]);var m=t.properties[S];if(T=i[S])if(K(m))if(m)n.propertiesMatches++,n.propertiesValueMatches++;else{var g=T.parent;n.problems.push({location:{offset:g.keyNode.offset,length:g.keyNode.length},message:t.errorMessage||$e("DisallowedExtraPropWarning","Property {0} is not allowed.",S)})}else Ge(T,m,I=new Ke,r),n.mergePropertyMatch(I)}if(t.patternProperties)for(var v=0,y=Object.keys(t.patternProperties);v<y.length;v++)for(var b=y[v],x=new RegExp(b),A=0,C=o.slice(0);A<C.length;A++){var S=C[A];if(x.test(S))if(h(S),T=i[S])if(K(m=t.patternProperties[b]))if(m)n.propertiesMatches++,n.propertiesValueMatches++;else{g=T.parent;n.problems.push({location:{offset:g.keyNode.offset,length:g.keyNode.length},message:t.errorMessage||$e("DisallowedExtraPropWarning","Property {0} is not allowed.",S)})}else Ge(T,m,I=new Ke,r),n.mergePropertyMatch(I)}if("object"===typeof t.additionalProperties)for(var k=0,w=o;k<w.length;k++){if(T=i[S=w[k]]){var I=new Ke;Ge(T,t.additionalProperties,I,r),n.mergePropertyMatch(I)}}else if(!1===t.additionalProperties&&o.length>0)for(var j=0,E=o;j<E.length;j++){var T;if(T=i[S=E[j]]){g=T.parent;n.problems.push({location:{offset:g.keyNode.offset,length:g.keyNode.length},message:t.errorMessage||$e("DisallowedExtraPropWarning","Property {0} is not allowed.",S)})}}q(t.maxProperties)&&e.properties.length>t.maxProperties&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("MaxPropWarning","Object has more properties than limit of {0}.",t.maxProperties)});q(t.minProperties)&&e.properties.length<t.minProperties&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("MinPropWarning","Object has fewer properties than the required number of {0}",t.minProperties)});if(t.dependencies)for(var O=0,_=Object.keys(t.dependencies);O<_.length;O++){if(i[$=_[O]]){var M=t.dependencies[$];if(Array.isArray(M))for(var P=0,V=M;P<V.length;P++){var N=V[P];i[N]?n.propertiesValueMatches++:n.problems.push({location:{offset:e.offset,length:e.length},message:$e("RequiredDependentPropWarning","Object is missing property {0} required by property {1}.",N,$)})}else if(m=We(M))Ge(e,m,I=new Ke,r),n.mergePropertyMatch(I)}}var F=We(t.propertyNames);if(F)for(var R=0,L=e.properties;R<L.length;R++){var $;($=L[R].keyNode)&&Ge($,F,n,Be.instance)}}(i,t,n,r);break;case"array":!function(e,t,n,r){if(Array.isArray(t.items)){for(var i=t.items,o=0;o<i.length;o++){var a=We(i[o]),s=new Ke;(h=e.items[o])?(Ge(h,a,s,r),n.mergePropertyMatch(s)):e.items.length>=i.length&&n.propertiesValueMatches++}if(e.items.length>i.length)if("object"===typeof t.additionalItems)for(var u=i.length;u<e.items.length;u++){s=new Ke;Ge(e.items[u],t.additionalItems,s,r),n.mergePropertyMatch(s)}else!1===t.additionalItems&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("additionalItemsWarning","Array has too many items according to schema. Expected {0} or fewer.",i.length)})}else{var c=We(t.items);if(c)for(var f=0,l=e.items;f<l.length;f++){var h;Ge(h=l[f],c,s=new Ke,r),n.mergePropertyMatch(s)}}var p=We(t.contains);if(p){var d=e.items.some((function(e){var t=new Ke;return Ge(e,p,t,Be.instance),!t.hasProblems()}));d||n.problems.push({location:{offset:e.offset,length:e.length},message:t.errorMessage||$e("requiredItemMissingWarning","Array does not contain required item.")})}q(t.minItems)&&e.items.length<t.minItems&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("minItemsWarning","Array has too few items. Expected {0} or more.",t.minItems)});q(t.maxItems)&&e.items.length>t.maxItems&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("maxItemsWarning","Array has too many items. Expected {0} or fewer.",t.maxItems)});if(!0===t.uniqueItems){var m=Je(e),g=m.some((function(e,t){return t!==m.lastIndexOf(e)}));g&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("uniqueItemsWarning","Array has duplicate items.")})}}(i,t,n,r);break;case"string":!function(e,t,n,r){q(t.minLength)&&e.value.length<t.minLength&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("minLengthWarning","String is shorter than the minimum length of {0}.",t.minLength)});q(t.maxLength)&&e.value.length>t.maxLength&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("maxLengthWarning","String is longer than the maximum length of {0}.",t.maxLength)});if(i=t.pattern,"string"===typeof i){new RegExp(t.pattern).test(e.value)||n.problems.push({location:{offset:e.offset,length:e.length},message:t.patternErrorMessage||t.errorMessage||$e("patternWarning",'String does not match the pattern of "{0}".',t.pattern)})}var i;if(t.format)switch(t.format){case"uri":case"uri-reference":var o=void 0;if(e.value){var a=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/.exec(e.value);a?a[2]||"uri"!==t.format||(o=$e("uriSchemeMissing","URI with a scheme is expected.")):o=$e("uriMissing","URI is expected.")}else o=$e("uriEmpty","URI expected.");o&&n.problems.push({location:{offset:e.offset,length:e.length},message:t.patternErrorMessage||t.errorMessage||$e("uriFormatWarning","String is not a URI: {0}",o)});break;case"color-hex":case"date-time":case"date":case"time":case"email":var s=De[t.format];e.value&&s.pattern.exec(e.value)||n.problems.push({location:{offset:e.offset,length:e.length},message:t.patternErrorMessage||t.errorMessage||s.errorMessage})}}(i,t,n);break;case"number":!function(e,t,n,r){var i=e.value;function o(e){var t,n=/^(-?\d+)(?:\.(\d+))?(?:e([-+]\d+))?$/.exec(e.toString());return n&&{value:Number(n[1]+(n[2]||"")),multiplier:((null===(t=n[2])||void 0===t?void 0:t.length)||0)-(parseInt(n[3])||0)}}if(q(t.multipleOf)){var a=-1;if(Number.isInteger(t.multipleOf))a=i%t.multipleOf;else{var s=o(t.multipleOf),u=o(i);if(s&&u){var c=Math.pow(10,Math.abs(u.multiplier-s.multiplier));u.multiplier<s.multiplier?u.value*=c:s.value*=c,a=u.value%s.value}}0!==a&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("multipleOfWarning","Value is not divisible by {0}.",t.multipleOf)})}function f(e,t){return q(t)?t:K(t)&&t?e:void 0}function l(e,t){if(!K(t)||!t)return e}var h=f(t.minimum,t.exclusiveMinimum);q(h)&&i<=h&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("exclusiveMinimumWarning","Value is below the exclusive minimum of {0}.",h)});var p=f(t.maximum,t.exclusiveMaximum);q(p)&&i>=p&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("exclusiveMaximumWarning","Value is above the exclusive maximum of {0}.",p)});var d=l(t.minimum,t.exclusiveMinimum);q(d)&&i<d&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("minimumWarning","Value is below the minimum of {0}.",d)});var m=l(t.maximum,t.exclusiveMaximum);q(m)&&i>m&&n.problems.push({location:{offset:e.offset,length:e.length},message:$e("maximumWarning","Value is above the maximum of {0}.",m)})}(i,t,n);break;case"property":return Ge(i.valueNode,t,n,r)}!function(){function e(e){return i.type===e||"integer"===e&&"number"===i.type&&i.isInteger}Array.isArray(t.type)?t.type.some(e)||n.problems.push({location:{offset:i.offset,length:i.length},message:t.errorMessage||$e("typeArrayMismatchWarning","Incorrect type. Expected one of {0}.",t.type.join(", "))}):t.type&&(e(t.type)||n.problems.push({location:{offset:i.offset,length:i.length},message:t.errorMessage||$e("typeMismatchWarning",'Incorrect type. Expected "{0}".',t.type)}));if(Array.isArray(t.allOf))for(var o=0,a=t.allOf;o<a.length;o++){var s=a[o];Ge(i,We(s),n,r)}var u=We(t.not);if(u){var c=new Ke,f=r.newSub();Ge(i,u,c,f),c.hasProblems()||n.problems.push({location:{offset:i.offset,length:i.length},message:$e("notSchemaWarning","Matches a schema that is not allowed.")});for(var l=0,h=f.schemas;l<h.length;l++){var p=h[l];p.inverted=!p.inverted,r.add(p)}}var d=function(e,t){for(var o=[],a=void 0,s=0,u=e;s<u.length;s++){var c=We(u[s]),f=new Ke,l=r.newSub();if(Ge(i,c,f,l),f.hasProblems()||o.push(c),a)if(t||f.hasProblems()||a.validationResult.hasProblems()){var h=f.compare(a.validationResult);h>0?a={schema:c,validationResult:f,matchingSchemas:l}:0===h&&(a.matchingSchemas.merge(l),a.validationResult.mergeEnumValues(f))}else a.matchingSchemas.merge(l),a.validationResult.propertiesMatches+=f.propertiesMatches,a.validationResult.propertiesValueMatches+=f.propertiesValueMatches;else a={schema:c,validationResult:f,matchingSchemas:l}}return o.length>1&&t&&n.problems.push({location:{offset:i.offset,length:1},message:$e("oneOfWarning","Matches multiple schemas when only one must validate.")}),a&&(n.merge(a.validationResult),n.propertiesMatches+=a.validationResult.propertiesMatches,n.propertiesValueMatches+=a.validationResult.propertiesValueMatches,r.merge(a.matchingSchemas)),o.length};Array.isArray(t.anyOf)&&d(t.anyOf,!1);Array.isArray(t.oneOf)&&d(t.oneOf,!0);var m=function(e){var t=new Ke,o=r.newSub();Ge(i,We(e),t,o),n.merge(t),n.propertiesMatches+=t.propertiesMatches,n.propertiesValueMatches+=t.propertiesValueMatches,r.merge(o)},g=We(t.if);g&&function(e,t,n){var o=We(e),a=new Ke,s=r.newSub();Ge(i,o,a,s),r.merge(s),a.hasProblems()?n&&m(n):t&&m(t)}(g,We(t.then),We(t.else));if(Array.isArray(t.enum)){for(var v=Je(i),y=!1,b=0,x=t.enum;b<x.length;b++){if(W(v,x[b])){y=!0;break}}n.enumValues=t.enum,n.enumValueMatch=y,y||n.problems.push({location:{offset:i.offset,length:i.length},code:Ee.EnumValueMismatch,message:t.errorMessage||$e("enumWarning","Value is not accepted. Valid values: {0}.",t.enum.map((function(e){return JSON.stringify(e)})).join(", "))})}if(B(t.const)){W(v=Je(i),t.const)?n.enumValueMatch=!0:(n.problems.push({location:{offset:i.offset,length:i.length},code:Ee.EnumValueMismatch,message:t.errorMessage||$e("constWarning","Value must be {0}.",JSON.stringify(t.const))}),n.enumValueMatch=!1),n.enumValues=[t.const]}t.deprecationMessage&&i.parent&&n.problems.push({location:{offset:i.parent.offset,length:i.parent.length},severity:S.Warning,message:t.deprecationMessage,code:Ee.Deprecated})}(),r.add({node:i,schema:t})}}function Xe(e,t,n){if(null!==e&&"object"===typeof e){var r=t+"\t";if(Array.isArray(e)){if(0===e.length)return"[]";for(var i="[\n",o=0;o<e.length;o++)i+=r+Xe(e[o],r,n),o<e.length-1&&(i+=","),i+="\n";return i+=t+"]"}var a=Object.keys(e);if(0===a.length)return"{}";for(i="{\n",o=0;o<a.length;o++){var s=a[o];i+=r+JSON.stringify(s)+": "+Xe(e[s],r,n),o<a.length-1&&(i+=","),i+="\n"}return i+=t+"}"}return n(e)}function Ze(e,t){var n=e.length-t.length;return n>0?e.lastIndexOf(t)===n:0===n&&e===t}function Qe(e){return e.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}var Ye,et=Fe();(function(){function e(e,t,n,r){void 0===t&&(t=[]),void 0===n&&(n=Promise),void 0===r&&(r={}),this.schemaService=e,this.contributions=t,this.promiseConstructor=n,this.clientCapabilities=r}e.prototype.doResolve=function(e){for(var t=this.contributions.length-1;t>=0;t--){var n=this.contributions[t].resolveCompletion;if(n){var r=n(e);if(r)return r}}return this.promiseConstructor.resolve(e)},e.prototype.doComplete=function(e,t,n){var r=this,i={items:[],isIncomplete:!1},o=e.getText(),a=e.offsetAt(t),s=n.getNodeFromOffset(a,!0);if(this.isInComment(e,s?s.offset:0,a))return Promise.resolve(i);if(s&&a===s.offset+s.length&&a>0){var u=o[a-1];("object"===s.type&&"}"===u||"array"===s.type&&"]"===u)&&(s=s.parent)}var c,f=this.getCurrentWord(e,a);if(!s||"string"!==s.type&&"number"!==s.type&&"boolean"!==s.type&&"null"!==s.type){var l=a-f.length;l>0&&'"'===o[l-1]&&l--,c=d.create(e.positionAt(l),t)}else c=d.create(e.positionAt(s.offset),e.positionAt(s.offset+s.length));var h={},p={add:function(e){var t=e.label,n=h[t];if(n)n.documentation||(n.documentation=e.documentation),n.detail||(n.detail=e.detail);else{if((t=t.replace(/[\n]/g,"\u21b5")).length>60){var r=t.substr(0,57).trim()+"...";h[r]||(t=r)}c&&void 0!==e.insertText&&(e.textEdit=E.replace(c,e.insertText)),e.label=t,h[t]=e,i.items.push(e)}},setAsIncomplete:function(){i.isIncomplete=!0},error:function(e){console.error(e)},log:function(e){console.log(e)},getNumberOfProposals:function(){return i.items.length}};return this.schemaService.getSchemaForResource(e.uri,n).then((function(t){var u=[],l=!0,d="",m=void 0;if(s&&"string"===s.type){var g=s.parent;g&&"property"===g.type&&g.keyNode===s&&(l=!g.valueNode,m=g,d=o.substr(s.offset+1,s.length-2),g&&(s=g.parent))}if(s&&"object"===s.type){if(s.offset===a)return i;s.properties.forEach((function(e){m&&m===e||(h[e.keyNode.value]=re.create("__"))}));var v="";l&&(v=r.evaluateSeparatorAfter(e,e.offsetAt(c.end))),t?r.getPropertyCompletions(t,n,s,l,v,p):r.getSchemaLessPropertyCompletions(n,s,d,p);var y=ze(s);r.contributions.forEach((function(t){var n=t.collectPropertyCompletions(e.uri,y,f,l,""===v,p);n&&u.push(n)})),!t&&f.length>0&&'"'!==o.charAt(a-f.length-1)&&(p.add({kind:Q.Property,label:r.getLabelForValue(f),insertText:r.getInsertTextForProperty(f,void 0,!1,v),insertTextFormat:Y.Snippet,documentation:""}),p.setAsIncomplete())}var b={};return t?r.getValueCompletions(t,n,s,a,e,p,b):r.getSchemaLessValueCompletions(n,s,a,e,p),r.contributions.length>0&&r.getContributedValueCompletions(n,s,a,e,p,u),r.promiseConstructor.all(u).then((function(){if(0===p.getNumberOfProposals()){var t=a;!s||"string"!==s.type&&"number"!==s.type&&"boolean"!==s.type&&"null"!==s.type||(t=s.offset+s.length);var n=r.evaluateSeparatorAfter(e,t);r.addFillerValueCompletions(b,n,p)}return i}))}))},e.prototype.getPropertyCompletions=function(e,t,n,r,i,o){var a=this;t.getMatchingSchemas(e.schema,n.offset).forEach((function(e){if(e.node===n&&!e.inverted){var t=e.schema.properties;t&&Object.keys(t).forEach((function(e){var n=t[e];if("object"===typeof n&&!n.deprecationMessage&&!n.doNotSuggest){var s={kind:Q.Property,label:e,insertText:a.getInsertTextForProperty(e,n,r,i),insertTextFormat:Y.Snippet,filterText:a.getFilterTextForValue(e),documentation:a.fromMarkup(n.markdownDescription)||n.description||""};void 0!==n.suggestSortText&&(s.sortText=n.suggestSortText),s.insertText&&Ze(s.insertText,"$1"+i)&&(s.command={title:"Suggest",command:"editor.action.triggerSuggest"}),o.add(s)}}));var s=e.schema.propertyNames;if("object"===typeof s&&!s.deprecationMessage&&!s.doNotSuggest){var u=function(e,t){void 0===t&&(t=void 0);var n={kind:Q.Property,label:e,insertText:a.getInsertTextForProperty(e,void 0,r,i),insertTextFormat:Y.Snippet,filterText:a.getFilterTextForValue(e),documentation:t||a.fromMarkup(s.markdownDescription)||s.description||""};void 0!==s.suggestSortText&&(n.sortText=s.suggestSortText),n.insertText&&Ze(n.insertText,"$1"+i)&&(n.command={title:"Suggest",command:"editor.action.triggerSuggest"}),o.add(n)};if(s.enum)for(var c=0;c<s.enum.length;c++){var f=void 0;s.markdownEnumDescriptions&&c<s.markdownEnumDescriptions.length?f=a.fromMarkup(s.markdownEnumDescriptions[c]):s.enumDescriptions&&c<s.enumDescriptions.length&&(f=s.enumDescriptions[c]),u(s.enum[c],f)}s.const&&u(s.const)}}}))},e.prototype.getSchemaLessPropertyCompletions=function(e,t,n,r){var i=this,o=function(e){e.properties.forEach((function(e){var t=e.keyNode.value;r.add({kind:Q.Property,label:t,insertText:i.getInsertTextForValue(t,""),insertTextFormat:Y.Snippet,filterText:i.getFilterTextForValue(t),documentation:""})}))};if(t.parent)if("property"===t.parent.type){var a=t.parent.keyNode.value;e.visit((function(e){return"property"===e.type&&e!==t.parent&&e.keyNode.value===a&&e.valueNode&&"object"===e.valueNode.type&&o(e.valueNode),!0}))}else"array"===t.parent.type&&t.parent.items.forEach((function(e){"object"===e.type&&e!==t&&o(e)}));else"object"===t.type&&r.add({kind:Q.Property,label:"$schema",insertText:this.getInsertTextForProperty("$schema",void 0,!0,""),insertTextFormat:Y.Snippet,documentation:"",filterText:this.getFilterTextForValue("$schema")})},e.prototype.getSchemaLessValueCompletions=function(e,t,n,r,i){var o=this,a=n;if(!t||"string"!==t.type&&"number"!==t.type&&"boolean"!==t.type&&"null"!==t.type||(a=t.offset+t.length,t=t.parent),!t)return i.add({kind:this.getSuggestionKind("object"),label:"Empty object",insertText:this.getInsertTextForValue({},""),insertTextFormat:Y.Snippet,documentation:""}),void i.add({kind:this.getSuggestionKind("array"),label:"Empty array",insertText:this.getInsertTextForValue([],""),insertTextFormat:Y.Snippet,documentation:""});var s=this.evaluateSeparatorAfter(r,a),u=function(e){e.parent&&!He(e.parent,n,!0)&&i.add({kind:o.getSuggestionKind(e.type),label:o.getLabelTextForMatchingNode(e,r),insertText:o.getInsertTextForMatchingNode(e,r,s),insertTextFormat:Y.Snippet,documentation:""}),"boolean"===e.type&&o.addBooleanValueCompletion(!e.value,s,i)};if("property"===t.type&&n>(t.colonOffset||0)){var c=t.valueNode;if(c&&(n>c.offset+c.length||"object"===c.type||"array"===c.type))return;var f=t.keyNode.value;e.visit((function(e){return"property"===e.type&&e.keyNode.value===f&&e.valueNode&&u(e.valueNode),!0})),"$schema"===f&&t.parent&&!t.parent.parent&&this.addDollarSchemaCompletions(s,i)}if("array"===t.type)if(t.parent&&"property"===t.parent.type){var l=t.parent.keyNode.value;e.visit((function(e){return"property"===e.type&&e.keyNode.value===l&&e.valueNode&&"array"===e.valueNode.type&&e.valueNode.items.forEach(u),!0}))}else t.items.forEach(u)},e.prototype.getValueCompletions=function(e,t,n,r,i,o,a){var s=r,u=void 0,c=void 0;if(!n||"string"!==n.type&&"number"!==n.type&&"boolean"!==n.type&&"null"!==n.type||(s=n.offset+n.length,c=n,n=n.parent),n){if("property"===n.type&&r>(n.colonOffset||0)){var f=n.valueNode;if(f&&r>f.offset+f.length)return;u=n.keyNode.value,n=n.parent}if(n&&(void 0!==u||"array"===n.type)){for(var l=this.evaluateSeparatorAfter(i,s),h=0,p=t.getMatchingSchemas(e.schema,n.offset,c);h<p.length;h++){var d=p[h];if(d.node===n&&!d.inverted&&d.schema){if("array"===n.type&&d.schema.items)if(Array.isArray(d.schema.items)){var m=this.findItemAtOffset(n,i,r);m<d.schema.items.length&&this.addSchemaValueCompletions(d.schema.items[m],l,o,a)}else this.addSchemaValueCompletions(d.schema.items,l,o,a);if(void 0!==u){var g=!1;if(d.schema.properties)(x=d.schema.properties[u])&&(g=!0,this.addSchemaValueCompletions(x,l,o,a));if(d.schema.patternProperties&&!g)for(var v=0,y=Object.keys(d.schema.patternProperties);v<y.length;v++){var b=y[v];if(new RegExp(b).test(u)){g=!0;var x=d.schema.patternProperties[b];this.addSchemaValueCompletions(x,l,o,a)}}if(d.schema.additionalProperties&&!g){x=d.schema.additionalProperties;this.addSchemaValueCompletions(x,l,o,a)}}}}"$schema"!==u||n.parent||this.addDollarSchemaCompletions(l,o),a.boolean&&(this.addBooleanValueCompletion(!0,l,o),this.addBooleanValueCompletion(!1,l,o)),a.null&&this.addNullValueCompletion(l,o)}}else this.addSchemaValueCompletions(e.schema,"",o,a)},e.prototype.getContributedValueCompletions=function(e,t,n,r,i,o){if(t){if("string"!==t.type&&"number"!==t.type&&"boolean"!==t.type&&"null"!==t.type||(t=t.parent),t&&"property"===t.type&&n>(t.colonOffset||0)){var a=t.keyNode.value,s=t.valueNode;if((!s||n<=s.offset+s.length)&&t.parent){var u=ze(t.parent);this.contributions.forEach((function(e){var t=e.collectValueCompletions(r.uri,u,a,i);t&&o.push(t)}))}}}else this.contributions.forEach((function(e){var t=e.collectDefaultCompletions(r.uri,i);t&&o.push(t)}))},e.prototype.addSchemaValueCompletions=function(e,t,n,r){var i=this;"object"===typeof e&&(this.addEnumValueCompletions(e,t,n),this.addDefaultValueCompletions(e,t,n),this.collectTypes(e,r),Array.isArray(e.allOf)&&e.allOf.forEach((function(e){return i.addSchemaValueCompletions(e,t,n,r)})),Array.isArray(e.anyOf)&&e.anyOf.forEach((function(e){return i.addSchemaValueCompletions(e,t,n,r)})),Array.isArray(e.oneOf)&&e.oneOf.forEach((function(e){return i.addSchemaValueCompletions(e,t,n,r)})))},e.prototype.addDefaultValueCompletions=function(e,t,n,r){var i=this;void 0===r&&(r=0);var o=!1;if(B(e.default)){for(var a=e.type,s=e.default,u=r;u>0;u--)s=[s],a="array";n.add({kind:this.getSuggestionKind(a),label:this.getLabelForValue(s),insertText:this.getInsertTextForValue(s,t),insertTextFormat:Y.Snippet,detail:et("json.suggest.default","Default value")}),o=!0}Array.isArray(e.examples)&&e.examples.forEach((function(a){for(var s=e.type,u=a,c=r;c>0;c--)u=[u],s="array";n.add({kind:i.getSuggestionKind(s),label:i.getLabelForValue(u),insertText:i.getInsertTextForValue(u,t),insertTextFormat:Y.Snippet}),o=!0})),Array.isArray(e.defaultSnippets)&&e.defaultSnippets.forEach((function(a){var s,u,c=e.type,f=a.body,l=a.label;if(B(f)){e.type;for(var h=r;h>0;h--)f=[f],"array";s=i.getInsertTextForSnippetValue(f,t),u=i.getFilterTextForSnippetValue(f),l=l||i.getLabelForSnippetValue(f)}else{if("string"!==typeof a.bodyText)return;var p="",d="",m="";for(h=r;h>0;h--)p=p+m+"[\n",d=d+"\n"+m+"]",m+="\t",c="array";s=p+m+a.bodyText.split("\n").join("\n"+m)+d+t,l=l||s,u=s.replace(/[\n]/g,"")}n.add({kind:i.getSuggestionKind(c),label:l,documentation:i.fromMarkup(a.markdownDescription)||a.description,insertText:s,insertTextFormat:Y.Snippet,filterText:u}),o=!0})),!o&&"object"===typeof e.items&&!Array.isArray(e.items)&&r<5&&this.addDefaultValueCompletions(e.items,t,n,r+1)},e.prototype.addEnumValueCompletions=function(e,t,n){if(B(e.const)&&n.add({kind:this.getSuggestionKind(e.type),label:this.getLabelForValue(e.const),insertText:this.getInsertTextForValue(e.const,t),insertTextFormat:Y.Snippet,documentation:this.fromMarkup(e.markdownDescription)||e.description}),Array.isArray(e.enum))for(var r=0,i=e.enum.length;r<i;r++){var o=e.enum[r],a=this.fromMarkup(e.markdownDescription)||e.description;e.markdownEnumDescriptions&&r<e.markdownEnumDescriptions.length&&this.doesSupportMarkdown()?a=this.fromMarkup(e.markdownEnumDescriptions[r]):e.enumDescriptions&&r<e.enumDescriptions.length&&(a=e.enumDescriptions[r]),n.add({kind:this.getSuggestionKind(e.type),label:this.getLabelForValue(o),insertText:this.getInsertTextForValue(o,t),insertTextFormat:Y.Snippet,documentation:a})}},e.prototype.collectTypes=function(e,t){if(!Array.isArray(e.enum)&&!B(e.const)){var n=e.type;Array.isArray(n)?n.forEach((function(e){return t[e]=!0})):n&&(t[n]=!0)}},e.prototype.addFillerValueCompletions=function(e,t,n){e.object&&n.add({kind:this.getSuggestionKind("object"),label:"{}",insertText:this.getInsertTextForGuessedValue({},t),insertTextFormat:Y.Snippet,detail:et("defaults.object","New object"),documentation:""}),e.array&&n.add({kind:this.getSuggestionKind("array"),label:"[]",insertText:this.getInsertTextForGuessedValue([],t),insertTextFormat:Y.Snippet,detail:et("defaults.array","New array"),documentation:""})},e.prototype.addBooleanValueCompletion=function(e,t,n){n.add({kind:this.getSuggestionKind("boolean"),label:e?"true":"false",insertText:this.getInsertTextForValue(e,t),insertTextFormat:Y.Snippet,documentation:""})},e.prototype.addNullValueCompletion=function(e,t){t.add({kind:this.getSuggestionKind("null"),label:"null",insertText:"null"+e,insertTextFormat:Y.Snippet,documentation:""})},e.prototype.addDollarSchemaCompletions=function(e,t){var n=this,r=this.schemaService.getRegisteredSchemaIds((function(e){return"http"===e||"https"===e}));r.forEach((function(r){return t.add({kind:Q.Module,label:n.getLabelForValue(r),filterText:n.getFilterTextForValue(r),insertText:n.getInsertTextForValue(r,e),insertTextFormat:Y.Snippet,documentation:""})}))},e.prototype.getLabelForValue=function(e){return JSON.stringify(e)},e.prototype.getFilterTextForValue=function(e){return JSON.stringify(e)},e.prototype.getFilterTextForSnippetValue=function(e){return JSON.stringify(e).replace(/\$\{\d+:([^}]+)\}|\$\d+/g,"$1")},e.prototype.getLabelForSnippetValue=function(e){return JSON.stringify(e).replace(/\$\{\d+:([^}]+)\}|\$\d+/g,"$1")},e.prototype.getInsertTextForPlainText=function(e){return e.replace(/[\\\$\}]/g,"\\$&")},e.prototype.getInsertTextForValue=function(e,t){var n=JSON.stringify(e,null,"\t");return"{}"===n?"{$1}"+t:"[]"===n?"[$1]"+t:this.getInsertTextForPlainText(n+t)},e.prototype.getInsertTextForSnippetValue=function(e,t){return Xe(e,"",(function(e){return"string"===typeof e&&"^"===e[0]?e.substr(1):JSON.stringify(e)}))+t},e.prototype.getInsertTextForGuessedValue=function(e,t){switch(typeof e){case"object":return null===e?"${1:null}"+t:this.getInsertTextForValue(e,t);case"string":var n=JSON.stringify(e);return n=n.substr(1,n.length-2),'"${1:'+(n=this.getInsertTextForPlainText(n))+'}"'+t;case"number":case"boolean":return"${1:"+JSON.stringify(e)+"}"+t}return this.getInsertTextForValue(e,t)},e.prototype.getSuggestionKind=function(e){if(Array.isArray(e)){var t=e;e=t.length>0?t[0]:void 0}if(!e)return Q.Value;switch(e){case"string":default:return Q.Value;case"object":return Q.Module;case"property":return Q.Property}},e.prototype.getLabelTextForMatchingNode=function(e,t){switch(e.type){case"array":return"[]";case"object":return"{}";default:return t.getText().substr(e.offset,e.length)}},e.prototype.getInsertTextForMatchingNode=function(e,t,n){switch(e.type){case"array":return this.getInsertTextForValue([],n);case"object":return this.getInsertTextForValue({},n);default:var r=t.getText().substr(e.offset,e.length)+n;return this.getInsertTextForPlainText(r)}},e.prototype.getInsertTextForProperty=function(e,t,n,r){var i=this.getInsertTextForValue(e,"");if(!n)return i;var o,a=i+": ",s=0;if(t){if(Array.isArray(t.defaultSnippets)){if(1===t.defaultSnippets.length){var u=t.defaultSnippets[0].body;B(u)&&(o=this.getInsertTextForSnippetValue(u,""))}s+=t.defaultSnippets.length}if(t.enum&&(o||1!==t.enum.length||(o=this.getInsertTextForGuessedValue(t.enum[0],"")),s+=t.enum.length),B(t.default)&&(o||(o=this.getInsertTextForGuessedValue(t.default,"")),s++),Array.isArray(t.examples)&&t.examples.length&&(o||(o=this.getInsertTextForGuessedValue(t.examples[0],"")),s+=t.examples.length),0===s){var c=Array.isArray(t.type)?t.type[0]:t.type;switch(c||(t.properties?c="object":t.items&&(c="array")),c){case"boolean":o="$1";break;case"string":o='"$1"';break;case"object":o="{$1}";break;case"array":o="[$1]";break;case"number":case"integer":o="${1:0}";break;case"null":o="${1:null}";break;default:return i}}}return(!o||s>1)&&(o="$1"),a+o+r},e.prototype.getCurrentWord=function(e,t){for(var n=t-1,r=e.getText();n>=0&&-1===' \t\n\r\v":{[,]}'.indexOf(r.charAt(n));)n--;return r.substring(n+1,t)},e.prototype.evaluateSeparatorAfter=function(e,t){var n=R(e.getText(),!0);switch(n.setPosition(t),n.scan()){case 5:case 2:case 4:case 17:return"";default:return","}},e.prototype.findItemAtOffset=function(e,t,n){for(var r=R(t.getText(),!0),i=e.items,o=i.length-1;o>=0;o--){var a=i[o];if(n>a.offset+a.length)return r.setPosition(a.offset+a.length),5===r.scan()&&n>=r.getTokenOffset()+r.getTokenLength()?o+1:o;if(n>=a.offset)return o}return 0},e.prototype.isInComment=function(e,t,n){var r=R(e.getText(),!1);r.setPosition(t);for(var i=r.scan();17!==i&&r.getTokenOffset()+r.getTokenLength()<n;)i=r.scan();return(12===i||13===i)&&r.getTokenOffset()<=n},e.prototype.fromMarkup=function(e){if(e&&this.doesSupportMarkdown())return{kind:X.Markdown,value:e}},e.prototype.doesSupportMarkdown=function(){if(!B(this.supportsMarkdown)){var e=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.completion;this.supportsMarkdown=e&&e.completionItem&&Array.isArray(e.completionItem.documentationFormat)&&-1!==e.completionItem.documentationFormat.indexOf(X.Markdown)}return this.supportsMarkdown},e.prototype.doesSupportsCommitCharacters=function(){if(!B(this.supportsCommitCharacters)){var e=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.completion;this.supportsCommitCharacters=e&&e.completionItem&&!!e.completionItem.commitCharactersSupport}return this.supportsCommitCharacters}})(),function(){function e(e,t,n){void 0===t&&(t=[]),this.schemaService=e,this.contributions=t,this.promise=n||Promise}e.prototype.doHover=function(e,t,n){var r=e.offsetAt(t),i=n.getNodeFromOffset(r);if(!i||("object"===i.type||"array"===i.type)&&r>i.offset+1&&r<i.offset+i.length-1)return this.promise.resolve(null);var o=i;if("string"===i.type){var a=i.parent;if(a&&"property"===a.type&&a.keyNode===i&&!(i=a.valueNode))return this.promise.resolve(null)}for(var s=d.create(e.positionAt(o.offset),e.positionAt(o.offset+o.length)),u=function(e){return{contents:e,range:s}},c=ze(i),f=this.contributions.length-1;f>=0;f--){var l=this.contributions[f].getInfoContribution(e.uri,c);if(l)return l.then((function(e){return u(e)}))}return this.schemaService.getSchemaForResource(e.uri,n).then((function(e){if(e&&i){var t=n.getMatchingSchemas(e.schema,i.offset),r=void 0,o=void 0,a=void 0,s=void 0;t.every((function(e){if(e.node===i&&!e.inverted&&e.schema&&(r=r||e.schema.title,o=o||e.schema.markdownDescription||tt(e.schema.description),e.schema.enum)){var t=e.schema.enum.indexOf(Je(i));e.schema.markdownEnumDescriptions?a=e.schema.markdownEnumDescriptions[t]:e.schema.enumDescriptions&&(a=tt(e.schema.enumDescriptions[t])),a&&"string"!==typeof(s=e.schema.enum[t])&&(s=JSON.stringify(s))}return!0}));var c="";return r&&(c=tt(r)),o&&(c.length>0&&(c+="\n\n"),c+=o),a&&(c.length>0&&(c+="\n\n"),c+="`"+function(e){if(-1!==e.indexOf("`"))return"`` "+e+" ``";return e}(s)+"`: "+a),u([c])}return null}))}}();function tt(e){if(e)return e.replace(/([^\n\r])(\r?\n)([^\n\r])/gm,"$1\n\n$3").replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}Ye=function(){var e={470:function(e){function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",i=0,o=-1,a=0,s=0;s<=e.length;++s){if(s<e.length)n=e.charCodeAt(s);else{if(47===n)break;n=47}if(47===n){if(o===s-1||1===a);else if(o!==s-1&&2===a){if(r.length<2||2!==i||46!==r.charCodeAt(r.length-1)||46!==r.charCodeAt(r.length-2))if(r.length>2){var u=r.lastIndexOf("/");if(u!==r.length-1){-1===u?(r="",i=0):i=(r=r.slice(0,u)).length-1-r.lastIndexOf("/"),o=s,a=0;continue}}else if(2===r.length||1===r.length){r="",i=0,o=s,a=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(o+1,s):r=e.slice(o+1,s),i=s-o-1;o=s,a=0}else 46===n&&-1!==a?++a:a=-1}return r}var r={resolve:function(){for(var e,r="",i=!1,o=arguments.length-1;o>=-1&&!i;o--){var a;o>=0?a=arguments[o]:(void 0===e&&(e=process.cwd()),a=e),t(a),0!==a.length&&(r=a+"/"+r,i=47===a.charCodeAt(0))}return r=n(r,!i),i?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&i&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n<arguments.length;++n){var i=arguments[n];t(i),i.length>0&&(void 0===e?e=i:e+="/"+i)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var i=1;i<e.length&&47===e.charCodeAt(i);++i);for(var o=e.length,a=o-i,s=1;s<n.length&&47===n.charCodeAt(s);++s);for(var u=n.length-s,c=a<u?a:u,f=-1,l=0;l<=c;++l){if(l===c){if(u>c){if(47===n.charCodeAt(s+l))return n.slice(s+l+1);if(0===l)return n.slice(s+l)}else a>c&&(47===e.charCodeAt(i+l)?f=l:0===l&&(f=0));break}var h=e.charCodeAt(i+l);if(h!==n.charCodeAt(s+l))break;47===h&&(f=l)}var p="";for(l=i+f+1;l<=o;++l)l!==o&&47!==e.charCodeAt(l)||(0===p.length?p+="..":p+="/..");return p.length>0?p+n.slice(s+f):(s+=f,47===n.charCodeAt(s)&&++s,n.slice(s))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,i=-1,o=!0,a=e.length-1;a>=1;--a)if(47===(n=e.charCodeAt(a))){if(!o){i=a;break}}else o=!1;return-1===i?r?"/":".":r&&1===i?"//":e.slice(0,i)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,i=0,o=-1,a=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var s=n.length-1,u=-1;for(r=e.length-1;r>=0;--r){var c=e.charCodeAt(r);if(47===c){if(!a){i=r+1;break}}else-1===u&&(a=!1,u=r+1),s>=0&&(c===n.charCodeAt(s)?-1==--s&&(o=r):(s=-1,o=u))}return i===o?o=u:-1===o&&(o=e.length),e.slice(i,o)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!a){i=r+1;break}}else-1===o&&(a=!1,o=r+1);return-1===o?"":e.slice(i,o)},extname:function(e){t(e);for(var n=-1,r=0,i=-1,o=!0,a=0,s=e.length-1;s>=0;--s){var u=e.charCodeAt(s);if(47!==u)-1===i&&(o=!1,i=s+1),46===u?-1===n?n=s:1!==a&&(a=1):-1!==n&&(a=-1);else if(!o){r=s+1;break}}return-1===n||-1===i||0===a||1===a&&n===i-1&&n===r+1?"":e.slice(n,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+"/"+r:r}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,i=e.charCodeAt(0),o=47===i;o?(n.root="/",r=1):r=0;for(var a=-1,s=0,u=-1,c=!0,f=e.length-1,l=0;f>=r;--f)if(47!==(i=e.charCodeAt(f)))-1===u&&(c=!1,u=f+1),46===i?-1===a?a=f:1!==l&&(l=1):-1!==a&&(l=-1);else if(!c){s=f+1;break}return-1===a||-1===u||0===l||1===l&&a===u-1&&a===s+1?-1!==u&&(n.base=n.name=0===s&&o?e.slice(1,u):e.slice(s,u)):(0===s&&o?(n.name=e.slice(1,a),n.base=e.slice(1,u)):(n.name=e.slice(s,a),n.base=e.slice(s,u)),n.ext=e.slice(a,u)),s>0?n.dir=e.slice(0,s-1):o&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,e.exports=r},447:function(e,t,n){var r;if(n.r(t),n.d(t,{URI:function(){return d},Utils:function(){return w}}),"object"==typeof process)r="win32"===process.platform;else if("object"==typeof navigator){var i=navigator.userAgent;r=i.indexOf("Windows")>=0}var o,a,s=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),u=/^\w[\w\d+.-]*$/,c=/^\//,f=/^\/\//,l="",h="/",p=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,d=function(){function e(e,t,n,r,i,o){void 0===o&&(o=!1),"object"==typeof e?(this.scheme=e.scheme||l,this.authority=e.authority||l,this.path=e.path||l,this.query=e.query||l,this.fragment=e.fragment||l):(this.scheme=function(e,t){return e||t?e:"file"}(e,o),this.authority=t||l,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==h&&(t=h+t):t=h}return t}(this.scheme,n||l),this.query=r||l,this.fragment=i||l,function(e,t){if(!e.scheme&&t)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}');if(e.scheme&&!u.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!c.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(f.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,o))}return e.isUri=function(t){return t instanceof e||!!t&&"string"==typeof t.authority&&"string"==typeof t.fragment&&"string"==typeof t.path&&"string"==typeof t.query&&"string"==typeof t.scheme&&"function"==typeof t.fsPath&&"function"==typeof t.with&&"function"==typeof t.toString},Object.defineProperty(e.prototype,"fsPath",{get:function(){return x(this,!1)},enumerable:!1,configurable:!0}),e.prototype.with=function(e){if(!e)return this;var t=e.scheme,n=e.authority,r=e.path,i=e.query,o=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=l),void 0===n?n=this.authority:null===n&&(n=l),void 0===r?r=this.path:null===r&&(r=l),void 0===i?i=this.query:null===i&&(i=l),void 0===o?o=this.fragment:null===o&&(o=l),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&o===this.fragment?this:new g(t,n,r,i,o)},e.parse=function(e,t){void 0===t&&(t=!1);var n=p.exec(e);return n?new g(n[2]||l,k(n[4]||l),k(n[5]||l),k(n[7]||l),k(n[9]||l),t):new g(l,l,l,l,l)},e.file=function(e){var t=l;if(r&&(e=e.replace(/\\/g,h)),e[0]===h&&e[1]===h){var n=e.indexOf(h,2);-1===n?(t=e.substring(2),e=h):(t=e.substring(2,n),e=e.substring(n)||h)}return new g("file",t,e,l,l)},e.from=function(e){return new g(e.scheme,e.authority,e.path,e.query,e.fragment)},e.prototype.toString=function(e){return void 0===e&&(e=!1),A(this,e)},e.prototype.toJSON=function(){return this},e.revive=function(t){if(t){if(t instanceof e)return t;var n=new g(t);return n._formatted=t.external,n._fsPath=t._sep===m?t.fsPath:null,n}return t},e}(),m=r?1:void 0,g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._formatted=null,t._fsPath=null,t}return s(t,e),Object.defineProperty(t.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=x(this,!1)),this._fsPath},enumerable:!1,configurable:!0}),t.prototype.toString=function(e){return void 0===e&&(e=!1),e?A(this,!0):(this._formatted||(this._formatted=A(this,!1)),this._formatted)},t.prototype.toJSON=function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=m),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e},t}(d),v=((a={})[58]="%3A",a[47]="%2F",a[63]="%3F",a[35]="%23",a[91]="%5B",a[93]="%5D",a[64]="%40",a[33]="%21",a[36]="%24",a[38]="%26",a[39]="%27",a[40]="%28",a[41]="%29",a[42]="%2A",a[43]="%2B",a[44]="%2C",a[59]="%3B",a[61]="%3D",a[32]="%20",a);function y(e,t){for(var n=void 0,r=-1,i=0;i<e.length;i++){var o=e.charCodeAt(i);if(o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o)-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),void 0!==n&&(n+=e.charAt(i));else{void 0===n&&(n=e.substr(0,i));var a=v[o];void 0!==a?(-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),n+=a):-1===r&&(r=i)}}return-1!==r&&(n+=encodeURIComponent(e.substring(r))),void 0!==n?n:e}function b(e){for(var t=void 0,n=0;n<e.length;n++){var r=e.charCodeAt(n);35===r||63===r?(void 0===t&&(t=e.substr(0,n)),t+=v[r]):void 0!==t&&(t+=e[n])}return void 0!==t?t:e}function x(e,t){var n;return n=e.authority&&e.path.length>1&&"file"===e.scheme?"//"+e.authority+e.path:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,r&&(n=n.replace(/\//g,"\\")),n}function A(e,t){var n=t?b:y,r="",i=e.scheme,o=e.authority,a=e.path,s=e.query,u=e.fragment;if(i&&(r+=i,r+=":"),(o||"file"===i)&&(r+=h,r+=h),o){var c=o.indexOf("@");if(-1!==c){var f=o.substr(0,c);o=o.substr(c+1),-1===(c=f.indexOf(":"))?r+=n(f,!1):(r+=n(f.substr(0,c),!1),r+=":",r+=n(f.substr(c+1),!1)),r+="@"}-1===(c=(o=o.toLowerCase()).indexOf(":"))?r+=n(o,!1):(r+=n(o.substr(0,c),!1),r+=o.substr(c))}if(a){if(a.length>=3&&47===a.charCodeAt(0)&&58===a.charCodeAt(2))(l=a.charCodeAt(1))>=65&&l<=90&&(a="/"+String.fromCharCode(l+32)+":"+a.substr(3));else if(a.length>=2&&58===a.charCodeAt(1)){var l;(l=a.charCodeAt(0))>=65&&l<=90&&(a=String.fromCharCode(l+32)+":"+a.substr(2))}r+=n(a,!0)}return s&&(r+="?",r+=n(s,!1)),u&&(r+="#",r+=t?u:y(u,!1)),r}function C(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+C(e.substr(3)):e}}var S=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function k(e){return e.match(S)?e.replace(S,(function(e){return C(e)})):e}var w,I=n(470),j=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),i=0;for(t=0;t<n;t++)for(var o=arguments[t],a=0,s=o.length;a<s;a++,i++)r[i]=o[a];return r},E=I.posix||I;!function(e){e.joinPath=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return e.with({path:E.join.apply(E,j([e.path],t))})},e.resolvePath=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=e.path||"/";return e.with({path:E.resolve.apply(E,j([r],t))})},e.dirname=function(e){var t=E.dirname(e.path);return 1===t.length&&46===t.charCodeAt(0)?e:e.with({path:t})},e.basename=function(e){return E.basename(e.path)},e.extname=function(e){return E.extname(e.path)}}(w||(w={}))}},t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}return n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n(447)}();var nt=Ye,rt=nt.URI,it=(nt.Utils,Fe()),ot=function(){function e(e,t){this.patternRegExps=[],this.isInclude=[];try{for(var n=0,r=e;n<r.length;n++){var i=r[n],o="!"!==i[0];o||(i=i.substring(1)),this.patternRegExps.push(new RegExp(Qe(i)+"$")),this.isInclude.push(o)}this.uris=t}catch(a){this.patternRegExps.length=0,this.isInclude.length=0,this.uris=[]}}return e.prototype.matchesPattern=function(e){for(var t=!1,n=0;n<this.patternRegExps.length;n++){this.patternRegExps[n].test(e)&&(t=this.isInclude[n])}return t},e.prototype.getURIs=function(){return this.uris},e}(),at=function(){function e(e,t,n){this.service=e,this.url=t,this.dependencies={},n&&(this.unresolvedSchema=this.service.promise.resolve(new st(n)))}return e.prototype.getUnresolvedSchema=function(){return this.unresolvedSchema||(this.unresolvedSchema=this.service.loadSchema(this.url)),this.unresolvedSchema},e.prototype.getResolvedSchema=function(){var e=this;return this.resolvedSchema||(this.resolvedSchema=this.getUnresolvedSchema().then((function(t){return e.service.resolveSchemaContent(t,e.url,e.dependencies)}))),this.resolvedSchema},e.prototype.clearSchema=function(){this.resolvedSchema=void 0,this.unresolvedSchema=void 0,this.dependencies={}},e}(),st=function(e,t){void 0===t&&(t=[]),this.schema=e,this.errors=t},ut=function(){function e(e,t){void 0===t&&(t=[]),this.schema=e,this.errors=t}return e.prototype.getSection=function(e){var t=this.getSectionRecursive(e,this.schema);if(t)return We(t)},e.prototype.getSectionRecursive=function(e,t){if(!t||"boolean"===typeof t||0===e.length)return t;var n=e.shift();if(t.properties&&(t.properties[n],1))return this.getSectionRecursive(e,t.properties[n]);if(t.patternProperties)for(var r=0,i=Object.keys(t.patternProperties);r<i.length;r++){var o=i[r];if(new RegExp(o).test(n))return this.getSectionRecursive(e,t.patternProperties[o])}else{if("object"===typeof t.additionalProperties)return this.getSectionRecursive(e,t.additionalProperties);if(n.match("[0-9]+"))if(Array.isArray(t.items)){var a=parseInt(n,10);if(!isNaN(a)&&t.items[a])return this.getSectionRecursive(e,t.items[a])}else if(t.items)return this.getSectionRecursive(e,t.items)}},e}(),ct=(function(){function e(e,t,n){this.contextService=t,this.requestService=e,this.promiseConstructor=n||Promise,this.callOnDispose=[],this.contributionSchemas={},this.contributionAssociations=[],this.schemasById={},this.filePatternAssociations=[],this.registeredSchemasIds={}}e.prototype.getRegisteredSchemaIds=function(e){return Object.keys(this.registeredSchemasIds).filter((function(t){var n=rt.parse(t).scheme;return"schemaservice"!==n&&(!e||e(n))}))},Object.defineProperty(e.prototype,"promise",{get:function(){return this.promiseConstructor},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){for(;this.callOnDispose.length>0;)this.callOnDispose.pop()()},e.prototype.onResourceChange=function(e){for(var t=this,n=!1,r=[e=ft(e)],i=Object.keys(this.schemasById).map((function(e){return t.schemasById[e]}));r.length;)for(var o=r.pop(),a=0;a<i.length;a++){var s=i[a];s&&(s.url===o||s.dependencies[o])&&(s.url!==o&&r.push(s.url),s.clearSchema(),i[a]=void 0,n=!0)}return n},e.prototype.setSchemaContributions=function(e){if(e.schemas){var t=e.schemas;for(var n in t){var r=ft(n);this.contributionSchemas[r]=this.addSchemaHandle(r,t[n])}}if(Array.isArray(e.schemaAssociations))for(var i=0,o=e.schemaAssociations;i<o.length;i++){var a=o[i],s=a.uris.map(ft),u=this.addFilePatternAssociation(a.pattern,s);this.contributionAssociations.push(u)}},e.prototype.addSchemaHandle=function(e,t){var n=new at(this,e,t);return this.schemasById[e]=n,n},e.prototype.getOrAddSchemaHandle=function(e,t){return this.schemasById[e]||this.addSchemaHandle(e,t)},e.prototype.addFilePatternAssociation=function(e,t){var n=new ot(e,t);return this.filePatternAssociations.push(n),n},e.prototype.registerExternalSchema=function(e,t,n){var r=ft(e);return this.registeredSchemasIds[r]=!0,this.cachedSchemaForResource=void 0,t&&this.addFilePatternAssociation(t,[e]),n?this.addSchemaHandle(r,n):this.getOrAddSchemaHandle(r)},e.prototype.clearExternalSchemas=function(){for(var e in this.schemasById={},this.filePatternAssociations=[],this.registeredSchemasIds={},this.cachedSchemaForResource=void 0,this.contributionSchemas)this.schemasById[e]=this.contributionSchemas[e],this.registeredSchemasIds[e]=!0;for(var t=0,n=this.contributionAssociations;t<n.length;t++){var r=n[t];this.filePatternAssociations.push(r)}},e.prototype.getResolvedSchema=function(e){var t=ft(e),n=this.schemasById[t];return n?n.getResolvedSchema():this.promise.resolve(void 0)},e.prototype.loadSchema=function(e){if(!this.requestService){var t=it("json.schema.norequestservice","Unable to load schema from '{0}'. No schema request service available",lt(e));return this.promise.resolve(new st({},[t]))}return this.requestService(e).then((function(t){if(!t){var n=it("json.schema.nocontent","Unable to load schema from '{0}': No content.",lt(e));return new st({},[n])}var r,i=[];r=L(t,i);var o=i.length?[it("json.schema.invalidFormat","Unable to parse content from '{0}': Parse error at offset {1}.",lt(e),i[0].offset)]:[];return new st(r,o)}),(function(t){var n=t.toString(),r=t.toString().split("Error: ");return r.length>1&&(n=r[1]),Ze(n,".")&&(n=n.substr(0,n.length-1)),new st({},[it("json.schema.nocontent","Unable to load schema from '{0}': {1}.",lt(e),n)])}))},e.prototype.resolveSchemaContent=function(e,t,n){var r=this,i=e.errors.slice(0),o=e.schema;if(o.$schema){var a=ft(o.$schema);if("http://json-schema.org/draft-03/schema"===a)return this.promise.resolve(new ut({},[it("json.schema.draft03.notsupported","Draft-03 schemas are not supported.")]));"https://json-schema.org/draft/2019-09/schema"===a&&i.push(it("json.schema.draft201909.notsupported","Draft 2019-09 schemas are not yet fully supported."))}var s=this.contextService,u=function(e,t,n,r){var o=r?decodeURIComponent(r):void 0,a=function(e,t){if(!t)return e;var n=e;return"/"===t[0]&&(t=t.substr(1)),t.split("/").some((function(e){return!(n=n[e])})),n}(t,o);if(a)for(var s in a)a.hasOwnProperty(s)&&!e.hasOwnProperty(s)&&(e[s]=a[s]);else i.push(it("json.schema.invalidref","$ref '{0}' in '{1}' can not be resolved.",o,n))},c=function(e,t,n,o,a){s&&!/^\w+:\/\/.*/.test(t)&&(t=s.resolveRelativePath(t,o)),t=ft(t);var c=r.getOrAddSchemaHandle(t);return c.getUnresolvedSchema().then((function(r){if(a[t]=!0,r.errors.length){var o=n?t+"#"+n:t;i.push(it("json.schema.problemloadingref","Problems loading reference '{0}': {1}",o,r.errors[0]))}return u(e,r.schema,t,n),f(e,r.schema,t,c.dependencies)}))},f=function(e,t,n,i){if(!e||"object"!==typeof e)return Promise.resolve(null);for(var o=[e],a=[],s=[],f=function(e){for(var r=[];e.$ref;){var a=e.$ref,f=a.split("#",2);if(delete e.$ref,f[0].length>0)return void s.push(c(e,f[0],f[1],n,i));-1===r.indexOf(a)&&(u(e,t,n,f[1]),r.push(a))}!function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,r=e;n<r.length;n++){var i=r[n];"object"===typeof i&&o.push(i)}}(e.items,e.additionalItems,e.additionalProperties,e.not,e.contains,e.propertyNames,e.if,e.then,e.else),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,r=e;n<r.length;n++){var i=r[n];if("object"===typeof i)for(var a in i){var s=i[a];"object"===typeof s&&o.push(s)}}}(e.definitions,e.properties,e.patternProperties,e.dependencies),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,r=e;n<r.length;n++){var i=r[n];if(Array.isArray(i))for(var a=0,s=i;a<s.length;a++){var u=s[a];"object"===typeof u&&o.push(u)}}}(e.anyOf,e.allOf,e.oneOf,e.items)};o.length;){var l=o.pop();a.indexOf(l)>=0||(a.push(l),f(l))}return r.promise.all(s)};return f(o,o,t,n).then((function(e){return new ut(o,i)}))},e.prototype.getSchemaForResource=function(e,t){if(t&&t.root&&"object"===t.root.type){var n=t.root.properties.filter((function(e){return"$schema"===e.keyNode.value&&e.valueNode&&"string"===e.valueNode.type}));if(n.length>0){var r=n[0].valueNode;if(r&&"string"===r.type){var i=Je(r);if(i&&function(e,t){if(e.length<t.length)return!1;for(var n=0;n<t.length;n++)if(e[n]!==t[n])return!1;return!0}(i,".")&&this.contextService&&(i=this.contextService.resolveRelativePath(i,e)),i){var o=ft(i);return this.getOrAddSchemaHandle(o).getResolvedSchema()}}}}if(this.cachedSchemaForResource&&this.cachedSchemaForResource.resource===e)return this.cachedSchemaForResource.resolvedSchema;for(var a=Object.create(null),s=[],u=function(e){try{return rt.parse(e).with({fragment:null,query:null}).toString()}catch(t){return e}}(e),c=0,f=this.filePatternAssociations;c<f.length;c++){var l=f[c];if(l.matchesPattern(u))for(var h=0,p=l.getURIs();h<p.length;h++){var d=p[h];a[d]||(s.push(d),a[d]=!0)}}var m=s.length>0?this.createCombinedSchema(e,s).getResolvedSchema():this.promise.resolve(void 0);return this.cachedSchemaForResource={resource:e,resolvedSchema:m},m},e.prototype.createCombinedSchema=function(e,t){if(1===t.length)return this.getOrAddSchemaHandle(t[0]);var n="schemaservice://combinedSchema/"+encodeURIComponent(e),r={allOf:t.map((function(e){return{$ref:e}}))};return this.addSchemaHandle(n,r)},e.prototype.getMatchingSchemas=function(e,t,n){if(n){var r=n.id||"schemaservice://untitled/matchingSchemas/"+ct++;return this.resolveSchemaContent(new st(n),r,{}).then((function(e){return t.getMatchingSchemas(e.schema).filter((function(e){return!e.inverted}))}))}return this.getSchemaForResource(e.uri,t).then((function(e){return e?t.getMatchingSchemas(e.schema).filter((function(e){return!e.inverted})):[]}))}}(),0);function ft(e){try{return rt.parse(e).toString()}catch(t){return e}}function lt(e){try{var t=rt.parse(e);if("file"===t.scheme)return t.fsPath}catch(n){}return e}var ht=Fe(),pt=(function(){function e(e,t){this.jsonSchemaService=e,this.promise=t,this.validationEnabled=!0}e.prototype.configure=function(e){e&&(this.validationEnabled=!1!==e.validate,this.commentSeverity=e.allowComments?void 0:S.Error)},e.prototype.doValidation=function(e,t,n,r){var i=this;if(!this.validationEnabled)return this.promise.resolve([]);var o=[],a={},s=function(e){var t=e.range.start.line+" "+e.range.start.character+" "+e.message;a[t]||(a[t]=!0,o.push(e))},u=function(r){var a=n?gt(n.trailingCommas):S.Error,u=n?gt(n.comments):i.commentSeverity,c=(null===n||void 0===n?void 0:n.schemaValidation)?gt(n.schemaValidation):S.Warning,f=(null===n||void 0===n?void 0:n.schemaRequest)?gt(n.schemaRequest):S.Warning;if(r){if(r.errors.length&&t.root&&f){var l=t.root,h="object"===l.type?l.properties[0]:void 0;if(h&&"$schema"===h.keyNode.value){var p=h.valueNode||h,m=d.create(e.positionAt(p.offset),e.positionAt(p.offset+p.length));s(I.create(m,r.errors[0],f,Ee.SchemaResolveError))}else{m=d.create(e.positionAt(l.offset),e.positionAt(l.offset+1));s(I.create(m,r.errors[0],f,Ee.SchemaResolveError))}}else if(c){var g=t.validate(e,r.schema,c);g&&g.forEach(s)}dt(r.schema)&&(u=void 0),mt(r.schema)&&(a=void 0)}for(var v=0,y=t.syntaxErrors;v<y.length;v++){var b=y[v];if(b.code===Ee.TrailingComma){if("number"!==typeof a)continue;b.severity=a}s(b)}if("number"===typeof u){var x=ht("InvalidCommentToken","Comments are not permitted in JSON.");t.comments.forEach((function(e){s(I.create(e,x,u,Ee.CommentNotPermitted))}))}return o};if(r){var c=r.id||"schemaservice://untitled/"+pt++;return this.jsonSchemaService.resolveSchemaContent(new st(r),c,{}).then((function(e){return u(e)}))}return this.jsonSchemaService.getSchemaForResource(e.uri,t).then((function(e){return u(e)}))}}(),0);function dt(e){if(e&&"object"===typeof e){if(K(e.allowComments))return e.allowComments;if(e.allOf)for(var t=0,n=e.allOf;t<n.length;t++){var r=dt(n[t]);if(K(r))return r}}}function mt(e){if(e&&"object"===typeof e){if(K(e.allowTrailingCommas))return e.allowTrailingCommas;var t=e;if(K(t.allowsTrailingCommas))return t.allowsTrailingCommas;if(e.allOf)for(var n=0,r=e.allOf;n<r.length;n++){var i=mt(r[n]);if(K(i))return i}}}function gt(e){switch(e){case"error":return S.Error;case"warning":return S.Warning;case"ignore":return}}var vt=48,yt=57,bt=65,xt=97,At=102;function Ct(e){return e<vt?0:e<=yt?e-vt:(e<xt&&(e+=xt-bt),e>=xt&&e<=At?e-xt+10:0)}function St(e){if("#"===e[0])switch(e.length){case 4:return{red:17*Ct(e.charCodeAt(1))/255,green:17*Ct(e.charCodeAt(2))/255,blue:17*Ct(e.charCodeAt(3))/255,alpha:1};case 5:return{red:17*Ct(e.charCodeAt(1))/255,green:17*Ct(e.charCodeAt(2))/255,blue:17*Ct(e.charCodeAt(3))/255,alpha:17*Ct(e.charCodeAt(4))/255};case 7:return{red:(16*Ct(e.charCodeAt(1))+Ct(e.charCodeAt(2)))/255,green:(16*Ct(e.charCodeAt(3))+Ct(e.charCodeAt(4)))/255,blue:(16*Ct(e.charCodeAt(5))+Ct(e.charCodeAt(6)))/255,alpha:1};case 9:return{red:(16*Ct(e.charCodeAt(1))+Ct(e.charCodeAt(2)))/255,green:(16*Ct(e.charCodeAt(3))+Ct(e.charCodeAt(4)))/255,blue:(16*Ct(e.charCodeAt(5))+Ct(e.charCodeAt(6)))/255,alpha:(16*Ct(e.charCodeAt(7))+Ct(e.charCodeAt(8)))/255}}}!function(){function e(e){this.schemaService=e}e.prototype.findDocumentSymbols=function(e,t,n){var r=this;void 0===n&&(n={resultLimit:Number.MAX_VALUE});var i=t.root;if(!i)return[];var o=n.resultLimit||Number.MAX_VALUE,a=e.uri;if(("vscode://defaultsettings/keybindings.json"===a||Ze(a.toLowerCase(),"/user/keybindings.json"))&&"array"===i.type){for(var s=[],u=0,c=i.items;u<c.length;u++){var f=c[u];if("object"===f.type)for(var l=0,h=f.properties;l<h.length;l++){var p=h[l];if("key"===p.keyNode.value&&p.valueNode){var d=m.create(e.uri,kt(e,f));if(s.push({name:Je(p.valueNode),kind:le.Function,location:d}),--o<=0)return n&&n.onResultLimitExceeded&&n.onResultLimitExceeded(a),s}}}return s}for(var g=[{node:i,containerName:""}],v=0,y=!1,b=[],x=function(t,n){"array"===t.type?t.items.forEach((function(e){e&&g.push({node:e,containerName:n})})):"object"===t.type&&t.properties.forEach((function(t){var i=t.valueNode;if(i)if(o>0){o--;var a=m.create(e.uri,kt(e,t)),s=n?n+"."+t.keyNode.value:t.keyNode.value;b.push({name:r.getKeyLabel(t),kind:r.getSymbolKind(i.type),location:a,containerName:n}),g.push({node:i,containerName:s})}else y=!0}))};v<g.length;){var A=g[v++];x(A.node,A.containerName)}return y&&n&&n.onResultLimitExceeded&&n.onResultLimitExceeded(a),b},e.prototype.findDocumentSymbols2=function(e,t,n){var r=this;void 0===n&&(n={resultLimit:Number.MAX_VALUE});var i=t.root;if(!i)return[];var o=n.resultLimit||Number.MAX_VALUE,a=e.uri;if(("vscode://defaultsettings/keybindings.json"===a||Ze(a.toLowerCase(),"/user/keybindings.json"))&&"array"===i.type){for(var s=[],u=0,c=i.items;u<c.length;u++){var f=c[u];if("object"===f.type)for(var l=0,h=f.properties;l<h.length;l++){var p=h[l];if("key"===p.keyNode.value&&p.valueNode){var d=kt(e,f),m=kt(e,p.keyNode);if(s.push({name:Je(p.valueNode),kind:le.Function,range:d,selectionRange:m}),--o<=0)return n&&n.onResultLimitExceeded&&n.onResultLimitExceeded(a),s}}}return s}for(var g=[],v=[{node:i,result:g}],y=0,b=!1,x=function(t,n){"array"===t.type?t.items.forEach((function(t,i){if(t)if(o>0){o--;var a=kt(e,t),s=a,u={name:String(i),kind:r.getSymbolKind(t.type),range:a,selectionRange:s,children:[]};n.push(u),v.push({result:u.children,node:t})}else b=!0})):"object"===t.type&&t.properties.forEach((function(t){var i=t.valueNode;if(i)if(o>0){o--;var a=kt(e,t),s=kt(e,t.keyNode),u=[],c={name:r.getKeyLabel(t),kind:r.getSymbolKind(i.type),range:a,selectionRange:s,children:u,detail:r.getDetail(i)};n.push(c),v.push({result:u,node:i})}else b=!0}))};y<v.length;){var A=v[y++];x(A.node,A.result)}return b&&n&&n.onResultLimitExceeded&&n.onResultLimitExceeded(a),g},e.prototype.getSymbolKind=function(e){switch(e){case"object":return le.Module;case"string":return le.String;case"number":return le.Number;case"array":return le.Array;case"boolean":return le.Boolean;default:return le.Variable}},e.prototype.getKeyLabel=function(e){var t=e.keyNode.value;return t&&(t=t.replace(/[\n]/g,"\u21b5")),t&&t.trim()?t:'"'+t+'"'},e.prototype.getDetail=function(e){if(e)return"boolean"===e.type||"number"===e.type||"null"===e.type||"string"===e.type?String(e.value):"array"===e.type?e.children.length?void 0:"[]":"object"===e.type?e.children.length?void 0:"{}":void 0},e.prototype.findDocumentColors=function(e,t,n){return this.schemaService.getSchemaForResource(e.uri,t).then((function(r){var i=[];if(r)for(var o=n&&"number"===typeof n.resultLimit?n.resultLimit:Number.MAX_VALUE,a={},s=0,u=t.getMatchingSchemas(r.schema);s<u.length;s++){var c=u[s];if(!c.inverted&&c.schema&&("color"===c.schema.format||"color-hex"===c.schema.format)&&c.node&&"string"===c.node.type){var f=String(c.node.offset);if(!a[f]){var l=St(Je(c.node));if(l){var h=kt(e,c.node);i.push({color:l,range:h})}if(a[f]=!0,--o<=0)return n&&n.onResultLimitExceeded&&n.onResultLimitExceeded(e.uri),i}}}return i}))},e.prototype.getColorPresentations=function(e,t,n,r){var i,o=[],a=Math.round(255*n.red),s=Math.round(255*n.green),u=Math.round(255*n.blue);function c(e){var t=e.toString(16);return 2!==t.length?"0"+t:t}return i=1===n.alpha?"#"+c(a)+c(s)+c(u):"#"+c(a)+c(s)+c(u)+c(Math.round(255*n.alpha)),o.push({label:i,textEdit:E.replace(r,JSON.stringify(i))}),o}}();function kt(e,t){return d.create(e.positionAt(t.offset),e.positionAt(t.offset+t.length))}var wt=Fe(),It={schemaAssociations:[],schemas:{"http://json-schema.org/schema#":{$ref:"http://json-schema.org/draft-07/schema#"},"http://json-schema.org/draft-04/schema#":{title:wt("schema.json","Describes a JSON file using a schema. See json-schema.org for more info."),$schema:"http://json-schema.org/draft-04/schema#",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{default:0}]},simpleTypes:{type:"string",enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},default:{},multipleOf:{type:"number",minimum:0,exclusiveMinimum:!0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean",default:!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean",default:!1},maxLength:{allOf:[{$ref:"#/definitions/positiveInteger"}]},minLength:{allOf:[{$ref:"#/definitions/positiveIntegerDefault0"}]},pattern:{type:"string",format:"regex"},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"}],default:{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:{}},maxItems:{allOf:[{$ref:"#/definitions/positiveInteger"}]},minItems:{allOf:[{$ref:"#/definitions/positiveIntegerDefault0"}]},uniqueItems:{type:"boolean",default:!1},maxProperties:{allOf:[{$ref:"#/definitions/positiveInteger"}]},minProperties:{allOf:[{$ref:"#/definitions/positiveIntegerDefault0"}]},required:{allOf:[{$ref:"#/definitions/stringArray"}]},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"}],default:{}},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},enum:{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{anyOf:[{type:"string",enum:["date-time","uri","email","hostname","ipv4","ipv6","regex"]},{type:"string"}]},allOf:{allOf:[{$ref:"#/definitions/schemaArray"}]},anyOf:{allOf:[{$ref:"#/definitions/schemaArray"}]},oneOf:{allOf:[{$ref:"#/definitions/schemaArray"}]},not:{allOf:[{$ref:"#"}]}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"]},default:{}},"http://json-schema.org/draft-07/schema#":{title:wt("schema.json","Describes a JSON file using a schema. See json-schema.org for more info."),definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}}},jt={id:wt("schema.json.id","A unique identifier for the schema."),$schema:wt("schema.json.$schema","The schema to verify this document against."),title:wt("schema.json.title","A descriptive title of the element."),description:wt("schema.json.description","A long description of the element. Used in hover menus and suggestions."),default:wt("schema.json.default","A default value. Used by suggestions."),multipleOf:wt("schema.json.multipleOf","A number that should cleanly divide the current value (i.e. have no remainder)."),maximum:wt("schema.json.maximum","The maximum numerical value, inclusive by default."),exclusiveMaximum:wt("schema.json.exclusiveMaximum","Makes the maximum property exclusive."),minimum:wt("schema.json.minimum","The minimum numerical value, inclusive by default."),exclusiveMinimum:wt("schema.json.exclusiveMininum","Makes the minimum property exclusive."),maxLength:wt("schema.json.maxLength","The maximum length of a string."),minLength:wt("schema.json.minLength","The minimum length of a string."),pattern:wt("schema.json.pattern","A regular expression to match the string against. It is not implicitly anchored."),additionalItems:wt("schema.json.additionalItems","For arrays, only when items is set as an array. If it is a schema, then this schema validates items after the ones specified by the items array. If it is false, then additional items will cause validation to fail."),items:wt("schema.json.items","For arrays. Can either be a schema to validate every element against or an array of schemas to validate each item against in order (the first schema will validate the first element, the second schema will validate the second element, and so on."),maxItems:wt("schema.json.maxItems","The maximum number of items that can be inside an array. Inclusive."),minItems:wt("schema.json.minItems","The minimum number of items that can be inside an array. Inclusive."),uniqueItems:wt("schema.json.uniqueItems","If all of the items in the array must be unique. Defaults to false."),maxProperties:wt("schema.json.maxProperties","The maximum number of properties an object can have. Inclusive."),minProperties:wt("schema.json.minProperties","The minimum number of properties an object can have. Inclusive."),required:wt("schema.json.required","An array of strings that lists the names of all properties required on this object."),additionalProperties:wt("schema.json.additionalProperties","Either a schema or a boolean. If a schema, then used to validate all properties not matched by 'properties' or 'patternProperties'. If false, then any properties not matched by either will cause this schema to fail."),definitions:wt("schema.json.definitions","Not used for validation. Place subschemas here that you wish to reference inline with $ref."),properties:wt("schema.json.properties","A map of property names to schemas for each property."),patternProperties:wt("schema.json.patternProperties","A map of regular expressions on property names to schemas for matching properties."),dependencies:wt("schema.json.dependencies","A map of property names to either an array of property names or a schema. An array of property names means the property named in the key depends on the properties in the array being present in the object in order to be valid. If the value is a schema, then the schema is only applied to the object if the property in the key exists on the object."),enum:wt("schema.json.enum","The set of literal values that are valid."),type:wt("schema.json.type","Either a string of one of the basic schema types (number, integer, null, array, object, boolean, string) or an array of strings specifying a subset of those types."),format:wt("schema.json.format","Describes the format expected for the value."),allOf:wt("schema.json.allOf","An array of schemas, all of which must match."),anyOf:wt("schema.json.anyOf","An array of schemas, where at least one must match."),oneOf:wt("schema.json.oneOf","An array of schemas, exactly one of which must match."),not:wt("schema.json.not","A schema which must not match."),$id:wt("schema.json.$id","A unique identifier for the schema."),$ref:wt("schema.json.$ref","Reference a definition hosted on any location."),$comment:wt("schema.json.$comment","Comments from schema authors to readers or maintainers of the schema."),readOnly:wt("schema.json.readOnly","Indicates that the value of the instance is managed exclusively by the owning authority."),examples:wt("schema.json.examples","Sample JSON values associated with a particular schema, for the purpose of illustrating usage."),contains:wt("schema.json.contains",'An array instance is valid against "contains" if at least one of its elements is valid against the given schema.'),propertyNames:wt("schema.json.propertyNames","If the instance is an object, this keyword validates if every property name in the instance validates against the provided schema."),const:wt("schema.json.const","An instance validates successfully against this keyword if its value is equal to the value of the keyword."),contentMediaType:wt("schema.json.contentMediaType","Describes the media type of a string property."),contentEncoding:wt("schema.json.contentEncoding","Describes the content encoding of a string property."),if:wt("schema.json.if",'The validation outcome of the "if" subschema controls which of the "then" or "else" keywords are evaluated.'),then:wt("schema.json.then",'The "if" subschema is used for validation when the "if" subschema succeeds.'),else:wt("schema.json.else",'The "else" subschema is used for validation when the "if" subschema fails.')};for(var Et in It.schemas){var Tt=It.schemas[Et];for(var Ot in Tt.properties){var _t=Tt.properties[Ot];"boolean"===typeof _t&&(_t=Tt.properties[Ot]={});var Mt=jt[Ot];Mt?_t.description=Mt:console.log(Ot+": localize('schema.json."+Ot+'\', "")')}}var Pt=function(){function e(e,t,n){var r=this;this._languageId=e,this._worker=t,this._disposables=[],this._listener=Object.create(null);var o=function(e){var t,n=e.getModeId();n===r._languageId&&(r._listener[e.uri.toString()]=e.onDidChangeContent((function(){clearTimeout(t),t=setTimeout((function(){return r._doValidate(e.uri,n)}),500)})),r._doValidate(e.uri,n))},a=function(e){i.j6.setModelMarkers(e,r._languageId,[]);var t=e.uri.toString(),n=r._listener[t];n&&(n.dispose(),delete r._listener[t])};this._disposables.push(i.j6.onDidCreateModel(o)),this._disposables.push(i.j6.onWillDisposeModel((function(e){a(e),r._resetSchema(e.uri)}))),this._disposables.push(i.j6.onDidChangeModelLanguage((function(e){a(e.model),o(e.model),r._resetSchema(e.model.uri)}))),this._disposables.push(n.onDidChange((function(e){i.j6.getModels().forEach((function(e){e.getModeId()===r._languageId&&(a(e),o(e))}))}))),this._disposables.push({dispose:function(){for(var e in i.j6.getModels().forEach(a),r._listener)r._listener[e].dispose()}}),i.j6.getModels().forEach(o)}return e.prototype.dispose=function(){this._disposables.forEach((function(e){return e&&e.dispose()})),this._disposables=[]},e.prototype._resetSchema=function(e){this._worker().then((function(t){t.resetSchema(e.toString())}))},e.prototype._doValidate=function(e,t){this._worker(e).then((function(n){return n.doValidation(e.toString()).then((function(n){var r=n.map((function(e){return function(e,t){var n="number"===typeof t.code?String(t.code):t.code;return{severity:Vt(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:n,source:t.source}}(0,e)})),o=i.j6.getModel(e);o&&o.getModeId()===t&&i.j6.setModelMarkers(o,t,r)}))})).then(void 0,(function(e){console.error(e)}))},e}();function Vt(e){switch(e){case S.Error:return i.ZL.Error;case S.Warning:return i.ZL.Warning;case S.Information:return i.ZL.Info;case S.Hint:return i.ZL.Hint;default:return i.ZL.Info}}function Nt(e){if(e)return{character:e.column-1,line:e.lineNumber-1}}function Ft(e){if(e)return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}function Rt(e){if(e)return new i.e6(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function Lt(e){var t=i.Mj.CompletionItemKind;switch(e){case Q.Text:return t.Text;case Q.Method:return t.Method;case Q.Function:return t.Function;case Q.Constructor:return t.Constructor;case Q.Field:return t.Field;case Q.Variable:return t.Variable;case Q.Class:return t.Class;case Q.Interface:return t.Interface;case Q.Module:return t.Module;case Q.Property:return t.Property;case Q.Unit:return t.Unit;case Q.Value:return t.Value;case Q.Enum:return t.Enum;case Q.Keyword:return t.Keyword;case Q.Snippet:return t.Snippet;case Q.Color:return t.Color;case Q.File:return t.File;case Q.Reference:return t.Reference}return t.Property}function $t(e){if(e)return{range:Rt(e.range),text:e.newText}}var Dt=function(){function e(e){this._worker=e}return Object.defineProperty(e.prototype,"triggerCharacters",{get:function(){return[" ",":"]},enumerable:!1,configurable:!0}),e.prototype.provideCompletionItems=function(e,t,n,r){var o=e.uri;return this._worker(o).then((function(e){return e.doComplete(o.toString(),Nt(t))})).then((function(n){if(n){var r=e.getWordUntilPosition(t),o=new i.e6(t.lineNumber,r.startColumn,t.lineNumber,r.endColumn),a=n.items.map((function(e){var t={label:e.label,insertText:e.insertText||e.label,sortText:e.sortText,filterText:e.filterText,documentation:e.documentation,detail:e.detail,range:o,kind:Lt(e.kind)};return e.textEdit&&(!function(e){return"undefined"!==typeof e.insert&&"undefined"!==typeof e.replace}(e.textEdit)?t.range=Rt(e.textEdit.range):t.range={insert:Rt(e.textEdit.insert),replace:Rt(e.textEdit.replace)},t.insertText=e.textEdit.newText),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map($t)),e.insertTextFormat===Y.Snippet&&(t.insertTextRules=i.Mj.CompletionItemInsertTextRule.InsertAsSnippet),t}));return{isIncomplete:n.isIncomplete,suggestions:a}}}))},e}();function Ut(e){return"string"===typeof e?{value:e}:(t=e)&&"object"===typeof t&&"string"===typeof t.kind?"plaintext"===e.kind?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:e.value}:{value:"```"+e.language+"\n"+e.value+"\n```\n"};var t}function Wt(e){if(e)return Array.isArray(e)?e.map(Ut):[Ut(e)]}var qt=function(){function e(e){this._worker=e}return e.prototype.provideHover=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.doHover(r.toString(),Nt(t))})).then((function(e){if(e)return{range:Rt(e.range),contents:Wt(e.contents)}}))},e}();function Bt(e){var t=i.Mj.SymbolKind;switch(e){case le.File:return t.Array;case le.Module:return t.Module;case le.Namespace:return t.Namespace;case le.Package:return t.Package;case le.Class:return t.Class;case le.Method:return t.Method;case le.Property:return t.Property;case le.Field:return t.Field;case le.Constructor:return t.Constructor;case le.Enum:return t.Enum;case le.Interface:return t.Interface;case le.Function:return t.Function;case le.Variable:return t.Variable;case le.Constant:return t.Constant;case le.String:return t.String;case le.Number:return t.Number;case le.Boolean:return t.Boolean;case le.Array:return t.Array}return t.Function}var Kt=function(){function e(e){this._worker=e}return e.prototype.provideDocumentSymbols=function(e,t){var n=e.uri;return this._worker(n).then((function(e){return e.findDocumentSymbols(n.toString())})).then((function(e){if(e)return e.map((function(e){return{name:e.name,detail:"",containerName:e.containerName,kind:Bt(e.kind),range:Rt(e.location.range),selectionRange:Rt(e.location.range),tags:[]}}))}))},e}();function Jt(e){return{tabSize:e.tabSize,insertSpaces:e.insertSpaces}}var zt=function(){function e(e){this._worker=e}return e.prototype.provideDocumentFormattingEdits=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.format(r.toString(),null,Jt(t)).then((function(e){if(e&&0!==e.length)return e.map($t)}))}))},e}(),Ht=function(){function e(e){this._worker=e}return e.prototype.provideDocumentRangeFormattingEdits=function(e,t,n,r){var i=e.uri;return this._worker(i).then((function(e){return e.format(i.toString(),Ft(t),Jt(n)).then((function(e){if(e&&0!==e.length)return e.map($t)}))}))},e}(),Gt=function(){function e(e){this._worker=e}return e.prototype.provideDocumentColors=function(e,t){var n=e.uri;return this._worker(n).then((function(e){return e.findDocumentColors(n.toString())})).then((function(e){if(e)return e.map((function(e){return{color:e.color,range:Rt(e.range)}}))}))},e.prototype.provideColorPresentations=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.getColorPresentations(r.toString(),t.color,Ft(t.range))})).then((function(e){if(e)return e.map((function(e){var t={label:e.label};return e.textEdit&&(t.textEdit=$t(e.textEdit)),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map($t)),t}))}))},e}(),Xt=function(){function e(e){this._worker=e}return e.prototype.provideFoldingRanges=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.getFoldingRanges(r.toString(),t)})).then((function(e){if(e)return e.map((function(e){var t={start:e.startLine+1,end:e.endLine+1};return"undefined"!==typeof e.kind&&(t.kind=function(e){switch(e){case x.Comment:return i.Mj.FoldingRangeKind.Comment;case x.Imports:return i.Mj.FoldingRangeKind.Imports;case x.Region:return i.Mj.FoldingRangeKind.Region}return}(e.kind)),t}))}))},e}();var Zt=function(){function e(e){this._worker=e}return e.prototype.provideSelectionRanges=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.getSelectionRanges(r.toString(),t.map(Nt))})).then((function(e){if(e)return e.map((function(e){for(var t=[];e;)t.push({range:Rt(e.range)}),e=e.parent;return t}))}))},e}();function Qt(e){return{getInitialState:function(){return new hn(null,null,!1,null)},tokenize:function(t,n,r,i){return function(e,t,n,r,i){void 0===r&&(r=0);var o=0,a=!1;switch(n.scanError){case 2:t='"'+t,o=1;break;case 1:t="/*"+t,o=2}var s=R(t),u=n.lastWasColon,c=n.parents,f={tokens:[],endState:n.clone()};for(;;){var l=r+s.getPosition(),h="",p=s.scan();if(17===p)break;if(l===r+s.getPosition())throw new Error("Scanner did not advance, next 3 characters are: "+t.substr(s.getPosition(),3));switch(a&&(l-=o),a=o>0,p){case 1:c=ln.push(c,0),h=Yt,u=!1;break;case 2:c=ln.pop(c),h=Yt,u=!1;break;case 3:c=ln.push(c,1),h=en,u=!1;break;case 4:c=ln.pop(c),h=en,u=!1;break;case 6:h=tn,u=!0;break;case 5:h=nn,u=!1;break;case 8:case 9:h=rn,u=!1;break;case 7:h=on,u=!1;break;case 10:var d=c?c.type:0;h=u||1===d?an:un,u=!1;break;case 11:h=sn,u=!1}if(e)switch(p){case 12:h=fn;break;case 13:h=cn}f.endState=new hn(n.getStateData(),s.getTokenError(),u,c),f.tokens.push({startIndex:l,scopes:h})}return f}(e,t,n,r)}}}var Yt="delimiter.bracket.json",en="delimiter.array.json",tn="delimiter.colon.json",nn="delimiter.comma.json",rn="keyword.json",on="keyword.json",an="string.value.json",sn="number.json",un="string.key.json",cn="comment.block.json",fn="comment.line.json",ln=function(){function e(e,t){this.parent=e,this.type=t}return e.pop=function(e){return e?e.parent:null},e.push=function(t,n){return new e(t,n)},e.equals=function(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;for(;e&&t;){if(e===t)return!0;if(e.type!==t.type)return!1;e=e.parent,t=t.parent}return!0},e}(),hn=function(){function e(e,t,n,r){this._state=e,this.scanError=t,this.lastWasColon=n,this.parents=r}return e.prototype.clone=function(){return new e(this._state,this.scanError,this.lastWasColon,this.parents)},e.prototype.equals=function(t){return t===this||!!(t&&t instanceof e)&&(this.scanError===t.scanError&&this.lastWasColon===t.lastWasColon&&ln.equals(this.parents,t.parents))},e.prototype.getStateData=function(){return this._state},e.prototype.setStateData=function(e){this._state=e},e}();function pn(e){var t=[],n=[],r=new o(e);t.push(r);var a=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return r.getLanguageServiceWorker.apply(r,e)};function s(){var t=e.languageId,r=e.modeConfiguration;mn(n),r.documentFormattingEdits&&n.push(i.Mj.registerDocumentFormattingEditProvider(t,new zt(a))),r.documentRangeFormattingEdits&&n.push(i.Mj.registerDocumentRangeFormattingEditProvider(t,new Ht(a))),r.completionItems&&n.push(i.Mj.registerCompletionItemProvider(t,new Dt(a))),r.hovers&&n.push(i.Mj.registerHoverProvider(t,new qt(a))),r.documentSymbols&&n.push(i.Mj.registerDocumentSymbolProvider(t,new Kt(a))),r.tokens&&n.push(i.Mj.setTokensProvider(t,Qt(!0))),r.colors&&n.push(i.Mj.registerColorProvider(t,new Gt(a))),r.foldingRanges&&n.push(i.Mj.registerFoldingRangeProvider(t,new Xt(a))),r.diagnostics&&n.push(new Pt(t,a,e)),r.selectionRanges&&n.push(i.Mj.registerSelectionRangeProvider(t,new Zt(a)))}s(),t.push(i.Mj.setLanguageConfiguration(e.languageId,gn));var u=e.modeConfiguration;return e.onDidChange((function(e){e.modeConfiguration!==u&&(u=e.modeConfiguration,s())})),t.push(dn(n)),dn(t)}function dn(e){return{dispose:function(){return mn(e)}}}function mn(e){for(;e.length;)e.pop().dispose()}var gn={wordPattern:/(-?\d*\.\d\w*)|([^\[\{\]\}\:\"\,\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string"]},{open:"[",close:"]",notIn:["string"]},{open:'"',close:'"',notIn:["string"]}]}}}]); -//# sourceMappingURL=4952.58b99bba.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4964.c7c75eb0.chunk.js b/ydb/core/viewer/monitoring/static/js/4964.c7c75eb0.chunk.js new file mode 100644 index 000000000000..26530f15a715 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4964.c7c75eb0.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4964],{14964:function(e,a,d){e.exports=function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=a(e),_={name:"nl-be",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),weekStart:1,weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"}};return d.default.locale(_,null,!0),_}(d(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/4985.991de003.chunk.js b/ydb/core/viewer/monitoring/static/js/4985.991de003.chunk.js new file mode 100644 index 000000000000..009e563d9b46 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/4985.991de003.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[4985],{34985:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"kk",weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekStart:1,relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5012.3afcd232.chunk.js b/ydb/core/viewer/monitoring/static/js/5012.3afcd232.chunk.js deleted file mode 100644 index cd88813b0fb5..000000000000 --- a/ydb/core/viewer/monitoring/static/js/5012.3afcd232.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5012],{5012:function(E,T,R){R.r(T),R.d(T,{conf:function(){return A},language:function(){return I}});var A={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},I={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["ABORT_AFTER_WAIT","ABSENT","ABSOLUTE","ACCENT_SENSITIVITY","ACTION","ACTIVATION","ACTIVE","ADD","ADDRESS","ADMIN","AES","AES_128","AES_192","AES_256","AFFINITY","AFTER","AGGREGATE","ALGORITHM","ALL_CONSTRAINTS","ALL_ERRORMSGS","ALL_INDEXES","ALL_LEVELS","ALL_SPARSE_COLUMNS","ALLOW_CONNECTIONS","ALLOW_MULTIPLE_EVENT_LOSS","ALLOW_PAGE_LOCKS","ALLOW_ROW_LOCKS","ALLOW_SINGLE_EVENT_LOSS","ALLOW_SNAPSHOT_ISOLATION","ALLOWED","ALTER","ANONYMOUS","ANSI_DEFAULTS","ANSI_NULL_DEFAULT","ANSI_NULL_DFLT_OFF","ANSI_NULL_DFLT_ON","ANSI_NULLS","ANSI_PADDING","ANSI_WARNINGS","APPEND","APPLICATION","APPLICATION_LOG","ARITHABORT","ARITHIGNORE","AS","ASC","ASSEMBLY","ASYMMETRIC","ASYNCHRONOUS_COMMIT","AT","ATOMIC","ATTACH","ATTACH_REBUILD_LOG","AUDIT","AUDIT_GUID","AUTHENTICATION","AUTHORIZATION","AUTO","AUTO_CLEANUP","AUTO_CLOSE","AUTO_CREATE_STATISTICS","AUTO_SHRINK","AUTO_UPDATE_STATISTICS","AUTO_UPDATE_STATISTICS_ASYNC","AUTOMATED_BACKUP_PREFERENCE","AUTOMATIC","AVAILABILITY","AVAILABILITY_MODE","BACKUP","BACKUP_PRIORITY","BASE64","BATCHSIZE","BEGIN","BEGIN_DIALOG","BIGINT","BINARY","BINDING","BIT","BLOCKERS","BLOCKSIZE","BOUNDING_BOX","BREAK","BROKER","BROKER_INSTANCE","BROWSE","BUCKET_COUNT","BUFFER","BUFFERCOUNT","BULK","BULK_LOGGED","BY","CACHE","CALL","CALLED","CALLER","CAP_CPU_PERCENT","CASCADE","CASE","CATALOG","CATCH","CELLS_PER_OBJECT","CERTIFICATE","CHANGE_RETENTION","CHANGE_TRACKING","CHANGES","CHAR","CHARACTER","CHECK","CHECK_CONSTRAINTS","CHECK_EXPIRATION","CHECK_POLICY","CHECKALLOC","CHECKCATALOG","CHECKCONSTRAINTS","CHECKDB","CHECKFILEGROUP","CHECKIDENT","CHECKPOINT","CHECKTABLE","CLASSIFIER_FUNCTION","CLEANTABLE","CLEANUP","CLEAR","CLOSE","CLUSTER","CLUSTERED","CODEPAGE","COLLATE","COLLECTION","COLUMN","COLUMN_SET","COLUMNS","COLUMNSTORE","COLUMNSTORE_ARCHIVE","COMMIT","COMMITTED","COMPATIBILITY_LEVEL","COMPRESSION","COMPUTE","CONCAT","CONCAT_NULL_YIELDS_NULL","CONFIGURATION","CONNECT","CONSTRAINT","CONTAINMENT","CONTENT","CONTEXT","CONTINUE","CONTINUE_AFTER_ERROR","CONTRACT","CONTRACT_NAME","CONTROL","CONVERSATION","COOKIE","COPY_ONLY","COUNTER","CPU","CREATE","CREATE_NEW","CREATION_DISPOSITION","CREDENTIAL","CRYPTOGRAPHIC","CUBE","CURRENT","CURRENT_DATE","CURSOR","CURSOR_CLOSE_ON_COMMIT","CURSOR_DEFAULT","CYCLE","DATA","DATA_COMPRESSION","DATA_PURITY","DATABASE","DATABASE_DEFAULT","DATABASE_MIRRORING","DATABASE_SNAPSHOT","DATAFILETYPE","DATE","DATE_CORRELATION_OPTIMIZATION","DATEFIRST","DATEFORMAT","DATETIME","DATETIME2","DATETIMEOFFSET","DAY","DAYOFYEAR","DAYS","DB_CHAINING","DBCC","DBREINDEX","DDL_DATABASE_LEVEL_EVENTS","DEADLOCK_PRIORITY","DEALLOCATE","DEC","DECIMAL","DECLARE","DECRYPTION","DEFAULT","DEFAULT_DATABASE","DEFAULT_FULLTEXT_LANGUAGE","DEFAULT_LANGUAGE","DEFAULT_SCHEMA","DEFINITION","DELAY","DELAYED_DURABILITY","DELETE","DELETED","DENSITY_VECTOR","DENY","DEPENDENTS","DES","DESC","DESCRIPTION","DESX","DHCP","DIAGNOSTICS","DIALOG","DIFFERENTIAL","DIRECTORY_NAME","DISABLE","DISABLE_BROKER","DISABLED","DISK","DISTINCT","DISTRIBUTED","DOCUMENT","DOUBLE","DROP","DROP_EXISTING","DROPCLEANBUFFERS","DUMP","DURABILITY","DYNAMIC","EDITION","ELEMENTS","ELSE","EMERGENCY","EMPTY","EMPTYFILE","ENABLE","ENABLE_BROKER","ENABLED","ENCRYPTION","END","ENDPOINT","ENDPOINT_URL","ERRLVL","ERROR","ERROR_BROKER_CONVERSATIONS","ERRORFILE","ESCAPE","ESTIMATEONLY","EVENT","EVENT_RETENTION_MODE","EXEC","EXECUTABLE","EXECUTE","EXIT","EXPAND","EXPIREDATE","EXPIRY_DATE","EXPLICIT","EXTENDED_LOGICAL_CHECKS","EXTENSION","EXTERNAL","EXTERNAL_ACCESS","FAIL_OPERATION","FAILOVER","FAILOVER_MODE","FAILURE_CONDITION_LEVEL","FALSE","FAN_IN","FAST","FAST_FORWARD","FETCH","FIELDTERMINATOR","FILE","FILEGROUP","FILEGROWTH","FILELISTONLY","FILENAME","FILEPATH","FILESTREAM","FILESTREAM_ON","FILETABLE_COLLATE_FILENAME","FILETABLE_DIRECTORY","FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME","FILETABLE_NAMESPACE","FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME","FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME","FILLFACTOR","FILTERING","FIRE_TRIGGERS","FIRST","FIRSTROW","FLOAT","FMTONLY","FOLLOWING","FOR","FORCE","FORCE_FAILOVER_ALLOW_DATA_LOSS","FORCE_SERVICE_ALLOW_DATA_LOSS","FORCED","FORCEPLAN","FORCESCAN","FORCESEEK","FOREIGN","FORMATFILE","FORMSOF","FORWARD_ONLY","FREE","FREEPROCCACHE","FREESESSIONCACHE","FREESYSTEMCACHE","FROM","FULL","FULLSCAN","FULLTEXT","FUNCTION","GB","GEOGRAPHY_AUTO_GRID","GEOGRAPHY_GRID","GEOMETRY_AUTO_GRID","GEOMETRY_GRID","GET","GLOBAL","GO","GOTO","GOVERNOR","GRANT","GRIDS","GROUP","GROUP_MAX_REQUESTS","HADR","HASH","HASHED","HAVING","HEADERONLY","HEALTH_CHECK_TIMEOUT","HELP","HIERARCHYID","HIGH","HINT","HISTOGRAM","HOLDLOCK","HONOR_BROKER_PRIORITY","HOUR","HOURS","IDENTITY","IDENTITY_INSERT","IDENTITY_VALUE","IDENTITYCOL","IF","IGNORE_CONSTRAINTS","IGNORE_DUP_KEY","IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX","IGNORE_TRIGGERS","IMAGE","IMMEDIATE","IMPERSONATE","IMPLICIT_TRANSACTIONS","IMPORTANCE","INCLUDE","INCREMENT","INCREMENTAL","INDEX","INDEXDEFRAG","INFINITE","INFLECTIONAL","INIT","INITIATOR","INPUT","INPUTBUFFER","INSENSITIVE","INSERT","INSERTED","INSTEAD","INT","INTEGER","INTO","IO","IP","ISABOUT","ISOLATION","JOB","KB","KEEP","KEEP_CDC","KEEP_NULLS","KEEP_REPLICATION","KEEPDEFAULTS","KEEPFIXED","KEEPIDENTITY","KEEPNULLS","KERBEROS","KEY","KEY_SOURCE","KEYS","KEYSET","KILL","KILOBYTES_PER_BATCH","LABELONLY","LANGUAGE","LAST","LASTROW","LEVEL","LEVEL_1","LEVEL_2","LEVEL_3","LEVEL_4","LIFETIME","LIMIT","LINENO","LIST","LISTENER","LISTENER_IP","LISTENER_PORT","LOAD","LOADHISTORY","LOB_COMPACTION","LOCAL","LOCAL_SERVICE_NAME","LOCK_ESCALATION","LOCK_TIMEOUT","LOGIN","LOGSPACE","LOOP","LOW","MANUAL","MARK","MARK_IN_USE_FOR_REMOVAL","MASTER","MAX_CPU_PERCENT","MAX_DISPATCH_LATENCY","MAX_DOP","MAX_DURATION","MAX_EVENT_SIZE","MAX_FILES","MAX_IOPS_PER_VOLUME","MAX_MEMORY","MAX_MEMORY_PERCENT","MAX_QUEUE_READERS","MAX_ROLLOVER_FILES","MAX_SIZE","MAXDOP","MAXERRORS","MAXLENGTH","MAXRECURSION","MAXSIZE","MAXTRANSFERSIZE","MAXVALUE","MB","MEDIADESCRIPTION","MEDIANAME","MEDIAPASSWORD","MEDIUM","MEMBER","MEMORY_OPTIMIZED","MEMORY_OPTIMIZED_DATA","MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT","MEMORY_PARTITION_MODE","MERGE","MESSAGE","MESSAGE_FORWARD_SIZE","MESSAGE_FORWARDING","MICROSECOND","MILLISECOND","MIN_CPU_PERCENT","MIN_IOPS_PER_VOLUME","MIN_MEMORY_PERCENT","MINUTE","MINUTES","MINVALUE","MIRROR","MIRROR_ADDRESS","MODIFY","MONEY","MONTH","MOVE","MULTI_USER","MUST_CHANGE","NAME","NANOSECOND","NATIONAL","NATIVE_COMPILATION","NCHAR","NEGOTIATE","NESTED_TRIGGERS","NEW_ACCOUNT","NEW_BROKER","NEW_PASSWORD","NEWNAME","NEXT","NO","NO_BROWSETABLE","NO_CHECKSUM","NO_COMPRESSION","NO_EVENT_LOSS","NO_INFOMSGS","NO_TRUNCATE","NO_WAIT","NOCHECK","NOCOUNT","NOEXEC","NOEXPAND","NOFORMAT","NOINDEX","NOINIT","NOLOCK","NON","NON_TRANSACTED_ACCESS","NONCLUSTERED","NONE","NORECOMPUTE","NORECOVERY","NORESEED","NORESET","NOREWIND","NORMAL","NOSKIP","NOTIFICATION","NOTRUNCATE","NOUNLOAD","NOWAIT","NTEXT","NTLM","NUMANODE","NUMERIC","NUMERIC_ROUNDABORT","NVARCHAR","OBJECT","OF","OFF","OFFLINE","OFFSET","OFFSETS","OLD_ACCOUNT","OLD_PASSWORD","ON","ON_FAILURE","ONLINE","ONLY","OPEN","OPEN_EXISTING","OPENTRAN","OPTIMISTIC","OPTIMIZE","OPTION","ORDER","OUT","OUTPUT","OUTPUTBUFFER","OVER","OVERRIDE","OWNER","OWNERSHIP","PAD_INDEX","PAGE","PAGE_VERIFY","PAGECOUNT","PAGLOCK","PARAMETERIZATION","PARSEONLY","PARTIAL","PARTITION","PARTITIONS","PARTNER","PASSWORD","PATH","PER_CPU","PER_NODE","PERCENT","PERMISSION_SET","PERSISTED","PHYSICAL_ONLY","PLAN","POISON_MESSAGE_HANDLING","POOL","POPULATION","PORT","PRECEDING","PRECISION","PRIMARY","PRIMARY_ROLE","PRINT","PRIOR","PRIORITY","PRIORITY_LEVEL","PRIVATE","PRIVILEGES","PROC","PROCCACHE","PROCEDURE","PROCEDURE_NAME","PROCESS","PROFILE","PROPERTY","PROPERTY_DESCRIPTION","PROPERTY_INT_ID","PROPERTY_SET_GUID","PROVIDER","PROVIDER_KEY_NAME","PUBLIC","PUT","QUARTER","QUERY","QUERY_GOVERNOR_COST_LIMIT","QUEUE","QUEUE_DELAY","QUOTED_IDENTIFIER","RAISERROR","RANGE","RAW","RC2","RC4","RC4_128","READ","READ_COMMITTED_SNAPSHOT","READ_ONLY","READ_ONLY_ROUTING_LIST","READ_ONLY_ROUTING_URL","READ_WRITE","READ_WRITE_FILEGROUPS","READCOMMITTED","READCOMMITTEDLOCK","READONLY","READPAST","READTEXT","READUNCOMMITTED","READWRITE","REAL","REBUILD","RECEIVE","RECOMPILE","RECONFIGURE","RECOVERY","RECURSIVE","RECURSIVE_TRIGGERS","REFERENCES","REGENERATE","RELATED_CONVERSATION","RELATED_CONVERSATION_GROUP","RELATIVE","REMOTE","REMOTE_PROC_TRANSACTIONS","REMOTE_SERVICE_NAME","REMOVE","REORGANIZE","REPAIR_ALLOW_DATA_LOSS","REPAIR_FAST","REPAIR_REBUILD","REPEATABLE","REPEATABLEREAD","REPLICA","REPLICATION","REQUEST_MAX_CPU_TIME_SEC","REQUEST_MAX_MEMORY_GRANT_PERCENT","REQUEST_MEMORY_GRANT_TIMEOUT_SEC","REQUIRED","RESAMPLE","RESEED","RESERVE_DISK_SPACE","RESET","RESOURCE","RESTART","RESTORE","RESTRICT","RESTRICTED_USER","RESULT","RESUME","RETAINDAYS","RETENTION","RETURN","RETURNS","REVERT","REVOKE","REWIND","REWINDONLY","ROBUST","ROLE","ROLLBACK","ROLLUP","ROOT","ROUTE","ROW","ROWCOUNT","ROWGUIDCOL","ROWLOCK","ROWS","ROWS_PER_BATCH","ROWTERMINATOR","ROWVERSION","RSA_1024","RSA_2048","RSA_512","RULE","SAFE","SAFETY","SAMPLE","SAVE","SCHEDULER","SCHEMA","SCHEMA_AND_DATA","SCHEMA_ONLY","SCHEMABINDING","SCHEME","SCROLL","SCROLL_LOCKS","SEARCH","SECOND","SECONDARY","SECONDARY_ONLY","SECONDARY_ROLE","SECONDS","SECRET","SECURITY_LOG","SECURITYAUDIT","SELECT","SELECTIVE","SELF","SEND","SENT","SEQUENCE","SERIALIZABLE","SERVER","SERVICE","SERVICE_BROKER","SERVICE_NAME","SESSION","SESSION_TIMEOUT","SET","SETS","SETUSER","SHOW_STATISTICS","SHOWCONTIG","SHOWPLAN","SHOWPLAN_ALL","SHOWPLAN_TEXT","SHOWPLAN_XML","SHRINKDATABASE","SHRINKFILE","SHUTDOWN","SID","SIGNATURE","SIMPLE","SINGLE_BLOB","SINGLE_CLOB","SINGLE_NCLOB","SINGLE_USER","SINGLETON","SIZE","SKIP","SMALLDATETIME","SMALLINT","SMALLMONEY","SNAPSHOT","SORT_IN_TEMPDB","SOURCE","SPARSE","SPATIAL","SPATIAL_WINDOW_MAX_CELLS","SPECIFICATION","SPLIT","SQL","SQL_VARIANT","SQLPERF","STANDBY","START","START_DATE","STARTED","STARTUP_STATE","STAT_HEADER","STATE","STATEMENT","STATIC","STATISTICAL_SEMANTICS","STATISTICS","STATISTICS_INCREMENTAL","STATISTICS_NORECOMPUTE","STATS","STATS_STREAM","STATUS","STATUSONLY","STOP","STOP_ON_ERROR","STOPAT","STOPATMARK","STOPBEFOREMARK","STOPLIST","STOPPED","SUBJECT","SUBSCRIPTION","SUPPORTED","SUSPEND","SWITCH","SYMMETRIC","SYNCHRONOUS_COMMIT","SYNONYM","SYSNAME","SYSTEM","TABLE","TABLERESULTS","TABLESAMPLE","TABLOCK","TABLOCKX","TAKE","TAPE","TARGET","TARGET_RECOVERY_TIME","TB","TCP","TEXT","TEXTIMAGE_ON","TEXTSIZE","THEN","THESAURUS","THROW","TIES","TIME","TIMEOUT","TIMER","TIMESTAMP","TINYINT","TO","TOP","TORN_PAGE_DETECTION","TRACEOFF","TRACEON","TRACESTATUS","TRACK_CAUSALITY","TRACK_COLUMNS_UPDATED","TRAN","TRANSACTION","TRANSFER","TRANSFORM_NOISE_WORDS","TRIGGER","TRIPLE_DES","TRIPLE_DES_3KEY","TRUE","TRUNCATE","TRUNCATEONLY","TRUSTWORTHY","TRY","TSQL","TWO_DIGIT_YEAR_CUTOFF","TYPE","TYPE_WARNING","UNBOUNDED","UNCHECKED","UNCOMMITTED","UNDEFINED","UNIQUE","UNIQUEIDENTIFIER","UNKNOWN","UNLIMITED","UNLOAD","UNSAFE","UPDATE","UPDATETEXT","UPDATEUSAGE","UPDLOCK","URL","USE","USED","USER","USEROPTIONS","USING","VALID_XML","VALIDATION","VALUE","VALUES","VARBINARY","VARCHAR","VARYING","VERIFYONLY","VERSION","VIEW","VIEW_METADATA","VIEWS","VISIBILITY","WAIT_AT_LOW_PRIORITY","WAITFOR","WEEK","WEIGHT","WELL_FORMED_XML","WHEN","WHERE","WHILE","WINDOWS","WITH","WITHIN","WITHOUT","WITNESS","WORK","WORKLOAD","WRITETEXT","XACT_ABORT","XLOCK","XMAX","XMIN","XML","XMLDATA","XMLNAMESPACES","XMLSCHEMA","XQUERY","XSINIL","YEAR","YMAX","YMIN"],operators:["ALL","AND","ANY","BETWEEN","EXISTS","IN","LIKE","NOT","OR","SOME","EXCEPT","INTERSECT","UNION","APPLY","CROSS","FULL","INNER","JOIN","LEFT","OUTER","RIGHT","CONTAINS","FREETEXT","IS","NULL","PIVOT","UNPIVOT","MATCHED"],builtinFunctions:["AVG","CHECKSUM_AGG","COUNT","COUNT_BIG","GROUPING","GROUPING_ID","MAX","MIN","SUM","STDEV","STDEVP","VAR","VARP","CUME_DIST","FIRST_VALUE","LAG","LAST_VALUE","LEAD","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","COLLATE","COLLATIONPROPERTY","TERTIARY_WEIGHTS","FEDERATION_FILTERING_VALUE","CAST","CONVERT","PARSE","TRY_CAST","TRY_CONVERT","TRY_PARSE","ASYMKEY_ID","ASYMKEYPROPERTY","CERTPROPERTY","CERT_ID","CRYPT_GEN_RANDOM","DECRYPTBYASYMKEY","DECRYPTBYCERT","DECRYPTBYKEY","DECRYPTBYKEYAUTOASYMKEY","DECRYPTBYKEYAUTOCERT","DECRYPTBYPASSPHRASE","ENCRYPTBYASYMKEY","ENCRYPTBYCERT","ENCRYPTBYKEY","ENCRYPTBYPASSPHRASE","HASHBYTES","IS_OBJECTSIGNED","KEY_GUID","KEY_ID","KEY_NAME","SIGNBYASYMKEY","SIGNBYCERT","SYMKEYPROPERTY","VERIFYSIGNEDBYCERT","VERIFYSIGNEDBYASYMKEY","CURSOR_STATUS","DATALENGTH","IDENT_CURRENT","IDENT_INCR","IDENT_SEED","IDENTITY","SQL_VARIANT_PROPERTY","CURRENT_TIMESTAMP","DATEADD","DATEDIFF","DATEFROMPARTS","DATENAME","DATEPART","DATETIME2FROMPARTS","DATETIMEFROMPARTS","DATETIMEOFFSETFROMPARTS","DAY","EOMONTH","GETDATE","GETUTCDATE","ISDATE","MONTH","SMALLDATETIMEFROMPARTS","SWITCHOFFSET","SYSDATETIME","SYSDATETIMEOFFSET","SYSUTCDATETIME","TIMEFROMPARTS","TODATETIMEOFFSET","YEAR","CHOOSE","COALESCE","IIF","NULLIF","ABS","ACOS","ASIN","ATAN","ATN2","CEILING","COS","COT","DEGREES","EXP","FLOOR","LOG","LOG10","PI","POWER","RADIANS","RAND","ROUND","SIGN","SIN","SQRT","SQUARE","TAN","APP_NAME","APPLOCK_MODE","APPLOCK_TEST","ASSEMBLYPROPERTY","COL_LENGTH","COL_NAME","COLUMNPROPERTY","DATABASE_PRINCIPAL_ID","DATABASEPROPERTYEX","DB_ID","DB_NAME","FILE_ID","FILE_IDEX","FILE_NAME","FILEGROUP_ID","FILEGROUP_NAME","FILEGROUPPROPERTY","FILEPROPERTY","FULLTEXTCATALOGPROPERTY","FULLTEXTSERVICEPROPERTY","INDEX_COL","INDEXKEY_PROPERTY","INDEXPROPERTY","OBJECT_DEFINITION","OBJECT_ID","OBJECT_NAME","OBJECT_SCHEMA_NAME","OBJECTPROPERTY","OBJECTPROPERTYEX","ORIGINAL_DB_NAME","PARSENAME","SCHEMA_ID","SCHEMA_NAME","SCOPE_IDENTITY","SERVERPROPERTY","STATS_DATE","TYPE_ID","TYPE_NAME","TYPEPROPERTY","DENSE_RANK","NTILE","RANK","ROW_NUMBER","PUBLISHINGSERVERNAME","OPENDATASOURCE","OPENQUERY","OPENROWSET","OPENXML","CERTENCODED","CERTPRIVATEKEY","CURRENT_USER","HAS_DBACCESS","HAS_PERMS_BY_NAME","IS_MEMBER","IS_ROLEMEMBER","IS_SRVROLEMEMBER","LOGINPROPERTY","ORIGINAL_LOGIN","PERMISSIONS","PWDENCRYPT","PWDCOMPARE","SESSION_USER","SESSIONPROPERTY","SUSER_ID","SUSER_NAME","SUSER_SID","SUSER_SNAME","SYSTEM_USER","USER","USER_ID","USER_NAME","ASCII","CHAR","CHARINDEX","CONCAT","DIFFERENCE","FORMAT","LEFT","LEN","LOWER","LTRIM","NCHAR","PATINDEX","QUOTENAME","REPLACE","REPLICATE","REVERSE","RIGHT","RTRIM","SOUNDEX","SPACE","STR","STUFF","SUBSTRING","UNICODE","UPPER","BINARY_CHECKSUM","CHECKSUM","CONNECTIONPROPERTY","CONTEXT_INFO","CURRENT_REQUEST_ID","ERROR_LINE","ERROR_NUMBER","ERROR_MESSAGE","ERROR_PROCEDURE","ERROR_SEVERITY","ERROR_STATE","FORMATMESSAGE","GETANSINULL","GET_FILESTREAM_TRANSACTION_CONTEXT","HOST_ID","HOST_NAME","ISNULL","ISNUMERIC","MIN_ACTIVE_ROWVERSION","NEWID","NEWSEQUENTIALID","ROWCOUNT_BIG","XACT_STATE","TEXTPTR","TEXTVALID","COLUMNS_UPDATED","EVENTDATA","TRIGGER_NESTLEVEL","UPDATE","CHANGETABLE","CHANGE_TRACKING_CONTEXT","CHANGE_TRACKING_CURRENT_VERSION","CHANGE_TRACKING_IS_COLUMN_IN_MASK","CHANGE_TRACKING_MIN_VALID_VERSION","CONTAINSTABLE","FREETEXTTABLE","SEMANTICKEYPHRASETABLE","SEMANTICSIMILARITYDETAILSTABLE","SEMANTICSIMILARITYTABLE","FILETABLEROOTPATH","GETFILENAMESPACEPATH","GETPATHLOCATOR","PATHNAME","GET_TRANSMISSION_STATUS"],builtinVariables:["@@DATEFIRST","@@DBTS","@@LANGID","@@LANGUAGE","@@LOCK_TIMEOUT","@@MAX_CONNECTIONS","@@MAX_PRECISION","@@NESTLEVEL","@@OPTIONS","@@REMSERVER","@@SERVERNAME","@@SERVICENAME","@@SPID","@@TEXTSIZE","@@VERSION","@@CURSOR_ROWS","@@FETCH_STATUS","@@DATEFIRST","@@PROCID","@@ERROR","@@IDENTITY","@@ROWCOUNT","@@TRANCOUNT","@@CONNECTIONS","@@CPU_BUSY","@@IDLE","@@IO_BUSY","@@PACKET_ERRORS","@@PACK_RECEIVED","@@PACK_SENT","@@TIMETICKS","@@TOTAL_ERRORS","@@TOTAL_READ","@@TOTAL_WRITE"],pseudoColumns:["$ACTION","$IDENTITY","$ROWGUID","$PARTITION"],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/N'/,{token:"string",next:"@string"}],[/'/,{token:"string",next:"@string"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/\[/,{token:"identifier.quote",next:"@bracketedIdentifier"}],[/"/,{token:"identifier.quote",next:"@quotedIdentifier"}]],bracketedIdentifier:[[/[^\]]+/,"identifier"],[/]]/,"identifier"],[/]/,{token:"identifier.quote",next:"@pop"}]],quotedIdentifier:[[/[^"]+/,"identifier"],[/""/,"identifier"],[/"/,{token:"identifier.quote",next:"@pop"}]],scopes:[[/BEGIN\s+(DISTRIBUTED\s+)?TRAN(SACTION)?\b/i,"keyword"],[/BEGIN\s+TRY\b/i,{token:"keyword.try"}],[/END\s+TRY\b/i,{token:"keyword.try"}],[/BEGIN\s+CATCH\b/i,{token:"keyword.catch"}],[/END\s+CATCH\b/i,{token:"keyword.catch"}],[/(BEGIN|CASE)\b/i,{token:"keyword.block"}],[/END\b/i,{token:"keyword.block"}],[/WHEN\b/i,{token:"keyword.choice"}],[/THEN\b/i,{token:"keyword.choice"}]]}}}}]); -//# sourceMappingURL=5012.3afcd232.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5107.8cac6a03.chunk.js b/ydb/core/viewer/monitoring/static/js/5107.8cac6a03.chunk.js new file mode 100644 index 000000000000..799c7af851b3 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5107.8cac6a03.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 5107.8cac6a03.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5107],{85107:(e,t,s)=>{s.r(t),s.d(t,{conf:()=>n,language:()=>o});var n={comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">",notIn:["string"]}],surroundingPairs:[{open:"(",close:")"},{open:"[",close:"]"},{open:"`",close:"`"}],folding:{markers:{start:new RegExp("^\\s*\x3c!--\\s*#?region\\b.*--\x3e"),end:new RegExp("^\\s*\x3c!--\\s*#?endregion\\b.*--\x3e")}}},o={defaultToken:"",tokenPostfix:".md",control:/[\\`*_\[\]{}()#+\-\.!]/,noncontrol:/[^\\`*_\[\]{}()#+\-\.!]/,escapes:/\\(?:@control)/,jsescapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,empty:["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param"],tokenizer:{root:[[/^\s*\|/,"@rematch","@table_header"],[/^(\s{0,3})(#+)((?:[^\\#]|@escapes)+)((?:#+)?)/,["white","keyword","keyword","keyword"]],[/^\s*(=+|\-+)\s*$/,"keyword"],[/^\s*((\*[ ]?)+)\s*$/,"meta.separator"],[/^\s*>+/,"comment"],[/^\s*([\*\-+:]|\d+\.)\s/,"keyword"],[/^(\t|[ ]{4})[^ ].*$/,"string"],[/^\s*~~~\s*((?:\w|[\/\-#])+)?\s*$/,{token:"string",next:"@codeblock"}],[/^\s*```\s*((?:\w|[\/\-#])+).*$/,{token:"string",next:"@codeblockgh",nextEmbedded:"$1"}],[/^\s*```\s*$/,{token:"string",next:"@codeblock"}],{include:"@linecontent"}],table_header:[{include:"@table_common"},[/[^\|]+/,"keyword.table.header"]],table_body:[{include:"@table_common"},{include:"@linecontent"}],table_common:[[/\s*[\-:]+\s*/,{token:"keyword",switchTo:"table_body"}],[/^\s*\|/,"keyword.table.left"],[/^\s*[^\|]/,"@rematch","@pop"],[/^\s*$/,"@rematch","@pop"],[/\|/,{cases:{"@eos":"keyword.table.right","@default":"keyword.table.middle"}}]],codeblock:[[/^\s*~~~\s*$/,{token:"string",next:"@pop"}],[/^\s*```\s*$/,{token:"string",next:"@pop"}],[/.*$/,"variable.source"]],codeblockgh:[[/```\s*$/,{token:"string",next:"@pop",nextEmbedded:"@pop"}],[/[^`]+/,"variable.source"]],linecontent:[[/&\w+;/,"string.escape"],[/@escapes/,"escape"],[/\b__([^\\_]|@escapes|_(?!_))+__\b/,"strong"],[/\*\*([^\\*]|@escapes|\*(?!\*))+\*\*/,"strong"],[/\b_[^_]+_\b/,"emphasis"],[/\*([^\\*]|@escapes)+\*/,"emphasis"],[/`([^\\`]|@escapes)+`/,"variable"],[/\{+[^}]+\}+/,"string.target"],[/(!?\[)((?:[^\]\\]|@escapes)*)(\]\([^\)]+\))/,["string.link","","string.link"]],[/(!?\[)((?:[^\]\\]|@escapes)*)(\])/,"string.link"],{include:"html"}],html:[[/<(\w+)\/>/,"tag"],[/<(\w+)(\-|\w)*/,{cases:{"@empty":{token:"tag",next:"@tag.$1"},"@default":{token:"tag",next:"@tag.$1"}}}],[/<\/(\w+)(\-|\w)*\s*>/,{token:"tag"}],[/<!--/,"comment","@comment"]],comment:[[/[^<\-]+/,"comment.content"],[/-->/,"comment","@pop"],[/<!--/,"comment.content.invalid"],[/[<\-]/,"comment.content"]],tag:[[/[ \t\r\n]+/,"white"],[/(type)(\s*=\s*)(")([^"]+)(")/,["attribute.name.html","delimiter.html","string.html",{token:"string.html",switchTo:"@tag.$S2.$4"},"string.html"]],[/(type)(\s*=\s*)(')([^']+)(')/,["attribute.name.html","delimiter.html","string.html",{token:"string.html",switchTo:"@tag.$S2.$4"},"string.html"]],[/(\w+)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name.html","delimiter.html","string.html"]],[/\w+/,"attribute.name.html"],[/\/>/,"tag","@pop"],[/>/,{cases:{"$S2==style":{token:"tag",switchTo:"embeddedStyle",nextEmbedded:"text/css"},"$S2==script":{cases:{$S3:{token:"tag",switchTo:"embeddedScript",nextEmbedded:"$S3"},"@default":{token:"tag",switchTo:"embeddedScript",nextEmbedded:"text/javascript"}}},"@default":{token:"tag",next:"@pop"}}}]],embeddedStyle:[[/[^<]+/,""],[/<\/style\s*>/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/</,""]],embeddedScript:[[/[^<]+/,""],[/<\/script\s*>/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/</,""]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5107.8cac6a03.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/5107.8cac6a03.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5107.8cac6a03.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/5112.6189bbe0.chunk.js b/ydb/core/viewer/monitoring/static/js/5112.6189bbe0.chunk.js new file mode 100644 index 000000000000..b68897f8296c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5112.6189bbe0.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5112],{5112:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"sd",weekdays:"\u0622\u0686\u0631_\u0633\u0648\u0645\u0631_\u0627\u06b1\u0627\u0631\u0648_\u0627\u0631\u0628\u0639_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639_\u0687\u0646\u0687\u0631".split("_"),months:"\u062c\u0646\u0648\u0631\u064a_\u0641\u064a\u0628\u0631\u0648\u0631\u064a_\u0645\u0627\u0631\u0686_\u0627\u067e\u0631\u064a\u0644_\u0645\u0626\u064a_\u062c\u0648\u0646_\u062c\u0648\u0644\u0627\u0621\u0650_\u0622\u06af\u0633\u067d_\u0633\u064a\u067e\u067d\u0645\u0628\u0631_\u0622\u06aa\u067d\u0648\u0628\u0631_\u0646\u0648\u0645\u0628\u0631_\u068a\u0633\u0645\u0628\u0631".split("_"),weekStart:1,weekdaysShort:"\u0622\u0686\u0631_\u0633\u0648\u0645\u0631_\u0627\u06b1\u0627\u0631\u0648_\u0627\u0631\u0628\u0639_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639_\u0687\u0646\u0687\u0631".split("_"),monthsShort:"\u062c\u0646\u0648\u0631\u064a_\u0641\u064a\u0628\u0631\u0648\u0631\u064a_\u0645\u0627\u0631\u0686_\u0627\u067e\u0631\u064a\u0644_\u0645\u0626\u064a_\u062c\u0648\u0646_\u062c\u0648\u0644\u0627\u0621\u0650_\u0622\u06af\u0633\u067d_\u0633\u064a\u067e\u067d\u0645\u0628\u0631_\u0622\u06aa\u067d\u0648\u0628\u0631_\u0646\u0648\u0645\u0628\u0631_\u068a\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u0622\u0686\u0631_\u0633\u0648\u0645\u0631_\u0627\u06b1\u0627\u0631\u0648_\u0627\u0631\u0628\u0639_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639_\u0687\u0646\u0687\u0631".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5117.896f7ffb.chunk.js b/ydb/core/viewer/monitoring/static/js/5117.896f7ffb.chunk.js new file mode 100644 index 000000000000..5c8853897a0f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5117.896f7ffb.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5117],{85117:function(e,_,s){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=_(e),d={name:"es-pr",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:function(e){return e+"\xba"}};return s.default.locale(d,null,!0),d}(s(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/515.cd9a8a90.chunk.js b/ydb/core/viewer/monitoring/static/js/515.cd9a8a90.chunk.js new file mode 100644 index 000000000000..b0db52c62f7d --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/515.cd9a8a90.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[515],{60515:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-iq",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0634\u0628\u0627\u0637_\u0622\u0630\u0627\u0631_\u0646\u064a\u0633\u0627\u0646_\u0623\u064a\u0627\u0631_\u062d\u0632\u064a\u0631\u0627\u0646_\u062a\u0645\u0648\u0632_\u0622\u0628_\u0623\u064a\u0644\u0648\u0644_\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),weekStart:1,weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0634\u0628\u0627\u0637_\u0622\u0630\u0627\u0631_\u0646\u064a\u0633\u0627\u0646_\u0623\u064a\u0627\u0631_\u062d\u0632\u064a\u0631\u0627\u0646_\u062a\u0645\u0648\u0632_\u0622\u0628_\u0623\u064a\u0644\u0648\u0644_\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5161.45b4f520.chunk.js b/ydb/core/viewer/monitoring/static/js/5161.45b4f520.chunk.js new file mode 100644 index 000000000000..9ed475f7c7f0 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5161.45b4f520.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5161],{25161:function(e,_,n){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=_(e),d={name:"ht",weekdays:"dimanch_lendi_madi_m\xe8kredi_jedi_vandredi_samdi".split("_"),months:"janvye_fevriye_mas_avril_me_jen_jiy\xe8_out_septanm_okt\xf2b_novanm_desanm".split("_"),weekdaysShort:"dim._len._mad._m\xe8k._jed._van._sam.".split("_"),monthsShort:"jan._fev._mas_avr._me_jen_jiy\xe8._out_sept._okt._nov._des.".split("_"),weekdaysMin:"di_le_ma_m\xe8_je_va_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"nan %s",past:"sa gen %s",s:"k\xe8k segond",m:"yon minit",mm:"%d minit",h:"in\xe8dtan",hh:"%d z\xe8",d:"yon jou",dd:"%d jou",M:"yon mwa",MM:"%d mwa",y:"yon ane",yy:"%d ane"}};return n.default.locale(d,null,!0),d}(n(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5168.6fb23f08.chunk.js b/ydb/core/viewer/monitoring/static/js/5168.6fb23f08.chunk.js new file mode 100644 index 000000000000..a51a88fb0ce3 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5168.6fb23f08.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 5168.6fb23f08.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5168],{25168:(e,o,t)=>{t.r(o),t.d(o,{conf:()=>n,language:()=>s});var n={comments:{lineComment:"#"},brackets:[["[","]"],["<",">"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"<",close:">"},{open:"(",close:")"}],surroundingPairs:[{open:"[",close:"]"},{open:"<",close:">"},{open:"(",close:")"}]},s={defaultToken:"",tokenPostfix:".pla",brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"<",close:">",token:"delimiter.angle"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:[".i",".o",".mv",".ilb",".ob",".label",".type",".phase",".pair",".symbolic",".symbolic-output",".kiss",".p",".e",".end"],comment:/#.*$/,identifier:/[a-zA-Z]+[a-zA-Z0-9_\-]*/,plaContent:/[01\-~\|]+/,tokenizer:{root:[{include:"@whitespace"},[/@comment/,"comment"],[/\.([a-zA-Z_\-]+)/,{cases:{"@eos":{token:"keyword.$1"},"@keywords":{cases:{".type":{token:"keyword.$1",next:"@type"},"@default":{token:"keyword.$1",next:"@keywordArg"}}},"@default":{token:"keyword.$1"}}}],[/@identifier/,"identifier"],[/@plaContent/,"string"]],whitespace:[[/[ \t\r\n]+/,""]],type:[{include:"@whitespace"},[/\w+/,{token:"type",next:"@pop"}]],keywordArg:[[/[ \t\r\n]+/,{cases:{"@eos":{token:"",next:"@pop"},"@default":""}}],[/@comment/,"comment","@pop"],[/[<>()\[\]]/,{cases:{"@eos":{token:"@brackets",next:"@pop"},"@default":"@brackets"}}],[/\-?\d+/,{cases:{"@eos":{token:"number",next:"@pop"},"@default":"number"}}],[/@identifier/,{cases:{"@eos":{token:"identifier",next:"@pop"},"@default":"identifier"}}],[/[;=]/,{cases:{"@eos":{token:"delimiter",next:"@pop"},"@default":"delimiter"}}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5168.6fb23f08.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/5168.6fb23f08.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5168.6fb23f08.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/5210.6e07cb51.chunk.js b/ydb/core/viewer/monitoring/static/js/5210.6e07cb51.chunk.js deleted file mode 100644 index 6a73e412b864..000000000000 --- a/ydb/core/viewer/monitoring/static/js/5210.6e07cb51.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5210],{75210:function(e,n,o){o.r(n),o.d(n,{conf:function(){return t},language:function(){return r}});var t={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["var","end_var"],["var_input","end_var"],["var_output","end_var"],["var_in_out","end_var"],["var_temp","end_var"],["var_global","end_var"],["var_access","end_var"],["var_external","end_var"],["type","end_type"],["struct","end_struct"],["program","end_program"],["function","end_function"],["function_block","end_function_block"],["action","end_action"],["step","end_step"],["initial_step","end_step"],["transaction","end_transaction"],["configuration","end_configuration"],["tcp","end_tcp"],["recource","end_recource"],["channel","end_channel"],["library","end_library"],["folder","end_folder"],["binaries","end_binaries"],["includes","end_includes"],["sources","end_sources"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"/*",close:"*/"},{open:"'",close:"'",notIn:["string_sq"]},{open:'"',close:'"',notIn:["string_dq"]},{open:"var_input",close:"end_var"},{open:"var_output",close:"end_var"},{open:"var_in_out",close:"end_var"},{open:"var_temp",close:"end_var"},{open:"var_global",close:"end_var"},{open:"var_access",close:"end_var"},{open:"var_external",close:"end_var"},{open:"type",close:"end_type"},{open:"struct",close:"end_struct"},{open:"program",close:"end_program"},{open:"function",close:"end_function"},{open:"function_block",close:"end_function_block"},{open:"action",close:"end_action"},{open:"step",close:"end_step"},{open:"initial_step",close:"end_step"},{open:"transaction",close:"end_transaction"},{open:"configuration",close:"end_configuration"},{open:"tcp",close:"end_tcp"},{open:"recource",close:"end_recource"},{open:"channel",close:"end_channel"},{open:"library",close:"end_library"},{open:"folder",close:"end_folder"},{open:"binaries",close:"end_binaries"},{open:"includes",close:"end_includes"},{open:"sources",close:"end_sources"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"var",close:"end_var"},{open:"var_input",close:"end_var"},{open:"var_output",close:"end_var"},{open:"var_in_out",close:"end_var"},{open:"var_temp",close:"end_var"},{open:"var_global",close:"end_var"},{open:"var_access",close:"end_var"},{open:"var_external",close:"end_var"},{open:"type",close:"end_type"},{open:"struct",close:"end_struct"},{open:"program",close:"end_program"},{open:"function",close:"end_function"},{open:"function_block",close:"end_function_block"},{open:"action",close:"end_action"},{open:"step",close:"end_step"},{open:"initial_step",close:"end_step"},{open:"transaction",close:"end_transaction"},{open:"configuration",close:"end_configuration"},{open:"tcp",close:"end_tcp"},{open:"recource",close:"end_recource"},{open:"channel",close:"end_channel"},{open:"library",close:"end_library"},{open:"folder",close:"end_folder"},{open:"binaries",close:"end_binaries"},{open:"includes",close:"end_includes"},{open:"sources",close:"end_sources"}],folding:{markers:{start:new RegExp("^\\s*#pragma\\s+region\\b"),end:new RegExp("^\\s*#pragma\\s+endregion\\b")}}},r={defaultToken:"",tokenPostfix:".st",ignoreCase:!0,brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["if","end_if","elsif","else","case","of","to","__try","__catch","__finally","do","with","by","while","repeat","end_while","end_repeat","end_case","for","end_for","task","retain","non_retain","constant","with","at","exit","return","interval","priority","address","port","on_channel","then","iec","file","uses","version","packagetype","displayname","copyright","summary","vendor","common_source","from","extends"],constant:["false","true","null"],defineKeywords:["var","var_input","var_output","var_in_out","var_temp","var_global","var_access","var_external","end_var","type","end_type","struct","end_struct","program","end_program","function","end_function","function_block","end_function_block","interface","end_interface","method","end_method","property","end_property","namespace","end_namespace","configuration","end_configuration","tcp","end_tcp","resource","end_resource","channel","end_channel","library","end_library","folder","end_folder","binaries","end_binaries","includes","end_includes","sources","end_sources","action","end_action","step","initial_step","end_step","transaction","end_transaction"],typeKeywords:["int","sint","dint","lint","usint","uint","udint","ulint","real","lreal","time","date","time_of_day","date_and_time","string","bool","byte","word","dword","array","pointer","lword"],operators:["=",">","<",":",":=","<=",">=","<>","&","+","-","*","**","MOD","^","or","and","not","xor","abs","acos","asin","atan","cos","exp","expt","ln","log","sin","sqrt","tan","sel","max","min","limit","mux","shl","shr","rol","ror","indexof","sizeof","adr","adrinst","bitadr","is_valid","ref","ref_to"],builtinVariables:[],builtinFunctions:["sr","rs","tp","ton","tof","eq","ge","le","lt","ne","round","trunc","ctd","\u0441tu","ctud","r_trig","f_trig","move","concat","delete","find","insert","left","len","replace","right","rtc"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/(\.\.)/,"delimiter"],[/\b(16#[0-9A-Fa-f\_]*)+\b/,"number.hex"],[/\b(2#[01\_]+)+\b/,"number.binary"],[/\b(8#[0-9\_]*)+\b/,"number.octal"],[/\b\d*\.\d+([eE][\-+]?\d+)?\b/,"number.float"],[/\b(L?REAL)#[0-9\_\.e]+\b/,"number.float"],[/\b(BYTE|(?:D|L)?WORD|U?(?:S|D|L)?INT)#[0-9\_]+\b/,"number"],[/\d+/,"number"],[/\b(T|DT|TOD)#[0-9:-_shmyd]+\b/,"tag"],[/\%(I|Q|M)(X|B|W|D|L)[0-9\.]+/,"tag"],[/\%(I|Q|M)[0-9\.]*/,"tag"],[/\b[A-Za-z]{1,6}#[0-9]+\b/,"tag"],[/\b(TO_|CTU_|CTD_|CTUD_|MUX_|SEL_)[A_Za-z]+\b/,"predefined"],[/\b[A_Za-z]+(_TO_)[A_Za-z]+\b/,"predefined"],[/[;]/,"delimiter"],[/[.]/,{token:"delimiter",next:"@params"}],[/[a-zA-Z_]\w*/,{cases:{"@operators":"operators","@keywords":"keyword","@typeKeywords":"type","@defineKeywords":"variable","@constant":"constant","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string_dq"}],[/'/,{token:"string.quote",bracket:"@open",next:"@string_sq"}],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],params:[[/\b[A-Za-z0-9_]+\b(?=\()/,{token:"identifier",next:"@pop"}],[/\b[A-Za-z0-9_]+\b/,"variable.name","@pop"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],comment2:[[/[^\(*]+/,"comment"],[/\(\*/,"comment","@push"],["\\*\\)","comment","@pop"],[/[\(*]/,"comment"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\/.*$/,"comment"],[/\/\*/,"comment","@comment"],[/\(\*/,"comment","@comment2"]],string_dq:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],string_sq:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]]}}}}]); -//# sourceMappingURL=5210.6e07cb51.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5215.2d9f2122.chunk.js b/ydb/core/viewer/monitoring/static/js/5215.2d9f2122.chunk.js deleted file mode 100644 index b95875dc957e..000000000000 --- a/ydb/core/viewer/monitoring/static/js/5215.2d9f2122.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5215],{15215:function(e,t,p){p.r(t),p.d(t,{conf:function(){return n},language:function(){return i}});var n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string"]},{open:"[",close:"]",notIn:["string"]},{open:"(",close:")",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],folding:{markers:{start:new RegExp("^\\s*(#|//)region\\b"),end:new RegExp("^\\s*(#|//)endregion\\b")}}},i={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.root"}],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@comment"],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)(\w+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/[^<]+/]],doctype:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.comment"}],[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.comment"}],[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.script"}],[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.scriptAfterType"}],[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.scriptAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.scriptWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInEmbeddedState.scriptEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],style:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.style"}],[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.styleAfterType"}],[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.styleAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.styleWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInEmbeddedState.styleEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],phpInSimpleState:[[/<\?((php)|=)?/,"metatag.php"],[/\?>/,{token:"metatag.php",switchTo:"@$S2.$S3"}],{include:"phpRoot"}],phpInEmbeddedState:[[/<\?((php)|=)?/,"metatag.php"],[/\?>/,{token:"metatag.php",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}],{include:"phpRoot"}],phpRoot:[[/[a-zA-Z_]\w*/,{cases:{"@phpKeywords":{token:"keyword.php"},"@phpCompileTimeConstants":{token:"constant.php"},"@default":"identifier.php"}}],[/[$a-zA-Z_]\w*/,{cases:{"@phpPreDefinedVariables":{token:"variable.predefined.php"},"@default":"variable.php"}}],[/[{}]/,"delimiter.bracket.php"],[/[\[\]]/,"delimiter.array.php"],[/[()]/,"delimiter.parenthesis.php"],[/[ \t\r\n]+/],[/(#|\/\/)$/,"comment.php"],[/(#|\/\/)/,"comment.php","@phpLineComment"],[/\/\*/,"comment.php","@phpComment"],[/"/,"string.php","@phpDoubleQuoteString"],[/'/,"string.php","@phpSingleQuoteString"],[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,\@]/,"delimiter.php"],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float.php"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float.php"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex.php"],[/0[0-7']*[0-7]/,"number.octal.php"],[/0[bB][0-1']*[0-1]/,"number.binary.php"],[/\d[\d']*/,"number.php"],[/\d/,"number.php"]],phpComment:[[/\*\//,"comment.php","@pop"],[/[^*]+/,"comment.php"],[/./,"comment.php"]],phpLineComment:[[/\?>/,{token:"@rematch",next:"@pop"}],[/.$/,"comment.php","@pop"],[/[^?]+$/,"comment.php","@pop"],[/[^?]+/,"comment.php"],[/./,"comment.php"]],phpDoubleQuoteString:[[/[^\\"]+/,"string.php"],[/@escapes/,"string.escape.php"],[/\\./,"string.escape.invalid.php"],[/"/,"string.php","@pop"]],phpSingleQuoteString:[[/[^\\']+/,"string.php"],[/@escapes/,"string.escape.php"],[/\\./,"string.escape.invalid.php"],[/'/,"string.php","@pop"]]},phpKeywords:["abstract","and","array","as","break","callable","case","catch","cfunction","class","clone","const","continue","declare","default","do","else","elseif","enddeclare","endfor","endforeach","endif","endswitch","endwhile","extends","false","final","for","foreach","function","global","goto","if","implements","interface","instanceof","insteadof","namespace","new","null","object","old_function","or","private","protected","public","resource","static","switch","throw","trait","try","true","use","var","while","xor","die","echo","empty","exit","eval","include","include_once","isset","list","require","require_once","return","print","unset","yield","__construct"],phpCompileTimeConstants:["__CLASS__","__DIR__","__FILE__","__LINE__","__NAMESPACE__","__METHOD__","__FUNCTION__","__TRAIT__"],phpPreDefinedVariables:["$GLOBALS","$_SERVER","$_GET","$_POST","$_FILES","$_REQUEST","$_SESSION","$_ENV","$_COOKIE","$php_errormsg","$HTTP_RAW_POST_DATA","$http_response_header","$argc","$argv"],escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/}}}]); -//# sourceMappingURL=5215.2d9f2122.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5226.675d55fb.chunk.js b/ydb/core/viewer/monitoring/static/js/5226.675d55fb.chunk.js new file mode 100644 index 000000000000..df69668d39e8 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5226.675d55fb.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5226],{45226:function(e,t,_){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),n={name:"nb",weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"}};return _.default.locale(n,null,!0),n}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5311.a500a1ea.chunk.js b/ydb/core/viewer/monitoring/static/js/5311.a500a1ea.chunk.js new file mode 100644 index 000000000000..5e7c4c359c4c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5311.a500a1ea.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 5311.a500a1ea.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5311],{45311:(e,t,s)=>{s.r(t),s.d(t,{conf:()=>n,language:()=>i});var n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))"),end:new RegExp("^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))")}}},i={defaultToken:"",tokenPostfix:".java",keywords:["abstract","continue","for","new","switch","assert","default","goto","package","synchronized","boolean","do","if","private","this","break","double","implements","protected","throw","byte","else","import","public","throws","case","enum","instanceof","return","transient","catch","extends","int","short","try","char","final","interface","static","void","class","finally","long","strictfp","volatile","const","float","native","super","while","true","false","yield","record","sealed","non-sealed","permits"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,tokenizer:{root:[["non-sealed","keyword.non-sealed"],[/[a-zA-Z_$][\w$]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,"annotation"],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,"number.float"],[/0[xX](@hexdigits)[Ll]?/,"number.hex"],[/0(@octaldigits)[Ll]?/,"number.octal"],[/0[bB](@binarydigits)[Ll]?/,"number.binary"],[/(@digits)[fFdD]/,"number.float"],[/(@digits)[lL]?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"""/,"string","@multistring"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@javadoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],javadoc:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],multistring:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"""/,"string","@pop"],[/./,"string"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5311.a500a1ea.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/5311.a500a1ea.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5311.a500a1ea.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/5341.2c19c723.chunk.js b/ydb/core/viewer/monitoring/static/js/5341.2c19c723.chunk.js new file mode 100644 index 000000000000..d843eb9c7ec6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5341.2c19c723.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5341],{45341:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),n={name:"tl-ph",weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),weekStart:1,weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"}};return a.default.locale(n,null,!0),n}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5352.3d3187b7.chunk.js b/ydb/core/viewer/monitoring/static/js/5352.3d3187b7.chunk.js new file mode 100644 index 000000000000..98111594d03b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5352.3d3187b7.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5352],{45352:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"te",weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5373.90c95a6e.chunk.js b/ydb/core/viewer/monitoring/static/js/5373.90c95a6e.chunk.js new file mode 100644 index 000000000000..718fc23f331a --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5373.90c95a6e.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5373],{45373:function(d,e,_){d.exports=function(d){"use strict";function e(d){return d&&"object"==typeof d&&"default"in d?d:{default:d}}var _=e(d),a={name:"cy",weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),weekStart:1,weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),ordinal:function(d){return d},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"}};return _.default.locale(a,null,!0),a}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5378.86805fba.chunk.js b/ydb/core/viewer/monitoring/static/js/5378.86805fba.chunk.js new file mode 100644 index 000000000000..0b0b7b5577e7 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5378.86805fba.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 5378.86805fba.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5378],{65378:(e,n,t)=>{t.r(n),t.d(n,{conf:()=>o,language:()=>r});var o={comments:{lineComment:"'",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"],["addhandler","end addhandler"],["class","end class"],["enum","end enum"],["event","end event"],["function","end function"],["get","end get"],["if","end if"],["interface","end interface"],["module","end module"],["namespace","end namespace"],["operator","end operator"],["property","end property"],["raiseevent","end raiseevent"],["removehandler","end removehandler"],["select","end select"],["set","end set"],["structure","end structure"],["sub","end sub"],["synclock","end synclock"],["try","end try"],["while","end while"],["with","end with"],["using","end using"],["do","loop"],["for","next"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"<",close:">",notIn:["string","comment"]}],folding:{markers:{start:new RegExp("^\\s*#Region\\b"),end:new RegExp("^\\s*#End Region\\b")}}},r={defaultToken:"",tokenPostfix:".vb",ignoreCase:!0,brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.angle",open:"<",close:">"},{token:"keyword.tag-addhandler",open:"addhandler",close:"end addhandler"},{token:"keyword.tag-class",open:"class",close:"end class"},{token:"keyword.tag-enum",open:"enum",close:"end enum"},{token:"keyword.tag-event",open:"event",close:"end event"},{token:"keyword.tag-function",open:"function",close:"end function"},{token:"keyword.tag-get",open:"get",close:"end get"},{token:"keyword.tag-if",open:"if",close:"end if"},{token:"keyword.tag-interface",open:"interface",close:"end interface"},{token:"keyword.tag-module",open:"module",close:"end module"},{token:"keyword.tag-namespace",open:"namespace",close:"end namespace"},{token:"keyword.tag-operator",open:"operator",close:"end operator"},{token:"keyword.tag-property",open:"property",close:"end property"},{token:"keyword.tag-raiseevent",open:"raiseevent",close:"end raiseevent"},{token:"keyword.tag-removehandler",open:"removehandler",close:"end removehandler"},{token:"keyword.tag-select",open:"select",close:"end select"},{token:"keyword.tag-set",open:"set",close:"end set"},{token:"keyword.tag-structure",open:"structure",close:"end structure"},{token:"keyword.tag-sub",open:"sub",close:"end sub"},{token:"keyword.tag-synclock",open:"synclock",close:"end synclock"},{token:"keyword.tag-try",open:"try",close:"end try"},{token:"keyword.tag-while",open:"while",close:"end while"},{token:"keyword.tag-with",open:"with",close:"end with"},{token:"keyword.tag-using",open:"using",close:"end using"},{token:"keyword.tag-do",open:"do",close:"loop"},{token:"keyword.tag-for",open:"for",close:"next"}],keywords:["AddHandler","AddressOf","Alias","And","AndAlso","As","Async","Boolean","ByRef","Byte","ByVal","Call","Case","Catch","CBool","CByte","CChar","CDate","CDbl","CDec","Char","CInt","Class","CLng","CObj","Const","Continue","CSByte","CShort","CSng","CStr","CType","CUInt","CULng","CUShort","Date","Decimal","Declare","Default","Delegate","Dim","DirectCast","Do","Double","Each","Else","ElseIf","End","EndIf","Enum","Erase","Error","Event","Exit","False","Finally","For","Friend","Function","Get","GetType","GetXMLNamespace","Global","GoSub","GoTo","Handles","If","Implements","Imports","In","Inherits","Integer","Interface","Is","IsNot","Let","Lib","Like","Long","Loop","Me","Mod","Module","MustInherit","MustOverride","MyBase","MyClass","NameOf","Namespace","Narrowing","New","Next","Not","Nothing","NotInheritable","NotOverridable","Object","Of","On","Operator","Option","Optional","Or","OrElse","Out","Overloads","Overridable","Overrides","ParamArray","Partial","Private","Property","Protected","Public","RaiseEvent","ReadOnly","ReDim","RemoveHandler","Resume","Return","SByte","Select","Set","Shadows","Shared","Short","Single","Static","Step","Stop","String","Structure","Sub","SyncLock","Then","Throw","To","True","Try","TryCast","TypeOf","UInteger","ULong","UShort","Using","Variant","Wend","When","While","Widening","With","WithEvents","WriteOnly","Xor"],tagwords:["If","Sub","Select","Try","Class","Enum","Function","Get","Interface","Module","Namespace","Operator","Set","Structure","Using","While","With","Do","Loop","For","Next","Property","Continue","AddHandler","RemoveHandler","Event","RaiseEvent","SyncLock"],symbols:/[=><!~?;\.,:&|+\-*\/\^%]+/,integersuffix:/U?[DI%L&S@]?/,floatsuffix:/[R#F!]?/,tokenizer:{root:[{include:"@whitespace"},[/next(?!\w)/,{token:"keyword.tag-for"}],[/loop(?!\w)/,{token:"keyword.tag-do"}],[/end\s+(?!for|do)(addhandler|class|enum|event|function|get|if|interface|module|namespace|operator|property|raiseevent|removehandler|select|set|structure|sub|synclock|try|while|with|using)/,{token:"keyword.tag-$1"}],[/[a-zA-Z_]\w*/,{cases:{"@tagwords":{token:"keyword.tag-$0"},"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],[/^\s*#\w+/,"keyword"],[/\d*\d+e([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+(e[\-+]?\d+)?(@floatsuffix)/,"number.float"],[/&H[0-9a-f]+(@integersuffix)/,"number.hex"],[/&0[0-7]+(@integersuffix)/,"number.octal"],[/\d+(@integersuffix)/,"number"],[/#.*#/,"number"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/["\u201c\u201d]/,{token:"string.quote",next:"@string"}]],whitespace:[[/[ \t\r\n]+/,""],[/(\'|REM(?!\w)).*$/,"comment"]],string:[[/[^"\u201c\u201d]+/,"string"],[/["\u201c\u201d]{2}/,"string.escape"],[/["\u201c\u201d]C?/,{token:"string.quote",next:"@pop"}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5378.86805fba.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/5378.86805fba.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5378.86805fba.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/5387.8af1d694.chunk.js b/ydb/core/viewer/monitoring/static/js/5387.8af1d694.chunk.js new file mode 100644 index 000000000000..6a2b0198c292 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5387.8af1d694.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5387],{95387:function(e,_,s){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=_(e),d={name:"es-us",weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:function(e){return e+"\xba"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return s.default.locale(d,null,!0),d}(s(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5399.f9398084.chunk.js b/ydb/core/viewer/monitoring/static/js/5399.f9398084.chunk.js new file mode 100644 index 000000000000..b61cdd35ecdd --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5399.f9398084.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5399],{45399:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ka",weekdays:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),months:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"%s \u10e8\u10d4\u10db\u10d3\u10d4\u10d2",past:"%s \u10ec\u10d8\u10dc",s:"\u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8\u10e1",d:"\u10d3\u10e6\u10d4\u10e1",dd:"%d \u10d3\u10e6\u10d8\u10e1 \u10d2\u10d0\u10dc\u10db\u10d0\u10d5\u10da\u10dd\u10d1\u10d0\u10e8\u10d8",M:"\u10d7\u10d5\u10d8\u10e1",MM:"%d \u10d7\u10d5\u10d8\u10e1",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10da\u10d8\u10e1"},ordinal:function(_){return _}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5444.f86e47ff.chunk.js b/ydb/core/viewer/monitoring/static/js/5444.f86e47ff.chunk.js deleted file mode 100644 index 4b82cdf618ee..000000000000 --- a/ydb/core/viewer/monitoring/static/js/5444.f86e47ff.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5444],{95444:function(e,n,o){o.r(n),o.d(n,{conf:function(){return t},language:function(){return r}});var t={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}]},r={defaultToken:"",tokenPostfix:".ecl",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],pounds:["append","break","declare","demangle","end","for","getdatatype","if","inmodule","loop","mangle","onwarning","option","set","stored","uniquename"].join("|"),keywords:["__compressed__","after","all","and","any","as","atmost","before","beginc","best","between","case","cluster","compressed","compression","const","counter","csv","default","descend","embed","encoding","encrypt","end","endc","endembed","endmacro","enum","escape","except","exclusive","expire","export","extend","fail","few","fileposition","first","flat","forward","from","full","function","functionmacro","group","grouped","heading","hole","ifblock","import","in","inner","interface","internal","joined","keep","keyed","last","left","limit","linkcounted","literal","little_endian","load","local","locale","lookup","lzw","macro","many","maxcount","maxlength","min skew","module","mofn","multiple","named","namespace","nocase","noroot","noscan","nosort","not","noxpath","of","onfail","only","opt","or","outer","overwrite","packed","partition","penalty","physicallength","pipe","prefetch","quote","record","repeat","retry","return","right","right1","right2","rows","rowset","scan","scope","self","separator","service","shared","skew","skip","smart","soapaction","sql","stable","store","terminator","thor","threshold","timelimit","timeout","token","transform","trim","type","unicodeorder","unordered","unsorted","unstable","update","use","validate","virtual","whole","width","wild","within","wnotrim","xml","xpath"],functions:["abs","acos","aggregate","allnodes","apply","ascii","asin","assert","asstring","atan","atan2","ave","build","buildindex","case","catch","choose","choosen","choosesets","clustersize","combine","correlation","cos","cosh","count","covariance","cron","dataset","dedup","define","denormalize","dictionary","distribute","distributed","distribution","ebcdic","enth","error","evaluate","event","eventextra","eventname","exists","exp","fail","failcode","failmessage","fetch","fromunicode","fromxml","getenv","getisvalid","global","graph","group","hash","hash32","hash64","hashcrc","hashmd5","having","httpcall","httpheader","if","iff","index","intformat","isvalid","iterate","join","keydiff","keypatch","keyunicode","length","library","limit","ln","loadxml","local","log","loop","map","matched","matchlength","matchposition","matchtext","matchunicode","max","merge","mergejoin","min","nofold","nolocal","nonempty","normalize","nothor","notify","output","parallel","parse","pipe","power","preload","process","project","pull","random","range","rank","ranked","realformat","recordof","regexfind","regexreplace","regroup","rejected","rollup","round","roundup","row","rowdiff","sample","sequential","set","sin","sinh","sizeof","soapcall","sort","sorted","sqrt","stepped","stored","sum","table","tan","tanh","thisnode","topn","tounicode","toxml","transfer","transform","trim","truncate","typeof","ungroup","unicodeorder","variance","wait","which","workunit","xmldecode","xmlencode","xmltext","xmlunicode"],typesint:["integer","unsigned"].join("|"),typesnum:["data","qstring","string","unicode","utf8","varstring","varunicode"],typesone:["ascii","big_endian","boolean","data","decimal","ebcdic","grouped","integer","linkcounted","pattern","qstring","real","record","rule","set of","streamed","string","token","udecimal","unicode","unsigned","utf8","varstring","varunicode"].join("|"),operators:["+","-","/",":=","<","<>","=",">","\\","and","in","not","or"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/@typesint[4|8]/,"type"],[/#(@pounds)/,"type"],[/@typesone/,"type"],[/[a-zA-Z_$][\w-$]*/,{cases:{"@functions":"keyword.function","@keywords":"keyword","@operators":"operator"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/[0-9_]*\.[0-9_]+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]+/,"number.hex"],[/0[bB][01]+/,"number.hex"],[/[0-9_]+/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\v\f\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"]]}}}}]); -//# sourceMappingURL=5444.f86e47ff.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5448.cef3c129.chunk.js b/ydb/core/viewer/monitoring/static/js/5448.cef3c129.chunk.js new file mode 100644 index 000000000000..ad13d03ff018 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5448.cef3c129.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5448],{45448:function(e,n,t){e.exports=function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),_={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function a(e,n,t){var a=_[t];return Array.isArray(a)&&(a=a[n?0:1]),a.replace("%d",e)}var i={name:"de-at",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a}};return t.default.locale(i,null,!0),i}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5450.f0dcfc15.chunk.js b/ydb/core/viewer/monitoring/static/js/5450.f0dcfc15.chunk.js new file mode 100644 index 000000000000..4de32bb5e365 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5450.f0dcfc15.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5450],{95450:function(e,t,r){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(e);function n(e){return e>1&&e<5&&1!=~~(e/10)}function a(e,t,r,a){var s=e+" ";switch(r){case"s":return t||a?"p\xe1r sek\xfand":"p\xe1r sekundami";case"m":return t?"min\xfata":a?"min\xfatu":"min\xfatou";case"mm":return t||a?s+(n(e)?"min\xfaty":"min\xfat"):s+"min\xfatami";case"h":return t?"hodina":a?"hodinu":"hodinou";case"hh":return t||a?s+(n(e)?"hodiny":"hod\xedn"):s+"hodinami";case"d":return t||a?"de\u0148":"d\u0148om";case"dd":return t||a?s+(n(e)?"dni":"dn\xed"):s+"d\u0148ami";case"M":return t||a?"mesiac":"mesiacom";case"MM":return t||a?s+(n(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||a?"rok":"rokom";case"yy":return t||a?s+(n(e)?"roky":"rokov"):s+"rokmi"}}var s={name:"sk",weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),months:"janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"pred %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a}};return r.default.locale(s,null,!0),s}(r(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5491.a460479e.chunk.js b/ydb/core/viewer/monitoring/static/js/5491.a460479e.chunk.js new file mode 100644 index 000000000000..23b10a7d2c76 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5491.a460479e.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5491],{75491:function(e,n,t){e.exports=function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e);function r(e){return e%100==2}function a(e){return e%100==3||e%100==4}function m(e,n,t,m){var u=e+" ";switch(t){case"s":return n||m?"nekaj sekund":"nekaj sekundami";case"m":return n?"ena minuta":"eno minuto";case"mm":return r(e)?u+(n||m?"minuti":"minutama"):a(e)?u+(n||m?"minute":"minutami"):u+(n||m?"minut":"minutami");case"h":return n?"ena ura":"eno uro";case"hh":return r(e)?u+(n||m?"uri":"urama"):a(e)?u+(n||m?"ure":"urami"):u+(n||m?"ur":"urami");case"d":return n||m?"en dan":"enim dnem";case"dd":return r(e)?u+(n||m?"dneva":"dnevoma"):u+(n||m?"dni":"dnevi");case"M":return n||m?"en mesec":"enim mesecem";case"MM":return r(e)?u+(n||m?"meseca":"mesecema"):a(e)?u+(n||m?"mesece":"meseci"):u+(n||m?"mesecev":"meseci");case"y":return n||m?"eno leto":"enim letom";case"yy":return r(e)?u+(n||m?"leti":"letoma"):a(e)?u+(n||m?"leta":"leti"):u+(n||m?"let":"leti")}}var u={name:"sl",weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),weekStart:1,weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:m,m:m,mm:m,h:m,hh:m,d:m,dd:m,M:m,MM:m,y:m,yy:m}};return t.default.locale(u,null,!0),u}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5517.a1034916.chunk.js b/ydb/core/viewer/monitoring/static/js/5517.a1034916.chunk.js deleted file mode 100644 index 4f0e57437827..000000000000 --- a/ydb/core/viewer/monitoring/static/js/5517.a1034916.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5517],{85517:function(e,n,t){t.r(n),t.d(n,{conf:function(){return o},language:function(){return r}});var o={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]},{open:"`",close:"`",notIn:["string","comment"]},{open:"/**",close:" */",notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"},{open:"(",close:")"},{open:'"',close:'"'},{open:"`",close:"`"}],folding:{markers:{start:/^\s*\s*#?region\b/,end:/^\s*\s*#?endregion\b/}}},r={defaultToken:"invalid",tokenPostfix:".dart",keywords:["abstract","dynamic","implements","show","as","else","import","static","assert","enum","in","super","async","export","interface","switch","await","extends","is","sync","break","external","library","this","case","factory","mixin","throw","catch","false","new","true","class","final","null","try","const","finally","on","typedef","continue","for","operator","var","covariant","Function","part","void","default","get","rethrow","while","deferred","hide","return","with","do","if","set","yield"],typeKeywords:["int","double","String","bool"],operators:["+","-","*","/","~/","%","++","--","==","!=",">","<",">=","<=","=","-=","/=","%=",">>=","^=","+=","*=","~/=","<<=","&=","!=","||","&&","&","|","^","~","<<",">>","!",">>>","??","?",":","|="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,"delimiter.bracket"],{include:"common"}],common:[[/[a-z_$][\w$]*/,{cases:{"@typeKeywords":"type.identifier","@keywords":"keyword","@default":"identifier"}}],[/[A-Z_$][\w\$]*/,"type.identifier"],{include:"@whitespace"},[/\/(?=([^\\\/]|\\.)+\/([gimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,{token:"regexp",bracket:"@open",next:"@regexp"}],[/@[a-zA-Z]+/,"annotation"],[/[()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/!(?=([^=]|$))/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/(@digits)[eE]([\-+]?(@digits))?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,"number.float"],[/0[xX](@hexdigits)n?/,"number.hex"],[/0[oO]?(@octaldigits)n?/,"number.octal"],[/0[bB](@binarydigits)n?/,"number.binary"],[/(@digits)n?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@jsdoc"],[/\/\*/,"comment","@comment"],[/\/\/\/.*$/,"comment.doc"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],jsdoc:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,["regexp.escape.control","regexp.escape.control","regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,["regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?:|\?=|\?!)/,["regexp.escape.control","regexp.escape.control"]],[/[()]/,"regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/[^\\\/]/,"regexp"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/(\/)([gimsuy]*)/,[{token:"regexp",bracket:"@close",next:"@pop"},"keyword.other"]]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,{token:"regexp.escape.control",next:"@pop",bracket:"@close"}]],string_double:[[/[^\\"\$]+/,"string"],[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"],[/\$\w+/,"identifier"]],string_single:[[/[^\\'\$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"],[/\$\w+/,"identifier"]]}}}}]); -//# sourceMappingURL=5517.a1034916.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/556.55f00ac6.chunk.js b/ydb/core/viewer/monitoring/static/js/556.55f00ac6.chunk.js new file mode 100644 index 000000000000..619843ac101f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/556.55f00ac6.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[556],{20556:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"el",weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),months:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03b9_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0\u03c4_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),ordinal:function(_){return _},weekStart:1,relativeTime:{future:"\u03c3\u03b5 %s",past:"\u03c0\u03c1\u03b9\u03bd %s",s:"\u03bc\u03b5\u03c1\u03b9\u03ba\u03ac \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1 \u03bc\u03ae\u03bd\u03b1",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1 \u03c7\u03c1\u03cc\u03bd\u03bf",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5643.00957838.chunk.js b/ydb/core/viewer/monitoring/static/js/5643.00957838.chunk.js new file mode 100644 index 000000000000..9315f7fec19c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5643.00957838.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5643],{45643:function(e,a,_){e.exports=function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=a(e),t="sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),s="sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),n=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/,i=function(e,a){return n.test(a)?t[e.month()]:s[e.month()]};i.s=s,i.f=t;var o={name:"hr",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),months:i,monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},relativeTime:{future:"za %s",past:"prije %s",s:"sekunda",m:"minuta",mm:"%d minuta",h:"sat",hh:"%d sati",d:"dan",dd:"%d dana",M:"mjesec",MM:"%d mjeseci",y:"godina",yy:"%d godine"},ordinal:function(e){return e+"."}};return _.default.locale(o,null,!0),o}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5646.ced0e1ae.chunk.js b/ydb/core/viewer/monitoring/static/js/5646.ced0e1ae.chunk.js deleted file mode 100644 index fd243c264137..000000000000 --- a/ydb/core/viewer/monitoring/static/js/5646.ced0e1ae.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5646],{95646:function(e,_,t){t.r(_),t.d(_,{conf:function(){return r},language:function(){return i}});var r={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},i={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["AES128","AES256","ALL","ALLOWOVERWRITE","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","AUTHORIZATION","BACKUP","BETWEEN","BINARY","BLANKSASNULL","BOTH","BY","BYTEDICT","BZIP2","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","CREDENTIALS","CROSS","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURRENT_USER_ID","DEFAULT","DEFERRABLE","DEFLATE","DEFRAG","DELTA","DELTA32K","DESC","DISABLE","DISTINCT","DO","ELSE","EMPTYASNULL","ENABLE","ENCODE","ENCRYPT","ENCRYPTION","END","EXCEPT","EXPLICIT","FALSE","FOR","FOREIGN","FREEZE","FROM","FULL","GLOBALDICT256","GLOBALDICT64K","GRANT","GROUP","GZIP","HAVING","IDENTITY","IGNORE","ILIKE","IN","INITIALLY","INNER","INTERSECT","INTO","IS","ISNULL","JOIN","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","LUN","LUNS","LZO","LZOP","MINUS","MOSTLY13","MOSTLY32","MOSTLY8","NATURAL","NEW","NOT","NOTNULL","NULL","NULLS","OFF","OFFLINE","OFFSET","OID","OLD","ON","ONLY","OPEN","OR","ORDER","OUTER","OVERLAPS","PARALLEL","PARTITION","PERCENT","PERMISSIONS","PLACING","PRIMARY","RAW","READRATIO","RECOVER","REFERENCES","RESPECT","REJECTLOG","RESORT","RESTORE","RIGHT","SELECT","SESSION_USER","SIMILAR","SNAPSHOT","SOME","SYSDATE","SYSTEM","TABLE","TAG","TDES","TEXT255","TEXT32K","THEN","TIMESTAMP","TO","TOP","TRAILING","TRUE","TRUNCATECOLUMNS","UNION","UNIQUE","USER","USING","VERBOSE","WALLET","WHEN","WHERE","WITH","WITHOUT"],operators:["AND","BETWEEN","IN","LIKE","NOT","OR","IS","NULL","INTERSECT","UNION","INNER","JOIN","LEFT","OUTER","RIGHT"],builtinFunctions:["current_schema","current_schemas","has_database_privilege","has_schema_privilege","has_table_privilege","age","current_time","current_timestamp","localtime","isfinite","now","ascii","get_bit","get_byte","set_bit","set_byte","to_ascii","approximate percentile_disc","avg","count","listagg","max","median","min","percentile_cont","stddev_samp","stddev_pop","sum","var_samp","var_pop","bit_and","bit_or","bool_and","bool_or","cume_dist","first_value","lag","last_value","lead","nth_value","ratio_to_report","dense_rank","ntile","percent_rank","rank","row_number","case","coalesce","decode","greatest","least","nvl","nvl2","nullif","add_months","at time zone","convert_timezone","current_date","date_cmp","date_cmp_timestamp","date_cmp_timestamptz","date_part_year","dateadd","datediff","date_part","date_trunc","extract","getdate","interval_cmp","last_day","months_between","next_day","sysdate","timeofday","timestamp_cmp","timestamp_cmp_date","timestamp_cmp_timestamptz","timestamptz_cmp","timestamptz_cmp_date","timestamptz_cmp_timestamp","timezone","to_timestamp","trunc","abs","acos","asin","atan","atan2","cbrt","ceil","ceiling","checksum","cos","cot","degrees","dexp","dlog1","dlog10","exp","floor","ln","log","mod","pi","power","radians","random","round","sin","sign","sqrt","tan","to_hex","bpcharcmp","btrim","bttext_pattern_cmp","char_length","character_length","charindex","chr","concat","crc32","func_sha1","initcap","left and rights","len","length","lower","lpad and rpads","ltrim","md5","octet_length","position","quote_ident","quote_literal","regexp_count","regexp_instr","regexp_replace","regexp_substr","repeat","replace","replicate","reverse","rtrim","split_part","strpos","strtol","substring","textlen","translate","trim","upper","cast","convert","to_char","to_date","to_number","json_array_length","json_extract_array_element_text","json_extract_path_text","current_setting","pg_cancel_backend","pg_terminate_backend","set_config","current_database","current_user","current_user_id","pg_backend_pid","pg_last_copy_count","pg_last_copy_id","pg_last_query_id","pg_last_unload_count","session_user","slice_num","user","version","abbrev","acosd","any","area","array_agg","array_append","array_cat","array_dims","array_fill","array_length","array_lower","array_ndims","array_position","array_positions","array_prepend","array_remove","array_replace","array_to_json","array_to_string","array_to_tsvector","array_upper","asind","atan2d","atand","bit","bit_length","bound_box","box","brin_summarize_new_values","broadcast","cardinality","center","circle","clock_timestamp","col_description","concat_ws","convert_from","convert_to","corr","cosd","cotd","covar_pop","covar_samp","current_catalog","current_query","current_role","currval","cursor_to_xml","diameter","div","encode","enum_first","enum_last","enum_range","every","family","format","format_type","generate_series","generate_subscripts","get_current_ts_config","gin_clean_pending_list","grouping","has_any_column_privilege","has_column_privilege","has_foreign_data_wrapper_privilege","has_function_privilege","has_language_privilege","has_sequence_privilege","has_server_privilege","has_tablespace_privilege","has_type_privilege","height","host","hostmask","inet_client_addr","inet_client_port","inet_merge","inet_same_family","inet_server_addr","inet_server_port","isclosed","isempty","isopen","json_agg","json_object","json_object_agg","json_populate_record","json_populate_recordset","json_to_record","json_to_recordset","jsonb_agg","jsonb_object_agg","justify_days","justify_hours","justify_interval","lastval","left","line","localtimestamp","lower_inc","lower_inf","lpad","lseg","make_date","make_interval","make_time","make_timestamp","make_timestamptz","masklen","mode","netmask","network","nextval","npoints","num_nonnulls","num_nulls","numnode","obj_description","overlay","parse_ident","path","pclose","percentile_disc","pg_advisory_lock","pg_advisory_lock_shared","pg_advisory_unlock","pg_advisory_unlock_all","pg_advisory_unlock_shared","pg_advisory_xact_lock","pg_advisory_xact_lock_shared","pg_backup_start_time","pg_blocking_pids","pg_client_encoding","pg_collation_is_visible","pg_column_size","pg_conf_load_time","pg_control_checkpoint","pg_control_init","pg_control_recovery","pg_control_system","pg_conversion_is_visible","pg_create_logical_replication_slot","pg_create_physical_replication_slot","pg_create_restore_point","pg_current_xlog_flush_location","pg_current_xlog_insert_location","pg_current_xlog_location","pg_database_size","pg_describe_object","pg_drop_replication_slot","pg_export_snapshot","pg_filenode_relation","pg_function_is_visible","pg_get_constraintdef","pg_get_expr","pg_get_function_arguments","pg_get_function_identity_arguments","pg_get_function_result","pg_get_functiondef","pg_get_indexdef","pg_get_keywords","pg_get_object_address","pg_get_owned_sequence","pg_get_ruledef","pg_get_serial_sequence","pg_get_triggerdef","pg_get_userbyid","pg_get_viewdef","pg_has_role","pg_identify_object","pg_identify_object_as_address","pg_index_column_has_property","pg_index_has_property","pg_indexam_has_property","pg_indexes_size","pg_is_in_backup","pg_is_in_recovery","pg_is_other_temp_schema","pg_is_xlog_replay_paused","pg_last_committed_xact","pg_last_xact_replay_timestamp","pg_last_xlog_receive_location","pg_last_xlog_replay_location","pg_listening_channels","pg_logical_emit_message","pg_logical_slot_get_binary_changes","pg_logical_slot_get_changes","pg_logical_slot_peek_binary_changes","pg_logical_slot_peek_changes","pg_ls_dir","pg_my_temp_schema","pg_notification_queue_usage","pg_opclass_is_visible","pg_operator_is_visible","pg_opfamily_is_visible","pg_options_to_table","pg_postmaster_start_time","pg_read_binary_file","pg_read_file","pg_relation_filenode","pg_relation_filepath","pg_relation_size","pg_reload_conf","pg_replication_origin_create","pg_replication_origin_drop","pg_replication_origin_oid","pg_replication_origin_progress","pg_replication_origin_session_is_setup","pg_replication_origin_session_progress","pg_replication_origin_session_reset","pg_replication_origin_session_setup","pg_replication_origin_xact_reset","pg_replication_origin_xact_setup","pg_rotate_logfile","pg_size_bytes","pg_size_pretty","pg_sleep","pg_sleep_for","pg_sleep_until","pg_start_backup","pg_stat_file","pg_stop_backup","pg_switch_xlog","pg_table_is_visible","pg_table_size","pg_tablespace_databases","pg_tablespace_location","pg_tablespace_size","pg_total_relation_size","pg_trigger_depth","pg_try_advisory_lock","pg_try_advisory_lock_shared","pg_try_advisory_xact_lock","pg_try_advisory_xact_lock_shared","pg_ts_config_is_visible","pg_ts_dict_is_visible","pg_ts_parser_is_visible","pg_ts_template_is_visible","pg_type_is_visible","pg_typeof","pg_xact_commit_timestamp","pg_xlog_location_diff","pg_xlog_replay_pause","pg_xlog_replay_resume","pg_xlogfile_name","pg_xlogfile_name_offset","phraseto_tsquery","plainto_tsquery","point","polygon","popen","pqserverversion","query_to_xml","querytree","quote_nullable","radius","range_merge","regexp_matches","regexp_split_to_array","regexp_split_to_table","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","right","row_security_active","row_to_json","rpad","scale","set_masklen","setseed","setval","setweight","shobj_description","sind","sprintf","statement_timestamp","stddev","string_agg","string_to_array","strip","substr","table_to_xml","table_to_xml_and_xmlschema","tand","text","to_json","to_regclass","to_regnamespace","to_regoper","to_regoperator","to_regproc","to_regprocedure","to_regrole","to_regtype","to_tsquery","to_tsvector","transaction_timestamp","ts_debug","ts_delete","ts_filter","ts_headline","ts_lexize","ts_parse","ts_rank","ts_rank_cd","ts_rewrite","ts_stat","ts_token_type","tsquery_phrase","tsvector_to_array","tsvector_update_trigger","tsvector_update_trigger_column","txid_current","txid_current_snapshot","txid_snapshot_xip","txid_snapshot_xmax","txid_snapshot_xmin","txid_visible_in_snapshot","unnest","upper_inc","upper_inf","variance","width","width_bucket","xml_is_well_formed","xml_is_well_formed_content","xml_is_well_formed_document","xmlagg","xmlcomment","xmlconcat","xmlelement","xmlexists","xmlforest","xmlparse","xmlpi","xmlroot","xmlserialize","xpath","xpath_exists"],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/"/,{token:"identifier.quote",next:"@quotedIdentifier"}]],quotedIdentifier:[[/[^"]+/,"identifier"],[/""/,"identifier"],[/"/,{token:"identifier.quote",next:"@pop"}]],scopes:[]}}}}]); -//# sourceMappingURL=5646.ced0e1ae.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5661.c83a4eb0.chunk.js b/ydb/core/viewer/monitoring/static/js/5661.c83a4eb0.chunk.js new file mode 100644 index 000000000000..79eea68d3d1f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5661.c83a4eb0.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 5661.c83a4eb0.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5661],{55661:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>r,language:()=>s});var r={comments:{lineComment:"#",blockComment:["=begin","=end"]},brackets:[["(",")"],["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],indentationRules:{increaseIndentPattern:new RegExp("^\\s*((begin|class|(private|protected)\\s+def|def|else|elsif|ensure|for|if|module|rescue|unless|until|when|while|case)|([^#]*\\sdo\\b)|([^#]*=\\s*(case|if|unless)))\\b([^#\\{;]|(\"|'|/).*\\4)*(#.*)?$"),decreaseIndentPattern:new RegExp("^\\s*([}\\]]([,)]?\\s*(#|$)|\\.[a-zA-Z_]\\w*\\b)|(end|rescue|ensure|else|elsif|when)\\b)")}},s={tokenPostfix:".ruby",keywords:["__LINE__","__ENCODING__","__FILE__","BEGIN","END","alias","and","begin","break","case","class","def","defined?","do","else","elsif","end","ensure","for","false","if","in","module","next","nil","not","or","redo","rescue","retry","return","self","super","then","true","undef","unless","until","when","while","yield"],keywordops:["::","..","...","?",":","=>"],builtins:["require","public","private","include","extend","attr_reader","protected","private_class_method","protected_class_method","new"],declarations:["module","class","def","case","do","begin","for","if","while","until","unless"],linedecls:["def","case","do","begin","for","if","while","until","unless"],operators:["^","&","|","<=>","==","===","!~","=~",">",">=","<","<=","<<",">>","+","-","*","/","%","**","~","+@","-@","[]","[]=","`","+=","-=","*=","**=","/=","^=","%=","<<=",">>=","&=","&&=","||=","|="],brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],symbols:/[=><!~?:&|+\-*\/\^%\.]+/,escape:/(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,escapes:/\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,decpart:/\d(_?\d)*/,decimal:/0|@decpart/,delim:/[^a-zA-Z0-9\s\n\r]/,heredelim:/(?:\w+|'[^']*'|"[^"]*"|`[^`]*`)/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[AzZbBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})?/,tokenizer:{root:[[/^(\s*)([a-z_]\w*[!?=]?)/,["white",{cases:{"for|until|while":{token:"keyword.$2",next:"@dodecl.$2"},"@declarations":{token:"keyword.$2",next:"@root.$2"},end:{token:"keyword.$S2",next:"@pop"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}]],[/[a-z_]\w*[!?=]?/,{cases:{"if|unless|while|until":{token:"keyword.$0x",next:"@modifier.$0x"},for:{token:"keyword.$2",next:"@dodecl.$2"},"@linedecls":{token:"keyword.$0",next:"@root.$0"},end:{token:"keyword.$S2",next:"@pop"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],[/[A-Z][\w]*[!?=]?/,"constructor.identifier"],[/\$[\w]*/,"global.constant"],[/@[\w]*/,"namespace.instance.identifier"],[/@@@[\w]*/,"namespace.class.identifier"],[/<<[-~](@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],[/[ \t\r\n]+<<(@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],[/^<<(@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],{include:"@whitespace"},[/"/,{token:"string.d.delim",next:'@dstring.d."'}],[/'/,{token:"string.sq.delim",next:"@sstring.sq"}],[/%([rsqxwW]|Q?)/,{token:"@rematch",next:"pstring"}],[/`/,{token:"string.x.delim",next:"@dstring.x.`"}],[/:(\w|[$@])\w*[!?=]?/,"string.s"],[/:"/,{token:"string.s.delim",next:'@dstring.s."'}],[/:'/,{token:"string.s.delim",next:"@sstring.s"}],[/\/(?=(\\\/|[^\/\n])+\/)/,{token:"regexp.delim",next:"@regexp"}],[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@keywordops":"keyword","@operators":"operator","@default":""}}],[/[;,]/,"delimiter"],[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/,"number.hex"],[/0[_oO][0-7](_?[0-7])*/,"number.octal"],[/0[bB][01](_?[01])*/,"number.binary"],[/0[dD]@decpart/,"number"],[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)/,{cases:{$1:"number.float","@default":"number"}}]],dodecl:[[/^/,{token:"",switchTo:"@root.$S2"}],[/[a-z_]\w*[!?=]?/,{cases:{end:{token:"keyword.$S2",next:"@pop"},do:{token:"keyword",switchTo:"@root.$S2"},"@linedecls":{token:"@rematch",switchTo:"@root.$S2"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],{include:"@root"}],modifier:[[/^/,"","@pop"],[/[a-z_]\w*[!?=]?/,{cases:{end:{token:"keyword.$S2",next:"@pop"},"then|else|elsif|do":{token:"keyword",switchTo:"@root.$S2"},"@linedecls":{token:"@rematch",switchTo:"@root.$S2"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],{include:"@root"}],sstring:[[/[^\\']+/,"string.$S2"],[/\\\\|\\'|\\$/,"string.$S2.escape"],[/\\./,"string.$S2.invalid"],[/'/,{token:"string.$S2.delim",next:"@pop"}]],dstring:[[/[^\\`"#]+/,"string.$S2"],[/#/,"string.$S2.escape","@interpolated"],[/\\$/,"string.$S2.escape"],[/@escapes/,"string.$S2.escape"],[/\\./,"string.$S2.escape.invalid"],[/[`"]/,{cases:{"$#==$S3":{token:"string.$S2.delim",next:"@pop"},"@default":"string.$S2"}}]],heredoc:[[/^(\s*)(@heredelim)$/,{cases:{"$2==$S2":["string.heredoc",{token:"string.heredoc.delimiter",next:"@pop"}],"@default":["string.heredoc","string.heredoc"]}}],[/.*/,"string.heredoc"]],interpolated:[[/\$\w*/,"global.constant","@pop"],[/@\w*/,"namespace.class.identifier","@pop"],[/@@@\w*/,"namespace.instance.identifier","@pop"],[/[{]/,{token:"string.escape.curly",switchTo:"@interpolated_compound"}],["","","@pop"]],interpolated_compound:[[/[}]/,{token:"string.escape.curly",next:"@pop"}],{include:"@root"}],pregexp:[{include:"@whitespace"},[/[^\(\{\[\\]/,{cases:{"$#==$S3":{token:"regexp.delim",next:"@pop"},"$#==$S2":{token:"regexp.delim",next:"@push"},"~[)}\\]]":"@brackets.regexp.escape.control","~@regexpctl":"regexp.escape.control","@default":"regexp"}}],{include:"@regexcontrol"}],regexp:[{include:"@regexcontrol"},[/[^\\\/]/,"regexp"],["/[ixmp]*",{token:"regexp.delim"},"@pop"]],regexcontrol:[[/(\{)(\d+(?:,\d*)?)(\})/,["@brackets.regexp.escape.control","regexp.escape.control","@brackets.regexp.escape.control"]],[/(\[)(\^?)/,["@brackets.regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?[:=!])/,["@brackets.regexp.escape.control","regexp.escape.control"]],[/\(\?#/,{token:"regexp.escape.control",next:"@regexpcomment"}],[/[()]/,"@brackets.regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/\\$/,"regexp.escape"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/#/,"regexp.escape","@interpolated"]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/\\$/,"regexp.escape"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,"@brackets.regexp.escape.control","@pop"]],regexpcomment:[[/[^)]+/,"comment"],[/\)/,{token:"regexp.escape.control",next:"@pop"}]],pstring:[[/%([qws])\(/,{token:"string.$1.delim",switchTo:"@qstring.$1.(.)"}],[/%([qws])\[/,{token:"string.$1.delim",switchTo:"@qstring.$1.[.]"}],[/%([qws])\{/,{token:"string.$1.delim",switchTo:"@qstring.$1.{.}"}],[/%([qws])</,{token:"string.$1.delim",switchTo:"@qstring.$1.<.>"}],[/%([qws])(@delim)/,{token:"string.$1.delim",switchTo:"@qstring.$1.$2.$2"}],[/%r\(/,{token:"regexp.delim",switchTo:"@pregexp.(.)"}],[/%r\[/,{token:"regexp.delim",switchTo:"@pregexp.[.]"}],[/%r\{/,{token:"regexp.delim",switchTo:"@pregexp.{.}"}],[/%r</,{token:"regexp.delim",switchTo:"@pregexp.<.>"}],[/%r(@delim)/,{token:"regexp.delim",switchTo:"@pregexp.$1.$1"}],[/%(x|W|Q?)\(/,{token:"string.$1.delim",switchTo:"@qqstring.$1.(.)"}],[/%(x|W|Q?)\[/,{token:"string.$1.delim",switchTo:"@qqstring.$1.[.]"}],[/%(x|W|Q?)\{/,{token:"string.$1.delim",switchTo:"@qqstring.$1.{.}"}],[/%(x|W|Q?)</,{token:"string.$1.delim",switchTo:"@qqstring.$1.<.>"}],[/%(x|W|Q?)(@delim)/,{token:"string.$1.delim",switchTo:"@qqstring.$1.$2.$2"}],[/%([rqwsxW]|Q?)./,{token:"invalid",next:"@pop"}],[/./,{token:"invalid",next:"@pop"}]],qstring:[[/\\$/,"string.$S2.escape"],[/\\./,"string.$S2.escape"],[/./,{cases:{"$#==$S4":{token:"string.$S2.delim",next:"@pop"},"$#==$S3":{token:"string.$S2.delim",next:"@push"},"@default":"string.$S2"}}]],qqstring:[[/#/,"string.$S2.escape","@interpolated"],{include:"@qstring"}],whitespace:[[/[ \t\r\n]+/,""],[/^\s*=begin\b/,"comment","@comment"],[/#.*$/,"comment"]],comment:[[/[^=]+/,"comment"],[/^\s*=begin\b/,"comment.invalid"],[/^\s*=end\b.*/,"comment","@pop"],[/[=]/,"comment"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5661.c83a4eb0.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/5661.c83a4eb0.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5661.c83a4eb0.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/5670.5c30cef1.chunk.js b/ydb/core/viewer/monitoring/static/js/5670.5c30cef1.chunk.js new file mode 100644 index 000000000000..739794f3345b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5670.5c30cef1.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5670],{5670:function(e,_,s){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=_(e),d={name:"es",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:function(e){return e+"\xba"}};return s.default.locale(d,null,!0),d}(s(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/569.abbf95fd.chunk.js b/ydb/core/viewer/monitoring/static/js/569.abbf95fd.chunk.js deleted file mode 100644 index 6d7a1ce1e7db..000000000000 --- a/ydb/core/viewer/monitoring/static/js/569.abbf95fd.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[569],{40569:function(e,t,n){n.r(t),n.d(t,{conf:function(){return r},language:function(){return s}});var r={comments:{lineComment:"#",blockComment:["=begin","=end"]},brackets:[["(",")"],["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],indentationRules:{increaseIndentPattern:new RegExp("^\\s*((begin|class|(private|protected)\\s+def|def|else|elsif|ensure|for|if|module|rescue|unless|until|when|while|case)|([^#]*\\sdo\\b)|([^#]*=\\s*(case|if|unless)))\\b([^#\\{;]|(\"|'|/).*\\4)*(#.*)?$"),decreaseIndentPattern:new RegExp("^\\s*([}\\]]([,)]?\\s*(#|$)|\\.[a-zA-Z_]\\w*\\b)|(end|rescue|ensure|else|elsif|when)\\b)")}},s={tokenPostfix:".ruby",keywords:["__LINE__","__ENCODING__","__FILE__","BEGIN","END","alias","and","begin","break","case","class","def","defined?","do","else","elsif","end","ensure","for","false","if","in","module","next","nil","not","or","redo","rescue","retry","return","self","super","then","true","undef","unless","until","when","while","yield"],keywordops:["::","..","...","?",":","=>"],builtins:["require","public","private","include","extend","attr_reader","protected","private_class_method","protected_class_method","new"],declarations:["module","class","def","case","do","begin","for","if","while","until","unless"],linedecls:["def","case","do","begin","for","if","while","until","unless"],operators:["^","&","|","<=>","==","===","!~","=~",">",">=","<","<=","<<",">>","+","-","*","/","%","**","~","+@","-@","[]","[]=","`","+=","-=","*=","**=","/=","^=","%=","<<=",">>=","&=","&&=","||=","|="],brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],symbols:/[=><!~?:&|+\-*\/\^%\.]+/,escape:/(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,escapes:/\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,decpart:/\d(_?\d)*/,decimal:/0|@decpart/,delim:/[^a-zA-Z0-9\s\n\r]/,heredelim:/(?:\w+|'[^']*'|"[^"]*"|`[^`]*`)/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[AzZbBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})?/,tokenizer:{root:[[/^(\s*)([a-z_]\w*[!?=]?)/,["white",{cases:{"for|until|while":{token:"keyword.$2",next:"@dodecl.$2"},"@declarations":{token:"keyword.$2",next:"@root.$2"},end:{token:"keyword.$S2",next:"@pop"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}]],[/[a-z_]\w*[!?=]?/,{cases:{"if|unless|while|until":{token:"keyword.$0x",next:"@modifier.$0x"},for:{token:"keyword.$2",next:"@dodecl.$2"},"@linedecls":{token:"keyword.$0",next:"@root.$0"},end:{token:"keyword.$S2",next:"@pop"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],[/[A-Z][\w]*[!?=]?/,"constructor.identifier"],[/\$[\w]*/,"global.constant"],[/@[\w]*/,"namespace.instance.identifier"],[/@@@[\w]*/,"namespace.class.identifier"],[/<<[-~](@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],[/[ \t\r\n]+<<(@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],[/^<<(@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],{include:"@whitespace"},[/"/,{token:"string.d.delim",next:'@dstring.d."'}],[/'/,{token:"string.sq.delim",next:"@sstring.sq"}],[/%([rsqxwW]|Q?)/,{token:"@rematch",next:"pstring"}],[/`/,{token:"string.x.delim",next:"@dstring.x.`"}],[/:(\w|[$@])\w*[!?=]?/,"string.s"],[/:"/,{token:"string.s.delim",next:'@dstring.s."'}],[/:'/,{token:"string.s.delim",next:"@sstring.s"}],[/\/(?=(\\\/|[^\/\n])+\/)/,{token:"regexp.delim",next:"@regexp"}],[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@keywordops":"keyword","@operators":"operator","@default":""}}],[/[;,]/,"delimiter"],[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/,"number.hex"],[/0[_oO][0-7](_?[0-7])*/,"number.octal"],[/0[bB][01](_?[01])*/,"number.binary"],[/0[dD]@decpart/,"number"],[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)/,{cases:{$1:"number.float","@default":"number"}}]],dodecl:[[/^/,{token:"",switchTo:"@root.$S2"}],[/[a-z_]\w*[!?=]?/,{cases:{end:{token:"keyword.$S2",next:"@pop"},do:{token:"keyword",switchTo:"@root.$S2"},"@linedecls":{token:"@rematch",switchTo:"@root.$S2"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],{include:"@root"}],modifier:[[/^/,"","@pop"],[/[a-z_]\w*[!?=]?/,{cases:{end:{token:"keyword.$S2",next:"@pop"},"then|else|elsif|do":{token:"keyword",switchTo:"@root.$S2"},"@linedecls":{token:"@rematch",switchTo:"@root.$S2"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],{include:"@root"}],sstring:[[/[^\\']+/,"string.$S2"],[/\\\\|\\'|\\$/,"string.$S2.escape"],[/\\./,"string.$S2.invalid"],[/'/,{token:"string.$S2.delim",next:"@pop"}]],dstring:[[/[^\\`"#]+/,"string.$S2"],[/#/,"string.$S2.escape","@interpolated"],[/\\$/,"string.$S2.escape"],[/@escapes/,"string.$S2.escape"],[/\\./,"string.$S2.escape.invalid"],[/[`"]/,{cases:{"$#==$S3":{token:"string.$S2.delim",next:"@pop"},"@default":"string.$S2"}}]],heredoc:[[/^(\s*)(@heredelim)$/,{cases:{"$2==$S2":["string.heredoc",{token:"string.heredoc.delimiter",next:"@pop"}],"@default":["string.heredoc","string.heredoc"]}}],[/.*/,"string.heredoc"]],interpolated:[[/\$\w*/,"global.constant","@pop"],[/@\w*/,"namespace.class.identifier","@pop"],[/@@@\w*/,"namespace.instance.identifier","@pop"],[/[{]/,{token:"string.escape.curly",switchTo:"@interpolated_compound"}],["","","@pop"]],interpolated_compound:[[/[}]/,{token:"string.escape.curly",next:"@pop"}],{include:"@root"}],pregexp:[{include:"@whitespace"},[/[^\(\{\[\\]/,{cases:{"$#==$S3":{token:"regexp.delim",next:"@pop"},"$#==$S2":{token:"regexp.delim",next:"@push"},"~[)}\\]]":"@brackets.regexp.escape.control","~@regexpctl":"regexp.escape.control","@default":"regexp"}}],{include:"@regexcontrol"}],regexp:[{include:"@regexcontrol"},[/[^\\\/]/,"regexp"],["/[ixmp]*",{token:"regexp.delim"},"@pop"]],regexcontrol:[[/(\{)(\d+(?:,\d*)?)(\})/,["@brackets.regexp.escape.control","regexp.escape.control","@brackets.regexp.escape.control"]],[/(\[)(\^?)/,["@brackets.regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?[:=!])/,["@brackets.regexp.escape.control","regexp.escape.control"]],[/\(\?#/,{token:"regexp.escape.control",next:"@regexpcomment"}],[/[()]/,"@brackets.regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/\\$/,"regexp.escape"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/#/,"regexp.escape","@interpolated"]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/\\$/,"regexp.escape"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,"@brackets.regexp.escape.control","@pop"]],regexpcomment:[[/[^)]+/,"comment"],[/\)/,{token:"regexp.escape.control",next:"@pop"}]],pstring:[[/%([qws])\(/,{token:"string.$1.delim",switchTo:"@qstring.$1.(.)"}],[/%([qws])\[/,{token:"string.$1.delim",switchTo:"@qstring.$1.[.]"}],[/%([qws])\{/,{token:"string.$1.delim",switchTo:"@qstring.$1.{.}"}],[/%([qws])</,{token:"string.$1.delim",switchTo:"@qstring.$1.<.>"}],[/%([qws])(@delim)/,{token:"string.$1.delim",switchTo:"@qstring.$1.$2.$2"}],[/%r\(/,{token:"regexp.delim",switchTo:"@pregexp.(.)"}],[/%r\[/,{token:"regexp.delim",switchTo:"@pregexp.[.]"}],[/%r\{/,{token:"regexp.delim",switchTo:"@pregexp.{.}"}],[/%r</,{token:"regexp.delim",switchTo:"@pregexp.<.>"}],[/%r(@delim)/,{token:"regexp.delim",switchTo:"@pregexp.$1.$1"}],[/%(x|W|Q?)\(/,{token:"string.$1.delim",switchTo:"@qqstring.$1.(.)"}],[/%(x|W|Q?)\[/,{token:"string.$1.delim",switchTo:"@qqstring.$1.[.]"}],[/%(x|W|Q?)\{/,{token:"string.$1.delim",switchTo:"@qqstring.$1.{.}"}],[/%(x|W|Q?)</,{token:"string.$1.delim",switchTo:"@qqstring.$1.<.>"}],[/%(x|W|Q?)(@delim)/,{token:"string.$1.delim",switchTo:"@qqstring.$1.$2.$2"}],[/%([rqwsxW]|Q?)./,{token:"invalid",next:"@pop"}],[/./,{token:"invalid",next:"@pop"}]],qstring:[[/\\$/,"string.$S2.escape"],[/\\./,"string.$S2.escape"],[/./,{cases:{"$#==$S4":{token:"string.$S2.delim",next:"@pop"},"$#==$S3":{token:"string.$S2.delim",next:"@push"},"@default":"string.$S2"}}]],qqstring:[[/#/,"string.$S2.escape","@interpolated"],{include:"@qstring"}],whitespace:[[/[ \t\r\n]+/,""],[/^\s*=begin\b/,"comment","@comment"],[/#.*$/,"comment"]],comment:[[/[^=]+/,"comment"],[/^\s*=begin\b/,"comment.invalid"],[/^\s*=end\b.*/,"comment","@pop"],[/[=]/,"comment"]]}}}}]); -//# sourceMappingURL=569.abbf95fd.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5695.d81b70ca.chunk.js b/ydb/core/viewer/monitoring/static/js/5695.d81b70ca.chunk.js deleted file mode 100644 index 99a2a1bc0e2f..000000000000 --- a/ydb/core/viewer/monitoring/static/js/5695.d81b70ca.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5695],{25695:function(e,n,o){o.r(n),o.d(n,{conf:function(){return t},language:function(){return s}});var t={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".objective-c",keywords:["#import","#include","#define","#else","#endif","#if","#ifdef","#ifndef","#ident","#undef","@class","@defs","@dynamic","@encode","@end","@implementation","@interface","@package","@private","@protected","@property","@protocol","@public","@selector","@synthesize","__declspec","assign","auto","BOOL","break","bycopy","byref","case","char","Class","const","copy","continue","default","do","double","else","enum","extern","FALSE","false","float","for","goto","if","in","int","id","inout","IMP","long","nil","nonatomic","NULL","oneway","out","private","public","protected","readwrite","readonly","register","return","SEL","self","short","signed","sizeof","static","struct","super","switch","typedef","TRUE","true","union","unsigned","volatile","void","while"],decpart:/\d(_?\d)*/,decimal:/0|@decpart/,tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},[/[,:;]/,"delimiter"],[/[{}\[\]()<>]/,"@brackets"],[/[a-zA-Z@#]\w*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[<>=\\+\\-\\*\\/\\^\\|\\~,]|and\\b|or\\b|not\\b]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],numbers:[[/0[xX][0-9a-fA-F]*(_?[0-9a-fA-F])*/,"number.hex"],[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)[fF]*/,{cases:{"(\\d)*":"number",$0:"number.float"}}]],strings:[[/'$/,"string.escape","@popall"],[/'/,"string.escape","@stringBody"],[/"$/,"string.escape","@popall"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/[^\\']+$/,"string","@popall"],[/[^\\']+/,"string"],[/\\./,"string"],[/'/,"string.escape","@popall"],[/\\$/,"string"]],dblStringBody:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string"],[/"/,"string.escape","@popall"],[/\\$/,"string"]]}}}}]); -//# sourceMappingURL=5695.d81b70ca.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5720.39a954f1.chunk.js b/ydb/core/viewer/monitoring/static/js/5720.39a954f1.chunk.js new file mode 100644 index 000000000000..70810b437fec --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5720.39a954f1.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5720],{85720:function(a,i,_){a.exports=function(a){"use strict";function i(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var _=i(a),e={name:"ga",weekdays:"D\xe9 Domhnaigh_D\xe9 Luain_D\xe9 M\xe1irt_D\xe9 C\xe9adaoin_D\xe9ardaoin_D\xe9 hAoine_D\xe9 Satharn".split("_"),months:"Ean\xe1ir_Feabhra_M\xe1rta_Aibre\xe1n_Bealtaine_M\xe9itheamh_I\xfail_L\xfanasa_Me\xe1n F\xf3mhair_Deaireadh F\xf3mhair_Samhain_Nollaig".split("_"),weekStart:1,weekdaysShort:"Dom_Lua_M\xe1i_C\xe9a_D\xe9a_hAo_Sat".split("_"),monthsShort:"Ean\xe1_Feab_M\xe1rt_Aibr_Beal_M\xe9it_I\xfail_L\xfana_Me\xe1n_Deai_Samh_Noll".split("_"),weekdaysMin:"Do_Lu_M\xe1_Ce_D\xe9_hA_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xed",y:"bliain",yy:"%d bliain"}};return _.default.locale(e,null,!0),e}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5748.fa2a8e02.chunk.js b/ydb/core/viewer/monitoring/static/js/5748.fa2a8e02.chunk.js deleted file mode 100644 index 22be50f7cf9f..000000000000 --- a/ydb/core/viewer/monitoring/static/js/5748.fa2a8e02.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5748],{95748:function(e,n,t){t.r(n),t.d(n,{conf:function(){return o},language:function(){return s}});var o={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"""',close:'"""',notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"""',close:'"""'},{open:'"',close:'"'}],folding:{offSide:!0}},s={defaultToken:"invalid",tokenPostfix:".gql",keywords:["null","true","false","query","mutation","subscription","extend","schema","directive","scalar","type","interface","union","enum","input","implements","fragment","on"],typeKeywords:["Int","Float","String","Boolean","ID"],directiveLocations:["SCHEMA","SCALAR","OBJECT","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION"],operators:["=","!","?",":","&","|"],symbols:/[=!?:&|]+/,escapes:/\\(?:["\\\/bfnrt]|u[0-9A-Fa-f]{4})/,tokenizer:{root:[[/[a-z_][\w$]*/,{cases:{"@keywords":"keyword","@default":"key.identifier"}}],[/[$][\w$]*/,{cases:{"@keywords":"keyword","@default":"argument.identifier"}}],[/[A-Z][\w\$]*/,{cases:{"@typeKeywords":"keyword","@default":"type.identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,{token:"annotation",log:"annotation token: $0"}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/"""/,{token:"string",next:"@mlstring",nextEmbedded:"markdown"}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}]],mlstring:[[/[^"]+/,"string"],['"""',{token:"string",next:"@pop",nextEmbedded:"@pop"}]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/#.*$/,"comment"]]}}}}]); -//# sourceMappingURL=5748.fa2a8e02.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5784.26f46213.chunk.js b/ydb/core/viewer/monitoring/static/js/5784.26f46213.chunk.js deleted file mode 100644 index 325496c6b102..000000000000 --- a/ydb/core/viewer/monitoring/static/js/5784.26f46213.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5784],{45784:function(e,t,n){n.r(t),n.d(t,{conf:function(){return o},language:function(){return s}});var o={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".cameligo",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["abs","begin","Bytes","Crypto","Current","else","end","failwith","false","fun","if","in","let","let%entry","let%init","List","list","Map","map","match","match%nat","mod","not","operation","Operation","of","Set","set","sender","source","String","then","true","type","with"],typeKeywords:["int","unit","string","tz"],operators:["=",">","<","<=",">=","<>",":",":=","and","mod","or","+","-","*","/","@","&","^","%","->","<-"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\(\*]+/,"comment"],[/\*\)/,"comment","@pop"],[/\(\*/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); -//# sourceMappingURL=5784.26f46213.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5790.e3d88e2c.chunk.js b/ydb/core/viewer/monitoring/static/js/5790.e3d88e2c.chunk.js new file mode 100644 index 000000000000..d66a02b13cff --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5790.e3d88e2c.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 5790.e3d88e2c.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5790],{65790:(e,_,t)=>{t.r(_),t.d(_,{conf:()=>s,language:()=>r});var s={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},r={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["ALL","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","ASYMMETRIC","AUTHORIZATION","BINARY","BOTH","CASE","CAST","CHECK","COLLATE","COLLATION","COLUMN","CONCURRENTLY","CONSTRAINT","CREATE","CROSS","CURRENT_CATALOG","CURRENT_DATE","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DEFAULT","DEFERRABLE","DESC","DISTINCT","DO","ELSE","END","EXCEPT","FALSE","FETCH","FOR","FOREIGN","FREEZE","FROM","FULL","GRANT","GROUP","HAVING","ILIKE","IN","INITIALLY","INNER","INTERSECT","INTO","IS","ISNULL","JOIN","LATERAL","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","NATURAL","NOT","NOTNULL","NULL","OFFSET","ON","ONLY","OR","ORDER","OUTER","OVERLAPS","PLACING","PRIMARY","REFERENCES","RETURNING","RIGHT","SELECT","SESSION_USER","SIMILAR","SOME","SYMMETRIC","TABLE","TABLESAMPLE","THEN","TO","TRAILING","TRUE","UNION","UNIQUE","USER","USING","VARIADIC","VERBOSE","WHEN","WHERE","WINDOW","WITH"],operators:["AND","BETWEEN","IN","LIKE","NOT","OR","IS","NULL","INTERSECT","UNION","INNER","JOIN","LEFT","OUTER","RIGHT"],builtinFunctions:["abbrev","abs","acldefault","aclexplode","acos","acosd","acosh","age","any","area","array_agg","array_append","array_cat","array_dims","array_fill","array_length","array_lower","array_ndims","array_position","array_positions","array_prepend","array_remove","array_replace","array_to_json","array_to_string","array_to_tsvector","array_upper","ascii","asin","asind","asinh","atan","atan2","atan2d","atand","atanh","avg","bit","bit_and","bit_count","bit_length","bit_or","bit_xor","bool_and","bool_or","bound_box","box","brin_desummarize_range","brin_summarize_new_values","brin_summarize_range","broadcast","btrim","cardinality","cbrt","ceil","ceiling","center","char_length","character_length","chr","circle","clock_timestamp","coalesce","col_description","concat","concat_ws","convert","convert_from","convert_to","corr","cos","cosd","cosh","cot","cotd","count","covar_pop","covar_samp","cume_dist","current_catalog","current_database","current_date","current_query","current_role","current_schema","current_schemas","current_setting","current_time","current_timestamp","current_user","currval","cursor_to_xml","cursor_to_xmlschema","date_bin","date_part","date_trunc","database_to_xml","database_to_xml_and_xmlschema","database_to_xmlschema","decode","degrees","dense_rank","diagonal","diameter","div","encode","enum_first","enum_last","enum_range","every","exp","extract","factorial","family","first_value","floor","format","format_type","gcd","gen_random_uuid","generate_series","generate_subscripts","get_bit","get_byte","get_current_ts_config","gin_clean_pending_list","greatest","grouping","has_any_column_privilege","has_column_privilege","has_database_privilege","has_foreign_data_wrapper_privilege","has_function_privilege","has_language_privilege","has_schema_privilege","has_sequence_privilege","has_server_privilege","has_table_privilege","has_tablespace_privilege","has_type_privilege","height","host","hostmask","inet_client_addr","inet_client_port","inet_merge","inet_same_family","inet_server_addr","inet_server_port","initcap","isclosed","isempty","isfinite","isopen","json_agg","json_array_elements","json_array_elements_text","json_array_length","json_build_array","json_build_object","json_each","json_each_text","json_extract_path","json_extract_path_text","json_object","json_object_agg","json_object_keys","json_populate_record","json_populate_recordset","json_strip_nulls","json_to_record","json_to_recordset","json_to_tsvector","json_typeof","jsonb_agg","jsonb_array_elements","jsonb_array_elements_text","jsonb_array_length","jsonb_build_array","jsonb_build_object","jsonb_each","jsonb_each_text","jsonb_extract_path","jsonb_extract_path_text","jsonb_insert","jsonb_object","jsonb_object_agg","jsonb_object_keys","jsonb_path_exists","jsonb_path_match","jsonb_path_query","jsonb_path_query_array","jsonb_path_exists_tz","jsonb_path_query_first","jsonb_path_query_array_tz","jsonb_path_query_first_tz","jsonb_path_query_tz","jsonb_path_match_tz","jsonb_populate_record","jsonb_populate_recordset","jsonb_pretty","jsonb_set","jsonb_set_lax","jsonb_strip_nulls","jsonb_to_record","jsonb_to_recordset","jsonb_to_tsvector","jsonb_typeof","justify_days","justify_hours","justify_interval","lag","last_value","lastval","lcm","lead","least","left","length","line","ln","localtime","localtimestamp","log","log10","lower","lower_inc","lower_inf","lpad","lseg","ltrim","macaddr8_set7bit","make_date","make_interval","make_time","make_timestamp","make_timestamptz","makeaclitem","masklen","max","md5","min","min_scale","mod","mode","multirange","netmask","network","nextval","normalize","now","npoints","nth_value","ntile","nullif","num_nonnulls","num_nulls","numnode","obj_description","octet_length","overlay","parse_ident","path","pclose","percent_rank","percentile_cont","percentile_disc","pg_advisory_lock","pg_advisory_lock_shared","pg_advisory_unlock","pg_advisory_unlock_all","pg_advisory_unlock_shared","pg_advisory_xact_lock","pg_advisory_xact_lock_shared","pg_backend_pid","pg_backup_start_time","pg_blocking_pids","pg_cancel_backend","pg_client_encoding","pg_collation_actual_version","pg_collation_is_visible","pg_column_compression","pg_column_size","pg_conf_load_time","pg_control_checkpoint","pg_control_init","pg_control_recovery","pg_control_system","pg_conversion_is_visible","pg_copy_logical_replication_slot","pg_copy_physical_replication_slot","pg_create_logical_replication_slot","pg_create_physical_replication_slot","pg_create_restore_point","pg_current_logfile","pg_current_snapshot","pg_current_wal_flush_lsn","pg_current_wal_insert_lsn","pg_current_wal_lsn","pg_current_xact_id","pg_current_xact_id_if_assigned","pg_current_xlog_flush_location","pg_current_xlog_insert_location","pg_current_xlog_location","pg_database_size","pg_describe_object","pg_drop_replication_slot","pg_event_trigger_ddl_commands","pg_event_trigger_dropped_objects","pg_event_trigger_table_rewrite_oid","pg_event_trigger_table_rewrite_reason","pg_export_snapshot","pg_filenode_relation","pg_function_is_visible","pg_get_catalog_foreign_keys","pg_get_constraintdef","pg_get_expr","pg_get_function_arguments","pg_get_function_identity_arguments","pg_get_function_result","pg_get_functiondef","pg_get_indexdef","pg_get_keywords","pg_get_object_address","pg_get_owned_sequence","pg_get_ruledef","pg_get_serial_sequence","pg_get_statisticsobjdef","pg_get_triggerdef","pg_get_userbyid","pg_get_viewdef","pg_get_wal_replay_pause_state","pg_has_role","pg_identify_object","pg_identify_object_as_address","pg_import_system_collations","pg_index_column_has_property","pg_index_has_property","pg_indexam_has_property","pg_indexes_size","pg_is_in_backup","pg_is_in_recovery","pg_is_other_temp_schema","pg_is_wal_replay_paused","pg_is_xlog_replay_paused","pg_jit_available","pg_last_committed_xact","pg_last_wal_receive_lsn","pg_last_wal_replay_lsn","pg_last_xact_replay_timestamp","pg_last_xlog_receive_location","pg_last_xlog_replay_location","pg_listening_channels","pg_log_backend_memory_contexts","pg_logical_emit_message","pg_logical_slot_get_binary_changes","pg_logical_slot_get_changes","pg_logical_slot_peek_binary_changes","pg_logical_slot_peek_changes","pg_ls_archive_statusdir","pg_ls_dir","pg_ls_logdir","pg_ls_tmpdir","pg_ls_waldir","pg_mcv_list_items","pg_my_temp_schema","pg_notification_queue_usage","pg_opclass_is_visible","pg_operator_is_visible","pg_opfamily_is_visible","pg_options_to_table","pg_partition_ancestors","pg_partition_root","pg_partition_tree","pg_postmaster_start_time","pg_promote","pg_read_binary_file","pg_read_file","pg_relation_filenode","pg_relation_filepath","pg_relation_size","pg_reload_conf","pg_replication_origin_advance","pg_replication_origin_create","pg_replication_origin_drop","pg_replication_origin_oid","pg_replication_origin_progress","pg_replication_origin_session_is_setup","pg_replication_origin_session_progress","pg_replication_origin_session_reset","pg_replication_origin_session_setup","pg_replication_origin_xact_reset","pg_replication_origin_xact_setup","pg_replication_slot_advance","pg_rotate_logfile","pg_safe_snapshot_blocking_pids","pg_size_bytes","pg_size_pretty","pg_sleep","pg_sleep_for","pg_sleep_until","pg_snapshot_xip","pg_snapshot_xmax","pg_snapshot_xmin","pg_start_backup","pg_stat_file","pg_statistics_obj_is_visible","pg_stop_backup","pg_switch_wal","pg_switch_xlog","pg_table_is_visible","pg_table_size","pg_tablespace_databases","pg_tablespace_location","pg_tablespace_size","pg_terminate_backend","pg_total_relation_size","pg_trigger_depth","pg_try_advisory_lock","pg_try_advisory_lock_shared","pg_try_advisory_xact_lock","pg_try_advisory_xact_lock_shared","pg_ts_config_is_visible","pg_ts_dict_is_visible","pg_ts_parser_is_visible","pg_ts_template_is_visible","pg_type_is_visible","pg_typeof","pg_visible_in_snapshot","pg_wal_lsn_diff","pg_wal_replay_pause","pg_wal_replay_resume","pg_walfile_name","pg_walfile_name_offset","pg_xact_commit_timestamp","pg_xact_commit_timestamp_origin","pg_xact_status","pg_xlog_location_diff","pg_xlog_replay_pause","pg_xlog_replay_resume","pg_xlogfile_name","pg_xlogfile_name_offset","phraseto_tsquery","pi","plainto_tsquery","point","polygon","popen","position","power","pqserverversion","query_to_xml","query_to_xml_and_xmlschema","query_to_xmlschema","querytree","quote_ident","quote_literal","quote_nullable","radians","radius","random","range_agg","range_intersect_agg","range_merge","rank","regexp_count","regexp_instr","regexp_like","regexp_match","regexp_matches","regexp_replace","regexp_split_to_array","regexp_split_to_table","regexp_substr","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","repeat","replace","reverse","right","round","row_number","row_security_active","row_to_json","rpad","rtrim","scale","schema_to_xml","schema_to_xml_and_xmlschema","schema_to_xmlschema","session_user","set_bit","set_byte","set_config","set_masklen","setseed","setval","setweight","sha224","sha256","sha384","sha512","shobj_description","sign","sin","sind","sinh","slope","split_part","sprintf","sqrt","starts_with","statement_timestamp","stddev","stddev_pop","stddev_samp","string_agg","string_to_array","string_to_table","strip","strpos","substr","substring","sum","suppress_redundant_updates_trigger","table_to_xml","table_to_xml_and_xmlschema","table_to_xmlschema","tan","tand","tanh","text","timeofday","timezone","to_ascii","to_char","to_date","to_hex","to_json","to_number","to_regclass","to_regcollation","to_regnamespace","to_regoper","to_regoperator","to_regproc","to_regprocedure","to_regrole","to_regtype","to_timestamp","to_tsquery","to_tsvector","transaction_timestamp","translate","trim","trim_array","trim_scale","trunc","ts_debug","ts_delete","ts_filter","ts_headline","ts_lexize","ts_parse","ts_rank","ts_rank_cd","ts_rewrite","ts_stat","ts_token_type","tsquery_phrase","tsvector_to_array","tsvector_update_trigger","tsvector_update_trigger_column","txid_current","txid_current_if_assigned","txid_current_snapshot","txid_snapshot_xip","txid_snapshot_xmax","txid_snapshot_xmin","txid_status","txid_visible_in_snapshot","unistr","unnest","upper","upper_inc","upper_inf","user","var_pop","var_samp","variance","version","websearch_to_tsquery","width","width_bucket","xml_is_well_formed","xml_is_well_formed_content","xml_is_well_formed_document","xmlagg","xmlcomment","xmlconcat","xmlelement","xmlexists","xmlforest","xmlparse","xmlpi","xmlroot","xmlserialize","xpath","xpath_exists"],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@keywords":"keyword","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/"/,{token:"identifier.quote",next:"@quotedIdentifier"}]],quotedIdentifier:[[/[^"]+/,"identifier"],[/""/,"identifier"],[/"/,{token:"identifier.quote",next:"@pop"}]],scopes:[]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5790.e3d88e2c.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/5790.e3d88e2c.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5790.e3d88e2c.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/5809.d78ebebb.chunk.js b/ydb/core/viewer/monitoring/static/js/5809.d78ebebb.chunk.js new file mode 100644 index 000000000000..500800af1692 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5809.d78ebebb.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5809],{25809:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"si",weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),months:"\u0daf\u0dd4\u0dbb\u0dd4\u0dad\u0dd4_\u0db1\u0dc0\u0db8\u0dca_\u0db8\u0dd0\u0daf\u0dd2\u0db1\u0dca_\u0db6\u0d9a\u0dca_\u0dc0\u0dd9\u0dc3\u0d9a\u0dca_\u0db4\u0ddc\u0dc3\u0ddc\u0db1\u0dca_\u0d87\u0dc3\u0dc5_\u0db1\u0dd2\u0d9a\u0dd2\u0dab\u0dd2_\u0db6\u0dd2\u0db1\u0dbb_\u0dc0\u0db4\u0dca_\u0d89\u0dbd\u0dca_\u0d8b\u0db3\u0dd4\u0dc0\u0db4\u0dca".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),monthsShort:"\u0daf\u0dd4\u0dbb\u0dd4_\u0db1\u0dc0_\u0db8\u0dd0\u0daf\u0dd2_\u0db6\u0d9a\u0dca_\u0dc0\u0dd9\u0dc3_\u0db4\u0ddc\u0dc3\u0ddc_\u0d87\u0dc3_\u0db1\u0dd2\u0d9a\u0dd2_\u0db6\u0dd2\u0db1_\u0dc0\u0db4\u0dca_\u0d89\u0dbd\u0dca_\u0d8b\u0db3\u0dd4".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".split("_"),ordinal:function(_){return _},formats:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",m:"\u0dc0\u0dd2\u0db1\u0dcf\u0da9\u0dd2\u0dba",mm:"\u0dc0\u0dd2\u0db1\u0dcf\u0da9\u0dd2 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5863.e2cd2452.chunk.js b/ydb/core/viewer/monitoring/static/js/5863.e2cd2452.chunk.js new file mode 100644 index 000000000000..4bb51511d6c5 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5863.e2cd2452.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5863],{65863:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"bo",weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f7c\u0f53\u0f0b\u0f63\u0f0b",s:"\u0f4f\u0f7c\u0f42\u0f0b\u0f59\u0f58\u0f0b",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b",mm:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b %d",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b",hh:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b %d",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b",dd:"\u0f49\u0f72\u0f53\u0f0b %d",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b",MM:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b %d",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b",yy:"\u0f63\u0f7c\u0f0b %d"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5868.be04313a.chunk.js b/ydb/core/viewer/monitoring/static/js/5868.be04313a.chunk.js new file mode 100644 index 000000000000..973f495b859b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5868.be04313a.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 5868.be04313a.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5868],{5868:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>o,language:()=>s});var o={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={tokenPostfix:".tcl",specialFunctions:["set","unset","rename","variable","proc","coroutine","foreach","incr","append","lappend","linsert","lreplace"],mainFunctions:["if","then","elseif","else","case","switch","while","for","break","continue","return","package","namespace","catch","exit","eval","expr","uplevel","upvar"],builtinFunctions:["file","info","concat","join","lindex","list","llength","lrange","lsearch","lsort","split","array","parray","binary","format","regexp","regsub","scan","string","subst","dict","cd","clock","exec","glob","pid","pwd","close","eof","fblocked","fconfigure","fcopy","fileevent","flush","gets","open","puts","read","seek","socket","tell","interp","after","auto_execok","auto_load","auto_mkindex","auto_reset","bgerror","error","global","history","load","source","time","trace","unknown","unset","update","vwait","winfo","wm","bind","event","pack","place","grid","font","bell","clipboard","destroy","focus","grab","lower","option","raise","selection","send","tk","tkwait","tk_bisque","tk_focusNext","tk_focusPrev","tk_focusFollowsMouse","tk_popup","tk_setPalette"],symbols:/[=><!~?:&|+\-*\/\^%]+/,brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],escapes:/\\(?:[abfnrtv\\"'\[\]\{\};\$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,variables:/(?:\$+(?:(?:\:\:?)?[a-zA-Z_]\w*)+)/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@specialFunctions":{token:"keyword.flow",next:"@specialFunc"},"@mainFunctions":"keyword","@builtinFunctions":"variable","@default":"operator.scss"}}],[/\s+\-+(?!\d|\.)\w*|{\*}/,"metatag"],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/@symbols/,"operator"],[/\$+(?:\:\:)?\{/,{token:"identifier",next:"@nestedVariable"}],[/@variables/,"type.identifier"],[/\.(?!\d|\.)[\w\-]*/,"operator.sql"],[/\d+(\.\d+)?/,"number"],[/\d+/,"number"],[/;/,"delimiter"],[/"/,{token:"string.quote",bracket:"@open",next:"@dstring"}],[/'/,{token:"string.quote",bracket:"@open",next:"@sstring"}]],dstring:[[/\[/,{token:"@brackets",next:"@nestedCall"}],[/\$+(?:\:\:)?\{/,{token:"identifier",next:"@nestedVariable"}],[/@variables/,"type.identifier"],[/[^\\$\[\]"]+/,"string"],[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],sstring:[[/\[/,{token:"@brackets",next:"@nestedCall"}],[/\$+(?:\:\:)?\{/,{token:"identifier",next:"@nestedVariable"}],[/@variables/,"type.identifier"],[/[^\\$\[\]']+/,"string"],[/@escapes/,"string.escape"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/#.*\\$/,{token:"comment",next:"@newlineComment"}],[/#.*(?!\\)$/,"comment"]],newlineComment:[[/.*\\$/,"comment"],[/.*(?!\\)$/,{token:"comment",next:"@pop"}]],nestedVariable:[[/[^\{\}\$]+/,"type.identifier"],[/\}/,{token:"identifier",next:"@pop"}]],nestedCall:[[/\[/,{token:"@brackets",next:"@nestedCall"}],[/\]/,{token:"@brackets",next:"@pop"}],{include:"root"}],specialFunc:[[/"/,{token:"string",next:"@dstring"}],[/'/,{token:"string",next:"@sstring"}],[/\S+/,{token:"type",next:"@pop"}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/5868.be04313a.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/5868.be04313a.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/5868.be04313a.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/5885.c5ee8345.chunk.js b/ydb/core/viewer/monitoring/static/js/5885.c5ee8345.chunk.js deleted file mode 100644 index 20a93eea7395..000000000000 --- a/ydb/core/viewer/monitoring/static/js/5885.c5ee8345.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[5885],{65885:function(e,t,n){n.r(t),n.d(t,{conf:function(){return i},language:function(){return o}});var i={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}]},o={tokenPostfix:".pats",defaultToken:"invalid",keywords:["abstype","abst0ype","absprop","absview","absvtype","absviewtype","absvt0ype","absviewt0ype","as","and","assume","begin","classdec","datasort","datatype","dataprop","dataview","datavtype","dataviewtype","do","end","extern","extype","extvar","exception","fn","fnx","fun","prfn","prfun","praxi","castfn","if","then","else","ifcase","in","infix","infixl","infixr","prefix","postfix","implmnt","implement","primplmnt","primplement","import","let","local","macdef","macrodef","nonfix","symelim","symintr","overload","of","op","rec","sif","scase","sortdef","sta","stacst","stadef","static","staload","dynload","try","tkindef","typedef","propdef","viewdef","vtypedef","viewtypedef","prval","var","prvar","when","where","with","withtype","withprop","withview","withvtype","withviewtype"],keywords_dlr:["$delay","$ldelay","$arrpsz","$arrptrsize","$d2ctype","$effmask","$effmask_ntm","$effmask_exn","$effmask_ref","$effmask_wrt","$effmask_all","$extern","$extkind","$extype","$extype_struct","$extval","$extfcall","$extmcall","$literal","$myfilename","$mylocation","$myfunction","$lst","$lst_t","$lst_vt","$list","$list_t","$list_vt","$rec","$rec_t","$rec_vt","$record","$record_t","$record_vt","$tup","$tup_t","$tup_vt","$tuple","$tuple_t","$tuple_vt","$break","$continue","$raise","$showtype","$vcopyenv_v","$vcopyenv_vt","$tempenver","$solver_assert","$solver_verify"],keywords_srp:["#if","#ifdef","#ifndef","#then","#elif","#elifdef","#elifndef","#else","#endif","#error","#prerr","#print","#assert","#undef","#define","#include","#require","#pragma","#codegen2","#codegen3"],irregular_keyword_list:["val+","val-","val","case+","case-","case","addr@","addr","fold@","free@","fix@","fix","lam@","lam","llam@","llam","viewt@ype+","viewt@ype-","viewt@ype","viewtype+","viewtype-","viewtype","view+","view-","view@","view","type+","type-","type","vtype+","vtype-","vtype","vt@ype+","vt@ype-","vt@ype","viewt@ype+","viewt@ype-","viewt@ype","viewtype+","viewtype-","viewtype","prop+","prop-","prop","type+","type-","type","t@ype","t@ype+","t@ype-","abst@ype","abstype","absviewt@ype","absvt@ype","for*","for","while*","while"],keywords_types:["bool","double","byte","int","short","char","void","unit","long","float","string","strptr"],keywords_effects:["0","fun","clo","prf","funclo","cloptr","cloref","ref","ntm","1"],operators:["@","!","|","`",":","$",".","=","#","~","..","...","=>","=<>","=/=>","=>>","=/=>>","<",">","><",".<",">.",".<>.","->","-<>"],brackets:[{open:",(",close:")",token:"delimiter.parenthesis"},{open:"`(",close:")",token:"delimiter.parenthesis"},{open:"%(",close:")",token:"delimiter.parenthesis"},{open:"'(",close:")",token:"delimiter.parenthesis"},{open:"'{",close:"}",token:"delimiter.parenthesis"},{open:"@(",close:")",token:"delimiter.parenthesis"},{open:"@{",close:"}",token:"delimiter.brace"},{open:"@[",close:"]",token:"delimiter.square"},{open:"#[",close:"]",token:"delimiter.square"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],symbols:/[=><!~?:&|+\-*\/\^%]+/,IDENTFST:/[a-zA-Z_]/,IDENTRST:/[a-zA-Z0-9_'$]/,symbolic:/[%&+-./:=@~`^|*!$#?<>]/,digit:/[0-9]/,digitseq0:/@digit*/,xdigit:/[0-9A-Za-z]/,xdigitseq0:/@xdigit*/,INTSP:/[lLuU]/,FLOATSP:/[fFlL]/,fexponent:/[eE][+-]?[0-9]+/,fexponent_bin:/[pP][+-]?[0-9]+/,deciexp:/\.[0-9]*@fexponent?/,hexiexp:/\.[0-9a-zA-Z]*@fexponent_bin?/,irregular_keywords:/val[+-]?|case[+-]?|addr\@?|fold\@|free\@|fix\@?|lam\@?|llam\@?|prop[+-]?|type[+-]?|view[+-@]?|viewt@?ype[+-]?|t@?ype[+-]?|v(iew)?t@?ype[+-]?|abst@?ype|absv(iew)?t@?ype|for\*?|while\*?/,ESCHAR:/[ntvbrfa\\\?'"\(\[\{]/,start:"root",tokenizer:{root:[{regex:/[ \t\r\n]+/,action:{token:""}},{regex:/\(\*\)/,action:{token:"invalid"}},{regex:/\(\*/,action:{token:"comment",next:"lexing_COMMENT_block_ml"}},{regex:/\(/,action:"@brackets"},{regex:/\)/,action:"@brackets"},{regex:/\[/,action:"@brackets"},{regex:/\]/,action:"@brackets"},{regex:/\{/,action:"@brackets"},{regex:/\}/,action:"@brackets"},{regex:/,\(/,action:"@brackets"},{regex:/,/,action:{token:"delimiter.comma"}},{regex:/;/,action:{token:"delimiter.semicolon"}},{regex:/@\(/,action:"@brackets"},{regex:/@\[/,action:"@brackets"},{regex:/@\{/,action:"@brackets"},{regex:/:</,action:{token:"keyword",next:"@lexing_EFFECT_commaseq0"}},{regex:/\.@symbolic+/,action:{token:"identifier.sym"}},{regex:/\.@digit*@fexponent@FLOATSP*/,action:{token:"number.float"}},{regex:/\.@digit+/,action:{token:"number.float"}},{regex:/\$@IDENTFST@IDENTRST*/,action:{cases:{"@keywords_dlr":{token:"keyword.dlr"},"@default":{token:"namespace"}}}},{regex:/\#@IDENTFST@IDENTRST*/,action:{cases:{"@keywords_srp":{token:"keyword.srp"},"@default":{token:"identifier"}}}},{regex:/%\(/,action:{token:"delimiter.parenthesis"}},{regex:/^%{(#|\^|\$)?/,action:{token:"keyword",next:"@lexing_EXTCODE",nextEmbedded:"text/javascript"}},{regex:/^%}/,action:{token:"keyword"}},{regex:/'\(/,action:{token:"delimiter.parenthesis"}},{regex:/'\[/,action:{token:"delimiter.bracket"}},{regex:/'\{/,action:{token:"delimiter.brace"}},[/(')(\\@ESCHAR|\\[xX]@xdigit+|\\@digit+)(')/,["string","string.escape","string"]],[/'[^\\']'/,"string"],[/"/,"string.quote","@lexing_DQUOTE"],{regex:/`\(/,action:"@brackets"},{regex:/\\/,action:{token:"punctuation"}},{regex:/@irregular_keywords(?!@IDENTRST)/,action:{token:"keyword"}},{regex:/@IDENTFST@IDENTRST*[<!\[]?/,action:{cases:{"@keywords":{token:"keyword"},"@keywords_types":{token:"type"},"@default":{token:"identifier"}}}},{regex:/\/\/\/\//,action:{token:"comment",next:"@lexing_COMMENT_rest"}},{regex:/\/\/.*$/,action:{token:"comment"}},{regex:/\/\*/,action:{token:"comment",next:"@lexing_COMMENT_block_c"}},{regex:/-<|=</,action:{token:"keyword",next:"@lexing_EFFECT_commaseq0"}},{regex:/@symbolic+/,action:{cases:{"@operators":"keyword","@default":"operator"}}},{regex:/0[xX]@xdigit+(@hexiexp|@fexponent_bin)@FLOATSP*/,action:{token:"number.float"}},{regex:/0[xX]@xdigit+@INTSP*/,action:{token:"number.hex"}},{regex:/0[0-7]+(?![0-9])@INTSP*/,action:{token:"number.octal"}},{regex:/@digit+(@fexponent|@deciexp)@FLOATSP*/,action:{token:"number.float"}},{regex:/@digit@digitseq0@INTSP*/,action:{token:"number.decimal"}},{regex:/@digit+@INTSP*/,action:{token:"number"}}],lexing_COMMENT_block_ml:[[/[^\(\*]+/,"comment"],[/\(\*/,"comment","@push"],[/\(\*/,"comment.invalid"],[/\*\)/,"comment","@pop"],[/\*/,"comment"]],lexing_COMMENT_block_c:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],lexing_COMMENT_rest:[[/$/,"comment","@pop"],[/.*/,"comment"]],lexing_EFFECT_commaseq0:[{regex:/@IDENTFST@IDENTRST+|@digit+/,action:{cases:{"@keywords_effects":{token:"type.effect"},"@default":{token:"identifier"}}}},{regex:/,/,action:{token:"punctuation"}},{regex:/>/,action:{token:"@rematch",next:"@pop"}}],lexing_EXTCODE:[{regex:/^%}/,action:{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}},{regex:/[^%]+/,action:""}],lexing_DQUOTE:[{regex:/"/,action:{token:"string.quote",next:"@pop"}},{regex:/(\{\$)(@IDENTFST@IDENTRST*)(\})/,action:[{token:"string.escape"},{token:"identifier"},{token:"string.escape"}]},{regex:/\\$/,action:{token:"string.escape"}},{regex:/\\(@ESCHAR|[xX]@xdigit+|@digit+)/,action:{token:"string.escape"}},{regex:/[^\\"]+/,action:{token:"string"}}]}}}}]); -//# sourceMappingURL=5885.c5ee8345.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/598.243fd68d.chunk.js b/ydb/core/viewer/monitoring/static/js/598.243fd68d.chunk.js new file mode 100644 index 000000000000..017260af0b00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/598.243fd68d.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[598],{40598:(e,t,l)=>{l.r(t),l.d(t,{ReactComponent:()=>m,default:()=>h});var a,r,i,c,n,d,o,s,f=l(68963);function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var l=arguments[t];for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(e[a]=l[a])}return e},u.apply(this,arguments)}function p(e,t){let{title:l,titleId:p,...m}=e;return f.createElement("svg",u({xmlns:"http://www.w3.org/2000/svg",width:230,height:230,fill:"none",ref:t,"aria-labelledby":p},m),l?f.createElement("title",{id:p},l):null,a||(a=f.createElement("path",{fill:"#BECFE0",fillOpacity:.8,fillRule:"evenodd",d:"M169.001 51.666c5.523 0 10 4.477 10 10v21.017l18.197-10.506c4.783-2.762 10.899-1.123 13.66 3.66 2.761 4.783 1.123 10.899-3.66 13.66l-18.197 10.507 18.198 10.506c4.783 2.762 6.421 8.878 3.66 13.661-2.762 4.782-8.877 6.421-13.66 3.66l-18.198-10.506v21.008c0 5.523-4.477 10-10 10-5.522 0-10-4.477-10-10v-21.009l-18.199 10.507c-4.782 2.761-10.898 1.122-13.66-3.66-2.761-4.783-1.122-10.899 3.66-13.661l18.199-10.506-18.198-10.507c-4.783-2.761-6.421-8.877-3.66-13.66 2.762-4.783 8.877-6.422 13.66-3.66l18.198 10.507V61.666c0-5.523 4.478-10 10-10Z",clipRule:"evenodd"})),r||(r=f.createElement("path",{fill:"#E7E7E7",fillRule:"evenodd",d:"M171.523 95.922a11.003 11.003 0 0 1 1.099 8.347l-13.208 49.291c-1.572 5.868-7.604 9.351-13.472 7.778l-25.356-6.794a44.998 44.998 0 0 1-.53 1.929l25.368 6.797c6.935 1.858 14.064-2.257 15.922-9.192l13.207-49.291c.893-3.33.426-6.879-1.298-9.865L155.598 64.34a12.999 12.999 0 0 0-7.894-6.057l-29.972-8.031c-6.935-1.858-14.063 2.257-15.922 9.192l-11.328 42.277c.64.192 1.276.398 1.905.618l11.355-42.377c1.573-5.868 7.604-9.35 13.472-7.778l29.973 8.03a11 11 0 0 1 6.679 5.126l17.657 30.582Z",clipRule:"evenodd"})),i||(i=f.createElement("path",{fill:"#FF5958",fillOpacity:.8,d:"M35.388 155.273c-6.29-23.472 7.64-47.599 31.113-53.889 23.472-6.289 47.599 7.641 53.889 31.113 6.289 23.473-7.641 47.599-31.113 53.889-23.473 6.289-47.6-7.64-53.889-31.113Z"})),c||(c=f.createElement("path",{stroke:"#E7E7E7",strokeWidth:2,d:"M60.636 117.734c53.586-33.459-26.868-81.505-36.557-61.318-11.802 24.59 99.395 51.098 128.865-26.3"})),f.createElement("mask",{id:"b",width:89,height:89,x:33,y:99,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},n||(n=f.createElement("path",{fill:"#FF5958",fillOpacity:.9,d:"M35.388 155.273c-6.29-23.472 7.64-47.599 31.113-53.889 23.472-6.289 47.599 7.641 53.889 31.113 6.289 23.473-7.641 47.599-31.113 53.889-23.473 6.289-47.6-7.64-53.889-31.113Z"}))),d||(d=f.createElement("g",{filter:"url(#a)",mask:"url(#b)"},f.createElement("path",{stroke:"#E7E7E7",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.6,strokeWidth:2,d:"M172.389 95.422a12.004 12.004 0 0 1 1.199 9.106l-13.208 49.291c-1.715 6.401-8.295 10.2-14.697 8.485L91.591 147.81c-6.401-1.715-10.2-8.295-8.485-14.697l19.67-73.41c1.716-6.402 8.296-10.2 14.697-8.485l29.972 8.03a11.998 11.998 0 0 1 7.287 5.592l17.657 30.582Z"}))),o||(o=f.createElement("g",{filter:"url(#c)"},f.createElement("path",{fill:"#fff",fillOpacity:.72,fillRule:"evenodd",d:"M80.866 130.432a6.359 6.359 0 1 1-12.284 3.29 6.359 6.359 0 0 1 12.284-3.29Zm4.817-1.291c1.621 6.052-1.97 12.273-8.022 13.894-6.052 1.622-12.273-1.97-13.895-8.022-1.621-6.052 1.97-12.272 8.022-13.894 6.052-1.622 12.273 1.97 13.895 8.022Zm-21.346 32.565c-.154-.577-.009-2.61 2.877-5.555 2.665-2.721 6.917-5.33 12.158-6.734 5.24-1.404 10.227-1.271 13.896-.247 3.971 1.108 5.114 2.796 5.268 3.372a3.116 3.116 0 0 1-2.204 3.817l-28.178 7.55a3.116 3.116 0 0 1-3.817-2.203ZM78.081 144.6c-12.054 3.23-20.238 12.134-18.56 18.396a8.103 8.103 0 0 0 9.924 5.73l28.178-7.55a8.104 8.104 0 0 0 5.73-9.925c-1.678-6.261-13.218-9.881-25.272-6.651Z",clipRule:"evenodd"}))),s||(s=f.createElement("defs",null,f.createElement("filter",{id:"a",width:113.303,height:133.91,x:71.693,y:39.806,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse"},f.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),f.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),f.createElement("feGaussianBlur",{result:"effect1_foregroundBlur_1301_35376",stdDeviation:5})),f.createElement("filter",{id:"c",width:73.289,height:73.288,x:41.018,y:106.391,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse"},f.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),f.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),f.createElement("feColorMatrix",{in:"SourceAlpha",result:"hardAlpha",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"}),f.createElement("feOffset",null),f.createElement("feGaussianBlur",{stdDeviation:1.917}),f.createElement("feComposite",{in2:"hardAlpha",k2:-1,k3:1,operator:"arithmetic"}),f.createElement("feColorMatrix",{values:"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.8 0"}),f.createElement("feBlend",{in2:"shape",result:"effect1_innerShadow_1301_35376"})))))}const m=f.forwardRef(p),h=l.p+"static/media/error.ca9e31d5d3dc34da07e11a00f7af0842.svg"}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/599.c58caf58.chunk.js b/ydb/core/viewer/monitoring/static/js/599.c58caf58.chunk.js new file mode 100644 index 000000000000..2973d328eb2b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/599.c58caf58.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[599],{40599:(e,t,n)=>{n.r(t),n.d(t,{getCLS:()=>p,getFCP:()=>y,getFID:()=>k,getLCP:()=>F,getTTFB:()=>C});var i,a,r,o,u=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:"v1-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)}},c=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if("first-input"===e&&!("PerformanceEventTiming"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},s=function(e,t){var n=function n(i){"pagehide"!==i.type&&"hidden"!==document.visibilityState||(e(i),t&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},f=function(e){addEventListener("pageshow",(function(t){t.persisted&&e(t)}),!0)},d="function"==typeof WeakSet?new WeakSet:new Set,m=function(e,t,n){var i;return function(){t.value>=0&&(n||d.has(t)||"hidden"===document.visibilityState)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},p=function(e,t){var n,i=u("CLS",0),a=function(e){e.hadRecentInput||(i.value+=e.value,i.entries.push(e),n())},r=c("layout-shift",a);r&&(n=m(e,i,t),s((function(){r.takeRecords().map(a),n()})),f((function(){i=u("CLS",0),n=m(e,i,t)})))},v=-1,l=function(){return"hidden"===document.visibilityState?0:1/0},h=function(){s((function(e){var t=e.timeStamp;v=t}),!0)},g=function(){return v<0&&(v=l(),h(),f((function(){setTimeout((function(){v=l(),h()}),0)}))),{get timeStamp(){return v}}},y=function(e,t){var n,i=g(),a=u("FCP"),r=function(e){"first-contentful-paint"===e.name&&(s&&s.disconnect(),e.startTime<i.timeStamp&&(a.value=e.startTime,a.entries.push(e),d.add(a),n()))},o=performance.getEntriesByName("first-contentful-paint")[0],s=o?null:c("paint",r);(o||s)&&(n=m(e,a,t),o&&r(o),f((function(i){a=u("FCP"),n=m(e,a,t),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,d.add(a),n()}))}))})))},S={passive:!0,capture:!0},E=new Date,w=function(e,t){i||(i=t,a=e,r=new Date,T(removeEventListener),L())},L=function(){if(a>=0&&a<r-E){var e={entryType:"first-input",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+a};o.forEach((function(t){t(e)})),o=[]}},b=function(e){if(e.cancelable){var t=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){w(e,t),a()},i=function(){a()},a=function(){removeEventListener("pointerup",n,S),removeEventListener("pointercancel",i,S)};addEventListener("pointerup",n,S),addEventListener("pointercancel",i,S)}(t,e):w(t,e)}},T=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,b,S)}))},k=function(e,t){var n,r=g(),p=u("FID"),v=function(e){e.startTime<r.timeStamp&&(p.value=e.processingStart-e.startTime,p.entries.push(e),d.add(p),n())},l=c("first-input",v);n=m(e,p,t),l&&s((function(){l.takeRecords().map(v),l.disconnect()}),!0),l&&f((function(){var r;p=u("FID"),n=m(e,p,t),o=[],a=-1,i=null,T(addEventListener),r=v,o.push(r),L()}))},F=function(e,t){var n,i=g(),a=u("LCP"),r=function(e){var t=e.startTime;t<i.timeStamp&&(a.value=t,a.entries.push(e)),n()},o=c("largest-contentful-paint",r);if(o){n=m(e,a,t);var p=function(){d.has(a)||(o.takeRecords().map(r),o.disconnect(),d.add(a),n())};["keydown","click"].forEach((function(e){addEventListener(e,p,{once:!0,capture:!0})})),s(p,!0),f((function(i){a=u("LCP"),n=m(e,a,t),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,d.add(a),n()}))}))}))}},C=function(e){var t,n=u("TTFB");t=function(){try{var t=performance.getEntriesByType("navigation")[0]||function(){var e=performance.timing,t={entryType:"navigation",startTime:0};for(var n in e)"navigationStart"!==n&&"toJSON"!==n&&(t[n]=Math.max(e[n]-e.navigationStart,0));return t}();if(n.value=n.delta=t.responseStart,n.value<0)return;n.entries=[t],e(n)}catch(e){}},"complete"===document.readyState?setTimeout(t,0):addEventListener("pageshow",t)}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6044.2de9962d.chunk.js b/ydb/core/viewer/monitoring/static/js/6044.2de9962d.chunk.js new file mode 100644 index 000000000000..0290bd2ea3bf --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6044.2de9962d.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6044.2de9962d.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6044],{96044:(x,e,i)=>{i.r(e),i.d(e,{conf:()=>d,language:()=>f});var d={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}]},f={defaultToken:"",tokenPostfix:".sol",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["pragma","solidity","contract","library","using","struct","function","modifier","constructor","address","string","bool","Int","Uint","Byte","Fixed","Ufixed","int","int8","int16","int24","int32","int40","int48","int56","int64","int72","int80","int88","int96","int104","int112","int120","int128","int136","int144","int152","int160","int168","int176","int184","int192","int200","int208","int216","int224","int232","int240","int248","int256","uint","uint8","uint16","uint24","uint32","uint40","uint48","uint56","uint64","uint72","uint80","uint88","uint96","uint104","uint112","uint120","uint128","uint136","uint144","uint152","uint160","uint168","uint176","uint184","uint192","uint200","uint208","uint216","uint224","uint232","uint240","uint248","uint256","byte","bytes","bytes1","bytes2","bytes3","bytes4","bytes5","bytes6","bytes7","bytes8","bytes9","bytes10","bytes11","bytes12","bytes13","bytes14","bytes15","bytes16","bytes17","bytes18","bytes19","bytes20","bytes21","bytes22","bytes23","bytes24","bytes25","bytes26","bytes27","bytes28","bytes29","bytes30","bytes31","bytes32","fixed","fixed0x8","fixed0x16","fixed0x24","fixed0x32","fixed0x40","fixed0x48","fixed0x56","fixed0x64","fixed0x72","fixed0x80","fixed0x88","fixed0x96","fixed0x104","fixed0x112","fixed0x120","fixed0x128","fixed0x136","fixed0x144","fixed0x152","fixed0x160","fixed0x168","fixed0x176","fixed0x184","fixed0x192","fixed0x200","fixed0x208","fixed0x216","fixed0x224","fixed0x232","fixed0x240","fixed0x248","fixed0x256","fixed8x8","fixed8x16","fixed8x24","fixed8x32","fixed8x40","fixed8x48","fixed8x56","fixed8x64","fixed8x72","fixed8x80","fixed8x88","fixed8x96","fixed8x104","fixed8x112","fixed8x120","fixed8x128","fixed8x136","fixed8x144","fixed8x152","fixed8x160","fixed8x168","fixed8x176","fixed8x184","fixed8x192","fixed8x200","fixed8x208","fixed8x216","fixed8x224","fixed8x232","fixed8x240","fixed8x248","fixed16x8","fixed16x16","fixed16x24","fixed16x32","fixed16x40","fixed16x48","fixed16x56","fixed16x64","fixed16x72","fixed16x80","fixed16x88","fixed16x96","fixed16x104","fixed16x112","fixed16x120","fixed16x128","fixed16x136","fixed16x144","fixed16x152","fixed16x160","fixed16x168","fixed16x176","fixed16x184","fixed16x192","fixed16x200","fixed16x208","fixed16x216","fixed16x224","fixed16x232","fixed16x240","fixed24x8","fixed24x16","fixed24x24","fixed24x32","fixed24x40","fixed24x48","fixed24x56","fixed24x64","fixed24x72","fixed24x80","fixed24x88","fixed24x96","fixed24x104","fixed24x112","fixed24x120","fixed24x128","fixed24x136","fixed24x144","fixed24x152","fixed24x160","fixed24x168","fixed24x176","fixed24x184","fixed24x192","fixed24x200","fixed24x208","fixed24x216","fixed24x224","fixed24x232","fixed32x8","fixed32x16","fixed32x24","fixed32x32","fixed32x40","fixed32x48","fixed32x56","fixed32x64","fixed32x72","fixed32x80","fixed32x88","fixed32x96","fixed32x104","fixed32x112","fixed32x120","fixed32x128","fixed32x136","fixed32x144","fixed32x152","fixed32x160","fixed32x168","fixed32x176","fixed32x184","fixed32x192","fixed32x200","fixed32x208","fixed32x216","fixed32x224","fixed40x8","fixed40x16","fixed40x24","fixed40x32","fixed40x40","fixed40x48","fixed40x56","fixed40x64","fixed40x72","fixed40x80","fixed40x88","fixed40x96","fixed40x104","fixed40x112","fixed40x120","fixed40x128","fixed40x136","fixed40x144","fixed40x152","fixed40x160","fixed40x168","fixed40x176","fixed40x184","fixed40x192","fixed40x200","fixed40x208","fixed40x216","fixed48x8","fixed48x16","fixed48x24","fixed48x32","fixed48x40","fixed48x48","fixed48x56","fixed48x64","fixed48x72","fixed48x80","fixed48x88","fixed48x96","fixed48x104","fixed48x112","fixed48x120","fixed48x128","fixed48x136","fixed48x144","fixed48x152","fixed48x160","fixed48x168","fixed48x176","fixed48x184","fixed48x192","fixed48x200","fixed48x208","fixed56x8","fixed56x16","fixed56x24","fixed56x32","fixed56x40","fixed56x48","fixed56x56","fixed56x64","fixed56x72","fixed56x80","fixed56x88","fixed56x96","fixed56x104","fixed56x112","fixed56x120","fixed56x128","fixed56x136","fixed56x144","fixed56x152","fixed56x160","fixed56x168","fixed56x176","fixed56x184","fixed56x192","fixed56x200","fixed64x8","fixed64x16","fixed64x24","fixed64x32","fixed64x40","fixed64x48","fixed64x56","fixed64x64","fixed64x72","fixed64x80","fixed64x88","fixed64x96","fixed64x104","fixed64x112","fixed64x120","fixed64x128","fixed64x136","fixed64x144","fixed64x152","fixed64x160","fixed64x168","fixed64x176","fixed64x184","fixed64x192","fixed72x8","fixed72x16","fixed72x24","fixed72x32","fixed72x40","fixed72x48","fixed72x56","fixed72x64","fixed72x72","fixed72x80","fixed72x88","fixed72x96","fixed72x104","fixed72x112","fixed72x120","fixed72x128","fixed72x136","fixed72x144","fixed72x152","fixed72x160","fixed72x168","fixed72x176","fixed72x184","fixed80x8","fixed80x16","fixed80x24","fixed80x32","fixed80x40","fixed80x48","fixed80x56","fixed80x64","fixed80x72","fixed80x80","fixed80x88","fixed80x96","fixed80x104","fixed80x112","fixed80x120","fixed80x128","fixed80x136","fixed80x144","fixed80x152","fixed80x160","fixed80x168","fixed80x176","fixed88x8","fixed88x16","fixed88x24","fixed88x32","fixed88x40","fixed88x48","fixed88x56","fixed88x64","fixed88x72","fixed88x80","fixed88x88","fixed88x96","fixed88x104","fixed88x112","fixed88x120","fixed88x128","fixed88x136","fixed88x144","fixed88x152","fixed88x160","fixed88x168","fixed96x8","fixed96x16","fixed96x24","fixed96x32","fixed96x40","fixed96x48","fixed96x56","fixed96x64","fixed96x72","fixed96x80","fixed96x88","fixed96x96","fixed96x104","fixed96x112","fixed96x120","fixed96x128","fixed96x136","fixed96x144","fixed96x152","fixed96x160","fixed104x8","fixed104x16","fixed104x24","fixed104x32","fixed104x40","fixed104x48","fixed104x56","fixed104x64","fixed104x72","fixed104x80","fixed104x88","fixed104x96","fixed104x104","fixed104x112","fixed104x120","fixed104x128","fixed104x136","fixed104x144","fixed104x152","fixed112x8","fixed112x16","fixed112x24","fixed112x32","fixed112x40","fixed112x48","fixed112x56","fixed112x64","fixed112x72","fixed112x80","fixed112x88","fixed112x96","fixed112x104","fixed112x112","fixed112x120","fixed112x128","fixed112x136","fixed112x144","fixed120x8","fixed120x16","fixed120x24","fixed120x32","fixed120x40","fixed120x48","fixed120x56","fixed120x64","fixed120x72","fixed120x80","fixed120x88","fixed120x96","fixed120x104","fixed120x112","fixed120x120","fixed120x128","fixed120x136","fixed128x8","fixed128x16","fixed128x24","fixed128x32","fixed128x40","fixed128x48","fixed128x56","fixed128x64","fixed128x72","fixed128x80","fixed128x88","fixed128x96","fixed128x104","fixed128x112","fixed128x120","fixed128x128","fixed136x8","fixed136x16","fixed136x24","fixed136x32","fixed136x40","fixed136x48","fixed136x56","fixed136x64","fixed136x72","fixed136x80","fixed136x88","fixed136x96","fixed136x104","fixed136x112","fixed136x120","fixed144x8","fixed144x16","fixed144x24","fixed144x32","fixed144x40","fixed144x48","fixed144x56","fixed144x64","fixed144x72","fixed144x80","fixed144x88","fixed144x96","fixed144x104","fixed144x112","fixed152x8","fixed152x16","fixed152x24","fixed152x32","fixed152x40","fixed152x48","fixed152x56","fixed152x64","fixed152x72","fixed152x80","fixed152x88","fixed152x96","fixed152x104","fixed160x8","fixed160x16","fixed160x24","fixed160x32","fixed160x40","fixed160x48","fixed160x56","fixed160x64","fixed160x72","fixed160x80","fixed160x88","fixed160x96","fixed168x8","fixed168x16","fixed168x24","fixed168x32","fixed168x40","fixed168x48","fixed168x56","fixed168x64","fixed168x72","fixed168x80","fixed168x88","fixed176x8","fixed176x16","fixed176x24","fixed176x32","fixed176x40","fixed176x48","fixed176x56","fixed176x64","fixed176x72","fixed176x80","fixed184x8","fixed184x16","fixed184x24","fixed184x32","fixed184x40","fixed184x48","fixed184x56","fixed184x64","fixed184x72","fixed192x8","fixed192x16","fixed192x24","fixed192x32","fixed192x40","fixed192x48","fixed192x56","fixed192x64","fixed200x8","fixed200x16","fixed200x24","fixed200x32","fixed200x40","fixed200x48","fixed200x56","fixed208x8","fixed208x16","fixed208x24","fixed208x32","fixed208x40","fixed208x48","fixed216x8","fixed216x16","fixed216x24","fixed216x32","fixed216x40","fixed224x8","fixed224x16","fixed224x24","fixed224x32","fixed232x8","fixed232x16","fixed232x24","fixed240x8","fixed240x16","fixed248x8","ufixed","ufixed0x8","ufixed0x16","ufixed0x24","ufixed0x32","ufixed0x40","ufixed0x48","ufixed0x56","ufixed0x64","ufixed0x72","ufixed0x80","ufixed0x88","ufixed0x96","ufixed0x104","ufixed0x112","ufixed0x120","ufixed0x128","ufixed0x136","ufixed0x144","ufixed0x152","ufixed0x160","ufixed0x168","ufixed0x176","ufixed0x184","ufixed0x192","ufixed0x200","ufixed0x208","ufixed0x216","ufixed0x224","ufixed0x232","ufixed0x240","ufixed0x248","ufixed0x256","ufixed8x8","ufixed8x16","ufixed8x24","ufixed8x32","ufixed8x40","ufixed8x48","ufixed8x56","ufixed8x64","ufixed8x72","ufixed8x80","ufixed8x88","ufixed8x96","ufixed8x104","ufixed8x112","ufixed8x120","ufixed8x128","ufixed8x136","ufixed8x144","ufixed8x152","ufixed8x160","ufixed8x168","ufixed8x176","ufixed8x184","ufixed8x192","ufixed8x200","ufixed8x208","ufixed8x216","ufixed8x224","ufixed8x232","ufixed8x240","ufixed8x248","ufixed16x8","ufixed16x16","ufixed16x24","ufixed16x32","ufixed16x40","ufixed16x48","ufixed16x56","ufixed16x64","ufixed16x72","ufixed16x80","ufixed16x88","ufixed16x96","ufixed16x104","ufixed16x112","ufixed16x120","ufixed16x128","ufixed16x136","ufixed16x144","ufixed16x152","ufixed16x160","ufixed16x168","ufixed16x176","ufixed16x184","ufixed16x192","ufixed16x200","ufixed16x208","ufixed16x216","ufixed16x224","ufixed16x232","ufixed16x240","ufixed24x8","ufixed24x16","ufixed24x24","ufixed24x32","ufixed24x40","ufixed24x48","ufixed24x56","ufixed24x64","ufixed24x72","ufixed24x80","ufixed24x88","ufixed24x96","ufixed24x104","ufixed24x112","ufixed24x120","ufixed24x128","ufixed24x136","ufixed24x144","ufixed24x152","ufixed24x160","ufixed24x168","ufixed24x176","ufixed24x184","ufixed24x192","ufixed24x200","ufixed24x208","ufixed24x216","ufixed24x224","ufixed24x232","ufixed32x8","ufixed32x16","ufixed32x24","ufixed32x32","ufixed32x40","ufixed32x48","ufixed32x56","ufixed32x64","ufixed32x72","ufixed32x80","ufixed32x88","ufixed32x96","ufixed32x104","ufixed32x112","ufixed32x120","ufixed32x128","ufixed32x136","ufixed32x144","ufixed32x152","ufixed32x160","ufixed32x168","ufixed32x176","ufixed32x184","ufixed32x192","ufixed32x200","ufixed32x208","ufixed32x216","ufixed32x224","ufixed40x8","ufixed40x16","ufixed40x24","ufixed40x32","ufixed40x40","ufixed40x48","ufixed40x56","ufixed40x64","ufixed40x72","ufixed40x80","ufixed40x88","ufixed40x96","ufixed40x104","ufixed40x112","ufixed40x120","ufixed40x128","ufixed40x136","ufixed40x144","ufixed40x152","ufixed40x160","ufixed40x168","ufixed40x176","ufixed40x184","ufixed40x192","ufixed40x200","ufixed40x208","ufixed40x216","ufixed48x8","ufixed48x16","ufixed48x24","ufixed48x32","ufixed48x40","ufixed48x48","ufixed48x56","ufixed48x64","ufixed48x72","ufixed48x80","ufixed48x88","ufixed48x96","ufixed48x104","ufixed48x112","ufixed48x120","ufixed48x128","ufixed48x136","ufixed48x144","ufixed48x152","ufixed48x160","ufixed48x168","ufixed48x176","ufixed48x184","ufixed48x192","ufixed48x200","ufixed48x208","ufixed56x8","ufixed56x16","ufixed56x24","ufixed56x32","ufixed56x40","ufixed56x48","ufixed56x56","ufixed56x64","ufixed56x72","ufixed56x80","ufixed56x88","ufixed56x96","ufixed56x104","ufixed56x112","ufixed56x120","ufixed56x128","ufixed56x136","ufixed56x144","ufixed56x152","ufixed56x160","ufixed56x168","ufixed56x176","ufixed56x184","ufixed56x192","ufixed56x200","ufixed64x8","ufixed64x16","ufixed64x24","ufixed64x32","ufixed64x40","ufixed64x48","ufixed64x56","ufixed64x64","ufixed64x72","ufixed64x80","ufixed64x88","ufixed64x96","ufixed64x104","ufixed64x112","ufixed64x120","ufixed64x128","ufixed64x136","ufixed64x144","ufixed64x152","ufixed64x160","ufixed64x168","ufixed64x176","ufixed64x184","ufixed64x192","ufixed72x8","ufixed72x16","ufixed72x24","ufixed72x32","ufixed72x40","ufixed72x48","ufixed72x56","ufixed72x64","ufixed72x72","ufixed72x80","ufixed72x88","ufixed72x96","ufixed72x104","ufixed72x112","ufixed72x120","ufixed72x128","ufixed72x136","ufixed72x144","ufixed72x152","ufixed72x160","ufixed72x168","ufixed72x176","ufixed72x184","ufixed80x8","ufixed80x16","ufixed80x24","ufixed80x32","ufixed80x40","ufixed80x48","ufixed80x56","ufixed80x64","ufixed80x72","ufixed80x80","ufixed80x88","ufixed80x96","ufixed80x104","ufixed80x112","ufixed80x120","ufixed80x128","ufixed80x136","ufixed80x144","ufixed80x152","ufixed80x160","ufixed80x168","ufixed80x176","ufixed88x8","ufixed88x16","ufixed88x24","ufixed88x32","ufixed88x40","ufixed88x48","ufixed88x56","ufixed88x64","ufixed88x72","ufixed88x80","ufixed88x88","ufixed88x96","ufixed88x104","ufixed88x112","ufixed88x120","ufixed88x128","ufixed88x136","ufixed88x144","ufixed88x152","ufixed88x160","ufixed88x168","ufixed96x8","ufixed96x16","ufixed96x24","ufixed96x32","ufixed96x40","ufixed96x48","ufixed96x56","ufixed96x64","ufixed96x72","ufixed96x80","ufixed96x88","ufixed96x96","ufixed96x104","ufixed96x112","ufixed96x120","ufixed96x128","ufixed96x136","ufixed96x144","ufixed96x152","ufixed96x160","ufixed104x8","ufixed104x16","ufixed104x24","ufixed104x32","ufixed104x40","ufixed104x48","ufixed104x56","ufixed104x64","ufixed104x72","ufixed104x80","ufixed104x88","ufixed104x96","ufixed104x104","ufixed104x112","ufixed104x120","ufixed104x128","ufixed104x136","ufixed104x144","ufixed104x152","ufixed112x8","ufixed112x16","ufixed112x24","ufixed112x32","ufixed112x40","ufixed112x48","ufixed112x56","ufixed112x64","ufixed112x72","ufixed112x80","ufixed112x88","ufixed112x96","ufixed112x104","ufixed112x112","ufixed112x120","ufixed112x128","ufixed112x136","ufixed112x144","ufixed120x8","ufixed120x16","ufixed120x24","ufixed120x32","ufixed120x40","ufixed120x48","ufixed120x56","ufixed120x64","ufixed120x72","ufixed120x80","ufixed120x88","ufixed120x96","ufixed120x104","ufixed120x112","ufixed120x120","ufixed120x128","ufixed120x136","ufixed128x8","ufixed128x16","ufixed128x24","ufixed128x32","ufixed128x40","ufixed128x48","ufixed128x56","ufixed128x64","ufixed128x72","ufixed128x80","ufixed128x88","ufixed128x96","ufixed128x104","ufixed128x112","ufixed128x120","ufixed128x128","ufixed136x8","ufixed136x16","ufixed136x24","ufixed136x32","ufixed136x40","ufixed136x48","ufixed136x56","ufixed136x64","ufixed136x72","ufixed136x80","ufixed136x88","ufixed136x96","ufixed136x104","ufixed136x112","ufixed136x120","ufixed144x8","ufixed144x16","ufixed144x24","ufixed144x32","ufixed144x40","ufixed144x48","ufixed144x56","ufixed144x64","ufixed144x72","ufixed144x80","ufixed144x88","ufixed144x96","ufixed144x104","ufixed144x112","ufixed152x8","ufixed152x16","ufixed152x24","ufixed152x32","ufixed152x40","ufixed152x48","ufixed152x56","ufixed152x64","ufixed152x72","ufixed152x80","ufixed152x88","ufixed152x96","ufixed152x104","ufixed160x8","ufixed160x16","ufixed160x24","ufixed160x32","ufixed160x40","ufixed160x48","ufixed160x56","ufixed160x64","ufixed160x72","ufixed160x80","ufixed160x88","ufixed160x96","ufixed168x8","ufixed168x16","ufixed168x24","ufixed168x32","ufixed168x40","ufixed168x48","ufixed168x56","ufixed168x64","ufixed168x72","ufixed168x80","ufixed168x88","ufixed176x8","ufixed176x16","ufixed176x24","ufixed176x32","ufixed176x40","ufixed176x48","ufixed176x56","ufixed176x64","ufixed176x72","ufixed176x80","ufixed184x8","ufixed184x16","ufixed184x24","ufixed184x32","ufixed184x40","ufixed184x48","ufixed184x56","ufixed184x64","ufixed184x72","ufixed192x8","ufixed192x16","ufixed192x24","ufixed192x32","ufixed192x40","ufixed192x48","ufixed192x56","ufixed192x64","ufixed200x8","ufixed200x16","ufixed200x24","ufixed200x32","ufixed200x40","ufixed200x48","ufixed200x56","ufixed208x8","ufixed208x16","ufixed208x24","ufixed208x32","ufixed208x40","ufixed208x48","ufixed216x8","ufixed216x16","ufixed216x24","ufixed216x32","ufixed216x40","ufixed224x8","ufixed224x16","ufixed224x24","ufixed224x32","ufixed232x8","ufixed232x16","ufixed232x24","ufixed240x8","ufixed240x16","ufixed248x8","event","enum","let","mapping","private","public","external","inherited","payable","true","false","var","import","constant","if","else","for","else","for","while","do","break","continue","throw","returns","return","suicide","new","is","this","super"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,floatsuffix:/[fFlL]?/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/\[\[.*\]\]/,"annotation"],[/^\s*#\w+/,"keyword"],[/int\d*/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6044.2de9962d.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6044.2de9962d.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6044.2de9962d.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6058.7f474f92.chunk.js b/ydb/core/viewer/monitoring/static/js/6058.7f474f92.chunk.js new file mode 100644 index 000000000000..9f75f271348a --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6058.7f474f92.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6058],{46058:function(e,n,u){e.exports=function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=n(e);function r(e){return e>9?r(e%10):e}function t(e,n,u){return e+" "+function(e,n){return 2===n?function(e){return{m:"v",b:"v",d:"z"}[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[u],e)}var _={name:"br",weekdays:"Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn".split("_"),months:"Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),weekStart:1,weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),monthsShort:"Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},relativeTime:{future:"a-benn %s",past:"%s \u02bczo",s:"un nebeud segondenno\xf9",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(r(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},meridiem:function(e){return e<12?"a.m.":"g.m."}};return u.default.locale(_,null,!0),_}(u(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6060.eb821066.chunk.js b/ydb/core/viewer/monitoring/static/js/6060.eb821066.chunk.js deleted file mode 100644 index aba006f340ef..000000000000 --- a/ydb/core/viewer/monitoring/static/js/6060.eb821066.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6060],{16060:function(e,t,n){n.r(t),n.d(t,{setupMode:function(){return ps}});var r,i=n(24116),o=function(){function e(e){var t=this;this._defaults=e,this._worker=null,this._idleCheckInterval=window.setInterval((function(){return t._checkIfIdle()}),3e4),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange((function(){return t._stopWorker()}))}return e.prototype._stopWorker=function(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null},e.prototype.dispose=function(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()},e.prototype._checkIfIdle=function(){this._worker&&(Date.now()-this._lastUsedTime>12e4&&this._stopWorker())},e.prototype._getClient=function(){return this._lastUsedTime=Date.now(),this._client||(this._worker=i.j6.createWebWorker({moduleId:"vs/language/css/cssWorker",label:this._defaults.languageId,createData:{languageSettings:this._defaults.diagnosticsOptions,languageId:this._defaults.languageId}}),this._client=this._worker.getProxy()),this._client},e.prototype.getLanguageServiceWorker=function(){for(var e,t=this,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return this._getClient().then((function(t){e=t})).then((function(e){return t._worker.withSyncedResources(n)})).then((function(t){return e}))},e}();!function(e){e[e.Ident=0]="Ident",e[e.AtKeyword=1]="AtKeyword",e[e.String=2]="String",e[e.BadString=3]="BadString",e[e.UnquotedString=4]="UnquotedString",e[e.Hash=5]="Hash",e[e.Num=6]="Num",e[e.Percentage=7]="Percentage",e[e.Dimension=8]="Dimension",e[e.UnicodeRange=9]="UnicodeRange",e[e.CDO=10]="CDO",e[e.CDC=11]="CDC",e[e.Colon=12]="Colon",e[e.SemiColon=13]="SemiColon",e[e.CurlyL=14]="CurlyL",e[e.CurlyR=15]="CurlyR",e[e.ParenthesisL=16]="ParenthesisL",e[e.ParenthesisR=17]="ParenthesisR",e[e.BracketL=18]="BracketL",e[e.BracketR=19]="BracketR",e[e.Whitespace=20]="Whitespace",e[e.Includes=21]="Includes",e[e.Dashmatch=22]="Dashmatch",e[e.SubstringOperator=23]="SubstringOperator",e[e.PrefixOperator=24]="PrefixOperator",e[e.SuffixOperator=25]="SuffixOperator",e[e.Delim=26]="Delim",e[e.EMS=27]="EMS",e[e.EXS=28]="EXS",e[e.Length=29]="Length",e[e.Angle=30]="Angle",e[e.Time=31]="Time",e[e.Freq=32]="Freq",e[e.Exclamation=33]="Exclamation",e[e.Resolution=34]="Resolution",e[e.Comma=35]="Comma",e[e.Charset=36]="Charset",e[e.EscapedJavaScript=37]="EscapedJavaScript",e[e.BadEscapedJavaScript=38]="BadEscapedJavaScript",e[e.Comment=39]="Comment",e[e.SingleLineComment=40]="SingleLineComment",e[e.EOF=41]="EOF",e[e.CustomToken=42]="CustomToken"}(r||(r={}));var s=function(){function e(e){this.source=e,this.len=e.length,this.position=0}return e.prototype.substring=function(e,t){return void 0===t&&(t=this.position),this.source.substring(e,t)},e.prototype.eos=function(){return this.len<=this.position},e.prototype.pos=function(){return this.position},e.prototype.goBackTo=function(e){this.position=e},e.prototype.goBack=function(e){this.position-=e},e.prototype.advance=function(e){this.position+=e},e.prototype.nextChar=function(){return this.source.charCodeAt(this.position++)||0},e.prototype.peekChar=function(e){return void 0===e&&(e=0),this.source.charCodeAt(this.position+e)||0},e.prototype.lookbackChar=function(e){return void 0===e&&(e=0),this.source.charCodeAt(this.position-e)||0},e.prototype.advanceIfChar=function(e){return e===this.source.charCodeAt(this.position)&&(this.position++,!0)},e.prototype.advanceIfChars=function(e){if(this.position+e.length>this.source.length)return!1;for(var t=0;t<e.length;t++)if(this.source.charCodeAt(this.position+t)!==e[t])return!1;return this.advance(t),!0},e.prototype.advanceWhileChar=function(e){for(var t=this.position;this.position<this.len&&e(this.source.charCodeAt(this.position));)this.position++;return this.position-t},e}(),a="a".charCodeAt(0),l="f".charCodeAt(0),c="z".charCodeAt(0),d="A".charCodeAt(0),p="F".charCodeAt(0),h="Z".charCodeAt(0),m="0".charCodeAt(0),u="9".charCodeAt(0),f="~".charCodeAt(0),g="^".charCodeAt(0),b="=".charCodeAt(0),v="|".charCodeAt(0),y="-".charCodeAt(0),w="_".charCodeAt(0),x="%".charCodeAt(0),S="*".charCodeAt(0),k="(".charCodeAt(0),C=")".charCodeAt(0),F="<".charCodeAt(0),E=">".charCodeAt(0),z="@".charCodeAt(0),D="#".charCodeAt(0),T="$".charCodeAt(0),R="\\".charCodeAt(0),I="/".charCodeAt(0),M="\n".charCodeAt(0),P="\r".charCodeAt(0),_="\f".charCodeAt(0),N='"'.charCodeAt(0),A="'".charCodeAt(0),O=" ".charCodeAt(0),W="\t".charCodeAt(0),L=";".charCodeAt(0),j=":".charCodeAt(0),U="{".charCodeAt(0),V="}".charCodeAt(0),B="[".charCodeAt(0),$="]".charCodeAt(0),q=",".charCodeAt(0),K=".".charCodeAt(0),G="!".charCodeAt(0),J={};J[L]=r.SemiColon,J[j]=r.Colon,J[U]=r.CurlyL,J[V]=r.CurlyR,J[$]=r.BracketR,J[B]=r.BracketL,J[k]=r.ParenthesisL,J[C]=r.ParenthesisR,J[q]=r.Comma;var H={};H.em=r.EMS,H.ex=r.EXS,H.px=r.Length,H.cm=r.Length,H.mm=r.Length,H.in=r.Length,H.pt=r.Length,H.pc=r.Length,H.deg=r.Angle,H.rad=r.Angle,H.grad=r.Angle,H.ms=r.Time,H.s=r.Time,H.hz=r.Freq,H.khz=r.Freq,H["%"]=r.Percentage,H.fr=r.Percentage,H.dpi=r.Resolution,H.dpcm=r.Resolution;var X=function(){function e(){this.stream=new s(""),this.ignoreComment=!0,this.ignoreWhitespace=!0,this.inURL=!1}return e.prototype.setSource=function(e){this.stream=new s(e)},e.prototype.finishToken=function(e,t,n){return{offset:e,len:this.stream.pos()-e,type:t,text:n||this.stream.substring(e)}},e.prototype.substring=function(e,t){return this.stream.substring(e,e+t)},e.prototype.pos=function(){return this.stream.pos()},e.prototype.goBackTo=function(e){this.stream.goBackTo(e)},e.prototype.scanUnquotedString=function(){var e=this.stream.pos(),t=[];return this._unquotedString(t)?this.finishToken(e,r.UnquotedString,t.join("")):null},e.prototype.scan=function(){var e=this.trivia();if(null!==e)return e;var t=this.stream.pos();return this.stream.eos()?this.finishToken(t,r.EOF):this.scanNext(t)},e.prototype.scanNext=function(e){if(this.stream.advanceIfChars([F,G,y,y]))return this.finishToken(e,r.CDO);if(this.stream.advanceIfChars([y,y,E]))return this.finishToken(e,r.CDC);var t=[];if(this.ident(t))return this.finishToken(e,r.Ident,t.join(""));if(this.stream.advanceIfChar(z)){if(t=["@"],this._name(t)){var n=t.join("");return"@charset"===n?this.finishToken(e,r.Charset,n):this.finishToken(e,r.AtKeyword,n)}return this.finishToken(e,r.Delim)}if(this.stream.advanceIfChar(D))return t=["#"],this._name(t)?this.finishToken(e,r.Hash,t.join("")):this.finishToken(e,r.Delim);if(this.stream.advanceIfChar(G))return this.finishToken(e,r.Exclamation);if(this._number()){var i=this.stream.pos();if(t=[this.stream.substring(e,i)],this.stream.advanceIfChar(x))return this.finishToken(e,r.Percentage);if(this.ident(t)){var o=this.stream.substring(i).toLowerCase(),s=H[o];return"undefined"!==typeof s?this.finishToken(e,s,t.join("")):this.finishToken(e,r.Dimension,t.join(""))}return this.finishToken(e,r.Num)}t=[];var a=this._string(t);return null!==a?this.finishToken(e,a,t.join("")):"undefined"!==typeof(a=J[this.stream.peekChar()])?(this.stream.advance(1),this.finishToken(e,a)):this.stream.peekChar(0)===f&&this.stream.peekChar(1)===b?(this.stream.advance(2),this.finishToken(e,r.Includes)):this.stream.peekChar(0)===v&&this.stream.peekChar(1)===b?(this.stream.advance(2),this.finishToken(e,r.Dashmatch)):this.stream.peekChar(0)===S&&this.stream.peekChar(1)===b?(this.stream.advance(2),this.finishToken(e,r.SubstringOperator)):this.stream.peekChar(0)===g&&this.stream.peekChar(1)===b?(this.stream.advance(2),this.finishToken(e,r.PrefixOperator)):this.stream.peekChar(0)===T&&this.stream.peekChar(1)===b?(this.stream.advance(2),this.finishToken(e,r.SuffixOperator)):(this.stream.nextChar(),this.finishToken(e,r.Delim))},e.prototype.trivia=function(){for(;;){var e=this.stream.pos();if(this._whitespace()){if(!this.ignoreWhitespace)return this.finishToken(e,r.Whitespace)}else{if(!this.comment())return null;if(!this.ignoreComment)return this.finishToken(e,r.Comment)}}},e.prototype.comment=function(){if(this.stream.advanceIfChars([I,S])){var e=!1,t=!1;return this.stream.advanceWhileChar((function(n){return t&&n===I?(e=!0,!1):(t=n===S,!0)})),e&&this.stream.advance(1),!0}return!1},e.prototype._number=function(){var e,t=0;return this.stream.peekChar()===K&&(t=1),(e=this.stream.peekChar(t))>=m&&e<=u&&(this.stream.advance(t+1),this.stream.advanceWhileChar((function(e){return e>=m&&e<=u||0===t&&e===K})),!0)},e.prototype._newline=function(e){var t=this.stream.peekChar();switch(t){case P:case _:case M:return this.stream.advance(1),e.push(String.fromCharCode(t)),t===P&&this.stream.advanceIfChar(M)&&e.push("\n"),!0}return!1},e.prototype._escape=function(e,t){var n=this.stream.peekChar();if(n===R){this.stream.advance(1),n=this.stream.peekChar();for(var r=0;r<6&&(n>=m&&n<=u||n>=a&&n<=l||n>=d&&n<=p);)this.stream.advance(1),n=this.stream.peekChar(),r++;if(r>0){try{var i=parseInt(this.stream.substring(this.stream.pos()-r),16);i&&e.push(String.fromCharCode(i))}catch(o){}return n===O||n===W?this.stream.advance(1):this._newline([]),!0}if(n!==P&&n!==_&&n!==M)return this.stream.advance(1),e.push(String.fromCharCode(n)),!0;if(t)return this._newline(e)}return!1},e.prototype._stringChar=function(e,t){var n=this.stream.peekChar();return 0!==n&&n!==e&&n!==R&&n!==P&&n!==_&&n!==M&&(this.stream.advance(1),t.push(String.fromCharCode(n)),!0)},e.prototype._string=function(e){if(this.stream.peekChar()===A||this.stream.peekChar()===N){var t=this.stream.nextChar();for(e.push(String.fromCharCode(t));this._stringChar(t,e)||this._escape(e,!0););return this.stream.peekChar()===t?(this.stream.nextChar(),e.push(String.fromCharCode(t)),r.String):r.BadString}return null},e.prototype._unquotedChar=function(e){var t=this.stream.peekChar();return 0!==t&&t!==R&&t!==A&&t!==N&&t!==k&&t!==C&&t!==O&&t!==W&&t!==M&&t!==_&&t!==P&&(this.stream.advance(1),e.push(String.fromCharCode(t)),!0)},e.prototype._unquotedString=function(e){for(var t=!1;this._unquotedChar(e)||this._escape(e);)t=!0;return t},e.prototype._whitespace=function(){return this.stream.advanceWhileChar((function(e){return e===O||e===W||e===M||e===_||e===P}))>0},e.prototype._name=function(e){for(var t=!1;this._identChar(e)||this._escape(e);)t=!0;return t},e.prototype.ident=function(e){var t=this.stream.pos();if(this._minus(e)&&this._minus(e)){if(this._identFirstChar(e)||this._escape(e)){for(;this._identChar(e)||this._escape(e););return!0}}else if(this._identFirstChar(e)||this._escape(e)){for(;this._identChar(e)||this._escape(e););return!0}return this.stream.goBackTo(t),!1},e.prototype._identFirstChar=function(e){var t=this.stream.peekChar();return(t===w||t>=a&&t<=c||t>=d&&t<=h||t>=128&&t<=65535)&&(this.stream.advance(1),e.push(String.fromCharCode(t)),!0)},e.prototype._minus=function(e){var t=this.stream.peekChar();return t===y&&(this.stream.advance(1),e.push(String.fromCharCode(t)),!0)},e.prototype._identChar=function(e){var t=this.stream.peekChar();return(t===w||t===y||t>=a&&t<=c||t>=d&&t<=h||t>=m&&t<=u||t>=128&&t<=65535)&&(this.stream.advance(1),e.push(String.fromCharCode(t)),!0)},e}();function Y(e,t){if(e.length<t.length)return!1;for(var n=0;n<t.length;n++)if(e[n]!==t[n])return!1;return!0}function Z(e,t){var n=e.length-t.length;return n>0?e.lastIndexOf(t)===n:0===n&&e===t}function Q(e,t){return void 0===t&&(t=!0),e?e.length<140?e:e.slice(0,140)+(t?"\u2026":""):""}var ee,te,ne=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();function re(e,t){var n=null;return!e||t<e.offset||t>e.end?null:(e.accept((function(e){return-1===e.offset&&-1===e.length||e.offset<=t&&e.end>=t&&(n?e.length<=n.length&&(n=e):n=e,!0)})),n)}function ie(e,t){for(var n=re(e,t),r=[];n;)r.unshift(n),n=n.parent;return r}!function(e){e[e.Undefined=0]="Undefined",e[e.Identifier=1]="Identifier",e[e.Stylesheet=2]="Stylesheet",e[e.Ruleset=3]="Ruleset",e[e.Selector=4]="Selector",e[e.SimpleSelector=5]="SimpleSelector",e[e.SelectorInterpolation=6]="SelectorInterpolation",e[e.SelectorCombinator=7]="SelectorCombinator",e[e.SelectorCombinatorParent=8]="SelectorCombinatorParent",e[e.SelectorCombinatorSibling=9]="SelectorCombinatorSibling",e[e.SelectorCombinatorAllSiblings=10]="SelectorCombinatorAllSiblings",e[e.SelectorCombinatorShadowPiercingDescendant=11]="SelectorCombinatorShadowPiercingDescendant",e[e.Page=12]="Page",e[e.PageBoxMarginBox=13]="PageBoxMarginBox",e[e.ClassSelector=14]="ClassSelector",e[e.IdentifierSelector=15]="IdentifierSelector",e[e.ElementNameSelector=16]="ElementNameSelector",e[e.PseudoSelector=17]="PseudoSelector",e[e.AttributeSelector=18]="AttributeSelector",e[e.Declaration=19]="Declaration",e[e.Declarations=20]="Declarations",e[e.Property=21]="Property",e[e.Expression=22]="Expression",e[e.BinaryExpression=23]="BinaryExpression",e[e.Term=24]="Term",e[e.Operator=25]="Operator",e[e.Value=26]="Value",e[e.StringLiteral=27]="StringLiteral",e[e.URILiteral=28]="URILiteral",e[e.EscapedValue=29]="EscapedValue",e[e.Function=30]="Function",e[e.NumericValue=31]="NumericValue",e[e.HexColorValue=32]="HexColorValue",e[e.MixinDeclaration=33]="MixinDeclaration",e[e.MixinReference=34]="MixinReference",e[e.VariableName=35]="VariableName",e[e.VariableDeclaration=36]="VariableDeclaration",e[e.Prio=37]="Prio",e[e.Interpolation=38]="Interpolation",e[e.NestedProperties=39]="NestedProperties",e[e.ExtendsReference=40]="ExtendsReference",e[e.SelectorPlaceholder=41]="SelectorPlaceholder",e[e.Debug=42]="Debug",e[e.If=43]="If",e[e.Else=44]="Else",e[e.For=45]="For",e[e.Each=46]="Each",e[e.While=47]="While",e[e.MixinContentReference=48]="MixinContentReference",e[e.MixinContentDeclaration=49]="MixinContentDeclaration",e[e.Media=50]="Media",e[e.Keyframe=51]="Keyframe",e[e.FontFace=52]="FontFace",e[e.Import=53]="Import",e[e.Namespace=54]="Namespace",e[e.Invocation=55]="Invocation",e[e.FunctionDeclaration=56]="FunctionDeclaration",e[e.ReturnStatement=57]="ReturnStatement",e[e.MediaQuery=58]="MediaQuery",e[e.FunctionParameter=59]="FunctionParameter",e[e.FunctionArgument=60]="FunctionArgument",e[e.KeyframeSelector=61]="KeyframeSelector",e[e.ViewPort=62]="ViewPort",e[e.Document=63]="Document",e[e.AtApplyRule=64]="AtApplyRule",e[e.CustomPropertyDeclaration=65]="CustomPropertyDeclaration",e[e.CustomPropertySet=66]="CustomPropertySet",e[e.ListEntry=67]="ListEntry",e[e.Supports=68]="Supports",e[e.SupportsCondition=69]="SupportsCondition",e[e.NamespacePrefix=70]="NamespacePrefix",e[e.GridLine=71]="GridLine",e[e.Plugin=72]="Plugin",e[e.UnknownAtRule=73]="UnknownAtRule",e[e.Use=74]="Use",e[e.ModuleConfiguration=75]="ModuleConfiguration",e[e.Forward=76]="Forward",e[e.ForwardVisibility=77]="ForwardVisibility",e[e.Module=78]="Module"}(ee||(ee={})),function(e){e[e.Mixin=0]="Mixin",e[e.Rule=1]="Rule",e[e.Variable=2]="Variable",e[e.Function=3]="Function",e[e.Keyframe=4]="Keyframe",e[e.Unknown=5]="Unknown",e[e.Module=6]="Module",e[e.Forward=7]="Forward",e[e.ForwardVisibility=8]="ForwardVisibility"}(te||(te={}));var oe,se=function(){function e(e,t,n){void 0===e&&(e=-1),void 0===t&&(t=-1),this.parent=null,this.offset=e,this.length=t,n&&(this.nodeType=n)}return Object.defineProperty(e.prototype,"end",{get:function(){return this.offset+this.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"type",{get:function(){return this.nodeType||ee.Undefined},set:function(e){this.nodeType=e},enumerable:!1,configurable:!0}),e.prototype.getTextProvider=function(){for(var e=this;e&&!e.textProvider;)e=e.parent;return e?e.textProvider:function(){return"unknown"}},e.prototype.getText=function(){return this.getTextProvider()(this.offset,this.length)},e.prototype.matches=function(e){return this.length===e.length&&this.getTextProvider()(this.offset,this.length)===e},e.prototype.startsWith=function(e){return this.length>=e.length&&this.getTextProvider()(this.offset,e.length)===e},e.prototype.endsWith=function(e){return this.length>=e.length&&this.getTextProvider()(this.end-e.length,e.length)===e},e.prototype.accept=function(e){if(e(this)&&this.children)for(var t=0,n=this.children;t<n.length;t++){n[t].accept(e)}},e.prototype.acceptVisitor=function(e){this.accept(e.visitNode.bind(e))},e.prototype.adoptChild=function(e,t){if(void 0===t&&(t=-1),e.parent&&e.parent.children){var n=e.parent.children.indexOf(e);n>=0&&e.parent.children.splice(n,1)}e.parent=this;var r=this.children;return r||(r=this.children=[]),-1!==t?r.splice(t,0,e):r.push(e),e},e.prototype.attachTo=function(e,t){return void 0===t&&(t=-1),e&&e.adoptChild(this,t),this},e.prototype.collectIssues=function(e){this.issues&&e.push.apply(e,this.issues)},e.prototype.addIssue=function(e){this.issues||(this.issues=[]),this.issues.push(e)},e.prototype.hasIssue=function(e){return Array.isArray(this.issues)&&this.issues.some((function(t){return t.getRule()===e}))},e.prototype.isErroneous=function(e){return void 0===e&&(e=!1),!!(this.issues&&this.issues.length>0)||e&&Array.isArray(this.children)&&this.children.some((function(e){return e.isErroneous(!0)}))},e.prototype.setNode=function(e,t,n){return void 0===n&&(n=-1),!!t&&(t.attachTo(this,n),this[e]=t,!0)},e.prototype.addChild=function(e){return!!e&&(this.children||(this.children=[]),e.attachTo(this),this.updateOffsetAndLength(e),!0)},e.prototype.updateOffsetAndLength=function(e){(e.offset<this.offset||-1===this.offset)&&(this.offset=e.offset);var t=e.end;(t>this.end||-1===this.length)&&(this.length=t-this.offset)},e.prototype.hasChildren=function(){return!!this.children&&this.children.length>0},e.prototype.getChildren=function(){return this.children?this.children.slice(0):[]},e.prototype.getChild=function(e){return this.children&&e<this.children.length?this.children[e]:null},e.prototype.addChildren=function(e){for(var t=0,n=e;t<n.length;t++){var r=n[t];this.addChild(r)}},e.prototype.findFirstChildBeforeOffset=function(e){if(this.children)for(var t=null,n=this.children.length-1;n>=0;n--)if((t=this.children[n]).offset<=e)return t;return null},e.prototype.findChildAtOffset=function(e,t){var n=this.findFirstChildBeforeOffset(e);return n&&n.end>=e?t&&n.findChildAtOffset(e,!0)||n:null},e.prototype.encloses=function(e){return this.offset<=e.offset&&this.offset+this.length>=e.offset+e.length},e.prototype.getParent=function(){for(var e=this.parent;e instanceof ae;)e=e.parent;return e},e.prototype.findParent=function(e){for(var t=this;t&&t.type!==e;)t=t.parent;return t},e.prototype.findAParent=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=this;n&&!e.some((function(e){return n.type===e}));)n=n.parent;return n},e.prototype.setData=function(e,t){this.options||(this.options={}),this.options[e]=t},e.prototype.getData=function(e){return this.options&&this.options.hasOwnProperty(e)?this.options[e]:null},e}(),ae=function(e){function t(t,n){void 0===n&&(n=-1);var r=e.call(this,-1,-1)||this;return r.attachTo(t,n),r.offset=-1,r.length=-1,r}return ne(t,e),t}(se),le=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.isCustomProperty=!1,r}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Identifier},enumerable:!1,configurable:!0}),t.prototype.containsInterpolation=function(){return this.hasChildren()},t}(se),ce=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Stylesheet},enumerable:!1,configurable:!0}),t}(se),de=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Declarations},enumerable:!1,configurable:!0}),t}(se),pe=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),t.prototype.getDeclarations=function(){return this.declarations},t.prototype.setDeclarations=function(e){return this.setNode("declarations",e)},t}(se),he=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Ruleset},enumerable:!1,configurable:!0}),t.prototype.getSelectors=function(){return this.selectors||(this.selectors=new ae(this)),this.selectors},t.prototype.isNested=function(){return!!this.parent&&null!==this.parent.findParent(ee.Declarations)},t}(pe),me=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Selector},enumerable:!1,configurable:!0}),t}(se),ue=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.SimpleSelector},enumerable:!1,configurable:!0}),t}(se),fe=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.AtApplyRule},enumerable:!1,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t}(se),ge=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),t}(se),be=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.CustomPropertySet},enumerable:!1,configurable:!0}),t}(pe),ve=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.property=null,r}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Declaration},enumerable:!1,configurable:!0}),t.prototype.setProperty=function(e){return this.setNode("property",e)},t.prototype.getProperty=function(){return this.property},t.prototype.getFullPropertyName=function(){var e=this.property?this.property.getName():"unknown";if(this.parent instanceof de&&this.parent.getParent()instanceof Me){var n=this.parent.getParent().getParent();if(n instanceof t)return n.getFullPropertyName()+e}return e},t.prototype.getNonPrefixedPropertyName=function(){var e=this.getFullPropertyName();if(e&&"-"===e.charAt(0)){var t=e.indexOf("-",1);if(-1!==t)return e.substring(t+1)}return e},t.prototype.setValue=function(e){return this.setNode("value",e)},t.prototype.getValue=function(){return this.value},t.prototype.setNestedProperties=function(e){return this.setNode("nestedProperties",e)},t.prototype.getNestedProperties=function(){return this.nestedProperties},t}(ge),ye=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.CustomPropertyDeclaration},enumerable:!1,configurable:!0}),t.prototype.setPropertySet=function(e){return this.setNode("propertySet",e)},t.prototype.getPropertySet=function(){return this.propertySet},t}(ve),we=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Property},enumerable:!1,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return function(e,t){var n=t.exec(e);return n&&n[0].length?e.substr(0,e.length-n[0].length):e}(this.getText(),/[_\+]+$/)},t.prototype.isCustomProperty=function(){return!!this.identifier&&this.identifier.isCustomProperty},t}(se),xe=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Function},enumerable:!1,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t}(function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Invocation},enumerable:!1,configurable:!0}),t.prototype.getArguments=function(){return this.arguments||(this.arguments=new ae(this)),this.arguments},t}(se)),Se=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.FunctionParameter},enumerable:!1,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.setDefaultValue=function(e){return this.setNode("defaultValue",e,0)},t.prototype.getDefaultValue=function(){return this.defaultValue},t}(se),ke=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.FunctionArgument},enumerable:!1,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.setValue=function(e){return this.setNode("value",e,0)},t.prototype.getValue=function(){return this.value},t}(se),Ce=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.If},enumerable:!1,configurable:!0}),t.prototype.setExpression=function(e){return this.setNode("expression",e,0)},t.prototype.setElseClause=function(e){return this.setNode("elseClause",e)},t}(pe),Fe=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.For},enumerable:!1,configurable:!0}),t.prototype.setVariable=function(e){return this.setNode("variable",e,0)},t}(pe),Ee=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Each},enumerable:!1,configurable:!0}),t.prototype.getVariables=function(){return this.variables||(this.variables=new ae(this)),this.variables},t}(pe),ze=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.While},enumerable:!1,configurable:!0}),t}(pe),De=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Else},enumerable:!1,configurable:!0}),t}(pe),Te=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.FunctionDeclaration},enumerable:!1,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.getParameters=function(){return this.parameters||(this.parameters=new ae(this)),this.parameters},t}(pe),Re=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.ViewPort},enumerable:!1,configurable:!0}),t}(pe),Ie=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.FontFace},enumerable:!1,configurable:!0}),t}(pe),Me=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.NestedProperties},enumerable:!1,configurable:!0}),t}(pe),Pe=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Keyframe},enumerable:!1,configurable:!0}),t.prototype.setKeyword=function(e){return this.setNode("keyword",e,0)},t.prototype.getKeyword=function(){return this.keyword},t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t}(pe),_e=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.KeyframeSelector},enumerable:!1,configurable:!0}),t}(pe),Ne=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Import},enumerable:!1,configurable:!0}),t.prototype.setMedialist=function(e){return!!e&&(e.attachTo(this),!0)},t}(se),Ae=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Use},enumerable:!1,configurable:!0}),t.prototype.getParameters=function(){return this.parameters||(this.parameters=new ae(this)),this.parameters},t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t}(se),Oe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.ModuleConfiguration},enumerable:!1,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.setValue=function(e){return this.setNode("value",e,0)},t.prototype.getValue=function(){return this.value},t}(se),We=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Forward},enumerable:!1,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getMembers=function(){return this.members||(this.members=new ae(this)),this.members},t.prototype.getParameters=function(){return this.parameters||(this.parameters=new ae(this)),this.parameters},t}(se),Le=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.ForwardVisibility},enumerable:!1,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t}(se),je=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Namespace},enumerable:!1,configurable:!0}),t}(se),Ue=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Media},enumerable:!1,configurable:!0}),t}(pe),Ve=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Supports},enumerable:!1,configurable:!0}),t}(pe),Be=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Document},enumerable:!1,configurable:!0}),t}(pe),$e=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),t.prototype.getMediums=function(){return this.mediums||(this.mediums=new ae(this)),this.mediums},t}(se),qe=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.MediaQuery},enumerable:!1,configurable:!0}),t}(se),Ke=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.SupportsCondition},enumerable:!1,configurable:!0}),t}(se),Ge=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Page},enumerable:!1,configurable:!0}),t}(pe),Je=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.PageBoxMarginBox},enumerable:!1,configurable:!0}),t}(pe),He=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Expression},enumerable:!1,configurable:!0}),t}(se),Xe=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.BinaryExpression},enumerable:!1,configurable:!0}),t.prototype.setLeft=function(e){return this.setNode("left",e)},t.prototype.getLeft=function(){return this.left},t.prototype.setRight=function(e){return this.setNode("right",e)},t.prototype.getRight=function(){return this.right},t.prototype.setOperator=function(e){return this.setNode("operator",e)},t.prototype.getOperator=function(){return this.operator},t}(se),Ye=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Term},enumerable:!1,configurable:!0}),t.prototype.setOperator=function(e){return this.setNode("operator",e)},t.prototype.getOperator=function(){return this.operator},t.prototype.setExpression=function(e){return this.setNode("expression",e)},t.prototype.getExpression=function(){return this.expression},t}(se),Ze=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.AttributeSelector},enumerable:!1,configurable:!0}),t.prototype.setNamespacePrefix=function(e){return this.setNode("namespacePrefix",e)},t.prototype.getNamespacePrefix=function(){return this.namespacePrefix},t.prototype.setIdentifier=function(e){return this.setNode("identifier",e)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.setOperator=function(e){return this.setNode("operator",e)},t.prototype.getOperator=function(){return this.operator},t.prototype.setValue=function(e){return this.setNode("value",e)},t.prototype.getValue=function(){return this.value},t}(se),Qe=(function(e){function t(t,n){return e.call(this,t,n)||this}ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Operator},enumerable:!1,configurable:!0})}(se),function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.HexColorValue},enumerable:!1,configurable:!0}),t}(se)),et=".".charCodeAt(0),tt="0".charCodeAt(0),nt="9".charCodeAt(0),rt=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.NumericValue},enumerable:!1,configurable:!0}),t.prototype.getValue=function(){for(var e,t=this.getText(),n=0,r=0,i=t.length;r<i&&(e=t.charCodeAt(r),tt<=e&&e<=nt||e===et);r++)n+=1;return{value:t.substring(0,n),unit:n<t.length?t.substring(n):void 0}},t}(se),it=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.variable=null,r.value=null,r.needsSemicolon=!0,r}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.VariableDeclaration},enumerable:!1,configurable:!0}),t.prototype.setVariable=function(e){return!!e&&(e.attachTo(this),this.variable=e,!0)},t.prototype.getVariable=function(){return this.variable},t.prototype.getName=function(){return this.variable?this.variable.getName():""},t.prototype.setValue=function(e){return!!e&&(e.attachTo(this),this.value=e,!0)},t.prototype.getValue=function(){return this.value},t}(ge),ot=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Interpolation},enumerable:!1,configurable:!0}),t}(se),st=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.VariableName},enumerable:!1,configurable:!0}),t.prototype.getName=function(){return this.getText()},t}(se),at=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.ExtendsReference},enumerable:!1,configurable:!0}),t.prototype.getSelectors=function(){return this.selectors||(this.selectors=new ae(this)),this.selectors},t}(se),lt=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.MixinContentReference},enumerable:!1,configurable:!0}),t.prototype.getArguments=function(){return this.arguments||(this.arguments=new ae(this)),this.arguments},t}(se),ct=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.MixinContentReference},enumerable:!1,configurable:!0}),t.prototype.getParameters=function(){return this.parameters||(this.parameters=new ae(this)),this.parameters},t}(pe),dt=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.MixinReference},enumerable:!1,configurable:!0}),t.prototype.getNamespaces=function(){return this.namespaces||(this.namespaces=new ae(this)),this.namespaces},t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.getArguments=function(){return this.arguments||(this.arguments=new ae(this)),this.arguments},t.prototype.setContent=function(e){return this.setNode("content",e)},t.prototype.getContent=function(){return this.content},t}(se),pt=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.MixinDeclaration},enumerable:!1,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.getParameters=function(){return this.parameters||(this.parameters=new ae(this)),this.parameters},t.prototype.setGuard=function(e){return e&&(e.attachTo(this),this.guard=e),!1},t}(pe),ht=function(e){function t(t,n){return e.call(this,t,n)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.UnknownAtRule},enumerable:!1,configurable:!0}),t.prototype.setAtRuleName=function(e){this.atRuleName=e},t.prototype.getAtRuleName=function(){return this.atRuleName},t}(pe),mt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.ListEntry},enumerable:!1,configurable:!0}),t.prototype.setKey=function(e){return this.setNode("key",e,0)},t.prototype.setValue=function(e){return this.setNode("value",e,1)},t}(se),ut=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ne(t,e),t.prototype.getConditions=function(){return this.conditions||(this.conditions=new ae(this)),this.conditions},t}(se),ft=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ne(t,e),t.prototype.setVariable=function(e){return this.setNode("variable",e)},t}(se),gt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ne(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ee.Module},enumerable:!1,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t}(se);!function(e){e[e.Ignore=1]="Ignore",e[e.Warning=2]="Warning",e[e.Error=4]="Error"}(oe||(oe={}));var bt=function(){function e(e,t,n,r,i,o){void 0===i&&(i=e.offset),void 0===o&&(o=e.length),this.node=e,this.rule=t,this.level=n,this.message=r||t.message,this.offset=i,this.length=o}return e.prototype.getRule=function(){return this.rule},e.prototype.getLevel=function(){return this.level},e.prototype.getOffset=function(){return this.offset},e.prototype.getLength=function(){return this.length},e.prototype.getNode=function(){return this.node},e.prototype.getMessage=function(){return this.message},e}(),vt=function(){function e(){this.entries=[]}return e.entries=function(t){var n=new e;return t.acceptVisitor(n),n.entries},e.prototype.visitNode=function(e){return e.isErroneous()&&e.collectIssues(this.entries),!0},e}();function yt(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];return function(e,t){return 0===t.length?e:e.replace(/\{(\d+)\}/g,(function(e,n){var r=n[0];return"undefined"!==typeof t[r]?t[r]:e}))}(t,n)}function wt(e){return yt}var xt=wt(),St=function(e,t){this.id=e,this.message=t},kt={NumberExpected:new St("css-numberexpected",xt("expected.number","number expected")),ConditionExpected:new St("css-conditionexpected",xt("expected.condt","condition expected")),RuleOrSelectorExpected:new St("css-ruleorselectorexpected",xt("expected.ruleorselector","at-rule or selector expected")),DotExpected:new St("css-dotexpected",xt("expected.dot","dot expected")),ColonExpected:new St("css-colonexpected",xt("expected.colon","colon expected")),SemiColonExpected:new St("css-semicolonexpected",xt("expected.semicolon","semi-colon expected")),TermExpected:new St("css-termexpected",xt("expected.term","term expected")),ExpressionExpected:new St("css-expressionexpected",xt("expected.expression","expression expected")),OperatorExpected:new St("css-operatorexpected",xt("expected.operator","operator expected")),IdentifierExpected:new St("css-identifierexpected",xt("expected.ident","identifier expected")),PercentageExpected:new St("css-percentageexpected",xt("expected.percentage","percentage expected")),URIOrStringExpected:new St("css-uriorstringexpected",xt("expected.uriorstring","uri or string expected")),URIExpected:new St("css-uriexpected",xt("expected.uri","URI expected")),VariableNameExpected:new St("css-varnameexpected",xt("expected.varname","variable name expected")),VariableValueExpected:new St("css-varvalueexpected",xt("expected.varvalue","variable value expected")),PropertyValueExpected:new St("css-propertyvalueexpected",xt("expected.propvalue","property value expected")),LeftCurlyExpected:new St("css-lcurlyexpected",xt("expected.lcurly","{ expected")),RightCurlyExpected:new St("css-rcurlyexpected",xt("expected.rcurly","} expected")),LeftSquareBracketExpected:new St("css-rbracketexpected",xt("expected.lsquare","[ expected")),RightSquareBracketExpected:new St("css-lbracketexpected",xt("expected.rsquare","] expected")),LeftParenthesisExpected:new St("css-lparentexpected",xt("expected.lparen","( expected")),RightParenthesisExpected:new St("css-rparentexpected",xt("expected.rparent",") expected")),CommaExpected:new St("css-commaexpected",xt("expected.comma","comma expected")),PageDirectiveOrDeclarationExpected:new St("css-pagedirordeclexpected",xt("expected.pagedirordecl","page directive or declaraton expected")),UnknownAtRule:new St("css-unknownatrule",xt("unknown.atrule","at-rule unknown")),UnknownKeyword:new St("css-unknownkeyword",xt("unknown.keyword","unknown keyword")),SelectorExpected:new St("css-selectorexpected",xt("expected.selector","selector expected")),StringLiteralExpected:new St("css-stringliteralexpected",xt("expected.stringliteral","string literal expected")),WhitespaceExpected:new St("css-whitespaceexpected",xt("expected.whitespace","whitespace expected")),MediaQueryExpected:new St("css-mediaqueryexpected",xt("expected.mediaquery","media query expected")),IdentifierOrWildcardExpected:new St("css-idorwildcardexpected",xt("expected.idorwildcard","identifier or wildcard expected")),WildcardExpected:new St("css-wildcardexpected",xt("expected.wildcard","wildcard expected")),IdentifierOrVariableExpected:new St("css-idorvarexpected",xt("expected.idorvar","identifier or variable expected"))},Ct={E:"Edge",FF:"Firefox",S:"Safari",C:"Chrome",IE:"IE",O:"Opera"};function Ft(e){switch(e){case"experimental":return"\u26a0\ufe0f Property is experimental. Be cautious when using it.\ufe0f\n\n";case"nonstandard":return"\ud83d\udea8\ufe0f Property is nonstandard. Avoid using it.\n\n";case"obsolete":return"\ud83d\udea8\ufe0f\ufe0f\ufe0f Property is obsolete. Avoid using it.\n\n";default:return""}}function Et(e,t,n){var r;if(""!==(r=t?{kind:"markdown",value:Tt(e,n)}:{kind:"plaintext",value:Dt(e,n)}).value)return r}function zt(e){return(e=e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")).replace(/</g,"<").replace(/>/g,">")}function Dt(e,t){if(!e.description||""===e.description)return"";if("string"!==typeof e.description)return e.description.value;var n="";if(!1!==(null===t||void 0===t?void 0:t.documentation)){e.status&&(n+=Ft(e.status)),n+=e.description;var r=Rt(e.browsers);r&&(n+="\n("+r+")"),"syntax"in e&&(n+="\n\nSyntax: "+e.syntax)}return e.references&&e.references.length>0&&!1!==(null===t||void 0===t?void 0:t.references)&&(n.length>0&&(n+="\n\n"),n+=e.references.map((function(e){return e.name+": "+e.url})).join(" | ")),n}function Tt(e,t){if(!e.description||""===e.description)return"";var n="";if(!1!==(null===t||void 0===t?void 0:t.documentation)){e.status&&(n+=Ft(e.status)),n+=zt("string"===typeof e.description?e.description:e.description.value);var r=Rt(e.browsers);r&&(n+="\n\n("+zt(r)+")"),"syntax"in e&&e.syntax&&(n+="\n\nSyntax: "+zt(e.syntax))}return e.references&&e.references.length>0&&!1!==(null===t||void 0===t?void 0:t.references)&&(n.length>0&&(n+="\n\n"),n+=e.references.map((function(e){return"["+e.name+"]("+e.url+")"})).join(" | ")),n}function Rt(e){return void 0===e&&(e=[]),0===e.length?null:e.map((function(e){var t="",n=e.match(/([A-Z]+)(\d+)?/),r=n[1],i=n[2];return r in Ct&&(t+=Ct[r]),i&&(t+=" "+i),t})).join(", ")}var It=wt(),Mt=[{func:"rgb($red, $green, $blue)",desc:It("css.builtin.rgb","Creates a Color from red, green, and blue values.")},{func:"rgba($red, $green, $blue, $alpha)",desc:It("css.builtin.rgba","Creates a Color from red, green, blue, and alpha values.")},{func:"hsl($hue, $saturation, $lightness)",desc:It("css.builtin.hsl","Creates a Color from hue, saturation, and lightness values.")},{func:"hsla($hue, $saturation, $lightness, $alpha)",desc:It("css.builtin.hsla","Creates a Color from hue, saturation, lightness, and alpha values.")}],Pt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rebeccapurple:"#663399",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},_t={currentColor:"The value of the 'color' property. The computed value of the 'currentColor' keyword is the computed value of the 'color' property. If the 'currentColor' keyword is set on the 'color' property itself, it is treated as 'color:inherit' at parse time.",transparent:"Fully transparent. This keyword can be considered a shorthand for rgba(0,0,0,0) which is its computed value."};function Nt(e,t){var n=e.getText().match(/^([-+]?[0-9]*\.?[0-9]+)(%?)$/);if(n){n[2]&&(t=100);var r=parseFloat(n[1])/t;if(r>=0&&r<=1)return r}throw new Error}function At(e){var t=e.getName();return!!t&&/^(rgb|rgba|hsl|hsla)$/gi.test(t)}var Ot=48,Wt=57,Lt=65,jt=97,Ut=102;function Vt(e){return e<Ot?0:e<=Wt?e-Ot:(e<jt&&(e+=jt-Lt),e>=jt&&e<=Ut?e-jt+10:0)}function Bt(e){if("#"!==e[0])return null;switch(e.length){case 4:return{red:17*Vt(e.charCodeAt(1))/255,green:17*Vt(e.charCodeAt(2))/255,blue:17*Vt(e.charCodeAt(3))/255,alpha:1};case 5:return{red:17*Vt(e.charCodeAt(1))/255,green:17*Vt(e.charCodeAt(2))/255,blue:17*Vt(e.charCodeAt(3))/255,alpha:17*Vt(e.charCodeAt(4))/255};case 7:return{red:(16*Vt(e.charCodeAt(1))+Vt(e.charCodeAt(2)))/255,green:(16*Vt(e.charCodeAt(3))+Vt(e.charCodeAt(4)))/255,blue:(16*Vt(e.charCodeAt(5))+Vt(e.charCodeAt(6)))/255,alpha:1};case 9:return{red:(16*Vt(e.charCodeAt(1))+Vt(e.charCodeAt(2)))/255,green:(16*Vt(e.charCodeAt(3))+Vt(e.charCodeAt(4)))/255,blue:(16*Vt(e.charCodeAt(5))+Vt(e.charCodeAt(6)))/255,alpha:(16*Vt(e.charCodeAt(7))+Vt(e.charCodeAt(8)))/255}}return null}function $t(e){if(e.type===ee.HexColorValue)return Bt(e.getText());if(e.type===ee.Function){var t=e,n=t.getName(),r=t.getArguments().getChildren();if(!n||r.length<3||r.length>4)return null;try{var i=4===r.length?Nt(r[3],1):1;if("rgb"===n||"rgba"===n)return{red:Nt(r[0],255),green:Nt(r[1],255),blue:Nt(r[2],255),alpha:i};if("hsl"===n||"hsla"===n){var o=function(e){var t=e.getText();if(t.match(/^([-+]?[0-9]*\.?[0-9]+)(deg)?$/))return parseFloat(t)%360;throw new Error}(r[0]);return function(e,t,n,r){if(void 0===r&&(r=1),0===t)return{red:n,green:n,blue:n,alpha:r};var i=function(e,t,n){for(;n<0;)n+=6;for(;n>=6;)n-=6;return n<1?(t-e)*n+e:n<3?t:n<4?(t-e)*(4-n)+e:e},o=n<=.5?n*(t+1):n+t-n*t,s=2*n-o;return{red:i(s,o,2+(e/=60)),green:i(s,o,e),blue:i(s,o,e-2),alpha:r}}(o,Nt(r[1],100),Nt(r[2],100),i)}}catch(d){return null}}else if(e.type===ee.Identifier){if(e.parent&&e.parent.type!==ee.Term)return null;var s=e.parent;if(s&&s.parent&&s.parent.type===ee.BinaryExpression){var a=s.parent;if(a.parent&&a.parent.type===ee.ListEntry&&a.parent.key===a)return null}var l=e.getText().toLowerCase();if("none"===l)return null;var c=Pt[l];if(c)return Bt(c)}return null}var qt={bottom:"Computes to \u2018100%\u2019 for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset.",center:"Computes to \u201850%\u2019 (\u2018left 50%\u2019) for the horizontal position if the horizontal position is not otherwise specified, or \u201850%\u2019 (\u2018top 50%\u2019) for the vertical position if it is.",left:"Computes to \u20180%\u2019 for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset.",right:"Computes to \u2018100%\u2019 for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset.",top:"Computes to \u20180%\u2019 for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset."},Kt={"no-repeat":"Placed once and not repeated in this direction.",repeat:"Repeated in this direction as often as needed to cover the background painting area.","repeat-x":"Computes to \u2018repeat no-repeat\u2019.","repeat-y":"Computes to \u2018no-repeat repeat\u2019.",round:"Repeated as often as will fit within the background positioning area. If it doesn\u2019t fit a whole number of times, it is rescaled so that it does.",space:"Repeated as often as will fit within the background positioning area without being clipped and then the images are spaced out to fill the area."},Gt={dashed:"A series of square-ended dashes.",dotted:"A series of round dots.",double:"Two parallel solid lines with some space between them.",groove:"Looks as if it were carved in the canvas.",hidden:"Same as \u2018none\u2019, but has different behavior in the border conflict resolution rules for border-collapsed tables.",inset:"Looks as if the content on the inside of the border is sunken into the canvas.",none:"No border. Color and width are ignored.",outset:"Looks as if the content on the inside of the border is coming out of the canvas.",ridge:"Looks as if it were coming out of the canvas.",solid:"A single line segment."},Jt=["medium","thick","thin"],Ht={"border-box":"The background is painted within (clipped to) the border box.","content-box":"The background is painted within (clipped to) the content box.","padding-box":"The background is painted within (clipped to) the padding box."},Xt={"margin-box":"Uses the margin box as reference box.","fill-box":"Uses the object bounding box as reference box.","stroke-box":"Uses the stroke bounding box as reference box.","view-box":"Uses the nearest SVG viewport as reference box."},Yt={initial:"Represents the value specified as the property\u2019s initial value.",inherit:"Represents the computed value of the property on the element\u2019s parent.",unset:"Acts as either `inherit` or `initial`, depending on whether the property is inherited or not."},Zt={"url()":"Reference an image file by URL","image()":"Provide image fallbacks and annotations.","-webkit-image-set()":"Provide multiple resolutions. Remember to use unprefixed image-set() in addition.","image-set()":"Provide multiple resolutions of an image and const the UA decide which is most appropriate in a given situation.","-moz-element()":"Use an element in the document as an image. Remember to use unprefixed element() in addition.","element()":"Use an element in the document as an image.","cross-fade()":"Indicates the two images to be combined and how far along in the transition the combination is.","-webkit-gradient()":"Deprecated. Use modern linear-gradient() or radial-gradient() instead.","-webkit-linear-gradient()":"Linear gradient. Remember to use unprefixed version in addition.","-moz-linear-gradient()":"Linear gradient. Remember to use unprefixed version in addition.","-o-linear-gradient()":"Linear gradient. Remember to use unprefixed version in addition.","linear-gradient()":"A linear gradient is created by specifying a straight gradient line, and then several colors placed along that line.","-webkit-repeating-linear-gradient()":"Repeating Linear gradient. Remember to use unprefixed version in addition.","-moz-repeating-linear-gradient()":"Repeating Linear gradient. Remember to use unprefixed version in addition.","-o-repeating-linear-gradient()":"Repeating Linear gradient. Remember to use unprefixed version in addition.","repeating-linear-gradient()":"Same as linear-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop\u2019s position and the first specified color-stop\u2019s position.","-webkit-radial-gradient()":"Radial gradient. Remember to use unprefixed version in addition.","-moz-radial-gradient()":"Radial gradient. Remember to use unprefixed version in addition.","radial-gradient()":"Colors emerge from a single point and smoothly spread outward in a circular or elliptical shape.","-webkit-repeating-radial-gradient()":"Repeating radial gradient. Remember to use unprefixed version in addition.","-moz-repeating-radial-gradient()":"Repeating radial gradient. Remember to use unprefixed version in addition.","repeating-radial-gradient()":"Same as radial-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop\u2019s position and the first specified color-stop\u2019s position."},Qt={ease:"Equivalent to cubic-bezier(0.25, 0.1, 0.25, 1.0).","ease-in":"Equivalent to cubic-bezier(0.42, 0, 1.0, 1.0).","ease-in-out":"Equivalent to cubic-bezier(0.42, 0, 0.58, 1.0).","ease-out":"Equivalent to cubic-bezier(0, 0, 0.58, 1.0).",linear:"Equivalent to cubic-bezier(0.0, 0.0, 1.0, 1.0).","step-end":"Equivalent to steps(1, end).","step-start":"Equivalent to steps(1, start).","steps()":"The first parameter specifies the number of intervals in the function. The second parameter, which is optional, is either the value \u201cstart\u201d or \u201cend\u201d.","cubic-bezier()":"Specifies a cubic-bezier curve. The four values specify points P1 and P2 of the curve as (x1, y1, x2, y2).","cubic-bezier(0.6, -0.28, 0.735, 0.045)":"Ease-in Back. Overshoots.","cubic-bezier(0.68, -0.55, 0.265, 1.55)":"Ease-in-out Back. Overshoots.","cubic-bezier(0.175, 0.885, 0.32, 1.275)":"Ease-out Back. Overshoots.","cubic-bezier(0.6, 0.04, 0.98, 0.335)":"Ease-in Circular. Based on half circle.","cubic-bezier(0.785, 0.135, 0.15, 0.86)":"Ease-in-out Circular. Based on half circle.","cubic-bezier(0.075, 0.82, 0.165, 1)":"Ease-out Circular. Based on half circle.","cubic-bezier(0.55, 0.055, 0.675, 0.19)":"Ease-in Cubic. Based on power of three.","cubic-bezier(0.645, 0.045, 0.355, 1)":"Ease-in-out Cubic. Based on power of three.","cubic-bezier(0.215, 0.610, 0.355, 1)":"Ease-out Cubic. Based on power of three.","cubic-bezier(0.95, 0.05, 0.795, 0.035)":"Ease-in Exponential. Based on two to the power ten.","cubic-bezier(1, 0, 0, 1)":"Ease-in-out Exponential. Based on two to the power ten.","cubic-bezier(0.19, 1, 0.22, 1)":"Ease-out Exponential. Based on two to the power ten.","cubic-bezier(0.47, 0, 0.745, 0.715)":"Ease-in Sine.","cubic-bezier(0.445, 0.05, 0.55, 0.95)":"Ease-in-out Sine.","cubic-bezier(0.39, 0.575, 0.565, 1)":"Ease-out Sine.","cubic-bezier(0.55, 0.085, 0.68, 0.53)":"Ease-in Quadratic. Based on power of two.","cubic-bezier(0.455, 0.03, 0.515, 0.955)":"Ease-in-out Quadratic. Based on power of two.","cubic-bezier(0.25, 0.46, 0.45, 0.94)":"Ease-out Quadratic. Based on power of two.","cubic-bezier(0.895, 0.03, 0.685, 0.22)":"Ease-in Quartic. Based on power of four.","cubic-bezier(0.77, 0, 0.175, 1)":"Ease-in-out Quartic. Based on power of four.","cubic-bezier(0.165, 0.84, 0.44, 1)":"Ease-out Quartic. Based on power of four.","cubic-bezier(0.755, 0.05, 0.855, 0.06)":"Ease-in Quintic. Based on power of five.","cubic-bezier(0.86, 0, 0.07, 1)":"Ease-in-out Quintic. Based on power of five.","cubic-bezier(0.23, 1, 0.320, 1)":"Ease-out Quintic. Based on power of five."},en={"circle()":"Defines a circle.","ellipse()":"Defines an ellipse.","inset()":"Defines an inset rectangle.","polygon()":"Defines a polygon."},tn={length:["em","rem","ex","px","cm","mm","in","pt","pc","ch","vw","vh","vmin","vmax"],angle:["deg","rad","grad","turn"],time:["ms","s"],frequency:["Hz","kHz"],resolution:["dpi","dpcm","dppx"],percentage:["%","fr"]},nn=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","const","video","wbr"],rn=["circle","clipPath","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","hatch","hatchpath","image","line","linearGradient","marker","mask","mesh","meshpatch","meshrow","metadata","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","solidcolor","stop","svg","switch","symbol","text","textPath","tspan","use","view"],on=["@bottom-center","@bottom-left","@bottom-left-corner","@bottom-right","@bottom-right-corner","@left-bottom","@left-middle","@left-top","@right-bottom","@right-middle","@right-top","@top-center","@top-left","@top-left-corner","@top-right","@top-right-corner"];function sn(e){return Object.keys(e).map((function(t){return e[t]}))}function an(e){return"undefined"!==typeof e}var ln=function(){function e(e){void 0===e&&(e=new X),this.keyframeRegex=/^@(\-(webkit|ms|moz|o)\-)?keyframes$/i,this.scanner=e,this.token={type:r.EOF,offset:-1,len:0,text:""},this.prevToken=void 0}return e.prototype.peekIdent=function(e){return r.Ident===this.token.type&&e.length===this.token.text.length&&e===this.token.text.toLowerCase()},e.prototype.peekKeyword=function(e){return r.AtKeyword===this.token.type&&e.length===this.token.text.length&&e===this.token.text.toLowerCase()},e.prototype.peekDelim=function(e){return r.Delim===this.token.type&&e===this.token.text},e.prototype.peek=function(e){return e===this.token.type},e.prototype.peekOne=function(e){return-1!==e.indexOf(this.token.type)},e.prototype.peekRegExp=function(e,t){return e===this.token.type&&t.test(this.token.text)},e.prototype.hasWhitespace=function(){return!!this.prevToken&&this.prevToken.offset+this.prevToken.len!==this.token.offset},e.prototype.consumeToken=function(){this.prevToken=this.token,this.token=this.scanner.scan()},e.prototype.mark=function(){return{prev:this.prevToken,curr:this.token,pos:this.scanner.pos()}},e.prototype.restoreAtMark=function(e){this.prevToken=e.prev,this.token=e.curr,this.scanner.goBackTo(e.pos)},e.prototype.try=function(e){var t=this.mark(),n=e();return n||(this.restoreAtMark(t),null)},e.prototype.acceptOneKeyword=function(e){if(r.AtKeyword===this.token.type)for(var t=0,n=e;t<n.length;t++){var i=n[t];if(i.length===this.token.text.length&&i===this.token.text.toLowerCase())return this.consumeToken(),!0}return!1},e.prototype.accept=function(e){return e===this.token.type&&(this.consumeToken(),!0)},e.prototype.acceptIdent=function(e){return!!this.peekIdent(e)&&(this.consumeToken(),!0)},e.prototype.acceptKeyword=function(e){return!!this.peekKeyword(e)&&(this.consumeToken(),!0)},e.prototype.acceptDelim=function(e){return!!this.peekDelim(e)&&(this.consumeToken(),!0)},e.prototype.acceptRegexp=function(e){return!!e.test(this.token.text)&&(this.consumeToken(),!0)},e.prototype._parseRegexp=function(e){var t=this.createNode(ee.Identifier);do{}while(this.acceptRegexp(e));return this.finish(t)},e.prototype.acceptUnquotedString=function(){var e=this.scanner.pos();this.scanner.goBackTo(this.token.offset);var t=this.scanner.scanUnquotedString();return t?(this.token=t,this.consumeToken(),!0):(this.scanner.goBackTo(e),!1)},e.prototype.resync=function(e,t){for(;;){if(e&&-1!==e.indexOf(this.token.type))return this.consumeToken(),!0;if(t&&-1!==t.indexOf(this.token.type))return!0;if(this.token.type===r.EOF)return!1;this.token=this.scanner.scan()}},e.prototype.createNode=function(e){return new se(this.token.offset,this.token.len,e)},e.prototype.create=function(e){return new e(this.token.offset,this.token.len)},e.prototype.finish=function(e,t,n,r){if(!(e instanceof ae)&&(t&&this.markError(e,t,n,r),this.prevToken)){var i=this.prevToken.offset+this.prevToken.len;e.length=i>e.offset?i-e.offset:0}return e},e.prototype.markError=function(e,t,n,r){this.token!==this.lastErrorToken&&(e.addIssue(new bt(e,t,oe.Error,void 0,this.token.offset,this.token.len)),this.lastErrorToken=this.token),(n||r)&&this.resync(n,r)},e.prototype.parseStylesheet=function(e){var t=e.version,n=e.getText();return this.internalParse(n,this._parseStylesheet,(function(r,i){if(e.version!==t)throw new Error("Underlying model has changed, AST is no longer valid");return n.substr(r,i)}))},e.prototype.internalParse=function(e,t,n){this.scanner.setSource(e),this.token=this.scanner.scan();var r=t.bind(this)();return r&&(r.textProvider=n||function(t,n){return e.substr(t,n)}),r},e.prototype._parseStylesheet=function(){for(var e=this.create(ce);e.addChild(this._parseStylesheetStart()););var t=!1;do{var n=!1;do{n=!1;var i=this._parseStylesheetStatement();for(i&&(e.addChild(i),n=!0,t=!1,this.peek(r.EOF)||!this._needsSemicolonAfter(i)||this.accept(r.SemiColon)||this.markError(e,kt.SemiColonExpected));this.accept(r.SemiColon)||this.accept(r.CDO)||this.accept(r.CDC);)n=!0,t=!1}while(n);if(this.peek(r.EOF))break;t||(this.peek(r.AtKeyword)?this.markError(e,kt.UnknownAtRule):this.markError(e,kt.RuleOrSelectorExpected),t=!0),this.consumeToken()}while(!this.peek(r.EOF));return this.finish(e)},e.prototype._parseStylesheetStart=function(){return this._parseCharset()},e.prototype._parseStylesheetStatement=function(e){return void 0===e&&(e=!1),this.peek(r.AtKeyword)?this._parseStylesheetAtStatement(e):this._parseRuleset(e)},e.prototype._parseStylesheetAtStatement=function(e){return void 0===e&&(e=!1),this._parseImport()||this._parseMedia(e)||this._parsePage()||this._parseFontFace()||this._parseKeyframe()||this._parseSupports(e)||this._parseViewPort()||this._parseNamespace()||this._parseDocument()||this._parseUnknownAtRule()},e.prototype._tryParseRuleset=function(e){var t=this.mark();if(this._parseSelector(e)){for(;this.accept(r.Comma)&&this._parseSelector(e););if(this.accept(r.CurlyL))return this.restoreAtMark(t),this._parseRuleset(e)}return this.restoreAtMark(t),null},e.prototype._parseRuleset=function(e){void 0===e&&(e=!1);var t=this.create(he),n=t.getSelectors();if(!n.addChild(this._parseSelector(e)))return null;for(;this.accept(r.Comma);)if(!n.addChild(this._parseSelector(e)))return this.finish(t,kt.SelectorExpected);return this._parseBody(t,this._parseRuleSetDeclaration.bind(this))},e.prototype._parseRuleSetDeclarationAtStatement=function(){return this._parseAtApply()||this._parseUnknownAtRule()},e.prototype._parseRuleSetDeclaration=function(){return this.peek(r.AtKeyword)?this._parseRuleSetDeclarationAtStatement():this._parseDeclaration()},e.prototype._parseAtApply=function(){if(!this.peekKeyword("@apply"))return null;var e=this.create(fe);return this.consumeToken(),e.setIdentifier(this._parseIdent([te.Variable]))?this.finish(e):this.finish(e,kt.IdentifierExpected)},e.prototype._needsSemicolonAfter=function(e){switch(e.type){case ee.Keyframe:case ee.ViewPort:case ee.Media:case ee.Ruleset:case ee.Namespace:case ee.If:case ee.For:case ee.Each:case ee.While:case ee.MixinDeclaration:case ee.FunctionDeclaration:case ee.MixinContentDeclaration:return!1;case ee.ExtendsReference:case ee.MixinContentReference:case ee.ReturnStatement:case ee.MediaQuery:case ee.Debug:case ee.Import:case ee.AtApplyRule:case ee.CustomPropertyDeclaration:return!0;case ee.VariableDeclaration:return e.needsSemicolon;case ee.MixinReference:return!e.getContent();case ee.Declaration:return!e.getNestedProperties()}return!1},e.prototype._parseDeclarations=function(e){var t=this.create(de);if(!this.accept(r.CurlyL))return null;for(var n=e();t.addChild(n)&&!this.peek(r.CurlyR);){if(this._needsSemicolonAfter(n)&&!this.accept(r.SemiColon))return this.finish(t,kt.SemiColonExpected,[r.SemiColon,r.CurlyR]);for(n&&this.prevToken&&this.prevToken.type===r.SemiColon&&(n.semicolonPosition=this.prevToken.offset);this.accept(r.SemiColon););n=e()}return this.accept(r.CurlyR)?this.finish(t):this.finish(t,kt.RightCurlyExpected,[r.CurlyR,r.SemiColon])},e.prototype._parseBody=function(e,t){return e.setDeclarations(this._parseDeclarations(t))?this.finish(e):this.finish(e,kt.LeftCurlyExpected,[r.CurlyR,r.SemiColon])},e.prototype._parseSelector=function(e){var t=this.create(me),n=!1;for(e&&(n=t.addChild(this._parseCombinator()));t.addChild(this._parseSimpleSelector());)n=!0,t.addChild(this._parseCombinator());return n?this.finish(t):null},e.prototype._parseDeclaration=function(e){var t=this._tryParseCustomPropertyDeclaration(e);if(t)return t;var n=this.create(ve);return n.setProperty(this._parseProperty())?this.accept(r.Colon)?(this.prevToken&&(n.colonPosition=this.prevToken.offset),n.setValue(this._parseExpr())?(n.addChild(this._parsePrio()),this.peek(r.SemiColon)&&(n.semicolonPosition=this.token.offset),this.finish(n)):this.finish(n,kt.PropertyValueExpected)):this.finish(n,kt.ColonExpected,[r.Colon],e||[r.SemiColon]):null},e.prototype._tryParseCustomPropertyDeclaration=function(e){if(!this.peekRegExp(r.Ident,/^--/))return null;var t=this.create(ye);if(!t.setProperty(this._parseProperty()))return null;if(!this.accept(r.Colon))return this.finish(t,kt.ColonExpected,[r.Colon]);this.prevToken&&(t.colonPosition=this.prevToken.offset);var n=this.mark();if(this.peek(r.CurlyL)){var i=this.create(be),o=this._parseDeclarations(this._parseRuleSetDeclaration.bind(this));if(i.setDeclarations(o)&&!o.isErroneous(!0)&&(i.addChild(this._parsePrio()),this.peek(r.SemiColon)))return this.finish(i),t.setPropertySet(i),t.semicolonPosition=this.token.offset,this.finish(t);this.restoreAtMark(n)}var s=this._parseExpr();return s&&!s.isErroneous(!0)&&(this._parsePrio(),this.peekOne(e||[r.SemiColon]))?(t.setValue(s),t.semicolonPosition=this.token.offset,this.finish(t)):(this.restoreAtMark(n),t.addChild(this._parseCustomPropertyValue(e)),t.addChild(this._parsePrio()),an(t.colonPosition)&&this.token.offset===t.colonPosition+1?this.finish(t,kt.PropertyValueExpected):this.finish(t))},e.prototype._parseCustomPropertyValue=function(e){var t=this;void 0===e&&(e=[r.CurlyR]);var n=this.create(se),i=function(){return 0===s&&0===a&&0===l},o=function(){return-1!==e.indexOf(t.token.type)},s=0,a=0,l=0;e:for(;;){switch(this.token.type){case r.SemiColon:case r.Exclamation:if(i())break e;break;case r.CurlyL:s++;break;case r.CurlyR:if(--s<0){if(o()&&0===a&&0===l)break e;return this.finish(n,kt.LeftCurlyExpected)}break;case r.ParenthesisL:a++;break;case r.ParenthesisR:if(--a<0){if(o()&&0===l&&0===s)break e;return this.finish(n,kt.LeftParenthesisExpected)}break;case r.BracketL:l++;break;case r.BracketR:if(--l<0)return this.finish(n,kt.LeftSquareBracketExpected);break;case r.BadString:break e;case r.EOF:var c=kt.RightCurlyExpected;return l>0?c=kt.RightSquareBracketExpected:a>0&&(c=kt.RightParenthesisExpected),this.finish(n,c)}this.consumeToken()}return this.finish(n)},e.prototype._tryToParseDeclaration=function(e){var t=this.mark();return this._parseProperty()&&this.accept(r.Colon)?(this.restoreAtMark(t),this._parseDeclaration(e)):(this.restoreAtMark(t),null)},e.prototype._parseProperty=function(){var e=this.create(we),t=this.mark();return(this.acceptDelim("*")||this.acceptDelim("_"))&&this.hasWhitespace()?(this.restoreAtMark(t),null):e.setIdentifier(this._parsePropertyIdentifier())?this.finish(e):null},e.prototype._parsePropertyIdentifier=function(){return this._parseIdent()},e.prototype._parseCharset=function(){if(!this.peek(r.Charset))return null;var e=this.create(se);return this.consumeToken(),this.accept(r.String)?this.accept(r.SemiColon)?this.finish(e):this.finish(e,kt.SemiColonExpected):this.finish(e,kt.IdentifierExpected)},e.prototype._parseImport=function(){if(!this.peekKeyword("@import"))return null;var e=this.create(Ne);return this.consumeToken(),e.addChild(this._parseURILiteral())||e.addChild(this._parseStringLiteral())?(this.peek(r.SemiColon)||this.peek(r.EOF)||e.setMedialist(this._parseMediaQueryList()),this.finish(e)):this.finish(e,kt.URIOrStringExpected)},e.prototype._parseNamespace=function(){if(!this.peekKeyword("@namespace"))return null;var e=this.create(je);return this.consumeToken(),e.addChild(this._parseURILiteral())||(e.addChild(this._parseIdent()),e.addChild(this._parseURILiteral())||e.addChild(this._parseStringLiteral()))?this.accept(r.SemiColon)?this.finish(e):this.finish(e,kt.SemiColonExpected):this.finish(e,kt.URIExpected,[r.SemiColon])},e.prototype._parseFontFace=function(){if(!this.peekKeyword("@font-face"))return null;var e=this.create(Ie);return this.consumeToken(),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},e.prototype._parseViewPort=function(){if(!this.peekKeyword("@-ms-viewport")&&!this.peekKeyword("@-o-viewport")&&!this.peekKeyword("@viewport"))return null;var e=this.create(Re);return this.consumeToken(),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},e.prototype._parseKeyframe=function(){if(!this.peekRegExp(r.AtKeyword,this.keyframeRegex))return null;var e=this.create(Pe),t=this.create(se);return this.consumeToken(),e.setKeyword(this.finish(t)),t.matches("@-ms-keyframes")&&this.markError(t,kt.UnknownKeyword),e.setIdentifier(this._parseKeyframeIdent())?this._parseBody(e,this._parseKeyframeSelector.bind(this)):this.finish(e,kt.IdentifierExpected,[r.CurlyR])},e.prototype._parseKeyframeIdent=function(){return this._parseIdent([te.Keyframe])},e.prototype._parseKeyframeSelector=function(){var e=this.create(_e);if(!e.addChild(this._parseIdent())&&!this.accept(r.Percentage))return null;for(;this.accept(r.Comma);)if(!e.addChild(this._parseIdent())&&!this.accept(r.Percentage))return this.finish(e,kt.PercentageExpected);return this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},e.prototype._tryParseKeyframeSelector=function(){var e=this.create(_e),t=this.mark();if(!e.addChild(this._parseIdent())&&!this.accept(r.Percentage))return null;for(;this.accept(r.Comma);)if(!e.addChild(this._parseIdent())&&!this.accept(r.Percentage))return this.restoreAtMark(t),null;return this.peek(r.CurlyL)?this._parseBody(e,this._parseRuleSetDeclaration.bind(this)):(this.restoreAtMark(t),null)},e.prototype._parseSupports=function(e){if(void 0===e&&(e=!1),!this.peekKeyword("@supports"))return null;var t=this.create(Ve);return this.consumeToken(),t.addChild(this._parseSupportsCondition()),this._parseBody(t,this._parseSupportsDeclaration.bind(this,e))},e.prototype._parseSupportsDeclaration=function(e){return void 0===e&&(e=!1),e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)},e.prototype._parseSupportsCondition=function(){var e=this.create(Ke);if(this.acceptIdent("not"))e.addChild(this._parseSupportsConditionInParens());else if(e.addChild(this._parseSupportsConditionInParens()),this.peekRegExp(r.Ident,/^(and|or)$/i))for(var t=this.token.text.toLowerCase();this.acceptIdent(t);)e.addChild(this._parseSupportsConditionInParens());return this.finish(e)},e.prototype._parseSupportsConditionInParens=function(){var e=this.create(Ke);if(this.accept(r.ParenthesisL))return this.prevToken&&(e.lParent=this.prevToken.offset),e.addChild(this._tryToParseDeclaration([r.ParenthesisR]))||this._parseSupportsCondition()?this.accept(r.ParenthesisR)?(this.prevToken&&(e.rParent=this.prevToken.offset),this.finish(e)):this.finish(e,kt.RightParenthesisExpected,[r.ParenthesisR],[]):this.finish(e,kt.ConditionExpected);if(this.peek(r.Ident)){var t=this.mark();if(this.consumeToken(),!this.hasWhitespace()&&this.accept(r.ParenthesisL)){for(var n=1;this.token.type!==r.EOF&&0!==n;)this.token.type===r.ParenthesisL?n++:this.token.type===r.ParenthesisR&&n--,this.consumeToken();return this.finish(e)}this.restoreAtMark(t)}return this.finish(e,kt.LeftParenthesisExpected,[],[r.ParenthesisL])},e.prototype._parseMediaDeclaration=function(e){return void 0===e&&(e=!1),e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)},e.prototype._parseMedia=function(e){if(void 0===e&&(e=!1),!this.peekKeyword("@media"))return null;var t=this.create(Ue);return this.consumeToken(),t.addChild(this._parseMediaQueryList())?this._parseBody(t,this._parseMediaDeclaration.bind(this,e)):this.finish(t,kt.MediaQueryExpected)},e.prototype._parseMediaQueryList=function(){var e=this.create($e);if(!e.addChild(this._parseMediaQuery([r.CurlyL])))return this.finish(e,kt.MediaQueryExpected);for(;this.accept(r.Comma);)if(!e.addChild(this._parseMediaQuery([r.CurlyL])))return this.finish(e,kt.MediaQueryExpected);return this.finish(e)},e.prototype._parseMediaQuery=function(e){var t=this.create(qe),n=!0,i=!1;if(!this.peek(r.ParenthesisL)){if(this.acceptIdent("only")||this.acceptIdent("not"),!t.addChild(this._parseIdent()))return null;i=!0,n=this.acceptIdent("and")}for(;n;)if(t.addChild(this._parseMediaContentStart()))n=this.acceptIdent("and");else{if(!this.accept(r.ParenthesisL))return i?this.finish(t,kt.LeftParenthesisExpected,[],e):null;if(!t.addChild(this._parseMediaFeatureName()))return this.finish(t,kt.IdentifierExpected,[],e);if(this.accept(r.Colon)&&!t.addChild(this._parseExpr()))return this.finish(t,kt.TermExpected,[],e);if(!this.accept(r.ParenthesisR))return this.finish(t,kt.RightParenthesisExpected,[],e);n=this.acceptIdent("and")}return this.finish(t)},e.prototype._parseMediaContentStart=function(){return null},e.prototype._parseMediaFeatureName=function(){return this._parseIdent()},e.prototype._parseMedium=function(){var e=this.create(se);return e.addChild(this._parseIdent())?this.finish(e):null},e.prototype._parsePageDeclaration=function(){return this._parsePageMarginBox()||this._parseRuleSetDeclaration()},e.prototype._parsePage=function(){if(!this.peekKeyword("@page"))return null;var e=this.create(Ge);if(this.consumeToken(),e.addChild(this._parsePageSelector()))for(;this.accept(r.Comma);)if(!e.addChild(this._parsePageSelector()))return this.finish(e,kt.IdentifierExpected);return this._parseBody(e,this._parsePageDeclaration.bind(this))},e.prototype._parsePageMarginBox=function(){if(!this.peek(r.AtKeyword))return null;var e=this.create(Je);return this.acceptOneKeyword(on)||this.markError(e,kt.UnknownAtRule,[],[r.CurlyL]),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},e.prototype._parsePageSelector=function(){if(!this.peek(r.Ident)&&!this.peek(r.Colon))return null;var e=this.create(se);return e.addChild(this._parseIdent()),this.accept(r.Colon)&&!e.addChild(this._parseIdent())?this.finish(e,kt.IdentifierExpected):this.finish(e)},e.prototype._parseDocument=function(){if(!this.peekKeyword("@-moz-document"))return null;var e=this.create(Be);return this.consumeToken(),this.resync([],[r.CurlyL]),this._parseBody(e,this._parseStylesheetStatement.bind(this))},e.prototype._parseUnknownAtRule=function(){if(!this.peek(r.AtKeyword))return null;var e=this.create(ht);e.addChild(this._parseUnknownAtRuleName());var t=0,n=0,i=0,o=0;e:for(;;){switch(this.token.type){case r.SemiColon:if(0===n&&0===i&&0===o)break e;break;case r.EOF:return n>0?this.finish(e,kt.RightCurlyExpected):o>0?this.finish(e,kt.RightSquareBracketExpected):i>0?this.finish(e,kt.RightParenthesisExpected):this.finish(e);case r.CurlyL:t++,n++;break;case r.CurlyR:if(n--,t>0&&0===n){if(this.consumeToken(),o>0)return this.finish(e,kt.RightSquareBracketExpected);if(i>0)return this.finish(e,kt.RightParenthesisExpected);break e}if(n<0){if(0===i&&0===o)break e;return this.finish(e,kt.LeftCurlyExpected)}break;case r.ParenthesisL:i++;break;case r.ParenthesisR:if(--i<0)return this.finish(e,kt.LeftParenthesisExpected);break;case r.BracketL:o++;break;case r.BracketR:if(--o<0)return this.finish(e,kt.LeftSquareBracketExpected)}this.consumeToken()}return e},e.prototype._parseUnknownAtRuleName=function(){var e=this.create(se);return this.accept(r.AtKeyword)?this.finish(e):e},e.prototype._parseOperator=function(){if(this.peekDelim("/")||this.peekDelim("*")||this.peekDelim("+")||this.peekDelim("-")||this.peek(r.Dashmatch)||this.peek(r.Includes)||this.peek(r.SubstringOperator)||this.peek(r.PrefixOperator)||this.peek(r.SuffixOperator)||this.peekDelim("=")){var e=this.createNode(ee.Operator);return this.consumeToken(),this.finish(e)}return null},e.prototype._parseUnaryOperator=function(){if(!this.peekDelim("+")&&!this.peekDelim("-"))return null;var e=this.create(se);return this.consumeToken(),this.finish(e)},e.prototype._parseCombinator=function(){if(this.peekDelim(">")){var e=this.create(se);this.consumeToken();var t=this.mark();if(!this.hasWhitespace()&&this.acceptDelim(">")){if(!this.hasWhitespace()&&this.acceptDelim(">"))return e.type=ee.SelectorCombinatorShadowPiercingDescendant,this.finish(e);this.restoreAtMark(t)}return e.type=ee.SelectorCombinatorParent,this.finish(e)}if(this.peekDelim("+")){e=this.create(se);return this.consumeToken(),e.type=ee.SelectorCombinatorSibling,this.finish(e)}if(this.peekDelim("~")){e=this.create(se);return this.consumeToken(),e.type=ee.SelectorCombinatorAllSiblings,this.finish(e)}if(this.peekDelim("/")){e=this.create(se);this.consumeToken();t=this.mark();if(!this.hasWhitespace()&&this.acceptIdent("deep")&&!this.hasWhitespace()&&this.acceptDelim("/"))return e.type=ee.SelectorCombinatorShadowPiercingDescendant,this.finish(e);this.restoreAtMark(t)}return null},e.prototype._parseSimpleSelector=function(){var e=this.create(ue),t=0;for(e.addChild(this._parseElementName())&&t++;(0===t||!this.hasWhitespace())&&e.addChild(this._parseSimpleSelectorBody());)t++;return t>0?this.finish(e):null},e.prototype._parseSimpleSelectorBody=function(){return this._parsePseudo()||this._parseHash()||this._parseClass()||this._parseAttrib()},e.prototype._parseSelectorIdent=function(){return this._parseIdent()},e.prototype._parseHash=function(){if(!this.peek(r.Hash)&&!this.peekDelim("#"))return null;var e=this.createNode(ee.IdentifierSelector);if(this.acceptDelim("#")){if(this.hasWhitespace()||!e.addChild(this._parseSelectorIdent()))return this.finish(e,kt.IdentifierExpected)}else this.consumeToken();return this.finish(e)},e.prototype._parseClass=function(){if(!this.peekDelim("."))return null;var e=this.createNode(ee.ClassSelector);return this.consumeToken(),this.hasWhitespace()||!e.addChild(this._parseSelectorIdent())?this.finish(e,kt.IdentifierExpected):this.finish(e)},e.prototype._parseElementName=function(){var e=this.mark(),t=this.createNode(ee.ElementNameSelector);return t.addChild(this._parseNamespacePrefix()),t.addChild(this._parseSelectorIdent())||this.acceptDelim("*")?this.finish(t):(this.restoreAtMark(e),null)},e.prototype._parseNamespacePrefix=function(){var e=this.mark(),t=this.createNode(ee.NamespacePrefix);return!t.addChild(this._parseIdent())&&this.acceptDelim("*"),this.acceptDelim("|")?this.finish(t):(this.restoreAtMark(e),null)},e.prototype._parseAttrib=function(){if(!this.peek(r.BracketL))return null;var e=this.create(Ze);return this.consumeToken(),e.setNamespacePrefix(this._parseNamespacePrefix()),e.setIdentifier(this._parseIdent())?(e.setOperator(this._parseOperator())&&(e.setValue(this._parseBinaryExpr()),this.acceptIdent("i")),this.accept(r.BracketR)?this.finish(e):this.finish(e,kt.RightSquareBracketExpected)):this.finish(e,kt.IdentifierExpected)},e.prototype._parsePseudo=function(){var e=this,t=this._tryParsePseudoIdentifier();if(t){if(!this.hasWhitespace()&&this.accept(r.ParenthesisL)){if(t.addChild(this.try((function(){var t=e.create(se);if(!t.addChild(e._parseSelector(!1)))return null;for(;e.accept(r.Comma)&&t.addChild(e._parseSelector(!1)););return e.peek(r.ParenthesisR)?e.finish(t):null}))||this._parseBinaryExpr()),!this.accept(r.ParenthesisR))return this.finish(t,kt.RightParenthesisExpected)}return this.finish(t)}return null},e.prototype._tryParsePseudoIdentifier=function(){if(!this.peek(r.Colon))return null;var e=this.mark(),t=this.createNode(ee.PseudoSelector);return this.consumeToken(),this.hasWhitespace()?(this.restoreAtMark(e),null):(this.accept(r.Colon),this.hasWhitespace()||!t.addChild(this._parseIdent())?this.finish(t,kt.IdentifierExpected):this.finish(t))},e.prototype._tryParsePrio=function(){var e=this.mark(),t=this._parsePrio();return t||(this.restoreAtMark(e),null)},e.prototype._parsePrio=function(){if(!this.peek(r.Exclamation))return null;var e=this.createNode(ee.Prio);return this.accept(r.Exclamation)&&this.acceptIdent("important")?this.finish(e):null},e.prototype._parseExpr=function(e){void 0===e&&(e=!1);var t=this.create(He);if(!t.addChild(this._parseBinaryExpr()))return null;for(;;){if(this.peek(r.Comma)){if(e)return this.finish(t);this.consumeToken()}if(!t.addChild(this._parseBinaryExpr()))break}return this.finish(t)},e.prototype._parseNamedLine=function(){if(!this.peek(r.BracketL))return null;var e=this.createNode(ee.GridLine);for(this.consumeToken();e.addChild(this._parseIdent()););return this.accept(r.BracketR)?this.finish(e):this.finish(e,kt.RightSquareBracketExpected)},e.prototype._parseBinaryExpr=function(e,t){var n=this.create(Xe);if(!n.setLeft(e||this._parseTerm()))return null;if(!n.setOperator(t||this._parseOperator()))return this.finish(n);if(!n.setRight(this._parseTerm()))return this.finish(n,kt.TermExpected);n=this.finish(n);var r=this._parseOperator();return r&&(n=this._parseBinaryExpr(n,r)),this.finish(n)},e.prototype._parseTerm=function(){var e=this.create(Ye);return e.setOperator(this._parseUnaryOperator()),e.setExpression(this._parseTermExpression())?this.finish(e):null},e.prototype._parseTermExpression=function(){return this._parseURILiteral()||this._parseFunction()||this._parseIdent()||this._parseStringLiteral()||this._parseNumeric()||this._parseHexColor()||this._parseOperation()||this._parseNamedLine()},e.prototype._parseOperation=function(){if(!this.peek(r.ParenthesisL))return null;var e=this.create(se);return this.consumeToken(),e.addChild(this._parseExpr()),this.accept(r.ParenthesisR)?this.finish(e):this.finish(e,kt.RightParenthesisExpected)},e.prototype._parseNumeric=function(){if(this.peek(r.Num)||this.peek(r.Percentage)||this.peek(r.Resolution)||this.peek(r.Length)||this.peek(r.EMS)||this.peek(r.EXS)||this.peek(r.Angle)||this.peek(r.Time)||this.peek(r.Dimension)||this.peek(r.Freq)){var e=this.create(rt);return this.consumeToken(),this.finish(e)}return null},e.prototype._parseStringLiteral=function(){if(!this.peek(r.String)&&!this.peek(r.BadString))return null;var e=this.createNode(ee.StringLiteral);return this.consumeToken(),this.finish(e)},e.prototype._parseURILiteral=function(){if(!this.peekRegExp(r.Ident,/^url(-prefix)?$/i))return null;var e=this.mark(),t=this.createNode(ee.URILiteral);return this.accept(r.Ident),this.hasWhitespace()||!this.peek(r.ParenthesisL)?(this.restoreAtMark(e),null):(this.scanner.inURL=!0,this.consumeToken(),t.addChild(this._parseURLArgument()),this.scanner.inURL=!1,this.accept(r.ParenthesisR)?this.finish(t):this.finish(t,kt.RightParenthesisExpected))},e.prototype._parseURLArgument=function(){var e=this.create(se);return this.accept(r.String)||this.accept(r.BadString)||this.acceptUnquotedString()?this.finish(e):null},e.prototype._parseIdent=function(e){if(!this.peek(r.Ident))return null;var t=this.create(le);return e&&(t.referenceTypes=e),t.isCustomProperty=this.peekRegExp(r.Ident,/^--/),this.consumeToken(),this.finish(t)},e.prototype._parseFunction=function(){var e=this.mark(),t=this.create(xe);if(!t.setIdentifier(this._parseFunctionIdentifier()))return null;if(this.hasWhitespace()||!this.accept(r.ParenthesisL))return this.restoreAtMark(e),null;if(t.getArguments().addChild(this._parseFunctionArgument()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)t.getArguments().addChild(this._parseFunctionArgument())||this.markError(t,kt.ExpressionExpected);return this.accept(r.ParenthesisR)?this.finish(t):this.finish(t,kt.RightParenthesisExpected)},e.prototype._parseFunctionIdentifier=function(){if(!this.peek(r.Ident))return null;var e=this.create(le);if(e.referenceTypes=[te.Function],this.acceptIdent("progid")){if(this.accept(r.Colon))for(;this.accept(r.Ident)&&this.acceptDelim("."););return this.finish(e)}return this.consumeToken(),this.finish(e)},e.prototype._parseFunctionArgument=function(){var e=this.create(ke);return e.setValue(this._parseExpr(!0))?this.finish(e):null},e.prototype._parseHexColor=function(){if(this.peekRegExp(r.Hash,/^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$/g)){var e=this.create(Qe);return this.consumeToken(),this.finish(e)}return null},e}();function cn(e,t){return-1!==e.indexOf(t)}function dn(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=[],r=0,i=e;r<i.length;r++)for(var o=0,s=i[r];o<s.length;o++){var a=s[o];cn(n,a)||n.push(a)}return n}var pn,hn,mn,un,fn,gn,bn,vn,yn,wn,xn,Sn,kn,Cn,Fn,En,zn,Dn,Tn,Rn,In,Mn,Pn,_n,Nn,An,On=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Wn=function(){function e(e,t){this.offset=e,this.length=t,this.symbols=[],this.parent=null,this.children=[]}return e.prototype.addChild=function(e){this.children.push(e),e.setParent(this)},e.prototype.setParent=function(e){this.parent=e},e.prototype.findScope=function(e,t){return void 0===t&&(t=0),this.offset<=e&&this.offset+this.length>e+t||this.offset===e&&this.length===t?this.findInScope(e,t):null},e.prototype.findInScope=function(e,t){void 0===t&&(t=0);var n=e+t,r=function(e,t){var n=0,r=e.length;if(0===r)return 0;for(;n<r;){var i=Math.floor((n+r)/2);t(e[i])?r=i:n=i+1}return n}(this.children,(function(e){return e.offset>n}));if(0===r)return this;var i=this.children[r-1];return i.offset<=e&&i.offset+i.length>=e+t?i.findInScope(e,t):this},e.prototype.addSymbol=function(e){this.symbols.push(e)},e.prototype.getSymbol=function(e,t){for(var n=0;n<this.symbols.length;n++){var r=this.symbols[n];if(r.name===e&&r.type===t)return r}return null},e.prototype.getSymbols=function(){return this.symbols},e}(),Ln=function(e){function t(){return e.call(this,0,Number.MAX_VALUE)||this}return On(t,e),t}(Wn),jn=function(e,t,n,r){this.name=e,this.value=t,this.node=n,this.type=r},Un=function(){function e(e){this.scope=e}return e.prototype.addSymbol=function(e,t,n,r){if(-1!==e.offset){var i=this.scope.findScope(e.offset,e.length);i&&i.addSymbol(new jn(t,n,e,r))}},e.prototype.addScope=function(e){if(-1!==e.offset){var t=this.scope.findScope(e.offset,e.length);if(t&&(t.offset!==e.offset||t.length!==e.length)){var n=new Wn(e.offset,e.length);return t.addChild(n),n}return t}return null},e.prototype.addSymbolToChildScope=function(e,t,n,r,i){if(e&&-1!==e.offset){var o=this.addScope(e);o&&o.addSymbol(new jn(n,r,t,i))}},e.prototype.visitNode=function(e){switch(e.type){case ee.Keyframe:return this.addSymbol(e,e.getName(),void 0,te.Keyframe),!0;case ee.CustomPropertyDeclaration:return this.visitCustomPropertyDeclarationNode(e);case ee.VariableDeclaration:return this.visitVariableDeclarationNode(e);case ee.Ruleset:return this.visitRuleSet(e);case ee.MixinDeclaration:return this.addSymbol(e,e.getName(),void 0,te.Mixin),!0;case ee.FunctionDeclaration:return this.addSymbol(e,e.getName(),void 0,te.Function),!0;case ee.FunctionParameter:return this.visitFunctionParameterNode(e);case ee.Declarations:return this.addScope(e),!0;case ee.For:var t=e,n=t.getDeclarations();return n&&t.variable&&this.addSymbolToChildScope(n,t.variable,t.variable.getName(),void 0,te.Variable),!0;case ee.Each:var r=e,i=r.getDeclarations();if(i)for(var o=0,s=r.getVariables().getChildren();o<s.length;o++){var a=s[o];this.addSymbolToChildScope(i,a,a.getName(),void 0,te.Variable)}return!0}return!0},e.prototype.visitRuleSet=function(e){var t=this.scope.findScope(e.offset,e.length);if(t)for(var n=0,r=e.getSelectors().getChildren();n<r.length;n++){var i=r[n];i instanceof me&&1===i.getChildren().length&&t.addSymbol(new jn(i.getChild(0).getText(),void 0,i,te.Rule))}return!0},e.prototype.visitVariableDeclarationNode=function(e){var t=e.getValue()?e.getValue().getText():void 0;return this.addSymbol(e,e.getName(),t,te.Variable),!0},e.prototype.visitFunctionParameterNode=function(e){var t=e.getParent().getDeclarations();if(t){var n=e.getDefaultValue(),r=n?n.getText():void 0;this.addSymbolToChildScope(t,e,e.getName(),r,te.Variable)}return!0},e.prototype.visitCustomPropertyDeclarationNode=function(e){var t=e.getValue()?e.getValue().getText():"";return this.addCSSVariable(e.getProperty(),e.getProperty().getName(),t,te.Variable),!0},e.prototype.addCSSVariable=function(e,t,n,r){-1!==e.offset&&this.scope.addSymbol(new jn(t,n,e,r))},e}(),Vn=function(){function e(e){this.global=new Ln,e.acceptVisitor(new Un(this.global))}return e.prototype.findSymbolsAtOffset=function(e,t){for(var n=this.global.findScope(e,0),r=[],i={};n;){for(var o=n.getSymbols(),s=0;s<o.length;s++){var a=o[s];a.type!==t||i[a.name]||(r.push(a),i[a.name]=!0)}n=n.parent}return r},e.prototype.internalFindSymbol=function(e,t){var n=e;if(e.parent instanceof Se&&e.parent.getParent()instanceof pe&&(n=e.parent.getParent().getDeclarations()),e.parent instanceof ke&&e.parent.getParent()instanceof xe){var r=e.parent.getParent().getIdentifier();if(r){var i=this.internalFindSymbol(r,[te.Function]);i&&(n=i.node.getDeclarations())}}if(!n)return null;for(var o=e.getText(),s=this.global.findScope(n.offset,n.length);s;){for(var a=0;a<t.length;a++){var l=t[a],c=s.getSymbol(o,l);if(c)return c}s=s.parent}return null},e.prototype.evaluateReferenceTypes=function(e){if(e instanceof le){var t=e.referenceTypes;if(t)return t;if(e.isCustomProperty)return[te.Variable];var n=function(e){var t=e.findParent(ee.Declaration),n=t&&t.getValue();return n&&n.encloses(e)?t:null}(e);if(n){var r=n.getNonPrefixedPropertyName();if(("animation"===r||"animation-name"===r)&&n.getValue()&&n.getValue().offset===e.offset)return[te.Keyframe]}}else if(e instanceof st)return[te.Variable];return e.findAParent(ee.Selector,ee.ExtendsReference)?[te.Rule]:null},e.prototype.findSymbolFromNode=function(e){if(!e)return null;for(;e.type===ee.Interpolation;)e=e.getParent();var t=this.evaluateReferenceTypes(e);return t?this.internalFindSymbol(e,t):null},e.prototype.matchesSymbol=function(e,t){if(!e)return!1;for(;e.type===ee.Interpolation;)e=e.getParent();if(!e.matches(t.name))return!1;var n=this.evaluateReferenceTypes(e);return!(!n||-1===n.indexOf(t.type))&&this.internalFindSymbol(e,n)===t},e.prototype.findSymbol=function(e,t,n){for(var r=this.global.findScope(n);r;){var i=r.getSymbol(e,t);if(i)return i;r=r.parent}return null},e}();!function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647}(pn||(pn={})),function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647}(hn||(hn={})),function(e){e.create=function(e,t){return e===Number.MAX_VALUE&&(e=hn.MAX_VALUE),t===Number.MAX_VALUE&&(t=hn.MAX_VALUE),{line:e,character:t}},e.is=function(e){var t=e;return Sr.objectLiteral(t)&&Sr.uinteger(t.line)&&Sr.uinteger(t.character)}}(mn||(mn={})),function(e){e.create=function(e,t,n,r){if(Sr.uinteger(e)&&Sr.uinteger(t)&&Sr.uinteger(n)&&Sr.uinteger(r))return{start:mn.create(e,t),end:mn.create(n,r)};if(mn.is(e)&&mn.is(t))return{start:e,end:t};throw new Error("Range#create called with invalid arguments["+e+", "+t+", "+n+", "+r+"]")},e.is=function(e){var t=e;return Sr.objectLiteral(t)&&mn.is(t.start)&&mn.is(t.end)}}(un||(un={})),function(e){e.create=function(e,t){return{uri:e,range:t}},e.is=function(e){var t=e;return Sr.defined(t)&&un.is(t.range)&&(Sr.string(t.uri)||Sr.undefined(t.uri))}}(fn||(fn={})),function(e){e.create=function(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}},e.is=function(e){var t=e;return Sr.defined(t)&&un.is(t.targetRange)&&Sr.string(t.targetUri)&&(un.is(t.targetSelectionRange)||Sr.undefined(t.targetSelectionRange))&&(un.is(t.originSelectionRange)||Sr.undefined(t.originSelectionRange))}}(gn||(gn={})),function(e){e.create=function(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}},e.is=function(e){var t=e;return Sr.numberRange(t.red,0,1)&&Sr.numberRange(t.green,0,1)&&Sr.numberRange(t.blue,0,1)&&Sr.numberRange(t.alpha,0,1)}}(bn||(bn={})),function(e){e.create=function(e,t){return{range:e,color:t}},e.is=function(e){var t=e;return un.is(t.range)&&bn.is(t.color)}}(vn||(vn={})),function(e){e.create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},e.is=function(e){var t=e;return Sr.string(t.label)&&(Sr.undefined(t.textEdit)||Dn.is(t))&&(Sr.undefined(t.additionalTextEdits)||Sr.typedArray(t.additionalTextEdits,Dn.is))}}(yn||(yn={})),function(e){e.Comment="comment",e.Imports="imports",e.Region="region"}(wn||(wn={})),function(e){e.create=function(e,t,n,r,i){var o={startLine:e,endLine:t};return Sr.defined(n)&&(o.startCharacter=n),Sr.defined(r)&&(o.endCharacter=r),Sr.defined(i)&&(o.kind=i),o},e.is=function(e){var t=e;return Sr.uinteger(t.startLine)&&Sr.uinteger(t.startLine)&&(Sr.undefined(t.startCharacter)||Sr.uinteger(t.startCharacter))&&(Sr.undefined(t.endCharacter)||Sr.uinteger(t.endCharacter))&&(Sr.undefined(t.kind)||Sr.string(t.kind))}}(xn||(xn={})),function(e){e.create=function(e,t){return{location:e,message:t}},e.is=function(e){var t=e;return Sr.defined(t)&&fn.is(t.location)&&Sr.string(t.message)}}(Sn||(Sn={})),function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4}(kn||(kn={})),function(e){e.Unnecessary=1,e.Deprecated=2}(Cn||(Cn={})),function(e){e.is=function(e){var t=e;return void 0!==t&&null!==t&&Sr.string(t.href)}}(Fn||(Fn={})),function(e){e.create=function(e,t,n,r,i,o){var s={range:e,message:t};return Sr.defined(n)&&(s.severity=n),Sr.defined(r)&&(s.code=r),Sr.defined(i)&&(s.source=i),Sr.defined(o)&&(s.relatedInformation=o),s},e.is=function(e){var t,n=e;return Sr.defined(n)&&un.is(n.range)&&Sr.string(n.message)&&(Sr.number(n.severity)||Sr.undefined(n.severity))&&(Sr.integer(n.code)||Sr.string(n.code)||Sr.undefined(n.code))&&(Sr.undefined(n.codeDescription)||Sr.string(null===(t=n.codeDescription)||void 0===t?void 0:t.href))&&(Sr.string(n.source)||Sr.undefined(n.source))&&(Sr.undefined(n.relatedInformation)||Sr.typedArray(n.relatedInformation,Sn.is))}}(En||(En={})),function(e){e.create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={title:e,command:t};return Sr.defined(n)&&n.length>0&&(i.arguments=n),i},e.is=function(e){var t=e;return Sr.defined(t)&&Sr.string(t.title)&&Sr.string(t.command)}}(zn||(zn={})),function(e){e.replace=function(e,t){return{range:e,newText:t}},e.insert=function(e,t){return{range:{start:e,end:e},newText:t}},e.del=function(e){return{range:e,newText:""}},e.is=function(e){var t=e;return Sr.objectLiteral(t)&&Sr.string(t.newText)&&un.is(t.range)}}(Dn||(Dn={})),function(e){e.create=function(e,t,n){var r={label:e};return void 0!==t&&(r.needsConfirmation=t),void 0!==n&&(r.description=n),r},e.is=function(e){var t=e;return void 0!==t&&Sr.objectLiteral(t)&&Sr.string(t.label)&&(Sr.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(Sr.string(t.description)||void 0===t.description)}}(Tn||(Tn={})),function(e){e.is=function(e){return"string"===typeof e}}(Rn||(Rn={})),function(e){e.replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},e.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},e.del=function(e,t){return{range:e,newText:"",annotationId:t}},e.is=function(e){var t=e;return Dn.is(t)&&(Tn.is(t.annotationId)||Rn.is(t.annotationId))}}(In||(In={})),function(e){e.create=function(e,t){return{textDocument:e,edits:t}},e.is=function(e){var t=e;return Sr.defined(t)&&qn.is(t.textDocument)&&Array.isArray(t.edits)}}(Mn||(Mn={})),function(e){e.create=function(e,t,n){var r={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){var t=e;return t&&"create"===t.kind&&Sr.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||Sr.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Sr.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||Rn.is(t.annotationId))}}(Pn||(Pn={})),function(e){e.create=function(e,t,n,r){var i={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(i.options=n),void 0!==r&&(i.annotationId=r),i},e.is=function(e){var t=e;return t&&"rename"===t.kind&&Sr.string(t.oldUri)&&Sr.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||Sr.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Sr.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||Rn.is(t.annotationId))}}(_n||(_n={})),function(e){e.create=function(e,t,n){var r={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){var t=e;return t&&"delete"===t.kind&&Sr.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||Sr.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||Sr.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||Rn.is(t.annotationId))}}(Nn||(Nn={})),function(e){e.is=function(e){var t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every((function(e){return Sr.string(e.kind)?Pn.is(e)||_n.is(e)||Nn.is(e):Mn.is(e)})))}}(An||(An={}));var Bn,$n,qn,Kn,Gn,Jn,Hn,Xn,Yn,Zn,Qn,er,tr,nr,rr,ir,or,sr,ar,lr,cr,dr,pr,hr,mr,ur,fr,gr,br,vr,yr=function(){function e(e,t){this.edits=e,this.changeAnnotations=t}return e.prototype.insert=function(e,t,n){var r,i;if(void 0===n?r=Dn.insert(e,t):Rn.is(n)?(i=n,r=In.insert(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=In.insert(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.replace=function(e,t,n){var r,i;if(void 0===n?r=Dn.replace(e,t):Rn.is(n)?(i=n,r=In.replace(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=In.replace(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.delete=function(e,t){var n,r;if(void 0===t?n=Dn.del(e):Rn.is(t)?(r=t,n=In.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),r=this.changeAnnotations.manage(t),n=In.del(e,r)),this.edits.push(n),void 0!==r)return r},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e.prototype.assertChangeAnnotations=function(e){if(void 0===e)throw new Error("Text edit change is not configured to manage change annotations.")},e}(),wr=function(){function e(e){this._annotations=void 0===e?Object.create(null):e,this._counter=0,this._size=0}return e.prototype.all=function(){return this._annotations},Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),e.prototype.manage=function(e,t){var n;if(Rn.is(e)?n=e:(n=this.nextId(),t=e),void 0!==this._annotations[n])throw new Error("Id "+n+" is already in use.");if(void 0===t)throw new Error("No annotation provided for id "+n);return this._annotations[n]=t,this._size++,n},e.prototype.nextId=function(){return this._counter++,this._counter.toString()},e}();!function(){function e(e){var t=this;this._textEditChanges=Object.create(null),void 0!==e?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new wr(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach((function(e){if(Mn.is(e)){var n=new yr(e.edits,t._changeAnnotations);t._textEditChanges[e.textDocument.uri]=n}}))):e.changes&&Object.keys(e.changes).forEach((function(n){var r=new yr(e.changes[n]);t._textEditChanges[n]=r}))):this._workspaceEdit={}}Object.defineProperty(e.prototype,"edit",{get:function(){return this.initDocumentChanges(),void 0!==this._changeAnnotations&&(0===this._changeAnnotations.size?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),e.prototype.getTextEditChange=function(e){if(qn.is(e)){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var t={uri:e.uri,version:e.version};if(!(r=this._textEditChanges[t.uri])){var n={textDocument:t,edits:i=[]};this._workspaceEdit.documentChanges.push(n),r=new yr(i,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}if(this.initChanges(),void 0===this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");var r;if(!(r=this._textEditChanges[e])){var i=[];this._workspaceEdit.changes[e]=i,r=new yr(i),this._textEditChanges[e]=r}return r},e.prototype.initDocumentChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._changeAnnotations=new wr,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},e.prototype.initChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._workspaceEdit.changes=Object.create(null))},e.prototype.createFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var r,i,o;if(Tn.is(t)||Rn.is(t)?r=t:n=t,void 0===r?i=Pn.create(e,n):(o=Rn.is(r)?r:this._changeAnnotations.manage(r),i=Pn.create(e,n,o)),this._workspaceEdit.documentChanges.push(i),void 0!==o)return o},e.prototype.renameFile=function(e,t,n,r){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var i,o,s;if(Tn.is(n)||Rn.is(n)?i=n:r=n,void 0===i?o=_n.create(e,t,r):(s=Rn.is(i)?i:this._changeAnnotations.manage(i),o=_n.create(e,t,r,s)),this._workspaceEdit.documentChanges.push(o),void 0!==s)return s},e.prototype.deleteFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var r,i,o;if(Tn.is(t)||Rn.is(t)?r=t:n=t,void 0===r?i=Nn.create(e,n):(o=Rn.is(r)?r:this._changeAnnotations.manage(r),i=Nn.create(e,n,o)),this._workspaceEdit.documentChanges.push(i),void 0!==o)return o}}();!function(e){e.create=function(e){return{uri:e}},e.is=function(e){var t=e;return Sr.defined(t)&&Sr.string(t.uri)}}(Bn||(Bn={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){var t=e;return Sr.defined(t)&&Sr.string(t.uri)&&Sr.integer(t.version)}}($n||($n={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){var t=e;return Sr.defined(t)&&Sr.string(t.uri)&&(null===t.version||Sr.integer(t.version))}}(qn||(qn={})),function(e){e.create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},e.is=function(e){var t=e;return Sr.defined(t)&&Sr.string(t.uri)&&Sr.string(t.languageId)&&Sr.integer(t.version)&&Sr.string(t.text)}}(Kn||(Kn={})),function(e){e.PlainText="plaintext",e.Markdown="markdown"}(Gn||(Gn={})),function(e){e.is=function(t){var n=t;return n===e.PlainText||n===e.Markdown}}(Gn||(Gn={})),function(e){e.is=function(e){var t=e;return Sr.objectLiteral(e)&&Gn.is(t.kind)&&Sr.string(t.value)}}(Jn||(Jn={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(Hn||(Hn={})),function(e){e.PlainText=1,e.Snippet=2}(Xn||(Xn={})),function(e){e.Deprecated=1}(Yn||(Yn={})),function(e){e.create=function(e,t,n){return{newText:e,insert:t,replace:n}},e.is=function(e){var t=e;return t&&Sr.string(t.newText)&&un.is(t.insert)&&un.is(t.replace)}}(Zn||(Zn={})),function(e){e.asIs=1,e.adjustIndentation=2}(Qn||(Qn={})),function(e){e.create=function(e){return{label:e}}}(er||(er={})),function(e){e.create=function(e,t){return{items:e||[],isIncomplete:!!t}}}(tr||(tr={})),function(e){e.fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},e.is=function(e){var t=e;return Sr.string(t)||Sr.objectLiteral(t)&&Sr.string(t.language)&&Sr.string(t.value)}}(nr||(nr={})),function(e){e.is=function(e){var t=e;return!!t&&Sr.objectLiteral(t)&&(Jn.is(t.contents)||nr.is(t.contents)||Sr.typedArray(t.contents,nr.is))&&(void 0===e.range||un.is(e.range))}}(rr||(rr={})),function(e){e.create=function(e,t){return t?{label:e,documentation:t}:{label:e}}}(ir||(ir={})),function(e){e.create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={label:e};return Sr.defined(t)&&(i.documentation=t),Sr.defined(n)?i.parameters=n:i.parameters=[],i}}(or||(or={})),function(e){e.Text=1,e.Read=2,e.Write=3}(sr||(sr={})),function(e){e.create=function(e,t){var n={range:e};return Sr.number(t)&&(n.kind=t),n}}(ar||(ar={})),function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26}(lr||(lr={})),function(e){e.Deprecated=1}(cr||(cr={})),function(e){e.create=function(e,t,n,r,i){var o={name:e,kind:t,location:{uri:r,range:n}};return i&&(o.containerName=i),o}}(dr||(dr={})),function(e){e.create=function(e,t,n,r,i,o){var s={name:e,detail:t,kind:n,range:r,selectionRange:i};return void 0!==o&&(s.children=o),s},e.is=function(e){var t=e;return t&&Sr.string(t.name)&&Sr.number(t.kind)&&un.is(t.range)&&un.is(t.selectionRange)&&(void 0===t.detail||Sr.string(t.detail))&&(void 0===t.deprecated||Sr.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))}}(pr||(pr={})),function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"}(hr||(hr={})),function(e){e.create=function(e,t){var n={diagnostics:e};return void 0!==t&&null!==t&&(n.only=t),n},e.is=function(e){var t=e;return Sr.defined(t)&&Sr.typedArray(t.diagnostics,En.is)&&(void 0===t.only||Sr.typedArray(t.only,Sr.string))}}(mr||(mr={})),function(e){e.create=function(e,t,n){var r={title:e},i=!0;return"string"===typeof t?(i=!1,r.kind=t):zn.is(t)?r.command=t:r.edit=t,i&&void 0!==n&&(r.kind=n),r},e.is=function(e){var t=e;return t&&Sr.string(t.title)&&(void 0===t.diagnostics||Sr.typedArray(t.diagnostics,En.is))&&(void 0===t.kind||Sr.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||zn.is(t.command))&&(void 0===t.isPreferred||Sr.boolean(t.isPreferred))&&(void 0===t.edit||An.is(t.edit))}}(ur||(ur={})),function(e){e.create=function(e,t){var n={range:e};return Sr.defined(t)&&(n.data=t),n},e.is=function(e){var t=e;return Sr.defined(t)&&un.is(t.range)&&(Sr.undefined(t.command)||zn.is(t.command))}}(fr||(fr={})),function(e){e.create=function(e,t){return{tabSize:e,insertSpaces:t}},e.is=function(e){var t=e;return Sr.defined(t)&&Sr.uinteger(t.tabSize)&&Sr.boolean(t.insertSpaces)}}(gr||(gr={})),function(e){e.create=function(e,t,n){return{range:e,target:t,data:n}},e.is=function(e){var t=e;return Sr.defined(t)&&un.is(t.range)&&(Sr.undefined(t.target)||Sr.string(t.target))}}(br||(br={})),function(e){e.create=function(e,t){return{range:e,parent:t}},e.is=function(t){var n=t;return void 0!==n&&un.is(n.range)&&(void 0===n.parent||e.is(n.parent))}}(vr||(vr={}));var xr;!function(e){function t(e,n){if(e.length<=1)return e;var r=e.length/2|0,i=e.slice(0,r),o=e.slice(r);t(i,n),t(o,n);for(var s=0,a=0,l=0;s<i.length&&a<o.length;){var c=n(i[s],o[a]);e[l++]=c<=0?i[s++]:o[a++]}for(;s<i.length;)e[l++]=i[s++];for(;a<o.length;)e[l++]=o[a++];return e}e.create=function(e,t,n,r){return new kr(e,t,n,r)},e.is=function(e){var t=e;return!!(Sr.defined(t)&&Sr.string(t.uri)&&(Sr.undefined(t.languageId)||Sr.string(t.languageId))&&Sr.uinteger(t.lineCount)&&Sr.func(t.getText)&&Sr.func(t.positionAt)&&Sr.func(t.offsetAt))},e.applyEdits=function(e,n){for(var r=e.getText(),i=t(n,(function(e,t){var n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n})),o=r.length,s=i.length-1;s>=0;s--){var a=i[s],l=e.offsetAt(a.range.start),c=e.offsetAt(a.range.end);if(!(c<=o))throw new Error("Overlapping edit");r=r.substring(0,l)+a.newText+r.substring(c,r.length),o=l}return r}}(xr||(xr={}));var Sr,kr=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!1,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0},e.prototype.getLineOffsets=function(){if(void 0===this._lineOffsets){for(var e=[],t=this._content,n=!0,r=0;r<t.length;r++){n&&(e.push(r),n=!1);var i=t.charAt(r);n="\r"===i||"\n"===i,"\r"===i&&r+1<t.length&&"\n"===t.charAt(r+1)&&r++}n&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return mn.create(0,e);for(;n<r;){var i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}var o=n-1;return mn.create(o,e-t[o])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),e}();!function(e){var t=Object.prototype.toString;e.defined=function(e){return"undefined"!==typeof e},e.undefined=function(e){return"undefined"===typeof e},e.boolean=function(e){return!0===e||!1===e},e.string=function(e){return"[object String]"===t.call(e)},e.number=function(e){return"[object Number]"===t.call(e)},e.numberRange=function(e,n,r){return"[object Number]"===t.call(e)&&n<=e&&e<=r},e.integer=function(e){return"[object Number]"===t.call(e)&&-2147483648<=e&&e<=2147483647},e.uinteger=function(e){return"[object Number]"===t.call(e)&&0<=e&&e<=2147483647},e.func=function(e){return"[object Function]"===t.call(e)},e.objectLiteral=function(e){return null!==e&&"object"===typeof e},e.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)}}(Sr||(Sr={}));var Cr,Fr,Er,zr,Dr=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!0,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(t,n){for(var r=0,i=t;r<i.length;r++){var o=i[r];if(e.isIncremental(o)){var s=Ir(o.range),a=this.offsetAt(s.start),l=this.offsetAt(s.end);this._content=this._content.substring(0,a)+o.text+this._content.substring(l,this._content.length);var c=Math.max(s.start.line,0),d=Math.max(s.end.line,0),p=this._lineOffsets,h=Rr(o.text,!1,a);if(d-c===h.length)for(var m=0,u=h.length;m<u;m++)p[m+c+1]=h[m];else h.length<1e4?p.splice.apply(p,[c+1,d-c].concat(h)):this._lineOffsets=p=p.slice(0,c+1).concat(h,p.slice(d+1));var f=o.text.length-(l-a);if(0!==f)for(m=c+1+h.length,u=p.length;m<u;m++)p[m]=p[m]+f}else{if(!e.isFull(o))throw new Error("Unknown change event received");this._content=o.text,this._lineOffsets=void 0}}this._version=n},e.prototype.getLineOffsets=function(){return void 0===this._lineOffsets&&(this._lineOffsets=Rr(this._content,!0)),this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return{line:0,character:e};for(;n<r;){var i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}var o=n-1;return{line:o,character:e-t[o]}},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!0,configurable:!0}),e.isIncremental=function(e){var t=e;return void 0!==t&&null!==t&&"string"===typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"===typeof t.rangeLength)},e.isFull=function(e){var t=e;return void 0!==t&&null!==t&&"string"===typeof t.text&&void 0===t.range&&void 0===t.rangeLength},e}();function Tr(e,t){if(e.length<=1)return e;var n=e.length/2|0,r=e.slice(0,n),i=e.slice(n);Tr(r,t),Tr(i,t);for(var o=0,s=0,a=0;o<r.length&&s<i.length;){var l=t(r[o],i[s]);e[a++]=l<=0?r[o++]:i[s++]}for(;o<r.length;)e[a++]=r[o++];for(;s<i.length;)e[a++]=i[s++];return e}function Rr(e,t,n){void 0===n&&(n=0);for(var r=t?[n]:[],i=0;i<e.length;i++){var o=e.charCodeAt(i);13!==o&&10!==o||(13===o&&i+1<e.length&&10===e.charCodeAt(i+1)&&i++,r.push(n+i+1))}return r}function Ir(e){var t=e.start,n=e.end;return t.line>n.line||t.line===n.line&&t.character>n.character?{start:n,end:t}:e}function Mr(e){var t=Ir(e.range);return t!==e.range?{newText:e.newText,range:t}:e}!function(e){e.create=function(e,t,n,r){return new Dr(e,t,n,r)},e.update=function(e,t,n){if(e instanceof Dr)return e.update(t,n),e;throw new Error("TextDocument.update: document must be created by TextDocument.create")},e.applyEdits=function(e,t){for(var n=e.getText(),r=Tr(t.map(Mr),(function(e,t){var n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n})),i=0,o=[],s=0,a=r;s<a.length;s++){var l=a[s],c=e.offsetAt(l.range.start);if(c<i)throw new Error("Overlapping edit");c>i&&o.push(n.substring(i,c)),l.newText.length&&o.push(l.newText),i=e.offsetAt(l.range.end)}return o.push(n.substr(i)),o.join("")}}(Cr||(Cr={})),function(e){e.LATEST={textDocument:{completion:{completionItem:{documentationFormat:[Gn.Markdown,Gn.PlainText]}},hover:{contentFormat:[Gn.Markdown,Gn.PlainText]}}}}(Fr||(Fr={})),function(e){e[e.Unknown=0]="Unknown",e[e.File=1]="File",e[e.Directory=2]="Directory",e[e.SymbolicLink=64]="SymbolicLink"}(Er||(Er={})),zr=function(){var e={470:function(e){function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",i=0,o=-1,s=0,a=0;a<=e.length;++a){if(a<e.length)n=e.charCodeAt(a);else{if(47===n)break;n=47}if(47===n){if(o===a-1||1===s);else if(o!==a-1&&2===s){if(r.length<2||2!==i||46!==r.charCodeAt(r.length-1)||46!==r.charCodeAt(r.length-2))if(r.length>2){var l=r.lastIndexOf("/");if(l!==r.length-1){-1===l?(r="",i=0):i=(r=r.slice(0,l)).length-1-r.lastIndexOf("/"),o=a,s=0;continue}}else if(2===r.length||1===r.length){r="",i=0,o=a,s=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(o+1,a):r=e.slice(o+1,a),i=a-o-1;o=a,s=0}else 46===n&&-1!==s?++s:s=-1}return r}var r={resolve:function(){for(var e,r="",i=!1,o=arguments.length-1;o>=-1&&!i;o--){var s;o>=0?s=arguments[o]:(void 0===e&&(e=process.cwd()),s=e),t(s),0!==s.length&&(r=s+"/"+r,i=47===s.charCodeAt(0))}return r=n(r,!i),i?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&i&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n<arguments.length;++n){var i=arguments[n];t(i),i.length>0&&(void 0===e?e=i:e+="/"+i)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var i=1;i<e.length&&47===e.charCodeAt(i);++i);for(var o=e.length,s=o-i,a=1;a<n.length&&47===n.charCodeAt(a);++a);for(var l=n.length-a,c=s<l?s:l,d=-1,p=0;p<=c;++p){if(p===c){if(l>c){if(47===n.charCodeAt(a+p))return n.slice(a+p+1);if(0===p)return n.slice(a+p)}else s>c&&(47===e.charCodeAt(i+p)?d=p:0===p&&(d=0));break}var h=e.charCodeAt(i+p);if(h!==n.charCodeAt(a+p))break;47===h&&(d=p)}var m="";for(p=i+d+1;p<=o;++p)p!==o&&47!==e.charCodeAt(p)||(0===m.length?m+="..":m+="/..");return m.length>0?m+n.slice(a+d):(a+=d,47===n.charCodeAt(a)&&++a,n.slice(a))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,i=-1,o=!0,s=e.length-1;s>=1;--s)if(47===(n=e.charCodeAt(s))){if(!o){i=s;break}}else o=!1;return-1===i?r?"/":".":r&&1===i?"//":e.slice(0,i)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,i=0,o=-1,s=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var a=n.length-1,l=-1;for(r=e.length-1;r>=0;--r){var c=e.charCodeAt(r);if(47===c){if(!s){i=r+1;break}}else-1===l&&(s=!1,l=r+1),a>=0&&(c===n.charCodeAt(a)?-1==--a&&(o=r):(a=-1,o=l))}return i===o?o=l:-1===o&&(o=e.length),e.slice(i,o)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!s){i=r+1;break}}else-1===o&&(s=!1,o=r+1);return-1===o?"":e.slice(i,o)},extname:function(e){t(e);for(var n=-1,r=0,i=-1,o=!0,s=0,a=e.length-1;a>=0;--a){var l=e.charCodeAt(a);if(47!==l)-1===i&&(o=!1,i=a+1),46===l?-1===n?n=a:1!==s&&(s=1):-1!==n&&(s=-1);else if(!o){r=a+1;break}}return-1===n||-1===i||0===s||1===s&&n===i-1&&n===r+1?"":e.slice(n,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+"/"+r:r}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,i=e.charCodeAt(0),o=47===i;o?(n.root="/",r=1):r=0;for(var s=-1,a=0,l=-1,c=!0,d=e.length-1,p=0;d>=r;--d)if(47!==(i=e.charCodeAt(d)))-1===l&&(c=!1,l=d+1),46===i?-1===s?s=d:1!==p&&(p=1):-1!==s&&(p=-1);else if(!c){a=d+1;break}return-1===s||-1===l||0===p||1===p&&s===l-1&&s===a+1?-1!==l&&(n.base=n.name=0===a&&o?e.slice(1,l):e.slice(a,l)):(0===a&&o?(n.name=e.slice(1,s),n.base=e.slice(1,l)):(n.name=e.slice(a,s),n.base=e.slice(a,l)),n.ext=e.slice(s,l)),a>0?n.dir=e.slice(0,a-1):o&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,e.exports=r},447:function(e,t,n){var r;if(n.r(t),n.d(t,{URI:function(){return u},Utils:function(){return F}}),"object"==typeof process)r="win32"===process.platform;else if("object"==typeof navigator){var i=navigator.userAgent;r=i.indexOf("Windows")>=0}var o,s,a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),l=/^\w[\w\d+.-]*$/,c=/^\//,d=/^\/\//,p="",h="/",m=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,u=function(){function e(e,t,n,r,i,o){void 0===o&&(o=!1),"object"==typeof e?(this.scheme=e.scheme||p,this.authority=e.authority||p,this.path=e.path||p,this.query=e.query||p,this.fragment=e.fragment||p):(this.scheme=function(e,t){return e||t?e:"file"}(e,o),this.authority=t||p,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==h&&(t=h+t):t=h}return t}(this.scheme,n||p),this.query=r||p,this.fragment=i||p,function(e,t){if(!e.scheme&&t)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}');if(e.scheme&&!l.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!c.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(d.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,o))}return e.isUri=function(t){return t instanceof e||!!t&&"string"==typeof t.authority&&"string"==typeof t.fragment&&"string"==typeof t.path&&"string"==typeof t.query&&"string"==typeof t.scheme&&"function"==typeof t.fsPath&&"function"==typeof t.with&&"function"==typeof t.toString},Object.defineProperty(e.prototype,"fsPath",{get:function(){return w(this,!1)},enumerable:!1,configurable:!0}),e.prototype.with=function(e){if(!e)return this;var t=e.scheme,n=e.authority,r=e.path,i=e.query,o=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=p),void 0===n?n=this.authority:null===n&&(n=p),void 0===r?r=this.path:null===r&&(r=p),void 0===i?i=this.query:null===i&&(i=p),void 0===o?o=this.fragment:null===o&&(o=p),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&o===this.fragment?this:new g(t,n,r,i,o)},e.parse=function(e,t){void 0===t&&(t=!1);var n=m.exec(e);return n?new g(n[2]||p,C(n[4]||p),C(n[5]||p),C(n[7]||p),C(n[9]||p),t):new g(p,p,p,p,p)},e.file=function(e){var t=p;if(r&&(e=e.replace(/\\/g,h)),e[0]===h&&e[1]===h){var n=e.indexOf(h,2);-1===n?(t=e.substring(2),e=h):(t=e.substring(2,n),e=e.substring(n)||h)}return new g("file",t,e,p,p)},e.from=function(e){return new g(e.scheme,e.authority,e.path,e.query,e.fragment)},e.prototype.toString=function(e){return void 0===e&&(e=!1),x(this,e)},e.prototype.toJSON=function(){return this},e.revive=function(t){if(t){if(t instanceof e)return t;var n=new g(t);return n._formatted=t.external,n._fsPath=t._sep===f?t.fsPath:null,n}return t},e}(),f=r?1:void 0,g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._formatted=null,t._fsPath=null,t}return a(t,e),Object.defineProperty(t.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=w(this,!1)),this._fsPath},enumerable:!1,configurable:!0}),t.prototype.toString=function(e){return void 0===e&&(e=!1),e?x(this,!0):(this._formatted||(this._formatted=x(this,!1)),this._formatted)},t.prototype.toJSON=function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=f),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e},t}(u),b=((s={})[58]="%3A",s[47]="%2F",s[63]="%3F",s[35]="%23",s[91]="%5B",s[93]="%5D",s[64]="%40",s[33]="%21",s[36]="%24",s[38]="%26",s[39]="%27",s[40]="%28",s[41]="%29",s[42]="%2A",s[43]="%2B",s[44]="%2C",s[59]="%3B",s[61]="%3D",s[32]="%20",s);function v(e,t){for(var n=void 0,r=-1,i=0;i<e.length;i++){var o=e.charCodeAt(i);if(o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o)-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),void 0!==n&&(n+=e.charAt(i));else{void 0===n&&(n=e.substr(0,i));var s=b[o];void 0!==s?(-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),n+=s):-1===r&&(r=i)}}return-1!==r&&(n+=encodeURIComponent(e.substring(r))),void 0!==n?n:e}function y(e){for(var t=void 0,n=0;n<e.length;n++){var r=e.charCodeAt(n);35===r||63===r?(void 0===t&&(t=e.substr(0,n)),t+=b[r]):void 0!==t&&(t+=e[n])}return void 0!==t?t:e}function w(e,t){var n;return n=e.authority&&e.path.length>1&&"file"===e.scheme?"//"+e.authority+e.path:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,r&&(n=n.replace(/\//g,"\\")),n}function x(e,t){var n=t?y:v,r="",i=e.scheme,o=e.authority,s=e.path,a=e.query,l=e.fragment;if(i&&(r+=i,r+=":"),(o||"file"===i)&&(r+=h,r+=h),o){var c=o.indexOf("@");if(-1!==c){var d=o.substr(0,c);o=o.substr(c+1),-1===(c=d.indexOf(":"))?r+=n(d,!1):(r+=n(d.substr(0,c),!1),r+=":",r+=n(d.substr(c+1),!1)),r+="@"}-1===(c=(o=o.toLowerCase()).indexOf(":"))?r+=n(o,!1):(r+=n(o.substr(0,c),!1),r+=o.substr(c))}if(s){if(s.length>=3&&47===s.charCodeAt(0)&&58===s.charCodeAt(2))(p=s.charCodeAt(1))>=65&&p<=90&&(s="/"+String.fromCharCode(p+32)+":"+s.substr(3));else if(s.length>=2&&58===s.charCodeAt(1)){var p;(p=s.charCodeAt(0))>=65&&p<=90&&(s=String.fromCharCode(p+32)+":"+s.substr(2))}r+=n(s,!0)}return a&&(r+="?",r+=n(a,!1)),l&&(r+="#",r+=t?l:v(l,!1)),r}function S(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+S(e.substr(3)):e}}var k=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function C(e){return e.match(k)?e.replace(k,(function(e){return S(e)})):e}var F,E=n(470),z=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),i=0;for(t=0;t<n;t++)for(var o=arguments[t],s=0,a=o.length;s<a;s++,i++)r[i]=o[s];return r},D=E.posix||E;!function(e){e.joinPath=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return e.with({path:D.join.apply(D,z([e.path],t))})},e.resolvePath=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=e.path||"/";return e.with({path:D.resolve.apply(D,z([r],t))})},e.dirname=function(e){var t=D.dirname(e.path);return 1===t.length&&46===t.charCodeAt(0)?e:e.with({path:t})},e.basename=function(e){return D.basename(e.path)},e.extname=function(e){return D.extname(e.path)}}(F||(F={}))}},t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}return n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n(447)}();var Pr=zr,_r=Pr.URI,Nr=Pr.Utils,Ar=function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};function Or(e){return Nr.dirname(_r.parse(e)).toString()}function Wr(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return Nr.joinPath.apply(Nr,Ar([_r.parse(e)],t)).toString()}var Lr=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{l(r.next(e))}catch(t){o(t)}}function a(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))},jr=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(a){o=[6,a],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}},Ur=function(){function e(e){this.readDirectory=e,this.literalCompletions=[],this.importCompletions=[]}return e.prototype.onCssURILiteralValue=function(e){this.literalCompletions.push(e)},e.prototype.onCssImportPath=function(e){this.importCompletions.push(e)},e.prototype.computeCompletions=function(e,t){return Lr(this,void 0,void 0,(function(){var n,r,i,o,s,a,l,c,d,p,h,m,u,f,g,b,v;return jr(this,(function(y){switch(y.label){case 0:n={items:[],isIncomplete:!1},r=0,i=this.literalCompletions,y.label=1;case 1:return r<i.length?(o=i[r],s=o.uriValue,"."!==(u=Br(s))&&".."!==u?[3,2]:(n.isIncomplete=!0,[3,4])):[3,5];case 2:return[4,this.providePathSuggestions(s,o.position,o.range,e,t)];case 3:for(a=y.sent(),l=0,c=a;l<c.length;l++)v=c[l],n.items.push(v);y.label=4;case 4:return r++,[3,1];case 5:d=0,p=this.importCompletions,y.label=6;case 6:return d<p.length?(h=p[d],m=h.pathValue,"."!==(u=Br(m))&&".."!==u?[3,7]:(n.isIncomplete=!0,[3,9])):[3,10];case 7:return[4,this.providePathSuggestions(m,h.position,h.range,e,t)];case 8:for(f=y.sent(),"scss"===e.languageId&&f.forEach((function(e){Y(e.label,"_")&&Z(e.label,".scss")&&(e.textEdit?e.textEdit.newText=e.label.slice(1,-5):e.label=e.label.slice(1,-5))})),g=0,b=f;g<b.length;g++)v=b[g],n.items.push(v);y.label=9;case 9:return d++,[3,6];case 10:return[2,n]}}))}))},e.prototype.providePathSuggestions=function(e,t,n,r,i){return Lr(this,void 0,void 0,(function(){var o,s,a,l,c,d,p,h,m,u,f,g,b,v,y;return jr(this,(function(w){switch(w.label){case 0:if(o=Br(e),s=Y(e,"'")||Y(e,'"'),a=s?o.slice(0,t.character-(n.start.character+1)):o.slice(0,t.character-n.start.character),l=r.uri,c=s?function(e,t,n){var r=Kr(e.start,t),i=Kr(e.end,n);return un.create(r,i)}(n,1,-1):n,d=function(e,t,n){var r,i=e.lastIndexOf("/");if(-1===i)r=n;else{var o=t.slice(i+1),s=Kr(n.end,-o.length),a=o.indexOf(" "),l=void 0;l=-1!==a?Kr(s,a):n.end,r=un.create(s,l)}return r}(a,o,c),p=a.substring(0,a.lastIndexOf("/")+1),!(h=i.resolveReference(p||".",l)))return[3,4];w.label=1;case 1:return w.trys.push([1,3,,4]),m=[],[4,this.readDirectory(h)];case 2:for(u=w.sent(),f=0,g=u;f<g.length;f++)b=g[f],v=b[0],y=b[1],v.charCodeAt(0)===Vr||y!==Er.Directory&&Wr(h,v)===l||m.push($r(v,y===Er.Directory,d));return[2,m];case 3:return w.sent(),[3,4];case 4:return[2,[]]}}))}))},e}(),Vr=".".charCodeAt(0);function Br(e){return Y(e,"'")||Y(e,'"')?e.slice(1,-1):e}function $r(e,t,n){return t?{label:qr(e+="/"),kind:Hn.Folder,textEdit:Dn.replace(n,qr(e)),command:{title:"Suggest",command:"editor.action.triggerSuggest"}}:{label:qr(e),kind:Hn.File,textEdit:Dn.replace(n,qr(e))}}function qr(e){return e.replace(/(\s|\(|\)|,|"|')/g,"\\$1")}function Kr(e,t){return mn.create(e.line,e.character+t)}var Gr,Jr=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{l(r.next(e))}catch(t){o(t)}}function a(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))},Hr=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(a){o=[6,a],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}},Xr=wt(),Yr=Xn.Snippet;!function(e){e.Enums=" ",e.Normal="d",e.VendorPrefixed="x",e.Term="y",e.Variable="z"}(Gr||(Gr={}));var Zr=function(){function e(e,t,n){void 0===e&&(e=null),this.variablePrefix=e,this.lsOptions=t,this.cssDataManager=n,this.completionParticipants=[]}return e.prototype.configure=function(e){this.defaultSettings=e},e.prototype.getSymbolContext=function(){return this.symbolContext||(this.symbolContext=new Vn(this.styleSheet)),this.symbolContext},e.prototype.setCompletionParticipants=function(e){this.completionParticipants=e||[]},e.prototype.doComplete2=function(e,t,n,r,i){return void 0===i&&(i=this.defaultSettings),Jr(this,void 0,void 0,(function(){var o,s,a,l;return Hr(this,(function(c){switch(c.label){case 0:if(!this.lsOptions.fileSystemProvider||!this.lsOptions.fileSystemProvider.readDirectory)return[2,this.doComplete(e,t,n,i)];o=new Ur(this.lsOptions.fileSystemProvider.readDirectory),s=this.completionParticipants,this.completionParticipants=[o].concat(s),a=this.doComplete(e,t,n,i),c.label=1;case 1:return c.trys.push([1,,3,4]),[4,o.computeCompletions(e,r)];case 2:return l=c.sent(),[2,{isIncomplete:a.isIncomplete||l.isIncomplete,items:l.items.concat(a.items)}];case 3:return this.completionParticipants=s,[7];case 4:return[2]}}))}))},e.prototype.doComplete=function(e,t,n,r){this.offset=e.offsetAt(t),this.position=t,this.currentWord=function(e,t){var n=t-1,r=e.getText();for(;n>=0&&-1===' \t\n\r":{[()]},*>+'.indexOf(r.charAt(n));)n--;return r.substring(n+1,t)}(e,this.offset),this.defaultReplaceRange=un.create(mn.create(this.position.line,this.position.character-this.currentWord.length),this.position),this.textDocument=e,this.styleSheet=n,this.documentSettings=r;try{var i={isIncomplete:!1,items:[]};this.nodePath=ie(this.styleSheet,this.offset);for(var o=this.nodePath.length-1;o>=0;o--){var s=this.nodePath[o];if(s instanceof we)this.getCompletionsForDeclarationProperty(s.getParent(),i);else if(s instanceof He)s.parent instanceof ot?this.getVariableProposals(null,i):this.getCompletionsForExpression(s,i);else if(s instanceof ue){var a=s.findAParent(ee.ExtendsReference,ee.Ruleset);if(a)if(a.type===ee.ExtendsReference)this.getCompletionsForExtendsReference(a,s,i);else{var l=a;this.getCompletionsForSelector(l,l&&l.isNested(),i)}}else if(s instanceof ke)this.getCompletionsForFunctionArgument(s,s.getParent(),i);else if(s instanceof de)this.getCompletionsForDeclarations(s,i);else if(s instanceof it)this.getCompletionsForVariableDeclaration(s,i);else if(s instanceof he)this.getCompletionsForRuleSet(s,i);else if(s instanceof ot)this.getCompletionsForInterpolation(s,i);else if(s instanceof Te)this.getCompletionsForFunctionDeclaration(s,i);else if(s instanceof dt)this.getCompletionsForMixinReference(s,i);else if(s instanceof xe)this.getCompletionsForFunctionArgument(null,s,i);else if(s instanceof Ve)this.getCompletionsForSupports(s,i);else if(s instanceof Ke)this.getCompletionsForSupportsCondition(s,i);else if(s instanceof at)this.getCompletionsForExtendsReference(s,null,i);else if(s.type===ee.URILiteral)this.getCompletionForUriLiteralValue(s,i);else if(null===s.parent)this.getCompletionForTopLevel(i);else{if(s.type!==ee.StringLiteral||!this.isImportPathParent(s.parent.type))continue;this.getCompletionForImportPath(s,i)}if(i.items.length>0||this.offset>s.offset)return this.finalize(i)}return this.getCompletionsForStylesheet(i),0===i.items.length&&this.variablePrefix&&0===this.currentWord.indexOf(this.variablePrefix)&&this.getVariableProposals(null,i),this.finalize(i)}finally{this.position=null,this.currentWord=null,this.textDocument=null,this.styleSheet=null,this.symbolContext=null,this.defaultReplaceRange=null,this.nodePath=null}},e.prototype.isImportPathParent=function(e){return e===ee.Import},e.prototype.finalize=function(e){return e},e.prototype.findInNodePath=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=this.nodePath.length-1;n>=0;n--){var r=this.nodePath[n];if(-1!==e.indexOf(r.type))return r}return null},e.prototype.getCompletionsForDeclarationProperty=function(e,t){return this.getPropertyProposals(e,t)},e.prototype.getPropertyProposals=function(e,t){var n=this,r=this.isTriggerPropertyValueCompletionEnabled,i=this.isCompletePropertyWithSemicolonEnabled;return this.cssDataManager.getProperties().forEach((function(o){var s,a,l=!1;e?(s=n.getCompletionRange(e.getProperty()),a=o.name,an(e.colonPosition)||(a+=": ",l=!0)):(s=n.getCompletionRange(null),a=o.name+": ",l=!0),!e&&i&&(a+="$0;"),e&&!e.semicolonPosition&&i&&n.offset>=n.textDocument.offsetAt(s.end)&&(a+="$0;");var c={label:o.name,documentation:Et(o,n.doesSupportMarkdown()),tags:Qr(o)?[Yn.Deprecated]:[],textEdit:Dn.replace(s,a),insertTextFormat:Xn.Snippet,kind:Hn.Property};o.restrictions||(l=!1),r&&l&&(c.command={title:"Suggest",command:"editor.action.triggerSuggest"});var d=(255-("number"===typeof o.relevance?Math.min(Math.max(o.relevance,0),99):50)).toString(16),p=Y(o.name,"-")?Gr.VendorPrefixed:Gr.Normal;c.sortText=p+"_"+d,t.items.push(c)})),this.completionParticipants.forEach((function(e){e.onCssProperty&&e.onCssProperty({propertyName:n.currentWord,range:n.defaultReplaceRange})})),t},Object.defineProperty(e.prototype,"isTriggerPropertyValueCompletionEnabled",{get:function(){var e,t;return null===(t=null===(e=this.documentSettings)||void 0===e?void 0:e.triggerPropertyValueCompletion)||void 0===t||t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isCompletePropertyWithSemicolonEnabled",{get:function(){var e,t;return null===(t=null===(e=this.documentSettings)||void 0===e?void 0:e.completePropertyWithSemicolon)||void 0===t||t},enumerable:!1,configurable:!0}),e.prototype.getCompletionsForDeclarationValue=function(e,t){for(var n=this,r=e.getFullPropertyName(),i=this.cssDataManager.getProperty(r),o=e.getValue()||null;o&&o.hasChildren();)o=o.findChildAtOffset(this.offset,!1);if(this.completionParticipants.forEach((function(e){e.onCssPropertyValue&&e.onCssPropertyValue({propertyName:r,propertyValue:n.currentWord,range:n.getCompletionRange(o)})})),i){if(i.restrictions)for(var s=0,a=i.restrictions;s<a.length;s++){switch(a[s]){case"color":this.getColorProposals(i,o,t);break;case"position":this.getPositionProposals(i,o,t);break;case"repeat":this.getRepeatStyleProposals(i,o,t);break;case"line-style":this.getLineStyleProposals(i,o,t);break;case"line-width":this.getLineWidthProposals(i,o,t);break;case"geometry-box":this.getGeometryBoxProposals(i,o,t);break;case"box":this.getBoxProposals(i,o,t);break;case"image":this.getImageProposals(i,o,t);break;case"timing-function":this.getTimingFunctionProposals(i,o,t);break;case"shape":this.getBasicShapeProposals(i,o,t)}}this.getValueEnumProposals(i,o,t),this.getCSSWideKeywordProposals(i,o,t),this.getUnitProposals(i,o,t)}else for(var l=function(e,t){var n=t.getFullPropertyName(),r=new ei;function i(e){return(e instanceof le||e instanceof rt||e instanceof Qe)&&r.add(e.getText()),!0}function o(e){var t=e.getFullPropertyName();return n===t}function s(e){if(e instanceof ve&&e!==t&&o(e)){var n=e.getValue();n&&n.accept(i)}return!0}return e.accept(s),r}(this.styleSheet,e),c=0,d=l.getEntries();c<d.length;c++){var p=d[c];t.items.push({label:p,textEdit:Dn.replace(this.getCompletionRange(o),p),kind:Hn.Value})}return this.getVariableProposals(o,t),this.getTermProposals(i,o,t),t},e.prototype.getValueEnumProposals=function(e,t,n){if(e.values)for(var r=0,i=e.values;r<i.length;r++){var o=i[r],s=o.name,a=void 0;if(Z(s,")")){var l=s.lastIndexOf("(");-1!==l&&(s=s.substr(0,l)+"($1)",a=Yr)}var c=Gr.Enums;Y(o.name,"-")&&(c+=Gr.VendorPrefixed);var d={label:o.name,documentation:Et(o,this.doesSupportMarkdown()),tags:Qr(e)?[Yn.Deprecated]:[],textEdit:Dn.replace(this.getCompletionRange(t),s),sortText:c,kind:Hn.Value,insertTextFormat:a};n.items.push(d)}return n},e.prototype.getCSSWideKeywordProposals=function(e,t,n){for(var r in Yt)n.items.push({label:r,documentation:Yt[r],textEdit:Dn.replace(this.getCompletionRange(t),r),kind:Hn.Value});return n},e.prototype.getCompletionsForInterpolation=function(e,t){return this.offset>=e.offset+2&&this.getVariableProposals(null,t),t},e.prototype.getVariableProposals=function(e,t){for(var n=0,r=this.getSymbolContext().findSymbolsAtOffset(this.offset,te.Variable);n<r.length;n++){var i=r[n],o=Y(i.name,"--")?"var("+i.name+")":i.name,s={label:i.name,documentation:i.value?Q(i.value):i.value,textEdit:Dn.replace(this.getCompletionRange(e),o),kind:Hn.Variable,sortText:Gr.Variable};if("string"===typeof s.documentation&&ri(s.documentation)&&(s.kind=Hn.Color),i.node.type===ee.FunctionParameter){var a=i.node.getParent();a.type===ee.MixinDeclaration&&(s.detail=Xr("completion.argument","argument from '{0}'",a.getName()))}t.items.push(s)}return t},e.prototype.getVariableProposalsForCSSVarFunction=function(e){var t=this.getSymbolContext().findSymbolsAtOffset(this.offset,te.Variable);t=t.filter((function(e){return Y(e.name,"--")}));for(var n=0,r=t;n<r.length;n++){var i=r[n],o={label:i.name,documentation:i.value?Q(i.value):i.value,textEdit:Dn.replace(this.getCompletionRange(null),i.name),kind:Hn.Variable};"string"===typeof o.documentation&&ri(o.documentation)&&(o.kind=Hn.Color),e.items.push(o)}return e},e.prototype.getUnitProposals=function(e,t,n){var r="0";if(this.currentWord.length>0){var i=this.currentWord.match(/^-?\d[\.\d+]*/);i&&(r=i[0],n.isIncomplete=r.length===this.currentWord.length)}else 0===this.currentWord.length&&(n.isIncomplete=!0);if(t&&t.parent&&t.parent.type===ee.Term&&(t=t.getParent()),e.restrictions)for(var o=0,s=e.restrictions;o<s.length;o++){var a=s[o],l=tn[a];if(l)for(var c=0,d=l;c<d.length;c++){var p=r+d[c];n.items.push({label:p,textEdit:Dn.replace(this.getCompletionRange(t),p),kind:Hn.Unit})}}return n},e.prototype.getCompletionRange=function(e){if(e&&e.offset<=this.offset&&this.offset<=e.end){var t=-1!==e.end?this.textDocument.positionAt(e.end):this.position,n=this.textDocument.positionAt(e.offset);if(n.line===t.line)return un.create(n,t)}return this.defaultReplaceRange},e.prototype.getColorProposals=function(e,t,n){for(var r in Pt)n.items.push({label:r,documentation:Pt[r],textEdit:Dn.replace(this.getCompletionRange(t),r),kind:Hn.Color});for(var r in _t)n.items.push({label:r,documentation:_t[r],textEdit:Dn.replace(this.getCompletionRange(t),r),kind:Hn.Value});var i=new ei;this.styleSheet.acceptVisitor(new ni(i,this.offset));for(var o=0,s=i.getEntries();o<s.length;o++){r=s[o];n.items.push({label:r,textEdit:Dn.replace(this.getCompletionRange(t),r),kind:Hn.Color})}for(var a=function(e){var r=1,i=e.func.replace(/\[?\$(\w+)\]?/g,(function(e,t){return"${"+r+++":"+t+"}"}));n.items.push({label:e.func.substr(0,e.func.indexOf("(")),detail:e.func,documentation:e.desc,textEdit:Dn.replace(l.getCompletionRange(t),i),insertTextFormat:Yr,kind:Hn.Function})},l=this,c=0,d=Mt;c<d.length;c++){a(d[c])}return n},e.prototype.getPositionProposals=function(e,t,n){for(var r in qt)n.items.push({label:r,documentation:qt[r],textEdit:Dn.replace(this.getCompletionRange(t),r),kind:Hn.Value});return n},e.prototype.getRepeatStyleProposals=function(e,t,n){for(var r in Kt)n.items.push({label:r,documentation:Kt[r],textEdit:Dn.replace(this.getCompletionRange(t),r),kind:Hn.Value});return n},e.prototype.getLineStyleProposals=function(e,t,n){for(var r in Gt)n.items.push({label:r,documentation:Gt[r],textEdit:Dn.replace(this.getCompletionRange(t),r),kind:Hn.Value});return n},e.prototype.getLineWidthProposals=function(e,t,n){for(var r=0,i=Jt;r<i.length;r++){var o=i[r];n.items.push({label:o,textEdit:Dn.replace(this.getCompletionRange(t),o),kind:Hn.Value})}return n},e.prototype.getGeometryBoxProposals=function(e,t,n){for(var r in Xt)n.items.push({label:r,documentation:Xt[r],textEdit:Dn.replace(this.getCompletionRange(t),r),kind:Hn.Value});return n},e.prototype.getBoxProposals=function(e,t,n){for(var r in Ht)n.items.push({label:r,documentation:Ht[r],textEdit:Dn.replace(this.getCompletionRange(t),r),kind:Hn.Value});return n},e.prototype.getImageProposals=function(e,t,n){for(var r in Zt){var i=ti(r);n.items.push({label:r,documentation:Zt[r],textEdit:Dn.replace(this.getCompletionRange(t),i),kind:Hn.Function,insertTextFormat:r!==i?Yr:void 0})}return n},e.prototype.getTimingFunctionProposals=function(e,t,n){for(var r in Qt){var i=ti(r);n.items.push({label:r,documentation:Qt[r],textEdit:Dn.replace(this.getCompletionRange(t),i),kind:Hn.Function,insertTextFormat:r!==i?Yr:void 0})}return n},e.prototype.getBasicShapeProposals=function(e,t,n){for(var r in en){var i=ti(r);n.items.push({label:r,documentation:en[r],textEdit:Dn.replace(this.getCompletionRange(t),i),kind:Hn.Function,insertTextFormat:r!==i?Yr:void 0})}return n},e.prototype.getCompletionsForStylesheet=function(e){var t=this.styleSheet.findFirstChildBeforeOffset(this.offset);return t?t instanceof he?this.getCompletionsForRuleSet(t,e):t instanceof Ve?this.getCompletionsForSupports(t,e):e:this.getCompletionForTopLevel(e)},e.prototype.getCompletionForTopLevel=function(e){var t=this;return this.cssDataManager.getAtDirectives().forEach((function(n){e.items.push({label:n.name,textEdit:Dn.replace(t.getCompletionRange(null),n.name),documentation:Et(n,t.doesSupportMarkdown()),tags:Qr(n)?[Yn.Deprecated]:[],kind:Hn.Keyword})})),this.getCompletionsForSelector(null,!1,e),e},e.prototype.getCompletionsForRuleSet=function(e,t){var n=e.getDeclarations();return n&&n.endsWith("}")&&this.offset>=n.end?this.getCompletionForTopLevel(t):!n||this.offset<=n.offset?this.getCompletionsForSelector(e,e.isNested(),t):this.getCompletionsForDeclarations(e.getDeclarations(),t)},e.prototype.getCompletionsForSelector=function(e,t,n){var r=this,i=this.findInNodePath(ee.PseudoSelector,ee.IdentifierSelector,ee.ClassSelector,ee.ElementNameSelector);if(!i&&this.hasCharacterAtPosition(this.offset-this.currentWord.length-1,":")&&(this.currentWord=":"+this.currentWord,this.hasCharacterAtPosition(this.offset-this.currentWord.length-1,":")&&(this.currentWord=":"+this.currentWord),this.defaultReplaceRange=un.create(mn.create(this.position.line,this.position.character-this.currentWord.length),this.position)),this.cssDataManager.getPseudoClasses().forEach((function(e){var t=ti(e.name),o={label:e.name,textEdit:Dn.replace(r.getCompletionRange(i),t),documentation:Et(e,r.doesSupportMarkdown()),tags:Qr(e)?[Yn.Deprecated]:[],kind:Hn.Function,insertTextFormat:e.name!==t?Yr:void 0};Y(e.name,":-")&&(o.sortText=Gr.VendorPrefixed),n.items.push(o)})),this.cssDataManager.getPseudoElements().forEach((function(e){var t=ti(e.name),o={label:e.name,textEdit:Dn.replace(r.getCompletionRange(i),t),documentation:Et(e,r.doesSupportMarkdown()),tags:Qr(e)?[Yn.Deprecated]:[],kind:Hn.Function,insertTextFormat:e.name!==t?Yr:void 0};Y(e.name,"::-")&&(o.sortText=Gr.VendorPrefixed),n.items.push(o)})),!t){for(var o=0,s=nn;o<s.length;o++){var a=s[o];n.items.push({label:a,textEdit:Dn.replace(this.getCompletionRange(i),a),kind:Hn.Keyword})}for(var l=0,c=rn;l<c.length;l++){a=c[l];n.items.push({label:a,textEdit:Dn.replace(this.getCompletionRange(i),a),kind:Hn.Keyword})}}var d={};d[this.currentWord]=!0;var p=this.textDocument.getText();if(this.styleSheet.accept((function(e){if(e.type===ee.SimpleSelector&&e.length>0){var t=p.substr(e.offset,e.length);return"."!==t.charAt(0)||d[t]||(d[t]=!0,n.items.push({label:t,textEdit:Dn.replace(r.getCompletionRange(i),t),kind:Hn.Keyword})),!1}return!0})),e&&e.isNested()){var h=e.getSelectors().findFirstChildBeforeOffset(this.offset);h&&0===e.getSelectors().getChildren().indexOf(h)&&this.getPropertyProposals(null,n)}return n},e.prototype.getCompletionsForDeclarations=function(e,t){if(!e||this.offset===e.offset)return t;var n=e.findFirstChildBeforeOffset(this.offset);if(!n)return this.getCompletionsForDeclarationProperty(null,t);if(n instanceof ge){var r=n;if(!an(r.colonPosition)||this.offset<=r.colonPosition)return this.getCompletionsForDeclarationProperty(r,t);if(an(r.semicolonPosition)&&r.semicolonPosition<this.offset)return this.offset===r.semicolonPosition+1?t:this.getCompletionsForDeclarationProperty(null,t);if(r instanceof ve)return this.getCompletionsForDeclarationValue(r,t)}else n instanceof at?this.getCompletionsForExtendsReference(n,null,t):(this.currentWord&&"@"===this.currentWord[0]||n instanceof he)&&this.getCompletionsForDeclarationProperty(null,t);return t},e.prototype.getCompletionsForVariableDeclaration=function(e,t){return this.offset&&an(e.colonPosition)&&this.offset>e.colonPosition&&this.getVariableProposals(e.getValue(),t),t},e.prototype.getCompletionsForExpression=function(e,t){var n=e.getParent();if(n instanceof ke)return this.getCompletionsForFunctionArgument(n,n.getParent(),t),t;var r=e.findParent(ee.Declaration);if(!r)return this.getTermProposals(void 0,null,t),t;var i=e.findChildAtOffset(this.offset,!0);return i?i instanceof rt||i instanceof le?this.getCompletionsForDeclarationValue(r,t):t:this.getCompletionsForDeclarationValue(r,t)},e.prototype.getCompletionsForFunctionArgument=function(e,t,n){var r=t.getIdentifier();return r&&r.matches("var")&&(t.getArguments().hasChildren()&&t.getArguments().getChild(0)!==e||this.getVariableProposalsForCSSVarFunction(n)),n},e.prototype.getCompletionsForFunctionDeclaration=function(e,t){var n=e.getDeclarations();return n&&this.offset>n.offset&&this.offset<n.end&&this.getTermProposals(void 0,null,t),t},e.prototype.getCompletionsForMixinReference=function(e,t){for(var n=this,r=0,i=this.getSymbolContext().findSymbolsAtOffset(this.offset,te.Mixin);r<i.length;r++){var o=i[r];o.node instanceof pt&&t.items.push(this.makeTermProposal(o,o.node.getParameters(),null))}var s=e.getIdentifier()||null;return this.completionParticipants.forEach((function(e){e.onCssMixinReference&&e.onCssMixinReference({mixinName:n.currentWord,range:n.getCompletionRange(s)})})),t},e.prototype.getTermProposals=function(e,t,n){for(var r=0,i=this.getSymbolContext().findSymbolsAtOffset(this.offset,te.Function);r<i.length;r++){var o=i[r];o.node instanceof Te&&n.items.push(this.makeTermProposal(o,o.node.getParameters(),t))}return n},e.prototype.makeTermProposal=function(e,t,n){e.node;var r=t.getChildren().map((function(e){return e instanceof Se?e.getName():e.getText()})),i=e.name+"("+r.map((function(e,t){return"${"+(t+1)+":"+e+"}"})).join(", ")+")";return{label:e.name,detail:e.name+"("+r.join(", ")+")",textEdit:Dn.replace(this.getCompletionRange(n),i),insertTextFormat:Yr,kind:Hn.Function,sortText:Gr.Term}},e.prototype.getCompletionsForSupportsCondition=function(e,t){var n=e.findFirstChildBeforeOffset(this.offset);if(n){if(n instanceof ve)return!an(n.colonPosition)||this.offset<=n.colonPosition?this.getCompletionsForDeclarationProperty(n,t):this.getCompletionsForDeclarationValue(n,t);if(n instanceof Ke)return this.getCompletionsForSupportsCondition(n,t)}return an(e.lParent)&&this.offset>e.lParent&&(!an(e.rParent)||this.offset<=e.rParent)?this.getCompletionsForDeclarationProperty(null,t):t},e.prototype.getCompletionsForSupports=function(e,t){var n=e.getDeclarations();if(!n||this.offset<=n.offset){var r=e.findFirstChildBeforeOffset(this.offset);return r instanceof Ke?this.getCompletionsForSupportsCondition(r,t):t}return this.getCompletionForTopLevel(t)},e.prototype.getCompletionsForExtendsReference=function(e,t,n){return n},e.prototype.getCompletionForUriLiteralValue=function(e,t){var n,r,i;if(e.hasChildren()){var o=e.getChild(0);n=o.getText(),r=this.position,i=this.getCompletionRange(o)}else{n="",r=this.position;var s=this.textDocument.positionAt(e.offset+"url(".length);i=un.create(s,s)}return this.completionParticipants.forEach((function(e){e.onCssURILiteralValue&&e.onCssURILiteralValue({uriValue:n,position:r,range:i})})),t},e.prototype.getCompletionForImportPath=function(e,t){var n=this;return this.completionParticipants.forEach((function(t){t.onCssImportPath&&t.onCssImportPath({pathValue:e.getText(),position:n.position,range:n.getCompletionRange(e)})})),t},e.prototype.hasCharacterAtPosition=function(e,t){var n=this.textDocument.getText();return e>=0&&e<n.length&&n.charAt(e)===t},e.prototype.doesSupportMarkdown=function(){var e,t,n;if(!an(this.supportsMarkdown)){if(!an(this.lsOptions.clientCapabilities))return this.supportsMarkdown=!0,this.supportsMarkdown;var r=null===(n=null===(t=null===(e=this.lsOptions.clientCapabilities.textDocument)||void 0===e?void 0:e.completion)||void 0===t?void 0:t.completionItem)||void 0===n?void 0:n.documentationFormat;this.supportsMarkdown=Array.isArray(r)&&-1!==r.indexOf(Gn.Markdown)}return this.supportsMarkdown},e}();function Qr(e){return!(!e.status||"nonstandard"!==e.status&&"obsolete"!==e.status)}var ei=function(){function e(){this.entries={}}return e.prototype.add=function(e){this.entries[e]=!0},e.prototype.getEntries=function(){return Object.keys(this.entries)},e}();function ti(e){return e.replace(/\(\)$/,"($1)")}var ni=function(){function e(e,t){this.entries=e,this.currentOffset=t}return e.prototype.visitNode=function(e){return(e instanceof Qe||e instanceof xe&&At(e))&&(this.currentOffset<e.offset||e.end<this.currentOffset)&&this.entries.add(e.getText()),!0},e}();function ri(e){return e.toLowerCase()in Pt||/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e)}var ii,oi=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),si=wt(),ai=function(){function e(){this.parent=null,this.children=null,this.attributes=null}return e.prototype.findAttribute=function(e){if(this.attributes)for(var t=0,n=this.attributes;t<n.length;t++){var r=n[t];if(r.name===e)return r.value}return null},e.prototype.addChild=function(t){t instanceof e&&(t.parent=this),this.children||(this.children=[]),this.children.push(t)},e.prototype.append=function(e){if(this.attributes){var t=this.attributes[this.attributes.length-1];t.value=t.value+e}},e.prototype.prepend=function(e){if(this.attributes){var t=this.attributes[0];t.value=e+t.value}},e.prototype.findRoot=function(){for(var e=this;e.parent&&!(e.parent instanceof li);)e=e.parent;return e},e.prototype.removeChild=function(e){if(this.children){var t=this.children.indexOf(e);if(-1!==t)return this.children.splice(t,1),!0}return!1},e.prototype.addAttr=function(e,t){this.attributes||(this.attributes=[]);for(var n=0,r=this.attributes;n<r.length;n++){var i=r[n];if(i.name===e)return void(i.value+=" "+t)}this.attributes.push({name:e,value:t})},e.prototype.clone=function(t){void 0===t&&(t=!0);var n=new e;if(this.attributes){n.attributes=[];for(var r=0,i=this.attributes;r<i.length;r++){var o=i[r];n.addAttr(o.name,o.value)}}if(t&&this.children){n.children=[];for(var s=0;s<this.children.length;s++)n.addChild(this.children[s].clone())}return n},e.prototype.cloneWithParent=function(){var e=this.clone(!1);!this.parent||this.parent instanceof li||this.parent.cloneWithParent().addChild(e);return e},e}(),li=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return oi(t,e),t}(ai),ci=function(e){function t(t){var n=e.call(this)||this;return n.addAttr("name",t),n}return oi(t,e),t}(ai),di=function(){function e(e){this.quote=e,this.result=[]}return e.prototype.print=function(e){return this.result=[],e instanceof li?e.children&&this.doPrint(e.children,0):this.doPrint([e],0),[{language:"html",value:this.result.join("\n")}]},e.prototype.doPrint=function(e,t){for(var n=0,r=e;n<r.length;n++){var i=r[n];this.doPrintElement(i,t),i.children&&this.doPrint(i.children,t+1)}},e.prototype.writeLine=function(e,t){var n=new Array(e+1).join(" ");this.result.push(n+t)},e.prototype.doPrintElement=function(e,t){var n=e.findAttribute("name");if(e instanceof ci||"\u2026"===n)this.writeLine(t,n);else{var r=["<"];if(n?r.push(n):r.push("element"),e.attributes)for(var i=0,o=e.attributes;i<o.length;i++){var s=o[i];if("name"!==s.name){r.push(" "),r.push(s.name);var a=s.value;a&&(r.push("="),r.push(ii.ensure(a,this.quote)))}}r.push(">"),this.writeLine(t,r.join(""))}},e}();!function(e){function t(e){var t=e.match(/^['"](.*)["']$/);return t?t[1]:e}e.ensure=function(e,n){return n+t(e)+n},e.remove=t}(ii||(ii={}));var pi=function(){this.id=0,this.attr=0,this.tag=0};function hi(e,t){for(var n=new ai,r=0,i=e.getChildren();r<i.length;r++){var o=i[r];switch(o.type){case ee.SelectorCombinator:if(t){var s=o.getText().split("&");if(1===s.length){n.addAttr("name",s[0]);break}if(n=t.cloneWithParent(),s[0])n.findRoot().prepend(s[0]);for(var a=1;a<s.length;a++){if(a>1){var l=t.cloneWithParent();n.addChild(l.findRoot()),n=l}n.append(s[a])}}break;case ee.SelectorPlaceholder:if(o.matches("@at-root"))return n;case ee.ElementNameSelector:var c=o.getText();n.addAttr("name","*"===c?"element":mi(c));break;case ee.ClassSelector:n.addAttr("class",mi(o.getText().substring(1)));break;case ee.IdentifierSelector:n.addAttr("id",mi(o.getText().substring(1)));break;case ee.MixinDeclaration:n.addAttr("class",o.getName());break;case ee.PseudoSelector:n.addAttr(mi(o.getText()),"");break;case ee.AttributeSelector:var d=o,p=d.getIdentifier();if(p){var h=d.getValue(),m=d.getOperator(),u=void 0;if(h&&m)switch(mi(m.getText())){case"|=":u=ii.remove(mi(h.getText()))+"-\u2026";break;case"^=":u=ii.remove(mi(h.getText()))+"\u2026";break;case"$=":u="\u2026"+ii.remove(mi(h.getText()));break;case"~=":u=" \u2026 "+ii.remove(mi(h.getText()))+" \u2026 ";break;case"*=":u="\u2026"+ii.remove(mi(h.getText()))+"\u2026";break;default:u=ii.remove(mi(h.getText()))}n.addAttr(mi(p.getText()),u)}}}return n}function mi(e){var t=new X;t.setSource(e);var n=t.scanUnquotedString();return n?n.text:e}var ui=function(){function e(e){this.cssDataManager=e}return e.prototype.selectorToMarkedString=function(e){var t=function(e){if(e.matches("@at-root"))return null;var t=new li,n=[],r=e.getParent();if(r instanceof he)for(var i=r.getParent();i&&!gi(i);){if(i instanceof he){if(i.getSelectors().matches("@at-root"))break;n.push(i)}i=i.getParent()}for(var o=new fi(t),s=n.length-1;s>=0;s--){var a=n[s].getSelectors().getChild(0);a&&o.processSelector(a)}return o.processSelector(e),t}(e);if(t){var n=new di('"').print(t);return n.push(this.selectorToSpecificityMarkedString(e)),n}return[]},e.prototype.simpleSelectorToMarkedString=function(e){var t=hi(e),n=new di('"').print(t);return n.push(this.selectorToSpecificityMarkedString(e)),n},e.prototype.isPseudoElementIdentifier=function(e){var t=e.match(/^::?([\w-]+)/);return!!t&&!!this.cssDataManager.getPseudoElement("::"+t[1])},e.prototype.selectorToSpecificityMarkedString=function(e){var t=this,n=new pi;return function e(r){for(var i=0,o=r.getChildren();i<o.length;i++){var s=o[i];switch(s.type){case ee.IdentifierSelector:n.id++;break;case ee.ClassSelector:case ee.AttributeSelector:n.attr++;break;case ee.ElementNameSelector:if(s.matches("*"))break;n.tag++;break;case ee.PseudoSelector:var a=s.getText();if(t.isPseudoElementIdentifier(a))n.tag++;else{if(a.match(/^:not/i))break;n.attr++}}s.getChildren().length>0&&e(s)}}(e),si("specificity","[Selector Specificity](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity): ({0}, {1}, {2})",n.id,n.attr,n.tag)},e}(),fi=function(){function e(e){this.prev=null,this.element=e}return e.prototype.processSelector=function(e){var t=null;if(!(this.element instanceof li)&&e.getChildren().some((function(e){return e.hasChildren()&&e.getChild(0).type===ee.SelectorCombinator}))){var n=this.element.findRoot();n.parent instanceof li&&(t=this.element,this.element=n.parent,this.element.removeChild(n),this.prev=null)}for(var r=0,i=e.getChildren();r<i.length;r++){var o=i[r];if(o instanceof ue){if(this.prev instanceof ue){var s=new ci("\u2026");this.element.addChild(s),this.element=s}else this.prev&&(this.prev.matches("+")||this.prev.matches("~"))&&this.element.parent&&(this.element=this.element.parent);this.prev&&this.prev.matches("~")&&this.element.addChild(new ci("\u22ee"));var a=hi(o,t),l=a.findRoot();this.element.addChild(l),this.element=a}(o instanceof ue||o.type===ee.SelectorCombinatorParent||o.type===ee.SelectorCombinatorShadowPiercingDescendant||o.type===ee.SelectorCombinatorSibling||o.type===ee.SelectorCombinatorAllSiblings)&&(this.prev=o)}},e}();function gi(e){switch(e.type){case ee.MixinDeclaration:case ee.Stylesheet:return!0}return!1}!function(){function e(e,t){this.clientCapabilities=e,this.cssDataManager=t,this.selectorPrinting=new ui(t)}e.prototype.configure=function(e){this.defaultSettings=e},e.prototype.doHover=function(e,t,n,r){function i(t){return un.create(e.positionAt(t.offset),e.positionAt(t.end))}void 0===r&&(r=this.defaultSettings);for(var o=ie(n,e.offsetAt(t)),s=null,a=0;a<o.length;a++){var l=o[a];if(l instanceof me){s={contents:this.selectorPrinting.selectorToMarkedString(l),range:i(l)};break}if(l instanceof ue){Y(l.getText(),"@")||(s={contents:this.selectorPrinting.simpleSelectorToMarkedString(l),range:i(l)});break}if(l instanceof ve){var c=l.getFullPropertyName();(p=this.cssDataManager.getProperty(c))&&(s=(h=Et(p,this.doesSupportMarkdown(),r))?{contents:h,range:i(l)}:null)}else if(l instanceof ht){var d=l.getText();(p=this.cssDataManager.getAtDirective(d))&&(s=(h=Et(p,this.doesSupportMarkdown(),r))?{contents:h,range:i(l)}:null)}else if(l instanceof se&&l.type===ee.PseudoSelector){var p,h,m=l.getText();(p="::"===m.slice(0,2)?this.cssDataManager.getPseudoElement(m):this.cssDataManager.getPseudoClass(m))&&(s=(h=Et(p,this.doesSupportMarkdown(),r))?{contents:h,range:i(l)}:null)}else;}return s&&(s.contents=this.convertContents(s.contents)),s},e.prototype.convertContents=function(e){return this.doesSupportMarkdown()||"string"===typeof e?e:"kind"in e?{kind:"plaintext",value:e.value}:Array.isArray(e)?e.map((function(e){return"string"===typeof e?e:e.value})):e.value},e.prototype.doesSupportMarkdown=function(){if(!an(this.supportsMarkdown)){if(!an(this.clientCapabilities))return this.supportsMarkdown=!0,this.supportsMarkdown;var e=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.hover;this.supportsMarkdown=e&&e.contentFormat&&Array.isArray(e.contentFormat)&&-1!==e.contentFormat.indexOf(Gn.Markdown)}return this.supportsMarkdown}}();var bi=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{l(r.next(e))}catch(t){o(t)}}function a(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))},vi=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(a){o=[6,a],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}},yi=wt(),wi=function(){function e(e){this.fileSystemProvider=e}return e.prototype.findDefinition=function(e,t,n){var r=new Vn(n),i=re(n,e.offsetAt(t));if(!i)return null;var o=r.findSymbolFromNode(i);return o?{uri:e.uri,range:xi(o.node,e)}:null},e.prototype.findReferences=function(e,t,n){return this.findDocumentHighlights(e,t,n).map((function(t){return{uri:e.uri,range:t.range}}))},e.prototype.findDocumentHighlights=function(e,t,n){var r=[],i=re(n,e.offsetAt(t));if(!i||i.type===ee.Stylesheet||i.type===ee.Declarations)return r;i.type===ee.Identifier&&i.parent&&i.parent.type===ee.ClassSelector&&(i=i.parent);var o=new Vn(n),s=o.findSymbolFromNode(i),a=i.getText();return n.accept((function(t){if(s){if(o.matchesSymbol(t,s))return r.push({kind:Si(t),range:xi(t,e)}),!1}else i&&i.type===t.type&&t.matches(a)&&r.push({kind:Si(t),range:xi(t,e)});return!0})),r},e.prototype.isRawStringDocumentLinkNode=function(e){return e.type===ee.Import},e.prototype.findDocumentLinks=function(e,t,n){for(var r=this.findUnresolvedLinks(e,t),i=0;i<r.length;i++){var o=r[i].target;if(o&&!/^\w+:\/\//g.test(o)){var s=n.resolveReference(o,e.uri);s&&(r[i].target=s)}}return r},e.prototype.findDocumentLinks2=function(e,t,n){return bi(this,void 0,void 0,(function(){var r,i,o,s,a,l,c;return vi(this,(function(d){switch(d.label){case 0:r=this.findUnresolvedLinks(e,t),i=[],o=0,s=r,d.label=1;case 1:return o<s.length?(a=s[o],!(l=a.target)||/^\w+:\/\//g.test(l)?[3,3]:[4,this.resolveRelativeReference(l,e.uri,n)]):[3,5];case 2:return void 0!==(c=d.sent())&&(a.target=c,i.push(a)),[3,4];case 3:i.push(a),d.label=4;case 4:return o++,[3,1];case 5:return[2,i]}}))}))},e.prototype.findUnresolvedLinks=function(e,t){var n=this,r=[],i=function(t){var n=t.getText(),i=xi(t,e);i.start.line===i.end.line&&i.start.character===i.end.character||((Y(n,"'")||Y(n,'"'))&&(n=n.slice(1,-1)),r.push({target:n,range:i}))};return t.accept((function(e){if(e.type===ee.URILiteral){var t=e.getChild(0);return t&&i(t),!1}if(e.parent&&n.isRawStringDocumentLinkNode(e.parent)){var r=e.getText();return(Y(r,"'")||Y(r,'"'))&&i(e),!1}return!0})),r},e.prototype.findDocumentSymbols=function(e,t){var n=[];return t.accept((function(t){var r={name:null,kind:lr.Class,location:null},i=t;if(t instanceof me)return r.name=t.getText(),(i=t.findAParent(ee.Ruleset,ee.ExtendsReference))&&(r.location=fn.create(e.uri,xi(i,e)),n.push(r)),!1;if(t instanceof it)r.name=t.getName(),r.kind=lr.Variable;else if(t instanceof pt)r.name=t.getName(),r.kind=lr.Method;else if(t instanceof Te)r.name=t.getName(),r.kind=lr.Function;else if(t instanceof Pe)r.name=yi("literal.keyframes","@keyframes {0}",t.getName());else if(t instanceof Ie)r.name=yi("literal.fontface","@font-face");else if(t instanceof Ue){var o=t.getChild(0);o instanceof $e&&(r.name="@media "+o.getText(),r.kind=lr.Module)}return r.name&&(r.location=fn.create(e.uri,xi(i,e)),n.push(r)),!0})),n},e.prototype.findDocumentColors=function(e,t){var n=[];return t.accept((function(t){var r=function(e,t){var n=$t(e);if(n){return{color:n,range:xi(e,t)}}return null}(t,e);return r&&n.push(r),!0})),n},e.prototype.getColorPresentations=function(e,t,n,r){var i,o=[],s=Math.round(255*n.red),a=Math.round(255*n.green),l=Math.round(255*n.blue);i=1===n.alpha?"rgb("+s+", "+a+", "+l+")":"rgba("+s+", "+a+", "+l+", "+n.alpha+")",o.push({label:i,textEdit:Dn.replace(r,i)}),i=1===n.alpha?"#"+ki(s)+ki(a)+ki(l):"#"+ki(s)+ki(a)+ki(l)+ki(Math.round(255*n.alpha)),o.push({label:i,textEdit:Dn.replace(r,i)});var c=function(e){var t=e.red,n=e.green,r=e.blue,i=e.alpha,o=Math.max(t,n,r),s=Math.min(t,n,r),a=0,l=0,c=(s+o)/2,d=o-s;if(d>0){switch(l=Math.min(c<=.5?d/(2*c):d/(2-2*c),1),o){case t:a=(n-r)/d+(n<r?6:0);break;case n:a=(r-t)/d+2;break;case r:a=(t-n)/d+4}a*=60,a=Math.round(a)}return{h:a,s:l,l:c,a:i}}(n);return i=1===c.a?"hsl("+c.h+", "+Math.round(100*c.s)+"%, "+Math.round(100*c.l)+"%)":"hsla("+c.h+", "+Math.round(100*c.s)+"%, "+Math.round(100*c.l)+"%, "+c.a+")",o.push({label:i,textEdit:Dn.replace(r,i)}),o},e.prototype.doRename=function(e,t,n,r){var i,o=this.findDocumentHighlights(e,t,r).map((function(e){return Dn.replace(e.range,n)}));return{changes:(i={},i[e.uri]=o,i)}},e.prototype.resolveRelativeReference=function(e,t,n){return bi(this,void 0,void 0,(function(){var r,i,o,s,a;return vi(this,(function(l){switch(l.label){case 0:return"~"===e[0]&&"/"!==e[1]&&this.fileSystemProvider?(e=e.substring(1),Y(t,"file://")?(r=function(e){if("@"===e[0])return e.substring(0,e.indexOf("/",e.indexOf("/")+1));return e.substring(0,e.indexOf("/"))}(e),i=n.resolveReference("/",t),o=Or(t),[4,this.resolvePathToModule(r,o,i)]):[3,2]):[3,3];case 1:if(s=l.sent())return a=e.substring(r.length+1),[2,Wr(s,a)];l.label=2;case 2:case 3:return[2,n.resolveReference(e,t)]}}))}))},e.prototype.resolvePathToModule=function(e,t,n){return bi(this,void 0,void 0,(function(){var r;return vi(this,(function(i){switch(i.label){case 0:return r=Wr(t,"node_modules",e,"package.json"),[4,this.fileExists(r)];case 1:return i.sent()?[2,Or(r)]:n&&t.startsWith(n)&&t.length!==n.length?[2,this.resolvePathToModule(e,Or(t),n)]:[2,void 0]}}))}))},e.prototype.fileExists=function(e){return bi(this,void 0,void 0,(function(){var t;return vi(this,(function(n){switch(n.label){case 0:if(!this.fileSystemProvider)return[2,!1];n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this.fileSystemProvider.stat(e)];case 2:return(t=n.sent()).type===Er.Unknown&&-1===t.size?[2,!1]:[2,!0];case 3:return n.sent(),[2,!1];case 4:return[2]}}))}))},e}();function xi(e,t){return un.create(t.positionAt(e.offset),t.positionAt(e.end))}function Si(e){if(e.type===ee.Selector)return sr.Write;if(e instanceof le&&e.parent&&e.parent instanceof we&&e.isCustomProperty)return sr.Write;if(e.parent)switch(e.parent.type){case ee.FunctionDeclaration:case ee.MixinDeclaration:case ee.Keyframe:case ee.VariableDeclaration:case ee.FunctionParameter:return sr.Write}return sr.Read}function ki(e){var t=e.toString(16);return 2!==t.length?"0"+t:t}var Ci=wt(),Fi=oe.Warning,Ei=oe.Error,zi=oe.Ignore,Di=function(e,t,n){this.id=e,this.message=t,this.defaultValue=n},Ti=function(e,t,n){this.id=e,this.message=t,this.defaultValue=n},Ri={AllVendorPrefixes:new Di("compatibleVendorPrefixes",Ci("rule.vendorprefixes.all","When using a vendor-specific prefix make sure to also include all other vendor-specific properties"),zi),IncludeStandardPropertyWhenUsingVendorPrefix:new Di("vendorPrefix",Ci("rule.standardvendorprefix.all","When using a vendor-specific prefix also include the standard property"),Fi),DuplicateDeclarations:new Di("duplicateProperties",Ci("rule.duplicateDeclarations","Do not use duplicate style definitions"),zi),EmptyRuleSet:new Di("emptyRules",Ci("rule.emptyRuleSets","Do not use empty rulesets"),Fi),ImportStatemement:new Di("importStatement",Ci("rule.importDirective","Import statements do not load in parallel"),zi),BewareOfBoxModelSize:new Di("boxModel",Ci("rule.bewareOfBoxModelSize","Do not use width or height when using padding or border"),zi),UniversalSelector:new Di("universalSelector",Ci("rule.universalSelector","The universal selector (*) is known to be slow"),zi),ZeroWithUnit:new Di("zeroUnits",Ci("rule.zeroWidthUnit","No unit for zero needed"),zi),RequiredPropertiesForFontFace:new Di("fontFaceProperties",Ci("rule.fontFaceProperties","@font-face rule must define 'src' and 'font-family' properties"),Fi),HexColorLength:new Di("hexColorLength",Ci("rule.hexColor","Hex colors must consist of three, four, six or eight hex numbers"),Ei),ArgsInColorFunction:new Di("argumentsInColorFunction",Ci("rule.colorFunction","Invalid number of parameters"),Ei),UnknownProperty:new Di("unknownProperties",Ci("rule.unknownProperty","Unknown property."),Fi),UnknownAtRules:new Di("unknownAtRules",Ci("rule.unknownAtRules","Unknown at-rule."),Fi),IEStarHack:new Di("ieHack",Ci("rule.ieHack","IE hacks are only necessary when supporting IE7 and older"),zi),UnknownVendorSpecificProperty:new Di("unknownVendorSpecificProperties",Ci("rule.unknownVendorSpecificProperty","Unknown vendor specific property."),zi),PropertyIgnoredDueToDisplay:new Di("propertyIgnoredDueToDisplay",Ci("rule.propertyIgnoredDueToDisplay","Property is ignored due to the display."),Fi),AvoidImportant:new Di("important",Ci("rule.avoidImportant","Avoid using !important. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored."),zi),AvoidFloat:new Di("float",Ci("rule.avoidFloat","Avoid using 'float'. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes."),zi),AvoidIdSelector:new Di("idSelector",Ci("rule.avoidIdSelector","Selectors should not contain IDs because these rules are too tightly coupled with the HTML."),zi)},Ii={ValidProperties:new Ti("validProperties",Ci("rule.validProperties","A list of properties that are not validated against the `unknownProperties` rule."),[])},Mi=function(){function e(e){void 0===e&&(e={}),this.conf=e}return e.prototype.getRule=function(e){if(this.conf.hasOwnProperty(e.id)){var t=function(e){switch(e){case"ignore":return oe.Ignore;case"warning":return oe.Warning;case"error":return oe.Error}return null}(this.conf[e.id]);if(t)return t}return e.defaultValue},e.prototype.getSetting=function(e){return this.conf[e.id]},e}();var Pi=wt(),_i=(function(){function e(e){this.cssDataManager=e}e.prototype.doCodeActions=function(e,t,n,r){return this.doCodeActions2(e,t,n,r).map((function(t){var n=t.edit&&t.edit.documentChanges&&t.edit.documentChanges[0];return zn.create(t.title,"_css.applyCodeAction",e.uri,e.version,n&&n.edits)}))},e.prototype.doCodeActions2=function(e,t,n,r){var i=[];if(n.diagnostics)for(var o=0,s=n.diagnostics;o<s.length;o++){var a=s[o];this.appendFixesForMarker(e,r,a,i)}return i},e.prototype.getFixesForUnknownProperty=function(e,t,n,r){var i=t.getName(),o=[];this.cssDataManager.getProperties().forEach((function(e){var t=function(e,t,n){void 0===n&&(n=4);var r=Math.abs(e.length-t.length);if(r>n)return 0;var i,o,s=[],a=[];for(i=0;i<t.length+1;++i)a.push(0);for(i=0;i<e.length+1;++i)s.push(a);for(i=1;i<e.length+1;++i)for(o=1;o<t.length+1;++o)e[i-1]===t[o-1]?s[i][o]=s[i-1][o-1]+1:s[i][o]=Math.max(s[i-1][o],s[i][o-1]);return s[e.length][t.length]-Math.sqrt(r)}(i,e.name);t>=i.length/2&&o.push({property:e.name,score:t})})),o.sort((function(e,t){return t.score-e.score||e.property.localeCompare(t.property)}));for(var s=3,a=0,l=o;a<l.length;a++){var c=l[a].property,d=Pi("css.codeaction.rename","Rename to '{0}'",c),p=Dn.replace(n.range,c),h=$n.create(e.uri,e.version),m={documentChanges:[Mn.create(h,[p])]},u=ur.create(d,m,hr.QuickFix);if(u.diagnostics=[n],r.push(u),--s<=0)return}},e.prototype.appendFixesForMarker=function(e,t,n,r){if(n.code===Ri.UnknownProperty.id)for(var i=e.offsetAt(n.range.start),o=e.offsetAt(n.range.end),s=ie(t,i),a=s.length-1;a>=0;a--){var l=s[a];if(l instanceof ve){var c=l.getProperty();if(c&&c.offset===i&&c.end===o)return void this.getFixesForUnknownProperty(e,c,n,r)}}}}(),function(e){this.fullPropertyName=e.getFullPropertyName().toLowerCase(),this.node=e});function Ni(e,t,n,r){var i=e[t];i.value=n,n&&(cn(i.properties,r)||i.properties.push(r))}function Ai(e,t,n,r){"top"===t||"right"===t||"bottom"===t||"left"===t?Ni(e,t,n,r):function(e,t,n){Ni(e,"top",t,n),Ni(e,"right",t,n),Ni(e,"bottom",t,n),Ni(e,"left",t,n)}(e,n,r)}function Oi(e,t,n){switch(t.length){case 1:Ai(e,void 0,t[0],n);break;case 2:Ai(e,"top",t[0],n),Ai(e,"bottom",t[0],n),Ai(e,"right",t[1],n),Ai(e,"left",t[1],n);break;case 3:Ai(e,"top",t[0],n),Ai(e,"right",t[1],n),Ai(e,"left",t[1],n),Ai(e,"bottom",t[2],n);break;case 4:Ai(e,"top",t[0],n),Ai(e,"right",t[1],n),Ai(e,"bottom",t[2],n),Ai(e,"left",t[3],n)}}function Wi(e,t){for(var n=0,r=t;n<r.length;n++){var i=r[n];if(e.matches(i))return!0}return!1}function Li(e,t){return void 0===t&&(t=!0),(!t||!Wi(e,["initial","unset"]))&&0!==parseFloat(e.getText())}function ji(e,t){return void 0===t&&(t=!0),e.map((function(e){return Li(e,t)}))}function Ui(e,t){return void 0===t&&(t=!0),!Wi(e,["none","hidden"])&&(!t||!Wi(e,["initial","unset"]))}function Vi(e,t){return void 0===t&&(t=!0),e.map((function(e){return Ui(e,t)}))}function Bi(e){var t=e.getChildren();if(1===t.length)return Li(i=t[0])&&Ui(i);for(var n=0,r=t;n<r.length;n++){var i;if(!Li(i=r[n],!1)||!Ui(i,!1))return!1}return!0}var $i=wt(),qi=function(){function e(){this.data={}}return e.prototype.add=function(e,t,n){var r=this.data[e];r||(r={nodes:[],names:[]},this.data[e]=r),r.names.push(t),n&&r.nodes.push(n)},e}(),Ki=function(){function e(e,t,n){var r=this;this.cssDataManager=n,this.warnings=[],this.settings=t,this.documentText=e.getText(),this.keyframes=new qi,this.validProperties={};var i=t.getSetting(Ii.ValidProperties);Array.isArray(i)&&i.forEach((function(e){if("string"===typeof e){var t=e.trim().toLowerCase();t.length&&(r.validProperties[t]=!0)}}))}return e.entries=function(t,n,r,i,o){var s=new e(n,r,i);return t.acceptVisitor(s),s.completeValidations(),s.getEntries(o)},e.prototype.isValidPropertyDeclaration=function(e){var t=e.fullPropertyName;return this.validProperties[t]},e.prototype.fetch=function(e,t){for(var n=[],r=0,i=e;r<i.length;r++){var o=i[r];o.fullPropertyName===t&&n.push(o)}return n},e.prototype.fetchWithValue=function(e,t,n){for(var r=[],i=0,o=e;i<o.length;i++){var s=o[i];if(s.fullPropertyName===t){var a=s.node.getValue();a&&this.findValueInExpression(a,n)&&r.push(s)}}return r},e.prototype.findValueInExpression=function(e,t){var n=!1;return e.accept((function(e){return e.type===ee.Identifier&&e.matches(t)&&(n=!0),!n})),n},e.prototype.getEntries=function(e){return void 0===e&&(e=oe.Warning|oe.Error),this.warnings.filter((function(t){return 0!==(t.getLevel()&e)}))},e.prototype.addEntry=function(e,t,n){var r=new bt(e,t,this.settings.getRule(t),n);this.warnings.push(r)},e.prototype.getMissingNames=function(e,t){for(var n=e.slice(0),r=0;r<t.length;r++){var i=n.indexOf(t[r]);-1!==i&&(n[i]=null)}var o=null;for(r=0;r<n.length;r++){var s=n[r];s&&(o=null===o?$i("namelist.single","'{0}'",s):$i("namelist.concatenated","{0}, '{1}'",o,s))}return o},e.prototype.visitNode=function(e){switch(e.type){case ee.UnknownAtRule:return this.visitUnknownAtRule(e);case ee.Keyframe:return this.visitKeyframe(e);case ee.FontFace:return this.visitFontFace(e);case ee.Ruleset:return this.visitRuleSet(e);case ee.SimpleSelector:return this.visitSimpleSelector(e);case ee.Function:return this.visitFunction(e);case ee.NumericValue:return this.visitNumericValue(e);case ee.Import:return this.visitImport(e);case ee.HexColorValue:return this.visitHexColorValue(e);case ee.Prio:return this.visitPrio(e);case ee.IdentifierSelector:return this.visitIdentifierSelector(e)}return!0},e.prototype.completeValidations=function(){this.validateKeyframes()},e.prototype.visitUnknownAtRule=function(e){var t=e.getChild(0);return!!t&&(!this.cssDataManager.getAtDirective(t.getText())&&(this.addEntry(t,Ri.UnknownAtRules,"Unknown at rule "+t.getText()),!0))},e.prototype.visitKeyframe=function(e){var t=e.getKeyword();if(!t)return!1;var n=t.getText();return this.keyframes.add(e.getName(),n,"@keyframes"!==n?t:null),!0},e.prototype.validateKeyframes=function(){var e=["@-webkit-keyframes","@-moz-keyframes","@-o-keyframes"];for(var t in this.keyframes.data){var n=this.keyframes.data[t].names,r=-1===n.indexOf("@keyframes");if(r||1!==n.length){var i=this.getMissingNames(e,n);if(i||r)for(var o=0,s=this.keyframes.data[t].nodes;o<s.length;o++){var a=s[o];if(r){var l=$i("keyframes.standardrule.missing","Always define standard rule '@keyframes' when defining keyframes.");this.addEntry(a,Ri.IncludeStandardPropertyWhenUsingVendorPrefix,l)}if(i){l=$i("keyframes.vendorspecific.missing","Always include all vendor specific rules: Missing: {0}",i);this.addEntry(a,Ri.AllVendorPrefixes,l)}}}}return!0},e.prototype.visitSimpleSelector=function(e){var t=this.documentText.charAt(e.offset);return 1===e.length&&"*"===t&&this.addEntry(e,Ri.UniversalSelector),!0},e.prototype.visitIdentifierSelector=function(e){return this.addEntry(e,Ri.AvoidIdSelector),!0},e.prototype.visitImport=function(e){return this.addEntry(e,Ri.ImportStatemement),!0},e.prototype.visitRuleSet=function(t){var n=t.getDeclarations();if(!n)return!1;n.hasChildren()||this.addEntry(t.getSelectors(),Ri.EmptyRuleSet);for(var r=[],i=0,o=n.getChildren();i<o.length;i++){(v=o[i])instanceof ve&&r.push(new _i(v))}var s=function(e){for(var t={top:{value:!1,properties:[]},right:{value:!1,properties:[]},bottom:{value:!1,properties:[]},left:{value:!1,properties:[]}},n=0,r=e;n<r.length;n++){var i=r[n],o=i.node.value;if("undefined"!==typeof o)switch(i.fullPropertyName){case"box-sizing":return{top:{value:!1,properties:[]},right:{value:!1,properties:[]},bottom:{value:!1,properties:[]},left:{value:!1,properties:[]}};case"width":t.width=i;break;case"height":t.height=i;break;default:var s=i.fullPropertyName.split("-");switch(s[0]){case"border":switch(s[1]){case void 0:case"top":case"right":case"bottom":case"left":switch(s[2]){case void 0:Ai(t,s[1],Bi(o),i);break;case"width":Ai(t,s[1],Li(o,!1),i);break;case"style":Ai(t,s[1],Ui(o,!0),i)}break;case"width":Oi(t,ji(o.getChildren(),!1),i);break;case"style":Oi(t,Vi(o.getChildren(),!0),i)}break;case"padding":1===s.length?Oi(t,ji(o.getChildren(),!0),i):Ai(t,s[1],Li(o,!0),i)}}}return t}(r);if(s.width){var a=[];if(s.right.value&&(a=dn(a,s.right.properties)),s.left.value&&(a=dn(a,s.left.properties)),0!==a.length){for(var l=0,c=a;l<c.length;l++){var d=c[l];this.addEntry(d.node,Ri.BewareOfBoxModelSize)}this.addEntry(s.width.node,Ri.BewareOfBoxModelSize)}}if(s.height){a=[];if(s.top.value&&(a=dn(a,s.top.properties)),s.bottom.value&&(a=dn(a,s.bottom.properties)),0!==a.length){for(var p=0,h=a;p<h.length;p++){d=h[p];this.addEntry(d.node,Ri.BewareOfBoxModelSize)}this.addEntry(s.height.node,Ri.BewareOfBoxModelSize)}}var m=this.fetchWithValue(r,"display","inline-block");if(m.length>0)for(var u=this.fetch(r,"float"),f=0;f<u.length;f++){var g=u[f].node;(w=g.getValue())&&!w.matches("none")&&this.addEntry(g,Ri.PropertyIgnoredDueToDisplay,$i("rule.propertyIgnoredDueToDisplayInlineBlock","inline-block is ignored due to the float. If 'float' has a value other than 'none', the box is floated and 'display' is treated as 'block'"))}if((m=this.fetchWithValue(r,"display","block")).length>0)for(u=this.fetch(r,"vertical-align"),f=0;f<u.length;f++)this.addEntry(u[f].node,Ri.PropertyIgnoredDueToDisplay,$i("rule.propertyIgnoredDueToDisplayBlock","Property is ignored due to the display. With 'display: block', vertical-align should not be used."));var b=this.fetch(r,"float");for(f=0;f<b.length;f++){var v=b[f];this.isValidPropertyDeclaration(v)||this.addEntry(v.node,Ri.AvoidFloat)}for(var y=0;y<r.length;y++){var w;if("background"!==(v=r[y]).fullPropertyName&&!this.validProperties[v.fullPropertyName])if((w=v.node.getValue())&&"-"!==this.documentText.charAt(w.offset)){var x=this.fetch(r,v.fullPropertyName);if(x.length>1)for(var S=0;S<x.length;S++){var k=x[S].node.getValue();k&&"-"!==this.documentText.charAt(k.offset)&&x[S]!==v&&this.addEntry(v.node,Ri.DuplicateDeclarations)}}}if(!t.getSelectors().matches(":export")){for(var C=new qi,F=!1,E=0,z=r;E<z.length;E++){var D=(v=z[E]).node;if(this.isCSSDeclaration(D)){var T=v.fullPropertyName,R=T.charAt(0);if("-"===R){if("-"!==T.charAt(1)){this.cssDataManager.isKnownProperty(T)||this.validProperties[T]||this.addEntry(D.getProperty(),Ri.UnknownVendorSpecificProperty);var I=D.getNonPrefixedPropertyName();C.add(I,T,D.getProperty())}}else{var M=T;"*"!==R&&"_"!==R||(this.addEntry(D.getProperty(),Ri.IEStarHack),T=T.substr(1)),this.cssDataManager.isKnownProperty(M)||this.cssDataManager.isKnownProperty(T)||this.validProperties[T]||this.addEntry(D.getProperty(),Ri.UnknownProperty,$i("property.unknownproperty.detailed","Unknown property: '{0}'",D.getFullPropertyName())),C.add(T,T,null)}}else F=!0}if(!F)for(var P in C.data){var _=C.data[P],N=_.names,A=this.cssDataManager.isStandardProperty(P)&&-1===N.indexOf(P);if(A||1!==N.length){for(var O=[],W=(y=0,e.prefixes.length);y<W;y++){var L=e.prefixes[y];this.cssDataManager.isStandardProperty(L+P)&&O.push(L+P)}var j=this.getMissingNames(O,N);if(j||A)for(var U=0,V=_.nodes;U<V.length;U++){var B=V[U];if(A){var $=$i("property.standard.missing","Also define the standard property '{0}' for compatibility",P);this.addEntry(B,Ri.IncludeStandardPropertyWhenUsingVendorPrefix,$)}if(j){$=$i("property.vendorspecific.missing","Always include all vendor specific properties: Missing: {0}",j);this.addEntry(B,Ri.AllVendorPrefixes,$)}}}}}return!0},e.prototype.visitPrio=function(e){return this.addEntry(e,Ri.AvoidImportant),!0},e.prototype.visitNumericValue=function(e){var t=e.findParent(ee.Function);if(t&&"calc"===t.getName())return!0;var n=e.findParent(ee.Declaration);if(n&&n.getValue()){var r=e.getValue();if(!r.unit||-1===tn.length.indexOf(r.unit.toLowerCase()))return!0;0===parseFloat(r.value)&&r.unit&&!this.validProperties[n.getFullPropertyName()]&&this.addEntry(e,Ri.ZeroWithUnit)}return!0},e.prototype.visitFontFace=function(e){var t=e.getDeclarations();if(!t)return!1;for(var n=!1,r=!1,i=!1,o=0,s=t.getChildren();o<s.length;o++){var a=s[o];if(this.isCSSDeclaration(a)){var l=a.getProperty().getName().toLowerCase();"src"===l&&(n=!0),"font-family"===l&&(r=!0)}else i=!0}return i||n&&r||this.addEntry(e,Ri.RequiredPropertiesForFontFace),!0},e.prototype.isCSSDeclaration=function(e){if(e instanceof ve){if(!e.getValue())return!1;var t=e.getProperty();if(!t)return!1;var n=t.getIdentifier();return!(!n||n.containsInterpolation())}return!1},e.prototype.visitHexColorValue=function(e){var t=e.length;return 9!==t&&7!==t&&5!==t&&4!==t&&this.addEntry(e,Ri.HexColorLength),!1},e.prototype.visitFunction=function(e){var t=e.getName().toLowerCase(),n=-1,r=0;switch(t){case"rgb(":case"hsl(":n=3;break;case"rgba(":case"hsla(":n=4}return-1!==n&&(e.getArguments().accept((function(e){return!(e instanceof Xe)||(r+=1,!1)})),r!==n&&this.addEntry(e,Ri.ArgsInColorFunction)),!0},e.prefixes=["-ms-","-moz-","-o-","-webkit-"],e}(),Gi=(function(){function e(e){this.cssDataManager=e}e.prototype.configure=function(e){this.settings=e},e.prototype.doValidation=function(e,t,n){if(void 0===n&&(n=this.settings),n&&!1===n.validate)return[];var r=[];r.push.apply(r,vt.entries(t)),r.push.apply(r,Ki.entries(t,e,new Mi(n&&n.lint),this.cssDataManager));var i=[];for(var o in Ri)i.push(Ri[o].id);return r.filter((function(e){return e.getLevel()!==oe.Ignore})).map((function(t){var n=un.create(e.positionAt(t.getOffset()),e.positionAt(t.getOffset()+t.getLength())),r=e.languageId;return{code:t.getRule().id,source:r,message:t.getMessage(),severity:t.getLevel()===oe.Warning?kn.Warning:kn.Error,range:n}}))}}(),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),Ji="/".charCodeAt(0),Hi="\n".charCodeAt(0),Xi="\r".charCodeAt(0),Yi="\f".charCodeAt(0),Zi="$".charCodeAt(0),Qi="#".charCodeAt(0),eo="{".charCodeAt(0),to="=".charCodeAt(0),no="!".charCodeAt(0),ro="<".charCodeAt(0),io=">".charCodeAt(0),oo=".".charCodeAt(0),so=("@".charCodeAt(0),r.CustomToken),ao=so++,lo=so++,co=(so++,so++),po=so++,ho=so++,mo=so++,uo=so++,fo=(so++,function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Gi(t,e),t.prototype.scanNext=function(t){if(this.stream.advanceIfChar(Zi)){var n=["$"];if(this.ident(n))return this.finishToken(t,ao,n.join(""));this.stream.goBackTo(t)}return this.stream.advanceIfChars([Qi,eo])?this.finishToken(t,lo):this.stream.advanceIfChars([to,to])?this.finishToken(t,co):this.stream.advanceIfChars([no,to])?this.finishToken(t,po):this.stream.advanceIfChar(ro)?this.stream.advanceIfChar(to)?this.finishToken(t,mo):this.finishToken(t,r.Delim):this.stream.advanceIfChar(io)?this.stream.advanceIfChar(to)?this.finishToken(t,ho):this.finishToken(t,r.Delim):this.stream.advanceIfChars([oo,oo,oo])?this.finishToken(t,uo):e.prototype.scanNext.call(this,t)},t.prototype.comment=function(){return!!e.prototype.comment.call(this)||!(this.inURL||!this.stream.advanceIfChars([Ji,Ji]))&&(this.stream.advanceWhileChar((function(e){switch(e){case Hi:case Xi:case Yi:return!1;default:return!0}})),!0)},t}(X)),go=wt(),bo=function(e,t){this.id=e,this.message=t},vo={FromExpected:new bo("scss-fromexpected",go("expected.from","'from' expected")),ThroughOrToExpected:new bo("scss-throughexpected",go("expected.through","'through' or 'to' expected")),InExpected:new bo("scss-fromexpected",go("expected.in","'in' expected"))},yo=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),wo=(function(e){function t(){return e.call(this,new fo)||this}yo(t,e),t.prototype._parseStylesheetStatement=function(t){return void 0===t&&(t=!1),this.peek(r.AtKeyword)?this._parseWarnAndDebug()||this._parseControlStatement()||this._parseMixinDeclaration()||this._parseMixinContent()||this._parseMixinReference()||this._parseFunctionDeclaration()||this._parseForward()||this._parseUse()||this._parseRuleset(t)||e.prototype._parseStylesheetAtStatement.call(this,t):this._parseRuleset(!0)||this._parseVariableDeclaration()},t.prototype._parseImport=function(){if(!this.peekKeyword("@import"))return null;var e=this.create(Ne);if(this.consumeToken(),!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral()))return this.finish(e,kt.URIOrStringExpected);for(;this.accept(r.Comma);)if(!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral()))return this.finish(e,kt.URIOrStringExpected);return this.peek(r.SemiColon)||this.peek(r.EOF)||e.setMedialist(this._parseMediaQueryList()),this.finish(e)},t.prototype._parseVariableDeclaration=function(e){if(void 0===e&&(e=[]),!this.peek(ao))return null;var t=this.create(it);if(!t.setVariable(this._parseVariable()))return null;if(!this.accept(r.Colon))return this.finish(t,kt.ColonExpected);if(this.prevToken&&(t.colonPosition=this.prevToken.offset),!t.setValue(this._parseExpr()))return this.finish(t,kt.VariableValueExpected,[],e);for(;this.peek(r.Exclamation);)if(t.addChild(this._tryParsePrio()));else{if(this.consumeToken(),!this.peekRegExp(r.Ident,/^(default|global)$/))return this.finish(t,kt.UnknownKeyword);this.consumeToken()}return this.peek(r.SemiColon)&&(t.semicolonPosition=this.token.offset),this.finish(t)},t.prototype._parseMediaContentStart=function(){return this._parseInterpolation()},t.prototype._parseMediaFeatureName=function(){return this._parseModuleMember()||this._parseFunction()||this._parseIdent()||this._parseVariable()},t.prototype._parseKeyframeSelector=function(){return this._tryParseKeyframeSelector()||this._parseControlStatement(this._parseKeyframeSelector.bind(this))||this._parseVariableDeclaration()||this._parseMixinContent()},t.prototype._parseVariable=function(){if(!this.peek(ao))return null;var e=this.create(st);return this.consumeToken(),e},t.prototype._parseModuleMember=function(){var e=this.mark(),t=this.create(gt);return t.setIdentifier(this._parseIdent([te.Module]))?this.hasWhitespace()||!this.acceptDelim(".")||this.hasWhitespace()?(this.restoreAtMark(e),null):t.addChild(this._parseVariable()||this._parseFunction())?t:this.finish(t,kt.IdentifierOrVariableExpected):null},t.prototype._parseIdent=function(e){var t=this;if(!this.peek(r.Ident)&&!this.peek(lo)&&!this.peekDelim("-"))return null;var n=this.create(le);n.referenceTypes=e,n.isCustomProperty=this.peekRegExp(r.Ident,/^--/);for(var i=!1,o=function(){var e=t.mark();return t.acceptDelim("-")&&(t.hasWhitespace()||t.acceptDelim("-"),t.hasWhitespace())?(t.restoreAtMark(e),null):t._parseInterpolation()};(this.accept(r.Ident)||n.addChild(o())||i&&this.acceptRegexp(/^[\w-]/))&&(i=!0,!this.hasWhitespace()););return i?this.finish(n):null},t.prototype._parseTermExpression=function(){return this._parseModuleMember()||this._parseVariable()||this._parseSelectorCombinator()||e.prototype._parseTermExpression.call(this)},t.prototype._parseInterpolation=function(){if(this.peek(lo)){var e=this.create(ot);return this.consumeToken(),e.addChild(this._parseExpr())||this._parseSelectorCombinator()?this.accept(r.CurlyR)?this.finish(e):this.finish(e,kt.RightCurlyExpected):this.accept(r.CurlyR)?this.finish(e):this.finish(e,kt.ExpressionExpected)}return null},t.prototype._parseOperator=function(){if(this.peek(co)||this.peek(po)||this.peek(ho)||this.peek(mo)||this.peekDelim(">")||this.peekDelim("<")||this.peekIdent("and")||this.peekIdent("or")||this.peekDelim("%")){var t=this.createNode(ee.Operator);return this.consumeToken(),this.finish(t)}return e.prototype._parseOperator.call(this)},t.prototype._parseUnaryOperator=function(){if(this.peekIdent("not")){var t=this.create(se);return this.consumeToken(),this.finish(t)}return e.prototype._parseUnaryOperator.call(this)},t.prototype._parseRuleSetDeclaration=function(){return this.peek(r.AtKeyword)?this._parseKeyframe()||this._parseImport()||this._parseMedia(!0)||this._parseFontFace()||this._parseWarnAndDebug()||this._parseControlStatement()||this._parseFunctionDeclaration()||this._parseExtends()||this._parseMixinReference()||this._parseMixinContent()||this._parseMixinDeclaration()||this._parseRuleset(!0)||this._parseSupports(!0)||e.prototype._parseRuleSetDeclarationAtStatement.call(this):this._parseVariableDeclaration()||this._tryParseRuleset(!0)||e.prototype._parseRuleSetDeclaration.call(this)},t.prototype._parseDeclaration=function(e){var t=this._tryParseCustomPropertyDeclaration(e);if(t)return t;var n=this.create(ve);if(!n.setProperty(this._parseProperty()))return null;if(!this.accept(r.Colon))return this.finish(n,kt.ColonExpected,[r.Colon],e||[r.SemiColon]);this.prevToken&&(n.colonPosition=this.prevToken.offset);var i=!1;if(n.setValue(this._parseExpr())&&(i=!0,n.addChild(this._parsePrio())),this.peek(r.CurlyL))n.setNestedProperties(this._parseNestedProperties());else if(!i)return this.finish(n,kt.PropertyValueExpected);return this.peek(r.SemiColon)&&(n.semicolonPosition=this.token.offset),this.finish(n)},t.prototype._parseNestedProperties=function(){var e=this.create(Me);return this._parseBody(e,this._parseDeclaration.bind(this))},t.prototype._parseExtends=function(){if(this.peekKeyword("@extend")){var e=this.create(at);if(this.consumeToken(),!e.getSelectors().addChild(this._parseSimpleSelector()))return this.finish(e,kt.SelectorExpected);for(;this.accept(r.Comma);)e.getSelectors().addChild(this._parseSimpleSelector());return this.accept(r.Exclamation)&&!this.acceptIdent("optional")?this.finish(e,kt.UnknownKeyword):this.finish(e)}return null},t.prototype._parseSimpleSelectorBody=function(){return this._parseSelectorCombinator()||this._parseSelectorPlaceholder()||e.prototype._parseSimpleSelectorBody.call(this)},t.prototype._parseSelectorCombinator=function(){if(this.peekDelim("&")){var e=this.createNode(ee.SelectorCombinator);for(this.consumeToken();!this.hasWhitespace()&&(this.acceptDelim("-")||this.accept(r.Num)||this.accept(r.Dimension)||e.addChild(this._parseIdent())||this.acceptDelim("&")););return this.finish(e)}return null},t.prototype._parseSelectorPlaceholder=function(){if(this.peekDelim("%")){var e=this.createNode(ee.SelectorPlaceholder);return this.consumeToken(),this._parseIdent(),this.finish(e)}if(this.peekKeyword("@at-root")){e=this.createNode(ee.SelectorPlaceholder);return this.consumeToken(),this.finish(e)}return null},t.prototype._parseElementName=function(){var t=this.mark(),n=e.prototype._parseElementName.call(this);return n&&!this.hasWhitespace()&&this.peek(r.ParenthesisL)?(this.restoreAtMark(t),null):n},t.prototype._tryParsePseudoIdentifier=function(){return this._parseInterpolation()||e.prototype._tryParsePseudoIdentifier.call(this)},t.prototype._parseWarnAndDebug=function(){if(!this.peekKeyword("@debug")&&!this.peekKeyword("@warn")&&!this.peekKeyword("@error"))return null;var e=this.createNode(ee.Debug);return this.consumeToken(),e.addChild(this._parseExpr()),this.finish(e)},t.prototype._parseControlStatement=function(e){return void 0===e&&(e=this._parseRuleSetDeclaration.bind(this)),this.peek(r.AtKeyword)?this._parseIfStatement(e)||this._parseForStatement(e)||this._parseEachStatement(e)||this._parseWhileStatement(e):null},t.prototype._parseIfStatement=function(e){return this.peekKeyword("@if")?this._internalParseIfStatement(e):null},t.prototype._internalParseIfStatement=function(e){var t=this.create(Ce);if(this.consumeToken(),!t.setExpression(this._parseExpr(!0)))return this.finish(t,kt.ExpressionExpected);if(this._parseBody(t,e),this.acceptKeyword("@else"))if(this.peekIdent("if"))t.setElseClause(this._internalParseIfStatement(e));else if(this.peek(r.CurlyL)){var n=this.create(De);this._parseBody(n,e),t.setElseClause(n)}return this.finish(t)},t.prototype._parseForStatement=function(e){if(!this.peekKeyword("@for"))return null;var t=this.create(Fe);return this.consumeToken(),t.setVariable(this._parseVariable())?this.acceptIdent("from")?t.addChild(this._parseBinaryExpr())?this.acceptIdent("to")||this.acceptIdent("through")?t.addChild(this._parseBinaryExpr())?this._parseBody(t,e):this.finish(t,kt.ExpressionExpected,[r.CurlyR]):this.finish(t,vo.ThroughOrToExpected,[r.CurlyR]):this.finish(t,kt.ExpressionExpected,[r.CurlyR]):this.finish(t,vo.FromExpected,[r.CurlyR]):this.finish(t,kt.VariableNameExpected,[r.CurlyR])},t.prototype._parseEachStatement=function(e){if(!this.peekKeyword("@each"))return null;var t=this.create(Ee);this.consumeToken();var n=t.getVariables();if(!n.addChild(this._parseVariable()))return this.finish(t,kt.VariableNameExpected,[r.CurlyR]);for(;this.accept(r.Comma);)if(!n.addChild(this._parseVariable()))return this.finish(t,kt.VariableNameExpected,[r.CurlyR]);return this.finish(n),this.acceptIdent("in")?t.addChild(this._parseExpr())?this._parseBody(t,e):this.finish(t,kt.ExpressionExpected,[r.CurlyR]):this.finish(t,vo.InExpected,[r.CurlyR])},t.prototype._parseWhileStatement=function(e){if(!this.peekKeyword("@while"))return null;var t=this.create(ze);return this.consumeToken(),t.addChild(this._parseBinaryExpr())?this._parseBody(t,e):this.finish(t,kt.ExpressionExpected,[r.CurlyR])},t.prototype._parseFunctionBodyDeclaration=function(){return this._parseVariableDeclaration()||this._parseReturnStatement()||this._parseWarnAndDebug()||this._parseControlStatement(this._parseFunctionBodyDeclaration.bind(this))},t.prototype._parseFunctionDeclaration=function(){if(!this.peekKeyword("@function"))return null;var e=this.create(Te);if(this.consumeToken(),!e.setIdentifier(this._parseIdent([te.Function])))return this.finish(e,kt.IdentifierExpected,[r.CurlyR]);if(!this.accept(r.ParenthesisL))return this.finish(e,kt.LeftParenthesisExpected,[r.CurlyR]);if(e.getParameters().addChild(this._parseParameterDeclaration()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(e,kt.VariableNameExpected);return this.accept(r.ParenthesisR)?this._parseBody(e,this._parseFunctionBodyDeclaration.bind(this)):this.finish(e,kt.RightParenthesisExpected,[r.CurlyR])},t.prototype._parseReturnStatement=function(){if(!this.peekKeyword("@return"))return null;var e=this.createNode(ee.ReturnStatement);return this.consumeToken(),e.addChild(this._parseExpr())?this.finish(e):this.finish(e,kt.ExpressionExpected)},t.prototype._parseMixinDeclaration=function(){if(!this.peekKeyword("@mixin"))return null;var e=this.create(pt);if(this.consumeToken(),!e.setIdentifier(this._parseIdent([te.Mixin])))return this.finish(e,kt.IdentifierExpected,[r.CurlyR]);if(this.accept(r.ParenthesisL)){if(e.getParameters().addChild(this._parseParameterDeclaration()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(e,kt.VariableNameExpected);if(!this.accept(r.ParenthesisR))return this.finish(e,kt.RightParenthesisExpected,[r.CurlyR])}return this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},t.prototype._parseParameterDeclaration=function(){var e=this.create(Se);return e.setIdentifier(this._parseVariable())?(this.accept(uo),this.accept(r.Colon)&&!e.setDefaultValue(this._parseExpr(!0))?this.finish(e,kt.VariableValueExpected,[],[r.Comma,r.ParenthesisR]):this.finish(e)):null},t.prototype._parseMixinContent=function(){if(!this.peekKeyword("@content"))return null;var e=this.create(lt);if(this.consumeToken(),this.accept(r.ParenthesisL)){if(e.getArguments().addChild(this._parseFunctionArgument()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getArguments().addChild(this._parseFunctionArgument()))return this.finish(e,kt.ExpressionExpected);if(!this.accept(r.ParenthesisR))return this.finish(e,kt.RightParenthesisExpected)}return this.finish(e)},t.prototype._parseMixinReference=function(){if(!this.peekKeyword("@include"))return null;var e=this.create(dt);this.consumeToken();var t=this._parseIdent([te.Mixin]);if(!e.setIdentifier(t))return this.finish(e,kt.IdentifierExpected,[r.CurlyR]);if(!this.hasWhitespace()&&this.acceptDelim(".")&&!this.hasWhitespace()){var n=this._parseIdent([te.Mixin]);if(!n)return this.finish(e,kt.IdentifierExpected,[r.CurlyR]);var i=this.create(gt);t.referenceTypes=[te.Module],i.setIdentifier(t),e.setIdentifier(n),e.addChild(i)}if(this.accept(r.ParenthesisL)){if(e.getArguments().addChild(this._parseFunctionArgument()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getArguments().addChild(this._parseFunctionArgument()))return this.finish(e,kt.ExpressionExpected);if(!this.accept(r.ParenthesisR))return this.finish(e,kt.RightParenthesisExpected)}return(this.peekIdent("using")||this.peek(r.CurlyL))&&e.setContent(this._parseMixinContentDeclaration()),this.finish(e)},t.prototype._parseMixinContentDeclaration=function(){var e=this.create(ct);if(this.acceptIdent("using")){if(!this.accept(r.ParenthesisL))return this.finish(e,kt.LeftParenthesisExpected,[r.CurlyL]);if(e.getParameters().addChild(this._parseParameterDeclaration()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(e,kt.VariableNameExpected);if(!this.accept(r.ParenthesisR))return this.finish(e,kt.RightParenthesisExpected,[r.CurlyL])}return this.peek(r.CurlyL)&&this._parseBody(e,this._parseMixinReferenceBodyStatement.bind(this)),this.finish(e)},t.prototype._parseMixinReferenceBodyStatement=function(){return this._tryParseKeyframeSelector()||this._parseRuleSetDeclaration()},t.prototype._parseFunctionArgument=function(){var e=this.create(ke),t=this.mark(),n=this._parseVariable();if(n)if(this.accept(r.Colon))e.setIdentifier(n);else{if(this.accept(uo))return e.setValue(n),this.finish(e);this.restoreAtMark(t)}return e.setValue(this._parseExpr(!0))?(this.accept(uo),e.addChild(this._parsePrio()),this.finish(e)):e.setValue(this._tryParsePrio())?this.finish(e):null},t.prototype._parseURLArgument=function(){var t=this.mark(),n=e.prototype._parseURLArgument.call(this);if(!n||!this.peek(r.ParenthesisR)){this.restoreAtMark(t);var i=this.create(se);return i.addChild(this._parseBinaryExpr()),this.finish(i)}return n},t.prototype._parseOperation=function(){if(!this.peek(r.ParenthesisL))return null;var e=this.create(se);for(this.consumeToken();e.addChild(this._parseListElement());)this.accept(r.Comma);return this.accept(r.ParenthesisR)?this.finish(e):this.finish(e,kt.RightParenthesisExpected)},t.prototype._parseListElement=function(){var e=this.create(mt),t=this._parseBinaryExpr();if(!t)return null;if(this.accept(r.Colon)){if(e.setKey(t),!e.setValue(this._parseBinaryExpr()))return this.finish(e,kt.ExpressionExpected)}else e.setValue(t);return this.finish(e)},t.prototype._parseUse=function(){if(!this.peekKeyword("@use"))return null;var e=this.create(Ae);if(this.consumeToken(),!e.addChild(this._parseStringLiteral()))return this.finish(e,kt.StringLiteralExpected);if(!this.peek(r.SemiColon)&&!this.peek(r.EOF)){if(!this.peekRegExp(r.Ident,/as|with/))return this.finish(e,kt.UnknownKeyword);if(this.acceptIdent("as")&&!e.setIdentifier(this._parseIdent([te.Module]))&&!this.acceptDelim("*"))return this.finish(e,kt.IdentifierOrWildcardExpected);if(this.acceptIdent("with")){if(!this.accept(r.ParenthesisL))return this.finish(e,kt.LeftParenthesisExpected,[r.ParenthesisR]);if(!e.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(e,kt.VariableNameExpected);for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(e,kt.VariableNameExpected);if(!this.accept(r.ParenthesisR))return this.finish(e,kt.RightParenthesisExpected)}}return this.accept(r.SemiColon)||this.accept(r.EOF)?this.finish(e):this.finish(e,kt.SemiColonExpected)},t.prototype._parseModuleConfigDeclaration=function(){var e=this.create(Oe);return e.setIdentifier(this._parseVariable())?this.accept(r.Colon)&&e.setValue(this._parseExpr(!0))?!this.accept(r.Exclamation)||!this.hasWhitespace()&&this.acceptIdent("default")?this.finish(e):this.finish(e,kt.UnknownKeyword):this.finish(e,kt.VariableValueExpected,[],[r.Comma,r.ParenthesisR]):null},t.prototype._parseForward=function(){if(!this.peekKeyword("@forward"))return null;var e=this.create(We);if(this.consumeToken(),!e.addChild(this._parseStringLiteral()))return this.finish(e,kt.StringLiteralExpected);if(this.acceptIdent("with")){if(!this.accept(r.ParenthesisL))return this.finish(e,kt.LeftParenthesisExpected,[r.ParenthesisR]);if(!e.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(e,kt.VariableNameExpected);for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(e,kt.VariableNameExpected);if(!this.accept(r.ParenthesisR))return this.finish(e,kt.RightParenthesisExpected)}if(!this.peek(r.SemiColon)&&!this.peek(r.EOF)){if(!this.peekRegExp(r.Ident,/as|hide|show/))return this.finish(e,kt.UnknownKeyword);if(this.acceptIdent("as")){var t=this._parseIdent([te.Forward]);if(!e.setIdentifier(t))return this.finish(e,kt.IdentifierExpected);if(this.hasWhitespace()||!this.acceptDelim("*"))return this.finish(e,kt.WildcardExpected)}if((this.peekIdent("hide")||this.peekIdent("show"))&&!e.addChild(this._parseForwardVisibility()))return this.finish(e,kt.IdentifierOrVariableExpected)}return this.accept(r.SemiColon)||this.accept(r.EOF)?this.finish(e):this.finish(e,kt.SemiColonExpected)},t.prototype._parseForwardVisibility=function(){var e=this.create(Le);for(e.setIdentifier(this._parseIdent());e.addChild(this._parseVariable()||this._parseIdent());)this.accept(r.Comma);return e.getChildren().length>1?e:null},t.prototype._parseSupportsCondition=function(){return this._parseInterpolation()||e.prototype._parseSupportsCondition.call(this)}}(ln),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),xo=wt();!function(e){function t(n,r){var i=e.call(this,"$",n,r)||this;return So(t.scssModuleLoaders),So(t.scssModuleBuiltIns),i}wo(t,e),t.prototype.isImportPathParent=function(t){return t===ee.Forward||t===ee.Use||e.prototype.isImportPathParent.call(this,t)},t.prototype.getCompletionForImportPath=function(n,r){var i=n.getParent().type;if(i===ee.Forward||i===ee.Use)for(var o=0,s=t.scssModuleBuiltIns;o<s.length;o++){var a=s[o],l={label:a.label,documentation:a.documentation,textEdit:Dn.replace(this.getCompletionRange(n),"'"+a.label+"'"),kind:Hn.Module};r.items.push(l)}return e.prototype.getCompletionForImportPath.call(this,n,r)},t.prototype.createReplaceFunction=function(){var e=1;return function(n,r){return"\\"+r+": ${"+e+++":"+(t.variableDefaults[r]||"")+"}"}},t.prototype.createFunctionProposals=function(e,t,n,r){for(var i=0,o=e;i<o.length;i++){var s=o[i],a=s.func.replace(/\[?(\$\w+)\]?/g,this.createReplaceFunction()),l={label:s.func.substr(0,s.func.indexOf("(")),detail:s.func,documentation:s.desc,textEdit:Dn.replace(this.getCompletionRange(t),a),insertTextFormat:Xn.Snippet,kind:Hn.Function};n&&(l.sortText="z"),r.items.push(l)}return r},t.prototype.getCompletionsForSelector=function(n,r,i){return this.createFunctionProposals(t.selectorFuncs,null,!0,i),e.prototype.getCompletionsForSelector.call(this,n,r,i)},t.prototype.getTermProposals=function(n,r,i){var o=t.builtInFuncs;return n&&(o=o.filter((function(e){return!e.type||!n.restrictions||-1!==n.restrictions.indexOf(e.type)}))),this.createFunctionProposals(o,r,!0,i),e.prototype.getTermProposals.call(this,n,r,i)},t.prototype.getColorProposals=function(n,r,i){return this.createFunctionProposals(t.colorProposals,r,!1,i),e.prototype.getColorProposals.call(this,n,r,i)},t.prototype.getCompletionsForDeclarationProperty=function(t,n){return this.getCompletionForAtDirectives(n),this.getCompletionsForSelector(null,!0,n),e.prototype.getCompletionsForDeclarationProperty.call(this,t,n)},t.prototype.getCompletionsForExtendsReference=function(e,t,n){for(var r=0,i=this.getSymbolContext().findSymbolsAtOffset(this.offset,te.Rule);r<i.length;r++){var o=i[r],s={label:o.name,textEdit:Dn.replace(this.getCompletionRange(t),o.name),kind:Hn.Function};n.items.push(s)}return n},t.prototype.getCompletionForAtDirectives=function(e){var n;return(n=e.items).push.apply(n,t.scssAtDirectives),e},t.prototype.getCompletionForTopLevel=function(t){return this.getCompletionForAtDirectives(t),this.getCompletionForModuleLoaders(t),e.prototype.getCompletionForTopLevel.call(this,t),t},t.prototype.getCompletionForModuleLoaders=function(e){var n;return(n=e.items).push.apply(n,t.scssModuleLoaders),e},t.variableDefaults={$red:"1",$green:"2",$blue:"3",$alpha:"1.0",$color:"#000000",$weight:"0.5",$hue:"0",$saturation:"0%",$lightness:"0%",$degrees:"0",$amount:"0",$string:'""',$substring:'"s"',$number:"0",$limit:"1"},t.colorProposals=[{func:"red($color)",desc:xo("scss.builtin.red","Gets the red component of a color.")},{func:"green($color)",desc:xo("scss.builtin.green","Gets the green component of a color.")},{func:"blue($color)",desc:xo("scss.builtin.blue","Gets the blue component of a color.")},{func:"mix($color, $color, [$weight])",desc:xo("scss.builtin.mix","Mixes two colors together.")},{func:"hue($color)",desc:xo("scss.builtin.hue","Gets the hue component of a color.")},{func:"saturation($color)",desc:xo("scss.builtin.saturation","Gets the saturation component of a color.")},{func:"lightness($color)",desc:xo("scss.builtin.lightness","Gets the lightness component of a color.")},{func:"adjust-hue($color, $degrees)",desc:xo("scss.builtin.adjust-hue","Changes the hue of a color.")},{func:"lighten($color, $amount)",desc:xo("scss.builtin.lighten","Makes a color lighter.")},{func:"darken($color, $amount)",desc:xo("scss.builtin.darken","Makes a color darker.")},{func:"saturate($color, $amount)",desc:xo("scss.builtin.saturate","Makes a color more saturated.")},{func:"desaturate($color, $amount)",desc:xo("scss.builtin.desaturate","Makes a color less saturated.")},{func:"grayscale($color)",desc:xo("scss.builtin.grayscale","Converts a color to grayscale.")},{func:"complement($color)",desc:xo("scss.builtin.complement","Returns the complement of a color.")},{func:"invert($color)",desc:xo("scss.builtin.invert","Returns the inverse of a color.")},{func:"alpha($color)",desc:xo("scss.builtin.alpha","Gets the opacity component of a color.")},{func:"opacity($color)",desc:"Gets the alpha component (opacity) of a color."},{func:"rgba($color, $alpha)",desc:xo("scss.builtin.rgba","Changes the alpha component for a color.")},{func:"opacify($color, $amount)",desc:xo("scss.builtin.opacify","Makes a color more opaque.")},{func:"fade-in($color, $amount)",desc:xo("scss.builtin.fade-in","Makes a color more opaque.")},{func:"transparentize($color, $amount)",desc:xo("scss.builtin.transparentize","Makes a color more transparent.")},{func:"fade-out($color, $amount)",desc:xo("scss.builtin.fade-out","Makes a color more transparent.")},{func:"adjust-color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])",desc:xo("scss.builtin.adjust-color","Increases or decreases one or more components of a color.")},{func:"scale-color($color, [$red], [$green], [$blue], [$saturation], [$lightness], [$alpha])",desc:xo("scss.builtin.scale-color","Fluidly scales one or more properties of a color.")},{func:"change-color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])",desc:xo("scss.builtin.change-color","Changes one or more properties of a color.")},{func:"ie-hex-str($color)",desc:xo("scss.builtin.ie-hex-str","Converts a color into the format understood by IE filters.")}],t.selectorFuncs=[{func:"selector-nest($selectors\u2026)",desc:xo("scss.builtin.selector-nest","Nests selector beneath one another like they would be nested in the stylesheet.")},{func:"selector-append($selectors\u2026)",desc:xo("scss.builtin.selector-append","Appends selectors to one another without spaces in between.")},{func:"selector-extend($selector, $extendee, $extender)",desc:xo("scss.builtin.selector-extend","Extends $extendee with $extender within $selector.")},{func:"selector-replace($selector, $original, $replacement)",desc:xo("scss.builtin.selector-replace","Replaces $original with $replacement within $selector.")},{func:"selector-unify($selector1, $selector2)",desc:xo("scss.builtin.selector-unify","Unifies two selectors to produce a selector that matches elements matched by both.")},{func:"is-superselector($super, $sub)",desc:xo("scss.builtin.is-superselector","Returns whether $super matches all the elements $sub does, and possibly more.")},{func:"simple-selectors($selector)",desc:xo("scss.builtin.simple-selectors","Returns the simple selectors that comprise a compound selector.")},{func:"selector-parse($selector)",desc:xo("scss.builtin.selector-parse","Parses a selector into the format returned by &.")}],t.builtInFuncs=[{func:"unquote($string)",desc:xo("scss.builtin.unquote","Removes quotes from a string.")},{func:"quote($string)",desc:xo("scss.builtin.quote","Adds quotes to a string.")},{func:"str-length($string)",desc:xo("scss.builtin.str-length","Returns the number of characters in a string.")},{func:"str-insert($string, $insert, $index)",desc:xo("scss.builtin.str-insert","Inserts $insert into $string at $index.")},{func:"str-index($string, $substring)",desc:xo("scss.builtin.str-index","Returns the index of the first occurance of $substring in $string.")},{func:"str-slice($string, $start-at, [$end-at])",desc:xo("scss.builtin.str-slice","Extracts a substring from $string.")},{func:"to-upper-case($string)",desc:xo("scss.builtin.to-upper-case","Converts a string to upper case.")},{func:"to-lower-case($string)",desc:xo("scss.builtin.to-lower-case","Converts a string to lower case.")},{func:"percentage($number)",desc:xo("scss.builtin.percentage","Converts a unitless number to a percentage."),type:"percentage"},{func:"round($number)",desc:xo("scss.builtin.round","Rounds a number to the nearest whole number.")},{func:"ceil($number)",desc:xo("scss.builtin.ceil","Rounds a number up to the next whole number.")},{func:"floor($number)",desc:xo("scss.builtin.floor","Rounds a number down to the previous whole number.")},{func:"abs($number)",desc:xo("scss.builtin.abs","Returns the absolute value of a number.")},{func:"min($numbers)",desc:xo("scss.builtin.min","Finds the minimum of several numbers.")},{func:"max($numbers)",desc:xo("scss.builtin.max","Finds the maximum of several numbers.")},{func:"random([$limit])",desc:xo("scss.builtin.random","Returns a random number.")},{func:"length($list)",desc:xo("scss.builtin.length","Returns the length of a list.")},{func:"nth($list, $n)",desc:xo("scss.builtin.nth","Returns a specific item in a list.")},{func:"set-nth($list, $n, $value)",desc:xo("scss.builtin.set-nth","Replaces the nth item in a list.")},{func:"join($list1, $list2, [$separator])",desc:xo("scss.builtin.join","Joins together two lists into one.")},{func:"append($list1, $val, [$separator])",desc:xo("scss.builtin.append","Appends a single value onto the end of a list.")},{func:"zip($lists)",desc:xo("scss.builtin.zip","Combines several lists into a single multidimensional list.")},{func:"index($list, $value)",desc:xo("scss.builtin.index","Returns the position of a value within a list.")},{func:"list-separator(#list)",desc:xo("scss.builtin.list-separator","Returns the separator of a list.")},{func:"map-get($map, $key)",desc:xo("scss.builtin.map-get","Returns the value in a map associated with a given key.")},{func:"map-merge($map1, $map2)",desc:xo("scss.builtin.map-merge","Merges two maps together into a new map.")},{func:"map-remove($map, $keys)",desc:xo("scss.builtin.map-remove","Returns a new map with keys removed.")},{func:"map-keys($map)",desc:xo("scss.builtin.map-keys","Returns a list of all keys in a map.")},{func:"map-values($map)",desc:xo("scss.builtin.map-values","Returns a list of all values in a map.")},{func:"map-has-key($map, $key)",desc:xo("scss.builtin.map-has-key","Returns whether a map has a value associated with a given key.")},{func:"keywords($args)",desc:xo("scss.builtin.keywords","Returns the keywords passed to a function that takes variable arguments.")},{func:"feature-exists($feature)",desc:xo("scss.builtin.feature-exists","Returns whether a feature exists in the current Sass runtime.")},{func:"variable-exists($name)",desc:xo("scss.builtin.variable-exists","Returns whether a variable with the given name exists in the current scope.")},{func:"global-variable-exists($name)",desc:xo("scss.builtin.global-variable-exists","Returns whether a variable with the given name exists in the global scope.")},{func:"function-exists($name)",desc:xo("scss.builtin.function-exists","Returns whether a function with the given name exists.")},{func:"mixin-exists($name)",desc:xo("scss.builtin.mixin-exists","Returns whether a mixin with the given name exists.")},{func:"inspect($value)",desc:xo("scss.builtin.inspect","Returns the string representation of a value as it would be represented in Sass.")},{func:"type-of($value)",desc:xo("scss.builtin.type-of","Returns the type of a value.")},{func:"unit($number)",desc:xo("scss.builtin.unit","Returns the unit(s) associated with a number.")},{func:"unitless($number)",desc:xo("scss.builtin.unitless","Returns whether a number has units.")},{func:"comparable($number1, $number2)",desc:xo("scss.builtin.comparable","Returns whether two numbers can be added, subtracted, or compared.")},{func:"call($name, $args\u2026)",desc:xo("scss.builtin.call","Dynamically calls a Sass function.")}],t.scssAtDirectives=[{label:"@extend",documentation:xo("scss.builtin.@extend","Inherits the styles of another selector."),kind:Hn.Keyword},{label:"@at-root",documentation:xo("scss.builtin.@at-root","Causes one or more rules to be emitted at the root of the document."),kind:Hn.Keyword},{label:"@debug",documentation:xo("scss.builtin.@debug","Prints the value of an expression to the standard error output stream. Useful for debugging complicated Sass files."),kind:Hn.Keyword},{label:"@warn",documentation:xo("scss.builtin.@warn","Prints the value of an expression to the standard error output stream. Useful for libraries that need to warn users of deprecations or recovering from minor mixin usage mistakes. Warnings can be turned off with the `--quiet` command-line option or the `:quiet` Sass option."),kind:Hn.Keyword},{label:"@error",documentation:xo("scss.builtin.@error","Throws the value of an expression as a fatal error with stack trace. Useful for validating arguments to mixins and functions."),kind:Hn.Keyword},{label:"@if",documentation:xo("scss.builtin.@if","Includes the body if the expression does not evaluate to `false` or `null`."),insertText:"@if ${1:expr} {\n\t$0\n}",insertTextFormat:Xn.Snippet,kind:Hn.Keyword},{label:"@for",documentation:xo("scss.builtin.@for","For loop that repeatedly outputs a set of styles for each `$var` in the `from/through` or `from/to` clause."),insertText:"@for \\$${1:var} from ${2:start} ${3|to,through|} ${4:end} {\n\t$0\n}",insertTextFormat:Xn.Snippet,kind:Hn.Keyword},{label:"@each",documentation:xo("scss.builtin.@each","Each loop that sets `$var` to each item in the list or map, then outputs the styles it contains using that value of `$var`."),insertText:"@each \\$${1:var} in ${2:list} {\n\t$0\n}",insertTextFormat:Xn.Snippet,kind:Hn.Keyword},{label:"@while",documentation:xo("scss.builtin.@while","While loop that takes an expression and repeatedly outputs the nested styles until the statement evaluates to `false`."),insertText:"@while ${1:condition} {\n\t$0\n}",insertTextFormat:Xn.Snippet,kind:Hn.Keyword},{label:"@mixin",documentation:xo("scss.builtin.@mixin","Defines styles that can be re-used throughout the stylesheet with `@include`."),insertText:"@mixin ${1:name} {\n\t$0\n}",insertTextFormat:Xn.Snippet,kind:Hn.Keyword},{label:"@include",documentation:xo("scss.builtin.@include","Includes the styles defined by another mixin into the current rule."),kind:Hn.Keyword},{label:"@function",documentation:xo("scss.builtin.@function","Defines complex operations that can be re-used throughout stylesheets."),kind:Hn.Keyword}],t.scssModuleLoaders=[{label:"@use",documentation:xo("scss.builtin.@use","Loads mixins, functions, and variables from other Sass stylesheets as 'modules', and combines CSS from multiple stylesheets together."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/at-rules/use"}],insertText:"@use $0;",insertTextFormat:Xn.Snippet,kind:Hn.Keyword},{label:"@forward",documentation:xo("scss.builtin.@forward","Loads a Sass stylesheet and makes its mixins, functions, and variables available when this stylesheet is loaded with the @use rule."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/at-rules/forward"}],insertText:"@forward $0;",insertTextFormat:Xn.Snippet,kind:Hn.Keyword}],t.scssModuleBuiltIns=[{label:"sass:math",documentation:xo("scss.builtin.sass:math","Provides functions that operate on numbers."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/math"}]},{label:"sass:string",documentation:xo("scss.builtin.sass:string","Makes it easy to combine, search, or split apart strings."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/string"}]},{label:"sass:color",documentation:xo("scss.builtin.sass:color","Generates new colors based on existing ones, making it easy to build color themes."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/color"}]},{label:"sass:list",documentation:xo("scss.builtin.sass:list","Lets you access and modify values in lists."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/list"}]},{label:"sass:map",documentation:xo("scss.builtin.sass:map","Makes it possible to look up the value associated with a key in a map, and much more."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/map"}]},{label:"sass:selector",documentation:xo("scss.builtin.sass:selector","Provides access to Sass\u2019s powerful selector engine."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/selector"}]},{label:"sass:meta",documentation:xo("scss.builtin.sass:meta","Exposes the details of Sass\u2019s inner workings."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/meta"}]}]}(Zr);function So(e){e.forEach((function(e){if(e.documentation&&e.references&&e.references.length>0){var t="string"===typeof e.documentation?{kind:"markdown",value:e.documentation}:{kind:"markdown",value:e.documentation.value};t.value+="\n\n",t.value+=e.references.map((function(e){return"["+e.name+"]("+e.url+")"})).join(" | "),e.documentation=t}}))}var ko=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Co="/".charCodeAt(0),Fo="\n".charCodeAt(0),Eo="\r".charCodeAt(0),zo="\f".charCodeAt(0),Do="`".charCodeAt(0),To=".".charCodeAt(0),Ro=r.CustomToken,Io=Ro++,Mo=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ko(t,e),t.prototype.scanNext=function(t){var n=this.escapedJavaScript();return null!==n?this.finishToken(t,n):this.stream.advanceIfChars([To,To,To])?this.finishToken(t,Io):e.prototype.scanNext.call(this,t)},t.prototype.comment=function(){return!!e.prototype.comment.call(this)||!(this.inURL||!this.stream.advanceIfChars([Co,Co]))&&(this.stream.advanceWhileChar((function(e){switch(e){case Fo:case Eo:case zo:return!1;default:return!0}})),!0)},t.prototype.escapedJavaScript=function(){return this.stream.peekChar()===Do?(this.stream.advance(1),this.stream.advanceWhileChar((function(e){return e!==Do})),this.stream.advanceIfChar(Do)?r.EscapedJavaScript:r.BadEscapedJavaScript):null},t}(X),Po=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),_o=(function(e){function t(){return e.call(this,new Mo)||this}Po(t,e),t.prototype._parseStylesheetStatement=function(t){return void 0===t&&(t=!1),this.peek(r.AtKeyword)?this._parseVariableDeclaration()||this._parsePlugin()||e.prototype._parseStylesheetAtStatement.call(this,t):this._tryParseMixinDeclaration()||this._tryParseMixinReference()||this._parseFunction()||this._parseRuleset(!0)},t.prototype._parseImport=function(){if(!this.peekKeyword("@import")&&!this.peekKeyword("@import-once"))return null;var e=this.create(Ne);if(this.consumeToken(),this.accept(r.ParenthesisL)){if(!this.accept(r.Ident))return this.finish(e,kt.IdentifierExpected,[r.SemiColon]);do{if(!this.accept(r.Comma))break}while(this.accept(r.Ident));if(!this.accept(r.ParenthesisR))return this.finish(e,kt.RightParenthesisExpected,[r.SemiColon])}return e.addChild(this._parseURILiteral())||e.addChild(this._parseStringLiteral())?(this.peek(r.SemiColon)||this.peek(r.EOF)||e.setMedialist(this._parseMediaQueryList()),this.finish(e)):this.finish(e,kt.URIOrStringExpected,[r.SemiColon])},t.prototype._parsePlugin=function(){if(!this.peekKeyword("@plugin"))return null;var e=this.createNode(ee.Plugin);return this.consumeToken(),e.addChild(this._parseStringLiteral())?this.accept(r.SemiColon)?this.finish(e):this.finish(e,kt.SemiColonExpected):this.finish(e,kt.StringLiteralExpected)},t.prototype._parseMediaQuery=function(t){var n=e.prototype._parseMediaQuery.call(this,t);if(!n){var r=this.create(qe);return r.addChild(this._parseVariable())?this.finish(r):null}return n},t.prototype._parseMediaDeclaration=function(e){return void 0===e&&(e=!1),this._tryParseRuleset(e)||this._tryToParseDeclaration()||this._tryParseMixinDeclaration()||this._tryParseMixinReference()||this._parseDetachedRuleSetMixin()||this._parseStylesheetStatement(e)},t.prototype._parseMediaFeatureName=function(){return this._parseIdent()||this._parseVariable()},t.prototype._parseVariableDeclaration=function(e){void 0===e&&(e=[]);var t=this.create(it),n=this.mark();if(!t.setVariable(this._parseVariable(!0)))return null;if(!this.accept(r.Colon))return this.restoreAtMark(n),null;if(this.prevToken&&(t.colonPosition=this.prevToken.offset),t.setValue(this._parseDetachedRuleSet()))t.needsSemicolon=!1;else if(!t.setValue(this._parseExpr()))return this.finish(t,kt.VariableValueExpected,[],e);return t.addChild(this._parsePrio()),this.peek(r.SemiColon)&&(t.semicolonPosition=this.token.offset),this.finish(t)},t.prototype._parseDetachedRuleSet=function(){var e=this.mark();if(this.peekDelim("#")||this.peekDelim(".")){if(this.consumeToken(),this.hasWhitespace()||!this.accept(r.ParenthesisL))return this.restoreAtMark(e),null;var t=this.create(pt);if(t.getParameters().addChild(this._parseMixinParameter()))for(;(this.accept(r.Comma)||this.accept(r.SemiColon))&&!this.peek(r.ParenthesisR);)t.getParameters().addChild(this._parseMixinParameter())||this.markError(t,kt.IdentifierExpected,[],[r.ParenthesisR]);if(!this.accept(r.ParenthesisR))return this.restoreAtMark(e),null}if(!this.peek(r.CurlyL))return null;var n=this.create(pe);return this._parseBody(n,this._parseDetachedRuleSetBody.bind(this)),this.finish(n)},t.prototype._parseDetachedRuleSetBody=function(){return this._tryParseKeyframeSelector()||this._parseRuleSetDeclaration()},t.prototype._addLookupChildren=function(e){if(!e.addChild(this._parseLookupValue()))return!1;for(var t=!1;this.peek(r.BracketL)&&(t=!0),e.addChild(this._parseLookupValue());)t=!1;return!t},t.prototype._parseLookupValue=function(){var e=this.create(se),t=this.mark();return this.accept(r.BracketL)&&((e.addChild(this._parseVariable(!1,!0))||e.addChild(this._parsePropertyIdentifier()))&&this.accept(r.BracketR)||this.accept(r.BracketR))?e:(this.restoreAtMark(t),null)},t.prototype._parseVariable=function(e,t){void 0===e&&(e=!1),void 0===t&&(t=!1);var n=!e&&this.peekDelim("$");if(!this.peekDelim("@")&&!n&&!this.peek(r.AtKeyword))return null;for(var i=this.create(st),o=this.mark();this.acceptDelim("@")||!e&&this.acceptDelim("$");)if(this.hasWhitespace())return this.restoreAtMark(o),null;return(this.accept(r.AtKeyword)||this.accept(r.Ident))&&(t||!this.peek(r.BracketL)||this._addLookupChildren(i))?i:(this.restoreAtMark(o),null)},t.prototype._parseTermExpression=function(){return this._parseVariable()||this._parseEscaped()||e.prototype._parseTermExpression.call(this)||this._tryParseMixinReference(!1)},t.prototype._parseEscaped=function(){if(this.peek(r.EscapedJavaScript)||this.peek(r.BadEscapedJavaScript)){var e=this.createNode(ee.EscapedValue);return this.consumeToken(),this.finish(e)}if(this.peekDelim("~")){e=this.createNode(ee.EscapedValue);return this.consumeToken(),this.accept(r.String)||this.accept(r.EscapedJavaScript)?this.finish(e):this.finish(e,kt.TermExpected)}return null},t.prototype._parseOperator=function(){var t=this._parseGuardOperator();return t||e.prototype._parseOperator.call(this)},t.prototype._parseGuardOperator=function(){if(this.peekDelim(">")){var e=this.createNode(ee.Operator);return this.consumeToken(),this.acceptDelim("="),e}if(this.peekDelim("=")){e=this.createNode(ee.Operator);return this.consumeToken(),this.acceptDelim("<"),e}if(this.peekDelim("<")){e=this.createNode(ee.Operator);return this.consumeToken(),this.acceptDelim("="),e}return null},t.prototype._parseRuleSetDeclaration=function(){return this.peek(r.AtKeyword)?this._parseKeyframe()||this._parseMedia(!0)||this._parseImport()||this._parseSupports(!0)||this._parseDetachedRuleSetMixin()||this._parseVariableDeclaration()||e.prototype._parseRuleSetDeclarationAtStatement.call(this):this._tryParseMixinDeclaration()||this._tryParseRuleset(!0)||this._tryParseMixinReference()||this._parseFunction()||this._parseExtend()||e.prototype._parseRuleSetDeclaration.call(this)},t.prototype._parseKeyframeIdent=function(){return this._parseIdent([te.Keyframe])||this._parseVariable()},t.prototype._parseKeyframeSelector=function(){return this._parseDetachedRuleSetMixin()||e.prototype._parseKeyframeSelector.call(this)},t.prototype._parseSimpleSelectorBody=function(){return this._parseSelectorCombinator()||e.prototype._parseSimpleSelectorBody.call(this)},t.prototype._parseSelector=function(e){var t=this.create(me),n=!1;for(e&&(n=t.addChild(this._parseCombinator()));t.addChild(this._parseSimpleSelector());){n=!0;var i=this.mark();if(t.addChild(this._parseGuard())&&this.peek(r.CurlyL))break;this.restoreAtMark(i),t.addChild(this._parseCombinator())}return n?this.finish(t):null},t.prototype._parseSelectorCombinator=function(){if(this.peekDelim("&")){var e=this.createNode(ee.SelectorCombinator);for(this.consumeToken();!this.hasWhitespace()&&(this.acceptDelim("-")||this.accept(r.Num)||this.accept(r.Dimension)||e.addChild(this._parseIdent())||this.acceptDelim("&")););return this.finish(e)}return null},t.prototype._parseSelectorIdent=function(){if(!this.peekInterpolatedIdent())return null;var e=this.createNode(ee.SelectorInterpolation);return this._acceptInterpolatedIdent(e)?this.finish(e):null},t.prototype._parsePropertyIdentifier=function(e){void 0===e&&(e=!1);var t=/^[\w-]+/;if(!this.peekInterpolatedIdent()&&!this.peekRegExp(this.token.type,t))return null;var n=this.mark(),r=this.create(le);r.isCustomProperty=this.acceptDelim("-")&&this.acceptDelim("-");return(e?r.isCustomProperty?r.addChild(this._parseIdent()):r.addChild(this._parseRegexp(t)):r.isCustomProperty?this._acceptInterpolatedIdent(r):this._acceptInterpolatedIdent(r,t))?(e||this.hasWhitespace()||(this.acceptDelim("+"),this.hasWhitespace()||this.acceptIdent("_")),this.finish(r)):(this.restoreAtMark(n),null)},t.prototype.peekInterpolatedIdent=function(){return this.peek(r.Ident)||this.peekDelim("@")||this.peekDelim("$")||this.peekDelim("-")},t.prototype._acceptInterpolatedIdent=function(e,t){for(var n=this,i=!1,o=function(){var e=n.mark();return n.acceptDelim("-")&&(n.hasWhitespace()||n.acceptDelim("-"),n.hasWhitespace())?(n.restoreAtMark(e),null):n._parseInterpolation()},s=t?function(){return n.acceptRegexp(t)}:function(){return n.accept(r.Ident)};(s()||e.addChild(this._parseInterpolation()||this.try(o)))&&(i=!0,!this.hasWhitespace()););return i},t.prototype._parseInterpolation=function(){var e=this.mark();if(this.peekDelim("@")||this.peekDelim("$")){var t=this.createNode(ee.Interpolation);return this.consumeToken(),this.hasWhitespace()||!this.accept(r.CurlyL)?(this.restoreAtMark(e),null):t.addChild(this._parseIdent())?this.accept(r.CurlyR)?this.finish(t):this.finish(t,kt.RightCurlyExpected):this.finish(t,kt.IdentifierExpected)}return null},t.prototype._tryParseMixinDeclaration=function(){var e=this.mark(),t=this.create(pt);if(!t.setIdentifier(this._parseMixinDeclarationIdentifier())||!this.accept(r.ParenthesisL))return this.restoreAtMark(e),null;if(t.getParameters().addChild(this._parseMixinParameter()))for(;(this.accept(r.Comma)||this.accept(r.SemiColon))&&!this.peek(r.ParenthesisR);)t.getParameters().addChild(this._parseMixinParameter())||this.markError(t,kt.IdentifierExpected,[],[r.ParenthesisR]);return this.accept(r.ParenthesisR)?(t.setGuard(this._parseGuard()),this.peek(r.CurlyL)?this._parseBody(t,this._parseMixInBodyDeclaration.bind(this)):(this.restoreAtMark(e),null)):(this.restoreAtMark(e),null)},t.prototype._parseMixInBodyDeclaration=function(){return this._parseFontFace()||this._parseRuleSetDeclaration()},t.prototype._parseMixinDeclarationIdentifier=function(){var e;if(this.peekDelim("#")||this.peekDelim(".")){if(e=this.create(le),this.consumeToken(),this.hasWhitespace()||!e.addChild(this._parseIdent()))return null}else{if(!this.peek(r.Hash))return null;e=this.create(le),this.consumeToken()}return e.referenceTypes=[te.Mixin],this.finish(e)},t.prototype._parsePseudo=function(){if(!this.peek(r.Colon))return null;var t=this.mark(),n=this.create(at);return this.consumeToken(),this.acceptIdent("extend")?this._completeExtends(n):(this.restoreAtMark(t),e.prototype._parsePseudo.call(this))},t.prototype._parseExtend=function(){if(!this.peekDelim("&"))return null;var e=this.mark(),t=this.create(at);return this.consumeToken(),!this.hasWhitespace()&&this.accept(r.Colon)&&this.acceptIdent("extend")?this._completeExtends(t):(this.restoreAtMark(e),null)},t.prototype._completeExtends=function(e){if(!this.accept(r.ParenthesisL))return this.finish(e,kt.LeftParenthesisExpected);var t=e.getSelectors();if(!t.addChild(this._parseSelector(!0)))return this.finish(e,kt.SelectorExpected);for(;this.accept(r.Comma);)if(!t.addChild(this._parseSelector(!0)))return this.finish(e,kt.SelectorExpected);return this.accept(r.ParenthesisR)?this.finish(e):this.finish(e,kt.RightParenthesisExpected)},t.prototype._parseDetachedRuleSetMixin=function(){if(!this.peek(r.AtKeyword))return null;var e=this.mark(),t=this.create(dt);return!t.addChild(this._parseVariable(!0))||!this.hasWhitespace()&&this.accept(r.ParenthesisL)?this.accept(r.ParenthesisR)?this.finish(t):this.finish(t,kt.RightParenthesisExpected):(this.restoreAtMark(e),null)},t.prototype._tryParseMixinReference=function(e){void 0===e&&(e=!0);for(var t=this.mark(),n=this.create(dt),i=this._parseMixinDeclarationIdentifier();i;){this.acceptDelim(">");var o=this._parseMixinDeclarationIdentifier();if(!o)break;n.getNamespaces().addChild(i),i=o}if(!n.setIdentifier(i))return this.restoreAtMark(t),null;var s=!1;if(this.accept(r.ParenthesisL)){if(s=!0,n.getArguments().addChild(this._parseMixinArgument()))for(;(this.accept(r.Comma)||this.accept(r.SemiColon))&&!this.peek(r.ParenthesisR);)if(!n.getArguments().addChild(this._parseMixinArgument()))return this.finish(n,kt.ExpressionExpected);if(!this.accept(r.ParenthesisR))return this.finish(n,kt.RightParenthesisExpected);i.referenceTypes=[te.Mixin]}else i.referenceTypes=[te.Mixin,te.Rule];return this.peek(r.BracketL)?e||this._addLookupChildren(n):n.addChild(this._parsePrio()),s||this.peek(r.SemiColon)||this.peek(r.CurlyR)||this.peek(r.EOF)?this.finish(n):(this.restoreAtMark(t),null)},t.prototype._parseMixinArgument=function(){var e=this.create(ke),t=this.mark(),n=this._parseVariable();return n&&(this.accept(r.Colon)?e.setIdentifier(n):this.restoreAtMark(t)),e.setValue(this._parseDetachedRuleSet()||this._parseExpr(!0))?this.finish(e):(this.restoreAtMark(t),null)},t.prototype._parseMixinParameter=function(){var e=this.create(Se);if(this.peekKeyword("@rest")){var t=this.create(se);return this.consumeToken(),this.accept(Io)?(e.setIdentifier(this.finish(t)),this.finish(e)):this.finish(e,kt.DotExpected,[],[r.Comma,r.ParenthesisR])}if(this.peek(Io)){var n=this.create(se);return this.consumeToken(),e.setIdentifier(this.finish(n)),this.finish(e)}var i=!1;return e.setIdentifier(this._parseVariable())&&(this.accept(r.Colon),i=!0),e.setDefaultValue(this._parseDetachedRuleSet()||this._parseExpr(!0))||i?this.finish(e):null},t.prototype._parseGuard=function(){if(!this.peekIdent("when"))return null;var e=this.create(ut);if(this.consumeToken(),e.isNegated=this.acceptIdent("not"),!e.getConditions().addChild(this._parseGuardCondition()))return this.finish(e,kt.ConditionExpected);for(;this.acceptIdent("and")||this.accept(r.Comma);)if(!e.getConditions().addChild(this._parseGuardCondition()))return this.finish(e,kt.ConditionExpected);return this.finish(e)},t.prototype._parseGuardCondition=function(){if(!this.peek(r.ParenthesisL))return null;var e=this.create(ft);return this.consumeToken(),e.addChild(this._parseExpr()),this.accept(r.ParenthesisR)?this.finish(e):this.finish(e,kt.RightParenthesisExpected)},t.prototype._parseFunction=function(){var e=this.mark(),t=this.create(xe);if(!t.setIdentifier(this._parseFunctionIdentifier()))return null;if(this.hasWhitespace()||!this.accept(r.ParenthesisL))return this.restoreAtMark(e),null;if(t.getArguments().addChild(this._parseMixinArgument()))for(;(this.accept(r.Comma)||this.accept(r.SemiColon))&&!this.peek(r.ParenthesisR);)if(!t.getArguments().addChild(this._parseMixinArgument()))return this.finish(t,kt.ExpressionExpected);return this.accept(r.ParenthesisR)?this.finish(t):this.finish(t,kt.RightParenthesisExpected)},t.prototype._parseFunctionIdentifier=function(){if(this.peekDelim("%")){var t=this.create(le);return t.referenceTypes=[te.Function],this.consumeToken(),this.finish(t)}return e.prototype._parseFunctionIdentifier.call(this)},t.prototype._parseURLArgument=function(){var t=this.mark(),n=e.prototype._parseURLArgument.call(this);if(!n||!this.peek(r.ParenthesisR)){this.restoreAtMark(t);var i=this.create(se);return i.addChild(this._parseBinaryExpr()),this.finish(i)}return n}}(ln),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),No=wt();!function(e){function t(t,n){return e.call(this,"@",t,n)||this}_o(t,e),t.prototype.createFunctionProposals=function(e,t,n,r){for(var i=0,o=e;i<o.length;i++){var s=o[i],a={label:s.name,detail:s.example,documentation:s.description,textEdit:Dn.replace(this.getCompletionRange(t),s.name+"($0)"),insertTextFormat:Xn.Snippet,kind:Hn.Function};n&&(a.sortText="z"),r.items.push(a)}return r},t.prototype.getTermProposals=function(n,r,i){var o=t.builtInProposals;return n&&(o=o.filter((function(e){return!e.type||!n.restrictions||-1!==n.restrictions.indexOf(e.type)}))),this.createFunctionProposals(o,r,!0,i),e.prototype.getTermProposals.call(this,n,r,i)},t.prototype.getColorProposals=function(n,r,i){return this.createFunctionProposals(t.colorProposals,r,!1,i),e.prototype.getColorProposals.call(this,n,r,i)},t.prototype.getCompletionsForDeclarationProperty=function(t,n){return this.getCompletionsForSelector(null,!0,n),e.prototype.getCompletionsForDeclarationProperty.call(this,t,n)},t.builtInProposals=[{name:"if",example:"if(condition, trueValue [, falseValue]);",description:No("less.builtin.if","returns one of two values depending on a condition.")},{name:"boolean",example:"boolean(condition);",description:No("less.builtin.boolean",'"store" a boolean test for later evaluation in a guard or if().')},{name:"length",example:"length(@list);",description:No("less.builtin.length","returns the number of elements in a value list")},{name:"extract",example:"extract(@list, index);",description:No("less.builtin.extract","returns a value at the specified position in the list")},{name:"range",example:"range([start, ] end [, step]);",description:No("less.builtin.range","generate a list spanning a range of values")},{name:"each",example:"each(@list, ruleset);",description:No("less.builtin.each","bind the evaluation of a ruleset to each member of a list.")},{name:"escape",example:"escape(@string);",description:No("less.builtin.escape","URL encodes a string")},{name:"e",example:"e(@string);",description:No("less.builtin.e","escape string content")},{name:"replace",example:"replace(@string, @pattern, @replacement[, @flags]);",description:No("less.builtin.replace","string replace")},{name:"unit",example:"unit(@dimension, [@unit: '']);",description:No("less.builtin.unit","remove or change the unit of a dimension")},{name:"color",example:"color(@string);",description:No("less.builtin.color","parses a string to a color"),type:"color"},{name:"convert",example:"convert(@value, unit);",description:No("less.builtin.convert","converts numbers from one type into another")},{name:"data-uri",example:"data-uri([mimetype,] url);",description:No("less.builtin.data-uri","inlines a resource and falls back to `url()`"),type:"url"},{name:"abs",description:No("less.builtin.abs","absolute value of a number"),example:"abs(number);"},{name:"acos",description:No("less.builtin.acos","arccosine - inverse of cosine function"),example:"acos(number);"},{name:"asin",description:No("less.builtin.asin","arcsine - inverse of sine function"),example:"asin(number);"},{name:"ceil",example:"ceil(@number);",description:No("less.builtin.ceil","rounds up to an integer")},{name:"cos",description:No("less.builtin.cos","cosine function"),example:"cos(number);"},{name:"floor",description:No("less.builtin.floor","rounds down to an integer"),example:"floor(@number);"},{name:"percentage",description:No("less.builtin.percentage","converts to a %, e.g. 0.5 > 50%"),example:"percentage(@number);",type:"percentage"},{name:"round",description:No("less.builtin.round","rounds a number to a number of places"),example:"round(number, [places: 0]);"},{name:"sqrt",description:No("less.builtin.sqrt","calculates square root of a number"),example:"sqrt(number);"},{name:"sin",description:No("less.builtin.sin","sine function"),example:"sin(number);"},{name:"tan",description:No("less.builtin.tan","tangent function"),example:"tan(number);"},{name:"atan",description:No("less.builtin.atan","arctangent - inverse of tangent function"),example:"atan(number);"},{name:"pi",description:No("less.builtin.pi","returns pi"),example:"pi();"},{name:"pow",description:No("less.builtin.pow","first argument raised to the power of the second argument"),example:"pow(@base, @exponent);"},{name:"mod",description:No("less.builtin.mod","first argument modulus second argument"),example:"mod(number, number);"},{name:"min",description:No("less.builtin.min","returns the lowest of one or more values"),example:"min(@x, @y);"},{name:"max",description:No("less.builtin.max","returns the lowest of one or more values"),example:"max(@x, @y);"}],t.colorProposals=[{name:"argb",example:"argb(@color);",description:No("less.builtin.argb","creates a #AARRGGBB")},{name:"hsl",example:"hsl(@hue, @saturation, @lightness);",description:No("less.builtin.hsl","creates a color")},{name:"hsla",example:"hsla(@hue, @saturation, @lightness, @alpha);",description:No("less.builtin.hsla","creates a color")},{name:"hsv",example:"hsv(@hue, @saturation, @value);",description:No("less.builtin.hsv","creates a color")},{name:"hsva",example:"hsva(@hue, @saturation, @value, @alpha);",description:No("less.builtin.hsva","creates a color")},{name:"hue",example:"hue(@color);",description:No("less.builtin.hue","returns the `hue` channel of `@color` in the HSL space")},{name:"saturation",example:"saturation(@color);",description:No("less.builtin.saturation","returns the `saturation` channel of `@color` in the HSL space")},{name:"lightness",example:"lightness(@color);",description:No("less.builtin.lightness","returns the `lightness` channel of `@color` in the HSL space")},{name:"hsvhue",example:"hsvhue(@color);",description:No("less.builtin.hsvhue","returns the `hue` channel of `@color` in the HSV space")},{name:"hsvsaturation",example:"hsvsaturation(@color);",description:No("less.builtin.hsvsaturation","returns the `saturation` channel of `@color` in the HSV space")},{name:"hsvvalue",example:"hsvvalue(@color);",description:No("less.builtin.hsvvalue","returns the `value` channel of `@color` in the HSV space")},{name:"red",example:"red(@color);",description:No("less.builtin.red","returns the `red` channel of `@color`")},{name:"green",example:"green(@color);",description:No("less.builtin.green","returns the `green` channel of `@color`")},{name:"blue",example:"blue(@color);",description:No("less.builtin.blue","returns the `blue` channel of `@color`")},{name:"alpha",example:"alpha(@color);",description:No("less.builtin.alpha","returns the `alpha` channel of `@color`")},{name:"luma",example:"luma(@color);",description:No("less.builtin.luma","returns the `luma` value (perceptual brightness) of `@color`")},{name:"saturate",example:"saturate(@color, 10%);",description:No("less.builtin.saturate","return `@color` 10% points more saturated")},{name:"desaturate",example:"desaturate(@color, 10%);",description:No("less.builtin.desaturate","return `@color` 10% points less saturated")},{name:"lighten",example:"lighten(@color, 10%);",description:No("less.builtin.lighten","return `@color` 10% points lighter")},{name:"darken",example:"darken(@color, 10%);",description:No("less.builtin.darken","return `@color` 10% points darker")},{name:"fadein",example:"fadein(@color, 10%);",description:No("less.builtin.fadein","return `@color` 10% points less transparent")},{name:"fadeout",example:"fadeout(@color, 10%);",description:No("less.builtin.fadeout","return `@color` 10% points more transparent")},{name:"fade",example:"fade(@color, 50%);",description:No("less.builtin.fade","return `@color` with 50% transparency")},{name:"spin",example:"spin(@color, 10);",description:No("less.builtin.spin","return `@color` with a 10 degree larger in hue")},{name:"mix",example:"mix(@color1, @color2, [@weight: 50%]);",description:No("less.builtin.mix","return a mix of `@color1` and `@color2`")},{name:"greyscale",example:"greyscale(@color);",description:No("less.builtin.greyscale","returns a grey, 100% desaturated color")},{name:"contrast",example:"contrast(@color1, [@darkcolor: black], [@lightcolor: white], [@threshold: 43%]);",description:No("less.builtin.contrast","return `@darkcolor` if `@color1 is> 43% luma` otherwise return `@lightcolor`, see notes")},{name:"multiply",example:"multiply(@color1, @color2);"},{name:"screen",example:"screen(@color1, @color2);"},{name:"overlay",example:"overlay(@color1, @color2);"},{name:"softlight",example:"softlight(@color1, @color2);"},{name:"hardlight",example:"hardlight(@color1, @color2);"},{name:"difference",example:"difference(@color1, @color2);"},{name:"exclusion",example:"exclusion(@color1, @color2);"},{name:"average",example:"average(@color1, @color2);"},{name:"negation",example:"negation(@color1, @color2);"}]}(Zr);var Ao={version:1.1,properties:[{name:"additive-symbols",browsers:["FF33"],syntax:"[ <integer> && <symbol> ]#",relevance:50,description:"@counter-style descriptor. Specifies the symbols used by the marker-construction algorithm specified by the system descriptor. Needs to be specified if the counter system is 'additive'.",restrictions:["integer","string","image","identifier"]},{name:"align-content",values:[{name:"center",description:"Lines are packed toward the center of the flex container."},{name:"flex-end",description:"Lines are packed toward the end of the flex container."},{name:"flex-start",description:"Lines are packed toward the start of the flex container."},{name:"space-around",description:"Lines are evenly distributed in the flex container, with half-size spaces on either end."},{name:"space-between",description:"Lines are evenly distributed in the flex container."},{name:"stretch",description:"Lines stretch to take up the remaining space."}],syntax:"normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>",relevance:60,description:"Aligns a flex container\u2019s lines within the flex container when there is extra space in the cross-axis, similar to how 'justify-content' aligns individual items within the main-axis.",restrictions:["enum"]},{name:"align-items",values:[{name:"baseline",description:"If the flex item\u2019s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment."},{name:"center",description:"The flex item\u2019s margin box is centered in the cross axis within the line."},{name:"flex-end",description:"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line."},{name:"flex-start",description:"The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line."},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."}],syntax:"normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]",relevance:83,description:"Aligns flex items along the cross axis of the current line of the flex container.",restrictions:["enum"]},{name:"justify-items",values:[{name:"auto"},{name:"normal"},{name:"end"},{name:"start"},{name:"flex-end",description:'"Flex items are packed toward the end of the line."'},{name:"flex-start",description:'"Flex items are packed toward the start of the line."'},{name:"self-end",description:"The item is packed flush to the edge of the alignment container of the end side of the item, in the appropriate axis."},{name:"self-start",description:"The item is packed flush to the edge of the alignment container of the start side of the item, in the appropriate axis.."},{name:"center",description:"The items are packed flush to each other toward the center of the of the alignment container."},{name:"left"},{name:"right"},{name:"baseline"},{name:"first baseline"},{name:"last baseline"},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."},{name:"save"},{name:"unsave"},{name:"legacy"}],syntax:"normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]",relevance:51,description:"Defines the default justify-self for all items of the box, giving them the default way of justifying each box along the appropriate axis",restrictions:["enum"]},{name:"justify-self",values:[{name:"auto"},{name:"normal"},{name:"end"},{name:"start"},{name:"flex-end",description:'"Flex items are packed toward the end of the line."'},{name:"flex-start",description:'"Flex items are packed toward the start of the line."'},{name:"self-end",description:"The item is packed flush to the edge of the alignment container of the end side of the item, in the appropriate axis."},{name:"self-start",description:"The item is packed flush to the edge of the alignment container of the start side of the item, in the appropriate axis.."},{name:"center",description:"The items are packed flush to each other toward the center of the of the alignment container."},{name:"left"},{name:"right"},{name:"baseline"},{name:"first baseline"},{name:"last baseline"},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."},{name:"save"},{name:"unsave"}],syntax:"auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]",relevance:52,description:"Defines the way of justifying a box inside its container along the appropriate axis.",restrictions:["enum"]},{name:"align-self",values:[{name:"auto",description:"Computes to the value of 'align-items' on the element\u2019s parent, or 'stretch' if the element has no parent. On absolutely positioned elements, it computes to itself."},{name:"baseline",description:"If the flex item\u2019s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment."},{name:"center",description:"The flex item\u2019s margin box is centered in the cross axis within the line."},{name:"flex-end",description:"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line."},{name:"flex-start",description:"The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line."},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."}],syntax:"auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>",relevance:70,description:"Allows the default alignment along the cross axis to be overridden for individual flex items.",restrictions:["enum"]},{name:"all",browsers:["E79","FF27","S9.1","C37","O24"],values:[],syntax:"initial | inherit | unset | revert",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/all"}],description:"Shorthand that resets all properties except 'direction' and 'unicode-bidi'.",restrictions:["enum"]},{name:"alt",browsers:["S9"],values:[],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/alt"}],description:"Provides alternative text for assistive technology to replace the generated content of a ::before or ::after element.",restrictions:["string","enum"]},{name:"animation",values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"infinite",description:"Causes the animation to repeat forever."},{name:"none",description:"No animation is performed"},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],syntax:"<single-animation>#",relevance:80,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation"}],description:"Shorthand property combines six of the animation properties into a single property.",restrictions:["time","timing-function","enum","identifier","number"]},{name:"animation-delay",syntax:"<time>#",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-delay"}],description:"Defines when the animation will start.",restrictions:["time"]},{name:"animation-direction",values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],syntax:"<single-animation-direction>#",relevance:56,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-direction"}],description:"Defines whether or not the animation should play in reverse on alternate cycles.",restrictions:["enum"]},{name:"animation-duration",syntax:"<time>#",relevance:65,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-duration"}],description:"Defines the length of time that an animation takes to complete one cycle.",restrictions:["time"]},{name:"animation-fill-mode",values:[{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"none",description:"There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes."}],syntax:"<single-animation-fill-mode>#",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode"}],description:"Defines what values are applied by the animation outside the time it is executing.",restrictions:["enum"]},{name:"animation-iteration-count",values:[{name:"infinite",description:"Causes the animation to repeat forever."}],syntax:"<single-animation-iteration-count>#",relevance:59,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count"}],description:"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.",restrictions:["number","enum"]},{name:"animation-name",values:[{name:"none",description:"No animation is performed"}],syntax:"[ none | <keyframes-name> ]#",relevance:65,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-name"}],description:"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.",restrictions:["identifier","enum"]},{name:"animation-play-state",values:[{name:"paused",description:"A running animation will be paused."},{name:"running",description:"Resume playback of a paused animation."}],syntax:"<single-animation-play-state>#",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-play-state"}],description:"Defines whether the animation is running or paused.",restrictions:["enum"]},{name:"animation-timing-function",syntax:"<easing-function>#",relevance:68,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-timing-function"}],description:"Describes how the animation will progress over one cycle of its duration.",restrictions:["timing-function"]},{name:"backface-visibility",values:[{name:"hidden",description:"Back side is hidden."},{name:"visible",description:"Back side is visible."}],syntax:"visible | hidden",relevance:59,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/backface-visibility"}],description:"Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.",restrictions:["enum"]},{name:"background",values:[{name:"fixed",description:"The background is fixed with regard to the viewport. In paged media where there is no viewport, a 'fixed' background is fixed with respect to the page box and therefore replicated on every page."},{name:"local",description:"The background is fixed with regard to the element's contents: if the element has a scrolling mechanism, the background scrolls with the element's contents."},{name:"none",description:"A value of 'none' counts as an image layer but draws nothing."},{name:"scroll",description:"The background is fixed with regard to the element itself and does not scroll with its contents. (It is effectively attached to the element's border.)"}],syntax:"[ <bg-layer> , ]* <final-bg-layer>",relevance:93,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background"}],description:"Shorthand property for setting most background properties at the same place in the style sheet.",restrictions:["enum","image","color","position","length","repeat","percentage","box"]},{name:"background-attachment",values:[{name:"fixed",description:"The background is fixed with regard to the viewport. In paged media where there is no viewport, a 'fixed' background is fixed with respect to the page box and therefore replicated on every page."},{name:"local",description:"The background is fixed with regard to the element\u2019s contents: if the element has a scrolling mechanism, the background scrolls with the element\u2019s contents."},{name:"scroll",description:"The background is fixed with regard to the element itself and does not scroll with its contents. (It is effectively attached to the element\u2019s border.)"}],syntax:"<attachment>#",relevance:54,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-attachment"}],description:"Specifies whether the background images are fixed with regard to the viewport ('fixed') or scroll along with the element ('scroll') or its contents ('local').",restrictions:["enum"]},{name:"background-blend-mode",browsers:["E79","FF30","S8","C35","O22"],values:[{name:"normal",description:"Default attribute which specifies no blending"},{name:"multiply",description:"The source color is multiplied by the destination color and replaces the destination."},{name:"screen",description:"Multiplies the complements of the backdrop and source color values, then complements the result."},{name:"overlay",description:"Multiplies or screens the colors, depending on the backdrop color value."},{name:"darken",description:"Selects the darker of the backdrop and source colors."},{name:"lighten",description:"Selects the lighter of the backdrop and source colors."},{name:"color-dodge",description:"Brightens the backdrop color to reflect the source color."},{name:"color-burn",description:"Darkens the backdrop color to reflect the source color."},{name:"hard-light",description:"Multiplies or screens the colors, depending on the source color value."},{name:"soft-light",description:"Darkens or lightens the colors, depending on the source color value."},{name:"difference",description:"Subtracts the darker of the two constituent colors from the lighter color.."},{name:"exclusion",description:"Produces an effect similar to that of the Difference mode but lower in contrast."},{name:"hue",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the hue of the source color and the saturation and luminosity of the backdrop color."},{name:"saturation",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the saturation of the source color and the hue and luminosity of the backdrop color."},{name:"color",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the hue and saturation of the source color and the luminosity of the backdrop color."},{name:"luminosity",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the luminosity of the source color and the hue and saturation of the backdrop color."}],syntax:"<blend-mode>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-blend-mode"}],description:"Defines the blending mode of each background layer.",restrictions:["enum"]},{name:"background-clip",syntax:"<box>#",relevance:67,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-clip"}],description:"Determines the background painting area.",restrictions:["box"]},{name:"background-color",syntax:"<color>",relevance:94,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-color"}],description:"Sets the background color of an element.",restrictions:["color"]},{name:"background-image",values:[{name:"none",description:"Counts as an image layer but draws nothing."}],syntax:"<bg-image>#",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-image"}],description:"Sets the background image(s) of an element.",restrictions:["image","enum"]},{name:"background-origin",syntax:"<box>#",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-origin"}],description:"For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).",restrictions:["box"]},{name:"background-position",syntax:"<bg-position>#",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-position"}],description:"Specifies the initial position of the background image(s) (after any resizing) within their corresponding background positioning area.",restrictions:["position","length","percentage"]},{name:"background-position-x",values:[{name:"center",description:"Equivalent to '50%' ('left 50%') for the horizontal position if the horizontal position is not otherwise specified, or '50%' ('top 50%') for the vertical position if it is."},{name:"left",description:"Equivalent to '0%' for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset."},{name:"right",description:"Equivalent to '100%' for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset."}],status:"experimental",syntax:"[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-position-x"}],description:"If background images have been specified, this property specifies their initial position (after any resizing) within their corresponding background positioning area.",restrictions:["length","percentage"]},{name:"background-position-y",values:[{name:"bottom",description:"Equivalent to '100%' for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset."},{name:"center",description:"Equivalent to '50%' ('left 50%') for the horizontal position if the horizontal position is not otherwise specified, or '50%' ('top 50%') for the vertical position if it is."},{name:"top",description:"Equivalent to '0%' for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset."}],status:"experimental",syntax:"[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-position-y"}],description:"If background images have been specified, this property specifies their initial position (after any resizing) within their corresponding background positioning area.",restrictions:["length","percentage"]},{name:"background-repeat",values:[],syntax:"<repeat-style>#",relevance:86,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-repeat"}],description:"Specifies how background images are tiled after they have been sized and positioned.",restrictions:["repeat"]},{name:"background-size",values:[{name:"auto",description:"Resolved by using the image\u2019s intrinsic ratio and the size of the other dimension, or failing that, using the image\u2019s intrinsic size, or failing that, treating it as 100%."},{name:"contain",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area."},{name:"cover",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area."}],syntax:"<bg-size>#",relevance:86,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-size"}],description:"Specifies the size of the background images.",restrictions:["length","percentage"]},{name:"behavior",browsers:["IE6"],relevance:50,description:"IE only. Used to extend behaviors of the browser.",restrictions:["url"]},{name:"block-size",browsers:["E79","FF41","S12.1","C57","O44"],values:[{name:"auto",description:"Depends on the values of other properties."}],syntax:"<'width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/block-size"}],description:"Logical 'width'. Mapping depends on the element\u2019s 'writing-mode'.",restrictions:["length","percentage"]},{name:"border",syntax:"<line-width> || <line-style> || <color>",relevance:96,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border"}],description:"Shorthand property for setting border width, style, and color.",restrictions:["length","line-width","line-style","color"]},{name:"border-block-end",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'> || <'border-top-style'> || <color>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end"}],description:"Logical 'border-bottom'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width","line-style","color"]},{name:"border-block-start",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'> || <'border-top-style'> || <color>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start"}],description:"Logical 'border-top'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width","line-style","color"]},{name:"border-block-end-color",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end-color"}],description:"Logical 'border-bottom-color'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["color"]},{name:"border-block-start-color",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start-color"}],description:"Logical 'border-top-color'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["color"]},{name:"border-block-end-style",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end-style"}],description:"Logical 'border-bottom-style'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["line-style"]},{name:"border-block-start-style",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start-style"}],description:"Logical 'border-top-style'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["line-style"]},{name:"border-block-end-width",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end-width"}],description:"Logical 'border-bottom-width'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width"]},{name:"border-block-start-width",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start-width"}],description:"Logical 'border-top-width'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width"]},{name:"border-bottom",syntax:"<line-width> || <line-style> || <color>",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom"}],description:"Shorthand property for setting border width, style and color.",restrictions:["length","line-width","line-style","color"]},{name:"border-bottom-color",syntax:"<'border-top-color'>",relevance:71,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-color"}],description:"Sets the color of the bottom border.",restrictions:["color"]},{name:"border-bottom-left-radius",syntax:"<length-percentage>{1,2}",relevance:75,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius"}],description:"Defines the radii of the bottom left outer border edge.",restrictions:["length","percentage"]},{name:"border-bottom-right-radius",syntax:"<length-percentage>{1,2}",relevance:74,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius"}],description:"Defines the radii of the bottom right outer border edge.",restrictions:["length","percentage"]},{name:"border-bottom-style",syntax:"<line-style>",relevance:57,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-style"}],description:"Sets the style of the bottom border.",restrictions:["line-style"]},{name:"border-bottom-width",syntax:"<line-width>",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-width"}],description:"Sets the thickness of the bottom border.",restrictions:["length","line-width"]},{name:"border-collapse",values:[{name:"collapse",description:"Selects the collapsing borders model."},{name:"separate",description:"Selects the separated borders border model."}],syntax:"collapse | separate",relevance:75,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-collapse"}],description:"Selects a table's border model.",restrictions:["enum"]},{name:"border-color",values:[],syntax:"<color>{1,4}",relevance:87,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-color"}],description:"The color of the border around all four edges of an element.",restrictions:["color"]},{name:"border-image",values:[{name:"auto",description:"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead."},{name:"fill",description:"Causes the middle part of the border-image to be preserved."},{name:"none",description:"Use the border styles."},{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."},{name:"url()"}],syntax:"<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image"}],description:"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.",restrictions:["length","percentage","number","url","enum"]},{name:"border-image-outset",syntax:"[ <length> | <number> ]{1,4}",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-outset"}],description:"The values specify the amount by which the border image area extends beyond the border box on the top, right, bottom, and left sides respectively. If the fourth value is absent, it is the same as the second. If the third one is also absent, it is the same as the first. If the second one is also absent, it is the same as the first. Numbers represent multiples of the corresponding border-width.",restrictions:["length","number"]},{name:"border-image-repeat",values:[{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."}],syntax:"[ stretch | repeat | round | space ]{1,2}",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-repeat"}],description:"Specifies how the images for the sides and the middle part of the border image are scaled and tiled. If the second keyword is absent, it is assumed to be the same as the first.",restrictions:["enum"]},{name:"border-image-slice",values:[{name:"fill",description:"Causes the middle part of the border-image to be preserved."}],syntax:"<number-percentage>{1,4} && fill?",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-slice"}],description:"Specifies inward offsets from the top, right, bottom, and left edges of the image, dividing it into nine regions: four corners, four edges and a middle.",restrictions:["number","percentage"]},{name:"border-image-source",values:[{name:"none",description:"Use the border styles."}],syntax:"none | <image>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-source"}],description:"Specifies an image to use instead of the border styles given by the 'border-style' properties and as an additional background layer for the element. If the value is 'none' or if the image cannot be displayed, the border styles will be used.",restrictions:["image"]},{name:"border-image-width",values:[{name:"auto",description:"The border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead."}],syntax:"[ <length-percentage> | <number> | auto ]{1,4}",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-width"}],description:"The four values of 'border-image-width' specify offsets that are used to divide the border image area into nine parts. They represent inward distances from the top, right, bottom, and left sides of the area, respectively.",restrictions:["length","percentage","number"]},{name:"border-inline-end",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'> || <'border-top-style'> || <color>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-end"}],description:"Logical 'border-right'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width","line-style","color"]},{name:"border-inline-start",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'> || <'border-top-style'> || <color>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-start"}],description:"Logical 'border-left'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width","line-style","color"]},{name:"border-inline-end-color",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-end-color"}],description:"Logical 'border-right-color'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["color"]},{name:"border-inline-start-color",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-start-color"}],description:"Logical 'border-left-color'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["color"]},{name:"border-inline-end-style",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-end-style"}],description:"Logical 'border-right-style'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["line-style"]},{name:"border-inline-start-style",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-start-style"}],description:"Logical 'border-left-style'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["line-style"]},{name:"border-inline-end-width",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-end-width"}],description:"Logical 'border-right-width'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width"]},{name:"border-inline-start-width",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-start-width"}],description:"Logical 'border-left-width'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width"]},{name:"border-left",syntax:"<line-width> || <line-style> || <color>",relevance:83,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-left"}],description:"Shorthand property for setting border width, style and color",restrictions:["length","line-width","line-style","color"]},{name:"border-left-color",syntax:"<color>",relevance:65,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-left-color"}],description:"Sets the color of the left border.",restrictions:["color"]},{name:"border-left-style",syntax:"<line-style>",relevance:54,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-left-style"}],description:"Sets the style of the left border.",restrictions:["line-style"]},{name:"border-left-width",syntax:"<line-width>",relevance:58,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-left-width"}],description:"Sets the thickness of the left border.",restrictions:["length","line-width"]},{name:"border-radius",syntax:"<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-radius"}],description:"Defines the radii of the outer border edge.",restrictions:["length","percentage"]},{name:"border-right",syntax:"<line-width> || <line-style> || <color>",relevance:81,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-right"}],description:"Shorthand property for setting border width, style and color",restrictions:["length","line-width","line-style","color"]},{name:"border-right-color",syntax:"<color>",relevance:64,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-right-color"}],description:"Sets the color of the right border.",restrictions:["color"]},{name:"border-right-style",syntax:"<line-style>",relevance:54,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-right-style"}],description:"Sets the style of the right border.",restrictions:["line-style"]},{name:"border-right-width",syntax:"<line-width>",relevance:60,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-right-width"}],description:"Sets the thickness of the right border.",restrictions:["length","line-width"]},{name:"border-spacing",syntax:"<length> <length>?",relevance:68,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-spacing"}],description:"The lengths specify the distance that separates adjoining cell borders. If one length is specified, it gives both the horizontal and vertical spacing. If two are specified, the first gives the horizontal spacing and the second the vertical spacing. Lengths may not be negative.",restrictions:["length"]},{name:"border-style",values:[],syntax:"<line-style>{1,4}",relevance:80,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-style"}],description:"The style of the border around edges of an element.",restrictions:["line-style"]},{name:"border-top",syntax:"<line-width> || <line-style> || <color>",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top"}],description:"Shorthand property for setting border width, style and color",restrictions:["length","line-width","line-style","color"]},{name:"border-top-color",syntax:"<color>",relevance:72,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top-color"}],description:"Sets the color of the top border.",restrictions:["color"]},{name:"border-top-left-radius",syntax:"<length-percentage>{1,2}",relevance:75,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius"}],description:"Defines the radii of the top left outer border edge.",restrictions:["length","percentage"]},{name:"border-top-right-radius",syntax:"<length-percentage>{1,2}",relevance:73,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius"}],description:"Defines the radii of the top right outer border edge.",restrictions:["length","percentage"]},{name:"border-top-style",syntax:"<line-style>",relevance:57,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top-style"}],description:"Sets the style of the top border.",restrictions:["line-style"]},{name:"border-top-width",syntax:"<line-width>",relevance:61,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top-width"}],description:"Sets the thickness of the top border.",restrictions:["length","line-width"]},{name:"border-width",values:[],syntax:"<line-width>{1,4}",relevance:82,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-width"}],description:"Shorthand that sets the four 'border-*-width' properties. If it has four values, they set top, right, bottom and left in that order. If left is missing, it is the same as right; if bottom is missing, it is the same as top; if right is missing, it is the same as top.",restrictions:["length","line-width"]},{name:"bottom",values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well"}],syntax:"<length> | <percentage> | auto",relevance:90,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/bottom"}],description:"Specifies how far an absolutely positioned box's bottom margin edge is offset above the bottom edge of the box's 'containing block'.",restrictions:["length","percentage"]},{name:"box-decoration-break",browsers:["E79","FF32","S6.1","C22","O15"],values:[{name:"clone",description:"Each box is independently wrapped with the border and padding."},{name:"slice",description:"The effect is as though the element were rendered with no breaks present, and then sliced by the breaks afterward."}],syntax:"slice | clone",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-decoration-break"}],description:"Specifies whether individual boxes are treated as broken pieces of one continuous box, or whether each box is individually wrapped with the border and padding.",restrictions:["enum"]},{name:"box-shadow",values:[{name:"inset",description:"Changes the drop shadow from an outer shadow (one that shadows the box onto the canvas, as if it were lifted above the canvas) to an inner shadow (one that shadows the canvas onto the box, as if the box were cut out of the canvas and shifted behind it)."},{name:"none",description:"No shadow."}],syntax:"none | <shadow>#",relevance:90,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-shadow"}],description:"Attaches one or more drop-shadows to the box. The property is a comma-separated list of shadows, each specified by 2-4 length values, an optional color, and an optional 'inset' keyword. Omitted lengths are 0; omitted colors are a user agent chosen color.",restrictions:["length","color","enum"]},{name:"box-sizing",values:[{name:"border-box",description:"The specified width and height (and respective min/max properties) on this element determine the border box of the element."},{name:"content-box",description:"Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element."}],syntax:"content-box | border-box",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-sizing"}],description:"Specifies the behavior of the 'width' and 'height' properties.",restrictions:["enum"]},{name:"break-after",values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the principal box."},{name:"avoid",description:"Avoid a break before/after the principal box."},{name:"avoid-column",description:"Avoid a column break before/after the principal box."},{name:"avoid-page",description:"Avoid a page break before/after the principal box."},{name:"column",description:"Always force a column break before/after the principal box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the principal box."},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],syntax:"auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region",relevance:50,description:"Describes the page/column/region break behavior after the generated box.",restrictions:["enum"]},{name:"break-before",values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the principal box."},{name:"avoid",description:"Avoid a break before/after the principal box."},{name:"avoid-column",description:"Avoid a column break before/after the principal box."},{name:"avoid-page",description:"Avoid a page break before/after the principal box."},{name:"column",description:"Always force a column break before/after the principal box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the principal box."},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],syntax:"auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region",relevance:50,description:"Describes the page/column/region break behavior before the generated box.",restrictions:["enum"]},{name:"break-inside",values:[{name:"auto",description:"Impose no additional breaking constraints within the box."},{name:"avoid",description:"Avoid breaks within the box."},{name:"avoid-column",description:"Avoid a column break within the box."},{name:"avoid-page",description:"Avoid a page break within the box."}],syntax:"auto | avoid | avoid-page | avoid-column | avoid-region",relevance:50,description:"Describes the page/column/region break behavior inside the principal box.",restrictions:["enum"]},{name:"caption-side",values:[{name:"bottom",description:"Positions the caption box below the table box."},{name:"top",description:"Positions the caption box above the table box."}],syntax:"top | bottom | block-start | block-end | inline-start | inline-end",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/caption-side"}],description:"Specifies the position of the caption box with respect to the table box.",restrictions:["enum"]},{name:"caret-color",browsers:["E79","FF53","S11.1","C57","O44"],values:[{name:"auto",description:"The user agent selects an appropriate color for the caret. This is generally currentcolor, but the user agent may choose a different color to ensure good visibility and contrast with the surrounding content, taking into account the value of currentcolor, the background, shadows, and other factors."}],syntax:"auto | <color>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/caret-color"}],description:"Controls the color of the text insertion indicator.",restrictions:["color","enum"]},{name:"clear",values:[{name:"both",description:"The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any right-floating and left-floating boxes that resulted from elements earlier in the source document."},{name:"left",description:"The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any left-floating boxes that resulted from elements earlier in the source document."},{name:"none",description:"No constraint on the box's position with respect to floats."},{name:"right",description:"The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any right-floating boxes that resulted from elements earlier in the source document."}],syntax:"none | left | right | both | inline-start | inline-end",relevance:85,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/clear"}],description:"Indicates which sides of an element's box(es) may not be adjacent to an earlier floating box. The 'clear' property does not consider floats inside the element itself or in other block formatting contexts.",restrictions:["enum"]},{name:"clip",values:[{name:"auto",description:"The element does not clip."},{name:"rect()",description:"Specifies offsets from the edges of the border box."}],syntax:"<shape> | auto",relevance:73,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/clip"}],description:"Deprecated. Use the 'clip-path' property when support allows. Defines the visible portion of an element\u2019s box.",restrictions:["enum"]},{name:"clip-path",values:[{name:"none",description:"No clipping path gets created."},{name:"url()",description:"References a <clipPath> element to create a clipping path."}],syntax:"<clip-source> | [ <basic-shape> || <geometry-box> ] | none",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/clip-path"}],description:"Specifies a clipping path where everything inside the path is visible and everything outside is clipped out.",restrictions:["url","shape","geometry-box","enum"]},{name:"clip-rule",browsers:["E","C5","FF3","IE10","O9","S6"],values:[{name:"evenodd",description:"Determines the \u2018insideness\u2019 of a point on the canvas by drawing a ray from that point to infinity in any direction and counting the number of path segments from the given shape that the ray crosses."},{name:"nonzero",description:"Determines the \u2018insideness\u2019 of a point on the canvas by drawing a ray from that point to infinity in any direction and then examining the places where a segment of the shape crosses the ray."}],relevance:50,description:"Indicates the algorithm which is to be used to determine what parts of the canvas are included inside the shape.",restrictions:["enum"]},{name:"color",syntax:"<color>",relevance:95,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/color"}],description:"Sets the color of an element's text",restrictions:["color"]},{name:"color-interpolation-filters",browsers:["E","C5","FF3","IE10","O9","S6"],values:[{name:"auto",description:"Color operations are not required to occur in a particular color space."},{name:"linearRGB",description:"Color operations should occur in the linearized RGB color space."},{name:"sRGB",description:"Color operations should occur in the sRGB color space."}],relevance:50,description:"Specifies the color space for imaging operations performed via filter effects.",restrictions:["enum"]},{name:"column-count",values:[{name:"auto",description:"Determines the number of columns by the 'column-width' property and the element width."}],syntax:"<integer> | auto",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-count"}],description:"Describes the optimal number of columns into which the content of the element will be flowed.",restrictions:["integer","enum"]},{name:"column-fill",values:[{name:"auto",description:"Fills columns sequentially."},{name:"balance",description:"Balance content equally between columns, if possible."}],syntax:"auto | balance | balance-all",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-fill"}],description:"In continuous media, this property will only be consulted if the length of columns has been constrained. Otherwise, columns will automatically be balanced.",restrictions:["enum"]},{name:"column-gap",values:[{name:"normal",description:"User agent specific and typically equivalent to 1em."}],syntax:"normal | <length-percentage>",relevance:52,description:"Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.",restrictions:["length","enum"]},{name:"column-rule",syntax:"<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-rule"}],description:"Shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.",restrictions:["length","line-width","line-style","color"]},{name:"column-rule-color",syntax:"<color>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-rule-color"}],description:"Sets the color of the column rule",restrictions:["color"]},{name:"column-rule-style",syntax:"<'border-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-rule-style"}],description:"Sets the style of the rule between columns of an element.",restrictions:["line-style"]},{name:"column-rule-width",syntax:"<'border-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-rule-width"}],description:"Sets the width of the rule between columns. Negative values are not allowed.",restrictions:["length","line-width"]},{name:"columns",values:[{name:"auto",description:"The width depends on the values of other properties."}],syntax:"<'column-width'> || <'column-count'>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/columns"}],description:"A shorthand property which sets both 'column-width' and 'column-count'.",restrictions:["length","integer","enum"]},{name:"column-span",values:[{name:"all",description:"The element spans across all columns. Content in the normal flow that appears before the element is automatically balanced across all columns before the element appear."},{name:"none",description:"The element does not span multiple columns."}],syntax:"none | all",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-span"}],description:"Describes the page/column break behavior after the generated box.",restrictions:["enum"]},{name:"column-width",values:[{name:"auto",description:"The width depends on the values of other properties."}],syntax:"<length> | auto",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-width"}],description:"Describes the width of columns in multicol elements.",restrictions:["length","enum"]},{name:"contain",browsers:["E79","FF69","C52","O40"],values:[{name:"none",description:"Indicates that the property has no effect."},{name:"strict",description:"Turns on all forms of containment for the element."},{name:"content",description:"All containment rules except size are applied to the element."},{name:"size",description:"For properties that can have effects on more than just an element and its descendants, those effects don't escape the containing element."},{name:"layout",description:"Turns on layout containment for the element."},{name:"style",description:"Turns on style containment for the element."},{name:"paint",description:"Turns on paint containment for the element."}],syntax:"none | strict | content | [ size || layout || style || paint ]",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/contain"}],description:"Indicates that an element and its contents are, as much as possible, independent of the rest of the document tree.",restrictions:["enum"]},{name:"content",values:[{name:"attr()",description:"The attr(n) function returns as a string the value of attribute n for the subject of the selector."},{name:"counter(name)",description:"Counters are denoted by identifiers (see the 'counter-increment' and 'counter-reset' properties)."},{name:"icon",description:"The (pseudo-)element is replaced in its entirety by the resource referenced by its 'icon' property, and treated as a replaced element."},{name:"none",description:"On elements, this inhibits the children of the element from being rendered as children of this element, as if the element was empty. On pseudo-elements it causes the pseudo-element to have no content."},{name:"normal",description:"See http://www.w3.org/TR/css3-content/#content for computation rules."},{name:"url()"}],syntax:"normal | none | [ <content-replacement> | <content-list> ] [/ <string> ]?",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/content"}],description:"Determines which page-based occurrence of a given element is applied to a counter or string value.",restrictions:["string","url"]},{name:"counter-increment",values:[{name:"none",description:"This element does not alter the value of any counters."}],syntax:"[ <custom-ident> <integer>? ]+ | none",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/counter-increment"}],description:"Manipulate the value of existing counters.",restrictions:["identifier","integer"]},{name:"counter-reset",values:[{name:"none",description:"The counter is not modified."}],syntax:"[ <custom-ident> <integer>? ]+ | none",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/counter-reset"}],description:"Property accepts one or more names of counters (identifiers), each one optionally followed by an integer. The integer gives the value that the counter is set to on each occurrence of the element.",restrictions:["identifier","integer"]},{name:"cursor",values:[{name:"alias",description:"Indicates an alias of/shortcut to something is to be created. Often rendered as an arrow with a small curved arrow next to it."},{name:"all-scroll",description:"Indicates that the something can be scrolled in any direction. Often rendered as arrows pointing up, down, left, and right with a dot in the middle."},{name:"auto",description:"The UA determines the cursor to display based on the current context."},{name:"cell",description:"Indicates that a cell or set of cells may be selected. Often rendered as a thick plus-sign with a dot in the middle."},{name:"col-resize",description:"Indicates that the item/column can be resized horizontally. Often rendered as arrows pointing left and right with a vertical bar separating them."},{name:"context-menu",description:"A context menu is available for the object under the cursor. Often rendered as an arrow with a small menu-like graphic next to it."},{name:"copy",description:"Indicates something is to be copied. Often rendered as an arrow with a small plus sign next to it."},{name:"crosshair",description:"A simple crosshair (e.g., short line segments resembling a '+' sign). Often used to indicate a two dimensional bitmap selection mode."},{name:"default",description:"The platform-dependent default cursor. Often rendered as an arrow."},{name:"e-resize",description:"Indicates that east edge is to be moved."},{name:"ew-resize",description:"Indicates a bidirectional east-west resize cursor."},{name:"grab",description:"Indicates that something can be grabbed."},{name:"grabbing",description:"Indicates that something is being grabbed."},{name:"help",description:"Help is available for the object under the cursor. Often rendered as a question mark or a balloon."},{name:"move",description:"Indicates something is to be moved."},{name:"-moz-grab",description:"Indicates that something can be grabbed."},{name:"-moz-grabbing",description:"Indicates that something is being grabbed."},{name:"-moz-zoom-in",description:"Indicates that something can be zoomed (magnified) in."},{name:"-moz-zoom-out",description:"Indicates that something can be zoomed (magnified) out."},{name:"ne-resize",description:"Indicates that movement starts from north-east corner."},{name:"nesw-resize",description:"Indicates a bidirectional north-east/south-west cursor."},{name:"no-drop",description:"Indicates that the dragged item cannot be dropped at the current cursor location. Often rendered as a hand or pointer with a small circle with a line through it."},{name:"none",description:"No cursor is rendered for the element."},{name:"not-allowed",description:"Indicates that the requested action will not be carried out. Often rendered as a circle with a line through it."},{name:"n-resize",description:"Indicates that north edge is to be moved."},{name:"ns-resize",description:"Indicates a bidirectional north-south cursor."},{name:"nw-resize",description:"Indicates that movement starts from north-west corner."},{name:"nwse-resize",description:"Indicates a bidirectional north-west/south-east cursor."},{name:"pointer",description:"The cursor is a pointer that indicates a link."},{name:"progress",description:"A progress indicator. The program is performing some processing, but is different from 'wait' in that the user may still interact with the program. Often rendered as a spinning beach ball, or an arrow with a watch or hourglass."},{name:"row-resize",description:"Indicates that the item/row can be resized vertically. Often rendered as arrows pointing up and down with a horizontal bar separating them."},{name:"se-resize",description:"Indicates that movement starts from south-east corner."},{name:"s-resize",description:"Indicates that south edge is to be moved."},{name:"sw-resize",description:"Indicates that movement starts from south-west corner."},{name:"text",description:"Indicates text that may be selected. Often rendered as a vertical I-beam."},{name:"vertical-text",description:"Indicates vertical-text that may be selected. Often rendered as a horizontal I-beam."},{name:"wait",description:"Indicates that the program is busy and the user should wait. Often rendered as a watch or hourglass."},{name:"-webkit-grab",description:"Indicates that something can be grabbed."},{name:"-webkit-grabbing",description:"Indicates that something is being grabbed."},{name:"-webkit-zoom-in",description:"Indicates that something can be zoomed (magnified) in."},{name:"-webkit-zoom-out",description:"Indicates that something can be zoomed (magnified) out."},{name:"w-resize",description:"Indicates that west edge is to be moved."},{name:"zoom-in",description:"Indicates that something can be zoomed (magnified) in."},{name:"zoom-out",description:"Indicates that something can be zoomed (magnified) out."}],syntax:"[ [ <url> [ <x> <y> ]? , ]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out | grab | grabbing ] ]",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/cursor"}],description:"Allows control over cursor appearance in an element",restrictions:["url","number","enum"]},{name:"direction",values:[{name:"ltr",description:"Left-to-right direction."},{name:"rtl",description:"Right-to-left direction."}],syntax:"ltr | rtl",relevance:69,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/direction"}],description:"Specifies the inline base direction or directionality of any bidi paragraph, embedding, isolate, or override established by the box. Note: for HTML content use the 'dir' attribute and 'bdo' element rather than this property.",restrictions:["enum"]},{name:"display",values:[{name:"block",description:"The element generates a block-level box"},{name:"contents",description:"The element itself does not generate any boxes, but its children and pseudo-elements still generate boxes as normal."},{name:"flex",description:"The element generates a principal flex container box and establishes a flex formatting context."},{name:"flexbox",description:"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'."},{name:"flow-root",description:"The element generates a block container box, and lays out its contents using flow layout."},{name:"grid",description:"The element generates a principal grid container box, and establishes a grid formatting context."},{name:"inline",description:"The element generates an inline-level box."},{name:"inline-block",description:"A block box, which itself is flowed as a single inline box, similar to a replaced element. The inside of an inline-block is formatted as a block box, and the box itself is formatted as an inline box."},{name:"inline-flex",description:"Inline-level flex container."},{name:"inline-flexbox",description:"Inline-level flex container. Standardized as 'inline-flex'"},{name:"inline-table",description:"Inline-level table wrapper box containing table box."},{name:"list-item",description:"One or more block boxes and one marker box."},{name:"-moz-box",description:"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'."},{name:"-moz-deck"},{name:"-moz-grid"},{name:"-moz-grid-group"},{name:"-moz-grid-line"},{name:"-moz-groupbox"},{name:"-moz-inline-box",description:"Inline-level flex container. Standardized as 'inline-flex'"},{name:"-moz-inline-grid"},{name:"-moz-inline-stack"},{name:"-moz-marker"},{name:"-moz-popup"},{name:"-moz-stack"},{name:"-ms-flexbox",description:"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'."},{name:"-ms-grid",description:"The element generates a principal grid container box, and establishes a grid formatting context."},{name:"-ms-inline-flexbox",description:"Inline-level flex container. Standardized as 'inline-flex'"},{name:"-ms-inline-grid",description:"Inline-level grid container."},{name:"none",description:"The element and its descendants generates no boxes."},{name:"ruby",description:"The element generates a principal ruby container box, and establishes a ruby formatting context."},{name:"ruby-base"},{name:"ruby-base-container"},{name:"ruby-text"},{name:"ruby-text-container"},{name:"run-in",description:"The element generates a run-in box. Run-in elements act like inlines or blocks, depending on the surrounding elements."},{name:"table",description:"The element generates a principal table wrapper box containing an additionally-generated table box, and establishes a table formatting context."},{name:"table-caption"},{name:"table-cell"},{name:"table-column"},{name:"table-column-group"},{name:"table-footer-group"},{name:"table-header-group"},{name:"table-row"},{name:"table-row-group"},{name:"-webkit-box",description:"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'."},{name:"-webkit-flex",description:"The element lays out its contents using flow layout (block-and-inline layout)."},{name:"-webkit-inline-box",description:"Inline-level flex container. Standardized as 'inline-flex'"},{name:"-webkit-inline-flex",description:"Inline-level flex container."}],syntax:"[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>",relevance:96,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/display"}],description:"In combination with 'float' and 'position', determines the type of box or boxes that are generated for an element.",restrictions:["enum"]},{name:"empty-cells",values:[{name:"hide",description:"No borders or backgrounds are drawn around/behind empty cells."},{name:"-moz-show-background"},{name:"show",description:"Borders and backgrounds are drawn around/behind empty cells (like normal cells)."}],syntax:"show | hide",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/empty-cells"}],description:"In the separated borders model, this property controls the rendering of borders and backgrounds around cells that have no visible content.",restrictions:["enum"]},{name:"enable-background",values:[{name:"accumulate",description:"If the ancestor container element has a property of new, then all graphics elements within the current container are rendered both on the parent's background image and onto the target."},{name:"new",description:"Create a new background image canvas. All children of the current container element can access the background, and they will be rendered onto both the parent's background image canvas in addition to the target device."}],relevance:50,description:"Deprecated. Use 'isolation' property instead when support allows. Specifies how the accumulation of the background image is managed.",restrictions:["integer","length","percentage","enum"]},{name:"fallback",browsers:["FF33"],syntax:"<counter-style-name>",relevance:50,description:"@counter-style descriptor. Specifies a fallback counter style to be used when the current counter style can\u2019t create a representation for a given counter value.",restrictions:["identifier"]},{name:"fill",values:[{name:"url()",description:"A URL reference to a paint server element, which is an element that defines a paint server: \u2018hatch\u2019, \u2018linearGradient\u2019, \u2018mesh\u2019, \u2018pattern\u2019, \u2018radialGradient\u2019 and \u2018solidcolor\u2019."},{name:"none",description:"No paint is applied in this layer."}],relevance:75,description:"Paints the interior of the given graphical element.",restrictions:["color","enum","url"]},{name:"fill-opacity",relevance:52,description:"Specifies the opacity of the painting operation used to paint the interior the current object.",restrictions:["number(0-1)"]},{name:"fill-rule",values:[{name:"evenodd",description:"Determines the \u2018insideness\u2019 of a point on the canvas by drawing a ray from that point to infinity in any direction and counting the number of path segments from the given shape that the ray crosses."},{name:"nonzero",description:"Determines the \u2018insideness\u2019 of a point on the canvas by drawing a ray from that point to infinity in any direction and then examining the places where a segment of the shape crosses the ray."}],relevance:50,description:"Indicates the algorithm (or winding rule) which is to be used to determine what parts of the canvas are included inside the shape.",restrictions:["enum"]},{name:"filter",browsers:["E12","FF35","S9.1","C53","O40"],values:[{name:"none",description:"No filter effects are applied."},{name:"blur()",description:"Applies a Gaussian blur to the input image."},{name:"brightness()",description:"Applies a linear multiplier to input image, making it appear more or less bright."},{name:"contrast()",description:"Adjusts the contrast of the input."},{name:"drop-shadow()",description:"Applies a drop shadow effect to the input image."},{name:"grayscale()",description:"Converts the input image to grayscale."},{name:"hue-rotate()",description:"Applies a hue rotation on the input image. "},{name:"invert()",description:"Inverts the samples in the input image."},{name:"opacity()",description:"Applies transparency to the samples in the input image."},{name:"saturate()",description:"Saturates the input image."},{name:"sepia()",description:"Converts the input image to sepia."},{name:"url()",browsers:["E12","FF35","S9.1","C53","O40"],description:"A filter reference to a <filter> element."}],syntax:"none | <filter-function-list>",relevance:65,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/filter"}],description:"Processes an element\u2019s rendering before it is displayed in the document, by applying one or more filter effects.",restrictions:["enum","url"]},{name:"flex",values:[{name:"auto",description:"Retrieves the value of the main size property as the used 'flex-basis'."},{name:"content",description:"Indicates automatic sizing, based on the flex item\u2019s content."},{name:"none",description:"Expands to '0 0 auto'."}],syntax:"none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]",relevance:78,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex"}],description:"Specifies the components of a flexible length: the flex grow factor and flex shrink factor, and the flex basis.",restrictions:["length","number","percentage"]},{name:"flex-basis",values:[{name:"auto",description:"Retrieves the value of the main size property as the used 'flex-basis'."},{name:"content",description:"Indicates automatic sizing, based on the flex item\u2019s content."}],syntax:"content | <'width'>",relevance:63,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-basis"}],description:"Sets the flex basis.",restrictions:["length","number","percentage"]},{name:"flex-direction",values:[{name:"column",description:"The flex container\u2019s main axis has the same orientation as the block axis of the current writing mode."},{name:"column-reverse",description:"Same as 'column', except the main-start and main-end directions are swapped."},{name:"row",description:"The flex container\u2019s main axis has the same orientation as the inline axis of the current writing mode."},{name:"row-reverse",description:"Same as 'row', except the main-start and main-end directions are swapped."}],syntax:"row | row-reverse | column | column-reverse",relevance:80,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-direction"}],description:"Specifies how flex items are placed in the flex container, by setting the direction of the flex container\u2019s main axis.",restrictions:["enum"]},{name:"flex-flow",values:[{name:"column",description:"The flex container\u2019s main axis has the same orientation as the block axis of the current writing mode."},{name:"column-reverse",description:"Same as 'column', except the main-start and main-end directions are swapped."},{name:"nowrap",description:"The flex container is single-line."},{name:"row",description:"The flex container\u2019s main axis has the same orientation as the inline axis of the current writing mode."},{name:"row-reverse",description:"Same as 'row', except the main-start and main-end directions are swapped."},{name:"wrap",description:"The flexbox is multi-line."},{name:"wrap-reverse",description:"Same as 'wrap', except the cross-start and cross-end directions are swapped."}],syntax:"<'flex-direction'> || <'flex-wrap'>",relevance:59,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-flow"}],description:"Specifies how flexbox items are placed in the flexbox.",restrictions:["enum"]},{name:"flex-grow",syntax:"<number>",relevance:73,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-grow"}],description:"Sets the flex grow factor. Negative numbers are invalid.",restrictions:["number"]},{name:"flex-shrink",syntax:"<number>",relevance:71,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-shrink"}],description:"Sets the flex shrink factor. Negative numbers are invalid.",restrictions:["number"]},{name:"flex-wrap",values:[{name:"nowrap",description:"The flex container is single-line."},{name:"wrap",description:"The flexbox is multi-line."},{name:"wrap-reverse",description:"Same as 'wrap', except the cross-start and cross-end directions are swapped."}],syntax:"nowrap | wrap | wrap-reverse",relevance:76,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-wrap"}],description:"Controls whether the flex container is single-line or multi-line, and the direction of the cross-axis, which determines the direction new lines are stacked in.",restrictions:["enum"]},{name:"float",values:[{name:"inline-end",description:"A keyword indicating that the element must float on the end side of its containing block. That is the right side with ltr scripts, and the left side with rtl scripts."},{name:"inline-start",description:"A keyword indicating that the element must float on the start side of its containing block. That is the left side with ltr scripts, and the right side with rtl scripts."},{name:"left",description:"The element generates a block box that is floated to the left. Content flows on the right side of the box, starting at the top (subject to the 'clear' property)."},{name:"none",description:"The box is not floated."},{name:"right",description:"Similar to 'left', except the box is floated to the right, and content flows on the left side of the box, starting at the top."}],syntax:"left | right | none | inline-start | inline-end",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/float"}],description:"Specifies how a box should be floated. It may be set for any element, but only applies to elements that generate boxes that are not absolutely positioned.",restrictions:["enum"]},{name:"flood-color",browsers:["E","C5","FF3","IE10","O9","S6"],relevance:50,description:"Indicates what color to use to flood the current filter primitive subregion.",restrictions:["color"]},{name:"flood-opacity",browsers:["E","C5","FF3","IE10","O9","S6"],relevance:50,description:"Indicates what opacity to use to flood the current filter primitive subregion.",restrictions:["number(0-1)","percentage"]},{name:"font",values:[{name:"100",description:"Thin"},{name:"200",description:"Extra Light (Ultra Light)"},{name:"300",description:"Light"},{name:"400",description:"Normal"},{name:"500",description:"Medium"},{name:"600",description:"Semi Bold (Demi Bold)"},{name:"700",description:"Bold"},{name:"800",description:"Extra Bold (Ultra Bold)"},{name:"900",description:"Black (Heavy)"},{name:"bold",description:"Same as 700"},{name:"bolder",description:"Specifies the weight of the face bolder than the inherited value."},{name:"caption",description:"The font used for captioned controls (e.g., buttons, drop-downs, etc.)."},{name:"icon",description:"The font used to label icons."},{name:"italic",description:"Selects a font that is labeled 'italic', or, if that is not available, one labeled 'oblique'."},{name:"large"},{name:"larger"},{name:"lighter",description:"Specifies the weight of the face lighter than the inherited value."},{name:"medium"},{name:"menu",description:"The font used in menus (e.g., dropdown menus and menu lists)."},{name:"message-box",description:"The font used in dialog boxes."},{name:"normal",description:"Specifies a face that is not labeled as a small-caps font."},{name:"oblique",description:"Selects a font that is labeled 'oblique'."},{name:"small"},{name:"small-caps",description:"Specifies a font that is labeled as a small-caps font. If a genuine small-caps font is not available, user agents should simulate a small-caps font."},{name:"small-caption",description:"The font used for labeling small controls."},{name:"smaller"},{name:"status-bar",description:"The font used in window status bars."},{name:"x-large"},{name:"x-small"},{name:"xx-large"},{name:"xx-small"}],syntax:"[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar",relevance:82,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font"}],description:"Shorthand property for setting 'font-style', 'font-variant', 'font-weight', 'font-size', 'line-height', and 'font-family', at the same place in the style sheet. The syntax of this property is based on a traditional typographical shorthand notation to set multiple properties related to fonts.",restrictions:["font"]},{name:"font-family",values:[{name:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif"},{name:"Arial, Helvetica, sans-serif"},{name:"Cambria, Cochin, Georgia, Times, 'Times New Roman', serif"},{name:"'Courier New', Courier, monospace"},{name:"cursive"},{name:"fantasy"},{name:"'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif"},{name:"Georgia, 'Times New Roman', Times, serif"},{name:"'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif"},{name:"Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif"},{name:"'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif"},{name:"monospace"},{name:"sans-serif"},{name:"'Segoe UI', Tahoma, Geneva, Verdana, sans-serif"},{name:"serif"},{name:"'Times New Roman', Times, serif"},{name:"'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif"},{name:"Verdana, Geneva, Tahoma, sans-serif"}],syntax:"<family-name>",relevance:93,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-family"}],description:"Specifies a prioritized list of font family names or generic family names. A user agent iterates through the list of family names until it matches an available font that contains a glyph for the character to be rendered.",restrictions:["font"]},{name:"font-feature-settings",values:[{name:'"aalt"',description:"Access All Alternates."},{name:'"abvf"',description:"Above-base Forms. Required in Khmer script."},{name:'"abvm"',description:"Above-base Mark Positioning. Required in Indic scripts."},{name:'"abvs"',description:"Above-base Substitutions. Required in Indic scripts."},{name:'"afrc"',description:"Alternative Fractions."},{name:'"akhn"',description:"Akhand. Required in most Indic scripts."},{name:'"blwf"',description:"Below-base Form. Required in a number of Indic scripts."},{name:'"blwm"',description:"Below-base Mark Positioning. Required in Indic scripts."},{name:'"blws"',description:"Below-base Substitutions. Required in Indic scripts."},{name:'"calt"',description:"Contextual Alternates."},{name:'"case"',description:"Case-Sensitive Forms. Applies only to European scripts; particularly prominent in Spanish-language setting."},{name:'"ccmp"',description:"Glyph Composition/Decomposition."},{name:'"cfar"',description:"Conjunct Form After Ro. Required in Khmer scripts."},{name:'"cjct"',description:"Conjunct Forms. Required in Indic scripts that show similarity to Devanagari."},{name:'"clig"',description:"Contextual Ligatures."},{name:'"cpct"',description:"Centered CJK Punctuation. Used primarily in Chinese fonts."},{name:'"cpsp"',description:"Capital Spacing. Should not be used in connecting scripts (e.g. most Arabic)."},{name:'"cswh"',description:"Contextual Swash."},{name:'"curs"',description:"Cursive Positioning. Can be used in any cursive script."},{name:'"c2pc"',description:"Petite Capitals From Capitals. Applies only to bicameral scripts."},{name:'"c2sc"',description:"Small Capitals From Capitals. Applies only to bicameral scripts."},{name:'"dist"',description:"Distances. Required in Indic scripts."},{name:'"dlig"',description:"Discretionary ligatures."},{name:'"dnom"',description:"Denominators."},{name:'"dtls"',description:"Dotless Forms. Applied to math formula layout."},{name:'"expt"',description:"Expert Forms. Applies only to Japanese."},{name:'"falt"',description:"Final Glyph on Line Alternates. Can be used in any cursive script."},{name:'"fin2"',description:"Terminal Form #2. Used only with the Syriac script."},{name:'"fin3"',description:"Terminal Form #3. Used only with the Syriac script."},{name:'"fina"',description:"Terminal Forms. Can be used in any alphabetic script."},{name:'"flac"',description:"Flattened ascent forms. Applied to math formula layout."},{name:'"frac"',description:"Fractions."},{name:'"fwid"',description:"Full Widths. Applies to any script which can use monospaced forms."},{name:'"half"',description:"Half Forms. Required in Indic scripts that show similarity to Devanagari."},{name:'"haln"',description:"Halant Forms. Required in Indic scripts."},{name:'"halt"',description:"Alternate Half Widths. Used only in CJKV fonts."},{name:'"hist"',description:"Historical Forms."},{name:'"hkna"',description:"Horizontal Kana Alternates. Applies only to fonts that support kana (hiragana and katakana)."},{name:'"hlig"',description:"Historical Ligatures."},{name:'"hngl"',description:"Hangul. Korean only."},{name:'"hojo"',description:"Hojo Kanji Forms (JIS X 0212-1990 Kanji Forms). Used only with Kanji script."},{name:'"hwid"',description:"Half Widths. Generally used only in CJKV fonts."},{name:'"init"',description:"Initial Forms. Can be used in any alphabetic script."},{name:'"isol"',description:"Isolated Forms. Can be used in any cursive script."},{name:'"ital"',description:"Italics. Applies mostly to Latin; note that many non-Latin fonts contain Latin as well."},{name:'"jalt"',description:"Justification Alternates. Can be used in any cursive script."},{name:'"jp78"',description:"JIS78 Forms. Applies only to Japanese."},{name:'"jp83"',description:"JIS83 Forms. Applies only to Japanese."},{name:'"jp90"',description:"JIS90 Forms. Applies only to Japanese."},{name:'"jp04"',description:"JIS2004 Forms. Applies only to Japanese."},{name:'"kern"',description:"Kerning."},{name:'"lfbd"',description:"Left Bounds."},{name:'"liga"',description:"Standard Ligatures."},{name:'"ljmo"',description:"Leading Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported."},{name:'"lnum"',description:"Lining Figures."},{name:'"locl"',description:"Localized Forms."},{name:'"ltra"',description:"Left-to-right glyph alternates."},{name:'"ltrm"',description:"Left-to-right mirrored forms."},{name:'"mark"',description:"Mark Positioning."},{name:'"med2"',description:"Medial Form #2. Used only with the Syriac script."},{name:'"medi"',description:"Medial Forms."},{name:'"mgrk"',description:"Mathematical Greek."},{name:'"mkmk"',description:"Mark to Mark Positioning."},{name:'"nalt"',description:"Alternate Annotation Forms."},{name:'"nlck"',description:"NLC Kanji Forms. Used only with Kanji script."},{name:'"nukt"',description:"Nukta Forms. Required in Indic scripts.."},{name:'"numr"',description:"Numerators."},{name:'"onum"',description:"Oldstyle Figures."},{name:'"opbd"',description:"Optical Bounds."},{name:'"ordn"',description:"Ordinals. Applies mostly to Latin script."},{name:'"ornm"',description:"Ornaments."},{name:'"palt"',description:"Proportional Alternate Widths. Used mostly in CJKV fonts."},{name:'"pcap"',description:"Petite Capitals."},{name:'"pkna"',description:"Proportional Kana. Generally used only in Japanese fonts."},{name:'"pnum"',description:"Proportional Figures."},{name:'"pref"',description:"Pre-base Forms. Required in Khmer and Myanmar (Burmese) scripts and southern Indic scripts that may display a pre-base form of Ra."},{name:'"pres"',description:"Pre-base Substitutions. Required in Indic scripts."},{name:'"pstf"',description:"Post-base Forms. Required in scripts of south and southeast Asia that have post-base forms for consonants eg: Gurmukhi, Malayalam, Khmer."},{name:'"psts"',description:"Post-base Substitutions."},{name:'"pwid"',description:"Proportional Widths."},{name:'"qwid"',description:"Quarter Widths. Generally used only in CJKV fonts."},{name:'"rand"',description:"Randomize."},{name:'"rclt"',description:"Required Contextual Alternates. May apply to any script, but is especially important for many styles of Arabic."},{name:'"rlig"',description:"Required Ligatures. Applies to Arabic and Syriac. May apply to some other scripts."},{name:'"rkrf"',description:"Rakar Forms. Required in Devanagari and Gujarati scripts."},{name:'"rphf"',description:"Reph Form. Required in Indic scripts. E.g. Devanagari, Kannada."},{name:'"rtbd"',description:"Right Bounds."},{name:'"rtla"',description:"Right-to-left alternates."},{name:'"rtlm"',description:"Right-to-left mirrored forms."},{name:'"ruby"',description:"Ruby Notation Forms. Applies only to Japanese."},{name:'"salt"',description:"Stylistic Alternates."},{name:'"sinf"',description:"Scientific Inferiors."},{name:'"size"',description:"Optical size."},{name:'"smcp"',description:"Small Capitals. Applies only to bicameral scripts."},{name:'"smpl"',description:"Simplified Forms. Applies only to Chinese and Japanese."},{name:'"ssty"',description:"Math script style alternates."},{name:'"stch"',description:"Stretching Glyph Decomposition."},{name:'"subs"',description:"Subscript."},{name:'"sups"',description:"Superscript."},{name:'"swsh"',description:"Swash. Does not apply to ideographic scripts."},{name:'"titl"',description:"Titling."},{name:'"tjmo"',description:"Trailing Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported."},{name:'"tnam"',description:"Traditional Name Forms. Applies only to Japanese."},{name:'"tnum"',description:"Tabular Figures."},{name:'"trad"',description:"Traditional Forms. Applies only to Chinese and Japanese."},{name:'"twid"',description:"Third Widths. Generally used only in CJKV fonts."},{name:'"unic"',description:"Unicase."},{name:'"valt"',description:"Alternate Vertical Metrics. Applies only to scripts with vertical writing modes."},{name:'"vatu"',description:"Vattu Variants. Used for Indic scripts. E.g. Devanagari."},{name:'"vert"',description:"Vertical Alternates. Applies only to scripts with vertical writing modes."},{name:'"vhal"',description:"Alternate Vertical Half Metrics. Used only in CJKV fonts."},{name:'"vjmo"',description:"Vowel Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported."},{name:'"vkna"',description:"Vertical Kana Alternates. Applies only to fonts that support kana (hiragana and katakana)."},{name:'"vkrn"',description:"Vertical Kerning."},{name:'"vpal"',description:"Proportional Alternate Vertical Metrics. Used mostly in CJKV fonts."},{name:'"vrt2"',description:"Vertical Alternates and Rotation. Applies only to scripts with vertical writing modes."},{name:'"zero"',description:"Slashed Zero."},{name:"normal",description:"No change in glyph substitution or positioning occurs."},{name:"off",description:"Disable feature."},{name:"on",description:"Enable feature."}],syntax:"normal | <feature-tag-value>#",relevance:54,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-feature-settings"}],description:"Provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.",restrictions:["string","integer"]},{name:"font-kerning",browsers:["E79","FF32","S9","C33","O20"],values:[{name:"auto",description:"Specifies that kerning is applied at the discretion of the user agent."},{name:"none",description:"Specifies that kerning is not applied."},{name:"normal",description:"Specifies that kerning is applied."}],syntax:"auto | normal | none",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-kerning"}],description:"Kerning is the contextual adjustment of inter-glyph spacing. This property controls metric kerning, kerning that utilizes adjustment data contained in the font.",restrictions:["enum"]},{name:"font-language-override",browsers:["FF34"],values:[{name:"normal",description:"Implies that when rendering with OpenType fonts the language of the document is used to infer the OpenType language system, used to select language specific features when rendering."}],syntax:"normal | <string>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-language-override"}],description:"The value of 'normal' implies that when rendering with OpenType fonts the language of the document is used to infer the OpenType language system, used to select language specific features when rendering.",restrictions:["string"]},{name:"font-size",values:[{name:"large"},{name:"larger"},{name:"medium"},{name:"small"},{name:"smaller"},{name:"x-large"},{name:"x-small"},{name:"xx-large"},{name:"xx-small"}],syntax:"<absolute-size> | <relative-size> | <length-percentage>",relevance:94,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-size"}],description:"Indicates the desired height of glyphs from the font. For scalable fonts, the font-size is a scale factor applied to the EM unit of the font. (Note that certain glyphs may bleed outside their EM box.) For non-scalable fonts, the font-size is converted into absolute units and matched against the declared font-size of the font, using the same absolute coordinate space for both of the matched values.",restrictions:["length","percentage"]},{name:"font-size-adjust",browsers:["E79","FF40","C43","O30"],values:[{name:"none",description:"Do not preserve the font\u2019s x-height."}],syntax:"none | <number>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-size-adjust"}],description:"Preserves the readability of text when font fallback occurs by adjusting the font-size so that the x-height is the same regardless of the font used.",restrictions:["number"]},{name:"font-stretch",values:[{name:"condensed"},{name:"expanded"},{name:"extra-condensed"},{name:"extra-expanded"},{name:"narrower",description:"Indicates a narrower value relative to the width of the parent element."},{name:"normal"},{name:"semi-condensed"},{name:"semi-expanded"},{name:"ultra-condensed"},{name:"ultra-expanded"},{name:"wider",description:"Indicates a wider value relative to the width of the parent element."}],syntax:"<font-stretch-absolute>{1,2}",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-stretch"}],description:"Selects a normal, condensed, or expanded face from a font family.",restrictions:["enum"]},{name:"font-style",values:[{name:"italic",description:"Selects a font that is labeled as an 'italic' face, or an 'oblique' face if one is not"},{name:"normal",description:"Selects a face that is classified as 'normal'."},{name:"oblique",description:"Selects a font that is labeled as an 'oblique' face, or an 'italic' face if one is not."}],syntax:"normal | italic | oblique <angle>{0,2}",relevance:83,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-style"}],description:"Allows italic or oblique faces to be selected. Italic forms are generally cursive in nature while oblique faces are typically sloped versions of the regular face.",restrictions:["enum"]},{name:"font-synthesis",browsers:["FF34","S9"],values:[{name:"none",description:"Disallow all synthetic faces."},{name:"style",description:"Allow synthetic italic faces."},{name:"weight",description:"Allow synthetic bold faces."}],syntax:"none | [ weight || style ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-synthesis"}],description:"Controls whether user agents are allowed to synthesize bold or oblique font faces when a font family lacks bold or italic faces.",restrictions:["enum"]},{name:"font-variant",values:[{name:"normal",description:"Specifies a face that is not labeled as a small-caps font."},{name:"small-caps",description:"Specifies a font that is labeled as a small-caps font. If a genuine small-caps font is not available, user agents should simulate a small-caps font."}],syntax:"normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> || stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero || <east-asian-variant-values> || <east-asian-width-values> || ruby ]",relevance:64,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant"}],description:"Specifies variant representations of the font",restrictions:["enum"]},{name:"font-variant-alternates",browsers:["FF34"],values:[{name:"annotation()",description:"Enables display of alternate annotation forms."},{name:"character-variant()",description:"Enables display of specific character variants."},{name:"historical-forms",description:"Enables display of historical forms."},{name:"normal",description:"None of the features are enabled."},{name:"ornaments()",description:"Enables replacement of default glyphs with ornaments, if provided in the font."},{name:"styleset()",description:"Enables display with stylistic sets."},{name:"stylistic()",description:"Enables display of stylistic alternates."},{name:"swash()",description:"Enables display of swash glyphs."}],syntax:"normal | [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates"}],description:"For any given character, fonts can provide a variety of alternate glyphs in addition to the default glyph for that character. This property provides control over the selection of these alternate glyphs.",restrictions:["enum"]},{name:"font-variant-caps",browsers:["E79","FF34","C52","O39"],values:[{name:"all-petite-caps",description:"Enables display of petite capitals for both upper and lowercase letters."},{name:"all-small-caps",description:"Enables display of small capitals for both upper and lowercase letters."},{name:"normal",description:"None of the features are enabled."},{name:"petite-caps",description:"Enables display of petite capitals."},{name:"small-caps",description:"Enables display of small capitals. Small-caps glyphs typically use the form of uppercase letters but are reduced to the size of lowercase letters."},{name:"titling-caps",description:"Enables display of titling capitals."},{name:"unicase",description:"Enables display of mixture of small capitals for uppercase letters with normal lowercase letters."}],syntax:"normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-caps"}],description:"Specifies control over capitalized forms.",restrictions:["enum"]},{name:"font-variant-east-asian",browsers:["E79","FF34","C63","O50"],values:[{name:"full-width",description:"Enables rendering of full-width variants."},{name:"jis04",description:"Enables rendering of JIS04 forms."},{name:"jis78",description:"Enables rendering of JIS78 forms."},{name:"jis83",description:"Enables rendering of JIS83 forms."},{name:"jis90",description:"Enables rendering of JIS90 forms."},{name:"normal",description:"None of the features are enabled."},{name:"proportional-width",description:"Enables rendering of proportionally-spaced variants."},{name:"ruby",description:"Enables display of ruby variant glyphs."},{name:"simplified",description:"Enables rendering of simplified forms."},{name:"traditional",description:"Enables rendering of traditional forms."}],syntax:"normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-east-asian"}],description:"Allows control of glyph substitute and positioning in East Asian text.",restrictions:["enum"]},{name:"font-variant-ligatures",browsers:["E79","FF34","S9.1","C34","O21"],values:[{name:"additional-ligatures",description:"Enables display of additional ligatures."},{name:"common-ligatures",description:"Enables display of common ligatures."},{name:"contextual",browsers:["E79","FF34","S9.1","C34","O21"],description:"Enables display of contextual alternates."},{name:"discretionary-ligatures",description:"Enables display of discretionary ligatures."},{name:"historical-ligatures",description:"Enables display of historical ligatures."},{name:"no-additional-ligatures",description:"Disables display of additional ligatures."},{name:"no-common-ligatures",description:"Disables display of common ligatures."},{name:"no-contextual",browsers:["E79","FF34","S9.1","C34","O21"],description:"Disables display of contextual alternates."},{name:"no-discretionary-ligatures",description:"Disables display of discretionary ligatures."},{name:"no-historical-ligatures",description:"Disables display of historical ligatures."},{name:"none",browsers:["E79","FF34","S9.1","C34","O21"],description:"Disables all ligatures."},{name:"normal",description:"Implies that the defaults set by the font are used."}],syntax:"normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-ligatures"}],description:"Specifies control over which ligatures are enabled or disabled. A value of \u2018normal\u2019 implies that the defaults set by the font are used.",restrictions:["enum"]},{name:"font-variant-numeric",browsers:["E79","FF34","S9.1","C52","O39"],values:[{name:"diagonal-fractions",description:"Enables display of lining diagonal fractions."},{name:"lining-nums",description:"Enables display of lining numerals."},{name:"normal",description:"None of the features are enabled."},{name:"oldstyle-nums",description:"Enables display of old-style numerals."},{name:"ordinal",description:"Enables display of letter forms used with ordinal numbers."},{name:"proportional-nums",description:"Enables display of proportional numerals."},{name:"slashed-zero",description:"Enables display of slashed zeros."},{name:"stacked-fractions",description:"Enables display of lining stacked fractions."},{name:"tabular-nums",description:"Enables display of tabular numerals."}],syntax:"normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-numeric"}],description:"Specifies control over numerical forms.",restrictions:["enum"]},{name:"font-variant-position",browsers:["FF34"],values:[{name:"normal",description:"None of the features are enabled."},{name:"sub",description:"Enables display of subscript variants (OpenType feature: subs)."},{name:"super",description:"Enables display of superscript variants (OpenType feature: sups)."}],syntax:"normal | sub | super",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-position"}],description:"Specifies the vertical position",restrictions:["enum"]},{name:"font-weight",values:[{name:"100",description:"Thin"},{name:"200",description:"Extra Light (Ultra Light)"},{name:"300",description:"Light"},{name:"400",description:"Normal"},{name:"500",description:"Medium"},{name:"600",description:"Semi Bold (Demi Bold)"},{name:"700",description:"Bold"},{name:"800",description:"Extra Bold (Ultra Bold)"},{name:"900",description:"Black (Heavy)"},{name:"bold",description:"Same as 700"},{name:"bolder",description:"Specifies the weight of the face bolder than the inherited value."},{name:"lighter",description:"Specifies the weight of the face lighter than the inherited value."},{name:"normal",description:"Same as 400"}],syntax:"<font-weight-absolute>{1,2}",relevance:93,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-weight"}],description:"Specifies weight of glyphs in the font, their degree of blackness or stroke thickness.",restrictions:["enum"]},{name:"glyph-orientation-horizontal",relevance:50,description:"Controls glyph orientation when the inline-progression-direction is horizontal.",restrictions:["angle","number"]},{name:"glyph-orientation-vertical",values:[{name:"auto",description:"Sets the orientation based on the fullwidth or non-fullwidth characters and the most common orientation."}],relevance:50,description:"Controls glyph orientation when the inline-progression-direction is vertical.",restrictions:["angle","number","enum"]},{name:"grid-area",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item\u2019s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item\u2019s placement such that the corresponding edge of the grid item\u2019s grid area is N lines from its opposite edge."}],syntax:"<grid-line> [ / <grid-line> ]{0,3}",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-area"}],description:"Determine a grid item\u2019s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement. Shorthand for 'grid-row-start', 'grid-column-start', 'grid-row-end', and 'grid-column-end'.",restrictions:["identifier","integer"]},{name:"grid",browsers:["E16","FF52","S10.1","C57","O44"],syntax:"<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid"}],description:"The grid CSS property is a shorthand property that sets all of the explicit grid properties ('grid-template-rows', 'grid-template-columns', and 'grid-template-areas'), and all the implicit grid properties ('grid-auto-rows', 'grid-auto-columns', and 'grid-auto-flow'), in a single declaration.",restrictions:["identifier","length","percentage","string","enum"]},{name:"grid-auto-columns",values:[{name:"min-content",description:"Represents the largest min-content contribution of the grid items occupying the grid track."},{name:"max-content",description:"Represents the largest max-content contribution of the grid items occupying the grid track."},{name:"auto",description:"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track."},{name:"minmax()",description:"Defines a size range greater than or equal to min and less than or equal to max."}],syntax:"<track-size>+",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-auto-columns"}],description:"Specifies the size of implicitly created columns.",restrictions:["length","percentage"]},{name:"grid-auto-flow",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"row",description:"The auto-placement algorithm places items by filling each row in turn, adding new rows as necessary."},{name:"column",description:"The auto-placement algorithm places items by filling each column in turn, adding new columns as necessary."},{name:"dense",description:"If specified, the auto-placement algorithm uses a \u201cdense\u201d packing algorithm, which attempts to fill in holes earlier in the grid if smaller items come up later."}],syntax:"[ row | column ] || dense",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-auto-flow"}],description:"Controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid.",restrictions:["enum"]},{name:"grid-auto-rows",values:[{name:"min-content",description:"Represents the largest min-content contribution of the grid items occupying the grid track."},{name:"max-content",description:"Represents the largest max-content contribution of the grid items occupying the grid track."},{name:"auto",description:"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track."},{name:"minmax()",description:"Defines a size range greater than or equal to min and less than or equal to max."}],syntax:"<track-size>+",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-auto-rows"}],description:"Specifies the size of implicitly created rows.",restrictions:["length","percentage"]},{name:"grid-column",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item\u2019s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item\u2019s placement such that the corresponding edge of the grid item\u2019s grid area is N lines from its opposite edge."}],syntax:"<grid-line> [ / <grid-line> ]?",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-column"}],description:"Shorthand for 'grid-column-start' and 'grid-column-end'.",restrictions:["identifier","integer","enum"]},{name:"grid-column-end",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item\u2019s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item\u2019s placement such that the corresponding edge of the grid item\u2019s grid area is N lines from its opposite edge."}],syntax:"<grid-line>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-column-end"}],description:"Determine a grid item\u2019s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.",restrictions:["identifier","integer","enum"]},{name:"grid-column-gap",browsers:["FF52","C57","S10.1","O44"],status:"obsolete",syntax:"<length-percentage>",relevance:1,description:"Specifies the gutters between grid columns. Replaced by 'column-gap' property.",restrictions:["length"]},{name:"grid-column-start",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item\u2019s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item\u2019s placement such that the corresponding edge of the grid item\u2019s grid area is N lines from its opposite edge."}],syntax:"<grid-line>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-column-start"}],description:"Determine a grid item\u2019s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.",restrictions:["identifier","integer","enum"]},{name:"grid-gap",browsers:["FF52","C57","S10.1","O44"],status:"obsolete",syntax:"<'grid-row-gap'> <'grid-column-gap'>?",relevance:2,description:"Shorthand that specifies the gutters between grid columns and grid rows in one declaration. Replaced by 'gap' property.",restrictions:["length"]},{name:"grid-row",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item\u2019s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item\u2019s placement such that the corresponding edge of the grid item\u2019s grid area is N lines from its opposite edge."}],syntax:"<grid-line> [ / <grid-line> ]?",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-row"}],description:"Shorthand for 'grid-row-start' and 'grid-row-end'.",restrictions:["identifier","integer","enum"]},{name:"grid-row-end",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item\u2019s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item\u2019s placement such that the corresponding edge of the grid item\u2019s grid area is N lines from its opposite edge."}],syntax:"<grid-line>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-row-end"}],description:"Determine a grid item\u2019s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.",restrictions:["identifier","integer","enum"]},{name:"grid-row-gap",browsers:["FF52","C57","S10.1","O44"],status:"obsolete",syntax:"<length-percentage>",relevance:1,description:"Specifies the gutters between grid rows. Replaced by 'row-gap' property.",restrictions:["length"]},{name:"grid-row-start",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item\u2019s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item\u2019s placement such that the corresponding edge of the grid item\u2019s grid area is N lines from its opposite edge."}],syntax:"<grid-line>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-row-start"}],description:"Determine a grid item\u2019s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.",restrictions:["identifier","integer","enum"]},{name:"grid-template",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"none",description:"Sets all three properties to their initial values."},{name:"min-content",description:"Represents the largest min-content contribution of the grid items occupying the grid track."},{name:"max-content",description:"Represents the largest max-content contribution of the grid items occupying the grid track."},{name:"auto",description:"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track."},{name:"subgrid",description:"Sets 'grid-template-rows' and 'grid-template-columns' to 'subgrid', and 'grid-template-areas' to its initial value."},{name:"minmax()",description:"Defines a size range greater than or equal to min and less than or equal to max."},{name:"repeat()",description:"Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form."}],syntax:"none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-template"}],description:"Shorthand for setting grid-template-columns, grid-template-rows, and grid-template-areas in a single declaration.",restrictions:["identifier","length","percentage","string","enum"]},{name:"grid-template-areas",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"none",description:"The grid container doesn\u2019t define any named grid areas."}],syntax:"none | <string>+",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-template-areas"}],description:"Specifies named grid areas, which are not associated with any particular grid item, but can be referenced from the grid-placement properties.",restrictions:["string"]},{name:"grid-template-columns",values:[{name:"none",description:"There is no explicit grid; any rows/columns will be implicitly generated."},{name:"min-content",description:"Represents the largest min-content contribution of the grid items occupying the grid track."},{name:"max-content",description:"Represents the largest max-content contribution of the grid items occupying the grid track."},{name:"auto",description:"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track."},{name:"subgrid",description:"Indicates that the grid will align to its parent grid in that axis."},{name:"minmax()",description:"Defines a size range greater than or equal to min and less than or equal to max."},{name:"repeat()",description:"Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form."}],syntax:"none | <track-list> | <auto-track-list> | subgrid <line-name-list>?",relevance:56,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-template-columns"}],description:"specifies, as a space-separated track list, the line names and track sizing functions of the grid.",restrictions:["identifier","length","percentage","enum"]},{name:"grid-template-rows",values:[{name:"none",description:"There is no explicit grid; any rows/columns will be implicitly generated."},{name:"min-content",description:"Represents the largest min-content contribution of the grid items occupying the grid track."},{name:"max-content",description:"Represents the largest max-content contribution of the grid items occupying the grid track."},{name:"auto",description:"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track."},{name:"subgrid",description:"Indicates that the grid will align to its parent grid in that axis."},{name:"minmax()",description:"Defines a size range greater than or equal to min and less than or equal to max."},{name:"repeat()",description:"Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form."}],syntax:"none | <track-list> | <auto-track-list> | subgrid <line-name-list>?",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-template-rows"}],description:"specifies, as a space-separated track list, the line names and track sizing functions of the grid.",restrictions:["identifier","length","percentage","string","enum"]},{name:"height",values:[{name:"auto",description:"The height depends on the values of other properties."},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>{1,2}",relevance:96,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/height"}],description:"Specifies the height of the content area, padding area or border area (depending on 'box-sizing') of certain boxes.",restrictions:["length","percentage"]},{name:"hyphens",values:[{name:"auto",description:"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word."},{name:"manual",description:"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities"},{name:"none",description:"Words are not broken at line breaks, even if characters inside the word suggest line break points."}],syntax:"none | manual | auto",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/hyphens"}],description:"Controls whether hyphenation is allowed to create more break opportunities within a line of text.",restrictions:["enum"]},{name:"image-orientation",browsers:["E81","FF26","S13.1","C81","O67"],values:[{name:"flip",description:"After rotating by the precededing angle, the image is flipped horizontally. Defaults to 0deg if the angle is ommitted."},{name:"from-image",description:"If the image has an orientation specified in its metadata, such as EXIF, this value computes to the angle that the metadata specifies is necessary to correctly orient the image."}],syntax:"from-image | <angle> | [ <angle>? flip ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/image-orientation"}],description:"Specifies an orthogonal rotation to be applied to an image before it is laid out.",restrictions:["angle"]},{name:"image-rendering",browsers:["E79","FF3.6","S6","C13","O15"],values:[{name:"auto",description:"The image should be scaled with an algorithm that maximizes the appearance of the image."},{name:"crisp-edges",description:"The image must be scaled with an algorithm that preserves contrast and edges in the image, and which does not smooth colors or introduce blur to the image in the process."},{name:"-moz-crisp-edges",browsers:["E79","FF3.6","S6","C13","O15"]},{name:"optimizeQuality",description:"Deprecated."},{name:"optimizeSpeed",description:"Deprecated."},{name:"pixelated",description:"When scaling the image up, the 'nearest neighbor' or similar algorithm must be used, so that the image appears to be simply composed of very large pixels."}],syntax:"auto | crisp-edges | pixelated",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/image-rendering"}],description:"Provides a hint to the user-agent about what aspects of an image are most important to preserve when the image is scaled, to aid the user-agent in the choice of an appropriate scaling algorithm.",restrictions:["enum"]},{name:"ime-mode",browsers:["E12","FF3","IE5"],values:[{name:"active",description:"The input method editor is initially active; text entry is performed using it unless the user specifically dismisses it."},{name:"auto",description:"No change is made to the current input method editor state. This is the default."},{name:"disabled",description:"The input method editor is disabled and may not be activated by the user."},{name:"inactive",description:"The input method editor is initially inactive, but the user may activate it if they wish."},{name:"normal",description:"The IME state should be normal; this value can be used in a user style sheet to override the page setting."}],status:"obsolete",syntax:"auto | normal | active | inactive | disabled",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/ime-mode"}],description:"Controls the state of the input method editor for text fields.",restrictions:["enum"]},{name:"inline-size",browsers:["E79","FF41","S12.1","C57","O44"],values:[{name:"auto",description:"Depends on the values of other properties."}],syntax:"<'width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inline-size"}],description:"Logical 'height'. Mapping depends on the element\u2019s 'writing-mode'.",restrictions:["length","percentage"]},{name:"isolation",browsers:["E79","FF36","S8","C41","O30"],values:[{name:"auto",description:"Elements are not isolated unless an operation is applied that causes the creation of a stacking context."},{name:"isolate",description:"In CSS will turn the element into a stacking context."}],syntax:"auto | isolate",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/isolation"}],description:"In CSS setting to 'isolate' will turn the element into a stacking context. In SVG, it defines whether an element is isolated or not.",restrictions:["enum"]},{name:"justify-content",values:[{name:"center",description:"Flex items are packed toward the center of the line."},{name:"start",description:"The items are packed flush to each other toward the start edge of the alignment container in the main axis."},{name:"end",description:"The items are packed flush to each other toward the end edge of the alignment container in the main axis."},{name:"left",description:"The items are packed flush to each other toward the left edge of the alignment container in the main axis."},{name:"right",description:"The items are packed flush to each other toward the right edge of the alignment container in the main axis."},{name:"safe",description:"If the size of the item overflows the alignment container, the item is instead aligned as if the alignment mode were start."},{name:"unsafe",description:"Regardless of the relative sizes of the item and alignment container, the given alignment value is honored."},{name:"stretch",description:"If the combined size of the alignment subjects is less than the size of the alignment container, any auto-sized alignment subjects have their size increased equally (not proportionally), while still respecting the constraints imposed by max-height/max-width (or equivalent functionality), so that the combined size exactly fills the alignment container."},{name:"space-evenly",description:"The items are evenly distributed within the alignment container along the main axis."},{name:"flex-end",description:"Flex items are packed toward the end of the line."},{name:"flex-start",description:"Flex items are packed toward the start of the line."},{name:"space-around",description:"Flex items are evenly distributed in the line, with half-size spaces on either end."},{name:"space-between",description:"Flex items are evenly distributed in the line."},{name:"baseline",description:"Specifies participation in first-baseline alignment."},{name:"first baseline",description:"Specifies participation in first-baseline alignment."},{name:"last baseline",description:"Specifies participation in last-baseline alignment."}],syntax:"normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]",relevance:84,description:"Aligns flex items along the main axis of the current line of the flex container.",restrictions:["enum"]},{name:"kerning",values:[{name:"auto",description:"Indicates that the user agent should adjust inter-glyph spacing based on kerning tables that are included in the font that will be used."}],relevance:50,description:"Indicates whether the user agent should adjust inter-glyph spacing based on kerning tables that are included in the relevant font or instead disable auto-kerning and set inter-character spacing to a specific length.",restrictions:["length","enum"]},{name:"left",values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well"}],syntax:"<length> | <percentage> | auto",relevance:95,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/left"}],description:"Specifies how far an absolutely positioned box's left margin edge is offset to the right of the left edge of the box's 'containing block'.",restrictions:["length","percentage"]},{name:"letter-spacing",values:[{name:"normal",description:"The spacing is the normal spacing for the current font. It is typically zero-length."}],syntax:"normal | <length>",relevance:80,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/letter-spacing"}],description:"Specifies the minimum, maximum, and optimal spacing between grapheme clusters.",restrictions:["length"]},{name:"lighting-color",browsers:["E","C5","FF3","IE10","O9","S6"],relevance:50,description:"Defines the color of the light source for filter primitives 'feDiffuseLighting' and 'feSpecularLighting'.",restrictions:["color"]},{name:"line-break",values:[{name:"auto",description:"The UA determines the set of line-breaking restrictions to use for CJK scripts, and it may vary the restrictions based on the length of the line; e.g., use a less restrictive set of line-break rules for short lines."},{name:"loose",description:"Breaks text using the least restrictive set of line-breaking rules. Typically used for short lines, such as in newspapers."},{name:"normal",description:"Breaks text using the most common set of line-breaking rules."},{name:"strict",description:"Breaks CJK scripts using a more restrictive set of line-breaking rules than 'normal'."}],syntax:"auto | loose | normal | strict | anywhere",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/line-break"}],description:"Specifies what set of line breaking restrictions are in effect within the element.",restrictions:["enum"]},{name:"line-height",values:[{name:"normal",description:"Tells user agents to set the computed value to a 'reasonable' value based on the font size of the element."}],syntax:"normal | <number> | <length> | <percentage>",relevance:93,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/line-height"}],description:"Determines the block-progression dimension of the text content area of an inline box.",restrictions:["number","length","percentage"]},{name:"list-style",values:[{name:"armenian"},{name:"circle",description:"A hollow circle."},{name:"decimal"},{name:"decimal-leading-zero"},{name:"disc",description:"A filled circle."},{name:"georgian"},{name:"inside",description:"The marker box is outside the principal block box, as described in the section on the ::marker pseudo-element below."},{name:"lower-alpha"},{name:"lower-greek"},{name:"lower-latin"},{name:"lower-roman"},{name:"none"},{name:"outside",description:"The ::marker pseudo-element is an inline element placed immediately before all ::before pseudo-elements in the principal block box, after which the element's content flows."},{name:"square",description:"A filled square."},{name:"symbols()",description:"Allows a counter style to be defined inline."},{name:"upper-alpha"},{name:"upper-latin"},{name:"upper-roman"},{name:"url()"}],syntax:"<'list-style-type'> || <'list-style-position'> || <'list-style-image'>",relevance:85,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/list-style"}],description:"Shorthand for setting 'list-style-type', 'list-style-position' and 'list-style-image'",restrictions:["image","enum","url"]},{name:"list-style-image",values:[{name:"none",description:"The default contents of the of the list item\u2019s marker are given by 'list-style-type' instead."}],syntax:"<url> | none",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/list-style-image"}],description:"Sets the image that will be used as the list item marker. When the image is available, it will replace the marker set with the 'list-style-type' marker.",restrictions:["image"]},{name:"list-style-position",values:[{name:"inside",description:"The marker box is outside the principal block box, as described in the section on the ::marker pseudo-element below."},{name:"outside",description:"The ::marker pseudo-element is an inline element placed immediately before all ::before pseudo-elements in the principal block box, after which the element's content flows."}],syntax:"inside | outside",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/list-style-position"}],description:"Specifies the position of the '::marker' pseudo-element's box in the list item.",restrictions:["enum"]},{name:"list-style-type",values:[{name:"armenian",description:"Traditional uppercase Armenian numbering."},{name:"circle",description:"A hollow circle."},{name:"decimal",description:"Western decimal numbers."},{name:"decimal-leading-zero",description:"Decimal numbers padded by initial zeros."},{name:"disc",description:"A filled circle."},{name:"georgian",description:"Traditional Georgian numbering."},{name:"lower-alpha",description:"Lowercase ASCII letters."},{name:"lower-greek",description:"Lowercase classical Greek."},{name:"lower-latin",description:"Lowercase ASCII letters."},{name:"lower-roman",description:"Lowercase ASCII Roman numerals."},{name:"none",description:"No marker"},{name:"square",description:"A filled square."},{name:"symbols()",description:"Allows a counter style to be defined inline."},{name:"upper-alpha",description:"Uppercase ASCII letters."},{name:"upper-latin",description:"Uppercase ASCII letters."},{name:"upper-roman",description:"Uppercase ASCII Roman numerals."}],syntax:"<counter-style> | <string> | none",relevance:75,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/list-style-type"}],description:"Used to construct the default contents of a list item\u2019s marker",restrictions:["enum","string"]},{name:"margin",values:[{name:"auto"}],syntax:"[ <length> | <percentage> | auto ]{1,4}",relevance:95,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin"}],description:"Shorthand property to set values the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits.",restrictions:["length","percentage"]},{name:"margin-block-end",browsers:["E79","FF41","S12.1","C69","O56"],values:[{name:"auto"}],syntax:"<'margin-left'>",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-block-end"}],description:"Logical 'margin-bottom'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"margin-block-start",browsers:["E79","FF41","S12.1","C69","O56"],values:[{name:"auto"}],syntax:"<'margin-left'>",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-block-start"}],description:"Logical 'margin-top'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"margin-bottom",values:[{name:"auto"}],syntax:"<length> | <percentage> | auto",relevance:91,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-bottom"}],description:"Shorthand property to set values the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..",restrictions:["length","percentage"]},{name:"margin-inline-end",browsers:["E79","FF41","S12.1","C69","O56"],values:[{name:"auto"}],syntax:"<'margin-left'>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-inline-end"}],description:"Logical 'margin-right'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"margin-inline-start",browsers:["E79","FF41","S12.1","C69","O56"],values:[{name:"auto"}],syntax:"<'margin-left'>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-inline-start"}],description:"Logical 'margin-left'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"margin-left",values:[{name:"auto"}],syntax:"<length> | <percentage> | auto",relevance:91,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-left"}],description:"Shorthand property to set values the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..",restrictions:["length","percentage"]},{name:"margin-right",values:[{name:"auto"}],syntax:"<length> | <percentage> | auto",relevance:91,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-right"}],description:"Shorthand property to set values the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..",restrictions:["length","percentage"]},{name:"margin-top",values:[{name:"auto"}],syntax:"<length> | <percentage> | auto",relevance:95,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-top"}],description:"Shorthand property to set values the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..",restrictions:["length","percentage"]},{name:"marker",values:[{name:"none",description:"Indicates that no marker symbol will be drawn at the given vertex or vertices."},{name:"url()",description:"Indicates that the <marker> element referenced will be used."}],relevance:50,description:"Specifies the marker symbol that shall be used for all points on the sets the value for all vertices on the given \u2018path\u2019 element or basic shape.",restrictions:["url"]},{name:"marker-end",values:[{name:"none",description:"Indicates that no marker symbol will be drawn at the given vertex or vertices."},{name:"url()",description:"Indicates that the <marker> element referenced will be used."}],relevance:50,description:"Specifies the marker that will be drawn at the last vertices of the given markable element.",restrictions:["url"]},{name:"marker-mid",values:[{name:"none",description:"Indicates that no marker symbol will be drawn at the given vertex or vertices."},{name:"url()",description:"Indicates that the <marker> element referenced will be used."}],relevance:50,description:"Specifies the marker that will be drawn at all vertices except the first and last.",restrictions:["url"]},{name:"marker-start",values:[{name:"none",description:"Indicates that no marker symbol will be drawn at the given vertex or vertices."},{name:"url()",description:"Indicates that the <marker> element referenced will be used."}],relevance:50,description:"Specifies the marker that will be drawn at the first vertices of the given markable element.",restrictions:["url"]},{name:"mask-image",browsers:["E16","FF53","S4","C1","O15"],values:[{name:"none",description:"Counts as a transparent black image layer."},{name:"url()",description:"Reference to a <mask element or to a CSS image."}],syntax:"<mask-reference>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-image"}],description:"Sets the mask layer image of an element.",restrictions:["url","image","enum"]},{name:"mask-mode",browsers:["FF53"],values:[{name:"alpha",description:"Alpha values of the mask layer image should be used as the mask values."},{name:"auto",description:"Use alpha values if 'mask-image' is an image, luminance if a <mask> element or a CSS image."},{name:"luminance",description:"Luminance values of the mask layer image should be used as the mask values."}],syntax:"<masking-mode>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-mode"}],description:"Indicates whether the mask layer image is treated as luminance mask or alpha mask.",restrictions:["url","image","enum"]},{name:"mask-origin",browsers:["E79","FF53","S4","C1","O15"],syntax:"<geometry-box>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-origin"}],description:"Specifies the mask positioning area.",restrictions:["geometry-box","enum"]},{name:"mask-position",browsers:["E18","FF53","S3.2","C1","O15"],syntax:"<position>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-position"}],description:"Specifies how mask layer images are positioned.",restrictions:["position","length","percentage"]},{name:"mask-repeat",browsers:["E18","FF53","S3.2","C1","O15"],syntax:"<repeat-style>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-repeat"}],description:"Specifies how mask layer images are tiled after they have been sized and positioned.",restrictions:["repeat"]},{name:"mask-size",browsers:["E18","FF53","S4","C4","O15"],values:[{name:"auto",description:"Resolved by using the image\u2019s intrinsic ratio and the size of the other dimension, or failing that, using the image\u2019s intrinsic size, or failing that, treating it as 100%."},{name:"contain",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area."},{name:"cover",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area."}],syntax:"<bg-size>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-size"}],description:"Specifies the size of the mask layer images.",restrictions:["length","percentage","enum"]},{name:"mask-type",browsers:["E79","FF35","S6.1","C24","O15"],values:[{name:"alpha",description:"Indicates that the alpha values of the mask should be used."},{name:"luminance",description:"Indicates that the luminance values of the mask should be used."}],syntax:"luminance | alpha",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-type"}],description:"Defines whether the content of the <mask> element is treated as as luminance mask or alpha mask.",restrictions:["enum"]},{name:"max-block-size",browsers:["E79","FF41","S12.1","C57","O44"],values:[{name:"none",description:"No limit on the width of the box."}],syntax:"<'max-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/max-block-size"}],description:"Logical 'max-width'. Mapping depends on the element\u2019s 'writing-mode'.",restrictions:["length","percentage"]},{name:"max-height",values:[{name:"none",description:"No limit on the height of the box."},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>",relevance:85,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/max-height"}],description:"Allows authors to constrain content height to a certain range.",restrictions:["length","percentage"]},{name:"max-inline-size",browsers:["E79","FF41","S12.1","C57","O44"],values:[{name:"none",description:"No limit on the height of the box."}],syntax:"<'max-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/max-inline-size"}],description:"Logical 'max-height'. Mapping depends on the element\u2019s 'writing-mode'.",restrictions:["length","percentage"]},{name:"max-width",values:[{name:"none",description:"No limit on the width of the box."},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>",relevance:90,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/max-width"}],description:"Allows authors to constrain content width to a certain range.",restrictions:["length","percentage"]},{name:"min-block-size",browsers:["E79","FF41","S12.1","C57","O44"],syntax:"<'min-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/min-block-size"}],description:"Logical 'min-width'. Mapping depends on the element\u2019s 'writing-mode'.",restrictions:["length","percentage"]},{name:"min-height",values:[{name:"auto"},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/min-height"}],description:"Allows authors to constrain content height to a certain range.",restrictions:["length","percentage"]},{name:"min-inline-size",browsers:["E79","FF41","S12.1","C57","O44"],syntax:"<'min-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/min-inline-size"}],description:"Logical 'min-height'. Mapping depends on the element\u2019s 'writing-mode'.",restrictions:["length","percentage"]},{name:"min-width",values:[{name:"auto"},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/min-width"}],description:"Allows authors to constrain content width to a certain range.",restrictions:["length","percentage"]},{name:"mix-blend-mode",browsers:["E79","FF32","S8","C41","O28"],values:[{name:"normal",description:"Default attribute which specifies no blending"},{name:"multiply",description:"The source color is multiplied by the destination color and replaces the destination."},{name:"screen",description:"Multiplies the complements of the backdrop and source color values, then complements the result."},{name:"overlay",description:"Multiplies or screens the colors, depending on the backdrop color value."},{name:"darken",description:"Selects the darker of the backdrop and source colors."},{name:"lighten",description:"Selects the lighter of the backdrop and source colors."},{name:"color-dodge",description:"Brightens the backdrop color to reflect the source color."},{name:"color-burn",description:"Darkens the backdrop color to reflect the source color."},{name:"hard-light",description:"Multiplies or screens the colors, depending on the source color value."},{name:"soft-light",description:"Darkens or lightens the colors, depending on the source color value."},{name:"difference",description:"Subtracts the darker of the two constituent colors from the lighter color.."},{name:"exclusion",description:"Produces an effect similar to that of the Difference mode but lower in contrast."},{name:"hue",browsers:["E79","FF32","S8","C41","O28"],description:"Creates a color with the hue of the source color and the saturation and luminosity of the backdrop color."},{name:"saturation",browsers:["E79","FF32","S8","C41","O28"],description:"Creates a color with the saturation of the source color and the hue and luminosity of the backdrop color."},{name:"color",browsers:["E79","FF32","S8","C41","O28"],description:"Creates a color with the hue and saturation of the source color and the luminosity of the backdrop color."},{name:"luminosity",browsers:["E79","FF32","S8","C41","O28"],description:"Creates a color with the luminosity of the source color and the hue and saturation of the backdrop color."}],syntax:"<blend-mode>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode"}],description:"Defines the formula that must be used to mix the colors with the backdrop.",restrictions:["enum"]},{name:"motion",browsers:["C46","O33"],values:[{name:"none",description:"No motion path gets created."},{name:"path()",description:"Defines an SVG path as a string, with optional 'fill-rule' as the first argument."},{name:"auto",description:"Indicates that the object is rotated by the angle of the direction of the motion path."},{name:"reverse",description:"Indicates that the object is rotated by the angle of the direction of the motion path plus 180 degrees."}],relevance:50,description:"Shorthand property for setting 'motion-path', 'motion-offset' and 'motion-rotation'.",restrictions:["url","length","percentage","angle","shape","geometry-box","enum"]},{name:"motion-offset",browsers:["C46","O33"],relevance:50,description:"A distance that describes the position along the specified motion path.",restrictions:["length","percentage"]},{name:"motion-path",browsers:["C46","O33"],values:[{name:"none",description:"No motion path gets created."},{name:"path()",description:"Defines an SVG path as a string, with optional 'fill-rule' as the first argument."}],relevance:50,description:"Specifies the motion path the element gets positioned at.",restrictions:["url","shape","geometry-box","enum"]},{name:"motion-rotation",browsers:["C46","O33"],values:[{name:"auto",description:"Indicates that the object is rotated by the angle of the direction of the motion path."},{name:"reverse",description:"Indicates that the object is rotated by the angle of the direction of the motion path plus 180 degrees."}],relevance:50,description:"Defines the direction of the element while positioning along the motion path.",restrictions:["angle"]},{name:"-moz-animation",browsers:["FF9"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"infinite",description:"Causes the animation to repeat forever."},{name:"none",description:"No animation is performed"},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Shorthand property combines six of the animation properties into a single property.",restrictions:["time","enum","timing-function","identifier","number"]},{name:"-moz-animation-delay",browsers:["FF9"],relevance:50,description:"Defines when the animation will start.",restrictions:["time"]},{name:"-moz-animation-direction",browsers:["FF9"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Defines whether or not the animation should play in reverse on alternate cycles.",restrictions:["enum"]},{name:"-moz-animation-duration",browsers:["FF9"],relevance:50,description:"Defines the length of time that an animation takes to complete one cycle.",restrictions:["time"]},{name:"-moz-animation-iteration-count",browsers:["FF9"],values:[{name:"infinite",description:"Causes the animation to repeat forever."}],relevance:50,description:"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.",restrictions:["number","enum"]},{name:"-moz-animation-name",browsers:["FF9"],values:[{name:"none",description:"No animation is performed"}],relevance:50,description:"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.",restrictions:["identifier","enum"]},{name:"-moz-animation-play-state",browsers:["FF9"],values:[{name:"paused",description:"A running animation will be paused."},{name:"running",description:"Resume playback of a paused animation."}],relevance:50,description:"Defines whether the animation is running or paused.",restrictions:["enum"]},{name:"-moz-animation-timing-function",browsers:["FF9"],relevance:50,description:"Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.",restrictions:["timing-function"]},{name:"-moz-appearance",browsers:["FF1"],values:[{name:"button"},{name:"button-arrow-down"},{name:"button-arrow-next"},{name:"button-arrow-previous"},{name:"button-arrow-up"},{name:"button-bevel"},{name:"checkbox"},{name:"checkbox-container"},{name:"checkbox-label"},{name:"dialog"},{name:"groupbox"},{name:"listbox"},{name:"menuarrow"},{name:"menuimage"},{name:"menuitem"},{name:"menuitemtext"},{name:"menulist"},{name:"menulist-button"},{name:"menulist-text"},{name:"menulist-textfield"},{name:"menupopup"},{name:"menuradio"},{name:"menuseparator"},{name:"-moz-mac-unified-toolbar"},{name:"-moz-win-borderless-glass"},{name:"-moz-win-browsertabbar-toolbox"},{name:"-moz-win-communications-toolbox"},{name:"-moz-win-glass"},{name:"-moz-win-media-toolbox"},{name:"none"},{name:"progressbar"},{name:"progresschunk"},{name:"radio"},{name:"radio-container"},{name:"radio-label"},{name:"radiomenuitem"},{name:"resizer"},{name:"resizerpanel"},{name:"scrollbarbutton-down"},{name:"scrollbarbutton-left"},{name:"scrollbarbutton-right"},{name:"scrollbarbutton-up"},{name:"scrollbar-small"},{name:"scrollbartrack-horizontal"},{name:"scrollbartrack-vertical"},{name:"separator"},{name:"spinner"},{name:"spinner-downbutton"},{name:"spinner-textfield"},{name:"spinner-upbutton"},{name:"statusbar"},{name:"statusbarpanel"},{name:"tab"},{name:"tabpanels"},{name:"tab-scroll-arrow-back"},{name:"tab-scroll-arrow-forward"},{name:"textfield"},{name:"textfield-multiline"},{name:"toolbar"},{name:"toolbox"},{name:"tooltip"},{name:"treeheadercell"},{name:"treeheadersortarrow"},{name:"treeitem"},{name:"treetwistyopen"},{name:"treeview"},{name:"treewisty"},{name:"window"}],status:"nonstandard",syntax:"none | button | button-arrow-down | button-arrow-next | button-arrow-previous | button-arrow-up | button-bevel | button-focus | caret | checkbox | checkbox-container | checkbox-label | checkmenuitem | dualbutton | groupbox | listbox | listitem | menuarrow | menubar | menucheckbox | menuimage | menuitem | menuitemtext | menulist | menulist-button | menulist-text | menulist-textfield | menupopup | menuradio | menuseparator | meterbar | meterchunk | progressbar | progressbar-vertical | progresschunk | progresschunk-vertical | radio | radio-container | radio-label | radiomenuitem | range | range-thumb | resizer | resizerpanel | scale-horizontal | scalethumbend | scalethumb-horizontal | scalethumbstart | scalethumbtick | scalethumb-vertical | scale-vertical | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | separator | sheet | spinner | spinner-downbutton | spinner-textfield | spinner-upbutton | splitter | statusbar | statusbarpanel | tab | tabpanel | tabpanels | tab-scroll-arrow-back | tab-scroll-arrow-forward | textfield | textfield-multiline | toolbar | toolbarbutton | toolbarbutton-dropdown | toolbargripper | toolbox | tooltip | treeheader | treeheadercell | treeheadersortarrow | treeitem | treeline | treetwisty | treetwistyopen | treeview | -moz-mac-unified-toolbar | -moz-win-borderless-glass | -moz-win-browsertabbar-toolbox | -moz-win-communicationstext | -moz-win-communications-toolbox | -moz-win-exclude-glass | -moz-win-glass | -moz-win-mediatext | -moz-win-media-toolbox | -moz-window-button-box | -moz-window-button-box-maximized | -moz-window-button-close | -moz-window-button-maximize | -moz-window-button-minimize | -moz-window-button-restore | -moz-window-frame-bottom | -moz-window-frame-left | -moz-window-frame-right | -moz-window-titlebar | -moz-window-titlebar-maximized",relevance:0,description:"Used in Gecko (Firefox) to display an element using a platform-native styling based on the operating system's theme.",restrictions:["enum"]},{name:"-moz-backface-visibility",browsers:["FF10"],values:[{name:"hidden"},{name:"visible"}],relevance:50,description:"Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.",restrictions:["enum"]},{name:"-moz-background-clip",browsers:["FF1-3.6"],values:[{name:"padding"}],relevance:50,description:"Determines the background painting area.",restrictions:["box","enum"]},{name:"-moz-background-inline-policy",browsers:["FF1"],values:[{name:"bounding-box"},{name:"continuous"},{name:"each-box"}],relevance:50,description:"In Gecko-based applications like Firefox, the -moz-background-inline-policy CSS property specifies how the background image of an inline element is determined when the content of the inline element wraps onto multiple lines. The choice of position has significant effects on repetition.",restrictions:["enum"]},{name:"-moz-background-origin",browsers:["FF1"],relevance:50,description:"For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).",restrictions:["box"]},{name:"-moz-border-bottom-colors",browsers:["FF1"],status:"nonstandard",syntax:"<color>+ | none",relevance:0,description:"Sets a list of colors for the bottom border.",restrictions:["color"]},{name:"-moz-border-image",browsers:["FF3.6"],values:[{name:"auto",description:"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead."},{name:"fill",description:"Causes the middle part of the border-image to be preserved."},{name:"none"},{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."},{name:"url()"}],relevance:50,description:"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.",restrictions:["length","percentage","number","url","enum"]},{name:"-moz-border-left-colors",browsers:["FF1"],status:"nonstandard",syntax:"<color>+ | none",relevance:0,description:"Sets a list of colors for the bottom border.",restrictions:["color"]},{name:"-moz-border-right-colors",browsers:["FF1"],status:"nonstandard",syntax:"<color>+ | none",relevance:0,description:"Sets a list of colors for the bottom border.",restrictions:["color"]},{name:"-moz-border-top-colors",browsers:["FF1"],status:"nonstandard",syntax:"<color>+ | none",relevance:0,description:"Ske Firefox, -moz-border-bottom-colors sets a list of colors for the bottom border.",restrictions:["color"]},{name:"-moz-box-align",browsers:["FF1"],values:[{name:"baseline",description:"If this box orientation is inline-axis or horizontal, all children are placed with their baselines aligned, and extra space placed before or after as necessary. For block flows, the baseline of the first non-empty line box located within the element is used. For tables, the baseline of the first cell is used."},{name:"center",description:"Any extra space is divided evenly, with half placed above the child and the other half placed after the child."},{name:"end",description:"For normal direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element. For reverse direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element."},{name:"start",description:"For normal direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element. For reverse direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element."},{name:"stretch",description:"The height of each child is adjusted to that of the containing block."}],relevance:50,description:"Specifies how a XUL box aligns its contents across (perpendicular to) the direction of its layout. The effect of this is only visible if there is extra space in the box.",restrictions:["enum"]},{name:"-moz-box-direction",browsers:["FF1"],values:[{name:"normal",description:"A box with a computed value of horizontal for box-orient displays its children from left to right. A box with a computed value of vertical displays its children from top to bottom."},{name:"reverse",description:"A box with a computed value of horizontal for box-orient displays its children from right to left. A box with a computed value of vertical displays its children from bottom to top."}],relevance:50,description:"Specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).",restrictions:["enum"]},{name:"-moz-box-flex",browsers:["FF1"],relevance:50,description:"Specifies how a box grows to fill the box that contains it, in the direction of the containing box's layout.",restrictions:["number"]},{name:"-moz-box-flexgroup",browsers:["FF1"],relevance:50,description:"Flexible elements can be assigned to flex groups using the 'box-flex-group' property.",restrictions:["integer"]},{name:"-moz-box-ordinal-group",browsers:["FF1"],relevance:50,description:"Indicates the ordinal group the element belongs to. Elements with a lower ordinal group are displayed before those with a higher ordinal group.",restrictions:["integer"]},{name:"-moz-box-orient",browsers:["FF1"],values:[{name:"block-axis",description:"Elements are oriented along the box's axis."},{name:"horizontal",description:"The box displays its children from left to right in a horizontal line."},{name:"inline-axis",description:"Elements are oriented vertically."},{name:"vertical",description:"The box displays its children from stacked from top to bottom vertically."}],relevance:50,description:"In Mozilla applications, -moz-box-orient specifies whether a box lays out its contents horizontally or vertically.",restrictions:["enum"]},{name:"-moz-box-pack",browsers:["FF1"],values:[{name:"center",description:"The extra space is divided evenly, with half placed before the first child and the other half placed after the last child."},{name:"end",description:"For normal direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child. For reverse direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child."},{name:"justify",description:"The space is divided evenly in-between each child, with none of the extra space placed before the first child or after the last child. If there is only one child, treat the pack value as if it were start."},{name:"start",description:"For normal direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child. For reverse direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child."}],relevance:50,description:"Specifies how a box packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.",restrictions:["enum"]},{name:"-moz-box-sizing",browsers:["FF1"],values:[{name:"border-box",description:"The specified width and height (and respective min/max properties) on this element determine the border box of the element."},{name:"content-box",description:"Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element."},{name:"padding-box",description:"The specified width and height (and respective min/max properties) on this element determine the padding box of the element."}],relevance:50,description:"Box Model addition in CSS3.",restrictions:["enum"]},{name:"-moz-column-count",browsers:["FF3.5"],values:[{name:"auto",description:"Determines the number of columns by the 'column-width' property and the element width."}],relevance:50,description:"Describes the optimal number of columns into which the content of the element will be flowed.",restrictions:["integer"]},{name:"-moz-column-gap",browsers:["FF3.5"],values:[{name:"normal",description:"User agent specific and typically equivalent to 1em."}],relevance:50,description:"Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.",restrictions:["length"]},{name:"-moz-column-rule",browsers:["FF3.5"],relevance:50,description:"Shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.",restrictions:["length","line-width","line-style","color"]},{name:"-moz-column-rule-color",browsers:["FF3.5"],relevance:50,description:"Sets the color of the column rule",restrictions:["color"]},{name:"-moz-column-rule-style",browsers:["FF3.5"],relevance:50,description:"Sets the style of the rule between columns of an element.",restrictions:["line-style"]},{name:"-moz-column-rule-width",browsers:["FF3.5"],relevance:50,description:"Sets the width of the rule between columns. Negative values are not allowed.",restrictions:["length","line-width"]},{name:"-moz-columns",browsers:["FF9"],values:[{name:"auto",description:"The width depends on the values of other properties."}],relevance:50,description:"A shorthand property which sets both 'column-width' and 'column-count'.",restrictions:["length","integer"]},{name:"-moz-column-width",browsers:["FF3.5"],values:[{name:"auto",description:"The width depends on the values of other properties."}],relevance:50,description:"This property describes the width of columns in multicol elements.",restrictions:["length"]},{name:"-moz-font-feature-settings",browsers:["FF4"],values:[{name:'"c2cs"'},{name:'"dlig"'},{name:'"kern"'},{name:'"liga"'},{name:'"lnum"'},{name:'"onum"'},{name:'"smcp"'},{name:'"swsh"'},{name:'"tnum"'},{name:"normal",description:"No change in glyph substitution or positioning occurs."},{name:"off",browsers:["FF4"]},{name:"on",browsers:["FF4"]}],relevance:50,description:"Provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.",restrictions:["string","integer"]},{name:"-moz-hyphens",browsers:["FF9"],values:[{name:"auto",description:"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word."},{name:"manual",description:"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities"},{name:"none",description:"Words are not broken at line breaks, even if characters inside the word suggest line break points."}],relevance:50,description:"Controls whether hyphenation is allowed to create more break opportunities within a line of text.",restrictions:["enum"]},{name:"-moz-perspective",browsers:["FF10"],values:[{name:"none",description:"No perspective transform is applied."}],relevance:50,description:"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.",restrictions:["length"]},{name:"-moz-perspective-origin",browsers:["FF10"],relevance:50,description:"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"-moz-text-align-last",browsers:["FF12"],values:[{name:"auto"},{name:"center",description:"The inline contents are centered within the line box."},{name:"justify",description:"The text is justified according to the method specified by the 'text-justify' property."},{name:"left",description:"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text."},{name:"right",description:"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text."}],relevance:50,description:"Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.",restrictions:["enum"]},{name:"-moz-text-decoration-color",browsers:["FF6"],relevance:50,description:"Specifies the color of text decoration (underlines overlines, and line-throughs) set on the element with text-decoration-line.",restrictions:["color"]},{name:"-moz-text-decoration-line",browsers:["FF6"],values:[{name:"line-through",description:"Each line of text has a line through the middle."},{name:"none",description:"Neither produces nor inhibits text decoration."},{name:"overline",description:"Each line of text has a line above it."},{name:"underline",description:"Each line of text is underlined."}],relevance:50,description:"Specifies what line decorations, if any, are added to the element.",restrictions:["enum"]},{name:"-moz-text-decoration-style",browsers:["FF6"],values:[{name:"dashed",description:"Produces a dashed line style."},{name:"dotted",description:"Produces a dotted line."},{name:"double",description:"Produces a double line."},{name:"none",description:"Produces no line."},{name:"solid",description:"Produces a solid line."},{name:"wavy",description:"Produces a wavy line."}],relevance:50,description:"Specifies the line style for underline, line-through and overline text decoration.",restrictions:["enum"]},{name:"-moz-text-size-adjust",browsers:["FF"],values:[{name:"auto",description:"Renderers must use the default size adjustment when displaying on a small device."},{name:"none",description:"Renderers must not do size adjustment when displaying on a small device."}],relevance:50,description:"Specifies a size adjustment for displaying text content in mobile browsers.",restrictions:["enum","percentage"]},{name:"-moz-transform",browsers:["FF3.5"],values:[{name:"matrix()",description:"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]"},{name:"matrix3d()",description:"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order."},{name:"none"},{name:"perspective",description:"Specifies a perspective projection matrix."},{name:"rotate()",description:"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property."},{name:"rotate3d()",description:"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters."},{name:"rotateX('angle')",description:"Specifies a clockwise rotation by the given angle about the X axis."},{name:"rotateY('angle')",description:"Specifies a clockwise rotation by the given angle about the Y axis."},{name:"rotateZ('angle')",description:"Specifies a clockwise rotation by the given angle about the Z axis."},{name:"scale()",description:"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first."},{name:"scale3d()",description:"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters."},{name:"scaleX()",description:"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter."},{name:"scaleY()",description:"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter."},{name:"scaleZ()",description:"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter."},{name:"skew()",description:"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)."},{name:"skewX()",description:"Specifies a skew transformation along the X axis by the given angle."},{name:"skewY()",description:"Specifies a skew transformation along the Y axis by the given angle."},{name:"translate()",description:"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter."},{name:"translate3d()",description:"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively."},{name:"translateX()",description:"Specifies a translation by the given amount in the X direction."},{name:"translateY()",description:"Specifies a translation by the given amount in the Y direction."},{name:"translateZ()",description:"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0."}],relevance:50,description:"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.",restrictions:["enum"]},{name:"-moz-transform-origin",browsers:["FF3.5"],relevance:50,description:"Establishes the origin of transformation for an element.",restrictions:["position","length","percentage"]},{name:"-moz-transition",browsers:["FF4"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Shorthand property combines four of the transition properties into a single property.",restrictions:["time","property","timing-function","enum"]},{name:"-moz-transition-delay",browsers:["FF4"],relevance:50,description:"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.",restrictions:["time"]},{name:"-moz-transition-duration",browsers:["FF4"],relevance:50,description:"Specifies how long the transition from the old value to the new value should take.",restrictions:["time"]},{name:"-moz-transition-property",browsers:["FF4"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Specifies the name of the CSS property to which the transition is applied.",restrictions:["property"]},{name:"-moz-transition-timing-function",browsers:["FF4"],relevance:50,description:"Describes how the intermediate values used during a transition will be calculated.",restrictions:["timing-function"]},{name:"-moz-user-focus",browsers:["FF1"],values:[{name:"ignore"},{name:"normal"}],status:"nonstandard",syntax:"ignore | normal | select-after | select-before | select-menu | select-same | select-all | none",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-user-focus"}],description:"Used to indicate whether the element can have focus."},{name:"-moz-user-select",browsers:["FF1.5"],values:[{name:"all"},{name:"element"},{name:"elements"},{name:"-moz-all"},{name:"-moz-none"},{name:"none"},{name:"text"},{name:"toggle"}],relevance:50,description:"Controls the appearance of selection.",restrictions:["enum"]},{name:"-ms-accelerator",browsers:["E","IE10"],values:[{name:"false",description:"The element does not contain an accelerator key sequence."},{name:"true",description:"The element contains an accelerator key sequence."}],status:"nonstandard",syntax:"false | true",relevance:0,description:"IE only. Has the ability to turn off its system underlines for accelerator keys until the ALT key is pressed",restrictions:["enum"]},{name:"-ms-behavior",browsers:["IE8"],relevance:50,description:"IE only. Used to extend behaviors of the browser",restrictions:["url"]},{name:"-ms-block-progression",browsers:["IE8"],values:[{name:"bt",description:"Bottom-to-top block flow. Layout is horizontal."},{name:"lr",description:"Left-to-right direction. The flow orientation is vertical."},{name:"rl",description:"Right-to-left direction. The flow orientation is vertical."},{name:"tb",description:"Top-to-bottom direction. The flow orientation is horizontal."}],status:"nonstandard",syntax:"tb | rl | bt | lr",relevance:0,description:"Sets the block-progression value and the flow orientation",restrictions:["enum"]},{name:"-ms-content-zoom-chaining",browsers:["E","IE10"],values:[{name:"chained",description:"The nearest zoomable parent element begins zooming when the user hits a zoom limit during a manipulation. No bounce effect is shown."},{name:"none",description:"A bounce effect is shown when the user hits a zoom limit during a manipulation."}],status:"nonstandard",syntax:"none | chained",relevance:0,description:"Specifies the zoom behavior that occurs when a user hits the zoom limit during a manipulation."},{name:"-ms-content-zooming",browsers:["E","IE10"],values:[{name:"none",description:"The element is not zoomable."},{name:"zoom",description:"The element is zoomable."}],status:"nonstandard",syntax:"none | zoom",relevance:0,description:"Specifies whether zooming is enabled.",restrictions:["enum"]},{name:"-ms-content-zoom-limit",browsers:["E","IE10"],status:"nonstandard",syntax:"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>",relevance:0,description:"Shorthand property for the -ms-content-zoom-limit-min and -ms-content-zoom-limit-max properties.",restrictions:["percentage"]},{name:"-ms-content-zoom-limit-max",browsers:["E","IE10"],status:"nonstandard",syntax:"<percentage>",relevance:0,description:"Specifies the maximum zoom factor.",restrictions:["percentage"]},{name:"-ms-content-zoom-limit-min",browsers:["E","IE10"],status:"nonstandard",syntax:"<percentage>",relevance:0,description:"Specifies the minimum zoom factor.",restrictions:["percentage"]},{name:"-ms-content-zoom-snap",browsers:["E","IE10"],values:[{name:"mandatory",description:"Indicates that the motion of the content after the contact is picked up is always adjusted so that it lands on a snap-point."},{name:"none",description:"Indicates that zooming is unaffected by any defined snap-points."},{name:"proximity",description:'Indicates that the motion of the content after the contact is picked up may be adjusted if the content would normally stop "close enough" to a snap-point.'},{name:"snapInterval(100%, 100%)",description:"Specifies where the snap-points will be placed."},{name:"snapList()",description:"Specifies the position of individual snap-points as a comma-separated list of zoom factors."}],status:"nonstandard",syntax:"<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>",relevance:0,description:"Shorthand property for the -ms-content-zoom-snap-type and -ms-content-zoom-snap-points properties."},{name:"-ms-content-zoom-snap-points",browsers:["E","IE10"],values:[{name:"snapInterval(100%, 100%)",description:"Specifies where the snap-points will be placed."},{name:"snapList()",description:"Specifies the position of individual snap-points as a comma-separated list of zoom factors."}],status:"nonstandard",syntax:"snapInterval( <percentage>, <percentage> ) | snapList( <percentage># )",relevance:0,description:"Defines where zoom snap-points are located."},{name:"-ms-content-zoom-snap-type",browsers:["E","IE10"],values:[{name:"mandatory",description:"Indicates that the motion of the content after the contact is picked up is always adjusted so that it lands on a snap-point."},{name:"none",description:"Indicates that zooming is unaffected by any defined snap-points."},{name:"proximity",description:'Indicates that the motion of the content after the contact is picked up may be adjusted if the content would normally stop "close enough" to a snap-point.'}],status:"nonstandard",syntax:"none | proximity | mandatory",relevance:0,description:"Specifies how zooming is affected by defined snap-points.",restrictions:["enum"]},{name:"-ms-filter",browsers:["IE8-9"],status:"nonstandard",syntax:"<string>",relevance:0,description:"IE only. Used to produce visual effects.",restrictions:["string"]},{name:"-ms-flex",browsers:["IE10"],values:[{name:"auto",description:"Retrieves the value of the main size property as the used 'flex-basis'."},{name:"none",description:"Expands to '0 0 auto'."}],relevance:50,description:"specifies the parameters of a flexible length: the positive and negative flexibility, and the preferred size.",restrictions:["length","number","percentage"]},{name:"-ms-flex-align",browsers:["IE10"],values:[{name:"baseline",description:"If the flex item\u2019s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment."},{name:"center",description:"The flex item\u2019s margin box is centered in the cross axis within the line."},{name:"end",description:"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line."},{name:"start",description:"The cross-start margin edge of the flexbox item is placed flush with the cross-start edge of the line."},{name:"stretch",description:"If the cross size property of the flexbox item is anything other than 'auto', this value is identical to 'start'."}],relevance:50,description:"Aligns flex items along the cross axis of the current line of the flex container.",restrictions:["enum"]},{name:"-ms-flex-direction",browsers:["IE10"],values:[{name:"column",description:"The flex container\u2019s main axis has the same orientation as the block axis of the current writing mode."},{name:"column-reverse",description:"Same as 'column', except the main-start and main-end directions are swapped."},{name:"row",description:"The flex container\u2019s main axis has the same orientation as the inline axis of the current writing mode."},{name:"row-reverse",description:"Same as 'row', except the main-start and main-end directions are swapped."}],relevance:50,description:"Specifies how flex items are placed in the flex container, by setting the direction of the flex container\u2019s main axis.",restrictions:["enum"]},{name:"-ms-flex-flow",browsers:["IE10"],values:[{name:"column",description:"The flex container\u2019s main axis has the same orientation as the block axis of the current writing mode."},{name:"column-reverse",description:"Same as 'column', except the main-start and main-end directions are swapped."},{name:"nowrap",description:"The flex container is single-line."},{name:"row",description:"The flex container\u2019s main axis has the same orientation as the inline axis of the current writing mode."},{name:"wrap",description:"The flexbox is multi-line."},{name:"wrap-reverse",description:"Same as 'wrap', except the cross-start and cross-end directions are swapped."}],relevance:50,description:"Specifies how flexbox items are placed in the flexbox.",restrictions:["enum"]},{name:"-ms-flex-item-align",browsers:["IE10"],values:[{name:"auto",description:"Computes to the value of 'align-items' on the element\u2019s parent, or 'stretch' if the element has no parent. On absolutely positioned elements, it computes to itself."},{name:"baseline",description:"If the flex item\u2019s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment."},{name:"center",description:"The flex item\u2019s margin box is centered in the cross axis within the line."},{name:"end",description:"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line."},{name:"start",description:"The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line."},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."}],relevance:50,description:"Allows the default alignment along the cross axis to be overridden for individual flex items.",restrictions:["enum"]},{name:"-ms-flex-line-pack",browsers:["IE10"],values:[{name:"center",description:"Lines are packed toward the center of the flex container."},{name:"distribute",description:"Lines are evenly distributed in the flex container, with half-size spaces on either end."},{name:"end",description:"Lines are packed toward the end of the flex container."},{name:"justify",description:"Lines are evenly distributed in the flex container."},{name:"start",description:"Lines are packed toward the start of the flex container."},{name:"stretch",description:"Lines stretch to take up the remaining space."}],relevance:50,description:"Aligns a flex container\u2019s lines within the flex container when there is extra space in the cross-axis, similar to how 'justify-content' aligns individual items within the main-axis.",restrictions:["enum"]},{name:"-ms-flex-order",browsers:["IE10"],relevance:50,description:"Controls the order in which children of a flex container appear within the flex container, by assigning them to ordinal groups.",restrictions:["integer"]},{name:"-ms-flex-pack",browsers:["IE10"],values:[{name:"center",description:"Flex items are packed toward the center of the line."},{name:"distribute",description:"Flex items are evenly distributed in the line, with half-size spaces on either end."},{name:"end",description:"Flex items are packed toward the end of the line."},{name:"justify",description:"Flex items are evenly distributed in the line."},{name:"start",description:"Flex items are packed toward the start of the line."}],relevance:50,description:"Aligns flex items along the main axis of the current line of the flex container.",restrictions:["enum"]},{name:"-ms-flex-wrap",browsers:["IE10"],values:[{name:"nowrap",description:"The flex container is single-line."},{name:"wrap",description:"The flexbox is multi-line."},{name:"wrap-reverse",description:"Same as 'wrap', except the cross-start and cross-end directions are swapped."}],relevance:50,description:"Controls whether the flex container is single-line or multi-line, and the direction of the cross-axis, which determines the direction new lines are stacked in.",restrictions:["enum"]},{name:"-ms-flow-from",browsers:["E","IE10"],values:[{name:"none",description:"The block container is not a CSS Region."}],status:"nonstandard",syntax:"[ none | <custom-ident> ]#",relevance:0,description:"Makes a block container a region and associates it with a named flow.",restrictions:["identifier"]},{name:"-ms-flow-into",browsers:["E","IE10"],values:[{name:"none",description:"The element is not moved to a named flow and normal CSS processing takes place."}],status:"nonstandard",syntax:"[ none | <custom-ident> ]#",relevance:0,description:"Places an element or its contents into a named flow.",restrictions:["identifier"]},{name:"-ms-grid-column",browsers:["E12","IE10"],values:[{name:"auto"},{name:"end"},{name:"start"}],relevance:50,description:"Used to place grid items and explicitly defined grid cells in the Grid.",restrictions:["integer","string","enum"]},{name:"-ms-grid-column-align",browsers:["E12","IE10"],values:[{name:"center",description:"Places the center of the Grid Item's margin box at the center of the Grid Item's column."},{name:"end",description:"Aligns the end edge of the Grid Item's margin box to the end edge of the Grid Item's column."},{name:"start",description:"Aligns the starting edge of the Grid Item's margin box to the starting edge of the Grid Item's column."},{name:"stretch",description:"Ensures that the Grid Item's margin box is equal to the size of the Grid Item's column."}],relevance:50,description:"Aligns the columns in a grid.",restrictions:["enum"]},{name:"-ms-grid-columns",browsers:["E","IE10"],status:"nonstandard",syntax:"none | <track-list> | <auto-track-list>",relevance:0,description:"Lays out the columns of the grid."},{name:"-ms-grid-column-span",browsers:["E12","IE10"],relevance:50,description:"Specifies the number of columns to span.",restrictions:["integer"]},{name:"-ms-grid-layer",browsers:["E","IE10"],relevance:50,description:"Grid-layer is similar in concept to z-index, but avoids overloading the meaning of the z-index property, which is applicable only to positioned elements.",restrictions:["integer"]},{name:"-ms-grid-row",browsers:["E12","IE10"],values:[{name:"auto"},{name:"end"},{name:"start"}],relevance:50,description:"grid-row is used to place grid items and explicitly defined grid cells in the Grid.",restrictions:["integer","string","enum"]},{name:"-ms-grid-row-align",browsers:["E12","IE10"],values:[{name:"center",description:"Places the center of the Grid Item's margin box at the center of the Grid Item's row."},{name:"end",description:"Aligns the end edge of the Grid Item's margin box to the end edge of the Grid Item's row."},{name:"start",description:"Aligns the starting edge of the Grid Item's margin box to the starting edge of the Grid Item's row."},{name:"stretch",description:"Ensures that the Grid Item's margin box is equal to the size of the Grid Item's row."}],relevance:50,description:"Aligns the rows in a grid.",restrictions:["enum"]},{name:"-ms-grid-rows",browsers:["E","IE10"],status:"nonstandard",syntax:"none | <track-list> | <auto-track-list>",relevance:0,description:"Lays out the columns of the grid."},{name:"-ms-grid-row-span",browsers:["E12","IE10"],relevance:50,description:"Specifies the number of rows to span.",restrictions:["integer"]},{name:"-ms-high-contrast-adjust",browsers:["E","IE10"],values:[{name:"auto",description:"Properties will be adjusted as applicable."},{name:"none",description:"No adjustments will be applied."}],status:"nonstandard",syntax:"auto | none",relevance:0,description:"Specifies if properties should be adjusted in high contrast mode.",restrictions:["enum"]},{name:"-ms-hyphenate-limit-chars",browsers:["E","IE10"],values:[{name:"auto",description:"The user agent chooses a value that adapts to the current layout."}],status:"nonstandard",syntax:"auto | <integer>{1,3}",relevance:0,description:"Specifies the minimum number of characters in a hyphenated word.",restrictions:["integer"]},{name:"-ms-hyphenate-limit-lines",browsers:["E","IE10"],values:[{name:"no-limit",description:"There is no limit."}],status:"nonstandard",syntax:"no-limit | <integer>",relevance:0,description:"Indicates the maximum number of successive hyphenated lines in an element.",restrictions:["integer"]},{name:"-ms-hyphenate-limit-zone",browsers:["E","IE10"],status:"nonstandard",syntax:"<percentage> | <length>",relevance:0,description:"Specifies the maximum amount of unfilled space (before justification) that may be left in the line box before hyphenation is triggered to pull part of a word from the next line back up into the current line.",restrictions:["percentage","length"]},{name:"-ms-hyphens",browsers:["E","IE10"],values:[{name:"auto",description:"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word."},{name:"manual",description:"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities"},{name:"none",description:"Words are not broken at line breaks, even if characters inside the word suggest line break points."}],relevance:50,description:"Controls whether hyphenation is allowed to create more break opportunities within a line of text.",restrictions:["enum"]},{name:"-ms-ime-mode",browsers:["IE10"],values:[{name:"active",description:"The input method editor is initially active; text entry is performed using it unless the user specifically dismisses it."},{name:"auto",description:"No change is made to the current input method editor state. This is the default."},{name:"disabled",description:"The input method editor is disabled and may not be activated by the user."},{name:"inactive",description:"The input method editor is initially inactive, but the user may activate it if they wish."},{name:"normal",description:"The IME state should be normal; this value can be used in a user style sheet to override the page setting."}],relevance:50,description:"Controls the state of the input method editor for text fields.",restrictions:["enum"]},{name:"-ms-interpolation-mode",browsers:["IE7"],values:[{name:"bicubic"},{name:"nearest-neighbor"}],relevance:50,description:"Gets or sets the interpolation (resampling) method used to stretch images.",restrictions:["enum"]},{name:"-ms-layout-grid",browsers:["E","IE10"],values:[{name:"char",description:"Any of the range of character values available to the -ms-layout-grid-char property."},{name:"line",description:"Any of the range of line values available to the -ms-layout-grid-line property."},{name:"mode",description:"Any of the range of mode values available to the -ms-layout-grid-mode property."},{name:"type",description:"Any of the range of type values available to the -ms-layout-grid-type property."}],relevance:50,description:"Sets or retrieves the composite document grid properties that specify the layout of text characters."},{name:"-ms-layout-grid-char",browsers:["E","IE10"],values:[{name:"auto",description:"Largest character in the font of the element is used to set the character grid."},{name:"none",description:"Default. No character grid is set."}],relevance:50,description:"Sets or retrieves the size of the character grid used for rendering the text content of an element.",restrictions:["enum","length","percentage"]},{name:"-ms-layout-grid-line",browsers:["E","IE10"],values:[{name:"auto",description:"Largest character in the font of the element is used to set the character grid."},{name:"none",description:"Default. No grid line is set."}],relevance:50,description:"Sets or retrieves the gridline value used for rendering the text content of an element.",restrictions:["length"]},{name:"-ms-layout-grid-mode",browsers:["E","IE10"],values:[{name:"both",description:"Default. Both the char and line grid modes are enabled. This setting is necessary to fully enable the layout grid on an element."},{name:"char",description:"Only a character grid is used. This is recommended for use with block-level elements, such as a blockquote, where the line grid is intended to be disabled."},{name:"line",description:"Only a line grid is used. This is recommended for use with inline elements, such as a span, to disable the horizontal grid on runs of text that act as a single entity in the grid layout."},{name:"none",description:"No grid is used."}],relevance:50,description:"Gets or sets whether the text layout grid uses two dimensions.",restrictions:["enum"]},{name:"-ms-layout-grid-type",browsers:["E","IE10"],values:[{name:"fixed",description:"Grid used for monospaced layout. All noncursive characters are treated as equal; every character is centered within a single grid space by default."},{name:"loose",description:"Default. Grid used for Japanese and Korean characters."},{name:"strict",description:"Grid used for Chinese, as well as Japanese (Genko) and Korean characters. Only the ideographs, kanas, and wide characters are snapped to the grid."}],relevance:50,description:"Sets or retrieves the type of grid used for rendering the text content of an element.",restrictions:["enum"]},{name:"-ms-line-break",browsers:["E","IE10"],values:[{name:"auto",description:"The UA determines the set of line-breaking restrictions to use for CJK scripts, and it may vary the restrictions based on the length of the line; e.g., use a less restrictive set of line-break rules for short lines."},{name:"keep-all",description:"Sequences of CJK characters can no longer break on implied break points. This option should only be used where the presence of word separator characters still creates line-breaking opportunities, as in Korean."},{name:"newspaper",description:"Breaks CJK scripts using the least restrictive set of line-breaking rules. Typically used for short lines, such as in newspapers."},{name:"normal",description:"Breaks CJK scripts using a normal set of line-breaking rules."},{name:"strict",description:"Breaks CJK scripts using a more restrictive set of line-breaking rules than 'normal'."}],relevance:50,description:"Specifies what set of line breaking restrictions are in effect within the element.",restrictions:["enum"]},{name:"-ms-overflow-style",browsers:["E","IE10"],values:[{name:"auto",description:"No preference, UA should use the first scrolling method in the list that it supports."},{name:"-ms-autohiding-scrollbar",description:"Indicates the element displays auto-hiding scrollbars during mouse interactions and panning indicators during touch and keyboard interactions."},{name:"none",description:"Indicates the element does not display scrollbars or panning indicators, even when its content overflows."},{name:"scrollbar",description:'Scrollbars are typically narrow strips inserted on one or two edges of an element and which often have arrows to click on and a "thumb" to drag up and down (or left and right) to move the contents of the element.'}],status:"nonstandard",syntax:"auto | none | scrollbar | -ms-autohiding-scrollbar",relevance:0,description:"Specify whether content is clipped when it overflows the element's content area.",restrictions:["enum"]},{name:"-ms-perspective",browsers:["IE10"],values:[{name:"none",description:"No perspective transform is applied."}],relevance:50,description:"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.",restrictions:["length"]},{name:"-ms-perspective-origin",browsers:["IE10"],relevance:50,description:"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"-ms-perspective-origin-x",browsers:["IE10"],relevance:50,description:"Establishes the origin for the perspective property. It effectively sets the X position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"-ms-perspective-origin-y",browsers:["IE10"],relevance:50,description:"Establishes the origin for the perspective property. It effectively sets the Y position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"-ms-progress-appearance",browsers:["IE10"],values:[{name:"bar"},{name:"ring"}],relevance:50,description:"Gets or sets a value that specifies whether a progress control displays as a bar or a ring.",restrictions:["enum"]},{name:"-ms-scrollbar-3dlight-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"-ms-scrollbar-arrow-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the arrow elements of a scroll arrow.",restrictions:["color"]},{name:"-ms-scrollbar-base-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the main elements of a scroll bar, which include the scroll box, track, and scroll arrows.",restrictions:["color"]},{name:"-ms-scrollbar-darkshadow-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the gutter of a scroll bar.",restrictions:["color"]},{name:"-ms-scrollbar-face-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"-ms-scrollbar-highlight-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"-ms-scrollbar-shadow-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the bottom and right edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"-ms-scrollbar-track-color",browsers:["IE5"],status:"nonstandard",syntax:"<color>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-track-color"}],description:"Determines the color of the track element of a scroll bar.",restrictions:["color"]},{name:"-ms-scroll-chaining",browsers:["E","IE10"],values:[{name:"chained"},{name:"none"}],status:"nonstandard",syntax:"chained | none",relevance:0,description:"Gets or sets a value that indicates the scrolling behavior that occurs when a user hits the content boundary during a manipulation.",restrictions:["enum","length"]},{name:"-ms-scroll-limit",browsers:["E","IE10"],values:[{name:"auto"}],status:"nonstandard",syntax:"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>",relevance:0,description:"Gets or sets a shorthand value that sets values for the -ms-scroll-limit-x-min, -ms-scroll-limit-y-min, -ms-scroll-limit-x-max, and -ms-scroll-limit-y-max properties.",restrictions:["length"]},{name:"-ms-scroll-limit-x-max",browsers:["E","IE10"],values:[{name:"auto"}],status:"nonstandard",syntax:"auto | <length>",relevance:0,description:"Gets or sets a value that specifies the maximum value for the scrollLeft property.",restrictions:["length"]},{name:"-ms-scroll-limit-x-min",browsers:["E","IE10"],status:"nonstandard",syntax:"<length>",relevance:0,description:"Gets or sets a value that specifies the minimum value for the scrollLeft property.",restrictions:["length"]},{name:"-ms-scroll-limit-y-max",browsers:["E","IE10"],values:[{name:"auto"}],status:"nonstandard",syntax:"auto | <length>",relevance:0,description:"Gets or sets a value that specifies the maximum value for the scrollTop property.",restrictions:["length"]},{name:"-ms-scroll-limit-y-min",browsers:["E","IE10"],status:"nonstandard",syntax:"<length>",relevance:0,description:"Gets or sets a value that specifies the minimum value for the scrollTop property.",restrictions:["length"]},{name:"-ms-scroll-rails",browsers:["E","IE10"],values:[{name:"none"},{name:"railed"}],status:"nonstandard",syntax:"none | railed",relevance:0,description:"Gets or sets a value that indicates whether or not small motions perpendicular to the primary axis of motion will result in either changes to both the scrollTop and scrollLeft properties or a change to the primary axis (for instance, either the scrollTop or scrollLeft properties will change, but not both).",restrictions:["enum","length"]},{name:"-ms-scroll-snap-points-x",browsers:["E","IE10"],values:[{name:"snapInterval(100%, 100%)"},{name:"snapList()"}],status:"nonstandard",syntax:"snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )",relevance:0,description:"Gets or sets a value that defines where snap-points will be located along the x-axis.",restrictions:["enum"]},{name:"-ms-scroll-snap-points-y",browsers:["E","IE10"],values:[{name:"snapInterval(100%, 100%)"},{name:"snapList()"}],status:"nonstandard",syntax:"snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )",relevance:0,description:"Gets or sets a value that defines where snap-points will be located along the y-axis.",restrictions:["enum"]},{name:"-ms-scroll-snap-type",browsers:["E","IE10"],values:[{name:"none",description:"The visual viewport of this scroll container must ignore snap points, if any, when scrolled."},{name:"mandatory",description:"The visual viewport of this scroll container is guaranteed to rest on a snap point when there are no active scrolling operations."},{name:"proximity",description:"The visual viewport of this scroll container may come to rest on a snap point at the termination of a scroll at the discretion of the UA given the parameters of the scroll."}],status:"nonstandard",syntax:"none | proximity | mandatory",relevance:0,description:"Gets or sets a value that defines what type of snap-point should be used for the current element. There are two type of snap-points, with the primary difference being whether or not the user is guaranteed to always stop on a snap-point.",restrictions:["enum"]},{name:"-ms-scroll-snap-x",browsers:["E","IE10"],values:[{name:"mandatory"},{name:"none"},{name:"proximity"},{name:"snapInterval(100%, 100%)"},{name:"snapList()"}],status:"nonstandard",syntax:"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>",relevance:0,description:"Gets or sets a shorthand value that sets values for the -ms-scroll-snap-type and -ms-scroll-snap-points-x properties.",restrictions:["enum"]},{name:"-ms-scroll-snap-y",browsers:["E","IE10"],values:[{name:"mandatory"},{name:"none"},{name:"proximity"},{name:"snapInterval(100%, 100%)"},{name:"snapList()"}],status:"nonstandard",syntax:"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>",relevance:0,description:"Gets or sets a shorthand value that sets values for the -ms-scroll-snap-type and -ms-scroll-snap-points-y properties.",restrictions:["enum"]},{name:"-ms-scroll-translation",browsers:["E","IE10"],values:[{name:"none"},{name:"vertical-to-horizontal"}],status:"nonstandard",syntax:"none | vertical-to-horizontal",relevance:0,description:"Gets or sets a value that specifies whether vertical-to-horizontal scroll wheel translation occurs on the specified element.",restrictions:["enum"]},{name:"-ms-text-align-last",browsers:["E","IE8"],values:[{name:"auto"},{name:"center",description:"The inline contents are centered within the line box."},{name:"justify",description:"The text is justified according to the method specified by the 'text-justify' property."},{name:"left",description:"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text."},{name:"right",description:"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text."}],relevance:50,description:"Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.",restrictions:["enum"]},{name:"-ms-text-autospace",browsers:["E","IE8"],values:[{name:"ideograph-alpha",description:"Creates 1/4em extra spacing between runs of ideographic letters and non-ideographic letters, such as Latin-based, Cyrillic, Greek, Arabic or Hebrew."},{name:"ideograph-numeric",description:"Creates 1/4em extra spacing between runs of ideographic letters and numeric glyphs."},{name:"ideograph-parenthesis",description:"Creates extra spacing between normal (non wide) parenthesis and ideographs."},{name:"ideograph-space",description:"Extends the width of the space character while surrounded by ideographs."},{name:"none",description:"No extra space is created."},{name:"punctuation",description:"Creates extra non-breaking spacing around punctuation as required by language-specific typographic conventions."}],status:"nonstandard",syntax:"none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space",relevance:0,description:"Determines whether or not a full-width punctuation mark character should be trimmed if it appears at the beginning of a line, so that its 'ink' lines up with the first glyph in the line above and below.",restrictions:["enum"]},{name:"-ms-text-combine-horizontal",browsers:["E","IE11"],values:[{name:"all",description:"Attempt to typeset horizontally all consecutive characters within the box such that they take up the space of a single character within the vertical line box."},{name:"digits",description:"Attempt to typeset horizontally each maximal sequence of consecutive ASCII digits (U+0030\u2013U+0039) that has as many or fewer characters than the specified integer such that it takes up the space of a single character within the vertical line box."},{name:"none",description:"No special processing."}],relevance:50,description:"This property specifies the combination of multiple characters into the space of a single character.",restrictions:["enum","integer"]},{name:"-ms-text-justify",browsers:["E","IE8"],values:[{name:"auto",description:"The UA determines the justification algorithm to follow, based on a balance between performance and adequate presentation quality."},{name:"distribute",description:"Justification primarily changes spacing both at word separators and at grapheme cluster boundaries in all scripts except those in the connected and cursive groups. This value is sometimes used in e.g. Japanese, often with the 'text-align-last' property."},{name:"inter-cluster",description:"Justification primarily changes spacing at word separators and at grapheme cluster boundaries in clustered scripts. This value is typically used for Southeast Asian scripts such as Thai."},{name:"inter-ideograph",description:"Justification primarily changes spacing at word separators and at inter-graphemic boundaries in scripts that use no word spaces. This value is typically used for CJK languages."},{name:"inter-word",description:"Justification primarily changes spacing at word separators. This value is typically used for languages that separate words using spaces, like English or (sometimes) Korean."},{name:"kashida",description:"Justification primarily stretches Arabic and related scripts through the use of kashida or other calligraphic elongation."}],relevance:50,description:"Selects the justification algorithm used when 'text-align' is set to 'justify'. The property applies to block containers, but the UA may (but is not required to) also support it on inline elements.",restrictions:["enum"]},{name:"-ms-text-kashida-space",browsers:["E","IE10"],relevance:50,description:"Sets or retrieves the ratio of kashida expansion to white space expansion when justifying lines of text in the object.",restrictions:["percentage"]},{name:"-ms-text-overflow",browsers:["IE10"],values:[{name:"clip",description:"Clip inline content that overflows. Characters may be only partially rendered."},{name:"ellipsis",description:"Render an ellipsis character (U+2026) to represent clipped inline content."}],relevance:50,description:"Text can overflow for example when it is prevented from wrapping",restrictions:["enum"]},{name:"-ms-text-size-adjust",browsers:["E","IE10"],values:[{name:"auto",description:"Renderers must use the default size adjustment when displaying on a small device."},{name:"none",description:"Renderers must not do size adjustment when displaying on a small device."}],relevance:50,description:"Specifies a size adjustment for displaying text content in mobile browsers.",restrictions:["enum","percentage"]},{name:"-ms-text-underline-position",browsers:["E","IE10"],values:[{name:"alphabetic",description:"The underline is aligned with the alphabetic baseline. In this case the underline is likely to cross some descenders."},{name:"auto",description:"The user agent may use any algorithm to determine the underline's position. In horizontal line layout, the underline should be aligned as for alphabetic. In vertical line layout, if the language is set to Japanese or Korean, the underline should be aligned as for over."},{name:"over",description:"The underline is aligned with the 'top' (right in vertical writing) edge of the element's em-box. In this mode, an overline also switches sides."},{name:"under",description:"The underline is aligned with the 'bottom' (left in vertical writing) edge of the element's em-box. In this case the underline usually does not cross the descenders. This is sometimes called 'accounting' underline."}],relevance:50,description:"Sets the position of an underline specified on the same element: it does not affect underlines specified by ancestor elements.This property is typically used in vertical writing contexts such as in Japanese documents where it often desired to have the underline appear 'over' (to the right of) the affected run of text",restrictions:["enum"]},{name:"-ms-touch-action",browsers:["IE10"],values:[{name:"auto",description:"The element is a passive element, with several exceptions."},{name:"double-tap-zoom",description:"The element will zoom on double-tap."},{name:"manipulation",description:"The element is a manipulation-causing element."},{name:"none",description:"The element is a manipulation-blocking element."},{name:"pan-x",description:"The element permits touch-driven panning on the horizontal axis. The touch pan is performed on the nearest ancestor with horizontally scrollable content."},{name:"pan-y",description:"The element permits touch-driven panning on the vertical axis. The touch pan is performed on the nearest ancestor with vertically scrollable content."},{name:"pinch-zoom",description:"The element permits pinch-zooming. The pinch-zoom is performed on the nearest ancestor with zoomable content."}],relevance:50,description:"Gets or sets a value that indicates whether and how a given region can be manipulated by the user.",restrictions:["enum"]},{name:"-ms-touch-select",browsers:["E","IE10"],values:[{name:"grippers",description:"Grippers are always on."},{name:"none",description:"Grippers are always off."}],status:"nonstandard",syntax:"grippers | none",relevance:0,description:"Gets or sets a value that toggles the 'gripper' visual elements that enable touch text selection.",restrictions:["enum"]},{name:"-ms-transform",browsers:["IE9-9"],values:[{name:"matrix()",description:"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]"},{name:"matrix3d()",description:"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order."},{name:"none"},{name:"rotate()",description:"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property."},{name:"rotate3d()",description:"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters."},{name:"rotateX('angle')",description:"Specifies a clockwise rotation by the given angle about the X axis."},{name:"rotateY('angle')",description:"Specifies a clockwise rotation by the given angle about the Y axis."},{name:"rotateZ('angle')",description:"Specifies a clockwise rotation by the given angle about the Z axis."},{name:"scale()",description:"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first."},{name:"scale3d()",description:"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters."},{name:"scaleX()",description:"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter."},{name:"scaleY()",description:"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter."},{name:"scaleZ()",description:"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter."},{name:"skew()",description:"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)."},{name:"skewX()",description:"Specifies a skew transformation along the X axis by the given angle."},{name:"skewY()",description:"Specifies a skew transformation along the Y axis by the given angle."},{name:"translate()",description:"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter."},{name:"translate3d()",description:"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively."},{name:"translateX()",description:"Specifies a translation by the given amount in the X direction."},{name:"translateY()",description:"Specifies a translation by the given amount in the Y direction."},{name:"translateZ()",description:"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0."}],relevance:50,description:"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.",restrictions:["enum"]},{name:"-ms-transform-origin",browsers:["IE9-9"],relevance:50,description:"Establishes the origin of transformation for an element.",restrictions:["position","length","percentage"]},{name:"-ms-transform-origin-x",browsers:["IE10"],relevance:50,description:"The x coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-ms-transform-origin-y",browsers:["IE10"],relevance:50,description:"The y coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-ms-transform-origin-z",browsers:["IE10"],relevance:50,description:"The z coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-ms-user-select",browsers:["E","IE10"],values:[{name:"element"},{name:"none"},{name:"text"}],status:"nonstandard",syntax:"none | element | text",relevance:0,description:"Controls the appearance of selection.",restrictions:["enum"]},{name:"-ms-word-break",browsers:["IE8"],values:[{name:"break-all",description:"Lines may break between any two grapheme clusters for non-CJK scripts."},{name:"keep-all",description:"Block characters can no longer create implied break points."},{name:"normal",description:"Breaks non-CJK scripts according to their own rules."}],relevance:50,description:"Specifies line break opportunities for non-CJK scripts.",restrictions:["enum"]},{name:"-ms-word-wrap",browsers:["IE8"],values:[{name:"break-word",description:"An unbreakable 'word' may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line."},{name:"normal",description:"Lines may break only at allowed break points."}],relevance:50,description:"Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit.",restrictions:["enum"]},{name:"-ms-wrap-flow",browsers:["E","IE10"],values:[{name:"auto",description:"For floats an exclusion is created, for all other elements an exclusion is not created."},{name:"both",description:"Inline flow content can flow on all sides of the exclusion."},{name:"clear",description:"Inline flow content can only wrap on top and bottom of the exclusion and must leave the areas to the start and end edges of the exclusion box empty."},{name:"end",description:"Inline flow content can wrap on the end side of the exclusion area but must leave the area to the start edge of the exclusion area empty."},{name:"maximum",description:"Inline flow content can wrap on the side of the exclusion with the largest available space for the given line, and must leave the other side of the exclusion empty."},{name:"minimum",description:"Inline flow content can flow around the edge of the exclusion with the smallest available space within the flow content\u2019s containing block, and must leave the other edge of the exclusion empty."},{name:"start",description:"Inline flow content can wrap on the start edge of the exclusion area but must leave the area to end edge of the exclusion area empty."}],status:"nonstandard",syntax:"auto | both | start | end | maximum | clear",relevance:0,description:"An element becomes an exclusion when its 'wrap-flow' property has a computed value other than 'auto'.",restrictions:["enum"]},{name:"-ms-wrap-margin",browsers:["E","IE10"],status:"nonstandard",syntax:"<length>",relevance:0,description:"Gets or sets a value that is used to offset the inner wrap shape from other shapes.",restrictions:["length","percentage"]},{name:"-ms-wrap-through",browsers:["E","IE10"],values:[{name:"none",description:"The exclusion element does not inherit its parent node's wrapping context. Its descendants are only subject to exclusion shapes defined inside the element."},{name:"wrap",description:"The exclusion element inherits its parent node's wrapping context. Its descendant inline content wraps around exclusions defined outside the element."}],status:"nonstandard",syntax:"wrap | none",relevance:0,description:"Specifies if an element inherits its parent wrapping context. In other words if it is subject to the exclusions defined outside the element.",restrictions:["enum"]},{name:"-ms-writing-mode",browsers:["IE8"],values:[{name:"bt-lr"},{name:"bt-rl"},{name:"lr-bt"},{name:"lr-tb"},{name:"rl-bt"},{name:"rl-tb"},{name:"tb-lr"},{name:"tb-rl"}],relevance:50,description:"Shorthand property for both 'direction' and 'block-progression'.",restrictions:["enum"]},{name:"-ms-zoom",browsers:["IE8"],values:[{name:"normal"}],relevance:50,description:"Sets or retrieves the magnification scale of the object.",restrictions:["enum","integer","number","percentage"]},{name:"-ms-zoom-animation",browsers:["IE10"],values:[{name:"default"},{name:"none"}],relevance:50,description:"Gets or sets a value that indicates whether an animation is used when zooming.",restrictions:["enum"]},{name:"nav-down",browsers:["O9.5"],values:[{name:"auto",description:"The user agent automatically determines which element to navigate the focus to in response to directional navigational input."},{name:"current",description:"Indicates that the user agent should target the frame that the element is in."},{name:"root",description:"Indicates that the user agent should target the full window."}],relevance:50,description:"Provides an way to control directional focus navigation.",restrictions:["enum","identifier","string"]},{name:"nav-index",browsers:["O9.5"],values:[{name:"auto",description:"The element's sequential navigation order is assigned automatically by the user agent."}],relevance:50,description:"Provides an input-method-neutral way of specifying the sequential navigation order (also known as 'tabbing order').",restrictions:["number"]},{name:"nav-left",browsers:["O9.5"],values:[{name:"auto",description:"The user agent automatically determines which element to navigate the focus to in response to directional navigational input."},{name:"current",description:"Indicates that the user agent should target the frame that the element is in."},{name:"root",description:"Indicates that the user agent should target the full window."}],relevance:50,description:"Provides an way to control directional focus navigation.",restrictions:["enum","identifier","string"]},{name:"nav-right",browsers:["O9.5"],values:[{name:"auto",description:"The user agent automatically determines which element to navigate the focus to in response to directional navigational input."},{name:"current",description:"Indicates that the user agent should target the frame that the element is in."},{name:"root",description:"Indicates that the user agent should target the full window."}],relevance:50,description:"Provides an way to control directional focus navigation.",restrictions:["enum","identifier","string"]},{name:"nav-up",browsers:["O9.5"],values:[{name:"auto",description:"The user agent automatically determines which element to navigate the focus to in response to directional navigational input."},{name:"current",description:"Indicates that the user agent should target the frame that the element is in."},{name:"root",description:"Indicates that the user agent should target the full window."}],relevance:50,description:"Provides an way to control directional focus navigation.",restrictions:["enum","identifier","string"]},{name:"negative",browsers:["FF33"],syntax:"<symbol> <symbol>?",relevance:50,description:"@counter-style descriptor. Defines how to alter the representation when the counter value is negative.",restrictions:["image","identifier","string"]},{name:"-o-animation",browsers:["O12"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"infinite",description:"Causes the animation to repeat forever."},{name:"none",description:"No animation is performed"},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Shorthand property combines six of the animation properties into a single property.",restrictions:["time","enum","timing-function","identifier","number"]},{name:"-o-animation-delay",browsers:["O12"],relevance:50,description:"Defines when the animation will start.",restrictions:["time"]},{name:"-o-animation-direction",browsers:["O12"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Defines whether or not the animation should play in reverse on alternate cycles.",restrictions:["enum"]},{name:"-o-animation-duration",browsers:["O12"],relevance:50,description:"Defines the length of time that an animation takes to complete one cycle.",restrictions:["time"]},{name:"-o-animation-fill-mode",browsers:["O12"],values:[{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"none",description:"There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes."}],relevance:50,description:"Defines what values are applied by the animation outside the time it is executing.",restrictions:["enum"]},{name:"-o-animation-iteration-count",browsers:["O12"],values:[{name:"infinite",description:"Causes the animation to repeat forever."}],relevance:50,description:"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.",restrictions:["number","enum"]},{name:"-o-animation-name",browsers:["O12"],values:[{name:"none",description:"No animation is performed"}],relevance:50,description:"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.",restrictions:["identifier","enum"]},{name:"-o-animation-play-state",browsers:["O12"],values:[{name:"paused",description:"A running animation will be paused."},{name:"running",description:"Resume playback of a paused animation."}],relevance:50,description:"Defines whether the animation is running or paused.",restrictions:["enum"]},{name:"-o-animation-timing-function",browsers:["O12"],relevance:50,description:"Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.",restrictions:["timing-function"]},{name:"object-fit",browsers:["E16","FF36","S10","C31","O19"],values:[{name:"contain",description:"The replaced content is sized to maintain its aspect ratio while fitting within the element\u2019s content box: its concrete object size is resolved as a contain constraint against the element's used width and height."},{name:"cover",description:"The replaced content is sized to maintain its aspect ratio while filling the element's entire content box: its concrete object size is resolved as a cover constraint against the element\u2019s used width and height."},{name:"fill",description:"The replaced content is sized to fill the element\u2019s content box: the object's concrete object size is the element's used width and height."},{name:"none",description:"The replaced content is not resized to fit inside the element's content box"},{name:"scale-down",description:"Size the content as if \u2018none\u2019 or \u2018contain\u2019 were specified, whichever would result in a smaller concrete object size."}],syntax:"fill | contain | cover | none | scale-down",relevance:64,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/object-fit"}],description:"Specifies how the contents of a replaced element should be scaled relative to the box established by its used height and width.",restrictions:["enum"]},{name:"object-position",browsers:["E16","FF36","S10","C31","O19"],syntax:"<position>",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/object-position"}],description:"Determines the alignment of the replaced element inside its box.",restrictions:["position","length","percentage"]},{name:"-o-border-image",browsers:["O11.6"],values:[{name:"auto",description:"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead."},{name:"fill",description:"Causes the middle part of the border-image to be preserved."},{name:"none"},{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."}],relevance:50,description:"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.",restrictions:["length","percentage","number","image","enum"]},{name:"-o-object-fit",browsers:["O10.6"],values:[{name:"contain",description:"The replaced content is sized to maintain its aspect ratio while fitting within the element\u2019s content box: its concrete object size is resolved as a contain constraint against the element's used width and height."},{name:"cover",description:"The replaced content is sized to maintain its aspect ratio while filling the element's entire content box: its concrete object size is resolved as a cover constraint against the element\u2019s used width and height."},{name:"fill",description:"The replaced content is sized to fill the element\u2019s content box: the object's concrete object size is the element's used width and height."},{name:"none",description:"The replaced content is not resized to fit inside the element's content box"},{name:"scale-down",description:"Size the content as if \u2018none\u2019 or \u2018contain\u2019 were specified, whichever would result in a smaller concrete object size."}],relevance:50,description:"Specifies how the contents of a replaced element should be scaled relative to the box established by its used height and width.",restrictions:["enum"]},{name:"-o-object-position",browsers:["O10.6"],relevance:50,description:"Determines the alignment of the replaced element inside its box.",restrictions:["position","length","percentage"]},{name:"opacity",syntax:"<alpha-value>",relevance:93,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/opacity"}],description:"Opacity of an element's text, where 1 is opaque and 0 is entirely transparent.",restrictions:["number(0-1)"]},{name:"order",syntax:"<integer>",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/order"}],description:"Controls the order in which children of a flex container appear within the flex container, by assigning them to ordinal groups.",restrictions:["integer"]},{name:"orphans",browsers:["E12","S1.3","C25","IE8","O9.2"],syntax:"<integer>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/orphans"}],description:"Specifies the minimum number of line boxes in a block container that must be left in a fragment before a fragmentation break.",restrictions:["integer"]},{name:"-o-table-baseline",browsers:["O9.6"],relevance:50,description:"Determines which row of a inline-table should be used as baseline of inline-table.",restrictions:["integer"]},{name:"-o-tab-size",browsers:["O10.6"],relevance:50,description:"This property determines the width of the tab character (U+0009), in space characters (U+0020), when rendered.",restrictions:["integer","length"]},{name:"-o-text-overflow",browsers:["O10"],values:[{name:"clip",description:"Clip inline content that overflows. Characters may be only partially rendered."},{name:"ellipsis",description:"Render an ellipsis character (U+2026) to represent clipped inline content."}],relevance:50,description:"Text can overflow for example when it is prevented from wrapping",restrictions:["enum"]},{name:"-o-transform",browsers:["O10.5"],values:[{name:"matrix()",description:"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]"},{name:"matrix3d()",description:"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order."},{name:"none"},{name:"rotate()",description:"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property."},{name:"rotate3d()",description:"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters."},{name:"rotateX('angle')",description:"Specifies a clockwise rotation by the given angle about the X axis."},{name:"rotateY('angle')",description:"Specifies a clockwise rotation by the given angle about the Y axis."},{name:"rotateZ('angle')",description:"Specifies a clockwise rotation by the given angle about the Z axis."},{name:"scale()",description:"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first."},{name:"scale3d()",description:"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters."},{name:"scaleX()",description:"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter."},{name:"scaleY()",description:"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter."},{name:"scaleZ()",description:"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter."},{name:"skew()",description:"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)."},{name:"skewX()",description:"Specifies a skew transformation along the X axis by the given angle."},{name:"skewY()",description:"Specifies a skew transformation along the Y axis by the given angle."},{name:"translate()",description:"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter."},{name:"translate3d()",description:"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively."},{name:"translateX()",description:"Specifies a translation by the given amount in the X direction."},{name:"translateY()",description:"Specifies a translation by the given amount in the Y direction."},{name:"translateZ()",description:"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0."}],relevance:50,description:"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.",restrictions:["enum"]},{name:"-o-transform-origin",browsers:["O10.5"],relevance:50,description:"Establishes the origin of transformation for an element.",restrictions:["positon","length","percentage"]},{name:"-o-transition",browsers:["O11.5"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Shorthand property combines four of the transition properties into a single property.",restrictions:["time","property","timing-function","enum"]},{name:"-o-transition-delay",browsers:["O11.5"],relevance:50,description:"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.",restrictions:["time"]},{name:"-o-transition-duration",browsers:["O11.5"],relevance:50,description:"Specifies how long the transition from the old value to the new value should take.",restrictions:["time"]},{name:"-o-transition-property",browsers:["O11.5"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Specifies the name of the CSS property to which the transition is applied.",restrictions:["property"]},{name:"-o-transition-timing-function",browsers:["O11.5"],relevance:50,description:"Describes how the intermediate values used during a transition will be calculated.",restrictions:["timing-function"]},{name:"offset-block-end",browsers:["FF41"],values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well."}],relevance:50,description:"Logical 'bottom'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"offset-block-start",browsers:["FF41"],values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well."}],relevance:50,description:"Logical 'top'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"offset-inline-end",browsers:["FF41"],values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well."}],relevance:50,description:"Logical 'right'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"offset-inline-start",browsers:["FF41"],values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well."}],relevance:50,description:"Logical 'left'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"outline",values:[{name:"auto",description:"Permits the user agent to render a custom outline style, typically the default platform style."},{name:"invert",description:"Performs a color inversion on the pixels on the screen."}],syntax:"[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/outline"}],description:"Shorthand property for 'outline-style', 'outline-width', and 'outline-color'.",restrictions:["length","line-width","line-style","color","enum"]},{name:"outline-color",values:[{name:"invert",description:"Performs a color inversion on the pixels on the screen."}],syntax:"<color> | invert",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/outline-color"}],description:"The color of the outline.",restrictions:["enum","color"]},{name:"outline-offset",browsers:["E15","FF1.5","S1.2","C1","O9.5"],syntax:"<length>",relevance:65,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/outline-offset"}],description:"Offset the outline and draw it beyond the border edge.",restrictions:["length"]},{name:"outline-style",values:[{name:"auto",description:"Permits the user agent to render a custom outline style, typically the default platform style."}],syntax:"auto | <'border-style'>",relevance:61,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/outline-style"}],description:"Style of the outline.",restrictions:["line-style","enum"]},{name:"outline-width",syntax:"<line-width>",relevance:61,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/outline-width"}],description:"Width of the outline.",restrictions:["length","line-width"]},{name:"overflow",values:[{name:"auto",description:"The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes."},{name:"hidden",description:"Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region."},{name:"-moz-hidden-unscrollable",description:"Same as the standardized 'clip', except doesn\u2019t establish a block formatting context."},{name:"scroll",description:"Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped."},{name:"visible",description:"Content is not clipped, i.e., it may be rendered outside the content box."}],syntax:"[ visible | hidden | clip | scroll | auto ]{1,2}",relevance:93,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow"}],description:"Shorthand for setting 'overflow-x' and 'overflow-y'.",restrictions:["enum"]},{name:"overflow-wrap",values:[{name:"break-word",description:"An otherwise unbreakable sequence of characters may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line."},{name:"normal",description:"Lines may break only at allowed break points."}],syntax:"normal | break-word | anywhere",relevance:63,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-wrap"}],description:"Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit within the line box.",restrictions:["enum"]},{name:"overflow-x",values:[{name:"auto",description:"The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes."},{name:"hidden",description:"Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region."},{name:"scroll",description:"Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped."},{name:"visible",description:"Content is not clipped, i.e., it may be rendered outside the content box."}],syntax:"visible | hidden | clip | scroll | auto",relevance:80,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-x"}],description:"Specifies the handling of overflow in the horizontal direction.",restrictions:["enum"]},{name:"overflow-y",values:[{name:"auto",description:"The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes."},{name:"hidden",description:"Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region."},{name:"scroll",description:"Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped."},{name:"visible",description:"Content is not clipped, i.e., it may be rendered outside the content box."}],syntax:"visible | hidden | clip | scroll | auto",relevance:81,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-y"}],description:"Specifies the handling of overflow in the vertical direction.",restrictions:["enum"]},{name:"pad",browsers:["FF33"],syntax:"<integer> && <symbol>",relevance:50,description:"@counter-style descriptor. Specifies a \u201cfixed-width\u201d counter style, where representations shorter than the pad value are padded with a particular <symbol>",restrictions:["integer","image","string","identifier"]},{name:"padding",values:[],syntax:"[ <length> | <percentage> ]{1,4}",relevance:96,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding"}],description:"Shorthand property to set values the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.",restrictions:["length","percentage"]},{name:"padding-bottom",syntax:"<length> | <percentage>",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-bottom"}],description:"Shorthand property to set values the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.",restrictions:["length","percentage"]},{name:"padding-block-end",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'padding-left'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-block-end"}],description:"Logical 'padding-bottom'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"padding-block-start",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'padding-left'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-block-start"}],description:"Logical 'padding-top'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"padding-inline-end",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'padding-left'>",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-inline-end"}],description:"Logical 'padding-right'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"padding-inline-start",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'padding-left'>",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-inline-start"}],description:"Logical 'padding-left'. Mapping depends on the parent element\u2019s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"padding-left",syntax:"<length> | <percentage>",relevance:90,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-left"}],description:"Shorthand property to set values the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.",restrictions:["length","percentage"]},{name:"padding-right",syntax:"<length> | <percentage>",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-right"}],description:"Shorthand property to set values the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.",restrictions:["length","percentage"]},{name:"padding-top",syntax:"<length> | <percentage>",relevance:90,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-top"}],description:"Shorthand property to set values the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.",restrictions:["length","percentage"]},{name:"page-break-after",values:[{name:"always",description:"Always force a page break after the generated box."},{name:"auto",description:"Neither force nor forbid a page break after generated box."},{name:"avoid",description:"Avoid a page break after the generated box."},{name:"left",description:"Force one or two page breaks after the generated box so that the next page is formatted as a left page."},{name:"right",description:"Force one or two page breaks after the generated box so that the next page is formatted as a right page."}],syntax:"auto | always | avoid | left | right | recto | verso",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/page-break-after"}],description:"Defines rules for page breaks after an element.",restrictions:["enum"]},{name:"page-break-before",values:[{name:"always",description:"Always force a page break before the generated box."},{name:"auto",description:"Neither force nor forbid a page break before the generated box."},{name:"avoid",description:"Avoid a page break before the generated box."},{name:"left",description:"Force one or two page breaks before the generated box so that the next page is formatted as a left page."},{name:"right",description:"Force one or two page breaks before the generated box so that the next page is formatted as a right page."}],syntax:"auto | always | avoid | left | right | recto | verso",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/page-break-before"}],description:"Defines rules for page breaks before an element.",restrictions:["enum"]},{name:"page-break-inside",values:[{name:"auto",description:"Neither force nor forbid a page break inside the generated box."},{name:"avoid",description:"Avoid a page break inside the generated box."}],syntax:"auto | avoid",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/page-break-inside"}],description:"Defines rules for page breaks inside an element.",restrictions:["enum"]},{name:"paint-order",browsers:["E17","FF60","S8","C35","O22"],values:[{name:"fill"},{name:"markers"},{name:"normal",description:"The element is painted with the standard order of painting operations: the 'fill' is painted first, then its 'stroke' and finally its markers."},{name:"stroke"}],syntax:"normal | [ fill || stroke || markers ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/paint-order"}],description:"Controls the order that the three paint operations that shapes and text are rendered with: their fill, their stroke and any markers they might have.",restrictions:["enum"]},{name:"perspective",values:[{name:"none",description:"No perspective transform is applied."}],syntax:"none | <length>",relevance:56,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/perspective"}],description:"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.",restrictions:["length","enum"]},{name:"perspective-origin",syntax:"<position>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/perspective-origin"}],description:"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"pointer-events",values:[{name:"all",description:"The given element can be the target element for pointer events whenever the pointer is over either the interior or the perimeter of the element."},{name:"fill",description:"The given element can be the target element for pointer events whenever the pointer is over the interior of the element."},{name:"none",description:"The given element does not receive pointer events."},{name:"painted",description:'The given element can be the target element for pointer events when the pointer is over a "painted" area. '},{name:"stroke",description:"The given element can be the target element for pointer events whenever the pointer is over the perimeter of the element."},{name:"visible",description:"The given element can be the target element for pointer events when the \u2018visibility\u2019 property is set to visible and the pointer is over either the interior or the perimete of the element."},{name:"visibleFill",description:"The given element can be the target element for pointer events when the \u2018visibility\u2019 property is set to visible and when the pointer is over the interior of the element."},{name:"visiblePainted",description:"The given element can be the target element for pointer events when the \u2018visibility\u2019 property is set to visible and when the pointer is over a \u2018painted\u2019 area."},{name:"visibleStroke",description:"The given element can be the target element for pointer events when the \u2018visibility\u2019 property is set to visible and when the pointer is over the perimeter of the element."}],syntax:"auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit",relevance:81,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/pointer-events"}],description:"Specifies under what circumstances a given element can be the target element for a pointer event.",restrictions:["enum"]},{name:"position",values:[{name:"absolute",description:"The box's position (and possibly size) is specified with the 'top', 'right', 'bottom', and 'left' properties. These properties specify offsets with respect to the box's 'containing block'."},{name:"fixed",description:"The box's position is calculated according to the 'absolute' model, but in addition, the box is fixed with respect to some reference. As with the 'absolute' model, the box's margins do not collapse with any other margins."},{name:"-ms-page",description:"The box's position is calculated according to the 'absolute' model."},{name:"relative",description:"The box's position is calculated according to the normal flow (this is called the position in normal flow). Then the box is offset relative to its normal position."},{name:"static",description:"The box is a normal box, laid out according to the normal flow. The 'top', 'right', 'bottom', and 'left' properties do not apply."},{name:"sticky",description:"The box's position is calculated according to the normal flow. Then the box is offset relative to its flow root and containing block and in all cases, including table elements, does not affect the position of any following boxes."},{name:"-webkit-sticky",description:"The box's position is calculated according to the normal flow. Then the box is offset relative to its flow root and containing block and in all cases, including table elements, does not affect the position of any following boxes."}],syntax:"static | relative | absolute | sticky | fixed",relevance:96,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/position"}],description:"The position CSS property sets how an element is positioned in a document. The top, right, bottom, and left properties determine the final location of positioned elements.",restrictions:["enum"]},{name:"prefix",browsers:["FF33"],syntax:"<symbol>",relevance:50,description:"@counter-style descriptor. Specifies a <symbol> that is prepended to the marker representation.",restrictions:["image","string","identifier"]},{name:"quotes",values:[{name:"none",description:"The 'open-quote' and 'close-quote' values of the 'content' property produce no quotations marks, as if they were 'no-open-quote' and 'no-close-quote' respectively."}],syntax:"none | auto | [ <string> <string> ]+",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/quotes"}],description:"Specifies quotation marks for any number of embedded quotations.",restrictions:["string"]},{name:"range",browsers:["FF33"],values:[{name:"auto",description:"The range depends on the counter system."},{name:"infinite",description:"If used as the first value in a range, it represents negative infinity; if used as the second value, it represents positive infinity."}],syntax:"[ [ <integer> | infinite ]{2} ]# | auto",relevance:50,description:"@counter-style descriptor. Defines the ranges over which the counter style is defined.",restrictions:["integer","enum"]},{name:"resize",browsers:["E79","FF4","S3","C1","O12.1"],values:[{name:"both",description:"The UA presents a bidirectional resizing mechanism to allow the user to adjust both the height and the width of the element."},{name:"horizontal",description:"The UA presents a unidirectional horizontal resizing mechanism to allow the user to adjust only the width of the element."},{name:"none",description:"The UA does not present a resizing mechanism on the element, and the user is given no direct manipulation mechanism to resize the element."},{name:"vertical",description:"The UA presents a unidirectional vertical resizing mechanism to allow the user to adjust only the height of the element."}],syntax:"none | both | horizontal | vertical | block | inline",relevance:60,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/resize"}],description:"Specifies whether or not an element is resizable by the user, and if so, along which axis/axes.",restrictions:["enum"]},{name:"right",values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well"}],syntax:"<length> | <percentage> | auto",relevance:91,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/right"}],description:"Specifies how far an absolutely positioned box's right margin edge is offset to the left of the right edge of the box's 'containing block'.",restrictions:["length","percentage"]},{name:"ruby-align",browsers:["FF38"],values:[{name:"auto",browsers:["FF38"],description:"The user agent determines how the ruby contents are aligned. This is the initial value."},{name:"center",description:"The ruby content is centered within its box."},{name:"distribute-letter",browsers:["FF38"],description:"If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with the first and last ruby text glyphs lining up with the corresponding first and last base glyphs. If the width of the ruby text is at least the width of the base, then the letters of the base are evenly distributed across the width of the ruby text."},{name:"distribute-space",browsers:["FF38"],description:"If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with a certain amount of white space preceding the first and following the last character in the ruby text. That amount of white space is normally equal to half the amount of inter-character space of the ruby text."},{name:"left",description:"The ruby text content is aligned with the start edge of the base."},{name:"line-edge",browsers:["FF38"],description:"If the ruby text is not adjacent to a line edge, it is aligned as in 'auto'. If it is adjacent to a line edge, then it is still aligned as in auto, but the side of the ruby text that touches the end of the line is lined up with the corresponding edge of the base."},{name:"right",browsers:["FF38"],description:"The ruby text content is aligned with the end edge of the base."},{name:"start",browsers:["FF38"],description:"The ruby text content is aligned with the start edge of the base."},{name:"space-between",browsers:["FF38"],description:"The ruby content expands as defined for normal text justification (as defined by 'text-justify'),"},{name:"space-around",browsers:["FF38"],description:"As for 'space-between' except that there exists an extra justification opportunities whose space is distributed half before and half after the ruby content."}],status:"experimental",syntax:"start | center | space-between | space-around",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/ruby-align"}],description:"Specifies how text is distributed within the various ruby boxes when their contents do not exactly fill their respective boxes.",restrictions:["enum"]},{name:"ruby-overhang",browsers:["FF10","IE5"],values:[{name:"auto",description:"The ruby text can overhang text adjacent to the base on either side. This is the initial value."},{name:"end",description:"The ruby text can overhang the text that follows it."},{name:"none",description:"The ruby text cannot overhang any text adjacent to its base, only its own base."},{name:"start",description:"The ruby text can overhang the text that precedes it."}],relevance:50,description:"Determines whether, and on which side, ruby text is allowed to partially overhang any adjacent text in addition to its own base, when the ruby text is wider than the ruby base.",restrictions:["enum"]},{name:"ruby-position",browsers:["E84","FF38","S6.1","C84","O70"],values:[{name:"after",description:"The ruby text appears after the base. This is a relatively rare setting used in ideographic East Asian writing systems, most easily found in educational text."},{name:"before",description:"The ruby text appears before the base. This is the most common setting used in ideographic East Asian writing systems."},{name:"inline"},{name:"right",description:"The ruby text appears on the right of the base. Unlike 'before' and 'after', this value is not relative to the text flow direction."}],status:"experimental",syntax:"over | under | inter-character",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/ruby-position"}],description:"Used by the parent of elements with display: ruby-text to control the position of the ruby text with respect to its base.",restrictions:["enum"]},{name:"ruby-span",browsers:["FF10"],values:[{name:"attr(x)",description:"The value of attribute 'x' is a string value. The string value is evaluated as a <number> to determine the number of ruby base elements to be spanned by the annotation element."},{name:"none",description:"No spanning. The computed value is '1'."}],relevance:50,description:"Determines whether, and on which side, ruby text is allowed to partially overhang any adjacent text in addition to its own base, when the ruby text is wider than the ruby base.",restrictions:["enum"]},{name:"scrollbar-3dlight-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-3dlight-color"}],description:"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"scrollbar-arrow-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-arrow-color"}],description:"Determines the color of the arrow elements of a scroll arrow.",restrictions:["color"]},{name:"scrollbar-base-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-base-color"}],description:"Determines the color of the main elements of a scroll bar, which include the scroll box, track, and scroll arrows.",restrictions:["color"]},{name:"scrollbar-darkshadow-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-darkshadow-color"}],description:"Determines the color of the gutter of a scroll bar.",restrictions:["color"]},{name:"scrollbar-face-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-face-color"}],description:"Determines the color of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"scrollbar-highlight-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-highlight-color"}],description:"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"scrollbar-shadow-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-shadow-color"}],description:"Determines the color of the bottom and right edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"scrollbar-track-color",browsers:["IE6"],relevance:50,description:"Determines the color of the track element of a scroll bar.",restrictions:["color"]},{name:"scroll-behavior",browsers:["E79","FF36","S14","C61","O48"],values:[{name:"auto",description:"Scrolls in an instant fashion."},{name:"smooth",description:"Scrolls in a smooth fashion using a user-agent-defined timing function and time period."}],syntax:"auto | smooth",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-behavior"}],description:"Specifies the scrolling behavior for a scrolling box, when scrolling happens due to navigation or CSSOM scrolling APIs.",restrictions:["enum"]},{name:"scroll-snap-coordinate",browsers:["FF39"],values:[{name:"none",description:"Specifies that this element does not contribute a snap point."}],status:"obsolete",syntax:"none | <position>#",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-coordinate"}],description:"Defines the x and y coordinate within the element which will align with the nearest ancestor scroll container\u2019s snap-destination for the respective axis.",restrictions:["position","length","percentage","enum"]},{name:"scroll-snap-destination",browsers:["FF39"],status:"obsolete",syntax:"<position>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-destination"}],description:"Define the x and y coordinate within the scroll container\u2019s visual viewport which element snap points will align with.",restrictions:["position","length","percentage"]},{name:"scroll-snap-points-x",browsers:["FF39","S9"],values:[{name:"none",description:"No snap points are defined by this scroll container."},{name:"repeat()",description:"Defines an interval at which snap points are defined, starting from the container\u2019s relevant start edge."}],status:"obsolete",syntax:"none | repeat( <length-percentage> )",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-x"}],description:"Defines the positioning of snap points along the x axis of the scroll container it is applied to.",restrictions:["enum"]},{name:"scroll-snap-points-y",browsers:["FF39","S9"],values:[{name:"none",description:"No snap points are defined by this scroll container."},{name:"repeat()",description:"Defines an interval at which snap points are defined, starting from the container\u2019s relevant start edge."}],status:"obsolete",syntax:"none | repeat( <length-percentage> )",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-y"}],description:"Defines the positioning of snap points along the y axis of the scroll container it is applied to.",restrictions:["enum"]},{name:"scroll-snap-type",values:[{name:"none",description:"The visual viewport of this scroll container must ignore snap points, if any, when scrolled."},{name:"mandatory",description:"The visual viewport of this scroll container is guaranteed to rest on a snap point when there are no active scrolling operations."},{name:"proximity",description:"The visual viewport of this scroll container may come to rest on a snap point at the termination of a scroll at the discretion of the UA given the parameters of the scroll."}],syntax:"none | [ x | y | block | inline | both ] [ mandatory | proximity ]?",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type"}],description:"Defines how strictly snap points are enforced on the scroll container.",restrictions:["enum"]},{name:"shape-image-threshold",browsers:["E79","FF62","S10.1","C37","O24"],syntax:"<alpha-value>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/shape-image-threshold"}],description:"Defines the alpha channel threshold used to extract the shape using an image. A value of 0.5 means that the shape will enclose all the pixels that are more than 50% opaque.",restrictions:["number"]},{name:"shape-margin",browsers:["E79","FF62","S10.1","C37","O24"],syntax:"<length-percentage>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/shape-margin"}],description:"Adds a margin to a 'shape-outside'. This defines a new shape that is the smallest contour that includes all the points that are the 'shape-margin' distance outward in the perpendicular direction from a point on the underlying shape.",restrictions:["url","length","percentage"]},{name:"shape-outside",browsers:["E79","FF62","S10.1","C37","O24"],values:[{name:"margin-box",description:"The background is painted within (clipped to) the margin box."},{name:"none",description:"The float area is unaffected."}],syntax:"none | <shape-box> || <basic-shape> | <image>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/shape-outside"}],description:"Specifies an orthogonal rotation to be applied to an image before it is laid out.",restrictions:["image","box","shape","enum"]},{name:"shape-rendering",values:[{name:"auto",description:"Suppresses aural rendering."},{name:"crispEdges",description:"Emphasize the contrast between clean edges of artwork over rendering speed and geometric precision."},{name:"geometricPrecision",description:"Emphasize geometric precision over speed and crisp edges."},{name:"optimizeSpeed",description:"Emphasize rendering speed over geometric precision and crisp edges."}],relevance:50,description:"Provides hints about what tradeoffs to make as it renders vector graphics elements such as <path> elements and basic shapes such as circles and rectangles.",restrictions:["enum"]},{name:"size",browsers:["C","O8"],syntax:"<length>{1,2} | auto | [ <page-size> || [ portrait | landscape ] ]",relevance:52,description:"The size CSS at-rule descriptor, used with the @page at-rule, defines the size and orientation of the box which is used to represent a page. Most of the time, this size corresponds to the target size of the printed page if applicable.",restrictions:["length"]},{name:"src",values:[{name:"url()",description:"Reference font by URL"},{name:"format()",description:"Optional hint describing the format of the font resource."},{name:"local()",description:"Format-specific string that identifies a locally available copy of a given font."}],syntax:"[ <url> [ format( <string># ) ]? | local( <family-name> ) ]#",relevance:65,description:"@font-face descriptor. Specifies the resource containing font data. It is required, whether the font is downloadable or locally installed.",restrictions:["enum","url","identifier"]},{name:"stop-color",relevance:51,description:"Indicates what color to use at that gradient stop.",restrictions:["color"]},{name:"stop-opacity",relevance:50,description:"Defines the opacity of a given gradient stop.",restrictions:["number(0-1)"]},{name:"stroke",values:[{name:"url()",description:"A URL reference to a paint server element, which is an element that defines a paint server: \u2018hatch\u2019, \u2018linearGradient\u2019, \u2018mesh\u2019, \u2018pattern\u2019, \u2018radialGradient\u2019 and \u2018solidcolor\u2019."},{name:"none",description:"No paint is applied in this layer."}],relevance:64,description:"Paints along the outline of the given graphical element.",restrictions:["color","enum","url"]},{name:"stroke-dasharray",values:[{name:"none",description:"Indicates that no dashing is used."}],relevance:59,description:"Controls the pattern of dashes and gaps used to stroke paths.",restrictions:["length","percentage","number","enum"]},{name:"stroke-dashoffset",relevance:58,description:"Specifies the distance into the dash pattern to start the dash.",restrictions:["percentage","length"]},{name:"stroke-linecap",values:[{name:"butt",description:"Indicates that the stroke for each subpath does not extend beyond its two endpoints."},{name:"round",description:"Indicates that at each end of each subpath, the shape representing the stroke will be extended by a half circle with a radius equal to the stroke width."},{name:"square",description:"Indicates that at the end of each subpath, the shape representing the stroke will be extended by a rectangle with the same width as the stroke width and whose length is half of the stroke width."}],relevance:53,description:"Specifies the shape to be used at the end of open subpaths when they are stroked.",restrictions:["enum"]},{name:"stroke-linejoin",values:[{name:"bevel",description:"Indicates that a bevelled corner is to be used to join path segments."},{name:"miter",description:"Indicates that a sharp corner is to be used to join path segments."},{name:"round",description:"Indicates that a round corner is to be used to join path segments."}],relevance:50,description:"Specifies the shape to be used at the corners of paths or basic shapes when they are stroked.",restrictions:["enum"]},{name:"stroke-miterlimit",relevance:50,description:"When two line segments meet at a sharp angle and miter joins have been specified for 'stroke-linejoin', it is possible for the miter to extend far beyond the thickness of the line stroking the path.",restrictions:["number"]},{name:"stroke-opacity",relevance:52,description:"Specifies the opacity of the painting operation used to stroke the current object.",restrictions:["number(0-1)"]},{name:"stroke-width",relevance:61,description:"Specifies the width of the stroke on the current object.",restrictions:["percentage","length"]},{name:"suffix",browsers:["FF33"],syntax:"<symbol>",relevance:50,description:"@counter-style descriptor. Specifies a <symbol> that is appended to the marker representation.",restrictions:["image","string","identifier"]},{name:"system",browsers:["FF33"],values:[{name:"additive",description:"Represents \u201csign-value\u201d numbering systems, which, rather than using reusing digits in different positions to change their value, define additional digits with much larger values, so that the value of the number can be obtained by adding all the digits together."},{name:"alphabetic",description:'Interprets the list of counter symbols as digits to an alphabetic numbering system, similar to the default lower-alpha counter style, which wraps from "a", "b", "c", to "aa", "ab", "ac".'},{name:"cyclic",description:"Cycles repeatedly through its provided symbols, looping back to the beginning when it reaches the end of the list."},{name:"extends",description:"Use the algorithm of another counter style, but alter other aspects."},{name:"fixed",description:"Runs through its list of counter symbols once, then falls back."},{name:"numeric",description:"interprets the list of counter symbols as digits to a \"place-value\" numbering system, similar to the default 'decimal' counter style."},{name:"symbolic",description:"Cycles repeatedly through its provided symbols, doubling, tripling, etc. the symbols on each successive pass through the list."}],syntax:"cyclic | numeric | alphabetic | symbolic | additive | [ fixed <integer>? ] | [ extends <counter-style-name> ]",relevance:50,description:"@counter-style descriptor. Specifies which algorithm will be used to construct the counter\u2019s representation based on the counter value.",restrictions:["enum","integer"]},{name:"symbols",browsers:["FF33"],syntax:"<symbol>+",relevance:50,description:"@counter-style descriptor. Specifies the symbols used by the marker-construction algorithm specified by the system descriptor.",restrictions:["image","string","identifier"]},{name:"table-layout",values:[{name:"auto",description:"Use any automatic table layout algorithm."},{name:"fixed",description:"Use the fixed table layout algorithm."}],syntax:"auto | fixed",relevance:60,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/table-layout"}],description:"Controls the algorithm used to lay out the table cells, rows, and columns.",restrictions:["enum"]},{name:"tab-size",browsers:["E79","FF4","S6.1","C21","O15"],syntax:"<integer> | <length>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/tab-size"}],description:"Determines the width of the tab character (U+0009), in space characters (U+0020), when rendered.",restrictions:["integer","length"]},{name:"text-align",values:[{name:"center",description:"The inline contents are centered within the line box."},{name:"end",description:"The inline contents are aligned to the end edge of the line box."},{name:"justify",description:"The text is justified according to the method specified by the 'text-justify' property."},{name:"left",description:"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text."},{name:"right",description:"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text."},{name:"start",description:"The inline contents are aligned to the start edge of the line box."}],syntax:"start | end | left | right | center | justify | match-parent",relevance:94,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-align"}],description:"Describes how inline contents of a block are horizontally aligned if the contents do not completely fill the line box.",restrictions:["string"]},{name:"text-align-last",browsers:["E12","FF49","C47","IE5.5","O34"],values:[{name:"auto",description:"Content on the affected line is aligned per 'text-align' unless 'text-align' is set to 'justify', in which case it is 'start-aligned'."},{name:"center",description:"The inline contents are centered within the line box."},{name:"justify",description:"The text is justified according to the method specified by the 'text-justify' property."},{name:"left",description:"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text."},{name:"right",description:"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text."}],syntax:"auto | start | end | left | right | center | justify",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-align-last"}],description:"Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.",restrictions:["enum"]},{name:"text-anchor",values:[{name:"end",description:"The rendered characters are aligned such that the end of the resulting rendered text is at the initial current text position."},{name:"middle",description:"The rendered characters are aligned such that the geometric middle of the resulting rendered text is at the initial current text position."},{name:"start",description:"The rendered characters are aligned such that the start of the resulting rendered text is at the initial current text position."}],relevance:50,description:"Used to align (start-, middle- or end-alignment) a string of text relative to a given point.",restrictions:["enum"]},{name:"text-decoration",values:[{name:"dashed",description:"Produces a dashed line style."},{name:"dotted",description:"Produces a dotted line."},{name:"double",description:"Produces a double line."},{name:"line-through",description:"Each line of text has a line through the middle."},{name:"none",description:"Produces no line."},{name:"overline",description:"Each line of text has a line above it."},{name:"solid",description:"Produces a solid line."},{name:"underline",description:"Each line of text is underlined."},{name:"wavy",description:"Produces a wavy line."}],syntax:"<'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration"}],description:"Decorations applied to font used for an element's text.",restrictions:["enum","color"]},{name:"text-decoration-color",browsers:["E79","FF36","S12.1","C57","O44"],syntax:"<color>",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-color"}],description:"Specifies the color of text decoration (underlines overlines, and line-throughs) set on the element with text-decoration-line.",restrictions:["color"]},{name:"text-decoration-line",browsers:["E79","FF36","S12.1","C57","O44"],values:[{name:"line-through",description:"Each line of text has a line through the middle."},{name:"none",description:"Neither produces nor inhibits text decoration."},{name:"overline",description:"Each line of text has a line above it."},{name:"underline",description:"Each line of text is underlined."}],syntax:"none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-line"}],description:"Specifies what line decorations, if any, are added to the element.",restrictions:["enum"]},{name:"text-decoration-style",browsers:["E79","FF36","S12.1","C57","O44"],values:[{name:"dashed",description:"Produces a dashed line style."},{name:"dotted",description:"Produces a dotted line."},{name:"double",description:"Produces a double line."},{name:"none",description:"Produces no line."},{name:"solid",description:"Produces a solid line."},{name:"wavy",description:"Produces a wavy line."}],syntax:"solid | double | dotted | dashed | wavy",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-style"}],description:"Specifies the line style for underline, line-through and overline text decoration.",restrictions:["enum"]},{name:"text-indent",values:[],syntax:"<length-percentage> && hanging? && each-line?",relevance:68,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-indent"}],description:"Specifies the indentation applied to lines of inline content in a block. The indentation only affects the first line of inline content in the block unless the 'hanging' keyword is specified, in which case it affects all lines except the first.",restrictions:["percentage","length"]},{name:"text-justify",browsers:["E12","FF55","C32","IE11","O19"],values:[{name:"auto",description:"The UA determines the justification algorithm to follow, based on a balance between performance and adequate presentation quality."},{name:"distribute",description:"Justification primarily changes spacing both at word separators and at grapheme cluster boundaries in all scripts except those in the connected and cursive groups. This value is sometimes used in e.g. Japanese, often with the 'text-align-last' property."},{name:"distribute-all-lines"},{name:"inter-cluster",description:"Justification primarily changes spacing at word separators and at grapheme cluster boundaries in clustered scripts. This value is typically used for Southeast Asian scripts such as Thai."},{name:"inter-ideograph",description:"Justification primarily changes spacing at word separators and at inter-graphemic boundaries in scripts that use no word spaces. This value is typically used for CJK languages."},{name:"inter-word",description:"Justification primarily changes spacing at word separators. This value is typically used for languages that separate words using spaces, like English or (sometimes) Korean."},{name:"kashida",description:"Justification primarily stretches Arabic and related scripts through the use of kashida or other calligraphic elongation."},{name:"newspaper"}],syntax:"auto | inter-character | inter-word | none",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-justify"}],description:"Selects the justification algorithm used when 'text-align' is set to 'justify'. The property applies to block containers, but the UA may (but is not required to) also support it on inline elements.",restrictions:["enum"]},{name:"text-orientation",browsers:["E79","FF41","S14","C48","O15"],values:[{name:"sideways",browsers:["E79","FF41","S14","C48","O15"],description:"This value is equivalent to 'sideways-right' in 'vertical-rl' writing mode and equivalent to 'sideways-left' in 'vertical-lr' writing mode."},{name:"sideways-right",browsers:["E79","FF41","S14","C48","O15"],description:"In vertical writing modes, this causes text to be set as if in a horizontal layout, but rotated 90\xb0 clockwise."},{name:"upright",description:"In vertical writing modes, characters from horizontal-only scripts are rendered upright, i.e. in their standard horizontal orientation."}],syntax:"mixed | upright | sideways",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-orientation"}],description:"Specifies the orientation of text within a line.",restrictions:["enum"]},{name:"text-overflow",values:[{name:"clip",description:"Clip inline content that overflows. Characters may be only partially rendered."},{name:"ellipsis",description:"Render an ellipsis character (U+2026) to represent clipped inline content."}],syntax:"[ clip | ellipsis | <string> ]{1,2}",relevance:82,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-overflow"}],description:"Text can overflow for example when it is prevented from wrapping.",restrictions:["enum","string"]},{name:"text-rendering",browsers:["E79","FF1","S5","C4","O15"],values:[{name:"auto"},{name:"geometricPrecision",description:"Indicates that the user agent shall emphasize geometric precision over legibility and rendering speed."},{name:"optimizeLegibility",description:"Indicates that the user agent shall emphasize legibility over rendering speed and geometric precision."},{name:"optimizeSpeed",description:"Indicates that the user agent shall emphasize rendering speed over legibility and geometric precision."}],syntax:"auto | optimizeSpeed | optimizeLegibility | geometricPrecision",relevance:68,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-rendering"}],description:"The creator of SVG content might want to provide a hint to the implementation about what tradeoffs to make as it renders text. The \u2018text-rendering\u2019 property provides these hints.",restrictions:["enum"]},{name:"text-shadow",values:[{name:"none",description:"No shadow."}],syntax:"none | <shadow-t>#",relevance:75,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-shadow"}],description:"Enables shadow effects to be applied to the text of the element.",restrictions:["length","color"]},{name:"text-transform",values:[{name:"capitalize",description:"Puts the first typographic letter unit of each word in titlecase."},{name:"lowercase",description:"Puts all letters in lowercase."},{name:"none",description:"No effects."},{name:"uppercase",description:"Puts all letters in uppercase."}],syntax:"none | capitalize | uppercase | lowercase | full-width | full-size-kana",relevance:85,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-transform"}],description:"Controls capitalization effects of an element\u2019s text.",restrictions:["enum"]},{name:"text-underline-position",values:[{name:"above"},{name:"auto",description:"The user agent may use any algorithm to determine the underline\u2019s position. In horizontal line layout, the underline should be aligned as for alphabetic. In vertical line layout, if the language is set to Japanese or Korean, the underline should be aligned as for over."},{name:"below",description:"The underline is aligned with the under edge of the element\u2019s content box."}],syntax:"auto | from-font | [ under || [ left | right ] ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-underline-position"}],description:"Sets the position of an underline specified on the same element: it does not affect underlines specified by ancestor elements. This property is typically used in vertical writing contexts such as in Japanese documents where it often desired to have the underline appear 'over' (to the right of) the affected run of text",restrictions:["enum"]},{name:"top",values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well"}],syntax:"<length> | <percentage> | auto",relevance:95,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/top"}],description:"Specifies how far an absolutely positioned box's top margin edge is offset below the top edge of the box's 'containing block'.",restrictions:["length","percentage"]},{name:"touch-action",values:[{name:"auto",description:"The user agent may determine any permitted touch behaviors for touches that begin on the element."},{name:"cross-slide-x"},{name:"cross-slide-y"},{name:"double-tap-zoom"},{name:"manipulation",description:"The user agent may consider touches that begin on the element only for the purposes of scrolling and continuous zooming."},{name:"none",description:"Touches that begin on the element must not trigger default touch behaviors."},{name:"pan-x",description:"The user agent may consider touches that begin on the element only for the purposes of horizontally scrolling the element\u2019s nearest ancestor with horizontally scrollable content."},{name:"pan-y",description:"The user agent may consider touches that begin on the element only for the purposes of vertically scrolling the element\u2019s nearest ancestor with vertically scrollable content."},{name:"pinch-zoom"}],syntax:"auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation",relevance:66,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/touch-action"}],description:"Determines whether touch input may trigger default behavior supplied by user agent.",restrictions:["enum"]},{name:"transform",values:[{name:"matrix()",description:"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]"},{name:"matrix3d()",description:"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order."},{name:"none"},{name:"perspective()",description:"Specifies a perspective projection matrix."},{name:"rotate()",description:"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property."},{name:"rotate3d()",description:"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters."},{name:"rotateX('angle')",description:"Specifies a clockwise rotation by the given angle about the X axis."},{name:"rotateY('angle')",description:"Specifies a clockwise rotation by the given angle about the Y axis."},{name:"rotateZ('angle')",description:"Specifies a clockwise rotation by the given angle about the Z axis."},{name:"scale()",description:"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first."},{name:"scale3d()",description:"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters."},{name:"scaleX()",description:"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter."},{name:"scaleY()",description:"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter."},{name:"scaleZ()",description:"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter."},{name:"skew()",description:"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)."},{name:"skewX()",description:"Specifies a skew transformation along the X axis by the given angle."},{name:"skewY()",description:"Specifies a skew transformation along the Y axis by the given angle."},{name:"translate()",description:"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter."},{name:"translate3d()",description:"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively."},{name:"translateX()",description:"Specifies a translation by the given amount in the X direction."},{name:"translateY()",description:"Specifies a translation by the given amount in the Y direction."},{name:"translateZ()",description:"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0."}],syntax:"none | <transform-list>",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transform"}],description:"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.",restrictions:["enum"]},{name:"transform-origin",syntax:"[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?",relevance:75,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transform-origin"}],description:"Establishes the origin of transformation for an element.",restrictions:["position","length","percentage"]},{name:"transform-style",browsers:["E12","FF16","S9","C36","O23"],values:[{name:"flat",description:"All children of this element are rendered flattened into the 2D plane of the element."},{name:"preserve-3d",browsers:["E12","FF16","S9","C36","O23"],description:"Flattening is not performed, so children maintain their position in 3D space."}],syntax:"flat | preserve-3d",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transform-style"}],description:"Defines how nested elements are rendered in 3D space.",restrictions:["enum"]},{name:"transition",values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],syntax:"<single-transition>#",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transition"}],description:"Shorthand property combines four of the transition properties into a single property.",restrictions:["time","property","timing-function","enum"]},{name:"transition-delay",syntax:"<time>#",relevance:63,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transition-delay"}],description:"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.",restrictions:["time"]},{name:"transition-duration",syntax:"<time>#",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transition-duration"}],description:"Specifies how long the transition from the old value to the new value should take.",restrictions:["time"]},{name:"transition-property",values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],syntax:"none | <single-transition-property>#",relevance:64,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transition-property"}],description:"Specifies the name of the CSS property to which the transition is applied.",restrictions:["property"]},{name:"transition-timing-function",syntax:"<easing-function>#",relevance:61,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transition-timing-function"}],description:"Describes how the intermediate values used during a transition will be calculated.",restrictions:["timing-function"]},{name:"unicode-bidi",values:[{name:"bidi-override",description:"Inside the element, reordering is strictly in sequence according to the 'direction' property; the implicit part of the bidirectional algorithm is ignored."},{name:"embed",description:"If the element is inline-level, this value opens an additional level of embedding with respect to the bidirectional algorithm. The direction of this embedding level is given by the 'direction' property."},{name:"isolate",description:"The contents of the element are considered to be inside a separate, independent paragraph."},{name:"isolate-override",description:"This combines the isolation behavior of 'isolate' with the directional override behavior of 'bidi-override'"},{name:"normal",description:"The element does not open an additional level of embedding with respect to the bidirectional algorithm. For inline-level elements, implicit reordering works across element boundaries."},{name:"plaintext",description:"For the purposes of the Unicode bidirectional algorithm, the base directionality of each bidi paragraph for which the element forms the containing block is determined not by the element's computed 'direction'."}],syntax:"normal | embed | isolate | bidi-override | isolate-override | plaintext",relevance:58,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/unicode-bidi"}],description:"The level of embedding with respect to the bidirectional algorithm.",restrictions:["enum"]},{name:"unicode-range",values:[{name:"U+26",description:"Ampersand."},{name:"U+20-24F, U+2B0-2FF, U+370-4FF, U+1E00-1EFF, U+2000-20CF, U+2100-23FF, U+2500-26FF, U+E000-F8FF, U+FB00\u2013FB4F",description:"WGL4 character set (Pan-European)."},{name:"U+20-17F, U+2B0-2FF, U+2000-206F, U+20A0-20CF, U+2100-21FF, U+2600-26FF",description:"The Multilingual European Subset No. 1. Latin. Covers ~44 languages."},{name:"U+20-2FF, U+370-4FF, U+1E00-20CF, U+2100-23FF, U+2500-26FF, U+FB00-FB4F, U+FFF0-FFFD",description:"The Multilingual European Subset No. 2. Latin, Greek, and Cyrillic. Covers ~128 language."},{name:"U+20-4FF, U+530-58F, U+10D0-10FF, U+1E00-23FF, U+2440-245F, U+2500-26FF, U+FB00-FB4F, U+FE20-FE2F, U+FFF0-FFFD",description:"The Multilingual European Subset No. 3. Covers all characters belonging to European scripts."},{name:"U+00-7F",description:"Basic Latin (ASCII)."},{name:"U+80-FF",description:"Latin-1 Supplement. Accented characters for Western European languages, common punctuation characters, multiplication and division signs."},{name:"U+100-17F",description:"Latin Extended-A. Accented characters for for Czech, Dutch, Polish, and Turkish."},{name:"U+180-24F",description:"Latin Extended-B. Croatian, Slovenian, Romanian, Non-European and historic latin, Khoisan, Pinyin, Livonian, Sinology."},{name:"U+1E00-1EFF",description:"Latin Extended Additional. Vietnamese, German captial sharp s, Medievalist, Latin general use."},{name:"U+250-2AF",description:"International Phonetic Alphabet Extensions."},{name:"U+370-3FF",description:"Greek and Coptic."},{name:"U+1F00-1FFF",description:"Greek Extended. Accented characters for polytonic Greek."},{name:"U+400-4FF",description:"Cyrillic."},{name:"U+500-52F",description:"Cyrillic Supplement. Extra letters for Komi, Khanty, Chukchi, Mordvin, Kurdish, Aleut, Chuvash, Abkhaz, Azerbaijani, and Orok."},{name:"U+00-52F, U+1E00-1FFF, U+2200\u201322FF",description:"Latin, Greek, Cyrillic, some punctuation and symbols."},{name:"U+530\u201358F",description:"Armenian."},{name:"U+590\u20135FF",description:"Hebrew."},{name:"U+600\u20136FF",description:"Arabic."},{name:"U+750\u201377F",description:"Arabic Supplement. Additional letters for African languages, Khowar, Torwali, Burushaski, and early Persian."},{name:"U+8A0\u20138FF",description:"Arabic Extended-A. Additional letters for African languages, European and Central Asian languages, Rohingya, Tamazight, Arwi, and Koranic annotation signs."},{name:"U+700\u201374F",description:"Syriac."},{name:"U+900\u201397F",description:"Devanagari."},{name:"U+980\u20139FF",description:"Bengali."},{name:"U+A00\u2013A7F",description:"Gurmukhi."},{name:"U+A80\u2013AFF",description:"Gujarati."},{name:"U+B00\u2013B7F",description:"Oriya."},{name:"U+B80\u2013BFF",description:"Tamil."},{name:"U+C00\u2013C7F",description:"Telugu."},{name:"U+C80\u2013CFF",description:"Kannada."},{name:"U+D00\u2013D7F",description:"Malayalam."},{name:"U+D80\u2013DFF",description:"Sinhala."},{name:"U+118A0\u2013118FF",description:"Warang Citi."},{name:"U+E00\u2013E7F",description:"Thai."},{name:"U+1A20\u20131AAF",description:"Tai Tham."},{name:"U+AA80\u2013AADF",description:"Tai Viet."},{name:"U+E80\u2013EFF",description:"Lao."},{name:"U+F00\u2013FFF",description:"Tibetan."},{name:"U+1000\u2013109F",description:"Myanmar (Burmese)."},{name:"U+10A0\u201310FF",description:"Georgian."},{name:"U+1200\u2013137F",description:"Ethiopic."},{name:"U+1380\u2013139F",description:"Ethiopic Supplement. Extra Syllables for Sebatbeit, and Tonal marks"},{name:"U+2D80\u20132DDF",description:"Ethiopic Extended. Extra Syllables for Me'en, Blin, and Sebatbeit."},{name:"U+AB00\u2013AB2F",description:"Ethiopic Extended-A. Extra characters for Gamo-Gofa-Dawro, Basketo, and Gumuz."},{name:"U+1780\u201317FF",description:"Khmer."},{name:"U+1800\u201318AF",description:"Mongolian."},{name:"U+1B80\u20131BBF",description:"Sundanese."},{name:"U+1CC0\u20131CCF",description:"Sundanese Supplement. Punctuation."},{name:"U+4E00\u20139FD5",description:"CJK (Chinese, Japanese, Korean) Unified Ideographs. Most common ideographs for modern Chinese and Japanese."},{name:"U+3400\u20134DB5",description:"CJK Unified Ideographs Extension A. Rare ideographs."},{name:"U+2F00\u20132FDF",description:"Kangxi Radicals."},{name:"U+2E80\u20132EFF",description:"CJK Radicals Supplement. Alternative forms of Kangxi Radicals."},{name:"U+1100\u201311FF",description:"Hangul Jamo."},{name:"U+AC00\u2013D7AF",description:"Hangul Syllables."},{name:"U+3040\u2013309F",description:"Hiragana."},{name:"U+30A0\u201330FF",description:"Katakana."},{name:"U+A5, U+4E00-9FFF, U+30??, U+FF00-FF9F",description:"Japanese Kanji, Hiragana and Katakana characters plus Yen/Yuan symbol."},{name:"U+A4D0\u2013A4FF",description:"Lisu."},{name:"U+A000\u2013A48F",description:"Yi Syllables."},{name:"U+A490\u2013A4CF",description:"Yi Radicals."},{name:"U+2000-206F",description:"General Punctuation."},{name:"U+3000\u2013303F",description:"CJK Symbols and Punctuation."},{name:"U+2070\u2013209F",description:"Superscripts and Subscripts."},{name:"U+20A0\u201320CF",description:"Currency Symbols."},{name:"U+2100\u2013214F",description:"Letterlike Symbols."},{name:"U+2150\u2013218F",description:"Number Forms."},{name:"U+2190\u201321FF",description:"Arrows."},{name:"U+2200\u201322FF",description:"Mathematical Operators."},{name:"U+2300\u201323FF",description:"Miscellaneous Technical."},{name:"U+E000-F8FF",description:"Private Use Area."},{name:"U+FB00\u2013FB4F",description:"Alphabetic Presentation Forms. Ligatures for latin, Armenian, and Hebrew."},{name:"U+FB50\u2013FDFF",description:"Arabic Presentation Forms-A. Contextual forms / ligatures for Persian, Urdu, Sindhi, Central Asian languages, etc, Arabic pedagogical symbols, word ligatures."},{name:"U+1F600\u20131F64F",description:"Emoji: Emoticons."},{name:"U+2600\u201326FF",description:"Emoji: Miscellaneous Symbols."},{name:"U+1F300\u20131F5FF",description:"Emoji: Miscellaneous Symbols and Pictographs."},{name:"U+1F900\u20131F9FF",description:"Emoji: Supplemental Symbols and Pictographs."},{name:"U+1F680\u20131F6FF",description:"Emoji: Transport and Map Symbols."}],syntax:"<unicode-range>#",relevance:58,description:"@font-face descriptor. Defines the set of Unicode codepoints that may be supported by the font face for which it is declared.",restrictions:["unicode-range"]},{name:"user-select",values:[{name:"all",description:"The content of the element must be selected atomically"},{name:"auto"},{name:"contain",description:"UAs must not allow a selection which is started in this element to be extended outside of this element."},{name:"none",description:"The UA must not allow selections to be started in this element."},{name:"text",description:"The element imposes no constraint on the selection."}],syntax:"auto | text | none | contain | all",relevance:75,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/user-select"}],description:"Controls the appearance of selection.",restrictions:["enum"]},{name:"vertical-align",values:[{name:"auto",description:"Align the dominant baseline of the parent box with the equivalent, or heuristically reconstructed, baseline of the element inline box."},{name:"baseline",description:"Align the 'alphabetic' baseline of the element with the 'alphabetic' baseline of the parent element."},{name:"bottom",description:"Align the after edge of the extended inline box with the after-edge of the line box."},{name:"middle",description:"Align the 'middle' baseline of the inline element with the middle baseline of the parent."},{name:"sub",description:"Lower the baseline of the box to the proper position for subscripts of the parent's box. (This value has no effect on the font size of the element's text.)"},{name:"super",description:"Raise the baseline of the box to the proper position for superscripts of the parent's box. (This value has no effect on the font size of the element's text.)"},{name:"text-bottom",description:"Align the bottom of the box with the after-edge of the parent element's font."},{name:"text-top",description:"Align the top of the box with the before-edge of the parent element's font."},{name:"top",description:"Align the before edge of the extended inline box with the before-edge of the line box."},{name:"-webkit-baseline-middle"}],syntax:"baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/vertical-align"}],description:"Affects the vertical positioning of the inline boxes generated by an inline-level element inside a line box.",restrictions:["percentage","length"]},{name:"visibility",values:[{name:"collapse",description:"Table-specific. If used on elements other than rows, row groups, columns, or column groups, 'collapse' has the same meaning as 'hidden'."},{name:"hidden",description:"The generated box is invisible (fully transparent, nothing is drawn), but still affects layout."},{name:"visible",description:"The generated box is visible."}],syntax:"visible | hidden | collapse",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/visibility"}],description:"Specifies whether the boxes generated by an element are rendered. Invisible boxes still affect layout (set the \u2018display\u2019 property to \u2018none\u2019 to suppress box generation altogether).",restrictions:["enum"]},{name:"-webkit-animation",browsers:["C","S5"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"infinite",description:"Causes the animation to repeat forever."},{name:"none",description:"No animation is performed"},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Shorthand property combines six of the animation properties into a single property.",restrictions:["time","enum","timing-function","identifier","number"]},{name:"-webkit-animation-delay",browsers:["C","S5"],relevance:50,description:"Defines when the animation will start.",restrictions:["time"]},{name:"-webkit-animation-direction",browsers:["C","S5"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Defines whether or not the animation should play in reverse on alternate cycles.",restrictions:["enum"]},{name:"-webkit-animation-duration",browsers:["C","S5"],relevance:50,description:"Defines the length of time that an animation takes to complete one cycle.",restrictions:["time"]},{name:"-webkit-animation-fill-mode",browsers:["C","S5"],values:[{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"none",description:"There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes."}],relevance:50,description:"Defines what values are applied by the animation outside the time it is executing.",restrictions:["enum"]},{name:"-webkit-animation-iteration-count",browsers:["C","S5"],values:[{name:"infinite",description:"Causes the animation to repeat forever."}],relevance:50,description:"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.",restrictions:["number","enum"]},{name:"-webkit-animation-name",browsers:["C","S5"],values:[{name:"none",description:"No animation is performed"}],relevance:50,description:"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.",restrictions:["identifier","enum"]},{name:"-webkit-animation-play-state",browsers:["C","S5"],values:[{name:"paused",description:"A running animation will be paused."},{name:"running",description:"Resume playback of a paused animation."}],relevance:50,description:"Defines whether the animation is running or paused.",restrictions:["enum"]},{name:"-webkit-animation-timing-function",browsers:["C","S5"],relevance:50,description:"Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.",restrictions:["timing-function"]},{name:"-webkit-appearance",browsers:["C","S3"],values:[{name:"button"},{name:"button-bevel"},{name:"caps-lock-indicator"},{name:"caret"},{name:"checkbox"},{name:"default-button"},{name:"listbox"},{name:"listitem"},{name:"media-fullscreen-button"},{name:"media-mute-button"},{name:"media-play-button"},{name:"media-seek-back-button"},{name:"media-seek-forward-button"},{name:"media-slider"},{name:"media-sliderthumb"},{name:"menulist"},{name:"menulist-button"},{name:"menulist-text"},{name:"menulist-textfield"},{name:"none"},{name:"push-button"},{name:"radio"},{name:"scrollbarbutton-down"},{name:"scrollbarbutton-left"},{name:"scrollbarbutton-right"},{name:"scrollbarbutton-up"},{name:"scrollbargripper-horizontal"},{name:"scrollbargripper-vertical"},{name:"scrollbarthumb-horizontal"},{name:"scrollbarthumb-vertical"},{name:"scrollbartrack-horizontal"},{name:"scrollbartrack-vertical"},{name:"searchfield"},{name:"searchfield-cancel-button"},{name:"searchfield-decoration"},{name:"searchfield-results-button"},{name:"searchfield-results-decoration"},{name:"slider-horizontal"},{name:"sliderthumb-horizontal"},{name:"sliderthumb-vertical"},{name:"slider-vertical"},{name:"square-button"},{name:"textarea"},{name:"textfield"}],status:"nonstandard",syntax:"none | button | button-bevel | caret | checkbox | default-button | inner-spin-button | listbox | listitem | media-controls-background | media-controls-fullscreen-background | media-current-time-display | media-enter-fullscreen-button | media-exit-fullscreen-button | media-fullscreen-button | media-mute-button | media-overlay-play-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | media-time-remaining-display | media-toggle-closed-captions-button | media-volume-slider | media-volume-slider-container | media-volume-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | meter | progress-bar | progress-bar-value | push-button | radio | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield | -apple-pay-button",relevance:0,description:"Changes the appearance of buttons and other controls to resemble native controls.",restrictions:["enum"]},{name:"-webkit-backdrop-filter",browsers:["S9"],values:[{name:"none",description:"No filter effects are applied."},{name:"blur()",description:"Applies a Gaussian blur to the input image."},{name:"brightness()",description:"Applies a linear multiplier to input image, making it appear more or less bright."},{name:"contrast()",description:"Adjusts the contrast of the input."},{name:"drop-shadow()",description:"Applies a drop shadow effect to the input image."},{name:"grayscale()",description:"Converts the input image to grayscale."},{name:"hue-rotate()",description:"Applies a hue rotation on the input image. "},{name:"invert()",description:"Inverts the samples in the input image."},{name:"opacity()",description:"Applies transparency to the samples in the input image."},{name:"saturate()",description:"Saturates the input image."},{name:"sepia()",description:"Converts the input image to sepia."},{name:"url()",description:"A filter reference to a <filter> element."}],relevance:50,description:"Applies a filter effect where the first filter in the list takes the element's background image as the input image.",restrictions:["enum","url"]},{name:"-webkit-backface-visibility",browsers:["C","S5"],values:[{name:"hidden"},{name:"visible"}],relevance:50,description:"Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.",restrictions:["enum"]},{name:"-webkit-background-clip",browsers:["C","S3"],relevance:50,description:"Determines the background painting area.",restrictions:["box"]},{name:"-webkit-background-composite",browsers:["C","S3"],values:[{name:"border"},{name:"padding"}],relevance:50,restrictions:["enum"]},{name:"-webkit-background-origin",browsers:["C","S3"],relevance:50,description:"For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).",restrictions:["box"]},{name:"-webkit-border-image",browsers:["C","S5"],values:[{name:"auto",description:"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead."},{name:"fill",description:"Causes the middle part of the border-image to be preserved."},{name:"none"},{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."},{name:"url()"}],relevance:50,description:"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.",restrictions:["length","percentage","number","url","enum"]},{name:"-webkit-box-align",browsers:["C","S3"],values:[{name:"baseline",description:"If this box orientation is inline-axis or horizontal, all children are placed with their baselines aligned, and extra space placed before or after as necessary. For block flows, the baseline of the first non-empty line box located within the element is used. For tables, the baseline of the first cell is used."},{name:"center",description:"Any extra space is divided evenly, with half placed above the child and the other half placed after the child."},{name:"end",description:"For normal direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element. For reverse direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element."},{name:"start",description:"For normal direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element. For reverse direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element."},{name:"stretch",description:"The height of each child is adjusted to that of the containing block."}],relevance:50,description:"Specifies the alignment of nested elements within an outer flexible box element.",restrictions:["enum"]},{name:"-webkit-box-direction",browsers:["C","S3"],values:[{name:"normal",description:"A box with a computed value of horizontal for box-orient displays its children from left to right. A box with a computed value of vertical displays its children from top to bottom."},{name:"reverse",description:"A box with a computed value of horizontal for box-orient displays its children from right to left. A box with a computed value of vertical displays its children from bottom to top."}],relevance:50,description:"In webkit applications, -webkit-box-direction specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).",restrictions:["enum"]},{name:"-webkit-box-flex",browsers:["C","S3"],relevance:50,description:"Specifies an element's flexibility.",restrictions:["number"]},{name:"-webkit-box-flex-group",browsers:["C","S3"],relevance:50,description:"Flexible elements can be assigned to flex groups using the 'box-flex-group' property.",restrictions:["integer"]},{name:"-webkit-box-ordinal-group",browsers:["C","S3"],relevance:50,description:"Indicates the ordinal group the element belongs to. Elements with a lower ordinal group are displayed before those with a higher ordinal group.",restrictions:["integer"]},{name:"-webkit-box-orient",browsers:["C","S3"],values:[{name:"block-axis",description:"Elements are oriented along the box's axis."},{name:"horizontal",description:"The box displays its children from left to right in a horizontal line."},{name:"inline-axis",description:"Elements are oriented vertically."},{name:"vertical",description:"The box displays its children from stacked from top to bottom vertically."}],relevance:50,description:"In webkit applications, -webkit-box-orient specifies whether a box lays out its contents horizontally or vertically.",restrictions:["enum"]},{name:"-webkit-box-pack",browsers:["C","S3"],values:[{name:"center",description:"The extra space is divided evenly, with half placed before the first child and the other half placed after the last child."},{name:"end",description:"For normal direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child. For reverse direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child."},{name:"justify",description:"The space is divided evenly in-between each child, with none of the extra space placed before the first child or after the last child. If there is only one child, treat the pack value as if it were start."},{name:"start",description:"For normal direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child. For reverse direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child."}],relevance:50,description:"Specifies alignment of child elements within the current element in the direction of orientation.",restrictions:["enum"]},{name:"-webkit-box-reflect",browsers:["E79","S4","C4","O15"],values:[{name:"above",description:"The reflection appears above the border box."},{name:"below",description:"The reflection appears below the border box."},{name:"left",description:"The reflection appears to the left of the border box."},{name:"right",description:"The reflection appears to the right of the border box."}],status:"nonstandard",syntax:"[ above | below | right | left ]? <length>? <image>?",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-box-reflect"}],description:"Defines a reflection of a border box."},{name:"-webkit-box-sizing",browsers:["C","S3"],values:[{name:"border-box",description:"The specified width and height (and respective min/max properties) on this element determine the border box of the element."},{name:"content-box",description:"Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element."}],relevance:50,description:"Box Model addition in CSS3.",restrictions:["enum"]},{name:"-webkit-break-after",browsers:["S7"],values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the generated box."},{name:"avoid",description:"Avoid a page/column break before/after the generated box."},{name:"avoid-column",description:"Avoid a column break before/after the generated box."},{name:"avoid-page",description:"Avoid a page break before/after the generated box."},{name:"avoid-region"},{name:"column",description:"Always force a column break before/after the generated box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the generated box."},{name:"region"},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],relevance:50,description:"Describes the page/column break behavior before the generated box.",restrictions:["enum"]},{name:"-webkit-break-before",browsers:["S7"],values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the generated box."},{name:"avoid",description:"Avoid a page/column break before/after the generated box."},{name:"avoid-column",description:"Avoid a column break before/after the generated box."},{name:"avoid-page",description:"Avoid a page break before/after the generated box."},{name:"avoid-region"},{name:"column",description:"Always force a column break before/after the generated box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the generated box."},{name:"region"},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],relevance:50,description:"Describes the page/column break behavior before the generated box.",restrictions:["enum"]},{name:"-webkit-break-inside",browsers:["S7"],values:[{name:"auto",description:"Neither force nor forbid a page/column break inside the generated box."},{name:"avoid",description:"Avoid a page/column break inside the generated box."},{name:"avoid-column",description:"Avoid a column break inside the generated box."},{name:"avoid-page",description:"Avoid a page break inside the generated box."},{name:"avoid-region"}],relevance:50,description:"Describes the page/column break behavior inside the generated box.",restrictions:["enum"]},{name:"-webkit-column-break-after",browsers:["C","S3"],values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the generated box."},{name:"avoid",description:"Avoid a page/column break before/after the generated box."},{name:"avoid-column",description:"Avoid a column break before/after the generated box."},{name:"avoid-page",description:"Avoid a page break before/after the generated box."},{name:"avoid-region"},{name:"column",description:"Always force a column break before/after the generated box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the generated box."},{name:"region"},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],relevance:50,description:"Describes the page/column break behavior before the generated box.",restrictions:["enum"]},{name:"-webkit-column-break-before",browsers:["C","S3"],values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the generated box."},{name:"avoid",description:"Avoid a page/column break before/after the generated box."},{name:"avoid-column",description:"Avoid a column break before/after the generated box."},{name:"avoid-page",description:"Avoid a page break before/after the generated box."},{name:"avoid-region"},{name:"column",description:"Always force a column break before/after the generated box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the generated box."},{name:"region"},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],relevance:50,description:"Describes the page/column break behavior before the generated box.",restrictions:["enum"]},{name:"-webkit-column-break-inside",browsers:["C","S3"],values:[{name:"auto",description:"Neither force nor forbid a page/column break inside the generated box."},{name:"avoid",description:"Avoid a page/column break inside the generated box."},{name:"avoid-column",description:"Avoid a column break inside the generated box."},{name:"avoid-page",description:"Avoid a page break inside the generated box."},{name:"avoid-region"}],relevance:50,description:"Describes the page/column break behavior inside the generated box.",restrictions:["enum"]},{name:"-webkit-column-count",browsers:["C","S3"],values:[{name:"auto",description:"Determines the number of columns by the 'column-width' property and the element width."}],relevance:50,description:"Describes the optimal number of columns into which the content of the element will be flowed.",restrictions:["integer"]},{name:"-webkit-column-gap",browsers:["C","S3"],values:[{name:"normal",description:"User agent specific and typically equivalent to 1em."}],relevance:50,description:"Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.",restrictions:["length"]},{name:"-webkit-column-rule",browsers:["C","S3"],relevance:50,description:"This property is a shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.",restrictions:["length","line-width","line-style","color"]},{name:"-webkit-column-rule-color",browsers:["C","S3"],relevance:50,description:"Sets the color of the column rule",restrictions:["color"]},{name:"-webkit-column-rule-style",browsers:["C","S3"],relevance:50,description:"Sets the style of the rule between columns of an element.",restrictions:["line-style"]},{name:"-webkit-column-rule-width",browsers:["C","S3"],relevance:50,description:"Sets the width of the rule between columns. Negative values are not allowed.",restrictions:["length","line-width"]},{name:"-webkit-columns",browsers:["C","S3"],values:[{name:"auto",description:"The width depends on the values of other properties."}],relevance:50,description:"A shorthand property which sets both 'column-width' and 'column-count'.",restrictions:["length","integer"]},{name:"-webkit-column-span",browsers:["C","S3"],values:[{name:"all",description:"The element spans across all columns. Content in the normal flow that appears before the element is automatically balanced across all columns before the element appear."},{name:"none",description:"The element does not span multiple columns."}],relevance:50,description:"Describes the page/column break behavior after the generated box.",restrictions:["enum"]},{name:"-webkit-column-width",browsers:["C","S3"],values:[{name:"auto",description:"The width depends on the values of other properties."}],relevance:50,description:"This property describes the width of columns in multicol elements.",restrictions:["length"]},{name:"-webkit-filter",browsers:["C18","O15","S6"],values:[{name:"none",description:"No filter effects are applied."},{name:"blur()",description:"Applies a Gaussian blur to the input image."},{name:"brightness()",description:"Applies a linear multiplier to input image, making it appear more or less bright."},{name:"contrast()",description:"Adjusts the contrast of the input."},{name:"drop-shadow()",description:"Applies a drop shadow effect to the input image."},{name:"grayscale()",description:"Converts the input image to grayscale."},{name:"hue-rotate()",description:"Applies a hue rotation on the input image. "},{name:"invert()",description:"Inverts the samples in the input image."},{name:"opacity()",description:"Applies transparency to the samples in the input image."},{name:"saturate()",description:"Saturates the input image."},{name:"sepia()",description:"Converts the input image to sepia."},{name:"url()",description:"A filter reference to a <filter> element."}],relevance:50,description:"Processes an element\u2019s rendering before it is displayed in the document, by applying one or more filter effects.",restrictions:["enum","url"]},{name:"-webkit-flow-from",browsers:["S6.1"],values:[{name:"none",description:"The block container is not a CSS Region."}],relevance:50,description:"Makes a block container a region and associates it with a named flow.",restrictions:["identifier"]},{name:"-webkit-flow-into",browsers:["S6.1"],values:[{name:"none",description:"The element is not moved to a named flow and normal CSS processing takes place."}],relevance:50,description:"Places an element or its contents into a named flow.",restrictions:["identifier"]},{name:"-webkit-font-feature-settings",browsers:["C16"],values:[{name:'"c2cs"'},{name:'"dlig"'},{name:'"kern"'},{name:'"liga"'},{name:'"lnum"'},{name:'"onum"'},{name:'"smcp"'},{name:'"swsh"'},{name:'"tnum"'},{name:"normal",description:"No change in glyph substitution or positioning occurs."},{name:"off"},{name:"on"}],relevance:50,description:"This property provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.",restrictions:["string","integer"]},{name:"-webkit-hyphens",browsers:["S5.1"],values:[{name:"auto",description:"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word."},{name:"manual",description:"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities"},{name:"none",description:"Words are not broken at line breaks, even if characters inside the word suggest line break points."}],relevance:50,description:"Controls whether hyphenation is allowed to create more break opportunities within a line of text.",restrictions:["enum"]},{name:"-webkit-line-break",browsers:["C","S3"],values:[{name:"after-white-space"},{name:"normal"}],relevance:50,description:"Specifies line-breaking rules for CJK (Chinese, Japanese, and Korean) text."},{name:"-webkit-margin-bottom-collapse",browsers:["C","S3"],values:[{name:"collapse"},{name:"discard"},{name:"separate"}],relevance:50,restrictions:["enum"]},{name:"-webkit-margin-collapse",browsers:["C","S3"],values:[{name:"collapse"},{name:"discard"},{name:"separate"}],relevance:50,restrictions:["enum"]},{name:"-webkit-margin-start",browsers:["C","S3"],values:[{name:"auto"}],relevance:50,restrictions:["percentage","length"]},{name:"-webkit-margin-top-collapse",browsers:["C","S3"],values:[{name:"collapse"},{name:"discard"},{name:"separate"}],relevance:50,restrictions:["enum"]},{name:"-webkit-mask-clip",browsers:["C","O15","S4"],status:"nonstandard",syntax:"[ <box> | border | padding | content | text ]#",relevance:0,description:"Determines the mask painting area, which determines the area that is affected by the mask.",restrictions:["box"]},{name:"-webkit-mask-image",browsers:["C","O15","S4"],values:[{name:"none",description:"Counts as a transparent black image layer."},{name:"url()",description:"Reference to a <mask element or to a CSS image."}],status:"nonstandard",syntax:"<mask-reference>#",relevance:0,description:"Sets the mask layer image of an element.",restrictions:["url","image","enum"]},{name:"-webkit-mask-origin",browsers:["C","O15","S4"],status:"nonstandard",syntax:"[ <box> | border | padding | content ]#",relevance:0,description:"Specifies the mask positioning area.",restrictions:["box"]},{name:"-webkit-mask-repeat",browsers:["C","O15","S4"],status:"nonstandard",syntax:"<repeat-style>#",relevance:0,description:"Specifies how mask layer images are tiled after they have been sized and positioned.",restrictions:["repeat"]},{name:"-webkit-mask-size",browsers:["C","O15","S4"],values:[{name:"auto",description:"Resolved by using the image\u2019s intrinsic ratio and the size of the other dimension, or failing that, using the image\u2019s intrinsic size, or failing that, treating it as 100%."},{name:"contain",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area."},{name:"cover",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area."}],status:"nonstandard",syntax:"<bg-size>#",relevance:0,description:"Specifies the size of the mask layer images.",restrictions:["length","percentage","enum"]},{name:"-webkit-nbsp-mode",browsers:["C","S3"],values:[{name:"normal"},{name:"space"}],relevance:50,description:"Defines the behavior of nonbreaking spaces within text."},{name:"-webkit-overflow-scrolling",browsers:["C","S5"],values:[{name:"auto"},{name:"touch"}],status:"nonstandard",syntax:"auto | touch",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-overflow-scrolling"}],description:"Specifies whether to use native-style scrolling in an overflow:scroll element."},{name:"-webkit-padding-start",browsers:["C","S3"],relevance:50,restrictions:["percentage","length"]},{name:"-webkit-perspective",browsers:["C","S4"],values:[{name:"none",description:"No perspective transform is applied."}],relevance:50,description:"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.",restrictions:["length"]},{name:"-webkit-perspective-origin",browsers:["C","S4"],relevance:50,description:"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"-webkit-region-fragment",browsers:["S7"],values:[{name:"auto",description:"Content flows as it would in a regular content box."},{name:"break",description:"If the content fits within the CSS Region, then this property has no effect."}],relevance:50,description:"The 'region-fragment' property controls the behavior of the last region associated with a named flow.",restrictions:["enum"]},{name:"-webkit-tap-highlight-color",browsers:["E12","C16","O\u226415"],status:"nonstandard",syntax:"<color>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-tap-highlight-color"}],restrictions:["color"]},{name:"-webkit-text-fill-color",browsers:["E12","FF49","S3","C1","O15"],status:"nonstandard",syntax:"<color>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-fill-color"}],restrictions:["color"]},{name:"-webkit-text-size-adjust",browsers:["E","C","S3"],values:[{name:"auto",description:"Renderers must use the default size adjustment when displaying on a small device."},{name:"none",description:"Renderers must not do size adjustment when displaying on a small device."}],relevance:50,description:"Specifies a size adjustment for displaying text content in mobile browsers.",restrictions:["percentage"]},{name:"-webkit-text-stroke",browsers:["E15","FF49","S3","C4","O15"],status:"nonstandard",syntax:"<length> || <color>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke"}],restrictions:["length","line-width","color","percentage"]},{name:"-webkit-text-stroke-color",browsers:["E15","FF49","S3","C1","O15"],status:"nonstandard",syntax:"<color>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-color"}],restrictions:["color"]},{name:"-webkit-text-stroke-width",browsers:["E15","FF49","S3","C1","O15"],status:"nonstandard",syntax:"<length>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-width"}],restrictions:["length","line-width","percentage"]},{name:"-webkit-touch-callout",browsers:["S3"],values:[{name:"none"}],status:"nonstandard",syntax:"default | none",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-touch-callout"}],restrictions:["enum"]},{name:"-webkit-transform",browsers:["C","O12","S3.1"],values:[{name:"matrix()",description:"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]"},{name:"matrix3d()",description:"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order."},{name:"none"},{name:"perspective()",description:"Specifies a perspective projection matrix."},{name:"rotate()",description:"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property."},{name:"rotate3d()",description:"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters."},{name:"rotateX('angle')",description:"Specifies a clockwise rotation by the given angle about the X axis."},{name:"rotateY('angle')",description:"Specifies a clockwise rotation by the given angle about the Y axis."},{name:"rotateZ('angle')",description:"Specifies a clockwise rotation by the given angle about the Z axis."},{name:"scale()",description:"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first."},{name:"scale3d()",description:"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters."},{name:"scaleX()",description:"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter."},{name:"scaleY()",description:"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter."},{name:"scaleZ()",description:"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter."},{name:"skew()",description:"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)."},{name:"skewX()",description:"Specifies a skew transformation along the X axis by the given angle."},{name:"skewY()",description:"Specifies a skew transformation along the Y axis by the given angle."},{name:"translate()",description:"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter."},{name:"translate3d()",description:"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively."},{name:"translateX()",description:"Specifies a translation by the given amount in the X direction."},{name:"translateY()",description:"Specifies a translation by the given amount in the Y direction."},{name:"translateZ()",description:"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0."}],relevance:50,description:"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.",restrictions:["enum"]},{name:"-webkit-transform-origin",browsers:["C","O15","S3.1"],relevance:50,description:"Establishes the origin of transformation for an element.",restrictions:["position","length","percentage"]},{name:"-webkit-transform-origin-x",browsers:["C","S3.1"],relevance:50,description:"The x coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-webkit-transform-origin-y",browsers:["C","S3.1"],relevance:50,description:"The y coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-webkit-transform-origin-z",browsers:["C","S4"],relevance:50,description:"The z coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-webkit-transform-style",browsers:["C","S4"],values:[{name:"flat",description:"All children of this element are rendered flattened into the 2D plane of the element."}],relevance:50,description:"Defines how nested elements are rendered in 3D space.",restrictions:["enum"]},{name:"-webkit-transition",browsers:["C","O12","S5"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Shorthand property combines four of the transition properties into a single property.",restrictions:["time","property","timing-function","enum"]},{name:"-webkit-transition-delay",browsers:["C","O12","S5"],relevance:50,description:"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.",restrictions:["time"]},{name:"-webkit-transition-duration",browsers:["C","O12","S5"],relevance:50,description:"Specifies how long the transition from the old value to the new value should take.",restrictions:["time"]},{name:"-webkit-transition-property",browsers:["C","O12","S5"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Specifies the name of the CSS property to which the transition is applied.",restrictions:["property"]},{name:"-webkit-transition-timing-function",browsers:["C","O12","S5"],relevance:50,description:"Describes how the intermediate values used during a transition will be calculated.",restrictions:["timing-function"]},{name:"-webkit-user-drag",browsers:["S3"],values:[{name:"auto"},{name:"element"},{name:"none"}],relevance:50,restrictions:["enum"]},{name:"-webkit-user-modify",browsers:["C","S3"],values:[{name:"read-only"},{name:"read-write"},{name:"read-write-plaintext-only"}],status:"nonstandard",syntax:"read-only | read-write | read-write-plaintext-only",relevance:0,description:"Determines whether a user can edit the content of an element.",restrictions:["enum"]},{name:"-webkit-user-select",browsers:["C","S3"],values:[{name:"auto"},{name:"none"},{name:"text"}],relevance:50,description:"Controls the appearance of selection.",restrictions:["enum"]},{name:"white-space",values:[{name:"normal",description:"Sets 'white-space-collapsing' to 'collapse' and 'text-wrap' to 'normal'."},{name:"nowrap",description:"Sets 'white-space-collapsing' to 'collapse' and 'text-wrap' to 'none'."},{name:"pre",description:"Sets 'white-space-collapsing' to 'preserve' and 'text-wrap' to 'none'."},{name:"pre-line",description:"Sets 'white-space-collapsing' to 'preserve-breaks' and 'text-wrap' to 'normal'."},{name:"pre-wrap",description:"Sets 'white-space-collapsing' to 'preserve' and 'text-wrap' to 'normal'."}],syntax:"normal | pre | nowrap | pre-wrap | pre-line | break-spaces",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/white-space"}],description:"Shorthand property for the 'white-space-collapsing' and 'text-wrap' properties.",restrictions:["enum"]},{name:"widows",browsers:["E12","S1.3","C25","IE8","O9.2"],syntax:"<integer>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/widows"}],description:"Specifies the minimum number of line boxes of a block container that must be left in a fragment after a break.",restrictions:["integer"]},{name:"width",values:[{name:"auto",description:"The width depends on the values of other properties."},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>{1,2}",relevance:96,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/width"}],description:"Specifies the width of the content area, padding area or border area (depending on 'box-sizing') of certain boxes.",restrictions:["length","percentage"]},{name:"will-change",browsers:["E79","FF36","S9.1","C36","O24"],values:[{name:"auto",description:"Expresses no particular intent."},{name:"contents",description:"Indicates that the author expects to animate or change something about the element\u2019s contents in the near future."},{name:"scroll-position",description:"Indicates that the author expects to animate or change the scroll position of the element in the near future."}],syntax:"auto | <animateable-feature>#",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/will-change"}],description:"Provides a rendering hint to the user agent, stating what kinds of changes the author expects to perform on the element.",restrictions:["enum","identifier"]},{name:"word-break",values:[{name:"break-all",description:"Lines may break between any two grapheme clusters for non-CJK scripts."},{name:"keep-all",description:"Block characters can no longer create implied break points."},{name:"normal",description:"Breaks non-CJK scripts according to their own rules."}],syntax:"normal | break-all | keep-all | break-word",relevance:74,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/word-break"}],description:"Specifies line break opportunities for non-CJK scripts.",restrictions:["enum"]},{name:"word-spacing",values:[{name:"normal",description:"No additional spacing is applied. Computes to zero."}],syntax:"normal | <length-percentage>",relevance:58,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/word-spacing"}],description:"Specifies additional spacing between \u201cwords\u201d.",restrictions:["length","percentage"]},{name:"word-wrap",values:[{name:"break-word",description:"An otherwise unbreakable sequence of characters may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line."},{name:"normal",description:"Lines may break only at allowed break points."}],syntax:"normal | break-word",relevance:78,description:"Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit.",restrictions:["enum"]},{name:"writing-mode",values:[{name:"horizontal-tb",description:"Top-to-bottom block flow direction. The writing mode is horizontal."},{name:"sideways-lr",description:"Left-to-right block flow direction. The writing mode is vertical, while the typographic mode is horizontal."},{name:"sideways-rl",description:"Right-to-left block flow direction. The writing mode is vertical, while the typographic mode is horizontal."},{name:"vertical-lr",description:"Left-to-right block flow direction. The writing mode is vertical."},{name:"vertical-rl",description:"Right-to-left block flow direction. The writing mode is vertical."}],syntax:"horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/writing-mode"}],description:"This is a shorthand property for both 'direction' and 'block-progression'.",restrictions:["enum"]},{name:"z-index",values:[{name:"auto",description:"The stack level of the generated box in the current stacking context is 0. The box does not establish a new stacking context unless it is the root element."}],syntax:"auto | <integer>",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/z-index"}],description:"For a positioned box, the 'z-index' property specifies the stack level of the box in the current stacking context and whether the box establishes a local stacking context.",restrictions:["integer"]},{name:"zoom",browsers:["E12","S3.1","C1","IE5.5","O15"],values:[{name:"normal"}],syntax:"auto | <number> | <percentage>",relevance:70,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/zoom"}],description:"Non-standard. Specifies the magnification scale of the object. See 'transform: scale()' for a standards-based alternative.",restrictions:["enum","integer","number","percentage"]},{name:"-ms-ime-align",status:"nonstandard",syntax:"auto | after",relevance:0,description:"Aligns the Input Method Editor (IME) candidate window box relative to the element on which the IME composition is active."},{name:"-moz-binding",status:"nonstandard",syntax:"<url> | none",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-binding"}],description:"The -moz-binding CSS property is used by Mozilla-based applications to attach an XBL binding to a DOM element."},{name:"-moz-context-properties",status:"nonstandard",syntax:"none | [ fill | fill-opacity | stroke | stroke-opacity ]#",relevance:0,browsers:["FF55"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-context-properties"}],description:"If you reference an SVG image in a webpage (such as with the <img> element or as a background image), the SVG image can coordinate with the embedding element (its context) to have the image adopt property values set on the embedding element. To do this the embedding element needs to list the properties that are to be made available to the image by listing them as values of the -moz-context-properties property, and the image needs to opt in to using those properties by using values such as the context-fill value.\n\nThis feature is available since Firefox 55, but is only currently supported with SVG images loaded via chrome:// or resource:// URLs. To experiment with the feature in SVG on the Web it is necessary to set the svg.context-properties.content.enabled pref to true."},{name:"-moz-float-edge",status:"nonstandard",syntax:"border-box | content-box | margin-box | padding-box",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-float-edge"}],description:"The non-standard -moz-float-edge CSS property specifies whether the height and width properties of the element include the margin, border, or padding thickness."},{name:"-moz-force-broken-image-icon",status:"nonstandard",syntax:"<integer [0,1]>",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-force-broken-image-icon"}],description:"The -moz-force-broken-image-icon extended CSS property can be used to force the broken image icon to be shown even when a broken image has an alt attribute."},{name:"-moz-image-region",status:"nonstandard",syntax:"<shape> | auto",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-image-region"}],description:"For certain XUL elements and pseudo-elements that use an image from the list-style-image property, this property specifies a region of the image that is used in place of the whole image. This allows elements to use different pieces of the same image to improve performance."},{name:"-moz-orient",status:"nonstandard",syntax:"inline | block | horizontal | vertical",relevance:0,browsers:["FF6"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-orient"}],description:"The -moz-orient CSS property specifies the orientation of the element to which it's applied."},{name:"-moz-outline-radius",status:"nonstandard",syntax:"<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius"}],description:"In Mozilla applications like Firefox, the -moz-outline-radius CSS property can be used to give an element's outline rounded corners."},{name:"-moz-outline-radius-bottomleft",status:"nonstandard",syntax:"<outline-radius>",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomleft"}],description:"In Mozilla applications, the -moz-outline-radius-bottomleft CSS property can be used to round the bottom-left corner of an element's outline."},{name:"-moz-outline-radius-bottomright",status:"nonstandard",syntax:"<outline-radius>",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomright"}],description:"In Mozilla applications, the -moz-outline-radius-bottomright CSS property can be used to round the bottom-right corner of an element's outline."},{name:"-moz-outline-radius-topleft",status:"nonstandard",syntax:"<outline-radius>",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topleft"}],description:"In Mozilla applications, the -moz-outline-radius-topleft CSS property can be used to round the top-left corner of an element's outline."},{name:"-moz-outline-radius-topright",status:"nonstandard",syntax:"<outline-radius>",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topright"}],description:"In Mozilla applications, the -moz-outline-radius-topright CSS property can be used to round the top-right corner of an element's outline."},{name:"-moz-stack-sizing",status:"nonstandard",syntax:"ignore | stretch-to-fit",relevance:0,description:"-moz-stack-sizing is an extended CSS property. Normally, a stack will change its size so that all of its child elements are completely visible. For example, moving a child of the stack far to the right will widen the stack so the child remains visible."},{name:"-moz-text-blink",status:"nonstandard",syntax:"none | blink",relevance:0,description:"The -moz-text-blink non-standard Mozilla CSS extension specifies the blink mode."},{name:"-moz-user-input",status:"nonstandard",syntax:"auto | none | enabled | disabled",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-user-input"}],description:"In Mozilla applications, -moz-user-input determines if an element will accept user input."},{name:"-moz-user-modify",status:"nonstandard",syntax:"read-only | read-write | write-only",relevance:0,description:"The -moz-user-modify property has no effect. It was originally planned to determine whether or not the content of an element can be edited by a user."},{name:"-moz-window-dragging",status:"nonstandard",syntax:"drag | no-drag",relevance:0,description:"The -moz-window-dragging CSS property specifies whether a window is draggable or not. It only works in Chrome code, and only on Mac OS X."},{name:"-moz-window-shadow",status:"nonstandard",syntax:"default | menu | tooltip | sheet | none",relevance:0,description:"The -moz-window-shadow CSS property specifies whether a window will have a shadow. It only works on Mac OS X."},{name:"-webkit-border-before",status:"nonstandard",syntax:"<'border-width'> || <'border-style'> || <color>",relevance:0,browsers:["E79","S5.1","C8","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-border-before"}],description:"The -webkit-border-before CSS property is a shorthand property for setting the individual logical block start border property values in a single place in the style sheet."},{name:"-webkit-border-before-color",status:"nonstandard",syntax:"<color>",relevance:0,description:"The -webkit-border-before-color CSS property sets the color of the individual logical block start border in a single place in the style sheet."},{name:"-webkit-border-before-style",status:"nonstandard",syntax:"<'border-style'>",relevance:0,description:"The -webkit-border-before-style CSS property sets the style of the individual logical block start border in a single place in the style sheet."},{name:"-webkit-border-before-width",status:"nonstandard",syntax:"<'border-width'>",relevance:0,description:"The -webkit-border-before-width CSS property sets the width of the individual logical block start border in a single place in the style sheet."},{name:"-webkit-line-clamp",syntax:"none | <integer>",relevance:50,browsers:["E17","FF68","S5","C6","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-line-clamp"}],description:"The -webkit-line-clamp CSS property allows limiting of the contents of a block container to the specified number of lines."},{name:"-webkit-mask",status:"nonstandard",syntax:"[ <mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || [ <box> | border | padding | content | text ] || [ <box> | border | padding | content ] ]#",relevance:0,description:"The mask CSS property alters the visibility of an element by either partially or fully hiding it. This is accomplished by either masking or clipping the image at specific points."},{name:"-webkit-mask-attachment",status:"nonstandard",syntax:"<attachment>#",relevance:0,browsers:["S4","C1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-attachment"}],description:"If a -webkit-mask-image is specified, -webkit-mask-attachment determines whether the mask image's position is fixed within the viewport, or scrolls along with its containing block."},{name:"-webkit-mask-composite",status:"nonstandard",syntax:"<composite-style>#",relevance:0,browsers:["E18","FF53","S3.2","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-composite"}],description:"The -webkit-mask-composite property specifies the manner in which multiple mask images applied to the same element are composited with one another. Mask images are composited in the opposite order that they are declared with the -webkit-mask-image property."},{name:"-webkit-mask-position",status:"nonstandard",syntax:"<position>#",relevance:0,description:"The mask-position CSS property sets the initial position, relative to the mask position layer defined by mask-origin, for each defined mask image."},{name:"-webkit-mask-position-x",status:"nonstandard",syntax:"[ <length-percentage> | left | center | right ]#",relevance:0,browsers:["E18","FF49","S3.2","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-x"}],description:"The -webkit-mask-position-x CSS property sets the initial horizontal position of a mask image."},{name:"-webkit-mask-position-y",status:"nonstandard",syntax:"[ <length-percentage> | top | center | bottom ]#",relevance:0,browsers:["E18","FF49","S3.2","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-y"}],description:"The -webkit-mask-position-y CSS property sets the initial vertical position of a mask image."},{name:"-webkit-mask-repeat-x",status:"nonstandard",syntax:"repeat | no-repeat | space | round",relevance:0,browsers:["E18","S5","C3","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-x"}],description:"The -webkit-mask-repeat-x property specifies whether and how a mask image is repeated (tiled) horizontally."},{name:"-webkit-mask-repeat-y",status:"nonstandard",syntax:"repeat | no-repeat | space | round",relevance:0,browsers:["E18","S5","C3","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-y"}],description:"The -webkit-mask-repeat-y property specifies whether and how a mask image is repeated (tiled) vertically."},{name:"align-tracks",status:"experimental",syntax:"[ normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> ]#",relevance:50,browsers:["FF77"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/align-tracks"}],description:"The align-tracks CSS property sets the alignment in the masonry axis for grid containers that have masonry in their block axis."},{name:"appearance",status:"experimental",syntax:"none | auto | textfield | menulist-button | <compat-auto>",relevance:60,browsers:["E84","FF80","S3","C84","O70"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/appearance"}],description:"Changes the appearance of buttons and other controls to resemble native controls."},{name:"aspect-ratio",status:"experimental",syntax:"auto | <ratio>",relevance:52,browsers:["E88","FF83","C88"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/aspect-ratio"}],description:"The aspect-ratio CSS property sets a preferred aspect ratio for the box, which will be used in the calculation of auto sizes and some other layout functions."},{name:"azimuth",status:"obsolete",syntax:"<angle> | [ [ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards",relevance:0,description:"In combination with elevation, the azimuth CSS property enables different audio sources to be positioned spatially for aural presentation. This is important in that it provides a natural way to tell several voices apart, as each can be positioned to originate at a different location on the sound stage. Stereo output produce a lateral sound stage, while binaural headphones and multi-speaker setups allow for a fully three-dimensional stage."},{name:"backdrop-filter",syntax:"none | <filter-function-list>",relevance:51,browsers:["E17","FF70","S9","C76","O34"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/backdrop-filter"}],description:"The backdrop-filter CSS property lets you apply graphical effects such as blurring or color shifting to the area behind an element. Because it applies to everything behind the element, to see the effect you must make the element or its background at least partially transparent."},{name:"border-block",syntax:"<'border-top-width'> || <'border-top-style'> || <color>",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block"}],description:"The border-block CSS property is a shorthand property for setting the individual logical block border property values in a single place in the style sheet."},{name:"border-block-color",syntax:"<'border-top-color'>{1,2}",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-color"}],description:"The border-block-color CSS property defines the color of the logical block borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color and border-bottom-color, or border-right-color and border-left-color property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-block-style",syntax:"<'border-top-style'>",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-style"}],description:"The border-block-style CSS property defines the style of the logical block borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style and border-bottom-style, or border-left-style and border-right-style properties depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-block-width",syntax:"<'border-top-width'>",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-width"}],description:"The border-block-width CSS property defines the width of the logical block borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width and border-bottom-width, or border-left-width, and border-right-width property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-end-end-radius",syntax:"<length-percentage>{1,2}",relevance:50,browsers:["FF66","C89"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-end-end-radius"}],description:"The border-end-end-radius CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on on the element's writing-mode, direction, and text-orientation."},{name:"border-end-start-radius",syntax:"<length-percentage>{1,2}",relevance:50,browsers:["FF66","C89"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-end-start-radius"}],description:"The border-end-start-radius CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's writing-mode, direction, and text-orientation."},{name:"border-inline",syntax:"<'border-top-width'> || <'border-top-style'> || <color>",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline"}],description:"The border-inline CSS property is a shorthand property for setting the individual logical inline border property values in a single place in the style sheet."},{name:"border-inline-color",syntax:"<'border-top-color'>{1,2}",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-color"}],description:"The border-inline-color CSS property defines the color of the logical inline borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color and border-bottom-color, or border-right-color and border-left-color property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-inline-style",syntax:"<'border-top-style'>",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-style"}],description:"The border-inline-style CSS property defines the style of the logical inline borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style and border-bottom-style, or border-left-style and border-right-style properties depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-inline-width",syntax:"<'border-top-width'>",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-width"}],description:"The border-inline-width CSS property defines the width of the logical inline borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width and border-bottom-width, or border-left-width, and border-right-width property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-start-end-radius",syntax:"<length-percentage>{1,2}",relevance:50,browsers:["FF66","C89"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-start-end-radius"}],description:"The border-start-end-radius CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's writing-mode, direction, and text-orientation."},{name:"border-start-start-radius",syntax:"<length-percentage>{1,2}",relevance:50,browsers:["FF66","C89"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-start-start-radius"}],description:"The border-start-start-radius CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on the element's writing-mode, direction, and text-orientation."},{name:"box-align",status:"nonstandard",syntax:"start | center | end | baseline | stretch",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-align"}],description:"The box-align CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box."},{name:"box-direction",status:"nonstandard",syntax:"normal | reverse | inherit",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-direction"}],description:"The box-direction CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge)."},{name:"box-flex",status:"nonstandard",syntax:"<number>",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-flex"}],description:"The -moz-box-flex and -webkit-box-flex CSS properties specify how a -moz-box or -webkit-box grows to fill the box that contains it, in the direction of the containing box's layout."},{name:"box-flex-group",status:"nonstandard",syntax:"<integer>",relevance:0,browsers:["S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-flex-group"}],description:"The box-flex-group CSS property assigns the flexbox's child elements to a flex group."},{name:"box-lines",status:"nonstandard",syntax:"single | multiple",relevance:0,browsers:["S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-lines"}],description:"The box-lines CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes)."},{name:"box-ordinal-group",status:"nonstandard",syntax:"<integer>",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-ordinal-group"}],description:"The box-ordinal-group CSS property assigns the flexbox's child elements to an ordinal group."},{name:"box-orient",status:"nonstandard",syntax:"horizontal | vertical | inline-axis | block-axis | inherit",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-orient"}],description:"The box-orient CSS property specifies whether an element lays out its contents horizontally or vertically."},{name:"box-pack",status:"nonstandard",syntax:"start | center | end | justify",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-pack"}],description:"The -moz-box-pack and -webkit-box-pack CSS properties specify how a -moz-box or -webkit-box packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box."},{name:"color-adjust",syntax:"economy | exact",relevance:50,browsers:["E79","FF48","S6","C49","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/color-adjust"}],description:"The color-adjust property is a non-standard CSS extension that can be used to force printing of background colors and images in browsers based on the WebKit engine."},{name:"content-visibility",syntax:"visible | auto | hidden",relevance:50,browsers:["E85","C85","O71"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/content-visibility"}],description:"Controls whether or not an element renders its contents at all, along with forcing a strong set of containments, allowing user agents to potentially omit large swathes of layout and rendering work until it becomes needed."},{name:"counter-set",syntax:"[ <custom-ident> <integer>? ]+ | none",relevance:50,browsers:["E85","FF68","C85","O71"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/counter-set"}],description:"The counter-set CSS property sets a CSS counter to a given value. It manipulates the value of existing counters, and will only create new counters if there isn't already a counter of the given name on the element."},{name:"font-optical-sizing",syntax:"auto | none",relevance:50,browsers:["E17","FF62","S11","C79","O66"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-optical-sizing"}],description:"The font-optical-sizing CSS property allows developers to control whether browsers render text with slightly differing visual representations to optimize viewing at different sizes, or not. This only works for fonts that have an optical size variation axis."},{name:"font-variation-settings",syntax:"normal | [ <string> <number> ]#",relevance:50,browsers:["E17","FF62","S11","C62","O49"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variation-settings"}],description:"The font-variation-settings CSS property provides low-level control over OpenType or TrueType font variations, by specifying the four letter axis names of the features you want to vary, along with their variation values."},{name:"font-smooth",status:"nonstandard",syntax:"auto | never | always | <absolute-size> | <length>",relevance:0,browsers:["E79","FF25","S4","C5","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-smooth"}],description:"The font-smooth CSS property controls the application of anti-aliasing when fonts are rendered."},{name:"forced-color-adjust",status:"experimental",syntax:"auto | none",relevance:50,browsers:["E79","C79","IE10"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/forced-color-adjust"}],description:"Allows authors to opt certain elements out of forced colors mode. This then restores the control of those values to CSS"},{name:"gap",syntax:"<'row-gap'> <'column-gap'>?",relevance:50,browsers:["E84","FF63","S10.1","C84","O70"],description:"The gap CSS property is a shorthand property for row-gap and column-gap specifying the gutters between grid rows and columns."},{name:"hanging-punctuation",syntax:"none | [ first || [ force-end | allow-end ] || last ]",relevance:50,browsers:["S10"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/hanging-punctuation"}],description:"The hanging-punctuation CSS property specifies whether a punctuation mark should hang at the start or end of a line of text. Hanging punctuation may be placed outside the line box."},{name:"image-resolution",status:"experimental",syntax:"[ from-image || <resolution> ] && snap?",relevance:50,description:"The image-resolution property specifies the intrinsic resolution of all raster images used in or on the element. It affects both content images (e.g. replaced elements and generated content) and decorative images (such as background-image). The intrinsic resolution of an image is used to determine the image\u2019s intrinsic dimensions."},{name:"initial-letter",status:"experimental",syntax:"normal | [ <number> <integer>? ]",relevance:50,browsers:["S9"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/initial-letter"}],description:"The initial-letter CSS property specifies styling for dropped, raised, and sunken initial letters."},{name:"initial-letter-align",status:"experimental",syntax:"[ auto | alphabetic | hanging | ideographic ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/initial-letter-align"}],description:"The initial-letter-align CSS property specifies the alignment of initial letters within a paragraph."},{name:"inset",syntax:"<'top'>{1,4}",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset"}],description:"The inset CSS property defines the logical block and inline start and end offsets of an element, which map to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-block",syntax:"<'top'>{1,2}",relevance:50,browsers:["E79","FF63","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-block"}],description:"The inset-block CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-block-end",syntax:"<'top'>",relevance:50,browsers:["E79","FF63","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-block-end"}],description:"The inset-block-end CSS property defines the logical block end offset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-block-start",syntax:"<'top'>",relevance:50,browsers:["E79","FF63","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-block-start"}],description:"The inset-block-start CSS property defines the logical block start offset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-inline",syntax:"<'top'>{1,2}",relevance:50,browsers:["E79","FF63","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-inline"}],description:"The inset-inline CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-inline-end",syntax:"<'top'>",relevance:50,browsers:["E79","FF63","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-inline-end"}],description:"The inset-inline-end CSS property defines the logical inline end inset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-inline-start",syntax:"<'top'>",relevance:50,browsers:["E79","FF63","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-inline-start"}],description:"The inset-inline-start CSS property defines the logical inline start inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"justify-tracks",status:"experimental",syntax:"[ normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ] ]#",relevance:50,browsers:["FF77"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/justify-tracks"}],description:"The justify-tracks CSS property sets the alignment in the masonry axis for grid containers that have masonry in their inline axis"},{name:"line-clamp",status:"experimental",syntax:"none | <integer>",relevance:50,description:"The line-clamp property allows limiting the contents of a block container to the specified number of lines; remaining content is fragmented away and neither rendered nor measured. Optionally, it also allows inserting content into the last line box to indicate the continuity of truncated/interrupted content."},{name:"line-height-step",status:"experimental",syntax:"<length>",relevance:50,browsers:["E79","C60","O47"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/line-height-step"}],description:"The line-height-step CSS property defines the step units for line box heights. When the step unit is positive, line box heights are rounded up to the closest multiple of the unit. Negative values are invalid."},{name:"margin-block",syntax:"<'margin-left'>{1,2}",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-block"}],description:"The margin-block CSS property defines the logical block start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation."},{name:"margin-inline",syntax:"<'margin-left'>{1,2}",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-inline"}],description:"The margin-inline CSS property defines the logical inline start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation."},{name:"margin-trim",status:"experimental",syntax:"none | in-flow | all",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-trim"}],description:"The margin-trim property allows the container to trim the margins of its children where they adjoin the container\u2019s edges."},{name:"mask",syntax:"<mask-layer>#",relevance:50,browsers:["E12","FF2","S3.2","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask"}],description:"The mask CSS property alters the visibility of an element by either partially or fully hiding it. This is accomplished by either masking or clipping the image at specific points."},{name:"mask-border",syntax:"<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>",relevance:50,browsers:["E79","S3.1","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-border"}],description:"The mask-border CSS property lets you create a mask along the edge of an element's border.\n\nThis property is a shorthand for mask-border-source, mask-border-slice, mask-border-width, mask-border-outset, mask-border-repeat, and mask-border-mode. As with all shorthand properties, any omitted sub-values will be set to their initial value."},{name:"mask-border-mode",syntax:"luminance | alpha",relevance:50,description:"The mask-border-mode CSS property specifies the blending mode used in a mask border."},{name:"mask-border-outset",syntax:"[ <length> | <number> ]{1,4}",relevance:50,browsers:["E79","S3.1","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-border-outset"}],description:"The mask-border-outset CSS property specifies the distance by which an element's mask border is set out from its border box."},{name:"mask-border-repeat",syntax:"[ stretch | repeat | round | space ]{1,2}",relevance:50,browsers:["E79","S3.1","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-border-repeat"}],description:"The mask-border-repeat CSS property defines how the edge regions of a source image are adjusted to fit the dimensions of an element's mask border."},{name:"mask-border-slice",syntax:"<number-percentage>{1,4} fill?",relevance:50,browsers:["E79","S3.1","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-border-slice"}],description:"The mask-border-slice CSS property divides the image specified by mask-border-source into regions. These regions are used to form the components of an element's mask border."},{name:"mask-border-source",syntax:"none | <image>",relevance:50,browsers:["E79","S3.1","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-border-source"}],description:"The mask-border-source CSS property specifies the source image used to create an element's mask border.\n\nThe mask-border-slice property is used to divide the source image into regions, which are then dynamically applied to the final mask border."},{name:"mask-border-width",syntax:"[ <length-percentage> | <number> | auto ]{1,4}",relevance:50,browsers:["E79","S3.1","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-border-width"}],description:"The mask-border-width CSS property specifies the width of an element's mask border."},{name:"mask-clip",syntax:"[ <geometry-box> | no-clip ]#",relevance:50,browsers:["E79","FF53","S4","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-clip"}],description:"The mask-clip CSS property determines the area, which is affected by a mask. The painted content of an element must be restricted to this area."},{name:"mask-composite",syntax:"<compositing-operator>#",relevance:50,browsers:["E18","FF53"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-composite"}],description:"The mask-composite CSS property represents a compositing operation used on the current mask layer with the mask layers below it."},{name:"masonry-auto-flow",status:"experimental",syntax:"[ pack | next ] || [ definite-first | ordered ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/masonry-auto-flow"}],description:"The masonry-auto-flow CSS property modifies how items are placed when using masonry in CSS Grid Layout."},{name:"math-style",syntax:"normal | compact",relevance:50,browsers:["FF83","C83"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/math-style"}],description:"The math-style property indicates whether MathML equations should render with normal or compact height."},{name:"max-lines",status:"experimental",syntax:"none | <integer>",relevance:50,description:"The max-liens property forces a break after a set number of lines"},{name:"offset",syntax:"[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?",relevance:50,browsers:["E79","FF72","C55","O42"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset"}],description:"The offset CSS property is a shorthand property for animating an element along a defined path."},{name:"offset-anchor",syntax:"auto | <position>",relevance:50,browsers:["E79","FF72","C79"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-anchor"}],description:"Defines an anchor point of the box positioned along the path. The anchor point specifies the point of the box which is to be considered as the point that is moved along the path."},{name:"offset-distance",syntax:"<length-percentage>",relevance:50,browsers:["E79","FF72","C55","O42"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-distance"}],description:"The offset-distance CSS property specifies a position along an offset-path."},{name:"offset-path",syntax:"none | ray( [ <angle> && <size> && contain? ] ) | <path()> | <url> | [ <basic-shape> || <geometry-box> ]",relevance:50,browsers:["E79","FF72","C55","O45"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-path"}],description:'The offset-path CSS property specifies the offset path where the element gets positioned. The exact element\u2019s position on the offset path is determined by the offset-distance property. An offset path is either a specified path with one or multiple sub-paths or the geometry of a not-styled basic shape. Each shape or path must define an initial position for the computed value of "0" for offset-distance and an initial direction which specifies the rotation of the object to the initial position.\n\nIn this specification, a direction (or rotation) of 0 degrees is equivalent to the direction of the positive x-axis in the object\u2019s local coordinate system. In other words, a rotation of 0 degree points to the right side of the UA if the object and its ancestors have no transformation applied.'},{name:"offset-position",status:"experimental",syntax:"auto | <position>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-position"}],description:"Specifies the initial position of the offset path. If position is specified with static, offset-position would be ignored."},{name:"offset-rotate",syntax:"[ auto | reverse ] || <angle>",relevance:50,browsers:["E79","FF72","C56","O43"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-rotate"}],description:"The offset-rotate CSS property defines the direction of the element while positioning along the offset path."},{name:"overflow-anchor",syntax:"auto | none",relevance:52,browsers:["E79","FF66","C56","O43"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-anchor"}],description:"The overflow-anchor CSS property provides a way to opt out browser scroll anchoring behavior which adjusts scroll position to minimize content shifts."},{name:"overflow-block",syntax:"visible | hidden | clip | scroll | auto",relevance:50,browsers:["FF69"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-block"}],description:"The overflow-block CSS media feature can be used to test how the output device handles content that overflows the initial containing block along the block axis."},{name:"overflow-clip-box",status:"nonstandard",syntax:"padding-box | content-box",relevance:0,browsers:["FF29"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Mozilla/Gecko/Chrome/CSS/overflow-clip-box"}],description:"The overflow-clip-box CSS property specifies relative to which box the clipping happens when there is an overflow. It is short hand for the overflow-clip-box-inline and overflow-clip-box-block properties."},{name:"overflow-inline",syntax:"visible | hidden | clip | scroll | auto",relevance:50,browsers:["FF69"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-inline"}],description:"The overflow-inline CSS media feature can be used to test how the output device handles content that overflows the initial containing block along the inline axis."},{name:"overscroll-behavior",syntax:"[ contain | none | auto ]{1,2}",relevance:50,browsers:["E18","FF59","C63","O50"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior"}],description:"The overscroll-behavior CSS property is shorthand for the overscroll-behavior-x and overscroll-behavior-y properties, which allow you to control the browser's scroll overflow behavior \u2014 what happens when the boundary of a scrolling area is reached."},{name:"overscroll-behavior-block",syntax:"contain | none | auto",relevance:50,browsers:["E79","FF73","C77","O64"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-block"}],description:"The overscroll-behavior-block CSS property sets the browser's behavior when the block direction boundary of a scrolling area is reached."},{name:"overscroll-behavior-inline",syntax:"contain | none | auto",relevance:50,browsers:["E79","FF73","C77","O64"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-inline"}],description:"The overscroll-behavior-inline CSS property sets the browser's behavior when the inline direction boundary of a scrolling area is reached."},{name:"overscroll-behavior-x",syntax:"contain | none | auto",relevance:50,browsers:["E18","FF59","C63","O50"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-x"}],description:"The overscroll-behavior-x CSS property is allows you to control the browser's scroll overflow behavior \u2014 what happens when the boundary of a scrolling area is reached \u2014 in the x axis direction."},{name:"overscroll-behavior-y",syntax:"contain | none | auto",relevance:50,browsers:["E18","FF59","C63","O50"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-y"}],description:"The overscroll-behavior-y CSS property is allows you to control the browser's scroll overflow behavior \u2014 what happens when the boundary of a scrolling area is reached \u2014 in the y axis direction."},{name:"padding-block",syntax:"<'padding-left'>{1,2}",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-block"}],description:"The padding-block CSS property defines the logical block start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation."},{name:"padding-inline",syntax:"<'padding-left'>{1,2}",relevance:50,browsers:["E79","FF66","C87","O73"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-inline"}],description:"The padding-inline CSS property defines the logical inline start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation."},{name:"place-content",syntax:"<'align-content'> <'justify-content'>?",relevance:50,browsers:["E79","FF53","S9","C59","O46"],description:"The place-content CSS shorthand property sets both the align-content and justify-content properties."},{name:"place-items",syntax:"<'align-items'> <'justify-items'>?",relevance:50,browsers:["E79","FF45","S11","C59","O46"],description:"The CSS place-items shorthand property sets both the align-items and justify-items properties. The first value is the align-items property value, the second the justify-items one. If the second value is not present, the first value is also used for it."},{name:"place-self",syntax:"<'align-self'> <'justify-self'>?",relevance:50,browsers:["E79","FF45","S11","C59","O46"],description:"The place-self CSS property is a shorthand property sets both the align-self and justify-self properties. The first value is the align-self property value, the second the justify-self one. If the second value is not present, the first value is also used for it."},{name:"rotate",syntax:"none | <angle> | [ x | y | z | <number>{3} ] && <angle>",relevance:50,browsers:["FF72"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/rotate"}],description:"The rotate CSS property allows you to specify rotation transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value."},{name:"row-gap",syntax:"normal | <length-percentage>",relevance:50,browsers:["E84","FF63","S12.1","C84","O70"],description:"The row-gap CSS property specifies the gutter between grid rows."},{name:"ruby-merge",status:"experimental",syntax:"separate | collapse | auto",relevance:50,description:"This property controls how ruby annotation boxes should be rendered when there are more than one in a ruby container box: whether each pair should be kept separate, the annotations should be collapsed and rendered as a group, or the separation should be determined based on the space available."},{name:"scale",syntax:"none | <number>{1,3}",relevance:50,browsers:["FF72"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scale"}],description:"The scale CSS property allows you to specify scale transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value."},{name:"scrollbar-color",syntax:"auto | dark | light | <color>{2}",relevance:50,browsers:["FF64"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-color"}],description:"The scrollbar-color CSS property sets the color of the scrollbar track and thumb."},{name:"scrollbar-gutter",syntax:"auto | [ stable | always ] && both? && force?",relevance:50,browsers:["C88"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-gutter"}],description:"The scrollbar-gutter CSS property allows authors to reserve space for the scrollbar, preventing unwanted layout changes as the content grows while also avoiding unnecessary visuals when scrolling isn't needed."},{name:"scrollbar-width",syntax:"auto | thin | none",relevance:50,browsers:["FF64"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-width"}],description:"The scrollbar-width property allows the author to set the maximum thickness of an element\u2019s scrollbars when they are shown. "},{name:"scroll-margin",syntax:"<length>{1,4}",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin"}],description:"The scroll-margin property is a shorthand property which sets all of the scroll-margin longhands, assigning values much like the margin property does for the margin-* longhands."},{name:"scroll-margin-block",syntax:"<length>{1,2}",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block"}],description:"The scroll-margin-block property is a shorthand property which sets the scroll-margin longhands in the block dimension."},{name:"scroll-margin-block-start",syntax:"<length>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-start"}],description:"The scroll-margin-block-start property defines the margin of the scroll snap area at the start of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\u2019s coordinate space), then adding the specified outsets."},{name:"scroll-margin-block-end",syntax:"<length>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-end"}],description:"The scroll-margin-block-end property defines the margin of the scroll snap area at the end of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\u2019s coordinate space), then adding the specified outsets."},{name:"scroll-margin-bottom",syntax:"<length>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom"}],description:"The scroll-margin-bottom property defines the bottom margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\u2019s coordinate space), then adding the specified outsets."},{name:"scroll-margin-inline",syntax:"<length>{1,2}",relevance:50,browsers:["FF68"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline"}],description:"The scroll-margin-inline property is a shorthand property which sets the scroll-margin longhands in the inline dimension."},{name:"scroll-margin-inline-start",syntax:"<length>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-start"}],description:"The scroll-margin-inline-start property defines the margin of the scroll snap area at the start of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\u2019s coordinate space), then adding the specified outsets."},{name:"scroll-margin-inline-end",syntax:"<length>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-end"}],description:"The scroll-margin-inline-end property defines the margin of the scroll snap area at the end of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\u2019s coordinate space), then adding the specified outsets."},{name:"scroll-margin-left",syntax:"<length>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left"}],description:"The scroll-margin-left property defines the left margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\u2019s coordinate space), then adding the specified outsets."},{name:"scroll-margin-right",syntax:"<length>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right"}],description:"The scroll-margin-right property defines the right margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\u2019s coordinate space), then adding the specified outsets."},{name:"scroll-margin-top",syntax:"<length>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top"}],description:"The scroll-margin-top property defines the top margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\u2019s coordinate space), then adding the specified outsets."},{name:"scroll-padding",syntax:"[ auto | <length-percentage> ]{1,4}",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding"}],description:"The scroll-padding property is a shorthand property which sets all of the scroll-padding longhands, assigning values much like the padding property does for the padding-* longhands."},{name:"scroll-padding-block",syntax:"[ auto | <length-percentage> ]{1,2}",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block"}],description:"The scroll-padding-block property is a shorthand property which sets the scroll-padding longhands for the block dimension."},{name:"scroll-padding-block-start",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-start"}],description:"The scroll-padding-block-start property defines offsets for the start edge in the block dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-block-end",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-end"}],description:"The scroll-padding-block-end property defines offsets for the end edge in the block dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-bottom",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-bottom"}],description:"The scroll-padding-bottom property defines offsets for the bottom of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-inline",syntax:"[ auto | <length-percentage> ]{1,2}",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline"}],description:"The scroll-padding-inline property is a shorthand property which sets the scroll-padding longhands for the inline dimension."},{name:"scroll-padding-inline-start",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-start"}],description:"The scroll-padding-inline-start property defines offsets for the start edge in the inline dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-inline-end",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-end"}],description:"The scroll-padding-inline-end property defines offsets for the end edge in the inline dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-left",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-left"}],description:"The scroll-padding-left property defines offsets for the left of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-right",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-right"}],description:"The scroll-padding-right property defines offsets for the right of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-top",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-top"}],description:"The scroll-padding-top property defines offsets for the top of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-snap-align",syntax:"[ none | start | end | center ]{1,2}",relevance:51,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-align"}],description:"The scroll-snap-align property specifies the box\u2019s snap position as an alignment of its snap area (as the alignment subject) within its snap container\u2019s snapport (as the alignment container). The two values specify the snapping alignment in the block axis and inline axis, respectively. If only one value is specified, the second value defaults to the same value."},{name:"scroll-snap-stop",syntax:"normal | always",relevance:50,browsers:["E79","C75","O62"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-stop"}],description:'The scroll-snap-stop CSS property defines whether the scroll container is allowed to "pass over" possible snap positions.'},{name:"scroll-snap-type-x",status:"obsolete",syntax:"none | mandatory | proximity",relevance:0,browsers:["FF39","S9"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-x"}],description:"The scroll-snap-type-x CSS property defines how strictly snap points are enforced on the horizontal axis of the scroll container in case there is one.\n\nSpecifying any precise animations or physics used to enforce those snap points is not covered by this property but instead left up to the user agent."},{name:"scroll-snap-type-y",status:"obsolete",syntax:"none | mandatory | proximity",relevance:0,browsers:["FF39"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-y"}],description:"The scroll-snap-type-y CSS property defines how strictly snap points are enforced on the vertical axis of the scroll container in case there is one.\n\nSpecifying any precise animations or physics used to enforce those snap points is not covered by this property but instead left up to the user agent."},{name:"text-combine-upright",syntax:"none | all | [ digits <integer>? ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-combine-upright"}],description:"The text-combine-upright CSS property specifies the combination of multiple characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes.\n\nThis is used to produce an effect that is known as tate-ch\u016b-yoko (\u7e26\u4e2d\u6a2a) in Japanese, or as \u76f4\u66f8\u6a6b\u5411 in Chinese."},{name:"text-decoration-skip",status:"experimental",syntax:"none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]",relevance:53,browsers:["S12.1","C57","O44"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip"}],description:"The text-decoration-skip CSS property specifies what parts of the element\u2019s content any text decoration affecting the element must skip over. It controls all text decoration lines drawn by the element and also any text decoration lines drawn by its ancestors."},{name:"text-decoration-skip-ink",syntax:"auto | all | none",relevance:50,browsers:["E79","FF70","C64","O50"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip-ink"}],description:"The text-decoration-skip-ink CSS property specifies how overlines and underlines are drawn when they pass over glyph ascenders and descenders."},{name:"text-decoration-thickness",syntax:"auto | from-font | <length> | <percentage> ",relevance:50,browsers:["E87","FF70","S12.1","C87"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness"}],description:"The text-decoration-thickness CSS property sets the thickness, or width, of the decoration line that is used on text in an element, such as a line-through, underline, or overline."},{name:"text-emphasis",syntax:"<'text-emphasis-style'> || <'text-emphasis-color'>",relevance:50,browsers:["E79","FF46","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-emphasis"}],description:"The text-emphasis CSS property is a shorthand property for setting text-emphasis-style and text-emphasis-color in one declaration. This property will apply the specified emphasis mark to each character of the element's text, except separator characters, like spaces, and control characters."},{name:"text-emphasis-color",syntax:"<color>",relevance:50,browsers:["E79","FF46","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-emphasis-color"}],description:"The text-emphasis-color CSS property defines the color used to draw emphasis marks on text being rendered in the HTML document. This value can also be set and reset using the text-emphasis shorthand."},{name:"text-emphasis-position",syntax:"[ over | under ] && [ right | left ]",relevance:50,browsers:["E79","FF46","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-emphasis-position"}],description:"The text-emphasis-position CSS property describes where emphasis marks are drawn at. The effect of emphasis marks on the line height is the same as for ruby text: if there isn't enough place, the line height is increased."},{name:"text-emphasis-style",syntax:"none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>",relevance:50,browsers:["E79","FF46","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-emphasis-style"}],description:"The text-emphasis-style CSS property defines the type of emphasis used. It can also be set, and reset, using the text-emphasis shorthand."},{name:"text-size-adjust",status:"experimental",syntax:"none | auto | <percentage>",relevance:56,browsers:["E79","C54","O41"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-size-adjust"}],description:"The text-size-adjust CSS property controls the text inflation algorithm used on some smartphones and tablets. Other browsers will ignore this property."},{name:"text-underline-offset",syntax:"auto | <length> | <percentage> ",relevance:50,browsers:["E87","FF70","S12.1","C87"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-underline-offset"}],description:"The text-underline-offset CSS property sets the offset distance of an underline text decoration line (applied using text-decoration) from its original position."},{name:"transform-box",syntax:"content-box | border-box | fill-box | stroke-box | view-box",relevance:50,browsers:["E79","FF55","S11","C64","O51"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transform-box"}],description:"The transform-box CSS property defines the layout box to which the transform and transform-origin properties relate."},{name:"translate",syntax:"none | <length-percentage> [ <length-percentage> <length>? ]?",relevance:50,browsers:["FF72"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/translate"}],description:"The translate CSS property allows you to specify translation transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value."},{name:"speak-as",syntax:"auto | bullets | numbers | words | spell-out | <counter-style-name>",relevance:50,description:"The speak-as descriptor specifies how a counter symbol constructed with a given @counter-style will be represented in the spoken form. For example, an author can specify a counter symbol to be either spoken as its numerical value or just represented with an audio cue."},{name:"font-display",status:"experimental",syntax:"[ auto | block | swap | fallback | optional ]",relevance:54,description:"The font-display descriptor determines how a font face is displayed based on whether and when it is downloaded and ready to use."},{name:"bleed",syntax:"auto | <length>",relevance:50,description:"The bleed CSS at-rule descriptor, used with the @page at-rule, specifies the extent of the page bleed area outside the page box. This property only has effect if crop marks are enabled using the marks property."},{name:"marks",syntax:"none | [ crop || cross ]",relevance:50,description:"The marks CSS at-rule descriptor, used with the @page at-rule, adds crop and/or cross marks to the presentation of the document. Crop marks indicate where the page should be cut. Cross marks are used to align sheets."},{name:"syntax",status:"experimental",syntax:"<string>",relevance:50,description:"Specifies the syntax of the custom property registration represented by the @property rule, controlling how the property\u2019s value is parsed at computed value time."},{name:"inherits",status:"experimental",syntax:"true | false",relevance:50,description:"Specifies the inherit flag of the custom property registration represented by the @property rule, controlling whether or not the property inherits by default."},{name:"initial-value",status:"experimental",syntax:"<string>",relevance:50,description:"Specifies the initial value of the custom property registration represented by the @property rule, controlling the property\u2019s initial value."},{name:"max-zoom",syntax:"auto | <number> | <percentage>",relevance:50,description:"The max-zoom CSS descriptor sets the maximum zoom factor of a document defined by the @viewport at-rule. The browser will not zoom in any further than this, whether automatically or at the user's request.\n\nA zoom factor of 1.0 or 100% corresponds to no zooming. Larger values are zoomed in. Smaller values are zoomed out."},{name:"min-zoom",syntax:"auto | <number> | <percentage>",relevance:50,description:"The min-zoom CSS descriptor sets the minimum zoom factor of a document defined by the @viewport at-rule. The browser will not zoom out any further than this, whether automatically or at the user's request.\n\nA zoom factor of 1.0 or 100% corresponds to no zooming. Larger values are zoomed in. Smaller values are zoomed out."},{name:"orientation",syntax:"auto | portrait | landscape",relevance:50,description:"The orientation CSS @media media feature can be used to apply styles based on the orientation of the viewport (or the page box, for paged media)."},{name:"user-zoom",syntax:"zoom | fixed",relevance:50,description:"The user-zoom CSS descriptor controls whether or not the user can change the zoom factor of a document defined by @viewport."},{name:"viewport-fit",syntax:"auto | contain | cover",relevance:50,description:"The border-block-style CSS property defines the style of the logical block borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation."}],atDirectives:[{name:"@charset",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@charset"}],description:"Defines character set of the document."},{name:"@counter-style",browsers:["FF33"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@counter-style"}],description:"Defines a custom counter style."},{name:"@font-face",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@font-face"}],description:"Allows for linking to fonts that are automatically activated when needed. This permits authors to work around the limitation of 'web-safe' fonts, allowing for consistent rendering independent of the fonts available in a given user's environment."},{name:"@font-feature-values",browsers:["FF34","S9.1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@font-feature-values"}],description:"Defines named values for the indices used to select alternate glyphs for a given font family."},{name:"@import",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@import"}],description:"Includes content of another file."},{name:"@keyframes",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@keyframes"}],description:"Defines set of animation key frames."},{name:"@media",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@media"}],description:"Defines a stylesheet for a particular media type."},{name:"@-moz-document",browsers:["FF1.8"],description:"Gecko-specific at-rule that restricts the style rules contained within it based on the URL of the document."},{name:"@-moz-keyframes",browsers:["FF5"],description:"Defines set of animation key frames."},{name:"@-ms-viewport",browsers:["E","IE10"],description:"Specifies the size, zoom factor, and orientation of the viewport."},{name:"@namespace",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@namespace"}],description:"Declares a prefix and associates it with a namespace name."},{name:"@-o-keyframes",browsers:["O12"],description:"Defines set of animation key frames."},{name:"@-o-viewport",browsers:["O11"],description:"Specifies the size, zoom factor, and orientation of the viewport."},{name:"@page",browsers:["E12","FF19","C2","IE8","O6"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@page"}],description:"Directive defines various page parameters."},{name:"@supports",browsers:["E12","FF22","S9","C28","O12.1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@supports"}],description:"A conditional group rule whose condition tests whether the user agent supports CSS property:value pairs."},{name:"@-webkit-keyframes",browsers:["C","S4"],description:"Defines set of animation key frames."}],pseudoClasses:[{name:":active",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:active"}],description:"Applies while an element is being activated by the user. For example, between the times the user presses the mouse button and releases it."},{name:":any-link",browsers:["E79","FF50","S9","C65","O52"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:any-link"}],description:"Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links."},{name:":checked",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:checked"}],description:"Radio and checkbox elements can be toggled by the user. Some menu items are 'checked' when the user selects them. When such elements are toggled 'on' the :checked pseudo-class applies."},{name:":corner-present",browsers:["C","S5"],description:"Non-standard. Indicates whether or not a scrollbar corner is present."},{name:":decrement",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will decrement the view\u2019s position when used."},{name:":default",browsers:["E79","FF4","S5","C10","O10"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:default"}],description:"Applies to the one or more UI elements that are the default among a set of similar elements. Typically applies to context menu items, buttons, and select lists/menus."},{name:":disabled",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:disabled"}],description:"Represents user interface elements that are in a disabled state; such elements have a corresponding enabled state."},{name:":double-button",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed together at the same end of the scrollbar."},{name:":empty",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:empty"}],description:"Represents an element that has no children at all."},{name:":enabled",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:enabled"}],description:"Represents user interface elements that are in an enabled state; such elements have a corresponding disabled state."},{name:":end",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed after the thumb."},{name:":first",browsers:["E12","S6","C18","IE8","O9.2"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:first"}],description:"When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context."},{name:":first-child",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:first-child"}],description:"Same as :nth-child(1). Represents an element that is the first child of some other element."},{name:":first-of-type",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:first-of-type"}],description:"Same as :nth-of-type(1). Represents an element that is the first sibling of its type in the list of children of its parent element."},{name:":focus",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:focus"}],description:"Applies while an element has the focus (accepts keyboard or mouse events, or other forms of input)."},{name:":fullscreen",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:fullscreen"}],description:"Matches any element that has its fullscreen flag set."},{name:":future",browsers:["C","O16","S6"],description:"Represents any element that is defined to occur entirely after a :current element."},{name:":horizontal",browsers:["C","S5"],description:"Non-standard. Applies to any scrollbar pieces that have a horizontal orientation."},{name:":host",browsers:["E79","FF63","S10","C54","O41"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:host"}],description:"When evaluated in the context of a shadow tree, matches the shadow tree\u2019s host element."},{name:":host()",browsers:["C35","O22"],description:"When evaluated in the context of a shadow tree, it matches the shadow tree\u2019s host element if the host element, in its normal context, matches the selector argument."},{name:":host-context()",browsers:["C35","O22"],description:"Tests whether there is an ancestor, outside the shadow tree, which matches a particular selector."},{name:":hover",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:hover"}],description:"Applies while the user designates an element with a pointing device, but does not necessarily activate it. For example, a visual user agent could apply this pseudo-class when the cursor (mouse pointer) hovers over a box generated by the element."},{name:":increment",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will increment the view\u2019s position when used."},{name:":indeterminate",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:indeterminate"}],description:"Applies to UI elements whose value is in an indeterminate state."},{name:":in-range",browsers:["E13","FF29","S5.1","C10","O11"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:in-range"}],description:"Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes."},{name:":invalid",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:invalid"}],description:"An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification."},{name:":lang()",browsers:["E","C","FF1","IE8","O8","S3"],description:"Represents an element that is in language specified."},{name:":last-child",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:last-child"}],description:"Same as :nth-last-child(1). Represents an element that is the last child of some other element."},{name:":last-of-type",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:last-of-type"}],description:"Same as :nth-last-of-type(1). Represents an element that is the last sibling of its type in the list of children of its parent element."},{name:":left",browsers:["E12","S5.1","C6","IE8","O9.2"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:left"}],description:"When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context."},{name:":link",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:link"}],description:"Applies to links that have not yet been visited."},{name:":matches()",browsers:["S9"],description:"Takes a selector list as its argument. It represents an element that is represented by its argument."},{name:":-moz-any()",browsers:["FF4"],description:"Represents an element that is represented by the selector list passed as its argument. Standardized as :matches()."},{name:":-moz-any-link",browsers:["FF1"],description:"Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links."},{name:":-moz-broken",browsers:["FF3"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:-moz-broken"}],description:"Non-standard. Matches elements representing broken images."},{name:":-moz-drag-over",browsers:["FF1"],description:"Non-standard. Matches elements when a drag-over event applies to it."},{name:":-moz-first-node",browsers:["FF1"],description:"Non-standard. Represents an element that is the first child node of some other element."},{name:":-moz-focusring",browsers:["FF4"],description:"Non-standard. Matches an element that has focus and focus ring drawing is enabled in the browser."},{name:":-moz-full-screen",browsers:["FF9"],description:"Matches any element that has its fullscreen flag set. Standardized as :fullscreen."},{name:":-moz-last-node",browsers:["FF1"],description:"Non-standard. Represents an element that is the last child node of some other element."},{name:":-moz-loading",browsers:["FF3"],description:"Non-standard. Matches elements, such as images, that haven\u2019t started loading yet."},{name:":-moz-only-whitespace",browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:-moz-only-whitespace"}],description:"The same as :empty, except that it additionally matches elements that only contain code points affected by whitespace processing. Standardized as :blank."},{name:":-moz-placeholder",browsers:["FF4"],description:"Deprecated. Represents placeholder text in an input field. Use ::-moz-placeholder for Firefox 19+."},{name:":-moz-submit-invalid",browsers:["FF4"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:-moz-submit-invalid"}],description:"Non-standard. Represents any submit button when the contents of the associated form are not valid."},{name:":-moz-suppressed",browsers:["FF3"],description:"Non-standard. Matches elements representing images that have been blocked from loading."},{name:":-moz-ui-invalid",browsers:["FF4"],description:"Non-standard. Represents any validated form element whose value isn't valid "},{name:":-moz-ui-valid",browsers:["FF4"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:-moz-ui-valid"}],description:"Non-standard. Represents any validated form element whose value is valid "},{name:":-moz-user-disabled",browsers:["FF3"],description:"Non-standard. Matches elements representing images that have been disabled due to the user\u2019s preferences."},{name:":-moz-window-inactive",browsers:["FF4"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:-moz-window-inactive"}],description:"Non-standard. Matches elements in an inactive window."},{name:":-ms-fullscreen",browsers:["IE11"],description:"Matches any element that has its fullscreen flag set."},{name:":-ms-input-placeholder",browsers:["IE10"],description:"Represents placeholder text in an input field. Note: for Edge use the pseudo-element ::-ms-input-placeholder. Standardized as ::placeholder."},{name:":-ms-keyboard-active",browsers:["IE10"],description:"Windows Store apps only. Applies one or more styles to an element when it has focus and the user presses the space bar."},{name:":-ms-lang()",browsers:["E","IE10"],description:"Represents an element that is in the language specified. Accepts a comma separated list of language tokens."},{name:":no-button",browsers:["C","S5"],description:"Non-standard. Applies to track pieces. Applies when there is no button at that end of the track."},{name:":not()",browsers:["E","C","FF1","IE9","O9.5","S2"],description:"The negation pseudo-class, :not(X), is a functional notation taking a simple selector (excluding the negation pseudo-class itself) as an argument. It represents an element that is not represented by its argument."},{name:":nth-child()",browsers:["E","C","FF3.5","IE9","O9.5","S3.1"],description:"Represents an element that has an+b-1 siblings before it in the document tree, for any positive integer or zero value of n, and has a parent element."},{name:":nth-last-child()",browsers:["E","C","FF3.5","IE9","O9.5","S3.1"],description:"Represents an element that has an+b-1 siblings after it in the document tree, for any positive integer or zero value of n, and has a parent element."},{name:":nth-last-of-type()",browsers:["E","C","FF3.5","IE9","O9.5","S3.1"],description:"Represents an element that has an+b-1 siblings with the same expanded element name after it in the document tree, for any zero or positive integer value of n, and has a parent element."},{name:":nth-of-type()",browsers:["E","C","FF3.5","IE9","O9.5","S3.1"],description:"Represents an element that has an+b-1 siblings with the same expanded element name before it in the document tree, for any zero or positive integer value of n, and has a parent element."},{name:":only-child",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:only-child"}],description:"Represents an element that has a parent element and whose parent element has no other element children. Same as :first-child:last-child or :nth-child(1):nth-last-child(1), but with a lower specificity."},{name:":only-of-type",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:only-of-type"}],description:"Matches every element that is the only child of its type, of its parent. Same as :first-of-type:last-of-type or :nth-of-type(1):nth-last-of-type(1), but with a lower specificity."},{name:":optional",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:optional"}],description:"A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional."},{name:":out-of-range",browsers:["E13","FF29","S5.1","C10","O11"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:out-of-range"}],description:"Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes."},{name:":past",browsers:["C","O16","S6"],description:"Represents any element that is defined to occur entirely prior to a :current element."},{name:":read-only",browsers:["E13","FF78","S4","C1","O9"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:read-only"}],description:"An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only."},{name:":read-write",browsers:["E13","FF78","S4","C1","O9"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:read-write"}],description:"An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only."},{name:":required",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:required"}],description:"A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional."},{name:":right",browsers:["E12","S5.1","C6","IE8","O9.2"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:right"}],description:"When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context."},{name:":root",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:root"}],description:"Represents an element that is the root of the document. In HTML 4, this is always the HTML element."},{name:":scope",browsers:["E79","FF32","S7","C27","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:scope"}],description:"Represents any element that is in the contextual reference element set."},{name:":single-button",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed separately at either end of the scrollbar."},{name:":start",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed before the thumb."},{name:":target",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:target"}],description:"Some URIs refer to a location within a resource. This kind of URI ends with a 'number sign' (#) followed by an anchor identifier (called the fragment identifier)."},{name:":valid",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:valid"}],description:"An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification."},{name:":vertical",browsers:["C","S5"],description:"Non-standard. Applies to any scrollbar pieces that have a vertical orientation."},{name:":visited",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:visited"}],description:"Applies once the link has been visited by the user."},{name:":-webkit-any()",browsers:["C","S5"],description:"Represents an element that is represented by the selector list passed as its argument. Standardized as :matches()."},{name:":-webkit-full-screen",browsers:["C","S6"],description:"Matches any element that has its fullscreen flag set. Standardized as :fullscreen."},{name:":window-inactive",browsers:["C","S3"],description:"Non-standard. Applies to all scrollbar pieces. Indicates whether or not the window containing the scrollbar is currently active."},{name:":current",status:"experimental",description:"The :current CSS pseudo-class selector is a time-dimensional pseudo-class that represents the element, or an ancestor of the element, that is currently being displayed"},{name:":blank",status:"experimental",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:blank"}],description:"The :blank CSS pseudo-class selects empty user input elements (eg. <input> or <textarea>)."},{name:":defined",status:"experimental",browsers:["E79","FF63","S10","C54","O41"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:defined"}],description:"The :defined CSS pseudo-class represents any element that has been defined. This includes any standard element built in to the browser, and custom elements that have been successfully defined (i.e. with the CustomElementRegistry.define() method)."},{name:":dir",browsers:["FF49"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:dir"}],description:"The :dir() CSS pseudo-class matches elements based on the directionality of the text contained in them."},{name:":focus-visible",browsers:["E79","FF85","C86","O54"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:focus-visible"}],description:"The :focus-visible pseudo-class applies while an element matches the :focus pseudo-class and the UA determines via heuristics that the focus should be made evident on the element."},{name:":focus-within",browsers:["E79","FF52","S10.1","C60","O47"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:focus-within"}],description:"The :focus-within pseudo-class applies to any element for which the :focus pseudo class applies as well as to an element whose descendant in the flat tree (including non-element nodes, such as text nodes) matches the conditions for matching :focus."},{name:":has",status:"experimental",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:has"}],description:":The :has() CSS pseudo-class represents an element if any of the selectors passed as parameters (relative to the :scope of the given element), match at least one element."},{name:":is",status:"experimental",browsers:["E79","FF78","S14","C68","O55"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:is"}],description:"The :is() CSS pseudo-class function takes a selector list as its argument, and selects any element that can be selected by one of the selectors in that list. This is useful for writing large selectors in a more compact form."},{name:":local-link",status:"experimental",description:"The :local-link CSS pseudo-class represents an link to the same document"},{name:":nth-col",status:"experimental",description:"The :nth-col() CSS pseudo-class is designed for tables and grids. It accepts the An+B notation such as used with the :nth-child selector, using this to target every nth column. "},{name:":nth-last-col",status:"experimental",description:"The :nth-last-col() CSS pseudo-class is designed for tables and grids. It accepts the An+B notation such as used with the :nth-child selector, using this to target every nth column before it, therefore counting back from the end of the set of columns."},{name:":paused",status:"experimental",description:"The :paused CSS pseudo-class selector is a resource state pseudo-class that will match an audio, video, or similar resource that is capable of being \u201cplayed\u201d or \u201cpaused\u201d, when that element is \u201cpaused\u201d."},{name:":placeholder-shown",status:"experimental",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:placeholder-shown"}],description:"The :placeholder-shown CSS pseudo-class represents any <input> or <textarea> element that is currently displaying placeholder text."},{name:":playing",status:"experimental",description:"The :playing CSS pseudo-class selector is a resource state pseudo-class that will match an audio, video, or similar resource that is capable of being \u201cplayed\u201d or \u201cpaused\u201d, when that element is \u201cplaying\u201d. "},{name:":target-within",status:"experimental",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:target-within"}],description:"The :target-within CSS pseudo-class represents an element that is a target element or contains an element that is a target. A target element is a unique element with an id matching the URL's fragment."},{name:":user-invalid",status:"experimental",browsers:["FF4"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:user-invalid"}],description:"The :user-invalid CSS pseudo-class represents any validated form element whose value isn't valid based on their validation constraints, after the user has interacted with it."},{name:":where",status:"experimental",browsers:["FF78","S14","C72"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:where"}],description:"The :where() CSS pseudo-class function takes a selector list as its argument, and selects any element that can be selected by one of the selectors in that list."},{name:":picture-in-picture",status:"experimental",description:"The :picture-in-picture CSS pseudo-class matches the element which is currently in picture-in-picture mode."}],pseudoElements:[{name:"::after",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::after"}],description:"Represents a styleable child pseudo-element immediately after the originating element\u2019s actual content."},{name:"::backdrop",browsers:["E12","FF47","C37","IE11","O24"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::backdrop"}],description:"Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen)."},{name:"::before",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::before"}],description:"Represents a styleable child pseudo-element immediately before the originating element\u2019s actual content."},{name:"::content",browsers:["C35","O22"],description:"Deprecated. Matches the distribution list itself, on elements that have one. Use ::slotted for forward compatibility."},{name:"::cue",browsers:["E79","FF55","S6.1","C26","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::cue"}]},{name:"::cue()",browsers:["C","O16","S6"]},{name:"::cue-region",browsers:["C","O16","S6"]},{name:"::cue-region()",browsers:["C","O16","S6"]},{name:"::first-letter",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::first-letter"}],description:"Represents the first letter of an element, if it is not preceded by any other content (such as images or inline tables) on its line."},{name:"::first-line",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::first-line"}],description:"Describes the contents of the first formatted line of its originating element."},{name:"::-moz-focus-inner",browsers:["FF4"]},{name:"::-moz-focus-outer",browsers:["FF4"]},{name:"::-moz-list-bullet",browsers:["FF1"],description:"Used to style the bullet of a list element. Similar to the standardized ::marker."},{name:"::-moz-list-number",browsers:["FF1"],description:"Used to style the numbers of a list element. Similar to the standardized ::marker."},{name:"::-moz-placeholder",browsers:["FF19"],description:"Represents placeholder text in an input field"},{name:"::-moz-progress-bar",browsers:["FF9"],description:"Represents the bar portion of a progress bar."},{name:"::-moz-selection",browsers:["FF1"],description:"Represents the portion of a document that has been highlighted by the user."},{name:"::-ms-backdrop",browsers:["IE11"],description:"Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen)."},{name:"::-ms-browse",browsers:["E","IE10"],description:"Represents the browse button of an input type=file control."},{name:"::-ms-check",browsers:["E","IE10"],description:"Represents the check of a checkbox or radio button input control."},{name:"::-ms-clear",browsers:["E","IE10"],description:"Represents the clear button of a text input control"},{name:"::-ms-expand",browsers:["E","IE10"],description:"Represents the drop-down button of a select control."},{name:"::-ms-fill",browsers:["E","IE10"],description:"Represents the bar portion of a progress bar."},{name:"::-ms-fill-lower",browsers:["E","IE10"],description:"Represents the portion of the slider track from its smallest value up to the value currently selected by the thumb. In a left-to-right layout, this is the portion of the slider track to the left of the thumb."},{name:"::-ms-fill-upper",browsers:["E","IE10"],description:"Represents the portion of the slider track from the value currently selected by the thumb up to the slider's largest value. In a left-to-right layout, this is the portion of the slider track to the right of the thumb."},{name:"::-ms-reveal",browsers:["E","IE10"],description:"Represents the password reveal button of an input type=password control."},{name:"::-ms-thumb",browsers:["E","IE10"],description:"Represents the portion of range input control (also known as a slider control) that the user drags."},{name:"::-ms-ticks-after",browsers:["E","IE10"],description:"Represents the tick marks of a slider that begin just after the thumb and continue up to the slider's largest value. In a left-to-right layout, these are the ticks to the right of the thumb."},{name:"::-ms-ticks-before",browsers:["E","IE10"],description:"Represents the tick marks of a slider that represent its smallest values up to the value currently selected by the thumb. In a left-to-right layout, these are the ticks to the left of the thumb."},{name:"::-ms-tooltip",browsers:["E","IE10"],description:"Represents the tooltip of a slider (input type=range)."},{name:"::-ms-track",browsers:["E","IE10"],description:"Represents the track of a slider."},{name:"::-ms-value",browsers:["E","IE10"],description:"Represents the content of a text or password input control, or a select control."},{name:"::selection",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::selection"}],description:"Represents the portion of a document that has been highlighted by the user."},{name:"::shadow",browsers:["C35","O22"],description:"Matches the shadow root if an element has a shadow tree."},{name:"::-webkit-file-upload-button",browsers:["C","O","S6"]},{name:"::-webkit-inner-spin-button",browsers:["E79","S5","C6","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-inner-spin-button"}]},{name:"::-webkit-input-placeholder",browsers:["C","S4"]},{name:"::-webkit-keygen-select",browsers:["C","O","S6"]},{name:"::-webkit-meter-bar",browsers:["E79","S5.1","C12","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-bar"}]},{name:"::-webkit-meter-even-less-good-value",browsers:["E79","S5.1","C12","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-even-less-good-value"}]},{name:"::-webkit-meter-optimum-value",browsers:["E79","S5.1","C12","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-optimum-value"}]},{name:"::-webkit-meter-suboptimum-value",browsers:["E79","S5.1","C12","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-suboptimum-value"}]},{name:"::-webkit-outer-spin-button",browsers:["S5","C6"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-outer-spin-button"}]},{name:"::-webkit-progress-bar",browsers:["E79","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-bar"}]},{name:"::-webkit-progress-inner-element",browsers:["E79","S6.1","C23","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-inner-element"}]},{name:"::-webkit-progress-value",browsers:["E79","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-value"}]},{name:"::-webkit-resizer",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar-button",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar-corner",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar-thumb",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar-track",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar-track-piece",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-search-cancel-button",browsers:["E79","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-search-cancel-button"}]},{name:"::-webkit-search-decoration",browsers:["C","S4"]},{name:"::-webkit-search-results-button",browsers:["E79","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-search-results-button"}]},{name:"::-webkit-search-results-decoration",browsers:["C","S4"]},{name:"::-webkit-slider-runnable-track",browsers:["C","O","S6"]},{name:"::-webkit-slider-thumb",browsers:["C","O","S6"]},{name:"::-webkit-textfield-decoration-container",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble-arrow",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble-arrow-clipper",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble-heading",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble-message",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble-text-block",browsers:["C","O","S6"]},{name:"::-moz-range-progress",status:"nonstandard",browsers:["FF22"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-moz-range-progress"}],description:'The ::-moz-range-progress CSS pseudo-element is a Mozilla extension that represents the lower portion of the track (i.e., groove) in which the indicator slides in an <input> of type="range". This portion corresponds to values lower than the value currently selected by the thumb (i.e., virtual knob).'},{name:"::-moz-range-thumb",status:"nonstandard",browsers:["FF21"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-moz-range-thumb"}],description:'The ::-moz-range-thumb CSS pseudo-element is a Mozilla extension that represents the thumb (i.e., virtual knob) of an <input> of type="range". The user can move the thumb along the input\'s track to alter its numerical value.'},{name:"::-moz-range-track",status:"nonstandard",browsers:["FF21"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-moz-range-track"}],description:'The ::-moz-range-track CSS pseudo-element is a Mozilla extension that represents the track (i.e., groove) in which the indicator slides in an <input> of type="range".'},{name:"::-webkit-progress-inner-value",status:"nonstandard",description:"The ::-webkit-progress-value CSS pseudo-element represents the filled-in portion of the bar of a <progress> element. It is a child of the ::-webkit-progress-bar pseudo-element.\n\nIn order to let ::-webkit-progress-value take effect, -webkit-appearance needs to be set to none on the <progress> element."},{name:"::grammar-error",status:"experimental",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::grammar-error"}],description:"The ::grammar-error CSS pseudo-element represents a text segment which the user agent has flagged as grammatically incorrect."},{name:"::marker",browsers:["E86","FF68","S11.1","C86"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::marker"}],description:"The ::marker CSS pseudo-element selects the marker box of a list item, which typically contains a bullet or number. It works on any element or pseudo-element set to display: list-item, such as the <li> and <summary> elements."},{name:"::part",status:"experimental",browsers:["E79","FF72","S13.1","C73","O60"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::part"}],description:"The ::part CSS pseudo-element represents any element within a shadow tree that has a matching part attribute."},{name:"::placeholder",browsers:["E12","FF51","S10.1","C57","O44"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::placeholder"}],description:"The ::placeholder CSS pseudo-element represents the placeholder text of a form element."},{name:"::slotted",browsers:["E79","FF63","S10","C50","O37"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::slotted"}],description:"The :slotted() CSS pseudo-element represents any element that has been placed into a slot inside an HTML template."},{name:"::spelling-error",status:"experimental",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::spelling-error"}],description:"The ::spelling-error CSS pseudo-element represents a text segment which the user agent has flagged as incorrectly spelled."}]},Oo=function(){function e(e){this._properties=[],this._atDirectives=[],this._pseudoClasses=[],this._pseudoElements=[],this.addData(e)}return e.prototype.provideProperties=function(){return this._properties},e.prototype.provideAtDirectives=function(){return this._atDirectives},e.prototype.providePseudoClasses=function(){return this._pseudoClasses},e.prototype.providePseudoElements=function(){return this._pseudoElements},e.prototype.addData=function(e){if(Array.isArray(e.properties))for(var t=0,n=e.properties;t<n.length;t++){var r=n[t];"string"===typeof r.name&&this._properties.push(r)}if(Array.isArray(e.atDirectives))for(var i=0,o=e.atDirectives;i<o.length;i++){Wo(r=o[i])&&this._atDirectives.push(r)}if(Array.isArray(e.pseudoClasses))for(var s=0,a=e.pseudoClasses;s<a.length;s++){Lo(r=a[s])&&this._pseudoClasses.push(r)}if(Array.isArray(e.pseudoElements))for(var l=0,c=e.pseudoElements;l<c.length;l++){jo(r=c[l])&&this._pseudoElements.push(r)}},e}();function Wo(e){return"string"===typeof e.name}function Lo(e){return"string"===typeof e.name}function jo(e){return"string"===typeof e.name}!function(){function e(e){this.dataProviders=[],this._propertySet={},this._atDirectiveSet={},this._pseudoClassSet={},this._pseudoElementSet={},this._properties=[],this._atDirectives=[],this._pseudoClasses=[],this._pseudoElements=[],this.setDataProviders(!1!==(null===e||void 0===e?void 0:e.useDefaultDataProvider),(null===e||void 0===e?void 0:e.customDataProviders)||[])}e.prototype.setDataProviders=function(e,t){var n;this.dataProviders=[],e&&this.dataProviders.push(new Oo(Ao)),(n=this.dataProviders).push.apply(n,t),this.collectData()},e.prototype.collectData=function(){var e=this;this._propertySet={},this._atDirectiveSet={},this._pseudoClassSet={},this._pseudoElementSet={},this.dataProviders.forEach((function(t){t.provideProperties().forEach((function(t){e._propertySet[t.name]||(e._propertySet[t.name]=t)})),t.provideAtDirectives().forEach((function(t){e._atDirectiveSet[t.name]||(e._atDirectiveSet[t.name]=t)})),t.providePseudoClasses().forEach((function(t){e._pseudoClassSet[t.name]||(e._pseudoClassSet[t.name]=t)})),t.providePseudoElements().forEach((function(t){e._pseudoElementSet[t.name]||(e._pseudoElementSet[t.name]=t)}))})),this._properties=sn(this._propertySet),this._atDirectives=sn(this._atDirectiveSet),this._pseudoClasses=sn(this._pseudoClassSet),this._pseudoElements=sn(this._pseudoElementSet)},e.prototype.getProperty=function(e){return this._propertySet[e]},e.prototype.getAtDirective=function(e){return this._atDirectiveSet[e]},e.prototype.getPseudoClass=function(e){return this._pseudoClassSet[e]},e.prototype.getPseudoElement=function(e){return this._pseudoElementSet[e]},e.prototype.getProperties=function(){return this._properties},e.prototype.getAtDirectives=function(){return this._atDirectives},e.prototype.getPseudoClasses=function(){return this._pseudoClasses},e.prototype.getPseudoElements=function(){return this._pseudoElements},e.prototype.isKnownProperty=function(e){return e.toLowerCase()in this._propertySet},e.prototype.isStandardProperty=function(e){return this.isKnownProperty(e)&&(!this._propertySet[e.toLowerCase()].status||"standard"===this._propertySet[e.toLowerCase()].status)}}();var Uo=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Vo=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{l(r.next(e))}catch(t){o(t)}}function a(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))},Bo=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(a){o=[6,a],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}};!function(e){function t(t){return e.call(this,t)||this}Uo(t,e),t.prototype.isRawStringDocumentLinkNode=function(t){return e.prototype.isRawStringDocumentLinkNode.call(this,t)||t.type===ee.Use||t.type===ee.Forward},t.prototype.resolveRelativeReference=function(t,n,r){return Vo(this,void 0,void 0,(function(){var i,o,s,a;return Bo(this,(function(l){switch(l.label){case 0:return Y(t,"sass:")?[2,void 0]:[4,e.prototype.resolveRelativeReference.call(this,t,n,r)];case 1:if(i=l.sent(),!this.fileSystemProvider||!i)return[3,8];if(!(o=_r.parse(i)).path||0!==Nr.extname(o).length)return[3,8];l.label=2;case 2:if(l.trys.push([2,7,,8]),!(s=function(e){if(""!==e.path&&!e.path.endsWith(".scss")&&!e.path.endsWith(".css")){if(e.path.endsWith("/"))return[e.with({path:e.path+"index.scss"}).toString(),e.with({path:e.path+"_index.scss"}).toString()];var t=e.path.split("/"),n=t[t.length-1],r=e.path.slice(0,-n.length);if(n.startsWith("_"))return e.path.endsWith(".scss")?void 0:[e.with({path:e.path+".scss"}).toString()];var i=n+".scss",o=function(t){return e.with({path:r+t}).toString()};return[o(i),o("_"+i),o(i.slice(0,-5)+"/index.scss"),o(i.slice(0,-5)+"/_index.scss"),o(i.slice(0,-5)+".css")]}}(o)))return[3,6];a=0,l.label=3;case 3:return a<s.length?[4,this.fileExists(s[a])]:[3,6];case 4:if(l.sent())return[2,s[a]];l.label=5;case 5:return a++,[3,3];case 6:return[2,void 0];case 7:return l.sent(),[3,8];case 8:return[2,i]}}))}))}}(wi);var $o=function(){function e(e,t,n){var r=this;this._languageId=e,this._worker=t,this._disposables=[],this._listener=Object.create(null);var o=function(e){var t,n=e.getModeId();n===r._languageId&&(r._listener[e.uri.toString()]=e.onDidChangeContent((function(){window.clearTimeout(t),t=window.setTimeout((function(){return r._doValidate(e.uri,n)}),500)})),r._doValidate(e.uri,n))},s=function(e){i.j6.setModelMarkers(e,r._languageId,[]);var t=e.uri.toString(),n=r._listener[t];n&&(n.dispose(),delete r._listener[t])};this._disposables.push(i.j6.onDidCreateModel(o)),this._disposables.push(i.j6.onWillDisposeModel(s)),this._disposables.push(i.j6.onDidChangeModelLanguage((function(e){s(e.model),o(e.model)}))),n.onDidChange((function(e){i.j6.getModels().forEach((function(e){e.getModeId()===r._languageId&&(s(e),o(e))}))})),this._disposables.push({dispose:function(){for(var e in r._listener)r._listener[e].dispose()}}),i.j6.getModels().forEach(o)}return e.prototype.dispose=function(){this._disposables.forEach((function(e){return e&&e.dispose()})),this._disposables=[]},e.prototype._doValidate=function(e,t){this._worker(e).then((function(t){return t.doValidation(e.toString())})).then((function(n){var r=n.map((function(e){return function(e,t){var n="number"===typeof t.code?String(t.code):t.code;return{severity:qo(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:n,source:t.source}}(0,e)})),o=i.j6.getModel(e);o&&o.getModeId()===t&&i.j6.setModelMarkers(o,t,r)})).then(void 0,(function(e){console.error(e)}))},e}();function qo(e){switch(e){case kn.Error:return i.ZL.Error;case kn.Warning:return i.ZL.Warning;case kn.Information:return i.ZL.Info;case kn.Hint:return i.ZL.Hint;default:return i.ZL.Info}}function Ko(e){if(e)return{character:e.column-1,line:e.lineNumber-1}}function Go(e){if(e)return new i.e6(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function Jo(e){var t=i.Mj.CompletionItemKind;switch(e){case Hn.Text:return t.Text;case Hn.Method:return t.Method;case Hn.Function:return t.Function;case Hn.Constructor:return t.Constructor;case Hn.Field:return t.Field;case Hn.Variable:return t.Variable;case Hn.Class:return t.Class;case Hn.Interface:return t.Interface;case Hn.Module:return t.Module;case Hn.Property:return t.Property;case Hn.Unit:return t.Unit;case Hn.Value:return t.Value;case Hn.Enum:return t.Enum;case Hn.Keyword:return t.Keyword;case Hn.Snippet:return t.Snippet;case Hn.Color:return t.Color;case Hn.File:return t.File;case Hn.Reference:return t.Reference}return t.Property}function Ho(e){if(e)return{range:Go(e.range),text:e.newText}}var Xo=function(){function e(e){this._worker=e}return Object.defineProperty(e.prototype,"triggerCharacters",{get:function(){return[" ",":"]},enumerable:!1,configurable:!0}),e.prototype.provideCompletionItems=function(e,t,n,r){var o=e.uri;return this._worker(o).then((function(e){return e.doComplete(o.toString(),Ko(t))})).then((function(n){if(n){var r=e.getWordUntilPosition(t),o=new i.e6(t.lineNumber,r.startColumn,t.lineNumber,r.endColumn),s=n.items.map((function(e){var t,n={label:e.label,insertText:e.insertText||e.label,sortText:e.sortText,filterText:e.filterText,documentation:e.documentation,detail:e.detail,range:o,kind:Jo(e.kind)};return e.textEdit&&("undefined"!==typeof(t=e.textEdit).insert&&"undefined"!==typeof t.replace?n.range={insert:Go(e.textEdit.insert),replace:Go(e.textEdit.replace)}:n.range=Go(e.textEdit.range),n.insertText=e.textEdit.newText),e.additionalTextEdits&&(n.additionalTextEdits=e.additionalTextEdits.map(Ho)),e.insertTextFormat===Xn.Snippet&&(n.insertTextRules=i.Mj.CompletionItemInsertTextRule.InsertAsSnippet),n}));return{isIncomplete:n.isIncomplete,suggestions:s}}}))},e}();function Yo(e){return"string"===typeof e?{value:e}:(t=e)&&"object"===typeof t&&"string"===typeof t.kind?"plaintext"===e.kind?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:e.value}:{value:"```"+e.language+"\n"+e.value+"\n```\n"};var t}function Zo(e){if(e)return Array.isArray(e)?e.map(Yo):[Yo(e)]}var Qo=function(){function e(e){this._worker=e}return e.prototype.provideHover=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.doHover(r.toString(),Ko(t))})).then((function(e){if(e)return{range:Go(e.range),contents:Zo(e.contents)}}))},e}();function es(e){switch(e){case sr.Read:return i.Mj.DocumentHighlightKind.Read;case sr.Write:return i.Mj.DocumentHighlightKind.Write;case sr.Text:return i.Mj.DocumentHighlightKind.Text}return i.Mj.DocumentHighlightKind.Text}var ts=function(){function e(e){this._worker=e}return e.prototype.provideDocumentHighlights=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.findDocumentHighlights(r.toString(),Ko(t))})).then((function(e){if(e)return e.map((function(e){return{range:Go(e.range),kind:es(e.kind)}}))}))},e}();function ns(e){return{uri:i.Sf.parse(e.uri),range:Go(e.range)}}var rs=function(){function e(e){this._worker=e}return e.prototype.provideDefinition=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.findDefinition(r.toString(),Ko(t))})).then((function(e){if(e)return[ns(e)]}))},e}(),is=function(){function e(e){this._worker=e}return e.prototype.provideReferences=function(e,t,n,r){var i=e.uri;return this._worker(i).then((function(e){return e.findReferences(i.toString(),Ko(t))})).then((function(e){if(e)return e.map(ns)}))},e}();var os=function(){function e(e){this._worker=e}return e.prototype.provideRenameEdits=function(e,t,n,r){var o=e.uri;return this._worker(o).then((function(e){return e.doRename(o.toString(),Ko(t),n)})).then((function(e){return function(e){if(e&&e.changes){var t=[];for(var n in e.changes)for(var r=i.Sf.parse(n),o=0,s=e.changes[n];o<s.length;o++){var a=s[o];t.push({resource:r,edit:{range:Go(a.range),text:a.newText}})}return{edits:t}}}(e)}))},e}();function ss(e){var t=i.Mj.SymbolKind;switch(e){case lr.File:return t.Array;case lr.Module:return t.Module;case lr.Namespace:return t.Namespace;case lr.Package:return t.Package;case lr.Class:return t.Class;case lr.Method:return t.Method;case lr.Property:return t.Property;case lr.Field:return t.Field;case lr.Constructor:return t.Constructor;case lr.Enum:return t.Enum;case lr.Interface:return t.Interface;case lr.Function:return t.Function;case lr.Variable:return t.Variable;case lr.Constant:return t.Constant;case lr.String:return t.String;case lr.Number:return t.Number;case lr.Boolean:return t.Boolean;case lr.Array:return t.Array}return t.Function}var as=function(){function e(e){this._worker=e}return e.prototype.provideDocumentSymbols=function(e,t){var n=e.uri;return this._worker(n).then((function(e){return e.findDocumentSymbols(n.toString())})).then((function(e){if(e)return e.map((function(e){return{name:e.name,detail:"",containerName:e.containerName,kind:ss(e.kind),tags:[],range:Go(e.location.range),selectionRange:Go(e.location.range)}}))}))},e}(),ls=function(){function e(e){this._worker=e}return e.prototype.provideDocumentColors=function(e,t){var n=e.uri;return this._worker(n).then((function(e){return e.findDocumentColors(n.toString())})).then((function(e){if(e)return e.map((function(e){return{color:e.color,range:Go(e.range)}}))}))},e.prototype.provideColorPresentations=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.getColorPresentations(r.toString(),t.color,function(e){if(e)return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}(t.range))})).then((function(e){if(e)return e.map((function(e){var t={label:e.label};return e.textEdit&&(t.textEdit=Ho(e.textEdit)),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map(Ho)),t}))}))},e}(),cs=function(){function e(e){this._worker=e}return e.prototype.provideFoldingRanges=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.getFoldingRanges(r.toString(),t)})).then((function(e){if(e)return e.map((function(e){var t={start:e.startLine+1,end:e.endLine+1};return"undefined"!==typeof e.kind&&(t.kind=function(e){switch(e){case wn.Comment:return i.Mj.FoldingRangeKind.Comment;case wn.Imports:return i.Mj.FoldingRangeKind.Imports;case wn.Region:return i.Mj.FoldingRangeKind.Region}}(e.kind)),t}))}))},e}();var ds=function(){function e(e){this._worker=e}return e.prototype.provideSelectionRanges=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.getSelectionRanges(r.toString(),t.map(Ko))})).then((function(e){if(e)return e.map((function(e){for(var t=[];e;)t.push({range:Go(e.range)}),e=e.parent;return t}))}))},e}();function ps(e){var t=[],n=[],r=new o(e);t.push(r);var s=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return r.getLanguageServiceWorker.apply(r,e)};return function(){var t=e.languageId,r=e.modeConfiguration;ms(n),r.completionItems&&n.push(i.Mj.registerCompletionItemProvider(t,new Xo(s))),r.hovers&&n.push(i.Mj.registerHoverProvider(t,new Qo(s))),r.documentHighlights&&n.push(i.Mj.registerDocumentHighlightProvider(t,new ts(s))),r.definitions&&n.push(i.Mj.registerDefinitionProvider(t,new rs(s))),r.references&&n.push(i.Mj.registerReferenceProvider(t,new is(s))),r.documentSymbols&&n.push(i.Mj.registerDocumentSymbolProvider(t,new as(s))),r.rename&&n.push(i.Mj.registerRenameProvider(t,new os(s))),r.colors&&n.push(i.Mj.registerColorProvider(t,new ls(s))),r.foldingRanges&&n.push(i.Mj.registerFoldingRangeProvider(t,new cs(s))),r.diagnostics&&n.push(new $o(t,s,e)),r.selectionRanges&&n.push(i.Mj.registerSelectionRangeProvider(t,new ds(s)))}(),t.push(hs(n)),hs(t)}function hs(e){return{dispose:function(){return ms(e)}}}function ms(e){for(;e.length;)e.pop().dispose()}}}]); -//# sourceMappingURL=6060.eb821066.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6065.b08e9640.chunk.js b/ydb/core/viewer/monitoring/static/js/6065.b08e9640.chunk.js new file mode 100644 index 000000000000..35f6e65410f6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6065.b08e9640.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6065],{16065:function(e,_,n){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=_(e),t={name:"tk",weekdays:"\xddek\u015fenbe_Du\u015fenbe_Si\u015fenbe_\xc7ar\u015fenbe_Pen\u015fenbe_Anna_\u015eenbe".split("_"),weekdaysShort:"\xddek_Du\u015f_Si\u015f_\xc7ar_Pen_Ann_\u015een".split("_"),weekdaysMin:"\xddk_D\u015f_S\u015f_\xc7r_Pn_An_\u015en".split("_"),months:"\xddanwar_Fewral_Mart_Aprel_Ma\xfd_I\xfdun_I\xfdul_Awgust_Sent\xfdabr_Okt\xfdabr_No\xfdabr_Dekabr".split("_"),monthsShort:"\xddan_Few_Mar_Apr_Ma\xfd_I\xfdn_I\xfdl_Awg_Sen_Okt_No\xfd_Dek".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s so\u0148",past:"%s \xf6\u0148",s:"birn\xe4\xe7e sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir a\xfd",MM:"%d a\xfd",y:"bir \xfdyl",yy:"%d \xfdyl"},ordinal:function(e){return e+"."}};return n.default.locale(t,null,!0),t}(n(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6135.e49ec940.chunk.js b/ydb/core/viewer/monitoring/static/js/6135.e49ec940.chunk.js deleted file mode 100644 index 7c946f848488..000000000000 --- a/ydb/core/viewer/monitoring/static/js/6135.e49ec940.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6135,698],{6135:function(e,t,n){n.r(t),n.d(t,{conf:function(){return i},language:function(){return r}});var o=n(90698),i=o.conf,r={defaultToken:"invalid",tokenPostfix:".js",keywords:["break","case","catch","class","continue","const","constructor","debugger","default","delete","do","else","export","extends","false","finally","for","from","function","get","if","import","in","instanceof","let","new","null","return","set","super","switch","symbol","this","throw","true","try","typeof","undefined","var","void","while","with","yield","async","await","of"],typeKeywords:[],operators:o.language.operators,symbols:o.language.symbols,escapes:o.language.escapes,digits:o.language.digits,octaldigits:o.language.octaldigits,binarydigits:o.language.binarydigits,hexdigits:o.language.hexdigits,regexpctl:o.language.regexpctl,regexpesc:o.language.regexpesc,tokenizer:o.language.tokenizer}},90698:function(e,t,n){n.r(t),n.d(t,{conf:function(){return i},language:function(){return r}});var o=n(37456),i={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],onEnterRules:[{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,afterText:/^\s*\*\/$/,action:{indentAction:o.Mj.IndentAction.IndentOutdent,appendText:" * "}},{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,action:{indentAction:o.Mj.IndentAction.None,appendText:" * "}},{beforeText:/^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,action:{indentAction:o.Mj.IndentAction.None,appendText:"* "}},{beforeText:/^(\t|(\ \ ))*\ \*\/\s*$/,action:{indentAction:o.Mj.IndentAction.None,removeText:1}}],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"`",close:"`",notIn:["string","comment"]},{open:"/**",close:" */",notIn:["string"]}],folding:{markers:{start:new RegExp("^\\s*//\\s*#?region\\b"),end:new RegExp("^\\s*//\\s*#?endregion\\b")}}},r={defaultToken:"invalid",tokenPostfix:".ts",keywords:["abstract","any","as","asserts","bigint","boolean","break","case","catch","class","continue","const","constructor","debugger","declare","default","delete","do","else","enum","export","extends","false","finally","for","from","function","get","if","implements","import","in","infer","instanceof","interface","is","keyof","let","module","namespace","never","new","null","number","object","package","private","protected","public","readonly","require","global","return","set","static","string","super","switch","symbol","this","throw","true","try","type","typeof","undefined","unique","unknown","var","void","while","with","yield","async","await","of"],operators:["<=",">=","==","!=","===","!==","=>","+","-","**","*","/","%","++","--","<<","</",">>",">>>","&","|","^","!","~","&&","||","??","?",":","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=","@"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,"delimiter.bracket"],{include:"common"}],common:[[/[a-z_$][\w$]*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[A-Z][\w\$]*/,"type.identifier"],{include:"@whitespace"},[/\/(?=([^\\\/]|\\.)+\/([gimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,{token:"regexp",bracket:"@open",next:"@regexp"}],[/[()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/!(?=([^=]|$))/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/(@digits)[eE]([\-+]?(@digits))?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,"number.float"],[/0[xX](@hexdigits)n?/,"number.hex"],[/0[oO]?(@octaldigits)n?/,"number.octal"],[/0[bB](@binarydigits)n?/,"number.binary"],[/(@digits)n?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"],[/`/,"string","@string_backtick"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@jsdoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],jsdoc:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,["regexp.escape.control","regexp.escape.control","regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,["regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?:|\?=|\?!)/,["regexp.escape.control","regexp.escape.control"]],[/[()]/,"regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/[^\\\/]/,"regexp"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/(\/)([gimsuy]*)/,[{token:"regexp",bracket:"@close",next:"@pop"},"keyword.other"]]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,{token:"regexp.escape.control",next:"@pop",bracket:"@close"}]],string_double:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],string_single:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"]],string_backtick:[[/\$\{/,{token:"delimiter.bracket",next:"@bracketCounting"}],[/[^\\`$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/`/,"string","@pop"]],bracketCounting:[[/\{/,"delimiter.bracket","@bracketCounting"],[/\}/,"delimiter.bracket","@pop"],{include:"common"}]}}}}]); -//# sourceMappingURL=6135.e49ec940.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6142.b2452554.chunk.js b/ydb/core/viewer/monitoring/static/js/6142.b2452554.chunk.js new file mode 100644 index 000000000000..2da51f2b1973 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6142.b2452554.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6142.b2452554.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6142],{26142:(e,o,n)=>{n.r(o),n.d(o,{conf:()=>s,language:()=>t});var s={comments:{blockComment:["/*","*/"],lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string"]},{open:"[",close:"]",notIn:["string"]},{open:"(",close:")",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}]},t={defaultToken:"",tokenPostfix:".flow",keywords:["import","require","export","forbid","native","if","else","cast","unsafe","switch","default"],types:["io","mutable","bool","int","double","string","flow","void","ref","true","false","with"],operators:["=",">","<","<=",">=","==","!","!=",":=","::=","&&","||","+","-","*","/","@","&","%",":","->","\\","$","??","^"],symbols:/[@$=><!~?:&|+\-*\\\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":"keyword","@types":"type","@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"delimiter"],[/[<>](?!@symbols)/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6142.b2452554.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6142.b2452554.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6142.b2452554.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6144.e1568f26.chunk.js b/ydb/core/viewer/monitoring/static/js/6144.e1568f26.chunk.js new file mode 100644 index 000000000000..28a6a21c39c6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6144.e1568f26.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6144],{36144:function(a,s,n){a.exports=function(a){"use strict";function s(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var n=s(a),_={name:"tzm-latn",weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekStart:6,weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"}};return n.default.locale(_,null,!0),_}(n(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6156.0c562627.chunk.js b/ydb/core/viewer/monitoring/static/js/6156.0c562627.chunk.js new file mode 100644 index 000000000000..70c9d019399e --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6156.0c562627.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6156],{26156:function(e,t,i){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=t(e);function a(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function _(e,t,i){var _=e+" ";switch(i){case"m":return t?"minuta":"minut\u0119";case"mm":return _+(a(e)?"minuty":"minut");case"h":return t?"godzina":"godzin\u0119";case"hh":return _+(a(e)?"godziny":"godzin");case"MM":return _+(a(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return _+(a(e)?"lata":"lat")}}var n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_"),r="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),s=/D MMMM/,u=function(e,t){return s.test(t)?n[e.month()]:r[e.month()]};u.s=r,u.f=n;var d={name:"pl",weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),months:u,monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:_,mm:_,h:_,hh:_,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:_,y:"rok",yy:_},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return i.default.locale(d,null,!0),d}(i(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/619.f27ddcbd.chunk.js b/ydb/core/viewer/monitoring/static/js/619.f27ddcbd.chunk.js new file mode 100644 index 000000000000..15609a48edbe --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/619.f27ddcbd.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 619.f27ddcbd.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[619],{41612:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>i,language:()=>o});var i={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}]},o={tokenPostfix:".pats",defaultToken:"invalid",keywords:["abstype","abst0ype","absprop","absview","absvtype","absviewtype","absvt0ype","absviewt0ype","as","and","assume","begin","classdec","datasort","datatype","dataprop","dataview","datavtype","dataviewtype","do","end","extern","extype","extvar","exception","fn","fnx","fun","prfn","prfun","praxi","castfn","if","then","else","ifcase","in","infix","infixl","infixr","prefix","postfix","implmnt","implement","primplmnt","primplement","import","let","local","macdef","macrodef","nonfix","symelim","symintr","overload","of","op","rec","sif","scase","sortdef","sta","stacst","stadef","static","staload","dynload","try","tkindef","typedef","propdef","viewdef","vtypedef","viewtypedef","prval","var","prvar","when","where","with","withtype","withprop","withview","withvtype","withviewtype"],keywords_dlr:["$delay","$ldelay","$arrpsz","$arrptrsize","$d2ctype","$effmask","$effmask_ntm","$effmask_exn","$effmask_ref","$effmask_wrt","$effmask_all","$extern","$extkind","$extype","$extype_struct","$extval","$extfcall","$extmcall","$literal","$myfilename","$mylocation","$myfunction","$lst","$lst_t","$lst_vt","$list","$list_t","$list_vt","$rec","$rec_t","$rec_vt","$record","$record_t","$record_vt","$tup","$tup_t","$tup_vt","$tuple","$tuple_t","$tuple_vt","$break","$continue","$raise","$showtype","$vcopyenv_v","$vcopyenv_vt","$tempenver","$solver_assert","$solver_verify"],keywords_srp:["#if","#ifdef","#ifndef","#then","#elif","#elifdef","#elifndef","#else","#endif","#error","#prerr","#print","#assert","#undef","#define","#include","#require","#pragma","#codegen2","#codegen3"],irregular_keyword_list:["val+","val-","val","case+","case-","case","addr@","addr","fold@","free@","fix@","fix","lam@","lam","llam@","llam","viewt@ype+","viewt@ype-","viewt@ype","viewtype+","viewtype-","viewtype","view+","view-","view@","view","type+","type-","type","vtype+","vtype-","vtype","vt@ype+","vt@ype-","vt@ype","viewt@ype+","viewt@ype-","viewt@ype","viewtype+","viewtype-","viewtype","prop+","prop-","prop","type+","type-","type","t@ype","t@ype+","t@ype-","abst@ype","abstype","absviewt@ype","absvt@ype","for*","for","while*","while"],keywords_types:["bool","double","byte","int","short","char","void","unit","long","float","string","strptr"],keywords_effects:["0","fun","clo","prf","funclo","cloptr","cloref","ref","ntm","1"],operators:["@","!","|","`",":","$",".","=","#","~","..","...","=>","=<>","=/=>","=>>","=/=>>","<",">","><",".<",">.",".<>.","->","-<>"],brackets:[{open:",(",close:")",token:"delimiter.parenthesis"},{open:"`(",close:")",token:"delimiter.parenthesis"},{open:"%(",close:")",token:"delimiter.parenthesis"},{open:"'(",close:")",token:"delimiter.parenthesis"},{open:"'{",close:"}",token:"delimiter.parenthesis"},{open:"@(",close:")",token:"delimiter.parenthesis"},{open:"@{",close:"}",token:"delimiter.brace"},{open:"@[",close:"]",token:"delimiter.square"},{open:"#[",close:"]",token:"delimiter.square"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],symbols:/[=><!~?:&|+\-*\/\^%]+/,IDENTFST:/[a-zA-Z_]/,IDENTRST:/[a-zA-Z0-9_'$]/,symbolic:/[%&+-./:=@~`^|*!$#?<>]/,digit:/[0-9]/,digitseq0:/@digit*/,xdigit:/[0-9A-Za-z]/,xdigitseq0:/@xdigit*/,INTSP:/[lLuU]/,FLOATSP:/[fFlL]/,fexponent:/[eE][+-]?[0-9]+/,fexponent_bin:/[pP][+-]?[0-9]+/,deciexp:/\.[0-9]*@fexponent?/,hexiexp:/\.[0-9a-zA-Z]*@fexponent_bin?/,irregular_keywords:/val[+-]?|case[+-]?|addr\@?|fold\@|free\@|fix\@?|lam\@?|llam\@?|prop[+-]?|type[+-]?|view[+-@]?|viewt@?ype[+-]?|t@?ype[+-]?|v(iew)?t@?ype[+-]?|abst@?ype|absv(iew)?t@?ype|for\*?|while\*?/,ESCHAR:/[ntvbrfa\\\?'"\(\[\{]/,start:"root",tokenizer:{root:[{regex:/[ \t\r\n]+/,action:{token:""}},{regex:/\(\*\)/,action:{token:"invalid"}},{regex:/\(\*/,action:{token:"comment",next:"lexing_COMMENT_block_ml"}},{regex:/\(/,action:"@brackets"},{regex:/\)/,action:"@brackets"},{regex:/\[/,action:"@brackets"},{regex:/\]/,action:"@brackets"},{regex:/\{/,action:"@brackets"},{regex:/\}/,action:"@brackets"},{regex:/,\(/,action:"@brackets"},{regex:/,/,action:{token:"delimiter.comma"}},{regex:/;/,action:{token:"delimiter.semicolon"}},{regex:/@\(/,action:"@brackets"},{regex:/@\[/,action:"@brackets"},{regex:/@\{/,action:"@brackets"},{regex:/:</,action:{token:"keyword",next:"@lexing_EFFECT_commaseq0"}},{regex:/\.@symbolic+/,action:{token:"identifier.sym"}},{regex:/\.@digit*@fexponent@FLOATSP*/,action:{token:"number.float"}},{regex:/\.@digit+/,action:{token:"number.float"}},{regex:/\$@IDENTFST@IDENTRST*/,action:{cases:{"@keywords_dlr":{token:"keyword.dlr"},"@default":{token:"namespace"}}}},{regex:/\#@IDENTFST@IDENTRST*/,action:{cases:{"@keywords_srp":{token:"keyword.srp"},"@default":{token:"identifier"}}}},{regex:/%\(/,action:{token:"delimiter.parenthesis"}},{regex:/^%{(#|\^|\$)?/,action:{token:"keyword",next:"@lexing_EXTCODE",nextEmbedded:"text/javascript"}},{regex:/^%}/,action:{token:"keyword"}},{regex:/'\(/,action:{token:"delimiter.parenthesis"}},{regex:/'\[/,action:{token:"delimiter.bracket"}},{regex:/'\{/,action:{token:"delimiter.brace"}},[/(')(\\@ESCHAR|\\[xX]@xdigit+|\\@digit+)(')/,["string","string.escape","string"]],[/'[^\\']'/,"string"],[/"/,"string.quote","@lexing_DQUOTE"],{regex:/`\(/,action:"@brackets"},{regex:/\\/,action:{token:"punctuation"}},{regex:/@irregular_keywords(?!@IDENTRST)/,action:{token:"keyword"}},{regex:/@IDENTFST@IDENTRST*[<!\[]?/,action:{cases:{"@keywords":{token:"keyword"},"@keywords_types":{token:"type"},"@default":{token:"identifier"}}}},{regex:/\/\/\/\//,action:{token:"comment",next:"@lexing_COMMENT_rest"}},{regex:/\/\/.*$/,action:{token:"comment"}},{regex:/\/\*/,action:{token:"comment",next:"@lexing_COMMENT_block_c"}},{regex:/-<|=</,action:{token:"keyword",next:"@lexing_EFFECT_commaseq0"}},{regex:/@symbolic+/,action:{cases:{"@operators":"keyword","@default":"operator"}}},{regex:/0[xX]@xdigit+(@hexiexp|@fexponent_bin)@FLOATSP*/,action:{token:"number.float"}},{regex:/0[xX]@xdigit+@INTSP*/,action:{token:"number.hex"}},{regex:/0[0-7]+(?![0-9])@INTSP*/,action:{token:"number.octal"}},{regex:/@digit+(@fexponent|@deciexp)@FLOATSP*/,action:{token:"number.float"}},{regex:/@digit@digitseq0@INTSP*/,action:{token:"number.decimal"}},{regex:/@digit+@INTSP*/,action:{token:"number"}}],lexing_COMMENT_block_ml:[[/[^\(\*]+/,"comment"],[/\(\*/,"comment","@push"],[/\(\*/,"comment.invalid"],[/\*\)/,"comment","@pop"],[/\*/,"comment"]],lexing_COMMENT_block_c:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],lexing_COMMENT_rest:[[/$/,"comment","@pop"],[/.*/,"comment"]],lexing_EFFECT_commaseq0:[{regex:/@IDENTFST@IDENTRST+|@digit+/,action:{cases:{"@keywords_effects":{token:"type.effect"},"@default":{token:"identifier"}}}},{regex:/,/,action:{token:"punctuation"}},{regex:/>/,action:{token:"@rematch",next:"@pop"}}],lexing_EXTCODE:[{regex:/^%}/,action:{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}},{regex:/[^%]+/,action:""}],lexing_DQUOTE:[{regex:/"/,action:{token:"string.quote",next:"@pop"}},{regex:/(\{\$)(@IDENTFST@IDENTRST*)(\})/,action:[{token:"string.escape"},{token:"identifier"},{token:"string.escape"}]},{regex:/\\$/,action:{token:"string.escape"}},{regex:/\\(@ESCHAR|[xX]@xdigit+|@digit+)/,action:{token:"string.escape"}},{regex:/[^\\"]+/,action:{token:"string"}}]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/619.f27ddcbd.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/619.f27ddcbd.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/619.f27ddcbd.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/620.7aea5425.chunk.js b/ydb/core/viewer/monitoring/static/js/620.7aea5425.chunk.js new file mode 100644 index 000000000000..3459c7a1f78a --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/620.7aea5425.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[620],{20620:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-tn",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekStart:1,weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6227.fc562bbf.chunk.js b/ydb/core/viewer/monitoring/static/js/6227.fc562bbf.chunk.js new file mode 100644 index 000000000000..1b5ac7f6399f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6227.fc562bbf.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6227],{36227:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ml",weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6230.8e64216a.chunk.js b/ydb/core/viewer/monitoring/static/js/6230.8e64216a.chunk.js new file mode 100644 index 000000000000..98f549e1c360 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6230.8e64216a.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6230.8e64216a.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6230],{16230:(e,t,s)=>{s.r(t),s.d(t,{conf:()=>o,language:()=>i});var o={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))"),end:new RegExp("^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))")}}},n=[];["abstract","activate","and","any","array","as","asc","assert","autonomous","begin","bigdecimal","blob","boolean","break","bulk","by","case","cast","catch","char","class","collect","commit","const","continue","convertcurrency","decimal","default","delete","desc","do","double","else","end","enum","exception","exit","export","extends","false","final","finally","float","for","from","future","get","global","goto","group","having","hint","if","implements","import","in","inner","insert","instanceof","int","interface","into","join","last_90_days","last_month","last_n_days","last_week","like","limit","list","long","loop","map","merge","native","new","next_90_days","next_month","next_n_days","next_week","not","null","nulls","number","object","of","on","or","outer","override","package","parallel","pragma","private","protected","public","retrieve","return","returning","rollback","savepoint","search","select","set","short","sort","stat","static","strictfp","super","switch","synchronized","system","testmethod","then","this","this_month","this_week","throw","throws","today","tolabel","tomorrow","transaction","transient","trigger","true","try","type","undelete","update","upsert","using","virtual","void","volatile","webservice","when","where","while","yesterday"].forEach((e=>{n.push(e),n.push(e.toUpperCase()),n.push((e=>e.charAt(0).toUpperCase()+e.substr(1))(e))}));var i={defaultToken:"",tokenPostfix:".apex",keywords:n,operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,tokenizer:{root:[[/[a-z_$][\w$]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],[/[A-Z][\w\$]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"type.identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,"annotation"],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,"number.float"],[/(@digits)[fFdD]/,"number.float"],[/(@digits)[lL]?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@apexdoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],apexdoc:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6230.8e64216a.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6230.8e64216a.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6230.8e64216a.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6266.db91261c.chunk.js b/ydb/core/viewer/monitoring/static/js/6266.db91261c.chunk.js deleted file mode 100644 index 04af39850408..000000000000 --- a/ydb/core/viewer/monitoring/static/js/6266.db91261c.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6266],{66266:function(e,t,n){n.r(t),n.d(t,{conf:function(){return s},language:function(){return o}});var s={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\$\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},o={defaultToken:"",tokenPostfix:".cs",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["extern","alias","using","bool","decimal","sbyte","byte","short","ushort","int","uint","long","ulong","char","float","double","object","dynamic","string","assembly","is","as","ref","out","this","base","new","typeof","void","checked","unchecked","default","delegate","var","const","if","else","switch","case","while","do","for","foreach","in","break","continue","goto","return","throw","try","catch","finally","lock","yield","from","let","where","join","on","equals","into","orderby","ascending","descending","select","group","by","namespace","partial","class","field","event","method","param","public","protected","internal","private","abstract","sealed","static","struct","readonly","volatile","virtual","override","params","get","set","add","remove","operator","true","false","implicit","explicit","interface","enum","null","async","await","fixed","sizeof","stackalloc","unsafe","nameof","when"],namespaceFollows:["namespace","using"],parenFollows:["if","for","while","switch","foreach","using","catch","when"],operators:["=","??","||","&&","|","^","&","==","!=","<=",">=","<<","+","-","*","/","%","!","~","++","--","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>=",">>","=>"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\@?[a-zA-Z_]\w*/,{cases:{"@namespaceFollows":{token:"keyword.$0",next:"@namespace"},"@keywords":{token:"keyword.$0",next:"@qualified"},"@default":{token:"identifier",next:"@qualified"}}}],{include:"@whitespace"},[/}/,{cases:{"$S2==interpolatedstring":{token:"string.quote",next:"@pop"},"$S2==litinterpstring":{token:"string.quote",next:"@pop"},"@default":"@brackets"}}],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/[0-9_]*\.[0-9_]+([eE][\-+]?\d+)?[fFdD]?/,"number.float"],[/0[xX][0-9a-fA-F_]+/,"number.hex"],[/0[bB][01_]+/,"number.hex"],[/[0-9_]+/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",next:"@string"}],[/\$\@"/,{token:"string.quote",next:"@litinterpstring"}],[/\@"/,{token:"string.quote",next:"@litstring"}],[/\$"/,{token:"string.quote",next:"@interpolatedstring"}],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],qualified:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],[/\./,"delimiter"],["","","@pop"]],namespace:[{include:"@whitespace"},[/[A-Z]\w*/,"namespace"],[/[\.=]/,"delimiter"],["","","@pop"]],comment:[[/[^\/*]+/,"comment"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",next:"@pop"}]],litstring:[[/[^"]+/,"string"],[/""/,"string.escape"],[/"/,{token:"string.quote",next:"@pop"}]],litinterpstring:[[/[^"{]+/,"string"],[/""/,"string.escape"],[/{{/,"string.escape"],[/}}/,"string.escape"],[/{/,{token:"string.quote",next:"root.litinterpstring"}],[/"/,{token:"string.quote",next:"@pop"}]],interpolatedstring:[[/[^\\"{]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/{{/,"string.escape"],[/}}/,"string.escape"],[/{/,{token:"string.quote",next:"root.interpolatedstring"}],[/"/,{token:"string.quote",next:"@pop"}]],whitespace:[[/^[ \t\v\f]*#((r)|(load))(?=\s)/,"directive.csx"],[/^[ \t\v\f]*#\w.*$/,"namespace.cpp"],[/[ \t\v\f\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); -//# sourceMappingURL=6266.db91261c.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6289.51f8741e.chunk.js b/ydb/core/viewer/monitoring/static/js/6289.51f8741e.chunk.js new file mode 100644 index 000000000000..ee2142895ba3 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6289.51f8741e.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6289.51f8741e.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6289],{66289:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>r,language:()=>s});var r={comments:{lineComment:";;"},brackets:[["[","]"],["(",")"],["{","}"]],autoClosingPairs:[{open:"[",close:"]"},{open:'"',close:'"'},{open:"(",close:")"},{open:"{",close:"}"}],surroundingPairs:[{open:"[",close:"]"},{open:'"',close:'"'},{open:"(",close:")"},{open:"{",close:"}"}]},s={defaultToken:"",ignoreCase:!0,tokenPostfix:".clj",brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"}],constants:["true","false","nil"],numbers:/^(?:[+\-]?\d+(?:(?:N|(?:[eE][+\-]?\d+))|(?:\.?\d*(?:M|(?:[eE][+\-]?\d+))?)|\/\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\[\]\s"#'(),;@^`{}~]|$))/,characters:/^(?:\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\[\]\s"(),;@^`{}~]|$))/,escapes:/^\\(?:["'\\bfnrt]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,qualifiedSymbols:/^(?:(?:[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*(?:\.[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*\/)?(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*(?=[\\\[\]\s"(),;@^`{}~]|$))/,specialForms:[".","catch","def","do","if","monitor-enter","monitor-exit","new","quote","recur","set!","throw","try","var"],coreSymbols:["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","..","/","<","<=","=","==",">",">=","EMPTY-NODE","Inst","StackTraceElement->vec","Throwable->map","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","any?","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","case","cast","cat","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","cond","cond->","cond->>","condp","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","dedupe","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","if-let","if-not","if-some","ifn?","import","in-ns","inc","inc'","indexed?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some->","some->>","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","sync","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","time","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","vswap!","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"],tokenizer:{root:[{include:"@whitespace"},[/@numbers/,"number"],[/@characters/,"string"],{include:"@string"},[/[()\[\]{}]/,"@brackets"],[/\/#"(?:\.|(?:")|[^"\n])*"\/g/,"regexp"],[/[#'@^`~]/,"meta"],[/@qualifiedSymbols/,{cases:{"^:.+$":"constant","@specialForms":"keyword","@coreSymbols":"keyword","@constants":"constant","@default":"identifier"}}]],whitespace:[[/[\s,]+/,"white"],[/;.*$/,"comment"],[/\(comment\b/,"comment","@comment"]],comment:[[/\(/,"comment","@push"],[/\)/,"comment","@pop"],[/[^()]/,"comment"]],string:[[/"/,"string","@multiLineString"]],multiLineString:[[/"/,"string","@popall"],[/@escapes/,"string.escape"],[/./,"string"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6289.51f8741e.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6289.51f8741e.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6289.51f8741e.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6291.e7cdf7f2.chunk.js b/ydb/core/viewer/monitoring/static/js/6291.e7cdf7f2.chunk.js new file mode 100644 index 000000000000..12f5d3af40c7 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6291.e7cdf7f2.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6291],{26291:function(_,t,e){_.exports=function(_){"use strict";function t(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var e=t(_),s="\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),n="\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_"),d=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function u(_,t,e){var s,n;return"m"===e?t?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===e?t?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":_+" "+(s=+_,n={ss:t?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:t?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:t?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[e].split("_"),s%10==1&&s%100!=11?n[0]:s%10>=2&&s%10<=4&&(s%100<10||s%100>=20)?n[1]:n[2])}var M=function(_,t){return d.test(t)?s[_.month()]:n[_.month()]};M.s=n,M.f=s;var m={name:"uk",weekdays:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0434\u043b_\u043f\u043d\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043f\u0442\u043d_\u0441\u0431\u0442".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),months:M,monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekStart:1,relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",m:u,mm:u,h:u,hh:u,d:"\u0434\u0435\u043d\u044c",dd:u,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:u,y:"\u0440\u0456\u043a",yy:u},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"}};return e.default.locale(m,null,!0),m}(e(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6300.dca75d45.chunk.js b/ydb/core/viewer/monitoring/static/js/6300.dca75d45.chunk.js new file mode 100644 index 000000000000..071547063816 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6300.dca75d45.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6300.dca75d45.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6300],{66300:(e,t,o)=>{o.r(t),o.d(t,{conf:()=>n,language:()=>s});var n={comments:{lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},s={keywords:["namespace","open","as","operation","function","body","adjoint","newtype","controlled","if","elif","else","repeat","until","fixup","for","in","while","return","fail","within","apply","Adjoint","Controlled","Adj","Ctl","is","self","auto","distribute","invert","intrinsic","let","set","w/","new","not","and","or","use","borrow","using","borrowing","mutable","internal"],typeKeywords:["Unit","Int","BigInt","Double","Bool","String","Qubit","Result","Pauli","Range"],invalidKeywords:["abstract","base","bool","break","byte","case","catch","char","checked","class","const","continue","decimal","default","delegate","do","double","enum","event","explicit","extern","finally","fixed","float","foreach","goto","implicit","int","interface","lock","long","null","object","operator","out","override","params","private","protected","public","readonly","ref","sbyte","sealed","short","sizeof","stackalloc","static","string","struct","switch","this","throw","try","typeof","unit","ulong","unchecked","unsafe","ushort","virtual","void","volatile"],constants:["true","false","PauliI","PauliX","PauliY","PauliZ","One","Zero"],builtin:["X","Y","Z","H","HY","S","T","SWAP","CNOT","CCNOT","MultiX","R","RFrac","Rx","Ry","Rz","R1","R1Frac","Exp","ExpFrac","Measure","M","MultiM","Message","Length","Assert","AssertProb","AssertEqual"],operators:["and=","<-","->","*","*=","@","!","^","^=",":","::","..","==","...","=","=>",">",">=","<","<=","-","-=","!=","or=","%","%=","|","+","+=","?","/","/=","&&&","&&&=","^^^","^^^=",">>>",">>>=","<<<","<<<=","|||","|||=","~~~","_","w/","w/="],namespaceFollows:["namespace","open"],symbols:/[=><!~?:&|+\-*\/\^%@._]+/,escapes:/\\[\s\S]/,tokenizer:{root:[[/[a-zA-Z_$][\w$]*/,{cases:{"@namespaceFollows":{token:"keyword.$0",next:"@namespace"},"@typeKeywords":"type","@keywords":"keyword","@constants":"constant","@builtin":"keyword","@invalidKeywords":"invalid","@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],namespace:[{include:"@whitespace"},[/[A-Za-z]\w*/,"namespace"],[/[\.=]/,"delimiter"],["","","@pop"]],whitespace:[[/[ \t\r\n]+/,"white"],[/(\/\/).*/,"comment"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6300.dca75d45.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6300.dca75d45.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6300.dca75d45.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/632.b6c03857.chunk.js b/ydb/core/viewer/monitoring/static/js/632.b6c03857.chunk.js new file mode 100644 index 000000000000..44aadc0526f6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/632.b6c03857.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[632],{70632:function(e,_,t){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),a={name:"bs",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return t.default.locale(a,null,!0),a}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6321.aa3e44de.chunk.js b/ydb/core/viewer/monitoring/static/js/6321.aa3e44de.chunk.js new file mode 100644 index 000000000000..3f4d152b7a43 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6321.aa3e44de.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6321.aa3e44de.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6321],{26321:(e,n,o)=>{o.r(n),o.d(n,{conf:()=>t,language:()=>r});var t={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["var","end_var"],["var_input","end_var"],["var_output","end_var"],["var_in_out","end_var"],["var_temp","end_var"],["var_global","end_var"],["var_access","end_var"],["var_external","end_var"],["type","end_type"],["struct","end_struct"],["program","end_program"],["function","end_function"],["function_block","end_function_block"],["action","end_action"],["step","end_step"],["initial_step","end_step"],["transaction","end_transaction"],["configuration","end_configuration"],["tcp","end_tcp"],["recource","end_recource"],["channel","end_channel"],["library","end_library"],["folder","end_folder"],["binaries","end_binaries"],["includes","end_includes"],["sources","end_sources"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"/*",close:"*/"},{open:"'",close:"'",notIn:["string_sq"]},{open:'"',close:'"',notIn:["string_dq"]},{open:"var_input",close:"end_var"},{open:"var_output",close:"end_var"},{open:"var_in_out",close:"end_var"},{open:"var_temp",close:"end_var"},{open:"var_global",close:"end_var"},{open:"var_access",close:"end_var"},{open:"var_external",close:"end_var"},{open:"type",close:"end_type"},{open:"struct",close:"end_struct"},{open:"program",close:"end_program"},{open:"function",close:"end_function"},{open:"function_block",close:"end_function_block"},{open:"action",close:"end_action"},{open:"step",close:"end_step"},{open:"initial_step",close:"end_step"},{open:"transaction",close:"end_transaction"},{open:"configuration",close:"end_configuration"},{open:"tcp",close:"end_tcp"},{open:"recource",close:"end_recource"},{open:"channel",close:"end_channel"},{open:"library",close:"end_library"},{open:"folder",close:"end_folder"},{open:"binaries",close:"end_binaries"},{open:"includes",close:"end_includes"},{open:"sources",close:"end_sources"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"var",close:"end_var"},{open:"var_input",close:"end_var"},{open:"var_output",close:"end_var"},{open:"var_in_out",close:"end_var"},{open:"var_temp",close:"end_var"},{open:"var_global",close:"end_var"},{open:"var_access",close:"end_var"},{open:"var_external",close:"end_var"},{open:"type",close:"end_type"},{open:"struct",close:"end_struct"},{open:"program",close:"end_program"},{open:"function",close:"end_function"},{open:"function_block",close:"end_function_block"},{open:"action",close:"end_action"},{open:"step",close:"end_step"},{open:"initial_step",close:"end_step"},{open:"transaction",close:"end_transaction"},{open:"configuration",close:"end_configuration"},{open:"tcp",close:"end_tcp"},{open:"recource",close:"end_recource"},{open:"channel",close:"end_channel"},{open:"library",close:"end_library"},{open:"folder",close:"end_folder"},{open:"binaries",close:"end_binaries"},{open:"includes",close:"end_includes"},{open:"sources",close:"end_sources"}],folding:{markers:{start:new RegExp("^\\s*#pragma\\s+region\\b"),end:new RegExp("^\\s*#pragma\\s+endregion\\b")}}},r={defaultToken:"",tokenPostfix:".st",ignoreCase:!0,brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["if","end_if","elsif","else","case","of","to","__try","__catch","__finally","do","with","by","while","repeat","end_while","end_repeat","end_case","for","end_for","task","retain","non_retain","constant","with","at","exit","return","interval","priority","address","port","on_channel","then","iec","file","uses","version","packagetype","displayname","copyright","summary","vendor","common_source","from","extends","implements"],constant:["false","true","null"],defineKeywords:["var","var_input","var_output","var_in_out","var_temp","var_global","var_access","var_external","end_var","type","end_type","struct","end_struct","program","end_program","function","end_function","function_block","end_function_block","interface","end_interface","method","end_method","property","end_property","namespace","end_namespace","configuration","end_configuration","tcp","end_tcp","resource","end_resource","channel","end_channel","library","end_library","folder","end_folder","binaries","end_binaries","includes","end_includes","sources","end_sources","action","end_action","step","initial_step","end_step","transaction","end_transaction"],typeKeywords:["int","sint","dint","lint","usint","uint","udint","ulint","real","lreal","time","date","time_of_day","date_and_time","string","bool","byte","word","dword","array","pointer","lword"],operators:["=",">","<",":",":=","<=",">=","<>","&","+","-","*","**","MOD","^","or","and","not","xor","abs","acos","asin","atan","cos","exp","expt","ln","log","sin","sqrt","tan","sel","max","min","limit","mux","shl","shr","rol","ror","indexof","sizeof","adr","adrinst","bitadr","is_valid","ref","ref_to"],builtinVariables:[],builtinFunctions:["sr","rs","tp","ton","tof","eq","ge","le","lt","ne","round","trunc","ctd","\u0441tu","ctud","r_trig","f_trig","move","concat","delete","find","insert","left","len","replace","right","rtc"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/(\.\.)/,"delimiter"],[/\b(16#[0-9A-Fa-f\_]*)+\b/,"number.hex"],[/\b(2#[01\_]+)+\b/,"number.binary"],[/\b(8#[0-9\_]*)+\b/,"number.octal"],[/\b\d*\.\d+([eE][\-+]?\d+)?\b/,"number.float"],[/\b(L?REAL)#[0-9\_\.e]+\b/,"number.float"],[/\b(BYTE|(?:D|L)?WORD|U?(?:S|D|L)?INT)#[0-9\_]+\b/,"number"],[/\d+/,"number"],[/\b(T|DT|TOD)#[0-9:-_shmyd]+\b/,"tag"],[/\%(I|Q|M)(X|B|W|D|L)[0-9\.]+/,"tag"],[/\%(I|Q|M)[0-9\.]*/,"tag"],[/\b[A-Za-z]{1,6}#[0-9]+\b/,"tag"],[/\b(TO_|CTU_|CTD_|CTUD_|MUX_|SEL_)[A_Za-z]+\b/,"predefined"],[/\b[A_Za-z]+(_TO_)[A_Za-z]+\b/,"predefined"],[/[;]/,"delimiter"],[/[.]/,{token:"delimiter",next:"@params"}],[/[a-zA-Z_]\w*/,{cases:{"@operators":"operators","@keywords":"keyword","@typeKeywords":"type","@defineKeywords":"variable","@constant":"constant","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string_dq"}],[/'/,{token:"string.quote",bracket:"@open",next:"@string_sq"}],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],params:[[/\b[A-Za-z0-9_]+\b(?=\()/,{token:"identifier",next:"@pop"}],[/\b[A-Za-z0-9_]+\b/,"variable.name","@pop"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],comment2:[[/[^\(*]+/,"comment"],[/\(\*/,"comment","@push"],["\\*\\)","comment","@pop"],[/[\(*]/,"comment"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\/.*$/,"comment"],[/\/\*/,"comment","@comment"],[/\(\*/,"comment","@comment2"]],string_dq:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],string_sq:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6321.aa3e44de.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6321.aa3e44de.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6321.aa3e44de.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6329.d78c1432.chunk.js b/ydb/core/viewer/monitoring/static/js/6329.d78c1432.chunk.js new file mode 100644 index 000000000000..cfddf790e74d --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6329.d78c1432.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6329.d78c1432.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6329],{16329:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>u,language:()=>b});var i,r,o=n(41551),a=Object.defineProperty,d=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,p=Object.prototype.hasOwnProperty,m=(e,t,n,i)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let r of s(t))p.call(e,r)||r===n||a(e,r,{get:()=>t[r],enumerable:!(i=d(t,r))||i.enumerable});return e},l={};m(l,i=o,"default"),r&&m(r,i,"default");var c=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],u={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["\x3c!--","--\x3e"],["<",">"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"}],onEnterRules:[{beforeText:new RegExp("<(?!(?:".concat(c.join("|"),"))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$"),"i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:l.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(?!(?:".concat(c.join("|"),"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$"),"i"),action:{indentAction:l.languages.IndentAction.Indent}}],folding:{markers:{start:new RegExp("^\\s*\x3c!--\\s*#region\\b.*--\x3e"),end:new RegExp("^\\s*\x3c!--\\s*#endregion\\b.*--\x3e")}}},b={defaultToken:"",tokenPostfix:".html",ignoreCase:!0,tokenizer:{root:[[/<!DOCTYPE/,"metatag","@doctype"],[/<!--/,"comment","@comment"],[/(<)((?:[\w\-]+:)?[\w\-]+)(\s*)(\/>)/,["delimiter","tag","","delimiter"]],[/(<)(script)/,["delimiter",{token:"tag",next:"@script"}]],[/(<)(style)/,["delimiter",{token:"tag",next:"@style"}]],[/(<)((?:[\w\-]+:)?[\w\-]+)/,["delimiter",{token:"tag",next:"@otherTag"}]],[/(<\/)((?:[\w\-]+:)?[\w\-]+)/,["delimiter",{token:"tag",next:"@otherTag"}]],[/</,"delimiter"],[/[^<]+/]],doctype:[[/[^>]+/,"metatag.content"],[/>/,"metatag","@pop"]],comment:[[/-->/,"comment","@pop"],[/[^-]+/,"comment.content"],[/./,"comment.content"]],otherTag:[[/\/?>/,"delimiter","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter","tag",{token:"delimiter",next:"@pop"}]]],scriptAfterType:[[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/"module"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.text/javascript"}],[/'module'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.text/javascript"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/>/,{token:"delimiter",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]],style:[[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter","tag",{token:"delimiter",next:"@pop"}]]],styleAfterType:[[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/>/,{token:"delimiter",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6329.d78c1432.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6329.d78c1432.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6329.d78c1432.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6361.a9f11e7a.chunk.js b/ydb/core/viewer/monitoring/static/js/6361.a9f11e7a.chunk.js new file mode 100644 index 000000000000..3576f5095f11 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6361.a9f11e7a.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6361],{56361:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),o={name:"pt-br",weekdays:"domingo_segunda-feira_ter\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_s\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),ordinal:function(e){return e+"\xba"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"}};return a.default.locale(o,null,!0),o}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6390.497d0ec8.chunk.js b/ydb/core/viewer/monitoring/static/js/6390.497d0ec8.chunk.js new file mode 100644 index 000000000000..21e6078d2bfe --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6390.497d0ec8.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6390.497d0ec8.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6390],{36390:(e,n,t)=>{t.r(n),t.d(n,{conf:()=>m,language:()=>b});var r,o,l=t(41551),a=Object.defineProperty,i=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyNames,u=Object.prototype.hasOwnProperty,d=(e,n,t,r)=>{if(n&&"object"===typeof n||"function"===typeof n)for(let o of c(n))u.call(e,o)||o===t||a(e,o,{get:()=>n[o],enumerable:!(r=i(n,o))||r.enumerable});return e},s={};d(s,r=l,"default"),o&&d(o,r,"default");var m={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:s.languages.IndentAction.Indent}}]},b={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6390.497d0ec8.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6390.497d0ec8.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6390.497d0ec8.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6392.134ee5e4.chunk.js b/ydb/core/viewer/monitoring/static/js/6392.134ee5e4.chunk.js new file mode 100644 index 000000000000..2897c08251b0 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6392.134ee5e4.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6392],{80246:function(e,a,_){e.exports=function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=a(e),n={name:"af",weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),weekStart:1,weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"}};return _.default.locale(n,null,!0),n}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6393.b0de2d9e.chunk.js b/ydb/core/viewer/monitoring/static/js/6393.b0de2d9e.chunk.js new file mode 100644 index 000000000000..4fa7a94b938f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6393.b0de2d9e.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6393],{66393:function(e,t,_){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),d={name:"da",weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n._man._tirs._ons._tors._fre._l\xf8r.".split("_"),weekdaysMin:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.".split("_"),weekStart:1,ordinal:function(e){return e+"."},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"}};return _.default.locale(d,null,!0),d}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6521.371403ec.chunk.js b/ydb/core/viewer/monitoring/static/js/6521.371403ec.chunk.js new file mode 100644 index 000000000000..656acac3d73b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6521.371403ec.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6521],{86521:function(e,_,t){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),a={name:"sv-fi",weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){var _=e%10;return"["+e+(1===_||2===_?"a":"e")+"]"},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY, [kl.] HH.mm",LLLL:"dddd, D. MMMM YYYY, [kl.] HH.mm",l:"D.M.YYYY",ll:"D. MMM YYYY",lll:"D. MMM YYYY, [kl.] HH.mm",llll:"ddd, D. MMM YYYY, [kl.] HH.mm"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"}};return t.default.locale(a,null,!0),a}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6531.7eac62d1.chunk.js b/ydb/core/viewer/monitoring/static/js/6531.7eac62d1.chunk.js new file mode 100644 index 000000000000..89ffe7c2c119 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6531.7eac62d1.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6531],{16531:(t,e,n)=>{n.r(e),n.d(e,{registerYQLCompletionItemProvider:()=>I});var s=n(88424),i=n(62729),a=n(41551);const r={Method:0,Function:1,Constructor:2,Field:3,Variable:4,Class:5,Struct:6,Interface:7,Module:8,Property:9,Event:10,Operator:11,Unit:12,Value:13,Constant:14,Enum:15,EnumMember:16,Keyword:17,Text:18,Color:19,File:20,Reference:21,Customcolor:22,Folder:23,TypeParameter:24,User:25,Issue:26,Snippet:27},u=/[\s'"-/@]/,o={externalDataSource:["external_data_source"],externalTable:["external_table"],replication:["replication"],table:["table","column_table"],tableStore:["column_store"],topic:["pers_queue_group"],view:["view"],tableIndex:["table_index","index"]},l=["dir","unknown"];function c(t){let e=t;return t.match(u)&&(e="`".concat(t,"`")),e}function g(t){let e=0,n=t.length;return t.startsWith("`")&&(e=1),t.endsWith("`")&&(n=-1),t.slice(e,n)}function d(t){return t.startsWith("/")?t.slice(1):t}function m(){let t=arguments.length>1?arguments[1]:void 0,e=d(g(arguments.length>0&&void 0!==arguments[0]?arguments[0]:""));const n=d(t);return e.startsWith(n)&&(e=e.slice(n.length)),d(e)}const f={suggestTemplates:0,suggestPragmas:1,suggestEntity:2,suggestColumns:3,suggestColumnAliases:4,suggestTableIndexes:5,suggestTableHints:6,suggestEntitySettings:7,suggestSimpleTypes:8,suggestKeywords:9,suggestAggregateFunctions:10,suggestTableFunctions:11,suggestWindowFunctions:12,suggestFunctions:13,suggestUdfs:14};function p(t){return f[t]}async function y(t,e,n,s){const i=m(s,n),u=await window.api.autocomplete({database:n,prefix:i,limit:1e3}),c=null===s||void 0===s?void 0:s.startsWith("`");if(u.Success){return function(t,e){const n=e.reduce(((t,e)=>{const n=o[e];return n&&n.forEach((e=>t.add(e))),t}),new Set(l));return t.filter((t=>{let{Type:e}=t;return n.has(e)}))}(u.Result.Entities,e).reduce(((e,n)=>{var s;let{Name:i,Type:u}=n;const o="dir"===u,l=o?"".concat(i,"/"):i;let g;return o&&!c&&(g="`".concat(l,"$0`")),e.push({label:l,insertText:null!==(s=g)&&void 0!==s?s:l,kind:o?r.Folder:r.Text,insertTextRules:g?a.languages.CompletionItemInsertTextRule.InsertAsSnippet:a.languages.CompletionItemInsertTextRule.None,detail:u,range:t,command:l.endsWith("/")?{id:"editor.action.triggerSuggest",title:""}:void 0,sortText:S(p("suggestEntity"))}),e}),[])}return[]}async function b(t){return(await async function(){return i.j}()).map((e=>({label:e,insertText:e,kind:r.Function,detail:"Function",range:t,sortText:S(p("suggestFunctions"))})))}async function T(t){return(await async function(){return i.vy}()).map((e=>({label:e,insertText:e,kind:r.TypeParameter,detail:"Type",range:t,sortText:S(p("suggestSimpleTypes"))})))}async function w(t){return(await async function(){return i.t6}()).map((e=>({label:e,insertText:e,kind:r.Function,detail:"UDF",range:t,sortText:S(p("suggestUdfs"))})))}async function v(t){return(await async function(){return i.JX}()).map((e=>({label:e,insertText:e,kind:r.Function,detail:"Window function",range:t,sortText:S(p("suggestWindowFunctions"))})))}async function x(t){return(await async function(){return i.yJ}()).map((e=>({label:e,insertText:e,kind:r.Function,detail:"Table function",range:t,sortText:S(p("suggestTableFunctions"))})))}async function h(t){return(await async function(){return i.Ot}()).map((e=>({label:e,insertText:e,kind:r.Function,detail:"Aggregate function",range:t,sortText:S(p("suggestAggregateFunctions"))})))}async function C(t){return(await async function(){return i.EQ}()).map((e=>({label:e,insertText:e,kind:r.Module,detail:"Pragma",range:t,sortText:S(p("suggestPragmas"))})))}async function F(t,e){const n=await async function(t){return i.S8[t]}(e);return n.map((e=>({label:e,insertText:e,kind:r.Property,detail:"Setting",range:t,sortText:S(p("suggestEntitySettings"))})))}const k="abcdefghijklmnopqrstuvwxyz";function S(t){const e=k[t];if(e)return e;const n=Math.floor(t/k.length),s=t%k.length;return k.slice(-1).repeat(n)+k[s]}function E(t){return async(e,s,i,a)=>{const u=function(t,e){const{startColumn:n,endColumn:s}=t.getWordUntilPosition(e),i="$"===t.getLineContent(e.lineNumber)[n-2]?1:0;return{startColumn:n-i,startLineNumber:e.lineNumber,endColumn:s,endLineNumber:e.lineNumber}}(e,s),o=await async function(t,e,s,i){const{parseYqlQuery:a}=await n.e(8607).then(n.bind(n,68607)),u={line:e.lineNumber,column:e.column},o=a(t.getValue(),u);let l=[],d=[],f=[],k=[],E=[],P=[],I=[],W=[],_=[];if(o.suggestEntity){const n=function(t,e){var n,s,i,a;const r=t.findPreviousMatch("\\s(`?[^\\s]*)",e,!0,!1,null,!0),u=t.findNextMatch("([^\\s]*)`?",e,!0,!1,null,!0);return"".concat(null!==(n=null===r||void 0===r||null===(s=r.matches)||void 0===s?void 0:s[1])&&void 0!==n?n:"").concat(null!==(i=null===u||void 0===u||null===(a=u.matches)||void 0===a?void 0:a[1])&&void 0!==i?i:"")}(t,e);l=await y(s,o.suggestEntity,i,n)}o.suggestFunctions&&(d=await b(s));o.suggestAggregateFunctions&&(f=await h(s));o.suggestWindowFunctions&&(k=await v(s));o.suggestTableFunctions&&(E=await x(s));o.suggestSimpleTypes&&(I=await T(s));o.suggestUdfs&&(P=await w(s));o.suggestPragmas&&(W=await C(s));o.suggestEntitySettings&&(_=await F(s,o.suggestEntitySettings));const N=await function(t,e){return e?null===e||void 0===e?void 0:e.map((e=>({label:e.name,insertText:e.name,kind:r.Field,detail:"Column alias",range:t,sortText:S(p("suggestColumnAliases"))}))):[]}(s,o.suggestColumnAliases),A=await async function(t,e,n){var s,i,a;if(null===e||void 0===e||!e.tables)return[];const u=[],o=e.tables.length>1,l=null!==(s=null===(i=e.tables)||void 0===i?void 0:i.map((t=>{let e=g(t.name);return e.endsWith("/")||(e="".concat(e,"/")),m(e,n)})))&&void 0!==s?s:[],d=Array.from(new Set(l)),f=await window.api.autocomplete({database:n,table:d,limit:1e3});if(!f.Success)return[];const y=null===(a=e.tables)||void 0===a?void 0:a.reduce(((t,e)=>{var s;const i=m(g(e.name),n),a=null!==(s=t[i])&&void 0!==s?s:[];return e.alias&&a.push(e.alias),t[i]=a,t}),{});return f.Result.Entities.forEach((e=>{if("column"!==e.Type)return;const s=c(e.Name),i=m(e.Parent,n),a=y[i];if(null!==a&&void 0!==a&&a.length)a.forEach((e=>{const n="".concat(e,".").concat(s);u.push({label:n,insertText:n,kind:r.Field,detail:"Column",range:t,sortText:S(p("suggestColumns"))})}));else{let e=s;o&&(e="".concat(c(i),".").concat(s)),u.push({label:e,insertText:e,kind:r.Field,detail:"Column",range:t,sortText:S(p("suggestColumns"))})}})),u}(s,o.suggestColumns,i),M=function(t,e){return e?null===e||void 0===e?void 0:e.map((e=>({label:e.value,insertText:e.value,kind:r.Keyword,detail:"Keyword",range:t,sortText:S(p("suggestKeywords"))}))):[]}(s,o.suggestKeywords),U=[...l,...d,...k,...E,...P,...I,...W,...N,...A,...M,...f,..._];return U}(e,s,u,t);return{suggestions:o}}}let P;function I(t){P&&P.dispose(),P=s.Mj.registerCompletionItemProvider(i.Oo,{triggerCharacters:[" ","",",",".","`","(","/"],provideCompletionItems:E(t)})}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6550.b5e85913.chunk.js b/ydb/core/viewer/monitoring/static/js/6550.b5e85913.chunk.js deleted file mode 100644 index 3753c4b037e6..000000000000 --- a/ydb/core/viewer/monitoring/static/js/6550.b5e85913.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6550],{26550:function(e,t,r){r.r(t),r.d(t,{ReactComponent:function(){return E}});var C,n,a,o,i,l,s,d,c,p,H,u,k,V=r(4519),f=["title","titleId"];function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var C in r)Object.prototype.hasOwnProperty.call(r,C)&&(e[C]=r[C])}return e},h.apply(this,arguments)}function M(e,t){if(null==e)return{};var r,C,n=function(e,t){if(null==e)return{};var r,C,n={},a=Object.keys(e);for(C=0;C<a.length;C++)r=a[C],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(C=0;C<a.length;C++)r=a[C],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Z(e,t){var r=e.title,Z=e.titleId,E=M(e,f);return V.createElement("svg",h({width:260,height:260,viewBox:"0 0 520 520",fill:"none",xmlns:"http://www.w3.org/2000/svg",ref:t,"aria-labelledby":Z},E),r?V.createElement("title",{id:Z},r):null,C||(C=V.createElement("path",{opacity:.1,d:"M228.637 445C217.178 445.049 206.065 441.074 197.233 433.768L28.4227 288.499C24.7711 285.319 22.4943 280.846 22.0715 276.02C21.6487 271.195 23.1128 266.393 26.1557 262.626L65.3512 214.612C66.9235 212.684 68.8667 211.091 71.0657 209.927C73.2646 208.764 75.6745 208.055 78.1525 207.841C80.6305 207.627 83.1263 207.913 85.4917 208.682C87.8572 209.452 90.0443 210.688 91.9234 212.319L223.682 326.793L435.516 94.088C438.811 90.4596 443.405 88.2807 448.298 88.0253C453.191 87.7699 457.987 89.4587 461.642 92.7243L507.824 134.205C509.647 135.841 511.129 137.821 512.184 140.032C513.24 142.243 513.849 144.64 513.975 147.087C514.102 149.534 513.744 151.982 512.922 154.29C512.101 156.598 510.831 158.721 509.187 160.536L265.553 428.549C260.881 433.709 255.185 437.838 248.829 440.671C242.472 443.503 235.595 444.978 228.637 445Z",fill:"#509CF5"})),n||(n=V.createElement("path",{d:"M412.933 102.332H294.933C289.433 102.332 284.933 106.832 284.933 112.332V315.432C284.933 320.932 289.433 325.432 294.933 325.432H446.433C451.933 325.432 456.433 320.932 456.433 315.432V133.732L429.933 107.332",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.01 10.02"})),a||(a=V.createElement("path",{d:"M425.033 102.332V104.332",stroke:"#00E6C5",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),o||(o=V.createElement("path",{d:"M425.033 115.031V126.331C425.033 130.431 428.333 133.731 432.433 133.731H449.033",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.27 10.68"})),i||(i=V.createElement("path",{d:"M454.333 133.73H456.333",stroke:"#00E6C5",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),l||(l=V.createElement("path",{d:"M77 397.052L89.1 409L110 388",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4.84211,strokeLinecap:"round",strokeLinejoin:"round"})),s||(s=V.createElement("path",{d:"M125 398C125 416.775 109.775 432 91 432C72.2252 432 57 416.775 57 398C57 379.225 72.2252 364 91 364C109.775 364 125 379.225 125 398Z",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4.84211,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.84 12.11"})),d||(d=V.createElement("path",{d:"M147.5 119C147.5 117.895 146.605 117 145.5 117C144.395 117 143.5 117.895 143.5 119H147.5ZM143.5 129.8C143.5 130.905 144.395 131.8 145.5 131.8C146.605 131.8 147.5 130.905 147.5 129.8H143.5ZM147.5 152.5C147.5 151.395 146.605 150.5 145.5 150.5C144.395 150.5 143.5 151.395 143.5 152.5H147.5ZM143.5 164.2C143.5 165.305 144.395 166.2 145.5 166.2C146.605 166.2 147.5 165.305 147.5 164.2H143.5ZM168.1 143.602C169.205 143.602 170.1 142.706 170.1 141.602C170.1 140.497 169.205 139.602 168.1 139.602V143.602ZM157.2 139.602C156.096 139.602 155.2 140.497 155.2 141.602C155.2 142.706 156.096 143.602 157.2 143.602V139.602ZM133.7 143.602C134.805 143.602 135.7 142.706 135.7 141.602C135.7 140.497 134.805 139.602 133.7 139.602V143.602ZM122.9 139.602C121.795 139.602 120.9 140.497 120.9 141.602C120.9 142.706 121.795 143.602 122.9 143.602V139.602ZM143.5 119V129.8H147.5V119H143.5ZM143.5 152.5V164.2H147.5V152.5H143.5ZM168.1 139.602H157.2V143.602H168.1V139.602ZM133.7 139.602H122.9V143.602H133.7V139.602Z",fill:"#2EE5C0",fillOpacity:.8})),c||(c=V.createElement("path",{d:"M406.3 397.5C406.3 396.395 405.405 395.5 404.3 395.5C403.195 395.5 402.3 396.395 402.3 397.5H406.3ZM402.3 403.1C402.3 404.205 403.195 405.1 404.3 405.1C405.405 405.1 406.3 404.205 406.3 403.1H402.3ZM406.3 414.898C406.3 413.794 405.405 412.898 404.3 412.898C403.195 412.898 402.3 413.794 402.3 414.898H406.3ZM402.3 420.998C402.3 422.103 403.195 422.998 404.3 422.998C405.405 422.998 406.3 422.103 406.3 420.998H402.3ZM416.1 411.2C417.205 411.2 418.1 410.305 418.1 409.2C418.1 408.095 417.205 407.2 416.1 407.2V411.2ZM410.4 407.2C409.295 407.2 408.4 408.095 408.4 409.2C408.4 410.305 409.295 411.2 410.4 411.2V407.2ZM398.2 411.2C399.305 411.2 400.2 410.305 400.2 409.2C400.2 408.095 399.305 407.2 398.2 407.2V411.2ZM392.5 407.2C391.395 407.2 390.5 408.095 390.5 409.2C390.5 410.305 391.395 411.2 392.5 411.2V407.2ZM402.3 397.5V403.1H406.3V397.5H402.3ZM402.3 414.898V420.998H406.3V414.898H402.3ZM416.1 407.2H410.4V411.2H416.1V407.2ZM398.2 407.2H392.5V411.2H398.2V407.2Z",fill:"#2EE5C0",fillOpacity:.8})),p||(p=V.createElement("path",{d:"M186 385.667V394.833C186 397.264 185.012 399.596 183.254 401.315C181.496 403.034 179.111 404 176.625 404H121C115.477 404 111 399.523 111 394V249C111 243.477 115.477 239 121 239H176.625C179.111 239 181.496 239.966 183.254 241.685C185.012 243.404 186 245.736 186 248.167V385.667Z",fill:"#0067C1"})),H||(H=V.createElement("path",{d:"M177.143 375.273V384.637C177.143 387.12 176.153 389.501 174.392 391.257C172.63 393.013 170.241 394 167.75 394H112C106.477 394 102 389.522 102 384V235.465C102 229.942 106.477 225.465 112 225.465H167.75C170.241 225.465 172.63 226.451 174.392 228.207C176.153 229.963 177.143 232.345 177.143 234.828V375.273Z",fill:"#007CE9"})),u||(u=V.createElement("path",{d:"M292.385 235.185C291.545 236.543 292.529 238.321 294.126 238.321H375.327C379.067 238.242 382.784 238.917 386.255 240.305C389.726 241.693 392.879 243.765 395.524 246.398C398.169 249.031 400.252 252.169 401.646 255.623C403.041 259.078 403.718 262.778 403.639 266.5C403.639 294.679 394.201 398 356.452 398H242.081C230.712 398 219.806 393.497 211.748 385.477L206.04 379.797C205.665 379.424 205.158 379.214 204.629 379.214H191.299H179.143C178.038 379.214 177.143 378.319 177.143 377.214V239.495C177.143 238.847 177.668 238.321 178.317 238.321C195.697 238.321 212.371 231.438 224.69 219.177L233.949 209.961C240.092 203.848 245.391 196.942 249.705 189.426L267.012 159.283C275.636 144.262 293.887 133.185 306.212 145.354C312.929 151.987 316.741 160.994 316.815 170.411C316.815 171.538 316.721 172.665 316.626 173.886C314.302 197.951 298.104 225.943 292.385 235.185Z",fill:"#FFCC00"})),k||(k=V.createElement("path",{d:"M356.457 369.801H237.651C229.12 369.801 220.937 366.421 214.893 360.401C208.849 354.381 200.666 351.001 192.135 351.001H177.143V379.2H192.135C200.666 379.2 208.849 382.58 214.893 388.6C220.937 394.62 229.12 398 237.651 398H356.457C394.207 398 403.645 294.601 403.645 266.402C403.645 263.723 403.328 261.054 402.701 258.449C399.568 298.831 387.743 369.801 356.457 369.801Z",fill:"#DEB700"})))}var E=V.forwardRef(Z);t.default=r.p+"static/media/thumbsUp.d4a03fbaa64ce85a0045bf8ba77f8e2b.svg"}}]); -//# sourceMappingURL=6550.b5e85913.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6559.41bbd3a3.chunk.js b/ydb/core/viewer/monitoring/static/js/6559.41bbd3a3.chunk.js deleted file mode 100644 index 5faad96ec504..000000000000 --- a/ydb/core/viewer/monitoring/static/js/6559.41bbd3a3.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6559],{26559:function(e,n,t){t.r(n),t.d(n,{conf:function(){return i},language:function(){return r}});var i={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#pragma\\s+region\\b"),end:new RegExp("^\\s*#pragma\\s+endregion\\b")}}},r={defaultToken:"",tokenPostfix:".cpp",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["abstract","amp","array","auto","bool","break","case","catch","char","class","const","constexpr","const_cast","continue","cpu","decltype","default","delegate","delete","do","double","dynamic_cast","each","else","enum","event","explicit","export","extern","false","final","finally","float","for","friend","gcnew","generic","goto","if","in","initonly","inline","int","interface","interior_ptr","internal","literal","long","mutable","namespace","new","noexcept","nullptr","__nullptr","operator","override","partial","pascal","pin_ptr","private","property","protected","public","ref","register","reinterpret_cast","restrict","return","safe_cast","sealed","short","signed","sizeof","static","static_assert","static_cast","struct","switch","template","this","thread_local","throw","tile_static","true","try","typedef","typeid","typename","union","unsigned","using","virtual","void","volatile","wchar_t","where","while","_asm","_based","_cdecl","_declspec","_fastcall","_if_exists","_if_not_exists","_inline","_multiple_inheritance","_pascal","_single_inheritance","_stdcall","_virtual_inheritance","_w64","__abstract","__alignof","__asm","__assume","__based","__box","__builtin_alignof","__cdecl","__clrcall","__declspec","__delegate","__event","__except","__fastcall","__finally","__forceinline","__gc","__hook","__identifier","__if_exists","__if_not_exists","__inline","__int128","__int16","__int32","__int64","__int8","__interface","__leave","__m128","__m128d","__m128i","__m256","__m256d","__m256i","__m64","__multiple_inheritance","__newslot","__nogc","__noop","__nounwind","__novtordisp","__pascal","__pin","__pragma","__property","__ptr32","__ptr64","__raise","__restrict","__resume","__sealed","__single_inheritance","__stdcall","__super","__thiscall","__try","__try_cast","__typeof","__unaligned","__unhook","__uuidof","__value","__virtual_inheritance","__w64","__wchar_t"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,floatsuffix:/[fFlL]?/,encoding:/u|u8|U|L/,tokenizer:{root:[[/@encoding?R\"(?:([^ ()\\\t]*))\(/,{token:"string.raw.begin",next:"@raw.$1"}],[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],[/^\s*#\s*include/,{token:"keyword.directive.include",next:"@include"}],[/^\s*#\s*\w+/,"keyword.directive"],{include:"@whitespace"},[/\[\s*\[/,{token:"annotation",next:"@annotation"}],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],raw:[[/(.*)(\))(?:([^ ()\\\t"]*))(\")/,{cases:{"$3==$S2":["string.raw","string.raw.end","string.raw.end",{token:"string.raw.end",next:"@pop"}],"@default":["string.raw","string.raw","string.raw","string.raw"]}}],[/.*/,"string.raw"]],annotation:[{include:"@whitespace"},[/using|alignas/,"keyword"],[/[a-zA-Z0-9_]+/,"annotation"],[/[,:]/,"delimiter"],[/[()]/,"@brackets"],[/\]\s*\]/,{token:"annotation",next:"@pop"}]],include:[[/(\s*)(<)([^<>]*)(>)/,["","keyword.directive.include.begin","string.include.identifier",{token:"keyword.directive.include.end",next:"@pop"}]],[/(\s*)(")([^"]*)(")/,["","keyword.directive.include.begin","string.include.identifier",{token:"keyword.directive.include.end",next:"@pop"}]]]}}}}]); -//# sourceMappingURL=6559.41bbd3a3.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6619.9e1de7a6.chunk.js b/ydb/core/viewer/monitoring/static/js/6619.9e1de7a6.chunk.js new file mode 100644 index 000000000000..84f0d7a39973 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6619.9e1de7a6.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6619.9e1de7a6.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6619],{16619:(e,n,o)=>{o.r(n),o.d(n,{conf:()=>t,language:()=>s});var t={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".objective-c",keywords:["#import","#include","#define","#else","#endif","#if","#ifdef","#ifndef","#ident","#undef","@class","@defs","@dynamic","@encode","@end","@implementation","@interface","@package","@private","@protected","@property","@protocol","@public","@selector","@synthesize","__declspec","assign","auto","BOOL","break","bycopy","byref","case","char","Class","const","copy","continue","default","do","double","else","enum","extern","FALSE","false","float","for","goto","if","in","int","id","inout","IMP","long","nil","nonatomic","NULL","oneway","out","private","public","protected","readwrite","readonly","register","return","SEL","self","short","signed","sizeof","static","struct","super","switch","typedef","TRUE","true","union","unsigned","volatile","void","while"],decpart:/\d(_?\d)*/,decimal:/0|@decpart/,tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},[/[,:;]/,"delimiter"],[/[{}\[\]()<>]/,"@brackets"],[/[a-zA-Z@#]\w*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[<>=\\+\\-\\*\\/\\^\\|\\~,]|and\\b|or\\b|not\\b]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],numbers:[[/0[xX][0-9a-fA-F]*(_?[0-9a-fA-F])*/,"number.hex"],[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)[fF]*/,{cases:{"(\\d)*":"number",$0:"number.float"}}]],strings:[[/'$/,"string.escape","@popall"],[/'/,"string.escape","@stringBody"],[/"$/,"string.escape","@popall"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/[^\\']+$/,"string","@popall"],[/[^\\']+/,"string"],[/\\./,"string"],[/'/,"string.escape","@popall"],[/\\$/,"string"]],dblStringBody:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string"],[/"/,"string.escape","@popall"],[/\\$/,"string"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6619.9e1de7a6.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6619.9e1de7a6.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6619.9e1de7a6.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6679.6e0a87d5.chunk.js b/ydb/core/viewer/monitoring/static/js/6679.6e0a87d5.chunk.js new file mode 100644 index 000000000000..a681d938fdcf --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6679.6e0a87d5.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6679],{96679:function(e,n,t){e.exports=function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),a={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function _(e,n,t){var _=a[t];return Array.isArray(_)&&(_=_[n?0:1]),_.replace("%d",e)}var i={name:"de-ch",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:_,m:_,mm:_,h:_,hh:_,d:_,dd:_,M:_,MM:_,y:_,yy:_}};return t.default.locale(i,null,!0),i}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6692.9322b59d.chunk.js b/ydb/core/viewer/monitoring/static/js/6692.9322b59d.chunk.js new file mode 100644 index 000000000000..19a2a182ccfd --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6692.9322b59d.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6692.9322b59d.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6692],{66692:(E,T,R)=>{R.r(T),R.d(T,{conf:()=>A,language:()=>I});var A={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},I={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["ABORT","ABSOLUTE","ACTION","ADA","ADD","AFTER","ALL","ALLOCATE","ALTER","ALWAYS","ANALYZE","AND","ANY","ARE","AS","ASC","ASSERTION","AT","ATTACH","AUTHORIZATION","AUTOINCREMENT","AVG","BACKUP","BEFORE","BEGIN","BETWEEN","BIT","BIT_LENGTH","BOTH","BREAK","BROWSE","BULK","BY","CASCADE","CASCADED","CASE","CAST","CATALOG","CHAR","CHARACTER","CHARACTER_LENGTH","CHAR_LENGTH","CHECK","CHECKPOINT","CLOSE","CLUSTERED","COALESCE","COLLATE","COLLATION","COLUMN","COMMIT","COMPUTE","CONFLICT","CONNECT","CONNECTION","CONSTRAINT","CONSTRAINTS","CONTAINS","CONTAINSTABLE","CONTINUE","CONVERT","CORRESPONDING","COUNT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATE","DAY","DBCC","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFERRABLE","DEFERRED","DELETE","DENY","DESC","DESCRIBE","DESCRIPTOR","DETACH","DIAGNOSTICS","DISCONNECT","DISK","DISTINCT","DISTRIBUTED","DO","DOMAIN","DOUBLE","DROP","DUMP","EACH","ELSE","END","END-EXEC","ERRLVL","ESCAPE","EXCEPT","EXCEPTION","EXCLUDE","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXIT","EXPLAIN","EXTERNAL","EXTRACT","FAIL","FALSE","FETCH","FILE","FILLFACTOR","FILTER","FIRST","FLOAT","FOLLOWING","FOR","FOREIGN","FORTRAN","FOUND","FREETEXT","FREETEXTTABLE","FROM","FULL","FUNCTION","GENERATED","GET","GLOB","GLOBAL","GO","GOTO","GRANT","GROUP","GROUPS","HAVING","HOLDLOCK","HOUR","IDENTITY","IDENTITYCOL","IDENTITY_INSERT","IF","IGNORE","IMMEDIATE","IN","INCLUDE","INDEX","INDEXED","INDICATOR","INITIALLY","INNER","INPUT","INSENSITIVE","INSERT","INSTEAD","INT","INTEGER","INTERSECT","INTERVAL","INTO","IS","ISNULL","ISOLATION","JOIN","KEY","KILL","LANGUAGE","LAST","LEADING","LEFT","LEVEL","LIKE","LIMIT","LINENO","LOAD","LOCAL","LOWER","MATCH","MATERIALIZED","MAX","MERGE","MIN","MINUTE","MODULE","MONTH","NAMES","NATIONAL","NATURAL","NCHAR","NEXT","NO","NOCHECK","NONCLUSTERED","NONE","NOT","NOTHING","NOTNULL","NULL","NULLIF","NULLS","NUMERIC","OCTET_LENGTH","OF","OFF","OFFSET","OFFSETS","ON","ONLY","OPEN","OPENDATASOURCE","OPENQUERY","OPENROWSET","OPENXML","OPTION","OR","ORDER","OTHERS","OUTER","OUTPUT","OVER","OVERLAPS","PAD","PARTIAL","PARTITION","PASCAL","PERCENT","PIVOT","PLAN","POSITION","PRAGMA","PRECEDING","PRECISION","PREPARE","PRESERVE","PRIMARY","PRINT","PRIOR","PRIVILEGES","PROC","PROCEDURE","PUBLIC","QUERY","RAISE","RAISERROR","RANGE","READ","READTEXT","REAL","RECONFIGURE","RECURSIVE","REFERENCES","REGEXP","REINDEX","RELATIVE","RELEASE","RENAME","REPLACE","REPLICATION","RESTORE","RESTRICT","RETURN","RETURNING","REVERT","REVOKE","RIGHT","ROLLBACK","ROW","ROWCOUNT","ROWGUIDCOL","ROWS","RULE","SAVE","SAVEPOINT","SCHEMA","SCROLL","SECOND","SECTION","SECURITYAUDIT","SELECT","SEMANTICKEYPHRASETABLE","SEMANTICSIMILARITYDETAILSTABLE","SEMANTICSIMILARITYTABLE","SESSION","SESSION_USER","SET","SETUSER","SHUTDOWN","SIZE","SMALLINT","SOME","SPACE","SQL","SQLCA","SQLCODE","SQLERROR","SQLSTATE","SQLWARNING","STATISTICS","SUBSTRING","SUM","SYSTEM_USER","TABLE","TABLESAMPLE","TEMP","TEMPORARY","TEXTSIZE","THEN","TIES","TIME","TIMESTAMP","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TOP","TRAILING","TRAN","TRANSACTION","TRANSLATE","TRANSLATION","TRIGGER","TRIM","TRUE","TRUNCATE","TRY_CONVERT","TSEQUAL","UNBOUNDED","UNION","UNIQUE","UNKNOWN","UNPIVOT","UPDATE","UPDATETEXT","UPPER","USAGE","USE","USER","USING","VACUUM","VALUE","VALUES","VARCHAR","VARYING","VIEW","VIRTUAL","WAITFOR","WHEN","WHENEVER","WHERE","WHILE","WINDOW","WITH","WITHIN GROUP","WITHOUT","WORK","WRITE","WRITETEXT","YEAR","ZONE"],operators:["ALL","AND","ANY","BETWEEN","EXISTS","IN","LIKE","NOT","OR","SOME","EXCEPT","INTERSECT","UNION","APPLY","CROSS","FULL","INNER","JOIN","LEFT","OUTER","RIGHT","CONTAINS","FREETEXT","IS","NULL","PIVOT","UNPIVOT","MATCHED"],builtinFunctions:["AVG","CHECKSUM_AGG","COUNT","COUNT_BIG","GROUPING","GROUPING_ID","MAX","MIN","SUM","STDEV","STDEVP","VAR","VARP","CUME_DIST","FIRST_VALUE","LAG","LAST_VALUE","LEAD","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","COLLATE","COLLATIONPROPERTY","TERTIARY_WEIGHTS","FEDERATION_FILTERING_VALUE","CAST","CONVERT","PARSE","TRY_CAST","TRY_CONVERT","TRY_PARSE","ASYMKEY_ID","ASYMKEYPROPERTY","CERTPROPERTY","CERT_ID","CRYPT_GEN_RANDOM","DECRYPTBYASYMKEY","DECRYPTBYCERT","DECRYPTBYKEY","DECRYPTBYKEYAUTOASYMKEY","DECRYPTBYKEYAUTOCERT","DECRYPTBYPASSPHRASE","ENCRYPTBYASYMKEY","ENCRYPTBYCERT","ENCRYPTBYKEY","ENCRYPTBYPASSPHRASE","HASHBYTES","IS_OBJECTSIGNED","KEY_GUID","KEY_ID","KEY_NAME","SIGNBYASYMKEY","SIGNBYCERT","SYMKEYPROPERTY","VERIFYSIGNEDBYCERT","VERIFYSIGNEDBYASYMKEY","CURSOR_STATUS","DATALENGTH","IDENT_CURRENT","IDENT_INCR","IDENT_SEED","IDENTITY","SQL_VARIANT_PROPERTY","CURRENT_TIMESTAMP","DATEADD","DATEDIFF","DATEFROMPARTS","DATENAME","DATEPART","DATETIME2FROMPARTS","DATETIMEFROMPARTS","DATETIMEOFFSETFROMPARTS","DAY","EOMONTH","GETDATE","GETUTCDATE","ISDATE","MONTH","SMALLDATETIMEFROMPARTS","SWITCHOFFSET","SYSDATETIME","SYSDATETIMEOFFSET","SYSUTCDATETIME","TIMEFROMPARTS","TODATETIMEOFFSET","YEAR","CHOOSE","COALESCE","IIF","NULLIF","ABS","ACOS","ASIN","ATAN","ATN2","CEILING","COS","COT","DEGREES","EXP","FLOOR","LOG","LOG10","PI","POWER","RADIANS","RAND","ROUND","SIGN","SIN","SQRT","SQUARE","TAN","APP_NAME","APPLOCK_MODE","APPLOCK_TEST","ASSEMBLYPROPERTY","COL_LENGTH","COL_NAME","COLUMNPROPERTY","DATABASE_PRINCIPAL_ID","DATABASEPROPERTYEX","DB_ID","DB_NAME","FILE_ID","FILE_IDEX","FILE_NAME","FILEGROUP_ID","FILEGROUP_NAME","FILEGROUPPROPERTY","FILEPROPERTY","FULLTEXTCATALOGPROPERTY","FULLTEXTSERVICEPROPERTY","INDEX_COL","INDEXKEY_PROPERTY","INDEXPROPERTY","OBJECT_DEFINITION","OBJECT_ID","OBJECT_NAME","OBJECT_SCHEMA_NAME","OBJECTPROPERTY","OBJECTPROPERTYEX","ORIGINAL_DB_NAME","PARSENAME","SCHEMA_ID","SCHEMA_NAME","SCOPE_IDENTITY","SERVERPROPERTY","STATS_DATE","TYPE_ID","TYPE_NAME","TYPEPROPERTY","DENSE_RANK","NTILE","RANK","ROW_NUMBER","PUBLISHINGSERVERNAME","OPENDATASOURCE","OPENQUERY","OPENROWSET","OPENXML","CERTENCODED","CERTPRIVATEKEY","CURRENT_USER","HAS_DBACCESS","HAS_PERMS_BY_NAME","IS_MEMBER","IS_ROLEMEMBER","IS_SRVROLEMEMBER","LOGINPROPERTY","ORIGINAL_LOGIN","PERMISSIONS","PWDENCRYPT","PWDCOMPARE","SESSION_USER","SESSIONPROPERTY","SUSER_ID","SUSER_NAME","SUSER_SID","SUSER_SNAME","SYSTEM_USER","USER","USER_ID","USER_NAME","ASCII","CHAR","CHARINDEX","CONCAT","DIFFERENCE","FORMAT","LEFT","LEN","LOWER","LTRIM","NCHAR","PATINDEX","QUOTENAME","REPLACE","REPLICATE","REVERSE","RIGHT","RTRIM","SOUNDEX","SPACE","STR","STUFF","SUBSTRING","UNICODE","UPPER","BINARY_CHECKSUM","CHECKSUM","CONNECTIONPROPERTY","CONTEXT_INFO","CURRENT_REQUEST_ID","ERROR_LINE","ERROR_NUMBER","ERROR_MESSAGE","ERROR_PROCEDURE","ERROR_SEVERITY","ERROR_STATE","FORMATMESSAGE","GETANSINULL","GET_FILESTREAM_TRANSACTION_CONTEXT","HOST_ID","HOST_NAME","ISNULL","ISNUMERIC","MIN_ACTIVE_ROWVERSION","NEWID","NEWSEQUENTIALID","ROWCOUNT_BIG","XACT_STATE","TEXTPTR","TEXTVALID","COLUMNS_UPDATED","EVENTDATA","TRIGGER_NESTLEVEL","UPDATE","CHANGETABLE","CHANGE_TRACKING_CONTEXT","CHANGE_TRACKING_CURRENT_VERSION","CHANGE_TRACKING_IS_COLUMN_IN_MASK","CHANGE_TRACKING_MIN_VALID_VERSION","CONTAINSTABLE","FREETEXTTABLE","SEMANTICKEYPHRASETABLE","SEMANTICSIMILARITYDETAILSTABLE","SEMANTICSIMILARITYTABLE","FILETABLEROOTPATH","GETFILENAMESPACEPATH","GETPATHLOCATOR","PATHNAME","GET_TRANSMISSION_STATUS"],builtinVariables:["@@DATEFIRST","@@DBTS","@@LANGID","@@LANGUAGE","@@LOCK_TIMEOUT","@@MAX_CONNECTIONS","@@MAX_PRECISION","@@NESTLEVEL","@@OPTIONS","@@REMSERVER","@@SERVERNAME","@@SERVICENAME","@@SPID","@@TEXTSIZE","@@VERSION","@@CURSOR_ROWS","@@FETCH_STATUS","@@DATEFIRST","@@PROCID","@@ERROR","@@IDENTITY","@@ROWCOUNT","@@TRANCOUNT","@@CONNECTIONS","@@CPU_BUSY","@@IDLE","@@IO_BUSY","@@PACKET_ERRORS","@@PACK_RECEIVED","@@PACK_SENT","@@TIMETICKS","@@TOTAL_ERRORS","@@TOTAL_READ","@@TOTAL_WRITE"],pseudoColumns:["$ACTION","$IDENTITY","$ROWGUID","$PARTITION"],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@keywords":"keyword","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/N'/,{token:"string",next:"@string"}],[/'/,{token:"string",next:"@string"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/\[/,{token:"identifier.quote",next:"@bracketedIdentifier"}],[/"/,{token:"identifier.quote",next:"@quotedIdentifier"}]],bracketedIdentifier:[[/[^\]]+/,"identifier"],[/]]/,"identifier"],[/]/,{token:"identifier.quote",next:"@pop"}]],quotedIdentifier:[[/[^"]+/,"identifier"],[/""/,"identifier"],[/"/,{token:"identifier.quote",next:"@pop"}]],scopes:[[/BEGIN\s+(DISTRIBUTED\s+)?TRAN(SACTION)?\b/i,"keyword"],[/BEGIN\s+TRY\b/i,{token:"keyword.try"}],[/END\s+TRY\b/i,{token:"keyword.try"}],[/BEGIN\s+CATCH\b/i,{token:"keyword.catch"}],[/END\s+CATCH\b/i,{token:"keyword.catch"}],[/(BEGIN|CASE)\b/i,{token:"keyword.block"}],[/END\b/i,{token:"keyword.block"}],[/WHEN\b/i,{token:"keyword.choice"}],[/THEN\b/i,{token:"keyword.choice"}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6692.9322b59d.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6692.9322b59d.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6692.9322b59d.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6708.5cf2a45c.chunk.js b/ydb/core/viewer/monitoring/static/js/6708.5cf2a45c.chunk.js deleted file mode 100644 index d8fc1c63b99e..000000000000 --- a/ydb/core/viewer/monitoring/static/js/6708.5cf2a45c.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6708],{76708:function(e,t,n){n.r(t),n.d(t,{conf:function(){return o},language:function(){return i}});var o={wordPattern:/(#?-?\d*\.\d\w*%?)|([@$#!.:]?[\w-?]+%?)|[@#!.]/g,comments:{blockComment:["/*","*/"],lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/"),end:new RegExp("^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/")}}},i={defaultToken:"",tokenPostfix:".scss",ws:"[ \t\n\r\f]*",identifier:"-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],tokenizer:{root:[{include:"@selector"}],selector:[{include:"@comments"},{include:"@import"},{include:"@variabledeclaration"},{include:"@warndebug"},["[@](include)",{token:"keyword",next:"@includedeclaration"}],["[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)",{token:"keyword",next:"@keyframedeclaration"}],["[@](page|content|font-face|-moz-document)",{token:"keyword"}],["[@](charset|namespace)",{token:"keyword",next:"@declarationbody"}],["[@](function)",{token:"keyword",next:"@functiondeclaration"}],["[@](mixin)",{token:"keyword",next:"@mixindeclaration"}],["url(\\-prefix)?\\(",{token:"meta",next:"@urldeclaration"}],{include:"@controlstatement"},{include:"@selectorname"},["[&\\*]","tag"],["[>\\+,]","delimiter"],["\\[",{token:"delimiter.bracket",next:"@selectorattribute"}],["{",{token:"delimiter.curly",next:"@selectorbody"}]],selectorbody:[["[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))","attribute.name","@rulevalue"],{include:"@selector"},["[@](extend)",{token:"keyword",next:"@extendbody"}],["[@](return)",{token:"keyword",next:"@declarationbody"}],["}",{token:"delimiter.curly",next:"@pop"}]],selectorname:[["#{",{token:"meta",next:"@variableinterpolation"}],["(\\.|#(?=[^{])|%|(@identifier)|:)+","tag"]],selectorattribute:[{include:"@term"},["]",{token:"delimiter.bracket",next:"@pop"}]],term:[{include:"@comments"},["url(\\-prefix)?\\(",{token:"meta",next:"@urldeclaration"}],{include:"@functioninvocation"},{include:"@numbers"},{include:"@strings"},{include:"@variablereference"},["(and\\b|or\\b|not\\b)","operator"],{include:"@name"},["([<>=\\+\\-\\*\\/\\^\\|\\~,])","operator"],[",","delimiter"],["!default","literal"],["\\(",{token:"delimiter.parenthesis",next:"@parenthizedterm"}]],rulevalue:[{include:"@term"},["!important","literal"],[";","delimiter","@pop"],["{",{token:"delimiter.curly",switchTo:"@nestedproperty"}],["(?=})",{token:"",next:"@pop"}]],nestedproperty:[["[*_]?@identifier@ws:","attribute.name","@rulevalue"],{include:"@comments"},["}",{token:"delimiter.curly",next:"@pop"}]],warndebug:[["[@](warn|debug)",{token:"keyword",next:"@declarationbody"}]],import:[["[@](import)",{token:"keyword",next:"@declarationbody"}]],variabledeclaration:[["\\$@identifier@ws:","variable.decl","@declarationbody"]],urldeclaration:[{include:"@strings"},["[^)\r\n]+","string"],["\\)",{token:"meta",next:"@pop"}]],parenthizedterm:[{include:"@term"},["\\)",{token:"delimiter.parenthesis",next:"@pop"}]],declarationbody:[{include:"@term"},[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],extendbody:[{include:"@selectorname"},["!optional","literal"],[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],variablereference:[["\\$@identifier","variable.ref"],["\\.\\.\\.","operator"],["#{",{token:"meta",next:"@variableinterpolation"}]],variableinterpolation:[{include:"@variablereference"},["}",{token:"meta",next:"@pop"}]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],name:[["@identifier","attribute.value"]],numbers:[["(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?",{token:"number",next:"@units"}],["#[0-9a-fA-F_]+(?!\\w)","number.hex"]],units:[["(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?","number","@pop"]],functiondeclaration:[["@identifier@ws\\(",{token:"meta",next:"@parameterdeclaration"}],["{",{token:"delimiter.curly",switchTo:"@functionbody"}]],mixindeclaration:[["@identifier@ws\\(",{token:"meta",next:"@parameterdeclaration"}],["@identifier","meta"],["{",{token:"delimiter.curly",switchTo:"@selectorbody"}]],parameterdeclaration:[["\\$@identifier@ws:","variable.decl"],["\\.\\.\\.","operator"],[",","delimiter"],{include:"@term"},["\\)",{token:"meta",next:"@pop"}]],includedeclaration:[{include:"@functioninvocation"},["@identifier","meta"],[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}],["{",{token:"delimiter.curly",switchTo:"@selectorbody"}]],keyframedeclaration:[["@identifier","meta"],["{",{token:"delimiter.curly",switchTo:"@keyframebody"}]],keyframebody:[{include:"@term"},["{",{token:"delimiter.curly",next:"@selectorbody"}],["}",{token:"delimiter.curly",next:"@pop"}]],controlstatement:[["[@](if|else|for|while|each|media)",{token:"keyword.flow",next:"@controlstatementdeclaration"}]],controlstatementdeclaration:[["(in|from|through|if|to)\\b",{token:"keyword.flow"}],{include:"@term"},["{",{token:"delimiter.curly",switchTo:"@selectorbody"}]],functionbody:[["[@](return)",{token:"keyword"}],{include:"@variabledeclaration"},{include:"@term"},{include:"@controlstatement"},[";","delimiter"],["}",{token:"delimiter.curly",next:"@pop"}]],functioninvocation:[["@identifier\\(",{token:"meta",next:"@functionarguments"}]],functionarguments:[["\\$@identifier@ws:","attribute.name"],["[,]","delimiter"],{include:"@term"},["\\)",{token:"meta",next:"@pop"}]],strings:[['~?"',{token:"string.delimiter",next:"@stringenddoublequote"}],["~?'",{token:"string.delimiter",next:"@stringendquote"}]],stringenddoublequote:[["\\\\.","string"],['"',{token:"string.delimiter",next:"@pop"}],[".","string"]],stringendquote:[["\\\\.","string"],["'",{token:"string.delimiter",next:"@pop"}],[".","string"]]}}}}]); -//# sourceMappingURL=6708.5cf2a45c.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/674.e6536250.chunk.js b/ydb/core/viewer/monitoring/static/js/674.e6536250.chunk.js new file mode 100644 index 000000000000..566d8c952ad1 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/674.e6536250.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[674],{10674:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"km",weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekStart:1,weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/678.b73063ff.chunk.js b/ydb/core/viewer/monitoring/static/js/678.b73063ff.chunk.js new file mode 100644 index 000000000000..ca33b05d6f5f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/678.b73063ff.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[678],{40678:function(_,t,e){_.exports=function(_){"use strict";function t(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var e=t(_),n="\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),r="\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),s="\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),u="\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),m=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function i(_,t,e){var n,r;return"m"===e?t?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":_+" "+(n=+_,r={mm:t?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[e].split("_"),n%10==1&&n%100!=11?r[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?r[1]:r[2])}var d=function(_,t){return m.test(t)?n[_.month()]:r[_.month()]};d.s=r,d.f=n;var M=function(_,t){return m.test(t)?s[_.month()]:u[_.month()]};M.s=u,M.f=s;var o={name:"ru",weekdays:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u0432\u0441\u043a_\u043f\u043d\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043f\u0442\u043d_\u0441\u0431\u0442".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),months:d,monthsShort:M,weekStart:1,yearStart:4,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",m:i,mm:i,h:"\u0447\u0430\u0441",hh:i,d:"\u0434\u0435\u043d\u044c",dd:i,M:"\u043c\u0435\u0441\u044f\u0446",MM:i,y:"\u0433\u043e\u0434",yy:i},ordinal:function(_){return _},meridiem:function(_){return _<4?"\u043d\u043e\u0447\u0438":_<12?"\u0443\u0442\u0440\u0430":_<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"}};return e.default.locale(o,null,!0),o}(e(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6795.5ec0c96a.chunk.js b/ydb/core/viewer/monitoring/static/js/6795.5ec0c96a.chunk.js new file mode 100644 index 000000000000..9e39aef92467 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6795.5ec0c96a.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6795.5ec0c96a.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6795],{66795:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>i,language:()=>r});var i={wordPattern:/(#?-?\d*\.\d\w*%?)|((::|[@#.!:])?[\w-?]+%?)|::|[@#.!:]/g,comments:{blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/"),end:new RegExp("^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/")}}},r={defaultToken:"",tokenPostfix:".css",ws:"[ \t\n\r\f]*",identifier:"-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",brackets:[{open:"{",close:"}",token:"delimiter.bracket"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],tokenizer:{root:[{include:"@selector"}],selector:[{include:"@comments"},{include:"@import"},{include:"@strings"},["[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)",{token:"keyword",next:"@keyframedeclaration"}],["[@](page|content|font-face|-moz-document)",{token:"keyword"}],["[@](charset|namespace)",{token:"keyword",next:"@declarationbody"}],["(url-prefix)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],["(url)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],{include:"@selectorname"},["[\\*]","tag"],["[>\\+,]","delimiter"],["\\[",{token:"delimiter.bracket",next:"@selectorattribute"}],["{",{token:"delimiter.bracket",next:"@selectorbody"}]],selectorbody:[{include:"@comments"},["[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))","attribute.name","@rulevalue"],["}",{token:"delimiter.bracket",next:"@pop"}]],selectorname:[["(\\.|#(?=[^{])|%|(@identifier)|:)+","tag"]],selectorattribute:[{include:"@term"},["]",{token:"delimiter.bracket",next:"@pop"}]],term:[{include:"@comments"},["(url-prefix)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],["(url)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],{include:"@functioninvocation"},{include:"@numbers"},{include:"@name"},{include:"@strings"},["([<>=\\+\\-\\*\\/\\^\\|\\~,])","delimiter"],[",","delimiter"]],rulevalue:[{include:"@comments"},{include:"@strings"},{include:"@term"},["!important","keyword"],[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],warndebug:[["[@](warn|debug)",{token:"keyword",next:"@declarationbody"}]],import:[["[@](import)",{token:"keyword",next:"@declarationbody"}]],urldeclaration:[{include:"@strings"},["[^)\r\n]+","string"],["\\)",{token:"delimiter.parenthesis",next:"@pop"}]],parenthizedterm:[{include:"@term"},["\\)",{token:"delimiter.parenthesis",next:"@pop"}]],declarationbody:[{include:"@term"},[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[/[^*/]+/,"comment"],[/./,"comment"]],name:[["@identifier","attribute.value"]],numbers:[["-?(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?",{token:"attribute.value.number",next:"@units"}],["#[0-9a-fA-F_]+(?!\\w)","attribute.value.hex"]],units:[["(em|ex|ch|rem|fr|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?","attribute.value.unit","@pop"]],keyframedeclaration:[["@identifier","attribute.value"],["{",{token:"delimiter.bracket",switchTo:"@keyframebody"}]],keyframebody:[{include:"@term"},["{",{token:"delimiter.bracket",next:"@selectorbody"}],["}",{token:"delimiter.bracket",next:"@pop"}]],functioninvocation:[["@identifier\\(",{token:"attribute.value",next:"@functionarguments"}]],functionarguments:[["\\$@identifier@ws:","attribute.name"],["[,]","delimiter"],{include:"@term"},["\\)",{token:"attribute.value",next:"@pop"}]],strings:[['~?"',{token:"string",next:"@stringenddoublequote"}],["~?'",{token:"string",next:"@stringendquote"}]],stringenddoublequote:[["\\\\.","string"],['"',{token:"string",next:"@pop"}],[/[^\\"]+/,"string"],[".","string"]],stringendquote:[["\\\\.","string"],["'",{token:"string",next:"@pop"}],[/[^\\']+/,"string"],[".","string"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6795.5ec0c96a.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6795.5ec0c96a.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6795.5ec0c96a.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6815.672badd5.chunk.js b/ydb/core/viewer/monitoring/static/js/6815.672badd5.chunk.js new file mode 100644 index 000000000000..e6d2967d92c0 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6815.672badd5.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6815],{6815:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),u={name:"en-il",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return a.default.locale(u,null,!0),u}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6876.867b698c.chunk.js b/ydb/core/viewer/monitoring/static/js/6876.867b698c.chunk.js new file mode 100644 index 000000000000..e965e2985548 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6876.867b698c.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6876],{36876:(e,t,C)=>{C.r(t),C.d(t,{ReactComponent:()=>u,default:()=>E});var r,a,n,o,i,l,s,d,c,H,p,V,k,M=C(68963);function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var C=arguments[t];for(var r in C)Object.prototype.hasOwnProperty.call(C,r)&&(e[r]=C[r])}return e},h.apply(this,arguments)}function Z(e,t){let{title:C,titleId:Z,...u}=e;return M.createElement("svg",h({width:260,height:260,viewBox:"0 0 520 520",fill:"none",xmlns:"http://www.w3.org/2000/svg",ref:t,"aria-labelledby":Z},u),C?M.createElement("title",{id:Z},C):null,r||(r=M.createElement("path",{opacity:.1,d:"M228.637 445C217.178 445.049 206.065 441.074 197.233 433.768L28.4227 288.499C24.7711 285.319 22.4943 280.846 22.0715 276.02C21.6487 271.195 23.1128 266.393 26.1557 262.626L65.3512 214.612C66.9235 212.684 68.8667 211.091 71.0657 209.927C73.2646 208.764 75.6745 208.055 78.1525 207.841C80.6305 207.627 83.1263 207.913 85.4917 208.682C87.8572 209.452 90.0443 210.688 91.9234 212.319L223.682 326.793L435.516 94.088C438.811 90.4596 443.405 88.2807 448.298 88.0253C453.191 87.7699 457.987 89.4587 461.642 92.7243L507.824 134.205C509.647 135.841 511.129 137.821 512.184 140.032C513.24 142.243 513.849 144.64 513.975 147.087C514.102 149.534 513.744 151.982 512.922 154.29C512.101 156.598 510.831 158.721 509.187 160.536L265.553 428.549C260.881 433.709 255.185 437.838 248.829 440.671C242.472 443.503 235.595 444.978 228.637 445Z",fill:"#509CF5"})),a||(a=M.createElement("path",{d:"M412.933 102.332H294.933C289.433 102.332 284.933 106.832 284.933 112.332V315.432C284.933 320.932 289.433 325.432 294.933 325.432H446.433C451.933 325.432 456.433 320.932 456.433 315.432V133.732L429.933 107.332",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.01 10.02"})),n||(n=M.createElement("path",{d:"M425.033 102.332V104.332",stroke:"#00E6C5",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),o||(o=M.createElement("path",{d:"M425.033 115.031V126.331C425.033 130.431 428.333 133.731 432.433 133.731H449.033",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.27 10.68"})),i||(i=M.createElement("path",{d:"M454.333 133.73H456.333",stroke:"#00E6C5",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),l||(l=M.createElement("path",{d:"M77 397.052L89.1 409L110 388",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4.84211,strokeLinecap:"round",strokeLinejoin:"round"})),s||(s=M.createElement("path",{d:"M125 398C125 416.775 109.775 432 91 432C72.2252 432 57 416.775 57 398C57 379.225 72.2252 364 91 364C109.775 364 125 379.225 125 398Z",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4.84211,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.84 12.11"})),d||(d=M.createElement("path",{d:"M147.5 119C147.5 117.895 146.605 117 145.5 117C144.395 117 143.5 117.895 143.5 119H147.5ZM143.5 129.8C143.5 130.905 144.395 131.8 145.5 131.8C146.605 131.8 147.5 130.905 147.5 129.8H143.5ZM147.5 152.5C147.5 151.395 146.605 150.5 145.5 150.5C144.395 150.5 143.5 151.395 143.5 152.5H147.5ZM143.5 164.2C143.5 165.305 144.395 166.2 145.5 166.2C146.605 166.2 147.5 165.305 147.5 164.2H143.5ZM168.1 143.602C169.205 143.602 170.1 142.706 170.1 141.602C170.1 140.497 169.205 139.602 168.1 139.602V143.602ZM157.2 139.602C156.096 139.602 155.2 140.497 155.2 141.602C155.2 142.706 156.096 143.602 157.2 143.602V139.602ZM133.7 143.602C134.805 143.602 135.7 142.706 135.7 141.602C135.7 140.497 134.805 139.602 133.7 139.602V143.602ZM122.9 139.602C121.795 139.602 120.9 140.497 120.9 141.602C120.9 142.706 121.795 143.602 122.9 143.602V139.602ZM143.5 119V129.8H147.5V119H143.5ZM143.5 152.5V164.2H147.5V152.5H143.5ZM168.1 139.602H157.2V143.602H168.1V139.602ZM133.7 139.602H122.9V143.602H133.7V139.602Z",fill:"#2EE5C0",fillOpacity:.8})),c||(c=M.createElement("path",{d:"M406.3 397.5C406.3 396.395 405.405 395.5 404.3 395.5C403.195 395.5 402.3 396.395 402.3 397.5H406.3ZM402.3 403.1C402.3 404.205 403.195 405.1 404.3 405.1C405.405 405.1 406.3 404.205 406.3 403.1H402.3ZM406.3 414.898C406.3 413.794 405.405 412.898 404.3 412.898C403.195 412.898 402.3 413.794 402.3 414.898H406.3ZM402.3 420.998C402.3 422.103 403.195 422.998 404.3 422.998C405.405 422.998 406.3 422.103 406.3 420.998H402.3ZM416.1 411.2C417.205 411.2 418.1 410.305 418.1 409.2C418.1 408.095 417.205 407.2 416.1 407.2V411.2ZM410.4 407.2C409.295 407.2 408.4 408.095 408.4 409.2C408.4 410.305 409.295 411.2 410.4 411.2V407.2ZM398.2 411.2C399.305 411.2 400.2 410.305 400.2 409.2C400.2 408.095 399.305 407.2 398.2 407.2V411.2ZM392.5 407.2C391.395 407.2 390.5 408.095 390.5 409.2C390.5 410.305 391.395 411.2 392.5 411.2V407.2ZM402.3 397.5V403.1H406.3V397.5H402.3ZM402.3 414.898V420.998H406.3V414.898H402.3ZM416.1 407.2H410.4V411.2H416.1V407.2ZM398.2 407.2H392.5V411.2H398.2V407.2Z",fill:"#2EE5C0",fillOpacity:.8})),H||(H=M.createElement("path",{d:"M186 385.667V394.833C186 397.264 185.012 399.596 183.254 401.315C181.496 403.034 179.111 404 176.625 404H121C115.477 404 111 399.523 111 394V249C111 243.477 115.477 239 121 239H176.625C179.111 239 181.496 239.966 183.254 241.685C185.012 243.404 186 245.736 186 248.167V385.667Z",fill:"#0067C1"})),p||(p=M.createElement("path",{d:"M177.143 375.273V384.637C177.143 387.12 176.153 389.501 174.392 391.257C172.63 393.013 170.241 394 167.75 394H112C106.477 394 102 389.522 102 384V235.465C102 229.942 106.477 225.465 112 225.465H167.75C170.241 225.465 172.63 226.451 174.392 228.207C176.153 229.963 177.143 232.345 177.143 234.828V375.273Z",fill:"#007CE9"})),V||(V=M.createElement("path",{d:"M292.385 235.185C291.545 236.543 292.529 238.321 294.126 238.321H375.327C379.067 238.242 382.784 238.917 386.255 240.305C389.726 241.693 392.879 243.765 395.524 246.398C398.169 249.031 400.252 252.169 401.646 255.623C403.041 259.078 403.718 262.778 403.639 266.5C403.639 294.679 394.201 398 356.452 398H242.081C230.712 398 219.806 393.497 211.748 385.477L206.04 379.797C205.665 379.424 205.158 379.214 204.629 379.214H191.299H179.143C178.038 379.214 177.143 378.319 177.143 377.214V239.495C177.143 238.847 177.668 238.321 178.317 238.321C195.697 238.321 212.371 231.438 224.69 219.177L233.949 209.961C240.092 203.848 245.391 196.942 249.705 189.426L267.012 159.283C275.636 144.262 293.887 133.185 306.212 145.354C312.929 151.987 316.741 160.994 316.815 170.411C316.815 171.538 316.721 172.665 316.626 173.886C314.302 197.951 298.104 225.943 292.385 235.185Z",fill:"#FFCC00"})),k||(k=M.createElement("path",{d:"M356.457 369.801H237.651C229.12 369.801 220.937 366.421 214.893 360.401C208.849 354.381 200.666 351.001 192.135 351.001H177.143V379.2H192.135C200.666 379.2 208.849 382.58 214.893 388.6C220.937 394.62 229.12 398 237.651 398H356.457C394.207 398 403.645 294.601 403.645 266.402C403.645 263.723 403.328 261.054 402.701 258.449C399.568 298.831 387.743 369.801 356.457 369.801Z",fill:"#DEB700"})))}const u=M.forwardRef(Z),E=C.p+"static/media/thumbsUp.d4a03fbaa64ce85a0045bf8ba77f8e2b.svg"}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6877.d2d51d98.chunk.js b/ydb/core/viewer/monitoring/static/js/6877.d2d51d98.chunk.js new file mode 100644 index 000000000000..c15823f13307 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6877.d2d51d98.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6877],{36877:function(e,a,_){e.exports=function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=a(e),n={name:"bi",weekdays:"Sande_Mande_Tusde_Wenesde_Tosde_Fraede_Sarade".split("_"),months:"Januari_Februari_Maj_Eprel_Mei_Jun_Julae_Okis_Septemba_Oktoba_Novemba_Disemba".split("_"),weekStart:1,weekdaysShort:"San_Man_Tus_Wen_Tos_Frae_Sar".split("_"),monthsShort:"Jan_Feb_Maj_Epr_Mai_Jun_Jul_Oki_Sep_Okt_Nov_Dis".split("_"),weekdaysMin:"San_Ma_Tu_We_To_Fr_Sar".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"lo %s",past:"%s bifo",s:"sam seken",m:"wan minit",mm:"%d minit",h:"wan haoa",hh:"%d haoa",d:"wan dei",dd:"%d dei",M:"wan manis",MM:"%d manis",y:"wan yia",yy:"%d yia"}};return _.default.locale(n,null,!0),n}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6887.0855fd66.chunk.js b/ydb/core/viewer/monitoring/static/js/6887.0855fd66.chunk.js new file mode 100644 index 000000000000..88df5a63697e --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6887.0855fd66.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6887],{96887:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={name:"ar-ly",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekStart:6,weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(_){return _},meridiem:function(_){return _>12?"\u0645":"\u0635"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return t.default.locale(n,null,!0),n}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6892.2c3c2bcb.chunk.js b/ydb/core/viewer/monitoring/static/js/6892.2c3c2bcb.chunk.js new file mode 100644 index 000000000000..389b8564a351 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6892.2c3c2bcb.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6892],{46892:function(e,_,r){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=_(e),u={name:"fo",weekdays:"sunnudagur_m\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),months:"januar_februar_mars_apr\xedl_mai_juni_juli_august_september_oktober_november_desember".split("_"),weekStart:1,weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_fr_le".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"}};return r.default.locale(u,null,!0),u}(r(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6892.3db15360.chunk.js b/ydb/core/viewer/monitoring/static/js/6892.3db15360.chunk.js deleted file mode 100644 index 652a681dbecc..000000000000 --- a/ydb/core/viewer/monitoring/static/js/6892.3db15360.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6892],{66892:function(e,t,s){s.r(t),s.d(t,{conf:function(){return r},language:function(){return o}});var r={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},o={defaultToken:"",tokenPostfix:".hcl",keywords:["var","local","path","for_each","any","string","number","bool","true","false","null","if ","else ","endif ","for ","in","endfor"],operators:["=",">=","<=","==","!=","+","-","*","/","%","&&","||","!","<",">","?","...",":"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,terraformFunctions:/(abs|ceil|floor|log|max|min|pow|signum|chomp|format|formatlist|indent|join|lower|regex|regexall|replace|split|strrev|substr|title|trimspace|upper|chunklist|coalesce|coalescelist|compact|concat|contains|distinct|element|flatten|index|keys|length|list|lookup|map|matchkeys|merge|range|reverse|setintersection|setproduct|setunion|slice|sort|transpose|values|zipmap|base64decode|base64encode|base64gzip|csvdecode|jsondecode|jsonencode|urlencode|yamldecode|yamlencode|abspath|dirname|pathexpand|basename|file|fileexists|fileset|filebase64|templatefile|formatdate|timeadd|timestamp|base64sha256|base64sha512|bcrypt|filebase64sha256|filebase64sha512|filemd5|filemd1|filesha256|filesha512|md5|rsadecrypt|sha1|sha256|sha512|uuid|uuidv5|cidrhost|cidrnetmask|cidrsubnet|tobool|tolist|tomap|tonumber|toset|tostring)/,terraformMainBlocks:/(module|data|terraform|resource|provider|variable|output|locals)/,tokenizer:{root:[[/^@terraformMainBlocks([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)(\{)/,["type","","string","","string","","@brackets"]],[/(\w+[ \t]+)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)(\{)/,["identifier","","string","","string","","@brackets"]],[/(\w+[ \t]+)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)(=)(\{)/,["identifier","","string","","operator","","@brackets"]],{include:"@terraform"}],terraform:[[/@terraformFunctions(\()/,["type","@brackets"]],[/[a-zA-Z_]\w*-*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"variable"}}],{include:"@whitespace"},{include:"@heredoc"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\d[\d']*/,"number"],[/\d/,"number"],[/[;,.]/,"delimiter"],[/"/,"string","@string"],[/'/,"invalid"]],heredoc:[[/<<[-]*\s*["]?([\w\-]+)["]?/,{token:"string.heredoc.delimiter",next:"@heredocBody.$1"}]],heredocBody:[[/([\w\-]+)$/,{cases:{"$1==$S2":[{token:"string.heredoc.delimiter",next:"@popall"}],"@default":"string.heredoc"}}],[/./,"string.heredoc"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"],[/#.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],string:[[/\$\{/,{token:"delimiter",next:"@stringExpression"}],[/[^\\"\$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@popall"]],stringInsideExpression:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],stringExpression:[[/\}/,{token:"delimiter",next:"@pop"}],[/"/,"string","@stringInsideExpression"],{include:"@terraform"}]}}}}]); -//# sourceMappingURL=6892.3db15360.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6898.5580b941.chunk.js b/ydb/core/viewer/monitoring/static/js/6898.5580b941.chunk.js new file mode 100644 index 000000000000..8c2972aed2a7 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6898.5580b941.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6898.5580b941.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6898],{86898:(e,n,t)=>{t.r(n),t.d(n,{conf:()=>o,language:()=>s});var o={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"""',close:'"""',notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"""',close:'"""'},{open:'"',close:'"'}],folding:{offSide:!0}},s={defaultToken:"invalid",tokenPostfix:".gql",keywords:["null","true","false","query","mutation","subscription","extend","schema","directive","scalar","type","interface","union","enum","input","implements","fragment","on"],typeKeywords:["Int","Float","String","Boolean","ID"],directiveLocations:["SCHEMA","SCALAR","OBJECT","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION"],operators:["=","!","?",":","&","|"],symbols:/[=!?:&|]+/,escapes:/\\(?:["\\\/bfnrt]|u[0-9A-Fa-f]{4})/,tokenizer:{root:[[/[a-z_][\w$]*/,{cases:{"@keywords":"keyword","@default":"key.identifier"}}],[/[$][\w$]*/,{cases:{"@keywords":"keyword","@default":"argument.identifier"}}],[/[A-Z][\w\$]*/,{cases:{"@typeKeywords":"keyword","@default":"type.identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,{token:"annotation",log:"annotation token: $0"}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/"""/,{token:"string",next:"@mlstring",nextEmbedded:"markdown"}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}]],mlstring:[[/[^"]+/,"string"],['"""',{token:"string",next:"@pop",nextEmbedded:"@pop"}]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/#.*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6898.5580b941.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6898.5580b941.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6898.5580b941.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6919.84ed9ccc.chunk.js b/ydb/core/viewer/monitoring/static/js/6919.84ed9ccc.chunk.js new file mode 100644 index 000000000000..e5c078969dc2 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6919.84ed9ccc.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 6919.84ed9ccc.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6919],{26919:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>l,language:()=>m});var o,i,s=n(41551),r=Object.defineProperty,d=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyNames,p=Object.prototype.hasOwnProperty,a=(e,t,n,o)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let i of c(t))p.call(e,i)||i===n||r(e,i,{get:()=>t[i],enumerable:!(o=d(t,i))||o.enumerable});return e},k={};a(k,o=s,"default"),i&&a(i,o,"default");var l={comments:{blockComment:["{/*","*/}"]},brackets:[["{","}"]],autoClosingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"\u201c",close:"\u201d"},{open:"\u2018",close:"\u2019"},{open:"`",close:"`"},{open:"{",close:"}"},{open:"(",close:")"},{open:"_",close:"_"},{open:"**",close:"**"},{open:"<",close:">"}],onEnterRules:[{beforeText:/^\s*- .+/,action:{indentAction:k.languages.IndentAction.None,appendText:"- "}},{beforeText:/^\s*\+ .+/,action:{indentAction:k.languages.IndentAction.None,appendText:"+ "}},{beforeText:/^\s*\* .+/,action:{indentAction:k.languages.IndentAction.None,appendText:"* "}},{beforeText:/^> /,action:{indentAction:k.languages.IndentAction.None,appendText:"> "}},{beforeText:/<\w+/,action:{indentAction:k.languages.IndentAction.Indent}},{beforeText:/\s+>\s*$/,action:{indentAction:k.languages.IndentAction.Indent}},{beforeText:/<\/\w+>/,action:{indentAction:k.languages.IndentAction.Outdent}},...Array.from({length:100},((e,t)=>({beforeText:new RegExp("^".concat(t,"\\. .+")),action:{indentAction:k.languages.IndentAction.None,appendText:"".concat(t+1,". ")}})))]},m={defaultToken:"",tokenPostfix:".mdx",control:/[!#()*+.[\\\]_`{}\-]/,escapes:/\\@control/,tokenizer:{root:[[/^---$/,{token:"meta.content",next:"@frontmatter",nextEmbedded:"yaml"}],[/^\s*import/,{token:"keyword",next:"@import",nextEmbedded:"js"}],[/^\s*export/,{token:"keyword",next:"@export",nextEmbedded:"js"}],[/<\w+/,{token:"type.identifier",next:"@jsx"}],[/<\/?\w+>/,"type.identifier"],[/^(\s*)(>*\s*)(#{1,6}\s)/,[{token:"white"},{token:"comment"},{token:"keyword",next:"@header"}]],[/^(\s*)(>*\s*)([*+-])(\s+)/,["white","comment","keyword","white"]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,["white","comment","number","white"]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,["white","comment","number","white"]],[/^(\s*)(>*\s*)(-{3,}|\*{3,}|_{3,})$/,["white","comment","keyword"]],[/`{3,}(\s.*)?$/,{token:"string",next:"@codeblock_backtick"}],[/~{3,}(\s.*)?$/,{token:"string",next:"@codeblock_tilde"}],[/`{3,}(\S+).*$/,{token:"string",next:"@codeblock_highlight_backtick",nextEmbedded:"$1"}],[/~{3,}(\S+).*$/,{token:"string",next:"@codeblock_highlight_tilde",nextEmbedded:"$1"}],[/^(\s*)(-{4,})$/,["white","comment"]],[/^(\s*)(>+)/,["white","comment"]],{include:"content"}],content:[[/(\[)(.+)(]\()(.+)(\s+".*")(\))/,["","string.link","","type.identifier","string.link",""]],[/(\[)(.+)(]\()(.+)(\))/,["","type.identifier","","string.link",""]],[/(\[)(.+)(]\[)(.+)(])/,["","type.identifier","","type.identifier",""]],[/(\[)(.+)(]:\s+)(\S*)/,["","type.identifier","","string.link"]],[/(\[)(.+)(])/,["","type.identifier",""]],[/`.*`/,"variable.source"],[/_/,{token:"emphasis",next:"@emphasis_underscore"}],[/\*(?!\*)/,{token:"emphasis",next:"@emphasis_asterisk"}],[/\*\*/,{token:"strong",next:"@strong"}],[/{/,{token:"delimiter.bracket",next:"@expression",nextEmbedded:"js"}]],import:[[/'\s*(;|$)/,{token:"string",next:"@pop",nextEmbedded:"@pop"}]],expression:[[/{/,{token:"delimiter.bracket",next:"@expression"}],[/}/,{token:"delimiter.bracket",next:"@pop",nextEmbedded:"@pop"}]],export:[[/^\s*$/,{token:"delimiter.bracket",next:"@pop",nextEmbedded:"@pop"}]],jsx:[[/\s+/,""],[/(\w+)(=)("(?:[^"\\]|\\.)*")/,["attribute.name","operator","string"]],[/(\w+)(=)('(?:[^'\\]|\\.)*')/,["attribute.name","operator","string"]],[/(\w+(?=\s|>|={|$))/,["attribute.name"]],[/={/,{token:"delimiter.bracket",next:"@expression",nextEmbedded:"js"}],[/>/,{token:"type.identifier",next:"@pop"}]],header:[[/.$/,{token:"keyword",next:"@pop"}],{include:"content"},[/./,{token:"keyword"}]],strong:[[/\*\*/,{token:"strong",next:"@pop"}],{include:"content"},[/./,{token:"strong"}]],emphasis_underscore:[[/_/,{token:"emphasis",next:"@pop"}],{include:"content"},[/./,{token:"emphasis"}]],emphasis_asterisk:[[/\*(?!\*)/,{token:"emphasis",next:"@pop"}],{include:"content"},[/./,{token:"emphasis"}]],frontmatter:[[/^---$/,{token:"meta.content",nextEmbedded:"@pop",next:"@pop"}]],codeblock_highlight_backtick:[[/\s*`{3,}\s*$/,{token:"string",next:"@pop",nextEmbedded:"@pop"}],[/.*$/,"variable.source"]],codeblock_highlight_tilde:[[/\s*~{3,}\s*$/,{token:"string",next:"@pop",nextEmbedded:"@pop"}],[/.*$/,"variable.source"]],codeblock_backtick:[[/\s*`{3,}\s*$/,{token:"string",next:"@pop"}],[/.*$/,"variable.source"]],codeblock_tilde:[[/\s*~{3,}\s*$/,{token:"string",next:"@pop"}],[/.*$/,"variable.source"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6919.84ed9ccc.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/6919.84ed9ccc.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6919.84ed9ccc.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/6954.e18be130.chunk.js b/ydb/core/viewer/monitoring/static/js/6954.e18be130.chunk.js new file mode 100644 index 000000000000..c1ccbf64b07f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6954.e18be130.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6954],{6954:function(a,i,n){a.exports=function(a){"use strict";function i(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var n=i(a),_={name:"gd",weekdays:"Did\xf2mhnaich_Diluain_Dim\xe0irt_Diciadain_Diardaoin_Dihaoine_Disathairne".split("_"),months:"Am Faoilleach_An Gearran_Am M\xe0rt_An Giblean_An C\xe8itean_An t-\xd2gmhios_An t-Iuchar_An L\xf9nastal_An t-Sultain_An D\xe0mhair_An t-Samhain_An D\xf9bhlachd".split("_"),weekStart:1,weekdaysShort:"Did_Dil_Dim_Dic_Dia_Dih_Dis".split("_"),monthsShort:"Faoi_Gear_M\xe0rt_Gibl_C\xe8it_\xd2gmh_Iuch_L\xf9n_Sult_D\xe0mh_Samh_D\xf9bh".split("_"),weekdaysMin:"D\xf2_Lu_M\xe0_Ci_Ar_Ha_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"}};return n.default.locale(_,null,!0),_}(n(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/6961.f4888ae1.chunk.js b/ydb/core/viewer/monitoring/static/js/6961.f4888ae1.chunk.js new file mode 100644 index 000000000000..7d3e7ac43eef --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/6961.f4888ae1.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[6961],{96961:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),t={name:"en-nz",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){var _=["th","st","nd","rd"],a=e%100;return"["+e+(_[(a-20)%10]||_[a]||_[0])+"]"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return a.default.locale(t,null,!0),t}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/698.746436d5.chunk.js b/ydb/core/viewer/monitoring/static/js/698.746436d5.chunk.js deleted file mode 100644 index d4ca10f93514..000000000000 --- a/ydb/core/viewer/monitoring/static/js/698.746436d5.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[698],{90698:function(e,n,t){t.r(n),t.d(n,{conf:function(){return r},language:function(){return i}});var o=t(37456),r={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],onEnterRules:[{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,afterText:/^\s*\*\/$/,action:{indentAction:o.Mj.IndentAction.IndentOutdent,appendText:" * "}},{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,action:{indentAction:o.Mj.IndentAction.None,appendText:" * "}},{beforeText:/^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,action:{indentAction:o.Mj.IndentAction.None,appendText:"* "}},{beforeText:/^(\t|(\ \ ))*\ \*\/\s*$/,action:{indentAction:o.Mj.IndentAction.None,removeText:1}}],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"`",close:"`",notIn:["string","comment"]},{open:"/**",close:" */",notIn:["string"]}],folding:{markers:{start:new RegExp("^\\s*//\\s*#?region\\b"),end:new RegExp("^\\s*//\\s*#?endregion\\b")}}},i={defaultToken:"invalid",tokenPostfix:".ts",keywords:["abstract","any","as","asserts","bigint","boolean","break","case","catch","class","continue","const","constructor","debugger","declare","default","delete","do","else","enum","export","extends","false","finally","for","from","function","get","if","implements","import","in","infer","instanceof","interface","is","keyof","let","module","namespace","never","new","null","number","object","package","private","protected","public","readonly","require","global","return","set","static","string","super","switch","symbol","this","throw","true","try","type","typeof","undefined","unique","unknown","var","void","while","with","yield","async","await","of"],operators:["<=",">=","==","!=","===","!==","=>","+","-","**","*","/","%","++","--","<<","</",">>",">>>","&","|","^","!","~","&&","||","??","?",":","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=","@"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,"delimiter.bracket"],{include:"common"}],common:[[/[a-z_$][\w$]*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[A-Z][\w\$]*/,"type.identifier"],{include:"@whitespace"},[/\/(?=([^\\\/]|\\.)+\/([gimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,{token:"regexp",bracket:"@open",next:"@regexp"}],[/[()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/!(?=([^=]|$))/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/(@digits)[eE]([\-+]?(@digits))?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,"number.float"],[/0[xX](@hexdigits)n?/,"number.hex"],[/0[oO]?(@octaldigits)n?/,"number.octal"],[/0[bB](@binarydigits)n?/,"number.binary"],[/(@digits)n?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"],[/`/,"string","@string_backtick"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@jsdoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],jsdoc:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,["regexp.escape.control","regexp.escape.control","regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,["regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?:|\?=|\?!)/,["regexp.escape.control","regexp.escape.control"]],[/[()]/,"regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/[^\\\/]/,"regexp"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/(\/)([gimsuy]*)/,[{token:"regexp",bracket:"@close",next:"@pop"},"keyword.other"]]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,{token:"regexp.escape.control",next:"@pop",bracket:"@close"}]],string_double:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],string_single:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"]],string_backtick:[[/\$\{/,{token:"delimiter.bracket",next:"@bracketCounting"}],[/[^\\`$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/`/,"string","@pop"]],bracketCounting:[[/\{/,"delimiter.bracket","@bracketCounting"],[/\}/,"delimiter.bracket","@pop"],{include:"common"}]}}}}]); -//# sourceMappingURL=698.746436d5.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7016.4a34a027.chunk.js b/ydb/core/viewer/monitoring/static/js/7016.4a34a027.chunk.js new file mode 100644 index 000000000000..b99708d6c8e3 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7016.4a34a027.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7016],{77016:function(e,t,r){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(e),_={words:{m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0438\u043d\u0443\u0442\u0430"],mm:["%d \u043c\u0438\u043d\u0443\u0442","%d \u043c\u0438\u043d\u0443\u0442\u0430","%d \u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["%d \u0441\u0430\u0442","%d \u0441\u0430\u0442\u0430","%d \u0441\u0430\u0442\u0438"],d:["\u0458\u0435\u0434\u0430\u043d \u0434\u0430\u043d","\u0458\u0435\u0434\u043d\u043e\u0433 \u0434\u0430\u043d\u0430"],dd:["%d \u0434\u0430\u043d","%d \u0434\u0430\u043d\u0430","%d \u0434\u0430\u043d\u0430"],M:["\u0458\u0435\u0434\u0430\u043d \u043c\u0435\u0441\u0435\u0446","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0435\u0441\u0435\u0446\u0430"],MM:["%d \u043c\u0435\u0441\u0435\u0446","%d \u043c\u0435\u0441\u0435\u0446\u0430","%d \u043c\u0435\u0441\u0435\u0446\u0438"],y:["\u0458\u0435\u0434\u043d\u0443 \u0433\u043e\u0434\u0438\u043d\u0443","\u0458\u0435\u0434\u043d\u0435 \u0433\u043e\u0434\u0438\u043d\u0435"],yy:["%d \u0433\u043e\u0434\u0438\u043d\u0443","%d \u0433\u043e\u0434\u0438\u043d\u0435","%d \u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammarCase:function(e,t){return e%10>=1&&e%10<=4&&(e%100<10||e%100>=20)?e%10==1?t[0]:t[1]:t[2]},relativeTimeFormatter:function(e,t,r,a){var m=_.words[r];if(1===r.length)return"y"===r&&t?"\u0458\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430":a||t?m[0]:m[1];var d=_.correctGrammarCase(e,m);return"yy"===r&&t&&"%d \u0433\u043e\u0434\u0438\u043d\u0443"===d?e+" \u0433\u043e\u0434\u0438\u043d\u0430":d.replace("%d",e)}},a={name:"sr-cyrl",weekdays:"\u041d\u0435\u0434\u0435\u0459\u0430_\u041f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0423\u0442\u043e\u0440\u0430\u043a_\u0421\u0440\u0435\u0434\u0430_\u0427\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u041f\u0435\u0442\u0430\u043a_\u0421\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u041d\u0435\u0434._\u041f\u043e\u043d._\u0423\u0442\u043e._\u0421\u0440\u0435._\u0427\u0435\u0442._\u041f\u0435\u0442._\u0421\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),months:"\u0408\u0430\u043d\u0443\u0430\u0440_\u0424\u0435\u0431\u0440\u0443\u0430\u0440_\u041c\u0430\u0440\u0442_\u0410\u043f\u0440\u0438\u043b_\u041c\u0430\u0458_\u0408\u0443\u043d_\u0408\u0443\u043b_\u0410\u0432\u0433\u0443\u0441\u0442_\u0421\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u041e\u043a\u0442\u043e\u0431\u0430\u0440_\u041d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0414\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0408\u0430\u043d._\u0424\u0435\u0431._\u041c\u0430\u0440._\u0410\u043f\u0440._\u041c\u0430\u0458_\u0408\u0443\u043d_\u0408\u0443\u043b_\u0410\u0432\u0433._\u0421\u0435\u043f._\u041e\u043a\u0442._\u041d\u043e\u0432._\u0414\u0435\u0446.".split("_"),weekStart:1,relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:_.relativeTimeFormatter,mm:_.relativeTimeFormatter,h:_.relativeTimeFormatter,hh:_.relativeTimeFormatter,d:_.relativeTimeFormatter,dd:_.relativeTimeFormatter,M:_.relativeTimeFormatter,MM:_.relativeTimeFormatter,y:_.relativeTimeFormatter,yy:_.relativeTimeFormatter},ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"}};return r.default.locale(a,null,!0),a}(r(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/704.45771d88.chunk.js b/ydb/core/viewer/monitoring/static/js/704.45771d88.chunk.js new file mode 100644 index 000000000000..94c40689be0e --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/704.45771d88.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[704],{704:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-dz",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u0623\u062d_\u0625\u062b_\u062b\u0644\u0627_\u0623\u0631_\u062e\u0645_\u062c\u0645_\u0633\u0628".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7119.e94f8dac.chunk.js b/ydb/core/viewer/monitoring/static/js/7119.e94f8dac.chunk.js new file mode 100644 index 000000000000..607cd2437a9c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7119.e94f8dac.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7119],{97119:function(_,e,a){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var a=e(_),t={name:"tzl",weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),weekStart:1,weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".split("_"),ordinal:function(_){return _},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"}};return a.default.locale(t,null,!0),t}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7168.ed7798a9.chunk.js b/ydb/core/viewer/monitoring/static/js/7168.ed7798a9.chunk.js deleted file mode 100644 index 1abe372728cc..000000000000 --- a/ydb/core/viewer/monitoring/static/js/7168.ed7798a9.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7168],{77168:function(e,t,n){n.r(t),n.d(t,{conf:function(){return i},language:function(){return o}});var i={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'"},{open:'"',close:'"'}],autoClosingPairs:[{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["comment"]},{open:'"""',close:'"""'},{open:"`",close:"`",notIn:["string","comment"]},{open:"(",close:")"},{open:"{",close:"}"},{open:"[",close:"]"},{open:"<<",close:">>"}],indentationRules:{increaseIndentPattern:/^\s*(after|else|catch|rescue|fn|[^#]*(do|<\-|\->|\{|\[|\=))\s*$/,decreaseIndentPattern:/^\s*((\}|\])\s*$|(after|else|catch|rescue|end)\b)/}},o={defaultToken:"source",tokenPostfix:".elixir",brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"<<",close:">>",token:"delimiter.angle.special"}],declarationKeywords:["def","defp","defn","defnp","defguard","defguardp","defmacro","defmacrop","defdelegate","defcallback","defmacrocallback","defmodule","defprotocol","defexception","defimpl","defstruct"],operatorKeywords:["and","in","not","or","when"],namespaceKeywords:["alias","import","require","use"],otherKeywords:["after","case","catch","cond","do","else","end","fn","for","if","quote","raise","receive","rescue","super","throw","try","unless","unquote_splicing","unquote","with"],constants:["true","false","nil"],nameBuiltin:["__MODULE__","__DIR__","__ENV__","__CALLER__","__STACKTRACE__"],operator:/-[->]?|!={0,2}|\*|\/|\\\\|&{1,3}|\.\.?|\^(?:\^\^)?|\+\+?|<(?:-|<<|=|>|\|>|~>?)?|=~|={1,3}|>(?:=|>>)?|\|~>|\|>|\|{1,3}|~>>?|~~~|::/,variableName:/[a-z_][a-zA-Z0-9_]*[?!]?/,atomName:/[a-zA-Z_][a-zA-Z0-9_@]*[?!]?|@specialAtomName|@operator/,specialAtomName:/\.\.\.|<<>>|%\{\}|%|\{\}/,aliasPart:/[A-Z][a-zA-Z0-9_]*/,moduleName:/@aliasPart(?:\.@aliasPart)*/,sigilSymmetricDelimiter:/"""|'''|"|'|\/|\|/,sigilStartDelimiter:/@sigilSymmetricDelimiter|<|\{|\[|\(/,sigilEndDelimiter:/@sigilSymmetricDelimiter|>|\}|\]|\)/,decimal:/\d(?:_?\d)*/,hex:/[0-9a-fA-F](_?[0-9a-fA-F])*/,octal:/[0-7](_?[0-7])*/,binary:/[01](_?[01])*/,escape:/\\u[0-9a-fA-F]{4}|\\x[0-9a-fA-F]{2}|\\./,tokenizer:{root:[{include:"@whitespace"},{include:"@comments"},{include:"@keywordsShorthand"},{include:"@numbers"},{include:"@identifiers"},{include:"@strings"},{include:"@atoms"},{include:"@sigils"},{include:"@attributes"},{include:"@symbols"}],whitespace:[[/\s+/,"white"]],comments:[[/(#)(.*)/,["comment.punctuation","comment"]]],keywordsShorthand:[[/(@atomName)(:)/,["constant","constant.punctuation"]],[/"(?=([^"]|#\{.*?\}|\\")*":)/,{token:"constant.delimiter",next:"@doubleQuotedStringKeyword"}],[/'(?=([^']|#\{.*?\}|\\')*':)/,{token:"constant.delimiter",next:"@singleQuotedStringKeyword"}]],doubleQuotedStringKeyword:[[/":/,{token:"constant.delimiter",next:"@pop"}],{include:"@stringConstantContentInterpol"}],singleQuotedStringKeyword:[[/':/,{token:"constant.delimiter",next:"@pop"}],{include:"@stringConstantContentInterpol"}],numbers:[[/0b@binary/,"number.binary"],[/0o@octal/,"number.octal"],[/0x@hex/,"number.hex"],[/@decimal\.@decimal([eE]-?@decimal)?/,"number.float"],[/@decimal/,"number"]],identifiers:[[/\b(defp?|defnp?|defmacrop?|defguardp?|defdelegate)(\s+)(@variableName)(?!\s+@operator)/,["keyword.declaration","white",{cases:{unquote:"keyword","@default":"function"}}]],[/(@variableName)(?=\s*\.?\s*\()/,{cases:{"@declarationKeywords":"keyword.declaration","@namespaceKeywords":"keyword","@otherKeywords":"keyword","@default":"function.call"}}],[/(@moduleName)(\s*)(\.)(\s*)(@variableName)/,["type.identifier","white","operator","white","function.call"]],[/(:)(@atomName)(\s*)(\.)(\s*)(@variableName)/,["constant.punctuation","constant","white","operator","white","function.call"]],[/(\|>)(\s*)(@variableName)/,["operator","white",{cases:{"@otherKeywords":"keyword","@default":"function.call"}}]],[/(&)(\s*)(@variableName)/,["operator","white","function.call"]],[/@variableName/,{cases:{"@declarationKeywords":"keyword.declaration","@operatorKeywords":"keyword.operator","@namespaceKeywords":"keyword","@otherKeywords":"keyword","@constants":"constant.language","@nameBuiltin":"variable.language","_.*":"comment.unused","@default":"identifier"}}],[/@moduleName/,"type.identifier"]],strings:[[/"""/,{token:"string.delimiter",next:"@doubleQuotedHeredoc"}],[/'''/,{token:"string.delimiter",next:"@singleQuotedHeredoc"}],[/"/,{token:"string.delimiter",next:"@doubleQuotedString"}],[/'/,{token:"string.delimiter",next:"@singleQuotedString"}]],doubleQuotedHeredoc:[[/"""/,{token:"string.delimiter",next:"@pop"}],{include:"@stringContentInterpol"}],singleQuotedHeredoc:[[/'''/,{token:"string.delimiter",next:"@pop"}],{include:"@stringContentInterpol"}],doubleQuotedString:[[/"/,{token:"string.delimiter",next:"@pop"}],{include:"@stringContentInterpol"}],singleQuotedString:[[/'/,{token:"string.delimiter",next:"@pop"}],{include:"@stringContentInterpol"}],atoms:[[/(:)(@atomName)/,["constant.punctuation","constant"]],[/:"/,{token:"constant.delimiter",next:"@doubleQuotedStringAtom"}],[/:'/,{token:"constant.delimiter",next:"@singleQuotedStringAtom"}]],doubleQuotedStringAtom:[[/"/,{token:"constant.delimiter",next:"@pop"}],{include:"@stringConstantContentInterpol"}],singleQuotedStringAtom:[[/'/,{token:"constant.delimiter",next:"@pop"}],{include:"@stringConstantContentInterpol"}],sigils:[[/~[a-z]@sigilStartDelimiter/,{token:"@rematch",next:"@sigil.interpol"}],[/~[A-Z]@sigilStartDelimiter/,{token:"@rematch",next:"@sigil.noInterpol"}]],sigil:[[/~([a-zA-Z])\{/,{token:"@rematch",switchTo:"@sigilStart.$S2.$1.{.}"}],[/~([a-zA-Z])\[/,{token:"@rematch",switchTo:"@sigilStart.$S2.$1.[.]"}],[/~([a-zA-Z])\(/,{token:"@rematch",switchTo:"@sigilStart.$S2.$1.(.)"}],[/~([a-zA-Z])\</,{token:"@rematch",switchTo:"@sigilStart.$S2.$1.<.>"}],[/~([a-zA-Z])(@sigilSymmetricDelimiter)/,{token:"@rematch",switchTo:"@sigilStart.$S2.$1.$2.$2"}]],"sigilStart.interpol.s":[[/~s@sigilStartDelimiter/,{token:"string.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.interpol.s":[[/(@sigilEndDelimiter)[a-zA-Z]*/,{cases:{"$1==$S5":{token:"string.delimiter",next:"@pop"},"@default":"string"}}],{include:"@stringContentInterpol"}],"sigilStart.noInterpol.S":[[/~S@sigilStartDelimiter/,{token:"string.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.noInterpol.S":[[/(^|[^\\])\\@sigilEndDelimiter/,"string"],[/(@sigilEndDelimiter)[a-zA-Z]*/,{cases:{"$1==$S5":{token:"string.delimiter",next:"@pop"},"@default":"string"}}],{include:"@stringContent"}],"sigilStart.interpol.r":[[/~r@sigilStartDelimiter/,{token:"regexp.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.interpol.r":[[/(@sigilEndDelimiter)[a-zA-Z]*/,{cases:{"$1==$S5":{token:"regexp.delimiter",next:"@pop"},"@default":"regexp"}}],{include:"@regexpContentInterpol"}],"sigilStart.noInterpol.R":[[/~R@sigilStartDelimiter/,{token:"regexp.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.noInterpol.R":[[/(^|[^\\])\\@sigilEndDelimiter/,"regexp"],[/(@sigilEndDelimiter)[a-zA-Z]*/,{cases:{"$1==$S5":{token:"regexp.delimiter",next:"@pop"},"@default":"regexp"}}],{include:"@regexpContent"}],"sigilStart.interpol":[[/~([a-zA-Z])@sigilStartDelimiter/,{token:"sigil.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.interpol":[[/(@sigilEndDelimiter)[a-zA-Z]*/,{cases:{"$1==$S5":{token:"sigil.delimiter",next:"@pop"},"@default":"sigil"}}],{include:"@sigilContentInterpol"}],"sigilStart.noInterpol":[[/~([a-zA-Z])@sigilStartDelimiter/,{token:"sigil.delimiter",switchTo:"@sigilContinue.$S2.$S3.$S4.$S5"}]],"sigilContinue.noInterpol":[[/(^|[^\\])\\@sigilEndDelimiter/,"sigil"],[/(@sigilEndDelimiter)[a-zA-Z]*/,{cases:{"$1==$S5":{token:"sigil.delimiter",next:"@pop"},"@default":"sigil"}}],{include:"@sigilContent"}],attributes:[[/\@(module|type)?doc (~[sS])?"""/,{token:"comment.block.documentation",next:"@doubleQuotedHeredocDocstring"}],[/\@(module|type)?doc (~[sS])?"/,{token:"comment.block.documentation",next:"@doubleQuotedStringDocstring"}],[/\@(module|type)?doc false/,"comment.block.documentation"],[/\@(@variableName)/,"variable"]],doubleQuotedHeredocDocstring:[[/"""/,{token:"comment.block.documentation",next:"@pop"}],{include:"@docstringContent"}],doubleQuotedStringDocstring:[[/"/,{token:"comment.block.documentation",next:"@pop"}],{include:"@docstringContent"}],symbols:[[/\?(\\.|[^\\\s])/,"number.constant"],[/&\d+/,"operator"],[/<<<|>>>/,"operator"],[/[()\[\]\{\}]|<<|>>/,"@brackets"],[/\.\.\./,"identifier"],[/=>/,"punctuation"],[/@operator/,"operator"],[/[:;,.%]/,"punctuation"]],stringContentInterpol:[{include:"@interpolation"},{include:"@escapeChar"},{include:"@stringContent"}],stringContent:[[/./,"string"]],stringConstantContentInterpol:[{include:"@interpolation"},{include:"@escapeChar"},{include:"@stringConstantContent"}],stringConstantContent:[[/./,"constant"]],regexpContentInterpol:[{include:"@interpolation"},{include:"@escapeChar"},{include:"@regexpContent"}],regexpContent:[[/(\s)(#)(\s.*)$/,["white","comment.punctuation","comment"]],[/./,"regexp"]],sigilContentInterpol:[{include:"@interpolation"},{include:"@escapeChar"},{include:"@sigilContent"}],sigilContent:[[/./,"sigil"]],docstringContent:[[/./,"comment.block.documentation"]],escapeChar:[[/@escape/,"constant.character.escape"]],interpolation:[[/#{/,{token:"delimiter.bracket.embed",next:"@interpolationContinue"}]],interpolationContinue:[[/}/,{token:"delimiter.bracket.embed",next:"@pop"}],{include:"@root"}]}}}}]); -//# sourceMappingURL=7168.ed7798a9.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7202.fefd43ee.chunk.js b/ydb/core/viewer/monitoring/static/js/7202.fefd43ee.chunk.js new file mode 100644 index 000000000000..d90a6a274b47 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7202.fefd43ee.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7202],{47202:function(e,_,s){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=_(e),t={name:"ca",weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),months:"Gener_Febrer_Mar\xe7_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Mar\xe7_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",ll:"D MMM YYYY",lll:"D MMM YYYY, H:mm",llll:"ddd D MMM YYYY, H:mm"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:function(e){return e+(1===e||3===e?"r":2===e?"n":4===e?"t":"\xe8")}};return s.default.locale(t,null,!0),t}(s(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7257.8ce0d045.chunk.js b/ydb/core/viewer/monitoring/static/js/7257.8ce0d045.chunk.js new file mode 100644 index 000000000000..8ff2117ab9f8 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7257.8ce0d045.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7257],{7257:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),u={name:"en-sg",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return a.default.locale(u,null,!0),u}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7276.47f377a4.chunk.js b/ydb/core/viewer/monitoring/static/js/7276.47f377a4.chunk.js new file mode 100644 index 000000000000..ca3ce6bd46a8 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7276.47f377a4.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7276],{97276:function(e,_,n){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=_(e),r={name:"fr",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")}};return n.default.locale(r,null,!0),r}(n(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7388.9f447514.chunk.js b/ydb/core/viewer/monitoring/static/js/7388.9f447514.chunk.js new file mode 100644 index 000000000000..1e280897e5c6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7388.9f447514.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7388],{27388:function(e,a,t){e.exports=function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e);function u(e,a,t,u){var s={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],m:["\xfche minuti","\xfcks minut"],mm:["%d minuti","%d minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:["%d tunni","%d tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:["%d kuu","%d kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:["%d aasta","%d aastat"]};return a?(s[t][2]?s[t][2]:s[t][1]).replace("%d",e):(u?s[t][0]:s[t][1]).replace("%d",e)}var s={name:"et",weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:u,m:u,mm:u,h:u,hh:u,d:u,dd:"%d p\xe4eva",M:u,MM:u,y:u,yy:u},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return t.default.locale(s,null,!0),s}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7409.4408962b.chunk.js b/ydb/core/viewer/monitoring/static/js/7409.4408962b.chunk.js new file mode 100644 index 000000000000..ff0da87a5fa8 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7409.4408962b.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7409],{77409:(e,l,t)=>{t.r(l),t.d(l,{ReactComponent:()=>m,default:()=>n});var c,a=t(68963);function h(){return h=Object.assign?Object.assign.bind():function(e){for(var l=1;l<arguments.length;l++){var t=arguments[l];for(var c in t)Object.prototype.hasOwnProperty.call(t,c)&&(e[c]=t[c])}return e},h.apply(this,arguments)}function v(e,l){let{title:t,titleId:v,...m}=e;return a.createElement("svg",h({width:349,height:356,fill:"none",xmlns:"http://www.w3.org/2000/svg",ref:l,"aria-labelledby":v},m),t?a.createElement("title",{id:v},t):null,c||(c=a.createElement("g",{opacity:.8},a.createElement("path",{d:"M275.008 84.928c0 24.7-9.9 83.9-9.9 117.1 0 33.2 0 106.3-27.8 134.1-27.8 27.8-61.9 16.1-61.9 16.1s-46.7 13-76.3-14.8c-29.6-27.8-60.1-83.5-69.1-115.3-9.9-35-26.5-49.3-27.8-56.5-1.3-7.2 3.6-12.1 12.1-12.6 8.5-.4 22.9 4 34.5 22 11.6 18 17.5 26 23.8 35.9 6.3 9.9 20.6 23.3 20.6 23.3s.4-44.9 1.3-64.1c.9-19.3-1.8-111.7 1.8-132.3 3.6-20.6 26.5-20.2 28.7-4 2.2 16.1 8.8 66.8 9.8 79.8s3.7 44.4 3.7 44.4l7.6-2.7s-.9-105.8-.9-132.9c0-29.2 28.7-29.2 32.3-4 3.6 25.2 6.7 142.8 6.7 142.8l6.7 2.7s2.2-111.7 5.8-129.6c3.6-17.9 26.5-17.5 30.1 4.9 3.6 22.4 1.3 72.2.9 94.2s-.9 43.5-.9 43.5l5.4 4s11-73.3 14.4-99.1c3.7-27.8 28.4-21.5 28.4 3.1z",fill:"#fff",fillOpacity:.07}),a.createElement("path",{d:"M279.207 266.428l-216.9 12c-7.3.4-13.3-5.2-13.3-12.5v-167.4c0-7.3 6-12.9 13.3-12.5l216.9 12c5.6.3 10.1 5.7 10.1 12v144.4c0 6.3-4.5 11.7-10.1 12z",fill:"#FF4645"}),a.createElement("path",{d:"M191.308 139.226l-32.3-1.4c-1.9-.1-3.8.6-5.2 1.9l-24.3 22.8c-1.4 1.3-2.2 3.2-2.2 5.2v33.7c0 2 .8 3.8 2.2 5.2l24.3 22.8c1.4 1.3 3.3 2 5.2 1.9l32.3-1.4c1.8-.1 3.6-.9 4.9-2.2l21.5-22.8c1.2-1.3 1.9-3.1 1.9-4.9v-31c0-1.8-.7-3.6-1.9-4.9l-21.5-22.8c-1.3-1.3-3.1-2.1-4.9-2.1z",fill:"#fff"}),a.createElement("path",{d:"M203.408 195.526l-58.1.6c-1.6 0-3-1.3-3-3v-17.2c0-1.6 1.3-3 3-3l58.1.6c1.6 0 2.9 1.3 2.9 3v16c0 1.7-1.3 3-2.9 3z",fill:"#FF4645"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M74.707 103.727c0 3.4-2.7 6-6.1 5.8-3.4-.1-6.1-3-6.1-6.4 0-3.4 2.8-6 6.1-5.8 3.4.2 6.1 3 6.1 6.4zm19.7.9c0 3.3-2.7 5.9-6 5.8-3.3-.1-6-3-6-6.3s2.7-5.9 6-5.8c3.3.1 6 2.9 6 6.3zm13.4 6.499c3.2.2 5.8-2.4 5.8-5.7 0-3.3-2.6-6.1-5.8-6.2-3.3-.2-5.9 2.4-5.9 5.7 0 3.3 2.7 6.1 5.9 6.2z",fill:"#fff"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M248.707 247.329h84.6v-62c0-22.5-18.3-40.7-40.7-40.7h-3.2c-22.5 0-40.7 18.3-40.7 40.7v62zm70.2-14.3h-56v-47.7c0-14.6 11.9-26.4 26.4-26.4h3.2c14.6 0 26.4 11.9 26.4 26.4v47.7z",fill:"#DEB700"}),a.createElement("path",{d:"M340.507 205.528s-16.3-2.7-17.3-2.7l-78.6 1.1c-7 .1-13.7 6.5-13.7 13.1v58.6c0 4.7 2.9 8.5 7 10.1 1.5.6 3.1.9 4.8.9l12.5 2.3 7.6-3.7 60.4-4.3c6.2-.4 11.2-5.8 11.2-11.9v-43.3l6.1-20.2z",fill:"#DEB700"}),a.createElement("path",{d:"M337.607 283.43l-79.6 5.7c-7 .5-12.7-4.4-12.7-11v-59.6c0-6.6 5.7-12 12.7-12.1l79.6-1.1c6.2-.1 11.2 4.8 11.2 10.9v55.4c-.1 6-5 11.3-11.2 11.8z",fill:"#FBC900"}),a.createElement("path",{d:"M313.007 236.029c0-6.3-5.2-11.4-11.7-11.4-6.7 0-12.3 5.4-12.3 12 0 5 3.2 9.1 7.6 10.7v15.5c0 2.5 2.1 4.4 4.7 4.2 2.6-.2 4.6-2.5 4.6-4.9v-15.1c4.3-2.1 7.1-6.3 7.1-11z",fill:"#00236B"}),a.createElement("path",{d:"M308.307 236.028c0-5.5-4-10.1-9.3-11.2-5.6 1.1-10 6-10 11.8 0 5 3.2 9.1 7.6 10.7v15.5c0 1.5.8 2.8 2 3.5 1.6-.9 2.6-2.5 2.6-4.3v-15.1c4.2-2 7.1-6.2 7.1-10.9z",fill:"#18123D"}),a.createElement("path",{d:"M21.708 40.727a2 2 0 1 0-4 0h4zm-4 8.2a2 2 0 0 0 4 0h-4zm4 17.198a2 2 0 0 0-4 0h4zm-4 8.9a2 2 0 1 0 4 0h-4zm19.2-15.197a2 2 0 1 0 0-4v4zm-8.3-4a2 2 0 0 0 0 4v-4zm-17.8 4a2 2 0 1 0 0-4v4zm-8.3-4a2 2 0 0 0 0 4v-4zm15.2-15.101v8.2h4v-8.2h-4zm0 25.398v8.9h4v-8.9h-4zm19.2-10.297h-8.3v4h8.3v-4zm-26.1 0h-8.3v4h8.3v-4zm284.199 259.098a2 2 0 1 0-4 0h4zm-4 6.2a2 2 0 0 0 4 0h-4zm4 13.1a2 2 0 1 0-4 0h4zm-4 6.8a2 2 0 0 0 4 0h-4zm15-11.1a2 2 0 0 0 0-4v4zm-6.2-4a2 2 0 0 0 0 4v-4zm-13.6 4a2 2 0 0 0 0-4v4zm-6.3-4a2 2 0 0 0 0 4v-4zm11.1-11v6.2h4v-6.2h-4zm0 19.3v6.8h4v-6.8h-4zm15-8.3h-6.2v4h6.2v-4zm-19.8 0h-6.3v4h6.3v-4z",fill:"#2EE5C0"}),a.createElement("path",{clipRule:"evenodd",d:"M15.207 325.426c7.18 0 13-5.821 13-13 0-7.18-5.82-13-13-13s-13 5.82-13 13c0 7.179 5.82 13 13 13z",stroke:"#2EE5C0",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"}),a.createElement("path",{d:"M28.207 310.426a2 2 0 1 0 0 4v-4zm35.2 2h2a2 2 0 0 0-2-2v2zm-2 12.2a2 2 0 0 0 4 0h-4zm-17.1 0a2 2 0 0 0 4 0h-4zm4-12.2a2 2 0 1 0-4 0h4zm-20.1 2h35.2v-4h-35.2v4zm33.2-2v12.2h4v-12.2h-4zm-13.1 12.2v-12.2h-4v12.2h4z",fill:"#2EE5C0"}))))}const m=a.forwardRef(v),n=t.p+"static/media/403.271ae19f0d1101a2c67a904146bbd4d3.svg"}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7478.0bf003df.chunk.js b/ydb/core/viewer/monitoring/static/js/7478.0bf003df.chunk.js deleted file mode 100644 index e976b1657f4a..000000000000 --- a/ydb/core/viewer/monitoring/static/js/7478.0bf003df.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7478],{37478:function(e,t,i){i.r(t),i.d(t,{conf:function(){return n},language:function(){return o}});var n={comments:{lineComment:"COMMENT"},brackets:[["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:":",close:"."}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`"},{open:'"',close:'"'},{open:"'",close:"'"},{open:":",close:"."}],folding:{markers:{start:new RegExp("^\\s*(::\\s*|COMMENT\\s+)#region"),end:new RegExp("^\\s*(::\\s*|COMMENT\\s+)#endregion")}}},o={tokenPostfix:".lexon",ignoreCase:!0,keywords:["lexon","lex","clause","terms","contracts","may","pay","pays","appoints","into","to"],typeKeywords:["amount","person","key","time","date","asset","text"],operators:["less","greater","equal","le","gt","or","and","add","added","subtract","subtracted","multiply","multiplied","times","divide","divided","is","be","certified"],symbols:/[=><!~?:&|+\-*\/\^%]+/,tokenizer:{root:[[/^(\s*)(comment:?(?:\s.*|))$/,["","comment"]],[/"/,{token:"identifier.quote",bracket:"@open",next:"@quoted_identifier"}],["LEX$",{token:"keyword",bracket:"@open",next:"@identifier_until_period"}],["LEXON",{token:"keyword",bracket:"@open",next:"@semver"}],[":",{token:"delimiter",bracket:"@open",next:"@identifier_until_period"}],[/[a-z_$][\w$]*/,{cases:{"@operators":"operator","@typeKeywords":"keyword.type","@keywords":"keyword","@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\.\d*\.\d*/,"number.semver"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"]],quoted_identifier:[[/[^\\"]+/,"identifier"],[/"/,{token:"identifier.quote",bracket:"@close",next:"@pop"}]],space_identifier_until_period:[[":","delimiter"],[" ",{token:"white",next:"@identifier_rest"}]],identifier_until_period:[{include:"@whitespace"},[":",{token:"delimiter",next:"@identifier_rest"}],[/[^\\.]+/,"identifier"],[/\./,{token:"delimiter",bracket:"@close",next:"@pop"}]],identifier_rest:[[/[^\\.]+/,"identifier"],[/\./,{token:"delimiter",bracket:"@close",next:"@pop"}]],semver:[{include:"@whitespace"},[":","delimiter"],[/\d*\.\d*\.\d*/,{token:"number.semver",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"]]}}}}]); -//# sourceMappingURL=7478.0bf003df.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7520.d245d6ac.chunk.js b/ydb/core/viewer/monitoring/static/js/7520.d245d6ac.chunk.js new file mode 100644 index 000000000000..f185528435b1 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7520.d245d6ac.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 7520.d245d6ac.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7520],{67520:(e,t,n)=>{n.r(t),n.d(t,{CompletionAdapter:()=>gt,DefinitionAdapter:()=>Ct,DiagnosticsAdapter:()=>ut,DocumentColorAdapter:()=>Mt,DocumentFormattingEditProvider:()=>Rt,DocumentHighlightAdapter:()=>_t,DocumentLinkAdapter:()=>Tt,DocumentRangeFormattingEditProvider:()=>Dt,DocumentSymbolAdapter:()=>xt,FoldingRangeAdapter:()=>jt,HoverAdapter:()=>vt,ReferenceAdapter:()=>Et,RenameAdapter:()=>At,SelectionRangeAdapter:()=>Ft,WorkerManager:()=>se,fromPosition:()=>lt,fromRange:()=>ht,getWorker:()=>nn,setupMode:()=>on,toRange:()=>ft,toTextEdit:()=>mt});var r,i,o=n(41551),a=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyNames,u=Object.prototype.hasOwnProperty,d=(e,t,n,r)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let i of c(t))u.call(e,i)||i===n||a(e,i,{get:()=>t[i],enumerable:!(r=s(t,i))||r.enumerable});return e},g={};d(g,r=o,"default"),i&&d(i,r,"default");var l,h,f,p,m,v,b,k,_,w,C,y,E,A,x,I,S,T,R,D,P,M,j,L,F,O,N,W,U,V,H,K,z,q,X,B,$,J,Q,G,Y,Z,ee,te,ne,re,ie,oe,ae,se=class{constructor(e){this._defaults=e,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval((()=>this._checkIfIdle()),3e4),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange((()=>this._stopWorker()))}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){if(!this._worker)return;Date.now()-this._lastUsedTime>12e4&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=g.editor.createWebWorker({moduleId:"vs/language/json/jsonWorker",label:this._defaults.languageId,createData:{languageSettings:this._defaults.diagnosticsOptions,languageId:this._defaults.languageId,enableSchemaRequest:this._defaults.diagnosticsOptions.enableSchemaRequest}}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];let r;return this._getClient().then((e=>{r=e})).then((e=>{if(this._worker)return this._worker.withSyncedResources(t)})).then((e=>r))}};(h=l||(l={})).MIN_VALUE=-2147483648,h.MAX_VALUE=2147483647,(p=f||(f={})).MIN_VALUE=0,p.MAX_VALUE=2147483647,(v=m||(m={})).create=function(e,t){return e===Number.MAX_VALUE&&(e=f.MAX_VALUE),t===Number.MAX_VALUE&&(t=f.MAX_VALUE),{line:e,character:t}},v.is=function(e){var t=e;return st.objectLiteral(t)&&st.uinteger(t.line)&&st.uinteger(t.character)},(k=b||(b={})).create=function(e,t,n,r){if(st.uinteger(e)&&st.uinteger(t)&&st.uinteger(n)&&st.uinteger(r))return{start:m.create(e,t),end:m.create(n,r)};if(m.is(e)&&m.is(t))return{start:e,end:t};throw new Error("Range#create called with invalid arguments["+e+", "+t+", "+n+", "+r+"]")},k.is=function(e){var t=e;return st.objectLiteral(t)&&m.is(t.start)&&m.is(t.end)},(w=_||(_={})).create=function(e,t){return{uri:e,range:t}},w.is=function(e){var t=e;return st.defined(t)&&b.is(t.range)&&(st.string(t.uri)||st.undefined(t.uri))},(y=C||(C={})).create=function(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}},y.is=function(e){var t=e;return st.defined(t)&&b.is(t.targetRange)&&st.string(t.targetUri)&&(b.is(t.targetSelectionRange)||st.undefined(t.targetSelectionRange))&&(b.is(t.originSelectionRange)||st.undefined(t.originSelectionRange))},(A=E||(E={})).create=function(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}},A.is=function(e){var t=e;return st.numberRange(t.red,0,1)&&st.numberRange(t.green,0,1)&&st.numberRange(t.blue,0,1)&&st.numberRange(t.alpha,0,1)},(I=x||(x={})).create=function(e,t){return{range:e,color:t}},I.is=function(e){var t=e;return b.is(t.range)&&E.is(t.color)},(T=S||(S={})).create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},T.is=function(e){var t=e;return st.string(t.label)&&(st.undefined(t.textEdit)||q.is(t))&&(st.undefined(t.additionalTextEdits)||st.typedArray(t.additionalTextEdits,q.is))},(D=R||(R={})).Comment="comment",D.Imports="imports",D.Region="region",(M=P||(P={})).create=function(e,t,n,r,i){var o={startLine:e,endLine:t};return st.defined(n)&&(o.startCharacter=n),st.defined(r)&&(o.endCharacter=r),st.defined(i)&&(o.kind=i),o},M.is=function(e){var t=e;return st.uinteger(t.startLine)&&st.uinteger(t.startLine)&&(st.undefined(t.startCharacter)||st.uinteger(t.startCharacter))&&(st.undefined(t.endCharacter)||st.uinteger(t.endCharacter))&&(st.undefined(t.kind)||st.string(t.kind))},(L=j||(j={})).create=function(e,t){return{location:e,message:t}},L.is=function(e){var t=e;return st.defined(t)&&_.is(t.location)&&st.string(t.message)},(O=F||(F={})).Error=1,O.Warning=2,O.Information=3,O.Hint=4,(W=N||(N={})).Unnecessary=1,W.Deprecated=2,(U||(U={})).is=function(e){var t=e;return void 0!==t&&null!==t&&st.string(t.href)},(H=V||(V={})).create=function(e,t,n,r,i,o){var a={range:e,message:t};return st.defined(n)&&(a.severity=n),st.defined(r)&&(a.code=r),st.defined(i)&&(a.source=i),st.defined(o)&&(a.relatedInformation=o),a},H.is=function(e){var t,n=e;return st.defined(n)&&b.is(n.range)&&st.string(n.message)&&(st.number(n.severity)||st.undefined(n.severity))&&(st.integer(n.code)||st.string(n.code)||st.undefined(n.code))&&(st.undefined(n.codeDescription)||st.string(null===(t=n.codeDescription)||void 0===t?void 0:t.href))&&(st.string(n.source)||st.undefined(n.source))&&(st.undefined(n.relatedInformation)||st.typedArray(n.relatedInformation,j.is))},(z=K||(K={})).create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={title:e,command:t};return st.defined(n)&&n.length>0&&(i.arguments=n),i},z.is=function(e){var t=e;return st.defined(t)&&st.string(t.title)&&st.string(t.command)},(X=q||(q={})).replace=function(e,t){return{range:e,newText:t}},X.insert=function(e,t){return{range:{start:e,end:e},newText:t}},X.del=function(e){return{range:e,newText:""}},X.is=function(e){var t=e;return st.objectLiteral(t)&&st.string(t.newText)&&b.is(t.range)},($=B||(B={})).create=function(e,t,n){var r={label:e};return void 0!==t&&(r.needsConfirmation=t),void 0!==n&&(r.description=n),r},$.is=function(e){var t=e;return void 0!==t&&st.objectLiteral(t)&&st.string(t.label)&&(st.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(st.string(t.description)||void 0===t.description)},(J||(J={})).is=function(e){return"string"===typeof e},(G=Q||(Q={})).replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},G.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},G.del=function(e,t){return{range:e,newText:"",annotationId:t}},G.is=function(e){var t=e;return q.is(t)&&(B.is(t.annotationId)||J.is(t.annotationId))},(Z=Y||(Y={})).create=function(e,t){return{textDocument:e,edits:t}},Z.is=function(e){var t=e;return st.defined(t)&&le.is(t.textDocument)&&Array.isArray(t.edits)},(te=ee||(ee={})).create=function(e,t,n){var r={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},te.is=function(e){var t=e;return t&&"create"===t.kind&&st.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||st.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||st.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||J.is(t.annotationId))},(re=ne||(ne={})).create=function(e,t,n,r){var i={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(i.options=n),void 0!==r&&(i.annotationId=r),i},re.is=function(e){var t=e;return t&&"rename"===t.kind&&st.string(t.oldUri)&&st.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||st.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||st.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||J.is(t.annotationId))},(oe=ie||(ie={})).create=function(e,t,n){var r={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},oe.is=function(e){var t=e;return t&&"delete"===t.kind&&st.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||st.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||st.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||J.is(t.annotationId))},(ae||(ae={})).is=function(e){var t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every((function(e){return st.string(e.kind)?ee.is(e)||ne.is(e)||ie.is(e):Y.is(e)})))};var ce,ue,de,ge,le,he,fe,pe,me,ve,be,ke,_e,we,Ce,ye,Ee,Ae,xe,Ie,Se,Te,Re,De,Pe,Me,je,Le,Fe,Oe,Ne,We,Ue,Ve,He,Ke,ze,qe,Xe,Be,$e,Je,Qe,Ge,Ye,Ze,et,tt,nt,rt,it,ot=function(){function e(e,t){this.edits=e,this.changeAnnotations=t}return e.prototype.insert=function(e,t,n){var r,i;if(void 0===n?r=q.insert(e,t):J.is(n)?(i=n,r=Q.insert(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=Q.insert(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.replace=function(e,t,n){var r,i;if(void 0===n?r=q.replace(e,t):J.is(n)?(i=n,r=Q.replace(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=Q.replace(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.delete=function(e,t){var n,r;if(void 0===t?n=q.del(e):J.is(t)?(r=t,n=Q.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),r=this.changeAnnotations.manage(t),n=Q.del(e,r)),this.edits.push(n),void 0!==r)return r},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e.prototype.assertChangeAnnotations=function(e){if(void 0===e)throw new Error("Text edit change is not configured to manage change annotations.")},e}(),at=function(){function e(e){this._annotations=void 0===e?Object.create(null):e,this._counter=0,this._size=0}return e.prototype.all=function(){return this._annotations},Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),e.prototype.manage=function(e,t){var n;if(J.is(e)?n=e:(n=this.nextId(),t=e),void 0!==this._annotations[n])throw new Error("Id "+n+" is already in use.");if(void 0===t)throw new Error("No annotation provided for id "+n);return this._annotations[n]=t,this._size++,n},e.prototype.nextId=function(){return this._counter++,this._counter.toString()},e}();!function(){function e(e){var t=this;this._textEditChanges=Object.create(null),void 0!==e?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new at(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach((function(e){if(Y.is(e)){var n=new ot(e.edits,t._changeAnnotations);t._textEditChanges[e.textDocument.uri]=n}}))):e.changes&&Object.keys(e.changes).forEach((function(n){var r=new ot(e.changes[n]);t._textEditChanges[n]=r}))):this._workspaceEdit={}}Object.defineProperty(e.prototype,"edit",{get:function(){return this.initDocumentChanges(),void 0!==this._changeAnnotations&&(0===this._changeAnnotations.size?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),e.prototype.getTextEditChange=function(e){if(le.is(e)){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var t={uri:e.uri,version:e.version};if(!(r=this._textEditChanges[t.uri])){var n={textDocument:t,edits:i=[]};this._workspaceEdit.documentChanges.push(n),r=new ot(i,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}if(this.initChanges(),void 0===this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");var r;if(!(r=this._textEditChanges[e])){var i=[];this._workspaceEdit.changes[e]=i,r=new ot(i),this._textEditChanges[e]=r}return r},e.prototype.initDocumentChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._changeAnnotations=new at,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},e.prototype.initChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._workspaceEdit.changes=Object.create(null))},e.prototype.createFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var r,i,o;if(B.is(t)||J.is(t)?r=t:n=t,void 0===r?i=ee.create(e,n):(o=J.is(r)?r:this._changeAnnotations.manage(r),i=ee.create(e,n,o)),this._workspaceEdit.documentChanges.push(i),void 0!==o)return o},e.prototype.renameFile=function(e,t,n,r){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var i,o,a;if(B.is(n)||J.is(n)?i=n:r=n,void 0===i?o=ne.create(e,t,r):(a=J.is(i)?i:this._changeAnnotations.manage(i),o=ne.create(e,t,r,a)),this._workspaceEdit.documentChanges.push(o),void 0!==a)return a},e.prototype.deleteFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var r,i,o;if(B.is(t)||J.is(t)?r=t:n=t,void 0===r?i=ie.create(e,n):(o=J.is(r)?r:this._changeAnnotations.manage(r),i=ie.create(e,n,o)),this._workspaceEdit.documentChanges.push(i),void 0!==o)return o}}();(ue=ce||(ce={})).create=function(e){return{uri:e}},ue.is=function(e){var t=e;return st.defined(t)&&st.string(t.uri)},(ge=de||(de={})).create=function(e,t){return{uri:e,version:t}},ge.is=function(e){var t=e;return st.defined(t)&&st.string(t.uri)&&st.integer(t.version)},(he=le||(le={})).create=function(e,t){return{uri:e,version:t}},he.is=function(e){var t=e;return st.defined(t)&&st.string(t.uri)&&(null===t.version||st.integer(t.version))},(pe=fe||(fe={})).create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},pe.is=function(e){var t=e;return st.defined(t)&&st.string(t.uri)&&st.string(t.languageId)&&st.integer(t.version)&&st.string(t.text)},(ve=me||(me={})).PlainText="plaintext",ve.Markdown="markdown",function(e){e.is=function(t){var n=t;return n===e.PlainText||n===e.Markdown}}(me||(me={})),(be||(be={})).is=function(e){var t=e;return st.objectLiteral(e)&&me.is(t.kind)&&st.string(t.value)},(_e=ke||(ke={})).Text=1,_e.Method=2,_e.Function=3,_e.Constructor=4,_e.Field=5,_e.Variable=6,_e.Class=7,_e.Interface=8,_e.Module=9,_e.Property=10,_e.Unit=11,_e.Value=12,_e.Enum=13,_e.Keyword=14,_e.Snippet=15,_e.Color=16,_e.File=17,_e.Reference=18,_e.Folder=19,_e.EnumMember=20,_e.Constant=21,_e.Struct=22,_e.Event=23,_e.Operator=24,_e.TypeParameter=25,(Ce=we||(we={})).PlainText=1,Ce.Snippet=2,(ye||(ye={})).Deprecated=1,(Ae=Ee||(Ee={})).create=function(e,t,n){return{newText:e,insert:t,replace:n}},Ae.is=function(e){var t=e;return t&&st.string(t.newText)&&b.is(t.insert)&&b.is(t.replace)},(Ie=xe||(xe={})).asIs=1,Ie.adjustIndentation=2,(Se||(Se={})).create=function(e){return{label:e}},(Te||(Te={})).create=function(e,t){return{items:e||[],isIncomplete:!!t}},(De=Re||(Re={})).fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},De.is=function(e){var t=e;return st.string(t)||st.objectLiteral(t)&&st.string(t.language)&&st.string(t.value)},(Pe||(Pe={})).is=function(e){var t=e;return!!t&&st.objectLiteral(t)&&(be.is(t.contents)||Re.is(t.contents)||st.typedArray(t.contents,Re.is))&&(void 0===e.range||b.is(e.range))},(Me||(Me={})).create=function(e,t){return t?{label:e,documentation:t}:{label:e}},(je||(je={})).create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={label:e};return st.defined(t)&&(i.documentation=t),st.defined(n)?i.parameters=n:i.parameters=[],i},(Fe=Le||(Le={})).Text=1,Fe.Read=2,Fe.Write=3,(Oe||(Oe={})).create=function(e,t){var n={range:e};return st.number(t)&&(n.kind=t),n},(We=Ne||(Ne={})).File=1,We.Module=2,We.Namespace=3,We.Package=4,We.Class=5,We.Method=6,We.Property=7,We.Field=8,We.Constructor=9,We.Enum=10,We.Interface=11,We.Function=12,We.Variable=13,We.Constant=14,We.String=15,We.Number=16,We.Boolean=17,We.Array=18,We.Object=19,We.Key=20,We.Null=21,We.EnumMember=22,We.Struct=23,We.Event=24,We.Operator=25,We.TypeParameter=26,(Ue||(Ue={})).Deprecated=1,(Ve||(Ve={})).create=function(e,t,n,r,i){var o={name:e,kind:t,location:{uri:r,range:n}};return i&&(o.containerName=i),o},(Ke=He||(He={})).create=function(e,t,n,r,i,o){var a={name:e,detail:t,kind:n,range:r,selectionRange:i};return void 0!==o&&(a.children=o),a},Ke.is=function(e){var t=e;return t&&st.string(t.name)&&st.number(t.kind)&&b.is(t.range)&&b.is(t.selectionRange)&&(void 0===t.detail||st.string(t.detail))&&(void 0===t.deprecated||st.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))},(qe=ze||(ze={})).Empty="",qe.QuickFix="quickfix",qe.Refactor="refactor",qe.RefactorExtract="refactor.extract",qe.RefactorInline="refactor.inline",qe.RefactorRewrite="refactor.rewrite",qe.Source="source",qe.SourceOrganizeImports="source.organizeImports",qe.SourceFixAll="source.fixAll",(Be=Xe||(Xe={})).create=function(e,t){var n={diagnostics:e};return void 0!==t&&null!==t&&(n.only=t),n},Be.is=function(e){var t=e;return st.defined(t)&&st.typedArray(t.diagnostics,V.is)&&(void 0===t.only||st.typedArray(t.only,st.string))},(Je=$e||($e={})).create=function(e,t,n){var r={title:e},i=!0;return"string"===typeof t?(i=!1,r.kind=t):K.is(t)?r.command=t:r.edit=t,i&&void 0!==n&&(r.kind=n),r},Je.is=function(e){var t=e;return t&&st.string(t.title)&&(void 0===t.diagnostics||st.typedArray(t.diagnostics,V.is))&&(void 0===t.kind||st.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||K.is(t.command))&&(void 0===t.isPreferred||st.boolean(t.isPreferred))&&(void 0===t.edit||ae.is(t.edit))},(Ge=Qe||(Qe={})).create=function(e,t){var n={range:e};return st.defined(t)&&(n.data=t),n},Ge.is=function(e){var t=e;return st.defined(t)&&b.is(t.range)&&(st.undefined(t.command)||K.is(t.command))},(Ze=Ye||(Ye={})).create=function(e,t){return{tabSize:e,insertSpaces:t}},Ze.is=function(e){var t=e;return st.defined(t)&&st.uinteger(t.tabSize)&&st.boolean(t.insertSpaces)},(tt=et||(et={})).create=function(e,t,n){return{range:e,target:t,data:n}},tt.is=function(e){var t=e;return st.defined(t)&&b.is(t.range)&&(st.undefined(t.target)||st.string(t.target))},(rt=nt||(nt={})).create=function(e,t){return{range:e,parent:t}},rt.is=function(e){var t=e;return void 0!==t&&b.is(t.range)&&(void 0===t.parent||rt.is(t.parent))},function(e){function t(e,n){if(e.length<=1)return e;var r=e.length/2|0,i=e.slice(0,r),o=e.slice(r);t(i,n),t(o,n);for(var a=0,s=0,c=0;a<i.length&&s<o.length;){var u=n(i[a],o[s]);e[c++]=u<=0?i[a++]:o[s++]}for(;a<i.length;)e[c++]=i[a++];for(;s<o.length;)e[c++]=o[s++];return e}e.create=function(e,t,n,r){return new ct(e,t,n,r)},e.is=function(e){var t=e;return!!(st.defined(t)&&st.string(t.uri)&&(st.undefined(t.languageId)||st.string(t.languageId))&&st.uinteger(t.lineCount)&&st.func(t.getText)&&st.func(t.positionAt)&&st.func(t.offsetAt))},e.applyEdits=function(e,n){for(var r=e.getText(),i=t(n,(function(e,t){var n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n})),o=r.length,a=i.length-1;a>=0;a--){var s=i[a],c=e.offsetAt(s.range.start),u=e.offsetAt(s.range.end);if(!(u<=o))throw new Error("Overlapping edit");r=r.substring(0,c)+s.newText+r.substring(u,r.length),o=c}return r}}(it||(it={}));var st,ct=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!1,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0},e.prototype.getLineOffsets=function(){if(void 0===this._lineOffsets){for(var e=[],t=this._content,n=!0,r=0;r<t.length;r++){n&&(e.push(r),n=!1);var i=t.charAt(r);n="\r"===i||"\n"===i,"\r"===i&&r+1<t.length&&"\n"===t.charAt(r+1)&&r++}n&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return m.create(0,e);for(;n<r;){var i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}var o=n-1;return m.create(o,e-t[o])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),e}();!function(e){var t=Object.prototype.toString;e.defined=function(e){return"undefined"!==typeof e},e.undefined=function(e){return"undefined"===typeof e},e.boolean=function(e){return!0===e||!1===e},e.string=function(e){return"[object String]"===t.call(e)},e.number=function(e){return"[object Number]"===t.call(e)},e.numberRange=function(e,n,r){return"[object Number]"===t.call(e)&&n<=e&&e<=r},e.integer=function(e){return"[object Number]"===t.call(e)&&-2147483648<=e&&e<=2147483647},e.uinteger=function(e){return"[object Number]"===t.call(e)&&0<=e&&e<=2147483647},e.func=function(e){return"[object Function]"===t.call(e)},e.objectLiteral=function(e){return null!==e&&"object"===typeof e},e.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)}}(st||(st={}));var ut=class{constructor(e,t,n){this._languageId=e,this._worker=t,this._disposables=[],this._listener=Object.create(null);const r=e=>{let t,n=e.getLanguageId();n===this._languageId&&(this._listener[e.uri.toString()]=e.onDidChangeContent((()=>{window.clearTimeout(t),t=window.setTimeout((()=>this._doValidate(e.uri,n)),500)})),this._doValidate(e.uri,n))},i=e=>{g.editor.setModelMarkers(e,this._languageId,[]);let t=e.uri.toString(),n=this._listener[t];n&&(n.dispose(),delete this._listener[t])};this._disposables.push(g.editor.onDidCreateModel(r)),this._disposables.push(g.editor.onWillDisposeModel(i)),this._disposables.push(g.editor.onDidChangeModelLanguage((e=>{i(e.model),r(e.model)}))),this._disposables.push(n((e=>{g.editor.getModels().forEach((e=>{e.getLanguageId()===this._languageId&&(i(e),r(e))}))}))),this._disposables.push({dispose:()=>{g.editor.getModels().forEach(i);for(let e in this._listener)this._listener[e].dispose()}}),g.editor.getModels().forEach(r)}dispose(){this._disposables.forEach((e=>e&&e.dispose())),this._disposables.length=0}_doValidate(e,t){this._worker(e).then((t=>t.doValidation(e.toString()))).then((n=>{const r=n.map((e=>function(e,t){let n="number"===typeof t.code?String(t.code):t.code;return{severity:dt(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:n,source:t.source}}(0,e)));let i=g.editor.getModel(e);i&&i.getLanguageId()===t&&g.editor.setModelMarkers(i,t,r)})).then(void 0,(e=>{console.error(e)}))}};function dt(e){switch(e){case F.Error:return g.MarkerSeverity.Error;case F.Warning:return g.MarkerSeverity.Warning;case F.Information:return g.MarkerSeverity.Info;case F.Hint:return g.MarkerSeverity.Hint;default:return g.MarkerSeverity.Info}}var gt=class{constructor(e,t){this._worker=e,this._triggerCharacters=t}get triggerCharacters(){return this._triggerCharacters}provideCompletionItems(e,t,n,r){const i=e.uri;return this._worker(i).then((e=>e.doComplete(i.toString(),lt(t)))).then((n=>{if(!n)return;const r=e.getWordUntilPosition(t),i=new g.Range(t.lineNumber,r.startColumn,t.lineNumber,r.endColumn),o=n.items.map((e=>{const t={label:e.label,insertText:e.insertText||e.label,sortText:e.sortText,filterText:e.filterText,documentation:e.documentation,detail:e.detail,command:(n=e.command,n&&"editor.action.triggerSuggest"===n.command?{id:n.command,title:n.title,arguments:n.arguments}:void 0),range:i,kind:pt(e.kind)};var n,r;return e.textEdit&&("undefined"!==typeof(r=e.textEdit).insert&&"undefined"!==typeof r.replace?t.range={insert:ft(e.textEdit.insert),replace:ft(e.textEdit.replace)}:t.range=ft(e.textEdit.range),t.insertText=e.textEdit.newText),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map(mt)),e.insertTextFormat===we.Snippet&&(t.insertTextRules=g.languages.CompletionItemInsertTextRule.InsertAsSnippet),t}));return{isIncomplete:n.isIncomplete,suggestions:o}}))}};function lt(e){if(e)return{character:e.column-1,line:e.lineNumber-1}}function ht(e){if(e)return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}function ft(e){if(e)return new g.Range(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function pt(e){const t=g.languages.CompletionItemKind;switch(e){case ke.Text:return t.Text;case ke.Method:return t.Method;case ke.Function:return t.Function;case ke.Constructor:return t.Constructor;case ke.Field:return t.Field;case ke.Variable:return t.Variable;case ke.Class:return t.Class;case ke.Interface:return t.Interface;case ke.Module:return t.Module;case ke.Property:return t.Property;case ke.Unit:return t.Unit;case ke.Value:return t.Value;case ke.Enum:return t.Enum;case ke.Keyword:return t.Keyword;case ke.Snippet:return t.Snippet;case ke.Color:return t.Color;case ke.File:return t.File;case ke.Reference:return t.Reference}return t.Property}function mt(e){if(e)return{range:ft(e.range),text:e.newText}}var vt=class{constructor(e){this._worker=e}provideHover(e,t,n){let r=e.uri;return this._worker(r).then((e=>e.doHover(r.toString(),lt(t)))).then((e=>{if(e)return{range:ft(e.range),contents:kt(e.contents)}}))}};function bt(e){return"string"===typeof e?{value:e}:(t=e)&&"object"===typeof t&&"string"===typeof t.kind?"plaintext"===e.kind?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:e.value}:{value:"```"+e.language+"\n"+e.value+"\n```\n"};var t}function kt(e){if(e)return Array.isArray(e)?e.map(bt):[bt(e)]}var _t=class{constructor(e){this._worker=e}provideDocumentHighlights(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.findDocumentHighlights(r.toString(),lt(t)))).then((e=>{if(e)return e.map((e=>({range:ft(e.range),kind:wt(e.kind)})))}))}};function wt(e){switch(e){case Le.Read:return g.languages.DocumentHighlightKind.Read;case Le.Write:return g.languages.DocumentHighlightKind.Write;case Le.Text:return g.languages.DocumentHighlightKind.Text}return g.languages.DocumentHighlightKind.Text}var Ct=class{constructor(e){this._worker=e}provideDefinition(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.findDefinition(r.toString(),lt(t)))).then((e=>{if(e)return[yt(e)]}))}};function yt(e){return{uri:g.Uri.parse(e.uri),range:ft(e.range)}}var Et=class{constructor(e){this._worker=e}provideReferences(e,t,n,r){const i=e.uri;return this._worker(i).then((e=>e.findReferences(i.toString(),lt(t)))).then((e=>{if(e)return e.map(yt)}))}},At=class{constructor(e){this._worker=e}provideRenameEdits(e,t,n,r){const i=e.uri;return this._worker(i).then((e=>e.doRename(i.toString(),lt(t),n))).then((e=>function(e){if(!e||!e.changes)return;let t=[];for(let n in e.changes){const r=g.Uri.parse(n);for(let i of e.changes[n])t.push({resource:r,versionId:void 0,textEdit:{range:ft(i.range),text:i.newText}})}return{edits:t}}(e)))}};var xt=class{constructor(e){this._worker=e}provideDocumentSymbols(e,t){const n=e.uri;return this._worker(n).then((e=>e.findDocumentSymbols(n.toString()))).then((e=>{if(e)return e.map((e=>"children"in e?It(e):{name:e.name,detail:"",containerName:e.containerName,kind:St(e.kind),range:ft(e.location.range),selectionRange:ft(e.location.range),tags:[]}))}))}};function It(e){var t,n,r;return{name:e.name,detail:null!==(t=e.detail)&&void 0!==t?t:"",kind:St(e.kind),range:ft(e.range),selectionRange:ft(e.selectionRange),tags:null!==(n=e.tags)&&void 0!==n?n:[],children:(null!==(r=e.children)&&void 0!==r?r:[]).map((e=>It(e)))}}function St(e){let t=g.languages.SymbolKind;switch(e){case Ne.File:return t.File;case Ne.Module:return t.Module;case Ne.Namespace:return t.Namespace;case Ne.Package:return t.Package;case Ne.Class:return t.Class;case Ne.Method:return t.Method;case Ne.Property:return t.Property;case Ne.Field:return t.Field;case Ne.Constructor:return t.Constructor;case Ne.Enum:return t.Enum;case Ne.Interface:return t.Interface;case Ne.Function:return t.Function;case Ne.Variable:return t.Variable;case Ne.Constant:return t.Constant;case Ne.String:return t.String;case Ne.Number:return t.Number;case Ne.Boolean:return t.Boolean;case Ne.Array:return t.Array}return t.Function}var Tt=class{constructor(e){this._worker=e}provideLinks(e,t){const n=e.uri;return this._worker(n).then((e=>e.findDocumentLinks(n.toString()))).then((e=>{if(e)return{links:e.map((e=>({range:ft(e.range),url:e.target})))}}))}},Rt=class{constructor(e){this._worker=e}provideDocumentFormattingEdits(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.format(r.toString(),null,Pt(t)).then((e=>{if(e&&0!==e.length)return e.map(mt)}))))}},Dt=class{constructor(e){this._worker=e,this.canFormatMultipleRanges=!1}provideDocumentRangeFormattingEdits(e,t,n,r){const i=e.uri;return this._worker(i).then((e=>e.format(i.toString(),ht(t),Pt(n)).then((e=>{if(e&&0!==e.length)return e.map(mt)}))))}};function Pt(e){return{tabSize:e.tabSize,insertSpaces:e.insertSpaces}}var Mt=class{constructor(e){this._worker=e}provideDocumentColors(e,t){const n=e.uri;return this._worker(n).then((e=>e.findDocumentColors(n.toString()))).then((e=>{if(e)return e.map((e=>({color:e.color,range:ft(e.range)})))}))}provideColorPresentations(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.getColorPresentations(r.toString(),t.color,ht(t.range)))).then((e=>{if(e)return e.map((e=>{let t={label:e.label};return e.textEdit&&(t.textEdit=mt(e.textEdit)),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map(mt)),t}))}))}},jt=class{constructor(e){this._worker=e}provideFoldingRanges(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.getFoldingRanges(r.toString(),t))).then((e=>{if(e)return e.map((e=>{const t={start:e.startLine+1,end:e.endLine+1};return"undefined"!==typeof e.kind&&(t.kind=function(e){switch(e){case R.Comment:return g.languages.FoldingRangeKind.Comment;case R.Imports:return g.languages.FoldingRangeKind.Imports;case R.Region:return g.languages.FoldingRangeKind.Region}return}(e.kind)),t}))}))}};var Lt,Ft=class{constructor(e){this._worker=e}provideSelectionRanges(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.getSelectionRanges(r.toString(),t.map(lt)))).then((e=>{if(e)return e.map((e=>{const t=[];for(;e;)t.push({range:ft(e.range)}),e=e.parent;return t}))}))}};function Ot(e){return 32===e||9===e||11===e||12===e||160===e||5760===e||e>=8192&&e<=8203||8239===e||8287===e||12288===e||65279===e}function Nt(e){return 10===e||13===e||8232===e||8233===e}function Wt(e){return e>=48&&e<=57}(Lt||(Lt={})).DEFAULT={allowTrailingComma:!1};var Ut=function(e,t){void 0===t&&(t=!1);var n=e.length,r=0,i="",o=0,a=16,s=0,c=0,u=0,d=0,g=0;function l(t,n){for(var i=0,o=0;i<t||!n;){var a=e.charCodeAt(r);if(a>=48&&a<=57)o=16*o+a-48;else if(a>=65&&a<=70)o=16*o+a-65+10;else{if(!(a>=97&&a<=102))break;o=16*o+a-97+10}r++,i++}return i<t&&(o=-1),o}function h(){if(i="",g=0,o=r,c=s,d=u,r>=n)return o=n,a=17;var t=e.charCodeAt(r);if(Ot(t)){do{r++,i+=String.fromCharCode(t),t=e.charCodeAt(r)}while(Ot(t));return a=15}if(Nt(t))return r++,i+=String.fromCharCode(t),13===t&&10===e.charCodeAt(r)&&(r++,i+="\n"),s++,u=r,a=14;switch(t){case 123:return r++,a=1;case 125:return r++,a=2;case 91:return r++,a=3;case 93:return r++,a=4;case 58:return r++,a=6;case 44:return r++,a=5;case 34:return r++,i=function(){for(var t="",i=r;;){if(r>=n){t+=e.substring(i,r),g=2;break}var o=e.charCodeAt(r);if(34===o){t+=e.substring(i,r),r++;break}if(92!==o){if(o>=0&&o<=31){if(Nt(o)){t+=e.substring(i,r),g=2;break}g=6}r++}else{if(t+=e.substring(i,r),++r>=n){g=2;break}switch(e.charCodeAt(r++)){case 34:t+='"';break;case 92:t+="\\";break;case 47:t+="/";break;case 98:t+="\b";break;case 102:t+="\f";break;case 110:t+="\n";break;case 114:t+="\r";break;case 116:t+="\t";break;case 117:var a=l(4,!0);a>=0?t+=String.fromCharCode(a):g=4;break;default:g=5}i=r}}return t}(),a=10;case 47:var h=r-1;if(47===e.charCodeAt(r+1)){for(r+=2;r<n&&!Nt(e.charCodeAt(r));)r++;return i=e.substring(h,r),a=12}if(42===e.charCodeAt(r+1)){r+=2;for(var p=n-1,m=!1;r<p;){var v=e.charCodeAt(r);if(42===v&&47===e.charCodeAt(r+1)){r+=2,m=!0;break}r++,Nt(v)&&(13===v&&10===e.charCodeAt(r)&&r++,s++,u=r)}return m||(r++,g=1),i=e.substring(h,r),a=13}return i+=String.fromCharCode(t),r++,a=16;case 45:if(i+=String.fromCharCode(t),++r===n||!Wt(e.charCodeAt(r)))return a=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return i+=function(){var t=r;if(48===e.charCodeAt(r))r++;else for(r++;r<e.length&&Wt(e.charCodeAt(r));)r++;if(r<e.length&&46===e.charCodeAt(r)){if(!(++r<e.length&&Wt(e.charCodeAt(r))))return g=3,e.substring(t,r);for(r++;r<e.length&&Wt(e.charCodeAt(r));)r++}var n=r;if(r<e.length&&(69===e.charCodeAt(r)||101===e.charCodeAt(r)))if((++r<e.length&&43===e.charCodeAt(r)||45===e.charCodeAt(r))&&r++,r<e.length&&Wt(e.charCodeAt(r))){for(r++;r<e.length&&Wt(e.charCodeAt(r));)r++;n=r}else g=3;return e.substring(t,n)}(),a=11;default:for(;r<n&&f(t);)r++,t=e.charCodeAt(r);if(o!==r){switch(i=e.substring(o,r)){case"true":return a=8;case"false":return a=9;case"null":return a=7}return a=16}return i+=String.fromCharCode(t),r++,a=16}}function f(e){if(Ot(e)||Nt(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}return{setPosition:function(e){r=e,i="",o=0,a=16,g=0},getPosition:function(){return r},scan:t?function(){var e;do{e=h()}while(e>=12&&e<=15);return e}:h,getToken:function(){return a},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return r-o},getTokenStartLine:function(){return c},getTokenStartCharacter:function(){return o-d},getTokenError:function(){return g}}};function Vt(e){return{getInitialState:()=>new tn(null,null,!1,null),tokenize:(t,n)=>function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i=0,o=!1;switch(n.scanError){case 2:t='"'+t,i=1;break;case 1:t="/*"+t,i=2}const a=Ut(t);let s=n.lastWasColon,c=n.parents;const u={tokens:[],endState:n.clone()};for(;;){let d=r+a.getPosition(),g="";const l=a.scan();if(17===l)break;if(d===r+a.getPosition())throw new Error("Scanner did not advance, next 3 characters are: "+t.substr(a.getPosition(),3));switch(o&&(d-=i),o=i>0,l){case 1:c=en.push(c,0),g=Kt,s=!1;break;case 2:c=en.pop(c),g=Kt,s=!1;break;case 3:c=en.push(c,1),g=zt,s=!1;break;case 4:c=en.pop(c),g=zt,s=!1;break;case 6:g=qt,s=!0;break;case 5:g=Xt,s=!1;break;case 8:case 9:g=Bt,s=!1;break;case 7:g=$t,s=!1;break;case 10:const e=c?c.type:0;g=s||1===e?Jt:Gt,s=!1;break;case 11:g=Qt,s=!1}if(e)switch(l){case 12:g=Zt;break;case 13:g=Yt}u.endState=new tn(n.getStateData(),a.getTokenError(),s,c),u.tokens.push({startIndex:d,scopes:g})}return u}(e,t,n)}}var Ht,Kt="delimiter.bracket.json",zt="delimiter.array.json",qt="delimiter.colon.json",Xt="delimiter.comma.json",Bt="keyword.json",$t="keyword.json",Jt="string.value.json",Qt="number.json",Gt="string.key.json",Yt="comment.block.json",Zt="comment.line.json",en=class e{constructor(e,t){this.parent=e,this.type=t}static pop(e){return e?e.parent:null}static push(t,n){return new e(t,n)}static equals(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;for(;e&&t;){if(e===t)return!0;if(e.type!==t.type)return!1;e=e.parent,t=t.parent}return!0}},tn=class e{constructor(e,t,n,r){this._state=e,this.scanError=t,this.lastWasColon=n,this.parents=r}clone(){return new e(this._state,this.scanError,this.lastWasColon,this.parents)}equals(t){return t===this||!!(t&&t instanceof e)&&(this.scanError===t.scanError&&this.lastWasColon===t.lastWasColon&&en.equals(this.parents,t.parents))}getStateData(){return this._state}setStateData(e){this._state=e}};function nn(){return new Promise(((e,t)=>{if(!Ht)return t("JSON not registered!");e(Ht)}))}var rn=class extends ut{constructor(e,t,n){super(e,t,n.onDidChange),this._disposables.push(g.editor.onWillDisposeModel((e=>{this._resetSchema(e.uri)}))),this._disposables.push(g.editor.onDidChangeModelLanguage((e=>{this._resetSchema(e.model.uri)})))}_resetSchema(e){this._worker().then((t=>{t.resetSchema(e.toString())}))}};function on(e){const t=[],n=[],r=new se(e);function i(){const{languageId:t,modeConfiguration:r}=e;sn(n),r.documentFormattingEdits&&n.push(g.languages.registerDocumentFormattingEditProvider(t,new Rt(Ht))),r.documentRangeFormattingEdits&&n.push(g.languages.registerDocumentRangeFormattingEditProvider(t,new Dt(Ht))),r.completionItems&&n.push(g.languages.registerCompletionItemProvider(t,new gt(Ht,[" ",":",'"']))),r.hovers&&n.push(g.languages.registerHoverProvider(t,new vt(Ht))),r.documentSymbols&&n.push(g.languages.registerDocumentSymbolProvider(t,new xt(Ht))),r.tokens&&n.push(g.languages.setTokensProvider(t,Vt(!0))),r.colors&&n.push(g.languages.registerColorProvider(t,new Mt(Ht))),r.foldingRanges&&n.push(g.languages.registerFoldingRangeProvider(t,new jt(Ht))),r.diagnostics&&n.push(new rn(t,Ht,e)),r.selectionRanges&&n.push(g.languages.registerSelectionRangeProvider(t,new Ft(Ht)))}t.push(r),Ht=function(){return r.getLanguageServiceWorker(...arguments)},i(),t.push(g.languages.setLanguageConfiguration(e.languageId,cn));let o=e.modeConfiguration;return e.onDidChange((e=>{e.modeConfiguration!==o&&(o=e.modeConfiguration,i())})),t.push(an(n)),an(t)}function an(e){return{dispose:()=>sn(e)}}function sn(e){for(;e.length;)e.pop().dispose()}var cn={wordPattern:/(-?\d*\.\d\w*)|([^\[\{\]\}\:\"\,\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string"]},{open:"[",close:"]",notIn:["string"]},{open:'"',close:'"',notIn:["string"]}]}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7520.d245d6ac.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/7520.d245d6ac.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7520.d245d6ac.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/7522.1a0f9c02.chunk.js b/ydb/core/viewer/monitoring/static/js/7522.1a0f9c02.chunk.js new file mode 100644 index 000000000000..c59b88c8cdb5 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7522.1a0f9c02.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7522],{87522:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"zh",weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),ordinal:function(_,e){return"W"===e?_+"\u5468":_+"\u65e5"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},relativeTime:{future:"%s\u540e",past:"%s\u524d",s:"\u51e0\u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},meridiem:function(_,e){var t=100*_+e;return t<600?"\u51cc\u6668":t<900?"\u65e9\u4e0a":t<1100?"\u4e0a\u5348":t<1300?"\u4e2d\u5348":t<1800?"\u4e0b\u5348":"\u665a\u4e0a"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7529.ddf87a9a.chunk.js b/ydb/core/viewer/monitoring/static/js/7529.ddf87a9a.chunk.js new file mode 100644 index 000000000000..9d62b980307c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7529.ddf87a9a.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 7529.ddf87a9a.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7529],{47529:(e,t,i)=>{i.r(t),i.d(t,{conf:()=>p,language:()=>w});var n,o,r=i(41551),l=Object.defineProperty,a=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,u=(e,t,i,n)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let o of d(t))s.call(e,o)||o===i||l(e,o,{get:()=>t[o],enumerable:!(n=a(t,o))||n.enumerable});return e},c={};u(c,n=r,"default"),o&&u(o,n,"default");var m=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],p={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,brackets:[["\x3c!--","--\x3e"],["<",">"],["{{","}}"],["{%","%}"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"%",close:"%"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:new RegExp("<(?!(?:".concat(m.join("|"),"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$"),"i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:c.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(?!(?:".concat(m.join("|"),"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$"),"i"),action:{indentAction:c.languages.IndentAction.Indent}}]},w={defaultToken:"",tokenPostfix:"",builtinTags:["if","else","elseif","endif","render","assign","capture","endcapture","case","endcase","comment","endcomment","cycle","decrement","for","endfor","include","increment","layout","raw","endraw","render","tablerow","endtablerow","unless","endunless"],builtinFilters:["abs","append","at_least","at_most","capitalize","ceil","compact","date","default","divided_by","downcase","escape","escape_once","first","floor","join","json","last","lstrip","map","minus","modulo","newline_to_br","plus","prepend","remove","remove_first","replace","replace_first","reverse","round","rstrip","size","slice","sort","sort_natural","split","strip","strip_html","strip_newlines","times","truncate","truncatewords","uniq","upcase","url_decode","url_encode","where"],constants:["true","false"],operators:["==","!=",">","<",">=","<="],symbol:/[=><!]+/,identifier:/[a-zA-Z_][\w]*/,tokenizer:{root:[[/\{\%\s*comment\s*\%\}/,"comment.start.liquid","@comment"],[/\{\{/,{token:"@rematch",switchTo:"@liquidState.root"}],[/\{\%/,{token:"@rematch",switchTo:"@liquidState.root"}],[/(<)([\w\-]+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)([\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/\{/,"delimiter.html"],[/[^<{]+/]],comment:[[/\{\%\s*endcomment\s*\%\}/,"comment.end.liquid","@pop"],[/./,"comment.content.liquid"]],otherTag:[[/\{\{/,{token:"@rematch",switchTo:"@liquidState.otherTag"}],[/\{\%/,{token:"@rematch",switchTo:"@liquidState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],liquidState:[[/\{\{/,"delimiter.output.liquid"],[/\}\}/,{token:"delimiter.output.liquid",switchTo:"@$S2.$S3"}],[/\{\%/,"delimiter.tag.liquid"],[/raw\s*\%\}/,"delimiter.tag.liquid","@liquidRaw"],[/\%\}/,{token:"delimiter.tag.liquid",switchTo:"@$S2.$S3"}],{include:"liquidRoot"}],liquidRaw:[[/^(?!\{\%\s*endraw\s*\%\}).+/],[/\{\%/,"delimiter.tag.liquid"],[/@identifier/],[/\%\}/,{token:"delimiter.tag.liquid",next:"@root"}]],liquidRoot:[[/\d+(\.\d+)?/,"number.liquid"],[/"[^"]*"/,"string.liquid"],[/'[^']*'/,"string.liquid"],[/\s+/],[/@symbol/,{cases:{"@operators":"operator.liquid","@default":""}}],[/\./],[/@identifier/,{cases:{"@constants":"keyword.liquid","@builtinFilters":"predefined.liquid","@builtinTags":"predefined.liquid","@default":"variable.liquid"}}],[/[^}|%]/,"variable.liquid"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7529.ddf87a9a.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/7529.ddf87a9a.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7529.ddf87a9a.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/7543.3fcfd3ba.chunk.js b/ydb/core/viewer/monitoring/static/js/7543.3fcfd3ba.chunk.js new file mode 100644 index 000000000000..67033aafb726 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7543.3fcfd3ba.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 7543.3fcfd3ba.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7543],{87543:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>s,language:()=>p});var a,o,i=n(41551),r=Object.defineProperty,d=Object.getOwnPropertyDescriptor,m=Object.getOwnPropertyNames,l=Object.prototype.hasOwnProperty,c=(e,t,n,a)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let o of m(t))l.call(e,o)||o===n||r(e,o,{get:()=>t[o],enumerable:!(a=d(t,o))||a.enumerable});return e},u={};c(u,a=i,"default"),o&&c(o,a,"default");var s={comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["<",">"]],autoClosingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],surroundingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],onEnterRules:[{beforeText:new RegExp("<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:u.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:u.languages.IndentAction.Indent}}]},p={defaultToken:"",tokenPostfix:".xml",ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,""],{include:"@whitespace"},[/(<)(@qualifiedName)/,[{token:"delimiter"},{token:"tag",next:"@tag"}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:"delimiter"},{token:"tag"},"",{token:"delimiter"}]],[/(<\?)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/(<\!)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/<\!\[CDATA\[/,{token:"delimiter.cdata",next:"@cdata"}],[/&\w+;/,"string.escape"]],cdata:[[/[^\]]+/,""],[/\]\]>/,{token:"delimiter.cdata",next:"@pop"}],[/\]/,""]],tag:[[/[ \t\r\n]+/,""],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,["attribute.name","","attribute.value"]],[/@qualifiedName/,"attribute.name"],[/\?>/,{token:"delimiter",next:"@pop"}],[/(\/)(>)/,[{token:"tag"},{token:"delimiter",next:"@pop"}]],[/>/,{token:"delimiter",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/<!--/,{token:"comment",next:"@comment"}]],comment:[[/[^<\-]+/,"comment.content"],[/-->/,{token:"comment",next:"@pop"}],[/<!--/,"comment.content.invalid"],[/[<\-]/,"comment.content"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7543.3fcfd3ba.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/7543.3fcfd3ba.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7543.3fcfd3ba.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/7548.8ef3bbc0.chunk.js b/ydb/core/viewer/monitoring/static/js/7548.8ef3bbc0.chunk.js deleted file mode 100644 index e6e4b7044c32..000000000000 --- a/ydb/core/viewer/monitoring/static/js/7548.8ef3bbc0.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7548],{17548:function(e,t,n){n.r(t),n.d(t,{getJavaScriptWorker:function(){return E},getTypeScriptWorker:function(){return K},setupJavaScript:function(){return N},setupTypeScript:function(){return O}});var r,i=n(81864),o=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(t){o(t)}}function a(e){try{u(r.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(a){o=[6,a],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}},a=function(){function e(e,t){var n=this;this._modeId=e,this._defaults=t,this._worker=null,this._client=null,this._configChangeListener=this._defaults.onDidChange((function(){return n._stopWorker()})),this._updateExtraLibsToken=0,this._extraLibsChangeListener=this._defaults.onDidExtraLibsChange((function(){return n._updateExtraLibs()}))}return e.prototype._stopWorker=function(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null},e.prototype.dispose=function(){this._configChangeListener.dispose(),this._extraLibsChangeListener.dispose(),this._stopWorker()},e.prototype._updateExtraLibs=function(){return o(this,void 0,void 0,(function(){var e,t;return s(this,(function(n){switch(n.label){case 0:return this._worker?(e=++this._updateExtraLibsToken,[4,this._worker.getProxy()]):[2];case 1:return t=n.sent(),this._updateExtraLibsToken!==e?[2]:(t.updateExtraLibs(this._defaults.getExtraLibs()),[2])}}))}))},e.prototype._getClient=function(){var e=this;if(!this._client){this._worker=i.j6.createWebWorker({moduleId:"vs/language/typescript/tsWorker",label:this._modeId,keepIdleModels:!0,createData:{compilerOptions:this._defaults.getCompilerOptions(),extraLibs:this._defaults.getExtraLibs(),customWorkerPath:this._defaults.workerOptions.customWorkerPath}});var t=this._worker.getProxy();this._defaults.getEagerModelSync()&&(t=t.then((function(t){return e._worker?e._worker.withSyncedResources(i.j6.getModels().filter((function(t){return t.getModeId()===e._modeId})).map((function(e){return e.uri}))):t}))),this._client=t}return this._client},e.prototype.getLanguageServiceWorker=function(){for(var e,t=this,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return this._getClient().then((function(t){e=t})).then((function(e){if(t._worker)return t._worker.withSyncedResources(n)})).then((function(t){return e}))},e}(),u={"lib.d.ts":!0,"lib.dom.d.ts":!0,"lib.dom.iterable.d.ts":!0,"lib.es2015.collection.d.ts":!0,"lib.es2015.core.d.ts":!0,"lib.es2015.d.ts":!0,"lib.es2015.generator.d.ts":!0,"lib.es2015.iterable.d.ts":!0,"lib.es2015.promise.d.ts":!0,"lib.es2015.proxy.d.ts":!0,"lib.es2015.reflect.d.ts":!0,"lib.es2015.symbol.d.ts":!0,"lib.es2015.symbol.wellknown.d.ts":!0,"lib.es2016.array.include.d.ts":!0,"lib.es2016.d.ts":!0,"lib.es2016.full.d.ts":!0,"lib.es2017.d.ts":!0,"lib.es2017.full.d.ts":!0,"lib.es2017.intl.d.ts":!0,"lib.es2017.object.d.ts":!0,"lib.es2017.sharedmemory.d.ts":!0,"lib.es2017.string.d.ts":!0,"lib.es2017.typedarrays.d.ts":!0,"lib.es2018.asyncgenerator.d.ts":!0,"lib.es2018.asynciterable.d.ts":!0,"lib.es2018.d.ts":!0,"lib.es2018.full.d.ts":!0,"lib.es2018.intl.d.ts":!0,"lib.es2018.promise.d.ts":!0,"lib.es2018.regexp.d.ts":!0,"lib.es2019.array.d.ts":!0,"lib.es2019.d.ts":!0,"lib.es2019.full.d.ts":!0,"lib.es2019.object.d.ts":!0,"lib.es2019.string.d.ts":!0,"lib.es2019.symbol.d.ts":!0,"lib.es2020.bigint.d.ts":!0,"lib.es2020.d.ts":!0,"lib.es2020.full.d.ts":!0,"lib.es2020.intl.d.ts":!0,"lib.es2020.promise.d.ts":!0,"lib.es2020.sharedmemory.d.ts":!0,"lib.es2020.string.d.ts":!0,"lib.es2020.symbol.wellknown.d.ts":!0,"lib.es5.d.ts":!0,"lib.es6.d.ts":!0,"lib.esnext.d.ts":!0,"lib.esnext.full.d.ts":!0,"lib.esnext.intl.d.ts":!0,"lib.esnext.promise.d.ts":!0,"lib.esnext.string.d.ts":!0,"lib.esnext.weakref.d.ts":!0,"lib.scripthost.d.ts":!0,"lib.webworker.d.ts":!0,"lib.webworker.importscripts.d.ts":!0,"lib.webworker.iterable.d.ts":!0},c=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),l=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(t){o(t)}}function a(e){try{u(r.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))},d=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(a){o=[6,a],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}};function f(e,t,n){if(void 0===n&&(n=0),"string"===typeof e)return e;if(void 0===e)return"";var r="";if(n){r+=t;for(var i=0;i<n;i++)r+=" "}if(r+=e.messageText,n++,e.next)for(var o=0,s=e.next;o<s.length;o++){r+=f(s[o],t,n)}return r}function p(e){return e?e.map((function(e){return e.text})).join(""):""}!function(e){e[e.None=0]="None",e[e.Block=1]="Block",e[e.Smart=2]="Smart"}(r||(r={}));var g,h=function(){function e(e){this._worker=e}return e.prototype._textSpanToRange=function(e,t){var n=e.getPositionAt(t.start),r=e.getPositionAt(t.start+t.length);return{startLineNumber:n.lineNumber,startColumn:n.column,endLineNumber:r.lineNumber,endColumn:r.column}},e}(),m=function(){function e(e){this._worker=e,this._libFiles={},this._hasFetchedLibFiles=!1,this._fetchLibFilesPromise=null}return e.prototype.isLibFile=function(e){return!!e&&(0===e.path.indexOf("/lib.")&&!!u[e.path.slice(1)])},e.prototype.getOrCreateModel=function(e){var t=i.j6.getModel(e);return t||(this.isLibFile(e)&&this._hasFetchedLibFiles?i.j6.createModel(this._libFiles[e.path.slice(1)],"typescript",e):null)},e.prototype._containsLibFile=function(e){for(var t=0,n=e;t<n.length;t++){var r=n[t];if(this.isLibFile(r))return!0}return!1},e.prototype.fetchLibFilesIfNecessary=function(e){return l(this,void 0,void 0,(function(){return d(this,(function(t){switch(t.label){case 0:return this._containsLibFile(e)?[4,this._fetchLibFiles()]:[2];case 1:return t.sent(),[2]}}))}))},e.prototype._fetchLibFiles=function(){var e=this;return this._fetchLibFilesPromise||(this._fetchLibFilesPromise=this._worker().then((function(e){return e.getLibFiles()})).then((function(t){e._hasFetchedLibFiles=!0,e._libFiles=t}))),this._fetchLibFilesPromise},e}();!function(e){e[e.Warning=0]="Warning",e[e.Error=1]="Error",e[e.Suggestion=2]="Suggestion",e[e.Message=3]="Message"}(g||(g={}));var b=function(e){function t(t,n,r,o){var s=e.call(this,o)||this;s._libFiles=t,s._defaults=n,s._selector=r,s._disposables=[],s._listener=Object.create(null);var a=function(e){if(e.getModeId()===r){var t,n=function(){s._defaults.getDiagnosticsOptions().onlyVisible?e.isAttachedToEditor()&&s._doValidate(e):s._doValidate(e)},o=e.onDidChangeContent((function(){clearTimeout(t),t=setTimeout(n,500)})),a=e.onDidChangeAttached((function(){s._defaults.getDiagnosticsOptions().onlyVisible&&(e.isAttachedToEditor()?n():i.j6.setModelMarkers(e,s._selector,[]))}));s._listener[e.uri.toString()]={dispose:function(){o.dispose(),a.dispose(),clearTimeout(t)}},n()}},u=function(e){i.j6.setModelMarkers(e,s._selector,[]);var t=e.uri.toString();s._listener[t]&&(s._listener[t].dispose(),delete s._listener[t])};s._disposables.push(i.j6.onDidCreateModel((function(e){return a(e)}))),s._disposables.push(i.j6.onWillDisposeModel(u)),s._disposables.push(i.j6.onDidChangeModelLanguage((function(e){u(e.model),a(e.model)}))),s._disposables.push({dispose:function(){for(var e=0,t=i.j6.getModels();e<t.length;e++){var n=t[e];u(n)}}});var c=function(){for(var e=0,t=i.j6.getModels();e<t.length;e++){var n=t[e];u(n),a(n)}};return s._disposables.push(s._defaults.onDidChange(c)),s._disposables.push(s._defaults.onDidExtraLibsChange(c)),i.j6.getModels().forEach((function(e){return a(e)})),s}return c(t,e),t.prototype.dispose=function(){this._disposables.forEach((function(e){return e&&e.dispose()})),this._disposables=[]},t.prototype._doValidate=function(e){return l(this,void 0,void 0,(function(){var t,n,r,o,s,a,u,c,l,f=this;return d(this,(function(d){switch(d.label){case 0:return[4,this._worker(e.uri)];case 1:return t=d.sent(),e.isDisposed()?[2]:(n=[],r=this._defaults.getDiagnosticsOptions(),o=r.noSyntaxValidation,s=r.noSemanticValidation,a=r.noSuggestionDiagnostics,o||n.push(t.getSyntacticDiagnostics(e.uri.toString())),s||n.push(t.getSemanticDiagnostics(e.uri.toString())),a||n.push(t.getSuggestionDiagnostics(e.uri.toString())),[4,Promise.all(n)]);case 2:return!(u=d.sent())||e.isDisposed()?[2]:(c=u.reduce((function(e,t){return t.concat(e)}),[]).filter((function(e){return-1===(f._defaults.getDiagnosticsOptions().diagnosticCodesToIgnore||[]).indexOf(e.code)})),l=c.map((function(e){return e.relatedInformation||[]})).reduce((function(e,t){return t.concat(e)}),[]).map((function(e){return e.file?i.Sf.parse(e.file.fileName):null})),[4,this._libFiles.fetchLibFilesIfNecessary(l)]);case 3:return d.sent(),e.isDisposed()?[2]:(i.j6.setModelMarkers(e,this._selector,c.map((function(t){return f._convertDiagnostics(e,t)}))),[2])}}))}))},t.prototype._convertDiagnostics=function(e,t){var n=t.start||0,r=t.length||1,o=e.getPositionAt(n),s=o.lineNumber,a=o.column,u=e.getPositionAt(n+r),c=u.lineNumber,l=u.column,d=[];return t.reportsUnnecessary&&d.push(i.eB.Unnecessary),t.reportsDeprecated&&d.push(i.eB.Deprecated),{severity:this._tsDiagnosticCategoryToMarkerSeverity(t.category),startLineNumber:s,startColumn:a,endLineNumber:c,endColumn:l,message:f(t.messageText,"\n"),code:t.code.toString(),tags:d,relatedInformation:this._convertRelatedInformation(e,t.relatedInformation)}},t.prototype._convertRelatedInformation=function(e,t){var n=this;if(t){var r=[];return t.forEach((function(t){var o=e;if(t.file){var s=i.Sf.parse(t.file.fileName);o=n._libFiles.getOrCreateModel(s)}if(o){var a=t.start||0,u=t.length||1,c=o.getPositionAt(a),l=c.lineNumber,d=c.column,p=o.getPositionAt(a+u),g=p.lineNumber,h=p.column;r.push({resource:o.uri,startLineNumber:l,startColumn:d,endLineNumber:g,endColumn:h,message:f(t.messageText,"\n")})}})),r}},t.prototype._tsDiagnosticCategoryToMarkerSeverity=function(e){switch(e){case g.Error:return i.ZL.Error;case g.Message:return i.ZL.Info;case g.Warning:return i.ZL.Warning;case g.Suggestion:return i.ZL.Hint}return i.ZL.Info},t}(h),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c(t,e),Object.defineProperty(t.prototype,"triggerCharacters",{get:function(){return["."]},enumerable:!1,configurable:!0}),t.prototype.provideCompletionItems=function(e,n,r,o){return l(this,void 0,void 0,(function(){var r,o,s,a,u,c,l;return d(this,(function(d){switch(d.label){case 0:return r=e.getWordUntilPosition(n),o=new i.e6(n.lineNumber,r.startColumn,n.lineNumber,r.endColumn),s=e.uri,a=e.getOffsetAt(n),[4,this._worker(s)];case 1:return u=d.sent(),e.isDisposed()?[2]:[4,u.getCompletionsAtPosition(s.toString(),a)];case 2:return!(c=d.sent())||e.isDisposed()?[2]:(l=c.entries.map((function(r){var u,c=o;if(r.replacementSpan){var l=e.getPositionAt(r.replacementSpan.start),d=e.getPositionAt(r.replacementSpan.start+r.replacementSpan.length);c=new i.e6(l.lineNumber,l.column,d.lineNumber,d.column)}var f=[];return-1!==(null===(u=r.kindModifiers)||void 0===u?void 0:u.indexOf("deprecated"))&&f.push(i.Mj.CompletionItemTag.Deprecated),{uri:s,position:n,offset:a,range:c,label:r.name,insertText:r.name,sortText:r.sortText,kind:t.convertKind(r.kind),tags:f}})),[2,{suggestions:l}])}}))}))},t.prototype.resolveCompletionItem=function(e,n){return l(this,void 0,void 0,(function(){var n,r,i,o,s;return d(this,(function(a){switch(a.label){case 0:return r=(n=e).uri,i=n.position,o=n.offset,[4,this._worker(r)];case 1:return[4,a.sent().getCompletionEntryDetails(r.toString(),o,n.label)];case 2:return(s=a.sent())?[2,{uri:r,position:i,label:s.name,kind:t.convertKind(s.kind),detail:p(s.displayParts),documentation:{value:t.createDocumentationString(s)}}]:[2,n]}}))}))},t.convertKind=function(e){switch(e){case M.primitiveType:case M.keyword:return i.Mj.CompletionItemKind.Keyword;case M.variable:case M.localVariable:return i.Mj.CompletionItemKind.Variable;case M.memberVariable:case M.memberGetAccessor:case M.memberSetAccessor:return i.Mj.CompletionItemKind.Field;case M.function:case M.memberFunction:case M.constructSignature:case M.callSignature:case M.indexSignature:return i.Mj.CompletionItemKind.Function;case M.enum:return i.Mj.CompletionItemKind.Enum;case M.module:return i.Mj.CompletionItemKind.Module;case M.class:return i.Mj.CompletionItemKind.Class;case M.interface:return i.Mj.CompletionItemKind.Interface;case M.warning:return i.Mj.CompletionItemKind.File}return i.Mj.CompletionItemKind.Property},t.createDocumentationString=function(e){var t=p(e.documentation);if(e.tags)for(var n=0,r=e.tags;n<r.length;n++){t+="\n\n"+y(r[n])}return t},t}(h);function y(e){var t="*@"+e.name+"*";if("param"===e.name&&e.text){var n=e.text.split(" "),r=n[0],i=n.slice(1);t+="`"+r+"`",i.length>0&&(t+=" \u2014 "+i.join(" "))}else e.text&&(t+=" \u2014 "+e.text);return t}var _=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.signatureHelpTriggerCharacters=["(",","],t}return c(t,e),t._toSignatureHelpTriggerReason=function(e){switch(e.triggerKind){case i.Mj.SignatureHelpTriggerKind.TriggerCharacter:return e.triggerCharacter?e.isRetrigger?{kind:"retrigger",triggerCharacter:e.triggerCharacter}:{kind:"characterTyped",triggerCharacter:e.triggerCharacter}:{kind:"invoked"};case i.Mj.SignatureHelpTriggerKind.ContentChange:return e.isRetrigger?{kind:"retrigger"}:{kind:"invoked"};case i.Mj.SignatureHelpTriggerKind.Invoke:default:return{kind:"invoked"}}},t.prototype.provideSignatureHelp=function(e,n,r,i){return l(this,void 0,void 0,(function(){var r,o,s,a,u;return d(this,(function(c){switch(c.label){case 0:return r=e.uri,o=e.getOffsetAt(n),[4,this._worker(r)];case 1:return s=c.sent(),e.isDisposed()?[2]:[4,s.getSignatureHelpItems(r.toString(),o,{triggerReason:t._toSignatureHelpTriggerReason(i)})];case 2:return!(a=c.sent())||e.isDisposed()?[2]:(u={activeSignature:a.selectedItemIndex,activeParameter:a.argumentIndex,signatures:[]},a.items.forEach((function(e){var t={label:"",parameters:[]};t.documentation={value:p(e.documentation)},t.label+=p(e.prefixDisplayParts),e.parameters.forEach((function(n,r,i){var o=p(n.displayParts),s={label:o,documentation:{value:p(n.documentation)}};t.label+=o,t.parameters.push(s),r<i.length-1&&(t.label+=p(e.separatorDisplayParts))})),t.label+=p(e.suffixDisplayParts),u.signatures.push(t)})),[2,{value:u,dispose:function(){}}])}}))}))},t}(h),S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c(t,e),t.prototype.provideHover=function(e,t,n){return l(this,void 0,void 0,(function(){var n,r,i,o,s,a,u;return d(this,(function(c){switch(c.label){case 0:return n=e.uri,r=e.getOffsetAt(t),[4,this._worker(n)];case 1:return i=c.sent(),e.isDisposed()?[2]:[4,i.getQuickInfoAtPosition(n.toString(),r)];case 2:return!(o=c.sent())||e.isDisposed()?[2]:(s=p(o.documentation),a=o.tags?o.tags.map((function(e){return y(e)})).join(" \n\n"):"",u=p(o.displayParts),[2,{range:this._textSpanToRange(e,o.textSpan),contents:[{value:"```typescript\n"+u+"\n```\n"},{value:s+(a?"\n\n"+a:"")}]}])}}))}))},t}(h),w=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c(t,e),t.prototype.provideDocumentHighlights=function(e,t,n){return l(this,void 0,void 0,(function(){var n,r,o,s,a=this;return d(this,(function(u){switch(u.label){case 0:return n=e.uri,r=e.getOffsetAt(t),[4,this._worker(n)];case 1:return o=u.sent(),e.isDisposed()?[2]:[4,o.getOccurrencesAtPosition(n.toString(),r)];case 2:return!(s=u.sent())||e.isDisposed()?[2]:[2,s.map((function(t){return{range:a._textSpanToRange(e,t.textSpan),kind:t.isWriteAccess?i.Mj.DocumentHighlightKind.Write:i.Mj.DocumentHighlightKind.Text}}))]}}))}))},t}(h),k=function(e){function t(t,n){var r=e.call(this,n)||this;return r._libFiles=t,r}return c(t,e),t.prototype.provideDefinition=function(e,t,n){return l(this,void 0,void 0,(function(){var n,r,o,s,a,u,c,l,f,p;return d(this,(function(d){switch(d.label){case 0:return n=e.uri,r=e.getOffsetAt(t),[4,this._worker(n)];case 1:return o=d.sent(),e.isDisposed()?[2]:[4,o.getDefinitionAtPosition(n.toString(),r)];case 2:return!(s=d.sent())||e.isDisposed()?[2]:[4,this._libFiles.fetchLibFilesIfNecessary(s.map((function(e){return i.Sf.parse(e.fileName)})))];case 3:if(d.sent(),e.isDisposed())return[2];for(a=[],u=0,c=s;u<c.length;u++)l=c[u],f=i.Sf.parse(l.fileName),(p=this._libFiles.getOrCreateModel(f))&&a.push({uri:f,range:this._textSpanToRange(p,l.textSpan)});return[2,a]}}))}))},t}(h),x=function(e){function t(t,n){var r=e.call(this,n)||this;return r._libFiles=t,r}return c(t,e),t.prototype.provideReferences=function(e,t,n,r){return l(this,void 0,void 0,(function(){var n,r,o,s,a,u,c,l,f,p;return d(this,(function(d){switch(d.label){case 0:return n=e.uri,r=e.getOffsetAt(t),[4,this._worker(n)];case 1:return o=d.sent(),e.isDisposed()?[2]:[4,o.getReferencesAtPosition(n.toString(),r)];case 2:return!(s=d.sent())||e.isDisposed()?[2]:[4,this._libFiles.fetchLibFilesIfNecessary(s.map((function(e){return i.Sf.parse(e.fileName)})))];case 3:if(d.sent(),e.isDisposed())return[2];for(a=[],u=0,c=s;u<c.length;u++)l=c[u],f=i.Sf.parse(l.fileName),(p=this._libFiles.getOrCreateModel(f))&&a.push({uri:f,range:this._textSpanToRange(p,l.textSpan)});return[2,a]}}))}))},t}(h),C=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c(t,e),t.prototype.provideDocumentSymbols=function(e,t){return l(this,void 0,void 0,(function(){var t,n,r,o,s,a=this;return d(this,(function(u){switch(u.label){case 0:return t=e.uri,[4,this._worker(t)];case 1:return n=u.sent(),e.isDisposed()?[2]:[4,n.getNavigationBarItems(t.toString())];case 2:return!(r=u.sent())||e.isDisposed()?[2]:(o=function(t,n,r){var s={name:n.text,detail:"",kind:j[n.kind]||i.Mj.SymbolKind.Variable,range:a._textSpanToRange(e,n.spans[0]),selectionRange:a._textSpanToRange(e,n.spans[0]),tags:[],containerName:r};if(n.childItems&&n.childItems.length>0)for(var u=0,c=n.childItems;u<c.length;u++){var l=c[u];o(t,l,s.name)}t.push(s)},s=[],r.forEach((function(e){return o(s,e)})),[2,s])}}))}))},t}(h),M=function(){function e(){}return e.unknown="",e.keyword="keyword",e.script="script",e.module="module",e.class="class",e.interface="interface",e.type="type",e.enum="enum",e.variable="var",e.localVariable="local var",e.function="function",e.localFunction="local function",e.memberFunction="method",e.memberGetAccessor="getter",e.memberSetAccessor="setter",e.memberVariable="property",e.constructorImplementation="constructor",e.callSignature="call",e.indexSignature="index",e.constructSignature="construct",e.parameter="parameter",e.typeParameter="type parameter",e.primitiveType="primitive type",e.label="label",e.alias="alias",e.const="const",e.let="let",e.warning="warning",e}(),j=Object.create(null);j[M.module]=i.Mj.SymbolKind.Module,j[M.class]=i.Mj.SymbolKind.Class,j[M.enum]=i.Mj.SymbolKind.Enum,j[M.interface]=i.Mj.SymbolKind.Interface,j[M.memberFunction]=i.Mj.SymbolKind.Method,j[M.memberVariable]=i.Mj.SymbolKind.Property,j[M.memberGetAccessor]=i.Mj.SymbolKind.Property,j[M.memberSetAccessor]=i.Mj.SymbolKind.Property,j[M.variable]=i.Mj.SymbolKind.Variable,j[M.const]=i.Mj.SymbolKind.Variable,j[M.localVariable]=i.Mj.SymbolKind.Variable,j[M.variable]=i.Mj.SymbolKind.Variable,j[M.function]=i.Mj.SymbolKind.Function,j[M.localFunction]=i.Mj.SymbolKind.Function;var D,F,I=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c(t,e),t._convertOptions=function(e){return{ConvertTabsToSpaces:e.insertSpaces,TabSize:e.tabSize,IndentSize:e.tabSize,IndentStyle:r.Smart,NewLineCharacter:"\n",InsertSpaceAfterCommaDelimiter:!0,InsertSpaceAfterSemicolonInForStatements:!0,InsertSpaceBeforeAndAfterBinaryOperators:!0,InsertSpaceAfterKeywordsInControlFlowStatements:!0,InsertSpaceAfterFunctionKeywordForAnonymousFunctions:!0,InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis:!1,InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets:!1,InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces:!1,PlaceOpenBraceOnNewLineForControlBlocks:!1,PlaceOpenBraceOnNewLineForFunctions:!1}},t.prototype._convertTextChanges=function(e,t){return{text:t.newText,range:this._textSpanToRange(e,t.span)}},t}(h),T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c(t,e),t.prototype.provideDocumentRangeFormattingEdits=function(e,t,n,r){return l(this,void 0,void 0,(function(){var r,i,o,s,a,u=this;return d(this,(function(c){switch(c.label){case 0:return r=e.uri,i=e.getOffsetAt({lineNumber:t.startLineNumber,column:t.startColumn}),o=e.getOffsetAt({lineNumber:t.endLineNumber,column:t.endColumn}),[4,this._worker(r)];case 1:return s=c.sent(),e.isDisposed()?[2]:[4,s.getFormattingEditsForRange(r.toString(),i,o,I._convertOptions(n))];case 2:return!(a=c.sent())||e.isDisposed()?[2]:[2,a.map((function(t){return u._convertTextChanges(e,t)}))]}}))}))},t}(I),P=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c(t,e),Object.defineProperty(t.prototype,"autoFormatTriggerCharacters",{get:function(){return[";","}","\n"]},enumerable:!1,configurable:!0}),t.prototype.provideOnTypeFormattingEdits=function(e,t,n,r,i){return l(this,void 0,void 0,(function(){var i,o,s,a,u=this;return d(this,(function(c){switch(c.label){case 0:return i=e.uri,o=e.getOffsetAt(t),[4,this._worker(i)];case 1:return s=c.sent(),e.isDisposed()?[2]:[4,s.getFormattingEditsAfterKeystroke(i.toString(),o,n,I._convertOptions(r))];case 2:return!(a=c.sent())||e.isDisposed()?[2]:[2,a.map((function(t){return u._convertTextChanges(e,t)}))]}}))}))},t}(I),L=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c(t,e),t.prototype.provideCodeActions=function(e,t,n,r){return l(this,void 0,void 0,(function(){var r,i,o,s,a,u,c,l=this;return d(this,(function(d){switch(d.label){case 0:return r=e.uri,i=e.getOffsetAt({lineNumber:t.startLineNumber,column:t.startColumn}),o=e.getOffsetAt({lineNumber:t.endLineNumber,column:t.endColumn}),s=I._convertOptions(e.getOptions()),a=n.markers.filter((function(e){return e.code})).map((function(e){return e.code})).map(Number),[4,this._worker(r)];case 1:return u=d.sent(),e.isDisposed()?[2]:[4,u.getCodeFixesAtPosition(r.toString(),i,o,a,s)];case 2:return!(c=d.sent())||e.isDisposed()?[2,{actions:[],dispose:function(){}}]:[2,{actions:c.filter((function(e){return 0===e.changes.filter((function(e){return e.isNewFile})).length})).map((function(t){return l._tsCodeFixActionToMonacoCodeAction(e,n,t)})),dispose:function(){}}]}}))}))},t.prototype._tsCodeFixActionToMonacoCodeAction=function(e,t,n){for(var r=[],i=0,o=n.changes;i<o.length;i++)for(var s=0,a=o[i].textChanges;s<a.length;s++){var u=a[s];r.push({resource:e.uri,edit:{range:this._textSpanToRange(e,u.span),text:u.newText}})}return{title:n.description,edit:{edits:r},diagnostics:t.markers,kind:"quickfix"}},t}(I),A=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c(t,e),t.prototype.provideRenameEdits=function(e,t,n,r){return l(this,void 0,void 0,(function(){var r,o,s,a,u,c,l,f,p,g,h,m;return d(this,(function(d){switch(d.label){case 0:return r=e.uri,o=r.toString(),s=e.getOffsetAt(t),[4,this._worker(r)];case 1:return a=d.sent(),e.isDisposed()?[2]:[4,a.getRenameInfo(o,s,{allowRenameOfImportPath:!1})];case 2:if(!1===(u=d.sent()).canRename)return[2,{edits:[],rejectReason:u.localizedErrorMessage}];if(void 0!==u.fileToRename)throw new Error("Renaming files is not supported.");return[4,a.findRenameLocations(o,s,!1,!1,!1)];case 3:if(!(c=d.sent())||e.isDisposed())return[2];for(l=[],f=0,p=c;f<p.length;f++){if(g=p[f],h=i.Sf.parse(g.fileName),!(m=i.j6.getModel(h)))throw new Error("Unknown URI "+h+".");l.push({resource:h,edit:{range:this._textSpanToRange(m,g.textSpan),text:n}})}return[2,{edits:l}]}}))}))},t}(h);function O(e){F=R(e,"typescript")}function N(e){D=R(e,"javascript")}function E(){return new Promise((function(e,t){if(!D)return t("JavaScript not registered!");e(D)}))}function K(){return new Promise((function(e,t){if(!F)return t("TypeScript not registered!");e(F)}))}function R(e,t){var n=new a(t,e),r=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n.getLanguageServiceWorker.apply(n,e)},o=new m(r);return i.Mj.registerCompletionItemProvider(t,new v(r)),i.Mj.registerSignatureHelpProvider(t,new _(r)),i.Mj.registerHoverProvider(t,new S(r)),i.Mj.registerDocumentHighlightProvider(t,new w(r)),i.Mj.registerDefinitionProvider(t,new k(o,r)),i.Mj.registerReferenceProvider(t,new x(o,r)),i.Mj.registerDocumentSymbolProvider(t,new C(r)),i.Mj.registerDocumentRangeFormattingEditProvider(t,new T(r)),i.Mj.registerOnTypeFormattingEditProvider(t,new P(r)),i.Mj.registerCodeActionProvider(t,new L(r)),i.Mj.registerRenameProvider(t,new A(r)),new b(o,e,t,r),r}}}]); -//# sourceMappingURL=7548.8ef3bbc0.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7554.28f3da22.chunk.js b/ydb/core/viewer/monitoring/static/js/7554.28f3da22.chunk.js new file mode 100644 index 000000000000..61cab711d852 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7554.28f3da22.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 7554.28f3da22.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7554],{77554:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>o,language:()=>i});var o={wordPattern:/(#?-?\d*\.\d\w*%?)|([@$#!.:]?[\w-?]+%?)|[@#!.]/g,comments:{blockComment:["/*","*/"],lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/"),end:new RegExp("^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/")}}},i={defaultToken:"",tokenPostfix:".scss",ws:"[ \t\n\r\f]*",identifier:"-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],tokenizer:{root:[{include:"@selector"}],selector:[{include:"@comments"},{include:"@import"},{include:"@variabledeclaration"},{include:"@warndebug"},["[@](include)",{token:"keyword",next:"@includedeclaration"}],["[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)",{token:"keyword",next:"@keyframedeclaration"}],["[@](page|content|font-face|-moz-document)",{token:"keyword"}],["[@](charset|namespace)",{token:"keyword",next:"@declarationbody"}],["[@](function)",{token:"keyword",next:"@functiondeclaration"}],["[@](mixin)",{token:"keyword",next:"@mixindeclaration"}],["url(\\-prefix)?\\(",{token:"meta",next:"@urldeclaration"}],{include:"@controlstatement"},{include:"@selectorname"},["[&\\*]","tag"],["[>\\+,]","delimiter"],["\\[",{token:"delimiter.bracket",next:"@selectorattribute"}],["{",{token:"delimiter.curly",next:"@selectorbody"}]],selectorbody:[["[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))","attribute.name","@rulevalue"],{include:"@selector"},["[@](extend)",{token:"keyword",next:"@extendbody"}],["[@](return)",{token:"keyword",next:"@declarationbody"}],["}",{token:"delimiter.curly",next:"@pop"}]],selectorname:[["#{",{token:"meta",next:"@variableinterpolation"}],["(\\.|#(?=[^{])|%|(@identifier)|:)+","tag"]],selectorattribute:[{include:"@term"},["]",{token:"delimiter.bracket",next:"@pop"}]],term:[{include:"@comments"},["url(\\-prefix)?\\(",{token:"meta",next:"@urldeclaration"}],{include:"@functioninvocation"},{include:"@numbers"},{include:"@strings"},{include:"@variablereference"},["(and\\b|or\\b|not\\b)","operator"],{include:"@name"},["([<>=\\+\\-\\*\\/\\^\\|\\~,])","operator"],[",","delimiter"],["!default","literal"],["\\(",{token:"delimiter.parenthesis",next:"@parenthizedterm"}]],rulevalue:[{include:"@term"},["!important","literal"],[";","delimiter","@pop"],["{",{token:"delimiter.curly",switchTo:"@nestedproperty"}],["(?=})",{token:"",next:"@pop"}]],nestedproperty:[["[*_]?@identifier@ws:","attribute.name","@rulevalue"],{include:"@comments"},["}",{token:"delimiter.curly",next:"@pop"}]],warndebug:[["[@](warn|debug)",{token:"keyword",next:"@declarationbody"}]],import:[["[@](import)",{token:"keyword",next:"@declarationbody"}]],variabledeclaration:[["\\$@identifier@ws:","variable.decl","@declarationbody"]],urldeclaration:[{include:"@strings"},["[^)\r\n]+","string"],["\\)",{token:"meta",next:"@pop"}]],parenthizedterm:[{include:"@term"},["\\)",{token:"delimiter.parenthesis",next:"@pop"}]],declarationbody:[{include:"@term"},[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],extendbody:[{include:"@selectorname"},["!optional","literal"],[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],variablereference:[["\\$@identifier","variable.ref"],["\\.\\.\\.","operator"],["#{",{token:"meta",next:"@variableinterpolation"}]],variableinterpolation:[{include:"@variablereference"},["}",{token:"meta",next:"@pop"}]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],name:[["@identifier","attribute.value"]],numbers:[["(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?",{token:"number",next:"@units"}],["#[0-9a-fA-F_]+(?!\\w)","number.hex"]],units:[["(em|ex|ch|rem|fr|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?","number","@pop"]],functiondeclaration:[["@identifier@ws\\(",{token:"meta",next:"@parameterdeclaration"}],["{",{token:"delimiter.curly",switchTo:"@functionbody"}]],mixindeclaration:[["@identifier@ws\\(",{token:"meta",next:"@parameterdeclaration"}],["@identifier","meta"],["{",{token:"delimiter.curly",switchTo:"@selectorbody"}]],parameterdeclaration:[["\\$@identifier@ws:","variable.decl"],["\\.\\.\\.","operator"],[",","delimiter"],{include:"@term"},["\\)",{token:"meta",next:"@pop"}]],includedeclaration:[{include:"@functioninvocation"},["@identifier","meta"],[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}],["{",{token:"delimiter.curly",switchTo:"@selectorbody"}]],keyframedeclaration:[["@identifier","meta"],["{",{token:"delimiter.curly",switchTo:"@keyframebody"}]],keyframebody:[{include:"@term"},["{",{token:"delimiter.curly",next:"@selectorbody"}],["}",{token:"delimiter.curly",next:"@pop"}]],controlstatement:[["[@](if|else|for|while|each|media)",{token:"keyword.flow",next:"@controlstatementdeclaration"}]],controlstatementdeclaration:[["(in|from|through|if|to)\\b",{token:"keyword.flow"}],{include:"@term"},["{",{token:"delimiter.curly",switchTo:"@selectorbody"}]],functionbody:[["[@](return)",{token:"keyword"}],{include:"@variabledeclaration"},{include:"@term"},{include:"@controlstatement"},[";","delimiter"],["}",{token:"delimiter.curly",next:"@pop"}]],functioninvocation:[["@identifier\\(",{token:"meta",next:"@functionarguments"}]],functionarguments:[["\\$@identifier@ws:","attribute.name"],["[,]","delimiter"],{include:"@term"},["\\)",{token:"meta",next:"@pop"}]],strings:[['~?"',{token:"string.delimiter",next:"@stringenddoublequote"}],["~?'",{token:"string.delimiter",next:"@stringendquote"}]],stringenddoublequote:[["\\\\.","string"],['"',{token:"string.delimiter",next:"@pop"}],[".","string"]],stringendquote:[["\\\\.","string"],["'",{token:"string.delimiter",next:"@pop"}],[".","string"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7554.28f3da22.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/7554.28f3da22.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7554.28f3da22.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/758.2eb69c4e.chunk.js b/ydb/core/viewer/monitoring/static/js/758.2eb69c4e.chunk.js deleted file mode 100644 index 24e95ba64c8f..000000000000 --- a/ydb/core/viewer/monitoring/static/js/758.2eb69c4e.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[758],{30758:function(e,n,t){t.r(n),t.d(n,{conf:function(){return o},language:function(){return r}});var o={comments:{lineComment:"'",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"],["addhandler","end addhandler"],["class","end class"],["enum","end enum"],["event","end event"],["function","end function"],["get","end get"],["if","end if"],["interface","end interface"],["module","end module"],["namespace","end namespace"],["operator","end operator"],["property","end property"],["raiseevent","end raiseevent"],["removehandler","end removehandler"],["select","end select"],["set","end set"],["structure","end structure"],["sub","end sub"],["synclock","end synclock"],["try","end try"],["while","end while"],["with","end with"],["using","end using"],["do","loop"],["for","next"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"<",close:">",notIn:["string","comment"]}],folding:{markers:{start:new RegExp("^\\s*#Region\\b"),end:new RegExp("^\\s*#End Region\\b")}}},r={defaultToken:"",tokenPostfix:".vb",ignoreCase:!0,brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.angle",open:"<",close:">"},{token:"keyword.tag-addhandler",open:"addhandler",close:"end addhandler"},{token:"keyword.tag-class",open:"class",close:"end class"},{token:"keyword.tag-enum",open:"enum",close:"end enum"},{token:"keyword.tag-event",open:"event",close:"end event"},{token:"keyword.tag-function",open:"function",close:"end function"},{token:"keyword.tag-get",open:"get",close:"end get"},{token:"keyword.tag-if",open:"if",close:"end if"},{token:"keyword.tag-interface",open:"interface",close:"end interface"},{token:"keyword.tag-module",open:"module",close:"end module"},{token:"keyword.tag-namespace",open:"namespace",close:"end namespace"},{token:"keyword.tag-operator",open:"operator",close:"end operator"},{token:"keyword.tag-property",open:"property",close:"end property"},{token:"keyword.tag-raiseevent",open:"raiseevent",close:"end raiseevent"},{token:"keyword.tag-removehandler",open:"removehandler",close:"end removehandler"},{token:"keyword.tag-select",open:"select",close:"end select"},{token:"keyword.tag-set",open:"set",close:"end set"},{token:"keyword.tag-structure",open:"structure",close:"end structure"},{token:"keyword.tag-sub",open:"sub",close:"end sub"},{token:"keyword.tag-synclock",open:"synclock",close:"end synclock"},{token:"keyword.tag-try",open:"try",close:"end try"},{token:"keyword.tag-while",open:"while",close:"end while"},{token:"keyword.tag-with",open:"with",close:"end with"},{token:"keyword.tag-using",open:"using",close:"end using"},{token:"keyword.tag-do",open:"do",close:"loop"},{token:"keyword.tag-for",open:"for",close:"next"}],keywords:["AddHandler","AddressOf","Alias","And","AndAlso","As","Async","Boolean","ByRef","Byte","ByVal","Call","Case","Catch","CBool","CByte","CChar","CDate","CDbl","CDec","Char","CInt","Class","CLng","CObj","Const","Continue","CSByte","CShort","CSng","CStr","CType","CUInt","CULng","CUShort","Date","Decimal","Declare","Default","Delegate","Dim","DirectCast","Do","Double","Each","Else","ElseIf","End","EndIf","Enum","Erase","Error","Event","Exit","False","Finally","For","Friend","Function","Get","GetType","GetXMLNamespace","Global","GoSub","GoTo","Handles","If","Implements","Imports","In","Inherits","Integer","Interface","Is","IsNot","Let","Lib","Like","Long","Loop","Me","Mod","Module","MustInherit","MustOverride","MyBase","MyClass","NameOf","Namespace","Narrowing","New","Next","Not","Nothing","NotInheritable","NotOverridable","Object","Of","On","Operator","Option","Optional","Or","OrElse","Out","Overloads","Overridable","Overrides","ParamArray","Partial","Private","Property","Protected","Public","RaiseEvent","ReadOnly","ReDim","RemoveHandler","Resume","Return","SByte","Select","Set","Shadows","Shared","Short","Single","Static","Step","Stop","String","Structure","Sub","SyncLock","Then","Throw","To","True","Try","TryCast","TypeOf","UInteger","ULong","UShort","Using","Variant","Wend","When","While","Widening","With","WithEvents","WriteOnly","Xor"],tagwords:["If","Sub","Select","Try","Class","Enum","Function","Get","Interface","Module","Namespace","Operator","Set","Structure","Using","While","With","Do","Loop","For","Next","Property","Continue","AddHandler","RemoveHandler","Event","RaiseEvent","SyncLock"],symbols:/[=><!~?;\.,:&|+\-*\/\^%]+/,integersuffix:/U?[DI%L&S@]?/,floatsuffix:/[R#F!]?/,tokenizer:{root:[{include:"@whitespace"},[/next(?!\w)/,{token:"keyword.tag-for"}],[/loop(?!\w)/,{token:"keyword.tag-do"}],[/end\s+(?!for|do)(addhandler|class|enum|event|function|get|if|interface|module|namespace|operator|property|raiseevent|removehandler|select|set|structure|sub|synclock|try|while|with|using)/,{token:"keyword.tag-$1"}],[/[a-zA-Z_]\w*/,{cases:{"@tagwords":{token:"keyword.tag-$0"},"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],[/^\s*#\w+/,"keyword"],[/\d*\d+e([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+(e[\-+]?\d+)?(@floatsuffix)/,"number.float"],[/&H[0-9a-f]+(@integersuffix)/,"number.hex"],[/&0[0-7]+(@integersuffix)/,"number.octal"],[/\d+(@integersuffix)/,"number"],[/#.*#/,"number"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/["\u201c\u201d]/,{token:"string.quote",next:"@string"}]],whitespace:[[/[ \t\r\n]+/,""],[/(\'|REM(?!\w)).*$/,"comment"]],string:[[/[^"\u201c\u201d]+/,"string"],[/["\u201c\u201d]{2}/,"string.escape"],[/["\u201c\u201d]C?/,{token:"string.quote",next:"@pop"}]]}}}}]); -//# sourceMappingURL=758.2eb69c4e.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7645.6565454c.chunk.js b/ydb/core/viewer/monitoring/static/js/7645.6565454c.chunk.js new file mode 100644 index 000000000000..a2db4876fcd0 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7645.6565454c.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7645],{87645:(e,t,n)=>{n.r(t),n.d(t,{default:()=>P});var i=n(68963),o=n(38982),s=n.n(o),l=n(85198),r=n.n(l),a=n(66307),c=n(30746),u=n(64270),d=n(396),h=n(70832),f=n(3186),p=n.n(f),g=n(8978);function m(e){const t=document.createElement("span");return t.innerText=e,t.innerHTML}const _="data-series-name",v="data-series-idx",y="_tooltip",b="_tooltip-row",w=()=>"<td />",E=e=>'<td class="_tooltip-rows__bubble-td">\n <div class="_tooltip-rows__bubble-div" style="background-color:'.concat(e.seriesColor,';"></div>\n </td>'),S=e=>'<td class="'.concat("_tooltip-rows__name-td",'">\n ').concat(e.hideSeriesName?"":m(e.seriesName),"\n </td>"),x=e=>'<td class="_tooltip-rows__percent-td">\n '.concat(e.percentValue?e.percentValue+"%":"","\n </td>"),A=e=>'<td class="_tooltip-rows__value-td">\n '.concat(e.value,"\n </td>"),T=e=>'<td class="_tooltip-rows__diff-td">\n '.concat(e.diff?" (".concat(e.diff,")"):"","\n </td>"),O=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return'<td class="_tooltip-right__td '.concat(t?"_tooltip-right__td_with-split-tooltip":"",'" colspan="').concat(n||1,'">\n ').concat(e.holiday?'<div class="_tooltip-right__holiday-div">\n <div class="_tooltip-right__holiday-emoji">\ud83c\udf88</div>\n <div>\n '.concat(e.holidayText,"\n ").concat(e.region?'<span class="_tooltip-right__holiday-region">['.concat(e.region,"]</span>"):"","\n </div>\n </div>"):"","\n\n ").concat(e.commentDateText?'<div class="'.concat(e.xComments?"_tooltip-right__margin-bot":"",'">').concat(e.commentDateText,"</div>"):"","\n\n ").concat(e.xComments?e.xComments.map((e=>'<div class="_tooltip-right__traf-div '.concat(t?"_tooltip-right__traf-div_for-split-tooltip":"",'" style="border-color: ').concat(e.color,';">').concat(e.text,"</div>"))).join(""):"","\n </td>")},L=(e,t)=>{let{isSelectedLine:n,cellsRenderers:i,isSingleLine:o,allowComment:s,withDarkBackground:l,rowIndex:r}=t;const a=e.commentText||e.xyCommentText,c=s&&a,u=i.slice(),d="".concat(String(r)||"","-").concat(String(m(e.seriesName)).slice(0,20).replace(/(\r\n|\n|\r)/gm,""));return e.insertCellAt&&(Object.keys(e.insertCellAt)||[]).forEach((e=>{u.splice(Number(e),0,w)})),e.customRender?'<tr class="'.concat(b).concat(n?" _tooltip-selected-row":"").concat(o?" _tooltip-uniq-row":"").concat(l?" _tooltip-row-dark-bg":"",'" ').concat(_,'="').concat(d,'" ').concat(e.seriesIdx?"".concat(v,'="').concat(e.seriesIdx,'"'):"",">\n ").concat(0===e.customRender.trim().indexOf("<td")?e.customRender:'<td colspan="'.concat(i.length,'">').concat(e.customRender,"</td>"),"\n </tr>\n ").concat(c?'<tr class="_tooltip-comment-row'.concat(n?" _tooltip-selected-row":"").concat(l?" _tooltip-row-dark-bg":"",'">\n <td>\n ').concat(e.commentText?'<div class="_tooltip-rows__comment-div">'.concat(e.commentText,"</div>"):"","\n ").concat(e.xyCommentText?'<div class="_tooltip-rows__comment-div">'.concat(e.xyCommentText,"</div>"):"","\n </td>\n </tr>"):""):'<tr class="'.concat(b).concat(n?" _tooltip-selected-row":"").concat(o?" _tooltip-uniq-row":"").concat(l?" _tooltip-row-dark-bg":"",'" ').concat(_,'="').concat(d,'" ').concat(e.seriesIdx?"".concat(v,'="').concat(e.seriesIdx,'"'):"",">\n ").concat(u.map(((t,n)=>e.replaceCellAt&&e.replaceCellAt[n]?"string"===typeof e.replaceCellAt[n]?e.replaceCellAt[n]:e.replaceCellAt[n](e):e.insertCellAt&&e.insertCellAt[n]?"string"===typeof e.insertCellAt[n]?e.insertCellAt[n]:e.insertCellAt[n](e):t(e))).join(""),"\n </tr>\n\n ").concat(c?'<tr class="_tooltip-comment-row'.concat(n?" _tooltip-selected-row":"").concat(l?" _tooltip-row-dark-bg":"",'">\n <td colspan="4">\n ').concat(e.commentText?'<div class="_tooltip-rows__comment-div">'.concat(e.commentText,"</div>"):"","\n ").concat(e.xyCommentText?'<div class="_tooltip-rows__comment-div">'.concat(e.xyCommentText,"</div>"):"","\n </td>\n </tr>"):"")},I=(e,t)=>{const{splitTooltip:n,activeRowAlwaysFirstInTooltip:i}=e,o=e.lines.findIndex((e=>{let{selectedSeries:t}=e;return t})),s=e.lines[o],l=e.lines.slice(0,(t.lastVisibleRowIndex||e.lines.length)+1),r=[];r.push(E),e.shared&&r.push(S),e.withPercent&&r.push(x),r.push(A),e.useCompareFrom&&r.push(T);const c={isSingleLine:1===l.length,cellsRenderers:r},u={cellsRenderers:r,useCompareFrom:e.useCompareFrom,isSelectedLine:!0,allowComment:o>t.lastVisibleRowIndex},d=document.body.clientHeight/(window.visualViewport&&window.visualViewport.scale||1);let h=y;return n&&(h+=" ".concat(y,"_split-tooltip")),'\n<div class="'.concat(h,'" style="max-height: ').concat(n?"auto":"".concat(d,"px"),'">\n ').concat(e.tooltipHeader?'<div title="'.concat((document.createRange().createContextualFragment(e.tooltipHeader).textContent||"").trim(),'" class="_tooltip-date">\n ').concat(e.tooltipHeader.trim(),"\n </div>"):"","\n ").concat(n&&(e.holiday||e.commentDateText||e.xComments&&e.xComments.length)?'<table border="0" cellpadding="0" cellspacing="0">\n <tbody>\n <tr>\n '.concat(O(e,!0,r.length),"\n </tr>\n </tbody>\n </table>"):"",'\n <table border="0" cellpadding="0" cellspacing="0">\n <tr>\n <td class="_tooltip-left__td">\n <table class="_tooltip-rows__table">\n ').concat(n?"":"<thead class=".concat("_tooltip-header",">\n ").concat(s&&(i||t.lastVisibleRowIndex&&o>t.lastVisibleRowIndex)?L(s,u):"",'\n <tr class="_tooltip-fake-row">').concat(Array(r.length).fill("<td></td>").join(""),"</tr>\n </thead>"),'\n <tbody class="').concat("_tooltip-list",'">\n ').concat(l.map(((e,t)=>L(e,function(e){return Object.assign(Object.assign({},c),{rowIndex:e,isSelectedLine:l.length>1&&e===o,withDarkBackground:l.length>2&&Boolean(e%2),allowComment:e!==o||!u.allowComment})}(t)))).join(""),"\n </tbody>\n ").concat(n?"":'<tbody class="'.concat("_tooltip-footer",'">\n ').concat(t.lastVisibleRowIndex&&e.hiddenRowsNumber>0?'<tr class="'.concat(b," _hidden-rows-sum").concat(l.length%2?" _hidden-rows-sum-dark-bg":"",'">\n <td colspan="').concat(r.length-1,'" class="_hidden-rows-number">\n ').concat((0,a.a)("common","tooltip-rest")," ").concat(e.hiddenRowsNumber,'\n </td>\n <td class="_hidden-rows-value">').concat(e.hiddenRowsSum,"</td>\n </tr>"):"",'\n <tr class="_tooltip-fake-row">').concat(Array(r.length).fill("<td></td>").join(""),"</tr>\n ").concat(e.sum?'<tr class="_tooltip-rows__summ-tr">\n <td class="_tooltip-rows__summ-td" colspan="'.concat(r.length-1,'">').concat((0,a.a)("common","tooltip-sum"),'</td>\n <td class="_tooltip-rows__summ-td _tooltip-rows__summ-td-value">\n ').concat(e.sum,"\n </td>\n </tr>"):"","\n </tbody>"),"\n </table>\n </td>\n\n ").concat(!n&&(e.holiday||e.commentDateText||e.xComments&&e.xComments.length)?O(e):"","\n </tr>\n </table>\n</div>")},D=e=>"object"===typeof e&&null!==e?Object.values(e).reduce(((e,t)=>t)):e,M=e=>{var t;const{data:n,userData:i,row:o,rowIndex:s}=e,l=i.graphs[s],r=null===(t=n.yagr.getSeriesById(o.id))||void 0===t?void 0:t.lineColor;let a=o.color;if("lineColor"===(null===l||void 0===l?void 0:l.legendColorKey))r&&(a=r);else a=o.color;return a},k=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;return(n,i)=>{const o=(i[i.length-1]-i[0])/e;return i.map((n=>{const i=(0,d.CQ)({input:n/e,timeZone:t});return 0===i.hour()&&0===i.minute()&&0===i.second()?i.format("DD.MM.YY"):i.format(o<300?"HH:mm:ss":"HH:mm")}))}},C=(e,t)=>n=>{const i=n/((null===e||void 0===e?void 0:e.timeMultiplier)||1),o=(0,d.CQ)({input:i}),s=60*(o.utcOffset()-(0,d.CQ)({input:i,timeZone:t}).utcOffset())*1e3;return new Date(o.valueOf()-s)},R=e=>{var t,n;const{data:i,libraryConfig:o,theme:s}=e,l=Object.assign(Object.assign({},o),{timeline:i.timeline,series:i.graphs}),{timeZone:r}=i,a={appearance:{locale:g.X.get("lang"),theme:s}};var c;p()(a,l.chart),l.chart=a,(null===(t=l.tooltip)||void 0===t?void 0:t.show)&&(l.tooltip=l.tooltip||{},l.tooltip.render=(null===(n=l.tooltip)||void 0===n?void 0:n.render)||(c=i,e=>{const{timeZone:t}=c,n=e.yagr.config.chart.timeMultiplier||1,i=e.options,{x:o,state:s}=e;let l=0;const r=Object.values(e.scales).reduce(((e,t)=>(l+=t.sum||0,e.concat(t.rows))),[]),a=r.length,u=D(i.sum),h=D(i.maxLines),f=D(i.value),p=s.pinned?void 0:a>h?Math.abs(h-a):void 0,g=p?f(r.slice(-p).reduce(((e,t)=>{let{originalValue:n}=t;return e+(n||0)}),0)):void 0,m={activeRowAlwaysFirstInTooltip:r.length>1,tooltipHeader:(0,d.CQ)({input:o/n,timeZone:t}).format("DD MMMM YYYY HH:mm:ss"),shared:!0,lines:r.map(((t,n)=>Object.assign(Object.assign({},t),{seriesName:t.name||"Serie "+(n+1),seriesColor:M({data:e,userData:c,row:t,rowIndex:n}),selectedSeries:t.active,seriesIdx:t.seriesIdx,percentValue:"number"===typeof t.transformed?t.transformed.toFixed(1):""}))),withPercent:D(i.percent),hiddenRowsNumber:p,hiddenRowsSum:g};return u&&(m.sum=f(l)),I(m,{lastVisibleRowIndex:s.pinned?r.length-1:h-1})}),l.tooltip.className||(l.tooltip.className="chartkit-yagr-tooltip"),e.customTooltip&&(l.tooltip.virtual=!0),l.tooltip.sort=l.tooltip.sort||((e,t)=>t.rowIdx-e.rowIdx)),l.axes=l.axes||{};const u=l.axes[h.defaults.DEFAULT_X_SCALE];return l.editUplotOptions=e=>Object.assign(Object.assign({},e),{tzDate:r?C(l.chart,r):void 0}),u&&!u.values&&(u.values=k(l.chart.timeMultiplier,r)),u||(l.axes[h.defaults.DEFAULT_X_SCALE]={values:k(l.chart.timeMultiplier,r)}),l},F=i.forwardRef((function(e,t){const{id:n,data:{data:o},onLoad:l,onRender:d,onChartLoad:h,tooltip:f}=e,p=i.useRef(null),[g,m]=i.useState();if(!o||r()(o))throw new c.Dx({code:c.Wn.NO_DATA,message:(0,a.a)("error","label_no-data")});const{config:_,debug:v}=((e,t)=>{const{data:n,sources:o,libraryConfig:s}=e.data,l=(0,u.C)();return{config:i.useMemo((()=>R({data:n,libraryConfig:s,theme:l,customTooltip:Boolean(e.tooltip)})),[n,s,l,e.tooltip]),debug:i.useMemo((()=>({filename:o&&Object.values(o).map((e=>{var t;return null===(t=null===e||void 0===e?void 0:e.data)||void 0===t?void 0:t.program})).filter(Boolean).join(", ")||t})),[t,o])}})(e,n),y=i.useCallback(((e,t)=>{let{renderTime:n}=t;null===l||void 0===l||l(Object.assign(Object.assign({},o),{widget:e,widgetRendering:n})),null===d||void 0===d||d({renderTime:n}),m(e)}),[l,d,o,m]),b=i.useCallback((()=>{g&&g.reflow()}),[]);return i.useImperativeHandle(t,(()=>({reflow(){b()}})),[b]),i.useEffect((()=>{var e,t,n,i,o;if(!g||(null===(t=null===(e=g.config)||void 0===e?void 0:e.tooltip)||void 0===t?void 0:t.virtual))return;const s={mouseMove:null,mouseDown:null};null===(n=g.plugins.tooltip)||void 0===n||n.on("render",(e=>{(e=>{const t=e.querySelector(".".concat("_tooltip-header")),n=e.querySelector(".".concat("_tooltip-list"));if(!t||!n||!t.children.length)return;const i=t.children[0];for(let a=0;a<i.children.length;a++){const e=i.children[a];e.removeAttribute("style"),1===(null===n||void 0===n?void 0:n.children.length)&&(e.innerHTML=" ")}const o=n.children[0];for(let a=0;a<o.children.length;a++)o.children[a].removeAttribute("style");const s=t.children[0].getBoundingClientRect().width>n.children[0].getBoundingClientRect().width?t:n,l=Array.prototype.reduce.call(s.children[0].children,((e,t)=>(e.push(t.getBoundingClientRect().width),e)),[]),r=(s===t?n:t).children[0];for(let a=0;a<r.children.length;a++)r.children[a].setAttribute("style","width: ".concat(l[a],"px"));if(1===n.children.length)for(const a of i.children)a.innerHTML=""})(e)})),null===(i=g.plugins.tooltip)||void 0===i||i.on("pin",((e,t)=>{let{actions:n}=t;var i;s.mouseMove=(i={tooltip:e,yagr:g},e=>{var t;const{tooltip:n,yagr:o}=i;if(!o)return;const s=e.target,l=s&&n.contains(s)&&"TD"===s.tagName?null===(t=s.parentElement)||void 0===t?void 0:t.dataset.seriesIdx:void 0,r=l?o.uplot.series[Number(l)]:null;o.setFocus(r?r.id:null,!0)}),s.mouseDown=(e=>t=>{var n;const{tooltip:i,actions:o,yagr:s}=e;if(!s)return;const l=t.target;if(l instanceof Element){const e=l&&i.contains(l),t=l&&(null===(n=s.root.querySelector(".u-over"))||void 0===n?void 0:n.contains(l));e||t||(o.pin(!1),o.hide())}})({tooltip:e,actions:n,yagr:g}),document.addEventListener("mousemove",s.mouseMove),document.addEventListener("mousedown",s.mouseDown)})),null===(o=g.plugins.tooltip)||void 0===o||o.on("unpin",(()=>{s.mouseMove&&(document.removeEventListener("mousemove",s.mouseMove),s.mouseMove=null),s.mouseDown&&(document.removeEventListener("mousedown",s.mouseDown),s.mouseDown=null)}))}),[g]),i.useLayoutEffect((()=>{null===h||void 0===h||h({widget:g})}),[g,h]),i.createElement(i.Fragment,null,f&&g&&f({yagr:g}),i.createElement(s(),{ref:p,id:n,config:_,debug:v,onChartLoad:y}))})),P=F},9084:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TIME_MULTIPLIER=t.TOOLTIP_DEFAULT_MAX_LINES=t.TOOLTIP_X_OFFSET=t.TOOLTIP_Y_OFFSET=t.MIN_SELECTION_WIDTH=t.CURSOR_STYLE=t.MARKER_DIAMETER=t.SERIE_AREA_BORDER_WIDTH=t.SERIE_AREA_BORDER_COLOR=t.SERIE_LINE_WIDTH=t.SERIE_COLOR=t.PADDING_BOTH=t.PADDING_RIGHT=t.PADDING_LEFT=t.BARS_DRAW_MAX=t.BARS_DRAW_FACTOR=t.TYPES_ORDER=t.X_AXIS_INCRS=t.X_AXIS_SPACE=t.X_AXIS_SIZE=t.X_AXIS_TICK_GAP=t.DECADE=t.YEAR=t.DAY=t.HOUR=t.MINUTE=t.SECOND=t.Y_AXIS_LABEL_SIZE=t.Y_AXIS_SIZE=t.DEFAULT_Y_AXIS_LABEL_PADDING=t.DEFAULT_Y_AXIS_PADDING=t.DEFAULT_Y_AXIS_SIZE=t.Y_AXIS_TICK_GAP=t.AXIS_VALUES_FONT=t.AXIS_LABEL_FONT=t.DEFAULT_AXIS_FONT_SIZE=t.DARK_DEFAULT_LINE_COLOR=t.LIGHT_DEFAULT_LINE_COLOR=t.DEFAULT_TITLE_FONT_SIZE=t.DEFAULT_SYNC_KEY=t.DEFAULT_POINT_SIZE=t.DEFAULT_LOGARITHMIC_MIN_SCALE_VALUE=t.DEFAULT_SCALE_MIN_RANGE=t.DEFAULT_Y_AXIS_OFFSET=t.DEFAULT_MAX_TICKS=t.DEFAULT_CANVAS_PIXEL_RATIO=t.DEFAULT_FOCUS_ALPHA=t.DEFAULT_Y_SCALE=t.DEFAULT_X_SCALE=t.DEFAULT_X_SERIE_NAME=void 0,t.DEFAULT_X_SERIE_NAME="date",t.DEFAULT_X_SCALE="x",t.DEFAULT_Y_SCALE="y",t.DEFAULT_FOCUS_ALPHA=.3,t.DEFAULT_CANVAS_PIXEL_RATIO="undefined"===typeof window?1:window.devicePixelRatio,t.DEFAULT_MAX_TICKS=5,t.DEFAULT_Y_AXIS_OFFSET=.05,t.DEFAULT_SCALE_MIN_RANGE=.01,t.DEFAULT_LOGARITHMIC_MIN_SCALE_VALUE=.001,t.DEFAULT_POINT_SIZE=t.DEFAULT_CANVAS_PIXEL_RATIO>=2?4:2,t.DEFAULT_SYNC_KEY="sync",t.DEFAULT_TITLE_FONT_SIZE=14,t.LIGHT_DEFAULT_LINE_COLOR="#222222",t.DARK_DEFAULT_LINE_COLOR="#eeeeee",t.DEFAULT_AXIS_FONT_SIZE=11,t.AXIS_LABEL_FONT="normal 11px Lucida Grande, Arial, Helvetica, sans-serif",t.AXIS_VALUES_FONT="11px Lucida Grande, Arial, Helvetica, sans-serif",t.Y_AXIS_TICK_GAP=6,t.DEFAULT_Y_AXIS_SIZE=12,t.DEFAULT_Y_AXIS_PADDING=12,t.DEFAULT_Y_AXIS_LABEL_PADDING=2;t.Y_AXIS_SIZE=(e,n,i)=>{if(!n)return t.DEFAULT_Y_AXIS_SIZE;const o=n.reduce(((e,t)=>e.length>t.length?e:t)),{ctx:s}=e;s.save();const l=e.axes[i];s.font=l.font?l.font[0]:t.AXIS_VALUES_FONT;const{width:r}=s.measureText(o);s.restore();let a=0;if(l.label){a=l.labelSize||t.DEFAULT_AXIS_FONT_SIZE,s.font=l.labelFont?l.labelFont[0]:t.AXIS_LABEL_FONT;const{fontBoundingBoxAscent:e}=s.measureText(l.label);a=e,s.restore()}return a?r/t.DEFAULT_CANVAS_PIXEL_RATIO+a/t.DEFAULT_CANVAS_PIXEL_RATIO+t.DEFAULT_Y_AXIS_LABEL_PADDING:r/t.DEFAULT_CANVAS_PIXEL_RATIO+t.DEFAULT_Y_AXIS_PADDING},t.Y_AXIS_LABEL_SIZE=11,t.SECOND=1e3,t.MINUTE=60*t.SECOND,t.HOUR=60*t.MINUTE,t.DAY=24*t.HOUR,t.YEAR=365*t.DAY,t.DECADE=10*t.YEAR,t.X_AXIS_TICK_GAP=6,t.X_AXIS_SIZE=32,t.X_AXIS_SPACE=80,t.X_AXIS_INCRS=[1,10,50,100,200,500,t.SECOND,2*t.SECOND,5*t.SECOND,10*t.SECOND,15*t.SECOND,30*t.SECOND,t.MINUTE,5*t.MINUTE,10*t.MINUTE,30*t.MINUTE,t.HOUR,2*t.HOUR,3*t.HOUR,4*t.HOUR,6*t.HOUR,12*t.HOUR,t.DAY,2*t.DAY,3*t.DAY,5*t.DAY,10*t.DAY,15*t.DAY,30*t.DAY,60*t.DAY,120*t.DAY,180*t.DAY,t.YEAR,2*t.YEAR,5*t.YEAR,10*t.YEAR],t.TYPES_ORDER=["dots","line","area","column"],t.BARS_DRAW_FACTOR=.5,t.BARS_DRAW_MAX=100,t.PADDING_LEFT=[14,14,0,4],t.PADDING_RIGHT=[14,4,0,14],t.PADDING_BOTH=[14,4,0,4],t.SERIE_COLOR="rgba(0, 0, 0, 1)",t.SERIE_LINE_WIDTH=2,t.SERIE_AREA_BORDER_COLOR="rgba(0, 0, 0, 0.2)",t.SERIE_AREA_BORDER_WIDTH=1,t.MARKER_DIAMETER=8,t.CURSOR_STYLE="1px solid #ffa0a0",t.MIN_SELECTION_WIDTH=15;t.default=class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"light";this.setTheme(t),this.colors=e}setTheme(e){this.theme=e}get GRID(){return{show:!0,stroke:()=>this.colors.parse("--yagr-grid"),width:1}}get X_AXIS_TICKS(){return{size:8,...this.GRID}}get Y_AXIS_TICKS(){return{size:6,...this.GRID}}get AXIS_STROKE(){return this.colors.parse("--yagr-axis-stroke")}get BACKGROUND(){return this.colors.parse("--yagr-background")}get SHIFT(){var e;return(null===(e=this.theme)||void 0===e?void 0:e.startsWith("light"))?.68:-.6}get DEFAULT_LINE_COLOR(){var e;return(null===(e=this.theme)||void 0===e?void 0:e.startsWith("light"))?t.LIGHT_DEFAULT_LINE_COLOR:t.DARK_DEFAULT_LINE_COLOR}},t.TOOLTIP_Y_OFFSET=24,t.TOOLTIP_X_OFFSET=24,t.TOOLTIP_DEFAULT_MAX_LINES=10,t.TIME_MULTIPLIER=1},19993:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,o)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return o(t,e),t},l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=l(n(95588)),a=l(n(6063)),c=n(36098),u=l(n(50934)),d=s(n(9084)),h=l(n(2921)),f=n(32616),p=n(24908),g=n(34730),m=n(28797),_=n(98855);class v{get isEmpty(){return this.state.isEmptyDataSet}constructor(e,t){var n=this;this.plugins={},this._meta={},this._uHooks={},this.init=()=>{var e;(null===(e=this.config.chart.size)||void 0===e?void 0:e.adaptive)&&!this.resizeOb&&(this.resizeOb=new ResizeObserver((0,c.debounce)(this.onResize,this.config.chart.size.resizeDebounceMs||100)),this.resizeOb.observe(this.root)),this.config.hooks.dispose||(this.config.hooks.dispose=[]),this.unsubscribe(),this.config.hooks.dispose.push(this.trackMouse())},this.execHooks=function(e){const t=n.config.hooks[e];if(Array.isArray(t)){for(var i=arguments.length,o=new Array(i>1?i-1:0),s=1;s<i;s++)o[s-1]=arguments[s];for(const e of t)e&&"function"===typeof e&&e(...o)}},this.initRender=(e,t)=>{var n,i,o;const s=null===(n=this.config.legend)||void 0===n?void 0:n.position;this.root.firstChild?s&&"bottom"!==s?this.root.appendChild(e.root):this.root.insertBefore(e.root,this.root.firstChild):s&&"bottom"!==s?this.root.insertBefore(e.root,this.root.firstChild):this.root.appendChild(e.root),(null===(i=this.config.legend)||void 0===i?void 0:i.show)&&(null===(o=this.plugins.legend)||void 0===o||o.init(e),this.reflow(!1)),this.initTitle(),t()},this.onResize=e=>{var t;const[n]=e;this._cache.height===n.contentRect.height&&this._cache.width===n.contentRect.width||(null===(t=this.plugins.tooltip)||void 0===t||t.reset(),this.reflow(),this.execHooks("resize",{entries:e,chart:this}))},this.initMixins(),this._startTime=performance.now(),this.state={isEmptyDataSet:!1,isMouseOver:!1,stage:"config",y2uIdx:{},subscribed:!1};const i=Object.assign({title:{},data:[],axes:{},series:[],scales:{},hooks:{},settings:{},chart:{},cursor:{},plugins:{},legend:{show:!1},tooltip:{show:!0},grid:null,markers:{}},t);this.config=i,this.inStage("config",(()=>{var t;this.id=e.id||(0,c.genId)(),this.root=e,this.root.classList.add("yagr"),this.root.id||(this.root.id=this.id);const n=new u.default,o=this.config.cursor.sync,s=this.config.chart;s.series||(s.series={type:"line"}),s.size||(s.size={adaptive:!0}),s.appearance||(s.appearance={locale:"en"}),s.select||(s.select={}),this.utils={colors:n,i18n:(0,h.default)((null===(t=i.chart.appearance)||void 0===t?void 0:t.locale)||"en"),theme:new d.default(n)},n.setContext(e),o&&(this.utils.sync=r.default.sync("string"===typeof o?o:d.DEFAULT_SYNC_KEY)),!s.size.adaptive&&s.size.width&&s.size.height&&(e.style.width=(0,c.px)(s.size.width),e.style.height=(0,c.px)(s.size.height)),this.plugins.legend=new a.default,this.setTheme(s.appearance.theme||"light"),this.createUplotOptions(),this._cache={height:this.options.height,width:this.options.width},i.editUplotOptions&&(this.options=i.editUplotOptions(this.options))})).inStage("processing",(()=>{this.transformSeries()})).inStage("uplot",(()=>{this.uplot=new r.default(this.options,this.series,this.initRender),this.canvas=e.querySelector("canvas"),this.init();const t=performance.now()-this._startTime;this._meta.processTime=t})).inStage("render")}redraw(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.uplot.redraw(e,t)}getSeriesById(e){return this.uplot.series[this.state.y2uIdx[e]]}dispose(){var e,t,n,i;this.resizeOb&&this.resizeOb.unobserve(this.root),this.unsubscribe(),null===(t=null===(e=this.plugins)||void 0===e?void 0:e.tooltip)||void 0===t||t.dispose(),null===(i=null===(n=this.plugins)||void 0===n?void 0:n.legend)||void 0===i||i.destroy(),this.uplot.destroy(),this._uHooks={},this.execHooks("dispose",{chart:this})}toDataUrl(){return this.canvas.toDataURL("img/png")}subscribe(){var e;this.state.subscribed||(null===(e=this.utils.sync)||void 0===e||e.sub(this.uplot),this.state.subscribed=!0)}unsubscribe(){var e;null===(e=this.utils.sync)||void 0===e||e.unsub(this.uplot),this.state.subscribed=!1}inStage(e,t){this.state.stage,this.execHooks("stage",{chart:this,stage:e});try{t&&t()}catch(n){console.error(n),this.onError(n)}return this}initTitle(){if(this.config.title&&this.config.title.fontSize){const e=this.config.title.fontSize,t=this.root.querySelector(".u-title");t.setAttribute("style","font-size:".concat(e,"px;line-height:").concat(e,"px;")),t.innerHTML=this.config.title.text}}onError(e){return this.execHooks("error",{stage:this.state.stage,error:e,chart:this}),e}trackMouse(){const e=()=>{this.state.isMouseOver=!0},t=()=>{this.state.isMouseOver=!1};return this.root.addEventListener("mouseover",e),this.root.addEventListener("mouseleave",t),()=>{this.root.removeEventListener("mouseover",e),this.root.removeEventListener("mouseleave",t)}}get clientHeight(){var e;const t=this.config.title.text?(this.config.title.fontSize||d.DEFAULT_TITLE_FONT_SIZE)+8:0;return this.root.clientHeight-t-((null===(e=this.plugins.legend)||void 0===e?void 0:e.state.totalSpace)||0)}reflow(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const t=this.root.clientWidth,n=this.clientHeight;this._cache.width=t,this.options.width=t,this._cache.height=n,this.options.height=n,e&&this.uplot.setSize({width:this.options.width,height:this.options.height}),e&&this.uplot.redraw()}}(0,m.applyMixins)(v,[f.CreateUplotOptionsMixin,p.TransformSeriesMixin,g.DynamicUpdatesMixin,_.BatchMixin]),t.default=v},2921:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});const n={ru:{"hide-all":"\u0421\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u0435","show-all":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435",sum:"\u0421\u0443\u043c\u043c\u0430",scale:"\u0428\u043a\u0430\u043b\u0430",series:"\u041b\u0438\u043d\u0438\u044f",weekend:"\u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439",nodata:"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445"},en:{"hide-all":"Hide all","show-all":"Show all",sum:"Total",scale:"Scale",series:"Series",weekend:"Weekend",nodata:"No data"}};t.default=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"en";return"string"!==typeof e&&(n.custom=e,e="custom"),t=>n[e][t]||t}},98855:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.BatchMixin=void 0;const o=i(n(95588)),s=i(n(6063));t.BatchMixin=class{initMixin(){this._batch={active:!1,fns:[]}}batch(e){var t;return this._batch.active?e(this._batch):(this._batch.active=!0,e(this._batch),this._batch.reinit?this.fullUpdate():(this._batch.redrawLegend&&(null===(t=this.plugins.legend)||void 0===t||t.redraw()),this._batch.reopt&&this.createUplotOptions(!0),this._batch.recalc&&this.inStage("processing",(()=>{this.transformSeries()})).inStage("listen"),this._batch.fns.length&&this.uplot.batch((()=>this._batch.fns.forEach((e=>e(this._batch))))),this._batch.redraw&&this.uplot&&this.redraw(...this._batch.redraw),void(this._batch={active:!1,fns:[]})))}fullUpdate(){let e,t;this.inStage("dispose",(()=>{var n;if(this.uplot){const n=this.uplot.cursor;e=n.left,t=n.top,this.uplot.destroy()}null===(n=this.plugins.legend)||void 0===n||n.destroy()})).inStage("config",(()=>{this.plugins.legend=new s.default,this._batch={active:!1,fns:[]},this.createUplotOptions(!0),this.options=this.config.editUplotOptions?this.config.editUplotOptions(this.options):this.options})).inStage("processing",(()=>{this.transformSeries()})).inStage("uplot",(()=>{this.uplot=new o.default(this.options,this.series,this.initRender),e&&t&&e>0&&t>0&&this.uplot.setCursor({left:e,top:t}),this.state.subscribed||this.unsubscribe()})).inStage("listen")}}},32616:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.CreateUplotOptionsMixin=void 0;const o=i(n(36558)),s=i(n(87163)),l=n(9084),r=n(36374),a=i(n(5613)),c=n(25009),u=n(6883),d=n(77423),h=n(61579),f=i(n(20315));function p(e,t){for(const n of e||[])if(n===t)return;null===e||void 0===e||e.push(t)}t.CreateUplotOptionsMixin=class{initMixin(){this._uHooks.onDraw=()=>{if("listen"===this.state.stage)return;this.state.stage="listen",this.execHooks("stage",{chart:this,stage:this.state.stage});const e=performance.now()-this._startTime;this._meta.renderTime=e,this.execHooks("load",{chart:this,meta:this._meta})},this._uHooks.ready=()=>{const e=performance.now()-this._startTime;this._meta.initTime=e,this.execHooks("inited",{chart:this,meta:{initTime:e}})},this._uHooks.drawClear=e=>{const{ctx:t}=e;t.save(),t.fillStyle=this.utils.theme.BACKGROUND,t.fillRect(l.DEFAULT_CANVAS_PIXEL_RATIO,l.DEFAULT_CANVAS_PIXEL_RATIO,e.width*l.DEFAULT_CANVAS_PIXEL_RATIO-2*l.DEFAULT_CANVAS_PIXEL_RATIO,e.height*l.DEFAULT_CANVAS_PIXEL_RATIO-2*l.DEFAULT_CANVAS_PIXEL_RATIO),t.restore()},this._uHooks.setSelect=e=>{const{left:t,width:n}=e.select,[i,o]=[e.posToVal(t,l.DEFAULT_X_SCALE),e.posToVal(t+n,l.DEFAULT_X_SCALE)],{timeMultiplier:s=l.TIME_MULTIPLIER}=this.config.chart||{};this.execHooks("onSelect",{from:Math.ceil(i/s),to:Math.ceil(o/s),chart:this}),e.setSelect({width:0,height:0,top:0,left:0},!1)}}createUplotOptions(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];var t,n,i,g,m,_,v,y,b,w,E;const{config:S}=this,x=[];let A=null===(t=this.plugins)||void 0===t?void 0:t.tooltip;if(S.tooltip&&!1!==S.tooltip.show&&(A?A.updateOptions(S.tooltip):A=(0,o.default)(this,S.tooltip),x.push(A.uplot),this.plugins.tooltip=A),e)this.plugins.plotLines&&x.push(this.plugins.plotLines.uplot);else{const e=(0,f.default)(this.config.plotLines||{})(this);this.plugins.plotLines=e,x.push(e.uplot)}Object.entries(S.plugins).forEach((e=>{let[t,n]=e;const i=n(this);x.push(i.uplot),Object.assign(this.plugins,{[t]:i})}));const T=S.chart,O={width:this.root.clientWidth,height:this.clientHeight,title:null===(n=S.title)||void 0===n?void 0:n.text,plugins:x,focus:{alpha:l.DEFAULT_FOCUS_ALPHA},series:[{id:l.DEFAULT_X_SERIE_NAME,$c:S.timeline,scale:l.DEFAULT_X_SCALE,count:S.timeline.length}],ms:T.timeMultiplier||l.TIME_MULTIPLIER,hooks:S.hooks||{}};if(this.state.isEmptyDataSet=0===S.timeline.length||0===S.series.length||S.series.every((e=>{let{data:t}=e;return 0===t.length})),O.cursor=O.cursor||{},O.cursor.points=O.cursor.points||{},O.cursor.drag=O.cursor.drag||{dist:(null===(i=T.select)||void 0===i?void 0:i.minWidth)||l.MIN_SELECTION_WIDTH,x:null===(g=O.cursor.y)||void 0===g||g,y:null!==(m=O.cursor.y)&&void 0!==m&&m,setScale:null===(v=null===(_=T.select)||void 0===_?void 0:_.zoom)||void 0===v||v},this.utils.sync&&(O.cursor.sync=O.cursor.sync||{key:this.utils.sync.key}),S.cursor){const e=(0,s.default)(this,S.cursor);this.plugins.cursor=e,x.push(e.uplot)}const L=S.series||[],I=O.series;for(let o=L.length-1;o>=0;o--){const e=(0,r.configureSeries)(this,L[o]||{},o),t=I.push(e);this.state.y2uIdx[e.id||o]=t-1}const D=(0,a.default)(this,S);x.push(D),O.series=I,S.scales&&0!==Object.keys(S.scales).length||(S.scales={x:{},y:{}}),O.scales=O.scales||{},O.scales=(0,c.configureScales)(this,O.scales,S),O.axes=O.axes||[];return O.axes.push(...(0,u.configureAxes)(this,S)),O.hooks=S.hooks||{},O.hooks.draw=O.hooks.draw||[],O.hooks.ready=O.hooks.ready||[],O.hooks.drawClear=O.hooks.drawClear||[],O.hooks.setSelect=O.hooks.setSelect||[],p(O.hooks.draw,this._uHooks.onDraw),p(O.hooks.ready,this._uHooks.ready),p(O.hooks.drawClear,this._uHooks.drawClear),p(O.hooks.setSelect,this._uHooks.setSelect),O.drawOrder=(null===(y=T.appearance)||void 0===y?void 0:y.drawOrder)?null===(b=T.appearance)||void 0===b?void 0:b.drawOrder.filter((e=>e===h.DrawOrderKey.Series||e===h.DrawOrderKey.Axes)):[h.DrawOrderKey.Series,h.DrawOrderKey.Axes],O.legend={show:!1},O.padding=(null===(w=S.chart.size)||void 0===w?void 0:w.padding)||(0,d.getPaddingByAxes)(O),null===(E=this.plugins.legend)||void 0===E||E.preInit(this,this.config.legend,O),O.height=this.clientHeight,this.options=O,O}}},34730:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.DynamicUpdatesMixin=void 0;const o=i(n(2921)),s=n(9084),l=n(36374),r=n(6883),a=n(36098);function c(e,t,n){var i,o,s,l,r,c,u,d,h,f,p,g;if(arguments.length>3&&void 0!==arguments[3]&&arguments[3])return e.config={...e.config,...n},void(t.reinit=!0);const m=function(e,t){return function(n,i){const o=(0,a.get)(e,n),s=(0,a.get)(t,n);return i?!i(o,s):o!==s}}(e.config,n);n.title&&m("title")&&e.setTitle(n.title),(null===(o=null===(i=n.chart)||void 0===i?void 0:i.appearance)||void 0===o?void 0:o.theme)&&m("chart.appearance.theme")&&e.setTheme(null===(l=null===(s=n.chart)||void 0===s?void 0:s.appearance)||void 0===l?void 0:l.theme),(null===(c=null===(r=n.chart)||void 0===r?void 0:r.appearance)||void 0===c?void 0:c.locale)&&m("chart.appearance.locale")&&e.setLocale(null===(d=null===(u=n.chart)||void 0===u?void 0:u.appearance)||void 0===d?void 0:d.locale),n.axes&&m("axes",a.deepIsEqual)&&e.setAxes(n.axes),n.scales&&m("scales",a.deepIsEqual)&&e.setScales(n.scales);Boolean(n.series)&&function(e,t){if(e.length!==(null===t||void 0===t?void 0:t.length))return!0;const n=new Map,i=new Map;return e.forEach((e=>{n.set(e.id,e)})),t.forEach((e=>{i.set(e.id,e)})),!(!t.some((e=>{let{id:t}=e;return!n.has(t)}))&&!e.some((e=>{let{id:t}=e;return!i.has(t)})))}(e.config.series,n.series)&&(t.redrawLegend=!0),(n.series||n.timeline)&&e.setSeries(null!==(h=n.timeline)&&void 0!==h?h:e.config.timeline,null!==(f=n.series)&&void 0!==f?f:e.config.series,{incremental:!1}),n.tooltip&&m("tooltip")&&(null===(p=e.plugins.tooltip)||void 0===p||p.updateOptions(n.tooltip)),n.legend&&m("legend")&&(t.reinit=!0),null===(g=e.plugins.tooltip)||void 0===g||g.reset(),t.reopt=!0,e.config={...e.config,...n}}function u(e,t,n){let i,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{incremental:!0,splice:!1},s=[],r=[],a=null,c=!1,u=!1;if(["number","string"].includes(typeof t)?(c=!1,i=!1,r=[n],a=t):"number"===typeof t[0]?(s=t,r=n,c=Boolean(o.incremental),i=!o.incremental):(r=t,i=!0),this.isEmpty&&r.some((e=>{let{data:t}=e;return null===t||void 0===t?void 0:t.length})))e.reinit=!0;else{if(!1===i){let t=!1;if(c&&this.config.timeline.push(...s),r.forEach((n=>{var i,o;let s="number"===typeof a?this.config.series[0]:this.config.series.find((e=>{let{id:t}=e;return t===n.id||t===a})),r=null===s||void 0===s?void 0:s.id;if("number"===typeof a&&this.state.y2uIdx[a]&&(s=this.config.series[a],r=a),s&&r){const{data:a,...d}=n,h=this.state.y2uIdx[r];"dots"!==s.type&&"dots"!==n.type&&"dots"!==(null===(i=this.config.chart.series)||void 0===i?void 0:i.type)||(e.reinit=!0),c?s.data=a?s.data.concat(a):s.data:(null===a||void 0===a?void 0:a.length)&&(s.data=a,u=!0);const f=(0,l.configureSeries)(this,Object.assign(s,d),h),p=this.options.series[h],g=this.uplot.series[h];g.show!==f.show&&e.fns.push((()=>{this.uplot.setSeries(h,{show:f.show})})),null!==g._focus&&g._focus===f.focus||e.fns.push((()=>{this.uplot.setSeries(h,{focus:f.focus})})),g.color!==f.color&&(t=!0),f.scale&&(null===(o=this.config.scales[f.scale])||void 0===o?void 0:o.stacking)&&(u=!0),(0,l.overrideSeriesInUpdate)(p,f),(0,l.overrideSeriesInUpdate)(g,f)}else e.fns.push((()=>{const e=(0,l.configureSeries)(this,n,this.config.series.length);this.state.y2uIdx[e.id]=this.uplot.series.length,this.uplot.addSeries(e,this.config.series.length)})),this.config.series.push(n)})),t&&e.fns.push((()=>{var e;null===(e=this.plugins.cursor)||void 0===e||e.updatePoints()})),o.splice){const e=r[0].data.length;this.config.series.forEach((t=>{t.data.splice(0,e)})),this.config.timeline.splice(0,s.length)}}else this.config.timeline=s,this.config.series=r,e.reinit=!0;e.reinit||(this._batch.fns.push((()=>{var e,t;return null===(t=null===(e=this.plugins)||void 0===e?void 0:e.tooltip)||void 0===t?void 0:t.reset()})),(u||s.length)&&(e.recalc=!0,e.fns.push((()=>{this.uplot.setData(this.series)}))))}}t.DynamicUpdatesMixin=class{setLocale(e){this.batch((t=>function(e,t,n){e.utils.i18n=(0,o.default)(n),t.redrawLegend=!0}(this,t,e)))}setTitle(e){this.batch((t=>{this.config.title=e,this.initTitle(),t.redraw=[!0,!0]}))}setTheme(e){this.batch((t=>function(e,t,n){e.utils.theme.setTheme(t);const i=["light","light-hc","dark","dark-hc"].map((e=>"yagr_theme_".concat(e)));e.root.classList.remove(...i),e.root.classList.add("yagr_theme_"+t),n.redraw=[!1,!0]}(this,e,t)))}setAxes(e){this.batch((t=>function(e,t,n){const{x:i,...o}=n;if(i){const t=e.uplot.axes.find((e=>{let{scale:t}=e;return t===s.DEFAULT_X_SCALE}));t&&(0,r.updateAxis)(e,t,{scale:s.DEFAULT_X_SCALE,...i})}Object.entries(o).forEach((t=>{let[n,i]=t;const o=e.uplot.axes.find((e=>{let{scale:t}=e;return t===n}));o&&(0,r.updateAxis)(e,o,{scale:n,...i})})),t.redraw=(0,r.getRedrawOptionsForAxesUpdate)(n)}(this,t,e)))}setSeries(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{incremental:!0,splice:!1};this.batch((i=>u.call(this,i,e,t,n)))}setFocus(e,t){this.batch((()=>function(e,t,n){var i;const o=null===t?null:e.state.y2uIdx[t];null===(i=e.plugins.cursor)||void 0===i||i.focus(o,n),e.uplot.setSeries(o,{focus:n})}(this,e,t)))}setVisible(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];this.batch((i=>function(e,t,n,i,o){const l=null===t?null:e.state.y2uIdx[t];(null===t?e.config.series:[e.config.series.find((e=>{let{id:n}=e;return n===t}))]).forEach((e=>{e&&(e.show=n)})),o.fns.push((()=>{e.uplot.setSeries(l,{show:n})})),e.options.series=e.uplot.series;let r=!1;if(l){const t=e.uplot.series[l];t.show=n;const i=t.scale||s.DEFAULT_Y_SCALE,o=e.config.scales[i];r=Boolean(o&&o.stacking)}else r=e.options.series.reduce(((t,i)=>{var o;const{scale:s}=i;return i.show=n,Boolean(s&&(null===(o=e.config.scales[s])||void 0===o?void 0:o.stacking)||t)}),!1);r&&(o.recalc=!0,o.fns.push((()=>{var t;e.uplot.setData(e.series,!0),i&&(null===(t=e.plugins.legend)||void 0===t||t.update())})))}(this,e,t,n,i)))}setScales(e){this.batch((t=>function(e,t,n){let i=!1,o=!1;Object.entries(t).forEach((t=>{let[n,s]=t;const l=e.config.scales[n];if(l){const{stacking:e}=l,{stacking:t}=s;e!==t&&(i=!0),s.normalize===l.normalize&&s.normalizeBase===l.normalizeBase||(o=!0)}}));const l=Object.entries(t).every((t=>{let[n,i]=t;const o=e.config.scales[n],{min:s,max:l,...r}=o,{min:c,max:u,...d}=i;return!(!1===(0,a.deepIsEqual)(d,r))&&(s!==c||l!==u)})),r=Object.keys(t).includes(s.DEFAULT_X_SCALE);if(l&&!r)return Object.entries(t).forEach((t=>{let[i,o]=t;n.fns.push((()=>{e.uplot.setScale(i,{min:o.min,max:o.max})}))}));(i||o)&&(n.reinit=!0),e.config.scales=t,n.reinit=!0}(this,e,t)))}setConfig(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.batch((n=>c(this,n,e,t)))}}},24908:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TransformSeriesMixin=void 0;const i=n(9084),o=n(36098);t.TransformSeriesMixin=class{transformSeries(){const e=performance.now(),t=[],n=this.config,s=n.timeline;let l=n.processing||!1,r=this.config.series.map((e=>{let{data:t}=e;return t}));l&&l.interpolation&&(r=(0,o.preprocess)(r,s,l),l=!1);const a=Boolean(l&&l.nullValues),c=l&&l.nullValues||{},u={};for(let d=0;d<r.length;d++){let e=[];const n=d+1,l=r[d],h=this.options.series.length-n,f=this.options.series[h],p=f.scale||i.DEFAULT_Y_SCALE,g=this.config.scales[p]||{},m=g.stacking,_=f.stackGroup||0;let v=!0;m&&!u[p]&&(this.options.focus=this.options.focus||{alpha:1.1},this.options.focus.alpha=1.1,u[p]=[]),m&&!u[p][_]&&(u[p][_]=new Array(s.length).fill(0)),f.count=0;for(let t=0;t<l.length;t++){let n=l[t];if(a&&c[String(n)]&&(n=null),f.transform&&(f._transformed=!0,n=f.transform(n,r,t)),g.transform&&(f._transformed=!0,n=g.transform(n,r,t)),null===n){if("line"===f.type||"dots"===f.type){e.push(null);continue}n=m?0:null}if(v=!1,g.normalize){const e=(0,o.getSumByIdx)(this.options.series,t,p);n=e&&(null!==n&&void 0!==n?n:0)/e*(g.normalizeBase||100),f.normalizedData=f.normalizedData||[],f.normalizedData[t]=n}g.stacking&&(!1===f.show&&(n=0),n=u[p][_][t]+=null!==n&&void 0!==n?n:0),"logarithmic"===g.type&&0===n&&(n=1),f.sum=(f.sum||0)+(n||0);"number"===typeof f.$c[t]&&(f.count+=1),e.push(n)}f.avg=(f.sum||0)/f.count,f.empty=v,f.postProcess&&(e=f.postProcess(e,d,this)),t.unshift(e)}return t.unshift(this.config.timeline),this.series=t,this.execHooks("processed",{chart:this,meta:{processTime:performance.now()-e}}),this.series}}},87163:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.cursorPoint=void 0;const o=n(9084),s=i(n(50934)),l=n(36098),r=50;function a(e,t,n){if(n||(n=t.querySelector("span")),!n)return;t.style.background="".concat(e.color),n.style.background=e.color||o.SERIE_COLOR;const i=s.default.parseRgba(e.color)||[256,256,256,0];t.style.boxShadow="0px 0px 0px 1px rgba(".concat(i[0],", ").concat(i[1],", ").concat(i[2],", 0.5)")}function c(e,t){const n=e.series[t],i=(0,l.html)("span"),o=(0,l.html)("div",{class:"yagr-point","data-idx":String(t)},n.empty?void 0:i);return n.empty?(o.style.display="none",o):(a(n,o,i),o)}function u(e,t){return void 0===t?Array.from(e.querySelectorAll(".yagr-point")):[e.querySelector('.yagr-point[data-idx="'.concat(t,'"]'))]}t.cursorPoint=c,t.default=function(e,t){var n,i,s;const d=e.config.processing||{},h=Boolean(d.interpolation),f=null===(n=d.interpolation)||void 0===n?void 0:n.value,p=!1!==t.snapToValues&&(t.snapToValues||"closest"),g=!!h&&(null!==(s=null===(i=d.interpolation)||void 0===i?void 0:i.snapToValues)&&void 0!==s?s:"closest");let m={};const _=(e,t,n)=>{const i=e.series[t];if(i.scale===o.DEFAULT_X_SCALE)return n;const s=i.$c||e.data[t],r=s[n];return h&&r===f?(0,l.findDataIdx)(s,i,n,g,f):null===r?(0,l.findDataIdx)(s,i,n,p,null):n};return{showPoints:t=>{const n=e.uplot.over;if(!n)return;u(n,t).forEach((e=>{e.style.visibility="visible"}))},hidePoints:t=>{const n=e.uplot.over;if(!n)return;u(n,t).forEach((e=>{e.style.visibility="hidden"}))},pin:t=>{var n;const i=e.root.querySelector(".u-over");if(i)if(t){const e=document.createElement("div");e.classList.add("yagr-points-holder"),i.querySelectorAll(".yagr-point").forEach((t=>{const n=t.cloneNode(!0);e.appendChild(n);const i=n.dataset.idx;i&&(m[i]=n)})),i.appendChild(e)}else m={},null===(n=i.querySelector(".yagr-points-holder"))||void 0===n||n.remove()},updatePoints:()=>{e.root.querySelectorAll(".yagr-point").forEach((t=>{const n=Number(t.dataset.idx);if(isNaN(n))return;a(e.uplot.series[n],t)}))},focus:(e,t)=>{Object.entries(m).forEach((n=>{let[i,o]=n;o.style.display=null!==e?i===String(e)&&t?"block":"none":t?"block":"none"}))},uplot:{opts:(e,n)=>{var i;n.cursor=n.cursor||{};const s=n.series.filter((e=>e.empty)).length,l=n.series.length-1,a=null!==(i=null===t||void 0===t?void 0:t.maxMarkers)&&void 0!==i?i:r;n.cursor.points={show:l-s<=a&&c,size:(e,n)=>{const i=e.series[n];return(i.cursorOptions?i.cursorOptions.markersSize:null===t||void 0===t?void 0:t.markersSize)||o.MARKER_DIAMETER}},n.cursor.dataIdx=_},hooks:{...t.hideMarkers&&{setCursor:n=>{var i,o;const s=n.cursor.idx;if(!(0,l.isNil)(s))for(let l=1;l<n.series.length;l++){const r=n.series[l].$c[s];t.hideMarkers(r,l)?null===(i=e.plugins.cursor)||void 0===i||i.hidePoints(l):null===(o=e.plugins.cursor)||void 0===o||o.showPoints(l)}}},init:e=>{const n=e.root.querySelector(".u-cursor-x");n&&(t.x&&!1===t.x.visible&&(n.style.display="none"),n.style.borderRight=t.x&&t.x.style||o.CURSOR_STYLE);const i=e.root.querySelector(".u-cursor-y");i&&(t.y&&!1!==t.y.visible?i.style.borderBottom=t.y.style||o.CURSOR_STYLE:i.style.display="none")}}}}}},6063:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.hasOneVisibleLine=void 0;const i=n(9084),o=n(36098),s=n(540),l="null";t.hasOneVisibleLine=e=>e.some((e=>{let{show:t,id:n}=e;return n!==i.DEFAULT_X_SERIE_NAME&&t}));const r=(e,n)=>n.length>3&&e((0,t.hasOneVisibleLine)(n)?"hide-all":"show-all");t.default=class{constructor(){this.pagesCount=0,this.state={page:0,pages:1,pageSize:0,rowsPerPage:1,paginated:!1,requiredSpace:0,totalSpace:0},this.itemsHtml="",this.preInit=(e,t,n)=>{this.yagr=e,this.options=Object.assign({show:!1,position:"bottom",fontSize:12,maxLegendSpace:.3,className:void 0,behaviour:"basic"},t||{}),this.calc(n)},this.init=e=>{var t;this.options.show&&(this.uplot=e,null===(t=e.root.querySelector(".u-legend"))||void 0===t||t.remove(),this.render())},this.update=()=>{this.yagr.root.querySelectorAll("[data-serie-id]").forEach((e=>{var t,n;const i=e.getAttribute("data-serie-id");if(!i||i===l)return;const o=null===(n=null===(t=this.uplot)||void 0===t?void 0:t.series[this.yagr.state.y2uIdx[i]])||void 0===n?void 0:n.show;e.classList[o?"remove":"add"]("yagr-legend__item_hidden")}))},this.measureLegend=e=>{const t=this.yagr.root,n=(0,o.html)("div",{class:"yagr-legend",style:{visibility:"hidden"}},e);t.appendChild(n);const i=n.childNodes[0].getBoundingClientRect();return n.remove(),i},this.nextPage=()=>{const{state:e}=this;this.state.page+=1,this.items&&(this.items.style.transform="translate(0, ".concat(-1*e.page*e.pageSize,"px)"),this.renderPagination())},this.prevPage=()=>{const{state:e}=this;this.state.page-=1,this.items&&(this.items.style.transform="translate(0, ".concat(-1*e.page*e.pageSize,"px)"),this.renderPagination())}}redraw(){this.options.show&&this.render()}destroy(){var e;this._onDestroy&&this._onDestroy(),null===(e=this.legendEl)||void 0===e||e.remove()}applyHandlers(){const{yagr:e,uplot:n}=this;if(!n)return()=>{};const i=e.root.querySelectorAll("[data-serie-id]"),o=[],a={basic:i=>()=>{const o=i.getAttribute("data-serie-id"),s=[];if(o===l){const e=!(0,t.hasOneVisibleLine)(n.series);for(let t=1;t<n.series.length;t++)s.push([n.series[t],e])}else{const e=n.series.find((e=>{let{id:t}=e;return t===o}));if(!e)return;s.push([e,!e.show])}s.forEach((t=>{let[n,i]=t;if(n.show===i)return;const o=e.root.querySelector('[data-serie-id="'.concat(n.id,'"]'));e.setVisible(n.id,i,!1),null===o||void 0===o||o.classList[i?"remove":"add"]("yagr-legend__item_hidden")}));const a=e.root.querySelector(".yagr-legend__all-series");if(a){const e=r(this.yagr.utils.i18n,n.series);a.innerHTML=e||""}},extended:i=>{const o=(t,n)=>{const i=e.root.querySelector('[data-serie-id="'.concat(t,'"]'));e.setVisible(t,n,!1),null===i||void 0===i||i.classList[n?"remove":"add"]("yagr-legend__item_hidden")},s=e=>{this.state.startSerieRange=e;const i=n.series.filter((t=>t.id!==e.id)),s=!(0,t.hasOneVisibleLine)(i)&&!1!==e.show;n.series.forEach((t=>{const n=e.id===t.id||s;o(t.id,n)}))},l=e=>{this.state.startSerieRange||(this.state.startSerieRange=n.series[1]);const t=[];n.series.forEach(((n,i)=>{var o;n.id===e.id&&t.push(i),n.id===(null===(o=this.state.startSerieRange)||void 0===o?void 0:o.id)&&t.push(i)})),n.series.forEach(((e,n)=>{const i=n>=t[0]&&n<=t[1];o(e.id,i)}))};return e=>{const t=i.getAttribute("data-serie-id"),r=n.series.find((e=>{let{id:n}=e;return n===t}));r&&(e.preventDefault(),e.ctrlKey||e.metaKey?(e=>{o(e.id,!e.show)})(r):e.shiftKey?l(r):s(r))}}},c=t=>()=>{const n=t.getAttribute("data-serie-id");if(t.classList.contains("yagr-legend__item_hidden")||n===l)return;const i=this.yagr.uplot.series.find((e=>{let{id:t}=e;return t===n}));i&&e.setFocus(i.id,!0)},u=()=>{e.setFocus(null,!0)};i.forEach((e=>{const t=a[this.options.behaviour||"basic"](e),n=c(e);e.addEventListener("click",t),e.addEventListener("mouseenter",n),e.addEventListener("mouseleave",u),e.addEventListener("mousedown",s.preventMouseEvents),o.push((()=>{e.removeEventListener("click",t),e.removeEventListener("mouseenter",n),e.removeEventListener("mouseleave",u),e.removeEventListener("mousedown",s.preventMouseEvents)}))}));const d=()=>o.forEach((e=>e()));return this._onDestroy=d,d}render(){var e,t;let n=!1;const{uplot:i,options:s}=this;if(!i)return;let l=this.yagr.root.querySelector(".yagr-legend");if(l?n=!0:l=(0,o.html)("div",{class:"yagr-legend yagr-legend__".concat(this.options.position," ").concat((null===s||void 0===s?void 0:s.className)||"")}),l){if(n||("top"===s.position?i.root.before(l):null===(e=i.root)||void 0===e||e.after(l)),this.legendEl=l,this.itemsHtml&&!n||this.calc(this.yagr.options),l.innerHTML='<div class="yagr-legend__container" style="height: '.concat(this.state.requiredSpace,'px">').concat(this.itemsHtml,"</div>"),this.items=l.querySelector(".yagr-legend__items"),this.container=l.querySelector(".yagr-legend__container"),this.state.paginated){const e=this.renderPagination();null===(t=this.container)||void 0===t||t.after(e)}else this.items.style.justifyContent="center";this.applyHandlers()}}renderPagination(){const{state:e}=this;let t=this.yagr.root.querySelector(".yagr-legend__pagination");if(t){const e=t.querySelector(".yagr-legend__icon-down"),n=t.querySelector(".yagr-legend__icon-up");e.removeEventListener("click",this.nextPage),n.removeEventListener("click",this.prevPage)}else t=(0,o.html)("div",{class:"yagr-legend__pagination"});const n=0===e.page?"yagr-legend__icon-up_disabled":"",i=e.page===e.pages-1?"yagr-legend__icon-down_disabled":"";t.innerHTML='<span class="yagr-legend__icon-up '.concat(n,'"></span>\n<span class="yagr-legend__pagination-text">').concat(e.page+1,"/").concat(e.pages,'</span>\n<span class="yagr-legend__icon-down ').concat(i,'"></span>');const s=t.querySelector(".yagr-legend__icon-down"),l=t.querySelector(".yagr-legend__icon-up");return i||s.addEventListener("click",this.nextPage),n||l.addEventListener("click",this.prevPage),t}createIconLineElement(e){return(0,o.html)("span",{class:"yagr-legend__icon yagr-legend__icon_".concat(e.type),style:{"background-color":e.color}})}createSerieNameElement(e){const t=(0,o.html)("span");return t.innerText=e.name||"unnamed",t}renderItems(e){const t=r(this.yagr.utils.i18n,e.series),n="extended"!==this.options.behaviour&&(e=>e.length>3&&l||void 0)(e.series),i=n?[n]:[];for(let s=1;s<e.series.length;s++)i.push(e.series[s]);const o=i.map((e=>{let i,o,s=" ";if(e===l)i=t,o=n,s=" yagr-legend__all-series ";else{o=e.id;const t=this.createIconLineElement(e),n=this.createSerieNameElement(e);i="".concat(t.outerHTML).concat(n.outerHTML)}const r="string"===typeof e||!1!==e.show;return'<div class="yagr-legend__item'.concat(s).concat(r?"":"yagr-legend__item_hidden",'" data-serie-id="').concat(o,'">').concat(i,"</div>")})).join("");return'<div class="yagr-legend__items">'.concat(o,"</div>")}calc(e){if(!this.options.show)return;const t=e.height-this.VERTICAL_PADDING,n=this.renderItems(e),{height:i}=this.measureLegend(n),o=this.options.fontSize+2,s=t*this.options.maxLegendSpace,l=Math.floor(s/o),r=l-1,a=Math.min(r*o,s),c=Math.min(l*o,s),u=i>a&&a>0,d=Math.min(u?c:a,i),h=Math.ceil(i/a),f=u?this.VERTICAL_PADDING+18:this.VERTICAL_PADDING;this.state.requiredSpace=d,this.state.totalSpace=d+f,this.state.paginated=u,this.state.page=this.state.page||0,this.state.pages=h,this.state.pageSize=a,this.state.rowsPerPage=l,this.itemsHtml=n}get VERTICAL_PADDING(){return"bottom"===this.options.position?20:48}}},5613:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.drawMarkersIfRequired=t.renderCircle=void 0;const i=n(9084),o=n(36098);t.renderCircle=(e,t,n,o,s,l,r,a)=>{const{ctx:c}=e,u=Math.round(e.valToPos(t,i.DEFAULT_X_SCALE,!0)),d=Math.round(e.valToPos(n,a||i.DEFAULT_Y_SCALE,!0));if(c.beginPath(),c.arc(u,d,2*o,0,2*Math.PI),c.fillStyle=l,s){const e=c.lineWidth,t=c.strokeStyle;c.lineWidth=s,c.strokeStyle=r,c.stroke(),c.lineWidth=e,c.strokeStyle=t}c.fill(),c.closePath()},t.drawMarkersIfRequired=function(e,n,s,l){const{color:r,scale:a,spanGaps:c,count:u,pointsSize:d}=e.series[n];if(c&&u>1)return!1;let h,f=s;for(;f<=l;){const s=e.data[n][f];if(null===s){h=s,f++;continue}const l=f+1,c=e.data[n][l];(0,o.isNil)(h)&&(0,o.isNil)(c)&&(0,t.renderCircle)(e,e.data[0][f],s,null!==d&&void 0!==d?d:i.DEFAULT_POINT_SIZE/2,0,r,r,a||i.DEFAULT_Y_SCALE),h=s,f++}},t.default=function(e,n){var o;const{size:s=i.DEFAULT_POINT_SIZE,strokeWidth:l=2,strokeColor:r="#ffffff",show:a}=n.markers,c=null===(o=n.chart)||void 0===o?void 0:o.series,u=(null===c||void 0===c?void 0:c.pointsSize)||i.DEFAULT_POINT_SIZE;function d(n,o,c,d){const{scale:h,_focus:f,color:p,getFocusedColor:g,type:m}=n.series[o];let _=c;const v="dots"===m?a?s:u:s;for(;_<=d;){const s=n.data[o][_];null!==s&&(0,t.renderCircle)(n,n.data[0][_],s,v,l,(f||null===f?p:g(e,o))||p,r,h||i.DEFAULT_Y_SCALE),_++}}const h=(e,t)=>{0!==e&&null!==e&&("dots"===t.type||n.markers.show)&&(t.points=t.points||{},t.points.show=d)};return{opts:(e,t)=>{(n.markers.show||t.series.some((e=>"dots"===e.type)))&&t.series.forEach(((e,t)=>h(t,e)))},hooks:{addSeries:(e,t)=>{const n=e.series[t];h(t,n)},setSeries:(e,t,n)=>{h(t,n)}}}}},20315:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});const i=n(9084),o=n(61579),s=n(36098),l=0,r={[o.DrawOrderKey.Series]:0,[o.DrawOrderKey.Axes]:1,plotLines:2};function a(e,t){return e.some((e=>(0,s.deepIsEqual)(e,t)))}const c={"012":"draw",102:"draw",201:"drawClear",210:"drawClear",120:"drawAxes","021":"drawSeries"};t.default=function(e){let t=[];return function(n){var o;const s=null===(o=n.config.chart.appearance)||void 0===o?void 0:o.drawOrder,u=(s?s.map((e=>r[e])):[0,1,2]).join(""),d=c[u]||"drawClear";function h(o){const{ctx:s}=o,{height:r,top:a,width:c,left:u}=o.bbox,d=o.data[0];for(const h of t){if(!h.scale)continue;if(e.render){e.render(o,h);continue}s.save(),s.fillStyle=n.utils.colors.parse(h.color);const{scale:t,value:f}=h;if(Array.isArray(f)){const[e,n]=f.map((e=>{if(Math.abs(e)!==1/0){if(t===i.DEFAULT_X_SCALE){if(e<d[0])return d[0];if(e>d[d.length-1])return d[d.length-1]}else{const n=o.scales[t];if(void 0!==n.min&&e<n.min)return n.min;if(void 0!==n.max&&e>n.max)return n.max}return e}const n=e>0?t===i.DEFAULT_X_SCALE?o.width:0:t===i.DEFAULT_X_SCALE?0:o.height;return o.posToVal(n,t)})),l=o.valToPos(e,t,!0),p=o.valToPos(n,t,!0),g=h.accent;t===i.DEFAULT_X_SCALE?(s.fillRect(l,a,p-l,r),g&&(s.fillStyle=g.color,s.fillRect(l,a-g.space,p-l,g.space))):(s.fillRect(u,l,c,p-l),g&&(s.fillStyle=g.color,s.fillRect(c+u,l,g.space,p-l)))}else{const e=o.valToPos(f,t,!0),n=h;if(s.beginPath(),t===i.DEFAULT_X_SCALE){const n=o.data[0][o.data[0].length-1];if(e-o.valToPos(n,t,!0)>l)continue;s.moveTo(e,a),s.lineTo(e,r+a)}else s.moveTo(u,e),s.lineTo(c+u,e);s.lineWidth=n.width||i.DEFAULT_CANVAS_PIXEL_RATIO,s.strokeStyle=n.color||"#000",n.dash&&s.setLineDash(n.dash),s.closePath(),s.stroke()}s.restore()}}const f={get:()=>t,clear:e=>{t=e?t.filter((t=>t.scale!==e)):[]},remove:e=>{t=t.filter((t=>!a(e,t)))},add:(e,n)=>{for(const i of e)t.push(n?{scale:n,...i}:i)},update:(e,n)=>{if(!e||0===e.length)return void f.clear(n);const i=e.filter((e=>!a(t,e))),o=t.filter((t=>!a(e,t)));i.length&&f.add(i,n),o.length&&f.remove(o)},uplot:{opts:()=>{const e=n.config;t=[],Object.entries(e.axes).forEach((e=>{let[n,i]=e;i.plotLines&&i.plotLines.forEach((e=>{t.push({...e,scale:n})}))}))},hooks:{[d]:"drawSeries"===d?(e,t)=>{t===e.series.length-1&&h(e)}:h}}};return f}}},43287:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});const i=n(36098),o={size:["height","width"],clientSize:["clientHeight","clientWidth"],offsetSize:["offsetHeight","offsetWidth"],maxSize:["maxHeight","maxWidth"],before:["top","left"],marginBefore:["marginTop","marginLeft"],after:["bottom","right"],marginAfter:["marginBottom","marginRight"],scrollOffset:["pageYOffset","pageXOffset"],offset:["offsetY","offsetY"],offsetOpt:["yOffset","xOffset"]};function s(e){return{top:e.top,bottom:e.bottom,left:e.left,right:e.right}}t.default=function(e,t){let n,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"bottom",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};n=t instanceof Element||t instanceof Range?s(e.getBoundingClientRect()):t;const a=Object.assign({top:n.bottom||0,bottom:n.top||0,left:n.right||0,right:n.left||0},n),c={top:0,left:0,bottom:window.innerHeight,right:window.innerWidth};r.bound&&((r.bound instanceof Element||r.bound instanceof Range)&&(r.bound=s(r.bound.getBoundingClientRect())),Object.assign(c,r.bound));const u=getComputedStyle(e),{primary:d,secondary:h}=Object.entries(o).reduce(((e,t)=>{let[n,i]=t;return{primary:{...e.primary,[n]:i["top"===l||"bottom"===l?0:1]},secondary:{...e.secondary,[n]:i["top"===l||"bottom"===l?1:0]}}}),{primary:{},secondary:{}});e.style.position="absolute",e.style.maxWidth="",e.style.maxHeight="";const f=r[d.offsetOpt]||0,p=parseInt(u[h.marginBefore],10),g=p+parseInt(u[h.marginAfter],10),m=c[h.after]-c[h.before]-g,_=parseInt(u[h.maxSize],10);(!_||m<_)&&(e.style[h.maxSize]=(0,i.px)(m));const v=parseInt(u[d.marginBefore],10)+parseInt(u[d.marginAfter],10),y=a[d.before]-c[d.before]-v,b=c[d.after]-a[d.after]-v-f;(l===d.before&&e[d.offsetSize]>y||l===d.after&&e[d.offsetSize]>b)&&(l=y>b?d.before:d.after);const w=l===d.before?y:b,E=parseInt(u[d.maxSize],10);(!E||w<E)&&(e.style[d.maxSize]=(0,i.px)(w));const S=window[d.scrollOffset],x=t=>Math.max(c[d.before],Math.min(t,c[d.after]-e[d.offsetSize]-v));l===d.before?(e.style[d.before]=S+x(a[d.before]-e[d.offsetSize]-v)-f+"px",e.style[d.after]="auto"):(e.style[d.before]=(0,i.px)(S+x(a[d.after])+f),e.style[d.after]="auto");const A=window[h.scrollOffset];var T;return e.style[h.before]=(0,i.px)(A+(T=a[h.before]-p,Math.max(c[h.before],Math.min(T,c[h.after]-e[h.offsetSize]-g)))),e.style[h.after]="auto",e.dataset.side=l,{side:l,anchorRect:a,boundRect:c}}},2258:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.renderTooltip=void 0;const i=n(13135);t.renderTooltip=function(e){if(0===e.scales.length)return e.yagr.utils.i18n("nodata");const[t,n]=e.options.title?"string"===typeof e.options.title?[e.options.title,!1]:["",!0]:["",!1],o=e.scales.map((t=>{const o=(0,i.getOptionValue)(e.options.title,t.scale),s=e.scales.length>1?e.options.scales?"".concat((0,i.getOptionValue)(e.options.scales,t.scale)||""):"".concat(e.yagr.utils.i18n("scale"),": ").concat(t.scale):"";return'\n<div class="__section" data-scale='.concat(t.scale,">\n ").concat(n&&o?'<div class="_section_title">'.concat(o,"</div>"):"","\n ").concat(s?'<div class="__section_scale">'.concat(s,"</div>"):"",'\n <div class="__section_body">').concat(function(e,t,n){const o=e.slice(0,(0,i.getOptionValue)(t.maxLines,n));return o.map(((n,o)=>{let{value:s,name:l="unnamed",color:r,active:a,transformed:c,seriesIdx:u}=n;const d='\n<span class="yagr-tooltip__val">'.concat(s,"</span>\n ").concat("number"===typeof c?'<span class="yagr-tooltip__tf">'.concat(c.toFixed(2),"</span>"):"","\n");return'\n<div class="yagr-tooltip__item '.concat(a?"_active":"",'" data-series="').concat(u,'">\n ').concat(t.showIndicies?'<span class="yagr-tooltip__idx">'.concat(e.length-o,"</span>"):"",'\n <span class="yagr-tooltip__mark" style="background-color: ').concat(r,'"></span>').concat((0,i.escapeHTML)(l),"  ").concat(d,"\n</div>")})).join("")+(e.length>o.length?'<div class="yagr-tooltip__item _more">+'.concat(e.length-o.length,"</div>"):"")}(t.rows,e.options,t.scale),"</div>\n ").concat((0,i.getOptionValue)(e.options.sum,t.scale)?'\n <div class="__section_sum">\n '.concat(e.yagr.utils.i18n("sum"),": ").concat(t.sum,"\n </div>\n "):"","\n</div>")}));return"".concat(t?'<div class="__title">'.concat(t,"</div>"):"").concat(o.join(""))}},36558:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=i(n(43287)),s=n(9084),l=n(36098),r=n(2258),a=n(13135),c=(e,t,n,i,o)=>{var s,r,a;const c=Array.isArray(n.$c)?n.$c:t;let u=c[i];if(o&&u===o.value){const e=null!==(s=o.snapToValues)&&void 0!==s?s:"closest";u=c[(0,l.findDataIdx)(c,n,i,e,o.value)]}else if(null===u){const t=null!==(r=e.snapToValues)&&void 0!==r?r:"closest",o=null!==(a=n.snapToValues)&&void 0!==a?a:t;u=c[(0,l.findDataIdx)(c,n,i,o,null)]}return u},u={maxLines:s.TOOLTIP_DEFAULT_MAX_LINES,highlight:!0,sum:!1,render:r.renderTooltip,pinable:!0,strategy:"pin",sort:void 0,showIndicies:!1,hideNoData:!1,className:"yagr-tooltip_default",xOffset:s.TOOLTIP_X_OFFSET,yOffset:s.TOOLTIP_Y_OFFSET,virtual:!1,showEmpty:!1,onUpdate:"reset"};class d{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var n,i;this.handlers={init:[],mount:[],show:[],pin:[],unpin:[],hide:[],render:[],destroy:[],reset:[]},this.placement=o.default,this.renderTooltipCloses=()=>{},this.skipNextMouseUp=!1,this.emit=(e,t)=>{this.handlers[e].forEach((n=>{n(this.tOverlay,{state:this.state,actions:{pin:this.pin,show:this.show,hide:this.hide,dispose:this.dispose,reset:this.reset},data:t,yagr:this.yagr,event:e})}))},this.reset=()=>{var e;"none"!==this.opts.onUpdate?(this.state.visible&&this.hide(),this.state.pinned&&this.pin(!1),this.emit("reset")):null===(e=this.yagr.plugins.cursor)||void 0===e||e.pin(!1)},this.show=()=>{const e=!this.state.visible;this.state.visible=!0,this.tOverlay.style.display="block",e&&this.emit("show")},this.hide=()=>{const e=this.state.visible;this.state.visible=!1,this.tOverlay.style.display="none",this.emit("hide"),e&&this.emit("show")},this.pin=(e,t)=>{var n;this.state.pinned=e;const i=this.state.range||[];if(null===(n=this.yagr.plugins.cursor)||void 0===n||n.pin(e&&(null===i[1]||i.length<2)),this.opts.virtual)return this.emit(e?"pin":"unpin");t&&this.placement(this.tOverlay,{left:t.x+this.bLeft,top:this.bTop+t.y-(this.opts.yOffset||0)},"right",{bound:this.bound,xOffset:this.opts.xOffset,yOffset:this.opts.yOffset});const o=this.tOverlay.querySelector("._tooltip-list");e?(this.state.visible||this.show(),this.tOverlay.classList.add("yagr-tooltip_pinned"),o&&(null===o||void 0===o?void 0:o.clientHeight)&&(o.style.height=(0,l.px)(o.clientHeight)),this.opts.render===r.renderTooltip&&(document.addEventListener("mousemove",this.checkFocus),document.addEventListener("mousedown",this.detectClickOutside))):(this.tOverlay.classList.remove("yagr-tooltip_pinned"),this.opts.render===r.renderTooltip&&(document.removeEventListener("mousemove",this.checkFocus),document.removeEventListener("mousedown",this.detectClickOutside))),this.emit(e?"pin":"unpin")},this.checkFocus=e=>{const t=e.target;let n;t&&this.tOverlay.contains(t)&&t.classList.contains("yagr-tooltip__item")&&(n=t.dataset.series);const i=n?this.yagr.uplot.series[Number(n)]:null;n&&i?(this.state.focusedSeries=n,this.yagr.setFocus(i.id,!0)):this.state.focusedSeries&&(this.state.focusedSeries=null,this.yagr.setFocus(null,!0))},this.render=e=>{const t=this.yagr.uplot;let{left:n,top:i}=e;const{idx:o}=e,{opts:r,state:d}=this;if(r.show&&"function"===typeof r.show&&!1===r.show(this.yagr))return void this.hide();(n<0||i<0)&&!d.pinned&&this.isNotInDrag&&this.hide(),i=(0,l.inBetween)(i,0,t.bbox.top+t.bbox.height),n=(0,l.inBetween)(n,0,t.bbox.left+t.bbox.width);const{data:h}=t;if(null===h||(0,l.isNil)(o)||void 0===i)return;const f=h[0][o],p={},g={},m={};let _=t.series.length-1;for(;_>=1;){const e=t.series[_];if(!e.show){_-=1;continue}const n=e.scale||s.DEFAULT_Y_SCALE;m[n]=m[n]||[],m[n].push(_),_-=1}Object.entries(m).forEach((e=>{let[s,u]=e;var d;g[s]=g[s]||{rows:[]};const h=g[s],f=Number(t.posToVal(i,s).toFixed(2)),m=(0,a.getOptionValue)(r.value,s);for(const n of u){const e=t.data[n],i=t.series[n];let l=c(this.yagr.config.cursor,e,i,o,this.interpolation),u=l;"string"===typeof l&&(u=l,l=null),(0,a.getOptionValue)(r.sum,s)&&(p[s]=p[s]||0,p[s]+=l||0);const f=e[o],g=i.$c&&i.$c[o]===this.stripValue?l:f;if(null===l&&r.hideNoData||!1===i.showInTooltip)continue;const _=null!==(d=i.precision)&&void 0!==d?d:(0,a.getOptionValue)(r.precision,s),v=i.formatter?i.formatter(u,i):m(u,_),y={id:i.id,name:i.name,dataValue:i.$c[o],originalValue:l,value:v,y:g,displayY:f,color:i.color,seriesIdx:n,rowIdx:h.rows.length?h.rows[h.rows.length-1].rowIdx+1:0};i.normalizedData&&(y.transformed=i.normalizedData[o]),i._transformed&&(y.transformed=e[o]),r.omitBy&&r.omitBy(y)||h.rows.push(y)}if((0,a.getOptionValue)(r.highlight,s)&&h.rows.length){const e=(0,a.getOptionValue)(r.tracking,s);let c=0;"area"===e?c=(0,l.findInRange)(h,f,(0,a.getOptionValue)(r.stickToRanges,s)):"sticky"===e?c=(0,l.findSticky)(h,f):"function"===typeof e&&(c=e(h,f,{x:t.posToVal(n,"x"),y:t.posToVal(i,s),idx:o,scale:s,series:this.yagr.series,serieIndicies:u,interpolation:this.interpolation})),null!==c&&(h.rows[c].active=!0)}const _=(0,a.getOptionValue)(r.sort,s);_&&h.rows.sort(_)}));if(!Object.values(g).some((e=>{let{rows:t}=e;return t.length>0}))&&!r.showEmpty)return void this.hide();this.onMouseEnter();const v=this.over.getBoundingClientRect();this.bLeft=v.left,this.bTop=v.top,this.bWidth=v.width;const y={left:n+this.bLeft,top:this.bTop+i-(r.yOffset||0)};this.renderTooltipCloses=()=>{const e={scales:Object.entries(g).map((e=>{let[t,n]=e;return{scale:t,rows:n.rows,sum:p[t]}})),options:r,x:f},t=Object.values(g).some((e=>{let{rows:t}=e;return t.filter((e=>{let{id:t}=e;var n;return null===(n=this.yagr.getSeriesById(t))||void 0===n?void 0:n.show})).length>0}));t||r.showEmpty?(r.virtual||(this.tOverlay.innerHTML=r.render({...e,state:d,yagr:this.yagr,defaultRender:u.render}),this.placement(this.tOverlay,y,"right",{bound:this.bound,xOffset:r.xOffset,yOffset:r.yOffset})),this.emit("render",{...e,anchor:y})):this.hide()},d.pinned||this.renderTooltipCloses()},this.initWithUplot=e=>{this.over=e.root.querySelector(".u-over"),this.over.addEventListener("mousedown",this.onMouseDown),this.over.addEventListener("mousemove",this.onMouseMove),this.over.addEventListener("mouseenter",this.onMouseEnter),this.over.addEventListener("mouseleave",this.onMouseLeave),document.addEventListener("mouseup",this.onMouseUp)},this.setSize=()=>{const e=this.over.getBoundingClientRect();this.bLeft=e.left,this.bTop=e.top},this.dispose=()=>{this.over.removeEventListener("mousedown",this.onMouseDown),this.over.removeEventListener("mousemove",this.onMouseMove),this.over.removeEventListener("mouseenter",this.onMouseEnter),this.over.removeEventListener("mouseleave",this.onMouseLeave),document.removeEventListener("mouseup",this.onMouseUp),document.removeEventListener("mousemove",this.checkFocus),document.removeEventListener("mousedown",this.detectClickOutside),this.tOverlay.remove(),this.state.mounted=!1,this.emit("destroy")},this.updateOptions=e=>{Object.assign(this.opts,e),this.tOverlay.className="yagr-tooltip ".concat(this.opts.className||"")},this.on=(e,t)=>{this.handlers[e].push(t)},this.off=(e,t)=>{this.handlers[e]=this.handlers[e].filter((e=>e!==t))},this.detectClickOutside=e=>{const t=e.target;if(t instanceof Element){const e=t&&this.tOverlay.contains(t),n=t&&this.over.contains(t);e||n||(this.pin(!1),this.hide())}},this.onMouseDown=e=>{this.state.range=[this.getCursorPosition(),null],this.state.pinned&&(this.pin(!1),this.hide(),this.render({left:e.clientX-this.bLeft,top:e.clientY-this.bTop,idx:this.yagr.uplot.posToIdx(e.clientX-this.bLeft)}),this.skipNextMouseUp=!0)},this.onMouseMove=()=>{var e;(null===(e=this.state.range)||void 0===e?void 0:e.length)&&(this.state.range[1]=this.getCursorPosition())},this.setCursorLeaved=e=>{const t=this.over.getBoundingClientRect(),n=e.clientX,i=this.state.range,o=i[0],s=n-t.left>o.clientX,l=this.yagr.config.timeline;let r;s?(i[1]={clientX:this.bWidth,value:this.yagr.uplot.posToVal(this.bWidth,"x"),idx:l.length-1},r=i[1]):(i[1]=i[0],i[0]={clientX:0,value:this.yagr.uplot.posToVal(0,"x"),idx:0},r=i[0]),this.yagr.uplot.setCursor({left:r.clientX,top:e.clientY-t.top})},this.onMouseUp=e=>{if(null===this.state.range)return;const[t]=this.state.range||[];let n;if(n=e.target===this.over?this.getCursorPosition():this.state.range[1],"none"===this.opts.strategy)return;const i=t&&t.clientX===(null===n||void 0===n?void 0:n.clientX),o=t&&t.clientX!==(null===n||void 0===n?void 0:n.clientX),s=this.opts.strategy;(i&&!this.skipNextMouseUp&&"drag"!==s||o&&("all"===s||"drag"===s))&&(this.pin(!this.state.pinned),this.show(),this.renderTooltipCloses()),this.state.range=null,this.skipNextMouseUp=!1},this.onMouseEnter=()=>{this.show()},this.onMouseLeave=e=>{var t;const n=this.state.pinned;(null===(t=this.state.range)||void 0===t?void 0:t[0])&&this.setCursorLeaved(e),!n&&this.isNotInDrag&&this.hide()},this.defaultTooltipValueFormatter=(e,t)=>{const n=this.yagr.config.processing||{};return"string"===typeof e?n.nullValues&&n.nullValues.hasOwnProperty(e)?n.nullValues[e]:"-":"number"===typeof e?e.toFixed("number"===typeof t?t:"number"===typeof this.opts.precision?this.opts.precision:2):"-"},this.getCursorPosition=()=>{const e=this.yagr.uplot.cursor.left;return void 0===e?null:{clientX:e,value:this.yagr.uplot.posToVal(e,"x"),idx:this.yagr.uplot.posToIdx(e)}},this.yagr=e,this.over=null===(n=null===e||void 0===e?void 0:e.uplot)||void 0===n?void 0:n.over,this.opts={...u,strategy:t.pinable?"pin":u.strategy,tracking:"area"===(null===(i=e.config.chart.series)||void 0===i?void 0:i.type)?"area":"sticky",value:this.defaultTooltipValueFormatter,...t},this.bound=this.opts.boundClassName&&document.querySelector(this.opts.boundClassName)||document.body,this.renderNode=this.opts.renderClassName&&document.querySelector(this.opts.renderClassName)||document.body,this.tOverlay=document.createElement("div"),this.tOverlay.id="".concat(e.id,"_tooltip"),this.tOverlay.className="yagr-tooltip ".concat(this.opts.className||""),this.tOverlay.style.display="none",this.state={mounted:!1,pinned:!1,visible:!1,range:null,focusedSeries:null},this.bLeft=0,this.bTop=0,this.bWidth=0,this.opts.virtual?this.placement=()=>{}:(this.renderNode.appendChild(this.tOverlay),this.state.mounted=!0,this.emit("mount"))}get interpolation(){var e;return null===(e=this.yagr.config.processing)||void 0===e?void 0:e.interpolation}get stripValue(){return this.interpolation?this.interpolation.value:void 0}get isNotInDrag(){var e;return"none"===this.opts.strategy||"pin"===this.opts.strategy||!(null===(e=this.state.range)||void 0===e?void 0:e[1])}}t.default=function(e){const t=new d(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),n=()=>({hooks:{init:e=>{t.initWithUplot(e)},setSize:()=>{t.setSize()},setCursor:e=>{t.render(e.cursor)}}}),i=n();return{state:t.state,pin:t.pin,show:t.show,hide:t.hide,uplot:i,display:t.render,updateOptions:t.updateOptions,on:t.on,off:t.off,tooltip:t,dispose:t.dispose,reInit:function(e){const i=n();t.reset(),e.hooks.init.push(i.hooks.init),e.hooks.setSize.push(i.hooks.setSize),e.hooks.setCursor.push(i.hooks.setCursor)},reset:t.reset}}},78612:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},13135:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.escapeHTML=t.getOptionValue=void 0,t.getOptionValue=function(e,t){return"object"===typeof e?e[t]:e},t.escapeHTML=function(e){const t=document.createElement("span");return t.innerText=e,t.innerHTML}},33481:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},6883:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,o)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return o(t,e),t},l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.configureAxes=t.updateAxis=t.getRedrawOptionsForAxesUpdate=t.getTimeFormatter=t.getDefaultNumberFormatter=t.getAxisPositioning=void 0;const r=l(n(95588)),a=s(n(9084)),c=n(36098),u=n(61579),d={right:u.Axis.Side.Right,top:u.Axis.Side.Top,bottom:u.Axis.Side.Bottom,left:u.Axis.Side.Left},h={left:u.Axis.Align.Right,right:u.Axis.Align.Left,top:void 0,bottom:void 0};t.getAxisPositioning=(e,t)=>({side:e?d[e]:u.Axis.Side.Left,align:t||(e?h[e]:void 0)});t.getDefaultNumberFormatter=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return n=>{if((0,c.isNil)(n))return t;if(0===n)return"0";const i=Math.abs(n),o="auto"===e?2:e,[s,l]=(0,c.getUnitSuffix)(i),r=n/s;return("auto"===e?String(r).replace(/\.(\d{5,})/,(e=>e.slice(0,6))):(0,c.toFixed)(r,o))+l}};const f=e=>{const n=e.precision,i=(0,t.getDefaultNumberFormatter)("number"===typeof n?n:n||"auto","");return function(e,t){return t.map(i)}},p=r.default.fmtDate("{DD}.{MM}.{YYYY}"),g=r.default.fmtDate("{HH}:{mm}:{ss}"),m=r.default.fmtDate("{mm}:{ss}"),_=r.default.fmtDate("{mm}:{ss}.{fff}"),v=r.default.fmtDate("{YYYY}");function y(e,t){let n=p;const i=Math.ceil(e/t);return i<=a.SECOND?n=_:i<=a.MINUTE?n=m:i<=a.DAY?n=g:i>=a.YEAR&&(n=v),e=>n(new Date(e))}function b(e,n){var i,o;const s=n.utils.theme,l=n.config,r={splits:e.splitsCount?(u=e.splitsCount,(e,t,n,i)=>{if(u<=2)return[n,i];const o=Math.abs(i-n)/(u-1);let s=o;const l=[];for(;n+s<i;)l.push(n+s),s+=o;return[n,...l,i]}):e.splits,show:"undefined"===typeof e.show||e.show,label:e.label||void 0,labelSize:e.labelSize||a.Y_AXIS_LABEL_SIZE,labelFont:e.labelFont||a.AXIS_LABEL_FONT,font:e.font||a.AXIS_VALUES_FONT,stroke:e.stroke||(()=>s.AXIS_STROKE),ticks:e.ticks?{...s.Y_AXIS_TICKS,...e.ticks}:s.Y_AXIS_TICKS,grid:l.grid||e.grid||s.GRID};var u;return e.scale===a.DEFAULT_X_SCALE?Object.assign(r,{getFormatter:y,gap:null!==(i=e.gap)&&void 0!==i?i:a.X_AXIS_TICK_GAP,size:(0,c.asFn)(e.size)||(()=>a.X_AXIS_SIZE),values:e.values||(0,t.getTimeFormatter)(l),ticks:e.ticks?{...s.X_AXIS_TICKS,...e.ticks}:s.X_AXIS_TICKS,scale:a.DEFAULT_X_SCALE,space:e.space||(()=>a.X_AXIS_SPACE),incrs:e.incrs||(()=>a.X_AXIS_INCRS.map((e=>e*(l.chart.timeMultiplier||a.TIME_MULTIPLIER)))),side:2,stroke:e.stroke||(()=>s.AXIS_STROKE)}):(Object.assign(r,{gap:null!==(o=e.gap)&&void 0!==o?o:a.Y_AXIS_TICK_GAP,size:(0,c.asFn)(e.size)||a.Y_AXIS_SIZE,values:e.values||f(e),scale:e.scale||a.DEFAULT_Y_SCALE,getFormatter:()=>(0,t.getDefaultNumberFormatter)("number"===typeof e.precision?e.precision:e.precision||"auto",""),...(0,t.getAxisPositioning)(e.side||"left",e.align)}),e.space&&(r.space=e.space),r)}function w(e){let t,n;return[e=e.replace(/(\d+)px/,((e,i)=>(0,c.px)(t=Math.round((n=Number(i))*window.devicePixelRatio)))),t,n]}t.getTimeFormatter=e=>{const t=e.chart.timeMultiplier||a.TIME_MULTIPLIER;return(e,n)=>{const i=y((n[n.length-1]-n[0])/t,n.length);return n.map((e=>i(e/t)))}},t.getRedrawOptionsForAxesUpdate=function(e){const t=[!1,!0];return Object.values(e).forEach((e=>{["align","side","size","label","labelFont","labelGap","labelSize"].some((t=>void 0!==e[t]))&&(t[1]=!0)})),t},t.updateAxis=function(e,t,n){var i,o,s;const l=b({...n,font:t.font},e);l.ticks={...t.ticks,...l.ticks},l.grid={...t.grid,...l.grid},l.border={...t.border,...l.border},l.splits=l.splits||t.splits,n.font&&n.font!==(null===(i=t.font)||void 0===i?void 0:i[0])&&(l.font=w(n.font)),n.labelFont&&n.labelFont!==(null===(o=t.labelFont)||void 0===o?void 0:o[0])&&(l.labelFont=w(n.labelFont)),Object.assign(t,l),null===(s=e.plugins.plotLines)||void 0===s||s.update(n.plotLines,n.scale)},t.configureAxes=function(e,t){const n=[];Object.entries(t.axes).forEach((t=>{let[i,o]=t;n.push(b({...o,scale:i},e))}));const i=a.DEFAULT_X_SCALE,o=a.DEFAULT_Y_SCALE;return t.axes[i]||n.push(b({scale:i},e)),n.find((e=>{let{scale:t}=e;return t!==i}))||n.push(b({scale:o},e)),n}},77423:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,o)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return o(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.getPaddingByAxes=void 0;const l=s(n(9084));t.getPaddingByAxes=function(e){let t=!1,n=!1;return e.axes?e.axes.forEach((e=>{e.scale!==l.DEFAULT_X_SCALE&&(void 0!==e.side&&3!==e.side||(t=!0),1===e.side&&(n=!0))})):t=!0,t&&!n?l.PADDING_LEFT:n&&!t?l.PADDING_RIGHT:l.PADDING_BOTH}},50934:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSerieFocusColors=t.getFocusedColor=void 0;const n=[0,0,0,.6];class i{static parseRgba(e){const t=e.match(/rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,?\s*(\d+\.?\d*)?\s*\)/);return t?[t[1],t[2],t[3],t[4]||1].map(Number):null}parse(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"000";const t=e.startsWith("var(--");let n,i=e,o=!0;const s=this.context,l=s.style.color;return t||e.startsWith("--")?(o=!1,n=t?e.slice(4,-1):e):e.startsWith("#")||e.startsWith("rgb")||(s.style.color=e,n="color",o=!1),i=o?i:getComputedStyle(s).getPropertyValue(n),s.style.color=l,i}setContext(e){this.context=e}rgba(e){return"rgba(".concat(e[0],", ").concat(e[1],", ").concat(e[2],", ").concat(e[3],")")}toRgba(e,t){return i.parseRgba(this.parse(e))||t}shade(e,t){let[n,i,o,s]=e;const l=t<0,r=l?0:255*t,a=l?1+t:1-t;return"rgba("+Math.round(n*a+r)+","+Math.round(i*a+r)+","+Math.round(o*a+r)+","+s+")"}}t.default=i;t.getFocusedColor=(e,t)=>{const o=e.utils.theme.SHIFT,s=e.uplot.series[t],l=i.parseRgba(s.color)||n;return e.utils.colors.shade(l,o)};t.getSerieFocusColors=(e,t)=>(n,i)=>{const o=n.series[i];return!1===o._focus?o.getFocusedColor(e,i):o[t]}},36098:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.inBetween=t.isNil=t.asPlain=t.asFn=t.deepIsEqual=t.get=t.html=t.px=t.debounce=t.exec=t.preprocess=t.genId=t.findDataIdx=t.toFixed=t.getUnitSuffix=t.findSticky=t.getSumByIdx=t.findInRange=void 0;t.findInRange=function(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const i=t>=0;let o=-1/0,s=null,l=1/0,r=null;const a=[];let c=null;for(let u=e.rows.length-1;u>=0;u--){const n=e.rows[u],{displayY:d,rowIdx:h}=n;let f;null!==d&&(d>o&&(o=d,s=n.rowIdx),d<l&&(l=d,r=n.rowIdx)),f=null===d||(i?d<0:d>=0)?null:i?t>d?null:d-t:t<d?null:Math.abs(d-t);const p=null===c?1/0:a[c],g=null===f?p:Math.min(p,f);(null!==f&&p===f||g!==p)&&(c=h)}return null===c&&n?t>=o?s:t<=l?r:null:c};t.getSumByIdx=(e,t,n)=>{let i=0,o=0;for(;o<e.length;){const s=e[e.length-o-1],l=s.$c;if(o+=1,s.scale!==n||!1===s.show)continue;const r=l[t];i+="number"===typeof r?r:0}return i};t.findSticky=(e,t)=>{let n,i,o=0;for(;!i&&o<e.rows.length;){const s=e.rows[o].displayY;null!==s&&(n=o,i=Math.abs(s-(t||0))),o+=1}if(!i||void 0===n)return null;for(o=n+1;o<e.rows.length;o++){const s=e.rows[o].displayY;if(null===s)continue;const l=Math.abs(s-t);i>l&&(i=l,n=o)}return n};t.getUnitSuffix=e=>e>=1e18?[1e18,"E"]:e>=1e15?[1e15,"P"]:e>=1e12?[1e12,"T"]:e>=1e9?[1e9,"G"]:e>=1e6?[1e6,"M"]:e>=1e3?[1e3,"K"]:[1,""],t.toFixed=function(e,t){if(0===t)return parseInt(e);if(Number.isInteger(e))return e+"."+"0".repeat(t);const[n,i]=e.toString().split(".");return i.length>=t?"".concat(n,".").concat(i.slice(0,t)):"".concat(n,".").concat(i).concat("0".repeat(t-i.length))},t.findDataIdx=function(e,t,n){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"closest",o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;var s;let l=n,r=n;const a=null!==(s=t.snapToValues)&&void 0!==s?s:i;if(!1===a)return n;if("left"===a||"closest"===a)for(let c=n-1;c>=0;c--)if(e[c]!==o){l=c;break}if("right"===a||"closest"===a)for(let c=n+1;c<e.length;c++)if(e[c]!==o){r=c;break}return"left"===a?l:"right"===a?r:r-n>n-l?l:r};const n=function(e,t,n,i,o,s,l){let r=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"linear",a=null;const c=e[s];switch(r){case"linear":if(null===t||null===n)return null;a=t+(c-i)*(n-t)/(o-i),(isNaN(a)||Math.abs(a)===1/0)&&(a=null);break;case"previous":a=t;break;case"next":a=n;break;case"left":a=l[l.length-1]===e.length-1||null===n?null:t;break;case"right":a=0===l[0]?null:n;break;case"closest":a=Math.abs(i-e[s])<Math.abs(o-e[s])?t:n;break;default:a=r}return a};t.genId=()=>Math.random().toString(36).substr(2,9).replace(/^\d+/,"");t.preprocess=(e,t,i)=>{const o=[],s=i.nullValues||{},l=i.interpolation;for(let r=0;r<e.length;r++){const i=e[r],a=[];let c,u,d=[],h=null,f=null;for(let e=0;e<i.length;e++){let o=i[e];if(l&&o===l.value)d.push(e);else{if(s[o]&&(o=null),d.length){f=o,u=t[e];for(const e of d)a[e]=n(t,h,f,c||t[0],u||t[t.length-1],e,d,l&&l.type);d=[]}h=o,c=t[e],a.push(o)}}if(f=null,d.length)for(const e of d)a.push(n(t,h,f,c||t[0],u||t[t.length-1],e,d,l&&l.type));o.push(a)}return o};t.exec=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return"function"===typeof e?e(...n):e},t.debounce=function(e){let t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;return function(){for(var i=arguments.length,o=new Array(i),s=0;s<i;s++)o[s]=arguments[s];clearTimeout(t),t=setTimeout((()=>e(...o)),n)}};t.px=e=>e+"px";function i(e){return null===e||void 0===e}t.html=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const i=document.createElement(e);return Object.keys(t).forEach((e=>{const n=t[e];i.setAttribute(e,"object"===typeof n?Object.entries(n).map((e=>{let[t,n]=e;return"".concat(t,":").concat(n)})).join(";"):n)})),n&&("string"===typeof n?i.innerHTML=n:i.appendChild(n)),i},t.get=function(e,t){return t.split(".").reduce(((e,t)=>{var n,i;return null!==(i=null===(n=Object.getOwnPropertyDescriptor(e,t))||void 0===n?void 0:n.value)&&void 0!==i?i:{}}),e)},t.deepIsEqual=function e(t,n){if(typeof t!==typeof n)return!1;if("function"!==typeof t&&"function"!==typeof n||(t=t.toString(),n=n.toString()),"object"!==typeof t||i(t)||i(n))return t===n;const o=t,s=n,l=Object.keys(o),r=Object.keys(s);if(l.length!==r.length)return!1;for(const i of l){if(!s.hasOwnProperty(i))return!1;if(!e(o[i],s[i]))return!1}return!0},t.asFn=function(e){return"function"===typeof e||"undefined"===typeof e?e:()=>e},t.asPlain=function(e){return"function"===typeof e?e():e},t.isNil=i,t.inBetween=function(e,t,n){return e>=t&&e<=n?e:e<t?t:n}},540:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.preventMouseEvents=void 0;t.preventMouseEvents=e=>e.preventDefault()},28797:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.applyMixins=void 0,t.applyMixins=function(e,t){const n=[];t.forEach((t=>{Object.getOwnPropertyNames(t.prototype).forEach((n=>{Object.defineProperty(e.prototype,n,Object.getOwnPropertyDescriptor(t.prototype,n)||Object.create(null))})),t.prototype.initMixin&&n.push(t.prototype.initMixin)})),e.prototype.initMixins=function(){n.forEach((e=>e.call(this)))}}},67807:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,o)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return o(t,e),t},l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.pathsRenderer=void 0;const r=l(n(95588)),a=s(n(9084));t.pathsRenderer=function(e,t,n,i){const o=e.series[t],{type:s,interpolation:l}=o;let c;switch(s){case"column":c=r.default.paths.bars&&r.default.paths.bars({size:[a.BARS_DRAW_FACTOR,a.BARS_DRAW_MAX],...e.series[t].renderOptions||{}});break;case"dots":c=()=>null;break;default:switch(l){case"smooth":c=r.default.paths.spline&&r.default.paths.spline();break;case"left":c=r.default.paths.stepped&&r.default.paths.stepped({align:1});break;case"right":c=r.default.paths.stepped&&r.default.paths.stepped({align:-1});break;default:c=r.default.paths.linear&&r.default.paths.linear()}}return c?c(e,t,n,i):null}},25009:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.configureScales=t.niceScale=t.offsetScale=t.getScaleRange=void 0;const i=n(9084),o=n(61579);function s(e,t,n){const o=e>=0&&n.stacking,s=t<=0&&n.stacking;return{min:o?0:Math.round(e-Math.abs(e)*(n.offset||i.DEFAULT_Y_AXIS_OFFSET)),max:s?0:Math.round(t+Math.abs(t)*(n.offset||i.DEFAULT_Y_AXIS_OFFSET))}}function l(e,t,n){const o=e>=0&&n.stacking,s=t<=0&&n.stacking?0:"number"===typeof n.max?n.max:t,l=o?0:"number"===typeof n.min?n.min:e;if(l===s)return l>=0?{min:l,max:l+2}:{min:l-1,max:l+1};const a=r(s-l,!1),c=r(a/(i.DEFAULT_MAX_TICKS-1),!0);let u=Math.ceil(s/c)*c;u=isNaN(u)?100:u;let d=(o?Math.min(0,l):Math.floor(l/c)*c)||0;return d===u&&(d-=1,u+=1),{min:d,max:u}}function r(e,t){const n=Math.floor(Math.log10(e)),i=e/10**n;return(t?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*10**n}t.getScaleRange=(e,t)=>{const n=e.range;if("function"===typeof n)return(e,i,o)=>n(e,i,o,t);if(e.normalize)return[0,e.normalizeBase||100];if("auto"===e.range)return;let o;switch(e.range){case void 0:case"nice":o=l;break;case"offset":o=s;break;default:throw new Error("Unknown scale range type ".concat(e.range))}return(n,s,l)=>{let{min:a,max:c}=o(s,l,e,t);const u=e.minRange||i.DEFAULT_SCALE_MIN_RANGE;if(Math.abs(c-a)<u&&(a>=0?c+=u:(c+=u/2,a-=u/2)),a="number"===typeof e.min?e.min:a,c="number"===typeof e.max?e.max:c,"logarithmic"===e.type){const t="number"===typeof e.min;a<=0?a=i.DEFAULT_LOGARITHMIC_MIN_SCALE_VALUE:t||(a=Math.min(a,i.DEFAULT_LOGARITHMIC_MIN_SCALE_VALUE))}return(a>=c||c<=a)&&("number"===typeof e.max?a=c-(r(c-.1*c,!1)||1):c=a+(r(a+.1*a,!1)||1)),[a,c]}},t.offsetScale=s,t.niceScale=l,t.configureScales=function(e,n,s){const l=s.scales?{...s.scales}:{};return Object.keys(s.scales).length||(l.y={}),Object.entries(l).forEach((l=>{let[r,a]=l;n[r]=n[r]||{};const c=n[r];if(r===i.DEFAULT_X_SCALE)return;const u="number"===typeof a.min?a.min:null,d="number"===typeof a.max?a.max:null;if(null!==d&&null!==u){if(d<=u)throw new Error("Invalid scale config. .max should be > .min");c.range=[u,d]}const h="logarithmic"===a.type;if(h)return c.distr=o.Scale.Distr.Logarithmic,void(c.range=(0,t.getScaleRange)(a,s));e.isEmpty?c.range=[null===u?h?1:0:u,null===d?100:d]:c.range=(0,t.getScaleRange)(a,s)})),n.x||(n.x={time:!0}),n}},36374:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,o)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return o(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.overrideSeriesInUpdate=t.configureSeries=void 0;const l=s(n(9084)),r=n(36098),a=n(50934),c=n(5613),u=n(67807);function d(e,t,n,i){if(void 0!==e[n])return e[n];const o=t.config.chart.series;return o&&n in o?o[n]:i}t.configureSeries=function(e,t,n){var i,o;const s=d(t,e,"type","line"),h={...t,type:s,show:null===(i=t.show)||void 0===i||i,name:t.name||"".concat(e.utils.i18n("series")," ").concat(n+1),color:t.color?e.utils.colors.parse(t.color):e.utils.theme.DEFAULT_LINE_COLOR,id:(void 0===t.id?t.name:String(t.id))||(0,r.genId)(),$c:t.data,scale:t.scale||l.DEFAULT_Y_SCALE,count:0,sum:0,avg:0,getFocusedColor:a.getFocusedColor};h.points=h.points||{};const f=(0,a.getSerieFocusColors)(e,"color");return"area"===h.type&&(h.lineColor=e.utils.colors.parse(d(t,e,"lineColor",l.SERIE_AREA_BORDER_COLOR)),h.lineWidth=d(t,e,"lineWidth",l.SERIE_AREA_BORDER_WIDTH),h.fill=f,h.stroke=(0,a.getSerieFocusColors)(e,"lineColor"),h.width=h.lineWidth,h.points.show=c.drawMarkersIfRequired,h.interpolation=d(t,e,"interpolation","linear"),h.spanGaps=d(t,e,"spanGaps",!1)),"line"===h.type&&(h.width=d(t,e,"width",l.SERIE_LINE_WIDTH),h.width=h.width||l.SERIE_LINE_WIDTH,h.stroke=f,h.points.show=c.drawMarkersIfRequired,h.interpolation=d(t,e,"interpolation","linear"),h.spanGaps=d(t,e,"spanGaps",!1)),"column"===h.type&&(h.stroke=f,h.fill=f,h.points.show=!1,h.width=null!==(o=h.width)&&void 0!==o?o:0,h.renderOptions=d(h,e,"renderOptions")),"dots"===h.type&&(h.stroke=()=>h.color,h.fill=f,h.width=2,h.pointsSize=d(h,e,"pointsSize",l.DEFAULT_POINT_SIZE)),h.paths=u.pathsRenderer,h};t.overrideSeriesInUpdate=(e,t)=>{var n,i,o,s,l,r,a,c,u,d,h,f;e.$c=null!==(n=t.$c)&&void 0!==n?n:e.$c,e.show=null!==(i=t.show)&&void 0!==i?i:e.show,e.data=null!==(o=t.data)&&void 0!==o?o:e.data,e.width=null!==(s=t.width)&&void 0!==s?s:e.width,e.pointsSize=null!==(l=t.pointsSize)&&void 0!==l?l:e.pointsSize,e.color=null!==(r=t.color)&&void 0!==r?r:e.color,e.lineColor=null!==(a=t.lineColor)&&void 0!==a?a:e.lineColor,e.lineWidth=null!==(c=t.lineWidth)&&void 0!==c?c:e.lineWidth,e.stroke=null!==(u=t.stroke)&&void 0!==u?u:e.stroke,e.getFocusedColor=null!==(d=t.getFocusedColor)&&void 0!==d?d:e.getFocusedColor,e.formatter=null!==(h=t.formatter)&&void 0!==h?h:e.formatter,e.paths=null!==(f=t.paths)&&void 0!==f?f:e.paths}},61579:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Axis=t.Scale=t.DrawOrderKey=void 0,t.DrawOrderKey={Series:"series",Axes:"axes"},t.Scale={Distr:{Linear:1,Ordinal:2,Logarithmic:3,ArcSinh:4}},t.Axis={Side:{Top:0,Right:1,Bottom:2,Left:3},Align:{Right:0,Left:1}}},70832:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,o)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)},l=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return o(t,e),t},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.defaults=void 0,s(n(33481),t),s(n(78612),t);const a=l(n(9084));t.defaults=a;const c=r(n(19993));"undefined"!==typeof window&&Object.assign(window,{Yagr:c.default}),t.default=c.default},38982:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,o)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return o(t,e),t},l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.useTooltipState=void 0;const r=s(n(68963)),a=l(n(19993));t.default=r.forwardRef((function(e,t){let{id:n,config:i,className:o="",debug:s,onChartLoad:l,onSelect:c,update:u="dynamic"}=e;const d=r.useRef(null),h=r.useRef();r.useImperativeHandle(t,(()=>({yagr:()=>h.current,domElement:()=>d.current})));const f=r.useCallback((()=>{if(d.current){i.hooks=i.hooks||{};const e=i.hooks;if(l){const t=e.load||[];t.push((e=>{let{chart:t,meta:n}=e;l(t,n)})),e.load=t}if(c){const t=e.onSelect||[];t.push((e=>{let{from:t,to:n}=e;return c(t,n)})),e.onSelect=t}h.current=new a.default(d.current,i)}}),[]);r.useEffect((()=>{var e;i&&(null===(e=h.current)||void 0===e||e.setConfig(i,"hard"===u))}),[i]),r.useEffect((()=>(f(),()=>{var e;null===(e=h.current)||void 0===e||e.dispose(),h.current=void 0})),[]);const p=r.useCallback((e=>{if(h.current&&(e.ctrlKey||e.metaKey)&&e.shiftKey){const e=h.current.toDataUrl().replace("image/png","image/octet-stream"),t=document.createElement("a");t.href=e,t.download=((null===s||void 0===s?void 0:s.filename)||h.current.id)+".png",t.click()}}),[n,h]);return r.createElement("div",{id:n,onClick:p,className:"yagr ".concat(o),ref:d})}));t.useTooltipState=(e,t)=>{r.useEffect((()=>{var n;if(!e.current||!t.current)return;const i=t.current,o=e.current.yagr();o&&(null===(n=null===o||void 0===o?void 0:o.plugins)||void 0===n?void 0:n.tooltip)&&(o.plugins.tooltip.on("render",((e,t)=>{i.onChange(t)})),o.plugins.tooltip.on("show",((e,t)=>{i.onChange(t)})),o.plugins.tooltip.on("show",((e,t)=>{i.onChange(t)})))}),[e.current])}},95588:(e,t,n)=>{n.r(t),n.d(t,{default:()=>Ai});const i="uplot",o="u-hz",s="u-vt",l="u-title",r="u-wrap",a="u-under",c="u-over",u="u-axis",d="u-off",h="u-select",f="u-cursor-x",p="u-cursor-y",g="u-cursor-pt",m="u-legend",_="u-live",v="u-inline",y="u-series",b="u-marker",w="u-label",E="u-value",S="width",x="height",A="top",T="bottom",O="left",L="right",I="#000",D=I+"0",M="mousemove",k="mousedown",C="mouseup",R="mouseenter",F="mouseleave",P="dblclick",U="change",N="dppxchange",j="--",X="undefined"!=typeof window,z=X?document:null,H=X?window:null,Y=X?navigator:null;let B,V;function W(e,t){if(null!=t){let n=e.classList;!n.contains(t)&&n.add(t)}}function G(e,t){let n=e.classList;n.contains(t)&&n.remove(t)}function q(e,t,n){e.style[t]=n+"px"}function K(e,t,n,i){let o=z.createElement(e);return null!=t&&W(o,t),null!=n&&n.insertBefore(o,i),o}function Z(e,t){return K("div",e,t)}const $=new WeakMap;function J(e,t,n,i,o){let s="translate("+t+"px,"+n+"px)";s!=$.get(e)&&(e.style.transform=s,$.set(e,s),t<0||n<0||t>i||n>o?W(e,d):G(e,d))}const Q=new WeakMap;function ee(e,t,n){let i=t+n;i!=Q.get(e)&&(Q.set(e,i),e.style.background=t,e.style.borderColor=n)}const te=new WeakMap;function ne(e,t,n,i){let o=t+""+n;o!=te.get(e)&&(te.set(e,o),e.style.height=n+"px",e.style.width=t+"px",e.style.marginLeft=i?-t/2+"px":0,e.style.marginTop=i?-n/2+"px":0)}const ie={passive:!0},oe={...ie,capture:!0};function se(e,t,n,i){t.addEventListener(e,n,i?oe:ie)}function le(e,t,n,i){t.removeEventListener(e,n,i?oe:ie)}function re(e,t,n,i){let o;n=n||0;let s=(i=i||t.length-1)<=2147483647;for(;i-n>1;)o=s?n+i>>1:Se((n+i)/2),t[o]<e?n=o:i=o;return e-t[n]<=t[i]-e?n:i}function ae(e,t,n,i){for(let o=1==i?t:n;o>=t&&o<=n;o+=i)if(null!=e[o])return o;return-1}function ce(e,t,n,i){let o=Ie(e),s=Ie(t),l=10==n?De:Me;e==t&&(-1==o?(e*=n,t/=n):(e/=n,t*=n));let r=1==s?Ae:Se,a=(1==o?Se:Ae)(l(Ee(e))),c=r(l(Ee(t))),u=Le(n,a),d=Le(n,c);return 10==n&&(a<0&&(u=Ge(u,-a)),c<0&&(d=Ge(d,-c))),i||2==n?(e=u*o,t=d*s):(e=We(e,u),t=Ve(t,d)),[e,t]}function ue(e,t,n,i){let o=ce(e,t,n,i);return 0==e&&(o[0]=0),0==t&&(o[1]=0),o}X&&function e(){let t=devicePixelRatio;B!=t&&(B=t,V&&le(U,V,e),V=matchMedia("(min-resolution: ".concat(B-.001,"dppx) and (max-resolution: ").concat(B+.001,"dppx)")),se(U,V,e),H.dispatchEvent(new CustomEvent(N)))}();const de=.1,he={mode:3,pad:de},fe={pad:0,soft:null,mode:0},pe={min:fe,max:fe};function ge(e,t,n,i){return ot(n)?_e(e,t,n):(fe.pad=n,fe.soft=i?0:null,fe.mode=i?3:0,_e(e,t,pe))}function me(e,t){return null==e?t:e}function _e(e,t,n){let i=n.min,o=n.max,s=me(i.pad,0),l=me(o.pad,0),r=me(i.hard,-Re),a=me(o.hard,Re),c=me(i.soft,Re),u=me(o.soft,-Re),d=me(i.mode,0),h=me(o.mode,0),f=t-e,p=De(f),g=Oe(Ee(e),Ee(t)),m=De(g),_=Ee(m-p);(f<1e-9||_>10)&&(f=0,0!=e&&0!=t||(f=1e-9,2==d&&c!=Re&&(s=0),2==h&&u!=-Re&&(l=0)));let v=f||g||1e3,y=De(v),b=Le(10,Se(y)),w=Ge(We(e-v*(0==f?0==e?.1:1:s),b/10),9),E=e>=c&&(1==d||3==d&&w<=c||2==d&&w>=c)?c:Re,S=Oe(r,w<E&&e>=E?E:Te(E,w)),x=Ge(Ve(t+v*(0==f?0==t?.1:1:l),b/10),9),A=t<=u&&(1==h||3==h&&x>=u||2==h&&x<=u)?u:-Re,T=Te(a,x>A&&t<=A?A:Oe(A,x));return S==T&&0==S&&(T=100),[S,T]}const ve=new Intl.NumberFormat(X?Y.language:"en-US"),ye=e=>ve.format(e),be=Math,we=be.PI,Ee=be.abs,Se=be.floor,xe=be.round,Ae=be.ceil,Te=be.min,Oe=be.max,Le=be.pow,Ie=be.sign,De=be.log10,Me=be.log2,ke=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return be.sinh(e)*t},Ce=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return be.asinh(e/t)},Re=1/0;function Fe(e){return 1+(0|De((e^e>>31)-(e>>31)))}function Pe(e,t,n){return Te(Oe(e,t),n)}function Ue(e){return"function"==typeof e?e:()=>e}const Ne=e=>e,je=(e,t)=>t,Xe=e=>null,ze=e=>!0,He=(e,t)=>e==t,Ye=e=>Ge(e,14);function Be(e,t){return Ye(Ge(Ye(e/t))*t)}function Ve(e,t){return Ye(Ae(Ye(e/t))*t)}function We(e,t){return Ye(Se(Ye(e/t))*t)}function Ge(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(tt(e))return e;let n=10**t,i=e*n*(1+Number.EPSILON);return xe(i)/n}const qe=new Map;function Ke(e){return((""+e).split(".")[1]||"").length}function Ze(e,t,n,i){let o=[],s=i.map(Ke);for(let l=t;l<n;l++){let t=Ee(l),n=Ge(Le(e,l),t);for(let e=0;e<i.length;e++){let r=i[e]*n,a=(r>=0&&l>=0?0:t)+(l>=s[e]?0:s[e]),c=Ge(r,a);o.push(c),qe.set(c,a)}}return o}const $e={},Je=[],Qe=[null,null],et=Array.isArray,tt=Number.isInteger,nt=e=>void 0===e;function it(e){return"string"==typeof e}function ot(e){let t=!1;if(null!=e){let n=e.constructor;t=null==n||n==Object}return t}function st(e){return null!=e&&"object"==typeof e}const lt=Object.getPrototypeOf(Uint8Array);function rt(e){let t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ot;if(et(e)){let i=e.find((e=>null!=e));if(et(i)||n(i)){t=Array(e.length);for(let i=0;i<e.length;i++)t[i]=rt(e[i],n)}else t=e.slice()}else if(e instanceof lt)t=e.slice();else if(n(e)){t={};for(let i in e)t[i]=rt(e[i],n)}else t=e;return t}function at(e){let t=arguments;for(let n=1;n<t.length;n++){let i=t[n];for(let t in i)ot(e[t])?at(e[t],rt(i[t])):e[t]=rt(i[t])}return e}const ct=0,ut=1,dt=2;function ht(e,t,n){for(let i,o=0,s=-1;o<t.length;o++){let l=t[o];if(l>s){for(i=l-1;i>=0&&null==e[i];)e[i--]=null;for(i=l+1;i<n&&null==e[i];)e[s=i++]=null}}}const ft="undefined"==typeof queueMicrotask?e=>Promise.resolve().then(e):queueMicrotask;const pt=["January","February","March","April","May","June","July","August","September","October","November","December"],gt=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function mt(e){return e.slice(0,3)}const _t=gt.map(mt),vt=pt.map(mt),yt={MMMM:pt,MMM:vt,WWWW:gt,WWW:_t};function bt(e){return(e<10?"0":"")+e}const wt={YYYY:e=>e.getFullYear(),YY:e=>(e.getFullYear()+"").slice(2),MMMM:(e,t)=>t.MMMM[e.getMonth()],MMM:(e,t)=>t.MMM[e.getMonth()],MM:e=>bt(e.getMonth()+1),M:e=>e.getMonth()+1,DD:e=>bt(e.getDate()),D:e=>e.getDate(),WWWW:(e,t)=>t.WWWW[e.getDay()],WWW:(e,t)=>t.WWW[e.getDay()],HH:e=>bt(e.getHours()),H:e=>e.getHours(),h:e=>{let t=e.getHours();return 0==t?12:t>12?t-12:t},AA:e=>e.getHours()>=12?"PM":"AM",aa:e=>e.getHours()>=12?"pm":"am",a:e=>e.getHours()>=12?"p":"a",mm:e=>bt(e.getMinutes()),m:e=>e.getMinutes(),ss:e=>bt(e.getSeconds()),s:e=>e.getSeconds(),fff:e=>{return((t=e.getMilliseconds())<10?"00":t<100?"0":"")+t;var t}};function Et(e,t){t=t||yt;let n,i=[],o=/\{([a-z]+)\}|[^{]+/gi;for(;n=o.exec(e);)i.push("{"==n[0][0]?wt[n[1]]:n[0]);return e=>{let n="";for(let o=0;o<i.length;o++)n+="string"==typeof i[o]?i[o]:i[o](e,t);return n}}const St=(new Intl.DateTimeFormat).resolvedOptions().timeZone;const xt=e=>e%1==0,At=[1,2,2.5,5],Tt=Ze(10,-16,0,At),Ot=Ze(10,0,16,At),Lt=Ot.filter(xt),It=Tt.concat(Ot),Dt="{YYYY}",Mt="\n"+Dt,kt="{M}/{D}",Ct="\n"+kt,Rt=Ct+"/{YY}",Ft="{aa}",Pt="{h}:{mm}"+Ft,Ut="\n"+Pt,Nt=":{ss}",jt=null;function Xt(e){let t=1e3*e,n=60*t,i=60*n,o=24*i,s=30*o,l=365*o;return[(1==e?Ze(10,0,3,At).filter(xt):Ze(10,-3,0,At)).concat([t,5*t,10*t,15*t,30*t,n,5*n,10*n,15*n,30*n,i,2*i,3*i,4*i,6*i,8*i,12*i,o,2*o,3*o,4*o,5*o,6*o,7*o,8*o,9*o,10*o,15*o,s,2*s,3*s,4*s,6*s,l,2*l,5*l,10*l,25*l,50*l,100*l]),[[l,Dt,jt,jt,jt,jt,jt,jt,1],[28*o,"{MMM}",Mt,jt,jt,jt,jt,jt,1],[o,kt,Mt,jt,jt,jt,jt,jt,1],[i,"{h}"+Ft,Rt,jt,Ct,jt,jt,jt,1],[n,Pt,Rt,jt,Ct,jt,jt,jt,1],[t,Nt,Rt+" "+Pt,jt,Ct+" "+Pt,jt,Ut,jt,1],[e,Nt+".{fff}",Rt+" "+Pt,jt,Ct+" "+Pt,jt,Ut,jt,1]],function(t){return(r,a,c,u,d,h)=>{let f=[],p=d>=l,g=d>=s&&d<l,m=t(c),_=Ge(m*e,3),v=Kt(m.getFullYear(),p?0:m.getMonth(),g||p?1:m.getDate()),y=Ge(v*e,3);if(g||p){let n=g?d/s:0,i=p?d/l:0,o=_==y?_:Ge(Kt(v.getFullYear()+i,v.getMonth()+n,1)*e,3),r=new Date(xe(o/e)),a=r.getFullYear(),c=r.getMonth();for(let s=0;o<=u;s++){let l=Kt(a+i*s,c+n*s,1),r=l-t(Ge(l*e,3));o=Ge((+l+r)*e,3),o<=u&&f.push(o)}}else{let s=d>=o?o:d,l=y+(Se(c)-Se(_))+Ve(_-y,s);f.push(l);let p=t(l),g=p.getHours()+p.getMinutes()/n+p.getSeconds()/i,m=d/i,v=h/r.axes[a]._space;for(;l=Ge(l+d,1==e?0:3),!(l>u);)if(m>1){let e=Se(Ge(g+m,6))%24,n=t(l).getHours()-e;n>1&&(n=-1),l-=n*i,g=(g+m)%24,Ge((l-f[f.length-1])/d,3)*v>=.7&&f.push(l)}else f.push(l)}return f}}]}const[zt,Ht,Yt]=Xt(1),[Bt,Vt,Wt]=Xt(.001);function Gt(e,t){return e.map((e=>e.map(((n,i)=>0==i||8==i||null==n?n:t(1==i||0==e[8]?n:e[1]+n)))))}function qt(e,t){return(n,i,o,s,l)=>{let r,a,c,u,d,h,f=t.find((e=>l>=e[0]))||t[t.length-1];return i.map((t=>{let n=e(t),i=n.getFullYear(),o=n.getMonth(),s=n.getDate(),l=n.getHours(),p=n.getMinutes(),g=n.getSeconds(),m=i!=r&&f[2]||o!=a&&f[3]||s!=c&&f[4]||l!=u&&f[5]||p!=d&&f[6]||g!=h&&f[7]||f[1];return r=i,a=o,c=s,u=l,d=p,h=g,m(n)}))}}function Kt(e,t,n){return new Date(e,t,n)}function Zt(e,t){return t(e)}Ze(2,-53,53,[1]);const $t="{YYYY}-{MM}-{DD} {h}:{mm}{aa}";function Jt(e,t){return(n,i,o,s)=>null==s?j:t(e(i))}const Qt={show:!0,live:!0,isolate:!1,mount:()=>{},markers:{show:!0,width:2,stroke:function(e,t){let n=e.series[t];return n.width?n.stroke(e,t):n.points.width?n.points.stroke(e,t):null},fill:function(e,t){return e.series[t].fill(e,t)},dash:"solid"},idx:null,idxs:null,values:[]};const en=[0,0];function tn(e,t,n){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return e=>{0==e.button&&(!i||e.target==t)&&n(e)}}function nn(e,t,n){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return e=>{(!i||e.target==t)&&n(e)}}const on={show:!0,x:!0,y:!0,lock:!1,move:function(e,t,n){return en[0]=t,en[1]=n,en},points:{show:function(e,t){let n=e.cursor.points,i=Z(),o=n.size(e,t);q(i,S,o),q(i,x,o);let s=o/-2;q(i,"marginLeft",s),q(i,"marginTop",s);let l=n.width(e,t,o);return l&&q(i,"borderWidth",l),i},size:function(e,t){return e.series[t].points.size},width:0,stroke:function(e,t){let n=e.series[t].points;return n._stroke||n._fill},fill:function(e,t){let n=e.series[t].points;return n._fill||n._stroke}},bind:{mousedown:tn,mouseup:tn,click:tn,dblclick:tn,mousemove:nn,mouseleave:nn,mouseenter:nn},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,click:(e,t)=>{t.stopPropagation(),t.stopImmediatePropagation()},_x:!1,_y:!1},focus:{prox:-1,bias:0},left:-10,top:-10,idx:null,dataIdx:function(e,t,n){return n},idxs:null,event:null},sn={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},ln=at({},sn,{filter:je}),rn=at({},ln,{size:10}),an=at({},sn,{show:!1}),cn='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',un="bold "+cn,dn={show:!0,scale:"x",stroke:I,space:50,gap:5,size:50,labelGap:0,labelSize:30,labelFont:un,side:2,grid:ln,ticks:rn,border:an,font:cn,lineGap:1.5,rotate:0},hn="Value",fn="Time",pn={show:!0,scale:"x",auto:!1,sorted:1,min:Re,max:-Re,idxs:[]};function gn(e,t,n,i,o){return t.map((e=>null==e?"":ye(e)))}function mn(e,t,n,i,o,s,l){let r=[],a=qe.get(o)||0;for(let c=n=l?n:Ge(Ve(n,o),a);c<=i;c=Ge(c+o,a))r.push(Object.is(c,-0)?0:c);return r}function _n(e,t,n,i,o,s,l){const r=[],a=e.scales[e.axes[t].scale].log,c=Se((10==a?De:Me)(n));o=Le(a,c),10==a&&c<0&&(o=Ge(o,-c));let u=n;do{r.push(u),u+=o,10==a&&(u=Ge(u,qe.get(o))),u>=o*a&&(o=u)}while(u<=i);return r}function vn(e,t,n,i,o,s,l){let r=e.scales[e.axes[t].scale].asinh,a=i>r?_n(e,t,Oe(r,n),i,o):[r],c=i>=0&&n<=0?[0]:[];return(n<-r?_n(e,t,Oe(r,-i),-n,o):[r]).reverse().map((e=>-e)).concat(c,a)}const yn=/./,bn=/[12357]/,wn=/[125]/,En=/1/,Sn=(e,t,n,i)=>e.map(((e,o)=>4==t&&0==e||o%i==0&&n.test(e.toExponential()[e<0?1:0])?e:null));function xn(e,t,n,i,o){let s=e.axes[n],l=s.scale,r=e.scales[l],a=e.valToPos,c=s._space,u=a(10,l),d=a(9,l)-u>=c?yn:a(7,l)-u>=c?bn:a(5,l)-u>=c?wn:En;if(d==En){let e=Ee(a(1,l)-u);if(e<c)return Sn(t.slice().reverse(),r.distr,d,Ae(c/e)).reverse()}return Sn(t,r.distr,d,1)}function An(e,t,n,i,o){let s=e.axes[n],l=s.scale,r=s._space,a=e.valToPos,c=Ee(a(1,l)-a(2,l));return c<r?Sn(t.slice().reverse(),3,yn,Ae(r/c)).reverse():t}function Tn(e,t,n,i){return null==i?j:null==t?"":ye(t)}const On={show:!0,scale:"y",stroke:I,space:30,gap:5,size:50,labelGap:0,labelSize:30,labelFont:un,side:3,grid:ln,ticks:rn,border:an,font:cn,lineGap:1.5,rotate:0};const Ln={scale:null,auto:!0,sorted:0,min:Re,max:-Re},In=(e,t,n,i,o)=>o,Dn={show:!0,auto:!0,sorted:0,gaps:In,alpha:1,facets:[at({},Ln,{scale:"x"}),at({},Ln,{scale:"y"})]},Mn={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:In,alpha:1,points:{show:function(e,t){let{scale:n,idxs:i}=e.series[0],o=e._data[0],s=e.valToPos(o[i[0]],n,!0),l=e.valToPos(o[i[1]],n,!0),r=Ee(l-s)/(e.series[t].points.space*B);return i[1]-i[0]<=r},filter:null},values:null,min:Re,max:-Re,idxs:[],path:null,clip:null};function kn(e,t,n,i,o){return n/10}const Cn={time:!0,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},Rn=at({},Cn,{time:!1,ori:1}),Fn={};function Pn(e,t){let n=Fn[e];return n||(n={key:e,plots:[],sub(e){n.plots.push(e)},unsub(e){n.plots=n.plots.filter((t=>t!=e))},pub(e,t,i,o,s,l,r){for(let a=0;a<n.plots.length;a++)n.plots[a]!=t&&n.plots[a].pub(e,t,i,o,s,l,r)}},null!=e&&(Fn[e]=n)),n}const Un=1,Nn=2;function jn(e,t,n){const i=e.mode,o=e.series[t],s=2==i?e._data[t]:e._data,l=e.scales,r=e.bbox;let a=s[0],c=2==i?s[1]:s[t],u=2==i?l[o.facets[0].scale]:l[e.series[0].scale],d=2==i?l[o.facets[1].scale]:l[o.scale],h=r.left,f=r.top,p=r.width,g=r.height,m=e.valToPosH,_=e.valToPosV;return 0==u.ori?n(o,a,c,u,d,m,_,h,f,p,g,Gn,Kn,$n,Qn,ti):n(o,a,c,u,d,_,m,f,h,g,p,qn,Zn,Jn,ei,ni)}function Xn(e,t){let n=0,i=0,o=me(e.bands,Je);for(let s=0;s<o.length;s++){let e=o[s];e.series[0]==t?n=e.dir:e.series[1]==t&&(1==e.dir?i|=1:i|=2)}return[n,1==i?-1:2==i?1:3==i?2:0]}function zn(e,t,n,i,o){let s=e.mode,l=e.series[t],r=2==s?l.facets[1].scale:l.scale,a=e.scales[r];return-1==o?a.min:1==o?a.max:3==a.distr?1==a.dir?a.min:a.max:0}function Hn(e,t,n,i,o,s){return jn(e,t,((e,t,l,r,a,c,u,d,h,f,p)=>{let g=e.pxRound;const m=r.dir*(0==r.ori?1:-1),_=0==r.ori?Kn:Zn;let v,y;1==m?(v=n,y=i):(v=i,y=n);let b=g(c(t[v],r,f,d)),w=g(u(l[v],a,p,h)),E=g(c(t[y],r,f,d)),S=g(u(1==s?a.max:a.min,a,p,h)),x=new Path2D(o);return _(x,E,S),_(x,b,S),_(x,b,w),x}))}function Yn(e,t,n,i,o,s){let l=null;if(e.length>0){l=new Path2D;const r=0==t?$n:Jn;let a=n;for(let t=0;t<e.length;t++){let n=e[t];if(n[1]>n[0]){let e=n[0]-a;e>0&&r(l,a,i,e,i+s),a=n[1]}}let c=n+o-a,u=10;c>0&&r(l,a,i-u/2,c,i+s+u)}return l}function Bn(e,t,n,i,o,s,l){let r=[],a=e.length;for(let c=1==o?n:i;c>=n&&c<=i;c+=o){if(null===t[c]){let u=c,d=c;if(1==o)for(;++c<=i&&null===t[c];)d=c;else for(;--c>=n&&null===t[c];)d=c;let h=s(e[u]),f=d==u?h:s(e[d]),p=u-o;h=l<=0&&p>=0&&p<a?s(e[p]):h;let g=d+o;f=l>=0&&g>=0&&g<a?s(e[g]):f,f>=h&&r.push([h,f])}}return r}function Vn(e){return 0==e?Ne:1==e?xe:t=>Be(t,e)}function Wn(e){let t=0==e?Gn:qn,n=0==e?(e,t,n,i,o,s)=>{e.arcTo(t,n,i,o,s)}:(e,t,n,i,o,s)=>{e.arcTo(n,t,o,i,s)},i=0==e?(e,t,n,i,o)=>{e.rect(t,n,i,o)}:(e,t,n,i,o)=>{e.rect(n,t,o,i)};return function(e,o,s,l,r){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0;0==a&&0==c?i(e,o,s,l,r):(a=Te(a,l/2,r/2),c=Te(c,l/2,r/2),t(e,o+a,s),n(e,o+l,s,o+l,s+r,a),n(e,o+l,s+r,o,s+r,c),n(e,o,s+r,o,s,c),n(e,o,s,o+l,s,a),e.closePath())}}const Gn=(e,t,n)=>{e.moveTo(t,n)},qn=(e,t,n)=>{e.moveTo(n,t)},Kn=(e,t,n)=>{e.lineTo(t,n)},Zn=(e,t,n)=>{e.lineTo(n,t)},$n=Wn(0),Jn=Wn(1),Qn=(e,t,n,i,o,s)=>{e.arc(t,n,i,o,s)},ei=(e,t,n,i,o,s)=>{e.arc(n,t,i,o,s)},ti=(e,t,n,i,o,s,l)=>{e.bezierCurveTo(t,n,i,o,s,l)},ni=(e,t,n,i,o,s,l)=>{e.bezierCurveTo(n,t,o,i,l,s)};function ii(e){return(e,t,n,i,o)=>jn(e,t,((t,s,l,r,a,c,u,d,h,f,p)=>{let g,m,{pxRound:_,points:v}=t;0==r.ori?(g=Gn,m=Qn):(g=qn,m=ei);const y=Ge(v.width*B,3);let b=(v.size-v.width)/2*B,w=Ge(2*b,3),E=new Path2D,S=new Path2D,{left:x,top:A,width:T,height:O}=e.bbox;$n(S,x-w,A-w,T+2*w,O+2*w);const L=e=>{if(null!=l[e]){let t=_(c(s[e],r,f,d)),n=_(u(l[e],a,p,h));g(E,t+b,n),m(E,t,n,b,0,2*we)}};if(o)o.forEach(L);else for(let e=n;e<=i;e++)L(e);return{stroke:y>0?E:null,fill:E,clip:S,flags:Un|Nn}}))}function oi(e){return(t,n,i,o,s,l)=>{i!=o&&(s!=i&&l!=i&&e(t,n,i),s!=o&&l!=o&&e(t,n,o),e(t,n,l))}}const si=oi(Kn),li=oi(Zn);function ri(e){const t=me(null===e||void 0===e?void 0:e.alignGaps,0);return(e,n,i,o)=>jn(e,n,((s,l,r,a,c,u,d,h,f,p,g)=>{let m,_,v=s.pxRound,y=e=>v(u(e,a,p,h)),b=e=>v(d(e,c,g,f));0==a.ori?(m=Kn,_=si):(m=Zn,_=li);const w=a.dir*(0==a.ori?1:-1),E={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Un},S=E.stroke;let x,A,T,O=Re,L=-Re,I=y(l[1==w?i:o]),D=ae(r,i,o,1*w),M=ae(r,i,o,-1*w),k=y(l[D]),C=y(l[M]),R=!1;for(let e=1==w?i:o;e>=i&&e<=o;e+=w){let t=y(l[e]),n=r[e];t==I?null!=n?(A=b(n),O==Re&&(m(S,t,A),x=A),O=Te(A,O),L=Oe(A,L)):null===n&&(R=!0):(O!=Re&&(_(S,I,O,L,x,A),T=I),null!=n?(A=b(n),m(S,t,A),O=L=x=A):(O=Re,L=-Re,null===n&&(R=!0)),I=t)}O!=Re&&O!=L&&T!=I&&_(S,I,O,L,x,A);let[F,P]=Xn(e,n);if(null!=s.fill||0!=F){let t=E.fill=new Path2D(S),i=b(s.fillTo(e,n,s.min,s.max,F));m(t,C,i),m(t,k,i)}if(!s.spanGaps){let c=[];R&&c.push(...Bn(l,r,i,o,w,y,t)),E.gaps=c=s.gaps(e,n,i,o,c),E.clip=Yn(c,a.ori,h,f,p,g)}return 0!=P&&(E.band=2==P?[Hn(e,n,i,o,S,-1),Hn(e,n,i,o,S,1)]:Hn(e,n,i,o,S,P)),E}))}function ai(e,t,n,i,o,s){const l=e.length;if(l<2)return null;const r=new Path2D;if(n(r,e[0],t[0]),2==l)i(r,e[1],t[1]);else{let n=Array(l),i=Array(l-1),s=Array(l-1),a=Array(l-1);for(let o=0;o<l-1;o++)s[o]=t[o+1]-t[o],a[o]=e[o+1]-e[o],i[o]=s[o]/a[o];n[0]=i[0];for(let e=1;e<l-1;e++)0===i[e]||0===i[e-1]||i[e-1]>0!==i[e]>0?n[e]=0:(n[e]=3*(a[e-1]+a[e])/((2*a[e]+a[e-1])/i[e-1]+(a[e]+2*a[e-1])/i[e]),isFinite(n[e])||(n[e]=0));n[l-1]=i[l-2];for(let c=0;c<l-1;c++)o(r,e[c]+a[c]/3,t[c]+n[c]*a[c]/3,e[c+1]-a[c]/3,t[c+1]-n[c+1]*a[c]/3,e[c+1],t[c+1])}return r}const ci=new Set;function ui(){for(let e of ci)e.syncRect(!0)}X&&(se("resize",H,ui),se("scroll",H,ui,!0),se(N,H,(()=>{Ai.pxRatio=B})));const di=ri(),hi=ii();function fi(e,t,n,i){return(i?[e[0],e[1]].concat(e.slice(2)):[e[0]].concat(e.slice(1))).map(((e,i)=>pi(e,i,t,n)))}function pi(e,t,n,i){return at({},0==t?n:i,e)}function gi(e,t,n){return null==t?Qe:[t,n]}const mi=gi;function _i(e,t,n){return null==t?Qe:ge(t,n,de,!0)}function vi(e,t,n,i){return null==t?Qe:ce(t,n,e.scales[i].log,!1)}const yi=vi;function bi(e,t,n,i){return null==t?Qe:ue(t,n,e.scales[i].log,!1)}const wi=bi;function Ei(e,t,n,i,o){let s=Oe(Fe(e),Fe(t)),l=t-e,r=re(o/i*l,n);do{let e=n[r],t=i*e/l;if(t>=o&&s+(e<5?qe.get(e):0)<=17)return[e,t]}while(++r<n.length);return[0,0]}function Si(e){let t,n;return[e=e.replace(/(\d+)px/,((e,i)=>(t=xe((n=+i)*B))+"px")),t,n]}function xi(e){e.show&&[e.font,e.labelFont].forEach((e=>{let t=Ge(e[2]*B,1);e[0]=e[0].replace(/[0-9.]+px/,t+"px"),e[1]=t}))}function Ai(e,t,n){const I={mode:me(e.mode,1)},U=I.mode;function X(e,t){return((3==t.distr?De(e>0?e:t.clamp(I,e,t.min,t.max,t.key)):4==t.distr?Ce(e,t.asinh):e)-t._min)/(t._max-t._min)}function Y(e,t,n,i){let o=X(e,t);return i+n*(-1==t.dir?1-o:o)}function V(e,t,n,i){let o=X(e,t);return i+n*(-1==t.dir?o:1-o)}function $(e,t,n,i){return 0==t.ori?Y(e,t,n,i):V(e,t,n,i)}I.valToPosH=Y,I.valToPosV=V;let Q=!1;I.status=0;const te=I.root=Z(i);if(null!=e.id&&(te.id=e.id),W(te,e.class),e.title){Z(l,te).textContent=e.title}const ie=K("canvas"),oe=I.ctx=ie.getContext("2d"),ae=Z(r,te);se("click",ae,(e=>{if(e.target===pe){(eo!=Zi||to!=$i)&&ro.click(I,e)}}),!0);const fe=I.under=Z(a,ae);ae.appendChild(ie);const pe=I.over=Z(c,ae),_e=+me((e=rt(e)).pxAlign,1),ve=Vn(_e);(e.plugins||[]).forEach((t=>{t.opts&&(e=t.opts(I,e)||e)}));const ye=e.ms||.001,be=I.series=1==U?fi(e.series||[],pn,Mn,!1):(Se=e.series||[null],Ie=Dn,Se.map(((e,t)=>0==t?null:at({},Ie,e))));var Se,Ie;const Me=I.axes=fi(e.axes||[],dn,On,!0),Fe=I.scales={},Ne=I.bands=e.bands||[];Ne.forEach((e=>{e.fill=Ue(e.fill||null),e.dir=me(e.dir,-1)}));const Ye=2==U?be[1].facets[0].scale:be[0].scale,We={axes:function(){for(let e=0;e<Me.length;e++){let t=Me[e];if(!t.show||!t._show)continue;let n,i,o=t.side,s=o%2,l=t.stroke(I,e),r=0==o||3==o?-1:1;if(t.label){let e=t.labelGap*r,a=xe((t._lpos+e)*B);ki(t.labelFont[0],l,"center",2==o?A:T),oe.save(),1==s?(n=i=0,oe.translate(a,xe(rn+cn/2)),oe.rotate((3==o?-we:we)/2)):(n=xe(ln+an/2),i=a),oe.fillText(t.label,n,i),oe.restore()}let[a,c]=t._found;if(0==c)continue;let u=Fe[t.scale],d=0==s?an:cn,h=0==s?ln:rn,f=xe(t.gap*B),p=t._splits,g=2==u.distr?p.map((e=>Oi[e])):p,m=2==u.distr?Oi[p[1]]-Oi[p[0]]:a,_=t.ticks,v=t.border,y=_.show?xe(_.size*B):0,b=t._rotate*-we/180,w=ve(t._pos*B),E=w+(y+f)*r;i=0==s?E:0,n=1==s?E:0,ki(t.font[0],l,1==t.align?O:2==t.align?L:b>0?O:b<0?L:0==s?"center":3==o?L:O,b||1==s?"middle":2==o?A:T);let S=t.font[1]*t.lineGap,x=p.map((e=>ve($(e,u,d,h)))),D=t._values;for(let e=0;e<D.length;e++){let t=D[e];if(null!=t){0==s?n=x[e]:i=x[e],t=""+t;let o=-1==t.indexOf("\n")?[t]:t.split(/\n/gm);for(let e=0;e<o.length;e++){let t=o[e];b?(oe.save(),oe.translate(n,i+e*S),oe.rotate(b),oe.fillText(t,0,0),oe.restore()):oe.fillText(t,n,i+e*S)}}}_.show&&Xi(x,_.filter(I,g,e,c,m),s,o,w,y,Ge(_.width*B,3),_.stroke(I,e),_.dash,_.cap);let M=t.grid;M.show&&Xi(x,M.filter(I,g,e,c,m),s,0==s?2:1,0==s?rn:ln,0==s?cn:an,Ge(M.width*B,3),M.stroke(I,e),M.dash,M.cap),v.show&&Xi([w],[1],0==s?1:0,0==s?1:2,1==s?rn:ln,1==s?cn:an,Ge(v.width*B,3),v.stroke(I,e),v.dash,v.cap)}Bo("drawAxes")},series:function(){Jn>0&&(be.forEach(((e,n)=>{if(n>0&&e.show&&(Ri(n,!1),Ri(n,!0),null==e._paths)){let i=2==U?[0,t[n][0].length-1]:function(e){let t=Pe(Qn-1,0,Jn-1),n=Pe(ei+1,0,Jn-1);for(;null==e[t]&&t>0;)t--;for(;null==e[n]&&n<Jn-1;)n++;return[t,n]}(t[n]);e._paths=e.paths(I,n,i[0],i[1])}})),be.forEach(((e,t)=>{if(t>0&&e.show){Ti!=e.alpha&&(oe.globalAlpha=Ti=e.alpha),null!=e._paths&&Fi(t,!1);{let n=null!=e._paths?e._paths.gaps:null,i=e.points.show(I,t,Qn,ei,n),o=e.points.filter(I,t,i,n);(i||o)&&(e.points._paths=e.points.paths(I,t,Qn,ei,o),Fi(t,!0))}1!=Ti&&(oe.globalAlpha=Ti=1),Bo("drawSeries",t)}})))}},Ze=(e.drawOrder||["axes","series"]).map((e=>We[e]));function tt(t){let n=Fe[t];if(null==n){let i=(e.scales||$e)[t]||$e;if(null!=i.from)tt(i.from),Fe[t]=at({},Fe[i.from],i,{key:t});else{n=Fe[t]=at({},t==Ye?Cn:Rn,i),n.key=t;let e=n.time,o=n.range,s=et(o);if((t!=Ye||2==U&&!e)&&(!s||null!=o[0]&&null!=o[1]||(o={min:null==o[0]?he:{mode:1,hard:o[0],soft:o[0]},max:null==o[1]?he:{mode:1,hard:o[1],soft:o[1]}},s=!1),!s&&ot(o))){let e=o;o=(t,n,i)=>null==n?Qe:ge(n,i,e)}n.range=Ue(o||(e?mi:t==Ye?3==n.distr?yi:4==n.distr?wi:gi:3==n.distr?vi:4==n.distr?bi:_i)),n.auto=Ue(!s&&n.auto),n.clamp=Ue(n.clamp||kn),n._min=n._max=null}}}tt("x"),tt("y"),1==U&&be.forEach((e=>{tt(e.scale)})),Me.forEach((e=>{tt(e.scale)}));for(let i in e.scales)tt(i);const lt=Fe[Ye],ct=lt.distr;let ut,dt;0==lt.ori?(W(te,o),ut=Y,dt=V):(W(te,s),ut=V,dt=Y);const ht={};for(let i in Fe){let e=Fe[i];null==e.min&&null==e.max||(ht[i]={min:e.min,max:e.max},e.min=e.max=null)}const pt=e.tzDate||(e=>new Date(xe(e/ye))),gt=e.fmtDate||Et,mt=1==ye?Yt(pt):Wt(pt),_t=qt(pt,Gt(1==ye?Ht:Vt,gt)),vt=Jt(pt,Zt($t,gt)),yt=[],bt=I.legend=at({},Qt,e.legend),wt=bt.show,St=bt.markers;let xt,At,Tt;bt.idxs=yt,St.width=Ue(St.width),St.dash=Ue(St.dash),St.stroke=Ue(St.stroke),St.fill=Ue(St.fill);let Ot,Dt=[],Mt=[],kt=!1,Ct={};if(bt.live){const e=be[1]?be[1].values:null;kt=null!=e,Ot=kt?e(I,1,0):{_:0};for(let t in Ot)Ct[t]=j}if(wt)if(xt=K("table",m,te),Tt=K("tbody",null,xt),bt.mount(I,xt),kt){At=K("thead",null,xt,Tt);let e=K("tr",null,At);for(var Rt in K("th",null,e),Ot)K("th",w,e).textContent=Rt}else W(xt,v),bt.live&&W(xt,_);const Ft={show:!0},Pt={show:!1};const Ut=new Map;function Nt(e,t,n){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const o=Ut.get(t)||{},s=jn.bind[e](I,t,n,i);s&&(se(e,t,o[e]=s),Ut.set(t,o))}function jt(e,t,n){const i=Ut.get(t)||{};for(let o in i)null!=e&&o!=e||(le(o,t,i[o]),delete i[o]);null==e&&Ut.delete(t)}let Xt=0,Kt=0,en=0,tn=0,nn=0,sn=0,ln=0,rn=0,an=0,cn=0;I.bbox={};let un=!1,yn=!1,bn=!1,wn=!1,En=!1,Sn=!1;function Ln(e,t,n){(n||e!=I.width||t!=I.height)&&In(e,t),Yi(!1),bn=!0,yn=!0,jn.left>=0&&(wn=Sn=!0),io()}function In(e,t){I.width=Xt=en=e,I.height=Kt=tn=t,nn=sn=0,function(){let e=!1,t=!1,n=!1,i=!1;Me.forEach(((o,s)=>{if(o.show&&o._show){let{side:s,_size:l}=o,r=s%2,a=l+(null!=o.label?o.labelSize:0);a>0&&(r?(en-=a,3==s?(nn+=a,i=!0):n=!0):(tn-=a,0==s?(sn+=a,e=!0):t=!0))}})),qn[0]=e,qn[1]=n,qn[2]=t,qn[3]=i,en-=$n[1]+$n[3],nn+=$n[3],tn-=$n[2]+$n[0],sn+=$n[0]}(),function(){let e=nn+en,t=sn+tn,n=nn,i=sn;function o(o,s){switch(o){case 1:return e+=s,e-s;case 2:return t+=s,t-s;case 3:return n-=s,n+s;case 0:return i-=s,i+s}}Me.forEach(((e,t)=>{if(e.show&&e._show){let t=e.side;e._pos=o(t,e._size),null!=e.label&&(e._lpos=o(t,e.labelSize))}}))}();let n=I.bbox;ln=n.left=Be(nn*B,.5),rn=n.top=Be(sn*B,.5),an=n.width=Be(en*B,.5),cn=n.height=Be(tn*B,.5)}const Fn=3;I.setSize=function(e){let{width:t,height:n}=e;Ln(t,n)};const jn=I.cursor=at({},on,{drag:{y:2==U}},e.cursor),Xn=e=>{jn.event=e};jn.idxs=yt,jn._lock=!1;let Hn=jn.points;Hn.show=Ue(Hn.show),Hn.size=Ue(Hn.size),Hn.stroke=Ue(Hn.stroke),Hn.width=Ue(Hn.width),Hn.fill=Ue(Hn.fill);const Yn=I.focus=at({},e.focus||{alpha:.3},jn.focus),Bn=Yn.prox>=0;let Wn=[null];function Gn(e,t){if(1==U||t>0){let t=1==U&&Fe[e.scale].time,n=e.value;e.value=t?it(n)?Jt(pt,Zt(n,gt)):n||vt:n||Tn,e.label=e.label||(t?fn:hn)}if(t>0){e.width=null==e.width?1:e.width,e.paths=e.paths||di||Xe,e.fillTo=Ue(e.fillTo||zn),e.pxAlign=+me(e.pxAlign,_e),e.pxRound=Vn(e.pxAlign),e.stroke=Ue(e.stroke||null),e.fill=Ue(e.fill||null),e._stroke=e._fill=e._paths=e._focus=null;let t=Ge((3+2*(Oe(1,e.width)||1))*1,3),n=e.points=at({},{size:t,width:Oe(1,.2*t),stroke:e.stroke,space:2*t,paths:hi,_stroke:null,_fill:null},e.points);n.show=Ue(n.show),n.filter=Ue(n.filter),n.fill=Ue(n.fill),n.stroke=Ue(n.stroke),n.paths=Ue(n.paths),n.pxAlign=e.pxAlign}if(wt){let n=function(e,t){if(0==t&&(kt||!bt.live||2==U))return Qe;let n=[],i=K("tr",y,Tt,Tt.childNodes[t]);W(i,e.class),e.show||W(i,d);let o=K("th",null,i);if(St.show){let e=Z(b,o);if(t>0){let n=St.width(I,t);n&&(e.style.border=n+"px "+St.dash(I,t)+" "+St.stroke(I,t)),e.style.background=St.fill(I,t)}}let s=Z(w,o);for(var l in s.textContent=e.label,t>0&&(St.show||(s.style.color=e.width>0?St.stroke(I,t):St.fill(I,t)),Nt("click",o,(t=>{if(jn._lock)return;Xn(t);let n=be.indexOf(e);if((t.ctrlKey||t.metaKey)!=bt.isolate){let e=be.some(((e,t)=>t>0&&t!=n&&e.show));be.forEach(((t,i)=>{i>0&&go(i,e?i==n?Ft:Pt:Ft,!0,Wo.setSeries)}))}else go(n,{show:!e.show},!0,Wo.setSeries)}),!1),Bn&&Nt(R,o,(t=>{jn._lock||(Xn(t),go(be.indexOf(e),yo,!0,Wo.setSeries))}),!1)),Ot){let e=K("td",E,i);e.textContent="--",n.push(e)}return[i,n]}(e,t);Dt.splice(t,0,n[0]),Mt.splice(t,0,n[1]),bt.values.push(null)}if(jn.show){yt.splice(t,0,null);let n=function(e,t){if(t>0){let n=jn.points.show(I,t);if(n)return W(n,g),W(n,e.class),J(n,-10,-10,en,tn),pe.insertBefore(n,Wn[t]),n}}(e,t);n&&Wn.splice(t,0,n)}Bo("addSeries",t)}I.addSeries=function(e,t){t=null==t?be.length:t,e=1==U?pi(e,t,pn,Mn):pi(e,t,null,Dn),be.splice(t,0,e),Gn(be[t],t)},I.delSeries=function(e){if(be.splice(e,1),wt){bt.values.splice(e,1),Mt.splice(e,1);let t=Dt.splice(e,1)[0];jt(null,t.firstChild),t.remove()}jn.show&&(yt.splice(e,1),Wn.length>1&&Wn.splice(e,1)[0].remove()),Bo("delSeries",e)};const qn=[!1,!1,!1,!1];function Kn(e,t,n,i){let[o,s,l,r]=n,a=t%2,c=0;return 0==a&&(r||s)&&(c=0==t&&!o||2==t&&!l?xe(dn.size/3):0),1==a&&(o||l)&&(c=1==t&&!s||3==t&&!r?xe(On.size/2):0),c}const Zn=I.padding=(e.padding||[Kn,Kn,Kn,Kn]).map((e=>Ue(me(e,Kn)))),$n=I._padding=Zn.map(((e,t)=>e(I,t,qn,0)));let Jn,Qn=null,ei=null;const ti=1==U?be[0].idxs:null;let ni,ii,oi,si,li,ri,ai,ui,Ai,Ti,Oi=null,Li=!1;function Ii(e,n){if(t=null==e?[]:rt(e,st),2==U){Jn=0;for(let e=1;e<be.length;e++)Jn+=t[e][0].length;I.data=t=e}else if(null==t[0]&&(t[0]=[]),I.data=t.slice(),Oi=t[0],Jn=Oi.length,2==ct){t[0]=Array(Jn);for(let e=0;e<Jn;e++)t[0][e]=e}if(I._data=t,Yi(!0),Bo("setData"),2==ct&&(bn=!0),!1!==n){let e=lt;e.auto(I,Li)?Di():po(Ye,e.min,e.max),wn=wn||jn.left>=0,Sn=!0,io()}}function Di(){let e,n;Li=!0,1==U&&(Jn>0?(Qn=ti[0]=0,ei=ti[1]=Jn-1,e=t[0][Qn],n=t[0][ei],2==ct?(e=Qn,n=ei):e==n&&(3==ct?[e,n]=ce(e,e,lt.log,!1):4==ct?[e,n]=ue(e,e,lt.log,!1):lt.time?n=e+xe(86400/ye):[e,n]=ge(e,n,de,!0))):(Qn=ti[0]=e=null,ei=ti[1]=n=null)),po(Ye,e,n)}function Mi(e,t,n,i,o,s){var l,r,a,c,u;null!==(l=e)&&void 0!==l||(e=D),null!==(r=n)&&void 0!==r||(n=Je),null!==(a=i)&&void 0!==a||(i="butt"),null!==(c=o)&&void 0!==c||(o=D),null!==(u=s)&&void 0!==u||(s="round"),e!=ni&&(oe.strokeStyle=ni=e),o!=ii&&(oe.fillStyle=ii=o),t!=oi&&(oe.lineWidth=oi=t),s!=li&&(oe.lineJoin=li=s),i!=ri&&(oe.lineCap=ri=i),n!=si&&oe.setLineDash(si=n)}function ki(e,t,n,i){t!=ii&&(oe.fillStyle=ii=t),e!=ai&&(oe.font=ai=e),n!=ui&&(oe.textAlign=ui=n),i!=Ai&&(oe.textBaseline=Ai=i)}function Ci(e,t,n,i){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;if(i.length>0&&e.auto(I,Li)&&(null==t||null==t.min)){let t=me(Qn,0),s=me(ei,i.length-1),l=null==n.min?3==e.distr?function(e,t,n){let i=Re,o=-Re;for(let s=t;s<=n;s++){let t=e[s];null!=t&&t>0&&(t<i&&(i=t),t>o&&(o=t))}return[i==Re?1:i,o==-Re?10:o]}(i,t,s):function(e,t,n,i){let o=Re,s=-Re;if(1==i)o=e[t],s=e[n];else if(-1==i)o=e[n],s=e[t];else for(let l=t;l<=n;l++){let t=e[l];null!=t&&(t<o&&(o=t),t>s&&(s=t))}return[o,s]}(i,t,s,o):[n.min,n.max];e.min=Te(e.min,n.min=l[0]),e.max=Oe(e.max,n.max=l[1])}}function Ri(e,t){let n=t?be[e].points:be[e];n._stroke=n.stroke(I,e),n._fill=n.fill(I,e)}function Fi(e,n){let i=n?be[e].points:be[e],{stroke:o,fill:s,clip:l,flags:r,_stroke:a=i._stroke,_fill:c=i._fill,_width:u=i.width}=i._paths;u=Ge(u*B,3);let d=null,h=u%2/2;n&&null==c&&(c=u>0?"#fff":a);let f=1==i.pxAlign&&h>0;if(f&&oe.translate(h,h),!n){let e=ln-u/2,t=rn-u/2,n=an+u,i=cn+u;d=new Path2D,d.rect(e,t,n,i)}n?Ui(a,u,i.dash,i.cap,c,o,s,r,l):function(e,n,i,o,s,l,r,a,c,u,d){let h=!1;Ne.forEach(((f,p)=>{if(f.series[0]==e){let e,g=be[f.series[1]],m=t[f.series[1]],_=(g._paths||$e).band;et(_)&&(_=1==f.dir?_[0]:_[1]);let v=null;g.show&&_&&function(e,t,n){for(t=me(t,0),n=me(n,e.length-1);t<=n;){if(null!=e[t])return!0;t++}return!1}(m,Qn,ei)?(v=f.fill(I,p)||l,e=g._paths.clip):_=null,Ui(n,i,o,s,v,r,a,c,u,d,e,_),h=!0}})),h||Ui(n,i,o,s,l,r,a,c,u,d)}(e,a,u,i.dash,i.cap,c,o,s,r,d,l),f&&oe.translate(-h,-h)}I.setData=Ii;const Pi=Un|Nn;function Ui(e,t,n,i,o,s,l,r,a,c,u,d){Mi(e,t,n,i,o),(a||c||d)&&(oe.save(),a&&oe.clip(a),c&&oe.clip(c)),d?(r&Pi)==Pi?(oe.clip(d),u&&oe.clip(u),ji(o,l),Ni(e,s,t)):r&Nn?(ji(o,l),oe.clip(d),Ni(e,s,t)):r&Un&&(oe.save(),oe.clip(d),u&&oe.clip(u),ji(o,l),oe.restore(),Ni(e,s,t)):(ji(o,l),Ni(e,s,t)),(a||c||d)&&oe.restore()}function Ni(e,t,n){n>0&&(t instanceof Map?t.forEach(((e,t)=>{oe.strokeStyle=ni=t,oe.stroke(e)})):null!=t&&e&&oe.stroke(t))}function ji(e,t){t instanceof Map?t.forEach(((e,t)=>{oe.fillStyle=ii=t,oe.fill(e)})):null!=t&&e&&oe.fill(t)}function Xi(e,t,n,i,o,s,l,r,a,c){let u=l%2/2;1==_e&&oe.translate(u,u),Mi(r,l,a,c,r),oe.beginPath();let d,h,f,p,g=o+(0==i||3==i?-s:s);0==n?(h=o,p=g):(d=o,f=g);for(let m=0;m<e.length;m++)null!=t[m]&&(0==n?d=f=e[m]:h=p=e[m],oe.moveTo(d,h),oe.lineTo(f,p));oe.stroke(),1==_e&&oe.translate(-u,-u)}function zi(e){let t=!0;return Me.forEach(((n,i)=>{if(!n.show)return;let o=Fe[n.scale];if(null==o.min)return void(n._show&&(t=!1,n._show=!1,Yi(!1)));n._show||(t=!1,n._show=!0,Yi(!1));let s=n.side,l=s%2,{min:r,max:a}=o,[c,u]=function(e,t,n,i){let o,s=Me[e];if(i<=0)o=[0,0];else{let l=s._space=s.space(I,e,t,n,i);o=Ei(t,n,s._incrs=s.incrs(I,e,t,n,i,l),i,l)}return s._found=o}(i,r,a,0==l?en:tn);if(0==u)return;let d=2==o.distr,h=n._splits=n.splits(I,i,r,a,c,u,d),f=2==o.distr?h.map((e=>Oi[e])):h,p=2==o.distr?Oi[h[1]]-Oi[h[0]]:c,g=n._values=n.values(I,n.filter(I,f,i,u,p),i,u,p);n._rotate=2==s?n.rotate(I,g,i,u):0;let m=n._size;n._size=Ae(n.size(I,g,i,e)),null!=m&&n._size!=m&&(t=!1)})),t}function Hi(e){let t=!0;return Zn.forEach(((n,i)=>{let o=n(I,i,qn,e);o!=$n[i]&&(t=!1),$n[i]=o})),t}function Yi(e){be.forEach(((t,n)=>{n>0&&(t._paths=null,e&&(1==U?(t.min=null,t.max=null):t.facets.forEach((e=>{e.min=null,e.max=null}))))}))}let Bi,Vi,Wi,Gi,qi,Ki,Zi,$i,Ji,Qi,eo,to,no=!1;function io(){no||(ft(oo),no=!0)}function oo(){un&&(!function(){let e=rt(Fe,st);for(let t in e){let n=e[t],i=ht[t];if(null!=i&&null!=i.min)at(n,i),t==Ye&&Yi(!0);else if(t!=Ye||2==U)if(0==Jn&&null==n.from){let e=n.range(I,null,null,t);n.min=e[0],n.max=e[1]}else n.min=Re,n.max=-Re}if(Jn>0){be.forEach(((n,i)=>{if(1==U){let o=n.scale,s=e[o],l=ht[o];if(0==i){let e=s.range(I,s.min,s.max,o);s.min=e[0],s.max=e[1],Qn=re(s.min,t[0]),ei=re(s.max,t[0]),ei-Qn>1&&(t[0][Qn]<s.min&&Qn++,t[0][ei]>s.max&&ei--),n.min=Oi[Qn],n.max=Oi[ei]}else n.show&&n.auto&&Ci(s,l,n,t[i],n.sorted);n.idxs[0]=Qn,n.idxs[1]=ei}else if(i>0&&n.show&&n.auto){let[o,s]=n.facets,l=o.scale,r=s.scale,[a,c]=t[i];Ci(e[l],ht[l],o,a,o.sorted),Ci(e[r],ht[r],s,c,s.sorted),n.min=s.min,n.max=s.max}}));for(let t in e){let n=e[t],i=ht[t];if(null==n.from&&(null==i||null==i.min)){let e=n.range(I,n.min==Re?null:n.min,n.max==-Re?null:n.max,t);n.min=e[0],n.max=e[1]}}}for(let t in e){let n=e[t];if(null!=n.from){let i=e[n.from];if(null==i.min)n.min=n.max=null;else{let e=n.range(I,i.min,i.max,t);n.min=e[0],n.max=e[1]}}}let n={},i=!1;for(let t in e){let o=e[t],s=Fe[t];if(s.min!=o.min||s.max!=o.max){s.min=o.min,s.max=o.max;let e=s.distr;s._min=3==e?De(s.min):4==e?Ce(s.min,s.asinh):s.min,s._max=3==e?De(s.max):4==e?Ce(s.max,s.asinh):s.max,n[t]=i=!0}}if(i){be.forEach(((e,t)=>{2==U?t>0&&n.y&&(e._paths=null):n[e.scale]&&(e._paths=null)}));for(let e in n)bn=!0,Bo("setScale",e);jn.show&&jn.left>=0&&(wn=Sn=!0)}for(let t in ht)ht[t]=null}(),un=!1),bn&&(!function(){let e=!1,t=0;for(;!e;){t++;let n=zi(t),i=Hi(t);e=t==Fn||n&&i,e||(In(I.width,I.height),yn=!0)}}(),bn=!1),yn&&(q(fe,O,nn),q(fe,A,sn),q(fe,S,en),q(fe,x,tn),q(pe,O,nn),q(pe,A,sn),q(pe,S,en),q(pe,x,tn),q(ae,S,Xt),q(ae,x,Kt),ie.width=xe(Xt*B),ie.height=xe(Kt*B),Me.forEach((e=>{let{_el:t,_show:n,_size:i,_pos:o,side:s}=e;if(null!=t)if(n){let e=s%2==1;q(t,e?"left":"top",o-(3===s||0===s?i:0)),q(t,e?"width":"height",i),q(t,e?"top":"left",e?sn:nn),q(t,e?"height":"width",e?tn:en),G(t,d)}else W(t,d)})),ni=ii=oi=li=ri=ai=ui=Ai=si=null,Ti=1,Io(!0),Bo("setSize"),yn=!1),Xt>0&&Kt>0&&(oe.clearRect(0,0,ie.width,ie.height),Bo("drawClear"),Ze.forEach((e=>e())),Bo("draw")),uo.show&&En&&(fo(uo),En=!1),jn.show&&wn&&(Oo(null,!0,!1),wn=!1),bt.show&&bt.live&&Sn&&(Ao(),Sn=!1),Q||(Q=!0,I.status=1,Bo("ready")),Li=!1,no=!1}function so(e,n){let i=Fe[e];if(null==i.from){if(0==Jn){let t=i.range(I,n.min,n.max,e);n.min=t[0],n.max=t[1]}if(n.min>n.max){let e=n.min;n.min=n.max,n.max=e}if(Jn>1&&null!=n.min&&null!=n.max&&n.max-n.min<1e-16)return;e==Ye&&2==i.distr&&Jn>0&&(n.min=re(n.min,t[0]),n.max=re(n.max,t[0]),n.min==n.max&&n.max++),ht[e]=n,un=!0,io()}}I.redraw=(e,t)=>{bn=t||!1,!1!==e?po(Ye,lt.min,lt.max):io()},I.setScale=so;let lo=!1;const ro=jn.drag;let ao=ro.x,co=ro.y;jn.show&&(jn.x&&(Bi=Z(f,pe)),jn.y&&(Vi=Z(p,pe)),0==lt.ori?(Wi=Bi,Gi=Vi):(Wi=Vi,Gi=Bi),eo=jn.left,to=jn.top);const uo=I.select=at({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),ho=uo.show?Z(h,uo.over?pe:fe):null;function fo(e,t){if(uo.show){for(let t in e)uo[t]=e[t],t in ko&&q(ho,t,e[t]);!1!==t&&Bo("setSelect")}}function po(e,t,n){so(e,{min:t,max:n})}function go(e,t,n,i){null!=t.focus&&function(e){if(e!=vo){let t=null==e,n=1!=Yn.alpha;be.forEach(((i,o)=>{let s=t||0==o||o==e;i._focus=t?null:s,n&&function(e,t){be[e].alpha=t,jn.show&&Wn[e]&&(Wn[e].style.opacity=t);wt&&Dt[e]&&(Dt[e].style.opacity=t)}(o,s?1:Yn.alpha)})),vo=e,n&&io()}}(e),null!=t.show&&be.forEach(((n,i)=>{i>0&&(e==i||null==e)&&(n.show=t.show,function(e,t){let n=be[e],i=wt?Dt[e]:null;n.show?i&&G(i,d):(i&&W(i,d),Wn.length>1&&J(Wn[e],-10,-10,en,tn))}(i,t.show),po(2==U?n.facets[1].scale:n.scale,null,null),io())})),!1!==n&&Bo("setSeries",e,t),i&&Ko("setSeries",I,e,t)}let mo,_o,vo;I.setSelect=fo,I.setSeries=go,I.addBand=function(e,t){e.fill=Ue(e.fill||null),e.dir=me(e.dir,-1),t=null==t?Ne.length:t,Ne.splice(t,0,e)},I.setBand=function(e,t){at(Ne[e],t)},I.delBand=function(e){null==e?Ne.length=0:Ne.splice(e,1)};const yo={focus:!0};function bo(e,t,n){let i=Fe[t];n&&(e=e/B-(1==i.ori?sn:nn));let o=en;1==i.ori&&(o=tn,e=o-e),-1==i.dir&&(e=o-e);let s=i._min,l=s+(i._max-s)*(e/o),r=i.distr;return 3==r?Le(10,l):4==r?ke(l,i.asinh):l}function wo(e,t){q(ho,O,uo.left=e),q(ho,S,uo.width=t)}function Eo(e,t){q(ho,A,uo.top=e),q(ho,x,uo.height=t)}wt&&Bn&&Nt(F,xt,(e=>{jn._lock||(Xn(e),null!=vo&&go(null,yo,!0,Wo.setSeries))})),I.valToIdx=e=>re(e,t[0]),I.posToIdx=function(e,n){return re(bo(e,Ye,n),t[0],Qn,ei)},I.posToVal=bo,I.valToPos=(e,t,n)=>0==Fe[t].ori?Y(e,Fe[t],n?an:en,n?ln:0):V(e,Fe[t],n?cn:tn,n?rn:0),I.batch=function(e){e(I),io()},I.setCursor=(e,t,n)=>{eo=e.left,to=e.top,Oo(null,t,n)};let So=0==lt.ori?wo:Eo,xo=1==lt.ori?wo:Eo;function Ao(e,t){null!=e&&(e.idxs?e.idxs.forEach(((e,t)=>{yt[t]=e})):nt(e.idx)||yt.fill(e.idx),bt.idx=yt[0]);for(let n=0;n<be.length;n++)(n>0||1==U&&!kt)&&To(n,yt[n]);wt&&bt.live&&function(){if(wt&&bt.live)for(let e=2==U?1:0;e<be.length;e++){if(0==e&&kt)continue;let t=bt.values[e],n=0;for(let i in t)Mt[e][n++].firstChild.nodeValue=t[i]}}(),Sn=!1,!1!==t&&Bo("setLegend")}function To(e,n){var i;let o,s=be[e],l=0==e&&2==ct?Oi:t[e];kt?o=null!==(i=s.values(I,e,n))&&void 0!==i?i:Ct:(o=s.value(I,null==n?null:l[n],e,n),o=null==o?Ct:{_:o}),bt.values[e]=o}function Oo(e,n,i){let o;Ji=eo,Qi=to,[eo,to]=jn.move(I,eo,to),jn.show&&(Wi&&J(Wi,xe(eo),0,en,tn),Gi&&J(Gi,0,xe(to),en,tn));let s=Qn>ei;mo=Re;let l=0==lt.ori?en:tn,r=1==lt.ori?en:tn;if(eo<0||0==Jn||s){o=null;for(let e=0;e<be.length;e++)e>0&&Wn.length>1&&J(Wn[e],-10,-10,en,tn);Bn&&go(null,yo,!0,null==e&&Wo.setSeries),bt.live&&(yt.fill(o),Sn=!0)}else{let e,n,i;1==U&&(e=0==lt.ori?eo:to,n=bo(e,Ye),o=re(n,t[0],Qn,ei),i=ut(t[0][o],lt,l,0));for(let s=2==U?1:0;s<be.length;s++){let e=be[s],a=yt[s],c=1==U?t[s][a]:t[s][1][a],u=jn.dataIdx(I,s,o,n),d=1==U?t[s][u]:t[s][1][u];Sn=Sn||d!=c||u!=a,yt[s]=u;let h=Ve(u==o?i:ut(1==U?t[0][u]:t[s][0][u],lt,l,0),1);if(s>0&&e.show){let t,n,i=null==d?-10:Ve(dt(d,1==U?Fe[e.scale]:Fe[e.facets[1].scale],r,0),1);if(Bn&&i>=0&&1==U){let t=Ee(i-to);if(t<mo){let n=Yn.bias;if(0!=n){let i=bo(1==lt.ori?eo:to,e.scale),o=i>=0?1:-1;o==(d>=0?1:-1)&&(1==o?1==n?d>=i:d<=i:1==n?d<=i:d>=i)&&(mo=t,_o=s)}else mo=t,_o=s}}if(0==lt.ori?(t=h,n=i):(t=i,n=h),Sn&&Wn.length>1){ee(Wn[s],jn.points.fill(I,s),jn.points.stroke(I,s));let e,i,o,l,r=!0,a=jn.points.bbox;if(null!=a){r=!1;let t=a(I,s);o=t.left,l=t.top,e=t.width,i=t.height}else o=t,l=n,e=i=jn.points.size(I,s);ne(Wn[s],e,i,r),J(Wn[s],o,l,en,tn)}}}}if(jn.idx=o,jn.left=eo,jn.top=to,Sn&&(bt.idx=o,Ao()),uo.show&&lo)if(null!=e){let[t,n]=Wo.scales,[i,o]=Wo.match,[s,a]=e.cursor.sync.scales,c=e.cursor.drag;if(ao=c._x,co=c._y,ao||co){let c,u,d,h,f,{left:p,top:g,width:m,height:_}=e.select,v=e.scales[t].ori,y=e.posToVal,b=null!=t&&i(t,s),w=null!=n&&o(n,a);b&&ao?(0==v?(c=p,u=m):(c=g,u=_),d=Fe[t],h=ut(y(c,s),d,l,0),f=ut(y(c+u,s),d,l,0),So(Te(h,f),Ee(f-h))):So(0,l),w&&co?(1==v?(c=p,u=m):(c=g,u=_),d=Fe[n],h=dt(y(c,a),d,r,0),f=dt(y(c+u,a),d,r,0),xo(Te(h,f),Ee(f-h))):xo(0,r)}else Co()}else{let e=Ee(Ji-qi),t=Ee(Qi-Ki);if(1==lt.ori){let n=e;e=t,t=n}ao=ro.x&&e>=ro.dist,co=ro.y&&t>=ro.dist;let n,i,o=ro.uni;null!=o?ao&&co&&(ao=e>=o,co=t>=o,ao||co||(t>e?co=!0:ao=!0)):ro.x&&ro.y&&(ao||co)&&(ao=co=!0),ao&&(0==lt.ori?(n=Zi,i=eo):(n=$i,i=to),So(Te(n,i),Ee(i-n)),co||xo(0,r)),co&&(1==lt.ori?(n=Zi,i=eo):(n=$i,i=to),xo(Te(n,i),Ee(i-n)),ao||So(0,l)),ao||co||(So(0,0),xo(0,0))}if(ro._x=ao,ro._y=co,null==e){if(i){if(null!=Go){let[e,t]=Wo.scales;Wo.values[0]=null!=e?bo(0==lt.ori?eo:to,e):null,Wo.values[1]=null!=t?bo(1==lt.ori?eo:to,t):null}Ko(M,I,eo,to,en,tn,o)}if(Bn){let e=i&&Wo.setSeries,t=Yn.prox;null==vo?mo<=t&&go(_o,yo,!0,e):mo>t?go(null,yo,!0,e):_o!=vo&&go(_o,yo,!0,e)}}!1!==n&&Bo("setCursor")}I.setLegend=Ao;let Lo=null;function Io(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]?Lo=null:(Lo=pe.getBoundingClientRect(),Bo("syncRect",Lo))}function Do(e,t,n,i,o,s,l){jn._lock||lo&&null!=e&&0==e.movementX&&0==e.movementY||(Mo(e,t,n,i,o,s,l,!1,null!=e),null!=e?Oo(null,!0,!0):Oo(t,!0,!1))}function Mo(e,t,n,i,o,s,l,r,a){if(null==Lo&&Io(!1),Xn(e),null!=e)n=e.clientX-Lo.left,i=e.clientY-Lo.top;else{if(n<0||i<0)return eo=-10,void(to=-10);let[e,l]=Wo.scales,r=t.cursor.sync,[a,c]=r.values,[u,d]=r.scales,[h,f]=Wo.match,p=t.axes[0].side%2==1,g=0==lt.ori?en:tn,m=1==lt.ori?en:tn,_=p?s:o,v=p?o:s,y=p?i:n,b=p?n:i;if(n=null!=u?h(e,u)?$(a,Fe[e],g,0):-10:g*(y/_),i=null!=d?f(l,d)?$(c,Fe[l],m,0):-10:m*(b/v),1==lt.ori){let e=n;n=i,i=e}}a&&((n<=1||n>=en-1)&&(n=Be(n,en)),(i<=1||i>=tn-1)&&(i=Be(i,tn))),r?(qi=n,Ki=i,[Zi,$i]=jn.move(I,n,i)):(eo=n,to=i)}Object.defineProperty(I,"rect",{get:()=>(null==Lo&&Io(!1),Lo)});const ko={width:0,height:0,left:0,top:0};function Co(){fo(ko,!1)}let Ro,Fo,Po,Uo;function No(e,t,n,i,o,s,l){lo=!0,ao=co=ro._x=ro._y=!1,Mo(e,t,n,i,o,s,0,!0,!1),null!=e&&(Nt(C,z,jo,!1),Ko(k,I,Zi,$i,en,tn,null));let{left:r,top:a,width:c,height:u}=uo;Ro=r,Fo=a,Po=c,Uo=u,Co()}function jo(e,t,n,i,o,s,l){lo=ro._x=ro._y=!1,Mo(e,t,n,i,o,s,0,!1,!0);let{left:r,top:a,width:c,height:u}=uo,d=c>0||u>0,h=Ro!=r||Fo!=a||Po!=c||Uo!=u;if(d&&h&&fo(uo),ro.setScale&&d&&h){let e=r,t=c,n=a,i=u;if(1==lt.ori&&(e=a,t=u,n=r,i=c),ao&&po(Ye,bo(e,Ye),bo(e+t,Ye)),co)for(let o in Fe){let e=Fe[o];o!=Ye&&null==e.from&&e.min!=Re&&po(o,bo(n+i,o),bo(n,o))}Co()}else jn.lock&&(jn._lock=!jn._lock,jn._lock||Oo(null,!0,!1));null!=e&&(jt(C,z),Ko(C,I,eo,to,en,tn,null))}function Xo(e,t,n,i,o,s,l){jn._lock||(Xn(e),Di(),Co(),null!=e&&Ko(P,I,eo,to,en,tn,null))}function zo(){Me.forEach(xi),Ln(I.width,I.height,!0)}se(N,H,zo);const Ho={};Ho.mousedown=No,Ho.mousemove=Do,Ho.mouseup=jo,Ho.dblclick=Xo,Ho.setSeries=(e,t,n,i)=>{-1!=(n=(0,Wo.match[2])(I,t,n))&&go(n,i,!0,!1)},jn.show&&(Nt(k,pe,No),Nt(M,pe,Do),Nt(R,pe,(e=>{Xn(e),Io(!1)})),Nt(F,pe,(function(e,t,n,i,o,s,l){if(jn._lock)return;Xn(e);let r=lo;if(lo){let e,t,n=!0,i=!0,o=10;0==lt.ori?(e=ao,t=co):(e=co,t=ao),e&&t&&(n=eo<=o||eo>=en-o,i=to<=o||to>=tn-o),e&&n&&(eo=eo<Zi?0:en),t&&i&&(to=to<$i?0:tn),Oo(null,!0,!0),lo=!1}eo=-10,to=-10,Oo(null,!0,!0),r&&(lo=r)})),Nt(P,pe,Xo),ci.add(I),I.syncRect=Io);const Yo=I.hooks=e.hooks||{};function Bo(e,t,n){e in Yo&&Yo[e].forEach((e=>{e.call(null,I,t,n)}))}(e.plugins||[]).forEach((e=>{for(let t in e.hooks)Yo[t]=(Yo[t]||[]).concat(e.hooks[t])}));const Vo=(e,t,n)=>n,Wo=at({key:null,setSeries:!1,filters:{pub:ze,sub:ze},scales:[Ye,be[1]?be[1].scale:null],match:[He,He,Vo],values:[null,null]},jn.sync);2==Wo.match.length&&Wo.match.push(Vo),jn.sync=Wo;const Go=Wo.key,qo=Pn(Go);function Ko(e,t,n,i,o,s,l){Wo.filters.pub(e,t,n,i,o,s,l)&&qo.pub(e,t,n,i,o,s,l)}function Zo(){Bo("init",e,t),Ii(t||e.data,!1),ht[Ye]?so(Ye,ht[Ye]):Di(),En=uo.show&&(uo.width>0||uo.height>0),wn=Sn=!0,Ln(e.width,e.height)}return qo.sub(I),I.pub=function(e,t,n,i,o,s,l){Wo.filters.sub(e,t,n,i,o,s,l)&&Ho[e](null,t,n,i,o,s,l)},I.destroy=function(){var e;qo.unsub(I),ci.delete(I),Ut.clear(),le(N,H,zo),te.remove(),null===(e=xt)||void 0===e||e.remove(),Bo("destroy")},be.forEach(Gn),Me.forEach((function(e,t){if(e._show=e.show,e.show){let n=e.side%2,i=Fe[e.scale];null==i&&(e.scale=n?be[1].scale:Ye,i=Fe[e.scale]);let o=i.time;e.size=Ue(e.size),e.space=Ue(e.space),e.rotate=Ue(e.rotate),et(e.incrs)&&e.incrs.forEach((e=>{!qe.has(e)&&qe.set(e,Ke(e))})),e.incrs=Ue(e.incrs||(2==i.distr?Lt:o?1==ye?zt:Bt:It)),e.splits=Ue(e.splits||(o&&1==i.distr?mt:3==i.distr?_n:4==i.distr?vn:mn)),e.stroke=Ue(e.stroke),e.grid.stroke=Ue(e.grid.stroke),e.ticks.stroke=Ue(e.ticks.stroke),e.border.stroke=Ue(e.border.stroke);let s=e.values;e.values=et(s)&&!et(s[0])?Ue(s):o?et(s)?qt(pt,Gt(s,gt)):it(s)?function(e,t){let n=Et(t);return(t,i,o,s,l)=>i.map((t=>n(e(t))))}(pt,s):s||_t:s||gn,e.filter=Ue(e.filter||(i.distr>=3&&10==i.log?xn:3==i.distr&&2==i.log?An:je)),e.font=Si(e.font),e.labelFont=Si(e.labelFont),e._size=e.size(I,null,t,0),e._space=e._rotate=e._incrs=e._found=e._splits=e._values=null,e._size>0&&(qn[t]=!0,e._el=Z(u,ae))}})),n?n instanceof HTMLElement?(n.appendChild(te),Zo()):n(I,Zo):Zo(),I}Ai.assign=at,Ai.fmtNum=ye,Ai.rangeNum=ge,Ai.rangeLog=ce,Ai.rangeAsinh=ue,Ai.orient=jn,Ai.pxRatio=B,Ai.join=function(e,t){if(function(e){let t=e[0][0],n=t.length;for(let i=1;i<e.length;i++){let o=e[i][0];if(o.length!=n)return!1;if(o!=t)for(let e=0;e<n;e++)if(o[e]!=t[e])return!1}return!0}(e)){let t=e[0].slice();for(let n=1;n<e.length;n++)t.push(...e[n].slice(1));return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100;const n=e.length;if(n<=1)return!0;let i=0,o=n-1;for(;i<=o&&null==e[i];)i++;for(;o>=i&&null==e[o];)o--;if(o<=i)return!0;const s=Oe(1,Se((o-i+1)/t));for(let l=e[i],r=i+s;r<=o;r+=s){const t=e[r];if(null!=t){if(t<=l)return!1;l=t}}return!0}(t[0])||(t=function(e){let t=e[0],n=t.length,i=Array(n);for(let s=0;s<i.length;s++)i[s]=s;i.sort(((e,n)=>t[e]-t[n]));let o=[];for(let s=0;s<e.length;s++){let t=e[s],l=Array(n);for(let e=0;e<n;e++)l[e]=t[i[e]];o.push(l)}return o}(t)),t}let n=new Set;for(let l=0;l<e.length;l++){let t=e[l][0],i=t.length;for(let e=0;e<i;e++)n.add(t[e])}let i=[Array.from(n).sort(((e,t)=>e-t))],o=i[0].length,s=new Map;for(let l=0;l<o;l++)s.set(i[0][l],l);for(let l=0;l<e.length;l++){let n=e[l],r=n[0];for(let e=1;e<n.length;e++){let a=n[e],c=Array(o).fill(void 0),u=t?t[l][e]:ut,d=[];for(let e=0;e<a.length;e++){let t=a[e],n=s.get(r[e]);null===t?u!=ct&&(c[n]=t,u==dt&&d.push(n)):c[n]=t}ht(c,d,o),i.push(c)}}return i},Ai.fmtDate=Et,Ai.tzDate=function(e,t){let n;return"UTC"==t||"Etc/UTC"==t?n=new Date(+e+6e4*e.getTimezoneOffset()):t==St?n=e:(n=new Date(e.toLocaleString("en-US",{timeZone:t})),n.setMilliseconds(e.getMilliseconds())),n},Ai.sync=Pn;{Ai.addGap=function(e,t,n){let i=e[e.length-1];i&&i[0]==t?i[1]=n:e.push([t,n])},Ai.clipGaps=Yn;let e=Ai.paths={points:ii};e.linear=ri,e.stepped=function(e){const t=me(e.align,1),n=me(e.ascDesc,!1),i=me(e.alignGaps,0),o=me(e.extend,!1);return(e,s,l,r)=>jn(e,s,((a,c,u,d,h,f,p,g,m,_,v)=>{let y=a.pxRound,{left:b,width:w}=e.bbox,E=e=>y(f(e,d,_,g)),S=e=>y(p(e,h,v,m)),x=0==d.ori?Kn:Zn;const A={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Un},T=A.stroke,O=d.dir*(0==d.ori?1:-1);l=ae(u,l,r,1),r=ae(u,l,r,-1);let L=S(u[1==O?l:r]),I=E(c[1==O?l:r]),D=I,M=I;o&&-1==t&&(M=b,x(T,M,L)),x(T,I,L);for(let e=1==O?l:r;e>=l&&e<=r;e+=O){let n=u[e];if(null==n)continue;let i=E(c[e]),o=S(n);1==t?x(T,i,L):x(T,D,o),x(T,i,o),L=o,D=i}let k=D;o&&1==t&&(k=b+w,x(T,k,L));let[C,R]=Xn(e,s);if(null!=a.fill||0!=C){let t=A.fill=new Path2D(T),n=S(a.fillTo(e,s,a.min,a.max,C));x(t,k,n),x(t,M,n)}if(!a.spanGaps){let o=[];o.push(...Bn(c,u,l,r,O,E,i));let h=a.width*B/2,f=n||1==t?h:-h,p=n||-1==t?-h:h;o.forEach((e=>{e[0]+=f,e[1]+=p})),A.gaps=o=a.gaps(e,s,l,r,o),A.clip=Yn(o,d.ori,g,m,_,v)}return 0!=R&&(A.band=2==R?[Hn(e,s,l,r,T,-1),Hn(e,s,l,r,T,1)]:Hn(e,s,l,r,T,R)),A}))},e.bars=function(e){const t=me((e=e||$e).size,[.6,Re,1]),n=e.align||0,i=(e.gap||0)*B;let o=e.radius;o=null==o?[0,0]:"number"==typeof o?[o,0]:o;const s=Ue(o),l=1-t[0],r=me(t[1],Re)*B,a=me(t[2],1)*B,c=me(e.disp,$e),u=me(e.each,(e=>{})),{fill:d,stroke:h}=c;return(e,t,o,f)=>jn(e,t,((p,g,m,_,v,y,b,w,E,S,x)=>{let A,T,O=p.pxRound;0==_.ori?[A,T]=s(e,t):[T,A]=s(e,t);const L=_.dir*(0==_.ori?1:-1),I=v.dir*(1==v.ori?1:-1);let D,M,k=0==_.ori?$n:Jn,C=0==_.ori?u:(e,t,n,i,o,s,l)=>{u(e,t,n,o,i,l,s)},[R,F]=Xn(e,t),P=3==v.distr?1==R?v.max:v.min:0,U=b(P,v,x,E),N=O(p.width*B),j=!1,X=null,z=null,H=null,Y=null;null==d||0!=N&&null==h||(j=!0,X=d.values(e,t,o,f),z=new Map,new Set(X).forEach((e=>{null!=e&&z.set(e,new Path2D)})),N>0&&(H=h.values(e,t,o,f),Y=new Map,new Set(H).forEach((e=>{null!=e&&Y.set(e,new Path2D)}))));let{x0:V,size:W}=c,G=!0;if(null!=V&&null!=W){g=V.values(e,t,o,f),2==V.unit&&(g=g.map((t=>e.posToVal(w+t*S,_.key,!0))));let n=W.values(e,t,o,f);M=2==W.unit?n[0]*S:y(n[0],_,S,w)-y(0,_,S,w),N>=M/2&&(N=0),M=O(Pe(M-N,a,r)),D=1==L?-N/2:M+N/2}else{let e=S;if(g.length>1){let t=null;for(let n=0,i=1/0;n<g.length;n++)if(void 0!==m[n]){if(null!=t){let o=Ee(g[n]-g[t]);o<i&&(i=o,e=Ee(y(g[n],_,S,w)-y(g[t],_,S,w)))}t=n}}let t=e*l;M=e-t-i,N>=M/2&&(N=0),t+i<5&&(O=Ne),M=O(Pe(e-t,a,r)-N-i),D=(0==n?M/2:n==L?0:M)-n*L*i/2,M+N>e&&(G=!1)}const q={stroke:null,fill:null,clip:null,band:null,gaps:null,flags:Un|Nn};let K;0!=F&&(q.band=new Path2D,K=O(b(1==F?v.max:v.min,v,x,E)));const Z=j?null:new Path2D,$=q.band;let{y0:J,y1:Q}=c,ee=null;null!=J&&null!=Q&&(m=Q.values(e,t,o,f),ee=J.values(e,t,o,f));let te=A*M,ne=T*M;for(let n=1==L?o:f;n>=o&&n<=f;n+=L){let i=m[n];if(void 0===i)continue;let o=y(2!=_.distr||null!=c?g[n]:n,_,S,w),s=b(me(i,P),v,x,E);null!=ee&&null!=i&&(U=b(ee[n],v,x,E));let l=O(o-D),r=O(Oe(s,U)),a=O(Te(s,U)),u=r-a;if(null!=i){let o=i<0?ne:te,s=i<0?te:ne;j?(N>0&&null!=H[n]&&k(Y.get(H[n]),l,a+Se(N/2),M,Oe(0,u-N),o,s),null!=X[n]&&k(z.get(X[n]),l,a+Se(N/2),M,Oe(0,u-N),o,s)):k(Z,l,a+Se(N/2),M,Oe(0,u-N),o,s),C(e,t,n,l-N/2,a,M+N,u)}0==F||null==i&&!G||(I*F==1?(r=a,a=K):(a=r,r=K),u=r-a,k($,l-N/2,a,M+N,Oe(0,u),0,0))}if(N>0)q.stroke=j?Y:Z;else if(!j){var ie;q._fill=0==p.width?p._fill:null!==(ie=p._stroke)&&void 0!==ie?ie:p._fill,q.width=0}return q.fill=j?z:Z,q}))},e.spline=function(e){return function(e,t){const n=me(null===t||void 0===t?void 0:t.alignGaps,0);return(t,i,o,s)=>jn(t,i,((l,r,a,c,u,d,h,f,p,g,m)=>{let _,v,y,b=l.pxRound,w=e=>b(d(e,c,g,f)),E=e=>b(h(e,u,m,p));0==c.ori?(_=Gn,y=Kn,v=ti):(_=qn,y=Zn,v=ni);const S=c.dir*(0==c.ori?1:-1);o=ae(a,o,s,1),s=ae(a,o,s,-1);let x=w(r[1==S?o:s]),A=x,T=[],O=[];for(let e=1==S?o:s;e>=o&&e<=s;e+=S)if(null!=a[e]){let t=w(r[e]);T.push(A=t),O.push(E(a[e]))}const L={stroke:e(T,O,_,y,v,b),fill:null,clip:null,band:null,gaps:null,flags:Un},I=L.stroke;let[D,M]=Xn(t,i);if(null!=l.fill||0!=D){let e=L.fill=new Path2D(I),n=E(l.fillTo(t,i,l.min,l.max,D));y(e,A,n),y(e,x,n)}if(!l.spanGaps){let e=[];e.push(...Bn(r,a,o,s,S,w,n)),L.gaps=e=l.gaps(t,i,o,s,e),L.clip=Yn(e,c.ori,f,p,g,m)}return 0!=M&&(L.band=2==M?[Hn(t,i,o,s,I,-1),Hn(t,i,o,s,I,1)]:Hn(t,i,o,s,I,M)),L}))}(ai,e)}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7661.dd104c3c.chunk.js b/ydb/core/viewer/monitoring/static/js/7661.dd104c3c.chunk.js deleted file mode 100644 index 5f33ae2a519b..000000000000 --- a/ydb/core/viewer/monitoring/static/js/7661.dd104c3c.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7661],{77661:function(e,n,t){t.r(n),t.d(n,{conf:function(){return s},language:function(){return o}});var s={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*//\\s*#region\\b|^\\s*\\(\\*\\s*#region(.*)\\*\\)"),end:new RegExp("^\\s*//\\s*#endregion\\b|^\\s*\\(\\*\\s*#endregion\\s*\\*\\)")}}},o={defaultToken:"",tokenPostfix:".fs",keywords:["abstract","and","atomic","as","assert","asr","base","begin","break","checked","component","const","constraint","constructor","continue","class","default","delegate","do","done","downcast","downto","elif","else","end","exception","eager","event","external","extern","false","finally","for","fun","function","fixed","functor","global","if","in","include","inherit","inline","interface","internal","land","lor","lsl","lsr","lxor","lazy","let","match","member","mod","module","mutable","namespace","method","mixin","new","not","null","of","open","or","object","override","private","parallel","process","protected","pure","public","rec","return","static","sealed","struct","sig","then","to","true","tailcall","trait","try","type","upcast","use","val","void","virtual","volatile","when","while","with","yield"],symbols:/[=><!~?:&|+\-*\^%;\.,\/]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/[uU]?[yslnLI]?/,floatsuffix:/[fFmM]?/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/\[<.*>\]/,"annotation"],[/^#(if|else|endif)/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0x[0-9a-fA-F]+LF/,"number.float"],[/0x[0-9a-fA-F]+(@integersuffix)/,"number.hex"],[/0b[0-1]+(@integersuffix)/,"number.bin"],[/\d+(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"""/,"string",'@string."""'],[/"/,"string",'@string."'],[/\@"/,{token:"string.quote",next:"@litstring"}],[/'[^\\']'B?/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\(\*(?!\))/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^*(]+/,"comment"],[/\*\)/,"comment","@pop"],[/\*/,"comment"],[/\(\*\)/,"comment"],[/\(/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/("""|"B?)/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]],litstring:[[/[^"]+/,"string"],[/""/,"string.escape"],[/"/,{token:"string.quote",next:"@pop"}]]}}}}]); -//# sourceMappingURL=7661.dd104c3c.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7664.9f9f696d.chunk.js b/ydb/core/viewer/monitoring/static/js/7664.9f9f696d.chunk.js deleted file mode 100644 index ee53b6b36ba8..000000000000 --- a/ydb/core/viewer/monitoring/static/js/7664.9f9f696d.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7664],{27664:function(t,e,r){r.r(e),r.d(e,{conf:function(){return s},language:function(){return n}});var s={brackets:[],autoClosingPairs:[],surroundingPairs:[]},n={keywords:[],typeKeywords:[],tokenPostfix:".csp",operators:[],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/child-src/,"string.quote"],[/connect-src/,"string.quote"],[/default-src/,"string.quote"],[/font-src/,"string.quote"],[/frame-src/,"string.quote"],[/img-src/,"string.quote"],[/manifest-src/,"string.quote"],[/media-src/,"string.quote"],[/object-src/,"string.quote"],[/script-src/,"string.quote"],[/style-src/,"string.quote"],[/worker-src/,"string.quote"],[/base-uri/,"string.quote"],[/plugin-types/,"string.quote"],[/sandbox/,"string.quote"],[/disown-opener/,"string.quote"],[/form-action/,"string.quote"],[/frame-ancestors/,"string.quote"],[/report-uri/,"string.quote"],[/report-to/,"string.quote"],[/upgrade-insecure-requests/,"string.quote"],[/block-all-mixed-content/,"string.quote"],[/require-sri-for/,"string.quote"],[/reflected-xss/,"string.quote"],[/referrer/,"string.quote"],[/policy-uri/,"string.quote"],[/'self'/,"string.quote"],[/'unsafe-inline'/,"string.quote"],[/'unsafe-eval'/,"string.quote"],[/'strict-dynamic'/,"string.quote"],[/'unsafe-hashed-attributes'/,"string.quote"]]}}}}]); -//# sourceMappingURL=7664.9f9f696d.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7684.a3920b72.chunk.js b/ydb/core/viewer/monitoring/static/js/7684.a3920b72.chunk.js new file mode 100644 index 000000000000..461f6053123b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7684.a3920b72.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7684],{77684:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"tg",weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),weekStart:1,weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7768.2adb4751.chunk.js b/ydb/core/viewer/monitoring/static/js/7768.2adb4751.chunk.js deleted file mode 100644 index 328cf663187c..000000000000 --- a/ydb/core/viewer/monitoring/static/js/7768.2adb4751.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7768],{37768:function(e,n,s){s.r(n),s.d(n,{conf:function(){return t},language:function(){return o}});var t={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"#",blockComment:["<#","#>"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},o={defaultToken:"",ignoreCase:!0,tokenPostfix:".ps1",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],keywords:["begin","break","catch","class","continue","data","define","do","dynamicparam","else","elseif","end","exit","filter","finally","for","foreach","from","function","if","in","param","process","return","switch","throw","trap","try","until","using","var","while","workflow","parallel","sequence","inlinescript","configuration"],helpKeywords:/SYNOPSIS|DESCRIPTION|PARAMETER|EXAMPLE|INPUTS|OUTPUTS|NOTES|LINK|COMPONENT|ROLE|FUNCTIONALITY|FORWARDHELPTARGETNAME|FORWARDHELPCATEGORY|REMOTEHELPRUNSPACE|EXTERNALHELP/,symbols:/[=><!~?&%|+\-*\/\^;\.,]+/,escapes:/`(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_][\w-]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":""}}],[/[ \t\r\n]+/,""],[/^:\w*/,"metatag"],[/\$(\{((global|local|private|script|using):)?[\w]+\}|((global|local|private|script|using):)?[\w]+)/,"variable"],[/<#/,"comment","@comment"],[/#.*$/,"comment"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+?/,"number"],[/[;,.]/,"delimiter"],[/\@"/,"string",'@herestring."'],[/\@'/,"string","@herestring.'"],[/"/,{cases:{"@eos":"string","@default":{token:"string",next:'@string."'}}}],[/'/,{cases:{"@eos":"string","@default":{token:"string",next:"@string.'"}}}]],string:[[/[^"'\$`]+/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/@escapes/,{cases:{"@eos":{token:"string.escape",next:"@popall"},"@default":"string.escape"}}],[/`./,{cases:{"@eos":{token:"string.escape.invalid",next:"@popall"},"@default":"string.escape.invalid"}}],[/\$[\w]+$/,{cases:{'$S2=="':{token:"variable",next:"@popall"},"@default":{token:"string",next:"@popall"}}}],[/\$[\w]+/,{cases:{'$S2=="':"variable","@default":"string"}}],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}}}]],herestring:[[/^\s*(["'])@/,{cases:{"$1==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/[^\$`]+/,"string"],[/@escapes/,"string.escape"],[/`./,"string.escape.invalid"],[/\$[\w]+/,{cases:{'$S2=="':"variable","@default":"string"}}]],comment:[[/[^#\.]+/,"comment"],[/#>/,"comment","@pop"],[/(\.)(@helpKeywords)(?!\w)/,{token:"comment.keyword.$2"}],[/[\.#]/,"comment"]]}}}}]); -//# sourceMappingURL=7768.2adb4751.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7779.9d9b07ae.chunk.js b/ydb/core/viewer/monitoring/static/js/7779.9d9b07ae.chunk.js new file mode 100644 index 000000000000..d3ff08da9cca --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7779.9d9b07ae.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7779],{77779:function(_,e,d){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var d=e(_),M={name:"ko",weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),ordinal:function(_){return _+"\uc77c"},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},meridiem:function(_){return _<12?"\uc624\uc804":"\uc624\ud6c4"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"}};return d.default.locale(M,null,!0),M}(d(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7803.a56cfca6.chunk.js b/ydb/core/viewer/monitoring/static/js/7803.a56cfca6.chunk.js new file mode 100644 index 000000000000..017d5727f940 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7803.a56cfca6.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7803],{67803:function(e,n,_){e.exports=function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=n(e),i={name:"fy",weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),weekStart:1,weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien min\xfat",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"}};return _.default.locale(i,null,!0),i}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/785.d2eae69c.chunk.js b/ydb/core/viewer/monitoring/static/js/785.d2eae69c.chunk.js new file mode 100644 index 000000000000..1aaea61aa008 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/785.d2eae69c.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 785.d2eae69c.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[785],{20785:(e,s,t)=>{t.r(s),t.d(s,{conf:()=>o,language:()=>E});var o={comments:{blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"(*",close:"*)"},{open:"<*",close:"*>"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}]},E={defaultToken:"",tokenPostfix:".m3",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["AND","ANY","ARRAY","AS","BEGIN","BITS","BRANDED","BY","CASE","CONST","DIV","DO","ELSE","ELSIF","END","EVAL","EXCEPT","EXCEPTION","EXIT","EXPORTS","FINALLY","FOR","FROM","GENERIC","IF","IMPORT","IN","INTERFACE","LOCK","LOOP","METHODS","MOD","MODULE","NOT","OBJECT","OF","OR","OVERRIDES","PROCEDURE","RAISE","RAISES","READONLY","RECORD","REF","REPEAT","RETURN","REVEAL","SET","THEN","TO","TRY","TYPE","TYPECASE","UNSAFE","UNTIL","UNTRACED","VALUE","VAR","WHILE","WITH"],reservedConstNames:["ABS","ADR","ADRSIZE","BITSIZE","BYTESIZE","CEILING","DEC","DISPOSE","FALSE","FIRST","FLOAT","FLOOR","INC","ISTYPE","LAST","LOOPHOLE","MAX","MIN","NARROW","NEW","NIL","NUMBER","ORD","ROUND","SUBARRAY","TRUE","TRUNC","TYPECODE","VAL"],reservedTypeNames:["ADDRESS","ANY","BOOLEAN","CARDINAL","CHAR","EXTENDED","INTEGER","LONGCARD","LONGINT","LONGREAL","MUTEX","NULL","REAL","REFANY","ROOT","TEXT"],operators:["+","-","*","/","&","^","."],relations:["=","#","<","<=",">",">=","<:",":"],delimiters:["|","..","=>",",",";",":="],symbols:/[>=<#.,:;+\-*/&^]+/,escapes:/\\(?:[\\fnrt"']|[0-7]{3})/,tokenizer:{root:[[/_\w*/,"invalid"],[/[a-zA-Z][a-zA-Z0-9_]*/,{cases:{"@keywords":{token:"keyword.$0"},"@reservedConstNames":{token:"constant.reserved.$0"},"@reservedTypeNames":{token:"type.reserved.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[0-9]+\.[0-9]+(?:[DdEeXx][\+\-]?[0-9]+)?/,"number.float"],[/[0-9]+(?:\_[0-9a-fA-F]+)?L?/,"number"],[/@symbols/,{cases:{"@operators":"operators","@relations":"operators","@delimiters":"delimiter","@default":"invalid"}}],[/'[^\\']'/,"string.char"],[/(')(@escapes)(')/,["string.char","string.escape","string.char"]],[/'/,"invalid"],[/"([^"\\]|\\.)*$/,"invalid"],[/"/,"string.text","@text"]],text:[[/[^\\"]+/,"string.text"],[/@escapes/,"string.escape"],[/\\./,"invalid"],[/"/,"string.text","@pop"]],comment:[[/\(\*/,"comment","@push"],[/\*\)/,"comment","@pop"],[/./,"comment"]],pragma:[[/<\*/,"keyword.pragma","@push"],[/\*>/,"keyword.pragma","@pop"],[/./,"keyword.pragma"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/<\*/,"keyword.pragma","@pragma"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/785.d2eae69c.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/785.d2eae69c.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/785.d2eae69c.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/7953.eb2256ce.chunk.js b/ydb/core/viewer/monitoring/static/js/7953.eb2256ce.chunk.js deleted file mode 100644 index e1db6a2598d6..000000000000 --- a/ydb/core/viewer/monitoring/static/js/7953.eb2256ce.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7953],{27953:function(e,n,t){t.r(n),t.d(n,{conf:function(){return i},language:function(){return o}});var i={comments:{lineComment:"*"},brackets:[["[","]"],["(",")"]]},o={defaultToken:"invalid",ignoreCase:!0,tokenPostfix:".abap",keywords:["abap-source","abbreviated","abstract","accept","accepting","according","activation","actual","add","add-corresponding","adjacent","after","alias","aliases","align","all","allocate","alpha","analysis","analyzer","append","appendage","appending","application","archive","area","arithmetic","as","ascending","aspect","assert","assign","assigned","assigning","association","asynchronous","at","attributes","authority","authority-check","avg","back","background","backup","backward","badi","base","before","begin","big","binary","bintohex","bit","black","blank","blanks","blob","block","blocks","blue","bound","boundaries","bounds","boxed","break-point","buffer","by","bypassing","byte","byte-order","call","calling","case","cast","casting","catch","center","centered","chain","chain-input","chain-request","change","changing","channels","character","char-to-hex","check","checkbox","ci_","circular","class","class-coding","class-data","class-events","class-methods","class-pool","cleanup","clear","client","clob","clock","close","coalesce","code","coding","col_background","col_group","col_heading","col_key","col_negative","col_normal","col_positive","col_total","collect","color","column","columns","comment","comments","commit","common","communication","comparing","component","components","compression","compute","concat","concat_with_space","concatenate","cond","condition","connect","connection","constants","context","contexts","continue","control","controls","conv","conversion","convert","copies","copy","corresponding","country","cover","cpi","create","creating","critical","currency","currency_conversion","current","cursor","cursor-selection","customer","customer-function","dangerous","data","database","datainfo","dataset","date","dats_add_days","dats_add_months","dats_days_between","dats_is_valid","daylight","dd/mm/yy","dd/mm/yyyy","ddmmyy","deallocate","decimal_shift","decimals","declarations","deep","default","deferred","define","defining","definition","delete","deleting","demand","department","descending","describe","destination","detail","dialog","directory","disconnect","display","display-mode","distinct","divide","divide-corresponding","division","do","dummy","duplicate","duplicates","duration","during","dynamic","dynpro","edit","editor-call","else","elseif","empty","enabled","enabling","encoding","end","endat","endcase","endcatch","endchain","endclass","enddo","endenhancement","end-enhancement-section","endexec","endform","endfunction","endian","endif","ending","endinterface","end-lines","endloop","endmethod","endmodule","end-of-definition","end-of-editing","end-of-file","end-of-page","end-of-selection","endon","endprovide","endselect","end-test-injection","end-test-seam","endtry","endwhile","endwith","engineering","enhancement","enhancement-point","enhancements","enhancement-section","entries","entry","enum","environment","errormessage","errors","escaping","event","events","exact","except","exception","exceptions","exception-table","exclude","excluding","exec","execute","exists","exit","exit-command","expand","expanding","expiration","explicit","exponent","export","exporting","extend","extended","extension","extract","fail","fetch","field","field-groups","fields","field-symbol","field-symbols","file","filter","filters","filter-table","final","first","first-line","fixed-point","fkeq","fkge","flush","font","for","form","format","forward","found","frame","frames","free","friends","from","function","functionality","function-pool","further","gaps","generate","get","giving","gkeq","gkge","global","grant","green","group","groups","handle","handler","harmless","hashed","having","hdb","header","headers","heading","head-lines","help-id","help-request","hextobin","hide","high","hint","hold","hotspot","icon","id","identification","identifier","ids","if","ignore","ignoring","immediately","implementation","implementations","implemented","implicit","import","importing","inactive","incl","include","includes","including","increment","index","index-line","infotypes","inheriting","init","initial","initialization","inner","inout","input","instance","instances","instr","intensified","interface","interface-pool","interfaces","internal","intervals","into","inverse","inverted-date","is","iso","job","join","keep","keeping","kernel","key","keys","keywords","kind","language","last","late","layout","leading","leave","left","left-justified","leftplus","leftspace","legacy","length","let","level","levels","like","line","line-count","linefeed","line-selection","line-size","list","listbox","list-processing","little","llang","load","load-of-program","lob","local","locale","locator","logfile","logical","log-point","long","loop","low","lower","lpad","lpi","ltrim","mail","main","major-id","mapping","margin","mark","mask","matchcode","max","maximum","medium","members","memory","mesh","message","message-id","messages","messaging","method","methods","min","minimum","minor-id","mm/dd/yy","mm/dd/yyyy","mmddyy","mode","modif","modifier","modify","module","move","move-corresponding","multiply","multiply-corresponding","name","nametab","native","nested","nesting","new","new-line","new-page","new-section","next","no","node","nodes","no-display","no-extension","no-gap","no-gaps","no-grouping","no-heading","non-unicode","non-unique","no-scrolling","no-sign","no-title","no-topofpage","no-zero","null","number","object","objects","obligatory","occurrence","occurrences","occurs","of","off","offset","ole","on","only","open","option","optional","options","order","other","others","out","outer","output","output-length","overflow","overlay","pack","package","pad","padding","page","pages","parameter","parameters","parameter-table","part","partially","pattern","percentage","perform","performing","person","pf1","pf10","pf11","pf12","pf13","pf14","pf15","pf2","pf3","pf4","pf5","pf6","pf7","pf8","pf9","pf-status","pink","places","pool","pos_high","pos_low","position","pragmas","precompiled","preferred","preserving","primary","print","print-control","priority","private","procedure","process","program","property","protected","provide","public","push","pushbutton","put","queue-only","quickinfo","radiobutton","raise","raising","range","ranges","read","reader","read-only","receive","received","receiver","receiving","red","redefinition","reduce","reduced","ref","reference","refresh","regex","reject","remote","renaming","replacement","replacing","report","request","requested","reserve","reset","resolution","respecting","responsible","result","results","resumable","resume","retry","return","returncode","returning","returns","right","right-justified","rightplus","rightspace","risk","rmc_communication_failure","rmc_invalid_status","rmc_system_failure","role","rollback","rows","rpad","rtrim","run","sap","sap-spool","saving","scale_preserving","scale_preserving_scientific","scan","scientific","scientific_with_leading_zero","scroll","scroll-boundary","scrolling","search","secondary","seconds","section","select","selection","selections","selection-screen","selection-set","selection-sets","selection-table","select-options","send","separate","separated","set","shared","shift","short","shortdump-id","sign_as_postfix","single","size","skip","skipping","smart","some","sort","sortable","sorted","source","specified","split","spool","spots","sql","sqlscript","stable","stamp","standard","starting","start-of-editing","start-of-selection","state","statement","statements","static","statics","statusinfo","step-loop","stop","structure","structures","style","subkey","submatches","submit","subroutine","subscreen","subtract","subtract-corresponding","suffix","sum","summary","summing","supplied","supply","suppress","switch","switchstates","symbol","syncpoints","syntax","syntax-check","syntax-trace","system-call","system-exceptions","system-exit","tab","tabbed","tables","tableview","tabstrip","target","task","tasks","test","testing","test-injection","test-seam","text","textpool","then","throw","time","times","timestamp","timezone","tims_is_valid","title","titlebar","title-lines","to","tokenization","tokens","top-lines","top-of-page","trace-file","trace-table","trailing","transaction","transfer","transformation","transporting","trmac","truncate","truncation","try","tstmp_add_seconds","tstmp_current_utctimestamp","tstmp_is_valid","tstmp_seconds_between","type","type-pool","type-pools","types","uline","unassign","under","unicode","union","unique","unit_conversion","unix","unpack","until","unwind","up","update","upper","user","user-command","using","utf-8","valid","value","value-request","values","vary","varying","verification-message","version","via","view","visible","wait","warning","when","whenever","where","while","width","window","windows","with","with-heading","without","with-title","word","work","write","writer","xml","xsd","yellow","yes","yymmdd","zero","zone","abs","acos","asin","atan","bit-set","boolc","boolx","ceil","char_off","charlen","cmax","cmin","concat_lines_of","condense","contains","contains_any_not_of","contains_any_of","cos","cosh","count","count_any_not_of","count_any_of","dbmaxlen","distance","escape","exp","find","find_any_not_of","find_any_of","find_end","floor","frac","from_mixed","insert","ipow","line_exists","line_index","lines","log","log10","match","matches","nmax","nmin","numofchar","repeat","replace","rescale","reverse","round","segment","shift_left","shift_right","sign","sin","sinh","sqrt","strlen","substring","substring_after","substring_before","substring_from","substring_to","tan","tanh","to_lower","to_mixed","to_upper","translate","trunc","utclong_add","utclong_current","utclong_diff","xsdbool","xstrlen"],typeKeywords:["b","c","d","decfloat16","decfloat34","f","i","int8","n","p","s","string","t","utclong","x","xstring","any","clike","csequence","decfloat","numeric","simple","xsequence","table","hashed","index","sorted","standard","accp","char","clnt","cuky","curr","dats","dec","df16_dec","df16_raw","df34_dec","df34_raw","fltp","int1","int2","int4","lang","lchr","lraw","numc","quan","raw","rawstring","sstring","tims","unit","df16_scl","df34_scl","prec","varc","abap_bool","space","me","syst","sy","screen"],operators:[" +"," -","/","*","**","div","mod","=","#","@","&","&&","bit-and","bit-not","bit-or","bit-xor","m","o","z","and","equiv","not","or"," < "," > ","<=",">=","<>","><","=<","=>","between","bt","byte-ca","byte-cn","byte-co","byte-cs","byte-na","byte-ns","ca","cn","co","cp","cs","eq","ge","gt","in","le","lt","na","nb","ne","np","ns"],symbols:/[=><!~?&+\-*\/\^%#@]+/,tokenizer:{root:[[/[a-z_$][\w-$]*/,{cases:{"@typeKeywords":"keyword","@keywords":"keyword","@operators":"operator","@default":"identifier"}}],[/<[\w]+>/,"identifier"],{include:"@whitespace"},[/[:,.]/,"delimiter"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/'/,{token:"string",bracket:"@open",next:"@stringquote"}],[/`/,{token:"string",bracket:"@open",next:"@stringping"}],[/\|/,{token:"string",bracket:"@open",next:"@stringtemplate"}],[/\d+/,"number"]],stringtemplate:[[/[^\\\|]+/,"string"],[/\\\|/,"string"],[/\|/,{token:"string",bracket:"@close",next:"@pop"}]],stringping:[[/[^\\`]+/,"string"],[/`/,{token:"string",bracket:"@close",next:"@pop"}]],stringquote:[[/[^\\']+/,"string"],[/'/,{token:"string",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/^\*.*$/,"comment"],[/\".*$/,"comment"]]}}}}]); -//# sourceMappingURL=7953.eb2256ce.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7992.20690745.chunk.js b/ydb/core/viewer/monitoring/static/js/7992.20690745.chunk.js new file mode 100644 index 000000000000..1efbc3ce6be3 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7992.20690745.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7992],{17992:function(a,u,_){a.exports=function(a){"use strict";function u(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var _=u(a),t={name:"rn",weekdays:"Ku wa Mungu_Ku wa Mbere_Ku wa Kabiri_Ku wa Gatatu_Ku wa Kane_Ku wa Gatanu_Ku wa Gatandatu".split("_"),weekdaysShort:"Kngu_Kmbr_Kbri_Ktat_Kkan_Ktan_Kdat".split("_"),weekdaysMin:"K7_K1_K2_K3_K4_K5_K6".split("_"),months:"Nzero_Ruhuhuma_Ntwarante_Ndamukiza_Rusama_Ruhenshi_Mukakaro_Myandagaro_Nyakanga_Gitugutu_Munyonyo_Kigarama".split("_"),monthsShort:"Nzer_Ruhuh_Ntwar_Ndam_Rus_Ruhen_Muk_Myand_Nyak_Git_Muny_Kig".split("_"),weekStart:1,ordinal:function(a){return a},relativeTime:{future:"mu %s",past:"%s",s:"amasegonda",m:"Umunota",mm:"%d iminota",h:"isaha",hh:"%d amasaha",d:"Umunsi",dd:"%d iminsi",M:"ukwezi",MM:"%d amezi",y:"umwaka",yy:"%d imyaka"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return _.default.locale(t,null,!0),t}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/7999.bdf4fe79.chunk.js b/ydb/core/viewer/monitoring/static/js/7999.bdf4fe79.chunk.js new file mode 100644 index 000000000000..a6e901033fb7 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/7999.bdf4fe79.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[7999],{47999:function(e,n,t){e.exports=function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e);function r(e){return e>1&&e<5&&1!=~~(e/10)}function s(e,n,t,s){var _=e+" ";switch(t){case"s":return n||s?"p\xe1r sekund":"p\xe1r sekundami";case"m":return n?"minuta":s?"minutu":"minutou";case"mm":return n||s?_+(r(e)?"minuty":"minut"):_+"minutami";case"h":return n?"hodina":s?"hodinu":"hodinou";case"hh":return n||s?_+(r(e)?"hodiny":"hodin"):_+"hodinami";case"d":return n||s?"den":"dnem";case"dd":return n||s?_+(r(e)?"dny":"dn\xed"):_+"dny";case"M":return n||s?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return n||s?_+(r(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):_+"m\u011bs\xedci";case"y":return n||s?"rok":"rokem";case"yy":return n||s?_+(r(e)?"roky":"let"):_+"lety"}}var _={name:"cs",weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),months:"leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),monthsShort:"led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s}};return t.default.locale(_,null,!0),_}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8005.9c209154.chunk.js b/ydb/core/viewer/monitoring/static/js/8005.9c209154.chunk.js deleted file mode 100644 index b60cb228799b..000000000000 --- a/ydb/core/viewer/monitoring/static/js/8005.9c209154.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8005],{58005:function(e,o,n){n.r(o),n.d(o,{conf:function(){return t},language:function(){return s}});var t={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".pascaligo",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["begin","block","case","const","else","end","fail","for","from","function","if","is","nil","of","remove","return","skip","then","type","var","while","with","option","None","transaction"],typeKeywords:["bool","int","list","map","nat","record","string","unit","address","map","mtz","xtz"],operators:["=",">","<","<=",">=","<>",":",":=","and","mod","or","+","-","*","/","@","&","^","%"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\(\*]+/,"comment"],[/\*\)/,"comment","@pop"],[/\(\*/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); -//# sourceMappingURL=8005.9c209154.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8011.4fed4307.chunk.js b/ydb/core/viewer/monitoring/static/js/8011.4fed4307.chunk.js new file mode 100644 index 000000000000..00fb91f647e2 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8011.4fed4307.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8011],{8011:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ky",weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),weekStart:1,weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/805.d67f39bf.chunk.js b/ydb/core/viewer/monitoring/static/js/805.d67f39bf.chunk.js deleted file mode 100644 index 7afef774321e..000000000000 --- a/ydb/core/viewer/monitoring/static/js/805.d67f39bf.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[805],{50805:function(e,t,n){n.r(t),n.d(t,{conf:function(){return s},language:function(){return o}});var s={comments:{lineComment:"#"}},o={defaultToken:"keyword",ignoreCase:!0,tokenPostfix:".azcli",str:/[^#\s]/,tokenizer:{root:[{include:"@comment"},[/\s-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}],[/^-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}]],type:[{include:"@comment"},[/-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":"key.identifier"}}],[/@str+\s*/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}]],comment:[[/#.*$/,{cases:{"@eos":{token:"comment",next:"@popall"}}}]]}}}}]); -//# sourceMappingURL=805.d67f39bf.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8065.666ef449.chunk.js b/ydb/core/viewer/monitoring/static/js/8065.666ef449.chunk.js new file mode 100644 index 000000000000..c5bba38f26dc --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8065.666ef449.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 8065.666ef449.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8065],{18065:(e,t,n)=>{n.r(t),n.d(t,{CompletionAdapter:()=>gt,DefinitionAdapter:()=>yt,DiagnosticsAdapter:()=>ct,DocumentColorAdapter:()=>Mt,DocumentFormattingEditProvider:()=>Tt,DocumentHighlightAdapter:()=>bt,DocumentLinkAdapter:()=>Rt,DocumentRangeFormattingEditProvider:()=>Dt,DocumentSymbolAdapter:()=>It,FoldingRangeAdapter:()=>Ft,HoverAdapter:()=>mt,ReferenceAdapter:()=>Ct,RenameAdapter:()=>xt,SelectionRangeAdapter:()=>Lt,WorkerManager:()=>se,fromPosition:()=>lt,fromRange:()=>ht,setupMode:()=>Nt,setupMode1:()=>Ot,toRange:()=>ft,toTextEdit:()=>vt});var r,i,o=n(41551),a=Object.defineProperty,s=Object.getOwnPropertyDescriptor,u=Object.getOwnPropertyNames,c=Object.prototype.hasOwnProperty,d=(e,t,n,r)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let i of u(t))c.call(e,i)||i===n||a(e,i,{get:()=>t[i],enumerable:!(r=s(t,i))||r.enumerable});return e},g={};d(g,r=o,"default"),i&&d(i,r,"default");var l,h,f,p,v,m,_,w,b,k,y,E,C,x,I,A,S,R,T,D,P,M,F,L,j,O,N,U,W,V,H,K,z,X,B,$,q,Q,G,J,Y,Z,ee,te,ne,re,ie,oe,ae,se=class{constructor(e){this._defaults=e,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval((()=>this._checkIfIdle()),3e4),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange((()=>this._stopWorker()))}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){if(!this._worker)return;Date.now()-this._lastUsedTime>12e4&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=g.editor.createWebWorker({moduleId:"vs/language/html/htmlWorker",createData:{languageSettings:this._defaults.options,languageId:this._defaults.languageId},label:this._defaults.languageId}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];let r;return this._getClient().then((e=>{r=e})).then((e=>{if(this._worker)return this._worker.withSyncedResources(t)})).then((e=>r))}};(h=l||(l={})).MIN_VALUE=-2147483648,h.MAX_VALUE=2147483647,(p=f||(f={})).MIN_VALUE=0,p.MAX_VALUE=2147483647,(m=v||(v={})).create=function(e,t){return e===Number.MAX_VALUE&&(e=f.MAX_VALUE),t===Number.MAX_VALUE&&(t=f.MAX_VALUE),{line:e,character:t}},m.is=function(e){var t=e;return st.objectLiteral(t)&&st.uinteger(t.line)&&st.uinteger(t.character)},(w=_||(_={})).create=function(e,t,n,r){if(st.uinteger(e)&&st.uinteger(t)&&st.uinteger(n)&&st.uinteger(r))return{start:v.create(e,t),end:v.create(n,r)};if(v.is(e)&&v.is(t))return{start:e,end:t};throw new Error("Range#create called with invalid arguments["+e+", "+t+", "+n+", "+r+"]")},w.is=function(e){var t=e;return st.objectLiteral(t)&&v.is(t.start)&&v.is(t.end)},(k=b||(b={})).create=function(e,t){return{uri:e,range:t}},k.is=function(e){var t=e;return st.defined(t)&&_.is(t.range)&&(st.string(t.uri)||st.undefined(t.uri))},(E=y||(y={})).create=function(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}},E.is=function(e){var t=e;return st.defined(t)&&_.is(t.targetRange)&&st.string(t.targetUri)&&(_.is(t.targetSelectionRange)||st.undefined(t.targetSelectionRange))&&(_.is(t.originSelectionRange)||st.undefined(t.originSelectionRange))},(x=C||(C={})).create=function(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}},x.is=function(e){var t=e;return st.numberRange(t.red,0,1)&&st.numberRange(t.green,0,1)&&st.numberRange(t.blue,0,1)&&st.numberRange(t.alpha,0,1)},(A=I||(I={})).create=function(e,t){return{range:e,color:t}},A.is=function(e){var t=e;return _.is(t.range)&&C.is(t.color)},(R=S||(S={})).create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},R.is=function(e){var t=e;return st.string(t.label)&&(st.undefined(t.textEdit)||X.is(t))&&(st.undefined(t.additionalTextEdits)||st.typedArray(t.additionalTextEdits,X.is))},(D=T||(T={})).Comment="comment",D.Imports="imports",D.Region="region",(M=P||(P={})).create=function(e,t,n,r,i){var o={startLine:e,endLine:t};return st.defined(n)&&(o.startCharacter=n),st.defined(r)&&(o.endCharacter=r),st.defined(i)&&(o.kind=i),o},M.is=function(e){var t=e;return st.uinteger(t.startLine)&&st.uinteger(t.startLine)&&(st.undefined(t.startCharacter)||st.uinteger(t.startCharacter))&&(st.undefined(t.endCharacter)||st.uinteger(t.endCharacter))&&(st.undefined(t.kind)||st.string(t.kind))},(L=F||(F={})).create=function(e,t){return{location:e,message:t}},L.is=function(e){var t=e;return st.defined(t)&&b.is(t.location)&&st.string(t.message)},(O=j||(j={})).Error=1,O.Warning=2,O.Information=3,O.Hint=4,(U=N||(N={})).Unnecessary=1,U.Deprecated=2,(W||(W={})).is=function(e){var t=e;return void 0!==t&&null!==t&&st.string(t.href)},(H=V||(V={})).create=function(e,t,n,r,i,o){var a={range:e,message:t};return st.defined(n)&&(a.severity=n),st.defined(r)&&(a.code=r),st.defined(i)&&(a.source=i),st.defined(o)&&(a.relatedInformation=o),a},H.is=function(e){var t,n=e;return st.defined(n)&&_.is(n.range)&&st.string(n.message)&&(st.number(n.severity)||st.undefined(n.severity))&&(st.integer(n.code)||st.string(n.code)||st.undefined(n.code))&&(st.undefined(n.codeDescription)||st.string(null===(t=n.codeDescription)||void 0===t?void 0:t.href))&&(st.string(n.source)||st.undefined(n.source))&&(st.undefined(n.relatedInformation)||st.typedArray(n.relatedInformation,F.is))},(z=K||(K={})).create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={title:e,command:t};return st.defined(n)&&n.length>0&&(i.arguments=n),i},z.is=function(e){var t=e;return st.defined(t)&&st.string(t.title)&&st.string(t.command)},(B=X||(X={})).replace=function(e,t){return{range:e,newText:t}},B.insert=function(e,t){return{range:{start:e,end:e},newText:t}},B.del=function(e){return{range:e,newText:""}},B.is=function(e){var t=e;return st.objectLiteral(t)&&st.string(t.newText)&&_.is(t.range)},(q=$||($={})).create=function(e,t,n){var r={label:e};return void 0!==t&&(r.needsConfirmation=t),void 0!==n&&(r.description=n),r},q.is=function(e){var t=e;return void 0!==t&&st.objectLiteral(t)&&st.string(t.label)&&(st.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(st.string(t.description)||void 0===t.description)},(Q||(Q={})).is=function(e){return"string"===typeof e},(J=G||(G={})).replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},J.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},J.del=function(e,t){return{range:e,newText:"",annotationId:t}},J.is=function(e){var t=e;return X.is(t)&&($.is(t.annotationId)||Q.is(t.annotationId))},(Z=Y||(Y={})).create=function(e,t){return{textDocument:e,edits:t}},Z.is=function(e){var t=e;return st.defined(t)&&le.is(t.textDocument)&&Array.isArray(t.edits)},(te=ee||(ee={})).create=function(e,t,n){var r={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},te.is=function(e){var t=e;return t&&"create"===t.kind&&st.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||st.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||st.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||Q.is(t.annotationId))},(re=ne||(ne={})).create=function(e,t,n,r){var i={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(i.options=n),void 0!==r&&(i.annotationId=r),i},re.is=function(e){var t=e;return t&&"rename"===t.kind&&st.string(t.oldUri)&&st.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||st.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||st.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||Q.is(t.annotationId))},(oe=ie||(ie={})).create=function(e,t,n){var r={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},oe.is=function(e){var t=e;return t&&"delete"===t.kind&&st.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||st.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||st.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||Q.is(t.annotationId))},(ae||(ae={})).is=function(e){var t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every((function(e){return st.string(e.kind)?ee.is(e)||ne.is(e)||ie.is(e):Y.is(e)})))};var ue,ce,de,ge,le,he,fe,pe,ve,me,_e,we,be,ke,ye,Ee,Ce,xe,Ie,Ae,Se,Re,Te,De,Pe,Me,Fe,Le,je,Oe,Ne,Ue,We,Ve,He,Ke,ze,Xe,Be,$e,qe,Qe,Ge,Je,Ye,Ze,et,tt,nt,rt,it,ot=function(){function e(e,t){this.edits=e,this.changeAnnotations=t}return e.prototype.insert=function(e,t,n){var r,i;if(void 0===n?r=X.insert(e,t):Q.is(n)?(i=n,r=G.insert(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=G.insert(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.replace=function(e,t,n){var r,i;if(void 0===n?r=X.replace(e,t):Q.is(n)?(i=n,r=G.replace(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=G.replace(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.delete=function(e,t){var n,r;if(void 0===t?n=X.del(e):Q.is(t)?(r=t,n=G.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),r=this.changeAnnotations.manage(t),n=G.del(e,r)),this.edits.push(n),void 0!==r)return r},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e.prototype.assertChangeAnnotations=function(e){if(void 0===e)throw new Error("Text edit change is not configured to manage change annotations.")},e}(),at=function(){function e(e){this._annotations=void 0===e?Object.create(null):e,this._counter=0,this._size=0}return e.prototype.all=function(){return this._annotations},Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),e.prototype.manage=function(e,t){var n;if(Q.is(e)?n=e:(n=this.nextId(),t=e),void 0!==this._annotations[n])throw new Error("Id "+n+" is already in use.");if(void 0===t)throw new Error("No annotation provided for id "+n);return this._annotations[n]=t,this._size++,n},e.prototype.nextId=function(){return this._counter++,this._counter.toString()},e}();!function(){function e(e){var t=this;this._textEditChanges=Object.create(null),void 0!==e?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new at(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach((function(e){if(Y.is(e)){var n=new ot(e.edits,t._changeAnnotations);t._textEditChanges[e.textDocument.uri]=n}}))):e.changes&&Object.keys(e.changes).forEach((function(n){var r=new ot(e.changes[n]);t._textEditChanges[n]=r}))):this._workspaceEdit={}}Object.defineProperty(e.prototype,"edit",{get:function(){return this.initDocumentChanges(),void 0!==this._changeAnnotations&&(0===this._changeAnnotations.size?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),e.prototype.getTextEditChange=function(e){if(le.is(e)){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var t={uri:e.uri,version:e.version};if(!(r=this._textEditChanges[t.uri])){var n={textDocument:t,edits:i=[]};this._workspaceEdit.documentChanges.push(n),r=new ot(i,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}if(this.initChanges(),void 0===this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");var r;if(!(r=this._textEditChanges[e])){var i=[];this._workspaceEdit.changes[e]=i,r=new ot(i),this._textEditChanges[e]=r}return r},e.prototype.initDocumentChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._changeAnnotations=new at,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},e.prototype.initChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._workspaceEdit.changes=Object.create(null))},e.prototype.createFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var r,i,o;if($.is(t)||Q.is(t)?r=t:n=t,void 0===r?i=ee.create(e,n):(o=Q.is(r)?r:this._changeAnnotations.manage(r),i=ee.create(e,n,o)),this._workspaceEdit.documentChanges.push(i),void 0!==o)return o},e.prototype.renameFile=function(e,t,n,r){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var i,o,a;if($.is(n)||Q.is(n)?i=n:r=n,void 0===i?o=ne.create(e,t,r):(a=Q.is(i)?i:this._changeAnnotations.manage(i),o=ne.create(e,t,r,a)),this._workspaceEdit.documentChanges.push(o),void 0!==a)return a},e.prototype.deleteFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var r,i,o;if($.is(t)||Q.is(t)?r=t:n=t,void 0===r?i=ie.create(e,n):(o=Q.is(r)?r:this._changeAnnotations.manage(r),i=ie.create(e,n,o)),this._workspaceEdit.documentChanges.push(i),void 0!==o)return o}}();(ce=ue||(ue={})).create=function(e){return{uri:e}},ce.is=function(e){var t=e;return st.defined(t)&&st.string(t.uri)},(ge=de||(de={})).create=function(e,t){return{uri:e,version:t}},ge.is=function(e){var t=e;return st.defined(t)&&st.string(t.uri)&&st.integer(t.version)},(he=le||(le={})).create=function(e,t){return{uri:e,version:t}},he.is=function(e){var t=e;return st.defined(t)&&st.string(t.uri)&&(null===t.version||st.integer(t.version))},(pe=fe||(fe={})).create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},pe.is=function(e){var t=e;return st.defined(t)&&st.string(t.uri)&&st.string(t.languageId)&&st.integer(t.version)&&st.string(t.text)},(me=ve||(ve={})).PlainText="plaintext",me.Markdown="markdown",function(e){e.is=function(t){var n=t;return n===e.PlainText||n===e.Markdown}}(ve||(ve={})),(_e||(_e={})).is=function(e){var t=e;return st.objectLiteral(e)&&ve.is(t.kind)&&st.string(t.value)},(be=we||(we={})).Text=1,be.Method=2,be.Function=3,be.Constructor=4,be.Field=5,be.Variable=6,be.Class=7,be.Interface=8,be.Module=9,be.Property=10,be.Unit=11,be.Value=12,be.Enum=13,be.Keyword=14,be.Snippet=15,be.Color=16,be.File=17,be.Reference=18,be.Folder=19,be.EnumMember=20,be.Constant=21,be.Struct=22,be.Event=23,be.Operator=24,be.TypeParameter=25,(ye=ke||(ke={})).PlainText=1,ye.Snippet=2,(Ee||(Ee={})).Deprecated=1,(xe=Ce||(Ce={})).create=function(e,t,n){return{newText:e,insert:t,replace:n}},xe.is=function(e){var t=e;return t&&st.string(t.newText)&&_.is(t.insert)&&_.is(t.replace)},(Ae=Ie||(Ie={})).asIs=1,Ae.adjustIndentation=2,(Se||(Se={})).create=function(e){return{label:e}},(Re||(Re={})).create=function(e,t){return{items:e||[],isIncomplete:!!t}},(De=Te||(Te={})).fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},De.is=function(e){var t=e;return st.string(t)||st.objectLiteral(t)&&st.string(t.language)&&st.string(t.value)},(Pe||(Pe={})).is=function(e){var t=e;return!!t&&st.objectLiteral(t)&&(_e.is(t.contents)||Te.is(t.contents)||st.typedArray(t.contents,Te.is))&&(void 0===e.range||_.is(e.range))},(Me||(Me={})).create=function(e,t){return t?{label:e,documentation:t}:{label:e}},(Fe||(Fe={})).create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={label:e};return st.defined(t)&&(i.documentation=t),st.defined(n)?i.parameters=n:i.parameters=[],i},(je=Le||(Le={})).Text=1,je.Read=2,je.Write=3,(Oe||(Oe={})).create=function(e,t){var n={range:e};return st.number(t)&&(n.kind=t),n},(Ue=Ne||(Ne={})).File=1,Ue.Module=2,Ue.Namespace=3,Ue.Package=4,Ue.Class=5,Ue.Method=6,Ue.Property=7,Ue.Field=8,Ue.Constructor=9,Ue.Enum=10,Ue.Interface=11,Ue.Function=12,Ue.Variable=13,Ue.Constant=14,Ue.String=15,Ue.Number=16,Ue.Boolean=17,Ue.Array=18,Ue.Object=19,Ue.Key=20,Ue.Null=21,Ue.EnumMember=22,Ue.Struct=23,Ue.Event=24,Ue.Operator=25,Ue.TypeParameter=26,(We||(We={})).Deprecated=1,(Ve||(Ve={})).create=function(e,t,n,r,i){var o={name:e,kind:t,location:{uri:r,range:n}};return i&&(o.containerName=i),o},(Ke=He||(He={})).create=function(e,t,n,r,i,o){var a={name:e,detail:t,kind:n,range:r,selectionRange:i};return void 0!==o&&(a.children=o),a},Ke.is=function(e){var t=e;return t&&st.string(t.name)&&st.number(t.kind)&&_.is(t.range)&&_.is(t.selectionRange)&&(void 0===t.detail||st.string(t.detail))&&(void 0===t.deprecated||st.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))},(Xe=ze||(ze={})).Empty="",Xe.QuickFix="quickfix",Xe.Refactor="refactor",Xe.RefactorExtract="refactor.extract",Xe.RefactorInline="refactor.inline",Xe.RefactorRewrite="refactor.rewrite",Xe.Source="source",Xe.SourceOrganizeImports="source.organizeImports",Xe.SourceFixAll="source.fixAll",($e=Be||(Be={})).create=function(e,t){var n={diagnostics:e};return void 0!==t&&null!==t&&(n.only=t),n},$e.is=function(e){var t=e;return st.defined(t)&&st.typedArray(t.diagnostics,V.is)&&(void 0===t.only||st.typedArray(t.only,st.string))},(Qe=qe||(qe={})).create=function(e,t,n){var r={title:e},i=!0;return"string"===typeof t?(i=!1,r.kind=t):K.is(t)?r.command=t:r.edit=t,i&&void 0!==n&&(r.kind=n),r},Qe.is=function(e){var t=e;return t&&st.string(t.title)&&(void 0===t.diagnostics||st.typedArray(t.diagnostics,V.is))&&(void 0===t.kind||st.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||K.is(t.command))&&(void 0===t.isPreferred||st.boolean(t.isPreferred))&&(void 0===t.edit||ae.is(t.edit))},(Je=Ge||(Ge={})).create=function(e,t){var n={range:e};return st.defined(t)&&(n.data=t),n},Je.is=function(e){var t=e;return st.defined(t)&&_.is(t.range)&&(st.undefined(t.command)||K.is(t.command))},(Ze=Ye||(Ye={})).create=function(e,t){return{tabSize:e,insertSpaces:t}},Ze.is=function(e){var t=e;return st.defined(t)&&st.uinteger(t.tabSize)&&st.boolean(t.insertSpaces)},(tt=et||(et={})).create=function(e,t,n){return{range:e,target:t,data:n}},tt.is=function(e){var t=e;return st.defined(t)&&_.is(t.range)&&(st.undefined(t.target)||st.string(t.target))},(rt=nt||(nt={})).create=function(e,t){return{range:e,parent:t}},rt.is=function(e){var t=e;return void 0!==t&&_.is(t.range)&&(void 0===t.parent||rt.is(t.parent))},function(e){function t(e,n){if(e.length<=1)return e;var r=e.length/2|0,i=e.slice(0,r),o=e.slice(r);t(i,n),t(o,n);for(var a=0,s=0,u=0;a<i.length&&s<o.length;){var c=n(i[a],o[s]);e[u++]=c<=0?i[a++]:o[s++]}for(;a<i.length;)e[u++]=i[a++];for(;s<o.length;)e[u++]=o[s++];return e}e.create=function(e,t,n,r){return new ut(e,t,n,r)},e.is=function(e){var t=e;return!!(st.defined(t)&&st.string(t.uri)&&(st.undefined(t.languageId)||st.string(t.languageId))&&st.uinteger(t.lineCount)&&st.func(t.getText)&&st.func(t.positionAt)&&st.func(t.offsetAt))},e.applyEdits=function(e,n){for(var r=e.getText(),i=t(n,(function(e,t){var n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n})),o=r.length,a=i.length-1;a>=0;a--){var s=i[a],u=e.offsetAt(s.range.start),c=e.offsetAt(s.range.end);if(!(c<=o))throw new Error("Overlapping edit");r=r.substring(0,u)+s.newText+r.substring(c,r.length),o=u}return r}}(it||(it={}));var st,ut=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!1,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0},e.prototype.getLineOffsets=function(){if(void 0===this._lineOffsets){for(var e=[],t=this._content,n=!0,r=0;r<t.length;r++){n&&(e.push(r),n=!1);var i=t.charAt(r);n="\r"===i||"\n"===i,"\r"===i&&r+1<t.length&&"\n"===t.charAt(r+1)&&r++}n&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return v.create(0,e);for(;n<r;){var i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}var o=n-1;return v.create(o,e-t[o])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),e}();!function(e){var t=Object.prototype.toString;e.defined=function(e){return"undefined"!==typeof e},e.undefined=function(e){return"undefined"===typeof e},e.boolean=function(e){return!0===e||!1===e},e.string=function(e){return"[object String]"===t.call(e)},e.number=function(e){return"[object Number]"===t.call(e)},e.numberRange=function(e,n,r){return"[object Number]"===t.call(e)&&n<=e&&e<=r},e.integer=function(e){return"[object Number]"===t.call(e)&&-2147483648<=e&&e<=2147483647},e.uinteger=function(e){return"[object Number]"===t.call(e)&&0<=e&&e<=2147483647},e.func=function(e){return"[object Function]"===t.call(e)},e.objectLiteral=function(e){return null!==e&&"object"===typeof e},e.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)}}(st||(st={}));var ct=class{constructor(e,t,n){this._languageId=e,this._worker=t,this._disposables=[],this._listener=Object.create(null);const r=e=>{let t,n=e.getLanguageId();n===this._languageId&&(this._listener[e.uri.toString()]=e.onDidChangeContent((()=>{window.clearTimeout(t),t=window.setTimeout((()=>this._doValidate(e.uri,n)),500)})),this._doValidate(e.uri,n))},i=e=>{g.editor.setModelMarkers(e,this._languageId,[]);let t=e.uri.toString(),n=this._listener[t];n&&(n.dispose(),delete this._listener[t])};this._disposables.push(g.editor.onDidCreateModel(r)),this._disposables.push(g.editor.onWillDisposeModel(i)),this._disposables.push(g.editor.onDidChangeModelLanguage((e=>{i(e.model),r(e.model)}))),this._disposables.push(n((e=>{g.editor.getModels().forEach((e=>{e.getLanguageId()===this._languageId&&(i(e),r(e))}))}))),this._disposables.push({dispose:()=>{g.editor.getModels().forEach(i);for(let e in this._listener)this._listener[e].dispose()}}),g.editor.getModels().forEach(r)}dispose(){this._disposables.forEach((e=>e&&e.dispose())),this._disposables.length=0}_doValidate(e,t){this._worker(e).then((t=>t.doValidation(e.toString()))).then((n=>{const r=n.map((e=>function(e,t){let n="number"===typeof t.code?String(t.code):t.code;return{severity:dt(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:n,source:t.source}}(0,e)));let i=g.editor.getModel(e);i&&i.getLanguageId()===t&&g.editor.setModelMarkers(i,t,r)})).then(void 0,(e=>{console.error(e)}))}};function dt(e){switch(e){case j.Error:return g.MarkerSeverity.Error;case j.Warning:return g.MarkerSeverity.Warning;case j.Information:return g.MarkerSeverity.Info;case j.Hint:return g.MarkerSeverity.Hint;default:return g.MarkerSeverity.Info}}var gt=class{constructor(e,t){this._worker=e,this._triggerCharacters=t}get triggerCharacters(){return this._triggerCharacters}provideCompletionItems(e,t,n,r){const i=e.uri;return this._worker(i).then((e=>e.doComplete(i.toString(),lt(t)))).then((n=>{if(!n)return;const r=e.getWordUntilPosition(t),i=new g.Range(t.lineNumber,r.startColumn,t.lineNumber,r.endColumn),o=n.items.map((e=>{const t={label:e.label,insertText:e.insertText||e.label,sortText:e.sortText,filterText:e.filterText,documentation:e.documentation,detail:e.detail,command:(n=e.command,n&&"editor.action.triggerSuggest"===n.command?{id:n.command,title:n.title,arguments:n.arguments}:void 0),range:i,kind:pt(e.kind)};var n,r;return e.textEdit&&("undefined"!==typeof(r=e.textEdit).insert&&"undefined"!==typeof r.replace?t.range={insert:ft(e.textEdit.insert),replace:ft(e.textEdit.replace)}:t.range=ft(e.textEdit.range),t.insertText=e.textEdit.newText),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map(vt)),e.insertTextFormat===ke.Snippet&&(t.insertTextRules=g.languages.CompletionItemInsertTextRule.InsertAsSnippet),t}));return{isIncomplete:n.isIncomplete,suggestions:o}}))}};function lt(e){if(e)return{character:e.column-1,line:e.lineNumber-1}}function ht(e){if(e)return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}function ft(e){if(e)return new g.Range(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function pt(e){const t=g.languages.CompletionItemKind;switch(e){case we.Text:return t.Text;case we.Method:return t.Method;case we.Function:return t.Function;case we.Constructor:return t.Constructor;case we.Field:return t.Field;case we.Variable:return t.Variable;case we.Class:return t.Class;case we.Interface:return t.Interface;case we.Module:return t.Module;case we.Property:return t.Property;case we.Unit:return t.Unit;case we.Value:return t.Value;case we.Enum:return t.Enum;case we.Keyword:return t.Keyword;case we.Snippet:return t.Snippet;case we.Color:return t.Color;case we.File:return t.File;case we.Reference:return t.Reference}return t.Property}function vt(e){if(e)return{range:ft(e.range),text:e.newText}}var mt=class{constructor(e){this._worker=e}provideHover(e,t,n){let r=e.uri;return this._worker(r).then((e=>e.doHover(r.toString(),lt(t)))).then((e=>{if(e)return{range:ft(e.range),contents:wt(e.contents)}}))}};function _t(e){return"string"===typeof e?{value:e}:(t=e)&&"object"===typeof t&&"string"===typeof t.kind?"plaintext"===e.kind?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:e.value}:{value:"```"+e.language+"\n"+e.value+"\n```\n"};var t}function wt(e){if(e)return Array.isArray(e)?e.map(_t):[_t(e)]}var bt=class{constructor(e){this._worker=e}provideDocumentHighlights(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.findDocumentHighlights(r.toString(),lt(t)))).then((e=>{if(e)return e.map((e=>({range:ft(e.range),kind:kt(e.kind)})))}))}};function kt(e){switch(e){case Le.Read:return g.languages.DocumentHighlightKind.Read;case Le.Write:return g.languages.DocumentHighlightKind.Write;case Le.Text:return g.languages.DocumentHighlightKind.Text}return g.languages.DocumentHighlightKind.Text}var yt=class{constructor(e){this._worker=e}provideDefinition(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.findDefinition(r.toString(),lt(t)))).then((e=>{if(e)return[Et(e)]}))}};function Et(e){return{uri:g.Uri.parse(e.uri),range:ft(e.range)}}var Ct=class{constructor(e){this._worker=e}provideReferences(e,t,n,r){const i=e.uri;return this._worker(i).then((e=>e.findReferences(i.toString(),lt(t)))).then((e=>{if(e)return e.map(Et)}))}},xt=class{constructor(e){this._worker=e}provideRenameEdits(e,t,n,r){const i=e.uri;return this._worker(i).then((e=>e.doRename(i.toString(),lt(t),n))).then((e=>function(e){if(!e||!e.changes)return;let t=[];for(let n in e.changes){const r=g.Uri.parse(n);for(let i of e.changes[n])t.push({resource:r,versionId:void 0,textEdit:{range:ft(i.range),text:i.newText}})}return{edits:t}}(e)))}};var It=class{constructor(e){this._worker=e}provideDocumentSymbols(e,t){const n=e.uri;return this._worker(n).then((e=>e.findDocumentSymbols(n.toString()))).then((e=>{if(e)return e.map((e=>"children"in e?At(e):{name:e.name,detail:"",containerName:e.containerName,kind:St(e.kind),range:ft(e.location.range),selectionRange:ft(e.location.range),tags:[]}))}))}};function At(e){var t,n,r;return{name:e.name,detail:null!==(t=e.detail)&&void 0!==t?t:"",kind:St(e.kind),range:ft(e.range),selectionRange:ft(e.selectionRange),tags:null!==(n=e.tags)&&void 0!==n?n:[],children:(null!==(r=e.children)&&void 0!==r?r:[]).map((e=>At(e)))}}function St(e){let t=g.languages.SymbolKind;switch(e){case Ne.File:return t.File;case Ne.Module:return t.Module;case Ne.Namespace:return t.Namespace;case Ne.Package:return t.Package;case Ne.Class:return t.Class;case Ne.Method:return t.Method;case Ne.Property:return t.Property;case Ne.Field:return t.Field;case Ne.Constructor:return t.Constructor;case Ne.Enum:return t.Enum;case Ne.Interface:return t.Interface;case Ne.Function:return t.Function;case Ne.Variable:return t.Variable;case Ne.Constant:return t.Constant;case Ne.String:return t.String;case Ne.Number:return t.Number;case Ne.Boolean:return t.Boolean;case Ne.Array:return t.Array}return t.Function}var Rt=class{constructor(e){this._worker=e}provideLinks(e,t){const n=e.uri;return this._worker(n).then((e=>e.findDocumentLinks(n.toString()))).then((e=>{if(e)return{links:e.map((e=>({range:ft(e.range),url:e.target})))}}))}},Tt=class{constructor(e){this._worker=e}provideDocumentFormattingEdits(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.format(r.toString(),null,Pt(t)).then((e=>{if(e&&0!==e.length)return e.map(vt)}))))}},Dt=class{constructor(e){this._worker=e,this.canFormatMultipleRanges=!1}provideDocumentRangeFormattingEdits(e,t,n,r){const i=e.uri;return this._worker(i).then((e=>e.format(i.toString(),ht(t),Pt(n)).then((e=>{if(e&&0!==e.length)return e.map(vt)}))))}};function Pt(e){return{tabSize:e.tabSize,insertSpaces:e.insertSpaces}}var Mt=class{constructor(e){this._worker=e}provideDocumentColors(e,t){const n=e.uri;return this._worker(n).then((e=>e.findDocumentColors(n.toString()))).then((e=>{if(e)return e.map((e=>({color:e.color,range:ft(e.range)})))}))}provideColorPresentations(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.getColorPresentations(r.toString(),t.color,ht(t.range)))).then((e=>{if(e)return e.map((e=>{let t={label:e.label};return e.textEdit&&(t.textEdit=vt(e.textEdit)),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map(vt)),t}))}))}},Ft=class{constructor(e){this._worker=e}provideFoldingRanges(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.getFoldingRanges(r.toString(),t))).then((e=>{if(e)return e.map((e=>{const t={start:e.startLine+1,end:e.endLine+1};return"undefined"!==typeof e.kind&&(t.kind=function(e){switch(e){case T.Comment:return g.languages.FoldingRangeKind.Comment;case T.Imports:return g.languages.FoldingRangeKind.Imports;case T.Region:return g.languages.FoldingRangeKind.Region}return}(e.kind)),t}))}))}};var Lt=class{constructor(e){this._worker=e}provideSelectionRanges(e,t,n){const r=e.uri;return this._worker(r).then((e=>e.getSelectionRanges(r.toString(),t.map(lt)))).then((e=>{if(e)return e.map((e=>{const t=[];for(;e;)t.push({range:ft(e.range)}),e=e.parent;return t}))}))}},jt=class extends gt{constructor(e){super(e,[".",":","<",'"',"=","/"])}};function Ot(e){const t=new se(e),n=function(){return t.getLanguageServiceWorker(...arguments)};let r=e.languageId;g.languages.registerCompletionItemProvider(r,new jt(n)),g.languages.registerHoverProvider(r,new mt(n)),g.languages.registerDocumentHighlightProvider(r,new bt(n)),g.languages.registerLinkProvider(r,new Rt(n)),g.languages.registerFoldingRangeProvider(r,new Ft(n)),g.languages.registerDocumentSymbolProvider(r,new It(n)),g.languages.registerSelectionRangeProvider(r,new Lt(n)),g.languages.registerRenameProvider(r,new xt(n)),"html"===r&&(g.languages.registerDocumentFormattingEditProvider(r,new Tt(n)),g.languages.registerDocumentRangeFormattingEditProvider(r,new Dt(n)))}function Nt(e){const t=[],n=[],r=new se(e);t.push(r);const i=function(){return r.getLanguageServiceWorker(...arguments)};return function(){const{languageId:t,modeConfiguration:r}=e;Wt(n),r.completionItems&&n.push(g.languages.registerCompletionItemProvider(t,new jt(i))),r.hovers&&n.push(g.languages.registerHoverProvider(t,new mt(i))),r.documentHighlights&&n.push(g.languages.registerDocumentHighlightProvider(t,new bt(i))),r.links&&n.push(g.languages.registerLinkProvider(t,new Rt(i))),r.documentSymbols&&n.push(g.languages.registerDocumentSymbolProvider(t,new It(i))),r.rename&&n.push(g.languages.registerRenameProvider(t,new xt(i))),r.foldingRanges&&n.push(g.languages.registerFoldingRangeProvider(t,new Ft(i))),r.selectionRanges&&n.push(g.languages.registerSelectionRangeProvider(t,new Lt(i))),r.documentFormattingEdits&&n.push(g.languages.registerDocumentFormattingEditProvider(t,new Tt(i))),r.documentRangeFormattingEdits&&n.push(g.languages.registerDocumentRangeFormattingEditProvider(t,new Dt(i)))}(),t.push(Ut(n)),Ut(t)}function Ut(e){return{dispose:()=>Wt(e)}}function Wt(e){for(;e.length;)e.pop().dispose()}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8065.666ef449.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/8065.666ef449.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8065.666ef449.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/8133.2afc4db4.chunk.js b/ydb/core/viewer/monitoring/static/js/8133.2afc4db4.chunk.js new file mode 100644 index 000000000000..37d784241529 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8133.2afc4db4.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8133],{18133:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"hy-am",weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),months:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),weekStart:1,weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8140.8d8e9309.chunk.js b/ydb/core/viewer/monitoring/static/js/8140.8d8e9309.chunk.js new file mode 100644 index 000000000000..8e7ff5e5a6c6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8140.8d8e9309.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8140],{18140:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"mk",weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),weekStart:1,weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),ordinal:function(_){return _},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"\u043f\u043e\u0441\u043b\u0435 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8167.b9a90da5.chunk.js b/ydb/core/viewer/monitoring/static/js/8167.b9a90da5.chunk.js new file mode 100644 index 000000000000..09b24f6f9034 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8167.b9a90da5.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8167],{68167:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"lo",weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8206.d2f5a912.chunk.js b/ydb/core/viewer/monitoring/static/js/8206.d2f5a912.chunk.js deleted file mode 100644 index 3037834323df..000000000000 --- a/ydb/core/viewer/monitoring/static/js/8206.d2f5a912.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8206],{98206:function(e,t,n){n.r(t),n.d(t,{conf:function(){return o},language:function(){return s}});var o={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))"),end:new RegExp("^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))")}}},s={defaultToken:"",tokenPostfix:".java",keywords:["abstract","continue","for","new","switch","assert","default","goto","package","synchronized","boolean","do","if","private","this","break","double","implements","protected","throw","byte","else","import","public","throws","case","enum","instanceof","return","transient","catch","extends","int","short","try","char","final","interface","static","void","class","finally","long","strictfp","volatile","const","float","native","super","while","true","false"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,tokenizer:{root:[[/[a-zA-Z_$][\w$]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,"annotation"],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,"number.float"],[/0[xX](@hexdigits)[Ll]?/,"number.hex"],[/0(@octaldigits)[Ll]?/,"number.octal"],[/0[bB](@binarydigits)[Ll]?/,"number.binary"],[/(@digits)[fFdD]/,"number.float"],[/(@digits)[lL]?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@javadoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],javadoc:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}}}}]); -//# sourceMappingURL=8206.d2f5a912.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8322.c2b160c6.chunk.js b/ydb/core/viewer/monitoring/static/js/8322.c2b160c6.chunk.js deleted file mode 100644 index ceb56942cc07..000000000000 --- a/ydb/core/viewer/monitoring/static/js/8322.c2b160c6.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8322],{78322:function(e,t,n){n.r(t),n.d(t,{conf:function(){return s},language:function(){return o}});var s={comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">",notIn:["string"]}],surroundingPairs:[{open:"(",close:")"},{open:"[",close:"]"},{open:"`",close:"`"}],folding:{markers:{start:new RegExp("^\\s*\x3c!--\\s*#?region\\b.*--\x3e"),end:new RegExp("^\\s*\x3c!--\\s*#?endregion\\b.*--\x3e")}}},o={defaultToken:"",tokenPostfix:".md",control:/[\\`*_\[\]{}()#+\-\.!]/,noncontrol:/[^\\`*_\[\]{}()#+\-\.!]/,escapes:/\\(?:@control)/,jsescapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,empty:["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param"],tokenizer:{root:[[/^\s*\|/,"@rematch","@table_header"],[/^(\s{0,3})(#+)((?:[^\\#]|@escapes)+)((?:#+)?)/,["white","keyword","keyword","keyword"]],[/^\s*(=+|\-+)\s*$/,"keyword"],[/^\s*((\*[ ]?)+)\s*$/,"meta.separator"],[/^\s*>+/,"comment"],[/^\s*([\*\-+:]|\d+\.)\s/,"keyword"],[/^(\t|[ ]{4})[^ ].*$/,"string"],[/^\s*~~~\s*((?:\w|[\/\-#])+)?\s*$/,{token:"string",next:"@codeblock"}],[/^\s*```\s*((?:\w|[\/\-#])+).*$/,{token:"string",next:"@codeblockgh",nextEmbedded:"$1"}],[/^\s*```\s*$/,{token:"string",next:"@codeblock"}],{include:"@linecontent"}],table_header:[{include:"@table_common"},[/[^\|]+/,"keyword.table.header"]],table_body:[{include:"@table_common"},{include:"@linecontent"}],table_common:[[/\s*[\-:]+\s*/,{token:"keyword",switchTo:"table_body"}],[/^\s*\|/,"keyword.table.left"],[/^\s*[^\|]/,"@rematch","@pop"],[/^\s*$/,"@rematch","@pop"],[/\|/,{cases:{"@eos":"keyword.table.right","@default":"keyword.table.middle"}}]],codeblock:[[/^\s*~~~\s*$/,{token:"string",next:"@pop"}],[/^\s*```\s*$/,{token:"string",next:"@pop"}],[/.*$/,"variable.source"]],codeblockgh:[[/```\s*$/,{token:"variable.source",next:"@pop",nextEmbedded:"@pop"}],[/[^`]+/,"variable.source"]],linecontent:[[/&\w+;/,"string.escape"],[/@escapes/,"escape"],[/\b__([^\\_]|@escapes|_(?!_))+__\b/,"strong"],[/\*\*([^\\*]|@escapes|\*(?!\*))+\*\*/,"strong"],[/\b_[^_]+_\b/,"emphasis"],[/\*([^\\*]|@escapes)+\*/,"emphasis"],[/`([^\\`]|@escapes)+`/,"variable"],[/\{+[^}]+\}+/,"string.target"],[/(!?\[)((?:[^\]\\]|@escapes)*)(\]\([^\)]+\))/,["string.link","","string.link"]],[/(!?\[)((?:[^\]\\]|@escapes)*)(\])/,"string.link"],{include:"html"}],html:[[/<(\w+)\/>/,"tag"],[/<(\w+)/,{cases:{"@empty":{token:"tag",next:"@tag.$1"},"@default":{token:"tag",next:"@tag.$1"}}}],[/<\/(\w+)\s*>/,{token:"tag"}],[/<!--/,"comment","@comment"]],comment:[[/[^<\-]+/,"comment.content"],[/-->/,"comment","@pop"],[/<!--/,"comment.content.invalid"],[/[<\-]/,"comment.content"]],tag:[[/[ \t\r\n]+/,"white"],[/(type)(\s*=\s*)(")([^"]+)(")/,["attribute.name.html","delimiter.html","string.html",{token:"string.html",switchTo:"@tag.$S2.$4"},"string.html"]],[/(type)(\s*=\s*)(')([^']+)(')/,["attribute.name.html","delimiter.html","string.html",{token:"string.html",switchTo:"@tag.$S2.$4"},"string.html"]],[/(\w+)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name.html","delimiter.html","string.html"]],[/\w+/,"attribute.name.html"],[/\/>/,"tag","@pop"],[/>/,{cases:{"$S2==style":{token:"tag",switchTo:"embeddedStyle",nextEmbedded:"text/css"},"$S2==script":{cases:{$S3:{token:"tag",switchTo:"embeddedScript",nextEmbedded:"$S3"},"@default":{token:"tag",switchTo:"embeddedScript",nextEmbedded:"text/javascript"}}},"@default":{token:"tag",next:"@pop"}}}]],embeddedStyle:[[/[^<]+/,""],[/<\/style\s*>/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/</,""]],embeddedScript:[[/[^<]+/,""],[/<\/script\s*>/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/</,""]]}}}}]); -//# sourceMappingURL=8322.c2b160c6.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8335.9ed734ba.chunk.js b/ydb/core/viewer/monitoring/static/js/8335.9ed734ba.chunk.js deleted file mode 100644 index e08c726ae35f..000000000000 --- a/ydb/core/viewer/monitoring/static/js/8335.9ed734ba.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8335],{28335:function(e,t,s){s.r(t),s.d(t,{conf:function(){return o},language:function(){return r}});var o={comments:{blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"(*",close:"*)"},{open:"<*",close:"*>"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}]},r={defaultToken:"",tokenPostfix:".m3",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["AND","ANY","ARRAY","AS","BEGIN","BITS","BRANDED","BY","CASE","CONST","DIV","DO","ELSE","ELSIF","END","EVAL","EXCEPT","EXCEPTION","EXIT","EXPORTS","FINALLY","FOR","FROM","GENERIC","IF","IMPORT","IN","INTERFACE","LOCK","LOOP","METHODS","MOD","MODULE","NOT","OBJECT","OF","OR","OVERRIDES","PROCEDURE","RAISE","RAISES","READONLY","RECORD","REF","REPEAT","RETURN","REVEAL","SET","THEN","TO","TRY","TYPE","TYPECASE","UNSAFE","UNTIL","UNTRACED","VALUE","VAR","WHILE","WITH"],reservedConstNames:["ABS","ADR","ADRSIZE","BITSIZE","BYTESIZE","CEILING","DEC","DISPOSE","FALSE","FIRST","FLOAT","FLOOR","INC","ISTYPE","LAST","LOOPHOLE","MAX","MIN","NARROW","NEW","NIL","NUMBER","ORD","ROUND","SUBARRAY","TRUE","TRUNC","TYPECODE","VAL"],reservedTypeNames:["ADDRESS","ANY","BOOLEAN","CARDINAL","CHAR","EXTENDED","INTEGER","LONGCARD","LONGINT","LONGREAL","MUTEX","NULL","REAL","REFANY","ROOT","TEXT"],operators:["+","-","*","/","&","^","."],relations:["=","#","<","<=",">",">=","<:",":"],delimiters:["|","..","=>",",",";",":="],symbols:/[>=<#.,:;+\-*/&^]+/,escapes:/\\(?:[\\fnrt"']|[0-7]{3})/,tokenizer:{root:[[/_\w*/,"invalid"],[/[a-zA-Z][a-zA-Z0-9_]*/,{cases:{"@keywords":{token:"keyword.$0"},"@reservedConstNames":{token:"constant.reserved.$0"},"@reservedTypeNames":{token:"type.reserved.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[0-9]+\.[0-9]+(?:[DdEeXx][\+\-]?[0-9]+)?/,"number.float"],[/[0-9]+(?:\_[0-9a-fA-F]+)?L?/,"number"],[/@symbols/,{cases:{"@operators":"operators","@relations":"operators","@delimiters":"delimiter","@default":"invalid"}}],[/'[^\\']'/,"string.char"],[/(')(@escapes)(')/,["string.char","string.escape","string.char"]],[/'/,"invalid"],[/"([^"\\]|\\.)*$/,"invalid"],[/"/,"string.text","@text"]],text:[[/[^\\"]+/,"string.text"],[/@escapes/,"string.escape"],[/\\./,"invalid"],[/"/,"string.text","@pop"]],comment:[[/\(\*/,"comment","@push"],[/\*\)/,"comment","@pop"],[/./,"comment"]],pragma:[[/<\*/,"keyword.pragma","@push"],[/\*>/,"keyword.pragma","@pop"],[/./,"keyword.pragma"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/<\*/,"keyword.pragma","@pragma"]]}}}}]); -//# sourceMappingURL=8335.9ed734ba.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/842.bd21ee9f.chunk.js b/ydb/core/viewer/monitoring/static/js/842.bd21ee9f.chunk.js deleted file mode 100644 index ebb3111240eb..000000000000 --- a/ydb/core/viewer/monitoring/static/js/842.bd21ee9f.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[842],{60842:function(e,n,s){s.r(n),s.d(n,{conf:function(){return i},language:function(){return t}});var i={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">",notIn:["string"]}],surroundingPairs:[{open:"(",close:")"},{open:"[",close:"]"},{open:"`",close:"`"}],folding:{markers:{start:new RegExp("^\\s*\x3c!--\\s*#?region\\b.*--\x3e"),end:new RegExp("^\\s*\x3c!--\\s*#?endregion\\b.*--\x3e")}}},t={defaultToken:"",tokenPostfix:".rst",control:/[\\`*_\[\]{}()#+\-\.!]/,escapes:/\\(?:@control)/,empty:["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param"],alphanumerics:/[A-Za-z0-9]/,alphanumericsplus:/[A-Za-z0-9-_+:.]/,simpleRefNameWithoutBq:/(?:@alphanumerics@alphanumericsplus*@alphanumerics)+|(?:@alphanumerics+)/,simpleRefName:/(?:`@simpleRefNameWithoutBq`|@simpleRefNameWithoutBq)/,phrase:/@simpleRefName(?:\s@simpleRefName)*/,citationName:/[A-Za-z][A-Za-z0-9-_.]*/,blockLiteralStart:/(?:[!"#$%&'()*+,-./:;<=>?@\[\]^_`{|}~]|[\s])/,precedingChars:/(?:[ -:/'"<([{])/,followingChars:/(?:[ -.,:;!?/'")\]}>]|$)/,punctuation:/(=|-|~|`|#|"|\^|\+|\*|:|\.|'|_|\+)/,tokenizer:{root:[[/^(@punctuation{3,}$){1,1}?/,"keyword"],[/^\s*([\*\-+\u2023\u2022]|[a-zA-Z0-9]+\.|\([a-zA-Z0-9]+\)|[a-zA-Z0-9]+\))\s/,"keyword"],[/([ ]::)\s*$/,"keyword","@blankLineOfLiteralBlocks"],[/(::)\s*$/,"keyword","@blankLineOfLiteralBlocks"],{include:"@tables"},{include:"@explicitMarkupBlocks"},{include:"@inlineMarkup"}],explicitMarkupBlocks:[{include:"@citations"},{include:"@footnotes"},[/^(\.\.\s)(@simpleRefName)(::\s)(.*)$/,[{token:"",next:"subsequentLines"},"keyword","",""]],[/^(\.\.)(\s+)(_)(@simpleRefName)(:)(\s+)(.*)/,[{token:"",next:"hyperlinks"},"","","string.link","","","string.link"]],[/^((?:(?:\.\.)(?:\s+))?)(__)(:)(\s+)(.*)/,[{token:"",next:"subsequentLines"},"","","","string.link"]],[/^(__\s+)(.+)/,["","string.link"]],[/^(\.\.)( \|)([^| ]+[^|]*[^| ]*)(\| )(@simpleRefName)(:: .*)/,[{token:"",next:"subsequentLines"},"","string.link","","keyword",""],"@rawBlocks"],[/(\|)([^| ]+[^|]*[^| ]*)(\|_{0,2})/,["","string.link",""]],[/^(\.\.)([ ].*)$/,[{token:"",next:"@comments"},"comment"]]],inlineMarkup:[{include:"@citationsReference"},{include:"@footnotesReference"},[/(@simpleRefName)(_{1,2})/,["string.link",""]],[/(`)([^<`]+\s+)(<)(.*)(>)(`)(_)/,["","string.link","","string.link","","",""]],[/\*\*([^\\*]|\*(?!\*))+\*\*/,"strong"],[/\*[^*]+\*/,"emphasis"],[/(``)((?:[^`]|\`(?!`))+)(``)/,["","keyword",""]],[/(__\s+)(.+)/,["","keyword"]],[/(:)((?:@simpleRefNameWithoutBq)?)(:`)([^`]+)(`)/,["","keyword","","",""]],[/(`)([^`]+)(`:)((?:@simpleRefNameWithoutBq)?)(:)/,["","","","keyword",""]],[/(`)([^`]+)(`)/,""],[/(_`)(@phrase)(`)/,["","string.link",""]]],citations:[[/^(\.\.\s+\[)((?:@citationName))(\]\s+)(.*)/,[{token:"",next:"@subsequentLines"},"string.link","",""]]],citationsReference:[[/(\[)(@citationName)(\]_)/,["","string.link",""]]],footnotes:[[/^(\.\.\s+\[)((?:[0-9]+))(\]\s+.*)/,[{token:"",next:"@subsequentLines"},"string.link",""]],[/^(\.\.\s+\[)((?:#@simpleRefName?))(\]\s+)(.*)/,[{token:"",next:"@subsequentLines"},"string.link","",""]],[/^(\.\.\s+\[)((?:\*))(\]\s+)(.*)/,[{token:"",next:"@subsequentLines"},"string.link","",""]]],footnotesReference:[[/(\[)([0-9]+)(\])(_)/,["","string.link","",""]],[/(\[)(#@simpleRefName?)(\])(_)/,["","string.link","",""]],[/(\[)(\*)(\])(_)/,["","string.link","",""]]],blankLineOfLiteralBlocks:[[/^$/,"","@subsequentLinesOfLiteralBlocks"],[/^.*$/,"","@pop"]],subsequentLinesOfLiteralBlocks:[[/(@blockLiteralStart+)(.*)/,["keyword",""]],[/^(?!blockLiteralStart)/,"","@popall"]],subsequentLines:[[/^[\s]+.*/,""],[/^(?!\s)/,"","@pop"]],hyperlinks:[[/^[\s]+.*/,"string.link"],[/^(?!\s)/,"","@pop"]],comments:[[/^[\s]+.*/,"comment"],[/^(?!\s)/,"","@pop"]],tables:[[/\+-[+-]+/,"keyword"],[/\+=[+=]+/,"keyword"]]}}}}]); -//# sourceMappingURL=842.bd21ee9f.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8424.5b5c42b5.chunk.js b/ydb/core/viewer/monitoring/static/js/8424.5b5c42b5.chunk.js new file mode 100644 index 000000000000..baa14f30764b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8424.5b5c42b5.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 8424.5b5c42b5.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8424],{88424:(e,t,i)=>{i.d(t,{Mj:()=>s.languages});var o,n,s=i(41551),r=Object.defineProperty,a=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,d=Object.prototype.hasOwnProperty,c=(e,t,i,o)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let n of l(t))d.call(e,n)||n===i||r(e,n,{get:()=>t[n],enumerable:!(o=a(t,n))||o.enumerable});return e},h={};c(h,o=s,"default"),n&&c(n,o,"default");var u={},g={},p=class e{static getOrCreate(t){return g[t]||(g[t]=new e(t)),g[t]}constructor(e){this._languageId=e,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise(((e,t)=>{this._lazyLoadPromiseResolve=e,this._lazyLoadPromiseReject=t}))}load(){return this._loadingTriggered||(this._loadingTriggered=!0,u[this._languageId].loader().then((e=>this._lazyLoadPromiseResolve(e)),(e=>this._lazyLoadPromiseReject(e)))),this._lazyLoadPromise}};function m(e){const t=e.id;u[t]=e,h.languages.register(e);const i=p.getOrCreate(t);h.languages.registerTokensProviderFactory(t,{create:async()=>(await i.load()).language}),h.languages.onLanguageEncountered(t,(async()=>{const e=await i.load();h.languages.setLanguageConfiguration(t,e.conf)}))}m({id:"abap",extensions:[".abap"],aliases:["abap","ABAP"],loader:()=>i.e(1155).then(i.bind(i,71155))}),m({id:"apex",extensions:[".cls"],aliases:["Apex","apex"],mimetypes:["text/x-apex-source","text/x-apex"],loader:()=>i.e(6230).then(i.bind(i,16230))}),m({id:"azcli",extensions:[".azcli"],aliases:["Azure CLI","azcli"],loader:()=>i.e(337).then(i.bind(i,80337))}),m({id:"bat",extensions:[".bat",".cmd"],aliases:["Batch","bat"],loader:()=>i.e(451).then(i.bind(i,80451))}),m({id:"bicep",extensions:[".bicep"],aliases:["Bicep"],loader:()=>i.e(2322).then(i.bind(i,32322))}),m({id:"cameligo",extensions:[".mligo"],aliases:["Cameligo"],loader:()=>i.e(4123).then(i.bind(i,14123))}),m({id:"clojure",extensions:[".clj",".cljs",".cljc",".edn"],aliases:["clojure","Clojure"],loader:()=>i.e(6289).then(i.bind(i,66289))}),m({id:"coffeescript",extensions:[".coffee"],aliases:["CoffeeScript","coffeescript","coffee"],mimetypes:["text/x-coffeescript","text/coffeescript"],loader:()=>i.e(4635).then(i.bind(i,74635))}),m({id:"c",extensions:[".c",".h"],aliases:["C","c"],loader:()=>i.e(4345).then(i.bind(i,44345))}),m({id:"cpp",extensions:[".cpp",".cc",".cxx",".hpp",".hh",".hxx"],aliases:["C++","Cpp","cpp"],loader:()=>i.e(4345).then(i.bind(i,44345))}),m({id:"csharp",extensions:[".cs",".csx",".cake"],aliases:["C#","csharp"],loader:()=>i.e(9319).then(i.bind(i,49319))}),m({id:"csp",extensions:[],aliases:["CSP","csp"],loader:()=>i.e(924).then(i.bind(i,90924))}),m({id:"css",extensions:[".css"],aliases:["CSS","css"],mimetypes:["text/css"],loader:()=>i.e(6795).then(i.bind(i,66795))}),m({id:"cypher",extensions:[".cypher",".cyp"],aliases:["Cypher","OpenCypher"],loader:()=>i.e(2302).then(i.bind(i,92302))}),m({id:"dart",extensions:[".dart"],aliases:["Dart","dart"],mimetypes:["text/x-dart-source","text/x-dart"],loader:()=>i.e(4388).then(i.bind(i,34388))}),m({id:"dockerfile",extensions:[".dockerfile"],filenames:["Dockerfile"],aliases:["Dockerfile"],loader:()=>i.e(4046).then(i.bind(i,44046))}),m({id:"ecl",extensions:[".ecl"],aliases:["ECL","Ecl","ecl"],loader:()=>i.e(2190).then(i.bind(i,72190))}),m({id:"elixir",extensions:[".ex",".exs"],aliases:["Elixir","elixir","ex"],loader:()=>i.e(3358).then(i.bind(i,13358))}),m({id:"flow9",extensions:[".flow"],aliases:["Flow9","Flow","flow9","flow"],loader:()=>i.e(6142).then(i.bind(i,26142))}),m({id:"fsharp",extensions:[".fs",".fsi",".ml",".mli",".fsx",".fsscript"],aliases:["F#","FSharp","fsharp"],loader:()=>i.e(2962).then(i.bind(i,92962))}),m({id:"freemarker2",extensions:[".ftl",".ftlh",".ftlx"],aliases:["FreeMarker2","Apache FreeMarker2"],loader:()=>i.e(214).then(i.bind(i,10214)).then((e=>e.TagAutoInterpolationDollar))}),m({id:"freemarker2.tag-angle.interpolation-dollar",aliases:["FreeMarker2 (Angle/Dollar)","Apache FreeMarker2 (Angle/Dollar)"],loader:()=>i.e(214).then(i.bind(i,10214)).then((e=>e.TagAngleInterpolationDollar))}),m({id:"freemarker2.tag-bracket.interpolation-dollar",aliases:["FreeMarker2 (Bracket/Dollar)","Apache FreeMarker2 (Bracket/Dollar)"],loader:()=>i.e(214).then(i.bind(i,10214)).then((e=>e.TagBracketInterpolationDollar))}),m({id:"freemarker2.tag-angle.interpolation-bracket",aliases:["FreeMarker2 (Angle/Bracket)","Apache FreeMarker2 (Angle/Bracket)"],loader:()=>i.e(214).then(i.bind(i,10214)).then((e=>e.TagAngleInterpolationBracket))}),m({id:"freemarker2.tag-bracket.interpolation-bracket",aliases:["FreeMarker2 (Bracket/Bracket)","Apache FreeMarker2 (Bracket/Bracket)"],loader:()=>i.e(214).then(i.bind(i,10214)).then((e=>e.TagBracketInterpolationBracket))}),m({id:"freemarker2.tag-auto.interpolation-dollar",aliases:["FreeMarker2 (Auto/Dollar)","Apache FreeMarker2 (Auto/Dollar)"],loader:()=>i.e(214).then(i.bind(i,10214)).then((e=>e.TagAutoInterpolationDollar))}),m({id:"freemarker2.tag-auto.interpolation-bracket",aliases:["FreeMarker2 (Auto/Bracket)","Apache FreeMarker2 (Auto/Bracket)"],loader:()=>i.e(214).then(i.bind(i,10214)).then((e=>e.TagAutoInterpolationBracket))}),m({id:"go",extensions:[".go"],aliases:["Go"],loader:()=>i.e(8791).then(i.bind(i,98791))}),m({id:"graphql",extensions:[".graphql",".gql"],aliases:["GraphQL","graphql","gql"],mimetypes:["application/graphql"],loader:()=>i.e(6898).then(i.bind(i,86898))}),m({id:"handlebars",extensions:[".handlebars",".hbs"],aliases:["Handlebars","handlebars","hbs"],mimetypes:["text/x-handlebars-template"],loader:()=>i.e(9173).then(i.bind(i,39173))}),m({id:"hcl",extensions:[".tf",".tfvars",".hcl"],aliases:["Terraform","tf","HCL","hcl"],loader:()=>i.e(2532).then(i.bind(i,22532))}),m({id:"html",extensions:[".html",".htm",".shtml",".xhtml",".mdoc",".jsp",".asp",".aspx",".jshtm"],aliases:["HTML","htm","html","xhtml"],mimetypes:["text/html","text/x-jshtm","text/template","text/ng-template"],loader:()=>i.e(6329).then(i.bind(i,16329))}),m({id:"ini",extensions:[".ini",".properties",".gitconfig"],filenames:["config",".gitattributes",".gitconfig",".editorconfig"],aliases:["Ini","ini"],loader:()=>i.e(2840).then(i.bind(i,2840))}),m({id:"java",extensions:[".java",".jav"],aliases:["Java","java"],mimetypes:["text/x-java-source","text/x-java"],loader:()=>i.e(5311).then(i.bind(i,45311))}),m({id:"javascript",extensions:[".js",".es6",".jsx",".mjs",".cjs"],firstLine:"^#!.*\\bnode",filenames:["jakefile"],aliases:["JavaScript","javascript","js"],mimetypes:["text/javascript"],loader:()=>i.e(2403).then(i.bind(i,92403))}),m({id:"julia",extensions:[".jl"],aliases:["julia","Julia"],loader:()=>i.e(1747).then(i.bind(i,11747))}),m({id:"kotlin",extensions:[".kt",".kts"],aliases:["Kotlin","kotlin"],mimetypes:["text/x-kotlin-source","text/x-kotlin"],loader:()=>i.e(3498).then(i.bind(i,53498))}),m({id:"less",extensions:[".less"],aliases:["Less","less"],mimetypes:["text/x-less","text/less"],loader:()=>i.e(185).then(i.bind(i,90185))}),m({id:"lexon",extensions:[".lex"],aliases:["Lexon"],loader:()=>i.e(8450).then(i.bind(i,58450))}),m({id:"lua",extensions:[".lua"],aliases:["Lua","lua"],loader:()=>i.e(3771).then(i.bind(i,23771))}),m({id:"liquid",extensions:[".liquid",".html.liquid"],aliases:["Liquid","liquid"],mimetypes:["application/liquid"],loader:()=>i.e(7529).then(i.bind(i,47529))}),m({id:"m3",extensions:[".m3",".i3",".mg",".ig"],aliases:["Modula-3","Modula3","modula3","m3"],loader:()=>i.e(785).then(i.bind(i,20785))}),m({id:"markdown",extensions:[".md",".markdown",".mdown",".mkdn",".mkd",".mdwn",".mdtxt",".mdtext"],aliases:["Markdown","markdown"],loader:()=>i.e(5107).then(i.bind(i,85107))}),m({id:"mdx",extensions:[".mdx"],aliases:["MDX","mdx"],loader:()=>i.e(6919).then(i.bind(i,26919))}),m({id:"mips",extensions:[".s"],aliases:["MIPS","MIPS-V"],mimetypes:["text/x-mips","text/mips","text/plaintext"],loader:()=>i.e(2104).then(i.bind(i,52104))}),m({id:"msdax",extensions:[".dax",".msdax"],aliases:["DAX","MSDAX"],loader:()=>i.e(9433).then(i.bind(i,49433))}),m({id:"mysql",extensions:[],aliases:["MySQL","mysql"],loader:()=>i.e(1956).then(i.bind(i,71956))}),m({id:"objective-c",extensions:[".m"],aliases:["Objective-C"],loader:()=>i.e(6619).then(i.bind(i,16619))}),m({id:"pascal",extensions:[".pas",".p",".pp"],aliases:["Pascal","pas"],mimetypes:["text/x-pascal-source","text/x-pascal"],loader:()=>i.e(2492).then(i.bind(i,82492))}),m({id:"pascaligo",extensions:[".ligo"],aliases:["Pascaligo","ligo"],loader:()=>i.e(2194).then(i.bind(i,32194))}),m({id:"perl",extensions:[".pl",".pm"],aliases:["Perl","pl"],loader:()=>i.e(9526).then(i.bind(i,29526))}),m({id:"pgsql",extensions:[],aliases:["PostgreSQL","postgres","pg","postgre"],loader:()=>i.e(5790).then(i.bind(i,65790))}),m({id:"php",extensions:[".php",".php4",".php5",".phtml",".ctp"],aliases:["PHP","php"],mimetypes:["application/x-php"],loader:()=>i.e(8905).then(i.bind(i,98905))}),m({id:"pla",extensions:[".pla"],loader:()=>i.e(5168).then(i.bind(i,25168))}),m({id:"postiats",extensions:[".dats",".sats",".hats"],aliases:["ATS","ATS/Postiats"],loader:()=>i.e(619).then(i.bind(i,41612))}),m({id:"powerquery",extensions:[".pq",".pqm"],aliases:["PQ","M","Power Query","Power Query M"],loader:()=>i.e(4550).then(i.bind(i,74550))}),m({id:"powershell",extensions:[".ps1",".psm1",".psd1"],aliases:["PowerShell","powershell","ps","ps1"],loader:()=>i.e(3644).then(i.bind(i,93644))}),m({id:"proto",extensions:[".proto"],aliases:["protobuf","Protocol Buffers"],loader:()=>i.e(8797).then(i.bind(i,98797))}),m({id:"pug",extensions:[".jade",".pug"],aliases:["Pug","Jade","jade"],loader:()=>i.e(2521).then(i.bind(i,52521))}),m({id:"python",extensions:[".py",".rpy",".pyw",".cpy",".gyp",".gypi"],aliases:["Python","py"],firstLine:"^#!/.*\\bpython[0-9.-]*\\b",loader:()=>i.e(1478).then(i.bind(i,11478))}),m({id:"qsharp",extensions:[".qs"],aliases:["Q#","qsharp"],loader:()=>i.e(6300).then(i.bind(i,66300))}),m({id:"r",extensions:[".r",".rhistory",".rmd",".rprofile",".rt"],aliases:["R","r"],loader:()=>i.e(3074).then(i.bind(i,63074))}),m({id:"razor",extensions:[".cshtml"],aliases:["Razor","razor"],mimetypes:["text/x-cshtml"],loader:()=>i.e(9371).then(i.bind(i,29371))}),m({id:"redis",extensions:[".redis"],aliases:["redis"],loader:()=>i.e(9923).then(i.bind(i,39923))}),m({id:"redshift",extensions:[],aliases:["Redshift","redshift"],loader:()=>i.e(358).then(i.bind(i,80358))}),m({id:"restructuredtext",extensions:[".rst"],aliases:["reStructuredText","restructuredtext"],loader:()=>i.e(86).then(i.bind(i,10086))}),m({id:"ruby",extensions:[".rb",".rbx",".rjs",".gemspec",".pp"],filenames:["rakefile","Gemfile"],aliases:["Ruby","rb"],loader:()=>i.e(5661).then(i.bind(i,55661))}),m({id:"rust",extensions:[".rs",".rlib"],aliases:["Rust","rust"],loader:()=>i.e(3621).then(i.bind(i,13621))}),m({id:"sb",extensions:[".sb"],aliases:["Small Basic","sb"],loader:()=>i.e(2994).then(i.bind(i,82994))}),m({id:"scala",extensions:[".scala",".sc",".sbt"],aliases:["Scala","scala","SBT","Sbt","sbt","Dotty","dotty"],mimetypes:["text/x-scala-source","text/x-scala","text/x-sbt","text/x-dotty"],loader:()=>i.e(4812).then(i.bind(i,14812))}),m({id:"scheme",extensions:[".scm",".ss",".sch",".rkt"],aliases:["scheme","Scheme"],loader:()=>i.e(9621).then(i.bind(i,19621))}),m({id:"scss",extensions:[".scss"],aliases:["Sass","sass","scss"],mimetypes:["text/x-scss","text/scss"],loader:()=>i.e(7554).then(i.bind(i,77554))}),m({id:"shell",extensions:[".sh",".bash"],aliases:["Shell","sh"],loader:()=>i.e(425).then(i.bind(i,425))}),m({id:"sol",extensions:[".sol"],aliases:["sol","solidity","Solidity"],loader:()=>i.e(6044).then(i.bind(i,96044))}),m({id:"aes",extensions:[".aes"],aliases:["aes","sophia","Sophia"],loader:()=>i.e(2141).then(i.bind(i,2141))}),m({id:"sparql",extensions:[".rq"],aliases:["sparql","SPARQL"],loader:()=>i.e(919).then(i.bind(i,50919))}),m({id:"sql",extensions:[".sql"],aliases:["SQL"],loader:()=>i.e(6692).then(i.bind(i,66692))}),m({id:"st",extensions:[".st",".iecst",".iecplc",".lc3lib",".TcPOU",".TcDUT",".TcGVL",".TcIO"],aliases:["StructuredText","scl","stl"],loader:()=>i.e(6321).then(i.bind(i,26321))}),m({id:"swift",aliases:["Swift","swift"],extensions:[".swift"],mimetypes:["text/swift"],loader:()=>i.e(2931).then(i.bind(i,62931))}),m({id:"systemverilog",extensions:[".sv",".svh"],aliases:["SV","sv","SystemVerilog","systemverilog"],loader:()=>i.e(2876).then(i.bind(i,12876))}),m({id:"verilog",extensions:[".v",".vh"],aliases:["V","v","Verilog","verilog"],loader:()=>i.e(2876).then(i.bind(i,12876))}),m({id:"tcl",extensions:[".tcl"],aliases:["tcl","Tcl","tcltk","TclTk","tcl/tk","Tcl/Tk"],loader:()=>i.e(5868).then(i.bind(i,5868))}),m({id:"twig",extensions:[".twig"],aliases:["Twig","twig"],mimetypes:["text/x-twig"],loader:()=>i.e(2553).then(i.bind(i,12553))}),m({id:"typescript",extensions:[".ts",".tsx",".cts",".mts"],aliases:["TypeScript","ts","typescript"],mimetypes:["text/typescript"],loader:()=>i.e(9876).then(i.bind(i,89876))}),m({id:"vb",extensions:[".vb"],aliases:["Visual Basic","vb"],loader:()=>i.e(5378).then(i.bind(i,65378))}),m({id:"wgsl",extensions:[".wgsl"],aliases:["WebGPU Shading Language","WGSL","wgsl"],loader:()=>i.e(2183).then(i.bind(i,42183))}),m({id:"xml",extensions:[".xml",".xsd",".dtd",".ascx",".csproj",".config",".props",".targets",".wxi",".wxl",".wxs",".xaml",".svg",".svgz",".opf",".xslt",".xsl"],firstLine:"(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",aliases:["XML","xml"],mimetypes:["text/xml","application/xml","application/xaml+xml","application/xml-dtd"],loader:()=>i.e(7543).then(i.bind(i,87543))}),m({id:"yaml",extensions:[".yaml",".yml"],aliases:["YAML","yaml","YML","yml"],mimetypes:["application/x-yaml","text/x-yaml"],loader:()=>i.e(6390).then(i.bind(i,36390))});var _=Object.defineProperty,f=Object.getOwnPropertyDescriptor,v=Object.getOwnPropertyNames,b=Object.prototype.hasOwnProperty,C=(e,t,i,o)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let n of v(t))b.call(e,n)||n===i||_(e,n,{get:()=>t[n],enumerable:!(o=f(t,n))||o.enumerable});return e},S={};((e,t,i)=>{C(e,t,"default"),i&&C(i,t,"default")})(S,s);var y=class{constructor(e,t,i){this._onDidChange=new S.Emitter,this._languageId=e,this.setOptions(t),this.setModeConfiguration(i)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this.options}get options(){return this._options}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setDiagnosticsOptions(e){this.setOptions(e)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},w={validate:!0,lint:{compatibleVendorPrefixes:"ignore",vendorPrefix:"warning",duplicateProperties:"warning",emptyRules:"warning",importStatement:"ignore",boxModel:"ignore",universalSelector:"ignore",zeroUnits:"ignore",fontFaceProperties:"warning",hexColorLength:"error",argumentsInColorFunction:"error",unknownProperties:"warning",ieHack:"ignore",unknownVendorSpecificProperties:"ignore",propertyIgnoredDueToDisplay:"warning",important:"ignore",float:"ignore",idSelector:"ignore"},data:{useDefaultDataProvider:!0},format:{newlineBetweenSelectors:!0,newlineBetweenRules:!0,spaceAroundSelectorSeparator:!1,braceStyle:"collapse",maxPreserveNewLines:void 0,preserveNewLines:!0}},x={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0,documentFormattingEdits:!0,documentRangeFormattingEdits:!0},N=new y("css",w,x),L=new y("scss",w,x),k=new y("less",w,x);function D(){return i.e(2118).then(i.bind(i,52118))}S.languages.css={cssDefaults:N,lessDefaults:k,scssDefaults:L},S.languages.onLanguage("less",(()=>{D().then((e=>e.setupMode(k)))})),S.languages.onLanguage("scss",(()=>{D().then((e=>e.setupMode(L)))})),S.languages.onLanguage("css",(()=>{D().then((e=>e.setupMode(N)))}));var I=Object.defineProperty,R=Object.getOwnPropertyDescriptor,P=Object.getOwnPropertyNames,M=Object.prototype.hasOwnProperty,T=(e,t,i,o)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let n of P(t))M.call(e,n)||n===i||I(e,n,{get:()=>t[n],enumerable:!(o=R(t,n))||o.enumerable});return e},E={};((e,t,i)=>{T(e,t,"default"),i&&T(i,t,"default")})(E,s);var A=class{constructor(e,t,i){this._onDidChange=new E.Emitter,this._languageId=e,this.setOptions(t),this.setModeConfiguration(i)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get options(){return this._options}get modeConfiguration(){return this._modeConfiguration}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},O={format:{tabSize:4,insertSpaces:!1,wrapLineLength:120,unformatted:'default": "a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',contentUnformatted:"pre",indentInnerHtml:!1,preserveNewLines:!0,maxPreserveNewLines:void 0,indentHandlebars:!1,endWithNewline:!1,extraLiners:"head, body, /html",wrapAttributes:"auto"},suggest:{},data:{useDefaultDataProvider:!0}};function F(e){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:e===W,documentFormattingEdits:e===W,documentRangeFormattingEdits:e===W}}var W="html",H="handlebars",V="razor",B=G(W,O,F(W)),z=B.defaults,U=G(H,O,F(H)),K=U.defaults,j=G(V,O,F(V)),q=j.defaults;function G(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:O,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:F(e);const n=new A(e,t,o);let s;const r=E.languages.onLanguage(e,(async()=>{s=(await i.e(8065).then(i.bind(i,18065))).setupMode(n)}));return{defaults:n,dispose(){var e;r.dispose(),null===(e=s)||void 0===e||e.dispose(),s=void 0}}}E.languages.html={htmlDefaults:z,razorDefaults:q,handlebarDefaults:K,htmlLanguageService:B,handlebarLanguageService:U,razorLanguageService:j,registerHTMLLanguageService:G};var Q=new class{constructor(e,t,i){this._onDidChange=new s.Emitter,this._languageId=e,this.setDiagnosticsOptions(t),this.setModeConfiguration(i)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}}("json",{validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1,schemaRequest:"warning",schemaValidation:"warning",comments:"error",trailingCommas:"error"},{documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0});function Z(){return i.e(7520).then(i.bind(i,67520))}s.languages.json={jsonDefaults:Q,getWorker:()=>Z().then((e=>e.getWorker()))},s.languages.register({id:"json",extensions:[".json",".bowerrc",".jshintrc",".jscsrc",".eslintrc",".babelrc",".har"],aliases:["JSON","json"],mimetypes:["application/json"]}),s.languages.onLanguage("json",(()=>{Z().then((e=>e.setupMode(Q)))}));i(13746);var Y=i(70469),J=i(76025),$=i(62974),X=i(85714),ee=i(23001),te=i(38119),ie=i(95233),oe=i(54081),ne=i(71721),se=i(48489),re=i(25195),ae=i(24920);i(94817);class le extends se.Ke{constructor(){super({id:"diffEditor.toggleCollapseUnchangedRegions",title:(0,ne.vv)("toggleCollapseUnchangedRegions","Toggle Collapse Unchanged Regions"),icon:$.l.map,toggled:ae.Ao.has("config.diffEditor.hideUnchangedRegions.enabled"),precondition:ae.Ao.has("isInDiffEditor"),menu:{when:ae.Ao.has("isInDiffEditor"),id:se.eH.EditorTitle,order:22,group:"navigation"}})}run(e){const t=e.get(re.Ui),i=!t.getValue("diffEditor.hideUnchangedRegions.enabled");t.updateValue("diffEditor.hideUnchangedRegions.enabled",i)}}class de extends se.Ke{constructor(){super({id:"diffEditor.toggleShowMovedCodeBlocks",title:(0,ne.vv)("toggleShowMovedCodeBlocks","Toggle Show Moved Code Blocks"),precondition:ae.Ao.has("isInDiffEditor")})}run(e){const t=e.get(re.Ui),i=!t.getValue("diffEditor.experimental.showMoves");t.updateValue("diffEditor.experimental.showMoves",i)}}class ce extends se.Ke{constructor(){super({id:"diffEditor.toggleUseInlineViewWhenSpaceIsLimited",title:(0,ne.vv)("toggleUseInlineViewWhenSpaceIsLimited","Toggle Use Inline View When Space Is Limited"),precondition:ae.Ao.has("isInDiffEditor")})}run(e){const t=e.get(re.Ui),i=!t.getValue("diffEditor.useInlineViewWhenSpaceIsLimited");t.updateValue("diffEditor.useInlineViewWhenSpaceIsLimited",i)}}const he=(0,ne.vv)("diffEditor","Diff Editor");class ue extends ee.x1{constructor(){super({id:"diffEditor.switchSide",title:(0,ne.vv)("switchSide","Switch Side"),icon:$.l.arrowSwap,precondition:ae.Ao.has("isInDiffEditor"),f1:!0,category:he})}runEditorCommand(e,t,i){const o=Ce(e);if(o instanceof ie.p){if(i&&i.dryRun)return{destinationSelection:o.mapToOtherSide().destinationSelection};o.switchSide()}}}class ge extends ee.x1{constructor(){super({id:"diffEditor.exitCompareMove",title:(0,ne.vv)("exitCompareMove","Exit Compare Move"),icon:$.l.close,precondition:oe.u.comparingMovedCode,f1:!1,category:he,keybinding:{weight:1e4,primary:9}})}runEditorCommand(e,t){const i=Ce(e);i instanceof ie.p&&i.exitCompareMove()}}class pe extends ee.x1{constructor(){super({id:"diffEditor.collapseAllUnchangedRegions",title:(0,ne.vv)("collapseAllUnchangedRegions","Collapse All Unchanged Regions"),icon:$.l.fold,precondition:ae.Ao.has("isInDiffEditor"),f1:!0,category:he})}runEditorCommand(e,t){const i=Ce(e);i instanceof ie.p&&i.collapseAllUnchangedRegions()}}class me extends ee.x1{constructor(){super({id:"diffEditor.showAllUnchangedRegions",title:(0,ne.vv)("showAllUnchangedRegions","Show All Unchanged Regions"),icon:$.l.unfold,precondition:ae.Ao.has("isInDiffEditor"),f1:!0,category:he})}runEditorCommand(e,t){const i=Ce(e);i instanceof ie.p&&i.showAllUnchangedRegions()}}class _e extends se.Ke{constructor(){super({id:"diffEditor.revert",title:(0,ne.vv)("revert","Revert"),f1:!1,category:he})}run(e,t){var i;const o=function(e,t,i){const o=e.get(te.$);return o.listDiffEditors().find((e=>{var o,n;const s=e.getModifiedEditor(),r=e.getOriginalEditor();return s&&(null===(o=s.getModel())||void 0===o?void 0:o.uri.toString())===i.toString()&&r&&(null===(n=r.getModel())||void 0===n?void 0:n.uri.toString())===t.toString()}))||null}(e,t.originalUri,t.modifiedUri);o instanceof ie.p&&o.revertRangeMappings(null!==(i=t.mapping.innerChanges)&&void 0!==i?i:[])}}const fe=(0,ne.vv)("accessibleDiffViewer","Accessible Diff Viewer");class ve extends se.Ke{constructor(){super({id:ve.id,title:(0,ne.vv)("editor.action.accessibleDiffViewer.next","Go to Next Difference"),category:fe,precondition:ae.Ao.has("isInDiffEditor"),keybinding:{primary:65,weight:100},f1:!0})}run(e){const t=Ce(e);null===t||void 0===t||t.accessibleDiffViewerNext()}}ve.id="editor.action.accessibleDiffViewer.next";class be extends se.Ke{constructor(){super({id:be.id,title:(0,ne.vv)("editor.action.accessibleDiffViewer.prev","Go to Previous Difference"),category:fe,precondition:ae.Ao.has("isInDiffEditor"),keybinding:{primary:1089,weight:100},f1:!0})}run(e){const t=Ce(e);null===t||void 0===t||t.accessibleDiffViewerPrev()}}function Ce(e){const t=e.get(te.$).listDiffEditors(),i=(0,X.vY)();if(i)for(const o of t){if(Se(o.getContainerDomNode(),i))return o}return null}function Se(e,t){let i=t;for(;i;){if(i===e)return!0;i=i.parentElement}return!1}be.id="editor.action.accessibleDiffViewer.prev";var ye=i(60982);(0,se.r1)(le),(0,se.r1)(de),(0,se.r1)(ce),se.BH.appendMenuItem(se.eH.EditorTitle,{command:{id:(new ce).desc.id,title:(0,ne.NC)("useInlineViewWhenSpaceIsLimited","Use Inline View When Space Is Limited"),toggled:ae.Ao.has("config.diffEditor.useInlineViewWhenSpaceIsLimited"),precondition:ae.Ao.has("isInDiffEditor")},order:11,group:"1_diff",when:ae.Ao.and(oe.u.diffEditorRenderSideBySideInlineBreakpointReached,ae.Ao.has("isInDiffEditor"))}),se.BH.appendMenuItem(se.eH.EditorTitle,{command:{id:(new de).desc.id,title:(0,ne.NC)("showMoves","Show Moved Code Blocks"),icon:$.l.move,toggled:ae.cP.create("config.diffEditor.experimental.showMoves",!0),precondition:ae.Ao.has("isInDiffEditor")},order:10,group:"1_diff",when:ae.Ao.has("isInDiffEditor")}),(0,se.r1)(_e);for(const Ex of[{icon:$.l.arrowRight,key:oe.u.diffEditorInlineMode.toNegated()},{icon:$.l.discard,key:oe.u.diffEditorInlineMode}])se.BH.appendMenuItem(se.eH.DiffEditorHunkToolbar,{command:{id:(new _e).desc.id,title:(0,ne.NC)("revertHunk","Revert Block"),icon:Ex.icon},when:ae.Ao.and(oe.u.diffEditorModifiedWritable,Ex.key),order:5,group:"primary"}),se.BH.appendMenuItem(se.eH.DiffEditorSelectionToolbar,{command:{id:(new _e).desc.id,title:(0,ne.NC)("revertSelection","Revert Selection"),icon:Ex.icon},when:ae.Ao.and(oe.u.diffEditorModifiedWritable,Ex.key),order:5,group:"primary"});(0,se.r1)(ue),(0,se.r1)(ge),(0,se.r1)(pe),(0,se.r1)(me),se.BH.appendMenuItem(se.eH.EditorTitle,{command:{id:ve.id,title:(0,ne.NC)("Open Accessible Diff Viewer","Open Accessible Diff Viewer"),precondition:ae.Ao.has("isInDiffEditor")},order:10,group:"2_diff",when:ae.Ao.and(oe.u.accessibleDiffViewerVisible.negate(),ae.Ao.has("isInDiffEditor"))}),ye.P.registerCommandAlias("editor.action.diffReview.next",ve.id),(0,se.r1)(ve),ye.P.registerCommandAlias("editor.action.diffReview.prev",be.id),(0,se.r1)(be);var we,xe=i(70036),Ne=i(32936),Le=i(67925),ke=i(67078),De=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ie=function(e,t){return function(i,o){t(i,o,e)}};const Re=new ae.uy("selectionAnchorSet",!1);let Pe=we=class{static get(e){return e.getContribution(we.ID)}constructor(e,t){this.editor=e,this.selectionAnchorSetContextKey=Re.bindTo(t),this.modelChangeListener=e.onDidChangeModel((()=>this.selectionAnchorSetContextKey.reset()))}setSelectionAnchor(){if(this.editor.hasModel()){const e=this.editor.getPosition();this.editor.changeDecorations((t=>{this.decorationId&&t.removeDecoration(this.decorationId),this.decorationId=t.addDecoration(ke.Y.fromPositions(e,e),{description:"selection-anchor",stickiness:1,hoverMessage:(new Ne.W5).appendText((0,ne.NC)("selectionAnchor","Selection Anchor")),className:"selection-anchor"})})),this.selectionAnchorSetContextKey.set(!!this.decorationId),(0,xe.Z9)((0,ne.NC)("anchorSet","Anchor set at {0}:{1}",e.lineNumber,e.column))}}goToSelectionAnchor(){if(this.editor.hasModel()&&this.decorationId){const e=this.editor.getModel().getDecorationRange(this.decorationId);e&&this.editor.setPosition(e.getStartPosition())}}selectFromAnchorToCursor(){if(this.editor.hasModel()&&this.decorationId){const e=this.editor.getModel().getDecorationRange(this.decorationId);if(e){const t=this.editor.getPosition();this.editor.setSelection(ke.Y.fromPositions(e.getStartPosition(),t)),this.cancelSelectionAnchor()}}}cancelSelectionAnchor(){if(this.decorationId){const e=this.decorationId;this.editor.changeDecorations((t=>{t.removeDecoration(e),this.decorationId=void 0})),this.selectionAnchorSetContextKey.set(!1)}}dispose(){this.cancelSelectionAnchor(),this.modelChangeListener.dispose()}};Pe.ID="editor.contrib.selectionAnchorController",Pe=we=De([Ie(1,ae.i6)],Pe);class Me extends ee.R6{constructor(){super({id:"editor.action.setSelectionAnchor",label:(0,ne.NC)("setSelectionAnchor","Set Selection Anchor"),alias:"Set Selection Anchor",precondition:void 0,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2080),weight:100}})}async run(e,t){var i;null===(i=Pe.get(t))||void 0===i||i.setSelectionAnchor()}}class Te extends ee.R6{constructor(){super({id:"editor.action.goToSelectionAnchor",label:(0,ne.NC)("goToSelectionAnchor","Go to Selection Anchor"),alias:"Go to Selection Anchor",precondition:Re})}async run(e,t){var i;null===(i=Pe.get(t))||void 0===i||i.goToSelectionAnchor()}}class Ee extends ee.R6{constructor(){super({id:"editor.action.selectFromAnchorToCursor",label:(0,ne.NC)("selectFromAnchorToCursor","Select from Anchor to Cursor"),alias:"Select from Anchor to Cursor",precondition:Re,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2089),weight:100}})}async run(e,t){var i;null===(i=Pe.get(t))||void 0===i||i.selectFromAnchorToCursor()}}class Ae extends ee.R6{constructor(){super({id:"editor.action.cancelSelectionAnchor",label:(0,ne.NC)("cancelSelectionAnchor","Cancel Selection Anchor"),alias:"Cancel Selection Anchor",precondition:Re,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:9,weight:100}})}async run(e,t){var i;null===(i=Pe.get(t))||void 0===i||i.cancelSelectionAnchor()}}(0,ee._K)(Pe.ID,Pe,4),(0,ee.Qr)(Me),(0,ee.Qr)(Te),(0,ee.Qr)(Ee),(0,ee.Qr)(Ae);var Oe=i(60282),Fe=i(89599),We=i(2067),He=i(10670),Ve=i(27127),Be=i(22659),ze=i(87701),Ue=i(17903);const Ke=(0,ze.P6G)("editorOverviewRuler.bracketMatchForeground",{dark:"#A0A0A0",light:"#A0A0A0",hcDark:"#A0A0A0",hcLight:"#A0A0A0"},ne.NC("overviewRulerBracketMatchForeground","Overview ruler marker color for matching brackets."));class je extends ee.R6{constructor(){super({id:"editor.action.jumpToBracket",label:ne.NC("smartSelect.jumpBracket","Go to Bracket"),alias:"Go to Bracket",precondition:void 0,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:3165,weight:100}})}run(e,t){var i;null===(i=Ze.get(t))||void 0===i||i.jumpToBracket()}}class qe extends ee.R6{constructor(){super({id:"editor.action.selectToBracket",label:ne.NC("smartSelect.selectToBracket","Select to Bracket"),alias:"Select to Bracket",precondition:void 0,metadata:{description:ne.vv("smartSelect.selectToBracketDescription","Select the text inside and including the brackets or curly braces"),args:[{name:"args",schema:{type:"object",properties:{selectBrackets:{type:"boolean",default:!0}}}}]}})}run(e,t,i){var o;let n=!0;i&&!1===i.selectBrackets&&(n=!1),null===(o=Ze.get(t))||void 0===o||o.selectToBracket(n)}}class Ge extends ee.R6{constructor(){super({id:"editor.action.removeBrackets",label:ne.NC("smartSelect.removeBrackets","Remove Brackets"),alias:"Remove Brackets",precondition:void 0,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:2561,weight:100}})}run(e,t){var i;null===(i=Ze.get(t))||void 0===i||i.removeBrackets(this.id)}}class Qe{constructor(e,t,i){this.position=e,this.brackets=t,this.options=i}}class Ze extends Fe.JT{static get(e){return e.getContribution(Ze.ID)}constructor(e){super(),this._editor=e,this._lastBracketsData=[],this._lastVersionId=0,this._decorations=this._editor.createDecorationsCollection(),this._updateBracketsSoon=this._register(new Oe.pY((()=>this._updateBrackets()),50)),this._matchBrackets=this._editor.getOption(72),this._updateBracketsSoon.schedule(),this._register(e.onDidChangeCursorPosition((e=>{"never"!==this._matchBrackets&&this._updateBracketsSoon.schedule()}))),this._register(e.onDidChangeModelContent((e=>{this._updateBracketsSoon.schedule()}))),this._register(e.onDidChangeModel((e=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()}))),this._register(e.onDidChangeModelLanguageConfiguration((e=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()}))),this._register(e.onDidChangeConfiguration((e=>{e.hasChanged(72)&&(this._matchBrackets=this._editor.getOption(72),this._decorations.clear(),this._lastBracketsData=[],this._lastVersionId=0,this._updateBracketsSoon.schedule())}))),this._register(e.onDidBlurEditorWidget((()=>{this._updateBracketsSoon.schedule()}))),this._register(e.onDidFocusEditorWidget((()=>{this._updateBracketsSoon.schedule()})))}jumpToBracket(){if(!this._editor.hasModel())return;const e=this._editor.getModel(),t=this._editor.getSelections().map((t=>{const i=t.getStartPosition(),o=e.bracketPairs.matchBracket(i);let n=null;if(o)o[0].containsPosition(i)&&!o[1].containsPosition(i)?n=o[1].getStartPosition():o[1].containsPosition(i)&&(n=o[0].getStartPosition());else{const t=e.bracketPairs.findEnclosingBrackets(i);if(t)n=t[1].getStartPosition();else{const t=e.bracketPairs.findNextBracket(i);t&&t.range&&(n=t.range.getStartPosition())}}return n?new ke.Y(n.lineNumber,n.column,n.lineNumber,n.column):new ke.Y(i.lineNumber,i.column,i.lineNumber,i.column)}));this._editor.setSelections(t),this._editor.revealRange(t[0])}selectToBracket(e){if(!this._editor.hasModel())return;const t=this._editor.getModel(),i=[];this._editor.getSelections().forEach((o=>{const n=o.getStartPosition();let s=t.bracketPairs.matchBracket(n);if(!s&&(s=t.bracketPairs.findEnclosingBrackets(n),!s)){const e=t.bracketPairs.findNextBracket(n);e&&e.range&&(s=t.bracketPairs.matchBracket(e.range.getStartPosition()))}let r=null,a=null;if(s){s.sort(He.e.compareRangesUsingStarts);const[t,i]=s;if(r=e?t.getStartPosition():t.getEndPosition(),a=e?i.getEndPosition():i.getStartPosition(),i.containsPosition(n)){const e=r;r=a,a=e}}r&&a&&i.push(new ke.Y(r.lineNumber,r.column,a.lineNumber,a.column))})),i.length>0&&(this._editor.setSelections(i),this._editor.revealRange(i[0]))}removeBrackets(e){if(!this._editor.hasModel())return;const t=this._editor.getModel();this._editor.getSelections().forEach((i=>{const o=i.getPosition();let n=t.bracketPairs.matchBracket(o);n||(n=t.bracketPairs.findEnclosingBrackets(o)),n&&(this._editor.pushUndoStop(),this._editor.executeEdits(e,[{range:n[0],text:""},{range:n[1],text:""}]),this._editor.pushUndoStop())}))}_updateBrackets(){if("never"===this._matchBrackets)return;this._recomputeBrackets();const e=[];let t=0;for(const i of this._lastBracketsData){const o=i.brackets;o&&(e[t++]={range:o[0],options:i.options},e[t++]={range:o[1],options:i.options})}this._decorations.set(e)}_recomputeBrackets(){if(!this._editor.hasModel()||!this._editor.hasWidgetFocus())return this._lastBracketsData=[],void(this._lastVersionId=0);const e=this._editor.getSelections();if(e.length>100)return this._lastBracketsData=[],void(this._lastVersionId=0);const t=this._editor.getModel(),i=t.getVersionId();let o=[];this._lastVersionId===i&&(o=this._lastBracketsData);const n=[];let s=0;for(let c=0,h=e.length;c<h;c++){const t=e[c];t.isEmpty()&&(n[s++]=t.getStartPosition())}n.length>1&&n.sort(We.L.compare);const r=[];let a=0,l=0;const d=o.length;for(let c=0,h=n.length;c<h;c++){const e=n[c];for(;l<d&&o[l].position.isBefore(e);)l++;if(l<d&&o[l].position.equals(e))r[a++]=o[l];else{let i=t.bracketPairs.matchBracket(e,20),o=Ze._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;i||"always"!==this._matchBrackets||(i=t.bracketPairs.findEnclosingBrackets(e,20),o=Ze._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER),r[a++]=new Qe(e,i,o)}}this._lastBracketsData=r,this._lastVersionId=i}}Ze.ID="editor.contrib.bracketMatchingController",Ze._DECORATION_OPTIONS_WITH_OVERVIEW_RULER=Be.qx.register({description:"bracket-match-overview",stickiness:1,className:"bracket-match",overviewRuler:{color:(0,Ue.EN)(Ke),position:Ve.sh.Center}}),Ze._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER=Be.qx.register({description:"bracket-match-no-overview",stickiness:1,className:"bracket-match"}),(0,ee._K)(Ze.ID,Ze,1),(0,ee.Qr)(qe),(0,ee.Qr)(je),(0,ee.Qr)(Ge),se.BH.appendMenuItem(se.eH.MenubarGoMenu,{group:"5_infile_nav",command:{id:"editor.action.jumpToBracket",title:ne.NC({key:"miGoToBracket",comment:["&& denotes a mnemonic"]},"Go to &&Bracket")},order:2});class Ye{constructor(e,t){this._selection=e,this._isMovingLeft=t}getEditOperations(e,t){if(this._selection.startLineNumber!==this._selection.endLineNumber||this._selection.isEmpty())return;const i=this._selection.startLineNumber,o=this._selection.startColumn,n=this._selection.endColumn;if((!this._isMovingLeft||1!==o)&&(this._isMovingLeft||n!==e.getLineMaxColumn(i)))if(this._isMovingLeft){const s=new He.e(i,o-1,i,o),r=e.getValueInRange(s);t.addEditOperation(s,null),t.addEditOperation(new He.e(i,n,i,n),r)}else{const s=new He.e(i,n,i,n+1),r=e.getValueInRange(s);t.addEditOperation(s,null),t.addEditOperation(new He.e(i,o,i,o),r)}}computeCursorState(e,t){return this._isMovingLeft?new ke.Y(this._selection.startLineNumber,this._selection.startColumn-1,this._selection.endLineNumber,this._selection.endColumn-1):new ke.Y(this._selection.startLineNumber,this._selection.startColumn+1,this._selection.endLineNumber,this._selection.endColumn+1)}}class Je extends ee.R6{constructor(e,t){super(t),this.left=e}run(e,t){if(!t.hasModel())return;const i=[],o=t.getSelections();for(const n of o)i.push(new Ye(n,this.left));t.pushUndoStop(),t.executeCommands(this.id,i),t.pushUndoStop()}}(0,ee.Qr)(class extends Je{constructor(){super(!0,{id:"editor.action.moveCarretLeftAction",label:ne.NC("caret.moveLeft","Move Selected Text Left"),alias:"Move Selected Text Left",precondition:oe.u.writable})}}),(0,ee.Qr)(class extends Je{constructor(){super(!1,{id:"editor.action.moveCarretRightAction",label:ne.NC("caret.moveRight","Move Selected Text Right"),alias:"Move Selected Text Right",precondition:oe.u.writable})}});var $e=i(27121),Xe=i(96939);class et extends ee.R6{constructor(){super({id:"editor.action.transposeLetters",label:ne.NC("transposeLetters.label","Transpose Letters"),alias:"Transpose Letters",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.textInputFocus,primary:0,mac:{primary:306},weight:100}})}run(e,t){if(!t.hasModel())return;const i=t.getModel(),o=[],n=t.getSelections();for(const s of n){if(!s.isEmpty())continue;const e=s.startLineNumber,t=s.startColumn,n=i.getLineMaxColumn(e);if(1===e&&(1===t||2===t&&2===n))continue;const r=t===n?s.getPosition():Xe.o.rightPosition(i,s.getPosition().lineNumber,s.getPosition().column),a=Xe.o.leftPosition(i,r),l=Xe.o.leftPosition(i,a),d=i.getValueInRange(He.e.fromPositions(l,a)),c=i.getValueInRange(He.e.fromPositions(a,r)),h=He.e.fromPositions(l,r);o.push(new $e.T4(h,c+d))}o.length>0&&(t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop())}}(0,ee.Qr)(et);var tt=i(42606),it=i(21511),ot=i(73451),nt=i(75629),st=i(36952);const rt=function(){if("object"===typeof crypto&&"function"===typeof crypto.randomUUID)return crypto.randomUUID.bind(crypto);let e;e="object"===typeof crypto&&"function"===typeof crypto.getRandomValues?crypto.getRandomValues.bind(crypto):function(e){for(let t=0;t<e.length;t++)e[t]=Math.floor(256*Math.random());return e};const t=new Uint8Array(16),i=[];for(let o=0;o<256;o++)i.push(o.toString(16).padStart(2,"0"));return function(){e(t),t[6]=15&t[6]|64,t[8]=63&t[8]|128;let o=0,n="";return n+=i[t[o++]],n+=i[t[o++]],n+=i[t[o++]],n+=i[t[o++]],n+="-",n+=i[t[o++]],n+=i[t[o++]],n+="-",n+=i[t[o++]],n+=i[t[o++]],n+="-",n+=i[t[o++]],n+=i[t[o++]],n+="-",n+=i[t[o++]],n+=i[t[o++]],n+=i[t[o++]],n+=i[t[o++]],n+=i[t[o++]],n+=i[t[o++]],n}}();function at(e){return{asString:async()=>e,asFile:()=>{},value:"string"===typeof e?e:void 0}}class lt{constructor(){this._entries=new Map}get size(){let e=0;for(const t of this._entries)e++;return e}has(e){return this._entries.has(this.toKey(e))}matches(e){const t=[...this._entries.keys()];return st.$.some(this,(e=>{let[t,i]=e;return i.asFile()}))&&t.push("files"),ht(dt(e),t)}get(e){var t;return null===(t=this._entries.get(this.toKey(e)))||void 0===t?void 0:t[0]}append(e,t){const i=this._entries.get(e);i?i.push(t):this._entries.set(this.toKey(e),[t])}replace(e,t){this._entries.set(this.toKey(e),[t])}delete(e){this._entries.delete(this.toKey(e))}*[Symbol.iterator](){for(const[e,t]of this._entries)for(const i of t)yield[e,i]}toKey(e){return dt(e)}}function dt(e){return e.toLowerCase()}function ct(e,t){return ht(dt(e),t.map(dt))}function ht(e,t){if("*/*"===e)return t.length>0;if(t.includes(e))return!0;const i=e.match(/^([a-z]+)\/([a-z]+|\*)$/i);if(!i)return!1;const[o,n,s]=i;return"*"===s&&t.some((e=>e.startsWith(n+"/")))}const ut=Object.freeze({create:e=>(0,nt.EB)(e.map((e=>e.toString()))).join("\r\n"),split:e=>e.split("\r\n"),parse:e=>ut.split(e).filter((e=>!e.startsWith("#")))});class gt{constructor(e){this.value=e}equals(e){return this.value===e.value}contains(e){return this.equals(e)||""===this.value||e.value.startsWith(this.value+gt.sep)}intersects(e){return this.contains(e)||e.contains(this)}append(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return new gt((this.value?[this.value,...t]:t).join(gt.sep))}}gt.sep=".",gt.None=new gt("@@none@@"),gt.Empty=new gt("");var pt=i(51572),mt=i(86487),_t=i(82682),ft=i(70311);const vt="CodeEditors",bt="CodeFiles";ft.B.add("workbench.contributions.dragAndDrop",new class{});class Ct{constructor(){}static getInstance(){return Ct.INSTANCE}hasData(e){return e&&e===this.proto}getData(e){if(this.hasData(e))return this.data}}function St(e){const t=new lt;for(const i of e.items){const e=i.type;if("string"===i.kind){const o=new Promise((e=>i.getAsString(e)));t.append(e,at(o))}else if("file"===i.kind){const o=i.getAsFile();o&&t.append(e,yt(o))}}return t}function yt(e){const t=e.path?_t.o.parse(e.path):void 0;return function(e,t,i){const o={id:rt(),name:e,uri:t,data:i};return{asString:async()=>"",asFile:()=>o,value:void 0}}(e.name,t,(async()=>new Uint8Array(await e.arrayBuffer())))}Ct.INSTANCE=new Ct;const wt=Object.freeze([vt,bt,mt.g.RESOURCES,mt.g.INTERNAL_URI_LIST]);function xt(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=St(e),o=i.get(mt.g.INTERNAL_URI_LIST);if(o)i.replace(pt.v.uriList,o);else if(t||!i.has(pt.v.uriList)){const t=[];for(const i of e.items){const e=i.getAsFile();if(e){const i=e.path;try{i?t.push(_t.o.file(i).toString()):t.push(_t.o.parse(e.name,!0).toString())}catch(wa){}}}t.length&&i.replace(pt.v.uriList,at(ut.create(t)))}for(const n of wt)i.delete(n);return i}var Nt=i(621),Lt=i(761),kt=i(89752),Dt=i(33211),It=i(55694),Rt=i(73449),Pt=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Mt=function(e,t){return function(i,o){t(i,o,e)}};class Tt{async provideDocumentPasteEdits(e,t,i,o,n){const s=await this.getEdit(i,n);if(s)return{dispose(){},edits:[{insertText:s.insertText,title:s.title,kind:s.kind,handledMimeType:s.handledMimeType,yieldTo:s.yieldTo}]}}async provideDocumentOnDropEdits(e,t,i,o){const n=await this.getEdit(i,o);return n?[{insertText:n.insertText,title:n.title,kind:n.kind,handledMimeType:n.handledMimeType,yieldTo:n.yieldTo}]:void 0}}class Et extends Tt{constructor(){super(...arguments),this.kind=Et.kind,this.dropMimeTypes=[pt.v.text],this.pasteMimeTypes=[pt.v.text]}async getEdit(e,t){const i=e.get(pt.v.text);if(!i)return;if(e.has(pt.v.uriList))return;const o=await i.asString();return{handledMimeType:pt.v.text,title:(0,ne.NC)("text.label","Insert Plain Text"),insertText:o,kind:this.kind}}}Et.id="text",Et.kind=new gt("text.plain");class At extends Tt{constructor(){super(...arguments),this.kind=new gt("uri.absolute"),this.dropMimeTypes=[pt.v.uriList],this.pasteMimeTypes=[pt.v.uriList]}async getEdit(e,t){const i=await Wt(e);if(!i.length||t.isCancellationRequested)return;let o=0;const n=i.map((e=>{let{uri:t,originalText:i}=e;return t.scheme===Dt.lg.file?t.fsPath:(o++,i)})).join(" ");let s;return s=o>0?i.length>1?(0,ne.NC)("defaultDropProvider.uriList.uris","Insert Uris"):(0,ne.NC)("defaultDropProvider.uriList.uri","Insert Uri"):i.length>1?(0,ne.NC)("defaultDropProvider.uriList.paths","Insert Paths"):(0,ne.NC)("defaultDropProvider.uriList.path","Insert Path"),{handledMimeType:pt.v.uriList,insertText:n,title:s,kind:this.kind}}}let Ot=class extends Tt{constructor(e){super(),this._workspaceContextService=e,this.kind=new gt("uri.relative"),this.dropMimeTypes=[pt.v.uriList],this.pasteMimeTypes=[pt.v.uriList]}async getEdit(e,t){const i=await Wt(e);if(!i.length||t.isCancellationRequested)return;const o=(0,nt.kX)(i.map((e=>{let{uri:t}=e;const i=this._workspaceContextService.getWorkspaceFolder(t);return i?(0,It.lX)(i.uri,t):void 0})));return o.length?{handledMimeType:pt.v.uriList,insertText:o.join(" "),title:i.length>1?(0,ne.NC)("defaultDropProvider.uriList.relativePaths","Insert Relative Paths"):(0,ne.NC)("defaultDropProvider.uriList.relativePath","Insert Relative Path"),kind:this.kind}:void 0}};Ot=Pt([Mt(0,Rt.ec)],Ot);class Ft{constructor(){this.kind=new gt("html"),this.pasteMimeTypes=["text/html"],this._yieldTo=[{mimeType:pt.v.text}]}async provideDocumentPasteEdits(e,t,i,o,n){var s;if(o.triggerKind!==Lt.Nq.PasteAs&&!(null===(s=o.only)||void 0===s?void 0:s.contains(this.kind)))return;const r=i.get("text/html"),a=await(null===r||void 0===r?void 0:r.asString());return a&&!n.isCancellationRequested?{dispose(){},edits:[{insertText:a,yieldTo:this._yieldTo,title:(0,ne.NC)("pasteHtmlLabel","Insert HTML"),kind:this.kind}]}:void 0}}async function Wt(e){const t=e.get(pt.v.uriList);if(!t)return[];const i=await t.asString(),o=[];for(const n of ut.parse(i))try{o.push({uri:_t.o.parse(n),originalText:n})}catch(wa){}return o}let Ht=class extends Fe.JT{constructor(e,t){super(),this._register(e.documentOnDropEditProvider.register("*",new Et)),this._register(e.documentOnDropEditProvider.register("*",new At)),this._register(e.documentOnDropEditProvider.register("*",new Ot(t)))}};Ht=Pt([Mt(0,kt.p),Mt(1,Rt.ec)],Ht);let Vt=class extends Fe.JT{constructor(e,t){super(),this._register(e.documentPasteEditProvider.register("*",new Et)),this._register(e.documentPasteEditProvider.register("*",new At)),this._register(e.documentPasteEditProvider.register("*",new Ot(t))),this._register(e.documentPasteEditProvider.register("*",new Ft))}};Vt=Pt([Mt(0,kt.p),Mt(1,Rt.ec)],Vt);class Bt{constructor(){this.value="",this.pos=0}static isDigitCharacter(e){return e>=48&&e<=57}static isVariableCharacter(e){return 95===e||e>=97&&e<=122||e>=65&&e<=90}text(e){this.value=e,this.pos=0}tokenText(e){return this.value.substr(e.pos,e.len)}next(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};const e=this.pos;let t,i=0,o=this.value.charCodeAt(e);if(t=Bt._table[o],"number"===typeof t)return this.pos+=1,{type:t,pos:e,len:1};if(Bt.isDigitCharacter(o)){t=8;do{i+=1,o=this.value.charCodeAt(e+i)}while(Bt.isDigitCharacter(o));return this.pos+=i,{type:t,pos:e,len:i}}if(Bt.isVariableCharacter(o)){t=9;do{o=this.value.charCodeAt(e+ ++i)}while(Bt.isVariableCharacter(o)||Bt.isDigitCharacter(o));return this.pos+=i,{type:t,pos:e,len:i}}t=10;do{i+=1,o=this.value.charCodeAt(e+i)}while(!isNaN(o)&&"undefined"===typeof Bt._table[o]&&!Bt.isDigitCharacter(o)&&!Bt.isVariableCharacter(o));return this.pos+=i,{type:t,pos:e,len:i}}}Bt._table={36:0,58:1,44:2,123:3,125:4,92:5,47:6,124:7,43:11,45:12,63:13};class zt{constructor(){this._children=[]}appendChild(e){return e instanceof Ut&&this._children[this._children.length-1]instanceof Ut?this._children[this._children.length-1].value+=e.value:(e.parent=this,this._children.push(e)),this}replace(e,t){const{parent:i}=e,o=i.children.indexOf(e),n=i.children.slice(0);n.splice(o,1,...t),i._children=n,function e(t,i){for(const o of t)o.parent=i,e(o.children,o)}(t,i)}get children(){return this._children}get rightMostDescendant(){return this._children.length>0?this._children[this._children.length-1].rightMostDescendant:this}get snippet(){let e=this;for(;;){if(!e)return;if(e instanceof Jt)return e;e=e.parent}}toString(){return this.children.reduce(((e,t)=>e+t.toString()),"")}len(){return 0}}class Ut extends zt{constructor(e){super(),this.value=e}toString(){return this.value}len(){return this.value.length}clone(){return new Ut(this.value)}}class Kt extends zt{}class jt extends Kt{static compareByIndex(e,t){return e.index===t.index?0:e.isFinalTabstop?1:t.isFinalTabstop||e.index<t.index?-1:e.index>t.index?1:0}constructor(e){super(),this.index=e}get isFinalTabstop(){return 0===this.index}get choice(){return 1===this._children.length&&this._children[0]instanceof qt?this._children[0]:void 0}clone(){const e=new jt(this.index);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map((e=>e.clone())),e}}class qt extends zt{constructor(){super(...arguments),this.options=[]}appendChild(e){return e instanceof Ut&&(e.parent=this,this.options.push(e)),this}toString(){return this.options[0].value}len(){return this.options[0].len()}clone(){const e=new qt;return this.options.forEach(e.appendChild,e),e}}class Gt extends zt{constructor(){super(...arguments),this.regexp=new RegExp("")}resolve(e){const t=this;let i=!1,o=e.replace(this.regexp,(function(){return i=!0,t._replace(Array.prototype.slice.call(arguments,0,-2))}));return!i&&this._children.some((e=>e instanceof Qt&&Boolean(e.elseValue)))&&(o=this._replace([])),o}_replace(e){let t="";for(const i of this._children)if(i instanceof Qt){let o=e[i.index]||"";o=i.resolve(o),t+=o}else t+=i.toString();return t}toString(){return""}clone(){const e=new Gt;return e.regexp=new RegExp(this.regexp.source,(this.regexp.ignoreCase?"i":"")+(this.regexp.global?"g":"")),e._children=this.children.map((e=>e.clone())),e}}class Qt extends zt{constructor(e,t,i,o){super(),this.index=e,this.shorthandName=t,this.ifValue=i,this.elseValue=o}resolve(e){return"upcase"===this.shorthandName?e?e.toLocaleUpperCase():"":"downcase"===this.shorthandName?e?e.toLocaleLowerCase():"":"capitalize"===this.shorthandName?e?e[0].toLocaleUpperCase()+e.substr(1):"":"pascalcase"===this.shorthandName?e?this._toPascalCase(e):"":"camelcase"===this.shorthandName?e?this._toCamelCase(e):"":Boolean(e)&&"string"===typeof this.ifValue?this.ifValue:Boolean(e)||"string"!==typeof this.elseValue?e||"":this.elseValue}_toPascalCase(e){const t=e.match(/[a-z0-9]+/gi);return t?t.map((e=>e.charAt(0).toUpperCase()+e.substr(1))).join(""):e}_toCamelCase(e){const t=e.match(/[a-z0-9]+/gi);return t?t.map(((e,t)=>0===t?e.charAt(0).toLowerCase()+e.substr(1):e.charAt(0).toUpperCase()+e.substr(1))).join(""):e}clone(){return new Qt(this.index,this.shorthandName,this.ifValue,this.elseValue)}}class Zt extends Kt{constructor(e){super(),this.name=e}resolve(e){let t=e.resolve(this);return this.transform&&(t=this.transform.resolve(t||"")),void 0!==t&&(this._children=[new Ut(t)],!0)}clone(){const e=new Zt(this.name);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map((e=>e.clone())),e}}function Yt(e,t){const i=[...e];for(;i.length>0;){const e=i.shift();if(!t(e))break;i.unshift(...e.children)}}class Jt extends zt{get placeholderInfo(){if(!this._placeholders){const e=[];let t;this.walk((function(i){return i instanceof jt&&(e.push(i),t=!t||t.index<i.index?i:t),!0})),this._placeholders={all:e,last:t}}return this._placeholders}get placeholders(){const{all:e}=this.placeholderInfo;return e}offset(e){let t=0,i=!1;return this.walk((o=>o===e?(i=!0,!1):(t+=o.len(),!0))),i?t:-1}fullLen(e){let t=0;return Yt([e],(e=>(t+=e.len(),!0))),t}enclosingPlaceholders(e){const t=[];let{parent:i}=e;for(;i;)i instanceof jt&&t.push(i),i=i.parent;return t}resolveVariables(e){return this.walk((t=>(t instanceof Zt&&t.resolve(e)&&(this._placeholders=void 0),!0))),this}appendChild(e){return this._placeholders=void 0,super.appendChild(e)}replace(e,t){return this._placeholders=void 0,super.replace(e,t)}clone(){const e=new Jt;return this._children=this.children.map((e=>e.clone())),e}walk(e){Yt(this.children,e)}}class $t{constructor(){this._scanner=new Bt,this._token={type:14,pos:0,len:0}}static escape(e){return e.replace(/\$|}|\\/g,"\\$&")}static guessNeedsClipboard(e){return/\${?CLIPBOARD/.test(e)}parse(e,t,i){const o=new Jt;return this.parseFragment(e,o),this.ensureFinalTabstop(o,null!==i&&void 0!==i&&i,null!==t&&void 0!==t&&t),o}parseFragment(e,t){const i=t.children.length;for(this._scanner.text(e),this._token=this._scanner.next();this._parse(t););const o=new Map,n=[];t.walk((e=>(e instanceof jt&&(e.isFinalTabstop?o.set(0,void 0):!o.has(e.index)&&e.children.length>0?o.set(e.index,e.children):n.push(e)),!0)));const s=(e,i)=>{const n=o.get(e.index);if(!n)return;const r=new jt(e.index);r.transform=e.transform;for(const t of n){const e=t.clone();r.appendChild(e),e instanceof jt&&o.has(e.index)&&!i.has(e.index)&&(i.add(e.index),s(e,i),i.delete(e.index))}t.replace(e,[r])},r=new Set;for(const a of n)s(a,r);return t.children.slice(i)}ensureFinalTabstop(e,t,i){if(t||i&&e.placeholders.length>0){e.placeholders.find((e=>0===e.index))||e.appendChild(new jt(0))}}_accept(e,t){if(void 0===e||this._token.type===e){const e=!t||this._scanner.tokenText(this._token);return this._token=this._scanner.next(),e}return!1}_backTo(e){return this._scanner.pos=e.pos+e.len,this._token=e,!1}_until(e){const t=this._token;for(;this._token.type!==e;){if(14===this._token.type)return!1;if(5===this._token.type){const e=this._scanner.next();if(0!==e.type&&4!==e.type&&5!==e.type)return!1}this._token=this._scanner.next()}const i=this._scanner.value.substring(t.pos,this._token.pos).replace(/\\(\$|}|\\)/g,"$1");return this._token=this._scanner.next(),i}_parse(e){return this._parseEscaped(e)||this._parseTabstopOrVariableName(e)||this._parseComplexPlaceholder(e)||this._parseComplexVariable(e)||this._parseAnything(e)}_parseEscaped(e){let t;return!!(t=this._accept(5,!0))&&(t=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||t,e.appendChild(new Ut(t)),!0)}_parseTabstopOrVariableName(e){let t;const i=this._token;return this._accept(0)&&(t=this._accept(9,!0)||this._accept(8,!0))?(e.appendChild(/^\d+$/.test(t)?new jt(Number(t)):new Zt(t)),!0):this._backTo(i)}_parseComplexPlaceholder(e){let t;const i=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(8,!0))))return this._backTo(i);const o=new jt(Number(t));if(this._accept(1))for(;;){if(this._accept(4))return e.appendChild(o),!0;if(!this._parse(o))return e.appendChild(new Ut("${"+t+":")),o.children.forEach(e.appendChild,e),!0}else{if(!(o.index>0&&this._accept(7)))return this._accept(6)?this._parseTransform(o)?(e.appendChild(o),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(o),!0):this._backTo(i);{const t=new qt;for(;;){if(this._parseChoiceElement(t)){if(this._accept(2))continue;if(this._accept(7)&&(o.appendChild(t),this._accept(4)))return e.appendChild(o),!0}return this._backTo(i),!1}}}}_parseChoiceElement(e){const t=this._token,i=[];for(;2!==this._token.type&&7!==this._token.type;){let e;if(e=(e=this._accept(5,!0))?this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||e:this._accept(void 0,!0),!e)return this._backTo(t),!1;i.push(e)}return 0===i.length?(this._backTo(t),!1):(e.appendChild(new Ut(i.join(""))),!0)}_parseComplexVariable(e){let t;const i=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(9,!0))))return this._backTo(i);const o=new Zt(t);if(!this._accept(1))return this._accept(6)?this._parseTransform(o)?(e.appendChild(o),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(o),!0):this._backTo(i);for(;;){if(this._accept(4))return e.appendChild(o),!0;if(!this._parse(o))return e.appendChild(new Ut("${"+t+":")),o.children.forEach(e.appendChild,e),!0}}_parseTransform(e){const t=new Gt;let i="",o="";for(;!this._accept(6);){let e;if(e=this._accept(5,!0))e=this._accept(6,!0)||e,i+=e;else{if(14===this._token.type)return!1;i+=this._accept(void 0,!0)}}for(;!this._accept(6);){let e;if(e=this._accept(5,!0))e=this._accept(5,!0)||this._accept(6,!0)||e,t.appendChild(new Ut(e));else if(!this._parseFormatString(t)&&!this._parseAnything(t))return!1}for(;!this._accept(4);){if(14===this._token.type)return!1;o+=this._accept(void 0,!0)}try{t.regexp=new RegExp(i,o)}catch(n){return!1}return e.transform=t,!0}_parseFormatString(e){const t=this._token;if(!this._accept(0))return!1;let i=!1;this._accept(3)&&(i=!0);const o=this._accept(8,!0);if(!o)return this._backTo(t),!1;if(!i)return e.appendChild(new Qt(Number(o))),!0;if(this._accept(4))return e.appendChild(new Qt(Number(o))),!0;if(!this._accept(1))return this._backTo(t),!1;if(this._accept(6)){const i=this._accept(9,!0);return i&&this._accept(4)?(e.appendChild(new Qt(Number(o),i)),!0):(this._backTo(t),!1)}if(this._accept(11)){const t=this._until(4);if(t)return e.appendChild(new Qt(Number(o),void 0,t,void 0)),!0}else if(this._accept(12)){const t=this._until(4);if(t)return e.appendChild(new Qt(Number(o),void 0,void 0,t)),!0}else if(this._accept(13)){const t=this._until(1);if(t){const i=this._until(4);if(i)return e.appendChild(new Qt(Number(o),void 0,t,i)),!0}}else{const t=this._until(4);if(t)return e.appendChild(new Qt(Number(o),void 0,void 0,t)),!0}return this._backTo(t),!1}_parseAnything(e){return 14!==this._token.type&&(e.appendChild(new Ut(this._scanner.tokenText(this._token))),this._accept(void 0),!0)}}function Xt(e,t,i){var o,n,s,r;return("string"===typeof i.insertText?""===i.insertText:""===i.insertText.snippet)?{edits:null!==(n=null===(o=i.additionalEdit)||void 0===o?void 0:o.edits)&&void 0!==n?n:[]}:{edits:[...t.map((t=>new Nt.Gl(e,{range:t,text:"string"===typeof i.insertText?$t.escape(i.insertText)+"$0":i.insertText.snippet,insertAsSnippet:!0}))),...null!==(r=null===(s=i.additionalEdit)||void 0===s?void 0:s.edits)&&void 0!==r?r:[]]}}function ei(e){var t;function i(e,t){return"mimeType"in e?e.mimeType===t.handledMimeType:!!t.kind&&e.kind.contains(t.kind)}const o=new Map;for(const r of e)for(const n of null!==(t=r.yieldTo)&&void 0!==t?t:[])for(const t of e)if(t!==r&&i(n,t)){let e=o.get(r);e||(e=[],o.set(r,e)),e.push(t)}if(!o.size)return Array.from(e);const n=new Set,s=[];return function e(t){if(!t.length)return[];const i=t[0];if(s.includes(i))return console.warn("Yield to cycle detected",i),t;if(n.has(i))return e(t.slice(1));let r=[];const a=o.get(i);return a&&(s.push(i),r=e(a),s.pop()),n.add(i),[...r,i,...e(t.slice(1))]}(Array.from(e))}var ti=i(15176),ii=i(25085),oi=i(62502),ni=i(34304),si=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ri=function(e,t){return function(i,o){t(i,o,e)}};const ai=Be.qx.register({description:"inline-progress-widget",stickiness:1,showIfCollapsed:!0,after:{content:ii.B4,inlineClassName:"inline-editor-progress-decoration",inlineClassNameAffectsLetterSpacing:!0}});class li extends Fe.JT{constructor(e,t,i,o,n){super(),this.typeId=e,this.editor=t,this.range=i,this.delegate=n,this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this.create(o),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this)}create(e){this.domNode=X.$(".inline-progress-widget"),this.domNode.role="button",this.domNode.title=e;const t=X.$("span.icon");this.domNode.append(t),t.classList.add(...oi.k.asClassNameArray($.l.loading),"codicon-modifier-spin");const i=()=>{const e=this.editor.getOption(67);this.domNode.style.height="".concat(e,"px"),this.domNode.style.width="".concat(Math.ceil(.8*e),"px")};i(),this._register(this.editor.onDidChangeConfiguration((e=>{(e.hasChanged(52)||e.hasChanged(67))&&i()}))),this._register(X.nm(this.domNode,X.tw.CLICK,(e=>{this.delegate.cancel()})))}getId(){return li.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:{lineNumber:this.range.startLineNumber,column:this.range.startColumn},preference:[0]}}dispose(){super.dispose(),this.editor.removeContentWidget(this)}}li.baseId="editor.widget.inlineProgressWidget";let di=class extends Fe.JT{constructor(e,t,i){super(),this.id=e,this._editor=t,this._instantiationService=i,this._showDelay=500,this._showPromise=this._register(new Fe.XK),this._currentWidget=new Fe.XK,this._operationIdPool=0,this._currentDecorations=t.createDecorationsCollection()}async showWhile(e,t,i){const o=this._operationIdPool++;this._currentOperation=o,this.clear(),this._showPromise.value=(0,Oe.Vg)((()=>{const o=He.e.fromPositions(e);this._currentDecorations.set([{range:o,options:ai}]).length>0&&(this._currentWidget.value=this._instantiationService.createInstance(li,this.id,this._editor,o,t,i))}),this._showDelay);try{return await i}finally{this._currentOperation===o&&(this.clear(),this._currentOperation=void 0)}}clear(){this._showPromise.clear(),this._currentDecorations.clear(),this._currentWidget.clear()}};di=si([ri(2,ni.TG)],di);var ci,hi=i(21687),ui=i(24219),gi=i(36281),pi=i(51460),mi=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},_i=function(e,t){return function(i,o){t(i,o,e)}};let fi=ci=class{static get(e){return e.getContribution(ci.ID)}constructor(e,t,i){this._openerService=i,this._messageWidget=new Fe.XK,this._messageListeners=new Fe.SL,this._mouseOverMessage=!1,this._editor=e,this._visible=ci.MESSAGE_VISIBLE.bindTo(t)}dispose(){var e;null===(e=this._message)||void 0===e||e.dispose(),this._messageListeners.dispose(),this._messageWidget.dispose(),this._visible.reset()}showMessage(e,t){let i;(0,xe.Z9)((0,Ne.Fr)(e)?e.value:e),this._visible.set(!0),this._messageWidget.clear(),this._messageListeners.clear(),this._message=(0,Ne.Fr)(e)?(0,hi.ap)(e,{actionHandler:{callback:t=>{this.closeMessage(),(0,gi.N)(this._openerService,t,(0,Ne.Fr)(e)?e.isTrusted:void 0)},disposables:this._messageListeners}}):void 0,this._messageWidget.value=new bi(this._editor,t,"string"===typeof e?e:this._message.element),this._messageListeners.add(ui.ju.debounce(this._editor.onDidBlurEditorText,((e,t)=>t),0)((()=>{this._mouseOverMessage||this._messageWidget.value&&X.jg(X.vY(),this._messageWidget.value.getDomNode())||this.closeMessage()}))),this._messageListeners.add(this._editor.onDidChangeCursorPosition((()=>this.closeMessage()))),this._messageListeners.add(this._editor.onDidDispose((()=>this.closeMessage()))),this._messageListeners.add(this._editor.onDidChangeModel((()=>this.closeMessage()))),this._messageListeners.add(X.nm(this._messageWidget.value.getDomNode(),X.tw.MOUSE_ENTER,(()=>this._mouseOverMessage=!0),!0)),this._messageListeners.add(X.nm(this._messageWidget.value.getDomNode(),X.tw.MOUSE_LEAVE,(()=>this._mouseOverMessage=!1),!0)),this._messageListeners.add(this._editor.onMouseMove((e=>{e.target.position&&(i?i.containsPosition(e.target.position)||this.closeMessage():i=new He.e(t.lineNumber-3,1,e.target.position.lineNumber+3,1))})))}closeMessage(){this._visible.reset(),this._messageListeners.clear(),this._messageWidget.value&&this._messageListeners.add(bi.fadeOut(this._messageWidget.value))}};fi.ID="editor.contrib.messageController",fi.MESSAGE_VISIBLE=new ae.uy("messageVisible",!1,ne.NC("messageVisible","Whether the editor is currently showing an inline message")),fi=ci=mi([_i(1,ae.i6),_i(2,pi.v)],fi);const vi=ee._l.bindToContribution(fi.get);(0,ee.fK)(new vi({id:"leaveEditorMessage",precondition:fi.MESSAGE_VISIBLE,handler:e=>e.closeMessage(),kbOpts:{weight:130,primary:9}}));class bi{static fadeOut(e){const t=()=>{e.dispose(),clearTimeout(i),e.getDomNode().removeEventListener("animationend",t)},i=setTimeout(t,110);return e.getDomNode().addEventListener("animationend",t),e.getDomNode().classList.add("fadeOut"),{dispose:t}}constructor(e,t,i){let{lineNumber:o,column:n}=t;this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._editor=e,this._editor.revealLinesInCenterIfOutsideViewport(o,o,0),this._position={lineNumber:o,column:n},this._domNode=document.createElement("div"),this._domNode.classList.add("monaco-editor-overlaymessage"),this._domNode.style.marginLeft="-6px";const s=document.createElement("div");s.classList.add("anchor","top"),this._domNode.appendChild(s);const r=document.createElement("div");"string"===typeof i?(r.classList.add("message"),r.textContent=i):(i.classList.add("message"),r.appendChild(i)),this._domNode.appendChild(r);const a=document.createElement("div");a.classList.add("anchor","below"),this._domNode.appendChild(a),this._editor.addContentWidget(this),this._domNode.classList.add("fadeIn")}dispose(){this._editor.removeContentWidget(this)}getId(){return"messageoverlay"}getDomNode(){return this._domNode}getPosition(){return{position:this._position,preference:[1,2],positionAffinity:1}}afterRender(e){this._domNode.classList.toggle("below",2===e)}}(0,ee._K)(fi.ID,fi,4);var Ci,Si=i(85729),yi=i(39040),wi=i(35786),xi=i(56925),Ni=i(22337),Li=i(58868),ki=i(46765),Di=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ii=function(e,t){return function(i,o){t(i,o,e)}};let Ri=Ci=class extends Fe.JT{constructor(e,t,i,o,n,s,r,a,l,d){super(),this.typeId=e,this.editor=t,this.showCommand=o,this.range=n,this.edits=s,this.onSelectNewEdit=r,this._contextMenuService=a,this._keybindingService=d,this.allowEditorOverflow=!0,this.suppressMouseDown=!0,this.create(),this.visibleContext=i.bindTo(l),this.visibleContext.set(!0),this._register((0,Fe.OF)((()=>this.visibleContext.reset()))),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this),this._register((0,Fe.OF)((()=>this.editor.removeContentWidget(this)))),this._register(this.editor.onDidChangeCursorPosition((e=>{n.containsPosition(e.position)||this.dispose()}))),this._register(ui.ju.runAndSubscribe(d.onDidUpdateKeybindings,(()=>{this._updateButtonTitle()})))}_updateButtonTitle(){var e;const t=null===(e=this._keybindingService.lookupKeybinding(this.showCommand.id))||void 0===e?void 0:e.getLabel();this.button.element.title=this.showCommand.label+(t?" (".concat(t,")"):"")}create(){this.domNode=X.$(".post-edit-widget"),this.button=this._register(new xi.z(this.domNode,{supportIcons:!0})),this.button.label="$(insert)",this._register(X.nm(this.domNode,X.tw.CLICK,(()=>this.showSelector())))}getId(){return Ci.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:this.range.getEndPosition(),preference:[2]}}showSelector(){this._contextMenuService.showContextMenu({getAnchor:()=>{const e=X.i(this.button.element);return{x:e.left+e.width,y:e.top+e.height}},getActions:()=>this.edits.allEdits.map(((e,t)=>(0,Ni.xw)({id:"",label:e.title,checked:t===this.edits.activeEditIndex,run:()=>{if(t!==this.edits.activeEditIndex)return this.onSelectNewEdit(t)}})))})}};Ri.baseId="editor.widget.postEditWidget",Ri=Ci=Di([Ii(7,Li.i),Ii(8,ae.i6),Ii(9,ki.d)],Ri);let Pi=class extends Fe.JT{constructor(e,t,i,o,n,s){super(),this._id=e,this._editor=t,this._visibleContext=i,this._showCommand=o,this._instantiationService=n,this._bulkEditService=s,this._currentWidget=this._register(new Fe.XK),this._register(ui.ju.any(t.onDidChangeModel,t.onDidChangeModelContent)((()=>this.clear())))}async applyEditAndShowIfNeeded(e,t,i,o,n){const s=this._editor.getModel();if(!s||!e.length)return;const r=t.allEdits.at(t.activeEditIndex);if(!r)return;const a=await o(r,n),l=Xt(s.uri,e,a),d=e[0],c=s.deltaDecorations([],[{range:d,options:{description:"paste-line-suffix",stickiness:0}}]);let h,u;try{h=await this._bulkEditService.apply(l,{editor:this._editor,token:n}),u=s.getDecorationRange(c[0])}finally{s.deltaDecorations(c,[])}i&&h.isApplied&&t.allEdits.length>1&&this.show(null!==u&&void 0!==u?u:d,t,(async s=>{const r=this._editor.getModel();r&&(await r.undo(),this.applyEditAndShowIfNeeded(e,{activeEditIndex:s,allEdits:t.allEdits},i,o,n))}))}show(e,t,i){this.clear(),this._editor.hasModel()&&(this._currentWidget.value=this._instantiationService.createInstance(Ri,this._id,this._editor,this._visibleContext,this._showCommand,e,t,i))}clear(){this._currentWidget.clear()}tryShowSelector(){var e;null===(e=this._currentWidget.value)||void 0===e||e.showSelector()}};Pi=Di([Ii(4,ni.TG),Ii(5,Nt.vu)],Pi);var Mi,Ti=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ei=function(e,t){return function(i,o){t(i,o,e)}};const Ai="editor.changePasteType",Oi=new ae.uy("pasteWidgetVisible",!1,(0,ne.NC)("pasteWidgetVisible","Whether the paste widget is showing")),Fi="application/vnd.code.copyMetadata";let Wi=Mi=class extends Fe.JT{static get(e){return e.getContribution(Mi.ID)}constructor(e,t,i,o,n,s,r){super(),this._bulkEditService=i,this._clipboardService=o,this._languageFeaturesService=n,this._quickInputService=s,this._progressService=r,this._editor=e;const a=e.getContainerDomNode();this._register((0,X.nm)(a,"copy",(e=>this.handleCopy(e)))),this._register((0,X.nm)(a,"cut",(e=>this.handleCopy(e)))),this._register((0,X.nm)(a,"paste",(e=>this.handlePaste(e)),!0)),this._pasteProgressManager=this._register(new di("pasteIntoEditor",e,t)),this._postPasteWidgetManager=this._register(t.createInstance(Pi,"pasteIntoEditor",e,Oi,{id:Ai,label:(0,ne.NC)("postPasteWidgetTitle","Show paste options...")}))}changePasteType(){this._postPasteWidgetManager.tryShowSelector()}pasteAs(e){this._editor.focus();try{this._pasteAsActionContext={preferred:e},(0,X.uP)().execCommand("paste")}finally{this._pasteAsActionContext=void 0}}clearWidgets(){this._postPasteWidgetManager.clear()}isPasteAsEnabled(){return this._editor.getOption(85).enabled&&!this._editor.getOption(91)}async finishedPaste(){await this._currentPasteOperation}handleCopy(e){var t,i;if(!this._editor.hasTextFocus())return;if(it.$L&&this._clipboardService.writeResources([]),!e.clipboardData||!this.isPasteAsEnabled())return;const o=this._editor.getModel(),n=this._editor.getSelections();if(!o||!(null===n||void 0===n?void 0:n.length))return;const s=this._editor.getOption(37);let r=n;const a=1===n.length&&n[0].isEmpty();if(a){if(!s)return;r=[new He.e(r[0].startLineNumber,1,r[0].startLineNumber,1+o.getLineLength(r[0].startLineNumber))]}const l=null===(t=this._editor._getViewModel())||void 0===t?void 0:t.getPlainTextToCopy(n,s,it.ED),d={multicursorText:Array.isArray(l)?l:null,pasteOnNewLine:a,mode:null},c=this._languageFeaturesService.documentPasteEditProvider.ordered(o).filter((e=>!!e.prepareDocumentPaste));if(!c.length)return void this.setCopyMetadata(e.clipboardData,{defaultPastePayload:d});const h=St(e.clipboardData),u=c.flatMap((e=>{var t;return null!==(t=e.copyMimeTypes)&&void 0!==t?t:[]})),g=rt();this.setCopyMetadata(e.clipboardData,{id:g,providerCopyMimeTypes:u,defaultPastePayload:d});const p=(0,Oe.PG)((async e=>{const t=(0,nt.kX)(await Promise.all(c.map((async t=>{try{return await t.prepareDocumentPaste(o,r,h,e)}catch(i){return void console.error(i)}}))));t.reverse();for(const i of t)for(const[e,t]of i)h.replace(e,t);return h}));null===(i=Mi._currentCopyOperation)||void 0===i||i.dataTransferPromise.cancel(),Mi._currentCopyOperation={handle:g,dataTransferPromise:p}}async handlePaste(e){var t,i,o,n;if(!e.clipboardData||!this._editor.hasTextFocus())return;null===(t=fi.get(this._editor))||void 0===t||t.closeMessage(),null===(i=this._currentPasteOperation)||void 0===i||i.cancel(),this._currentPasteOperation=void 0;const s=this._editor.getModel(),r=this._editor.getSelections();if(!(null===r||void 0===r?void 0:r.length)||!s)return;if(!this.isPasteAsEnabled()&&!this._pasteAsActionContext)return;const a=this.fetchCopyMetadata(e),l=xt(e.clipboardData);l.delete(Fi);const d=[...e.clipboardData.types,...null!==(o=null===a||void 0===a?void 0:a.providerCopyMimeTypes)&&void 0!==o?o:[],pt.v.uriList],c=this._languageFeaturesService.documentPasteEditProvider.ordered(s).filter((e=>{var t,i;const o=null===(t=this._pasteAsActionContext)||void 0===t?void 0:t.preferred;return!(o&&e.providedPasteEditKinds&&!this.providerMatchesPreference(e,o))&&(null===(i=e.pasteMimeTypes)||void 0===i?void 0:i.some((e=>ct(e,d))))}));c.length?(e.preventDefault(),e.stopImmediatePropagation(),this._pasteAsActionContext?this.showPasteAsPick(this._pasteAsActionContext.preferred,c,r,l,a):this.doPasteInline(c,r,l,a,e)):(null===(n=this._pasteAsActionContext)||void 0===n?void 0:n.preferred)&&this.showPasteAsNoEditMessage(r,this._pasteAsActionContext.preferred)}showPasteAsNoEditMessage(e,t){var i;null===(i=fi.get(this._editor))||void 0===i||i.showMessage((0,ne.NC)("pasteAsError","No paste edits for '{0}' found",t instanceof gt?t.value:t.providerId),e[0].getStartPosition())}doPasteInline(e,t,i,o,n){const s=(0,Oe.PG)((async r=>{const a=this._editor;if(!a.hasModel())return;const l=a.getModel(),d=new ti.Dl(a,3,void 0,r);try{if(await this.mergeInDataFromCopy(i,o,d.token),d.token.isCancellationRequested)return;const s=e.filter((e=>this.isSupportedPasteProvider(e,i)));if(!s.length||1===s.length&&s[0]instanceof Et)return this.applyDefaultPasteHandler(i,o,d.token,n);const r={triggerKind:Lt.Nq.Automatic},c=await this.getPasteEdits(s,i,l,t,r,d.token);if(d.token.isCancellationRequested)return;if(1===c.length&&c[0].provider instanceof Et)return this.applyDefaultPasteHandler(i,o,d.token,n);if(c.length){const e="afterPaste"===a.getOption(85).showPasteSelector;return this._postPasteWidgetManager.applyEditAndShowIfNeeded(t,{activeEditIndex:0,allEdits:c},e,(async(e,t)=>{var i,o;const n=await(null===(o=(i=e.provider).resolveDocumentPasteEdit)||void 0===o?void 0:o.call(i,e,t));return n&&(e.additionalEdit=n.additionalEdit),e}),d.token)}await this.applyDefaultPasteHandler(i,o,d.token,n)}finally{d.dispose(),this._currentPasteOperation===s&&(this._currentPasteOperation=void 0)}}));this._pasteProgressManager.showWhile(t[0].getEndPosition(),(0,ne.NC)("pasteIntoEditorProgress","Running paste handlers. Click to cancel"),s),this._currentPasteOperation=s}showPasteAsPick(e,t,i,o,n){const s=(0,Oe.PG)((async r=>{const a=this._editor;if(!a.hasModel())return;const l=a.getModel(),d=new ti.Dl(a,3,void 0,r);try{if(await this.mergeInDataFromCopy(o,n,d.token),d.token.isCancellationRequested)return;let s=t.filter((t=>this.isSupportedPasteProvider(t,o,e)));e&&(s=s.filter((t=>this.providerMatchesPreference(t,e))));const r={triggerKind:Lt.Nq.PasteAs,only:e&&e instanceof gt?e:void 0};let a,c=await this.getPasteEdits(s,o,l,i,r,d.token);if(d.token.isCancellationRequested)return;if(e&&(c=c.filter((t=>e instanceof gt?e.contains(t.kind):e.providerId===t.provider.id))),!c.length)return void(r.only&&this.showPasteAsNoEditMessage(i,r.only));if(e)a=c.at(0);else{const e=await this._quickInputService.pick(c.map((e=>{var t;return{label:e.title,description:null===(t=e.kind)||void 0===t?void 0:t.value,edit:e}})),{placeHolder:(0,ne.NC)("pasteAsPickerPlaceholder","Select Paste Action")});a=null===e||void 0===e?void 0:e.edit}if(!a)return;const h=Xt(l.uri,i,a);await this._bulkEditService.apply(h,{editor:this._editor})}finally{d.dispose(),this._currentPasteOperation===s&&(this._currentPasteOperation=void 0)}}));this._progressService.withProgress({location:10,title:(0,ne.NC)("pasteAsProgress","Running paste handlers")},(()=>s))}setCopyMetadata(e,t){e.setData(Fi,JSON.stringify(t))}fetchCopyMetadata(e){var t;if(!e.clipboardData)return;const i=e.clipboardData.getData(Fi);if(i)try{return JSON.parse(i)}catch(xa){return}const[o,n]=ot.b6.getTextData(e.clipboardData);return n?{defaultPastePayload:{mode:n.mode,multicursorText:null!==(t=n.multicursorText)&&void 0!==t?t:null,pasteOnNewLine:!!n.isFromEmptySelection}}:void 0}async mergeInDataFromCopy(e,t,i){var o;if((null===t||void 0===t?void 0:t.id)&&(null===(o=Mi._currentCopyOperation)||void 0===o?void 0:o.handle)===t.id){const t=await Mi._currentCopyOperation.dataTransferPromise;if(i.isCancellationRequested)return;for(const[i,o]of t)e.replace(i,o)}if(!e.has(pt.v.uriList)){const t=await this._clipboardService.readResources();if(i.isCancellationRequested)return;t.length&&e.append(pt.v.uriList,at(ut.create(t)))}}async getPasteEdits(e,t,i,o,n,s){const r=await(0,Oe.eP)(Promise.all(e.map((async e=>{var r,a;try{const l=await(null===(r=e.provideDocumentPasteEdits)||void 0===r?void 0:r.call(e,i,o,t,n,s));return null===(a=null===l||void 0===l?void 0:l.edits)||void 0===a?void 0:a.map((t=>({...t,provider:e})))}catch(l){console.error(l)}}))),s);return ei((0,nt.kX)(null!==r&&void 0!==r?r:[]).flat().filter((e=>!n.only||n.only.contains(e.kind))))}async applyDefaultPasteHandler(e,t,i,o){var n,s,r,a;const l=null!==(n=e.get(pt.v.text))&&void 0!==n?n:e.get("text"),d=null!==(s=await(null===l||void 0===l?void 0:l.asString()))&&void 0!==s?s:"";if(i.isCancellationRequested)return;const c={clipboardEvent:o,text:d,pasteOnNewLine:null!==(r=null===t||void 0===t?void 0:t.defaultPastePayload.pasteOnNewLine)&&void 0!==r&&r,multicursorText:null!==(a=null===t||void 0===t?void 0:t.defaultPastePayload.multicursorText)&&void 0!==a?a:null,mode:null};this._editor.trigger("keyboard","paste",c)}isSupportedPasteProvider(e,t,i){var o;return!!(null===(o=e.pasteMimeTypes)||void 0===o?void 0:o.some((e=>t.matches(e))))&&(!i||this.providerMatchesPreference(e,i))}providerMatchesPreference(e,t){return t instanceof gt?!e.providedPasteEditKinds||e.providedPasteEditKinds.some((e=>t.contains(e))):e.id===t.providerId}};Wi.ID="editor.contrib.copyPasteActionController",Wi=Mi=Ti([Ei(1,ni.TG),Ei(2,Nt.vu),Ei(3,Si.p),Ei(4,kt.p),Ei(5,wi.eJ),Ei(6,yi.R9)],Wi);const Hi="9_cutcopypaste",Vi=it.tY||document.queryCommandSupported("cut"),Bi=it.tY||document.queryCommandSupported("copy"),zi="undefined"!==typeof navigator.clipboard&&!tt.vU||document.queryCommandSupported("paste");function Ui(e){return e.register(),e}const Ki=Vi?Ui(new ee.AJ({id:"editor.action.clipboardCutAction",precondition:void 0,kbOpts:it.tY?{primary:2102,win:{primary:2102,secondary:[1044]},weight:100}:void 0,menuOpts:[{menuId:se.eH.MenubarEditMenu,group:"2_ccp",title:ne.NC({key:"miCut",comment:["&& denotes a mnemonic"]},"Cu&&t"),order:1},{menuId:se.eH.EditorContext,group:Hi,title:ne.NC("actions.clipboard.cutLabel","Cut"),when:oe.u.writable,order:1},{menuId:se.eH.CommandPalette,group:"",title:ne.NC("actions.clipboard.cutLabel","Cut"),order:1},{menuId:se.eH.SimpleEditorContext,group:Hi,title:ne.NC("actions.clipboard.cutLabel","Cut"),when:oe.u.writable,order:1}]})):void 0,ji=Bi?Ui(new ee.AJ({id:"editor.action.clipboardCopyAction",precondition:void 0,kbOpts:it.tY?{primary:2081,win:{primary:2081,secondary:[2067]},weight:100}:void 0,menuOpts:[{menuId:se.eH.MenubarEditMenu,group:"2_ccp",title:ne.NC({key:"miCopy",comment:["&& denotes a mnemonic"]},"&&Copy"),order:2},{menuId:se.eH.EditorContext,group:Hi,title:ne.NC("actions.clipboard.copyLabel","Copy"),order:2},{menuId:se.eH.CommandPalette,group:"",title:ne.NC("actions.clipboard.copyLabel","Copy"),order:1},{menuId:se.eH.SimpleEditorContext,group:Hi,title:ne.NC("actions.clipboard.copyLabel","Copy"),order:2}]})):void 0;se.BH.appendMenuItem(se.eH.MenubarEditMenu,{submenu:se.eH.MenubarCopy,title:ne.vv("copy as","Copy As"),group:"2_ccp",order:3}),se.BH.appendMenuItem(se.eH.EditorContext,{submenu:se.eH.EditorContextCopy,title:ne.vv("copy as","Copy As"),group:Hi,order:3}),se.BH.appendMenuItem(se.eH.EditorContext,{submenu:se.eH.EditorContextShare,title:ne.vv("share","Share"),group:"11_share",order:-1,when:ae.Ao.and(ae.Ao.notEquals("resourceScheme","output"),oe.u.editorTextFocus)}),se.BH.appendMenuItem(se.eH.EditorTitleContext,{submenu:se.eH.EditorTitleContextShare,title:ne.vv("share","Share"),group:"11_share",order:-1}),se.BH.appendMenuItem(se.eH.ExplorerContext,{submenu:se.eH.ExplorerContextShare,title:ne.vv("share","Share"),group:"11_share",order:-1});const qi=zi?Ui(new ee.AJ({id:"editor.action.clipboardPasteAction",precondition:void 0,kbOpts:it.tY?{primary:2100,win:{primary:2100,secondary:[1043]},linux:{primary:2100,secondary:[1043]},weight:100}:void 0,menuOpts:[{menuId:se.eH.MenubarEditMenu,group:"2_ccp",title:ne.NC({key:"miPaste",comment:["&& denotes a mnemonic"]},"&&Paste"),order:4},{menuId:se.eH.EditorContext,group:Hi,title:ne.NC("actions.clipboard.pasteLabel","Paste"),when:oe.u.writable,order:4},{menuId:se.eH.CommandPalette,group:"",title:ne.NC("actions.clipboard.pasteLabel","Paste"),order:1},{menuId:se.eH.SimpleEditorContext,group:Hi,title:ne.NC("actions.clipboard.pasteLabel","Paste"),when:oe.u.writable,order:4}]})):void 0;class Gi extends ee.R6{constructor(){super({id:"editor.action.clipboardCopyWithSyntaxHighlightingAction",label:ne.NC("actions.clipboard.copyWithSyntaxHighlightingLabel","Copy With Syntax Highlighting"),alias:"Copy With Syntax Highlighting",precondition:void 0,kbOpts:{kbExpr:oe.u.textInputFocus,primary:0,weight:100}})}run(e,t){if(!t.hasModel())return;!t.getOption(37)&&t.getSelection().isEmpty()||(ot.RA.forceCopyWithSyntaxHighlighting=!0,t.focus(),t.getContainerDomNode().ownerDocument.execCommand("copy"),ot.RA.forceCopyWithSyntaxHighlighting=!1)}}function Qi(e,t){e&&(e.addImplementation(1e4,"code-editor",((e,i)=>{const o=e.get(te.$).getFocusedCodeEditor();if(o&&o.hasTextFocus()){const e=o.getOption(37),i=o.getSelection();return i&&i.isEmpty()&&!e||o.getContainerDomNode().ownerDocument.execCommand(t),!0}return!1})),e.addImplementation(0,"generic-dom",((e,i)=>((0,X.uP)().execCommand(t),!0))))}Qi(Ki,"cut"),Qi(ji,"copy"),qi&&(qi.addImplementation(1e4,"code-editor",((e,t)=>{var i,o;const n=e.get(te.$),s=e.get(Si.p),r=n.getFocusedCodeEditor();if(r&&r.hasTextFocus()){return r.getContainerDomNode().ownerDocument.execCommand("paste")?null!==(o=null===(i=Wi.get(r))||void 0===i?void 0:i.finishedPaste())&&void 0!==o?o:Promise.resolve():!it.$L||(async()=>{const e=await s.readText();if(""!==e){const t=ot.Nl.INSTANCE.get(e);let i=!1,o=null,n=null;t&&(i=r.getOption(37)&&!!t.isFromEmptySelection,o="undefined"!==typeof t.multicursorText?t.multicursorText:null,n=t.mode),r.trigger("keyboard","paste",{text:e,pasteOnNewLine:i,multicursorText:o,mode:n})}})()}return!1})),qi.addImplementation(0,"generic-dom",((e,t)=>((0,X.uP)().execCommand("paste"),!0)))),Bi&&(0,ee.Qr)(Gi);var Zi=i(65175),Yi=i(16113),Ji=i(85108),$i=i(42175),Xi=i(13200),eo=i(38015);const to=new class{constructor(){this.QuickFix=new gt("quickfix"),this.Refactor=new gt("refactor"),this.RefactorExtract=this.Refactor.append("extract"),this.RefactorInline=this.Refactor.append("inline"),this.RefactorMove=this.Refactor.append("move"),this.RefactorRewrite=this.Refactor.append("rewrite"),this.Notebook=new gt("notebook"),this.Source=new gt("source"),this.SourceOrganizeImports=this.Source.append("organizeImports"),this.SourceFixAll=this.Source.append("fixAll"),this.SurroundWith=this.Refactor.append("surround")}};var io;function oo(e,t,i){return!!t.contains(e)&&(!i||!t.contains(i))}!function(e){e.Refactor="refactor",e.RefactorPreview="refactor preview",e.Lightbulb="lightbulb",e.Default="other (default)",e.SourceAction="source action",e.QuickFix="quick fix action",e.FixAll="fix all",e.OrganizeImports="organize imports",e.AutoFix="auto fix",e.QuickFixHover="quick fix hover window",e.OnSave="save participants",e.ProblemsView="problems view"}(io||(io={}));class no{static fromUser(e,t){return e&&"object"===typeof e?new no(no.getKindFromUser(e,t.kind),no.getApplyFromUser(e,t.apply),no.getPreferredUser(e)):new no(t.kind,t.apply,!1)}static getApplyFromUser(e,t){switch("string"===typeof e.apply?e.apply.toLowerCase():""){case"first":return"first";case"never":return"never";case"ifsingle":return"ifSingle";default:return t}}static getKindFromUser(e,t){return"string"===typeof e.kind?new gt(e.kind):t}static getPreferredUser(e){return"boolean"===typeof e.preferred&&e.preferred}constructor(e,t,i){this.kind=e,this.apply=t,this.preferred=i}}class so{constructor(e,t,i){this.action=e,this.provider=t,this.highlightRange=i}async resolve(e){var t;if((null===(t=this.provider)||void 0===t?void 0:t.resolveCodeAction)&&!this.action.edit){let t;try{t=await this.provider.resolveCodeAction(this.action,e)}catch(i){(0,Ji.Cp)(i)}t&&(this.action.edit=t.edit)}return this}}const ro="editor.action.codeAction",ao="editor.action.quickFix",lo="editor.action.autoFix",co="editor.action.refactor",ho="editor.action.sourceAction",uo="editor.action.organizeImports",go="editor.action.fixAll";class po extends Fe.JT{static codeActionsPreferredComparator(e,t){return e.isPreferred&&!t.isPreferred?-1:!e.isPreferred&&t.isPreferred?1:0}static codeActionsComparator(e,t){let{action:i}=e,{action:o}=t;return i.isAI&&!o.isAI?1:!i.isAI&&o.isAI?-1:(0,nt.Of)(i.diagnostics)?(0,nt.Of)(o.diagnostics)?po.codeActionsPreferredComparator(i,o):-1:(0,nt.Of)(o.diagnostics)?1:po.codeActionsPreferredComparator(i,o)}constructor(e,t,i){super(),this.documentation=t,this._register(i),this.allActions=[...e].sort(po.codeActionsComparator),this.validActions=this.allActions.filter((e=>{let{action:t}=e;return!t.disabled}))}get hasAutoFix(){return this.validActions.some((e=>{let{action:t}=e;return!!t.kind&&to.QuickFix.contains(new gt(t.kind))&&!!t.isPreferred}))}get hasAIFix(){return this.validActions.some((e=>{let{action:t}=e;return!!t.isAI}))}get allAIFixes(){return this.validActions.every((e=>{let{action:t}=e;return!!t.isAI}))}}const mo={actions:[],documentation:void 0};async function _o(e,t,i,o,n,s){var r;const a=o.filter||{},l={...a,excludes:[...a.excludes||[],to.Notebook]},d={only:null===(r=a.include)||void 0===r?void 0:r.value,trigger:o.type},c=new ti.YQ(t,s),h=2===o.type,u=function(e,t,i){return e.all(t).filter((e=>!e.providedCodeActionKinds||e.providedCodeActionKinds.some((e=>function(e,t){return!(e.include&&!e.include.intersects(t))&&(!e.excludes||!e.excludes.some((i=>oo(t,i,e.include))))&&!(!e.includeSourceActions&&to.Source.contains(t))}(i,new gt(e))))))}(e,t,h?l:a),g=new Fe.SL,p=u.map((async e=>{try{n.report(e);const o=await e.provideCodeActions(t,i,d,c.token);if(o&&g.add(o),c.token.isCancellationRequested)return mo;const s=((null===o||void 0===o?void 0:o.actions)||[]).filter((e=>e&&function(e,t){const i=t.kind?new gt(t.kind):void 0;return!!(!e.include||i&&e.include.contains(i))&&!(e.excludes&&i&&e.excludes.some((t=>oo(i,t,e.include))))&&!(!e.includeSourceActions&&i&&to.Source.contains(i))&&!(e.onlyIncludePreferredActions&&!t.isPreferred)}(a,e))),r=function(e,t,i){if(!e.documentation)return;const o=e.documentation.map((e=>({kind:new gt(e.kind),command:e.command})));if(i){let e;for(const t of o)t.kind.contains(i)&&(e?e.kind.contains(t.kind)&&(e=t):e=t);if(e)return null===e||void 0===e?void 0:e.command}for(const n of t)if(n.kind)for(const e of o)if(e.kind.contains(new gt(n.kind)))return e.command;return}(e,s,a.include);return{actions:s.map((t=>new so(t,e))),documentation:r}}catch(o){if((0,Ji.n2)(o))throw o;return(0,Ji.Cp)(o),mo}})),m=e.onDidChange((()=>{const i=e.all(t);(0,nt.fS)(i,u)||c.cancel()}));try{const i=await Promise.all(p),n=i.map((e=>e.actions)).flat(),s=[...(0,nt.kX)(i.map((e=>e.documentation))),...fo(e,t,o,n)];return new po(n,s,g)}finally{m.dispose(),c.dispose()}}function*fo(e,t,i,o){var n,s,r;if(t&&o.length)for(const a of e.all(t))a._getAdditionalMenuItems&&(yield*null===(n=a._getAdditionalMenuItems)||void 0===n?void 0:n.call(a,{trigger:i.type,only:null===(r=null===(s=i.filter)||void 0===s?void 0:s.include)||void 0===r?void 0:r.value},o.map((e=>e.action))))}var vo;async function bo(e,t,i,o){let n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:Yi.T.None;var s;const r=e.get(Nt.vu),a=e.get(ye.H),l=e.get(eo.b),d=e.get(Xi.lT);if(l.publicLog2("codeAction.applyCodeAction",{codeActionTitle:t.action.title,codeActionKind:t.action.kind,codeActionIsPreferred:!!t.action.isPreferred,reason:i}),await t.resolve(n),!n.isCancellationRequested){if(null===(s=t.action.edit)||void 0===s?void 0:s.edits.length){if(!(await r.apply(t.action.edit,{editor:null===o||void 0===o?void 0:o.editor,label:t.action.title,quotableLabel:t.action.title,code:"undoredo.codeAction",respectAutoSaveConfig:i!==vo.OnSave,showPreview:null===o||void 0===o?void 0:o.preview})).isApplied)return}if(t.action.command)try{await a.executeCommand(t.action.command.id,...t.action.command.arguments||[])}catch(c){const e=function(e){return"string"===typeof e?e:e instanceof Error&&"string"===typeof e.message?e.message:void 0}(c);d.error("string"===typeof e?e:ne.NC("applyCodeActionFailed","An unknown error occurred while applying the code action"))}}}!function(e){e.OnSave="onSave",e.FromProblemsView="fromProblemsView",e.FromCodeActions="fromCodeActions",e.FromAILightbulb="fromAILightbulb"}(vo||(vo={})),ye.P.registerCommand("_executeCodeActionProvider",(async function(e,t,i,o,n){if(!(t instanceof _t.o))throw(0,Ji.b1)();const{codeActionProvider:s}=e.get(kt.p),r=e.get($i.q).getModel(t);if(!r)throw(0,Ji.b1)();const a=ke.Y.isISelection(i)?ke.Y.liftSelection(i):He.e.isIRange(i)?r.validateRange(i):void 0;if(!a)throw(0,Ji.b1)();const l="string"===typeof o?new gt(o):void 0,d=await _o(s,r,a,{type:1,triggerAction:io.Default,filter:{includeSourceActions:!0,include:l}},yi.Ex.None,Yi.T.None),c=[],h=Math.min(d.validActions.length,"number"===typeof n?n:0);for(let u=0;u<h;u++)c.push(d.validActions[u].resolve(Yi.T.None));try{return await Promise.all(c),d.validActions.map((e=>e.action))}finally{setTimeout((()=>d.dispose()),100)}}));var Co,So=i(73187),yo=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},wo=function(e,t){return function(i,o){t(i,o,e)}};let xo=Co=class{constructor(e){this.keybindingService=e}getResolver(){const e=new So.o((()=>this.keybindingService.getKeybindings().filter((e=>Co.codeActionCommands.indexOf(e.command)>=0)).filter((e=>e.resolvedKeybinding)).map((e=>{let t=e.commandArgs;return e.command===uo?t={kind:to.SourceOrganizeImports.value}:e.command===go&&(t={kind:to.SourceFixAll.value}),{resolvedKeybinding:e.resolvedKeybinding,...no.fromUser(t,{kind:gt.None,apply:"never"})}}))));return t=>{if(t.kind){const i=this.bestKeybindingForCodeAction(t,e.value);return null===i||void 0===i?void 0:i.resolvedKeybinding}}}bestKeybindingForCodeAction(e,t){if(!e.kind)return;const i=new gt(e.kind);return t.filter((e=>e.kind.contains(i))).filter((t=>!t.preferred||e.isPreferred)).reduceRight(((e,t)=>e?e.kind.contains(t.kind)?t:e:t),void 0)}};xo.codeActionCommands=[co,ro,ho,uo,go],xo=Co=yo([wo(0,ki.d)],xo);(0,ze.P6G)("symbolIcon.arrayForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.arrayForeground","The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.booleanForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.booleanForeground","The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.classForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,ne.NC)("symbolIcon.classForeground","The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.colorForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.colorForeground","The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.constantForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.constantForeground","The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.constructorForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,ne.NC)("symbolIcon.constructorForeground","The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.enumeratorForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,ne.NC)("symbolIcon.enumeratorForeground","The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.enumeratorMemberForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,ne.NC)("symbolIcon.enumeratorMemberForeground","The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.eventForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,ne.NC)("symbolIcon.eventForeground","The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.fieldForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,ne.NC)("symbolIcon.fieldForeground","The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.fileForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.fileForeground","The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.folderForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.folderForeground","The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.functionForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,ne.NC)("symbolIcon.functionForeground","The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.interfaceForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,ne.NC)("symbolIcon.interfaceForeground","The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.keyForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.keyForeground","The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.keywordForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.keywordForeground","The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.methodForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,ne.NC)("symbolIcon.methodForeground","The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.moduleForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.moduleForeground","The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.namespaceForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.namespaceForeground","The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.nullForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.nullForeground","The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.numberForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.numberForeground","The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.objectForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.objectForeground","The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.operatorForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.operatorForeground","The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.packageForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.packageForeground","The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.propertyForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.propertyForeground","The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.referenceForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.referenceForeground","The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.snippetForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.snippetForeground","The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.stringForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.stringForeground","The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.structForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.structForeground","The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.textForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.textForeground","The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.typeParameterForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.typeParameterForeground","The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.unitForeground",{dark:ze.dRz,light:ze.dRz,hcDark:ze.dRz,hcLight:ze.dRz},(0,ne.NC)("symbolIcon.unitForeground","The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,ze.P6G)("symbolIcon.variableForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,ne.NC)("symbolIcon.variableForeground","The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));const No=Object.freeze({kind:gt.Empty,title:(0,ne.NC)("codeAction.widget.id.more","More Actions...")}),Lo=Object.freeze([{kind:to.QuickFix,title:(0,ne.NC)("codeAction.widget.id.quickfix","Quick Fix")},{kind:to.RefactorExtract,title:(0,ne.NC)("codeAction.widget.id.extract","Extract"),icon:$.l.wrench},{kind:to.RefactorInline,title:(0,ne.NC)("codeAction.widget.id.inline","Inline"),icon:$.l.wrench},{kind:to.RefactorRewrite,title:(0,ne.NC)("codeAction.widget.id.convert","Rewrite"),icon:$.l.wrench},{kind:to.RefactorMove,title:(0,ne.NC)("codeAction.widget.id.move","Move"),icon:$.l.wrench},{kind:to.SurroundWith,title:(0,ne.NC)("codeAction.widget.id.surround","Surround With"),icon:$.l.surroundWith},{kind:to.Source,title:(0,ne.NC)("codeAction.widget.id.source","Source Action"),icon:$.l.symbolFile},No]);var ko,Do,Io=i(48688),Ro=i(29430),Po=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Mo=function(e,t){return function(i,o){t(i,o,e)}};!function(e){e.Hidden={type:0};e.Showing=class{constructor(e,t,i,o){this.actions=e,this.trigger=t,this.editorPosition=i,this.widgetPosition=o,this.type=1}}}(Do||(Do={}));let To=ko=class extends Fe.JT{constructor(e,t,i){super(),this._editor=e,this._keybindingService=t,this._onClick=this._register(new ui.Q5),this.onClick=this._onClick.event,this._state=Do.Hidden,this._iconClasses=[],this._domNode=X.$("div.lightBulbWidget"),this._register(Io.o.ignoreTarget(this._domNode)),this._editor.addContentWidget(this),this._register(this._editor.onDidChangeModelContent((e=>{const t=this._editor.getModel();(1!==this.state.type||!t||this.state.editorPosition.lineNumber>=t.getLineCount())&&this.hide()}))),this._register(X.GQ(this._domNode,(e=>{if(1!==this.state.type)return;this._editor.focus(),e.preventDefault();const{top:t,height:i}=X.i(this._domNode),o=this._editor.getOption(67);let n=Math.floor(o/3);null!==this.state.widgetPosition.position&&this.state.widgetPosition.position.lineNumber<this.state.editorPosition.lineNumber&&(n+=o),this._onClick.fire({x:e.posx,y:t+i+n,actions:this.state.actions,trigger:this.state.trigger})}))),this._register(X.nm(this._domNode,"mouseenter",(e=>{1===(1&e.buttons)&&this.hide()}))),this._register(ui.ju.runAndSubscribe(this._keybindingService.onDidUpdateKeybindings,(()=>{var e,t,i,o;this._preferredKbLabel=null!==(t=null===(e=this._keybindingService.lookupKeybinding(lo))||void 0===e?void 0:e.getLabel())&&void 0!==t?t:void 0,this._quickFixKbLabel=null!==(o=null===(i=this._keybindingService.lookupKeybinding(ao))||void 0===i?void 0:i.getLabel())&&void 0!==o?o:void 0,this._updateLightBulbTitleAndIcon()})))}dispose(){super.dispose(),this._editor.removeContentWidget(this)}getId(){return"LightBulbWidget"}getDomNode(){return this._domNode}getPosition(){return 1===this._state.type?this._state.widgetPosition:null}update(e,t,i){if(e.validActions.length<=0)return this.hide();if(!this._editor.getOptions().get(65).enabled)return this.hide();const o=this._editor.getModel();if(!o)return this.hide();const{lineNumber:n,column:s}=o.validatePosition(i),r=o.getOptions().tabSize,a=this._editor.getOptions().get(50),l=o.getLineContent(n),d=(0,Ro.q)(l,r),c=e=>e>2&&this._editor.getTopForLineNumber(e)===this._editor.getTopForLineNumber(e-1);let h=n,u=1;if(!(a.spaceWidth*d>22)){if(n>1&&!c(n-1))h-=1;else if(n<o.getLineCount()&&!c(n+1))h+=1;else if(s*a.spaceWidth<22)return this.hide();u=/^\S\s*$/.test(o.getLineContent(h))?2:1}this.state=new Do.Showing(e,t,i,{position:{lineNumber:h,column:u},preference:ko._posPref}),this._editor.layoutContentWidget(this)}hide(){this.state!==Do.Hidden&&(this.state=Do.Hidden,this._editor.layoutContentWidget(this))}get state(){return this._state}set state(e){this._state=e,this._updateLightBulbTitleAndIcon()}_updateLightBulbTitleAndIcon(){if(this._domNode.classList.remove(...this._iconClasses),this._iconClasses=[],1!==this.state.type)return;let e,t=!1;this.state.actions.allAIFixes?(e=$.l.sparkleFilled,1===this.state.actions.validActions.length&&(t=!0)):e=this.state.actions.hasAutoFix?this.state.actions.hasAIFix?$.l.lightbulbSparkleAutofix:$.l.lightbulbAutofix:this.state.actions.hasAIFix?$.l.lightbulbSparkle:$.l.lightBulb,this._updateLightbulbTitle(this.state.actions.hasAutoFix,t),this._iconClasses=oi.k.asClassNameArray(e),this._domNode.classList.add(...this._iconClasses)}_updateLightbulbTitle(e,t){1===this.state.type&&(t?this.title=ne.NC("codeActionAutoRun","Run: {0}",this.state.actions.validActions[0].action.title):e&&this._preferredKbLabel?this.title=ne.NC("preferredcodeActionWithKb","Show Code Actions. Preferred Quick Fix Available ({0})",this._preferredKbLabel):!e&&this._quickFixKbLabel?this.title=ne.NC("codeActionWithKb","Show Code Actions ({0})",this._quickFixKbLabel):e||(this.title=ne.NC("codeAction","Show Code Actions")))}set title(e){this._domNode.title=e}};To.ID="editor.contrib.lightbulbWidget",To._posPref=[0],To=ko=Po([Mo(1,ki.d),Mo(2,ye.H)],To);var Eo=i(65122),Ao=i(75404),Oo=i(53430),Fo=i(29581),Wo=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ho=function(e,t){return function(i,o){t(i,o,e)}};const Vo="acceptSelectedCodeAction",Bo="previewSelectedCodeAction";class zo{get templateId(){return"header"}renderTemplate(e){e.classList.add("group-header");const t=document.createElement("span");return e.append(t),{container:e,text:t}}renderElement(e,t,i){var o,n;i.text.textContent=null!==(n=null===(o=e.group)||void 0===o?void 0:o.title)&&void 0!==n?n:""}disposeTemplate(e){}}let Uo=class{get templateId(){return"action"}constructor(e,t){this._supportsPreview=e,this._keybindingService=t}renderTemplate(e){e.classList.add(this.templateId);const t=document.createElement("div");t.className="icon",e.append(t);const i=document.createElement("span");i.className="title",e.append(i);return{container:e,icon:t,text:i,keybinding:new Ao.e(e,it.OS)}}renderElement(e,t,i){var o,n,s;if((null===(o=e.group)||void 0===o?void 0:o.icon)?(i.icon.className=oi.k.asClassName(e.group.icon),e.group.icon.color&&(i.icon.style.color=(0,ze.n_1)(e.group.icon.color.id))):(i.icon.className=oi.k.asClassName($.l.lightBulb),i.icon.style.color="var(--vscode-editorLightBulb-foreground)"),!e.item||!e.label)return;i.text.textContent=Qo(e.label),i.keybinding.set(e.keybinding),X.iJ(!!e.keybinding,i.keybinding.element);const r=null===(n=this._keybindingService.lookupKeybinding(Vo))||void 0===n?void 0:n.getLabel(),a=null===(s=this._keybindingService.lookupKeybinding(Bo))||void 0===s?void 0:s.getLabel();i.container.classList.toggle("option-disabled",e.disabled),e.disabled?i.container.title=e.label:r&&a?this._supportsPreview&&e.canPreview?i.container.title=(0,ne.NC)({key:"label-preview",comment:['placeholders are keybindings, e.g "F2 to Apply, Shift+F2 to Preview"']},"{0} to Apply, {1} to Preview",r,a):i.container.title=(0,ne.NC)({key:"label",comment:['placeholder is a keybinding, e.g "F2 to Apply"']},"{0} to Apply",r):i.container.title=""}disposeTemplate(e){e.keybinding.dispose()}};Uo=Wo([Ho(1,ki.d)],Uo);class Ko extends UIEvent{constructor(){super("acceptSelectedAction")}}class jo extends UIEvent{constructor(){super("previewSelectedAction")}}function qo(e){if("action"===e.kind)return e.label}let Go=class extends Fe.JT{constructor(e,t,i,o,n,s){super(),this._delegate=o,this._contextViewService=n,this._keybindingService=s,this._actionLineHeight=24,this._headerLineHeight=26,this.cts=this._register(new Yi.A),this.domNode=document.createElement("div"),this.domNode.classList.add("actionList");const r={getHeight:e=>"header"===e.kind?this._headerLineHeight:this._actionLineHeight,getTemplateId:e=>e.kind};this._list=this._register(new Oo.aV(e,this.domNode,r,[new Uo(t,this._keybindingService),new zo],{keyboardSupport:!1,typeNavigationEnabled:!0,keyboardNavigationLabelProvider:{getKeyboardNavigationLabel:qo},accessibilityProvider:{getAriaLabel:e=>{if("action"===e.kind){let t=e.label?Qo(null===e||void 0===e?void 0:e.label):"";return e.disabled&&(t=(0,ne.NC)({key:"customQuickFixWidget.labels",comment:["Action widget labels for accessibility."]},"{0}, Disabled Reason: {1}",t,e.disabled)),t}return null},getWidgetAriaLabel:()=>(0,ne.NC)({key:"customQuickFixWidget",comment:["An action widget option"]},"Action Widget"),getRole:e=>"action"===e.kind?"option":"separator",getWidgetRole:()=>"listbox"}})),this._list.style(Fo.O2),this._register(this._list.onMouseClick((e=>this.onListClick(e)))),this._register(this._list.onMouseOver((e=>this.onListHover(e)))),this._register(this._list.onDidChangeFocus((()=>this.onFocus()))),this._register(this._list.onDidChangeSelection((e=>this.onListSelection(e)))),this._allMenuItems=i,this._list.splice(0,this._list.length,this._allMenuItems),this._list.length&&this.focusNext()}focusCondition(e){return!e.disabled&&"action"===e.kind}hide(e){this._delegate.onHide(e),this.cts.cancel(),this._contextViewService.hideContextView()}layout(e){const t=this._allMenuItems.filter((e=>"header"===e.kind)).length,i=this._allMenuItems.length*this._actionLineHeight+t*this._headerLineHeight-t*this._actionLineHeight;this._list.layout(i);let o=e;if(this._allMenuItems.length>=50)o=380;else{const t=this._allMenuItems.map(((e,t)=>{const i=this.domNode.ownerDocument.getElementById(this._list.getElementID(t));if(i){i.style.width="auto";const e=i.getBoundingClientRect().width;return i.style.width="",e}return 0}));o=Math.max(...t,e)}const n=Math.min(i,.7*this.domNode.ownerDocument.body.clientHeight);return this._list.layout(n,o),this.domNode.style.height="".concat(n,"px"),this._list.domFocus(),o}focusPrevious(){this._list.focusPrevious(1,!0,void 0,this.focusCondition)}focusNext(){this._list.focusNext(1,!0,void 0,this.focusCondition)}acceptSelected(e){const t=this._list.getFocus();if(0===t.length)return;const i=t[0],o=this._list.element(i);if(!this.focusCondition(o))return;const n=e?new jo:new Ko;this._list.setSelection([i],n)}onListSelection(e){if(!e.elements.length)return;const t=e.elements[0];t.item&&this.focusCondition(t)?this._delegate.onSelect(t.item,e.browserEvent instanceof jo):this._list.setSelection([])}onFocus(){var e,t;const i=this._list.getFocus();if(0===i.length)return;const o=i[0],n=this._list.element(o);null===(t=(e=this._delegate).onFocus)||void 0===t||t.call(e,n.item)}async onListHover(e){const t=e.element;if(t&&t.item&&this.focusCondition(t)){if(this._delegate.onHover&&!t.disabled&&"action"===t.kind){const e=await this._delegate.onHover(t.item,this.cts.token);t.canPreview=e?e.canPreview:void 0}e.index&&this._list.splice(e.index,1,[t])}this._list.setFocus("number"===typeof e.index?[e.index]:[])}onListClick(e){e.element&&this.focusCondition(e.element)&&this._list.setFocus([])}};function Qo(e){return e.replace(/\r\n|\r|\n/g," ")}Go=Wo([Ho(4,Li.u),Ho(5,ki.d)],Go);var Zo=i(43837),Yo=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Jo=function(e,t){return function(i,o){t(i,o,e)}};(0,ze.P6G)("actionBar.toggledBackground",{dark:ze.XEs,light:ze.XEs,hcDark:ze.XEs,hcLight:ze.XEs},(0,ne.NC)("actionBar.toggledBackground","Background color for toggled action items in action bar."));const $o={Visible:new ae.uy("codeActionMenuVisible",!1,(0,ne.NC)("codeActionMenuVisible","Whether the action widget list is visible"))},Xo=(0,ni.yh)("actionWidgetService");let en=class extends Fe.JT{get isVisible(){return $o.Visible.getValue(this._contextKeyService)||!1}constructor(e,t,i){super(),this._contextViewService=e,this._contextKeyService=t,this._instantiationService=i,this._list=this._register(new Fe.XK)}show(e,t,i,o,n,s,r){const a=$o.Visible.bindTo(this._contextKeyService),l=this._instantiationService.createInstance(Go,e,t,i,o);this._contextViewService.showContextView({getAnchor:()=>n,render:e=>(a.set(!0),this._renderWidget(e,l,null!==r&&void 0!==r?r:[])),onHide:e=>{a.reset(),this._onWidgetClosed(e)}},s,!1)}acceptSelected(e){var t;null===(t=this._list.value)||void 0===t||t.acceptSelected(e)}focusPrevious(){var e,t;null===(t=null===(e=this._list)||void 0===e?void 0:e.value)||void 0===t||t.focusPrevious()}focusNext(){var e,t;null===(t=null===(e=this._list)||void 0===e?void 0:e.value)||void 0===t||t.focusNext()}hide(){var e;null===(e=this._list.value)||void 0===e||e.hide(),this._list.clear()}_renderWidget(e,t,i){var o;const n=document.createElement("div");if(n.classList.add("action-widget"),e.appendChild(n),this._list.value=t,!this._list.value)throw new Error("List has no value");n.appendChild(this._list.value.domNode);const s=new Fe.SL,r=document.createElement("div"),a=e.appendChild(r);a.classList.add("context-view-block"),s.add(X.nm(a,X.tw.MOUSE_DOWN,(e=>e.stopPropagation())));const l=document.createElement("div"),d=e.appendChild(l);d.classList.add("context-view-pointerBlock"),s.add(X.nm(d,X.tw.POINTER_MOVE,(()=>d.remove()))),s.add(X.nm(d,X.tw.MOUSE_DOWN,(()=>d.remove())));let c=0;if(i.length){const e=this._createActionBar(".action-widget-action-bar",i);e&&(n.appendChild(e.getContainer().parentElement),s.add(e),c=e.getContainer().offsetWidth)}const h=null===(o=this._list.value)||void 0===o?void 0:o.layout(c);n.style.width="".concat(h,"px");const u=s.add(X.go(e));return s.add(u.onDidBlur((()=>this.hide()))),s}_createActionBar(e,t){if(!t.length)return;const i=X.$(e),o=new Eo.o(i);return o.push(t,{icon:!1,label:!0}),o}_onWidgetClosed(e){var t;null===(t=this._list.value)||void 0===t||t.hide(e)}};en=Yo([Jo(0,Li.u),Jo(1,ae.i6),Jo(2,ni.TG)],en),(0,Zo.z)(Xo,en,1);const tn=1100;(0,se.r1)(class extends se.Ke{constructor(){super({id:"hideCodeActionWidget",title:(0,ne.vv)("hideCodeActionWidget.title","Hide action widget"),precondition:$o.Visible,keybinding:{weight:tn,primary:9,secondary:[1033]}})}run(e){e.get(Xo).hide()}}),(0,se.r1)(class extends se.Ke{constructor(){super({id:"selectPrevCodeAction",title:(0,ne.vv)("selectPrevCodeAction.title","Select previous action"),precondition:$o.Visible,keybinding:{weight:tn,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})}run(e){const t=e.get(Xo);t instanceof en&&t.focusPrevious()}}),(0,se.r1)(class extends se.Ke{constructor(){super({id:"selectNextCodeAction",title:(0,ne.vv)("selectNextCodeAction.title","Select next action"),precondition:$o.Visible,keybinding:{weight:tn,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})}run(e){const t=e.get(Xo);t instanceof en&&t.focusNext()}}),(0,se.r1)(class extends se.Ke{constructor(){super({id:Vo,title:(0,ne.vv)("acceptSelected.title","Accept selected action"),precondition:$o.Visible,keybinding:{weight:tn,primary:3,secondary:[2137]}})}run(e){const t=e.get(Xo);t instanceof en&&t.acceptSelected()}}),(0,se.r1)(class extends se.Ke{constructor(){super({id:Bo,title:(0,ne.vv)("previewSelected.title","Preview selected action"),precondition:$o.Visible,keybinding:{weight:tn,primary:2051}})}run(e){const t=e.get(Xo);t instanceof en&&t.acceptSelected(!0)}});var on=i(41911),nn=i(75826),sn=i(38092);const rn=new ae.uy("supportedCodeAction",""),an="_typescript.applyFixAllCodeAction";class ln extends Fe.JT{constructor(e,t,i){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:250;super(),this._editor=e,this._markerService=t,this._signalChange=i,this._delay=o,this._autoTriggerTimer=this._register(new Oe._F),this._register(this._markerService.onMarkerChanged((e=>this._onMarkerChanges(e)))),this._register(this._editor.onDidChangeCursorPosition((()=>this._tryAutoTrigger())))}trigger(e){const t=this._getRangeOfSelectionUnlessWhitespaceEnclosed(e);this._signalChange(t?{trigger:e,selection:t}:void 0)}_onMarkerChanges(e){const t=this._editor.getModel();t&&e.some((e=>(0,It.Xy)(e,t.uri)))&&this._tryAutoTrigger()}_tryAutoTrigger(){this._autoTriggerTimer.cancelAndSet((()=>{this.trigger({type:2,triggerAction:io.Default})}),this._delay)}_getRangeOfSelectionUnlessWhitespaceEnclosed(e){if(!this._editor.hasModel())return;const t=this._editor.getSelection();if(1===e.type)return t;const i=this._editor.getOption(65).enabled;if(i!==sn.$r.Off){if(i===sn.$r.On)return t;if(i===sn.$r.OnCode){if(!t.isEmpty())return t;const e=this._editor.getModel(),{lineNumber:i,column:o}=t.getPosition(),n=e.getLineContent(i);if(0===n.length)return;if(1===o){if(/\s/.test(n[0]))return}else if(o===e.getLineMaxColumn(i)){if(/\s/.test(n[n.length-1]))return}else if(/\s/.test(n[o-2])&&/\s/.test(n[o-1]))return}return t}}}var dn;!function(e){e.Empty={type:0};e.Triggered=class{constructor(e,t,i){this.trigger=e,this.position=t,this._cancellablePromise=i,this.type=1,this.actions=i.catch((e=>{if((0,Ji.n2)(e))return cn;throw e}))}cancel(){this._cancellablePromise.cancel()}}}(dn||(dn={}));const cn=Object.freeze({allActions:[],validActions:[],dispose:()=>{},documentation:[],hasAutoFix:!1,hasAIFix:!1,allAIFixes:!1});class hn extends Fe.JT{constructor(e,t,i,o,n,s){super(),this._editor=e,this._registry=t,this._markerService=i,this._progressService=n,this._configurationService=s,this._codeActionOracle=this._register(new Fe.XK),this._state=dn.Empty,this._onDidChangeState=this._register(new ui.Q5),this.onDidChangeState=this._onDidChangeState.event,this._disposed=!1,this._supportedCodeActions=rn.bindTo(o),this._register(this._editor.onDidChangeModel((()=>this._update()))),this._register(this._editor.onDidChangeModelLanguage((()=>this._update()))),this._register(this._registry.onDidChange((()=>this._update()))),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(65)&&this._update()}))),this._update()}dispose(){this._disposed||(this._disposed=!0,super.dispose(),this.setState(dn.Empty,!0))}_settingEnabledNearbyQuickfixes(){var e;const t=null===(e=this._editor)||void 0===e?void 0:e.getModel();return!!this._configurationService&&this._configurationService.getValue("editor.codeActionWidget.includeNearbyQuickFixes",{resource:null===t||void 0===t?void 0:t.uri})}_update(){if(this._disposed)return;this._codeActionOracle.value=void 0,this.setState(dn.Empty);const e=this._editor.getModel();if(e&&this._registry.has(e)&&!this._editor.getOption(91)){const t=this._registry.all(e).flatMap((e=>{var t;return null!==(t=e.providedCodeActionKinds)&&void 0!==t?t:[]}));this._supportedCodeActions.set(t.join(" ")),this._codeActionOracle.value=new ln(this._editor,this._markerService,(t=>{var i;if(!t)return void this.setState(dn.Empty);const o=t.selection.getStartPosition(),n=(0,Oe.PG)((async i=>{var o,n,s,r,a,l,d,c,h,u;if(this._settingEnabledNearbyQuickfixes()&&1===t.trigger.type&&(t.trigger.triggerAction===io.QuickFix||(null===(n=null===(o=t.trigger.filter)||void 0===o?void 0:o.include)||void 0===n?void 0:n.contains(to.QuickFix)))){const o=await _o(this._registry,e,t.selection,t.trigger,yi.Ex.None,i),n=[...o.allActions];if(i.isCancellationRequested)return cn;const g=null===(s=o.validActions)||void 0===s?void 0:s.some((e=>!!e.action.kind&&to.QuickFix.contains(new gt(e.action.kind)))),p=this._markerService.read({resource:e.uri});if(g){for(const e of o.validActions)(null===(a=null===(r=e.action.command)||void 0===r?void 0:r.arguments)||void 0===a?void 0:a.some((e=>"string"===typeof e&&e.includes(an))))&&(e.action.diagnostics=[...p.filter((e=>e.relatedInformation))]);return{validActions:o.validActions,allActions:n,documentation:o.documentation,hasAutoFix:o.hasAutoFix,hasAIFix:o.hasAIFix,allAIFixes:o.allAIFixes,dispose:()=>{o.dispose()}}}if(!g&&p.length>0){const s=t.selection.getPosition();let r=s,a=Number.MAX_VALUE;const g=[...o.validActions];for(const _ of p){const m=_.endColumn,f=_.endLineNumber,v=_.startLineNumber;if(f===s.lineNumber||v===s.lineNumber){r=new We.L(f,m);const _={type:t.trigger.type,triggerAction:t.trigger.triggerAction,filter:{include:(null===(l=t.trigger.filter)||void 0===l?void 0:l.include)?null===(d=t.trigger.filter)||void 0===d?void 0:d.include:to.QuickFix},autoApply:t.trigger.autoApply,context:{notAvailableMessage:(null===(c=t.trigger.context)||void 0===c?void 0:c.notAvailableMessage)||"",position:r}},v=new ke.Y(r.lineNumber,r.column,r.lineNumber,r.column),b=await _o(this._registry,e,v,_,yi.Ex.None,i);if(0!==b.validActions.length){for(const e of b.validActions)(null===(u=null===(h=e.action.command)||void 0===h?void 0:h.arguments)||void 0===u?void 0:u.some((e=>"string"===typeof e&&e.includes(an))))&&(e.action.diagnostics=[...p.filter((e=>e.relatedInformation))]);0===o.allActions.length&&n.push(...b.allActions),Math.abs(s.column-m)<a?g.unshift(...b.validActions):g.push(...b.validActions)}a=Math.abs(s.column-m)}}const m=g.filter(((e,t,i)=>i.findIndex((t=>t.action.title===e.action.title))===t));return m.sort(((e,t)=>e.action.isPreferred&&!t.action.isPreferred?-1:!e.action.isPreferred&&t.action.isPreferred||e.action.isAI&&!t.action.isAI?1:!e.action.isAI&&t.action.isAI?-1:0)),{validActions:m,allActions:n,documentation:o.documentation,hasAutoFix:o.hasAutoFix,hasAIFix:o.hasAIFix,allAIFixes:o.allAIFixes,dispose:()=>{o.dispose()}}}}return _o(this._registry,e,t.selection,t.trigger,yi.Ex.None,i)}));1===t.trigger.type&&(null===(i=this._progressService)||void 0===i||i.showWhile(n,250));const s=new dn.Triggered(t.trigger,o,n);let r=!1;1===this._state.type&&(r=1===this._state.trigger.type&&1===s.type&&2===s.trigger.type&&this._state.position!==s.position),r||this.setState(s)}),void 0),this._codeActionOracle.value.trigger({type:2,triggerAction:io.Default})}else this._supportedCodeActions.reset()}trigger(e){var t;null===(t=this._codeActionOracle.value)||void 0===t||t.trigger(e)}setState(e,t){e!==this._state&&(1===this._state.type&&this._state.cancel(),this._state=e,t||this._disposed||this._onDidChangeState.fire(e))}}var un,gn=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},pn=function(e,t){return function(i,o){t(i,o,e)}};let mn=un=class extends Fe.JT{static get(e){return e.getContribution(un.ID)}constructor(e,t,i,o,n,s,r,a,l,d){super(),this._commandService=r,this._configurationService=a,this._actionWidgetService=l,this._instantiationService=d,this._activeCodeActions=this._register(new Fe.XK),this._showDisabled=!1,this._disposed=!1,this._editor=e,this._model=this._register(new hn(this._editor,n.codeActionProvider,t,i,s,a)),this._register(this._model.onDidChangeState((e=>this.update(e)))),this._lightBulbWidget=new So.o((()=>{const e=this._editor.getContribution(To.ID);return e&&this._register(e.onClick((e=>this.showCodeActionsFromLightbulb(e.actions,e)))),e})),this._resolver=o.createInstance(xo),this._register(this._editor.onDidLayoutChange((()=>this._actionWidgetService.hide())))}dispose(){this._disposed=!0,super.dispose()}async showCodeActionsFromLightbulb(e,t){if(e.allAIFixes&&1===e.validActions.length){const t=e.validActions[0],i=t.action.command;return i&&"inlineChat.start"===i.id&&i.arguments&&i.arguments.length>=1&&(i.arguments[0]={...i.arguments[0],autoSend:!1}),void await this._applyCodeAction(t,!1,!1,vo.FromAILightbulb)}await this.showCodeActionList(e,t,{includeDisabledActions:!1,fromLightbulb:!0})}showCodeActions(e,t,i){return this.showCodeActionList(t,i,{includeDisabledActions:!1,fromLightbulb:!1})}manualTriggerAtCurrentPosition(e,t,i,o){var n;if(!this._editor.hasModel())return;null===(n=fi.get(this._editor))||void 0===n||n.closeMessage();const s=this._editor.getPosition();this._trigger({type:1,triggerAction:t,filter:i,autoApply:o,context:{notAvailableMessage:e,position:s}})}_trigger(e){return this._model.trigger(e)}async _applyCodeAction(e,t,i,o){try{await this._instantiationService.invokeFunction(bo,e,o,{preview:i,editor:this._editor})}finally{t&&this._trigger({type:2,triggerAction:io.QuickFix,filter:{}})}}async update(e){var t,i,o,n,s,r,a;if(1!==e.type)return void(null===(t=this._lightBulbWidget.rawValue)||void 0===t||t.hide());let l;try{l=await e.actions}catch(d){return void(0,Ji.dL)(d)}if(!this._disposed)if(null===(i=this._lightBulbWidget.value)||void 0===i||i.update(l,e.trigger,e.position),1===e.trigger.type){if(null===(o=e.trigger.filter)||void 0===o?void 0:o.include){const t=this.tryGetValidActionToApply(e.trigger,l);if(t){try{null===(n=this._lightBulbWidget.value)||void 0===n||n.hide(),await this._applyCodeAction(t,!1,!1,vo.FromCodeActions)}finally{l.dispose()}return}if(e.trigger.context){const t=this.getInvalidActionThatWouldHaveBeenApplied(e.trigger,l);if(t&&t.action.disabled)return null===(s=fi.get(this._editor))||void 0===s||s.showMessage(t.action.disabled,e.trigger.context.position),void l.dispose()}}const t=!!(null===(r=e.trigger.filter)||void 0===r?void 0:r.include);if(e.trigger.context&&(!l.allActions.length||!t&&!l.validActions.length))return null===(a=fi.get(this._editor))||void 0===a||a.showMessage(e.trigger.context.notAvailableMessage,e.trigger.context.position),this._activeCodeActions.value=l,void l.dispose();this._activeCodeActions.value=l,this.showCodeActionList(l,this.toCoords(e.position),{includeDisabledActions:t,fromLightbulb:!1})}else this._actionWidgetService.isVisible?l.dispose():this._activeCodeActions.value=l}getInvalidActionThatWouldHaveBeenApplied(e,t){if(t.allActions.length)return"first"===e.autoApply&&0===t.validActions.length||"ifSingle"===e.autoApply&&1===t.allActions.length?t.allActions.find((e=>{let{action:t}=e;return t.disabled})):void 0}tryGetValidActionToApply(e,t){if(t.validActions.length)return"first"===e.autoApply&&t.validActions.length>0||"ifSingle"===e.autoApply&&1===t.validActions.length?t.validActions[0]:void 0}async showCodeActionList(e,t,i){const o=this._editor.createDecorationsCollection(),n=this._editor.getDomNode();if(!n)return;const s=i.includeDisabledActions&&(this._showDisabled||0===e.validActions.length)?e.allActions:e.validActions;if(!s.length)return;const r=We.L.isIPosition(t)?this.toCoords(t):t,a={onSelect:async(e,t)=>{this._applyCodeAction(e,!0,!!t,vo.FromCodeActions),this._actionWidgetService.hide(),o.clear()},onHide:()=>{var e;null===(e=this._editor)||void 0===e||e.focus(),o.clear()},onHover:async(e,t)=>{var i;if(t.isCancellationRequested)return;let o=!1;const n=e.action.kind;if(n){const e=new gt(n);o=[to.RefactorExtract,to.RefactorInline,to.RefactorRewrite].some((t=>t.contains(e)))}return{canPreview:o||!!(null===(i=e.action.edit)||void 0===i?void 0:i.edits.length)}},onFocus:e=>{var t,i;if(e&&e.action){const n=e.action.ranges,s=e.action.diagnostics;if(o.clear(),n&&n.length>0){const e=s&&(null===s||void 0===s?void 0:s.length)>1?s.map((e=>({range:e,options:un.DECORATION}))):n.map((e=>({range:e,options:un.DECORATION})));o.set(e)}else if(s&&s.length>0){const e=s.map((e=>({range:e,options:un.DECORATION})));o.set(e);const n=s[0];if(n.startLineNumber&&n.startColumn){const e=null===(i=null===(t=this._editor.getModel())||void 0===t?void 0:t.getWordAtPosition({lineNumber:n.startLineNumber,column:n.startColumn}))||void 0===i?void 0:i.word;xe.i7((0,ne.NC)("editingNewSelection","Context: {0} at line {1} and column {2}.",e,n.startLineNumber,n.startColumn))}}}else o.clear()}};this._actionWidgetService.show("codeActionWidget",!0,function(e,t,i){if(!t)return e.map((e=>{var t;return{kind:"action",item:e,group:No,disabled:!!e.action.disabled,label:e.action.disabled||e.action.title,canPreview:!!(null===(t=e.action.edit)||void 0===t?void 0:t.edits.length)}}));const o=Lo.map((e=>({group:e,actions:[]})));for(const s of e){const e=s.action.kind?new gt(s.action.kind):gt.None;for(const t of o)if(t.group.kind.contains(e)){t.actions.push(s);break}}const n=[];for(const s of o)if(s.actions.length){n.push({kind:"header",group:s.group});for(const e of s.actions){const t=s.group;n.push({kind:"action",item:e,group:e.action.isAI?{title:t.title,kind:t.kind,icon:$.l.sparkle}:t,label:e.action.title,disabled:!!e.action.disabled,keybinding:i(e.action)})}}return n}(s,this._shouldShowHeaders(),this._resolver.getResolver()),a,r,n,this._getActionBarActions(e,t,i))}toCoords(e){if(!this._editor.hasModel())return{x:0,y:0};this._editor.revealPosition(e,1),this._editor.render();const t=this._editor.getScrolledVisiblePosition(e),i=(0,X.i)(this._editor.getDomNode());return{x:i.left+t.left,y:i.top+t.top+t.height}}_shouldShowHeaders(){var e;const t=null===(e=this._editor)||void 0===e?void 0:e.getModel();return this._configurationService.getValue("editor.codeActionWidget.showHeaders",{resource:null===t||void 0===t?void 0:t.uri})}_getActionBarActions(e,t,i){if(i.fromLightbulb)return[];const o=e.documentation.map((e=>{var t;return{id:e.id,label:e.title,tooltip:null!==(t=e.tooltip)&&void 0!==t?t:"",class:void 0,enabled:!0,run:()=>{var t;return this._commandService.executeCommand(e.id,...null!==(t=e.arguments)&&void 0!==t?t:[])}}}));return i.includeDisabledActions&&e.validActions.length>0&&e.allActions.length!==e.validActions.length&&o.push(this._showDisabled?{id:"hideMoreActions",label:(0,ne.NC)("hideMoreActions","Hide Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!1,this.showCodeActionList(e,t,i))}:{id:"showMoreActions",label:(0,ne.NC)("showMoreActions","Show Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!0,this.showCodeActionList(e,t,i))}),o}};function _n(e){return ae.Ao.regex(rn.keys()[0],new RegExp("(\\s|^)"+(0,ii.ec)(e.value)+"\\b"))}mn.ID="editor.contrib.codeActionController",mn.DECORATION=Be.qx.register({description:"quickfix-highlight",className:"quickfix-edit-highlight"}),mn=un=gn([pn(1,on.lT),pn(2,ae.i6),pn(3,ni.TG),pn(4,kt.p),pn(5,yi.ek),pn(6,ye.H),pn(7,re.Ui),pn(8,Xo),pn(9,ni.TG)],mn),(0,Ue.Ic)(((e,t)=>{var i,o;i=".quickfix-edit-highlight",(o=e.getColor(ze.MUv))&&t.addRule(".monaco-editor ".concat(i," { background-color: ").concat(o,"; }"));const n=e.getColor(ze.EiJ);n&&t.addRule(".monaco-editor .quickfix-edit-highlight { border: 1px ".concat((0,nn.c3)(e.type)?"dotted":"solid"," ").concat(n,"; box-sizing: border-box; }"))}));const fn={type:"object",defaultSnippets:[{body:{kind:""}}],properties:{kind:{type:"string",description:ne.NC("args.schema.kind","Kind of the code action to run.")},apply:{type:"string",description:ne.NC("args.schema.apply","Controls when the returned actions are applied."),default:"ifSingle",enum:["first","ifSingle","never"],enumDescriptions:[ne.NC("args.schema.apply.first","Always apply the first returned code action."),ne.NC("args.schema.apply.ifSingle","Apply the first returned code action if it is the only one."),ne.NC("args.schema.apply.never","Do not apply the returned code actions.")]},preferred:{type:"boolean",default:!1,description:ne.NC("args.schema.preferred","Controls if only preferred code actions should be returned.")}}};function vn(e,t,i,o){let n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:io.Default;if(e.hasModel()){const s=mn.get(e);null===s||void 0===s||s.manualTriggerAtCurrentPosition(t,n,i,o)}}class bn extends ee.R6{constructor(){super({id:ao,label:ne.NC("quickfix.trigger.label","Quick Fix..."),alias:"Quick Fix...",precondition:ae.Ao.and(oe.u.writable,oe.u.hasCodeActionsProvider),kbOpts:{kbExpr:oe.u.textInputFocus,primary:2137,weight:100}})}run(e,t){return vn(t,ne.NC("editor.action.quickFix.noneMessage","No code actions available"),void 0,void 0,io.QuickFix)}}class Cn extends ee._l{constructor(){super({id:ro,precondition:ae.Ao.and(oe.u.writable,oe.u.hasCodeActionsProvider),metadata:{description:"Trigger a code action",args:[{name:"args",schema:fn}]}})}runEditorCommand(e,t,i){const o=no.fromUser(i,{kind:gt.Empty,apply:"ifSingle"});return vn(t,"string"===typeof(null===i||void 0===i?void 0:i.kind)?o.preferred?ne.NC("editor.action.codeAction.noneMessage.preferred.kind","No preferred code actions for '{0}' available",i.kind):ne.NC("editor.action.codeAction.noneMessage.kind","No code actions for '{0}' available",i.kind):o.preferred?ne.NC("editor.action.codeAction.noneMessage.preferred","No preferred code actions available"):ne.NC("editor.action.codeAction.noneMessage","No code actions available"),{include:o.kind,includeSourceActions:!0,onlyIncludePreferredActions:o.preferred},o.apply)}}class Sn extends ee.R6{constructor(){super({id:co,label:ne.NC("refactor.label","Refactor..."),alias:"Refactor...",precondition:ae.Ao.and(oe.u.writable,oe.u.hasCodeActionsProvider),kbOpts:{kbExpr:oe.u.textInputFocus,primary:3120,mac:{primary:1328},weight:100},contextMenuOpts:{group:"1_modification",order:2,when:ae.Ao.and(oe.u.writable,_n(to.Refactor))},metadata:{description:"Refactor...",args:[{name:"args",schema:fn}]}})}run(e,t,i){const o=no.fromUser(i,{kind:to.Refactor,apply:"never"});return vn(t,"string"===typeof(null===i||void 0===i?void 0:i.kind)?o.preferred?ne.NC("editor.action.refactor.noneMessage.preferred.kind","No preferred refactorings for '{0}' available",i.kind):ne.NC("editor.action.refactor.noneMessage.kind","No refactorings for '{0}' available",i.kind):o.preferred?ne.NC("editor.action.refactor.noneMessage.preferred","No preferred refactorings available"):ne.NC("editor.action.refactor.noneMessage","No refactorings available"),{include:to.Refactor.contains(o.kind)?o.kind:gt.None,onlyIncludePreferredActions:o.preferred},o.apply,io.Refactor)}}class yn extends ee.R6{constructor(){super({id:ho,label:ne.NC("source.label","Source Action..."),alias:"Source Action...",precondition:ae.Ao.and(oe.u.writable,oe.u.hasCodeActionsProvider),contextMenuOpts:{group:"1_modification",order:2.1,when:ae.Ao.and(oe.u.writable,_n(to.Source))},metadata:{description:"Source Action...",args:[{name:"args",schema:fn}]}})}run(e,t,i){const o=no.fromUser(i,{kind:to.Source,apply:"never"});return vn(t,"string"===typeof(null===i||void 0===i?void 0:i.kind)?o.preferred?ne.NC("editor.action.source.noneMessage.preferred.kind","No preferred source actions for '{0}' available",i.kind):ne.NC("editor.action.source.noneMessage.kind","No source actions for '{0}' available",i.kind):o.preferred?ne.NC("editor.action.source.noneMessage.preferred","No preferred source actions available"):ne.NC("editor.action.source.noneMessage","No source actions available"),{include:to.Source.contains(o.kind)?o.kind:gt.None,includeSourceActions:!0,onlyIncludePreferredActions:o.preferred},o.apply,io.SourceAction)}}class wn extends ee.R6{constructor(){super({id:uo,label:ne.NC("organizeImports.label","Organize Imports"),alias:"Organize Imports",precondition:ae.Ao.and(oe.u.writable,_n(to.SourceOrganizeImports)),kbOpts:{kbExpr:oe.u.textInputFocus,primary:1581,weight:100}})}run(e,t){return vn(t,ne.NC("editor.action.organize.noneMessage","No organize imports action available"),{include:to.SourceOrganizeImports,includeSourceActions:!0},"ifSingle",io.OrganizeImports)}}class xn extends ee.R6{constructor(){super({id:go,label:ne.NC("fixAll.label","Fix All"),alias:"Fix All",precondition:ae.Ao.and(oe.u.writable,_n(to.SourceFixAll))})}run(e,t){return vn(t,ne.NC("fixAll.noneMessage","No fix all action available"),{include:to.SourceFixAll,includeSourceActions:!0},"ifSingle",io.FixAll)}}class Nn extends ee.R6{constructor(){super({id:lo,label:ne.NC("autoFix.label","Auto Fix..."),alias:"Auto Fix...",precondition:ae.Ao.and(oe.u.writable,_n(to.QuickFix)),kbOpts:{kbExpr:oe.u.textInputFocus,primary:1625,mac:{primary:2649},weight:100}})}run(e,t){return vn(t,ne.NC("editor.action.autoFix.noneMessage","No auto fixes available"),{include:to.QuickFix,onlyIncludePreferredActions:!0},"ifSingle",io.AutoFix)}}var Ln=i(9694);(0,ee._K)(mn.ID,mn,3),(0,ee._K)(To.ID,To,4),(0,ee.Qr)(bn),(0,ee.Qr)(Sn),(0,ee.Qr)(yn),(0,ee.Qr)(wn),(0,ee.Qr)(Nn),(0,ee.Qr)(xn),(0,ee.fK)(new Cn),ft.B.as(Ln.IP.Configuration).registerConfiguration({...Zi.wk,properties:{"editor.codeActionWidget.showHeaders":{type:"boolean",scope:5,description:ne.NC("showCodeActionHeaders","Enable/disable showing group headers in the Code Action menu."),default:!0}}}),ft.B.as(Ln.IP.Configuration).registerConfiguration({...Zi.wk,properties:{"editor.codeActionWidget.includeNearbyQuickFixes":{type:"boolean",scope:5,description:ne.NC("includeNearbyQuickFixes","Enable/disable showing nearest Quick Fix within a line when not currently on a diagnostic."),default:!0}}});var kn=i(1135),Dn=i(63686);class In{constructor(){this.lenses=[],this._disposables=new Fe.SL}dispose(){this._disposables.dispose()}get isDisposed(){return this._disposables.isDisposed}add(e,t){this._disposables.add(e);for(const i of e.lenses)this.lenses.push({symbol:i,provider:t})}}async function Rn(e,t,i){const o=e.ordered(t),n=new Map,s=new In,r=o.map((async(e,o)=>{n.set(e,o);try{const o=await Promise.resolve(e.provideCodeLenses(t,i));o&&s.add(o,e)}catch(r){(0,Ji.Cp)(r)}}));return await Promise.all(r),s.lenses=s.lenses.sort(((e,t)=>e.symbol.range.startLineNumber<t.symbol.range.startLineNumber?-1:e.symbol.range.startLineNumber>t.symbol.range.startLineNumber?1:n.get(e.provider)<n.get(t.provider)?-1:n.get(e.provider)>n.get(t.provider)?1:e.symbol.range.startColumn<t.symbol.range.startColumn?-1:e.symbol.range.startColumn>t.symbol.range.startColumn?1:0)),s}ye.P.registerCommand("_executeCodeLensProvider",(function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];let[n,s]=i;(0,Dn.p_)(_t.o.isUri(n)),(0,Dn.p_)("number"===typeof s||!s);const{codeLensProvider:r}=e.get(kt.p),a=e.get($i.q).getModel(n);if(!a)throw(0,Ji.b1)();const l=[],d=new Fe.SL;return Rn(r,a,Yi.T.None).then((e=>{d.add(e);const t=[];for(const i of e.lenses)void 0===s||null===s||Boolean(i.symbol.command)?l.push(i.symbol):s-- >0&&i.provider.resolveCodeLens&&t.push(Promise.resolve(i.provider.resolveCodeLens(a,i.symbol,Yi.T.None)).then((e=>l.push(e||i.symbol))));return Promise.all(t)})).then((()=>l)).finally((()=>{setTimeout((()=>d.dispose()),100)}))}));var Pn=i(65549),Mn=i(89965),Tn=i(29880),En=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},An=function(e,t){return function(i,o){t(i,o,e)}};const On=(0,ni.yh)("ICodeLensCache");class Fn{constructor(e,t){this.lineCount=e,this.data=t}}let Wn=class{constructor(e){this._fakeProvider=new class{provideCodeLenses(){throw new Error("not supported")}},this._cache=new Pn.z6(20,.75);(0,X.se)(Tn.E,(()=>e.remove("codelens/cache",1)));const t="codelens/cache2",i=e.get(t,1,"{}");this._deserialize(i),ui.ju.once(e.onWillSaveState)((i=>{i.reason===Mn.fk.SHUTDOWN&&e.store(t,this._serialize(),1,1)}))}put(e,t){const i=t.lenses.map((e=>{var t;return{range:e.symbol.range,command:e.symbol.command&&{id:"",title:null===(t=e.symbol.command)||void 0===t?void 0:t.title}}})),o=new In;o.add({lenses:i,dispose:()=>{}},this._fakeProvider);const n=new Fn(e.getLineCount(),o);this._cache.set(e.uri.toString(),n)}get(e){const t=this._cache.get(e.uri.toString());return t&&t.lineCount===e.getLineCount()?t.data:void 0}delete(e){this._cache.delete(e.uri.toString())}_serialize(){const e=Object.create(null);for(const[t,i]of this._cache){const o=new Set;for(const e of i.data.lenses)o.add(e.symbol.range.startLineNumber);e[t]={lineCount:i.lineCount,lines:[...o.values()]}}return JSON.stringify(e)}_deserialize(e){try{const t=JSON.parse(e);for(const e in t){const i=t[e],o=[];for(const e of i.lines)o.push({range:new He.e(e,1,e,11)});const n=new In;n.add({lenses:o,dispose(){}},this._fakeProvider),this._cache.set(e,new Fn(i.lineCount,n))}}catch(wa){}}};Wn=En([An(0,Mn.Uy)],Wn),(0,Zo.z)(On,Wn,1);var Hn=i(76272);class Vn{constructor(e,t,i){this.afterColumn=1073741824,this.afterLineNumber=e,this.heightInPx=t,this._onHeight=i,this.suppressMouseDown=!0,this.domNode=document.createElement("div")}onComputedHeight(e){void 0===this._lastHeight?this._lastHeight=e:this._lastHeight!==e&&(this._lastHeight=e,this._onHeight())}isVisible(){return 0!==this._lastHeight&&this.domNode.hasAttribute("monaco-visible-view-zone")}}class Bn{constructor(e,t){this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this._commands=new Map,this._isEmpty=!0,this._editor=e,this._id="codelens.widget-".concat(Bn._idPool++),this.updatePosition(t),this._domNode=document.createElement("span"),this._domNode.className="codelens-decoration"}withCommands(e,t){this._commands.clear();const i=[];let o=!1;for(let n=0;n<e.length;n++){const t=e[n];if(t&&(o=!0,t.command)){const o=(0,Hn.T)(t.command.title.trim());if(t.command.id){const e="c".concat(Bn._idPool++);i.push(X.$("a",{id:e,title:t.command.tooltip,role:"button"},...o)),this._commands.set(e,t.command)}else i.push(X.$("span",{title:t.command.tooltip},...o));n+1<e.length&&i.push(X.$("span",void 0,"\xa0|\xa0"))}}o?(X.mc(this._domNode,...i),this._isEmpty&&t&&this._domNode.classList.add("fadein"),this._isEmpty=!1):X.mc(this._domNode,X.$("span",void 0,"no commands"))}getCommand(e){return e.parentElement===this._domNode?this._commands.get(e.id):void 0}getId(){return this._id}getDomNode(){return this._domNode}updatePosition(e){const t=this._editor.getModel().getLineFirstNonWhitespaceColumn(e);this._widgetPosition={position:{lineNumber:e,column:t},preference:[1]}}getPosition(){return this._widgetPosition||null}}Bn._idPool=0;class zn{constructor(){this._removeDecorations=[],this._addDecorations=[],this._addDecorationsCallbacks=[]}addDecoration(e,t){this._addDecorations.push(e),this._addDecorationsCallbacks.push(t)}removeDecoration(e){this._removeDecorations.push(e)}commit(e){const t=e.deltaDecorations(this._removeDecorations,this._addDecorations);for(let i=0,o=t.length;i<o;i++)this._addDecorationsCallbacks[i](t[i])}}const Un=Be.qx.register({collapseOnReplaceEdit:!0,description:"codelens"});class Kn{constructor(e,t,i,o,n,s){let r;this._isDisposed=!1,this._editor=t,this._data=e,this._decorationIds=[];const a=[];this._data.forEach(((e,t)=>{e.symbol.command&&a.push(e.symbol),i.addDecoration({range:e.symbol.range,options:Un},(e=>this._decorationIds[t]=e)),r=r?He.e.plusRange(r,e.symbol.range):He.e.lift(e.symbol.range)})),this._viewZone=new Vn(r.startLineNumber-1,n,s),this._viewZoneId=o.addZone(this._viewZone),a.length>0&&(this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(a,!1))}_createContentWidgetIfNecessary(){this._contentWidget?this._editor.layoutContentWidget(this._contentWidget):(this._contentWidget=new Bn(this._editor,this._viewZone.afterLineNumber+1),this._editor.addContentWidget(this._contentWidget))}dispose(e,t){this._decorationIds.forEach(e.removeDecoration,e),this._decorationIds=[],null===t||void 0===t||t.removeZone(this._viewZoneId),this._contentWidget&&(this._editor.removeContentWidget(this._contentWidget),this._contentWidget=void 0),this._isDisposed=!0}isDisposed(){return this._isDisposed}isValid(){return this._decorationIds.some(((e,t)=>{const i=this._editor.getModel().getDecorationRange(e),o=this._data[t].symbol;return!(!i||He.e.isEmpty(o.range)!==i.isEmpty())}))}updateCodeLensSymbols(e,t){this._decorationIds.forEach(t.removeDecoration,t),this._decorationIds=[],this._data=e,this._data.forEach(((e,i)=>{t.addDecoration({range:e.symbol.range,options:Un},(e=>this._decorationIds[i]=e))}))}updateHeight(e,t){this._viewZone.heightInPx=e,t.layoutZone(this._viewZoneId),this._contentWidget&&this._editor.layoutContentWidget(this._contentWidget)}computeIfNecessary(e){if(!this._viewZone.isVisible())return null;for(let t=0;t<this._decorationIds.length;t++){const i=e.getDecorationRange(this._decorationIds[t]);i&&(this._data[t].symbol.range=i)}return this._data}updateCommands(e){this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(e,!0);for(let t=0;t<this._data.length;t++){const i=e[t];if(i){const{symbol:e}=this._data[t];e.command=i.command||e.command}}}getCommand(e){var t;return null===(t=this._contentWidget)||void 0===t?void 0:t.getCommand(e)}getLineNumber(){const e=this._editor.getModel().getDecorationRange(this._decorationIds[0]);return e?e.startLineNumber:-1}update(e){if(this.isValid()){const t=this._editor.getModel().getDecorationRange(this._decorationIds[0]);t&&(this._viewZone.afterLineNumber=t.startLineNumber-1,e.layoutZone(this._viewZoneId),this._contentWidget&&(this._contentWidget.updatePosition(t.startLineNumber),this._editor.layoutContentWidget(this._contentWidget)))}}}var jn=i(25233),qn=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Gn=function(e,t){return function(i,o){t(i,o,e)}};let Qn=class{constructor(e,t,i,o,n,s){this._editor=e,this._languageFeaturesService=t,this._commandService=o,this._notificationService=n,this._codeLensCache=s,this._disposables=new Fe.SL,this._localToDispose=new Fe.SL,this._lenses=[],this._oldCodeLensModels=new Fe.SL,this._provideCodeLensDebounce=i.for(t.codeLensProvider,"CodeLensProvide",{min:250}),this._resolveCodeLensesDebounce=i.for(t.codeLensProvider,"CodeLensResolve",{min:250,salt:"resolve"}),this._resolveCodeLensesScheduler=new Oe.pY((()=>this._resolveCodeLensesInViewport()),this._resolveCodeLensesDebounce.default()),this._disposables.add(this._editor.onDidChangeModel((()=>this._onModelChange()))),this._disposables.add(this._editor.onDidChangeModelLanguage((()=>this._onModelChange()))),this._disposables.add(this._editor.onDidChangeConfiguration((e=>{(e.hasChanged(50)||e.hasChanged(19)||e.hasChanged(18))&&this._updateLensStyle(),e.hasChanged(17)&&this._onModelChange()}))),this._disposables.add(t.codeLensProvider.onDidChange(this._onModelChange,this)),this._onModelChange(),this._updateLensStyle()}dispose(){var e;this._localDispose(),this._disposables.dispose(),this._oldCodeLensModels.dispose(),null===(e=this._currentCodeLensModel)||void 0===e||e.dispose()}_getLayoutInfo(){const e=Math.max(1.3,this._editor.getOption(67)/this._editor.getOption(52));let t=this._editor.getOption(19);return(!t||t<5)&&(t=.9*this._editor.getOption(52)|0),{fontSize:t,codeLensHeight:t*e|0}}_updateLensStyle(){const{codeLensHeight:e,fontSize:t}=this._getLayoutInfo(),i=this._editor.getOption(18),o=this._editor.getOption(50),{style:n}=this._editor.getContainerDomNode();n.setProperty("--vscode-editorCodeLens-lineHeight","".concat(e,"px")),n.setProperty("--vscode-editorCodeLens-fontSize","".concat(t,"px")),n.setProperty("--vscode-editorCodeLens-fontFeatureSettings",o.fontFeatureSettings),i&&(n.setProperty("--vscode-editorCodeLens-fontFamily",i),n.setProperty("--vscode-editorCodeLens-fontFamilyDefault",sn.hL.fontFamily)),this._editor.changeViewZones((t=>{for(const i of this._lenses)i.updateHeight(e,t)}))}_localDispose(){var e,t,i;null===(e=this._getCodeLensModelPromise)||void 0===e||e.cancel(),this._getCodeLensModelPromise=void 0,null===(t=this._resolveCodeLensesPromise)||void 0===t||t.cancel(),this._resolveCodeLensesPromise=void 0,this._localToDispose.clear(),this._oldCodeLensModels.clear(),null===(i=this._currentCodeLensModel)||void 0===i||i.dispose()}_onModelChange(){this._localDispose();const e=this._editor.getModel();if(!e)return;if(!this._editor.getOption(17)||e.isTooLargeForTokenization())return;const t=this._codeLensCache.get(e);if(t&&this._renderCodeLensSymbols(t),!this._languageFeaturesService.codeLensProvider.has(e))return void(t&&(0,Oe.Vg)((()=>{const i=this._codeLensCache.get(e);t===i&&(this._codeLensCache.delete(e),this._onModelChange())}),3e4,this._localToDispose));for(const o of this._languageFeaturesService.codeLensProvider.all(e))if("function"===typeof o.onDidChange){const e=o.onDidChange((()=>i.schedule()));this._localToDispose.add(e)}const i=new Oe.pY((()=>{var t;const o=Date.now();null===(t=this._getCodeLensModelPromise)||void 0===t||t.cancel(),this._getCodeLensModelPromise=(0,Oe.PG)((t=>Rn(this._languageFeaturesService.codeLensProvider,e,t))),this._getCodeLensModelPromise.then((t=>{this._currentCodeLensModel&&this._oldCodeLensModels.add(this._currentCodeLensModel),this._currentCodeLensModel=t,this._codeLensCache.put(e,t);const n=this._provideCodeLensDebounce.update(e,Date.now()-o);i.delay=n,this._renderCodeLensSymbols(t),this._resolveCodeLensesInViewportSoon()}),Ji.dL)}),this._provideCodeLensDebounce.get(e));this._localToDispose.add(i),this._localToDispose.add((0,Fe.OF)((()=>this._resolveCodeLensesScheduler.cancel()))),this._localToDispose.add(this._editor.onDidChangeModelContent((()=>{var e;this._editor.changeDecorations((e=>{this._editor.changeViewZones((t=>{const i=[];let o=-1;this._lenses.forEach((e=>{e.isValid()&&o!==e.getLineNumber()?(e.update(t),o=e.getLineNumber()):i.push(e)}));const n=new zn;i.forEach((e=>{e.dispose(n,t),this._lenses.splice(this._lenses.indexOf(e),1)})),n.commit(e)}))})),i.schedule(),this._resolveCodeLensesScheduler.cancel(),null===(e=this._resolveCodeLensesPromise)||void 0===e||e.cancel(),this._resolveCodeLensesPromise=void 0}))),this._localToDispose.add(this._editor.onDidFocusEditorWidget((()=>{i.schedule()}))),this._localToDispose.add(this._editor.onDidBlurEditorText((()=>{i.cancel()}))),this._localToDispose.add(this._editor.onDidScrollChange((e=>{e.scrollTopChanged&&this._lenses.length>0&&this._resolveCodeLensesInViewportSoon()}))),this._localToDispose.add(this._editor.onDidLayoutChange((()=>{this._resolveCodeLensesInViewportSoon()}))),this._localToDispose.add((0,Fe.OF)((()=>{if(this._editor.getModel()){const e=kn.Z.capture(this._editor);this._editor.changeDecorations((e=>{this._editor.changeViewZones((t=>{this._disposeAllLenses(e,t)}))})),e.restore(this._editor)}else this._disposeAllLenses(void 0,void 0)}))),this._localToDispose.add(this._editor.onMouseDown((e=>{if(9!==e.target.type)return;let t=e.target.element;if("SPAN"===(null===t||void 0===t?void 0:t.tagName)&&(t=t.parentElement),"A"===(null===t||void 0===t?void 0:t.tagName))for(const i of this._lenses){const e=i.getCommand(t);if(e){this._commandService.executeCommand(e.id,...e.arguments||[]).catch((e=>this._notificationService.error(e)));break}}}))),i.schedule()}_disposeAllLenses(e,t){const i=new zn;for(const o of this._lenses)o.dispose(i,t);e&&i.commit(e),this._lenses.length=0}_renderCodeLensSymbols(e){if(!this._editor.hasModel())return;const t=this._editor.getModel().getLineCount(),i=[];let o;for(const r of e.lenses){const e=r.symbol.range.startLineNumber;e<1||e>t||(o&&o[o.length-1].symbol.range.startLineNumber===e?o.push(r):(o=[r],i.push(o)))}if(!i.length&&!this._lenses.length)return;const n=kn.Z.capture(this._editor),s=this._getLayoutInfo();this._editor.changeDecorations((e=>{this._editor.changeViewZones((t=>{const o=new zn;let n=0,r=0;for(;r<i.length&&n<this._lenses.length;){const e=i[r][0].symbol.range.startLineNumber,a=this._lenses[n].getLineNumber();a<e?(this._lenses[n].dispose(o,t),this._lenses.splice(n,1)):a===e?(this._lenses[n].updateCodeLensSymbols(i[r],o),r++,n++):(this._lenses.splice(n,0,new Kn(i[r],this._editor,o,t,s.codeLensHeight,(()=>this._resolveCodeLensesInViewportSoon()))),n++,r++)}for(;n<this._lenses.length;)this._lenses[n].dispose(o,t),this._lenses.splice(n,1);for(;r<i.length;)this._lenses.push(new Kn(i[r],this._editor,o,t,s.codeLensHeight,(()=>this._resolveCodeLensesInViewportSoon()))),r++;o.commit(e)}))})),n.restore(this._editor)}_resolveCodeLensesInViewportSoon(){this._editor.getModel()&&this._resolveCodeLensesScheduler.schedule()}_resolveCodeLensesInViewport(){var e;null===(e=this._resolveCodeLensesPromise)||void 0===e||e.cancel(),this._resolveCodeLensesPromise=void 0;const t=this._editor.getModel();if(!t)return;const i=[],o=[];if(this._lenses.forEach((e=>{const n=e.computeIfNecessary(t);n&&(i.push(n),o.push(e))})),0===i.length)return;const n=Date.now(),s=(0,Oe.PG)((e=>{const n=i.map(((i,n)=>{const s=new Array(i.length),r=i.map(((i,o)=>i.symbol.command||"function"!==typeof i.provider.resolveCodeLens?(s[o]=i.symbol,Promise.resolve(void 0)):Promise.resolve(i.provider.resolveCodeLens(t,i.symbol,e)).then((e=>{s[o]=e}),Ji.Cp)));return Promise.all(r).then((()=>{e.isCancellationRequested||o[n].isDisposed()||o[n].updateCommands(s)}))}));return Promise.all(n)}));this._resolveCodeLensesPromise=s,this._resolveCodeLensesPromise.then((()=>{const e=this._resolveCodeLensesDebounce.update(t,Date.now()-n);this._resolveCodeLensesScheduler.delay=e,this._currentCodeLensModel&&this._codeLensCache.put(t,this._currentCodeLensModel),this._oldCodeLensModels.clear(),s===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)}),(e=>{(0,Ji.dL)(e),s===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)}))}async getModel(){var e;return await this._getCodeLensModelPromise,await this._resolveCodeLensesPromise,(null===(e=this._currentCodeLensModel)||void 0===e?void 0:e.isDisposed)?void 0:this._currentCodeLensModel}};Qn.ID="css.editor.codeLens",Qn=qn([Gn(1,kt.p),Gn(2,jn.A),Gn(3,ye.H),Gn(4,Xi.lT),Gn(5,On)],Qn),(0,ee._K)(Qn.ID,Qn,1),(0,ee.Qr)(class extends ee.R6{constructor(){super({id:"codelens.showLensesInCurrentLine",precondition:oe.u.hasCodeLensProvider,label:(0,ne.NC)("showLensOnLine","Show CodeLens Commands For Current Line"),alias:"Show CodeLens Commands For Current Line"})}async run(e,t){if(!t.hasModel())return;const i=e.get(wi.eJ),o=e.get(ye.H),n=e.get(Xi.lT),s=t.getSelection().positionLineNumber,r=t.getContribution(Qn.ID);if(!r)return;const a=await r.getModel();if(!a)return;const l=[];for(const u of a.lenses)u.symbol.command&&u.symbol.range.startLineNumber===s&&l.push({label:u.symbol.command.title,command:u.symbol.command});if(0===l.length)return;const d=await i.pick(l,{canPickMany:!1,placeHolder:(0,ne.NC)("placeHolder","Select a command")});if(!d)return;let c=d.command;if(a.isDisposed){const e=await r.getModel(),t=null===e||void 0===e?void 0:e.lenses.find((e=>{var t;return e.symbol.range.startLineNumber===s&&(null===(t=e.symbol.command)||void 0===t?void 0:t.title)===c.title}));if(!t||!t.symbol.command)return;c=t.symbol.command}try{await o.executeCommand(c.id,...c.arguments||[])}catch(h){n.error(h)}}});var Zn=i(89652),Yn=i(6459),Jn=i(64370),$n=i(56965),Xn=i(40801),es=i(78278),ts=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},is=function(e,t){return function(i,o){t(i,o,e)}};class os{constructor(e,t){this._editorWorkerClient=new $n.Q8(e,!1,"editorWorkerService",t)}async provideDocumentColors(e,t){return this._editorWorkerClient.computeDefaultDocumentColors(e.uri)}provideColorPresentations(e,t,i){const o=t.range,n=t.color,s=n.alpha,r=new Zn.Il(new Zn.VS(Math.round(255*n.red),Math.round(255*n.green),Math.round(255*n.blue),s)),a=s?Zn.Il.Format.CSS.formatRGB(r):Zn.Il.Format.CSS.formatRGBA(r),l=s?Zn.Il.Format.CSS.formatHSL(r):Zn.Il.Format.CSS.formatHSLA(r),d=s?Zn.Il.Format.CSS.formatHex(r):Zn.Il.Format.CSS.formatHexA(r),c=[];return c.push({label:a,textEdit:{range:o,text:a}}),c.push({label:l,textEdit:{range:o,text:l}}),c.push({label:d,textEdit:{range:o,text:d}}),c}}let ns=class extends Fe.JT{constructor(e,t,i){super(),this._register(i.colorProvider.register("*",new os(e,t)))}};async function ss(e,t,i){let o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return cs(new as,e,t,i,o)}function rs(e,t,i,o){return Promise.resolve(i.provideColorPresentations(e,t,o))}ns=ts([is(0,$i.q),is(1,Xn.c_),is(2,kt.p)],ns),(0,es.y)(ns);class as{constructor(){}async compute(e,t,i,o){const n=await e.provideDocumentColors(t,i);if(Array.isArray(n))for(const s of n)o.push({colorInfo:s,provider:e});return Array.isArray(n)}}class ls{constructor(){}async compute(e,t,i,o){const n=await e.provideDocumentColors(t,i);if(Array.isArray(n))for(const s of n)o.push({range:s.range,color:[s.color.red,s.color.green,s.color.blue,s.color.alpha]});return Array.isArray(n)}}class ds{constructor(e){this.colorInfo=e}async compute(e,t,i,o){const n=await e.provideColorPresentations(t,this.colorInfo,Yi.T.None);return Array.isArray(n)&&o.push(...n),Array.isArray(n)}}async function cs(e,t,i,o,n){let s,r=!1;const a=[],l=t.ordered(i);for(let c=l.length-1;c>=0;c--){const t=l[c];if(t instanceof os)s=t;else try{await e.compute(t,i,o,a)&&(r=!0)}catch(d){(0,Ji.Cp)(d)}}return r?a:s&&n?(await e.compute(s,i,o,a),a):[]}function hs(e,t){const{colorProvider:i}=e.get(kt.p),o=e.get($i.q).getModel(t);if(!o)throw(0,Ji.b1)();return{model:o,colorProviderRegistry:i,isDefaultColorDecoratorsEnabled:e.get(re.Ui).getValue("editor.defaultColorDecorators",{resource:t})}}ye.P.registerCommand("_executeDocumentColorProvider",(function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n]=i;if(!(n instanceof _t.o))throw(0,Ji.b1)();const{model:s,colorProviderRegistry:r,isDefaultColorDecoratorsEnabled:a}=hs(e,n);return cs(new ls,r,s,Yi.T.None,a)})),ye.P.registerCommand("_executeColorPresentationProvider",(function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n,s]=i,{uri:r,range:a}=s;if(!(r instanceof _t.o)||!Array.isArray(n)||4!==n.length||!He.e.isIRange(a))throw(0,Ji.b1)();const{model:l,colorProviderRegistry:d,isDefaultColorDecoratorsEnabled:c}=hs(e,r),[h,u,g,p]=n;return cs(new ds({range:a,color:{red:h,green:u,blue:g,alpha:p}}),d,l,Yi.T.None,c)}));var us,gs=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ps=function(e,t){return function(i,o){t(i,o,e)}};const ms=Object.create({});let _s=us=class extends Fe.JT{constructor(e,t,i,o){super(),this._editor=e,this._configurationService=t,this._languageFeaturesService=i,this._localToDispose=this._register(new Fe.SL),this._decorationsIds=[],this._colorDatas=new Map,this._colorDecoratorIds=this._editor.createDecorationsCollection(),this._ruleFactory=new Jn.t7(this._editor),this._decoratorLimitReporter=new fs,this._colorDecorationClassRefs=this._register(new Fe.SL),this._debounceInformation=o.for(i.colorProvider,"Document Colors",{min:us.RECOMPUTE_TIME}),this._register(e.onDidChangeModel((()=>{this._isColorDecoratorsEnabled=this.isEnabled(),this.updateColors()}))),this._register(e.onDidChangeModelLanguage((()=>this.updateColors()))),this._register(i.colorProvider.onDidChange((()=>this.updateColors()))),this._register(e.onDidChangeConfiguration((e=>{const t=this._isColorDecoratorsEnabled;this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(147);const i=t!==this._isColorDecoratorsEnabled||e.hasChanged(21),o=e.hasChanged(147);(i||o)&&(this._isColorDecoratorsEnabled?this.updateColors():this.removeAllDecorations())}))),this._timeoutTimer=null,this._computePromise=null,this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(147),this.updateColors()}isEnabled(){const e=this._editor.getModel();if(!e)return!1;const t=e.getLanguageId(),i=this._configurationService.getValue(t);if(i&&"object"===typeof i){const e=i.colorDecorators;if(e&&void 0!==e.enable&&!e.enable)return e.enable}return this._editor.getOption(20)}static get(e){return e.getContribution(this.ID)}dispose(){this.stop(),this.removeAllDecorations(),super.dispose()}updateColors(){if(this.stop(),!this._isColorDecoratorsEnabled)return;const e=this._editor.getModel();e&&this._languageFeaturesService.colorProvider.has(e)&&(this._localToDispose.add(this._editor.onDidChangeModelContent((()=>{this._timeoutTimer||(this._timeoutTimer=new Oe._F,this._timeoutTimer.cancelAndSet((()=>{this._timeoutTimer=null,this.beginCompute()}),this._debounceInformation.get(e)))}))),this.beginCompute())}async beginCompute(){this._computePromise=(0,Oe.PG)((async e=>{const t=this._editor.getModel();if(!t)return[];const i=new Yn.G(!1),o=await ss(this._languageFeaturesService.colorProvider,t,e,this._isDefaultColorDecoratorsEnabled);return this._debounceInformation.update(t,i.elapsed()),o}));try{const e=await this._computePromise;this.updateDecorations(e),this.updateColorDecorators(e),this._computePromise=null}catch(e){(0,Ji.dL)(e)}}stop(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()}updateDecorations(e){const t=e.map((e=>({range:{startLineNumber:e.colorInfo.range.startLineNumber,startColumn:e.colorInfo.range.startColumn,endLineNumber:e.colorInfo.range.endLineNumber,endColumn:e.colorInfo.range.endColumn},options:Be.qx.EMPTY})));this._editor.changeDecorations((i=>{this._decorationsIds=i.deltaDecorations(this._decorationsIds,t),this._colorDatas=new Map,this._decorationsIds.forEach(((t,i)=>this._colorDatas.set(t,e[i])))}))}updateColorDecorators(e){this._colorDecorationClassRefs.clear();const t=[],i=this._editor.getOption(21);for(let n=0;n<e.length&&t.length<i;n++){const{red:i,green:o,blue:s,alpha:r}=e[n].colorInfo.color,a=new Zn.VS(Math.round(255*i),Math.round(255*o),Math.round(255*s),r),l="rgba(".concat(a.r,", ").concat(a.g,", ").concat(a.b,", ").concat(a.a,")"),d=this._colorDecorationClassRefs.add(this._ruleFactory.createClassNameRef({backgroundColor:l}));t.push({range:{startLineNumber:e[n].colorInfo.range.startLineNumber,startColumn:e[n].colorInfo.range.startColumn,endLineNumber:e[n].colorInfo.range.endLineNumber,endColumn:e[n].colorInfo.range.endColumn},options:{description:"colorDetector",before:{content:ii.B4,inlineClassName:"".concat(d.className," colorpicker-color-decoration"),inlineClassNameAffectsLetterSpacing:!0,attachedData:ms}}})}const o=i<e.length&&i;this._decoratorLimitReporter.update(e.length,o),this._colorDecoratorIds.set(t)}removeAllDecorations(){this._editor.removeDecorations(this._decorationsIds),this._decorationsIds=[],this._colorDecoratorIds.clear(),this._colorDecorationClassRefs.clear()}getColorData(e){const t=this._editor.getModel();if(!t)return null;const i=t.getDecorationsInRange(He.e.fromPositions(e,e)).filter((e=>this._colorDatas.has(e.id)));return 0===i.length?null:this._colorDatas.get(i[0].id)}isColorDecoration(e){return this._colorDecoratorIds.has(e)}};_s.ID="editor.contrib.colorDetector",_s.RECOMPUTE_TIME=1e3,_s=us=gs([ps(1,re.Ui),ps(2,kt.p),ps(3,jn.A)],_s);class fs{constructor(){this._onDidChange=new ui.Q5,this._computed=0,this._limited=!1}update(e,t){e===this._computed&&t===this._limited||(this._computed=e,this._limited=t,this._onDidChange.fire())}}(0,ee._K)(_s.ID,_s,1);class vs{get color(){return this._color}set color(e){this._color.equals(e)||(this._color=e,this._onDidChangeColor.fire(e))}get presentation(){return this.colorPresentations[this.presentationIndex]}get colorPresentations(){return this._colorPresentations}set colorPresentations(e){this._colorPresentations=e,this.presentationIndex>e.length-1&&(this.presentationIndex=0),this._onDidChangePresentation.fire(this.presentation)}constructor(e,t,i){this.presentationIndex=i,this._onColorFlushed=new ui.Q5,this.onColorFlushed=this._onColorFlushed.event,this._onDidChangeColor=new ui.Q5,this.onDidChangeColor=this._onDidChangeColor.event,this._onDidChangePresentation=new ui.Q5,this.onDidChangePresentation=this._onDidChangePresentation.event,this.originalColor=e,this._color=e,this._colorPresentations=t}selectNextColorPresentation(){this.presentationIndex=(this.presentationIndex+1)%this.colorPresentations.length,this.flushColor(),this._onDidChangePresentation.fire(this.presentation)}guessColorPresentation(e,t){let i=-1;for(let o=0;o<this.colorPresentations.length;o++)if(t.toLowerCase()===this.colorPresentations[o].label){i=o;break}if(-1===i){const e=t.split("(")[0].toLowerCase();for(let t=0;t<this.colorPresentations.length;t++)if(this.colorPresentations[t].label.toLowerCase().startsWith(e)){i=t;break}}-1!==i&&i!==this.presentationIndex&&(this.presentationIndex=i,this._onDidChangePresentation.fire(this.presentation))}flushColor(){this._onColorFlushed.fire(this._color)}}var bs=i(39830),Cs=i(13505),Ss=i(74812),ys=i(38261);const ws=X.$;class xs extends Fe.JT{constructor(e,t,i){let o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];super(),this.model=t,this.showingStandaloneColorPicker=o,this._closeButton=null,this._domNode=ws(".colorpicker-header"),X.R3(e,this._domNode),this._pickedColorNode=X.R3(this._domNode,ws(".picked-color")),X.R3(this._pickedColorNode,ws("span.codicon.codicon-color-mode")),this._pickedColorPresentation=X.R3(this._pickedColorNode,document.createElement("span")),this._pickedColorPresentation.classList.add("picked-color-presentation");const n=(0,ne.NC)("clickToToggleColorOptions","Click to toggle color options (rgb/hsl/hex)");this._pickedColorNode.setAttribute("title",n),this._originalColorNode=X.R3(this._domNode,ws(".original-color")),this._originalColorNode.style.backgroundColor=Zn.Il.Format.CSS.format(this.model.originalColor)||"",this.backgroundColor=i.getColorTheme().getColor(ze.yJx)||Zn.Il.white,this._register(i.onDidColorThemeChange((e=>{this.backgroundColor=e.getColor(ze.yJx)||Zn.Il.white}))),this._register(X.nm(this._pickedColorNode,X.tw.CLICK,(()=>this.model.selectNextColorPresentation()))),this._register(X.nm(this._originalColorNode,X.tw.CLICK,(()=>{this.model.color=this.model.originalColor,this.model.flushColor()}))),this._register(t.onDidChangeColor(this.onDidChangeColor,this)),this._register(t.onDidChangePresentation(this.onDidChangePresentation,this)),this._pickedColorNode.style.backgroundColor=Zn.Il.Format.CSS.format(t.color)||"",this._pickedColorNode.classList.toggle("light",t.color.rgba.a<.5?this.backgroundColor.isLighter():t.color.isLighter()),this.onDidChangeColor(this.model.color),this.showingStandaloneColorPicker&&(this._domNode.classList.add("standalone-colorpicker"),this._closeButton=this._register(new Ns(this._domNode)))}get closeButton(){return this._closeButton}get pickedColorNode(){return this._pickedColorNode}get originalColorNode(){return this._originalColorNode}onDidChangeColor(e){this._pickedColorNode.style.backgroundColor=Zn.Il.Format.CSS.format(e)||"",this._pickedColorNode.classList.toggle("light",e.rgba.a<.5?this.backgroundColor.isLighter():e.isLighter()),this.onDidChangePresentation()}onDidChangePresentation(){this._pickedColorPresentation.textContent=this.model.presentation?this.model.presentation.label:""}}class Ns extends Fe.JT{constructor(e){super(),this._onClicked=this._register(new ui.Q5),this.onClicked=this._onClicked.event,this._button=document.createElement("div"),this._button.classList.add("close-button"),X.R3(e,this._button);const t=document.createElement("div");t.classList.add("close-button-inner-div"),X.R3(this._button,t);X.R3(t,ws(".button"+oi.k.asCSSSelector((0,ys.q5)("color-picker-close",$.l.close,(0,ne.NC)("closeIcon","Icon to close the color picker"))))).classList.add("close-icon"),this._register(X.nm(this._button,X.tw.CLICK,(()=>{this._onClicked.fire()})))}}class Ls extends Fe.JT{constructor(e,t,i){let o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];super(),this.model=t,this.pixelRatio=i,this._insertButton=null,this._domNode=ws(".colorpicker-body"),X.R3(e,this._domNode),this._saturationBox=new ks(this._domNode,this.model,this.pixelRatio),this._register(this._saturationBox),this._register(this._saturationBox.onDidChange(this.onDidSaturationValueChange,this)),this._register(this._saturationBox.onColorFlushed(this.flushColor,this)),this._opacityStrip=new Is(this._domNode,this.model,o),this._register(this._opacityStrip),this._register(this._opacityStrip.onDidChange(this.onDidOpacityChange,this)),this._register(this._opacityStrip.onColorFlushed(this.flushColor,this)),this._hueStrip=new Rs(this._domNode,this.model,o),this._register(this._hueStrip),this._register(this._hueStrip.onDidChange(this.onDidHueChange,this)),this._register(this._hueStrip.onColorFlushed(this.flushColor,this)),o&&(this._insertButton=this._register(new Ps(this._domNode)),this._domNode.classList.add("standalone-colorpicker"))}flushColor(){this.model.flushColor()}onDidSaturationValueChange(e){let{s:t,v:i}=e;const o=this.model.color.hsva;this.model.color=new Zn.Il(new Zn.tx(o.h,t,i,o.a))}onDidOpacityChange(e){const t=this.model.color.hsva;this.model.color=new Zn.Il(new Zn.tx(t.h,t.s,t.v,e))}onDidHueChange(e){const t=this.model.color.hsva,i=360*(1-e);this.model.color=new Zn.Il(new Zn.tx(360===i?0:i,t.s,t.v,t.a))}get domNode(){return this._domNode}get saturationBox(){return this._saturationBox}get enterButton(){return this._insertButton}layout(){this._saturationBox.layout(),this._opacityStrip.layout(),this._hueStrip.layout()}}class ks extends Fe.JT{constructor(e,t,i){super(),this.model=t,this.pixelRatio=i,this._onDidChange=new ui.Q5,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new ui.Q5,this.onColorFlushed=this._onColorFlushed.event,this._domNode=ws(".saturation-wrap"),X.R3(e,this._domNode),this._canvas=document.createElement("canvas"),this._canvas.className="saturation-box",X.R3(this._domNode,this._canvas),this.selection=ws(".saturation-selection"),X.R3(this._domNode,this.selection),this.layout(),this._register(X.nm(this._domNode,X.tw.POINTER_DOWN,(e=>this.onPointerDown(e)))),this._register(this.model.onDidChangeColor(this.onDidChangeColor,this)),this.monitor=null}get domNode(){return this._domNode}onPointerDown(e){if(!e.target||!(e.target instanceof Element))return;this.monitor=this._register(new Cs.C);const t=X.i(this._domNode);e.target!==this.selection&&this.onDidChangePosition(e.offsetX,e.offsetY),this.monitor.startMonitoring(e.target,e.pointerId,e.buttons,(e=>this.onDidChangePosition(e.pageX-t.left,e.pageY-t.top)),(()=>null));const i=X.nm(e.target.ownerDocument,X.tw.POINTER_UP,(()=>{this._onColorFlushed.fire(),i.dispose(),this.monitor&&(this.monitor.stopMonitoring(!0),this.monitor=null)}),!0)}onDidChangePosition(e,t){const i=Math.max(0,Math.min(1,e/this.width)),o=Math.max(0,Math.min(1,1-t/this.height));this.paintSelection(i,o),this._onDidChange.fire({s:i,v:o})}layout(){this.width=this._domNode.offsetWidth,this.height=this._domNode.offsetHeight,this._canvas.width=this.width*this.pixelRatio,this._canvas.height=this.height*this.pixelRatio,this.paint();const e=this.model.color.hsva;this.paintSelection(e.s,e.v)}paint(){const e=this.model.color.hsva,t=new Zn.Il(new Zn.tx(e.h,1,1,1)),i=this._canvas.getContext("2d"),o=i.createLinearGradient(0,0,this._canvas.width,0);o.addColorStop(0,"rgba(255, 255, 255, 1)"),o.addColorStop(.5,"rgba(255, 255, 255, 0.5)"),o.addColorStop(1,"rgba(255, 255, 255, 0)");const n=i.createLinearGradient(0,0,0,this._canvas.height);n.addColorStop(0,"rgba(0, 0, 0, 0)"),n.addColorStop(1,"rgba(0, 0, 0, 1)"),i.rect(0,0,this._canvas.width,this._canvas.height),i.fillStyle=Zn.Il.Format.CSS.format(t),i.fill(),i.fillStyle=o,i.fill(),i.fillStyle=n,i.fill()}paintSelection(e,t){this.selection.style.left="".concat(e*this.width,"px"),this.selection.style.top="".concat(this.height-t*this.height,"px")}onDidChangeColor(e){if(this.monitor&&this.monitor.isMonitoring())return;this.paint();const t=e.hsva;this.paintSelection(t.s,t.v)}}class Ds extends Fe.JT{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];super(),this.model=t,this._onDidChange=new ui.Q5,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new ui.Q5,this.onColorFlushed=this._onColorFlushed.event,i?(this.domNode=X.R3(e,ws(".standalone-strip")),this.overlay=X.R3(this.domNode,ws(".standalone-overlay"))):(this.domNode=X.R3(e,ws(".strip")),this.overlay=X.R3(this.domNode,ws(".overlay"))),this.slider=X.R3(this.domNode,ws(".slider")),this.slider.style.top="0px",this._register(X.nm(this.domNode,X.tw.POINTER_DOWN,(e=>this.onPointerDown(e)))),this._register(t.onDidChangeColor(this.onDidChangeColor,this)),this.layout()}layout(){this.height=this.domNode.offsetHeight-this.slider.offsetHeight;const e=this.getValue(this.model.color);this.updateSliderPosition(e)}onDidChangeColor(e){const t=this.getValue(e);this.updateSliderPosition(t)}onPointerDown(e){if(!e.target||!(e.target instanceof Element))return;const t=this._register(new Cs.C),i=X.i(this.domNode);this.domNode.classList.add("grabbing"),e.target!==this.slider&&this.onDidChangeTop(e.offsetY),t.startMonitoring(e.target,e.pointerId,e.buttons,(e=>this.onDidChangeTop(e.pageY-i.top)),(()=>null));const o=X.nm(e.target.ownerDocument,X.tw.POINTER_UP,(()=>{this._onColorFlushed.fire(),o.dispose(),t.stopMonitoring(!0),this.domNode.classList.remove("grabbing")}),!0)}onDidChangeTop(e){const t=Math.max(0,Math.min(1,1-e/this.height));this.updateSliderPosition(t),this._onDidChange.fire(t)}updateSliderPosition(e){this.slider.style.top="".concat((1-e)*this.height,"px")}}class Is extends Ds{constructor(e,t){super(e,t,arguments.length>2&&void 0!==arguments[2]&&arguments[2]),this.domNode.classList.add("opacity-strip"),this.onDidChangeColor(this.model.color)}onDidChangeColor(e){super.onDidChangeColor(e);const{r:t,g:i,b:o}=e.rgba,n=new Zn.Il(new Zn.VS(t,i,o,1)),s=new Zn.Il(new Zn.VS(t,i,o,0));this.overlay.style.background="linear-gradient(to bottom, ".concat(n," 0%, ").concat(s," 100%)")}getValue(e){return e.hsva.a}}class Rs extends Ds{constructor(e,t){super(e,t,arguments.length>2&&void 0!==arguments[2]&&arguments[2]),this.domNode.classList.add("hue-strip")}getValue(e){return 1-e.hsva.h/360}}class Ps extends Fe.JT{constructor(e){super(),this._onClicked=this._register(new ui.Q5),this.onClicked=this._onClicked.event,this._button=X.R3(e,document.createElement("button")),this._button.classList.add("insert-button"),this._button.textContent="Insert",this._register(X.nm(this._button,X.tw.CLICK,(()=>{this._onClicked.fire()})))}get button(){return this._button}}class Ms extends Ss.${constructor(e,t,i,o){let n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];super(),this.model=t,this.pixelRatio=i,this._register(bs.T.getInstance(X.Jj(e)).onDidChange((()=>this.layout())));const s=ws(".colorpicker-widget");e.appendChild(s),this.header=this._register(new xs(s,this.model,o,n)),this.body=this._register(new Ls(s,this.model,this.pixelRatio,n))}layout(){this.body.layout()}}var Ts=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Es=function(e,t){return function(i,o){t(i,o,e)}};class As{constructor(e,t,i,o){this.owner=e,this.range=t,this.model=i,this.provider=o,this.forceShowAtRange=!0}isValidForHoverAnchor(e){return 1===e.type&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}let Os=class{constructor(e,t){this._editor=e,this._themeService=t,this.hoverOrdinal=2}computeSync(e,t){return[]}computeAsync(e,t,i){return Oe.Aq.fromPromise(this._computeAsync(e,t,i))}async _computeAsync(e,t,i){if(!this._editor.hasModel())return[];const o=_s.get(this._editor);if(!o)return[];for(const n of t){if(!o.isColorDecoration(n))continue;const e=o.getColorData(n.range.getStartPosition());if(e){return[await Hs(this,this._editor.getModel(),e.colorInfo,e.provider)]}}return[]}renderHoverParts(e,t){return Vs(this,this._editor,this._themeService,t,e)}};Os=Ts([Es(1,Ue.XE)],Os);class Fs{constructor(e,t,i,o){this.owner=e,this.range=t,this.model=i,this.provider=o}}let Ws=class{constructor(e,t){this._editor=e,this._themeService=t,this._color=null}async createColorHover(e,t,i){if(!this._editor.hasModel())return null;if(!_s.get(this._editor))return null;const o=await ss(i,this._editor.getModel(),Yi.T.None);let n=null,s=null;for(const d of o){const t=d.colorInfo;He.e.containsRange(t.range,e.range)&&(n=t,s=d.provider)}const r=null!==n&&void 0!==n?n:e,a=null!==s&&void 0!==s?s:t,l=!!n;return{colorHover:await Hs(this,this._editor.getModel(),r,a),foundInEditor:l}}async updateEditorModel(e){if(!this._editor.hasModel())return;const t=e.model;let i=new He.e(e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn);this._color&&(await zs(this._editor.getModel(),t,this._color,i,e),i=Bs(this._editor,i,t))}renderHoverParts(e,t){return Vs(this,this._editor,this._themeService,t,e)}set color(e){this._color=e}get color(){return this._color}};async function Hs(e,t,i,o){const n=t.getValueInRange(i.range),{red:s,green:r,blue:a,alpha:l}=i.color,d=new Zn.VS(Math.round(255*s),Math.round(255*r),Math.round(255*a),l),c=new Zn.Il(d),h=await rs(t,i,o,Yi.T.None),u=new vs(c,[],0);return u.colorPresentations=h||[],u.guessColorPresentation(c,n),e instanceof Os?new As(e,He.e.lift(i.range),u,o):new Fs(e,He.e.lift(i.range),u,o)}function Vs(e,t,i,o,n){if(0===o.length||!t.hasModel())return Fe.JT.None;if(n.setMinimumDimensions){const e=t.getOption(67)+8;n.setMinimumDimensions(new X.Ro(302,e))}const s=new Fe.SL,r=o[0],a=t.getModel(),l=r.model,d=s.add(new Ms(n.fragment,l,t.getOption(143),i,e instanceof Ws));n.setColorPicker(d);let c=!1,h=new He.e(r.range.startLineNumber,r.range.startColumn,r.range.endLineNumber,r.range.endColumn);if(e instanceof Ws){const t=o[0].model.color;e.color=t,zs(a,l,t,h,r),s.add(l.onColorFlushed((t=>{e.color=t})))}else s.add(l.onColorFlushed((async e=>{await zs(a,l,e,h,r),c=!0,h=Bs(t,h,l)})));return s.add(l.onDidChangeColor((e=>{zs(a,l,e,h,r)}))),s.add(t.onDidChangeModelContent((e=>{c?c=!1:(n.hide(),t.focus())}))),s}function Bs(e,t,i){var o,n;const s=[],r=null!==(o=i.presentation.textEdit)&&void 0!==o?o:{range:t,text:i.presentation.label,forceMoveMarkers:!1};s.push(r),i.presentation.additionalTextEdits&&s.push(...i.presentation.additionalTextEdits);const a=He.e.lift(r.range),l=e.getModel()._setTrackedRange(null,a,3);return e.executeEdits("colorpicker",s),e.pushUndoStop(),null!==(n=e.getModel()._getTrackedRange(l))&&void 0!==n?n:a}async function zs(e,t,i,o,n){const s=await rs(e,{range:o,color:{red:i.rgba.r/255,green:i.rgba.g/255,blue:i.rgba.b/255,alpha:i.rgba.a}},n.provider,Yi.T.None);t.colorPresentations=s||[]}Ws=Ts([Es(1,Ue.XE)],Ws);var Us=i(69311),Ks=i(93984);function js(e,t){return!!e[t]}class qs{constructor(e,t){this.target=e.target,this.isLeftClick=e.event.leftButton,this.isMiddleClick=e.event.middleButton,this.isRightClick=e.event.rightButton,this.hasTriggerModifier=js(e.event,t.triggerModifier),this.hasSideBySideModifier=js(e.event,t.triggerSideBySideModifier),this.isNoneOrSingleMouseDown=e.event.detail<=1}}class Gs{constructor(e,t){this.keyCodeIsTriggerKey=e.keyCode===t.triggerKey,this.keyCodeIsSideBySideKey=e.keyCode===t.triggerSideBySideKey,this.hasTriggerModifier=js(e,t.triggerModifier)}}class Qs{constructor(e,t,i,o){this.triggerKey=e,this.triggerModifier=t,this.triggerSideBySideKey=i,this.triggerSideBySideModifier=o}equals(e){return this.triggerKey===e.triggerKey&&this.triggerModifier===e.triggerModifier&&this.triggerSideBySideKey===e.triggerSideBySideKey&&this.triggerSideBySideModifier===e.triggerSideBySideModifier}}function Zs(e){return"altKey"===e?it.dz?new Qs(57,"metaKey",6,"altKey"):new Qs(5,"ctrlKey",6,"altKey"):it.dz?new Qs(6,"altKey",57,"metaKey"):new Qs(6,"altKey",5,"ctrlKey")}class Ys extends Fe.JT{constructor(e,t){var i;super(),this._onMouseMoveOrRelevantKeyDown=this._register(new ui.Q5),this.onMouseMoveOrRelevantKeyDown=this._onMouseMoveOrRelevantKeyDown.event,this._onExecute=this._register(new ui.Q5),this.onExecute=this._onExecute.event,this._onCancel=this._register(new ui.Q5),this.onCancel=this._onCancel.event,this._editor=e,this._extractLineNumberFromMouseEvent=null!==(i=null===t||void 0===t?void 0:t.extractLineNumberFromMouseEvent)&&void 0!==i?i:e=>e.target.position?e.target.position.lineNumber:0,this._opts=Zs(this._editor.getOption(78)),this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._register(this._editor.onDidChangeConfiguration((e=>{if(e.hasChanged(78)){const e=Zs(this._editor.getOption(78));if(this._opts.equals(e))return;this._opts=e,this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._onCancel.fire()}}))),this._register(this._editor.onMouseMove((e=>this._onEditorMouseMove(new qs(e,this._opts))))),this._register(this._editor.onMouseDown((e=>this._onEditorMouseDown(new qs(e,this._opts))))),this._register(this._editor.onMouseUp((e=>this._onEditorMouseUp(new qs(e,this._opts))))),this._register(this._editor.onKeyDown((e=>this._onEditorKeyDown(new Gs(e,this._opts))))),this._register(this._editor.onKeyUp((e=>this._onEditorKeyUp(new Gs(e,this._opts))))),this._register(this._editor.onMouseDrag((()=>this._resetHandler()))),this._register(this._editor.onDidChangeCursorSelection((e=>this._onDidChangeCursorSelection(e)))),this._register(this._editor.onDidChangeModel((e=>this._resetHandler()))),this._register(this._editor.onDidChangeModelContent((()=>this._resetHandler()))),this._register(this._editor.onDidScrollChange((e=>{(e.scrollTopChanged||e.scrollLeftChanged)&&this._resetHandler()})))}_onDidChangeCursorSelection(e){e.selection&&e.selection.startColumn!==e.selection.endColumn&&this._resetHandler()}_onEditorMouseMove(e){this._lastMouseMoveEvent=e,this._onMouseMoveOrRelevantKeyDown.fire([e,null])}_onEditorMouseDown(e){this._hasTriggerKeyOnMouseDown=e.hasTriggerModifier,this._lineNumberOnMouseDown=this._extractLineNumberFromMouseEvent(e)}_onEditorMouseUp(e){const t=this._extractLineNumberFromMouseEvent(e);this._hasTriggerKeyOnMouseDown&&this._lineNumberOnMouseDown&&this._lineNumberOnMouseDown===t&&this._onExecute.fire(e)}_onEditorKeyDown(e){this._lastMouseMoveEvent&&(e.keyCodeIsTriggerKey||e.keyCodeIsSideBySideKey&&e.hasTriggerModifier)?this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent,e]):e.hasTriggerModifier&&this._onCancel.fire()}_onEditorKeyUp(e){e.keyCodeIsTriggerKey&&this._onCancel.fire()}_resetHandler(){this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._onCancel.fire()}}var Js=i(10451),$s=i(46385),Xs=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},er=function(e,t){return function(i,o){t(i,o,e)}};let tr=class extends J.Gm{constructor(e,t,i,o,n,s,r,a,l,d,c,h,u){super(e,{...o.getRawOptions(),overflowWidgetsDomNode:o.getOverflowWidgetsDomNode()},i,n,s,r,a,l,d,c,h,u),this._parentEditor=o,this._overwriteOptions=t,super.updateOptions(this._overwriteOptions),this._register(o.onDidChangeConfiguration((e=>this._onParentConfigurationChanged(e))))}getParentEditor(){return this._parentEditor}_onParentConfigurationChanged(e){super.updateOptions(this._parentEditor.getRawOptions()),super.updateOptions(this._overwriteOptions)}updateOptions(e){Js.jB(this._overwriteOptions,e,!0),super.updateOptions(this._overwriteOptions)}};tr=Xs([er(4,ni.TG),er(5,te.$),er(6,ye.H),er(7,ae.i6),er(8,Ue.XE),er(9,Xi.lT),er(10,$s.F),er(11,Xn.c_),er(12,kt.p)],tr);var ir=i(38059),or=i(58276);const nr=new Zn.Il(new Zn.VS(0,122,204)),sr={showArrow:!0,showFrame:!0,className:"",frameColor:nr,arrowColor:nr,keepEditorSelection:!1};class rr{constructor(e,t,i,o,n,s,r,a){this.id="",this.domNode=e,this.afterLineNumber=t,this.afterColumn=i,this.heightInLines=o,this.showInHiddenAreas=r,this.ordinal=a,this._onDomNodeTop=n,this._onComputedHeight=s}onDomNodeTop(e){this._onDomNodeTop(e)}onComputedHeight(e){this._onComputedHeight(e)}}class ar{constructor(e,t){this._id=e,this._domNode=t}getId(){return this._id}getDomNode(){return this._domNode}getPosition(){return null}}class lr{constructor(e){this._editor=e,this._ruleName=lr._IdGenerator.nextId(),this._decorations=this._editor.createDecorationsCollection(),this._color=null,this._height=-1}dispose(){this.hide(),X.uN(this._ruleName)}set color(e){this._color!==e&&(this._color=e,this._updateStyle())}set height(e){this._height!==e&&(this._height=e,this._updateStyle())}_updateStyle(){X.uN(this._ruleName),X.fk(".monaco-editor ".concat(this._ruleName),"border-style: solid; border-color: transparent; border-bottom-color: ".concat(this._color,"; border-width: ").concat(this._height,"px; bottom: -").concat(this._height,"px !important; margin-left: -").concat(this._height,"px; "))}show(e){1===e.column&&(e={lineNumber:e.lineNumber,column:2}),this._decorations.set([{range:He.e.fromPositions(e),options:{description:"zone-widget-arrow",className:this._ruleName,stickiness:1}}])}hide(){this._decorations.clear()}}lr._IdGenerator=new or.R(".arrow-decoration-");class dr{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._arrow=null,this._overlayWidget=null,this._resizeSash=null,this._viewZone=null,this._disposables=new Fe.SL,this.container=null,this._isShowing=!1,this.editor=e,this._positionMarkerId=this.editor.createDecorationsCollection(),this.options=Js.I8(t),Js.jB(this.options,sr,!1),this.domNode=document.createElement("div"),this.options.isAccessible||(this.domNode.setAttribute("aria-hidden","true"),this.domNode.setAttribute("role","presentation")),this._disposables.add(this.editor.onDidLayoutChange((e=>{const t=this._getWidth(e);this.domNode.style.width=t+"px",this.domNode.style.left=this._getLeft(e)+"px",this._onWidth(t)})))}dispose(){this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._viewZone&&this.editor.changeViewZones((e=>{this._viewZone&&e.removeZone(this._viewZone.id),this._viewZone=null})),this._positionMarkerId.clear(),this._disposables.dispose()}create(){this.domNode.classList.add("zone-widget"),this.options.className&&this.domNode.classList.add(this.options.className),this.container=document.createElement("div"),this.container.classList.add("zone-widget-container"),this.domNode.appendChild(this.container),this.options.showArrow&&(this._arrow=new lr(this.editor),this._disposables.add(this._arrow)),this._fillContainer(this.container),this._initSash(),this._applyStyles()}style(e){e.frameColor&&(this.options.frameColor=e.frameColor),e.arrowColor&&(this.options.arrowColor=e.arrowColor),this._applyStyles()}_applyStyles(){if(this.container&&this.options.frameColor){const e=this.options.frameColor.toString();this.container.style.borderTopColor=e,this.container.style.borderBottomColor=e}if(this._arrow&&this.options.arrowColor){const e=this.options.arrowColor.toString();this._arrow.color=e}}_getWidth(e){return e.width-e.minimap.minimapWidth-e.verticalScrollbarWidth}_getLeft(e){return e.minimap.minimapWidth>0&&0===e.minimap.minimapLeft?e.minimap.minimapWidth:0}_onViewZoneTop(e){this.domNode.style.top=e+"px"}_onViewZoneHeight(e){var t;if(this.domNode.style.height="".concat(e,"px"),this.container){const t=e-this._decoratingElementsHeight();this.container.style.height="".concat(t,"px");const i=this.editor.getLayoutInfo();this._doLayout(t,this._getWidth(i))}null===(t=this._resizeSash)||void 0===t||t.layout()}get position(){const e=this._positionMarkerId.getRange(0);if(e)return e.getStartPosition()}show(e,t){const i=He.e.isIRange(e)?He.e.lift(e):He.e.fromPositions(e);this._isShowing=!0,this._showImpl(i,t),this._isShowing=!1,this._positionMarkerId.set([{range:i,options:Be.qx.EMPTY}])}hide(){var e;this._viewZone&&(this.editor.changeViewZones((e=>{this._viewZone&&e.removeZone(this._viewZone.id)})),this._viewZone=null),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),null===(e=this._arrow)||void 0===e||e.hide(),this._positionMarkerId.clear()}_decoratingElementsHeight(){const e=this.editor.getOption(67);let t=0;if(this.options.showArrow){t+=2*Math.round(e/3)}if(this.options.showFrame){t+=2*Math.round(e/9)}return t}_showImpl(e,t){const i=e.getStartPosition(),o=this.editor.getLayoutInfo(),n=this._getWidth(o);this.domNode.style.width="".concat(n,"px"),this.domNode.style.left=this._getLeft(o)+"px";const s=document.createElement("div");s.style.overflow="hidden";const r=this.editor.getOption(67);if(!this.options.allowUnlimitedHeight){const e=Math.max(12,this.editor.getLayoutInfo().height/r*.8);t=Math.min(t,e)}let a=0,l=0;if(this._arrow&&this.options.showArrow&&(a=Math.round(r/3),this._arrow.height=a,this._arrow.show(i)),this.options.showFrame&&(l=Math.round(r/9)),this.editor.changeViewZones((e=>{this._viewZone&&e.removeZone(this._viewZone.id),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this.domNode.style.top="-1000px",this._viewZone=new rr(s,i.lineNumber,i.column,t,(e=>this._onViewZoneTop(e)),(e=>this._onViewZoneHeight(e)),this.options.showInHiddenAreas,this.options.ordinal),this._viewZone.id=e.addZone(this._viewZone),this._overlayWidget=new ar("vs.editor.contrib.zoneWidget"+this._viewZone.id,this.domNode),this.editor.addOverlayWidget(this._overlayWidget)})),this.container&&this.options.showFrame){const e=this.options.frameWidth?this.options.frameWidth:l;this.container.style.borderTopWidth=e+"px",this.container.style.borderBottomWidth=e+"px"}const d=t*r-this._decoratingElementsHeight();this.container&&(this.container.style.top=a+"px",this.container.style.height=d+"px",this.container.style.overflow="hidden"),this._doLayout(d,n),this.options.keepEditorSelection||this.editor.setSelection(e);const c=this.editor.getModel();if(c){const t=c.validateRange(new He.e(e.startLineNumber,1,e.endLineNumber+1,1));this.revealRange(t,t.startLineNumber===c.getLineCount())}}revealRange(e,t){t?this.editor.revealLineNearTop(e.endLineNumber,0):this.editor.revealRange(e,0)}setCssClass(e,t){this.container&&(t&&this.container.classList.remove(t),this.container.classList.add(e))}_onWidth(e){}_doLayout(e,t){}_relayout(e){this._viewZone&&this._viewZone.heightInLines!==e&&this.editor.changeViewZones((t=>{this._viewZone&&(this._viewZone.heightInLines=e,t.layoutZone(this._viewZone.id))}))}_initSash(){if(this._resizeSash)return;let e;this._resizeSash=this._disposables.add(new ir.g(this.domNode,this,{orientation:1})),this.options.isResizeable||(this._resizeSash.state=0),this._disposables.add(this._resizeSash.onDidStart((t=>{this._viewZone&&(e={startY:t.startY,heightInLines:this._viewZone.heightInLines})}))),this._disposables.add(this._resizeSash.onDidEnd((()=>{e=void 0}))),this._disposables.add(this._resizeSash.onDidChange((t=>{if(e){const i=(t.currentY-e.startY)/this.editor.getOption(67),o=i<0?Math.ceil(i):Math.floor(i),n=e.heightInLines+o;n>5&&n<35&&this._relayout(n)}})))}getHorizontalSashLeft(){return 0}getHorizontalSashTop(){return(null===this.domNode.style.height?0:parseInt(this.domNode.style.height))-this._decoratingElementsHeight()/2}getHorizontalSashWidth(){const e=this.editor.getLayoutInfo();return e.width-e.minimap.minimapWidth}}var cr=i(69833),hr=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ur=function(e,t){return function(i,o){t(i,o,e)}};const gr=(0,ni.yh)("IPeekViewService");var pr;(0,Zo.z)(gr,class{constructor(){this._widgets=new Map}addExclusiveWidget(e,t){const i=this._widgets.get(e);i&&(i.listener.dispose(),i.widget.dispose());this._widgets.set(e,{widget:t,listener:t.onDidClose((()=>{const i=this._widgets.get(e);i&&i.widget===t&&(i.listener.dispose(),this._widgets.delete(e))}))})}},1),function(e){e.inPeekEditor=new ae.uy("inReferenceSearchEditor",!0,ne.NC("inReferenceSearchEditor","Whether the current code editor is embedded inside peek")),e.notInPeekEditor=e.inPeekEditor.toNegated()}(pr||(pr={}));let mr=class{constructor(e,t){e instanceof tr&&pr.inPeekEditor.bindTo(t)}dispose(){}};mr.ID="editor.contrib.referenceController",mr=hr([ur(1,ae.i6)],mr),(0,ee._K)(mr.ID,mr,0);const _r={headerBackgroundColor:Zn.Il.white,primaryHeadingColor:Zn.Il.fromHex("#333333"),secondaryHeadingColor:Zn.Il.fromHex("#6c6c6cb3")};let fr=class extends dr{constructor(e,t,i){super(e,t),this.instantiationService=i,this._onDidClose=new ui.Q5,this.onDidClose=this._onDidClose.event,Js.jB(this.options,_r,!1)}dispose(){this.disposed||(this.disposed=!0,super.dispose(),this._onDidClose.fire(this))}style(e){const t=this.options;e.headerBackgroundColor&&(t.headerBackgroundColor=e.headerBackgroundColor),e.primaryHeadingColor&&(t.primaryHeadingColor=e.primaryHeadingColor),e.secondaryHeadingColor&&(t.secondaryHeadingColor=e.secondaryHeadingColor),super.style(e)}_applyStyles(){super._applyStyles();const e=this.options;this._headElement&&e.headerBackgroundColor&&(this._headElement.style.backgroundColor=e.headerBackgroundColor.toString()),this._primaryHeading&&e.primaryHeadingColor&&(this._primaryHeading.style.color=e.primaryHeadingColor.toString()),this._secondaryHeading&&e.secondaryHeadingColor&&(this._secondaryHeading.style.color=e.secondaryHeadingColor.toString()),this._bodyElement&&e.frameColor&&(this._bodyElement.style.borderColor=e.frameColor.toString())}_fillContainer(e){this.setCssClass("peekview-widget"),this._headElement=X.$(".head"),this._bodyElement=X.$(".body"),this._fillHead(this._headElement),this._fillBody(this._bodyElement),e.appendChild(this._headElement),e.appendChild(this._bodyElement)}_fillHead(e,t){this._titleElement=X.$(".peekview-title"),this.options.supportOnTitleClick&&(this._titleElement.classList.add("clickable"),X.mu(this._titleElement,"click",(e=>this._onTitleClick(e)))),X.R3(this._headElement,this._titleElement),this._fillTitleIcon(this._titleElement),this._primaryHeading=X.$("span.filename"),this._secondaryHeading=X.$("span.dirname"),this._metaHeading=X.$("span.meta"),X.R3(this._titleElement,this._primaryHeading,this._secondaryHeading,this._metaHeading);const i=X.$(".peekview-actions");X.R3(this._headElement,i);const o=this._getActionBarOptions();this._actionbarWidget=new Eo.o(i,o),this._disposables.add(this._actionbarWidget),t||this._actionbarWidget.push(new Ni.aU("peekview.close",ne.NC("label.close","Close"),oi.k.asClassName($.l.close),!0,(()=>(this.dispose(),Promise.resolve()))),{label:!1,icon:!0})}_fillTitleIcon(e){}_getActionBarOptions(){return{actionViewItemProvider:cr.Id.bind(void 0,this.instantiationService),orientation:0}}_onTitleClick(e){}setTitle(e,t){this._primaryHeading&&this._secondaryHeading&&(this._primaryHeading.innerText=e,this._primaryHeading.setAttribute("title",e),t?this._secondaryHeading.innerText=t:X.PO(this._secondaryHeading))}setMetaTitle(e){this._metaHeading&&(e?(this._metaHeading.innerText=e,X.$Z(this._metaHeading)):X.Cp(this._metaHeading))}_doLayout(e,t){if(!this._isShowing&&e<0)return void this.dispose();const i=Math.ceil(1.2*this.editor.getOption(67)),o=Math.round(e-(i+2));this._doLayoutHead(i,t),this._doLayoutBody(o,t)}_doLayoutHead(e,t){this._headElement&&(this._headElement.style.height="".concat(e,"px"),this._headElement.style.lineHeight=this._headElement.style.height)}_doLayoutBody(e,t){this._bodyElement&&(this._bodyElement.style.height="".concat(e,"px"))}};fr=hr([ur(2,ni.TG)],fr);const vr=(0,ze.P6G)("peekViewTitle.background",{dark:"#252526",light:"#F3F3F3",hcDark:Zn.Il.black,hcLight:Zn.Il.white},ne.NC("peekViewTitleBackground","Background color of the peek view title area.")),br=(0,ze.P6G)("peekViewTitleLabel.foreground",{dark:Zn.Il.white,light:Zn.Il.black,hcDark:Zn.Il.white,hcLight:ze.NOs},ne.NC("peekViewTitleForeground","Color of the peek view title.")),Cr=(0,ze.P6G)("peekViewTitleDescription.foreground",{dark:"#ccccccb3",light:"#616161",hcDark:"#FFFFFF99",hcLight:"#292929"},ne.NC("peekViewTitleInfoForeground","Color of the peek view title info.")),Sr=(0,ze.P6G)("peekView.border",{dark:ze.c63,light:ze.c63,hcDark:ze.lRK,hcLight:ze.lRK},ne.NC("peekViewBorder","Color of the peek view borders and arrow.")),yr=(0,ze.P6G)("peekViewResult.background",{dark:"#252526",light:"#F3F3F3",hcDark:Zn.Il.black,hcLight:Zn.Il.white},ne.NC("peekViewResultsBackground","Background color of the peek view result list.")),wr=((0,ze.P6G)("peekViewResult.lineForeground",{dark:"#bbbbbb",light:"#646465",hcDark:Zn.Il.white,hcLight:ze.NOs},ne.NC("peekViewResultsMatchForeground","Foreground color for line nodes in the peek view result list.")),(0,ze.P6G)("peekViewResult.fileForeground",{dark:Zn.Il.white,light:"#1E1E1E",hcDark:Zn.Il.white,hcLight:ze.NOs},ne.NC("peekViewResultsFileForeground","Foreground color for file nodes in the peek view result list.")),(0,ze.P6G)("peekViewResult.selectionBackground",{dark:"#3399ff33",light:"#3399ff33",hcDark:null,hcLight:null},ne.NC("peekViewResultsSelectionBackground","Background color of the selected entry in the peek view result list.")),(0,ze.P6G)("peekViewResult.selectionForeground",{dark:Zn.Il.white,light:"#6C6C6C",hcDark:Zn.Il.white,hcLight:ze.NOs},ne.NC("peekViewResultsSelectionForeground","Foreground color of the selected entry in the peek view result list.")),(0,ze.P6G)("peekViewEditor.background",{dark:"#001F33",light:"#F2F8FC",hcDark:Zn.Il.black,hcLight:Zn.Il.white},ne.NC("peekViewEditorBackground","Background color of the peek view editor.")));(0,ze.P6G)("peekViewEditorGutter.background",{dark:wr,light:wr,hcDark:wr,hcLight:wr},ne.NC("peekViewEditorGutterBackground","Background color of the gutter in the peek view editor.")),(0,ze.P6G)("peekViewEditorStickyScroll.background",{dark:wr,light:wr,hcDark:wr,hcLight:wr},ne.NC("peekViewEditorStickScrollBackground","Background color of sticky scroll in the peek view editor.")),(0,ze.P6G)("peekViewResult.matchHighlightBackground",{dark:"#ea5c004d",light:"#ea5c004d",hcDark:null,hcLight:null},ne.NC("peekViewResultsMatchHighlight","Match highlight color in the peek view result list.")),(0,ze.P6G)("peekViewEditor.matchHighlightBackground",{dark:"#ff8f0099",light:"#f5d802de",hcDark:null,hcLight:null},ne.NC("peekViewEditorMatchHighlight","Match highlight color in the peek view editor.")),(0,ze.P6G)("peekViewEditor.matchHighlightBorder",{dark:null,light:null,hcDark:ze.xL1,hcLight:ze.xL1},ne.NC("peekViewEditorMatchHighlightBorder","Match highlight border in the peek view editor."));var xr=i(20411),Nr=i(86728),Lr=i(51927);class kr{constructor(e,t,i,o){this.isProviderFirst=e,this.parent=t,this.link=i,this._rangeCallback=o,this.id=or.a.nextId()}get uri(){return this.link.uri}get range(){var e,t;return null!==(t=null!==(e=this._range)&&void 0!==e?e:this.link.targetSelectionRange)&&void 0!==t?t:this.link.range}set range(e){this._range=e,this._rangeCallback(this)}get ariaMessage(){var e;const t=null===(e=this.parent.getPreview(this))||void 0===e?void 0:e.preview(this.range);return t?(0,ne.NC)({key:"aria.oneReference.preview",comment:["Placeholders are: 0: filename, 1:line number, 2: column number, 3: preview snippet of source code"]},"{0} in {1} on line {2} at column {3}",t.value,(0,It.EZ)(this.uri),this.range.startLineNumber,this.range.startColumn):(0,ne.NC)("aria.oneReference","in {0} on line {1} at column {2}",(0,It.EZ)(this.uri),this.range.startLineNumber,this.range.startColumn)}}class Dr{constructor(e){this._modelReference=e}dispose(){this._modelReference.dispose()}preview(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;const i=this._modelReference.object.textEditorModel;if(!i)return;const{startLineNumber:o,startColumn:n,endLineNumber:s,endColumn:r}=e,a=i.getWordUntilPosition({lineNumber:o,column:n-t}),l=new He.e(o,a.startColumn,o,n),d=new He.e(s,r,s,1073741824),c=i.getValueInRange(l).replace(/^\s+/,""),h=i.getValueInRange(e);return{value:c+h+i.getValueInRange(d).replace(/\s+$/,""),highlight:{start:c.length,end:c.length+h.length}}}}class Ir{constructor(e,t){this.parent=e,this.uri=t,this.children=[],this._previews=new Pn.Y9}dispose(){(0,Fe.B9)(this._previews.values()),this._previews.clear()}getPreview(e){return this._previews.get(e.uri)}get ariaMessage(){const e=this.children.length;return 1===e?(0,ne.NC)("aria.fileReferences.1","1 symbol in {0}, full path {1}",(0,It.EZ)(this.uri),this.uri.fsPath):(0,ne.NC)("aria.fileReferences.N","{0} symbols in {1}, full path {2}",e,(0,It.EZ)(this.uri),this.uri.fsPath)}async resolve(e){if(0!==this._previews.size)return this;for(const i of this.children)if(!this._previews.has(i.uri))try{const t=await e.createModelReference(i.uri);this._previews.set(i.uri,new Dr(t))}catch(t){(0,Ji.dL)(t)}return this}}class Rr{constructor(e,t){this.groups=[],this.references=[],this._onDidChangeReferenceRange=new ui.Q5,this.onDidChangeReferenceRange=this._onDidChangeReferenceRange.event,this._links=e,this._title=t;const[i]=e;let o;e.sort(Rr._compareReferences);for(const n of e)if(o&&It.SF.isEqual(o.uri,n.uri,!0)||(o=new Ir(this,n.uri),this.groups.push(o)),0===o.children.length||0!==Rr._compareReferences(n,o.children[o.children.length-1])){const e=new kr(i===n,o,n,(e=>this._onDidChangeReferenceRange.fire(e)));this.references.push(e),o.children.push(e)}}dispose(){(0,Fe.B9)(this.groups),this._onDidChangeReferenceRange.dispose(),this.groups.length=0}clone(){return new Rr(this._links,this._title)}get title(){return this._title}get isEmpty(){return 0===this.groups.length}get ariaMessage(){return this.isEmpty?(0,ne.NC)("aria.result.0","No results found"):1===this.references.length?(0,ne.NC)("aria.result.1","Found 1 symbol in {0}",this.references[0].uri.fsPath):1===this.groups.length?(0,ne.NC)("aria.result.n1","Found {0} symbols in {1}",this.references.length,this.groups[0].uri.fsPath):(0,ne.NC)("aria.result.nm","Found {0} symbols in {1} files",this.references.length,this.groups.length)}nextOrPreviousReference(e,t){const{parent:i}=e;let o=i.children.indexOf(e);const n=i.children.length,s=i.parent.groups.length;return 1===s||t&&o+1<n||!t&&o>0?(o=t?(o+1)%n:(o+n-1)%n,i.children[o]):(o=i.parent.groups.indexOf(i),t?(o=(o+1)%s,i.parent.groups[o].children[0]):(o=(o+s-1)%s,i.parent.groups[o].children[i.parent.groups[o].children.length-1]))}nearestReference(e,t){const i=this.references.map(((i,o)=>({idx:o,prefixLen:ii.Mh(i.uri.toString(),e.toString()),offsetDist:100*Math.abs(i.range.startLineNumber-t.lineNumber)+Math.abs(i.range.startColumn-t.column)}))).sort(((e,t)=>e.prefixLen>t.prefixLen?-1:e.prefixLen<t.prefixLen?1:e.offsetDist<t.offsetDist?-1:e.offsetDist>t.offsetDist?1:0))[0];if(i)return this.references[i.idx]}referenceAt(e,t){for(const i of this.references)if(i.uri.toString()===e.toString()&&He.e.containsPosition(i.range,t))return i}firstReference(){for(const e of this.references)if(e.isProviderFirst)return e;return this.references[0]}static _compareReferences(e,t){return It.SF.compare(e.uri,t.uri)||He.e.compareRangesUsingStarts(e.range,t.range)}}var Pr,Mr=i(45660),Tr=i(68150),Er=i(87699),Ar=i(81878),Or=i(25938),Fr=i(66835),Wr=i(82611),Hr=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Vr=function(e,t){return function(i,o){t(i,o,e)}};let Br=class{constructor(e){this._resolverService=e}hasChildren(e){return e instanceof Rr||e instanceof Ir}getChildren(e){if(e instanceof Rr)return e.groups;if(e instanceof Ir)return e.resolve(this._resolverService).then((e=>e.children));throw new Error("bad tree")}};Br=Hr([Vr(0,Ks.S)],Br);class zr{getHeight(){return 23}getTemplateId(e){return e instanceof Ir?qr.id:Qr.id}}let Ur=class{constructor(e){this._keybindingService=e}getKeyboardNavigationLabel(e){var t;if(e instanceof kr){const i=null===(t=e.parent.getPreview(e))||void 0===t?void 0:t.preview(e.range);if(i)return i.value}return(0,It.EZ)(e.uri)}};Ur=Hr([Vr(0,ki.d)],Ur);class Kr{getId(e){return e instanceof kr?e.id:e.uri}}let jr=class extends Fe.JT{constructor(e,t){super(),this._labelService=t;const i=document.createElement("div");i.classList.add("reference-file"),this.file=this._register(new Or.g(i,{supportHighlights:!0})),this.badge=new Er.Z(X.R3(i,X.$(".count")),{},Fo.ku),e.appendChild(i)}set(e,t){const i=(0,It.XX)(e.uri);this.file.setLabel(this._labelService.getUriBasenameLabel(e.uri),this._labelService.getUriLabel(i,{relative:!0}),{title:this._labelService.getUriLabel(e.uri),matches:t});const o=e.children.length;this.badge.setCount(o),o>1?this.badge.setTitleFormat((0,ne.NC)("referencesCount","{0} references",o)):this.badge.setTitleFormat((0,ne.NC)("referenceCount","{0} reference",o))}};jr=Hr([Vr(1,Wr.e)],jr);let qr=Pr=class{constructor(e){this._instantiationService=e,this.templateId=Pr.id}renderTemplate(e){return this._instantiationService.createInstance(jr,e)}renderElement(e,t,i){i.set(e.element,(0,Fr.mB)(e.filterData))}disposeTemplate(e){e.dispose()}};qr.id="FileReferencesRenderer",qr=Pr=Hr([Vr(0,ni.TG)],qr);class Gr extends Fe.JT{constructor(e){super(),this.label=this._register(new Ar.q(e))}set(e,t){var i;const o=null===(i=e.parent.getPreview(e))||void 0===i?void 0:i.preview(e.range);if(o&&o.value){const{value:e,highlight:i}=o;t&&!Fr.CL.isDefault(t)?(this.label.element.classList.toggle("referenceMatch",!1),this.label.set(e,(0,Fr.mB)(t))):(this.label.element.classList.toggle("referenceMatch",!0),this.label.set(e,[i]))}else this.label.set("".concat((0,It.EZ)(e.uri),":").concat(e.range.startLineNumber+1,":").concat(e.range.startColumn+1))}}class Qr{constructor(){this.templateId=Qr.id}renderTemplate(e){return new Gr(e)}renderElement(e,t,i){i.set(e.element,e.filterData)}disposeTemplate(e){e.dispose()}}Qr.id="OneReferenceRenderer";class Zr{getWidgetAriaLabel(){return(0,ne.NC)("treeAriaLabel","References")}getAriaLabel(e){return e.ariaMessage}}var Yr=i(96484),Jr=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},$r=function(e,t){return function(i,o){t(i,o,e)}};class Xr{constructor(e,t){this._editor=e,this._model=t,this._decorations=new Map,this._decorationIgnoreSet=new Set,this._callOnDispose=new Fe.SL,this._callOnModelChange=new Fe.SL,this._callOnDispose.add(this._editor.onDidChangeModel((()=>this._onModelChanged()))),this._onModelChanged()}dispose(){this._callOnModelChange.dispose(),this._callOnDispose.dispose(),this.removeDecorations()}_onModelChanged(){this._callOnModelChange.clear();const e=this._editor.getModel();if(e)for(const t of this._model.references)if(t.uri.toString()===e.uri.toString())return void this._addDecorations(t.parent)}_addDecorations(e){if(!this._editor.hasModel())return;this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations((()=>this._onDecorationChanged())));const t=[],i=[];for(let o=0,n=e.children.length;o<n;o++){const n=e.children[o];this._decorationIgnoreSet.has(n.id)||n.uri.toString()===this._editor.getModel().uri.toString()&&(t.push({range:n.range,options:Xr.DecorationOptions}),i.push(o))}this._editor.changeDecorations((o=>{const n=o.deltaDecorations([],t);for(let t=0;t<n.length;t++)this._decorations.set(n[t],e.children[i[t]])}))}_onDecorationChanged(){const e=[],t=this._editor.getModel();if(t){for(const[i,o]of this._decorations){const n=t.getDecorationRange(i);if(!n)continue;let s=!1;if(!He.e.equalsRange(n,o.range)){if(He.e.spansMultipleLines(n))s=!0;else{o.range.endColumn-o.range.startColumn!==n.endColumn-n.startColumn&&(s=!0)}s?(this._decorationIgnoreSet.add(o.id),e.push(i)):o.range=n}}for(let t=0,i=e.length;t<i;t++)this._decorations.delete(e[t]);this._editor.removeDecorations(e)}}removeDecorations(){this._editor.removeDecorations([...this._decorations.keys()]),this._decorations.clear()}}Xr.DecorationOptions=Be.qx.register({description:"reference-decoration",stickiness:1,className:"reference-decoration"});class ea{constructor(){this.ratio=.7,this.heightInLines=18}static fromJSON(e){let t,i;try{const o=JSON.parse(e);t=o.ratio,i=o.heightInLines}catch(wa){}return{ratio:t||.7,heightInLines:i||18}}}class ta extends Lr.ls{}let ia=class extends fr{constructor(e,t,i,o,n,s,r,a,l,d,c,h){super(e,{showFrame:!1,showArrow:!0,isResizeable:!0,isAccessible:!0,supportOnTitleClick:!0},s),this._defaultTreeKeyboardSupport=t,this.layoutData=i,this._textModelResolverService=n,this._instantiationService=s,this._peekViewService=r,this._uriLabel=a,this._undoRedoService=l,this._keybindingService=d,this._languageService=c,this._languageConfigurationService=h,this._disposeOnNewModel=new Fe.SL,this._callOnDispose=new Fe.SL,this._onDidSelectReference=new ui.Q5,this.onDidSelectReference=this._onDidSelectReference.event,this._dim=new X.Ro(0,0),this._applyTheme(o.getColorTheme()),this._callOnDispose.add(o.onDidColorThemeChange(this._applyTheme.bind(this))),this._peekViewService.addExclusiveWidget(e,this),this.create()}dispose(){this.setModel(void 0),this._callOnDispose.dispose(),this._disposeOnNewModel.dispose(),(0,Fe.B9)(this._preview),(0,Fe.B9)(this._previewNotAvailableMessage),(0,Fe.B9)(this._tree),(0,Fe.B9)(this._previewModelReference),this._splitView.dispose(),super.dispose()}_applyTheme(e){const t=e.getColor(Sr)||Zn.Il.transparent;this.style({arrowColor:t,frameColor:t,headerBackgroundColor:e.getColor(vr)||Zn.Il.transparent,primaryHeadingColor:e.getColor(br),secondaryHeadingColor:e.getColor(Cr)})}show(e){super.show(e,this.layoutData.heightInLines||18)}focusOnReferenceTree(){this._tree.domFocus()}focusOnPreviewEditor(){this._preview.focus()}isPreviewEditorFocused(){return this._preview.hasTextFocus()}_onTitleClick(e){this._preview&&this._preview.getModel()&&this._onDidSelectReference.fire({element:this._getFocusedReference(),kind:e.ctrlKey||e.metaKey||e.altKey?"side":"open",source:"title"})}_fillBody(e){this.setCssClass("reference-zone-widget"),this._messageContainer=X.R3(e,X.$("div.messages")),X.Cp(this._messageContainer),this._splitView=new Mr.z(e,{orientation:1}),this._previewContainer=X.R3(e,X.$("div.preview.inline"));this._preview=this._instantiationService.createInstance(tr,this._previewContainer,{scrollBeyondLastLine:!1,scrollbar:{verticalScrollbarSize:14,horizontal:"auto",useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,alwaysConsumeMouseWheel:!0},overviewRulerLanes:2,fixedOverflowWidgets:!0,minimap:{enabled:!1}},{},this.editor),X.Cp(this._previewContainer),this._previewNotAvailableMessage=new Be.yO(ne.NC("missingPreviewMessage","no preview available"),Tr.bd,Be.yO.DEFAULT_CREATION_OPTIONS,null,this._undoRedoService,this._languageService,this._languageConfigurationService),this._treeContainer=X.R3(e,X.$("div.ref-tree.inline"));const t={keyboardSupport:this._defaultTreeKeyboardSupport,accessibilityProvider:new Zr,keyboardNavigationLabelProvider:this._instantiationService.createInstance(Ur),identityProvider:new Kr,openOnSingleClick:!0,selectionNavigation:!0,overrideStyles:{listBackground:yr}};this._defaultTreeKeyboardSupport&&this._callOnDispose.add(X.mu(this._treeContainer,"keydown",(e=>{e.equals(9)&&(this._keybindingService.dispatchEvent(e,e.target),e.stopPropagation())}),!0)),this._tree=this._instantiationService.createInstance(ta,"ReferencesWidget",this._treeContainer,new zr,[this._instantiationService.createInstance(qr),this._instantiationService.createInstance(Qr)],this._instantiationService.createInstance(Br),t),this._splitView.addView({onDidChange:ui.ju.None,element:this._previewContainer,minimumSize:200,maximumSize:Number.MAX_VALUE,layout:e=>{this._preview.layout({height:this._dim.height,width:e})}},Mr.M.Distribute),this._splitView.addView({onDidChange:ui.ju.None,element:this._treeContainer,minimumSize:100,maximumSize:Number.MAX_VALUE,layout:e=>{this._treeContainer.style.height="".concat(this._dim.height,"px"),this._treeContainer.style.width="".concat(e,"px"),this._tree.layout(this._dim.height,e)}},Mr.M.Distribute),this._disposables.add(this._splitView.onDidSashChange((()=>{this._dim.width&&(this.layoutData.ratio=this._splitView.getViewSize(0)/this._dim.width)}),void 0));const i=(e,t)=>{e instanceof kr&&("show"===t&&this._revealReference(e,!1),this._onDidSelectReference.fire({element:e,kind:t,source:"tree"}))};this._tree.onDidOpen((e=>{e.sideBySide?i(e.element,"side"):e.editorOptions.pinned?i(e.element,"goto"):i(e.element,"show")})),X.Cp(this._treeContainer)}_onWidth(e){this._dim&&this._doLayoutBody(this._dim.height,e)}_doLayoutBody(e,t){super._doLayoutBody(e,t),this._dim=new X.Ro(t,e),this.layoutData.heightInLines=this._viewZone?this._viewZone.heightInLines:this.layoutData.heightInLines,this._splitView.layout(t),this._splitView.resizeView(0,t*this.layoutData.ratio)}setSelection(e){return this._revealReference(e,!0).then((()=>{this._model&&(this._tree.setSelection([e]),this._tree.setFocus([e]))}))}setModel(e){return this._disposeOnNewModel.clear(),this._model=e,this._model?this._onNewModel():Promise.resolve()}_onNewModel(){return this._model?this._model.isEmpty?(this.setTitle(""),this._messageContainer.innerText=ne.NC("noResults","No results"),X.$Z(this._messageContainer),Promise.resolve(void 0)):(X.Cp(this._messageContainer),this._decorationsManager=new Xr(this._preview,this._model),this._disposeOnNewModel.add(this._decorationsManager),this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange((e=>this._tree.rerender(e)))),this._disposeOnNewModel.add(this._preview.onMouseDown((e=>{const{event:t,target:i}=e;if(2!==t.detail)return;const o=this._getFocusedReference();o&&this._onDidSelectReference.fire({element:{uri:o.uri,range:i.range},kind:t.ctrlKey||t.metaKey||t.altKey?"side":"open",source:"editor"})}))),this.container.classList.add("results-loaded"),X.$Z(this._treeContainer),X.$Z(this._previewContainer),this._splitView.layout(this._dim.width),this.focusOnReferenceTree(),this._tree.setInput(1===this._model.groups.length?this._model.groups[0]:this._model)):Promise.resolve(void 0)}_getFocusedReference(){const[e]=this._tree.getFocus();return e instanceof kr?e:e instanceof Ir&&e.children.length>0?e.children[0]:void 0}async revealReference(e){await this._revealReference(e,!1),this._onDidSelectReference.fire({element:e,kind:"goto",source:"tree"})}async _revealReference(e,t){if(this._revealedReference===e)return;this._revealedReference=e,e.uri.scheme!==Dt.lg.inMemory?this.setTitle((0,It.Hx)(e.uri),this._uriLabel.getUriLabel((0,It.XX)(e.uri))):this.setTitle(ne.NC("peekView.alternateTitle","References"));const i=this._textModelResolverService.createModelReference(e.uri);this._tree.getInput()===e.parent||(t&&this._tree.reveal(e.parent),await this._tree.expand(e.parent)),this._tree.reveal(e);const o=await i;if(!this._model)return void o.dispose();(0,Fe.B9)(this._previewModelReference);const n=o.object;if(n){const t=this._preview.getModel()===n.textEditorModel?0:1,i=He.e.lift(e.range).collapseToStart();this._previewModelReference=o,this._preview.setModel(n.textEditorModel),this._preview.setSelection(i),this._preview.revealRangeInCenter(i,t)}else this._preview.setModel(this._previewNotAvailableMessage),o.dispose()}};ia=Jr([$r(3,Ue.XE),$r(4,Ks.S),$r(5,ni.TG),$r(6,gr),$r(7,Wr.e),$r(8,Yr.tJ),$r(9,ki.d),$r(10,Us.O),$r(11,Xn.c_)],ia);var oa,na=i(57341),sa=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ra=function(e,t){return function(i,o){t(i,o,e)}};const aa=new ae.uy("referenceSearchVisible",!1,ne.NC("referenceSearchVisible","Whether reference peek is visible, like 'Peek References' or 'Peek Definition'"));let la=oa=class{static get(e){return e.getContribution(oa.ID)}constructor(e,t,i,o,n,s,r,a){this._defaultTreeKeyboardSupport=e,this._editor=t,this._editorService=o,this._notificationService=n,this._instantiationService=s,this._storageService=r,this._configurationService=a,this._disposables=new Fe.SL,this._requestIdPool=0,this._ignoreModelChangeEvent=!1,this._referenceSearchVisible=aa.bindTo(i)}dispose(){var e,t;this._referenceSearchVisible.reset(),this._disposables.dispose(),null===(e=this._widget)||void 0===e||e.dispose(),null===(t=this._model)||void 0===t||t.dispose(),this._widget=void 0,this._model=void 0}toggleWidget(e,t,i){let o;if(this._widget&&(o=this._widget.position),this.closeWidget(),o&&e.containsPosition(o))return;this._peekMode=i,this._referenceSearchVisible.set(!0),this._disposables.add(this._editor.onDidChangeModelLanguage((()=>{this.closeWidget()}))),this._disposables.add(this._editor.onDidChangeModel((()=>{this._ignoreModelChangeEvent||this.closeWidget()})));const n="peekViewLayout",s=ea.fromJSON(this._storageService.get(n,0,"{}"));this._widget=this._instantiationService.createInstance(ia,this._editor,this._defaultTreeKeyboardSupport,s),this._widget.setTitle(ne.NC("labelLoading","Loading...")),this._widget.show(e),this._disposables.add(this._widget.onDidClose((()=>{t.cancel(),this._widget&&(this._storageService.store(n,JSON.stringify(this._widget.layoutData),0,1),this._widget=void 0),this.closeWidget()}))),this._disposables.add(this._widget.onDidSelectReference((e=>{const{element:t,kind:o}=e;if(t)switch(o){case"open":"editor"===e.source&&this._configurationService.getValue("editor.stablePeek")||this.openReference(t,!1,!1);break;case"side":this.openReference(t,!0,!1);break;case"goto":i?this._gotoReference(t,!0):this.openReference(t,!1,!0)}})));const r=++this._requestIdPool;t.then((t=>{var i;if(r===this._requestIdPool&&this._widget)return null===(i=this._model)||void 0===i||i.dispose(),this._model=t,this._widget.setModel(this._model).then((()=>{if(this._widget&&this._model&&this._editor.hasModel()){this._model.isEmpty?this._widget.setMetaTitle(""):this._widget.setMetaTitle(ne.NC("metaTitle.N","{0} ({1})",this._model.title,this._model.references.length));const t=this._editor.getModel().uri,i=new We.L(e.startLineNumber,e.startColumn),o=this._model.nearestReference(t,i);if(o)return this._widget.setSelection(o).then((()=>{this._widget&&"editor"===this._editor.getOption(87)&&this._widget.focusOnPreviewEditor()}))}}));t.dispose()}),(e=>{this._notificationService.error(e)}))}changeFocusBetweenPreviewAndReferences(){this._widget&&(this._widget.isPreviewEditorFocused()?this._widget.focusOnReferenceTree():this._widget.focusOnPreviewEditor())}async goToNextOrPreviousReference(e){if(!this._editor.hasModel()||!this._model||!this._widget)return;const t=this._widget.position;if(!t)return;const i=this._model.nearestReference(this._editor.getModel().uri,t);if(!i)return;const o=this._model.nextOrPreviousReference(i,e),n=this._editor.hasTextFocus(),s=this._widget.isPreviewEditorFocused();await this._widget.setSelection(o),await this._gotoReference(o,!1),n?this._editor.focus():this._widget&&s&&this._widget.focusOnPreviewEditor()}async revealReference(e){this._editor.hasModel()&&this._model&&this._widget&&await this._widget.revealReference(e)}closeWidget(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];var t,i;null===(t=this._widget)||void 0===t||t.dispose(),null===(i=this._model)||void 0===i||i.dispose(),this._referenceSearchVisible.reset(),this._disposables.clear(),this._widget=void 0,this._model=void 0,e&&this._editor.focus(),this._requestIdPool+=1}_gotoReference(e,t){var i;null===(i=this._widget)||void 0===i||i.hide(),this._ignoreModelChangeEvent=!0;const o=He.e.lift(e.range).collapseToStart();return this._editorService.openCodeEditor({resource:e.uri,options:{selection:o,selectionSource:"code.jump",pinned:t}},this._editor).then((e=>{var t;if(this._ignoreModelChangeEvent=!1,e&&this._widget)if(this._editor===e)this._widget.show(o),this._widget.focusOnReferenceTree();else{const i=oa.get(e),n=this._model.clone();this.closeWidget(),e.focus(),null===i||void 0===i||i.toggleWidget(o,(0,Oe.PG)((e=>Promise.resolve(n))),null!==(t=this._peekMode)&&void 0!==t&&t)}else this.closeWidget()}),(e=>{this._ignoreModelChangeEvent=!1,(0,Ji.dL)(e)}))}openReference(e,t,i){t||this.closeWidget();const{uri:o,range:n}=e;this._editorService.openCodeEditor({resource:o,options:{selection:n,selectionSource:"code.jump",pinned:i}},this._editor,t)}};function da(e,t){const i=function(e){const t=e.get(te.$).getFocusedCodeEditor();return t instanceof tr?t.getParentEditor():t}(e);if(!i)return;const o=la.get(i);o&&t(o)}la.ID="editor.contrib.referencesController",la=oa=sa([ra(2,ae.i6),ra(3,te.$),ra(4,Xi.lT),ra(5,ni.TG),ra(6,Mn.Uy),ra(7,re.Ui)],la),Nr.W.registerCommandAndKeybindingRule({id:"togglePeekWidgetFocus",weight:100,primary:(0,Le.gx)(2089,60),when:ae.Ao.or(aa,pr.inPeekEditor),handler(e){da(e,(e=>{e.changeFocusBetweenPreviewAndReferences()}))}}),Nr.W.registerCommandAndKeybindingRule({id:"goToNextReference",weight:90,primary:62,secondary:[70],when:ae.Ao.or(aa,pr.inPeekEditor),handler(e){da(e,(e=>{e.goToNextOrPreviousReference(!0)}))}}),Nr.W.registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:90,primary:1086,secondary:[1094],when:ae.Ao.or(aa,pr.inPeekEditor),handler(e){da(e,(e=>{e.goToNextOrPreviousReference(!1)}))}}),ye.P.registerCommandAlias("goToNextReferenceFromEmbeddedEditor","goToNextReference"),ye.P.registerCommandAlias("goToPreviousReferenceFromEmbeddedEditor","goToPreviousReference"),ye.P.registerCommandAlias("closeReferenceSearchEditor","closeReferenceSearch"),ye.P.registerCommand("closeReferenceSearch",(e=>da(e,(e=>e.closeWidget())))),Nr.W.registerKeybindingRule({id:"closeReferenceSearch",weight:-1,primary:9,secondary:[1033],when:ae.Ao.and(pr.inPeekEditor,ae.Ao.not("config.editor.stablePeek"))}),Nr.W.registerKeybindingRule({id:"closeReferenceSearch",weight:250,primary:9,secondary:[1033],when:ae.Ao.and(aa,ae.Ao.not("config.editor.stablePeek"),ae.Ao.or(oe.u.editorTextFocus,na.Ul.negate()))}),Nr.W.registerCommandAndKeybindingRule({id:"revealReference",weight:200,primary:3,mac:{primary:3,secondary:[2066]},when:ae.Ao.and(aa,Lr.CQ,Lr.PS.negate(),Lr.uJ.negate()),handler(e){var t;const i=null===(t=e.get(Lr.Lw).lastFocusedList)||void 0===t?void 0:t.getFocus();Array.isArray(i)&&i[0]instanceof kr&&da(e,(e=>e.revealReference(i[0])))}}),Nr.W.registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:ae.Ao.and(aa,Lr.CQ,Lr.PS.negate(),Lr.uJ.negate()),handler(e){var t;const i=null===(t=e.get(Lr.Lw).lastFocusedList)||void 0===t?void 0:t.getFocus();Array.isArray(i)&&i[0]instanceof kr&&da(e,(e=>e.openReference(i[0],!0,!0)))}}),ye.P.registerCommand("openReference",(e=>{var t;const i=null===(t=e.get(Lr.Lw).lastFocusedList)||void 0===t?void 0:t.getFocus();Array.isArray(i)&&i[0]instanceof kr&&da(e,(e=>e.openReference(i[0],!1,!0)))}));var ca=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ha=function(e,t){return function(i,o){t(i,o,e)}};const ua=new ae.uy("hasSymbols",!1,(0,ne.NC)("hasSymbols","Whether there are symbol locations that can be navigated via keyboard-only.")),ga=(0,ni.yh)("ISymbolNavigationService");let pa=class{constructor(e,t,i,o){this._editorService=t,this._notificationService=i,this._keybindingService=o,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=ua.bindTo(e)}reset(){var e,t;this._ctxHasSymbols.reset(),null===(e=this._currentState)||void 0===e||e.dispose(),null===(t=this._currentMessage)||void 0===t||t.dispose(),this._currentModel=void 0,this._currentIdx=-1}put(e){const t=e.parent.parent;if(t.references.length<=1)return void this.reset();this._currentModel=t,this._currentIdx=t.references.indexOf(e),this._ctxHasSymbols.set(!0),this._showMessage();const i=new ma(this._editorService),o=i.onDidChange((e=>{if(this._ignoreEditorChange)return;const i=this._editorService.getActiveCodeEditor();if(!i)return;const o=i.getModel(),n=i.getPosition();if(!o||!n)return;let s=!1,r=!1;for(const a of t.references)if((0,It.Xy)(a.uri,o.uri))s=!0,r=r||He.e.containsPosition(a.range,n);else if(s)break;s&&r||this.reset()}));this._currentState=(0,Fe.F8)(i,o)}revealNext(e){if(!this._currentModel)return Promise.resolve();this._currentIdx+=1,this._currentIdx%=this._currentModel.references.length;const t=this._currentModel.references[this._currentIdx];return this._showMessage(),this._ignoreEditorChange=!0,this._editorService.openCodeEditor({resource:t.uri,options:{selection:He.e.collapseToStart(t.range),selectionRevealType:3}},e).finally((()=>{this._ignoreEditorChange=!1}))}_showMessage(){var e;null===(e=this._currentMessage)||void 0===e||e.dispose();const t=this._keybindingService.lookupKeybinding("editor.gotoNextSymbolFromResult"),i=t?(0,ne.NC)("location.kb","Symbol {0} of {1}, {2} for next",this._currentIdx+1,this._currentModel.references.length,t.getLabel()):(0,ne.NC)("location","Symbol {0} of {1}",this._currentIdx+1,this._currentModel.references.length);this._currentMessage=this._notificationService.status(i)}};pa=ca([ha(0,ae.i6),ha(1,te.$),ha(2,Xi.lT),ha(3,ki.d)],pa),(0,Zo.z)(ga,pa,1),(0,ee.fK)(new class extends ee._l{constructor(){super({id:"editor.gotoNextSymbolFromResult",precondition:ua,kbOpts:{weight:100,primary:70}})}runEditorCommand(e,t){return e.get(ga).revealNext(t)}}),Nr.W.registerCommandAndKeybindingRule({id:"editor.gotoNextSymbolFromResult.cancel",weight:100,when:ua,primary:9,handler(e){e.get(ga).reset()}});let ma=class{constructor(e){this._listener=new Map,this._disposables=new Fe.SL,this._onDidChange=new ui.Q5,this.onDidChange=this._onDidChange.event,this._disposables.add(e.onCodeEditorRemove(this._onDidRemoveEditor,this)),this._disposables.add(e.onCodeEditorAdd(this._onDidAddEditor,this)),e.listCodeEditors().forEach(this._onDidAddEditor,this)}dispose(){this._disposables.dispose(),this._onDidChange.dispose(),(0,Fe.B9)(this._listener.values())}_onDidAddEditor(e){this._listener.set(e,(0,Fe.F8)(e.onDidChangeCursorPosition((t=>this._onDidChange.fire({editor:e}))),e.onDidChangeModelContent((t=>this._onDidChange.fire({editor:e})))))}_onDidRemoveEditor(e){var t;null===(t=this._listener.get(e))||void 0===t||t.dispose(),this._listener.delete(e)}};async function _a(e,t,i,o){const n=i.ordered(e).map((i=>Promise.resolve(o(i,e,t)).then(void 0,(e=>{(0,Ji.Cp)(e)})))),s=await Promise.all(n);return(0,nt.kX)(s.flat())}function fa(e,t,i,o){return _a(t,i,e,((e,t,i)=>e.provideDefinition(t,i,o)))}function va(e,t,i,o){return _a(t,i,e,((e,t,i)=>e.provideDeclaration(t,i,o)))}function ba(e,t,i,o){return _a(t,i,e,((e,t,i)=>e.provideImplementation(t,i,o)))}function Ca(e,t,i,o){return _a(t,i,e,((e,t,i)=>e.provideTypeDefinition(t,i,o)))}function Sa(e,t,i,o,n){return _a(t,i,e,(async(e,t,i)=>{const s=await e.provideReferences(t,i,{includeDeclaration:!0},n);if(!o||!s||2!==s.length)return s;const r=await e.provideReferences(t,i,{includeDeclaration:!1},n);return r&&1===r.length?r:s}))}async function ya(e){const t=await e(),i=new Rr(t,""),o=i.references.map((e=>e.link));return i.dispose(),o}var wa,xa,Na,La,ka,Da,Ia,Ra;ma=ca([ha(0,te.$)],ma),(0,ee.sb)("_executeDefinitionProvider",((e,t,i)=>{const o=fa(e.get(kt.p).definitionProvider,t,i,Yi.T.None);return ya((()=>o))})),(0,ee.sb)("_executeTypeDefinitionProvider",((e,t,i)=>{const o=Ca(e.get(kt.p).typeDefinitionProvider,t,i,Yi.T.None);return ya((()=>o))})),(0,ee.sb)("_executeDeclarationProvider",((e,t,i)=>{const o=va(e.get(kt.p).declarationProvider,t,i,Yi.T.None);return ya((()=>o))})),(0,ee.sb)("_executeReferenceProvider",((e,t,i)=>{const o=Sa(e.get(kt.p).referenceProvider,t,i,!1,Yi.T.None);return ya((()=>o))})),(0,ee.sb)("_executeImplementationProvider",((e,t,i)=>{const o=ba(e.get(kt.p).implementationProvider,t,i,Yi.T.None);return ya((()=>o))})),se.BH.appendMenuItem(se.eH.EditorContext,{submenu:se.eH.EditorContextPeek,title:ne.NC("peek.submenu","Peek"),group:"navigation",order:100});class Pa{static is(e){return!(!e||"object"!==typeof e)&&(e instanceof Pa||!(!We.L.isIPosition(e.position)||!e.model))}constructor(e,t){this.model=e,this.position=t}}class Ma extends ee.x1{static all(){return Ma._allSymbolNavigationCommands.values()}static _patchConfig(e){const t={...e,f1:!0};if(t.menu)for(const i of st.$.wrap(t.menu))i.id!==se.eH.EditorContext&&i.id!==se.eH.EditorContextPeek||(i.when=ae.Ao.and(e.precondition,i.when));return t}constructor(e,t){super(Ma._patchConfig(t)),this.configuration=e,Ma._allSymbolNavigationCommands.set(t.id,this)}runEditorCommand(e,t,i,o){if(!t.hasModel())return Promise.resolve(void 0);const n=e.get(Xi.lT),s=e.get(te.$),r=e.get(yi.ek),a=e.get(ga),l=e.get(kt.p),d=e.get(ni.TG),c=t.getModel(),h=t.getPosition(),u=Pa.is(i)?i:new Pa(c,h),g=new ti.Dl(t,5),p=(0,Oe.eP)(this._getLocationModel(l,u.model,u.position,g.token),g.token).then((async e=>{var n;if(!e||g.token.isCancellationRequested)return;let r;if((0,xe.Z9)(e.ariaMessage),e.referenceAt(c.uri,h)){const e=this._getAlternativeCommand(t);!Ma._activeAlternativeCommands.has(e)&&Ma._allSymbolNavigationCommands.has(e)&&(r=Ma._allSymbolNavigationCommands.get(e))}const l=e.references.length;if(0===l){if(!this.configuration.muteMessage){const e=c.getWordAtPosition(h);null===(n=fi.get(t))||void 0===n||n.showMessage(this._getNoResultFoundMessage(e),h)}}else{if(1!==l||!r)return this._onResult(s,a,t,e,o);Ma._activeAlternativeCommands.add(this.desc.id),d.invokeFunction((e=>r.runEditorCommand(e,t,i,o).finally((()=>{Ma._activeAlternativeCommands.delete(this.desc.id)}))))}}),(e=>{n.error(e)})).finally((()=>{g.dispose()}));return r.showWhile(p,250),p}async _onResult(e,t,i,o,n){const s=this._getGoToPreference(i);if(i instanceof tr||!(this.configuration.openInPeek||"peek"===s&&o.references.length>1)){const r=o.firstReference(),a=o.references.length>1&&"gotoAndPeek"===s,l=await this._openReference(i,e,r,this.configuration.openToSide,!a);a&&l?this._openInPeek(l,o,n):o.dispose(),"goto"===s&&t.put(r)}else this._openInPeek(i,o,n)}async _openReference(e,t,i,o,n){let s;if((0,Lt.vx)(i)&&(s=i.targetSelectionRange),s||(s=i.range),!s)return;const r=await t.openCodeEditor({resource:i.uri,options:{selection:He.e.collapseToStart(s),selectionRevealType:3,selectionSource:"code.jump"}},e,o);if(r){if(n){const e=r.getModel(),t=r.createDecorationsCollection([{range:s,options:{description:"symbol-navigate-action-highlight",className:"symbolHighlight"}}]);setTimeout((()=>{r.getModel()===e&&t.clear()}),350)}return r}}_openInPeek(e,t,i){const o=la.get(e);o&&e.hasModel()?o.toggleWidget(null!==i&&void 0!==i?i:e.getSelection(),(0,Oe.PG)((e=>Promise.resolve(t))),this.configuration.openInPeek):t.dispose()}}Ma._allSymbolNavigationCommands=new Map,Ma._activeAlternativeCommands=new Set;class Ta extends Ma{async _getLocationModel(e,t,i,o){return new Rr(await fa(e.definitionProvider,t,i,o),ne.NC("def.title","Definitions"))}_getNoResultFoundMessage(e){return e&&e.word?ne.NC("noResultWord","No definition found for '{0}'",e.word):ne.NC("generic.noResults","No definition found")}_getAlternativeCommand(e){return e.getOption(58).alternativeDefinitionCommand}_getGoToPreference(e){return e.getOption(58).multipleDefinitions}}(0,se.r1)(((wa=class extends Ta{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:wa.id,title:{...ne.vv("actions.goToDecl.label","Go to Definition"),mnemonicTitle:ne.NC({key:"miGotoDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Definition")},precondition:oe.u.hasDefinitionProvider,keybinding:[{when:oe.u.editorTextFocus,primary:70,weight:100},{when:ae.Ao.and(oe.u.editorTextFocus,na.Pf),primary:2118,weight:100}],menu:[{id:se.eH.EditorContext,group:"navigation",order:1.1},{id:se.eH.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:2}]}),ye.P.registerCommandAlias("editor.action.goToDeclaration",wa.id)}}).id="editor.action.revealDefinition",wa)),(0,se.r1)(((xa=class extends Ta{constructor(){super({openToSide:!0,openInPeek:!1,muteMessage:!1},{id:xa.id,title:ne.vv("actions.goToDeclToSide.label","Open Definition to the Side"),precondition:ae.Ao.and(oe.u.hasDefinitionProvider,oe.u.isInEmbeddedEditor.toNegated()),keybinding:[{when:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,70),weight:100},{when:ae.Ao.and(oe.u.editorTextFocus,na.Pf),primary:(0,Le.gx)(2089,2118),weight:100}]}),ye.P.registerCommandAlias("editor.action.openDeclarationToTheSide",xa.id)}}).id="editor.action.revealDefinitionAside",xa)),(0,se.r1)(((Na=class extends Ta{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:Na.id,title:ne.vv("actions.previewDecl.label","Peek Definition"),precondition:ae.Ao.and(oe.u.hasDefinitionProvider,pr.notInPeekEditor,oe.u.isInEmbeddedEditor.toNegated()),keybinding:{when:oe.u.editorTextFocus,primary:582,linux:{primary:3140},weight:100},menu:{id:se.eH.EditorContextPeek,group:"peek",order:2}}),ye.P.registerCommandAlias("editor.action.previewDeclaration",Na.id)}}).id="editor.action.peekDefinition",Na));class Ea extends Ma{async _getLocationModel(e,t,i,o){return new Rr(await va(e.declarationProvider,t,i,o),ne.NC("decl.title","Declarations"))}_getNoResultFoundMessage(e){return e&&e.word?ne.NC("decl.noResultWord","No declaration found for '{0}'",e.word):ne.NC("decl.generic.noResults","No declaration found")}_getAlternativeCommand(e){return e.getOption(58).alternativeDeclarationCommand}_getGoToPreference(e){return e.getOption(58).multipleDeclarations}}(0,se.r1)(((La=class extends Ea{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:La.id,title:{...ne.vv("actions.goToDeclaration.label","Go to Declaration"),mnemonicTitle:ne.NC({key:"miGotoDeclaration",comment:["&& denotes a mnemonic"]},"Go to &&Declaration")},precondition:ae.Ao.and(oe.u.hasDeclarationProvider,oe.u.isInEmbeddedEditor.toNegated()),menu:[{id:se.eH.EditorContext,group:"navigation",order:1.3},{id:se.eH.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}_getNoResultFoundMessage(e){return e&&e.word?ne.NC("decl.noResultWord","No declaration found for '{0}'",e.word):ne.NC("decl.generic.noResults","No declaration found")}}).id="editor.action.revealDeclaration",La)),(0,se.r1)(class extends Ea{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.peekDeclaration",title:ne.vv("actions.peekDecl.label","Peek Declaration"),precondition:ae.Ao.and(oe.u.hasDeclarationProvider,pr.notInPeekEditor,oe.u.isInEmbeddedEditor.toNegated()),menu:{id:se.eH.EditorContextPeek,group:"peek",order:3}})}});class Aa extends Ma{async _getLocationModel(e,t,i,o){return new Rr(await Ca(e.typeDefinitionProvider,t,i,o),ne.NC("typedef.title","Type Definitions"))}_getNoResultFoundMessage(e){return e&&e.word?ne.NC("goToTypeDefinition.noResultWord","No type definition found for '{0}'",e.word):ne.NC("goToTypeDefinition.generic.noResults","No type definition found")}_getAlternativeCommand(e){return e.getOption(58).alternativeTypeDefinitionCommand}_getGoToPreference(e){return e.getOption(58).multipleTypeDefinitions}}(0,se.r1)(((ka=class extends Aa{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:ka.ID,title:{...ne.vv("actions.goToTypeDefinition.label","Go to Type Definition"),mnemonicTitle:ne.NC({key:"miGotoTypeDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Type Definition")},precondition:oe.u.hasTypeDefinitionProvider,keybinding:{when:oe.u.editorTextFocus,primary:0,weight:100},menu:[{id:se.eH.EditorContext,group:"navigation",order:1.4},{id:se.eH.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}}).ID="editor.action.goToTypeDefinition",ka)),(0,se.r1)(((Da=class extends Aa{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:Da.ID,title:ne.vv("actions.peekTypeDefinition.label","Peek Type Definition"),precondition:ae.Ao.and(oe.u.hasTypeDefinitionProvider,pr.notInPeekEditor,oe.u.isInEmbeddedEditor.toNegated()),menu:{id:se.eH.EditorContextPeek,group:"peek",order:4}})}}).ID="editor.action.peekTypeDefinition",Da));class Oa extends Ma{async _getLocationModel(e,t,i,o){return new Rr(await ba(e.implementationProvider,t,i,o),ne.NC("impl.title","Implementations"))}_getNoResultFoundMessage(e){return e&&e.word?ne.NC("goToImplementation.noResultWord","No implementation found for '{0}'",e.word):ne.NC("goToImplementation.generic.noResults","No implementation found")}_getAlternativeCommand(e){return e.getOption(58).alternativeImplementationCommand}_getGoToPreference(e){return e.getOption(58).multipleImplementations}}(0,se.r1)(((Ia=class extends Oa{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:Ia.ID,title:{...ne.vv("actions.goToImplementation.label","Go to Implementations"),mnemonicTitle:ne.NC({key:"miGotoImplementation",comment:["&& denotes a mnemonic"]},"Go to &&Implementations")},precondition:oe.u.hasImplementationProvider,keybinding:{when:oe.u.editorTextFocus,primary:2118,weight:100},menu:[{id:se.eH.EditorContext,group:"navigation",order:1.45},{id:se.eH.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:4}]})}}).ID="editor.action.goToImplementation",Ia)),(0,se.r1)(((Ra=class extends Oa{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:Ra.ID,title:ne.vv("actions.peekImplementation.label","Peek Implementations"),precondition:ae.Ao.and(oe.u.hasImplementationProvider,pr.notInPeekEditor,oe.u.isInEmbeddedEditor.toNegated()),keybinding:{when:oe.u.editorTextFocus,primary:3142,weight:100},menu:{id:se.eH.EditorContextPeek,group:"peek",order:5}})}}).ID="editor.action.peekImplementation",Ra));class Fa extends Ma{_getNoResultFoundMessage(e){return e?ne.NC("references.no","No references found for '{0}'",e.word):ne.NC("references.noGeneric","No references found")}_getAlternativeCommand(e){return e.getOption(58).alternativeReferenceCommand}_getGoToPreference(e){return e.getOption(58).multipleReferences}}(0,se.r1)(class extends Fa{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:"editor.action.goToReferences",title:{...ne.vv("goToReferences.label","Go to References"),mnemonicTitle:ne.NC({key:"miGotoReference",comment:["&& denotes a mnemonic"]},"Go to &&References")},precondition:ae.Ao.and(oe.u.hasReferenceProvider,pr.notInPeekEditor,oe.u.isInEmbeddedEditor.toNegated()),keybinding:{when:oe.u.editorTextFocus,primary:1094,weight:100},menu:[{id:se.eH.EditorContext,group:"navigation",order:1.45},{id:se.eH.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:5}]})}async _getLocationModel(e,t,i,o){return new Rr(await Sa(e.referenceProvider,t,i,!0,o),ne.NC("ref.title","References"))}}),(0,se.r1)(class extends Fa{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.referenceSearch.trigger",title:ne.vv("references.action.label","Peek References"),precondition:ae.Ao.and(oe.u.hasReferenceProvider,pr.notInPeekEditor,oe.u.isInEmbeddedEditor.toNegated()),menu:{id:se.eH.EditorContextPeek,group:"peek",order:6}})}async _getLocationModel(e,t,i,o){return new Rr(await Sa(e.referenceProvider,t,i,!1,o),ne.NC("ref.title","References"))}});class Wa extends Ma{constructor(e,t,i){super(e,{id:"editor.action.goToLocation",title:ne.vv("label.generic","Go to Any Symbol"),precondition:ae.Ao.and(pr.notInPeekEditor,oe.u.isInEmbeddedEditor.toNegated())}),this._references=t,this._gotoMultipleBehaviour=i}async _getLocationModel(e,t,i,o){return new Rr(this._references,ne.NC("generic.title","Locations"))}_getNoResultFoundMessage(e){return e&&ne.NC("generic.noResult","No results for '{0}'",e.word)||""}_getGoToPreference(e){var t;return null!==(t=this._gotoMultipleBehaviour)&&void 0!==t?t:e.getOption(58).multipleReferences}_getAlternativeCommand(){return""}}ye.P.registerCommand({id:"editor.action.goToLocations",metadata:{description:"Go to locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:_t.o},{name:"position",description:"The position at which to start",constraint:We.L.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`"},{name:"noResultsMessage",description:"Human readable message that shows when locations is empty."}]},handler:async(e,t,i,o,n,s,r)=>{(0,Dn.p_)(_t.o.isUri(t)),(0,Dn.p_)(We.L.isIPosition(i)),(0,Dn.p_)(Array.isArray(o)),(0,Dn.p_)("undefined"===typeof n||"string"===typeof n),(0,Dn.p_)("undefined"===typeof r||"boolean"===typeof r);const a=e.get(te.$),l=await a.openCodeEditor({resource:t},a.getFocusedCodeEditor());if((0,xr.CL)(l))return l.setPosition(i),l.revealPositionInCenterIfOutsideViewport(i,0),l.invokeWithinContext((e=>{const t=new class extends Wa{_getNoResultFoundMessage(e){return s||super._getNoResultFoundMessage(e)}}({muteMessage:!Boolean(s),openInPeek:Boolean(r),openToSide:!1},o,n);e.get(ni.TG).invokeFunction(t.run.bind(t),l)}))}}),ye.P.registerCommand({id:"editor.action.peekLocations",metadata:{description:"Peek locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:_t.o},{name:"position",description:"The position at which to start",constraint:We.L.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`"}]},handler:async(e,t,i,o,n)=>{e.get(ye.H).executeCommand("editor.action.goToLocations",t,i,o,n,void 0,!0)}}),ye.P.registerCommand({id:"editor.action.findReferences",handler:(e,t,i)=>{(0,Dn.p_)(_t.o.isUri(t)),(0,Dn.p_)(We.L.isIPosition(i));const o=e.get(kt.p),n=e.get(te.$);return n.openCodeEditor({resource:t},n.getFocusedCodeEditor()).then((e=>{if(!(0,xr.CL)(e)||!e.hasModel())return;const t=la.get(e);if(!t)return;const n=(0,Oe.PG)((t=>Sa(o.referenceProvider,e.getModel(),We.L.lift(i),!1,t).then((e=>new Rr(e,ne.NC("ref.title","References")))))),s=new He.e(i.lineNumber,i.column,i.lineNumber,i.column);return Promise.resolve(t.toggleWidget(s,n,!1))}))}}),ye.P.registerCommandAlias("editor.action.showReferences","editor.action.peekLocations");var Ha,Va=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ba=function(e,t){return function(i,o){t(i,o,e)}};let za=Ha=class{constructor(e,t,i,o){this.textModelResolverService=t,this.languageService=i,this.languageFeaturesService=o,this.toUnhook=new Fe.SL,this.toUnhookForKeyboard=new Fe.SL,this.currentWordAtPosition=null,this.previousPromise=null,this.editor=e,this.linkDecorations=this.editor.createDecorationsCollection();const n=new Ys(e);this.toUnhook.add(n),this.toUnhook.add(n.onMouseMoveOrRelevantKeyDown((e=>{let[t,i]=e;this.startFindDefinitionFromMouse(t,null!==i&&void 0!==i?i:void 0)}))),this.toUnhook.add(n.onExecute((e=>{this.isEnabled(e)&&this.gotoDefinition(e.target.position,e.hasSideBySideModifier).catch((e=>{(0,Ji.dL)(e)})).finally((()=>{this.removeLinkDecorations()}))}))),this.toUnhook.add(n.onCancel((()=>{this.removeLinkDecorations(),this.currentWordAtPosition=null})))}static get(e){return e.getContribution(Ha.ID)}async startFindDefinitionFromCursor(e){await this.startFindDefinition(e),this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition((()=>{this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear()}))),this.toUnhookForKeyboard.add(this.editor.onKeyDown((e=>{e&&(this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear())})))}startFindDefinitionFromMouse(e,t){if(9===e.target.type&&this.linkDecorations.length>0)return;if(!this.editor.hasModel()||!this.isEnabled(e,t))return this.currentWordAtPosition=null,void this.removeLinkDecorations();const i=e.target.position;this.startFindDefinition(i)}async startFindDefinition(e){var t;this.toUnhookForKeyboard.clear();const i=e?null===(t=this.editor.getModel())||void 0===t?void 0:t.getWordAtPosition(e):null;if(!i)return this.currentWordAtPosition=null,void this.removeLinkDecorations();if(this.currentWordAtPosition&&this.currentWordAtPosition.startColumn===i.startColumn&&this.currentWordAtPosition.endColumn===i.endColumn&&this.currentWordAtPosition.word===i.word)return;this.currentWordAtPosition=i;const o=new ti.yy(this.editor,15);let n;this.previousPromise&&(this.previousPromise.cancel(),this.previousPromise=null),this.previousPromise=(0,Oe.PG)((t=>this.findDefinition(e,t)));try{n=await this.previousPromise}catch(r){return void(0,Ji.dL)(r)}if(!n||!n.length||!o.validate(this.editor))return void this.removeLinkDecorations();const s=n[0].originSelectionRange?He.e.lift(n[0].originSelectionRange):new He.e(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn);if(n.length>1){let e=s;for(const{originSelectionRange:t}of n)t&&(e=He.e.plusRange(e,t));this.addDecoration(e,(new Ne.W5).appendText(ne.NC("multipleResults","Click to show {0} definitions.",n.length)))}else{const e=n[0];if(!e.uri)return;this.textModelResolverService.createModelReference(e.uri).then((t=>{if(!t.object||!t.object.textEditorModel)return void t.dispose();const{object:{textEditorModel:i}}=t,{startLineNumber:o}=e.range;if(o<1||o>i.getLineCount())return void t.dispose();const n=this.getPreviewValue(i,o,e),r=this.languageService.guessLanguageIdByFilepathOrFirstLine(i.uri);this.addDecoration(s,n?(new Ne.W5).appendCodeblock(r||"",n):void 0),t.dispose()}))}}getPreviewValue(e,t,i){let o=i.range;o.endLineNumber-o.startLineNumber>=Ha.MAX_SOURCE_PREVIEW_LINES&&(o=this.getPreviewRangeBasedOnIndentation(e,t));return this.stripIndentationFromPreviewRange(e,t,o)}stripIndentationFromPreviewRange(e,t,i){let o=e.getLineFirstNonWhitespaceColumn(t);for(let n=t+1;n<i.endLineNumber;n++){const t=e.getLineFirstNonWhitespaceColumn(n);o=Math.min(o,t)}return e.getValueInRange(i).replace(new RegExp("^\\s{".concat(o-1,"}"),"gm"),"").trim()}getPreviewRangeBasedOnIndentation(e,t){const i=e.getLineFirstNonWhitespaceColumn(t),o=Math.min(e.getLineCount(),t+Ha.MAX_SOURCE_PREVIEW_LINES);let n=t+1;for(;n<o;n++){if(i===e.getLineFirstNonWhitespaceColumn(n))break}return new He.e(t,1,n+1,1)}addDecoration(e,t){const i={range:e,options:{description:"goto-definition-link",inlineClassName:"goto-definition-link",hoverMessage:t}};this.linkDecorations.set([i])}removeLinkDecorations(){this.linkDecorations.clear()}isEnabled(e,t){var i;return this.editor.hasModel()&&e.isLeftClick&&e.isNoneOrSingleMouseDown&&6===e.target.type&&!((null===(i=e.target.detail.injectedText)||void 0===i?void 0:i.options)instanceof Be.HS)&&(e.hasTriggerModifier||!!t&&t.keyCodeIsTriggerKey)&&this.languageFeaturesService.definitionProvider.has(this.editor.getModel())}findDefinition(e,t){const i=this.editor.getModel();return i?fa(this.languageFeaturesService.definitionProvider,i,e,t):Promise.resolve(null)}gotoDefinition(e,t){return this.editor.setPosition(e),this.editor.invokeWithinContext((e=>{const i=!t&&this.editor.getOption(88)&&!this.isInPeekEditor(e);return new Ta({openToSide:t,openInPeek:i,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(e)}))}isInPeekEditor(e){const t=e.get(ae.i6);return pr.inPeekEditor.getValue(t)}dispose(){this.toUnhook.dispose(),this.toUnhookForKeyboard.dispose()}};za.ID="editor.contrib.gotodefinitionatposition",za.MAX_SOURCE_PREVIEW_LINES=8,za=Ha=Va([Ba(1,Ks.S),Ba(2,Us.O),Ba(3,kt.p)],za),(0,ee._K)(za.ID,za,2);var Ua=i(89883);class Ka{constructor(e,t,i){this.value=e,this.isComplete=t,this.hasLoadingMessage=i}}class ja extends Fe.JT{constructor(e,t){super(),this._editor=e,this._computer=t,this._onResult=this._register(new ui.Q5),this.onResult=this._onResult.event,this._firstWaitScheduler=this._register(new Oe.pY((()=>this._triggerAsyncComputation()),0)),this._secondWaitScheduler=this._register(new Oe.pY((()=>this._triggerSyncComputation()),0)),this._loadingMessageScheduler=this._register(new Oe.pY((()=>this._triggerLoadingMessage()),0)),this._state=0,this._asyncIterable=null,this._asyncIterableDone=!1,this._result=[]}dispose(){this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),super.dispose()}get _hoverTime(){return this._editor.getOption(60).delay}get _firstWaitTime(){return this._hoverTime/2}get _secondWaitTime(){return this._hoverTime-this._firstWaitTime}get _loadingMessageTime(){return 3*this._hoverTime}_setState(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._state=e,t&&this._fireResult()}_triggerAsyncComputation(){this._setState(2),this._secondWaitScheduler.schedule(this._secondWaitTime),this._computer.computeAsync?(this._asyncIterableDone=!1,this._asyncIterable=(0,Oe.zS)((e=>this._computer.computeAsync(e))),(async()=>{try{for await(const e of this._asyncIterable)e&&(this._result.push(e),this._fireResult());this._asyncIterableDone=!0,3!==this._state&&4!==this._state||this._setState(0)}catch(e){(0,Ji.dL)(e)}})()):this._asyncIterableDone=!0}_triggerSyncComputation(){this._computer.computeSync&&(this._result=this._result.concat(this._computer.computeSync())),this._setState(this._asyncIterableDone?0:3)}_triggerLoadingMessage(){3===this._state&&this._setState(4)}_fireResult(){if(1===this._state||2===this._state)return;const e=0===this._state,t=4===this._state;this._onResult.fire(new Ka(this._result.slice(0),e,t))}start(e){if(0===e)0===this._state&&(this._setState(1),this._firstWaitScheduler.schedule(this._firstWaitTime),this._loadingMessageScheduler.schedule(this._loadingMessageTime));else switch(this._state){case 0:this._triggerAsyncComputation(),this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break;case 2:this._secondWaitScheduler.cancel(),this._triggerSyncComputation()}}cancel(){this._firstWaitScheduler.cancel(),this._secondWaitScheduler.cancel(),this._loadingMessageScheduler.cancel(),this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),this._result=[],this._setState(0,!1)}}class qa{constructor(e,t,i,o){this.priority=e,this.range=t,this.initialMousePosX=i,this.initialMousePosY=o,this.type=1}equals(e){return 1===e.type&&this.range.equalsRange(e.range)}canAdoptVisibleHover(e,t){return 1===e.type&&t.lineNumber===this.range.startLineNumber}}class Ga{constructor(e,t,i,o,n,s){this.priority=e,this.owner=t,this.range=i,this.initialMousePosX=o,this.initialMousePosY=n,this.supportsMarkerHover=s,this.type=2}equals(e){return 2===e.type&&this.owner===e.owner}canAdoptVisibleHover(e,t){return 2===e.type&&this.owner===e.owner}}const Qa=new class{constructor(){this._participants=[]}register(e){this._participants.push(e)}getAll(){return this._participants}};class Za{constructor(){let e;this._onDidWillResize=new ui.Q5,this.onDidWillResize=this._onDidWillResize.event,this._onDidResize=new ui.Q5,this.onDidResize=this._onDidResize.event,this._sashListener=new Fe.SL,this._size=new X.Ro(0,0),this._minSize=new X.Ro(0,0),this._maxSize=new X.Ro(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),this.domNode=document.createElement("div"),this._eastSash=new ir.g(this.domNode,{getVerticalSashLeft:()=>this._size.width},{orientation:0}),this._westSash=new ir.g(this.domNode,{getVerticalSashLeft:()=>0},{orientation:0}),this._northSash=new ir.g(this.domNode,{getHorizontalSashTop:()=>0},{orientation:1,orthogonalEdge:ir.l.North}),this._southSash=new ir.g(this.domNode,{getHorizontalSashTop:()=>this._size.height},{orientation:1,orthogonalEdge:ir.l.South}),this._northSash.orthogonalStartSash=this._westSash,this._northSash.orthogonalEndSash=this._eastSash,this._southSash.orthogonalStartSash=this._westSash,this._southSash.orthogonalEndSash=this._eastSash;let t=0,i=0;this._sashListener.add(ui.ju.any(this._northSash.onDidStart,this._eastSash.onDidStart,this._southSash.onDidStart,this._westSash.onDidStart)((()=>{void 0===e&&(this._onDidWillResize.fire(),e=this._size,t=0,i=0)}))),this._sashListener.add(ui.ju.any(this._northSash.onDidEnd,this._eastSash.onDidEnd,this._southSash.onDidEnd,this._westSash.onDidEnd)((()=>{void 0!==e&&(e=void 0,t=0,i=0,this._onDidResize.fire({dimension:this._size,done:!0}))}))),this._sashListener.add(this._eastSash.onDidChange((o=>{e&&(i=o.currentX-o.startX,this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,east:!0}))}))),this._sashListener.add(this._westSash.onDidChange((o=>{e&&(i=-(o.currentX-o.startX),this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,west:!0}))}))),this._sashListener.add(this._northSash.onDidChange((o=>{e&&(t=-(o.currentY-o.startY),this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,north:!0}))}))),this._sashListener.add(this._southSash.onDidChange((o=>{e&&(t=o.currentY-o.startY,this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,south:!0}))}))),this._sashListener.add(ui.ju.any(this._eastSash.onDidReset,this._westSash.onDidReset)((e=>{this._preferredSize&&(this.layout(this._size.height,this._preferredSize.width),this._onDidResize.fire({dimension:this._size,done:!0}))}))),this._sashListener.add(ui.ju.any(this._northSash.onDidReset,this._southSash.onDidReset)((e=>{this._preferredSize&&(this.layout(this._preferredSize.height,this._size.width),this._onDidResize.fire({dimension:this._size,done:!0}))})))}dispose(){this._northSash.dispose(),this._southSash.dispose(),this._eastSash.dispose(),this._westSash.dispose(),this._sashListener.dispose(),this._onDidResize.dispose(),this._onDidWillResize.dispose(),this.domNode.remove()}enableSashes(e,t,i,o){this._northSash.state=e?3:0,this._eastSash.state=t?3:0,this._southSash.state=i?3:0,this._westSash.state=o?3:0}layout(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.size.height,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.size.width;const{height:i,width:o}=this._minSize,{height:n,width:s}=this._maxSize;e=Math.max(i,Math.min(n,e)),t=Math.max(o,Math.min(s,t));const r=new X.Ro(t,e);X.Ro.equals(r,this._size)||(this.domNode.style.height=e+"px",this.domNode.style.width=t+"px",this._size=r,this._northSash.layout(),this._eastSash.layout(),this._southSash.layout(),this._westSash.layout())}clearSashHoverState(){this._eastSash.clearSashHoverState(),this._westSash.clearSashHoverState(),this._northSash.clearSashHoverState(),this._southSash.clearSashHoverState()}get size(){return this._size}set maxSize(e){this._maxSize=e}get maxSize(){return this._maxSize}set minSize(e){this._minSize=e}get minSize(){return this._minSize}set preferredSize(e){this._preferredSize=e}get preferredSize(){return this._preferredSize}}class Ya extends Fe.JT{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new X.Ro(10,10);super(),this._editor=e,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._resizableNode=this._register(new Za),this._contentPosition=null,this._isResizing=!1,this._resizableNode.domNode.style.position="absolute",this._resizableNode.minSize=X.Ro.lift(t),this._resizableNode.layout(t.height,t.width),this._resizableNode.enableSashes(!0,!0,!0,!0),this._register(this._resizableNode.onDidResize((e=>{this._resize(new X.Ro(e.dimension.width,e.dimension.height)),e.done&&(this._isResizing=!1)}))),this._register(this._resizableNode.onDidWillResize((()=>{this._isResizing=!0})))}get isResizing(){return this._isResizing}getDomNode(){return this._resizableNode.domNode}getPosition(){return this._contentPosition}get position(){var e;return(null===(e=this._contentPosition)||void 0===e?void 0:e.position)?We.L.lift(this._contentPosition.position):void 0}_availableVerticalSpaceAbove(e){const t=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(e);if(!t||!i)return;return X.i(t).top+i.top-30}_availableVerticalSpaceBelow(e){const t=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(e);if(!t||!i)return;const o=X.i(t),n=X.D6(t.ownerDocument.body),s=o.top+i.top+i.height;return n.height-s-24}_findPositionPreference(e,t){var i,o;const n=Math.min(null!==(i=this._availableVerticalSpaceBelow(t))&&void 0!==i?i:1/0,e),s=Math.min(null!==(o=this._availableVerticalSpaceAbove(t))&&void 0!==o?o:1/0,e),r=Math.min(Math.max(s,n),e),a=Math.min(e,r);let l;return l=this._editor.getOption(60).above?a<=s?1:2:a<=n?2:1,1===l?this._resizableNode.enableSashes(!0,!0,!1,!1):this._resizableNode.enableSashes(!1,!0,!0,!1),l}_resize(e){this._resizableNode.layout(e.height,e.width)}}var Ja,$a,Xa=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},el=function(e,t){return function(i,o){t(i,o,e)}};const tl=X.$;let il=Ja=class extends Fe.JT{constructor(e,t,i){super(),this._editor=e,this._instantiationService=t,this._keybindingService=i,this._currentResult=null,this._widget=this._register(this._instantiationService.createInstance(rl,this._editor)),this._participants=[];for(const o of Qa.getAll())this._participants.push(this._instantiationService.createInstance(o,this._editor));this._participants.sort(((e,t)=>e.hoverOrdinal-t.hoverOrdinal)),this._computer=new ll(this._editor,this._participants),this._hoverOperation=this._register(new ja(this._editor,this._computer)),this._register(this._hoverOperation.onResult((e=>{if(!this._computer.anchor)return;const t=e.hasLoadingMessage?this._addLoadingMessage(e.value):e.value;this._withResult(new ol(this._computer.anchor,t,e.isComplete))}))),this._register(X.mu(this._widget.getDomNode(),"keydown",(e=>{e.equals(9)&&this.hide()}))),this._register(Lt.RW.onDidChange((()=>{this._widget.position&&this._currentResult&&this._setCurrentResult(this._currentResult)})))}_startShowingOrUpdateHover(e,t,i,o,n){if(!this._widget.position||!this._currentResult)return!!e&&(this._startHoverOperationIfNecessary(e,t,i,o,!1),!0);return this._editor.getOption(60).sticky&&n&&this._widget.isMouseGettingCloser(n.event.posx,n.event.posy)?(e&&this._startHoverOperationIfNecessary(e,t,i,o,!0),!0):e?!(!e||!this._currentResult.anchor.equals(e))||(e.canAdoptVisibleHover(this._currentResult.anchor,this._widget.position)?(this._setCurrentResult(this._currentResult.filter(e)),this._startHoverOperationIfNecessary(e,t,i,o,!1),!0):(this._setCurrentResult(null),this._startHoverOperationIfNecessary(e,t,i,o,!1),!0)):(this._setCurrentResult(null),!1)}_startHoverOperationIfNecessary(e,t,i,o,n){this._computer.anchor&&this._computer.anchor.equals(e)||(this._hoverOperation.cancel(),this._computer.anchor=e,this._computer.shouldFocus=o,this._computer.source=i,this._computer.insistOnKeepingHoverVisible=n,this._hoverOperation.start(t))}_setCurrentResult(e){this._currentResult!==e&&(e&&0===e.messages.length&&(e=null),this._currentResult=e,this._currentResult?this._renderMessages(this._currentResult.anchor,this._currentResult.messages):this._widget.hide())}_addLoadingMessage(e){if(this._computer.anchor)for(const t of this._participants)if(t.createLoadingMessage){const i=t.createLoadingMessage(this._computer.anchor);if(i)return e.slice(0).concat([i])}return e}_withResult(e){if(this._widget.position&&this._currentResult&&this._currentResult.isComplete){if(!e.isComplete)return;if(this._computer.insistOnKeepingHoverVisible&&0===e.messages.length)return}this._setCurrentResult(e)}_renderMessages(e,t){const{showAtPosition:i,showAtSecondaryPosition:o,highlightRange:n}=Ja.computeHoverRanges(this._editor,e.range,t),s=new Fe.SL,r=s.add(new al(this._keybindingService)),a=document.createDocumentFragment();let l=null;const d={fragment:a,statusBar:r,setColorPicker:e=>l=e,onContentsChanged:()=>this._widget.onContentsChanged(),setMinimumDimensions:e=>this._widget.setMinimumDimensions(e),hide:()=>this.hide()};for(const h of this._participants){const e=t.filter((e=>e.owner===h));e.length>0&&s.add(h.renderHoverParts(d,e))}const c=t.some((e=>e.isBeforeContent));if(r.hasContent&&a.appendChild(r.hoverElement),a.hasChildNodes()){if(n){const e=this._editor.createDecorationsCollection();e.set([{range:n,options:Ja._DECORATION_OPTIONS}]),s.add((0,Fe.OF)((()=>{e.clear()})))}this._widget.showAt(a,new sl(e.initialMousePosX,e.initialMousePosY,l,i,o,this._editor.getOption(60).above,this._computer.shouldFocus,this._computer.source,c,s))}else s.dispose()}static computeHoverRanges(e,t,i){let o=1;if(e.hasModel()){const i=e._getViewModel(),n=i.coordinatesConverter,s=n.convertModelRangeToViewRange(t),r=new We.L(s.startLineNumber,i.getLineMinColumn(s.startLineNumber));o=n.convertViewPositionToModelPosition(r).column}const n=t.startLineNumber;let s=t.startColumn,r=i[0].range,a=null;for(const l of i)r=He.e.plusRange(r,l.range),l.range.startLineNumber===n&&l.range.endLineNumber===n&&(s=Math.max(Math.min(s,l.range.startColumn),o)),l.forceShowAtRange&&(a=l.range);return{showAtPosition:a?a.getStartPosition():new We.L(n,t.startColumn),showAtSecondaryPosition:a?a.getStartPosition():new We.L(n,s),highlightRange:r}}showsOrWillShow(e){if(this._widget.isResizing)return!0;const t=[];for(const o of this._participants)if(o.suggestHoverAnchor){const i=o.suggestHoverAnchor(e);i&&t.push(i)}const i=e.target;if(6===i.type&&t.push(new qa(0,i.range,e.event.posx,e.event.posy)),7===i.type){const o=this._editor.getOption(50).typicalHalfwidthCharacterWidth/2;!i.detail.isAfterLines&&"number"===typeof i.detail.horizontalDistanceToText&&i.detail.horizontalDistanceToText<o&&t.push(new qa(0,i.range,e.event.posx,e.event.posy))}return 0===t.length?this._startShowingOrUpdateHover(null,0,0,!1,e):(t.sort(((e,t)=>t.priority-e.priority)),this._startShowingOrUpdateHover(t[0],0,0,!1,e))}startShowingAtRange(e,t,i,o){this._startShowingOrUpdateHover(new qa(0,e,void 0,void 0),t,i,o,null)}containsNode(e){return!!e&&this._widget.getDomNode().contains(e)}focus(){this._widget.focus()}scrollUp(){this._widget.scrollUp()}scrollDown(){this._widget.scrollDown()}scrollLeft(){this._widget.scrollLeft()}scrollRight(){this._widget.scrollRight()}pageUp(){this._widget.pageUp()}pageDown(){this._widget.pageDown()}goToTop(){this._widget.goToTop()}goToBottom(){this._widget.goToBottom()}hide(){this._computer.anchor=null,this._hoverOperation.cancel(),this._setCurrentResult(null)}get isColorPickerVisible(){return this._widget.isColorPickerVisible}get isVisibleFromKeyboard(){return this._widget.isVisibleFromKeyboard}get isVisible(){return this._widget.isVisible}get isFocused(){return this._widget.isFocused}get isResizing(){return this._widget.isResizing}get widget(){return this._widget}};il._DECORATION_OPTIONS=Be.qx.register({description:"content-hover-highlight",className:"hoverHighlight"}),il=Ja=Xa([el(1,ni.TG),el(2,ki.d)],il);class ol{constructor(e,t,i){this.anchor=e,this.messages=t,this.isComplete=i}filter(e){const t=this.messages.filter((t=>t.isValidForHoverAnchor(e)));return t.length===this.messages.length?this:new nl(this,this.anchor,t,this.isComplete)}}class nl extends ol{constructor(e,t,i,o){super(t,i,o),this.original=e}filter(e){return this.original.filter(e)}}class sl{constructor(e,t,i,o,n,s,r,a,l,d){this.initialMousePosX=e,this.initialMousePosY=t,this.colorPicker=i,this.showAtPosition=o,this.showAtSecondaryPosition=n,this.preferAbove=s,this.stoleFocus=r,this.source=a,this.isBeforeContent=l,this.disposables=d,this.closestMouseDistance=void 0}}let rl=$a=class extends Ya{get isColorPickerVisible(){var e;return Boolean(null===(e=this._visibleData)||void 0===e?void 0:e.colorPicker)}get isVisibleFromKeyboard(){var e;return 1===(null===(e=this._visibleData)||void 0===e?void 0:e.source)}get isVisible(){var e;return null!==(e=this._hoverVisibleKey.get())&&void 0!==e&&e}get isFocused(){var e;return null!==(e=this._hoverFocusedKey.get())&&void 0!==e&&e}constructor(e,t,i,o,n){const s=e.getOption(67)+8,r=new X.Ro(150,s);super(e,r),this._configurationService=i,this._accessibilityService=o,this._keybindingService=n,this._hover=this._register(new Ua.c8),this._minimumSize=r,this._hoverVisibleKey=oe.u.hoverVisible.bindTo(t),this._hoverFocusedKey=oe.u.hoverFocused.bindTo(t),X.R3(this._resizableNode.domNode,this._hover.containerDomNode),this._resizableNode.domNode.style.zIndex="50",this._register(this._editor.onDidLayoutChange((()=>{this.isVisible&&this._updateMaxDimensions()}))),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(50)&&this._updateFont()})));const a=this._register(X.go(this._resizableNode.domNode));this._register(a.onDidFocus((()=>{this._hoverFocusedKey.set(!0)}))),this._register(a.onDidBlur((()=>{this._hoverFocusedKey.set(!1)}))),this._setHoverData(void 0),this._editor.addContentWidget(this)}dispose(){var e;super.dispose(),null===(e=this._visibleData)||void 0===e||e.disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return $a.ID}static _applyDimensions(e,t,i){const o="number"===typeof t?"".concat(t,"px"):t,n="number"===typeof i?"".concat(i,"px"):i;e.style.width=o,e.style.height=n}_setContentsDomNodeDimensions(e,t){const i=this._hover.contentsDomNode;return $a._applyDimensions(i,e,t)}_setContainerDomNodeDimensions(e,t){const i=this._hover.containerDomNode;return $a._applyDimensions(i,e,t)}_setHoverWidgetDimensions(e,t){this._setContentsDomNodeDimensions(e,t),this._setContainerDomNodeDimensions(e,t),this._layoutContentWidget()}static _applyMaxDimensions(e,t,i){const o="number"===typeof t?"".concat(t,"px"):t,n="number"===typeof i?"".concat(i,"px"):i;e.style.maxWidth=o,e.style.maxHeight=n}_setHoverWidgetMaxDimensions(e,t){$a._applyMaxDimensions(this._hover.contentsDomNode,e,t),$a._applyMaxDimensions(this._hover.containerDomNode,e,t),this._hover.containerDomNode.style.setProperty("--vscode-hover-maxWidth","number"===typeof e?"".concat(e,"px"):e),this._layoutContentWidget()}_hasHorizontalScrollbar(){const e=this._hover.scrollbar.getScrollDimensions();return e.scrollWidth>e.width}_adjustContentsBottomPadding(){const e=this._hover.contentsDomNode,t="".concat(this._hover.scrollbar.options.horizontalScrollbarSize,"px");e.style.paddingBottom!==t&&(e.style.paddingBottom=t)}_setAdjustedHoverWidgetDimensions(e){this._setHoverWidgetMaxDimensions("none","none");const t=e.width,i=e.height;this._setHoverWidgetDimensions(t,i),this._hasHorizontalScrollbar()&&(this._adjustContentsBottomPadding(),this._setContentsDomNodeDimensions(t,i-10))}_updateResizableNodeMaxDimensions(){var e,t;const i=null!==(e=this._findMaximumRenderingWidth())&&void 0!==e?e:1/0,o=null!==(t=this._findMaximumRenderingHeight())&&void 0!==t?t:1/0;this._resizableNode.maxSize=new X.Ro(i,o),this._setHoverWidgetMaxDimensions(i,o)}_resize(e){var t,i;$a._lastDimensions=new X.Ro(e.width,e.height),this._setAdjustedHoverWidgetDimensions(e),this._resizableNode.layout(e.height,e.width),this._updateResizableNodeMaxDimensions(),this._hover.scrollbar.scanDomNode(),this._editor.layoutContentWidget(this),null===(i=null===(t=this._visibleData)||void 0===t?void 0:t.colorPicker)||void 0===i||i.layout()}_findAvailableSpaceVertically(){var e;const t=null===(e=this._visibleData)||void 0===e?void 0:e.showAtPosition;if(t)return 1===this._positionPreference?this._availableVerticalSpaceAbove(t):this._availableVerticalSpaceBelow(t)}_findMaximumRenderingHeight(){const e=this._findAvailableSpaceVertically();if(!e)return;let t=6;return Array.from(this._hover.contentsDomNode.children).forEach((e=>{t+=e.clientHeight})),this._hasHorizontalScrollbar()&&(t+=10),Math.min(e,t)}_isHoverTextOverflowing(){this._hover.containerDomNode.style.setProperty("--vscode-hover-whiteSpace","nowrap"),this._hover.containerDomNode.style.setProperty("--vscode-hover-sourceWhiteSpace","nowrap");const e=Array.from(this._hover.contentsDomNode.children).some((e=>e.scrollWidth>e.clientWidth));return this._hover.containerDomNode.style.removeProperty("--vscode-hover-whiteSpace"),this._hover.containerDomNode.style.removeProperty("--vscode-hover-sourceWhiteSpace"),e}_findMaximumRenderingWidth(){if(!this._editor||!this._editor.hasModel())return;const e=this._isHoverTextOverflowing(),t="undefined"===typeof this._contentWidth?0:this._contentWidth-2;if(e||this._hover.containerDomNode.clientWidth<t){return X.D6(this._hover.containerDomNode.ownerDocument.body).width-14}return this._hover.containerDomNode.clientWidth+2}isMouseGettingCloser(e,t){if(!this._visibleData)return!1;if("undefined"===typeof this._visibleData.initialMousePosX||"undefined"===typeof this._visibleData.initialMousePosY)return this._visibleData.initialMousePosX=e,this._visibleData.initialMousePosY=t,!1;const i=X.i(this.getDomNode());"undefined"===typeof this._visibleData.closestMouseDistance&&(this._visibleData.closestMouseDistance=dl(this._visibleData.initialMousePosX,this._visibleData.initialMousePosY,i.left,i.top,i.width,i.height));const o=dl(e,t,i.left,i.top,i.width,i.height);return!(o>this._visibleData.closestMouseDistance+4)&&(this._visibleData.closestMouseDistance=Math.min(this._visibleData.closestMouseDistance,o),!0)}_setHoverData(e){var t;null===(t=this._visibleData)||void 0===t||t.disposables.dispose(),this._visibleData=e,this._hoverVisibleKey.set(!!e),this._hover.containerDomNode.classList.toggle("hidden",!e)}_updateFont(){const{fontSize:e,lineHeight:t}=this._editor.getOption(50),i=this._hover.contentsDomNode;i.style.fontSize="".concat(e,"px"),i.style.lineHeight="".concat(t/e);Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach((e=>this._editor.applyFontInfo(e)))}_updateContent(e){const t=this._hover.contentsDomNode;t.style.paddingBottom="",t.textContent="",t.appendChild(e)}_layoutContentWidget(){this._editor.layoutContentWidget(this),this._hover.onContentsChanged()}_updateMaxDimensions(){const e=Math.max(this._editor.getLayoutInfo().height/4,250,$a._lastDimensions.height),t=Math.max(.66*this._editor.getLayoutInfo().width,500,$a._lastDimensions.width);this._setHoverWidgetMaxDimensions(t,e)}_render(e,t){this._setHoverData(t),this._updateFont(),this._updateContent(e),this._updateMaxDimensions(),this.onContentsChanged(),this._editor.render()}getPosition(){var e;return this._visibleData?{position:this._visibleData.showAtPosition,secondaryPosition:this._visibleData.showAtSecondaryPosition,positionAffinity:this._visibleData.isBeforeContent?3:void 0,preference:[null!==(e=this._positionPreference)&&void 0!==e?e:1]}:null}showAt(e,t){var i,o,n,s;if(!this._editor||!this._editor.hasModel())return;this._render(e,t);const r=X.wn(this._hover.containerDomNode),a=t.showAtPosition;this._positionPreference=null!==(i=this._findPositionPreference(r,a))&&void 0!==i?i:1,this.onContentsChanged(),t.stoleFocus&&this._hover.containerDomNode.focus(),null===(o=t.colorPicker)||void 0===o||o.layout();const l=this._hover.containerDomNode.ownerDocument.activeElement===this._hover.containerDomNode&&(0,Ua.uX)(!0===this._configurationService.getValue("accessibility.verbosity.hover")&&this._accessibilityService.isScreenReaderOptimized(),null!==(s=null===(n=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))||void 0===n?void 0:n.getAriaLabel())&&void 0!==s?s:"");l&&(this._hover.contentsDomNode.ariaLabel=this._hover.contentsDomNode.textContent+", "+l)}hide(){if(!this._visibleData)return;const e=this._visibleData.stoleFocus||this._hoverFocusedKey.get();this._setHoverData(void 0),this._resizableNode.maxSize=new X.Ro(1/0,1/0),this._resizableNode.clearSashHoverState(),this._hoverFocusedKey.set(!1),this._editor.layoutContentWidget(this),e&&this._editor.focus()}_removeConstraintsRenderNormally(){const e=this._editor.getLayoutInfo();this._resizableNode.layout(e.height,e.width),this._setHoverWidgetDimensions("auto","auto")}_adjustHoverHeightForScrollbar(e){var t;const i=this._hover.containerDomNode,o=this._hover.contentsDomNode,n=null!==(t=this._findMaximumRenderingHeight())&&void 0!==t?t:1/0;this._setContainerDomNodeDimensions(X.w(i),Math.min(n,e)),this._setContentsDomNodeDimensions(X.w(o),Math.min(n,e-10))}setMinimumDimensions(e){this._minimumSize=new X.Ro(Math.max(this._minimumSize.width,e.width),Math.max(this._minimumSize.height,e.height)),this._updateMinimumWidth()}_updateMinimumWidth(){const e="undefined"===typeof this._contentWidth?this._minimumSize.width:Math.min(this._contentWidth,this._minimumSize.width);this._resizableNode.minSize=new X.Ro(e,this._minimumSize.height)}onContentsChanged(){var e;this._removeConstraintsRenderNormally();const t=this._hover.containerDomNode;let i=X.wn(t),o=X.w(t);if(this._resizableNode.layout(i,o),this._setHoverWidgetDimensions(o,i),i=X.wn(t),o=X.w(t),this._contentWidth=o,this._updateMinimumWidth(),this._resizableNode.layout(i,o),this._hasHorizontalScrollbar()&&(this._adjustContentsBottomPadding(),this._adjustHoverHeightForScrollbar(i)),null===(e=this._visibleData)||void 0===e?void 0:e.showAtPosition){const e=X.wn(this._hover.containerDomNode);this._positionPreference=this._findPositionPreference(e,this._visibleData.showAtPosition)}this._layoutContentWidget()}focus(){this._hover.containerDomNode.focus()}scrollUp(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._editor.getOption(50);this._hover.scrollbar.setScrollPosition({scrollTop:e-t.lineHeight})}scrollDown(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._editor.getOption(50);this._hover.scrollbar.setScrollPosition({scrollTop:e+t.lineHeight})}scrollLeft(){const e=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:e-30})}scrollRight(){const e=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:e+30})}pageUp(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:e-t})}pageDown(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:e+t})}goToTop(){this._hover.scrollbar.setScrollPosition({scrollTop:0})}goToBottom(){this._hover.scrollbar.setScrollPosition({scrollTop:this._hover.scrollbar.getScrollDimensions().scrollHeight})}};rl.ID="editor.contrib.resizableContentHoverWidget",rl._lastDimensions=new X.Ro(0,0),rl=$a=Xa([el(1,ae.i6),el(2,re.Ui),el(3,$s.F),el(4,ki.d)],rl);let al=class extends Fe.JT{get hasContent(){return this._hasContent}constructor(e){super(),this._keybindingService=e,this._hasContent=!1,this.hoverElement=tl("div.hover-row.status-bar"),this.actionsElement=X.R3(this.hoverElement,tl("div.actions"))}addAction(e){const t=this._keybindingService.lookupKeybinding(e.commandId),i=t?t.getLabel():null;return this._hasContent=!0,this._register(Ua.Sr.render(this.actionsElement,e,i))}append(e){const t=X.R3(this.actionsElement,e);return this._hasContent=!0,t}};al=Xa([el(0,ki.d)],al);class ll{get anchor(){return this._anchor}set anchor(e){this._anchor=e}get shouldFocus(){return this._shouldFocus}set shouldFocus(e){this._shouldFocus=e}get source(){return this._source}set source(e){this._source=e}get insistOnKeepingHoverVisible(){return this._insistOnKeepingHoverVisible}set insistOnKeepingHoverVisible(e){this._insistOnKeepingHoverVisible=e}constructor(e,t){this._editor=e,this._participants=t,this._anchor=null,this._shouldFocus=!1,this._source=0,this._insistOnKeepingHoverVisible=!1}static _getLineDecorations(e,t){if(1!==t.type&&!t.supportsMarkerHover)return[];const i=e.getModel(),o=t.range.startLineNumber;if(o>i.getLineCount())return[];const n=i.getLineMaxColumn(o);return e.getLineDecorations(o).filter((e=>{if(e.options.isWholeLine)return!0;const i=e.range.startLineNumber===o?e.range.startColumn:1,s=e.range.endLineNumber===o?e.range.endColumn:n;if(e.options.showIfCollapsed){if(i>t.range.startColumn+1||t.range.endColumn-1>s)return!1}else if(i>t.range.startColumn||t.range.endColumn>s)return!1;return!0}))}computeAsync(e){const t=this._anchor;if(!this._editor.hasModel()||!t)return Oe.Aq.EMPTY;const i=ll._getLineDecorations(this._editor,t);return Oe.Aq.merge(this._participants.map((o=>o.computeAsync?o.computeAsync(t,i,e):Oe.Aq.EMPTY)))}computeSync(){if(!this._editor.hasModel()||!this._anchor)return[];const e=ll._getLineDecorations(this._editor,this._anchor);let t=[];for(const i of this._participants)t=t.concat(i.computeSync(this._anchor,e));return(0,nt.kX)(t)}}function dl(e,t,i,o,n,s){const r=i+n/2,a=o+s/2,l=Math.max(Math.abs(e-r)-n/2,0),d=Math.max(Math.abs(t-a)-s/2,0);return Math.sqrt(l*l+d*d)}const cl=X.$;class hl extends Fe.JT{constructor(e,t,i){super(),this._renderDisposeables=this._register(new Fe.SL),this._editor=e,this._isVisible=!1,this._messages=[],this._hover=this._register(new Ua.c8),this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible),this._markdownRenderer=this._register(new gi.$({editor:this._editor},t,i)),this._computer=new ul(this._editor),this._hoverOperation=this._register(new ja(this._editor,this._computer)),this._register(this._hoverOperation.onResult((e=>{this._withResult(e.value)}))),this._register(this._editor.onDidChangeModelDecorations((()=>this._onModelDecorationsChanged()))),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(50)&&this._updateFont()}))),this._editor.addOverlayWidget(this)}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return hl.ID}getDomNode(){return this._hover.containerDomNode}getPosition(){return null}_updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach((e=>this._editor.applyFontInfo(e)))}_onModelDecorationsChanged(){this._isVisible&&(this._hoverOperation.cancel(),this._hoverOperation.start(0))}startShowingAt(e,t){this._computer.lineNumber===e&&this._computer.lane===t||(this._hoverOperation.cancel(),this.hide(),this._computer.lineNumber=e,this._computer.lane=t,this._hoverOperation.start(0))}hide(){this._computer.lineNumber=-1,this._hoverOperation.cancel(),this._isVisible&&(this._isVisible=!1,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible))}_withResult(e){this._messages=e,this._messages.length>0?this._renderMessages(this._computer.lineNumber,this._messages):this.hide()}_renderMessages(e,t){this._renderDisposeables.clear();const i=document.createDocumentFragment();for(const o of t){const e=cl("div.hover-row.markdown-hover"),t=X.R3(e,cl("div.hover-contents")),n=this._renderDisposeables.add(this._markdownRenderer.render(o.value));t.appendChild(n.element),i.appendChild(e)}this._updateContents(i),this._showAt(e)}_updateContents(e){this._hover.contentsDomNode.textContent="",this._hover.contentsDomNode.appendChild(e),this._updateFont()}_showAt(e){this._isVisible||(this._isVisible=!0,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible));const t=this._editor.getLayoutInfo(),i=this._editor.getTopForLineNumber(e),o=this._editor.getScrollTop(),n=this._editor.getOption(67),s=i-o-(this._hover.containerDomNode.clientHeight-n)/2,r=t.glyphMarginLeft+t.glyphMarginWidth+("lineNo"===this._computer.lane?t.lineNumbersWidth:0);this._hover.containerDomNode.style.left="".concat(r,"px"),this._hover.containerDomNode.style.top="".concat(Math.max(Math.round(s),0),"px")}}hl.ID="editor.contrib.modesGlyphHoverWidget";class ul{get lineNumber(){return this._lineNumber}set lineNumber(e){this._lineNumber=e}get lane(){return this._laneOrLine}set lane(e){this._laneOrLine=e}constructor(e){this._editor=e,this._lineNumber=-1,this._laneOrLine=Ve.U.Center}computeSync(){var e,t;const i=e=>({value:e}),o=this._editor.getLineDecorations(this._lineNumber),n=[],s="lineNo"===this._laneOrLine;if(!o)return n;for(const r of o){const o=null!==(t=null===(e=r.options.glyphMargin)||void 0===e?void 0:e.position)&&void 0!==t?t:Ve.U.Center;if(!s&&o!==this._laneOrLine)continue;const a=s?r.options.lineNumberHoverMessage:r.options.glyphMarginHoverMessage;a&&!(0,Ne.CP)(a)&&n.push(...(0,nt._2)(a).map(i))}return n}}class gl{constructor(e,t,i){this.provider=e,this.hover=t,this.ordinal=i}}function pl(e,t,i,o){const n=e.ordered(t).map(((e,n)=>async function(e,t,i,o,n){try{const s=await Promise.resolve(e.provideHover(i,o,n));if(s&&function(e){const t="undefined"!==typeof e.range,i="undefined"!==typeof e.contents&&e.contents&&e.contents.length>0;return t&&i}(s))return new gl(e,s,t)}catch(s){(0,Ji.Cp)(s)}}(e,n,t,i,o)));return Oe.Aq.fromPromises(n).coalesce()}(0,ee.sb)("_executeHoverProvider",((e,t,i)=>function(e,t,i,o){return pl(e,t,i,o).map((e=>e.hover)).toPromise()}(e.get(kt.p).hoverProvider,t,i,Yi.T.None)));var ml=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},_l=function(e,t){return function(i,o){t(i,o,e)}};const fl=X.$;class vl{constructor(e,t,i,o,n){this.owner=e,this.range=t,this.contents=i,this.isBeforeContent=o,this.ordinal=n}isValidForHoverAnchor(e){return 1===e.type&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}let bl=class{constructor(e,t,i,o,n){this._editor=e,this._languageService=t,this._openerService=i,this._configurationService=o,this._languageFeaturesService=n,this.hoverOrdinal=3}createLoadingMessage(e){return new vl(this,e.range,[(new Ne.W5).appendText(ne.NC("modesContentHover.loading","Loading..."))],!1,2e3)}computeSync(e,t){if(!this._editor.hasModel()||1!==e.type)return[];const i=this._editor.getModel(),o=e.range.startLineNumber,n=i.getLineMaxColumn(o),s=[];let r=1e3;const a=i.getLineLength(o),l=i.getLanguageIdAtPosition(e.range.startLineNumber,e.range.startColumn),d=this._editor.getOption(117),c=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:l});let h=!1;d>=0&&a>d&&e.range.startColumn>=d&&(h=!0,s.push(new vl(this,e.range,[{value:ne.NC("stopped rendering","Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.")}],!1,r++))),!h&&"number"===typeof c&&a>=c&&s.push(new vl(this,e.range,[{value:ne.NC("too many characters","Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.")}],!1,r++));let u=!1;for(const g of t){const t=g.range.startLineNumber===o?g.range.startColumn:1,i=g.range.endLineNumber===o?g.range.endColumn:n,a=g.options.hoverMessage;if(!a||(0,Ne.CP)(a))continue;g.options.beforeContentClassName&&(u=!0);const l=new He.e(e.range.startLineNumber,t,e.range.startLineNumber,i);s.push(new vl(this,l,(0,nt._2)(a),u,r++))}return s}computeAsync(e,t,i){if(!this._editor.hasModel()||1!==e.type)return Oe.Aq.EMPTY;const o=this._editor.getModel();if(!this._languageFeaturesService.hoverProvider.has(o))return Oe.Aq.EMPTY;const n=new We.L(e.range.startLineNumber,e.range.startColumn);return pl(this._languageFeaturesService.hoverProvider,o,n,i).filter((e=>!(0,Ne.CP)(e.hover.contents))).map((t=>{const i=t.hover.range?He.e.lift(t.hover.range):e.range;return new vl(this,i,t.hover.contents,!1,t.ordinal)}))}renderHoverParts(e,t){return Cl(e,t,this._editor,this._languageService,this._openerService)}};function Cl(e,t,i,o,n){t.sort(((e,t)=>e.ordinal-t.ordinal));const s=new Fe.SL;for(const r of t)for(const t of r.contents){if((0,Ne.CP)(t))continue;const r=fl("div.hover-row.markdown-hover"),a=X.R3(r,fl("div.hover-contents")),l=s.add(new gi.$({editor:i},o,n));s.add(l.onDidRenderAsync((()=>{a.className="hover-contents code-hover-contents",e.onContentsChanged()})));const d=s.add(l.render(t));a.appendChild(d.element),e.fragment.appendChild(r)}return s}bl=ml([_l(1,Us.O),_l(2,pi.v),_l(3,re.Ui),_l(4,kt.p)],bl);var Sl=i(11974),yl=i(44713),wl=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},xl=function(e,t){return function(i,o){t(i,o,e)}};class Nl{constructor(e,t,i){this.marker=e,this.index=t,this.total=i}}let Ll=class{constructor(e,t,i){this._markerService=t,this._configService=i,this._onDidChange=new ui.Q5,this.onDidChange=this._onDidChange.event,this._dispoables=new Fe.SL,this._markers=[],this._nextIdx=-1,_t.o.isUri(e)?this._resourceFilter=t=>t.toString()===e.toString():e&&(this._resourceFilter=e);const o=this._configService.getValue("problems.sortOrder"),n=(e,t)=>{let i=(0,ii.qu)(e.resource.toString(),t.resource.toString());return 0===i&&(i="position"===o?He.e.compareRangesUsingStarts(e,t)||on.ZL.compare(e.severity,t.severity):on.ZL.compare(e.severity,t.severity)||He.e.compareRangesUsingStarts(e,t)),i},s=()=>{this._markers=this._markerService.read({resource:_t.o.isUri(e)?e:void 0,severities:on.ZL.Error|on.ZL.Warning|on.ZL.Info}),"function"===typeof e&&(this._markers=this._markers.filter((e=>this._resourceFilter(e.resource)))),this._markers.sort(n)};s(),this._dispoables.add(t.onMarkerChanged((e=>{this._resourceFilter&&!e.some((e=>this._resourceFilter(e)))||(s(),this._nextIdx=-1,this._onDidChange.fire())})))}dispose(){this._dispoables.dispose(),this._onDidChange.dispose()}matches(e){return!this._resourceFilter&&!e||!(!this._resourceFilter||!e)&&this._resourceFilter(e)}get selected(){const e=this._markers[this._nextIdx];return e&&new Nl(e,this._nextIdx+1,this._markers.length)}_initIdx(e,t,i){let o=!1,n=this._markers.findIndex((t=>t.resource.toString()===e.uri.toString()));n<0&&(n=(0,nt.ry)(this._markers,{resource:e.uri},((e,t)=>(0,ii.qu)(e.resource.toString(),t.resource.toString()))),n<0&&(n=~n));for(let s=n;s<this._markers.length;s++){let i=He.e.lift(this._markers[s]);if(i.isEmpty()){const t=e.getWordAtPosition(i.getStartPosition());t&&(i=new He.e(i.startLineNumber,t.startColumn,i.startLineNumber,t.endColumn))}if(t&&(i.containsPosition(t)||t.isBeforeOrEqual(i.getStartPosition()))){this._nextIdx=s,o=!0;break}if(this._markers[s].resource.toString()!==e.uri.toString())break}o||(this._nextIdx=i?0:this._markers.length-1),this._nextIdx<0&&(this._nextIdx=this._markers.length-1)}resetIndex(){this._nextIdx=-1}move(e,t,i){if(0===this._markers.length)return!1;const o=this._nextIdx;return-1===this._nextIdx?this._initIdx(t,i,e):e?this._nextIdx=(this._nextIdx+1)%this._markers.length:e||(this._nextIdx=(this._nextIdx-1+this._markers.length)%this._markers.length),o!==this._nextIdx}find(e,t){let i=this._markers.findIndex((t=>t.resource.toString()===e.toString()));if(!(i<0))for(;i<this._markers.length;i++)if(He.e.containsPosition(this._markers[i],t))return new Nl(this._markers[i],i+1,this._markers.length)}};Ll=wl([xl(1,on.lT),xl(2,re.Ui)],Ll);const kl=(0,ni.yh)("IMarkerNavigationService");let Dl=class{constructor(e,t){this._markerService=e,this._configService=t,this._provider=new yl.S}getMarkerList(e){for(const t of this._provider){const i=t.getMarkerList(e);if(i)return i}return new Ll(e,this._markerService,this._configService)}};Dl=wl([xl(0,on.lT),xl(1,re.Ui)],Dl),(0,Zo.z)(kl,Dl,1);var Il,Rl=i(66561),Pl=i(6225);!function(e){e.className=function(e){switch(e){case Pl.Z.Ignore:return"severity-ignore "+oi.k.asClassName($.l.info);case Pl.Z.Info:return oi.k.asClassName($.l.info);case Pl.Z.Warning:return oi.k.asClassName($.l.warning);case Pl.Z.Error:return oi.k.asClassName($.l.error);default:return""}}}(Il||(Il={}));var Ml,Tl=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},El=function(e,t){return function(i,o){t(i,o,e)}};class Al{constructor(e,t,i,o,n){this._openerService=o,this._labelService=n,this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=new Fe.SL,this._editor=t;const s=document.createElement("div");s.className="descriptioncontainer",this._messageBlock=document.createElement("div"),this._messageBlock.classList.add("message"),this._messageBlock.setAttribute("aria-live","assertive"),this._messageBlock.setAttribute("role","alert"),s.appendChild(this._messageBlock),this._relatedBlock=document.createElement("div"),s.appendChild(this._relatedBlock),this._disposables.add(X.mu(this._relatedBlock,"click",(e=>{e.preventDefault();const t=this._relatedDiagnostics.get(e.target);t&&i(t)}))),this._scrollable=new Rl.NB(s,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:6,verticalScrollbarSize:6}),e.appendChild(this._scrollable.getDomNode()),this._disposables.add(this._scrollable.onScroll((e=>{s.style.left="-".concat(e.scrollLeft,"px"),s.style.top="-".concat(e.scrollTop,"px")}))),this._disposables.add(this._scrollable)}dispose(){(0,Fe.B9)(this._disposables)}update(e){const{source:t,message:i,relatedInformation:o,code:n}=e;let s=((null===t||void 0===t?void 0:t.length)||0)+"()".length;n&&(s+="string"===typeof n?n.length:n.value.length);const r=(0,ii.uq)(i);this._lines=r.length,this._longestLineLength=0;for(const h of r)this._longestLineLength=Math.max(h.length+s,this._longestLineLength);X.PO(this._messageBlock),this._messageBlock.setAttribute("aria-label",this.getAriaLabel(e)),this._editor.applyFontInfo(this._messageBlock);let a=this._messageBlock;for(const h of r)a=document.createElement("div"),a.innerText=h,""===h&&(a.style.height=this._messageBlock.style.lineHeight),this._messageBlock.appendChild(a);if(t||n){const e=document.createElement("span");if(e.classList.add("details"),a.appendChild(e),t){const i=document.createElement("span");i.innerText=t,i.classList.add("source"),e.appendChild(i)}if(n)if("string"===typeof n){const t=document.createElement("span");t.innerText="(".concat(n,")"),t.classList.add("code"),e.appendChild(t)}else{this._codeLink=X.$("a.code-link"),this._codeLink.setAttribute("href","".concat(n.target.toString())),this._codeLink.onclick=e=>{this._openerService.open(n.target,{allowCommands:!0}),e.preventDefault(),e.stopPropagation()};X.R3(this._codeLink,X.$("span")).innerText=n.value,e.appendChild(this._codeLink)}}if(X.PO(this._relatedBlock),this._editor.applyFontInfo(this._relatedBlock),(0,nt.Of)(o)){const e=this._relatedBlock.appendChild(document.createElement("div"));e.style.paddingTop="".concat(Math.floor(.66*this._editor.getOption(67)),"px"),this._lines+=1;for(const t of o){const i=document.createElement("div"),o=document.createElement("a");o.classList.add("filename"),o.innerText="".concat(this._labelService.getUriBasenameLabel(t.resource),"(").concat(t.startLineNumber,", ").concat(t.startColumn,"): "),o.title=this._labelService.getUriLabel(t.resource),this._relatedDiagnostics.set(o,t);const n=document.createElement("span");n.innerText=t.message,i.appendChild(o),i.appendChild(n),this._lines+=1,e.appendChild(i)}}const l=this._editor.getOption(50),d=Math.ceil(l.typicalFullwidthCharacterWidth*this._longestLineLength*.75),c=l.lineHeight*this._lines;this._scrollable.setScrollDimensions({scrollWidth:d,scrollHeight:c})}layout(e,t){this._scrollable.getDomNode().style.height="".concat(e,"px"),this._scrollable.getDomNode().style.width="".concat(t,"px"),this._scrollable.setScrollDimensions({width:t,height:e})}getHeightInLines(){return Math.min(17,this._lines)}getAriaLabel(e){let t="";switch(e.severity){case on.ZL.Error:t=ne.NC("Error","Error");break;case on.ZL.Warning:t=ne.NC("Warning","Warning");break;case on.ZL.Info:t=ne.NC("Info","Info");break;case on.ZL.Hint:t=ne.NC("Hint","Hint")}let i=ne.NC("marker aria","{0} at {1}. ",t,e.startLineNumber+":"+e.startColumn);const o=this._editor.getModel();if(o&&e.startLineNumber<=o.getLineCount()&&e.startLineNumber>=1){const t=o.getLineContent(e.startLineNumber);i="".concat(t,", ").concat(i)}return i}}let Ol=Ml=class extends fr{constructor(e,t,i,o,n,s,r){super(e,{showArrow:!0,showFrame:!0,isAccessible:!0,frameWidth:1},n),this._themeService=t,this._openerService=i,this._menuService=o,this._contextKeyService=s,this._labelService=r,this._callOnDispose=new Fe.SL,this._onDidSelectRelatedInformation=new ui.Q5,this.onDidSelectRelatedInformation=this._onDidSelectRelatedInformation.event,this._severity=on.ZL.Warning,this._backgroundColor=Zn.Il.white,this._applyTheme(t.getColorTheme()),this._callOnDispose.add(t.onDidColorThemeChange(this._applyTheme.bind(this))),this.create()}_applyTheme(e){this._backgroundColor=e.getColor(ql);let t=Vl,i=Bl;this._severity===on.ZL.Warning?(t=zl,i=Ul):this._severity===on.ZL.Info&&(t=Kl,i=jl);const o=e.getColor(t),n=e.getColor(i);this.style({arrowColor:o,frameColor:o,headerBackgroundColor:n,primaryHeadingColor:e.getColor(br),secondaryHeadingColor:e.getColor(Cr)})}_applyStyles(){this._parentContainer&&(this._parentContainer.style.backgroundColor=this._backgroundColor?this._backgroundColor.toString():""),super._applyStyles()}dispose(){this._callOnDispose.dispose(),super.dispose()}_fillHead(e){super._fillHead(e),this._disposables.add(this._actionbarWidget.actionRunner.onWillRun((e=>this.editor.focus())));const t=[],i=this._menuService.createMenu(Ml.TitleMenu,this._contextKeyService);(0,cr.vr)(i,void 0,t),this._actionbarWidget.push(t,{label:!1,icon:!0,index:0}),i.dispose()}_fillTitleIcon(e){this._icon=X.R3(e,X.$(""))}_fillBody(e){this._parentContainer=e,e.classList.add("marker-widget"),this._parentContainer.tabIndex=0,this._parentContainer.setAttribute("role","tooltip"),this._container=document.createElement("div"),e.appendChild(this._container),this._message=new Al(this._container,this.editor,(e=>this._onDidSelectRelatedInformation.fire(e)),this._openerService,this._labelService),this._disposables.add(this._message)}show(){throw new Error("call showAtMarker")}showAtMarker(e,t,i){this._container.classList.remove("stale"),this._message.update(e),this._severity=e.severity,this._applyTheme(this._themeService.getColorTheme());const o=He.e.lift(e),n=this.editor.getPosition(),s=n&&o.containsPosition(n)?n:o.getStartPosition();super.show(s,this.computeRequiredHeight());const r=this.editor.getModel();if(r){const e=i>1?ne.NC("problems","{0} of {1} problems",t,i):ne.NC("change","{0} of {1} problem",t,i);this.setTitle((0,It.EZ)(r.uri),e)}this._icon.className="codicon ".concat(Il.className(on.ZL.toSeverity(this._severity))),this.editor.revealPositionNearTop(s,0),this.editor.focus()}updateMarker(e){this._container.classList.remove("stale"),this._message.update(e)}showStale(){this._container.classList.add("stale"),this._relayout()}_doLayoutBody(e,t){super._doLayoutBody(e,t),this._heightInPixel=e,this._message.layout(e,t),this._container.style.height="".concat(e,"px")}_onWidth(e){this._message.layout(this._heightInPixel,e)}_relayout(){super._relayout(this.computeRequiredHeight())}computeRequiredHeight(){return 3+this._message.getHeightInLines()}};Ol.TitleMenu=new se.eH("gotoErrorTitleMenu"),Ol=Ml=Tl([El(1,Ue.XE),El(2,pi.v),El(3,se.co),El(4,ni.TG),El(5,ae.i6),El(6,Wr.e)],Ol);const Fl=(0,ze.kwl)(ze.lXJ,ze.b6y),Wl=(0,ze.kwl)(ze.uoC,ze.pW3),Hl=(0,ze.kwl)(ze.c63,ze.T83),Vl=(0,ze.P6G)("editorMarkerNavigationError.background",{dark:Fl,light:Fl,hcDark:ze.lRK,hcLight:ze.lRK},ne.NC("editorMarkerNavigationError","Editor marker navigation widget error color.")),Bl=(0,ze.P6G)("editorMarkerNavigationError.headerBackground",{dark:(0,ze.ZnX)(Vl,.1),light:(0,ze.ZnX)(Vl,.1),hcDark:null,hcLight:null},ne.NC("editorMarkerNavigationErrorHeaderBackground","Editor marker navigation widget error heading background.")),zl=(0,ze.P6G)("editorMarkerNavigationWarning.background",{dark:Wl,light:Wl,hcDark:ze.lRK,hcLight:ze.lRK},ne.NC("editorMarkerNavigationWarning","Editor marker navigation widget warning color.")),Ul=(0,ze.P6G)("editorMarkerNavigationWarning.headerBackground",{dark:(0,ze.ZnX)(zl,.1),light:(0,ze.ZnX)(zl,.1),hcDark:"#0C141F",hcLight:(0,ze.ZnX)(zl,.2)},ne.NC("editorMarkerNavigationWarningBackground","Editor marker navigation widget warning heading background.")),Kl=(0,ze.P6G)("editorMarkerNavigationInfo.background",{dark:Hl,light:Hl,hcDark:ze.lRK,hcLight:ze.lRK},ne.NC("editorMarkerNavigationInfo","Editor marker navigation widget info color.")),jl=(0,ze.P6G)("editorMarkerNavigationInfo.headerBackground",{dark:(0,ze.ZnX)(Kl,.1),light:(0,ze.ZnX)(Kl,.1),hcDark:null,hcLight:null},ne.NC("editorMarkerNavigationInfoHeaderBackground","Editor marker navigation widget info heading background.")),ql=(0,ze.P6G)("editorMarkerNavigation.background",{dark:ze.cvW,light:ze.cvW,hcDark:ze.cvW,hcLight:ze.cvW},ne.NC("editorMarkerNavigationBackground","Editor marker navigation widget background."));var Gl,Ql=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Zl=function(e,t){return function(i,o){t(i,o,e)}};let Yl=Gl=class{static get(e){return e.getContribution(Gl.ID)}constructor(e,t,i,o,n){this._markerNavigationService=t,this._contextKeyService=i,this._editorService=o,this._instantiationService=n,this._sessionDispoables=new Fe.SL,this._editor=e,this._widgetVisible=ed.bindTo(this._contextKeyService)}dispose(){this._cleanUp(),this._sessionDispoables.dispose()}_cleanUp(){this._widgetVisible.reset(),this._sessionDispoables.clear(),this._widget=void 0,this._model=void 0}_getOrCreateModel(e){if(this._model&&this._model.matches(e))return this._model;let t=!1;return this._model&&(t=!0,this._cleanUp()),this._model=this._markerNavigationService.getMarkerList(e),t&&this._model.move(!0,this._editor.getModel(),this._editor.getPosition()),this._widget=this._instantiationService.createInstance(Ol,this._editor),this._widget.onDidClose((()=>this.close()),this,this._sessionDispoables),this._widgetVisible.set(!0),this._sessionDispoables.add(this._model),this._sessionDispoables.add(this._widget),this._sessionDispoables.add(this._editor.onDidChangeCursorPosition((e=>{var t,i,o;(null===(t=this._model)||void 0===t?void 0:t.selected)&&He.e.containsPosition(null===(i=this._model)||void 0===i?void 0:i.selected.marker,e.position)||null===(o=this._model)||void 0===o||o.resetIndex()}))),this._sessionDispoables.add(this._model.onDidChange((()=>{if(!this._widget||!this._widget.position||!this._model)return;const e=this._model.find(this._editor.getModel().uri,this._widget.position);e?this._widget.updateMarker(e.marker):this._widget.showStale()}))),this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation((e=>{this._editorService.openCodeEditor({resource:e.resource,options:{pinned:!0,revealIfOpened:!0,selection:He.e.lift(e).collapseToStart()}},this._editor),this.close(!1)}))),this._sessionDispoables.add(this._editor.onDidChangeModel((()=>this._cleanUp()))),this._model}close(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._cleanUp(),e&&this._editor.focus()}showAtMarker(e){if(this._editor.hasModel()){const t=this._getOrCreateModel(this._editor.getModel().uri);t.resetIndex(),t.move(!0,this._editor.getModel(),new We.L(e.startLineNumber,e.startColumn)),t.selected&&this._widget.showAtMarker(t.selected.marker,t.selected.index,t.selected.total)}}async nagivate(e,t){var i,o;if(this._editor.hasModel()){const n=this._getOrCreateModel(t?void 0:this._editor.getModel().uri);if(n.move(e,this._editor.getModel(),this._editor.getPosition()),!n.selected)return;if(n.selected.marker.resource.toString()!==this._editor.getModel().uri.toString()){this._cleanUp();const s=await this._editorService.openCodeEditor({resource:n.selected.marker.resource,options:{pinned:!1,revealIfOpened:!0,selectionRevealType:2,selection:n.selected.marker}},this._editor);s&&(null===(i=Gl.get(s))||void 0===i||i.close(),null===(o=Gl.get(s))||void 0===o||o.nagivate(e,t))}else this._widget.showAtMarker(n.selected.marker,n.selected.index,n.selected.total)}}};Yl.ID="editor.contrib.markerController",Yl=Gl=Ql([Zl(1,kl),Zl(2,ae.i6),Zl(3,te.$),Zl(4,ni.TG)],Yl);class Jl extends ee.R6{constructor(e,t,i){super(i),this._next=e,this._multiFile=t}async run(e,t){var i;t.hasModel()&&(null===(i=Yl.get(t))||void 0===i||i.nagivate(this._next,this._multiFile))}}class $l extends Jl{constructor(){super(!0,!1,{id:$l.ID,label:$l.LABEL,alias:"Go to Next Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:oe.u.focus,primary:578,weight:100},menuOpts:{menuId:Ol.TitleMenu,title:$l.LABEL,icon:(0,ys.q5)("marker-navigation-next",$.l.arrowDown,ne.NC("nextMarkerIcon","Icon for goto next marker.")),group:"navigation",order:1}})}}$l.ID="editor.action.marker.next",$l.LABEL=ne.NC("markerAction.next.label","Go to Next Problem (Error, Warning, Info)");class Xl extends Jl{constructor(){super(!1,!1,{id:Xl.ID,label:Xl.LABEL,alias:"Go to Previous Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:oe.u.focus,primary:1602,weight:100},menuOpts:{menuId:Ol.TitleMenu,title:Xl.LABEL,icon:(0,ys.q5)("marker-navigation-previous",$.l.arrowUp,ne.NC("previousMarkerIcon","Icon for goto previous marker.")),group:"navigation",order:2}})}}Xl.ID="editor.action.marker.prev",Xl.LABEL=ne.NC("markerAction.previous.label","Go to Previous Problem (Error, Warning, Info)");(0,ee._K)(Yl.ID,Yl,4),(0,ee.Qr)($l),(0,ee.Qr)(Xl),(0,ee.Qr)(class extends Jl{constructor(){super(!0,!0,{id:"editor.action.marker.nextInFiles",label:ne.NC("markerAction.nextInFiles.label","Go to Next Problem in Files (Error, Warning, Info)"),alias:"Go to Next Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:oe.u.focus,primary:66,weight:100},menuOpts:{menuId:se.eH.MenubarGoMenu,title:ne.NC({key:"miGotoNextProblem",comment:["&& denotes a mnemonic"]},"Next &&Problem"),group:"6_problem_nav",order:1}})}}),(0,ee.Qr)(class extends Jl{constructor(){super(!1,!0,{id:"editor.action.marker.prevInFiles",label:ne.NC("markerAction.previousInFiles.label","Go to Previous Problem in Files (Error, Warning, Info)"),alias:"Go to Previous Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:oe.u.focus,primary:1090,weight:100},menuOpts:{menuId:se.eH.MenubarGoMenu,title:ne.NC({key:"miGotoPreviousProblem",comment:["&& denotes a mnemonic"]},"Previous &&Problem"),group:"6_problem_nav",order:2}})}});const ed=new ae.uy("markersNavigationVisible",!1),td=ee._l.bindToContribution(Yl.get);(0,ee.fK)(new td({id:"closeMarkersNavigation",precondition:ed,handler:e=>e.close(),kbOpts:{weight:150,kbExpr:oe.u.focus,primary:9,secondary:[1033]}}));var id=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},od=function(e,t){return function(i,o){t(i,o,e)}};const nd=X.$;class sd{constructor(e,t,i){this.owner=e,this.range=t,this.marker=i}isValidForHoverAnchor(e){return 1===e.type&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}const rd={type:1,filter:{include:to.QuickFix},triggerAction:io.QuickFixHover};let ad=class{constructor(e,t,i,o){this._editor=e,this._markerDecorationsService=t,this._openerService=i,this._languageFeaturesService=o,this.hoverOrdinal=1,this.recentMarkerCodeActionsInfo=void 0}computeSync(e,t){if(!this._editor.hasModel()||1!==e.type&&!e.supportsMarkerHover)return[];const i=this._editor.getModel(),o=e.range.startLineNumber,n=i.getLineMaxColumn(o),s=[];for(const r of t){const t=r.range.startLineNumber===o?r.range.startColumn:1,a=r.range.endLineNumber===o?r.range.endColumn:n,l=this._markerDecorationsService.getMarker(i.uri,r);if(!l)continue;const d=new He.e(e.range.startLineNumber,t,e.range.startLineNumber,a);s.push(new sd(this,d,l))}return s}renderHoverParts(e,t){if(!t.length)return Fe.JT.None;const i=new Fe.SL;t.forEach((t=>e.fragment.appendChild(this.renderMarkerHover(t,i))));const o=1===t.length?t[0]:t.sort(((e,t)=>on.ZL.compare(e.marker.severity,t.marker.severity)))[0];return this.renderMarkerStatusbar(e,o,i),i}renderMarkerHover(e,t){const i=nd("div.hover-row"),o=X.R3(i,nd("div.marker.hover-contents")),{source:n,message:s,code:r,relatedInformation:a}=e.marker;this._editor.applyFontInfo(o);const l=X.R3(o,nd("span"));if(l.style.whiteSpace="pre-wrap",l.innerText=s,n||r)if(r&&"string"!==typeof r){const e=nd("span");if(n){X.R3(e,nd("span")).innerText=n}const i=X.R3(e,nd("a.code-link"));i.setAttribute("href",r.target.toString()),t.add(X.nm(i,"click",(e=>{this._openerService.open(r.target,{allowCommands:!0}),e.preventDefault(),e.stopPropagation()})));X.R3(i,nd("span")).innerText=r.value;const s=X.R3(o,e);s.style.opacity="0.6",s.style.paddingLeft="6px"}else{const e=X.R3(o,nd("span"));e.style.opacity="0.6",e.style.paddingLeft="6px",e.innerText=n&&r?"".concat(n,"(").concat(r,")"):n||"(".concat(r,")")}if((0,nt.Of)(a))for(const{message:d,resource:c,startLineNumber:h,startColumn:u}of a){const e=X.R3(o,nd("div"));e.style.marginTop="8px";const i=X.R3(e,nd("a"));i.innerText="".concat((0,It.EZ)(c),"(").concat(h,", ").concat(u,"): "),i.style.cursor="pointer",t.add(X.nm(i,"click",(e=>{e.stopPropagation(),e.preventDefault(),this._openerService&&this._openerService.open(c,{fromUserGesture:!0,editorOptions:{selection:{startLineNumber:h,startColumn:u}}}).catch(Ji.dL)})));const n=X.R3(e,nd("span"));n.innerText=d,this._editor.applyFontInfo(n)}return i}renderMarkerStatusbar(e,t,i){if(t.marker.severity===on.ZL.Error||t.marker.severity===on.ZL.Warning||t.marker.severity===on.ZL.Info){const i=Yl.get(this._editor);i&&e.statusBar.addAction({label:ne.NC("view problem","View Problem"),commandId:$l.ID,run:()=>{e.hide(),i.showAtMarker(t.marker),this._editor.focus()}})}if(!this._editor.getOption(91)){const o=e.statusBar.append(nd("div"));this.recentMarkerCodeActionsInfo&&(on.H0.makeKey(this.recentMarkerCodeActionsInfo.marker)===on.H0.makeKey(t.marker)?this.recentMarkerCodeActionsInfo.hasCodeActions||(o.textContent=ne.NC("noQuickFixes","No quick fixes available")):this.recentMarkerCodeActionsInfo=void 0);const n=this.recentMarkerCodeActionsInfo&&!this.recentMarkerCodeActionsInfo.hasCodeActions?Fe.JT.None:(0,Oe.Vg)((()=>o.textContent=ne.NC("checkingForQuickFixes","Checking for quick fixes...")),200,i);o.textContent||(o.textContent=String.fromCharCode(160));const s=this.getCodeActions(t.marker);i.add((0,Fe.OF)((()=>s.cancel()))),s.then((s=>{if(n.dispose(),this.recentMarkerCodeActionsInfo={marker:t.marker,hasCodeActions:s.validActions.length>0},!this.recentMarkerCodeActionsInfo.hasCodeActions)return s.dispose(),void(o.textContent=ne.NC("noQuickFixes","No quick fixes available"));o.style.display="none";let r=!1;i.add((0,Fe.OF)((()=>{r||s.dispose()}))),e.statusBar.addAction({label:ne.NC("quick fixes","Quick Fix..."),commandId:ao,run:t=>{r=!0;const i=mn.get(this._editor),o=X.i(t);e.hide(),null===i||void 0===i||i.showCodeActions(rd,s,{x:o.left,y:o.top,width:o.width,height:o.height})}})}),Ji.dL)}}getCodeActions(e){return(0,Oe.PG)((t=>_o(this._languageFeaturesService.codeActionProvider,this._editor.getModel(),new He.e(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),rd,yi.Ex.None,t)))}};ad=id([od(1,Sl.i),od(2,pi.v),od(3,kt.p)],ad);var ld=i(66193),dd=i(59130);const cd="editor.action.inlineSuggest.commit",hd="editor.action.inlineSuggest.showPrevious",ud="editor.action.inlineSuggest.showNext";var gd,pd=i(60548),md=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},_d=function(e,t){return function(i,o){t(i,o,e)}};let fd=class extends Fe.JT{constructor(e,t,i){super(),this.editor=e,this.model=t,this.instantiationService=i,this.alwaysShowToolbar=(0,dd.rD)(this.editor.onDidChangeConfiguration,(()=>"always"===this.editor.getOption(62).showToolbar)),this.sessionPosition=void 0,this.position=(0,dd.nK)(this,(e=>{var t,i,o;const n=null===(t=this.model.read(e))||void 0===t?void 0:t.primaryGhostText.read(e);if(!this.alwaysShowToolbar.read(e)||!n||0===n.parts.length)return this.sessionPosition=void 0,null;const s=n.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==n.lineNumber&&(this.sessionPosition=void 0);const r=new We.L(n.lineNumber,Math.min(s,null!==(o=null===(i=this.sessionPosition)||void 0===i?void 0:i.column)&&void 0!==o?o:Number.MAX_SAFE_INTEGER));return this.sessionPosition=r,r})),this._register((0,dd.gp)(((t,i)=>{const o=this.model.read(t);if(!o||!this.alwaysShowToolbar.read(t))return;const n=i.add(this.instantiationService.createInstance(Cd,this.editor,!0,this.position,o.selectedInlineCompletionIndex,o.inlineCompletionsCount,o.selectedInlineCompletion.map((e=>{var t;return null!==(t=null===e||void 0===e?void 0:e.inlineCompletion.source.inlineCompletions.commands)&&void 0!==t?t:[]}))));e.addContentWidget(n),i.add((0,Fe.OF)((()=>e.removeContentWidget(n)))),i.add((0,dd.EH)((e=>{this.position.read(e)&&o.lastTriggerKind.read(e)!==Lt.bw.Explicit&&o.triggerExplicitly()})))})))}};fd=md([_d(2,ni.TG)],fd);const vd=(0,ys.q5)("inline-suggestion-hints-next",$.l.chevronRight,(0,ne.NC)("parameterHintsNextIcon","Icon for show next parameter hint.")),bd=(0,ys.q5)("inline-suggestion-hints-previous",$.l.chevronLeft,(0,ne.NC)("parameterHintsPreviousIcon","Icon for show previous parameter hint."));let Cd=gd=class extends Fe.JT{static get dropDownVisible(){return this._dropDownVisible}createCommandAction(e,t,i){const o=new Ni.aU(e,t,i,!0,(()=>this._commandService.executeCommand(e))),n=this.keybindingService.lookupKeybinding(e,this._contextKeyService);let s=t;return n&&(s=(0,ne.NC)({key:"content",comment:["A label","A keybinding"]},"{0} ({1})",t,n.getLabel())),o.tooltip=s,o}constructor(e,t,i,o,n,s,r,a,l,d,c){super(),this.editor=e,this.withBorder=t,this._position=i,this._currentSuggestionIdx=o,this._suggestionCount=n,this._extraCommands=s,this._commandService=r,this.keybindingService=l,this._contextKeyService=d,this._menuService=c,this.id="InlineSuggestionHintsContentWidget".concat(gd.id++),this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.nodes=(0,X.h)("div.inlineSuggestionsHints",{className:this.withBorder?".withBorder":""},[(0,X.h)("div@toolBar")]),this.previousAction=this.createCommandAction(hd,(0,ne.NC)("previous","Previous"),oi.k.asClassName(bd)),this.availableSuggestionCountAction=new Ni.aU("inlineSuggestionHints.availableSuggestionCount","",void 0,!1),this.nextAction=this.createCommandAction(ud,(0,ne.NC)("next","Next"),oi.k.asClassName(vd)),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(se.eH.InlineCompletionsActions,this._contextKeyService)),this.clearAvailableSuggestionCountLabelDebounced=this._register(new Oe.pY((()=>{this.availableSuggestionCountAction.label=""}),100)),this.disableButtonsDebounced=this._register(new Oe.pY((()=>{this.previousAction.enabled=this.nextAction.enabled=!1}),100)),this.lastCommands=[],this.toolBar=this._register(a.createInstance(wd,this.nodes.toolBar,se.eH.InlineSuggestionToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:e=>e.startsWith("primary")},actionViewItemProvider:(e,t)=>{if(e instanceof se.U8)return a.createInstance(yd,e,void 0);if(e===this.availableSuggestionCountAction){const t=new Sd(void 0,e,{label:!0,icon:!1});return t.setClass("availableSuggestionCount"),t}},telemetrySource:"InlineSuggestionToolbar"})),this.toolBar.setPrependedPrimaryActions([this.previousAction,this.availableSuggestionCountAction,this.nextAction]),this._register(this.toolBar.onDidChangeDropdownVisibility((e=>{gd._dropDownVisible=e}))),this._register((0,dd.EH)((e=>{this._position.read(e),this.editor.layoutContentWidget(this)}))),this._register((0,dd.EH)((e=>{const t=this._suggestionCount.read(e),i=this._currentSuggestionIdx.read(e);void 0!==t?(this.clearAvailableSuggestionCountLabelDebounced.cancel(),this.availableSuggestionCountAction.label="".concat(i+1,"/").concat(t)):this.clearAvailableSuggestionCountLabelDebounced.schedule(),void 0!==t&&t>1?(this.disableButtonsDebounced.cancel(),this.previousAction.enabled=this.nextAction.enabled=!0):this.disableButtonsDebounced.schedule()}))),this._register((0,dd.EH)((e=>{const t=this._extraCommands.read(e);if((0,nt.fS)(this.lastCommands,t))return;this.lastCommands=t;const i=t.map((e=>({class:void 0,id:e.id,enabled:!0,tooltip:e.tooltip||"",label:e.title,run:t=>this._commandService.executeCommand(e.id)})));for(const[o,n]of this.inlineCompletionsActionsMenus.getActions())for(const e of n)e instanceof se.U8&&i.push(e);i.length>0&&i.unshift(new Ni.Z0),this.toolBar.setAdditionalSecondaryActions(i)})))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}};Cd._dropDownVisible=!1,Cd.id=0,Cd=gd=md([_d(6,ye.H),_d(7,ni.TG),_d(8,ki.d),_d(9,ae.i6),_d(10,se.co)],Cd);class Sd extends ld.gU{constructor(){super(...arguments),this._className=void 0}setClass(e){this._className=e}render(e){super.render(e),this._className&&e.classList.add(this._className)}updateTooltip(){}}class yd extends cr.Mm{updateLabel(){const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();if(this.label){const t=(0,X.h)("div.keybinding").root;this._register(new Ao.e(t,it.OS,{disableTitle:!0,...Ao.F})).set(e),this.label.textContent=this._action.label,this.label.appendChild(t),this.label.classList.add("inlineSuggestionStatusBarItemLabel")}}updateTooltip(){}}let wd=class extends pd.T{constructor(e,t,i,o,n,s,r,a){super(e,{resetMenu:t,...i},o,n,s,r,a),this.menuId=t,this.options2=i,this.menuService=o,this.contextKeyService=n,this.menu=this._store.add(this.menuService.createMenu(this.menuId,this.contextKeyService,{emitEventsForSubmenuChanges:!0})),this.additionalActions=[],this.prependedPrimaryActions=[],this._store.add(this.menu.onDidChange((()=>this.updateToolbar()))),this.updateToolbar()}updateToolbar(){var e,t,i,o,n,s,r;const a=[],l=[];(0,cr.vr)(this.menu,null===(e=this.options2)||void 0===e?void 0:e.menuOptions,{primary:a,secondary:l},null===(i=null===(t=this.options2)||void 0===t?void 0:t.toolbarOptions)||void 0===i?void 0:i.primaryGroup,null===(n=null===(o=this.options2)||void 0===o?void 0:o.toolbarOptions)||void 0===n?void 0:n.shouldInlineSubmenu,null===(r=null===(s=this.options2)||void 0===s?void 0:s.toolbarOptions)||void 0===r?void 0:r.useSeparatorsInPrimaryActions),l.push(...this.additionalActions),a.unshift(...this.prependedPrimaryActions),this.setActions(a,l)}setPrependedPrimaryActions(e){(0,nt.fS)(this.prependedPrimaryActions,e,((e,t)=>e===t))||(this.prependedPrimaryActions=e,this.updateToolbar())}setAdditionalSecondaryActions(e){(0,nt.fS)(this.additionalActions,e,((e,t)=>e===t))||(this.additionalActions=e,this.updateToolbar())}};wd=md([_d(3,se.co),_d(4,ae.i6),_d(5,Li.i),_d(6,ki.d),_d(7,eo.b)],wd);var xd,Nd=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ld=function(e,t){return function(i,o){t(i,o,e)}};let kd=xd=class extends Fe.JT{constructor(e,t,i,o,n){super(),this._editor=e,this._instantiationService=t,this._openerService=i,this._languageService=o,this._keybindingService=n,this._listenersStore=new Fe.SL,this._hoverState={mouseDown:!1,contentHoverFocused:!1,activatedByDecoratorClick:!1},this._reactToEditorMouseMoveRunner=this._register(new Oe.pY((()=>this._reactToEditorMouseMove(this._mouseMoveEvent)),0)),this._hookListeners(),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(60)&&(this._unhookListeners(),this._hookListeners())})))}static get(e){return e.getContribution(xd.ID)}_hookListeners(){const e=this._editor.getOption(60);this._hoverSettings={enabled:e.enabled,sticky:e.sticky,hidingDelay:e.delay},e.enabled?(this._listenersStore.add(this._editor.onMouseDown((e=>this._onEditorMouseDown(e)))),this._listenersStore.add(this._editor.onMouseUp((()=>this._onEditorMouseUp()))),this._listenersStore.add(this._editor.onMouseMove((e=>this._onEditorMouseMove(e)))),this._listenersStore.add(this._editor.onKeyDown((e=>this._onKeyDown(e))))):(this._listenersStore.add(this._editor.onMouseMove((e=>this._onEditorMouseMove(e)))),this._listenersStore.add(this._editor.onKeyDown((e=>this._onKeyDown(e))))),this._listenersStore.add(this._editor.onMouseLeave((e=>this._onEditorMouseLeave(e)))),this._listenersStore.add(this._editor.onDidChangeModel((()=>{this._cancelScheduler(),this._hideWidgets()}))),this._listenersStore.add(this._editor.onDidChangeModelContent((()=>this._cancelScheduler()))),this._listenersStore.add(this._editor.onDidScrollChange((e=>this._onEditorScrollChanged(e))))}_unhookListeners(){this._listenersStore.clear()}_cancelScheduler(){this._mouseMoveEvent=void 0,this._reactToEditorMouseMoveRunner.cancel()}_onEditorScrollChanged(e){(e.scrollTopChanged||e.scrollLeftChanged)&&this._hideWidgets()}_onEditorMouseDown(e){var t;this._hoverState.mouseDown=!0;const i=e.target;9!==i.type||i.detail!==rl.ID?12===i.type&&i.detail===hl.ID||(12!==i.type&&(this._hoverState.contentHoverFocused=!1),(null===(t=this._contentWidget)||void 0===t?void 0:t.widget.isResizing)||this._hideWidgets()):this._hoverState.contentHoverFocused=!0}_onEditorMouseUp(){this._hoverState.mouseDown=!1}_onEditorMouseLeave(e){var t,i;this._cancelScheduler();const o=e.event.browserEvent.relatedTarget;(null===(t=this._contentWidget)||void 0===t?void 0:t.widget.isResizing)||(null===(i=this._contentWidget)||void 0===i?void 0:i.containsNode(o))||this._hideWidgets()}_isMouseOverWidget(e){var t,i,o,n,s;const r=e.target,a=this._hoverSettings.sticky;return!(!a||9!==r.type||r.detail!==rl.ID)||(!(!a||!(null===(t=this._contentWidget)||void 0===t?void 0:t.containsNode(null===(i=e.event.browserEvent.view)||void 0===i?void 0:i.document.activeElement))||(null===(n=null===(o=e.event.browserEvent.view)||void 0===o?void 0:o.getSelection())||void 0===n?void 0:n.isCollapsed))||(!(a||9!==r.type||r.detail!==rl.ID||!(null===(s=this._contentWidget)||void 0===s?void 0:s.isColorPickerVisible))||!(!a||12!==r.type||r.detail!==hl.ID)))}_onEditorMouseMove(e){var t,i,o,n;if(this._mouseMoveEvent=e,(null===(t=this._contentWidget)||void 0===t?void 0:t.isFocused)||(null===(i=this._contentWidget)||void 0===i?void 0:i.isResizing))return;if(this._hoverState.mouseDown&&this._hoverState.contentHoverFocused)return;const s=this._hoverSettings.sticky;if(s&&(null===(o=this._contentWidget)||void 0===o?void 0:o.isVisibleFromKeyboard))return;if(this._isMouseOverWidget(e))return void this._reactToEditorMouseMoveRunner.cancel();const r=this._hoverSettings.hidingDelay;(null===(n=this._contentWidget)||void 0===n?void 0:n.isVisible)&&s&&r>0?this._reactToEditorMouseMoveRunner.isScheduled()||this._reactToEditorMouseMoveRunner.schedule(r):this._reactToEditorMouseMove(e)}_reactToEditorMouseMove(e){var t,i,o,n;if(!e)return;const s=e.target,r=null===(t=s.element)||void 0===t?void 0:t.classList.contains("colorpicker-color-decoration"),a=this._editor.getOption(148),l=this._hoverSettings.enabled,d=this._hoverState.activatedByDecoratorClick;if(r&&("click"===a&&!d||"hover"===a&&!l||"clickAndHover"===a&&!l&&!d)||!r&&!l&&!d)return void this._hideWidgets();if(this._getOrCreateContentWidget().showsOrWillShow(e))null===(i=this._glyphWidget)||void 0===i||i.hide();else if(2===s.type&&s.position&&s.detail.glyphMarginLane){null===(o=this._contentWidget)||void 0===o||o.hide();this._getOrCreateGlyphWidget().startShowingAt(s.position.lineNumber,s.detail.glyphMarginLane)}else if(3===s.type&&s.position){null===(n=this._contentWidget)||void 0===n||n.hide();this._getOrCreateGlyphWidget().startShowingAt(s.position.lineNumber,"lineNo")}else this._hideWidgets()}_onKeyDown(e){var t;if(!this._editor.hasModel())return;const i=this._keybindingService.softDispatch(e,this._editor.getDomNode()),o=1===i.kind||2===i.kind&&"editor.action.showHover"===i.commandId&&(null===(t=this._contentWidget)||void 0===t?void 0:t.isVisible);5===e.keyCode||6===e.keyCode||57===e.keyCode||4===e.keyCode||o||this._hideWidgets()}_hideWidgets(){var e,t,i;this._hoverState.mouseDown&&this._hoverState.contentHoverFocused&&(null===(e=this._contentWidget)||void 0===e?void 0:e.isColorPickerVisible)||Cd.dropDownVisible||(this._hoverState.activatedByDecoratorClick=!1,this._hoverState.contentHoverFocused=!1,null===(t=this._glyphWidget)||void 0===t||t.hide(),null===(i=this._contentWidget)||void 0===i||i.hide())}_getOrCreateContentWidget(){return this._contentWidget||(this._contentWidget=this._instantiationService.createInstance(il,this._editor)),this._contentWidget}_getOrCreateGlyphWidget(){return this._glyphWidget||(this._glyphWidget=new hl(this._editor,this._languageService,this._openerService)),this._glyphWidget}showContentHover(e,t,i,o){let n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];this._hoverState.activatedByDecoratorClick=n,this._getOrCreateContentWidget().startShowingAtRange(e,t,i,o)}focus(){var e;null===(e=this._contentWidget)||void 0===e||e.focus()}scrollUp(){var e;null===(e=this._contentWidget)||void 0===e||e.scrollUp()}scrollDown(){var e;null===(e=this._contentWidget)||void 0===e||e.scrollDown()}scrollLeft(){var e;null===(e=this._contentWidget)||void 0===e||e.scrollLeft()}scrollRight(){var e;null===(e=this._contentWidget)||void 0===e||e.scrollRight()}pageUp(){var e;null===(e=this._contentWidget)||void 0===e||e.pageUp()}pageDown(){var e;null===(e=this._contentWidget)||void 0===e||e.pageDown()}goToTop(){var e;null===(e=this._contentWidget)||void 0===e||e.goToTop()}goToBottom(){var e;null===(e=this._contentWidget)||void 0===e||e.goToBottom()}get isColorPickerVisible(){var e;return null===(e=this._contentWidget)||void 0===e?void 0:e.isColorPickerVisible}get isHoverVisible(){var e;return null===(e=this._contentWidget)||void 0===e?void 0:e.isVisible}dispose(){var e,t;super.dispose(),this._unhookListeners(),this._listenersStore.dispose(),null===(e=this._glyphWidget)||void 0===e||e.dispose(),null===(t=this._contentWidget)||void 0===t||t.dispose()}};var Dd;kd.ID="editor.contrib.hover",kd=xd=Nd([Ld(1,ni.TG),Ld(2,pi.v),Ld(3,Us.O),Ld(4,ki.d)],kd),function(e){e.NoAutoFocus="noAutoFocus",e.FocusIfVisible="focusIfVisible",e.AutoFocusImmediately="autoFocusImmediately"}(Dd||(Dd={}));class Id extends ee.R6{constructor(){super({id:"editor.action.showHover",label:ne.NC({key:"showOrFocusHover",comment:["Label for action that will trigger the showing/focusing of a hover in the editor.","If the hover is not visible, it will show the hover.","This allows for users to show the hover without using the mouse."]},"Show or Focus Hover"),metadata:{description:"Show or Focus Hover",args:[{name:"args",schema:{type:"object",properties:{focus:{description:"Controls if and when the hover should take focus upon being triggered by this action.",enum:[Dd.NoAutoFocus,Dd.FocusIfVisible,Dd.AutoFocusImmediately],enumDescriptions:[ne.NC("showOrFocusHover.focus.noAutoFocus","The hover will not automatically take focus."),ne.NC("showOrFocusHover.focus.focusIfVisible","The hover will take focus only if it is already visible."),ne.NC("showOrFocusHover.focus.autoFocusImmediately","The hover will automatically take focus when it appears.")],default:Dd.FocusIfVisible}}}}]},alias:"Show or Focus Hover",precondition:void 0,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2087),weight:100}})}run(e,t,i){if(!t.hasModel())return;const o=kd.get(t);if(!o)return;const n=null===i||void 0===i?void 0:i.focus;let s=Dd.FocusIfVisible;Object.values(Dd).includes(n)?s=n:"boolean"===typeof n&&n&&(s=Dd.AutoFocusImmediately);const r=e=>{const i=t.getPosition(),n=new He.e(i.lineNumber,i.column,i.lineNumber,i.column);o.showContentHover(n,1,1,e)},a=2===t.getOption(2);o.isHoverVisible?s!==Dd.NoAutoFocus?o.focus():r(a):r(a||s===Dd.AutoFocusImmediately)}}class Rd extends ee.R6{constructor(){super({id:"editor.action.showDefinitionPreviewHover",label:ne.NC({key:"showDefinitionPreviewHover",comment:["Label for action that will trigger the showing of definition preview hover in the editor.","This allows for users to show the definition preview hover without using the mouse."]},"Show Definition Preview Hover"),alias:"Show Definition Preview Hover",precondition:void 0})}run(e,t){const i=kd.get(t);if(!i)return;const o=t.getPosition();if(!o)return;const n=new He.e(o.lineNumber,o.column,o.lineNumber,o.column),s=za.get(t);if(!s)return;s.startFindDefinitionFromCursor(o).then((()=>{i.showContentHover(n,1,1,!0)}))}}class Pd extends ee.R6{constructor(){super({id:"editor.action.scrollUpHover",label:ne.NC({key:"scrollUpHover",comment:["Action that allows to scroll up in the hover widget with the up arrow when the hover widget is focused."]},"Scroll Up Hover"),alias:"Scroll Up Hover",precondition:oe.u.hoverFocused,kbOpts:{kbExpr:oe.u.hoverFocused,primary:16,weight:100}})}run(e,t){const i=kd.get(t);i&&i.scrollUp()}}class Md extends ee.R6{constructor(){super({id:"editor.action.scrollDownHover",label:ne.NC({key:"scrollDownHover",comment:["Action that allows to scroll down in the hover widget with the up arrow when the hover widget is focused."]},"Scroll Down Hover"),alias:"Scroll Down Hover",precondition:oe.u.hoverFocused,kbOpts:{kbExpr:oe.u.hoverFocused,primary:18,weight:100}})}run(e,t){const i=kd.get(t);i&&i.scrollDown()}}class Td extends ee.R6{constructor(){super({id:"editor.action.scrollLeftHover",label:ne.NC({key:"scrollLeftHover",comment:["Action that allows to scroll left in the hover widget with the left arrow when the hover widget is focused."]},"Scroll Left Hover"),alias:"Scroll Left Hover",precondition:oe.u.hoverFocused,kbOpts:{kbExpr:oe.u.hoverFocused,primary:15,weight:100}})}run(e,t){const i=kd.get(t);i&&i.scrollLeft()}}class Ed extends ee.R6{constructor(){super({id:"editor.action.scrollRightHover",label:ne.NC({key:"scrollRightHover",comment:["Action that allows to scroll right in the hover widget with the right arrow when the hover widget is focused."]},"Scroll Right Hover"),alias:"Scroll Right Hover",precondition:oe.u.hoverFocused,kbOpts:{kbExpr:oe.u.hoverFocused,primary:17,weight:100}})}run(e,t){const i=kd.get(t);i&&i.scrollRight()}}class Ad extends ee.R6{constructor(){super({id:"editor.action.pageUpHover",label:ne.NC({key:"pageUpHover",comment:["Action that allows to page up in the hover widget with the page up command when the hover widget is focused."]},"Page Up Hover"),alias:"Page Up Hover",precondition:oe.u.hoverFocused,kbOpts:{kbExpr:oe.u.hoverFocused,primary:11,secondary:[528],weight:100}})}run(e,t){const i=kd.get(t);i&&i.pageUp()}}class Od extends ee.R6{constructor(){super({id:"editor.action.pageDownHover",label:ne.NC({key:"pageDownHover",comment:["Action that allows to page down in the hover widget with the page down command when the hover widget is focused."]},"Page Down Hover"),alias:"Page Down Hover",precondition:oe.u.hoverFocused,kbOpts:{kbExpr:oe.u.hoverFocused,primary:12,secondary:[530],weight:100}})}run(e,t){const i=kd.get(t);i&&i.pageDown()}}class Fd extends ee.R6{constructor(){super({id:"editor.action.goToTopHover",label:ne.NC({key:"goToTopHover",comment:["Action that allows to go to the top of the hover widget with the home command when the hover widget is focused."]},"Go To Top Hover"),alias:"Go To Bottom Hover",precondition:oe.u.hoverFocused,kbOpts:{kbExpr:oe.u.hoverFocused,primary:14,secondary:[2064],weight:100}})}run(e,t){const i=kd.get(t);i&&i.goToTop()}}class Wd extends ee.R6{constructor(){super({id:"editor.action.goToBottomHover",label:ne.NC({key:"goToBottomHover",comment:["Action that allows to go to the bottom in the hover widget with the end command when the hover widget is focused."]},"Go To Bottom Hover"),alias:"Go To Bottom Hover",precondition:oe.u.hoverFocused,kbOpts:{kbExpr:oe.u.hoverFocused,primary:13,secondary:[2066],weight:100}})}run(e,t){const i=kd.get(t);i&&i.goToBottom()}}(0,ee._K)(kd.ID,kd,2),(0,ee.Qr)(Id),(0,ee.Qr)(Rd),(0,ee.Qr)(Pd),(0,ee.Qr)(Md),(0,ee.Qr)(Td),(0,ee.Qr)(Ed),(0,ee.Qr)(Ad),(0,ee.Qr)(Od),(0,ee.Qr)(Fd),(0,ee.Qr)(Wd),Qa.register(bl),Qa.register(ad),(0,Ue.Ic)(((e,t)=>{const i=e.getColor(ze.CNo);i&&(t.addRule(".monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ".concat(i.transparent(.5),"; }")),t.addRule(".monaco-editor .monaco-hover hr { border-top: 1px solid ".concat(i.transparent(.5),"; }")),t.addRule(".monaco-editor .monaco-hover hr { border-bottom: 0px solid ".concat(i.transparent(.5),"; }")))}));class Hd extends Fe.JT{constructor(e){super(),this._editor=e,this._register(e.onMouseDown((e=>this.onMouseDown(e))))}dispose(){super.dispose()}onMouseDown(e){const t=this._editor.getOption(148);if("click"!==t&&"clickAndHover"!==t)return;const i=e.target;if(6!==i.type)return;if(!i.detail.injectedText)return;if(i.detail.injectedText.options.attachedData!==ms)return;if(!i.range)return;const o=this._editor.getContribution(kd.ID);if(o&&!o.isColorPickerVisible){const e=new He.e(i.range.startLineNumber,i.range.startColumn+1,i.range.endLineNumber,i.range.endColumn+1);o.showContentHover(e,1,0,!1,!0)}}}Hd.ID="editor.contrib.colorContribution",(0,ee._K)(Hd.ID,Hd,2),Qa.register(Os);var Vd,Bd,zd=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ud=function(e,t){return function(i,o){t(i,o,e)}};let Kd=Vd=class extends Fe.JT{constructor(e,t,i,o,n,s,r){super(),this._editor=e,this._modelService=i,this._keybindingService=o,this._instantiationService=n,this._languageFeatureService=s,this._languageConfigurationService=r,this._standaloneColorPickerWidget=null,this._standaloneColorPickerVisible=oe.u.standaloneColorPickerVisible.bindTo(t),this._standaloneColorPickerFocused=oe.u.standaloneColorPickerFocused.bindTo(t)}showOrFocus(){var e;this._editor.hasModel()&&(this._standaloneColorPickerVisible.get()?this._standaloneColorPickerFocused.get()||null===(e=this._standaloneColorPickerWidget)||void 0===e||e.focus():this._standaloneColorPickerWidget=new jd(this._editor,this._standaloneColorPickerVisible,this._standaloneColorPickerFocused,this._instantiationService,this._modelService,this._keybindingService,this._languageFeatureService,this._languageConfigurationService))}hide(){var e;this._standaloneColorPickerFocused.set(!1),this._standaloneColorPickerVisible.set(!1),null===(e=this._standaloneColorPickerWidget)||void 0===e||e.hide(),this._editor.focus()}insertColor(){var e;null===(e=this._standaloneColorPickerWidget)||void 0===e||e.updateEditor(),this.hide()}static get(e){return e.getContribution(Vd.ID)}};Kd.ID="editor.contrib.standaloneColorPickerController",Kd=Vd=zd([Ud(1,ae.i6),Ud(2,$i.q),Ud(3,ki.d),Ud(4,ni.TG),Ud(5,kt.p),Ud(6,Xn.c_)],Kd),(0,ee._K)(Kd.ID,Kd,1);let jd=Bd=class extends Fe.JT{constructor(e,t,i,o,n,s,r,a){var l;super(),this._editor=e,this._standaloneColorPickerVisible=t,this._standaloneColorPickerFocused=i,this._modelService=n,this._keybindingService=s,this._languageFeaturesService=r,this._languageConfigurationService=a,this.allowEditorOverflow=!0,this._position=void 0,this._body=document.createElement("div"),this._colorHover=null,this._selectionSetInEditor=!1,this._onResult=this._register(new ui.Q5),this.onResult=this._onResult.event,this._standaloneColorPickerVisible.set(!0),this._standaloneColorPickerParticipant=o.createInstance(Ws,this._editor),this._position=null===(l=this._editor._getViewModel())||void 0===l?void 0:l.getPrimaryCursorState().modelState.position;const d=this._editor.getSelection(),c=d?{startLineNumber:d.startLineNumber,startColumn:d.startColumn,endLineNumber:d.endLineNumber,endColumn:d.endColumn}:{startLineNumber:0,endLineNumber:0,endColumn:0,startColumn:0},h=this._register(X.go(this._body));this._register(h.onDidBlur((e=>{this.hide()}))),this._register(h.onDidFocus((e=>{this.focus()}))),this._register(this._editor.onDidChangeCursorPosition((()=>{this._selectionSetInEditor?this._selectionSetInEditor=!1:this.hide()}))),this._register(this._editor.onMouseMove((e=>{var t;const i=null===(t=e.target.element)||void 0===t?void 0:t.classList;i&&i.contains("colorpicker-color-decoration")&&this.hide()}))),this._register(this.onResult((e=>{this._render(e.value,e.foundInEditor)}))),this._start(c),this._body.style.zIndex="50",this._editor.addContentWidget(this)}updateEditor(){this._colorHover&&this._standaloneColorPickerParticipant.updateEditorModel(this._colorHover)}getId(){return Bd.ID}getDomNode(){return this._body}getPosition(){if(!this._position)return null;const e=this._editor.getOption(60).above;return{position:this._position,secondaryPosition:this._position,preference:e?[1,2]:[2,1],positionAffinity:2}}hide(){this.dispose(),this._standaloneColorPickerVisible.set(!1),this._standaloneColorPickerFocused.set(!1),this._editor.removeContentWidget(this),this._editor.focus()}focus(){this._standaloneColorPickerFocused.set(!0),this._body.focus()}async _start(e){const t=await this._computeAsync(e);t&&this._onResult.fire(new qd(t.result,t.foundInEditor))}async _computeAsync(e){if(!this._editor.hasModel())return null;const t={range:e,color:{red:0,green:0,blue:0,alpha:1}},i=await this._standaloneColorPickerParticipant.createColorHover(t,new os(this._modelService,this._languageConfigurationService),this._languageFeaturesService.colorProvider);return i?{result:i.colorHover,foundInEditor:i.foundInEditor}:null}_render(e,t){const i=document.createDocumentFragment();let o;const n={fragment:i,statusBar:this._register(new al(this._keybindingService)),setColorPicker:e=>o=e,onContentsChanged:()=>{},hide:()=>this.hide()};if(this._colorHover=e,this._register(this._standaloneColorPickerParticipant.renderHoverParts(n,[e])),void 0===o)return;this._body.classList.add("standalone-colorpicker-body"),this._body.style.maxHeight=Math.max(this._editor.getLayoutInfo().height/4,250)+"px",this._body.style.maxWidth=Math.max(.66*this._editor.getLayoutInfo().width,500)+"px",this._body.tabIndex=0,this._body.appendChild(i),o.layout();const s=o.body,r=s.saturationBox.domNode.clientWidth,a=s.domNode.clientWidth-r-22-8,l=o.body.enterButton;null===l||void 0===l||l.onClicked((()=>{this.updateEditor(),this.hide()}));const d=o.header;d.pickedColorNode.style.width=r+8+"px";d.originalColorNode.style.width=a+"px";const c=o.header.closeButton;null===c||void 0===c||c.onClicked((()=>{this.hide()})),t&&(l&&(l.button.textContent="Replace"),this._selectionSetInEditor=!0,this._editor.setSelection(e.range)),this._editor.layoutContentWidget(this)}};jd.ID="editor.contrib.standaloneColorPickerWidget",jd=Bd=zd([Ud(3,ni.TG),Ud(4,$i.q),Ud(5,ki.d),Ud(6,kt.p),Ud(7,Xn.c_)],jd);class qd{constructor(e,t){this.value=e,this.foundInEditor=t}}class Gd extends ee.x1{constructor(){super({id:"editor.action.showOrFocusStandaloneColorPicker",title:{...(0,ne.vv)("showOrFocusStandaloneColorPicker","Show or Focus Standalone Color Picker"),mnemonicTitle:(0,ne.NC)({key:"mishowOrFocusStandaloneColorPicker",comment:["&& denotes a mnemonic"]},"&&Show or Focus Standalone Color Picker")},precondition:void 0,menu:[{id:se.eH.CommandPalette}]})}runEditorCommand(e,t){var i;null===(i=Kd.get(t))||void 0===i||i.showOrFocus()}}class Qd extends ee.R6{constructor(){super({id:"editor.action.hideColorPicker",label:(0,ne.NC)({key:"hideColorPicker",comment:["Action that hides the color picker"]},"Hide the Color Picker"),alias:"Hide the Color Picker",precondition:oe.u.standaloneColorPickerVisible.isEqualTo(!0),kbOpts:{primary:9,weight:100}})}run(e,t){var i;null===(i=Kd.get(t))||void 0===i||i.hide()}}class Zd extends ee.R6{constructor(){super({id:"editor.action.insertColorWithStandaloneColorPicker",label:(0,ne.NC)({key:"insertColorWithStandaloneColorPicker",comment:["Action that inserts color with standalone color picker"]},"Insert Color with Standalone Color Picker"),alias:"Insert Color with Standalone Color Picker",precondition:oe.u.standaloneColorPickerFocused.isEqualTo(!0),kbOpts:{primary:3,weight:100}})}run(e,t){var i;null===(i=Kd.get(t))||void 0===i||i.insertColor()}}(0,ee.Qr)(Qd),(0,ee.Qr)(Zd),(0,se.r1)(Gd);var Yd=i(39376);class Jd{constructor(e,t,i){this.languageConfigurationService=i,this._selection=e,this._insertSpace=t,this._usedEndToken=null}static _haystackHasNeedleAtOffset(e,t,i){if(i<0)return!1;const o=t.length;if(i+o>e.length)return!1;for(let n=0;n<o;n++){const o=e.charCodeAt(i+n),s=t.charCodeAt(n);if(o!==s&&(!(o>=65&&o<=90&&o+32===s)&&!(s>=65&&s<=90&&s+32===o)))return!1}return!0}_createOperationsForBlockComment(e,t,i,o,n,s){const r=e.startLineNumber,a=e.startColumn,l=e.endLineNumber,d=e.endColumn,c=n.getLineContent(r),h=n.getLineContent(l);let u,g=c.lastIndexOf(t,a-1+t.length),p=h.indexOf(i,d-1-i.length);if(-1!==g&&-1!==p)if(r===l){c.substring(g+t.length,p).indexOf(i)>=0&&(g=-1,p=-1)}else{const e=c.substring(g+t.length),o=h.substring(0,p);(e.indexOf(i)>=0||o.indexOf(i)>=0)&&(g=-1,p=-1)}-1!==g&&-1!==p?(o&&g+t.length<c.length&&32===c.charCodeAt(g+t.length)&&(t+=" "),o&&p>0&&32===h.charCodeAt(p-1)&&(i=" "+i,p-=1),u=Jd._createRemoveBlockCommentOperations(new He.e(r,g+t.length+1,l,p+1),t,i)):(u=Jd._createAddBlockCommentOperations(e,t,i,this._insertSpace),this._usedEndToken=1===u.length?i:null);for(const m of u)s.addTrackedEditOperation(m.range,m.text)}static _createRemoveBlockCommentOperations(e,t,i){const o=[];return He.e.isEmpty(e)?o.push(Yd.h.delete(new He.e(e.startLineNumber,e.startColumn-t.length,e.endLineNumber,e.endColumn+i.length))):(o.push(Yd.h.delete(new He.e(e.startLineNumber,e.startColumn-t.length,e.startLineNumber,e.startColumn))),o.push(Yd.h.delete(new He.e(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn+i.length)))),o}static _createAddBlockCommentOperations(e,t,i,o){const n=[];return He.e.isEmpty(e)?n.push(Yd.h.replace(new He.e(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),t+" "+i)):(n.push(Yd.h.insert(new We.L(e.startLineNumber,e.startColumn),t+(o?" ":""))),n.push(Yd.h.insert(new We.L(e.endLineNumber,e.endColumn),(o?" ":"")+i))),n}getEditOperations(e,t){const i=this._selection.startLineNumber,o=this._selection.startColumn;e.tokenization.tokenizeIfCheap(i);const n=e.getLanguageIdAtPosition(i,o),s=this.languageConfigurationService.getLanguageConfiguration(n).comments;s&&s.blockCommentStartToken&&s.blockCommentEndToken&&this._createOperationsForBlockComment(this._selection,s.blockCommentStartToken,s.blockCommentEndToken,this._insertSpace,e,t)}computeCursorState(e,t){const i=t.getInverseEditOperations();if(2===i.length){const e=i[0],t=i[1];return new ke.Y(e.range.endLineNumber,e.range.endColumn,t.range.startLineNumber,t.range.startColumn)}{const e=i[0].range,t=this._usedEndToken?-this._usedEndToken.length-1:0;return new ke.Y(e.endLineNumber,e.endColumn+t,e.endLineNumber,e.endColumn+t)}}}class $d{constructor(e,t,i,o,n,s,r){this.languageConfigurationService=e,this._selection=t,this._indentSize=i,this._type=o,this._insertSpace=n,this._selectionId=null,this._deltaColumn=0,this._moveEndPositionDown=!1,this._ignoreEmptyLines=s,this._ignoreFirstLine=r||!1}static _gatherPreflightCommentStrings(e,t,i,o){e.tokenization.tokenizeIfCheap(t);const n=e.getLanguageIdAtPosition(t,1),s=o.getLanguageConfiguration(n).comments,r=s?s.lineCommentToken:null;if(!r)return null;const a=[];for(let l=0,d=i-t+1;l<d;l++)a[l]={ignore:!1,commentStr:r,commentStrOffset:0,commentStrLength:r.length};return a}static _analyzeLines(e,t,i,o,n,s,r,a){let l,d=!0;l=0===e||1!==e;for(let c=0,h=o.length;c<h;c++){const a=o[c],h=n+c;if(h===n&&r){a.ignore=!0;continue}const u=i.getLineContent(h),g=ii.LC(u);if(-1!==g){if(d=!1,a.ignore=!1,a.commentStrOffset=g,l&&!Jd._haystackHasNeedleAtOffset(u,a.commentStr,g)&&(0===e?l=!1:1===e||(a.ignore=!0)),l&&t){const e=g+a.commentStrLength;e<u.length&&32===u.charCodeAt(e)&&(a.commentStrLength+=1)}}else a.ignore=s,a.commentStrOffset=u.length}if(0===e&&d){l=!1;for(let e=0,t=o.length;e<t;e++)o[e].ignore=!1}return{supported:!0,shouldRemoveComments:l,lines:o}}static _gatherPreflightData(e,t,i,o,n,s,r,a){const l=$d._gatherPreflightCommentStrings(i,o,n,a);return null===l?{supported:!1}:$d._analyzeLines(e,t,i,l,o,s,r,a)}_executeLineComments(e,t,i,o){let n;i.shouldRemoveComments?n=$d._createRemoveLineCommentsOperations(i.lines,o.startLineNumber):($d._normalizeInsertionPoint(e,i.lines,o.startLineNumber,this._indentSize),n=this._createAddLineCommentsOperations(i.lines,o.startLineNumber));const s=new We.L(o.positionLineNumber,o.positionColumn);for(let r=0,a=n.length;r<a;r++)if(t.addEditOperation(n[r].range,n[r].text),He.e.isEmpty(n[r].range)&&He.e.getStartPosition(n[r].range).equals(s)){e.getLineContent(s.lineNumber).length+1===s.column&&(this._deltaColumn=(n[r].text||"").length)}this._selectionId=t.trackSelection(o)}_attemptRemoveBlockComment(e,t,i,o){let n=t.startLineNumber,s=t.endLineNumber;const r=o.length+Math.max(e.getLineFirstNonWhitespaceColumn(t.startLineNumber),t.startColumn);let a=e.getLineContent(n).lastIndexOf(i,r-1),l=e.getLineContent(s).indexOf(o,t.endColumn-1-i.length);return-1!==a&&-1===l&&(l=e.getLineContent(n).indexOf(o,a+i.length),s=n),-1===a&&-1!==l&&(a=e.getLineContent(s).lastIndexOf(i,l),n=s),!t.isEmpty()||-1!==a&&-1!==l||(a=e.getLineContent(n).indexOf(i),-1!==a&&(l=e.getLineContent(n).indexOf(o,a+i.length))),-1!==a&&32===e.getLineContent(n).charCodeAt(a+i.length)&&(i+=" "),-1!==l&&32===e.getLineContent(s).charCodeAt(l-1)&&(o=" "+o,l-=1),-1!==a&&-1!==l?Jd._createRemoveBlockCommentOperations(new He.e(n,a+i.length+1,s,l+1),i,o):null}_executeBlockComment(e,t,i){e.tokenization.tokenizeIfCheap(i.startLineNumber);const o=e.getLanguageIdAtPosition(i.startLineNumber,1),n=this.languageConfigurationService.getLanguageConfiguration(o).comments;if(!n||!n.blockCommentStartToken||!n.blockCommentEndToken)return;const s=n.blockCommentStartToken,r=n.blockCommentEndToken;let a=this._attemptRemoveBlockComment(e,i,s,r);if(!a){if(i.isEmpty()){const t=e.getLineContent(i.startLineNumber);let o=ii.LC(t);-1===o&&(o=t.length),a=Jd._createAddBlockCommentOperations(new He.e(i.startLineNumber,o+1,i.startLineNumber,t.length+1),s,r,this._insertSpace)}else a=Jd._createAddBlockCommentOperations(new He.e(i.startLineNumber,e.getLineFirstNonWhitespaceColumn(i.startLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),s,r,this._insertSpace);1===a.length&&(this._deltaColumn=s.length+1)}this._selectionId=t.trackSelection(i);for(const l of a)t.addEditOperation(l.range,l.text)}getEditOperations(e,t){let i=this._selection;if(this._moveEndPositionDown=!1,i.startLineNumber===i.endLineNumber&&this._ignoreFirstLine)return t.addEditOperation(new He.e(i.startLineNumber,e.getLineMaxColumn(i.startLineNumber),i.startLineNumber+1,1),i.startLineNumber===e.getLineCount()?"":"\n"),void(this._selectionId=t.trackSelection(i));i.startLineNumber<i.endLineNumber&&1===i.endColumn&&(this._moveEndPositionDown=!0,i=i.setEndPosition(i.endLineNumber-1,e.getLineMaxColumn(i.endLineNumber-1)));const o=$d._gatherPreflightData(this._type,this._insertSpace,e,i.startLineNumber,i.endLineNumber,this._ignoreEmptyLines,this._ignoreFirstLine,this.languageConfigurationService);return o.supported?this._executeLineComments(e,t,o,i):this._executeBlockComment(e,t,i)}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(i=i.setEndPosition(i.endLineNumber+1,1)),new ke.Y(i.selectionStartLineNumber,i.selectionStartColumn+this._deltaColumn,i.positionLineNumber,i.positionColumn+this._deltaColumn)}static _createRemoveLineCommentsOperations(e,t){const i=[];for(let o=0,n=e.length;o<n;o++){const n=e[o];n.ignore||i.push(Yd.h.delete(new He.e(t+o,n.commentStrOffset+1,t+o,n.commentStrOffset+n.commentStrLength+1)))}return i}_createAddLineCommentsOperations(e,t){const i=[],o=this._insertSpace?" ":"";for(let n=0,s=e.length;n<s;n++){const s=e[n];s.ignore||i.push(Yd.h.insert(new We.L(t+n,s.commentStrOffset+1),s.commentStr+o))}return i}static nextVisibleColumn(e,t,i,o){return i?e+(t-e%t):e+o}static _normalizeInsertionPoint(e,t,i,o){let n,s,r=1073741824;for(let a=0,l=t.length;a<l;a++){if(t[a].ignore)continue;const n=e.getLineContent(i+a);let s=0;for(let e=0,i=t[a].commentStrOffset;s<r&&e<i;e++)s=$d.nextVisibleColumn(s,o,9===n.charCodeAt(e),1);s<r&&(r=s)}r=Math.floor(r/o)*o;for(let a=0,l=t.length;a<l;a++){if(t[a].ignore)continue;const l=e.getLineContent(i+a);let d=0;for(n=0,s=t[a].commentStrOffset;d<r&&n<s;n++)d=$d.nextVisibleColumn(d,o,9===l.charCodeAt(n),1);t[a].commentStrOffset=d>r?n-1:n}}}class Xd extends ee.R6{constructor(e,t){super(t),this._type=e}run(e,t){const i=e.get(Xn.c_);if(!t.hasModel())return;const o=[],n=t.getModel().getOptions(),s=t.getOption(23),r=t.getSelections().map(((e,t)=>({selection:e,index:t,ignoreFirstLine:!1})));r.sort(((e,t)=>He.e.compareRangesUsingStarts(e.selection,t.selection)));let a=r[0];for(let l=1;l<r.length;l++){const e=r[l];a.selection.endLineNumber===e.selection.startLineNumber&&(a.index<e.index?e.ignoreFirstLine=!0:(a.ignoreFirstLine=!0,a=e))}for(const l of r)o.push(new $d(i,l.selection,n.indentSize,this._type,s.insertSpace,s.ignoreEmptyLines,l.ignoreFirstLine));t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class ec extends ee.R6{constructor(){super({id:"editor.action.blockComment",label:ne.NC("comment.block","Toggle Block Comment"),alias:"Toggle Block Comment",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:1567,linux:{primary:3103},weight:100},menuOpts:{menuId:se.eH.MenubarEditMenu,group:"5_insert",title:ne.NC({key:"miToggleBlockComment",comment:["&& denotes a mnemonic"]},"Toggle &&Block Comment"),order:2}})}run(e,t){const i=e.get(Xn.c_);if(!t.hasModel())return;const o=t.getOption(23),n=[],s=t.getSelections();for(const r of s)n.push(new Jd(r,o.insertSpace,i));t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}(0,ee.Qr)(class extends Xd{constructor(){super(0,{id:"editor.action.commentLine",label:ne.NC("comment.line","Toggle Line Comment"),alias:"Toggle Line Comment",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:2138,weight:100},menuOpts:{menuId:se.eH.MenubarEditMenu,group:"5_insert",title:ne.NC({key:"miToggleLineComment",comment:["&& denotes a mnemonic"]},"&&Toggle Line Comment"),order:1}})}}),(0,ee.Qr)(class extends Xd{constructor(){super(1,{id:"editor.action.addCommentLine",label:ne.NC("comment.line.add","Add Line Comment"),alias:"Add Line Comment",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2081),weight:100}})}}),(0,ee.Qr)(class extends Xd{constructor(){super(2,{id:"editor.action.removeCommentLine",label:ne.NC("comment.line.remove","Remove Line Comment"),alias:"Remove Line Comment",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2099),weight:100}})}}),(0,ee.Qr)(ec);var tc,ic=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},oc=function(e,t){return function(i,o){t(i,o,e)}};let nc=tc=class{static get(e){return e.getContribution(tc.ID)}constructor(e,t,i,o,n,s,r,a){this._contextMenuService=t,this._contextViewService=i,this._contextKeyService=o,this._keybindingService=n,this._menuService=s,this._configurationService=r,this._workspaceContextService=a,this._toDispose=new Fe.SL,this._contextMenuIsBeingShownCount=0,this._editor=e,this._toDispose.add(this._editor.onContextMenu((e=>this._onContextMenu(e)))),this._toDispose.add(this._editor.onMouseWheel((e=>{if(this._contextMenuIsBeingShownCount>0){const t=this._contextViewService.getContextViewElement(),i=e.srcElement;i.shadowRoot&&X.Ay(t)===i.shadowRoot||this._contextViewService.hideContextView()}}))),this._toDispose.add(this._editor.onKeyDown((e=>{this._editor.getOption(24)&&58===e.keyCode&&(e.preventDefault(),e.stopPropagation(),this.showContextMenu())})))}_onContextMenu(e){if(!this._editor.hasModel())return;if(!this._editor.getOption(24))return this._editor.focus(),void(e.target.position&&!this._editor.getSelection().containsPosition(e.target.position)&&this._editor.setPosition(e.target.position));if(12===e.target.type)return;if(6===e.target.type&&e.target.detail.injectedText)return;if(e.event.preventDefault(),e.event.stopPropagation(),11===e.target.type)return this._showScrollbarContextMenu(e.event);if(6!==e.target.type&&7!==e.target.type&&1!==e.target.type)return;if(this._editor.focus(),e.target.position){let t=!1;for(const i of this._editor.getSelections())if(i.containsPosition(e.target.position)){t=!0;break}t||this._editor.setPosition(e.target.position)}let t=null;1!==e.target.type&&(t=e.event),this.showContextMenu(t)}showContextMenu(e){if(!this._editor.getOption(24))return;if(!this._editor.hasModel())return;const t=this._getMenuActions(this._editor.getModel(),this._editor.isSimpleWidget?se.eH.SimpleEditorContext:se.eH.EditorContext);t.length>0&&this._doShowContextMenu(t,e)}_getMenuActions(e,t){const i=[],o=this._menuService.createMenu(t,this._contextKeyService),n=o.getActions({arg:e.uri});o.dispose();for(const s of n){const[,t]=s;let o=0;for(const n of t)if(n instanceof se.NZ){const t=this._getMenuActions(e,n.item.submenu);t.length>0&&(i.push(new Ni.wY(n.id,n.label,t)),o++)}else i.push(n),o++;o&&i.push(new Ni.Z0)}return i.length&&i.pop(),i}_doShowContextMenu(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!this._editor.hasModel())return;const i=this._editor.getOption(60);this._editor.updateOptions({hover:{enabled:!1}});let o=t;if(!o){this._editor.revealPosition(this._editor.getPosition(),1),this._editor.render();const e=this._editor.getScrolledVisiblePosition(this._editor.getPosition()),t=X.i(this._editor.getDomNode()),i=t.left+e.left,n=t.top+e.top+e.height;o={x:i,y:n}}const n=this._editor.getOption(127)&&!it.gn;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:n?this._editor.getDomNode():void 0,getAnchor:()=>o,getActions:()=>e,getActionViewItem:e=>{const t=this._keybindingFor(e);if(t)return new ld.gU(e,e,{label:!0,keybinding:t.getLabel(),isMenu:!0});const i=e;return"function"===typeof i.getActionViewItem?i.getActionViewItem():new ld.gU(e,e,{icon:!0,label:!0,isMenu:!0})},getKeyBinding:e=>this._keybindingFor(e),onHide:e=>{this._contextMenuIsBeingShownCount--,this._editor.updateOptions({hover:i})}})}_showScrollbarContextMenu(e){if(!this._editor.hasModel())return;if((0,Rt.x)(this._workspaceContextService.getWorkspace()))return;const t=this._editor.getOption(73);let i=0;const o=e=>({id:"menu-action-".concat(++i),label:e.label,tooltip:"",class:void 0,enabled:"undefined"===typeof e.enabled||e.enabled,checked:e.checked,run:e.run}),n=(e,t,n,s,r)=>{if(!t)return o({label:e,enabled:t,run:()=>{}});const a=e=>()=>{this._configurationService.updateValue(n,e)},l=[];for(const i of r)l.push(o({label:i.label,checked:s===i.value,run:a(i.value)}));return((e,t)=>new Ni.wY("menu-action-".concat(++i),e,t,void 0))(e,l)},s=[];s.push(o({label:ne.NC("context.minimap.minimap","Minimap"),checked:t.enabled,run:()=>{this._configurationService.updateValue("editor.minimap.enabled",!t.enabled)}})),s.push(new Ni.Z0),s.push(o({label:ne.NC("context.minimap.renderCharacters","Render Characters"),enabled:t.enabled,checked:t.renderCharacters,run:()=>{this._configurationService.updateValue("editor.minimap.renderCharacters",!t.renderCharacters)}})),s.push(n(ne.NC("context.minimap.size","Vertical size"),t.enabled,"editor.minimap.size",t.size,[{label:ne.NC("context.minimap.size.proportional","Proportional"),value:"proportional"},{label:ne.NC("context.minimap.size.fill","Fill"),value:"fill"},{label:ne.NC("context.minimap.size.fit","Fit"),value:"fit"}])),s.push(n(ne.NC("context.minimap.slider","Slider"),t.enabled,"editor.minimap.showSlider",t.showSlider,[{label:ne.NC("context.minimap.slider.mouseover","Mouse Over"),value:"mouseover"},{label:ne.NC("context.minimap.slider.always","Always"),value:"always"}]));const r=this._editor.getOption(127)&&!it.gn;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:r?this._editor.getDomNode():void 0,getAnchor:()=>e,getActions:()=>s,onHide:e=>{this._contextMenuIsBeingShownCount--,this._editor.focus()}})}_keybindingFor(e){return this._keybindingService.lookupKeybinding(e.id)}dispose(){this._contextMenuIsBeingShownCount>0&&this._contextViewService.hideContextView(),this._toDispose.dispose()}};nc.ID="editor.contrib.contextmenu",nc=tc=ic([oc(1,Li.i),oc(2,Li.u),oc(3,ae.i6),oc(4,ki.d),oc(5,se.co),oc(6,re.Ui),oc(7,Rt.ec)],nc);class sc extends ee.R6{constructor(){super({id:"editor.action.showContextMenu",label:ne.NC("action.showContextMenu.label","Show Editor Context Menu"),alias:"Show Editor Context Menu",precondition:void 0,kbOpts:{kbExpr:oe.u.textInputFocus,primary:1092,weight:100}})}run(e,t){var i;null===(i=nc.get(t))||void 0===i||i.showContextMenu()}}(0,ee._K)(nc.ID,nc,2),(0,ee.Qr)(sc);class rc{constructor(e){this.selections=e}equals(e){const t=this.selections.length;if(t!==e.selections.length)return!1;for(let i=0;i<t;i++)if(!this.selections[i].equalsSelection(e.selections[i]))return!1;return!0}}class ac{constructor(e,t,i){this.cursorState=e,this.scrollTop=t,this.scrollLeft=i}}class lc extends Fe.JT{static get(e){return e.getContribution(lc.ID)}constructor(e){super(),this._editor=e,this._isCursorUndoRedo=!1,this._undoStack=[],this._redoStack=[],this._register(e.onDidChangeModel((e=>{this._undoStack=[],this._redoStack=[]}))),this._register(e.onDidChangeModelContent((e=>{this._undoStack=[],this._redoStack=[]}))),this._register(e.onDidChangeCursorSelection((t=>{if(this._isCursorUndoRedo)return;if(!t.oldSelections)return;if(t.oldModelVersionId!==t.modelVersionId)return;const i=new rc(t.oldSelections);this._undoStack.length>0&&this._undoStack[this._undoStack.length-1].cursorState.equals(i)||(this._undoStack.push(new ac(i,e.getScrollTop(),e.getScrollLeft())),this._redoStack=[],this._undoStack.length>50&&this._undoStack.shift())})))}cursorUndo(){this._editor.hasModel()&&0!==this._undoStack.length&&(this._redoStack.push(new ac(new rc(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._undoStack.pop()))}cursorRedo(){this._editor.hasModel()&&0!==this._redoStack.length&&(this._undoStack.push(new ac(new rc(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._redoStack.pop()))}_applyState(e){this._isCursorUndoRedo=!0,this._editor.setSelections(e.cursorState.selections),this._editor.setScrollPosition({scrollTop:e.scrollTop,scrollLeft:e.scrollLeft}),this._isCursorUndoRedo=!1}}lc.ID="editor.contrib.cursorUndoRedoController";class dc extends ee.R6{constructor(){super({id:"cursorUndo",label:ne.NC("cursor.undo","Cursor Undo"),alias:"Cursor Undo",precondition:void 0,kbOpts:{kbExpr:oe.u.textInputFocus,primary:2099,weight:100}})}run(e,t,i){var o;null===(o=lc.get(t))||void 0===o||o.cursorUndo()}}class cc extends ee.R6{constructor(){super({id:"cursorRedo",label:ne.NC("cursor.redo","Cursor Redo"),alias:"Cursor Redo",precondition:void 0})}run(e,t,i){var o;null===(o=lc.get(t))||void 0===o||o.cursorRedo()}}(0,ee._K)(lc.ID,lc,0),(0,ee.Qr)(dc),(0,ee.Qr)(cc);class hc{constructor(e,t,i){this.selection=e,this.targetPosition=t,this.copy=i,this.targetSelection=null}getEditOperations(e,t){const i=e.getValueInRange(this.selection);this.copy||t.addEditOperation(this.selection,null),t.addEditOperation(new He.e(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column),i),!this.selection.containsPosition(this.targetPosition)||this.copy&&(this.selection.getEndPosition().equals(this.targetPosition)||this.selection.getStartPosition().equals(this.targetPosition))?this.copy?this.targetSelection=new ke.Y(this.targetPosition.lineNumber,this.targetPosition.column,this.selection.endLineNumber-this.selection.startLineNumber+this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn):this.targetPosition.lineNumber>this.selection.endLineNumber?this.targetSelection=new ke.Y(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn):this.targetPosition.lineNumber<this.selection.endLineNumber?this.targetSelection=new ke.Y(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber+this.selection.endLineNumber-this.selection.startLineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn):this.selection.endColumn<=this.targetPosition.column?this.targetSelection=new ke.Y(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,(this.selection.startLineNumber,this.selection.endLineNumber,this.targetPosition.column-this.selection.endColumn+this.selection.startColumn),this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column:this.selection.endColumn):this.targetSelection=new ke.Y(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column+this.selection.endColumn-this.selection.startColumn):this.targetSelection=this.selection}computeCursorState(e,t){return this.targetSelection}}function uc(e){return it.dz?e.altKey:e.ctrlKey}class gc extends Fe.JT{constructor(e){super(),this._editor=e,this._dndDecorationIds=this._editor.createDecorationsCollection(),this._register(this._editor.onMouseDown((e=>this._onEditorMouseDown(e)))),this._register(this._editor.onMouseUp((e=>this._onEditorMouseUp(e)))),this._register(this._editor.onMouseDrag((e=>this._onEditorMouseDrag(e)))),this._register(this._editor.onMouseDrop((e=>this._onEditorMouseDrop(e)))),this._register(this._editor.onMouseDropCanceled((()=>this._onEditorMouseDropCanceled()))),this._register(this._editor.onKeyDown((e=>this.onEditorKeyDown(e)))),this._register(this._editor.onKeyUp((e=>this.onEditorKeyUp(e)))),this._register(this._editor.onDidBlurEditorWidget((()=>this.onEditorBlur()))),this._register(this._editor.onDidBlurEditorText((()=>this.onEditorBlur()))),this._mouseDown=!1,this._modifierPressed=!1,this._dragSelection=null}onEditorBlur(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1}onEditorKeyDown(e){this._editor.getOption(35)&&!this._editor.getOption(22)&&(uc(e)&&(this._modifierPressed=!0),this._mouseDown&&uc(e)&&this._editor.updateOptions({mouseStyle:"copy"}))}onEditorKeyUp(e){this._editor.getOption(35)&&!this._editor.getOption(22)&&(uc(e)&&(this._modifierPressed=!1),this._mouseDown&&e.keyCode===gc.TRIGGER_KEY_VALUE&&this._editor.updateOptions({mouseStyle:"default"}))}_onEditorMouseDown(e){this._mouseDown=!0}_onEditorMouseUp(e){this._mouseDown=!1,this._editor.updateOptions({mouseStyle:"text"})}_onEditorMouseDrag(e){const t=e.target;if(null===this._dragSelection){const e=(this._editor.getSelections()||[]).filter((e=>t.position&&e.containsPosition(t.position)));if(1!==e.length)return;this._dragSelection=e[0]}uc(e.event)?this._editor.updateOptions({mouseStyle:"copy"}):this._editor.updateOptions({mouseStyle:"default"}),t.position&&(this._dragSelection.containsPosition(t.position)?this._removeDecoration():this.showAt(t.position))}_onEditorMouseDropCanceled(){this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}_onEditorMouseDrop(e){if(e.target&&(this._hitContent(e.target)||this._hitMargin(e.target))&&e.target.position){const t=new We.L(e.target.position.lineNumber,e.target.position.column);if(null===this._dragSelection){let i=null;if(e.event.shiftKey){const e=this._editor.getSelection();if(e){const{selectionStartLineNumber:o,selectionStartColumn:n}=e;i=[new ke.Y(o,n,t.lineNumber,t.column)]}}else i=(this._editor.getSelections()||[]).map((e=>e.containsPosition(t)?new ke.Y(t.lineNumber,t.column,t.lineNumber,t.column):e));this._editor.setSelections(i||[],"mouse",3)}else(!this._dragSelection.containsPosition(t)||(uc(e.event)||this._modifierPressed)&&(this._dragSelection.getEndPosition().equals(t)||this._dragSelection.getStartPosition().equals(t)))&&(this._editor.pushUndoStop(),this._editor.executeCommand(gc.ID,new hc(this._dragSelection,t,uc(e.event)||this._modifierPressed)),this._editor.pushUndoStop())}this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}showAt(e){this._dndDecorationIds.set([{range:new He.e(e.lineNumber,e.column,e.lineNumber,e.column),options:gc._DECORATION_OPTIONS}]),this._editor.revealPosition(e,1)}_removeDecoration(){this._dndDecorationIds.clear()}_hitContent(e){return 6===e.type||7===e.type}_hitMargin(e){return 2===e.type||3===e.type||4===e.type}dispose(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1,super.dispose()}}var pc;gc.ID="editor.contrib.dragAndDrop",gc.TRIGGER_KEY_VALUE=it.dz?6:5,gc._DECORATION_OPTIONS=Be.qx.register({description:"dnd-target",className:"dnd-target"}),(0,ee._K)(gc.ID,gc,2),(0,ee._K)(Wi.ID,Wi,0),(0,es.y)(Vt),(0,ee.fK)(new class extends ee._l{constructor(){super({id:Ai,precondition:Oi,kbOpts:{weight:100,primary:2137}})}runEditorCommand(e,t){var i;return null===(i=Wi.get(t))||void 0===i?void 0:i.changePasteType()}}),(0,ee.fK)(new class extends ee._l{constructor(){super({id:"editor.hidePasteWidget",precondition:Oi,kbOpts:{weight:100,primary:9}})}runEditorCommand(e,t){var i;null===(i=Wi.get(t))||void 0===i||i.clearWidgets()}}),(0,ee.Qr)((pc=class extends ee.R6{constructor(){super({id:"editor.action.pasteAs",label:ne.NC("pasteAs","Paste As..."),alias:"Paste As...",precondition:oe.u.writable,metadata:{description:"Paste as",args:[{name:"args",schema:pc.argsSchema}]}})}run(e,t,i){var o;let n="string"===typeof(null===i||void 0===i?void 0:i.kind)?i.kind:void 0;return!n&&i&&(n="string"===typeof i.id?i.id:void 0),null===(o=Wi.get(t))||void 0===o?void 0:o.pasteAs(n?new gt(n):void 0)}},pc.argsSchema={type:"object",properties:{kind:{type:"string",description:ne.NC("pasteAs.kind","The kind of the paste edit to try applying. If not provided or there are multiple edits for this kind, the editor will show a picker.")}}},pc)),(0,ee.Qr)(class extends ee.R6{constructor(){super({id:"editor.action.pasteAsText",label:ne.NC("pasteAsText","Paste as Text"),alias:"Paste as Text",precondition:oe.u.writable})}run(e,t){var i;return null===(i=Wi.get(t))||void 0===i?void 0:i.pasteAs({providerId:Et.id})}});class mc{constructor(e){this.identifier=e}}const _c=(0,ni.yh)("treeViewsDndService");(0,Zo.z)(_c,class{constructor(){this._dragOperations=new Map}removeDragOperationTransfer(e){if(e&&this._dragOperations.has(e)){const t=this._dragOperations.get(e);return this._dragOperations.delete(e),t}}},1);var fc,vc=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},bc=function(e,t){return function(i,o){t(i,o,e)}};const Cc="editor.experimental.dropIntoEditor.defaultProvider",Sc="editor.changeDropType",yc=new ae.uy("dropWidgetVisible",!1,(0,ne.NC)("dropWidgetVisible","Whether the drop widget is showing"));let wc=fc=class extends Fe.JT{static get(e){return e.getContribution(fc.ID)}constructor(e,t,i,o,n){super(),this._configService=i,this._languageFeaturesService=o,this._treeViewsDragAndDropService=n,this.treeItemsTransfer=Ct.getInstance(),this._dropProgressManager=this._register(t.createInstance(di,"dropIntoEditor",e)),this._postDropWidgetManager=this._register(t.createInstance(Pi,"dropIntoEditor",e,yc,{id:Sc,label:(0,ne.NC)("postDropWidgetTitle","Show drop options...")})),this._register(e.onDropIntoEditor((t=>this.onDropIntoEditor(e,t.position,t.event))))}clearWidgets(){this._postDropWidgetManager.clear()}changeDropType(){this._postDropWidgetManager.tryShowSelector()}async onDropIntoEditor(e,t,i){var o;if(!i.dataTransfer||!e.hasModel())return;null===(o=this._currentOperation)||void 0===o||o.cancel(),e.focus(),e.setPosition(t);const n=(0,Oe.PG)((async o=>{const s=new ti.Dl(e,1,void 0,o);try{const n=await this.extractDataTransferData(i);if(0===n.size||s.token.isCancellationRequested)return;const r=e.getModel();if(!r)return;const a=this._languageFeaturesService.documentOnDropEditProvider.ordered(r).filter((e=>!e.dropMimeTypes||e.dropMimeTypes.some((e=>n.matches(e))))),l=await this.getDropEdits(a,r,t,n,s);if(s.token.isCancellationRequested)return;if(l.length){const i=this.getInitialActiveEditIndex(r,l),n="afterDrop"===e.getOption(36).showDropSelector;await this._postDropWidgetManager.applyEditAndShowIfNeeded([He.e.fromPositions(t)],{activeEditIndex:i,allEdits:l},n,(async e=>e),o)}}finally{s.dispose(),this._currentOperation===n&&(this._currentOperation=void 0)}}));this._dropProgressManager.showWhile(t,(0,ne.NC)("dropIntoEditorProgress","Running drop handlers. Click to cancel"),n),this._currentOperation=n}async getDropEdits(e,t,i,o,n){const s=await(0,Oe.eP)(Promise.all(e.map((async e=>{try{const s=await e.provideDocumentOnDropEdits(t,i,o,n.token);return null===s||void 0===s?void 0:s.map((t=>({...t,providerId:e.id})))}catch(s){console.error(s)}}))),n.token);return ei((0,nt.kX)(null!==s&&void 0!==s?s:[]).flat())}getInitialActiveEditIndex(e,t){const i=this._configService.getValue(Cc,{resource:e.uri});for(const[o,n]of Object.entries(i)){const e=new gt(n),i=t.findIndex((t=>e.value===t.providerId&&t.handledMimeType&&ct(o,[t.handledMimeType])));if(i>=0)return i}return 0}async extractDataTransferData(e){if(!e.dataTransfer)return new lt;const t=xt(e.dataTransfer);if(this.treeItemsTransfer.hasData(mc.prototype)){const e=this.treeItemsTransfer.getData(mc.prototype);if(Array.isArray(e))for(const i of e){const e=await this._treeViewsDragAndDropService.removeDragOperationTransfer(i.identifier);if(e)for(const[i,o]of e)t.replace(i,o)}}return t}};wc.ID="editor.contrib.dropIntoEditorController",wc=fc=vc([bc(1,ni.TG),bc(2,re.Ui),bc(3,kt.p),bc(4,_c)],wc),(0,ee._K)(wc.ID,wc,2),(0,es.y)(Ht),(0,ee.fK)(new class extends ee._l{constructor(){super({id:Sc,precondition:yc,kbOpts:{weight:100,primary:2137}})}runEditorCommand(e,t,i){var o;null===(o=wc.get(t))||void 0===o||o.changeDropType()}}),(0,ee.fK)(new class extends ee._l{constructor(){super({id:"editor.hideDropWidget",precondition:yc,kbOpts:{weight:100,primary:9}})}runEditorCommand(e,t,i){var o;null===(o=wc.get(t))||void 0===o||o.clearWidgets()}}),ft.B.as(Ln.IP.Configuration).registerConfiguration({...Zi.wk,properties:{[Cc]:{type:"object",scope:5,description:ne.NC("defaultProviderDescription","Configures the default drop provider to use for content of a given mime type."),default:{},additionalProperties:{type:"string"}}}});var xc=i(36729),Nc=i(52910),Lc=i(90255);class kc{constructor(e){this._editor=e,this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null,this._startPosition=this._editor.getPosition()}dispose(){this._editor.removeDecorations(this._allDecorations()),this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}reset(){this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}getCount(){return this._decorations.length}getFindScope(){return this._findScopeDecorationIds[0]?this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]):null}getFindScopes(){if(this._findScopeDecorationIds.length){const e=this._findScopeDecorationIds.map((e=>this._editor.getModel().getDecorationRange(e))).filter((e=>!!e));if(e.length)return e}return null}getStartPosition(){return this._startPosition}setStartPosition(e){this._startPosition=e,this.setCurrentFindMatch(null)}_getDecorationIndex(e){const t=this._decorations.indexOf(e);return t>=0?t+1:1}getDecorationRangeAt(e){const t=e<this._decorations.length?this._decorations[e]:null;return t?this._editor.getModel().getDecorationRange(t):null}getCurrentMatchesPosition(e){const t=this._editor.getModel().getDecorationsInRange(e);for(const i of t){const e=i.options;if(e===kc._FIND_MATCH_DECORATION||e===kc._CURRENT_FIND_MATCH_DECORATION)return this._getDecorationIndex(i.id)}return 0}setCurrentFindMatch(e){let t=null,i=0;if(e)for(let o=0,n=this._decorations.length;o<n;o++){const n=this._editor.getModel().getDecorationRange(this._decorations[o]);if(e.equalsRange(n)){t=this._decorations[o],i=o+1;break}}return null===this._highlightedDecorationId&&null===t||this._editor.changeDecorations((e=>{if(null!==this._highlightedDecorationId&&(e.changeDecorationOptions(this._highlightedDecorationId,kc._FIND_MATCH_DECORATION),this._highlightedDecorationId=null),null!==t&&(this._highlightedDecorationId=t,e.changeDecorationOptions(this._highlightedDecorationId,kc._CURRENT_FIND_MATCH_DECORATION)),null!==this._rangeHighlightDecorationId&&(e.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),null!==t){let i=this._editor.getModel().getDecorationRange(t);if(i.startLineNumber!==i.endLineNumber&&1===i.endColumn){const e=i.endLineNumber-1,t=this._editor.getModel().getLineMaxColumn(e);i=new He.e(i.startLineNumber,i.startColumn,e,t)}this._rangeHighlightDecorationId=e.addDecoration(i,kc._RANGE_HIGHLIGHT_DECORATION)}})),i}set(e,t){this._editor.changeDecorations((i=>{let o=kc._FIND_MATCH_DECORATION;const n=[];if(e.length>1e3){o=kc._FIND_MATCH_NO_OVERVIEW_DECORATION;const t=this._editor.getModel().getLineCount(),i=this._editor.getLayoutInfo().height/t,s=Math.max(2,Math.ceil(3/i));let r=e[0].range.startLineNumber,a=e[0].range.endLineNumber;for(let o=1,l=e.length;o<l;o++){const t=e[o].range;a+s>=t.startLineNumber?t.endLineNumber>a&&(a=t.endLineNumber):(n.push({range:new He.e(r,1,a,1),options:kc._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),r=t.startLineNumber,a=t.endLineNumber)}n.push({range:new He.e(r,1,a,1),options:kc._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}const s=new Array(e.length);for(let t=0,r=e.length;t<r;t++)s[t]={range:e[t].range,options:o};this._decorations=i.deltaDecorations(this._decorations,s),this._overviewRulerApproximateDecorations=i.deltaDecorations(this._overviewRulerApproximateDecorations,n),this._rangeHighlightDecorationId&&(i.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),this._findScopeDecorationIds.length&&(this._findScopeDecorationIds.forEach((e=>i.removeDecoration(e))),this._findScopeDecorationIds=[]),(null===t||void 0===t?void 0:t.length)&&(this._findScopeDecorationIds=t.map((e=>i.addDecoration(e,kc._FIND_SCOPE_DECORATION))))}))}matchBeforePosition(e){if(0===this._decorations.length)return null;for(let t=this._decorations.length-1;t>=0;t--){const i=this._decorations[t],o=this._editor.getModel().getDecorationRange(i);if(o&&!(o.endLineNumber>e.lineNumber)){if(o.endLineNumber<e.lineNumber)return o;if(!(o.endColumn>e.column))return o}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])}matchAfterPosition(e){if(0===this._decorations.length)return null;for(let t=0,i=this._decorations.length;t<i;t++){const i=this._decorations[t],o=this._editor.getModel().getDecorationRange(i);if(o&&!(o.startLineNumber<e.lineNumber)){if(o.startLineNumber>e.lineNumber)return o;if(!(o.startColumn<e.column))return o}}return this._editor.getModel().getDecorationRange(this._decorations[0])}_allDecorations(){let e=[];return e=e.concat(this._decorations),e=e.concat(this._overviewRulerApproximateDecorations),this._findScopeDecorationIds.length&&e.push(...this._findScopeDecorationIds),this._rangeHighlightDecorationId&&e.push(this._rangeHighlightDecorationId),e}}kc._CURRENT_FIND_MATCH_DECORATION=Be.qx.register({description:"current-find-match",stickiness:1,zIndex:13,className:"currentFindMatch",showIfCollapsed:!0,overviewRuler:{color:(0,Ue.EN)(ze.Fm_),position:Ve.sh.Center},minimap:{color:(0,Ue.EN)(ze.SUY),position:1}}),kc._FIND_MATCH_DECORATION=Be.qx.register({description:"find-match",stickiness:1,zIndex:10,className:"findMatch",showIfCollapsed:!0,overviewRuler:{color:(0,Ue.EN)(ze.Fm_),position:Ve.sh.Center},minimap:{color:(0,Ue.EN)(ze.SUY),position:1}}),kc._FIND_MATCH_NO_OVERVIEW_DECORATION=Be.qx.register({description:"find-match-no-overview",stickiness:1,className:"findMatch",showIfCollapsed:!0}),kc._FIND_MATCH_ONLY_OVERVIEW_DECORATION=Be.qx.register({description:"find-match-only-overview",stickiness:1,overviewRuler:{color:(0,Ue.EN)(ze.Fm_),position:Ve.sh.Center}}),kc._RANGE_HIGHLIGHT_DECORATION=Be.qx.register({description:"find-range-highlight",stickiness:1,className:"rangeHighlight",isWholeLine:!0}),kc._FIND_SCOPE_DECORATION=Be.qx.register({description:"find-scope",className:"findScope",isWholeLine:!0});class Dc{constructor(e,t,i){this._editorSelection=e,this._ranges=t,this._replaceStrings=i,this._trackedEditorSelectionId=null}getEditOperations(e,t){if(this._ranges.length>0){const e=[];for(let t=0;t<this._ranges.length;t++)e.push({range:this._ranges[t],text:this._replaceStrings[t]});e.sort(((e,t)=>He.e.compareRangesUsingStarts(e.range,t.range)));const i=[];let o=e[0];for(let t=1;t<e.length;t++)o.range.endLineNumber===e[t].range.startLineNumber&&o.range.endColumn===e[t].range.startColumn?(o.range=o.range.plusRange(e[t].range),o.text=o.text+e[t].text):(i.push(o),o=e[t]);i.push(o);for(const n of i)t.addEditOperation(n.range,n.text)}this._trackedEditorSelectionId=t.trackSelection(this._editorSelection)}computeCursorState(e,t){return t.getTrackedSelection(this._trackedEditorSelectionId)}}function Ic(e,t){if(e&&""!==e[0]){const i=Rc(e,t,"-"),o=Rc(e,t,"_");return i&&!o?Pc(e,t,"-"):!i&&o?Pc(e,t,"_"):e[0].toUpperCase()===e[0]?t.toUpperCase():e[0].toLowerCase()===e[0]?t.toLowerCase():ii.Kw(e[0][0])&&t.length>0?t[0].toUpperCase()+t.substr(1):e[0][0].toUpperCase()!==e[0][0]&&t.length>0?t[0].toLowerCase()+t.substr(1):t}return t}function Rc(e,t,i){return-1!==e[0].indexOf(i)&&-1!==t.indexOf(i)&&e[0].split(i).length===t.split(i).length}function Pc(e,t,i){const o=t.split(i),n=e[0].split(i);let s="";return o.forEach(((e,t)=>{s+=Ic([n[t]],e)+i})),s.slice(0,-1)}class Mc{constructor(e){this.staticValue=e,this.kind=0}}class Tc{constructor(e){this.pieces=e,this.kind=1}}class Ec{static fromStaticValue(e){return new Ec([Ac.staticValue(e)])}get hasReplacementPatterns(){return 1===this._state.kind}constructor(e){e&&0!==e.length?1===e.length&&null!==e[0].staticValue?this._state=new Mc(e[0].staticValue):this._state=new Tc(e):this._state=new Mc("")}buildReplaceString(e,t){if(0===this._state.kind)return t?Ic(e,this._state.staticValue):this._state.staticValue;let i="";for(let o=0,n=this._state.pieces.length;o<n;o++){const t=this._state.pieces[o];if(null!==t.staticValue){i+=t.staticValue;continue}let n=Ec._substitute(t.matchIndex,e);if(null!==t.caseOps&&t.caseOps.length>0){const e=[],i=t.caseOps.length;let o=0;for(let s=0,r=n.length;s<r;s++){if(o>=i){e.push(n.slice(s));break}switch(t.caseOps[o]){case"U":e.push(n[s].toUpperCase());break;case"u":e.push(n[s].toUpperCase()),o++;break;case"L":e.push(n[s].toLowerCase());break;case"l":e.push(n[s].toLowerCase()),o++;break;default:e.push(n[s])}}n=e.join("")}i+=n}return i}static _substitute(e,t){if(null===t)return"";if(0===e)return t[0];let i="";for(;e>0;){if(e<t.length){return(t[e]||"")+i}i=String(e%10)+i,e=Math.floor(e/10)}return"$"+i}}class Ac{static staticValue(e){return new Ac(e,-1,null)}static caseOps(e,t){return new Ac(null,e,t)}constructor(e,t,i){this.staticValue=e,this.matchIndex=t,i&&0!==i.length?this.caseOps=i.slice(0):this.caseOps=null}}class Oc{constructor(e){this._source=e,this._lastCharIndex=0,this._result=[],this._resultLen=0,this._currentStaticPiece=""}emitUnchanged(e){this._emitStatic(this._source.substring(this._lastCharIndex,e)),this._lastCharIndex=e}emitStatic(e,t){this._emitStatic(e),this._lastCharIndex=t}_emitStatic(e){0!==e.length&&(this._currentStaticPiece+=e)}emitMatchIndex(e,t,i){0!==this._currentStaticPiece.length&&(this._result[this._resultLen++]=Ac.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),this._result[this._resultLen++]=Ac.caseOps(e,i),this._lastCharIndex=t}finalize(){return this.emitUnchanged(this._source.length),0!==this._currentStaticPiece.length&&(this._result[this._resultLen++]=Ac.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),new Ec(this._result)}}const Fc=new ae.uy("findWidgetVisible",!1),Wc=(Fc.toNegated(),new ae.uy("findInputFocussed",!1)),Hc=new ae.uy("replaceInputFocussed",!1),Vc={primary:545,mac:{primary:2593}},Bc={primary:565,mac:{primary:2613}},zc={primary:560,mac:{primary:2608}},Uc={primary:554,mac:{primary:2602}},Kc={primary:558,mac:{primary:2606}},jc="actions.find",qc="actions.findWithSelection",Gc="editor.actions.findWithArgs",Qc="editor.action.nextMatchFindAction",Zc="editor.action.previousMatchFindAction",Yc="editor.action.goToMatchFindAction",Jc="editor.action.nextSelectionMatchFindAction",$c="editor.action.previousSelectionMatchFindAction",Xc="editor.action.startFindReplaceAction",eh="closeFindWidget",th="toggleFindCaseSensitive",ih="toggleFindWholeWord",oh="toggleFindRegex",nh="toggleFindInSelection",sh="togglePreserveCase",rh="editor.action.replaceOne",ah="editor.action.replaceAll",lh="editor.action.selectAllMatches",dh=19999;class ch{constructor(e,t){this._toDispose=new Fe.SL,this._editor=e,this._state=t,this._isDisposed=!1,this._startSearchingTimer=new Oe._F,this._decorations=new kc(e),this._toDispose.add(this._decorations),this._updateDecorationsScheduler=new Oe.pY((()=>this.research(!1)),100),this._toDispose.add(this._updateDecorationsScheduler),this._toDispose.add(this._editor.onDidChangeCursorPosition((e=>{3!==e.reason&&5!==e.reason&&6!==e.reason||this._decorations.setStartPosition(this._editor.getPosition())}))),this._ignoreModelContentChanged=!1,this._toDispose.add(this._editor.onDidChangeModelContent((e=>{this._ignoreModelContentChanged||(e.isFlush&&this._decorations.reset(),this._decorations.setStartPosition(this._editor.getPosition()),this._updateDecorationsScheduler.schedule())}))),this._toDispose.add(this._state.onFindReplaceStateChange((e=>this._onStateChanged(e)))),this.research(!1,this._state.searchScope)}dispose(){this._isDisposed=!0,(0,Fe.B9)(this._startSearchingTimer),this._toDispose.dispose()}_onStateChanged(e){if(!this._isDisposed&&this._editor.hasModel()&&(e.searchString||e.isReplaceRevealed||e.isRegex||e.wholeWord||e.matchCase||e.searchScope)){this._editor.getModel().isTooLargeForSyncing()?(this._startSearchingTimer.cancel(),this._startSearchingTimer.setIfNotSet((()=>{e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor)}),240)):e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor)}}static _getSearchRange(e,t){return t||e.getFullModelRange()}research(e,t){let i=null;"undefined"!==typeof t?null!==t&&(i=Array.isArray(t)?t:[t]):i=this._decorations.getFindScopes(),null!==i&&(i=i.map((e=>{if(e.startLineNumber!==e.endLineNumber){let t=e.endLineNumber;return 1===e.endColumn&&(t-=1),new He.e(e.startLineNumber,1,t,this._editor.getModel().getLineMaxColumn(t))}return e})));const o=this._findMatches(i,!1,dh);this._decorations.set(o,i);const n=this._editor.getSelection();let s=this._decorations.getCurrentMatchesPosition(n);if(0===s&&o.length>0){const e=(0,Nc.J_)(o.map((e=>e.range)),(e=>He.e.compareRangesUsingStarts(e,n)>=0));s=e>0?e-1+1:s}this._state.changeMatchInfo(s,this._decorations.getCount(),void 0),e&&this._editor.getOption(41).cursorMoveOnType&&this._moveToNextMatch(this._decorations.getStartPosition())}_hasMatches(){return this._state.matchesCount>0}_cannotFind(){if(!this._hasMatches()){const e=this._decorations.getFindScope();return e&&this._editor.revealRangeInCenterIfOutsideViewport(e,0),!0}return!1}_setCurrentFindMatch(e){const t=this._decorations.setCurrentFindMatch(e);this._state.changeMatchInfo(t,this._decorations.getCount(),e),this._editor.setSelection(e),this._editor.revealRangeInCenterIfOutsideViewport(e,0)}_prevSearchPosition(e){const t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:i,column:o}=e;const n=this._editor.getModel();return t||1===o?(1===i?i=n.getLineCount():i--,o=n.getLineMaxColumn(i)):o--,new We.L(i,o)}_moveToPrevMatch(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this._state.canNavigateBack()){const t=this._decorations.matchAfterPosition(e);return void(t&&this._setCurrentFindMatch(t))}if(this._decorations.getCount()<dh){let t=this._decorations.matchBeforePosition(e);return t&&t.isEmpty()&&t.getStartPosition().equals(e)&&(e=this._prevSearchPosition(e),t=this._decorations.matchBeforePosition(e)),void(t&&this._setCurrentFindMatch(t))}if(this._cannotFind())return;const i=this._decorations.getFindScope(),o=ch._getSearchRange(this._editor.getModel(),i);o.getEndPosition().isBefore(e)&&(e=o.getEndPosition()),e.isBefore(o.getStartPosition())&&(e=o.getEndPosition());const{lineNumber:n,column:s}=e,r=this._editor.getModel();let a=new We.L(n,s),l=r.findPreviousMatch(this._state.searchString,a,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(131):null,!1);return l&&l.range.isEmpty()&&l.range.getStartPosition().equals(a)&&(a=this._prevSearchPosition(a),l=r.findPreviousMatch(this._state.searchString,a,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(131):null,!1)),l?t||o.containsRange(l.range)?void this._setCurrentFindMatch(l.range):this._moveToPrevMatch(l.range.getStartPosition(),!0):void 0}moveToPrevMatch(){this._moveToPrevMatch(this._editor.getSelection().getStartPosition())}_nextSearchPosition(e){const t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:i,column:o}=e;const n=this._editor.getModel();return t||o===n.getLineMaxColumn(i)?(i===n.getLineCount()?i=1:i++,o=1):o++,new We.L(i,o)}_moveToNextMatch(e){if(!this._state.canNavigateForward()){const t=this._decorations.matchBeforePosition(e);return void(t&&this._setCurrentFindMatch(t))}if(this._decorations.getCount()<dh){let t=this._decorations.matchAfterPosition(e);return t&&t.isEmpty()&&t.getStartPosition().equals(e)&&(e=this._nextSearchPosition(e),t=this._decorations.matchAfterPosition(e)),void(t&&this._setCurrentFindMatch(t))}const t=this._getNextMatch(e,!1,!0);t&&this._setCurrentFindMatch(t.range)}_getNextMatch(e,t,i){let o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(this._cannotFind())return null;const n=this._decorations.getFindScope(),s=ch._getSearchRange(this._editor.getModel(),n);s.getEndPosition().isBefore(e)&&(e=s.getStartPosition()),e.isBefore(s.getStartPosition())&&(e=s.getStartPosition());const{lineNumber:r,column:a}=e,l=this._editor.getModel();let d=new We.L(r,a),c=l.findNextMatch(this._state.searchString,d,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(131):null,t);return i&&c&&c.range.isEmpty()&&c.range.getStartPosition().equals(d)&&(d=this._nextSearchPosition(d),c=l.findNextMatch(this._state.searchString,d,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(131):null,t)),c?o||s.containsRange(c.range)?c:this._getNextMatch(c.range.getEndPosition(),t,i,!0):null}moveToNextMatch(){this._moveToNextMatch(this._editor.getSelection().getEndPosition())}_moveToMatch(e){const t=this._decorations.getDecorationRangeAt(e);t&&this._setCurrentFindMatch(t)}moveToMatch(e){this._moveToMatch(e)}_getReplacePattern(){return this._state.isRegex?function(e){if(!e||0===e.length)return new Ec(null);const t=[],i=new Oc(e);for(let o=0,n=e.length;o<n;o++){const s=e.charCodeAt(o);if(92!==s){if(36===s){if(o++,o>=n)break;const s=e.charCodeAt(o);if(36===s){i.emitUnchanged(o-1),i.emitStatic("$",o+1);continue}if(48===s||38===s){i.emitUnchanged(o-1),i.emitMatchIndex(0,o+1,t),t.length=0;continue}if(49<=s&&s<=57){let r=s-48;if(o+1<n){const n=e.charCodeAt(o+1);if(48<=n&&n<=57){o++,r=10*r+(n-48),i.emitUnchanged(o-2),i.emitMatchIndex(r,o+1,t),t.length=0;continue}}i.emitUnchanged(o-1),i.emitMatchIndex(r,o+1,t),t.length=0;continue}}}else{if(o++,o>=n)break;const s=e.charCodeAt(o);switch(s){case 92:i.emitUnchanged(o-1),i.emitStatic("\\",o+1);break;case 110:i.emitUnchanged(o-1),i.emitStatic("\n",o+1);break;case 116:i.emitUnchanged(o-1),i.emitStatic("\t",o+1);break;case 117:case 85:case 108:case 76:i.emitUnchanged(o-1),i.emitStatic("",o+1),t.push(String.fromCharCode(s))}}}return i.finalize()}(this._state.replaceString):Ec.fromStaticValue(this._state.replaceString)}replace(){if(!this._hasMatches())return;const e=this._getReplacePattern(),t=this._editor.getSelection(),i=this._getNextMatch(t.getStartPosition(),!0,!1);if(i)if(t.equalsRange(i.range)){const o=e.buildReplaceString(i.matches,this._state.preserveCase),n=new $e.T4(t,o);this._executeEditorCommand("replace",n),this._decorations.setStartPosition(new We.L(t.startLineNumber,t.startColumn+o.length)),this.research(!0)}else this._decorations.setStartPosition(this._editor.getPosition()),this._setCurrentFindMatch(i.range)}_findMatches(e,t,i){const o=(e||[null]).map((e=>ch._getSearchRange(this._editor.getModel(),e)));return this._editor.getModel().findMatches(this._state.searchString,o,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(131):null,t,i)}replaceAll(){if(!this._hasMatches())return;const e=this._decorations.getFindScopes();null===e&&this._state.matchesCount>=dh?this._largeReplaceAll():this._regularReplaceAll(e),this.research(!1)}_largeReplaceAll(){const e=new Lc.bc(this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(131):null).parseSearchRequest();if(!e)return;let t=e.regex;if(!t.multiline){let e="mu";t.ignoreCase&&(e+="i"),t.global&&(e+="g"),t=new RegExp(t.source,e)}const i=this._editor.getModel(),o=i.getValue(1),n=i.getFullModelRange(),s=this._getReplacePattern();let r;const a=this._state.preserveCase;r=s.hasReplacementPatterns||a?o.replace(t,(function(){return s.buildReplaceString(arguments,a)})):o.replace(t,s.buildReplaceString(null,a));const l=new $e.hP(n,r,this._editor.getSelection());this._executeEditorCommand("replaceAll",l)}_regularReplaceAll(e){const t=this._getReplacePattern(),i=this._findMatches(e,t.hasReplacementPatterns||this._state.preserveCase,1073741824),o=[];for(let s=0,r=i.length;s<r;s++)o[s]=t.buildReplaceString(i[s].matches,this._state.preserveCase);const n=new Dc(this._editor.getSelection(),i.map((e=>e.range)),o);this._executeEditorCommand("replaceAll",n)}selectAllMatches(){if(!this._hasMatches())return;const e=this._decorations.getFindScopes();let t=this._findMatches(e,!1,1073741824).map((e=>new ke.Y(e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn)));const i=this._editor.getSelection();for(let o=0,n=t.length;o<n;o++){if(t[o].equalsRange(i)){t=[i].concat(t.slice(0,o)).concat(t.slice(o+1));break}}this._editor.setSelections(t)}_executeEditorCommand(e,t){try{this._ignoreModelContentChanged=!0,this._editor.pushUndoStop(),this._editor.executeCommand(e,t),this._editor.pushUndoStop()}finally{this._ignoreModelContentChanged=!1}}}var hh=i(14456),uh=i(14561);class gh extends Ss.${constructor(e,t,i){super(),this._hideSoon=this._register(new Oe.pY((()=>this._hide()),2e3)),this._isVisible=!1,this._editor=e,this._state=t,this._keybindingService=i,this._domNode=document.createElement("div"),this._domNode.className="findOptionsWidget",this._domNode.style.display="none",this._domNode.style.top="10px",this._domNode.style.zIndex="12",this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true");const o={inputActiveOptionBorder:(0,ze.n_1)(ze.PRb),inputActiveOptionForeground:(0,ze.n_1)(ze.Pvw),inputActiveOptionBackground:(0,ze.n_1)(ze.XEs)},n=this._register((0,uh.p0)());this.caseSensitive=this._register(new hh.rk({appendTitle:this._keybindingLabelFor(th),isChecked:this._state.matchCase,hoverDelegate:n,...o})),this._domNode.appendChild(this.caseSensitive.domNode),this._register(this.caseSensitive.onChange((()=>{this._state.change({matchCase:this.caseSensitive.checked},!1)}))),this.wholeWords=this._register(new hh.Qx({appendTitle:this._keybindingLabelFor(ih),isChecked:this._state.wholeWord,hoverDelegate:n,...o})),this._domNode.appendChild(this.wholeWords.domNode),this._register(this.wholeWords.onChange((()=>{this._state.change({wholeWord:this.wholeWords.checked},!1)}))),this.regex=this._register(new hh.eH({appendTitle:this._keybindingLabelFor(oh),isChecked:this._state.isRegex,hoverDelegate:n,...o})),this._domNode.appendChild(this.regex.domNode),this._register(this.regex.onChange((()=>{this._state.change({isRegex:this.regex.checked},!1)}))),this._editor.addOverlayWidget(this),this._register(this._state.onFindReplaceStateChange((e=>{let t=!1;e.isRegex&&(this.regex.checked=this._state.isRegex,t=!0),e.wholeWord&&(this.wholeWords.checked=this._state.wholeWord,t=!0),e.matchCase&&(this.caseSensitive.checked=this._state.matchCase,t=!0),!this._state.isRevealed&&t&&this._revealTemporarily()}))),this._register(X.nm(this._domNode,X.tw.MOUSE_LEAVE,(e=>this._onMouseLeave()))),this._register(X.nm(this._domNode,"mouseover",(e=>this._onMouseOver())))}_keybindingLabelFor(e){const t=this._keybindingService.lookupKeybinding(e);return t?" (".concat(t.getLabel(),")"):""}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return gh.ID}getDomNode(){return this._domNode}getPosition(){return{preference:0}}highlightFindOptions(){this._revealTemporarily()}_revealTemporarily(){this._show(),this._hideSoon.schedule()}_onMouseLeave(){this._hideSoon.schedule()}_onMouseOver(){this._hideSoon.cancel()}_show(){this._isVisible||(this._isVisible=!0,this._domNode.style.display="block")}_hide(){this._isVisible&&(this._isVisible=!1,this._domNode.style.display="none")}}function ph(e,t){return 1===e||2!==e&&t}gh.ID="editor.contrib.findOptionsWidget";class mh extends Fe.JT{get searchString(){return this._searchString}get replaceString(){return this._replaceString}get isRevealed(){return this._isRevealed}get isReplaceRevealed(){return this._isReplaceRevealed}get isRegex(){return ph(this._isRegexOverride,this._isRegex)}get wholeWord(){return ph(this._wholeWordOverride,this._wholeWord)}get matchCase(){return ph(this._matchCaseOverride,this._matchCase)}get preserveCase(){return ph(this._preserveCaseOverride,this._preserveCase)}get actualIsRegex(){return this._isRegex}get actualWholeWord(){return this._wholeWord}get actualMatchCase(){return this._matchCase}get actualPreserveCase(){return this._preserveCase}get searchScope(){return this._searchScope}get matchesPosition(){return this._matchesPosition}get matchesCount(){return this._matchesCount}get currentMatch(){return this._currentMatch}constructor(){super(),this._onFindReplaceStateChange=this._register(new ui.Q5),this.onFindReplaceStateChange=this._onFindReplaceStateChange.event,this._searchString="",this._replaceString="",this._isRevealed=!1,this._isReplaceRevealed=!1,this._isRegex=!1,this._isRegexOverride=0,this._wholeWord=!1,this._wholeWordOverride=0,this._matchCase=!1,this._matchCaseOverride=0,this._preserveCase=!1,this._preserveCaseOverride=0,this._searchScope=null,this._matchesPosition=0,this._matchesCount=0,this._currentMatch=null,this._loop=!0,this._isSearching=!1,this._filters=null}changeMatchInfo(e,t,i){const o={moveCursor:!1,updateHistory:!1,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let n=!1;0===t&&(e=0),e>t&&(e=t),this._matchesPosition!==e&&(this._matchesPosition=e,o.matchesPosition=!0,n=!0),this._matchesCount!==t&&(this._matchesCount=t,o.matchesCount=!0,n=!0),"undefined"!==typeof i&&(He.e.equalsRange(this._currentMatch,i)||(this._currentMatch=i,o.currentMatch=!0,n=!0)),n&&this._onFindReplaceStateChange.fire(o)}change(e,t){var i;const o={moveCursor:t,updateHistory:!(arguments.length>2&&void 0!==arguments[2])||arguments[2],searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let n=!1;const s=this.isRegex,r=this.wholeWord,a=this.matchCase,l=this.preserveCase;"undefined"!==typeof e.searchString&&this._searchString!==e.searchString&&(this._searchString=e.searchString,o.searchString=!0,n=!0),"undefined"!==typeof e.replaceString&&this._replaceString!==e.replaceString&&(this._replaceString=e.replaceString,o.replaceString=!0,n=!0),"undefined"!==typeof e.isRevealed&&this._isRevealed!==e.isRevealed&&(this._isRevealed=e.isRevealed,o.isRevealed=!0,n=!0),"undefined"!==typeof e.isReplaceRevealed&&this._isReplaceRevealed!==e.isReplaceRevealed&&(this._isReplaceRevealed=e.isReplaceRevealed,o.isReplaceRevealed=!0,n=!0),"undefined"!==typeof e.isRegex&&(this._isRegex=e.isRegex),"undefined"!==typeof e.wholeWord&&(this._wholeWord=e.wholeWord),"undefined"!==typeof e.matchCase&&(this._matchCase=e.matchCase),"undefined"!==typeof e.preserveCase&&(this._preserveCase=e.preserveCase),"undefined"!==typeof e.searchScope&&((null===(i=e.searchScope)||void 0===i?void 0:i.every((e=>{var t;return null===(t=this._searchScope)||void 0===t?void 0:t.some((t=>!He.e.equalsRange(t,e)))})))||(this._searchScope=e.searchScope,o.searchScope=!0,n=!0)),"undefined"!==typeof e.loop&&this._loop!==e.loop&&(this._loop=e.loop,o.loop=!0,n=!0),"undefined"!==typeof e.isSearching&&this._isSearching!==e.isSearching&&(this._isSearching=e.isSearching,o.isSearching=!0,n=!0),"undefined"!==typeof e.filters&&(this._filters?this._filters.update(e.filters):this._filters=e.filters,o.filters=!0,n=!0),this._isRegexOverride="undefined"!==typeof e.isRegexOverride?e.isRegexOverride:0,this._wholeWordOverride="undefined"!==typeof e.wholeWordOverride?e.wholeWordOverride:0,this._matchCaseOverride="undefined"!==typeof e.matchCaseOverride?e.matchCaseOverride:0,this._preserveCaseOverride="undefined"!==typeof e.preserveCaseOverride?e.preserveCaseOverride:0,s!==this.isRegex&&(n=!0,o.isRegex=!0),r!==this.wholeWord&&(n=!0,o.wholeWord=!0),a!==this.matchCase&&(n=!0,o.matchCase=!0),l!==this.preserveCase&&(n=!0,o.preserveCase=!0),n&&this._onFindReplaceStateChange.fire(o)}canNavigateBack(){return this.canNavigateInLoop()||1!==this.matchesPosition}canNavigateForward(){return this.canNavigateInLoop()||this.matchesPosition<this.matchesCount}canNavigateInLoop(){return this._loop||this.matchesCount>=dh}}var _h=i(79242),fh=i(51459),vh=i(92707);i(35542);const bh=ne.NC("defaultLabel","input"),Ch=ne.NC("label.preserveCaseToggle","Preserve Case");class Sh extends _h.Z{constructor(e){var t;super({icon:$.l.preserveCase,title:Ch+e.appendTitle,isChecked:e.isChecked,hoverDelegate:null!==(t=e.hoverDelegate)&&void 0!==t?t:(0,uh.tM)("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class yh extends Ss.${constructor(e,t,i,o){super(),this._showOptionButtons=i,this.fixFocusOnOptionClickEnabled=!0,this.cachedOptionsWidth=0,this._onDidOptionChange=this._register(new ui.Q5),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new ui.Q5),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new ui.Q5),this._onInput=this._register(new ui.Q5),this._onKeyUp=this._register(new ui.Q5),this._onPreserveCaseKeyDown=this._register(new ui.Q5),this.onPreserveCaseKeyDown=this._onPreserveCaseKeyDown.event,this.contextViewProvider=t,this.placeholder=o.placeholder||"",this.validation=o.validation,this.label=o.label||bh;const n=o.appendPreserveCaseLabel||"",s=o.history||[],r=!!o.flexibleHeight,a=!!o.flexibleWidth,l=o.flexibleMaxHeight;this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new vh.pG(this.domNode,this.contextViewProvider,{ariaLabel:this.label||"",placeholder:this.placeholder||"",validationOptions:{validation:this.validation},history:s,showHistoryHint:o.showHistoryHint,flexibleHeight:r,flexibleWidth:a,flexibleMaxHeight:l,inputBoxStyles:o.inputBoxStyles})),this.preserveCase=this._register(new Sh({appendTitle:n,isChecked:!1,...o.toggleStyles})),this._register(this.preserveCase.onChange((e=>{this._onDidOptionChange.fire(e),!e&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()}))),this._register(this.preserveCase.onKeyDown((e=>{this._onPreserveCaseKeyDown.fire(e)}))),this._showOptionButtons?this.cachedOptionsWidth=this.preserveCase.width():this.cachedOptionsWidth=0;const d=[this.preserveCase.domNode];this.onkeydown(this.domNode,(e=>{if(e.equals(15)||e.equals(17)||e.equals(9)){const t=d.indexOf(this.domNode.ownerDocument.activeElement);if(t>=0){let i=-1;e.equals(17)?i=(t+1)%d.length:e.equals(15)&&(i=0===t?d.length-1:t-1),e.equals(9)?(d[t].blur(),this.inputBox.focus()):i>=0&&d[i].focus(),X.zB.stop(e,!0)}}}));const c=document.createElement("div");c.className="controls",c.style.display=this._showOptionButtons?"block":"none",c.appendChild(this.preserveCase.domNode),this.domNode.appendChild(c),null===e||void 0===e||e.appendChild(this.domNode),this.onkeydown(this.inputBox.inputElement,(e=>this._onKeyDown.fire(e))),this.onkeyup(this.inputBox.inputElement,(e=>this._onKeyUp.fire(e))),this.oninput(this.inputBox.inputElement,(e=>this._onInput.fire())),this.onmousedown(this.inputBox.inputElement,(e=>this._onMouseDown.fire(e)))}enable(){this.domNode.classList.remove("disabled"),this.inputBox.enable(),this.preserveCase.enable()}disable(){this.domNode.classList.add("disabled"),this.inputBox.disable(),this.preserveCase.disable()}setEnabled(e){e?this.enable():this.disable()}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getPreserveCase(){return this.preserveCase.checked}setPreserveCase(e){this.preserveCase.checked=e}focusOnPreserve(){this.preserveCase.focus()}validate(){var e;null===(e=this.inputBox)||void 0===e||e.validate()}set width(e){this.inputBox.paddingRight=this.cachedOptionsWidth,this.domNode.style.width=e+"px"}dispose(){super.dispose()}}var wh=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},xh=function(e,t){return function(i,o){t(i,o,e)}};const Nh=new ae.uy("suggestWidgetVisible",!1,(0,ne.NC)("suggestWidgetVisible","Whether suggestion are visible")),Lh="historyNavigationWidgetFocus",kh="historyNavigationForwardsEnabled",Dh="historyNavigationBackwardsEnabled";let Ih;const Rh=[];function Ph(e,t){if(Rh.includes(t))throw new Error("Cannot register the same widget multiple times");Rh.push(t);const i=new Fe.SL,o=new ae.uy(Lh,!1).bindTo(e),n=new ae.uy(kh,!0).bindTo(e),s=new ae.uy(Dh,!0).bindTo(e),r=()=>{o.set(!0),Ih=t},a=()=>{o.set(!1),Ih===t&&(Ih=void 0)};return(0,X.H9)(t.element)&&r(),i.add(t.onDidFocus((()=>r()))),i.add(t.onDidBlur((()=>a()))),i.add((0,Fe.OF)((()=>{Rh.splice(Rh.indexOf(t),1),a()}))),{historyNavigationForwardsEnablement:n,historyNavigationBackwardsEnablement:s,dispose(){i.dispose()}}}let Mh=class extends fh.V{constructor(e,t,i,o){super(e,t,i);const n=this._register(o.createScoped(this.inputBox.element));this._register(Ph(n,this.inputBox))}};Mh=wh([xh(3,ae.i6)],Mh);let Th=class extends yh{constructor(e,t,i,o){super(e,t,arguments.length>4&&void 0!==arguments[4]&&arguments[4],i);const n=this._register(o.createScoped(this.inputBox.element));this._register(Ph(n,this.inputBox))}};function Eh(e){var t,i;return"Up"===(null===(t=e.lookupKeybinding("history.showPrevious"))||void 0===t?void 0:t.getElectronAccelerator())&&"Down"===(null===(i=e.lookupKeybinding("history.showNext"))||void 0===i?void 0:i.getElectronAccelerator())}Th=wh([xh(3,ae.i6)],Th),Nr.W.registerCommandAndKeybindingRule({id:"history.showPrevious",weight:200,when:ae.Ao.and(ae.Ao.has(Lh),ae.Ao.equals(Dh,!0),ae.Ao.not("isComposing"),Nh.isEqualTo(!1)),primary:16,secondary:[528],handler:e=>{null===Ih||void 0===Ih||Ih.showPreviousValue()}}),Nr.W.registerCommandAndKeybindingRule({id:"history.showNext",weight:200,when:ae.Ao.and(ae.Ao.has(Lh),ae.Ao.equals(kh,!0),ae.Ao.not("isComposing"),Nh.isEqualTo(!1)),primary:18,secondary:[530],handler:e=>{null===Ih||void 0===Ih||Ih.showNextValue()}});var Ah=i(34392);const Oh=(0,ys.q5)("find-selection",$.l.selection,ne.NC("findSelectionIcon","Icon for 'Find in Selection' in the editor find widget.")),Fh=(0,ys.q5)("find-collapsed",$.l.chevronRight,ne.NC("findCollapsedIcon","Icon to indicate that the editor find widget is collapsed.")),Wh=(0,ys.q5)("find-expanded",$.l.chevronDown,ne.NC("findExpandedIcon","Icon to indicate that the editor find widget is expanded.")),Hh=(0,ys.q5)("find-replace",$.l.replace,ne.NC("findReplaceIcon","Icon for 'Replace' in the editor find widget.")),Vh=(0,ys.q5)("find-replace-all",$.l.replaceAll,ne.NC("findReplaceAllIcon","Icon for 'Replace All' in the editor find widget.")),Bh=(0,ys.q5)("find-previous-match",$.l.arrowUp,ne.NC("findPreviousMatchIcon","Icon for 'Find Previous' in the editor find widget.")),zh=(0,ys.q5)("find-next-match",$.l.arrowDown,ne.NC("findNextMatchIcon","Icon for 'Find Next' in the editor find widget.")),Uh=ne.NC("label.findDialog","Find / Replace"),Kh=ne.NC("label.find","Find"),jh=ne.NC("placeholder.find","Find"),qh=ne.NC("label.previousMatchButton","Previous Match"),Gh=ne.NC("label.nextMatchButton","Next Match"),Qh=ne.NC("label.toggleSelectionFind","Find in Selection"),Zh=ne.NC("label.closeButton","Close"),Yh=ne.NC("label.replace","Replace"),Jh=ne.NC("placeholder.replace","Replace"),$h=ne.NC("label.replaceButton","Replace"),Xh=ne.NC("label.replaceAllButton","Replace All"),eu=ne.NC("label.toggleReplaceButton","Toggle Replace"),tu=ne.NC("title.matchesCountLimit","Only the first {0} results are highlighted, but all find operations work on the entire text.",dh),iu=ne.NC("label.matchesLocation","{0} of {1}"),ou=ne.NC("label.noResults","No results"),nu=419;let su=69;const ru="ctrlEnterReplaceAll.windows.donotask",au=it.dz?256:2048;class lu{constructor(e){this.afterLineNumber=e,this.heightInPx=33,this.suppressMouseDown=!1,this.domNode=document.createElement("div"),this.domNode.className="dock-find-viewzone"}}function du(e,t,i){const o=!!t.match(/\n/);i&&o&&i.selectionStart>0&&e.stopPropagation()}function cu(e,t,i){const o=!!t.match(/\n/);i&&o&&i.selectionEnd<i.value.length&&e.stopPropagation()}class hu extends Ss.${constructor(e,t,i,o,n,s,r,a,l){super(),this._cachedHeight=null,this._revealTimeouts=[],this._codeEditor=e,this._controller=t,this._state=i,this._contextViewProvider=o,this._keybindingService=n,this._contextKeyService=s,this._storageService=a,this._notificationService=l,this._ctrlEnterReplaceAllWarningPrompted=!!a.getBoolean(ru,0),this._isVisible=!1,this._isReplaceVisible=!1,this._ignoreChangeEvent=!1,this._updateHistoryDelayer=new Oe.vp(500),this._register((0,Fe.OF)((()=>this._updateHistoryDelayer.cancel()))),this._register(this._state.onFindReplaceStateChange((e=>this._onStateChanged(e)))),this._buildDomNode(),this._updateButtons(),this._tryUpdateWidgetWidth(),this._findInput.inputBox.layout(),this._register(this._codeEditor.onDidChangeConfiguration((e=>{if(e.hasChanged(91)&&(this._codeEditor.getOption(91)&&this._state.change({isReplaceRevealed:!1},!1),this._updateButtons()),e.hasChanged(145)&&this._tryUpdateWidgetWidth(),e.hasChanged(2)&&this.updateAccessibilitySupport(),e.hasChanged(41)){const e=this._codeEditor.getOption(41).loop;this._state.change({loop:e},!1);const t=this._codeEditor.getOption(41).addExtraSpaceOnTop;t&&!this._viewZone&&(this._viewZone=new lu(0),this._showViewZone()),!t&&this._viewZone&&this._removeViewZone()}}))),this.updateAccessibilitySupport(),this._register(this._codeEditor.onDidChangeCursorSelection((()=>{this._isVisible&&this._updateToggleSelectionFindButton()}))),this._register(this._codeEditor.onDidFocusEditorWidget((async()=>{if(this._isVisible){const e=await this._controller.getGlobalBufferTerm();e&&e!==this._state.searchString&&(this._state.change({searchString:e},!1),this._findInput.select())}}))),this._findInputFocused=Wc.bindTo(s),this._findFocusTracker=this._register(X.go(this._findInput.inputBox.inputElement)),this._register(this._findFocusTracker.onDidFocus((()=>{this._findInputFocused.set(!0),this._updateSearchScope()}))),this._register(this._findFocusTracker.onDidBlur((()=>{this._findInputFocused.set(!1)}))),this._replaceInputFocused=Hc.bindTo(s),this._replaceFocusTracker=this._register(X.go(this._replaceInput.inputBox.inputElement)),this._register(this._replaceFocusTracker.onDidFocus((()=>{this._replaceInputFocused.set(!0),this._updateSearchScope()}))),this._register(this._replaceFocusTracker.onDidBlur((()=>{this._replaceInputFocused.set(!1)}))),this._codeEditor.addOverlayWidget(this),this._codeEditor.getOption(41).addExtraSpaceOnTop&&(this._viewZone=new lu(0)),this._register(this._codeEditor.onDidChangeModel((()=>{this._isVisible&&(this._viewZoneId=void 0)}))),this._register(this._codeEditor.onDidScrollChange((e=>{e.scrollTopChanged?this._layoutViewZone():setTimeout((()=>{this._layoutViewZone()}),0)})))}getId(){return hu.ID}getDomNode(){return this._domNode}getPosition(){return this._isVisible?{preference:0}:null}_onStateChanged(e){if(e.searchString){try{this._ignoreChangeEvent=!0,this._findInput.setValue(this._state.searchString)}finally{this._ignoreChangeEvent=!1}this._updateButtons()}if(e.replaceString&&(this._replaceInput.inputBox.value=this._state.replaceString),e.isRevealed&&(this._state.isRevealed?this._reveal():this._hide(!0)),e.isReplaceRevealed&&(this._state.isReplaceRevealed?this._codeEditor.getOption(91)||this._isReplaceVisible||(this._isReplaceVisible=!0,this._replaceInput.width=X.w(this._findInput.domNode),this._updateButtons(),this._replaceInput.inputBox.layout()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),(e.isRevealed||e.isReplaceRevealed)&&(this._state.isRevealed||this._state.isReplaceRevealed)&&this._tryUpdateHeight()&&this._showViewZone(),e.isRegex&&this._findInput.setRegex(this._state.isRegex),e.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),e.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),e.preserveCase&&this._replaceInput.setPreserveCase(this._state.preserveCase),e.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),e.searchString||e.matchesCount||e.matchesPosition){const e=this._state.searchString.length>0&&0===this._state.matchesCount;this._domNode.classList.toggle("no-results",e),this._updateMatchesCount(),this._updateButtons()}(e.searchString||e.currentMatch)&&this._layoutViewZone(),e.updateHistory&&this._delayedUpdateHistory(),e.loop&&this._updateButtons()}_delayedUpdateHistory(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(void 0,Ji.dL)}_updateHistory(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInput.inputBox.addToHistory()}_updateMatchesCount(){let e;if(this._matchesCount.style.minWidth=su+"px",this._state.matchesCount>=dh?this._matchesCount.title=tu:this._matchesCount.title="",this._matchesCount.firstChild&&this._matchesCount.removeChild(this._matchesCount.firstChild),this._state.matchesCount>0){let t=String(this._state.matchesCount);this._state.matchesCount>=dh&&(t+="+");let i=String(this._state.matchesPosition);"0"===i&&(i="?"),e=ii.WU(iu,i,t)}else e=ou;this._matchesCount.appendChild(document.createTextNode(e)),(0,xe.Z9)(this._getAriaLabel(e,this._state.currentMatch,this._state.searchString)),su=Math.max(su,this._matchesCount.clientWidth)}_getAriaLabel(e,t,i){if(e===ou)return""===i?ne.NC("ariaSearchNoResultEmpty","{0} found",e):ne.NC("ariaSearchNoResult","{0} found for '{1}'",e,i);if(t){const o=ne.NC("ariaSearchNoResultWithLineNum","{0} found for '{1}', at {2}",e,i,t.startLineNumber+":"+t.startColumn),n=this._codeEditor.getModel();if(n&&t.startLineNumber<=n.getLineCount()&&t.startLineNumber>=1){const e=n.getLineContent(t.startLineNumber);return"".concat(e,", ").concat(o)}return o}return ne.NC("ariaSearchNoResultWithLineNumNoCurrentMatch","{0} found for '{1}'",e,i)}_updateToggleSelectionFindButton(){const e=this._codeEditor.getSelection(),t=!!e&&(e.startLineNumber!==e.endLineNumber||e.startColumn!==e.endColumn),i=this._toggleSelectionFind.checked;this._isVisible&&(i||t)?this._toggleSelectionFind.enable():this._toggleSelectionFind.disable()}_updateButtons(){this._findInput.setEnabled(this._isVisible),this._replaceInput.setEnabled(this._isVisible&&this._isReplaceVisible),this._updateToggleSelectionFindButton(),this._closeBtn.setEnabled(this._isVisible);const e=this._state.searchString.length>0,t=!!this._state.matchesCount;this._prevBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateBack()),this._nextBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateForward()),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._domNode.classList.toggle("replaceToggled",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);const i=!this._codeEditor.getOption(91);this._toggleReplaceBtn.setEnabled(this._isVisible&&i)}_reveal(){if(this._revealTimeouts.forEach((e=>{clearTimeout(e)})),this._revealTimeouts=[],!this._isVisible){this._isVisible=!0;const e=this._codeEditor.getSelection();switch(this._codeEditor.getOption(41).autoFindInSelection){case"always":this._toggleSelectionFind.checked=!0;break;case"never":this._toggleSelectionFind.checked=!1;break;case"multiline":{const t=!!e&&e.startLineNumber!==e.endLineNumber;this._toggleSelectionFind.checked=t;break}}this._tryUpdateWidgetWidth(),this._updateButtons(),this._revealTimeouts.push(setTimeout((()=>{this._domNode.classList.add("visible"),this._domNode.setAttribute("aria-hidden","false")}),0)),this._revealTimeouts.push(setTimeout((()=>{this._findInput.validate()}),200)),this._codeEditor.layoutOverlayWidget(this);let t=!0;if(this._codeEditor.getOption(41).seedSearchStringFromSelection&&e){const i=this._codeEditor.getDomNode();if(i){const o=X.i(i),n=this._codeEditor.getScrolledVisiblePosition(e.getStartPosition()),s=o.left+(n?n.left:0),r=n?n.top:0;if(this._viewZone&&r<this._viewZone.heightInPx){e.endLineNumber>e.startLineNumber&&(t=!1);const i=X.xQ(this._domNode).left;s>i&&(t=!1);const n=this._codeEditor.getScrolledVisiblePosition(e.getEndPosition());o.left+(n?n.left:0)>i&&(t=!1)}}}this._showViewZone(t)}}_hide(e){this._revealTimeouts.forEach((e=>{clearTimeout(e)})),this._revealTimeouts=[],this._isVisible&&(this._isVisible=!1,this._updateButtons(),this._domNode.classList.remove("visible"),this._domNode.setAttribute("aria-hidden","true"),this._findInput.clearMessage(),e&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._removeViewZone())}_layoutViewZone(e){if(!this._codeEditor.getOption(41).addExtraSpaceOnTop)return void this._removeViewZone();if(!this._isVisible)return;const t=this._viewZone;void 0===this._viewZoneId&&t&&this._codeEditor.changeViewZones((i=>{t.heightInPx=this._getHeight(),this._viewZoneId=i.addZone(t),this._codeEditor.setScrollTop(e||this._codeEditor.getScrollTop()+t.heightInPx)}))}_showViewZone(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(!this._isVisible)return;if(!this._codeEditor.getOption(41).addExtraSpaceOnTop)return;void 0===this._viewZone&&(this._viewZone=new lu(0));const t=this._viewZone;this._codeEditor.changeViewZones((i=>{if(void 0!==this._viewZoneId){const o=this._getHeight();if(o===t.heightInPx)return;const n=o-t.heightInPx;return t.heightInPx=o,i.layoutZone(this._viewZoneId),void(e&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+n))}{let o=this._getHeight();if(o-=this._codeEditor.getOption(84).top,o<=0)return;t.heightInPx=o,this._viewZoneId=i.addZone(t),e&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+o)}}))}_removeViewZone(){this._codeEditor.changeViewZones((e=>{void 0!==this._viewZoneId&&(e.removeZone(this._viewZoneId),this._viewZoneId=void 0,this._viewZone&&(this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()-this._viewZone.heightInPx),this._viewZone=void 0))}))}_tryUpdateWidgetWidth(){if(!this._isVisible)return;if(!this._domNode.isConnected)return;const e=this._codeEditor.getLayoutInfo();if(e.contentWidth<=0)return void this._domNode.classList.add("hiddenEditor");this._domNode.classList.contains("hiddenEditor")&&this._domNode.classList.remove("hiddenEditor");const t=e.width,i=e.minimap.minimapWidth;let o=!1,n=!1,s=!1;if(this._resized){if(X.w(this._domNode)>nu)return this._domNode.style.maxWidth="".concat(t-28-i-15,"px"),void(this._replaceInput.width=X.w(this._findInput.domNode))}if(447+i>=t&&(n=!0),447+i-su>=t&&(s=!0),447+i-su>=t+50&&(o=!0),this._domNode.classList.toggle("collapsed-find-widget",o),this._domNode.classList.toggle("narrow-find-widget",s),this._domNode.classList.toggle("reduced-find-widget",n),s||o||(this._domNode.style.maxWidth="".concat(t-28-i-15,"px")),this._findInput.layout({collapsedFindWidget:o,narrowFindWidget:s,reducedFindWidget:n}),this._resized){const e=this._findInput.inputBox.element.clientWidth;e>0&&(this._replaceInput.width=e)}else this._isReplaceVisible&&(this._replaceInput.width=X.w(this._findInput.domNode))}_getHeight(){let e=0;return e+=4,e+=this._findInput.inputBox.height+2,this._isReplaceVisible&&(e+=4,e+=this._replaceInput.inputBox.height+2),e+=4,e}_tryUpdateHeight(){const e=this._getHeight();return(null===this._cachedHeight||this._cachedHeight!==e)&&(this._cachedHeight=e,this._domNode.style.height="".concat(e,"px"),!0)}focusFindInput(){this._findInput.select(),this._findInput.focus()}focusReplaceInput(){this._replaceInput.select(),this._replaceInput.focus()}highlightFindOptions(){this._findInput.highlightFindOptions()}_updateSearchScope(){if(this._codeEditor.hasModel()&&this._toggleSelectionFind.checked){const e=this._codeEditor.getSelections();e.map((e=>{1===e.endColumn&&e.endLineNumber>e.startLineNumber&&(e=e.setEndPosition(e.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(e.endLineNumber-1)));const t=this._state.currentMatch;return e.startLineNumber===e.endLineNumber||He.e.equalsRange(e,t)?null:e})).filter((e=>!!e)),e.length&&this._state.change({searchScope:e},!0)}}_onFindInputMouseDown(e){e.middleButton&&e.stopPropagation()}_onFindInputKeyDown(e){return e.equals(3|au)?(this._keybindingService.dispatchEvent(e,e.target)||this._findInput.inputBox.insertAtCursor("\n"),void e.preventDefault()):e.equals(2)?(this._isReplaceVisible?this._replaceInput.focus():this._findInput.focusOnCaseSensitive(),void e.preventDefault()):e.equals(2066)?(this._codeEditor.focus(),void e.preventDefault()):e.equals(16)?du(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea")):e.equals(18)?cu(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea")):void 0}_onReplaceInputKeyDown(e){return e.equals(3|au)?(this._keybindingService.dispatchEvent(e,e.target)||(it.ED&&it.tY&&!this._ctrlEnterReplaceAllWarningPrompted&&(this._notificationService.info(ne.NC("ctrlEnter.keybindingChanged","Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.")),this._ctrlEnterReplaceAllWarningPrompted=!0,this._storageService.store(ru,!0,0,0)),this._replaceInput.inputBox.insertAtCursor("\n")),void e.preventDefault()):e.equals(2)?(this._findInput.focusOnCaseSensitive(),void e.preventDefault()):e.equals(1026)?(this._findInput.focus(),void e.preventDefault()):e.equals(2066)?(this._codeEditor.focus(),void e.preventDefault()):e.equals(16)?du(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea")):e.equals(18)?cu(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea")):void 0}getVerticalSashLeft(e){return 0}_keybindingLabelFor(e){const t=this._keybindingService.lookupKeybinding(e);return t?" (".concat(t.getLabel(),")"):""}_buildDomNode(){this._findInput=this._register(new Mh(null,this._contextViewProvider,{width:221,label:Kh,placeholder:jh,appendCaseSensitiveLabel:this._keybindingLabelFor(th),appendWholeWordsLabel:this._keybindingLabelFor(ih),appendRegexLabel:this._keybindingLabelFor(oh),validation:e=>{if(0===e.length||!this._findInput.getRegex())return null;try{return new RegExp(e,"gu"),null}catch(t){return{content:t.message}}},flexibleHeight:true,flexibleWidth:true,flexibleMaxHeight:118,showCommonFindToggles:!0,showHistoryHint:()=>Eh(this._keybindingService),inputBoxStyles:Fo.Hc,toggleStyles:Fo.pl},this._contextKeyService)),this._findInput.setRegex(!!this._state.isRegex),this._findInput.setCaseSensitive(!!this._state.matchCase),this._findInput.setWholeWords(!!this._state.wholeWord),this._register(this._findInput.onKeyDown((e=>this._onFindInputKeyDown(e)))),this._register(this._findInput.inputBox.onDidChange((()=>{this._ignoreChangeEvent||this._state.change({searchString:this._findInput.getValue()},!0)}))),this._register(this._findInput.onDidOptionChange((()=>{this._state.change({isRegex:this._findInput.getRegex(),wholeWord:this._findInput.getWholeWords(),matchCase:this._findInput.getCaseSensitive()},!0)}))),this._register(this._findInput.onCaseSensitiveKeyDown((e=>{e.equals(1026)&&this._isReplaceVisible&&(this._replaceInput.focus(),e.preventDefault())}))),this._register(this._findInput.onRegexKeyDown((e=>{e.equals(2)&&this._isReplaceVisible&&(this._replaceInput.focusOnPreserve(),e.preventDefault())}))),this._register(this._findInput.inputBox.onDidHeightChange((e=>{this._tryUpdateHeight()&&this._showViewZone()}))),it.IJ&&this._register(this._findInput.onMouseDown((e=>this._onFindInputMouseDown(e)))),this._matchesCount=document.createElement("div"),this._matchesCount.className="matchesCount",this._updateMatchesCount();const e=this._register((0,uh.p0)());this._prevBtn=this._register(new uu({label:qh+this._keybindingLabelFor(Zc),icon:Bh,hoverDelegate:e,onTrigger:()=>{(0,Dn.cW)(this._codeEditor.getAction(Zc)).run().then(void 0,Ji.dL)}})),this._nextBtn=this._register(new uu({label:Gh+this._keybindingLabelFor(Qc),icon:zh,hoverDelegate:e,onTrigger:()=>{(0,Dn.cW)(this._codeEditor.getAction(Qc)).run().then(void 0,Ji.dL)}}));const t=document.createElement("div");t.className="find-part",t.appendChild(this._findInput.domNode);const i=document.createElement("div");i.className="find-actions",t.appendChild(i),i.appendChild(this._matchesCount),i.appendChild(this._prevBtn.domNode),i.appendChild(this._nextBtn.domNode),this._toggleSelectionFind=this._register(new _h.Z({icon:Oh,title:Qh+this._keybindingLabelFor(nh),isChecked:!1,hoverDelegate:e,inputActiveOptionBackground:(0,ze.n_1)(ze.XEs),inputActiveOptionBorder:(0,ze.n_1)(ze.PRb),inputActiveOptionForeground:(0,ze.n_1)(ze.Pvw)})),this._register(this._toggleSelectionFind.onChange((()=>{if(this._toggleSelectionFind.checked){if(this._codeEditor.hasModel()){let e=this._codeEditor.getSelections();e=e.map((e=>(1===e.endColumn&&e.endLineNumber>e.startLineNumber&&(e=e.setEndPosition(e.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(e.endLineNumber-1))),e.isEmpty()?null:e))).filter((e=>!!e)),e.length&&this._state.change({searchScope:e},!0)}}else this._state.change({searchScope:null},!0)}))),i.appendChild(this._toggleSelectionFind.domNode),this._closeBtn=this._register(new uu({label:Zh+this._keybindingLabelFor(eh),icon:ys.s_,hoverDelegate:e,onTrigger:()=>{this._state.change({isRevealed:!1,searchScope:null},!1)},onKeyDown:e=>{e.equals(2)&&this._isReplaceVisible&&(this._replaceBtn.isEnabled()?this._replaceBtn.focus():this._codeEditor.focus(),e.preventDefault())}})),this._replaceInput=this._register(new Th(null,void 0,{label:Yh,placeholder:Jh,appendPreserveCaseLabel:this._keybindingLabelFor(sh),history:[],flexibleHeight:true,flexibleWidth:true,flexibleMaxHeight:118,showHistoryHint:()=>Eh(this._keybindingService),inputBoxStyles:Fo.Hc,toggleStyles:Fo.pl},this._contextKeyService,!0)),this._replaceInput.setPreserveCase(!!this._state.preserveCase),this._register(this._replaceInput.onKeyDown((e=>this._onReplaceInputKeyDown(e)))),this._register(this._replaceInput.inputBox.onDidChange((()=>{this._state.change({replaceString:this._replaceInput.inputBox.value},!1)}))),this._register(this._replaceInput.inputBox.onDidHeightChange((e=>{this._isReplaceVisible&&this._tryUpdateHeight()&&this._showViewZone()}))),this._register(this._replaceInput.onDidOptionChange((()=>{this._state.change({preserveCase:this._replaceInput.getPreserveCase()},!0)}))),this._register(this._replaceInput.onPreserveCaseKeyDown((e=>{e.equals(2)&&(this._prevBtn.isEnabled()?this._prevBtn.focus():this._nextBtn.isEnabled()?this._nextBtn.focus():this._toggleSelectionFind.enabled?this._toggleSelectionFind.focus():this._closeBtn.isEnabled()&&this._closeBtn.focus(),e.preventDefault())})));const o=this._register((0,uh.p0)());this._replaceBtn=this._register(new uu({label:$h+this._keybindingLabelFor(rh),icon:Hh,hoverDelegate:o,onTrigger:()=>{this._controller.replace()},onKeyDown:e=>{e.equals(1026)&&(this._closeBtn.focus(),e.preventDefault())}})),this._replaceAllBtn=this._register(new uu({label:Xh+this._keybindingLabelFor(ah),icon:Vh,hoverDelegate:o,onTrigger:()=>{this._controller.replaceAll()}}));const n=document.createElement("div");n.className="replace-part",n.appendChild(this._replaceInput.domNode);const s=document.createElement("div");s.className="replace-actions",n.appendChild(s),s.appendChild(this._replaceBtn.domNode),s.appendChild(this._replaceAllBtn.domNode),this._toggleReplaceBtn=this._register(new uu({label:eu,className:"codicon toggle left",onTrigger:()=>{this._state.change({isReplaceRevealed:!this._isReplaceVisible},!1),this._isReplaceVisible&&(this._replaceInput.width=X.w(this._findInput.domNode),this._replaceInput.inputBox.layout()),this._showViewZone()}})),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible),this._domNode=document.createElement("div"),this._domNode.className="editor-widget find-widget",this._domNode.setAttribute("aria-hidden","true"),this._domNode.ariaLabel=Uh,this._domNode.role="dialog",this._domNode.style.width="".concat(nu,"px"),this._domNode.appendChild(this._toggleReplaceBtn.domNode),this._domNode.appendChild(t),this._domNode.appendChild(this._closeBtn.domNode),this._domNode.appendChild(n),this._resizeSash=this._register(new ir.g(this._domNode,this,{orientation:0,size:2})),this._resized=!1;let r=nu;this._register(this._resizeSash.onDidStart((()=>{r=X.w(this._domNode)}))),this._register(this._resizeSash.onDidChange((e=>{this._resized=!0;const t=r+e.startX-e.currentX;if(t<nu)return;t>(parseFloat(X.Dx(this._domNode).maxWidth)||0)||(this._domNode.style.width="".concat(t,"px"),this._isReplaceVisible&&(this._replaceInput.width=X.w(this._findInput.domNode)),this._findInput.inputBox.layout(),this._tryUpdateHeight())}))),this._register(this._resizeSash.onDidReset((()=>{const e=X.w(this._domNode);if(e<nu)return;let t=nu;if(!this._resized||e===nu){const e=this._codeEditor.getLayoutInfo();t=e.width-28-e.minimap.minimapWidth-15,this._resized=!0}this._domNode.style.width="".concat(t,"px"),this._isReplaceVisible&&(this._replaceInput.width=X.w(this._findInput.domNode)),this._findInput.inputBox.layout()})))}updateAccessibilitySupport(){const e=this._codeEditor.getOption(2);this._findInput.setFocusInputOnOptionClick(2!==e)}}hu.ID="editor.contrib.findWidget";class uu extends Ss.${constructor(e){var t;super(),this._opts=e;let i="button";this._opts.className&&(i=i+" "+this._opts.className),this._opts.icon&&(i=i+" "+oi.k.asClassName(this._opts.icon)),this._domNode=document.createElement("div"),this._domNode.tabIndex=0,this._domNode.className=i,this._domNode.setAttribute("role","button"),this._domNode.setAttribute("aria-label",this._opts.label),this._register((0,Ah.g)(null!==(t=e.hoverDelegate)&&void 0!==t?t:(0,uh.tM)("element"),this._domNode,this._opts.label)),this.onclick(this._domNode,(e=>{this._opts.onTrigger(),e.preventDefault()})),this.onkeydown(this._domNode,(e=>{var t,i;if(e.equals(10)||e.equals(3))return this._opts.onTrigger(),void e.preventDefault();null===(i=(t=this._opts).onKeyDown)||void 0===i||i.call(t,e)}))}get domNode(){return this._domNode}isEnabled(){return this._domNode.tabIndex>=0}focus(){this._domNode.focus()}setEnabled(e){this._domNode.classList.toggle("disabled",!e),this._domNode.setAttribute("aria-disabled",String(!e)),this._domNode.tabIndex=e?0:-1}setExpanded(e){this._domNode.setAttribute("aria-expanded",String(!!e)),e?(this._domNode.classList.remove(...oi.k.asClassNameArray(Fh)),this._domNode.classList.add(...oi.k.asClassNameArray(Wh))):(this._domNode.classList.remove(...oi.k.asClassNameArray(Wh)),this._domNode.classList.add(...oi.k.asClassNameArray(Fh)))}}(0,Ue.Ic)(((e,t)=>{const i=e.getColor(ze.EiJ);i&&t.addRule(".monaco-editor .findMatch { border: 1px ".concat((0,nn.c3)(e.type)?"dotted":"solid"," ").concat(i,"; box-sizing: border-box; }"));const o=e.getColor(ze.gkn);o&&t.addRule(".monaco-editor .findScope { border: 1px ".concat((0,nn.c3)(e.type)?"dashed":"solid"," ").concat(o,"; }"));const n=e.getColor(ze.lRK);n&&t.addRule(".monaco-editor .find-widget { border: 1px solid ".concat(n,"; }"))}));var gu,pu=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},mu=function(e,t){return function(i,o){t(i,o,e)}};const _u=524288;function fu(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"single",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e.hasModel())return null;const o=e.getSelection();if("single"===t&&o.startLineNumber===o.endLineNumber||"multiple"===t)if(o.isEmpty()){const t=e.getConfiguredWordAtPosition(o.getStartPosition());if(t&&!1===i)return t.word}else if(e.getModel().getValueLengthInRange(o)<_u)return e.getModel().getValueInRange(o);return null}let vu=gu=class extends Fe.JT{get editor(){return this._editor}static get(e){return e.getContribution(gu.ID)}constructor(e,t,i,o,n){super(),this._editor=e,this._findWidgetVisible=Fc.bindTo(t),this._contextKeyService=t,this._storageService=i,this._clipboardService=o,this._notificationService=n,this._updateHistoryDelayer=new Oe.vp(500),this._state=this._register(new mh),this.loadQueryState(),this._register(this._state.onFindReplaceStateChange((e=>this._onStateChanged(e)))),this._model=null,this._register(this._editor.onDidChangeModel((()=>{const e=this._editor.getModel()&&this._state.isRevealed;this.disposeModel(),this._state.change({searchScope:null,matchCase:this._storageService.getBoolean("editor.matchCase",1,!1),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,!1),isRegex:this._storageService.getBoolean("editor.isRegex",1,!1),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,!1)},!1),e&&this._start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!1,updateSearchScope:!1,loop:this._editor.getOption(41).loop})})))}dispose(){this.disposeModel(),super.dispose()}disposeModel(){this._model&&(this._model.dispose(),this._model=null)}_onStateChanged(e){this.saveQueryState(e),e.isRevealed&&(this._state.isRevealed?this._findWidgetVisible.set(!0):(this._findWidgetVisible.reset(),this.disposeModel())),e.searchString&&this.setGlobalBufferTerm(this._state.searchString)}saveQueryState(e){e.isRegex&&this._storageService.store("editor.isRegex",this._state.actualIsRegex,1,1),e.wholeWord&&this._storageService.store("editor.wholeWord",this._state.actualWholeWord,1,1),e.matchCase&&this._storageService.store("editor.matchCase",this._state.actualMatchCase,1,1),e.preserveCase&&this._storageService.store("editor.preserveCase",this._state.actualPreserveCase,1,1)}loadQueryState(){this._state.change({matchCase:this._storageService.getBoolean("editor.matchCase",1,this._state.matchCase),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,this._state.wholeWord),isRegex:this._storageService.getBoolean("editor.isRegex",1,this._state.isRegex),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,this._state.preserveCase)},!1)}isFindInputFocused(){return!!Wc.getValue(this._contextKeyService)}getState(){return this._state}closeFindWidget(){this._state.change({isRevealed:!1,searchScope:null},!1),this._editor.focus()}toggleCaseSensitive(){this._state.change({matchCase:!this._state.matchCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleWholeWords(){this._state.change({wholeWord:!this._state.wholeWord},!1),this._state.isRevealed||this.highlightFindOptions()}toggleRegex(){this._state.change({isRegex:!this._state.isRegex},!1),this._state.isRevealed||this.highlightFindOptions()}togglePreserveCase(){this._state.change({preserveCase:!this._state.preserveCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleSearchScope(){if(this._state.searchScope)this._state.change({searchScope:null},!0);else if(this._editor.hasModel()){let e=this._editor.getSelections();e=e.map((e=>(1===e.endColumn&&e.endLineNumber>e.startLineNumber&&(e=e.setEndPosition(e.endLineNumber-1,this._editor.getModel().getLineMaxColumn(e.endLineNumber-1))),e.isEmpty()?null:e))).filter((e=>!!e)),e.length&&this._state.change({searchScope:e},!0)}}setSearchString(e){this._state.isRegex&&(e=ii.ec(e)),this._state.change({searchString:e},!1)}highlightFindOptions(){}async _start(e,t){if(this.disposeModel(),!this._editor.hasModel())return;const i={...t,isRevealed:!0};if("single"===e.seedSearchStringFromSelection){const t=fu(this._editor,e.seedSearchStringFromSelection,e.seedSearchStringFromNonEmptySelection);t&&(this._state.isRegex?i.searchString=ii.ec(t):i.searchString=t)}else if("multiple"===e.seedSearchStringFromSelection&&!e.updateSearchScope){const t=fu(this._editor,e.seedSearchStringFromSelection);t&&(i.searchString=t)}if(!i.searchString&&e.seedSearchStringFromGlobalClipboard){const e=await this.getGlobalBufferTerm();if(!this._editor.hasModel())return;e&&(i.searchString=e)}if(e.forceRevealReplace||i.isReplaceRevealed?i.isReplaceRevealed=!0:this._findWidgetVisible.get()||(i.isReplaceRevealed=!1),e.updateSearchScope){const e=this._editor.getSelections();e.some((e=>!e.isEmpty()))&&(i.searchScope=e)}i.loop=e.loop,this._state.change(i,!1),this._model||(this._model=new ch(this._editor,this._state))}start(e,t){return this._start(e,t)}moveToNextMatch(){return!!this._model&&(this._model.moveToNextMatch(),!0)}moveToPrevMatch(){return!!this._model&&(this._model.moveToPrevMatch(),!0)}goToMatch(e){return!!this._model&&(this._model.moveToMatch(e),!0)}replace(){return!!this._model&&(this._model.replace(),!0)}replaceAll(){var e;return!!this._model&&((null===(e=this._editor.getModel())||void 0===e?void 0:e.isTooLargeForHeapOperation())?(this._notificationService.warn(ne.NC("too.large.for.replaceall","The file is too large to perform a replace all operation.")),!1):(this._model.replaceAll(),!0))}selectAllMatches(){return!!this._model&&(this._model.selectAllMatches(),this._editor.focus(),!0)}async getGlobalBufferTerm(){return this._editor.getOption(41).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()?this._clipboardService.readFindText():""}setGlobalBufferTerm(e){this._editor.getOption(41).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(e)}};vu.ID="editor.contrib.findController",vu=gu=pu([mu(1,ae.i6),mu(2,Mn.Uy),mu(3,Si.p),mu(4,Xi.lT)],vu);let bu=class extends vu{constructor(e,t,i,o,n,s,r,a){super(e,i,r,a,s),this._contextViewService=t,this._keybindingService=o,this._themeService=n,this._widget=null,this._findOptionsWidget=null}async _start(e,t){this._widget||this._createFindWidget();const i=this._editor.getSelection();let o=!1;switch(this._editor.getOption(41).autoFindInSelection){case"always":o=!0;break;case"never":o=!1;break;case"multiline":o=!!i&&i.startLineNumber!==i.endLineNumber;break}e.updateSearchScope=e.updateSearchScope||o,await super._start(e,t),this._widget&&(2===e.shouldFocus?this._widget.focusReplaceInput():1===e.shouldFocus&&this._widget.focusFindInput())}highlightFindOptions(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._widget||this._createFindWidget(),this._state.isRevealed&&!e?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()}_createFindWidget(){this._widget=this._register(new hu(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._themeService,this._storageService,this._notificationService)),this._findOptionsWidget=this._register(new gh(this._editor,this._state,this._keybindingService))}};bu=pu([mu(1,Li.u),mu(2,ae.i6),mu(3,ki.d),mu(4,Ue.XE),mu(5,Xi.lT),mu(6,Mn.Uy),mu(7,Si.p)],bu);(0,ee.rn)(new ee.jY({id:jc,label:ne.NC("startFindAction","Find"),alias:"Find",precondition:ae.Ao.or(oe.u.focus,ae.Ao.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2084,weight:100},menuOpts:{menuId:se.eH.MenubarEditMenu,group:"3_find",title:ne.NC({key:"miFind",comment:["&& denotes a mnemonic"]},"&&Find"),order:1}})).addImplementation(0,((e,t,i)=>{const o=vu.get(t);return!!o&&o.start({forceRevealReplace:!1,seedSearchStringFromSelection:"never"!==t.getOption(41).seedSearchStringFromSelection?"single":"none",seedSearchStringFromNonEmptySelection:"selection"===t.getOption(41).seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:t.getOption(41).globalFindClipboard,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop})}));const Cu={description:"Open a new In-Editor Find Widget.",args:[{name:"Open a new In-Editor Find Widget args",schema:{properties:{searchString:{type:"string"},replaceString:{type:"string"},isRegex:{type:"boolean"},matchWholeWord:{type:"boolean"},isCaseSensitive:{type:"boolean"},preserveCase:{type:"boolean"},findInSelection:{type:"boolean"}}}}]};class Su extends ee.R6{constructor(){super({id:Gc,label:ne.NC("startFindWithArgsAction","Find With Arguments"),alias:"Find With Arguments",precondition:void 0,kbOpts:{kbExpr:null,primary:0,weight:100},metadata:Cu})}async run(e,t,i){const o=vu.get(t);if(o){const e=i?{searchString:i.searchString,replaceString:i.replaceString,isReplaceRevealed:void 0!==i.replaceString,isRegex:i.isRegex,wholeWord:i.matchWholeWord,matchCase:i.isCaseSensitive,preserveCase:i.preserveCase}:{};await o.start({forceRevealReplace:!1,seedSearchStringFromSelection:0===o.getState().searchString.length&&"never"!==t.getOption(41).seedSearchStringFromSelection?"single":"none",seedSearchStringFromNonEmptySelection:"selection"===t.getOption(41).seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:!0,shouldFocus:1,shouldAnimate:!0,updateSearchScope:(null===i||void 0===i?void 0:i.findInSelection)||!1,loop:t.getOption(41).loop},e),o.setGlobalBufferTerm(o.getState().searchString)}}}class yu extends ee.R6{constructor(){super({id:qc,label:ne.NC("startFindWithSelectionAction","Find With Selection"),alias:"Find With Selection",precondition:void 0,kbOpts:{kbExpr:null,primary:0,mac:{primary:2083},weight:100}})}async run(e,t){const i=vu.get(t);i&&(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:"multiple",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),i.setGlobalBufferTerm(i.getState().searchString))}}class wu extends ee.R6{async run(e,t){const i=vu.get(t);i&&!this._run(i)&&(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:0===i.getState().searchString.length&&"never"!==t.getOption(41).seedSearchStringFromSelection?"single":"none",seedSearchStringFromNonEmptySelection:"selection"===t.getOption(41).seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),this._run(i))}}class xu extends ee.R6{constructor(){super({id:Yc,label:ne.NC("findMatchAction.goToMatch","Go to Match..."),alias:"Go to Match...",precondition:Fc}),this._highlightDecorations=[]}run(e,t,i){const o=vu.get(t);if(!o)return;const n=o.getState().matchesCount;if(n<1){return void e.get(Xi.lT).notify({severity:Xi.zb.Warning,message:ne.NC("findMatchAction.noResults","No matches. Try searching for something else.")})}const s=e.get(wi.eJ).createInputBox();s.placeholder=ne.NC("findMatchAction.inputPlaceHolder","Type a number to go to a specific match (between 1 and {0})",n);const r=e=>{const t=parseInt(e);if(isNaN(t))return;const i=o.getState().matchesCount;return t>0&&t<=i?t-1:t<0&&t>=-i?i+t:void 0},a=e=>{const i=r(e);if("number"===typeof i){s.validationMessage=void 0,o.goToMatch(i);const e=o.getState().currentMatch;e&&this.addDecorations(t,e)}else s.validationMessage=ne.NC("findMatchAction.inputValidationMessage","Please type a number between 1 and {0}",o.getState().matchesCount),this.clearDecorations(t)};s.onDidChangeValue((e=>{a(e)})),s.onDidAccept((()=>{const e=r(s.value);"number"===typeof e?(o.goToMatch(e),s.hide()):s.validationMessage=ne.NC("findMatchAction.inputValidationMessage","Please type a number between 1 and {0}",o.getState().matchesCount)})),s.onDidHide((()=>{this.clearDecorations(t),s.dispose()})),s.show()}clearDecorations(e){e.changeDecorations((e=>{this._highlightDecorations=e.deltaDecorations(this._highlightDecorations,[])}))}addDecorations(e,t){e.changeDecorations((e=>{this._highlightDecorations=e.deltaDecorations(this._highlightDecorations,[{range:t,options:{description:"find-match-quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:t,options:{description:"find-match-quick-access-range-highlight-overview",overviewRuler:{color:(0,Ue.EN)(xc.m9),position:Ve.sh.Full}}}])}))}}class Nu extends ee.R6{async run(e,t){const i=vu.get(t);if(!i)return;const o=fu(t,"single",!1);o&&i.setSearchString(o),this._run(i)||(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),this._run(i))}}(0,ee.rn)(new ee.jY({id:Xc,label:ne.NC("startReplace","Replace"),alias:"Replace",precondition:ae.Ao.or(oe.u.focus,ae.Ao.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menuOpts:{menuId:se.eH.MenubarEditMenu,group:"3_find",title:ne.NC({key:"miReplace",comment:["&& denotes a mnemonic"]},"&&Replace"),order:2}})).addImplementation(0,((e,t,i)=>{if(!t.hasModel()||t.getOption(91))return!1;const o=vu.get(t);if(!o)return!1;const n=t.getSelection(),s=o.isFindInputFocused(),r=!n.isEmpty()&&n.startLineNumber===n.endLineNumber&&"never"!==t.getOption(41).seedSearchStringFromSelection&&!s,a=s||r?2:1;return o.start({forceRevealReplace:!0,seedSearchStringFromSelection:r?"single":"none",seedSearchStringFromNonEmptySelection:"selection"===t.getOption(41).seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:"never"!==t.getOption(41).seedSearchStringFromSelection,shouldFocus:a,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop})})),(0,ee._K)(vu.ID,bu,0),(0,ee.Qr)(Su),(0,ee.Qr)(yu),(0,ee.Qr)(class extends wu{constructor(){super({id:Qc,label:ne.NC("findNextMatchAction","Find Next"),alias:"Find Next",precondition:void 0,kbOpts:[{kbExpr:oe.u.focus,primary:61,mac:{primary:2085,secondary:[61]},weight:100},{kbExpr:ae.Ao.and(oe.u.focus,Wc),primary:3,weight:100}]})}_run(e){return!!e.moveToNextMatch()&&(e.editor.pushUndoStop(),!0)}}),(0,ee.Qr)(class extends wu{constructor(){super({id:Zc,label:ne.NC("findPreviousMatchAction","Find Previous"),alias:"Find Previous",precondition:void 0,kbOpts:[{kbExpr:oe.u.focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100},{kbExpr:ae.Ao.and(oe.u.focus,Wc),primary:1027,weight:100}]})}_run(e){return e.moveToPrevMatch()}}),(0,ee.Qr)(xu),(0,ee.Qr)(class extends Nu{constructor(){super({id:Jc,label:ne.NC("nextSelectionMatchFindAction","Find Next Selection"),alias:"Find Next Selection",precondition:void 0,kbOpts:{kbExpr:oe.u.focus,primary:2109,weight:100}})}_run(e){return e.moveToNextMatch()}}),(0,ee.Qr)(class extends Nu{constructor(){super({id:$c,label:ne.NC("previousSelectionMatchFindAction","Find Previous Selection"),alias:"Find Previous Selection",precondition:void 0,kbOpts:{kbExpr:oe.u.focus,primary:3133,weight:100}})}_run(e){return e.moveToPrevMatch()}});const Lu=ee._l.bindToContribution(vu.get);(0,ee.fK)(new Lu({id:eh,precondition:Fc,handler:e=>e.closeFindWidget(),kbOpts:{weight:105,kbExpr:ae.Ao.and(oe.u.focus,ae.Ao.not("isComposing")),primary:9,secondary:[1033]}})),(0,ee.fK)(new Lu({id:th,precondition:void 0,handler:e=>e.toggleCaseSensitive(),kbOpts:{weight:105,kbExpr:oe.u.focus,primary:Vc.primary,mac:Vc.mac,win:Vc.win,linux:Vc.linux}})),(0,ee.fK)(new Lu({id:ih,precondition:void 0,handler:e=>e.toggleWholeWords(),kbOpts:{weight:105,kbExpr:oe.u.focus,primary:Bc.primary,mac:Bc.mac,win:Bc.win,linux:Bc.linux}})),(0,ee.fK)(new Lu({id:oh,precondition:void 0,handler:e=>e.toggleRegex(),kbOpts:{weight:105,kbExpr:oe.u.focus,primary:zc.primary,mac:zc.mac,win:zc.win,linux:zc.linux}})),(0,ee.fK)(new Lu({id:nh,precondition:void 0,handler:e=>e.toggleSearchScope(),kbOpts:{weight:105,kbExpr:oe.u.focus,primary:Uc.primary,mac:Uc.mac,win:Uc.win,linux:Uc.linux}})),(0,ee.fK)(new Lu({id:sh,precondition:void 0,handler:e=>e.togglePreserveCase(),kbOpts:{weight:105,kbExpr:oe.u.focus,primary:Kc.primary,mac:Kc.mac,win:Kc.win,linux:Kc.linux}})),(0,ee.fK)(new Lu({id:rh,precondition:Fc,handler:e=>e.replace(),kbOpts:{weight:105,kbExpr:oe.u.focus,primary:3094}})),(0,ee.fK)(new Lu({id:rh,precondition:Fc,handler:e=>e.replace(),kbOpts:{weight:105,kbExpr:ae.Ao.and(oe.u.focus,Hc),primary:3}})),(0,ee.fK)(new Lu({id:ah,precondition:Fc,handler:e=>e.replaceAll(),kbOpts:{weight:105,kbExpr:oe.u.focus,primary:2563}})),(0,ee.fK)(new Lu({id:ah,precondition:Fc,handler:e=>e.replaceAll(),kbOpts:{weight:105,kbExpr:ae.Ao.and(oe.u.focus,Hc),primary:void 0,mac:{primary:2051}}})),(0,ee.fK)(new Lu({id:lh,precondition:Fc,handler:e=>e.selectAllMatches(),kbOpts:{weight:105,kbExpr:oe.u.focus,primary:515}}));const ku={0:" ",1:"u",2:"r"},Du=16777215,Iu=4278190080;class Ru{constructor(e){const t=Math.ceil(e/32);this._states=new Uint32Array(t)}get(e){const t=e/32|0,i=e%32;return 0!==(this._states[t]&1<<i)}set(e,t){const i=e/32|0,o=e%32,n=this._states[i];this._states[i]=t?n|1<<o:n&~(1<<o)}}class Pu{constructor(e,t,i){if(e.length!==t.length||e.length>65535)throw new Error("invalid startIndexes or endIndexes size");this._startIndexes=e,this._endIndexes=t,this._collapseStates=new Ru(e.length),this._userDefinedStates=new Ru(e.length),this._recoveredStates=new Ru(e.length),this._types=i,this._parentsComputed=!1}ensureParentIndices(){if(!this._parentsComputed){this._parentsComputed=!0;const e=[],t=(t,i)=>{const o=e[e.length-1];return this.getStartLineNumber(o)<=t&&this.getEndLineNumber(o)>=i};for(let i=0,o=this._startIndexes.length;i<o;i++){const o=this._startIndexes[i],n=this._endIndexes[i];if(o>Du||n>Du)throw new Error("startLineNumber or endLineNumber must not exceed "+Du);for(;e.length>0&&!t(o,n);)e.pop();const s=e.length>0?e[e.length-1]:-1;e.push(i),this._startIndexes[i]=o+((255&s)<<24),this._endIndexes[i]=n+((65280&s)<<16)}}}get length(){return this._startIndexes.length}getStartLineNumber(e){return this._startIndexes[e]&Du}getEndLineNumber(e){return this._endIndexes[e]&Du}getType(e){return this._types?this._types[e]:void 0}hasTypes(){return!!this._types}isCollapsed(e){return this._collapseStates.get(e)}setCollapsed(e,t){this._collapseStates.set(e,t)}isUserDefined(e){return this._userDefinedStates.get(e)}setUserDefined(e,t){return this._userDefinedStates.set(e,t)}isRecovered(e){return this._recoveredStates.get(e)}setRecovered(e,t){return this._recoveredStates.set(e,t)}getSource(e){return this.isUserDefined(e)?1:this.isRecovered(e)?2:0}setSource(e,t){1===t?(this.setUserDefined(e,!0),this.setRecovered(e,!1)):2===t?(this.setUserDefined(e,!1),this.setRecovered(e,!0)):(this.setUserDefined(e,!1),this.setRecovered(e,!1))}setCollapsedAllOfType(e,t){let i=!1;if(this._types)for(let o=0;o<this._types.length;o++)this._types[o]===e&&(this.setCollapsed(o,t),i=!0);return i}toRegion(e){return new Mu(this,e)}getParentIndex(e){this.ensureParentIndices();const t=((this._startIndexes[e]&Iu)>>>24)+((this._endIndexes[e]&Iu)>>>16);return 65535===t?-1:t}contains(e,t){return this.getStartLineNumber(e)<=t&&this.getEndLineNumber(e)>=t}findIndex(e){let t=0,i=this._startIndexes.length;if(0===i)return-1;for(;t<i;){const o=Math.floor((t+i)/2);e<this.getStartLineNumber(o)?i=o:t=o+1}return t-1}findRange(e){let t=this.findIndex(e);if(t>=0){if(this.getEndLineNumber(t)>=e)return t;for(t=this.getParentIndex(t);-1!==t;){if(this.contains(t,e))return t;t=this.getParentIndex(t)}}return-1}toString(){const e=[];for(let t=0;t<this.length;t++)e[t]="[".concat(ku[this.getSource(t)]).concat(this.isCollapsed(t)?"+":"-","] ").concat(this.getStartLineNumber(t),"/").concat(this.getEndLineNumber(t));return e.join(", ")}toFoldRange(e){return{startLineNumber:this._startIndexes[e]&Du,endLineNumber:this._endIndexes[e]&Du,type:this._types?this._types[e]:void 0,isCollapsed:this.isCollapsed(e),source:this.getSource(e)}}static fromFoldRanges(e){const t=e.length,i=new Uint32Array(t),o=new Uint32Array(t);let n=[],s=!1;for(let a=0;a<t;a++){const t=e[a];i[a]=t.startLineNumber,o[a]=t.endLineNumber,n.push(t.type),t.type&&(s=!0)}s||(n=void 0);const r=new Pu(i,o,n);for(let a=0;a<t;a++)e[a].isCollapsed&&r.setCollapsed(a,!0),r.setSource(a,e[a].source);return r}static sanitizeAndMerge(e,t,i){i=null!==i&&void 0!==i?i:Number.MAX_VALUE;const o=(e,t)=>Array.isArray(e)?i=>i<t?e[i]:void 0:i=>i<t?e.toFoldRange(i):void 0,n=o(e,e.length),s=o(t,t.length);let r=0,a=0,l=n(0),d=s(0);const c=[];let h,u=0;const g=[];for(;l||d;){let e;if(d&&(!l||l.startLineNumber>=d.startLineNumber))l&&l.startLineNumber===d.startLineNumber?(1===d.source?e=d:(e=l,e.isCollapsed=d.isCollapsed&&l.endLineNumber===d.endLineNumber,e.source=0),l=n(++r)):(e=d,d.isCollapsed&&0===d.source&&(e.source=2)),d=s(++a);else{let t=a,i=d;for(;;){if(!i||i.startLineNumber>l.endLineNumber){e=l;break}if(1===i.source&&i.endLineNumber>l.endLineNumber)break;i=s(++t)}l=n(++r)}if(e){for(;h&&h.endLineNumber<e.startLineNumber;)h=c.pop();e.endLineNumber>e.startLineNumber&&e.startLineNumber>u&&e.endLineNumber<=i&&(!h||h.endLineNumber>=e.endLineNumber)&&(g.push(e),u=e.startLineNumber,h&&c.push(h),h=e)}}return g}}class Mu{constructor(e,t){this.ranges=e,this.index=t}get startLineNumber(){return this.ranges.getStartLineNumber(this.index)}get endLineNumber(){return this.ranges.getEndLineNumber(this.index)}get regionIndex(){return this.index}get parentIndex(){return this.ranges.getParentIndex(this.index)}get isCollapsed(){return this.ranges.isCollapsed(this.index)}containedBy(e){return e.startLineNumber<=this.startLineNumber&&e.endLineNumber>=this.endLineNumber}containsLine(e){return this.startLineNumber<=e&&e<=this.endLineNumber}}var Tu=i(48367);class Eu{get regions(){return this._regions}get textModel(){return this._textModel}constructor(e,t){this._updateEventEmitter=new ui.Q5,this.onDidChange=this._updateEventEmitter.event,this._textModel=e,this._decorationProvider=t,this._regions=new Pu(new Uint32Array(0),new Uint32Array(0)),this._editorDecorationIds=[]}toggleCollapseState(e){if(!e.length)return;e=e.sort(((e,t)=>e.regionIndex-t.regionIndex));const t={};this._decorationProvider.changeDecorations((i=>{let o=0,n=-1,s=-1;const r=e=>{for(;o<e;){const e=this._regions.getEndLineNumber(o),t=this._regions.isCollapsed(o);if(e<=n){const n=0!==this.regions.getSource(o);i.changeDecorationOptions(this._editorDecorationIds[o],this._decorationProvider.getDecorationOption(t,e<=s,n))}t&&e>s&&(s=e),o++}};for(const a of e){const e=a.regionIndex,i=this._editorDecorationIds[e];if(i&&!t[i]){t[i]=!0,r(e);const o=!this._regions.isCollapsed(e);this._regions.setCollapsed(e,o),n=Math.max(n,this._regions.getEndLineNumber(e))}}r(this._regions.length)})),this._updateEventEmitter.fire({model:this,collapseStateChanged:e})}removeManualRanges(e){const t=new Array,i=t=>{for(const i of e)if(!(i.startLineNumber>t.endLineNumber||t.startLineNumber>i.endLineNumber))return!0;return!1};for(let o=0;o<this._regions.length;o++){const e=this._regions.toFoldRange(o);0!==e.source&&i(e)||t.push(e)}this.updatePost(Pu.fromFoldRanges(t))}update(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const i=this._currentFoldedOrManualRanges(t),o=Pu.sanitizeAndMerge(e,i,this._textModel.getLineCount());this.updatePost(Pu.fromFoldRanges(o))}updatePost(e){const t=[];let i=-1;for(let o=0,n=e.length;o<n;o++){const n=e.getStartLineNumber(o),s=e.getEndLineNumber(o),r=e.isCollapsed(o),a=0!==e.getSource(o),l={startLineNumber:n,startColumn:this._textModel.getLineMaxColumn(n),endLineNumber:s,endColumn:this._textModel.getLineMaxColumn(s)+1};t.push({range:l,options:this._decorationProvider.getDecorationOption(r,s<=i,a)}),r&&s>i&&(i=s)}this._decorationProvider.changeDecorations((e=>this._editorDecorationIds=e.deltaDecorations(this._editorDecorationIds,t))),this._regions=e,this._updateEventEmitter.fire({model:this})}_currentFoldedOrManualRanges(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=(t,i)=>{for(const o of e)if(t<o&&o<=i)return!0;return!1},i=[];for(let o=0,n=this._regions.length;o<n;o++){let e=this.regions.isCollapsed(o);const n=this.regions.getSource(o);if(e||0!==n){const s=this._regions.toFoldRange(o),r=this._textModel.getDecorationRange(this._editorDecorationIds[o]);r&&(e&&t(r.startLineNumber,r.endLineNumber)&&(e=!1),i.push({startLineNumber:r.startLineNumber,endLineNumber:r.endLineNumber,type:s.type,isCollapsed:e,source:n}))}}return i}getMemento(){const e=this._currentFoldedOrManualRanges(),t=[],i=this._textModel.getLineCount();for(let o=0,n=e.length;o<n;o++){const n=e[o];if(n.startLineNumber>=n.endLineNumber||n.startLineNumber<1||n.endLineNumber>i)continue;const s=this._getLinesChecksum(n.startLineNumber+1,n.endLineNumber);t.push({startLineNumber:n.startLineNumber,endLineNumber:n.endLineNumber,isCollapsed:n.isCollapsed,source:n.source,checksum:s})}return t.length>0?t:void 0}applyMemento(e){var t,i;if(!Array.isArray(e))return;const o=[],n=this._textModel.getLineCount();for(const r of e){if(r.startLineNumber>=r.endLineNumber||r.startLineNumber<1||r.endLineNumber>n)continue;const e=this._getLinesChecksum(r.startLineNumber+1,r.endLineNumber);r.checksum&&e!==r.checksum||o.push({startLineNumber:r.startLineNumber,endLineNumber:r.endLineNumber,type:void 0,isCollapsed:null===(t=r.isCollapsed)||void 0===t||t,source:null!==(i=r.source)&&void 0!==i?i:0})}const s=Pu.sanitizeAndMerge(this._regions,o,n);this.updatePost(Pu.fromFoldRanges(s))}_getLinesChecksum(e,t){return(0,Tu.vp)(this._textModel.getLineContent(e)+this._textModel.getLineContent(t))%1e6}dispose(){this._decorationProvider.removeDecorations(this._editorDecorationIds)}getAllRegionsAtLine(e,t){const i=[];if(this._regions){let o=this._regions.findRange(e),n=1;for(;o>=0;){const e=this._regions.toRegion(o);t&&!t(e,n)||i.push(e),n++,o=e.parentIndex}}return i}getRegionAtLine(e){if(this._regions){const t=this._regions.findRange(e);if(t>=0)return this._regions.toRegion(t)}return null}getRegionsInside(e,t){const i=[],o=e?e.regionIndex+1:0,n=e?e.endLineNumber:Number.MAX_VALUE;if(t&&2===t.length){const e=[];for(let s=o,r=this._regions.length;s<r;s++){const o=this._regions.toRegion(s);if(!(this._regions.getStartLineNumber(s)<n))break;for(;e.length>0&&!o.containedBy(e[e.length-1]);)e.pop();e.push(o),t(o,e.length)&&i.push(o)}}else for(let s=o,r=this._regions.length;s<r;s++){const e=this._regions.toRegion(s);if(!(this._regions.getStartLineNumber(s)<n))break;t&&!t(e)||i.push(e)}return i}}function Au(e,t,i){const o=[];for(const n of i){const i=e.getRegionAtLine(n);if(i){const n=!i.isCollapsed;if(o.push(i),t>1){const s=e.getRegionsInside(i,((e,i)=>e.isCollapsed!==n&&i<t));o.push(...s)}}}e.toggleCollapseState(o)}function Ou(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.MAX_VALUE,o=arguments.length>3?arguments[3]:void 0;const n=[];if(o&&o.length>0)for(const s of o){const o=e.getRegionAtLine(s);if(o&&(o.isCollapsed!==t&&n.push(o),i>1)){const s=e.getRegionsInside(o,((e,o)=>e.isCollapsed!==t&&o<i));n.push(...s)}}else{const o=e.getRegionsInside(null,((e,o)=>e.isCollapsed!==t&&o<i));n.push(...o)}e.toggleCollapseState(n)}function Fu(e,t,i,o){const n=[];for(const s of o){const o=e.getAllRegionsAtLine(s,((e,o)=>e.isCollapsed!==t&&o<=i));n.push(...o)}e.toggleCollapseState(n)}function Wu(e,t,i){const o=[];for(const s of i){const t=e.getAllRegionsAtLine(s,void 0);t.length>0&&o.push(t[0])}const n=e.getRegionsInside(null,(e=>o.every((t=>!t.containedBy(e)&&!e.containedBy(t)))&&e.isCollapsed!==t));e.toggleCollapseState(n)}function Hu(e,t,i){const o=e.textModel,n=e.regions,s=[];for(let r=n.length-1;r>=0;r--)if(i!==n.isCollapsed(r)){const e=n.getStartLineNumber(r);t.test(o.getLineContent(e))&&s.push(n.toRegion(r))}e.toggleCollapseState(s)}function Vu(e,t,i){const o=e.regions,n=[];for(let s=o.length-1;s>=0;s--)i!==o.isCollapsed(s)&&t===o.getType(s)&&n.push(o.toRegion(s));e.toggleCollapseState(n)}var Bu=i(55494);class zu{get onDidChange(){return this._updateEventEmitter.event}get hiddenRanges(){return this._hiddenRanges}constructor(e){this._updateEventEmitter=new ui.Q5,this._hasLineChanges=!1,this._foldingModel=e,this._foldingModelListener=e.onDidChange((e=>this.updateHiddenRanges())),this._hiddenRanges=[],e.regions.length&&this.updateHiddenRanges()}notifyChangeModelContent(e){this._hiddenRanges.length&&!this._hasLineChanges&&(this._hasLineChanges=e.changes.some((e=>e.range.endLineNumber!==e.range.startLineNumber||0!==(0,Bu.Q)(e.text)[0])))}updateHiddenRanges(){let e=!1;const t=[];let i=0,o=0,n=Number.MAX_VALUE,s=-1;const r=this._foldingModel.regions;for(;i<r.length;i++){if(!r.isCollapsed(i))continue;const a=r.getStartLineNumber(i)+1,l=r.getEndLineNumber(i);n<=a&&l<=s||(!e&&o<this._hiddenRanges.length&&this._hiddenRanges[o].startLineNumber===a&&this._hiddenRanges[o].endLineNumber===l?(t.push(this._hiddenRanges[o]),o++):(e=!0,t.push(new He.e(a,1,l,1))),n=a,s=l)}(this._hasLineChanges||e||o<this._hiddenRanges.length)&&this.applyHiddenRanges(t)}applyHiddenRanges(e){this._hiddenRanges=e,this._hasLineChanges=!1,this._updateEventEmitter.fire(e)}hasRanges(){return this._hiddenRanges.length>0}isHidden(e){return null!==Uu(this._hiddenRanges,e)}adjustSelections(e){let t=!1;const i=this._foldingModel.textModel;let o=null;const n=e=>(o&&function(e,t){return e>=t.startLineNumber&&e<=t.endLineNumber}(e,o)||(o=Uu(this._hiddenRanges,e)),o?o.startLineNumber-1:null);for(let s=0,r=e.length;s<r;s++){let o=e[s];const r=n(o.startLineNumber);r&&(o=o.setStartPosition(r,i.getLineMaxColumn(r)),t=!0);const a=n(o.endLineNumber);a&&(o=o.setEndPosition(a,i.getLineMaxColumn(a)),t=!0),e[s]=o}return t}dispose(){this.hiddenRanges.length>0&&(this._hiddenRanges=[],this._updateEventEmitter.fire(this._hiddenRanges)),this._foldingModelListener&&(this._foldingModelListener.dispose(),this._foldingModelListener=null)}}function Uu(e,t){const i=(0,Nc.J_)(e,(e=>t<e.startLineNumber))-1;return i>=0&&e[i].endLineNumber>=t?e[i]:null}class Ku{constructor(e,t,i){this.editorModel=e,this.languageConfigurationService=t,this.foldingRangesLimit=i,this.id="indent"}dispose(){}compute(e){const t=this.languageConfigurationService.getLanguageConfiguration(this.editorModel.getLanguageId()).foldingRules,i=t&&!!t.offSide,o=t&&t.markers;return Promise.resolve(function(e,t,i){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:qu;const n=e.getOptions().tabSize,s=new ju(o);let r;i&&(r=new RegExp("(".concat(i.start.source,")|(?:").concat(i.end.source,")")));const a=[],l=e.getLineCount()+1;a.push({indent:-1,endAbove:l,line:l});for(let d=e.getLineCount();d>0;d--){const i=e.getLineContent(d),o=(0,Ro.q)(i,n);let l,c=a[a.length-1];if(-1!==o){if(r&&(l=i.match(r))){if(!l[1]){a.push({indent:-2,endAbove:d,line:d});continue}{let e=a.length-1;for(;e>0&&-2!==a[e].indent;)e--;if(e>0){a.length=e+1,c=a[e],s.insertFirst(d,c.line,o),c.line=d,c.indent=o,c.endAbove=d;continue}}}if(c.indent>o){do{a.pop(),c=a[a.length-1]}while(c.indent>o);const e=c.endAbove-1;e-d>=1&&s.insertFirst(d,e,o)}c.indent===o?c.endAbove=d:a.push({indent:o,endAbove:d,line:d})}else t&&(c.endAbove=d)}return s.toIndentRanges(e)}(this.editorModel,i,o,this.foldingRangesLimit))}}class ju{constructor(e){this._startIndexes=[],this._endIndexes=[],this._indentOccurrences=[],this._length=0,this._foldingRangesLimit=e}insertFirst(e,t,i){if(e>Du||t>Du)return;const o=this._length;this._startIndexes[o]=e,this._endIndexes[o]=t,this._length++,i<1e3&&(this._indentOccurrences[i]=(this._indentOccurrences[i]||0)+1)}toIndentRanges(e){const t=this._foldingRangesLimit.limit;if(this._length<=t){this._foldingRangesLimit.update(this._length,!1);const e=new Uint32Array(this._length),t=new Uint32Array(this._length);for(let i=this._length-1,o=0;i>=0;i--,o++)e[o]=this._startIndexes[i],t[o]=this._endIndexes[i];return new Pu(e,t)}{this._foldingRangesLimit.update(this._length,t);let i=0,o=this._indentOccurrences.length;for(let e=0;e<this._indentOccurrences.length;e++){const n=this._indentOccurrences[e];if(n){if(n+i>t){o=e;break}i+=n}}const n=e.getOptions().tabSize,s=new Uint32Array(t),r=new Uint32Array(t);for(let a=this._length-1,l=0;a>=0;a--){const d=this._startIndexes[a],c=e.getLineContent(d),h=(0,Ro.q)(c,n);(h<o||h===o&&i++<t)&&(s[l]=d,r[l]=this._endIndexes[a],l++)}return new Pu(s,r)}}}const qu={limit:5e3,update:()=>{}};const Gu=(0,ze.P6G)("editor.foldBackground",{light:(0,ze.ZnX)(ze.hEj,.3),dark:(0,ze.ZnX)(ze.hEj,.3),hcDark:null,hcLight:null},(0,ne.NC)("foldBackgroundBackground","Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations."),!0);(0,ze.P6G)("editorGutter.foldingControlForeground",{dark:ze.XZx,light:ze.XZx,hcDark:ze.XZx,hcLight:ze.XZx},(0,ne.NC)("editorGutter.foldingControlForeground","Color of the folding control in the editor gutter."));const Qu=(0,ys.q5)("folding-expanded",$.l.chevronDown,(0,ne.NC)("foldingExpandedIcon","Icon for expanded ranges in the editor glyph margin.")),Zu=(0,ys.q5)("folding-collapsed",$.l.chevronRight,(0,ne.NC)("foldingCollapsedIcon","Icon for collapsed ranges in the editor glyph margin.")),Yu=(0,ys.q5)("folding-manual-collapsed",Zu,(0,ne.NC)("foldingManualCollapedIcon","Icon for manually collapsed ranges in the editor glyph margin.")),Ju=(0,ys.q5)("folding-manual-expanded",Qu,(0,ne.NC)("foldingManualExpandedIcon","Icon for manually expanded ranges in the editor glyph margin.")),$u={color:(0,Ue.EN)(Gu),position:1},Xu=(0,ne.NC)("linesCollapsed","Click to expand the range."),eg=(0,ne.NC)("linesExpanded","Click to collapse the range.");class tg{constructor(e){this.editor=e,this.showFoldingControls="mouseover",this.showFoldingHighlights=!0}getDecorationOption(e,t,i){return t?tg.HIDDEN_RANGE_DECORATION:"never"===this.showFoldingControls?e?this.showFoldingHighlights?tg.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION:tg.NO_CONTROLS_COLLAPSED_RANGE_DECORATION:tg.NO_CONTROLS_EXPANDED_RANGE_DECORATION:e?i?this.showFoldingHighlights?tg.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:tg.MANUALLY_COLLAPSED_VISUAL_DECORATION:this.showFoldingHighlights?tg.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:tg.COLLAPSED_VISUAL_DECORATION:"mouseover"===this.showFoldingControls?i?tg.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION:tg.EXPANDED_AUTO_HIDE_VISUAL_DECORATION:i?tg.MANUALLY_EXPANDED_VISUAL_DECORATION:tg.EXPANDED_VISUAL_DECORATION}changeDecorations(e){return this.editor.changeDecorations(e)}removeDecorations(e){this.editor.removeDecorations(e)}}tg.COLLAPSED_VISUAL_DECORATION=Be.qx.register({description:"folding-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:Xu,firstLineDecorationClassName:oi.k.asClassName(Zu)}),tg.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=Be.qx.register({description:"folding-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:$u,isWholeLine:!0,linesDecorationsTooltip:Xu,firstLineDecorationClassName:oi.k.asClassName(Zu)}),tg.MANUALLY_COLLAPSED_VISUAL_DECORATION=Be.qx.register({description:"folding-manually-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:Xu,firstLineDecorationClassName:oi.k.asClassName(Yu)}),tg.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=Be.qx.register({description:"folding-manually-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:$u,isWholeLine:!0,linesDecorationsTooltip:Xu,firstLineDecorationClassName:oi.k.asClassName(Yu)}),tg.NO_CONTROLS_COLLAPSED_RANGE_DECORATION=Be.qx.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:Xu}),tg.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION=Be.qx.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:$u,isWholeLine:!0,linesDecorationsTooltip:Xu}),tg.EXPANDED_VISUAL_DECORATION=Be.qx.register({description:"folding-expanded-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+oi.k.asClassName(Qu),linesDecorationsTooltip:eg}),tg.EXPANDED_AUTO_HIDE_VISUAL_DECORATION=Be.qx.register({description:"folding-expanded-auto-hide-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:oi.k.asClassName(Qu),linesDecorationsTooltip:eg}),tg.MANUALLY_EXPANDED_VISUAL_DECORATION=Be.qx.register({description:"folding-manually-expanded-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+oi.k.asClassName(Ju),linesDecorationsTooltip:eg}),tg.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION=Be.qx.register({description:"folding-manually-expanded-auto-hide-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:oi.k.asClassName(Ju),linesDecorationsTooltip:eg}),tg.NO_CONTROLS_EXPANDED_RANGE_DECORATION=Be.qx.register({description:"folding-no-controls-range-decoration",stickiness:0,isWholeLine:!0}),tg.HIDDEN_RANGE_DECORATION=Be.qx.register({description:"folding-hidden-range-decoration",stickiness:1});const ig={};class og{constructor(e,t,i,o,n){this.editorModel=e,this.providers=t,this.handleFoldingRangesChange=i,this.foldingRangesLimit=o,this.fallbackRangeProvider=n,this.id="syntax",this.disposables=new Fe.SL,n&&this.disposables.add(n);for(const s of t)"function"===typeof s.onDidChange&&this.disposables.add(s.onDidChange(i))}compute(e){return function(e,t,i){let o=null;const n=e.map(((e,n)=>Promise.resolve(e.provideFoldingRanges(t,ig,i)).then((e=>{if(!i.isCancellationRequested&&Array.isArray(e)){Array.isArray(o)||(o=[]);const i=t.getLineCount();for(const t of e)t.start>0&&t.end>t.start&&t.end<=i&&o.push({start:t.start,end:t.end,rank:n,kind:t.kind})}}),Ji.Cp)));return Promise.all(n).then((e=>o))}(this.providers,this.editorModel,e).then((t=>{var i,o;if(t){const e=function(e,t){const i=e.sort(((e,t)=>{let i=e.start-t.start;return 0===i&&(i=e.rank-t.rank),i})),o=new ng(t);let n;const s=[];for(const r of i)if(n){if(r.start>n.start)if(r.end<=n.end)s.push(n),n=r,o.add(r.start,r.end,r.kind&&r.kind.value,s.length);else{if(r.start>n.end){do{n=s.pop()}while(n&&r.start>n.end);n&&s.push(n),n=r}o.add(r.start,r.end,r.kind&&r.kind.value,s.length)}}else n=r,o.add(r.start,r.end,r.kind&&r.kind.value,s.length);return o.toIndentRanges()}(t,this.foldingRangesLimit);return e}return null!==(o=null===(i=this.fallbackRangeProvider)||void 0===i?void 0:i.compute(e))&&void 0!==o?o:null}))}dispose(){this.disposables.dispose()}}class ng{constructor(e){this._startIndexes=[],this._endIndexes=[],this._nestingLevels=[],this._nestingLevelCounts=[],this._types=[],this._length=0,this._foldingRangesLimit=e}add(e,t,i,o){if(e>Du||t>Du)return;const n=this._length;this._startIndexes[n]=e,this._endIndexes[n]=t,this._nestingLevels[n]=o,this._types[n]=i,this._length++,o<30&&(this._nestingLevelCounts[o]=(this._nestingLevelCounts[o]||0)+1)}toIndentRanges(){const e=this._foldingRangesLimit.limit;if(this._length<=e){this._foldingRangesLimit.update(this._length,!1);const e=new Uint32Array(this._length),t=new Uint32Array(this._length);for(let i=0;i<this._length;i++)e[i]=this._startIndexes[i],t[i]=this._endIndexes[i];return new Pu(e,t,this._types)}{this._foldingRangesLimit.update(this._length,e);let t=0,i=this._nestingLevelCounts.length;for(let r=0;r<this._nestingLevelCounts.length;r++){const o=this._nestingLevelCounts[r];if(o){if(o+t>e){i=r;break}t+=o}}const o=new Uint32Array(e),n=new Uint32Array(e),s=[];for(let r=0,a=0;r<this._length;r++){const l=this._nestingLevels[r];(l<i||l===i&&t++<e)&&(o[a]=this._startIndexes[r],n[a]=this._endIndexes[r],s[a]=this._types[r],a++)}return new Pu(o,n,s)}}}var sg,rg=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ag=function(e,t){return function(i,o){t(i,o,e)}};const lg=new ae.uy("foldingEnabled",!1);let dg=sg=class extends Fe.JT{static get(e){return e.getContribution(sg.ID)}static getFoldingRangeProviders(e,t){var i,o;const n=e.foldingRangeProvider.ordered(t);return null!==(o=null===(i=sg._foldingRangeSelector)||void 0===i?void 0:i.call(sg,n,t))&&void 0!==o?o:n}constructor(e,t,i,o,n,s){super(),this.contextKeyService=t,this.languageConfigurationService=i,this.languageFeaturesService=s,this.localToDispose=this._register(new Fe.SL),this.editor=e,this._foldingLimitReporter=new cg(e);const r=this.editor.getOptions();this._isEnabled=r.get(43),this._useFoldingProviders="indentation"!==r.get(44),this._unfoldOnClickAfterEndOfLine=r.get(48),this._restoringViewState=!1,this._currentModelHasFoldedImports=!1,this._foldingImportsByDefault=r.get(46),this.updateDebounceInfo=n.for(s.foldingRangeProvider,"Folding",{min:200}),this.foldingModel=null,this.hiddenRangeModel=null,this.rangeProvider=null,this.foldingRegionPromise=null,this.foldingModelPromise=null,this.updateScheduler=null,this.cursorChangedScheduler=null,this.mouseDownInfo=null,this.foldingDecorationProvider=new tg(e),this.foldingDecorationProvider.showFoldingControls=r.get(110),this.foldingDecorationProvider.showFoldingHighlights=r.get(45),this.foldingEnabled=lg.bindTo(this.contextKeyService),this.foldingEnabled.set(this._isEnabled),this._register(this.editor.onDidChangeModel((()=>this.onModelChanged()))),this._register(this.editor.onDidChangeConfiguration((e=>{if(e.hasChanged(43)&&(this._isEnabled=this.editor.getOptions().get(43),this.foldingEnabled.set(this._isEnabled),this.onModelChanged()),e.hasChanged(47)&&this.onModelChanged(),e.hasChanged(110)||e.hasChanged(45)){const e=this.editor.getOptions();this.foldingDecorationProvider.showFoldingControls=e.get(110),this.foldingDecorationProvider.showFoldingHighlights=e.get(45),this.triggerFoldingModelChanged()}e.hasChanged(44)&&(this._useFoldingProviders="indentation"!==this.editor.getOptions().get(44),this.onFoldingStrategyChanged()),e.hasChanged(48)&&(this._unfoldOnClickAfterEndOfLine=this.editor.getOptions().get(48)),e.hasChanged(46)&&(this._foldingImportsByDefault=this.editor.getOptions().get(46))}))),this.onModelChanged()}saveViewState(){const e=this.editor.getModel();if(!e||!this._isEnabled||e.isTooLargeForTokenization())return{};if(this.foldingModel){const t=this.foldingModel.getMemento(),i=this.rangeProvider?this.rangeProvider.id:void 0;return{collapsedRegions:t,lineCount:e.getLineCount(),provider:i,foldedImports:this._currentModelHasFoldedImports}}}restoreViewState(e){const t=this.editor.getModel();if(t&&this._isEnabled&&!t.isTooLargeForTokenization()&&this.hiddenRangeModel&&e&&(this._currentModelHasFoldedImports=!!e.foldedImports,e.collapsedRegions&&e.collapsedRegions.length>0&&this.foldingModel)){this._restoringViewState=!0;try{this.foldingModel.applyMemento(e.collapsedRegions)}finally{this._restoringViewState=!1}}}onModelChanged(){this.localToDispose.clear();const e=this.editor.getModel();this._isEnabled&&e&&!e.isTooLargeForTokenization()&&(this._currentModelHasFoldedImports=!1,this.foldingModel=new Eu(e,this.foldingDecorationProvider),this.localToDispose.add(this.foldingModel),this.hiddenRangeModel=new zu(this.foldingModel),this.localToDispose.add(this.hiddenRangeModel),this.localToDispose.add(this.hiddenRangeModel.onDidChange((e=>this.onHiddenRangesChanges(e)))),this.updateScheduler=new Oe.vp(this.updateDebounceInfo.get(e)),this.cursorChangedScheduler=new Oe.pY((()=>this.revealCursor()),200),this.localToDispose.add(this.cursorChangedScheduler),this.localToDispose.add(this.languageFeaturesService.foldingRangeProvider.onDidChange((()=>this.onFoldingStrategyChanged()))),this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration((()=>this.onFoldingStrategyChanged()))),this.localToDispose.add(this.editor.onDidChangeModelContent((e=>this.onDidChangeModelContent(e)))),this.localToDispose.add(this.editor.onDidChangeCursorPosition((()=>this.onCursorPositionChanged()))),this.localToDispose.add(this.editor.onMouseDown((e=>this.onEditorMouseDown(e)))),this.localToDispose.add(this.editor.onMouseUp((e=>this.onEditorMouseUp(e)))),this.localToDispose.add({dispose:()=>{var e,t;this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),null===(e=this.updateScheduler)||void 0===e||e.cancel(),this.updateScheduler=null,this.foldingModel=null,this.foldingModelPromise=null,this.hiddenRangeModel=null,this.cursorChangedScheduler=null,null===(t=this.rangeProvider)||void 0===t||t.dispose(),this.rangeProvider=null}}),this.triggerFoldingModelChanged())}onFoldingStrategyChanged(){var e;null===(e=this.rangeProvider)||void 0===e||e.dispose(),this.rangeProvider=null,this.triggerFoldingModelChanged()}getRangeProvider(e){if(this.rangeProvider)return this.rangeProvider;const t=new Ku(e,this.languageConfigurationService,this._foldingLimitReporter);if(this.rangeProvider=t,this._useFoldingProviders&&this.foldingModel){const i=sg.getFoldingRangeProviders(this.languageFeaturesService,e);i.length>0&&(this.rangeProvider=new og(e,i,(()=>this.triggerFoldingModelChanged()),this._foldingLimitReporter,t))}return this.rangeProvider}getFoldingModel(){return this.foldingModelPromise}onDidChangeModelContent(e){var t;null===(t=this.hiddenRangeModel)||void 0===t||t.notifyChangeModelContent(e),this.triggerFoldingModelChanged()}triggerFoldingModelChanged(){this.updateScheduler&&(this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.foldingModelPromise=this.updateScheduler.trigger((()=>{const e=this.foldingModel;if(!e)return null;const t=new Yn.G,i=this.getRangeProvider(e.textModel),o=this.foldingRegionPromise=(0,Oe.PG)((e=>i.compute(e)));return o.then((i=>{if(i&&o===this.foldingRegionPromise){let o;if(this._foldingImportsByDefault&&!this._currentModelHasFoldedImports){const e=i.setCollapsedAllOfType(Lt.AD.Imports.value,!0);e&&(o=kn.Z.capture(this.editor),this._currentModelHasFoldedImports=e)}const n=this.editor.getSelections(),s=n?n.map((e=>e.startLineNumber)):[];e.update(i,s),null===o||void 0===o||o.restore(this.editor);const r=this.updateDebounceInfo.update(e.textModel,t.elapsed());this.updateScheduler&&(this.updateScheduler.defaultDelay=r)}return e}))})).then(void 0,(e=>((0,Ji.dL)(e),null))))}onHiddenRangesChanges(e){if(this.hiddenRangeModel&&e.length&&!this._restoringViewState){const e=this.editor.getSelections();e&&this.hiddenRangeModel.adjustSelections(e)&&this.editor.setSelections(e)}this.editor.setHiddenAreas(e,this)}onCursorPositionChanged(){this.hiddenRangeModel&&this.hiddenRangeModel.hasRanges()&&this.cursorChangedScheduler.schedule()}revealCursor(){const e=this.getFoldingModel();e&&e.then((e=>{if(e){const t=this.editor.getSelections();if(t&&t.length>0){const i=[];for(const o of t){const t=o.selectionStartLineNumber;this.hiddenRangeModel&&this.hiddenRangeModel.isHidden(t)&&i.push(...e.getAllRegionsAtLine(t,(e=>e.isCollapsed&&t>e.startLineNumber)))}i.length&&(e.toggleCollapseState(i),this.reveal(t[0].getPosition()))}}})).then(void 0,Ji.dL)}onEditorMouseDown(e){if(this.mouseDownInfo=null,!this.hiddenRangeModel||!e.target||!e.target.range)return;if(!e.event.leftButton&&!e.event.middleButton)return;const t=e.target.range;let i=!1;switch(e.target.type){case 4:{const t=e.target.detail,o=e.target.element.offsetLeft;if(t.offsetX-o<4)return;i=!0;break}case 7:if(this._unfoldOnClickAfterEndOfLine&&this.hiddenRangeModel.hasRanges()){if(!e.target.detail.isAfterLines)break}return;case 6:if(this.hiddenRangeModel.hasRanges()){const e=this.editor.getModel();if(e&&t.startColumn===e.getLineMaxColumn(t.startLineNumber))break}return;default:return}this.mouseDownInfo={lineNumber:t.startLineNumber,iconClicked:i}}onEditorMouseUp(e){const t=this.foldingModel;if(!t||!this.mouseDownInfo||!e.target)return;const i=this.mouseDownInfo.lineNumber,o=this.mouseDownInfo.iconClicked,n=e.target.range;if(!n||n.startLineNumber!==i)return;if(o){if(4!==e.target.type)return}else{const e=this.editor.getModel();if(!e||n.startColumn!==e.getLineMaxColumn(i))return}const s=t.getRegionAtLine(i);if(s&&s.startLineNumber===i){const n=s.isCollapsed;if(o||n){let o=[];if(e.event.altKey){const e=e=>!e.containedBy(s)&&!s.containedBy(e),i=t.getRegionsInside(null,e);for(const t of i)t.isCollapsed&&o.push(t);0===o.length&&(o=i)}else{const i=e.event.middleButton||e.event.shiftKey;if(i)for(const e of t.getRegionsInside(s))e.isCollapsed===n&&o.push(e);!n&&i&&0!==o.length||o.push(s)}t.toggleCollapseState(o),this.reveal({lineNumber:i,column:1})}}}reveal(e){this.editor.revealPositionInCenterIfOutsideViewport(e,0)}};dg.ID="editor.contrib.folding",dg=sg=rg([ag(1,ae.i6),ag(2,Xn.c_),ag(3,Xi.lT),ag(4,jn.A),ag(5,kt.p)],dg);class cg{constructor(e){this.editor=e,this._onDidChange=new ui.Q5,this._computed=0,this._limited=!1}get limit(){return this.editor.getOptions().get(47)}update(e,t){e===this._computed&&t===this._limited||(this._computed=e,this._limited=t,this._onDidChange.fire())}}class hg extends ee.R6{runEditorCommand(e,t,i){const o=e.get(Xn.c_),n=dg.get(t);if(!n)return;const s=n.getFoldingModel();return s?(this.reportTelemetry(e,t),s.then((e=>{if(e){this.invoke(n,e,t,i,o);const s=t.getSelection();s&&n.reveal(s.getStartPosition())}}))):void 0}getSelectedLines(e){const t=e.getSelections();return t?t.map((e=>e.startLineNumber)):[]}getLineNumbers(e,t){return e&&e.selectionLines?e.selectionLines.map((e=>e+1)):this.getSelectedLines(t)}run(e,t){}}function ug(e){if(!Dn.o8(e)){if(!Dn.Kn(e))return!1;const t=e;if(!Dn.o8(t.levels)&&!Dn.hj(t.levels))return!1;if(!Dn.o8(t.direction)&&!Dn.HD(t.direction))return!1;if(!Dn.o8(t.selectionLines)&&(!Array.isArray(t.selectionLines)||!t.selectionLines.every(Dn.hj)))return!1}return!0}class gg extends hg{getFoldingLevel(){return parseInt(this.id.substr(gg.ID_PREFIX.length))}invoke(e,t,i){!function(e,t,i,o){const n=e.getRegionsInside(null,((e,n)=>n===t&&e.isCollapsed!==i&&!o.some((t=>e.containsLine(t)))));e.toggleCollapseState(n)}(t,this.getFoldingLevel(),!0,this.getSelectedLines(i))}}gg.ID_PREFIX="editor.foldLevel",gg.ID=e=>gg.ID_PREFIX+e;(0,ee._K)(dg.ID,dg,0),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.unfold",label:ne.NC("unfoldAction.label","Unfold"),alias:"Unfold",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:3166,mac:{primary:2654},weight:100},metadata:{description:"Unfold the content in the editor",args:[{name:"Unfold editor argument",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t* 'levels': Number of levels to unfold. If not set, defaults to 1.\n\t\t\t\t\t\t* 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t",constraint:ug,schema:{type:"object",properties:{levels:{type:"number",default:1},direction:{type:"string",enum:["up","down"],default:"down"},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(e,t,i,o){const n=o&&o.levels||1,s=this.getLineNumbers(o,i);o&&"up"===o.direction?Fu(t,!1,n,s):Ou(t,!1,n,s)}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.unfoldRecursively",label:ne.NC("unFoldRecursivelyAction.label","Unfold Recursively"),alias:"Unfold Recursively",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2142),weight:100}})}invoke(e,t,i,o){Ou(t,!1,Number.MAX_VALUE,this.getSelectedLines(i))}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.fold",label:ne.NC("foldAction.label","Fold"),alias:"Fold",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:3164,mac:{primary:2652},weight:100},metadata:{description:"Fold the content in the editor",args:[{name:"Fold editor argument",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t\t* 'levels': Number of levels to fold.\n\t\t\t\t\t\t\t* 'direction': If 'up', folds given number of levels up otherwise folds down.\n\t\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t\tIf no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\t\t\t\t\t\t",constraint:ug,schema:{type:"object",properties:{levels:{type:"number"},direction:{type:"string",enum:["up","down"]},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(e,t,i,o){const n=this.getLineNumbers(o,i),s=o&&o.levels,r=o&&o.direction;"number"!==typeof s&&"string"!==typeof r?function(e,t,i){const o=[];for(const n of i){const i=e.getAllRegionsAtLine(n,(e=>e.isCollapsed!==t));i.length>0&&o.push(i[0])}e.toggleCollapseState(o)}(t,!0,n):"up"===r?Fu(t,!0,s||1,n):Ou(t,!0,s||1,n)}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.foldRecursively",label:ne.NC("foldRecursivelyAction.label","Fold Recursively"),alias:"Fold Recursively",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2140),weight:100}})}invoke(e,t,i){const o=this.getSelectedLines(i);Ou(t,!0,Number.MAX_VALUE,o)}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.foldAll",label:ne.NC("foldAllAction.label","Fold All"),alias:"Fold All",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2069),weight:100}})}invoke(e,t,i){Ou(t,!0)}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.unfoldAll",label:ne.NC("unfoldAllAction.label","Unfold All"),alias:"Unfold All",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2088),weight:100}})}invoke(e,t,i){Ou(t,!1)}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.foldAllBlockComments",label:ne.NC("foldAllBlockComments.label","Fold All Block Comments"),alias:"Fold All Block Comments",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2138),weight:100}})}invoke(e,t,i,o,n){if(t.regions.hasTypes())Vu(t,Lt.AD.Comment.value,!0);else{const e=i.getModel();if(!e)return;const o=n.getLanguageConfiguration(e.getLanguageId()).comments;if(o&&o.blockCommentStartToken){Hu(t,new RegExp("^\\s*"+(0,ii.ec)(o.blockCommentStartToken)),!0)}}}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.foldAllMarkerRegions",label:ne.NC("foldAllMarkerRegions.label","Fold All Regions"),alias:"Fold All Regions",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2077),weight:100}})}invoke(e,t,i,o,n){if(t.regions.hasTypes())Vu(t,Lt.AD.Region.value,!0);else{const e=i.getModel();if(!e)return;const o=n.getLanguageConfiguration(e.getLanguageId()).foldingRules;if(o&&o.markers&&o.markers.start){Hu(t,new RegExp(o.markers.start),!0)}}}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.unfoldAllMarkerRegions",label:ne.NC("unfoldAllMarkerRegions.label","Unfold All Regions"),alias:"Unfold All Regions",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2078),weight:100}})}invoke(e,t,i,o,n){if(t.regions.hasTypes())Vu(t,Lt.AD.Region.value,!1);else{const e=i.getModel();if(!e)return;const o=n.getLanguageConfiguration(e.getLanguageId()).foldingRules;if(o&&o.markers&&o.markers.start){Hu(t,new RegExp(o.markers.start),!1)}}}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.foldAllExcept",label:ne.NC("foldAllExcept.label","Fold All Except Selected"),alias:"Fold All Except Selected",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2136),weight:100}})}invoke(e,t,i){Wu(t,!0,this.getSelectedLines(i))}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.unfoldAllExcept",label:ne.NC("unfoldAllExcept.label","Unfold All Except Selected"),alias:"Unfold All Except Selected",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2134),weight:100}})}invoke(e,t,i){Wu(t,!1,this.getSelectedLines(i))}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.toggleFold",label:ne.NC("toggleFoldAction.label","Toggle Fold"),alias:"Toggle Fold",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2090),weight:100}})}invoke(e,t,i){Au(t,1,this.getSelectedLines(i))}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.gotoParentFold",label:ne.NC("gotoParentFold.label","Go to Parent Fold"),alias:"Go to Parent Fold",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,weight:100}})}invoke(e,t,i){const o=this.getSelectedLines(i);if(o.length>0){const e=function(e,t){let i=null;const o=t.getRegionAtLine(e);if(null!==o&&(i=o.startLineNumber,e===i)){const e=o.parentIndex;i=-1!==e?t.regions.getStartLineNumber(e):null}return i}(o[0],t);null!==e&&i.setSelection({startLineNumber:e,startColumn:1,endLineNumber:e,endColumn:1})}}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.gotoPreviousFold",label:ne.NC("gotoPreviousFold.label","Go to Previous Folding Range"),alias:"Go to Previous Folding Range",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,weight:100}})}invoke(e,t,i){const o=this.getSelectedLines(i);if(o.length>0){const e=function(e,t){let i=t.getRegionAtLine(e);if(null!==i&&i.startLineNumber===e){if(e!==i.startLineNumber)return i.startLineNumber;{const e=i.parentIndex;let o=0;for(-1!==e&&(o=t.regions.getStartLineNumber(i.parentIndex));null!==i;){if(!(i.regionIndex>0))return null;if(i=t.regions.toRegion(i.regionIndex-1),i.startLineNumber<=o)return null;if(i.parentIndex===e)return i.startLineNumber}}}else if(t.regions.length>0)for(i=t.regions.toRegion(t.regions.length-1);null!==i;){if(i.startLineNumber<e)return i.startLineNumber;i=i.regionIndex>0?t.regions.toRegion(i.regionIndex-1):null}return null}(o[0],t);null!==e&&i.setSelection({startLineNumber:e,startColumn:1,endLineNumber:e,endColumn:1})}}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.gotoNextFold",label:ne.NC("gotoNextFold.label","Go to Next Folding Range"),alias:"Go to Next Folding Range",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,weight:100}})}invoke(e,t,i){const o=this.getSelectedLines(i);if(o.length>0){const e=function(e,t){let i=t.getRegionAtLine(e);if(null!==i&&i.startLineNumber===e){const e=i.parentIndex;let o=0;if(-1!==e)o=t.regions.getEndLineNumber(i.parentIndex);else{if(0===t.regions.length)return null;o=t.regions.getEndLineNumber(t.regions.length-1)}for(;null!==i;){if(!(i.regionIndex<t.regions.length))return null;if(i=t.regions.toRegion(i.regionIndex+1),i.startLineNumber>=o)return null;if(i.parentIndex===e)return i.startLineNumber}}else if(t.regions.length>0)for(i=t.regions.toRegion(0);null!==i;){if(i.startLineNumber>e)return i.startLineNumber;i=i.regionIndex<t.regions.length?t.regions.toRegion(i.regionIndex+1):null}return null}(o[0],t);null!==e&&i.setSelection({startLineNumber:e,startColumn:1,endLineNumber:e,endColumn:1})}}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.createFoldingRangeFromSelection",label:ne.NC("createManualFoldRange.label","Create Folding Range from Selection"),alias:"Create Folding Range from Selection",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2135),weight:100}})}invoke(e,t,i){var o;const n=[],s=i.getSelections();if(s){for(const e of s){let t=e.endLineNumber;1===e.endColumn&&--t,t>e.startLineNumber&&(n.push({startLineNumber:e.startLineNumber,endLineNumber:t,type:void 0,isCollapsed:!0,source:1}),i.setSelection({startLineNumber:e.startLineNumber,startColumn:1,endLineNumber:e.startLineNumber,endColumn:1}))}if(n.length>0){n.sort(((e,t)=>e.startLineNumber-t.startLineNumber));const e=Pu.sanitizeAndMerge(t.regions,n,null===(o=i.getModel())||void 0===o?void 0:o.getLineCount());t.updatePost(Pu.fromFoldRanges(e))}}}}),(0,ee.Qr)(class extends hg{constructor(){super({id:"editor.removeManualFoldingRanges",label:ne.NC("removeManualFoldingRanges.label","Remove Manual Folding Ranges"),alias:"Remove Manual Folding Ranges",precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2137),weight:100}})}invoke(e,t,i){const o=i.getSelections();if(o){const i=[];for(const e of o){const{startLineNumber:t,endLineNumber:o}=e;i.push(o>=t?{startLineNumber:t,endLineNumber:o}:{endLineNumber:o,startLineNumber:t})}t.removeManualRanges(i),e.triggerFoldingModelChanged()}}});for(let Ex=1;Ex<=7;Ex++)(0,ee.QG)(new gg({id:gg.ID(Ex),label:ne.NC("foldLevelAction.label","Fold Level {0}",Ex),alias:"Fold Level ".concat(Ex),precondition:lg,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2048|21+Ex),weight:100}}));ye.P.registerCommand("_executeFoldingRangeProvider",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n]=i;if(!(n instanceof _t.o))throw(0,Ji.b1)();const s=e.get(kt.p),r=e.get($i.q).getModel(n);if(!r)throw(0,Ji.b1)();const a=e.get(re.Ui);if(!a.getValue("editor.folding",{resource:n}))return[];const l=e.get(Xn.c_),d=a.getValue("editor.foldingStrategy",{resource:n}),c={get limit(){return a.getValue("editor.foldingMaximumRegions",{resource:n})},update:(e,t)=>{}},h=new Ku(r,l,c);let u=h;if("indentation"!==d){const e=dg.getFoldingRangeProviders(s,r);e.length&&(u=new og(r,e,(()=>{}),c,h))}const g=await u.compute(Yi.T.None),p=[];try{if(g)for(let e=0;e<g.length;e++){const t=g.getType(e);p.push({start:g.getStartLineNumber(e),end:g.getEndLineNumber(e),kind:t?Lt.AD.fromValue(t):void 0})}return p}finally{u.dispose()}}));var pg=i(15804);class mg extends ee.R6{constructor(){super({id:"editor.action.fontZoomIn",label:ne.NC("EditorFontZoomIn.label","Increase Editor Font Size"),alias:"Increase Editor Font Size",precondition:void 0})}run(e,t){pg.C.setZoomLevel(pg.C.getZoomLevel()+1)}}class _g extends ee.R6{constructor(){super({id:"editor.action.fontZoomOut",label:ne.NC("EditorFontZoomOut.label","Decrease Editor Font Size"),alias:"Decrease Editor Font Size",precondition:void 0})}run(e,t){pg.C.setZoomLevel(pg.C.getZoomLevel()-1)}}class fg extends ee.R6{constructor(){super({id:"editor.action.fontZoomReset",label:ne.NC("EditorFontZoomReset.label","Reset Editor Font Size"),alias:"Reset Editor Font Size",precondition:void 0})}run(e,t){pg.C.setZoomLevel(0)}}(0,ee.Qr)(mg),(0,ee.Qr)(_g),(0,ee.Qr)(fg);var vg=i(89505),bg=i(60918),Cg=i(44492),Sg=i(58028),yg=i(68633),wg=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},xg=function(e,t){return function(i,o){t(i,o,e)}};let Ng=class{constructor(e,t,i,o){this._editor=e,this._languageFeaturesService=t,this._workerService=i,this._accessibilitySignalService=o,this._disposables=new Fe.SL,this._sessionDisposables=new Fe.SL,this._disposables.add(t.onTypeFormattingEditProvider.onDidChange(this._update,this)),this._disposables.add(e.onDidChangeModel((()=>this._update()))),this._disposables.add(e.onDidChangeModelLanguage((()=>this._update()))),this._disposables.add(e.onDidChangeConfiguration((e=>{e.hasChanged(56)&&this._update()}))),this._update()}dispose(){this._disposables.dispose(),this._sessionDisposables.dispose()}_update(){if(this._sessionDisposables.clear(),!this._editor.getOption(56))return;if(!this._editor.hasModel())return;const e=this._editor.getModel(),[t]=this._languageFeaturesService.onTypeFormattingEditProvider.ordered(e);if(!t||!t.autoFormatTriggerCharacters)return;const i=new vg.q;for(const o of t.autoFormatTriggerCharacters)i.add(o.charCodeAt(0));this._sessionDisposables.add(this._editor.onDidType((e=>{const t=e.charCodeAt(e.length-1);i.has(t)&&this._trigger(String.fromCharCode(t))})))}_trigger(e){if(!this._editor.hasModel())return;if(this._editor.getSelections().length>1||!this._editor.getSelection().isEmpty())return;const t=this._editor.getModel(),i=this._editor.getPosition(),o=new Yi.A,n=this._editor.onDidChangeModelContent((e=>{if(e.isFlush)return o.cancel(),void n.dispose();for(let t=0,s=e.changes.length;t<s;t++){if(e.changes[t].range.endLineNumber<=i.lineNumber)return o.cancel(),void n.dispose()}}));(0,Cg.Qs)(this._workerService,this._languageFeaturesService,t,i,e,t.getFormattingOptions(),o.token).then((e=>{o.token.isCancellationRequested||(0,nt.Of)(e)&&(this._accessibilitySignalService.playSignal(yg.iP.format,{userGesture:!1}),Sg.V.execute(this._editor,e,!0))})).finally((()=>{n.dispose()}))}};Ng.ID="editor.contrib.autoFormat",Ng=wg([xg(1,kt.p),xg(2,bg.p),xg(3,yg.IV)],Ng);let Lg=class{constructor(e,t,i){this.editor=e,this._languageFeaturesService=t,this._instantiationService=i,this._callOnDispose=new Fe.SL,this._callOnModel=new Fe.SL,this._callOnDispose.add(e.onDidChangeConfiguration((()=>this._update()))),this._callOnDispose.add(e.onDidChangeModel((()=>this._update()))),this._callOnDispose.add(e.onDidChangeModelLanguage((()=>this._update()))),this._callOnDispose.add(t.documentRangeFormattingEditProvider.onDidChange(this._update,this))}dispose(){this._callOnDispose.dispose(),this._callOnModel.dispose()}_update(){this._callOnModel.clear(),this.editor.getOption(55)&&this.editor.hasModel()&&this._languageFeaturesService.documentRangeFormattingEditProvider.has(this.editor.getModel())&&this._callOnModel.add(this.editor.onDidPaste((e=>{let{range:t}=e;return this._trigger(t)})))}_trigger(e){this.editor.hasModel()&&(this.editor.getSelections().length>1||this._instantiationService.invokeFunction(Cg.x$,this.editor,e,2,yi.Ex.None,Yi.T.None,!1).catch(Ji.dL))}};Lg.ID="editor.contrib.formatOnPaste",Lg=wg([xg(1,kt.p),xg(2,ni.TG)],Lg);class kg extends ee.R6{constructor(){super({id:"editor.action.formatDocument",label:ne.NC("formatDocument.label","Format Document"),alias:"Format Document",precondition:ae.Ao.and(oe.u.notInCompositeEditor,oe.u.writable,oe.u.hasDocumentFormattingProvider),kbOpts:{kbExpr:oe.u.editorTextFocus,primary:1572,linux:{primary:3111},weight:100},contextMenuOpts:{group:"1_modification",order:1.3}})}async run(e,t){if(t.hasModel()){const i=e.get(ni.TG),o=e.get(yi.ek);await o.showWhile(i.invokeFunction(Cg.Qq,t,1,yi.Ex.None,Yi.T.None,!0),250)}}}class Dg extends ee.R6{constructor(){super({id:"editor.action.formatSelection",label:ne.NC("formatSelection.label","Format Selection"),alias:"Format Selection",precondition:ae.Ao.and(oe.u.writable,oe.u.hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2084),weight:100},contextMenuOpts:{when:oe.u.hasNonEmptySelection,group:"1_modification",order:1.31}})}async run(e,t){if(!t.hasModel())return;const i=e.get(ni.TG),o=t.getModel(),n=t.getSelections().map((e=>e.isEmpty()?new He.e(e.startLineNumber,1,e.startLineNumber,o.getLineMaxColumn(e.startLineNumber)):e)),s=e.get(yi.ek);await s.showWhile(i.invokeFunction(Cg.x$,t,n,1,yi.Ex.None,Yi.T.None,!0),250)}}(0,ee._K)(Ng.ID,Ng,2),(0,ee._K)(Lg.ID,Lg,2),(0,ee.Qr)(kg),(0,ee.Qr)(Dg),ye.P.registerCommand("editor.action.format",(async e=>{const t=e.get(te.$).getFocusedCodeEditor();if(!t||!t.hasModel())return;const i=e.get(ye.H);t.getSelection().isEmpty()?await i.executeCommand("editor.action.formatDocument"):await i.executeCommand("editor.action.formatSelection")}));var Ig=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Rg=function(e,t){return function(i,o){t(i,o,e)}};class Pg{remove(){var e;null===(e=this.parent)||void 0===e||e.children.delete(this.id)}static findId(e,t){let i;"string"===typeof e?i="".concat(t.id,"/").concat(e):(i="".concat(t.id,"/").concat(e.name),void 0!==t.children.get(i)&&(i="".concat(t.id,"/").concat(e.name,"_").concat(e.range.startLineNumber,"_").concat(e.range.startColumn)));let o=i;for(let n=0;void 0!==t.children.get(o);n++)o="".concat(i,"_").concat(n);return o}static empty(e){return 0===e.children.size}}class Mg extends Pg{constructor(e,t,i){super(),this.id=e,this.parent=t,this.symbol=i,this.children=new Map}}class Tg extends Pg{constructor(e,t,i,o){super(),this.id=e,this.parent=t,this.label=i,this.order=o,this.children=new Map}}class Eg extends Pg{static create(e,t,i){const o=new Yi.A(i),n=new Eg(t.uri),s=e.ordered(t),r=s.map(((e,i)=>{var s;const r=Pg.findId("provider_".concat(i),n),a=new Tg(r,n,null!==(s=e.displayName)&&void 0!==s?s:"Unknown Outline Provider",i);return Promise.resolve(e.provideDocumentSymbols(t,o.token)).then((e=>{for(const t of e||[])Eg._makeOutlineElement(t,a);return a}),(e=>((0,Ji.Cp)(e),a))).then((e=>{Pg.empty(e)?e.remove():n._groups.set(r,e)}))})),a=e.onDidChange((()=>{const i=e.ordered(t);(0,nt.fS)(i,s)||o.cancel()}));return Promise.all(r).then((()=>o.token.isCancellationRequested&&!i.isCancellationRequested?Eg.create(e,t,i):n._compact())).finally((()=>{o.dispose(),a.dispose(),o.dispose()}))}static _makeOutlineElement(e,t){const i=Pg.findId(e,t),o=new Mg(i,t,e);if(e.children)for(const n of e.children)Eg._makeOutlineElement(n,o);t.children.set(o.id,o)}constructor(e){super(),this.uri=e,this.id="root",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id="root",this.parent=void 0}_compact(){let e=0;for(const[t,i]of this._groups)0===i.children.size?this._groups.delete(t):e+=1;if(1!==e)this.children=this._groups;else{const e=st.$.first(this._groups.values());for(const[,t]of e.children)t.parent=this,this.children.set(t.id,t)}return this}getTopLevelSymbols(){const e=[];for(const t of this.children.values())t instanceof Mg?e.push(t.symbol):e.push(...st.$.map(t.children.values(),(e=>e.symbol)));return e.sort(((e,t)=>He.e.compareRangesUsingStarts(e.range,t.range)))}asListOfDocumentSymbols(){const e=this.getTopLevelSymbols(),t=[];return Eg._flattenDocumentSymbols(t,e,""),t.sort(((e,t)=>We.L.compare(He.e.getStartPosition(e.range),He.e.getStartPosition(t.range))||We.L.compare(He.e.getEndPosition(t.range),He.e.getEndPosition(e.range))))}static _flattenDocumentSymbols(e,t,i){for(const o of t)e.push({kind:o.kind,tags:o.tags,name:o.name,detail:o.detail,containerName:o.containerName||i,range:o.range,selectionRange:o.selectionRange,children:void 0}),o.children&&Eg._flattenDocumentSymbols(e,o.children,o.name)}}const Ag=(0,ni.yh)("IOutlineModelService");let Og=class{constructor(e,t,i){this._languageFeaturesService=e,this._disposables=new Fe.SL,this._cache=new Pn.z6(10,.7),this._debounceInformation=t.for(e.documentSymbolProvider,"DocumentSymbols",{min:350}),this._disposables.add(i.onModelRemoved((e=>{this._cache.delete(e.id)})))}dispose(){this._disposables.dispose()}async getOrCreate(e,t){const i=this._languageFeaturesService.documentSymbolProvider,o=i.ordered(e);let n=this._cache.get(e.id);if(!n||n.versionId!==e.getVersionId()||!(0,nt.fS)(n.provider,o)){const t=new Yi.A;n={versionId:e.getVersionId(),provider:o,promiseCnt:0,source:t,promise:Eg.create(i,e,t.token),model:void 0},this._cache.set(e.id,n);const s=Date.now();n.promise.then((t=>{n.model=t,this._debounceInformation.update(e,Date.now()-s)})).catch((t=>{this._cache.delete(e.id)}))}if(n.model)return n.model;n.promiseCnt+=1;const s=t.onCancellationRequested((()=>{0===--n.promiseCnt&&(n.source.cancel(),this._cache.delete(e.id))}));try{return await n.promise}finally{s.dispose()}}};Og=Ig([Rg(0,kt.p),Rg(1,jn.A),Rg(2,$i.q)],Og),(0,Zo.z)(Ag,Og,1),ye.P.registerCommand("_executeDocumentSymbolProvider",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n]=i;(0,Dn.p_)(_t.o.isUri(n));const s=e.get(Ag),r=e.get(Ks.S),a=await r.createModelReference(n);try{return(await s.getOrCreate(a.object.textEditorModel,Yi.T.None)).getTopLevelSymbols()}finally{a.dispose()}}));var Fg=i(52938),Wg=i(5255);class Hg extends Fe.JT{constructor(e,t){super(),this.contextKeyService=e,this.model=t,this.inlineCompletionVisible=Hg.inlineSuggestionVisible.bindTo(this.contextKeyService),this.inlineCompletionSuggestsIndentation=Hg.inlineSuggestionHasIndentation.bindTo(this.contextKeyService),this.inlineCompletionSuggestsIndentationLessThanTabSize=Hg.inlineSuggestionHasIndentationLessThanTabSize.bindTo(this.contextKeyService),this.suppressSuggestions=Hg.suppressSuggestions.bindTo(this.contextKeyService),this._register((0,dd.EH)((e=>{const t=this.model.read(e),i=null===t||void 0===t?void 0:t.state.read(e),o=!!(null===i||void 0===i?void 0:i.inlineCompletion)&&void 0!==(null===i||void 0===i?void 0:i.primaryGhostText)&&!(null===i||void 0===i?void 0:i.primaryGhostText.isEmpty());this.inlineCompletionVisible.set(o),(null===i||void 0===i?void 0:i.primaryGhostText)&&(null===i||void 0===i?void 0:i.inlineCompletion)&&this.suppressSuggestions.set(i.inlineCompletion.inlineCompletion.source.inlineCompletions.suppressSuggestions)}))),this._register((0,dd.EH)((e=>{const t=this.model.read(e);let i=!1,o=!0;const n=null===t||void 0===t?void 0:t.primaryGhostText.read(e);if((null===t||void 0===t?void 0:t.selectedSuggestItem)&&n&&n.parts.length>0){const{column:e,lines:s}=n.parts[0],r=s[0];if(e<=t.textModel.getLineIndentColumn(n.lineNumber)){let e=(0,ii.LC)(r);-1===e&&(e=r.length-1),i=e>0;const n=t.textModel.getOptions().tabSize;o=Wg.i.visibleColumnFromColumn(r,e+1,n)<n}}this.inlineCompletionSuggestsIndentation.set(i),this.inlineCompletionSuggestsIndentationLessThanTabSize.set(o)})))}}Hg.inlineSuggestionVisible=new ae.uy("inlineSuggestionVisible",!1,(0,ne.NC)("inlineSuggestionVisible","Whether an inline suggestion is visible")),Hg.inlineSuggestionHasIndentation=new ae.uy("inlineSuggestionHasIndentation",!1,(0,ne.NC)("inlineSuggestionHasIndentation","Whether the inline suggestion starts with whitespace")),Hg.inlineSuggestionHasIndentationLessThanTabSize=new ae.uy("inlineSuggestionHasIndentationLessThanTabSize",!0,(0,ne.NC)("inlineSuggestionHasIndentationLessThanTabSize","Whether the inline suggestion starts with whitespace that is less than what would be inserted by tab")),Hg.suppressSuggestions=new ae.uy("inlineSuggestionSuppressSuggestions",void 0,(0,ne.NC)("suppressSuggestions","Whether suggestions should be suppressed for the current suggestion"));var Vg=i(52047),Bg=i(99916),zg=i(76071),Ug=i(43471),Kg=i(85766),jg=i(34543),qg=i(24272);class Gg{constructor(e,t){this.lineNumber=e,this.parts=t}equals(e){return this.lineNumber===e.lineNumber&&this.parts.length===e.parts.length&&this.parts.every(((t,i)=>t.equals(e.parts[i])))}renderForScreenReader(e){if(0===this.parts.length)return"";const t=this.parts[this.parts.length-1],i=e.substr(0,t.column-1);return new qg.PY([...this.parts.map((e=>new qg.At(He.e.fromPositions(new We.L(1,e.column)),e.lines.join("\n"))))]).applyToString(i).substring(this.parts[0].column-1)}isEmpty(){return this.parts.every((e=>0===e.lines.length))}get lineCount(){return 1+this.parts.reduce(((e,t)=>e+t.lines.length-1),0)}}class Qg{constructor(e,t,i){this.column=e,this.text=t,this.preview=i,this.lines=(0,ii.uq)(this.text)}equals(e){return this.column===e.column&&this.lines.length===e.lines.length&&this.lines.every(((t,i)=>t===e.lines[i]))}}class Zg{constructor(e,t,i){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;this.lineNumber=e,this.columnRange=t,this.text=i,this.additionalReservedLineCount=o,this.parts=[new Qg(this.columnRange.endColumnExclusive,this.text,!1)],this.newLines=(0,ii.uq)(this.text)}renderForScreenReader(e){return this.newLines.join("\n")}get lineCount(){return this.newLines.length}isEmpty(){return this.parts.every((e=>0===e.lines.length))}equals(e){return this.lineNumber===e.lineNumber&&this.columnRange.equals(e.columnRange)&&this.newLines.length===e.newLines.length&&this.newLines.every(((t,i)=>t===e.newLines[i]))&&this.additionalReservedLineCount===e.additionalReservedLineCount}}function Yg(e,t){return(0,nt.fS)(e,t,Jg)}function Jg(e,t){return e===t||!(!e||!t)&&((e instanceof Gg&&t instanceof Gg||e instanceof Zg&&t instanceof Zg)&&e.equals(t))}const $g=[];class Xg{constructor(e,t){if(this.startColumn=e,this.endColumnExclusive=t,e>t)throw new Ji.he("startColumn ".concat(e," cannot be after endColumnExclusive ").concat(t))}toRange(e){return new He.e(e,this.startColumn,e,this.endColumnExclusive)}equals(e){return this.startColumn===e.startColumn&&this.endColumnExclusive===e.endColumnExclusive}}function ep(e,t){const i=new Fe.SL,o=e.createDecorationsCollection();return i.add((0,dd.UV)({debugName:()=>"Apply decorations from ".concat(t.debugName)},(e=>{const i=t.read(e);o.set(i)}))),i.add({dispose:()=>{o.clear()}}),i}function tp(e,t){return new We.L(e.lineNumber-t.lineNumber+1,e.lineNumber-t.lineNumber===0?e.column-t.column+1:e.column)}var ip=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},op=function(e,t){return function(i,o){t(i,o,e)}};const np="ghost-text";let sp=class extends Fe.JT{constructor(e,t,i){super(),this.editor=e,this.model=t,this.languageService=i,this.isDisposed=(0,dd.uh)(this,!1),this.currentTextModel=(0,dd.rD)(this.editor.onDidChangeModel,(()=>this.editor.getModel())),this.uiState=(0,dd.nK)(this,(e=>{if(this.isDisposed.read(e))return;const t=this.currentTextModel.read(e);if(t!==this.model.targetTextModel.read(e))return;const i=this.model.ghostText.read(e);if(!i)return;const o=i instanceof Zg?i.columnRange:void 0,n=[],s=[];function r(e,t){if(s.length>0){const i=s[s.length-1];t&&i.decorations.push(new Kg.Kp(i.content.length+1,i.content.length+1+e[0].length,t,0)),i.content+=e[0],e=e.slice(1)}for(const i of e)s.push({content:i,decorations:t?[new Kg.Kp(1,i.length+1,t,0)]:[]})}const a=t.getLineContent(i.lineNumber);let l,d=0;for(const h of i.parts){let e=h.lines;void 0===l?(n.push({column:h.column,text:e[0],preview:h.preview}),e=e.slice(1)):r([a.substring(d,h.column-1)],void 0),e.length>0&&(r(e,np),void 0===l&&h.column<=a.length&&(l=h.column)),d=h.column-1}void 0!==l&&r([a.substring(d)],void 0);const c=void 0!==l?new Xg(l,a.length+1):void 0;return{replacedRange:o,inlineTexts:n,additionalLines:s,hiddenRange:c,lineNumber:i.lineNumber,additionalReservedLineCount:this.model.minReservedLineCount.read(e),targetTextModel:t}})),this.decorations=(0,dd.nK)(this,(e=>{const t=this.uiState.read(e);if(!t)return[];const i=[];t.replacedRange&&i.push({range:t.replacedRange.toRange(t.lineNumber),options:{inlineClassName:"inline-completion-text-to-replace",description:"GhostTextReplacement"}}),t.hiddenRange&&i.push({range:t.hiddenRange.toRange(t.lineNumber),options:{inlineClassName:"ghost-text-hidden",description:"ghost-text-hidden"}});for(const o of t.inlineTexts)i.push({range:He.e.fromPositions(new We.L(t.lineNumber,o.column)),options:{description:np,after:{content:o.text,inlineClassName:o.preview?"ghost-text-decoration-preview":"ghost-text-decoration",cursorStops:Ve.RM.Left},showIfCollapsed:!0}});return i})),this.additionalLinesWidget=this._register(new rp(this.editor,this.languageService.languageIdCodec,(0,dd.nK)((e=>{const t=this.uiState.read(e);return t?{lineNumber:t.lineNumber,additionalLines:t.additionalLines,minReservedLineCount:t.additionalReservedLineCount,targetTextModel:t.targetTextModel}:void 0})))),this._register((0,Fe.OF)((()=>{this.isDisposed.set(!0,void 0)}))),this._register(ep(this.editor,this.decorations))}ownsViewZone(e){return this.additionalLinesWidget.viewZoneId===e}};sp=ip([op(2,Us.O)],sp);class rp extends Fe.JT{get viewZoneId(){return this._viewZoneId}constructor(e,t,i){super(),this.editor=e,this.languageIdCodec=t,this.lines=i,this._viewZoneId=void 0,this.editorOptionsChanged=(0,dd.aq)("editorOptionChanged",ui.ju.filter(this.editor.onDidChangeConfiguration,(e=>e.hasChanged(33)||e.hasChanged(117)||e.hasChanged(99)||e.hasChanged(94)||e.hasChanged(51)||e.hasChanged(50)||e.hasChanged(67)))),this._register((0,dd.EH)((e=>{const t=this.lines.read(e);this.editorOptionsChanged.read(e),t?this.updateLines(t.lineNumber,t.additionalLines,t.minReservedLineCount):this.clear()})))}dispose(){super.dispose(),this.clear()}clear(){this.editor.changeViewZones((e=>{this._viewZoneId&&(e.removeZone(this._viewZoneId),this._viewZoneId=void 0)}))}updateLines(e,t,i){const o=this.editor.getModel();if(!o)return;const{tabSize:n}=o.getOptions();this.editor.changeViewZones((o=>{this._viewZoneId&&(o.removeZone(this._viewZoneId),this._viewZoneId=void 0);const s=Math.max(t.length,i);if(s>0){const i=document.createElement("div");!function(e,t,i,o,n){const s=o.get(33),r=o.get(117),a="none",l=o.get(94),d=o.get(51),c=o.get(50),h=o.get(67),u=new zg.HT(1e4);u.appendString('<div class="suggest-preview-text">');for(let m=0,_=i.length;m<_;m++){const e=i[m],o=e.content;u.appendString('<div class="view-line'),u.appendString('" style="top:'),u.appendString(String(m*h)),u.appendString('px;width:1000000px;">');const g=ii.$i(o),p=ii.Ut(o),_=Ug.A.createEmpty(o,n);(0,jg.d1)(new jg.IJ(c.isMonospace&&!s,c.canUseHalfwidthRightwardsArrow,o,!1,g,p,0,_,e.decorations,t,0,c.spaceWidth,c.middotWidth,c.wsmiddotWidth,r,a,l,d!==sn.n0.OFF,null),u),u.appendString("</div>")}u.appendString("</div>"),(0,Bg.N)(e,c);const g=u.build(),p=ap?ap.createHTML(g):g;e.innerHTML=p}(i,n,t,this.editor.getOptions(),this.languageIdCodec),this._viewZoneId=o.addZone({afterLineNumber:e,heightInLines:s,domNode:i,afterColumnAffinity:1})}}))}}const ap=(0,Vg.Z)("editorGhostText",{createHTML:e=>e});var lp=i(39880),dp=i(43328),cp=i(59321),hp=i(3596),up=i(36779),gp=i(85421);class pp{constructor(e){this.lines=e,this.tokenization={getLineTokens:e=>this.lines[e-1]}}getLineCount(){return this.lines.length}getLineLength(e){return this.lines[e-1].getLineContent().length}}async function mp(e,t,i,o){let n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:Yi.T.None,s=arguments.length>5?arguments[5]:void 0;const r=function(e,t){const i=t.getWordAtPosition(e),o=t.getLineMaxColumn(e.lineNumber);return i?new He.e(e.lineNumber,i.startColumn,e.lineNumber,o):He.e.fromPositions(e,e.with(void 0,o))}(t,i),a=e.all(i),l=new Pn.ri;for(const f of a)f.groupId&&l.add(f.groupId,f);function d(e){if(!e.yieldsToGroupIds)return[];const t=[];for(const i of e.yieldsToGroupIds||[]){const e=l.get(i);for(const i of e)t.push(i)}return t}const c=new Map,h=new Set;function u(e,t){if(t=[...t,e],h.has(e))return t;h.add(e);try{const i=d(e);for(const e of i){const i=u(e,t);if(i)return i}}finally{h.delete(e)}}function g(e){const s=c.get(e);if(s)return s;const r=u(e,[]);r&&(0,Ji.Cp)(new Error("Inline completions: cyclic yield-to dependency detected. Path: ".concat(r.map((e=>e.toString?e.toString():""+e)).join(" -> "))));const a=new Oe.CR;return c.set(e,a.p),(async()=>{if(!r){const t=d(e);for(const e of t){const t=await g(e);if(t&&t.items.length>0)return}}try{return await e.provideInlineCompletions(i,t,o,n)}catch(s){return void(0,Ji.Cp)(s)}})().then((e=>a.complete(e)),(e=>a.error(e))),a.p}const p=await Promise.all(a.map((async e=>({provider:e,completions:await g(e)})))),m=new Map,_=[];for(const f of p){const e=f.completions;if(!e)continue;const t=new fp(e,f.provider);_.push(t);for(const o of e.items){const e=vp.from(o,t,r,i,s);m.set(e.hash(),e)}}return new _p(Array.from(m.values()),new Set(m.keys()),_)}class _p{constructor(e,t,i){this.completions=e,this.hashs=t,this.providerResults=i}has(e){return this.hashs.has(e.hash())}dispose(){for(const e of this.providerResults)e.removeRef()}}class fp{constructor(e,t){this.inlineCompletions=e,this.provider=t,this.refCount=1}addRef(){this.refCount++}removeRef(){this.refCount--,0===this.refCount&&this.provider.freeInlineCompletions(this.inlineCompletions)}}class vp{static from(e,t,i,o,n){let s,r,a=e.range?He.e.lift(e.range):i;if("string"===typeof e.insertText){if(s=e.insertText,n&&e.completeBracketPairs){s=bp(s,a.getStartPosition(),o,n);const t=s.length-e.insertText.length;0!==t&&(a=new He.e(a.startLineNumber,a.startColumn,a.endLineNumber,a.endColumn+t))}r=void 0}else if("snippet"in e.insertText){const t=e.insertText.snippet.length;if(n&&e.completeBracketPairs){e.insertText.snippet=bp(e.insertText.snippet,a.getStartPosition(),o,n);const i=e.insertText.snippet.length-t;0!==i&&(a=new He.e(a.startLineNumber,a.startColumn,a.endLineNumber,a.endColumn+i))}const i=(new $t).parse(e.insertText.snippet);1===i.children.length&&i.children[0]instanceof Ut?(s=i.children[0].value,r=void 0):(s=i.toString(),r={snippet:e.insertText.snippet,range:a})}else(0,lp.vE)(e.insertText);return new vp(s,e.command,a,s,r,e.additionalTextEdits||$g,e,t)}constructor(e,t,i,o,n,s,r,a){this.filterText=e,this.command=t,this.range=i,this.insertText=o,this.snippetInfo=n,this.additionalTextEdits=s,this.sourceInlineCompletion=r,this.source=a,o=(e=e.replace(/\r\n|\r/g,"\n")).replace(/\r\n|\r/g,"\n")}withRange(e){return new vp(this.filterText,this.command,e,this.insertText,this.snippetInfo,this.additionalTextEdits,this.sourceInlineCompletion,this.source)}hash(){return JSON.stringify({insertText:this.insertText,range:this.range.toString()})}}function bp(e,t,i,o){const n=i.getLineContent(t.lineNumber).substring(0,t.column-1)+e,s=i.tokenization.tokenizeLineWithEdit(t,n.length-(t.column-1),e),r=null===s||void 0===s?void 0:s.sliceAndInflate(t.column-1,n.length,0);if(!r)return e;const a=function(e,t){const i=new up.FE,o=new dp.Z(i,(e=>t.getLanguageConfiguration(e))),n=new gp.xH(new pp([e]),o),s=(0,hp.w)(n,[],void 0,!0);let r="";const a=e.getLineContent();return function e(t,i){if(2===t.kind)if(e(t.openingBracket,i),i=(0,cp.Ii)(i,t.openingBracket.length),t.child&&(e(t.child,i),i=(0,cp.Ii)(i,t.child.length)),t.closingBracket)e(t.closingBracket,i),i=(0,cp.Ii)(i,t.closingBracket.length);else{const e=o.getSingleLanguageBracketTokens(t.openingBracket.languageId).findClosingTokenText(t.openingBracket.bracketIds);r+=e}else if(3===t.kind);else if(0===t.kind||1===t.kind)r+=a.substring((0,cp.F_)(i),(0,cp.F_)((0,cp.Ii)(i,t.length)));else if(4===t.kind)for(const o of t.children)e(o,i),i=(0,cp.Ii)(i,o.length)}(s,cp.xl),r}(r,o);return a}var Cp=i(24323),Sp=i(59122);function yp(e,t,i){const o=i?e.range.intersectRanges(i):e.range;if(!o)return e;const n=t.getValueInRange(o,1),s=(0,ii.Mh)(n,e.text),r=Sp.A.ofText(n.substring(0,s)).addToPosition(e.range.getStartPosition()),a=e.text.substring(s),l=He.e.fromPositions(r,e.range.getEndPosition());return new qg.At(l,a)}function wp(e,t){return e.text.startsWith(t.text)&&(i=e.range,(o=t.range).getStartPosition().equals(i.getStartPosition())&&o.getEndPosition().isBeforeOrEqual(i.getEndPosition()));var i,o}function xp(e,t,i,o){let n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=yp(e,t);if(s.range.endLineNumber!==s.range.startLineNumber)return;const r=t.getLineContent(s.range.startLineNumber),a=(0,ii.V8)(r).length;if(s.range.startColumn-1<=a){const e=(0,ii.V8)(s.text).length,t=r.substring(s.range.startColumn-1,a),[i,o]=[s.range.getStartPosition(),s.range.getEndPosition()],n=i.column+t.length<=o.column?i.delta(0,t.length):o,l=He.e.fromPositions(n,o),d=s.text.startsWith(t)?s.text.substring(t.length):s.text.substring(e);s=new qg.At(l,d)}const l=t.getValueInRange(s.range),d=function(e,t){if((null===Np||void 0===Np?void 0:Np.originalValue)===e&&(null===Np||void 0===Np?void 0:Np.newValue)===t)return null===Np||void 0===Np?void 0:Np.changes;{let i=kp(e,t,!0);if(i){const o=Lp(i);if(o>0){const n=kp(e,t,!1);n&&Lp(n)<o&&(i=n)}}return Np={originalValue:e,newValue:t,changes:i},i}}(l,s.text);if(!d)return;const c=s.range.startLineNumber,h=new Array;if("prefix"===i){const e=d.filter((e=>0===e.originalLength));if(e.length>1||1===e.length&&e[0].originalStart!==l.length)return}const u=s.text.length-n;for(const g of d){const e=s.range.startColumn+g.originalStart+g.originalLength;if("subwordSmart"===i&&o&&o.lineNumber===s.range.startLineNumber&&e<o.column)return;if(g.originalLength>0)return;if(0===g.modifiedLength)continue;const t=g.modifiedStart+g.modifiedLength,n=Math.max(g.modifiedStart,Math.min(t,u)),r=s.text.substring(g.modifiedStart,n),a=s.text.substring(n,Math.max(g.modifiedStart,t));r.length>0&&h.push(new Qg(e,r,!1)),a.length>0&&h.push(new Qg(e,a,!0))}return new Gg(c,h)}let Np;function Lp(e){let t=0;for(const i of e)t+=i.originalLength;return t}function kp(e,t,i){if(e.length>5e3||t.length>5e3)return;function o(e){let t=0;for(let i=0,o=e.length;i<o;i++){const o=e.charCodeAt(i);o>t&&(t=o)}return t}const n=Math.max(o(e),o(t));function s(e){if(e<0)throw new Error("unexpected");return n+e+1}function r(e){let t=0,o=0;const n=new Int32Array(e.length);for(let r=0,a=e.length;r<a;r++)if(i&&"("===e[r]){const e=100*o+t;n[r]=s(2*e),t++}else if(i&&")"===e[r]){t=Math.max(t-1,0);const e=100*o+t;n[r]=s(2*e+1),0===t&&o++}else n[r]=e.charCodeAt(r);return n}const a=r(e),l=r(t);return new Cp.Hs({getElements:()=>a},{getElements:()=>l}).ComputeDiff(!1).changes}var Dp=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Ip=function(e,t){return function(i,o){t(i,o,e)}};let Rp=class extends Fe.JT{constructor(e,t,i,o,n){super(),this.textModel=e,this.versionId=t,this._debounceValue=i,this.languageFeaturesService=o,this.languageConfigurationService=n,this._updateOperation=this._register(new Fe.XK),this.inlineCompletions=(0,dd.DN)("inlineCompletions",void 0),this.suggestWidgetInlineCompletions=(0,dd.DN)("suggestWidgetInlineCompletions",void 0),this._register(this.textModel.onDidChangeContent((()=>{this._updateOperation.clear()})))}fetch(e,t,i){var o,n;const s=new Pp(e,t,this.textModel.getVersionId()),r=t.selectedSuggestionInfo?this.suggestWidgetInlineCompletions:this.inlineCompletions;if(null===(o=this._updateOperation.value)||void 0===o?void 0:o.request.satisfies(s))return this._updateOperation.value.promise;if(null===(n=r.get())||void 0===n?void 0:n.request.satisfies(s))return Promise.resolve(!0);const a=!!this._updateOperation.value;this._updateOperation.clear();const l=new Yi.A,d=(async()=>{var o,n;if((a||t.triggerKind===Lt.bw.Automatic)&&await(o=this._debounceValue.get(this.textModel),n=l.token,new Promise((e=>{let t;const i=setTimeout((()=>{t&&t.dispose(),e()}),o);n&&(t=n.onCancellationRequested((()=>{clearTimeout(i),t&&t.dispose(),e()})))}))),l.token.isCancellationRequested||this.textModel.getVersionId()!==s.versionId)return!1;const d=new Date,c=await mp(this.languageFeaturesService.inlineCompletionsProvider,e,this.textModel,t,l.token,this.languageConfigurationService);if(l.token.isCancellationRequested||this.textModel.getVersionId()!==s.versionId)return!1;const h=new Date;this._debounceValue.update(this.textModel,h.getTime()-d.getTime());const u=new Tp(c,s,this.textModel,this.versionId);if(i){const t=i.toInlineCompletion(void 0);i.canBeReused(this.textModel,e)&&!c.has(t)&&u.prepend(i.inlineCompletion,t.range,!0)}return this._updateOperation.clear(),(0,dd.PS)((e=>{r.set(u,e)})),!0})(),c=new Mp(s,l,d);return this._updateOperation.value=c,d}clear(e){this._updateOperation.clear(),this.inlineCompletions.set(void 0,e),this.suggestWidgetInlineCompletions.set(void 0,e)}clearSuggestWidgetInlineCompletions(e){var t;(null===(t=this._updateOperation.value)||void 0===t?void 0:t.request.context.selectedSuggestionInfo)&&this._updateOperation.clear(),this.suggestWidgetInlineCompletions.set(void 0,e)}cancelUpdate(){this._updateOperation.clear()}};Rp=Dp([Ip(3,kt.p),Ip(4,Xn.c_)],Rp);class Pp{constructor(e,t,i){this.position=e,this.context=t,this.versionId=i}satisfies(e){return this.position.equals(e.position)&&function(e,t,i){if(!e||!t)return e===t;return i(e,t)}(this.context.selectedSuggestionInfo,e.context.selectedSuggestionInfo,((e,t)=>e.equals(t)))&&(e.context.triggerKind===Lt.bw.Automatic||this.context.triggerKind===Lt.bw.Explicit)&&this.versionId===e.versionId}}class Mp{constructor(e,t,i){this.request=e,this.cancellationTokenSource=t,this.promise=i}dispose(){this.cancellationTokenSource.cancel()}}class Tp{get inlineCompletions(){return this._inlineCompletions}constructor(e,t,i,o){this.inlineCompletionProviderResult=e,this.request=t,this.textModel=i,this.versionId=o,this._refCount=1,this._prependedInlineCompletionItems=[],this._rangeVersionIdValue=0,this._rangeVersionId=(0,dd.nK)(this,(e=>{this.versionId.read(e);let t=!1;for(const i of this._inlineCompletions)t=t||i._updateRange(this.textModel);return t&&this._rangeVersionIdValue++,this._rangeVersionIdValue}));const n=i.deltaDecorations([],e.completions.map((e=>({range:e.range,options:{description:"inline-completion-tracking-range"}}))));this._inlineCompletions=e.completions.map(((e,t)=>new Ep(e,n[t],this._rangeVersionId)))}clone(){return this._refCount++,this}dispose(){if(this._refCount--,0===this._refCount){setTimeout((()=>{this.textModel.isDisposed()||this.textModel.deltaDecorations(this._inlineCompletions.map((e=>e.decorationId)),[])}),0),this.inlineCompletionProviderResult.dispose();for(const e of this._prependedInlineCompletionItems)e.source.removeRef()}}prepend(e,t,i){i&&e.source.addRef();const o=this.textModel.deltaDecorations([],[{range:t,options:{description:"inline-completion-tracking-range"}}])[0];this._inlineCompletions.unshift(new Ep(e,o,this._rangeVersionId,t)),this._prependedInlineCompletionItems.push(e)}}class Ep{get forwardStable(){var e;return null!==(e=this.inlineCompletion.source.inlineCompletions.enableForwardStability)&&void 0!==e&&e}constructor(e,t,i,o){this.inlineCompletion=e,this.decorationId=t,this.rangeVersion=i,this.semanticId=JSON.stringify([this.inlineCompletion.filterText,this.inlineCompletion.insertText,this.inlineCompletion.range.getStartPosition().toString()]),this._isValid=!0,this._updatedRange=null!==o&&void 0!==o?o:e.range}toInlineCompletion(e){return this.inlineCompletion.withRange(this._getUpdatedRange(e))}toSingleTextEdit(e){return new qg.At(this._getUpdatedRange(e),this.inlineCompletion.insertText)}isVisible(e,t,i){const o=yp(this._toFilterTextReplacement(i),e);if(!this._isValid||!this.inlineCompletion.range.getStartPosition().equals(this._getUpdatedRange(i).getStartPosition())||t.lineNumber!==o.range.startLineNumber)return!1;const n=e.getValueInRange(o.range,1),s=o.text,r=Math.max(0,t.column-o.range.startColumn);let a=s.substring(0,r),l=s.substring(r),d=n.substring(0,r),c=n.substring(r);const h=e.getLineIndentColumn(o.range.startLineNumber);return o.range.startColumn<=h&&(d=d.trimStart(),0===d.length&&(c=c.trimStart()),a=a.trimStart(),0===a.length&&(l=l.trimStart())),a.startsWith(d)&&!!(0,Fr.Sy)(c,l)}canBeReused(e,t){return this._isValid&&this._getUpdatedRange(void 0).containsPosition(t)&&this.isVisible(e,t,void 0)&&!this._isSmallerThanOriginal(void 0)}_toFilterTextReplacement(e){return new qg.At(this._getUpdatedRange(e),this.inlineCompletion.filterText)}_isSmallerThanOriginal(e){return Ap(this._getUpdatedRange(e)).isBefore(Ap(this.inlineCompletion.range))}_getUpdatedRange(e){return this.rangeVersion.read(e),this._updatedRange}_updateRange(e){const t=e.getDecorationRange(this.decorationId);return t?!this._updatedRange.equalsRange(t)&&(this._updatedRange=t,!0):(this._isValid=!1,!0)}}function Ap(e){return e.startLineNumber===e.endLineNumber?new We.L(1,1+e.endColumn-e.startColumn):new We.L(1+e.endLineNumber-e.startLineNumber,e.endColumn)}const Op={Visible:Nh,HasFocusedSuggestion:new ae.uy("suggestWidgetHasFocusedSuggestion",!1,(0,ne.NC)("suggestWidgetHasSelection","Whether any suggestion is focused")),DetailsVisible:new ae.uy("suggestWidgetDetailsVisible",!1,(0,ne.NC)("suggestWidgetDetailsVisible","Whether suggestion details are visible")),MultipleSuggestions:new ae.uy("suggestWidgetMultipleSuggestions",!1,(0,ne.NC)("suggestWidgetMultipleSuggestions","Whether there are multiple suggestions to pick from")),MakesTextEdit:new ae.uy("suggestionMakesTextEdit",!0,(0,ne.NC)("suggestionMakesTextEdit","Whether inserting the current suggestion yields in a change or has everything already been typed")),AcceptSuggestionsOnEnter:new ae.uy("acceptSuggestionOnEnter",!0,(0,ne.NC)("acceptSuggestionOnEnter","Whether suggestions are inserted when pressing Enter")),HasInsertAndReplaceRange:new ae.uy("suggestionHasInsertAndReplaceRange",!1,(0,ne.NC)("suggestionHasInsertAndReplaceRange","Whether the current suggestion has insert and replace behaviour")),InsertMode:new ae.uy("suggestionInsertMode",void 0,{type:"string",description:(0,ne.NC)("suggestionInsertMode","Whether the default behaviour is to insert or replace")}),CanResolve:new ae.uy("suggestionCanResolve",!1,(0,ne.NC)("suggestionCanResolve","Whether the current suggestion supports to resolve further details"))},Fp=new se.eH("suggestWidgetStatusBar");class Wp{constructor(e,t,i,o){var n;this.position=e,this.completion=t,this.container=i,this.provider=o,this.isInvalid=!1,this.score=Fr.CL.Default,this.distance=0,this.textLabel="string"===typeof t.label?t.label:null===(n=t.label)||void 0===n?void 0:n.label,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=t.sortText&&t.sortText.toLowerCase(),this.filterTextLow=t.filterText&&t.filterText.toLowerCase(),this.extensionId=t.extensionId,He.e.isIRange(t.range)?(this.editStart=new We.L(t.range.startLineNumber,t.range.startColumn),this.editInsertEnd=new We.L(t.range.endLineNumber,t.range.endColumn),this.editReplaceEnd=new We.L(t.range.endLineNumber,t.range.endColumn),this.isInvalid=this.isInvalid||He.e.spansMultipleLines(t.range)||t.range.startLineNumber!==e.lineNumber):(this.editStart=new We.L(t.range.insert.startLineNumber,t.range.insert.startColumn),this.editInsertEnd=new We.L(t.range.insert.endLineNumber,t.range.insert.endColumn),this.editReplaceEnd=new We.L(t.range.replace.endLineNumber,t.range.replace.endColumn),this.isInvalid=this.isInvalid||He.e.spansMultipleLines(t.range.insert)||He.e.spansMultipleLines(t.range.replace)||t.range.insert.startLineNumber!==e.lineNumber||t.range.replace.startLineNumber!==e.lineNumber||t.range.insert.startColumn!==t.range.replace.startColumn),"function"!==typeof o.resolveCompletionItem&&(this._resolveCache=Promise.resolve(),this._resolveDuration=0)}get isResolved(){return void 0!==this._resolveDuration}get resolveDuration(){return void 0!==this._resolveDuration?this._resolveDuration:-1}async resolve(e){if(!this._resolveCache){const t=e.onCancellationRequested((()=>{this._resolveCache=void 0,this._resolveDuration=void 0})),i=new Yn.G(!0);this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,e)).then((e=>{Object.assign(this.completion,e),this._resolveDuration=i.elapsed()}),(e=>{(0,Ji.n2)(e)&&(this._resolveCache=void 0,this._resolveDuration=void 0)})).finally((()=>{t.dispose()}))}return this._resolveCache}}class Hp{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Set,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new Map,n=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.snippetSortOrder=e,this.kindFilter=t,this.providerFilter=i,this.providerItemsToReuse=o,this.showDeprecated=n}}let Vp;Hp.default=new Hp;class Bp{constructor(e,t,i,o){this.items=e,this.needsClipboard=t,this.durations=i,this.disposable=o}}async function zp(e,t,i){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Hp.default,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{triggerKind:0},s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:Yi.T.None;const r=new Yn.G;i=i.clone();const a=t.getWordAtPosition(i),l=a?new He.e(i.lineNumber,a.startColumn,i.lineNumber,a.endColumn):He.e.fromPositions(i),d={replace:l,insert:l.setEndPosition(i.lineNumber,i.column)},c=[],h=new Fe.SL,u=[];let g=!1;const p=(e,t,n)=>{var s,r,a;let l=!1;if(!t)return l;for(const h of t.suggestions)if(!o.kindFilter.has(h.kind)){if(!o.showDeprecated&&(null===(s=null===h||void 0===h?void 0:h.tags)||void 0===s?void 0:s.includes(1)))continue;h.range||(h.range=d),h.sortText||(h.sortText="string"===typeof h.label?h.label:h.label.label),!g&&h.insertTextRules&&4&h.insertTextRules&&(g=$t.guessNeedsClipboard(h.insertText)),c.push(new Wp(i,h,t,e)),l=!0}return(0,Fe.Wf)(t)&&h.add(t),u.push({providerName:null!==(r=e._debugDisplayName)&&void 0!==r?r:"unknown_provider",elapsedProvider:null!==(a=t.duration)&&void 0!==a?a:-1,elapsedOverall:n.elapsed()}),l},m=(async()=>{if(!Vp||o.kindFilter.has(27))return;const e=o.providerItemsToReuse.get(Vp);if(e)return void e.forEach((e=>c.push(e)));if(o.providerFilter.size>0&&!o.providerFilter.has(Vp))return;const r=new Yn.G,a=await Vp.provideCompletionItems(t,i,n,s);p(Vp,a,r)})();for(const f of e.orderedGroups(t)){let e=!1;if(await Promise.all(f.map((async r=>{if(o.providerItemsToReuse.has(r)){const t=o.providerItemsToReuse.get(r);return t.forEach((e=>c.push(e))),void(e=e||t.length>0)}if(!(o.providerFilter.size>0)||o.providerFilter.has(r))try{const o=new Yn.G,a=await r.provideCompletionItems(t,i,n,s);e=p(r,a,o)||e}catch(a){(0,Ji.Cp)(a)}}))),e||s.isCancellationRequested)break}return await m,s.isCancellationRequested?(h.dispose(),Promise.reject(new Ji.FU)):new Bp(c.sort((_=o.snippetSortOrder,Kp.get(_))),g,{entries:u,elapsed:r.elapsed()},h);var _}function Up(e,t){if(e.sortTextLow&&t.sortTextLow){if(e.sortTextLow<t.sortTextLow)return-1;if(e.sortTextLow>t.sortTextLow)return 1}return e.textLabel<t.textLabel?-1:e.textLabel>t.textLabel?1:e.completion.kind-t.completion.kind}const Kp=new Map;Kp.set(0,(function(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return-1;if(27===t.completion.kind)return 1}return Up(e,t)})),Kp.set(2,(function(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return 1;if(27===t.completion.kind)return-1}return Up(e,t)})),Kp.set(1,Up),ye.P.registerCommand("_executeCompletionItemProvider",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n,s,r,a]=i;(0,Dn.p_)(_t.o.isUri(n)),(0,Dn.p_)(We.L.isIPosition(s)),(0,Dn.p_)("string"===typeof r||!r),(0,Dn.p_)("number"===typeof a||!a);const{completionProvider:l}=e.get(kt.p),d=await e.get(Ks.S).createModelReference(n);try{const e={incomplete:!1,suggestions:[]},t=[],i=d.object.textEditorModel.validatePosition(s),o=await zp(l,d.object.textEditorModel,i,void 0,{triggerCharacter:null!==r&&void 0!==r?r:void 0,triggerKind:r?1:0});for(const n of o.items)t.length<(null!==a&&void 0!==a?a:0)&&t.push(n.resolve(Yi.T.None)),e.incomplete=e.incomplete||n.container.incomplete,e.suggestions.push(n.completion);try{return await Promise.all(t),e}finally{setTimeout((()=>o.disposable.dispose()),100)}}finally{d.dispose()}}));class jp{static isAllOff(e){return"off"===e.other&&"off"===e.comments&&"off"===e.strings}static isAllOn(e){return"on"===e.other&&"on"===e.comments&&"on"===e.strings}static valueFor(e,t){switch(t){case 1:return e.comments;case 2:return e.strings;default:return e.other}}}var qp=i(83717),Gp=i(9861);function Qp(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:it.ED;return(0,Gp.oP)(e,t)?e.charAt(0).toUpperCase()+e.slice(1):e}Object.create(null);var Zp=i(51169),Yp=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Jp=function(e,t){return function(i,o){t(i,o,e)}};Object.freeze({CURRENT_YEAR:!0,CURRENT_YEAR_SHORT:!0,CURRENT_MONTH:!0,CURRENT_DATE:!0,CURRENT_HOUR:!0,CURRENT_MINUTE:!0,CURRENT_SECOND:!0,CURRENT_DAY_NAME:!0,CURRENT_DAY_NAME_SHORT:!0,CURRENT_MONTH_NAME:!0,CURRENT_MONTH_NAME_SHORT:!0,CURRENT_SECONDS_UNIX:!0,CURRENT_TIMEZONE_OFFSET:!0,SELECTION:!0,CLIPBOARD:!0,TM_SELECTED_TEXT:!0,TM_CURRENT_LINE:!0,TM_CURRENT_WORD:!0,TM_LINE_INDEX:!0,TM_LINE_NUMBER:!0,TM_FILENAME:!0,TM_FILENAME_BASE:!0,TM_DIRECTORY:!0,TM_FILEPATH:!0,CURSOR_INDEX:!0,CURSOR_NUMBER:!0,RELATIVE_FILEPATH:!0,BLOCK_COMMENT_START:!0,BLOCK_COMMENT_END:!0,LINE_COMMENT:!0,WORKSPACE_NAME:!0,WORKSPACE_FOLDER:!0,RANDOM:!0,RANDOM_HEX:!0,UUID:!0});class $p{constructor(e){this._delegates=e}resolve(e){for(const t of this._delegates){const i=t.resolve(e);if(void 0!==i)return i}}}class Xp{constructor(e,t,i,o){this._model=e,this._selection=t,this._selectionIdx=i,this._overtypingCapturer=o}resolve(e){const{name:t}=e;if("SELECTION"===t||"TM_SELECTED_TEXT"===t){let t=this._model.getValueInRange(this._selection)||void 0,i=this._selection.startLineNumber!==this._selection.endLineNumber;if(!t&&this._overtypingCapturer){const e=this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);e&&(t=e.value,i=e.multiline)}if(t&&i&&e.snippet){const i=this._model.getLineContent(this._selection.startLineNumber),o=(0,ii.V8)(i,0,this._selection.startColumn-1);let n=o;e.snippet.walk((t=>t!==e&&(t instanceof Ut&&(n=(0,ii.V8)((0,ii.uq)(t.value).pop())),!0)));const s=(0,ii.Mh)(n,o);t=t.replace(/(\r\n|\r|\n)(.*)/g,((e,t,i)=>"".concat(t).concat(n.substr(s)).concat(i)))}return t}if("TM_CURRENT_LINE"===t)return this._model.getLineContent(this._selection.positionLineNumber);if("TM_CURRENT_WORD"===t){const e=this._model.getWordAtPosition({lineNumber:this._selection.positionLineNumber,column:this._selection.positionColumn});return e&&e.word||void 0}return"TM_LINE_INDEX"===t?String(this._selection.positionLineNumber-1):"TM_LINE_NUMBER"===t?String(this._selection.positionLineNumber):"CURSOR_INDEX"===t?String(this._selectionIdx):"CURSOR_NUMBER"===t?String(this._selectionIdx+1):void 0}}class em{constructor(e,t){this._labelService=e,this._model=t}resolve(e){const{name:t}=e;if("TM_FILENAME"===t)return Zp.EZ(this._model.uri.fsPath);if("TM_FILENAME_BASE"===t){const e=Zp.EZ(this._model.uri.fsPath),t=e.lastIndexOf(".");return t<=0?e:e.slice(0,t)}return"TM_DIRECTORY"===t?"."===Zp.XX(this._model.uri.fsPath)?"":this._labelService.getUriLabel((0,It.XX)(this._model.uri)):"TM_FILEPATH"===t?this._labelService.getUriLabel(this._model.uri):"RELATIVE_FILEPATH"===t?this._labelService.getUriLabel(this._model.uri,{relative:!0,noPrefix:!0}):void 0}}class tm{constructor(e,t,i,o){this._readClipboardText=e,this._selectionIdx=t,this._selectionCount=i,this._spread=o}resolve(e){if("CLIPBOARD"!==e.name)return;const t=this._readClipboardText();if(t){if(this._spread){const e=t.split(/\r\n|\n|\r/).filter((e=>!(0,ii.m5)(e)));if(e.length===this._selectionCount)return e[this._selectionIdx]}return t}}}let im=class{constructor(e,t,i){this._model=e,this._selection=t,this._languageConfigurationService=i}resolve(e){const{name:t}=e,i=this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber,this._selection.selectionStartColumn),o=this._languageConfigurationService.getLanguageConfiguration(i).comments;if(o)return"LINE_COMMENT"===t?o.lineCommentToken||void 0:"BLOCK_COMMENT_START"===t?o.blockCommentStartToken||void 0:"BLOCK_COMMENT_END"===t&&o.blockCommentEndToken||void 0}};im=Yp([Jp(2,Xn.c_)],im);class om{constructor(){this._date=new Date}resolve(e){const{name:t}=e;if("CURRENT_YEAR"===t)return String(this._date.getFullYear());if("CURRENT_YEAR_SHORT"===t)return String(this._date.getFullYear()).slice(-2);if("CURRENT_MONTH"===t)return String(this._date.getMonth().valueOf()+1).padStart(2,"0");if("CURRENT_DATE"===t)return String(this._date.getDate().valueOf()).padStart(2,"0");if("CURRENT_HOUR"===t)return String(this._date.getHours().valueOf()).padStart(2,"0");if("CURRENT_MINUTE"===t)return String(this._date.getMinutes().valueOf()).padStart(2,"0");if("CURRENT_SECOND"===t)return String(this._date.getSeconds().valueOf()).padStart(2,"0");if("CURRENT_DAY_NAME"===t)return om.dayNames[this._date.getDay()];if("CURRENT_DAY_NAME_SHORT"===t)return om.dayNamesShort[this._date.getDay()];if("CURRENT_MONTH_NAME"===t)return om.monthNames[this._date.getMonth()];if("CURRENT_MONTH_NAME_SHORT"===t)return om.monthNamesShort[this._date.getMonth()];if("CURRENT_SECONDS_UNIX"===t)return String(Math.floor(this._date.getTime()/1e3));if("CURRENT_TIMEZONE_OFFSET"===t){const e=this._date.getTimezoneOffset(),t=e>0?"-":"+",i=Math.trunc(Math.abs(e/60)),o=i<10?"0"+i:i,n=Math.abs(e)-60*i;return t+o+":"+(n<10?"0"+n:n)}}}om.dayNames=[ne.NC("Sunday","Sunday"),ne.NC("Monday","Monday"),ne.NC("Tuesday","Tuesday"),ne.NC("Wednesday","Wednesday"),ne.NC("Thursday","Thursday"),ne.NC("Friday","Friday"),ne.NC("Saturday","Saturday")],om.dayNamesShort=[ne.NC("SundayShort","Sun"),ne.NC("MondayShort","Mon"),ne.NC("TuesdayShort","Tue"),ne.NC("WednesdayShort","Wed"),ne.NC("ThursdayShort","Thu"),ne.NC("FridayShort","Fri"),ne.NC("SaturdayShort","Sat")],om.monthNames=[ne.NC("January","January"),ne.NC("February","February"),ne.NC("March","March"),ne.NC("April","April"),ne.NC("May","May"),ne.NC("June","June"),ne.NC("July","July"),ne.NC("August","August"),ne.NC("September","September"),ne.NC("October","October"),ne.NC("November","November"),ne.NC("December","December")],om.monthNamesShort=[ne.NC("JanuaryShort","Jan"),ne.NC("FebruaryShort","Feb"),ne.NC("MarchShort","Mar"),ne.NC("AprilShort","Apr"),ne.NC("MayShort","May"),ne.NC("JuneShort","Jun"),ne.NC("JulyShort","Jul"),ne.NC("AugustShort","Aug"),ne.NC("SeptemberShort","Sep"),ne.NC("OctoberShort","Oct"),ne.NC("NovemberShort","Nov"),ne.NC("DecemberShort","Dec")];class nm{constructor(e){this._workspaceService=e}resolve(e){if(!this._workspaceService)return;const t=(0,Rt.uT)(this._workspaceService.getWorkspace());return(0,Rt.c$)(t)?void 0:"WORKSPACE_NAME"===e.name?this._resolveWorkspaceName(t):"WORKSPACE_FOLDER"===e.name?this._resoveWorkspacePath(t):void 0}_resolveWorkspaceName(e){if((0,Rt.eb)(e))return Zp.EZ(e.uri.path);let t=Zp.EZ(e.configPath.path);return t.endsWith(Rt.A6)&&(t=t.substr(0,t.length-Rt.A6.length-1)),t}_resoveWorkspacePath(e){if((0,Rt.eb)(e))return Qp(e.uri.fsPath);const t=Zp.EZ(e.configPath.path);let i=e.configPath.fsPath;return i.endsWith(t)&&(i=i.substr(0,i.length-t.length-1)),i?Qp(i):"/"}}class sm{resolve(e){const{name:t}=e;return"RANDOM"===t?Math.random().toString().slice(-6):"RANDOM_HEX"===t?Math.random().toString(16).slice(-6):"UUID"===t?rt():void 0}}var rm,am=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},lm=function(e,t){return function(i,o){t(i,o,e)}};class dm{constructor(e,t,i){this._editor=e,this._snippet=t,this._snippetLineLeadingWhitespace=i,this._offset=-1,this._nestingLevel=1,this._placeholderGroups=(0,nt.vM)(t.placeholders,jt.compareByIndex),this._placeholderGroupsIdx=-1}initialize(e){this._offset=e.newPosition}dispose(){this._placeholderDecorations&&this._editor.removeDecorations([...this._placeholderDecorations.values()]),this._placeholderGroups.length=0}_initDecorations(){if(-1===this._offset)throw new Error("Snippet not initialized!");if(this._placeholderDecorations)return;this._placeholderDecorations=new Map;const e=this._editor.getModel();this._editor.changeDecorations((t=>{for(const i of this._snippet.placeholders){const o=this._snippet.offset(i),n=this._snippet.fullLen(i),s=He.e.fromPositions(e.getPositionAt(this._offset+o),e.getPositionAt(this._offset+o+n)),r=i.isFinalTabstop?dm._decor.inactiveFinal:dm._decor.inactive,a=t.addDecoration(s,r);this._placeholderDecorations.set(i,a)}}))}move(e){if(!this._editor.hasModel())return[];if(this._initDecorations(),this._placeholderGroupsIdx>=0){const e=[];for(const t of this._placeholderGroups[this._placeholderGroupsIdx])if(t.transform){const i=this._placeholderDecorations.get(t),o=this._editor.getModel().getDecorationRange(i),n=this._editor.getModel().getValueInRange(o),s=t.transform.resolve(n).split(/\r\n|\r|\n/);for(let e=1;e<s.length;e++)s[e]=this._editor.getModel().normalizeIndentation(this._snippetLineLeadingWhitespace+s[e]);e.push(Yd.h.replace(o,s.join(this._editor.getModel().getEOL())))}e.length>0&&this._editor.executeEdits("snippet.placeholderTransform",e)}let t=!1;!0===e&&this._placeholderGroupsIdx<this._placeholderGroups.length-1?(this._placeholderGroupsIdx+=1,t=!0):!1===e&&this._placeholderGroupsIdx>0&&(this._placeholderGroupsIdx-=1,t=!0);const i=this._editor.getModel().changeDecorations((e=>{const i=new Set,o=[];for(const n of this._placeholderGroups[this._placeholderGroupsIdx]){const s=this._placeholderDecorations.get(n),r=this._editor.getModel().getDecorationRange(s);o.push(new ke.Y(r.startLineNumber,r.startColumn,r.endLineNumber,r.endColumn)),t=t&&this._hasPlaceholderBeenCollapsed(n),e.changeDecorationOptions(s,n.isFinalTabstop?dm._decor.activeFinal:dm._decor.active),i.add(n);for(const t of this._snippet.enclosingPlaceholders(n)){const o=this._placeholderDecorations.get(t);e.changeDecorationOptions(o,t.isFinalTabstop?dm._decor.activeFinal:dm._decor.active),i.add(t)}}for(const[t,n]of this._placeholderDecorations)i.has(t)||e.changeDecorationOptions(n,t.isFinalTabstop?dm._decor.inactiveFinal:dm._decor.inactive);return o}));return t?this.move(e):null!==i&&void 0!==i?i:[]}_hasPlaceholderBeenCollapsed(e){let t=e;for(;t;){if(t instanceof jt){const e=this._placeholderDecorations.get(t);if(this._editor.getModel().getDecorationRange(e).isEmpty()&&t.toString().length>0)return!0}t=t.parent}return!1}get isAtFirstPlaceholder(){return this._placeholderGroupsIdx<=0||0===this._placeholderGroups.length}get isAtLastPlaceholder(){return this._placeholderGroupsIdx===this._placeholderGroups.length-1}get hasPlaceholder(){return this._snippet.placeholders.length>0}get isTrivialSnippet(){if(0===this._snippet.placeholders.length)return!0;if(1===this._snippet.placeholders.length){const[e]=this._snippet.placeholders;if(e.isFinalTabstop&&this._snippet.rightMostDescendant===e)return!0}return!1}computePossibleSelections(){const e=new Map;for(const t of this._placeholderGroups){let i;for(const o of t){if(o.isFinalTabstop)break;i||(i=[],e.set(o.index,i));const t=this._placeholderDecorations.get(o),n=this._editor.getModel().getDecorationRange(t);if(!n){e.delete(o.index);break}i.push(n)}}return e}get activeChoice(){if(!this._placeholderDecorations)return;const e=this._placeholderGroups[this._placeholderGroupsIdx][0];if(!(null===e||void 0===e?void 0:e.choice))return;const t=this._placeholderDecorations.get(e);if(!t)return;const i=this._editor.getModel().getDecorationRange(t);return i?{range:i,choice:e.choice}:void 0}get hasChoice(){let e=!1;return this._snippet.walk((t=>(e=t instanceof qt,!e))),e}merge(e){const t=this._editor.getModel();this._nestingLevel*=10,this._editor.changeDecorations((i=>{for(const o of this._placeholderGroups[this._placeholderGroupsIdx]){const n=e.shift();console.assert(-1!==n._offset),console.assert(!n._placeholderDecorations);const s=n._snippet.placeholderInfo.last.index;for(const e of n._snippet.placeholderInfo.all)e.isFinalTabstop?e.index=o.index+(s+1)/this._nestingLevel:e.index=o.index+e.index/this._nestingLevel;this._snippet.replace(o,n._snippet.children);const r=this._placeholderDecorations.get(o);i.removeDecoration(r),this._placeholderDecorations.delete(o);for(const e of n._snippet.placeholders){const o=n._snippet.offset(e),s=n._snippet.fullLen(e),r=He.e.fromPositions(t.getPositionAt(n._offset+o),t.getPositionAt(n._offset+o+s)),a=i.addDecoration(r,dm._decor.inactive);this._placeholderDecorations.set(e,a)}}this._placeholderGroups=(0,nt.vM)(this._snippet.placeholders,jt.compareByIndex)}))}}dm._decor={active:Be.qx.register({description:"snippet-placeholder-1",stickiness:0,className:"snippet-placeholder"}),inactive:Be.qx.register({description:"snippet-placeholder-2",stickiness:1,className:"snippet-placeholder"}),activeFinal:Be.qx.register({description:"snippet-placeholder-3",stickiness:1,className:"finish-snippet-placeholder"}),inactiveFinal:Be.qx.register({description:"snippet-placeholder-4",stickiness:1,className:"finish-snippet-placeholder"})};const cm={overwriteBefore:0,overwriteAfter:0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let hm=rm=class{static adjustWhitespace(e,t,i,o,n){const s=e.getLineContent(t.lineNumber),r=(0,ii.V8)(s,0,t.column-1);let a;return o.walk((t=>{if(!(t instanceof Ut)||t.parent instanceof qt)return!0;if(n&&!n.has(t))return!0;const s=t.value.split(/\r\n|\r|\n/);if(i){const i=o.offset(t);if(0===i)s[0]=e.normalizeIndentation(s[0]);else{a=null!==a&&void 0!==a?a:o.toString();const t=a.charCodeAt(i-1);10!==t&&13!==t||(s[0]=e.normalizeIndentation(r+s[0]))}for(let t=1;t<s.length;t++)s[t]=e.normalizeIndentation(r+s[t])}const l=s.join(e.getEOL());return l!==t.value&&(t.parent.replace(t,[new Ut(l)]),a=void 0),!0})),r}static adjustSelection(e,t,i,o){if(0!==i||0!==o){const{positionLineNumber:n,positionColumn:s}=t,r=s-i,a=s+o,l=e.validateRange({startLineNumber:n,startColumn:r,endLineNumber:n,endColumn:a});t=ke.Y.createWithDirection(l.startLineNumber,l.startColumn,l.endLineNumber,l.endColumn,t.getDirection())}return t}static createEditsAndSnippetsFromSelections(e,t,i,o,n,s,r,a,l){const d=[],c=[];if(!e.hasModel())return{edits:d,snippets:c};const h=e.getModel(),u=e.invokeWithinContext((e=>e.get(Rt.ec))),g=e.invokeWithinContext((e=>new em(e.get(Wr.e),h))),p=()=>r,m=h.getValueInRange(rm.adjustSelection(h,e.getSelection(),i,0)),_=h.getValueInRange(rm.adjustSelection(h,e.getSelection(),0,o)),f=h.getLineFirstNonWhitespaceColumn(e.getSelection().positionLineNumber),v=e.getSelections().map(((e,t)=>({selection:e,idx:t}))).sort(((e,t)=>He.e.compareRangesUsingStarts(e.selection,t.selection)));for(const{selection:b,idx:C}of v){let r=rm.adjustSelection(h,b,i,0),S=rm.adjustSelection(h,b,0,o);m!==h.getValueInRange(r)&&(r=b),_!==h.getValueInRange(S)&&(S=b);const y=b.setStartPosition(r.startLineNumber,r.startColumn).setEndPosition(S.endLineNumber,S.endColumn),w=(new $t).parse(t,!0,n),x=y.getStartPosition(),N=rm.adjustWhitespace(h,x,s||C>0&&f!==h.getLineFirstNonWhitespaceColumn(b.positionLineNumber),w);w.resolveVariables(new $p([g,new tm(p,C,v.length,"spread"===e.getOption(79)),new Xp(h,b,C,a),new im(h,b,l),new om,new nm(u),new sm])),d[C]=Yd.h.replace(y,w.toString()),d[C].identifier={major:C,minor:0},d[C]._isTracked=!0,c[C]=new dm(e,w,N)}return{edits:d,snippets:c}}static createEditsAndSnippetsFromEdits(e,t,i,o,n,s,r){if(!e.hasModel()||0===t.length)return{edits:[],snippets:[]};const a=[],l=e.getModel(),d=new $t,c=new Jt,h=new $p([e.invokeWithinContext((e=>new em(e.get(Wr.e),l))),new tm((()=>n),0,e.getSelections().length,"spread"===e.getOption(79)),new Xp(l,e.getSelection(),0,s),new im(l,e.getSelection(),r),new om,new nm(e.invokeWithinContext((e=>e.get(Rt.ec)))),new sm]);t=t.sort(((e,t)=>He.e.compareRangesUsingStarts(e.range,t.range)));let u=0;for(let g=0;g<t.length;g++){const{range:e,template:i}=t[g];if(g>0){const i=t[g-1].range,o=He.e.fromPositions(i.getEndPosition(),e.getStartPosition()),n=new Ut(l.getValueInRange(o));c.appendChild(n),u+=n.value.length}const o=d.parseFragment(i,c);rm.adjustWhitespace(l,e.getStartPosition(),!0,c,new Set(o)),c.resolveVariables(h);const n=c.toString(),s=n.slice(u);u=n.length;const r=Yd.h.replace(e,s);r.identifier={major:g,minor:0},r._isTracked=!0,a.push(r)}return d.ensureFinalTabstop(c,i,!0),{edits:a,snippets:[new dm(e,c,"")]}}constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:cm,o=arguments.length>3?arguments[3]:void 0;this._editor=e,this._template=t,this._options=i,this._languageConfigurationService=o,this._templateMerges=[],this._snippets=[]}dispose(){(0,Fe.B9)(this._snippets)}_logInfo(){return'template="'.concat(this._template,'", merged_templates="').concat(this._templateMerges.join(" -> "),'"')}insert(){if(!this._editor.hasModel())return;const{edits:e,snippets:t}="string"===typeof this._template?rm.createEditsAndSnippetsFromSelections(this._editor,this._template,this._options.overwriteBefore,this._options.overwriteAfter,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService):rm.createEditsAndSnippetsFromEdits(this._editor,this._template,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService);this._snippets=t,this._editor.executeEdits("snippet",e,(e=>{const i=e.filter((e=>!!e.identifier));for(let o=0;o<t.length;o++)t[o].initialize(i[o].textChange);return this._snippets[0].hasPlaceholder?this._move(!0):i.map((e=>ke.Y.fromPositions(e.range.getEndPosition())))})),this._editor.revealRange(this._editor.getSelections()[0])}merge(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:cm;if(!this._editor.hasModel())return;this._templateMerges.push([this._snippets[0]._nestingLevel,this._snippets[0]._placeholderGroupsIdx,e]);const{edits:i,snippets:o}=rm.createEditsAndSnippetsFromSelections(this._editor,e,t.overwriteBefore,t.overwriteAfter,!0,t.adjustWhitespace,t.clipboardText,t.overtypingCapturer,this._languageConfigurationService);this._editor.executeEdits("snippet",i,(e=>{const t=e.filter((e=>!!e.identifier));for(let n=0;n<o.length;n++)o[n].initialize(t[n].textChange);const i=o[0].isTrivialSnippet;if(!i){for(const e of this._snippets)e.merge(o);console.assert(0===o.length)}return this._snippets[0].hasPlaceholder&&!i?this._move(void 0):t.map((e=>ke.Y.fromPositions(e.range.getEndPosition())))}))}next(){const e=this._move(!0);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}prev(){const e=this._move(!1);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}_move(e){const t=[];for(const i of this._snippets){const o=i.move(e);t.push(...o)}return t}get isAtFirstPlaceholder(){return this._snippets[0].isAtFirstPlaceholder}get isAtLastPlaceholder(){return this._snippets[0].isAtLastPlaceholder}get hasPlaceholder(){return this._snippets[0].hasPlaceholder}get hasChoice(){return this._snippets[0].hasChoice}get activeChoice(){return this._snippets[0].activeChoice}isSelectionWithinPlaceholders(){if(!this.hasPlaceholder)return!1;const e=this._editor.getSelections();if(e.length<this._snippets.length)return!1;const t=new Map;for(const i of this._snippets){const o=i.computePossibleSelections();if(0===t.size)for(const[i,n]of o){n.sort(He.e.compareRangesUsingStarts);for(const o of e)if(n[0].containsRange(o)){t.set(i,[]);break}}if(0===t.size)return!1;t.forEach(((e,t)=>{e.push(...o.get(t))}))}e.sort(He.e.compareRangesUsingStarts);for(const[i,o]of t)if(o.length===e.length){o.sort(He.e.compareRangesUsingStarts);for(let n=0;n<o.length;n++)o[n].containsRange(e[n])||t.delete(i)}else t.delete(i);return t.size>0}};hm=rm=am([lm(3,Xn.c_)],hm);var um,gm=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},pm=function(e,t){return function(i,o){t(i,o,e)}};const mm={overwriteBefore:0,overwriteAfter:0,undoStopBefore:!0,undoStopAfter:!0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let _m=um=class{static get(e){return e.getContribution(um.ID)}constructor(e,t,i,o,n){this._editor=e,this._logService=t,this._languageFeaturesService=i,this._languageConfigurationService=n,this._snippetListener=new Fe.SL,this._modelVersionId=-1,this._inSnippet=um.InSnippetMode.bindTo(o),this._hasNextTabstop=um.HasNextTabstop.bindTo(o),this._hasPrevTabstop=um.HasPrevTabstop.bindTo(o)}dispose(){var e;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),null===(e=this._session)||void 0===e||e.dispose(),this._snippetListener.dispose()}insert(e,t){try{this._doInsert(e,"undefined"===typeof t?mm:{...mm,...t})}catch(i){this.cancel(),this._logService.error(i),this._logService.error("snippet_error"),this._logService.error("insert_template=",e),this._logService.error("existing_template=",this._session?this._session._logInfo():"<no_session>")}}_doInsert(e,t){var i;if(this._editor.hasModel()){if(this._snippetListener.clear(),t.undoStopBefore&&this._editor.getModel().pushStackElement(),this._session&&"string"!==typeof e&&this.cancel(),this._session?((0,Dn.p_)("string"===typeof e),this._session.merge(e,t)):(this._modelVersionId=this._editor.getModel().getAlternativeVersionId(),this._session=new hm(this._editor,e,t,this._languageConfigurationService),this._session.insert()),t.undoStopAfter&&this._editor.getModel().pushStackElement(),null===(i=this._session)||void 0===i?void 0:i.hasChoice){const e={_debugDisplayName:"snippetChoiceCompletions",provideCompletionItems:(e,t)=>{if(!this._session||e!==this._editor.getModel()||!We.L.equals(this._editor.getPosition(),t))return;const{activeChoice:i}=this._session;if(!i||0===i.choice.options.length)return;const o=e.getValueInRange(i.range),n=Boolean(i.choice.options.find((e=>e.value===o))),s=[];for(let r=0;r<i.choice.options.length;r++){const e=i.choice.options[r];s.push({kind:13,label:e.value,insertText:e.value,sortText:"a".repeat(r+1),range:i.range,filterText:n?"".concat(o,"_").concat(e.value):void 0,command:{id:"jumpToNextSnippetPlaceholder",title:(0,ne.NC)("next","Go to next placeholder...")}})}return{suggestions:s}}},t=this._editor.getModel();let i,o=!1;const n=()=>{null===i||void 0===i||i.dispose(),o=!1},s=()=>{o||(i=this._languageFeaturesService.completionProvider.register({language:t.getLanguageId(),pattern:t.uri.fsPath,scheme:t.uri.scheme,exclusive:!0},e),this._snippetListener.add(i),o=!0)};this._choiceCompletions={provider:e,enable:s,disable:n}}this._updateState(),this._snippetListener.add(this._editor.onDidChangeModelContent((e=>e.isFlush&&this.cancel()))),this._snippetListener.add(this._editor.onDidChangeModel((()=>this.cancel()))),this._snippetListener.add(this._editor.onDidChangeCursorSelection((()=>this._updateState())))}}_updateState(){if(this._session&&this._editor.hasModel()){if(this._modelVersionId===this._editor.getModel().getAlternativeVersionId())return this.cancel();if(!this._session.hasPlaceholder)return this.cancel();if(this._session.isAtLastPlaceholder||!this._session.isSelectionWithinPlaceholders())return this._editor.getModel().pushStackElement(),this.cancel();this._inSnippet.set(!0),this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder),this._hasNextTabstop.set(!this._session.isAtLastPlaceholder),this._handleChoice()}}_handleChoice(){var e;if(!this._session||!this._editor.hasModel())return void(this._currentChoice=void 0);const{activeChoice:t}=this._session;if(!t||!this._choiceCompletions)return null===(e=this._choiceCompletions)||void 0===e||e.disable(),void(this._currentChoice=void 0);this._currentChoice!==t.choice&&(this._currentChoice=t.choice,this._choiceCompletions.enable(),queueMicrotask((()=>{!function(e,t){var i;null===(i=e.getContribution("editor.contrib.suggestController"))||void 0===i||i.triggerSuggest((new Set).add(t),void 0,!0)}(this._editor,this._choiceCompletions.provider)})))}finish(){for(;this._inSnippet.get();)this.next()}cancel(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];var t;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),this._snippetListener.clear(),this._currentChoice=void 0,null===(t=this._session)||void 0===t||t.dispose(),this._session=void 0,this._modelVersionId=-1,e&&this._editor.setSelections([this._editor.getSelection()])}prev(){var e;null===(e=this._session)||void 0===e||e.prev(),this._updateState()}next(){var e;null===(e=this._session)||void 0===e||e.next(),this._updateState()}isInSnippet(){return Boolean(this._inSnippet.get())}};_m.ID="snippetController2",_m.InSnippetMode=new ae.uy("inSnippetMode",!1,(0,ne.NC)("inSnippetMode","Whether the editor in current in snippet mode")),_m.HasNextTabstop=new ae.uy("hasNextTabstop",!1,(0,ne.NC)("hasNextTabstop","Whether there is a next tab stop when in snippet mode")),_m.HasPrevTabstop=new ae.uy("hasPrevTabstop",!1,(0,ne.NC)("hasPrevTabstop","Whether there is a previous tab stop when in snippet mode")),_m=um=gm([pm(1,qp.VZ),pm(2,kt.p),pm(3,ae.i6),pm(4,Xn.c_)],_m),(0,ee._K)(_m.ID,_m,4);const fm=ee._l.bindToContribution(_m.get);(0,ee.fK)(new fm({id:"jumpToNextSnippetPlaceholder",precondition:ae.Ao.and(_m.InSnippetMode,_m.HasNextTabstop),handler:e=>e.next(),kbOpts:{weight:130,kbExpr:oe.u.editorTextFocus,primary:2}})),(0,ee.fK)(new fm({id:"jumpToPrevSnippetPlaceholder",precondition:ae.Ao.and(_m.InSnippetMode,_m.HasPrevTabstop),handler:e=>e.prev(),kbOpts:{weight:130,kbExpr:oe.u.editorTextFocus,primary:1026}})),(0,ee.fK)(new fm({id:"leaveSnippet",precondition:_m.InSnippetMode,handler:e=>e.cancel(!0),kbOpts:{weight:130,kbExpr:oe.u.editorTextFocus,primary:9,secondary:[1033]}})),(0,ee.fK)(new fm({id:"acceptSnippet",precondition:_m.InSnippetMode,handler:e=>e.finish()}));var vm,bm=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Cm=function(e,t){return function(i,o){t(i,o,e)}};!function(e){e[e.Undo=0]="Undo",e[e.Redo=1]="Redo",e[e.AcceptWord=2]="AcceptWord",e[e.Other=3]="Other"}(vm||(vm={}));let Sm=class extends Fe.JT{get isAcceptingPartially(){return this._isAcceptingPartially}constructor(e,t,i,o,n,s,r,a,l,d,c,h){let u;super(),this.textModel=e,this.selectedSuggestItem=t,this.textModelVersionId=i,this._positions=o,this._debounceValue=n,this._suggestPreviewEnabled=s,this._suggestPreviewMode=r,this._inlineSuggestMode=a,this._enabled=l,this._instantiationService=d,this._commandService=c,this._languageConfigurationService=h,this._source=this._register(this._instantiationService.createInstance(Rp,this.textModel,this.textModelVersionId,this._debounceValue)),this._isActive=(0,dd.uh)(this,!1),this._forceUpdateSignal=(0,dd.GN)("forceUpdate"),this._selectedInlineCompletionId=(0,dd.uh)(this,void 0),this._primaryPosition=(0,dd.nK)(this,(e=>{var t;return null!==(t=this._positions.read(e)[0])&&void 0!==t?t:new We.L(1,1)})),this._isAcceptingPartially=!1,this._preserveCurrentCompletionReasons=new Set([vm.Redo,vm.Undo,vm.AcceptWord]),this._fetchInlineCompletions=(0,dd.aK)({owner:this,createEmptyChangeSummary:()=>({preserveCurrentCompletion:!1,inlineCompletionTriggerKind:Lt.bw.Automatic}),handleChange:(e,t)=>(e.didChange(this.textModelVersionId)&&this._preserveCurrentCompletionReasons.has(e.change)?t.preserveCurrentCompletion=!0:e.didChange(this._forceUpdateSignal)&&(t.inlineCompletionTriggerKind=e.change),!0)},((e,t)=>{this._forceUpdateSignal.read(e);if(!(this._enabled.read(e)&&this.selectedSuggestItem.read(e)||this._isActive.read(e)))return void this._source.cancelUpdate();this.textModelVersionId.read(e);const i=this.selectedInlineCompletion.get(),o=t.preserveCurrentCompletion||(null===i||void 0===i?void 0:i.forwardStable)?i:void 0,n=this._source.suggestWidgetInlineCompletions.get(),s=this.selectedSuggestItem.read(e);if(n&&!s){const e=this._source.inlineCompletions.get();(0,dd.PS)((t=>{(!e||n.request.versionId>e.request.versionId)&&this._source.inlineCompletions.set(n.clone(),t),this._source.clearSuggestWidgetInlineCompletions(t)}))}const r=this._primaryPosition.read(e),a={triggerKind:t.inlineCompletionTriggerKind,selectedSuggestionInfo:null===s||void 0===s?void 0:s.toSelectedSuggestionInfo()};return this._source.fetch(r,a,o)})),this._filteredInlineCompletionItems=(0,dd.nK)(this,(e=>{const t=this._source.inlineCompletions.read(e);if(!t)return[];const i=this._primaryPosition.read(e),o=t.inlineCompletions.filter((t=>t.isVisible(this.textModel,i,e)));return o})),this.selectedInlineCompletionIndex=(0,dd.nK)(this,(e=>{const t=this._selectedInlineCompletionId.read(e),i=this._filteredInlineCompletionItems.read(e),o=void 0===this._selectedInlineCompletionId?-1:i.findIndex((e=>e.semanticId===t));return-1===o?(this._selectedInlineCompletionId.set(void 0,void 0),0):o})),this.selectedInlineCompletion=(0,dd.nK)(this,(e=>this._filteredInlineCompletionItems.read(e)[this.selectedInlineCompletionIndex.read(e)])),this.lastTriggerKind=this._source.inlineCompletions.map(this,(e=>null===e||void 0===e?void 0:e.request.context.triggerKind)),this.inlineCompletionsCount=(0,dd.nK)(this,(e=>this.lastTriggerKind.read(e)===Lt.bw.Explicit?this._filteredInlineCompletionItems.read(e).length:void 0)),this.state=(0,dd.bk)({owner:this,equalityComparer:(e,t)=>e&&t?Yg(e.ghostTexts,t.ghostTexts)&&e.inlineCompletion===t.inlineCompletion&&e.suggestItem===t.suggestItem:e===t},(e=>{var t,i;const o=this.textModel,n=this.selectedSuggestItem.read(e);if(n){const s=yp(n.toSingleTextEdit(),o),r=this._computeAugmentation(s,e);if(!this._suggestPreviewEnabled.read(e)&&!r)return;const a=null!==(t=null===r||void 0===r?void 0:r.edit)&&void 0!==t?t:s,l=r?r.edit.text.length-s.text.length:0,d=this._suggestPreviewMode.read(e),c=this._positions.read(e),h=[a,...ym(this.textModel,c,a)],u=h.map(((e,t)=>xp(e,o,d,c[t],l))).filter(Dn.$K);return{edits:h,primaryGhostText:null!==(i=u[0])&&void 0!==i?i:new Gg(a.range.endLineNumber,[]),ghostTexts:u,inlineCompletion:null===r||void 0===r?void 0:r.completion,suggestItem:n}}{if(!this._isActive.read(e))return;const t=this.selectedInlineCompletion.read(e);if(!t)return;const i=t.toSingleTextEdit(e),n=this._inlineSuggestMode.read(e),s=this._positions.read(e),r=[i,...ym(this.textModel,s,i)],a=r.map(((e,t)=>xp(e,o,n,s[t],0))).filter(Dn.$K);if(!a[0])return;return{edits:r,primaryGhostText:a[0],ghostTexts:a,inlineCompletion:t,suggestItem:void 0}}})),this.ghostTexts=(0,dd.bk)({owner:this,equalityComparer:Yg},(e=>{const t=this.state.read(e);if(t)return t.ghostTexts})),this.primaryGhostText=(0,dd.bk)({owner:this,equalityComparer:Jg},(e=>{const t=this.state.read(e);if(t)return null===t||void 0===t?void 0:t.primaryGhostText})),this._register((0,dd.jx)(this._fetchInlineCompletions)),this._register((0,dd.EH)((e=>{var t,i;const o=this.state.read(e),n=null===o||void 0===o?void 0:o.inlineCompletion;if((null===n||void 0===n?void 0:n.semanticId)!==(null===u||void 0===u?void 0:u.semanticId)&&(u=n,n)){const e=n.inlineCompletion,o=e.source;null===(i=(t=o.provider).handleItemDidShow)||void 0===i||i.call(t,o.inlineCompletions,e.sourceInlineCompletion,e.insertText)}})))}async trigger(e){this._isActive.set(!0,e),await this._fetchInlineCompletions.get()}async triggerExplicitly(e){(0,dd.c8)(e,(e=>{this._isActive.set(!0,e),this._forceUpdateSignal.trigger(e,Lt.bw.Explicit)})),await this._fetchInlineCompletions.get()}stop(e){(0,dd.c8)(e,(e=>{this._isActive.set(!1,e),this._source.clear(e)}))}_computeAugmentation(e,t){const i=this.textModel,o=this._source.suggestWidgetInlineCompletions.read(t),n=o?o.inlineCompletions:[this.selectedInlineCompletion.read(t)].filter(Dn.$K);return(0,Nc.Fr)(n,(o=>{let n=o.toSingleTextEdit(t);return n=yp(n,i,He.e.fromPositions(n.range.getStartPosition(),e.range.getEndPosition())),wp(n,e)?{completion:o,edit:n}:void 0}))}async _deltaSelectedInlineCompletionIndex(e){await this.triggerExplicitly();const t=this._filteredInlineCompletionItems.get()||[];if(t.length>0){const i=(this.selectedInlineCompletionIndex.get()+e+t.length)%t.length;this._selectedInlineCompletionId.set(t[i].semanticId,void 0)}else this._selectedInlineCompletionId.set(void 0,void 0)}async next(){await this._deltaSelectedInlineCompletionIndex(1)}async previous(){await this._deltaSelectedInlineCompletionIndex(-1)}async accept(e){var t;if(e.getModel()!==this.textModel)throw new Ji.he;const i=this.state.get();if(!i||i.primaryGhostText.isEmpty()||!i.inlineCompletion)return;const o=i.inlineCompletion.toInlineCompletion(void 0);if(e.pushUndoStop(),o.snippetInfo)e.executeEdits("inlineSuggestion.accept",[Yd.h.replaceMove(o.range,""),...o.additionalTextEdits]),e.setPosition(o.snippetInfo.range.getStartPosition(),"inlineCompletionAccept"),null===(t=_m.get(e))||void 0===t||t.insert(o.snippetInfo.snippet,{undoStopBefore:!1});else{const t=i.edits,n=wm(t).map((e=>ke.Y.fromPositions(e)));e.executeEdits("inlineSuggestion.accept",[...t.map((e=>Yd.h.replaceMove(e.range,e.text))),...o.additionalTextEdits]),e.setSelections(n,"inlineCompletionAccept")}o.command&&o.source.addRef(),(0,dd.PS)((e=>{this._source.clear(e),this._isActive.set(!1,e)})),o.command&&(await this._commandService.executeCommand(o.command.id,...o.command.arguments||[]).then(void 0,Ji.Cp),o.source.removeRef())}async acceptNextWord(e){await this._acceptNext(e,((e,t)=>{const i=this.textModel.getLanguageIdAtPosition(e.lineNumber,e.column),o=this._languageConfigurationService.getLanguageConfiguration(i),n=new RegExp(o.wordDefinition.source,o.wordDefinition.flags.replace("g","")),s=t.match(n);let r=0;r=s&&void 0!==s.index?0===s.index?s[0].length:s.index:t.length;const a=/\s+/g.exec(t);return a&&void 0!==a.index&&a.index+a[0].length<r&&(r=a.index+a[0].length),r}),0)}async acceptNextLine(e){await this._acceptNext(e,((e,t)=>{const i=t.match(/\n/);return i&&void 0!==i.index?i.index+1:t.length}),1)}async _acceptNext(e,t,i){if(e.getModel()!==this.textModel)throw new Ji.he;const o=this.state.get();if(!o||o.primaryGhostText.isEmpty()||!o.inlineCompletion)return;const n=o.primaryGhostText,s=o.inlineCompletion.toInlineCompletion(void 0);if(s.snippetInfo||s.filterText!==s.insertText)return void await this.accept(e);const r=n.parts[0],a=new We.L(n.lineNumber,r.column),l=r.text,d=t(a,l);if(d===l.length&&1===n.parts.length)return void this.accept(e);const c=l.substring(0,d),h=this._positions.get(),u=h[0];s.source.addRef();try{this._isAcceptingPartially=!0;try{e.pushUndoStop();const t=He.e.fromPositions(u,a),i=e.getModel().getValueInRange(t)+c,o=new qg.At(t,i),n=[o,...ym(this.textModel,h,o)],s=wm(n).map((e=>ke.Y.fromPositions(e)));e.executeEdits("inlineSuggestion.accept",n.map((e=>Yd.h.replaceMove(e.range,e.text)))),e.setSelections(s,"inlineCompletionPartialAccept")}finally{this._isAcceptingPartially=!1}if(s.source.provider.handlePartialAccept){const t=He.e.fromPositions(s.range.getStartPosition(),Sp.A.ofText(c).addToPosition(a)),o=e.getModel().getValueInRange(t,1);s.source.provider.handlePartialAccept(s.source.inlineCompletions,s.sourceInlineCompletion,o.length,{kind:i})}}finally{s.source.removeRef()}}handleSuggestAccepted(e){var t,i;const o=yp(e.toSingleTextEdit(),this.textModel),n=this._computeAugmentation(o,void 0);if(!n)return;const s=n.completion.inlineCompletion;null===(i=(t=s.source.provider).handlePartialAccept)||void 0===i||i.call(t,s.source.inlineCompletions,s.sourceInlineCompletion,o.text.length,{kind:2})}};function ym(e,t,i){if(1===t.length)return[];const o=t[0],n=t.slice(1),s=i.range.getStartPosition(),r=i.range.getEndPosition(),a=e.getValueInRange(He.e.fromPositions(o,r)),l=tp(o,s);if(l.lineNumber<1)return(0,Ji.dL)(new Ji.he("positionWithinTextEdit line number should be bigger than 0.\n\t\t\tInvalid subtraction between ".concat(o.toString()," and ").concat(s.toString()))),[];const d=function(e,t){let i="";const o=(0,ii.Fw)(e);for(let n=t.lineNumber-1;n<o.length;n++)i+=o[n].substring(n===t.lineNumber-1?t.column-1:0);return i}(i.text,l);return n.map((t=>{const i=(o=tp(t,s),n=r,new We.L(o.lineNumber+n.lineNumber-1,1===n.lineNumber?o.column+n.column-1:n.column));var o,n;const l=e.getValueInRange(He.e.fromPositions(t,i)),c=(0,ii.Mh)(a,l),h=He.e.fromPositions(t,t.delta(0,c));return new qg.At(h,d)}))}function wm(e){const t=nt._i.createSortPermutation(e,((e,t)=>He.e.compareRangesUsingStarts(e.range,t.range))),i=new qg.PY(t.apply(e)).getNewRanges();return t.inverse().apply(i).map((e=>e.getEndPosition()))}Sm=bm([Cm(9,ni.TG),Cm(10,ye.H),Cm(11,Xn.c_)],Sm);var xm,Nm=i(97162),Lm=i(737),km=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Dm=function(e,t){return function(i,o){t(i,o,e)}};class Im{constructor(e){this.name=e}select(e,t,i){if(0===i.length)return 0;const o=i[0].score[0];for(let n=0;n<i.length;n++){const{score:e,completion:t}=i[n];if(e[0]!==o)break;if(t.preselect)return n}return 0}}class Rm extends Im{constructor(){super("first")}memorize(e,t,i){}toJSON(){}fromJSON(){}}let Pm=xm=class{constructor(e,t){this._storageService=e,this._configService=t,this._disposables=new Fe.SL,this._persistSoon=new Oe.pY((()=>this._saveState()),500),this._disposables.add(e.onWillSaveState((e=>{e.reason===Mn.fk.SHUTDOWN&&this._saveState()})))}dispose(){this._disposables.dispose(),this._persistSoon.dispose()}memorize(e,t,i){this._withStrategy(e,t).memorize(e,t,i),this._persistSoon.schedule()}select(e,t,i){return this._withStrategy(e,t).select(e,t,i)}_withStrategy(e,t){var i;const o=this._configService.getValue("editor.suggestSelection",{overrideIdentifier:e.getLanguageIdAtPosition(t.lineNumber,t.column),resource:e.uri});if((null===(i=this._strategy)||void 0===i?void 0:i.name)!==o){this._saveState();const e=xm._strategyCtors.get(o)||Rm;this._strategy=new e;try{const e=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,t=this._storageService.get("".concat(xm._storagePrefix,"/").concat(o),e);t&&this._strategy.fromJSON(JSON.parse(t))}catch(n){}}return this._strategy}_saveState(){if(this._strategy){const e=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,t=JSON.stringify(this._strategy);this._storageService.store("".concat(xm._storagePrefix,"/").concat(this._strategy.name),t,e,1)}}};Pm._strategyCtors=new Map([["recentlyUsedByPrefix",class extends Im{constructor(){super("recentlyUsedByPrefix"),this._trie=Lm.Id.forStrings(),this._seq=0}memorize(e,t,i){const{word:o}=e.getWordUntilPosition(t),n="".concat(e.getLanguageId(),"/").concat(o);this._trie.set(n,{type:i.completion.kind,insertText:i.completion.insertText,touch:this._seq++})}select(e,t,i){const{word:o}=e.getWordUntilPosition(t);if(!o)return super.select(e,t,i);const n="".concat(e.getLanguageId(),"/").concat(o);let s=this._trie.get(n);if(s||(s=this._trie.findSubstr(n)),s)for(let r=0;r<i.length;r++){const{kind:e,insertText:t}=i[r].completion;if(e===s.type&&t===s.insertText)return r}return super.select(e,t,i)}toJSON(){const e=[];return this._trie.forEach(((t,i)=>e.push([i,t]))),e.sort(((e,t)=>-(e[1].touch-t[1].touch))).forEach(((e,t)=>e[1].touch=t)),e.slice(0,200)}fromJSON(e){if(this._trie.clear(),e.length>0){this._seq=e[0][1].touch+1;for(const[t,i]of e)i.type="number"===typeof i.type?i.type:Lt.gX.fromString(i.type),this._trie.set(t,i)}}}],["recentlyUsed",class extends Im{constructor(){super("recentlyUsed"),this._cache=new Pn.z6(300,.66),this._seq=0}memorize(e,t,i){const o="".concat(e.getLanguageId(),"/").concat(i.textLabel);this._cache.set(o,{touch:this._seq++,type:i.completion.kind,insertText:i.completion.insertText})}select(e,t,i){if(0===i.length)return 0;const o=e.getLineContent(t.lineNumber).substr(t.column-10,t.column-1);if(/\s$/.test(o))return super.select(e,t,i);const n=i[0].score[0];let s=-1,r=-1,a=-1;for(let l=0;l<i.length&&i[l].score[0]===n;l++){const t="".concat(e.getLanguageId(),"/").concat(i[l].textLabel),o=this._cache.peek(t);if(o&&o.touch>a&&o.type===i[l].completion.kind&&o.insertText===i[l].completion.insertText&&(a=o.touch,r=l),i[l].completion.preselect&&-1===s)return l}return-1!==r?r:-1!==s?s:0}toJSON(){return this._cache.toJSON()}fromJSON(e){this._cache.clear();for(const[t,i]of e)i.touch=0,i.type="number"===typeof i.type?i.type:Lt.gX.fromString(i.type),this._cache.set(t,i);this._seq=this._cache.size}}],["first",Rm]]),Pm._storagePrefix="suggest/memories",Pm=xm=km([Dm(0,Mn.Uy),Dm(1,re.Ui)],Pm);const Mm=(0,ni.yh)("ISuggestMemories");(0,Zo.z)(Mm,Pm,1);var Tm,Em=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Am=function(e,t){return function(i,o){t(i,o,e)}};let Om=Tm=class{constructor(e,t){this._editor=e,this._enabled=!1,this._ckAtEnd=Tm.AtEnd.bindTo(t),this._configListener=this._editor.onDidChangeConfiguration((e=>e.hasChanged(123)&&this._update())),this._update()}dispose(){var e;this._configListener.dispose(),null===(e=this._selectionListener)||void 0===e||e.dispose(),this._ckAtEnd.reset()}_update(){const e="on"===this._editor.getOption(123);if(this._enabled!==e)if(this._enabled=e,this._enabled){const e=()=>{if(!this._editor.hasModel())return void this._ckAtEnd.set(!1);const e=this._editor.getModel(),t=this._editor.getSelection(),i=e.getWordAtPosition(t.getStartPosition());i?this._ckAtEnd.set(i.endColumn===t.getStartPosition().column):this._ckAtEnd.set(!1)};this._selectionListener=this._editor.onDidChangeCursorSelection(e),e()}else this._selectionListener&&(this._ckAtEnd.reset(),this._selectionListener.dispose(),this._selectionListener=void 0)}};Om.AtEnd=new ae.uy("atEndOfWord",!1),Om=Tm=Em([Am(1,ae.i6)],Om);var Fm,Wm=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Hm=function(e,t){return function(i,o){t(i,o,e)}};let Vm=Fm=class{constructor(e,t){this._editor=e,this._index=0,this._ckOtherSuggestions=Fm.OtherSuggestions.bindTo(t)}dispose(){this.reset()}reset(){var e;this._ckOtherSuggestions.reset(),null===(e=this._listener)||void 0===e||e.dispose(),this._model=void 0,this._acceptNext=void 0,this._ignore=!1}set(e,t){let{model:i,index:o}=e;if(0===i.items.length)return void this.reset();Fm._moveIndex(!0,i,o)!==o?(this._acceptNext=t,this._model=i,this._index=o,this._listener=this._editor.onDidChangeCursorPosition((()=>{this._ignore||this.reset()})),this._ckOtherSuggestions.set(!0)):this.reset()}static _moveIndex(e,t,i){let o=i;for(let n=t.items.length;n>0&&(o=(o+t.items.length+(e?1:-1))%t.items.length,o!==i)&&t.items[o].completion.additionalTextEdits;n--);return o}next(){this._move(!0)}prev(){this._move(!1)}_move(e){if(this._model)try{this._ignore=!0,this._index=Fm._moveIndex(e,this._model,this._index),this._acceptNext({index:this._index,item:this._model.items[this._index],model:this._model})}finally{this._ignore=!1}}};Vm.OtherSuggestions=new ae.uy("hasOtherSuggestions",!1),Vm=Fm=Wm([Hm(1,ae.i6)],Vm);class Bm{constructor(e,t,i,o){this._disposables=new Fe.SL,this._disposables.add(i.onDidSuggest((e=>{0===e.completionModel.items.length&&this.reset()}))),this._disposables.add(i.onDidCancel((e=>{this.reset()}))),this._disposables.add(t.onDidShow((()=>this._onItem(t.getFocusedItem())))),this._disposables.add(t.onDidFocus(this._onItem,this)),this._disposables.add(t.onDidHide(this.reset,this)),this._disposables.add(e.onWillType((n=>{if(this._active&&!t.isFrozen()&&0!==i.state){const t=n.charCodeAt(n.length-1);this._active.acceptCharacters.has(t)&&e.getOption(0)&&o(this._active.item)}})))}_onItem(e){if(!e||!(0,nt.Of)(e.item.completion.commitCharacters))return void this.reset();if(this._active&&this._active.item.item===e.item)return;const t=new vg.q;for(const i of e.item.completion.commitCharacters)i.length>0&&t.add(i.charCodeAt(0));this._active={acceptCharacters:t,item:e}}reset(){this._active=void 0}dispose(){this._disposables.dispose()}}class zm{async provideSelectionRanges(e,t){const i=[];for(const o of t){const t=[];i.push(t);const n=new Map;await new Promise((t=>zm._bracketsRightYield(t,0,e,o,n))),await new Promise((i=>zm._bracketsLeftYield(i,0,e,o,n,t)))}return i}static _bracketsRightYield(e,t,i,o,n){const s=new Map,r=Date.now();for(;;){if(t>=zm._maxRounds){e();break}if(!o){e();break}const a=i.bracketPairs.findNextBracket(o);if(!a){e();break}if(Date.now()-r>zm._maxDuration){setTimeout((()=>zm._bracketsRightYield(e,t+1,i,o,n)));break}if(a.bracketInfo.isOpeningBracket){const e=a.bracketInfo.bracketText,t=s.has(e)?s.get(e):0;s.set(e,t+1)}else{const e=a.bracketInfo.getOpeningBrackets()[0].bracketText;let t=s.has(e)?s.get(e):0;if(t-=1,s.set(e,Math.max(0,t)),t<0){let t=n.get(e);t||(t=new yl.S,n.set(e,t)),t.push(a.range)}}o=a.range.getEndPosition()}}static _bracketsLeftYield(e,t,i,o,n,s){const r=new Map,a=Date.now();for(;;){if(t>=zm._maxRounds&&0===n.size){e();break}if(!o){e();break}const l=i.bracketPairs.findPrevBracket(o);if(!l){e();break}if(Date.now()-a>zm._maxDuration){setTimeout((()=>zm._bracketsLeftYield(e,t+1,i,o,n,s)));break}if(l.bracketInfo.isOpeningBracket){const e=l.bracketInfo.bracketText;let t=r.has(e)?r.get(e):0;if(t-=1,r.set(e,Math.max(0,t)),t<0){const t=n.get(e);if(t){const o=t.shift();0===t.size&&n.delete(e);const r=He.e.fromPositions(l.range.getEndPosition(),o.getStartPosition()),a=He.e.fromPositions(l.range.getStartPosition(),o.getEndPosition());s.push({range:r}),s.push({range:a}),zm._addBracketLeading(i,a,s)}}}else{const e=l.bracketInfo.getOpeningBrackets()[0].bracketText,t=r.has(e)?r.get(e):0;r.set(e,t+1)}o=l.range.getStartPosition()}}static _addBracketLeading(e,t,i){if(t.startLineNumber===t.endLineNumber)return;const o=t.startLineNumber,n=e.getLineFirstNonWhitespaceColumn(o);0!==n&&n!==t.startColumn&&(i.push({range:He.e.fromPositions(new We.L(o,n),t.getEndPosition())}),i.push({range:He.e.fromPositions(new We.L(o,1),t.getEndPosition())}));const s=o-1;if(s>0){const o=e.getLineFirstNonWhitespaceColumn(s);o===t.startColumn&&o!==e.getLineLastNonWhitespaceColumn(s)&&(i.push({range:He.e.fromPositions(new We.L(s,o),t.getEndPosition())}),i.push({range:He.e.fromPositions(new We.L(s,1),t.getEndPosition())}))}}}zm._maxDuration=30,zm._maxRounds=2;class Um{static async create(e,t){if(!t.getOption(118).localityBonus)return Um.None;if(!t.hasModel())return Um.None;const i=t.getModel(),o=t.getPosition();if(!e.canComputeWordRanges(i.uri))return Um.None;const[n]=await(new zm).provideSelectionRanges(i,[o]);if(0===n.length)return Um.None;const s=await e.computeWordRanges(i.uri,n[0].range);if(!s)return Um.None;const r=i.getWordUntilPosition(o);return delete s[r.word],new class extends Um{distance(e,i){if(!o.equals(t.getPosition()))return 0;if(17===i.kind)return 2<<20;const r="string"===typeof i.label?i.label:i.label.label,a=s[r];if((0,nt.XY)(a))return 2<<20;const l=(0,nt.ry)(a,He.e.fromPositions(e),He.e.compareRangesUsingStarts),d=l>=0?a[l]:a[Math.max(0,~l-1)];let c=n.length;for(const t of n){if(!He.e.containsRange(t.range,d))break;c-=1}return c}}}}Um.None=new class extends Um{distance(){return 0}};class Km{constructor(e,t){this.leadingLineContent=e,this.characterCountDelta=t}}class jm{constructor(e,t,i,o,n,s){let r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:Fr.mX.default,a=arguments.length>7&&void 0!==arguments[7]?arguments[7]:void 0;this.clipboardText=a,this._snippetCompareFn=jm._compareCompletionItems,this._items=e,this._column=t,this._wordDistance=o,this._options=n,this._refilterKind=1,this._lineContext=i,this._fuzzyScoreOptions=r,"top"===s?this._snippetCompareFn=jm._compareCompletionItemsSnippetsUp:"bottom"===s&&(this._snippetCompareFn=jm._compareCompletionItemsSnippetsDown)}get lineContext(){return this._lineContext}set lineContext(e){this._lineContext.leadingLineContent===e.leadingLineContent&&this._lineContext.characterCountDelta===e.characterCountDelta||(this._refilterKind=this._lineContext.characterCountDelta<e.characterCountDelta&&this._filteredItems?2:1,this._lineContext=e)}get items(){return this._ensureCachedState(),this._filteredItems}getItemsByProvider(){return this._ensureCachedState(),this._itemsByProvider}getIncompleteProvider(){this._ensureCachedState();const e=new Set;for(const[t,i]of this.getItemsByProvider())i.length>0&&i[0].container.incomplete&&e.add(t);return e}get stats(){return this._ensureCachedState(),this._stats}_ensureCachedState(){0!==this._refilterKind&&this._createCachedState()}_createCachedState(){this._itemsByProvider=new Map;const e=[],{leadingLineContent:t,characterCountDelta:i}=this._lineContext;let o="",n="";const s=1===this._refilterKind?this._items:this._filteredItems,r=[],a=!this._options.filterGraceful||s.length>2e3?Fr.EW:Fr.l7;for(let l=0;l<s.length;l++){const d=s[l];if(d.isInvalid)continue;const c=this._itemsByProvider.get(d.provider);c?c.push(d):this._itemsByProvider.set(d.provider,[d]);const h=d.position.column-d.editStart.column,u=h+i-(d.position.column-this._column);if(o.length!==u&&(o=0===u?"":t.slice(-u),n=o.toLowerCase()),d.word=o,0===u)d.score=Fr.CL.Default;else{let e=0;for(;e<h;){const t=o.charCodeAt(e);if(32!==t&&9!==t)break;e+=1}if(e>=u)d.score=Fr.CL.Default;else if("string"===typeof d.completion.filterText){const t=a(o,n,e,d.completion.filterText,d.filterTextLow,0,this._fuzzyScoreOptions);if(!t)continue;0===(0,ii.zY)(d.completion.filterText,d.textLabel)?d.score=t:(d.score=(0,Fr.jB)(o,n,e,d.textLabel,d.labelLow,0),d.score[0]=t[0])}else{const t=a(o,n,e,d.textLabel,d.labelLow,0,this._fuzzyScoreOptions);if(!t)continue;d.score=t}}d.idx=l,d.distance=this._wordDistance.distance(d.position,d.completion),r.push(d),e.push(d.textLabel.length)}this._filteredItems=r.sort(this._snippetCompareFn),this._refilterKind=0,this._stats={pLabelLen:e.length?(0,nt.HW)(e.length-.85,e,((e,t)=>e-t)):0}}static _compareCompletionItems(e,t){return e.score[0]>t.score[0]?-1:e.score[0]<t.score[0]?1:e.distance<t.distance?-1:e.distance>t.distance?1:e.idx<t.idx?-1:e.idx>t.idx?1:0}static _compareCompletionItemsSnippetsDown(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return 1;if(27===t.completion.kind)return-1}return jm._compareCompletionItems(e,t)}static _compareCompletionItemsSnippetsUp(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return-1;if(27===t.completion.kind)return 1}return jm._compareCompletionItems(e,t)}}var qm,Gm=i(33473),Qm=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Zm=function(e,t){return function(i,o){t(i,o,e)}};class Ym{static shouldAutoTrigger(e){if(!e.hasModel())return!1;const t=e.getModel(),i=e.getPosition();t.tokenization.tokenizeIfCheap(i.lineNumber);const o=t.getWordAtPosition(i);return!!o&&((o.endColumn===i.column||o.startColumn+1===i.column)&&!!isNaN(Number(o.word)))}constructor(e,t,i){this.leadingLineContent=e.getLineContent(t.lineNumber).substr(0,t.column-1),this.leadingWord=e.getWordUntilPosition(t),this.lineNumber=t.lineNumber,this.column=t.column,this.triggerOptions=i}}let Jm=qm=class{constructor(e,t,i,o,n,s,r,a,l){this._editor=e,this._editorWorkerService=t,this._clipboardService=i,this._telemetryService=o,this._logService=n,this._contextKeyService=s,this._configurationService=r,this._languageFeaturesService=a,this._envService=l,this._toDispose=new Fe.SL,this._triggerCharacterListener=new Fe.SL,this._triggerQuickSuggest=new Oe._F,this._triggerState=void 0,this._completionDisposables=new Fe.SL,this._onDidCancel=new ui.Q5,this._onDidTrigger=new ui.Q5,this._onDidSuggest=new ui.Q5,this.onDidCancel=this._onDidCancel.event,this.onDidTrigger=this._onDidTrigger.event,this.onDidSuggest=this._onDidSuggest.event,this._telemetryGate=0,this._currentSelection=this._editor.getSelection()||new ke.Y(1,1,1,1),this._toDispose.add(this._editor.onDidChangeModel((()=>{this._updateTriggerCharacters(),this.cancel()}))),this._toDispose.add(this._editor.onDidChangeModelLanguage((()=>{this._updateTriggerCharacters(),this.cancel()}))),this._toDispose.add(this._editor.onDidChangeConfiguration((()=>{this._updateTriggerCharacters()}))),this._toDispose.add(this._languageFeaturesService.completionProvider.onDidChange((()=>{this._updateTriggerCharacters(),this._updateActiveSuggestSession()})));let d=!1;this._toDispose.add(this._editor.onDidCompositionStart((()=>{d=!0}))),this._toDispose.add(this._editor.onDidCompositionEnd((()=>{d=!1,this._onCompositionEnd()}))),this._toDispose.add(this._editor.onDidChangeCursorSelection((e=>{d||this._onCursorChange(e)}))),this._toDispose.add(this._editor.onDidChangeModelContent((()=>{d||void 0===this._triggerState||this._refilterCompletionItems()}))),this._updateTriggerCharacters()}dispose(){(0,Fe.B9)(this._triggerCharacterListener),(0,Fe.B9)([this._onDidCancel,this._onDidSuggest,this._onDidTrigger,this._triggerQuickSuggest]),this._toDispose.dispose(),this._completionDisposables.dispose(),this.cancel()}_updateTriggerCharacters(){if(this._triggerCharacterListener.clear(),this._editor.getOption(91)||!this._editor.hasModel()||!this._editor.getOption(121))return;const e=new Map;for(const i of this._languageFeaturesService.completionProvider.all(this._editor.getModel()))for(const t of i.triggerCharacters||[]){let o=e.get(t);o||(o=new Set,o.add(Vp),e.set(t,o)),o.add(i)}const t=t=>{var i;if(!function(e,t,i){if(!Boolean(t.getContextKeyValue("inlineSuggestionVisible")))return!0;const o=t.getContextKeyValue(Hg.suppressSuggestions.key);return void 0!==o?!o:!e.getOption(62).suppressSuggestions}(this._editor,this._contextKeyService,this._configurationService))return;if(Ym.shouldAutoTrigger(this._editor))return;if(!t){const e=this._editor.getPosition();t=this._editor.getModel().getLineContent(e.lineNumber).substr(0,e.column-1)}let o="";(0,ii.YK)(t.charCodeAt(t.length-1))?(0,ii.ZG)(t.charCodeAt(t.length-2))&&(o=t.substr(t.length-2)):o=t.charAt(t.length-1);const n=e.get(o);if(n){const e=new Map;if(this._completionModel)for(const[t,i]of this._completionModel.getItemsByProvider())n.has(t)||e.set(t,i);this.trigger({auto:!0,triggerKind:1,triggerCharacter:o,retrigger:Boolean(this._completionModel),clipboardText:null===(i=this._completionModel)||void 0===i?void 0:i.clipboardText,completionOptions:{providerFilter:n,providerItemsToReuse:e}})}};this._triggerCharacterListener.add(this._editor.onDidType(t)),this._triggerCharacterListener.add(this._editor.onDidCompositionEnd((()=>t())))}get state(){return this._triggerState?this._triggerState.auto?2:1:0}cancel(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];var t;void 0!==this._triggerState&&(this._triggerQuickSuggest.cancel(),null===(t=this._requestToken)||void 0===t||t.cancel(),this._requestToken=void 0,this._triggerState=void 0,this._completionModel=void 0,this._context=void 0,this._onDidCancel.fire({retrigger:e}))}clear(){this._completionDisposables.clear()}_updateActiveSuggestSession(){void 0!==this._triggerState&&(this._editor.hasModel()&&this._languageFeaturesService.completionProvider.has(this._editor.getModel())?this.trigger({auto:this._triggerState.auto,retrigger:!0}):this.cancel())}_onCursorChange(e){if(!this._editor.hasModel())return;const t=this._currentSelection;this._currentSelection=this._editor.getSelection(),!e.selection.isEmpty()||0!==e.reason&&3!==e.reason||"keyboard"!==e.source&&"deleteLeft"!==e.source?this.cancel():void 0===this._triggerState&&0===e.reason?(t.containsRange(this._currentSelection)||t.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition()))&&this._doTriggerQuickSuggest():void 0!==this._triggerState&&3===e.reason&&this._refilterCompletionItems()}_onCompositionEnd(){void 0===this._triggerState?this._doTriggerQuickSuggest():this._refilterCompletionItems()}_doTriggerQuickSuggest(){var e;jp.isAllOff(this._editor.getOption(89))||this._editor.getOption(118).snippetsPreventQuickSuggestions&&(null===(e=_m.get(this._editor))||void 0===e?void 0:e.isInSnippet())||(this.cancel(),this._triggerQuickSuggest.cancelAndSet((()=>{if(void 0!==this._triggerState)return;if(!Ym.shouldAutoTrigger(this._editor))return;if(!this._editor.hasModel()||!this._editor.hasWidgetFocus())return;const e=this._editor.getModel(),t=this._editor.getPosition(),i=this._editor.getOption(89);if(!jp.isAllOff(i)){if(!jp.isAllOn(i)){e.tokenization.tokenizeIfCheap(t.lineNumber);const o=e.tokenization.getLineTokens(t.lineNumber),n=o.getStandardTokenType(o.findTokenIndexAtOffset(Math.max(t.column-1-1,0)));if("on"!==jp.valueFor(i,n))return}(function(e,t,i){if(!Boolean(t.getContextKeyValue(Hg.inlineSuggestionVisible.key)))return!0;const o=t.getContextKeyValue(Hg.suppressSuggestions.key);return void 0!==o?!o:!e.getOption(62).suppressSuggestions})(this._editor,this._contextKeyService,this._configurationService)&&this._languageFeaturesService.completionProvider.has(e)&&this.trigger({auto:!0})}}),this._editor.getOption(90)))}_refilterCompletionItems(){(0,Dn.p_)(this._editor.hasModel()),(0,Dn.p_)(void 0!==this._triggerState);const e=this._editor.getModel(),t=this._editor.getPosition(),i=new Ym(e,t,{...this._triggerState,refilter:!0});this._onNewContext(i)}trigger(e){var t,i,o,n,s,r;if(!this._editor.hasModel())return;const a=this._editor.getModel(),l=new Ym(a,this._editor.getPosition(),e);this.cancel(e.retrigger),this._triggerState=e,this._onDidTrigger.fire({auto:e.auto,shy:null!==(t=e.shy)&&void 0!==t&&t,position:this._editor.getPosition()}),this._context=l;let d={triggerKind:null!==(i=e.triggerKind)&&void 0!==i?i:0};e.triggerCharacter&&(d={triggerKind:1,triggerCharacter:e.triggerCharacter}),this._requestToken=new Yi.A;let c=1;switch(this._editor.getOption(112)){case"top":c=0;break;case"bottom":c=2}const{itemKind:h,showDeprecated:u}=qm.createSuggestFilter(this._editor),g=new Hp(c,null!==(n=null===(o=e.completionOptions)||void 0===o?void 0:o.kindFilter)&&void 0!==n?n:h,null===(s=e.completionOptions)||void 0===s?void 0:s.providerFilter,null===(r=e.completionOptions)||void 0===r?void 0:r.providerItemsToReuse,u),p=Um.create(this._editorWorkerService,this._editor),m=zp(this._languageFeaturesService.completionProvider,a,this._editor.getPosition(),g,d,this._requestToken.token);Promise.all([m,p]).then((async t=>{let[i,o]=t;var n;if(null===(n=this._requestToken)||void 0===n||n.dispose(),!this._editor.hasModel())return;let s=null===e||void 0===e?void 0:e.clipboardText;if(!s&&i.needsClipboard&&(s=await this._clipboardService.readText()),void 0===this._triggerState)return;const r=this._editor.getModel(),a=new Ym(r,this._editor.getPosition(),e),l={...Fr.mX.default,firstMatchCanBeWeak:!this._editor.getOption(118).matchOnWordStartOnly};if(this._completionModel=new jm(i.items,this._context.column,{leadingLineContent:a.leadingLineContent,characterCountDelta:a.column-this._context.column},o,this._editor.getOption(118),this._editor.getOption(112),l,s),this._completionDisposables.add(i.disposable),this._onNewContext(a),this._reportDurationsTelemetry(i.durations),!this._envService.isBuilt||this._envService.isExtensionDevelopment)for(const e of i.items)e.isInvalid&&this._logService.warn("[suggest] did IGNORE invalid completion item from ".concat(e.provider._debugDisplayName),e.completion)})).catch(Ji.dL)}_reportDurationsTelemetry(e){this._telemetryGate++%230===0&&setTimeout((()=>{this._telemetryService.publicLog2("suggest.durations.json",{data:JSON.stringify(e)}),this._logService.debug("suggest.durations.json",e)}))}static createSuggestFilter(e){const t=new Set;"none"===e.getOption(112)&&t.add(27);const i=e.getOption(118);return i.showMethods||t.add(0),i.showFunctions||t.add(1),i.showConstructors||t.add(2),i.showFields||t.add(3),i.showVariables||t.add(4),i.showClasses||t.add(5),i.showStructs||t.add(6),i.showInterfaces||t.add(7),i.showModules||t.add(8),i.showProperties||t.add(9),i.showEvents||t.add(10),i.showOperators||t.add(11),i.showUnits||t.add(12),i.showValues||t.add(13),i.showConstants||t.add(14),i.showEnums||t.add(15),i.showEnumMembers||t.add(16),i.showKeywords||t.add(17),i.showWords||t.add(18),i.showColors||t.add(19),i.showFiles||t.add(20),i.showReferences||t.add(21),i.showColors||t.add(22),i.showFolders||t.add(23),i.showTypeParameters||t.add(24),i.showSnippets||t.add(27),i.showUsers||t.add(25),i.showIssues||t.add(26),{itemKind:t,showDeprecated:i.showDeprecated}}_onNewContext(e){if(this._context)if(e.lineNumber===this._context.lineNumber)if((0,ii.V8)(e.leadingLineContent)===(0,ii.V8)(this._context.leadingLineContent)){if(e.column<this._context.column)e.leadingWord.word?this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0}):this.cancel();else if(this._completionModel)if(0!==e.leadingWord.word.length&&e.leadingWord.startColumn>this._context.leadingWord.startColumn){if(Ym.shouldAutoTrigger(this._editor)&&this._context){const e=this._completionModel.getItemsByProvider();this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerItemsToReuse:e}})}}else if(e.column>this._context.column&&this._completionModel.getIncompleteProvider().size>0&&0!==e.leadingWord.word.length){const e=new Map,t=new Set;for(const[i,o]of this._completionModel.getItemsByProvider())o.length>0&&o[0].container.incomplete?t.add(i):e.set(i,o);this.trigger({auto:this._context.triggerOptions.auto,triggerKind:2,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerFilter:t,providerItemsToReuse:e}})}else{const t=this._completionModel.lineContext;let i=!1;if(this._completionModel.lineContext={leadingLineContent:e.leadingLineContent,characterCountDelta:e.column-this._context.column},0===this._completionModel.items.length){const o=Ym.shouldAutoTrigger(this._editor);if(!this._context)return void this.cancel();if(o&&this._context.leadingWord.endColumn<e.leadingWord.startColumn)return void this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0});if(this._context.triggerOptions.auto)return void this.cancel();if(this._completionModel.lineContext=t,i=this._completionModel.items.length>0,i&&0===e.leadingWord.word.length)return void this.cancel()}this._onDidSuggest.fire({completionModel:this._completionModel,triggerOptions:e.triggerOptions,isFrozen:i})}}else this.cancel();else this.cancel()}};Jm=qm=Qm([Zm(1,bg.p),Zm(2,Si.p),Zm(3,eo.b),Zm(4,qp.VZ),Zm(5,ae.i6),Zm(6,re.Ui),Zm(7,kt.p),Zm(8,Gm.Y)],Jm);class $m{constructor(e,t){this._disposables=new Fe.SL,this._lastOvertyped=[],this._locked=!1,this._disposables.add(e.onWillType((()=>{if(this._locked||!e.hasModel())return;const t=e.getSelections(),i=t.length;let o=!1;for(let e=0;e<i;e++)if(!t[e].isEmpty()){o=!0;break}if(!o)return void(0!==this._lastOvertyped.length&&(this._lastOvertyped.length=0));this._lastOvertyped=[];const n=e.getModel();for(let e=0;e<i;e++){const i=t[e];if(n.getValueLengthInRange(i)>$m._maxSelectionLength)return;this._lastOvertyped[e]={value:n.getValueInRange(i),multiline:i.startLineNumber!==i.endLineNumber}}}))),this._disposables.add(t.onDidTrigger((e=>{this._locked=!0}))),this._disposables.add(t.onDidCancel((e=>{this._locked=!1})))}getLastOvertypedInfo(e){if(e>=0&&e<this._lastOvertyped.length)return this._lastOvertyped[e]}dispose(){this._disposables.dispose()}}$m._maxSelectionLength=51200;var Xm=i(63229),e_=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},t_=function(e,t){return function(i,o){t(i,o,e)}};class i_ extends cr.Mm{updateLabel(){const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();this.label&&(this.label.textContent=(0,ne.NC)({key:"content",comment:["A label","A keybinding"]},"{0} ({1})",this._action.label,i_.symbolPrintEnter(e)))}static symbolPrintEnter(e){var t;return null===(t=e.getLabel())||void 0===t?void 0:t.replace(/\benter\b/gi,"\u23ce")}}let o_=class{constructor(e,t,i,o,n){this._menuId=t,this._menuService=o,this._contextKeyService=n,this._menuDisposables=new Fe.SL,this.element=X.R3(e,X.$(".suggest-status-bar"));const s=e=>e instanceof se.U8?i.createInstance(i_,e,void 0):void 0;this._leftActions=new Eo.o(this.element,{actionViewItemProvider:s}),this._rightActions=new Eo.o(this.element,{actionViewItemProvider:s}),this._leftActions.domNode.classList.add("left"),this._rightActions.domNode.classList.add("right")}dispose(){this._menuDisposables.dispose(),this._leftActions.dispose(),this._rightActions.dispose(),this.element.remove()}show(){const e=this._menuService.createMenu(this._menuId,this._contextKeyService),t=()=>{const t=[],i=[];for(const[o,n]of e.getActions())"left"===o?t.push(...n):i.push(...n);this._leftActions.clear(),this._leftActions.push(t),this._rightActions.clear(),this._rightActions.push(i)};this._menuDisposables.add(e.onDidChange((()=>t()))),this._menuDisposables.add(e)}hide(){this._menuDisposables.clear()}};o_=e_([t_(2,ni.TG),t_(3,se.co),t_(4,ae.i6)],o_);var n_=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},s_=function(e,t){return function(i,o){t(i,o,e)}};function r_(e){return!!e&&Boolean(e.completion.documentation||e.completion.detail&&e.completion.detail!==e.completion.label)}let a_=class{constructor(e,t){this._editor=e,this._onDidClose=new ui.Q5,this.onDidClose=this._onDidClose.event,this._onDidChangeContents=new ui.Q5,this.onDidChangeContents=this._onDidChangeContents.event,this._disposables=new Fe.SL,this._renderDisposeable=new Fe.SL,this._borderWidth=1,this._size=new X.Ro(330,0),this.domNode=X.$(".suggest-details"),this.domNode.classList.add("no-docs"),this._markdownRenderer=t.createInstance(gi.$,{editor:e}),this._body=X.$(".body"),this._scrollbar=new Rl.s$(this._body,{alwaysConsumeMouseWheel:!0}),X.R3(this.domNode,this._scrollbar.getDomNode()),this._disposables.add(this._scrollbar),this._header=X.R3(this._body,X.$(".header")),this._close=X.R3(this._header,X.$("span"+oi.k.asCSSSelector($.l.close))),this._close.title=ne.NC("details.close","Close"),this._type=X.R3(this._header,X.$("p.type")),this._docs=X.R3(this._body,X.$("p.docs")),this._configureFont(),this._disposables.add(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(50)&&this._configureFont()})))}dispose(){this._disposables.dispose(),this._renderDisposeable.dispose()}_configureFont(){const e=this._editor.getOptions(),t=e.get(50),i=t.getMassagedFontFamily(),o=e.get(119)||t.fontSize,n=e.get(120)||t.lineHeight,s=t.fontWeight,r="".concat(o,"px"),a="".concat(n,"px");this.domNode.style.fontSize=r,this.domNode.style.lineHeight="".concat(n/o),this.domNode.style.fontWeight=s,this.domNode.style.fontFeatureSettings=t.fontFeatureSettings,this._type.style.fontFamily=i,this._close.style.height=a,this._close.style.width=a}getLayoutInfo(){const e=this._editor.getOption(120)||this._editor.getOption(50).lineHeight,t=this._borderWidth;return{lineHeight:e,borderWidth:t,borderHeight:2*t,verticalPadding:22,horizontalPadding:14}}renderLoading(){this._type.textContent=ne.NC("loading","Loading..."),this._docs.textContent="",this.domNode.classList.remove("no-docs","no-type"),this.layout(this.size.width,2*this.getLayoutInfo().lineHeight),this._onDidChangeContents.fire(this)}renderItem(e,t){var i,o;this._renderDisposeable.clear();let{detail:n,documentation:s}=e.completion;if(t){let t="";t+="score: ".concat(e.score[0],"\n"),t+="prefix: ".concat(null!==(i=e.word)&&void 0!==i?i:"(no prefix)","\n"),t+="word: ".concat(e.completion.filterText?e.completion.filterText+" (filterText)":e.textLabel,"\n"),t+="distance: ".concat(e.distance," (localityBonus-setting)\n"),t+="index: ".concat(e.idx,", based on ").concat(e.completion.sortText&&'sortText: "'.concat(e.completion.sortText,'"')||"label","\n"),t+="commit_chars: ".concat(null===(o=e.completion.commitCharacters)||void 0===o?void 0:o.join(""),"\n"),s=(new Ne.W5).appendCodeblock("empty",t),n="Provider: ".concat(e.provider._debugDisplayName)}if(t||r_(e)){if(this.domNode.classList.remove("no-docs","no-type"),n){const e=n.length>1e5?"".concat(n.substr(0,1e5),"\u2026"):n;this._type.textContent=e,this._type.title=e,X.$Z(this._type),this._type.classList.toggle("auto-wrap",!/\r?\n^\s+/gim.test(e))}else X.PO(this._type),this._type.title="",X.Cp(this._type),this.domNode.classList.add("no-type");if(X.PO(this._docs),"string"===typeof s)this._docs.classList.remove("markdown-docs"),this._docs.textContent=s;else if(s){this._docs.classList.add("markdown-docs"),X.PO(this._docs);const e=this._markdownRenderer.render(s);this._docs.appendChild(e.element),this._renderDisposeable.add(e),this._renderDisposeable.add(this._markdownRenderer.onDidRenderAsync((()=>{this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)})))}this.domNode.style.userSelect="text",this.domNode.tabIndex=-1,this._close.onmousedown=e=>{e.preventDefault(),e.stopPropagation()},this._close.onclick=e=>{e.preventDefault(),e.stopPropagation(),this._onDidClose.fire()},this._body.scrollTop=0,this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}else this.clearContents()}clearContents(){this.domNode.classList.add("no-docs"),this._type.textContent="",this._docs.textContent=""}get isEmpty(){return this.domNode.classList.contains("no-docs")}get size(){return this._size}layout(e,t){const i=new X.Ro(e,t);X.Ro.equals(i,this._size)||(this._size=i,X.dp(this.domNode,e,t)),this._scrollbar.scanDomNode()}scrollDown(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;this._body.scrollTop+=e}scrollUp(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;this._body.scrollTop-=e}scrollTop(){this._body.scrollTop=0}scrollBottom(){this._body.scrollTop=this._body.scrollHeight}pageDown(){this.scrollDown(80)}pageUp(){this.scrollUp(80)}set borderWidth(e){this._borderWidth=e}get borderWidth(){return this._borderWidth}};a_=n_([s_(1,ni.TG)],a_);class l_{constructor(e,t){let i,o;this.widget=e,this._editor=t,this.allowEditorOverflow=!0,this._disposables=new Fe.SL,this._added=!1,this._preferAlignAtTop=!0,this._resizable=new Za,this._resizable.domNode.classList.add("suggest-details-container"),this._resizable.domNode.appendChild(e.domNode),this._resizable.enableSashes(!1,!0,!0,!1);let n=0,s=0;this._disposables.add(this._resizable.onDidWillResize((()=>{i=this._topLeft,o=this._resizable.size}))),this._disposables.add(this._resizable.onDidResize((e=>{if(i&&o){this.widget.layout(e.dimension.width,e.dimension.height);let t=!1;e.west&&(s=o.width-e.dimension.width,t=!0),e.north&&(n=o.height-e.dimension.height,t=!0),t&&this._applyTopLeft({top:i.top+n,left:i.left+s})}e.done&&(i=void 0,o=void 0,n=0,s=0,this._userSize=e.dimension)}))),this._disposables.add(this.widget.onDidChangeContents((()=>{var e;this._anchorBox&&this._placeAtAnchor(this._anchorBox,null!==(e=this._userSize)&&void 0!==e?e:this.widget.size,this._preferAlignAtTop)})))}dispose(){this._resizable.dispose(),this._disposables.dispose(),this.hide()}getId(){return"suggest.details"}getDomNode(){return this._resizable.domNode}getPosition(){return this._topLeft?{preference:this._topLeft}:null}show(){this._added||(this._editor.addOverlayWidget(this),this._added=!0)}hide(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._resizable.clearSashHoverState(),this._added&&(this._editor.removeOverlayWidget(this),this._added=!1,this._anchorBox=void 0,this._topLeft=void 0),e&&(this._userSize=void 0,this.widget.clearContents())}placeAtAnchor(e,t){var i;const o=e.getBoundingClientRect();this._anchorBox=o,this._preferAlignAtTop=t,this._placeAtAnchor(this._anchorBox,null!==(i=this._userSize)&&void 0!==i?i:this.widget.size,t)}_placeAtAnchor(e,t,i){var o;const n=X.D6(this.getDomNode().ownerDocument.body),s=this.widget.getLayoutInfo(),r=new X.Ro(220,2*s.lineHeight),a=e.top,l=function(){const i=n.width-(e.left+e.width+s.borderWidth+s.horizontalPadding),o=-s.borderWidth+e.left+e.width,l=new X.Ro(i,n.height-e.top-s.borderHeight-s.verticalPadding),d=l.with(void 0,e.top+e.height-s.borderHeight-s.verticalPadding);return{top:a,left:o,fit:i-t.width,maxSizeTop:l,maxSizeBottom:d,minSize:r.with(Math.min(i,r.width))}}(),d=function(){const i=e.left-s.borderWidth-s.horizontalPadding,o=Math.max(s.horizontalPadding,e.left-t.width-s.borderWidth),l=new X.Ro(i,n.height-e.top-s.borderHeight-s.verticalPadding),d=l.with(void 0,e.top+e.height-s.borderHeight-s.verticalPadding);return{top:a,left:o,fit:i-t.width,maxSizeTop:l,maxSizeBottom:d,minSize:r.with(Math.min(i,r.width))}}(),c=function(){const i=e.left,o=-s.borderWidth+e.top+e.height,a=new X.Ro(e.width-s.borderHeight,n.height-e.top-e.height-s.verticalPadding);return{top:o,left:i,fit:a.height-t.height,maxSizeBottom:a,maxSizeTop:a,minSize:r.with(a.width)}}(),h=[l,d,c],u=null!==(o=h.find((e=>e.fit>=0)))&&void 0!==o?o:h.sort(((e,t)=>t.fit-e.fit))[0],g=e.top+e.height-s.borderHeight;let p,m=t.height;const _=Math.max(u.maxSizeTop.height,u.maxSizeBottom.height);let f;m>_&&(m=_),i?m<=u.maxSizeTop.height?(p=!0,f=u.maxSizeTop):(p=!1,f=u.maxSizeBottom):m<=u.maxSizeBottom.height?(p=!1,f=u.maxSizeBottom):(p=!0,f=u.maxSizeTop);let{top:v,left:b}=u;!p&&m>e.height&&(v=g-m);const C=this._editor.getDomNode();if(C){const e=C.getBoundingClientRect();v-=e.top,b-=e.left}this._applyTopLeft({left:b,top:v}),this._resizable.enableSashes(!p,u===l,p,u!==l),this._resizable.minSize=u.minSize,this._resizable.maxSize=f,this._resizable.layout(m,Math.min(f.width,t.width)),this.widget.layout(this._resizable.size.width,this._resizable.size.height)}_applyTopLeft(e){this._topLeft=e,this._editor.layoutOverlayWidget(this)}}var d_;!function(e){e[e.FILE=0]="FILE",e[e.FOLDER=1]="FOLDER",e[e.ROOT_FOLDER=2]="ROOT_FOLDER"}(d_||(d_={}));const c_=/(?:\/|^)(?:([^\/]+)\/)?([^\/]+)$/;function h_(e,t,i,o,n){if(n)return["codicon-".concat(n.id),"predefined-file-icon"];const s=o===d_.ROOT_FOLDER?["rootfolder-icon"]:o===d_.FOLDER?["folder-icon"]:["file-icon"];if(i){let n;if(i.scheme===Dt.lg.data){n=It.Vb.parseMetaData(i).get(It.Vb.META_DATA_LABEL)}else{const e=i.path.match(c_);e?(n=u_(e[2].toLowerCase()),e[1]&&s.push("".concat(u_(e[1].toLowerCase()),"-name-dir-icon"))):n=u_(i.authority.toLowerCase())}if(o===d_.ROOT_FOLDER)s.push("".concat(n,"-root-name-folder-icon"));else if(o===d_.FOLDER)s.push("".concat(n,"-name-folder-icon"));else{if(n){if(s.push("".concat(n,"-name-file-icon")),s.push("name-file-icon"),n.length<=255){const e=n.split(".");for(let t=1;t<e.length;t++)s.push("".concat(e.slice(t).join("."),"-ext-file-icon"))}s.push("ext-file-icon")}const o=function(e,t,i){if(!i)return null;let o=null;if(i.scheme===Dt.lg.data){const e=It.Vb.parseMetaData(i).get(It.Vb.META_DATA_MIME);e&&(o=t.getLanguageIdByMimeType(e))}else{const t=e.getModel(i);t&&(o=t.getLanguageId())}if(o&&o!==Tr.bd)return o;return t.guessLanguageIdByFilepathOrFirstLine(i)}(e,t,i);o&&s.push("".concat(u_(o),"-lang-file-icon"))}}return s}function u_(e){return e.replace(/[\11\12\14\15\40]/g,"/")}var g_,p_=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},m_=function(e,t){return function(i,o){t(i,o,e)}};function __(e){return"suggest-aria-id:".concat(e)}const f_=(0,ys.q5)("suggest-more-info",$.l.chevronRight,ne.NC("suggestMoreInfoIcon","Icon for more information in the suggest widget.")),v_=new((g_=class{extract(e,t){if(e.textLabel.match(g_._regexStrict))return t[0]=e.textLabel,!0;if(e.completion.detail&&e.completion.detail.match(g_._regexStrict))return t[0]=e.completion.detail,!0;if(e.completion.documentation){const i="string"===typeof e.completion.documentation?e.completion.documentation:e.completion.documentation.value,o=g_._regexRelaxed.exec(i);if(o&&(0===o.index||o.index+o[0].length===i.length))return t[0]=o[0],!0}return!1}})._regexRelaxed=/(#([\da-fA-F]{3}){1,2}|(rgb|hsl)a\(\s*(\d{1,3}%?\s*,\s*){3}(1|0?\.\d+)\)|(rgb|hsl)\(\s*\d{1,3}%?(\s*,\s*\d{1,3}%?){2}\s*\))/,g_._regexStrict=new RegExp("^".concat(g_._regexRelaxed.source,"$"),"i"),g_);let b_=class{constructor(e,t,i,o){this._editor=e,this._modelService=t,this._languageService=i,this._themeService=o,this._onDidToggleDetails=new ui.Q5,this.onDidToggleDetails=this._onDidToggleDetails.event,this.templateId="suggestion"}dispose(){this._onDidToggleDetails.dispose()}renderTemplate(e){const t=new Fe.SL,i=e;i.classList.add("show-file-icons");const o=(0,X.R3)(e,(0,X.$)(".icon")),n=(0,X.R3)(o,(0,X.$)("span.colorspan")),s=(0,X.R3)(e,(0,X.$)(".contents")),r=(0,X.R3)(s,(0,X.$)(".main")),a=(0,X.R3)(r,(0,X.$)(".icon-label.codicon")),l=(0,X.R3)(r,(0,X.$)("span.left")),d=(0,X.R3)(r,(0,X.$)("span.right")),c=new Or.g(l,{supportHighlights:!0,supportIcons:!0});t.add(c);const h=(0,X.R3)(l,(0,X.$)("span.signature-label")),u=(0,X.R3)(l,(0,X.$)("span.qualifier-label")),g=(0,X.R3)(d,(0,X.$)("span.details-label")),p=(0,X.R3)(d,(0,X.$)("span.readMore"+oi.k.asCSSSelector(f_)));p.title=ne.NC("readMore","Read More");return{root:i,left:l,right:d,icon:o,colorspan:n,iconLabel:c,iconContainer:a,parametersLabel:h,qualifierLabel:u,detailsLabel:g,readMore:p,disposables:t,configureFont:()=>{const e=this._editor.getOptions(),t=e.get(50),n=t.getMassagedFontFamily(),s=t.fontFeatureSettings,a=e.get(119)||t.fontSize,l=e.get(120)||t.lineHeight,d=t.fontWeight,c=t.letterSpacing,h="".concat(a,"px"),u="".concat(l,"px"),g="".concat(c,"px");i.style.fontSize=h,i.style.fontWeight=d,i.style.letterSpacing=g,r.style.fontFamily=n,r.style.fontFeatureSettings=s,r.style.lineHeight=u,o.style.height=u,o.style.width=u,p.style.height=u,p.style.width=u}}}renderElement(e,t,i){i.configureFont();const{completion:o}=e;i.root.id=__(t),i.colorspan.style.backgroundColor="";const n={labelEscapeNewLines:!0,matches:(0,Fr.mB)(e.score)},s=[];if(19===o.kind&&v_.extract(e,s))i.icon.className="icon customcolor",i.iconContainer.className="icon hide",i.colorspan.style.backgroundColor=s[0];else if(20===o.kind&&this._themeService.getFileIconTheme().hasFileIcons){i.icon.className="icon hide",i.iconContainer.className="icon hide";const t=h_(this._modelService,this._languageService,_t.o.from({scheme:"fake",path:e.textLabel}),d_.FILE),s=h_(this._modelService,this._languageService,_t.o.from({scheme:"fake",path:o.detail}),d_.FILE);n.extraClasses=t.length>s.length?t:s}else 23===o.kind&&this._themeService.getFileIconTheme().hasFolderIcons?(i.icon.className="icon hide",i.iconContainer.className="icon hide",n.extraClasses=[h_(this._modelService,this._languageService,_t.o.from({scheme:"fake",path:e.textLabel}),d_.FOLDER),h_(this._modelService,this._languageService,_t.o.from({scheme:"fake",path:o.detail}),d_.FOLDER)].flat()):(i.icon.className="icon hide",i.iconContainer.className="",i.iconContainer.classList.add("suggest-icon",...oi.k.asClassNameArray(Lt.gX.toIcon(o.kind))));o.tags&&o.tags.indexOf(1)>=0&&(n.extraClasses=(n.extraClasses||[]).concat(["deprecated"]),n.matches=[]),i.iconLabel.setLabel(e.textLabel,void 0,n),"string"===typeof o.label?(i.parametersLabel.textContent="",i.detailsLabel.textContent=C_(o.detail||""),i.root.classList.add("string-label")):(i.parametersLabel.textContent=C_(o.label.detail||""),i.detailsLabel.textContent=C_(o.label.description||""),i.root.classList.remove("string-label")),this._editor.getOption(118).showInlineDetails?(0,X.$Z)(i.detailsLabel):(0,X.Cp)(i.detailsLabel),r_(e)?(i.right.classList.add("can-expand-details"),(0,X.$Z)(i.readMore),i.readMore.onmousedown=e=>{e.stopPropagation(),e.preventDefault()},i.readMore.onclick=e=>{e.stopPropagation(),e.preventDefault(),this._onDidToggleDetails.fire()}):(i.right.classList.remove("can-expand-details"),(0,X.Cp)(i.readMore),i.readMore.onmousedown=null,i.readMore.onclick=null)}disposeTemplate(e){e.disposables.dispose()}};function C_(e){return e.replace(/\r\n|\r|\n/g,"")}b_=p_([m_(1,$i.q),m_(2,Us.O),m_(3,Ue.XE)],b_);var S_,y_=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},w_=function(e,t){return function(i,o){t(i,o,e)}};(0,ze.P6G)("editorSuggestWidget.background",{dark:ze.D0T,light:ze.D0T,hcDark:ze.D0T,hcLight:ze.D0T},ne.NC("editorSuggestWidgetBackground","Background color of the suggest widget.")),(0,ze.P6G)("editorSuggestWidget.border",{dark:ze.D1_,light:ze.D1_,hcDark:ze.D1_,hcLight:ze.D1_},ne.NC("editorSuggestWidgetBorder","Border color of the suggest widget."));const x_=(0,ze.P6G)("editorSuggestWidget.foreground",{dark:ze.NOs,light:ze.NOs,hcDark:ze.NOs,hcLight:ze.NOs},ne.NC("editorSuggestWidgetForeground","Foreground color of the suggest widget."));(0,ze.P6G)("editorSuggestWidget.selectedForeground",{dark:ze.NPS,light:ze.NPS,hcDark:ze.NPS,hcLight:ze.NPS},ne.NC("editorSuggestWidgetSelectedForeground","Foreground color of the selected entry in the suggest widget.")),(0,ze.P6G)("editorSuggestWidget.selectedIconForeground",{dark:ze.cbQ,light:ze.cbQ,hcDark:ze.cbQ,hcLight:ze.cbQ},ne.NC("editorSuggestWidgetSelectedIconForeground","Icon foreground color of the selected entry in the suggest widget."));const N_=(0,ze.P6G)("editorSuggestWidget.selectedBackground",{dark:ze.Vqd,light:ze.Vqd,hcDark:ze.Vqd,hcLight:ze.Vqd},ne.NC("editorSuggestWidgetSelectedBackground","Background color of the selected entry in the suggest widget."));(0,ze.P6G)("editorSuggestWidget.highlightForeground",{dark:ze.Gwp,light:ze.Gwp,hcDark:ze.Gwp,hcLight:ze.Gwp},ne.NC("editorSuggestWidgetHighlightForeground","Color of the match highlights in the suggest widget.")),(0,ze.P6G)("editorSuggestWidget.focusHighlightForeground",{dark:ze.PX0,light:ze.PX0,hcDark:ze.PX0,hcLight:ze.PX0},ne.NC("editorSuggestWidgetFocusHighlightForeground","Color of the match highlights in the suggest widget when an item is focused.")),(0,ze.P6G)("editorSuggestWidgetStatus.foreground",{dark:(0,ze.ZnX)(x_,.5),light:(0,ze.ZnX)(x_,.5),hcDark:(0,ze.ZnX)(x_,.5),hcLight:(0,ze.ZnX)(x_,.5)},ne.NC("editorSuggestWidgetStatusForeground","Foreground color of the suggest widget status."));class L_{constructor(e,t){this._service=e,this._key="suggestWidget.size/".concat(t.getEditorType(),"/").concat(t instanceof tr)}restore(){var e;const t=null!==(e=this._service.get(this._key,0))&&void 0!==e?e:"";try{const e=JSON.parse(t);if(X.Ro.is(e))return X.Ro.lift(e)}catch(xa){}}store(e){this._service.store(this._key,JSON.stringify(e),0,1)}reset(){this._service.remove(this._key,0)}}let k_=S_=class{constructor(e,t,i,o,n){this.editor=e,this._storageService=t,this._state=0,this._isAuto=!1,this._pendingLayout=new Fe.XK,this._pendingShowDetails=new Fe.XK,this._ignoreFocusEvents=!1,this._forceRenderingAbove=!1,this._explainMode=!1,this._showTimeout=new Oe._F,this._disposables=new Fe.SL,this._onDidSelect=new ui.K3,this._onDidFocus=new ui.K3,this._onDidHide=new ui.Q5,this._onDidShow=new ui.Q5,this.onDidSelect=this._onDidSelect.event,this.onDidFocus=this._onDidFocus.event,this.onDidHide=this._onDidHide.event,this.onDidShow=this._onDidShow.event,this._onDetailsKeydown=new ui.Q5,this.onDetailsKeyDown=this._onDetailsKeydown.event,this.element=new Za,this.element.domNode.classList.add("editor-widget","suggest-widget"),this._contentWidget=new D_(this,e),this._persistedSize=new L_(t,e);class s{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this.persistedSize=e,this.currentSize=t,this.persistHeight=i,this.persistWidth=o}}let r;this._disposables.add(this.element.onDidWillResize((()=>{this._contentWidget.lockPreference(),r=new s(this._persistedSize.restore(),this.element.size)}))),this._disposables.add(this.element.onDidResize((e=>{var t,i,o,n;if(this._resize(e.dimension.width,e.dimension.height),r&&(r.persistHeight=r.persistHeight||!!e.north||!!e.south,r.persistWidth=r.persistWidth||!!e.east||!!e.west),e.done){if(r){const{itemHeight:e,defaultSize:s}=this.getLayoutInfo(),a=Math.round(e/2);let{width:l,height:d}=this.element.size;(!r.persistHeight||Math.abs(r.currentSize.height-d)<=a)&&(d=null!==(i=null===(t=r.persistedSize)||void 0===t?void 0:t.height)&&void 0!==i?i:s.height),(!r.persistWidth||Math.abs(r.currentSize.width-l)<=a)&&(l=null!==(n=null===(o=r.persistedSize)||void 0===o?void 0:o.width)&&void 0!==n?n:s.width),this._persistedSize.store(new X.Ro(l,d))}this._contentWidget.unlockPreference(),r=void 0}}))),this._messageElement=X.R3(this.element.domNode,X.$(".message")),this._listElement=X.R3(this.element.domNode,X.$(".tree"));const a=this._disposables.add(n.createInstance(a_,this.editor));a.onDidClose(this.toggleDetails,this,this._disposables),this._details=new l_(a,this.editor);const l=()=>this.element.domNode.classList.toggle("no-icons",!this.editor.getOption(118).showIcons);l();const d=n.createInstance(b_,this.editor);this._disposables.add(d),this._disposables.add(d.onDidToggleDetails((()=>this.toggleDetails()))),this._list=new Oo.aV("SuggestWidget",this._listElement,{getHeight:e=>this.getLayoutInfo().itemHeight,getTemplateId:e=>"suggestion"},[d],{alwaysConsumeMouseWheel:!0,useShadows:!1,mouseSupport:!1,multipleSelectionSupport:!1,accessibilityProvider:{getRole:()=>"option",getWidgetAriaLabel:()=>ne.NC("suggest","Suggest"),getWidgetRole:()=>"listbox",getAriaLabel:e=>{let t=e.textLabel;if("string"!==typeof e.completion.label){const{detail:i,description:o}=e.completion.label;i&&o?t=ne.NC("label.full","{0} {1}, {2}",t,i,o):i?t=ne.NC("label.detail","{0} {1}",t,i):o&&(t=ne.NC("label.desc","{0}, {1}",t,o))}if(!e.isResolved||!this._isDetailsVisible())return t;const{documentation:i,detail:o}=e.completion,n=ii.WU("{0}{1}",o||"",i?"string"===typeof i?i:i.value:"");return ne.NC("ariaCurrenttSuggestionReadDetails","{0}, docs: {1}",t,n)}}}),this._list.style((0,Fo.TU)({listInactiveFocusBackground:N_,listInactiveFocusOutline:ze.xL1})),this._status=n.createInstance(o_,this.element.domNode,Fp);const c=()=>this.element.domNode.classList.toggle("with-status-bar",this.editor.getOption(118).showStatusBar);c(),this._disposables.add(o.onDidColorThemeChange((e=>this._onThemeChange(e)))),this._onThemeChange(o.getColorTheme()),this._disposables.add(this._list.onMouseDown((e=>this._onListMouseDownOrTap(e)))),this._disposables.add(this._list.onTap((e=>this._onListMouseDownOrTap(e)))),this._disposables.add(this._list.onDidChangeSelection((e=>this._onListSelection(e)))),this._disposables.add(this._list.onDidChangeFocus((e=>this._onListFocus(e)))),this._disposables.add(this.editor.onDidChangeCursorSelection((()=>this._onCursorSelectionChanged()))),this._disposables.add(this.editor.onDidChangeConfiguration((e=>{e.hasChanged(118)&&(c(),l()),this._completionModel&&(e.hasChanged(50)||e.hasChanged(119)||e.hasChanged(120))&&this._list.splice(0,this._list.length,this._completionModel.items)}))),this._ctxSuggestWidgetVisible=Op.Visible.bindTo(i),this._ctxSuggestWidgetDetailsVisible=Op.DetailsVisible.bindTo(i),this._ctxSuggestWidgetMultipleSuggestions=Op.MultipleSuggestions.bindTo(i),this._ctxSuggestWidgetHasFocusedSuggestion=Op.HasFocusedSuggestion.bindTo(i),this._disposables.add(X.mu(this._details.widget.domNode,"keydown",(e=>{this._onDetailsKeydown.fire(e)}))),this._disposables.add(this.editor.onMouseDown((e=>this._onEditorMouseDown(e))))}dispose(){var e;this._details.widget.dispose(),this._details.dispose(),this._list.dispose(),this._status.dispose(),this._disposables.dispose(),null===(e=this._loadingTimeout)||void 0===e||e.dispose(),this._pendingLayout.dispose(),this._pendingShowDetails.dispose(),this._showTimeout.dispose(),this._contentWidget.dispose(),this.element.dispose()}_onEditorMouseDown(e){this._details.widget.domNode.contains(e.target.element)?this._details.widget.domNode.focus():this.element.domNode.contains(e.target.element)&&this.editor.focus()}_onCursorSelectionChanged(){0!==this._state&&this._contentWidget.layout()}_onListMouseDownOrTap(e){"undefined"!==typeof e.element&&"undefined"!==typeof e.index&&(e.browserEvent.preventDefault(),e.browserEvent.stopPropagation(),this._select(e.element,e.index))}_onListSelection(e){e.elements.length&&this._select(e.elements[0],e.indexes[0])}_select(e,t){const i=this._completionModel;i&&(this._onDidSelect.fire({item:e,index:t,model:i}),this.editor.focus())}_onThemeChange(e){this._details.widget.borderWidth=(0,nn.c3)(e.type)?2:1}_onListFocus(e){var t;if(this._ignoreFocusEvents)return;if(!e.elements.length)return this._currentSuggestionDetails&&(this._currentSuggestionDetails.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=void 0),this.editor.setAriaOptions({activeDescendant:void 0}),void this._ctxSuggestWidgetHasFocusedSuggestion.set(!1);if(!this._completionModel)return;this._ctxSuggestWidgetHasFocusedSuggestion.set(!0);const i=e.elements[0],o=e.indexes[0];i!==this._focusedItem&&(null===(t=this._currentSuggestionDetails)||void 0===t||t.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=i,this._list.reveal(o),this._currentSuggestionDetails=(0,Oe.PG)((async e=>{const t=(0,Oe.Vg)((()=>{this._isDetailsVisible()&&this.showDetails(!0)}),250),o=e.onCancellationRequested((()=>t.dispose()));try{return await i.resolve(e)}finally{t.dispose(),o.dispose()}})),this._currentSuggestionDetails.then((()=>{o>=this._list.length||i!==this._list.element(o)||(this._ignoreFocusEvents=!0,this._list.splice(o,1,[i]),this._list.setFocus([o]),this._ignoreFocusEvents=!1,this._isDetailsVisible()?this.showDetails(!1):this.element.domNode.classList.remove("docs-side"),this.editor.setAriaOptions({activeDescendant:__(o)}))})).catch(Ji.dL)),this._onDidFocus.fire({item:i,index:o,model:this._completionModel})}_setState(e){if(this._state!==e)switch(this._state=e,this.element.domNode.classList.toggle("frozen",4===e),this.element.domNode.classList.remove("message"),e){case 0:X.Cp(this._messageElement,this._listElement,this._status.element),this._details.hide(!0),this._status.hide(),this._contentWidget.hide(),this._ctxSuggestWidgetVisible.reset(),this._ctxSuggestWidgetMultipleSuggestions.reset(),this._ctxSuggestWidgetHasFocusedSuggestion.reset(),this._showTimeout.cancel(),this.element.domNode.classList.remove("visible"),this._list.splice(0,this._list.length),this._focusedItem=void 0,this._cappedHeight=void 0,this._explainMode=!1;break;case 1:this.element.domNode.classList.add("message"),this._messageElement.textContent=S_.LOADING_MESSAGE,X.Cp(this._listElement,this._status.element),X.$Z(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,(0,xe.i7)(S_.LOADING_MESSAGE);break;case 2:this.element.domNode.classList.add("message"),this._messageElement.textContent=S_.NO_SUGGESTIONS_MESSAGE,X.Cp(this._listElement,this._status.element),X.$Z(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,(0,xe.i7)(S_.NO_SUGGESTIONS_MESSAGE);break;case 3:case 4:X.Cp(this._messageElement),X.$Z(this._listElement,this._status.element),this._show();break;case 5:X.Cp(this._messageElement),X.$Z(this._listElement,this._status.element),this._details.show(),this._show()}}_show(){this._status.show(),this._contentWidget.show(),this._layout(this._persistedSize.restore()),this._ctxSuggestWidgetVisible.set(!0),this._showTimeout.cancelAndSet((()=>{this.element.domNode.classList.add("visible"),this._onDidShow.fire(this)}),100)}showTriggered(e,t){0===this._state&&(this._contentWidget.setPosition(this.editor.getPosition()),this._isAuto=!!e,this._isAuto||(this._loadingTimeout=(0,Oe.Vg)((()=>this._setState(1)),t)))}showSuggestions(e,t,i,o,n){var s,r;if(this._contentWidget.setPosition(this.editor.getPosition()),null===(s=this._loadingTimeout)||void 0===s||s.dispose(),null===(r=this._currentSuggestionDetails)||void 0===r||r.cancel(),this._currentSuggestionDetails=void 0,this._completionModel!==e&&(this._completionModel=e),i&&2!==this._state&&0!==this._state)return void this._setState(4);const a=this._completionModel.items.length,l=0===a;if(this._ctxSuggestWidgetMultipleSuggestions.set(a>1),l)return this._setState(o?0:2),void(this._completionModel=void 0);this._focusedItem=void 0,this._onDidFocus.pause(),this._onDidSelect.pause();try{this._list.splice(0,this._list.length,this._completionModel.items),this._setState(i?4:3),this._list.reveal(t,0),this._list.setFocus(n?[]:[t])}finally{this._onDidFocus.resume(),this._onDidSelect.resume()}this._pendingLayout.value=X.lI(X.Jj(this.element.domNode),(()=>{this._pendingLayout.clear(),this._layout(this.element.size),this._details.widget.domNode.classList.remove("focused")}))}focusSelected(){this._list.length>0&&this._list.setFocus([0])}selectNextPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageDown(),!0;case 1:return!this._isAuto;default:return this._list.focusNextPage(),!0}}selectNext(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusNext(1,!0),!0}}selectLast(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollBottom(),!0;case 1:return!this._isAuto;default:return this._list.focusLast(),!0}}selectPreviousPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageUp(),!0;case 1:return!this._isAuto;default:return this._list.focusPreviousPage(),!0}}selectPrevious(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusPrevious(1,!0),!1}}selectFirst(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollTop(),!0;case 1:return!this._isAuto;default:return this._list.focusFirst(),!0}}getFocusedItem(){if(0!==this._state&&2!==this._state&&1!==this._state&&this._completionModel&&this._list.getFocus().length>0)return{item:this._list.getFocusedElements()[0],index:this._list.getFocus()[0],model:this._completionModel}}toggleDetailsFocus(){5===this._state?(this._setState(3),this._details.widget.domNode.classList.remove("focused")):3===this._state&&this._isDetailsVisible()&&(this._setState(5),this._details.widget.domNode.classList.add("focused"))}toggleDetails(){this._isDetailsVisible()?(this._pendingShowDetails.clear(),this._ctxSuggestWidgetDetailsVisible.set(!1),this._setDetailsVisible(!1),this._details.hide(),this.element.domNode.classList.remove("shows-details")):!r_(this._list.getFocusedElements()[0])&&!this._explainMode||3!==this._state&&5!==this._state&&4!==this._state||(this._ctxSuggestWidgetDetailsVisible.set(!0),this._setDetailsVisible(!0),this.showDetails(!1))}showDetails(e){this._pendingShowDetails.value=X.lI(X.Jj(this.element.domNode),(()=>{this._pendingShowDetails.clear(),this._details.show(),e?this._details.widget.renderLoading():this._details.widget.renderItem(this._list.getFocusedElements()[0],this._explainMode),this._details.widget.isEmpty?this._details.hide():(this._positionDetails(),this.element.domNode.classList.add("shows-details")),this.editor.focus()}))}toggleExplainMode(){this._list.getFocusedElements()[0]&&(this._explainMode=!this._explainMode,this._isDetailsVisible()?this.showDetails(!1):this.toggleDetails())}resetPersistedSize(){this._persistedSize.reset()}hideWidget(){var e;this._pendingLayout.clear(),this._pendingShowDetails.clear(),null===(e=this._loadingTimeout)||void 0===e||e.dispose(),this._setState(0),this._onDidHide.fire(this),this.element.clearSashHoverState();const t=this._persistedSize.restore(),i=Math.ceil(4.3*this.getLayoutInfo().itemHeight);t&&t.height<i&&this._persistedSize.store(t.with(void 0,i))}isFrozen(){return 4===this._state}_afterRender(e){null!==e?2!==this._state&&1!==this._state&&(this._isDetailsVisible()&&!this._details.widget.isEmpty&&this._details.show(),this._positionDetails()):this._isDetailsVisible()&&this._details.hide()}_layout(e){var t,i,o;if(!this.editor.hasModel())return;if(!this.editor.getDomNode())return;const n=X.D6(this.element.domNode.ownerDocument.body),s=this.getLayoutInfo();e||(e=s.defaultSize);let r=e.height,a=e.width;if(this._status.element.style.height="".concat(s.itemHeight,"px"),2===this._state||1===this._state)r=s.itemHeight+s.borderHeight,a=s.defaultSize.width/2,this.element.enableSashes(!1,!1,!1,!1),this.element.minSize=this.element.maxSize=new X.Ro(a,r),this._contentWidget.setPreference(2);else{const l=n.width-s.borderHeight-2*s.horizontalPadding;a>l&&(a=l);const d=this._completionModel?this._completionModel.stats.pLabelLen*s.typicalHalfwidthCharacterWidth:a,c=s.statusBarHeight+this._list.contentHeight+s.borderHeight,h=s.itemHeight+s.statusBarHeight,u=X.i(this.editor.getDomNode()),g=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),p=u.top+g.top+g.height,m=Math.min(n.height-p-s.verticalPadding,c),_=u.top+g.top-s.verticalPadding,f=Math.min(_,c);let v=Math.min(Math.max(f,m)+s.borderHeight,c);r===(null===(t=this._cappedHeight)||void 0===t?void 0:t.capped)&&(r=this._cappedHeight.wanted),r<h&&(r=h),r>v&&(r=v);const b=150;r>m||this._forceRenderingAbove&&_>b?(this._contentWidget.setPreference(1),this.element.enableSashes(!0,!0,!1,!1),v=f):(this._contentWidget.setPreference(2),this.element.enableSashes(!1,!0,!0,!1),v=m),this.element.preferredSize=new X.Ro(d,s.defaultSize.height),this.element.maxSize=new X.Ro(l,v),this.element.minSize=new X.Ro(220,h),this._cappedHeight=r===c?{wanted:null!==(o=null===(i=this._cappedHeight)||void 0===i?void 0:i.wanted)&&void 0!==o?o:e.height,capped:r}:void 0}this._resize(a,r)}_resize(e,t){const{width:i,height:o}=this.element.maxSize;e=Math.min(i,e),t=Math.min(o,t);const{statusBarHeight:n}=this.getLayoutInfo();this._list.layout(t-n,e),this._listElement.style.height="".concat(t-n,"px"),this.element.layout(t,e),this._contentWidget.layout(),this._positionDetails()}_positionDetails(){var e;this._isDetailsVisible()&&this._details.placeAtAnchor(this.element.domNode,2===(null===(e=this._contentWidget.getPosition())||void 0===e?void 0:e.preference[0]))}getLayoutInfo(){const e=this.editor.getOption(50),t=(0,Xm.uZ)(this.editor.getOption(120)||e.lineHeight,8,1e3),i=this.editor.getOption(118).showStatusBar&&2!==this._state&&1!==this._state?t:0,o=this._details.widget.borderWidth,n=2*o;return{itemHeight:t,statusBarHeight:i,borderWidth:o,borderHeight:n,typicalHalfwidthCharacterWidth:e.typicalHalfwidthCharacterWidth,verticalPadding:22,horizontalPadding:14,defaultSize:new X.Ro(430,i+12*t+n)}}_isDetailsVisible(){return this._storageService.getBoolean("expandSuggestionDocs",0,!1)}_setDetailsVisible(e){this._storageService.store("expandSuggestionDocs",e,0,0)}forceRenderingAbove(){this._forceRenderingAbove||(this._forceRenderingAbove=!0,this._layout(this._persistedSize.restore()))}stopForceRenderingAbove(){this._forceRenderingAbove=!1}};k_.LOADING_MESSAGE=ne.NC("suggestWidget.loading","Loading..."),k_.NO_SUGGESTIONS_MESSAGE=ne.NC("suggestWidget.noSuggestions","No suggestions."),k_=S_=y_([w_(1,Mn.Uy),w_(2,ae.i6),w_(3,Ue.XE),w_(4,ni.TG)],k_);class D_{constructor(e,t){this._widget=e,this._editor=t,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._preferenceLocked=!1,this._added=!1,this._hidden=!1}dispose(){this._added&&(this._added=!1,this._editor.removeContentWidget(this))}getId(){return"editor.widget.suggestWidget"}getDomNode(){return this._widget.element.domNode}show(){this._hidden=!1,this._added||(this._added=!0,this._editor.addContentWidget(this))}hide(){this._hidden||(this._hidden=!0,this.layout())}layout(){this._editor.layoutContentWidget(this)}getPosition(){return!this._hidden&&this._position&&this._preference?{position:this._position,preference:[this._preference]}:null}beforeRender(){const{height:e,width:t}=this._widget.element.size,{borderWidth:i,horizontalPadding:o}=this._widget.getLayoutInfo();return new X.Ro(t+2*i+o,e+2*i)}afterRender(e){this._widget._afterRender(e)}setPreference(e){this._preferenceLocked||(this._preference=e)}lockPreference(){this._preferenceLocked=!0}unlockPreference(){this._preferenceLocked=!1}setPosition(e){this._position=e}}var I_,R_=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},P_=function(e,t){return function(i,o){t(i,o,e)}};class M_{constructor(e,t){this._model=e,this._position=t,this._decorationOptions=Be.qx.register({description:"suggest-line-suffix",stickiness:1});if(e.getLineMaxColumn(t.lineNumber)!==t.column){const i=e.getOffsetAt(t),o=e.getPositionAt(i+1);e.changeDecorations((e=>{this._marker&&e.removeDecoration(this._marker),this._marker=e.addDecoration(He.e.fromPositions(t,o),this._decorationOptions)}))}}dispose(){this._marker&&!this._model.isDisposed()&&this._model.changeDecorations((e=>{e.removeDecoration(this._marker),this._marker=void 0}))}delta(e){if(this._model.isDisposed()||this._position.lineNumber!==e.lineNumber)return 0;if(this._marker){const t=this._model.getDecorationRange(this._marker);return this._model.getOffsetAt(t.getStartPosition())-this._model.getOffsetAt(e)}return this._model.getLineMaxColumn(e.lineNumber)-e.column}}let T_=I_=class{static get(e){return e.getContribution(I_.ID)}constructor(e,t,i,o,n,s,r){this._memoryService=t,this._commandService=i,this._contextKeyService=o,this._instantiationService=n,this._logService=s,this._telemetryService=r,this._lineSuffix=new Fe.XK,this._toDispose=new Fe.SL,this._selectors=new E_((e=>e.priority)),this._onWillInsertSuggestItem=new ui.Q5,this.onWillInsertSuggestItem=this._onWillInsertSuggestItem.event,this.editor=e,this.model=n.createInstance(Jm,this.editor),this._selectors.register({priority:0,select:(e,t,i)=>this._memoryService.select(e,t,i)});const a=Op.InsertMode.bindTo(o);a.set(e.getOption(118).insertMode),this._toDispose.add(this.model.onDidTrigger((()=>a.set(e.getOption(118).insertMode)))),this.widget=this._toDispose.add(new X.vx((0,X.Jj)(e.getDomNode()),(()=>{const e=this._instantiationService.createInstance(k_,this.editor);this._toDispose.add(e),this._toDispose.add(e.onDidSelect((e=>this._insertSuggestion(e,0)),this));const t=new Bm(this.editor,e,this.model,(e=>this._insertSuggestion(e,2)));this._toDispose.add(t);const i=Op.MakesTextEdit.bindTo(this._contextKeyService),o=Op.HasInsertAndReplaceRange.bindTo(this._contextKeyService),n=Op.CanResolve.bindTo(this._contextKeyService);return this._toDispose.add((0,Fe.OF)((()=>{i.reset(),o.reset(),n.reset()}))),this._toDispose.add(e.onDidFocus((e=>{let{item:t}=e;const s=this.editor.getPosition(),r=t.editStart.column,a=s.column;let l=!0;if("smart"===this.editor.getOption(1)&&2===this.model.state&&!t.completion.additionalTextEdits&&!(4&t.completion.insertTextRules)&&a-r===t.completion.insertText.length){l=this.editor.getModel().getValueInRange({startLineNumber:s.lineNumber,startColumn:r,endLineNumber:s.lineNumber,endColumn:a})!==t.completion.insertText}i.set(l),o.set(!We.L.equals(t.editInsertEnd,t.editReplaceEnd)),n.set(Boolean(t.provider.resolveCompletionItem)||Boolean(t.completion.documentation)||t.completion.detail!==t.completion.label)}))),this._toDispose.add(e.onDetailsKeyDown((e=>{e.toKeyCodeChord().equals(new Nm.$M(!0,!1,!1,!1,33))||it.dz&&e.toKeyCodeChord().equals(new Nm.$M(!1,!1,!1,!0,33))?e.stopPropagation():e.toKeyCodeChord().isModifierKey()||this.editor.focus()}))),e}))),this._overtypingCapturer=this._toDispose.add(new X.vx((0,X.Jj)(e.getDomNode()),(()=>this._toDispose.add(new $m(this.editor,this.model))))),this._alternatives=this._toDispose.add(new X.vx((0,X.Jj)(e.getDomNode()),(()=>this._toDispose.add(new Vm(this.editor,this._contextKeyService))))),this._toDispose.add(n.createInstance(Om,e)),this._toDispose.add(this.model.onDidTrigger((e=>{this.widget.value.showTriggered(e.auto,e.shy?250:50),this._lineSuffix.value=new M_(this.editor.getModel(),e.position)}))),this._toDispose.add(this.model.onDidSuggest((e=>{if(e.triggerOptions.shy)return;let t=-1;for(const o of this._selectors.itemsOrderedByPriorityDesc)if(t=o.select(this.editor.getModel(),this.editor.getPosition(),e.completionModel.items),-1!==t)break;if(-1===t&&(t=0),0===this.model.state)return;let i=!1;if(e.triggerOptions.auto){const t=this.editor.getOption(118);"never"===t.selectionMode||"always"===t.selectionMode?i="never"===t.selectionMode:"whenTriggerCharacter"===t.selectionMode?i=1!==e.triggerOptions.triggerKind:"whenQuickSuggestion"===t.selectionMode&&(i=1===e.triggerOptions.triggerKind&&!e.triggerOptions.refilter)}this.widget.value.showSuggestions(e.completionModel,t,e.isFrozen,e.triggerOptions.auto,i)}))),this._toDispose.add(this.model.onDidCancel((e=>{e.retrigger||this.widget.value.hideWidget()}))),this._toDispose.add(this.editor.onDidBlurEditorWidget((()=>{this.model.cancel(),this.model.clear()})));const l=Op.AcceptSuggestionsOnEnter.bindTo(o),d=()=>{const e=this.editor.getOption(1);l.set("on"===e||"smart"===e)};this._toDispose.add(this.editor.onDidChangeConfiguration((()=>d()))),d()}dispose(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose(),this._onWillInsertSuggestItem.dispose()}_insertSuggestion(e,t){if(!e||!e.item)return this._alternatives.value.reset(),this.model.cancel(),void this.model.clear();if(!this.editor.hasModel())return;const i=_m.get(this.editor);if(!i)return;this._onWillInsertSuggestItem.fire({item:e.item});const o=this.editor.getModel(),n=o.getAlternativeVersionId(),{item:s}=e,r=[],a=new Yi.A;1&t||this.editor.pushUndoStop();const l=this.getOverwriteInfo(s,Boolean(8&t));this._memoryService.memorize(o,this.editor.getPosition(),s);const d=s.isResolved;let c=-1,h=-1;if(Array.isArray(s.completion.additionalTextEdits)){this.model.cancel();const e=kn.Z.capture(this.editor);this.editor.executeEdits("suggestController.additionalTextEdits.sync",s.completion.additionalTextEdits.map((e=>{let t=He.e.lift(e.range);if(t.startLineNumber===s.position.lineNumber&&t.startColumn>s.position.column){const e=this.editor.getPosition().column-s.position.column,i=e,o=He.e.spansMultipleLines(t)?0:e;t=new He.e(t.startLineNumber,t.startColumn+i,t.endLineNumber,t.endColumn+o)}return Yd.h.replaceMove(t,e.text)}))),e.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!d){const e=new Yn.G;let i;const n=o.onDidChangeContent((e=>{if(e.isFlush)return a.cancel(),void n.dispose();for(const t of e.changes){const e=He.e.getEndPosition(t.range);i&&!We.L.isBefore(e,i)||(i=e)}})),l=t;t|=2;let d=!1;const c=this.editor.onWillType((()=>{c.dispose(),d=!0,2&l||this.editor.pushUndoStop()}));r.push(s.resolve(a.token).then((()=>{if(!s.completion.additionalTextEdits||a.token.isCancellationRequested)return;if(i&&s.completion.additionalTextEdits.some((e=>We.L.isBefore(i,He.e.getStartPosition(e.range)))))return!1;d&&this.editor.pushUndoStop();const e=kn.Z.capture(this.editor);return this.editor.executeEdits("suggestController.additionalTextEdits.async",s.completion.additionalTextEdits.map((e=>Yd.h.replaceMove(He.e.lift(e.range),e.text)))),e.restoreRelativeVerticalPositionOfCursor(this.editor),!d&&2&l||this.editor.pushUndoStop(),!0})).then((t=>{this._logService.trace("[suggest] async resolving of edits DONE (ms, applied?)",e.elapsed(),t),h=!0===t?1:!1===t?0:-2})).finally((()=>{n.dispose(),c.dispose()})))}let{insertText:u}=s.completion;if(4&s.completion.insertTextRules||(u=$t.escape(u)),this.model.cancel(),i.insert(u,{overwriteBefore:l.overwriteBefore,overwriteAfter:l.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(1&s.completion.insertTextRules),clipboardText:e.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value}),2&t||this.editor.pushUndoStop(),s.completion.command)if(s.completion.command.id===A_.id)this.model.trigger({auto:!0,retrigger:!0});else{const e=new Yn.G;r.push(this._commandService.executeCommand(s.completion.command.id,...s.completion.command.arguments?[...s.completion.command.arguments]:[]).catch((e=>{s.completion.extensionId?(0,Ji.Cp)(e):(0,Ji.dL)(e)})).finally((()=>{c=e.elapsed()})))}4&t&&this._alternatives.value.set(e,(e=>{for(a.cancel();o.canUndo();){n!==o.getAlternativeVersionId()&&o.undo(),this._insertSuggestion(e,3|(8&t?8:0));break}})),this._alertCompletionItem(s),Promise.all(r).finally((()=>{this._reportSuggestionAcceptedTelemetry(s,o,d,c,h),this.model.clear(),a.dispose()}))}_reportSuggestionAcceptedTelemetry(e,t,i,o,n){var s,r,a;0!==Math.floor(100*Math.random())&&this._telemetryService.publicLog2("suggest.acceptedSuggestion",{extensionId:null!==(r=null===(s=e.extensionId)||void 0===s?void 0:s.value)&&void 0!==r?r:"unknown",providerId:null!==(a=e.provider._debugDisplayName)&&void 0!==a?a:"unknown",kind:e.completion.kind,basenameHash:(0,Tu.vp)((0,It.EZ)(t.uri)).toString(16),languageId:t.getLanguageId(),fileExtension:(0,It.DZ)(t.uri),resolveInfo:e.provider.resolveCompletionItem?i?1:0:-1,resolveDuration:e.resolveDuration,commandDuration:o,additionalEditsAsync:n})}getOverwriteInfo(e,t){(0,Dn.p_)(this.editor.hasModel());let i="replace"===this.editor.getOption(118).insertMode;t&&(i=!i);const o=e.position.column-e.editStart.column,n=(i?e.editReplaceEnd.column:e.editInsertEnd.column)-e.position.column;return{overwriteBefore:o+(this.editor.getPosition().column-e.position.column),overwriteAfter:n+(this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0)}}_alertCompletionItem(e){if((0,nt.Of)(e.completion.additionalTextEdits)){const t=ne.NC("aria.alert.snippet","Accepting '{0}' made {1} additional edits",e.textLabel,e.completion.additionalTextEdits.length);(0,xe.Z9)(t)}}triggerSuggest(e,t,i){this.editor.hasModel()&&(this.model.trigger({auto:null!==t&&void 0!==t&&t,completionOptions:{providerFilter:e,kindFilter:i?new Set:void 0}}),this.editor.revealPosition(this.editor.getPosition(),0),this.editor.focus())}triggerSuggestAndAcceptBest(e){if(!this.editor.hasModel())return;const t=this.editor.getPosition(),i=()=>{t.equals(this.editor.getPosition())&&this._commandService.executeCommand(e.fallback)},o=e=>{if(4&e.completion.insertTextRules||e.completion.additionalTextEdits)return!0;const t=this.editor.getPosition(),i=e.editStart.column,o=t.column;if(o-i!==e.completion.insertText.length)return!0;return this.editor.getModel().getValueInRange({startLineNumber:t.lineNumber,startColumn:i,endLineNumber:t.lineNumber,endColumn:o})!==e.completion.insertText};ui.ju.once(this.model.onDidTrigger)((e=>{const t=[];ui.ju.any(this.model.onDidTrigger,this.model.onDidCancel)((()=>{(0,Fe.B9)(t),i()}),void 0,t),this.model.onDidSuggest((e=>{let{completionModel:n}=e;if((0,Fe.B9)(t),0===n.items.length)return void i();const s=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),n.items),r=n.items[s];o(r)?(this.editor.pushUndoStop(),this._insertSuggestion({index:s,item:r,model:n},7)):i()}),void 0,t)})),this.model.trigger({auto:!1,shy:!0}),this.editor.revealPosition(t,0),this.editor.focus()}acceptSelectedSuggestion(e,t){const i=this.widget.value.getFocusedItem();let o=0;e&&(o|=4),t&&(o|=8),this._insertSuggestion(i,o)}acceptNextSuggestion(){this._alternatives.value.next()}acceptPrevSuggestion(){this._alternatives.value.prev()}cancelSuggestWidget(){this.model.cancel(),this.model.clear(),this.widget.value.hideWidget()}focusSuggestion(){this.widget.value.focusSelected()}selectNextSuggestion(){this.widget.value.selectNext()}selectNextPageSuggestion(){this.widget.value.selectNextPage()}selectLastSuggestion(){this.widget.value.selectLast()}selectPrevSuggestion(){this.widget.value.selectPrevious()}selectPrevPageSuggestion(){this.widget.value.selectPreviousPage()}selectFirstSuggestion(){this.widget.value.selectFirst()}toggleSuggestionDetails(){this.widget.value.toggleDetails()}toggleExplainMode(){this.widget.value.toggleExplainMode()}toggleSuggestionFocus(){this.widget.value.toggleDetailsFocus()}resetWidgetSize(){this.widget.value.resetPersistedSize()}forceRenderingAbove(){this.widget.value.forceRenderingAbove()}stopForceRenderingAbove(){this.widget.isInitialized&&this.widget.value.stopForceRenderingAbove()}registerSelector(e){return this._selectors.register(e)}};T_.ID="editor.contrib.suggestController",T_=I_=R_([P_(1,Mm),P_(2,ye.H),P_(3,ae.i6),P_(4,ni.TG),P_(5,qp.VZ),P_(6,eo.b)],T_);class E_{constructor(e){this.prioritySelector=e,this._items=new Array}register(e){if(-1!==this._items.indexOf(e))throw new Error("Value is already registered");return this._items.push(e),this._items.sort(((e,t)=>this.prioritySelector(t)-this.prioritySelector(e))),{dispose:()=>{const t=this._items.indexOf(e);t>=0&&this._items.splice(t,1)}}}get itemsOrderedByPriorityDesc(){return this._items}}class A_ extends ee.R6{constructor(){super({id:A_.id,label:ne.NC("suggest.trigger.label","Trigger Suggest"),alias:"Trigger Suggest",precondition:ae.Ao.and(oe.u.writable,oe.u.hasCompletionItemProvider,Op.Visible.toNegated()),kbOpts:{kbExpr:oe.u.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[521,2087]},weight:100}})}run(e,t,i){const o=T_.get(t);if(!o)return;let n;i&&"object"===typeof i&&!0===i.auto&&(n=!0),o.triggerSuggest(void 0,n,void 0)}}A_.id="editor.action.triggerSuggest",(0,ee._K)(T_.ID,T_,2),(0,ee.Qr)(A_);const O_=190,F_=ee._l.bindToContribution(T_.get);(0,ee.fK)(new F_({id:"acceptSelectedSuggestion",precondition:ae.Ao.and(Op.Visible,Op.HasFocusedSuggestion),handler(e){e.acceptSelectedSuggestion(!0,!1)},kbOpts:[{primary:2,kbExpr:ae.Ao.and(Op.Visible,oe.u.textInputFocus),weight:O_},{primary:3,kbExpr:ae.Ao.and(Op.Visible,oe.u.textInputFocus,Op.AcceptSuggestionsOnEnter,Op.MakesTextEdit),weight:O_}],menuOpts:[{menuId:Fp,title:ne.NC("accept.insert","Insert"),group:"left",order:1,when:Op.HasInsertAndReplaceRange.toNegated()},{menuId:Fp,title:ne.NC("accept.insert","Insert"),group:"left",order:1,when:ae.Ao.and(Op.HasInsertAndReplaceRange,Op.InsertMode.isEqualTo("insert"))},{menuId:Fp,title:ne.NC("accept.replace","Replace"),group:"left",order:1,when:ae.Ao.and(Op.HasInsertAndReplaceRange,Op.InsertMode.isEqualTo("replace"))}]})),(0,ee.fK)(new F_({id:"acceptAlternativeSelectedSuggestion",precondition:ae.Ao.and(Op.Visible,oe.u.textInputFocus,Op.HasFocusedSuggestion),kbOpts:{weight:O_,kbExpr:oe.u.textInputFocus,primary:1027,secondary:[1026]},handler(e){e.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:Fp,group:"left",order:2,when:ae.Ao.and(Op.HasInsertAndReplaceRange,Op.InsertMode.isEqualTo("insert")),title:ne.NC("accept.replace","Replace")},{menuId:Fp,group:"left",order:2,when:ae.Ao.and(Op.HasInsertAndReplaceRange,Op.InsertMode.isEqualTo("replace")),title:ne.NC("accept.insert","Insert")}]})),ye.P.registerCommandAlias("acceptSelectedSuggestionOnEnter","acceptSelectedSuggestion"),(0,ee.fK)(new F_({id:"hideSuggestWidget",precondition:Op.Visible,handler:e=>e.cancelSuggestWidget(),kbOpts:{weight:O_,kbExpr:oe.u.textInputFocus,primary:9,secondary:[1033]}})),(0,ee.fK)(new F_({id:"selectNextSuggestion",precondition:ae.Ao.and(Op.Visible,ae.Ao.or(Op.MultipleSuggestions,Op.HasFocusedSuggestion.negate())),handler:e=>e.selectNextSuggestion(),kbOpts:{weight:O_,kbExpr:oe.u.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})),(0,ee.fK)(new F_({id:"selectNextPageSuggestion",precondition:ae.Ao.and(Op.Visible,ae.Ao.or(Op.MultipleSuggestions,Op.HasFocusedSuggestion.negate())),handler:e=>e.selectNextPageSuggestion(),kbOpts:{weight:O_,kbExpr:oe.u.textInputFocus,primary:12,secondary:[2060]}})),(0,ee.fK)(new F_({id:"selectLastSuggestion",precondition:ae.Ao.and(Op.Visible,ae.Ao.or(Op.MultipleSuggestions,Op.HasFocusedSuggestion.negate())),handler:e=>e.selectLastSuggestion()})),(0,ee.fK)(new F_({id:"selectPrevSuggestion",precondition:ae.Ao.and(Op.Visible,ae.Ao.or(Op.MultipleSuggestions,Op.HasFocusedSuggestion.negate())),handler:e=>e.selectPrevSuggestion(),kbOpts:{weight:O_,kbExpr:oe.u.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})),(0,ee.fK)(new F_({id:"selectPrevPageSuggestion",precondition:ae.Ao.and(Op.Visible,ae.Ao.or(Op.MultipleSuggestions,Op.HasFocusedSuggestion.negate())),handler:e=>e.selectPrevPageSuggestion(),kbOpts:{weight:O_,kbExpr:oe.u.textInputFocus,primary:11,secondary:[2059]}})),(0,ee.fK)(new F_({id:"selectFirstSuggestion",precondition:ae.Ao.and(Op.Visible,ae.Ao.or(Op.MultipleSuggestions,Op.HasFocusedSuggestion.negate())),handler:e=>e.selectFirstSuggestion()})),(0,ee.fK)(new F_({id:"focusSuggestion",precondition:ae.Ao.and(Op.Visible,Op.HasFocusedSuggestion.negate()),handler:e=>e.focusSuggestion(),kbOpts:{weight:O_,kbExpr:oe.u.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}}})),(0,ee.fK)(new F_({id:"focusAndAcceptSuggestion",precondition:ae.Ao.and(Op.Visible,Op.HasFocusedSuggestion.negate()),handler:e=>{e.focusSuggestion(),e.acceptSelectedSuggestion(!0,!1)}})),(0,ee.fK)(new F_({id:"toggleSuggestionDetails",precondition:ae.Ao.and(Op.Visible,Op.HasFocusedSuggestion),handler:e=>e.toggleSuggestionDetails(),kbOpts:{weight:O_,kbExpr:oe.u.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}},menuOpts:[{menuId:Fp,group:"right",order:1,when:ae.Ao.and(Op.DetailsVisible,Op.CanResolve),title:ne.NC("detail.more","show less")},{menuId:Fp,group:"right",order:1,when:ae.Ao.and(Op.DetailsVisible.toNegated(),Op.CanResolve),title:ne.NC("detail.less","show more")}]})),(0,ee.fK)(new F_({id:"toggleExplainMode",precondition:Op.Visible,handler:e=>e.toggleExplainMode(),kbOpts:{weight:100,primary:2138}})),(0,ee.fK)(new F_({id:"toggleSuggestionFocus",precondition:Op.Visible,handler:e=>e.toggleSuggestionFocus(),kbOpts:{weight:O_,kbExpr:oe.u.textInputFocus,primary:2570,mac:{primary:778}}})),(0,ee.fK)(new F_({id:"insertBestCompletion",precondition:ae.Ao.and(oe.u.textInputFocus,ae.Ao.equals("config.editor.tabCompletion","on"),Om.AtEnd,Op.Visible.toNegated(),Vm.OtherSuggestions.toNegated(),_m.InSnippetMode.toNegated()),handler:(e,t)=>{e.triggerSuggestAndAcceptBest((0,Dn.Kn)(t)?{fallback:"tab",...t}:{fallback:"tab"})},kbOpts:{weight:O_,primary:2}})),(0,ee.fK)(new F_({id:"insertNextSuggestion",precondition:ae.Ao.and(oe.u.textInputFocus,ae.Ao.equals("config.editor.tabCompletion","on"),Vm.OtherSuggestions,Op.Visible.toNegated(),_m.InSnippetMode.toNegated()),handler:e=>e.acceptNextSuggestion(),kbOpts:{weight:O_,kbExpr:oe.u.textInputFocus,primary:2}})),(0,ee.fK)(new F_({id:"insertPrevSuggestion",precondition:ae.Ao.and(oe.u.textInputFocus,ae.Ao.equals("config.editor.tabCompletion","on"),Vm.OtherSuggestions,Op.Visible.toNegated(),_m.InSnippetMode.toNegated()),handler:e=>e.acceptPrevSuggestion(),kbOpts:{weight:O_,kbExpr:oe.u.textInputFocus,primary:1026}})),(0,ee.Qr)(class extends ee.R6{constructor(){super({id:"editor.action.resetSuggestSize",label:ne.NC("suggest.reset.label","Reset Suggest Widget Size"),alias:"Reset Suggest Widget Size",precondition:void 0})}run(e,t){var i;null===(i=T_.get(t))||void 0===i||i.resetWidgetSize()}});class W_ extends Fe.JT{get selectedItem(){return this._selectedItem}constructor(e,t,i,o){super(),this.editor=e,this.suggestControllerPreselector=t,this.checkModelVersion=i,this.onWillAccept=o,this.isSuggestWidgetVisible=!1,this.isShiftKeyPressed=!1,this._isActive=!1,this._currentSuggestItemInfo=void 0,this._selectedItem=(0,dd.uh)(this,void 0),this._register(e.onKeyDown((e=>{e.shiftKey&&!this.isShiftKeyPressed&&(this.isShiftKeyPressed=!0,this.update(this._isActive))}))),this._register(e.onKeyUp((e=>{e.shiftKey&&this.isShiftKeyPressed&&(this.isShiftKeyPressed=!1,this.update(this._isActive))})));const n=T_.get(this.editor);if(n){this._register(n.registerSelector({priority:100,select:(e,t,i)=>{(0,dd.PS)((e=>this.checkModelVersion(e)));const o=this.editor.getModel();if(!o)return-1;const s=this.suggestControllerPreselector(),r=s?yp(s,o):void 0;if(!r)return-1;const a=We.L.lift(t),l=i.map(((e,t)=>{const i=yp(H_.fromSuggestion(n,o,a,e,this.isShiftKeyPressed).toSingleTextEdit(),o);return{index:t,valid:wp(r,i),prefixLength:i.text.length,suggestItem:e}})).filter((e=>e&&e.valid&&e.prefixLength>0)),d=(0,Nc.dI)(l,(0,nt.tT)((e=>e.prefixLength),nt.fv));return d?d.index:-1}}));let e=!1;const t=()=>{e||(e=!0,this._register(n.widget.value.onDidShow((()=>{this.isSuggestWidgetVisible=!0,this.update(!0)}))),this._register(n.widget.value.onDidHide((()=>{this.isSuggestWidgetVisible=!1,this.update(!1)}))),this._register(n.widget.value.onDidFocus((()=>{this.isSuggestWidgetVisible=!0,this.update(!0)}))))};this._register(ui.ju.once(n.model.onDidTrigger)((e=>{t()}))),this._register(n.onWillInsertSuggestItem((e=>{const t=this.editor.getPosition(),i=this.editor.getModel();if(!t||!i)return;const o=H_.fromSuggestion(n,i,t,e.item,this.isShiftKeyPressed);this.onWillAccept(o)})))}this.update(this._isActive)}update(e){const t=this.getSuggestItemInfo();this._isActive===e&&function(e,t){if(e===t)return!0;if(!e||!t)return!1;return e.equals(t)}(this._currentSuggestItemInfo,t)||(this._isActive=e,this._currentSuggestItemInfo=t,(0,dd.PS)((e=>{this.checkModelVersion(e),this._selectedItem.set(this._isActive?this._currentSuggestItemInfo:void 0,e)})))}getSuggestItemInfo(){const e=T_.get(this.editor);if(!e||!this.isSuggestWidgetVisible)return;const t=e.widget.value.getFocusedItem(),i=this.editor.getPosition(),o=this.editor.getModel();return t&&i&&o?H_.fromSuggestion(e,o,i,t.item,this.isShiftKeyPressed):void 0}stopForceRenderingAbove(){const e=T_.get(this.editor);null===e||void 0===e||e.stopForceRenderingAbove()}forceRenderingAbove(){const e=T_.get(this.editor);null===e||void 0===e||e.forceRenderingAbove()}}class H_{static fromSuggestion(e,t,i,o,n){let{insertText:s}=o.completion,r=!1;if(4&o.completion.insertTextRules){const e=(new $t).parse(s);e.children.length<100&&hm.adjustWhitespace(t,i,!0,e),s=e.toString(),r=!0}const a=e.getOverwriteInfo(o,n);return new H_(He.e.fromPositions(i.delta(0,-a.overwriteBefore),i.delta(0,Math.max(a.overwriteAfter,0))),s,o.completion.kind,r)}constructor(e,t,i,o){this.range=e,this.insertText=t,this.completionItemKind=i,this.isSnippetText=o}equals(e){return this.range.equalsRange(e.range)&&this.insertText===e.insertText&&this.completionItemKind===e.completionItemKind&&this.isSnippetText===e.isSnippetText}toSelectedSuggestionInfo(){return new Lt.ln(this.range,this.insertText,this.completionItemKind,this.isSnippetText)}toSingleTextEdit(){return new qg.At(this.range,this.insertText)}}var V_,B_=i(90094),z_=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},U_=function(e,t){return function(i,o){t(i,o,e)}};let K_=V_=class extends Fe.JT{static get(e){return e.getContribution(V_.ID)}constructor(e,t,i,o,n,s,r,a,l){super(),this.editor=e,this._instantiationService=t,this._contextKeyService=i,this._configurationService=o,this._commandService=n,this._debounceService=s,this._languageFeaturesService=r,this._accessibilitySignalService=a,this._keybindingService=l,this.model=this._register((0,dd.DN)("inlineCompletionModel",void 0)),this._textModelVersionId=(0,dd.uh)(this,-1),this._positions=(0,dd.uh)(this,[new We.L(1,1)]),this._suggestWidgetAdaptor=this._register(new W_(this.editor,(()=>{var e,t;return null===(t=null===(e=this.model.get())||void 0===e?void 0:e.selectedInlineCompletion.get())||void 0===t?void 0:t.toSingleTextEdit(void 0)}),(e=>this.updateObservables(e,vm.Other)),(e=>{(0,dd.PS)((t=>{var i;this.updateObservables(t,vm.Other),null===(i=this.model.get())||void 0===i||i.handleSuggestAccepted(e)}))}))),this._enabled=(0,dd.rD)(this.editor.onDidChangeConfiguration,(()=>this.editor.getOption(62).enabled)),this._fontFamily=(0,dd.rD)(this.editor.onDidChangeConfiguration,(()=>this.editor.getOption(62).fontFamily)),this._ghostTexts=(0,dd.nK)(this,(e=>{var t;const i=this.model.read(e);return null!==(t=null===i||void 0===i?void 0:i.ghostTexts.read(e))&&void 0!==t?t:[]})),this._stablizedGhostTexts=function(e,t){const i=(0,dd.uh)("result",[]),o=[];return t.add((0,dd.EH)((t=>{const n=e.read(t);(0,dd.PS)((e=>{if(n.length!==o.length){o.length=n.length;for(let e=0;e<o.length;e++)o[e]||(o[e]=(0,dd.uh)("item",n[e]));i.set([...o],e)}o.forEach(((t,i)=>t.set(n[i],e)))}))}))),i}(this._ghostTexts,this._store),this._ghostTextWidgets=(0,B_.Zg)(this,this._stablizedGhostTexts,((e,t)=>t.add(this._instantiationService.createInstance(sp,this.editor,{ghostText:e,minReservedLineCount:(0,dd.Dz)(0),targetTextModel:this.model.map((e=>null===e||void 0===e?void 0:e.textModel))})))).recomputeInitiallyAndOnChange(this._store),this._debounceValue=this._debounceService.for(this._languageFeaturesService.inlineCompletionsProvider,"InlineCompletionsDebounce",{min:50,max:50}),this._playAccessibilitySignal=(0,dd.GN)(this),this._isReadonly=(0,dd.rD)(this.editor.onDidChangeConfiguration,(()=>this.editor.getOption(91))),this._textModel=(0,dd.rD)(this.editor.onDidChangeModel,(()=>this.editor.getModel())),this._textModelIfWritable=(0,dd.nK)((e=>this._isReadonly.read(e)?void 0:this._textModel.read(e))),this._register(new Hg(this._contextKeyService,this.model)),this._register((0,dd.EH)((i=>{const o=this._textModelIfWritable.read(i);(0,dd.PS)((i=>{if(this.model.set(void 0,i),this.updateObservables(i,vm.Other),o){const n=t.createInstance(Sm,o,this._suggestWidgetAdaptor.selectedItem,this._textModelVersionId,this._positions,this._debounceValue,(0,dd.rD)(e.onDidChangeConfiguration,(()=>e.getOption(118).preview)),(0,dd.rD)(e.onDidChangeConfiguration,(()=>e.getOption(118).previewMode)),(0,dd.rD)(e.onDidChangeConfiguration,(()=>e.getOption(62).mode)),this._enabled);this.model.set(n,i)}}))})));const d=this._register((0,X.aU)());this._register((0,dd.EH)((e=>{const t=this._fontFamily.read(e);d.setStyle(""===t||"default"===t?"":"\n.monaco-editor .ghost-text-decoration,\n.monaco-editor .ghost-text-decoration-preview,\n.monaco-editor .ghost-text {\n\tfont-family: ".concat(t,";\n}"))})));const c=e=>{var t;return e.isUndoing?vm.Undo:e.isRedoing?vm.Redo:(null===(t=this.model.get())||void 0===t?void 0:t.isAcceptingPartially)?vm.AcceptWord:vm.Other};let h;this._register(e.onDidChangeModelContent((e=>(0,dd.PS)((t=>this.updateObservables(t,c(e))))))),this._register(e.onDidChangeCursorPosition((e=>(0,dd.PS)((t=>{var i;this.updateObservables(t,vm.Other),3!==e.reason&&"api"!==e.source||null===(i=this.model.get())||void 0===i||i.stop(t)}))))),this._register(e.onDidType((()=>(0,dd.PS)((e=>{var t;this.updateObservables(e,vm.Other),this._enabled.get()&&(null===(t=this.model.get())||void 0===t||t.trigger(e))}))))),this._register(this._commandService.onDidExecuteCommand((t=>{new Set([Y.wk.Tab.id,Y.wk.DeleteLeft.id,Y.wk.DeleteRight.id,cd,"acceptSelectedSuggestion"]).has(t.commandId)&&e.hasTextFocus()&&this._enabled.get()&&(0,dd.PS)((e=>{var t;null===(t=this.model.get())||void 0===t||t.trigger(e)}))}))),this._register(this.editor.onDidBlurEditorWidget((()=>{this._contextKeyService.getContextKeyValue("accessibleViewIsShown")||this._configurationService.getValue("editor.inlineSuggest.keepOnBlur")||e.getOption(62).keepOnBlur||Cd.dropDownVisible||(0,dd.PS)((e=>{var t;null===(t=this.model.get())||void 0===t||t.stop(e)}))}))),this._register((0,dd.EH)((e=>{var t;const i=null===(t=this.model.read(e))||void 0===t?void 0:t.state.read(e);(null===i||void 0===i?void 0:i.suggestItem)?i.primaryGhostText.lineCount>=2&&this._suggestWidgetAdaptor.forceRenderingAbove():this._suggestWidgetAdaptor.stopForceRenderingAbove()}))),this._register((0,Fe.OF)((()=>{this._suggestWidgetAdaptor.stopForceRenderingAbove()}))),this._register((0,dd.nJ)({handleChange:(e,t)=>(e.didChange(this._playAccessibilitySignal)&&(h=void 0),!0)},(async e=>{this._playAccessibilitySignal.read(e);const t=this.model.read(e),i=null===t||void 0===t?void 0:t.state.read(e);if(t&&i&&i.inlineCompletion){if(i.inlineCompletion.semanticId!==h){h=i.inlineCompletion.semanticId;const e=t.textModel.getLineContent(i.primaryGhostText.lineNumber);this._accessibilitySignalService.playSignal(yg.iP.inlineSuggestion).then((()=>{this.editor.getOption(8)&&this.provideScreenReaderUpdate(i.primaryGhostText.renderForScreenReader(e))}))}}else h=void 0}))),this._register(new fd(this.editor,this.model,this._instantiationService)),this._register(this._configurationService.onDidChangeConfiguration((e=>{e.affectsConfiguration("accessibility.verbosity.inlineCompletions")&&this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this._configurationService.getValue("accessibility.verbosity.inlineCompletions")})}))),this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this._configurationService.getValue("accessibility.verbosity.inlineCompletions")})}playAccessibilitySignal(e){this._playAccessibilitySignal.trigger(e)}provideScreenReaderUpdate(e){const t=this._contextKeyService.getContextKeyValue("accessibleViewIsShown"),i=this._keybindingService.lookupKeybinding("editor.action.accessibleView");let o;!t&&i&&this.editor.getOption(149)&&(o=(0,ne.NC)("showAccessibleViewHint","Inspect this in the accessible view ({0})",i.getAriaLabel())),o?(0,xe.Z9)(e+", "+o):(0,xe.Z9)(e)}updateObservables(e,t){var i,o,n;const s=this.editor.getModel();this._textModelVersionId.set(null!==(i=null===s||void 0===s?void 0:s.getVersionId())&&void 0!==i?i:-1,e,t),this._positions.set(null!==(n=null===(o=this.editor.getSelections())||void 0===o?void 0:o.map((e=>e.getPosition())))&&void 0!==n?n:[new We.L(1,1)],e)}shouldShowHoverAt(e){var t;const i=null===(t=this.model.get())||void 0===t?void 0:t.primaryGhostText.get();return!!i&&i.parts.some((t=>e.containsPosition(new We.L(i.lineNumber,t.column))))}shouldShowHoverAtViewZone(e){var t,i;return null!==(i=null===(t=this._ghostTextWidgets.get()[0])||void 0===t?void 0:t.ownsViewZone(e))&&void 0!==i&&i}};K_.ID="editor.contrib.inlineCompletionsController",K_=V_=z_([U_(1,ni.TG),U_(2,ae.i6),U_(3,re.Ui),U_(4,ye.H),U_(5,jn.A),U_(6,kt.p),U_(7,yg.IV),U_(8,ki.d)],K_);class j_ extends ee.R6{constructor(){super({id:j_.ID,label:ne.NC("action.inlineSuggest.showNext","Show Next Inline Suggestion"),alias:"Show Next Inline Suggestion",precondition:ae.Ao.and(oe.u.writable,Hg.inlineSuggestionVisible),kbOpts:{weight:100,primary:606}})}async run(e,t){var i;const o=K_.get(t);null===(i=null===o||void 0===o?void 0:o.model.get())||void 0===i||i.next()}}j_.ID=ud;class q_ extends ee.R6{constructor(){super({id:q_.ID,label:ne.NC("action.inlineSuggest.showPrevious","Show Previous Inline Suggestion"),alias:"Show Previous Inline Suggestion",precondition:ae.Ao.and(oe.u.writable,Hg.inlineSuggestionVisible),kbOpts:{weight:100,primary:604}})}async run(e,t){var i;const o=K_.get(t);null===(i=null===o||void 0===o?void 0:o.model.get())||void 0===i||i.previous()}}q_.ID=hd;class G_ extends ee.R6{constructor(){super({id:"editor.action.inlineSuggest.trigger",label:ne.NC("action.inlineSuggest.trigger","Trigger Inline Suggestion"),alias:"Trigger Inline Suggestion",precondition:oe.u.writable})}async run(e,t){const i=K_.get(t);await(0,Fg.Hr)((async e=>{var t;await(null===(t=null===i||void 0===i?void 0:i.model.get())||void 0===t?void 0:t.triggerExplicitly(e)),null===i||void 0===i||i.playAccessibilitySignal(e)}))}}class Q_ extends ee.R6{constructor(){super({id:"editor.action.inlineSuggest.acceptNextWord",label:ne.NC("action.inlineSuggest.acceptNextWord","Accept Next Word Of Inline Suggestion"),alias:"Accept Next Word Of Inline Suggestion",precondition:ae.Ao.and(oe.u.writable,Hg.inlineSuggestionVisible),kbOpts:{weight:101,primary:2065,kbExpr:ae.Ao.and(oe.u.writable,Hg.inlineSuggestionVisible)},menuOpts:[{menuId:se.eH.InlineSuggestionToolbar,title:ne.NC("acceptWord","Accept Word"),group:"primary",order:2}]})}async run(e,t){var i;const o=K_.get(t);await(null===(i=null===o||void 0===o?void 0:o.model.get())||void 0===i?void 0:i.acceptNextWord(o.editor))}}class Z_ extends ee.R6{constructor(){super({id:"editor.action.inlineSuggest.acceptNextLine",label:ne.NC("action.inlineSuggest.acceptNextLine","Accept Next Line Of Inline Suggestion"),alias:"Accept Next Line Of Inline Suggestion",precondition:ae.Ao.and(oe.u.writable,Hg.inlineSuggestionVisible),kbOpts:{weight:101},menuOpts:[{menuId:se.eH.InlineSuggestionToolbar,title:ne.NC("acceptLine","Accept Line"),group:"secondary",order:2}]})}async run(e,t){var i;const o=K_.get(t);await(null===(i=null===o||void 0===o?void 0:o.model.get())||void 0===i?void 0:i.acceptNextLine(o.editor))}}class Y_ extends ee.R6{constructor(){super({id:cd,label:ne.NC("action.inlineSuggest.accept","Accept Inline Suggestion"),alias:"Accept Inline Suggestion",precondition:Hg.inlineSuggestionVisible,menuOpts:[{menuId:se.eH.InlineSuggestionToolbar,title:ne.NC("accept","Accept"),group:"primary",order:1}],kbOpts:{primary:2,weight:200,kbExpr:ae.Ao.and(Hg.inlineSuggestionVisible,oe.u.tabMovesFocus.toNegated(),Hg.inlineSuggestionHasIndentationLessThanTabSize,Op.Visible.toNegated(),oe.u.hoverFocused.toNegated())}})}async run(e,t){var i;const o=K_.get(t);o&&(null===(i=o.model.get())||void 0===i||i.accept(o.editor),o.editor.focus())}}class J_ extends ee.R6{constructor(){super({id:J_.ID,label:ne.NC("action.inlineSuggest.hide","Hide Inline Suggestion"),alias:"Hide Inline Suggestion",precondition:Hg.inlineSuggestionVisible,kbOpts:{weight:100,primary:9}})}async run(e,t){const i=K_.get(t);(0,dd.PS)((e=>{var t;null===(t=null===i||void 0===i?void 0:i.model.get())||void 0===t||t.stop(e)}))}}J_.ID="editor.action.inlineSuggest.hide";class $_ extends se.Ke{constructor(){super({id:$_.ID,title:ne.NC("action.inlineSuggest.alwaysShowToolbar","Always Show Toolbar"),f1:!1,precondition:void 0,menu:[{id:se.eH.InlineSuggestionToolbar,group:"secondary",order:10}],toggled:ae.Ao.equals("config.editor.inlineSuggest.showToolbar","always")})}async run(e,t){const i=e.get(re.Ui),o="always"===i.getValue("editor.inlineSuggest.showToolbar")?"onHover":"always";i.updateValue("editor.inlineSuggest.showToolbar",o)}}$_.ID="editor.action.inlineSuggest.toggleAlwaysShowToolbar";var X_=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ef=function(e,t){return function(i,o){t(i,o,e)}};class tf{constructor(e,t,i){this.owner=e,this.range=t,this.controller=i}isValidForHoverAnchor(e){return 1===e.type&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}let of=class{constructor(e,t,i,o,n,s){this._editor=e,this._languageService=t,this._openerService=i,this.accessibilityService=o,this._instantiationService=n,this._telemetryService=s,this.hoverOrdinal=4}suggestHoverAnchor(e){const t=K_.get(this._editor);if(!t)return null;const i=e.target;if(8===i.type){const o=i.detail;if(t.shouldShowHoverAtViewZone(o.viewZoneId))return new Ga(1e3,this,He.e.fromPositions(this._editor.getModel().validatePosition(o.positionBefore||o.position)),e.event.posx,e.event.posy,!1)}if(7===i.type&&t.shouldShowHoverAt(i.range))return new Ga(1e3,this,i.range,e.event.posx,e.event.posy,!1);if(6===i.type){if(i.detail.mightBeForeignElement&&t.shouldShowHoverAt(i.range))return new Ga(1e3,this,i.range,e.event.posx,e.event.posy,!1)}return null}computeSync(e,t){if("onHover"!==this._editor.getOption(62).showToolbar)return[];const i=K_.get(this._editor);return i&&i.shouldShowHoverAt(e.range)?[new tf(this,e.range,i)]:[]}renderHoverParts(e,t){const i=new Fe.SL,o=t[0];this._telemetryService.publicLog2("inlineCompletionHover.shown"),this.accessibilityService.isScreenReaderOptimized()&&!this._editor.getOption(8)&&this.renderScreenReaderText(e,o,i);const n=o.controller.model.get(),s=this._instantiationService.createInstance(Cd,this._editor,!1,(0,dd.Dz)(null),n.selectedInlineCompletionIndex,n.inlineCompletionsCount,n.selectedInlineCompletion.map((e=>{var t;return null!==(t=null===e||void 0===e?void 0:e.inlineCompletion.source.inlineCompletions.commands)&&void 0!==t?t:[]})));return e.fragment.appendChild(s.getDomNode()),n.triggerExplicitly(),i.add(s),i}renderScreenReaderText(e,t,i){const o=X.$,n=o("div.hover-row.markdown-hover"),s=X.R3(n,o("div.hover-contents",{"aria-live":"assertive"})),r=i.add(new gi.$({editor:this._editor},this._languageService,this._openerService));i.add((0,dd.EH)((o=>{var n;const a=null===(n=t.controller.model.read(o))||void 0===n?void 0:n.primaryGhostText.read(o);if(a){const t=this._editor.getModel().getLineContent(a.lineNumber);(t=>{i.add(r.onDidRenderAsync((()=>{s.className="hover-contents code-hover-contents",e.onContentsChanged()})));const o=ne.NC("inlineSuggestionFollows","Suggestion:"),n=i.add(r.render((new Ne.W5).appendText(o).appendCodeblock("text",t)));s.replaceChildren(n.element)})(a.renderForScreenReader(t))}else X.mc(s)}))),e.fragment.appendChild(n)}};of=X_([ef(1,Us.O),ef(2,pi.v),ef(3,$s.F),ef(4,ni.TG),ef(5,eo.b)],of),(0,ee._K)(K_.ID,K_,3),(0,ee.Qr)(G_),(0,ee.Qr)(j_),(0,ee.Qr)(q_),(0,ee.Qr)(Q_),(0,ee.Qr)(Z_),(0,ee.Qr)(Y_),(0,ee.Qr)(J_),(0,se.r1)($_),Qa.register(of);var nf=i(42443);function sf(e,t){let i=0;for(let o=0;o<e.length;o++)"\t"===e.charAt(o)?i+=t:i++;return i}function rf(e,t,i){e=e<0?0:e;let o="";if(!i){const i=Math.floor(e/t);e%=t;for(let e=0;e<i;e++)o+="\t"}for(let n=0;n<e;n++)o+=" ";return o}var af=i(1761),lf=i(48941);function df(e,t,i,o,n){if(1===e.getLineCount()&&1===e.getLineMaxColumn(1))return[];const s=t.getLanguageConfiguration(e.getLanguageId()).indentationRules;if(!s)return[];for(o=Math.min(o,e.getLineCount());i<=o&&s.unIndentedLinePattern;){const t=e.getLineContent(i);if(!s.unIndentedLinePattern.test(t))break;i++}if(i>o-1)return[];const{tabSize:r,indentSize:a,insertSpaces:l}=e.getOptions(),d=(e,t)=>(t=t||1,nf.U.shiftIndent(e,e.length+t,r,a,l)),c=(e,t)=>(t=t||1,nf.U.unshiftIndent(e,e.length+t,r,a,l)),h=[];let u;const g=e.getLineContent(i);let p=g;if(void 0!==n&&null!==n){u=n;const e=ii.V8(g);p=u+g.substring(e.length),s.decreaseIndentPattern&&s.decreaseIndentPattern.test(p)&&(u=c(u),p=u+g.substring(e.length)),g!==p&&h.push(Yd.h.replaceMove(new ke.Y(i,1,i,e.length+1),(0,lf.x)(u,a,l)))}else u=ii.V8(g);let m=u;s.increaseIndentPattern&&s.increaseIndentPattern.test(p)?(m=d(m),u=d(u)):s.indentNextLinePattern&&s.indentNextLinePattern.test(p)&&(m=d(m));for(let _=++i;_<=o;_++){const t=e.getLineContent(_),i=ii.V8(t),o=m+t.substring(i.length);s.decreaseIndentPattern&&s.decreaseIndentPattern.test(o)&&(m=c(m),u=c(u)),i!==m&&h.push(Yd.h.replaceMove(new ke.Y(_,1,_,i.length+1),(0,lf.x)(m,a,l))),s.unIndentedLinePattern&&s.unIndentedLinePattern.test(t)||(s.increaseIndentPattern&&s.increaseIndentPattern.test(o)?(u=d(u),m=u):m=s.indentNextLinePattern&&s.indentNextLinePattern.test(o)?d(m):u)}return h}var cf=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},hf=function(e,t){return function(i,o){t(i,o,e)}};class uf extends ee.R6{constructor(){super({id:uf.ID,label:ne.NC("indentationToSpaces","Convert Indentation to Spaces"),alias:"Convert Indentation to Spaces",precondition:oe.u.writable})}run(e,t){const i=t.getModel();if(!i)return;const o=i.getOptions(),n=t.getSelection();if(!n)return;const s=new xf(n,o.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[s]),t.pushUndoStop(),i.updateOptions({insertSpaces:!0})}}uf.ID="editor.action.indentationToSpaces";class gf extends ee.R6{constructor(){super({id:gf.ID,label:ne.NC("indentationToTabs","Convert Indentation to Tabs"),alias:"Convert Indentation to Tabs",precondition:oe.u.writable})}run(e,t){const i=t.getModel();if(!i)return;const o=i.getOptions(),n=t.getSelection();if(!n)return;const s=new Nf(n,o.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[s]),t.pushUndoStop(),i.updateOptions({insertSpaces:!1})}}gf.ID="editor.action.indentationToTabs";class pf extends ee.R6{constructor(e,t,i){super(i),this.insertSpaces=e,this.displaySizeOnly=t}run(e,t){const i=e.get(wi.eJ),o=e.get($i.q),n=t.getModel();if(!n)return;const s=o.getCreationOptions(n.getLanguageId(),n.uri,n.isForSimpleWidget),r=n.getOptions(),a=[1,2,3,4,5,6,7,8].map((e=>({id:e.toString(),label:e.toString(),description:e===s.tabSize&&e===r.tabSize?ne.NC("configuredTabSize","Configured Tab Size"):e===s.tabSize?ne.NC("defaultTabSize","Default Tab Size"):e===r.tabSize?ne.NC("currentTabSize","Current Tab Size"):void 0}))),l=Math.min(n.getOptions().tabSize-1,7);setTimeout((()=>{i.pick(a,{placeHolder:ne.NC({key:"selectTabWidth",comment:["Tab corresponds to the tab key"]},"Select Tab Size for Current File"),activeItem:a[l]}).then((e=>{if(e&&n&&!n.isDisposed()){const t=parseInt(e.label,10);this.displaySizeOnly?n.updateOptions({tabSize:t}):n.updateOptions({tabSize:t,indentSize:t,insertSpaces:this.insertSpaces})}}))}),50)}}class mf extends pf{constructor(){super(!1,!1,{id:mf.ID,label:ne.NC("indentUsingTabs","Indent Using Tabs"),alias:"Indent Using Tabs",precondition:void 0})}}mf.ID="editor.action.indentUsingTabs";class _f extends pf{constructor(){super(!0,!1,{id:_f.ID,label:ne.NC("indentUsingSpaces","Indent Using Spaces"),alias:"Indent Using Spaces",precondition:void 0})}}_f.ID="editor.action.indentUsingSpaces";class ff extends pf{constructor(){super(!0,!0,{id:ff.ID,label:ne.NC("changeTabDisplaySize","Change Tab Display Size"),alias:"Change Tab Display Size",precondition:void 0})}}ff.ID="editor.action.changeTabDisplaySize";class vf extends ee.R6{constructor(){super({id:vf.ID,label:ne.NC("detectIndentation","Detect Indentation from Content"),alias:"Detect Indentation from Content",precondition:void 0})}run(e,t){const i=e.get($i.q),o=t.getModel();if(!o)return;const n=i.getCreationOptions(o.getLanguageId(),o.uri,o.isForSimpleWidget);o.detectIndentation(n.insertSpaces,n.tabSize)}}vf.ID="editor.action.detectIndentation";class bf extends ee.R6{constructor(){super({id:"editor.action.reindentlines",label:ne.NC("editor.reindentlines","Reindent Lines"),alias:"Reindent Lines",precondition:oe.u.writable})}run(e,t){const i=e.get(Xn.c_),o=t.getModel();if(!o)return;const n=df(o,i,1,o.getLineCount());n.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,n),t.pushUndoStop())}}class Cf extends ee.R6{constructor(){super({id:"editor.action.reindentselectedlines",label:ne.NC("editor.reindentselectedlines","Reindent Selected Lines"),alias:"Reindent Selected Lines",precondition:oe.u.writable})}run(e,t){const i=e.get(Xn.c_),o=t.getModel();if(!o)return;const n=t.getSelections();if(null===n)return;const s=[];for(const r of n){let e=r.startLineNumber,t=r.endLineNumber;if(e!==t&&1===r.endColumn&&t--,1===e){if(e===t)continue}else e--;const n=df(o,i,e,t);s.push(...n)}s.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,s),t.pushUndoStop())}}class Sf{constructor(e,t){this._initialSelection=t,this._edits=[],this._selectionId=null;for(const i of e)i.range&&"string"===typeof i.text&&this._edits.push(i)}getEditOperations(e,t){for(const o of this._edits)t.addEditOperation(He.e.lift(o.range),o.text);let i=!1;Array.isArray(this._edits)&&1===this._edits.length&&this._initialSelection.isEmpty()&&(this._edits[0].range.startColumn===this._initialSelection.endColumn&&this._edits[0].range.startLineNumber===this._initialSelection.endLineNumber?(i=!0,this._selectionId=t.trackSelection(this._initialSelection,!0)):this._edits[0].range.endColumn===this._initialSelection.startColumn&&this._edits[0].range.endLineNumber===this._initialSelection.startLineNumber&&(i=!0,this._selectionId=t.trackSelection(this._initialSelection,!1))),i||(this._selectionId=t.trackSelection(this._initialSelection))}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}let yf=class{constructor(e,t){this.editor=e,this._languageConfigurationService=t,this.callOnDispose=new Fe.SL,this.callOnModel=new Fe.SL,this.callOnDispose.add(e.onDidChangeConfiguration((()=>this.update()))),this.callOnDispose.add(e.onDidChangeModel((()=>this.update()))),this.callOnDispose.add(e.onDidChangeModelLanguage((()=>this.update())))}update(){this.callOnModel.clear(),this.editor.getOption(12)<4||this.editor.getOption(55)||this.editor.hasModel()&&this.callOnModel.add(this.editor.onDidPaste((e=>{let{range:t}=e;this.trigger(t)})))}trigger(e){const t=this.editor.getSelections();if(null===t||t.length>1)return;const i=this.editor.getModel();if(!i)return;if(!i.tokenization.isCheapToTokenize(e.getStartPosition().lineNumber))return;const o=this.editor.getOption(12),{tabSize:n,indentSize:s,insertSpaces:r}=i.getOptions(),a=[],l={shiftIndent:e=>nf.U.shiftIndent(e,e.length+1,n,s,r),unshiftIndent:e=>nf.U.unshiftIndent(e,e.length+1,n,s,r)};let d=e.startLineNumber;for(;d<=e.endLineNumber&&this.shouldIgnoreLine(i,d);)d++;if(d>e.endLineNumber)return;let c=i.getLineContent(d);if(!/\S/.test(c.substring(0,e.startColumn-1))){const e=(0,af.n8)(o,i,i.getLanguageId(),d,l,this._languageConfigurationService);if(null!==e){const t=ii.V8(c),o=sf(e,n);if(o!==sf(t,n)){const e=rf(o,n,r);a.push({range:new He.e(d,1,d,t.length+1),text:e}),c=e+c.substr(t.length)}else{const e=(0,af.tI)(i,d,this._languageConfigurationService);if(0===e||8===e)return}}}const h=d;for(;d<e.endLineNumber&&!/\S/.test(i.getLineContent(d+1));)d++;if(d!==e.endLineNumber){const t={tokenization:{getLineTokens:e=>i.tokenization.getLineTokens(e),getLanguageId:()=>i.getLanguageId(),getLanguageIdAtPosition:(e,t)=>i.getLanguageIdAtPosition(e,t)},getLineContent:e=>e===h?c:i.getLineContent(e)},s=(0,af.n8)(o,t,i.getLanguageId(),d+1,l,this._languageConfigurationService);if(null!==s){const t=sf(s,n),o=sf(ii.V8(i.getLineContent(d+1)),n);if(t!==o){const s=t-o;for(let t=d+1;t<=e.endLineNumber;t++){const e=i.getLineContent(t),o=ii.V8(e),l=rf(sf(o,n)+s,n,r);l!==o&&a.push({range:new He.e(t,1,t,o.length+1),text:l})}}}}if(a.length>0){this.editor.pushUndoStop();const e=new Sf(a,this.editor.getSelection());this.editor.executeCommand("autoIndentOnPaste",e),this.editor.pushUndoStop()}}shouldIgnoreLine(e,t){e.tokenization.forceTokenization(t);const i=e.getLineFirstNonWhitespaceColumn(t);if(0===i)return!0;const o=e.tokenization.getLineTokens(t);if(o.getCount()>0){const e=o.findTokenIndexAtOffset(i);if(e>=0&&1===o.getStandardTokenType(e))return!0}return!1}dispose(){this.callOnDispose.dispose(),this.callOnModel.dispose()}};function wf(e,t,i,o){if(1===e.getLineCount()&&1===e.getLineMaxColumn(1))return;let n="";for(let r=0;r<i;r++)n+=" ";const s=new RegExp(n,"gi");for(let r=1,a=e.getLineCount();r<=a;r++){let i=e.getLineFirstNonWhitespaceColumn(r);if(0===i&&(i=e.getLineMaxColumn(r)),1===i)continue;const a=new He.e(r,1,r,i),l=e.getValueInRange(a),d=o?l.replace(/\t/gi,n):l.replace(s,"\t");t.addEditOperation(a,d)}}yf.ID="editor.contrib.autoIndentOnPaste",yf=cf([hf(1,Xn.c_)],yf);class xf{constructor(e,t){this.selection=e,this.tabSize=t,this.selectionId=null}getEditOperations(e,t){this.selectionId=t.trackSelection(this.selection),wf(e,t,this.tabSize,!0)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}}class Nf{constructor(e,t){this.selection=e,this.tabSize=t,this.selectionId=null}getEditOperations(e,t){this.selectionId=t.trackSelection(this.selection),wf(e,t,this.tabSize,!1)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}}(0,ee._K)(yf.ID,yf,2),(0,ee.Qr)(uf),(0,ee.Qr)(gf),(0,ee.Qr)(mf),(0,ee.Qr)(_f),(0,ee.Qr)(ff),(0,ee.Qr)(vf),(0,ee.Qr)(bf),(0,ee.Qr)(Cf);class Lf{constructor(e,t){this.range=e,this.direction=t}}class kf{constructor(e,t,i){this.hint=e,this.anchor=t,this.provider=i,this._isResolved=!1}with(e){const t=new kf(this.hint,e.anchor,this.provider);return t._isResolved=this._isResolved,t._currentResolve=this._currentResolve,t}async resolve(e){if("function"===typeof this.provider.resolveInlayHint){if(this._currentResolve){if(await this._currentResolve,e.isCancellationRequested)return;return this.resolve(e)}this._isResolved||(this._currentResolve=this._doResolve(e).finally((()=>this._currentResolve=void 0))),await this._currentResolve}}async _doResolve(e){var t,i,o;try{const n=await Promise.resolve(this.provider.resolveInlayHint(this.hint,e));this.hint.tooltip=null!==(t=null===n||void 0===n?void 0:n.tooltip)&&void 0!==t?t:this.hint.tooltip,this.hint.label=null!==(i=null===n||void 0===n?void 0:n.label)&&void 0!==i?i:this.hint.label,this.hint.textEdits=null!==(o=null===n||void 0===n?void 0:n.textEdits)&&void 0!==o?o:this.hint.textEdits,this._isResolved=!0}catch(n){(0,Ji.Cp)(n),this._isResolved=!1}}}class Df{static async create(e,t,i,o){const n=[],s=e.ordered(t).reverse().map((e=>i.map((async i=>{try{const s=await e.provideInlayHints(t,i,o);((null===s||void 0===s?void 0:s.hints.length)||e.onDidChangeInlayHints)&&n.push([null!==s&&void 0!==s?s:Df._emptyInlayHintList,e])}catch(s){(0,Ji.Cp)(s)}}))));if(await Promise.all(s.flat()),o.isCancellationRequested||t.isDisposed())throw new Ji.FU;return new Df(i,n,t)}constructor(e,t,i){this._disposables=new Fe.SL,this.ranges=e,this.provider=new Set;const o=[];for(const[n,s]of t){this._disposables.add(n),this.provider.add(s);for(const e of n.hints){const t=i.validatePosition(e.position);let n="before";const r=Df._getRangeAtPosition(i,t);let a;r.getStartPosition().isBefore(t)?(a=He.e.fromPositions(r.getStartPosition(),t),n="after"):(a=He.e.fromPositions(t,r.getEndPosition()),n="before"),o.push(new kf(e,new Lf(a,n),s))}}this.items=o.sort(((e,t)=>We.L.compare(e.hint.position,t.hint.position)))}dispose(){this._disposables.dispose()}static _getRangeAtPosition(e,t){const i=t.lineNumber,o=e.getWordAtPosition(t);if(o)return new He.e(i,o.startColumn,i,o.endColumn);e.tokenization.tokenizeIfCheap(i);const n=e.tokenization.getLineTokens(i),s=t.column-1,r=n.findTokenIndexAtOffset(s);let a=n.getStartOffset(r),l=n.getEndOffset(r);return l-a===1&&(a===s&&r>1?(a=n.getStartOffset(r-1),l=n.getEndOffset(r-1)):l===s&&r<n.getCount()-1&&(a=n.getStartOffset(r+1),l=n.getEndOffset(r+1))),new He.e(i,a+1,i,l+1)}}async function If(e,t,i,o){var n;const s=e.get(Ks.S),r=e.get(Li.i),a=e.get(ye.H),l=e.get(ni.TG),d=e.get(Xi.lT);if(await o.item.resolve(Yi.T.None),!o.part.location)return;const c=o.part.location,h=[],u=new Set(se.BH.getMenuItems(se.eH.EditorContext).map((e=>(0,se.vr)(e)?e.command.id:rt())));for(const p of Ma.all())u.has(p.desc.id)&&h.push(new Ni.aU(p.desc.id,se.U8.label(p.desc,{renderShortTitle:!0}),void 0,!0,(async()=>{const e=await s.createModelReference(c.uri);try{const i=new Pa(e.object.textEditorModel,He.e.getStartPosition(c.range)),n=o.item.anchor.range;await l.invokeFunction(p.runEditorCommand.bind(p),t,i,n)}finally{e.dispose()}})));if(o.part.command){const{command:e}=o.part;h.push(new Ni.Z0),h.push(new Ni.aU(e.id,e.title,void 0,!0,(async()=>{var t;try{await a.executeCommand(e.id,...null!==(t=e.arguments)&&void 0!==t?t:[])}catch(i){d.notify({severity:Xi.zb.Error,source:o.item.provider.displayName,message:i})}})))}const g=t.getOption(127);r.showContextMenu({domForShadowRoot:g&&null!==(n=t.getDomNode())&&void 0!==n?n:void 0,getAnchor:()=>{const e=X.i(i);return{x:e.left,y:e.top+e.height+8}},getActions:()=>h,onHide:()=>{t.focus()},autoSelectFirstItem:!0})}async function Rf(e,t,i,o){const n=e.get(Ks.S),s=await n.createModelReference(o.uri);await i.invokeWithinContext((async e=>{const n=t.hasSideBySideModifier,r=e.get(ae.i6),a=pr.inPeekEditor.getValue(r),l=!n&&i.getOption(88)&&!a;return new Ta({openToSide:n,openInPeek:l,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(e,new Pa(s.object.textEditorModel,He.e.getStartPosition(o.range)),He.e.lift(o.range))})),s.dispose()}Df._emptyInlayHintList=Object.freeze({dispose(){},hints:[]});var Pf,Mf=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Tf=function(e,t){return function(i,o){t(i,o,e)}};class Ef{constructor(){this._entries=new Pn.z6(50)}get(e){const t=Ef._key(e);return this._entries.get(t)}set(e,t){const i=Ef._key(e);this._entries.set(i,t)}static _key(e){return"".concat(e.uri.toString(),"/").concat(e.getVersionId())}}const Af=(0,ni.yh)("IInlayHintsCache");(0,Zo.z)(Af,Ef,1);class Of{constructor(e,t){this.item=e,this.index=t}get part(){const e=this.item.hint.label;return"string"===typeof e?{label:e}:e[this.index]}}class Ff{constructor(e,t){this.part=e,this.hasTriggerModifier=t}}let Wf=Pf=class{static get(e){var t;return null!==(t=e.getContribution(Pf.ID))&&void 0!==t?t:void 0}constructor(e,t,i,o,n,s,r){this._editor=e,this._languageFeaturesService=t,this._inlayHintsCache=o,this._commandService=n,this._notificationService=s,this._instaService=r,this._disposables=new Fe.SL,this._sessionDisposables=new Fe.SL,this._decorationsMetadata=new Map,this._ruleFactory=new Jn.t7(this._editor),this._activeRenderMode=0,this._debounceInfo=i.for(t.inlayHintsProvider,"InlayHint",{min:25}),this._disposables.add(t.inlayHintsProvider.onDidChange((()=>this._update()))),this._disposables.add(e.onDidChangeModel((()=>this._update()))),this._disposables.add(e.onDidChangeModelLanguage((()=>this._update()))),this._disposables.add(e.onDidChangeConfiguration((e=>{e.hasChanged(141)&&this._update()}))),this._update()}dispose(){this._sessionDisposables.dispose(),this._removeAllDecorations(),this._disposables.dispose()}_update(){this._sessionDisposables.clear(),this._removeAllDecorations();const e=this._editor.getOption(141);if("off"===e.enabled)return;const t=this._editor.getModel();if(!t||!this._languageFeaturesService.inlayHintsProvider.has(t))return;if("on"===e.enabled)this._activeRenderMode=0;else{let t,i;"onUnlessPressed"===e.enabled?(t=0,i=1):(t=1,i=0),this._activeRenderMode=t,this._sessionDisposables.add(X._q.getInstance().event((e=>{if(!this._editor.hasModel())return;const o=e.altKey&&e.ctrlKey&&!e.shiftKey&&!e.metaKey?i:t;if(o!==this._activeRenderMode){this._activeRenderMode=o;const e=this._editor.getModel(),t=this._copyInlayHintsWithCurrentAnchor(e);this._updateHintsDecorators([e.getFullModelRange()],t),s.schedule(0)}})))}const i=this._inlayHintsCache.get(t);let o;i&&this._updateHintsDecorators([t.getFullModelRange()],i),this._sessionDisposables.add((0,Fe.OF)((()=>{t.isDisposed()||this._cacheHintsForFastRestore(t)})));const n=new Set,s=new Oe.pY((async()=>{const e=Date.now();null===o||void 0===o||o.dispose(!0),o=new Yi.A;const i=t.onWillDispose((()=>null===o||void 0===o?void 0:o.cancel()));try{const i=o.token,r=await Df.create(this._languageFeaturesService.inlayHintsProvider,t,this._getHintsRanges(),i);if(s.delay=this._debounceInfo.update(t,Date.now()-e),i.isCancellationRequested)return void r.dispose();for(const e of r.provider)"function"!==typeof e.onDidChangeInlayHints||n.has(e)||(n.add(e),this._sessionDisposables.add(e.onDidChangeInlayHints((()=>{s.isScheduled()||s.schedule()}))));this._sessionDisposables.add(r),this._updateHintsDecorators(r.ranges,r.items),this._cacheHintsForFastRestore(t)}catch(r){(0,Ji.dL)(r)}finally{o.dispose(),i.dispose()}}),this._debounceInfo.get(t));this._sessionDisposables.add(s),this._sessionDisposables.add((0,Fe.OF)((()=>null===o||void 0===o?void 0:o.dispose(!0)))),s.schedule(0),this._sessionDisposables.add(this._editor.onDidScrollChange((e=>{!e.scrollTopChanged&&s.isScheduled()||s.schedule()}))),this._sessionDisposables.add(this._editor.onDidChangeModelContent((e=>{null===o||void 0===o||o.cancel();const t=Math.max(s.delay,1250);s.schedule(t)}))),this._sessionDisposables.add(this._installDblClickGesture((()=>s.schedule(0)))),this._sessionDisposables.add(this._installLinkGesture()),this._sessionDisposables.add(this._installContextMenu())}_installLinkGesture(){const e=new Fe.SL,t=e.add(new Ys(this._editor)),i=new Fe.SL;return e.add(i),e.add(t.onMouseMoveOrRelevantKeyDown((e=>{const[t]=e,o=this._getInlayHintLabelPart(t),n=this._editor.getModel();if(!o||!n)return void i.clear();const s=new Yi.A;i.add((0,Fe.OF)((()=>s.dispose(!0)))),o.item.resolve(s.token),this._activeInlayHintPart=o.part.command||o.part.location?new Ff(o,t.hasTriggerModifier):void 0;const r=n.validatePosition(o.item.hint.position).lineNumber,a=new He.e(r,1,r,n.getLineMaxColumn(r)),l=this._getInlineHintsForRange(a);this._updateHintsDecorators([a],l),i.add((0,Fe.OF)((()=>{this._activeInlayHintPart=void 0,this._updateHintsDecorators([a],l)})))}))),e.add(t.onCancel((()=>i.clear()))),e.add(t.onExecute((async e=>{const t=this._getInlayHintLabelPart(e);if(t){const i=t.part;i.location?this._instaService.invokeFunction(Rf,e,this._editor,i.location):Lt.mY.is(i.command)&&await this._invokeCommand(i.command,t.item)}}))),e}_getInlineHintsForRange(e){const t=new Set;for(const i of this._decorationsMetadata.values())e.containsRange(i.item.anchor.range)&&t.add(i.item);return Array.from(t)}_installDblClickGesture(e){return this._editor.onMouseUp((async t=>{if(2!==t.event.detail)return;const i=this._getInlayHintLabelPart(t);if(i&&(t.event.preventDefault(),await i.item.resolve(Yi.T.None),(0,nt.Of)(i.item.hint.textEdits))){const t=i.item.hint.textEdits.map((e=>Yd.h.replace(He.e.lift(e.range),e.text)));this._editor.executeEdits("inlayHint.default",t),e()}}))}_installContextMenu(){return this._editor.onContextMenu((async e=>{if(!(e.event.target instanceof HTMLElement))return;const t=this._getInlayHintLabelPart(e);t&&await this._instaService.invokeFunction(If,this._editor,e.event.target,t)}))}_getInlayHintLabelPart(e){var t;if(6!==e.target.type)return;const i=null===(t=e.target.detail.injectedText)||void 0===t?void 0:t.options;return i instanceof Be.HS&&(null===i||void 0===i?void 0:i.attachedData)instanceof Of?i.attachedData:void 0}async _invokeCommand(e,t){var i;try{await this._commandService.executeCommand(e.id,...null!==(i=e.arguments)&&void 0!==i?i:[])}catch(o){this._notificationService.notify({severity:Xi.zb.Error,source:t.provider.displayName,message:o})}}_cacheHintsForFastRestore(e){const t=this._copyInlayHintsWithCurrentAnchor(e);this._inlayHintsCache.set(e,t)}_copyInlayHintsWithCurrentAnchor(e){const t=new Map;for(const[i,o]of this._decorationsMetadata){if(t.has(o.item))continue;const n=e.getDecorationRange(i);if(n){const e=new Lf(n,o.item.anchor.direction),i=o.item.with({anchor:e});t.set(o.item,i)}}return Array.from(t.values())}_getHintsRanges(){const e=this._editor.getModel(),t=this._editor.getVisibleRangesPlusViewportAboveBelow(),i=[];for(const o of t.sort(He.e.compareRangesUsingStarts)){const t=e.validateRange(new He.e(o.startLineNumber-30,o.startColumn,o.endLineNumber+30,o.endColumn));0!==i.length&&He.e.areIntersectingOrTouching(i[i.length-1],t)?i[i.length-1]=He.e.plusRange(i[i.length-1],t):i.push(t)}return i}_updateHintsDecorators(e,t){var i,o;const n=[],s=(e,t,i,o,s)=>{const r={content:i,inlineClassNameAffectsLetterSpacing:!0,inlineClassName:t.className,cursorStops:o,attachedData:s};n.push({item:e,classNameRef:t,decoration:{range:e.anchor.range,options:{description:"InlayHint",showIfCollapsed:e.anchor.range.isEmpty(),collapseOnReplaceEdit:!e.anchor.range.isEmpty(),stickiness:0,[e.anchor.direction]:0===this._activeRenderMode?r:void 0}}})},r=(e,t)=>{const i=this._ruleFactory.createClassNameRef({width:"".concat(a/3|0,"px"),display:"inline-block"});s(e,i,"\u200a",t?Ve.RM.Right:Ve.RM.None)},{fontSize:a,fontFamily:l,padding:d,isUniform:c}=this._getLayoutInfo(),h="--code-editorInlayHintsFontFamily";this._editor.getContainerDomNode().style.setProperty(h,l);let u={line:0,totalLen:0};for(const m of t){if(u.line!==m.anchor.range.startLineNumber&&(u={line:m.anchor.range.startLineNumber,totalLen:0}),u.totalLen>Pf._MAX_LABEL_LEN)continue;m.hint.paddingLeft&&r(m,!1);const e="string"===typeof m.hint.label?[{label:m.hint.label}]:m.hint.label;for(let t=0;t<e.length;t++){const o=e[t],n=0===t,r=t===e.length-1,l={fontSize:"".concat(a,"px"),fontFamily:"var(".concat(h,"), ").concat(sn.hL.fontFamily),verticalAlign:c?"baseline":"middle",unicodeBidi:"isolate"};(0,nt.Of)(m.hint.textEdits)&&(l.cursor="default"),this._fillInColors(l,m.hint),(o.command||o.location)&&(null===(i=this._activeInlayHintPart)||void 0===i?void 0:i.part.item)===m&&this._activeInlayHintPart.part.index===t&&(l.textDecoration="underline",this._activeInlayHintPart.hasTriggerModifier&&(l.color=(0,Ue.EN)(ze._Yy),l.cursor="pointer")),d&&(n&&r?(l.padding="1px ".concat(0|Math.max(1,a/4),"px"),l.borderRadius="".concat(a/4|0,"px")):n?(l.padding="1px 0 1px ".concat(0|Math.max(1,a/4),"px"),l.borderRadius="".concat(a/4|0,"px 0 0 ").concat(a/4|0,"px")):r?(l.padding="1px ".concat(0|Math.max(1,a/4),"px 1px 0"),l.borderRadius="0 ".concat(a/4|0,"px ").concat(a/4|0,"px 0")):l.padding="1px 0 1px 0");let g=o.label;u.totalLen+=g.length;let p=!1;const _=u.totalLen-Pf._MAX_LABEL_LEN;if(_>0&&(g=g.slice(0,-_)+"\u2026",p=!0),s(m,this._ruleFactory.createClassNameRef(l),Hf(g),r&&!m.hint.paddingRight?Ve.RM.Right:Ve.RM.None,new Of(m,t)),p)break}if(m.hint.paddingRight&&r(m,!0),n.length>Pf._MAX_DECORATORS)break}const g=[];for(const[m,_]of this._decorationsMetadata){const t=null===(o=this._editor.getModel())||void 0===o?void 0:o.getDecorationRange(m);t&&e.some((e=>e.containsRange(t)))&&(g.push(m),_.classNameRef.dispose(),this._decorationsMetadata.delete(m))}const p=kn.Z.capture(this._editor);this._editor.changeDecorations((e=>{const t=e.deltaDecorations(g,n.map((e=>e.decoration)));for(let i=0;i<t.length;i++){const e=n[i];this._decorationsMetadata.set(t[i],e)}})),p.restore(this._editor)}_fillInColors(e,t){t.kind===Lt.gl.Parameter?(e.backgroundColor=(0,Ue.EN)(ze.phM),e.color=(0,Ue.EN)(ze.HCL)):t.kind===Lt.gl.Type?(e.backgroundColor=(0,Ue.EN)(ze.bKB),e.color=(0,Ue.EN)(ze.hX8)):(e.backgroundColor=(0,Ue.EN)(ze.PpC),e.color=(0,Ue.EN)(ze.VVv))}_getLayoutInfo(){const e=this._editor.getOption(141),t=e.padding,i=this._editor.getOption(52),o=this._editor.getOption(49);let n=e.fontSize;(!n||n<5||n>i)&&(n=i);const s=e.fontFamily||o;return{fontSize:n,fontFamily:s,padding:t,isUniform:!t&&s===o&&n===i}}_removeAllDecorations(){this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));for(const e of this._decorationsMetadata.values())e.classNameRef.dispose();this._decorationsMetadata.clear()}};function Hf(e){return e.replace(/[ \t]/g,"\xa0")}Wf.ID="editor.contrib.InlayHints",Wf._MAX_DECORATORS=1500,Wf._MAX_LABEL_LEN=43,Wf=Pf=Mf([Tf(1,kt.p),Tf(2,jn.A),Tf(3,Af),Tf(4,ye.H),Tf(5,Xi.lT),Tf(6,ni.TG)],Wf),ye.P.registerCommand("_executeInlayHintProvider",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n,s]=i;(0,Dn.p_)(_t.o.isUri(n)),(0,Dn.p_)(He.e.isIRange(s));const{inlayHintsProvider:r}=e.get(kt.p),a=await e.get(Ks.S).createModelReference(n);try{const e=await Df.create(r,a.object.textEditorModel,[He.e.lift(s)],Yi.T.None),t=e.items.map((e=>e.hint));return setTimeout((()=>e.dispose()),0),t}finally{a.dispose()}}));var Vf=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Bf=function(e,t){return function(i,o){t(i,o,e)}};class zf extends Ga{constructor(e,t,i,o){super(10,t,e.item.anchor.range,i,o,!0),this.part=e}}let Uf=class extends bl{constructor(e,t,i,o,n,s){super(e,t,i,o,s),this._resolverService=n,this.hoverOrdinal=6}suggestHoverAnchor(e){var t;if(!Wf.get(this._editor))return null;if(6!==e.target.type)return null;const i=null===(t=e.target.detail.injectedText)||void 0===t?void 0:t.options;return i instanceof Be.HS&&i.attachedData instanceof Of?new zf(i.attachedData,this,e.event.posx,e.event.posy):null}computeSync(){return[]}computeAsync(e,t,i){return e instanceof zf?new Oe.Aq((async t=>{const{part:o}=e;if(await o.item.resolve(i),i.isCancellationRequested)return;let n,s;if("string"===typeof o.item.hint.tooltip?n=(new Ne.W5).appendText(o.item.hint.tooltip):o.item.hint.tooltip&&(n=o.item.hint.tooltip),n&&t.emitOne(new vl(this,e.range,[n],!1,0)),(0,nt.Of)(o.item.hint.textEdits)&&t.emitOne(new vl(this,e.range,[(new Ne.W5).appendText((0,ne.NC)("hint.dbl","Double-click to insert"))],!1,10001)),"string"===typeof o.part.tooltip?s=(new Ne.W5).appendText(o.part.tooltip):o.part.tooltip&&(s=o.part.tooltip),s&&t.emitOne(new vl(this,e.range,[s],!1,1)),o.part.location||o.part.command){let i;const n="altKey"===this._editor.getOption(78)?it.dz?(0,ne.NC)("links.navigate.kb.meta.mac","cmd + click"):(0,ne.NC)("links.navigate.kb.meta","ctrl + click"):it.dz?(0,ne.NC)("links.navigate.kb.alt.mac","option + click"):(0,ne.NC)("links.navigate.kb.alt","alt + click");o.part.location&&o.part.command?i=(new Ne.W5).appendText((0,ne.NC)("hint.defAndCommand","Go to Definition ({0}), right click for more",n)):o.part.location?i=(new Ne.W5).appendText((0,ne.NC)("hint.def","Go to Definition ({0})",n)):o.part.command&&(i=new Ne.W5("[".concat((0,ne.NC)("hint.cmd","Execute Command"),"](").concat((r=o.part.command,_t.o.from({scheme:Dt.lg.command,path:r.id,query:r.arguments&&encodeURIComponent(JSON.stringify(r.arguments))}).toString()),' "').concat(o.part.command.title,'") (').concat(n,")"),{isTrusted:!0})),i&&t.emitOne(new vl(this,e.range,[i],!1,1e4))}var r;const a=await this._resolveInlayHintLabelPartHover(o,i);for await(const e of a)t.emitOne(e)})):Oe.Aq.EMPTY}async _resolveInlayHintLabelPartHover(e,t){if(!e.part.location)return Oe.Aq.EMPTY;const{uri:i,range:o}=e.part.location,n=await this._resolverService.createModelReference(i);try{const i=n.object.textEditorModel;return this._languageFeaturesService.hoverProvider.has(i)?pl(this._languageFeaturesService.hoverProvider,i,new We.L(o.startLineNumber,o.startColumn),t).filter((e=>!(0,Ne.CP)(e.hover.contents))).map((t=>new vl(this,e.item.anchor.range,t.hover.contents,!1,2+t.ordinal))):Oe.Aq.EMPTY}finally{n.dispose()}}};Uf=Vf([Bf(1,Us.O),Bf(2,pi.v),Bf(3,re.Ui),Bf(4,Ks.S),Bf(5,kt.p)],Uf),(0,ee._K)(Wf.ID,Wf,1),Qa.register(Uf);class Kf{constructor(e,t,i){this._editRange=e,this._originalSelection=t,this._text=i}getEditOperations(e,t){t.addTrackedEditOperation(this._editRange,this._text)}computeCursorState(e,t){const i=t.getInverseEditOperations()[0].range;return this._originalSelection.isEmpty()?new ke.Y(i.endLineNumber,Math.min(this._originalSelection.positionColumn,i.endColumn),i.endLineNumber,Math.min(this._originalSelection.positionColumn,i.endColumn)):new ke.Y(i.endLineNumber,i.endColumn-this._text.length,i.endLineNumber,i.endColumn)}}var jf,qf=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Gf=function(e,t){return function(i,o){t(i,o,e)}};let Qf=jf=class{static get(e){return e.getContribution(jf.ID)}constructor(e,t){this.editor=e,this.editorWorkerService=t,this.decorations=this.editor.createDecorationsCollection()}dispose(){}run(e,t){var i;null===(i=this.currentRequest)||void 0===i||i.cancel();const o=this.editor.getSelection(),n=this.editor.getModel();if(!n||!o)return;let s=o;if(s.startLineNumber!==s.endLineNumber)return;const r=new ti.yy(this.editor,5),a=n.uri;return this.editorWorkerService.canNavigateValueSet(a)?(this.currentRequest=(0,Oe.PG)((e=>this.editorWorkerService.navigateValueSet(a,s,t))),this.currentRequest.then((t=>{var i;if(!t||!t.range||!t.value)return;if(!r.validate(this.editor))return;const o=He.e.lift(t.range);let n=t.range;const a=t.value.length-(s.endColumn-s.startColumn);n={startLineNumber:n.startLineNumber,startColumn:n.startColumn,endLineNumber:n.endLineNumber,endColumn:n.startColumn+t.value.length},a>1&&(s=new ke.Y(s.startLineNumber,s.startColumn,s.endLineNumber,s.endColumn+a-1));const l=new Kf(o,s,t.value);this.editor.pushUndoStop(),this.editor.executeCommand(e,l),this.editor.pushUndoStop(),this.decorations.set([{range:n,options:jf.DECORATION}]),null===(i=this.decorationRemover)||void 0===i||i.cancel(),this.decorationRemover=(0,Oe.Vs)(350),this.decorationRemover.then((()=>this.decorations.clear())).catch(Ji.dL)})).catch(Ji.dL)):Promise.resolve(void 0)}};Qf.ID="editor.contrib.inPlaceReplaceController",Qf.DECORATION=Be.qx.register({description:"in-place-replace",className:"valueSetReplacement"}),Qf=jf=qf([Gf(1,bg.p)],Qf);class Zf extends ee.R6{constructor(){super({id:"editor.action.inPlaceReplace.up",label:ne.NC("InPlaceReplaceAction.previous.label","Replace with Previous Value"),alias:"Replace with Previous Value",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:3159,weight:100}})}run(e,t){const i=Qf.get(t);return i?i.run(this.id,!1):Promise.resolve(void 0)}}class Yf extends ee.R6{constructor(){super({id:"editor.action.inPlaceReplace.down",label:ne.NC("InPlaceReplaceAction.next.label","Replace with Next Value"),alias:"Replace with Next Value",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:3161,weight:100}})}run(e,t){const i=Qf.get(t);return i?i.run(this.id,!0):Promise.resolve(void 0)}}(0,ee._K)(Qf.ID,Qf,4),(0,ee.Qr)(Zf),(0,ee.Qr)(Yf);var Jf=i(82999);class $f extends ee.R6{constructor(){super({id:"expandLineSelection",label:ne.NC("expandLineSelection","Expand Line Selection"),alias:"Expand Line Selection",precondition:void 0,kbOpts:{weight:0,kbExpr:oe.u.textInputFocus,primary:2090}})}run(e,t,i){if(i=i||{},!t.hasModel())return;const o=t._getViewModel();o.model.pushStackElement(),o.setCursorStates(i.source,3,Jf.P.expandLineSelection(o,o.getCursorStates())),o.revealAllCursors(i.source,!0)}}(0,ee.Qr)($f);class Xf{constructor(e,t,i){this._selection=e,this._cursors=t,this._selectionId=null,this._trimInRegexesAndStrings=i}getEditOperations(e,t){const i=function(e,t,i){t.sort(((e,t)=>e.lineNumber===t.lineNumber?e.column-t.column:e.lineNumber-t.lineNumber));for(let a=t.length-2;a>=0;a--)t[a].lineNumber===t[a+1].lineNumber&&t.splice(a,1);const o=[];let n=0,s=0;const r=t.length;for(let a=1,l=e.getLineCount();a<=l;a++){const l=e.getLineContent(a),d=l.length+1;let c=0;if(s<r&&t[s].lineNumber===a&&(c=t[s].column,s++,c===d))continue;if(0===l.length)continue;const h=ii.ow(l);let u=0;if(-1===h)u=1;else{if(h===l.length-1)continue;u=h+2}if(!i){if(!e.tokenization.hasAccurateTokensForLine(a))continue;const t=e.tokenization.getLineTokens(a),i=t.getStandardTokenType(t.findTokenIndexAtOffset(u));if(2===i||3===i)continue}u=Math.max(c,u),o[n++]=Yd.h.delete(new He.e(a,u,a,d))}return o}(e,this._cursors,this._trimInRegexesAndStrings);for(let o=0,n=i.length;o<n;o++){const e=i[o];t.addEditOperation(e.range,e.text)}this._selectionId=t.trackSelection(this._selection)}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}var ev=i(67016);class tv{constructor(e,t,i){this._selection=e,this._isCopyingDown=t,this._noop=i||!1,this._selectionDirection=0,this._selectionId=null,this._startLineNumberDelta=0,this._endLineNumberDelta=0}getEditOperations(e,t){let i=this._selection;this._startLineNumberDelta=0,this._endLineNumberDelta=0,i.startLineNumber<i.endLineNumber&&1===i.endColumn&&(this._endLineNumberDelta=1,i=i.setEndPosition(i.endLineNumber-1,e.getLineMaxColumn(i.endLineNumber-1)));const o=[];for(let s=i.startLineNumber;s<=i.endLineNumber;s++)o.push(e.getLineContent(s));const n=o.join("\n");""===n&&this._isCopyingDown&&(this._startLineNumberDelta++,this._endLineNumberDelta++),this._noop?t.addEditOperation(new He.e(i.endLineNumber,e.getLineMaxColumn(i.endLineNumber),i.endLineNumber+1,1),i.endLineNumber===e.getLineCount()?"":"\n"):this._isCopyingDown?t.addEditOperation(new He.e(i.startLineNumber,1,i.startLineNumber,1),n+"\n"):t.addEditOperation(new He.e(i.endLineNumber,e.getLineMaxColumn(i.endLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),"\n"+n),this._selectionId=t.trackSelection(i),this._selectionDirection=this._selection.getDirection()}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);if(0!==this._startLineNumberDelta||0!==this._endLineNumberDelta){let e=i.startLineNumber,t=i.startColumn,o=i.endLineNumber,n=i.endColumn;0!==this._startLineNumberDelta&&(e+=this._startLineNumberDelta,t=1),0!==this._endLineNumberDelta&&(o+=this._endLineNumberDelta,n=1),i=ke.Y.createWithDirection(e,t,o,n,this._selectionDirection)}return i}}var iv=i(10405),ov=i(16726),nv=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},sv=function(e,t){return function(i,o){t(i,o,e)}};let rv=class{constructor(e,t,i,o){this._languageConfigurationService=o,this._selection=e,this._isMovingDown=t,this._autoIndent=i,this._selectionId=null,this._moveEndLineSelectionShrink=!1}getEditOperations(e,t){const i=e.getLineCount();if(this._isMovingDown&&this._selection.endLineNumber===i)return void(this._selectionId=t.trackSelection(this._selection));if(!this._isMovingDown&&1===this._selection.startLineNumber)return void(this._selectionId=t.trackSelection(this._selection));this._moveEndPositionDown=!1;let o=this._selection;o.startLineNumber<o.endLineNumber&&1===o.endColumn&&(this._moveEndPositionDown=!0,o=o.setEndPosition(o.endLineNumber-1,e.getLineMaxColumn(o.endLineNumber-1)));const{tabSize:n,indentSize:s,insertSpaces:r}=e.getOptions(),a=this.buildIndentConverter(n,s,r),l={tokenization:{getLineTokens:t=>e.tokenization.getLineTokens(t),getLanguageId:()=>e.getLanguageId(),getLanguageIdAtPosition:(t,i)=>e.getLanguageIdAtPosition(t,i)},getLineContent:null};if(o.startLineNumber===o.endLineNumber&&1===e.getLineMaxColumn(o.startLineNumber)){const i=o.startLineNumber,n=this._isMovingDown?i+1:i-1;1===e.getLineMaxColumn(n)?t.addEditOperation(new He.e(1,1,1,1),null):(t.addEditOperation(new He.e(i,1,i,1),e.getLineContent(n)),t.addEditOperation(new He.e(n,1,n,e.getLineMaxColumn(n)),null)),o=new ke.Y(n,1,n,1)}else{let i,s;if(this._isMovingDown){i=o.endLineNumber+1,s=e.getLineContent(i),t.addEditOperation(new He.e(i-1,e.getLineMaxColumn(i-1),i,e.getLineMaxColumn(i)),null);let d=s;if(this.shouldAutoIndent(e,o)){const c=this.matchEnterRule(e,a,n,i,o.startLineNumber-1);if(null!==c){const t=rf(c+sf(ii.V8(e.getLineContent(i)),n),n,r);d=t+this.trimStart(s)}else{l.getLineContent=t=>t===o.startLineNumber?e.getLineContent(i):e.getLineContent(t);const t=(0,af.n8)(this._autoIndent,l,e.getLanguageIdAtPosition(i,1),o.startLineNumber,a,this._languageConfigurationService);if(null!==t){const o=ii.V8(e.getLineContent(i)),a=sf(t,n);if(a!==sf(o,n)){const e=rf(a,n,r);d=e+this.trimStart(s)}}}t.addEditOperation(new He.e(o.startLineNumber,1,o.startLineNumber,1),d+"\n");const h=this.matchEnterRuleMovingDown(e,a,n,o.startLineNumber,i,d);if(null!==h)0!==h&&this.getIndentEditsOfMovingBlock(e,t,o,n,r,h);else{l.getLineContent=t=>t===o.startLineNumber?d:t>=o.startLineNumber+1&&t<=o.endLineNumber+1?e.getLineContent(t-1):e.getLineContent(t);const s=(0,af.n8)(this._autoIndent,l,e.getLanguageIdAtPosition(i,1),o.startLineNumber+1,a,this._languageConfigurationService);if(null!==s){const i=ii.V8(e.getLineContent(o.startLineNumber)),a=sf(s,n),l=sf(i,n);if(a!==l){const i=a-l;this.getIndentEditsOfMovingBlock(e,t,o,n,r,i)}}}}else t.addEditOperation(new He.e(o.startLineNumber,1,o.startLineNumber,1),d+"\n")}else if(i=o.startLineNumber-1,s=e.getLineContent(i),t.addEditOperation(new He.e(i,1,i+1,1),null),t.addEditOperation(new He.e(o.endLineNumber,e.getLineMaxColumn(o.endLineNumber),o.endLineNumber,e.getLineMaxColumn(o.endLineNumber)),"\n"+s),this.shouldAutoIndent(e,o)){l.getLineContent=t=>t===i?e.getLineContent(o.startLineNumber):e.getLineContent(t);const s=this.matchEnterRule(e,a,n,o.startLineNumber,o.startLineNumber-2);if(null!==s)0!==s&&this.getIndentEditsOfMovingBlock(e,t,o,n,r,s);else{const s=(0,af.n8)(this._autoIndent,l,e.getLanguageIdAtPosition(o.startLineNumber,1),i,a,this._languageConfigurationService);if(null!==s){const i=ii.V8(e.getLineContent(o.startLineNumber)),a=sf(s,n),l=sf(i,n);if(a!==l){const i=a-l;this.getIndentEditsOfMovingBlock(e,t,o,n,r,i)}}}}}this._selectionId=t.trackSelection(o)}buildIndentConverter(e,t,i){return{shiftIndent:o=>nf.U.shiftIndent(o,o.length+1,e,t,i),unshiftIndent:o=>nf.U.unshiftIndent(o,o.length+1,e,t,i)}}parseEnterResult(e,t,i,o,n){if(n){let s=n.indentation;n.indentAction===iv.wU.None||n.indentAction===iv.wU.Indent?s=n.indentation+n.appendText:n.indentAction===iv.wU.IndentOutdent?s=n.indentation:n.indentAction===iv.wU.Outdent&&(s=t.unshiftIndent(n.indentation)+n.appendText);const r=e.getLineContent(o);if(this.trimStart(r).indexOf(this.trimStart(s))>=0){const n=ii.V8(e.getLineContent(o));let r=ii.V8(s);const a=(0,af.tI)(e,o,this._languageConfigurationService);null!==a&&2&a&&(r=t.unshiftIndent(r));return sf(r,i)-sf(n,i)}}return null}matchEnterRuleMovingDown(e,t,i,o,n,s){if(ii.ow(s)>=0){const s=e.getLineMaxColumn(n),r=(0,ov.A)(this._autoIndent,e,new He.e(n,s,n,s),this._languageConfigurationService);return this.parseEnterResult(e,t,i,o,r)}{let n=o-1;for(;n>=1;){const t=e.getLineContent(n);if(ii.ow(t)>=0)break;n--}if(n<1||o>e.getLineCount())return null;const s=e.getLineMaxColumn(n),r=(0,ov.A)(this._autoIndent,e,new He.e(n,s,n,s),this._languageConfigurationService);return this.parseEnterResult(e,t,i,o,r)}}matchEnterRule(e,t,i,o,n,s){let r=n;for(;r>=1;){let t;t=r===n&&void 0!==s?s:e.getLineContent(r);if(ii.ow(t)>=0)break;r--}if(r<1||o>e.getLineCount())return null;const a=e.getLineMaxColumn(r),l=(0,ov.A)(this._autoIndent,e,new He.e(r,a,r,a),this._languageConfigurationService);return this.parseEnterResult(e,t,i,o,l)}trimStart(e){return e.replace(/^\s+/,"")}shouldAutoIndent(e,t){if(this._autoIndent<4)return!1;if(!e.tokenization.isCheapToTokenize(t.startLineNumber))return!1;const i=e.getLanguageIdAtPosition(t.startLineNumber,1);return i===e.getLanguageIdAtPosition(t.endLineNumber,1)&&null!==this._languageConfigurationService.getLanguageConfiguration(i).indentRulesSupport}getIndentEditsOfMovingBlock(e,t,i,o,n,s){for(let r=i.startLineNumber;r<=i.endLineNumber;r++){const a=e.getLineContent(r),l=ii.V8(a),d=rf(sf(l,o)+s,o,n);d!==l&&(t.addEditOperation(new He.e(r,1,r,l.length+1),d),r===i.endLineNumber&&i.endColumn<=l.length+1&&""===d&&(this._moveEndLineSelectionShrink=!0))}}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(i=i.setEndPosition(i.endLineNumber+1,1)),this._moveEndLineSelectionShrink&&i.startLineNumber<i.endLineNumber&&(i=i.setEndPosition(i.endLineNumber,2)),i}};rv=nv([sv(3,Xn.c_)],rv);class av{static getCollator(){return av._COLLATOR||(av._COLLATOR=new Intl.Collator),av._COLLATOR}constructor(e,t){this.selection=e,this.descending=t,this.selectionId=null}getEditOperations(e,t){const i=function(e,t,i){const o=lv(e,t,i);if(!o)return null;return Yd.h.replace(new He.e(o.startLineNumber,1,o.endLineNumber,e.getLineMaxColumn(o.endLineNumber)),o.after.join("\n"))}(e,this.selection,this.descending);i&&t.addEditOperation(i.range,i.text),this.selectionId=t.trackSelection(this.selection)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}static canRun(e,t,i){if(null===e)return!1;const o=lv(e,t,i);if(!o)return!1;for(let n=0,s=o.before.length;n<s;n++)if(o.before[n]!==o.after[n])return!0;return!1}}function lv(e,t,i){const o=t.startLineNumber;let n=t.endLineNumber;if(1===t.endColumn&&n--,o>=n)return null;const s=[];for(let a=o;a<=n;a++)s.push(e.getLineContent(a));let r=s.slice(0);return r.sort(av.getCollator().compare),!0===i&&(r=r.reverse()),{startLineNumber:o,endLineNumber:n,before:s,after:r}}av._COLLATOR=null;class dv extends ee.R6{constructor(e,t){super(t),this.down=e}run(e,t){if(!t.hasModel())return;const i=t.getSelections().map(((e,t)=>({selection:e,index:t,ignore:!1})));i.sort(((e,t)=>He.e.compareRangesUsingStarts(e.selection,t.selection)));let o=i[0];for(let s=1;s<i.length;s++){const e=i[s];o.selection.endLineNumber===e.selection.startLineNumber&&(o.index<e.index?e.ignore=!0:(o.ignore=!0,o=e))}const n=[];for(const s of i)n.push(new tv(s.selection,this.down,s.ignore));t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}class cv extends ee.R6{constructor(){super({id:"editor.action.duplicateSelection",label:ne.NC("duplicateSelection","Duplicate Selection"),alias:"Duplicate Selection",precondition:oe.u.writable,menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"2_line",title:ne.NC({key:"miDuplicateSelection",comment:["&& denotes a mnemonic"]},"&&Duplicate Selection"),order:5}})}run(e,t,i){if(!t.hasModel())return;const o=[],n=t.getSelections(),s=t.getModel();for(const r of n)if(r.isEmpty())o.push(new tv(r,!0));else{const e=new ke.Y(r.endLineNumber,r.endColumn,r.endLineNumber,r.endColumn);o.push(new $e.OY(e,s.getValueInRange(r)))}t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class hv extends ee.R6{constructor(e,t){super(t),this.down=e}run(e,t){const i=e.get(Xn.c_),o=[],n=t.getSelections()||[],s=t.getOption(12);for(const r of n)o.push(new rv(r,this.down,s,i));t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class uv extends ee.R6{constructor(e,t){super(t),this.descending=e}run(e,t){if(!t.hasModel())return;const i=t.getModel();let o=t.getSelections();1===o.length&&o[0].isEmpty()&&(o=[new ke.Y(1,1,i.getLineCount(),i.getLineMaxColumn(i.getLineCount()))]);for(const s of o)if(!av.canRun(t.getModel(),s,this.descending))return;const n=[];for(let s=0,r=o.length;s<r;s++)n[s]=new av(o[s],this.descending);t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}class gv extends ee.R6{constructor(){super({id:"editor.action.removeDuplicateLines",label:ne.NC("lines.deleteDuplicates","Delete Duplicate Lines"),alias:"Delete Duplicate Lines",precondition:oe.u.writable})}run(e,t){if(!t.hasModel())return;const i=t.getModel();if(1===i.getLineCount()&&1===i.getLineMaxColumn(1))return;const o=[],n=[];let s=0,r=!0,a=t.getSelections();1===a.length&&a[0].isEmpty()&&(a=[new ke.Y(1,1,i.getLineCount(),i.getLineMaxColumn(i.getLineCount()))],r=!1);for(const l of a){const e=new Set,t=[];for(let o=l.startLineNumber;o<=l.endLineNumber;o++){const n=i.getLineContent(o);e.has(n)||(t.push(n),e.add(n))}const r=new ke.Y(l.startLineNumber,1,l.endLineNumber,i.getLineMaxColumn(l.endLineNumber)),a=l.startLineNumber-s,d=new ke.Y(a,1,a+t.length-1,t[t.length-1].length);o.push(Yd.h.replace(r,t.join("\n"))),n.push(d),s+=l.endLineNumber-l.startLineNumber+1-t.length}t.pushUndoStop(),t.executeEdits(this.id,o,r?n:void 0),t.pushUndoStop()}}class pv extends ee.R6{constructor(){super({id:pv.ID,label:ne.NC("lines.trimTrailingWhitespace","Trim Trailing Whitespace"),alias:"Trim Trailing Whitespace",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:(0,Le.gx)(2089,2102),weight:100}})}run(e,t,i){let o=[];"auto-save"===i.reason&&(o=(t.getSelections()||[]).map((e=>new We.L(e.positionLineNumber,e.positionColumn))));const n=t.getSelection();if(null===n)return;const s=e.get(re.Ui),r=t.getModel(),a=s.getValue("files.trimTrailingWhitespaceInRegexAndStrings",{overrideIdentifier:null===r||void 0===r?void 0:r.getLanguageId(),resource:null===r||void 0===r?void 0:r.uri}),l=new Xf(n,o,a);t.pushUndoStop(),t.executeCommands(this.id,[l]),t.pushUndoStop()}}pv.ID="editor.action.trimTrailingWhitespace";class mv extends ee.R6{constructor(){super({id:"editor.action.deleteLines",label:ne.NC("lines.delete","Delete Line"),alias:"Delete Line",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.textInputFocus,primary:3113,weight:100}})}run(e,t){if(!t.hasModel())return;const i=this._getLinesToRemove(t),o=t.getModel();if(1===o.getLineCount()&&1===o.getLineMaxColumn(1))return;let n=0;const s=[],r=[];for(let a=0,l=i.length;a<l;a++){const e=i[a];let t=e.startLineNumber,l=e.endLineNumber,d=1,c=o.getLineMaxColumn(l);l<o.getLineCount()?(l+=1,c=1):t>1&&(t-=1,d=o.getLineMaxColumn(t)),s.push(Yd.h.replace(new ke.Y(t,d,l,c),"")),r.push(new ke.Y(t-n,e.positionColumn,t-n,e.positionColumn)),n+=e.endLineNumber-e.startLineNumber+1}t.pushUndoStop(),t.executeEdits(this.id,s,r),t.pushUndoStop()}_getLinesToRemove(e){const t=e.getSelections().map((e=>{let t=e.endLineNumber;return e.startLineNumber<e.endLineNumber&&1===e.endColumn&&(t-=1),{startLineNumber:e.startLineNumber,selectionStartColumn:e.selectionStartColumn,endLineNumber:t,positionColumn:e.positionColumn}}));t.sort(((e,t)=>e.startLineNumber===t.startLineNumber?e.endLineNumber-t.endLineNumber:e.startLineNumber-t.startLineNumber));const i=[];let o=t[0];for(let n=1;n<t.length;n++)o.endLineNumber+1>=t[n].startLineNumber?o.endLineNumber=t[n].endLineNumber:(i.push(o),o=t[n]);return i.push(o),i}}class _v extends ee.R6{constructor(){super({id:"editor.action.indentLines",label:ne.NC("lines.indent","Indent Line"),alias:"Indent Line",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:2142,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,ev.u6.indent(i.cursorConfig,t.getModel(),t.getSelections())),t.pushUndoStop())}}class fv extends ee.R6{constructor(){super({id:"editor.action.outdentLines",label:ne.NC("lines.outdent","Outdent Line"),alias:"Outdent Line",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:2140,weight:100}})}run(e,t){Y.wk.Outdent.runEditorCommand(e,t,null)}}class vv extends ee.R6{constructor(){super({id:"editor.action.insertLineBefore",label:ne.NC("lines.insertBefore","Insert Line Above"),alias:"Insert Line Above",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:3075,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,ev.u6.lineInsertBefore(i.cursorConfig,t.getModel(),t.getSelections())))}}class bv extends ee.R6{constructor(){super({id:"editor.action.insertLineAfter",label:ne.NC("lines.insertAfter","Insert Line Below"),alias:"Insert Line Below",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:2051,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,ev.u6.lineInsertAfter(i.cursorConfig,t.getModel(),t.getSelections())))}}class Cv extends ee.R6{run(e,t){if(!t.hasModel())return;const i=t.getSelection(),o=this._getRangesToDelete(t),n=[];for(let a=0,l=o.length-1;a<l;a++){const e=o[a],t=o[a+1];null===He.e.intersectRanges(e,t)?n.push(e):o[a+1]=He.e.plusRange(e,t)}n.push(o[o.length-1]);const s=this._getEndCursorState(i,n),r=n.map((e=>Yd.h.replace(e,"")));t.pushUndoStop(),t.executeEdits(this.id,r,s),t.pushUndoStop()}}class Sv extends ee.R6{constructor(){super({id:"editor.action.joinLines",label:ne.NC("lines.joinLines","Join Lines"),alias:"Join Lines",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:0,mac:{primary:296},weight:100}})}run(e,t){const i=t.getSelections();if(null===i)return;let o=t.getSelection();if(null===o)return;i.sort(He.e.compareRangesUsingStarts);const n=[],s=i.reduce(((e,t)=>e.isEmpty()?e.endLineNumber===t.startLineNumber?(o.equalsSelection(e)&&(o=t),t):t.startLineNumber>e.endLineNumber+1?(n.push(e),t):new ke.Y(e.startLineNumber,e.startColumn,t.endLineNumber,t.endColumn):t.startLineNumber>e.endLineNumber?(n.push(e),t):new ke.Y(e.startLineNumber,e.startColumn,t.endLineNumber,t.endColumn)));n.push(s);const r=t.getModel();if(null===r)return;const a=[],l=[];let d=o,c=0;for(let h=0,u=n.length;h<u;h++){const e=n[h],t=e.startLineNumber,i=1;let s,u,g=0;const p=r.getLineLength(e.endLineNumber)-e.endColumn;if(e.isEmpty()||e.startLineNumber===e.endLineNumber){const i=e.getStartPosition();i.lineNumber<r.getLineCount()?(s=t+1,u=r.getLineMaxColumn(s)):(s=i.lineNumber,u=r.getLineMaxColumn(i.lineNumber))}else s=e.endLineNumber,u=r.getLineMaxColumn(s);let m=r.getLineContent(t);for(let o=t+1;o<=s;o++){const e=r.getLineContent(o),t=r.getLineFirstNonWhitespaceColumn(o);if(t>=1){let i=!0;""===m&&(i=!1),!i||" "!==m.charAt(m.length-1)&&"\t"!==m.charAt(m.length-1)||(i=!1,m=m.replace(/[\s\uFEFF\xA0]+$/g," "));const o=e.substr(t-1);m+=(i?" ":"")+o,g=i?o.length+1:o.length}else g=0}const _=new He.e(t,i,s,u);if(!_.isEmpty()){let i;e.isEmpty()?(a.push(Yd.h.replace(_,m)),i=new ke.Y(_.startLineNumber-c,m.length-g+1,t-c,m.length-g+1)):e.startLineNumber===e.endLineNumber?(a.push(Yd.h.replace(_,m)),i=new ke.Y(e.startLineNumber-c,e.startColumn,e.endLineNumber-c,e.endColumn)):(a.push(Yd.h.replace(_,m)),i=new ke.Y(e.startLineNumber-c,e.startColumn,e.startLineNumber-c,m.length-p)),null!==He.e.intersectRanges(_,o)?d=i:l.push(i)}c+=_.endLineNumber-_.startLineNumber}l.unshift(d),t.pushUndoStop(),t.executeEdits(this.id,a,l),t.pushUndoStop()}}class yv extends ee.R6{constructor(){super({id:"editor.action.transpose",label:ne.NC("editor.transpose","Transpose Characters around the Cursor"),alias:"Transpose Characters around the Cursor",precondition:oe.u.writable})}run(e,t){const i=t.getSelections();if(null===i)return;const o=t.getModel();if(null===o)return;const n=[];for(let s=0,r=i.length;s<r;s++){const e=i[s];if(!e.isEmpty())continue;const t=e.getStartPosition(),r=o.getLineMaxColumn(t.lineNumber);if(t.column>=r){if(t.lineNumber===o.getLineCount())continue;const e=new He.e(t.lineNumber,Math.max(1,t.column-1),t.lineNumber+1,1),i=o.getValueInRange(e).split("").reverse().join("");n.push(new $e.T4(new ke.Y(t.lineNumber,Math.max(1,t.column-1),t.lineNumber+1,1),i))}else{const e=new He.e(t.lineNumber,Math.max(1,t.column-1),t.lineNumber,t.column+1),i=o.getValueInRange(e).split("").reverse().join("");n.push(new $e.hP(e,i,new ke.Y(t.lineNumber,t.column+1,t.lineNumber,t.column+1)))}}t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}class wv extends ee.R6{run(e,t){const i=t.getSelections();if(null===i)return;const o=t.getModel();if(null===o)return;const n=t.getOption(131),s=[];for(const r of i)if(r.isEmpty()){const e=r.getStartPosition(),i=t.getConfiguredWordAtPosition(e);if(!i)continue;const a=new He.e(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn),l=o.getValueInRange(a);s.push(Yd.h.replace(a,this._modifyText(l,n)))}else{const e=o.getValueInRange(r);s.push(Yd.h.replace(r,this._modifyText(e,n)))}t.pushUndoStop(),t.executeEdits(this.id,s),t.pushUndoStop()}}class xv{constructor(e,t){this._pattern=e,this._flags=t,this._actual=null,this._evaluated=!1}get(){if(!this._evaluated){this._evaluated=!0;try{this._actual=new RegExp(this._pattern,this._flags)}catch(e){}}return this._actual}isSupported(){return null!==this.get()}}class Nv extends wv{constructor(){super({id:"editor.action.transformToTitlecase",label:ne.NC("editor.transformToTitlecase","Transform to Title Case"),alias:"Transform to Title Case",precondition:oe.u.writable})}_modifyText(e,t){const i=Nv.titleBoundary.get();return i?e.toLocaleLowerCase().replace(i,(e=>e.toLocaleUpperCase())):e}}Nv.titleBoundary=new xv("(^|[^\\p{L}\\p{N}']|((^|\\P{L})'))\\p{L}","gmu");class Lv extends wv{constructor(){super({id:"editor.action.transformToSnakecase",label:ne.NC("editor.transformToSnakecase","Transform to Snake Case"),alias:"Transform to Snake Case",precondition:oe.u.writable})}_modifyText(e,t){const i=Lv.caseBoundary.get(),o=Lv.singleLetters.get();return i&&o?e.replace(i,"$1_$2").replace(o,"$1_$2$3").toLocaleLowerCase():e}}Lv.caseBoundary=new xv("(\\p{Ll})(\\p{Lu})","gmu"),Lv.singleLetters=new xv("(\\p{Lu}|\\p{N})(\\p{Lu})(\\p{Ll})","gmu");class kv extends wv{constructor(){super({id:"editor.action.transformToCamelcase",label:ne.NC("editor.transformToCamelcase","Transform to Camel Case"),alias:"Transform to Camel Case",precondition:oe.u.writable})}_modifyText(e,t){const i=kv.wordBoundary.get();if(!i)return e;const o=e.split(i);return o.shift()+o.map((e=>e.substring(0,1).toLocaleUpperCase()+e.substring(1))).join("")}}kv.wordBoundary=new xv("[_\\s-]","gm");class Dv extends wv{constructor(){super({id:"editor.action.transformToPascalcase",label:ne.NC("editor.transformToPascalcase","Transform to Pascal Case"),alias:"Transform to Pascal Case",precondition:oe.u.writable})}_modifyText(e,t){const i=Dv.wordBoundary.get(),o=Dv.wordBoundaryToMaintain.get();if(!i||!o)return e;return e.split(o).map((e=>e.split(i))).flat().map((e=>e.substring(0,1).toLocaleUpperCase()+e.substring(1))).join("")}}Dv.wordBoundary=new xv("[_\\s-]","gm"),Dv.wordBoundaryToMaintain=new xv("(?<=\\.)","gm");class Iv extends wv{static isSupported(){return[this.caseBoundary,this.singleLetters,this.underscoreBoundary].every((e=>e.isSupported()))}constructor(){super({id:"editor.action.transformToKebabcase",label:ne.NC("editor.transformToKebabcase","Transform to Kebab Case"),alias:"Transform to Kebab Case",precondition:oe.u.writable})}_modifyText(e,t){const i=Iv.caseBoundary.get(),o=Iv.singleLetters.get(),n=Iv.underscoreBoundary.get();return i&&o&&n?e.replace(n,"$1-$3").replace(i,"$1-$2").replace(o,"$1-$2").toLocaleLowerCase():e}}Iv.caseBoundary=new xv("(\\p{Ll})(\\p{Lu})","gmu"),Iv.singleLetters=new xv("(\\p{Lu}|\\p{N})(\\p{Lu}\\p{Ll})","gmu"),Iv.underscoreBoundary=new xv("(\\S)(_)(\\S)","gm"),(0,ee.Qr)(class extends dv{constructor(){super(!1,{id:"editor.action.copyLinesUpAction",label:ne.NC("lines.copyUp","Copy Line Up"),alias:"Copy Line Up",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:1552,linux:{primary:3600},weight:100},menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"2_line",title:ne.NC({key:"miCopyLinesUp",comment:["&& denotes a mnemonic"]},"&&Copy Line Up"),order:1}})}}),(0,ee.Qr)(class extends dv{constructor(){super(!0,{id:"editor.action.copyLinesDownAction",label:ne.NC("lines.copyDown","Copy Line Down"),alias:"Copy Line Down",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:1554,linux:{primary:3602},weight:100},menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"2_line",title:ne.NC({key:"miCopyLinesDown",comment:["&& denotes a mnemonic"]},"Co&&py Line Down"),order:2}})}}),(0,ee.Qr)(cv),(0,ee.Qr)(class extends hv{constructor(){super(!1,{id:"editor.action.moveLinesUpAction",label:ne.NC("lines.moveUp","Move Line Up"),alias:"Move Line Up",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:528,linux:{primary:528},weight:100},menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"2_line",title:ne.NC({key:"miMoveLinesUp",comment:["&& denotes a mnemonic"]},"Mo&&ve Line Up"),order:3}})}}),(0,ee.Qr)(class extends hv{constructor(){super(!0,{id:"editor.action.moveLinesDownAction",label:ne.NC("lines.moveDown","Move Line Down"),alias:"Move Line Down",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:530,linux:{primary:530},weight:100},menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"2_line",title:ne.NC({key:"miMoveLinesDown",comment:["&& denotes a mnemonic"]},"Move &&Line Down"),order:4}})}}),(0,ee.Qr)(class extends uv{constructor(){super(!1,{id:"editor.action.sortLinesAscending",label:ne.NC("lines.sortAscending","Sort Lines Ascending"),alias:"Sort Lines Ascending",precondition:oe.u.writable})}}),(0,ee.Qr)(class extends uv{constructor(){super(!0,{id:"editor.action.sortLinesDescending",label:ne.NC("lines.sortDescending","Sort Lines Descending"),alias:"Sort Lines Descending",precondition:oe.u.writable})}}),(0,ee.Qr)(gv),(0,ee.Qr)(pv),(0,ee.Qr)(mv),(0,ee.Qr)(_v),(0,ee.Qr)(fv),(0,ee.Qr)(vv),(0,ee.Qr)(bv),(0,ee.Qr)(class extends Cv{constructor(){super({id:"deleteAllLeft",label:ne.NC("lines.deleteAllLeft","Delete All Left"),alias:"Delete All Left",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.textInputFocus,primary:0,mac:{primary:2049},weight:100}})}_getEndCursorState(e,t){let i=null;const o=[];let n=0;return t.forEach((t=>{let s;if(1===t.endColumn&&n>0){const e=t.startLineNumber-n;s=new ke.Y(e,t.startColumn,e,t.startColumn)}else s=new ke.Y(t.startLineNumber,t.startColumn,t.startLineNumber,t.startColumn);n+=t.endLineNumber-t.startLineNumber,t.intersectRanges(e)?i=s:o.push(s)})),i&&o.unshift(i),o}_getRangesToDelete(e){const t=e.getSelections();if(null===t)return[];let i=t;const o=e.getModel();return null===o?[]:(i.sort(He.e.compareRangesUsingStarts),i=i.map((e=>{if(e.isEmpty()){if(1===e.startColumn){const t=Math.max(1,e.startLineNumber-1),i=1===e.startLineNumber?1:o.getLineLength(t)+1;return new He.e(t,i,e.startLineNumber,1)}return new He.e(e.startLineNumber,1,e.startLineNumber,e.startColumn)}return new He.e(e.startLineNumber,1,e.endLineNumber,e.endColumn)})),i)}}),(0,ee.Qr)(class extends Cv{constructor(){super({id:"deleteAllRight",label:ne.NC("lines.deleteAllRight","Delete All Right"),alias:"Delete All Right",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.textInputFocus,primary:0,mac:{primary:297,secondary:[2068]},weight:100}})}_getEndCursorState(e,t){let i=null;const o=[];for(let n=0,s=t.length,r=0;n<s;n++){const s=t[n],a=new ke.Y(s.startLineNumber-r,s.startColumn,s.startLineNumber-r,s.startColumn);s.intersectRanges(e)?i=a:o.push(a)}return i&&o.unshift(i),o}_getRangesToDelete(e){const t=e.getModel();if(null===t)return[];const i=e.getSelections();if(null===i)return[];const o=i.map((e=>{if(e.isEmpty()){const i=t.getLineMaxColumn(e.startLineNumber);return e.startColumn===i?new He.e(e.startLineNumber,e.startColumn,e.startLineNumber+1,1):new He.e(e.startLineNumber,e.startColumn,e.startLineNumber,i)}return e}));return o.sort(He.e.compareRangesUsingStarts),o}}),(0,ee.Qr)(Sv),(0,ee.Qr)(yv),(0,ee.Qr)(class extends wv{constructor(){super({id:"editor.action.transformToUppercase",label:ne.NC("editor.transformToUppercase","Transform to Uppercase"),alias:"Transform to Uppercase",precondition:oe.u.writable})}_modifyText(e,t){return e.toLocaleUpperCase()}}),(0,ee.Qr)(class extends wv{constructor(){super({id:"editor.action.transformToLowercase",label:ne.NC("editor.transformToLowercase","Transform to Lowercase"),alias:"Transform to Lowercase",precondition:oe.u.writable})}_modifyText(e,t){return e.toLocaleLowerCase()}}),Lv.caseBoundary.isSupported()&&Lv.singleLetters.isSupported()&&(0,ee.Qr)(Lv),kv.wordBoundary.isSupported()&&(0,ee.Qr)(kv),Dv.wordBoundary.isSupported()&&(0,ee.Qr)(Dv),Nv.titleBoundary.isSupported()&&(0,ee.Qr)(Nv),Iv.isSupported()&&(0,ee.Qr)(Iv);var Rv,Pv=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Mv=function(e,t){return function(i,o){t(i,o,e)}};const Tv=new ae.uy("LinkedEditingInputVisible",!1);let Ev=Rv=class extends Fe.JT{static get(e){return e.getContribution(Rv.ID)}constructor(e,t,i,o,n){super(),this.languageConfigurationService=o,this._syncRangesToken=0,this._localToDispose=this._register(new Fe.SL),this._editor=e,this._providers=i.linkedEditingRangeProvider,this._enabled=!1,this._visibleContextKey=Tv.bindTo(t),this._debounceInformation=n.for(this._providers,"Linked Editing",{max:200}),this._currentDecorations=this._editor.createDecorationsCollection(),this._languageWordPattern=null,this._currentWordPattern=null,this._ignoreChangeEvent=!1,this._localToDispose=this._register(new Fe.SL),this._rangeUpdateTriggerPromise=null,this._rangeSyncTriggerPromise=null,this._currentRequestCts=null,this._currentRequestPosition=null,this._currentRequestModelVersion=null,this._register(this._editor.onDidChangeModel((()=>this.reinitialize(!0)))),this._register(this._editor.onDidChangeConfiguration((e=>{(e.hasChanged(70)||e.hasChanged(93))&&this.reinitialize(!1)}))),this._register(this._providers.onDidChange((()=>this.reinitialize(!1)))),this._register(this._editor.onDidChangeModelLanguage((()=>this.reinitialize(!0)))),this.reinitialize(!0)}reinitialize(e){const t=this._editor.getModel(),i=null!==t&&(this._editor.getOption(70)||this._editor.getOption(93))&&this._providers.has(t);if(i===this._enabled&&!e)return;if(this._enabled=i,this.clearRanges(),this._localToDispose.clear(),!i||null===t)return;this._localToDispose.add(ui.ju.runAndSubscribe(t.onDidChangeLanguageConfiguration,(()=>{this._languageWordPattern=this.languageConfigurationService.getLanguageConfiguration(t.getLanguageId()).getWordDefinition()})));const o=new Oe.vp(this._debounceInformation.get(t)),n=()=>{var e;this._rangeUpdateTriggerPromise=o.trigger((()=>this.updateRanges()),null!==(e=this._debounceDuration)&&void 0!==e?e:this._debounceInformation.get(t))},s=new Oe.vp(0),r=e=>{this._rangeSyncTriggerPromise=s.trigger((()=>this._syncRanges(e)))};this._localToDispose.add(this._editor.onDidChangeCursorPosition((()=>{n()}))),this._localToDispose.add(this._editor.onDidChangeModelContent((e=>{if(!this._ignoreChangeEvent&&this._currentDecorations.length>0){const t=this._currentDecorations.getRange(0);if(t&&e.changes.every((e=>t.intersectRanges(e.range))))return void r(this._syncRangesToken)}n()}))),this._localToDispose.add({dispose:()=>{o.dispose(),s.dispose()}}),this.updateRanges()}_syncRanges(e){if(!this._editor.hasModel()||e!==this._syncRangesToken||0===this._currentDecorations.length)return;const t=this._editor.getModel(),i=this._currentDecorations.getRange(0);if(!i||i.startLineNumber!==i.endLineNumber)return this.clearRanges();const o=t.getValueInRange(i);if(this._currentWordPattern){const e=o.match(this._currentWordPattern);if((e?e[0].length:0)!==o.length)return this.clearRanges()}const n=[];for(let s=1,r=this._currentDecorations.length;s<r;s++){const e=this._currentDecorations.getRange(s);if(e)if(e.startLineNumber!==e.endLineNumber)n.push({range:e,text:o});else{let i=t.getValueInRange(e),s=o,r=e.startColumn,a=e.endColumn;const l=ii.Mh(i,s);r+=l,i=i.substr(l),s=s.substr(l);const d=ii.P1(i,s);a-=d,i=i.substr(0,i.length-d),s=s.substr(0,s.length-d),r===a&&0===s.length||n.push({range:new He.e(e.startLineNumber,r,e.endLineNumber,a),text:s})}}if(0!==n.length)try{this._editor.popUndoStop(),this._ignoreChangeEvent=!0;const e=this._editor._getViewModel().getPrevEditOperationType();this._editor.executeEdits("linkedEditing",n),this._editor._getViewModel().setPrevEditOperationType(e)}finally{this._ignoreChangeEvent=!1}}dispose(){this.clearRanges(),super.dispose()}clearRanges(){this._visibleContextKey.set(!1),this._currentDecorations.clear(),this._currentRequestCts&&(this._currentRequestCts.cancel(),this._currentRequestCts=null,this._currentRequestPosition=null)}async updateRanges(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this._editor.hasModel())return void this.clearRanges();const t=this._editor.getPosition();if(!this._enabled&&!e||this._editor.getSelections().length>1)return void this.clearRanges();const i=this._editor.getModel(),o=i.getVersionId();if(this._currentRequestPosition&&this._currentRequestModelVersion===o){if(t.equals(this._currentRequestPosition))return;if(this._currentDecorations.length>0){const e=this._currentDecorations.getRange(0);if(e&&e.containsPosition(t))return}}this.clearRanges(),this._currentRequestPosition=t,this._currentRequestModelVersion=o;const n=this._currentRequestCts=new Yi.A;try{const e=new Yn.G(!1),s=await Fv(this._providers,i,t,n.token);if(this._debounceInformation.update(i,e.elapsed()),n!==this._currentRequestCts)return;if(this._currentRequestCts=null,o!==i.getVersionId())return;let r=[];(null===s||void 0===s?void 0:s.ranges)&&(r=s.ranges),this._currentWordPattern=(null===s||void 0===s?void 0:s.wordPattern)||this._languageWordPattern;let a=!1;for(let i=0,o=r.length;i<o;i++)if(He.e.containsPosition(r[i],t)){if(a=!0,0!==i){const e=r[i];r.splice(i,1),r.unshift(e)}break}if(!a)return void this.clearRanges();const l=r.map((e=>({range:e,options:Rv.DECORATION})));this._visibleContextKey.set(!0),this._currentDecorations.set(l),this._syncRangesToken++}catch(s){(0,Ji.n2)(s)||(0,Ji.dL)(s),this._currentRequestCts!==n&&this._currentRequestCts||this.clearRanges()}}};Ev.ID="editor.contrib.linkedEditing",Ev.DECORATION=Be.qx.register({description:"linked-editing",stickiness:0,className:"linked-editing-decoration"}),Ev=Rv=Pv([Mv(1,ae.i6),Mv(2,kt.p),Mv(3,Xn.c_),Mv(4,jn.A)],Ev);class Av extends ee.R6{constructor(){super({id:"editor.action.linkedEditing",label:ne.NC("linkedEditing.label","Start Linked Editing"),alias:"Start Linked Editing",precondition:ae.Ao.and(oe.u.writable,oe.u.hasRenameProvider),kbOpts:{kbExpr:oe.u.editorTextFocus,primary:3132,weight:100}})}runCommand(e,t){const i=e.get(te.$),[o,n]=Array.isArray(t)&&t||[void 0,void 0];return _t.o.isUri(o)&&We.L.isIPosition(n)?i.openCodeEditor({resource:o},i.getActiveCodeEditor()).then((e=>{e&&(e.setPosition(n),e.invokeWithinContext((t=>(this.reportTelemetry(t,e),this.run(t,e)))))}),Ji.dL):super.runCommand(e,t)}run(e,t){const i=Ev.get(t);return i?Promise.resolve(i.updateRanges(!0)):Promise.resolve()}}const Ov=ee._l.bindToContribution(Ev.get);function Fv(e,t,i,o){const n=e.ordered(t);return(0,Oe.Ps)(n.map((e=>async()=>{try{return await e.provideLinkedEditingRanges(t,i,o)}catch(n){return void(0,Ji.Cp)(n)}})),(e=>!!e&&nt.Of(null===e||void 0===e?void 0:e.ranges)))}(0,ee.fK)(new Ov({id:"cancelLinkedEditingInput",precondition:Tv,handler:e=>e.clearRanges(),kbOpts:{kbExpr:oe.u.editorTextFocus,weight:199,primary:9,secondary:[1033]}}));(0,ze.P6G)("editor.linkedEditingBackground",{dark:Zn.Il.fromHex("#f00").transparent(.3),light:Zn.Il.fromHex("#f00").transparent(.3),hcDark:Zn.Il.fromHex("#f00").transparent(.3),hcLight:Zn.Il.white},ne.NC("editorLinkedEditingBackground","Background color when the editor auto renames on type."));(0,ee.sb)("_executeLinkedEditingProvider",((e,t,i)=>{const{linkedEditingRangeProvider:o}=e.get(kt.p);return Fv(o,t,i,Yi.T.None)})),(0,ee._K)(Ev.ID,Ev,1),(0,ee.Qr)(Av);class Wv{constructor(e,t){this._link=e,this._provider=t}toJSON(){return{range:this.range,url:this.url,tooltip:this.tooltip}}get range(){return this._link.range}get url(){return this._link.url}get tooltip(){return this._link.tooltip}async resolve(e){return this._link.url?this._link.url:"function"===typeof this._provider.resolveLink?Promise.resolve(this._provider.resolveLink(this._link,e)).then((t=>(this._link=t||this._link,this._link.url?this.resolve(e):Promise.reject(new Error("missing"))))):Promise.reject(new Error("missing"))}}class Hv{constructor(e){this._disposables=new Fe.SL;let t=[];for(const[i,o]of e){const e=i.links.map((e=>new Wv(e,o)));t=Hv._union(t,e),(0,Fe.Wf)(i)&&this._disposables.add(i)}this.links=t}dispose(){this._disposables.dispose(),this.links.length=0}static _union(e,t){const i=[];let o,n,s,r;for(o=0,s=0,n=e.length,r=t.length;o<n&&s<r;){const n=e[o],r=t[s];if(He.e.areIntersectingOrTouching(n.range,r.range)){o++;continue}He.e.compareRangesUsingStarts(n.range,r.range)<0?(i.push(n),o++):(i.push(r),s++)}for(;o<n;o++)i.push(e[o]);for(;s<r;s++)i.push(t[s]);return i}}function Vv(e,t,i){const o=[],n=e.ordered(t).reverse().map(((e,n)=>Promise.resolve(e.provideLinks(t,i)).then((t=>{t&&(o[n]=[t,e])}),Ji.Cp)));return Promise.all(n).then((()=>{const e=new Hv((0,nt.kX)(o));return i.isCancellationRequested?(e.dispose(),new Hv([])):e}))}ye.P.registerCommand("_executeLinkProvider",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];let[n,s]=i;(0,Dn.p_)(n instanceof _t.o),"number"!==typeof s&&(s=0);const{linkProvider:r}=e.get(kt.p),a=e.get($i.q).getModel(n);if(!a)return[];const l=await Vv(r,a,Yi.T.None);if(!l)return[];for(let c=0;c<Math.min(s,l.links.length);c++)await l.links[c].resolve(Yi.T.None);const d=l.links.slice(0);return l.dispose(),d}));var Bv,zv=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Uv=function(e,t){return function(i,o){t(i,o,e)}};let Kv=Bv=class extends Fe.JT{static get(e){return e.getContribution(Bv.ID)}constructor(e,t,i,o,n){super(),this.editor=e,this.openerService=t,this.notificationService=i,this.languageFeaturesService=o,this.providers=this.languageFeaturesService.linkProvider,this.debounceInformation=n.for(this.providers,"Links",{min:1e3,max:4e3}),this.computeLinks=this._register(new Oe.pY((()=>this.computeLinksNow()),1e3)),this.computePromise=null,this.activeLinksList=null,this.currentOccurrences={},this.activeLinkDecorationId=null;const s=this._register(new Ys(e));this._register(s.onMouseMoveOrRelevantKeyDown((e=>{let[t,i]=e;this._onEditorMouseMove(t,i)}))),this._register(s.onExecute((e=>{this.onEditorMouseUp(e)}))),this._register(s.onCancel((e=>{this.cleanUpActiveLinkDecoration()}))),this._register(e.onDidChangeConfiguration((e=>{e.hasChanged(71)&&(this.updateDecorations([]),this.stop(),this.computeLinks.schedule(0))}))),this._register(e.onDidChangeModelContent((e=>{this.editor.hasModel()&&this.computeLinks.schedule(this.debounceInformation.get(this.editor.getModel()))}))),this._register(e.onDidChangeModel((e=>{this.currentOccurrences={},this.activeLinkDecorationId=null,this.stop(),this.computeLinks.schedule(0)}))),this._register(e.onDidChangeModelLanguage((e=>{this.stop(),this.computeLinks.schedule(0)}))),this._register(this.providers.onDidChange((e=>{this.stop(),this.computeLinks.schedule(0)}))),this.computeLinks.schedule(0)}async computeLinksNow(){if(!this.editor.hasModel()||!this.editor.getOption(71))return;const e=this.editor.getModel();if(!e.isTooLargeForSyncing()&&this.providers.has(e)){this.activeLinksList&&(this.activeLinksList.dispose(),this.activeLinksList=null),this.computePromise=(0,Oe.PG)((t=>Vv(this.providers,e,t)));try{const t=new Yn.G(!1);if(this.activeLinksList=await this.computePromise,this.debounceInformation.update(e,t.elapsed()),e.isDisposed())return;this.updateDecorations(this.activeLinksList.links)}catch(t){(0,Ji.dL)(t)}finally{this.computePromise=null}}}updateDecorations(e){const t="altKey"===this.editor.getOption(78),i=[],o=Object.keys(this.currentOccurrences);for(const s of o){const e=this.currentOccurrences[s];i.push(e.decorationId)}const n=[];if(e)for(const s of e)n.push(Gv.decoration(s,t));this.editor.changeDecorations((t=>{const o=t.deltaDecorations(i,n);this.currentOccurrences={},this.activeLinkDecorationId=null;for(let i=0,n=o.length;i<n;i++){const t=new Gv(e[i],o[i]);this.currentOccurrences[t.decorationId]=t}}))}_onEditorMouseMove(e,t){const i="altKey"===this.editor.getOption(78);if(this.isEnabled(e,t)){this.cleanUpActiveLinkDecoration();const t=this.getLinkOccurrence(e.target.position);t&&this.editor.changeDecorations((e=>{t.activate(e,i),this.activeLinkDecorationId=t.decorationId}))}else this.cleanUpActiveLinkDecoration()}cleanUpActiveLinkDecoration(){const e="altKey"===this.editor.getOption(78);if(this.activeLinkDecorationId){const t=this.currentOccurrences[this.activeLinkDecorationId];t&&this.editor.changeDecorations((i=>{t.deactivate(i,e)})),this.activeLinkDecorationId=null}}onEditorMouseUp(e){if(!this.isEnabled(e))return;const t=this.getLinkOccurrence(e.target.position);t&&this.openLinkOccurrence(t,e.hasSideBySideModifier,!0)}openLinkOccurrence(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!this.openerService)return;const{link:o}=e;o.resolve(Yi.T.None).then((e=>{if("string"===typeof e&&this.editor.hasModel()){const t=this.editor.getModel().uri;if(t.scheme===Dt.lg.file&&e.startsWith("".concat(Dt.lg.file,":"))){const i=_t.o.parse(e);if(i.scheme===Dt.lg.file){const o=It.z_(i);let n=null;o.startsWith("/./")||o.startsWith("\\.\\")?n=".".concat(o.substr(1)):(o.startsWith("//./")||o.startsWith("\\\\.\\"))&&(n=".".concat(o.substr(2))),n&&(e=It.Vo(t,n))}}}return this.openerService.open(e,{openToSide:t,fromUserGesture:i,allowContributedOpeners:!0,allowCommands:!0,fromWorkspace:!0})}),(e=>{const t=e instanceof Error?e.message:e;"invalid"===t?this.notificationService.warn(ne.NC("invalid.url","Failed to open this link because it is not well-formed: {0}",o.url.toString())):"missing"===t?this.notificationService.warn(ne.NC("missing.url","Failed to open this link because its target is missing.")):(0,Ji.dL)(e)}))}getLinkOccurrence(e){if(!this.editor.hasModel()||!e)return null;const t=this.editor.getModel().getDecorationsInRange({startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column},0,!0);for(const i of t){const e=this.currentOccurrences[i.id];if(e)return e}return null}isEnabled(e,t){return Boolean(6===e.target.type&&(e.hasTriggerModifier||t&&t.keyCodeIsTriggerKey))}stop(){var e;this.computeLinks.cancel(),this.activeLinksList&&(null===(e=this.activeLinksList)||void 0===e||e.dispose(),this.activeLinksList=null),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop()}};Kv.ID="editor.linkDetector",Kv=Bv=zv([Uv(1,pi.v),Uv(2,Xi.lT),Uv(3,kt.p),Uv(4,jn.A)],Kv);const jv=Be.qx.register({description:"detected-link",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link"}),qv=Be.qx.register({description:"detected-link-active",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link-active"});class Gv{static decoration(e,t){return{range:e.range,options:Gv._getOptions(e,t,!1)}}static _getOptions(e,t,i){const o={...i?qv:jv};return o.hoverMessage=function(e,t){const i=e.url&&/^command:/i.test(e.url.toString()),o=e.tooltip?e.tooltip:i?ne.NC("links.navigate.executeCmd","Execute command"):ne.NC("links.navigate.follow","Follow link"),n=t?it.dz?ne.NC("links.navigate.kb.meta.mac","cmd + click"):ne.NC("links.navigate.kb.meta","ctrl + click"):it.dz?ne.NC("links.navigate.kb.alt.mac","option + click"):ne.NC("links.navigate.kb.alt","alt + click");if(e.url){let t="";if(/^command:/i.test(e.url.toString())){const i=e.url.toString().match(/^command:([^?#]+)/);if(i){const e=i[1];t=ne.NC("tooltip.explanation","Execute command {0}",e)}}return new Ne.W5("",!0).appendLink(e.url.toString(!0).replace(/ /g,"%20"),o,t).appendMarkdown(" (".concat(n,")"))}return(new Ne.W5).appendText("".concat(o," (").concat(n,")"))}(e,t),o}constructor(e,t){this.link=e,this.decorationId=t}activate(e,t){e.changeDecorationOptions(this.decorationId,Gv._getOptions(this.link,t,!0))}deactivate(e,t){e.changeDecorationOptions(this.decorationId,Gv._getOptions(this.link,t,!1))}}class Qv extends ee.R6{constructor(){super({id:"editor.action.openLink",label:ne.NC("label","Open Link"),alias:"Open Link",precondition:void 0})}run(e,t){const i=Kv.get(t);if(!i)return;if(!t.hasModel())return;const o=t.getSelections();for(const n of o){const e=i.getLinkOccurrence(n.getEndPosition());e&&i.openLinkOccurrence(e,!1)}}}(0,ee._K)(Kv.ID,Kv,1),(0,ee.Qr)(Qv);class Zv extends Fe.JT{constructor(e){super(),this._editor=e,this._register(this._editor.onMouseDown((e=>{const t=this._editor.getOption(117);t>=0&&6===e.target.type&&e.target.position.column>=t&&this._editor.updateOptions({stopRenderingLineAfter:-1})})))}}Zv.ID="editor.contrib.longLinesHelper",(0,ee._K)(Zv.ID,Zv,2);const Yv=(0,ze.P6G)("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hcDark:null,hcLight:null},ne.NC("wordHighlight","Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations."),!0);(0,ze.P6G)("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hcDark:null,hcLight:null},ne.NC("wordHighlightStrong","Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations."),!0),(0,ze.P6G)("editor.wordHighlightTextBackground",{light:Yv,dark:Yv,hcDark:Yv,hcLight:Yv},ne.NC("wordHighlightText","Background color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0);const Jv=(0,ze.P6G)("editor.wordHighlightBorder",{light:null,dark:null,hcDark:ze.xL1,hcLight:ze.xL1},ne.NC("wordHighlightBorder","Border color of a symbol during read-access, like reading a variable."));(0,ze.P6G)("editor.wordHighlightStrongBorder",{light:null,dark:null,hcDark:ze.xL1,hcLight:ze.xL1},ne.NC("wordHighlightStrongBorder","Border color of a symbol during write-access, like writing to a variable.")),(0,ze.P6G)("editor.wordHighlightTextBorder",{light:Jv,dark:Jv,hcDark:Jv,hcLight:Jv},ne.NC("wordHighlightTextBorder","Border color of a textual occurrence for a symbol."));const $v=(0,ze.P6G)("editorOverviewRuler.wordHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hcDark:"#A0A0A0CC",hcLight:"#A0A0A0CC"},ne.NC("overviewRulerWordHighlightForeground","Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),Xv=(0,ze.P6G)("editorOverviewRuler.wordHighlightStrongForeground",{dark:"#C0A0C0CC",light:"#C0A0C0CC",hcDark:"#C0A0C0CC",hcLight:"#C0A0C0CC"},ne.NC("overviewRulerWordHighlightStrongForeground","Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),eb=(0,ze.P6G)("editorOverviewRuler.wordHighlightTextForeground",{dark:ze.SPM,light:ze.SPM,hcDark:ze.SPM,hcLight:ze.SPM},ne.NC("overviewRulerWordHighlightTextForeground","Overview ruler marker color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0),tb=Be.qx.register({description:"word-highlight-strong",stickiness:1,className:"wordHighlightStrong",overviewRuler:{color:(0,Ue.EN)(Xv),position:Ve.sh.Center},minimap:{color:(0,Ue.EN)(ze.IYc),position:1}}),ib=Be.qx.register({description:"word-highlight-text",stickiness:1,className:"wordHighlightText",overviewRuler:{color:(0,Ue.EN)(eb),position:Ve.sh.Center},minimap:{color:(0,Ue.EN)(ze.IYc),position:1}}),ob=Be.qx.register({description:"selection-highlight-overview",stickiness:1,className:"selectionHighlight",overviewRuler:{color:(0,Ue.EN)(ze.SPM),position:Ve.sh.Center},minimap:{color:(0,Ue.EN)(ze.IYc),position:1}}),nb=Be.qx.register({description:"selection-highlight",stickiness:1,className:"selectionHighlight"}),sb=Be.qx.register({description:"word-highlight",stickiness:1,className:"wordHighlight",overviewRuler:{color:(0,Ue.EN)($v),position:Ve.sh.Center},minimap:{color:(0,Ue.EN)(ze.IYc),position:1}});function rb(e){return e?nb:ob}(0,Ue.Ic)(((e,t)=>{const i=e.getColor(ze.Rzx);i&&t.addRule(".monaco-editor .selectionHighlight { background-color: ".concat(i.transparent(.5),"; }"))}));var ab,lb=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},db=function(e,t){return function(i,o){t(i,o,e)}};function cb(e,t){const i=t.filter((t=>!e.find((e=>e.equals(t)))));if(i.length>=1){const e=i.map((e=>"line ".concat(e.viewState.position.lineNumber," column ").concat(e.viewState.position.column))).join(", "),t=1===i.length?ne.NC("cursorAdded","Cursor added: {0}",e):ne.NC("cursorsAdded","Cursors added: {0}",e);(0,xe.i7)(t)}}class hb extends ee.R6{constructor(){super({id:"editor.action.insertCursorAbove",label:ne.NC("mutlicursor.insertAbove","Add Cursor Above"),alias:"Add Cursor Above",precondition:void 0,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:2576,linux:{primary:1552,secondary:[3088]},weight:100},menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"3_multi",title:ne.NC({key:"miInsertCursorAbove",comment:["&& denotes a mnemonic"]},"&&Add Cursor Above"),order:2}})}run(e,t,i){if(!t.hasModel())return;let o=!0;i&&!1===i.logicalLine&&(o=!1);const n=t._getViewModel();if(n.cursorConfig.readOnly)return;n.model.pushStackElement();const s=n.getCursorStates();n.setCursorStates(i.source,3,Jf.P.addCursorUp(n,s,o)),n.revealTopMostCursor(i.source),cb(s,n.getCursorStates())}}class ub extends ee.R6{constructor(){super({id:"editor.action.insertCursorBelow",label:ne.NC("mutlicursor.insertBelow","Add Cursor Below"),alias:"Add Cursor Below",precondition:void 0,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:2578,linux:{primary:1554,secondary:[3090]},weight:100},menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"3_multi",title:ne.NC({key:"miInsertCursorBelow",comment:["&& denotes a mnemonic"]},"A&&dd Cursor Below"),order:3}})}run(e,t,i){if(!t.hasModel())return;let o=!0;i&&!1===i.logicalLine&&(o=!1);const n=t._getViewModel();if(n.cursorConfig.readOnly)return;n.model.pushStackElement();const s=n.getCursorStates();n.setCursorStates(i.source,3,Jf.P.addCursorDown(n,s,o)),n.revealBottomMostCursor(i.source),cb(s,n.getCursorStates())}}class gb extends ee.R6{constructor(){super({id:"editor.action.insertCursorAtEndOfEachLineSelected",label:ne.NC("mutlicursor.insertAtEndOfEachLineSelected","Add Cursors to Line Ends"),alias:"Add Cursors to Line Ends",precondition:void 0,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:1575,weight:100},menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"3_multi",title:ne.NC({key:"miInsertCursorAtEndOfEachLineSelected",comment:["&& denotes a mnemonic"]},"Add C&&ursors to Line Ends"),order:4}})}getCursorsForSelection(e,t,i){if(!e.isEmpty()){for(let o=e.startLineNumber;o<e.endLineNumber;o++){const e=t.getLineMaxColumn(o);i.push(new ke.Y(o,e,o,e))}e.endColumn>1&&i.push(new ke.Y(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn))}}run(e,t){if(!t.hasModel())return;const i=t.getModel(),o=t.getSelections(),n=t._getViewModel(),s=n.getCursorStates(),r=[];o.forEach((e=>this.getCursorsForSelection(e,i,r))),r.length>0&&t.setSelections(r),cb(s,n.getCursorStates())}}class pb extends ee.R6{constructor(){super({id:"editor.action.addCursorsToBottom",label:ne.NC("mutlicursor.addCursorsToBottom","Add Cursors To Bottom"),alias:"Add Cursors To Bottom",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getSelections(),o=t.getModel().getLineCount(),n=[];for(let a=i[0].startLineNumber;a<=o;a++)n.push(new ke.Y(a,i[0].startColumn,a,i[0].endColumn));const s=t._getViewModel(),r=s.getCursorStates();n.length>0&&t.setSelections(n),cb(r,s.getCursorStates())}}class mb extends ee.R6{constructor(){super({id:"editor.action.addCursorsToTop",label:ne.NC("mutlicursor.addCursorsToTop","Add Cursors To Top"),alias:"Add Cursors To Top",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getSelections(),o=[];for(let r=i[0].startLineNumber;r>=1;r--)o.push(new ke.Y(r,i[0].startColumn,r,i[0].endColumn));const n=t._getViewModel(),s=n.getCursorStates();o.length>0&&t.setSelections(o),cb(s,n.getCursorStates())}}class _b{constructor(e,t,i){this.selections=e,this.revealRange=t,this.revealScrollType=i}}class fb{static create(e,t){if(!e.hasModel())return null;const i=t.getState();if(!e.hasTextFocus()&&i.isRevealed&&i.searchString.length>0)return new fb(e,t,!1,i.searchString,i.wholeWord,i.matchCase,null);let o,n,s=!1;const r=e.getSelections();1===r.length&&r[0].isEmpty()?(s=!0,o=!0,n=!0):(o=i.wholeWord,n=i.matchCase);const a=e.getSelection();let l,d=null;if(a.isEmpty()){const t=e.getConfiguredWordAtPosition(a.getStartPosition());if(!t)return null;l=t.word,d=new ke.Y(a.startLineNumber,t.startColumn,a.startLineNumber,t.endColumn)}else l=e.getModel().getValueInRange(a).replace(/\r\n/g,"\n");return new fb(e,t,s,l,o,n,d)}constructor(e,t,i,o,n,s,r){this._editor=e,this.findController=t,this.isDisconnectedFromFindController=i,this.searchText=o,this.wholeWord=n,this.matchCase=s,this.currentMatch=r}addSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const e=this._getNextMatch();if(!e)return null;const t=this._editor.getSelections();return new _b(t.concat(e),e,0)}moveSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const e=this._getNextMatch();if(!e)return null;const t=this._editor.getSelections();return new _b(t.slice(0,t.length-1).concat(e),e,0)}_getNextMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const e=this.currentMatch;return this.currentMatch=null,e}this.findController.highlightFindOptions();const e=this._editor.getSelections(),t=e[e.length-1],i=this._editor.getModel().findNextMatch(this.searchText,t.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(131):null,!1);return i?new ke.Y(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}addSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const e=this._getPreviousMatch();if(!e)return null;const t=this._editor.getSelections();return new _b(t.concat(e),e,0)}moveSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const e=this._getPreviousMatch();if(!e)return null;const t=this._editor.getSelections();return new _b(t.slice(0,t.length-1).concat(e),e,0)}_getPreviousMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const e=this.currentMatch;return this.currentMatch=null,e}this.findController.highlightFindOptions();const e=this._editor.getSelections(),t=e[e.length-1],i=this._editor.getModel().findPreviousMatch(this.searchText,t.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(131):null,!1);return i?new ke.Y(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}selectAll(e){if(!this._editor.hasModel())return[];this.findController.highlightFindOptions();const t=this._editor.getModel();return e?t.findMatches(this.searchText,e,!1,this.matchCase,this.wholeWord?this._editor.getOption(131):null,!1,1073741824):t.findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getOption(131):null,!1,1073741824)}}class vb extends Fe.JT{static get(e){return e.getContribution(vb.ID)}constructor(e){super(),this._sessionDispose=this._register(new Fe.SL),this._editor=e,this._ignoreSelectionChange=!1,this._session=null}dispose(){this._endSession(),super.dispose()}_beginSessionIfNeeded(e){if(!this._session){const t=fb.create(this._editor,e);if(!t)return;this._session=t;const i={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(i.wholeWordOverride=1,i.matchCaseOverride=1,i.isRegexOverride=2),e.getState().change(i,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection((e=>{this._ignoreSelectionChange||this._endSession()}))),this._sessionDispose.add(this._editor.onDidBlurEditorText((()=>{this._endSession()}))),this._sessionDispose.add(e.getState().onFindReplaceStateChange((e=>{(e.matchCase||e.wholeWord)&&this._endSession()})))}}_endSession(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){const e={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(e,!1)}this._session=null}_setSelections(e){this._ignoreSelectionChange=!0,this._editor.setSelections(e),this._ignoreSelectionChange=!1}_expandEmptyToWord(e,t){if(!t.isEmpty())return t;const i=this._editor.getConfiguredWordAtPosition(t.getStartPosition());return i?new ke.Y(t.startLineNumber,i.startColumn,t.startLineNumber,i.endColumn):t}_applySessionResult(e){e&&(this._setSelections(e.selections),e.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(e.revealRange,e.revealScrollType))}getSession(e){return this._session}addSelectionToNextFindMatch(e){if(this._editor.hasModel()){if(!this._session){const t=this._editor.getSelections();if(t.length>1){const i=e.getState().matchCase;if(!yb(this._editor.getModel(),t,i)){const e=this._editor.getModel(),i=[];for(let o=0,n=t.length;o<n;o++)i[o]=this._expandEmptyToWord(e,t[o]);return void this._editor.setSelections(i)}}}this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToNextFindMatch())}}addSelectionToPreviousFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToPreviousFindMatch())}moveSelectionToNextFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToNextFindMatch())}moveSelectionToPreviousFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToPreviousFindMatch())}selectAll(e){if(!this._editor.hasModel())return;let t=null;const i=e.getState();if(i.isRevealed&&i.searchString.length>0&&i.isRegex){const e=this._editor.getModel();t=i.searchScope?e.findMatches(i.searchString,i.searchScope,i.isRegex,i.matchCase,i.wholeWord?this._editor.getOption(131):null,!1,1073741824):e.findMatches(i.searchString,!0,i.isRegex,i.matchCase,i.wholeWord?this._editor.getOption(131):null,!1,1073741824)}else{if(this._beginSessionIfNeeded(e),!this._session)return;t=this._session.selectAll(i.searchScope)}if(t.length>0){const e=this._editor.getSelection();for(let i=0,o=t.length;i<o;i++){const o=t[i];if(o.range.intersectRanges(e)){t[i]=t[0],t[0]=o;break}}this._setSelections(t.map((e=>new ke.Y(e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn))))}}}vb.ID="editor.contrib.multiCursorController";class bb extends ee.R6{run(e,t){const i=vb.get(t);if(!i)return;const o=t._getViewModel();if(o){const n=o.getCursorStates(),s=vu.get(t);if(s)this._run(i,s);else{const o=e.get(ni.TG).createInstance(vu,t);this._run(i,o),o.dispose()}cb(n,o.getCursorStates())}}}class Cb{constructor(e,t,i,o,n){this._model=e,this._searchText=t,this._matchCase=i,this._wordSeparators=o,this._modelVersionId=this._model.getVersionId(),this._cachedFindMatches=null,n&&this._model===n._model&&this._searchText===n._searchText&&this._matchCase===n._matchCase&&this._wordSeparators===n._wordSeparators&&this._modelVersionId===n._modelVersionId&&(this._cachedFindMatches=n._cachedFindMatches)}findMatches(){return null===this._cachedFindMatches&&(this._cachedFindMatches=this._model.findMatches(this._searchText,!0,!1,this._matchCase,this._wordSeparators,!1).map((e=>e.range)),this._cachedFindMatches.sort(He.e.compareRangesUsingStarts)),this._cachedFindMatches}}let Sb=ab=class extends Fe.JT{constructor(e,t){super(),this._languageFeaturesService=t,this.editor=e,this._isEnabled=e.getOption(108),this._decorations=e.createDecorationsCollection(),this.updateSoon=this._register(new Oe.pY((()=>this._update()),300)),this.state=null,this._register(e.onDidChangeConfiguration((t=>{this._isEnabled=e.getOption(108)}))),this._register(e.onDidChangeCursorSelection((e=>{this._isEnabled&&(e.selection.isEmpty()?3===e.reason?(this.state&&this._setState(null),this.updateSoon.schedule()):this._setState(null):this._update())}))),this._register(e.onDidChangeModel((e=>{this._setState(null)}))),this._register(e.onDidChangeModelContent((e=>{this._isEnabled&&this.updateSoon.schedule()})));const i=vu.get(e);i&&this._register(i.getState().onFindReplaceStateChange((e=>{this._update()}))),this.updateSoon.schedule()}_update(){this._setState(ab._createState(this.state,this._isEnabled,this.editor))}static _createState(e,t,i){if(!t)return null;if(!i.hasModel())return null;const o=i.getSelection();if(o.startLineNumber!==o.endLineNumber)return null;const n=vb.get(i);if(!n)return null;const s=vu.get(i);if(!s)return null;let r=n.getSession(s);if(!r){const e=i.getSelections();if(e.length>1){const t=s.getState().matchCase;if(!yb(i.getModel(),e,t))return null}r=fb.create(i,s)}if(!r)return null;if(r.currentMatch)return null;if(/^[ \t]+$/.test(r.searchText))return null;if(r.searchText.length>200)return null;const a=s.getState(),l=a.matchCase;if(a.isRevealed){let e=a.searchString;l||(e=e.toLowerCase());let t=r.searchText;if(l||(t=t.toLowerCase()),e===t&&r.matchCase===a.matchCase&&r.wholeWord===a.wholeWord&&!a.isRegex)return null}return new Cb(i.getModel(),r.searchText,r.matchCase,r.wholeWord?i.getOption(131):null,e)}_setState(e){if(this.state=e,!this.state)return void this._decorations.clear();if(!this.editor.hasModel())return;const t=this.editor.getModel();if(t.isTooLargeForTokenization())return;const i=this.state.findMatches(),o=this.editor.getSelections();o.sort(He.e.compareRangesUsingStarts);const n=[];for(let l=0,d=0,c=i.length,h=o.length;l<c;){const e=i[l];if(d>=h)n.push(e),l++;else{const t=He.e.compareRangesUsingStarts(e,o[d]);t<0?(!o[d].isEmpty()&&He.e.areIntersecting(e,o[d])||n.push(e),l++):(t>0||l++,d++)}}const s="off"!==this.editor.getOption(81),r=this._languageFeaturesService.documentHighlightProvider.has(t)&&s,a=n.map((e=>({range:e,options:rb(r)})));this._decorations.set(a)}dispose(){this._setState(null),super.dispose()}};function yb(e,t,i){const o=wb(e,t[0],!i);for(let n=1,s=t.length;n<s;n++){const s=t[n];if(s.isEmpty())return!1;if(o!==wb(e,s,!i))return!1}return!0}function wb(e,t,i){const o=e.getValueInRange(t);return i?o.toLowerCase():o}Sb.ID="editor.contrib.selectionHighlighter",Sb=ab=lb([db(1,kt.p)],Sb);class xb extends ee.R6{constructor(){super({id:"editor.action.focusNextCursor",label:ne.NC("mutlicursor.focusNextCursor","Focus Next Cursor"),metadata:{description:ne.NC("mutlicursor.focusNextCursor.description","Focuses the next cursor"),args:[]},alias:"Focus Next Cursor",precondition:void 0})}run(e,t,i){if(!t.hasModel())return;const o=t._getViewModel();if(o.cursorConfig.readOnly)return;o.model.pushStackElement();const n=Array.from(o.getCursorStates()),s=n.shift();s&&(n.push(s),o.setCursorStates(i.source,3,n),o.revealPrimaryCursor(i.source,!0),cb(n,o.getCursorStates()))}}class Nb extends ee.R6{constructor(){super({id:"editor.action.focusPreviousCursor",label:ne.NC("mutlicursor.focusPreviousCursor","Focus Previous Cursor"),metadata:{description:ne.NC("mutlicursor.focusPreviousCursor.description","Focuses the previous cursor"),args:[]},alias:"Focus Previous Cursor",precondition:void 0})}run(e,t,i){if(!t.hasModel())return;const o=t._getViewModel();if(o.cursorConfig.readOnly)return;o.model.pushStackElement();const n=Array.from(o.getCursorStates()),s=n.pop();s&&(n.unshift(s),o.setCursorStates(i.source,3,n),o.revealPrimaryCursor(i.source,!0),cb(n,o.getCursorStates()))}}(0,ee._K)(vb.ID,vb,4),(0,ee._K)(Sb.ID,Sb,1),(0,ee.Qr)(hb),(0,ee.Qr)(ub),(0,ee.Qr)(gb),(0,ee.Qr)(class extends bb{constructor(){super({id:"editor.action.addSelectionToNextFindMatch",label:ne.NC("addSelectionToNextFindMatch","Add Selection To Next Find Match"),alias:"Add Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:oe.u.focus,primary:2082,weight:100},menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"3_multi",title:ne.NC({key:"miAddSelectionToNextFindMatch",comment:["&& denotes a mnemonic"]},"Add &&Next Occurrence"),order:5}})}_run(e,t){e.addSelectionToNextFindMatch(t)}}),(0,ee.Qr)(class extends bb{constructor(){super({id:"editor.action.addSelectionToPreviousFindMatch",label:ne.NC("addSelectionToPreviousFindMatch","Add Selection To Previous Find Match"),alias:"Add Selection To Previous Find Match",precondition:void 0,menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"3_multi",title:ne.NC({key:"miAddSelectionToPreviousFindMatch",comment:["&& denotes a mnemonic"]},"Add P&&revious Occurrence"),order:6}})}_run(e,t){e.addSelectionToPreviousFindMatch(t)}}),(0,ee.Qr)(class extends bb{constructor(){super({id:"editor.action.moveSelectionToNextFindMatch",label:ne.NC("moveSelectionToNextFindMatch","Move Last Selection To Next Find Match"),alias:"Move Last Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:oe.u.focus,primary:(0,Le.gx)(2089,2082),weight:100}})}_run(e,t){e.moveSelectionToNextFindMatch(t)}}),(0,ee.Qr)(class extends bb{constructor(){super({id:"editor.action.moveSelectionToPreviousFindMatch",label:ne.NC("moveSelectionToPreviousFindMatch","Move Last Selection To Previous Find Match"),alias:"Move Last Selection To Previous Find Match",precondition:void 0})}_run(e,t){e.moveSelectionToPreviousFindMatch(t)}}),(0,ee.Qr)(class extends bb{constructor(){super({id:"editor.action.selectHighlights",label:ne.NC("selectAllOccurrencesOfFindMatch","Select All Occurrences of Find Match"),alias:"Select All Occurrences of Find Match",precondition:void 0,kbOpts:{kbExpr:oe.u.focus,primary:3114,weight:100},menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"3_multi",title:ne.NC({key:"miSelectHighlights",comment:["&& denotes a mnemonic"]},"Select All &&Occurrences"),order:7}})}_run(e,t){e.selectAll(t)}}),(0,ee.Qr)(class extends bb{constructor(){super({id:"editor.action.changeAll",label:ne.NC("changeAll.label","Change All Occurrences"),alias:"Change All Occurrences",precondition:ae.Ao.and(oe.u.writable,oe.u.editorTextFocus),kbOpts:{kbExpr:oe.u.editorTextFocus,primary:2108,weight:100},contextMenuOpts:{group:"1_modification",order:1.2}})}_run(e,t){e.selectAll(t)}}),(0,ee.Qr)(pb),(0,ee.Qr)(mb),(0,ee.Qr)(xb),(0,ee.Qr)(Nb);var Lb=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},kb=function(e,t){return function(i,o){t(i,o,e)}};const Db="inline-edit";let Ib=class extends Fe.JT{constructor(e,t,i){super(),this.editor=e,this.model=t,this.languageService=i,this.isDisposed=(0,dd.uh)(this,!1),this.currentTextModel=(0,dd.rD)(this.editor.onDidChangeModel,(()=>this.editor.getModel())),this.uiState=(0,dd.nK)(this,(e=>{var t;if(this.isDisposed.read(e))return;const i=this.currentTextModel.read(e);if(i!==this.model.targetTextModel.read(e))return;const o=this.model.ghostText.read(e);if(!o)return;let n=null===(t=this.model.range)||void 0===t?void 0:t.read(e);n&&n.startLineNumber===n.endLineNumber&&n.startColumn===n.endColumn&&(n=void 0);const s=(!n||n.startLineNumber===n.endLineNumber)&&1===o.parts.length&&1===o.parts[0].lines.length,r=1===o.parts.length&&o.parts[0].lines.every((e=>0===e.length)),a=[],l=[];function d(e,t){if(l.length>0){const i=l[l.length-1];t&&i.decorations.push(new Kg.Kp(i.content.length+1,i.content.length+1+e[0].length,t,0)),i.content+=e[0],e=e.slice(1)}for(const i of e)l.push({content:i,decorations:t?[new Kg.Kp(1,i.length+1,t,0)]:[]})}const c=i.getLineContent(o.lineNumber);let h,u=0;if(!r){for(const e of o.parts){let t=e.lines;n&&!s&&(d(t,Db),t=[]),void 0===h?(a.push({column:e.column,text:t[0],preview:e.preview}),t=t.slice(1)):d([c.substring(u,e.column-1)],void 0),t.length>0&&(d(t,Db),void 0===h&&e.column<=c.length&&(h=e.column)),u=e.column-1}void 0!==h&&d([c.substring(u)],void 0)}const g=void 0!==h?new Xg(h,c.length+1):void 0,p=s||!n?o.lineNumber:n.endLineNumber-1;return{inlineTexts:a,additionalLines:l,hiddenRange:g,lineNumber:p,additionalReservedLineCount:this.model.minReservedLineCount.read(e),targetTextModel:i,range:n,isSingleLine:s,isPureRemove:r,backgroundColoring:this.model.backgroundColoring.read(e)}})),this.decorations=(0,dd.nK)(this,(e=>{const t=this.uiState.read(e);if(!t)return[];const i=[];if(t.hiddenRange&&i.push({range:t.hiddenRange.toRange(t.lineNumber),options:{inlineClassName:"inline-edit-hidden",description:"inline-edit-hidden"}}),t.range){const e=[];if(t.isSingleLine)e.push(t.range);else if(t.isPureRemove){const i=t.range.endLineNumber-t.range.startLineNumber;for(let o=0;o<i;o++){const i=t.range.startLineNumber+o,n=t.targetTextModel.getLineFirstNonWhitespaceColumn(i),s=t.targetTextModel.getLineLastNonWhitespaceColumn(i),r=new He.e(i,n,i,s);e.push(r)}}else{const i=t.range.endLineNumber-t.range.startLineNumber;for(let o=0;o<i;o++){const i=t.range.startLineNumber+o,n=t.targetTextModel.getLineFirstNonWhitespaceColumn(i),s=t.targetTextModel.getLineLastNonWhitespaceColumn(i),r=new He.e(i,n,i,s);e.push(r)}}const o=t.backgroundColoring?"inline-edit-remove backgroundColoring":"inline-edit-remove";for(const t of e)i.push({range:t,options:{inlineClassName:o,description:"inline-edit-remove"}})}for(const o of t.inlineTexts)i.push({range:He.e.fromPositions(new We.L(t.lineNumber,o.column)),options:{description:Db,after:{content:o.text,inlineClassName:o.preview?"inline-edit-decoration-preview":"inline-edit-decoration",cursorStops:Ve.RM.Left},showIfCollapsed:!0}});return i})),this.additionalLinesWidget=this._register(new rp(this.editor,this.languageService.languageIdCodec,(0,dd.nK)((e=>{const t=this.uiState.read(e);return t&&!t.isPureRemove?{lineNumber:t.lineNumber,additionalLines:t.additionalLines,minReservedLineCount:t.additionalReservedLineCount,targetTextModel:t.targetTextModel}:void 0})))),this._register((0,Fe.OF)((()=>{this.isDisposed.set(!0,void 0)}))),this._register(ep(this.editor,this.decorations))}ownsViewZone(e){return this.additionalLinesWidget.viewZoneId===e}};Ib=Lb([kb(2,Us.O)],Ib);var Rb,Pb=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Mb=function(e,t){return function(i,o){t(i,o,e)}};let Tb=class extends Fe.JT{constructor(e,t,i){super(),this.editor=e,this.model=t,this.instantiationService=i,this.alwaysShowToolbar=(0,dd.rD)(this.editor.onDidChangeConfiguration,(()=>"always"===this.editor.getOption(63).showToolbar)),this.sessionPosition=void 0,this.position=(0,dd.nK)(this,(e=>{var t,i,o;const n=null===(t=this.model.read(e))||void 0===t?void 0:t.widget.model.ghostText.read(e);if(!this.alwaysShowToolbar.read(e)||!n||0===n.parts.length)return this.sessionPosition=void 0,null;const s=n.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==n.lineNumber&&(this.sessionPosition=void 0);const r=new We.L(n.lineNumber,Math.min(s,null!==(o=null===(i=this.sessionPosition)||void 0===i?void 0:i.column)&&void 0!==o?o:Number.MAX_SAFE_INTEGER));return this.sessionPosition=r,r})),this._register((0,dd.gp)(((t,i)=>{if(!this.model.read(t)||!this.alwaysShowToolbar.read(t))return;const o=i.add(this.instantiationService.createInstance(Eb,this.editor,!0,this.position));e.addContentWidget(o),i.add((0,Fe.OF)((()=>e.removeContentWidget(o))))})))}};Tb=Pb([Mb(2,ni.TG)],Tb);let Eb=Rb=class extends Fe.JT{constructor(e,t,i,o,n,s){super(),this.editor=e,this.withBorder=t,this._position=i,this._contextKeyService=n,this._menuService=s,this.id="InlineEditHintsContentWidget".concat(Rb.id++),this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.nodes=(0,X.h)("div.inlineEditHints",{className:this.withBorder?".withBorder":""},[(0,X.h)("div@toolBar")]),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(se.eH.InlineEditActions,this._contextKeyService)),this.toolBar=this._register(o.createInstance(Ob,this.nodes.toolBar,this.editor,se.eH.InlineEditToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:e=>e.startsWith("primary")},actionViewItemProvider:(e,t)=>{if(e instanceof se.U8)return o.createInstance(Ab,e,void 0)},telemetrySource:"InlineEditToolbar"})),this._register(this.toolBar.onDidChangeDropdownVisibility((e=>{Rb._dropDownVisible=e}))),this._register((0,dd.EH)((e=>{this._position.read(e),this.editor.layoutContentWidget(this)}))),this._register((0,dd.EH)((e=>{const t=[];for(const[i,o]of this.inlineCompletionsActionsMenus.getActions())for(const e of o)e instanceof se.U8&&t.push(e);t.length>0&&t.unshift(new Ni.Z0),this.toolBar.setAdditionalSecondaryActions(t)})))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}};Eb._dropDownVisible=!1,Eb.id=0,Eb=Rb=Pb([Mb(3,ni.TG),Mb(4,ae.i6),Mb(5,se.co)],Eb);class Ab extends cr.Mm{updateLabel(){const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();if(this.label){const t=(0,X.h)("div.keybinding").root;this._register(new Ao.e(t,it.OS,{disableTitle:!0,...Ao.F})).set(e),this.label.textContent=this._action.label,this.label.appendChild(t),this.label.classList.add("inlineEditStatusBarItemLabel")}}updateTooltip(){}}let Ob=class extends pd.T{constructor(e,t,i,o,n,s,r,a,l){super(e,{resetMenu:i,...o},n,s,r,a,l),this.editor=t,this.menuId=i,this.options2=o,this.menuService=n,this.contextKeyService=s,this.menu=this._store.add(this.menuService.createMenu(this.menuId,this.contextKeyService,{emitEventsForSubmenuChanges:!0})),this.additionalActions=[],this.prependedPrimaryActions=[],this._store.add(this.menu.onDidChange((()=>this.updateToolbar()))),this._store.add(this.editor.onDidChangeCursorPosition((()=>this.updateToolbar()))),this.updateToolbar()}updateToolbar(){var e,t,i,o,n,s,r;const a=[],l=[];(0,cr.vr)(this.menu,null===(e=this.options2)||void 0===e?void 0:e.menuOptions,{primary:a,secondary:l},null===(i=null===(t=this.options2)||void 0===t?void 0:t.toolbarOptions)||void 0===i?void 0:i.primaryGroup,null===(n=null===(o=this.options2)||void 0===o?void 0:o.toolbarOptions)||void 0===n?void 0:n.shouldInlineSubmenu,null===(r=null===(s=this.options2)||void 0===s?void 0:s.toolbarOptions)||void 0===r?void 0:r.useSeparatorsInPrimaryActions),l.push(...this.additionalActions),a.unshift(...this.prependedPrimaryActions),this.setActions(a,l)}setAdditionalSecondaryActions(e){(0,nt.fS)(this.additionalActions,e,((e,t)=>e===t))||(this.additionalActions=e,this.updateToolbar())}};Ob=Pb([Mb(4,se.co),Mb(5,ae.i6),Mb(6,Li.i),Mb(7,ki.d),Mb(8,eo.b)],Ob);var Fb,Wb=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Hb=function(e,t){return function(i,o){t(i,o,e)}};class Vb{constructor(e,t){this.widget=e,this.edit=t}dispose(){this.widget.dispose()}}let Bb=Fb=class extends Fe.JT{static get(e){return e.getContribution(Fb.ID)}constructor(e,t,i,o,n,s){super(),this.editor=e,this.instantiationService=t,this.contextKeyService=i,this.languageFeaturesService=o,this._commandService=n,this._configurationService=s,this._isVisibleContext=Fb.inlineEditVisibleContext.bindTo(this.contextKeyService),this._isCursorAtInlineEditContext=Fb.cursorAtInlineEditContext.bindTo(this.contextKeyService),this._currentEdit=this._register((0,dd.DN)(this,void 0)),this._isAccepting=(0,dd.uh)(this,!1),this._enabled=(0,dd.rD)(this.editor.onDidChangeConfiguration,(()=>this.editor.getOption(63).enabled)),this._fontFamily=(0,dd.rD)(this.editor.onDidChangeConfiguration,(()=>this.editor.getOption(63).fontFamily)),this._backgroundColoring=(0,dd.rD)(this.editor.onDidChangeConfiguration,(()=>this.editor.getOption(63).backgroundColoring));const r=(0,dd.aq)("InlineEditController.modelContentChangedSignal",e.onDidChangeModelContent);this._register((0,dd.EH)((t=>{this._enabled.read(t)&&(r.read(t),this._isAccepting.read(t)||this.getInlineEdit(e,!0))})));const a=(0,dd.rD)(e.onDidChangeCursorPosition,(()=>e.getPosition()));this._register((0,dd.EH)((e=>{if(!this._enabled.read(e))return;const t=a.read(e);t&&this.checkCursorPosition(t)}))),this._register((0,dd.EH)((t=>{const i=this._currentEdit.read(t);if(this._isCursorAtInlineEditContext.set(!1),!i)return void this._isVisibleContext.set(!1);this._isVisibleContext.set(!0);const o=e.getPosition();o&&this.checkCursorPosition(o)})));const l=(0,dd.aq)("InlineEditController.editorBlurSignal",e.onDidBlurEditorWidget);this._register((0,dd.EH)((async t=>{var i;this._enabled.read(t)&&(l.read(t),this._configurationService.getValue("editor.experimentalInlineEdit.keepOnBlur")||e.getOption(63).keepOnBlur||(null===(i=this._currentRequestCts)||void 0===i||i.dispose(!0),this._currentRequestCts=void 0,await this.clear(!1)))})));const d=(0,dd.aq)("InlineEditController.editorFocusSignal",e.onDidFocusEditorText);this._register((0,dd.EH)((t=>{this._enabled.read(t)&&(d.read(t),this.getInlineEdit(e,!0))})));const c=this._register((0,X.aU)());this._register((0,dd.EH)((e=>{const t=this._fontFamily.read(e);c.setStyle(""===t||"default"===t?"":"\n.monaco-editor .inline-edit-decoration,\n.monaco-editor .inline-edit-decoration-preview,\n.monaco-editor .inline-edit {\n\tfont-family: ".concat(t,";\n}"))}))),this._register(new Tb(this.editor,this._currentEdit,this.instantiationService))}checkCursorPosition(e){var t;if(!this._currentEdit)return void this._isCursorAtInlineEditContext.set(!1);const i=null===(t=this._currentEdit.get())||void 0===t?void 0:t.edit;i?this._isCursorAtInlineEditContext.set(He.e.containsPosition(i.range,e)):this._isCursorAtInlineEditContext.set(!1)}validateInlineEdit(e,t){var i,o;if(t.text.includes("\n")&&t.range.startLineNumber!==t.range.endLineNumber&&t.range.startColumn!==t.range.endColumn){if(1!==t.range.startColumn)return!1;const n=t.range.endLineNumber;if(t.range.endColumn!==(null!==(o=null===(i=e.getModel())||void 0===i?void 0:i.getLineLength(n))&&void 0!==o?o:0)+1)return!1}return!0}async fetchInlineEdit(e,t){this._currentRequestCts&&this._currentRequestCts.dispose(!0);const i=e.getModel();if(!i)return;const o=i.getVersionId(),n=this.languageFeaturesService.inlineEditProvider.all(i);if(0===n.length)return;const s=n[0];this._currentRequestCts=new Yi.A;const r=this._currentRequestCts.token,a=t?Lt.rn.Automatic:Lt.rn.Invoke;var l,d;if(t&&await(l=50,d=r,new Promise((e=>{let t;const i=setTimeout((()=>{t&&t.dispose(),e()}),l);d&&(t=d.onCancellationRequested((()=>{clearTimeout(i),t&&t.dispose(),e()})))}))),r.isCancellationRequested||i.isDisposed()||i.getVersionId()!==o)return;const c=await s.provideInlineEdit(i,{triggerKind:a},r);return c&&!r.isCancellationRequested&&!i.isDisposed()&&i.getVersionId()===o&&this.validateInlineEdit(e,c)?c:void 0}async getInlineEdit(e,t){var i;this._isCursorAtInlineEditContext.set(!1),await this.clear();const o=await this.fetchInlineEdit(e,t);if(!o)return;const n=o.range.endLineNumber,s=o.range.endColumn,r=new Gg(n,[new Qg(s,o.text,!1)]),a=this.instantiationService.createInstance(Ib,this.editor,{ghostText:(0,dd.Dz)(r),minReservedLineCount:(0,dd.Dz)(0),targetTextModel:(0,dd.Dz)(null!==(i=this.editor.getModel())&&void 0!==i?i:void 0),range:(0,dd.Dz)(o.range),backgroundColoring:this._backgroundColoring});this._currentEdit.set(new Vb(a,o),void 0)}async trigger(){await this.getInlineEdit(this.editor,!1)}async jumpBack(){this._jumpBackPosition&&(this.editor.setPosition(this._jumpBackPosition),this.editor.revealPositionInCenterIfOutsideViewport(this._jumpBackPosition))}async accept(){var e;this._isAccepting.set(!0,void 0);const t=null===(e=this._currentEdit.get())||void 0===e?void 0:e.edit;if(!t)return;let i=t.text;t.text.startsWith("\n")&&(i=t.text.substring(1)),this.editor.pushUndoStop(),this.editor.executeEdits("acceptCurrent",[Yd.h.replace(He.e.lift(t.range),i)]),t.accepted&&await this._commandService.executeCommand(t.accepted.id,...t.accepted.arguments||[]).then(void 0,Ji.Cp),this.freeEdit(t),(0,dd.PS)((e=>{this._currentEdit.set(void 0,e),this._isAccepting.set(!1,e)}))}jumpToCurrent(){var e,t;this._jumpBackPosition=null===(e=this.editor.getSelection())||void 0===e?void 0:e.getStartPosition();const i=null===(t=this._currentEdit.get())||void 0===t?void 0:t.edit;if(!i)return;const o=We.L.lift({lineNumber:i.range.startLineNumber,column:i.range.startColumn});this.editor.setPosition(o),this.editor.revealPositionInCenterIfOutsideViewport(o)}async clear(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];var t;const i=null===(t=this._currentEdit.get())||void 0===t?void 0:t.edit;i&&(null===i||void 0===i?void 0:i.rejected)&&e&&await this._commandService.executeCommand(i.rejected.id,...i.rejected.arguments||[]).then(void 0,Ji.Cp),i&&this.freeEdit(i),this._currentEdit.set(void 0,void 0)}freeEdit(e){const t=this.editor.getModel();if(!t)return;const i=this.languageFeaturesService.inlineEditProvider.all(t);0!==i.length&&i[0].freeInlineEdit(e)}shouldShowHoverAt(e){const t=this._currentEdit.get();if(!t)return!1;const i=t.edit,o=t.widget.model;if(He.e.containsPosition(i.range,e.getStartPosition())||He.e.containsPosition(i.range,e.getEndPosition()))return!0;const n=o.ghostText.get();return!!n&&n.parts.some((t=>e.containsPosition(new We.L(n.lineNumber,t.column))))}shouldShowHoverAtViewZone(e){var t,i;return null!==(i=null===(t=this._currentEdit.get())||void 0===t?void 0:t.widget.ownsViewZone(e))&&void 0!==i&&i}};Bb.ID="editor.contrib.inlineEditController",Bb.inlineEditVisibleKey="inlineEditVisible",Bb.inlineEditVisibleContext=new ae.uy(Fb.inlineEditVisibleKey,!1),Bb.cursorAtInlineEditKey="cursorAtInlineEdit",Bb.cursorAtInlineEditContext=new ae.uy(Fb.cursorAtInlineEditKey,!1),Bb=Fb=Wb([Hb(1,ni.TG),Hb(2,ae.i6),Hb(3,kt.p),Hb(4,ye.H),Hb(5,re.Ui)],Bb);class zb extends ee.R6{constructor(){super({id:"editor.action.inlineEdit.accept",label:"Accept Inline Edit",alias:"Accept Inline Edit",precondition:ae.Ao.and(oe.u.writable,Bb.inlineEditVisibleContext),kbOpts:[{weight:101,primary:2,kbExpr:ae.Ao.and(oe.u.writable,Bb.inlineEditVisibleContext,Bb.cursorAtInlineEditContext)}],menuOpts:[{menuId:se.eH.InlineEditToolbar,title:"Accept",group:"primary",order:1}]})}async run(e,t){const i=Bb.get(t);await(null===i||void 0===i?void 0:i.accept())}}class Ub extends ee.R6{constructor(){const e=ae.Ao.and(oe.u.writable,ae.Ao.not(Bb.inlineEditVisibleKey));super({id:"editor.action.inlineEdit.trigger",label:"Trigger Inline Edit",alias:"Trigger Inline Edit",precondition:e,kbOpts:{weight:101,primary:2646,kbExpr:e}})}async run(e,t){const i=Bb.get(t);null===i||void 0===i||i.trigger()}}class Kb extends ee.R6{constructor(){const e=ae.Ao.and(oe.u.writable,Bb.inlineEditVisibleContext,ae.Ao.not(Bb.cursorAtInlineEditKey));super({id:"editor.action.inlineEdit.jumpTo",label:"Jump to Inline Edit",alias:"Jump to Inline Edit",precondition:e,kbOpts:{weight:101,primary:2646,kbExpr:e},menuOpts:[{menuId:se.eH.InlineEditToolbar,title:"Jump To Edit",group:"primary",order:3,when:e}]})}async run(e,t){const i=Bb.get(t);null===i||void 0===i||i.jumpToCurrent()}}class jb extends ee.R6{constructor(){const e=ae.Ao.and(oe.u.writable,Bb.cursorAtInlineEditContext);super({id:"editor.action.inlineEdit.jumpBack",label:"Jump Back from Inline Edit",alias:"Jump Back from Inline Edit",precondition:e,kbOpts:{weight:110,primary:2646,kbExpr:e},menuOpts:[{menuId:se.eH.InlineEditToolbar,title:"Jump Back",group:"primary",order:3,when:e}]})}async run(e,t){const i=Bb.get(t);null===i||void 0===i||i.jumpBack()}}class qb extends ee.R6{constructor(){const e=ae.Ao.and(oe.u.writable,Bb.inlineEditVisibleContext);super({id:"editor.action.inlineEdit.reject",label:"Reject Inline Edit",alias:"Reject Inline Edit",precondition:e,kbOpts:{weight:100,primary:9,kbExpr:e},menuOpts:[{menuId:se.eH.InlineEditToolbar,title:"Reject",group:"secondary",order:2}]})}async run(e,t){const i=Bb.get(t);await(null===i||void 0===i?void 0:i.clear())}}var Gb=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Qb=function(e,t){return function(i,o){t(i,o,e)}};class Zb{constructor(e,t,i){this.owner=e,this.range=t,this.controller=i}isValidForHoverAnchor(e){return 1===e.type&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}let Yb=class{constructor(e,t,i){this._editor=e,this._instantiationService=t,this._telemetryService=i,this.hoverOrdinal=5}suggestHoverAnchor(e){const t=Bb.get(this._editor);if(!t)return null;const i=e.target;if(8===i.type){const o=i.detail;if(t.shouldShowHoverAtViewZone(o.viewZoneId)){const t=i.range;return new Ga(1e3,this,t,e.event.posx,e.event.posy,!1)}}if(7===i.type&&t.shouldShowHoverAt(i.range))return new Ga(1e3,this,i.range,e.event.posx,e.event.posy,!1);if(6===i.type){if(i.detail.mightBeForeignElement&&t.shouldShowHoverAt(i.range))return new Ga(1e3,this,i.range,e.event.posx,e.event.posy,!1)}return null}computeSync(e,t){if("onHover"!==this._editor.getOption(63).showToolbar)return[];const i=Bb.get(this._editor);return i&&i.shouldShowHoverAt(e.range)?[new Zb(this,e.range,i)]:[]}renderHoverParts(e,t){const i=new Fe.SL;this._telemetryService.publicLog2("inlineEditHover.shown");const o=this._instantiationService.createInstance(Eb,this._editor,!1,(0,dd.Dz)(null));return e.fragment.appendChild(o.getDomNode()),i.add(o),i}};Yb=Gb([Qb(1,ni.TG),Qb(2,eo.b)],Yb),(0,ee.Qr)(zb),(0,ee.Qr)(qb),(0,ee.Qr)(Kb),(0,ee.Qr)(jb),(0,ee.Qr)(Ub),(0,ee._K)(Bb.ID,Bb,3),Qa.register(Yb);const Jb={Visible:new ae.uy("parameterHintsVisible",!1),MultipleSignatures:new ae.uy("parameterHintsMultipleSignatures",!1)};async function $b(e,t,i,o,n){const s=e.ordered(t);for(const a of s)try{const e=await a.provideSignatureHelp(t,i,n,o);if(e)return e}catch(r){(0,Ji.Cp)(r)}}var Xb;ye.P.registerCommand("_executeSignatureHelpProvider",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n,s,r]=i;(0,Dn.p_)(_t.o.isUri(n)),(0,Dn.p_)(We.L.isIPosition(s)),(0,Dn.p_)("string"===typeof r||!r);const a=e.get(kt.p),l=await e.get(Ks.S).createModelReference(n);try{const e=await $b(a.signatureHelpProvider,l.object.textEditorModel,We.L.lift(s),{triggerKind:Lt.WW.Invoke,isRetrigger:!1,triggerCharacter:r},Yi.T.None);if(!e)return;return setTimeout((()=>e.dispose()),0),e.value}finally{l.dispose()}})),function(e){e.Default={type:0};e.Pending=class{constructor(e,t){this.request=e,this.previouslyActiveHints=t,this.type=2}};e.Active=class{constructor(e){this.hints=e,this.type=1}}}(Xb||(Xb={}));class eC extends Fe.JT{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:eC.DEFAULT_DELAY;super(),this._onChangedHints=this._register(new ui.Q5),this.onChangedHints=this._onChangedHints.event,this.triggerOnType=!1,this._state=Xb.Default,this._pendingTriggers=[],this._lastSignatureHelpResult=this._register(new Fe.XK),this.triggerChars=new vg.q,this.retriggerChars=new vg.q,this.triggerId=0,this.editor=e,this.providers=t,this.throttledDelayer=new Oe.vp(i),this._register(this.editor.onDidBlurEditorWidget((()=>this.cancel()))),this._register(this.editor.onDidChangeConfiguration((()=>this.onEditorConfigurationChange()))),this._register(this.editor.onDidChangeModel((e=>this.onModelChanged()))),this._register(this.editor.onDidChangeModelLanguage((e=>this.onModelChanged()))),this._register(this.editor.onDidChangeCursorSelection((e=>this.onCursorChange(e)))),this._register(this.editor.onDidChangeModelContent((e=>this.onModelContentChange()))),this._register(this.providers.onDidChange(this.onModelChanged,this)),this._register(this.editor.onDidType((e=>this.onDidType(e)))),this.onEditorConfigurationChange(),this.onModelChanged()}get state(){return this._state}set state(e){2===this._state.type&&this._state.request.cancel(),this._state=e}cancel(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.state=Xb.Default,this.throttledDelayer.cancel(),e||this._onChangedHints.fire(void 0)}trigger(e,t){const i=this.editor.getModel();if(!i||!this.providers.has(i))return;const o=++this.triggerId;this._pendingTriggers.push(e),this.throttledDelayer.trigger((()=>this.doTrigger(o)),t).catch(Ji.dL)}next(){if(1!==this.state.type)return;const e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,i=t%e===e-1,o=this.editor.getOption(86).cycle;!(e<2||i)||o?this.updateActiveSignature(i&&o?0:t+1):this.cancel()}previous(){if(1!==this.state.type)return;const e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,i=0===t,o=this.editor.getOption(86).cycle;!(e<2||i)||o?this.updateActiveSignature(i&&o?e-1:t-1):this.cancel()}updateActiveSignature(e){1===this.state.type&&(this.state=new Xb.Active({...this.state.hints,activeSignature:e}),this._onChangedHints.fire(this.state.hints))}async doTrigger(e){const t=1===this.state.type||2===this.state.type,i=this.getLastActiveHints();if(this.cancel(!0),0===this._pendingTriggers.length)return!1;const o=this._pendingTriggers.reduce(tC);this._pendingTriggers=[];const n={triggerKind:o.triggerKind,triggerCharacter:o.triggerCharacter,isRetrigger:t,activeSignatureHelp:i};if(!this.editor.hasModel())return!1;const s=this.editor.getModel(),r=this.editor.getPosition();this.state=new Xb.Pending((0,Oe.PG)((e=>$b(this.providers,s,r,n,e))),i);try{const t=await this.state.request;return e!==this.triggerId?(null===t||void 0===t||t.dispose(),!1):t&&t.value.signatures&&0!==t.value.signatures.length?(this.state=new Xb.Active(t.value),this._lastSignatureHelpResult.value=t,this._onChangedHints.fire(this.state.hints),!0):(null===t||void 0===t||t.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),!1)}catch(a){return e===this.triggerId&&(this.state=Xb.Default),(0,Ji.dL)(a),!1}}getLastActiveHints(){switch(this.state.type){case 1:return this.state.hints;case 2:return this.state.previouslyActiveHints;default:return}}get isTriggered(){return 1===this.state.type||2===this.state.type||this.throttledDelayer.isTriggered()}onModelChanged(){this.cancel(),this.triggerChars.clear(),this.retriggerChars.clear();const e=this.editor.getModel();if(e)for(const t of this.providers.ordered(e)){for(const e of t.signatureHelpTriggerCharacters||[])if(e.length){const t=e.charCodeAt(0);this.triggerChars.add(t),this.retriggerChars.add(t)}for(const e of t.signatureHelpRetriggerCharacters||[])e.length&&this.retriggerChars.add(e.charCodeAt(0))}}onDidType(e){if(!this.triggerOnType)return;const t=e.length-1,i=e.charCodeAt(t);(this.triggerChars.has(i)||this.isTriggered&&this.retriggerChars.has(i))&&this.trigger({triggerKind:Lt.WW.TriggerCharacter,triggerCharacter:e.charAt(t)})}onCursorChange(e){"mouse"===e.source?this.cancel():this.isTriggered&&this.trigger({triggerKind:Lt.WW.ContentChange})}onModelContentChange(){this.isTriggered&&this.trigger({triggerKind:Lt.WW.ContentChange})}onEditorConfigurationChange(){this.triggerOnType=this.editor.getOption(86).enabled,this.triggerOnType||this.cancel()}dispose(){this.cancel(!0),super.dispose()}}function tC(e,t){switch(t.triggerKind){case Lt.WW.Invoke:return t;case Lt.WW.ContentChange:return e;case Lt.WW.TriggerCharacter:default:return t}}eC.DEFAULT_DELAY=120;var iC,oC=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},nC=function(e,t){return function(i,o){t(i,o,e)}};const sC=X.$,rC=(0,ys.q5)("parameter-hints-next",$.l.chevronDown,ne.NC("parameterHintsNextIcon","Icon for show next parameter hint.")),aC=(0,ys.q5)("parameter-hints-previous",$.l.chevronUp,ne.NC("parameterHintsPreviousIcon","Icon for show previous parameter hint."));let lC=iC=class extends Fe.JT{constructor(e,t,i,o,n){super(),this.editor=e,this.model=t,this.renderDisposeables=this._register(new Fe.SL),this.visible=!1,this.announcedLabel=null,this.allowEditorOverflow=!0,this.markdownRenderer=this._register(new gi.$({editor:e},n,o)),this.keyVisible=Jb.Visible.bindTo(i),this.keyMultipleSignatures=Jb.MultipleSignatures.bindTo(i)}createParameterHintDOMNodes(){const e=sC(".editor-widget.parameter-hints-widget"),t=X.R3(e,sC(".phwrapper"));t.tabIndex=-1;const i=X.R3(t,sC(".controls")),o=X.R3(i,sC(".button"+oi.k.asCSSSelector(aC))),n=X.R3(i,sC(".overloads")),s=X.R3(i,sC(".button"+oi.k.asCSSSelector(rC)));this._register(X.nm(o,"click",(e=>{X.zB.stop(e),this.previous()}))),this._register(X.nm(s,"click",(e=>{X.zB.stop(e),this.next()})));const r=sC(".body"),a=new Rl.s$(r,{alwaysConsumeMouseWheel:!0});this._register(a),t.appendChild(a.getDomNode());const l=X.R3(r,sC(".signature")),d=X.R3(r,sC(".docs"));e.style.userSelect="text",this.domNodes={element:e,signature:l,overloads:n,docs:d,scrollbar:a},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection((e=>{this.visible&&this.editor.layoutContentWidget(this)})));const c=()=>{if(!this.domNodes)return;const e=this.editor.getOption(50);this.domNodes.element.style.fontSize="".concat(e.fontSize,"px"),this.domNodes.element.style.lineHeight="".concat(e.lineHeight/e.fontSize)};c(),this._register(ui.ju.chain(this.editor.onDidChangeConfiguration.bind(this.editor),(e=>e.filter((e=>e.hasChanged(50)))))(c)),this._register(this.editor.onDidLayoutChange((e=>this.updateMaxHeight()))),this.updateMaxHeight()}show(){this.visible||(this.domNodes||this.createParameterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout((()=>{var e;null===(e=this.domNodes)||void 0===e||e.element.classList.add("visible")}),100),this.editor.layoutContentWidget(this))}hide(){var e;this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,null===(e=this.domNodes)||void 0===e||e.element.classList.remove("visible"),this.editor.layoutContentWidget(this))}getPosition(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}render(e){var t;if(this.renderDisposeables.clear(),!this.domNodes)return;const i=e.signatures.length>1;this.domNodes.element.classList.toggle("multiple",i),this.keyMultipleSignatures.set(i),this.domNodes.signature.innerText="",this.domNodes.docs.innerText="";const o=e.signatures[e.activeSignature];if(!o)return;const n=X.R3(this.domNodes.signature,sC(".code")),s=this.editor.getOption(50);n.style.fontSize="".concat(s.fontSize,"px"),n.style.fontFamily=s.fontFamily;const r=o.parameters.length>0,a=null!==(t=o.activeParameter)&&void 0!==t?t:e.activeParameter;if(r)this.renderParameters(n,o,a);else{X.R3(n,sC("span")).textContent=o.label}const l=o.parameters[a];if(null===l||void 0===l?void 0:l.documentation){const e=sC("span.documentation");if("string"===typeof l.documentation)e.textContent=l.documentation;else{const t=this.renderMarkdownDocs(l.documentation);e.appendChild(t.element)}X.R3(this.domNodes.docs,sC("p",{},e))}if(void 0===o.documentation);else if("string"===typeof o.documentation)X.R3(this.domNodes.docs,sC("p",{},o.documentation));else{const e=this.renderMarkdownDocs(o.documentation);X.R3(this.domNodes.docs,e.element)}const d=this.hasDocs(o,l);if(this.domNodes.signature.classList.toggle("has-docs",d),this.domNodes.docs.classList.toggle("empty",!d),this.domNodes.overloads.textContent=String(e.activeSignature+1).padStart(e.signatures.length.toString().length,"0")+"/"+e.signatures.length,l){let e="";const t=o.parameters[a];e=Array.isArray(t.label)?o.label.substring(t.label[0],t.label[1]):t.label,t.documentation&&(e+="string"===typeof t.documentation?", ".concat(t.documentation):", ".concat(t.documentation.value)),o.documentation&&(e+="string"===typeof o.documentation?", ".concat(o.documentation):", ".concat(o.documentation.value)),this.announcedLabel!==e&&(xe.Z9(ne.NC("hint","{0}, hint",e)),this.announcedLabel=e)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}renderMarkdownDocs(e){const t=this.renderDisposeables.add(this.markdownRenderer.render(e,{asyncRenderCallback:()=>{var e;null===(e=this.domNodes)||void 0===e||e.scrollbar.scanDomNode()}}));return t.element.classList.add("markdown-docs"),t}hasDocs(e,t){return!!(t&&"string"===typeof t.documentation&&(0,Dn.cW)(t.documentation).length>0)||(!!(t&&"object"===typeof t.documentation&&(0,Dn.cW)(t.documentation).value.length>0)||(!!(e.documentation&&"string"===typeof e.documentation&&(0,Dn.cW)(e.documentation).length>0)||!!(e.documentation&&"object"===typeof e.documentation&&(0,Dn.cW)(e.documentation.value).length>0)))}renderParameters(e,t,i){const[o,n]=this.getParameterLabelOffsets(t,i),s=document.createElement("span");s.textContent=t.label.substring(0,o);const r=document.createElement("span");r.textContent=t.label.substring(o,n),r.className="parameter active";const a=document.createElement("span");a.textContent=t.label.substring(n),X.R3(e,s,r,a)}getParameterLabelOffsets(e,t){const i=e.parameters[t];if(i){if(Array.isArray(i.label))return i.label;if(i.label.length){const t=new RegExp("(\\W|^)".concat((0,ii.ec)(i.label),"(?=\\W|$)"),"g");t.test(e.label);const o=t.lastIndex-i.label.length;return o>=0?[o,t.lastIndex]:[0,0]}return[0,0]}return[0,0]}next(){this.editor.focus(),this.model.next()}previous(){this.editor.focus(),this.model.previous()}getDomNode(){return this.domNodes||this.createParameterHintDOMNodes(),this.domNodes.element}getId(){return iC.ID}updateMaxHeight(){if(!this.domNodes)return;const e=Math.max(this.editor.getLayoutInfo().height/4,250),t="".concat(e,"px");this.domNodes.element.style.maxHeight=t;const i=this.domNodes.element.getElementsByClassName("phwrapper");i.length&&(i[0].style.maxHeight=t)}};lC.ID="editor.widget.parameterHintsWidget",lC=iC=oC([nC(2,ae.i6),nC(3,pi.v),nC(4,Us.O)],lC),(0,ze.P6G)("editorHoverWidget.highlightForeground",{dark:ze.Gwp,light:ze.Gwp,hcDark:ze.Gwp,hcLight:ze.Gwp},ne.NC("editorHoverWidgetHighlightForeground","Foreground color of the active item in the parameter hint."));var dC,cC=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},hC=function(e,t){return function(i,o){t(i,o,e)}};let uC=dC=class extends Fe.JT{static get(e){return e.getContribution(dC.ID)}constructor(e,t,i){super(),this.editor=e,this.model=this._register(new eC(e,i.signatureHelpProvider)),this._register(this.model.onChangedHints((e=>{var t;e?(this.widget.value.show(),this.widget.value.render(e)):null===(t=this.widget.rawValue)||void 0===t||t.hide()}))),this.widget=new So.o((()=>this._register(t.createInstance(lC,this.editor,this.model))))}cancel(){this.model.cancel()}previous(){var e;null===(e=this.widget.rawValue)||void 0===e||e.previous()}next(){var e;null===(e=this.widget.rawValue)||void 0===e||e.next()}trigger(e){this.model.trigger(e,0)}};uC.ID="editor.controller.parameterHints",uC=dC=cC([hC(1,ni.TG),hC(2,kt.p)],uC);class gC extends ee.R6{constructor(){super({id:"editor.action.triggerParameterHints",label:ne.NC("parameterHints.trigger.label","Trigger Parameter Hints"),alias:"Trigger Parameter Hints",precondition:oe.u.hasSignatureHelpProvider,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:3082,weight:100}})}run(e,t){const i=uC.get(t);null===i||void 0===i||i.trigger({triggerKind:Lt.WW.Invoke})}}(0,ee._K)(uC.ID,uC,2),(0,ee.Qr)(gC);const pC=ee._l.bindToContribution(uC.get);(0,ee.fK)(new pC({id:"closeParameterHints",precondition:Jb.Visible,handler:e=>e.cancel(),kbOpts:{weight:175,kbExpr:oe.u.focus,primary:9,secondary:[1033]}})),(0,ee.fK)(new pC({id:"showPrevParameterHint",precondition:ae.Ao.and(Jb.Visible,Jb.MultipleSignatures),handler:e=>e.previous(),kbOpts:{weight:175,kbExpr:oe.u.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}})),(0,ee.fK)(new pC({id:"showNextParameterHint",precondition:ae.Ao.and(Jb.Visible,Jb.MultipleSignatures),handler:e=>e.next(),kbOpts:{weight:175,kbExpr:oe.u.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}));var mC=i(61315),_C=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},fC=function(e,t){return function(i,o){t(i,o,e)}};const vC=new ae.uy("renameInputVisible",!1,(0,ne.NC)("renameInputVisible","Whether the rename input widget is visible"));new ae.uy("renameInputFocused",!1,(0,ne.NC)("renameInputFocused","Whether the rename input widget is focused"));let bC=class{constructor(e,t,i,o,n,s){this._editor=e,this._acceptKeybindings=t,this._themeService=i,this._keybindingService=o,this._logService=s,this.allowEditorOverflow=!0,this._disposables=new Fe.SL,this._visibleContextKey=vC.bindTo(n),this._isEditingRenameCandidate=!1,this._beforeFirstInputFieldEditSW=new Yn.G,this._input=new SC,this._disposables.add(this._input),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(50)&&this._updateFont()}))),this._disposables.add(i.onDidColorThemeChange(this._updateStyles,this))}dispose(){this._disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return"__renameInputWidget"}getDomNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="monaco-editor rename-box",this._domNode.appendChild(this._input.domNode),this._renameCandidateListView=this._disposables.add(new CC(this._domNode,{fontInfo:this._editor.getOption(50),onFocusChange:e=>{this._input.domNode.value=e,this._isEditingRenameCandidate=!1},onSelectionChange:()=>{this._isEditingRenameCandidate=!1,this.acceptInput(!1)}})),this._disposables.add(this._input.onDidChange((()=>{var e,t,i,o;void 0!==(null===(e=this._renameCandidateListView)||void 0===e?void 0:e.focusedCandidate)&&(this._isEditingRenameCandidate=!0),null!==(t=this._timeBeforeFirstInputFieldEdit)&&void 0!==t||(this._timeBeforeFirstInputFieldEdit=this._beforeFirstInputFieldEditSW.elapsed()),!1===(null===(i=this._renameCandidateProvidersCts)||void 0===i?void 0:i.token.isCancellationRequested)&&this._renameCandidateProvidersCts.cancel(),null===(o=this._renameCandidateListView)||void 0===o||o.clearFocus()}))),this._label=document.createElement("div"),this._label.className="rename-label",this._domNode.appendChild(this._label),this._updateFont(),this._updateStyles(this._themeService.getColorTheme())),this._domNode}_updateStyles(e){var t,i,o,n;if(!this._domNode)return;const s=e.getColor(ze.rh),r=e.getColor(ze.A42);this._domNode.style.backgroundColor=String(null!==(t=e.getColor(ze.D0T))&&void 0!==t?t:""),this._domNode.style.boxShadow=s?" 0 0 8px 2px ".concat(s):"",this._domNode.style.border=r?"1px solid ".concat(r):"",this._domNode.style.color=String(null!==(i=e.getColor(ze.zJb))&&void 0!==i?i:""),this._input.domNode.style.backgroundColor=String(null!==(o=e.getColor(ze.sEe))&&void 0!==o?o:"");const a=e.getColor(ze.dt_);this._input.domNode.style.borderWidth=a?"1px":"0px",this._input.domNode.style.borderStyle=a?"solid":"none",this._input.domNode.style.borderColor=null!==(n=null===a||void 0===a?void 0:a.toString())&&void 0!==n?n:"none"}_updateFont(){if(void 0===this._domNode)return;(0,Dn.p_)(void 0!==this._label,"RenameWidget#_updateFont: _label must not be undefined given _domNode is defined"),this._editor.applyFontInfo(this._input.domNode);const e=this._editor.getOption(50);this._label.style.fontSize="".concat(this._computeLabelFontSize(e.fontSize),"px")}_computeLabelFontSize(e){return.8*e}getPosition(){if(!this._visible)return null;if(!this._editor.hasModel()||!this._editor.getDomNode())return null;const e=X.D6(this.getDomNode().ownerDocument.body),t=X.i(this._editor.getDomNode()),i=this._getTopForPosition();this._nPxAvailableAbove=i+t.top,this._nPxAvailableBelow=e.height-this._nPxAvailableAbove;const o=this._editor.getOption(67),{totalHeight:n}=yC.getLayoutInfo({lineHeight:o}),s=this._nPxAvailableBelow>6*n?[2,1]:[1,2];return{position:this._position,preference:s}}beforeRender(){var e,t;const[i,o]=this._acceptKeybindings;return this._label.innerText=(0,ne.NC)({key:"label",comment:['placeholders are keybindings, e.g "F2 to Rename, Shift+F2 to Preview"']},"{0} to Rename, {1} to Preview",null===(e=this._keybindingService.lookupKeybinding(i))||void 0===e?void 0:e.getLabel(),null===(t=this._keybindingService.lookupKeybinding(o))||void 0===t?void 0:t.getLabel()),this._domNode.style.minWidth="200px",null}afterRender(e){if(this._trace("invoking afterRender, position: ",e?"not null":"null"),null===e)return void this.cancelInput(!0,"afterRender (because position is null)");if(!this._editor.hasModel()||!this._editor.getDomNode())return;(0,Dn.p_)(this._renameCandidateListView),(0,Dn.p_)(void 0!==this._nPxAvailableAbove),(0,Dn.p_)(void 0!==this._nPxAvailableBelow);const t=X.wn(this._input.domNode),i=X.wn(this._label);let o;o=2===e?this._nPxAvailableBelow:this._nPxAvailableAbove,this._renameCandidateListView.layout({height:o-i-t,width:X.w(this._input.domNode)})}acceptInput(e){var t;this._trace("invoking acceptInput"),null===(t=this._currentAcceptInput)||void 0===t||t.call(this,e)}cancelInput(e,t){var i;this._trace("invoking cancelInput, caller: ".concat(t,", _currentCancelInput: ").concat(this._currentAcceptInput?"not undefined":"undefined")),null===(i=this._currentCancelInput)||void 0===i||i.call(this,e)}focusNextRenameSuggestion(){var e;(null===(e=this._renameCandidateListView)||void 0===e?void 0:e.focusNext())||(this._input.domNode.value=this._currentName)}focusPreviousRenameSuggestion(){var e;(null===(e=this._renameCandidateListView)||void 0===e?void 0:e.focusPrevious())||(this._input.domNode.value=this._currentName)}getInput(e,t,i,o,n){const{start:s,end:r}=this._getSelection(e,t);this._renameCandidateProvidersCts=new Yi.A;const a=o(this._renameCandidateProvidersCts.token);this._updateRenameCandidates(a,t,n.token),this._isEditingRenameCandidate=!1,this._domNode.classList.toggle("preview",i),this._position=new We.L(e.startLineNumber,e.startColumn),this._currentName=t,this._input.domNode.value=t,this._input.domNode.setAttribute("selectionStart",s.toString()),this._input.domNode.setAttribute("selectionEnd",r.toString()),this._input.domNode.size=Math.max(1.1*(e.endColumn-e.startColumn),20),this._beforeFirstInputFieldEditSW.reset();const l=new Fe.SL;l.add((0,Fe.OF)((()=>n.dispose(!0)))),l.add((0,Fe.OF)((()=>{void 0!==this._renameCandidateProvidersCts&&(this._renameCandidateProvidersCts.dispose(!0),this._renameCandidateProvidersCts=void 0)})));const d=new Oe.CR;return d.p.finally((()=>{l.dispose(),this._hide()})),this._currentCancelInput=e=>{var t;return this._trace("invoking _currentCancelInput"),this._currentAcceptInput=void 0,this._currentCancelInput=void 0,null===(t=this._renameCandidateListView)||void 0===t||t.clearCandidates(),d.complete(e),!0},this._currentAcceptInput=e=>{this._trace("invoking _currentAcceptInput"),(0,Dn.p_)(void 0!==this._renameCandidateListView);const o=this._renameCandidateListView.nCandidates;let n,s;const r=this._renameCandidateListView.focusedCandidate;void 0!==r?(this._trace("using new name from renameSuggestion"),n=r,s={k:"renameSuggestion"}):(this._trace("using new name from inputField"),n=this._input.domNode.value,s=this._isEditingRenameCandidate?{k:"userEditedRenameSuggestion"}:{k:"inputField"}),n!==t&&0!==n.trim().length?(this._currentAcceptInput=void 0,this._currentCancelInput=void 0,this._renameCandidateListView.clearCandidates(),d.complete({newName:n,wantsPreview:i&&e,stats:{source:s,nRenameSuggestions:o,timeBeforeFirstInputFieldEdit:this._timeBeforeFirstInputFieldEdit}})):this.cancelInput(!0,"_currentAcceptInput (because newName === value || newName.trim().length === 0)")},l.add(n.token.onCancellationRequested((()=>this.cancelInput(!0,"cts.token.onCancellationRequested")))),l.add(this._editor.onDidBlurEditorWidget((()=>{var e;return this.cancelInput(!(null===(e=this._domNode)||void 0===e?void 0:e.ownerDocument.hasFocus()),"editor.onDidBlurEditorWidget")}))),this._show(),d.p}_getSelection(e,t){(0,Dn.p_)(this._editor.hasModel());const i=this._editor.getSelection();let o=0,n=t.length;return He.e.isEmpty(i)||He.e.spansMultipleLines(i)||!He.e.containsRange(e,i)||(o=Math.max(0,i.startColumn-e.startColumn),n=Math.min(e.endColumn,i.endColumn)-e.startColumn),{start:o,end:n}}_show(){this._trace("invoking _show"),this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout((()=>{this._input.domNode.focus(),this._input.domNode.setSelectionRange(parseInt(this._input.domNode.getAttribute("selectionStart")),parseInt(this._input.domNode.getAttribute("selectionEnd")))}),100)}async _updateRenameCandidates(e,t,i){var o=this;const n=function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return o._trace("_updateRenameCandidates",...t)};n("start");const s=await(0,Oe.eP)(Promise.allSettled(e),i);if(void 0===s)return void n("returning early - received updateRenameCandidates results - undefined");const r=s.flatMap((e=>"fulfilled"===e.status&&(0,Dn.$K)(e.value)?e.value:[]));n("received updateRenameCandidates results - total (unfiltered) ".concat(r.length," candidates."));const a=nt.EB(r,(e=>e.newSymbolName));n("distinct candidates - ".concat(a.length," candidates."));const l=a.filter((e=>{let{newSymbolName:i}=e;return i.trim().length>0&&i!==this._input.domNode.value&&i!==t}));n("valid distinct candidates - ".concat(r.length," candidates.")),l.length<1?n("returning early - no valid distinct candidates"):(n("setting candidates"),this._renameCandidateListView.setCandidates(l),n("asking editor to re-layout"),this._editor.layoutContentWidget(this))}_hide(){this._trace("invoked _hide"),this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)}_getTopForPosition(){const e=this._editor.getVisibleRanges();let t;return e.length>0?t=e[0].startLineNumber:(this._logService.warn("RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty"),t=Math.max(1,this._position.lineNumber-5)),this._editor.getTopForLineNumber(this._position.lineNumber)-this._editor.getTopForLineNumber(t)}_trace(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];this._logService.trace("RenameWidget",...t)}};bC=_C([fC(2,Ue.XE),fC(3,ki.d),fC(4,ae.i6),fC(5,qp.VZ)],bC);class CC{constructor(e,t){this._disposables=new Fe.SL,this._availableHeight=0,this._minimumWidth=0,this._lineHeight=t.fontInfo.lineHeight,this._typicalHalfwidthCharacterWidth=t.fontInfo.typicalHalfwidthCharacterWidth,this._listContainer=document.createElement("div"),e.appendChild(this._listContainer),this._listWidget=CC._createListWidget(this._listContainer,this._candidateViewHeight,t.fontInfo),this._listWidget.onDidChangeFocus((e=>{1===e.elements.length&&t.onFocusChange(e.elements[0].newSymbolName)}),this._disposables),this._listWidget.onDidChangeSelection((e=>{1===e.elements.length&&t.onSelectionChange()}),this._disposables),this._disposables.add(this._listWidget.onDidBlur((e=>{this._listWidget.setFocus([])}))),this._listWidget.style((0,Fo.TU)({listInactiveFocusForeground:ze.NPS,listInactiveFocusBackground:ze.Vqd}))}dispose(){this._listWidget.dispose(),this._disposables.dispose()}layout(e){let{height:t,width:i}=e;this._availableHeight=t,this._minimumWidth=i}setCandidates(e){this._listWidget.splice(0,0,e);const t=this._pickListHeight(e.length),i=this._pickListWidth(e);this._listWidget.layout(t,i),this._listContainer.style.height="".concat(t,"px"),this._listContainer.style.width="".concat(i,"px"),xe.i7((0,ne.NC)("renameSuggestionsReceivedAria","Received {0} rename suggestions",e.length))}clearCandidates(){this._listContainer.style.height="0px",this._listContainer.style.width="0px",this._listWidget.splice(0,this._listWidget.length,[])}get nCandidates(){return this._listWidget.length}get focusedCandidate(){if(0===this._listWidget.length)return;const e=this._listWidget.getSelectedElements()[0];if(void 0!==e)return e.newSymbolName;const t=this._listWidget.getFocusedElements()[0];return void 0!==t?t.newSymbolName:void 0}focusNext(){if(0===this._listWidget.length)return!1;const e=this._listWidget.getFocus();return 0===e.length?(this._listWidget.focusFirst(),!0):e[0]===this._listWidget.length-1?(this._listWidget.setFocus([]),!1):(this._listWidget.focusNext(),!0)}focusPrevious(){if(0===this._listWidget.length)return!1;const e=this._listWidget.getFocus();return 0===e.length?(this._listWidget.focusLast(),!0):0===e[0]?(this._listWidget.setFocus([]),!1):(this._listWidget.focusPrevious(),!0)}clearFocus(){this._listWidget.setFocus([])}get _candidateViewHeight(){const{totalHeight:e}=yC.getLayoutInfo({lineHeight:this._lineHeight});return e}_pickListHeight(e){const t=this._candidateViewHeight*e;return Math.min(t,this._availableHeight,7*this._candidateViewHeight)}_pickListWidth(e){const t=Math.ceil(Math.max(...e.map((e=>e.newSymbolName.length)))*this._typicalHalfwidthCharacterWidth);return Math.max(this._minimumWidth,25+t+10)}static _createListWidget(e,t,i){const o=new class{getTemplateId(e){return"candidate"}getHeight(e){return t}},n=new class{constructor(){this.templateId="candidate"}renderTemplate(e){return new yC(e,i)}renderElement(e,t,i){i.populate(e)}disposeTemplate(e){e.dispose()}};return new Oo.aV("NewSymbolNameCandidates",e,o,[n],{keyboardSupport:!1,mouseSupport:!0,multipleSelectionSupport:!1})}}class SC{constructor(){this._onDidChange=new ui.Q5,this.onDidChange=this._onDidChange.event,this._disposables=new Fe.SL}get domNode(){return this._domNode||(this._domNode=document.createElement("input"),this._domNode.className="rename-input",this._domNode.type="text",this._domNode.setAttribute("aria-label",(0,ne.NC)("renameAriaLabel","Rename input. Type new name and press Enter to commit.")),this._disposables.add(X.nm(this._domNode,"input",(()=>this._onDidChange.fire())))),this._domNode}dispose(){this._onDidChange.dispose(),this._disposables.dispose()}}class yC{constructor(e,t){this._domNode=document.createElement("div"),this._domNode.style.display="flex",this._domNode.style.columnGap="5px",this._domNode.style.alignItems="center",this._domNode.style.height="".concat(t.lineHeight,"px"),this._domNode.style.padding="".concat(yC._PADDING,"px");const i=document.createElement("div");i.style.display="flex",i.style.alignItems="center",i.style.width=i.style.height="".concat(.8*t.lineHeight,"px"),this._domNode.appendChild(i),this._icon=(0,Hn.h)($.l.sparkle),this._icon.style.display="none",i.appendChild(this._icon),this._label=document.createElement("div"),(0,Bg.N)(this._label,t),this._domNode.appendChild(this._label),e.appendChild(this._domNode)}populate(e){this._updateIcon(e),this._updateLabel(e)}_updateIcon(e){var t;const i=!!(null===(t=e.tags)||void 0===t?void 0:t.includes(Lt.w.AIGenerated));this._icon.style.display=i?"inherit":"none"}_updateLabel(e){this._label.innerText=e.newSymbolName}static getLayoutInfo(e){let{lineHeight:t}=e;return{totalHeight:t+2*yC._PADDING}}dispose(){}}yC._PADDING=2;var wC,xC=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},NC=function(e,t){return function(i,o){t(i,o,e)}};class LC{constructor(e,t,i){this.model=e,this.position=t,this._providerRenameIdx=0,this._providers=i.ordered(e)}hasProvider(){return this._providers.length>0}async resolveRenameLocation(e){const t=[];for(this._providerRenameIdx=0;this._providerRenameIdx<this._providers.length;this._providerRenameIdx++){const i=this._providers[this._providerRenameIdx];if(!i.resolveRenameLocation)break;const o=await i.resolveRenameLocation(this.model,this.position,e);if(o){if(!o.rejectReason)return o;t.push(o.rejectReason)}}this._providerRenameIdx=0;const i=this.model.getWordAtPosition(this.position);return i?{range:new He.e(this.position.lineNumber,i.startColumn,this.position.lineNumber,i.endColumn),text:i.word,rejectReason:t.length>0?t.join("\n"):void 0}:{range:He.e.fromPositions(this.position),text:"",rejectReason:t.length>0?t.join("\n"):void 0}}async provideRenameEdits(e,t){return this._provideRenameEdits(e,this._providerRenameIdx,[],t)}async _provideRenameEdits(e,t,i,o){const n=this._providers[t];if(!n)return{edits:[],rejectReason:i.join("\n")};const s=await n.provideRenameEdits(this.model,this.position,e,o);return s?s.rejectReason?this._provideRenameEdits(e,t+1,i.concat(s.rejectReason),o):s:this._provideRenameEdits(e,t+1,i.concat(ne.NC("no result","No result.")),o)}}let kC=wC=class{static get(e){return e.getContribution(wC.ID)}constructor(e,t,i,o,n,s,r,a,l){this.editor=e,this._instaService=t,this._notificationService=i,this._bulkEditService=o,this._progressService=n,this._logService=s,this._configService=r,this._languageFeaturesService=a,this._telemetryService=l,this._disposableStore=new Fe.SL,this._cts=new Yi.A,this._renameWidget=this._disposableStore.add(this._instaService.createInstance(bC,this.editor,["acceptRenameInput","acceptRenameInputWithPreview"]))}dispose(){this._disposableStore.dispose(),this._cts.dispose(!0)}async run(){var e,t;const i=this._logService.trace.bind(this._logService,"[rename]");if(this._cts.dispose(!0),this._cts=new Yi.A,!this.editor.hasModel())return void i("editor has no model");const o=this.editor.getPosition(),n=new LC(this.editor.getModel(),o,this._languageFeaturesService.renameProvider);if(!n.hasProvider())return void i("skeleton has no provider");const s=new ti.Dl(this.editor,5,void 0,this._cts.token);let r;try{i("resolving rename location");const e=n.resolveRenameLocation(s.token);this._progressService.showWhile(e,250),r=await e,i("resolved rename location")}catch(g){return void(g instanceof Ji.FU?i("resolve rename location cancelled",JSON.stringify(g,null,"\t")):(i("resolve rename location failed",g instanceof Error?g:JSON.stringify(g,null,"\t")),("string"===typeof g||(0,Ne.Fr)(g))&&(null===(e=fi.get(this.editor))||void 0===e||e.showMessage(g||ne.NC("resolveRenameLocationFailed","An unknown error occurred while resolving rename location"),o))))}finally{s.dispose()}if(!r)return void i("returning early - no loc");if(r.rejectReason)return i("returning early - rejected with reason: ".concat(r.rejectReason),r.rejectReason),void(null===(t=fi.get(this.editor))||void 0===t||t.showMessage(r.rejectReason,o));if(s.token.isCancellationRequested)return void i("returning early - cts1 cancelled");const a=new ti.Dl(this.editor,5,r.range,this._cts.token),l=this.editor.getModel(),d=this._languageFeaturesService.newSymbolNamesProvider.all(l);i("creating rename input field and awaiting its result");const c=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),h=await this._renameWidget.getInput(r.range,r.text,c,(e=>d.map((t=>t.provideNewSymbolNames(l,r.range,e)))),a);if(i("received response from rename input field"),d.length>0&&this._reportTelemetry(d.length,l.getLanguageId(),h),"boolean"===typeof h)return i("returning early - rename input field response - ".concat(h)),h&&this.editor.focus(),void a.dispose();this.editor.focus(),i("requesting rename edits");const u=(0,Oe.eP)(n.provideRenameEdits(h.newName,a.token),a.token).then((async e=>{if(e)if(this.editor.hasModel()){if(e.rejectReason)return i("returning early - rejected with reason: ".concat(e.rejectReason)),void this._notificationService.info(e.rejectReason);this.editor.setSelection(He.e.fromPositions(this.editor.getSelection().getPosition())),i("applying edits"),this._bulkEditService.apply(e,{editor:this.editor,showPreview:h.wantsPreview,label:ne.NC("label","Renaming '{0}' to '{1}'",null===r||void 0===r?void 0:r.text,h.newName),code:"undoredo.rename",quotableLabel:ne.NC("quotableLabel","Renaming {0} to {1}",null===r||void 0===r?void 0:r.text,h.newName),respectAutoSaveConfig:!0}).then((e=>{i("edits applied"),e.ariaSummary&&(0,xe.Z9)(ne.NC("aria","Successfully renamed '{0}' to '{1}'. Summary: {2}",r.text,h.newName,e.ariaSummary))})).catch((e=>{i("error when applying edits ".concat(JSON.stringify(e,null,"\t"))),this._notificationService.error(ne.NC("rename.failedApply","Rename failed to apply edits")),this._logService.error(e)}))}else i("returning early - no model after rename edits are provided");else i("returning early - no rename edits result")}),(e=>{i("error when providing rename edits",JSON.stringify(e,null,"\t")),this._notificationService.error(ne.NC("rename.failed","Rename failed to compute edits")),this._logService.error(e)})).finally((()=>{a.dispose()}));return i("returning rename operation"),this._progressService.showWhile(u,250),u}acceptRenameInput(e){this._renameWidget.acceptInput(e)}cancelRenameInput(){this._renameWidget.cancelInput(!0,"cancelRenameInput command")}focusNextRenameSuggestion(){this._renameWidget.focusNextRenameSuggestion()}focusPreviousRenameSuggestion(){this._renameWidget.focusPreviousRenameSuggestion()}_reportTelemetry(e,t,i){const o="boolean"===typeof i?{kind:"cancelled",languageId:t,nRenameSuggestionProviders:e}:{kind:"accepted",languageId:t,nRenameSuggestionProviders:e,source:i.stats.source.k,nRenameSuggestions:i.stats.nRenameSuggestions,timeBeforeFirstInputFieldEdit:i.stats.timeBeforeFirstInputFieldEdit,wantsPreview:i.wantsPreview};this._telemetryService.publicLog2("renameInvokedEvent",o)}};kC.ID="editor.contrib.renameController",kC=wC=xC([NC(1,ni.TG),NC(2,Xi.lT),NC(3,Nt.vu),NC(4,yi.ek),NC(5,qp.VZ),NC(6,mC.V),NC(7,kt.p),NC(8,eo.b)],kC);class DC extends ee.R6{constructor(){super({id:"editor.action.rename",label:ne.NC("rename.label","Rename Symbol"),alias:"Rename Symbol",precondition:ae.Ao.and(oe.u.writable,oe.u.hasRenameProvider),kbOpts:{kbExpr:oe.u.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1}})}runCommand(e,t){const i=e.get(te.$),[o,n]=Array.isArray(t)&&t||[void 0,void 0];return _t.o.isUri(o)&&We.L.isIPosition(n)?i.openCodeEditor({resource:o},i.getActiveCodeEditor()).then((e=>{e&&(e.setPosition(n),e.invokeWithinContext((t=>(this.reportTelemetry(t,e),this.run(t,e)))))}),Ji.dL):super.runCommand(e,t)}run(e,t){const i=e.get(qp.VZ),o=kC.get(t);return o?(i.trace("[RenameAction] got controller, running..."),o.run()):(i.trace("[RenameAction] returning early - controller missing"),Promise.resolve())}}(0,ee._K)(kC.ID,kC,4),(0,ee.Qr)(DC);const IC=ee._l.bindToContribution(kC.get);(0,ee.fK)(new IC({id:"acceptRenameInput",precondition:vC,handler:e=>e.acceptRenameInput(!1),kbOpts:{weight:199,kbExpr:ae.Ao.and(oe.u.focus,ae.Ao.not("isComposing")),primary:3}})),(0,ee.fK)(new IC({id:"acceptRenameInputWithPreview",precondition:ae.Ao.and(vC,ae.Ao.has("config.editor.rename.enablePreview")),handler:e=>e.acceptRenameInput(!0),kbOpts:{weight:199,kbExpr:ae.Ao.and(oe.u.focus,ae.Ao.not("isComposing")),primary:2051}})),(0,ee.fK)(new IC({id:"cancelRenameInput",precondition:vC,handler:e=>e.cancelRenameInput(),kbOpts:{weight:199,kbExpr:oe.u.focus,primary:9,secondary:[1033]}})),(0,se.r1)(class extends se.Ke{constructor(){super({id:"focusNextRenameSuggestion",title:{...ne.vv("focusNextRenameSuggestion","Focus Next Rename Suggestion")},precondition:vC,keybinding:[{primary:2,secondary:[18],weight:199}]})}run(e){const t=e.get(te.$).getFocusedCodeEditor();if(!t)return;const i=kC.get(t);i&&i.focusNextRenameSuggestion()}}),(0,se.r1)(class extends se.Ke{constructor(){super({id:"focusPreviousRenameSuggestion",title:{...ne.vv("focusPreviousRenameSuggestion","Focus Previous Rename Suggestion")},precondition:vC,keybinding:[{primary:1026,secondary:[16],weight:199}]})}run(e){const t=e.get(te.$).getFocusedCodeEditor();if(!t)return;const i=kC.get(t);i&&i.focusPreviousRenameSuggestion()}}),(0,ee.sb)("_executeDocumentRenameProvider",(function(e,t,i){for(var o=arguments.length,n=new Array(o>3?o-3:0),s=3;s<o;s++)n[s-3]=arguments[s];const[r]=n;(0,Dn.p_)("string"===typeof r);const{renameProvider:a}=e.get(kt.p);return async function(e,t,i,o){const n=new LC(t,i,e),s=await n.resolveRenameLocation(Yi.T.None);return(null===s||void 0===s?void 0:s.rejectReason)?{edits:[],rejectReason:s.rejectReason}:n.provideRenameEdits(o,Yi.T.None)}(a,t,i,r)})),(0,ee.sb)("_executePrepareRename",(async function(e,t,i){const{renameProvider:o}=e.get(kt.p),n=new LC(t,i,o),s=await n.resolveRenameLocation(Yi.T.None);if(null===s||void 0===s?void 0:s.rejectReason)throw new Error(s.rejectReason);return s})),ft.B.as(Ln.IP.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:5,description:ne.NC("enablePreview","Enable/disable the ability to preview changes before renaming"),default:!0,type:"boolean"}}});var RC=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},PC=function(e,t){return function(i,o){t(i,o,e)}};let MC=class extends Fe.JT{constructor(e,t,i){super(),this.editor=e,this.languageConfigurationService=t,this.editorWorkerService=i,this.decorations=this.editor.createDecorationsCollection(),this.options=this.createOptions(e.getOption(73)),this.computePromise=null,this.currentOccurrences={},this._register(e.onDidChangeModel((t=>{this.currentOccurrences={},this.options=this.createOptions(e.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0)}))),this._register(e.onDidChangeModelLanguage((t=>{this.currentOccurrences={},this.options=this.createOptions(e.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0)}))),this._register(t.onDidChange((t=>{var i;const o=null===(i=this.editor.getModel())||void 0===i?void 0:i.getLanguageId();o&&t.affects(o)&&(this.currentOccurrences={},this.options=this.createOptions(e.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0))}))),this._register(e.onDidChangeConfiguration((t=>{this.options&&!t.hasChanged(73)||(this.options=this.createOptions(e.getOption(73)),this.updateDecorations([]),this.stop(),this.computeSectionHeaders.schedule(0))}))),this._register(this.editor.onDidChangeModelContent((e=>{this.computeSectionHeaders.schedule()}))),this.computeSectionHeaders=this._register(new Oe.pY((()=>{this.findSectionHeaders()}),250)),this.computeSectionHeaders.schedule(0)}createOptions(e){if(!e||!this.editor.hasModel())return;const t=this.editor.getModel().getLanguageId();if(!t)return;const i=this.languageConfigurationService.getLanguageConfiguration(t).comments,o=this.languageConfigurationService.getLanguageConfiguration(t).foldingRules;return i||(null===o||void 0===o?void 0:o.markers)?{foldingRules:o,findMarkSectionHeaders:e.showMarkSectionHeaders,findRegionSectionHeaders:e.showRegionSectionHeaders}:void 0}findSectionHeaders(){var e,t;if(!this.editor.hasModel()||!(null===(e=this.options)||void 0===e?void 0:e.findMarkSectionHeaders)&&!(null===(t=this.options)||void 0===t?void 0:t.findRegionSectionHeaders))return;const i=this.editor.getModel();if(i.isDisposed()||i.isTooLargeForSyncing())return;const o=i.getVersionId();this.editorWorkerService.findSectionHeaders(i.uri,this.options).then((e=>{i.isDisposed()||i.getVersionId()!==o||this.updateDecorations(e)}))}updateDecorations(e){const t=this.editor.getModel();t&&(e=e.filter((e=>{if(!e.shouldBeInComments)return!0;const i=t.validateRange(e.range),o=t.tokenization.getLineTokens(i.startLineNumber),n=o.findTokenIndexAtOffset(i.startColumn-1),s=o.getStandardTokenType(n);return o.getLanguageId(n)===t.getLanguageId()&&1===s})));const i=Object.values(this.currentOccurrences).map((e=>e.decorationId)),o=e.map((e=>function(e){return{range:e.range,options:Be.qx.createDynamic({description:"section-header",stickiness:3,collapseOnReplaceEdit:!0,minimap:{color:void 0,position:1,sectionHeaderStyle:e.hasSeparatorLine?2:1,sectionHeaderText:e.text}})}}(e)));this.editor.changeDecorations((t=>{const n=t.deltaDecorations(i,o);this.currentOccurrences={};for(let i=0,o=n.length;i<o;i++){const t={sectionHeader:e[i],decorationId:n[i]};this.currentOccurrences[t.decorationId]=t}}))}stop(){this.computeSectionHeaders.cancel(),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop(),this.decorations.clear()}};MC.ID="editor.sectionHeaderDetector",MC=RC([PC(1,Xn.c_),PC(2,bg.p)],MC),(0,ee._K)(MC.ID,MC,1);var TC=i(24415),EC=i(12966);function AC(e){const t=new Uint32Array(function(e){let t=0;if(t+=2,"full"===e.type)t+=1+e.data.length;else{t+=1,t+=3*e.deltas.length;for(const i of e.deltas)i.data&&(t+=i.data.length)}return t}(e));let i=0;if(t[i++]=e.id,"full"===e.type)t[i++]=1,t[i++]=e.data.length,t.set(e.data,i),i+=e.data.length;else{t[i++]=2,t[i++]=e.deltas.length;for(const o of e.deltas)t[i++]=o.start,t[i++]=o.deleteCount,o.data?(t[i++]=o.data.length,t.set(o.data,i),i+=o.data.length):t[i++]=0}return function(e){const t=new Uint8Array(e.buffer,e.byteOffset,4*e.length);return it.r()||function(e){for(let t=0,i=e.length;t<i;t+=4){const i=e[t+0],o=e[t+1],n=e[t+2],s=e[t+3];e[t+0]=s,e[t+1]=n,e[t+2]=o,e[t+3]=i}}(t),EC.KN.wrap(t)}(t)}function OC(e){return e&&!!e.data}function FC(e){return e&&Array.isArray(e.edits)}class WC{constructor(e,t,i){this.provider=e,this.tokens=t,this.error=i}}function HC(e,t){return e.has(t)}async function VC(e,t,i,o,n){const s=function(e,t){const i=e.orderedGroups(t);return i.length>0?i[0]:[]}(e,t),r=await Promise.all(s.map((async e=>{let s,r=null;try{s=await e.provideDocumentSemanticTokens(t,e===i?o:null,n)}catch(a){r=a,s=null}return s&&(OC(s)||FC(s))||(s=null),new WC(e,s,r)})));for(const a of r){if(a.error)throw a.error;if(a.tokens)return a}return r.length>0?r[0]:null}class BC{constructor(e,t){this.provider=e,this.tokens=t}}function zC(e,t){const i=e.orderedGroups(t);return i.length>0?i[0]:[]}async function UC(e,t,i,o){const n=zC(e,t),s=await Promise.all(n.map((async e=>{let n;try{n=await e.provideDocumentRangeSemanticTokens(t,i,o)}catch(s){(0,Ji.Cp)(s),n=null}return n&&OC(n)||(n=null),new BC(e,n)})));for(const r of s)if(r.tokens)return r;return s.length>0?s[0]:null}ye.P.registerCommand("_provideDocumentSemanticTokensLegend",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n]=i;(0,Dn.p_)(n instanceof _t.o);const s=e.get($i.q).getModel(n);if(!s)return;const{documentSemanticTokensProvider:r}=e.get(kt.p),a=function(e,t){const i=e.orderedGroups(t);return i.length>0?i[0]:null}(r,s);return a?a[0].getLegend():e.get(ye.H).executeCommand("_provideDocumentRangeSemanticTokensLegend",n)})),ye.P.registerCommand("_provideDocumentSemanticTokens",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n]=i;(0,Dn.p_)(n instanceof _t.o);const s=e.get($i.q).getModel(n);if(!s)return;const{documentSemanticTokensProvider:r}=e.get(kt.p);if(!HC(r,s))return e.get(ye.H).executeCommand("_provideDocumentRangeSemanticTokens",n,s.getFullModelRange());const a=await VC(r,s,null,null,Yi.T.None);if(!a)return;const{provider:l,tokens:d}=a;if(!d||!OC(d))return;const c=AC({id:0,type:"full",data:d.data});return d.resultId&&l.releaseDocumentSemanticTokens(d.resultId),c})),ye.P.registerCommand("_provideDocumentRangeSemanticTokensLegend",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n,s]=i;(0,Dn.p_)(n instanceof _t.o);const r=e.get($i.q).getModel(n);if(!r)return;const{documentRangeSemanticTokensProvider:a}=e.get(kt.p),l=zC(a,r);if(0===l.length)return;if(1===l.length)return l[0].getLegend();if(!s||!He.e.isIRange(s))return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"),l[0].getLegend();const d=await UC(a,r,He.e.lift(s),Yi.T.None);return d?d.provider.getLegend():void 0})),ye.P.registerCommand("_provideDocumentRangeSemanticTokens",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n,s]=i;(0,Dn.p_)(n instanceof _t.o),(0,Dn.p_)(He.e.isIRange(s));const r=e.get($i.q).getModel(n);if(!r)return;const{documentRangeSemanticTokensProvider:a}=e.get(kt.p),l=await UC(a,r,He.e.lift(s),Yi.T.None);return l&&l.tokens?AC({id:0,type:"full",data:l.tokens.data}):void 0}));var KC=i(35157);const jC="editor.semanticHighlighting";function qC(e,t,i){var o;const n=null===(o=i.getValue(jC,{overrideIdentifier:e.getLanguageId(),resource:e.uri}))||void 0===o?void 0:o.enabled;return"boolean"===typeof n?n:t.getColorTheme().semanticHighlighting}var GC,QC=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ZC=function(e,t){return function(i,o){t(i,o,e)}};let YC=class extends Fe.JT{constructor(e,t,i,o,n,s){super(),this._watchers=Object.create(null);const r=t=>{this._watchers[t.uri.toString()]=new JC(t,e,i,n,s)},a=(e,t)=>{t.dispose(),delete this._watchers[e.uri.toString()]},l=()=>{for(const e of t.getModels()){const t=this._watchers[e.uri.toString()];qC(e,i,o)?t||r(e):t&&a(e,t)}};t.getModels().forEach((e=>{qC(e,i,o)&&r(e)})),this._register(t.onModelAdded((e=>{qC(e,i,o)&&r(e)}))),this._register(t.onModelRemoved((e=>{const t=this._watchers[e.uri.toString()];t&&a(e,t)}))),this._register(o.onDidChangeConfiguration((e=>{e.affectsConfiguration(jC)&&l()}))),this._register(i.onDidColorThemeChange(l))}dispose(){for(const e of Object.values(this._watchers))e.dispose();super.dispose()}};YC=QC([ZC(0,KC.s),ZC(1,$i.q),ZC(2,Ue.XE),ZC(3,re.Ui),ZC(4,jn.A),ZC(5,kt.p)],YC);let JC=GC=class extends Fe.JT{constructor(e,t,i,o,n){super(),this._semanticTokensStylingService=t,this._isDisposed=!1,this._model=e,this._provider=n.documentSemanticTokensProvider,this._debounceInformation=o.for(this._provider,"DocumentSemanticTokens",{min:GC.REQUEST_MIN_DELAY,max:GC.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new Oe.pY((()=>this._fetchDocumentSemanticTokensNow()),GC.REQUEST_MIN_DELAY)),this._currentDocumentResponse=null,this._currentDocumentRequestCancellationTokenSource=null,this._documentProvidersChangeListeners=[],this._providersChangedDuringRequest=!1,this._register(this._model.onDidChangeContent((()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))}))),this._register(this._model.onDidChangeAttached((()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))}))),this._register(this._model.onDidChangeLanguage((()=>{this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(0)})));const s=()=>{(0,Fe.B9)(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const t of this._provider.all(e))"function"===typeof t.onDidChange&&this._documentProvidersChangeListeners.push(t.onDidChange((()=>{this._currentDocumentRequestCancellationTokenSource?this._providersChangedDuringRequest=!0:this._fetchDocumentSemanticTokens.schedule(0)})))};s(),this._register(this._provider.onDidChange((()=>{s(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))}))),this._register(i.onDidColorThemeChange((e=>{this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))}))),this._fetchDocumentSemanticTokens.schedule(0)}dispose(){this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),(0,Fe.B9)(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!HC(this._provider,this._model))return void(this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1));if(!this._model.isAttachedToEditor())return;const e=new Yi.A,t=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,i=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,o=VC(this._provider,this._model,t,i,e.token);this._currentDocumentRequestCancellationTokenSource=e,this._providersChangedDuringRequest=!1;const n=[],s=this._model.onDidChangeContent((e=>{n.push(e)})),r=new Yn.G(!1);o.then((e=>{if(this._debounceInformation.update(this._model,r.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,s.dispose(),e){const{provider:t,tokens:i}=e,o=this._semanticTokensStylingService.getStyling(t);this._setDocumentSemanticTokens(t,i||null,o,n)}else this._setDocumentSemanticTokens(null,null,null,n)}),(e=>{e&&(Ji.n2(e)||"string"===typeof e.message&&-1!==e.message.indexOf("busy"))||Ji.dL(e),this._currentDocumentRequestCancellationTokenSource=null,s.dispose(),(n.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))}))}static _copy(e,t,i,o,n){n=Math.min(n,i.length-o,e.length-t);for(let s=0;s<n;s++)i[o+s]=e[t+s]}_setDocumentSemanticTokens(e,t,i,o){const n=this._currentDocumentResponse,s=()=>{(o.length>0||this._providersChangedDuringRequest)&&!this._fetchDocumentSemanticTokens.isScheduled()&&this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))};if(this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._isDisposed)e&&t&&e.releaseDocumentSemanticTokens(t.resultId);else if(e&&i){if(!t)return this._model.tokenization.setSemanticTokens(null,!0),void s();if(FC(t)){if(!n)return void this._model.tokenization.setSemanticTokens(null,!0);if(0===t.edits.length)t={resultId:t.resultId,data:n.data};else{let e=0;for(const i of t.edits)e+=(i.data?i.data.length:0)-i.deleteCount;const o=n.data,s=new Uint32Array(o.length+e);let r=o.length,a=s.length;for(let l=t.edits.length-1;l>=0;l--){const e=t.edits[l];if(e.start>o.length)return i.warnInvalidEditStart(n.resultId,t.resultId,l,e.start,o.length),void this._model.tokenization.setSemanticTokens(null,!0);const d=r-(e.start+e.deleteCount);d>0&&(GC._copy(o,r-d,s,a-d,d),a-=d),e.data&&(GC._copy(e.data,0,s,a-e.data.length,e.data.length),a-=e.data.length),r=e.start}r>0&&GC._copy(o,0,s,0,r),t={resultId:t.resultId,data:s}}}if(OC(t)){this._currentDocumentResponse=new $C(e,t.resultId,t.data);const n=(0,TC.h)(t,i,this._model.getLanguageId());if(o.length>0)for(const e of o)for(const t of n)for(const i of e.changes)t.applyEdit(i.range,i.text);this._model.tokenization.setSemanticTokens(n,!0)}else this._model.tokenization.setSemanticTokens(null,!0);s()}else this._model.tokenization.setSemanticTokens(null,!1)}};JC.REQUEST_MIN_DELAY=300,JC.REQUEST_MAX_DELAY=2e3,JC=GC=QC([ZC(1,KC.s),ZC(2,Ue.XE),ZC(3,jn.A),ZC(4,kt.p)],JC);class $C{constructor(e,t,i){this.provider=e,this.resultId=t,this.data=i}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}}(0,es.y)(YC);var XC=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},eS=function(e,t){return function(i,o){t(i,o,e)}};let tS=class extends Fe.JT{constructor(e,t,i,o,n,s){super(),this._semanticTokensStylingService=t,this._themeService=i,this._configurationService=o,this._editor=e,this._provider=s.documentRangeSemanticTokensProvider,this._debounceInformation=n.for(this._provider,"DocumentRangeSemanticTokens",{min:100,max:500}),this._tokenizeViewport=this._register(new Oe.pY((()=>this._tokenizeViewportNow()),100)),this._outstandingRequests=[];const r=()=>{this._editor.hasModel()&&this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()))};this._register(this._editor.onDidScrollChange((()=>{r()}))),this._register(this._editor.onDidChangeModel((()=>{this._cancelAll(),r()}))),this._register(this._editor.onDidChangeModelContent((e=>{this._cancelAll(),r()}))),this._register(this._provider.onDidChange((()=>{this._cancelAll(),r()}))),this._register(this._configurationService.onDidChangeConfiguration((e=>{e.affectsConfiguration(jC)&&(this._cancelAll(),r())}))),this._register(this._themeService.onDidColorThemeChange((()=>{this._cancelAll(),r()}))),r()}_cancelAll(){for(const e of this._outstandingRequests)e.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(e){for(let t=0,i=this._outstandingRequests.length;t<i;t++)if(this._outstandingRequests[t]===e)return void this._outstandingRequests.splice(t,1)}_tokenizeViewportNow(){if(!this._editor.hasModel())return;const e=this._editor.getModel();if(e.tokenization.hasCompleteSemanticTokens())return;if(!qC(e,this._themeService,this._configurationService))return void(e.tokenization.hasSomeSemanticTokens()&&e.tokenization.setSemanticTokens(null,!1));if(!function(e,t){return e.has(t)}(this._provider,e))return void(e.tokenization.hasSomeSemanticTokens()&&e.tokenization.setSemanticTokens(null,!1));const t=this._editor.getVisibleRangesPlusViewportAboveBelow();this._outstandingRequests=this._outstandingRequests.concat(t.map((t=>this._requestRange(e,t))))}_requestRange(e,t){const i=e.getVersionId(),o=(0,Oe.PG)((i=>Promise.resolve(UC(this._provider,e,t,i)))),n=new Yn.G(!1);return o.then((o=>{if(this._debounceInformation.update(e,n.elapsed()),!o||!o.tokens||e.isDisposed()||e.getVersionId()!==i)return;const{provider:s,tokens:r}=o,a=this._semanticTokensStylingService.getStyling(s);e.tokenization.setPartialSemanticTokens(t,(0,TC.h)(r,a,e.getLanguageId()))})).then((()=>this._removeOutstandingRequest(o)),(()=>this._removeOutstandingRequest(o))),o}};tS.ID="editor.contrib.viewportSemanticTokens",tS=XC([eS(1,KC.s),eS(2,Ue.XE),eS(3,re.Ui),eS(4,jn.A),eS(5,kt.p)],tS),(0,ee._K)(tS.ID,tS,1);class iS{constructor(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.selectSubwords=e}provideSelectionRanges(e,t){const i=[];for(const o of t){const t=[];i.push(t),this.selectSubwords&&this._addInWordRanges(t,e,o),this._addWordRanges(t,e,o),this._addWhitespaceLine(t,e,o),t.push({range:e.getFullModelRange()})}return i}_addInWordRanges(e,t,i){const o=t.getWordAtPosition(i);if(!o)return;const{word:n,startColumn:s}=o,r=i.column-s;let a=r,l=r,d=0;for(;a>=0;a--){const e=n.charCodeAt(a);if(a!==r&&(95===e||45===e))break;if((0,ii.mK)(e)&&(0,ii.df)(d))break;d=e}for(a+=1;l<n.length;l++){const e=n.charCodeAt(l);if((0,ii.df)(e)&&(0,ii.mK)(d))break;if(95===e||45===e)break;d=e}a<l&&e.push({range:new He.e(i.lineNumber,s+a,i.lineNumber,s+l)})}_addWordRanges(e,t,i){const o=t.getWordAtPosition(i);o&&e.push({range:new He.e(i.lineNumber,o.startColumn,i.lineNumber,o.endColumn)})}_addWhitespaceLine(e,t,i){t.getLineLength(i.lineNumber)>0&&0===t.getLineFirstNonWhitespaceColumn(i.lineNumber)&&0===t.getLineLastNonWhitespaceColumn(i.lineNumber)&&e.push({range:new He.e(i.lineNumber,1,i.lineNumber,t.getLineMaxColumn(i.lineNumber))})}}var oS,nS=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},sS=function(e,t){return function(i,o){t(i,o,e)}};class rS{constructor(e,t){this.index=e,this.ranges=t}mov(e){const t=this.index+(e?1:-1);if(t<0||t>=this.ranges.length)return this;const i=new rS(t,this.ranges);return i.ranges[t].equalsRange(this.ranges[this.index])?i.mov(e):i}}let aS=oS=class{static get(e){return e.getContribution(oS.ID)}constructor(e,t){this._editor=e,this._languageFeaturesService=t,this._ignoreSelection=!1}dispose(){var e;null===(e=this._selectionListener)||void 0===e||e.dispose()}async run(e){if(!this._editor.hasModel())return;const t=this._editor.getSelections(),i=this._editor.getModel();if(this._state||await dS(this._languageFeaturesService.selectionRangeProvider,i,t.map((e=>e.getPosition())),this._editor.getOption(113),Yi.T.None).then((e=>{var i;if(nt.Of(e)&&e.length===t.length&&this._editor.hasModel()&&nt.fS(this._editor.getSelections(),t,((e,t)=>e.equalsSelection(t)))){for(let i=0;i<e.length;i++)e[i]=e[i].filter((e=>e.containsPosition(t[i].getStartPosition())&&e.containsPosition(t[i].getEndPosition()))),e[i].unshift(t[i]);this._state=e.map((e=>new rS(0,e))),null===(i=this._selectionListener)||void 0===i||i.dispose(),this._selectionListener=this._editor.onDidChangeCursorPosition((()=>{var e;this._ignoreSelection||(null===(e=this._selectionListener)||void 0===e||e.dispose(),this._state=void 0)}))}})),!this._state)return;this._state=this._state.map((t=>t.mov(e)));const o=this._state.map((e=>ke.Y.fromPositions(e.ranges[e.index].getStartPosition(),e.ranges[e.index].getEndPosition())));this._ignoreSelection=!0;try{this._editor.setSelections(o)}finally{this._ignoreSelection=!1}}};aS.ID="editor.contrib.smartSelectController",aS=oS=nS([sS(1,kt.p)],aS);class lS extends ee.R6{constructor(e,t){super(t),this._forward=e}async run(e,t){const i=aS.get(t);i&&await i.run(this._forward)}}ye.P.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand");async function dS(e,t,i,o,n){const s=e.all(t).concat(new iS(o.selectSubwords));1===s.length&&s.unshift(new zm);const r=[],a=[];for(const l of s)r.push(Promise.resolve(l.provideSelectionRanges(t,i,n)).then((e=>{if(nt.Of(e)&&e.length===i.length)for(let t=0;t<i.length;t++){a[t]||(a[t]=[]);for(const o of e[t])He.e.isIRange(o.range)&&He.e.containsPosition(o.range,i[t])&&a[t].push(He.e.lift(o.range))}}),Ji.Cp));return await Promise.all(r),a.map((e=>{if(0===e.length)return[];e.sort(((e,t)=>We.L.isBefore(e.getStartPosition(),t.getStartPosition())?1:We.L.isBefore(t.getStartPosition(),e.getStartPosition())||We.L.isBefore(e.getEndPosition(),t.getEndPosition())?-1:We.L.isBefore(t.getEndPosition(),e.getEndPosition())?1:0));const i=[];let n;for(const t of e)(!n||He.e.containsRange(t,n)&&!He.e.equalsRange(t,n))&&(i.push(t),n=t);if(!o.selectLeadingAndTrailingWhitespace)return i;const s=[i[0]];for(let o=1;o<i.length;o++){const e=i[o-1],n=i[o];if(n.startLineNumber!==e.startLineNumber||n.endLineNumber!==e.endLineNumber){const i=new He.e(e.startLineNumber,t.getLineFirstNonWhitespaceColumn(e.startLineNumber),e.endLineNumber,t.getLineLastNonWhitespaceColumn(e.endLineNumber));i.containsRange(e)&&!i.equalsRange(e)&&n.containsRange(i)&&!n.equalsRange(i)&&s.push(i);const o=new He.e(e.startLineNumber,1,e.endLineNumber,t.getLineMaxColumn(e.endLineNumber));o.containsRange(e)&&!o.equalsRange(i)&&n.containsRange(o)&&!n.equalsRange(o)&&s.push(o)}s.push(n)}return s}))}(0,ee._K)(aS.ID,aS,4),(0,ee.Qr)(class extends lS{constructor(){super(!0,{id:"editor.action.smartSelect.expand",label:ne.NC("smartSelect.expand","Expand Selection"),alias:"Expand Selection",precondition:void 0,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"1_basic",title:ne.NC({key:"miSmartSelectGrow",comment:["&& denotes a mnemonic"]},"&&Expand Selection"),order:2}})}}),(0,ee.Qr)(class extends lS{constructor(){super(!1,{id:"editor.action.smartSelect.shrink",label:ne.NC("smartSelect.shrink","Shrink Selection"),alias:"Shrink Selection",precondition:void 0,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:se.eH.MenubarSelectionMenu,group:"1_basic",title:ne.NC({key:"miSmartSelectShrink",comment:["&& denotes a mnemonic"]},"&&Shrink Selection"),order:3}})}}),ye.P.registerCommand("_executeSelectionRangeProvider",(async function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];const[n,s]=i;(0,Dn.p_)(_t.o.isUri(n));const r=e.get(kt.p).selectionRangeProvider,a=await e.get(Ks.S).createModelReference(n);try{return dS(r,a.object.textEditorModel,s,{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},Yi.T.None)}finally{a.dispose()}}));const cS=Object.freeze({View:(0,ne.vv)("view","View"),Help:(0,ne.vv)("help","Help"),Test:(0,ne.vv)("test","Test"),File:(0,ne.vv)("file","File"),Preferences:(0,ne.vv)("preferences","Preferences"),Developer:(0,ne.vv)({key:"developer",comment:["A developer on Code itself or someone diagnosing issues in Code"]},"Developer")});var hS=i(86115);class uS{constructor(e,t,i){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;this.startLineNumbers=e,this.endLineNumbers=t,this.lastLineRelativePosition=i,this.showEndForLine=o}equals(e){return!!e&&this.lastLineRelativePosition===e.lastLineRelativePosition&&this.showEndForLine===e.showEndForLine&&(0,nt.fS)(this.startLineNumbers,e.startLineNumbers)&&(0,nt.fS)(this.endLineNumbers,e.endLineNumbers)}}const gS=(0,Vg.Z)("stickyScrollViewLayer",{createHTML:e=>e}),pS="data-sticky-line-index",mS="data-sticky-is-line",_S="data-sticky-is-folding-icon";class fS extends Fe.JT{constructor(e){super(),this._editor=e,this._foldingIconStore=new Fe.SL,this._rootDomNode=document.createElement("div"),this._lineNumbersDomNode=document.createElement("div"),this._linesDomNodeScrollable=document.createElement("div"),this._linesDomNode=document.createElement("div"),this._lineHeight=this._editor.getOption(67),this._renderedStickyLines=[],this._lineNumbers=[],this._lastLineRelativePosition=0,this._minContentWidthInPx=0,this._isOnGlyphMargin=!1,this._lineNumbersDomNode.className="sticky-widget-line-numbers",this._lineNumbersDomNode.setAttribute("role","none"),this._linesDomNode.className="sticky-widget-lines",this._linesDomNode.setAttribute("role","list"),this._linesDomNodeScrollable.className="sticky-widget-lines-scrollable",this._linesDomNodeScrollable.appendChild(this._linesDomNode),this._rootDomNode.className="sticky-widget",this._rootDomNode.classList.toggle("peek",e instanceof tr),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable);const t=()=>{this._linesDomNode.style.left=this._editor.getOption(115).scrollWithEditor?"-".concat(this._editor.getScrollLeft(),"px"):"0px"};this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(115)&&t(),e.hasChanged(67)&&(this._lineHeight=this._editor.getOption(67))}))),this._register(this._editor.onDidScrollChange((e=>{e.scrollLeftChanged&&t(),e.scrollWidthChanged&&this._updateWidgetWidth()}))),this._register(this._editor.onDidChangeModel((()=>{t(),this._updateWidgetWidth()}))),this._register(this._foldingIconStore),t(),this._register(this._editor.onDidLayoutChange((e=>{this._updateWidgetWidth()}))),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getRenderedStickyLine(e){return this._renderedStickyLines.find((t=>t.lineNumber===e))}getCurrentLines(){return this._lineNumbers}setState(e,t,i){if(void 0===i&&(!this._previousState&&!e||this._previousState&&this._previousState.equals(e)))return;const o=this._isWidgetHeightZero(e),n=o?void 0:e,s=o?0:this._findLineToRebuildWidgetFrom(e,i);this._renderRootNode(n,t,s),this._previousState=e}_isWidgetHeightZero(e){if(!e)return!0;const t=e.startLineNumbers.length*this._lineHeight+e.lastLineRelativePosition;if(t>0){this._lastLineRelativePosition=e.lastLineRelativePosition;const t=[...e.startLineNumbers];null!==e.showEndForLine&&(t[e.showEndForLine]=e.endLineNumbers[e.showEndForLine]),this._lineNumbers=t}else this._lastLineRelativePosition=0,this._lineNumbers=[];return 0===t}_findLineToRebuildWidgetFrom(e,t){if(!e||!this._previousState)return 0;if(void 0!==t)return t;const i=this._previousState,o=e.startLineNumbers.findIndex((e=>!i.startLineNumbers.includes(e)));return-1===o?0:o}_updateWidgetWidth(){const e=this._editor.getLayoutInfo(),t=e.contentLeft;this._lineNumbersDomNode.style.width="".concat(t,"px"),this._linesDomNodeScrollable.style.setProperty("--vscode-editorStickyScroll-scrollableWidth","".concat(this._editor.getScrollWidth()-e.verticalScrollbarWidth,"px")),this._rootDomNode.style.width="".concat(e.width-e.verticalScrollbarWidth,"px")}_clearStickyLinesFromLine(e){this._foldingIconStore.clear();for(let t=e;t<this._renderedStickyLines.length;t++){const e=this._renderedStickyLines[t];e.lineNumberDomNode.remove(),e.lineDomNode.remove()}this._renderedStickyLines=this._renderedStickyLines.slice(0,e),this._rootDomNode.style.display="none"}_useFoldingOpacityTransition(e){this._lineNumbersDomNode.style.setProperty("--vscode-editorStickyScroll-foldingOpacityTransition","opacity ".concat(e?.5:0,"s"))}_setFoldingIconsVisibility(e){for(const t of this._renderedStickyLines){const i=t.foldingIcon;i&&i.setVisible(!!e||i.isCollapsed)}}async _renderRootNode(e,t,i){if(this._clearStickyLinesFromLine(i),!e)return;for(const r of this._renderedStickyLines)this._updateTopAndZIndexOfStickyLine(r);const o=this._editor.getLayoutInfo(),n=this._lineNumbers.slice(i);for(const[r,a]of n.entries()){const e=this._renderChildNode(r+i,a,t,o);e&&(this._linesDomNode.appendChild(e.lineDomNode),this._lineNumbersDomNode.appendChild(e.lineNumberDomNode),this._renderedStickyLines.push(e))}t&&(this._setFoldingHoverListeners(),this._useFoldingOpacityTransition(!this._isOnGlyphMargin));const s=this._lineNumbers.length*this._lineHeight+this._lastLineRelativePosition;this._rootDomNode.style.display="block",this._lineNumbersDomNode.style.height="".concat(s,"px"),this._linesDomNodeScrollable.style.height="".concat(s,"px"),this._rootDomNode.style.height="".concat(s,"px"),this._rootDomNode.style.marginLeft="0px",this._minContentWidthInPx=Math.max(...this._renderedStickyLines.map((e=>e.scrollWidth)))+o.verticalScrollbarWidth,this._editor.layoutOverlayWidget(this)}_setFoldingHoverListeners(){"mouseover"===this._editor.getOption(110)&&(this._foldingIconStore.add(X.nm(this._lineNumbersDomNode,X.tw.MOUSE_ENTER,(()=>{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)}))),this._foldingIconStore.add(X.nm(this._lineNumbersDomNode,X.tw.MOUSE_LEAVE,(()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)}))))}_renderChildNode(e,t,i,o){const n=this._editor._getViewModel();if(!n)return;const s=n.coordinatesConverter.convertModelPositionToViewPosition(new We.L(t,1)).lineNumber,r=n.getViewLineRenderingData(s),a=this._editor.getOption(68);let l;try{l=Kg.Kp.filter(r.inlineDecorations,s,r.minColumn,r.maxColumn)}catch(b){l=[]}const d=new jg.IJ(!0,!0,r.content,r.continuesWithWrappedLine,r.isBasicASCII,r.containsRTL,0,r.tokens,l,r.tabSize,r.startVisibleColumn,1,1,1,500,"none",!0,!0,null),c=new zg.HT(2e3),h=(0,jg.d1)(d,c);let u;u=gS?gS.createHTML(c.build()):c.build();const g=document.createElement("span");g.setAttribute(pS,String(e)),g.setAttribute(mS,""),g.setAttribute("role","listitem"),g.tabIndex=0,g.className="sticky-line-content",g.classList.add("stickyLine".concat(t)),g.style.lineHeight="".concat(this._lineHeight,"px"),g.innerHTML=u;const p=document.createElement("span");p.setAttribute(pS,String(e)),p.setAttribute("data-sticky-is-line-number",""),p.className="sticky-line-number",p.style.lineHeight="".concat(this._lineHeight,"px");const m=o.contentLeft;p.style.width="".concat(m,"px");const _=document.createElement("span");1===a.renderType||3===a.renderType&&t%10===0?_.innerText=t.toString():2===a.renderType&&(_.innerText=Math.abs(t-this._editor.getPosition().lineNumber).toString()),_.className="sticky-line-number-inner",_.style.lineHeight="".concat(this._lineHeight,"px"),_.style.width="".concat(o.lineNumbersWidth,"px"),_.style.paddingLeft="".concat(o.lineNumbersLeft,"px"),p.appendChild(_);const f=this._renderFoldingIconForLine(i,t);f&&p.appendChild(f.domNode),this._editor.applyFontInfo(g),this._editor.applyFontInfo(_),p.style.lineHeight="".concat(this._lineHeight,"px"),g.style.lineHeight="".concat(this._lineHeight,"px"),p.style.height="".concat(this._lineHeight,"px"),g.style.height="".concat(this._lineHeight,"px");const v=new vS(e,t,g,p,f,h.characterMapping,g.scrollWidth);return this._updateTopAndZIndexOfStickyLine(v)}_updateTopAndZIndexOfStickyLine(e){var t;const i=e.index,o=e.lineDomNode,n=e.lineNumberDomNode,s=i===this._lineNumbers.length-1;o.style.zIndex=s?"0":"1",n.style.zIndex=s?"0":"1";const r="".concat(i*this._lineHeight+this._lastLineRelativePosition+((null===(t=e.foldingIcon)||void 0===t?void 0:t.isCollapsed)?1:0),"px"),a="".concat(i*this._lineHeight,"px");return o.style.top=s?r:a,n.style.top=s?r:a,e}_renderFoldingIconForLine(e,t){const i=this._editor.getOption(110);if(!e||"never"===i)return;const o=e.regions,n=o.findRange(t),s=o.getStartLineNumber(n);if(!(t===s))return;const r=o.isCollapsed(n),a=new bS(r,s,o.getEndLineNumber(n),this._lineHeight);return a.setVisible(!!this._isOnGlyphMargin||(r||"always"===i)),a.domNode.setAttribute(_S,""),a}getId(){return"editor.contrib.stickyScrollWidget"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:null}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(e){0<=e&&e<this._renderedStickyLines.length&&this._renderedStickyLines[e].lineDomNode.focus()}getEditorPositionFromNode(e){if(!e||e.children.length>0)return null;const t=this._getRenderedStickyLineFromChildDomNode(e);if(!t)return null;const i=(0,hS.dL)(t.characterMapping,e,0);return new We.L(t.lineNumber,i)}getLineNumberFromChildDomNode(e){var t,i;return null!==(i=null===(t=this._getRenderedStickyLineFromChildDomNode(e))||void 0===t?void 0:t.lineNumber)&&void 0!==i?i:null}_getRenderedStickyLineFromChildDomNode(e){const t=this.getLineIndexFromChildDomNode(e);return null===t||t<0||t>=this._renderedStickyLines.length?null:this._renderedStickyLines[t]}getLineIndexFromChildDomNode(e){const t=this._getAttributeValue(e,pS);return t?parseInt(t,10):null}isInStickyLine(e){return void 0!==this._getAttributeValue(e,mS)}isInFoldingIconDomNode(e){return void 0!==this._getAttributeValue(e,_S)}_getAttributeValue(e,t){for(;e&&e!==this._rootDomNode;){const i=e.getAttribute(t);if(null!==i)return i;e=e.parentElement}}}class vS{constructor(e,t,i,o,n,s,r){this.index=e,this.lineNumber=t,this.lineDomNode=i,this.lineNumberDomNode=o,this.foldingIcon=n,this.characterMapping=s,this.scrollWidth=r}}class bS{constructor(e,t,i,o){this.isCollapsed=e,this.foldingStartLine=t,this.foldingEndLine=i,this.dimension=o,this.domNode=document.createElement("div"),this.domNode.style.width="".concat(o,"px"),this.domNode.style.height="".concat(o,"px"),this.domNode.className=oi.k.asClassName(e?Zu:Qu)}setVisible(e){this.domNode.style.cursor=e?"pointer":"default",this.domNode.style.opacity=e?"1":"0"}}class CS{constructor(e,t){this.startLineNumber=e,this.endLineNumber=t}}class SS{constructor(e,t,i){this.range=e,this.children=t,this.parent=i}}class yS{constructor(e,t,i,o){this.uri=e,this.version=t,this.element=i,this.outlineProviderId=o}}var wS,xS,NS=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},LS=function(e,t){return function(i,o){t(i,o,e)}};!function(e){e.OUTLINE_MODEL="outlineModel",e.FOLDING_PROVIDER_MODEL="foldingProviderModel",e.INDENTATION_MODEL="indentationModel"}(wS||(wS={})),function(e){e[e.VALID=0]="VALID",e[e.INVALID=1]="INVALID",e[e.CANCELED=2]="CANCELED"}(xS||(xS={}));let kS=class extends Fe.JT{constructor(e,t,i,o){switch(super(),this._editor=e,this._languageConfigurationService=i,this._languageFeaturesService=o,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new Oe.vp(300)),this._updateOperation=this._register(new Fe.SL),this._editor.getOption(115).defaultModel){case wS.OUTLINE_MODEL:this._modelProviders.push(new IS(this._editor,o));case wS.FOLDING_PROVIDER_MODEL:this._modelProviders.push(new MS(this._editor,t,o));case wS.INDENTATION_MODEL:this._modelProviders.push(new PS(this._editor,i))}}dispose(){this._modelProviders.forEach((e=>e.dispose())),this._updateOperation.clear(),this._cancelModelPromise(),super.dispose()}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}async update(e){return this._updateOperation.clear(),this._updateOperation.add({dispose:()=>{this._cancelModelPromise(),this._updateScheduler.cancel()}}),this._cancelModelPromise(),await this._updateScheduler.trigger((async()=>{for(const t of this._modelProviders){const{statusPromise:i,modelPromise:o}=t.computeStickyModel(e);this._modelPromise=o;const n=await i;if(this._modelPromise!==o)return null;switch(n){case xS.CANCELED:return this._updateOperation.clear(),null;case xS.VALID:return t.stickyModel}}return null})).catch((e=>((0,Ji.dL)(e),null)))}};kS=NS([LS(2,ni.TG),LS(3,kt.p)],kS);class DS extends Fe.JT{constructor(e){super(),this._editor=e,this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,xS.INVALID}computeStickyModel(e){if(e.isCancellationRequested||!this.isProviderValid())return{statusPromise:this._invalid(),modelPromise:null};const t=(0,Oe.PG)((e=>this.createModelFromProvider(e)));return{statusPromise:t.then((t=>this.isModelValid(t)?e.isCancellationRequested?xS.CANCELED:(this._stickyModel=this.createStickyModel(e,t),xS.VALID):this._invalid())).then(void 0,(e=>((0,Ji.dL)(e),xS.CANCELED))),modelPromise:t}}isModelValid(e){return!0}isProviderValid(){return!0}}let IS=class extends DS{constructor(e,t){super(e),this._languageFeaturesService=t}createModelFromProvider(e){return Eg.create(this._languageFeaturesService.documentSymbolProvider,this._editor.getModel(),e)}createStickyModel(e,t){var i;const{stickyOutlineElement:o,providerID:n}=this._stickyModelFromOutlineModel(t,null===(i=this._stickyModel)||void 0===i?void 0:i.outlineProviderId),s=this._editor.getModel();return new yS(s.uri,s.getVersionId(),o,n)}isModelValid(e){return e&&e.children.size>0}_stickyModelFromOutlineModel(e,t){let i;if(st.$.first(e.children.values())instanceof Tg){const o=st.$.find(e.children.values(),(e=>e.id===t));if(o)i=o.children;else{let o,n="",s=-1;for(const[t,i]of e.children.entries()){const e=this._findSumOfRangesOfGroup(i);e>s&&(o=i,s=e,n=i.id)}t=n,i=o.children}}else i=e.children;const o=[],n=Array.from(i.values()).sort(((e,t)=>{const i=new CS(e.symbol.range.startLineNumber,e.symbol.range.endLineNumber),o=new CS(t.symbol.range.startLineNumber,t.symbol.range.endLineNumber);return this._comparator(i,o)}));for(const s of n)o.push(this._stickyModelFromOutlineElement(s,s.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new SS(void 0,o,void 0),providerID:t}}_stickyModelFromOutlineElement(e,t){const i=[];for(const n of e.children.values())if(n.symbol.selectionRange.startLineNumber!==n.symbol.range.endLineNumber)if(n.symbol.selectionRange.startLineNumber!==t)i.push(this._stickyModelFromOutlineElement(n,n.symbol.selectionRange.startLineNumber));else for(const e of n.children.values())i.push(this._stickyModelFromOutlineElement(e,n.symbol.selectionRange.startLineNumber));i.sort(((e,t)=>this._comparator(e.range,t.range)));const o=new CS(e.symbol.selectionRange.startLineNumber,e.symbol.range.endLineNumber);return new SS(o,i,void 0)}_comparator(e,t){return e.startLineNumber!==t.startLineNumber?e.startLineNumber-t.startLineNumber:t.endLineNumber-e.endLineNumber}_findSumOfRangesOfGroup(e){let t=0;for(const i of e.children.values())t+=this._findSumOfRangesOfGroup(i);return e instanceof Mg?t+e.symbol.range.endLineNumber-e.symbol.selectionRange.startLineNumber:t}};IS=NS([LS(1,kt.p)],IS);class RS extends DS{constructor(e){super(e),this._foldingLimitReporter=new cg(e)}createStickyModel(e,t){const i=this._fromFoldingRegions(t),o=this._editor.getModel();return new yS(o.uri,o.getVersionId(),i,void 0)}isModelValid(e){return null!==e}_fromFoldingRegions(e){const t=e.length,i=[],o=new SS(void 0,[],void 0);for(let n=0;n<t;n++){const t=e.getParentIndex(n);let s;s=-1!==t?i[t]:o;const r=new SS(new CS(e.getStartLineNumber(n),e.getEndLineNumber(n)+1),[],s);s.children.push(r),i.push(r)}return o}}let PS=class extends RS{constructor(e,t){super(e),this._languageConfigurationService=t,this.provider=this._register(new Ku(e.getModel(),this._languageConfigurationService,this._foldingLimitReporter))}async createModelFromProvider(e){return this.provider.compute(e)}};PS=NS([LS(1,Xn.c_)],PS);let MS=class extends RS{constructor(e,t,i){super(e),this._languageFeaturesService=i;const o=dg.getFoldingRangeProviders(this._languageFeaturesService,e.getModel());o.length>0&&(this.provider=this._register(new og(e.getModel(),o,t,this._foldingLimitReporter,void 0)))}isProviderValid(){return void 0!==this.provider}async createModelFromProvider(e){var t,i;return null!==(i=null===(t=this.provider)||void 0===t?void 0:t.compute(e))&&void 0!==i?i:null}};MS=NS([LS(2,kt.p)],MS);var TS=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ES=function(e,t){return function(i,o){t(i,o,e)}};class AS{constructor(e,t,i){this.startLineNumber=e,this.endLineNumber=t,this.nestingDepth=i}}let OS=class extends Fe.JT{constructor(e,t,i){super(),this._languageFeaturesService=t,this._languageConfigurationService=i,this._onDidChangeStickyScroll=this._register(new ui.Q5),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=e,this._sessionStore=this._register(new Fe.SL),this._updateSoon=this._register(new Oe.pY((()=>this.update()),50)),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(115)&&this.readConfiguration()}))),this.readConfiguration()}readConfiguration(){this._sessionStore.clear();this._editor.getOption(115).enabled&&(this._sessionStore.add(this._editor.onDidChangeModel((()=>{this._model=null,this.updateStickyModelProvider(),this._onDidChangeStickyScroll.fire(),this.update()}))),this._sessionStore.add(this._editor.onDidChangeHiddenAreas((()=>this.update()))),this._sessionStore.add(this._editor.onDidChangeModelContent((()=>this._updateSoon.schedule()))),this._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange((()=>this.update()))),this._sessionStore.add((0,Fe.OF)((()=>{var e;null===(e=this._stickyModelProvider)||void 0===e||e.dispose(),this._stickyModelProvider=null}))),this.updateStickyModelProvider(),this.update())}getVersionId(){var e;return null===(e=this._model)||void 0===e?void 0:e.version}updateStickyModelProvider(){var e;null===(e=this._stickyModelProvider)||void 0===e||e.dispose(),this._stickyModelProvider=null;const t=this._editor;t.hasModel()&&(this._stickyModelProvider=new kS(t,(()=>this._updateSoon.schedule()),this._languageConfigurationService,this._languageFeaturesService))}async update(){var e;null===(e=this._cts)||void 0===e||e.dispose(!0),this._cts=new Yi.A,await this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()}async updateStickyModel(e){if(!this._editor.hasModel()||!this._stickyModelProvider||this._editor.getModel().isTooLargeForTokenization())return void(this._model=null);const t=await this._stickyModelProvider.update(e);e.isCancellationRequested||(this._model=t)}updateIndex(e){return-1===e?e=0:e<0&&(e=-e-2),e}getCandidateStickyLinesIntersectingFromStickyModel(e,t,i,o,n){if(0===t.children.length)return;let s=n;const r=[];for(let d=0;d<t.children.length;d++){const e=t.children[d];e.range&&r.push(e.range.startLineNumber)}const a=this.updateIndex((0,nt.ry)(r,e.startLineNumber,((e,t)=>e-t))),l=this.updateIndex((0,nt.ry)(r,e.startLineNumber+o,((e,t)=>e-t)));for(let d=a;d<=l;d++){const r=t.children[d];if(!r)return;if(r.range){const t=r.range.startLineNumber,n=r.range.endLineNumber;e.startLineNumber<=n+1&&t-1<=e.endLineNumber&&t!==s&&(s=t,i.push(new AS(t,n-1,o+1)),this.getCandidateStickyLinesIntersectingFromStickyModel(e,r,i,o+1,t))}else this.getCandidateStickyLinesIntersectingFromStickyModel(e,r,i,o,n)}}getCandidateStickyLinesIntersecting(e){var t,i;if(!(null===(t=this._model)||void 0===t?void 0:t.element))return[];let o=[];this.getCandidateStickyLinesIntersectingFromStickyModel(e,this._model.element,o,0,-1);const n=null===(i=this._editor._getViewModel())||void 0===i?void 0:i.getHiddenAreas();if(n)for(const s of n)o=o.filter((e=>!(e.startLineNumber>=s.startLineNumber&&e.endLineNumber<=s.endLineNumber+1)));return o}};OS=TS([ES(1,kt.p),ES(2,Xn.c_)],OS);var FS,WS=i(21494),HS=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},VS=function(e,t){return function(i,o){t(i,o,e)}};let BS=FS=class extends Fe.JT{constructor(e,t,i,o,n,s,r){super(),this._editor=e,this._contextMenuService=t,this._languageFeaturesService=i,this._instaService=o,this._contextKeyService=r,this._sessionStore=new Fe.SL,this._foldingModel=null,this._maxStickyLines=Number.MAX_SAFE_INTEGER,this._candidateDefinitionsLength=-1,this._focusedStickyElementIndex=-1,this._enabled=!1,this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1,this._endLineNumbers=[],this._showEndForLine=null,this._stickyScrollWidget=new fS(this._editor),this._stickyLineCandidateProvider=new OS(this._editor,i,n),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=new uS([],[],0),this._onDidResize(),this._readConfiguration();const a=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeConfiguration((e=>{(e.hasChanged(115)||e.hasChanged(73)||e.hasChanged(67)||e.hasChanged(110))&&this._readConfiguration()}))),this._register(X.nm(a,X.tw.CONTEXT_MENU,(async e=>{this._onContextMenu(X.Jj(a),e)}))),this._stickyScrollFocusedContextKey=oe.u.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=oe.u.stickyScrollVisible.bindTo(this._contextKeyService);const l=this._register(X.go(a));this._register(l.onDidBlur((e=>{!1===this._positionRevealed&&0===a.clientHeight?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()}))),this._register(l.onDidFocus((e=>{this.focus()}))),this._registerMouseListeners(),this._register(X.nm(a,X.tw.MOUSE_DOWN,(e=>{this._onMouseDown=!0})))}static get(e){return e.getContribution(FS.ID)}_disposeFocusStickyScrollStore(){var e;this._stickyScrollFocusedContextKey.set(!1),null===(e=this._focusDisposableStore)||void 0===e||e.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}focus(){if(this._onMouseDown)return this._onMouseDown=!1,void this._editor.focus();!0!==this._stickyScrollFocusedContextKey.get()&&(this._focused=!0,this._focusDisposableStore=new Fe.SL,this._stickyScrollFocusedContextKey.set(!0),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumbers.length-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}focusNext(){this._focusedStickyElementIndex<this._stickyScrollWidget.lineNumberCount-1&&this._focusNav(!0)}focusPrevious(){this._focusedStickyElementIndex>0&&this._focusNav(!1)}selectEditor(){this._editor.focus()}_focusNav(e){this._focusedStickyElementIndex=e?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){const e=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:e[this._focusedStickyElementIndex],column:1})}_revealPosition(e){this._reveaInEditor(e,(()=>this._editor.revealPosition(e)))}_revealLineInCenterIfOutsideViewport(e){this._reveaInEditor(e,(()=>this._editor.revealLineInCenterIfOutsideViewport(e.lineNumber,0)))}_reveaInEditor(e,t){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,t(),this._editor.setSelection(He.e.fromPositions(e)),this._editor.focus()}_registerMouseListeners(){const e=this._register(new Fe.SL),t=this._register(new Ys(this._editor,{extractLineNumberFromMouseEvent:e=>{const t=this._stickyScrollWidget.getEditorPositionFromNode(e.target.element);return t?t.lineNumber:0}})),i=e=>{if(!this._editor.hasModel())return null;if(12!==e.target.type||e.target.detail!==this._stickyScrollWidget.getId())return null;const t=e.target.element;if(!t||t.innerText!==t.innerHTML)return null;const i=this._stickyScrollWidget.getEditorPositionFromNode(t);return i?{range:new He.e(i.lineNumber,i.column,i.lineNumber,i.column+t.innerText.length),textElement:t}:null},o=this._stickyScrollWidget.getDomNode();this._register(X.mu(o,X.tw.CLICK,(e=>{if(e.ctrlKey||e.altKey||e.metaKey)return;if(!e.leftButton)return;if(e.shiftKey){const t=this._stickyScrollWidget.getLineIndexFromChildDomNode(e.target);if(null===t)return;const i=new We.L(this._endLineNumbers[t],1);return void this._revealLineInCenterIfOutsideViewport(i)}if(this._stickyScrollWidget.isInFoldingIconDomNode(e.target)){const t=this._stickyScrollWidget.getLineNumberFromChildDomNode(e.target);return void this._toggleFoldingRegionForLine(t)}if(!this._stickyScrollWidget.isInStickyLine(e.target))return;let t=this._stickyScrollWidget.getEditorPositionFromNode(e.target);if(!t){const i=this._stickyScrollWidget.getLineNumberFromChildDomNode(e.target);if(null===i)return;t=new We.L(i,1)}this._revealPosition(t)}))),this._register(X.mu(o,X.tw.MOUSE_MOVE,(e=>{if(e.shiftKey){const t=this._stickyScrollWidget.getLineIndexFromChildDomNode(e.target);if(null===t||null!==this._showEndForLine&&this._showEndForLine===t)return;return this._showEndForLine=t,void this._renderStickyScroll()}null!==this._showEndForLine&&(this._showEndForLine=null,this._renderStickyScroll())}))),this._register(X.nm(o,X.tw.MOUSE_LEAVE,(e=>{null!==this._showEndForLine&&(this._showEndForLine=null,this._renderStickyScroll())}))),this._register(t.onMouseMoveOrRelevantKeyDown((t=>{let[o,n]=t;const s=i(o);if(!s||!o.hasTriggerModifier||!this._editor.hasModel())return void e.clear();const{range:r,textElement:a}=s;if(r.equalsRange(this._stickyRangeProjectedOnEditor)){if("underline"===a.style.textDecoration)return}else this._stickyRangeProjectedOnEditor=r,e.clear();const l=new Yi.A;let d;e.add((0,Fe.OF)((()=>l.dispose(!0)))),fa(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new We.L(r.startLineNumber,r.startColumn+1),l.token).then((t=>{if(!l.token.isCancellationRequested)if(0!==t.length){this._candidateDefinitionsLength=t.length;const i=a;d!==i?(e.clear(),d=i,d.style.textDecoration="underline",e.add((0,Fe.OF)((()=>{d.style.textDecoration="none"})))):d||(d=i,d.style.textDecoration="underline",e.add((0,Fe.OF)((()=>{d.style.textDecoration="none"}))))}else e.clear()}))}))),this._register(t.onCancel((()=>{e.clear()}))),this._register(t.onExecute((async e=>{if(12!==e.target.type||e.target.detail!==this._stickyScrollWidget.getId())return;const t=this._stickyScrollWidget.getEditorPositionFromNode(e.target.element);t&&this._editor.hasModel()&&this._stickyRangeProjectedOnEditor&&(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:t.lineNumber,column:1})),this._instaService.invokeFunction(Rf,e,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor}))})))}_onContextMenu(e,t){const i=new WS.n(e,t);this._contextMenuService.showContextMenu({menuId:se.eH.StickyScrollContext,getAnchor:()=>i})}_toggleFoldingRegionForLine(e){if(!this._foldingModel||null===e)return;const t=this._stickyScrollWidget.getRenderedStickyLine(e),i=null===t||void 0===t?void 0:t.foldingIcon;if(!i)return;Au(this._foldingModel,Number.MAX_VALUE,[e]),i.isCollapsed=!i.isCollapsed;const o=(i.isCollapsed?this._editor.getTopForLineNumber(i.foldingEndLine):this._editor.getTopForLineNumber(i.foldingStartLine))-this._editor.getOption(67)*t.index+1;this._editor.setScrollTop(o),this._renderStickyScroll(e)}_readConfiguration(){const e=this._editor.getOption(115);if(!1===e.enabled)return this._editor.removeOverlayWidget(this._stickyScrollWidget),this._sessionStore.clear(),void(this._enabled=!1);e.enabled&&!this._enabled&&(this._editor.addOverlayWidget(this._stickyScrollWidget),this._sessionStore.add(this._editor.onDidScrollChange((e=>{e.scrollTopChanged&&(this._showEndForLine=null,this._renderStickyScroll())}))),this._sessionStore.add(this._editor.onDidLayoutChange((()=>this._onDidResize()))),this._sessionStore.add(this._editor.onDidChangeModelTokens((e=>this._onTokensChange(e)))),this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll((()=>{this._showEndForLine=null,this._renderStickyScroll()}))),this._enabled=!0);2===this._editor.getOption(68).renderType&&this._sessionStore.add(this._editor.onDidChangeCursorPosition((()=>{this._showEndForLine=null,this._renderStickyScroll(0)})))}_needsUpdate(e){const t=this._stickyScrollWidget.getCurrentLines();for(const i of t)for(const t of e.ranges)if(i>=t.fromLineNumber&&i<=t.toLineNumber)return!0;return!1}_onTokensChange(e){this._needsUpdate(e)&&this._renderStickyScroll(0)}_onDidResize(){const e=this._editor.getLayoutInfo().height/this._editor.getOption(67);this._maxStickyLines=Math.round(.25*e)}async _renderStickyScroll(e){var t,i;const o=this._editor.getModel();if(!o||o.isTooLargeForTokenization())return this._foldingModel=null,void this._stickyScrollWidget.setState(void 0,null);const n=this._stickyLineCandidateProvider.getVersionId();if(void 0===n||n===o.getVersionId())if(this._foldingModel=null!==(i=await(null===(t=dg.get(this._editor))||void 0===t?void 0:t.getFoldingModel()))&&void 0!==i?i:null,this._widgetState=this.findScrollWidgetState(),this._stickyScrollVisibleContextKey.set(!(0===this._widgetState.startLineNumbers.length)),this._focused)if(-1===this._focusedStickyElementIndex)this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,e),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,-1!==this._focusedStickyElementIndex&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{const t=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];if(this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,e),0===this._stickyScrollWidget.lineNumberCount)this._focusedStickyElementIndex=-1;else{this._stickyScrollWidget.lineNumbers.includes(t)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}}else this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,e)}findScrollWidgetState(){const e=this._editor.getOption(67),t=Math.min(this._maxStickyLines,this._editor.getOption(115).maxLineCount),i=this._editor.getScrollTop();let o=0;const n=[],s=[],r=this._editor.getVisibleRanges();if(0!==r.length){const a=new CS(r[0].startLineNumber,r[r.length-1].endLineNumber),l=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(a);for(const r of l){const a=r.startLineNumber,l=r.endLineNumber,d=r.nestingDepth;if(l-a>0){const r=(d-1)*e,c=d*e,h=this._editor.getBottomForLineNumber(a)-i,u=this._editor.getTopForLineNumber(l)-i,g=this._editor.getBottomForLineNumber(l)-i;if(r>u&&r<=g){n.push(a),s.push(l+1),o=g-c;break}if(c>h&&c<=g&&(n.push(a),s.push(l+1)),n.length===t)break}}}return this._endLineNumbers=s,new uS(n,s,o,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}};BS.ID="store.contrib.stickyScrollController",BS=FS=HS([VS(1,Li.i),VS(2,kt.p),VS(3,ni.TG),VS(4,Xn.c_),VS(5,jn.A),VS(6,ae.i6)],BS);class zS extends se.Ke{constructor(){super({id:"editor.action.toggleStickyScroll",title:{...(0,ne.vv)("toggleEditorStickyScroll","Toggle Editor Sticky Scroll"),mnemonicTitle:(0,ne.NC)({key:"mitoggleStickyScroll",comment:["&& denotes a mnemonic"]},"&&Toggle Editor Sticky Scroll")},category:cS.View,toggled:{condition:ae.Ao.equals("config.editor.stickyScroll.enabled",!0),title:(0,ne.NC)("stickyScroll","Sticky Scroll"),mnemonicTitle:(0,ne.NC)({key:"miStickyScroll",comment:["&& denotes a mnemonic"]},"&&Sticky Scroll")},menu:[{id:se.eH.CommandPalette},{id:se.eH.MenubarAppearanceMenu,group:"4_editor",order:3},{id:se.eH.StickyScrollContext}]})}async run(e){const t=e.get(re.Ui),i=!t.getValue("editor.stickyScroll.enabled");return t.updateValue("editor.stickyScroll.enabled",i)}}const US=100;class KS extends ee.x1{constructor(){super({id:"editor.action.focusStickyScroll",title:{...(0,ne.vv)("focusStickyScroll","Focus Sticky Scroll"),mnemonicTitle:(0,ne.NC)({key:"mifocusStickyScroll",comment:["&& denotes a mnemonic"]},"&&Focus Sticky Scroll")},precondition:ae.Ao.and(ae.Ao.has("config.editor.stickyScroll.enabled"),oe.u.stickyScrollVisible),menu:[{id:se.eH.CommandPalette}]})}runEditorCommand(e,t){var i;null===(i=BS.get(t))||void 0===i||i.focus()}}class jS extends ee.x1{constructor(){super({id:"editor.action.selectNextStickyScrollLine",title:(0,ne.vv)("selectNextStickyScrollLine.title","Select next sticky scroll line"),precondition:oe.u.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:US,primary:18}})}runEditorCommand(e,t){var i;null===(i=BS.get(t))||void 0===i||i.focusNext()}}class qS extends ee.x1{constructor(){super({id:"editor.action.selectPreviousStickyScrollLine",title:(0,ne.vv)("selectPreviousStickyScrollLine.title","Select previous sticky scroll line"),precondition:oe.u.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:US,primary:16}})}runEditorCommand(e,t){var i;null===(i=BS.get(t))||void 0===i||i.focusPrevious()}}class GS extends ee.x1{constructor(){super({id:"editor.action.goToFocusedStickyScrollLine",title:(0,ne.vv)("goToFocusedStickyScrollLine.title","Go to focused sticky scroll line"),precondition:oe.u.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:US,primary:3}})}runEditorCommand(e,t){var i;null===(i=BS.get(t))||void 0===i||i.goToFocused()}}class QS extends ee.x1{constructor(){super({id:"editor.action.selectEditor",title:(0,ne.vv)("selectEditor.title","Select Editor"),precondition:oe.u.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:US,primary:9}})}runEditorCommand(e,t){var i;null===(i=BS.get(t))||void 0===i||i.selectEditor()}}(0,ee._K)(BS.ID,BS,1),(0,se.r1)(zS),(0,se.r1)(KS),(0,se.r1)(qS),(0,se.r1)(jS),(0,se.r1)(GS),(0,se.r1)(QS);var ZS=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},YS=function(e,t){return function(i,o){t(i,o,e)}};class JS{constructor(e,t,i,o,n,s){this.range=e,this.insertText=t,this.filterText=i,this.additionalTextEdits=o,this.command=n,this.completion=s}}let $S=class extends Fe.L6{constructor(e,t,i,o,n,s){super(n.disposable),this.model=e,this.line=t,this.word=i,this.completionModel=o,this._suggestMemoryService=s}canBeReused(e,t,i){return this.model===e&&this.line===t&&this.word.word.length>0&&this.word.startColumn===i.startColumn&&this.word.endColumn<i.endColumn&&0===this.completionModel.getIncompleteProvider().size}get items(){var e;const t=[],{items:i}=this.completionModel,o=this._suggestMemoryService.select(this.model,{lineNumber:this.line,column:this.word.endColumn+this.completionModel.lineContext.characterCountDelta},i),n=st.$.slice(i,o),s=st.$.slice(i,0,o);let r=5;for(const a of st.$.concat(n,s)){if(a.score===Fr.CL.Default)continue;const i=new He.e(a.editStart.lineNumber,a.editStart.column,a.editInsertEnd.lineNumber,a.editInsertEnd.column+this.completionModel.lineContext.characterCountDelta),o=a.completion.insertTextRules&&4&a.completion.insertTextRules?{snippet:a.completion.insertText}:a.completion.insertText;t.push(new JS(i,o,null!==(e=a.filterTextLow)&&void 0!==e?e:a.labelLow,a.completion.additionalTextEdits,a.completion.command,a)),r-- >=0&&a.resolve(Yi.T.None)}return t}};$S=ZS([YS(5,Mm)],$S);let XS=class extends Fe.JT{constructor(e,t,i,o){super(),this._languageFeatureService=e,this._clipboardService=t,this._suggestMemoryService=i,this._editorService=o,this._store.add(e.inlineCompletionsProvider.register("*",this))}async provideInlineCompletions(e,t,i,o){var n;if(i.selectedSuggestionInfo)return;let s;for(const g of this._editorService.listCodeEditors())if(g.getModel()===e){s=g;break}if(!s)return;const r=s.getOption(89);if(jp.isAllOff(r))return;e.tokenization.tokenizeIfCheap(t.lineNumber);const a=e.tokenization.getLineTokens(t.lineNumber),l=a.getStandardTokenType(a.findTokenIndexAtOffset(Math.max(t.column-1-1,0)));if("inline"!==jp.valueFor(r,l))return;let d,c,h=e.getWordAtPosition(t);if((null===h||void 0===h?void 0:h.word)||(d=this._getTriggerCharacterInfo(e,t)),!(null===h||void 0===h?void 0:h.word)&&!d)return;if(h||(h=e.getWordUntilPosition(t)),h.endColumn!==t.column)return;const u=e.getValueInRange(new He.e(t.lineNumber,1,t.lineNumber,t.column));if(!d&&(null===(n=this._lastResult)||void 0===n?void 0:n.canBeReused(e,t.lineNumber,h))){const e=new Km(u,t.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=e,this._lastResult.acquire(),c=this._lastResult}else{const i=await zp(this._languageFeatureService.completionProvider,e,t,new Hp(void 0,Jm.createSuggestFilter(s).itemKind,null===d||void 0===d?void 0:d.providers),d&&{triggerKind:1,triggerCharacter:d.ch},o);let n;i.needsClipboard&&(n=await this._clipboardService.readText());const r=new jm(i.items,t.column,new Km(u,0),Um.None,s.getOption(118),s.getOption(112),{boostFullMatch:!1,firstMatchCanBeWeak:!1},n);c=new $S(e,t.lineNumber,h,r,i,this._suggestMemoryService)}return this._lastResult=c,c}handleItemDidShow(e,t){t.completion.resolve(Yi.T.None)}freeInlineCompletions(e){e.release()}_getTriggerCharacterInfo(e,t){var i;const o=e.getValueInRange(He.e.fromPositions({lineNumber:t.lineNumber,column:t.column-1},t)),n=new Set;for(const s of this._languageFeatureService.completionProvider.all(e))(null===(i=s.triggerCharacters)||void 0===i?void 0:i.includes(o))&&n.add(s);if(0!==n.size)return{providers:n,ch:o}}};XS=ZS([YS(0,kt.p),YS(1,Si.p),YS(2,Mm),YS(3,te.$)],XS),(0,es.y)(XS);class ey extends ee.R6{constructor(){super({id:"editor.action.forceRetokenize",label:ne.NC("forceRetokenize","Developer: Force Retokenize"),alias:"Developer: Force Retokenize",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getModel();i.tokenization.resetTokenization();const o=new Yn.G;i.tokenization.forceTokenization(i.getLineCount()),o.stop(),console.log("tokenization took ".concat(o.elapsed()))}}(0,ee.Qr)(ey);var ty=i(25391);class iy extends se.Ke{constructor(){super({id:iy.ID,title:ne.vv({key:"toggle.tabMovesFocus",comment:["Turn on/off use of tab key for moving focus around VS Code"]},"Toggle Tab Key Moves Focus"),precondition:void 0,keybinding:{primary:2091,mac:{primary:1323},weight:100},f1:!0})}run(){const e=!ty.n.getTabFocusMode();ty.n.setTabFocusMode(e),e?(0,xe.Z9)(ne.NC("toggle.tabMovesFocus.on","Pressing Tab will now move focus to the next focusable element")):(0,xe.Z9)(ne.NC("toggle.tabMovesFocus.off","Pressing Tab will now insert the tab character"))}}iy.ID="editor.action.toggleTabFocusMode",(0,se.r1)(iy);var oy=i(90428),ny=i(19907),sy=i(3640),ry=i(39341),ay=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ly=function(e,t){return function(i,o){t(i,o,e)}};let dy=class extends Fe.JT{get enabled(){return this._enabled}set enabled(e){e?(this.el.setAttribute("aria-disabled","false"),this.el.tabIndex=0,this.el.style.pointerEvents="auto",this.el.style.opacity="1",this.el.style.cursor="pointer",this._enabled=!1):(this.el.setAttribute("aria-disabled","true"),this.el.tabIndex=-1,this.el.style.pointerEvents="none",this.el.style.opacity="0.4",this.el.style.cursor="default",this._enabled=!0),this._enabled=e}constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=arguments.length>3?arguments[3]:void 0;var n,s;super(),this._link=t,this._enabled=!0,this.el=(0,X.R3)(e,(0,X.$)("a.monaco-link",{tabIndex:null!==(n=t.tabIndex)&&void 0!==n?n:0,href:t.href},t.label)),this.hoverDelegate=null!==(s=i.hoverDelegate)&&void 0!==s?s:(0,uh.tM)("mouse"),this.setTooltip(t.title),this.el.setAttribute("role","button");const r=this._register(new sy.Y(this.el,"click")),a=this._register(new sy.Y(this.el,"keypress")),l=ui.ju.chain(a.event,(e=>e.map((e=>new ry.y(e))).filter((e=>3===e.keyCode)))),d=this._register(new sy.Y(this.el,Io.t.Tap)).event;this._register(Io.o.addTarget(this.el));const c=ui.ju.any(r.event,l,d);this._register(c((e=>{this.enabled&&(X.zB.stop(e,!0),(null===i||void 0===i?void 0:i.opener)?i.opener(this._link.href):o.open(this._link.href,{allowCommands:!0}))}))),this.enabled=!0}setTooltip(e){this.hoverDelegate.showNativeHover?this.el.title=null!==e&&void 0!==e?e:"":!this.hover&&e?this.hover=this._register((0,Ah.g)(this.hoverDelegate,this.el,e)):this.hover&&this.hover.update(e)}};dy=ay([ly(3,pi.v)],dy);var cy=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},hy=function(e,t){return function(i,o){t(i,o,e)}};let uy=class extends Fe.JT{constructor(e,t){super(),this._editor=e,this.instantiationService=t,this.banner=this._register(this.instantiationService.createInstance(gy))}hide(){this._editor.setBanner(null,0),this.banner.clear()}show(e){this.banner.show({...e,onClose:()=>{var t;this.hide(),null===(t=e.onClose)||void 0===t||t.call(e)}}),this._editor.setBanner(this.banner.element,26)}};uy=cy([hy(1,ni.TG)],uy);let gy=class extends Fe.JT{constructor(e){super(),this.instantiationService=e,this.markdownRenderer=this.instantiationService.createInstance(gi.$,{}),this.element=(0,X.$)("div.editor-banner"),this.element.tabIndex=0}getAriaLabel(e){return e.ariaLabel?e.ariaLabel:"string"===typeof e.message?e.message:void 0}getBannerMessage(e){if("string"===typeof e){const t=(0,X.$)("span");return t.innerText=e,t}return this.markdownRenderer.render(e).element}clear(){(0,X.PO)(this.element)}show(e){(0,X.PO)(this.element);const t=this.getAriaLabel(e);t&&this.element.setAttribute("aria-label",t);const i=(0,X.R3)(this.element,(0,X.$)("div.icon-container"));i.setAttribute("aria-hidden","true"),e.icon&&i.appendChild((0,X.$)("div".concat(oi.k.asCSSSelector(e.icon))));const o=(0,X.R3)(this.element,(0,X.$)("div.message-container"));if(o.setAttribute("aria-hidden","true"),o.appendChild(this.getBannerMessage(e.message)),this.messageActionsContainer=(0,X.R3)(this.element,(0,X.$)("div.message-actions-container")),e.actions)for(const s of e.actions)this._register(this.instantiationService.createInstance(dy,this.messageActionsContainer,{...s,tabIndex:-1},{}));const n=(0,X.R3)(this.element,(0,X.$)("div.action-container"));this.actionBar=this._register(new Eo.o(n)),this.actionBar.push(this._register(new Ni.aU("banner.close","Close Banner",oi.k.asClassName(ys.s_),!0,(()=>{"function"===typeof e.onClose&&e.onClose()}))),{icon:!0,label:!1}),this.actionBar.setFocusable(!1)}};gy=cy([hy(0,ni.TG)],gy);var py=i(20790),my=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},_y=function(e,t){return function(i,o){t(i,o,e)}};const fy=(0,ys.q5)("extensions-warning-message",$.l.warning,ne.NC("warningIcon","Icon shown with a warning message in the extensions editor."));let vy=class extends Fe.JT{constructor(e,t,i,o){super(),this._editor=e,this._editorWorkerService=t,this._workspaceTrustService=i,this._highlighter=null,this._bannerClosed=!1,this._updateState=e=>{if(e&&e.hasMore){if(this._bannerClosed)return;const t=Math.max(e.ambiguousCharacterCount,e.nonBasicAsciiCharacterCount,e.invisibleCharacterCount);let i;if(e.nonBasicAsciiCharacterCount>=t)i={message:ne.NC("unicodeHighlighting.thisDocumentHasManyNonBasicAsciiUnicodeCharacters","This document contains many non-basic ASCII unicode characters"),command:new Py};else if(e.ambiguousCharacterCount>=t)i={message:ne.NC("unicodeHighlighting.thisDocumentHasManyAmbiguousUnicodeCharacters","This document contains many ambiguous unicode characters"),command:new Iy};else{if(!(e.invisibleCharacterCount>=t))throw new Error("Unreachable");i={message:ne.NC("unicodeHighlighting.thisDocumentHasManyInvisibleUnicodeCharacters","This document contains many invisible unicode characters"),command:new Ry}}this._bannerController.show({id:"unicodeHighlightBanner",message:i.message,icon:fy,actions:[{label:i.command.shortLabel,href:"command:".concat(i.command.id)}],onClose:()=>{this._bannerClosed=!0}})}else this._bannerController.hide()},this._bannerController=this._register(o.createInstance(uy,e)),this._register(this._editor.onDidChangeModel((()=>{this._bannerClosed=!1,this._updateHighlighter()}))),this._options=e.getOption(125),this._register(i.onDidChangeTrust((e=>{this._updateHighlighter()}))),this._register(e.onDidChangeConfiguration((t=>{t.hasChanged(125)&&(this._options=e.getOption(125),this._updateHighlighter())}))),this._updateHighlighter()}dispose(){this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),super.dispose()}_updateHighlighter(){if(this._updateState(null),this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),!this._editor.hasModel())return;const e=function(e,t){return{nonBasicASCII:t.nonBasicASCII===sn.Av?!e:t.nonBasicASCII,ambiguousCharacters:t.ambiguousCharacters,invisibleCharacters:t.invisibleCharacters,includeComments:t.includeComments===sn.Av?!e:t.includeComments,includeStrings:t.includeStrings===sn.Av?!e:t.includeStrings,allowedCharacters:t.allowedCharacters,allowedLocales:t.allowedLocales}}(this._workspaceTrustService.isWorkspaceTrusted(),this._options);if([e.nonBasicASCII,e.ambiguousCharacters,e.invisibleCharacters].every((e=>!1===e)))return;const t={nonBasicASCII:e.nonBasicASCII,ambiguousCharacters:e.ambiguousCharacters,invisibleCharacters:e.invisibleCharacters,includeComments:e.includeComments,includeStrings:e.includeStrings,allowedCodePoints:Object.keys(e.allowedCharacters).map((e=>e.codePointAt(0))),allowedLocales:Object.keys(e.allowedLocales).map((e=>{if("_os"===e){return(new Intl.NumberFormat).resolvedOptions().locale}return"_vscode"===e?it.dK:e}))};this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)?this._highlighter=new by(this._editor,t,this._updateState,this._editorWorkerService):this._highlighter=new Cy(this._editor,t,this._updateState)}getDecorationInfo(e){return this._highlighter?this._highlighter.getDecorationInfo(e):null}};vy.ID="editor.contrib.unicodeHighlighter",vy=my([_y(1,bg.p),_y(2,py.Y),_y(3,ni.TG)],vy);let by=class extends Fe.JT{constructor(e,t,i,o){super(),this._editor=e,this._options=t,this._updateState=i,this._editorWorkerService=o,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new Oe.pY((()=>this._update()),250)),this._register(this._editor.onDidChangeModelContent((()=>{this._updateSoon.schedule()}))),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII())return void this._decorations.clear();const e=this._model.getVersionId();this._editorWorkerService.computedUnicodeHighlights(this._model.uri,this._options).then((t=>{if(this._model.isDisposed())return;if(this._model.getVersionId()!==e)return;this._updateState(t);const i=[];if(!t.hasMore)for(const e of t.ranges)i.push({range:e,options:Ly.instance.getDecorationFromOptions(this._options)});this._decorations.set(i)}))}getDecorationInfo(e){if(!this._decorations.has(e))return null;const t=this._editor.getModel();if(!(0,ny.Fd)(t,e))return null;return{reason:Ny(t.getValueInRange(e.range),this._options),inComment:(0,ny.$t)(t,e),inString:(0,ny.zg)(t,e)}}};by=my([_y(3,bg.p)],by);class Cy extends Fe.JT{constructor(e,t,i){super(),this._editor=e,this._options=t,this._updateState=i,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new Oe.pY((()=>this._update()),250)),this._register(this._editor.onDidLayoutChange((()=>{this._updateSoon.schedule()}))),this._register(this._editor.onDidScrollChange((()=>{this._updateSoon.schedule()}))),this._register(this._editor.onDidChangeHiddenAreas((()=>{this._updateSoon.schedule()}))),this._register(this._editor.onDidChangeModelContent((()=>{this._updateSoon.schedule()}))),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII())return void this._decorations.clear();const e=this._editor.getVisibleRanges(),t=[],i={ranges:[],ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0,hasMore:!1};for(const o of e){const e=oy.a.computeUnicodeHighlights(this._model,this._options,o);for(const t of e.ranges)i.ranges.push(t);i.ambiguousCharacterCount+=i.ambiguousCharacterCount,i.invisibleCharacterCount+=i.invisibleCharacterCount,i.nonBasicAsciiCharacterCount+=i.nonBasicAsciiCharacterCount,i.hasMore=i.hasMore||e.hasMore}if(!i.hasMore)for(const o of i.ranges)t.push({range:o,options:Ly.instance.getDecorationFromOptions(this._options)});this._updateState(i),this._decorations.set(t)}getDecorationInfo(e){if(!this._decorations.has(e))return null;const t=this._editor.getModel(),i=t.getValueInRange(e.range);return(0,ny.Fd)(t,e)?{reason:Ny(i,this._options),inComment:(0,ny.$t)(t,e),inString:(0,ny.zg)(t,e)}:null}}const Sy=ne.NC("unicodeHighlight.configureUnicodeHighlightOptions","Configure Unicode Highlight Options");let yy=class{constructor(e,t,i){this._editor=e,this._languageService=t,this._openerService=i,this.hoverOrdinal=5}computeSync(e,t){if(!this._editor.hasModel()||1!==e.type)return[];const i=this._editor.getModel(),o=this._editor.getContribution(vy.ID);if(!o)return[];const n=[],s=new Set;let r=300;for(const a of t){const e=o.getDecorationInfo(a);if(!e)continue;const t=i.getValueInRange(a.range).codePointAt(0),l=xy(t);let d;switch(e.reason.kind){case 0:d=(0,ii.$i)(e.reason.confusableWith)?ne.NC("unicodeHighlight.characterIsAmbiguousASCII","The character {0} could be confused with the ASCII character {1}, which is more common in source code.",l,xy(e.reason.confusableWith.codePointAt(0))):ne.NC("unicodeHighlight.characterIsAmbiguous","The character {0} could be confused with the character {1}, which is more common in source code.",l,xy(e.reason.confusableWith.codePointAt(0)));break;case 1:d=ne.NC("unicodeHighlight.characterIsInvisible","The character {0} is invisible.",l);break;case 2:d=ne.NC("unicodeHighlight.characterIsNonBasicAscii","The character {0} is not a basic ASCII character.",l)}if(s.has(d))continue;s.add(d);const c={codePoint:t,reason:e.reason,inComment:e.inComment,inString:e.inString},h=ne.NC("unicodeHighlight.adjustSettings","Adjust settings"),u="command:".concat(My.ID,"?").concat(encodeURIComponent(JSON.stringify(c))),g=new Ne.W5("",!0).appendMarkdown(d).appendText(" ").appendLink(u,h,Sy);n.push(new vl(this,a.range,[g],!1,r++))}return n}renderHoverParts(e,t){return Cl(e,t,this._editor,this._languageService,this._openerService)}};function wy(e){return"U+".concat(e.toString(16).padStart(4,"0"))}function xy(e){let t="`".concat(wy(e),"`");return ii.vU.isInvisibleCharacter(e)||(t+=' "'.concat("".concat(function(e){if(96===e)return"`` ` ``";return"`"+String.fromCodePoint(e)+"`"}(e)),'"')),t}function Ny(e,t){return oy.a.computeUnicodeHighlightReason(e,t)}yy=my([_y(1,Us.O),_y(2,pi.v)],yy);class Ly{constructor(){this.map=new Map}getDecorationFromOptions(e){return this.getDecoration(!e.includeComments,!e.includeStrings)}getDecoration(e,t){const i="".concat(e).concat(t);let o=this.map.get(i);return o||(o=Be.qx.createDynamic({description:"unicode-highlight",stickiness:1,className:"unicode-highlight",showIfCollapsed:!0,overviewRuler:null,minimap:null,hideInCommentTokens:e,hideInStringTokens:t}),this.map.set(i,o)),o}}Ly.instance=new Ly;class ky extends ee.R6{constructor(){super({id:Iy.ID,label:ne.NC("action.unicodeHighlight.disableHighlightingInComments","Disable highlighting of characters in comments"),alias:"Disable highlighting of characters in comments",precondition:void 0}),this.shortLabel=ne.NC("unicodeHighlight.disableHighlightingInComments.shortLabel","Disable Highlight In Comments")}async run(e,t,i){const o=null===e||void 0===e?void 0:e.get(re.Ui);o&&this.runAction(o)}async runAction(e){await e.updateValue(sn.qt.includeComments,!1,2)}}class Dy extends ee.R6{constructor(){super({id:Iy.ID,label:ne.NC("action.unicodeHighlight.disableHighlightingInStrings","Disable highlighting of characters in strings"),alias:"Disable highlighting of characters in strings",precondition:void 0}),this.shortLabel=ne.NC("unicodeHighlight.disableHighlightingInStrings.shortLabel","Disable Highlight In Strings")}async run(e,t,i){const o=null===e||void 0===e?void 0:e.get(re.Ui);o&&this.runAction(o)}async runAction(e){await e.updateValue(sn.qt.includeStrings,!1,2)}}class Iy extends ee.R6{constructor(){super({id:Iy.ID,label:ne.NC("action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters","Disable highlighting of ambiguous characters"),alias:"Disable highlighting of ambiguous characters",precondition:void 0}),this.shortLabel=ne.NC("unicodeHighlight.disableHighlightingOfAmbiguousCharacters.shortLabel","Disable Ambiguous Highlight")}async run(e,t,i){const o=null===e||void 0===e?void 0:e.get(re.Ui);o&&this.runAction(o)}async runAction(e){await e.updateValue(sn.qt.ambiguousCharacters,!1,2)}}Iy.ID="editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters";class Ry extends ee.R6{constructor(){super({id:Ry.ID,label:ne.NC("action.unicodeHighlight.disableHighlightingOfInvisibleCharacters","Disable highlighting of invisible characters"),alias:"Disable highlighting of invisible characters",precondition:void 0}),this.shortLabel=ne.NC("unicodeHighlight.disableHighlightingOfInvisibleCharacters.shortLabel","Disable Invisible Highlight")}async run(e,t,i){const o=null===e||void 0===e?void 0:e.get(re.Ui);o&&this.runAction(o)}async runAction(e){await e.updateValue(sn.qt.invisibleCharacters,!1,2)}}Ry.ID="editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters";class Py extends ee.R6{constructor(){super({id:Py.ID,label:ne.NC("action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters","Disable highlighting of non basic ASCII characters"),alias:"Disable highlighting of non basic ASCII characters",precondition:void 0}),this.shortLabel=ne.NC("unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters.shortLabel","Disable Non ASCII Highlight")}async run(e,t,i){const o=null===e||void 0===e?void 0:e.get(re.Ui);o&&this.runAction(o)}async runAction(e){await e.updateValue(sn.qt.nonBasicASCII,!1,2)}}Py.ID="editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters";class My extends ee.R6{constructor(){super({id:My.ID,label:ne.NC("action.unicodeHighlight.showExcludeOptions","Show Exclude Options"),alias:"Show Exclude Options",precondition:void 0})}async run(e,t,i){const{codePoint:o,reason:n,inString:s,inComment:r}=i,a=String.fromCodePoint(o),l=e.get(wi.eJ),d=e.get(re.Ui);const c=[];if(0===n.kind)for(const u of n.notAmbiguousInLocales)c.push({label:ne.NC("unicodeHighlight.allowCommonCharactersInLanguage",'Allow unicode characters that are more common in the language "{0}".',u),run:async()=>{Ty(d,[u])}});if(c.push({label:function(e){return ii.vU.isInvisibleCharacter(e)?ne.NC("unicodeHighlight.excludeInvisibleCharFromBeingHighlighted","Exclude {0} (invisible character) from being highlighted",wy(e)):ne.NC("unicodeHighlight.excludeCharFromBeingHighlighted","Exclude {0} from being highlighted","".concat(wy(e),' "').concat(a,'"'))}(o),run:()=>async function(e,t){const i=e.getValue(sn.qt.allowedCharacters);let o;o="object"===typeof i&&i?i:{};for(const n of t)o[String.fromCodePoint(n)]=!0;await e.updateValue(sn.qt.allowedCharacters,o,2)}(d,[o])}),r){const e=new ky;c.push({label:e.label,run:async()=>e.runAction(d)})}else if(s){const e=new Dy;c.push({label:e.label,run:async()=>e.runAction(d)})}if(0===n.kind){const e=new Iy;c.push({label:e.label,run:async()=>e.runAction(d)})}else if(1===n.kind){const e=new Ry;c.push({label:e.label,run:async()=>e.runAction(d)})}else if(2===n.kind){const e=new Py;c.push({label:e.label,run:async()=>e.runAction(d)})}else!function(e){throw new Error("Unexpected value: ".concat(e))}(n);const h=await l.pick(c,{title:Sy});h&&await h.run()}}async function Ty(e,t){var i;const o=null===(i=e.inspect(sn.qt.allowedLocales).user)||void 0===i?void 0:i.value;let n;n="object"===typeof o&&o?Object.assign({},o):{};for(const s of t)n[s]=!0;await e.updateValue(sn.qt.allowedLocales,n,2)}My.ID="editor.action.unicodeHighlight.showExcludeOptions",(0,ee.Qr)(Iy),(0,ee.Qr)(Ry),(0,ee.Qr)(Py),(0,ee.Qr)(My),(0,ee._K)(vy.ID,vy,1),Qa.register(yy);var Ey=i(78025),Ay=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Oy=function(e,t){return function(i,o){t(i,o,e)}};const Fy="ignoreUnusualLineTerminators";let Wy=class extends Fe.JT{constructor(e,t,i){super(),this._editor=e,this._dialogService=t,this._codeEditorService=i,this._isPresentingDialog=!1,this._config=this._editor.getOption(126),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(126)&&(this._config=this._editor.getOption(126),this._checkForUnusualLineTerminators())}))),this._register(this._editor.onDidChangeModel((()=>{this._checkForUnusualLineTerminators()}))),this._register(this._editor.onDidChangeModelContent((e=>{e.isUndoing||this._checkForUnusualLineTerminators()}))),this._checkForUnusualLineTerminators()}async _checkForUnusualLineTerminators(){if("off"===this._config)return;if(!this._editor.hasModel())return;const e=this._editor.getModel();if(!e.mightContainUnusualLineTerminators())return;const t=function(e,t){return e.getModelProperty(t.uri,Fy)}(this._codeEditorService,e);if(!0===t)return;if(this._editor.getOption(91))return;if("auto"===this._config)return void e.removeUnusualLineTerminators(this._editor.getSelections());if(this._isPresentingDialog)return;let i;try{this._isPresentingDialog=!0,i=await this._dialogService.confirm({title:ne.NC("unusualLineTerminators.title","Unusual Line Terminators"),message:ne.NC("unusualLineTerminators.message","Detected unusual line terminators"),detail:ne.NC("unusualLineTerminators.detail","The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\n\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.",(0,It.EZ)(e.uri)),primaryButton:ne.NC({key:"unusualLineTerminators.fix",comment:["&& denotes a mnemonic"]},"&&Remove Unusual Line Terminators"),cancelButton:ne.NC("unusualLineTerminators.ignore","Ignore")})}finally{this._isPresentingDialog=!1}i.confirmed?e.removeUnusualLineTerminators(this._editor.getSelections()):function(e,t,i){e.setModelProperty(t.uri,Fy,i)}(this._codeEditorService,e,!0)}};Wy.ID="editor.contrib.unusualLineTerminatorsDetector",Wy=Ay([Oy(1,Ey.S),Oy(2,te.$)],Wy),(0,ee._K)(Wy.ID,Wy,1);var Hy,Vy,By=i(6440),zy=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Uy=function(e,t){return function(i,o){t(i,o,e)}};const Ky=new ae.uy("hasWordHighlights",!1);function jy(e,t,i,o){const n=e.ordered(t);return(0,Oe.Ps)(n.map((e=>()=>Promise.resolve(e.provideDocumentHighlights(t,i,o)).then(void 0,Ji.Cp))),nt.Of).then((e=>{if(e){const i=new Pn.Y9;return i.set(t.uri,e),i}return new Pn.Y9}))}class qy{constructor(e,t,i){this._model=e,this._selection=t,this._wordSeparators=i,this._wordRange=this._getCurrentWordRange(e,t),this._result=null}get result(){return this._result||(this._result=(0,Oe.PG)((e=>this._compute(this._model,this._selection,this._wordSeparators,e)))),this._result}_getCurrentWordRange(e,t){const i=e.getWordAtPosition(t.getPosition());return i?new He.e(t.startLineNumber,i.startColumn,t.startLineNumber,i.endColumn):null}isValid(e,t,i){const o=t.startLineNumber,n=t.startColumn,s=t.endColumn,r=this._getCurrentWordRange(e,t);let a=Boolean(this._wordRange&&this._wordRange.equalsRange(r));for(let l=0,d=i.length;!a&&l<d;l++){const e=i.getRange(l);e&&e.startLineNumber===o&&e.startColumn<=n&&e.endColumn>=s&&(a=!0)}return a}cancel(){this.result.cancel()}}class Gy extends qy{constructor(e,t,i,o){super(e,t,i),this._providers=o}_compute(e,t,i,o){return jy(this._providers,e,t.getPosition(),o).then((e=>e||new Pn.Y9))}}class Qy extends qy{constructor(e,t,i,o,n){super(e,t,i),this._providers=o,this._otherModels=n}_compute(e,t,i,o){return function(e,t,i,o,n,s){const r=e.ordered(t);return(0,Oe.Ps)(r.map((e=>()=>{const o=s.filter((e=>(0,Ve.pt)(e))).filter((t=>(0,By.G)(e.selector,t.uri,t.getLanguageId(),!0,void 0,void 0)>0));return Promise.resolve(e.provideMultiDocumentHighlights(t,i,o,n)).then(void 0,Ji.Cp)})),(e=>e instanceof Pn.Y9&&e.size>0))}(this._providers,e,t.getPosition(),0,o,this._otherModels).then((e=>e||new Pn.Y9))}}class Zy extends qy{constructor(e,t,i,o,n){super(e,t,o),this._otherModels=n,this._selectionIsEmpty=t.isEmpty(),this._word=i}_compute(e,t,i,o){return(0,Oe.Vs)(250,o).then((()=>{const o=new Pn.Y9;let n;if(n=this._word?this._word:e.getWordAtPosition(t.getPosition()),!n)return new Pn.Y9;const s=[e,...this._otherModels];for(const e of s){if(e.isDisposed())continue;const t=e.findMatches(n.word,!0,!1,!0,i,!1).map((e=>({range:e.range,kind:Lt.MY.Text})));t&&o.set(e.uri,t)}return o}))}isValid(e,t,i){const o=t.isEmpty();return this._selectionIsEmpty===o&&super.isValid(e,t,i)}}(0,ee.sb)("_executeDocumentHighlights",(async(e,t,i)=>{const o=e.get(kt.p),n=await jy(o.documentHighlightProvider,t,i,Yi.T.None);return null===n||void 0===n?void 0:n.get(t.uri)}));let Yy=Hy=class{constructor(e,t,i,o,n){this.toUnhook=new Fe.SL,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=new Pn.Y9,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.editor=e,this.providers=t,this.multiDocumentProviders=i,this.codeEditorService=n,this._hasWordHighlights=Ky.bindTo(o),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getOption(81),this.model=this.editor.getModel(),this.toUnhook.add(e.onDidChangeCursorPosition((e=>{this._ignorePositionChangeEvent||"off"!==this.occurrencesHighlight&&this._onPositionChanged(e)}))),this.toUnhook.add(e.onDidFocusEditorText((e=>{"off"!==this.occurrencesHighlight&&(this.workerRequest||this._run())}))),this.toUnhook.add(e.onDidChangeModelContent((e=>{this._stopAll()}))),this.toUnhook.add(e.onDidChangeModel((e=>{!e.newModelUrl&&e.oldModelUrl?this._stopSingular():Hy.query&&this._run()}))),this.toUnhook.add(e.onDidChangeConfiguration((e=>{const t=this.editor.getOption(81);this.occurrencesHighlight!==t&&(this.occurrencesHighlight=t,this._stopAll())}))),this.decorations=this.editor.createDecorationsCollection(),this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,Hy.query&&this._run()}hasDecorations(){return this.decorations.length>0}restore(){"off"!==this.occurrencesHighlight&&this._run()}_getSortedHighlights(){return this.decorations.getRanges().sort(He.e.compareRangesUsingStarts)}moveNext(){const e=this._getSortedHighlights(),t=(e.findIndex((e=>e.containsPosition(this.editor.getPosition())))+1)%e.length,i=e[t];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(i.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(i);const o=this._getWord();if(o){const n=this.editor.getModel().getLineContent(i.startLineNumber);(0,xe.Z9)("".concat(n,", ").concat(t+1," of ").concat(e.length," for '").concat(o.word,"'"))}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){const e=this._getSortedHighlights(),t=(e.findIndex((e=>e.containsPosition(this.editor.getPosition())))-1+e.length)%e.length,i=e[t];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(i.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(i);const o=this._getWord();if(o){const n=this.editor.getModel().getLineContent(i.startLineNumber);(0,xe.Z9)("".concat(n,", ").concat(t+1," of ").concat(e.length," for '").concat(o.word,"'"))}}finally{this._ignorePositionChangeEvent=!1}}_removeSingleDecorations(){if(!this.editor.hasModel())return;const e=Hy.storedDecorations.get(this.editor.getModel().uri);e&&(this.editor.removeDecorations(e),Hy.storedDecorations.delete(this.editor.getModel().uri),this.decorations.length>0&&(this.decorations.clear(),this._hasWordHighlights.set(!1)))}_removeAllDecorations(){const e=this.codeEditorService.listCodeEditors(),t=[];for(const i of e){if(!i.hasModel())continue;const e=Hy.storedDecorations.get(i.getModel().uri);if(!e)continue;i.removeDecorations(e),t.push(i.getModel().uri);const o=Jy.get(i);(null===o||void 0===o?void 0:o.wordHighlighter)&&(o.wordHighlighter.decorations.length>0&&(o.wordHighlighter.decorations.clear(),o.wordHighlighter.workerRequest=null,o.wordHighlighter._hasWordHighlights.set(!1)))}for(const i of t)Hy.storedDecorations.delete(i)}_stopSingular(){var e,t,i,o;this._removeSingleDecorations(),this.editor.hasTextFocus()&&((null===(e=this.editor.getModel())||void 0===e?void 0:e.uri.scheme)!==Dt.lg.vscodeNotebookCell&&(null===(i=null===(t=Hy.query)||void 0===t?void 0:t.modelInfo)||void 0===i?void 0:i.model.uri.scheme)!==Dt.lg.vscodeNotebookCell?(Hy.query=null,this._run()):(null===(o=Hy.query)||void 0===o?void 0:o.modelInfo)&&(Hy.query.modelInfo=null)),-1!==this.renderDecorationsTimer&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),null!==this.workerRequest&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_stopAll(){this._removeAllDecorations(),-1!==this.renderDecorationsTimer&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),null!==this.workerRequest&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(e){var t;"off"!==this.occurrencesHighlight&&(3===e.reason||(null===(t=this.editor.getModel())||void 0===t?void 0:t.uri.scheme)===Dt.lg.vscodeNotebookCell)?this._run():this._stopAll()}_getWord(){const e=this.editor.getSelection(),t=e.startLineNumber,i=e.startColumn;return this.model.isDisposed()?null:this.model.getWordAtPosition({lineNumber:t,column:i})}getOtherModelsToHighlight(e){if(!e)return[];if(e.uri.scheme===Dt.lg.vscodeNotebookCell){const t=[],i=this.codeEditorService.listCodeEditors();for(const o of i){const i=o.getModel();i&&i!==e&&i.uri.scheme===Dt.lg.vscodeNotebookCell&&t.push(i)}return t}const t=[],i=this.codeEditorService.listCodeEditors();for(const o of i){if(!(0,xr.QI)(o))continue;const i=o.getModel();i&&(e===i.modified&&t.push(i.modified))}if(t.length)return t;if("singleFile"===this.occurrencesHighlight)return[];for(const o of i){const i=o.getModel();i&&i!==e&&t.push(i)}return t}_run(){var e;let t;if(this.editor.hasTextFocus()){const e=this.editor.getSelection();if(!e||e.startLineNumber!==e.endLineNumber)return Hy.query=null,void this._stopAll();const i=e.startColumn,o=e.endColumn,n=this._getWord();if(!n||n.startColumn>i||n.endColumn<o)return Hy.query=null,void this._stopAll();t=this.workerRequest&&this.workerRequest.isValid(this.model,e,this.decorations),Hy.query={modelInfo:{model:this.model,selection:e},word:n}}else if(!Hy.query)return;if(this.lastCursorPositionChangeTime=(new Date).getTime(),t)this.workerRequestCompleted&&-1!==this.renderDecorationsTimer&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1,this._beginRenderDecorations());else{this._stopAll();const t=++this.workerRequestTokenId;this.workerRequestCompleted=!1;const i=this.getOtherModelsToHighlight(this.editor.getModel());if(!Hy.query.modelInfo||Hy.query.modelInfo.model.isDisposed())return;this.workerRequest=this.computeWithModel(Hy.query.modelInfo.model,Hy.query.modelInfo.selection,Hy.query.word,i),null===(e=this.workerRequest)||void 0===e||e.result.then((e=>{t===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=e||[],this._beginRenderDecorations())}),Ji.dL)}}computeWithModel(e,t,i,o){return o.length?function(e,t,i,o,n,s){return e.has(t)?new Qy(t,i,n,e,s):new Zy(t,i,o,n,s)}(this.multiDocumentProviders,e,t,i,this.editor.getOption(131),o):function(e,t,i,o,n){return e.has(t)?new Gy(t,i,n,e):new Zy(t,i,o,n,[])}(this.providers,e,t,i,this.editor.getOption(131))}_beginRenderDecorations(){const e=(new Date).getTime(),t=this.lastCursorPositionChangeTime+250;e>=t?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout((()=>{this.renderDecorations()}),t-e)}renderDecorations(){var e,t,i;this.renderDecorationsTimer=-1;const o=this.codeEditorService.listCodeEditors();for(const s of o){const o=Jy.get(s);if(!o)continue;const r=[],a=null===(e=s.getModel())||void 0===e?void 0:e.uri;if(a&&this.workerRequestValue.has(a)){const e=Hy.storedDecorations.get(a),l=this.workerRequestValue.get(a);if(l)for(const t of l)t.range&&r.push({range:t.range,options:(n=t.kind,n===Lt.MY.Write?tb:n===Lt.MY.Text?ib:sb)});let d=[];s.changeDecorations((t=>{d=t.deltaDecorations(null!==e&&void 0!==e?e:[],r)})),Hy.storedDecorations=Hy.storedDecorations.set(a,d),r.length>0&&(null===(t=o.wordHighlighter)||void 0===t||t.decorations.set(r),null===(i=o.wordHighlighter)||void 0===i||i._hasWordHighlights.set(!0))}}var n}dispose(){this._stopSingular(),this.toUnhook.dispose()}};Yy.storedDecorations=new Pn.Y9,Yy.query=null,Yy=Hy=zy([Uy(4,te.$)],Yy);let Jy=Vy=class extends Fe.JT{static get(e){return e.getContribution(Vy.ID)}constructor(e,t,i,o){super(),this._wordHighlighter=null;const n=()=>{e.hasModel()&&!e.getModel().isTooLargeForTokenization()&&(this._wordHighlighter=new Yy(e,i.documentHighlightProvider,i.multiDocumentHighlightProvider,t,o))};this._register(e.onDidChangeModel((e=>{this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),n()}))),n()}get wordHighlighter(){return this._wordHighlighter}saveViewState(){return!(!this._wordHighlighter||!this._wordHighlighter.hasDecorations())}moveNext(){var e;null===(e=this._wordHighlighter)||void 0===e||e.moveNext()}moveBack(){var e;null===(e=this._wordHighlighter)||void 0===e||e.moveBack()}restoreViewState(e){this._wordHighlighter&&e&&this._wordHighlighter.restore()}dispose(){this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),super.dispose()}};Jy.ID="editor.contrib.wordHighlighter",Jy=Vy=zy([Uy(1,ae.i6),Uy(2,kt.p),Uy(3,te.$)],Jy);class $y extends ee.R6{constructor(e,t){super(t),this._isNext=e}run(e,t){const i=Jy.get(t);i&&(this._isNext?i.moveNext():i.moveBack())}}class Xy extends ee.R6{constructor(){super({id:"editor.action.wordHighlight.trigger",label:ne.NC("wordHighlight.trigger.label","Trigger Symbol Highlight"),alias:"Trigger Symbol Highlight",precondition:Ky.toNegated(),kbOpts:{kbExpr:oe.u.editorTextFocus,primary:0,weight:100}})}run(e,t,i){const o=Jy.get(t);o&&o.restoreViewState(!0)}}(0,ee._K)(Jy.ID,Jy,0),(0,ee.Qr)(class extends $y{constructor(){super(!0,{id:"editor.action.wordHighlight.next",label:ne.NC("wordHighlight.next.label","Go to Next Symbol Highlight"),alias:"Go to Next Symbol Highlight",precondition:Ky,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:65,weight:100}})}}),(0,ee.Qr)(class extends $y{constructor(){super(!1,{id:"editor.action.wordHighlight.prev",label:ne.NC("wordHighlight.previous.label","Go to Previous Symbol Highlight"),alias:"Go to Previous Symbol Highlight",precondition:Ky,kbOpts:{kbExpr:oe.u.editorTextFocus,primary:1089,weight:100}})}}),(0,ee.Qr)(Xy);var ew=i(68170),tw=i(78626),iw=i(67055);class ow extends ee._l{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode,this._wordNavigationType=e.wordNavigationType}runEditorCommand(e,t,i){if(!t.hasModel())return;const o=(0,iw.u)(t.getOption(131),t.getOption(130)),n=t.getModel(),s=t.getSelections().map((e=>{const t=new We.L(e.positionLineNumber,e.positionColumn),i=this._move(o,n,t,this._wordNavigationType);return this._moveTo(e,i,this._inSelectionMode)}));if(n.pushStackElement(),t._getViewModel().setCursorStates("moveWordCommand",3,s.map((e=>ew.Vi.fromModelSelection(e)))),1===s.length){const e=new We.L(s[0].positionLineNumber,s[0].positionColumn);t.revealPosition(e,0)}}_moveTo(e,t,i){return i?new ke.Y(e.selectionStartLineNumber,e.selectionStartColumn,t.lineNumber,t.column):new ke.Y(t.lineNumber,t.column,t.lineNumber,t.column)}}class nw extends ow{_move(e,t,i,o){return tw.w.moveWordLeft(e,t,i,o)}}class sw extends ow{_move(e,t,i,o){return tw.w.moveWordRight(e,t,i,o)}}class rw extends ee._l{constructor(e){super(e),this._whitespaceHeuristics=e.whitespaceHeuristics,this._wordNavigationType=e.wordNavigationType}runEditorCommand(e,t,i){const o=e.get(Xn.c_);if(!t.hasModel())return;const n=(0,iw.u)(t.getOption(131),t.getOption(130)),s=t.getModel(),r=t.getSelections(),a=t.getOption(6),l=t.getOption(11),d=o.getLanguageConfiguration(s.getLanguageId()).getAutoClosingPairs(),c=t._getViewModel(),h=r.map((e=>{const i=this._delete({wordSeparators:n,model:s,selection:e,whitespaceHeuristics:this._whitespaceHeuristics,autoClosingDelete:t.getOption(9),autoClosingBrackets:a,autoClosingQuotes:l,autoClosingPairs:d,autoClosedCharacters:c.getCursorAutoClosedCharacters()},this._wordNavigationType);return new $e.T4(i,"")}));t.pushUndoStop(),t.executeCommands(this.id,h),t.pushUndoStop()}}class aw extends rw{_delete(e,t){const i=tw.w.deleteWordLeft(e,t);return i||new He.e(1,1,1,1)}}class lw extends rw{_delete(e,t){const i=tw.w.deleteWordRight(e,t);if(i)return i;const o=e.model.getLineCount(),n=e.model.getLineMaxColumn(o);return new He.e(o,n,o,n)}}class dw extends ee.R6{constructor(){super({id:"deleteInsideWord",precondition:oe.u.writable,label:ne.NC("deleteInsideWord","Delete Word"),alias:"Delete Word"})}run(e,t,i){if(!t.hasModel())return;const o=(0,iw.u)(t.getOption(131),t.getOption(130)),n=t.getModel(),s=t.getSelections().map((e=>{const t=tw.w.deleteInsideWord(o,n,e);return new $e.T4(t,"")}));t.pushUndoStop(),t.executeCommands(this.id,s),t.pushUndoStop()}}(0,ee.fK)(new class extends nw{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}}),(0,ee.fK)(new class extends nw{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}}),(0,ee.fK)(new class extends nw{constructor(){var e;super({inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:ae.Ao.and(oe.u.textInputFocus,null===(e=ae.Ao.and($s.U,na.cv))||void 0===e?void 0:e.negate()),primary:2063,mac:{primary:527},weight:100}})}}),(0,ee.fK)(new class extends nw{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}}),(0,ee.fK)(new class extends nw{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}}),(0,ee.fK)(new class extends nw{constructor(){var e;super({inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:ae.Ao.and(oe.u.textInputFocus,null===(e=ae.Ao.and($s.U,na.cv))||void 0===e?void 0:e.negate()),primary:3087,mac:{primary:1551},weight:100}})}}),(0,ee.fK)(new class extends sw{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}}),(0,ee.fK)(new class extends sw{constructor(){var e;super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:ae.Ao.and(oe.u.textInputFocus,null===(e=ae.Ao.and($s.U,na.cv))||void 0===e?void 0:e.negate()),primary:2065,mac:{primary:529},weight:100}})}}),(0,ee.fK)(new class extends sw{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}}),(0,ee.fK)(new class extends sw{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}}),(0,ee.fK)(new class extends sw{constructor(){var e;super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:ae.Ao.and(oe.u.textInputFocus,null===(e=ae.Ao.and($s.U,na.cv))||void 0===e?void 0:e.negate()),primary:3089,mac:{primary:1553},weight:100}})}}),(0,ee.fK)(new class extends sw{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}}),(0,ee.fK)(new class extends nw{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0})}_move(e,t,i,o){return super._move((0,iw.u)(sn.BH.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,o)}}),(0,ee.fK)(new class extends nw{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0})}_move(e,t,i,o){return super._move((0,iw.u)(sn.BH.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,o)}}),(0,ee.fK)(new class extends sw{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0})}_move(e,t,i,o){return super._move((0,iw.u)(sn.BH.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,o)}}),(0,ee.fK)(new class extends sw{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0})}_move(e,t,i,o){return super._move((0,iw.u)(sn.BH.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,o)}}),(0,ee.fK)(new class extends aw{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:oe.u.writable})}}),(0,ee.fK)(new class extends aw{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:oe.u.writable})}}),(0,ee.fK)(new class extends aw{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}}),(0,ee.fK)(new class extends lw{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:oe.u.writable})}}),(0,ee.fK)(new class extends lw{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:oe.u.writable})}}),(0,ee.fK)(new class extends lw{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}}),(0,ee.Qr)(dw);class cw extends ow{_move(e,t,i,o){return tw.L.moveWordPartLeft(e,t,i)}}ye.P.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");ye.P.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");class hw extends ow{_move(e,t,i,o){return tw.L.moveWordPartRight(e,t,i)}}(0,ee.fK)(new class extends rw{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(e,t){const i=tw.L.deleteWordPartLeft(e);return i||new He.e(1,1,1,1)}}),(0,ee.fK)(new class extends rw{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:oe.u.writable,kbOpts:{kbExpr:oe.u.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(e,t){const i=tw.L.deleteWordPartRight(e);if(i)return i;const o=e.model.getLineCount(),n=e.model.getLineMaxColumn(o);return new He.e(o,n,o,n)}}),(0,ee.fK)(new class extends cw{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:oe.u.textInputFocus,primary:0,mac:{primary:783},weight:100}})}}),(0,ee.fK)(new class extends cw{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:oe.u.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}}),(0,ee.fK)(new class extends hw{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:oe.u.textInputFocus,primary:0,mac:{primary:785},weight:100}})}}),(0,ee.fK)(new class extends hw{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:oe.u.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}});class uw extends Fe.JT{constructor(e){super(),this.editor=e,this._register(this.editor.onDidAttemptReadOnlyEdit((()=>this._onDidAttemptReadOnlyEdit())))}_onDidAttemptReadOnlyEdit(){const e=fi.get(this.editor);if(e&&this.editor.hasModel()){let t=this.editor.getOptions().get(92);t||(t=this.editor.isSimpleWidget?new Ne.W5(ne.NC("editor.simple.readonly","Cannot edit in read-only input")):new Ne.W5(ne.NC("editor.readonly","Cannot edit in read-only editor"))),e.showMessage(t,this.editor.getPosition())}}}uw.ID="editor.contrib.readOnlyMessageController",(0,ee._K)(uw.ID,uw,2);var gw=i(39196),pw=i(5545),mw=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},_w=function(e,t){return function(i,o){t(i,o,e)}};let fw=class extends Fe.JT{constructor(e,t,i){super(),this._textModel=e,this._languageFeaturesService=t,this._outlineModelService=i,this._currentModel=(0,dd.uh)(this,void 0);const o=(0,dd.aq)("documentSymbolProvider.onDidChange",this._languageFeaturesService.documentSymbolProvider.onDidChange),n=(0,dd.aq)("_textModel.onDidChangeContent",ui.ju.debounce((e=>this._textModel.onDidChangeContent(e)),(()=>{}),100));this._register((0,dd.gp)((async(e,t)=>{o.read(e),n.read(e);const i=t.add(new pw.t2),s=await this._outlineModelService.getOrCreate(this._textModel,i.token);t.isDisposed||this._currentModel.set(s,void 0)})))}getBreadcrumbItems(e,t){const i=this._currentModel.read(t);if(!i)return[];const o=i.asListOfDocumentSymbols().filter((t=>e.contains(t.range.startLineNumber)&&!e.contains(t.range.endLineNumber)));return o.sort((0,nt.BV)((0,nt.tT)((e=>e.range.endLineNumber-e.range.startLineNumber),nt.fv))),o.map((e=>({name:e.name,kind:e.kind,startLineNumber:e.range.startLineNumber})))}};fw=mw([_w(1,kt.p),_w(2,Ag)],fw),gw.O.setBreadcrumbsSourceFactory(((e,t)=>t.createInstance(fw,e)));var vw=i(36334);class bw extends Fe.JT{constructor(e){super(),this.editor=e,this.widget=null,it.gn&&(this._register(e.onDidChangeConfiguration((()=>this.update()))),this.update())}update(){const e=!this.editor.getOption(91);!this.widget&&e?this.widget=new Cw(this.editor):this.widget&&!e&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}}bw.ID="editor.contrib.iPadShowKeyboard";class Cw extends Fe.JT{constructor(e){super(),this.editor=e,this._domNode=document.createElement("textarea"),this._domNode.className="iPadShowKeyboard",this._register(X.nm(this._domNode,"touchstart",(e=>{this.editor.focus()}))),this._register(X.nm(this._domNode,"focus",(e=>{this.editor.focus()}))),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return Cw.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}}Cw.ID="editor.contrib.ShowKeyboardWidget",(0,ee._K)(bw.ID,bw,3);var Sw,yw=i(55562),ww=i(22191),xw=i(24587),Nw=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Lw=function(e,t){return function(i,o){t(i,o,e)}};let kw=Sw=class extends Fe.JT{static get(e){return e.getContribution(Sw.ID)}constructor(e,t,i){super(),this._editor=e,this._languageService=i,this._widget=null,this._register(this._editor.onDidChangeModel((e=>this.stop()))),this._register(this._editor.onDidChangeModelLanguage((e=>this.stop()))),this._register(Lt.RW.onDidChange((e=>this.stop()))),this._register(this._editor.onKeyUp((e=>9===e.keyCode&&this.stop())))}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new Iw(this._editor,this._languageService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}};kw.ID="editor.contrib.inspectTokens",kw=Sw=Nw([Lw(1,xw.Z),Lw(2,Us.O)],kw);class Dw extends ee.R6{constructor(){super({id:"editor.action.inspectTokens",label:vw.ug.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}run(e,t){const i=kw.get(t);null===i||void 0===i||i.launch()}}class Iw extends Fe.JT{constructor(e,t){super(),this.allowEditorOverflow=!0,this._editor=e,this._languageService=t,this._model=this._editor.getModel(),this._domNode=document.createElement("div"),this._domNode.className="tokens-inspect-widget",this._tokenizationSupport=function(e,t){const i=Lt.RW.get(t);if(i)return i;const o=e.encodeLanguageId(t);return{getInitialState:()=>ww.TJ,tokenize:(e,i,o)=>(0,ww.Ri)(t,o),tokenizeEncoded:(e,t,i)=>(0,ww.Dy)(o,i)}}(this._languageService.languageIdCodec,this._model.getLanguageId()),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition((e=>this._compute(this._editor.getPosition())))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return Iw._ID}_compute(e){const t=this._getTokensAtLine(e.lineNumber);let i=0;for(let a=t.tokens1.length-1;a>=0;a--){const o=t.tokens1[a];if(e.column-1>=o.offset){i=a;break}}let o=0;for(let a=t.tokens2.length>>>1;a>=0;a--)if(e.column-1>=t.tokens2[a<<1]){o=a;break}const n=this._model.getLineContent(e.lineNumber);let s="";if(i<t.tokens1.length){const e=t.tokens1[i].offset,o=i+1<t.tokens1.length?t.tokens1[i+1].offset:n.length;s=n.substring(e,o)}(0,X.mc)(this._domNode,(0,X.$)("h2.tm-token",void 0,function(e){let t="";for(let i=0,o=e.length;i<o;i++){const o=e.charCodeAt(i);switch(o){case 9:t+="\u2192";break;case 32:t+="\xb7";break;default:t+=String.fromCharCode(o)}}return t}(s),(0,X.$)("span.tm-token-length",void 0,"".concat(s.length," ").concat(1===s.length?"char":"chars")))),(0,X.R3)(this._domNode,(0,X.$)("hr.tokens-inspect-separator",{style:"clear:both"}));const r=1+(o<<1)<t.tokens2.length?this._decodeMetadata(t.tokens2[1+(o<<1)]):null;(0,X.R3)(this._domNode,(0,X.$)("table.tm-metadata-table",void 0,(0,X.$)("tbody",void 0,(0,X.$)("tr",void 0,(0,X.$)("td.tm-metadata-key",void 0,"language"),(0,X.$)("td.tm-metadata-value",void 0,"".concat(r?r.languageId:"-?-"))),(0,X.$)("tr",void 0,(0,X.$)("td.tm-metadata-key",void 0,"token type"),(0,X.$)("td.tm-metadata-value",void 0,"".concat(r?this._tokenTypeToString(r.tokenType):"-?-"))),(0,X.$)("tr",void 0,(0,X.$)("td.tm-metadata-key",void 0,"font style"),(0,X.$)("td.tm-metadata-value",void 0,"".concat(r?this._fontStyleToString(r.fontStyle):"-?-"))),(0,X.$)("tr",void 0,(0,X.$)("td.tm-metadata-key",void 0,"foreground"),(0,X.$)("td.tm-metadata-value",void 0,"".concat(r?Zn.Il.Format.CSS.formatHex(r.foreground):"-?-"))),(0,X.$)("tr",void 0,(0,X.$)("td.tm-metadata-key",void 0,"background"),(0,X.$)("td.tm-metadata-value",void 0,"".concat(r?Zn.Il.Format.CSS.formatHex(r.background):"-?-")))))),(0,X.R3)(this._domNode,(0,X.$)("hr.tokens-inspect-separator")),i<t.tokens1.length&&(0,X.R3)(this._domNode,(0,X.$)("span.tm-token-type",void 0,t.tokens1[i].type)),this._editor.layoutContentWidget(this)}_decodeMetadata(e){const t=Lt.RW.getColorMap(),i=yw.N.getLanguageId(e),o=yw.N.getTokenType(e),n=yw.N.getFontStyle(e),s=yw.N.getForeground(e),r=yw.N.getBackground(e);return{languageId:this._languageService.languageIdCodec.decodeLanguageId(i),tokenType:o,fontStyle:n,foreground:t[s],background:t[r]}}_tokenTypeToString(e){switch(e){case 0:return"Other";case 1:return"Comment";case 2:return"String";case 3:return"RegEx";default:return"??"}}_fontStyleToString(e){let t="";return 1&e&&(t+="italic "),2&e&&(t+="bold "),4&e&&(t+="underline "),8&e&&(t+="strikethrough "),0===t.length&&(t="---"),t}_getTokensAtLine(e){const t=this._getStateBeforeLine(e),i=this._tokenizationSupport.tokenize(this._model.getLineContent(e),!0,t),o=this._tokenizationSupport.tokenizeEncoded(this._model.getLineContent(e),!0,t);return{startState:t,tokens1:i.tokens,tokens2:o.tokens,endState:i.endState}}_getStateBeforeLine(e){let t=this._tokenizationSupport.getInitialState();for(let i=1;i<e;i++){t=this._tokenizationSupport.tokenize(this._model.getLineContent(i),!0,t).endState}return t}getDomNode(){return this._domNode}getPosition(){return{position:this._editor.getPosition(),preference:[2,1]}}}Iw._ID="editor.contrib.inspectTokensWidget",(0,ee._K)(kw.ID,kw,4),(0,ee.Qr)(Dw);var Rw,Pw=i(53643),Mw=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Tw=function(e,t){return function(i,o){t(i,o,e)}};let Ew=Rw=class{constructor(e,t){this.quickInputService=e,this.keybindingService=t,this.registry=ft.B.as(Pw.IP.Quickaccess)}provide(e){const t=new Fe.SL;return t.add(e.onDidAccept((()=>{const[t]=e.selectedItems;t&&this.quickInputService.quickAccess.show(t.prefix,{preserveValue:!0})}))),t.add(e.onDidChangeValue((e=>{const t=this.registry.getQuickAccessProvider(e.substr(Rw.PREFIX.length));t&&t.prefix&&t.prefix!==Rw.PREFIX&&this.quickInputService.quickAccess.show(t.prefix,{preserveValue:!0})}))),e.items=this.getQuickAccessProviders().filter((e=>e.prefix!==Rw.PREFIX)),t}getQuickAccessProviders(){return this.registry.getQuickAccessProviders().sort(((e,t)=>e.prefix.localeCompare(t.prefix))).flatMap((e=>this.createPicks(e)))}createPicks(e){return e.helpEntries.map((t=>{const i=t.prefix||e.prefix,o=i||"\u2026";return{prefix:i,label:o,keybinding:t.commandId?this.keybindingService.lookupKeybinding(t.commandId):void 0,ariaLabel:(0,ne.NC)("helpPickAriaLabel","{0}, {1}",o,t.description),description:t.description}}))}};Ew.PREFIX="?",Ew=Rw=Mw([Tw(0,wi.eJ),Tw(1,ki.d)],Ew),ft.B.as(Pw.IP.Quickaccess).registerQuickAccessProvider({ctor:Ew,prefix:"",helpEntries:[{description:vw.ld.helpQuickAccessActionLabel}]});var Aw=i(75937);class Ow{constructor(e){this.options=e,this.rangeHighlightDecorationId=void 0}provide(e,t){var i;const o=new Fe.SL;e.canAcceptInBackground=!!(null===(i=this.options)||void 0===i?void 0:i.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;const n=o.add(new Fe.XK);return n.value=this.doProvide(e,t),o.add(this.onDidActiveTextEditorControlChange((()=>{n.value=void 0,n.value=this.doProvide(e,t)}))),o}doProvide(e,t){var i;const o=new Fe.SL,n=this.activeTextEditorControl;if(n&&this.canProvideWithTextEditor(n)){const s={editor:n},r=(0,xr.Pi)(n);if(r){let e=null!==(i=n.saveViewState())&&void 0!==i?i:void 0;o.add(r.onDidChangeCursorPosition((()=>{var t;e=null!==(t=n.saveViewState())&&void 0!==t?t:void 0}))),s.restoreViewState=()=>{e&&n===this.activeTextEditorControl&&n.restoreViewState(e)},o.add((0,Aw.M)(t.onCancellationRequested)((()=>{var e;return null===(e=s.restoreViewState)||void 0===e?void 0:e.call(s)})))}o.add((0,Fe.OF)((()=>this.clearDecorations(n)))),o.add(this.provideWithTextEditor(s,e,t))}else o.add(this.provideWithoutTextEditor(e,t));return o}canProvideWithTextEditor(e){return!0}gotoLocation(e,t){let{editor:i}=e;i.setSelection(t.range,"code.jump"),i.revealRangeInCenter(t.range,0),t.preserveFocus||i.focus();const o=i.getModel();o&&"getLineContent"in o&&(0,xe.i7)("".concat(o.getLineContent(t.range.startLineNumber)))}getModel(e){var t;return(0,xr.QI)(e)?null===(t=e.getModel())||void 0===t?void 0:t.modified:e.getModel()}addDecorations(e,t){e.changeDecorations((e=>{const i=[];this.rangeHighlightDecorationId&&(i.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),i.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const o=[{range:t,options:{description:"quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:t,options:{description:"quick-access-range-highlight-overview",overviewRuler:{color:(0,Ue.EN)(xc.m9),position:Ve.sh.Full}}}],[n,s]=e.deltaDecorations(i,o);this.rangeHighlightDecorationId={rangeHighlightId:n,overviewRulerDecorationId:s}}))}clearDecorations(e){const t=this.rangeHighlightDecorationId;t&&(e.changeDecorations((e=>{e.deltaDecorations([t.overviewRulerDecorationId,t.rangeHighlightId],[])})),this.rangeHighlightDecorationId=void 0)}}class Fw extends Ow{constructor(){super({canAcceptInBackground:!0})}provideWithoutTextEditor(e){const t=(0,ne.NC)("cannotRunGotoLine","Open a text editor first to go to a line.");return e.items=[{label:t}],e.ariaLabel=t,Fe.JT.None}provideWithTextEditor(e,t,i){const o=e.editor,n=new Fe.SL;n.add(t.onDidAccept((i=>{const[n]=t.selectedItems;if(n){if(!this.isValidLineNumber(o,n.lineNumber))return;this.gotoLocation(e,{range:this.toRange(n.lineNumber,n.column),keyMods:t.keyMods,preserveFocus:i.inBackground}),i.inBackground||t.hide()}})));const s=()=>{const e=this.parsePosition(o,t.value.trim().substr(Fw.PREFIX.length)),i=this.getPickLabel(o,e.lineNumber,e.column);if(t.items=[{lineNumber:e.lineNumber,column:e.column,label:i}],t.ariaLabel=i,!this.isValidLineNumber(o,e.lineNumber))return void this.clearDecorations(o);const n=this.toRange(e.lineNumber,e.column);o.revealRangeInCenter(n,0),this.addDecorations(o,n)};s(),n.add(t.onDidChangeValue((()=>s())));const r=(0,xr.Pi)(o);if(r){2===r.getOptions().get(68).renderType&&(r.updateOptions({lineNumbers:"on"}),n.add((0,Fe.OF)((()=>r.updateOptions({lineNumbers:"relative"})))))}return n}toRange(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return{startLineNumber:e,startColumn:t,endLineNumber:e,endColumn:t}}parsePosition(e,t){const i=t.split(/,|:|#/).map((e=>parseInt(e,10))).filter((e=>!isNaN(e))),o=this.lineCount(e)+1;return{lineNumber:i[0]>0?i[0]:o+i[0],column:i[1]}}getPickLabel(e,t,i){if(this.isValidLineNumber(e,t))return this.isValidColumn(e,t,i)?(0,ne.NC)("gotoLineColumnLabel","Go to line {0} and character {1}.",t,i):(0,ne.NC)("gotoLineLabel","Go to line {0}.",t);const o=e.getPosition()||{lineNumber:1,column:1},n=this.lineCount(e);return n>1?(0,ne.NC)("gotoLineLabelEmptyWithLimit","Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.",o.lineNumber,o.column,n):(0,ne.NC)("gotoLineLabelEmpty","Current Line: {0}, Character: {1}. Type a line number to navigate to.",o.lineNumber,o.column)}isValidLineNumber(e,t){return!(!t||"number"!==typeof t)&&(t>0&&t<=this.lineCount(e))}isValidColumn(e,t,i){if(!i||"number"!==typeof i)return!1;const o=this.getModel(e);if(!o)return!1;const n={lineNumber:t,column:i};return o.validatePosition(n).equals(n)}lineCount(e){var t,i;return null!==(i=null===(t=this.getModel(e))||void 0===t?void 0:t.getLineCount())&&void 0!==i?i:0}}Fw.PREFIX=":";var Ww=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Hw=function(e,t){return function(i,o){t(i,o,e)}};let Vw=class extends Fw{constructor(e){super(),this.editorService=e,this.onDidActiveTextEditorControlChange=ui.ju.None}get activeTextEditorControl(){var e;return null!==(e=this.editorService.getFocusedCodeEditor())&&void 0!==e?e:void 0}};Vw=Ww([Hw(0,te.$)],Vw);class Bw extends ee.R6{constructor(){super({id:Bw.ID,label:vw.qq.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:oe.u.focus,primary:2085,mac:{primary:293},weight:100}})}run(e){e.get(wi.eJ).quickAccess.show(Vw.PREFIX)}}Bw.ID="editor.action.gotoLine",(0,ee.Qr)(Bw),ft.B.as(Pw.IP.Quickaccess).registerQuickAccessProvider({ctor:Vw,prefix:Vw.PREFIX,helpEntries:[{description:vw.qq.gotoLineActionLabel,commandId:Bw.ID}]});const zw=[void 0,[]];function Uw(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;const n=t;return n.values&&n.values.length>1?function(e,t,i,o){let n=0;const s=[];for(const r of t){const[t,a]=Kw(e,r,i,o);if("number"!==typeof t)return zw;n+=t,s.push(...a)}return[n,jw(s)]}(e,n.values,i,o):Kw(e,t,i,o)}function Kw(e,t,i,o){const n=(0,Fr.EW)(t.original,t.originalLowercase,i,e,e.toLowerCase(),o,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return n?[n[0],(0,Fr.mB)(n)]:zw}Object.freeze({score:0});function jw(e){const t=e.sort(((e,t)=>e.start-t.start)),i=[];let o;for(const n of t)o&&qw(o,n)?(o.start=Math.min(o.start,n.start),o.end=Math.max(o.end,n.end)):(o=n,i.push(n));return i}function qw(e,t){return!(e.end<t.start)&&!(t.end<e.start)}function Gw(e){return e.startsWith('"')&&e.endsWith('"')}const Qw=" ";function Zw(e){"string"!==typeof e&&(e="");const t=e.toLowerCase(),{pathNormalized:i,normalized:o,normalizedLowercase:n}=Yw(e),s=i.indexOf(Zp.ir)>=0,r=Gw(e);let a;const l=e.split(Qw);if(l.length>1)for(const d of l){const e=Gw(d),{pathNormalized:t,normalized:i,normalizedLowercase:o}=Yw(d);i&&(a||(a=[]),a.push({original:d,originalLowercase:d.toLowerCase(),pathNormalized:t,normalized:i,normalizedLowercase:o,expectContiguousMatch:e}))}return{original:e,originalLowercase:t,pathNormalized:i,normalized:o,normalizedLowercase:n,values:a,containsPathSeparator:s,expectContiguousMatch:r}}function Yw(e){let t;t=it.ED?e.replace(/\//g,Zp.ir):e.replace(/\\/g,Zp.ir);const i=(0,ii.R1)(t).replace(/\s|"/g,"");return{pathNormalized:t,normalized:i,normalizedLowercase:i.toLowerCase()}}function Jw(e){return Array.isArray(e)?Zw(e.map((e=>e.original)).join(Qw)):Zw(e.original)}var $w,Xw=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},ex=function(e,t){return function(i,o){t(i,o,e)}};let tx=$w=class extends Ow{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Object.create(null);super(i),this._languageFeaturesService=e,this._outlineModelService=t,this.options=i,this.options.canAcceptInBackground=!0}provideWithoutTextEditor(e){return this.provideLabelPick(e,(0,ne.NC)("cannotRunGotoSymbolWithoutEditor","To go to a symbol, first open a text editor with symbol information.")),Fe.JT.None}provideWithTextEditor(e,t,i){const o=e.editor,n=this.getModel(o);return n?this._languageFeaturesService.documentSymbolProvider.has(n)?this.doProvideWithEditorSymbols(e,n,t,i):this.doProvideWithoutEditorSymbols(e,n,t,i):Fe.JT.None}doProvideWithoutEditorSymbols(e,t,i,o){const n=new Fe.SL;return this.provideLabelPick(i,(0,ne.NC)("cannotRunGotoSymbolWithoutSymbolProvider","The active text editor does not provide symbol information.")),(async()=>{await this.waitForLanguageSymbolRegistry(t,n)&&!o.isCancellationRequested&&n.add(this.doProvideWithEditorSymbols(e,t,i,o))})(),n}provideLabelPick(e,t){e.items=[{label:t,index:0,kind:14}],e.ariaLabel=t}async waitForLanguageSymbolRegistry(e,t){if(this._languageFeaturesService.documentSymbolProvider.has(e))return!0;const i=new Oe.CR,o=t.add(this._languageFeaturesService.documentSymbolProvider.onDidChange((()=>{this._languageFeaturesService.documentSymbolProvider.has(e)&&(o.dispose(),i.complete(!0))})));return t.add((0,Fe.OF)((()=>i.complete(!1)))),i.p}doProvideWithEditorSymbols(e,t,i,o){var n;const s=e.editor,r=new Fe.SL;r.add(i.onDidAccept((t=>{const[o]=i.selectedItems;o&&o.range&&(this.gotoLocation(e,{range:o.range.selection,keyMods:i.keyMods,preserveFocus:t.inBackground}),t.inBackground||i.hide())}))),r.add(i.onDidTriggerItemButton((t=>{let{item:o}=t;o&&o.range&&(this.gotoLocation(e,{range:o.range.selection,keyMods:i.keyMods,forceSideBySide:!0}),i.hide())})));const a=this.getDocumentSymbols(t,o);let l;const d=async e=>{null===l||void 0===l||l.dispose(!0),i.busy=!1,l=new Yi.A(o),i.busy=!0;try{const t=Zw(i.value.substr($w.PREFIX.length).trim()),n=await this.doGetSymbolPicks(a,t,void 0,l.token);if(o.isCancellationRequested)return;if(n.length>0){if(i.items=n,e&&0===t.original.length){const t=(0,Nc.dF)(n,(t=>Boolean("separator"!==t.type&&t.range&&He.e.containsPosition(t.range.decoration,e))));t&&(i.activeItems=[t])}}else t.original.length>0?this.provideLabelPick(i,(0,ne.NC)("noMatchingSymbolResults","No matching editor symbols")):this.provideLabelPick(i,(0,ne.NC)("noSymbolResults","No editor symbols"))}finally{o.isCancellationRequested||(i.busy=!1)}};return r.add(i.onDidChangeValue((()=>d(void 0)))),d(null===(n=s.getSelection())||void 0===n?void 0:n.getPosition()),r.add(i.onDidChangeActive((()=>{const[e]=i.activeItems;e&&e.range&&(s.revealRangeInCenter(e.range.selection,0),this.addDecorations(s,e.range.decoration))}))),r}async doGetSymbolPicks(e,t,i,o){var n,s;const r=await e;if(o.isCancellationRequested)return[];const a=0===t.original.indexOf($w.SCOPE_PREFIX),l=a?1:0;let d,c,h;t.values&&t.values.length>1?(d=Jw(t.values[0]),c=Jw(t.values.slice(1))):d=t;const u=null===(s=null===(n=this.options)||void 0===n?void 0:n.openSideBySideDirection)||void 0===s?void 0:s.call(n);u&&(h=[{iconClass:"right"===u?oi.k.asClassName($.l.splitHorizontal):oi.k.asClassName($.l.splitVertical),tooltip:"right"===u?(0,ne.NC)("openToSide","Open to the Side"):(0,ne.NC)("openToBottom","Open to the Bottom")}]);const g=[];for(let _=0;_<r.length;_++){const f=r[_],v=(0,ii.fy)(f.name),b="$(".concat(Lt.uZ.toIcon(f.kind).id,") ").concat(v),C=b.length-v.length;let S,y,w,x,N=f.containerName;if((null===i||void 0===i?void 0:i.extraContainerLabel)&&(N=N?"".concat(i.extraContainerLabel," \u2022 ").concat(N):i.extraContainerLabel),t.original.length>l){let k=!1;if(d!==t&&([S,y]=Uw(b,{...t,values:void 0},l,C),"number"===typeof S&&(k=!0)),"number"!==typeof S&&([S,y]=Uw(b,d,l,C),"number"!==typeof S))continue;if(!k&&c){if(N&&c.original.length>0&&([w,x]=Uw(N,c)),"number"!==typeof w)continue;"number"===typeof S&&(S+=w)}}const L=f.tags&&f.tags.indexOf(1)>=0;g.push({index:_,kind:f.kind,score:S,label:b,ariaLabel:(0,Lt.R4)(f.name,f.kind),description:N,highlights:L?void 0:{label:y,description:x},range:{selection:He.e.collapseToStart(f.selectionRange),decoration:f.range},strikethrough:L,buttons:h})}const p=g.sort(((e,t)=>a?this.compareByKindAndScore(e,t):this.compareByScore(e,t)));let m=[];if(a){let D,I,R=0;function P(){I&&"number"===typeof D&&R>0&&(I.label=(0,ii.WU)(ox[D]||ix,R))}for(const M of p)D!==M.kind?(P(),D=M.kind,R=1,I={type:"separator"},m.push(I)):R++,m.push(M);P()}else p.length>0&&(m=[{label:(0,ne.NC)("symbols","symbols ({0})",g.length),type:"separator"},...p]);return m}compareByScore(e,t){if("number"!==typeof e.score&&"number"===typeof t.score)return 1;if("number"===typeof e.score&&"number"!==typeof t.score)return-1;if("number"===typeof e.score&&"number"===typeof t.score){if(e.score>t.score)return-1;if(e.score<t.score)return 1}return e.index<t.index?-1:e.index>t.index?1:0}compareByKindAndScore(e,t){const i=ox[e.kind]||ix,o=ox[t.kind]||ix,n=i.localeCompare(o);return 0===n?this.compareByScore(e,t):n}async getDocumentSymbols(e,t){const i=await this._outlineModelService.getOrCreate(e,t);return t.isCancellationRequested?[]:i.asListOfDocumentSymbols()}};tx.PREFIX="@",tx.SCOPE_PREFIX=":",tx.PREFIX_BY_CATEGORY="".concat($w.PREFIX).concat($w.SCOPE_PREFIX),tx=$w=Xw([ex(0,kt.p),ex(1,Ag)],tx);const ix=(0,ne.NC)("property","properties ({0})"),ox={5:(0,ne.NC)("method","methods ({0})"),11:(0,ne.NC)("function","functions ({0})"),8:(0,ne.NC)("_constructor","constructors ({0})"),12:(0,ne.NC)("variable","variables ({0})"),4:(0,ne.NC)("class","classes ({0})"),22:(0,ne.NC)("struct","structs ({0})"),23:(0,ne.NC)("event","events ({0})"),24:(0,ne.NC)("operator","operators ({0})"),10:(0,ne.NC)("interface","interfaces ({0})"),2:(0,ne.NC)("namespace","namespaces ({0})"),3:(0,ne.NC)("package","packages ({0})"),25:(0,ne.NC)("typeParameter","type parameters ({0})"),1:(0,ne.NC)("modules","modules ({0})"),6:(0,ne.NC)("property","properties ({0})"),9:(0,ne.NC)("enum","enumerations ({0})"),21:(0,ne.NC)("enumMember","enumeration members ({0})"),14:(0,ne.NC)("string","strings ({0})"),0:(0,ne.NC)("file","files ({0})"),17:(0,ne.NC)("array","arrays ({0})"),15:(0,ne.NC)("number","numbers ({0})"),16:(0,ne.NC)("boolean","booleans ({0})"),18:(0,ne.NC)("object","objects ({0})"),19:(0,ne.NC)("key","keys ({0})"),7:(0,ne.NC)("field","fields ({0})"),13:(0,ne.NC)("constant","constants ({0})")};var nx=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},sx=function(e,t){return function(i,o){t(i,o,e)}};let rx=class extends tx{constructor(e,t,i){super(t,i),this.editorService=e,this.onDidActiveTextEditorControlChange=ui.ju.None}get activeTextEditorControl(){var e;return null!==(e=this.editorService.getFocusedCodeEditor())&&void 0!==e?e:void 0}};rx=nx([sx(0,te.$),sx(1,kt.p),sx(2,Ag)],rx);class ax extends ee.R6{constructor(){super({id:ax.ID,label:vw.aq.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:oe.u.hasDocumentSymbolProvider,kbOpts:{kbExpr:oe.u.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}run(e){e.get(wi.eJ).quickAccess.show(tx.PREFIX,{itemActivation:wi.jG.NONE})}}ax.ID="editor.action.quickOutline",(0,ee.Qr)(ax),ft.B.as(Pw.IP.Quickaccess).registerQuickAccessProvider({ctor:rx,prefix:tx.PREFIX,helpEntries:[{description:vw.aq.quickOutlineActionLabel,prefix:tx.PREFIX,commandId:ax.ID},{description:vw.aq.quickOutlineByCategoryActionLabel,prefix:tx.PREFIX_BY_CATEGORY}]});var lx,dx=i(43020);function cx(e,t){return t&&(e.stack||e.stacktrace)?ne.NC("stackTrace.format","{0}: {1}",ux(e),hx(e.stack)||hx(e.stacktrace)):ux(e)}function hx(e){return Array.isArray(e)?e.join("\n"):e}function ux(e){return"ERR_UNC_HOST_NOT_ALLOWED"===e.code?"".concat(e.message,". Please update the 'security.allowedUNCHosts' setting if you want to allow this host."):"string"===typeof e.code&&"number"===typeof e.errno&&"string"===typeof e.syscall?ne.NC("nodeExceptionMessage","A system error occurred ({0})",e.message):e.message||ne.NC("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}function gx(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return ne.NC("error.defaultMessage","An unknown error occurred. Please consult the log for more details.");if(Array.isArray(e)){const i=nt.kX(e),o=gx(i[0],t);return i.length>1?ne.NC("error.moreErrors","{0} ({1} errors in total)",o,i.length):o}if(Dn.HD(e))return e;if(e.detail){const i=e.detail;if(i.error)return cx(i.error,t);if(i.exception)return cx(i.exception,t)}return e.stack?cx(e,t):e.message?e.message:ne.NC("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}class px{constructor(){this.chunkCount=0,this.chunkOccurrences=new Map,this.documents=new Map}calculateScores(e,t){const i=this.computeEmbedding(e),o=new Map,n=[];for(const[s,r]of this.documents){if(t.isCancellationRequested)return[];for(const e of r.chunks){const t=this.computeSimilarityScore(e,i,o);t>0&&n.push({key:s,score:t})}}return n}static termFrequencies(e){return function(e){var t;const i=new Map;for(const o of e)i.set(o,(null!==(t=i.get(o))&&void 0!==t?t:0)+1);return i}(px.splitTerms(e))}static*splitTerms(e){const t=e=>e.toLowerCase();for(const[i]of e.matchAll(/\b\p{Letter}[\p{Letter}\d]{2,}\b/gu)){yield t(i);const e=i.replace(/([a-z])([A-Z])/g,"$1 $2").split(/\s+/g);if(e.length>1)for(const i of e)i.length>2&&/\p{Letter}{3,}/gu.test(i)&&(yield t(i))}}updateDocuments(e){var t;for(const{key:i}of e)this.deleteDocument(i);for(const i of e){const e=[];for(const o of i.textChunks){const i=px.termFrequencies(o);for(const e of i.keys())this.chunkOccurrences.set(e,(null!==(t=this.chunkOccurrences.get(e))&&void 0!==t?t:0)+1);e.push({text:o,tf:i})}this.chunkCount+=e.length,this.documents.set(i.key,{chunks:e})}return this}deleteDocument(e){const t=this.documents.get(e);if(t){this.documents.delete(e),this.chunkCount-=t.chunks.length;for(const e of t.chunks)for(const t of e.tf.keys()){const e=this.chunkOccurrences.get(t);if("number"===typeof e){const i=e-1;i<=0?this.chunkOccurrences.delete(t):this.chunkOccurrences.set(t,i)}}}}computeSimilarityScore(e,t,i){let o=0;for(const[n,s]of Object.entries(t)){const t=e.tf.get(n);if(!t)continue;let r=i.get(n);"number"!==typeof r&&(r=this.computeIdf(n),i.set(n,r));o+=t*r*s}return o}computeEmbedding(e){const t=px.termFrequencies(e);return this.computeTfidf(t)}computeIdf(e){var t;const i=null!==(t=this.chunkOccurrences.get(e))&&void 0!==t?t:0;return i>0?Math.log((this.chunkCount+1)/i):0}computeTfidf(e){const t=Object.create(null);for(const[i,o]of e){const e=this.computeIdf(i);e>0&&(t[i]=o*e)}return t}}function mx(e){const t=e;return Array.isArray(t.items)}function _x(e){const t=e;return!!t.picks&&t.additionalPicks instanceof Promise}!function(e){e[e.NO_ACTION=0]="NO_ACTION",e[e.CLOSE_PICKER=1]="CLOSE_PICKER",e[e.REFRESH_PICKER=2]="REFRESH_PICKER",e[e.REMOVE_ITEM=3]="REMOVE_ITEM"}(lx||(lx={}));class fx extends Fe.JT{constructor(e,t){super(),this.prefix=e,this.options=t}provide(e,t,i){var o;const n=new Fe.SL;let s;e.canAcceptInBackground=!!(null===(o=this.options)||void 0===o?void 0:o.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;const r=n.add(new Fe.XK),a=async()=>{var o;const n=r.value=new Fe.SL;null===s||void 0===s||s.dispose(!0),e.busy=!1,s=new Yi.A(t);const a=s.token;let l=e.value.substring(this.prefix.length);(null===(o=this.options)||void 0===o?void 0:o.shouldSkipTrimPickFilter)||(l=l.trim());const d=this._getPicks(l,n,a,i),c=(t,i)=>{var o;let n,s;if(mx(t)?(n=t.items,s=t.active):n=t,0===n.length){if(i)return!1;(l.length>0||e.hideInput)&&(null===(o=this.options)||void 0===o?void 0:o.noResultsPick)&&(n=(0,Dn.mf)(this.options.noResultsPick)?[this.options.noResultsPick(l)]:[this.options.noResultsPick])}return e.items=n,s&&(e.activeItems=[s]),!0},h=async t=>{let i=!1,o=!1;await Promise.all([(async()=>{"number"===typeof t.mergeDelay&&(await(0,Oe.Vs)(t.mergeDelay),a.isCancellationRequested)||o||(i=c(t.picks,!0))})(),(async()=>{e.busy=!0;try{const o=await t.additionalPicks;if(a.isCancellationRequested)return;let n,s,r,l;if(mx(t.picks)?(n=t.picks.items,s=t.picks.active):n=t.picks,mx(o)?(r=o.items,l=o.active):r=o,r.length>0||!i){let t;if(!s&&!l){const i=e.activeItems[0];i&&-1!==n.indexOf(i)&&(t=i)}c({items:[...n,...r],active:s||l||t})}}finally{a.isCancellationRequested||(e.busy=!1),o=!0}})()])};if(null===d);else if(_x(d))await h(d);else if(d instanceof Promise){e.busy=!0;try{const e=await d;if(a.isCancellationRequested)return;_x(e)?await h(e):c(e)}finally{a.isCancellationRequested||(e.busy=!1)}}else c(d)};n.add(e.onDidChangeValue((()=>a()))),a(),n.add(e.onDidAccept((t=>{const[i]=e.selectedItems;"function"===typeof(null===i||void 0===i?void 0:i.accept)&&(t.inBackground||e.hide(),i.accept(e.keyMods,t))})));const l=async(i,o)=>{var n,s;if("function"!==typeof o.trigger)return;const r=null!==(s=null===(n=o.buttons)||void 0===n?void 0:n.indexOf(i))&&void 0!==s?s:-1;if(r>=0){const i=o.trigger(r,e.keyMods),n="number"===typeof i?i:await i;if(t.isCancellationRequested)return;switch(n){case lx.NO_ACTION:break;case lx.CLOSE_PICKER:e.hide();break;case lx.REFRESH_PICKER:a();break;case lx.REMOVE_ITEM:{const t=e.items.indexOf(o);if(-1!==t){const i=e.items.slice(),o=i.splice(t,1),n=e.activeItems.filter((e=>e!==o[0])),s=e.keepScrollPosition;e.keepScrollPosition=!0,e.items=i,n&&(e.activeItems=n),e.keepScrollPosition=s}break}}}};return n.add(e.onDidTriggerItemButton((e=>{let{button:t,item:i}=e;return l(t,i)}))),n.add(e.onDidTriggerSeparatorButton((e=>{let{button:t,separator:i}=e;return l(t,i)}))),n}}var vx,bx,Cx=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Sx=function(e,t){return function(i,o){t(i,o,e)}};let yx=vx=class extends fx{constructor(e,t,i,o,n,s){super(vx.PREFIX,e),this.instantiationService=t,this.keybindingService=i,this.commandService=o,this.telemetryService=n,this.dialogService=s,this.commandsHistory=this._register(this.instantiationService.createInstance(wx)),this.options=e}async _getPicks(e,t,i,o){var n,s,r,a;const l=await this.getCommandPicks(i);if(i.isCancellationRequested)return[];const d=(0,Aw.M)((()=>{const t=new px;t.updateDocuments(l.map((e=>({key:e.commandId,textChunks:[this.getTfIdfChunk(e)]}))));return function(e){var t,i;const o=e.slice(0);o.sort(((e,t)=>t.score-e.score));const n=null!==(i=null===(t=o[0])||void 0===t?void 0:t.score)&&void 0!==i?i:0;if(n>0)for(const s of o)s.score/=n;return o}(t.calculateScores(e,i)).filter((e=>e.score>vx.TFIDF_THRESHOLD)).slice(0,vx.TFIDF_MAX_RESULTS)})),c=[];for(const _ of l){const t=null!==(n=vx.WORD_FILTER(e,_.label))&&void 0!==n?n:void 0,o=_.commandAlias&&null!==(s=vx.WORD_FILTER(e,_.commandAlias))&&void 0!==s?s:void 0;if(t||o)_.highlights={label:t,detail:this.options.showAlias?o:void 0},c.push(_);else if(e===_.commandId)c.push(_);else if(e.length>=3){const e=d();if(i.isCancellationRequested)return[];const t=e.find((e=>e.key===_.commandId));t&&(_.tfIdfScore=t.score,c.push(_))}}const h=new Map;for(const _ of c){const e=h.get(_.label);e?(_.description=_.commandId,e.description=e.commandId):h.set(_.label,_)}c.sort(((e,t)=>{if(e.tfIdfScore&&t.tfIdfScore)return e.tfIdfScore===t.tfIdfScore?e.label.localeCompare(t.label):t.tfIdfScore-e.tfIdfScore;if(e.tfIdfScore)return 1;if(t.tfIdfScore)return-1;const i=this.commandsHistory.peek(e.commandId),o=this.commandsHistory.peek(t.commandId);if(i&&o)return i>o?-1:1;if(i)return-1;if(o)return 1;if(this.options.suggestedCommandIds){const i=this.options.suggestedCommandIds.has(e.commandId),o=this.options.suggestedCommandIds.has(t.commandId);if(i&&o)return 0;if(i)return-1;if(o)return 1}return e.label.localeCompare(t.label)}));const u=[];let g=!1,p=!0,m=!!this.options.suggestedCommandIds;for(let _=0;_<c.length;_++){const e=c[_];0===_&&this.commandsHistory.peek(e.commandId)&&(u.push({type:"separator",label:(0,ne.NC)("recentlyUsed","recently used")}),g=!0),p&&void 0!==e.tfIdfScore&&(u.push({type:"separator",label:(0,ne.NC)("suggested","similar commands")}),p=!1),m&&void 0===e.tfIdfScore&&!this.commandsHistory.peek(e.commandId)&&(null===(r=this.options.suggestedCommandIds)||void 0===r?void 0:r.has(e.commandId))&&(u.push({type:"separator",label:(0,ne.NC)("commonlyUsed","commonly used")}),g=!0,m=!1),!g||void 0!==e.tfIdfScore||this.commandsHistory.peek(e.commandId)||(null===(a=this.options.suggestedCommandIds)||void 0===a?void 0:a.has(e.commandId))||(u.push({type:"separator",label:(0,ne.NC)("morecCommands","other commands")}),g=!1),u.push(this.toCommandPick(e,o))}return this.hasAdditionalCommandPicks(e,i)?{picks:u,additionalPicks:(async()=>{var t;const n=await this.getAdditionalCommandPicks(l,c,e,i);if(i.isCancellationRequested)return[];const s=n.map((e=>this.toCommandPick(e,o)));return p&&"separator"!==(null===(t=s[0])||void 0===t?void 0:t.type)&&s.unshift({type:"separator",label:(0,ne.NC)("suggested","similar commands")}),s})()}:u}toCommandPick(e,t){if("separator"===e.type)return e;const i=this.keybindingService.lookupKeybinding(e.commandId),o=i?(0,ne.NC)("commandPickAriaLabelWithKeybinding","{0}, {1}",e.label,i.getAriaLabel()):e.label;return{...e,ariaLabel:o,detail:this.options.showAlias&&e.commandAlias!==e.label?e.commandAlias:void 0,keybinding:i,accept:async()=>{var i,o;this.commandsHistory.push(e.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.commandId,from:null!==(i=null===t||void 0===t?void 0:t.from)&&void 0!==i?i:"quick open"});try{(null===(o=e.args)||void 0===o?void 0:o.length)?await this.commandService.executeCommand(e.commandId,...e.args):await this.commandService.executeCommand(e.commandId)}catch(n){(0,Ji.n2)(n)||this.dialogService.error((0,ne.NC)("canNotRun","Command '{0}' resulted in an error",e.label),gx(n))}}}}getTfIdfChunk(e){let{label:t,commandAlias:i,commandDescription:o}=e,n=t;return i&&i!==t&&(n+=" - ".concat(i)),o&&o.value!==t&&(n+=" - ".concat(o.value===o.original?o.value:"".concat(o.value," (").concat(o.original,")"))),n}};yx.PREFIX=">",yx.TFIDF_THRESHOLD=.5,yx.TFIDF_MAX_RESULTS=5,yx.WORD_FILTER=(0,Fr.or)(Fr.Ji,Fr.KZ,Fr.ir),yx=vx=Cx([Sx(1,ni.TG),Sx(2,ki.d),Sx(3,ye.H),Sx(4,eo.b),Sx(5,Ey.S)],yx);let wx=bx=class extends Fe.JT{constructor(e,t,i){super(),this.storageService=e,this.configurationService=t,this.logService=i,this.configuredCommandsHistoryLength=0,this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration((e=>this.updateConfiguration(e)))),this._register(this.storageService.onWillSaveState((e=>{e.reason===Mn.fk.SHUTDOWN&&this.saveState()})))}updateConfiguration(e){e&&!e.affectsConfiguration("workbench.commandPalette.history")||(this.configuredCommandsHistoryLength=bx.getConfiguredCommandHistoryLength(this.configurationService),bx.cache&&bx.cache.limit!==this.configuredCommandsHistoryLength&&(bx.cache.limit=this.configuredCommandsHistoryLength,bx.hasChanges=!0))}load(){const e=this.storageService.get(bx.PREF_KEY_CACHE,0);let t;if(e)try{t=JSON.parse(e)}catch(o){this.logService.error("[CommandsHistory] invalid data: ".concat(o))}const i=bx.cache=new Pn.z6(this.configuredCommandsHistoryLength,1);if(t){let e;e=t.usesLRU?t.entries:t.entries.sort(((e,t)=>e.value-t.value)),e.forEach((e=>i.set(e.key,e.value)))}bx.counter=this.storageService.getNumber(bx.PREF_KEY_COUNTER,0,bx.counter)}push(e){bx.cache&&(bx.cache.set(e,bx.counter++),bx.hasChanges=!0)}peek(e){var t;return null===(t=bx.cache)||void 0===t?void 0:t.peek(e)}saveState(){if(!bx.cache)return;if(!bx.hasChanges)return;const e={usesLRU:!0,entries:[]};bx.cache.forEach(((t,i)=>e.entries.push({key:i,value:t}))),this.storageService.store(bx.PREF_KEY_CACHE,JSON.stringify(e),0,0),this.storageService.store(bx.PREF_KEY_COUNTER,bx.counter,0,0),bx.hasChanges=!1}static getConfiguredCommandHistoryLength(e){var t,i;const o=null===(i=null===(t=e.getValue().workbench)||void 0===t?void 0:t.commandPalette)||void 0===i?void 0:i.history;return"number"===typeof o?o:bx.DEFAULT_COMMANDS_HISTORY_LENGTH}};wx.DEFAULT_COMMANDS_HISTORY_LENGTH=50,wx.PREF_KEY_CACHE="commandPalette.mru.cache",wx.PREF_KEY_COUNTER="commandPalette.mru.counter",wx.counter=1,wx.hasChanges=!1,wx=bx=Cx([Sx(0,Mn.Uy),Sx(1,re.Ui),Sx(2,qp.VZ)],wx);class xx extends yx{constructor(e,t,i,o,n,s){super(e,t,i,o,n,s)}getCodeEditorCommandPicks(){const e=this.activeTextEditorControl;if(!e)return[];const t=[];for(const i of e.getSupportedActions())t.push({commandId:i.id,commandAlias:i.alias,label:(0,dx.x$)(i.label)||i.id});return t}}var Nx=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Lx=function(e,t){return function(i,o){t(i,o,e)}};let kx=class extends xx{get activeTextEditorControl(){var e;return null!==(e=this.codeEditorService.getFocusedCodeEditor())&&void 0!==e?e:void 0}constructor(e,t,i,o,n,s){super({showAlias:!1},e,i,o,n,s),this.codeEditorService=t}async getCommandPicks(){return this.getCodeEditorCommandPicks()}hasAdditionalCommandPicks(){return!1}async getAdditionalCommandPicks(){return[]}};kx=Nx([Lx(0,ni.TG),Lx(1,te.$),Lx(2,ki.d),Lx(3,ye.H),Lx(4,eo.b),Lx(5,Ey.S)],kx);class Dx extends ee.R6{constructor(){super({id:Dx.ID,label:vw.UX.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:oe.u.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}run(e){e.get(wi.eJ).quickAccess.show(kx.PREFIX)}}Dx.ID="editor.action.quickCommand",(0,ee.Qr)(Dx),ft.B.as(Pw.IP.Quickaccess).registerQuickAccessProvider({ctor:kx,prefix:kx.PREFIX,helpEntries:[{description:vw.UX.quickCommandHelp,commandId:Dx.ID}]});var Ix=function(e,t,i,o){var n,s=arguments.length,r=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(r=(s<3?n(r):s>3?n(t,i,r):n(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r},Rx=function(e,t){return function(i,o){t(i,o,e)}};let Px=class extends la{constructor(e,t,i,o,n,s,r){super(!0,e,t,i,o,n,s,r)}};Px=Ix([Rx(1,ae.i6),Rx(2,te.$),Rx(3,Xi.lT),Rx(4,ni.TG),Rx(5,Mn.Uy),Rx(6,re.Ui)],Px),(0,ee._K)(la.ID,Px,4);var Mx=i(16049);class Tx extends ee.R6{constructor(){super({id:"editor.action.toggleHighContrast",label:vw.xi.toggleHighContrast,alias:"Toggle High Contrast Theme",precondition:void 0}),this._originalThemeName=null}run(e,t){const i=e.get(xw.Z),o=i.getColorTheme();(0,nn.c3)(o.type)?(i.setTheme(this._originalThemeName||((0,nn._T)(o.type)?Mx.rW:Mx.TG)),this._originalThemeName=null):(i.setTheme((0,nn._T)(o.type)?Mx.kR:Mx.MU),this._originalThemeName=o.themeName)}}(0,ee.Qr)(Tx)},13746:(e,t,i)=>{i.d(t,{TG:()=>b});var o,n,s=i(41551),r=Object.defineProperty,a=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,d=Object.prototype.hasOwnProperty,c=(e,t,i,o)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let n of l(t))d.call(e,n)||n===i||r(e,n,{get:()=>t[n],enumerable:!(o=a(t,n))||o.enumerable});return e},h={};c(h,o=s,"default"),n&&c(n,o,"default");var u=(e=>(e[e.None=0]="None",e[e.CommonJS=1]="CommonJS",e[e.AMD=2]="AMD",e[e.UMD=3]="UMD",e[e.System=4]="System",e[e.ES2015=5]="ES2015",e[e.ESNext=99]="ESNext",e))(u||{}),g=(e=>(e[e.None=0]="None",e[e.Preserve=1]="Preserve",e[e.React=2]="React",e[e.ReactNative=3]="ReactNative",e[e.ReactJSX=4]="ReactJSX",e[e.ReactJSXDev=5]="ReactJSXDev",e))(g||{}),p=(e=>(e[e.CarriageReturnLineFeed=0]="CarriageReturnLineFeed",e[e.LineFeed=1]="LineFeed",e))(p||{}),m=(e=>(e[e.ES3=0]="ES3",e[e.ES5=1]="ES5",e[e.ES2015=2]="ES2015",e[e.ES2016=3]="ES2016",e[e.ES2017=4]="ES2017",e[e.ES2018=5]="ES2018",e[e.ES2019=6]="ES2019",e[e.ES2020=7]="ES2020",e[e.ESNext=99]="ESNext",e[e.JSON=100]="JSON",e[e.Latest=99]="Latest",e))(m||{}),_=(e=>(e[e.Classic=1]="Classic",e[e.NodeJs=2]="NodeJs",e))(_||{}),f=class{constructor(e,t,i,o,n){this._onDidChange=new h.Emitter,this._onDidExtraLibsChange=new h.Emitter,this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(e),this.setDiagnosticsOptions(t),this.setWorkerOptions(i),this.setInlayHintsOptions(o),this.setModeConfiguration(n),this._onDidExtraLibsChangeTimeout=-1}get onDidChange(){return this._onDidChange.event}get onDidExtraLibsChange(){return this._onDidExtraLibsChange.event}get modeConfiguration(){return this._modeConfiguration}get workerOptions(){return this._workerOptions}get inlayHintsOptions(){return this._inlayHintsOptions}getExtraLibs(){return this._extraLibs}addExtraLib(e,t){let i;if(i="undefined"===typeof t?"ts:extralib-".concat(Math.random().toString(36).substring(2,15)):t,this._extraLibs[i]&&this._extraLibs[i].content===e)return{dispose:()=>{}};let o=1;return this._removedExtraLibs[i]&&(o=this._removedExtraLibs[i]+1),this._extraLibs[i]&&(o=this._extraLibs[i].version+1),this._extraLibs[i]={content:e,version:o},this._fireOnDidExtraLibsChangeSoon(),{dispose:()=>{let e=this._extraLibs[i];e&&e.version===o&&(delete this._extraLibs[i],this._removedExtraLibs[i]=o,this._fireOnDidExtraLibsChangeSoon())}}}setExtraLibs(e){for(const t in this._extraLibs)this._removedExtraLibs[t]=this._extraLibs[t].version;if(this._extraLibs=Object.create(null),e&&e.length>0)for(const t of e){const e=t.filePath||"ts:extralib-".concat(Math.random().toString(36).substring(2,15)),i=t.content;let o=1;this._removedExtraLibs[e]&&(o=this._removedExtraLibs[e]+1),this._extraLibs[e]={content:i,version:o}}this._fireOnDidExtraLibsChangeSoon()}_fireOnDidExtraLibsChangeSoon(){-1===this._onDidExtraLibsChangeTimeout&&(this._onDidExtraLibsChangeTimeout=window.setTimeout((()=>{this._onDidExtraLibsChangeTimeout=-1,this._onDidExtraLibsChange.fire(void 0)}),0))}getCompilerOptions(){return this._compilerOptions}setCompilerOptions(e){this._compilerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}getDiagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setWorkerOptions(e){this._workerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setInlayHintsOptions(e){this._inlayHintsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setMaximumWorkerIdleTime(e){}setEagerModelSync(e){this._eagerModelSync=e}getEagerModelSync(){return this._eagerModelSync}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(void 0)}},v={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,diagnostics:!0,documentRangeFormattingEdits:!0,signatureHelp:!0,onTypeFormattingEdits:!0,codeActions:!0,inlayHints:!0},b=new f({allowNonTsExtensions:!0,target:99},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{},{},v),C=new f({allowNonTsExtensions:!0,allowJs:!0,target:99},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{},{},v);function S(){return i.e(4789).then(i.bind(i,14789))}h.languages.typescript={ModuleKind:u,JsxEmit:g,NewLineKind:p,ScriptTarget:m,ModuleResolutionKind:_,typescriptVersion:"5.0.2",typescriptDefaults:b,javascriptDefaults:C,getTypeScriptWorker:()=>S().then((e=>e.getTypeScriptWorker())),getJavaScriptWorker:()=>S().then((e=>e.getJavaScriptWorker()))},h.languages.onLanguage("typescript",(()=>S().then((e=>e.setupTypeScript(b))))),h.languages.onLanguage("javascript",(()=>S().then((e=>e.setupJavaScript(C)))))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8424.5b5c42b5.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/8424.5b5c42b5.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8424.5b5c42b5.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/8450.baf3a89d.chunk.js b/ydb/core/viewer/monitoring/static/js/8450.baf3a89d.chunk.js new file mode 100644 index 000000000000..cdfc7967802c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8450.baf3a89d.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 8450.baf3a89d.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8450],{58450:(e,t,i)=>{i.r(t),i.d(t,{conf:()=>o,language:()=>n});var o={comments:{lineComment:"COMMENT"},brackets:[["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:":",close:"."}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`"},{open:'"',close:'"'},{open:"'",close:"'"},{open:":",close:"."}],folding:{markers:{start:new RegExp("^\\s*(::\\s*|COMMENT\\s+)#region"),end:new RegExp("^\\s*(::\\s*|COMMENT\\s+)#endregion")}}},n={tokenPostfix:".lexon",ignoreCase:!0,keywords:["lexon","lex","clause","terms","contracts","may","pay","pays","appoints","into","to"],typeKeywords:["amount","person","key","time","date","asset","text"],operators:["less","greater","equal","le","gt","or","and","add","added","subtract","subtracted","multiply","multiplied","times","divide","divided","is","be","certified"],symbols:/[=><!~?:&|+\-*\/\^%]+/,tokenizer:{root:[[/^(\s*)(comment:?(?:\s.*|))$/,["","comment"]],[/"/,{token:"identifier.quote",bracket:"@open",next:"@quoted_identifier"}],["LEX$",{token:"keyword",bracket:"@open",next:"@identifier_until_period"}],["LEXON",{token:"keyword",bracket:"@open",next:"@semver"}],[":",{token:"delimiter",bracket:"@open",next:"@identifier_until_period"}],[/[a-z_$][\w$]*/,{cases:{"@operators":"operator","@typeKeywords":"keyword.type","@keywords":"keyword","@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\.\d*\.\d*/,"number.semver"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"]],quoted_identifier:[[/[^\\"]+/,"identifier"],[/"/,{token:"identifier.quote",bracket:"@close",next:"@pop"}]],space_identifier_until_period:[[":","delimiter"],[" ",{token:"white",next:"@identifier_rest"}]],identifier_until_period:[{include:"@whitespace"},[":",{token:"delimiter",next:"@identifier_rest"}],[/[^\\.]+/,"identifier"],[/\./,{token:"delimiter",bracket:"@close",next:"@pop"}]],identifier_rest:[[/[^\\.]+/,"identifier"],[/\./,{token:"delimiter",bracket:"@close",next:"@pop"}]],semver:[{include:"@whitespace"},[":","delimiter"],[/\d*\.\d*\.\d*/,{token:"number.semver",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8450.baf3a89d.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/8450.baf3a89d.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8450.baf3a89d.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/8520.616efa9f.chunk.js b/ydb/core/viewer/monitoring/static/js/8520.616efa9f.chunk.js deleted file mode 100644 index fb903e029b22..000000000000 --- a/ydb/core/viewer/monitoring/static/js/8520.616efa9f.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8520],{18520:function(_,e,E){E.r(e),E.d(e,{conf:function(){return t},language:function(){return T}});var t={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},T={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["A","ABORT","ABS","ABSENT","ABSOLUTE","ACCESS","ACCORDING","ACTION","ADA","ADD","ADMIN","AFTER","AGGREGATE","ALL","ALLOCATE","ALSO","ALTER","ALWAYS","ANALYSE","ANALYZE","AND","ANY","ARE","ARRAY","ARRAY_AGG","ARRAY_MAX_CARDINALITY","AS","ASC","ASENSITIVE","ASSERTION","ASSIGNMENT","ASYMMETRIC","AT","ATOMIC","ATTRIBUTE","ATTRIBUTES","AUTHORIZATION","AVG","BACKWARD","BASE64","BEFORE","BEGIN","BEGIN_FRAME","BEGIN_PARTITION","BERNOULLI","BETWEEN","BIGINT","BINARY","BIT","BIT_LENGTH","BLOB","BLOCKED","BOM","BOOLEAN","BOTH","BREADTH","BY","C","CACHE","CALL","CALLED","CARDINALITY","CASCADE","CASCADED","CASE","CAST","CATALOG","CATALOG_NAME","CEIL","CEILING","CHAIN","CHAR","CHARACTER","CHARACTERISTICS","CHARACTERS","CHARACTER_LENGTH","CHARACTER_SET_CATALOG","CHARACTER_SET_NAME","CHARACTER_SET_SCHEMA","CHAR_LENGTH","CHECK","CHECKPOINT","CLASS","CLASS_ORIGIN","CLOB","CLOSE","CLUSTER","COALESCE","COBOL","COLLATE","COLLATION","COLLATION_CATALOG","COLLATION_NAME","COLLATION_SCHEMA","COLLECT","COLUMN","COLUMNS","COLUMN_NAME","COMMAND_FUNCTION","COMMAND_FUNCTION_CODE","COMMENT","COMMENTS","COMMIT","COMMITTED","CONCURRENTLY","CONDITION","CONDITION_NUMBER","CONFIGURATION","CONFLICT","CONNECT","CONNECTION","CONNECTION_NAME","CONSTRAINT","CONSTRAINTS","CONSTRAINT_CATALOG","CONSTRAINT_NAME","CONSTRAINT_SCHEMA","CONSTRUCTOR","CONTAINS","CONTENT","CONTINUE","CONTROL","CONVERSION","CONVERT","COPY","CORR","CORRESPONDING","COST","COUNT","COVAR_POP","COVAR_SAMP","CREATE","CROSS","CSV","CUBE","CUME_DIST","CURRENT","CURRENT_CATALOG","CURRENT_DATE","CURRENT_DEFAULT_TRANSFORM_GROUP","CURRENT_PATH","CURRENT_ROLE","CURRENT_ROW","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TRANSFORM_GROUP_FOR_TYPE","CURRENT_USER","CURSOR","CURSOR_NAME","CYCLE","DATA","DATABASE","DATALINK","DATE","DATETIME_INTERVAL_CODE","DATETIME_INTERVAL_PRECISION","DAY","DB","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFAULTS","DEFERRABLE","DEFERRED","DEFINED","DEFINER","DEGREE","DELETE","DELIMITER","DELIMITERS","DENSE_RANK","DEPENDS","DEPTH","DEREF","DERIVED","DESC","DESCRIBE","DESCRIPTOR","DETERMINISTIC","DIAGNOSTICS","DICTIONARY","DISABLE","DISCARD","DISCONNECT","DISPATCH","DISTINCT","DLNEWCOPY","DLPREVIOUSCOPY","DLURLCOMPLETE","DLURLCOMPLETEONLY","DLURLCOMPLETEWRITE","DLURLPATH","DLURLPATHONLY","DLURLPATHWRITE","DLURLSCHEME","DLURLSERVER","DLVALUE","DO","DOCUMENT","DOMAIN","DOUBLE","DROP","DYNAMIC","DYNAMIC_FUNCTION","DYNAMIC_FUNCTION_CODE","EACH","ELEMENT","ELSE","EMPTY","ENABLE","ENCODING","ENCRYPTED","END","END-EXEC","END_FRAME","END_PARTITION","ENFORCED","ENUM","EQUALS","ESCAPE","EVENT","EVERY","EXCEPT","EXCEPTION","EXCLUDE","EXCLUDING","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXP","EXPLAIN","EXPRESSION","EXTENSION","EXTERNAL","EXTRACT","FALSE","FAMILY","FETCH","FILE","FILTER","FINAL","FIRST","FIRST_VALUE","FLAG","FLOAT","FLOOR","FOLLOWING","FOR","FORCE","FOREIGN","FORTRAN","FORWARD","FOUND","FRAME_ROW","FREE","FREEZE","FROM","FS","FULL","FUNCTION","FUNCTIONS","FUSION","G","GENERAL","GENERATED","GET","GLOBAL","GO","GOTO","GRANT","GRANTED","GREATEST","GROUP","GROUPING","GROUPS","HANDLER","HAVING","HEADER","HEX","HIERARCHY","HOLD","HOUR","ID","IDENTITY","IF","IGNORE","ILIKE","IMMEDIATE","IMMEDIATELY","IMMUTABLE","IMPLEMENTATION","IMPLICIT","IMPORT","IN","INCLUDING","INCREMENT","INDENT","INDEX","INDEXES","INDICATOR","INHERIT","INHERITS","INITIALLY","INLINE","INNER","INOUT","INPUT","INSENSITIVE","INSERT","INSTANCE","INSTANTIABLE","INSTEAD","INT","INTEGER","INTEGRITY","INTERSECT","INTERSECTION","INTERVAL","INTO","INVOKER","IS","ISNULL","ISOLATION","JOIN","K","KEY","KEY_MEMBER","KEY_TYPE","LABEL","LAG","LANGUAGE","LARGE","LAST","LAST_VALUE","LATERAL","LEAD","LEADING","LEAKPROOF","LEAST","LEFT","LENGTH","LEVEL","LIBRARY","LIKE","LIKE_REGEX","LIMIT","LINK","LISTEN","LN","LOAD","LOCAL","LOCALTIME","LOCALTIMESTAMP","LOCATION","LOCATOR","LOCK","LOCKED","LOGGED","LOWER","M","MAP","MAPPING","MATCH","MATCHED","MATERIALIZED","MAX","MAXVALUE","MAX_CARDINALITY","MEMBER","MERGE","MESSAGE_LENGTH","MESSAGE_OCTET_LENGTH","MESSAGE_TEXT","METHOD","MIN","MINUTE","MINVALUE","MOD","MODE","MODIFIES","MODULE","MONTH","MORE","MOVE","MULTISET","MUMPS","NAME","NAMES","NAMESPACE","NATIONAL","NATURAL","NCHAR","NCLOB","NESTING","NEW","NEXT","NFC","NFD","NFKC","NFKD","NIL","NO","NONE","NORMALIZE","NORMALIZED","NOT","NOTHING","NOTIFY","NOTNULL","NOWAIT","NTH_VALUE","NTILE","NULL","NULLABLE","NULLIF","NULLS","NUMBER","NUMERIC","OBJECT","OCCURRENCES_REGEX","OCTETS","OCTET_LENGTH","OF","OFF","OFFSET","OIDS","OLD","ON","ONLY","OPEN","OPERATOR","OPTION","OPTIONS","OR","ORDER","ORDERING","ORDINALITY","OTHERS","OUT","OUTER","OUTPUT","OVER","OVERLAPS","OVERLAY","OVERRIDING","OWNED","OWNER","P","PAD","PARALLEL","PARAMETER","PARAMETER_MODE","PARAMETER_NAME","PARAMETER_ORDINAL_POSITION","PARAMETER_SPECIFIC_CATALOG","PARAMETER_SPECIFIC_NAME","PARAMETER_SPECIFIC_SCHEMA","PARSER","PARTIAL","PARTITION","PASCAL","PASSING","PASSTHROUGH","PASSWORD","PATH","PERCENT","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","PERIOD","PERMISSION","PLACING","PLANS","PLI","POLICY","PORTION","POSITION","POSITION_REGEX","POWER","PRECEDES","PRECEDING","PRECISION","PREPARE","PREPARED","PRESERVE","PRIMARY","PRIOR","PRIVILEGES","PROCEDURAL","PROCEDURE","PROGRAM","PUBLIC","QUOTE","RANGE","RANK","READ","READS","REAL","REASSIGN","RECHECK","RECOVERY","RECURSIVE","REF","REFERENCES","REFERENCING","REFRESH","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","REINDEX","RELATIVE","RELEASE","RENAME","REPEATABLE","REPLACE","REPLICA","REQUIRING","RESET","RESPECT","RESTART","RESTORE","RESTRICT","RESULT","RETURN","RETURNED_CARDINALITY","RETURNED_LENGTH","RETURNED_OCTET_LENGTH","RETURNED_SQLSTATE","RETURNING","RETURNS","REVOKE","RIGHT","ROLE","ROLLBACK","ROLLUP","ROUTINE","ROUTINE_CATALOG","ROUTINE_NAME","ROUTINE_SCHEMA","ROW","ROWS","ROW_COUNT","ROW_NUMBER","RULE","SAVEPOINT","SCALE","SCHEMA","SCHEMA_NAME","SCOPE","SCOPE_CATALOG","SCOPE_NAME","SCOPE_SCHEMA","SCROLL","SEARCH","SECOND","SECTION","SECURITY","SELECT","SELECTIVE","SELF","SENSITIVE","SEQUENCE","SEQUENCES","SERIALIZABLE","SERVER","SERVER_NAME","SESSION","SESSION_USER","SET","SETOF","SETS","SHARE","SHOW","SIMILAR","SIMPLE","SIZE","SKIP","SMALLINT","SNAPSHOT","SOME","SOURCE","SPACE","SPECIFIC","SPECIFICTYPE","SPECIFIC_NAME","SQL","SQLCODE","SQLERROR","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQRT","STABLE","STANDALONE","START","STATE","STATEMENT","STATIC","STATISTICS","STDDEV_POP","STDDEV_SAMP","STDIN","STDOUT","STORAGE","STRICT","STRIP","STRUCTURE","STYLE","SUBCLASS_ORIGIN","SUBMULTISET","SUBSTRING","SUBSTRING_REGEX","SUCCEEDS","SUM","SYMMETRIC","SYSID","SYSTEM","SYSTEM_TIME","SYSTEM_USER","T","TABLE","TABLES","TABLESAMPLE","TABLESPACE","TABLE_NAME","TEMP","TEMPLATE","TEMPORARY","TEXT","THEN","TIES","TIME","TIMESTAMP","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TOKEN","TOP_LEVEL_COUNT","TRAILING","TRANSACTION","TRANSACTIONS_COMMITTED","TRANSACTIONS_ROLLED_BACK","TRANSACTION_ACTIVE","TRANSFORM","TRANSFORMS","TRANSLATE","TRANSLATE_REGEX","TRANSLATION","TREAT","TRIGGER","TRIGGER_CATALOG","TRIGGER_NAME","TRIGGER_SCHEMA","TRIM","TRIM_ARRAY","TRUE","TRUNCATE","TRUSTED","TYPE","TYPES","UESCAPE","UNBOUNDED","UNCOMMITTED","UNDER","UNENCRYPTED","UNION","UNIQUE","UNKNOWN","UNLINK","UNLISTEN","UNLOGGED","UNNAMED","UNNEST","UNTIL","UNTYPED","UPDATE","UPPER","URI","USAGE","USER","USER_DEFINED_TYPE_CATALOG","USER_DEFINED_TYPE_CODE","USER_DEFINED_TYPE_NAME","USER_DEFINED_TYPE_SCHEMA","USING","VACUUM","VALID","VALIDATE","VALIDATOR","VALUE","VALUES","VALUE_OF","VARBINARY","VARCHAR","VARIADIC","VARYING","VAR_POP","VAR_SAMP","VERBOSE","VERSION","VERSIONING","VIEW","VIEWS","VOLATILE","WHEN","WHENEVER","WHERE","WHITESPACE","WIDTH_BUCKET","WINDOW","WITH","WITHIN","WITHOUT","WORK","WRAPPER","WRITE","XML","XMLAGG","XMLATTRIBUTES","XMLBINARY","XMLCAST","XMLCOMMENT","XMLCONCAT","XMLDECLARATION","XMLDOCUMENT","XMLELEMENT","XMLEXISTS","XMLFOREST","XMLITERATE","XMLNAMESPACES","XMLPARSE","XMLPI","XMLQUERY","XMLROOT","XMLSCHEMA","XMLSERIALIZE","XMLTABLE","XMLTEXT","XMLVALIDATE","YEAR","YES","ZONE"],operators:["AND","BETWEEN","IN","LIKE","NOT","OR","IS","NULL","INTERSECT","UNION","INNER","JOIN","LEFT","OUTER","RIGHT"],builtinFunctions:["abbrev","abs","acos","acosd","age","any","area","array_agg","array_append","array_cat","array_dims","array_fill","array_length","array_lower","array_ndims","array_position","array_positions","array_prepend","array_remove","array_replace","array_to_json","array_to_string","array_to_tsvector","array_upper","ascii","asin","asind","atan","atan2","atan2d","atand","avg","bit","bit_and","bit_length","bit_or","bool_and","bool_or","bound_box","box","brin_summarize_new_values","broadcast","btrim","cardinality","cbrt","ceil","ceiling","center","char_length","character_length","chr","circle","clock_timestamp","coalesce","col_description","concat","concat_ws","convert","convert_from","convert_to","corr","cos","cosd","cot","cotd","count","covar_pop","covar_samp","cume_dist","current_catalog","current_database","current_date","current_query","current_role","current_schema","current_schemas","current_setting","current_time","current_timestamp","current_user","currval","cursor_to_xml","date_part","date_trunc","decode","degrees","dense_rank","diameter","div","encode","enum_first","enum_last","enum_range","every","exp","extract","family","first_value","floor","format","format_type","generate_series","generate_subscripts","get_bit","get_byte","get_current_ts_config","gin_clean_pending_list","greatest","grouping","has_any_column_privilege","has_column_privilege","has_database_privilege","has_foreign_data_wrapper_privilege","has_function_privilege","has_language_privilege","has_schema_privilege","has_sequence_privilege","has_server_privilege","has_table_privilege","has_tablespace_privilege","has_type_privilege","height","host","hostmask","inet_client_addr","inet_client_port","inet_merge","inet_same_family","inet_server_addr","inet_server_port","initcap","isclosed","isempty","isfinite","isopen","json_agg","json_object","json_object_agg","json_populate_record","json_populate_recordset","json_to_record","json_to_recordset","jsonb_agg","jsonb_object_agg","justify_days","justify_hours","justify_interval","lag","last_value","lastval","lead","least","left","length","line","ln","localtime","localtimestamp","log","lower","lower_inc","lower_inf","lpad","lseg","ltrim","make_date","make_interval","make_time","make_timestamp","make_timestamptz","masklen","max","md5","min","mod","mode","netmask","network","nextval","now","npoints","nth_value","ntile","nullif","num_nonnulls","num_nulls","numnode","obj_description","octet_length","overlay","parse_ident","path","pclose","percent_rank","percentile_cont","percentile_disc","pg_advisory_lock","pg_advisory_lock_shared","pg_advisory_unlock","pg_advisory_unlock_all","pg_advisory_unlock_shared","pg_advisory_xact_lock","pg_advisory_xact_lock_shared","pg_backend_pid","pg_backup_start_time","pg_blocking_pids","pg_cancel_backend","pg_client_encoding","pg_collation_is_visible","pg_column_size","pg_conf_load_time","pg_control_checkpoint","pg_control_init","pg_control_recovery","pg_control_system","pg_conversion_is_visible","pg_create_logical_replication_slot","pg_create_physical_replication_slot","pg_create_restore_point","pg_current_xlog_flush_location","pg_current_xlog_insert_location","pg_current_xlog_location","pg_database_size","pg_describe_object","pg_drop_replication_slot","pg_export_snapshot","pg_filenode_relation","pg_function_is_visible","pg_get_constraintdef","pg_get_expr","pg_get_function_arguments","pg_get_function_identity_arguments","pg_get_function_result","pg_get_functiondef","pg_get_indexdef","pg_get_keywords","pg_get_object_address","pg_get_owned_sequence","pg_get_ruledef","pg_get_serial_sequence","pg_get_triggerdef","pg_get_userbyid","pg_get_viewdef","pg_has_role","pg_identify_object","pg_identify_object_as_address","pg_index_column_has_property","pg_index_has_property","pg_indexam_has_property","pg_indexes_size","pg_is_in_backup","pg_is_in_recovery","pg_is_other_temp_schema","pg_is_xlog_replay_paused","pg_last_committed_xact","pg_last_xact_replay_timestamp","pg_last_xlog_receive_location","pg_last_xlog_replay_location","pg_listening_channels","pg_logical_emit_message","pg_logical_slot_get_binary_changes","pg_logical_slot_get_changes","pg_logical_slot_peek_binary_changes","pg_logical_slot_peek_changes","pg_ls_dir","pg_my_temp_schema","pg_notification_queue_usage","pg_opclass_is_visible","pg_operator_is_visible","pg_opfamily_is_visible","pg_options_to_table","pg_postmaster_start_time","pg_read_binary_file","pg_read_file","pg_relation_filenode","pg_relation_filepath","pg_relation_size","pg_reload_conf","pg_replication_origin_create","pg_replication_origin_drop","pg_replication_origin_oid","pg_replication_origin_progress","pg_replication_origin_session_is_setup","pg_replication_origin_session_progress","pg_replication_origin_session_reset","pg_replication_origin_session_setup","pg_replication_origin_xact_reset","pg_replication_origin_xact_setup","pg_rotate_logfile","pg_size_bytes","pg_size_pretty","pg_sleep","pg_sleep_for","pg_sleep_until","pg_start_backup","pg_stat_file","pg_stop_backup","pg_switch_xlog","pg_table_is_visible","pg_table_size","pg_tablespace_databases","pg_tablespace_location","pg_tablespace_size","pg_terminate_backend","pg_total_relation_size","pg_trigger_depth","pg_try_advisory_lock","pg_try_advisory_lock_shared","pg_try_advisory_xact_lock","pg_try_advisory_xact_lock_shared","pg_ts_config_is_visible","pg_ts_dict_is_visible","pg_ts_parser_is_visible","pg_ts_template_is_visible","pg_type_is_visible","pg_typeof","pg_xact_commit_timestamp","pg_xlog_location_diff","pg_xlog_replay_pause","pg_xlog_replay_resume","pg_xlogfile_name","pg_xlogfile_name_offset","phraseto_tsquery","pi","plainto_tsquery","point","polygon","popen","position","power","pqserverversion","query_to_xml","querytree","quote_ident","quote_literal","quote_nullable","radians","radius","random","range_merge","rank","regexp_matches","regexp_replace","regexp_split_to_array","regexp_split_to_table","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","repeat","replace","reverse","right","round","row_number","row_security_active","row_to_json","rpad","rtrim","scale","session_user","set_bit","set_byte","set_config","set_masklen","setseed","setval","setweight","shobj_description","sign","sin","sind","split_part","sprintf","sqrt","statement_timestamp","stddev","stddev_pop","stddev_samp","string_agg","string_to_array","strip","strpos","substr","substring","sum","table_to_xml","table_to_xml_and_xmlschema","tan","tand","text","timeofday","timezone","to_ascii","to_char","to_date","to_hex","to_json","to_number","to_regclass","to_regnamespace","to_regoper","to_regoperator","to_regproc","to_regprocedure","to_regrole","to_regtype","to_timestamp","to_tsquery","to_tsvector","transaction_timestamp","translate","trim","trunc","ts_debug","ts_delete","ts_filter","ts_headline","ts_lexize","ts_parse","ts_rank","ts_rank_cd","ts_rewrite","ts_stat","ts_token_type","tsquery_phrase","tsvector_to_array","tsvector_update_trigger","tsvector_update_trigger_column","txid_current","txid_current_snapshot","txid_snapshot_xip","txid_snapshot_xmax","txid_snapshot_xmin","txid_visible_in_snapshot","unnest","upper","upper_inc","upper_inf","user","var_pop","var_samp","variance","version","width","width_bucket","xml_is_well_formed","xml_is_well_formed_content","xml_is_well_formed_document","xmlagg","xmlcomment","xmlconcat","xmlelement","xmlexists","xmlforest","xmlparse","xmlpi","xmlroot","xmlserialize","xpath","xpath_exists"],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/"/,{token:"identifier.quote",next:"@quotedIdentifier"}]],quotedIdentifier:[[/[^"]+/,"identifier"],[/""/,"identifier"],[/"/,{token:"identifier.quote",next:"@pop"}]],scopes:[]}}}}]); -//# sourceMappingURL=8520.616efa9f.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8546.79cce20d.chunk.js b/ydb/core/viewer/monitoring/static/js/8546.79cce20d.chunk.js deleted file mode 100644 index 37e2fdd3d651..000000000000 --- a/ydb/core/viewer/monitoring/static/js/8546.79cce20d.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8546],{38546:function(e,t,n){n.r(t),n.d(t,{TopPanel:function(){return O}});var l=n(29439),a=n(4519),i=n(84480),o=n(20970),r=n(133),c=n(67119),s=(0,c.Ge)("card"),d=a.forwardRef((function(e,t){var n=e.type,l=void 0===n?"container":n,i=e.theme,o=e.view,c=e.size,d=void 0===c?"m":c,u=e.children,v=e.className,m=e.onClick,f=e.disabled,p=e.selected,w=e.style,g=e.qa,h="selection"===l,E="container"===l,y=("action"===l||h)&&Boolean(m)&&!(f||p),b=E?"normal":void 0,Z=E||h?"outlined":void 0,x=y?m:void 0,C=(0,r.b)(m).onKeyDown;return a.createElement("div",{style:w,ref:t,role:y?"button":void 0,className:s({theme:i||b,view:o||Z,type:l,selected:p,size:d,disabled:f,clickable:y},v),onClick:x,onKeyDown:y?C:void 0,tabIndex:y?0:void 0,"data-qa":g},u)})),u=n(88216),v=n(12490),m=n(4452),f=(0,c.Ge)("s"),p=function(e,t){var n=[];for(var l in e)if(Object.prototype.hasOwnProperty.call(e,l)){var a=e[l];"undefined"!==typeof a&&n.push(f("".concat(l,"_").concat((0,m.cA)(a))))}return t&&n.push(t),n.join(" ")},w=n(11598),g=(0,c.Ge)("alert"),h=function(e){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z",clipRule:"evenodd"}))},E=function(e){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M13.5 8a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z",clipRule:"evenodd"}))},y=function(e){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM8 7.75a.75.75 0 0 1 .75.75V11a.75.75 0 0 1-1.5 0V8.5A.75.75 0 0 1 8 7.75Z",clipRule:"evenodd"}))},b=n(72697),Z=function(e){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3.1-8.55a.75.75 0 1 0-1.2-.9L7.419 8.858 6.03 7.47a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.13-.08l3-4Z",clipRule:"evenodd"}))},x=n(96434),C=function(e){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.836 2.244c.962-1.665 3.366-1.665 4.328 0l4.917 8.505c.964 1.666-.239 3.751-2.164 3.751H3.083c-1.925 0-3.128-2.085-2.164-3.751l4.917-8.505ZM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 1 1-1.5 0v-2A.75.75 0 0 1 8 5Zm1 5.75a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z",clipRule:"evenodd"}))},k=n(82024),A=function(e){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",d:"m14.61 6.914-7.632 8.08a1.614 1.614 0 0 1-2.69-1.66L5.5 10H2.677A1.677 1.677 0 0 1 1.12 7.7l2.323-5.807A2.216 2.216 0 0 1 5.5.5h4c.968 0 1.637.967 1.298 1.873L10 4.5h3.569a1.431 1.431 0 0 1 1.04 2.414Z"}))},L=n(15557),N={danger:{filled:h,outlined:E},info:{filled:y,outlined:b.Z},positive:{filled:Z,outlined:x.Z},success:{filled:Z,outlined:x.Z},warning:{filled:C,outlined:k.Z},utility:{filled:A,outlined:L.Z},normal:null},z=n(92673),R=function e(t){var n=t.theme,l=void 0===n?"normal":n,r=t.view,c=void 0===r?"filled":r,s=t.layout,m=void 0===s?"vertical":s,f=t.message,h=t.className,E=t.corners,y=t.style,b=t.onClose,Z=t.align,x=t.qa,C=t.icon||a.createElement(e.Icon,{theme:l,view:c}),k="string"===typeof t.title?a.createElement(e.Title,{text:t.title}):t.title,A=Array.isArray(t.actions)?a.createElement(e.Actions,{items:t.actions,parentLayout:m}):t.actions;return a.createElement(d,{style:y,className:g({corners:E},p({py:4,px:5},h)),theme:l,view:c,qa:x},a.createElement(w.k,{gap:"3",alignItems:Z},C,a.createElement(w.k,{direction:"vertical"===m?"column":"row",gap:"5",grow:!0},a.createElement(w.k,{gap:"2",grow:!0,className:g("text-content")},a.createElement(w.k,{direction:"column",gap:"1",grow:!0,justifyContent:Z},k,f)),A),b&&a.createElement(o.z,{view:"flat",onClick:b},a.createElement(u.J,{data:i.Z,size:18,className:(0,v.V)({color:"secondary"})}))))};R.Icon=function(e){var t,n=e.className,l=e.theme,i=e.view,o=void 0===i?"filled":i,r=e.size,c=void 0===r?18:r,s=N[l];return s?("success"===l?t="positive":"normal"!==l&&(t=l),a.createElement("div",{className:g("icon",(0,v.V)({color:t},n))},a.createElement(u.J,{data:s[o],size:c}))):null},R.Title=function(e){var t=e.text,n=e.className;return a.createElement(z.x,{variant:"subheader-2",className:g("title",n)},t)},R.Actions=function(e){var t=e.items,n=e.children,l=e.parentLayout,i=void 0===l?"vertical":l,r=e.className;return a.createElement(w.k,{className:g("actions",{minContent:"horizontal"===i},r),direction:"row",gap:"3",wrap:!0,alignItems:"horizontal"===i?"center":"flex-start"},(null===t||void 0===t?void 0:t.map((function(e,t){var n=e.handler,l=e.text;return a.createElement(o.z,{key:t,onClick:n},l)})))||n)};var M=n(44591),j=n(95234),B=(n(50348),function(e){var t=e.topAlert,n=a.useRef(null),i=function(e){var t=a.useState(0),n=(0,l.Z)(t,2),i=n[0],o=n[1];return a.useEffect((function(){if(e.current){var t=e.current;o(t.clientHeight)}}),[e]),i}(n),o=a.useCallback((function(e){var t=document.getElementsByClassName("g-root").item(0);null===t||void 0===t||t.style.setProperty("--gn-aside-top-panel-height",e+"px")}),[]),r=a.useCallback((function(){var e;n.current&&o((null===(e=n.current)||void 0===e?void 0:e.clientHeight)||0)}),[n,o]);return a.useLayoutEffect((function(){var e=(0,j.d)(r,200,{leading:!0});return t&&(window.addEventListener("resize",e),e()),function(){window.removeEventListener("resize",e),o(0)}}),[t,i,n,r,o]),{topRef:n,updateTopSize:r}}),O=function(e){var t=e.topAlert,n=B({topAlert:t}),i=n.topRef,o=n.updateTopSize,r=a.useState(!0),c=(0,l.Z)(r,2),s=c[0],d=c[1],u=a.useCallback((function(){var e;d(!1),null===(e=null===t||void 0===t?void 0:t.onCloseTopAlert)||void 0===e||e.call(t)}),[t]);return a.useEffect((function(){s||o()}),[s,o]),t&&t.message?a.createElement("div",{ref:i,className:(0,M.b)("pane-top",{opened:s})},s&&a.createElement(a.Fragment,null,a.createElement(R,{className:(0,M.b)("pane-top-alert",{centered:t.centered,dense:t.dense}),corners:"square",layout:"horizontal",theme:t.theme||"warning",icon:t.icon,title:t.title,message:t.message,actions:t.actions,onClose:t.closable?u:void 0}),a.createElement("div",{className:(0,M.b)("pane-top-divider")}))):null}}}]); -//# sourceMappingURL=8546.79cce20d.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8558.47b3557b.chunk.js b/ydb/core/viewer/monitoring/static/js/8558.47b3557b.chunk.js deleted file mode 100644 index c3f8996846db..000000000000 --- a/ydb/core/viewer/monitoring/static/js/8558.47b3557b.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8558],{78558:function(e,t,o){o.r(t),o.d(t,{conf:function(){return r},language:function(){return n}});var r={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["{","}"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\{\\$REGION(\\s\\'.*\\')?\\}"),end:new RegExp("^\\s*\\{\\$ENDREGION\\}")}}},n={defaultToken:"",tokenPostfix:".pascal",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["absolute","abstract","all","and_then","array","as","asm","attribute","begin","bindable","case","class","const","contains","default","div","else","end","except","exports","external","far","file","finalization","finally","forward","generic","goto","if","implements","import","in","index","inherited","initialization","interrupt","is","label","library","mod","module","name","near","not","object","of","on","only","operator","or_else","otherwise","override","package","packed","pow","private","program","protected","public","published","interface","implementation","qualified","read","record","resident","requires","resourcestring","restricted","segment","set","shl","shr","specialize","stored","then","threadvar","to","try","type","unit","uses","var","view","virtual","dynamic","overload","reintroduce","with","write","xor","true","false","procedure","function","constructor","destructor","property","break","continue","exit","abort","while","do","for","raise","repeat","until"],typeKeywords:["boolean","double","byte","integer","shortint","char","longint","float","string"],operators:["=",">","<","<=",">=","<>",":",":=","and","or","+","-","*","/","@","&","^","%"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\*\}]+/,"comment"],[/\}/,"comment","@pop"],[/[\{]/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\{/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); -//# sourceMappingURL=8558.47b3557b.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8590.b8446f1d.chunk.js b/ydb/core/viewer/monitoring/static/js/8590.b8446f1d.chunk.js deleted file mode 100644 index cb70442b303c..000000000000 --- a/ydb/core/viewer/monitoring/static/js/8590.b8446f1d.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8590],{18590:function(E,T,S){S.r(T),S.d(T,{conf:function(){return R},language:function(){return A}});var R={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},A={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["ACCESSIBLE","ACCOUNT","ACTION","ADD","AFTER","AGAINST","AGGREGATE","ALGORITHM","ALL","ALTER","ALWAYS","ANALYSE","ANALYZE","AND","ANY","AS","ASC","ASCII","ASENSITIVE","AT","AUTOEXTEND_SIZE","AUTO_INCREMENT","AVG","AVG_ROW_LENGTH","BACKUP","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BINLOG","BIT","BLOB","BLOCK","BOOL","BOOLEAN","BOTH","BTREE","BY","BYTE","CACHE","CALL","CASCADE","CASCADED","CASE","CATALOG_NAME","CHAIN","CHANGE","CHANGED","CHANNEL","CHAR","CHARACTER","CHARSET","CHECK","CHECKSUM","CIPHER","CLASS_ORIGIN","CLIENT","CLOSE","COALESCE","CODE","COLLATE","COLLATION","COLUMN","COLUMNS","COLUMN_FORMAT","COLUMN_NAME","COMMENT","COMMIT","COMMITTED","COMPACT","COMPLETION","COMPRESSED","COMPRESSION","CONCURRENT","CONDITION","CONNECTION","CONSISTENT","CONSTRAINT","CONSTRAINT_CATALOG","CONSTRAINT_NAME","CONSTRAINT_SCHEMA","CONTAINS","CONTEXT","CONTINUE","CONVERT","CPU","CREATE","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","CURSOR_NAME","DATA","DATABASE","DATABASES","DATAFILE","DATE","DATETIME","DAY","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFAULT_AUTH","DEFINER","DELAYED","DELAY_KEY_WRITE","DELETE","DESC","DESCRIBE","DES_KEY_FILE","DETERMINISTIC","DIAGNOSTICS","DIRECTORY","DISABLE","DISCARD","DISK","DISTINCT","DISTINCTROW","DIV","DO","DOUBLE","DROP","DUAL","DUMPFILE","DUPLICATE","DYNAMIC","EACH","ELSE","ELSEIF","ENABLE","ENCLOSED","ENCRYPTION","END","ENDS","ENGINE","ENGINES","ENUM","ERROR","ERRORS","ESCAPE","ESCAPED","EVENT","EVENTS","EVERY","EXCHANGE","EXECUTE","EXISTS","EXIT","EXPANSION","EXPIRE","EXPLAIN","EXPORT","EXTENDED","EXTENT_SIZE","FALSE","FAST","FAULTS","FETCH","FIELDS","FILE","FILE_BLOCK_SIZE","FILTER","FIRST","FIXED","FLOAT","FLOAT4","FLOAT8","FLUSH","FOLLOWS","FOR","FORCE","FOREIGN","FORMAT","FOUND","FROM","FULL","FULLTEXT","FUNCTION","GENERAL","GENERATED","GEOMETRY","GEOMETRYCOLLECTION","GET","GET_FORMAT","GLOBAL","GRANT","GRANTS","GROUP","GROUP_REPLICATION","HANDLER","HASH","HAVING","HELP","HIGH_PRIORITY","HOST","HOSTS","HOUR","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IDENTIFIED","IF","IGNORE","IGNORE_SERVER_IDS","IMPORT","INDEX","INDEXES","INFILE","INITIAL_SIZE","INNER","INOUT","INSENSITIVE","INSERT","INSERT_METHOD","INSTALL","INSTANCE","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","INTERVAL","INTO","INVOKER","IO","IO_AFTER_GTIDS","IO_BEFORE_GTIDS","IO_THREAD","IPC","ISOLATION","ISSUER","ITERATE","JOIN","JSON","KEY","KEYS","KEY_BLOCK_SIZE","KILL","LANGUAGE","LAST","LEADING","LEAVE","LEAVES","LEFT","LESS","LEVEL","LIKE","LIMIT","LINEAR","LINES","LINESTRING","LIST","LOAD","LOCAL","LOCALTIME","LOCALTIMESTAMP","LOCK","LOCKS","LOGFILE","LOGS","LONG","LONGBLOB","LONGTEXT","LOOP","LOW_PRIORITY","MASTER","MASTER_AUTO_POSITION","MASTER_BIND","MASTER_CONNECT_RETRY","MASTER_DELAY","MASTER_HEARTBEAT_PERIOD","MASTER_HOST","MASTER_LOG_FILE","MASTER_LOG_POS","MASTER_PASSWORD","MASTER_PORT","MASTER_RETRY_COUNT","MASTER_SERVER_ID","MASTER_SSL","MASTER_SSL_CA","MASTER_SSL_CAPATH","MASTER_SSL_CERT","MASTER_SSL_CIPHER","MASTER_SSL_CRL","MASTER_SSL_CRLPATH","MASTER_SSL_KEY","MASTER_SSL_VERIFY_SERVER_CERT","MASTER_TLS_VERSION","MASTER_USER","MATCH","MAXVALUE","MAX_CONNECTIONS_PER_HOUR","MAX_QUERIES_PER_HOUR","MAX_ROWS","MAX_SIZE","MAX_STATEMENT_TIME","MAX_UPDATES_PER_HOUR","MAX_USER_CONNECTIONS","MEDIUM","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MEMORY","MERGE","MESSAGE_TEXT","MICROSECOND","MIDDLEINT","MIGRATE","MINUTE","MINUTE_MICROSECOND","MINUTE_SECOND","MIN_ROWS","MOD","MODE","MODIFIES","MODIFY","MONTH","MULTILINESTRING","MULTIPOINT","MULTIPOLYGON","MUTEX","MYSQL_ERRNO","NAME","NAMES","NATIONAL","NATURAL","NCHAR","NDB","NDBCLUSTER","NEVER","NEW","NEXT","NO","NODEGROUP","NONBLOCKING","NONE","NO_WAIT","NO_WRITE_TO_BINLOG","NUMBER","NUMERIC","NVARCHAR","OFFSET","OLD_PASSWORD","ON","ONE","ONLY","OPEN","OPTIMIZE","OPTIMIZER_COSTS","OPTION","OPTIONALLY","OPTIONS","OR","ORDER","OUT","OUTER","OUTFILE","OWNER","PACK_KEYS","PAGE","PARSER","PARSE_GCOL_EXPR","PARTIAL","PARTITION","PARTITIONING","PARTITIONS","PASSWORD","PHASE","PLUGIN","PLUGINS","PLUGIN_DIR","POINT","POLYGON","PORT","PRECEDES","PRECISION","PREPARE","PRESERVE","PREV","PRIMARY","PRIVILEGES","PROCEDURE","PROCESSLIST","PROFILE","PROFILES","PROXY","PURGE","QUARTER","QUERY","QUICK","RANGE","READ","READS","READ_ONLY","READ_WRITE","REAL","REBUILD","RECOVER","REDOFILE","REDO_BUFFER_SIZE","REDUNDANT","REFERENCES","REGEXP","RELAY","RELAYLOG","RELAY_LOG_FILE","RELAY_LOG_POS","RELAY_THREAD","RELEASE","RELOAD","REMOVE","RENAME","REORGANIZE","REPAIR","REPEAT","REPEATABLE","REPLACE","REPLICATE_DO_DB","REPLICATE_DO_TABLE","REPLICATE_IGNORE_DB","REPLICATE_IGNORE_TABLE","REPLICATE_REWRITE_DB","REPLICATE_WILD_DO_TABLE","REPLICATE_WILD_IGNORE_TABLE","REPLICATION","REQUIRE","RESET","RESIGNAL","RESTORE","RESTRICT","RESUME","RETURN","RETURNED_SQLSTATE","RETURNS","REVERSE","REVOKE","RIGHT","RLIKE","ROLLBACK","ROLLUP","ROTATE","ROUTINE","ROW","ROWS","ROW_COUNT","ROW_FORMAT","RTREE","SAVEPOINT","SCHEDULE","SCHEMA","SCHEMAS","SCHEMA_NAME","SECOND","SECOND_MICROSECOND","SECURITY","SELECT","SENSITIVE","SEPARATOR","SERIAL","SERIALIZABLE","SERVER","SESSION","SET","SHARE","SHOW","SHUTDOWN","SIGNAL","SIGNED","SIMPLE","SLAVE","SLOW","SMALLINT","SNAPSHOT","SOCKET","SOME","SONAME","SOUNDS","SOURCE","SPATIAL","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_AFTER_GTIDS","SQL_AFTER_MTS_GAPS","SQL_BEFORE_GTIDS","SQL_BIG_RESULT","SQL_BUFFER_RESULT","SQL_CACHE","SQL_CALC_FOUND_ROWS","SQL_NO_CACHE","SQL_SMALL_RESULT","SQL_THREAD","SQL_TSI_DAY","SQL_TSI_HOUR","SQL_TSI_MINUTE","SQL_TSI_MONTH","SQL_TSI_QUARTER","SQL_TSI_SECOND","SQL_TSI_WEEK","SQL_TSI_YEAR","SSL","STACKED","START","STARTING","STARTS","STATS_AUTO_RECALC","STATS_PERSISTENT","STATS_SAMPLE_PAGES","STATUS","STOP","STORAGE","STORED","STRAIGHT_JOIN","STRING","SUBCLASS_ORIGIN","SUBJECT","SUBPARTITION","SUBPARTITIONS","SUPER","SUSPEND","SWAPS","SWITCHES","TABLE","TABLES","TABLESPACE","TABLE_CHECKSUM","TABLE_NAME","TEMPORARY","TEMPTABLE","TERMINATED","TEXT","THAN","THEN","TIME","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TINYBLOB","TINYINT","TINYTEXT","TO","TRAILING","TRANSACTION","TRIGGER","TRIGGERS","TRUE","TRUNCATE","TYPE","TYPES","UNCOMMITTED","UNDEFINED","UNDO","UNDOFILE","UNDO_BUFFER_SIZE","UNICODE","UNINSTALL","UNION","UNIQUE","UNKNOWN","UNLOCK","UNSIGNED","UNTIL","UPDATE","UPGRADE","USAGE","USE","USER","USER_RESOURCES","USE_FRM","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALIDATION","VALUE","VALUES","VARBINARY","VARCHAR","VARCHARACTER","VARIABLES","VARYING","VIEW","VIRTUAL","WAIT","WARNINGS","WEEK","WEIGHT_STRING","WHEN","WHERE","WHILE","WITH","WITHOUT","WORK","WRAPPER","WRITE","X509","XA","XID","XML","XOR","YEAR","YEAR_MONTH","ZEROFILL"],operators:["AND","BETWEEN","IN","LIKE","NOT","OR","IS","NULL","INTERSECT","UNION","INNER","JOIN","LEFT","OUTER","RIGHT"],builtinFunctions:["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","Area","AsBinary","AsWKB","ASCII","ASIN","AsText","AsWKT","ASYMMETRIC_DECRYPT","ASYMMETRIC_DERIVE","ASYMMETRIC_ENCRYPT","ASYMMETRIC_SIGN","ASYMMETRIC_VERIFY","ATAN","ATAN2","ATAN","AVG","BENCHMARK","BIN","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_XOR","Buffer","CAST","CEIL","CEILING","Centroid","CHAR","CHAR_LENGTH","CHARACTER_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","Contains","CONV","CONVERT","CONVERT_TZ","ConvexHull","COS","COT","COUNT","CRC32","CREATE_ASYMMETRIC_PRIV_KEY","CREATE_ASYMMETRIC_PUB_KEY","CREATE_DH_PARAMETERS","CREATE_DIGEST","Crosses","CURDATE","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEFAULT","DEGREES","DES_DECRYPT","DES_ENCRYPT","Dimension","Disjoint","Distance","ELT","ENCODE","ENCRYPT","EndPoint","Envelope","Equals","EXP","EXPORT_SET","ExteriorRing","EXTRACT","ExtractValue","FIELD","FIND_IN_SET","FLOOR","FORMAT","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GeomCollFromText","GeometryCollectionFromText","GeomCollFromWKB","GeometryCollectionFromWKB","GeometryCollection","GeometryN","GeometryType","GeomFromText","GeometryFromText","GeomFromWKB","GeometryFromWKB","GET_FORMAT","GET_LOCK","GLength","GREATEST","GROUP_CONCAT","GTID_SUBSET","GTID_SUBTRACT","HEX","HOUR","IF","IFNULL","INET_ATON","INET_NTOA","INET6_ATON","INET6_NTOA","INSERT","INSTR","InteriorRingN","Intersects","INTERVAL","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS_USED_LOCK","IsClosed","IsEmpty","ISNULL","IsSimple","JSON_APPEND","JSON_ARRAY","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MERGE","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SEARCH","JSON_SET","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","LAST_INSERT_ID","LCASE","LEAST","LEFT","LENGTH","LineFromText","LineStringFromText","LineFromWKB","LineStringFromWKB","LineString","LN","LOAD_FILE","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","MAKE_SET","MAKEDATE","MAKETIME","MASTER_POS_WAIT","MAX","MBRContains","MBRCoveredBy","MBRCovers","MBRDisjoint","MBREqual","MBREquals","MBRIntersects","MBROverlaps","MBRTouches","MBRWithin","MD5","MICROSECOND","MID","MIN","MINUTE","MLineFromText","MultiLineStringFromText","MLineFromWKB","MultiLineStringFromWKB","MOD","MONTH","MONTHNAME","MPointFromText","MultiPointFromText","MPointFromWKB","MultiPointFromWKB","MPolyFromText","MultiPolygonFromText","MPolyFromWKB","MultiPolygonFromWKB","MultiLineString","MultiPoint","MultiPolygon","NAME_CONST","NOT IN","NOW","NULLIF","NumGeometries","NumInteriorRings","NumPoints","OCT","OCTET_LENGTH","OLD_PASSWORD","ORD","Overlaps","PASSWORD","PERIOD_ADD","PERIOD_DIFF","PI","Point","PointFromText","PointFromWKB","PointN","PolyFromText","PolygonFromText","PolyFromWKB","PolygonFromWKB","Polygon","POSITION","POW","POWER","PROCEDURE ANALYSE","QUARTER","QUOTE","RADIANS","RAND","RANDOM_BYTES","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPEAT","REPLACE","REVERSE","RIGHT","ROUND","ROW_COUNT","RPAD","RTRIM","SCHEMA","SEC_TO_TIME","SECOND","SESSION_USER","SHA1","SHA","SHA2","SIGN","SIN","SLEEP","SOUNDEX","SPACE","SQRT","SRID","ST_Area","ST_AsBinary","ST_AsWKB","ST_AsGeoJSON","ST_AsText","ST_AsWKT","ST_Buffer","ST_Buffer_Strategy","ST_Centroid","ST_Contains","ST_ConvexHull","ST_Crosses","ST_Difference","ST_Dimension","ST_Disjoint","ST_Distance","ST_Distance_Sphere","ST_EndPoint","ST_Envelope","ST_Equals","ST_ExteriorRing","ST_GeoHash","ST_GeomCollFromText","ST_GeometryCollectionFromText","ST_GeomCollFromTxt","ST_GeomCollFromWKB","ST_GeometryCollectionFromWKB","ST_GeometryN","ST_GeometryType","ST_GeomFromGeoJSON","ST_GeomFromText","ST_GeometryFromText","ST_GeomFromWKB","ST_GeometryFromWKB","ST_InteriorRingN","ST_Intersection","ST_Intersects","ST_IsClosed","ST_IsEmpty","ST_IsSimple","ST_IsValid","ST_LatFromGeoHash","ST_Length","ST_LineFromText","ST_LineStringFromText","ST_LineFromWKB","ST_LineStringFromWKB","ST_LongFromGeoHash","ST_MakeEnvelope","ST_MLineFromText","ST_MultiLineStringFromText","ST_MLineFromWKB","ST_MultiLineStringFromWKB","ST_MPointFromText","ST_MultiPointFromText","ST_MPointFromWKB","ST_MultiPointFromWKB","ST_MPolyFromText","ST_MultiPolygonFromText","ST_MPolyFromWKB","ST_MultiPolygonFromWKB","ST_NumGeometries","ST_NumInteriorRing","ST_NumInteriorRings","ST_NumPoints","ST_Overlaps","ST_PointFromGeoHash","ST_PointFromText","ST_PointFromWKB","ST_PointN","ST_PolyFromText","ST_PolygonFromText","ST_PolyFromWKB","ST_PolygonFromWKB","ST_Simplify","ST_SRID","ST_StartPoint","ST_SymDifference","ST_Touches","ST_Union","ST_Validate","ST_Within","ST_X","ST_Y","StartPoint","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","STRCMP","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUBTIME","SUM","SYSDATE","SYSTEM_USER","TAN","TIME","TIME_FORMAT","TIME_TO_SEC","TIMEDIFF","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TO_BASE64","TO_DAYS","TO_SECONDS","Touches","TRIM","TRUNCATE","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UpdateXML","UPPER","USER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","UUID_SHORT","VALIDATE_PASSWORD_STRENGTH","VALUES","VAR_POP","VAR_SAMP","VARIANCE","VERSION","WAIT_FOR_EXECUTED_GTID_SET","WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS","WEEK","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","Within","X","Y","YEAR","YEARWEEK"],builtinVariables:[],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/#+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}],[/"/,{token:"string.double",next:"@stringDouble"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],stringDouble:[[/[^"]+/,"string.double"],[/""/,"string.double"],[/"/,{token:"string.double",next:"@pop"}]],complexIdentifiers:[[/`/,{token:"identifier.quote",next:"@quotedIdentifier"}]],quotedIdentifier:[[/[^`]+/,"identifier"],[/``/,"identifier"],[/`/,{token:"identifier.quote",next:"@pop"}]],scopes:[]}}}}]); -//# sourceMappingURL=8590.b8446f1d.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8591.93172fe9.chunk.js b/ydb/core/viewer/monitoring/static/js/8591.93172fe9.chunk.js new file mode 100644 index 000000000000..d720cec9476f --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8591.93172fe9.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8591],{98591:function(t,_,e){t.exports=function(t){"use strict";function _(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var e=_(t),r={name:"sq",weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),weekStart:1,weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),ordinal:function(t){return t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"}};return e.default.locale(r,null,!0),r}(e(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/86.ad271bdc.chunk.js b/ydb/core/viewer/monitoring/static/js/86.ad271bdc.chunk.js new file mode 100644 index 000000000000..93797a600bf5 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/86.ad271bdc.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 86.ad271bdc.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[86],{10086:(e,n,s)=>{s.r(n),s.d(n,{conf:()=>i,language:()=>t});var i={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">",notIn:["string"]}],surroundingPairs:[{open:"(",close:")"},{open:"[",close:"]"},{open:"`",close:"`"}],folding:{markers:{start:new RegExp("^\\s*\x3c!--\\s*#?region\\b.*--\x3e"),end:new RegExp("^\\s*\x3c!--\\s*#?endregion\\b.*--\x3e")}}},t={defaultToken:"",tokenPostfix:".rst",control:/[\\`*_\[\]{}()#+\-\.!]/,escapes:/\\(?:@control)/,empty:["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param"],alphanumerics:/[A-Za-z0-9]/,simpleRefNameWithoutBq:/(?:@alphanumerics[-_+:.]*@alphanumerics)+|(?:@alphanumerics+)/,simpleRefName:/(?:`@phrase`|@simpleRefNameWithoutBq)/,phrase:/@simpleRefNameWithoutBq(?:\s@simpleRefNameWithoutBq)*/,citationName:/[A-Za-z][A-Za-z0-9-_.]*/,blockLiteralStart:/(?:[!"#$%&'()*+,-./:;<=>?@\[\]^_`{|}~]|[\s])/,precedingChars:/(?:[ -:/'"<([{])/,followingChars:/(?:[ -.,:;!?/'")\]}>]|$)/,punctuation:/(=|-|~|`|#|"|\^|\+|\*|:|\.|'|_|\+)/,tokenizer:{root:[[/^(@punctuation{3,}$){1,1}?/,"keyword"],[/^\s*([\*\-+\u2023\u2022]|[a-zA-Z0-9]+\.|\([a-zA-Z0-9]+\)|[a-zA-Z0-9]+\))\s/,"keyword"],[/([ ]::)\s*$/,"keyword","@blankLineOfLiteralBlocks"],[/(::)\s*$/,"keyword","@blankLineOfLiteralBlocks"],{include:"@tables"},{include:"@explicitMarkupBlocks"},{include:"@inlineMarkup"}],explicitMarkupBlocks:[{include:"@citations"},{include:"@footnotes"},[/^(\.\.\s)(@simpleRefName)(::\s)(.*)$/,[{token:"",next:"subsequentLines"},"keyword","",""]],[/^(\.\.)(\s+)(_)(@simpleRefName)(:)(\s+)(.*)/,[{token:"",next:"hyperlinks"},"","","string.link","","","string.link"]],[/^((?:(?:\.\.)(?:\s+))?)(__)(:)(\s+)(.*)/,[{token:"",next:"subsequentLines"},"","","","string.link"]],[/^(__\s+)(.+)/,["","string.link"]],[/^(\.\.)( \|)([^| ]+[^|]*[^| ]*)(\| )(@simpleRefName)(:: .*)/,[{token:"",next:"subsequentLines"},"","string.link","","keyword",""],"@rawBlocks"],[/(\|)([^| ]+[^|]*[^| ]*)(\|_{0,2})/,["","string.link",""]],[/^(\.\.)([ ].*)$/,[{token:"",next:"@comments"},"comment"]]],inlineMarkup:[{include:"@citationsReference"},{include:"@footnotesReference"},[/(@simpleRefName)(_{1,2})/,["string.link",""]],[/(`)([^<`]+\s+)(<)(.*)(>)(`)(_)/,["","string.link","","string.link","","",""]],[/\*\*([^\\*]|\*(?!\*))+\*\*/,"strong"],[/\*[^*]+\*/,"emphasis"],[/(``)((?:[^`]|\`(?!`))+)(``)/,["","keyword",""]],[/(__\s+)(.+)/,["","keyword"]],[/(:)((?:@simpleRefNameWithoutBq)?)(:`)([^`]+)(`)/,["","keyword","","",""]],[/(`)([^`]+)(`:)((?:@simpleRefNameWithoutBq)?)(:)/,["","","","keyword",""]],[/(`)([^`]+)(`)/,""],[/(_`)(@phrase)(`)/,["","string.link",""]]],citations:[[/^(\.\.\s+\[)((?:@citationName))(\]\s+)(.*)/,[{token:"",next:"@subsequentLines"},"string.link","",""]]],citationsReference:[[/(\[)(@citationName)(\]_)/,["","string.link",""]]],footnotes:[[/^(\.\.\s+\[)((?:[0-9]+))(\]\s+.*)/,[{token:"",next:"@subsequentLines"},"string.link",""]],[/^(\.\.\s+\[)((?:#@simpleRefName?))(\]\s+)(.*)/,[{token:"",next:"@subsequentLines"},"string.link","",""]],[/^(\.\.\s+\[)((?:\*))(\]\s+)(.*)/,[{token:"",next:"@subsequentLines"},"string.link","",""]]],footnotesReference:[[/(\[)([0-9]+)(\])(_)/,["","string.link","",""]],[/(\[)(#@simpleRefName?)(\])(_)/,["","string.link","",""]],[/(\[)(\*)(\])(_)/,["","string.link","",""]]],blankLineOfLiteralBlocks:[[/^$/,"","@subsequentLinesOfLiteralBlocks"],[/^.*$/,"","@pop"]],subsequentLinesOfLiteralBlocks:[[/(@blockLiteralStart+)(.*)/,["keyword",""]],[/^(?!blockLiteralStart)/,"","@popall"]],subsequentLines:[[/^[\s]+.*/,""],[/^(?!\s)/,"","@pop"]],hyperlinks:[[/^[\s]+.*/,"string.link"],[/^(?!\s)/,"","@pop"]],comments:[[/^[\s]+.*/,"comment"],[/^(?!\s)/,"","@pop"]],tables:[[/\+-[+-]+/,"keyword"],[/\+=[+=]+/,"keyword"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/86.ad271bdc.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/86.ad271bdc.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/86.ad271bdc.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/8607.1e377882.chunk.js b/ydb/core/viewer/monitoring/static/js/8607.1e377882.chunk.js new file mode 100644 index 000000000000..bbfd94bb25ef --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8607.1e377882.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8607],{68607:(t,e,s)=>{function a(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")}function r(t,e,s){a(t,e),e.set(t,s)}s.r(e),s.d(e,{TableOrViewSuggestion:()=>tn,parseClickHouseQuery:()=>$K,parseClickHouseQueryWithoutCursor:()=>zK,parseMySqlQuery:()=>ZK,parseMySqlQueryWithoutCursor:()=>JK,parsePostgreSqlQuery:()=>jK,parsePostgreSqlQueryWithoutCursor:()=>qK,parseYqQuery:()=>aQ,parseYqQueryWithoutCursor:()=>sQ,parseYqlQuery:()=>eQ,parseYqlQueryWithoutCursor:()=>tQ});var i,c,n,h,E,T,o,R,A,S,l,O,I,u,N,L,C,_,P,M,d,U,m,D,p,g,x,k,H,G,F,v,B,y,f,Y,w,b,W,V,X,K,Q,J,Z,q,j,z,$,tt,et,st,at,rt,it,ct,nt,ht,Et,Tt,ot,Rt,At,St,lt,Ot,It,ut,Nt,Lt,Ct,_t,Pt,Mt,dt,Ut,mt,Dt,pt,gt,xt,kt,Ht,Gt,Ft,vt,Bt,yt,ft,Yt,wt,bt,Wt,Vt,Xt,Kt,Qt,Jt,Zt,qt,jt,zt,$t,te,ee,se,ae,re,ie,ce,ne,he,Ee,Te,oe,Re,Ae,Se,le,Oe,Ie,ue,Ne,Le,Ce,_e,Pe,Me,de,Ue,me,De,pe,ge,xe,ke,He,Ge,Fe,ve,Be,ye,fe,Ye,we,be,We,Ve,Xe,Ke,Qe,Je,Ze,qe,je,ze,$e,ts,es,ss,as,rs,is,cs,ns,hs,Es,Ts,os,Rs,As,Ss,ls,Os,Is,us,Ns,Ls,Cs,_s,Ps,Ms,ds,Us,ms,Ds,ps,gs,xs,ks,Hs,Gs,Fs,vs,Bs,ys,fs,Ys,ws,bs,Ws,Vs,Xs,Ks,Qs,Js,Zs,qs,js=s(64572);function zs(t,e,s){if(!e.has(t))throw new TypeError("attempted to "+s+" private field on non-instance");return e.get(t)}function $s(t,e,s){return function(t,e,s){if(e.set)e.set.call(t,s);else{if(!e.writable)throw new TypeError("attempted to set read only private field");e.value=s}}(t,zs(t,e,"set"),s),s}function ta(t,e){return e.get?e.get.call(t):e.value}function ea(t,e){return ta(t,zs(t,e,"get"))}function sa(t,e,s){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return s}function aa(t,e,s){return function(t,e){if(t!==e)throw new TypeError("Private static access of wrong provenance")}(t,e),function(t,e){if(void 0===t)throw new TypeError("attempted to "+e+" private static field before its declaration")}(s,"get"),ta(t,s)}var ra,ia,ca,na,ha=Object.defineProperty,Ea=(t,e)=>ha(t,"name",{value:e,configurable:!0});(ia=ra||(ra={})).EOF=-1,ia.UNKNOWN_SOURCE_NAME="<unknown>",(na=ca||(ca={})).INVALID_TYPE=0,na.EPSILON=-2,na.MIN_USER_TOKEN_TYPE=1,na.EOF=ra.EOF,na.DEFAULT_CHANNEL=0,na.HIDDEN_CHANNEL=1,na.MIN_USER_CHANNEL_VALUE=2;var Ta=Ea((t=>{const e=t;return void 0!==e.tokenSource&&void 0!==e.channel}),"isToken"),oa=(c=new WeakMap,i=class t{constructor(t,e){(0,js.Z)(this,"start",void 0),(0,js.Z)(this,"stop",void 0),r(this,c,{writable:!0,value:void 0}),this.start=t,this.stop=e,$s(this,c,Math.imul(651+t,31)+e)}static of(e,s){return e!==s||e<0||e>t.INTERVAL_POOL_MAX_VALUE?new t(e,s):(aa(t,i,n)[e]||(aa(t,i,n)[e]=new t(e,e)),aa(t,i,n)[e])}equals(t){return this.start===t.start&&this.stop===t.stop}hashCode(){return ea(this,c)}startsBeforeDisjoint(t){return this.start<t.start&&this.stop<t.start}startsBeforeNonDisjoint(t){return this.start<=t.start&&this.stop>=t.start}startsAfter(t){return this.start>t.start}startsAfterDisjoint(t){return this.start>t.stop}startsAfterNonDisjoint(t){return this.start>t.start&&this.start<=t.stop}disjoint(t){return this.startsBeforeDisjoint(t)||this.startsAfterDisjoint(t)}adjacent(t){return this.start===t.stop+1||this.stop===t.start-1}properlyContains(t){return t.start>=this.start&&t.stop<=this.stop}union(e){return t.of(Math.min(this.start,e.start),Math.max(this.stop,e.stop))}intersection(e){return t.of(Math.max(this.start,e.start),Math.min(this.stop,e.stop))}differenceNotProperlyContained(e){let s=null;return e.startsBeforeNonDisjoint(this)?s=t.of(Math.max(this.start,e.stop+1),this.stop):e.startsAfterNonDisjoint(this)&&(s=t.of(this.start,e.start-1)),s}toString(){return this.start===this.stop?this.start.toString():this.start.toString()+".."+this.stop.toString()}get length(){return this.stop<this.start?0:this.stop-this.start+1}},Ea(i,"Interval"),(0,js.Z)(i,"INVALID_INTERVAL",new i(-1,-2)),(0,js.Z)(i,"INTERVAL_POOL_MAX_VALUE",1e3),n={writable:!0,value:[]},i),Ra=(h=class t{constructor(e,s,a){(0,js.Z)(this,"maxTokenType",void 0),(0,js.Z)(this,"literalNames",void 0),(0,js.Z)(this,"symbolicNames",void 0),(0,js.Z)(this,"displayNames",void 0),this.literalNames=null!==e&&void 0!==e?e:t.EMPTY_NAMES,this.symbolicNames=null!==s&&void 0!==s?s:t.EMPTY_NAMES,this.displayNames=null!==a&&void 0!==a?a:t.EMPTY_NAMES,this.maxTokenType=Math.max(this.displayNames.length,Math.max(this.literalNames.length,this.symbolicNames.length))-1}static fromTokenNames(e){if(null==e||0===e.length)return t.EMPTY_VOCABULARY;const s=[...e],a=[...e];for(let t=0;t<e.length;t++){const r=e[t];if(null!=r){if((null===r||void 0===r?void 0:r.length)>0){const e=r.charAt(0);if("'"===e){a[t]=null;continue}if(e.toUpperCase()===e){s[t]=null;continue}}s[t]=null,a[t]=null}}return new t(s,a,e)}getMaxTokenType(){return this.maxTokenType}getLiteralName(t){return t>=0&&t<this.literalNames.length?this.literalNames[t]:null}getSymbolicName(t){return t>=0&&t<this.symbolicNames.length?this.symbolicNames[t]:t===ca.EOF?"EOF":null}getDisplayName(t){if(t>=0&&t<this.displayNames.length){const e=this.displayNames[t];if(null!=e)return e}const e=this.getLiteralName(t);if(null!=e)return e;const s=this.getSymbolicName(t);return null!=s?s:"".concat(t)}getLiteralNames(){return this.literalNames}getSymbolicNames(){return this.symbolicNames}getDisplayNames(){return this.displayNames}},Ea(h,"Vocabulary"),(0,js.Z)(h,"EMPTY_NAMES",[]),(0,js.Z)(h,"EMPTY_VOCABULARY",new h(h.EMPTY_NAMES,h.EMPTY_NAMES,h.EMPTY_NAMES)),h),Aa=(Ea(E=class t{constructor(){}static initialize(){return arguments.length>0&&void 0!==arguments[0]?arguments[0]:aa(t,E,T)}static updateFromComparable(t,e){var s;return this.update(t,null!==(s=null===e||void 0===e?void 0:e.hashCode())&&void 0!==s?s:0)}static update(t,e){return e=(e=Math.imul(e,3432918353))<<15|e>>>17,t=(t^=e=Math.imul(e,461845907))<<13|t>>>19,t=Math.imul(t,5)+3864292196}},"MurmurHash"),T={writable:!0,value:701},(0,js.Z)(E,"finish",((t,e)=>(t^=4*e,t^=t>>>16,t=Math.imul(t,2246822507),t^=t>>>13,t=Math.imul(t,3266489909),t^=t>>>16))),(0,js.Z)(E,"hashCode",((t,e)=>E.finish(E.update(null!==e&&void 0!==e?e:aa(E,E,T),t),1))),E),Sa=(R=new WeakMap,A=new WeakMap,o=class t{constructor(t){r(this,R,{writable:!0,value:[]}),r(this,A,{writable:!0,value:void 0}),t&&this.addSet(t)}static of(e,s){const a=new t;return a.addRange(e,s),a}[Symbol.iterator](){return ea(this,R)[Symbol.iterator]()}get(t){return ea(this,R)[t]}get minElement(){return 0===ea(this,R).length?ca.INVALID_TYPE:ea(this,R)[0].start}get maxElement(){return 0===ea(this,R).length?ca.INVALID_TYPE:ea(this,R)[ea(this,R).length-1].stop}clear(){$s(this,A,void 0),$s(this,R,[])}addOne(t){this.addInterval(new oa(t,t))}addRange(t,e){this.addInterval(new oa(t,e))}addInterval(t){if($s(this,A,void 0),0===ea(this,R).length)ea(this,R).push(t);else{for(let e=0;e<ea(this,R).length;e++){const s=ea(this,R)[e];if(t.equals(s))return;if(t.adjacent(s)||!t.disjoint(s)){const a=t.union(s);ea(this,R)[e]=a;for(let t=e+1;t<ea(this,R).length;){const s=ea(this,R)[t];if(!a.adjacent(s)&&a.disjoint(s))break;ea(this,R).splice(t,1),ea(this,R)[e]=a.union(s)}return}if(t.startsBeforeDisjoint(s))return void ea(this,R).splice(e,0,t)}ea(this,R).push(t)}}addSet(t){return ea(t,R).forEach((t=>this.addInterval(t)),this),this}complementWithVocabulary(e){const s=new t;return e?0===e.length?s:(s.addSet(e),s.subtract(this)):s}complement(e,s){const a=new t;return a.addInterval(new oa(e,s)),a.subtract(this)}or(e){const s=new t;return s.addSet(this),e.forEach((t=>s.addSet(t))),s}and(e){if(0===e.length)return new t;const s=ea(this,R),a=ea(e,R);let r;const i=s.length,c=a.length;let n=0,h=0;for(;n<i&&h<c;){const e=s[n],i=a[h];e.startsBeforeDisjoint(i)?n++:i.startsBeforeDisjoint(e)?h++:e.properlyContains(i)?(r||(r=new t),r.addInterval(e.intersection(i)),h++):i.properlyContains(e)?(r||(r=new t),r.addInterval(e.intersection(i)),n++):e.disjoint(i)||(r||(r=new t),r.addInterval(e.intersection(i)),e.startsAfterNonDisjoint(i)?h++:i.startsAfterNonDisjoint(e)&&n++)}return r||new t}subtract(e){if(0===this.length)return new t;const s=new t(this);if(0===e.length)return s;let a=0,r=0;for(;a<ea(s,R).length&&r<ea(e,R).length;){const t=ea(s,R)[a],i=ea(e,R)[r];if(i.stop<t.start){r++;continue}if(i.start>t.stop){a++;continue}let c,n;i.start>t.start&&(c=new oa(t.start,i.start-1)),i.stop<t.stop&&(n=new oa(i.stop+1,t.stop)),c?n?(ea(s,R)[a]=c,ea(s,R).splice(a+1,0,n),a++,r++):(ea(s,R)[a]=c,a++):n?(ea(s,R)[a]=n,r++):ea(s,R).splice(a,1)}return s}contains(t){let e=0,s=ea(this,R).length-1;for(;e<=s;){const a=Math.floor((e+s)/2),r=ea(this,R)[a];if(r.stop<t)e=a+1;else{if(!(r.start>t))return!0;s=a-1}}return!1}removeRange(t){if($s(this,A,void 0),t.start===t.stop)this.removeOne(t.start);else if(null!==ea(this,R)){let e=0;for(const s of ea(this,R)){if(t.stop<=s.start)return;if(t.start>s.start&&t.stop<s.stop){ea(this,R)[e]=new oa(s.start,t.start);const a=new oa(t.stop,s.stop);return void ea(this,R).splice(e,0,a)}t.start<=s.start&&t.stop>=s.stop?(ea(this,R).splice(e,1),e-=1):t.start<s.stop?ea(this,R)[e]=new oa(s.start,t.start):t.stop<s.stop&&(ea(this,R)[e]=new oa(t.stop,s.stop)),e+=1}}}removeOne(t){$s(this,A,void 0);for(let e=0;e<ea(this,R).length;e++){const s=ea(this,R)[e];if(t<s.start)return;if(t===s.start&&t===s.stop)return void ea(this,R).splice(e,1);if(t===s.start)return void(ea(this,R)[e]=new oa(s.start+1,s.stop));if(t===s.stop)return void(ea(this,R)[e]=new oa(s.start,s.stop));if(t<s.stop){const a=new oa(s.start,t);return ea(this,R)[e]=new oa(t+1,s.stop),void ea(this,R).splice(e,0,a)}}}hashCode(){if(void 0===ea(this,A)){let t=Aa.initialize();for(const e of ea(this,R))t=Aa.update(t,e.start),t=Aa.update(t,e.stop);$s(this,A,Aa.finish(t,2*ea(this,R).length))}return ea(this,A)}equals(t){if(this===t)return!0;if(ea(this,R).length!==ea(t,R).length)return!1;for(let e=0;e<ea(this,R).length;e++)if(!ea(this,R)[e].equals(ea(t,R)[e]))return!1;return!0}toString(t){if(0===ea(this,R).length)return"{}";let e="";this.length>1&&(e+="{");for(let s=0;s<ea(this,R).length;++s){const a=ea(this,R)[s],r=a.start,i=a.stop;r===i?r===ca.EOF?e+="<EOF>":e+=t?"'"+String.fromCodePoint(r)+"'":r:e+=t?"'"+String.fromCodePoint(r)+"'..'"+String.fromCodePoint(i)+"'":r+".."+i,s<ea(this,R).length-1&&(e+=", ")}return this.length>1&&(e+="}"),e}toStringWithVocabulary(t){if(0===ea(this,R).length)return"{}";let e="";this.length>1&&(e+="{");for(let s=0;s<ea(this,R).length;++s){const a=ea(this,R)[s],r=a.start,i=a.stop;if(r===i)r===ca.EOF?e+="<EOF>":e+=this.elementName(t,r);else for(let s=r;s<=i;++s)s>r&&(e+=", "),e+=this.elementName(t,s);s<ea(this,R).length-1&&(e+=", ")}return this.length>1&&(e+="}"),e}toStringWithRuleNames(t){if(0===ea(this,R).length)return"{}";let e="";this.length>1&&(e+="{");const s=Ra.fromTokenNames(t);for(let a=0;a<ea(this,R).length;++a){const t=ea(this,R)[a],r=t.start,i=t.stop;if(r===i)r===ca.EOF?e+="<EOF>":e+=this.elementName(s,r);else for(let a=r;a<=i;++a)a>r&&(e+=", "),e+=this.elementName(s,a);a<ea(this,R).length-1&&(e+=", ")}return this.length>1&&(e+="}"),e}toArray(){const t=[];for(const e of ea(this,R))for(let s=e.start;s<=e.stop;s++)t.push(s);return t}get length(){let t=0;if(1===ea(this,R).length){const t=ea(this,R)[0];return t.stop-t.start+1}for(const e of ea(this,R))t+=e.length;return t}elementName(t,e){return e===ca.EOF?"<EOF>":e===ca.EPSILON?"<EPSILON>":t.getDisplayName(e)}},Ea(o,"IntervalSet"),o),la=(Ea(S=class{constructor(t){(0,js.Z)(this,"target",void 0),this.target=t}get isEpsilon(){return!1}get label(){return null}},"Transition"),(0,js.Z)(S,"INVALID",0),(0,js.Z)(S,"EPSILON",1),(0,js.Z)(S,"RANGE",2),(0,js.Z)(S,"RULE",3),(0,js.Z)(S,"PREDICATE",4),(0,js.Z)(S,"ATOM",5),(0,js.Z)(S,"ACTION",6),(0,js.Z)(S,"SET",7),(0,js.Z)(S,"NOT_SET",8),(0,js.Z)(S,"WILDCARD",9),(0,js.Z)(S,"PRECEDENCE",10),S),Oa=(Ea(l=class extends la{constructor(t,e){super(t),(0,js.Z)(this,"set",void 0),this.set=e||Sa.of(ca.INVALID_TYPE,ca.INVALID_TYPE)}get transitionType(){return la.SET}get label(){return this.set}matches(t,e,s){return this.set.contains(t)}toString(){return this.set.toString()}},"SetTransition"),l),Ia=(Ea(O=class extends Oa{get transitionType(){return la.NOT_SET}matches(t,e,s){return t>=e&&t<=s&&!super.matches(t,e,s)}toString(){return"~"+super.toString()}},"NotSetTransition"),O),ua=(u=new WeakMap,Ea(I=class t{constructor(t){r(this,u,{writable:!0,value:void 0}),$s(this,u,t)}static calculateEmptyHashCode(){let t=Aa.initialize(31);return t=Aa.finish(t,0),t}static calculateHashCodeSingle(t,e){let s=Aa.initialize(31);return s=Aa.updateFromComparable(s,t),s=Aa.update(s,e),s=Aa.finish(s,2),s}static calculateHashCodeList(t,e){let s=Aa.initialize(31);for(const a of t)s=Aa.updateFromComparable(s,a);for(const a of e)s=Aa.update(s,a);return s=Aa.finish(s,2*t.length),s}isEmpty(){return!1}hasEmptyPath(){return this.getReturnState(this.length-1)===t.EMPTY_RETURN_STATE}hashCode(){return ea(this,u)}toString(t){return""}},"PredictionContext"),(0,js.Z)(I,"EMPTY_RETURN_STATE",2147483647),(0,js.Z)(I,"EMPTY",void 0),(0,js.Z)(I,"traceATNSimulator",!1),I),Na=Ea((t=>null===t?"null":t),"valueToString"),La=Ea((t=>Array.isArray(t)?"["+t.map(Na).join(", ")+"]":"null"),"arrayToString"),Ca=Ea(((t,e)=>{if(t===e)return!0;if(t.length!==e.length)return!1;for(let s=0;s<t.length;s++){const a=t[s],r=e[s];if(a!==r&&(!a||!a.equals(r)))return!1}return!0}),"equalArrays"),_a=Ea(((t,e)=>{if(t===e)return!0;if(t.length!==e.length)return!1;for(let s=0;s<t.length;s++)if(t[s]!==e[s])return!1;return!0}),"equalNumberArrays"),Pa=Ea((function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t=t.replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r"),e&&(t=t.replace(/ /g,"\xb7")),t}),"escapeWhitespace"),Ma=(N=class t extends ua{constructor(t,e){return super(ua.calculateHashCodeList(t,e)),(0,js.Z)(this,"parents",[]),(0,js.Z)(this,"returnStates",[]),this.parents=t,this.returnStates=e,this}isEmpty(){return this.returnStates[0]===ua.EMPTY_RETURN_STATE}get length(){return this.returnStates.length}getParent(t){return this.parents[t]}getReturnState(t){return this.returnStates[t]}equals(e){return this===e||e instanceof t&&this.hashCode()===e.hashCode()&&(_a(this.returnStates,e.returnStates)&&Ca(this.parents,e.parents))}toString(){if(this.isEmpty())return"[]";const t=[];for(let e=0;e<this.returnStates.length;e++)this.returnStates[e]!==ua.EMPTY_RETURN_STATE?(t.push(this.returnStates[e].toString()),this.parents[e]?t.push(this.parents[e].toString()):t.push("null")):t.push("$");return"[".concat(t.join(", "),"]")}},Ea(N,"ArrayPredictionContext"),N),da=(L=class t extends ua{constructor(t,e){super(t?ua.calculateHashCodeSingle(t,e):ua.calculateEmptyHashCode()),(0,js.Z)(this,"parent",void 0),(0,js.Z)(this,"returnState",void 0),this.parent=null!==t&&void 0!==t?t:null,this.returnState=e}static create(e,s){return s===ua.EMPTY_RETURN_STATE&&null===e?ua.EMPTY:new t(e,s)}getParent(t){return this.parent}getReturnState(t){return this.returnState}equals(e){return this===e||e instanceof t&&(this.hashCode()===e.hashCode()&&(this.returnState===e.returnState&&(null==this.parent?null==e.parent:this.parent.equals(e.parent))))}toString(){const t=null===this.parent?"":this.parent.toString();return 0===t.length?this.returnState===ua.EMPTY_RETURN_STATE?"$":""+this.returnState:this.returnState+" "+t}get length(){return 1}},Ea(L,"SingletonPredictionContext"),L),Ua=(Ea(C=class extends da{constructor(){super(void 0,ua.EMPTY_RETURN_STATE)}isEmpty(){return!0}getParent(){return null}getReturnState(){return this.returnState}equals(t){return this===t}toString(){return"$"}},"EmptyPredictionContext"),(0,js.Z)(C,"instance",new C),ua.EMPTY=new C,C),ma=(Ea(_=class{constructor(t){(0,js.Z)(this,"parent",null),(0,js.Z)(this,"symbol",void 0),this.symbol=t}getChild(t){return null}getSymbol(){return this.symbol}getPayload(){return this.symbol}getSourceInterval(){if(null===this.symbol)return oa.INVALID_INTERVAL;const t=this.symbol.tokenIndex;return new oa(t,t)}getChildCount(){return 0}accept(t){return t.visitTerminal(this)}getText(){var t,e;return null!==(t=null===(e=this.symbol)||void 0===e?void 0:e.text)&&void 0!==t?t:""}toString(){var t,e,s;return(null===(t=this.symbol)||void 0===t?void 0:t.type)===ca.EOF?"<EOF>":null!==(e=null===(s=this.symbol)||void 0===s?void 0:s.text)&&void 0!==e?e:""}toStringTree(){return this.toString()}},"TerminalNode"),_),Da=(Ea(P=class extends ma{accept(t){return t.visitErrorNode(this)}},"ErrorNode"),P),pa=(M=class t{static toStringTree(e,s,a){var r,i;s=null!==(r=s)&&void 0!==r?r:null,null!==(a=null!==(i=a)&&void 0!==i?i:null)&&(s=a.ruleNames);let c=t.getNodeText(e,s);c=Pa(c,!1);const n=e.getChildCount();if(0===n)return c;let h="("+c+" ";n>0&&(c=t.toStringTree(e.getChild(0),s),h=h.concat(c));for(let E=1;E<n;E++)c=t.toStringTree(e.getChild(E),s),h=h.concat(" "+c);return h=h.concat(")"),h}static getNodeText(t,e,s){var a,r;if(e=null!==(a=e)&&void 0!==a?a:null,null!==(s=null!==(r=s)&&void 0!==r?r:null)&&(e=s.ruleNames),null!==e){if(t instanceof ga){const s=t.ruleContext.getAltNumber();return 0!==s?e[t.ruleIndex]+":"+s:e[t.ruleIndex]}if(t instanceof Da)return t.toString();if(t instanceof ma&&null!==t.symbol)return t.symbol.text}const i=t.getPayload();return Ta(i)?i.text:String(t.getPayload())}static getChildren(t){const e=[];for(let s=0;s<t.getChildCount();s++)e.push(t.getChild(s));return e}static getAncestors(t){if(null===t.parent)return[];let e=[],s=t.parent;for(;null!==s;)e=[s].concat(e),s=s.parent;return e}static findAllTokenNodes(e,s){return t.findAllNodes(e,s,!0)}static findAllRuleNodes(e,s){return t.findAllNodes(e,s,!1)}static findAllNodes(e,s,a){const r=[];return t.doFindAllNodes(e,s,a,r),r}static descendants(e){let s=[e];for(let a=0;a<e.getChildCount();a++)s=s.concat(t.descendants(e.getChild(a)));return s}static doFindAllNodes(e,s,a,r){var i;a&&e instanceof ma?(null===(i=e.symbol)||void 0===i?void 0:i.type)===s&&r.push(e):!a&&e instanceof ga&&e.ruleIndex===s&&r.push(e);for(let c=0;c<e.getChildCount();c++)t.doFindAllNodes(e.getChild(c),s,a,r)}},Ea(M,"Trees"),M),ga=(U=new WeakMap,d=class{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;(0,js.Z)(this,"start",null),(0,js.Z)(this,"stop",null),(0,js.Z)(this,"children",[]),(0,js.Z)(this,"invokingState",void 0),r(this,U,{writable:!0,value:void 0}),$s(this,U,t),this.invokingState=e}copyFrom(t){$s(this,U,ea(t,U)),this.invokingState=t.invokingState,this.children.slice(0,this.children.length),this.start=t.start,this.stop=t.stop,t.children&&t.children.forEach((t=>{t instanceof Da&&(this.children.push(t),t.parent=this)}))}enterRule(t){}exitRule(t){}addChild(t){return this.children.push(t),t}removeLastChild(){this.children.pop()}addTokenNode(t){const e=new ma(t);return this.children.push(e),e.parent=this,e}addErrorNode(t){return t.parent=this,this.children.push(t),t}getChild(t,e){if(t<0||t>=this.children.length)return null;if(!e)return this.children[t];for(const s of this.children)if(s instanceof e){if(0===t)return s;t-=1}return null}getToken(t,e){if(e<0||e>=this.children.length)return null;for(const a of this.children){var s;if("symbol"in a)if((null===(s=a.symbol)||void 0===s?void 0:s.type)===t){if(0===e)return a;e-=1}}return null}getTokens(t){const e=[];for(const a of this.children){var s;if("symbol"in a)(null===(s=a.symbol)||void 0===s?void 0:s.type)===t&&e.push(a)}return e}getRuleContext(t,e){return this.getChild(t,e)}getRuleContexts(t){const e=[];for(const s of this.children)s instanceof t&&e.push(s);return e}getChildCount(){return this.children.length}getSourceInterval(){return null===this.start||null===this.stop?oa.INVALID_INTERVAL:new oa(this.start.tokenIndex,this.stop.tokenIndex)}get parent(){return ea(this,U)}set parent(t){$s(this,U,t)}depth(){let t=0,e=this;for(;null!==e;)e=e.parent,t+=1;return t}isEmpty(){return-1===this.invokingState}get ruleContext(){return this}get ruleIndex(){return-1}getPayload(){return this}getText(){return 0===this.children.length?"":this.children.map((t=>t.getText())).join("")}getAltNumber(){return ja.INVALID_ALT_NUMBER}setAltNumber(t){}accept(t){return t.visitChildren(this)}toStringTree(){return 1===arguments.length?pa.toStringTree(this,null,arguments.length<=0?void 0:arguments[0]):pa.toStringTree(this,arguments.length<=0?void 0:arguments[0],arguments.length<=1?void 0:arguments[1])}toString(t,e){var s,a;t=null!==(s=t)&&void 0!==s?s:null,e=null!==(a=e)&&void 0!==a?a:null;let r=this,i="[";for(;null!==r&&r!==e;){if(null===t)r.isEmpty()||(i+=r.invokingState);else{const e=r.ruleIndex;i+=e>=0&&e<t.length?t[e]:""+e}null===r.parent||null===t&&r.parent.isEmpty()||(i+=" "),r=r.parent}return i+="]",i}},Ea(d,"ParserRuleContext"),(0,js.Z)(d,"empty",new d(null)),d),xa=(m=class{hashCode(t){return null==t?0:t.hashCode()}equals(t,e){return null==t?null==e:t.equals(e)}},Ea(m,"ObjectEqualityComparator"),(0,js.Z)(m,"instance",new m),m),ka=(D=class{hashCode(t){return null==t?0:xa.instance.hashCode(t)}equals(t,e){return null==t?null==e:"string"===typeof t||"number"===typeof t?t===e:xa.instance.equals(t,e)}},Ea(D,"DefaultEqualityComparator"),(0,js.Z)(D,"instance",new D),D),Ha=(g=new WeakMap,x=new WeakMap,k=new WeakMap,H=new WeakMap,p=class t{constructor(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:aa(t,p,F);if(r(this,g,{writable:!0,value:void 0}),r(this,x,{writable:!0,value:void 0}),r(this,k,{writable:!0,value:0}),r(this,H,{writable:!0,value:void 0}),e instanceof t){$s(this,g,ea(e,g)),$s(this,x,ea(e,x).slice(0));for(let t=0;t<ea(this,x).length;t++){const e=ea(this,x)[t];e&&(ea(this,x)[t]=e.slice(0))}$s(this,k,ea(e,k)),$s(this,H,ea(e,H))}else $s(this,g,null!==e&&void 0!==e?e:ka.instance),$s(this,x,this.createBuckets(s)),$s(this,H,Math.floor(aa(t,p,F)*aa(t,p,G)))}getOrAdd(t){var e;ea(this,k)>ea(this,H)&&this.expand();const s=this.getBucket(t);let a=ea(this,x)[s];var r;if(!a)return a=[t],ea(this,x)[s]=a,$s(this,k,(r=ea(this,k),++r)),t;for(const i of a)if(ea(this,g).equals(i,t))return i;return a.push(t),$s(this,k,(e=ea(this,k),++e)),t}get(t){if(null==t)return t;const e=this.getBucket(t),s=ea(this,x)[e];if(s)for(const a of s)if(ea(this,g).equals(a,t))return a}hashCode(){let t=Aa.initialize();for(const e of ea(this,x))if(null!=e)for(const s of e){if(null==s)break;t=Aa.update(t,ea(this,g).hashCode(s))}return t=Aa.finish(t,this.size),t}equals(e){return e===this||e instanceof t&&(e.size===this.size&&this.containsAll(e))}add(t){return this.getOrAdd(t)===t}contains(t){return this.containsFast(t)}containsFast(t){return null!=t&&void 0!==this.get(t)}*[Symbol.iterator](){yield*this.toArray()}toArray(){const t=new Array(this.size);let e=0;for(const s of ea(this,x))if(null!=s)for(const a of s){if(null==a)break;t[e++]=a}return t}containsAll(e){if(e instanceof t){for(const t of ea(e,x))if(null!=t)for(const e of t){if(null==e)break;if(!this.containsFast(e))return!1}}else for(const t of e)if(!this.containsFast(t))return!1;return!0}addAll(t){let e=!1;for(const s of t){this.getOrAdd(s)!==s&&(e=!0)}return e}clear(){$s(this,x,this.createBuckets(aa(t,p,F))),$s(this,k,0),$s(this,H,Math.floor(aa(t,p,F)*aa(t,p,G)))}toString(){if(0===this.size)return"{}";let t="{",e=!0;for(const s of ea(this,x))if(null!=s)for(const a of s){if(null==a)break;e?e=!1:t+=", ",t+=a.toString()}return t+="}",t}toTableString(){let t="";for(const e of ea(this,x)){if(null==e){t+="null\n";continue}t+="[";let s=!0;for(const a of e)s?s=!1:t+=" ",t+=null==a?"_":a.toString();t+="]\n"}return t}getBucket(t){return ea(this,g).hashCode(t)&ea(this,x).length-1}expand(){const e=ea(this,x),s=2*ea(this,x).length,a=this.createBuckets(s);$s(this,x,a),$s(this,H,Math.floor(s*aa(t,p,G)));for(const t of e)if(t)for(const e of t){const t=this.getBucket(e);let s=ea(this,x)[t];s||(s=[],ea(this,x)[t]=s),s.push(e)}}get size(){return ea(this,k)}get isEmpty(){return 0===ea(this,k)}createBuckets(t){return new Array(t)}},Ea(p,"HashSet"),G={writable:!0,value:.75},F={writable:!0,value:16},p),Ga=(v=class{constructor(t){(0,js.Z)(this,"keyComparator",void 0),this.keyComparator=t}hashCode(t){return this.keyComparator.hashCode(t.key)}equals(t,e){return this.keyComparator.equals(t.key,e.key)}},Ea(v,"MapKeyEqualityComparator"),v),Fa=(Ea(B=class t{constructor(e){(0,js.Z)(this,"backingStore",void 0),this.backingStore=new Ha(e instanceof t?e.backingStore:new Ga(e))}clear(){this.backingStore.clear()}containsKey(t){return this.backingStore.contains({key:t})}get(t){const e=this.backingStore.get({key:t});if(e)return e.value}get isEmpty(){return this.backingStore.isEmpty}set(t,e){const s=this.backingStore.get({key:t,value:e});let a;return s?(a=s.value,s.value=e):this.backingStore.add({key:t,value:e}),a}setIfAbsent(t,e){const s=this.backingStore.get({key:t,value:e});let a;return s?a=s.value:this.backingStore.add({key:t,value:e}),a}values(){return this.backingStore.toArray().map((t=>t.value))}get size(){return this.backingStore.size}hashCode(){return this.backingStore.hashCode()}equals(t){return this.backingStore.equals(t.backingStore)}},"HashMap"),B),va=Ea(((t,e)=>{if(e||(e=ga.empty),!e.parent||e===ga.empty)return ua.EMPTY;const s=va(t,e.parent),a=t.states[e.invokingState].transitions[0];return da.create(s,a.followState.stateNumber)}),"predictionContextFromRuleContext"),Ba=Ea(((t,e,s)=>{if(t.isEmpty())return t;let a=s.get(t);if(a)return a;if(a=e.get(t),a)return s.set(t,a),a;let r,i=!1,c=[];for(let h=0;h<c.length;h++){const a=Ba(t.getParent(h),e,s);if(i||a!==t.getParent(h)){if(!i){c=[];for(let e=0;e<t.length;e++)c[e]=t.getParent(e);i=!0}c[h]=a}}if(!i)return e.add(t),s.set(t,t),t;if(0===c.length)r=ua.EMPTY;else if(1===c.length){var n;r=da.create(null!==(n=c[0])&&void 0!==n?n:void 0,t.getReturnState(0))}else r=new Ma(c,t.returnStates);return e.add(r),s.set(r,r),s.set(t,r),r}),"getCachedPredictionContext"),ya=Ea(((t,e,s,a)=>{if(t===e)return t;if(t instanceof da&&e instanceof da)return wa(t,e,s,a);if(s){if(t instanceof Ua)return t;if(e instanceof Ua)return e}return t instanceof da&&(t=new Ma([t.parent],[t.returnState])),e instanceof da&&(e=new Ma([e.parent],[e.returnState])),fa(t,e,s,a)}),"merge"),fa=Ea(((t,e,s,a)=>{if(a){let s=a.get(t,e);if(s)return s;if(s=a.get(e,t),s)return s}let r=0,i=0,c=0,n=new Array(t.returnStates.length+e.returnStates.length).fill(0),h=new Array(t.returnStates.length+e.returnStates.length).fill(null);for(;r<t.returnStates.length&&i<e.returnStates.length;){const E=t.parents[r],T=e.parents[i];if(t.returnStates[r]===e.returnStates[i]){const e=t.returnStates[r];e===ua.EMPTY_RETURN_STATE&&null===E&&null===T||null!==E&&null!==T&&E===T?(h[c]=E,n[c]=e):(h[c]=ya(E,T,s,a),n[c]=e),r+=1,i+=1}else t.returnStates[r]<e.returnStates[i]?(h[c]=E,n[c]=t.returnStates[r],r+=1):(h[c]=T,n[c]=e.returnStates[i],i+=1);c+=1}if(r<t.returnStates.length)for(let o=r;o<t.returnStates.length;o++)h[c]=t.parents[o],n[c]=t.returnStates[o],c+=1;else for(let o=i;o<e.returnStates.length;o++)h[c]=e.parents[o],n[c]=e.returnStates[o],c+=1;if(c<h.length){if(1===c){var E;const s=da.create(null!==(E=h[0])&&void 0!==E?E:void 0,n[0]);return null!==a&&a.set(t,e,s),s}h=h.slice(0,c),n=n.slice(0,c)}const T=new Ma(h,n);return T.equals(t)?(null!==a&&a.set(t,e,t),ua.traceATNSimulator&&console.log("mergeArrays a="+t+",b="+e+" -> a"),t):T.equals(e)?(null!==a&&a.set(t,e,e),e):(Ya(h),null!==a&&a.set(t,e,T),ua.traceATNSimulator&&console.log("mergeArrays a="+t+",b="+e+" -> "+T),T)}),"mergeArrays"),Ya=Ea((t=>{const e=new Fa(xa.instance);for(const a of t)a&&(e.containsKey(a)||e.set(a,a));for(let a=0;a<t.length;a++){var s;if(t[a])t[a]=null!==(s=e.get(t[a]))&&void 0!==s?s:null}}),"combineCommonParents"),wa=Ea(((t,e,s,a)=>{if(null!==a){let s=a.get(t,e);if(null!==s)return s;if(s=a.get(e,t),null!==s)return s}const r=ba(t,e,s);if(null!==r)return null!==a&&a.set(t,e,r),r;if(t.returnState===e.returnState){const r=ya(t.parent,e.parent,s,a);if(r===t.parent)return t;if(r===e.parent)return e;const i=da.create(r,t.returnState);return null!==a&&a.set(t,e,i),i}{let s=null;if((t===e||null!==t.parent&&t.parent===e.parent)&&(s=t.parent),null!==s){const r=[t.returnState,e.returnState];t.returnState>e.returnState&&(r[0]=e.returnState,r[1]=t.returnState);const i=new Ma([s,s],r);return null!==a&&a.set(t,e,i),i}const r=[t.returnState,e.returnState];let i=[t.parent,e.parent];t.returnState>e.returnState&&(r[0]=e.returnState,r[1]=t.returnState,i=[e.parent,t.parent]);const c=new Ma(i,r);return null!==a&&a.set(t,e,c),c}}),"mergeSingletons"),ba=Ea(((t,e,s)=>{if(s){if(t===ua.EMPTY||e===ua.EMPTY)return ua.EMPTY}else{if(t===ua.EMPTY&&e===ua.EMPTY)return ua.EMPTY;if(t===ua.EMPTY){const t=[e.returnState,ua.EMPTY_RETURN_STATE],s=[e.parent,null];return new Ma(s,t)}if(e===ua.EMPTY){const e=[t.returnState,ua.EMPTY_RETURN_STATE],s=[t.parent,null];return new Ma(s,e)}}return null}),"mergeRoot"),Wa=(y=class{constructor(t){(0,js.Z)(this,"data",void 0),this.data=t?new Uint32Array(t.map((t=>t>>>0))):new Uint32Array(1)}[Symbol.iterator](){const t=this.data.length;let e=0,s=this.data[e];const a=this.data;return{[Symbol.iterator](){return this},next:()=>{for(;e<t;){if(0!==s){const t=s&-s,a=(e<<5)+this.bitCount(t-1);return s^=t,{done:!1,value:a}}e++,e<t&&(s=a[e])}return{done:!0,value:void 0}}}}clear(t){void 0===t?this.data=new Uint32Array:(this.resize(t),this.data[t>>>5]&=~(1<<t))}or(t){const e=Math.min(this.data.length,t.data.length);for(let s=0;s<e;++s)this.data[s]|=t.data[s];if(this.data.length<t.data.length){this.resize((t.data.length<<5)-1);const s=t.data.length;for(let a=e;a<s;++a)this.data[a]=t.data[a]}}get(t){if(t<0)throw new RangeError("index cannot be negative");const e=t>>>5;return!(e>=this.data.length)&&0!==(this.data[e]&1<<t%32)}get length(){let t=0;const e=this.data.length,s=this.data;for(let a=0;a<e;a++)t+=this.bitCount(s[a]);return t}values(){const t=new Array(this.length);let e=0;const s=this.data.length;for(let a=0;a<s;++a){let s=this.data[a];for(;0!==s;){const r=s&-s;t[e++]=(a<<5)+this.bitCount(r-1),s^=r}}return t}nextSetBit(t){if(t<0)throw new RangeError("index cannot be negative");for(const e of this)if(e>t)return e}set(t){if(t<0)throw new RangeError("index cannot be negative");this.resize(t),this.data[t>>>5]|=1<<t%32}toString(){return"{"+this.values().join(", ")+"}"}resize(t){const e=t+32>>>5;if(e<=this.data.length)return;const s=new Uint32Array(e);s.set(this.data),s.fill(0,this.data.length),this.data=s}bitCount(t){return t=(t=(858993459&(t-=t>>1&1431655765))+(t>>2&858993459))+(t>>4)&252645135,t+=t>>8,63&(t+=t>>16)}},Ea(y,"BitSet"),y),Va=(f=class{constructor(){(0,js.Z)(this,"stateNumber",0),(0,js.Z)(this,"ruleIndex",0),(0,js.Z)(this,"epsilonOnlyTransitions",!1),(0,js.Z)(this,"nextTokenWithinRule",void 0),(0,js.Z)(this,"transitions",[])}hashCode(){return this.stateNumber}equals(t){return this.stateNumber===t.stateNumber}toString(){return"".concat(this.stateNumber)}addTransitionAtIndex(t,e){0===this.transitions.length?this.epsilonOnlyTransitions=e.isEpsilon:this.epsilonOnlyTransitions!==e.isEpsilon&&(this.epsilonOnlyTransitions=!1),this.transitions.splice(t,1,e)}addTransition(t){0===this.transitions.length?this.epsilonOnlyTransitions=t.isEpsilon:this.epsilonOnlyTransitions!==t.isEpsilon&&(this.epsilonOnlyTransitions=!1),this.transitions.push(t)}setTransition(t,e){this.transitions.splice(t,1,e)}removeTransition(t){return this.transitions.splice(t,1)[0]}},Ea(f,"ATNState"),(0,js.Z)(f,"INVALID_STATE_NUMBER",-1),(0,js.Z)(f,"INVALID_TYPE",0),(0,js.Z)(f,"BASIC",1),(0,js.Z)(f,"RULE_START",2),(0,js.Z)(f,"BLOCK_START",3),(0,js.Z)(f,"PLUS_BLOCK_START",4),(0,js.Z)(f,"STAR_BLOCK_START",5),(0,js.Z)(f,"TOKEN_START",6),(0,js.Z)(f,"RULE_STOP",7),(0,js.Z)(f,"BLOCK_END",8),(0,js.Z)(f,"STAR_LOOP_BACK",9),(0,js.Z)(f,"STAR_LOOP_ENTRY",10),(0,js.Z)(f,"PLUS_LOOP_BACK",11),(0,js.Z)(f,"LOOP_END",12),(0,js.Z)(f,"stateType",f.INVALID_STATE_NUMBER),f),Xa=(Y=class t{constructor(){(0,js.Z)(this,"cachedHashCode",void 0)}static andContext(e,s){if(null===e||e===t.NONE)return s;if(null===s||s===t.NONE)return e;const a=new Ka(e,s);return 1===a.operands.length?a.operands[0]:a}static orContext(e,s){if(null===e)return s;if(null===s)return e;if(e===t.NONE||s===t.NONE)return t.NONE;const a=new Qa(e,s);return 1===a.operands.length?a.operands[0]:a}static filterPrecedencePredicates(e){const s=[];for(const a of e)a instanceof t.PrecedencePredicate&&s.push(a);return s}evalPrecedence(t,e){return this}},Ea(Y,"SemanticContext"),Y),Ka=(w=class t extends Xa{constructor(e,s){super(),(0,js.Z)(this,"operands",void 0);const a=new Ha;e instanceof t?e.operands.forEach((t=>{a.add(t)})):a.add(e),s instanceof t?s.operands.forEach((t=>{a.add(t)})):a.add(s);const r=Xa.filterPrecedencePredicates(a);if(r.length>0){let t=null;r.forEach((e=>{(null===t||e.precedence<t.precedence)&&(t=e)})),t&&a.add(t)}this.operands=a.toArray()}equals(e){return this===e||e instanceof t&&Ca(this.operands,e.operands)}hashCode(){if(void 0===this.cachedHashCode){let t=Aa.initialize();for(const e of this.operands)t=Aa.updateFromComparable(t,e);t=Aa.update(t,3813686060),this.cachedHashCode=Aa.finish(t,this.operands.length+1)}return this.cachedHashCode}evaluate(t,e){for(const s of this.operands)if(!s.evaluate(t,e))return!1;return!0}evalPrecedence(t,e){let s=!1;const a=[];for(const i of this.operands){const r=i.evalPrecedence(t,e);if(s||(s=r!==i),null===r)return null;r!==Xa.NONE&&a.push(r)}if(!s)return this;if(0===a.length)return Xa.NONE;let r=null;return a.forEach((t=>{r=null===r?t:Xa.andContext(r,t)})),r}toString(){const t=this.operands.map((t=>t.toString()));return(t.length>3?t.slice(3):t).join("&&")}},Ea(w,"AND"),w),Qa=(b=class t extends Xa{constructor(e,s){super(),(0,js.Z)(this,"operands",void 0);const a=new Ha;e instanceof t?e.operands.forEach((t=>{a.add(t)})):a.add(e),s instanceof t?s.operands.forEach((t=>{a.add(t)})):a.add(s);const r=Xa.filterPrecedencePredicates(a);if(r.length>0){const t=r.sort(((t,e)=>t.compareTo(e))),e=t[t.length-1];a.add(e)}this.operands=a.toArray()}equals(e){return this===e||e instanceof t&&Ca(this.operands,e.operands)}hashCode(){if(void 0===this.cachedHashCode){let t=Aa.initialize();for(const e of this.operands)t=Aa.updateFromComparable(t,e);t=Aa.update(t,3383313031),this.cachedHashCode=Aa.finish(t,this.operands.length+1)}return this.cachedHashCode}evaluate(t,e){for(const s of this.operands)if(s.evaluate(t,e))return!0;return!1}evalPrecedence(t,e){let s=!1;const a=[];for(const i of this.operands){const r=i.evalPrecedence(t,e);if(s||(s=r!==i),r===Xa.NONE)return Xa.NONE;null!==r&&a.push(r)}if(!s)return this;if(0===a.length)return null;let r=null;return a.forEach((t=>{r=null===r?t:Xa.orContext(r,t)})),r}toString(){const t=this.operands.map((t=>t.toString()));return(t.length>3?t.slice(3):t).join("||")}},Ea(b,"OR"),b);(t=>{class e extends t{constructor(t,e,s){super(),(0,js.Z)(this,"ruleIndex",void 0),(0,js.Z)(this,"predIndex",void 0),(0,js.Z)(this,"isCtxDependent",void 0),this.ruleIndex=null!==t&&void 0!==t?t:-1,this.predIndex=null!==e&&void 0!==e?e:-1,this.isCtxDependent=null!==s&&void 0!==s&&s}evaluate(t,e){const s=this.isCtxDependent?e:null;return t.sempred(s,this.ruleIndex,this.predIndex)}hashCode(){if(void 0===this.cachedHashCode){let t=Aa.initialize();t=Aa.update(t,this.ruleIndex),t=Aa.update(t,this.predIndex),t=Aa.update(t,this.isCtxDependent?1:0),t=Aa.finish(t,3),this.cachedHashCode=t}return this.cachedHashCode}equals(t){return this===t||this.ruleIndex===t.ruleIndex&&this.predIndex===t.predIndex&&this.isCtxDependent===t.isCtxDependent}toString(){return"{"+this.ruleIndex+":"+this.predIndex+"}?"}}Ea(e,"Predicate"),t.Predicate=e;class s extends t{constructor(t){super(),(0,js.Z)(this,"precedence",void 0),this.precedence=null!==t&&void 0!==t?t:0}evaluate(t,e){return t.precpred(e,this.precedence)}evalPrecedence(e,s){return e.precpred(null!==s&&void 0!==s?s:null,this.precedence)?t.NONE:null}compareTo(t){return this.precedence-t.precedence}hashCode(){return 31+this.precedence}equals(t){return this===t||this.precedence===t.precedence}toString(){return"{"+this.precedence+">=prec}?"}}Ea(s,"PrecedencePredicate"),t.PrecedencePredicate=s,t.NONE=new e})(Xa||(Xa={}));var Ja,Za=(V=new WeakMap,X=new WeakMap,W=class t{get semanticContext(){return ea(this,X)}constructor(t,e,s,a){(0,js.Z)(this,"state",void 0),(0,js.Z)(this,"alt",void 0),(0,js.Z)(this,"reachesIntoOuterContext",!1),(0,js.Z)(this,"precedenceFilterSuppressed",!1),(0,js.Z)(this,"cachedHashCode",void 0),r(this,V,{writable:!0,value:null}),r(this,X,{writable:!0,value:void 0}),this.state=e,this.alt=t.alt,this.context=s,$s(this,X,null!==a&&void 0!==a?a:Xa.NONE),this.reachesIntoOuterContext=t.reachesIntoOuterContext,void 0!==t.precedenceFilterSuppressed&&(this.precedenceFilterSuppressed=t.precedenceFilterSuppressed)}static duplicate(e,s){return new t(e,e.state,e.context,null!==s&&void 0!==s?s:e.semanticContext)}static createWithContext(e,s,a,r){return new t({alt:s},e,a,r)}static createWithConfig(e,s,a){return new t(s,e,null!==a&&void 0!==a?a:s.context,s.semanticContext)}static createWithSemanticContext(e,s,a){return new t(s,null!==e&&void 0!==e?e:s.state,s.context,a)}hashCode(){if(void 0===this.cachedHashCode){let t=Aa.initialize(7);t=Aa.update(t,this.state.stateNumber),t=Aa.update(t,this.alt),t=Aa.updateFromComparable(t,ea(this,V)),t=Aa.updateFromComparable(t,this.semanticContext),t=Aa.finish(t,4),this.cachedHashCode=t}return this.cachedHashCode}get context(){return ea(this,V)}set context(t){$s(this,V,t),this.cachedHashCode=void 0}equals(t){return this===t||this.state.stateNumber===t.state.stateNumber&&this.alt===t.alt&&(null===this.context?null===t.context:this.context.equals(t.context))&&this.semanticContext.equals(t.semanticContext)&&this.precedenceFilterSuppressed===t.precedenceFilterSuppressed}toString(t){let e="";return(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(e=","+this.alt),"("+this.state+e+(null!==this.context?",["+this.context.toString()+"]":"")+(this.semanticContext!==Xa.NONE?","+this.semanticContext.toString():"")+(this.reachesIntoOuterContext?",up="+this.reachesIntoOuterContext:"")+")"}},Ea(W,"ATNConfig"),W),qa=(Q=new WeakMap,K=class t{constructor(){r(this,Q,{writable:!0,value:void 0})}getDecisionLookahead(e){if(!e)return;const s=e.transitions.length,a=new Array(s);for(let r=0;r<s;r++){const s=new Sa,i=new Ha;this.doLook(e.transitions[r].target,void 0,ua.EMPTY,s,i,new Wa,!1,!1),s.length>0&&!s.contains(t.hitPredicate)&&(a[r]=s)}return a}look(t,e,s,a){$s(this,Q,t);const r=new Sa,i=a?va(t,a):null;return this.doLook(e,s,i,r,new Ha,new Wa,!0,!0),r}doLook(e,s,a,r,i,c,n,h){const E=Za.createWithContext(e,0,a);if(!i.get(E)){if(i.add(E),e===s){if(!a)return void r.addOne(ca.EPSILON);if(a.isEmpty()&&h)return void r.addOne(ca.EOF)}if(e.constructor.stateType===Va.RULE_STOP){if(!a)return void r.addOne(ca.EPSILON);if(a.isEmpty()&&h)return void r.addOne(ca.EOF);if(a!==ua.EMPTY){const t=c.get(e.ruleIndex);try{c.clear(e.ruleIndex);for(let t=0;t<a.length;t++){const e=ea(this,Q).states[a.getReturnState(t)];this.doLook(e,s,a.getParent(t),r,i,c,n,h)}}finally{t&&c.set(e.ruleIndex)}return}}for(const E of e.transitions)switch(E.transitionType){case la.RULE:{if(c.get(E.target.ruleIndex))continue;const t=da.create(null!==a&&void 0!==a?a:void 0,E.followState.stateNumber);try{c.set(E.target.ruleIndex),this.doLook(E.target,s,t,r,i,c,n,h)}finally{c.clear(E.target.ruleIndex)}break}case la.PREDICATE:case la.PRECEDENCE:n?this.doLook(E.target,s,a,r,i,c,n,h):r.addOne(t.hitPredicate);break;case la.WILDCARD:r.addRange(ca.MIN_USER_TOKEN_TYPE,ea(this,Q).maxTokenType);break;default:if(E.isEpsilon)this.doLook(E.target,s,a,r,i,c,n,h);else{let t=E.label;t&&(E instanceof Ia&&(t=t.complement(ca.MIN_USER_TOKEN_TYPE,ea(this,Q).maxTokenType)),r.addSet(t))}}}}},Ea(K,"LL1Analyzer"),(0,js.Z)(K,"hitPredicate",ca.INVALID_TYPE),K),ja=(J=class t{constructor(t,e){(0,js.Z)(this,"grammarType",void 0),(0,js.Z)(this,"maxTokenType",void 0),(0,js.Z)(this,"states",[]),(0,js.Z)(this,"decisionToState",[]),(0,js.Z)(this,"ruleToStartState",[]),(0,js.Z)(this,"ruleToStopState",[]),(0,js.Z)(this,"modeNameToStartState",new Map),(0,js.Z)(this,"ruleToTokenType",[]),(0,js.Z)(this,"lexerActions",[]),(0,js.Z)(this,"modeToStartState",[]),this.grammarType=t,this.maxTokenType=e}nextTokens(e,s){if(!s&&e.nextTokenWithinRule)return e.nextTokenWithinRule;const a=aa(t,J,Z).look(this,e,void 0,s);return s||(e.nextTokenWithinRule=a),a}addState(t){t&&(t.stateNumber=this.states.length),this.states.push(t)}removeState(t){this.states[t.stateNumber]=null}defineDecisionState(t){return this.decisionToState.push(t),t.decision=this.decisionToState.length-1,t.decision}getDecisionState(t){return 0===this.decisionToState.length?null:this.decisionToState[t]}getNumberOfDecisions(){return this.decisionToState.length}getExpectedTokens(t,e){if(t<0||t>=this.states.length)throw new Error("Invalid state number.");const s=this.states[t];let a=this.nextTokens(s);if(!a.contains(ca.EPSILON))return a;let r=e;const i=new Sa;for(i.addSet(a),i.removeOne(ca.EPSILON);null!==r&&r.invokingState>=0&&a.contains(ca.EPSILON);){const t=this.states[r.invokingState].transitions[0];a=this.nextTokens(t.followState),i.addSet(a),i.removeOne(ca.EPSILON),r=r.parent}return a.contains(ca.EPSILON)&&i.addOne(ca.EOF),i}},Ea(J,"ATN"),(0,js.Z)(J,"INVALID_ALT_NUMBER",0),(0,js.Z)(J,"LEXER",0),(0,js.Z)(J,"PARSER",1),Z={writable:!0,value:new qa},J),za=(q=class{hashCode(t){let e=7;return e=31*e+t.state.stateNumber,e=31*e+t.alt,e=31*e+t.semanticContext.hashCode(),e}equals(t,e){return t===e||t.state.stateNumber===e.state.stateNumber&&t.alt===e.alt&&t.semanticContext.equals(e.semanticContext)}},Ea(q,"KeyTypeEqualityComparer"),(0,js.Z)(q,"instance",new q),q),$a=(z=new WeakMap,j=class{constructor(t){if((0,js.Z)(this,"configLookup",new Ha(za.instance)),(0,js.Z)(this,"configs",[]),(0,js.Z)(this,"uniqueAlt",0),(0,js.Z)(this,"hasSemanticContext",!1),(0,js.Z)(this,"dipsIntoOuterContext",!1),(0,js.Z)(this,"fullCtx",!1),(0,js.Z)(this,"readOnly",!1),(0,js.Z)(this,"conflictingAlts",null),(0,js.Z)(this,"firstStopState",void 0),r(this,z,{writable:!0,value:-1}),void 0!==t)if("boolean"===typeof t)this.fullCtx=null===t||void 0===t||t;else{const e=t;this.addAll(e.configs),this.uniqueAlt=e.uniqueAlt,this.conflictingAlts=e.conflictingAlts,this.hasSemanticContext=e.hasSemanticContext,this.dipsIntoOuterContext=e.dipsIntoOuterContext}}[Symbol.iterator](){return this.configs[Symbol.iterator]()}add(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(this.readOnly)throw new Error("This set is readonly");this.firstStopState||t.state.constructor.stateType!==Va.RULE_STOP||(this.firstStopState=t),this.hasSemanticContext||(this.hasSemanticContext=t.semanticContext!==Xa.NONE),this.dipsIntoOuterContext||(this.dipsIntoOuterContext=t.reachesIntoOuterContext);const s=this.configLookup.getOrAdd(t);if(s===t)return $s(this,z,-1),void this.configs.push(t);const a=!this.fullCtx,r=ya(s.context,t.context,a,e);s.reachesIntoOuterContext||(s.reachesIntoOuterContext=t.reachesIntoOuterContext),s.precedenceFilterSuppressed||(s.precedenceFilterSuppressed=t.precedenceFilterSuppressed),s.context=r}get elements(){return this.configs}getAlts(){const t=new Wa;for(const e of this.configs)t.set(e.alt);return t}getPredicates(){const t=[];for(const e of this.configs)e.semanticContext!==Xa.NONE&&t.push(e.semanticContext);return t}getStates(){const t=new Ha;for(const e of this.configs)t.add(e.state);return t}optimizeConfigs(t){if(this.readOnly)throw new Error("This set is readonly");if(0!==this.configLookup.size)for(const e of this.configs)e.context=t.getCachedContext(e.context)}addAll(t){for(const e of t)this.add(e);return!1}equals(t){return this===t||!(this.fullCtx!==t.fullCtx||this.uniqueAlt!==t.uniqueAlt||this.conflictingAlts!==t.conflictingAlts||this.hasSemanticContext!==t.hasSemanticContext||this.dipsIntoOuterContext!==t.dipsIntoOuterContext||!Ca(this.configs,t.configs))}hashCode(){return-1===ea(this,z)&&$s(this,z,this.computeHashCode()),ea(this,z)}get length(){return this.configs.length}isEmpty(){return 0===this.configs.length}contains(t){if(null===this.configLookup)throw new Error("This method is not implemented for readonly sets.");return this.configLookup.contains(t)}containsFast(t){if(null===this.configLookup)throw new Error("This method is not implemented for readonly sets.");return this.configLookup.contains(t)}clear(){if(this.readOnly)throw new Error("This set is readonly");this.configs=[],$s(this,z,-1),this.configLookup=new Ha(za.instance)}setReadonly(t){this.readOnly=t,t&&(this.configLookup=null)}toString(){return La(this.configs)+(this.hasSemanticContext?",hasSemanticContext="+this.hasSemanticContext:"")+(this.uniqueAlt!==ja.INVALID_ALT_NUMBER?",uniqueAlt="+this.uniqueAlt:"")+(null!==this.conflictingAlts?",conflictingAlts="+this.conflictingAlts:"")+(this.dipsIntoOuterContext?",dipsIntoOuterContext":"")}computeHashCode(){let t=Aa.initialize();return this.configs.forEach((e=>{t=Aa.update(t,e.hashCode())})),t=Aa.finish(t,this.configs.length),t}},Ea(j,"ATNConfigSet"),j),tr=(Ea($=class extends Va{},"BasicState"),(0,js.Z)($,"stateType",Va.BASIC),$),er=(Ea(tt=class extends Va{constructor(){super(...arguments),(0,js.Z)(this,"decision",-1),(0,js.Z)(this,"nonGreedy",!1)}},"DecisionState"),tt),sr=(Ea(et=class extends er{constructor(){super(...arguments),(0,js.Z)(this,"endState",void 0)}},"BlockStartState"),et),ar=(Ea(st=class extends Va{constructor(){super(...arguments),(0,js.Z)(this,"startState",void 0)}},"BlockEndState"),(0,js.Z)(st,"stateType",Va.BLOCK_END),st),rr=(Ea(at=class extends Va{constructor(){super(...arguments),(0,js.Z)(this,"loopBackState",void 0)}},"LoopEndState"),(0,js.Z)(at,"stateType",Va.LOOP_END),at),ir=(Ea(rt=class extends Va{constructor(){super(...arguments),(0,js.Z)(this,"stopState",void 0),(0,js.Z)(this,"isLeftRecursiveRule",!1),(0,js.Z)(this,"isPrecedenceRule",!1)}},"RuleStartState"),(0,js.Z)(rt,"stateType",Va.RULE_START),rt),cr=(Ea(it=class extends Va{},"RuleStopState"),(0,js.Z)(it,"stateType",Va.RULE_STOP),it),nr=(Ea(ct=class extends er{},"TokensStartState"),(0,js.Z)(ct,"stateType",Va.TOKEN_START),ct),hr=(Ea(nt=class extends er{},"PlusLoopbackState"),(0,js.Z)(nt,"stateType",Va.PLUS_LOOP_BACK),nt),Er=(Ea(ht=class extends Va{},"StarLoopbackState"),(0,js.Z)(ht,"stateType",Va.STAR_LOOP_BACK),ht),Tr=(Ea(Et=class extends er{constructor(){super(...arguments),(0,js.Z)(this,"loopBackState",void 0),(0,js.Z)(this,"precedenceRuleDecision",!1)}},"StarLoopEntryState"),(0,js.Z)(Et,"stateType",Va.STAR_LOOP_ENTRY),Et),or=(Ea(Tt=class extends sr{constructor(){super(...arguments),(0,js.Z)(this,"loopBackState",void 0)}},"PlusBlockStartState"),(0,js.Z)(Tt,"stateType",Va.PLUS_BLOCK_START),Tt),Rr=(Ea(ot=class extends sr{},"StarBlockStartState"),(0,js.Z)(ot,"stateType",Va.STAR_BLOCK_START),ot),Ar=(Ea(Rt=class extends sr{},"BasicBlockStartState"),(0,js.Z)(Rt,"stateType",Va.BLOCK_START),Rt),Sr=(St=new WeakMap,Ea(At=class extends la{constructor(t,e){super(t),(0,js.Z)(this,"labelValue",void 0),r(this,St,{writable:!0,value:void 0}),this.labelValue=e,$s(this,St,Sa.of(e,e))}get label(){return ea(this,St)}get transitionType(){return la.ATOM}matches(t){return this.labelValue===t}toString(){return this.labelValue.toString()}},"AtomTransition"),At),lr=(Ea(lt=class extends la{constructor(t,e,s,a){super(t),(0,js.Z)(this,"ruleIndex",void 0),(0,js.Z)(this,"precedence",void 0),(0,js.Z)(this,"followState",void 0),this.ruleIndex=e,this.precedence=s,this.followState=a}get isEpsilon(){return!0}get transitionType(){return la.RULE}matches(t,e,s){return!1}},"RuleTransition"),lt),Or=(It=new WeakMap,Ea(Ot=class extends la{constructor(t,e,s){super(t),(0,js.Z)(this,"start",void 0),(0,js.Z)(this,"stop",void 0),r(this,It,{writable:!0,value:new Sa}),this.start=e,this.stop=s,ea(this,It).addRange(e,s)}get label(){return ea(this,It)}get transitionType(){return la.RANGE}matches(t,e,s){return t>=this.start&&t<=this.stop}toString(){return"'"+String.fromCharCode(this.start)+"'..'"+String.fromCharCode(this.stop)+"'"}},"RangeTransition"),Ot),Ir=(Ea(ut=class extends la{constructor(t,e,s,a){super(t),(0,js.Z)(this,"ruleIndex",void 0),(0,js.Z)(this,"actionIndex",void 0),(0,js.Z)(this,"isCtxDependent",void 0),this.ruleIndex=e,this.actionIndex=void 0===s?-1:s,this.isCtxDependent=void 0!==a&&a}get isEpsilon(){return!0}get transitionType(){return la.ACTION}matches(t,e,s){return!1}toString(){return"action_"+this.ruleIndex+":"+this.actionIndex}},"ActionTransition"),ut),ur=(Lt=new WeakMap,Ea(Nt=class extends la{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;super(t),r(this,Lt,{writable:!0,value:void 0}),$s(this,Lt,e)}get outermostPrecedenceReturn(){return ea(this,Lt)}get isEpsilon(){return!0}get transitionType(){return la.EPSILON}matches(){return!1}toString(){return"epsilon"}},"EpsilonTransition"),Nt),Nr=(Ea(Ct=class extends la{get transitionType(){return la.WILDCARD}matches(t,e,s){return t>=e&&t<=s}toString(){return"."}},"WildcardTransition"),Ct),Lr=(Ea(_t=class extends la{constructor(t){super(t)}},"AbstractPredicateTransition"),_t),Cr=(Ea(Pt=class extends Lr{constructor(t,e,s,a){super(t),(0,js.Z)(this,"ruleIndex",void 0),(0,js.Z)(this,"predIndex",void 0),(0,js.Z)(this,"isCtxDependent",void 0),this.ruleIndex=e,this.predIndex=s,this.isCtxDependent=a}get isEpsilon(){return!0}matches(t,e,s){return!1}get transitionType(){return la.PREDICATE}getPredicate(){return new Xa.Predicate(this.ruleIndex,this.predIndex,this.isCtxDependent)}toString(){return"pred_"+this.ruleIndex+":"+this.predIndex}},"PredicateTransition"),Pt),_r=(Ea(Mt=class extends Lr{constructor(t,e){super(t),(0,js.Z)(this,"precedence",void 0),this.precedence=e}get isEpsilon(){return!0}matches(t,e,s){return!1}getPredicate(){return new Xa.PrecedencePredicate(this.precedence)}get transitionType(){return la.PRECEDENCE}toString(){return this.precedence+" >= _p"}},"PrecedencePredicateTransition"),Mt),Pr=0,Mr=1,dr=2,Ur=3,mr=4,Dr=5,pr=6,gr=7,xr=(Ea(dt=class{constructor(){(0,js.Z)(this,"actionType",void 0),(0,js.Z)(this,"isPositionDependent",!1),this.actionType=pr}equals(t){return t===this}hashCode(){return pr}execute(t){t.skip()}toString(){return"skip"}},"LexerSkipAction"),(0,js.Z)(dt,"instance",new dt),dt),kr=(mt=new WeakMap,Ea(Ut=class t{constructor(t){(0,js.Z)(this,"channel",void 0),(0,js.Z)(this,"actionType",void 0),(0,js.Z)(this,"isPositionDependent",!1),r(this,mt,{writable:!0,value:void 0}),this.actionType=Pr,this.channel=t}execute(t){t.channel=this.channel}hashCode(){if(void 0===ea(this,mt)){let t=Aa.initialize();t=Aa.update(t,this.actionType),t=Aa.update(t,this.channel),$s(this,mt,Aa.finish(t,2))}return ea(this,mt)}equals(e){return this===e||e instanceof t&&this.channel===e.channel}toString(){return"channel("+this.channel+")"}},"LexerChannelAction"),Ut),Hr=(pt=new WeakMap,Ea(Dt=class t{constructor(t,e){(0,js.Z)(this,"ruleIndex",void 0),(0,js.Z)(this,"actionIndex",void 0),(0,js.Z)(this,"actionType",void 0),(0,js.Z)(this,"isPositionDependent",!0),r(this,pt,{writable:!0,value:void 0}),this.actionType=Mr,this.ruleIndex=t,this.actionIndex=e}execute(t){t.action(null,this.ruleIndex,this.actionIndex)}hashCode(){if(void 0===ea(this,pt)){let t=Aa.initialize();t=Aa.update(t,this.actionType),t=Aa.update(t,this.ruleIndex),t=Aa.update(t,this.actionIndex),$s(this,pt,Aa.finish(t,3))}return ea(this,pt)}equals(e){return this===e||e instanceof t&&(this.ruleIndex===e.ruleIndex&&this.actionIndex===e.actionIndex)}},"LexerCustomAction"),Dt),Gr=(Ea(gt=class{constructor(){(0,js.Z)(this,"actionType",void 0),(0,js.Z)(this,"isPositionDependent",!1),this.actionType=Ur}equals(t){return t===this}hashCode(){return Ur}execute(t){t.more()}toString(){return"more"}},"LexerMoreAction"),(0,js.Z)(gt,"instance",new gt),gt),Fr=(kt=new WeakMap,Ea(xt=class t{constructor(t){(0,js.Z)(this,"type",void 0),(0,js.Z)(this,"actionType",void 0),(0,js.Z)(this,"isPositionDependent",!1),r(this,kt,{writable:!0,value:void 0}),this.actionType=gr,this.type=t}execute(t){t.type=this.type}hashCode(){if(void 0===ea(this,kt)){let t=Aa.initialize();t=Aa.update(t,this.actionType),t=Aa.update(t,this.type),$s(this,kt,Aa.finish(t,2))}return ea(this,kt)}equals(e){return this===e||e instanceof t&&this.type===e.type}toString(){return"type("+this.type+")"}},"LexerTypeAction"),xt),vr=(Gt=new WeakMap,Ea(Ht=class t{constructor(t){(0,js.Z)(this,"mode",void 0),(0,js.Z)(this,"actionType",void 0),(0,js.Z)(this,"isPositionDependent",!1),r(this,Gt,{writable:!0,value:void 0}),this.actionType=Dr,this.mode=t}execute(t){t.pushMode(this.mode)}hashCode(){if(void 0===ea(this,Gt)){let t=Aa.initialize();t=Aa.update(t,this.actionType),t=Aa.update(t,this.mode),$s(this,Gt,Aa.finish(t,2))}return ea(this,Gt)}equals(e){return this===e||e instanceof t&&this.mode===e.mode}toString(){return"pushMode("+this.mode+")"}},"LexerPushModeAction"),Ht),Br=(Ea(Ft=class{constructor(){(0,js.Z)(this,"actionType",void 0),(0,js.Z)(this,"isPositionDependent",!1),this.actionType=mr}equals(t){return t===this}hashCode(){return mr}execute(t){t.popMode()}toString(){return"popMode"}},"LexerPopModeAction"),(0,js.Z)(Ft,"instance",new Ft),Ft),yr=(Bt=new WeakMap,Ea(vt=class t{constructor(t){(0,js.Z)(this,"mode",void 0),(0,js.Z)(this,"actionType",void 0),(0,js.Z)(this,"isPositionDependent",!1),r(this,Bt,{writable:!0,value:void 0}),this.actionType=dr,this.mode=t}execute(t){t.mode=this.mode}hashCode(){if(void 0===ea(this,Bt)){let t=Aa.initialize();t=Aa.update(t,this.actionType),t=Aa.update(t,this.mode),$s(this,Bt,Aa.finish(t,2))}return ea(this,Bt)}equals(e){return this===e||e instanceof t&&this.mode===e.mode}toString(){return"mode("+this.mode+")"}},"LexerModeAction"),vt),fr=(yt=class t{constructor(t){(0,js.Z)(this,"data",[]),(0,js.Z)(this,"pos",0),(0,js.Z)(this,"deserializationOptions",void 0),(0,js.Z)(this,"actionFactories",void 0),t||(t={readOnly:!1,verifyATN:!0,generateRuleBypassTransitions:!1}),this.deserializationOptions=t}deserialize(t){this.data=t,this.checkVersion();const e=this.readATN();this.readStates(e),this.readRules(e),this.readModes(e);const s=[];return this.readSets(e,s),this.readEdges(e,s),this.readDecisions(e),this.readLexerActions(e),this.markPrecedenceDecisions(e),this.verifyATN(e),this.deserializationOptions.generateRuleBypassTransitions&&e.grammarType===ja.PARSER&&(this.generateRuleBypassTransitions(e),this.verifyATN(e)),e}checkVersion(){const e=this.data[this.pos++];if(e!==t.SERIALIZED_VERSION)throw new Error("Could not deserialize ATN with version "+e+" (expected "+t.SERIALIZED_VERSION+").")}readATN(){const t=this.data[this.pos++],e=this.data[this.pos++];return new ja(t,e)}readStates(t){let e,s;const a=[],r=[],i=this.data[this.pos++];for(let E=0;E<i;E++){const e=this.data[this.pos++];if(e===Va.INVALID_TYPE){t.addState(null);continue}const s=this.data[this.pos++],i=this.stateFactory(e,s);if(e===Va.LOOP_END){const t=this.data[this.pos++];a.push([i,t])}else if(i instanceof sr){const t=this.data[this.pos++];r.push([i,t])}t.addState(i)}for(e=0;e<a.length;e++){var c;const s=a[e];s[0].loopBackState=null!==(c=t.states[s[1]])&&void 0!==c?c:void 0}for(e=0;e<r.length;e++){const s=r[e];s[0].endState=t.states[s[1]]}const n=this.data[this.pos++];for(e=0;e<n;e++)s=this.data[this.pos++],t.states[s].nonGreedy=!0;const h=this.data[this.pos++];for(e=0;e<h;e++)s=this.data[this.pos++],t.states[s].isPrecedenceRule=!0}readRules(t){let e;const s=this.data[this.pos++];for(t.grammarType===ja.LEXER&&(t.ruleToTokenType=new Array(s),t.ruleToTokenType.fill(0)),t.ruleToStartState=new Array(s),t.ruleToStartState.fill(null),e=0;e<s;e++){const s=this.data[this.pos++];if(t.ruleToStartState[e]=t.states[s],t.grammarType===ja.LEXER){const s=this.data[this.pos++];t.ruleToTokenType[e]=s}}for(t.ruleToStopState=new Array(s),t.ruleToStopState.fill(null),e=0;e<t.states.length;e++){const s=t.states[e];s instanceof cr&&(t.ruleToStopState[s.ruleIndex]=s,t.ruleToStartState[s.ruleIndex].stopState=s)}}readModes(t){const e=this.data[this.pos++];for(let s=0;s<e;s++){const e=this.data[this.pos++];t.modeToStartState.push(t.states[e])}}readSets(t,e){const s=this.data[this.pos++];for(let a=0;a<s;a++){const t=new Sa;e.push(t);const s=this.data[this.pos++];0!==this.data[this.pos++]&&t.addOne(-1);for(let e=0;e<s;e++){const e=this.data[this.pos++],s=this.data[this.pos++];t.addRange(e,s)}}}readEdges(t,e){let s,a,r,i,c;const n=this.data[this.pos++];for(s=0;s<n;s++){const s=this.data[this.pos++],a=this.data[this.pos++],r=this.data[this.pos++],c=this.data[this.pos++],n=this.data[this.pos++],h=this.data[this.pos++];i=this.edgeFactory(t,r,a,c,n,h,e);t.states[s].addTransition(i)}for(s=0;s<t.states.length;s++)for(r=t.states[s],a=0;a<r.transitions.length;a++){const e=r.transitions[a];if(!(e instanceof lr))continue;let s=-1;t.ruleToStartState[e.target.ruleIndex].isPrecedenceRule&&0===e.precedence&&(s=e.target.ruleIndex),i=new ur(e.followState,s),t.ruleToStopState[e.target.ruleIndex].addTransition(i)}for(s=0;s<t.states.length;s++){if(r=t.states[s],r instanceof sr){if(!r.endState)throw new Error("IllegalState");if(r.endState.startState)throw new Error("IllegalState");r.endState.startState=r}if(r instanceof hr)for(a=0;a<r.transitions.length;a++)c=r.transitions[a].target,c instanceof or&&(c.loopBackState=r);else if(r instanceof Er)for(a=0;a<r.transitions.length;a++)c=r.transitions[a].target,c instanceof Tr&&(c.loopBackState=r)}}readDecisions(t){const e=this.data[this.pos++];for(let s=0;s<e;s++){const e=this.data[this.pos++],a=t.states[e];t.decisionToState.push(a),a.decision=s}}readLexerActions(t){if(t.grammarType===ja.LEXER){const e=this.data[this.pos++];t.lexerActions=[];for(let s=0;s<e;s++){const e=this.data[this.pos++],s=this.data[this.pos++],a=this.data[this.pos++];t.lexerActions.push(this.lexerActionFactory(e,s,a))}}}generateRuleBypassTransitions(t){let e;const s=t.ruleToStartState.length;for(e=0;e<s;e++)t.ruleToTokenType[e]=t.maxTokenType+e+1;for(e=0;e<s;e++)this.generateRuleBypassTransition(t,e)}generateRuleBypassTransition(t,e){let s,a;const r=new Ar;r.ruleIndex=e,t.addState(r);const i=new ar;i.ruleIndex=e,t.addState(i),r.endState=i,t.defineDecisionState(r),i.startState=r;let c=null,n=null;if(t.ruleToStartState[e].isPrecedenceRule){for(n=null,s=0;s<t.states.length;s++)if(a=t.states[s],this.stateIsEndStateFor(a,e)){n=a,c=a.loopBackState.transitions[0];break}if(null===c)throw new Error("Couldn't identify final state of the precedence rule prefix section.")}else n=t.ruleToStopState[e];for(s=0;s<t.states.length;s++){a=t.states[s];for(const t of a.transitions)t!==c&&t.target===n&&(t.target=i)}const h=t.ruleToStartState[e],E=h.transitions.length;for(;E>0;)r.addTransition(h.transitions[E-1]),h.transitions=h.transitions.slice(-1);t.ruleToStartState[e].addTransition(new ur(r)),n&&i.addTransition(new ur(n));const T=new tr;t.addState(T),T.addTransition(new Sr(i,t.ruleToTokenType[e])),r.addTransition(new ur(T))}stateIsEndStateFor(t,e){if(t.ruleIndex!==e)return null;if(!(t instanceof Tr))return null;const s=t.transitions[t.transitions.length-1].target;return s instanceof rr&&s.epsilonOnlyTransitions&&s.transitions[0].target instanceof cr?t:null}markPrecedenceDecisions(t){for(const e of t.states)if(e instanceof Tr&&t.ruleToStartState[e.ruleIndex].isPrecedenceRule){const t=e.transitions[e.transitions.length-1].target;t instanceof rr&&t.epsilonOnlyTransitions&&t.transitions[0].target instanceof cr&&(e.precedenceRuleDecision=!0)}}verifyATN(t){if(this.deserializationOptions.verifyATN)for(const e of t.states)if(null!==e)if(this.checkCondition(e.epsilonOnlyTransitions||e.transitions.length<=1),e instanceof or)this.checkCondition(null!==e.loopBackState);else if(e instanceof Tr)if(this.checkCondition(null!==e.loopBackState),this.checkCondition(2===e.transitions.length),e.transitions[0].target instanceof Rr)this.checkCondition(e.transitions[1].target instanceof rr),this.checkCondition(!e.nonGreedy);else{if(!(e.transitions[0].target instanceof rr))throw new Error("IllegalState");this.checkCondition(e.transitions[1].target instanceof Rr),this.checkCondition(e.nonGreedy)}else e instanceof Er?(this.checkCondition(1===e.transitions.length),this.checkCondition(e.transitions[0].target instanceof Tr)):e instanceof rr?this.checkCondition(null!==e.loopBackState):e instanceof ir?this.checkCondition(null!==e.stopState):e instanceof sr?this.checkCondition(null!==e.endState):e instanceof ar?this.checkCondition(null!==e.startState):e instanceof er?this.checkCondition(e.transitions.length<=1||e.decision>=0):this.checkCondition(e.transitions.length<=1||e instanceof cr)}checkCondition(t,e){if(!t)throw void 0!==e&&null!==e||(e="IllegalState"),e}edgeFactory(t,e,s,a,r,i,c){const n=t.states[s];switch(e){case la.EPSILON:return new ur(n);case la.RANGE:return new Or(n,0!==i?ca.EOF:a,r);case la.RULE:return new lr(t.states[a],r,i,n);case la.PREDICATE:return new Cr(n,a,r,0!==i);case la.PRECEDENCE:return new _r(n,a);case la.ATOM:return new Sr(n,0!==i?ca.EOF:a);case la.ACTION:return new Ir(n,a,r,0!==i);case la.SET:return new Oa(n,c[a]);case la.NOT_SET:return new Ia(n,c[a]);case la.WILDCARD:return new Nr(n);default:throw new Error("The specified transition type: "+e+" is not valid.")}}stateFactory(e,s){const a=t.stateTypeMapper.get(e);if(!a)throw new Error("The specified state type "+e+" is not valid.");const r=new a;return r.ruleIndex=s,r}lexerActionFactory(e,s,a){const r=t.lexerActionFactoryMapper.get(e);if(!r)throw new Error("The specified lexer action type "+e+" is not valid.");return r(s,a)}},Ea(yt,"ATNDeserializer"),(0,js.Z)(yt,"SERIALIZED_VERSION",4),(0,js.Z)(yt,"stateTypeMapper",new Map([[Va.INVALID_TYPE,void 0],[Va.BASIC,tr],[Va.RULE_START,ir],[Va.BLOCK_START,Ar],[Va.PLUS_BLOCK_START,or],[Va.STAR_BLOCK_START,Rr],[Va.TOKEN_START,nr],[Va.RULE_STOP,cr],[Va.BLOCK_END,ar],[Va.STAR_LOOP_BACK,Er],[Va.STAR_LOOP_ENTRY,Tr],[Va.PLUS_LOOP_BACK,hr],[Va.LOOP_END,rr]])),(0,js.Z)(yt,"lexerActionFactoryMapper",new Map([[Pr,t=>new kr(t)],[Mr,(t,e)=>new Hr(t,e)],[dr,t=>new yr(t)],[Ur,()=>Gr.instance],[mr,()=>Br.instance],[Dr,t=>new vr(t)],[pr,()=>xr.instance],[gr,t=>new Fr(t)]])),yt),Yr=(Yt=new WeakMap,Ea(ft=class t extends Fa{constructor(){super(...arguments),r(this,Yt,{writable:!0,value:[]})}clear(){super.clear(),$s(this,Yt,[])}get(t){return super.get(t)}set(t,e){const s=super.set(t,e);return void 0===s&&ea(this,Yt).push(t),s}setIfAbsent(t,e){const s=super.setIfAbsent(t,e);return void 0===s&&ea(this,Yt).push(t),s}values(){return{[Symbol.iterator]:()=>{let t=0;return{next:()=>t<ea(this,Yt).length?{done:!1,value:super.get(ea(this,Yt)[t++])}:{done:!0,value:void 0}}}}}keys(){return ea(this,Yt)[Symbol.iterator]()}equals(e){return e instanceof t&&super.equals(e)}},"OrderedHashMap"),ft),wr=(wt=class t{constructor(t){(0,js.Z)(this,"atn",void 0),(0,js.Z)(this,"data",[]),(0,js.Z)(this,"sets",new Yr(xa.instance)),(0,js.Z)(this,"nonGreedyStates",[]),(0,js.Z)(this,"precedenceStates",[]),this.atn=t}static getSerialized(e){return new t(e).serialize()}static serializeSets(t,e){t.push(e.length);for(const s of e){const e=s.contains(ca.EOF);e&&s.get(0).stop===ca.EOF?t.push(s.length-1):t.push(s.length),t.push(e?1:0);for(const a of s){if(a.start===ca.EOF){if(a.stop===ca.EOF)continue;t.push(0)}else t.push(a.start);t.push(a.stop)}}}serialize(){this.addPreamble();const t=this.addEdges();this.addNonGreedyStates(),this.addPrecedenceStates(),this.addRuleStatesAndLexerTokenTypes(),this.addModeStartStates();let e=null;return e=this.addSets(),this.addEdges(t,e),this.addDecisionStartStates(),this.addLexerActions(),this.data}addPreamble(){this.data.push(fr.SERIALIZED_VERSION),this.data.push(this.atn.grammarType),this.data.push(this.atn.maxTokenType)}addLexerActions(){if(this.atn.grammarType===ja.LEXER){this.data.push(this.atn.lexerActions.length);for(const t of this.atn.lexerActions)switch(this.data.push(t.actionType),t.actionType){case Pr:{const e=t.channel;this.data.push(e),this.data.push(0);break}case Mr:{const e=t.ruleIndex,s=t.actionIndex;this.data.push(e),this.data.push(s);break}case dr:{const e=t.mode;this.data.push(e),this.data.push(0);break}case Ur:case mr:this.data.push(0),this.data.push(0);break;case Dr:{const e=t.mode;this.data.push(e),this.data.push(0);break}case pr:this.data.push(0),this.data.push(0);break;case gr:{const e=t.type;this.data.push(e),this.data.push(0);break}default:throw new Error("The specified lexer action type ".concat(t.actionType," is not valid."))}}}addDecisionStartStates(){this.data.push(this.atn.decisionToState.length);for(const t of this.atn.decisionToState)this.data.push(t.stateNumber)}addEdges(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];switch(e.length){case 0:{let t=0;this.data.push(this.atn.states.length);for(const e of this.atn.states){if(null===e){this.data.push(Va.INVALID_TYPE);continue}const s=e.constructor.stateType;e instanceof er&&e.nonGreedy&&this.nonGreedyStates.push(e.stateNumber),e instanceof ir&&e.isLeftRecursiveRule&&this.precedenceStates.push(e.stateNumber),this.data.push(s),this.data.push(e.ruleIndex),e.constructor.stateType===Va.LOOP_END?this.data.push(e.loopBackState.stateNumber):e instanceof sr&&this.data.push(e.endState.stateNumber),e.constructor.stateType!==Va.RULE_STOP&&(t+=e.transitions.length);for(const t of e.transitions){const e=t.transitionType;if(e===la.SET||e===la.NOT_SET){const e=t;this.sets.set(e.set,!0)}}}return t}case 2:{const[t,s]=e;this.data.push(t);for(const e of this.atn.states)if(null!==e&&e.constructor.stateType!==Va.RULE_STOP)for(const t of e.transitions){if(null===this.atn.states[t.target.stateNumber])throw new Error("Cannot serialize a transition to a removed state.");const a=e.stateNumber;let r=t.target.stateNumber;const i=t.transitionType;let c=0,n=0,h=0;switch(i){case la.RULE:r=t.followState.stateNumber,c=t.target.stateNumber,n=t.ruleIndex,h=t.precedence;break;case la.PRECEDENCE:c=t.precedence;break;case la.PREDICATE:{const e=t;c=e.ruleIndex,n=e.predIndex,h=e.isCtxDependent?1:0;break}case la.RANGE:c=t.start,n=t.stop,c===ca.EOF&&(c=0,h=1);break;case la.ATOM:c=t.labelValue,c===ca.EOF&&(c=0,h=1);break;case la.ACTION:{const e=t;c=e.ruleIndex,n=e.actionIndex,h=e.isCtxDependent?1:0;break}case la.SET:case la.NOT_SET:c=s.get(t.set)}this.data.push(a),this.data.push(r),this.data.push(i),this.data.push(c),this.data.push(n),this.data.push(h)}break}default:throw new Error("Invalid number of arguments")}}addSets(){t.serializeSets(this.data,[...this.sets.keys()]);const e=new Map;let s=0;for(const t of this.sets.keys())e.set(t,s++);return e}addModeStartStates(){const t=this.atn.modeToStartState.length;if(this.data.push(t),t>0)for(const e of this.atn.modeToStartState)this.data.push(e.stateNumber)}addRuleStatesAndLexerTokenTypes(){const t=this.atn.ruleToStartState.length;this.data.push(t);for(let e=0;e<t;e++){const t=this.atn.ruleToStartState[e];this.data.push(t.stateNumber),this.atn.grammarType===ja.LEXER&&this.data.push(this.atn.ruleToTokenType[e])}}addPrecedenceStates(){this.data.push(this.precedenceStates.length);for(const t of this.precedenceStates)this.data.push(t)}addNonGreedyStates(){this.data.push(this.nonGreedyStates.length);for(const t of this.nonGreedyStates)this.data.push(t)}},Ea(wt,"ATNSerializer"),bt=class t{constructor(t){(0,js.Z)(this,"stateNumber",-1),(0,js.Z)(this,"configs",void 0),(0,js.Z)(this,"edges",[]),(0,js.Z)(this,"isAcceptState",!1),(0,js.Z)(this,"prediction",-1),(0,js.Z)(this,"lexerActionExecutor",null),(0,js.Z)(this,"requiresFullContext",!1),(0,js.Z)(this,"predicates",null),t&&(this.configs=t)}static fromState(e){const s=new t;return s.stateNumber=e,s}static fromConfigs(e){return new t(e)}static hashCode(t){return t.configs.hashCode()}static equals(t,e){return t.configs.equals(e.configs)}toString(){let t="";return t+=this.stateNumber,t+=":",t+=this.configs?this.configs.toString():"",this.isAcceptState&&(t+="=>",this.predicates?t+=La(this.predicates):t+=this.prediction),t.toString()}},Ea(bt,"DFAState"),bt),br=(Ea(Wt=class{constructor(t,e){return(0,js.Z)(this,"atn",void 0),(0,js.Z)(this,"sharedContextCache",void 0),this.atn=t,this.sharedContextCache=e,this}getCachedContext(t){if(!this.sharedContextCache)return t;const e=new Fa(xa.instance);return Ba(t,this.sharedContextCache,e)}},"ATNSimulator"),(0,js.Z)(Wt,"ERROR",wr.fromState(2147483647)),Wt),Wr=(Ea(Vt=class t{static createWithCodePoint(e,s){return t.createWithCodePointRange(e,s,s)}static createWithCodePointRange(t,e,s){return e===s?new Sr(t,e):new Or(t,e,s)}},"CodePointTransitions"),Ea(Xt=class{constructor(t){(0,js.Z)(this,"decision",0),(0,js.Z)(this,"invocations",0),(0,js.Z)(this,"timeInPrediction",0),(0,js.Z)(this,"sllTotalLook",0),(0,js.Z)(this,"sllMinLook",0),(0,js.Z)(this,"sllMaxLook",0),(0,js.Z)(this,"sllMaxLookEvent",void 0),(0,js.Z)(this,"llTotalLook",0),(0,js.Z)(this,"llMinLook",0),(0,js.Z)(this,"llMaxLook",0),(0,js.Z)(this,"llMaxLookEvent",void 0),(0,js.Z)(this,"contextSensitivities",void 0),(0,js.Z)(this,"errors",void 0),(0,js.Z)(this,"ambiguities",void 0),(0,js.Z)(this,"predicateEvals",void 0),(0,js.Z)(this,"sllATNTransitions",0),(0,js.Z)(this,"sllDFATransitions",0),(0,js.Z)(this,"llFallback",0),(0,js.Z)(this,"llATNTransitions",0),(0,js.Z)(this,"llDFATransitions",0),this.decision=t,this.contextSensitivities=[],this.errors=[],this.ambiguities=[],this.predicateEvals=[]}toString1(){return"{decision="+this.decision+", contextSensitivities="+this.contextSensitivities.length+", errors="+this.errors.length+", ambiguities="+this.ambiguities.length+", sllLookahead="+this.sllTotalLook+", sllATNTransitions="+this.sllATNTransitions+", sllDFATransitions="+this.sllDFATransitions+", llFallback="+this.llFallback+", llLookahead="+this.llTotalLook+", llATNTransitions="+this.llATNTransitions+"}"}},"DecisionInfo"),Xt),Vr=(Ea(Kt=class t extends Za{constructor(e,s,a,r){var i;return super(e,s,null!==a&&void 0!==a?a:e.context,a?Xa.NONE:e.semanticContext),(0,js.Z)(this,"lexerActionExecutor",void 0),(0,js.Z)(this,"passedThroughNonGreedyDecision",void 0),this.lexerActionExecutor=a?r:null!==(i=e.lexerActionExecutor)&&void 0!==i?i:null,this.passedThroughNonGreedyDecision=t.checkNonGreedyDecision(e,this.state),this}static createWithExecutor(e,s,a){return new t(e,s,e.context,a)}static createWithConfig(e,s,a){return new t(s,e,null!==a&&void 0!==a?a:null,s.lexerActionExecutor)}static createWithContext(e,s,a){return new t({alt:s},e,a,null)}static checkNonGreedyDecision(t,e){return t.passedThroughNonGreedyDecision||"nonGreedy"in e&&e.nonGreedy}hashCode(){if(void 0===this.cachedHashCode){let t=Aa.initialize(7);t=Aa.update(t,this.state.stateNumber),t=Aa.update(t,this.alt),t=Aa.updateFromComparable(t,this.context),t=Aa.updateFromComparable(t,this.semanticContext),t=Aa.update(t,this.passedThroughNonGreedyDecision?1:0),t=Aa.updateFromComparable(t,this.lexerActionExecutor),t=Aa.finish(t,6),this.cachedHashCode=t}return this.cachedHashCode}equals(t){return this===t||this.passedThroughNonGreedyDecision===t.passedThroughNonGreedyDecision&&(this.lexerActionExecutor&&t.lexerActionExecutor?this.lexerActionExecutor.equals(t.lexerActionExecutor):!t.lexerActionExecutor)&&super.equals(t)}},"LexerATNConfig"),Kt),Xr=(Ea(Qt=class{syntaxError(t,e,s,a,r,i){}reportAmbiguity(t,e,s,a,r,i,c){}reportAttemptingFullContext(t,e,s,a,r,i){}reportContextSensitivity(t,e,s,a,r,i){}},"BaseErrorListener"),Qt),Kr=(Ea(Jt=class extends Xr{syntaxError(t,e,s,a,r,i){console.error("line "+s+":"+a+" "+r)}},"ConsoleErrorListener"),(0,js.Z)(Jt,"instance",new Jt),Jt),Qr=(Zt=class extends Xr{constructor(t){return super(),this.delegates=t,this}syntaxError(t,e,s,a,r,i){this.delegates.forEach((c=>{c.syntaxError(t,e,s,a,r,i)}))}reportAmbiguity(t,e,s,a,r,i,c){this.delegates.forEach((n=>{n.reportAmbiguity(t,e,s,a,r,i,c)}))}reportAttemptingFullContext(t,e,s,a,r,i){this.delegates.forEach((c=>{c.reportAttemptingFullContext(t,e,s,a,r,i)}))}reportContextSensitivity(t,e,s,a,r,i){this.delegates.forEach((c=>{c.reportContextSensitivity(t,e,s,a,r,i)}))}},Ea(Zt,"ProxyErrorListener"),Zt),Jr=(jt=new WeakMap,zt=new WeakMap,qt=class t{constructor(){(0,js.Z)(this,"interpreter",void 0),r(this,jt,{writable:!0,value:[Kr.instance]}),r(this,zt,{writable:!0,value:-1})}checkVersion(t){const e="4.13.1";e!==t&&console.error("ANTLR runtime and generated code versions disagree: "+e+"!="+t)}addErrorListener(t){ea(this,jt).push(t)}removeErrorListeners(){$s(this,jt,[])}removeErrorListener(t){for(let e=0;e<ea(this,jt).length;e++)if(ea(this,jt)[e]===t)return void ea(this,jt).splice(e,1)}getErrorListeners(){return ea(this,jt)}getTokenTypeMap(){const e=this.vocabulary;let s=t.tokenTypeMapCache.get(e);if(!s){s=new Map;for(let t=0;t<=this.atn.maxTokenType;t++){const a=e.getLiteralName(t);a&&s.set(a,t);const r=e.getSymbolicName(t);r&&s.set(r,t)}s.set("EOF",ca.EOF),t.tokenTypeMapCache.set(e,s)}return s}getRuleIndexMap(){const e=this.ruleNames;let s=t.ruleIndexMapCache.get(e);return s||(s=new Map,e.forEach(((t,e)=>s.set(t,e))),t.ruleIndexMapCache.set(e,s)),s}getTokenType(t){const e=this.getTokenTypeMap().get(t);return e||ca.INVALID_TYPE}getErrorHeader(t){var e,s;return"line "+(null===(e=t.offendingToken)||void 0===e?void 0:e.line)+":"+(null===(s=t.offendingToken)||void 0===s?void 0:s.column)}get errorListenerDispatch(){return new Qr(ea(this,jt))}sempred(t,e,s){return!0}precpred(t,e){return!0}action(t,e,s){}get atn(){return this.interpreter.atn}get state(){return ea(this,zt)}set state(t){$s(this,zt,t)}getSerializedATN(){throw new Error("there is no serialized ATN")}getParseInfo(){return null}},Ea(qt,"Recognizer"),(0,js.Z)(qt,"EOF",-1),(0,js.Z)(qt,"tokenTypeMapCache",new Map),(0,js.Z)(qt,"ruleIndexMapCache",new Map),qt),Zr=(te=new WeakMap,$t=class t{constructor(t){var e,s,a,i,c,n;(0,js.Z)(this,"source",void 0),(0,js.Z)(this,"tokenIndex",void 0),(0,js.Z)(this,"start",void 0),(0,js.Z)(this,"stop",void 0),(0,js.Z)(this,"type",void 0),(0,js.Z)(this,"line",void 0),(0,js.Z)(this,"column",void 0),(0,js.Z)(this,"channel",void 0),r(this,te,{writable:!0,value:void 0}),this.type=t.type,this.source=t.source,this.tokenIndex=null!==(e=t.tokenIndex)&&void 0!==e?e:-1,this.line=null!==(s=t.line)&&void 0!==s?s:0,this.column=null!==(a=t.column)&&void 0!==a?a:-1,this.channel=null!==(i=t.channel)&&void 0!==i?i:ca.DEFAULT_CHANNEL,this.start=null!==(c=t.start)&&void 0!==c?c:0,this.stop=null!==(n=t.stop)&&void 0!==n?n:0,$s(this,te,t.text),null!==t.source[0]&&(this.line=t.source[0].line,this.column=t.source[0].column)}static fromToken(e){let s;return s="source"in e?e.source:[e.tokenSource,e.inputStream],new t({type:e.type,line:e.line,tokenIndex:e.tokenIndex,column:e.column,channel:e.channel,start:e.start,stop:e.stop,text:e.text,source:s})}static fromType(e,s){return new t({type:e,text:s,source:t.EMPTY_SOURCE})}static fromSource(e,s,a,r,i){return new t({type:s,channel:a,start:r,stop:i,source:e})}get tokenSource(){return this.source[0]}get inputStream(){return this.source[1]}clone(){return new t({source:this.source,type:this.type,channel:this.channel,start:this.start,stop:this.stop,tokenIndex:this.tokenIndex,line:this.line,column:this.column,text:ea(this,te)})}toString(t){let e="";this.channel>0&&(e=",channel="+this.channel);let s=this.text;s?(s=s.replace(/\n/g,"\\n"),s=s.replace(/\r/g,"\\r"),s=s.replace(/\t/g,"\\t")):s="<no text>";let a=String(this.type);var r;t&&(a=null!==(r=t.vocabulary.getDisplayName(this.type))&&void 0!==r?r:"<unknown>");return"[@"+this.tokenIndex+","+this.start+":"+this.stop+"='"+s+"',<"+a+">"+e+","+this.line+":"+this.column+"]"}get text(){if(ea(this,te))return ea(this,te);const t=this.inputStream;if(!t)return;const e=t.size;return this.start<e&&this.stop<e?t.getTextFromRange(this.start,this.stop):"<EOF>"}set text(t){$s(this,te,t)}setText(t){$s(this,te,t)}setType(t){this.type=t}setLine(t){this.line=t}setCharPositionInLine(t){this.column=t}setChannel(t){this.channel=t}setTokenIndex(t){this.tokenIndex=t}},Ea($t,"CommonToken"),(0,js.Z)($t,"EMPTY_SOURCE",[null,null]),$t),qr=(Ea(ee=class{constructor(t){(0,js.Z)(this,"copyText",!1),this.copyText=null!==t&&void 0!==t&&t}create(t,e,s,a,r,i,c,n){const h=Zr.fromSource(t,e,a,r,i);return h.line=c,h.column=n,s?h.text=s:this.copyText&&null!==t[1]&&(h.text=t[1].getTextFromRange(r,i)),h}},"CommonTokenFactory"),(0,js.Z)(ee,"DEFAULT",new ee),ee),jr=(se=class t extends Error{constructor(e){super(e.message),(0,js.Z)(this,"ctx",void 0),(0,js.Z)(this,"offendingToken",null),(0,js.Z)(this,"offendingState",-1),(0,js.Z)(this,"recognizer",void 0),(0,js.Z)(this,"input",void 0),Error.captureStackTrace&&Error.captureStackTrace(this,t),this.message=e.message,this.recognizer=e.recognizer,this.input=e.input,this.ctx=e.ctx,null!==this.recognizer&&(this.offendingState=this.recognizer.state)}getExpectedTokens(){return null!==this.recognizer&&null!==this.ctx?this.recognizer.atn.getExpectedTokens(this.offendingState,this.ctx):null}toString(){return this.message}},Ea(se,"RecognitionException"),se),zr=(Ea(ae=class extends jr{constructor(t,e,s,a){super({message:"",recognizer:t,input:e,ctx:null}),(0,js.Z)(this,"startIndex",void 0),(0,js.Z)(this,"deadEndConfigs",void 0),this.startIndex=s,this.deadEndConfigs=a}toString(){let t="";return this.input&&this.startIndex>=0&&this.startIndex<this.input.size&&(t=this.input.getTextFromRange(this.startIndex,this.startIndex)),"LexerNoViableAltException"+t}},"LexerNoViableAltException"),ae),$r=(ie=new WeakMap,ce=new WeakMap,ne=new WeakMap,he=new WeakMap,Ee=new WeakMap,Te=new WeakMap,re=class t extends Jr{constructor(e,s){super(),(0,js.Z)(this,"options",{minDFAEdge:0,maxDFAEdge:256,minCodePoint:0,maxCodePoint:1114111}),(0,js.Z)(this,"tokenStartCharIndex",-1),(0,js.Z)(this,"channel",0),(0,js.Z)(this,"type",0),(0,js.Z)(this,"mode",t.DEFAULT_MODE),(0,js.Z)(this,"currentTokenColumn",0),(0,js.Z)(this,"currentTokenStartLine",0),r(this,ie,{writable:!0,value:void 0}),r(this,ce,{writable:!0,value:null}),r(this,ne,{writable:!0,value:!1}),r(this,he,{writable:!0,value:[]}),r(this,Ee,{writable:!0,value:void 0}),r(this,Te,{writable:!0,value:void 0}),this.options={...this.options,...s},$s(this,ie,e),$s(this,Te,qr.DEFAULT)}reset(){(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&ea(this,ie).seek(0),$s(this,ce,null),this.type=ca.INVALID_TYPE,this.channel=ca.DEFAULT_CHANNEL,this.tokenStartCharIndex=-1,this.currentTokenColumn=-1,this.currentTokenStartLine=-1,$s(this,Ee,void 0),$s(this,ne,!1),this.mode=t.DEFAULT_MODE,$s(this,he,[]),this.interpreter.reset()}nextToken(){if(null===ea(this,ie))throw new Error("nextToken requires a non-null input stream.");const e=ea(this,ie).mark();try{for(;;){if(ea(this,ne))return this.emitEOF(),ea(this,ce);$s(this,ce,null),this.channel=ca.DEFAULT_CHANNEL,this.tokenStartCharIndex=ea(this,ie).index,this.currentTokenColumn=this.interpreter.column,this.currentTokenStartLine=this.interpreter.line,$s(this,Ee,void 0);let e=!1;for(;;){this.type=ca.INVALID_TYPE;let a=t.SKIP;try{a=this.interpreter.match(ea(this,ie),this.mode)}catch(s){if(!(s instanceof zr))throw s;this.notifyListeners(s),this.recover(s)}if(ea(this,ie).LA(1)===ca.EOF&&$s(this,ne,!0),this.type===ca.INVALID_TYPE&&(this.type=a),this.type===t.SKIP){e=!0;break}if(this.type!==t.MORE)break}if(!e)return null===ea(this,ce)&&this.emit(),ea(this,ce)}}finally{ea(this,ie).release(e)}}skip(){this.type=t.SKIP}more(){this.type=t.MORE}pushMode(t){hi.debug&&console.log("pushMode "+t),ea(this,he).push(this.mode),this.mode=t}popMode(){if(0===ea(this,he).length)throw new Error("Empty Stack");return hi.debug&&console.log("popMode back to "+ea(this,he).slice(0,-1)),this.mode=ea(this,he).pop(),this.mode}get modeStack(){return ea(this,he)}emitToken(t){$s(this,ce,t)}emit(){const t=ea(this,Te).create([this,ea(this,ie)],this.type,ea(this,Ee),this.channel,this.tokenStartCharIndex,this.getCharIndex()-1,this.currentTokenStartLine,this.currentTokenColumn);return this.emitToken(t),t}emitEOF(){const t=ea(this,Te).create([this,ea(this,ie)],ca.EOF,void 0,ca.DEFAULT_CHANNEL,ea(this,ie).index,ea(this,ie).index-1,this.line,this.column);return this.emitToken(t),t}getCharIndex(){return ea(this,ie).index}getAllTokens(){const t=[];let e=this.nextToken();for(;e.type!==ca.EOF;)t.push(e),e=this.nextToken();return t}notifyListeners(t){const e=this.tokenStartCharIndex,s=ea(this,ie).index,a=ea(this,ie).getTextFromRange(e,s),r="token recognition error at: '"+this.getErrorDisplay(a)+"'";this.errorListenerDispatch.syntaxError(this,null,this.currentTokenStartLine,this.currentTokenColumn,r,t)}getErrorDisplay(t){return t}getErrorDisplayForChar(t){return t.charCodeAt(0)===ca.EOF?"<EOF>":"\n"===t?"\\n":"\t"===t?"\\t":"\r"===t?"\\r":t}getCharErrorDisplay(t){return"'"+this.getErrorDisplayForChar(t)+"'"}recover(t){ea(this,ie).LA(1)!==ca.EOF&&(t instanceof zr?this.interpreter.consume(ea(this,ie)):ea(this,ie).consume())}get inputStream(){return ea(this,ie)}set inputStream(t){this.reset(!1),$s(this,ie,t)}set tokenFactory(t){$s(this,Te,t)}get tokenFactory(){return ea(this,Te)}get sourceName(){return ea(this,ie).getSourceName()}get line(){return this.interpreter.line}set line(t){this.interpreter.line=t}get column(){return this.interpreter.column}set column(t){this.interpreter.column=t}get text(){return ea(this,Ee)?ea(this,Ee):this.interpreter.getText(ea(this,ie))}set text(t){$s(this,Ee,t)}},Ea(re,"Lexer"),(0,js.Z)(re,"DEFAULT_MODE",0),(0,js.Z)(re,"MORE",-2),(0,js.Z)(re,"SKIP",-3),(0,js.Z)(re,"DEFAULT_TOKEN_CHANNEL",ca.DEFAULT_CHANNEL),(0,js.Z)(re,"HIDDEN",ca.HIDDEN_CHANNEL),re),ti=(oe=class t extends Error{constructor(e){super(),Error.captureStackTrace(this,t)}},Ea(oe,"ParseCancellationException"),oe),ei=(Re=class{static parseInterpreterData(t){const e=[],s=[],a=[],r=[],i=[],c=t.split("\n");let n=0,h=c[n++];if("token literal names:"!==h)throw new Error("Unexpected data entry");for(;;){if(h=c[n++],0===h.length)break;r.push("null"===h?null:h)}if(h=c[n++],"token symbolic names:"!==h)throw new Error("Unexpected data entry");for(;;){if(h=c[n++],0===h.length)break;i.push("null"===h?null:h)}if(h=c[n++],"rule names:"!==h)throw new Error("Unexpected data entry");for(;;){if(h=c[n++],0===h.length)break;e.push(h)}if(h=c[n++],"channel names:"===h){for(;;){if(h=c[n++],0===h.length)break;s.push(h)}if(h=c[n++],"mode names:"!==h)throw new Error("Unexpected data entry");for(;;){if(h=c[n++],0===h.length)break;a.push(h)}}if(h=c[n++],"atn:"!==h)throw new Error("Unexpected data entry");h=c[n++];const E=h.split(",");let T;const o=[];for(let R=0;R<E.length;++R){const t=E[R];T=t.startsWith("[")?Number(t.substring(1).trim()):t.endsWith("]")?Number(t.substring(0,t.length-1).trim()):Number(t.trim()),o[R]=T}return{atn:(new fr).deserialize(o),vocabulary:new Ra(r,i,[]),ruleNames:e,channels:s.length>0?s:void 0,modes:a.length>0?a:void 0}}},Ea(Re,"InterpreterDataReader"),Se=new WeakMap,Ae=class t extends Ha{constructor(){super(...arguments),r(this,Se,{writable:!0,value:[]})}getOrAdd(t){const e=this.size,s=super.getOrAdd(t);return this.size>e&&ea(this,Se).push(t),s}equals(e){return e instanceof t&&super.equals(e)}add(t){return!!super.add(t)&&(ea(this,Se).push(t),!0)}clear(){super.clear(),$s(this,Se,[])}*[Symbol.iterator](){yield*ea(this,Se)}toArray(){return ea(this,Se).slice(0)}},Ea(Ae,"OrderedHashSet"),Ae),si=(Ea(le=class extends $a{constructor(){super(),this.configLookup=new ei}},"OrderedATNConfigSet"),le),ai=(Ie=new WeakMap,Ea(Oe=class t{constructor(t,e){(0,js.Z)(this,"offset",void 0),(0,js.Z)(this,"action",void 0),(0,js.Z)(this,"actionType",void 0),(0,js.Z)(this,"isPositionDependent",!0),r(this,Ie,{writable:!0,value:void 0}),this.actionType=e.actionType,this.offset=t,this.action=e}execute(t){this.action.execute(t)}hashCode(){if(void 0===ea(this,Ie)){let t=Aa.initialize();t=Aa.update(t,this.offset),t=Aa.updateFromComparable(t,this.action),$s(this,Ie,Aa.finish(t,2))}return ea(this,Ie)}equals(e){return this===e||e instanceof t&&(this.offset===e.offset&&this.action===e.action)}},"LexerIndexedCustomAction"),Oe),ri=(Ne=new WeakMap,ue=class t{constructor(t){return(0,js.Z)(this,"lexerActions",void 0),(0,js.Z)(this,"actionType",void 0),(0,js.Z)(this,"isPositionDependent",!1),r(this,Ne,{writable:!0,value:void 0}),this.actionType=-1,this.lexerActions=null!==t&&void 0!==t?t:[],this}static append(e,s){if(null===e)return new t([s]);const a=e.lexerActions.concat([s]);return new t(a)}fixOffsetBeforeMatch(e){let s=null;for(let t=0;t<this.lexerActions.length;t++)!this.lexerActions[t].isPositionDependent||this.lexerActions[t]instanceof ai||(null===s&&(s=this.lexerActions.concat([])),s[t]=new ai(e,this.lexerActions[t]));return null===s?this:new t(s)}execute(t,e,s){if(void 0===e||void 0===s)return;let a=!1;const r=e.index;try{for(const i of this.lexerActions){let c=i;if(i instanceof ai){const t=i.offset;e.seek(s+t),c=i.action,a=s+t!==r}else i.isPositionDependent&&(e.seek(r),a=!1);c.execute(t)}}finally{a&&e.seek(r)}}hashCode(){if(void 0===ea(this,Ne)){let t=Aa.initialize(7);for(const e of this.lexerActions)t=Aa.update(t,e.hashCode());$s(this,Ne,Aa.finish(t,this.lexerActions.length))}return ea(this,Ne)}equals(t){return this===t||ea(this,Ne)===ea(t,Ne)&&(this.lexerActions.length===t.lexerActions.length&&this.lexerActions.every(((e,s)=>e.equals(t.lexerActions[s]))))}},Ea(ue,"LexerActionExecutor"),ue),ii=(Le=class{constructor(t,e){(0,js.Z)(this,"dfa",void 0),(0,js.Z)(this,"vocabulary",void 0),this.dfa=t,this.vocabulary=e}toString(){if(!this.dfa.s0)return"";let t="";const e=this.dfa.getStates();for(const s of e){let e=0;e=s.edges.length;for(let a=0;a<e;a++){const e=s.edges[a];if(e&&2147483647!==e.stateNumber){t+=this.getStateString(s);t+="-",t+=this.getEdgeLabel(a),t+="->",t+=this.getStateString(e),t+="\n"}}}return t}getEdgeLabel(t){const e=this.vocabulary.getDisplayName(t-1);return"".concat(e)}getStateString(t){const e=t.stateNumber,s=(t.isAcceptState?":":"")+"s"+e+(t.requiresFullContext?"^":"");return t.isAcceptState?null!==t.predicates?"".concat(s,"=>").concat(t.predicates.toString()):"".concat(s,"=>").concat(t.prediction):"".concat(s)}},Ea(Le,"DFASerializer"),Le),ci=(Ce=class extends ii{constructor(t){super(t,Ra.EMPTY_VOCABULARY),(0,js.Z)(this,"getEdgeLabel",(t=>"'"+String.fromCharCode(t)+"'"))}},Ea(Ce,"LexerDFASerializer"),Ce),ni=(Pe=new WeakMap,_e=class{constructor(t,e){(0,js.Z)(this,"s0",void 0),(0,js.Z)(this,"decision",void 0),(0,js.Z)(this,"atnStartState",void 0),(0,js.Z)(this,"isPrecedenceDfa",void 0),r(this,Pe,{writable:!0,value:new Map}),(0,js.Z)(this,Symbol.iterator,(()=>ea(this,Pe).values()[Symbol.iterator]())),(0,js.Z)(this,"getPrecedenceStartState",(t=>{if(!this.isPrecedenceDfa)throw new Error("Only precedence DFAs may contain a precedence start state.");if(!(!this.s0||!this.s0.edges||t<0||t>=this.s0.edges.length))return this.s0.edges[t]})),(0,js.Z)(this,"setPrecedenceStartState",((t,e)=>{if(!this.isPrecedenceDfa)throw new Error("Only precedence DFAs may contain a precedence start state.");t<0||!this.s0||(this.s0.edges[t]=e)})),this.atnStartState=t,this.decision=null!==e&&void 0!==e?e:0;let s=!1;t instanceof Tr&&t.precedenceRuleDecision&&(s=!0,this.s0=wr.fromState(-1)),this.isPrecedenceDfa=s}getStates(){const t=[...ea(this,Pe).values()];return t.sort(((t,e)=>t.stateNumber-e.stateNumber)),t}getState(t){var e;return null!==(e=ea(this,Pe).get(t.configs.hashCode()))&&void 0!==e?e:null}getStateForConfigs(t){var e;return null!==(e=ea(this,Pe).get(t.hashCode()))&&void 0!==e?e:null}addState(t){const e=t.configs.hashCode();ea(this,Pe).has(e)||(ea(this,Pe).set(e,t),t.stateNumber=ea(this,Pe).size-1)}toString(t){var e;if(!t)return this.toString(Ra.EMPTY_VOCABULARY);if(!this.s0)return"";return null!==(e=new ii(this,t).toString())&&void 0!==e?e:""}toLexerString(){var t;if(!this.s0)return"";return null!==(t=new ci(this).toString())&&void 0!==t?t:""}get length(){return ea(this,Pe).size}},Ea(_e,"DFA"),_e),hi=(de=new WeakMap,Ue=new WeakMap,me=new WeakMap,Me=class t extends br{constructor(t,e,s,a){super(e,a),(0,js.Z)(this,"decisionToDFA",void 0),(0,js.Z)(this,"recognizer",null),(0,js.Z)(this,"startIndex",-1),(0,js.Z)(this,"line",1),(0,js.Z)(this,"column",0),(0,js.Z)(this,"mode",$r.DEFAULT_MODE),r(this,de,{writable:!0,value:void 0}),r(this,Ue,{writable:!0,value:void 0}),r(this,me,{writable:!0,value:void 0}),this.decisionToDFA=s,this.recognizer=t,t&&$s(this,Ue,t.options)}match(t,e){this.mode=e;const s=t.mark();try{this.startIndex=t.index,$s(this,de,void 0);const s=this.decisionToDFA[e];return s.s0?this.execATN(t,s.s0):this.matchATN(t)}finally{t.release(s)}}reset(){$s(this,de,void 0),this.startIndex=-1,this.line=1,this.column=0,this.mode=$r.DEFAULT_MODE}clearDFA(){for(let t=0;t<this.decisionToDFA.length;t++)this.decisionToDFA[t]=new ni(this.atn.getDecisionState(t),t)}getDFA(t){return this.decisionToDFA[t]}getText(t){return t.getTextFromRange(this.startIndex,t.index-1)}consume(t){t.LA(1)==="\n".charCodeAt(0)?(this.line+=1,this.column=0):this.column+=1,t.consume()}getTokenName(t){return t===ca.EOF?"EOF":"'"+String.fromCharCode(t)+"'"}matchATN(e){const s=this.atn.modeToStartState[this.mode];t.debug&&console.log("matchATN mode "+this.mode+" start: "+s);const a=this.mode,r=this.computeStartState(e,s),i=r.hasSemanticContext;r.hasSemanticContext=!1;const c=this.addDFAState(r);i||(this.decisionToDFA[this.mode].s0=c);const n=this.execATN(e,c);return t.debug&&console.log("DFA after matchATN: "+this.decisionToDFA[a].toLexerString()),n}execATN(e,s){t.debug&&console.log("start state closure="+s.configs),s.isAcceptState&&this.captureSimState(e,s);let a=e.LA(1);for(;;){t.debug&&console.log("execATN loop starting closure: "+s.configs);let r=this.getExistingTargetState(s,a);if(r||(r=this.computeTargetState(e,s,a)),r===br.ERROR)break;if(a!==ca.EOF&&this.consume(e),r.isAcceptState&&(this.captureSimState(e,r),a===ca.EOF))break;a=e.LA(1),s=r}return this.failOrAccept(e,s.configs,a)}getExistingTargetState(e,s){if(s>=ea(this,Ue).minDFAEdge&&s<=ea(this,Ue).maxDFAEdge){const a=e.edges[s-ea(this,Ue).minDFAEdge];return t.debug&&a&&console.log("reuse state "+e.stateNumber+" edge to "+a.stateNumber),a}}computeTargetState(t,e,s){const a=new si;return this.getReachableConfigSet(t,e.configs,a,s),0===a.length?(a.hasSemanticContext||this.addDFAEdge(e,s,br.ERROR),br.ERROR):this.addDFAEdge(e,s,null,a)}failOrAccept(t,e,s){var a;if(null!==(a=ea(this,de))&&void 0!==a&&a.dfaState){const{dfaState:e,index:s,line:a,column:r}=ea(this,de);return this.accept(t,e.lexerActionExecutor,this.startIndex,s,a,r),e.prediction}if(s===ca.EOF&&t.index===this.startIndex)return ca.EOF;throw new zr(this.recognizer,t,this.startIndex,e)}getReachableConfigSet(e,s,a,r){let i=ja.INVALID_ALT_NUMBER;for(const c of s){const s=c.alt===i;if(!s||!c.passedThroughNonGreedyDecision){t.debug&&console.log("testing %s at %s\n",this.getTokenName(r),c.toString(this.recognizer,!0));for(const t of c.state.transitions){const n=this.getReachableTarget(t,r);if(n){let t=c.lexerActionExecutor;t&&(t=t.fixOffsetBeforeMatch(e.index-this.startIndex));const h=r===ca.EOF,E=Vr.createWithExecutor(c,n,t);this.closure(e,E,a,s,!0,h)&&(i=c.alt)}}}}}accept(e,s,a,r,i,c){t.debug&&console.log("ACTION %s\n",s),e.seek(r),this.line=i,this.column=c,s&&this.recognizer&&s.execute(this.recognizer,e,a)}getReachableTarget(t,e){return t.matches(e,ea(this,Ue).minCodePoint,ea(this,Ue).maxCodePoint)?t.target:void 0}computeStartState(t,e){const s=ua.EMPTY,a=new si;for(let r=0;r<e.transitions.length;r++){const i=e.transitions[r].target,c=Vr.createWithContext(i,r+1,s);this.closure(t,c,a,!1,!1,!1)}return a}closure(e,s,a,r,i,c){let n=null;if(t.debug&&console.log("closure("+s.toString(this.recognizer,!0)+")"),s.state.constructor.stateType===Va.RULE_STOP){if(t.debug&&(null!==this.recognizer?console.log("closure at %s rule stop %s\n",this.recognizer.ruleNames[s.state.ruleIndex],s):console.log("closure at rule stop %s\n",s)),!s.context||s.context.hasEmptyPath()){if(!s.context||s.context.isEmpty())return a.add(s),!0;a.add(Vr.createWithConfig(s.state,s,ua.EMPTY)),r=!0}if(s.context&&!s.context.isEmpty())for(let t=0;t<s.context.length;t++)if(s.context.getReturnState(t)!==ua.EMPTY_RETURN_STATE){const h=s.context.getParent(t),E=this.atn.states[s.context.getReturnState(t)];n=Vr.createWithConfig(E,s,h),r=this.closure(e,n,a,r,i,c)}return r}s.state.epsilonOnlyTransitions||r&&s.passedThroughNonGreedyDecision||a.add(s);for(const t of s.state.transitions)n=this.getEpsilonTarget(e,s,t,a,i,c),n&&(r=this.closure(e,n,a,r,i,c));return r}getEpsilonTarget(t,e,s,a,r,i){ea(this,me)||this.setupATNFactoryLookup();const c=ea(this,me)[s.transitionType];return c?c(t,e,s,a,r,i):null}setupATNFactoryLookup(){$s(this,me,[]),ea(this,me)[la.RULE]=(t,e,s)=>{var a;const r=da.create(null!==(a=e.context)&&void 0!==a?a:void 0,s.followState.stateNumber);return Vr.createWithConfig(s.target,e,r)},ea(this,me)[la.PRECEDENCE]=()=>{throw new Error("Precedence predicates are not supported in lexers.")},ea(this,me)[la.PREDICATE]=(e,s,a,r,i)=>{const c=a;return t.debug&&console.log("EVAL rule "+c.ruleIndex+":"+c.predIndex),r.hasSemanticContext=!0,this.evaluatePredicate(e,c.ruleIndex,c.predIndex,i)?Vr.createWithConfig(a.target,s):null},ea(this,me)[la.ACTION]=(t,e,s)=>{if(null===e.context||e.context.hasEmptyPath()){const t=ri.append(e.lexerActionExecutor,this.atn.lexerActions[s.actionIndex]);return Vr.createWithExecutor(e,s.target,t)}return Vr.createWithConfig(s.target,e)},ea(this,me)[la.EPSILON]=(t,e,s)=>Vr.createWithConfig(s.target,e);const e=Ea(((t,e,s,a,r,i)=>i&&s.matches(ca.EOF,ea(this,Ue).minCodePoint,ea(this,Ue).maxCodePoint)?Vr.createWithConfig(s.target,e):null),"simple");ea(this,me)[la.ATOM]=e,ea(this,me)[la.RANGE]=e,ea(this,me)[la.SET]=e}evaluatePredicate(t,e,s,a){if(!this.recognizer)return!0;if(!a)return this.recognizer.sempred(null,e,s);const r=this.column,i=this.line,c=t.index,n=t.mark();try{return this.consume(t),this.recognizer.sempred(null,e,s)}finally{this.column=r,this.line=i,t.seek(c),t.release(n)}}captureSimState(t,e){$s(this,de,{index:t.index,line:this.line,column:this.column,dfaState:e})}addDFAEdge(e,s,a,r){if(!a&&r){const t=r.hasSemanticContext;if(r.hasSemanticContext=!1,a=this.addDFAState(r),t)return a}return s<ea(this,Ue).minDFAEdge||s>ea(this,Ue).maxDFAEdge||(t.debug&&console.log("EDGE "+e+" -> "+a+" upon "+s),e.edges[s-ea(this,Ue).minDFAEdge]=a),a}addDFAState(t){const e=this.decisionToDFA[this.mode],s=e.getStateForConfigs(t);if(s)return s;const a=wr.fromConfigs(t),r=t.firstStopState;return r&&(a.isAcceptState=!0,a.lexerActionExecutor=r.lexerActionExecutor,a.prediction=this.atn.ruleToTokenType[r.state.ruleIndex]),t.setReadonly(!0),e.addState(a),a}},Ea(Me,"LexerATNSimulator"),(0,js.Z)(Me,"debug",!1),Me),Ei=(De=class{constructor(t){(0,js.Z)(this,"atnSimulator",void 0),this.atnSimulator=t}getDecisionInfo(){return this.atnSimulator.getDecisionInfo()}getLLDecisions(){const t=this.atnSimulator.getDecisionInfo(),e=new Array;for(let s=0;s<t.length;s++){t[s].llFallback>0&&e.push(s)}return e}getTotalTimeInPrediction(){const t=this.atnSimulator.getDecisionInfo();let e=0;for(const s of t)e+=s.timeInPrediction;return e}getTotalSLLLookaheadOps(){const t=this.atnSimulator.getDecisionInfo();let e=0;for(const s of t)e+=s.sllTotalLook;return e}getTotalLLLookaheadOps(){const t=this.atnSimulator.getDecisionInfo();let e=0;for(const s of t)e+=s.llTotalLook;return e}getTotalSLLATNLookaheadOps(){const t=this.atnSimulator.getDecisionInfo();let e=0;for(const s of t)e+=s.sllATNTransitions;return e}getTotalLLATNLookaheadOps(){const t=this.atnSimulator.getDecisionInfo();let e=0;for(const s of t)e+=s.llATNTransitions;return e}getTotalATNLookaheadOps(){const t=this.atnSimulator.getDecisionInfo();let e=0;for(const s of t)e+=s.sllATNTransitions,e+=s.llATNTransitions;return e}getDFASize(t){if(void 0===t){let t=0;const e=this.atnSimulator.decisionToDFA;for(let s=0;s<e.length;s++)t+=this.getDFASize(s);return t}return this.atnSimulator.decisionToDFA[t].length}},Ea(De,"ParseInfo"),Ea(pe=class extends jr{constructor(t){var e,s,a,r;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,h=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,E=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null;E=null!==(e=E)&&void 0!==e?e:t.context,n=null!==(s=n)&&void 0!==s?s:t.getCurrentToken(),c=null!==(a=c)&&void 0!==a?a:t.getCurrentToken(),i=null!==(r=i)&&void 0!==r?r:t.inputStream,super({message:"",recognizer:t,input:i,ctx:E}),(0,js.Z)(this,"deadEndConfigs",null),(0,js.Z)(this,"startToken",void 0),this.deadEndConfigs=h,this.startToken=c,this.offendingToken=n}},"NoViableAltException"),pe),Ti=(ge=class{constructor(){(0,js.Z)(this,"cacheMap",void 0),this.cacheMap=new Fa(ka.instance)}get(t,e){var s,a;const r=null!==(s=this.cacheMap.get(t))&&void 0!==s?s:null;return null===r?null:null!==(a=r.get(e))&&void 0!==a?a:null}set(t,e,s){let a=this.cacheMap.get(t);a||(a=new Fa(ka.instance),this.cacheMap.set(t,a)),a.set(e,s)}},Ea(ge,"DoubleDict"),ge),oi=(xe=class{hashCode(t){let e=Aa.initialize(7);return e=Aa.update(e,t.state.stateNumber),e=Aa.updateFromComparable(e,t.context),e=Aa.finish(e,2),e}equals(t,e){var s,a;return t.state.stateNumber===e.state.stateNumber&&(null===(s=null===(a=t.context)||void 0===a?void 0:a.equals(e.context))||void 0===s||s)}},Ea(xe,"SubsetEqualityComparer"),(0,js.Z)(xe,"instance",new xe),xe),Ri=(ke=class t{static hasSLLConflictTerminatingPrediction(e,s){if(t.allConfigsInRuleStopStates(s))return!0;if(e===t.SLL&&s.hasSemanticContext){const t=new $a;for(let e of s)e=Za.duplicate(e,Xa.NONE),t.add(e);s=t}const a=t.getConflictingAltSubsets(s);return t.hasConflictingAltSet(a)&&!t.hasStateAssociatedWithOneAlt(s)}static hasConfigInRuleStopState(t){for(const e of t)if(e.state instanceof cr)return!0;return!1}static allConfigsInRuleStopStates(t){for(const e of t)if(!(e.state instanceof cr))return!1;return!0}static resolvesToJustOneViableAlt(e){return t.getSingleViableAlt(e)}static allSubsetsConflict(e){return!t.hasNonConflictingAltSet(e)}static hasNonConflictingAltSet(t){for(const e of t)if(1===e.length)return!0;return!1}static hasConflictingAltSet(t){for(const e of t)if(e.length>1)return!0;return!1}static allSubsetsEqual(t){let e=null;for(const s of t)if(null===e)e=s;else if(s!==e)return!1;return!0}static getUniqueAlt(e){const s=t.getAlts(e);return 1===s.length?s.nextSetBit(0):ja.INVALID_ALT_NUMBER}static getAlts(t){const e=new Wa;return t.forEach((t=>{e.or(t)})),e}static getConflictingAltSubsets(t){const e=new Fa(oi.instance);for(const s of t){let t=e.get(s);t||(t=new Wa,e.set(s,t)),t.set(s.alt)}return Array.from(e.values())}static getStateToAltMap(t){const e=new Fa(xa.instance);for(const s of t){let t=e.get(s.state);t||(t=new Wa,e.set(s.state,t)),t.set(s.alt)}return e}static hasStateAssociatedWithOneAlt(t){const e={};for(const s of t){const t=s.state.stateNumber;e[t]||(e[t]=0),e[t]++}return Object.values(e).some((t=>1===t))}static getSingleViableAlt(t){var e;let s=null;for(const a of t){const t=a.nextSetBit(0);if(null===s)s=t;else if(s!==t)return ja.INVALID_ALT_NUMBER}return null!==(e=s)&&void 0!==e?e:0}},Ea(ke,"PredictionMode"),(0,js.Z)(ke,"SLL",0),(0,js.Z)(ke,"LL",1),(0,js.Z)(ke,"LL_EXACT_AMBIG_DETECTION",2),ke),Ai=(He=class t extends br{constructor(t,e,s,a){super(e,a),(0,js.Z)(this,"predictionMode",void 0),(0,js.Z)(this,"decisionToDFA",void 0),(0,js.Z)(this,"parser",void 0),(0,js.Z)(this,"mergeCache",new Ti),(0,js.Z)(this,"predictionState",void 0),this.parser=t,this.decisionToDFA=s}static getUniqueAlt(t){let e=ja.INVALID_ALT_NUMBER;for(const s of t)if(e===ja.INVALID_ALT_NUMBER)e=s.alt;else if(s.alt!==e)return ja.INVALID_ALT_NUMBER;return e}reset(){}clearDFA(){for(let t=0;t<this.decisionToDFA.length;t++)this.decisionToDFA[t]=new ni(this.atn.getDecisionState(t),t)}adaptivePredict(e,s,a){var r;(t.debug||t.traceATNSimulator)&&console.log("adaptivePredict decision "+s+" exec LA(1)=="+this.getLookaheadName(e)+" line "+e.LT(1).line+":"+e.LT(1).column);const i=this.decisionToDFA[s];this.predictionState={input:e,startIndex:e.index,outerContext:null!==(r=a)&&void 0!==r?r:void 0,dfa:i};const c=e.mark(),n=e.index;try{let s;if(s=i.isPrecedenceDfa?i.getPrecedenceStartState(this.parser.getPrecedence()):i.s0,!s){a||(a=ga.empty),t.debug&&console.log("predictATN decision "+i.decision+" exec LA(1)=="+this.getLookaheadName(e)+", outerContext="+a.toString(this.parser.ruleNames));const r=!1;let c=this.computeStartState(i.atnStartState,ga.empty,r);i.isPrecedenceDfa?(c=this.applyPrecedenceFilter(c),s=this.addDFAState(i,wr.fromConfigs(c)),i.setPrecedenceStartState(this.parser.getPrecedence(),s)):(s=this.addDFAState(i,wr.fromConfigs(c)),i.s0=s)}const r=this.execATN(i,s,e,n,a);return t.debug&&console.log("DFA after predictATN: "+i.toString(this.parser.vocabulary)),r}finally{this.predictionState.dfa=void 0,this.mergeCache=new Ti,e.seek(n),e.release(c)}}execATN(e,s,a,r,i){let c;(t.debug||t.traceATNSimulator)&&console.log("execATN decision "+e.decision+", DFA state "+s+", LA(1)=="+this.getLookaheadName(a)+" line "+a.LT(1).line+":"+a.LT(1).column);let n=s,h=a.LA(1);for(;;){let s=this.getExistingTargetState(n,h);if(s||(s=this.computeTargetState(e,n,h)),s===br.ERROR){const t=this.noViableAlt(a,i,n.configs,r);if(a.seek(r),c=this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(n.configs,i),c!==ja.INVALID_ALT_NUMBER)return c;throw t}if(s.requiresFullContext&&this.predictionMode!==Ri.SLL){let n=null;if(null!==s.predicates){t.debug&&console.log("DFA state has preds in DFA sim LL failover");const e=a.index;if(e!==r&&a.seek(r),n=this.evalSemanticContext(s.predicates,i,!0),1===n.length)return t.debug&&console.log("Full LL avoided"),n.nextSetBit(0);e!==r&&a.seek(e)}t.dfaDebug&&console.log("ctx sensitive state "+i+" in "+s);const h=!0,E=this.computeStartState(e.atnStartState,i,h);return this.reportAttemptingFullContext(e,n,s.configs,r,a.index),c=this.execATNWithFullContext(e,s,E,a,r,i),c}if(s.isAcceptState){if(null===s.predicates)return s.prediction;const t=a.index;a.seek(r);const c=this.evalSemanticContext(s.predicates,i,!0);if(0===c.length)throw this.noViableAlt(a,i,s.configs,r);return 1===c.length||this.reportAmbiguity(e,s,r,t,!1,c,s.configs),c.nextSetBit(0)}n=s,h!==ca.EOF&&(a.consume(),h=a.LA(1))}}getExistingTargetState(t,e){return t.edges[e+1]}computeTargetState(e,s,a){const r=this.computeReachSet(s.configs,a,!1);if(null===r)return this.addDFAEdge(e,s,a,br.ERROR),br.ERROR;let i=wr.fromConfigs(r);const c=t.getUniqueAlt(r);if(t.debug){const t=Ri.getConflictingAltSubsets(r);console.log("SLL altSubSets="+La(t)+", configs="+r+", predict="+c+", allSubsetsConflict="+Ri.allSubsetsConflict(t)+", conflictingAlts="+this.getConflictingAlts(r))}return c!==ja.INVALID_ALT_NUMBER?(i.isAcceptState=!0,i.configs.uniqueAlt=c,i.prediction=c):Ri.hasSLLConflictTerminatingPrediction(this.predictionMode,r)&&(i.configs.conflictingAlts=this.getConflictingAlts(r),i.requiresFullContext=!0,i.isAcceptState=!0,i.prediction=i.configs.conflictingAlts.nextSetBit(0)),i.isAcceptState&&i.configs.hasSemanticContext&&(this.predicateDFAState(i,this.atn.getDecisionState(e.decision)),null!==i.predicates&&(i.prediction=ja.INVALID_ALT_NUMBER)),i=this.addDFAEdge(e,s,a,i),i}getRuleName(t){return null!==this.parser&&t>=0?this.parser.ruleNames[t]:"<rule "+t+">"}getTokenName(t){var e,s;if(t===ca.EOF)return"EOF";const a=(null!==(e=null===(s=this.parser)||void 0===s?void 0:s.vocabulary)&&void 0!==e?e:Ra.EMPTY_VOCABULARY).getDisplayName(t);return a===t.toString()?a:a+"<"+t+">"}getLookaheadName(t){return this.getTokenName(t.LA(1))}dumpDeadEndConfigs(t){console.log("dead end configs: ");const e=t.deadEndConfigs;for(const s of e){let t="no edges";if(s.state.transitions.length>0){const e=s.state.transitions[0];if(e instanceof Sr)t="Atom "+this.getTokenName(e.labelValue);else if(e instanceof Oa){t=(e instanceof Ia?"~":"")+"Set "+e.label}}console.error(s.toString(this.parser,!0)+":"+t)}}predicateDFAState(t,e){const s=e.transitions.length,a=this.getConflictingAltsOrUniqueAlt(t.configs),r=this.getPredsForAmbigAlts(a,t.configs,s);null!==r?(t.predicates=this.getPredicatePredictions(a,r),t.prediction=ja.INVALID_ALT_NUMBER):t.prediction=a.nextSetBit(0)}execATNWithFullContext(e,s,a,r,i,c){(t.debug||t.traceATNSimulator)&&console.log("execATNWithFullContext "+a);let n,h=!1,E=a;r.seek(i);let T=r.LA(1),o=-1;for(;;){if(n=this.computeReachSet(E,T,true),null===n){const t=this.noViableAlt(r,c,E,i);r.seek(i);const e=this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(E,c);if(e!==ja.INVALID_ALT_NUMBER)return e;throw t}const e=Ri.getConflictingAltSubsets(n);if(t.debug&&console.log("LL altSubSets="+e+", predict="+Ri.getUniqueAlt(e)+", resolvesToJustOneViableAlt="+Ri.resolvesToJustOneViableAlt(e)),n.uniqueAlt=t.getUniqueAlt(n),n.uniqueAlt!==ja.INVALID_ALT_NUMBER){o=n.uniqueAlt;break}if(this.predictionMode!==Ri.LL_EXACT_AMBIG_DETECTION){if(o=Ri.resolvesToJustOneViableAlt(e),o!==ja.INVALID_ALT_NUMBER)break}else if(Ri.allSubsetsConflict(e)&&Ri.allSubsetsEqual(e)){h=!0,o=Ri.getSingleViableAlt(e);break}E=n,T!==ca.EOF&&(r.consume(),T=r.LA(1))}return n.uniqueAlt!==ja.INVALID_ALT_NUMBER?(this.reportContextSensitivity(e,o,n,i,r.index),o):(this.reportAmbiguity(e,s,i,r.index,h,void 0,n),o)}computeReachSet(e,s,a){t.debug&&console.log("in computeReachSet, starting closure: "+e);const r=new $a(a);let i=null;for(const n of e)if(t.debug&&console.log("testing "+this.getTokenName(s)+" at "+n),n.state instanceof cr)(a||s===ca.EOF)&&(null===i&&(i=[]),i.push(n));else for(const e of n.state.transitions){const a=this.getReachableTarget(e,s);if(null!==a){const e=Za.createWithConfig(a,n);r.add(e,this.mergeCache),t.debugAdd&&console.log("added "+e+" to intermediate")}}let c=null;if(null===i&&s!==ca.EOF&&(1===r.length||t.getUniqueAlt(r)!==ja.INVALID_ALT_NUMBER)&&(c=r),null===c){c=new $a(a);const t=new Ha,e=s===ca.EOF;for(const s of r)this.closure(s,c,t,!1,a,e)}if(s===ca.EOF&&(c=this.removeAllConfigsNotInRuleStopState(c,c===r)),null!==i&&(!a||!Ri.hasConfigInRuleStopState(c)))for(const t of i)c.add(t,this.mergeCache);return t.traceATNSimulator&&console.log("computeReachSet "+e+" -> "+c),0===c.length?null:c}removeAllConfigsNotInRuleStopState(t,e){if(Ri.allConfigsInRuleStopStates(t))return t;const s=new $a(t.fullCtx);for(const a of t)if(a.state instanceof cr)s.add(a,this.mergeCache);else if(e&&a.state.epsilonOnlyTransitions){if(this.atn.nextTokens(a.state).contains(ca.EPSILON)){const t=this.atn.ruleToStopState[a.state.ruleIndex];s.add(Za.createWithConfig(t,a),this.mergeCache)}}return s}computeStartState(e,s,a){const r=va(this.atn,s),i=new $a(a);t.traceATNSimulator&&console.log("computeStartState from ATN state "+e+" initialContext="+r.toString(this.parser));for(let t=0;t<e.transitions.length;t++){const s=e.transitions[t].target,c=Za.createWithContext(s,t+1,r),n=new Ha;this.closure(c,i,n,!0,a,!1)}return i}applyPrecedenceFilter(t){const e=[],s=new $a(t.fullCtx);for(const a of t){if(1!==a.alt)continue;const t=a.semanticContext.evalPrecedence(this.parser,this.predictionState.outerContext);null!==t&&(e[a.state.stateNumber]=a.context,t!==a.semanticContext?s.add(Za.duplicate(a,t),this.mergeCache):s.add(a,this.mergeCache))}for(const a of t)if(1!==a.alt){if(!a.precedenceFilterSuppressed){const t=e[a.state.stateNumber]||null;if(null!==t&&t.equals(a.context))continue}s.add(a,this.mergeCache)}return s}getReachableTarget(t,e){return t.matches(e,0,this.atn.maxTokenType)?t.target:null}getPredsForAmbigAlts(e,s,a){let r=[];for(const t of s){var i;if(e.get(t.alt))r[t.alt]=Xa.orContext(null!==(i=r[t.alt])&&void 0!==i?i:null,t.semanticContext)}let c=0;for(let t=1;t<a+1;t++){var n;const e=null!==(n=r[t])&&void 0!==n?n:null;null===e?r[t]=Xa.NONE:e!==Xa.NONE&&(c+=1)}return 0===c&&(r=null),t.debug&&console.log("getPredsForAmbigAlts result "+La(r)),r}getPredicatePredictions(t,e){const s=[];let a=!1;for(let r=1;r<e.length;r++){const i=e[r];t.get(r)&&s.push({pred:i,alt:r}),i!==Xa.NONE&&(a=!0)}return a?s:null}getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(t,e){const s=this.splitAccordingToSemanticValidity(t,e),a=s[0],r=s[1];let i=this.getAltThatFinishedDecisionEntryRule(a);return i!==ja.INVALID_ALT_NUMBER||r.length>0&&(i=this.getAltThatFinishedDecisionEntryRule(r),i!==ja.INVALID_ALT_NUMBER)?i:ja.INVALID_ALT_NUMBER}getAltThatFinishedDecisionEntryRule(t){const e=[];for(const s of t)(s.reachesIntoOuterContext||s.state instanceof cr&&s.context.hasEmptyPath())&&e.indexOf(s.alt)<0&&e.push(s.alt);return 0===e.length?ja.INVALID_ALT_NUMBER:Math.min(...e)}splitAccordingToSemanticValidity(t,e){const s=new $a(t.fullCtx),a=new $a(t.fullCtx);for(const r of t)if(r.semanticContext!==Xa.NONE){r.semanticContext.evaluate(this.parser,e)?s.add(r):a.add(r)}else s.add(r);return[s,a]}evalSemanticContext(e,s,a){const r=new Wa;for(const i of e){if(i.pred===Xa.NONE){if(r.set(i.alt),!a)break;continue}const e=i.pred.evaluate(this.parser,s);if((t.debug||t.dfaDebug)&&console.log("eval pred "+i+"="+e),e&&(r.set(i.alt),!a))break}return r}closure(t,e,s,a,r,i){this.closureCheckingStopState(t,e,s,a,r,0,i)}closureCheckingStopState(e,s,a,r,i,c,n){if((t.traceATNSimulator||t.debugClosure)&&console.log("closure("+e.toString(this.parser,!0)+")"),e.state instanceof cr){if(e.context&&!e.context.isEmpty()){for(let h=0;h<e.context.length;h++){if(e.context.getReturnState(h)===ua.EMPTY_RETURN_STATE){if(i){s.add(Za.createWithConfig(e.state,e,ua.EMPTY),this.mergeCache);continue}t.debug&&console.log("FALLING off rule "+this.getRuleName(e.state.ruleIndex)),this.closure_(e,s,a,r,i,c,n);continue}const E=this.atn.states[e.context.getReturnState(h)],T=e.context.getParent(h),o=Za.createWithContext(E,e.alt,T,e.semanticContext);o.reachesIntoOuterContext=e.reachesIntoOuterContext,this.closureCheckingStopState(o,s,a,r,i,c-1,n)}return}if(i)return void s.add(e,this.mergeCache);t.debug&&console.log("FALLING off rule "+this.getRuleName(e.state.ruleIndex))}this.closure_(e,s,a,r,i,c,n)}closure_(e,s,a,r,i,c,n){const h=e.state;h.epsilonOnlyTransitions||s.add(e,this.mergeCache);for(let R=0;R<h.transitions.length;R++){if(0===R&&this.canDropLoopEntryEdgeInLeftRecursiveRule(e))continue;const A=h.transitions[R],S=r&&!(A instanceof Ir),l=this.getEpsilonTarget(e,A,S,0===c,i,n);if(l){let r=c;if(e.state.constructor.stateType===Va.RULE_STOP){var E;if(this.predictionState.dfa&&null!==(E=this.predictionState)&&void 0!==E&&E.dfa.isPrecedenceDfa){var T,o;A.outermostPrecedenceReturn===(null===(T=this.predictionState)||void 0===T||null===(o=T.dfa.atnStartState)||void 0===o?void 0:o.ruleIndex)&&(l.precedenceFilterSuppressed=!0)}if(l.reachesIntoOuterContext=!0,a.getOrAdd(l)!==l)continue;s.dipsIntoOuterContext=!0,r-=1,t.debug&&console.log("dips into outer ctx: "+l)}else{if(!A.isEpsilon&&a.getOrAdd(l)!==l)continue;A instanceof lr&&r>=0&&(r+=1)}this.closureCheckingStopState(l,s,a,S,i,r,n)}}}canDropLoopEntryEdgeInLeftRecursiveRule(t){const e=t.state;if(e.constructor.stateType!==Va.STAR_LOOP_ENTRY||!t.context)return!1;if(!e.precedenceRuleDecision||t.context.isEmpty()||t.context.hasEmptyPath())return!1;const s=t.context.length;for(let i=0;i<s;i++){if(this.atn.states[t.context.getReturnState(i)].ruleIndex!==e.ruleIndex)return!1}const a=e.transitions[0].target.endState.stateNumber,r=this.atn.states[a];for(let i=0;i<s;i++){const s=t.context.getReturnState(i),a=this.atn.states[s];if(1!==a.transitions.length||!a.transitions[0].isEpsilon)return!1;const c=a.transitions[0].target;if((a.constructor.stateType!==Va.BLOCK_END||c!==e)&&(a!==r&&c!==r&&(c.constructor.stateType!==Va.BLOCK_END||1!==c.transitions.length||!c.transitions[0].isEpsilon||c.transitions[0].target!==e)))return!1}return!0}getEpsilonTarget(e,s,a,r,i,c){switch(s.transitionType){case la.RULE:return this.ruleTransition(e,s);case la.PRECEDENCE:return this.precedenceTransition(e,s,a,r,i);case la.PREDICATE:return this.predTransition(e,s,a,r,i);case la.ACTION:if(t.debug){const t=s,e=-1===t.actionIndex?65535:t.actionIndex;console.log("ACTION edge "+t.ruleIndex+":"+e)}return Za.createWithConfig(s.target,e);case la.EPSILON:return Za.createWithConfig(s.target,e);case la.ATOM:case la.RANGE:case la.SET:return c&&s.matches(ca.EOF,0,1)?Za.createWithConfig(s.target,e):null;default:return null}}precedenceTransition(e,s,a,r,i){t.debug&&(console.log("PRED (collectPredicates="+a+") "+s.precedence+">=_p, ctx dependent=true"),null!==this.parser&&console.log("context surrounding pred is "+La(this.parser.getRuleInvocationStack())));let c=null;var n;if(a&&r)if(i&&null!==(n=this.predictionState)&&void 0!==n&&n.input){const t=this.predictionState.input.index;this.predictionState.input.seek(this.predictionState.startIndex);const a=s.getPredicate().evaluate(this.parser,this.predictionState.outerContext);this.predictionState.input.seek(t),a&&(c=Za.createWithConfig(s.target,e))}else{const t=Xa.andContext(e.semanticContext,s.getPredicate());c=Za.createWithSemanticContext(s.target,e,t)}else c=Za.createWithConfig(s.target,e);return t.debug&&console.log("config from pred transition="+c),c}predTransition(e,s,a,r,i){t.debug&&(console.log("PRED (collectPredicates="+a+") "+s.ruleIndex+":"+s.predIndex+", ctx dependent="+s.isCtxDependent),null!==this.parser&&console.log("context surrounding pred is "+La(this.parser.getRuleInvocationStack())));let c=null;var n;if(a&&(s.isCtxDependent&&r||!s.isCtxDependent))if(i&&null!==(n=this.predictionState)&&void 0!==n&&n.input){const t=this.predictionState.input.index;this.predictionState.input.seek(this.predictionState.startIndex);const a=s.getPredicate().evaluate(this.parser,this.predictionState.outerContext);this.predictionState.input.seek(t),a&&(c=Za.createWithConfig(s.target,e))}else{const t=Xa.andContext(e.semanticContext,s.getPredicate());c=Za.createWithSemanticContext(s.target,e,t)}else c=Za.createWithConfig(s.target,e);return t.debug&&console.log("config from pred transition="+c),c}ruleTransition(e,s){var a;t.debug&&console.log("CALL rule "+this.getRuleName(s.target.ruleIndex)+", ctx="+e.context);const r=s.followState,i=da.create(null!==(a=e.context)&&void 0!==a?a:void 0,r.stateNumber);return Za.createWithConfig(s.target,e,i)}getConflictingAlts(t){const e=Ri.getConflictingAltSubsets(t);return Ri.getAlts(e)}getConflictingAltsOrUniqueAlt(t){let e;return t.uniqueAlt!==ja.INVALID_ALT_NUMBER?(e=new Wa,e.set(t.uniqueAlt)):e=t.conflictingAlts,e}noViableAlt(t,e,s,a){return new Ei(this.parser,t,t.get(a),t.LT(1),s,e)}addDFAEdge(e,s,a,r){return t.debug&&console.log("EDGE "+s+" -> "+r+" upon "+this.getTokenName(a)),r=this.addDFAState(e,r),a<-1||a>this.atn.maxTokenType||(t.debug&&console.log("DFA=\n"+e.toString(null!=this.parser?this.parser.vocabulary:Ra.EMPTY_VOCABULARY)),s.edges[a+1]=r),r}addDFAState(e,s){if(s===br.ERROR)return s;const a=e.getState(s);return null!==a?a:(s.configs.readOnly||(s.configs.optimizeConfigs(this),s.configs.setReadonly(!0)),t.traceATNSimulator&&console.log("addDFAState new "+s),e.addState(s),s)}reportAttemptingFullContext(e,s,a,r,i){if(t.debug||t.retryDebug){const t=new oa(r,i+1);console.log("reportAttemptingFullContext decision="+e.decision+":"+a+", input="+this.parser.tokenStream.getTextFromInterval(t))}this.parser.errorListenerDispatch.reportAttemptingFullContext(this.parser,e,r,i,s,a)}reportContextSensitivity(e,s,a,r,i){if(t.debug||t.retryDebug){const t=new oa(r,i+1);console.log("reportContextSensitivity decision="+e.decision+":"+a+", input="+this.parser.tokenStream.getTextFromInterval(t))}this.parser.errorListenerDispatch.reportContextSensitivity(this.parser,e,r,i,s,a)}reportAmbiguity(e,s,a,r,i,c,n){if(t.debug||t.retryDebug){const t=new oa(a,r+1);console.log("reportAmbiguity "+c+":"+n+", input="+this.parser.tokenStream.getTextFromInterval(t))}this.parser.errorListenerDispatch.reportAmbiguity(this.parser,e,a,r,i,c,n)}},Ea(He,"ParserATNSimulator"),(0,js.Z)(He,"traceATNSimulator",!1),(0,js.Z)(He,"debug",void 0),(0,js.Z)(He,"debugAdd",!1),(0,js.Z)(He,"debugClosure",!1),(0,js.Z)(He,"dfaDebug",!1),(0,js.Z)(He,"retryDebug",!1),He),Si=(Ea(Ge=class{constructor(){(0,js.Z)(this,"cache",new Fa(xa.instance))}add(t){if(t===ua.EMPTY)return t;const e=this.cache.get(t);return e||(this.cache.set(t,t),t)}get(t){return this.cache.get(t)}get length(){return this.cache.size}},"PredictionContextCache"),Ge),li=(ve=new WeakMap,Be=new WeakMap,Fe=class extends Ai{constructor(t){const e=t.interpreter.sharedContextCache;if(super(t,t.interpreter.atn,t.interpreter.decisionToDFA,e),(0,js.Z)(this,"decisions",void 0),(0,js.Z)(this,"numDecisions",0),(0,js.Z)(this,"currentDecision",0),(0,js.Z)(this,"currentState",void 0),(0,js.Z)(this,"conflictingAltResolvedBySLL",void 0),r(this,ve,{writable:!0,value:0}),r(this,Be,{writable:!0,value:0}),e){this.numDecisions=this.atn.decisionToState.length,this.decisions=new Array(this.numDecisions);for(let t=0;t<this.numDecisions;t++)this.decisions[t]=new Wr(t)}}adaptivePredict(t,e,s){try{$s(this,ve,-1),$s(this,Be,-1),this.currentDecision=e;const a=performance.now(),r=super.adaptivePredict(t,e,s),i=performance.now();this.decisions[e].timeInPrediction+=i-a,this.decisions[e].invocations++;const c=ea(this,ve)-this.predictionState.startIndex+1;if(this.decisions[e].sllTotalLook+=c,this.decisions[e].sllMinLook=0===this.decisions[e].sllMinLook?c:Math.min(this.decisions[e].sllMinLook,c),c>this.decisions[e].sllMaxLook&&(this.decisions[e].sllMaxLook=c,this.decisions[e].sllMaxLookEvent={decision:e,configs:null,predictedAlt:r,input:t,startIndex:this.predictionState.startIndex,stopIndex:ea(this,ve),fullCtx:!1}),ea(this,Be)>=0){const s=ea(this,Be)-this.predictionState.startIndex+1;this.decisions[e].llTotalLook+=s,this.decisions[e].llMinLook=0===this.decisions[e].llMinLook?s:Math.min(this.decisions[e].llMinLook,s),s>this.decisions[e].llMaxLook&&(this.decisions[e].llMaxLook=s,this.decisions[e].llMaxLookEvent={decision:e,configs:null,predictedAlt:r,input:t,startIndex:this.predictionState.startIndex,stopIndex:ea(this,Be),fullCtx:!0})}return r}finally{this.currentDecision=-1}}getExistingTargetState(t,e){var s;if(null!==(s=this.predictionState)&&void 0!==s&&s.input){$s(this,ve,this.predictionState.input.index);const s=super.getExistingTargetState(t,e);return null!==s&&(this.decisions[this.currentDecision].sllDFATransitions++,s===br.ERROR&&this.decisions[this.currentDecision].errors.push({decision:this.currentDecision,configs:t.configs,input:this.predictionState.input,startIndex:this.predictionState.startIndex,stopIndex:ea(this,ve),fullCtx:!1})),this.currentState=s,s}}computeTargetState(t,e,s){const a=super.computeTargetState(t,e,s);return this.currentState=a,a}computeReachSet(t,e,s){var a,r;s&&null!==(a=this.predictionState)&&void 0!==a&&a.input&&$s(this,Be,this.predictionState.input.index);const i=super.computeReachSet(t,e,s);return null!==(r=this.predictionState)&&void 0!==r&&r.input&&(s?(this.decisions[this.currentDecision].llATNTransitions++,null===i&&this.decisions[this.currentDecision].errors.push({decision:this.currentDecision,configs:t,input:this.predictionState.input,startIndex:this.predictionState.startIndex,stopIndex:ea(this,ve),fullCtx:!0})):(this.decisions[this.currentDecision].sllATNTransitions++,null===i&&this.decisions[this.currentDecision].errors.push({decision:this.currentDecision,configs:t,input:this.predictionState.input,startIndex:this.predictionState.startIndex,stopIndex:ea(this,ve),fullCtx:!1}))),i}reportAttemptingFullContext(t,e,s,a,r){this.conflictingAltResolvedBySLL=null!==e?e.nextSetBit(0):s.getAlts().nextSetBit(0),this.decisions[this.currentDecision].llFallback++,e&&super.reportAttemptingFullContext(t,e,s,a,r)}reportContextSensitivity(t,e,s,a,r){e!==this.conflictingAltResolvedBySLL&&this.predictionState.input&&this.decisions[this.currentDecision].contextSensitivities.push({decision:this.currentDecision,configs:s,input:this.predictionState.input,startIndex:a,stopIndex:r,fullCtx:!0}),super.reportContextSensitivity(t,e,s,a,r)}reportAmbiguity(t,e,s,a,r,i,c){var n;let h;h=i?i.nextSetBit(0):c.getAlts().nextSetBit(0),null!==(n=this.predictionState)&&void 0!==n&&n.input&&(c.fullCtx&&h!==this.conflictingAltResolvedBySLL&&this.decisions[this.currentDecision].contextSensitivities.push({decision:this.currentDecision,configs:c,input:this.predictionState.input,startIndex:s,stopIndex:a,fullCtx:!0}),this.decisions[this.currentDecision].ambiguities.push({ambigAlts:i,decision:this.currentDecision,configs:c,input:this.predictionState.input,startIndex:s,stopIndex:a,fullCtx:c.fullCtx})),super.reportAmbiguity(t,e,s,a,r,i,c)}getDecisionInfo(){return this.decisions}getCurrentState(){return this.currentState}},Ea(Fe,"ProfilingATNSimulator"),Fe);(Ja||(Ja={})).toString=Ea((t=>"(".concat(t.pred,", ").concat(t.alt,")")),"toString");var Oi,Ii=(ye=class{visit(t){return t.accept(this)}visitChildren(t){let e=this.defaultResult();const s=t.getChildCount();for(let a=0;a<s&&this.shouldVisitNextChild(t,e);a++){const s=t.getChild(a);if(s){const t=s.accept(this);e=this.aggregateResult(e,t)}}return e}visitTerminal(t){return this.defaultResult()}visitErrorNode(t){return this.defaultResult()}defaultResult(){return null}shouldVisitNextChild(t,e){return!0}aggregateResult(t,e){return e}},Ea(ye,"AbstractParseTreeVisitor"),ye);fe=class{walk(t,e){if(e instanceof Da)t.visitErrorNode(e);else if(e instanceof ma)t.visitTerminal(e);else{const s=e;this.enterRule(t,s);for(let a=0;a<e.getChildCount();a++)this.walk(t,e.getChild(a));this.exitRule(t,s)}}enterRule(t,e){const s=e.ruleContext;t.enterEveryRule(s),s.enterRule(t)}exitRule(t,e){const s=e.ruleContext;s.exitRule(t),t.exitEveryRule(s)}},Ea(fe,"ParseTreeWalker"),(0,js.Z)(fe,"DEFAULT",new fe);(Oi||(Oi={})).fromString=Ea((t=>new ui(t)),"fromString");var ui=(we=new WeakSet,Ea(Ye=class{constructor(t){var e,s;a(e=this,s=we),s.add(e),(0,js.Z)(this,"name",""),(0,js.Z)(this,"index",0),(0,js.Z)(this,"data",void 0);const r=[];for(const a of t)r.push(a.codePointAt(0));this.data=new Uint32Array(r)}reset(){this.index=0}consume(){if(this.index>=this.data.length)throw new Error("cannot consume EOF");this.index+=1}LA(t){if(0===t)return 0;t<0&&(t+=1);const e=this.index+t-1;return e<0||e>=this.data.length?ca.EOF:this.data[e]}mark(){return-1}release(t){}seek(t){t<=this.index?this.index=t:this.index=Math.min(t,this.data.length)}getTextFromRange(t,e){var s;return(e=null!==(s=e)&&void 0!==s?s:this.data.length-1)>=this.data.length&&(e=this.data.length-1),t>=this.data.length?"":sa(this,we,Ni).call(this,t,e+1)}getTextFromInterval(t){const e=t.start;let s=t.stop;return s>=this.data.length&&(s=this.data.length-1),e>=this.data.length?"":sa(this,we,Ni).call(this,e,s+1)}toString(){return sa(this,we,Ni).call(this,0)}get size(){return this.data.length}getSourceName(){return this.name?this.name:ra.UNKNOWN_SOURCE_NAME}},"CharStreamImpl"),Ye);function Ni(t,e){const s=this.data.slice(t,e);let a="";return s.forEach((t=>{a+=String.fromCodePoint(t)})),a}var Li,Ci,_i,Pi,Mi,di,Ui,mi,Di,pi,gi,xi,ki,Hi,Gi,Fi,vi,Bi,yi,fi,Yi,wi,bi,Wi,Vi,Xi,Ki,Qi,Ji,Zi,qi,ji,zi=(be=class{constructor(t){(0,js.Z)(this,"tokenSource",void 0),(0,js.Z)(this,"tokens",[]),(0,js.Z)(this,"p",-1),(0,js.Z)(this,"fetchedEOF",!1),this.tokenSource=t}mark(){return 0}release(t){}reset(){this.seek(0)}seek(t){this.lazyInit(),this.p=this.adjustSeekIndex(t)}get size(){return this.tokens.length}get index(){return this.p}get(t){return this.lazyInit(),this.tokens[t]}consume(){let t=!1;if(t=this.p>=0&&(this.fetchedEOF?this.p<this.tokens.length-1:this.p<this.tokens.length),!t&&this.LA(1)===ca.EOF)throw new Error("cannot consume EOF");this.sync(this.p+1)&&(this.p=this.adjustSeekIndex(this.p+1))}sync(t){const e=t-this.tokens.length+1;if(e>0){return this.fetch(e)>=e}return!0}fetch(t){if(this.fetchedEOF)return 0;for(let e=0;e<t;e++){const t=this.tokenSource.nextToken();if(t.tokenIndex=this.tokens.length,this.tokens.push(t),t.type===ca.EOF)return this.fetchedEOF=!0,e+1}return t}getTokens(t,e,s){var a;if(this.lazyInit(),void 0===t&&void 0===e)return this.tokens;if(null!==(a=t)&&void 0!==a||(t=0),void 0===e&&(e=this.tokens.length-1),t<0||e>=this.tokens.length||e<0||t>=this.tokens.length)throw new RangeError("start "+t+" or stop "+e+" not in 0.."+(this.tokens.length-1));if(t>e)return[];if(void 0===s)return this.tokens.slice(t,e+1);const r=[];e>=this.tokens.length&&(e=this.tokens.length-1);for(let i=t;i<e;i++){const t=this.tokens[i];if(t.type===ca.EOF){r.push(t);break}s.has(t.type)&&r.push(t)}return r}LA(t){var e,s;return null!==(e=null===(s=this.LT(t))||void 0===s?void 0:s.type)&&void 0!==e?e:ca.INVALID_TYPE}LB(t){return this.p-t<0?null:this.tokens[this.p-t]}LT(t){if(this.lazyInit(),0===t)return null;if(t<0)return this.LB(-t);const e=this.p+t-1;return this.sync(e),e>=this.tokens.length?this.tokens[this.tokens.length-1]:this.tokens[e]}adjustSeekIndex(t){return t}lazyInit(){-1===this.p&&this.setup()}setup(){this.sync(0),this.p=this.adjustSeekIndex(0)}setTokenSource(t){this.tokenSource=t,this.tokens=[],this.p=-1,this.fetchedEOF=!1}nextTokenOnChannel(t,e){if(this.sync(t),t>=this.tokens.length)return-1;let s=this.tokens[t];for(;s.channel!==e;){if(s.type===ca.EOF)return-1;t+=1,this.sync(t),s=this.tokens[t]}return t}previousTokenOnChannel(t,e){for(;t>=0&&this.tokens[t].channel!==e;)t-=1;return t}getHiddenTokensToRight(t,e){if(void 0===e&&(e=-1),this.lazyInit(),t<0||t>=this.tokens.length)throw new Error("".concat(t," not in 0..").concat(this.tokens.length-1));const s=this.nextTokenOnChannel(t+1,$r.DEFAULT_TOKEN_CHANNEL),a=t+1,r=-1===s?this.tokens.length-1:s;return this.filterForChannel(a,r,e)}getHiddenTokensToLeft(t,e){if(void 0===e&&(e=-1),this.lazyInit(),t<0||t>=this.tokens.length)throw new Error("".concat(t," not in 0..").concat(this.tokens.length-1));const s=this.previousTokenOnChannel(t-1,$r.DEFAULT_TOKEN_CHANNEL);if(s===t-1)return;const a=s+1,r=t-1;return this.filterForChannel(a,r,e)}filterForChannel(t,e,s){const a=[];for(let r=t;r<e+1;r++){const t=this.tokens[r];-1===s?t.channel!==$r.DEFAULT_TOKEN_CHANNEL&&a.push(t):t.channel===s&&a.push(t)}if(0!==a.length)return a}getSourceName(){return this.tokenSource.sourceName}getText(){return this.getTextFromInterval(oa.of(0,this.size-1))}getTextFromInterval(t){const e=t.start;let s=t.stop;if(e<0||s<0)return"";this.sync(s),s>=this.tokens.length&&(s=this.tokens.length-1);let a="";for(let r=e;r<=s;++r){const t=this.tokens[r];if(t.type===ca.EOF)break;a+=t.text}return a}getTextFromContext(t){return this.getTextFromInterval(t.getSourceInterval())}getTextFromRange(t,e){return null!==t&&null!==e?this.getTextFromInterval(oa.of(t.tokenIndex,e.tokenIndex)):""}fill(){for(this.lazyInit();1e3===this.fetch(1e3););}},Ea(be,"BufferedTokenStream"),be),$i=(We=class extends zi{constructor(t,e){super(t),(0,js.Z)(this,"channel",ca.DEFAULT_CHANNEL),this.channel=null!==e&&void 0!==e?e:ca.DEFAULT_CHANNEL}adjustSeekIndex(t){return this.nextTokenOnChannel(t,this.channel)}LB(t){if(0===t||this.index-t<0)return null;let e=this.index,s=1;for(;s<=t;)e=this.previousTokenOnChannel(e-1,this.channel),s+=1;return e<0?null:this.tokens[e]}LT(t){if(this.lazyInit(),0===t)return null;if(t<0)return this.LB(-t);let e=this.index,s=1;for(;s<t;)this.sync(e+1)&&(e=this.nextTokenOnChannel(e+1,this.channel)),s+=1;return this.tokens[e]}getNumberOfOnChannelTokens(){let t=0;this.fill();for(const e of this.tokens)if(e.channel===this.channel&&(t+=1),e.type===ca.EOF)break;return t}},Ea(We,"CommonTokenStream"),We),tc=(Ea(Ve=class t extends $r{constructor(e){super(e),this.interpreter=new hi(this,t._ATN,t.decisionsToDFA,new Si)}get grammarFileName(){return"XPathLexer.g4"}get literalNames(){return t.literalNames}get symbolicNames(){return t.symbolicNames}get ruleNames(){return t.ruleNames}get serializedATN(){return t._serializedATN}get channelNames(){return t.channelNames}get modeNames(){return t.modeNames}action(t,e,s){if(4===e)this.ID_action(t,s)}ID_action(e,s){if(0===s){const e=this.text;e.charAt(0)===e.charAt(0).toUpperCase()?this.type=t.TOKEN_REF:this.type=t.RULE_REF}}static get _ATN(){return t.__ATN||(t.__ATN=(new fr).deserialize(t._serializedATN)),t.__ATN}get vocabulary(){return t.vocabulary}},"XPathLexer"),(0,js.Z)(Ve,"TOKEN_REF",1),(0,js.Z)(Ve,"RULE_REF",2),(0,js.Z)(Ve,"ANYWHERE",3),(0,js.Z)(Ve,"ROOT",4),(0,js.Z)(Ve,"WILDCARD",5),(0,js.Z)(Ve,"BANG",6),(0,js.Z)(Ve,"ID",7),(0,js.Z)(Ve,"STRING",8),(0,js.Z)(Ve,"channelNames",["DEFAULT_TOKEN_CHANNEL","HIDDEN"]),(0,js.Z)(Ve,"literalNames",[null,null,null,"'//'","'/'","'*'","'!'"]),(0,js.Z)(Ve,"symbolicNames",[null,"TOKEN_REF","RULE_REF","ANYWHERE","ROOT","WILDCARD","BANG","ID","STRING"]),(0,js.Z)(Ve,"modeNames",["DEFAULT_MODE"]),(0,js.Z)(Ve,"ruleNames",["ANYWHERE","ROOT","WILDCARD","BANG","ID","NameChar","NameStartChar","STRING"]),(0,js.Z)(Ve,"_serializedATN",[4,0,8,48,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,1,0,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,5,4,29,8,4,10,4,12,4,32,9,4,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,5,7,42,8,7,10,7,12,7,45,9,7,1,7,1,7,1,43,0,8,1,3,3,4,5,5,7,6,9,7,11,0,13,0,15,8,1,0,2,784,0,0,8,14,27,48,57,65,90,95,95,97,122,127,159,170,170,173,173,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1327,1329,1366,1369,1369,1376,1416,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1519,1522,1536,1541,1552,1562,1564,1564,1568,1641,1646,1747,1749,1757,1759,1768,1770,1788,1791,1791,1807,1866,1869,1969,1984,2037,2042,2042,2045,2045,2048,2093,2112,2139,2144,2154,2160,2183,2185,2190,2192,2193,2200,2403,2406,2415,2417,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2556,2556,2558,2558,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2809,2815,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2901,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3072,3084,3086,3088,3090,3112,3114,3129,3132,3140,3142,3144,3146,3149,3157,3158,3160,3162,3165,3165,3168,3171,3174,3183,3200,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3293,3294,3296,3299,3302,3311,3313,3315,3328,3340,3342,3344,3346,3396,3398,3400,3402,3406,3412,3415,3423,3427,3430,3439,3450,3455,3457,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3558,3567,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3773,3776,3780,3782,3782,3784,3790,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5909,5919,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6169,6176,6264,6272,6314,6320,6389,6400,6430,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6832,6845,6847,6862,6912,6988,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7296,7304,7312,7354,7357,7359,7376,7378,7380,7418,7424,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8203,8207,8234,8238,8255,8256,8276,8276,8288,8292,8294,8303,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42737,42775,42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43047,43052,43052,43072,43123,43136,43205,43216,43225,43232,43255,43259,43259,43261,43309,43312,43347,43360,43388,43392,43456,43471,43481,43488,43518,43520,43574,43584,43597,43600,43609,43616,43638,43642,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65071,65075,65076,65101,65103,65136,65140,65142,65276,65279,65279,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65529,65531,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66045,66045,66176,66204,66208,66256,66272,66272,66304,66335,66349,66378,66384,66426,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66720,66729,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68099,68101,68102,68108,68115,68117,68119,68121,68149,68152,68154,68159,68159,68192,68220,68224,68252,68288,68295,68297,68326,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68903,68912,68921,69248,69289,69291,69292,69296,69297,69373,69404,69415,69415,69424,69456,69488,69509,69552,69572,69600,69622,69632,69702,69734,69749,69759,69818,69821,69821,69826,69826,69837,69837,69840,69864,69872,69881,69888,69940,69942,69951,69956,69959,69968,70003,70006,70006,70016,70084,70089,70092,70094,70106,70108,70108,70144,70161,70163,70199,70206,70209,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70378,70384,70393,70400,70403,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70459,70468,70471,70472,70475,70477,70480,70480,70487,70487,70493,70499,70502,70508,70512,70516,70656,70730,70736,70745,70750,70753,70784,70853,70855,70855,70864,70873,71040,71093,71096,71104,71128,71133,71168,71232,71236,71236,71248,71257,71296,71352,71360,71369,71424,71450,71453,71467,71472,71481,71488,71494,71680,71738,71840,71913,71935,71942,71945,71945,71948,71955,71957,71958,71960,71989,71991,71992,71995,72003,72016,72025,72096,72103,72106,72151,72154,72161,72163,72164,72192,72254,72263,72263,72272,72345,72349,72349,72368,72440,72704,72712,72714,72758,72760,72768,72784,72793,72818,72847,72850,72871,72873,72886,72960,72966,72968,72969,72971,73014,73018,73018,73020,73021,73023,73031,73040,73049,73056,73061,73063,73064,73066,73102,73104,73105,73107,73112,73120,73129,73440,73462,73472,73488,73490,73530,73534,73538,73552,73561,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78933,82944,83526,92160,92728,92736,92766,92768,92777,92784,92862,92864,92873,92880,92909,92912,92916,92928,92982,92992,92995,93008,93017,93027,93047,93053,93071,93760,93823,93952,94026,94031,94087,94095,94111,94176,94177,94179,94180,94192,94193,94208,100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,113821,113822,113824,113827,118528,118573,118576,118598,119141,119145,119149,119170,119173,119179,119210,119213,119362,119364,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,120782,120831,121344,121398,121403,121452,121461,121461,121476,121476,121499,121503,121505,121519,122624,122654,122661,122666,122880,122886,122888,122904,122907,122913,122915,122916,122918,122922,122928,122989,123023,123023,123136,123180,123184,123197,123200,123209,123214,123214,123536,123566,123584,123641,124112,124153,124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,125136,125142,125184,125259,125264,125273,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,130032,130041,131072,173791,173824,177977,177984,178205,178208,183969,183984,191456,194560,195101,196608,201546,201552,205743,917505,917505,917536,917631,917760,917999,662,0,65,90,97,122,170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,2365,2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3293,3294,3296,3297,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5905,5919,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,6430,6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,6917,6963,6981,6988,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42653,42656,42735,42775,42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43261,43262,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43488,43492,43494,43503,43514,43518,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66176,66204,66208,66256,66304,66335,66349,66378,66384,66421,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68149,68192,68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68899,69248,69289,69296,69297,69376,69404,69415,69415,69424,69445,69488,69505,69552,69572,69600,69622,69635,69687,69745,69746,69749,69749,69763,69807,69840,69864,69891,69926,69956,69956,69959,69959,69968,70002,70006,70006,70019,70066,70081,70084,70106,70106,70108,70108,70144,70161,70163,70187,70207,70208,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,70727,70730,70751,70753,70784,70831,70852,70853,70855,70855,71040,71086,71128,71131,71168,71215,71236,71236,71296,71338,71352,71352,71424,71450,71488,71494,71680,71723,71840,71903,71935,71942,71945,71945,71948,71955,71957,71958,71960,71983,71999,71999,72001,72001,72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,72440,72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968,72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097,73112,73112,73440,73458,73474,73474,73476,73488,73490,73523,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78895,78913,78918,82944,83526,92160,92728,92736,92766,92784,92862,92880,92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,93823,93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,122624,122654,122661,122666,122928,122989,123136,123180,123191,123197,123214,123214,123536,123565,123584,123627,124112,124139,124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,125184,125251,125259,125259,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,173791,173824,177977,177984,178205,178208,183969,183984,191456,194560,195101,196608,201546,201552,205743,47,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,15,1,0,0,0,1,17,1,0,0,0,3,20,1,0,0,0,5,22,1,0,0,0,7,24,1,0,0,0,9,26,1,0,0,0,11,35,1,0,0,0,13,37,1,0,0,0,15,39,1,0,0,0,17,18,5,47,0,0,18,19,5,47,0,0,19,2,1,0,0,0,20,21,5,47,0,0,21,4,1,0,0,0,22,23,5,42,0,0,23,6,1,0,0,0,24,25,5,33,0,0,25,8,1,0,0,0,26,30,3,13,6,0,27,29,3,11,5,0,28,27,1,0,0,0,29,32,1,0,0,0,30,28,1,0,0,0,30,31,1,0,0,0,31,33,1,0,0,0,32,30,1,0,0,0,33,34,6,4,0,0,34,10,1,0,0,0,35,36,7,0,0,0,36,12,1,0,0,0,37,38,7,1,0,0,38,14,1,0,0,0,39,43,5,39,0,0,40,42,9,0,0,0,41,40,1,0,0,0,42,45,1,0,0,0,43,44,1,0,0,0,43,41,1,0,0,0,44,46,1,0,0,0,45,43,1,0,0,0,46,47,5,39,0,0,47,16,1,0,0,0,3,0,30,43,1,1,4,0]),(0,js.Z)(Ve,"__ATN",void 0),(0,js.Z)(Ve,"vocabulary",new Ra(Ve.literalNames,Ve.symbolicNames,[])),(0,js.Z)(Ve,"decisionsToDFA",Ve._ATN.decisionToState.map(((t,e)=>new ni(t,e)))),Ve),ec=(Ea(Xe=class extends Xr{syntaxError(t,e,s,a,r,i){}},"XPathLexerErrorListener"),Xe),sc=(Ea(Ke=class{constructor(t){(0,js.Z)(this,"invert",void 0),(0,js.Z)(this,"nodeName",void 0),this.nodeName=t,this.invert=!1}toString(){return"XPathElement["+(this.invert?"!":"")+this.nodeName+"]"}},"XPathElement"),Ke),ac=(Ea(Qe=class extends sc{constructor(t,e){super(t),(0,js.Z)(this,"ruleIndex",void 0),this.ruleIndex=e}evaluate(t){return pa.findAllRuleNodes(t,this.ruleIndex)}toString(){return"XPathRuleAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},"XPathRuleAnywhereElement"),Qe),rc=(Je=class extends sc{constructor(t,e){super(t),(0,js.Z)(this,"ruleIndex",void 0),this.ruleIndex=e}evaluate(t){const e=[];for(const s of pa.getChildren(t))s instanceof ga&&(s.ruleIndex===this.ruleIndex&&!this.invert||s.ruleIndex!==this.ruleIndex&&this.invert)&&e.push(s);return e}toString(){return"XPathRuleElement["+(this.invert?"!":"")+this.nodeName+"]"}},Ea(Je,"XPathRuleElement"),Je),ic=(Ea(Ze=class extends sc{constructor(t,e){super(t),(0,js.Z)(this,"tokenType",void 0),this.tokenType=e}evaluate(t){return pa.findAllTokenNodes(t,this.tokenType)}toString(){return"XPathTokenAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},"XPathTokenAnywhereElement"),Ze),cc=(qe=class extends sc{constructor(t,e){super(t),(0,js.Z)(this,"tokenType",void 0),this.tokenType=e}evaluate(t){const e=[];for(const s of pa.getChildren(t))s instanceof ma&&s.symbol&&(s.symbol.type===this.tokenType&&!this.invert||s.symbol.type!==this.tokenType&&this.invert)&&e.push(s);return e}toString(){return"XPathTokenElement["+(this.invert?"!":"")+this.nodeName+"]"}},Ea(qe,"XPathTokenElement"),qe),nc=(Ea(je=class extends sc{constructor(){super(Ec.WILDCARD)}evaluate(t){return this.invert?[]:pa.descendants(t)}toString(){return"XPathWildcardAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},"XPathWildcardAnywhereElement"),je),hc=(ze=class extends sc{constructor(){super(Ec.WILDCARD)}evaluate(t){const e=[];if(this.invert)return e;for(const s of pa.getChildren(t))e.push(s);return e}toString(){return"XPathWildcardElement["+(this.invert?"!":"")+this.nodeName+"]"}},Ea(ze,"XPathWildcardElement"),ze),Ec=($e=class t{constructor(t,e){(0,js.Z)(this,"path",void 0),(0,js.Z)(this,"elements",void 0),(0,js.Z)(this,"parser",void 0),this.parser=t,this.path=e,this.elements=this.split(e)}static findAll(e,s,a){return new t(a,s).evaluate(e)}split(t){const e=new tc(Oi.fromString(t));e.recover=t=>{throw t},e.removeErrorListeners(),e.addErrorListener(new ec);const s=new $i(e);try{s.fill()}catch(n){if(n instanceof zr){const s="Invalid tokens or characters at index "+e.column+" in path '"+t+"' -- "+n.message;throw new RangeError(s)}throw n}const a=s.getTokens(),r=[],i=a.length;let c=0;t:for(;c<i;){const t=a[c];let e;switch(t.type){case tc.ROOT:case tc.ANYWHERE:const s=t.type===tc.ANYWHERE;c++,e=a[c];const i=e.type===tc.BANG;i&&(c++,e=a[c]);const n=this.getXPathElement(e,s);n.invert=i,r.push(n),c++;break;case tc.TOKEN_REF:case tc.RULE_REF:case tc.WILDCARD:r.push(this.getXPathElement(t,!1)),++c;break;case ca.EOF:break t;default:throw new Error("Unknown path element "+t)}}return r}evaluate(t){const e=new ga(null);e.addChild(t);let s=new Set([e]),a=0;for(;a<this.elements.length;){const t=new Set;for(const e of s)if(e.getChildCount()>0){this.elements[a].evaluate(e).forEach((e=>{t.add(e)}),t)}a++,s=t}return s}getXPathElement(t,e){if(t.type===ca.EOF)throw new Error("Missing path element at end of path");const s=t.text;if(null==s)throw new Error("Expected wordToken to have text content.");const a=this.parser.getTokenType(s),r=this.parser.getRuleIndex(s);switch(t.type){case tc.WILDCARD:return e?new nc:new hc;case tc.TOKEN_REF:case tc.STRING:if(a===ca.INVALID_TYPE)throw new Error(s+" at index "+t.start+" isn't a valid token name");return e?new ic(s,a):new cc(s,a);default:if(-1===r)throw new Error(s+" at index "+t.start+" isn't a valid rule name");return e?new ac(s,r):new rc(s,r)}}},Ea($e,"XPath"),(0,js.Z)($e,"WILDCARD","*"),(0,js.Z)($e,"NOT","!"),$e),Tc=(Ea(ts=class{},"Chunk"),ts),oc=(Ea(es=class{constructor(t,e,s,a){(0,js.Z)(this,"tree",void 0),(0,js.Z)(this,"pattern",void 0),(0,js.Z)(this,"labels",void 0),(0,js.Z)(this,"mismatchedNode",void 0),this.tree=t,this.pattern=e,this.labels=s,this.mismatchedNode=a}get(t){const e=this.labels.get(t);return e&&0!==e.length?e[e.length-1]:null}getAll(t){const e=this.labels.get(t);return null!==e&&void 0!==e?e:[]}getLabels(){return this.labels}getMismatchedNode(){return this.mismatchedNode}succeeded(){return!this.mismatchedNode}getPattern(){return this.pattern}getTree(){return this.tree}toString(){return"Match ".concat(this.succeeded()?"succeeded":"failed","; found ").concat(this.getLabels().size," labels")}},"ParseTreeMatch"),es),Rc=(Ea(ss=class{constructor(t,e,s,a){(0,js.Z)(this,"patternRuleIndex",void 0),(0,js.Z)(this,"pattern",void 0),(0,js.Z)(this,"patternTree",void 0),(0,js.Z)(this,"matcher",void 0),this.matcher=t,this.patternRuleIndex=s,this.pattern=e,this.patternTree=a}match(t){return this.matcher.match(t,this)}matches(t){return this.matcher.match(t,this).succeeded()}findAll(t,e){const s=Ec.findAll(t,e,this.matcher.getParser()),a=new Array;for(const r of s){const t=this.match(r);t.succeeded()&&a.push(t)}return a}getMatcher(){return this.matcher}getPattern(){return this.pattern}getPatternRuleIndex(){return this.patternRuleIndex}getPatternTree(){return this.patternTree}},"ParseTreePattern"),ss),Ac=(Ea(as=class extends jr{constructor(t){super({message:"",recognizer:t,input:t.inputStream,ctx:t.context}),this.offendingToken=t.getCurrentToken()}},"InputMismatchException"),as),Sc=(Ea(rs=class extends jr{constructor(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;super({message:lc(null!==e&&void 0!==e?e:"no predicate",null!==s&&void 0!==s?s:null),recognizer:t,input:t.inputStream,ctx:t.context}),(0,js.Z)(this,"ruleIndex",0),(0,js.Z)(this,"predicateIndex",0),(0,js.Z)(this,"predicate",void 0);const a=t.atn.states[t.state].transitions[0];a instanceof Cr?(this.ruleIndex=a.ruleIndex,this.predicateIndex=a.predIndex):(this.ruleIndex=0,this.predicateIndex=0),this.predicate=e,this.offendingToken=t.getCurrentToken()}},"FailedPredicateException"),rs),lc=Ea(((t,e)=>null!==e?e:"failed predicate: {"+t+"}?"),"formatMessage"),Oc=(is=class{constructor(){(0,js.Z)(this,"errorRecoveryMode",!1),(0,js.Z)(this,"lastErrorIndex",-1),(0,js.Z)(this,"lastErrorStates",new Sa),(0,js.Z)(this,"nextTokensContext",null),(0,js.Z)(this,"nextTokenState",0)}reset(t){this.endErrorCondition(t)}beginErrorCondition(t){this.errorRecoveryMode=!0}inErrorRecoveryMode(t){return this.errorRecoveryMode}endErrorCondition(t){this.errorRecoveryMode=!1,this.lastErrorStates=new Sa,this.lastErrorIndex=-1}reportMatch(t){this.endErrorCondition(t)}reportError(t,e){this.inErrorRecoveryMode(t)||(this.beginErrorCondition(t),e instanceof Ei?this.reportNoViableAlternative(t,e):e instanceof Ac?this.reportInputMismatch(t,e):e instanceof Sc?this.reportFailedPredicate(t,e):t.notifyErrorListeners(e.message,e.offendingToken,e))}recover(t,e){var s,a,r;this.lastErrorIndex===(null===(s=t.inputStream)||void 0===s?void 0:s.index)&&this.lastErrorStates.contains(t.state)&&t.consume(),this.lastErrorIndex=null!==(a=null===(r=t.inputStream)||void 0===r?void 0:r.index)&&void 0!==a?a:0,this.lastErrorStates.addOne(t.state);const i=this.getErrorRecoverySet(t);this.consumeUntil(t,i)}sync(t){if(this.inErrorRecoveryMode(t))return;const e=t.atn.states[t.state],s=t.tokenStream.LA(1),a=t.atn.nextTokens(e);if(a.contains(s))return this.nextTokensContext=null,void(this.nextTokenState=Va.INVALID_STATE_NUMBER);if(a.contains(ca.EPSILON))null===this.nextTokensContext&&(this.nextTokensContext=t.context,this.nextTokenState=t.state);else switch(e.constructor.stateType){case Va.BLOCK_START:case Va.STAR_BLOCK_START:case Va.PLUS_BLOCK_START:case Va.STAR_LOOP_ENTRY:if(null!==this.singleTokenDeletion(t))return;throw new Ac(t);case Va.PLUS_LOOP_BACK:case Va.STAR_LOOP_BACK:{this.reportUnwantedToken(t);const e=new Sa;e.addSet(t.getExpectedTokens());const s=e.addSet(this.getErrorRecoverySet(t));this.consumeUntil(t,s);break}}}reportNoViableAlternative(t,e){if(e.message.length>0)return void t.notifyErrorListeners(e.message,e.offendingToken,e);const s=t.tokenStream;let a;a=null!==s&&e.startToken?e.startToken.type===ca.EOF?"<EOF>":s.getTextFromRange(e.startToken,e.offendingToken):"<unknown input>";const r="no viable alternative at input "+this.escapeWSAndQuote(a);t.notifyErrorListeners(r,e.offendingToken,e)}reportInputMismatch(t,e){if(e.message.length>0)return void t.notifyErrorListeners(e.message,e.offendingToken,e);const s="mismatched input "+this.getTokenErrorDisplay(e.offendingToken)+" expecting "+e.getExpectedTokens().toStringWithVocabulary(t.vocabulary);t.notifyErrorListeners(s,e.offendingToken,e)}reportFailedPredicate(t,e){const s="rule "+t.ruleNames[t.context.ruleIndex]+" "+e.message;t.notifyErrorListeners(s,e.offendingToken,e)}reportUnwantedToken(t){if(this.inErrorRecoveryMode(t))return;this.beginErrorCondition(t);const e=t.getCurrentToken(),s="extraneous input "+this.getTokenErrorDisplay(e)+" expecting "+this.getExpectedTokens(t).toStringWithVocabulary(t.vocabulary);t.notifyErrorListeners(s,e,null)}reportMissingToken(t){if(this.inErrorRecoveryMode(t))return;this.beginErrorCondition(t);const e=t.getCurrentToken(),s="missing "+this.getExpectedTokens(t).toStringWithVocabulary(t.vocabulary)+" at "+this.getTokenErrorDisplay(e);t.notifyErrorListeners(s,e,null)}recoverInline(t){const e=this.singleTokenDeletion(t);if(e)return t.consume(),e;if(this.singleTokenInsertion(t))return this.getMissingSymbol(t);throw new Ac(t)}singleTokenInsertion(t){var e,s,a;const r=null!==(e=null===(s=t.tokenStream)||void 0===s?void 0:s.LA(1))&&void 0!==e?e:-1,i=t.atn,c=i.states[t.state].transitions[0].target;return!!i.nextTokens(c,null!==(a=t.context)&&void 0!==a?a:void 0).contains(r)&&(this.reportMissingToken(t),!0)}singleTokenDeletion(t){var e,s;const a=null!==(e=null===(s=t.tokenStream)||void 0===s?void 0:s.LA(2))&&void 0!==e?e:-1;if(this.getExpectedTokens(t).contains(a)){this.reportUnwantedToken(t),t.consume();const e=t.getCurrentToken();return this.reportMatch(t),e}return null}getMissingSymbol(t){var e;const s=t.getCurrentToken(),a=this.getExpectedTokens(t);let r,i=ca.INVALID_TYPE;0!==a.length&&(i=a.minElement),r=i===ca.EOF?"<missing EOF>":"<missing "+t.vocabulary.getDisplayName(i)+">";let c=s;const n=null===(e=t.tokenStream)||void 0===e?void 0:e.LT(-1);return c.type===ca.EOF&&null!==n&&(c=n),t.getTokenFactory().create(c.source,i,r,ca.DEFAULT_CHANNEL,-1,-1,c.line,c.column)}getExpectedTokens(t){return t.getExpectedTokens()}getTokenErrorDisplay(t){if(null===t)return"<no token>";let e=t.text;return e||(e=t.type===ca.EOF?"<EOF>":"<"+t.type+">"),this.escapeWSAndQuote(e)}escapeWSAndQuote(t){return"'"+(t=(t=(t=t.replace(/\n/g,"\\n")).replace(/\r/g,"\\r")).replace(/\t/g,"\\t"))+"'"}getErrorRecoverySet(t){const e=t.atn;let s=t.context;const a=new Sa;for(;null!==s&&s.invokingState>=0;){const t=e.states[s.invokingState].transitions[0],r=e.nextTokens(t.followState);a.addSet(r),s=s.parent}return a.removeOne(ca.EPSILON),a}consumeUntil(t,e){var s,a;let r=null!==(s=null===(a=t.tokenStream)||void 0===a?void 0:a.LA(1))&&void 0!==s?s:-1;for(;r!==ca.EOF&&!e.contains(r);){var i,c;t.consume(),r=null!==(i=null===(c=t.tokenStream)||void 0===c?void 0:c.LA(1))&&void 0!==i?i:-1}}},Ea(is,"DefaultErrorStrategy"),is),Ic=(Ea(cs=class extends Oc{recover(t,e){throw new ti(e)}recoverInline(t){const e=new Ac(t);throw new ti(e)}sync(t){}},"BailErrorStrategy"),cs),uc=(Ea(ns=class{constructor(t,e){(0,js.Z)(this,"sourceName",void 0),(0,js.Z)(this,"tokenFactory",qr.DEFAULT),(0,js.Z)(this,"tokens",void 0),(0,js.Z)(this,"i",void 0),(0,js.Z)(this,"eofToken",void 0),this.tokens=t,this.sourceName=null!==e&&void 0!==e?e:""}get column(){if(this.i<this.tokens.length)return this.tokens[this.i].column;if(null!==this.eofToken)return this.eofToken.column;if(this.tokens.length>0){const t=this.tokens[this.tokens.length-1],e=t.text;if(e){const t=e.lastIndexOf("\n");if(t>=0)return e.length-t-1}return t.column+t.stop-t.start+1}return 0}nextToken(){if(this.i>=this.tokens.length){if(null===this.eofToken){let t=-1;if(this.tokens.length>0){const e=this.tokens[this.tokens.length-1].stop;-1!==e&&(t=e+1)}const e=Math.max(-1,t-1);this.eofToken=this.tokenFactory.create([this,this.inputStream],ca.EOF,"EOF",ca.DEFAULT_CHANNEL,t,e,this.line,this.column)}return this.eofToken}const t=this.tokens[this.i];return this.i===this.tokens.length-1&&t.type===ca.EOF&&(this.eofToken=t),this.i++,t}get line(){if(this.i<this.tokens.length)return this.tokens[this.i].line;if(null!==this.eofToken)return this.eofToken.line;if(this.tokens.length>0){const t=this.tokens[this.tokens.length-1];let e=t.line;const s=t.text;if(s)for(const a of s)"\n"===a&&e++;return e}return 1}get inputStream(){return this.i<this.tokens.length?this.tokens[this.i].inputStream:null!==this.eofToken?this.eofToken.inputStream:this.tokens.length>0?this.tokens[this.tokens.length-1].inputStream:null}getSourceName(){if(null!==this.sourceName)return this.sourceName;const t=this.inputStream;return null!==t?t.getSourceName():"List"}},"ListTokenSource"),ns),Nc=(Es=new WeakMap,Ea(hs=class extends ga{constructor(t,e,s){super(e,s),r(this,Es,{writable:!0,value:void 0}),$s(this,Es,t)}get ruleIndex(){return ea(this,Es)}},"InterpreterRuleContext"),hs),Lc=(Ea(Ts=class{constructor(t){(0,js.Z)(this,"parser",void 0),this.parser=t}enterEveryRule(t){var e,s;console.log("enter "+this.parser.ruleNames[t.ruleIndex]+", LT(1)="+(null===(e=this.parser.inputStream)||void 0===e||null===(s=e.LT(1))||void 0===s?void 0:s.text))}visitTerminal(t){console.log("consume "+t.getSymbol()+" rule "+this.parser.ruleNames[this.parser.context.ruleIndex])}exitEveryRule(t){var e,s;console.log("exit "+this.parser.ruleNames[t.ruleIndex]+", LT(1)="+(null===(e=this.parser.inputStream)||void 0===e||null===(s=e.LT(1))||void 0===s?void 0:s.text))}visitErrorNode(t){}},"TraceListener"),Ts),Cc=(Rs=new WeakMap,As=new WeakMap,Ss=new WeakMap,os=class extends Jr{constructor(t){super(),(0,js.Z)(this,"printer",null),(0,js.Z)(this,"buildParseTrees",!0),(0,js.Z)(this,"errorHandler",new Oc),(0,js.Z)(this,"context",null),(0,js.Z)(this,"precedenceStack",[]),(0,js.Z)(this,"parseListeners",null),(0,js.Z)(this,"syntaxErrors",0),(0,js.Z)(this,"matchedEOF",!1),r(this,Rs,{writable:!0,value:null}),r(this,As,{writable:!0,value:null}),r(this,Ss,{writable:!0,value:void 0}),this.precedenceStack.push(0),this.syntaxErrors=0,$s(this,Ss,t)}reset(){(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&this.inputStream.seek(0),this.errorHandler.reset(this),this.context=null,this.syntaxErrors=0,this.setTrace(!1),this.precedenceStack=[],this.precedenceStack.push(0),this.interpreter&&this.interpreter.reset()}match(t){let e=this.getCurrentToken();return e.type===t?(this.errorHandler.reportMatch(this),this.consume()):(e=this.errorHandler.recoverInline(this),this.buildParseTrees&&-1===e.tokenIndex&&this.context.addErrorNode(this.createErrorNode(this.context,e))),e}matchWildcard(){let t=this.getCurrentToken();return t.type>0?(this.errorHandler.reportMatch(this),this.consume()):(t=this.errorHandler.recoverInline(this),this.buildParseTrees&&-1===t.tokenIndex&&this.context.addErrorNode(this.createErrorNode(this.context,t))),t}getParseListeners(){var t;return null!==(t=this.parseListeners)&&void 0!==t?t:[]}addParseListener(t){if(null===t)throw new Error("listener");null===this.parseListeners&&(this.parseListeners=[]),this.parseListeners.push(t)}removeParseListener(t){if(null!==this.parseListeners&&null!==t){const e=this.parseListeners.indexOf(t);e>=0&&this.parseListeners.splice(e,1),0===this.parseListeners.length&&(this.parseListeners=null)}}removeParseListeners(){this.parseListeners=null}triggerEnterRuleEvent(){if(null!==this.parseListeners){const t=this.context;this.parseListeners.forEach((e=>{e.enterEveryRule(t),t.enterRule(e)}))}}triggerExitRuleEvent(){if(null!==this.parseListeners){const t=this.context;this.parseListeners.slice(0).reverse().forEach((e=>{t.exitRule(e),e.exitEveryRule(t)}))}}getTokenFactory(){return this.inputStream.tokenSource.tokenFactory}setTokenFactory(t){this.inputStream.tokenSource.tokenFactory=t}compileParseTreePattern(t,e,s){if(!s&&null!==this.tokenStream){const t=this.tokenStream.tokenSource;t instanceof $r&&(s=t)}if(!s)throw new Error("Parser can't discover a lexer to use");return new Dc(s,this).compile(t,e)}getATNWithBypassAlts(){const t=this.getSerializedATN();if(null===t)throw new Error("The current parser does not support an ATN with bypass alternatives.");if(null!==ea(this,As))return ea(this,As);return $s(this,As,new fr({readOnly:!1,verifyATN:!0,generateRuleBypassTransitions:!0}).deserialize(t)),ea(this,As)}get numberOfSyntaxErrors(){return this.syntaxErrors}get inputStream(){return ea(this,Ss)}set inputStream(t){this.tokenStream=t}get tokenStream(){return ea(this,Ss)}set tokenStream(t){this.reset(!1),$s(this,Ss,t)}getCurrentToken(){return this.inputStream.LT(1)}notifyErrorListeners(t,e,s){var a,r;s=null!==(r=s)&&void 0!==r?r:null,null===(e=null!==(a=e)&&void 0!==a?a:null)&&(e=this.getCurrentToken()),this.syntaxErrors+=1;const i=e.line,c=e.column;this.errorListenerDispatch.syntaxError(this,e,i,c,t,s)}consume(){const t=this.getCurrentToken();t.type!==ca.EOF&&this.tokenStream.consume();const e=null!==this.parseListeners&&this.parseListeners.length>0;if(this.buildParseTrees||e){let s;s=this.errorHandler.inErrorRecoveryMode(this)?this.context.addErrorNode(this.createErrorNode(this.context,t)):this.context.addTokenNode(t),e&&this.parseListeners.forEach((t=>{s instanceof Da?t.visitErrorNode(s):t.visitTerminal(s)}))}return t}addContextToParseTree(){var t;null!==(null===(t=this.context)||void 0===t?void 0:t.parent)&&this.context.parent.addChild(this.context)}enterRule(t,e,s){this.state=e,this.context=t,this.context.start=this.inputStream.LT(1),this.buildParseTrees&&this.addContextToParseTree(),this.triggerEnterRuleEvent()}exitRule(){this.context.stop=this.inputStream.LT(-1),this.triggerExitRuleEvent(),this.state=this.context.invokingState,this.context=this.context.parent}enterOuterAlt(t,e){t.setAltNumber(e),this.buildParseTrees&&this.context!==t&&null!==this.context.parent&&(this.context.parent.removeLastChild(),this.context.parent.addChild(t)),this.context=t}getPrecedence(){return 0===this.precedenceStack.length?-1:this.precedenceStack[this.precedenceStack.length-1]}enterRecursionRule(t,e,s,a){this.state=e,this.precedenceStack.push(a),this.context=t,this.context.start=this.inputStream.LT(1),this.triggerEnterRuleEvent()}pushNewRecursionContext(t,e,s){const a=this.context;a.parent=t,a.invokingState=e,a.stop=this.inputStream.LT(-1),this.context=t,this.context.start=a.start,this.buildParseTrees&&this.context.addChild(a),this.triggerEnterRuleEvent()}unrollRecursionContexts(t){this.precedenceStack.pop(),this.context.stop=this.inputStream.LT(-1);const e=this.context,s=this.getParseListeners();if(null!==s&&s.length>0)for(;this.context!==t;)this.triggerExitRuleEvent(),this.context=this.context.parent;else this.context=t;e.parent=t,this.buildParseTrees&&null!==t&&t.addChild(e)}getInvokingContext(t){let e=this.context;for(;null!==e;){if(e.ruleIndex===t)return e;e=e.parent}return null}precpred(t,e){return e>=this.precedenceStack[this.precedenceStack.length-1]}inContext(t){return!1}isExpectedToken(t){const e=this.interpreter.atn;let s=this.context;const a=e.states[this.state];let r=e.nextTokens(a);if(r.contains(t))return!0;if(!r.contains(ca.EPSILON))return!1;for(;null!==s&&s.invokingState>=0&&r.contains(ca.EPSILON);){const a=e.states[s.invokingState].transitions[0];if(r=e.nextTokens(a.followState),r.contains(t))return!0;s=s.parent}return!(!r.contains(ca.EPSILON)||t!==ca.EOF)}getExpectedTokens(){return this.interpreter.atn.getExpectedTokens(this.state,this.context)}getExpectedTokensWithinCurrentRule(){const t=this.interpreter.atn,e=t.states[this.state];return t.nextTokens(e)}getRuleIndex(t){var e;return null!==(e=this.getRuleIndexMap().get(t))&&void 0!==e?e:-1}getRuleInvocationStack(t){var e;null===(t=null!==(e=t)&&void 0!==e?e:null)&&(t=this.context);const s=[];for(;null!==t;){const e=t.ruleIndex;e<0?s.push("n/a"):s.push(this.ruleNames[e]),t=t.parent}return s}getDFAStrings(){return this.interpreter.decisionToDFA.toString()}dumpDFA(){let t=!1;for(const e of this.interpreter.decisionToDFA)e.length>0&&(t&&console.log(),this.printer&&(this.printer.println("Decision "+e.decision+":"),this.printer.print(e.toString(this.vocabulary))),t=!0)}getSourceName(){return this.inputStream.getSourceName()}setProfile(t){const e=this.interpreter,s=e.predictionMode;if(t)e instanceof li||(this.interpreter=new li(this));else if(e instanceof li){const t=e.sharedContextCache;if(t){const s=new Ai(this,this.atn,e.decisionToDFA,t);this.interpreter=s}}this.interpreter.predictionMode=s}setTrace(t){t?(null!==ea(this,Rs)&&this.removeParseListener(ea(this,Rs)),$s(this,Rs,new Lc(this)),this.addParseListener(ea(this,Rs))):(this.removeParseListener(ea(this,Rs)),$s(this,Rs,null))}createTerminalNode(t,e){return new ma(e)}createErrorNode(t,e){return new Da(e)}},Ea(os,"Parser"),os),_c=(Os=new WeakMap,Is=new WeakMap,us=new WeakMap,Ns=new WeakMap,Ls=new WeakMap,Cs=new WeakMap,_s=new WeakMap,Ps=new WeakMap,Ms=new WeakMap,ds=new WeakMap,Us=new WeakMap,ms=new WeakMap,ls=class extends Cc{constructor(t,e,s,a,i){super(i),(0,js.Z)(this,"rootContext",void 0),(0,js.Z)(this,"parentContextStack",[]),r(this,Os,{writable:!0,value:-1}),r(this,Is,{writable:!0,value:-1}),r(this,us,{writable:!0,value:-1}),r(this,Ns,{writable:!0,value:!1}),r(this,Ls,{writable:!0,value:null}),r(this,Cs,{writable:!0,value:void 0}),r(this,_s,{writable:!0,value:void 0}),r(this,Ps,{writable:!0,value:void 0}),r(this,Ms,{writable:!0,value:void 0}),r(this,ds,{writable:!0,value:void 0}),r(this,Us,{writable:!0,value:new Si}),r(this,ms,{writable:!0,value:void 0}),$s(this,Cs,t),$s(this,_s,a),$s(this,Ps,s.slice(0)),$s(this,Ms,e),$s(this,ms,new Wa);for(const r of a.states)r instanceof Tr&&r.precedenceRuleDecision&&ea(this,ms).set(r.stateNumber);$s(this,ds,a.decisionToState.map(((t,e)=>new ni(t,e)))),this.interpreter=new Ai(this,a,ea(this,ds),ea(this,Us))}reset(){super.reset(),$s(this,Ns,!1),$s(this,Ls,null)}get atn(){return ea(this,_s)}get vocabulary(){return ea(this,Ms)}get ruleNames(){return ea(this,Ps)}get grammarFileName(){return ea(this,Cs)}get atnState(){return ea(this,_s).states[this.state]}parse(t){var e;const s=ea(this,_s).ruleToStartState[t];for(this.rootContext=this.createInterpreterRuleContext(null,Va.INVALID_STATE_NUMBER,t),s.isPrecedenceRule?this.enterRecursionRule(this.rootContext,s.stateNumber,t,0):this.enterRule(this.rootContext,s.stateNumber,t);;){const t=this.atnState;if(t.constructor.stateType===Va.RULE_STOP){if(null!==(e=this.context)&&void 0!==e&&e.isEmpty){if(s.isPrecedenceRule){const t=this.context,e=this.parentContextStack.pop();return this.unrollRecursionContexts(e[0]),t}return this.exitRule(),this.rootContext}this.visitRuleStopState(t)}else try{this.visitState(t)}catch(a){if(!(a instanceof jr))throw a;this.state=ea(this,_s).ruleToStopState[t.ruleIndex].stateNumber,this.errorHandler.reportError(this,a),this.recover(a)}}}addDecisionOverride(t,e,s){$s(this,Os,t),$s(this,Is,e),$s(this,us,s)}get overrideDecisionRoot(){return ea(this,Ls)}enterRecursionRule(t,e,s,a){this.parentContextStack.push([this.context,t.invokingState]),super.enterRecursionRule(t,e,s,a)}visitState(t){let e=1;t instanceof er&&(e=this.visitDecisionState(t));const s=t.transitions[e-1];switch(s.transitionType){case la.EPSILON:if(ea(this,ms).get(t.stateNumber)&&s.target.constructor.stateType!==Va.LOOP_END){const e=this.parentContextStack[this.parentContextStack.length-1],s=this.createInterpreterRuleContext(e[0],e[1],this.context.ruleIndex);this.pushNewRecursionContext(s,ea(this,_s).ruleToStartState[t.ruleIndex].stateNumber,this.context.ruleIndex)}break;case la.ATOM:this.match(s.label.minElement);break;case la.RANGE:case la.SET:case la.NOT_SET:s.matches(this.inputStream.LA(1),ca.MIN_USER_TOKEN_TYPE,65535)||this.recoverInline(),this.matchWildcard();break;case la.WILDCARD:this.matchWildcard();break;case la.RULE:const e=s.target,a=e.ruleIndex,r=this.createInterpreterRuleContext(this.context,t.stateNumber,a);e.isPrecedenceRule?this.enterRecursionRule(r,e.stateNumber,a,s.precedence):this.enterRule(r,s.target.stateNumber,a);break;case la.PREDICATE:const i=s;if(!this.sempred(this.context,i.ruleIndex,i.predIndex))throw new Sc(this);break;case la.ACTION:const c=s;this.action(this.context,c.ruleIndex,c.actionIndex);break;case la.PRECEDENCE:if(!this.precpred(this.context,s.precedence)){const t=s.precedence;throw new Sc(this,"precpred(_ctx, ".concat(t,")"))}break;default:throw new Error("UnsupportedOperationException: Unrecognized ATN transition type.")}this.state=s.target.stateNumber}visitDecisionState(t){let e=1;if(t.transitions.length>1){this.errorHandler.sync(this);const s=t.decision;s!==ea(this,Os)||this.inputStream.index!==ea(this,Is)||ea(this,Ns)?e=this.interpreter.adaptivePredict(this.inputStream,s,this.context):(e=ea(this,us),$s(this,Ns,!0))}return e}createInterpreterRuleContext(t,e,s){return new Nc(s,t,e)}visitRuleStopState(t){if(ea(this,_s).ruleToStartState[t.ruleIndex].isPrecedenceRule){const[t,e]=this.parentContextStack.pop();this.unrollRecursionContexts(t),this.state=e}else this.exitRule();const e=ea(this,_s).states[this.state].transitions[0];this.state=e.followState.stateNumber}recover(t){const e=this.inputStream.index;if(this.errorHandler.recover(this,t),this.inputStream.index===e){var s;const e=t.offendingToken;if(!e)throw new Error("Expected exception to have an offending token");const a=e.tokenSource,r=[a,null!==(s=null===a||void 0===a?void 0:a.inputStream)&&void 0!==s?s:null];if(t instanceof Ac){const s=t.getExpectedTokens();if(!s)throw new Error("Expected the exception to provide expected tokens");let a=ca.INVALID_TYPE;0!==s.length&&(a=s.minElement);const i=this.getTokenFactory().create(r,a,e.text,ca.DEFAULT_CHANNEL,-1,-1,e.line,e.column);this.context.addErrorNode(this.createErrorNode(this.context,i))}else{const t=this.getTokenFactory().create(r,ca.INVALID_TYPE,e.text,ca.DEFAULT_CHANNEL,-1,-1,e.line,e.column);this.context.addErrorNode(this.createErrorNode(this.context,t))}}}recoverInline(){return this.errorHandler.recoverInline(this)}},Ea(ls,"ParserInterpreter"),ls),Pc=(Ds=class extends Map{map(t,e){let s=this.get(t);s||(s=new Array,this.set(t,s)),s.push(e)}getPairs(){const t=new Array;for(const s of this.keys()){var e;const a=null!==(e=this.get(s))&&void 0!==e?e:[];for(const e of a)t.push([s,e])}return t}},Ea(Ds,"MultiMap"),Ds),Mc=(Ea(ps=class{constructor(t,e,s){(0,js.Z)(this,"label",void 0),(0,js.Z)(this,"ruleName",void 0),(0,js.Z)(this,"bypassTokenType",void 0),this.ruleName=t,this.bypassTokenType=e,this.label=s}get channel(){return ca.DEFAULT_CHANNEL}get text(){return null!==this.label?"<"+this.label+":"+this.ruleName+">":"<"+this.ruleName+">"}get type(){return this.bypassTokenType}get line(){return 0}get column(){return-1}get tokenIndex(){return-1}get start(){return-1}get stop(){return-1}get tokenSource(){return null}get inputStream(){return null}toString(){return this.ruleName+":"+this.bypassTokenType}},"RuleTagToken"),ps),dc=(Ea(gs=class extends Tc{constructor(){let t,e;if(1===arguments.length?e=arguments.length<=0?void 0:arguments[0]:(t=arguments.length<=0?void 0:arguments[0],e=arguments.length<=1?void 0:arguments[1]),super(),(0,js.Z)(this,"tag",void 0),(0,js.Z)(this,"label",void 0),!e)throw new Error("tag cannot be null or empty");this.label=t,this.tag=e}toString(){return null!==this.label?this.label+":"+this.tag:this.tag}},"TagChunk"),gs),Uc=(Ea(xs=class extends Tc{constructor(t){super(),(0,js.Z)(this,"text",void 0),this.text=t}toString(){return"'"+this.text+"'"}},"TextChunk"),xs),mc=(Ea(ks=class extends Zr{constructor(t,e,s){super({type:e,source:Zr.EMPTY_SOURCE}),(0,js.Z)(this,"tokenName",void 0),(0,js.Z)(this,"label",void 0),this.tokenName=t,this.label=s}get text(){return null!==this.label?"<"+this.label+":"+this.tokenName+">":"<"+this.tokenName+">"}toString(){return this.tokenName+":"+this.type}},"TokenTagToken"),ks),Dc=(Hs=class t{constructor(t,e){(0,js.Z)(this,"start","<"),(0,js.Z)(this,"stop",">"),(0,js.Z)(this,"escape","\\"),(0,js.Z)(this,"lexer",void 0),(0,js.Z)(this,"parser",void 0),this.lexer=t,this.parser=e}setDelimiters(t,e,s){if(null===t||0===t.length)throw new Error("start cannot be null or empty");if(null===e||0===e.length)throw new Error("stop cannot be null or empty");this.start=t,this.stop=e,this.escape=s}matches(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];switch(e.length){case 2:{const[t,s]=e,a=new Pc;return null===this.matchImpl(t,s.getPatternTree(),a)}case 3:{const[t,s,a]=e,r=this.compile(s,a);return this.matches(t,r)}default:throw new Error("Invalid number of arguments")}}match(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];switch(e.length){case 2:{const[t,s]=e,a=new Pc,r=this.matchImpl(t,s.getPatternTree(),a);return new oc(t,s,a,r)}case 3:{const[t,s,a]=e,r=this.compile(s,a);return this.match(t,r)}default:throw new Error("Invalid number of arguments")}}compile(e,s){const a=this.tokenize(e),r=new uc(a),i=new $i(r),c=new _c(this.parser.grammarFileName,this.parser.vocabulary,this.parser.ruleNames,this.parser.getATNWithBypassAlts(),i);let n=null;try{c.errorHandler=new Ic,n=c.parse(s)}catch(h){if(h instanceof ti){throw h.cause}throw h instanceof jr?h:h instanceof Error?new t.CannotInvokeStartRule(h):h}if(i.LA(1)!==ca.EOF)throw new t.StartRuleDoesNotConsumeFullPattern;return new Rc(this,e,s,n)}getLexer(){return this.lexer}getParser(){return this.parser}tokenize(t){const e=this.split(t),s=new Array;for(const a of e)if(a instanceof dc){const e=a,r=e.tag[0];if(r===r.toUpperCase()){const a=this.parser.getTokenType(e.tag);if(a===ca.INVALID_TYPE)throw new Error("Unknown token "+e.tag+" in pattern: "+t);const r=new mc(e.tag,a,e.label);s.push(r)}else{if(r!==r.toLowerCase())throw new Error("invalid tag: "+e.tag+" in pattern: "+t);{const a=this.parser.getRuleIndex(e.tag);if(-1===a)throw new Error("Unknown rule "+e.tag+" in pattern: "+t);const r=this.parser.getATNWithBypassAlts().ruleToTokenType[a];s.push(new Mc(e.tag,r,e.label))}}}else{const t=a,e=Oi.fromString(t.text);this.lexer.inputStream=e;let r=this.lexer.nextToken();for(;r.type!==ca.EOF;)s.push(r),r=this.lexer.nextToken()}return s}split(t){let e=0;const s=t.length,a=new Array,r=new Array,i=new Array;for(;e<s;)e===t.indexOf(this.escape+this.start,e)?e+=this.escape.length+this.start.length:e===t.indexOf(this.escape+this.stop,e)?e+=this.escape.length+this.stop.length:e===t.indexOf(this.start,e)?(r.push(e),e+=this.start.length):e===t.indexOf(this.stop,e)?(i.push(e),e+=this.stop.length):e++;if(r.length>i.length)throw new Error("unterminated tag in pattern: "+t);if(r.length<i.length)throw new Error("missing start tag in pattern: "+t);const c=r.length;for(let n=0;n<c;n++)if(r[n]>=i[n])throw new Error("tag delimiters out of order in pattern: "+t);if(0===c){const e=t.substring(0,s);a.push(new Uc(e))}if(c>0&&r[0]>0){const e=t.substring(0,r[0]);a.push(new Uc(e))}for(let n=0;n<c;n++){const e=t.substring(r[n]+this.start.length,i[n]);let s,h=e;const E=e.indexOf(":");if(E>=0&&(s=e.substring(0,E),h=e.substring(E+1,e.length)),a.push(new dc(s,h)),n+1<c){const e=t.substring(i[n]+this.stop.length,r[n+1]);a.push(new Uc(e))}}if(c>0){const e=i[c-1]+this.stop.length;if(e<s){const r=t.substring(e,s);a.push(new Uc(r))}}for(let n=0;n<a.length;n++){const t=a[n];if(t instanceof Uc){const e=t,s=e.text.replace(this.escape,"");s.length<e.text.length&&(a[n]=new Uc(s))}}return a}matchImpl(t,e,s){if(t instanceof ma&&e instanceof ma){const a=t,r=e;let i;if(a.getSymbol().type===r.getSymbol().type)if(r.getSymbol()instanceof mc){const e=r.getSymbol();s.map(e.tokenName,t),void 0!==e.label&&s.map(e.label,t)}else a.getText()===r.getText()||i||(i=a);else i||(i=a);return i}if(t instanceof ga&&e instanceof ga){let a;const r=this.getRuleTagToken(e);if(r)return t.ruleIndex===e.ruleIndex?(s.map(r.ruleName,t),r.label&&s.map(r.label,t)):a||(a=t),a;if(t.getChildCount()!==e.getChildCount())return a||(a=t),a;const i=t.getChildCount();for(let c=0;c<i;c++){const a=this.matchImpl(t.getChild(c),e.getChild(c),s);if(a)return a}return a}return t}getRuleTagToken(t){if(t instanceof ga&&1===t.getChildCount()&&t.getChild(0)instanceof ma){const e=t.getChild(0);if(e.getSymbol()instanceof Mc)return e.getSymbol()}}},Ea(Hs,"ParseTreePatternMatcher"),(0,js.Z)(Hs,"CannotInvokeStartRule",(Gs=class extends Error{constructor(t){super(),this.cause=t}},Ea(Gs,"CannotInvokeStartRule"),Gs)),(0,js.Z)(Hs,"StartRuleDoesNotConsumeFullPattern",(Fs=class extends Error{},Ea(Fs,"StartRuleDoesNotConsumeFullPattern"),Fs)),Hs),pc=(vs=class extends Xr{constructor(t){super(),(0,js.Z)(this,"exactOnly",void 0),(0,js.Z)(this,"reportAmbiguity",((t,e,s,a,r,i,c)=>{var n;if(this.exactOnly&&!r)return;const h=this.getDecisionDescription(t,e),E=this.getConflictingAlts(i,c),T=null===(n=t.tokenStream)||void 0===n?void 0:n.getTextFromInterval(oa.of(s,a)),o="reportAmbiguity d=".concat(h,": ambigAlts=").concat(E,", input='").concat(T,"'");t.notifyErrorListeners(o,null,null)})),(0,js.Z)(this,"reportAttemptingFullContext",((t,e,s,a,r,i)=>{var c;const n=this.getDecisionDescription(t,e),h=null===(c=t.tokenStream)||void 0===c?void 0:c.getTextFromInterval(oa.of(s,a)),E="reportAttemptingFullContext d=".concat(n,", input='").concat(h,"'");t.notifyErrorListeners(E,null,null)})),(0,js.Z)(this,"reportContextSensitivity",((t,e,s,a,r,i)=>{var c;const n=this.getDecisionDescription(t,e),h=null===(c=t.tokenStream)||void 0===c?void 0:c.getTextFromInterval(oa.of(s,a)),E="reportContextSensitivity d=".concat(n,", input='").concat(h,"'");t.notifyErrorListeners(E,null,null)})),(0,js.Z)(this,"getDecisionDescription",((t,e)=>{const s=e.decision,a=e.atnStartState.ruleIndex,r=t.ruleNames;if(a<0||a>=r.length)return s.toString();const i=r[a];return 0===i.length?s.toString():"".concat(s," (").concat(i,")")})),(0,js.Z)(this,"getConflictingAlts",((t,e)=>{if(t)return t;const s=new Wa;for(let a=0;a<e.configs.length;a++)s.set(e.configs[a].alt);return s})),this.exactOnly=null===t||void 0===t||t}},Ea(vs,"DiagnosticErrorListener"),ys=new WeakMap,fs=new WeakMap,Ys=new WeakMap,ws=new WeakMap,bs=new WeakMap,Ws=new WeakMap,Vs=new WeakMap,Xs=new WeakMap,Bs=class extends $r{constructor(t,e,s,a,i,c,n){if(super(n),r(this,ys,{writable:!0,value:void 0}),r(this,fs,{writable:!0,value:void 0}),r(this,Ys,{writable:!0,value:void 0}),r(this,ws,{writable:!0,value:void 0}),r(this,bs,{writable:!0,value:void 0}),r(this,Ws,{writable:!0,value:void 0}),r(this,Vs,{writable:!0,value:void 0}),r(this,Xs,{writable:!0,value:new Si}),c.grammarType!==ja.LEXER)throw new Error("IllegalArgumentException: The ATN must be a lexer ATN.");$s(this,ys,t),$s(this,fs,c),$s(this,Ys,s.slice(0)),$s(this,ws,a.slice(0)),$s(this,bs,i.slice(0)),$s(this,Ws,e),$s(this,Vs,c.decisionToState.map(((t,e)=>new ni(t,e)))),this.interpreter=new hi(this,c,ea(this,Vs),ea(this,Xs))}get atn(){return ea(this,fs)}get grammarFileName(){return ea(this,ys)}get ruleNames(){return ea(this,Ys)}get channelNames(){return ea(this,ws)}get modeNames(){return ea(this,bs)}get vocabulary(){return ea(this,Ws)}},Ea(Bs,"LexerInterpreter"),Ks=class t{constructor(t){(0,js.Z)(this,"tokens",void 0),(0,js.Z)(this,"programs",new Map),(0,js.Z)(this,"lastRewriteTokenIndexes",void 0),this.tokens=t}getTokenStream(){return this.tokens}insertAfter(e,s){let a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.DEFAULT_PROGRAM_NAME;a="number"===typeof e?e:e.tokenIndex;const i=this.getProgram(r),c=new xc(this.tokens,a,i.length,s);i.push(c)}insertBefore(e,s){let a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.DEFAULT_PROGRAM_NAME;a="number"===typeof e?e:e.tokenIndex;const i=this.getProgram(r),c=new gc(this.tokens,a,i.length,s);i.push(c)}replaceSingle(e,s){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.DEFAULT_PROGRAM_NAME;this.replace(e,e,s,a)}replace(e,s,a){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.DEFAULT_PROGRAM_NAME;if("number"!==typeof e&&(e=e.tokenIndex),"number"!==typeof s&&(s=s.tokenIndex),e>s||e<0||s<0||s>=this.tokens.size)throw new RangeError("replace: range invalid: ".concat(e,"..").concat(s,"(size=").concat(this.tokens.size,")"));const i=this.getProgram(r),c=new kc(this.tokens,e,s,i.length,a);i.push(c)}delete(e,s){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.DEFAULT_PROGRAM_NAME;null==s&&(s=e),this.replace(e,s,null,a)}getProgram(t){let e=this.programs.get(t);return null==e&&(e=this.initializeProgram(t)),e}initializeProgram(t){const e=[];return this.programs.set(t,e),e}getText(e){let s,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.DEFAULT_PROGRAM_NAME;s=e instanceof oa?e:new oa(0,this.tokens.size-1),"string"===typeof e&&(a=e);const r=this.programs.get(a);let i=s.start,c=s.stop;if(c>this.tokens.size-1&&(c=this.tokens.size-1),i<0&&(i=0),null==r||0===r.length)return this.tokens.getTextFromInterval(new oa(i,c));const n=[],h=this.reduceToSingleOperationPerIndex(r);let E=i;for(;E<=c&&E<this.tokens.size;){const t=h.get(E);h.delete(E);const e=this.tokens.get(E);null==t?(e.type!==ca.EOF&&n.push(String(e.text)),E++):E=t.execute(n)}if(c===this.tokens.size-1)for(const t of h.values())t&&t.index>=this.tokens.size-1&&n.push(String(t.text));return n.join("")}reduceToSingleOperationPerIndex(t){for(let s=0;s<t.length;s++){const e=t[s];if(null==e)continue;if(!(e instanceof kc))continue;const a=e,r=this.getKindOfOps(t,gc,s);for(const s of r)s.index===a.index?(t[s.instructionIndex]=null,a.text=String(s.text)+(null!=a.text?a.text.toString():"")):s.index>a.index&&s.index<=a.lastIndex&&(t[s.instructionIndex]=null);const i=this.getKindOfOps(t,kc,s);for(const s of i){if(s.index>=a.index&&s.lastIndex<=a.lastIndex){t[s.instructionIndex]=null;continue}const e=s.lastIndex<a.index||s.index>a.lastIndex;if(null!=s.text||null!=a.text||e){if(!e)throw new Error("replace op boundaries of ".concat(a," overlap with previous ").concat(s))}else t[s.instructionIndex]=null,a.index=Math.min(s.index,a.index),a.lastIndex=Math.max(s.lastIndex,a.lastIndex)}}for(let s=0;s<t.length;s++){const e=t[s];if(null==e)continue;if(!(e instanceof gc))continue;const a=e,r=this.getKindOfOps(t,gc,s);for(const s of r)s.index===a.index&&(s instanceof xc?(a.text=this.catOpText(s.text,a.text),t[s.instructionIndex]=null):s instanceof gc&&(a.text=this.catOpText(a.text,s.text),t[s.instructionIndex]=null));const i=this.getKindOfOps(t,kc,s);for(const c of i)if(a.index!==c.index){if(a.index>=c.index&&a.index<=c.lastIndex)throw new Error("insert op ".concat(a," within boundaries of previous ").concat(c))}else c.text=this.catOpText(a.text,c.text),t[s]=null}const e=new Map;for(const s of t)if(null!=s){if(null!=e.get(s.index))throw new Error("should only be one op per index");e.set(s.index,s)}return e}catOpText(t,e){let s="",a="";return null!=t&&(s=t.toString()),null!=e&&(a=e.toString()),s+a}getKindOfOps(t,e,s){return t.slice(0,s).filter((t=>t&&t instanceof e))}},Ea(Ks,"TokenStreamRewriter"),(0,js.Z)(Ks,"DEFAULT_PROGRAM_NAME","default"),(0,js.Z)(Ks,"PROGRAM_INIT_SIZE",100),(0,js.Z)(Ks,"MIN_TOKEN_INDEX",0),Ea(Qs=class{constructor(t,e,s,a){(0,js.Z)(this,"instructionIndex",void 0),(0,js.Z)(this,"index",void 0),(0,js.Z)(this,"text",void 0),(0,js.Z)(this,"tokens",void 0),this.tokens=t,this.instructionIndex=s,this.index=e,this.text=void 0===a?"":a}execute(t){return this.index}toString(){return"<RewriteOperation@"+this.tokens.get(this.index)+':"'+this.text+'">'}},"RewriteOperation"),Qs),gc=(Ea(Js=class extends pc{constructor(t,e,s,a){super(t,e,s,a)}execute(t){return this.text&&t.push(this.text.toString()),this.tokens.get(this.index).type!==ca.EOF&&t.push(String(this.tokens.get(this.index).text)),this.index+1}toString(){return"<InsertBeforeOp@"+this.tokens.get(this.index)+':"'+this.text+'">'}},"InsertBeforeOp"),Js),xc=(Ea(Zs=class extends gc{constructor(t,e,s,a){super(t,e+1,s,a)}toString(){return"<InsertAfterOp@"+this.tokens.get(this.index)+':"'+this.text+'">'}},"InsertAfterOp"),Zs),kc=(qs=class extends pc{constructor(t,e,s,a,r){super(t,e,a,r),(0,js.Z)(this,"lastIndex",void 0),this.lastIndex=s}execute(t){return this.text&&t.push(this.text.toString()),this.lastIndex+1}toString(){return null==this.text?"<DeleteOp@"+this.tokens.get(this.index)+".."+this.tokens.get(this.lastIndex)+">":"<ReplaceOp@"+this.tokens.get(this.index)+".."+this.tokens.get(this.lastIndex)+':"'+this.text+'">'}},Ea(qs,"ReplaceOp"),qs),Hc=Object.defineProperty,Gc=(t,e)=>Hc(t,"name",{value:e,configurable:!0}),Fc=(Ci=new WeakMap,Gc(Li=class{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";(0,js.Z)(this,"name",void 0),(0,js.Z)(this,"context",void 0),(0,js.Z)(this,"modifiers",new Set),(0,js.Z)(this,"visibility",0),r(this,Ci,{writable:!0,value:void 0}),this.name=t}get parent(){return ea(this,Ci)}get firstSibling(){var t;if(ea(this,Ci))return null===(t=ea(this,Ci))||void 0===t?void 0:t.firstChild}get previousSibling(){if(ea(this,Ci))return ea(this,Ci)?ea(this,Ci).previousSiblingOf(this):this}get nextSibling(){var t;return null===(t=ea(this,Ci))||void 0===t?void 0:t.nextSiblingOf(this)}get lastSibling(){var t;return null===(t=ea(this,Ci))||void 0===t?void 0:t.lastChild}get next(){var t;return null===(t=ea(this,Ci))||void 0===t?void 0:t.nextOf(this)}get root(){let t=ea(this,Ci);for(;t;){if(!t.parent||this.isSymbolTable(t.parent))return t;t=t.parent}return t}get symbolTable(){if(this.isSymbolTable(this))return this;let t=ea(this,Ci);for(;t;){if(this.isSymbolTable(t))return t;t=t.parent}}get symbolPath(){const t=[];let e=this;for(;e&&(t.push(e),e.parent);)e=e.parent;return t}setParent(t){$s(this,Ci,t)}removeFromParent(){var t;null===(t=ea(this,Ci))||void 0===t||t.removeSymbol(this),$s(this,Ci,void 0)}async resolve(t){var e;let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return null===(e=ea(this,Ci))||void 0===e?void 0:e.resolve(t,s)}resolveSync(t){var e;let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return null===(e=ea(this,Ci))||void 0===e?void 0:e.resolveSync(t,s)}getParentOfType(t){let e=ea(this,Ci);for(;e;){if(e instanceof t)return e;e=e.parent}}qualifiedName(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:".",e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!s&&0===this.name.length)return"";let a=0===this.name.length?"<anonymous>":this.name,r=ea(this,Ci);for(;r&&((s||r.name.length>0)&&(a=(0===r.name.length?"<anonymous>":r.name)+t+a),e&&r.parent);)r=r.parent;return a}isSymbolTable(t){return void 0!==t.info}},"BaseSymbol"),Li),vc=(Gc(_i=class extends Fc{constructor(t,e,s){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;super(t),(0,js.Z)(this,"elementType",void 0),(0,js.Z)(this,"size",void 0),(0,js.Z)(this,"referenceKind",void 0),this.referenceKind=e,this.elementType=s,this.size=a}get baseTypes(){return[]}get kind(){return 9}get reference(){return this.referenceKind}},"ArrayType"),Pi=class extends Error{},Gc(Pi,"DuplicateSymbolError"),Pi),Bc=(di=new WeakMap,Ui=new WeakMap,Gc(Mi=class t extends Fc{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:""),r(this,di,{writable:!0,value:[]}),r(this,Ui,{writable:!0,value:new Map})}get directScopes(){return this.getSymbolsOfType(t)}get children(){return ea(this,di)}get firstChild(){if(ea(this,di).length>0)return ea(this,di)[0]}get lastChild(){if(ea(this,di).length>0)return ea(this,di)[ea(this,di).length-1]}clear(){$s(this,di,[]),ea(this,Ui).clear()}addSymbol(t){t.removeFromParent();const e=this.symbolTable,s=ea(this,Ui).get(t.name);if(e&&e.options.allowDuplicateSymbols)ea(this,Ui).set(t.name,void 0===s?1:s+1);else{var a;if(void 0!==s)throw new vc("Attempt to add duplicate symbol '"+(null!==(a=t.name)&&void 0!==a?a:"<anonymous>")+"'");ea(this,Ui).set(t.name,1);var r;if(ea(this,di).indexOf(t)>-1)throw new vc("Attempt to add duplicate symbol '"+(null!==(r=t.name)&&void 0!==r?r:"<anonymous>")+"'")}ea(this,di).push(t),t.setParent(this)}removeSymbol(t){const e=ea(this,di).indexOf(t);if(e>-1){ea(this,di).splice(e,1),t.setParent(void 0);const s=ea(this,Ui).get(t.name);void 0!==s&&(1===s?ea(this,Ui).delete(t.name):ea(this,Ui).set(t.name,s-1))}}async getNestedSymbolsOfType(e){const s=[],a=[];ea(this,di).forEach((r=>{r instanceof e&&s.push(r),r instanceof t&&a.push(r.getNestedSymbolsOfType(e))}));return(await Promise.all(a)).forEach((t=>{s.push(...t)})),s}getNestedSymbolsOfTypeSync(e){const s=[];return ea(this,di).forEach((a=>{a instanceof e&&s.push(a),a instanceof t&&s.push(...a.getNestedSymbolsOfTypeSync(e))})),s}async getAllNestedSymbols(e){const s=[],a=[];ea(this,di).forEach((r=>{e&&r.name!==e||s.push(r),r instanceof t&&a.push(r.getAllNestedSymbols(e))}));return(await Promise.all(a)).forEach((t=>{s.push(...t)})),s}getAllNestedSymbolsSync(e){const s=[];return ea(this,di).forEach((a=>{e&&a.name!==e||s.push(a),a instanceof t&&s.push(...a.getAllNestedSymbolsSync(e))})),s}getSymbolsOfType(t){return new Promise((e=>{const s=[];ea(this,di).forEach((e=>{e instanceof t&&s.push(e)})),e(s)}))}async getAllSymbols(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const s=[];for(const a of ea(this,di))if(a instanceof t&&s.push(a),this.isNamespace(a)){const e=await a.getAllSymbols(t,!0);s.push(...e)}if(!e&&this.parent){const e=await this.getAllSymbols(t,!0);s.push(...e)}return s}getAllSymbolsSync(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const s=[];for(const a of ea(this,di))if(a instanceof t&&s.push(a),this.isNamespace(a)){const e=a.getAllSymbolsSync(t,!0);s.push(...e)}if(!e&&this.parent){const e=this.getAllSymbolsSync(t,!0);s.push(...e)}return s}async resolve(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new Promise((s=>{for(const e of ea(this,di))if(e.name===t)return void s(e);e||!this.parent?s(void 0):s(this.parent.resolve(t,!1))}))}resolveSync(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];for(const s of ea(this,di))if(s.name===t)return s;if(!e&&this.parent)return this.parent.resolveSync(t,!1)}symbolFromPath(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:".";const a=e.split(s);let r=0;a[0]!==this.name&&0!==a[0].length||++r;let i=this;for(;r<a.length;){if(!(i instanceof t))return;const e=i.children.find((t=>t.name===a[r]));if(!e)return;i=e,++r}return i}indexOfChild(t){return ea(this,di).findIndex((e=>e===t))}nextSiblingOf(t){const e=this.indexOfChild(t);if(!(-1===e||e>=ea(this,di).length-1))return ea(this,di)[e+1]}previousSiblingOf(t){const e=this.indexOfChild(t);if(!(e<1))return ea(this,di)[e-1]}nextOf(e){if(!e.parent)return;if(e.parent!==this)return e.parent.nextOf(e);if(e instanceof t&&e.children.length>0)return e.children[0];const s=this.nextSiblingOf(e);return s||this.parent.nextOf(this)}isNamespace(t){return void 0!==t.inline&&void 0!==t.attributes}},"ScopedSymbol"),Mi),yc=(Gc(mi=class extends Bc{},"BlockSymbol"),Gc(Di=class extends Fc{constructor(t,e){super(t),(0,js.Z)(this,"type",void 0),this.type=e}},"TypedSymbol"),Di),fc=(Gc(pi=class extends yc{constructor(t,e,s){super(t,s),(0,js.Z)(this,"value",void 0),this.value=e}},"VariableSymbol"),pi),Yc=(Gc(gi=class extends fc{constructor(){super(...arguments),(0,js.Z)(this,"setter",void 0),(0,js.Z)(this,"getter",void 0)}},"FieldSymbol"),gi),wc=(Gc(xi=class extends fc{},"ParameterSymbol"),xi),bc=(Gc(ki=class extends Bc{constructor(t,e){super(t),(0,js.Z)(this,"returnType",void 0),this.returnType=e}getVariables(){return this.getSymbolsOfType(fc)}getParameters(){return this.getSymbolsOfType(wc)}},"RoutineSymbol"),ki),Wc=(Gc(Hi=class extends bc{constructor(){super(...arguments),(0,js.Z)(this,"methodFlags",0)}},"MethodSymbol"),Hi),Vc=(Gc(Gi=class extends Bc{constructor(t,e,s){super(t),(0,js.Z)(this,"isStruct",!1),(0,js.Z)(this,"reference",0),(0,js.Z)(this,"extends",void 0),(0,js.Z)(this,"implements",void 0),this.extends=e,this.implements=s}get baseTypes(){return this.extends}get kind(){return 7}getMethods(){return this.getSymbolsOfType(Wc)}getFields(){return this.getSymbolsOfType(Yc)}},"ClassSymbol"),Gc(Fi=class{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;(0,js.Z)(this,"name",void 0),(0,js.Z)(this,"typeKind",void 0),(0,js.Z)(this,"referenceKind",void 0),this.name=t,this.typeKind=e,this.referenceKind=s}get baseTypes(){return[]}get kind(){return this.typeKind}get reference(){return this.referenceKind}},"FundamentalType"),(0,js.Z)(Fi,"integerType",new Fi("int",1,3)),(0,js.Z)(Fi,"floatType",new Fi("float",2,3)),(0,js.Z)(Fi,"stringType",new Fi("string",4,3)),(0,js.Z)(Fi,"boolType",new Fi("bool",6,3)),Gc(vi=class extends Bc{constructor(t,e){super(t),(0,js.Z)(this,"reference",0),(0,js.Z)(this,"extends",void 0),this.extends=e}get baseTypes(){return this.extends}get kind(){return 8}getMethods(){return this.getSymbolsOfType(Wc)}getFields(){return this.getSymbolsOfType(Yc)}},"InterfaceSymbol"),Gc(Bi=class extends yc{constructor(t,e,s){super(t,s),(0,js.Z)(this,"value",void 0),this.value=e}},"LiteralSymbol"),Gc(yi=class extends Bc{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];super(t),(0,js.Z)(this,"inline",void 0),(0,js.Z)(this,"attributes",void 0),this.inline=e,this.attributes=s}},"NamespaceSymbol"),yi),Xc=(Gc(fi=class extends Fc{constructor(t,e){super(t),(0,js.Z)(this,"targetType",void 0),this.targetType=e}get baseTypes(){return[this.targetType]}get kind(){return 12}get reference(){return 0}},"TypeAlias"),Gc(((t,e)=>{if(!t||!e)return[];let s;for(s=0;s<Math.min(t.length,e.length)&&t[s]===e[s];s++);return t.slice(0,s)}),"longestCommonPrefix")),Kc=(Gc(Yi=class{constructor(){(0,js.Z)(this,"tokens",new Map),(0,js.Z)(this,"rules",new Map)}},"CandidatesCollection"),Yi),Qc=(Gc(wi=class{constructor(){(0,js.Z)(this,"intervals",void 0),(0,js.Z)(this,"path",[]),(0,js.Z)(this,"following",[])}},"FollowSetWithPath"),wi),Jc=(bi=class t{constructor(t){(0,js.Z)(this,"showResult",!1),(0,js.Z)(this,"showDebugOutput",!1),(0,js.Z)(this,"debugOutputWithTransitions",!1),(0,js.Z)(this,"showRuleStack",!1),(0,js.Z)(this,"ignoredTokens",void 0),(0,js.Z)(this,"preferredRules",void 0),(0,js.Z)(this,"translateRulesTopDown",!1),(0,js.Z)(this,"parser",void 0),(0,js.Z)(this,"atn",void 0),(0,js.Z)(this,"vocabulary",void 0),(0,js.Z)(this,"ruleNames",void 0),(0,js.Z)(this,"tokens",void 0),(0,js.Z)(this,"precedenceStack",void 0),(0,js.Z)(this,"tokenStartIndex",0),(0,js.Z)(this,"statesProcessed",0),(0,js.Z)(this,"shortcutMap",new Map),(0,js.Z)(this,"candidates",new Kc),this.parser=t,this.atn=t.atn,this.vocabulary=t.vocabulary,this.ruleNames=t.ruleNames,this.ignoredTokens=new Set,this.preferredRules=new Set}collectCandidates(t,e){this.shortcutMap.clear(),this.candidates.rules.clear(),this.candidates.tokens.clear(),this.statesProcessed=0,this.precedenceStack=[],this.tokenStartIndex=null!==e&&void 0!==e&&e.start?e.start.tokenIndex:0;const s=this.parser.tokenStream;this.tokens=[];let a=this.tokenStartIndex;for(;;){const e=s.get(a++);if(!e)break;if(e.channel===ca.DEFAULT_CHANNEL&&(this.tokens.push(e),e.tokenIndex>=t||e.type===ca.EOF))break;if(e.type===ca.EOF)break}const r=e?e.ruleIndex:0;if(this.processRule(this.atn.ruleToStartState[r],0,[],0,0),this.showResult){console.log("States processed: ".concat(this.statesProcessed)),console.log("\n\nCollected rules:\n");for(const e of this.candidates.rules){let t="";for(const s of e[1].ruleList)t+=this.ruleNames[s]+" ";console.log(this.ruleNames[e[0]]+", path: ",t)}const t=new Set;for(const e of this.candidates.tokens){var i;let s=null!==(i=this.vocabulary.getDisplayName(e[0]))&&void 0!==i?i:"";for(const t of e[1])s+=" "+this.vocabulary.getDisplayName(t);t.add(s)}console.log("\n\nCollected tokens:\n");for(const e of t)console.log(e);console.log("\n\n")}return this.candidates}checkPredicate(t){return t.getPredicate().evaluate(this.parser,ga.empty)}translateStackToRuleIndex(t){if(0===this.preferredRules.size)return!1;if(this.translateRulesTopDown){for(let e=t.length-1;e>=0;e--)if(this.translateToRuleIndex(e,t))return!0}else for(let e=0;e<t.length;e++)if(this.translateToRuleIndex(e,t))return!0;return!1}translateToRuleIndex(t,e){const{ruleIndex:s,startTokenIndex:a}=e[t];if(this.preferredRules.has(s)){const r=e.slice(0,t).map((t=>{let{ruleIndex:e}=t;return e}));let i=!0;for(const t of this.candidates.rules)if(t[0]===s&&t[1].ruleList.length===r.length&&r.every(((e,s)=>e===t[1].ruleList[s]))){i=!1;break}return i&&(this.candidates.rules.set(s,{startTokenIndex:a,ruleList:r}),this.showDebugOutput&&console.log("=====> collected: ",this.ruleNames[s])),!0}return!1}getFollowingTokens(t){const e=[],s=[t.target];for(;s.length>0;){const t=s.pop();t&&t.transitions.forEach((t=>{if(t.transitionType===la.ATOM)if(t.isEpsilon)s.push(t.target);else{const a=t.label.toArray();1!==a.length||this.ignoredTokens.has(a[0])||(e.push(a[0]),s.push(t.target))}}))}return e}determineFollowSets(t,e){const s=[],a=this.collectFollowSets(t,e,s,[],[]),r=new Sa;for(const i of s)r.addSet(i.intervals);return{sets:s,isExhaustive:a,combined:r}}collectFollowSets(t,e,s,a,r){if(a.find((e=>e===t)))return!0;if(a.push(t),t===e||t.constructor.stateType===Va.RULE_STOP)return a.pop(),!1;let i=!0;for(const n of t.transitions)if(n.transitionType===la.RULE){const t=n;if(-1!==r.indexOf(t.target.ruleIndex))continue;r.push(t.target.ruleIndex);const c=this.collectFollowSets(n.target,e,s,a,r);if(r.pop(),!c){const c=this.collectFollowSets(t.followState,e,s,a,r);i&&(i=c)}}else if(n.transitionType===la.PREDICATE){if(this.checkPredicate(n)){const t=this.collectFollowSets(n.target,e,s,a,r);i&&(i=t)}}else if(n.isEpsilon){const t=this.collectFollowSets(n.target,e,s,a,r);i&&(i=t)}else if(n.transitionType===la.WILDCARD){const t=new Qc;t.intervals=Sa.of(ca.MIN_USER_TOKEN_TYPE,this.atn.maxTokenType),t.path=r.slice(),s.push(t)}else{let t=n.label;if(t&&t.length>0){var c;n.transitionType===la.NOT_SET&&(t=t.complement(ca.MIN_USER_TOKEN_TYPE,this.atn.maxTokenType));const e=new Qc;e.intervals=null!==(c=t)&&void 0!==c?c:new Sa,e.path=r.slice(),e.following=this.getFollowingTokens(n),s.push(e)}}return a.pop(),i}processRule(e,s,a,r,i){let c=this.shortcutMap.get(e.ruleIndex);if(c){if(c.has(s))return this.showDebugOutput&&console.log("=====> shortcut"),c.get(s)}else c=new Map,this.shortcutMap.set(e.ruleIndex,c);const n=new Set;let h=t.followSetsByATN.get(this.parser.constructor.name);h||(h=new Map,t.followSetsByATN.set(this.parser.constructor.name,h));let E=h.get(e.stateNumber);if(!E){const t=this.atn.ruleToStopState[e.ruleIndex];E=this.determineFollowSets(e,t),h.set(e.stateNumber,E)}const T=this.tokens[s].tokenIndex;if(a.push({startTokenIndex:T,ruleIndex:e.ruleIndex}),s>=this.tokens.length-1){if(this.preferredRules.has(e.ruleIndex))this.translateStackToRuleIndex(a);else for(const t of E.sets){const e=a.slice(),s=t.path.map((t=>({startTokenIndex:T,ruleIndex:t})));if(e.push(...s),!this.translateStackToRuleIndex(e))for(const a of t.intervals.toArray())this.ignoredTokens.has(a)||(this.showDebugOutput&&console.log("=====> collected: ",this.vocabulary.getDisplayName(a)),this.candidates.tokens.has(a)?this.candidates.tokens.get(a)!==t.following&&this.candidates.tokens.set(a,[]):this.candidates.tokens.set(a,t.following))}return E.isExhaustive||n.add(s),a.pop(),n}{const t=this.tokens[s].type;if(E.isExhaustive&&!E.combined.contains(t))return a.pop(),n}e.isPrecedenceRule&&this.precedenceStack.push(r);const o=[];let R;for(o.push({state:e,tokenListIndex:s});o.length>0;){R=o.pop(),++this.statesProcessed;const t=this.tokens[R.tokenListIndex].type,e=R.tokenListIndex>=this.tokens.length-1;if(this.showDebugOutput&&(this.printDescription(i,R.state,this.generateBaseDescription(R.state),R.tokenListIndex),this.showRuleStack&&this.printRuleState(a)),R.state.constructor.stateType===Va.RULE_STOP){n.add(R.tokenListIndex);continue}const s=R.state.transitions;for(const r of s)switch(r.transitionType){case la.RULE:{const t=r,e=this.processRule(r.target,R.tokenListIndex,a,t.precedence,i+1);for(const s of e)o.push({state:r.followState,tokenListIndex:s});break}case la.PREDICATE:this.checkPredicate(r)&&o.push({state:r.target,tokenListIndex:R.tokenListIndex});break;case la.PRECEDENCE:r.precedence>=this.precedenceStack[this.precedenceStack.length-1]&&o.push({state:r.target,tokenListIndex:R.tokenListIndex});break;case la.WILDCARD:if(e){if(!this.translateStackToRuleIndex(a))for(const t of Sa.of(ca.MIN_USER_TOKEN_TYPE,this.atn.maxTokenType).toArray())this.ignoredTokens.has(t)||this.candidates.tokens.set(t,[])}else o.push({state:r.target,tokenListIndex:R.tokenListIndex+1});break;default:{if(r.isEpsilon){o.push({state:r.target,tokenListIndex:R.tokenListIndex});continue}let s=r.label;if(s&&s.length>0)if(r.transitionType===la.NOT_SET&&(s=s.complement(ca.MIN_USER_TOKEN_TYPE,this.atn.maxTokenType)),e){if(!this.translateStackToRuleIndex(a)){const t=s.toArray(),e=1===t.length;for(const s of t)if(!this.ignoredTokens.has(s)){this.showDebugOutput&&console.log("=====> collected: ",this.vocabulary.getDisplayName(s));const t=e?this.getFollowingTokens(r):[];this.candidates.tokens.has(s)?this.candidates.tokens.set(s,Xc(t,this.candidates.tokens.get(s))):this.candidates.tokens.set(s,t)}}}else s.contains(t)&&(this.showDebugOutput&&console.log("=====> consumed: ",this.vocabulary.getDisplayName(t)),o.push({state:r.target,tokenListIndex:R.tokenListIndex+1}))}}}return a.pop(),e.isPrecedenceRule&&this.precedenceStack.pop(),c.set(s,n),n}generateBaseDescription(e){const s=e.stateNumber===Va.INVALID_STATE_NUMBER?"Invalid":e.stateNumber,a=t.atnStateTypeMap[e.constructor.stateType];return"[".concat(s," ").concat(a,"] in ").concat(this.ruleNames[e.ruleIndex])}printDescription(e,s,a,r){const i=" ".repeat(e);let c=i,n="";if(this.debugOutputWithTransitions)for(const h of s.transitions){let e="";const s=h.label?h.label.toArray():[];if(s.length>2)e=this.vocabulary.getDisplayName(s[0])+" .. "+this.vocabulary.getDisplayName(s[s.length-1]);else for(const t of s)e.length>0&&(e+=", "),e+=this.vocabulary.getDisplayName(t);0===e.length&&(e="\u03b5");const a=t.atnStateTypeMap[h.target.constructor.stateType];n+="\n".concat(i,"\t(").concat(e,") [").concat(h.target.stateNumber," ").concat(a,"] in ").concat(this.ruleNames[h.target.ruleIndex])}r>=this.tokens.length-1?c+="<<".concat(this.tokenStartIndex+r,">> "):c+="<".concat(this.tokenStartIndex+r,"> "),console.log(c+"Current state: "+a+n)}printRuleState(t){if(0!==t.length)for(const e of t)console.log(this.ruleNames[e.ruleIndex]);else console.log("<empty stack>")}},Gc(bi,"CodeCompletionCore"),(0,js.Z)(bi,"followSetsByATN",new Map),(0,js.Z)(bi,"atnStateTypeMap",["invalid","basic","rule start","block start","plus block start","star block start","token start","rule stop","block end","star loop back","star loop entry","plus loop back","loop end"]),bi),Zc=(Wi=class extends Bc{constructor(t,e){super(t),(0,js.Z)(this,"dependencies",new Set),this.options=e}get info(){return{dependencyCount:this.dependencies.size,symbolCount:this.children.length}}clear(){super.clear(),this.dependencies.clear()}addDependencies(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];e.forEach((t=>{this.dependencies.add(t)}))}removeDependency(t){this.dependencies.has(t)&&this.dependencies.delete(t)}addNewSymbolOfType(t,e){for(var s=arguments.length,a=new Array(s>2?s-2:0),r=2;r<s;r++)a[r-2]=arguments[r];const i=new t(...a);return e&&e!==this?e.addSymbol(i):this.addSymbol(i),i}async addNewNamespaceFromPath(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";const a=e.split(s);let r=0,i=void 0===t?this:t;for(;r<a.length-1;){let t=await i.resolve(a[r],!0);void 0===t&&(t=this.addNewSymbolOfType(Vc,i,a[r])),i=t,++r}return this.addNewSymbolOfType(Vc,i,a[a.length-1])}addNewNamespaceFromPathSync(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";const a=e.split(s);let r=0,i=void 0===t?this:t;for(;r<a.length-1;){let t=i.resolveSync(a[r],!0);void 0===t&&(t=this.addNewSymbolOfType(Vc,i,a[r])),i=t,++r}return this.addNewSymbolOfType(Vc,i,a[a.length-1])}async getAllSymbols(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const s=await super.getAllSymbols(t,e);if(!e){(await Promise.all([...this.dependencies].map((s=>s.getAllSymbols(t,e))))).forEach((t=>{s.push(...t)}))}return s}getAllSymbolsSync(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const s=super.getAllSymbolsSync(t,e);return e||this.dependencies.forEach((a=>{s.push(...a.getAllSymbolsSync(t,e))})),s}async symbolWithContext(t){const e=Gc((s=>{if(s.context===t)return s;if(s instanceof Bc)for(const t of s.children){const s=e(t);if(s)return s}}),"findRecursive");let s=await this.getAllSymbols(Fc);for(const a of s){const t=e(a);if(t)return t}for(const a of this.dependencies){s=await a.getAllSymbols(Fc);for(const t of s){const s=e(t);if(s)return s}}}symbolWithContextSync(t){const e=Gc((s=>{if(s.context===t)return s;if(s instanceof Bc)for(const t of s.children){const s=e(t);if(s)return s}}),"findRecursive");let s=this.getAllSymbolsSync(Fc);for(const a of s){const t=e(a);if(t)return t}for(const a of this.dependencies){s=a.getAllSymbolsSync(Fc);for(const t of s){const s=e(t);if(s)return s}}}async resolve(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=await super.resolve(t,e);if(!s&&!e)for(const a of this.dependencies)if(s=await a.resolve(t,!1),s)return s;return s}resolveSync(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=super.resolveSync(t,e);if(!s&&!e)for(const a of this.dependencies)if(s=a.resolveSync(t,!1),s)return s;return s}},Gc(Wi,"SymbolTable"),Wi),qc=class extends yc{constructor(t,e,s){super(t,s),this.name=t,this.alias=e}};function jc(t){return function(){let t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).reduce(((t,e)=>{var s;let a=null!==(s=t[e.name])&&void 0!==s?s:new Set;return e.alias&&a.add(e.alias),t[e.name]=a,t}),{});return Object.keys(t).reduce(((e,s)=>{let a=t[s];return a.size>0?null===a||void 0===a||a.forEach((t=>{e.push({name:s,alias:t})})):e.push({name:s}),e}),[])}(t.symbolTable.getNestedSymbolsOfTypeSync(qc))}var zc=class extends yc{constructor(t,e){super(t,e),this.name=t}};var $c,tn=($c=tn||{},$c.ALL="ALL",$c.TABLES="TABLES",$c.VIEWS="VIEWS",$c),en=/^\p{L}+$/u,sn=class extends $r{constructor(){super(...arguments),this.tags=[]}pushTag(){this.tags.push(this.text)}isTag(){return this.text===this.tags[0]}popTag(){this.tags.shift()}checkLA(t){return this.inputStream.LA(1)!==t}charIsLetter(){return en.test(this.inputStream.LA(-1))}HandleNumericFail(){this.inputStream.seek(this.inputStream.index-2),this.type=658}HandleLessLessGreaterGreater(){"<<"==this.text?this.type=18:">>"==this.text&&(this.type=19)}UnterminatedBlockCommentDebugAssert(){}CheckIfUtf32Letter(){let t,e=this.inputStream.LA(-2)<<8+this.inputStream.LA(-1);return e<65536?t=[e]:(e-=65536,t=[e/1024+55296,e%1024+56320]),en.test("".concat(t[0]))}},an=(Vi=class t extends sn{constructor(e){super(e),this.interpreter=new hi(this,t._ATN,t.decisionsToDFA,new Si)}get grammarFileName(){return"PostgreSqlLexer.g4"}get literalNames(){return t.literalNames}get symbolicNames(){return t.symbolicNames}get ruleNames(){return t.ruleNames}get serializedATN(){return t._serializedATN}get channelNames(){return t.channelNames}get modeNames(){return t.modeNames}action(t,e,s){switch(e){case 28:this.Operator_action(t,s);break;case 656:this.BeginDollarStringConstant_action(t,s);break;case 667:this.NumericFail_action(t,s);break;case 676:this.UnterminatedBlockComment_action(t,s);break;case 688:this.AfterEscapeStringConstantMode_NotContinued_action(t,s);break;case 692:this.AfterEscapeStringConstantWithNewlineMode_NotContinued_action(t,s);break;case 694:this.EndDollarStringConstant_action(t,s)}}Operator_action(t,e){if(0===e)this.HandleLessLessGreaterGreater()}BeginDollarStringConstant_action(t,e){if(1===e)this.pushTag()}NumericFail_action(t,e){if(2===e)this.HandleNumericFail()}UnterminatedBlockComment_action(t,e){if(3===e)this.UnterminatedBlockCommentDebugAssert()}AfterEscapeStringConstantMode_NotContinued_action(t,e){e}AfterEscapeStringConstantWithNewlineMode_NotContinued_action(t,e){e}EndDollarStringConstant_action(t,e){if(6===e)this.popTag()}sempred(t,e,s){switch(e){case 28:return this.Operator_sempred(t,s);case 29:return this.OperatorEndingWithPlusMinus_sempred(t,s);case 640:return this.IdentifierStartChar_sempred(t,s);case 694:return this.EndDollarStringConstant_sempred(t,s)}return!0}Operator_sempred(t,e){switch(e){case 0:return this.checkLA("-");case 1:case 2:return this.checkLA("*")}return!0}OperatorEndingWithPlusMinus_sempred(t,e){switch(e){case 3:case 5:return this.checkLA("-");case 4:return this.checkLA("*")}return!0}IdentifierStartChar_sempred(t,e){switch(e){case 6:return this.charIsLetter();case 7:return}return!0}EndDollarStringConstant_sempred(t,e){return 8!==e||this.isTag()}static get _ATN(){return t.__ATN||(t.__ATN=(new fr).deserialize(t._serializedATN)),t.__ATN}get vocabulary(){return t.vocabulary}},Vi.Dollar=1,Vi.OPEN_PAREN=2,Vi.CLOSE_PAREN=3,Vi.OPEN_BRACKET=4,Vi.CLOSE_BRACKET=5,Vi.COMMA=6,Vi.SEMI=7,Vi.COLON=8,Vi.STAR=9,Vi.EQUAL=10,Vi.DOT=11,Vi.PLUS=12,Vi.MINUS=13,Vi.SLASH=14,Vi.CARET=15,Vi.LT=16,Vi.GT=17,Vi.LESS_LESS=18,Vi.GREATER_GREATER=19,Vi.COLON_EQUALS=20,Vi.LESS_EQUALS=21,Vi.EQUALS_GREATER=22,Vi.GREATER_EQUALS=23,Vi.DOT_DOT=24,Vi.NOT_EQUALS=25,Vi.TYPECAST=26,Vi.PERCENT=27,Vi.PARAM=28,Vi.Operator=29,Vi.ALL=30,Vi.ANALYSE=31,Vi.ANALYZE=32,Vi.AND=33,Vi.ANY=34,Vi.ARRAY=35,Vi.AS=36,Vi.ASC=37,Vi.ASYMMETRIC=38,Vi.BOTH=39,Vi.CASE=40,Vi.CAST=41,Vi.CHECK=42,Vi.COLLATE=43,Vi.COLUMN=44,Vi.CONSTRAINT=45,Vi.CREATE=46,Vi.CURRENT_CATALOG=47,Vi.CURRENT_DATE=48,Vi.CURRENT_ROLE=49,Vi.CURRENT_TIME=50,Vi.CURRENT_TIMESTAMP=51,Vi.CURRENT_USER=52,Vi.DEFAULT=53,Vi.DEFERRABLE=54,Vi.DESC=55,Vi.DISTINCT=56,Vi.DO=57,Vi.ELSE=58,Vi.EXCEPT=59,Vi.FALSE_P=60,Vi.FETCH=61,Vi.FOR=62,Vi.FOREIGN=63,Vi.FROM=64,Vi.GRANT=65,Vi.GROUP_P=66,Vi.HAVING=67,Vi.IN_P=68,Vi.INITIALLY=69,Vi.INTERSECT=70,Vi.INTO=71,Vi.LATERAL_P=72,Vi.LEADING=73,Vi.LIMIT=74,Vi.LOCALTIME=75,Vi.LOCALTIMESTAMP=76,Vi.NOT=77,Vi.NULL_P=78,Vi.OFFSET=79,Vi.ON=80,Vi.ONLY=81,Vi.OR=82,Vi.ORDER=83,Vi.PLACING=84,Vi.PRIMARY=85,Vi.REFERENCES=86,Vi.RETURNING=87,Vi.SELECT=88,Vi.SESSION_USER=89,Vi.SOME=90,Vi.SYMMETRIC=91,Vi.TABLE=92,Vi.THEN=93,Vi.TO=94,Vi.TRAILING=95,Vi.TRUE_P=96,Vi.UNION=97,Vi.UNIQUE=98,Vi.USER=99,Vi.USING=100,Vi.VARIADIC=101,Vi.WHEN=102,Vi.WHERE=103,Vi.WINDOW=104,Vi.WITH=105,Vi.AUTHORIZATION=106,Vi.BINARY=107,Vi.COLLATION=108,Vi.CONCURRENTLY=109,Vi.CROSS=110,Vi.CURRENT_SCHEMA=111,Vi.FREEZE=112,Vi.FULL=113,Vi.ILIKE=114,Vi.INNER_P=115,Vi.IS=116,Vi.ISNULL=117,Vi.JOIN=118,Vi.LEFT=119,Vi.LIKE=120,Vi.NATURAL=121,Vi.NOTNULL=122,Vi.OUTER_P=123,Vi.OVER=124,Vi.OVERLAPS=125,Vi.RIGHT=126,Vi.SIMILAR=127,Vi.VERBOSE=128,Vi.ABORT_P=129,Vi.ABSOLUTE_P=130,Vi.ACCESS=131,Vi.ACTION=132,Vi.ADD_P=133,Vi.ADMIN=134,Vi.AFTER=135,Vi.AGGREGATE=136,Vi.ALSO=137,Vi.ALTER=138,Vi.ALWAYS=139,Vi.ASSERTION=140,Vi.ASSIGNMENT=141,Vi.AT=142,Vi.ATTRIBUTE=143,Vi.BACKWARD=144,Vi.BEFORE=145,Vi.BEGIN_P=146,Vi.BY=147,Vi.CACHE=148,Vi.CALLED=149,Vi.CASCADE=150,Vi.CASCADED=151,Vi.CATALOG=152,Vi.CHAIN=153,Vi.CHARACTERISTICS=154,Vi.CHECKPOINT=155,Vi.CLASS=156,Vi.CLOSE=157,Vi.CLUSTER=158,Vi.COMMENT=159,Vi.COMMENTS=160,Vi.COMMIT=161,Vi.COMMITTED=162,Vi.CONFIGURATION=163,Vi.CONNECTION=164,Vi.CONSTRAINTS=165,Vi.CONTENT_P=166,Vi.CONTINUE_P=167,Vi.CONVERSION_P=168,Vi.COPY=169,Vi.COST=170,Vi.CSV=171,Vi.CURSOR=172,Vi.CYCLE=173,Vi.DATA_P=174,Vi.DATABASE=175,Vi.DAY_P=176,Vi.DEALLOCATE=177,Vi.DECLARE=178,Vi.DEFAULTS=179,Vi.DEFERRED=180,Vi.DEFINER=181,Vi.DELETE_P=182,Vi.DELIMITER=183,Vi.DELIMITERS=184,Vi.DICTIONARY=185,Vi.DISABLE_P=186,Vi.DISCARD=187,Vi.DOCUMENT_P=188,Vi.DOMAIN_P=189,Vi.DOUBLE_P=190,Vi.DROP=191,Vi.EACH=192,Vi.ENABLE_P=193,Vi.ENCODING=194,Vi.ENCRYPTED=195,Vi.ENUM_P=196,Vi.ESCAPE=197,Vi.EVENT=198,Vi.EXCLUDE=199,Vi.EXCLUDING=200,Vi.EXCLUSIVE=201,Vi.EXECUTE=202,Vi.EXPLAIN=203,Vi.EXTENSION=204,Vi.EXTERNAL=205,Vi.FAMILY=206,Vi.FIRST_P=207,Vi.FOLLOWING=208,Vi.FORCE=209,Vi.FORWARD=210,Vi.FUNCTION=211,Vi.FUNCTIONS=212,Vi.GLOBAL=213,Vi.GRANTED=214,Vi.HANDLER=215,Vi.HEADER_P=216,Vi.HOLD=217,Vi.HOUR_P=218,Vi.IDENTITY_P=219,Vi.IF_P=220,Vi.IMMEDIATE=221,Vi.IMMUTABLE=222,Vi.IMPLICIT_P=223,Vi.INCLUDING=224,Vi.INCREMENT=225,Vi.INDEX=226,Vi.INDEXES=227,Vi.INHERIT=228,Vi.INHERITS=229,Vi.INLINE_P=230,Vi.INSENSITIVE=231,Vi.INSERT=232,Vi.INSTEAD=233,Vi.INVOKER=234,Vi.ISOLATION=235,Vi.KEY=236,Vi.LABEL=237,Vi.LANGUAGE=238,Vi.LARGE_P=239,Vi.LAST_P=240,Vi.LEAKPROOF=241,Vi.LEVEL=242,Vi.LISTEN=243,Vi.LOAD=244,Vi.LOCAL=245,Vi.LOCATION=246,Vi.LOCK_P=247,Vi.MAPPING=248,Vi.MATCH=249,Vi.MATCHED=250,Vi.MATERIALIZED=251,Vi.MAXVALUE=252,Vi.MERGE=253,Vi.MINUTE_P=254,Vi.MINVALUE=255,Vi.MODE=256,Vi.MONTH_P=257,Vi.MOVE=258,Vi.NAME_P=259,Vi.NAMES=260,Vi.NEXT=261,Vi.NO=262,Vi.NOTHING=263,Vi.NOTIFY=264,Vi.NOWAIT=265,Vi.NULLS_P=266,Vi.OBJECT_P=267,Vi.OF=268,Vi.OFF=269,Vi.OIDS=270,Vi.OPERATOR=271,Vi.OPTION=272,Vi.OPTIONS=273,Vi.OWNED=274,Vi.OWNER=275,Vi.PARSER=276,Vi.PARTIAL=277,Vi.PARTITION=278,Vi.PASSING=279,Vi.PASSWORD=280,Vi.PLANS=281,Vi.PRECEDING=282,Vi.PREPARE=283,Vi.PREPARED=284,Vi.PRESERVE=285,Vi.PRIOR=286,Vi.PRIVILEGES=287,Vi.PROCEDURAL=288,Vi.PROCEDURE=289,Vi.PROGRAM=290,Vi.QUOTE=291,Vi.RANGE=292,Vi.READ=293,Vi.REASSIGN=294,Vi.RECHECK=295,Vi.RECURSIVE=296,Vi.REF=297,Vi.REFRESH=298,Vi.REINDEX=299,Vi.RELATIVE_P=300,Vi.RELEASE=301,Vi.RENAME=302,Vi.REPEATABLE=303,Vi.REPLACE=304,Vi.REPLICA=305,Vi.RESET=306,Vi.RESTART=307,Vi.RESTRICT=308,Vi.RETURNS=309,Vi.REVOKE=310,Vi.ROLE=311,Vi.ROLLBACK=312,Vi.ROWS=313,Vi.RULE=314,Vi.SAVEPOINT=315,Vi.SCHEMA=316,Vi.SCROLL=317,Vi.SEARCH=318,Vi.SECOND_P=319,Vi.SECURITY=320,Vi.SEQUENCE=321,Vi.SEQUENCES=322,Vi.SERIALIZABLE=323,Vi.SERVER=324,Vi.SESSION=325,Vi.SET=326,Vi.SHARE=327,Vi.SHOW=328,Vi.SIMPLE=329,Vi.SNAPSHOT=330,Vi.STABLE=331,Vi.STANDALONE_P=332,Vi.START=333,Vi.STATEMENT=334,Vi.STATISTICS=335,Vi.STDIN=336,Vi.STDOUT=337,Vi.STORAGE=338,Vi.STRICT_P=339,Vi.STRIP_P=340,Vi.SYSID=341,Vi.SYSTEM_P=342,Vi.TABLES=343,Vi.TABLESPACE=344,Vi.TEMP=345,Vi.TEMPLATE=346,Vi.TEMPORARY=347,Vi.TEXT_P=348,Vi.TRANSACTION=349,Vi.TRIGGER=350,Vi.TRUNCATE=351,Vi.TRUSTED=352,Vi.TYPE_P=353,Vi.TYPES_P=354,Vi.UNBOUNDED=355,Vi.UNCOMMITTED=356,Vi.UNENCRYPTED=357,Vi.UNKNOWN=358,Vi.UNLISTEN=359,Vi.UNLOGGED=360,Vi.UNTIL=361,Vi.UPDATE=362,Vi.VACUUM=363,Vi.VALID=364,Vi.VALIDATE=365,Vi.VALIDATOR=366,Vi.VARYING=367,Vi.VERSION_P=368,Vi.VIEW=369,Vi.VOLATILE=370,Vi.WHITESPACE_P=371,Vi.WITHOUT=372,Vi.WORK=373,Vi.WRAPPER=374,Vi.WRITE=375,Vi.XML_P=376,Vi.YEAR_P=377,Vi.YES_P=378,Vi.ZONE=379,Vi.BETWEEN=380,Vi.BIGINT=381,Vi.BIT=382,Vi.BOOLEAN_P=383,Vi.CHAR_P=384,Vi.CHARACTER=385,Vi.COALESCE=386,Vi.DEC=387,Vi.DECIMAL_P=388,Vi.EXISTS=389,Vi.EXTRACT=390,Vi.FLOAT_P=391,Vi.GREATEST=392,Vi.INOUT=393,Vi.INT_P=394,Vi.INTEGER=395,Vi.INTERVAL=396,Vi.LEAST=397,Vi.NATIONAL=398,Vi.NCHAR=399,Vi.NONE=400,Vi.NULLIF=401,Vi.NUMERIC=402,Vi.OVERLAY=403,Vi.POSITION=404,Vi.PRECISION=405,Vi.REAL=406,Vi.ROW=407,Vi.SETOF=408,Vi.SMALLINT=409,Vi.SUBSTRING=410,Vi.TIME=411,Vi.TIMESTAMP=412,Vi.TREAT=413,Vi.TRIM=414,Vi.VALUES=415,Vi.VARCHAR=416,Vi.XMLATTRIBUTES=417,Vi.XMLCOMMENT=418,Vi.XMLAGG=419,Vi.XML_IS_WELL_FORMED=420,Vi.XML_IS_WELL_FORMED_DOCUMENT=421,Vi.XML_IS_WELL_FORMED_CONTENT=422,Vi.XPATH=423,Vi.XPATH_EXISTS=424,Vi.XMLCONCAT=425,Vi.XMLELEMENT=426,Vi.XMLEXISTS=427,Vi.XMLFOREST=428,Vi.XMLPARSE=429,Vi.XMLPI=430,Vi.XMLROOT=431,Vi.XMLSERIALIZE=432,Vi.CALL=433,Vi.CURRENT_P=434,Vi.ATTACH=435,Vi.DETACH=436,Vi.EXPRESSION=437,Vi.GENERATED=438,Vi.LOGGED=439,Vi.STORED=440,Vi.INCLUDE=441,Vi.ROUTINE=442,Vi.TRANSFORM=443,Vi.IMPORT_P=444,Vi.POLICY=445,Vi.METHOD=446,Vi.REFERENCING=447,Vi.NEW=448,Vi.OLD=449,Vi.VALUE_P=450,Vi.SUBSCRIPTION=451,Vi.PUBLICATION=452,Vi.OUT_P=453,Vi.END_P=454,Vi.ROUTINES=455,Vi.SCHEMAS=456,Vi.PROCEDURES=457,Vi.INPUT_P=458,Vi.SUPPORT=459,Vi.PARALLEL=460,Vi.SQL_P=461,Vi.DEPENDS=462,Vi.OVERRIDING=463,Vi.CONFLICT=464,Vi.SKIP_P=465,Vi.LOCKED=466,Vi.TIES=467,Vi.ROLLUP=468,Vi.CUBE=469,Vi.GROUPING=470,Vi.SETS=471,Vi.TABLESAMPLE=472,Vi.ORDINALITY=473,Vi.XMLTABLE=474,Vi.COLUMNS=475,Vi.XMLNAMESPACES=476,Vi.ROWTYPE=477,Vi.NORMALIZED=478,Vi.WITHIN=479,Vi.FILTER=480,Vi.GROUPS=481,Vi.OTHERS=482,Vi.NFC=483,Vi.NFD=484,Vi.NFKC=485,Vi.NFKD=486,Vi.UESCAPE=487,Vi.VIEWS=488,Vi.NORMALIZE=489,Vi.DUMP=490,Vi.PRINT_STRICT_PARAMS=491,Vi.VARIABLE_CONFLICT=492,Vi.ERROR=493,Vi.USE_VARIABLE=494,Vi.USE_COLUMN=495,Vi.ALIAS=496,Vi.CONSTANT=497,Vi.PERFORM=498,Vi.GET=499,Vi.DIAGNOSTICS=500,Vi.STACKED=501,Vi.ELSIF=502,Vi.WHILE=503,Vi.REVERSE=504,Vi.FOREACH=505,Vi.SLICE=506,Vi.EXIT=507,Vi.RETURN=508,Vi.QUERY=509,Vi.RAISE=510,Vi.SQLSTATE=511,Vi.DEBUG=512,Vi.LOG=513,Vi.INFO=514,Vi.NOTICE=515,Vi.WARNING=516,Vi.EXCEPTION=517,Vi.ASSERT=518,Vi.LOOP=519,Vi.OPEN=520,Vi.ABS=521,Vi.CBRT=522,Vi.CEIL=523,Vi.CEILING=524,Vi.DEGREES=525,Vi.DIV=526,Vi.EXP=527,Vi.FACTORIAL=528,Vi.FLOOR=529,Vi.GCD=530,Vi.LCM=531,Vi.LN=532,Vi.LOG10=533,Vi.MIN_SCALE=534,Vi.MOD=535,Vi.PI=536,Vi.POWER=537,Vi.RADIANS=538,Vi.ROUND=539,Vi.SCALE=540,Vi.SIGN=541,Vi.SQRT=542,Vi.TRIM_SCALE=543,Vi.TRUNC=544,Vi.WIDTH_BUCKET=545,Vi.RANDOM=546,Vi.SETSEED=547,Vi.ACOS=548,Vi.ACOSD=549,Vi.ASIN=550,Vi.ASIND=551,Vi.ATAN=552,Vi.ATAND=553,Vi.ATAN2=554,Vi.ATAN2D=555,Vi.COS=556,Vi.COSD=557,Vi.COT=558,Vi.COTD=559,Vi.SIN=560,Vi.SIND=561,Vi.TAN=562,Vi.TAND=563,Vi.SINH=564,Vi.COSH=565,Vi.TANH=566,Vi.ASINH=567,Vi.ACOSH=568,Vi.ATANH=569,Vi.BIT_LENGTH=570,Vi.CHAR_LENGTH=571,Vi.CHARACTER_LENGTH=572,Vi.LOWER=573,Vi.OCTET_LENGTH=574,Vi.UPPER=575,Vi.ASCII=576,Vi.BTRIM=577,Vi.CHR=578,Vi.CONCAT=579,Vi.CONCAT_WS=580,Vi.FORMAT=581,Vi.INITCAP=582,Vi.LENGTH=583,Vi.LPAD=584,Vi.LTRIM=585,Vi.MD5=586,Vi.PARSE_IDENT=587,Vi.PG_CLIENT_ENCODING=588,Vi.QUOTE_IDENT=589,Vi.QUOTE_LITERAL=590,Vi.QUOTE_NULLABLE=591,Vi.REGEXP_COUNT=592,Vi.REGEXP_INSTR=593,Vi.REGEXP_LIKE=594,Vi.REGEXP_MATCH=595,Vi.REGEXP_MATCHES=596,Vi.REGEXP_REPLACE=597,Vi.REGEXP_SPLIT_TO_ARRAY=598,Vi.REGEXP_SPLIT_TO_TABLE=599,Vi.REGEXP_SUBSTR=600,Vi.REPEAT=601,Vi.RPAD=602,Vi.RTRIM=603,Vi.SPLIT_PART=604,Vi.STARTS_WITH=605,Vi.STRING_TO_ARRAY=606,Vi.STRING_TO_TABLE=607,Vi.STRPOS=608,Vi.SUBSTR=609,Vi.TO_ASCII=610,Vi.TO_HEX=611,Vi.TRANSLATE=612,Vi.UNISTR=613,Vi.AGE=614,Vi.CLOCK_TIMESTAMP=615,Vi.DATE_BIN=616,Vi.DATE_PART=617,Vi.DATE_TRUNC=618,Vi.ISFINITE=619,Vi.JUSTIFY_DAYS=620,Vi.JUSTIFY_HOURS=621,Vi.JUSTIFY_INTERVAL=622,Vi.MAKE_DATE=623,Vi.MAKE_INTERVAL=624,Vi.MAKE_TIME=625,Vi.MAKE_TIMESTAMP=626,Vi.MAKE_TIMESTAMPTZ=627,Vi.NOW=628,Vi.STATEMENT_TIMESTAMP=629,Vi.TIMEOFDAY=630,Vi.TRANSACTION_TIMESTAMP=631,Vi.TO_TIMESTAMP=632,Vi.TO_CHAR=633,Vi.TO_DATE=634,Vi.TO_NUMBER=635,Vi.Identifier=636,Vi.QuotedIdentifier=637,Vi.UnterminatedQuotedIdentifier=638,Vi.InvalidQuotedIdentifier=639,Vi.InvalidUnterminatedQuotedIdentifier=640,Vi.UnicodeQuotedIdentifier=641,Vi.UnterminatedUnicodeQuotedIdentifier=642,Vi.InvalidUnicodeQuotedIdentifier=643,Vi.InvalidUnterminatedUnicodeQuotedIdentifier=644,Vi.StringConstant=645,Vi.UnterminatedStringConstant=646,Vi.UnicodeEscapeStringConstant=647,Vi.UnterminatedUnicodeEscapeStringConstant=648,Vi.BeginDollarStringConstant=649,Vi.BinaryStringConstant=650,Vi.UnterminatedBinaryStringConstant=651,Vi.InvalidBinaryStringConstant=652,Vi.InvalidUnterminatedBinaryStringConstant=653,Vi.HexadecimalStringConstant=654,Vi.UnterminatedHexadecimalStringConstant=655,Vi.InvalidHexadecimalStringConstant=656,Vi.InvalidUnterminatedHexadecimalStringConstant=657,Vi.Integral=658,Vi.NumericFail=659,Vi.Numeric=660,Vi.PLSQLVARIABLENAME=661,Vi.PLSQLIDENTIFIER=662,Vi.Whitespace=663,Vi.Newline=664,Vi.LineComment=665,Vi.BlockComment=666,Vi.UnterminatedBlockComment=667,Vi.MetaCommand=668,Vi.EndMetaCommand=669,Vi.ErrorCharacter=670,Vi.EscapeStringConstant=671,Vi.UnterminatedEscapeStringConstant=672,Vi.InvalidEscapeStringConstant=673,Vi.InvalidUnterminatedEscapeStringConstant=674,Vi.AfterEscapeStringConstantMode_NotContinued=675,Vi.AfterEscapeStringConstantWithNewlineMode_NotContinued=676,Vi.DollarText=677,Vi.EndDollarStringConstant=678,Vi.AfterEscapeStringConstantWithNewlineMode_Continued=679,Vi.EscapeStringConstantMode=1,Vi.AfterEscapeStringConstantMode=2,Vi.AfterEscapeStringConstantWithNewlineMode=3,Vi.DollarQuotedStringMode=4,Vi.channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"],Vi.literalNames=[null,"'$'","'('","')'","'['","']'","','","';'","':'","'*'","'='","'.'","'+'","'-'","'/'","'^'","'<'","'>'","'<<'","'>>'","':='","'<='","'=>'","'>='","'..'","'<>'","'::'","'%'",null,null,"'ALL'","'ANALYSE'","'ANALYZE'","'AND'","'ANY'","'ARRAY'","'AS'","'ASC'","'ASYMMETRIC'","'BOTH'","'CASE'","'CAST'","'CHECK'","'COLLATE'","'COLUMN'","'CONSTRAINT'","'CREATE'","'CURRENT_CATALOG'","'CURRENT_DATE'","'CURRENT_ROLE'","'CURRENT_TIME'","'CURRENT_TIMESTAMP'","'CURRENT_USER'","'DEFAULT'","'DEFERRABLE'","'DESC'","'DISTINCT'","'DO'","'ELSE'","'EXCEPT'","'FALSE'","'FETCH'","'FOR'","'FOREIGN'","'FROM'","'GRANT'","'GROUP'","'HAVING'","'IN'","'INITIALLY'","'INTERSECT'","'INTO'","'LATERAL'","'LEADING'","'LIMIT'","'LOCALTIME'","'LOCALTIMESTAMP'","'NOT'","'NULL'","'OFFSET'","'ON'","'ONLY'","'OR'","'ORDER'","'PLACING'","'PRIMARY'","'REFERENCES'","'RETURNING'","'SELECT'","'SESSION_USER'","'SOME'","'SYMMETRIC'","'TABLE'","'THEN'","'TO'","'TRAILING'","'TRUE'","'UNION'","'UNIQUE'","'USER'","'USING'","'VARIADIC'","'WHEN'","'WHERE'","'WINDOW'","'WITH'","'AUTHORIZATION'","'BINARY'","'COLLATION'","'CONCURRENTLY'","'CROSS'","'CURRENT_SCHEMA'","'FREEZE'","'FULL'","'ILIKE'","'INNER'","'IS'","'ISNULL'","'JOIN'","'LEFT'","'LIKE'","'NATURAL'","'NOTNULL'","'OUTER'","'OVER'","'OVERLAPS'","'RIGHT'","'SIMILAR'","'VERBOSE'","'ABORT'","'ABSOLUTE'","'ACCESS'","'ACTION'","'ADD'","'ADMIN'","'AFTER'","'AGGREGATE'","'ALSO'","'ALTER'","'ALWAYS'","'ASSERTION'","'ASSIGNMENT'","'AT'","'ATTRIBUTE'","'BACKWARD'","'BEFORE'","'BEGIN'","'BY'","'CACHE'","'CALLED'","'CASCADE'","'CASCADED'","'CATALOG'","'CHAIN'","'CHARACTERISTICS'","'CHECKPOINT'","'CLASS'","'CLOSE'","'CLUSTER'","'COMMENT'","'COMMENTS'","'COMMIT'","'COMMITTED'","'CONFIGURATION'","'CONNECTION'","'CONSTRAINTS'","'CONTENT'","'CONTINUE'","'CONVERSION'","'COPY'","'COST'","'CSV'","'CURSOR'","'CYCLE'","'DATA'","'DATABASE'","'DAY'","'DEALLOCATE'","'DECLARE'","'DEFAULTS'","'DEFERRED'","'DEFINER'","'DELETE'","'DELIMITER'","'DELIMITERS'","'DICTIONARY'","'DISABLE'","'DISCARD'","'DOCUMENT'","'DOMAIN'","'DOUBLE'","'DROP'","'EACH'","'ENABLE'","'ENCODING'","'ENCRYPTED'","'ENUM'","'ESCAPE'","'EVENT'","'EXCLUDE'","'EXCLUDING'","'EXCLUSIVE'","'EXECUTE'","'EXPLAIN'","'EXTENSION'","'EXTERNAL'","'FAMILY'","'FIRST'","'FOLLOWING'","'FORCE'","'FORWARD'","'FUNCTION'","'FUNCTIONS'","'GLOBAL'","'GRANTED'","'HANDLER'","'HEADER'","'HOLD'","'HOUR'","'IDENTITY'","'IF'","'IMMEDIATE'","'IMMUTABLE'","'IMPLICIT'","'INCLUDING'","'INCREMENT'","'INDEX'","'INDEXES'","'INHERIT'","'INHERITS'","'INLINE'","'INSENSITIVE'","'INSERT'","'INSTEAD'","'INVOKER'","'ISOLATION'","'KEY'","'LABEL'","'LANGUAGE'","'LARGE'","'LAST'","'LEAKPROOF'","'LEVEL'","'LISTEN'","'LOAD'","'LOCAL'","'LOCATION'","'LOCK'","'MAPPING'","'MATCH'","'MATCHED'","'MATERIALIZED'","'MAXVALUE'","'MERGE'","'MINUTE'","'MINVALUE'","'MODE'","'MONTH'","'MOVE'","'NAME'","'NAMES'","'NEXT'","'NO'","'NOTHING'","'NOTIFY'","'NOWAIT'","'NULLS'","'OBJECT'","'OF'","'OFF'","'OIDS'","'OPERATOR'","'OPTION'","'OPTIONS'","'OWNED'","'OWNER'","'PARSER'","'PARTIAL'","'PARTITION'","'PASSING'","'PASSWORD'","'PLANS'","'PRECEDING'","'PREPARE'","'PREPARED'","'PRESERVE'","'PRIOR'","'PRIVILEGES'","'PROCEDURAL'","'PROCEDURE'","'PROGRAM'","'QUOTE'","'RANGE'","'READ'","'REASSIGN'","'RECHECK'","'RECURSIVE'","'REF'","'REFRESH'","'REINDEX'","'RELATIVE'","'RELEASE'","'RENAME'","'REPEATABLE'","'REPLACE'","'REPLICA'","'RESET'","'RESTART'","'RESTRICT'","'RETURNS'","'REVOKE'","'ROLE'","'ROLLBACK'","'ROWS'","'RULE'","'SAVEPOINT'","'SCHEMA'","'SCROLL'","'SEARCH'","'SECOND'","'SECURITY'","'SEQUENCE'","'SEQUENCES'","'SERIALIZABLE'","'SERVER'","'SESSION'","'SET'","'SHARE'","'SHOW'","'SIMPLE'","'SNAPSHOT'","'STABLE'","'STANDALONE'","'START'","'STATEMENT'","'STATISTICS'","'STDIN'","'STDOUT'","'STORAGE'","'STRICT'","'STRIP'","'SYSID'","'SYSTEM'","'TABLES'","'TABLESPACE'","'TEMP'","'TEMPLATE'","'TEMPORARY'","'TEXT'","'TRANSACTION'","'TRIGGER'","'TRUNCATE'","'TRUSTED'","'TYPE'","'TYPES'","'UNBOUNDED'","'UNCOMMITTED'","'UNENCRYPTED'","'UNKNOWN'","'UNLISTEN'","'UNLOGGED'","'UNTIL'","'UPDATE'","'VACUUM'","'VALID'","'VALIDATE'","'VALIDATOR'","'VARYING'","'VERSION'","'VIEW'","'VOLATILE'","'WHITESPACE'","'WITHOUT'","'WORK'","'WRAPPER'","'WRITE'","'XML'","'YEAR'","'YES'","'ZONE'","'BETWEEN'","'BIGINT'","'BIT'","'BOOLEAN'","'CHAR'","'CHARACTER'","'COALESCE'","'DEC'","'DECIMAL'","'EXISTS'","'EXTRACT'","'FLOAT'","'GREATEST'","'INOUT'","'INT'","'INTEGER'","'INTERVAL'","'LEAST'","'NATIONAL'","'NCHAR'","'NONE'","'NULLIF'","'NUMERIC'","'OVERLAY'","'POSITION'","'PRECISION'","'REAL'","'ROW'","'SETOF'","'SMALLINT'","'SUBSTRING'","'TIME'","'TIMESTAMP'","'TREAT'","'TRIM'","'VALUES'","'VARCHAR'","'XMLATTRIBUTES'","'XMLCOMMENT'","'XMLAGG'","'XML_IS_WELL_FORMED'","'XML_IS_WELL_FORMED_DOCUMENT'","'XML_IS_WELL_FORMED_CONTENT'","'XPATH'","'XPATH_EXISTS'","'XMLCONCAT'","'XMLELEMENT'","'XMLEXISTS'","'XMLFOREST'","'XMLPARSE'","'XMLPI'","'XMLROOT'","'XMLSERIALIZE'","'CALL'","'CURRENT'","'ATTACH'","'DETACH'","'EXPRESSION'","'GENERATED'","'LOGGED'","'STORED'","'INCLUDE'","'ROUTINE'","'TRANSFORM'","'IMPORT'","'POLICY'","'METHOD'","'REFERENCING'","'NEW'","'OLD'","'VALUE'","'SUBSCRIPTION'","'PUBLICATION'","'OUT'","'END'","'ROUTINES'","'SCHEMAS'","'PROCEDURES'","'INPUT'","'SUPPORT'","'PARALLEL'","'SQL'","'DEPENDS'","'OVERRIDING'","'CONFLICT'","'SKIP'","'LOCKED'","'TIES'","'ROLLUP'","'CUBE'","'GROUPING'","'SETS'","'TABLESAMPLE'","'ORDINALITY'","'XMLTABLE'","'COLUMNS'","'XMLNAMESPACES'","'ROWTYPE'","'NORMALIZED'","'WITHIN'","'FILTER'","'GROUPS'","'OTHERS'","'NFC'","'NFD'","'NFKC'","'NFKD'","'UESCAPE'","'VIEWS'","'NORMALIZE'","'DUMP'","'PRINT_STRICT_PARAMS'","'VARIABLE_CONFLICT'","'ERROR'","'USE_VARIABLE'","'USE_COLUMN'","'ALIAS'","'CONSTANT'","'PERFORM'","'GET'","'DIAGNOSTICS'","'STACKED'","'ELSIF'","'WHILE'","'REVERSE'","'FOREACH'","'SLICE'","'EXIT'","'RETURN'","'QUERY'","'RAISE'","'SQLSTATE'","'DEBUG'","'LOG'","'INFO'","'NOTICE'","'WARNING'","'EXCEPTION'","'ASSERT'","'LOOP'","'OPEN'","'ABS'","'CBRT'","'CEIL'","'CEILING'","'DEGREES'","'DIV'","'EXP'","'FACTORIAL'","'FLOOR'","'GCD'","'LCM'","'LN'","'LOG10'","'MIN_SCALE'","'MOD'","'PI'","'POWER'","'RADIANS'","'ROUND'","'SCALE'","'SIGN'","'SQRT'","'TRIM_SCALE'","'TRUNC'","'WIDTH_BUCKET'","'RANDOM'","'SETSEED'","'ACOS'","'ACOSD'","'ASIN'","'ASIND'","'ATAN'","'ATAND'","'ATAN2'","'ATAN2D'","'COS'","'COSD'","'COT'","'COTD'","'SIN'","'SIND'","'TAN'","'TAND'","'SINH'","'COSH'","'TANH'","'ASINH'","'ACOSH'","'ATANH'","'BIT_LENGTH'","'CHAR_LENGTH'","'CHARACTER_LENGTH'","'LOWER'","'OCTET_LENGTH'","'UPPER'","'ASCII'","'BTRIM'","'CHR'","'CONCAT'","'CONCAT_WS'","'FORMAT'","'INITCAP'","'LENGTH'","'LPAD'","'LTRIM'","'MD5'","'PARSE_IDENT'","'PG_CLIENT_ENCODING'","'QUOTE_IDENT'","'QUOTE_LITERAL'","'QUOTE_NULLABLE'","'REGEXP_COUNT'","'REGEXP_INSTR'","'REGEXP_LIKE'","'REGEXP_MATCH'","'REGEXP_MATCHES'","'REGEXP_REPLACE'","'REGEXP_SPLIT_TO_ARRAY'","'REGEXP_SPLIT_TO_TABLE'","'REGEXP_SUBSTR'","'REPEAT'","'RPAD'","'RTRIM'","'SPLIT_PART'","'STARTS_WITH'","'STRING_TO_ARRAY'","'STRING_TO_TABLE'","'STRPOS'","'SUBSTR'","'TO_ASCII'","'TO_HEX'","'TRANSLATE'","'UNISTR'","'AGE'","'CLOCK_TIMESTAMP'","'DATE_BIN'","'DATE_PART'","'DATE_TRUNC'","'ISFINITE'","'JUSTIFY_DAYS'","'JUSTIFY_HOURS'","'JUSTIFY_INTERVAL'","'MAKE_DATE'","'MAKE_INTERVAL'","'MAKE_TIME'","'MAKE_TIMESTAMP'","'MAKE_TIMESTAMPTZ'","'NOW'","'STATEMENT_TIMESTAMP'","'TIMEOFDAY'","'TRANSACTION_TIMESTAMP'","'TO_TIMESTAMP'","'TO_CHAR'","'TO_DATE'","'TO_NUMBER'",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"'\\'",null,null,null,null,null,null,null,null,null,"'''"],Vi.symbolicNames=[null,"Dollar","OPEN_PAREN","CLOSE_PAREN","OPEN_BRACKET","CLOSE_BRACKET","COMMA","SEMI","COLON","STAR","EQUAL","DOT","PLUS","MINUS","SLASH","CARET","LT","GT","LESS_LESS","GREATER_GREATER","COLON_EQUALS","LESS_EQUALS","EQUALS_GREATER","GREATER_EQUALS","DOT_DOT","NOT_EQUALS","TYPECAST","PERCENT","PARAM","Operator","ALL","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","ASYMMETRIC","BOTH","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","CURRENT_CATALOG","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DEFAULT","DEFERRABLE","DESC","DISTINCT","DO","ELSE","EXCEPT","FALSE_P","FETCH","FOR","FOREIGN","FROM","GRANT","GROUP_P","HAVING","IN_P","INITIALLY","INTERSECT","INTO","LATERAL_P","LEADING","LIMIT","LOCALTIME","LOCALTIMESTAMP","NOT","NULL_P","OFFSET","ON","ONLY","OR","ORDER","PLACING","PRIMARY","REFERENCES","RETURNING","SELECT","SESSION_USER","SOME","SYMMETRIC","TABLE","THEN","TO","TRAILING","TRUE_P","UNION","UNIQUE","USER","USING","VARIADIC","WHEN","WHERE","WINDOW","WITH","AUTHORIZATION","BINARY","COLLATION","CONCURRENTLY","CROSS","CURRENT_SCHEMA","FREEZE","FULL","ILIKE","INNER_P","IS","ISNULL","JOIN","LEFT","LIKE","NATURAL","NOTNULL","OUTER_P","OVER","OVERLAPS","RIGHT","SIMILAR","VERBOSE","ABORT_P","ABSOLUTE_P","ACCESS","ACTION","ADD_P","ADMIN","AFTER","AGGREGATE","ALSO","ALTER","ALWAYS","ASSERTION","ASSIGNMENT","AT","ATTRIBUTE","BACKWARD","BEFORE","BEGIN_P","BY","CACHE","CALLED","CASCADE","CASCADED","CATALOG","CHAIN","CHARACTERISTICS","CHECKPOINT","CLASS","CLOSE","CLUSTER","COMMENT","COMMENTS","COMMIT","COMMITTED","CONFIGURATION","CONNECTION","CONSTRAINTS","CONTENT_P","CONTINUE_P","CONVERSION_P","COPY","COST","CSV","CURSOR","CYCLE","DATA_P","DATABASE","DAY_P","DEALLOCATE","DECLARE","DEFAULTS","DEFERRED","DEFINER","DELETE_P","DELIMITER","DELIMITERS","DICTIONARY","DISABLE_P","DISCARD","DOCUMENT_P","DOMAIN_P","DOUBLE_P","DROP","EACH","ENABLE_P","ENCODING","ENCRYPTED","ENUM_P","ESCAPE","EVENT","EXCLUDE","EXCLUDING","EXCLUSIVE","EXECUTE","EXPLAIN","EXTENSION","EXTERNAL","FAMILY","FIRST_P","FOLLOWING","FORCE","FORWARD","FUNCTION","FUNCTIONS","GLOBAL","GRANTED","HANDLER","HEADER_P","HOLD","HOUR_P","IDENTITY_P","IF_P","IMMEDIATE","IMMUTABLE","IMPLICIT_P","INCLUDING","INCREMENT","INDEX","INDEXES","INHERIT","INHERITS","INLINE_P","INSENSITIVE","INSERT","INSTEAD","INVOKER","ISOLATION","KEY","LABEL","LANGUAGE","LARGE_P","LAST_P","LEAKPROOF","LEVEL","LISTEN","LOAD","LOCAL","LOCATION","LOCK_P","MAPPING","MATCH","MATCHED","MATERIALIZED","MAXVALUE","MERGE","MINUTE_P","MINVALUE","MODE","MONTH_P","MOVE","NAME_P","NAMES","NEXT","NO","NOTHING","NOTIFY","NOWAIT","NULLS_P","OBJECT_P","OF","OFF","OIDS","OPERATOR","OPTION","OPTIONS","OWNED","OWNER","PARSER","PARTIAL","PARTITION","PASSING","PASSWORD","PLANS","PRECEDING","PREPARE","PREPARED","PRESERVE","PRIOR","PRIVILEGES","PROCEDURAL","PROCEDURE","PROGRAM","QUOTE","RANGE","READ","REASSIGN","RECHECK","RECURSIVE","REF","REFRESH","REINDEX","RELATIVE_P","RELEASE","RENAME","REPEATABLE","REPLACE","REPLICA","RESET","RESTART","RESTRICT","RETURNS","REVOKE","ROLE","ROLLBACK","ROWS","RULE","SAVEPOINT","SCHEMA","SCROLL","SEARCH","SECOND_P","SECURITY","SEQUENCE","SEQUENCES","SERIALIZABLE","SERVER","SESSION","SET","SHARE","SHOW","SIMPLE","SNAPSHOT","STABLE","STANDALONE_P","START","STATEMENT","STATISTICS","STDIN","STDOUT","STORAGE","STRICT_P","STRIP_P","SYSID","SYSTEM_P","TABLES","TABLESPACE","TEMP","TEMPLATE","TEMPORARY","TEXT_P","TRANSACTION","TRIGGER","TRUNCATE","TRUSTED","TYPE_P","TYPES_P","UNBOUNDED","UNCOMMITTED","UNENCRYPTED","UNKNOWN","UNLISTEN","UNLOGGED","UNTIL","UPDATE","VACUUM","VALID","VALIDATE","VALIDATOR","VARYING","VERSION_P","VIEW","VOLATILE","WHITESPACE_P","WITHOUT","WORK","WRAPPER","WRITE","XML_P","YEAR_P","YES_P","ZONE","BETWEEN","BIGINT","BIT","BOOLEAN_P","CHAR_P","CHARACTER","COALESCE","DEC","DECIMAL_P","EXISTS","EXTRACT","FLOAT_P","GREATEST","INOUT","INT_P","INTEGER","INTERVAL","LEAST","NATIONAL","NCHAR","NONE","NULLIF","NUMERIC","OVERLAY","POSITION","PRECISION","REAL","ROW","SETOF","SMALLINT","SUBSTRING","TIME","TIMESTAMP","TREAT","TRIM","VALUES","VARCHAR","XMLATTRIBUTES","XMLCOMMENT","XMLAGG","XML_IS_WELL_FORMED","XML_IS_WELL_FORMED_DOCUMENT","XML_IS_WELL_FORMED_CONTENT","XPATH","XPATH_EXISTS","XMLCONCAT","XMLELEMENT","XMLEXISTS","XMLFOREST","XMLPARSE","XMLPI","XMLROOT","XMLSERIALIZE","CALL","CURRENT_P","ATTACH","DETACH","EXPRESSION","GENERATED","LOGGED","STORED","INCLUDE","ROUTINE","TRANSFORM","IMPORT_P","POLICY","METHOD","REFERENCING","NEW","OLD","VALUE_P","SUBSCRIPTION","PUBLICATION","OUT_P","END_P","ROUTINES","SCHEMAS","PROCEDURES","INPUT_P","SUPPORT","PARALLEL","SQL_P","DEPENDS","OVERRIDING","CONFLICT","SKIP_P","LOCKED","TIES","ROLLUP","CUBE","GROUPING","SETS","TABLESAMPLE","ORDINALITY","XMLTABLE","COLUMNS","XMLNAMESPACES","ROWTYPE","NORMALIZED","WITHIN","FILTER","GROUPS","OTHERS","NFC","NFD","NFKC","NFKD","UESCAPE","VIEWS","NORMALIZE","DUMP","PRINT_STRICT_PARAMS","VARIABLE_CONFLICT","ERROR","USE_VARIABLE","USE_COLUMN","ALIAS","CONSTANT","PERFORM","GET","DIAGNOSTICS","STACKED","ELSIF","WHILE","REVERSE","FOREACH","SLICE","EXIT","RETURN","QUERY","RAISE","SQLSTATE","DEBUG","LOG","INFO","NOTICE","WARNING","EXCEPTION","ASSERT","LOOP","OPEN","ABS","CBRT","CEIL","CEILING","DEGREES","DIV","EXP","FACTORIAL","FLOOR","GCD","LCM","LN","LOG10","MIN_SCALE","MOD","PI","POWER","RADIANS","ROUND","SCALE","SIGN","SQRT","TRIM_SCALE","TRUNC","WIDTH_BUCKET","RANDOM","SETSEED","ACOS","ACOSD","ASIN","ASIND","ATAN","ATAND","ATAN2","ATAN2D","COS","COSD","COT","COTD","SIN","SIND","TAN","TAND","SINH","COSH","TANH","ASINH","ACOSH","ATANH","BIT_LENGTH","CHAR_LENGTH","CHARACTER_LENGTH","LOWER","OCTET_LENGTH","UPPER","ASCII","BTRIM","CHR","CONCAT","CONCAT_WS","FORMAT","INITCAP","LENGTH","LPAD","LTRIM","MD5","PARSE_IDENT","PG_CLIENT_ENCODING","QUOTE_IDENT","QUOTE_LITERAL","QUOTE_NULLABLE","REGEXP_COUNT","REGEXP_INSTR","REGEXP_LIKE","REGEXP_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","REGEXP_SUBSTR","REPEAT","RPAD","RTRIM","SPLIT_PART","STARTS_WITH","STRING_TO_ARRAY","STRING_TO_TABLE","STRPOS","SUBSTR","TO_ASCII","TO_HEX","TRANSLATE","UNISTR","AGE","CLOCK_TIMESTAMP","DATE_BIN","DATE_PART","DATE_TRUNC","ISFINITE","JUSTIFY_DAYS","JUSTIFY_HOURS","JUSTIFY_INTERVAL","MAKE_DATE","MAKE_INTERVAL","MAKE_TIME","MAKE_TIMESTAMP","MAKE_TIMESTAMPTZ","NOW","STATEMENT_TIMESTAMP","TIMEOFDAY","TRANSACTION_TIMESTAMP","TO_TIMESTAMP","TO_CHAR","TO_DATE","TO_NUMBER","Identifier","QuotedIdentifier","UnterminatedQuotedIdentifier","InvalidQuotedIdentifier","InvalidUnterminatedQuotedIdentifier","UnicodeQuotedIdentifier","UnterminatedUnicodeQuotedIdentifier","InvalidUnicodeQuotedIdentifier","InvalidUnterminatedUnicodeQuotedIdentifier","StringConstant","UnterminatedStringConstant","UnicodeEscapeStringConstant","UnterminatedUnicodeEscapeStringConstant","BeginDollarStringConstant","BinaryStringConstant","UnterminatedBinaryStringConstant","InvalidBinaryStringConstant","InvalidUnterminatedBinaryStringConstant","HexadecimalStringConstant","UnterminatedHexadecimalStringConstant","InvalidHexadecimalStringConstant","InvalidUnterminatedHexadecimalStringConstant","Integral","NumericFail","Numeric","PLSQLVARIABLENAME","PLSQLIDENTIFIER","Whitespace","Newline","LineComment","BlockComment","UnterminatedBlockComment","MetaCommand","EndMetaCommand","ErrorCharacter","EscapeStringConstant","UnterminatedEscapeStringConstant","InvalidEscapeStringConstant","InvalidUnterminatedEscapeStringConstant","AfterEscapeStringConstantMode_NotContinued","AfterEscapeStringConstantWithNewlineMode_NotContinued","DollarText","EndDollarStringConstant","AfterEscapeStringConstantWithNewlineMode_Continued"],Vi.modeNames=["DEFAULT_MODE","EscapeStringConstantMode","AfterEscapeStringConstantMode","AfterEscapeStringConstantWithNewlineMode","DollarQuotedStringMode"],Vi.ruleNames=["Dollar","OPEN_PAREN","CLOSE_PAREN","OPEN_BRACKET","CLOSE_BRACKET","COMMA","SEMI","COLON","STAR","EQUAL","DOT","PLUS","MINUS","SLASH","CARET","LT","GT","LESS_LESS","GREATER_GREATER","COLON_EQUALS","LESS_EQUALS","EQUALS_GREATER","GREATER_EQUALS","DOT_DOT","NOT_EQUALS","TYPECAST","PERCENT","PARAM","Operator","OperatorEndingWithPlusMinus","OperatorCharacter","OperatorCharacterNotAllowPlusMinusAtEnd","OperatorCharacterAllowPlusMinusAtEnd","ALL","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","ASYMMETRIC","BOTH","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","CURRENT_CATALOG","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DEFAULT","DEFERRABLE","DESC","DISTINCT","DO","ELSE","EXCEPT","FALSE_P","FETCH","FOR","FOREIGN","FROM","GRANT","GROUP_P","HAVING","IN_P","INITIALLY","INTERSECT","INTO","LATERAL_P","LEADING","LIMIT","LOCALTIME","LOCALTIMESTAMP","NOT","NULL_P","OFFSET","ON","ONLY","OR","ORDER","PLACING","PRIMARY","REFERENCES","RETURNING","SELECT","SESSION_USER","SOME","SYMMETRIC","TABLE","THEN","TO","TRAILING","TRUE_P","UNION","UNIQUE","USER","USING","VARIADIC","WHEN","WHERE","WINDOW","WITH","AUTHORIZATION","BINARY","COLLATION","CONCURRENTLY","CROSS","CURRENT_SCHEMA","FREEZE","FULL","ILIKE","INNER_P","IS","ISNULL","JOIN","LEFT","LIKE","NATURAL","NOTNULL","OUTER_P","OVER","OVERLAPS","RIGHT","SIMILAR","VERBOSE","ABORT_P","ABSOLUTE_P","ACCESS","ACTION","ADD_P","ADMIN","AFTER","AGGREGATE","ALSO","ALTER","ALWAYS","ASSERTION","ASSIGNMENT","AT","ATTRIBUTE","BACKWARD","BEFORE","BEGIN_P","BY","CACHE","CALLED","CASCADE","CASCADED","CATALOG","CHAIN","CHARACTERISTICS","CHECKPOINT","CLASS","CLOSE","CLUSTER","COMMENT","COMMENTS","COMMIT","COMMITTED","CONFIGURATION","CONNECTION","CONSTRAINTS","CONTENT_P","CONTINUE_P","CONVERSION_P","COPY","COST","CSV","CURSOR","CYCLE","DATA_P","DATABASE","DAY_P","DEALLOCATE","DECLARE","DEFAULTS","DEFERRED","DEFINER","DELETE_P","DELIMITER","DELIMITERS","DICTIONARY","DISABLE_P","DISCARD","DOCUMENT_P","DOMAIN_P","DOUBLE_P","DROP","EACH","ENABLE_P","ENCODING","ENCRYPTED","ENUM_P","ESCAPE","EVENT","EXCLUDE","EXCLUDING","EXCLUSIVE","EXECUTE","EXPLAIN","EXTENSION","EXTERNAL","FAMILY","FIRST_P","FOLLOWING","FORCE","FORWARD","FUNCTION","FUNCTIONS","GLOBAL","GRANTED","HANDLER","HEADER_P","HOLD","HOUR_P","IDENTITY_P","IF_P","IMMEDIATE","IMMUTABLE","IMPLICIT_P","INCLUDING","INCREMENT","INDEX","INDEXES","INHERIT","INHERITS","INLINE_P","INSENSITIVE","INSERT","INSTEAD","INVOKER","ISOLATION","KEY","LABEL","LANGUAGE","LARGE_P","LAST_P","LEAKPROOF","LEVEL","LISTEN","LOAD","LOCAL","LOCATION","LOCK_P","MAPPING","MATCH","MATCHED","MATERIALIZED","MAXVALUE","MERGE","MINUTE_P","MINVALUE","MODE","MONTH_P","MOVE","NAME_P","NAMES","NEXT","NO","NOTHING","NOTIFY","NOWAIT","NULLS_P","OBJECT_P","OF","OFF","OIDS","OPERATOR","OPTION","OPTIONS","OWNED","OWNER","PARSER","PARTIAL","PARTITION","PASSING","PASSWORD","PLANS","PRECEDING","PREPARE","PREPARED","PRESERVE","PRIOR","PRIVILEGES","PROCEDURAL","PROCEDURE","PROGRAM","QUOTE","RANGE","READ","REASSIGN","RECHECK","RECURSIVE","REF","REFRESH","REINDEX","RELATIVE_P","RELEASE","RENAME","REPEATABLE","REPLACE","REPLICA","RESET","RESTART","RESTRICT","RETURNS","REVOKE","ROLE","ROLLBACK","ROWS","RULE","SAVEPOINT","SCHEMA","SCROLL","SEARCH","SECOND_P","SECURITY","SEQUENCE","SEQUENCES","SERIALIZABLE","SERVER","SESSION","SET","SHARE","SHOW","SIMPLE","SNAPSHOT","STABLE","STANDALONE_P","START","STATEMENT","STATISTICS","STDIN","STDOUT","STORAGE","STRICT_P","STRIP_P","SYSID","SYSTEM_P","TABLES","TABLESPACE","TEMP","TEMPLATE","TEMPORARY","TEXT_P","TRANSACTION","TRIGGER","TRUNCATE","TRUSTED","TYPE_P","TYPES_P","UNBOUNDED","UNCOMMITTED","UNENCRYPTED","UNKNOWN","UNLISTEN","UNLOGGED","UNTIL","UPDATE","VACUUM","VALID","VALIDATE","VALIDATOR","VARYING","VERSION_P","VIEW","VOLATILE","WHITESPACE_P","WITHOUT","WORK","WRAPPER","WRITE","XML_P","YEAR_P","YES_P","ZONE","BETWEEN","BIGINT","BIT","BOOLEAN_P","CHAR_P","CHARACTER","COALESCE","DEC","DECIMAL_P","EXISTS","EXTRACT","FLOAT_P","GREATEST","INOUT","INT_P","INTEGER","INTERVAL","LEAST","NATIONAL","NCHAR","NONE","NULLIF","NUMERIC","OVERLAY","POSITION","PRECISION","REAL","ROW","SETOF","SMALLINT","SUBSTRING","TIME","TIMESTAMP","TREAT","TRIM","VALUES","VARCHAR","XMLATTRIBUTES","XMLCOMMENT","XMLAGG","XML_IS_WELL_FORMED","XML_IS_WELL_FORMED_DOCUMENT","XML_IS_WELL_FORMED_CONTENT","XPATH","XPATH_EXISTS","XMLCONCAT","XMLELEMENT","XMLEXISTS","XMLFOREST","XMLPARSE","XMLPI","XMLROOT","XMLSERIALIZE","CALL","CURRENT_P","ATTACH","DETACH","EXPRESSION","GENERATED","LOGGED","STORED","INCLUDE","ROUTINE","TRANSFORM","IMPORT_P","POLICY","METHOD","REFERENCING","NEW","OLD","VALUE_P","SUBSCRIPTION","PUBLICATION","OUT_P","END_P","ROUTINES","SCHEMAS","PROCEDURES","INPUT_P","SUPPORT","PARALLEL","SQL_P","DEPENDS","OVERRIDING","CONFLICT","SKIP_P","LOCKED","TIES","ROLLUP","CUBE","GROUPING","SETS","TABLESAMPLE","ORDINALITY","XMLTABLE","COLUMNS","XMLNAMESPACES","ROWTYPE","NORMALIZED","WITHIN","FILTER","GROUPS","OTHERS","NFC","NFD","NFKC","NFKD","UESCAPE","VIEWS","NORMALIZE","DUMP","PRINT_STRICT_PARAMS","VARIABLE_CONFLICT","ERROR","USE_VARIABLE","USE_COLUMN","ALIAS","CONSTANT","PERFORM","GET","DIAGNOSTICS","STACKED","ELSIF","WHILE","REVERSE","FOREACH","SLICE","EXIT","RETURN","QUERY","RAISE","SQLSTATE","DEBUG","LOG","INFO","NOTICE","WARNING","EXCEPTION","ASSERT","LOOP","OPEN","ABS","CBRT","CEIL","CEILING","DEGREES","DIV","EXP","FACTORIAL","FLOOR","GCD","LCM","LN","LOG10","MIN_SCALE","MOD","PI","POWER","RADIANS","ROUND","SCALE","SIGN","SQRT","TRIM_SCALE","TRUNC","WIDTH_BUCKET","RANDOM","SETSEED","ACOS","ACOSD","ASIN","ASIND","ATAN","ATAND","ATAN2","ATAN2D","COS","COSD","COT","COTD","SIN","SIND","TAN","TAND","SINH","COSH","TANH","ASINH","ACOSH","ATANH","BIT_LENGTH","CHAR_LENGTH","CHARACTER_LENGTH","LOWER","OCTET_LENGTH","UPPER","ASCII","BTRIM","CHR","CONCAT","CONCAT_WS","FORMAT","INITCAP","LENGTH","LPAD","LTRIM","MD5","PARSE_IDENT","PG_CLIENT_ENCODING","QUOTE_IDENT","QUOTE_LITERAL","QUOTE_NULLABLE","REGEXP_COUNT","REGEXP_INSTR","REGEXP_LIKE","REGEXP_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","REGEXP_SUBSTR","REPEAT","RPAD","RTRIM","SPLIT_PART","STARTS_WITH","STRING_TO_ARRAY","STRING_TO_TABLE","STRPOS","SUBSTR","TO_ASCII","TO_HEX","TRANSLATE","UNISTR","AGE","CLOCK_TIMESTAMP","DATE_BIN","DATE_PART","DATE_TRUNC","ISFINITE","JUSTIFY_DAYS","JUSTIFY_HOURS","JUSTIFY_INTERVAL","MAKE_DATE","MAKE_INTERVAL","MAKE_TIME","MAKE_TIMESTAMP","MAKE_TIMESTAMPTZ","NOW","STATEMENT_TIMESTAMP","TIMEOFDAY","TRANSACTION_TIMESTAMP","TO_TIMESTAMP","TO_CHAR","TO_DATE","TO_NUMBER","Identifier","IdentifierStartChar","IdentifierChar","StrictIdentifierChar","QuotedIdentifier","UnterminatedQuotedIdentifier","InvalidQuotedIdentifier","InvalidUnterminatedQuotedIdentifier","UnicodeQuotedIdentifier","UnterminatedUnicodeQuotedIdentifier","InvalidUnicodeQuotedIdentifier","InvalidUnterminatedUnicodeQuotedIdentifier","StringConstant","UnterminatedStringConstant","BeginEscapeStringConstant","UnicodeEscapeStringConstant","UnterminatedUnicodeEscapeStringConstant","BeginDollarStringConstant","Tag","BinaryStringConstant","UnterminatedBinaryStringConstant","InvalidBinaryStringConstant","InvalidUnterminatedBinaryStringConstant","HexadecimalStringConstant","UnterminatedHexadecimalStringConstant","InvalidHexadecimalStringConstant","InvalidUnterminatedHexadecimalStringConstant","Integral","NumericFail","Numeric","Digits","PLSQLVARIABLENAME","PLSQLIDENTIFIER","Whitespace","Newline","LineComment","BlockComment","UnterminatedBlockComment","MetaCommand","EndMetaCommand","ErrorCharacter","EscapeStringConstant","UnterminatedEscapeStringConstant","EscapeStringText","InvalidEscapeStringConstant","InvalidUnterminatedEscapeStringConstant","InvalidEscapeStringText","AfterEscapeStringConstantMode_Whitespace","AfterEscapeStringConstantMode_Newline","AfterEscapeStringConstantMode_NotContinued","AfterEscapeStringConstantWithNewlineMode_Whitespace","AfterEscapeStringConstantWithNewlineMode_Newline","AfterEscapeStringConstantWithNewlineMode_Continued","AfterEscapeStringConstantWithNewlineMode_NotContinued","DollarText","EndDollarStringConstant"],Vi._serializedATN=[4,0,679,6791,6,-1,6,-1,6,-1,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350,2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356,7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361,2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367,7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372,2,373,7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378,7,378,2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383,2,384,7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389,7,389,2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394,2,395,7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400,7,400,2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405,2,406,7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411,7,411,2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,2,417,7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421,7,421,2,422,7,422,2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427,7,427,2,428,7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433,7,433,2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438,2,439,7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444,7,444,2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449,2,450,7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455,7,455,2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460,2,461,7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466,7,466,2,467,7,467,2,468,7,468,2,469,7,469,2,470,7,470,2,471,7,471,2,472,7,472,2,473,7,473,2,474,7,474,2,475,7,475,2,476,7,476,2,477,7,477,2,478,7,478,2,479,7,479,2,480,7,480,2,481,7,481,2,482,7,482,2,483,7,483,2,484,7,484,2,485,7,485,2,486,7,486,2,487,7,487,2,488,7,488,2,489,7,489,2,490,7,490,2,491,7,491,2,492,7,492,2,493,7,493,2,494,7,494,2,495,7,495,2,496,7,496,2,497,7,497,2,498,7,498,2,499,7,499,2,500,7,500,2,501,7,501,2,502,7,502,2,503,7,503,2,504,7,504,2,505,7,505,2,506,7,506,2,507,7,507,2,508,7,508,2,509,7,509,2,510,7,510,2,511,7,511,2,512,7,512,2,513,7,513,2,514,7,514,2,515,7,515,2,516,7,516,2,517,7,517,2,518,7,518,2,519,7,519,2,520,7,520,2,521,7,521,2,522,7,522,2,523,7,523,2,524,7,524,2,525,7,525,2,526,7,526,2,527,7,527,2,528,7,528,2,529,7,529,2,530,7,530,2,531,7,531,2,532,7,532,2,533,7,533,2,534,7,534,2,535,7,535,2,536,7,536,2,537,7,537,2,538,7,538,2,539,7,539,2,540,7,540,2,541,7,541,2,542,7,542,2,543,7,543,2,544,7,544,2,545,7,545,2,546,7,546,2,547,7,547,2,548,7,548,2,549,7,549,2,550,7,550,2,551,7,551,2,552,7,552,2,553,7,553,2,554,7,554,2,555,7,555,2,556,7,556,2,557,7,557,2,558,7,558,2,559,7,559,2,560,7,560,2,561,7,561,2,562,7,562,2,563,7,563,2,564,7,564,2,565,7,565,2,566,7,566,2,567,7,567,2,568,7,568,2,569,7,569,2,570,7,570,2,571,7,571,2,572,7,572,2,573,7,573,2,574,7,574,2,575,7,575,2,576,7,576,2,577,7,577,2,578,7,578,2,579,7,579,2,580,7,580,2,581,7,581,2,582,7,582,2,583,7,583,2,584,7,584,2,585,7,585,2,586,7,586,2,587,7,587,2,588,7,588,2,589,7,589,2,590,7,590,2,591,7,591,2,592,7,592,2,593,7,593,2,594,7,594,2,595,7,595,2,596,7,596,2,597,7,597,2,598,7,598,2,599,7,599,2,600,7,600,2,601,7,601,2,602,7,602,2,603,7,603,2,604,7,604,2,605,7,605,2,606,7,606,2,607,7,607,2,608,7,608,2,609,7,609,2,610,7,610,2,611,7,611,2,612,7,612,2,613,7,613,2,614,7,614,2,615,7,615,2,616,7,616,2,617,7,617,2,618,7,618,2,619,7,619,2,620,7,620,2,621,7,621,2,622,7,622,2,623,7,623,2,624,7,624,2,625,7,625,2,626,7,626,2,627,7,627,2,628,7,628,2,629,7,629,2,630,7,630,2,631,7,631,2,632,7,632,2,633,7,633,2,634,7,634,2,635,7,635,2,636,7,636,2,637,7,637,2,638,7,638,2,639,7,639,2,640,7,640,2,641,7,641,2,642,7,642,2,643,7,643,2,644,7,644,2,645,7,645,2,646,7,646,2,647,7,647,2,648,7,648,2,649,7,649,2,650,7,650,2,651,7,651,2,652,7,652,2,653,7,653,2,654,7,654,2,655,7,655,2,656,7,656,2,657,7,657,2,658,7,658,2,659,7,659,2,660,7,660,2,661,7,661,2,662,7,662,2,663,7,663,2,664,7,664,2,665,7,665,2,666,7,666,2,667,7,667,2,668,7,668,2,669,7,669,2,670,7,670,2,671,7,671,2,672,7,672,2,673,7,673,2,674,7,674,2,675,7,675,2,676,7,676,2,677,7,677,2,678,7,678,2,679,7,679,2,680,7,680,2,681,7,681,2,682,7,682,2,683,7,683,2,684,7,684,2,685,7,685,2,686,7,686,2,687,7,687,2,688,7,688,2,689,7,689,2,690,7,690,2,691,7,691,2,692,7,692,2,693,7,693,2,694,7,694,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,12,1,12,1,13,1,13,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,19,1,20,1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1,26,1,26,1,27,1,27,4,27,1461,8,27,11,27,12,27,1462,1,28,1,28,1,28,1,28,4,28,1469,8,28,11,28,12,28,1470,1,28,1,28,1,28,3,28,1476,8,28,1,28,1,28,4,28,1480,8,28,11,28,12,28,1481,1,28,3,28,1485,8,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,5,29,1494,8,29,10,29,12,29,1497,9,29,1,29,1,29,3,29,1501,8,29,1,29,1,29,1,29,4,29,1506,8,29,11,29,12,29,1507,1,29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,179,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,201,1,201,1,201,1,201,1,201,1,201,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,210,1,210,1,210,1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,220,1,220,1,221,1,221,1,221,1,221,1,221,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,229,1,229,1,229,1,229,1,229,1,229,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,235,1,235,1,235,1,235,1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,236,1,236,1,236,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,239,1,239,1,239,1,239,1,240,1,240,1,240,1,240,1,240,1,240,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,242,1,242,1,242,1,242,1,242,1,242,1,243,1,243,1,243,1,243,1,243,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,245,1,245,1,245,1,245,1,245,1,245,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,247,1,247,1,247,1,247,1,247,1,248,1,248,1,248,1,248,1,248,1,248,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,250,1,250,1,250,1,250,1,250,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,252,1,252,1,252,1,252,1,252,1,252,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,256,1,256,1,256,1,256,1,256,1,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,259,1,259,1,259,1,259,1,259,1,260,1,260,1,260,1,260,1,260,1,260,1,261,1,261,1,261,1,261,1,261,1,262,1,262,1,262,1,262,1,262,1,263,1,263,1,263,1,263,1,263,1,263,1,264,1,264,1,264,1,264,1,264,1,265,1,265,1,265,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,269,1,269,1,269,1,269,1,269,1,269,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,271,1,271,1,271,1,272,1,272,1,272,1,272,1,273,1,273,1,273,1,273,1,273,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,277,1,277,1,277,1,277,1,277,1,277,1,278,1,278,1,278,1,278,1,278,1,278,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,284,1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,287,1,287,1,287,1,287,1,287,1,287,1,287,1,287,1,287,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,289,1,289,1,289,1,289,1,289,1,289,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,294,1,294,1,294,1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295,1,296,1,296,1,296,1,296,1,296,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,298,1,298,1,298,1,298,1,298,1,298,1,298,1,298,1,299,1,299,1,299,1,299,1,299,1,299,1,299,1,299,1,299,1,299,1,300,1,300,1,300,1,300,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308,1,309,1,309,1,309,1,309,1,309,1,309,1,310,1,310,1,310,1,310,1,310,1,310,1,310,1,310,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,312,1,312,1,312,1,312,1,312,1,312,1,312,1,312,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,314,1,314,1,314,1,314,1,314,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,316,1,316,1,316,1,316,1,316,1,317,1,317,1,317,1,317,1,317,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,320,1,320,1,320,1,320,1,320,1,320,1,320,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,329,1,329,1,329,1,329,1,330,1,330,1,330,1,330,1,330,1,330,1,331,1,331,1,331,1,331,1,331,1,332,1,332,1,332,1,332,1,332,1,332,1,332,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,334,1,334,1,334,1,334,1,334,1,334,1,334,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,336,1,336,1,336,1,336,1,336,1,336,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,339,1,339,1,339,1,339,1,339,1,339,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,343,1,343,1,343,1,343,1,343,1,343,1,344,1,344,1,344,1,344,1,344,1,344,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,346,1,346,1,346,1,346,1,346,1,346,1,346,1,347,1,347,1,347,1,347,1,347,1,347,1,347,1,347,1,347,1,347,1,347,1,348,1,348,1,348,1,348,1,348,1,349,1,349,1,349,1,349,1,349,1,349,1,349,1,349,1,349,1,350,1,350,1,350,1,350,1,350,1,350,1,350,1,350,1,350,1,350,1,351,1,351,1,351,1,351,1,351,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,356,1,356,1,356,1,356,1,356,1,357,1,357,1,357,1,357,1,357,1,357,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,363,1,363,1,363,1,363,1,363,1,363,1,363,1,363,1,363,1,364,1,364,1,364,1,364,1,364,1,364,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,367,1,367,1,367,1,367,1,367,1,367,1,368,1,368,1,368,1,368,1,368,1,368,1,368,1,368,1,368,1,369,1,369,1,369,1,369,1,369,1,369,1,369,1,369,1,369,1,369,1,370,1,370,1,370,1,370,1,370,1,370,1,370,1,370,1,371,1,371,1,371,1,371,1,371,1,371,1,371,1,371,1,372,1,372,1,372,1,372,1,372,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,374,1,374,1,374,1,374,1,374,1,374,1,374,1,374,1,374,1,374,1,374,1,375,1,375,1,375,1,375,1,375,1,375,1,375,1,375,1,376,1,376,1,376,1,376,1,376,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,378,1,378,1,378,1,378,1,378,1,378,1,379,1,379,1,379,1,379,1,380,1,380,1,380,1,380,1,380,1,381,1,381,1,381,1,381,1,382,1,382,1,382,1,382,1,382,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,384,1,384,1,384,1,384,1,384,1,384,1,384,1,385,1,385,1,385,1,385,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,387,1,387,1,387,1,387,1,387,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,389,1,389,1,389,1,389,1,389,1,389,1,389,1,389,1,389,1,390,1,390,1,390,1,390,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,394,1,394,1,394,1,394,1,394,1,394,1,395,1,395,1,395,1,395,1,395,1,395,1,395,1,395,1,395,1,396,1,396,1,396,1,396,1,396,1,396,1,397,1,397,1,397,1,397,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,400,1,400,1,400,1,400,1,400,1,400,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,402,1,402,1,402,1,402,1,402,1,402,1,403,1,403,1,403,1,403,1,403,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,406,1,406,1,406,1,406,1,406,1,406,1,406,1,406,1,407,1,407,1,407,1,407,1,407,1,407,1,407,1,407,1,407,1,408,1,408,1,408,1,408,1,408,1,408,1,408,1,408,1,408,1,408,1,409,1,409,1,409,1,409,1,409,1,410,1,410,1,410,1,410,1,411,1,411,1,411,1,411,1,411,1,411,1,412,1,412,1,412,1,412,1,412,1,412,1,412,1,412,1,412,1,413,1,413,1,413,1,413,1,413,1,413,1,413,1,413,1,413,1,413,1,414,1,414,1,414,1,414,1,414,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,416,1,416,1,416,1,416,1,416,1,416,1,417,1,417,1,417,1,417,1,417,1,418,1,418,1,418,1,418,1,418,1,418,1,418,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,426,1,426,1,426,1,426,1,426,1,426,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,428,1,428,1,428,1,428,1,428,1,428,1,428,1,428,1,428,1,428,1,429,1,429,1,429,1,429,1,429,1,429,1,429,1,429,1,429,1,429,1,429,1,430,1,430,1,430,1,430,1,430,1,430,1,430,1,430,1,430,1,430,1,431,1,431,1,431,1,431,1,431,1,431,1,431,1,431,1,431,1,431,1,432,1,432,1,432,1,432,1,432,1,432,1,432,1,432,1,432,1,433,1,433,1,433,1,433,1,433,1,433,1,434,1,434,1,434,1,434,1,434,1,434,1,434,1,434,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,436,1,436,1,436,1,436,1,436,1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,439,1,439,1,439,1,439,1,439,1,439,1,439,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,441,1,441,1,441,1,441,1,441,1,441,1,441,1,441,1,441,1,441,1,442,1,442,1,442,1,442,1,442,1,442,1,442,1,443,1,443,1,443,1,443,1,443,1,443,1,443,1,444,1,444,1,444,1,444,1,444,1,444,1,444,1,444,1,445,1,445,1,445,1,445,1,445,1,445,1,445,1,445,1,446,1,446,1,446,1,446,1,446,1,446,1,446,1,446,1,446,1,446,1,447,1,447,1,447,1,447,1,447,1,447,1,447,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,449,1,449,1,449,1,449,1,449,1,449,1,449,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,451,1,451,1,451,1,451,1,452,1,452,1,452,1,452,1,453,1,453,1,453,1,453,1,453,1,453,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,455,1,455,1,455,1,455,1,455,1,455,1,455,1,455,1,455,1,455,1,455,1,455,1,456,1,456,1,456,1,456,1,457,1,457,1,457,1,457,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,459,1,459,1,459,1,459,1,459,1,459,1,459,1,459,1,460,1,460,1,460,1,460,1,460,1,460,1,460,1,460,1,460,1,460,1,460,1,461,1,461,1,461,1,461,1,461,1,461,1,462,1,462,1,462,1,462,1,462,1,462,1,462,1,462,1,463,1,463,1,463,1,463,1,463,1,463,1,463,1,463,1,463,1,464,1,464,1,464,1,464,1,465,1,465,1,465,1,465,1,465,1,465,1,465,1,465,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,467,1,467,1,467,1,467,1,467,1,467,1,467,1,467,1,467,1,468,1,468,1,468,1,468,1,468,1,469,1,469,1,469,1,469,1,469,1,469,1,469,1,470,1,470,1,470,1,470,1,470,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,472,1,472,1,472,1,472,1,472,1,473,1,473,1,473,1,473,1,473,1,473,1,473,1,473,1,473,1,474,1,474,1,474,1,474,1,474,1,475,1,475,1,475,1,475,1,475,1,475,1,475,1,475,1,475,1,475,1,475,1,475,1,476,1,476,1,476,1,476,1,476,1,476,1,476,1,476,1,476,1,476,1,476,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,486,1,486,1,486,1,486,1,487,1,487,1,487,1,487,1,488,1,488,1,488,1,488,1,488,1,489,1,489,1,489,1,489,1,489,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,491,1,491,1,491,1,491,1,491,1,491,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,493,1,493,1,493,1,493,1,493,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,496,1,496,1,496,1,496,1,496,1,496,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,499,1,499,1,499,1,499,1,499,1,499,1,500,1,500,1,500,1,500,1,500,1,500,1,500,1,500,1,500,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,502,1,502,1,502,1,502,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,504,1,504,1,504,1,504,1,504,1,504,1,504,1,504,1,505,1,505,1,505,1,505,1,505,1,505,1,506,1,506,1,506,1,506,1,506,1,506,1,507,1,507,1,507,1,507,1,507,1,507,1,507,1,507,1,508,1,508,1,508,1,508,1,508,1,508,1,508,1,508,1,509,1,509,1,509,1,509,1,509,1,509,1,510,1,510,1,510,1,510,1,510,1,511,1,511,1,511,1,511,1,511,1,511,1,511,1,512,1,512,1,512,1,512,1,512,1,512,1,513,1,513,1,513,1,513,1,513,1,513,1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,515,1,515,1,515,1,515,1,515,1,515,1,516,1,516,1,516,1,516,1,517,1,517,1,517,1,517,1,517,1,518,1,518,1,518,1,518,1,518,1,518,1,518,1,519,1,519,1,519,1,519,1,519,1,519,1,519,1,519,1,520,1,520,1,520,1,520,1,520,1,520,1,520,1,520,1,520,1,520,1,521,1,521,1,521,1,521,1,521,1,521,1,521,1,522,1,522,1,522,1,522,1,522,1,523,1,523,1,523,1,523,1,523,1,524,1,524,1,524,1,524,1,525,1,525,1,525,1,525,1,525,1,526,1,526,1,526,1,526,1,526,1,527,1,527,1,527,1,527,1,527,1,527,1,527,1,527,1,528,1,528,1,528,1,528,1,528,1,528,1,528,1,528,1,529,1,529,1,529,1,529,1,530,1,530,1,530,1,530,1,531,1,531,1,531,1,531,1,531,1,531,1,531,1,531,1,531,1,531,1,532,1,532,1,532,1,532,1,532,1,532,1,533,1,533,1,533,1,533,1,534,1,534,1,534,1,534,1,535,1,535,1,535,1,536,1,536,1,536,1,536,1,536,1,536,1,537,1,537,1,537,1,537,1,537,1,537,1,537,1,537,1,537,1,537,1,538,1,538,1,538,1,538,1,539,1,539,1,539,1,540,1,540,1,540,1,540,1,540,1,540,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,542,1,542,1,542,1,542,1,542,1,542,1,543,1,543,1,543,1,543,1,543,1,543,1,544,1,544,1,544,1,544,1,544,1,545,1,545,1,545,1,545,1,545,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,547,1,547,1,547,1,547,1,547,1,547,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,549,1,549,1,549,1,549,1,549,1,549,1,549,1,550,1,550,1,550,1,550,1,550,1,550,1,550,1,550,1,551,1,551,1,551,1,551,1,551,1,552,1,552,1,552,1,552,1,552,1,552,1,553,1,553,1,553,1,553,1,553,1,554,1,554,1,554,1,554,1,554,1,554,1,555,1,555,1,555,1,555,1,555,1,556,1,556,1,556,1,556,1,556,1,556,1,557,1,557,1,557,1,557,1,557,1,557,1,558,1,558,1,558,1,558,1,558,1,558,1,558,1,559,1,559,1,559,1,559,1,560,1,560,1,560,1,560,1,560,1,561,1,561,1,561,1,561,1,562,1,562,1,562,1,562,1,562,1,563,1,563,1,563,1,563,1,564,1,564,1,564,1,564,1,564,1,565,1,565,1,565,1,565,1,566,1,566,1,566,1,566,1,566,1,567,1,567,1,567,1,567,1,567,1,568,1,568,1,568,1,568,1,568,1,569,1,569,1,569,1,569,1,569,1,570,1,570,1,570,1,570,1,570,1,570,1,571,1,571,1,571,1,571,1,571,1,571,1,572,1,572,1,572,1,572,1,572,1,572,1,573,1,573,1,573,1,573,1,573,1,573,1,573,1,573,1,573,1,573,1,573,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,576,1,576,1,576,1,576,1,576,1,576,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,578,1,578,1,578,1,578,1,578,1,578,1,579,1,579,1,579,1,579,1,579,1,579,1,580,1,580,1,580,1,580,1,580,1,580,1,581,1,581,1,581,1,581,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,587,1,587,1,587,1,587,1,587,1,588,1,588,1,588,1,588,1,588,1,588,1,589,1,589,1,589,1,589,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,595,1,595,1,595,1,595,1,595,1,595,1,595,1,595,1,595,1,595,1,595,1,595,1,595,1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,597,1,597,1,597,1,597,1,597,1,597,1,597,1,597,1,597,1,597,1,597,1,597,1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,600,1,600,1,600,1,600,1,600,1,600,1,600,1,600,1,600,1,600,1,600,1,600,1,600,1,600,1,600,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,604,1,604,1,604,1,604,1,604,1,604,1,604,1,605,1,605,1,605,1,605,1,605,1,606,1,606,1,606,1,606,1,606,1,606,1,607,1,607,1,607,1,607,1,607,1,607,1,607,1,607,1,607,1,607,1,607,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,611,1,611,1,611,1,611,1,611,1,611,1,611,1,612,1,612,1,612,1,612,1,612,1,612,1,612,1,613,1,613,1,613,1,613,1,613,1,613,1,613,1,613,1,613,1,614,1,614,1,614,1,614,1,614,1,614,1,614,1,615,1,615,1,615,1,615,1,615,1,615,1,615,1,615,1,615,1,615,1,616,1,616,1,616,1,616,1,616,1,616,1,616,1,617,1,617,1,617,1,617,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,619,1,619,1,619,1,619,1,619,1,619,1,619,1,619,1,619,1,620,1,620,1,620,1,620,1,620,1,620,1,620,1,620,1,620,1,620,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,628,1,628,1,628,1,628,1,628,1,628,1,628,1,628,1,628,1,628,1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,631,1,631,1,631,1,631,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,633,1,633,1,633,1,633,1,633,1,633,1,633,1,633,1,633,1,633,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,635,1,635,1,635,1,635,1,635,1,635,1,635,1,635,1,635,1,635,1,635,1,635,1,635,1,636,1,636,1,636,1,636,1,636,1,636,1,636,1,636,1,637,1,637,1,637,1,637,1,637,1,637,1,637,1,637,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,639,1,639,5,639,6323,8,639,10,639,12,639,6326,9,639,1,640,1,640,1,640,1,640,1,640,1,640,3,640,6334,8,640,1,641,1,641,3,641,6338,8,641,1,642,1,642,3,642,6342,8,642,1,643,1,643,1,643,1,644,1,644,1,644,1,644,5,644,6351,8,644,10,644,12,644,6354,9,644,1,645,1,645,1,645,1,646,1,646,1,646,1,646,5,646,6363,8,646,10,646,12,646,6366,9,646,1,647,1,647,1,647,1,647,1,648,1,648,1,648,1,648,1,649,1,649,1,649,1,649,1,650,1,650,1,650,1,650,1,651,1,651,1,651,1,652,1,652,1,652,1,652,5,652,6391,8,652,10,652,12,652,6394,9,652,1,653,1,653,1,653,1,653,1,653,1,653,1,654,1,654,1,654,1,655,1,655,1,655,1,655,1,656,1,656,3,656,6411,8,656,1,656,1,656,1,656,1,656,1,656,1,657,1,657,5,657,6420,8,657,10,657,12,657,6423,9,657,1,658,1,658,1,658,1,659,1,659,1,659,5,659,6431,8,659,10,659,12,659,6434,9,659,1,660,1,660,1,660,1,661,1,661,1,661,1,662,1,662,1,662,1,663,1,663,1,663,5,663,6448,8,663,10,663,12,663,6451,9,663,1,664,1,664,1,664,1,665,1,665,1,665,1,666,1,666,1,667,1,667,1,667,1,667,1,667,1,667,1,668,1,668,1,668,3,668,6470,8,668,1,668,1,668,3,668,6474,8,668,1,668,3,668,6477,8,668,1,668,1,668,1,668,1,668,3,668,6483,8,668,1,668,3,668,6486,8,668,1,668,1,668,1,668,3,668,6491,8,668,1,668,1,668,3,668,6495,8,668,1,669,4,669,6498,8,669,11,669,12,669,6499,1,670,1,670,1,670,5,670,6505,8,670,10,670,12,670,6508,9,670,1,671,1,671,1,671,1,671,1,671,1,671,1,671,1,671,5,671,6518,8,671,10,671,12,671,6521,9,671,1,671,1,671,1,672,4,672,6526,8,672,11,672,12,672,6527,1,672,1,672,1,673,1,673,3,673,6534,8,673,1,673,3,673,6537,8,673,1,673,1,673,1,674,1,674,1,674,1,674,5,674,6545,8,674,10,674,12,674,6548,9,674,1,674,1,674,1,675,1,675,1,675,1,675,5,675,6556,8,675,10,675,12,675,6559,9,675,1,675,1,675,1,675,4,675,6564,8,675,11,675,12,675,6565,1,675,1,675,4,675,6570,8,675,11,675,12,675,6571,1,675,5,675,6575,8,675,10,675,12,675,6578,9,675,1,675,5,675,6581,8,675,10,675,12,675,6584,9,675,1,675,1,675,1,675,1,675,1,675,1,676,1,676,1,676,1,676,5,676,6595,8,676,10,676,12,676,6598,9,676,1,676,1,676,1,676,4,676,6603,8,676,11,676,12,676,6604,1,676,1,676,4,676,6609,8,676,11,676,12,676,6610,1,676,3,676,6614,8,676,5,676,6616,8,676,10,676,12,676,6619,9,676,1,676,4,676,6622,8,676,11,676,12,676,6623,1,676,4,676,6627,8,676,11,676,12,676,6628,1,676,5,676,6632,8,676,10,676,12,676,6635,9,676,1,676,3,676,6638,8,676,1,676,1,676,1,677,1,677,1,677,1,677,5,677,6646,8,677,10,677,12,677,6649,9,677,1,677,5,677,6652,8,677,10,677,12,677,6655,9,677,1,677,1,677,5,677,6659,8,677,10,677,12,677,6662,9,677,3,677,6664,8,677,1,678,1,678,1,678,1,679,1,679,1,680,1,680,1,680,1,680,1,680,1,681,1,681,3,681,6678,8,681,1,681,1,681,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,3,682,6702,8,682,1,682,5,682,6705,8,682,10,682,12,682,6708,9,682,1,683,1,683,1,683,1,683,1,683,1,684,1,684,3,684,6717,8,684,1,684,1,684,1,685,1,685,1,685,1,685,1,685,5,685,6726,8,685,10,685,12,685,6729,9,685,1,686,1,686,1,686,1,686,1,686,1,687,1,687,1,687,1,687,1,687,1,687,1,688,1,688,1,688,1,688,1,688,1,689,1,689,1,689,1,689,1,689,1,690,1,690,1,690,1,690,1,690,1,691,1,691,1,691,1,691,1,691,1,692,1,692,1,692,1,692,1,692,1,693,4,693,6768,8,693,11,693,12,693,6769,1,693,1,693,5,693,6774,8,693,10,693,12,693,6777,9,693,3,693,6779,8,693,1,694,1,694,3,694,6783,8,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,0,0,695,5,1,7,2,9,3,11,4,13,5,15,6,17,7,19,8,21,9,23,10,25,11,27,12,29,13,31,14,33,15,35,16,37,17,39,18,41,19,43,20,45,21,47,22,49,23,51,24,53,25,55,26,57,27,59,28,61,29,63,0,65,0,67,0,69,0,71,30,73,31,75,32,77,33,79,34,81,35,83,36,85,37,87,38,89,39,91,40,93,41,95,42,97,43,99,44,101,45,103,46,105,47,107,48,109,49,111,50,113,51,115,52,117,53,119,54,121,55,123,56,125,57,127,58,129,59,131,60,133,61,135,62,137,63,139,64,141,65,143,66,145,67,147,68,149,69,151,70,153,71,155,72,157,73,159,74,161,75,163,76,165,77,167,78,169,79,171,80,173,81,175,82,177,83,179,84,181,85,183,86,185,87,187,88,189,89,191,90,193,91,195,92,197,93,199,94,201,95,203,96,205,97,207,98,209,99,211,100,213,101,215,102,217,103,219,104,221,105,223,106,225,107,227,108,229,109,231,110,233,111,235,112,237,113,239,114,241,115,243,116,245,117,247,118,249,119,251,120,253,121,255,122,257,123,259,124,261,125,263,126,265,127,267,128,269,129,271,130,273,131,275,132,277,133,279,134,281,135,283,136,285,137,287,138,289,139,291,140,293,141,295,142,297,143,299,144,301,145,303,146,305,147,307,148,309,149,311,150,313,151,315,152,317,153,319,154,321,155,323,156,325,157,327,158,329,159,331,160,333,161,335,162,337,163,339,164,341,165,343,166,345,167,347,168,349,169,351,170,353,171,355,172,357,173,359,174,361,175,363,176,365,177,367,178,369,179,371,180,373,181,375,182,377,183,379,184,381,185,383,186,385,187,387,188,389,189,391,190,393,191,395,192,397,193,399,194,401,195,403,196,405,197,407,198,409,199,411,200,413,201,415,202,417,203,419,204,421,205,423,206,425,207,427,208,429,209,431,210,433,211,435,212,437,213,439,214,441,215,443,216,445,217,447,218,449,219,451,220,453,221,455,222,457,223,459,224,461,225,463,226,465,227,467,228,469,229,471,230,473,231,475,232,477,233,479,234,481,235,483,236,485,237,487,238,489,239,491,240,493,241,495,242,497,243,499,244,501,245,503,246,505,247,507,248,509,249,511,250,513,251,515,252,517,253,519,254,521,255,523,256,525,257,527,258,529,259,531,260,533,261,535,262,537,263,539,264,541,265,543,266,545,267,547,268,549,269,551,270,553,271,555,272,557,273,559,274,561,275,563,276,565,277,567,278,569,279,571,280,573,281,575,282,577,283,579,284,581,285,583,286,585,287,587,288,589,289,591,290,593,291,595,292,597,293,599,294,601,295,603,296,605,297,607,298,609,299,611,300,613,301,615,302,617,303,619,304,621,305,623,306,625,307,627,308,629,309,631,310,633,311,635,312,637,313,639,314,641,315,643,316,645,317,647,318,649,319,651,320,653,321,655,322,657,323,659,324,661,325,663,326,665,327,667,328,669,329,671,330,673,331,675,332,677,333,679,334,681,335,683,336,685,337,687,338,689,339,691,340,693,341,695,342,697,343,699,344,701,345,703,346,705,347,707,348,709,349,711,350,713,351,715,352,717,353,719,354,721,355,723,356,725,357,727,358,729,359,731,360,733,361,735,362,737,363,739,364,741,365,743,366,745,367,747,368,749,369,751,370,753,371,755,372,757,373,759,374,761,375,763,376,765,377,767,378,769,379,771,380,773,381,775,382,777,383,779,384,781,385,783,386,785,387,787,388,789,389,791,390,793,391,795,392,797,393,799,394,801,395,803,396,805,397,807,398,809,399,811,400,813,401,815,402,817,403,819,404,821,405,823,406,825,407,827,408,829,409,831,410,833,411,835,412,837,413,839,414,841,415,843,416,845,417,847,418,849,419,851,420,853,421,855,422,857,423,859,424,861,425,863,426,865,427,867,428,869,429,871,430,873,431,875,432,877,433,879,434,881,435,883,436,885,437,887,438,889,439,891,440,893,441,895,442,897,443,899,444,901,445,903,446,905,447,907,448,909,449,911,450,913,451,915,452,917,453,919,454,921,455,923,456,925,457,927,458,929,459,931,460,933,461,935,462,937,463,939,464,941,465,943,466,945,467,947,468,949,469,951,470,953,471,955,472,957,473,959,474,961,475,963,476,965,477,967,478,969,479,971,480,973,481,975,482,977,483,979,484,981,485,983,486,985,487,987,488,989,489,991,490,993,491,995,492,997,493,999,494,1001,495,1003,496,1005,497,1007,498,1009,499,1011,500,1013,501,1015,502,1017,503,1019,504,1021,505,1023,506,1025,507,1027,508,1029,509,1031,510,1033,511,1035,512,1037,513,1039,514,1041,515,1043,516,1045,517,1047,518,1049,519,1051,520,1053,521,1055,522,1057,523,1059,524,1061,525,1063,526,1065,527,1067,528,1069,529,1071,530,1073,531,1075,532,1077,533,1079,534,1081,535,1083,536,1085,537,1087,538,1089,539,1091,540,1093,541,1095,542,1097,543,1099,544,1101,545,1103,546,1105,547,1107,548,1109,549,1111,550,1113,551,1115,552,1117,553,1119,554,1121,555,1123,556,1125,557,1127,558,1129,559,1131,560,1133,561,1135,562,1137,563,1139,564,1141,565,1143,566,1145,567,1147,568,1149,569,1151,570,1153,571,1155,572,1157,573,1159,574,1161,575,1163,576,1165,577,1167,578,1169,579,1171,580,1173,581,1175,582,1177,583,1179,584,1181,585,1183,586,1185,587,1187,588,1189,589,1191,590,1193,591,1195,592,1197,593,1199,594,1201,595,1203,596,1205,597,1207,598,1209,599,1211,600,1213,601,1215,602,1217,603,1219,604,1221,605,1223,606,1225,607,1227,608,1229,609,1231,610,1233,611,1235,612,1237,613,1239,614,1241,615,1243,616,1245,617,1247,618,1249,619,1251,620,1253,621,1255,622,1257,623,1259,624,1261,625,1263,626,1265,627,1267,628,1269,629,1271,630,1273,631,1275,632,1277,633,1279,634,1281,635,1283,636,1285,0,1287,0,1289,0,1291,637,1293,638,1295,639,1297,640,1299,641,1301,642,1303,643,1305,644,1307,645,1309,646,1311,0,1313,647,1315,648,1317,649,1319,0,1321,650,1323,651,1325,652,1327,653,1329,654,1331,655,1333,656,1335,657,1337,658,1339,659,1341,660,1343,0,1345,661,1347,662,1349,663,1351,664,1353,665,1355,666,1357,667,1359,668,1361,669,1363,670,1365,671,1367,672,1369,0,1371,673,1373,674,1375,0,1377,0,1379,0,1381,675,1383,0,1385,0,1387,679,1389,676,1391,677,1393,678,5,0,1,2,3,4,51,1,0,48,57,2,0,43,43,45,45,9,0,33,33,35,35,37,38,42,42,60,64,94,94,96,96,124,124,126,126,2,0,42,43,60,62,8,0,33,33,35,35,37,38,63,64,94,94,96,96,124,124,126,126,2,0,65,65,97,97,2,0,76,76,108,108,2,0,78,78,110,110,2,0,89,89,121,121,2,0,83,83,115,115,2,0,69,69,101,101,2,0,90,90,122,122,2,0,68,68,100,100,2,0,82,82,114,114,2,0,67,67,99,99,2,0,77,77,109,109,2,0,84,84,116,116,2,0,73,73,105,105,2,0,66,66,98,98,2,0,79,79,111,111,2,0,72,72,104,104,2,0,75,75,107,107,2,0,85,85,117,117,2,0,71,71,103,103,2,0,80,80,112,112,2,0,70,70,102,102,2,0,88,88,120,120,2,0,86,86,118,118,2,0,81,81,113,113,2,0,87,87,119,119,2,0,74,74,106,106,9,0,65,90,95,95,97,122,170,170,181,181,186,186,192,214,216,246,248,255,2,0,256,55295,57344,65535,1,0,55296,56319,1,0,56320,57343,2,0,0,0,34,34,1,0,34,34,1,0,39,39,1,0,48,49,3,0,48,57,65,70,97,102,3,0,65,90,95,95,97,122,5,0,36,36,48,57,65,90,95,95,97,122,2,0,34,34,92,92,2,0,9,9,32,32,2,0,10,10,13,13,2,0,42,42,47,47,4,0,10,10,13,13,34,34,92,92,3,0,10,10,13,13,34,34,3,0,85,85,117,117,120,120,2,0,39,39,92,92,1,0,36,36,6863,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0,455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0,501,1,0,0,0,0,503,1,0,0,0,0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0,0,0,0,511,1,0,0,0,0,513,1,0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519,1,0,0,0,0,521,1,0,0,0,0,523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0,0,529,1,0,0,0,0,531,1,0,0,0,0,533,1,0,0,0,0,535,1,0,0,0,0,537,1,0,0,0,0,539,1,0,0,0,0,541,1,0,0,0,0,543,1,0,0,0,0,545,1,0,0,0,0,547,1,0,0,0,0,549,1,0,0,0,0,551,1,0,0,0,0,553,1,0,0,0,0,555,1,0,0,0,0,557,1,0,0,0,0,559,1,0,0,0,0,561,1,0,0,0,0,563,1,0,0,0,0,565,1,0,0,0,0,567,1,0,0,0,0,569,1,0,0,0,0,571,1,0,0,0,0,573,1,0,0,0,0,575,1,0,0,0,0,577,1,0,0,0,0,579,1,0,0,0,0,581,1,0,0,0,0,583,1,0,0,0,0,585,1,0,0,0,0,587,1,0,0,0,0,589,1,0,0,0,0,591,1,0,0,0,0,593,1,0,0,0,0,595,1,0,0,0,0,597,1,0,0,0,0,599,1,0,0,0,0,601,1,0,0,0,0,603,1,0,0,0,0,605,1,0,0,0,0,607,1,0,0,0,0,609,1,0,0,0,0,611,1,0,0,0,0,613,1,0,0,0,0,615,1,0,0,0,0,617,1,0,0,0,0,619,1,0,0,0,0,621,1,0,0,0,0,623,1,0,0,0,0,625,1,0,0,0,0,627,1,0,0,0,0,629,1,0,0,0,0,631,1,0,0,0,0,633,1,0,0,0,0,635,1,0,0,0,0,637,1,0,0,0,0,639,1,0,0,0,0,641,1,0,0,0,0,643,1,0,0,0,0,645,1,0,0,0,0,647,1,0,0,0,0,649,1,0,0,0,0,651,1,0,0,0,0,653,1,0,0,0,0,655,1,0,0,0,0,657,1,0,0,0,0,659,1,0,0,0,0,661,1,0,0,0,0,663,1,0,0,0,0,665,1,0,0,0,0,667,1,0,0,0,0,669,1,0,0,0,0,671,1,0,0,0,0,673,1,0,0,0,0,675,1,0,0,0,0,677,1,0,0,0,0,679,1,0,0,0,0,681,1,0,0,0,0,683,1,0,0,0,0,685,1,0,0,0,0,687,1,0,0,0,0,689,1,0,0,0,0,691,1,0,0,0,0,693,1,0,0,0,0,695,1,0,0,0,0,697,1,0,0,0,0,699,1,0,0,0,0,701,1,0,0,0,0,703,1,0,0,0,0,705,1,0,0,0,0,707,1,0,0,0,0,709,1,0,0,0,0,711,1,0,0,0,0,713,1,0,0,0,0,715,1,0,0,0,0,717,1,0,0,0,0,719,1,0,0,0,0,721,1,0,0,0,0,723,1,0,0,0,0,725,1,0,0,0,0,727,1,0,0,0,0,729,1,0,0,0,0,731,1,0,0,0,0,733,1,0,0,0,0,735,1,0,0,0,0,737,1,0,0,0,0,739,1,0,0,0,0,741,1,0,0,0,0,743,1,0,0,0,0,745,1,0,0,0,0,747,1,0,0,0,0,749,1,0,0,0,0,751,1,0,0,0,0,753,1,0,0,0,0,755,1,0,0,0,0,757,1,0,0,0,0,759,1,0,0,0,0,761,1,0,0,0,0,763,1,0,0,0,0,765,1,0,0,0,0,767,1,0,0,0,0,769,1,0,0,0,0,771,1,0,0,0,0,773,1,0,0,0,0,775,1,0,0,0,0,777,1,0,0,0,0,779,1,0,0,0,0,781,1,0,0,0,0,783,1,0,0,0,0,785,1,0,0,0,0,787,1,0,0,0,0,789,1,0,0,0,0,791,1,0,0,0,0,793,1,0,0,0,0,795,1,0,0,0,0,797,1,0,0,0,0,799,1,0,0,0,0,801,1,0,0,0,0,803,1,0,0,0,0,805,1,0,0,0,0,807,1,0,0,0,0,809,1,0,0,0,0,811,1,0,0,0,0,813,1,0,0,0,0,815,1,0,0,0,0,817,1,0,0,0,0,819,1,0,0,0,0,821,1,0,0,0,0,823,1,0,0,0,0,825,1,0,0,0,0,827,1,0,0,0,0,829,1,0,0,0,0,831,1,0,0,0,0,833,1,0,0,0,0,835,1,0,0,0,0,837,1,0,0,0,0,839,1,0,0,0,0,841,1,0,0,0,0,843,1,0,0,0,0,845,1,0,0,0,0,847,1,0,0,0,0,849,1,0,0,0,0,851,1,0,0,0,0,853,1,0,0,0,0,855,1,0,0,0,0,857,1,0,0,0,0,859,1,0,0,0,0,861,1,0,0,0,0,863,1,0,0,0,0,865,1,0,0,0,0,867,1,0,0,0,0,869,1,0,0,0,0,871,1,0,0,0,0,873,1,0,0,0,0,875,1,0,0,0,0,877,1,0,0,0,0,879,1,0,0,0,0,881,1,0,0,0,0,883,1,0,0,0,0,885,1,0,0,0,0,887,1,0,0,0,0,889,1,0,0,0,0,891,1,0,0,0,0,893,1,0,0,0,0,895,1,0,0,0,0,897,1,0,0,0,0,899,1,0,0,0,0,901,1,0,0,0,0,903,1,0,0,0,0,905,1,0,0,0,0,907,1,0,0,0,0,909,1,0,0,0,0,911,1,0,0,0,0,913,1,0,0,0,0,915,1,0,0,0,0,917,1,0,0,0,0,919,1,0,0,0,0,921,1,0,0,0,0,923,1,0,0,0,0,925,1,0,0,0,0,927,1,0,0,0,0,929,1,0,0,0,0,931,1,0,0,0,0,933,1,0,0,0,0,935,1,0,0,0,0,937,1,0,0,0,0,939,1,0,0,0,0,941,1,0,0,0,0,943,1,0,0,0,0,945,1,0,0,0,0,947,1,0,0,0,0,949,1,0,0,0,0,951,1,0,0,0,0,953,1,0,0,0,0,955,1,0,0,0,0,957,1,0,0,0,0,959,1,0,0,0,0,961,1,0,0,0,0,963,1,0,0,0,0,965,1,0,0,0,0,967,1,0,0,0,0,969,1,0,0,0,0,971,1,0,0,0,0,973,1,0,0,0,0,975,1,0,0,0,0,977,1,0,0,0,0,979,1,0,0,0,0,981,1,0,0,0,0,983,1,0,0,0,0,985,1,0,0,0,0,987,1,0,0,0,0,989,1,0,0,0,0,991,1,0,0,0,0,993,1,0,0,0,0,995,1,0,0,0,0,997,1,0,0,0,0,999,1,0,0,0,0,1001,1,0,0,0,0,1003,1,0,0,0,0,1005,1,0,0,0,0,1007,1,0,0,0,0,1009,1,0,0,0,0,1011,1,0,0,0,0,1013,1,0,0,0,0,1015,1,0,0,0,0,1017,1,0,0,0,0,1019,1,0,0,0,0,1021,1,0,0,0,0,1023,1,0,0,0,0,1025,1,0,0,0,0,1027,1,0,0,0,0,1029,1,0,0,0,0,1031,1,0,0,0,0,1033,1,0,0,0,0,1035,1,0,0,0,0,1037,1,0,0,0,0,1039,1,0,0,0,0,1041,1,0,0,0,0,1043,1,0,0,0,0,1045,1,0,0,0,0,1047,1,0,0,0,0,1049,1,0,0,0,0,1051,1,0,0,0,0,1053,1,0,0,0,0,1055,1,0,0,0,0,1057,1,0,0,0,0,1059,1,0,0,0,0,1061,1,0,0,0,0,1063,1,0,0,0,0,1065,1,0,0,0,0,1067,1,0,0,0,0,1069,1,0,0,0,0,1071,1,0,0,0,0,1073,1,0,0,0,0,1075,1,0,0,0,0,1077,1,0,0,0,0,1079,1,0,0,0,0,1081,1,0,0,0,0,1083,1,0,0,0,0,1085,1,0,0,0,0,1087,1,0,0,0,0,1089,1,0,0,0,0,1091,1,0,0,0,0,1093,1,0,0,0,0,1095,1,0,0,0,0,1097,1,0,0,0,0,1099,1,0,0,0,0,1101,1,0,0,0,0,1103,1,0,0,0,0,1105,1,0,0,0,0,1107,1,0,0,0,0,1109,1,0,0,0,0,1111,1,0,0,0,0,1113,1,0,0,0,0,1115,1,0,0,0,0,1117,1,0,0,0,0,1119,1,0,0,0,0,1121,1,0,0,0,0,1123,1,0,0,0,0,1125,1,0,0,0,0,1127,1,0,0,0,0,1129,1,0,0,0,0,1131,1,0,0,0,0,1133,1,0,0,0,0,1135,1,0,0,0,0,1137,1,0,0,0,0,1139,1,0,0,0,0,1141,1,0,0,0,0,1143,1,0,0,0,0,1145,1,0,0,0,0,1147,1,0,0,0,0,1149,1,0,0,0,0,1151,1,0,0,0,0,1153,1,0,0,0,0,1155,1,0,0,0,0,1157,1,0,0,0,0,1159,1,0,0,0,0,1161,1,0,0,0,0,1163,1,0,0,0,0,1165,1,0,0,0,0,1167,1,0,0,0,0,1169,1,0,0,0,0,1171,1,0,0,0,0,1173,1,0,0,0,0,1175,1,0,0,0,0,1177,1,0,0,0,0,1179,1,0,0,0,0,1181,1,0,0,0,0,1183,1,0,0,0,0,1185,1,0,0,0,0,1187,1,0,0,0,0,1189,1,0,0,0,0,1191,1,0,0,0,0,1193,1,0,0,0,0,1195,1,0,0,0,0,1197,1,0,0,0,0,1199,1,0,0,0,0,1201,1,0,0,0,0,1203,1,0,0,0,0,1205,1,0,0,0,0,1207,1,0,0,0,0,1209,1,0,0,0,0,1211,1,0,0,0,0,1213,1,0,0,0,0,1215,1,0,0,0,0,1217,1,0,0,0,0,1219,1,0,0,0,0,1221,1,0,0,0,0,1223,1,0,0,0,0,1225,1,0,0,0,0,1227,1,0,0,0,0,1229,1,0,0,0,0,1231,1,0,0,0,0,1233,1,0,0,0,0,1235,1,0,0,0,0,1237,1,0,0,0,0,1239,1,0,0,0,0,1241,1,0,0,0,0,1243,1,0,0,0,0,1245,1,0,0,0,0,1247,1,0,0,0,0,1249,1,0,0,0,0,1251,1,0,0,0,0,1253,1,0,0,0,0,1255,1,0,0,0,0,1257,1,0,0,0,0,1259,1,0,0,0,0,1261,1,0,0,0,0,1263,1,0,0,0,0,1265,1,0,0,0,0,1267,1,0,0,0,0,1269,1,0,0,0,0,1271,1,0,0,0,0,1273,1,0,0,0,0,1275,1,0,0,0,0,1277,1,0,0,0,0,1279,1,0,0,0,0,1281,1,0,0,0,0,1283,1,0,0,0,0,1291,1,0,0,0,0,1293,1,0,0,0,0,1295,1,0,0,0,0,1297,1,0,0,0,0,1299,1,0,0,0,0,1301,1,0,0,0,0,1303,1,0,0,0,0,1305,1,0,0,0,0,1307,1,0,0,0,0,1309,1,0,0,0,0,1311,1,0,0,0,0,1313,1,0,0,0,0,1315,1,0,0,0,0,1317,1,0,0,0,0,1321,1,0,0,0,0,1323,1,0,0,0,0,1325,1,0,0,0,0,1327,1,0,0,0,0,1329,1,0,0,0,0,1331,1,0,0,0,0,1333,1,0,0,0,0,1335,1,0,0,0,0,1337,1,0,0,0,0,1339,1,0,0,0,0,1341,1,0,0,0,0,1345,1,0,0,0,0,1347,1,0,0,0,0,1349,1,0,0,0,0,1351,1,0,0,0,0,1353,1,0,0,0,0,1355,1,0,0,0,0,1357,1,0,0,0,0,1359,1,0,0,0,0,1361,1,0,0,0,0,1363,1,0,0,0,1,1365,1,0,0,0,1,1367,1,0,0,0,1,1371,1,0,0,0,1,1373,1,0,0,0,2,1377,1,0,0,0,2,1379,1,0,0,0,2,1381,1,0,0,0,3,1383,1,0,0,0,3,1385,1,0,0,0,3,1387,1,0,0,0,3,1389,1,0,0,0,4,1391,1,0,0,0,4,1393,1,0,0,0,5,1395,1,0,0,0,7,1397,1,0,0,0,9,1399,1,0,0,0,11,1401,1,0,0,0,13,1403,1,0,0,0,15,1405,1,0,0,0,17,1407,1,0,0,0,19,1409,1,0,0,0,21,1411,1,0,0,0,23,1413,1,0,0,0,25,1415,1,0,0,0,27,1417,1,0,0,0,29,1419,1,0,0,0,31,1421,1,0,0,0,33,1423,1,0,0,0,35,1425,1,0,0,0,37,1427,1,0,0,0,39,1429,1,0,0,0,41,1432,1,0,0,0,43,1435,1,0,0,0,45,1438,1,0,0,0,47,1441,1,0,0,0,49,1444,1,0,0,0,51,1447,1,0,0,0,53,1450,1,0,0,0,55,1453,1,0,0,0,57,1456,1,0,0,0,59,1458,1,0,0,0,61,1484,1,0,0,0,63,1495,1,0,0,0,65,1511,1,0,0,0,67,1513,1,0,0,0,69,1515,1,0,0,0,71,1517,1,0,0,0,73,1521,1,0,0,0,75,1529,1,0,0,0,77,1537,1,0,0,0,79,1541,1,0,0,0,81,1545,1,0,0,0,83,1551,1,0,0,0,85,1554,1,0,0,0,87,1558,1,0,0,0,89,1569,1,0,0,0,91,1574,1,0,0,0,93,1579,1,0,0,0,95,1584,1,0,0,0,97,1590,1,0,0,0,99,1598,1,0,0,0,101,1605,1,0,0,0,103,1616,1,0,0,0,105,1623,1,0,0,0,107,1639,1,0,0,0,109,1652,1,0,0,0,111,1665,1,0,0,0,113,1678,1,0,0,0,115,1696,1,0,0,0,117,1709,1,0,0,0,119,1717,1,0,0,0,121,1728,1,0,0,0,123,1733,1,0,0,0,125,1742,1,0,0,0,127,1745,1,0,0,0,129,1750,1,0,0,0,131,1757,1,0,0,0,133,1763,1,0,0,0,135,1769,1,0,0,0,137,1773,1,0,0,0,139,1781,1,0,0,0,141,1786,1,0,0,0,143,1792,1,0,0,0,145,1798,1,0,0,0,147,1805,1,0,0,0,149,1808,1,0,0,0,151,1818,1,0,0,0,153,1828,1,0,0,0,155,1833,1,0,0,0,157,1841,1,0,0,0,159,1849,1,0,0,0,161,1855,1,0,0,0,163,1865,1,0,0,0,165,1880,1,0,0,0,167,1884,1,0,0,0,169,1889,1,0,0,0,171,1896,1,0,0,0,173,1899,1,0,0,0,175,1904,1,0,0,0,177,1907,1,0,0,0,179,1913,1,0,0,0,181,1921,1,0,0,0,183,1929,1,0,0,0,185,1940,1,0,0,0,187,1950,1,0,0,0,189,1957,1,0,0,0,191,1970,1,0,0,0,193,1975,1,0,0,0,195,1985,1,0,0,0,197,1991,1,0,0,0,199,1996,1,0,0,0,201,1999,1,0,0,0,203,2008,1,0,0,0,205,2013,1,0,0,0,207,2019,1,0,0,0,209,2026,1,0,0,0,211,2031,1,0,0,0,213,2037,1,0,0,0,215,2046,1,0,0,0,217,2051,1,0,0,0,219,2057,1,0,0,0,221,2064,1,0,0,0,223,2069,1,0,0,0,225,2083,1,0,0,0,227,2090,1,0,0,0,229,2100,1,0,0,0,231,2113,1,0,0,0,233,2119,1,0,0,0,235,2134,1,0,0,0,237,2141,1,0,0,0,239,2146,1,0,0,0,241,2152,1,0,0,0,243,2158,1,0,0,0,245,2161,1,0,0,0,247,2168,1,0,0,0,249,2173,1,0,0,0,251,2178,1,0,0,0,253,2183,1,0,0,0,255,2191,1,0,0,0,257,2199,1,0,0,0,259,2205,1,0,0,0,261,2210,1,0,0,0,263,2219,1,0,0,0,265,2225,1,0,0,0,267,2233,1,0,0,0,269,2241,1,0,0,0,271,2247,1,0,0,0,273,2256,1,0,0,0,275,2263,1,0,0,0,277,2270,1,0,0,0,279,2274,1,0,0,0,281,2280,1,0,0,0,283,2286,1,0,0,0,285,2296,1,0,0,0,287,2301,1,0,0,0,289,2307,1,0,0,0,291,2314,1,0,0,0,293,2324,1,0,0,0,295,2335,1,0,0,0,297,2338,1,0,0,0,299,2348,1,0,0,0,301,2357,1,0,0,0,303,2364,1,0,0,0,305,2370,1,0,0,0,307,2373,1,0,0,0,309,2379,1,0,0,0,311,2386,1,0,0,0,313,2394,1,0,0,0,315,2403,1,0,0,0,317,2411,1,0,0,0,319,2417,1,0,0,0,321,2433,1,0,0,0,323,2444,1,0,0,0,325,2450,1,0,0,0,327,2456,1,0,0,0,329,2464,1,0,0,0,331,2472,1,0,0,0,333,2481,1,0,0,0,335,2488,1,0,0,0,337,2498,1,0,0,0,339,2512,1,0,0,0,341,2523,1,0,0,0,343,2535,1,0,0,0,345,2543,1,0,0,0,347,2552,1,0,0,0,349,2563,1,0,0,0,351,2568,1,0,0,0,353,2573,1,0,0,0,355,2577,1,0,0,0,357,2584,1,0,0,0,359,2590,1,0,0,0,361,2595,1,0,0,0,363,2604,1,0,0,0,365,2608,1,0,0,0,367,2619,1,0,0,0,369,2627,1,0,0,0,371,2636,1,0,0,0,373,2645,1,0,0,0,375,2653,1,0,0,0,377,2660,1,0,0,0,379,2670,1,0,0,0,381,2681,1,0,0,0,383,2692,1,0,0,0,385,2700,1,0,0,0,387,2708,1,0,0,0,389,2717,1,0,0,0,391,2724,1,0,0,0,393,2731,1,0,0,0,395,2736,1,0,0,0,397,2741,1,0,0,0,399,2748,1,0,0,0,401,2757,1,0,0,0,403,2767,1,0,0,0,405,2772,1,0,0,0,407,2779,1,0,0,0,409,2785,1,0,0,0,411,2793,1,0,0,0,413,2803,1,0,0,0,415,2813,1,0,0,0,417,2821,1,0,0,0,419,2829,1,0,0,0,421,2839,1,0,0,0,423,2848,1,0,0,0,425,2855,1,0,0,0,427,2861,1,0,0,0,429,2871,1,0,0,0,431,2877,1,0,0,0,433,2885,1,0,0,0,435,2894,1,0,0,0,437,2904,1,0,0,0,439,2911,1,0,0,0,441,2919,1,0,0,0,443,2927,1,0,0,0,445,2934,1,0,0,0,447,2939,1,0,0,0,449,2944,1,0,0,0,451,2953,1,0,0,0,453,2956,1,0,0,0,455,2966,1,0,0,0,457,2976,1,0,0,0,459,2985,1,0,0,0,461,2995,1,0,0,0,463,3005,1,0,0,0,465,3011,1,0,0,0,467,3019,1,0,0,0,469,3027,1,0,0,0,471,3036,1,0,0,0,473,3043,1,0,0,0,475,3055,1,0,0,0,477,3062,1,0,0,0,479,3070,1,0,0,0,481,3078,1,0,0,0,483,3088,1,0,0,0,485,3092,1,0,0,0,487,3098,1,0,0,0,489,3107,1,0,0,0,491,3113,1,0,0,0,493,3118,1,0,0,0,495,3128,1,0,0,0,497,3134,1,0,0,0,499,3141,1,0,0,0,501,3146,1,0,0,0,503,3152,1,0,0,0,505,3161,1,0,0,0,507,3166,1,0,0,0,509,3174,1,0,0,0,511,3180,1,0,0,0,513,3188,1,0,0,0,515,3201,1,0,0,0,517,3210,1,0,0,0,519,3216,1,0,0,0,521,3223,1,0,0,0,523,3232,1,0,0,0,525,3237,1,0,0,0,527,3243,1,0,0,0,529,3248,1,0,0,0,531,3253,1,0,0,0,533,3259,1,0,0,0,535,3264,1,0,0,0,537,3267,1,0,0,0,539,3275,1,0,0,0,541,3282,1,0,0,0,543,3289,1,0,0,0,545,3295,1,0,0,0,547,3302,1,0,0,0,549,3305,1,0,0,0,551,3309,1,0,0,0,553,3314,1,0,0,0,555,3323,1,0,0,0,557,3330,1,0,0,0,559,3338,1,0,0,0,561,3344,1,0,0,0,563,3350,1,0,0,0,565,3357,1,0,0,0,567,3365,1,0,0,0,569,3375,1,0,0,0,571,3383,1,0,0,0,573,3392,1,0,0,0,575,3398,1,0,0,0,577,3408,1,0,0,0,579,3416,1,0,0,0,581,3425,1,0,0,0,583,3434,1,0,0,0,585,3440,1,0,0,0,587,3451,1,0,0,0,589,3462,1,0,0,0,591,3472,1,0,0,0,593,3480,1,0,0,0,595,3486,1,0,0,0,597,3492,1,0,0,0,599,3497,1,0,0,0,601,3506,1,0,0,0,603,3514,1,0,0,0,605,3524,1,0,0,0,607,3528,1,0,0,0,609,3536,1,0,0,0,611,3544,1,0,0,0,613,3553,1,0,0,0,615,3561,1,0,0,0,617,3568,1,0,0,0,619,3579,1,0,0,0,621,3587,1,0,0,0,623,3595,1,0,0,0,625,3601,1,0,0,0,627,3609,1,0,0,0,629,3618,1,0,0,0,631,3626,1,0,0,0,633,3633,1,0,0,0,635,3638,1,0,0,0,637,3647,1,0,0,0,639,3652,1,0,0,0,641,3657,1,0,0,0,643,3667,1,0,0,0,645,3674,1,0,0,0,647,3681,1,0,0,0,649,3688,1,0,0,0,651,3695,1,0,0,0,653,3704,1,0,0,0,655,3713,1,0,0,0,657,3723,1,0,0,0,659,3736,1,0,0,0,661,3743,1,0,0,0,663,3751,1,0,0,0,665,3755,1,0,0,0,667,3761,1,0,0,0,669,3766,1,0,0,0,671,3773,1,0,0,0,673,3782,1,0,0,0,675,3789,1,0,0,0,677,3800,1,0,0,0,679,3806,1,0,0,0,681,3816,1,0,0,0,683,3827,1,0,0,0,685,3833,1,0,0,0,687,3840,1,0,0,0,689,3848,1,0,0,0,691,3855,1,0,0,0,693,3861,1,0,0,0,695,3867,1,0,0,0,697,3874,1,0,0,0,699,3881,1,0,0,0,701,3892,1,0,0,0,703,3897,1,0,0,0,705,3906,1,0,0,0,707,3916,1,0,0,0,709,3921,1,0,0,0,711,3933,1,0,0,0,713,3941,1,0,0,0,715,3950,1,0,0,0,717,3958,1,0,0,0,719,3963,1,0,0,0,721,3969,1,0,0,0,723,3979,1,0,0,0,725,3991,1,0,0,0,727,4003,1,0,0,0,729,4011,1,0,0,0,731,4020,1,0,0,0,733,4029,1,0,0,0,735,4035,1,0,0,0,737,4042,1,0,0,0,739,4049,1,0,0,0,741,4055,1,0,0,0,743,4064,1,0,0,0,745,4074,1,0,0,0,747,4082,1,0,0,0,749,4090,1,0,0,0,751,4095,1,0,0,0,753,4104,1,0,0,0,755,4115,1,0,0,0,757,4123,1,0,0,0,759,4128,1,0,0,0,761,4136,1,0,0,0,763,4142,1,0,0,0,765,4146,1,0,0,0,767,4151,1,0,0,0,769,4155,1,0,0,0,771,4160,1,0,0,0,773,4168,1,0,0,0,775,4175,1,0,0,0,777,4179,1,0,0,0,779,4187,1,0,0,0,781,4192,1,0,0,0,783,4202,1,0,0,0,785,4211,1,0,0,0,787,4215,1,0,0,0,789,4223,1,0,0,0,791,4230,1,0,0,0,793,4238,1,0,0,0,795,4244,1,0,0,0,797,4253,1,0,0,0,799,4259,1,0,0,0,801,4263,1,0,0,0,803,4271,1,0,0,0,805,4280,1,0,0,0,807,4286,1,0,0,0,809,4295,1,0,0,0,811,4301,1,0,0,0,813,4306,1,0,0,0,815,4313,1,0,0,0,817,4321,1,0,0,0,819,4329,1,0,0,0,821,4338,1,0,0,0,823,4348,1,0,0,0,825,4353,1,0,0,0,827,4357,1,0,0,0,829,4363,1,0,0,0,831,4372,1,0,0,0,833,4382,1,0,0,0,835,4387,1,0,0,0,837,4397,1,0,0,0,839,4403,1,0,0,0,841,4408,1,0,0,0,843,4415,1,0,0,0,845,4423,1,0,0,0,847,4437,1,0,0,0,849,4448,1,0,0,0,851,4455,1,0,0,0,853,4474,1,0,0,0,855,4502,1,0,0,0,857,4529,1,0,0,0,859,4535,1,0,0,0,861,4548,1,0,0,0,863,4558,1,0,0,0,865,4569,1,0,0,0,867,4579,1,0,0,0,869,4589,1,0,0,0,871,4598,1,0,0,0,873,4604,1,0,0,0,875,4612,1,0,0,0,877,4625,1,0,0,0,879,4630,1,0,0,0,881,4638,1,0,0,0,883,4645,1,0,0,0,885,4652,1,0,0,0,887,4663,1,0,0,0,889,4673,1,0,0,0,891,4680,1,0,0,0,893,4687,1,0,0,0,895,4695,1,0,0,0,897,4703,1,0,0,0,899,4713,1,0,0,0,901,4720,1,0,0,0,903,4727,1,0,0,0,905,4734,1,0,0,0,907,4746,1,0,0,0,909,4750,1,0,0,0,911,4754,1,0,0,0,913,4760,1,0,0,0,915,4773,1,0,0,0,917,4785,1,0,0,0,919,4789,1,0,0,0,921,4793,1,0,0,0,923,4802,1,0,0,0,925,4810,1,0,0,0,927,4821,1,0,0,0,929,4827,1,0,0,0,931,4835,1,0,0,0,933,4844,1,0,0,0,935,4848,1,0,0,0,937,4856,1,0,0,0,939,4867,1,0,0,0,941,4876,1,0,0,0,943,4881,1,0,0,0,945,4888,1,0,0,0,947,4893,1,0,0,0,949,4900,1,0,0,0,951,4905,1,0,0,0,953,4914,1,0,0,0,955,4919,1,0,0,0,957,4931,1,0,0,0,959,4942,1,0,0,0,961,4951,1,0,0,0,963,4959,1,0,0,0,965,4973,1,0,0,0,967,4981,1,0,0,0,969,4992,1,0,0,0,971,4999,1,0,0,0,973,5006,1,0,0,0,975,5013,1,0,0,0,977,5020,1,0,0,0,979,5024,1,0,0,0,981,5028,1,0,0,0,983,5033,1,0,0,0,985,5038,1,0,0,0,987,5046,1,0,0,0,989,5052,1,0,0,0,991,5062,1,0,0,0,993,5067,1,0,0,0,995,5087,1,0,0,0,997,5105,1,0,0,0,999,5111,1,0,0,0,1001,5124,1,0,0,0,1003,5135,1,0,0,0,1005,5141,1,0,0,0,1007,5150,1,0,0,0,1009,5158,1,0,0,0,1011,5162,1,0,0,0,1013,5174,1,0,0,0,1015,5182,1,0,0,0,1017,5188,1,0,0,0,1019,5194,1,0,0,0,1021,5202,1,0,0,0,1023,5210,1,0,0,0,1025,5216,1,0,0,0,1027,5221,1,0,0,0,1029,5228,1,0,0,0,1031,5234,1,0,0,0,1033,5240,1,0,0,0,1035,5249,1,0,0,0,1037,5255,1,0,0,0,1039,5259,1,0,0,0,1041,5264,1,0,0,0,1043,5271,1,0,0,0,1045,5279,1,0,0,0,1047,5289,1,0,0,0,1049,5296,1,0,0,0,1051,5301,1,0,0,0,1053,5306,1,0,0,0,1055,5310,1,0,0,0,1057,5315,1,0,0,0,1059,5320,1,0,0,0,1061,5328,1,0,0,0,1063,5336,1,0,0,0,1065,5340,1,0,0,0,1067,5344,1,0,0,0,1069,5354,1,0,0,0,1071,5360,1,0,0,0,1073,5364,1,0,0,0,1075,5368,1,0,0,0,1077,5371,1,0,0,0,1079,5377,1,0,0,0,1081,5387,1,0,0,0,1083,5391,1,0,0,0,1085,5394,1,0,0,0,1087,5400,1,0,0,0,1089,5408,1,0,0,0,1091,5414,1,0,0,0,1093,5420,1,0,0,0,1095,5425,1,0,0,0,1097,5430,1,0,0,0,1099,5441,1,0,0,0,1101,5447,1,0,0,0,1103,5460,1,0,0,0,1105,5467,1,0,0,0,1107,5475,1,0,0,0,1109,5480,1,0,0,0,1111,5486,1,0,0,0,1113,5491,1,0,0,0,1115,5497,1,0,0,0,1117,5502,1,0,0,0,1119,5508,1,0,0,0,1121,5514,1,0,0,0,1123,5521,1,0,0,0,1125,5525,1,0,0,0,1127,5530,1,0,0,0,1129,5534,1,0,0,0,1131,5539,1,0,0,0,1133,5543,1,0,0,0,1135,5548,1,0,0,0,1137,5552,1,0,0,0,1139,5557,1,0,0,0,1141,5562,1,0,0,0,1143,5567,1,0,0,0,1145,5572,1,0,0,0,1147,5578,1,0,0,0,1149,5584,1,0,0,0,1151,5590,1,0,0,0,1153,5601,1,0,0,0,1155,5613,1,0,0,0,1157,5630,1,0,0,0,1159,5636,1,0,0,0,1161,5649,1,0,0,0,1163,5655,1,0,0,0,1165,5661,1,0,0,0,1167,5667,1,0,0,0,1169,5671,1,0,0,0,1171,5678,1,0,0,0,1173,5688,1,0,0,0,1175,5695,1,0,0,0,1177,5703,1,0,0,0,1179,5710,1,0,0,0,1181,5715,1,0,0,0,1183,5721,1,0,0,0,1185,5725,1,0,0,0,1187,5737,1,0,0,0,1189,5756,1,0,0,0,1191,5768,1,0,0,0,1193,5782,1,0,0,0,1195,5797,1,0,0,0,1197,5810,1,0,0,0,1199,5823,1,0,0,0,1201,5835,1,0,0,0,1203,5848,1,0,0,0,1205,5863,1,0,0,0,1207,5878,1,0,0,0,1209,5900,1,0,0,0,1211,5922,1,0,0,0,1213,5936,1,0,0,0,1215,5943,1,0,0,0,1217,5948,1,0,0,0,1219,5954,1,0,0,0,1221,5965,1,0,0,0,1223,5977,1,0,0,0,1225,5993,1,0,0,0,1227,6009,1,0,0,0,1229,6016,1,0,0,0,1231,6023,1,0,0,0,1233,6032,1,0,0,0,1235,6039,1,0,0,0,1237,6049,1,0,0,0,1239,6056,1,0,0,0,1241,6060,1,0,0,0,1243,6076,1,0,0,0,1245,6085,1,0,0,0,1247,6095,1,0,0,0,1249,6106,1,0,0,0,1251,6115,1,0,0,0,1253,6128,1,0,0,0,1255,6142,1,0,0,0,1257,6159,1,0,0,0,1259,6169,1,0,0,0,1261,6183,1,0,0,0,1263,6193,1,0,0,0,1265,6208,1,0,0,0,1267,6225,1,0,0,0,1269,6229,1,0,0,0,1271,6249,1,0,0,0,1273,6259,1,0,0,0,1275,6281,1,0,0,0,1277,6294,1,0,0,0,1279,6302,1,0,0,0,1281,6310,1,0,0,0,1283,6320,1,0,0,0,1285,6333,1,0,0,0,1287,6337,1,0,0,0,1289,6341,1,0,0,0,1291,6343,1,0,0,0,1293,6346,1,0,0,0,1295,6355,1,0,0,0,1297,6358,1,0,0,0,1299,6367,1,0,0,0,1301,6371,1,0,0,0,1303,6375,1,0,0,0,1305,6379,1,0,0,0,1307,6383,1,0,0,0,1309,6386,1,0,0,0,1311,6395,1,0,0,0,1313,6401,1,0,0,0,1315,6404,1,0,0,0,1317,6408,1,0,0,0,1319,6417,1,0,0,0,1321,6424,1,0,0,0,1323,6427,1,0,0,0,1325,6435,1,0,0,0,1327,6438,1,0,0,0,1329,6441,1,0,0,0,1331,6444,1,0,0,0,1333,6452,1,0,0,0,1335,6455,1,0,0,0,1337,6458,1,0,0,0,1339,6460,1,0,0,0,1341,6494,1,0,0,0,1343,6497,1,0,0,0,1345,6501,1,0,0,0,1347,6509,1,0,0,0,1349,6525,1,0,0,0,1351,6536,1,0,0,0,1353,6540,1,0,0,0,1355,6551,1,0,0,0,1357,6590,1,0,0,0,1359,6641,1,0,0,0,1361,6665,1,0,0,0,1363,6668,1,0,0,0,1365,6670,1,0,0,0,1367,6675,1,0,0,0,1369,6706,1,0,0,0,1371,6709,1,0,0,0,1373,6714,1,0,0,0,1375,6727,1,0,0,0,1377,6730,1,0,0,0,1379,6735,1,0,0,0,1381,6741,1,0,0,0,1383,6746,1,0,0,0,1385,6751,1,0,0,0,1387,6756,1,0,0,0,1389,6761,1,0,0,0,1391,6778,1,0,0,0,1393,6780,1,0,0,0,1395,1396,5,36,0,0,1396,6,1,0,0,0,1397,1398,5,40,0,0,1398,8,1,0,0,0,1399,1400,5,41,0,0,1400,10,1,0,0,0,1401,1402,5,91,0,0,1402,12,1,0,0,0,1403,1404,5,93,0,0,1404,14,1,0,0,0,1405,1406,5,44,0,0,1406,16,1,0,0,0,1407,1408,5,59,0,0,1408,18,1,0,0,0,1409,1410,5,58,0,0,1410,20,1,0,0,0,1411,1412,5,42,0,0,1412,22,1,0,0,0,1413,1414,5,61,0,0,1414,24,1,0,0,0,1415,1416,5,46,0,0,1416,26,1,0,0,0,1417,1418,5,43,0,0,1418,28,1,0,0,0,1419,1420,5,45,0,0,1420,30,1,0,0,0,1421,1422,5,47,0,0,1422,32,1,0,0,0,1423,1424,5,94,0,0,1424,34,1,0,0,0,1425,1426,5,60,0,0,1426,36,1,0,0,0,1427,1428,5,62,0,0,1428,38,1,0,0,0,1429,1430,5,60,0,0,1430,1431,5,60,0,0,1431,40,1,0,0,0,1432,1433,5,62,0,0,1433,1434,5,62,0,0,1434,42,1,0,0,0,1435,1436,5,58,0,0,1436,1437,5,61,0,0,1437,44,1,0,0,0,1438,1439,5,60,0,0,1439,1440,5,61,0,0,1440,46,1,0,0,0,1441,1442,5,61,0,0,1442,1443,5,62,0,0,1443,48,1,0,0,0,1444,1445,5,62,0,0,1445,1446,5,61,0,0,1446,50,1,0,0,0,1447,1448,5,46,0,0,1448,1449,5,46,0,0,1449,52,1,0,0,0,1450,1451,5,60,0,0,1451,1452,5,62,0,0,1452,54,1,0,0,0,1453,1454,5,58,0,0,1454,1455,5,58,0,0,1455,56,1,0,0,0,1456,1457,5,37,0,0,1457,58,1,0,0,0,1458,1460,5,36,0,0,1459,1461,7,0,0,0,1460,1459,1,0,0,0,1461,1462,1,0,0,0,1462,1460,1,0,0,0,1462,1463,1,0,0,0,1463,60,1,0,0,0,1464,1480,3,65,30,0,1465,1469,5,43,0,0,1466,1467,5,45,0,0,1467,1469,4,28,0,0,1468,1465,1,0,0,0,1468,1466,1,0,0,0,1469,1470,1,0,0,0,1470,1468,1,0,0,0,1470,1471,1,0,0,0,1471,1475,1,0,0,0,1472,1476,3,65,30,0,1473,1474,5,47,0,0,1474,1476,4,28,1,0,1475,1472,1,0,0,0,1475,1473,1,0,0,0,1476,1480,1,0,0,0,1477,1478,5,47,0,0,1478,1480,4,28,2,0,1479,1464,1,0,0,0,1479,1468,1,0,0,0,1479,1477,1,0,0,0,1480,1481,1,0,0,0,1481,1479,1,0,0,0,1481,1482,1,0,0,0,1482,1485,1,0,0,0,1483,1485,7,1,0,0,1484,1479,1,0,0,0,1484,1483,1,0,0,0,1485,1486,1,0,0,0,1486,1487,6,28,0,0,1487,62,1,0,0,0,1488,1494,3,67,31,0,1489,1490,5,45,0,0,1490,1494,4,29,3,0,1491,1492,5,47,0,0,1492,1494,4,29,4,0,1493,1488,1,0,0,0,1493,1489,1,0,0,0,1493,1491,1,0,0,0,1494,1497,1,0,0,0,1495,1493,1,0,0,0,1495,1496,1,0,0,0,1496,1498,1,0,0,0,1497,1495,1,0,0,0,1498,1500,3,69,32,0,1499,1501,3,61,28,0,1500,1499,1,0,0,0,1500,1501,1,0,0,0,1501,1505,1,0,0,0,1502,1506,5,43,0,0,1503,1504,5,45,0,0,1504,1506,4,29,5,0,1505,1502,1,0,0,0,1505,1503,1,0,0,0,1506,1507,1,0,0,0,1507,1505,1,0,0,0,1507,1508,1,0,0,0,1508,1509,1,0,0,0,1509,1510,6,29,1,0,1510,64,1,0,0,0,1511,1512,7,2,0,0,1512,66,1,0,0,0,1513,1514,7,3,0,0,1514,68,1,0,0,0,1515,1516,7,4,0,0,1516,70,1,0,0,0,1517,1518,7,5,0,0,1518,1519,7,6,0,0,1519,1520,7,6,0,0,1520,72,1,0,0,0,1521,1522,7,5,0,0,1522,1523,7,7,0,0,1523,1524,7,5,0,0,1524,1525,7,6,0,0,1525,1526,7,8,0,0,1526,1527,7,9,0,0,1527,1528,7,10,0,0,1528,74,1,0,0,0,1529,1530,7,5,0,0,1530,1531,7,7,0,0,1531,1532,7,5,0,0,1532,1533,7,6,0,0,1533,1534,7,8,0,0,1534,1535,7,11,0,0,1535,1536,7,10,0,0,1536,76,1,0,0,0,1537,1538,7,5,0,0,1538,1539,7,7,0,0,1539,1540,7,12,0,0,1540,78,1,0,0,0,1541,1542,7,5,0,0,1542,1543,7,7,0,0,1543,1544,7,8,0,0,1544,80,1,0,0,0,1545,1546,7,5,0,0,1546,1547,7,13,0,0,1547,1548,7,13,0,0,1548,1549,7,5,0,0,1549,1550,7,8,0,0,1550,82,1,0,0,0,1551,1552,7,5,0,0,1552,1553,7,9,0,0,1553,84,1,0,0,0,1554,1555,7,5,0,0,1555,1556,7,9,0,0,1556,1557,7,14,0,0,1557,86,1,0,0,0,1558,1559,7,5,0,0,1559,1560,7,9,0,0,1560,1561,7,8,0,0,1561,1562,7,15,0,0,1562,1563,7,15,0,0,1563,1564,7,10,0,0,1564,1565,7,16,0,0,1565,1566,7,13,0,0,1566,1567,7,17,0,0,1567,1568,7,14,0,0,1568,88,1,0,0,0,1569,1570,7,18,0,0,1570,1571,7,19,0,0,1571,1572,7,16,0,0,1572,1573,7,20,0,0,1573,90,1,0,0,0,1574,1575,7,14,0,0,1575,1576,7,5,0,0,1576,1577,7,9,0,0,1577,1578,7,10,0,0,1578,92,1,0,0,0,1579,1580,7,14,0,0,1580,1581,7,5,0,0,1581,1582,7,9,0,0,1582,1583,7,16,0,0,1583,94,1,0,0,0,1584,1585,7,14,0,0,1585,1586,7,20,0,0,1586,1587,7,10,0,0,1587,1588,7,14,0,0,1588,1589,7,21,0,0,1589,96,1,0,0,0,1590,1591,7,14,0,0,1591,1592,7,19,0,0,1592,1593,7,6,0,0,1593,1594,7,6,0,0,1594,1595,7,5,0,0,1595,1596,7,16,0,0,1596,1597,7,10,0,0,1597,98,1,0,0,0,1598,1599,7,14,0,0,1599,1600,7,19,0,0,1600,1601,7,6,0,0,1601,1602,7,22,0,0,1602,1603,7,15,0,0,1603,1604,7,7,0,0,1604,100,1,0,0,0,1605,1606,7,14,0,0,1606,1607,7,19,0,0,1607,1608,7,7,0,0,1608,1609,7,9,0,0,1609,1610,7,16,0,0,1610,1611,7,13,0,0,1611,1612,7,5,0,0,1612,1613,7,17,0,0,1613,1614,7,7,0,0,1614,1615,7,16,0,0,1615,102,1,0,0,0,1616,1617,7,14,0,0,1617,1618,7,13,0,0,1618,1619,7,10,0,0,1619,1620,7,5,0,0,1620,1621,7,16,0,0,1621,1622,7,10,0,0,1622,104,1,0,0,0,1623,1624,7,14,0,0,1624,1625,7,22,0,0,1625,1626,7,13,0,0,1626,1627,7,13,0,0,1627,1628,7,10,0,0,1628,1629,7,7,0,0,1629,1630,7,16,0,0,1630,1631,5,95,0,0,1631,1632,7,14,0,0,1632,1633,7,5,0,0,1633,1634,7,16,0,0,1634,1635,7,5,0,0,1635,1636,7,6,0,0,1636,1637,7,19,0,0,1637,1638,7,23,0,0,1638,106,1,0,0,0,1639,1640,7,14,0,0,1640,1641,7,22,0,0,1641,1642,7,13,0,0,1642,1643,7,13,0,0,1643,1644,7,10,0,0,1644,1645,7,7,0,0,1645,1646,7,16,0,0,1646,1647,5,95,0,0,1647,1648,7,12,0,0,1648,1649,7,5,0,0,1649,1650,7,16,0,0,1650,1651,7,10,0,0,1651,108,1,0,0,0,1652,1653,7,14,0,0,1653,1654,7,22,0,0,1654,1655,7,13,0,0,1655,1656,7,13,0,0,1656,1657,7,10,0,0,1657,1658,7,7,0,0,1658,1659,7,16,0,0,1659,1660,5,95,0,0,1660,1661,7,13,0,0,1661,1662,7,19,0,0,1662,1663,7,6,0,0,1663,1664,7,10,0,0,1664,110,1,0,0,0,1665,1666,7,14,0,0,1666,1667,7,22,0,0,1667,1668,7,13,0,0,1668,1669,7,13,0,0,1669,1670,7,10,0,0,1670,1671,7,7,0,0,1671,1672,7,16,0,0,1672,1673,5,95,0,0,1673,1674,7,16,0,0,1674,1675,7,17,0,0,1675,1676,7,15,0,0,1676,1677,7,10,0,0,1677,112,1,0,0,0,1678,1679,7,14,0,0,1679,1680,7,22,0,0,1680,1681,7,13,0,0,1681,1682,7,13,0,0,1682,1683,7,10,0,0,1683,1684,7,7,0,0,1684,1685,7,16,0,0,1685,1686,5,95,0,0,1686,1687,7,16,0,0,1687,1688,7,17,0,0,1688,1689,7,15,0,0,1689,1690,7,10,0,0,1690,1691,7,9,0,0,1691,1692,7,16,0,0,1692,1693,7,5,0,0,1693,1694,7,15,0,0,1694,1695,7,24,0,0,1695,114,1,0,0,0,1696,1697,7,14,0,0,1697,1698,7,22,0,0,1698,1699,7,13,0,0,1699,1700,7,13,0,0,1700,1701,7,10,0,0,1701,1702,7,7,0,0,1702,1703,7,16,0,0,1703,1704,5,95,0,0,1704,1705,7,22,0,0,1705,1706,7,9,0,0,1706,1707,7,10,0,0,1707,1708,7,13,0,0,1708,116,1,0,0,0,1709,1710,7,12,0,0,1710,1711,7,10,0,0,1711,1712,7,25,0,0,1712,1713,7,5,0,0,1713,1714,7,22,0,0,1714,1715,7,6,0,0,1715,1716,7,16,0,0,1716,118,1,0,0,0,1717,1718,7,12,0,0,1718,1719,7,10,0,0,1719,1720,7,25,0,0,1720,1721,7,10,0,0,1721,1722,7,13,0,0,1722,1723,7,13,0,0,1723,1724,7,5,0,0,1724,1725,7,18,0,0,1725,1726,7,6,0,0,1726,1727,7,10,0,0,1727,120,1,0,0,0,1728,1729,7,12,0,0,1729,1730,7,10,0,0,1730,1731,7,9,0,0,1731,1732,7,14,0,0,1732,122,1,0,0,0,1733,1734,7,12,0,0,1734,1735,7,17,0,0,1735,1736,7,9,0,0,1736,1737,7,16,0,0,1737,1738,7,17,0,0,1738,1739,7,7,0,0,1739,1740,7,14,0,0,1740,1741,7,16,0,0,1741,124,1,0,0,0,1742,1743,7,12,0,0,1743,1744,7,19,0,0,1744,126,1,0,0,0,1745,1746,7,10,0,0,1746,1747,7,6,0,0,1747,1748,7,9,0,0,1748,1749,7,10,0,0,1749,128,1,0,0,0,1750,1751,7,10,0,0,1751,1752,7,26,0,0,1752,1753,7,14,0,0,1753,1754,7,10,0,0,1754,1755,7,24,0,0,1755,1756,7,16,0,0,1756,130,1,0,0,0,1757,1758,7,25,0,0,1758,1759,7,5,0,0,1759,1760,7,6,0,0,1760,1761,7,9,0,0,1761,1762,7,10,0,0,1762,132,1,0,0,0,1763,1764,7,25,0,0,1764,1765,7,10,0,0,1765,1766,7,16,0,0,1766,1767,7,14,0,0,1767,1768,7,20,0,0,1768,134,1,0,0,0,1769,1770,7,25,0,0,1770,1771,7,19,0,0,1771,1772,7,13,0,0,1772,136,1,0,0,0,1773,1774,7,25,0,0,1774,1775,7,19,0,0,1775,1776,7,13,0,0,1776,1777,7,10,0,0,1777,1778,7,17,0,0,1778,1779,7,23,0,0,1779,1780,7,7,0,0,1780,138,1,0,0,0,1781,1782,7,25,0,0,1782,1783,7,13,0,0,1783,1784,7,19,0,0,1784,1785,7,15,0,0,1785,140,1,0,0,0,1786,1787,7,23,0,0,1787,1788,7,13,0,0,1788,1789,7,5,0,0,1789,1790,7,7,0,0,1790,1791,7,16,0,0,1791,142,1,0,0,0,1792,1793,7,23,0,0,1793,1794,7,13,0,0,1794,1795,7,19,0,0,1795,1796,7,22,0,0,1796,1797,7,24,0,0,1797,144,1,0,0,0,1798,1799,7,20,0,0,1799,1800,7,5,0,0,1800,1801,7,27,0,0,1801,1802,7,17,0,0,1802,1803,7,7,0,0,1803,1804,7,23,0,0,1804,146,1,0,0,0,1805,1806,7,17,0,0,1806,1807,7,7,0,0,1807,148,1,0,0,0,1808,1809,7,17,0,0,1809,1810,7,7,0,0,1810,1811,7,17,0,0,1811,1812,7,16,0,0,1812,1813,7,17,0,0,1813,1814,7,5,0,0,1814,1815,7,6,0,0,1815,1816,7,6,0,0,1816,1817,7,8,0,0,1817,150,1,0,0,0,1818,1819,7,17,0,0,1819,1820,7,7,0,0,1820,1821,7,16,0,0,1821,1822,7,10,0,0,1822,1823,7,13,0,0,1823,1824,7,9,0,0,1824,1825,7,10,0,0,1825,1826,7,14,0,0,1826,1827,7,16,0,0,1827,152,1,0,0,0,1828,1829,7,17,0,0,1829,1830,7,7,0,0,1830,1831,7,16,0,0,1831,1832,7,19,0,0,1832,154,1,0,0,0,1833,1834,7,6,0,0,1834,1835,7,5,0,0,1835,1836,7,16,0,0,1836,1837,7,10,0,0,1837,1838,7,13,0,0,1838,1839,7,5,0,0,1839,1840,7,6,0,0,1840,156,1,0,0,0,1841,1842,7,6,0,0,1842,1843,7,10,0,0,1843,1844,7,5,0,0,1844,1845,7,12,0,0,1845,1846,7,17,0,0,1846,1847,7,7,0,0,1847,1848,7,23,0,0,1848,158,1,0,0,0,1849,1850,7,6,0,0,1850,1851,7,17,0,0,1851,1852,7,15,0,0,1852,1853,7,17,0,0,1853,1854,7,16,0,0,1854,160,1,0,0,0,1855,1856,7,6,0,0,1856,1857,7,19,0,0,1857,1858,7,14,0,0,1858,1859,7,5,0,0,1859,1860,7,6,0,0,1860,1861,7,16,0,0,1861,1862,7,17,0,0,1862,1863,7,15,0,0,1863,1864,7,10,0,0,1864,162,1,0,0,0,1865,1866,7,6,0,0,1866,1867,7,19,0,0,1867,1868,7,14,0,0,1868,1869,7,5,0,0,1869,1870,7,6,0,0,1870,1871,7,16,0,0,1871,1872,7,17,0,0,1872,1873,7,15,0,0,1873,1874,7,10,0,0,1874,1875,7,9,0,0,1875,1876,7,16,0,0,1876,1877,7,5,0,0,1877,1878,7,15,0,0,1878,1879,7,24,0,0,1879,164,1,0,0,0,1880,1881,7,7,0,0,1881,1882,7,19,0,0,1882,1883,7,16,0,0,1883,166,1,0,0,0,1884,1885,7,7,0,0,1885,1886,7,22,0,0,1886,1887,7,6,0,0,1887,1888,7,6,0,0,1888,168,1,0,0,0,1889,1890,7,19,0,0,1890,1891,7,25,0,0,1891,1892,7,25,0,0,1892,1893,7,9,0,0,1893,1894,7,10,0,0,1894,1895,7,16,0,0,1895,170,1,0,0,0,1896,1897,7,19,0,0,1897,1898,7,7,0,0,1898,172,1,0,0,0,1899,1900,7,19,0,0,1900,1901,7,7,0,0,1901,1902,7,6,0,0,1902,1903,7,8,0,0,1903,174,1,0,0,0,1904,1905,7,19,0,0,1905,1906,7,13,0,0,1906,176,1,0,0,0,1907,1908,7,19,0,0,1908,1909,7,13,0,0,1909,1910,7,12,0,0,1910,1911,7,10,0,0,1911,1912,7,13,0,0,1912,178,1,0,0,0,1913,1914,7,24,0,0,1914,1915,7,6,0,0,1915,1916,7,5,0,0,1916,1917,7,14,0,0,1917,1918,7,17,0,0,1918,1919,7,7,0,0,1919,1920,7,23,0,0,1920,180,1,0,0,0,1921,1922,7,24,0,0,1922,1923,7,13,0,0,1923,1924,7,17,0,0,1924,1925,7,15,0,0,1925,1926,7,5,0,0,1926,1927,7,13,0,0,1927,1928,7,8,0,0,1928,182,1,0,0,0,1929,1930,7,13,0,0,1930,1931,7,10,0,0,1931,1932,7,25,0,0,1932,1933,7,10,0,0,1933,1934,7,13,0,0,1934,1935,7,10,0,0,1935,1936,7,7,0,0,1936,1937,7,14,0,0,1937,1938,7,10,0,0,1938,1939,7,9,0,0,1939,184,1,0,0,0,1940,1941,7,13,0,0,1941,1942,7,10,0,0,1942,1943,7,16,0,0,1943,1944,7,22,0,0,1944,1945,7,13,0,0,1945,1946,7,7,0,0,1946,1947,7,17,0,0,1947,1948,7,7,0,0,1948,1949,7,23,0,0,1949,186,1,0,0,0,1950,1951,7,9,0,0,1951,1952,7,10,0,0,1952,1953,7,6,0,0,1953,1954,7,10,0,0,1954,1955,7,14,0,0,1955,1956,7,16,0,0,1956,188,1,0,0,0,1957,1958,7,9,0,0,1958,1959,7,10,0,0,1959,1960,7,9,0,0,1960,1961,7,9,0,0,1961,1962,7,17,0,0,1962,1963,7,19,0,0,1963,1964,7,7,0,0,1964,1965,5,95,0,0,1965,1966,7,22,0,0,1966,1967,7,9,0,0,1967,1968,7,10,0,0,1968,1969,7,13,0,0,1969,190,1,0,0,0,1970,1971,7,9,0,0,1971,1972,7,19,0,0,1972,1973,7,15,0,0,1973,1974,7,10,0,0,1974,192,1,0,0,0,1975,1976,7,9,0,0,1976,1977,7,8,0,0,1977,1978,7,15,0,0,1978,1979,7,15,0,0,1979,1980,7,10,0,0,1980,1981,7,16,0,0,1981,1982,7,13,0,0,1982,1983,7,17,0,0,1983,1984,7,14,0,0,1984,194,1,0,0,0,1985,1986,7,16,0,0,1986,1987,7,5,0,0,1987,1988,7,18,0,0,1988,1989,7,6,0,0,1989,1990,7,10,0,0,1990,196,1,0,0,0,1991,1992,7,16,0,0,1992,1993,7,20,0,0,1993,1994,7,10,0,0,1994,1995,7,7,0,0,1995,198,1,0,0,0,1996,1997,7,16,0,0,1997,1998,7,19,0,0,1998,200,1,0,0,0,1999,2e3,7,16,0,0,2e3,2001,7,13,0,0,2001,2002,7,5,0,0,2002,2003,7,17,0,0,2003,2004,7,6,0,0,2004,2005,7,17,0,0,2005,2006,7,7,0,0,2006,2007,7,23,0,0,2007,202,1,0,0,0,2008,2009,7,16,0,0,2009,2010,7,13,0,0,2010,2011,7,22,0,0,2011,2012,7,10,0,0,2012,204,1,0,0,0,2013,2014,7,22,0,0,2014,2015,7,7,0,0,2015,2016,7,17,0,0,2016,2017,7,19,0,0,2017,2018,7,7,0,0,2018,206,1,0,0,0,2019,2020,7,22,0,0,2020,2021,7,7,0,0,2021,2022,7,17,0,0,2022,2023,7,28,0,0,2023,2024,7,22,0,0,2024,2025,7,10,0,0,2025,208,1,0,0,0,2026,2027,7,22,0,0,2027,2028,7,9,0,0,2028,2029,7,10,0,0,2029,2030,7,13,0,0,2030,210,1,0,0,0,2031,2032,7,22,0,0,2032,2033,7,9,0,0,2033,2034,7,17,0,0,2034,2035,7,7,0,0,2035,2036,7,23,0,0,2036,212,1,0,0,0,2037,2038,7,27,0,0,2038,2039,7,5,0,0,2039,2040,7,13,0,0,2040,2041,7,17,0,0,2041,2042,7,5,0,0,2042,2043,7,12,0,0,2043,2044,7,17,0,0,2044,2045,7,14,0,0,2045,214,1,0,0,0,2046,2047,7,29,0,0,2047,2048,7,20,0,0,2048,2049,7,10,0,0,2049,2050,7,7,0,0,2050,216,1,0,0,0,2051,2052,7,29,0,0,2052,2053,7,20,0,0,2053,2054,7,10,0,0,2054,2055,7,13,0,0,2055,2056,7,10,0,0,2056,218,1,0,0,0,2057,2058,7,29,0,0,2058,2059,7,17,0,0,2059,2060,7,7,0,0,2060,2061,7,12,0,0,2061,2062,7,19,0,0,2062,2063,7,29,0,0,2063,220,1,0,0,0,2064,2065,7,29,0,0,2065,2066,7,17,0,0,2066,2067,7,16,0,0,2067,2068,7,20,0,0,2068,222,1,0,0,0,2069,2070,7,5,0,0,2070,2071,7,22,0,0,2071,2072,7,16,0,0,2072,2073,7,20,0,0,2073,2074,7,19,0,0,2074,2075,7,13,0,0,2075,2076,7,17,0,0,2076,2077,7,11,0,0,2077,2078,7,5,0,0,2078,2079,7,16,0,0,2079,2080,7,17,0,0,2080,2081,7,19,0,0,2081,2082,7,7,0,0,2082,224,1,0,0,0,2083,2084,7,18,0,0,2084,2085,7,17,0,0,2085,2086,7,7,0,0,2086,2087,7,5,0,0,2087,2088,7,13,0,0,2088,2089,7,8,0,0,2089,226,1,0,0,0,2090,2091,7,14,0,0,2091,2092,7,19,0,0,2092,2093,7,6,0,0,2093,2094,7,6,0,0,2094,2095,7,5,0,0,2095,2096,7,16,0,0,2096,2097,7,17,0,0,2097,2098,7,19,0,0,2098,2099,7,7,0,0,2099,228,1,0,0,0,2100,2101,7,14,0,0,2101,2102,7,19,0,0,2102,2103,7,7,0,0,2103,2104,7,14,0,0,2104,2105,7,22,0,0,2105,2106,7,13,0,0,2106,2107,7,13,0,0,2107,2108,7,10,0,0,2108,2109,7,7,0,0,2109,2110,7,16,0,0,2110,2111,7,6,0,0,2111,2112,7,8,0,0,2112,230,1,0,0,0,2113,2114,7,14,0,0,2114,2115,7,13,0,0,2115,2116,7,19,0,0,2116,2117,7,9,0,0,2117,2118,7,9,0,0,2118,232,1,0,0,0,2119,2120,7,14,0,0,2120,2121,7,22,0,0,2121,2122,7,13,0,0,2122,2123,7,13,0,0,2123,2124,7,10,0,0,2124,2125,7,7,0,0,2125,2126,7,16,0,0,2126,2127,5,95,0,0,2127,2128,7,9,0,0,2128,2129,7,14,0,0,2129,2130,7,20,0,0,2130,2131,7,10,0,0,2131,2132,7,15,0,0,2132,2133,7,5,0,0,2133,234,1,0,0,0,2134,2135,7,25,0,0,2135,2136,7,13,0,0,2136,2137,7,10,0,0,2137,2138,7,10,0,0,2138,2139,7,11,0,0,2139,2140,7,10,0,0,2140,236,1,0,0,0,2141,2142,7,25,0,0,2142,2143,7,22,0,0,2143,2144,7,6,0,0,2144,2145,7,6,0,0,2145,238,1,0,0,0,2146,2147,7,17,0,0,2147,2148,7,6,0,0,2148,2149,7,17,0,0,2149,2150,7,21,0,0,2150,2151,7,10,0,0,2151,240,1,0,0,0,2152,2153,7,17,0,0,2153,2154,7,7,0,0,2154,2155,7,7,0,0,2155,2156,7,10,0,0,2156,2157,7,13,0,0,2157,242,1,0,0,0,2158,2159,7,17,0,0,2159,2160,7,9,0,0,2160,244,1,0,0,0,2161,2162,7,17,0,0,2162,2163,7,9,0,0,2163,2164,7,7,0,0,2164,2165,7,22,0,0,2165,2166,7,6,0,0,2166,2167,7,6,0,0,2167,246,1,0,0,0,2168,2169,7,30,0,0,2169,2170,7,19,0,0,2170,2171,7,17,0,0,2171,2172,7,7,0,0,2172,248,1,0,0,0,2173,2174,7,6,0,0,2174,2175,7,10,0,0,2175,2176,7,25,0,0,2176,2177,7,16,0,0,2177,250,1,0,0,0,2178,2179,7,6,0,0,2179,2180,7,17,0,0,2180,2181,7,21,0,0,2181,2182,7,10,0,0,2182,252,1,0,0,0,2183,2184,7,7,0,0,2184,2185,7,5,0,0,2185,2186,7,16,0,0,2186,2187,7,22,0,0,2187,2188,7,13,0,0,2188,2189,7,5,0,0,2189,2190,7,6,0,0,2190,254,1,0,0,0,2191,2192,7,7,0,0,2192,2193,7,19,0,0,2193,2194,7,16,0,0,2194,2195,7,7,0,0,2195,2196,7,22,0,0,2196,2197,7,6,0,0,2197,2198,7,6,0,0,2198,256,1,0,0,0,2199,2200,7,19,0,0,2200,2201,7,22,0,0,2201,2202,7,16,0,0,2202,2203,7,10,0,0,2203,2204,7,13,0,0,2204,258,1,0,0,0,2205,2206,7,19,0,0,2206,2207,7,27,0,0,2207,2208,7,10,0,0,2208,2209,7,13,0,0,2209,260,1,0,0,0,2210,2211,7,19,0,0,2211,2212,7,27,0,0,2212,2213,7,10,0,0,2213,2214,7,13,0,0,2214,2215,7,6,0,0,2215,2216,7,5,0,0,2216,2217,7,24,0,0,2217,2218,7,9,0,0,2218,262,1,0,0,0,2219,2220,7,13,0,0,2220,2221,7,17,0,0,2221,2222,7,23,0,0,2222,2223,7,20,0,0,2223,2224,7,16,0,0,2224,264,1,0,0,0,2225,2226,7,9,0,0,2226,2227,7,17,0,0,2227,2228,7,15,0,0,2228,2229,7,17,0,0,2229,2230,7,6,0,0,2230,2231,7,5,0,0,2231,2232,7,13,0,0,2232,266,1,0,0,0,2233,2234,7,27,0,0,2234,2235,7,10,0,0,2235,2236,7,13,0,0,2236,2237,7,18,0,0,2237,2238,7,19,0,0,2238,2239,7,9,0,0,2239,2240,7,10,0,0,2240,268,1,0,0,0,2241,2242,7,5,0,0,2242,2243,7,18,0,0,2243,2244,7,19,0,0,2244,2245,7,13,0,0,2245,2246,7,16,0,0,2246,270,1,0,0,0,2247,2248,7,5,0,0,2248,2249,7,18,0,0,2249,2250,7,9,0,0,2250,2251,7,19,0,0,2251,2252,7,6,0,0,2252,2253,7,22,0,0,2253,2254,7,16,0,0,2254,2255,7,10,0,0,2255,272,1,0,0,0,2256,2257,7,5,0,0,2257,2258,7,14,0,0,2258,2259,7,14,0,0,2259,2260,7,10,0,0,2260,2261,7,9,0,0,2261,2262,7,9,0,0,2262,274,1,0,0,0,2263,2264,7,5,0,0,2264,2265,7,14,0,0,2265,2266,7,16,0,0,2266,2267,7,17,0,0,2267,2268,7,19,0,0,2268,2269,7,7,0,0,2269,276,1,0,0,0,2270,2271,7,5,0,0,2271,2272,7,12,0,0,2272,2273,7,12,0,0,2273,278,1,0,0,0,2274,2275,7,5,0,0,2275,2276,7,12,0,0,2276,2277,7,15,0,0,2277,2278,7,17,0,0,2278,2279,7,7,0,0,2279,280,1,0,0,0,2280,2281,7,5,0,0,2281,2282,7,25,0,0,2282,2283,7,16,0,0,2283,2284,7,10,0,0,2284,2285,7,13,0,0,2285,282,1,0,0,0,2286,2287,7,5,0,0,2287,2288,7,23,0,0,2288,2289,7,23,0,0,2289,2290,7,13,0,0,2290,2291,7,10,0,0,2291,2292,7,23,0,0,2292,2293,7,5,0,0,2293,2294,7,16,0,0,2294,2295,7,10,0,0,2295,284,1,0,0,0,2296,2297,7,5,0,0,2297,2298,7,6,0,0,2298,2299,7,9,0,0,2299,2300,7,19,0,0,2300,286,1,0,0,0,2301,2302,7,5,0,0,2302,2303,7,6,0,0,2303,2304,7,16,0,0,2304,2305,7,10,0,0,2305,2306,7,13,0,0,2306,288,1,0,0,0,2307,2308,7,5,0,0,2308,2309,7,6,0,0,2309,2310,7,29,0,0,2310,2311,7,5,0,0,2311,2312,7,8,0,0,2312,2313,7,9,0,0,2313,290,1,0,0,0,2314,2315,7,5,0,0,2315,2316,7,9,0,0,2316,2317,7,9,0,0,2317,2318,7,10,0,0,2318,2319,7,13,0,0,2319,2320,7,16,0,0,2320,2321,7,17,0,0,2321,2322,7,19,0,0,2322,2323,7,7,0,0,2323,292,1,0,0,0,2324,2325,7,5,0,0,2325,2326,7,9,0,0,2326,2327,7,9,0,0,2327,2328,7,17,0,0,2328,2329,7,23,0,0,2329,2330,7,7,0,0,2330,2331,7,15,0,0,2331,2332,7,10,0,0,2332,2333,7,7,0,0,2333,2334,7,16,0,0,2334,294,1,0,0,0,2335,2336,7,5,0,0,2336,2337,7,16,0,0,2337,296,1,0,0,0,2338,2339,7,5,0,0,2339,2340,7,16,0,0,2340,2341,7,16,0,0,2341,2342,7,13,0,0,2342,2343,7,17,0,0,2343,2344,7,18,0,0,2344,2345,7,22,0,0,2345,2346,7,16,0,0,2346,2347,7,10,0,0,2347,298,1,0,0,0,2348,2349,7,18,0,0,2349,2350,7,5,0,0,2350,2351,7,14,0,0,2351,2352,7,21,0,0,2352,2353,7,29,0,0,2353,2354,7,5,0,0,2354,2355,7,13,0,0,2355,2356,7,12,0,0,2356,300,1,0,0,0,2357,2358,7,18,0,0,2358,2359,7,10,0,0,2359,2360,7,25,0,0,2360,2361,7,19,0,0,2361,2362,7,13,0,0,2362,2363,7,10,0,0,2363,302,1,0,0,0,2364,2365,7,18,0,0,2365,2366,7,10,0,0,2366,2367,7,23,0,0,2367,2368,7,17,0,0,2368,2369,7,7,0,0,2369,304,1,0,0,0,2370,2371,7,18,0,0,2371,2372,7,8,0,0,2372,306,1,0,0,0,2373,2374,7,14,0,0,2374,2375,7,5,0,0,2375,2376,7,14,0,0,2376,2377,7,20,0,0,2377,2378,7,10,0,0,2378,308,1,0,0,0,2379,2380,7,14,0,0,2380,2381,7,5,0,0,2381,2382,7,6,0,0,2382,2383,7,6,0,0,2383,2384,7,10,0,0,2384,2385,7,12,0,0,2385,310,1,0,0,0,2386,2387,7,14,0,0,2387,2388,7,5,0,0,2388,2389,7,9,0,0,2389,2390,7,14,0,0,2390,2391,7,5,0,0,2391,2392,7,12,0,0,2392,2393,7,10,0,0,2393,312,1,0,0,0,2394,2395,7,14,0,0,2395,2396,7,5,0,0,2396,2397,7,9,0,0,2397,2398,7,14,0,0,2398,2399,7,5,0,0,2399,2400,7,12,0,0,2400,2401,7,10,0,0,2401,2402,7,12,0,0,2402,314,1,0,0,0,2403,2404,7,14,0,0,2404,2405,7,5,0,0,2405,2406,7,16,0,0,2406,2407,7,5,0,0,2407,2408,7,6,0,0,2408,2409,7,19,0,0,2409,2410,7,23,0,0,2410,316,1,0,0,0,2411,2412,7,14,0,0,2412,2413,7,20,0,0,2413,2414,7,5,0,0,2414,2415,7,17,0,0,2415,2416,7,7,0,0,2416,318,1,0,0,0,2417,2418,7,14,0,0,2418,2419,7,20,0,0,2419,2420,7,5,0,0,2420,2421,7,13,0,0,2421,2422,7,5,0,0,2422,2423,7,14,0,0,2423,2424,7,16,0,0,2424,2425,7,10,0,0,2425,2426,7,13,0,0,2426,2427,7,17,0,0,2427,2428,7,9,0,0,2428,2429,7,16,0,0,2429,2430,7,17,0,0,2430,2431,7,14,0,0,2431,2432,7,9,0,0,2432,320,1,0,0,0,2433,2434,7,14,0,0,2434,2435,7,20,0,0,2435,2436,7,10,0,0,2436,2437,7,14,0,0,2437,2438,7,21,0,0,2438,2439,7,24,0,0,2439,2440,7,19,0,0,2440,2441,7,17,0,0,2441,2442,7,7,0,0,2442,2443,7,16,0,0,2443,322,1,0,0,0,2444,2445,7,14,0,0,2445,2446,7,6,0,0,2446,2447,7,5,0,0,2447,2448,7,9,0,0,2448,2449,7,9,0,0,2449,324,1,0,0,0,2450,2451,7,14,0,0,2451,2452,7,6,0,0,2452,2453,7,19,0,0,2453,2454,7,9,0,0,2454,2455,7,10,0,0,2455,326,1,0,0,0,2456,2457,7,14,0,0,2457,2458,7,6,0,0,2458,2459,7,22,0,0,2459,2460,7,9,0,0,2460,2461,7,16,0,0,2461,2462,7,10,0,0,2462,2463,7,13,0,0,2463,328,1,0,0,0,2464,2465,7,14,0,0,2465,2466,7,19,0,0,2466,2467,7,15,0,0,2467,2468,7,15,0,0,2468,2469,7,10,0,0,2469,2470,7,7,0,0,2470,2471,7,16,0,0,2471,330,1,0,0,0,2472,2473,7,14,0,0,2473,2474,7,19,0,0,2474,2475,7,15,0,0,2475,2476,7,15,0,0,2476,2477,7,10,0,0,2477,2478,7,7,0,0,2478,2479,7,16,0,0,2479,2480,7,9,0,0,2480,332,1,0,0,0,2481,2482,7,14,0,0,2482,2483,7,19,0,0,2483,2484,7,15,0,0,2484,2485,7,15,0,0,2485,2486,7,17,0,0,2486,2487,7,16,0,0,2487,334,1,0,0,0,2488,2489,7,14,0,0,2489,2490,7,19,0,0,2490,2491,7,15,0,0,2491,2492,7,15,0,0,2492,2493,7,17,0,0,2493,2494,7,16,0,0,2494,2495,7,16,0,0,2495,2496,7,10,0,0,2496,2497,7,12,0,0,2497,336,1,0,0,0,2498,2499,7,14,0,0,2499,2500,7,19,0,0,2500,2501,7,7,0,0,2501,2502,7,25,0,0,2502,2503,7,17,0,0,2503,2504,7,23,0,0,2504,2505,7,22,0,0,2505,2506,7,13,0,0,2506,2507,7,5,0,0,2507,2508,7,16,0,0,2508,2509,7,17,0,0,2509,2510,7,19,0,0,2510,2511,7,7,0,0,2511,338,1,0,0,0,2512,2513,7,14,0,0,2513,2514,7,19,0,0,2514,2515,7,7,0,0,2515,2516,7,7,0,0,2516,2517,7,10,0,0,2517,2518,7,14,0,0,2518,2519,7,16,0,0,2519,2520,7,17,0,0,2520,2521,7,19,0,0,2521,2522,7,7,0,0,2522,340,1,0,0,0,2523,2524,7,14,0,0,2524,2525,7,19,0,0,2525,2526,7,7,0,0,2526,2527,7,9,0,0,2527,2528,7,16,0,0,2528,2529,7,13,0,0,2529,2530,7,5,0,0,2530,2531,7,17,0,0,2531,2532,7,7,0,0,2532,2533,7,16,0,0,2533,2534,7,9,0,0,2534,342,1,0,0,0,2535,2536,7,14,0,0,2536,2537,7,19,0,0,2537,2538,7,7,0,0,2538,2539,7,16,0,0,2539,2540,7,10,0,0,2540,2541,7,7,0,0,2541,2542,7,16,0,0,2542,344,1,0,0,0,2543,2544,7,14,0,0,2544,2545,7,19,0,0,2545,2546,7,7,0,0,2546,2547,7,16,0,0,2547,2548,7,17,0,0,2548,2549,7,7,0,0,2549,2550,7,22,0,0,2550,2551,7,10,0,0,2551,346,1,0,0,0,2552,2553,7,14,0,0,2553,2554,7,19,0,0,2554,2555,7,7,0,0,2555,2556,7,27,0,0,2556,2557,7,10,0,0,2557,2558,7,13,0,0,2558,2559,7,9,0,0,2559,2560,7,17,0,0,2560,2561,7,19,0,0,2561,2562,7,7,0,0,2562,348,1,0,0,0,2563,2564,7,14,0,0,2564,2565,7,19,0,0,2565,2566,7,24,0,0,2566,2567,7,8,0,0,2567,350,1,0,0,0,2568,2569,7,14,0,0,2569,2570,7,19,0,0,2570,2571,7,9,0,0,2571,2572,7,16,0,0,2572,352,1,0,0,0,2573,2574,7,14,0,0,2574,2575,7,9,0,0,2575,2576,7,27,0,0,2576,354,1,0,0,0,2577,2578,7,14,0,0,2578,2579,7,22,0,0,2579,2580,7,13,0,0,2580,2581,7,9,0,0,2581,2582,7,19,0,0,2582,2583,7,13,0,0,2583,356,1,0,0,0,2584,2585,7,14,0,0,2585,2586,7,8,0,0,2586,2587,7,14,0,0,2587,2588,7,6,0,0,2588,2589,7,10,0,0,2589,358,1,0,0,0,2590,2591,7,12,0,0,2591,2592,7,5,0,0,2592,2593,7,16,0,0,2593,2594,7,5,0,0,2594,360,1,0,0,0,2595,2596,7,12,0,0,2596,2597,7,5,0,0,2597,2598,7,16,0,0,2598,2599,7,5,0,0,2599,2600,7,18,0,0,2600,2601,7,5,0,0,2601,2602,7,9,0,0,2602,2603,7,10,0,0,2603,362,1,0,0,0,2604,2605,7,12,0,0,2605,2606,7,5,0,0,2606,2607,7,8,0,0,2607,364,1,0,0,0,2608,2609,7,12,0,0,2609,2610,7,10,0,0,2610,2611,7,5,0,0,2611,2612,7,6,0,0,2612,2613,7,6,0,0,2613,2614,7,19,0,0,2614,2615,7,14,0,0,2615,2616,7,5,0,0,2616,2617,7,16,0,0,2617,2618,7,10,0,0,2618,366,1,0,0,0,2619,2620,7,12,0,0,2620,2621,7,10,0,0,2621,2622,7,14,0,0,2622,2623,7,6,0,0,2623,2624,7,5,0,0,2624,2625,7,13,0,0,2625,2626,7,10,0,0,2626,368,1,0,0,0,2627,2628,7,12,0,0,2628,2629,7,10,0,0,2629,2630,7,25,0,0,2630,2631,7,5,0,0,2631,2632,7,22,0,0,2632,2633,7,6,0,0,2633,2634,7,16,0,0,2634,2635,7,9,0,0,2635,370,1,0,0,0,2636,2637,7,12,0,0,2637,2638,7,10,0,0,2638,2639,7,25,0,0,2639,2640,7,10,0,0,2640,2641,7,13,0,0,2641,2642,7,13,0,0,2642,2643,7,10,0,0,2643,2644,7,12,0,0,2644,372,1,0,0,0,2645,2646,7,12,0,0,2646,2647,7,10,0,0,2647,2648,7,25,0,0,2648,2649,7,17,0,0,2649,2650,7,7,0,0,2650,2651,7,10,0,0,2651,2652,7,13,0,0,2652,374,1,0,0,0,2653,2654,7,12,0,0,2654,2655,7,10,0,0,2655,2656,7,6,0,0,2656,2657,7,10,0,0,2657,2658,7,16,0,0,2658,2659,7,10,0,0,2659,376,1,0,0,0,2660,2661,7,12,0,0,2661,2662,7,10,0,0,2662,2663,7,6,0,0,2663,2664,7,17,0,0,2664,2665,7,15,0,0,2665,2666,7,17,0,0,2666,2667,7,16,0,0,2667,2668,7,10,0,0,2668,2669,7,13,0,0,2669,378,1,0,0,0,2670,2671,7,12,0,0,2671,2672,7,10,0,0,2672,2673,7,6,0,0,2673,2674,7,17,0,0,2674,2675,7,15,0,0,2675,2676,7,17,0,0,2676,2677,7,16,0,0,2677,2678,7,10,0,0,2678,2679,7,13,0,0,2679,2680,7,9,0,0,2680,380,1,0,0,0,2681,2682,7,12,0,0,2682,2683,7,17,0,0,2683,2684,7,14,0,0,2684,2685,7,16,0,0,2685,2686,7,17,0,0,2686,2687,7,19,0,0,2687,2688,7,7,0,0,2688,2689,7,5,0,0,2689,2690,7,13,0,0,2690,2691,7,8,0,0,2691,382,1,0,0,0,2692,2693,7,12,0,0,2693,2694,7,17,0,0,2694,2695,7,9,0,0,2695,2696,7,5,0,0,2696,2697,7,18,0,0,2697,2698,7,6,0,0,2698,2699,7,10,0,0,2699,384,1,0,0,0,2700,2701,7,12,0,0,2701,2702,7,17,0,0,2702,2703,7,9,0,0,2703,2704,7,14,0,0,2704,2705,7,5,0,0,2705,2706,7,13,0,0,2706,2707,7,12,0,0,2707,386,1,0,0,0,2708,2709,7,12,0,0,2709,2710,7,19,0,0,2710,2711,7,14,0,0,2711,2712,7,22,0,0,2712,2713,7,15,0,0,2713,2714,7,10,0,0,2714,2715,7,7,0,0,2715,2716,7,16,0,0,2716,388,1,0,0,0,2717,2718,7,12,0,0,2718,2719,7,19,0,0,2719,2720,7,15,0,0,2720,2721,7,5,0,0,2721,2722,7,17,0,0,2722,2723,7,7,0,0,2723,390,1,0,0,0,2724,2725,7,12,0,0,2725,2726,7,19,0,0,2726,2727,7,22,0,0,2727,2728,7,18,0,0,2728,2729,7,6,0,0,2729,2730,7,10,0,0,2730,392,1,0,0,0,2731,2732,7,12,0,0,2732,2733,7,13,0,0,2733,2734,7,19,0,0,2734,2735,7,24,0,0,2735,394,1,0,0,0,2736,2737,7,10,0,0,2737,2738,7,5,0,0,2738,2739,7,14,0,0,2739,2740,7,20,0,0,2740,396,1,0,0,0,2741,2742,7,10,0,0,2742,2743,7,7,0,0,2743,2744,7,5,0,0,2744,2745,7,18,0,0,2745,2746,7,6,0,0,2746,2747,7,10,0,0,2747,398,1,0,0,0,2748,2749,7,10,0,0,2749,2750,7,7,0,0,2750,2751,7,14,0,0,2751,2752,7,19,0,0,2752,2753,7,12,0,0,2753,2754,7,17,0,0,2754,2755,7,7,0,0,2755,2756,7,23,0,0,2756,400,1,0,0,0,2757,2758,7,10,0,0,2758,2759,7,7,0,0,2759,2760,7,14,0,0,2760,2761,7,13,0,0,2761,2762,7,8,0,0,2762,2763,7,24,0,0,2763,2764,7,16,0,0,2764,2765,7,10,0,0,2765,2766,7,12,0,0,2766,402,1,0,0,0,2767,2768,7,10,0,0,2768,2769,7,7,0,0,2769,2770,7,22,0,0,2770,2771,7,15,0,0,2771,404,1,0,0,0,2772,2773,7,10,0,0,2773,2774,7,9,0,0,2774,2775,7,14,0,0,2775,2776,7,5,0,0,2776,2777,7,24,0,0,2777,2778,7,10,0,0,2778,406,1,0,0,0,2779,2780,7,10,0,0,2780,2781,7,27,0,0,2781,2782,7,10,0,0,2782,2783,7,7,0,0,2783,2784,7,16,0,0,2784,408,1,0,0,0,2785,2786,7,10,0,0,2786,2787,7,26,0,0,2787,2788,7,14,0,0,2788,2789,7,6,0,0,2789,2790,7,22,0,0,2790,2791,7,12,0,0,2791,2792,7,10,0,0,2792,410,1,0,0,0,2793,2794,7,10,0,0,2794,2795,7,26,0,0,2795,2796,7,14,0,0,2796,2797,7,6,0,0,2797,2798,7,22,0,0,2798,2799,7,12,0,0,2799,2800,7,17,0,0,2800,2801,7,7,0,0,2801,2802,7,23,0,0,2802,412,1,0,0,0,2803,2804,7,10,0,0,2804,2805,7,26,0,0,2805,2806,7,14,0,0,2806,2807,7,6,0,0,2807,2808,7,22,0,0,2808,2809,7,9,0,0,2809,2810,7,17,0,0,2810,2811,7,27,0,0,2811,2812,7,10,0,0,2812,414,1,0,0,0,2813,2814,7,10,0,0,2814,2815,7,26,0,0,2815,2816,7,10,0,0,2816,2817,7,14,0,0,2817,2818,7,22,0,0,2818,2819,7,16,0,0,2819,2820,7,10,0,0,2820,416,1,0,0,0,2821,2822,7,10,0,0,2822,2823,7,26,0,0,2823,2824,7,24,0,0,2824,2825,7,6,0,0,2825,2826,7,5,0,0,2826,2827,7,17,0,0,2827,2828,7,7,0,0,2828,418,1,0,0,0,2829,2830,7,10,0,0,2830,2831,7,26,0,0,2831,2832,7,16,0,0,2832,2833,7,10,0,0,2833,2834,7,7,0,0,2834,2835,7,9,0,0,2835,2836,7,17,0,0,2836,2837,7,19,0,0,2837,2838,7,7,0,0,2838,420,1,0,0,0,2839,2840,7,10,0,0,2840,2841,7,26,0,0,2841,2842,7,16,0,0,2842,2843,7,10,0,0,2843,2844,7,13,0,0,2844,2845,7,7,0,0,2845,2846,7,5,0,0,2846,2847,7,6,0,0,2847,422,1,0,0,0,2848,2849,7,25,0,0,2849,2850,7,5,0,0,2850,2851,7,15,0,0,2851,2852,7,17,0,0,2852,2853,7,6,0,0,2853,2854,7,8,0,0,2854,424,1,0,0,0,2855,2856,7,25,0,0,2856,2857,7,17,0,0,2857,2858,7,13,0,0,2858,2859,7,9,0,0,2859,2860,7,16,0,0,2860,426,1,0,0,0,2861,2862,7,25,0,0,2862,2863,7,19,0,0,2863,2864,7,6,0,0,2864,2865,7,6,0,0,2865,2866,7,19,0,0,2866,2867,7,29,0,0,2867,2868,7,17,0,0,2868,2869,7,7,0,0,2869,2870,7,23,0,0,2870,428,1,0,0,0,2871,2872,7,25,0,0,2872,2873,7,19,0,0,2873,2874,7,13,0,0,2874,2875,7,14,0,0,2875,2876,7,10,0,0,2876,430,1,0,0,0,2877,2878,7,25,0,0,2878,2879,7,19,0,0,2879,2880,7,13,0,0,2880,2881,7,29,0,0,2881,2882,7,5,0,0,2882,2883,7,13,0,0,2883,2884,7,12,0,0,2884,432,1,0,0,0,2885,2886,7,25,0,0,2886,2887,7,22,0,0,2887,2888,7,7,0,0,2888,2889,7,14,0,0,2889,2890,7,16,0,0,2890,2891,7,17,0,0,2891,2892,7,19,0,0,2892,2893,7,7,0,0,2893,434,1,0,0,0,2894,2895,7,25,0,0,2895,2896,7,22,0,0,2896,2897,7,7,0,0,2897,2898,7,14,0,0,2898,2899,7,16,0,0,2899,2900,7,17,0,0,2900,2901,7,19,0,0,2901,2902,7,7,0,0,2902,2903,7,9,0,0,2903,436,1,0,0,0,2904,2905,7,23,0,0,2905,2906,7,6,0,0,2906,2907,7,19,0,0,2907,2908,7,18,0,0,2908,2909,7,5,0,0,2909,2910,7,6,0,0,2910,438,1,0,0,0,2911,2912,7,23,0,0,2912,2913,7,13,0,0,2913,2914,7,5,0,0,2914,2915,7,7,0,0,2915,2916,7,16,0,0,2916,2917,7,10,0,0,2917,2918,7,12,0,0,2918,440,1,0,0,0,2919,2920,7,20,0,0,2920,2921,7,5,0,0,2921,2922,7,7,0,0,2922,2923,7,12,0,0,2923,2924,7,6,0,0,2924,2925,7,10,0,0,2925,2926,7,13,0,0,2926,442,1,0,0,0,2927,2928,7,20,0,0,2928,2929,7,10,0,0,2929,2930,7,5,0,0,2930,2931,7,12,0,0,2931,2932,7,10,0,0,2932,2933,7,13,0,0,2933,444,1,0,0,0,2934,2935,7,20,0,0,2935,2936,7,19,0,0,2936,2937,7,6,0,0,2937,2938,7,12,0,0,2938,446,1,0,0,0,2939,2940,7,20,0,0,2940,2941,7,19,0,0,2941,2942,7,22,0,0,2942,2943,7,13,0,0,2943,448,1,0,0,0,2944,2945,7,17,0,0,2945,2946,7,12,0,0,2946,2947,7,10,0,0,2947,2948,7,7,0,0,2948,2949,7,16,0,0,2949,2950,7,17,0,0,2950,2951,7,16,0,0,2951,2952,7,8,0,0,2952,450,1,0,0,0,2953,2954,7,17,0,0,2954,2955,7,25,0,0,2955,452,1,0,0,0,2956,2957,7,17,0,0,2957,2958,7,15,0,0,2958,2959,7,15,0,0,2959,2960,7,10,0,0,2960,2961,7,12,0,0,2961,2962,7,17,0,0,2962,2963,7,5,0,0,2963,2964,7,16,0,0,2964,2965,7,10,0,0,2965,454,1,0,0,0,2966,2967,7,17,0,0,2967,2968,7,15,0,0,2968,2969,7,15,0,0,2969,2970,7,22,0,0,2970,2971,7,16,0,0,2971,2972,7,5,0,0,2972,2973,7,18,0,0,2973,2974,7,6,0,0,2974,2975,7,10,0,0,2975,456,1,0,0,0,2976,2977,7,17,0,0,2977,2978,7,15,0,0,2978,2979,7,24,0,0,2979,2980,7,6,0,0,2980,2981,7,17,0,0,2981,2982,7,14,0,0,2982,2983,7,17,0,0,2983,2984,7,16,0,0,2984,458,1,0,0,0,2985,2986,7,17,0,0,2986,2987,7,7,0,0,2987,2988,7,14,0,0,2988,2989,7,6,0,0,2989,2990,7,22,0,0,2990,2991,7,12,0,0,2991,2992,7,17,0,0,2992,2993,7,7,0,0,2993,2994,7,23,0,0,2994,460,1,0,0,0,2995,2996,7,17,0,0,2996,2997,7,7,0,0,2997,2998,7,14,0,0,2998,2999,7,13,0,0,2999,3e3,7,10,0,0,3e3,3001,7,15,0,0,3001,3002,7,10,0,0,3002,3003,7,7,0,0,3003,3004,7,16,0,0,3004,462,1,0,0,0,3005,3006,7,17,0,0,3006,3007,7,7,0,0,3007,3008,7,12,0,0,3008,3009,7,10,0,0,3009,3010,7,26,0,0,3010,464,1,0,0,0,3011,3012,7,17,0,0,3012,3013,7,7,0,0,3013,3014,7,12,0,0,3014,3015,7,10,0,0,3015,3016,7,26,0,0,3016,3017,7,10,0,0,3017,3018,7,9,0,0,3018,466,1,0,0,0,3019,3020,7,17,0,0,3020,3021,7,7,0,0,3021,3022,7,20,0,0,3022,3023,7,10,0,0,3023,3024,7,13,0,0,3024,3025,7,17,0,0,3025,3026,7,16,0,0,3026,468,1,0,0,0,3027,3028,7,17,0,0,3028,3029,7,7,0,0,3029,3030,7,20,0,0,3030,3031,7,10,0,0,3031,3032,7,13,0,0,3032,3033,7,17,0,0,3033,3034,7,16,0,0,3034,3035,7,9,0,0,3035,470,1,0,0,0,3036,3037,7,17,0,0,3037,3038,7,7,0,0,3038,3039,7,6,0,0,3039,3040,7,17,0,0,3040,3041,7,7,0,0,3041,3042,7,10,0,0,3042,472,1,0,0,0,3043,3044,7,17,0,0,3044,3045,7,7,0,0,3045,3046,7,9,0,0,3046,3047,7,10,0,0,3047,3048,7,7,0,0,3048,3049,7,9,0,0,3049,3050,7,17,0,0,3050,3051,7,16,0,0,3051,3052,7,17,0,0,3052,3053,7,27,0,0,3053,3054,7,10,0,0,3054,474,1,0,0,0,3055,3056,7,17,0,0,3056,3057,7,7,0,0,3057,3058,7,9,0,0,3058,3059,7,10,0,0,3059,3060,7,13,0,0,3060,3061,7,16,0,0,3061,476,1,0,0,0,3062,3063,7,17,0,0,3063,3064,7,7,0,0,3064,3065,7,9,0,0,3065,3066,7,16,0,0,3066,3067,7,10,0,0,3067,3068,7,5,0,0,3068,3069,7,12,0,0,3069,478,1,0,0,0,3070,3071,7,17,0,0,3071,3072,7,7,0,0,3072,3073,7,27,0,0,3073,3074,7,19,0,0,3074,3075,7,21,0,0,3075,3076,7,10,0,0,3076,3077,7,13,0,0,3077,480,1,0,0,0,3078,3079,7,17,0,0,3079,3080,7,9,0,0,3080,3081,7,19,0,0,3081,3082,7,6,0,0,3082,3083,7,5,0,0,3083,3084,7,16,0,0,3084,3085,7,17,0,0,3085,3086,7,19,0,0,3086,3087,7,7,0,0,3087,482,1,0,0,0,3088,3089,7,21,0,0,3089,3090,7,10,0,0,3090,3091,7,8,0,0,3091,484,1,0,0,0,3092,3093,7,6,0,0,3093,3094,7,5,0,0,3094,3095,7,18,0,0,3095,3096,7,10,0,0,3096,3097,7,6,0,0,3097,486,1,0,0,0,3098,3099,7,6,0,0,3099,3100,7,5,0,0,3100,3101,7,7,0,0,3101,3102,7,23,0,0,3102,3103,7,22,0,0,3103,3104,7,5,0,0,3104,3105,7,23,0,0,3105,3106,7,10,0,0,3106,488,1,0,0,0,3107,3108,7,6,0,0,3108,3109,7,5,0,0,3109,3110,7,13,0,0,3110,3111,7,23,0,0,3111,3112,7,10,0,0,3112,490,1,0,0,0,3113,3114,7,6,0,0,3114,3115,7,5,0,0,3115,3116,7,9,0,0,3116,3117,7,16,0,0,3117,492,1,0,0,0,3118,3119,7,6,0,0,3119,3120,7,10,0,0,3120,3121,7,5,0,0,3121,3122,7,21,0,0,3122,3123,7,24,0,0,3123,3124,7,13,0,0,3124,3125,7,19,0,0,3125,3126,7,19,0,0,3126,3127,7,25,0,0,3127,494,1,0,0,0,3128,3129,7,6,0,0,3129,3130,7,10,0,0,3130,3131,7,27,0,0,3131,3132,7,10,0,0,3132,3133,7,6,0,0,3133,496,1,0,0,0,3134,3135,7,6,0,0,3135,3136,7,17,0,0,3136,3137,7,9,0,0,3137,3138,7,16,0,0,3138,3139,7,10,0,0,3139,3140,7,7,0,0,3140,498,1,0,0,0,3141,3142,7,6,0,0,3142,3143,7,19,0,0,3143,3144,7,5,0,0,3144,3145,7,12,0,0,3145,500,1,0,0,0,3146,3147,7,6,0,0,3147,3148,7,19,0,0,3148,3149,7,14,0,0,3149,3150,7,5,0,0,3150,3151,7,6,0,0,3151,502,1,0,0,0,3152,3153,7,6,0,0,3153,3154,7,19,0,0,3154,3155,7,14,0,0,3155,3156,7,5,0,0,3156,3157,7,16,0,0,3157,3158,7,17,0,0,3158,3159,7,19,0,0,3159,3160,7,7,0,0,3160,504,1,0,0,0,3161,3162,7,6,0,0,3162,3163,7,19,0,0,3163,3164,7,14,0,0,3164,3165,7,21,0,0,3165,506,1,0,0,0,3166,3167,7,15,0,0,3167,3168,7,5,0,0,3168,3169,7,24,0,0,3169,3170,7,24,0,0,3170,3171,7,17,0,0,3171,3172,7,7,0,0,3172,3173,7,23,0,0,3173,508,1,0,0,0,3174,3175,7,15,0,0,3175,3176,7,5,0,0,3176,3177,7,16,0,0,3177,3178,7,14,0,0,3178,3179,7,20,0,0,3179,510,1,0,0,0,3180,3181,7,15,0,0,3181,3182,7,5,0,0,3182,3183,7,16,0,0,3183,3184,7,14,0,0,3184,3185,7,20,0,0,3185,3186,7,10,0,0,3186,3187,7,12,0,0,3187,512,1,0,0,0,3188,3189,7,15,0,0,3189,3190,7,5,0,0,3190,3191,7,16,0,0,3191,3192,7,10,0,0,3192,3193,7,13,0,0,3193,3194,7,17,0,0,3194,3195,7,5,0,0,3195,3196,7,6,0,0,3196,3197,7,17,0,0,3197,3198,7,11,0,0,3198,3199,7,10,0,0,3199,3200,7,12,0,0,3200,514,1,0,0,0,3201,3202,7,15,0,0,3202,3203,7,5,0,0,3203,3204,7,26,0,0,3204,3205,7,27,0,0,3205,3206,7,5,0,0,3206,3207,7,6,0,0,3207,3208,7,22,0,0,3208,3209,7,10,0,0,3209,516,1,0,0,0,3210,3211,7,15,0,0,3211,3212,7,10,0,0,3212,3213,7,13,0,0,3213,3214,7,23,0,0,3214,3215,7,10,0,0,3215,518,1,0,0,0,3216,3217,7,15,0,0,3217,3218,7,17,0,0,3218,3219,7,7,0,0,3219,3220,7,22,0,0,3220,3221,7,16,0,0,3221,3222,7,10,0,0,3222,520,1,0,0,0,3223,3224,7,15,0,0,3224,3225,7,17,0,0,3225,3226,7,7,0,0,3226,3227,7,27,0,0,3227,3228,7,5,0,0,3228,3229,7,6,0,0,3229,3230,7,22,0,0,3230,3231,7,10,0,0,3231,522,1,0,0,0,3232,3233,7,15,0,0,3233,3234,7,19,0,0,3234,3235,7,12,0,0,3235,3236,7,10,0,0,3236,524,1,0,0,0,3237,3238,7,15,0,0,3238,3239,7,19,0,0,3239,3240,7,7,0,0,3240,3241,7,16,0,0,3241,3242,7,20,0,0,3242,526,1,0,0,0,3243,3244,7,15,0,0,3244,3245,7,19,0,0,3245,3246,7,27,0,0,3246,3247,7,10,0,0,3247,528,1,0,0,0,3248,3249,7,7,0,0,3249,3250,7,5,0,0,3250,3251,7,15,0,0,3251,3252,7,10,0,0,3252,530,1,0,0,0,3253,3254,7,7,0,0,3254,3255,7,5,0,0,3255,3256,7,15,0,0,3256,3257,7,10,0,0,3257,3258,7,9,0,0,3258,532,1,0,0,0,3259,3260,7,7,0,0,3260,3261,7,10,0,0,3261,3262,7,26,0,0,3262,3263,7,16,0,0,3263,534,1,0,0,0,3264,3265,7,7,0,0,3265,3266,7,19,0,0,3266,536,1,0,0,0,3267,3268,7,7,0,0,3268,3269,7,19,0,0,3269,3270,7,16,0,0,3270,3271,7,20,0,0,3271,3272,7,17,0,0,3272,3273,7,7,0,0,3273,3274,7,23,0,0,3274,538,1,0,0,0,3275,3276,7,7,0,0,3276,3277,7,19,0,0,3277,3278,7,16,0,0,3278,3279,7,17,0,0,3279,3280,7,25,0,0,3280,3281,7,8,0,0,3281,540,1,0,0,0,3282,3283,7,7,0,0,3283,3284,7,19,0,0,3284,3285,7,29,0,0,3285,3286,7,5,0,0,3286,3287,7,17,0,0,3287,3288,7,16,0,0,3288,542,1,0,0,0,3289,3290,7,7,0,0,3290,3291,7,22,0,0,3291,3292,7,6,0,0,3292,3293,7,6,0,0,3293,3294,7,9,0,0,3294,544,1,0,0,0,3295,3296,7,19,0,0,3296,3297,7,18,0,0,3297,3298,7,30,0,0,3298,3299,7,10,0,0,3299,3300,7,14,0,0,3300,3301,7,16,0,0,3301,546,1,0,0,0,3302,3303,7,19,0,0,3303,3304,7,25,0,0,3304,548,1,0,0,0,3305,3306,7,19,0,0,3306,3307,7,25,0,0,3307,3308,7,25,0,0,3308,550,1,0,0,0,3309,3310,7,19,0,0,3310,3311,7,17,0,0,3311,3312,7,12,0,0,3312,3313,7,9,0,0,3313,552,1,0,0,0,3314,3315,7,19,0,0,3315,3316,7,24,0,0,3316,3317,7,10,0,0,3317,3318,7,13,0,0,3318,3319,7,5,0,0,3319,3320,7,16,0,0,3320,3321,7,19,0,0,3321,3322,7,13,0,0,3322,554,1,0,0,0,3323,3324,7,19,0,0,3324,3325,7,24,0,0,3325,3326,7,16,0,0,3326,3327,7,17,0,0,3327,3328,7,19,0,0,3328,3329,7,7,0,0,3329,556,1,0,0,0,3330,3331,7,19,0,0,3331,3332,7,24,0,0,3332,3333,7,16,0,0,3333,3334,7,17,0,0,3334,3335,7,19,0,0,3335,3336,7,7,0,0,3336,3337,7,9,0,0,3337,558,1,0,0,0,3338,3339,7,19,0,0,3339,3340,7,29,0,0,3340,3341,7,7,0,0,3341,3342,7,10,0,0,3342,3343,7,12,0,0,3343,560,1,0,0,0,3344,3345,7,19,0,0,3345,3346,7,29,0,0,3346,3347,7,7,0,0,3347,3348,7,10,0,0,3348,3349,7,13,0,0,3349,562,1,0,0,0,3350,3351,7,24,0,0,3351,3352,7,5,0,0,3352,3353,7,13,0,0,3353,3354,7,9,0,0,3354,3355,7,10,0,0,3355,3356,7,13,0,0,3356,564,1,0,0,0,3357,3358,7,24,0,0,3358,3359,7,5,0,0,3359,3360,7,13,0,0,3360,3361,7,16,0,0,3361,3362,7,17,0,0,3362,3363,7,5,0,0,3363,3364,7,6,0,0,3364,566,1,0,0,0,3365,3366,7,24,0,0,3366,3367,7,5,0,0,3367,3368,7,13,0,0,3368,3369,7,16,0,0,3369,3370,7,17,0,0,3370,3371,7,16,0,0,3371,3372,7,17,0,0,3372,3373,7,19,0,0,3373,3374,7,7,0,0,3374,568,1,0,0,0,3375,3376,7,24,0,0,3376,3377,7,5,0,0,3377,3378,7,9,0,0,3378,3379,7,9,0,0,3379,3380,7,17,0,0,3380,3381,7,7,0,0,3381,3382,7,23,0,0,3382,570,1,0,0,0,3383,3384,7,24,0,0,3384,3385,7,5,0,0,3385,3386,7,9,0,0,3386,3387,7,9,0,0,3387,3388,7,29,0,0,3388,3389,7,19,0,0,3389,3390,7,13,0,0,3390,3391,7,12,0,0,3391,572,1,0,0,0,3392,3393,7,24,0,0,3393,3394,7,6,0,0,3394,3395,7,5,0,0,3395,3396,7,7,0,0,3396,3397,7,9,0,0,3397,574,1,0,0,0,3398,3399,7,24,0,0,3399,3400,7,13,0,0,3400,3401,7,10,0,0,3401,3402,7,14,0,0,3402,3403,7,10,0,0,3403,3404,7,12,0,0,3404,3405,7,17,0,0,3405,3406,7,7,0,0,3406,3407,7,23,0,0,3407,576,1,0,0,0,3408,3409,7,24,0,0,3409,3410,7,13,0,0,3410,3411,7,10,0,0,3411,3412,7,24,0,0,3412,3413,7,5,0,0,3413,3414,7,13,0,0,3414,3415,7,10,0,0,3415,578,1,0,0,0,3416,3417,7,24,0,0,3417,3418,7,13,0,0,3418,3419,7,10,0,0,3419,3420,7,24,0,0,3420,3421,7,5,0,0,3421,3422,7,13,0,0,3422,3423,7,10,0,0,3423,3424,7,12,0,0,3424,580,1,0,0,0,3425,3426,7,24,0,0,3426,3427,7,13,0,0,3427,3428,7,10,0,0,3428,3429,7,9,0,0,3429,3430,7,10,0,0,3430,3431,7,13,0,0,3431,3432,7,27,0,0,3432,3433,7,10,0,0,3433,582,1,0,0,0,3434,3435,7,24,0,0,3435,3436,7,13,0,0,3436,3437,7,17,0,0,3437,3438,7,19,0,0,3438,3439,7,13,0,0,3439,584,1,0,0,0,3440,3441,7,24,0,0,3441,3442,7,13,0,0,3442,3443,7,17,0,0,3443,3444,7,27,0,0,3444,3445,7,17,0,0,3445,3446,7,6,0,0,3446,3447,7,10,0,0,3447,3448,7,23,0,0,3448,3449,7,10,0,0,3449,3450,7,9,0,0,3450,586,1,0,0,0,3451,3452,7,24,0,0,3452,3453,7,13,0,0,3453,3454,7,19,0,0,3454,3455,7,14,0,0,3455,3456,7,10,0,0,3456,3457,7,12,0,0,3457,3458,7,22,0,0,3458,3459,7,13,0,0,3459,3460,7,5,0,0,3460,3461,7,6,0,0,3461,588,1,0,0,0,3462,3463,7,24,0,0,3463,3464,7,13,0,0,3464,3465,7,19,0,0,3465,3466,7,14,0,0,3466,3467,7,10,0,0,3467,3468,7,12,0,0,3468,3469,7,22,0,0,3469,3470,7,13,0,0,3470,3471,7,10,0,0,3471,590,1,0,0,0,3472,3473,7,24,0,0,3473,3474,7,13,0,0,3474,3475,7,19,0,0,3475,3476,7,23,0,0,3476,3477,7,13,0,0,3477,3478,7,5,0,0,3478,3479,7,15,0,0,3479,592,1,0,0,0,3480,3481,7,28,0,0,3481,3482,7,22,0,0,3482,3483,7,19,0,0,3483,3484,7,16,0,0,3484,3485,7,10,0,0,3485,594,1,0,0,0,3486,3487,7,13,0,0,3487,3488,7,5,0,0,3488,3489,7,7,0,0,3489,3490,7,23,0,0,3490,3491,7,10,0,0,3491,596,1,0,0,0,3492,3493,7,13,0,0,3493,3494,7,10,0,0,3494,3495,7,5,0,0,3495,3496,7,12,0,0,3496,598,1,0,0,0,3497,3498,7,13,0,0,3498,3499,7,10,0,0,3499,3500,7,5,0,0,3500,3501,7,9,0,0,3501,3502,7,9,0,0,3502,3503,7,17,0,0,3503,3504,7,23,0,0,3504,3505,7,7,0,0,3505,600,1,0,0,0,3506,3507,7,13,0,0,3507,3508,7,10,0,0,3508,3509,7,14,0,0,3509,3510,7,20,0,0,3510,3511,7,10,0,0,3511,3512,7,14,0,0,3512,3513,7,21,0,0,3513,602,1,0,0,0,3514,3515,7,13,0,0,3515,3516,7,10,0,0,3516,3517,7,14,0,0,3517,3518,7,22,0,0,3518,3519,7,13,0,0,3519,3520,7,9,0,0,3520,3521,7,17,0,0,3521,3522,7,27,0,0,3522,3523,7,10,0,0,3523,604,1,0,0,0,3524,3525,7,13,0,0,3525,3526,7,10,0,0,3526,3527,7,25,0,0,3527,606,1,0,0,0,3528,3529,7,13,0,0,3529,3530,7,10,0,0,3530,3531,7,25,0,0,3531,3532,7,13,0,0,3532,3533,7,10,0,0,3533,3534,7,9,0,0,3534,3535,7,20,0,0,3535,608,1,0,0,0,3536,3537,7,13,0,0,3537,3538,7,10,0,0,3538,3539,7,17,0,0,3539,3540,7,7,0,0,3540,3541,7,12,0,0,3541,3542,7,10,0,0,3542,3543,7,26,0,0,3543,610,1,0,0,0,3544,3545,7,13,0,0,3545,3546,7,10,0,0,3546,3547,7,6,0,0,3547,3548,7,5,0,0,3548,3549,7,16,0,0,3549,3550,7,17,0,0,3550,3551,7,27,0,0,3551,3552,7,10,0,0,3552,612,1,0,0,0,3553,3554,7,13,0,0,3554,3555,7,10,0,0,3555,3556,7,6,0,0,3556,3557,7,10,0,0,3557,3558,7,5,0,0,3558,3559,7,9,0,0,3559,3560,7,10,0,0,3560,614,1,0,0,0,3561,3562,7,13,0,0,3562,3563,7,10,0,0,3563,3564,7,7,0,0,3564,3565,7,5,0,0,3565,3566,7,15,0,0,3566,3567,7,10,0,0,3567,616,1,0,0,0,3568,3569,7,13,0,0,3569,3570,7,10,0,0,3570,3571,7,24,0,0,3571,3572,7,10,0,0,3572,3573,7,5,0,0,3573,3574,7,16,0,0,3574,3575,7,5,0,0,3575,3576,7,18,0,0,3576,3577,7,6,0,0,3577,3578,7,10,0,0,3578,618,1,0,0,0,3579,3580,7,13,0,0,3580,3581,7,10,0,0,3581,3582,7,24,0,0,3582,3583,7,6,0,0,3583,3584,7,5,0,0,3584,3585,7,14,0,0,3585,3586,7,10,0,0,3586,620,1,0,0,0,3587,3588,7,13,0,0,3588,3589,7,10,0,0,3589,3590,7,24,0,0,3590,3591,7,6,0,0,3591,3592,7,17,0,0,3592,3593,7,14,0,0,3593,3594,7,5,0,0,3594,622,1,0,0,0,3595,3596,7,13,0,0,3596,3597,7,10,0,0,3597,3598,7,9,0,0,3598,3599,7,10,0,0,3599,3600,7,16,0,0,3600,624,1,0,0,0,3601,3602,7,13,0,0,3602,3603,7,10,0,0,3603,3604,7,9,0,0,3604,3605,7,16,0,0,3605,3606,7,5,0,0,3606,3607,7,13,0,0,3607,3608,7,16,0,0,3608,626,1,0,0,0,3609,3610,7,13,0,0,3610,3611,7,10,0,0,3611,3612,7,9,0,0,3612,3613,7,16,0,0,3613,3614,7,13,0,0,3614,3615,7,17,0,0,3615,3616,7,14,0,0,3616,3617,7,16,0,0,3617,628,1,0,0,0,3618,3619,7,13,0,0,3619,3620,7,10,0,0,3620,3621,7,16,0,0,3621,3622,7,22,0,0,3622,3623,7,13,0,0,3623,3624,7,7,0,0,3624,3625,7,9,0,0,3625,630,1,0,0,0,3626,3627,7,13,0,0,3627,3628,7,10,0,0,3628,3629,7,27,0,0,3629,3630,7,19,0,0,3630,3631,7,21,0,0,3631,3632,7,10,0,0,3632,632,1,0,0,0,3633,3634,7,13,0,0,3634,3635,7,19,0,0,3635,3636,7,6,0,0,3636,3637,7,10,0,0,3637,634,1,0,0,0,3638,3639,7,13,0,0,3639,3640,7,19,0,0,3640,3641,7,6,0,0,3641,3642,7,6,0,0,3642,3643,7,18,0,0,3643,3644,7,5,0,0,3644,3645,7,14,0,0,3645,3646,7,21,0,0,3646,636,1,0,0,0,3647,3648,7,13,0,0,3648,3649,7,19,0,0,3649,3650,7,29,0,0,3650,3651,7,9,0,0,3651,638,1,0,0,0,3652,3653,7,13,0,0,3653,3654,7,22,0,0,3654,3655,7,6,0,0,3655,3656,7,10,0,0,3656,640,1,0,0,0,3657,3658,7,9,0,0,3658,3659,7,5,0,0,3659,3660,7,27,0,0,3660,3661,7,10,0,0,3661,3662,7,24,0,0,3662,3663,7,19,0,0,3663,3664,7,17,0,0,3664,3665,7,7,0,0,3665,3666,7,16,0,0,3666,642,1,0,0,0,3667,3668,7,9,0,0,3668,3669,7,14,0,0,3669,3670,7,20,0,0,3670,3671,7,10,0,0,3671,3672,7,15,0,0,3672,3673,7,5,0,0,3673,644,1,0,0,0,3674,3675,7,9,0,0,3675,3676,7,14,0,0,3676,3677,7,13,0,0,3677,3678,7,19,0,0,3678,3679,7,6,0,0,3679,3680,7,6,0,0,3680,646,1,0,0,0,3681,3682,7,9,0,0,3682,3683,7,10,0,0,3683,3684,7,5,0,0,3684,3685,7,13,0,0,3685,3686,7,14,0,0,3686,3687,7,20,0,0,3687,648,1,0,0,0,3688,3689,7,9,0,0,3689,3690,7,10,0,0,3690,3691,7,14,0,0,3691,3692,7,19,0,0,3692,3693,7,7,0,0,3693,3694,7,12,0,0,3694,650,1,0,0,0,3695,3696,7,9,0,0,3696,3697,7,10,0,0,3697,3698,7,14,0,0,3698,3699,7,22,0,0,3699,3700,7,13,0,0,3700,3701,7,17,0,0,3701,3702,7,16,0,0,3702,3703,7,8,0,0,3703,652,1,0,0,0,3704,3705,7,9,0,0,3705,3706,7,10,0,0,3706,3707,7,28,0,0,3707,3708,7,22,0,0,3708,3709,7,10,0,0,3709,3710,7,7,0,0,3710,3711,7,14,0,0,3711,3712,7,10,0,0,3712,654,1,0,0,0,3713,3714,7,9,0,0,3714,3715,7,10,0,0,3715,3716,7,28,0,0,3716,3717,7,22,0,0,3717,3718,7,10,0,0,3718,3719,7,7,0,0,3719,3720,7,14,0,0,3720,3721,7,10,0,0,3721,3722,7,9,0,0,3722,656,1,0,0,0,3723,3724,7,9,0,0,3724,3725,7,10,0,0,3725,3726,7,13,0,0,3726,3727,7,17,0,0,3727,3728,7,5,0,0,3728,3729,7,6,0,0,3729,3730,7,17,0,0,3730,3731,7,11,0,0,3731,3732,7,5,0,0,3732,3733,7,18,0,0,3733,3734,7,6,0,0,3734,3735,7,10,0,0,3735,658,1,0,0,0,3736,3737,7,9,0,0,3737,3738,7,10,0,0,3738,3739,7,13,0,0,3739,3740,7,27,0,0,3740,3741,7,10,0,0,3741,3742,7,13,0,0,3742,660,1,0,0,0,3743,3744,7,9,0,0,3744,3745,7,10,0,0,3745,3746,7,9,0,0,3746,3747,7,9,0,0,3747,3748,7,17,0,0,3748,3749,7,19,0,0,3749,3750,7,7,0,0,3750,662,1,0,0,0,3751,3752,7,9,0,0,3752,3753,7,10,0,0,3753,3754,7,16,0,0,3754,664,1,0,0,0,3755,3756,7,9,0,0,3756,3757,7,20,0,0,3757,3758,7,5,0,0,3758,3759,7,13,0,0,3759,3760,7,10,0,0,3760,666,1,0,0,0,3761,3762,7,9,0,0,3762,3763,7,20,0,0,3763,3764,7,19,0,0,3764,3765,7,29,0,0,3765,668,1,0,0,0,3766,3767,7,9,0,0,3767,3768,7,17,0,0,3768,3769,7,15,0,0,3769,3770,7,24,0,0,3770,3771,7,6,0,0,3771,3772,7,10,0,0,3772,670,1,0,0,0,3773,3774,7,9,0,0,3774,3775,7,7,0,0,3775,3776,7,5,0,0,3776,3777,7,24,0,0,3777,3778,7,9,0,0,3778,3779,7,20,0,0,3779,3780,7,19,0,0,3780,3781,7,16,0,0,3781,672,1,0,0,0,3782,3783,7,9,0,0,3783,3784,7,16,0,0,3784,3785,7,5,0,0,3785,3786,7,18,0,0,3786,3787,7,6,0,0,3787,3788,7,10,0,0,3788,674,1,0,0,0,3789,3790,7,9,0,0,3790,3791,7,16,0,0,3791,3792,7,5,0,0,3792,3793,7,7,0,0,3793,3794,7,12,0,0,3794,3795,7,5,0,0,3795,3796,7,6,0,0,3796,3797,7,19,0,0,3797,3798,7,7,0,0,3798,3799,7,10,0,0,3799,676,1,0,0,0,3800,3801,7,9,0,0,3801,3802,7,16,0,0,3802,3803,7,5,0,0,3803,3804,7,13,0,0,3804,3805,7,16,0,0,3805,678,1,0,0,0,3806,3807,7,9,0,0,3807,3808,7,16,0,0,3808,3809,7,5,0,0,3809,3810,7,16,0,0,3810,3811,7,10,0,0,3811,3812,7,15,0,0,3812,3813,7,10,0,0,3813,3814,7,7,0,0,3814,3815,7,16,0,0,3815,680,1,0,0,0,3816,3817,7,9,0,0,3817,3818,7,16,0,0,3818,3819,7,5,0,0,3819,3820,7,16,0,0,3820,3821,7,17,0,0,3821,3822,7,9,0,0,3822,3823,7,16,0,0,3823,3824,7,17,0,0,3824,3825,7,14,0,0,3825,3826,7,9,0,0,3826,682,1,0,0,0,3827,3828,7,9,0,0,3828,3829,7,16,0,0,3829,3830,7,12,0,0,3830,3831,7,17,0,0,3831,3832,7,7,0,0,3832,684,1,0,0,0,3833,3834,7,9,0,0,3834,3835,7,16,0,0,3835,3836,7,12,0,0,3836,3837,7,19,0,0,3837,3838,7,22,0,0,3838,3839,7,16,0,0,3839,686,1,0,0,0,3840,3841,7,9,0,0,3841,3842,7,16,0,0,3842,3843,7,19,0,0,3843,3844,7,13,0,0,3844,3845,7,5,0,0,3845,3846,7,23,0,0,3846,3847,7,10,0,0,3847,688,1,0,0,0,3848,3849,7,9,0,0,3849,3850,7,16,0,0,3850,3851,7,13,0,0,3851,3852,7,17,0,0,3852,3853,7,14,0,0,3853,3854,7,16,0,0,3854,690,1,0,0,0,3855,3856,7,9,0,0,3856,3857,7,16,0,0,3857,3858,7,13,0,0,3858,3859,7,17,0,0,3859,3860,7,24,0,0,3860,692,1,0,0,0,3861,3862,7,9,0,0,3862,3863,7,8,0,0,3863,3864,7,9,0,0,3864,3865,7,17,0,0,3865,3866,7,12,0,0,3866,694,1,0,0,0,3867,3868,7,9,0,0,3868,3869,7,8,0,0,3869,3870,7,9,0,0,3870,3871,7,16,0,0,3871,3872,7,10,0,0,3872,3873,7,15,0,0,3873,696,1,0,0,0,3874,3875,7,16,0,0,3875,3876,7,5,0,0,3876,3877,7,18,0,0,3877,3878,7,6,0,0,3878,3879,7,10,0,0,3879,3880,7,9,0,0,3880,698,1,0,0,0,3881,3882,7,16,0,0,3882,3883,7,5,0,0,3883,3884,7,18,0,0,3884,3885,7,6,0,0,3885,3886,7,10,0,0,3886,3887,7,9,0,0,3887,3888,7,24,0,0,3888,3889,7,5,0,0,3889,3890,7,14,0,0,3890,3891,7,10,0,0,3891,700,1,0,0,0,3892,3893,7,16,0,0,3893,3894,7,10,0,0,3894,3895,7,15,0,0,3895,3896,7,24,0,0,3896,702,1,0,0,0,3897,3898,7,16,0,0,3898,3899,7,10,0,0,3899,3900,7,15,0,0,3900,3901,7,24,0,0,3901,3902,7,6,0,0,3902,3903,7,5,0,0,3903,3904,7,16,0,0,3904,3905,7,10,0,0,3905,704,1,0,0,0,3906,3907,7,16,0,0,3907,3908,7,10,0,0,3908,3909,7,15,0,0,3909,3910,7,24,0,0,3910,3911,7,19,0,0,3911,3912,7,13,0,0,3912,3913,7,5,0,0,3913,3914,7,13,0,0,3914,3915,7,8,0,0,3915,706,1,0,0,0,3916,3917,7,16,0,0,3917,3918,7,10,0,0,3918,3919,7,26,0,0,3919,3920,7,16,0,0,3920,708,1,0,0,0,3921,3922,7,16,0,0,3922,3923,7,13,0,0,3923,3924,7,5,0,0,3924,3925,7,7,0,0,3925,3926,7,9,0,0,3926,3927,7,5,0,0,3927,3928,7,14,0,0,3928,3929,7,16,0,0,3929,3930,7,17,0,0,3930,3931,7,19,0,0,3931,3932,7,7,0,0,3932,710,1,0,0,0,3933,3934,7,16,0,0,3934,3935,7,13,0,0,3935,3936,7,17,0,0,3936,3937,7,23,0,0,3937,3938,7,23,0,0,3938,3939,7,10,0,0,3939,3940,7,13,0,0,3940,712,1,0,0,0,3941,3942,7,16,0,0,3942,3943,7,13,0,0,3943,3944,7,22,0,0,3944,3945,7,7,0,0,3945,3946,7,14,0,0,3946,3947,7,5,0,0,3947,3948,7,16,0,0,3948,3949,7,10,0,0,3949,714,1,0,0,0,3950,3951,7,16,0,0,3951,3952,7,13,0,0,3952,3953,7,22,0,0,3953,3954,7,9,0,0,3954,3955,7,16,0,0,3955,3956,7,10,0,0,3956,3957,7,12,0,0,3957,716,1,0,0,0,3958,3959,7,16,0,0,3959,3960,7,8,0,0,3960,3961,7,24,0,0,3961,3962,7,10,0,0,3962,718,1,0,0,0,3963,3964,7,16,0,0,3964,3965,7,8,0,0,3965,3966,7,24,0,0,3966,3967,7,10,0,0,3967,3968,7,9,0,0,3968,720,1,0,0,0,3969,3970,7,22,0,0,3970,3971,7,7,0,0,3971,3972,7,18,0,0,3972,3973,7,19,0,0,3973,3974,7,22,0,0,3974,3975,7,7,0,0,3975,3976,7,12,0,0,3976,3977,7,10,0,0,3977,3978,7,12,0,0,3978,722,1,0,0,0,3979,3980,7,22,0,0,3980,3981,7,7,0,0,3981,3982,7,14,0,0,3982,3983,7,19,0,0,3983,3984,7,15,0,0,3984,3985,7,15,0,0,3985,3986,7,17,0,0,3986,3987,7,16,0,0,3987,3988,7,16,0,0,3988,3989,7,10,0,0,3989,3990,7,12,0,0,3990,724,1,0,0,0,3991,3992,7,22,0,0,3992,3993,7,7,0,0,3993,3994,7,10,0,0,3994,3995,7,7,0,0,3995,3996,7,14,0,0,3996,3997,7,13,0,0,3997,3998,7,8,0,0,3998,3999,7,24,0,0,3999,4e3,7,16,0,0,4e3,4001,7,10,0,0,4001,4002,7,12,0,0,4002,726,1,0,0,0,4003,4004,7,22,0,0,4004,4005,7,7,0,0,4005,4006,7,21,0,0,4006,4007,7,7,0,0,4007,4008,7,19,0,0,4008,4009,7,29,0,0,4009,4010,7,7,0,0,4010,728,1,0,0,0,4011,4012,7,22,0,0,4012,4013,7,7,0,0,4013,4014,7,6,0,0,4014,4015,7,17,0,0,4015,4016,7,9,0,0,4016,4017,7,16,0,0,4017,4018,7,10,0,0,4018,4019,7,7,0,0,4019,730,1,0,0,0,4020,4021,7,22,0,0,4021,4022,7,7,0,0,4022,4023,7,6,0,0,4023,4024,7,19,0,0,4024,4025,7,23,0,0,4025,4026,7,23,0,0,4026,4027,7,10,0,0,4027,4028,7,12,0,0,4028,732,1,0,0,0,4029,4030,7,22,0,0,4030,4031,7,7,0,0,4031,4032,7,16,0,0,4032,4033,7,17,0,0,4033,4034,7,6,0,0,4034,734,1,0,0,0,4035,4036,7,22,0,0,4036,4037,7,24,0,0,4037,4038,7,12,0,0,4038,4039,7,5,0,0,4039,4040,7,16,0,0,4040,4041,7,10,0,0,4041,736,1,0,0,0,4042,4043,7,27,0,0,4043,4044,7,5,0,0,4044,4045,7,14,0,0,4045,4046,7,22,0,0,4046,4047,7,22,0,0,4047,4048,7,15,0,0,4048,738,1,0,0,0,4049,4050,7,27,0,0,4050,4051,7,5,0,0,4051,4052,7,6,0,0,4052,4053,7,17,0,0,4053,4054,7,12,0,0,4054,740,1,0,0,0,4055,4056,7,27,0,0,4056,4057,7,5,0,0,4057,4058,7,6,0,0,4058,4059,7,17,0,0,4059,4060,7,12,0,0,4060,4061,7,5,0,0,4061,4062,7,16,0,0,4062,4063,7,10,0,0,4063,742,1,0,0,0,4064,4065,7,27,0,0,4065,4066,7,5,0,0,4066,4067,7,6,0,0,4067,4068,7,17,0,0,4068,4069,7,12,0,0,4069,4070,7,5,0,0,4070,4071,7,16,0,0,4071,4072,7,19,0,0,4072,4073,7,13,0,0,4073,744,1,0,0,0,4074,4075,7,27,0,0,4075,4076,7,5,0,0,4076,4077,7,13,0,0,4077,4078,7,8,0,0,4078,4079,7,17,0,0,4079,4080,7,7,0,0,4080,4081,7,23,0,0,4081,746,1,0,0,0,4082,4083,7,27,0,0,4083,4084,7,10,0,0,4084,4085,7,13,0,0,4085,4086,7,9,0,0,4086,4087,7,17,0,0,4087,4088,7,19,0,0,4088,4089,7,7,0,0,4089,748,1,0,0,0,4090,4091,7,27,0,0,4091,4092,7,17,0,0,4092,4093,7,10,0,0,4093,4094,7,29,0,0,4094,750,1,0,0,0,4095,4096,7,27,0,0,4096,4097,7,19,0,0,4097,4098,7,6,0,0,4098,4099,7,5,0,0,4099,4100,7,16,0,0,4100,4101,7,17,0,0,4101,4102,7,6,0,0,4102,4103,7,10,0,0,4103,752,1,0,0,0,4104,4105,7,29,0,0,4105,4106,7,20,0,0,4106,4107,7,17,0,0,4107,4108,7,16,0,0,4108,4109,7,10,0,0,4109,4110,7,9,0,0,4110,4111,7,24,0,0,4111,4112,7,5,0,0,4112,4113,7,14,0,0,4113,4114,7,10,0,0,4114,754,1,0,0,0,4115,4116,7,29,0,0,4116,4117,7,17,0,0,4117,4118,7,16,0,0,4118,4119,7,20,0,0,4119,4120,7,19,0,0,4120,4121,7,22,0,0,4121,4122,7,16,0,0,4122,756,1,0,0,0,4123,4124,7,29,0,0,4124,4125,7,19,0,0,4125,4126,7,13,0,0,4126,4127,7,21,0,0,4127,758,1,0,0,0,4128,4129,7,29,0,0,4129,4130,7,13,0,0,4130,4131,7,5,0,0,4131,4132,7,24,0,0,4132,4133,7,24,0,0,4133,4134,7,10,0,0,4134,4135,7,13,0,0,4135,760,1,0,0,0,4136,4137,7,29,0,0,4137,4138,7,13,0,0,4138,4139,7,17,0,0,4139,4140,7,16,0,0,4140,4141,7,10,0,0,4141,762,1,0,0,0,4142,4143,7,26,0,0,4143,4144,7,15,0,0,4144,4145,7,6,0,0,4145,764,1,0,0,0,4146,4147,7,8,0,0,4147,4148,7,10,0,0,4148,4149,7,5,0,0,4149,4150,7,13,0,0,4150,766,1,0,0,0,4151,4152,7,8,0,0,4152,4153,7,10,0,0,4153,4154,7,9,0,0,4154,768,1,0,0,0,4155,4156,7,11,0,0,4156,4157,7,19,0,0,4157,4158,7,7,0,0,4158,4159,7,10,0,0,4159,770,1,0,0,0,4160,4161,7,18,0,0,4161,4162,7,10,0,0,4162,4163,7,16,0,0,4163,4164,7,29,0,0,4164,4165,7,10,0,0,4165,4166,7,10,0,0,4166,4167,7,7,0,0,4167,772,1,0,0,0,4168,4169,7,18,0,0,4169,4170,7,17,0,0,4170,4171,7,23,0,0,4171,4172,7,17,0,0,4172,4173,7,7,0,0,4173,4174,7,16,0,0,4174,774,1,0,0,0,4175,4176,7,18,0,0,4176,4177,7,17,0,0,4177,4178,7,16,0,0,4178,776,1,0,0,0,4179,4180,7,18,0,0,4180,4181,7,19,0,0,4181,4182,7,19,0,0,4182,4183,7,6,0,0,4183,4184,7,10,0,0,4184,4185,7,5,0,0,4185,4186,7,7,0,0,4186,778,1,0,0,0,4187,4188,7,14,0,0,4188,4189,7,20,0,0,4189,4190,7,5,0,0,4190,4191,7,13,0,0,4191,780,1,0,0,0,4192,4193,7,14,0,0,4193,4194,7,20,0,0,4194,4195,7,5,0,0,4195,4196,7,13,0,0,4196,4197,7,5,0,0,4197,4198,7,14,0,0,4198,4199,7,16,0,0,4199,4200,7,10,0,0,4200,4201,7,13,0,0,4201,782,1,0,0,0,4202,4203,7,14,0,0,4203,4204,7,19,0,0,4204,4205,7,5,0,0,4205,4206,7,6,0,0,4206,4207,7,10,0,0,4207,4208,7,9,0,0,4208,4209,7,14,0,0,4209,4210,7,10,0,0,4210,784,1,0,0,0,4211,4212,7,12,0,0,4212,4213,7,10,0,0,4213,4214,7,14,0,0,4214,786,1,0,0,0,4215,4216,7,12,0,0,4216,4217,7,10,0,0,4217,4218,7,14,0,0,4218,4219,7,17,0,0,4219,4220,7,15,0,0,4220,4221,7,5,0,0,4221,4222,7,6,0,0,4222,788,1,0,0,0,4223,4224,7,10,0,0,4224,4225,7,26,0,0,4225,4226,7,17,0,0,4226,4227,7,9,0,0,4227,4228,7,16,0,0,4228,4229,7,9,0,0,4229,790,1,0,0,0,4230,4231,7,10,0,0,4231,4232,7,26,0,0,4232,4233,7,16,0,0,4233,4234,7,13,0,0,4234,4235,7,5,0,0,4235,4236,7,14,0,0,4236,4237,7,16,0,0,4237,792,1,0,0,0,4238,4239,7,25,0,0,4239,4240,7,6,0,0,4240,4241,7,19,0,0,4241,4242,7,5,0,0,4242,4243,7,16,0,0,4243,794,1,0,0,0,4244,4245,7,23,0,0,4245,4246,7,13,0,0,4246,4247,7,10,0,0,4247,4248,7,5,0,0,4248,4249,7,16,0,0,4249,4250,7,10,0,0,4250,4251,7,9,0,0,4251,4252,7,16,0,0,4252,796,1,0,0,0,4253,4254,7,17,0,0,4254,4255,7,7,0,0,4255,4256,7,19,0,0,4256,4257,7,22,0,0,4257,4258,7,16,0,0,4258,798,1,0,0,0,4259,4260,7,17,0,0,4260,4261,7,7,0,0,4261,4262,7,16,0,0,4262,800,1,0,0,0,4263,4264,7,17,0,0,4264,4265,7,7,0,0,4265,4266,7,16,0,0,4266,4267,7,10,0,0,4267,4268,7,23,0,0,4268,4269,7,10,0,0,4269,4270,7,13,0,0,4270,802,1,0,0,0,4271,4272,7,17,0,0,4272,4273,7,7,0,0,4273,4274,7,16,0,0,4274,4275,7,10,0,0,4275,4276,7,13,0,0,4276,4277,7,27,0,0,4277,4278,7,5,0,0,4278,4279,7,6,0,0,4279,804,1,0,0,0,4280,4281,7,6,0,0,4281,4282,7,10,0,0,4282,4283,7,5,0,0,4283,4284,7,9,0,0,4284,4285,7,16,0,0,4285,806,1,0,0,0,4286,4287,7,7,0,0,4287,4288,7,5,0,0,4288,4289,7,16,0,0,4289,4290,7,17,0,0,4290,4291,7,19,0,0,4291,4292,7,7,0,0,4292,4293,7,5,0,0,4293,4294,7,6,0,0,4294,808,1,0,0,0,4295,4296,7,7,0,0,4296,4297,7,14,0,0,4297,4298,7,20,0,0,4298,4299,7,5,0,0,4299,4300,7,13,0,0,4300,810,1,0,0,0,4301,4302,7,7,0,0,4302,4303,7,19,0,0,4303,4304,7,7,0,0,4304,4305,7,10,0,0,4305,812,1,0,0,0,4306,4307,7,7,0,0,4307,4308,7,22,0,0,4308,4309,7,6,0,0,4309,4310,7,6,0,0,4310,4311,7,17,0,0,4311,4312,7,25,0,0,4312,814,1,0,0,0,4313,4314,7,7,0,0,4314,4315,7,22,0,0,4315,4316,7,15,0,0,4316,4317,7,10,0,0,4317,4318,7,13,0,0,4318,4319,7,17,0,0,4319,4320,7,14,0,0,4320,816,1,0,0,0,4321,4322,7,19,0,0,4322,4323,7,27,0,0,4323,4324,7,10,0,0,4324,4325,7,13,0,0,4325,4326,7,6,0,0,4326,4327,7,5,0,0,4327,4328,7,8,0,0,4328,818,1,0,0,0,4329,4330,7,24,0,0,4330,4331,7,19,0,0,4331,4332,7,9,0,0,4332,4333,7,17,0,0,4333,4334,7,16,0,0,4334,4335,7,17,0,0,4335,4336,7,19,0,0,4336,4337,7,7,0,0,4337,820,1,0,0,0,4338,4339,7,24,0,0,4339,4340,7,13,0,0,4340,4341,7,10,0,0,4341,4342,7,14,0,0,4342,4343,7,17,0,0,4343,4344,7,9,0,0,4344,4345,7,17,0,0,4345,4346,7,19,0,0,4346,4347,7,7,0,0,4347,822,1,0,0,0,4348,4349,7,13,0,0,4349,4350,7,10,0,0,4350,4351,7,5,0,0,4351,4352,7,6,0,0,4352,824,1,0,0,0,4353,4354,7,13,0,0,4354,4355,7,19,0,0,4355,4356,7,29,0,0,4356,826,1,0,0,0,4357,4358,7,9,0,0,4358,4359,7,10,0,0,4359,4360,7,16,0,0,4360,4361,7,19,0,0,4361,4362,7,25,0,0,4362,828,1,0,0,0,4363,4364,7,9,0,0,4364,4365,7,15,0,0,4365,4366,7,5,0,0,4366,4367,7,6,0,0,4367,4368,7,6,0,0,4368,4369,7,17,0,0,4369,4370,7,7,0,0,4370,4371,7,16,0,0,4371,830,1,0,0,0,4372,4373,7,9,0,0,4373,4374,7,22,0,0,4374,4375,7,18,0,0,4375,4376,7,9,0,0,4376,4377,7,16,0,0,4377,4378,7,13,0,0,4378,4379,7,17,0,0,4379,4380,7,7,0,0,4380,4381,7,23,0,0,4381,832,1,0,0,0,4382,4383,7,16,0,0,4383,4384,7,17,0,0,4384,4385,7,15,0,0,4385,4386,7,10,0,0,4386,834,1,0,0,0,4387,4388,7,16,0,0,4388,4389,7,17,0,0,4389,4390,7,15,0,0,4390,4391,7,10,0,0,4391,4392,7,9,0,0,4392,4393,7,16,0,0,4393,4394,7,5,0,0,4394,4395,7,15,0,0,4395,4396,7,24,0,0,4396,836,1,0,0,0,4397,4398,7,16,0,0,4398,4399,7,13,0,0,4399,4400,7,10,0,0,4400,4401,7,5,0,0,4401,4402,7,16,0,0,4402,838,1,0,0,0,4403,4404,7,16,0,0,4404,4405,7,13,0,0,4405,4406,7,17,0,0,4406,4407,7,15,0,0,4407,840,1,0,0,0,4408,4409,7,27,0,0,4409,4410,7,5,0,0,4410,4411,7,6,0,0,4411,4412,7,22,0,0,4412,4413,7,10,0,0,4413,4414,7,9,0,0,4414,842,1,0,0,0,4415,4416,7,27,0,0,4416,4417,7,5,0,0,4417,4418,7,13,0,0,4418,4419,7,14,0,0,4419,4420,7,20,0,0,4420,4421,7,5,0,0,4421,4422,7,13,0,0,4422,844,1,0,0,0,4423,4424,7,26,0,0,4424,4425,7,15,0,0,4425,4426,7,6,0,0,4426,4427,7,5,0,0,4427,4428,7,16,0,0,4428,4429,7,16,0,0,4429,4430,7,13,0,0,4430,4431,7,17,0,0,4431,4432,7,18,0,0,4432,4433,7,22,0,0,4433,4434,7,16,0,0,4434,4435,7,10,0,0,4435,4436,7,9,0,0,4436,846,1,0,0,0,4437,4438,7,26,0,0,4438,4439,7,15,0,0,4439,4440,7,6,0,0,4440,4441,7,14,0,0,4441,4442,7,19,0,0,4442,4443,7,15,0,0,4443,4444,7,15,0,0,4444,4445,7,10,0,0,4445,4446,7,7,0,0,4446,4447,7,16,0,0,4447,848,1,0,0,0,4448,4449,7,26,0,0,4449,4450,7,15,0,0,4450,4451,7,6,0,0,4451,4452,7,5,0,0,4452,4453,7,23,0,0,4453,4454,7,23,0,0,4454,850,1,0,0,0,4455,4456,7,26,0,0,4456,4457,7,15,0,0,4457,4458,7,6,0,0,4458,4459,5,95,0,0,4459,4460,7,17,0,0,4460,4461,7,9,0,0,4461,4462,5,95,0,0,4462,4463,7,29,0,0,4463,4464,7,10,0,0,4464,4465,7,6,0,0,4465,4466,7,6,0,0,4466,4467,5,95,0,0,4467,4468,7,25,0,0,4468,4469,7,19,0,0,4469,4470,7,13,0,0,4470,4471,7,15,0,0,4471,4472,7,10,0,0,4472,4473,7,12,0,0,4473,852,1,0,0,0,4474,4475,7,26,0,0,4475,4476,7,15,0,0,4476,4477,7,6,0,0,4477,4478,5,95,0,0,4478,4479,7,17,0,0,4479,4480,7,9,0,0,4480,4481,5,95,0,0,4481,4482,7,29,0,0,4482,4483,7,10,0,0,4483,4484,7,6,0,0,4484,4485,7,6,0,0,4485,4486,5,95,0,0,4486,4487,7,25,0,0,4487,4488,7,19,0,0,4488,4489,7,13,0,0,4489,4490,7,15,0,0,4490,4491,7,10,0,0,4491,4492,7,12,0,0,4492,4493,5,95,0,0,4493,4494,7,12,0,0,4494,4495,7,19,0,0,4495,4496,7,14,0,0,4496,4497,7,22,0,0,4497,4498,7,15,0,0,4498,4499,7,10,0,0,4499,4500,7,7,0,0,4500,4501,7,16,0,0,4501,854,1,0,0,0,4502,4503,7,26,0,0,4503,4504,7,15,0,0,4504,4505,7,6,0,0,4505,4506,5,95,0,0,4506,4507,7,17,0,0,4507,4508,7,9,0,0,4508,4509,5,95,0,0,4509,4510,7,29,0,0,4510,4511,7,10,0,0,4511,4512,7,6,0,0,4512,4513,7,6,0,0,4513,4514,5,95,0,0,4514,4515,7,25,0,0,4515,4516,7,19,0,0,4516,4517,7,13,0,0,4517,4518,7,15,0,0,4518,4519,7,10,0,0,4519,4520,7,12,0,0,4520,4521,5,95,0,0,4521,4522,7,14,0,0,4522,4523,7,19,0,0,4523,4524,7,7,0,0,4524,4525,7,16,0,0,4525,4526,7,10,0,0,4526,4527,7,7,0,0,4527,4528,7,16,0,0,4528,856,1,0,0,0,4529,4530,7,26,0,0,4530,4531,7,24,0,0,4531,4532,7,5,0,0,4532,4533,7,16,0,0,4533,4534,7,20,0,0,4534,858,1,0,0,0,4535,4536,7,26,0,0,4536,4537,7,24,0,0,4537,4538,7,5,0,0,4538,4539,7,16,0,0,4539,4540,7,20,0,0,4540,4541,5,95,0,0,4541,4542,7,10,0,0,4542,4543,7,26,0,0,4543,4544,7,17,0,0,4544,4545,7,9,0,0,4545,4546,7,16,0,0,4546,4547,7,9,0,0,4547,860,1,0,0,0,4548,4549,7,26,0,0,4549,4550,7,15,0,0,4550,4551,7,6,0,0,4551,4552,7,14,0,0,4552,4553,7,19,0,0,4553,4554,7,7,0,0,4554,4555,7,14,0,0,4555,4556,7,5,0,0,4556,4557,7,16,0,0,4557,862,1,0,0,0,4558,4559,7,26,0,0,4559,4560,7,15,0,0,4560,4561,7,6,0,0,4561,4562,7,10,0,0,4562,4563,7,6,0,0,4563,4564,7,10,0,0,4564,4565,7,15,0,0,4565,4566,7,10,0,0,4566,4567,7,7,0,0,4567,4568,7,16,0,0,4568,864,1,0,0,0,4569,4570,7,26,0,0,4570,4571,7,15,0,0,4571,4572,7,6,0,0,4572,4573,7,10,0,0,4573,4574,7,26,0,0,4574,4575,7,17,0,0,4575,4576,7,9,0,0,4576,4577,7,16,0,0,4577,4578,7,9,0,0,4578,866,1,0,0,0,4579,4580,7,26,0,0,4580,4581,7,15,0,0,4581,4582,7,6,0,0,4582,4583,7,25,0,0,4583,4584,7,19,0,0,4584,4585,7,13,0,0,4585,4586,7,10,0,0,4586,4587,7,9,0,0,4587,4588,7,16,0,0,4588,868,1,0,0,0,4589,4590,7,26,0,0,4590,4591,7,15,0,0,4591,4592,7,6,0,0,4592,4593,7,24,0,0,4593,4594,7,5,0,0,4594,4595,7,13,0,0,4595,4596,7,9,0,0,4596,4597,7,10,0,0,4597,870,1,0,0,0,4598,4599,7,26,0,0,4599,4600,7,15,0,0,4600,4601,7,6,0,0,4601,4602,7,24,0,0,4602,4603,7,17,0,0,4603,872,1,0,0,0,4604,4605,7,26,0,0,4605,4606,7,15,0,0,4606,4607,7,6,0,0,4607,4608,7,13,0,0,4608,4609,7,19,0,0,4609,4610,7,19,0,0,4610,4611,7,16,0,0,4611,874,1,0,0,0,4612,4613,7,26,0,0,4613,4614,7,15,0,0,4614,4615,7,6,0,0,4615,4616,7,9,0,0,4616,4617,7,10,0,0,4617,4618,7,13,0,0,4618,4619,7,17,0,0,4619,4620,7,5,0,0,4620,4621,7,6,0,0,4621,4622,7,17,0,0,4622,4623,7,11,0,0,4623,4624,7,10,0,0,4624,876,1,0,0,0,4625,4626,7,14,0,0,4626,4627,7,5,0,0,4627,4628,7,6,0,0,4628,4629,7,6,0,0,4629,878,1,0,0,0,4630,4631,7,14,0,0,4631,4632,7,22,0,0,4632,4633,7,13,0,0,4633,4634,7,13,0,0,4634,4635,7,10,0,0,4635,4636,7,7,0,0,4636,4637,7,16,0,0,4637,880,1,0,0,0,4638,4639,7,5,0,0,4639,4640,7,16,0,0,4640,4641,7,16,0,0,4641,4642,7,5,0,0,4642,4643,7,14,0,0,4643,4644,7,20,0,0,4644,882,1,0,0,0,4645,4646,7,12,0,0,4646,4647,7,10,0,0,4647,4648,7,16,0,0,4648,4649,7,5,0,0,4649,4650,7,14,0,0,4650,4651,7,20,0,0,4651,884,1,0,0,0,4652,4653,7,10,0,0,4653,4654,7,26,0,0,4654,4655,7,24,0,0,4655,4656,7,13,0,0,4656,4657,7,10,0,0,4657,4658,7,9,0,0,4658,4659,7,9,0,0,4659,4660,7,17,0,0,4660,4661,7,19,0,0,4661,4662,7,7,0,0,4662,886,1,0,0,0,4663,4664,7,23,0,0,4664,4665,7,10,0,0,4665,4666,7,7,0,0,4666,4667,7,10,0,0,4667,4668,7,13,0,0,4668,4669,7,5,0,0,4669,4670,7,16,0,0,4670,4671,7,10,0,0,4671,4672,7,12,0,0,4672,888,1,0,0,0,4673,4674,7,6,0,0,4674,4675,7,19,0,0,4675,4676,7,23,0,0,4676,4677,7,23,0,0,4677,4678,7,10,0,0,4678,4679,7,12,0,0,4679,890,1,0,0,0,4680,4681,7,9,0,0,4681,4682,7,16,0,0,4682,4683,7,19,0,0,4683,4684,7,13,0,0,4684,4685,7,10,0,0,4685,4686,7,12,0,0,4686,892,1,0,0,0,4687,4688,7,17,0,0,4688,4689,7,7,0,0,4689,4690,7,14,0,0,4690,4691,7,6,0,0,4691,4692,7,22,0,0,4692,4693,7,12,0,0,4693,4694,7,10,0,0,4694,894,1,0,0,0,4695,4696,7,13,0,0,4696,4697,7,19,0,0,4697,4698,7,22,0,0,4698,4699,7,16,0,0,4699,4700,7,17,0,0,4700,4701,7,7,0,0,4701,4702,7,10,0,0,4702,896,1,0,0,0,4703,4704,7,16,0,0,4704,4705,7,13,0,0,4705,4706,7,5,0,0,4706,4707,7,7,0,0,4707,4708,7,9,0,0,4708,4709,7,25,0,0,4709,4710,7,19,0,0,4710,4711,7,13,0,0,4711,4712,7,15,0,0,4712,898,1,0,0,0,4713,4714,7,17,0,0,4714,4715,7,15,0,0,4715,4716,7,24,0,0,4716,4717,7,19,0,0,4717,4718,7,13,0,0,4718,4719,7,16,0,0,4719,900,1,0,0,0,4720,4721,7,24,0,0,4721,4722,7,19,0,0,4722,4723,7,6,0,0,4723,4724,7,17,0,0,4724,4725,7,14,0,0,4725,4726,7,8,0,0,4726,902,1,0,0,0,4727,4728,7,15,0,0,4728,4729,7,10,0,0,4729,4730,7,16,0,0,4730,4731,7,20,0,0,4731,4732,7,19,0,0,4732,4733,7,12,0,0,4733,904,1,0,0,0,4734,4735,7,13,0,0,4735,4736,7,10,0,0,4736,4737,7,25,0,0,4737,4738,7,10,0,0,4738,4739,7,13,0,0,4739,4740,7,10,0,0,4740,4741,7,7,0,0,4741,4742,7,14,0,0,4742,4743,7,17,0,0,4743,4744,7,7,0,0,4744,4745,7,23,0,0,4745,906,1,0,0,0,4746,4747,7,7,0,0,4747,4748,7,10,0,0,4748,4749,7,29,0,0,4749,908,1,0,0,0,4750,4751,7,19,0,0,4751,4752,7,6,0,0,4752,4753,7,12,0,0,4753,910,1,0,0,0,4754,4755,7,27,0,0,4755,4756,7,5,0,0,4756,4757,7,6,0,0,4757,4758,7,22,0,0,4758,4759,7,10,0,0,4759,912,1,0,0,0,4760,4761,7,9,0,0,4761,4762,7,22,0,0,4762,4763,7,18,0,0,4763,4764,7,9,0,0,4764,4765,7,14,0,0,4765,4766,7,13,0,0,4766,4767,7,17,0,0,4767,4768,7,24,0,0,4768,4769,7,16,0,0,4769,4770,7,17,0,0,4770,4771,7,19,0,0,4771,4772,7,7,0,0,4772,914,1,0,0,0,4773,4774,7,24,0,0,4774,4775,7,22,0,0,4775,4776,7,18,0,0,4776,4777,7,6,0,0,4777,4778,7,17,0,0,4778,4779,7,14,0,0,4779,4780,7,5,0,0,4780,4781,7,16,0,0,4781,4782,7,17,0,0,4782,4783,7,19,0,0,4783,4784,7,7,0,0,4784,916,1,0,0,0,4785,4786,7,19,0,0,4786,4787,7,22,0,0,4787,4788,7,16,0,0,4788,918,1,0,0,0,4789,4790,7,10,0,0,4790,4791,7,7,0,0,4791,4792,7,12,0,0,4792,920,1,0,0,0,4793,4794,7,13,0,0,4794,4795,7,19,0,0,4795,4796,7,22,0,0,4796,4797,7,16,0,0,4797,4798,7,17,0,0,4798,4799,7,7,0,0,4799,4800,7,10,0,0,4800,4801,7,9,0,0,4801,922,1,0,0,0,4802,4803,7,9,0,0,4803,4804,7,14,0,0,4804,4805,7,20,0,0,4805,4806,7,10,0,0,4806,4807,7,15,0,0,4807,4808,7,5,0,0,4808,4809,7,9,0,0,4809,924,1,0,0,0,4810,4811,7,24,0,0,4811,4812,7,13,0,0,4812,4813,7,19,0,0,4813,4814,7,14,0,0,4814,4815,7,10,0,0,4815,4816,7,12,0,0,4816,4817,7,22,0,0,4817,4818,7,13,0,0,4818,4819,7,10,0,0,4819,4820,7,9,0,0,4820,926,1,0,0,0,4821,4822,7,17,0,0,4822,4823,7,7,0,0,4823,4824,7,24,0,0,4824,4825,7,22,0,0,4825,4826,7,16,0,0,4826,928,1,0,0,0,4827,4828,7,9,0,0,4828,4829,7,22,0,0,4829,4830,7,24,0,0,4830,4831,7,24,0,0,4831,4832,7,19,0,0,4832,4833,7,13,0,0,4833,4834,7,16,0,0,4834,930,1,0,0,0,4835,4836,7,24,0,0,4836,4837,7,5,0,0,4837,4838,7,13,0,0,4838,4839,7,5,0,0,4839,4840,7,6,0,0,4840,4841,7,6,0,0,4841,4842,7,10,0,0,4842,4843,7,6,0,0,4843,932,1,0,0,0,4844,4845,7,9,0,0,4845,4846,7,28,0,0,4846,4847,7,6,0,0,4847,934,1,0,0,0,4848,4849,7,12,0,0,4849,4850,7,10,0,0,4850,4851,7,24,0,0,4851,4852,7,10,0,0,4852,4853,7,7,0,0,4853,4854,7,12,0,0,4854,4855,7,9,0,0,4855,936,1,0,0,0,4856,4857,7,19,0,0,4857,4858,7,27,0,0,4858,4859,7,10,0,0,4859,4860,7,13,0,0,4860,4861,7,13,0,0,4861,4862,7,17,0,0,4862,4863,7,12,0,0,4863,4864,7,17,0,0,4864,4865,7,7,0,0,4865,4866,7,23,0,0,4866,938,1,0,0,0,4867,4868,7,14,0,0,4868,4869,7,19,0,0,4869,4870,7,7,0,0,4870,4871,7,25,0,0,4871,4872,7,6,0,0,4872,4873,7,17,0,0,4873,4874,7,14,0,0,4874,4875,7,16,0,0,4875,940,1,0,0,0,4876,4877,7,9,0,0,4877,4878,7,21,0,0,4878,4879,7,17,0,0,4879,4880,7,24,0,0,4880,942,1,0,0,0,4881,4882,7,6,0,0,4882,4883,7,19,0,0,4883,4884,7,14,0,0,4884,4885,7,21,0,0,4885,4886,7,10,0,0,4886,4887,7,12,0,0,4887,944,1,0,0,0,4888,4889,7,16,0,0,4889,4890,7,17,0,0,4890,4891,7,10,0,0,4891,4892,7,9,0,0,4892,946,1,0,0,0,4893,4894,7,13,0,0,4894,4895,7,19,0,0,4895,4896,7,6,0,0,4896,4897,7,6,0,0,4897,4898,7,22,0,0,4898,4899,7,24,0,0,4899,948,1,0,0,0,4900,4901,7,14,0,0,4901,4902,7,22,0,0,4902,4903,7,18,0,0,4903,4904,7,10,0,0,4904,950,1,0,0,0,4905,4906,7,23,0,0,4906,4907,7,13,0,0,4907,4908,7,19,0,0,4908,4909,7,22,0,0,4909,4910,7,24,0,0,4910,4911,7,17,0,0,4911,4912,7,7,0,0,4912,4913,7,23,0,0,4913,952,1,0,0,0,4914,4915,7,9,0,0,4915,4916,7,10,0,0,4916,4917,7,16,0,0,4917,4918,7,9,0,0,4918,954,1,0,0,0,4919,4920,7,16,0,0,4920,4921,7,5,0,0,4921,4922,7,18,0,0,4922,4923,7,6,0,0,4923,4924,7,10,0,0,4924,4925,7,9,0,0,4925,4926,7,5,0,0,4926,4927,7,15,0,0,4927,4928,7,24,0,0,4928,4929,7,6,0,0,4929,4930,7,10,0,0,4930,956,1,0,0,0,4931,4932,7,19,0,0,4932,4933,7,13,0,0,4933,4934,7,12,0,0,4934,4935,7,17,0,0,4935,4936,7,7,0,0,4936,4937,7,5,0,0,4937,4938,7,6,0,0,4938,4939,7,17,0,0,4939,4940,7,16,0,0,4940,4941,7,8,0,0,4941,958,1,0,0,0,4942,4943,7,26,0,0,4943,4944,7,15,0,0,4944,4945,7,6,0,0,4945,4946,7,16,0,0,4946,4947,7,5,0,0,4947,4948,7,18,0,0,4948,4949,7,6,0,0,4949,4950,7,10,0,0,4950,960,1,0,0,0,4951,4952,7,14,0,0,4952,4953,7,19,0,0,4953,4954,7,6,0,0,4954,4955,7,22,0,0,4955,4956,7,15,0,0,4956,4957,7,7,0,0,4957,4958,7,9,0,0,4958,962,1,0,0,0,4959,4960,7,26,0,0,4960,4961,7,15,0,0,4961,4962,7,6,0,0,4962,4963,7,7,0,0,4963,4964,7,5,0,0,4964,4965,7,15,0,0,4965,4966,7,10,0,0,4966,4967,7,9,0,0,4967,4968,7,24,0,0,4968,4969,7,5,0,0,4969,4970,7,14,0,0,4970,4971,7,10,0,0,4971,4972,7,9,0,0,4972,964,1,0,0,0,4973,4974,7,13,0,0,4974,4975,7,19,0,0,4975,4976,7,29,0,0,4976,4977,7,16,0,0,4977,4978,7,8,0,0,4978,4979,7,24,0,0,4979,4980,7,10,0,0,4980,966,1,0,0,0,4981,4982,7,7,0,0,4982,4983,7,19,0,0,4983,4984,7,13,0,0,4984,4985,7,15,0,0,4985,4986,7,5,0,0,4986,4987,7,6,0,0,4987,4988,7,17,0,0,4988,4989,7,11,0,0,4989,4990,7,10,0,0,4990,4991,7,12,0,0,4991,968,1,0,0,0,4992,4993,7,29,0,0,4993,4994,7,17,0,0,4994,4995,7,16,0,0,4995,4996,7,20,0,0,4996,4997,7,17,0,0,4997,4998,7,7,0,0,4998,970,1,0,0,0,4999,5e3,7,25,0,0,5e3,5001,7,17,0,0,5001,5002,7,6,0,0,5002,5003,7,16,0,0,5003,5004,7,10,0,0,5004,5005,7,13,0,0,5005,972,1,0,0,0,5006,5007,7,23,0,0,5007,5008,7,13,0,0,5008,5009,7,19,0,0,5009,5010,7,22,0,0,5010,5011,7,24,0,0,5011,5012,7,9,0,0,5012,974,1,0,0,0,5013,5014,7,19,0,0,5014,5015,7,16,0,0,5015,5016,7,20,0,0,5016,5017,7,10,0,0,5017,5018,7,13,0,0,5018,5019,7,9,0,0,5019,976,1,0,0,0,5020,5021,7,7,0,0,5021,5022,7,25,0,0,5022,5023,7,14,0,0,5023,978,1,0,0,0,5024,5025,7,7,0,0,5025,5026,7,25,0,0,5026,5027,7,12,0,0,5027,980,1,0,0,0,5028,5029,7,7,0,0,5029,5030,7,25,0,0,5030,5031,7,21,0,0,5031,5032,7,14,0,0,5032,982,1,0,0,0,5033,5034,7,7,0,0,5034,5035,7,25,0,0,5035,5036,7,21,0,0,5036,5037,7,12,0,0,5037,984,1,0,0,0,5038,5039,7,22,0,0,5039,5040,7,10,0,0,5040,5041,7,9,0,0,5041,5042,7,14,0,0,5042,5043,7,5,0,0,5043,5044,7,24,0,0,5044,5045,7,10,0,0,5045,986,1,0,0,0,5046,5047,7,27,0,0,5047,5048,7,17,0,0,5048,5049,7,10,0,0,5049,5050,7,29,0,0,5050,5051,7,9,0,0,5051,988,1,0,0,0,5052,5053,7,7,0,0,5053,5054,7,19,0,0,5054,5055,7,13,0,0,5055,5056,7,15,0,0,5056,5057,7,5,0,0,5057,5058,7,6,0,0,5058,5059,7,17,0,0,5059,5060,7,11,0,0,5060,5061,7,10,0,0,5061,990,1,0,0,0,5062,5063,7,12,0,0,5063,5064,7,22,0,0,5064,5065,7,15,0,0,5065,5066,7,24,0,0,5066,992,1,0,0,0,5067,5068,7,24,0,0,5068,5069,7,13,0,0,5069,5070,7,17,0,0,5070,5071,7,7,0,0,5071,5072,7,16,0,0,5072,5073,5,95,0,0,5073,5074,7,9,0,0,5074,5075,7,16,0,0,5075,5076,7,13,0,0,5076,5077,7,17,0,0,5077,5078,7,14,0,0,5078,5079,7,16,0,0,5079,5080,5,95,0,0,5080,5081,7,24,0,0,5081,5082,7,5,0,0,5082,5083,7,13,0,0,5083,5084,7,5,0,0,5084,5085,7,15,0,0,5085,5086,7,9,0,0,5086,994,1,0,0,0,5087,5088,7,27,0,0,5088,5089,7,5,0,0,5089,5090,7,13,0,0,5090,5091,7,17,0,0,5091,5092,7,5,0,0,5092,5093,7,18,0,0,5093,5094,7,6,0,0,5094,5095,7,10,0,0,5095,5096,5,95,0,0,5096,5097,7,14,0,0,5097,5098,7,19,0,0,5098,5099,7,7,0,0,5099,5100,7,25,0,0,5100,5101,7,6,0,0,5101,5102,7,17,0,0,5102,5103,7,14,0,0,5103,5104,7,16,0,0,5104,996,1,0,0,0,5105,5106,7,10,0,0,5106,5107,7,13,0,0,5107,5108,7,13,0,0,5108,5109,7,19,0,0,5109,5110,7,13,0,0,5110,998,1,0,0,0,5111,5112,7,22,0,0,5112,5113,7,9,0,0,5113,5114,7,10,0,0,5114,5115,5,95,0,0,5115,5116,7,27,0,0,5116,5117,7,5,0,0,5117,5118,7,13,0,0,5118,5119,7,17,0,0,5119,5120,7,5,0,0,5120,5121,7,18,0,0,5121,5122,7,6,0,0,5122,5123,7,10,0,0,5123,1e3,1,0,0,0,5124,5125,7,22,0,0,5125,5126,7,9,0,0,5126,5127,7,10,0,0,5127,5128,5,95,0,0,5128,5129,7,14,0,0,5129,5130,7,19,0,0,5130,5131,7,6,0,0,5131,5132,7,22,0,0,5132,5133,7,15,0,0,5133,5134,7,7,0,0,5134,1002,1,0,0,0,5135,5136,7,5,0,0,5136,5137,7,6,0,0,5137,5138,7,17,0,0,5138,5139,7,5,0,0,5139,5140,7,9,0,0,5140,1004,1,0,0,0,5141,5142,7,14,0,0,5142,5143,7,19,0,0,5143,5144,7,7,0,0,5144,5145,7,9,0,0,5145,5146,7,16,0,0,5146,5147,7,5,0,0,5147,5148,7,7,0,0,5148,5149,7,16,0,0,5149,1006,1,0,0,0,5150,5151,7,24,0,0,5151,5152,7,10,0,0,5152,5153,7,13,0,0,5153,5154,7,25,0,0,5154,5155,7,19,0,0,5155,5156,7,13,0,0,5156,5157,7,15,0,0,5157,1008,1,0,0,0,5158,5159,7,23,0,0,5159,5160,7,10,0,0,5160,5161,7,16,0,0,5161,1010,1,0,0,0,5162,5163,7,12,0,0,5163,5164,7,17,0,0,5164,5165,7,5,0,0,5165,5166,7,23,0,0,5166,5167,7,7,0,0,5167,5168,7,19,0,0,5168,5169,7,9,0,0,5169,5170,7,16,0,0,5170,5171,7,17,0,0,5171,5172,7,14,0,0,5172,5173,7,9,0,0,5173,1012,1,0,0,0,5174,5175,7,9,0,0,5175,5176,7,16,0,0,5176,5177,7,5,0,0,5177,5178,7,14,0,0,5178,5179,7,21,0,0,5179,5180,7,10,0,0,5180,5181,7,12,0,0,5181,1014,1,0,0,0,5182,5183,7,10,0,0,5183,5184,7,6,0,0,5184,5185,7,9,0,0,5185,5186,7,17,0,0,5186,5187,7,25,0,0,5187,1016,1,0,0,0,5188,5189,7,29,0,0,5189,5190,7,20,0,0,5190,5191,7,17,0,0,5191,5192,7,6,0,0,5192,5193,7,10,0,0,5193,1018,1,0,0,0,5194,5195,7,13,0,0,5195,5196,7,10,0,0,5196,5197,7,27,0,0,5197,5198,7,10,0,0,5198,5199,7,13,0,0,5199,5200,7,9,0,0,5200,5201,7,10,0,0,5201,1020,1,0,0,0,5202,5203,7,25,0,0,5203,5204,7,19,0,0,5204,5205,7,13,0,0,5205,5206,7,10,0,0,5206,5207,7,5,0,0,5207,5208,7,14,0,0,5208,5209,7,20,0,0,5209,1022,1,0,0,0,5210,5211,7,9,0,0,5211,5212,7,6,0,0,5212,5213,7,17,0,0,5213,5214,7,14,0,0,5214,5215,7,10,0,0,5215,1024,1,0,0,0,5216,5217,7,10,0,0,5217,5218,7,26,0,0,5218,5219,7,17,0,0,5219,5220,7,16,0,0,5220,1026,1,0,0,0,5221,5222,7,13,0,0,5222,5223,7,10,0,0,5223,5224,7,16,0,0,5224,5225,7,22,0,0,5225,5226,7,13,0,0,5226,5227,7,7,0,0,5227,1028,1,0,0,0,5228,5229,7,28,0,0,5229,5230,7,22,0,0,5230,5231,7,10,0,0,5231,5232,7,13,0,0,5232,5233,7,8,0,0,5233,1030,1,0,0,0,5234,5235,7,13,0,0,5235,5236,7,5,0,0,5236,5237,7,17,0,0,5237,5238,7,9,0,0,5238,5239,7,10,0,0,5239,1032,1,0,0,0,5240,5241,7,9,0,0,5241,5242,7,28,0,0,5242,5243,7,6,0,0,5243,5244,7,9,0,0,5244,5245,7,16,0,0,5245,5246,7,5,0,0,5246,5247,7,16,0,0,5247,5248,7,10,0,0,5248,1034,1,0,0,0,5249,5250,7,12,0,0,5250,5251,7,10,0,0,5251,5252,7,18,0,0,5252,5253,7,22,0,0,5253,5254,7,23,0,0,5254,1036,1,0,0,0,5255,5256,7,6,0,0,5256,5257,7,19,0,0,5257,5258,7,23,0,0,5258,1038,1,0,0,0,5259,5260,7,17,0,0,5260,5261,7,7,0,0,5261,5262,7,25,0,0,5262,5263,7,19,0,0,5263,1040,1,0,0,0,5264,5265,7,7,0,0,5265,5266,7,19,0,0,5266,5267,7,16,0,0,5267,5268,7,17,0,0,5268,5269,7,14,0,0,5269,5270,7,10,0,0,5270,1042,1,0,0,0,5271,5272,7,29,0,0,5272,5273,7,5,0,0,5273,5274,7,13,0,0,5274,5275,7,7,0,0,5275,5276,7,17,0,0,5276,5277,7,7,0,0,5277,5278,7,23,0,0,5278,1044,1,0,0,0,5279,5280,7,10,0,0,5280,5281,7,26,0,0,5281,5282,7,14,0,0,5282,5283,7,10,0,0,5283,5284,7,24,0,0,5284,5285,7,16,0,0,5285,5286,7,17,0,0,5286,5287,7,19,0,0,5287,5288,7,7,0,0,5288,1046,1,0,0,0,5289,5290,7,5,0,0,5290,5291,7,9,0,0,5291,5292,7,9,0,0,5292,5293,7,10,0,0,5293,5294,7,13,0,0,5294,5295,7,16,0,0,5295,1048,1,0,0,0,5296,5297,7,6,0,0,5297,5298,7,19,0,0,5298,5299,7,19,0,0,5299,5300,7,24,0,0,5300,1050,1,0,0,0,5301,5302,7,19,0,0,5302,5303,7,24,0,0,5303,5304,7,10,0,0,5304,5305,7,7,0,0,5305,1052,1,0,0,0,5306,5307,7,5,0,0,5307,5308,7,18,0,0,5308,5309,7,9,0,0,5309,1054,1,0,0,0,5310,5311,7,14,0,0,5311,5312,7,18,0,0,5312,5313,7,13,0,0,5313,5314,7,16,0,0,5314,1056,1,0,0,0,5315,5316,7,14,0,0,5316,5317,7,10,0,0,5317,5318,7,17,0,0,5318,5319,7,6,0,0,5319,1058,1,0,0,0,5320,5321,7,14,0,0,5321,5322,7,10,0,0,5322,5323,7,17,0,0,5323,5324,7,6,0,0,5324,5325,7,17,0,0,5325,5326,7,7,0,0,5326,5327,7,23,0,0,5327,1060,1,0,0,0,5328,5329,7,12,0,0,5329,5330,7,10,0,0,5330,5331,7,23,0,0,5331,5332,7,13,0,0,5332,5333,7,10,0,0,5333,5334,7,10,0,0,5334,5335,7,9,0,0,5335,1062,1,0,0,0,5336,5337,7,12,0,0,5337,5338,7,17,0,0,5338,5339,7,27,0,0,5339,1064,1,0,0,0,5340,5341,7,10,0,0,5341,5342,7,26,0,0,5342,5343,7,24,0,0,5343,1066,1,0,0,0,5344,5345,7,25,0,0,5345,5346,7,5,0,0,5346,5347,7,14,0,0,5347,5348,7,16,0,0,5348,5349,7,19,0,0,5349,5350,7,13,0,0,5350,5351,7,17,0,0,5351,5352,7,5,0,0,5352,5353,7,6,0,0,5353,1068,1,0,0,0,5354,5355,7,25,0,0,5355,5356,7,6,0,0,5356,5357,7,19,0,0,5357,5358,7,19,0,0,5358,5359,7,13,0,0,5359,1070,1,0,0,0,5360,5361,7,23,0,0,5361,5362,7,14,0,0,5362,5363,7,12,0,0,5363,1072,1,0,0,0,5364,5365,7,6,0,0,5365,5366,7,14,0,0,5366,5367,7,15,0,0,5367,1074,1,0,0,0,5368,5369,7,6,0,0,5369,5370,7,7,0,0,5370,1076,1,0,0,0,5371,5372,7,6,0,0,5372,5373,7,19,0,0,5373,5374,7,23,0,0,5374,5375,5,49,0,0,5375,5376,5,48,0,0,5376,1078,1,0,0,0,5377,5378,7,15,0,0,5378,5379,7,17,0,0,5379,5380,7,7,0,0,5380,5381,5,95,0,0,5381,5382,7,9,0,0,5382,5383,7,14,0,0,5383,5384,7,5,0,0,5384,5385,7,6,0,0,5385,5386,7,10,0,0,5386,1080,1,0,0,0,5387,5388,7,15,0,0,5388,5389,7,19,0,0,5389,5390,7,12,0,0,5390,1082,1,0,0,0,5391,5392,7,24,0,0,5392,5393,7,17,0,0,5393,1084,1,0,0,0,5394,5395,7,24,0,0,5395,5396,7,19,0,0,5396,5397,7,29,0,0,5397,5398,7,10,0,0,5398,5399,7,13,0,0,5399,1086,1,0,0,0,5400,5401,7,13,0,0,5401,5402,7,5,0,0,5402,5403,7,12,0,0,5403,5404,7,17,0,0,5404,5405,7,5,0,0,5405,5406,7,7,0,0,5406,5407,7,9,0,0,5407,1088,1,0,0,0,5408,5409,7,13,0,0,5409,5410,7,19,0,0,5410,5411,7,22,0,0,5411,5412,7,7,0,0,5412,5413,7,12,0,0,5413,1090,1,0,0,0,5414,5415,7,9,0,0,5415,5416,7,14,0,0,5416,5417,7,5,0,0,5417,5418,7,6,0,0,5418,5419,7,10,0,0,5419,1092,1,0,0,0,5420,5421,7,9,0,0,5421,5422,7,17,0,0,5422,5423,7,23,0,0,5423,5424,7,7,0,0,5424,1094,1,0,0,0,5425,5426,7,9,0,0,5426,5427,7,28,0,0,5427,5428,7,13,0,0,5428,5429,7,16,0,0,5429,1096,1,0,0,0,5430,5431,7,16,0,0,5431,5432,7,13,0,0,5432,5433,7,17,0,0,5433,5434,7,15,0,0,5434,5435,5,95,0,0,5435,5436,7,9,0,0,5436,5437,7,14,0,0,5437,5438,7,5,0,0,5438,5439,7,6,0,0,5439,5440,7,10,0,0,5440,1098,1,0,0,0,5441,5442,7,16,0,0,5442,5443,7,13,0,0,5443,5444,7,22,0,0,5444,5445,7,7,0,0,5445,5446,7,14,0,0,5446,1100,1,0,0,0,5447,5448,7,29,0,0,5448,5449,7,17,0,0,5449,5450,7,12,0,0,5450,5451,7,16,0,0,5451,5452,7,20,0,0,5452,5453,5,95,0,0,5453,5454,7,18,0,0,5454,5455,7,22,0,0,5455,5456,7,14,0,0,5456,5457,7,21,0,0,5457,5458,7,10,0,0,5458,5459,7,16,0,0,5459,1102,1,0,0,0,5460,5461,7,13,0,0,5461,5462,7,5,0,0,5462,5463,7,7,0,0,5463,5464,7,12,0,0,5464,5465,7,19,0,0,5465,5466,7,15,0,0,5466,1104,1,0,0,0,5467,5468,7,9,0,0,5468,5469,7,10,0,0,5469,5470,7,16,0,0,5470,5471,7,9,0,0,5471,5472,7,10,0,0,5472,5473,7,10,0,0,5473,5474,7,12,0,0,5474,1106,1,0,0,0,5475,5476,7,5,0,0,5476,5477,7,14,0,0,5477,5478,7,19,0,0,5478,5479,7,9,0,0,5479,1108,1,0,0,0,5480,5481,7,5,0,0,5481,5482,7,14,0,0,5482,5483,7,19,0,0,5483,5484,7,9,0,0,5484,5485,7,12,0,0,5485,1110,1,0,0,0,5486,5487,7,5,0,0,5487,5488,7,9,0,0,5488,5489,7,17,0,0,5489,5490,7,7,0,0,5490,1112,1,0,0,0,5491,5492,7,5,0,0,5492,5493,7,9,0,0,5493,5494,7,17,0,0,5494,5495,7,7,0,0,5495,5496,7,12,0,0,5496,1114,1,0,0,0,5497,5498,7,5,0,0,5498,5499,7,16,0,0,5499,5500,7,5,0,0,5500,5501,7,7,0,0,5501,1116,1,0,0,0,5502,5503,7,5,0,0,5503,5504,7,16,0,0,5504,5505,7,5,0,0,5505,5506,7,7,0,0,5506,5507,7,12,0,0,5507,1118,1,0,0,0,5508,5509,7,5,0,0,5509,5510,7,16,0,0,5510,5511,7,5,0,0,5511,5512,7,7,0,0,5512,5513,5,50,0,0,5513,1120,1,0,0,0,5514,5515,7,5,0,0,5515,5516,7,16,0,0,5516,5517,7,5,0,0,5517,5518,7,7,0,0,5518,5519,5,50,0,0,5519,5520,7,12,0,0,5520,1122,1,0,0,0,5521,5522,7,14,0,0,5522,5523,7,19,0,0,5523,5524,7,9,0,0,5524,1124,1,0,0,0,5525,5526,7,14,0,0,5526,5527,7,19,0,0,5527,5528,7,9,0,0,5528,5529,7,12,0,0,5529,1126,1,0,0,0,5530,5531,7,14,0,0,5531,5532,7,19,0,0,5532,5533,7,16,0,0,5533,1128,1,0,0,0,5534,5535,7,14,0,0,5535,5536,7,19,0,0,5536,5537,7,16,0,0,5537,5538,7,12,0,0,5538,1130,1,0,0,0,5539,5540,7,9,0,0,5540,5541,7,17,0,0,5541,5542,7,7,0,0,5542,1132,1,0,0,0,5543,5544,7,9,0,0,5544,5545,7,17,0,0,5545,5546,7,7,0,0,5546,5547,7,12,0,0,5547,1134,1,0,0,0,5548,5549,7,16,0,0,5549,5550,7,5,0,0,5550,5551,7,7,0,0,5551,1136,1,0,0,0,5552,5553,7,16,0,0,5553,5554,7,5,0,0,5554,5555,7,7,0,0,5555,5556,7,12,0,0,5556,1138,1,0,0,0,5557,5558,7,9,0,0,5558,5559,7,17,0,0,5559,5560,7,7,0,0,5560,5561,7,20,0,0,5561,1140,1,0,0,0,5562,5563,7,14,0,0,5563,5564,7,19,0,0,5564,5565,7,9,0,0,5565,5566,7,20,0,0,5566,1142,1,0,0,0,5567,5568,7,16,0,0,5568,5569,7,5,0,0,5569,5570,7,7,0,0,5570,5571,7,20,0,0,5571,1144,1,0,0,0,5572,5573,7,5,0,0,5573,5574,7,9,0,0,5574,5575,7,17,0,0,5575,5576,7,7,0,0,5576,5577,7,20,0,0,5577,1146,1,0,0,0,5578,5579,7,5,0,0,5579,5580,7,14,0,0,5580,5581,7,19,0,0,5581,5582,7,9,0,0,5582,5583,7,20,0,0,5583,1148,1,0,0,0,5584,5585,7,5,0,0,5585,5586,7,16,0,0,5586,5587,7,5,0,0,5587,5588,7,7,0,0,5588,5589,7,20,0,0,5589,1150,1,0,0,0,5590,5591,7,18,0,0,5591,5592,7,17,0,0,5592,5593,7,16,0,0,5593,5594,5,95,0,0,5594,5595,7,6,0,0,5595,5596,7,10,0,0,5596,5597,7,7,0,0,5597,5598,7,23,0,0,5598,5599,7,16,0,0,5599,5600,7,20,0,0,5600,1152,1,0,0,0,5601,5602,7,14,0,0,5602,5603,7,20,0,0,5603,5604,7,5,0,0,5604,5605,7,13,0,0,5605,5606,5,95,0,0,5606,5607,7,6,0,0,5607,5608,7,10,0,0,5608,5609,7,7,0,0,5609,5610,7,23,0,0,5610,5611,7,16,0,0,5611,5612,7,20,0,0,5612,1154,1,0,0,0,5613,5614,7,14,0,0,5614,5615,7,20,0,0,5615,5616,7,5,0,0,5616,5617,7,13,0,0,5617,5618,7,5,0,0,5618,5619,7,14,0,0,5619,5620,7,16,0,0,5620,5621,7,10,0,0,5621,5622,7,13,0,0,5622,5623,5,95,0,0,5623,5624,7,6,0,0,5624,5625,7,10,0,0,5625,5626,7,7,0,0,5626,5627,7,23,0,0,5627,5628,7,16,0,0,5628,5629,7,20,0,0,5629,1156,1,0,0,0,5630,5631,7,6,0,0,5631,5632,7,19,0,0,5632,5633,7,29,0,0,5633,5634,7,10,0,0,5634,5635,7,13,0,0,5635,1158,1,0,0,0,5636,5637,7,19,0,0,5637,5638,7,14,0,0,5638,5639,7,16,0,0,5639,5640,7,10,0,0,5640,5641,7,16,0,0,5641,5642,5,95,0,0,5642,5643,7,6,0,0,5643,5644,7,10,0,0,5644,5645,7,7,0,0,5645,5646,7,23,0,0,5646,5647,7,16,0,0,5647,5648,7,20,0,0,5648,1160,1,0,0,0,5649,5650,7,22,0,0,5650,5651,7,24,0,0,5651,5652,7,24,0,0,5652,5653,7,10,0,0,5653,5654,7,13,0,0,5654,1162,1,0,0,0,5655,5656,7,5,0,0,5656,5657,7,9,0,0,5657,5658,7,14,0,0,5658,5659,7,17,0,0,5659,5660,7,17,0,0,5660,1164,1,0,0,0,5661,5662,7,18,0,0,5662,5663,7,16,0,0,5663,5664,7,13,0,0,5664,5665,7,17,0,0,5665,5666,7,15,0,0,5666,1166,1,0,0,0,5667,5668,7,14,0,0,5668,5669,7,20,0,0,5669,5670,7,13,0,0,5670,1168,1,0,0,0,5671,5672,7,14,0,0,5672,5673,7,19,0,0,5673,5674,7,7,0,0,5674,5675,7,14,0,0,5675,5676,7,5,0,0,5676,5677,7,16,0,0,5677,1170,1,0,0,0,5678,5679,7,14,0,0,5679,5680,7,19,0,0,5680,5681,7,7,0,0,5681,5682,7,14,0,0,5682,5683,7,5,0,0,5683,5684,7,16,0,0,5684,5685,5,95,0,0,5685,5686,7,29,0,0,5686,5687,7,9,0,0,5687,1172,1,0,0,0,5688,5689,7,25,0,0,5689,5690,7,19,0,0,5690,5691,7,13,0,0,5691,5692,7,15,0,0,5692,5693,7,5,0,0,5693,5694,7,16,0,0,5694,1174,1,0,0,0,5695,5696,7,17,0,0,5696,5697,7,7,0,0,5697,5698,7,17,0,0,5698,5699,7,16,0,0,5699,5700,7,14,0,0,5700,5701,7,5,0,0,5701,5702,7,24,0,0,5702,1176,1,0,0,0,5703,5704,7,6,0,0,5704,5705,7,10,0,0,5705,5706,7,7,0,0,5706,5707,7,23,0,0,5707,5708,7,16,0,0,5708,5709,7,20,0,0,5709,1178,1,0,0,0,5710,5711,7,6,0,0,5711,5712,7,24,0,0,5712,5713,7,5,0,0,5713,5714,7,12,0,0,5714,1180,1,0,0,0,5715,5716,7,6,0,0,5716,5717,7,16,0,0,5717,5718,7,13,0,0,5718,5719,7,17,0,0,5719,5720,7,15,0,0,5720,1182,1,0,0,0,5721,5722,7,15,0,0,5722,5723,7,12,0,0,5723,5724,5,53,0,0,5724,1184,1,0,0,0,5725,5726,7,24,0,0,5726,5727,7,5,0,0,5727,5728,7,13,0,0,5728,5729,7,9,0,0,5729,5730,7,10,0,0,5730,5731,5,95,0,0,5731,5732,7,17,0,0,5732,5733,7,12,0,0,5733,5734,7,10,0,0,5734,5735,7,7,0,0,5735,5736,7,16,0,0,5736,1186,1,0,0,0,5737,5738,7,24,0,0,5738,5739,7,23,0,0,5739,5740,5,95,0,0,5740,5741,7,14,0,0,5741,5742,7,6,0,0,5742,5743,7,17,0,0,5743,5744,7,10,0,0,5744,5745,7,7,0,0,5745,5746,7,16,0,0,5746,5747,5,95,0,0,5747,5748,7,10,0,0,5748,5749,7,7,0,0,5749,5750,7,14,0,0,5750,5751,7,19,0,0,5751,5752,7,12,0,0,5752,5753,7,17,0,0,5753,5754,7,7,0,0,5754,5755,7,23,0,0,5755,1188,1,0,0,0,5756,5757,7,28,0,0,5757,5758,7,22,0,0,5758,5759,7,19,0,0,5759,5760,7,16,0,0,5760,5761,7,10,0,0,5761,5762,5,95,0,0,5762,5763,7,17,0,0,5763,5764,7,12,0,0,5764,5765,7,10,0,0,5765,5766,7,7,0,0,5766,5767,7,16,0,0,5767,1190,1,0,0,0,5768,5769,7,28,0,0,5769,5770,7,22,0,0,5770,5771,7,19,0,0,5771,5772,7,16,0,0,5772,5773,7,10,0,0,5773,5774,5,95,0,0,5774,5775,7,6,0,0,5775,5776,7,17,0,0,5776,5777,7,16,0,0,5777,5778,7,10,0,0,5778,5779,7,13,0,0,5779,5780,7,5,0,0,5780,5781,7,6,0,0,5781,1192,1,0,0,0,5782,5783,7,28,0,0,5783,5784,7,22,0,0,5784,5785,7,19,0,0,5785,5786,7,16,0,0,5786,5787,7,10,0,0,5787,5788,5,95,0,0,5788,5789,7,7,0,0,5789,5790,7,22,0,0,5790,5791,7,6,0,0,5791,5792,7,6,0,0,5792,5793,7,5,0,0,5793,5794,7,18,0,0,5794,5795,7,6,0,0,5795,5796,7,10,0,0,5796,1194,1,0,0,0,5797,5798,7,13,0,0,5798,5799,7,10,0,0,5799,5800,7,23,0,0,5800,5801,7,10,0,0,5801,5802,7,26,0,0,5802,5803,7,24,0,0,5803,5804,5,95,0,0,5804,5805,7,14,0,0,5805,5806,7,19,0,0,5806,5807,7,22,0,0,5807,5808,7,7,0,0,5808,5809,7,16,0,0,5809,1196,1,0,0,0,5810,5811,7,13,0,0,5811,5812,7,10,0,0,5812,5813,7,23,0,0,5813,5814,7,10,0,0,5814,5815,7,26,0,0,5815,5816,7,24,0,0,5816,5817,5,95,0,0,5817,5818,7,17,0,0,5818,5819,7,7,0,0,5819,5820,7,9,0,0,5820,5821,7,16,0,0,5821,5822,7,13,0,0,5822,1198,1,0,0,0,5823,5824,7,13,0,0,5824,5825,7,10,0,0,5825,5826,7,23,0,0,5826,5827,7,10,0,0,5827,5828,7,26,0,0,5828,5829,7,24,0,0,5829,5830,5,95,0,0,5830,5831,7,6,0,0,5831,5832,7,17,0,0,5832,5833,7,21,0,0,5833,5834,7,10,0,0,5834,1200,1,0,0,0,5835,5836,7,13,0,0,5836,5837,7,10,0,0,5837,5838,7,23,0,0,5838,5839,7,10,0,0,5839,5840,7,26,0,0,5840,5841,7,24,0,0,5841,5842,5,95,0,0,5842,5843,7,15,0,0,5843,5844,7,5,0,0,5844,5845,7,16,0,0,5845,5846,7,14,0,0,5846,5847,7,20,0,0,5847,1202,1,0,0,0,5848,5849,7,13,0,0,5849,5850,7,10,0,0,5850,5851,7,23,0,0,5851,5852,7,10,0,0,5852,5853,7,26,0,0,5853,5854,7,24,0,0,5854,5855,5,95,0,0,5855,5856,7,15,0,0,5856,5857,7,5,0,0,5857,5858,7,16,0,0,5858,5859,7,14,0,0,5859,5860,7,20,0,0,5860,5861,7,10,0,0,5861,5862,7,9,0,0,5862,1204,1,0,0,0,5863,5864,7,13,0,0,5864,5865,7,10,0,0,5865,5866,7,23,0,0,5866,5867,7,10,0,0,5867,5868,7,26,0,0,5868,5869,7,24,0,0,5869,5870,5,95,0,0,5870,5871,7,13,0,0,5871,5872,7,10,0,0,5872,5873,7,24,0,0,5873,5874,7,6,0,0,5874,5875,7,5,0,0,5875,5876,7,14,0,0,5876,5877,7,10,0,0,5877,1206,1,0,0,0,5878,5879,7,13,0,0,5879,5880,7,10,0,0,5880,5881,7,23,0,0,5881,5882,7,10,0,0,5882,5883,7,26,0,0,5883,5884,7,24,0,0,5884,5885,5,95,0,0,5885,5886,7,9,0,0,5886,5887,7,24,0,0,5887,5888,7,6,0,0,5888,5889,7,17,0,0,5889,5890,7,16,0,0,5890,5891,5,95,0,0,5891,5892,7,16,0,0,5892,5893,7,19,0,0,5893,5894,5,95,0,0,5894,5895,7,5,0,0,5895,5896,7,13,0,0,5896,5897,7,13,0,0,5897,5898,7,5,0,0,5898,5899,7,8,0,0,5899,1208,1,0,0,0,5900,5901,7,13,0,0,5901,5902,7,10,0,0,5902,5903,7,23,0,0,5903,5904,7,10,0,0,5904,5905,7,26,0,0,5905,5906,7,24,0,0,5906,5907,5,95,0,0,5907,5908,7,9,0,0,5908,5909,7,24,0,0,5909,5910,7,6,0,0,5910,5911,7,17,0,0,5911,5912,7,16,0,0,5912,5913,5,95,0,0,5913,5914,7,16,0,0,5914,5915,7,19,0,0,5915,5916,5,95,0,0,5916,5917,7,16,0,0,5917,5918,7,5,0,0,5918,5919,7,18,0,0,5919,5920,7,6,0,0,5920,5921,7,10,0,0,5921,1210,1,0,0,0,5922,5923,7,13,0,0,5923,5924,7,10,0,0,5924,5925,7,23,0,0,5925,5926,7,10,0,0,5926,5927,7,26,0,0,5927,5928,7,24,0,0,5928,5929,5,95,0,0,5929,5930,7,9,0,0,5930,5931,7,22,0,0,5931,5932,7,18,0,0,5932,5933,7,9,0,0,5933,5934,7,16,0,0,5934,5935,7,13,0,0,5935,1212,1,0,0,0,5936,5937,7,13,0,0,5937,5938,7,10,0,0,5938,5939,7,24,0,0,5939,5940,7,10,0,0,5940,5941,7,5,0,0,5941,5942,7,16,0,0,5942,1214,1,0,0,0,5943,5944,7,13,0,0,5944,5945,7,24,0,0,5945,5946,7,5,0,0,5946,5947,7,12,0,0,5947,1216,1,0,0,0,5948,5949,7,13,0,0,5949,5950,7,16,0,0,5950,5951,7,13,0,0,5951,5952,7,17,0,0,5952,5953,7,15,0,0,5953,1218,1,0,0,0,5954,5955,7,9,0,0,5955,5956,7,24,0,0,5956,5957,7,6,0,0,5957,5958,7,17,0,0,5958,5959,7,16,0,0,5959,5960,5,95,0,0,5960,5961,7,24,0,0,5961,5962,7,5,0,0,5962,5963,7,13,0,0,5963,5964,7,16,0,0,5964,1220,1,0,0,0,5965,5966,7,9,0,0,5966,5967,7,16,0,0,5967,5968,7,5,0,0,5968,5969,7,13,0,0,5969,5970,7,16,0,0,5970,5971,7,9,0,0,5971,5972,5,95,0,0,5972,5973,7,29,0,0,5973,5974,7,17,0,0,5974,5975,7,16,0,0,5975,5976,7,20,0,0,5976,1222,1,0,0,0,5977,5978,7,9,0,0,5978,5979,7,16,0,0,5979,5980,7,13,0,0,5980,5981,7,17,0,0,5981,5982,7,7,0,0,5982,5983,7,23,0,0,5983,5984,5,95,0,0,5984,5985,7,16,0,0,5985,5986,7,19,0,0,5986,5987,5,95,0,0,5987,5988,7,5,0,0,5988,5989,7,13,0,0,5989,5990,7,13,0,0,5990,5991,7,5,0,0,5991,5992,7,8,0,0,5992,1224,1,0,0,0,5993,5994,7,9,0,0,5994,5995,7,16,0,0,5995,5996,7,13,0,0,5996,5997,7,17,0,0,5997,5998,7,7,0,0,5998,5999,7,23,0,0,5999,6e3,5,95,0,0,6e3,6001,7,16,0,0,6001,6002,7,19,0,0,6002,6003,5,95,0,0,6003,6004,7,16,0,0,6004,6005,7,5,0,0,6005,6006,7,18,0,0,6006,6007,7,6,0,0,6007,6008,7,10,0,0,6008,1226,1,0,0,0,6009,6010,7,9,0,0,6010,6011,7,16,0,0,6011,6012,7,13,0,0,6012,6013,7,24,0,0,6013,6014,7,19,0,0,6014,6015,7,9,0,0,6015,1228,1,0,0,0,6016,6017,7,9,0,0,6017,6018,7,22,0,0,6018,6019,7,18,0,0,6019,6020,7,9,0,0,6020,6021,7,16,0,0,6021,6022,7,13,0,0,6022,1230,1,0,0,0,6023,6024,7,16,0,0,6024,6025,7,19,0,0,6025,6026,5,95,0,0,6026,6027,7,5,0,0,6027,6028,7,9,0,0,6028,6029,7,14,0,0,6029,6030,7,17,0,0,6030,6031,7,17,0,0,6031,1232,1,0,0,0,6032,6033,7,16,0,0,6033,6034,7,19,0,0,6034,6035,5,95,0,0,6035,6036,7,20,0,0,6036,6037,7,10,0,0,6037,6038,7,26,0,0,6038,1234,1,0,0,0,6039,6040,7,16,0,0,6040,6041,7,13,0,0,6041,6042,7,5,0,0,6042,6043,7,7,0,0,6043,6044,7,9,0,0,6044,6045,7,6,0,0,6045,6046,7,5,0,0,6046,6047,7,16,0,0,6047,6048,7,10,0,0,6048,1236,1,0,0,0,6049,6050,7,22,0,0,6050,6051,7,7,0,0,6051,6052,7,17,0,0,6052,6053,7,9,0,0,6053,6054,7,16,0,0,6054,6055,7,13,0,0,6055,1238,1,0,0,0,6056,6057,7,5,0,0,6057,6058,7,23,0,0,6058,6059,7,10,0,0,6059,1240,1,0,0,0,6060,6061,7,14,0,0,6061,6062,7,6,0,0,6062,6063,7,19,0,0,6063,6064,7,14,0,0,6064,6065,7,21,0,0,6065,6066,5,95,0,0,6066,6067,7,16,0,0,6067,6068,7,17,0,0,6068,6069,7,15,0,0,6069,6070,7,10,0,0,6070,6071,7,9,0,0,6071,6072,7,16,0,0,6072,6073,7,5,0,0,6073,6074,7,15,0,0,6074,6075,7,24,0,0,6075,1242,1,0,0,0,6076,6077,7,12,0,0,6077,6078,7,5,0,0,6078,6079,7,16,0,0,6079,6080,7,10,0,0,6080,6081,5,95,0,0,6081,6082,7,18,0,0,6082,6083,7,17,0,0,6083,6084,7,7,0,0,6084,1244,1,0,0,0,6085,6086,7,12,0,0,6086,6087,7,5,0,0,6087,6088,7,16,0,0,6088,6089,7,10,0,0,6089,6090,5,95,0,0,6090,6091,7,24,0,0,6091,6092,7,5,0,0,6092,6093,7,13,0,0,6093,6094,7,16,0,0,6094,1246,1,0,0,0,6095,6096,7,12,0,0,6096,6097,7,5,0,0,6097,6098,7,16,0,0,6098,6099,7,10,0,0,6099,6100,5,95,0,0,6100,6101,7,16,0,0,6101,6102,7,13,0,0,6102,6103,7,22,0,0,6103,6104,7,7,0,0,6104,6105,7,14,0,0,6105,1248,1,0,0,0,6106,6107,7,17,0,0,6107,6108,7,9,0,0,6108,6109,7,25,0,0,6109,6110,7,17,0,0,6110,6111,7,7,0,0,6111,6112,7,17,0,0,6112,6113,7,16,0,0,6113,6114,7,10,0,0,6114,1250,1,0,0,0,6115,6116,7,30,0,0,6116,6117,7,22,0,0,6117,6118,7,9,0,0,6118,6119,7,16,0,0,6119,6120,7,17,0,0,6120,6121,7,25,0,0,6121,6122,7,8,0,0,6122,6123,5,95,0,0,6123,6124,7,12,0,0,6124,6125,7,5,0,0,6125,6126,7,8,0,0,6126,6127,7,9,0,0,6127,1252,1,0,0,0,6128,6129,7,30,0,0,6129,6130,7,22,0,0,6130,6131,7,9,0,0,6131,6132,7,16,0,0,6132,6133,7,17,0,0,6133,6134,7,25,0,0,6134,6135,7,8,0,0,6135,6136,5,95,0,0,6136,6137,7,20,0,0,6137,6138,7,19,0,0,6138,6139,7,22,0,0,6139,6140,7,13,0,0,6140,6141,7,9,0,0,6141,1254,1,0,0,0,6142,6143,7,30,0,0,6143,6144,7,22,0,0,6144,6145,7,9,0,0,6145,6146,7,16,0,0,6146,6147,7,17,0,0,6147,6148,7,25,0,0,6148,6149,7,8,0,0,6149,6150,5,95,0,0,6150,6151,7,17,0,0,6151,6152,7,7,0,0,6152,6153,7,16,0,0,6153,6154,7,10,0,0,6154,6155,7,13,0,0,6155,6156,7,27,0,0,6156,6157,7,5,0,0,6157,6158,7,6,0,0,6158,1256,1,0,0,0,6159,6160,7,15,0,0,6160,6161,7,5,0,0,6161,6162,7,21,0,0,6162,6163,7,10,0,0,6163,6164,5,95,0,0,6164,6165,7,12,0,0,6165,6166,7,5,0,0,6166,6167,7,16,0,0,6167,6168,7,10,0,0,6168,1258,1,0,0,0,6169,6170,7,15,0,0,6170,6171,7,5,0,0,6171,6172,7,21,0,0,6172,6173,7,10,0,0,6173,6174,5,95,0,0,6174,6175,7,17,0,0,6175,6176,7,7,0,0,6176,6177,7,16,0,0,6177,6178,7,10,0,0,6178,6179,7,13,0,0,6179,6180,7,27,0,0,6180,6181,7,5,0,0,6181,6182,7,6,0,0,6182,1260,1,0,0,0,6183,6184,7,15,0,0,6184,6185,7,5,0,0,6185,6186,7,21,0,0,6186,6187,7,10,0,0,6187,6188,5,95,0,0,6188,6189,7,16,0,0,6189,6190,7,17,0,0,6190,6191,7,15,0,0,6191,6192,7,10,0,0,6192,1262,1,0,0,0,6193,6194,7,15,0,0,6194,6195,7,5,0,0,6195,6196,7,21,0,0,6196,6197,7,10,0,0,6197,6198,5,95,0,0,6198,6199,7,16,0,0,6199,6200,7,17,0,0,6200,6201,7,15,0,0,6201,6202,7,10,0,0,6202,6203,7,9,0,0,6203,6204,7,16,0,0,6204,6205,7,5,0,0,6205,6206,7,15,0,0,6206,6207,7,24,0,0,6207,1264,1,0,0,0,6208,6209,7,15,0,0,6209,6210,7,5,0,0,6210,6211,7,21,0,0,6211,6212,7,10,0,0,6212,6213,5,95,0,0,6213,6214,7,16,0,0,6214,6215,7,17,0,0,6215,6216,7,15,0,0,6216,6217,7,10,0,0,6217,6218,7,9,0,0,6218,6219,7,16,0,0,6219,6220,7,5,0,0,6220,6221,7,15,0,0,6221,6222,7,24,0,0,6222,6223,7,16,0,0,6223,6224,7,11,0,0,6224,1266,1,0,0,0,6225,6226,7,7,0,0,6226,6227,7,19,0,0,6227,6228,7,29,0,0,6228,1268,1,0,0,0,6229,6230,7,9,0,0,6230,6231,7,16,0,0,6231,6232,7,5,0,0,6232,6233,7,16,0,0,6233,6234,7,10,0,0,6234,6235,7,15,0,0,6235,6236,7,10,0,0,6236,6237,7,7,0,0,6237,6238,7,16,0,0,6238,6239,5,95,0,0,6239,6240,7,16,0,0,6240,6241,7,17,0,0,6241,6242,7,15,0,0,6242,6243,7,10,0,0,6243,6244,7,9,0,0,6244,6245,7,16,0,0,6245,6246,7,5,0,0,6246,6247,7,15,0,0,6247,6248,7,24,0,0,6248,1270,1,0,0,0,6249,6250,7,16,0,0,6250,6251,7,17,0,0,6251,6252,7,15,0,0,6252,6253,7,10,0,0,6253,6254,7,19,0,0,6254,6255,7,25,0,0,6255,6256,7,12,0,0,6256,6257,7,5,0,0,6257,6258,7,8,0,0,6258,1272,1,0,0,0,6259,6260,7,16,0,0,6260,6261,7,13,0,0,6261,6262,7,5,0,0,6262,6263,7,7,0,0,6263,6264,7,9,0,0,6264,6265,7,5,0,0,6265,6266,7,14,0,0,6266,6267,7,16,0,0,6267,6268,7,17,0,0,6268,6269,7,19,0,0,6269,6270,7,7,0,0,6270,6271,5,95,0,0,6271,6272,7,16,0,0,6272,6273,7,17,0,0,6273,6274,7,15,0,0,6274,6275,7,10,0,0,6275,6276,7,9,0,0,6276,6277,7,16,0,0,6277,6278,7,5,0,0,6278,6279,7,15,0,0,6279,6280,7,24,0,0,6280,1274,1,0,0,0,6281,6282,7,16,0,0,6282,6283,7,19,0,0,6283,6284,5,95,0,0,6284,6285,7,16,0,0,6285,6286,7,17,0,0,6286,6287,7,15,0,0,6287,6288,7,10,0,0,6288,6289,7,9,0,0,6289,6290,7,16,0,0,6290,6291,7,5,0,0,6291,6292,7,15,0,0,6292,6293,7,24,0,0,6293,1276,1,0,0,0,6294,6295,7,16,0,0,6295,6296,7,19,0,0,6296,6297,5,95,0,0,6297,6298,7,14,0,0,6298,6299,7,20,0,0,6299,6300,7,5,0,0,6300,6301,7,13,0,0,6301,1278,1,0,0,0,6302,6303,7,16,0,0,6303,6304,7,19,0,0,6304,6305,5,95,0,0,6305,6306,7,12,0,0,6306,6307,7,5,0,0,6307,6308,7,16,0,0,6308,6309,7,10,0,0,6309,1280,1,0,0,0,6310,6311,7,16,0,0,6311,6312,7,19,0,0,6312,6313,5,95,0,0,6313,6314,7,7,0,0,6314,6315,7,22,0,0,6315,6316,7,15,0,0,6316,6317,7,18,0,0,6317,6318,7,10,0,0,6318,6319,7,13,0,0,6319,1282,1,0,0,0,6320,6324,3,1285,640,0,6321,6323,3,1287,641,0,6322,6321,1,0,0,0,6323,6326,1,0,0,0,6324,6322,1,0,0,0,6324,6325,1,0,0,0,6325,1284,1,0,0,0,6326,6324,1,0,0,0,6327,6334,7,31,0,0,6328,6329,7,32,0,0,6329,6334,4,640,6,0,6330,6331,7,33,0,0,6331,6332,7,34,0,0,6332,6334,4,640,7,0,6333,6327,1,0,0,0,6333,6328,1,0,0,0,6333,6330,1,0,0,0,6334,1286,1,0,0,0,6335,6338,3,1289,642,0,6336,6338,5,36,0,0,6337,6335,1,0,0,0,6337,6336,1,0,0,0,6338,1288,1,0,0,0,6339,6342,3,1285,640,0,6340,6342,7,0,0,0,6341,6339,1,0,0,0,6341,6340,1,0,0,0,6342,1290,1,0,0,0,6343,6344,3,1293,644,0,6344,6345,5,34,0,0,6345,1292,1,0,0,0,6346,6352,5,34,0,0,6347,6348,5,34,0,0,6348,6351,5,34,0,0,6349,6351,8,35,0,0,6350,6347,1,0,0,0,6350,6349,1,0,0,0,6351,6354,1,0,0,0,6352,6350,1,0,0,0,6352,6353,1,0,0,0,6353,1294,1,0,0,0,6354,6352,1,0,0,0,6355,6356,3,1297,646,0,6356,6357,5,34,0,0,6357,1296,1,0,0,0,6358,6364,5,34,0,0,6359,6360,5,34,0,0,6360,6363,5,34,0,0,6361,6363,8,36,0,0,6362,6359,1,0,0,0,6362,6361,1,0,0,0,6363,6366,1,0,0,0,6364,6362,1,0,0,0,6364,6365,1,0,0,0,6365,1298,1,0,0,0,6366,6364,1,0,0,0,6367,6368,7,22,0,0,6368,6369,5,38,0,0,6369,6370,3,1291,643,0,6370,1300,1,0,0,0,6371,6372,7,22,0,0,6372,6373,5,38,0,0,6373,6374,3,1293,644,0,6374,1302,1,0,0,0,6375,6376,7,22,0,0,6376,6377,5,38,0,0,6377,6378,3,1295,645,0,6378,1304,1,0,0,0,6379,6380,7,22,0,0,6380,6381,5,38,0,0,6381,6382,3,1297,646,0,6382,1306,1,0,0,0,6383,6384,3,1309,652,0,6384,6385,5,39,0,0,6385,1308,1,0,0,0,6386,6392,5,39,0,0,6387,6388,5,39,0,0,6388,6391,5,39,0,0,6389,6391,8,37,0,0,6390,6387,1,0,0,0,6390,6389,1,0,0,0,6391,6394,1,0,0,0,6392,6390,1,0,0,0,6392,6393,1,0,0,0,6393,1310,1,0,0,0,6394,6392,1,0,0,0,6395,6396,7,10,0,0,6396,6397,5,39,0,0,6397,6398,1,0,0,0,6398,6399,6,653,2,0,6399,6400,6,653,3,0,6400,1312,1,0,0,0,6401,6402,3,1315,655,0,6402,6403,5,39,0,0,6403,1314,1,0,0,0,6404,6405,7,22,0,0,6405,6406,5,38,0,0,6406,6407,3,1309,652,0,6407,1316,1,0,0,0,6408,6410,5,36,0,0,6409,6411,3,1319,657,0,6410,6409,1,0,0,0,6410,6411,1,0,0,0,6411,6412,1,0,0,0,6412,6413,5,36,0,0,6413,6414,6,656,4,0,6414,6415,1,0,0,0,6415,6416,6,656,5,0,6416,1318,1,0,0,0,6417,6421,3,1285,640,0,6418,6420,3,1289,642,0,6419,6418,1,0,0,0,6420,6423,1,0,0,0,6421,6419,1,0,0,0,6421,6422,1,0,0,0,6422,1320,1,0,0,0,6423,6421,1,0,0,0,6424,6425,3,1323,659,0,6425,6426,5,39,0,0,6426,1322,1,0,0,0,6427,6428,7,18,0,0,6428,6432,5,39,0,0,6429,6431,7,38,0,0,6430,6429,1,0,0,0,6431,6434,1,0,0,0,6432,6430,1,0,0,0,6432,6433,1,0,0,0,6433,1324,1,0,0,0,6434,6432,1,0,0,0,6435,6436,3,1327,661,0,6436,6437,5,39,0,0,6437,1326,1,0,0,0,6438,6439,7,18,0,0,6439,6440,3,1309,652,0,6440,1328,1,0,0,0,6441,6442,3,1331,663,0,6442,6443,5,39,0,0,6443,1330,1,0,0,0,6444,6445,7,26,0,0,6445,6449,5,39,0,0,6446,6448,7,39,0,0,6447,6446,1,0,0,0,6448,6451,1,0,0,0,6449,6447,1,0,0,0,6449,6450,1,0,0,0,6450,1332,1,0,0,0,6451,6449,1,0,0,0,6452,6453,3,1335,665,0,6453,6454,5,39,0,0,6454,1334,1,0,0,0,6455,6456,7,26,0,0,6456,6457,3,1309,652,0,6457,1336,1,0,0,0,6458,6459,3,1343,669,0,6459,1338,1,0,0,0,6460,6461,3,1343,669,0,6461,6462,5,46,0,0,6462,6463,5,46,0,0,6463,6464,1,0,0,0,6464,6465,6,667,6,0,6465,1340,1,0,0,0,6466,6467,3,1343,669,0,6467,6469,5,46,0,0,6468,6470,3,1343,669,0,6469,6468,1,0,0,0,6469,6470,1,0,0,0,6470,6476,1,0,0,0,6471,6473,7,10,0,0,6472,6474,7,1,0,0,6473,6472,1,0,0,0,6473,6474,1,0,0,0,6474,6475,1,0,0,0,6475,6477,3,1343,669,0,6476,6471,1,0,0,0,6476,6477,1,0,0,0,6477,6495,1,0,0,0,6478,6479,5,46,0,0,6479,6485,3,1343,669,0,6480,6482,7,10,0,0,6481,6483,7,1,0,0,6482,6481,1,0,0,0,6482,6483,1,0,0,0,6483,6484,1,0,0,0,6484,6486,3,1343,669,0,6485,6480,1,0,0,0,6485,6486,1,0,0,0,6486,6495,1,0,0,0,6487,6488,3,1343,669,0,6488,6490,7,10,0,0,6489,6491,7,1,0,0,6490,6489,1,0,0,0,6490,6491,1,0,0,0,6491,6492,1,0,0,0,6492,6493,3,1343,669,0,6493,6495,1,0,0,0,6494,6466,1,0,0,0,6494,6478,1,0,0,0,6494,6487,1,0,0,0,6495,1342,1,0,0,0,6496,6498,7,0,0,0,6497,6496,1,0,0,0,6498,6499,1,0,0,0,6499,6497,1,0,0,0,6499,6500,1,0,0,0,6500,1344,1,0,0,0,6501,6502,5,58,0,0,6502,6506,7,40,0,0,6503,6505,7,41,0,0,6504,6503,1,0,0,0,6505,6508,1,0,0,0,6506,6504,1,0,0,0,6506,6507,1,0,0,0,6507,1346,1,0,0,0,6508,6506,1,0,0,0,6509,6510,5,58,0,0,6510,6511,5,34,0,0,6511,6519,1,0,0,0,6512,6513,5,92,0,0,6513,6518,9,0,0,0,6514,6515,5,34,0,0,6515,6518,5,34,0,0,6516,6518,8,42,0,0,6517,6512,1,0,0,0,6517,6514,1,0,0,0,6517,6516,1,0,0,0,6518,6521,1,0,0,0,6519,6517,1,0,0,0,6519,6520,1,0,0,0,6520,6522,1,0,0,0,6521,6519,1,0,0,0,6522,6523,5,34,0,0,6523,1348,1,0,0,0,6524,6526,7,43,0,0,6525,6524,1,0,0,0,6526,6527,1,0,0,0,6527,6525,1,0,0,0,6527,6528,1,0,0,0,6528,6529,1,0,0,0,6529,6530,6,672,7,0,6530,1350,1,0,0,0,6531,6533,5,13,0,0,6532,6534,5,10,0,0,6533,6532,1,0,0,0,6533,6534,1,0,0,0,6534,6537,1,0,0,0,6535,6537,5,10,0,0,6536,6531,1,0,0,0,6536,6535,1,0,0,0,6537,6538,1,0,0,0,6538,6539,6,673,7,0,6539,1352,1,0,0,0,6540,6541,5,45,0,0,6541,6542,5,45,0,0,6542,6546,1,0,0,0,6543,6545,8,44,0,0,6544,6543,1,0,0,0,6545,6548,1,0,0,0,6546,6544,1,0,0,0,6546,6547,1,0,0,0,6547,6549,1,0,0,0,6548,6546,1,0,0,0,6549,6550,6,674,8,0,6550,1354,1,0,0,0,6551,6552,5,47,0,0,6552,6553,5,42,0,0,6553,6576,1,0,0,0,6554,6556,5,47,0,0,6555,6554,1,0,0,0,6556,6559,1,0,0,0,6557,6555,1,0,0,0,6557,6558,1,0,0,0,6558,6560,1,0,0,0,6559,6557,1,0,0,0,6560,6575,3,1355,675,0,6561,6575,8,45,0,0,6562,6564,5,47,0,0,6563,6562,1,0,0,0,6564,6565,1,0,0,0,6565,6563,1,0,0,0,6565,6566,1,0,0,0,6566,6567,1,0,0,0,6567,6575,8,45,0,0,6568,6570,5,42,0,0,6569,6568,1,0,0,0,6570,6571,1,0,0,0,6571,6569,1,0,0,0,6571,6572,1,0,0,0,6572,6573,1,0,0,0,6573,6575,8,45,0,0,6574,6557,1,0,0,0,6574,6561,1,0,0,0,6574,6563,1,0,0,0,6574,6569,1,0,0,0,6575,6578,1,0,0,0,6576,6574,1,0,0,0,6576,6577,1,0,0,0,6577,6582,1,0,0,0,6578,6576,1,0,0,0,6579,6581,5,42,0,0,6580,6579,1,0,0,0,6581,6584,1,0,0,0,6582,6580,1,0,0,0,6582,6583,1,0,0,0,6583,6585,1,0,0,0,6584,6582,1,0,0,0,6585,6586,5,42,0,0,6586,6587,5,47,0,0,6587,6588,1,0,0,0,6588,6589,6,675,8,0,6589,1356,1,0,0,0,6590,6591,5,47,0,0,6591,6592,5,42,0,0,6592,6617,1,0,0,0,6593,6595,5,47,0,0,6594,6593,1,0,0,0,6595,6598,1,0,0,0,6596,6594,1,0,0,0,6596,6597,1,0,0,0,6597,6599,1,0,0,0,6598,6596,1,0,0,0,6599,6616,3,1355,675,0,6600,6616,8,45,0,0,6601,6603,5,47,0,0,6602,6601,1,0,0,0,6603,6604,1,0,0,0,6604,6602,1,0,0,0,6604,6605,1,0,0,0,6605,6606,1,0,0,0,6606,6614,8,45,0,0,6607,6609,5,42,0,0,6608,6607,1,0,0,0,6609,6610,1,0,0,0,6610,6608,1,0,0,0,6610,6611,1,0,0,0,6611,6612,1,0,0,0,6612,6614,8,45,0,0,6613,6602,1,0,0,0,6613,6608,1,0,0,0,6614,6616,1,0,0,0,6615,6596,1,0,0,0,6615,6600,1,0,0,0,6615,6613,1,0,0,0,6616,6619,1,0,0,0,6617,6615,1,0,0,0,6617,6618,1,0,0,0,6618,6637,1,0,0,0,6619,6617,1,0,0,0,6620,6622,5,47,0,0,6621,6620,1,0,0,0,6622,6623,1,0,0,0,6623,6621,1,0,0,0,6623,6624,1,0,0,0,6624,6638,1,0,0,0,6625,6627,5,42,0,0,6626,6625,1,0,0,0,6627,6628,1,0,0,0,6628,6626,1,0,0,0,6628,6629,1,0,0,0,6629,6638,1,0,0,0,6630,6632,5,47,0,0,6631,6630,1,0,0,0,6632,6635,1,0,0,0,6633,6631,1,0,0,0,6633,6634,1,0,0,0,6634,6636,1,0,0,0,6635,6633,1,0,0,0,6636,6638,3,1357,676,0,6637,6621,1,0,0,0,6637,6626,1,0,0,0,6637,6633,1,0,0,0,6637,6638,1,0,0,0,6638,6639,1,0,0,0,6639,6640,6,676,9,0,6640,1358,1,0,0,0,6641,6653,5,92,0,0,6642,6652,8,46,0,0,6643,6647,5,34,0,0,6644,6646,8,47,0,0,6645,6644,1,0,0,0,6646,6649,1,0,0,0,6647,6645,1,0,0,0,6647,6648,1,0,0,0,6648,6650,1,0,0,0,6649,6647,1,0,0,0,6650,6652,5,34,0,0,6651,6642,1,0,0,0,6651,6643,1,0,0,0,6652,6655,1,0,0,0,6653,6651,1,0,0,0,6653,6654,1,0,0,0,6654,6663,1,0,0,0,6655,6653,1,0,0,0,6656,6660,5,34,0,0,6657,6659,8,47,0,0,6658,6657,1,0,0,0,6659,6662,1,0,0,0,6660,6658,1,0,0,0,6660,6661,1,0,0,0,6661,6664,1,0,0,0,6662,6660,1,0,0,0,6663,6656,1,0,0,0,6663,6664,1,0,0,0,6664,1360,1,0,0,0,6665,6666,5,92,0,0,6666,6667,5,92,0,0,6667,1362,1,0,0,0,6668,6669,9,0,0,0,6669,1364,1,0,0,0,6670,6671,3,1369,682,0,6671,6672,5,39,0,0,6672,6673,1,0,0,0,6673,6674,6,680,10,0,6674,1366,1,0,0,0,6675,6677,3,1369,682,0,6676,6678,5,92,0,0,6677,6676,1,0,0,0,6677,6678,1,0,0,0,6678,6679,1,0,0,0,6679,6680,5,0,0,1,6680,1368,1,0,0,0,6681,6682,5,39,0,0,6682,6705,5,39,0,0,6683,6701,5,92,0,0,6684,6685,5,120,0,0,6685,6702,7,39,0,0,6686,6687,5,117,0,0,6687,6688,7,39,0,0,6688,6689,7,39,0,0,6689,6690,7,39,0,0,6690,6702,7,39,0,0,6691,6692,5,85,0,0,6692,6693,7,39,0,0,6693,6694,7,39,0,0,6694,6695,7,39,0,0,6695,6696,7,39,0,0,6696,6697,7,39,0,0,6697,6698,7,39,0,0,6698,6699,7,39,0,0,6699,6702,7,39,0,0,6700,6702,8,48,0,0,6701,6684,1,0,0,0,6701,6686,1,0,0,0,6701,6691,1,0,0,0,6701,6700,1,0,0,0,6702,6705,1,0,0,0,6703,6705,8,49,0,0,6704,6681,1,0,0,0,6704,6683,1,0,0,0,6704,6703,1,0,0,0,6705,6708,1,0,0,0,6706,6704,1,0,0,0,6706,6707,1,0,0,0,6707,1370,1,0,0,0,6708,6706,1,0,0,0,6709,6710,3,1375,685,0,6710,6711,5,39,0,0,6711,6712,1,0,0,0,6712,6713,6,683,10,0,6713,1372,1,0,0,0,6714,6716,3,1375,685,0,6715,6717,5,92,0,0,6716,6715,1,0,0,0,6716,6717,1,0,0,0,6717,6718,1,0,0,0,6718,6719,5,0,0,1,6719,1374,1,0,0,0,6720,6721,5,39,0,0,6721,6726,5,39,0,0,6722,6723,5,92,0,0,6723,6726,9,0,0,0,6724,6726,8,49,0,0,6725,6720,1,0,0,0,6725,6722,1,0,0,0,6725,6724,1,0,0,0,6726,6729,1,0,0,0,6727,6725,1,0,0,0,6727,6728,1,0,0,0,6728,1376,1,0,0,0,6729,6727,1,0,0,0,6730,6731,3,1349,672,0,6731,6732,1,0,0,0,6732,6733,6,686,11,0,6733,6734,6,686,7,0,6734,1378,1,0,0,0,6735,6736,3,1351,673,0,6736,6737,1,0,0,0,6737,6738,6,687,12,0,6738,6739,6,687,7,0,6739,6740,6,687,13,0,6740,1380,1,0,0,0,6741,6742,6,688,14,0,6742,6743,1,0,0,0,6743,6744,6,688,8,0,6744,6745,6,688,15,0,6745,1382,1,0,0,0,6746,6747,3,1349,672,0,6747,6748,1,0,0,0,6748,6749,6,689,11,0,6749,6750,6,689,7,0,6750,1384,1,0,0,0,6751,6752,3,1351,673,0,6752,6753,1,0,0,0,6753,6754,6,690,12,0,6754,6755,6,690,7,0,6755,1386,1,0,0,0,6756,6757,5,39,0,0,6757,6758,1,0,0,0,6758,6759,6,691,2,0,6759,6760,6,691,16,0,6760,1388,1,0,0,0,6761,6762,6,692,17,0,6762,6763,1,0,0,0,6763,6764,6,692,8,0,6764,6765,6,692,15,0,6765,1390,1,0,0,0,6766,6768,8,50,0,0,6767,6766,1,0,0,0,6768,6769,1,0,0,0,6769,6767,1,0,0,0,6769,6770,1,0,0,0,6770,6779,1,0,0,0,6771,6775,5,36,0,0,6772,6774,8,50,0,0,6773,6772,1,0,0,0,6774,6777,1,0,0,0,6775,6773,1,0,0,0,6775,6776,1,0,0,0,6776,6779,1,0,0,0,6777,6775,1,0,0,0,6778,6767,1,0,0,0,6778,6771,1,0,0,0,6779,1392,1,0,0,0,6780,6782,5,36,0,0,6781,6783,3,1319,657,0,6782,6781,1,0,0,0,6782,6783,1,0,0,0,6783,6784,1,0,0,0,6784,6785,5,36,0,0,6785,6786,1,0,0,0,6786,6787,4,694,8,0,6787,6788,6,694,18,0,6788,6789,1,0,0,0,6789,6790,6,694,15,0,6790,1394,1,0,0,0,78,0,1,2,3,4,1462,1468,1470,1475,1479,1481,1484,1493,1495,1500,1505,1507,6324,6333,6337,6341,6350,6352,6362,6364,6390,6392,6410,6421,6432,6449,6469,6473,6476,6482,6485,6490,6494,6499,6506,6517,6519,6527,6533,6536,6546,6557,6565,6571,6574,6576,6582,6596,6604,6610,6613,6615,6617,6623,6628,6633,6637,6647,6651,6653,6660,6663,6677,6701,6704,6706,6716,6725,6727,6769,6775,6778,6782,19,1,28,0,7,29,0,3,0,0,5,1,0,1,656,1,5,4,0,1,667,2,0,1,0,6,0,0,1,676,3,2,2,0,7,663,0,7,664,0,2,3,0,1,688,4,4,0,0,2,1,0,1,692,5,1,694,6],Vi.vocabulary=new Ra(Vi.literalNames,Vi.symbolicNames,[]),Vi.decisionsToDFA=Vi._ATN.decisionToState.map(((t,e)=>new ni(t,e))),Vi),rn=class extends Cc{ParseRoutineBody(t){let e=null;for(let S of t.createFunctionOptionItem()){var s,a,r,i,c,n;if(null!==S.LANGUAGE()&&null!==S.nonReservedWordOrSconst()&&null!==(null===(s=S.nonReservedWordOrSconst())||void 0===s?void 0:s.nonReservedWord())&&null!==(null===(a=S.nonReservedWordOrSconst())||void 0===a||null===(r=a.nonReservedWord())||void 0===r?void 0:r.identifier())&&null!==(null===(i=S.nonReservedWordOrSconst())||void 0===i||null===(c=i.nonReservedWord())||void 0===c||null===(n=c.identifier())||void 0===n?void 0:n.Identifier())){var h,E,T,o;e=null===(h=S.nonReservedWordOrSconst())||void 0===h||null===(E=h.nonReservedWord())||void 0===E||null===(T=E.identifier())||void 0===T||null===(o=T.Identifier())||void 0===o?void 0:o.getText();break}}if(null===e)return;let R=null;for(let S of t.createFunctionOptionItem())if(null!==S.functionAs()){R=S;break}if(null!==R){var A;let t=this.GetRoutineBodyString(null===(A=R.functionAs())||void 0===A?void 0:A.sconst(0)),s=this.getPostgreSQLParser(t);switch(e){case"plpgsql":R.functionAs().Definition=s.plsqlroot();break;case"sql":R.functionAs().Definition=s.root()}}}unquote(t){let e=t.length,s="",a=0;for(;a<e;){let r=t.charAt(a);s+=r,"'"===r&&a<e-1&&"'"===t.charAt(a+1)&&a++,a++}return s}GetRoutineBodyString(t){let e=t.anySconst(),s=e.StringConstant();if(null!==s)return this.unquote(this.TrimQuotes(s.getText()));let a=e.UnicodeEscapeStringConstant();if(null!==a)return this.TrimQuotes(a.getText());let r=e.EscapeStringConstant();if(null!==r)return this.TrimQuotes(r.getText());let i="",c=e.DollarText();for(let n of c)i+=n.getText();return i}getPostgreSQLParser(t){let e=Oi.fromString(t),s=new an(e),a=new $i(s);return new cn(a)}TrimQuotes(t){return null===t||0===t.length?t:t.substring(1,t.length-1)}},cn=(Xi=class t extends rn{get grammarFileName(){return"PostgreSqlParser.g4"}get literalNames(){return t.literalNames}get symbolicNames(){return t.symbolicNames}get ruleNames(){return t.ruleNames}get serializedATN(){return t._serializedATN}createFailedPredicateException(t,e){return new Sc(this,t,e)}constructor(e){super(e),this.interpreter=new Ai(this,t._ATN,t.decisionsToDFA,new Si)}root(){let e,s=new nn(this.context,this.state);this.enterRule(s,0,t.RULE_root);try{this.enterOuterAlt(s,1),this.state=1509,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(2===e||31===e||!(e-32&-32)&&1<<e-32&570441729||!(e-65&-32)&&1<<e-65&142606337||105===e||129===e||!(e-138&-32)&&1<<e-138&2159673601||!(e-177&-32)&&1<<e-177&100680739||!(e-232&-32)&&1<<e-232&69244929||!(e-264&-32)&&1<<e-264&1074266113||!(e-298&-32)&&1<<e-298&1346523403||!(e-333&-32)&&1<<e-333&1677983745||!(e-415&-32)&&1<<e-415&537133057||454===e||668===e)&&(this.state=1508,this.statements()),this.state=1511,this.match(t.EOF)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}plsqlRoot(){let e=new hn(this.context,this.state);this.enterRule(e,2,t.RULE_plsqlRoot);try{this.enterOuterAlt(e,1),this.state=1513,this.plsqlFunction()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statements(){let e,s=new En(this.context,this.state);this.enterRule(s,4,t.RULE_statements);try{switch(this.state=1523,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,2,this.context)){case 1:this.enterOuterAlt(s,1),this.state=1515,this.statement(),this.state=1517,this.errorHandler.sync(this),e=this.tokenStream.LA(1),7===e&&(this.state=1516,this.match(t.SEMI));break;case 2:this.enterOuterAlt(s,2),this.state=1519,this.statement(),this.state=1520,this.match(t.SEMI),this.state=1521,this.statements()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}statement(){let e=new Tn(this.context,this.state);this.enterRule(e,6,t.RULE_statement);try{switch(this.state=1647,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,3,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1525,this.alterEventTriggerStatement();break;case 2:this.enterOuterAlt(e,2),this.state=1526,this.alterCollationStatement();break;case 3:this.enterOuterAlt(e,3),this.state=1527,this.alterDatabaseStatement();break;case 4:this.enterOuterAlt(e,4),this.state=1528,this.alterDatabaseSetStatement();break;case 5:this.enterOuterAlt(e,5),this.state=1529,this.alterDefaultPrivilegesStatement();break;case 6:this.enterOuterAlt(e,6),this.state=1530,this.alterDomainStatement();break;case 7:this.enterOuterAlt(e,7),this.state=1531,this.alterEnumStatement();break;case 8:this.enterOuterAlt(e,8),this.state=1532,this.alterExtensionStatement();break;case 9:this.enterOuterAlt(e,9),this.state=1533,this.alterExtensionContentsStatement();break;case 10:this.enterOuterAlt(e,10),this.state=1534,this.alterForeignDataWrapperStatement();break;case 11:this.enterOuterAlt(e,11),this.state=1535,this.alterForeignServerStatement();break;case 12:this.enterOuterAlt(e,12),this.state=1536,this.alterFunctionStatement();break;case 13:this.enterOuterAlt(e,13),this.state=1537,this.alterObjectDependsStatement();break;case 14:this.enterOuterAlt(e,14),this.state=1538,this.alterObjectSchemaStatement();break;case 15:this.enterOuterAlt(e,15),this.state=1539,this.alterOwnerStatement();break;case 16:this.enterOuterAlt(e,16),this.state=1540,this.alterOperatorStatement();break;case 17:this.enterOuterAlt(e,17),this.state=1541,this.alterTypeStatement();break;case 18:this.enterOuterAlt(e,18),this.state=1542,this.alterPolicyStatement();break;case 19:this.enterOuterAlt(e,19),this.state=1543,this.alterSequenceStatement();break;case 20:this.enterOuterAlt(e,20),this.state=1544,this.alterSystemStatement();break;case 21:this.enterOuterAlt(e,21),this.state=1545,this.alterTableStatement();break;case 22:this.enterOuterAlt(e,22),this.state=1546,this.alterTablespaceStatement();break;case 23:this.enterOuterAlt(e,23),this.state=1547,this.alterCompositeTypeStatement();break;case 24:this.enterOuterAlt(e,24),this.state=1548,this.alterPublicationStatement();break;case 25:this.enterOuterAlt(e,25),this.state=1549,this.alterRoleSetStatement();break;case 26:this.enterOuterAlt(e,26),this.state=1550,this.alterRoleStatement();break;case 27:this.enterOuterAlt(e,27),this.state=1551,this.alterSubscriptionStatement();break;case 28:this.enterOuterAlt(e,28),this.state=1552,this.alterStatsStatement();break;case 29:this.enterOuterAlt(e,29),this.state=1553,this.altertsConfigurationStatement();break;case 30:this.enterOuterAlt(e,30),this.state=1554,this.altertsDictionaryStatement();break;case 31:this.enterOuterAlt(e,31),this.state=1555,this.alterUserMappingStatement();break;case 32:this.enterOuterAlt(e,32),this.state=1556,this.analyzeStatement();break;case 33:this.enterOuterAlt(e,33),this.state=1557,this.callStatement();break;case 34:this.enterOuterAlt(e,34),this.state=1558,this.checkpointStatement();break;case 35:this.enterOuterAlt(e,35),this.state=1559,this.closePortalStatement();break;case 36:this.enterOuterAlt(e,36),this.state=1560,this.clusterStatement();break;case 37:this.enterOuterAlt(e,37),this.state=1561,this.commentStatement();break;case 38:this.enterOuterAlt(e,38),this.state=1562,this.setConstraintsStatement();break;case 39:this.enterOuterAlt(e,39),this.state=1563,this.copyStatement();break;case 40:this.enterOuterAlt(e,40),this.state=1564,this.createAccessMethodStatement();break;case 41:this.enterOuterAlt(e,41),this.state=1565,this.createAsStatement();break;case 42:this.enterOuterAlt(e,42),this.state=1566,this.createAssertionStatement();break;case 43:this.enterOuterAlt(e,43),this.state=1567,this.createCastStatement();break;case 44:this.enterOuterAlt(e,44),this.state=1568,this.createConversionStatement();break;case 45:this.enterOuterAlt(e,45),this.state=1569,this.createDomainStatement();break;case 46:this.enterOuterAlt(e,46),this.state=1570,this.createExtensionStatement();break;case 47:this.enterOuterAlt(e,47),this.state=1571,this.createForeignDataWrapperStatement();break;case 48:this.enterOuterAlt(e,48),this.state=1572,this.createForeignServerStatement();break;case 49:this.enterOuterAlt(e,49),this.state=1573,this.createForeignTableStatement();break;case 50:this.enterOuterAlt(e,50),this.state=1574,this.createFunctionStatement();break;case 51:this.enterOuterAlt(e,51),this.state=1575,this.createMaterializedViewStatement();break;case 52:this.enterOuterAlt(e,52),this.state=1576,this.createOperatorClassStatement();break;case 53:this.enterOuterAlt(e,53),this.state=1577,this.createOperatorFamilyStatement();break;case 54:this.enterOuterAlt(e,54),this.state=1578,this.createPublicationStatement();break;case 55:this.enterOuterAlt(e,55),this.state=1579,this.alterOperatorFamilyStatement();break;case 56:this.enterOuterAlt(e,56),this.state=1580,this.createPolicyStatement();break;case 57:this.enterOuterAlt(e,57),this.state=1581,this.createProcedureLangStatement();break;case 58:this.enterOuterAlt(e,58),this.state=1582,this.createSchemaStatement();break;case 59:this.enterOuterAlt(e,59),this.state=1583,this.createSequenceStatement();break;case 60:this.enterOuterAlt(e,60),this.state=1584,this.createStatement();break;case 61:this.enterOuterAlt(e,61),this.state=1585,this.createSubscriptionStatement();break;case 62:this.enterOuterAlt(e,62),this.state=1586,this.createStatsStatement();break;case 63:this.enterOuterAlt(e,63),this.state=1587,this.createTablespaceStatement();break;case 64:this.enterOuterAlt(e,64),this.state=1588,this.createTransformStatement();break;case 65:this.enterOuterAlt(e,65),this.state=1589,this.createTriggerStatement();break;case 66:this.enterOuterAlt(e,66),this.state=1590,this.createEventTriggerStatement();break;case 67:this.enterOuterAlt(e,67),this.state=1591,this.createRoleStatement();break;case 68:this.enterOuterAlt(e,68),this.state=1592,this.createUserMappingStatement();break;case 69:this.enterOuterAlt(e,69),this.state=1593,this.createDatabaseStatement();break;case 70:this.enterOuterAlt(e,70),this.state=1594,this.deallocateStatement();break;case 71:this.enterOuterAlt(e,71),this.state=1595,this.declareCursorStatement();break;case 72:this.enterOuterAlt(e,72),this.state=1596,this.defineStatement();break;case 73:this.enterOuterAlt(e,73),this.state=1597,this.deleteStatement();break;case 74:this.enterOuterAlt(e,74),this.state=1598,this.discardStatement();break;case 75:this.enterOuterAlt(e,75),this.state=1599,this.doStatement();break;case 76:this.enterOuterAlt(e,76),this.state=1600,this.dropCastStatement();break;case 77:this.enterOuterAlt(e,77),this.state=1601,this.dropOperatorClassStatement();break;case 78:this.enterOuterAlt(e,78),this.state=1602,this.dropOperatorFamilyStatement();break;case 79:this.enterOuterAlt(e,79),this.state=1603,this.dropOwnedStatement();break;case 80:this.enterOuterAlt(e,80),this.state=1604,this.dropStatement();break;case 81:this.enterOuterAlt(e,81),this.state=1605,this.dropSubscriptionStatement();break;case 82:this.enterOuterAlt(e,82),this.state=1606,this.dropTablespaceStatement();break;case 83:this.enterOuterAlt(e,83),this.state=1607,this.dropTransformStatement();break;case 84:this.enterOuterAlt(e,84),this.state=1608,this.dropRoleStatement();break;case 85:this.enterOuterAlt(e,85),this.state=1609,this.dropUserMappingStatement();break;case 86:this.enterOuterAlt(e,86),this.state=1610,this.dropDatabaseStatement();break;case 87:this.enterOuterAlt(e,87),this.state=1611,this.executeStatement();break;case 88:this.enterOuterAlt(e,88),this.state=1612,this.explainStatement();break;case 89:this.enterOuterAlt(e,89),this.state=1613,this.fetchStatement();break;case 90:this.enterOuterAlt(e,90),this.state=1614,this.grantStatement();break;case 91:this.enterOuterAlt(e,91),this.state=1615,this.grantPrivilegeStatement();break;case 92:this.enterOuterAlt(e,92),this.state=1616,this.importForeignSchemaStatement();break;case 93:this.enterOuterAlt(e,93),this.state=1617,this.indexStatement();break;case 94:this.enterOuterAlt(e,94),this.state=1618,this.insertStatement();break;case 95:this.enterOuterAlt(e,95),this.state=1619,this.mergeStatement();break;case 96:this.enterOuterAlt(e,96),this.state=1620,this.listenStatement();break;case 97:this.enterOuterAlt(e,97),this.state=1621,this.refreshMaterializedViewStatement();break;case 98:this.enterOuterAlt(e,98),this.state=1622,this.loadStatement();break;case 99:this.enterOuterAlt(e,99),this.state=1623,this.lockStatement();break;case 100:this.enterOuterAlt(e,100),this.state=1624,this.notifyStatement();break;case 101:this.enterOuterAlt(e,101),this.state=1625,this.prepareStatement();break;case 102:this.enterOuterAlt(e,102),this.state=1626,this.reassignOwnedStatement();break;case 103:this.enterOuterAlt(e,103),this.state=1627,this.reindexStatement();break;case 104:this.enterOuterAlt(e,104),this.state=1628,this.removeAggregateStatement();break;case 105:this.enterOuterAlt(e,105),this.state=1629,this.removeFunctionStatement();break;case 106:this.enterOuterAlt(e,106),this.state=1630,this.removeOperatorStatement();break;case 107:this.enterOuterAlt(e,107),this.state=1631,this.renameStatement();break;case 108:this.enterOuterAlt(e,108),this.state=1632,this.revokeStatement();break;case 109:this.enterOuterAlt(e,109),this.state=1633,this.revokePrivilegeStatement();break;case 110:this.enterOuterAlt(e,110),this.state=1634,this.ruleStatement();break;case 111:this.enterOuterAlt(e,111),this.state=1635,this.securityLabelStatement();break;case 112:this.enterOuterAlt(e,112),this.state=1636,this.selectStatement();break;case 113:this.enterOuterAlt(e,113),this.state=1637,this.transactionStatement();break;case 114:this.enterOuterAlt(e,114),this.state=1638,this.truncateStatement();break;case 115:this.enterOuterAlt(e,115),this.state=1639,this.unlistenStatement();break;case 116:this.enterOuterAlt(e,116),this.state=1640,this.updateStatement();break;case 117:this.enterOuterAlt(e,117),this.state=1641,this.vacuumStatement();break;case 118:this.enterOuterAlt(e,118),this.state=1642,this.variableResetStatement();break;case 119:this.enterOuterAlt(e,119),this.state=1643,this.variableSetStatement();break;case 120:this.enterOuterAlt(e,120),this.state=1644,this.variableShowStatement();break;case 121:this.enterOuterAlt(e,121),this.state=1645,this.viewStatement();break;case 122:this.enterOuterAlt(e,122),this.state=1646,this.plsqlConsoleCommand()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}plsqlConsoleCommand(){let e,s=new on(this.context,this.state);this.enterRule(s,8,t.RULE_plsqlConsoleCommand);try{this.enterOuterAlt(s,1),this.state=1649,this.match(t.MetaCommand),this.state=1651,this.errorHandler.sync(this),e=this.tokenStream.LA(1),669===e&&(this.state=1650,this.match(t.EndMetaCommand))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}callStatement(){let e=new Rn(this.context,this.state);this.enterRule(e,10,t.RULE_callStatement);try{this.enterOuterAlt(e,1),this.state=1653,this.match(t.CALL),this.state=1654,this.functionApplication()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalWith(){let e=new An(this.context,this.state);this.enterRule(e,12,t.RULE_optionalWith);try{switch(this.state=1658,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WITH:this.enterOuterAlt(e,1),this.state=1656,this.match(t.WITH);break;case t.EOF:case t.OPEN_PAREN:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.PLUS:case t.MINUS:case t.AND:case t.ARRAY:case t.AS:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CREATE:case t.DEFAULT:case t.DO:case t.FETCH:case t.FROM:case t.GRANT:case t.GROUP_P:case t.IN_P:case t.INTO:case t.NULL_P:case t.TABLE:case t.USER:case t.WHERE:case t.BINARY:case t.FREEZE:case t.IS:case t.OUTER_P:case t.ABSOLUTE_P:case t.ADMIN:case t.BACKWARD:case t.CACHE:case t.CASCADE:case t.CHAIN:case t.CLOSE:case t.COMMIT:case t.CONNECTION:case t.CONTINUE_P:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DELIMITER:case t.ENCODING:case t.ENCRYPTED:case t.ESCAPE:case t.FIRST_P:case t.FORCE:case t.FORWARD:case t.HEADER_P:case t.INCREMENT:case t.INHERIT:case t.INSERT:case t.LAST_P:case t.LOCATION:case t.MAXVALUE:case t.MINVALUE:case t.MOVE:case t.NEXT:case t.NO:case t.OPTION:case t.OWNED:case t.OWNER:case t.PASSWORD:case t.PRIOR:case t.QUOTE:case t.RELATIVE_P:case t.RESET:case t.RESTART:case t.ROLE:case t.ROLLBACK:case t.SCHEMA:case t.SCROLL:case t.SEQUENCE:case t.SET:case t.START:case t.SYSID:case t.TABLESPACE:case t.TEMPLATE:case t.TYPE_P:case t.UNENCRYPTED:case t.VALID:case t.VERSION_P:case t.CALL:case t.CURRENT_P:case t.ROWTYPE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.Integral:case t.Numeric:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalRoleList(){let e,s=new Sn(this.context,this.state);this.enterRule(s,14,t.RULE_optionalRoleList);try{for(this.enterOuterAlt(s,1),this.state=1663,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(e-33&-32)&&1<<e-33&286268421||!(e-66&-32)&&1<<e-66&67108869||!(e-99&-32)&&1<<e-99&2164391937||!(e-134&-32)&&1<<e-134&1216873473||!(e-167&-32)&&1<<e-167&268435489||!(e-207&-32)&&1<<e-207&35651593||!(e-240&-32)&&1<<e-240&6553601||!(e-272&-32)&&1<<e-272&268452097||!(e-306&-32)&&1<<e-306&1051745||!(e-341&-32)&&1<<e-341&8458241||433===e||434===e||!(e-477&-32)&&1<<e-477&3825197057||!(e-509&-32)&&1<<e-509&3055||!(e-636&-32)&&1<<e-636&100663331;)this.state=1660,this.createRoleElement(),this.state=1665,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterOptionalRoleList(){let e,s=new ln(this.context,this.state);this.enterRule(s,16,t.RULE_alterOptionalRoleList);try{for(this.enterOuterAlt(s,1),this.state=1669,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(e-33&-32)&&1<<e-33&286268421||66===e||92===e||!(e-99&-32)&&1<<e-99&2164391937||!(e-144&-32)&&1<<e-144&278012417||!(e-195&-32)&&1<<e-195&36865||!(e-228&-32)&&1<<e-228&1073745937||!(e-261&-32)&&1<<e-261&34080771||!(e-300&-32)&&1<<e-300&67311681||!(e-353&-32)&&1<<e-353&2065||433===e||434===e||!(e-477&-32)&&1<<e-477&3825197057||!(e-509&-32)&&1<<e-509&3055||!(e-636&-32)&&1<<e-636&100663331;)this.state=1666,this.alterRoleElemement(),this.state=1671,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterRoleElemement(){let e,s=new On(this.context,this.state);this.enterRule(s,18,t.RULE_alterRoleElemement);try{switch(this.state=1691,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PASSWORD:switch(this.enterOuterAlt(s,1),this.state=1672,this.match(t.PASSWORD),this.state=1675,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.state=1673,this.sconst();break;case t.NULL_P:this.state=1674,this.match(t.NULL_P);break;default:throw new Ei(this)}break;case t.ENCRYPTED:case t.UNENCRYPTED:this.enterOuterAlt(s,2),this.state=1677,e=this.tokenStream.LA(1),195===e||357===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1678,this.match(t.PASSWORD),this.state=1679,this.sconst();break;case t.INHERIT:this.enterOuterAlt(s,3),this.state=1680,this.match(t.INHERIT);break;case t.CONNECTION:this.enterOuterAlt(s,4),this.state=1681,this.match(t.CONNECTION),this.state=1682,this.match(t.LIMIT),this.state=1683,this.signedIconst();break;case t.VALID:this.enterOuterAlt(s,5),this.state=1684,this.match(t.VALID),this.state=1685,this.match(t.UNTIL),this.state=1686,this.sconst();break;case t.GROUP_P:case t.USER:case t.ROLE:this.enterOuterAlt(s,6),this.state=1687,this.roleOrAliases(),this.state=1688,this.roleNameList();break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.OUTER_P:case t.ABSOLUTE_P:case t.BACKWARD:case t.CHAIN:case t.CLOSE:case t.COMMIT:case t.CONTINUE_P:case t.CURSOR:case t.FIRST_P:case t.FORWARD:case t.INSERT:case t.LAST_P:case t.MOVE:case t.NEXT:case t.NO:case t.OPTION:case t.PRIOR:case t.RELATIVE_P:case t.RESET:case t.ROLLBACK:case t.SCHEMA:case t.SCROLL:case t.SET:case t.TYPE_P:case t.CALL:case t.CURRENT_P:case t.ROWTYPE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(s,7),this.state=1690,this.identifier();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createRoleElement(){let e,s=new In(this.context,this.state);this.enterRule(s,20,t.RULE_createRoleElement);try{switch(this.state=1704,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,11,this.context)){case 1:this.enterOuterAlt(s,1),this.state=1693,this.alterRoleElemement();break;case 2:this.enterOuterAlt(s,2),this.state=1694,this.match(t.SYSID),this.state=1695,this.iconst();break;case 3:this.enterOuterAlt(s,3),this.state=1696,this.match(t.ADMIN),this.state=1697,this.roleNameList();break;case 4:this.enterOuterAlt(s,4),this.state=1699,this.errorHandler.sync(this),e=this.tokenStream.LA(1),68===e&&(this.state=1698,this.match(t.IN_P)),this.state=1701,this.roleOrAliases(),this.state=1702,this.roleNameList()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createRoleStatement(){let e=new un(this.context,this.state);this.enterRule(e,22,t.RULE_createRoleStatement);try{this.enterOuterAlt(e,1),this.state=1706,this.match(t.CREATE),this.state=1707,this.roleOrAliases(),this.state=1708,this.roleName(),this.state=1709,this.optionalWith(),this.state=1710,this.optionalRoleList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterRoleStatement(){let e=new Nn(this.context,this.state);this.enterRule(e,24,t.RULE_alterRoleStatement);try{this.enterOuterAlt(e,1),this.state=1712,this.match(t.ALTER),this.state=1713,this.roleOrAliases(),this.state=1714,this.roleName(),this.state=1715,this.optionalWith(),this.state=1716,this.alterOptionalRoleList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalInDatabase(){let e=new Ln(this.context,this.state);this.enterRule(e,26,t.RULE_optionalInDatabase);try{switch(this.state=1722,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.RESET:case t.SET:this.enterOuterAlt(e,1);break;case t.IN_P:this.enterOuterAlt(e,2),this.state=1719,this.match(t.IN_P),this.state=1720,this.match(t.DATABASE),this.state=1721,this.databaseName();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterRoleSetStatement(){let e,s=new Cn(this.context,this.state);this.enterRule(s,28,t.RULE_alterRoleSetStatement);try{this.enterOuterAlt(s,1),this.state=1724,this.match(t.ALTER),this.state=1725,this.roleOrAliases(),this.state=1727,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=1726,this.match(t.ALL)),this.state=1729,this.roleName(),this.state=1730,this.optionalInDatabase(),this.state=1731,this.setResetClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dropRoleStatement(){let e=new _n(this.context,this.state);this.enterRule(e,30,t.RULE_dropRoleStatement);try{if(this.enterOuterAlt(e,1),1===(this.state=1733,this.match(t.DROP),this.state=1734,this.roleOrAliases(),this.state=1737,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,14,this.context)))this.state=1735,this.match(t.IF_P),this.state=1736,this.match(t.EXISTS);this.state=1739,this.roleNameList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}addOrDrop(){let e,s=new Pn(this.context,this.state);this.enterRule(s,32,t.RULE_addOrDrop);try{this.enterOuterAlt(s,1),this.state=1741,e=this.tokenStream.LA(1),133===e||191===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createSchemaStatement(){let e=new Mn(this.context,this.state);this.enterRule(e,34,t.RULE_createSchemaStatement);try{if(this.enterOuterAlt(e,1),1===(this.state=1743,this.match(t.CREATE),this.state=1744,this.match(t.SCHEMA),this.state=1748,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,15,this.context)))this.state=1745,this.match(t.IF_P),this.state=1746,this.match(t.NOT),this.state=1747,this.match(t.EXISTS);switch(this.state=1755,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,16,this.context)){case 1:this.state=1750,this.optionalSchemaName(),this.state=1751,this.match(t.AUTHORIZATION),this.state=1752,this.roleName();break;case 2:this.state=1754,this.columnId()}this.state=1757,this.optionalSchemaList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalSchemaName(){let e=new dn(this.context,this.state);this.enterRule(e,36,t.RULE_optionalSchemaName);try{switch(this.state=1761,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=1759,this.columnId();break;case t.AUTHORIZATION:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalSchemaList(){let e,s=new Un(this.context,this.state);this.enterRule(s,38,t.RULE_optionalSchemaList);try{for(this.enterOuterAlt(s,1),this.state=1766,this.errorHandler.sync(this),e=this.tokenStream.LA(1);46===e||65===e;)this.state=1763,this.schemaStatement(),this.state=1768,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}schemaStatement(){let e=new mn(this.context,this.state);this.enterRule(e,40,t.RULE_schemaStatement);try{switch(this.state=1775,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,19,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1769,this.createStatement();break;case 2:this.enterOuterAlt(e,2),this.state=1770,this.indexStatement();break;case 3:this.enterOuterAlt(e,3),this.state=1771,this.createSequenceStatement();break;case 4:this.enterOuterAlt(e,4),this.state=1772,this.createTriggerStatement();break;case 5:this.enterOuterAlt(e,5),this.state=1773,this.grantStatement();break;case 6:this.enterOuterAlt(e,6),this.state=1774,this.viewStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}variableSetStatement(){let e,s=new Dn(this.context,this.state);this.enterRule(s,42,t.RULE_variableSetStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=1777,this.match(t.SET),this.state=1779,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,20,this.context)))this.state=1778,e=this.tokenStream.LA(1),245===e||325===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);this.state=1781,this.setStatementEnding()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}setStatementEnding(){let e=new pn(this.context,this.state);this.enterRule(e,44,t.RULE_setStatementEnding);try{switch(this.state=1791,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,21,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1783,this.match(t.TRANSACTION),this.state=1784,this.transactionModeList();break;case 2:this.enterOuterAlt(e,2),this.state=1785,this.match(t.SESSION),this.state=1786,this.match(t.CHARACTERISTICS),this.state=1787,this.match(t.AS),this.state=1788,this.match(t.TRANSACTION),this.state=1789,this.transactionModeList();break;case 3:this.enterOuterAlt(e,3),this.state=1790,this.setStatementMore()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}genericSetClause(){let e,s=new gn(this.context,this.state);this.enterRule(s,46,t.RULE_genericSetClause);try{this.enterOuterAlt(s,1),this.state=1793,this.variableName(),this.state=1794,e=this.tokenStream.LA(1),10===e||94===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1795,this.variableList()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}setStatementMore(){let e=new xn(this.context,this.state);this.enterRule(e,48,t.RULE_setStatementMore);try{switch(this.state=1823,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,22,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1797,this.genericSetClause();break;case 2:this.enterOuterAlt(e,2),this.state=1798,this.variableName(),this.state=1799,this.match(t.FROM),this.state=1800,this.match(t.CURRENT_P);break;case 3:this.enterOuterAlt(e,3),this.state=1802,this.match(t.TIME),this.state=1803,this.match(t.ZONE),this.state=1804,this.zoneValue();break;case 4:this.enterOuterAlt(e,4),this.state=1805,this.match(t.CATALOG),this.state=1806,this.sconst();break;case 5:this.enterOuterAlt(e,5),this.state=1807,this.match(t.SCHEMA),this.state=1808,this.schemaName();break;case 6:this.enterOuterAlt(e,6),this.state=1809,this.match(t.NAMES),this.state=1810,this.optionalEncoding();break;case 7:this.enterOuterAlt(e,7),this.state=1811,this.roleOrAliases(),this.state=1812,this.nonReservedWordOrSconst();break;case 8:this.enterOuterAlt(e,8),this.state=1814,this.match(t.SESSION),this.state=1815,this.match(t.AUTHORIZATION),this.state=1816,this.nonReservedWordOrSconst();break;case 9:this.enterOuterAlt(e,9),this.state=1817,this.match(t.XML_P),this.state=1818,this.match(t.OPTION),this.state=1819,this.documentOrContent();break;case 10:this.enterOuterAlt(e,10),this.state=1820,this.match(t.TRANSACTION),this.state=1821,this.match(t.SNAPSHOT),this.state=1822,this.sconst()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}variableName(){let e,s=new kn(this.context,this.state);this.enterRule(s,50,t.RULE_variableName);try{for(this.enterOuterAlt(s,1),this.state=1825,this.columnId(),this.state=1830,this.errorHandler.sync(this),e=this.tokenStream.LA(1);11===e;)this.state=1826,this.match(t.DOT),this.state=1827,this.columnId(),this.state=1832,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}variableList(){let e,s=new Hn(this.context,this.state);this.enterRule(s,52,t.RULE_variableList);try{for(this.enterOuterAlt(s,1),this.state=1833,this.variableValue(),this.state=1838,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=1834,this.match(t.COMMA),this.state=1835,this.variableValue(),this.state=1840,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}variableValue(){let e=new Gn(this.context,this.state);this.enterRule(e,54,t.RULE_variableValue);try{switch(this.state=1843,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.ON:case t.TABLE:case t.TRUE_P:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=1841,this.booleanOrString();break;case t.PLUS:case t.MINUS:case t.Integral:case t.Numeric:this.enterOuterAlt(e,2),this.state=1842,this.numericOnly();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}isoLevel(){let e,s=new Fn(this.context,this.state);this.enterRule(s,56,t.RULE_isoLevel);try{switch(this.state=1850,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.READ:this.enterOuterAlt(s,1),this.state=1845,this.match(t.READ),this.state=1846,e=this.tokenStream.LA(1),162===e||356===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.REPEATABLE:this.enterOuterAlt(s,2),this.state=1847,this.match(t.REPEATABLE),this.state=1848,this.match(t.READ);break;case t.SERIALIZABLE:this.enterOuterAlt(s,3),this.state=1849,this.match(t.SERIALIZABLE);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}booleanOrString(){let e=new vn(this.context,this.state);this.enterRule(e,58,t.RULE_booleanOrString);try{switch(this.state=1856,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.TRUE_P:this.enterOuterAlt(e,1),this.state=1852,this.match(t.TRUE_P);break;case t.FALSE_P:this.enterOuterAlt(e,2),this.state=1853,this.match(t.FALSE_P);break;case t.ON:this.enterOuterAlt(e,3),this.state=1854,this.match(t.ON);break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(e,4),this.state=1855,this.nonReservedWordOrSconst();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}zoneValue(){let e=new Bn(this.context,this.state);this.enterRule(e,60,t.RULE_zoneValue);try{switch(this.state=1873,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,28,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1858,this.sconst();break;case 2:this.enterOuterAlt(e,2),this.state=1859,this.identifier();break;case 3:this.enterOuterAlt(e,3),this.state=1860,this.constInterval(),this.state=1861,this.sconst(),this.state=1862,this.optionalInterval();break;case 4:this.enterOuterAlt(e,4),this.state=1864,this.constInterval(),this.state=1865,this.match(t.OPEN_PAREN),this.state=1866,this.iconst(),this.state=1867,this.match(t.CLOSE_PAREN),this.state=1868,this.sconst();break;case 5:this.enterOuterAlt(e,5),this.state=1870,this.numericOnly();break;case 6:this.enterOuterAlt(e,6),this.state=1871,this.match(t.DEFAULT);break;case 7:this.enterOuterAlt(e,7),this.state=1872,this.match(t.LOCAL)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalEncoding(){let e=new yn(this.context,this.state);this.enterRule(e,62,t.RULE_optionalEncoding);try{switch(this.state=1878,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=1875,this.sconst();break;case t.DEFAULT:this.enterOuterAlt(e,2),this.state=1876,this.match(t.DEFAULT);break;case t.EOF:case t.SEMI:case t.AS:case t.INTO:case t.NOT:case t.WINDOW:case t.CALLED:case t.COST:case t.EXTERNAL:case t.IMMUTABLE:case t.LANGUAGE:case t.LEAKPROOF:case t.RESET:case t.RESTRICT:case t.RETURNS:case t.ROWS:case t.SECURITY:case t.SET:case t.STABLE:case t.STRICT_P:case t.VOLATILE:case t.TRANSFORM:case t.SUPPORT:case t.PARALLEL:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}nonReservedWordOrSconst(){let e=new fn(this.context,this.state);this.enterRule(e,64,t.RULE_nonReservedWordOrSconst);try{switch(this.state=1882,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=1880,this.nonReservedWord();break;case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.enterOuterAlt(e,2),this.state=1881,this.sconst();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}variableResetStatement(){let e=new Yn(this.context,this.state);this.enterRule(e,66,t.RULE_variableResetStatement);try{this.enterOuterAlt(e,1),this.state=1884,this.match(t.RESET),this.state=1885,this.resetClauseRest()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}resetClauseRest(){let e=new wn(this.context,this.state);this.enterRule(e,68,t.RULE_resetClauseRest);try{switch(this.state=1895,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,31,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1887,this.genericResetClause();break;case 2:this.enterOuterAlt(e,2),this.state=1888,this.match(t.TIME),this.state=1889,this.match(t.ZONE);break;case 3:this.enterOuterAlt(e,3),this.state=1890,this.match(t.TRANSACTION),this.state=1891,this.match(t.ISOLATION),this.state=1892,this.match(t.LEVEL);break;case 4:this.enterOuterAlt(e,4),this.state=1893,this.match(t.SESSION),this.state=1894,this.match(t.AUTHORIZATION)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}genericResetClause(){let e=new bn(this.context,this.state);this.enterRule(e,70,t.RULE_genericResetClause);try{switch(this.state=1899,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=1897,this.variableName();break;case t.ALL:this.enterOuterAlt(e,2),this.state=1898,this.match(t.ALL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}setResetClause(){let e=new Wn(this.context,this.state);this.enterRule(e,72,t.RULE_setResetClause);try{switch(this.state=1904,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SET:this.enterOuterAlt(e,1),this.state=1901,this.match(t.SET),this.state=1902,this.setStatementEnding();break;case t.RESET:this.enterOuterAlt(e,2),this.state=1903,this.variableResetStatement();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionSetResetClause(){let e=new Vn(this.context,this.state);this.enterRule(e,74,t.RULE_functionSetResetClause);try{switch(this.state=1909,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SET:this.enterOuterAlt(e,1),this.state=1906,this.match(t.SET),this.state=1907,this.setStatementMore();break;case t.RESET:this.enterOuterAlt(e,2),this.state=1908,this.variableResetStatement();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}variableShowStatement(){let e=new Xn(this.context,this.state);this.enterRule(e,76,t.RULE_variableShowStatement);try{switch(this.enterOuterAlt(e,1),this.state=1911,this.match(t.SHOW),this.state=1921,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,35,this.context)){case 1:this.state=1912,this.variableName();break;case 2:this.state=1913,this.match(t.TIME),this.state=1914,this.match(t.ZONE);break;case 3:this.state=1915,this.match(t.TRANSACTION),this.state=1916,this.match(t.ISOLATION),this.state=1917,this.match(t.LEVEL);break;case 4:this.state=1918,this.match(t.SESSION),this.state=1919,this.match(t.AUTHORIZATION);break;case 5:this.state=1920,this.match(t.ALL)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}setConstraintsStatement(){let e=new Kn(this.context,this.state);this.enterRule(e,78,t.RULE_setConstraintsStatement);try{this.enterOuterAlt(e,1),this.state=1923,this.match(t.SET),this.state=1924,this.match(t.CONSTRAINTS),this.state=1925,this.constraintsSetList(),this.state=1926,this.constraintsSetMode()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}constraintsSetList(){let e=new Qn(this.context,this.state);this.enterRule(e,80,t.RULE_constraintsSetList);try{switch(this.state=1930,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALL:this.enterOuterAlt(e,1),this.state=1928,this.match(t.ALL);break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,2),this.state=1929,this.qualifiedNameList();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}constraintsSetMode(){let e,s=new Jn(this.context,this.state);this.enterRule(s,82,t.RULE_constraintsSetMode);try{this.enterOuterAlt(s,1),this.state=1932,e=this.tokenStream.LA(1),180===e||221===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}checkpointStatement(){let e=new Zn(this.context,this.state);this.enterRule(e,84,t.RULE_checkpointStatement);try{this.enterOuterAlt(e,1),this.state=1934,this.match(t.CHECKPOINT)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}discardStatement(){let e,s=new qn(this.context,this.state);this.enterRule(s,86,t.RULE_discardStatement);try{this.enterOuterAlt(s,1),this.state=1936,this.match(t.DISCARD),this.state=1937,e=this.tokenStream.LA(1),30===e||281===e||!(e-322&-32)&&1<<e-322&41943041?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterTableStatement(){let e,s=new jn(this.context,this.state);this.enterRule(s,88,t.RULE_alterTableStatement);try{switch(this.state=2039,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,47,this.context)){case 1:if(this.enterOuterAlt(s,1),1===(this.state=1939,this.match(t.ALTER),this.state=1940,this.match(t.TABLE),this.state=1943,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,37,this.context)))this.state=1941,this.match(t.IF_P),this.state=1942,this.match(t.EXISTS);switch(this.state=1945,this.relationExpression(),this.state=1948,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NOT:case t.ADD_P:case t.ALTER:case t.CLUSTER:case t.DISABLE_P:case t.DROP:case t.ENABLE_P:case t.FORCE:case t.INHERIT:case t.NO:case t.OF:case t.OPTIONS:case t.OWNER:case t.REPLICA:case t.RESET:case t.SET:case t.VALIDATE:this.state=1946,this.alterTableCommands();break;case t.ATTACH:case t.DETACH:this.state=1947,this.partitionCommand();break;default:throw new Ei(this)}break;case 2:this.enterOuterAlt(s,2),this.state=1950,this.match(t.ALTER),this.state=1951,this.match(t.TABLE),this.state=1952,this.match(t.ALL),this.state=1953,this.match(t.IN_P),this.state=1954,this.match(t.TABLESPACE),this.state=1955,this.name(),this.state=1959,this.errorHandler.sync(this),e=this.tokenStream.LA(1),274===e&&(this.state=1956,this.match(t.OWNED),this.state=1957,this.match(t.BY),this.state=1958,this.roleNameList()),this.state=1961,this.match(t.SET),this.state=1962,this.match(t.TABLESPACE),this.state=1963,this.name(),this.state=1964,this.optionalNowait();break;case 3:if(this.enterOuterAlt(s,3),1===(this.state=1966,this.match(t.ALTER),this.state=1967,this.match(t.INDEX),this.state=1970,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,40,this.context)))this.state=1968,this.match(t.IF_P),this.state=1969,this.match(t.EXISTS);switch(this.state=1972,this.indexName(),this.state=1975,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NOT:case t.ADD_P:case t.ALTER:case t.CLUSTER:case t.DISABLE_P:case t.DROP:case t.ENABLE_P:case t.FORCE:case t.INHERIT:case t.NO:case t.OF:case t.OPTIONS:case t.OWNER:case t.REPLICA:case t.RESET:case t.SET:case t.VALIDATE:this.state=1973,this.alterTableCommands();break;case t.ATTACH:this.state=1974,this.indexPartitionCommand();break;default:throw new Ei(this)}break;case 4:this.enterOuterAlt(s,4),this.state=1977,this.match(t.ALTER),this.state=1978,this.match(t.INDEX),this.state=1979,this.match(t.ALL),this.state=1980,this.match(t.IN_P),this.state=1981,this.match(t.TABLESPACE),this.state=1982,this.name(),this.state=1986,this.errorHandler.sync(this),e=this.tokenStream.LA(1),274===e&&(this.state=1983,this.match(t.OWNED),this.state=1984,this.match(t.BY),this.state=1985,this.roleNameList()),this.state=1988,this.match(t.SET),this.state=1989,this.match(t.TABLESPACE),this.state=1990,this.name(),this.state=1991,this.optionalNowait();break;case 5:if(this.enterOuterAlt(s,5),1===(this.state=1993,this.match(t.ALTER),this.state=1994,this.match(t.VIEW),this.state=1997,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,43,this.context)))this.state=1995,this.match(t.IF_P),this.state=1996,this.match(t.EXISTS);this.state=1999,this.viewName(),this.state=2e3,this.alterTableCommands();break;case 6:if(this.enterOuterAlt(s,6),1===(this.state=2002,this.match(t.ALTER),this.state=2003,this.match(t.MATERIALIZED),this.state=2004,this.match(t.VIEW),this.state=2007,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,44,this.context)))this.state=2005,this.match(t.IF_P),this.state=2006,this.match(t.EXISTS);this.state=2009,this.qualifiedName(),this.state=2010,this.alterTableCommands();break;case 7:this.enterOuterAlt(s,7),this.state=2012,this.match(t.ALTER),this.state=2013,this.match(t.MATERIALIZED),this.state=2014,this.match(t.VIEW),this.state=2015,this.match(t.ALL),this.state=2016,this.match(t.IN_P),this.state=2017,this.match(t.TABLESPACE),this.state=2018,this.name(),this.state=2022,this.errorHandler.sync(this),e=this.tokenStream.LA(1),274===e&&(this.state=2019,this.match(t.OWNED),this.state=2020,this.match(t.BY),this.state=2021,this.roleNameList()),this.state=2024,this.match(t.SET),this.state=2025,this.match(t.TABLESPACE),this.state=2026,this.name(),this.state=2027,this.optionalNowait();break;case 8:if(this.enterOuterAlt(s,8),1===(this.state=2029,this.match(t.ALTER),this.state=2030,this.match(t.FOREIGN),this.state=2031,this.match(t.TABLE),this.state=2034,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,46,this.context)))this.state=2032,this.match(t.IF_P),this.state=2033,this.match(t.EXISTS);this.state=2036,this.relationExpression(),this.state=2037,this.alterTableCommands()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterTableCommands(){let e,s=new zn(this.context,this.state);this.enterRule(s,90,t.RULE_alterTableCommands);try{for(this.enterOuterAlt(s,1),this.state=2041,this.alterTableCommand(),this.state=2046,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=2042,this.match(t.COMMA),this.state=2043,this.alterTableCommand(),this.state=2048,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}partitionCommand(){let e=new $n(this.context,this.state);this.enterRule(e,92,t.RULE_partitionCommand);try{switch(this.state=2057,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ATTACH:this.enterOuterAlt(e,1),this.state=2049,this.match(t.ATTACH),this.state=2050,this.match(t.PARTITION),this.state=2051,this.qualifiedName(),this.state=2052,this.partitionBoundSpecification();break;case t.DETACH:this.enterOuterAlt(e,2),this.state=2054,this.match(t.DETACH),this.state=2055,this.match(t.PARTITION),this.state=2056,this.qualifiedName();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}indexPartitionCommand(){let e=new th(this.context,this.state);this.enterRule(e,94,t.RULE_indexPartitionCommand);try{this.enterOuterAlt(e,1),this.state=2059,this.match(t.ATTACH),this.state=2060,this.match(t.PARTITION),this.state=2061,this.qualifiedName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterTableCommand(){let e,s=new eh(this.context,this.state);this.enterRule(s,96,t.RULE_alterTableCommand);try{switch(this.state=2304,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,53,this.context)){case 1:this.enterOuterAlt(s,1),this.state=2063,this.match(t.ADD_P),this.state=2064,this.columnDefinition();break;case 2:this.enterOuterAlt(s,2),this.state=2065,this.match(t.ADD_P),this.state=2066,this.match(t.IF_P),this.state=2067,this.match(t.NOT),this.state=2068,this.match(t.EXISTS),this.state=2069,this.columnDefinition();break;case 3:this.enterOuterAlt(s,3),this.state=2070,this.match(t.ADD_P),this.state=2071,this.match(t.COLUMN),this.state=2072,this.columnDefinition();break;case 4:this.enterOuterAlt(s,4),this.state=2073,this.match(t.ADD_P),this.state=2074,this.match(t.COLUMN),this.state=2075,this.match(t.IF_P),this.state=2076,this.match(t.NOT),this.state=2077,this.match(t.EXISTS),this.state=2078,this.columnDefinition();break;case 5:this.enterOuterAlt(s,5),this.state=2079,this.match(t.ALTER),this.state=2080,this.optionalColumn(),this.state=2081,this.columnId(),this.state=2082,this.alterColumnDefault();break;case 6:this.enterOuterAlt(s,6),this.state=2084,this.match(t.ALTER),this.state=2085,this.optionalColumn(),this.state=2086,this.columnId(),this.state=2087,this.match(t.DROP),this.state=2088,this.match(t.NOT),this.state=2089,this.match(t.NULL_P);break;case 7:this.enterOuterAlt(s,7),this.state=2091,this.match(t.ALTER),this.state=2092,this.optionalColumn(),this.state=2093,this.columnId(),this.state=2094,this.match(t.SET),this.state=2095,this.match(t.NOT),this.state=2096,this.match(t.NULL_P);break;case 8:this.enterOuterAlt(s,8),this.state=2098,this.match(t.ALTER),this.state=2099,this.optionalColumn(),this.state=2100,this.columnId(),this.state=2101,this.match(t.DROP),this.state=2102,this.match(t.EXPRESSION);break;case 9:this.enterOuterAlt(s,9),this.state=2104,this.match(t.ALTER),this.state=2105,this.optionalColumn(),this.state=2106,this.columnId(),this.state=2107,this.match(t.DROP),this.state=2108,this.match(t.EXPRESSION),this.state=2109,this.match(t.IF_P),this.state=2110,this.match(t.EXISTS);break;case 10:this.enterOuterAlt(s,10),this.state=2112,this.match(t.ALTER),this.state=2113,this.optionalColumn(),this.state=2114,this.columnId(),this.state=2115,this.match(t.SET),this.state=2116,this.match(t.STATISTICS),this.state=2117,this.signedIconst();break;case 11:this.enterOuterAlt(s,11),this.state=2119,this.match(t.ALTER),this.state=2120,this.optionalColumn(),this.state=2121,this.iconst(),this.state=2122,this.match(t.SET),this.state=2123,this.match(t.STATISTICS),this.state=2124,this.signedIconst();break;case 12:this.enterOuterAlt(s,12),this.state=2126,this.match(t.ALTER),this.state=2127,this.optionalColumn(),this.state=2128,this.columnId(),this.state=2129,this.match(t.SET),this.state=2130,this.relOptions();break;case 13:this.enterOuterAlt(s,13),this.state=2132,this.match(t.ALTER),this.state=2133,this.optionalColumn(),this.state=2134,this.columnId(),this.state=2135,this.match(t.RESET),this.state=2136,this.relOptions();break;case 14:this.enterOuterAlt(s,14),this.state=2138,this.match(t.ALTER),this.state=2139,this.optionalColumn(),this.state=2140,this.columnId(),this.state=2141,this.match(t.SET),this.state=2142,this.match(t.STORAGE),this.state=2143,this.columnId();break;case 15:this.enterOuterAlt(s,15),this.state=2145,this.match(t.ALTER),this.state=2146,this.optionalColumn(),this.state=2147,this.columnId(),this.state=2148,this.match(t.ADD_P),this.state=2149,this.match(t.GENERATED),this.state=2150,this.generatedWhen(),this.state=2151,this.match(t.AS),this.state=2152,this.match(t.IDENTITY_P),this.state=2153,this.optionalParenthesizedSeqOptionsList();break;case 16:this.enterOuterAlt(s,16),this.state=2155,this.match(t.ALTER),this.state=2156,this.optionalColumn(),this.state=2157,this.columnId(),this.state=2158,this.alterIdentityColumnOptionList();break;case 17:this.enterOuterAlt(s,17),this.state=2160,this.match(t.ALTER),this.state=2161,this.optionalColumn(),this.state=2162,this.columnId(),this.state=2163,this.match(t.DROP),this.state=2164,this.match(t.IDENTITY_P);break;case 18:this.enterOuterAlt(s,18),this.state=2166,this.match(t.ALTER),this.state=2167,this.optionalColumn(),this.state=2168,this.columnId(),this.state=2169,this.match(t.DROP),this.state=2170,this.match(t.IDENTITY_P),this.state=2171,this.match(t.IF_P),this.state=2172,this.match(t.EXISTS);break;case 19:this.enterOuterAlt(s,19),this.state=2174,this.match(t.DROP),this.state=2175,this.optionalColumn(),this.state=2176,this.match(t.IF_P),this.state=2177,this.match(t.EXISTS),this.state=2178,this.columnId(),this.state=2179,this.optionalDropBehavior();break;case 20:this.enterOuterAlt(s,20),this.state=2181,this.match(t.DROP),this.state=2182,this.optionalColumn(),this.state=2183,this.columnId(),this.state=2184,this.optionalDropBehavior();break;case 21:this.enterOuterAlt(s,21),this.state=2186,this.match(t.ALTER),this.state=2187,this.optionalColumn(),this.state=2188,this.columnId(),this.state=2189,this.optionalSetData(),this.state=2190,this.match(t.TYPE_P),this.state=2191,this.typeName(),this.state=2192,this.optionalCollateClause(),this.state=2193,this.alterUsing();break;case 22:this.enterOuterAlt(s,22),this.state=2195,this.match(t.ALTER),this.state=2196,this.optionalColumn(),this.state=2197,this.columnId(),this.state=2198,this.alterGenericOptions();break;case 23:this.enterOuterAlt(s,23),this.state=2200,this.match(t.ADD_P),this.state=2201,this.tableConstraint();break;case 24:this.enterOuterAlt(s,24),this.state=2202,this.match(t.ALTER),this.state=2203,this.match(t.CONSTRAINT),this.state=2204,this.constraintName(),this.state=2206,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=2205,this.constraintAttributeElement(),this.state=2208,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(!(e-54&-32)&&1<<e-54&8421377||262===e);break;case 25:this.enterOuterAlt(s,25),this.state=2210,this.match(t.VALIDATE),this.state=2211,this.match(t.CONSTRAINT),this.state=2212,this.constraintName();break;case 26:if(this.enterOuterAlt(s,26),1===(this.state=2213,this.match(t.DROP),this.state=2214,this.match(t.CONSTRAINT),this.state=2217,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,51,this.context)))this.state=2215,this.match(t.IF_P),this.state=2216,this.match(t.EXISTS);this.state=2219,this.constraintName(),this.state=2220,this.optionalDropBehavior();break;case 27:this.enterOuterAlt(s,27),this.state=2222,this.match(t.SET),this.state=2223,this.match(t.WITHOUT),this.state=2224,this.match(t.OIDS);break;case 28:this.enterOuterAlt(s,28),this.state=2225,this.match(t.CLUSTER),this.state=2226,this.match(t.ON),this.state=2227,this.name();break;case 29:this.enterOuterAlt(s,29),this.state=2228,this.match(t.SET),this.state=2229,this.match(t.WITHOUT),this.state=2230,this.match(t.CLUSTER);break;case 30:this.enterOuterAlt(s,30),this.state=2231,this.match(t.SET),this.state=2232,this.match(t.LOGGED);break;case 31:this.enterOuterAlt(s,31),this.state=2233,this.match(t.SET),this.state=2234,this.match(t.UNLOGGED);break;case 32:this.enterOuterAlt(s,32),this.state=2235,this.match(t.ENABLE_P),this.state=2237,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(139===e||305===e)&&(this.state=2236,e=this.tokenStream.LA(1),139===e||305===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2239,this.match(t.TRIGGER),this.state=2240,this.triggerName();break;case 33:this.enterOuterAlt(s,33),this.state=2241,this.match(t.ENABLE_P),this.state=2242,this.match(t.TRIGGER),this.state=2243,e=this.tokenStream.LA(1),30===e||99===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case 34:this.enterOuterAlt(s,34),this.state=2244,this.match(t.DISABLE_P),this.state=2245,this.match(t.TRIGGER),this.state=2246,this.triggerName();break;case 35:this.enterOuterAlt(s,35),this.state=2247,this.match(t.DISABLE_P),this.state=2248,this.match(t.TRIGGER),this.state=2249,e=this.tokenStream.LA(1),30===e||99===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case 36:this.enterOuterAlt(s,36),this.state=2250,this.match(t.ENABLE_P),this.state=2251,this.match(t.RULE),this.state=2252,this.name();break;case 37:this.enterOuterAlt(s,37),this.state=2253,this.match(t.ENABLE_P),this.state=2254,this.match(t.ALWAYS),this.state=2255,this.match(t.RULE),this.state=2256,this.name();break;case 38:this.enterOuterAlt(s,38),this.state=2257,this.match(t.ENABLE_P),this.state=2258,this.match(t.REPLICA),this.state=2259,this.match(t.RULE),this.state=2260,this.name();break;case 39:this.enterOuterAlt(s,39),this.state=2261,this.match(t.DISABLE_P),this.state=2262,this.match(t.RULE),this.state=2263,this.name();break;case 40:this.enterOuterAlt(s,40),this.state=2264,this.match(t.INHERIT),this.state=2265,this.qualifiedName();break;case 41:this.enterOuterAlt(s,41),this.state=2266,this.match(t.NO),this.state=2267,this.match(t.INHERIT),this.state=2268,this.qualifiedName();break;case 42:this.enterOuterAlt(s,42),this.state=2269,this.match(t.OF),this.state=2270,this.anyName();break;case 43:this.enterOuterAlt(s,43),this.state=2271,this.match(t.NOT),this.state=2272,this.match(t.OF);break;case 44:this.enterOuterAlt(s,44),this.state=2273,this.match(t.OWNER),this.state=2274,this.match(t.TO),this.state=2275,this.roleName();break;case 45:this.enterOuterAlt(s,45),this.state=2276,this.match(t.SET),this.state=2277,this.match(t.TABLESPACE),this.state=2278,this.name();break;case 46:this.enterOuterAlt(s,46),this.state=2279,this.match(t.SET),this.state=2280,this.relOptions();break;case 47:this.enterOuterAlt(s,47),this.state=2281,this.match(t.RESET),this.state=2282,this.relOptions();break;case 48:this.enterOuterAlt(s,48),this.state=2283,this.match(t.REPLICA),this.state=2284,this.match(t.IDENTITY_P),this.state=2285,this.replicaIdentity();break;case 49:this.enterOuterAlt(s,49),this.state=2286,this.match(t.ENABLE_P),this.state=2287,this.match(t.ROW),this.state=2288,this.match(t.LEVEL),this.state=2289,this.match(t.SECURITY);break;case 50:this.enterOuterAlt(s,50),this.state=2290,this.match(t.DISABLE_P),this.state=2291,this.match(t.ROW),this.state=2292,this.match(t.LEVEL),this.state=2293,this.match(t.SECURITY);break;case 51:this.enterOuterAlt(s,51),this.state=2294,this.match(t.FORCE),this.state=2295,this.match(t.ROW),this.state=2296,this.match(t.LEVEL),this.state=2297,this.match(t.SECURITY);break;case 52:this.enterOuterAlt(s,52),this.state=2298,this.match(t.NO),this.state=2299,this.match(t.FORCE),this.state=2300,this.match(t.ROW),this.state=2301,this.match(t.LEVEL),this.state=2302,this.match(t.SECURITY);break;case 53:this.enterOuterAlt(s,53),this.state=2303,this.alterGenericOptions()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterColumnDefault(){let e=new sh(this.context,this.state);this.enterRule(e,98,t.RULE_alterColumnDefault);try{switch(this.state=2311,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SET:this.enterOuterAlt(e,1),this.state=2306,this.match(t.SET),this.state=2307,this.match(t.DEFAULT),this.state=2308,this.expression1();break;case t.DROP:this.enterOuterAlt(e,2),this.state=2309,this.match(t.DROP),this.state=2310,this.match(t.DEFAULT);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalDropBehavior(){let e=new ah(this.context,this.state);this.enterRule(e,100,t.RULE_optionalDropBehavior);try{switch(this.state=2316,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CASCADE:this.enterOuterAlt(e,1),this.state=2313,this.match(t.CASCADE);break;case t.RESTRICT:this.enterOuterAlt(e,2),this.state=2314,this.match(t.RESTRICT);break;case t.EOF:case t.COMMA:case t.SEMI:case t.INTO:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalCollateClause(){let e=new rh(this.context,this.state);this.enterRule(e,102,t.RULE_optionalCollateClause);try{switch(this.state=2321,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.COLLATE:this.enterOuterAlt(e,1),this.state=2318,this.match(t.COLLATE),this.state=2319,this.anyName();break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.INTO:case t.USING:case t.CASCADE:case t.RESTRICT:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterUsing(){let e=new ih(this.context,this.state);this.enterRule(e,104,t.RULE_alterUsing);try{switch(this.state=2326,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.USING:this.enterOuterAlt(e,1),this.state=2323,this.match(t.USING),this.state=2324,this.expression1();break;case t.EOF:case t.COMMA:case t.SEMI:case t.INTO:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}replicaIdentity(){let e=new ch(this.context,this.state);this.enterRule(e,106,t.RULE_replicaIdentity);try{switch(this.state=2334,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NOTHING:this.enterOuterAlt(e,1),this.state=2328,this.match(t.NOTHING);break;case t.FULL:this.enterOuterAlt(e,2),this.state=2329,this.match(t.FULL);break;case t.DEFAULT:this.enterOuterAlt(e,3),this.state=2330,this.match(t.DEFAULT);break;case t.USING:this.enterOuterAlt(e,4),this.state=2331,this.match(t.USING),this.state=2332,this.match(t.INDEX),this.state=2333,this.indexName();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}relOptions(){let e=new nh(this.context,this.state);this.enterRule(e,108,t.RULE_relOptions);try{this.enterOuterAlt(e,1),this.state=2336,this.match(t.OPEN_PAREN),this.state=2337,this.relOptionList(),this.state=2338,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalRelOptions(){let e=new hh(this.context,this.state);this.enterRule(e,110,t.RULE_optionalRelOptions);try{switch(this.state=2343,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WITH:this.enterOuterAlt(e,1),this.state=2340,this.match(t.WITH),this.state=2341,this.relOptions();break;case t.EOF:case t.SEMI:case t.AS:case t.CREATE:case t.GRANT:case t.INTO:case t.WHERE:case t.TABLESPACE:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}relOptionList(){let e,s=new Eh(this.context,this.state);this.enterRule(s,112,t.RULE_relOptionList);try{for(this.enterOuterAlt(s,1),this.state=2345,this.relOptionElem(),this.state=2350,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=2346,this.match(t.COMMA),this.state=2347,this.relOptionElem(),this.state=2352,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}relOptionElem(){let e,s=new Th(this.context,this.state);this.enterRule(s,114,t.RULE_relOptionElem);try{switch(this.enterOuterAlt(s,1),this.state=2353,this.columnLabel(),this.state=2362,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EQUAL:this.state=2354,this.match(t.EQUAL),this.state=2355,this.definitionArgument();break;case t.DOT:this.state=2356,this.match(t.DOT),this.state=2357,this.columnLabel(),this.state=2360,this.errorHandler.sync(this),e=this.tokenStream.LA(1),10===e&&(this.state=2358,this.match(t.EQUAL),this.state=2359,this.definitionArgument());case t.CLOSE_PAREN:case t.COMMA:}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterIdentityColumnOptionList(){let e,s=new oh(this.context,this.state);this.enterRule(s,116,t.RULE_alterIdentityColumnOptionList);try{this.enterOuterAlt(s,1),this.state=2365,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=2364,this.alterIdentityColumnOption(),this.state=2367,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(307===e||326===e)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterIdentityColumnOption(){let e,s=new Rh(this.context,this.state);this.enterRule(s,118,t.RULE_alterIdentityColumnOption);try{switch(this.state=2381,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.RESTART:this.enterOuterAlt(s,1),this.state=2369,this.match(t.RESTART),this.state=2373,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(12===e||13===e||105===e||658===e||660===e)&&(this.state=2370,this.optionalWith(),this.state=2371,this.numericOnly());break;case t.SET:switch(this.enterOuterAlt(s,2),this.state=2375,this.match(t.SET),this.state=2379,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AS:case t.CACHE:case t.CYCLE:case t.INCREMENT:case t.MAXVALUE:case t.MINVALUE:case t.NO:case t.OWNED:case t.RESTART:case t.SEQUENCE:case t.START:this.state=2376,this.sequenceOptionItem();break;case t.GENERATED:this.state=2377,this.match(t.GENERATED),this.state=2378,this.generatedWhen();break;default:throw new Ei(this)}break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}partitionBoundSpecification(){let e=new Ah(this.context,this.state);this.enterRule(e,120,t.RULE_partitionBoundSpecification);try{switch(this.state=2409,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,67,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2383,this.match(t.FOR),this.state=2384,this.match(t.VALUES),this.state=2385,this.match(t.WITH),this.state=2386,this.match(t.OPEN_PAREN),this.state=2387,this.hashPartitionBound(),this.state=2388,this.match(t.CLOSE_PAREN);break;case 2:this.enterOuterAlt(e,2),this.state=2390,this.match(t.FOR),this.state=2391,this.match(t.VALUES),this.state=2392,this.match(t.IN_P),this.state=2393,this.match(t.OPEN_PAREN),this.state=2394,this.expressionList(),this.state=2395,this.match(t.CLOSE_PAREN);break;case 3:this.enterOuterAlt(e,3),this.state=2397,this.match(t.FOR),this.state=2398,this.match(t.VALUES),this.state=2399,this.match(t.FROM),this.state=2400,this.match(t.OPEN_PAREN),this.state=2401,this.expressionList(),this.state=2402,this.match(t.CLOSE_PAREN),this.state=2403,this.match(t.TO),this.state=2404,this.match(t.OPEN_PAREN),this.state=2405,this.expressionList(),this.state=2406,this.match(t.CLOSE_PAREN);break;case 4:this.enterOuterAlt(e,4),this.state=2408,this.match(t.DEFAULT)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}hashPartitionBoundElement(){let e=new Sh(this.context,this.state);this.enterRule(e,122,t.RULE_hashPartitionBoundElement);try{this.enterOuterAlt(e,1),this.state=2411,this.nonReservedWord(),this.state=2412,this.iconst()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}hashPartitionBound(){let e,s=new lh(this.context,this.state);this.enterRule(s,124,t.RULE_hashPartitionBound);try{for(this.enterOuterAlt(s,1),this.state=2414,this.hashPartitionBoundElement(),this.state=2419,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=2415,this.match(t.COMMA),this.state=2416,this.hashPartitionBoundElement(),this.state=2421,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterCompositeTypeStatement(){let e=new Oh(this.context,this.state);this.enterRule(e,126,t.RULE_alterCompositeTypeStatement);try{this.enterOuterAlt(e,1),this.state=2422,this.match(t.ALTER),this.state=2423,this.match(t.TYPE_P),this.state=2424,this.anyName(),this.state=2425,this.alterTypeCommands()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterTypeCommands(){let e,s=new Ih(this.context,this.state);this.enterRule(s,128,t.RULE_alterTypeCommands);try{for(this.enterOuterAlt(s,1),this.state=2427,this.alterTypeCommand(),this.state=2432,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=2428,this.match(t.COMMA),this.state=2429,this.alterTypeCommand(),this.state=2434,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterTypeCommand(){let e=new uh(this.context,this.state);this.enterRule(e,130,t.RULE_alterTypeCommand);try{switch(this.state=2458,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ADD_P:this.enterOuterAlt(e,1),this.state=2435,this.match(t.ADD_P),this.state=2436,this.match(t.ATTRIBUTE),this.state=2437,this.tableFunctionElement(),this.state=2438,this.optionalDropBehavior();break;case t.DROP:if(this.enterOuterAlt(e,2),1===(this.state=2440,this.match(t.DROP),this.state=2441,this.match(t.ATTRIBUTE),this.state=2444,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,70,this.context)))this.state=2442,this.match(t.IF_P),this.state=2443,this.match(t.EXISTS);this.state=2446,this.columnId(),this.state=2447,this.optionalDropBehavior();break;case t.ALTER:this.enterOuterAlt(e,3),this.state=2449,this.match(t.ALTER),this.state=2450,this.match(t.ATTRIBUTE),this.state=2451,this.columnId(),this.state=2452,this.optionalSetData(),this.state=2453,this.match(t.TYPE_P),this.state=2454,this.typeName(),this.state=2455,this.optionalCollateClause(),this.state=2456,this.optionalDropBehavior();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}closePortalStatement(){let e=new Nh(this.context,this.state);this.enterRule(e,132,t.RULE_closePortalStatement);try{switch(this.enterOuterAlt(e,1),this.state=2460,this.match(t.CLOSE),this.state=2463,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.state=2461,this.cursorName();break;case t.ALL:this.state=2462,this.match(t.ALL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}copyStatement(){let e,s=new Lh(this.context,this.state);this.enterRule(s,134,t.RULE_copyStatement);try{switch(this.state=2493,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,76,this.context)){case 1:this.enterOuterAlt(s,1),this.state=2465,this.match(t.COPY),this.state=2467,this.errorHandler.sync(this),e=this.tokenStream.LA(1),107===e&&(this.state=2466,this.match(t.BINARY)),this.state=2469,this.qualifiedName(),this.state=2470,this.columnListWithParentheses(),this.state=2471,this.fromOrTo(),this.state=2473,this.errorHandler.sync(this),e=this.tokenStream.LA(1),290===e&&(this.state=2472,this.match(t.PROGRAM)),this.state=2475,this.copyFileName(),this.state=2476,this.copyDelimiter(),this.state=2477,this.optionalWith(),this.state=2478,this.copyOptions(),this.state=2479,this.whereClause();break;case 2:this.enterOuterAlt(s,2),this.state=2481,this.match(t.COPY),this.state=2482,this.match(t.OPEN_PAREN),this.state=2483,this.preparableStatement(),this.state=2484,this.match(t.CLOSE_PAREN),this.state=2485,this.match(t.TO),this.state=2487,this.errorHandler.sync(this),e=this.tokenStream.LA(1),290===e&&(this.state=2486,this.match(t.PROGRAM)),this.state=2489,this.copyFileName(),this.state=2490,this.optionalWith(),this.state=2491,this.copyOptions()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}fromOrTo(){let e,s=new Ch(this.context,this.state);this.enterRule(s,136,t.RULE_fromOrTo);try{this.enterOuterAlt(s,1),this.state=2495,e=this.tokenStream.LA(1),64===e||94===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}copyFileName(){let e=new _h(this.context,this.state);this.enterRule(e,138,t.RULE_copyFileName);try{switch(this.state=2500,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=2497,this.sconst();break;case t.STDIN:this.enterOuterAlt(e,2),this.state=2498,this.match(t.STDIN);break;case t.STDOUT:this.enterOuterAlt(e,3),this.state=2499,this.match(t.STDOUT);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}copyOptions(){let e,s=new Ph(this.context,this.state);this.enterRule(s,140,t.RULE_copyOptions);try{switch(this.state=2512,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EOF:case t.SEMI:case t.INTO:case t.NULL_P:case t.WHERE:case t.BINARY:case t.FREEZE:case t.CSV:case t.DELIMITER:case t.ENCODING:case t.ESCAPE:case t.FORCE:case t.HEADER_P:case t.QUOTE:for(this.enterOuterAlt(s,1),this.state=2505,this.errorHandler.sync(this),e=this.tokenStream.LA(1);78===e||107===e||112===e||!(e-171&-32)&&1<<e-171&75501569||209===e||216===e||291===e;)this.state=2502,this.copyOptionsItem(),this.state=2507,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case t.OPEN_PAREN:this.enterOuterAlt(s,2),this.state=2508,this.match(t.OPEN_PAREN),this.state=2509,this.copyGenericOptionList(),this.state=2510,this.match(t.CLOSE_PAREN);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}copyOptionsItem(){let e=new Mh(this.context,this.state);this.enterRule(e,142,t.RULE_copyOptionsItem);try{switch(this.state=2549,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,80,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2514,this.match(t.BINARY);break;case 2:this.enterOuterAlt(e,2),this.state=2515,this.match(t.FREEZE);break;case 3:this.enterOuterAlt(e,3),this.state=2516,this.match(t.DELIMITER),this.state=2517,this.optionalAs(),this.state=2518,this.sconst();break;case 4:this.enterOuterAlt(e,4),this.state=2520,this.match(t.NULL_P),this.state=2521,this.optionalAs(),this.state=2522,this.sconst();break;case 5:this.enterOuterAlt(e,5),this.state=2524,this.match(t.CSV);break;case 6:this.enterOuterAlt(e,6),this.state=2525,this.match(t.HEADER_P);break;case 7:this.enterOuterAlt(e,7),this.state=2526,this.match(t.QUOTE),this.state=2527,this.optionalAs(),this.state=2528,this.sconst();break;case 8:this.enterOuterAlt(e,8),this.state=2530,this.match(t.ESCAPE),this.state=2531,this.optionalAs(),this.state=2532,this.sconst();break;case 9:this.enterOuterAlt(e,9),this.state=2534,this.match(t.FORCE),this.state=2535,this.match(t.QUOTE),this.state=2536,this.columnList();break;case 10:this.enterOuterAlt(e,10),this.state=2537,this.match(t.FORCE),this.state=2538,this.match(t.QUOTE),this.state=2539,this.match(t.STAR);break;case 11:this.enterOuterAlt(e,11),this.state=2540,this.match(t.FORCE),this.state=2541,this.match(t.NOT),this.state=2542,this.match(t.NULL_P),this.state=2543,this.columnList();break;case 12:this.enterOuterAlt(e,12),this.state=2544,this.match(t.FORCE),this.state=2545,this.match(t.NULL_P),this.state=2546,this.columnList();break;case 13:this.enterOuterAlt(e,13),this.state=2547,this.match(t.ENCODING),this.state=2548,this.sconst()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}copyDelimiter(){let e,s=new dh(this.context,this.state);this.enterRule(s,144,t.RULE_copyDelimiter);try{switch(this.state=2557,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.USING:case t.DELIMITERS:this.enterOuterAlt(s,1),this.state=2552,this.errorHandler.sync(this),e=this.tokenStream.LA(1),100===e&&(this.state=2551,this.match(t.USING)),this.state=2554,this.match(t.DELIMITERS),this.state=2555,this.sconst();break;case t.EOF:case t.OPEN_PAREN:case t.SEMI:case t.INTO:case t.NULL_P:case t.WHERE:case t.WITH:case t.BINARY:case t.FREEZE:case t.CSV:case t.DELIMITER:case t.ENCODING:case t.ESCAPE:case t.FORCE:case t.HEADER_P:case t.QUOTE:this.enterOuterAlt(s,2);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}copyGenericOptionList(){let e,s=new Uh(this.context,this.state);this.enterRule(s,146,t.RULE_copyGenericOptionList);try{for(this.enterOuterAlt(s,1),this.state=2559,this.copyGenericOptionElem(),this.state=2564,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=2560,this.match(t.COMMA),this.state=2561,this.copyGenericOptionElem(),this.state=2566,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}copyGenericOptionElem(){let e=new mh(this.context,this.state);this.enterRule(e,148,t.RULE_copyGenericOptionElem);try{this.enterOuterAlt(e,1),this.state=2567,this.columnLabel(),this.state=2568,this.copyGenericOptionArgument()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}copyGenericOptionArgument(){let e,s=new Dh(this.context,this.state);this.enterRule(s,150,t.RULE_copyGenericOptionArgument);try{switch(this.state=2585,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.ON:case t.TABLE:case t.TRUE_P:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(s,1),this.state=2570,this.booleanOrString();break;case t.PLUS:case t.MINUS:case t.Integral:case t.Numeric:this.enterOuterAlt(s,2),this.state=2571,this.numericOnly();break;case t.STAR:this.enterOuterAlt(s,3),this.state=2572,this.match(t.STAR);break;case t.OPEN_PAREN:for(this.enterOuterAlt(s,4),this.state=2573,this.match(t.OPEN_PAREN),this.state=2574,this.booleanOrString(),this.state=2579,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=2575,this.match(t.COMMA),this.state=2576,this.booleanOrString(),this.state=2581,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2582,this.match(t.CLOSE_PAREN);break;case t.CLOSE_PAREN:case t.COMMA:this.enterOuterAlt(s,5);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createStatement(){let e=new ph(this.context,this.state);this.enterRule(e,152,t.RULE_createStatement);try{if(this.enterOuterAlt(e,1),1===(this.state=2587,this.match(t.CREATE),this.state=2588,this.temporaryOption(),this.state=2589,this.match(t.TABLE),this.state=2593,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,86,this.context)))this.state=2590,this.match(t.IF_P),this.state=2591,this.match(t.NOT),this.state=2592,this.match(t.EXISTS);switch(this.state=2595,this.qualifiedName(),this.state=2626,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.state=2596,this.match(t.OPEN_PAREN),this.state=2597,this.optionalTableElementList(),this.state=2598,this.match(t.CLOSE_PAREN),this.state=2599,this.inheritClause(),this.state=2600,this.optionalPartitionSpecification(),this.state=2601,this.optionalTableAccessMethodClause(),this.state=2602,this.with_(),this.state=2603,this.onCommitOption(),this.state=2604,this.optionalTablespace();break;case t.OF:this.state=2606,this.match(t.OF),this.state=2607,this.anyName(),this.state=2608,this.optionalTypedTableElementList(),this.state=2609,this.optionalPartitionSpecification(),this.state=2610,this.optionalTableAccessMethodClause(),this.state=2611,this.with_(),this.state=2612,this.onCommitOption(),this.state=2613,this.optionalTablespace();break;case t.PARTITION:this.state=2615,this.match(t.PARTITION),this.state=2616,this.match(t.OF),this.state=2617,this.qualifiedName(),this.state=2618,this.optionalTypedTableElementList(),this.state=2619,this.partitionBoundSpecification(),this.state=2620,this.optionalPartitionSpecification(),this.state=2621,this.optionalTableAccessMethodClause(),this.state=2622,this.with_(),this.state=2623,this.onCommitOption(),this.state=2624,this.optionalTablespace();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}temporaryOption(){let e,s=new gh(this.context,this.state);this.enterRule(s,154,t.RULE_temporaryOption);try{switch(this.state=2636,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.TEMPORARY:this.enterOuterAlt(s,1),this.state=2628,this.match(t.TEMPORARY);break;case t.TEMP:this.enterOuterAlt(s,2),this.state=2629,this.match(t.TEMP);break;case t.LOCAL:this.enterOuterAlt(s,3),this.state=2630,this.match(t.LOCAL),this.state=2631,e=this.tokenStream.LA(1),345===e||347===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.GLOBAL:this.enterOuterAlt(s,4),this.state=2632,this.match(t.GLOBAL),this.state=2633,e=this.tokenStream.LA(1),345===e||347===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.UNLOGGED:this.enterOuterAlt(s,5),this.state=2634,this.match(t.UNLOGGED);break;case t.TABLE:case t.RECURSIVE:case t.SEQUENCE:case t.VIEW:this.enterOuterAlt(s,6);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalTableElementList(){let e=new xh(this.context,this.state);this.enterRule(e,156,t.RULE_optionalTableElementList);try{switch(this.state=2640,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.FOREIGN:case t.PRIMARY:case t.TABLE:case t.UNIQUE:case t.IS:case t.LEFT:case t.LIKE:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=2638,this.tableElementList();break;case t.CLOSE_PAREN:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalTypedTableElementList(){let e=new kh(this.context,this.state);this.enterRule(e,158,t.RULE_optionalTypedTableElementList);try{switch(this.state=2647,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.enterOuterAlt(e,1),this.state=2642,this.match(t.OPEN_PAREN),this.state=2643,this.typedTableElementList(),this.state=2644,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.SEMI:case t.CREATE:case t.DEFAULT:case t.FOR:case t.GRANT:case t.INTO:case t.ON:case t.USING:case t.WITH:case t.PARTITION:case t.TABLESPACE:case t.WITHOUT:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableElementList(){let e,s=new Hh(this.context,this.state);this.enterRule(s,160,t.RULE_tableElementList);try{for(this.enterOuterAlt(s,1),this.state=2649,this.tableElement(),this.state=2654,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=2650,this.match(t.COMMA),this.state=2651,this.tableElement(),this.state=2656,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}typedTableElementList(){let e,s=new Gh(this.context,this.state);this.enterRule(s,162,t.RULE_typedTableElementList);try{for(this.enterOuterAlt(s,1),this.state=2657,this.typedTableElement(),this.state=2662,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=2658,this.match(t.COMMA),this.state=2659,this.typedTableElement(),this.state=2664,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableElement(){let e=new Fh(this.context,this.state);this.enterRule(e,164,t.RULE_tableElement);try{switch(this.state=2668,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,93,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2665,this.tableConstraint();break;case 2:this.enterOuterAlt(e,2),this.state=2666,this.tableLikeClause();break;case 3:this.enterOuterAlt(e,3),this.state=2667,this.columnDefinition()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}typedTableElement(){let e=new vh(this.context,this.state);this.enterRule(e,166,t.RULE_typedTableElement);try{switch(this.state=2672,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,94,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2670,this.columnOptions();break;case 2:this.enterOuterAlt(e,2),this.state=2671,this.tableConstraint()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}columnDefinition(){let e=new Bh(this.context,this.state);this.enterRule(e,168,t.RULE_columnDefinition);try{this.enterOuterAlt(e,1),this.state=2674,this.columnId(),this.state=2675,this.typeName(),this.state=2676,this.createGenericOptions(),this.state=2677,this.columnQualifierList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}columnOptions(){let e,s=new yh(this.context,this.state);this.enterRule(s,170,t.RULE_columnOptions);try{this.enterOuterAlt(s,1),this.state=2679,this.columnId(),this.state=2682,this.errorHandler.sync(this),e=this.tokenStream.LA(1),105===e&&(this.state=2680,this.match(t.WITH),this.state=2681,this.match(t.OPTIONS)),this.state=2684,this.columnQualifierList()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnQualifierList(){let e,s=new fh(this.context,this.state);this.enterRule(s,172,t.RULE_columnQualifierList);try{for(this.enterOuterAlt(s,1),this.state=2689,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(e-42&-32)&&1<<e-42&134223883||!(e-77&-32)&&1<<e-77&2097923||438===e;)this.state=2686,this.columnConstraint(),this.state=2691,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnConstraint(){let e=new Yh(this.context,this.state);this.enterRule(e,174,t.RULE_columnConstraint);try{switch(this.state=2700,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,97,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2692,this.match(t.CONSTRAINT),this.state=2693,this.name(),this.state=2694,this.columnConstraintElement();break;case 2:this.enterOuterAlt(e,2),this.state=2696,this.columnConstraintElement();break;case 3:this.enterOuterAlt(e,3),this.state=2697,this.constraintAttribute();break;case 4:this.enterOuterAlt(e,4),this.state=2698,this.match(t.COLLATE),this.state=2699,this.anyName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}columnConstraintElement(){let e,s=new wh(this.context,this.state);this.enterRule(s,176,t.RULE_columnConstraintElement);try{switch(this.state=2742,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NOT:this.enterOuterAlt(s,1),this.state=2702,this.match(t.NOT),this.state=2703,this.match(t.NULL_P);break;case t.NULL_P:this.enterOuterAlt(s,2),this.state=2704,this.match(t.NULL_P);break;case t.UNIQUE:this.enterOuterAlt(s,3),this.state=2705,this.match(t.UNIQUE),this.state=2706,this.optionalDefinition(),this.state=2707,this.usingIndexTablespace();break;case t.PRIMARY:this.enterOuterAlt(s,4),this.state=2709,this.match(t.PRIMARY),this.state=2710,this.match(t.KEY),this.state=2711,this.optionalDefinition(),this.state=2712,this.usingIndexTablespace();break;case t.CHECK:this.enterOuterAlt(s,5),this.state=2714,this.match(t.CHECK),this.state=2715,this.match(t.OPEN_PAREN),this.state=2716,this.expression1(),this.state=2717,this.match(t.CLOSE_PAREN),this.state=2720,this.errorHandler.sync(this),e=this.tokenStream.LA(1),262===e&&(this.state=2718,this.match(t.NO),this.state=2719,this.match(t.INHERIT));break;case t.DEFAULT:this.enterOuterAlt(s,6),this.state=2722,this.match(t.DEFAULT),this.state=2723,this.expression2(0);break;case t.GENERATED:switch(this.enterOuterAlt(s,7),this.state=2724,this.match(t.GENERATED),this.state=2725,this.generatedWhen(),this.state=2726,this.match(t.AS),this.state=2734,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.IDENTITY_P:this.state=2727,this.match(t.IDENTITY_P),this.state=2728,this.optionalParenthesizedSeqOptionsList();break;case t.OPEN_PAREN:this.state=2729,this.match(t.OPEN_PAREN),this.state=2730,this.expression1(),this.state=2731,this.match(t.CLOSE_PAREN),this.state=2732,this.match(t.STORED);break;default:throw new Ei(this)}break;case t.REFERENCES:this.enterOuterAlt(s,8),this.state=2736,this.match(t.REFERENCES),this.state=2737,this.qualifiedName(),this.state=2738,this.columnListWithParentheses(),this.state=2739,this.matchClause(),this.state=2740,this.keyActions();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}generatedWhen(){let e=new bh(this.context,this.state);this.enterRule(e,178,t.RULE_generatedWhen);try{switch(this.state=2747,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALWAYS:this.enterOuterAlt(e,1),this.state=2744,this.match(t.ALWAYS);break;case t.BY:this.enterOuterAlt(e,2),this.state=2745,this.match(t.BY),this.state=2746,this.match(t.DEFAULT);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}constraintAttribute(){let e,s=new Wh(this.context,this.state);this.enterRule(s,180,t.RULE_constraintAttribute);try{switch(this.state=2754,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DEFERRABLE:this.enterOuterAlt(s,1),this.state=2749,this.match(t.DEFERRABLE);break;case t.NOT:this.enterOuterAlt(s,2),this.state=2750,this.match(t.NOT),this.state=2751,this.match(t.DEFERRABLE);break;case t.INITIALLY:this.enterOuterAlt(s,3),this.state=2752,this.match(t.INITIALLY),this.state=2753,e=this.tokenStream.LA(1),180===e||221===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableLikeClause(){let e=new Vh(this.context,this.state);this.enterRule(e,182,t.RULE_tableLikeClause);try{this.enterOuterAlt(e,1),this.state=2756,this.match(t.LIKE),this.state=2757,this.qualifiedName(),this.state=2758,this.tableLikeOptionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableLikeOptionList(){let e,s=new Xh(this.context,this.state);this.enterRule(s,184,t.RULE_tableLikeOptionList);try{for(this.enterOuterAlt(s,1),this.state=2764,this.errorHandler.sync(this),e=this.tokenStream.LA(1);200===e||224===e;)this.state=2760,e=this.tokenStream.LA(1),200===e||224===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2761,this.tableLikeOption(),this.state=2766,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableLikeOption(){let e,s=new Kh(this.context,this.state);this.enterRule(s,186,t.RULE_tableLikeOption);try{this.enterOuterAlt(s,1),this.state=2767,e=this.tokenStream.LA(1),30===e||!(e-160&-32)&&1<<e-160&524321||219===e||227===e||335===e||338===e||438===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableConstraint(){let e=new Qh(this.context,this.state);this.enterRule(e,188,t.RULE_tableConstraint);try{switch(this.state=2774,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CONSTRAINT:this.enterOuterAlt(e,1),this.state=2769,this.match(t.CONSTRAINT),this.state=2770,this.name(),this.state=2771,this.constraintElement();break;case t.CHECK:case t.FOREIGN:case t.PRIMARY:case t.UNIQUE:case t.EXCLUDE:this.enterOuterAlt(e,2),this.state=2773,this.constraintElement();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}constraintElement(){let e=new Jh(this.context,this.state);this.enterRule(e,190,t.RULE_constraintElement);try{switch(this.state=2834,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CHECK:this.enterOuterAlt(e,1),this.state=2776,this.match(t.CHECK),this.state=2777,this.match(t.OPEN_PAREN),this.state=2778,this.expression1(),this.state=2779,this.match(t.CLOSE_PAREN),this.state=2780,this.constraintAttributeSpecification();break;case t.UNIQUE:switch(this.enterOuterAlt(e,2),this.state=2782,this.match(t.UNIQUE),this.state=2794,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.state=2783,this.match(t.OPEN_PAREN),this.state=2784,this.columnList(),this.state=2785,this.match(t.CLOSE_PAREN),this.state=2786,this.optionalColumnListInclude(),this.state=2787,this.optionalDefinition(),this.state=2788,this.usingIndexTablespace(),this.state=2789,this.constraintAttributeSpecification();break;case t.USING:this.state=2791,this.existingIndex(),this.state=2792,this.constraintAttributeSpecification();break;default:throw new Ei(this)}break;case t.PRIMARY:switch(this.enterOuterAlt(e,3),this.state=2796,this.match(t.PRIMARY),this.state=2797,this.match(t.KEY),this.state=2809,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.state=2798,this.match(t.OPEN_PAREN),this.state=2799,this.columnList(),this.state=2800,this.match(t.CLOSE_PAREN),this.state=2801,this.optionalColumnListInclude(),this.state=2802,this.optionalDefinition(),this.state=2803,this.usingIndexTablespace(),this.state=2804,this.constraintAttributeSpecification();break;case t.USING:this.state=2806,this.existingIndex(),this.state=2807,this.constraintAttributeSpecification();break;default:throw new Ei(this)}break;case t.EXCLUDE:this.enterOuterAlt(e,4),this.state=2811,this.match(t.EXCLUDE),this.state=2812,this.optionalAccessMethodClause(),this.state=2813,this.match(t.OPEN_PAREN),this.state=2814,this.exclusionConstraintList(),this.state=2815,this.match(t.CLOSE_PAREN),this.state=2816,this.optionalColumnListInclude(),this.state=2817,this.optionalDefinition(),this.state=2818,this.usingIndexTablespace(),this.state=2819,this.exclusionWhereClause(),this.state=2820,this.constraintAttributeSpecification();break;case t.FOREIGN:this.enterOuterAlt(e,5),this.state=2822,this.match(t.FOREIGN),this.state=2823,this.match(t.KEY),this.state=2824,this.match(t.OPEN_PAREN),this.state=2825,this.columnList(),this.state=2826,this.match(t.CLOSE_PAREN),this.state=2827,this.match(t.REFERENCES),this.state=2828,this.qualifiedName(),this.state=2829,this.columnListWithParentheses(),this.state=2830,this.matchClause(),this.state=2831,this.keyActions(),this.state=2832,this.constraintAttributeSpecification();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}columnListWithParentheses(){let e=new Zh(this.context,this.state);this.enterRule(e,192,t.RULE_columnListWithParentheses);try{switch(this.state=2841,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.enterOuterAlt(e,1),this.state=2836,this.match(t.OPEN_PAREN),this.state=2837,this.columnList(),this.state=2838,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.AS:case t.CHECK:case t.COLLATE:case t.CONSTRAINT:case t.DEFAULT:case t.DEFERRABLE:case t.FROM:case t.INITIALLY:case t.INTO:case t.NOT:case t.NULL_P:case t.ON:case t.PRIMARY:case t.REFERENCES:case t.TO:case t.UNIQUE:case t.USING:case t.WITH:case t.MATCH:case t.NO:case t.TABLESPACE:case t.WITHOUT:case t.GENERATED:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}columnList(){let e,s=new qh(this.context,this.state);this.enterRule(s,194,t.RULE_columnList);try{for(this.enterOuterAlt(s,1),this.state=2843,this.columnElement(),this.state=2848,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=2844,this.match(t.COMMA),this.state=2845,this.columnElement(),this.state=2850,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnElement(){let e=new jh(this.context,this.state);this.enterRule(e,196,t.RULE_columnElement);try{this.enterOuterAlt(e,1),this.state=2851,this.columnId()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalColumnListInclude(){let e=new zh(this.context,this.state);this.enterRule(e,198,t.RULE_optionalColumnListInclude);try{switch(this.state=2859,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.INCLUDE:this.enterOuterAlt(e,1),this.state=2853,this.match(t.INCLUDE),this.state=2854,this.match(t.OPEN_PAREN),this.state=2855,this.columnList(),this.state=2856,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.DEFERRABLE:case t.INITIALLY:case t.INTO:case t.NOT:case t.USING:case t.WHERE:case t.WITH:case t.NO:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}matchClause(){let e,s=new $h(this.context,this.state);this.enterRule(s,200,t.RULE_matchClause);try{switch(this.state=2864,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.MATCH:this.enterOuterAlt(s,1),this.state=2861,this.match(t.MATCH),this.state=2862,e=this.tokenStream.LA(1),113===e||277===e||329===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.CHECK:case t.COLLATE:case t.CONSTRAINT:case t.DEFAULT:case t.DEFERRABLE:case t.INITIALLY:case t.INTO:case t.NOT:case t.NULL_P:case t.ON:case t.PRIMARY:case t.REFERENCES:case t.UNIQUE:case t.NO:case t.GENERATED:this.enterOuterAlt(s,2);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}exclusionConstraintList(){let e,s=new tE(this.context,this.state);this.enterRule(s,202,t.RULE_exclusionConstraintList);try{for(this.enterOuterAlt(s,1),this.state=2866,this.exclusionConstraintElement(),this.state=2871,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=2867,this.match(t.COMMA),this.state=2868,this.exclusionConstraintElement(),this.state=2873,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}exclusionConstraintElement(){let e=new eE(this.context,this.state);this.enterRule(e,204,t.RULE_exclusionConstraintElement);try{switch(this.enterOuterAlt(e,1),this.state=2874,this.indexElement(),this.state=2875,this.match(t.WITH),this.state=2882,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,113,this.context)){case 1:this.state=2876,this.anyOperator();break;case 2:this.state=2877,this.match(t.OPERATOR),this.state=2878,this.match(t.OPEN_PAREN),this.state=2879,this.anyOperator(),this.state=2880,this.match(t.CLOSE_PAREN)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}exclusionWhereClause(){let e=new sE(this.context,this.state);this.enterRule(e,206,t.RULE_exclusionWhereClause);try{switch(this.state=2890,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WHERE:this.enterOuterAlt(e,1),this.state=2884,this.match(t.WHERE),this.state=2885,this.match(t.OPEN_PAREN),this.state=2886,this.expression1(),this.state=2887,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.DEFERRABLE:case t.INITIALLY:case t.INTO:case t.NOT:case t.NO:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}keyActions(){let e=new aE(this.context,this.state);this.enterRule(e,208,t.RULE_keyActions);try{switch(this.state=2901,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,115,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2892,this.onKeyUpdateClause();break;case 2:this.enterOuterAlt(e,2),this.state=2893,this.onKeyDeleteClause();break;case 3:this.enterOuterAlt(e,3),this.state=2894,this.onKeyUpdateClause(),this.state=2895,this.onKeyDeleteClause();break;case 4:this.enterOuterAlt(e,4),this.state=2897,this.onKeyDeleteClause(),this.state=2898,this.onKeyUpdateClause();break;case 5:this.enterOuterAlt(e,5)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}onKeyUpdateClause(){let e=new rE(this.context,this.state);this.enterRule(e,210,t.RULE_onKeyUpdateClause);try{this.enterOuterAlt(e,1),this.state=2903,this.match(t.ON),this.state=2904,this.match(t.UPDATE),this.state=2905,this.keyAction()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}onKeyDeleteClause(){let e=new iE(this.context,this.state);this.enterRule(e,212,t.RULE_onKeyDeleteClause);try{this.enterOuterAlt(e,1),this.state=2907,this.match(t.ON),this.state=2908,this.match(t.DELETE_P),this.state=2909,this.keyAction()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}keyAction(){let e,s=new cE(this.context,this.state);this.enterRule(s,214,t.RULE_keyAction);try{switch(this.state=2917,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NO:this.enterOuterAlt(s,1),this.state=2911,this.match(t.NO),this.state=2912,this.match(t.ACTION);break;case t.RESTRICT:this.enterOuterAlt(s,2),this.state=2913,this.match(t.RESTRICT);break;case t.CASCADE:this.enterOuterAlt(s,3),this.state=2914,this.match(t.CASCADE);break;case t.SET:this.enterOuterAlt(s,4),this.state=2915,this.match(t.SET),this.state=2916,e=this.tokenStream.LA(1),53===e||78===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}inheritClause(){let e=new nE(this.context,this.state);this.enterRule(e,216,t.RULE_inheritClause);try{switch(this.state=2925,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.INHERITS:this.enterOuterAlt(e,1),this.state=2919,this.match(t.INHERITS),this.state=2920,this.match(t.OPEN_PAREN),this.state=2921,this.qualifiedNameList(),this.state=2922,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.SEMI:case t.CREATE:case t.GRANT:case t.INTO:case t.ON:case t.USING:case t.WITH:case t.PARTITION:case t.SERVER:case t.TABLESPACE:case t.WITHOUT:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalPartitionSpecification(){let e=new hE(this.context,this.state);this.enterRule(e,218,t.RULE_optionalPartitionSpecification);try{switch(this.state=2929,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PARTITION:this.enterOuterAlt(e,1),this.state=2927,this.partitionSpecification();break;case t.EOF:case t.SEMI:case t.CREATE:case t.GRANT:case t.INTO:case t.ON:case t.USING:case t.WITH:case t.TABLESPACE:case t.WITHOUT:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}partitionSpecification(){let e=new EE(this.context,this.state);this.enterRule(e,220,t.RULE_partitionSpecification);try{this.enterOuterAlt(e,1),this.state=2931,this.match(t.PARTITION),this.state=2932,this.match(t.BY),this.state=2933,this.columnId(),this.state=2934,this.match(t.OPEN_PAREN),this.state=2935,this.partitionElements(),this.state=2936,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}partitionElements(){let e,s=new TE(this.context,this.state);this.enterRule(s,222,t.RULE_partitionElements);try{for(this.enterOuterAlt(s,1),this.state=2938,this.partitionElement(),this.state=2943,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=2939,this.match(t.COMMA),this.state=2940,this.partitionElement(),this.state=2945,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}partitionElement(){let e=new oE(this.context,this.state);this.enterRule(e,224,t.RULE_partitionElement);try{switch(this.state=2960,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,120,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2946,this.columnId(),this.state=2947,this.optionalCollate(),this.state=2948,this.optionalClass();break;case 2:this.enterOuterAlt(e,2),this.state=2950,this.functionExpressionWindowless(),this.state=2951,this.optionalCollate(),this.state=2952,this.optionalClass();break;case 3:this.enterOuterAlt(e,3),this.state=2954,this.match(t.OPEN_PAREN),this.state=2955,this.expression1(),this.state=2956,this.match(t.CLOSE_PAREN),this.state=2957,this.optionalCollate(),this.state=2958,this.optionalClass()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalTableAccessMethodClause(){let e=new RE(this.context,this.state);this.enterRule(e,226,t.RULE_optionalTableAccessMethodClause);try{switch(this.state=2965,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.USING:this.enterOuterAlt(e,1),this.state=2962,this.match(t.USING),this.state=2963,this.name();break;case t.EOF:case t.SEMI:case t.AS:case t.CREATE:case t.GRANT:case t.INTO:case t.ON:case t.WITH:case t.TABLESPACE:case t.WITHOUT:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}with_(){let e=new AE(this.context,this.state);this.enterRule(e,228,t.RULE_with);try{switch(this.state=2972,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WITH:this.enterOuterAlt(e,1),this.state=2967,this.match(t.WITH),this.state=2968,this.relOptions();break;case t.WITHOUT:this.enterOuterAlt(e,2),this.state=2969,this.match(t.WITHOUT),this.state=2970,this.match(t.OIDS);break;case t.EOF:case t.SEMI:case t.AS:case t.CREATE:case t.GRANT:case t.INTO:case t.ON:case t.TABLESPACE:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}onCommitOption(){let e=new SE(this.context,this.state);this.enterRule(e,230,t.RULE_onCommitOption);try{switch(this.state=2984,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ON:switch(this.enterOuterAlt(e,1),this.state=2974,this.match(t.ON),this.state=2975,this.match(t.COMMIT),this.state=2981,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DROP:this.state=2976,this.match(t.DROP);break;case t.DELETE_P:this.state=2977,this.match(t.DELETE_P),this.state=2978,this.match(t.ROWS);break;case t.PRESERVE:this.state=2979,this.match(t.PRESERVE),this.state=2980,this.match(t.ROWS);break;default:throw new Ei(this)}break;case t.EOF:case t.SEMI:case t.AS:case t.CREATE:case t.GRANT:case t.INTO:case t.TABLESPACE:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalTablespace(){let e=new lE(this.context,this.state);this.enterRule(e,232,t.RULE_optionalTablespace);try{switch(this.state=2989,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.TABLESPACE:this.enterOuterAlt(e,1),this.state=2986,this.match(t.TABLESPACE),this.state=2987,this.name();break;case t.EOF:case t.SEMI:case t.AS:case t.CREATE:case t.GRANT:case t.INTO:case t.WHERE:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}usingIndexTablespace(){let e=new OE(this.context,this.state);this.enterRule(e,234,t.RULE_usingIndexTablespace);try{switch(this.state=2996,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.USING:this.enterOuterAlt(e,1),this.state=2991,this.match(t.USING),this.state=2992,this.match(t.INDEX),this.state=2993,this.match(t.TABLESPACE),this.state=2994,this.name();break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.CHECK:case t.COLLATE:case t.CONSTRAINT:case t.DEFAULT:case t.DEFERRABLE:case t.INITIALLY:case t.INTO:case t.NOT:case t.NULL_P:case t.PRIMARY:case t.REFERENCES:case t.UNIQUE:case t.WHERE:case t.NO:case t.GENERATED:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}existingIndex(){let e=new IE(this.context,this.state);this.enterRule(e,236,t.RULE_existingIndex);try{this.enterOuterAlt(e,1),this.state=2998,this.match(t.USING),this.state=2999,this.match(t.INDEX),this.state=3e3,this.indexName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createStatsStatement(){let e=new uE(this.context,this.state);this.enterRule(e,238,t.RULE_createStatsStatement);try{if(this.enterOuterAlt(e,1),1===(this.state=3002,this.match(t.CREATE),this.state=3003,this.match(t.STATISTICS),this.state=3007,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,127,this.context)))this.state=3004,this.match(t.IF_P),this.state=3005,this.match(t.NOT),this.state=3006,this.match(t.EXISTS);this.state=3009,this.anyName(),this.state=3010,this.optionalNameList(),this.state=3011,this.match(t.ON),this.state=3012,this.expressionList(),this.state=3013,this.match(t.FROM),this.state=3014,this.fromList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterStatsStatement(){let e=new NE(this.context,this.state);this.enterRule(e,240,t.RULE_alterStatsStatement);try{if(this.enterOuterAlt(e,1),1===(this.state=3016,this.match(t.ALTER),this.state=3017,this.match(t.STATISTICS),this.state=3020,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,128,this.context)))this.state=3018,this.match(t.IF_P),this.state=3019,this.match(t.EXISTS);this.state=3022,this.anyName(),this.state=3023,this.match(t.SET),this.state=3024,this.match(t.STATISTICS),this.state=3025,this.signedIconst()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createAsStatement(){let e=new LE(this.context,this.state);this.enterRule(e,242,t.RULE_createAsStatement);try{if(this.enterOuterAlt(e,1),1===(this.state=3027,this.match(t.CREATE),this.state=3028,this.temporaryOption(),this.state=3029,this.match(t.TABLE),this.state=3033,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,129,this.context)))this.state=3030,this.match(t.IF_P),this.state=3031,this.match(t.NOT),this.state=3032,this.match(t.EXISTS);this.state=3035,this.createAsTarget(),this.state=3036,this.match(t.AS),this.state=3037,this.selectStatement(),this.state=3038,this.withData()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createAsTarget(){let e=new CE(this.context,this.state);this.enterRule(e,244,t.RULE_createAsTarget);try{this.enterOuterAlt(e,1),this.state=3040,this.qualifiedName(),this.state=3041,this.columnListWithParentheses(),this.state=3042,this.optionalTableAccessMethodClause(),this.state=3043,this.with_(),this.state=3044,this.onCommitOption(),this.state=3045,this.optionalTablespace()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}withData(){let e=new _E(this.context,this.state);this.enterRule(e,246,t.RULE_withData);try{switch(this.state=3054,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WITH:switch(this.enterOuterAlt(e,1),this.state=3047,this.match(t.WITH),this.state=3051,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DATA_P:this.state=3048,this.match(t.DATA_P);break;case t.NO:this.state=3049,this.match(t.NO),this.state=3050,this.match(t.DATA_P);break;default:throw new Ei(this)}break;case t.EOF:case t.SEMI:case t.INTO:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createMaterializedViewStatement(){let e,s=new PE(this.context,this.state);this.enterRule(s,248,t.RULE_createMaterializedViewStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=3056,this.match(t.CREATE),this.state=3058,this.errorHandler.sync(this),e=this.tokenStream.LA(1),360===e&&(this.state=3057,this.match(t.UNLOGGED)),this.state=3060,this.match(t.MATERIALIZED),this.state=3061,this.match(t.VIEW),this.state=3065,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,133,this.context)))this.state=3062,this.match(t.IF_P),this.state=3063,this.match(t.NOT),this.state=3064,this.match(t.EXISTS);this.state=3067,this.createMaterializedViewTarget(),this.state=3068,this.match(t.AS),this.state=3069,this.selectStatement(),this.state=3070,this.withData()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createMaterializedViewTarget(){let e=new ME(this.context,this.state);this.enterRule(e,250,t.RULE_createMaterializedViewTarget);try{this.enterOuterAlt(e,1),this.state=3072,this.qualifiedName(),this.state=3073,this.columnListWithParentheses(),this.state=3074,this.optionalTableAccessMethodClause(),this.state=3075,this.optionalRelOptions(),this.state=3076,this.optionalTablespace()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}refreshMaterializedViewStatement(){let e,s=new dE(this.context,this.state);this.enterRule(s,252,t.RULE_refreshMaterializedViewStatement);try{this.enterOuterAlt(s,1),this.state=3078,this.match(t.REFRESH),this.state=3079,this.match(t.MATERIALIZED),this.state=3080,this.match(t.VIEW),this.state=3082,this.errorHandler.sync(this),e=this.tokenStream.LA(1),109===e&&(this.state=3081,this.match(t.CONCURRENTLY)),this.state=3084,this.qualifiedName(),this.state=3085,this.withData()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createSequenceStatement(){let e,s=new UE(this.context,this.state);this.enterRule(s,254,t.RULE_createSequenceStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=3087,this.match(t.CREATE),this.state=3088,this.temporaryOption(),this.state=3089,this.match(t.SEQUENCE),this.state=3093,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,135,this.context)))this.state=3090,this.match(t.IF_P),this.state=3091,this.match(t.NOT),this.state=3092,this.match(t.EXISTS);this.state=3095,this.qualifiedName(),this.state=3097,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(36===e||148===e||173===e||!(e-225&-32)&&1<<e-225&1207959553||262===e||274===e||!(e-307&-32)&&1<<e-307&67125249)&&(this.state=3096,this.sequenceOptionList())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterSequenceStatement(){let e=new mE(this.context,this.state);this.enterRule(e,256,t.RULE_alterSequenceStatement);try{if(this.enterOuterAlt(e,1),1===(this.state=3099,this.match(t.ALTER),this.state=3100,this.match(t.SEQUENCE),this.state=3103,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,137,this.context)))this.state=3101,this.match(t.IF_P),this.state=3102,this.match(t.EXISTS);this.state=3105,this.sequenceName(),this.state=3106,this.sequenceOptionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalParenthesizedSeqOptionsList(){let e=new DE(this.context,this.state);this.enterRule(e,258,t.RULE_optionalParenthesizedSeqOptionsList);try{switch(this.state=3113,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.enterOuterAlt(e,1),this.state=3108,this.match(t.OPEN_PAREN),this.state=3109,this.sequenceOptionList(),this.state=3110,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.CHECK:case t.COLLATE:case t.CONSTRAINT:case t.DEFAULT:case t.DEFERRABLE:case t.INITIALLY:case t.INTO:case t.NOT:case t.NULL_P:case t.PRIMARY:case t.REFERENCES:case t.UNIQUE:case t.GENERATED:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sequenceOptionList(){let e,s=new pE(this.context,this.state);this.enterRule(s,260,t.RULE_sequenceOptionList);try{this.enterOuterAlt(s,1),this.state=3116,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=3115,this.sequenceOptionItem(),this.state=3118,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(36===e||148===e||173===e||!(e-225&-32)&&1<<e-225&1207959553||262===e||274===e||!(e-307&-32)&&1<<e-307&67125249)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sequenceOptionItem(){let e,s=new gE(this.context,this.state);this.enterRule(s,262,t.RULE_sequenceOptionItem);try{switch(this.state=3151,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AS:this.enterOuterAlt(s,1),this.state=3120,this.match(t.AS),this.state=3121,this.simpleTypeName();break;case t.CACHE:this.enterOuterAlt(s,2),this.state=3122,this.match(t.CACHE),this.state=3123,this.numericOnly();break;case t.CYCLE:this.enterOuterAlt(s,3),this.state=3124,this.match(t.CYCLE);break;case t.INCREMENT:this.enterOuterAlt(s,4),this.state=3125,this.match(t.INCREMENT),this.state=3127,this.errorHandler.sync(this),e=this.tokenStream.LA(1),147===e&&(this.state=3126,this.match(t.BY)),this.state=3129,this.numericOnly();break;case t.MAXVALUE:this.enterOuterAlt(s,5),this.state=3130,this.match(t.MAXVALUE),this.state=3131,this.numericOnly();break;case t.MINVALUE:this.enterOuterAlt(s,6),this.state=3132,this.match(t.MINVALUE),this.state=3133,this.numericOnly();break;case t.NO:this.enterOuterAlt(s,7),this.state=3134,this.match(t.NO),this.state=3135,e=this.tokenStream.LA(1),173===e||252===e||255===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.OWNED:this.enterOuterAlt(s,8),this.state=3136,this.match(t.OWNED),this.state=3137,this.match(t.BY),this.state=3138,this.anyName();break;case t.SEQUENCE:this.enterOuterAlt(s,9),this.state=3139,this.match(t.SEQUENCE),this.state=3140,this.match(t.NAME_P),this.state=3141,this.anyName();break;case t.START:this.enterOuterAlt(s,10),this.state=3142,this.match(t.START),this.state=3143,this.optionalWith(),this.state=3144,this.numericOnly();break;case t.RESTART:this.enterOuterAlt(s,11),this.state=3146,this.match(t.RESTART),this.state=3147,this.optionalWith(),this.state=3149,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(12===e||13===e||658===e||660===e)&&(this.state=3148,this.numericOnly());break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}numericOnly(){let e=new xE(this.context,this.state);this.enterRule(e,264,t.RULE_numericOnly);try{switch(this.state=3159,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,143,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3153,this.fconst();break;case 2:this.enterOuterAlt(e,2),this.state=3154,this.match(t.PLUS),this.state=3155,this.fconst();break;case 3:this.enterOuterAlt(e,3),this.state=3156,this.match(t.MINUS),this.state=3157,this.fconst();break;case 4:this.enterOuterAlt(e,4),this.state=3158,this.signedIconst()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}numericOnlyList(){let e,s=new kE(this.context,this.state);this.enterRule(s,266,t.RULE_numericOnlyList);try{for(this.enterOuterAlt(s,1),this.state=3161,this.numericOnly(),this.state=3166,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=3162,this.match(t.COMMA),this.state=3163,this.numericOnly(),this.state=3168,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createProcedureLangStatement(){let e,s=new HE(this.context,this.state);this.enterRule(s,268,t.RULE_createProcedureLangStatement);try{this.enterOuterAlt(s,1),this.state=3169,this.match(t.CREATE),this.state=3170,this.optionalOrReplace(),this.state=3172,this.errorHandler.sync(this),e=this.tokenStream.LA(1),352===e&&(this.state=3171,this.match(t.TRUSTED)),this.state=3174,this.optionalProcedural(),this.state=3175,this.match(t.LANGUAGE),this.state=3176,this.name(),this.state=3183,this.errorHandler.sync(this),e=this.tokenStream.LA(1),215===e&&(this.state=3177,this.match(t.HANDLER),this.state=3178,this.handlerName(),this.state=3179,this.optionalInlineHandler(),this.state=3181,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(262===e||366===e)&&(this.state=3180,this.validatorClause()))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}handlerName(){let e,s=new GE(this.context,this.state);this.enterRule(s,270,t.RULE_handlerName);try{this.enterOuterAlt(s,1),this.state=3185,this.name(),this.state=3187,this.errorHandler.sync(this),e=this.tokenStream.LA(1),11===e&&(this.state=3186,this.attributes())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalInlineHandler(){let e=new FE(this.context,this.state);this.enterRule(e,272,t.RULE_optionalInlineHandler);try{switch(this.state=3192,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.INLINE_P:this.enterOuterAlt(e,1),this.state=3189,this.match(t.INLINE_P),this.state=3190,this.handlerName();break;case t.EOF:case t.SEMI:case t.INTO:case t.NO:case t.VALIDATOR:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}validatorClause(){let e=new vE(this.context,this.state);this.enterRule(e,274,t.RULE_validatorClause);try{switch(this.state=3198,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.VALIDATOR:this.enterOuterAlt(e,1),this.state=3194,this.match(t.VALIDATOR),this.state=3195,this.handlerName();break;case t.NO:this.enterOuterAlt(e,2),this.state=3196,this.match(t.NO),this.state=3197,this.match(t.VALIDATOR);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalProcedural(){let e=new BE(this.context,this.state);this.enterRule(e,276,t.RULE_optionalProcedural);try{switch(this.state=3202,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PROCEDURAL:this.enterOuterAlt(e,1),this.state=3200,this.match(t.PROCEDURAL);break;case t.LANGUAGE:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createTablespaceStatement(){let e=new yE(this.context,this.state);this.enterRule(e,278,t.RULE_createTablespaceStatement);try{this.enterOuterAlt(e,1),this.state=3204,this.match(t.CREATE),this.state=3205,this.match(t.TABLESPACE),this.state=3206,this.name(),this.state=3207,this.optionalTablespaceOwner(),this.state=3208,this.match(t.LOCATION),this.state=3209,this.sconst(),this.state=3210,this.optionalRelOptions()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalTablespaceOwner(){let e=new fE(this.context,this.state);this.enterRule(e,280,t.RULE_optionalTablespaceOwner);try{switch(this.state=3215,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OWNER:this.enterOuterAlt(e,1),this.state=3212,this.match(t.OWNER),this.state=3213,this.roleName();break;case t.LOCATION:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropTablespaceStatement(){let e=new YE(this.context,this.state);this.enterRule(e,282,t.RULE_dropTablespaceStatement);try{if(this.enterOuterAlt(e,1),1===(this.state=3217,this.match(t.DROP),this.state=3218,this.match(t.TABLESPACE),this.state=3221,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,153,this.context)))this.state=3219,this.match(t.IF_P),this.state=3220,this.match(t.EXISTS);this.state=3223,this.name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createExtensionStatement(){let e,s=new wE(this.context,this.state);this.enterRule(s,284,t.RULE_createExtensionStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=3225,this.match(t.CREATE),this.state=3226,this.match(t.EXTENSION),this.state=3230,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,154,this.context)))this.state=3227,this.match(t.IF_P),this.state=3228,this.match(t.NOT),this.state=3229,this.match(t.EXISTS);for(this.state=3232,this.name(),this.state=3233,this.optionalWith(),this.state=3237,this.errorHandler.sync(this),e=this.tokenStream.LA(1);64===e||150===e||316===e||368===e;)this.state=3234,this.createExtensionOptionItem(),this.state=3239,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createExtensionOptionItem(){let e=new bE(this.context,this.state);this.enterRule(e,286,t.RULE_createExtensionOptionItem);try{switch(this.state=3247,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SCHEMA:this.enterOuterAlt(e,1),this.state=3240,this.match(t.SCHEMA),this.state=3241,this.schemaName();break;case t.VERSION_P:this.enterOuterAlt(e,2),this.state=3242,this.match(t.VERSION_P),this.state=3243,this.nonReservedWordOrSconst();break;case t.FROM:this.enterOuterAlt(e,3),this.state=3244,this.match(t.FROM),this.state=3245,this.nonReservedWordOrSconst();break;case t.CASCADE:this.enterOuterAlt(e,4),this.state=3246,this.match(t.CASCADE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterExtensionStatement(){let e,s=new WE(this.context,this.state);this.enterRule(s,288,t.RULE_alterExtensionStatement);try{for(this.enterOuterAlt(s,1),this.state=3249,this.match(t.ALTER),this.state=3250,this.match(t.EXTENSION),this.state=3251,this.name(),this.state=3252,this.match(t.UPDATE),this.state=3256,this.errorHandler.sync(this),e=this.tokenStream.LA(1);94===e;)this.state=3253,this.alterExtensionOptionItem(),this.state=3258,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterExtensionOptionItem(){let e=new VE(this.context,this.state);this.enterRule(e,290,t.RULE_alterExtensionOptionItem);try{this.enterOuterAlt(e,1),this.state=3259,this.match(t.TO),this.state=3260,this.nonReservedWordOrSconst()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterExtensionContentsStatement(){let e=new XE(this.context,this.state);this.enterRule(e,292,t.RULE_alterExtensionContentsStatement);try{switch(this.state=3401,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,158,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3262,this.match(t.ALTER),this.state=3263,this.match(t.EXTENSION),this.state=3264,this.name(),this.state=3265,this.addOrDrop(),this.state=3266,this.objectTypeName(),this.state=3267,this.name();break;case 2:this.enterOuterAlt(e,2),this.state=3269,this.match(t.ALTER),this.state=3270,this.match(t.EXTENSION),this.state=3271,this.name(),this.state=3272,this.addOrDrop(),this.state=3273,this.match(t.ROLE),this.state=3274,this.roleName();break;case 3:this.enterOuterAlt(e,3),this.state=3276,this.match(t.ALTER),this.state=3277,this.match(t.EXTENSION),this.state=3278,this.name(),this.state=3279,this.addOrDrop(),this.state=3280,this.match(t.DATABASE),this.state=3281,this.databaseName();break;case 4:this.enterOuterAlt(e,4),this.state=3283,this.match(t.ALTER),this.state=3284,this.match(t.EXTENSION),this.state=3285,this.name(),this.state=3286,this.addOrDrop(),this.state=3287,this.match(t.SCHEMA),this.state=3288,this.schemaName();break;case 5:this.enterOuterAlt(e,5),this.state=3290,this.match(t.ALTER),this.state=3291,this.match(t.EXTENSION),this.state=3292,this.name(),this.state=3293,this.addOrDrop(),this.state=3294,this.match(t.INDEX),this.state=3295,this.indexName();break;case 6:this.enterOuterAlt(e,6),this.state=3297,this.match(t.ALTER),this.state=3298,this.match(t.EXTENSION),this.state=3299,this.name(),this.state=3300,this.addOrDrop(),this.state=3301,this.objectTypeAnyName(),this.state=3302,this.anyName();break;case 7:this.enterOuterAlt(e,7),this.state=3304,this.match(t.ALTER),this.state=3305,this.match(t.EXTENSION),this.state=3306,this.name(),this.state=3307,this.addOrDrop(),this.state=3308,this.match(t.SEQUENCE),this.state=3309,this.sequenceName();break;case 8:this.enterOuterAlt(e,8),this.state=3311,this.match(t.ALTER),this.state=3312,this.match(t.EXTENSION),this.state=3313,this.name(),this.state=3314,this.addOrDrop(),this.state=3315,this.match(t.AGGREGATE),this.state=3316,this.aggregateWithArgumentTypes();break;case 9:this.enterOuterAlt(e,9),this.state=3318,this.match(t.ALTER),this.state=3319,this.match(t.EXTENSION),this.state=3320,this.name(),this.state=3321,this.addOrDrop(),this.state=3322,this.match(t.CAST),this.state=3323,this.match(t.OPEN_PAREN),this.state=3324,this.typeName(),this.state=3325,this.match(t.AS),this.state=3326,this.typeName(),this.state=3327,this.match(t.CLOSE_PAREN);break;case 10:this.enterOuterAlt(e,10),this.state=3329,this.match(t.ALTER),this.state=3330,this.match(t.EXTENSION),this.state=3331,this.name(),this.state=3332,this.addOrDrop(),this.state=3333,this.match(t.DOMAIN_P),this.state=3334,this.typeName();break;case 11:this.enterOuterAlt(e,11),this.state=3336,this.match(t.ALTER),this.state=3337,this.match(t.EXTENSION),this.state=3338,this.name(),this.state=3339,this.addOrDrop(),this.state=3340,this.match(t.FUNCTION),this.state=3341,this.functionWithArgumentTypes();break;case 12:this.enterOuterAlt(e,12),this.state=3343,this.match(t.ALTER),this.state=3344,this.match(t.EXTENSION),this.state=3345,this.name(),this.state=3346,this.addOrDrop(),this.state=3347,this.match(t.OPERATOR),this.state=3348,this.operatorWithArgumentTypes();break;case 13:this.enterOuterAlt(e,13),this.state=3350,this.match(t.ALTER),this.state=3351,this.match(t.EXTENSION),this.state=3352,this.name(),this.state=3353,this.addOrDrop(),this.state=3354,this.match(t.OPERATOR),this.state=3355,this.match(t.CLASS),this.state=3356,this.anyName(),this.state=3357,this.match(t.USING),this.state=3358,this.name();break;case 14:this.enterOuterAlt(e,14),this.state=3360,this.match(t.ALTER),this.state=3361,this.match(t.EXTENSION),this.state=3362,this.name(),this.state=3363,this.addOrDrop(),this.state=3364,this.match(t.OPERATOR),this.state=3365,this.match(t.FAMILY),this.state=3366,this.anyName(),this.state=3367,this.match(t.USING),this.state=3368,this.name();break;case 15:this.enterOuterAlt(e,15),this.state=3370,this.match(t.ALTER),this.state=3371,this.match(t.EXTENSION),this.state=3372,this.name(),this.state=3373,this.addOrDrop(),this.state=3374,this.match(t.PROCEDURE),this.state=3375,this.functionWithArgumentTypes();break;case 16:this.enterOuterAlt(e,16),this.state=3377,this.match(t.ALTER),this.state=3378,this.match(t.EXTENSION),this.state=3379,this.name(),this.state=3380,this.addOrDrop(),this.state=3381,this.match(t.ROUTINE),this.state=3382,this.functionWithArgumentTypes();break;case 17:this.enterOuterAlt(e,17),this.state=3384,this.match(t.ALTER),this.state=3385,this.match(t.EXTENSION),this.state=3386,this.name(),this.state=3387,this.addOrDrop(),this.state=3388,this.match(t.TRANSFORM),this.state=3389,this.match(t.FOR),this.state=3390,this.typeName(),this.state=3391,this.match(t.LANGUAGE),this.state=3392,this.name();break;case 18:this.enterOuterAlt(e,18),this.state=3394,this.match(t.ALTER),this.state=3395,this.match(t.EXTENSION),this.state=3396,this.name(),this.state=3397,this.addOrDrop(),this.state=3398,this.match(t.TYPE_P),this.state=3399,this.typeName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createForeignDataWrapperStatement(){let e,s=new KE(this.context,this.state);this.enterRule(s,294,t.RULE_createForeignDataWrapperStatement);try{this.enterOuterAlt(s,1),this.state=3403,this.match(t.CREATE),this.state=3404,this.match(t.FOREIGN),this.state=3405,this.match(t.DATA_P),this.state=3406,this.match(t.WRAPPER),this.state=3407,this.name(),this.state=3409,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(215===e||262===e||366===e)&&(this.state=3408,this.forwardOptions()),this.state=3411,this.createGenericOptions()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}forwardOption(){let e=new QE(this.context,this.state);this.enterRule(e,296,t.RULE_forwardOption);try{switch(this.state=3421,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,160,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3413,this.match(t.HANDLER),this.state=3414,this.handlerName();break;case 2:this.enterOuterAlt(e,2),this.state=3415,this.match(t.NO),this.state=3416,this.match(t.HANDLER);break;case 3:this.enterOuterAlt(e,3),this.state=3417,this.match(t.VALIDATOR),this.state=3418,this.handlerName();break;case 4:this.enterOuterAlt(e,4),this.state=3419,this.match(t.NO),this.state=3420,this.match(t.VALIDATOR)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}forwardOptions(){let e,s=new JE(this.context,this.state);this.enterRule(s,298,t.RULE_forwardOptions);try{this.enterOuterAlt(s,1),this.state=3424,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=3423,this.forwardOption(),this.state=3426,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(215===e||262===e||366===e)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterForeignDataWrapperStatement(){let e,s=new ZE(this.context,this.state);this.enterRule(s,300,t.RULE_alterForeignDataWrapperStatement);try{switch(this.state=3445,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,163,this.context)){case 1:this.enterOuterAlt(s,1),this.state=3428,this.match(t.ALTER),this.state=3429,this.match(t.FOREIGN),this.state=3430,this.match(t.DATA_P),this.state=3431,this.match(t.WRAPPER),this.state=3432,this.name(),this.state=3434,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(215===e||262===e||366===e)&&(this.state=3433,this.forwardOptions()),this.state=3436,this.alterGenericOptions();break;case 2:this.enterOuterAlt(s,2),this.state=3438,this.match(t.ALTER),this.state=3439,this.match(t.FOREIGN),this.state=3440,this.match(t.DATA_P),this.state=3441,this.match(t.WRAPPER),this.state=3442,this.name(),this.state=3443,this.forwardOptions()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createGenericOptions(){let e=new qE(this.context,this.state);this.enterRule(e,302,t.RULE_createGenericOptions);try{switch(this.state=3453,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPTIONS:this.enterOuterAlt(e,1),this.state=3447,this.match(t.OPTIONS),this.state=3448,this.match(t.OPEN_PAREN),this.state=3449,this.genericOptionList(),this.state=3450,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.CHECK:case t.COLLATE:case t.CONSTRAINT:case t.DEFAULT:case t.DEFERRABLE:case t.INITIALLY:case t.INTO:case t.NOT:case t.NULL_P:case t.PRIMARY:case t.REFERENCES:case t.UNIQUE:case t.GENERATED:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}genericOptionList(){let e,s=new jE(this.context,this.state);this.enterRule(s,304,t.RULE_genericOptionList);try{for(this.enterOuterAlt(s,1),this.state=3455,this.genericOptionElement(),this.state=3460,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=3456,this.match(t.COMMA),this.state=3457,this.genericOptionElement(),this.state=3462,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterGenericOptions(){let e=new zE(this.context,this.state);this.enterRule(e,306,t.RULE_alterGenericOptions);try{this.enterOuterAlt(e,1),this.state=3463,this.match(t.OPTIONS),this.state=3464,this.match(t.OPEN_PAREN),this.state=3465,this.alterGenericOptionList(),this.state=3466,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterGenericOptionList(){let e,s=new $E(this.context,this.state);this.enterRule(s,308,t.RULE_alterGenericOptionList);try{for(this.enterOuterAlt(s,1),this.state=3468,this.alterGenericOptionElem(),this.state=3473,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=3469,this.match(t.COMMA),this.state=3470,this.alterGenericOptionElem(),this.state=3475,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterGenericOptionElem(){let e=new tT(this.context,this.state);this.enterRule(e,310,t.RULE_alterGenericOptionElem);try{switch(this.state=3483,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,167,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3476,this.genericOptionElement();break;case 2:this.enterOuterAlt(e,2),this.state=3477,this.match(t.SET),this.state=3478,this.genericOptionElement();break;case 3:this.enterOuterAlt(e,3),this.state=3479,this.match(t.ADD_P),this.state=3480,this.genericOptionElement();break;case 4:this.enterOuterAlt(e,4),this.state=3481,this.match(t.DROP),this.state=3482,this.genericOptionName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}genericOptionElement(){let e=new eT(this.context,this.state);this.enterRule(e,312,t.RULE_genericOptionElement);try{this.enterOuterAlt(e,1),this.state=3485,this.genericOptionName(),this.state=3486,this.genericOptionArgument()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}genericOptionName(){let e=new sT(this.context,this.state);this.enterRule(e,314,t.RULE_genericOptionName);try{this.enterOuterAlt(e,1),this.state=3488,this.columnLabel()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}genericOptionArgument(){let e=new aT(this.context,this.state);this.enterRule(e,316,t.RULE_genericOptionArgument);try{this.enterOuterAlt(e,1),this.state=3490,this.sconst()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createForeignServerStatement(){let e,s=new rT(this.context,this.state);this.enterRule(s,318,t.RULE_createForeignServerStatement);try{switch(this.state=3521,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,170,this.context)){case 1:this.enterOuterAlt(s,1),this.state=3492,this.match(t.CREATE),this.state=3493,this.match(t.SERVER),this.state=3494,this.name(),this.state=3495,this.optionalType(),this.state=3497,this.errorHandler.sync(this),e=this.tokenStream.LA(1),368===e&&(this.state=3496,this.foreignServerVersion()),this.state=3499,this.match(t.FOREIGN),this.state=3500,this.match(t.DATA_P),this.state=3501,this.match(t.WRAPPER),this.state=3502,this.name(),this.state=3503,this.createGenericOptions();break;case 2:this.enterOuterAlt(s,2),this.state=3505,this.match(t.CREATE),this.state=3506,this.match(t.SERVER),this.state=3507,this.match(t.IF_P),this.state=3508,this.match(t.NOT),this.state=3509,this.match(t.EXISTS),this.state=3510,this.name(),this.state=3511,this.optionalType(),this.state=3513,this.errorHandler.sync(this),e=this.tokenStream.LA(1),368===e&&(this.state=3512,this.foreignServerVersion()),this.state=3515,this.match(t.FOREIGN),this.state=3516,this.match(t.DATA_P),this.state=3517,this.match(t.WRAPPER),this.state=3518,this.name(),this.state=3519,this.createGenericOptions()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalType(){let e=new iT(this.context,this.state);this.enterRule(e,320,t.RULE_optionalType);try{switch(this.state=3526,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.TYPE_P:this.enterOuterAlt(e,1),this.state=3523,this.match(t.TYPE_P),this.state=3524,this.sconst();break;case t.FOREIGN:case t.VERSION_P:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}foreignServerVersion(){let e=new cT(this.context,this.state);this.enterRule(e,322,t.RULE_foreignServerVersion);try{switch(this.enterOuterAlt(e,1),this.state=3528,this.match(t.VERSION_P),this.state=3531,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.state=3529,this.sconst();break;case t.NULL_P:this.state=3530,this.match(t.NULL_P);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterForeignServerStatement(){let e,s=new nT(this.context,this.state);this.enterRule(s,324,t.RULE_alterForeignServerStatement);try{switch(this.enterOuterAlt(s,1),this.state=3533,this.match(t.ALTER),this.state=3534,this.match(t.SERVER),this.state=3535,this.name(),this.state=3541,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPTIONS:this.state=3536,this.alterGenericOptions();break;case t.VERSION_P:this.state=3537,this.foreignServerVersion(),this.state=3539,this.errorHandler.sync(this),e=this.tokenStream.LA(1),273===e&&(this.state=3538,this.alterGenericOptions());break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createForeignTableStatement(){let e=new hT(this.context,this.state);this.enterRule(e,326,t.RULE_createForeignTableStatement);try{switch(this.state=3599,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,175,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3543,this.match(t.CREATE),this.state=3544,this.match(t.FOREIGN),this.state=3545,this.match(t.TABLE),this.state=3546,this.qualifiedName(),this.state=3547,this.match(t.OPEN_PAREN),this.state=3548,this.optionalTableElementList(),this.state=3549,this.match(t.CLOSE_PAREN),this.state=3550,this.inheritClause(),this.state=3551,this.match(t.SERVER),this.state=3552,this.name(),this.state=3553,this.createGenericOptions();break;case 2:this.enterOuterAlt(e,2),this.state=3555,this.match(t.CREATE),this.state=3556,this.match(t.FOREIGN),this.state=3557,this.match(t.TABLE),this.state=3558,this.match(t.IF_P),this.state=3559,this.match(t.NOT),this.state=3560,this.match(t.EXISTS),this.state=3561,this.qualifiedName(),this.state=3562,this.match(t.OPEN_PAREN),this.state=3563,this.optionalTableElementList(),this.state=3564,this.match(t.CLOSE_PAREN),this.state=3565,this.inheritClause(),this.state=3566,this.match(t.SERVER),this.state=3567,this.name(),this.state=3568,this.createGenericOptions();break;case 3:this.enterOuterAlt(e,3),this.state=3570,this.match(t.CREATE),this.state=3571,this.match(t.FOREIGN),this.state=3572,this.match(t.TABLE),this.state=3573,this.qualifiedName(),this.state=3574,this.match(t.PARTITION),this.state=3575,this.match(t.OF),this.state=3576,this.qualifiedName(),this.state=3577,this.optionalTypedTableElementList(),this.state=3578,this.partitionBoundSpecification(),this.state=3579,this.match(t.SERVER),this.state=3580,this.name(),this.state=3581,this.createGenericOptions();break;case 4:this.enterOuterAlt(e,4),this.state=3583,this.match(t.CREATE),this.state=3584,this.match(t.FOREIGN),this.state=3585,this.match(t.TABLE),this.state=3586,this.match(t.IF_P),this.state=3587,this.match(t.NOT),this.state=3588,this.match(t.EXISTS),this.state=3589,this.qualifiedName(),this.state=3590,this.match(t.PARTITION),this.state=3591,this.match(t.OF),this.state=3592,this.qualifiedName(),this.state=3593,this.optionalTypedTableElementList(),this.state=3594,this.partitionBoundSpecification(),this.state=3595,this.match(t.SERVER),this.state=3596,this.name(),this.state=3597,this.createGenericOptions()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}importForeignSchemaStatement(){let e=new ET(this.context,this.state);this.enterRule(e,328,t.RULE_importForeignSchemaStatement);try{this.enterOuterAlt(e,1),this.state=3601,this.match(t.IMPORT_P),this.state=3602,this.match(t.FOREIGN),this.state=3603,this.match(t.SCHEMA),this.state=3604,this.name(),this.state=3605,this.importQualification(),this.state=3606,this.match(t.FROM),this.state=3607,this.match(t.SERVER),this.state=3608,this.name(),this.state=3609,this.match(t.INTO),this.state=3610,this.name(),this.state=3611,this.createGenericOptions()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}importQualificationType(){let e=new TT(this.context,this.state);this.enterRule(e,330,t.RULE_importQualificationType);try{switch(this.state=3616,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LIMIT:this.enterOuterAlt(e,1),this.state=3613,this.match(t.LIMIT),this.state=3614,this.match(t.TO);break;case t.EXCEPT:this.enterOuterAlt(e,2),this.state=3615,this.match(t.EXCEPT);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}importQualification(){let e=new oT(this.context,this.state);this.enterRule(e,332,t.RULE_importQualification);try{switch(this.state=3624,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EXCEPT:case t.LIMIT:this.enterOuterAlt(e,1),this.state=3618,this.importQualificationType(),this.state=3619,this.match(t.OPEN_PAREN),this.state=3620,this.relationExpressionList(),this.state=3621,this.match(t.CLOSE_PAREN);break;case t.FROM:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createUserMappingStatement(){let e=new RT(this.context,this.state);this.enterRule(e,334,t.RULE_createUserMappingStatement);try{switch(this.state=3647,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,178,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3626,this.match(t.CREATE),this.state=3627,this.match(t.USER),this.state=3628,this.match(t.MAPPING),this.state=3629,this.match(t.FOR),this.state=3630,this.authIdentifier(),this.state=3631,this.match(t.SERVER),this.state=3632,this.name(),this.state=3633,this.createGenericOptions();break;case 2:this.enterOuterAlt(e,2),this.state=3635,this.match(t.CREATE),this.state=3636,this.match(t.USER),this.state=3637,this.match(t.MAPPING),this.state=3638,this.match(t.IF_P),this.state=3639,this.match(t.NOT),this.state=3640,this.match(t.EXISTS),this.state=3641,this.match(t.FOR),this.state=3642,this.authIdentifier(),this.state=3643,this.match(t.SERVER),this.state=3644,this.name(),this.state=3645,this.createGenericOptions()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}authIdentifier(){let e=new AT(this.context,this.state);this.enterRule(e,336,t.RULE_authIdentifier);try{switch(this.state=3651,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CURRENT_USER:case t.DEFAULT:case t.DO:case t.FETCH:case t.SESSION_USER:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=3649,this.roleName();break;case t.USER:this.enterOuterAlt(e,2),this.state=3650,this.match(t.USER);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropUserMappingStatement(){let e=new ST(this.context,this.state);this.enterRule(e,338,t.RULE_dropUserMappingStatement);try{switch(this.state=3671,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,180,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3653,this.match(t.DROP),this.state=3654,this.match(t.USER),this.state=3655,this.match(t.MAPPING),this.state=3656,this.match(t.FOR),this.state=3657,this.authIdentifier(),this.state=3658,this.match(t.SERVER),this.state=3659,this.name();break;case 2:this.enterOuterAlt(e,2),this.state=3661,this.match(t.DROP),this.state=3662,this.match(t.USER),this.state=3663,this.match(t.MAPPING),this.state=3664,this.match(t.IF_P),this.state=3665,this.match(t.EXISTS),this.state=3666,this.match(t.FOR),this.state=3667,this.authIdentifier(),this.state=3668,this.match(t.SERVER),this.state=3669,this.name()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterUserMappingStatement(){let e=new lT(this.context,this.state);this.enterRule(e,340,t.RULE_alterUserMappingStatement);try{this.enterOuterAlt(e,1),this.state=3673,this.match(t.ALTER),this.state=3674,this.match(t.USER),this.state=3675,this.match(t.MAPPING),this.state=3676,this.match(t.FOR),this.state=3677,this.authIdentifier(),this.state=3678,this.match(t.SERVER),this.state=3679,this.name(),this.state=3680,this.alterGenericOptions()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createPolicyStatement(){let e=new OT(this.context,this.state);this.enterRule(e,342,t.RULE_createPolicyStatement);try{this.enterOuterAlt(e,1),this.state=3682,this.match(t.CREATE),this.state=3683,this.match(t.POLICY),this.state=3684,this.name(),this.state=3685,this.match(t.ON),this.state=3686,this.qualifiedName(),this.state=3687,this.rowSecurityDefaultPermissive(),this.state=3688,this.rowSecurityDefaultForCmd(),this.state=3689,this.rowSecurityOptionalToUser(),this.state=3690,this.rowSecurityOptionalExpression(),this.state=3691,this.rowSecurityOptionalWithCheck()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterPolicyStatement(){let e=new IT(this.context,this.state);this.enterRule(e,344,t.RULE_alterPolicyStatement);try{this.enterOuterAlt(e,1),this.state=3693,this.match(t.ALTER),this.state=3694,this.match(t.POLICY),this.state=3695,this.name(),this.state=3696,this.match(t.ON),this.state=3697,this.qualifiedName(),this.state=3698,this.rowSecurityOptionalToUser(),this.state=3699,this.rowSecurityOptionalExpression(),this.state=3700,this.rowSecurityOptionalWithCheck()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}rowSecurityOptionalExpression(){let e=new uT(this.context,this.state);this.enterRule(e,346,t.RULE_rowSecurityOptionalExpression);try{switch(this.state=3708,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.USING:this.enterOuterAlt(e,1),this.state=3702,this.match(t.USING),this.state=3703,this.match(t.OPEN_PAREN),this.state=3704,this.expression1(),this.state=3705,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.SEMI:case t.INTO:case t.WITH:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}rowSecurityOptionalWithCheck(){let e=new NT(this.context,this.state);this.enterRule(e,348,t.RULE_rowSecurityOptionalWithCheck);try{switch(this.state=3717,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WITH:this.enterOuterAlt(e,1),this.state=3710,this.match(t.WITH),this.state=3711,this.match(t.CHECK),this.state=3712,this.match(t.OPEN_PAREN),this.state=3713,this.expression1(),this.state=3714,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.SEMI:case t.INTO:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}rowSecurityOptionalToUser(){let e=new LT(this.context,this.state);this.enterRule(e,350,t.RULE_rowSecurityOptionalToUser);try{switch(this.state=3722,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.TO:this.enterOuterAlt(e,1),this.state=3719,this.match(t.TO),this.state=3720,this.roleNameList();break;case t.EOF:case t.SEMI:case t.INTO:case t.USING:case t.WITH:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}rowSecurityDefaultPermissive(){let e=new CT(this.context,this.state);this.enterRule(e,352,t.RULE_rowSecurityDefaultPermissive);try{switch(this.state=3727,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AS:this.enterOuterAlt(e,1),this.state=3724,this.match(t.AS),this.state=3725,this.identifier();break;case t.EOF:case t.SEMI:case t.FOR:case t.INTO:case t.TO:case t.USING:case t.WITH:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}rowSecurityDefaultForCmd(){let e=new _T(this.context,this.state);this.enterRule(e,354,t.RULE_rowSecurityDefaultForCmd);try{switch(this.state=3732,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:this.enterOuterAlt(e,1),this.state=3729,this.match(t.FOR),this.state=3730,this.rowSecurityCommand();break;case t.EOF:case t.SEMI:case t.INTO:case t.TO:case t.USING:case t.WITH:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}rowSecurityCommand(){let e,s=new PT(this.context,this.state);this.enterRule(s,356,t.RULE_rowSecurityCommand);try{this.enterOuterAlt(s,1),this.state=3734,e=this.tokenStream.LA(1),30===e||88===e||182===e||232===e||362===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createAccessMethodStatement(){let e=new MT(this.context,this.state);this.enterRule(e,358,t.RULE_createAccessMethodStatement);try{this.enterOuterAlt(e,1),this.state=3736,this.match(t.CREATE),this.state=3737,this.match(t.ACCESS),this.state=3738,this.match(t.METHOD),this.state=3739,this.name(),this.state=3740,this.match(t.TYPE_P),this.state=3741,this.accessMethodType(),this.state=3742,this.match(t.HANDLER),this.state=3743,this.handlerName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}accessMethodType(){let e,s=new dT(this.context,this.state);this.enterRule(s,360,t.RULE_accessMethodType);try{this.enterOuterAlt(s,1),this.state=3745,e=this.tokenStream.LA(1),92===e||226===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createTriggerStatement(){let e=new UT(this.context,this.state);this.enterRule(e,362,t.RULE_createTriggerStatement);try{switch(this.state=3785,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,186,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3747,this.match(t.CREATE),this.state=3748,this.match(t.TRIGGER),this.state=3749,this.name(),this.state=3750,this.triggerActionTime(),this.state=3751,this.triggerEvents(),this.state=3752,this.match(t.ON),this.state=3753,this.qualifiedName(),this.state=3754,this.triggerReferencing(),this.state=3755,this.triggerForSpec(),this.state=3756,this.triggerWhen(),this.state=3757,this.match(t.EXECUTE),this.state=3758,this.functionOrProcedure(),this.state=3759,this.functionName(),this.state=3760,this.match(t.OPEN_PAREN),this.state=3761,this.triggerFunctionArguments(),this.state=3762,this.match(t.CLOSE_PAREN);break;case 2:this.enterOuterAlt(e,2),this.state=3764,this.match(t.CREATE),this.state=3765,this.match(t.CONSTRAINT),this.state=3766,this.match(t.TRIGGER),this.state=3767,this.name(),this.state=3768,this.match(t.AFTER),this.state=3769,this.triggerEvents(),this.state=3770,this.match(t.ON),this.state=3771,this.qualifiedName(),this.state=3772,this.optionalConstraintFromTable(),this.state=3773,this.constraintAttributeSpecification(),this.state=3774,this.match(t.FOR),this.state=3775,this.match(t.EACH),this.state=3776,this.match(t.ROW),this.state=3777,this.triggerWhen(),this.state=3778,this.match(t.EXECUTE),this.state=3779,this.functionOrProcedure(),this.state=3780,this.functionName(),this.state=3781,this.match(t.OPEN_PAREN),this.state=3782,this.triggerFunctionArguments(),this.state=3783,this.match(t.CLOSE_PAREN)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}triggerActionTime(){let e=new mT(this.context,this.state);this.enterRule(e,364,t.RULE_triggerActionTime);try{switch(this.state=3791,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.BEFORE:this.enterOuterAlt(e,1),this.state=3787,this.match(t.BEFORE);break;case t.AFTER:this.enterOuterAlt(e,2),this.state=3788,this.match(t.AFTER);break;case t.INSTEAD:this.enterOuterAlt(e,3),this.state=3789,this.match(t.INSTEAD),this.state=3790,this.match(t.OF);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}triggerEvents(){let e,s=new DT(this.context,this.state);this.enterRule(s,366,t.RULE_triggerEvents);try{for(this.enterOuterAlt(s,1),this.state=3793,this.triggerOneEvent(),this.state=3798,this.errorHandler.sync(this),e=this.tokenStream.LA(1);82===e;)this.state=3794,this.match(t.OR),this.state=3795,this.triggerOneEvent(),this.state=3800,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}triggerOneEvent(){let e=new pT(this.context,this.state);this.enterRule(e,368,t.RULE_triggerOneEvent);try{switch(this.state=3808,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,189,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3801,this.match(t.INSERT);break;case 2:this.enterOuterAlt(e,2),this.state=3802,this.match(t.DELETE_P);break;case 3:this.enterOuterAlt(e,3),this.state=3803,this.match(t.UPDATE);break;case 4:this.enterOuterAlt(e,4),this.state=3804,this.match(t.UPDATE),this.state=3805,this.match(t.OF),this.state=3806,this.columnList();break;case 5:this.enterOuterAlt(e,5),this.state=3807,this.match(t.TRUNCATE)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}triggerReferencing(){let e=new gT(this.context,this.state);this.enterRule(e,370,t.RULE_triggerReferencing);try{switch(this.state=3813,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.REFERENCING:this.enterOuterAlt(e,1),this.state=3810,this.match(t.REFERENCING),this.state=3811,this.triggerTransitions();break;case t.FOR:case t.WHEN:case t.EXECUTE:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}triggerTransitions(){let e,s=new xT(this.context,this.state);this.enterRule(s,372,t.RULE_triggerTransitions);try{this.enterOuterAlt(s,1),this.state=3816,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=3815,this.triggerTransition(),this.state=3818,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(448===e||449===e)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}triggerTransition(){let e=new kT(this.context,this.state);this.enterRule(e,374,t.RULE_triggerTransition);try{this.enterOuterAlt(e,1),this.state=3820,this.transitionOldOrNew(),this.state=3821,this.transitionRowOrTable(),this.state=3822,this.optionalAs(),this.state=3823,this.transitionRelName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}transitionOldOrNew(){let e,s=new HT(this.context,this.state);this.enterRule(s,376,t.RULE_transitionOldOrNew);try{this.enterOuterAlt(s,1),this.state=3825,e=this.tokenStream.LA(1),448===e||449===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}transitionRowOrTable(){let e,s=new GT(this.context,this.state);this.enterRule(s,378,t.RULE_transitionRowOrTable);try{this.enterOuterAlt(s,1),this.state=3827,e=this.tokenStream.LA(1),92===e||407===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}transitionRelName(){let e=new FT(this.context,this.state);this.enterRule(e,380,t.RULE_transitionRelName);try{this.enterOuterAlt(e,1),this.state=3829,this.columnId()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}triggerForSpec(){let e,s=new vT(this.context,this.state);this.enterRule(s,382,t.RULE_triggerForSpec);try{switch(this.state=3837,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:this.enterOuterAlt(s,1),this.state=3831,this.match(t.FOR),this.state=3833,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e&&(this.state=3832,this.match(t.EACH)),this.state=3835,this.triggerForType();break;case t.WHEN:case t.EXECUTE:this.enterOuterAlt(s,2);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}triggerForType(){let e,s=new BT(this.context,this.state);this.enterRule(s,384,t.RULE_triggerForType);try{this.enterOuterAlt(s,1),this.state=3839,e=this.tokenStream.LA(1),334===e||407===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}triggerWhen(){let e=new yT(this.context,this.state);this.enterRule(e,386,t.RULE_triggerWhen);try{switch(this.state=3847,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WHEN:this.enterOuterAlt(e,1),this.state=3841,this.match(t.WHEN),this.state=3842,this.match(t.OPEN_PAREN),this.state=3843,this.expression1(),this.state=3844,this.match(t.CLOSE_PAREN);break;case t.EXECUTE:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionOrProcedure(){let e,s=new fT(this.context,this.state);this.enterRule(s,388,t.RULE_functionOrProcedure);try{this.enterOuterAlt(s,1),this.state=3849,e=this.tokenStream.LA(1),211===e||289===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}triggerFunctionArguments(){let e,s=new YT(this.context,this.state);this.enterRule(s,390,t.RULE_triggerFunctionArguments);try{switch(this.enterOuterAlt(s,1),this.state=3853,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALL:case t.ANALYSE:case t.ANALYZE:case t.AND:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASYMMETRIC:case t.BOTH:case t.CASE:case t.CAST:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CREATE:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DEFERRABLE:case t.DESC:case t.DISTINCT:case t.DO:case t.ELSE:case t.EXCEPT:case t.FALSE_P:case t.FETCH:case t.FOR:case t.FOREIGN:case t.FROM:case t.GRANT:case t.GROUP_P:case t.HAVING:case t.IN_P:case t.INITIALLY:case t.INTERSECT:case t.LATERAL_P:case t.LEADING:case t.LIMIT:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NOT:case t.NULL_P:case t.OFFSET:case t.ON:case t.ONLY:case t.OR:case t.ORDER:case t.PLACING:case t.PRIMARY:case t.REFERENCES:case t.RETURNING:case t.SELECT:case t.SESSION_USER:case t.SOME:case t.SYMMETRIC:case t.TABLE:case t.THEN:case t.TO:case t.TRAILING:case t.TRUE_P:case t.UNION:case t.UNIQUE:case t.USER:case t.USING:case t.VARIADIC:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.END_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.Integral:case t.Numeric:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.state=3851,this.triggerFunctionArgument();break;case t.CLOSE_PAREN:case t.COMMA:break;default:throw new Ei(this)}for(this.state=3859,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=3855,this.match(t.COMMA),this.state=3856,this.triggerFunctionArgument(),this.state=3861,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}triggerFunctionArgument(){let e=new wT(this.context,this.state);this.enterRule(e,392,t.RULE_triggerFunctionArgument);try{switch(this.state=3866,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.Integral:this.enterOuterAlt(e,1),this.state=3862,this.iconst();break;case t.Numeric:this.enterOuterAlt(e,2),this.state=3863,this.fconst();break;case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.enterOuterAlt(e,3),this.state=3864,this.sconst();break;case t.ALL:case t.ANALYSE:case t.ANALYZE:case t.AND:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASYMMETRIC:case t.BOTH:case t.CASE:case t.CAST:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CREATE:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DEFERRABLE:case t.DESC:case t.DISTINCT:case t.DO:case t.ELSE:case t.EXCEPT:case t.FALSE_P:case t.FETCH:case t.FOR:case t.FOREIGN:case t.FROM:case t.GRANT:case t.GROUP_P:case t.HAVING:case t.IN_P:case t.INITIALLY:case t.INTERSECT:case t.LATERAL_P:case t.LEADING:case t.LIMIT:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NOT:case t.NULL_P:case t.OFFSET:case t.ON:case t.ONLY:case t.OR:case t.ORDER:case t.PLACING:case t.PRIMARY:case t.REFERENCES:case t.RETURNING:case t.SELECT:case t.SESSION_USER:case t.SOME:case t.SYMMETRIC:case t.TABLE:case t.THEN:case t.TO:case t.TRAILING:case t.TRUE_P:case t.UNION:case t.UNIQUE:case t.USER:case t.USING:case t.VARIADIC:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.END_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,4),this.state=3865,this.columnLabel();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalConstraintFromTable(){let e=new bT(this.context,this.state);this.enterRule(e,394,t.RULE_optionalConstraintFromTable);try{switch(this.state=3871,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FROM:this.enterOuterAlt(e,1),this.state=3868,this.match(t.FROM),this.state=3869,this.qualifiedName();break;case t.DEFERRABLE:case t.FOR:case t.INITIALLY:case t.NOT:case t.NO:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}constraintAttributeSpecification(){let e,s=new WT(this.context,this.state);this.enterRule(s,396,t.RULE_constraintAttributeSpecification);try{for(this.enterOuterAlt(s,1),this.state=3876,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(e-54&-32)&&1<<e-54&8421377||262===e;)this.state=3873,this.constraintAttributeElement(),this.state=3878,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}constraintAttributeElement(){let e=new VT(this.context,this.state);this.enterRule(e,398,t.RULE_constraintAttributeElement);try{switch(this.state=3890,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,200,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3879,this.match(t.NOT),this.state=3880,this.match(t.DEFERRABLE);break;case 2:this.enterOuterAlt(e,2),this.state=3881,this.match(t.DEFERRABLE);break;case 3:this.enterOuterAlt(e,3),this.state=3882,this.match(t.INITIALLY),this.state=3883,this.match(t.IMMEDIATE);break;case 4:this.enterOuterAlt(e,4),this.state=3884,this.match(t.INITIALLY),this.state=3885,this.match(t.DEFERRED);break;case 5:this.enterOuterAlt(e,5),this.state=3886,this.match(t.NOT),this.state=3887,this.match(t.VALID);break;case 6:this.enterOuterAlt(e,6),this.state=3888,this.match(t.NO),this.state=3889,this.match(t.INHERIT)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createEventTriggerStatement(){let e=new XT(this.context,this.state);this.enterRule(e,400,t.RULE_createEventTriggerStatement);try{switch(this.state=3918,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,201,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3892,this.match(t.CREATE),this.state=3893,this.match(t.EVENT),this.state=3894,this.match(t.TRIGGER),this.state=3895,this.name(),this.state=3896,this.match(t.ON),this.state=3897,this.columnLabel(),this.state=3898,this.match(t.EXECUTE),this.state=3899,this.functionOrProcedure(),this.state=3900,this.functionName(),this.state=3901,this.match(t.OPEN_PAREN),this.state=3902,this.match(t.CLOSE_PAREN);break;case 2:this.enterOuterAlt(e,2),this.state=3904,this.match(t.CREATE),this.state=3905,this.match(t.EVENT),this.state=3906,this.match(t.TRIGGER),this.state=3907,this.name(),this.state=3908,this.match(t.ON),this.state=3909,this.columnLabel(),this.state=3910,this.match(t.WHEN),this.state=3911,this.eventTriggerWhenList(),this.state=3912,this.match(t.EXECUTE),this.state=3913,this.functionOrProcedure(),this.state=3914,this.functionName(),this.state=3915,this.match(t.OPEN_PAREN),this.state=3916,this.match(t.CLOSE_PAREN)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}eventTriggerWhenList(){let e,s=new KT(this.context,this.state);this.enterRule(s,402,t.RULE_eventTriggerWhenList);try{for(this.enterOuterAlt(s,1),this.state=3920,this.eventTriggerWhenItem(),this.state=3925,this.errorHandler.sync(this),e=this.tokenStream.LA(1);33===e;)this.state=3921,this.match(t.AND),this.state=3922,this.eventTriggerWhenItem(),this.state=3927,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}eventTriggerWhenItem(){let e=new QT(this.context,this.state);this.enterRule(e,404,t.RULE_eventTriggerWhenItem);try{this.enterOuterAlt(e,1),this.state=3928,this.columnId(),this.state=3929,this.match(t.IN_P),this.state=3930,this.match(t.OPEN_PAREN),this.state=3931,this.eventTriggerValueList(),this.state=3932,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}eventTriggerValueList(){let e,s=new JT(this.context,this.state);this.enterRule(s,406,t.RULE_eventTriggerValueList);try{for(this.enterOuterAlt(s,1),this.state=3934,this.sconst(),this.state=3939,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=3935,this.match(t.COMMA),this.state=3936,this.sconst(),this.state=3941,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterEventTriggerStatement(){let e=new ZT(this.context,this.state);this.enterRule(e,408,t.RULE_alterEventTriggerStatement);try{this.enterOuterAlt(e,1),this.state=3942,this.match(t.ALTER),this.state=3943,this.match(t.EVENT),this.state=3944,this.match(t.TRIGGER),this.state=3945,this.name(),this.state=3946,this.enableTrigger()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}enableTrigger(){let e=new qT(this.context,this.state);this.enterRule(e,410,t.RULE_enableTrigger);try{switch(this.state=3954,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,204,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3948,this.match(t.ENABLE_P);break;case 2:this.enterOuterAlt(e,2),this.state=3949,this.match(t.ENABLE_P),this.state=3950,this.match(t.REPLICA);break;case 3:this.enterOuterAlt(e,3),this.state=3951,this.match(t.ENABLE_P),this.state=3952,this.match(t.ALWAYS);break;case 4:this.enterOuterAlt(e,4),this.state=3953,this.match(t.DISABLE_P)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createAssertionStatement(){let e=new jT(this.context,this.state);this.enterRule(e,412,t.RULE_createAssertionStatement);try{this.enterOuterAlt(e,1),this.state=3956,this.match(t.CREATE),this.state=3957,this.match(t.ASSERTION),this.state=3958,this.anyName(),this.state=3959,this.match(t.CHECK),this.state=3960,this.match(t.OPEN_PAREN),this.state=3961,this.expression1(),this.state=3962,this.match(t.CLOSE_PAREN),this.state=3963,this.constraintAttributeSpecification()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}defineStatement(){let e,s=new zT(this.context,this.state);this.enterRule(s,414,t.RULE_defineStatement);try{switch(this.state=4073,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,206,this.context)){case 1:this.enterOuterAlt(s,1),this.state=3965,this.match(t.CREATE),this.state=3966,this.optionalOrReplace(),this.state=3967,this.match(t.AGGREGATE),this.state=3968,this.functionName(),this.state=3969,this.aggregateArguments(),this.state=3970,this.definition();break;case 2:this.enterOuterAlt(s,2),this.state=3972,this.match(t.CREATE),this.state=3973,this.optionalOrReplace(),this.state=3974,this.match(t.AGGREGATE),this.state=3975,this.functionName(),this.state=3976,this.oldAggregateDefinition();break;case 3:this.enterOuterAlt(s,3),this.state=3978,this.match(t.CREATE),this.state=3979,this.match(t.OPERATOR),this.state=3980,this.anyOperator(),this.state=3981,this.definition();break;case 4:this.enterOuterAlt(s,4),this.state=3983,this.match(t.CREATE),this.state=3984,this.match(t.TYPE_P),this.state=3985,this.anyName(),this.state=3986,this.definition();break;case 5:this.enterOuterAlt(s,5),this.state=3988,this.match(t.CREATE),this.state=3989,this.match(t.TYPE_P),this.state=3990,this.anyName();break;case 6:this.enterOuterAlt(s,6),this.state=3991,this.match(t.CREATE),this.state=3992,this.match(t.TYPE_P),this.state=3993,this.anyName(),this.state=3994,this.match(t.AS),this.state=3995,this.match(t.OPEN_PAREN),this.state=3996,this.optionalTableFunctionElementList(),this.state=3997,this.match(t.CLOSE_PAREN);break;case 7:this.enterOuterAlt(s,7),this.state=3999,this.match(t.CREATE),this.state=4e3,this.match(t.TYPE_P),this.state=4001,this.anyName(),this.state=4002,this.match(t.AS),this.state=4003,this.match(t.ENUM_P),this.state=4004,this.match(t.OPEN_PAREN),this.state=4006,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-645&-32)&&1<<e-645&67108885&&(this.state=4005,this.enumValueList()),this.state=4008,this.match(t.CLOSE_PAREN);break;case 8:this.enterOuterAlt(s,8),this.state=4010,this.match(t.CREATE),this.state=4011,this.match(t.TYPE_P),this.state=4012,this.anyName(),this.state=4013,this.match(t.AS),this.state=4014,this.match(t.RANGE),this.state=4015,this.definition();break;case 9:this.enterOuterAlt(s,9),this.state=4017,this.match(t.CREATE),this.state=4018,this.match(t.TEXT_P),this.state=4019,this.match(t.SEARCH),this.state=4020,this.match(t.PARSER),this.state=4021,this.anyName(),this.state=4022,this.definition();break;case 10:this.enterOuterAlt(s,10),this.state=4024,this.match(t.CREATE),this.state=4025,this.match(t.TEXT_P),this.state=4026,this.match(t.SEARCH),this.state=4027,this.match(t.DICTIONARY),this.state=4028,this.anyName(),this.state=4029,this.definition();break;case 11:this.enterOuterAlt(s,11),this.state=4031,this.match(t.CREATE),this.state=4032,this.match(t.TEXT_P),this.state=4033,this.match(t.SEARCH),this.state=4034,this.match(t.TEMPLATE),this.state=4035,this.anyName(),this.state=4036,this.definition();break;case 12:this.enterOuterAlt(s,12),this.state=4038,this.match(t.CREATE),this.state=4039,this.match(t.TEXT_P),this.state=4040,this.match(t.SEARCH),this.state=4041,this.match(t.CONFIGURATION),this.state=4042,this.anyName(),this.state=4043,this.definition();break;case 13:this.enterOuterAlt(s,13),this.state=4045,this.match(t.CREATE),this.state=4046,this.match(t.COLLATION),this.state=4047,this.anyName(),this.state=4048,this.definition();break;case 14:this.enterOuterAlt(s,14),this.state=4050,this.match(t.CREATE),this.state=4051,this.match(t.COLLATION),this.state=4052,this.match(t.IF_P),this.state=4053,this.match(t.NOT),this.state=4054,this.match(t.EXISTS),this.state=4055,this.anyName(),this.state=4056,this.definition();break;case 15:this.enterOuterAlt(s,15),this.state=4058,this.match(t.CREATE),this.state=4059,this.match(t.COLLATION),this.state=4060,this.anyName(),this.state=4061,this.match(t.FROM),this.state=4062,this.anyName();break;case 16:this.enterOuterAlt(s,16),this.state=4064,this.match(t.CREATE),this.state=4065,this.match(t.COLLATION),this.state=4066,this.match(t.IF_P),this.state=4067,this.match(t.NOT),this.state=4068,this.match(t.EXISTS),this.state=4069,this.anyName(),this.state=4070,this.match(t.FROM),this.state=4071,this.anyName()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}definition(){let e,s=new $T(this.context,this.state);this.enterRule(s,416,t.RULE_definition);try{for(this.enterOuterAlt(s,1),this.state=4075,this.match(t.OPEN_PAREN),this.state=4076,this.definitionElement(),this.state=4081,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=4077,this.match(t.COMMA),this.state=4078,this.definitionElement(),this.state=4083,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=4084,this.match(t.CLOSE_PAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}definitionElement(){let e,s=new to(this.context,this.state);this.enterRule(s,418,t.RULE_definitionElement);try{this.enterOuterAlt(s,1),this.state=4086,this.columnLabel(),this.state=4089,this.errorHandler.sync(this),e=this.tokenStream.LA(1),10===e&&(this.state=4087,this.match(t.EQUAL),this.state=4088,this.definitionArgument())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}definitionArgument(){let e=new eo(this.context,this.state);this.enterRule(e,420,t.RULE_definitionArgument);try{switch(this.state=4097,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,209,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4091,this.functionType();break;case 2:this.enterOuterAlt(e,2),this.state=4092,this.reservedKeyword();break;case 3:this.enterOuterAlt(e,3),this.state=4093,this.allOperatorQualifier();break;case 4:this.enterOuterAlt(e,4),this.state=4094,this.numericOnly();break;case 5:this.enterOuterAlt(e,5),this.state=4095,this.sconst();break;case 6:this.enterOuterAlt(e,6),this.state=4096,this.match(t.NONE)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}oldAggregateDefinition(){let e,s=new so(this.context,this.state);this.enterRule(s,422,t.RULE_oldAggregateDefinition);try{for(this.enterOuterAlt(s,1),this.state=4099,this.match(t.OPEN_PAREN),this.state=4100,this.oldAggregateElement(),this.state=4105,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=4101,this.match(t.COMMA),this.state=4102,this.oldAggregateElement(),this.state=4107,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=4108,this.match(t.CLOSE_PAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}oldAggregateElement(){let e=new ao(this.context,this.state);this.enterRule(e,424,t.RULE_oldAggregateElement);try{this.enterOuterAlt(e,1),this.state=4110,this.identifier(),this.state=4111,this.match(t.EQUAL),this.state=4112,this.definitionArgument()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}enumValueList(){let e,s=new ro(this.context,this.state);this.enterRule(s,426,t.RULE_enumValueList);try{for(this.enterOuterAlt(s,1),this.state=4114,this.sconst(),this.state=4119,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=4115,this.match(t.COMMA),this.state=4116,this.sconst(),this.state=4121,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterEnumStatement(){let e=new io(this.context,this.state);this.enterRule(e,428,t.RULE_alterEnumStatement);try{switch(this.state=4159,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,212,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4122,this.match(t.ALTER),this.state=4123,this.match(t.TYPE_P),this.state=4124,this.anyName(),this.state=4125,this.match(t.ADD_P),this.state=4126,this.match(t.VALUE_P),this.state=4127,this.optionalIfNotExists(),this.state=4128,this.sconst();break;case 2:this.enterOuterAlt(e,2),this.state=4130,this.match(t.ALTER),this.state=4131,this.match(t.TYPE_P),this.state=4132,this.anyName(),this.state=4133,this.match(t.ADD_P),this.state=4134,this.match(t.VALUE_P),this.state=4135,this.optionalIfNotExists(),this.state=4136,this.sconst(),this.state=4137,this.match(t.BEFORE),this.state=4138,this.sconst();break;case 3:this.enterOuterAlt(e,3),this.state=4140,this.match(t.ALTER),this.state=4141,this.match(t.TYPE_P),this.state=4142,this.anyName(),this.state=4143,this.match(t.ADD_P),this.state=4144,this.match(t.VALUE_P),this.state=4145,this.optionalIfNotExists(),this.state=4146,this.sconst(),this.state=4147,this.match(t.AFTER),this.state=4148,this.sconst();break;case 4:this.enterOuterAlt(e,4),this.state=4150,this.match(t.ALTER),this.state=4151,this.match(t.TYPE_P),this.state=4152,this.anyName(),this.state=4153,this.match(t.RENAME),this.state=4154,this.match(t.VALUE_P),this.state=4155,this.sconst(),this.state=4156,this.match(t.TO),this.state=4157,this.sconst()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalIfNotExists(){let e=new co(this.context,this.state);this.enterRule(e,430,t.RULE_optionalIfNotExists);try{switch(this.state=4165,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.IF_P:this.enterOuterAlt(e,1),this.state=4161,this.match(t.IF_P),this.state=4162,this.match(t.NOT),this.state=4163,this.match(t.EXISTS);break;case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createOperatorClassStatement(){let e,s=new no(this.context,this.state);this.enterRule(s,432,t.RULE_createOperatorClassStatement);try{this.enterOuterAlt(s,1),this.state=4167,this.match(t.CREATE),this.state=4168,this.match(t.OPERATOR),this.state=4169,this.match(t.CLASS),this.state=4170,this.anyName(),this.state=4172,this.errorHandler.sync(this),e=this.tokenStream.LA(1),53===e&&(this.state=4171,this.match(t.DEFAULT)),this.state=4174,this.match(t.FOR),this.state=4175,this.match(t.TYPE_P),this.state=4176,this.typeName(),this.state=4177,this.match(t.USING),this.state=4178,this.name(),this.state=4179,this.optionalOperatorFamily(),this.state=4180,this.match(t.AS),this.state=4181,this.operatorClassItemList()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}operatorClassItemList(){let e,s=new ho(this.context,this.state);this.enterRule(s,434,t.RULE_operatorClassItemList);try{for(this.enterOuterAlt(s,1),this.state=4183,this.operatorClassItem(),this.state=4188,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=4184,this.match(t.COMMA),this.state=4185,this.operatorClassItem(),this.state=4190,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}operatorClassItem(){let e,s=new Eo(this.context,this.state);this.enterRule(s,436,t.RULE_operatorClassItem);try{switch(this.state=4218,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,218,this.context)){case 1:this.enterOuterAlt(s,1),this.state=4191,this.match(t.OPERATOR),this.state=4192,this.iconst(),this.state=4193,this.anyOperator(),this.state=4194,this.operatorClassPurpose(),this.state=4196,this.errorHandler.sync(this),e=this.tokenStream.LA(1),295===e&&(this.state=4195,this.match(t.RECHECK));break;case 2:this.enterOuterAlt(s,2),this.state=4198,this.match(t.OPERATOR),this.state=4199,this.iconst(),this.state=4200,this.operatorWithArgumentTypes(),this.state=4201,this.operatorClassPurpose(),this.state=4203,this.errorHandler.sync(this),e=this.tokenStream.LA(1),295===e&&(this.state=4202,this.match(t.RECHECK));break;case 3:this.enterOuterAlt(s,3),this.state=4205,this.match(t.FUNCTION),this.state=4206,this.iconst(),this.state=4207,this.functionWithArgumentTypes();break;case 4:this.enterOuterAlt(s,4),this.state=4209,this.match(t.FUNCTION),this.state=4210,this.iconst(),this.state=4211,this.match(t.OPEN_PAREN),this.state=4212,this.typeList(),this.state=4213,this.match(t.CLOSE_PAREN),this.state=4214,this.functionWithArgumentTypes();break;case 5:this.enterOuterAlt(s,5),this.state=4216,this.match(t.STORAGE),this.state=4217,this.typeName()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalOperatorFamily(){let e=new To(this.context,this.state);this.enterRule(e,438,t.RULE_optionalOperatorFamily);try{switch(this.state=4223,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FAMILY:this.enterOuterAlt(e,1),this.state=4220,this.match(t.FAMILY),this.state=4221,this.anyName();break;case t.AS:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}operatorClassPurpose(){let e=new oo(this.context,this.state);this.enterRule(e,440,t.RULE_operatorClassPurpose);try{switch(this.state=4232,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,220,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4225,this.match(t.FOR),this.state=4226,this.match(t.SEARCH);break;case 2:this.enterOuterAlt(e,2),this.state=4227,this.match(t.FOR),this.state=4228,this.match(t.ORDER),this.state=4229,this.match(t.BY),this.state=4230,this.anyName();break;case 3:this.enterOuterAlt(e,3)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createOperatorFamilyStatement(){let e=new Ro(this.context,this.state);this.enterRule(e,442,t.RULE_createOperatorFamilyStatement);try{this.enterOuterAlt(e,1),this.state=4234,this.match(t.CREATE),this.state=4235,this.match(t.OPERATOR),this.state=4236,this.match(t.FAMILY),this.state=4237,this.anyName(),this.state=4238,this.match(t.USING),this.state=4239,this.name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterOperatorFamilyStatement(){let e=new Ao(this.context,this.state);this.enterRule(e,444,t.RULE_alterOperatorFamilyStatement);try{switch(this.state=4259,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,221,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4241,this.match(t.ALTER),this.state=4242,this.match(t.OPERATOR),this.state=4243,this.match(t.FAMILY),this.state=4244,this.anyName(),this.state=4245,this.match(t.USING),this.state=4246,this.name(),this.state=4247,this.match(t.ADD_P),this.state=4248,this.operatorClassItemList();break;case 2:this.enterOuterAlt(e,2),this.state=4250,this.match(t.ALTER),this.state=4251,this.match(t.OPERATOR),this.state=4252,this.match(t.FAMILY),this.state=4253,this.anyName(),this.state=4254,this.match(t.USING),this.state=4255,this.name(),this.state=4256,this.match(t.DROP),this.state=4257,this.operatorClassDropList()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}operatorClassDropList(){let e,s=new So(this.context,this.state);this.enterRule(s,446,t.RULE_operatorClassDropList);try{for(this.enterOuterAlt(s,1),this.state=4261,this.operatorClassDrop(),this.state=4266,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=4262,this.match(t.COMMA),this.state=4263,this.operatorClassDrop(),this.state=4268,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}operatorClassDrop(){let e=new lo(this.context,this.state);this.enterRule(e,448,t.RULE_operatorClassDrop);try{switch(this.state=4281,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPERATOR:this.enterOuterAlt(e,1),this.state=4269,this.match(t.OPERATOR),this.state=4270,this.iconst(),this.state=4271,this.match(t.OPEN_PAREN),this.state=4272,this.typeList(),this.state=4273,this.match(t.CLOSE_PAREN);break;case t.FUNCTION:this.enterOuterAlt(e,2),this.state=4275,this.match(t.FUNCTION),this.state=4276,this.iconst(),this.state=4277,this.match(t.OPEN_PAREN),this.state=4278,this.typeList(),this.state=4279,this.match(t.CLOSE_PAREN);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropOperatorClassStatement(){let e=new Oo(this.context,this.state);this.enterRule(e,450,t.RULE_dropOperatorClassStatement);try{switch(this.state=4301,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,224,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4283,this.match(t.DROP),this.state=4284,this.match(t.OPERATOR),this.state=4285,this.match(t.CLASS),this.state=4286,this.anyName(),this.state=4287,this.match(t.USING),this.state=4288,this.name(),this.state=4289,this.optionalDropBehavior();break;case 2:this.enterOuterAlt(e,2),this.state=4291,this.match(t.DROP),this.state=4292,this.match(t.OPERATOR),this.state=4293,this.match(t.CLASS),this.state=4294,this.match(t.IF_P),this.state=4295,this.match(t.EXISTS),this.state=4296,this.anyName(),this.state=4297,this.match(t.USING),this.state=4298,this.name(),this.state=4299,this.optionalDropBehavior()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropOperatorFamilyStatement(){let e=new Io(this.context,this.state);this.enterRule(e,452,t.RULE_dropOperatorFamilyStatement);try{switch(this.state=4321,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,225,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4303,this.match(t.DROP),this.state=4304,this.match(t.OPERATOR),this.state=4305,this.match(t.FAMILY),this.state=4306,this.anyName(),this.state=4307,this.match(t.USING),this.state=4308,this.name(),this.state=4309,this.optionalDropBehavior();break;case 2:this.enterOuterAlt(e,2),this.state=4311,this.match(t.DROP),this.state=4312,this.match(t.OPERATOR),this.state=4313,this.match(t.FAMILY),this.state=4314,this.match(t.IF_P),this.state=4315,this.match(t.EXISTS),this.state=4316,this.anyName(),this.state=4317,this.match(t.USING),this.state=4318,this.name(),this.state=4319,this.optionalDropBehavior()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropOwnedStatement(){let e=new uo(this.context,this.state);this.enterRule(e,454,t.RULE_dropOwnedStatement);try{this.enterOuterAlt(e,1),this.state=4323,this.match(t.DROP),this.state=4324,this.match(t.OWNED),this.state=4325,this.match(t.BY),this.state=4326,this.roleNameList(),this.state=4327,this.optionalDropBehavior()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}reassignOwnedStatement(){let e=new No(this.context,this.state);this.enterRule(e,456,t.RULE_reassignOwnedStatement);try{this.enterOuterAlt(e,1),this.state=4329,this.match(t.REASSIGN),this.state=4330,this.match(t.OWNED),this.state=4331,this.match(t.BY),this.state=4332,this.roleNameList(),this.state=4333,this.match(t.TO),this.state=4334,this.roleName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropStatement(){let e=new Lo(this.context,this.state);this.enterRule(e,458,t.RULE_dropStatement);try{switch(this.state=4441,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,233,this.context)){case 1:if(this.enterOuterAlt(e,1),1===(this.state=4336,this.match(t.DROP),this.state=4337,this.objectTypeAnyName(),this.state=4340,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,226,this.context)))this.state=4338,this.match(t.IF_P),this.state=4339,this.match(t.EXISTS);this.state=4342,this.anyNameList(),this.state=4343,this.optionalDropBehavior();break;case 2:if(this.enterOuterAlt(e,2),1===(this.state=4345,this.match(t.DROP),this.state=4346,this.match(t.SEQUENCE),this.state=4349,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,227,this.context)))this.state=4347,this.match(t.IF_P),this.state=4348,this.match(t.EXISTS);this.state=4351,this.sequenceNameList(),this.state=4352,this.optionalDropBehavior();break;case 3:if(this.enterOuterAlt(e,3),1===(this.state=4354,this.match(t.DROP),this.state=4355,this.match(t.INDEX),this.state=4358,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,228,this.context)))this.state=4356,this.match(t.IF_P),this.state=4357,this.match(t.EXISTS);this.state=4360,this.indexNameList(),this.state=4361,this.optionalDropBehavior();break;case 4:if(this.enterOuterAlt(e,4),1===(this.state=4363,this.match(t.DROP),this.state=4364,this.match(t.SCHEMA),this.state=4367,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,229,this.context)))this.state=4365,this.match(t.IF_P),this.state=4366,this.match(t.EXISTS);this.state=4369,this.schemaNameList(),this.state=4370,this.optionalDropBehavior();break;case 5:if(this.enterOuterAlt(e,5),1===(this.state=4372,this.match(t.DROP),this.state=4373,this.dropTypeName(),this.state=4376,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,230,this.context)))this.state=4374,this.match(t.IF_P),this.state=4375,this.match(t.EXISTS);this.state=4378,this.nameList(),this.state=4379,this.optionalDropBehavior();break;case 6:if(this.enterOuterAlt(e,6),1===(this.state=4381,this.match(t.DROP),this.state=4382,this.objectTypeNameOnAnyName(),this.state=4385,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,231,this.context)))this.state=4383,this.match(t.IF_P),this.state=4384,this.match(t.EXISTS);this.state=4387,this.name(),this.state=4388,this.match(t.ON),this.state=4389,this.anyName(),this.state=4390,this.optionalDropBehavior();break;case 7:if(this.enterOuterAlt(e,7),1===(this.state=4392,this.match(t.DROP),this.state=4393,this.match(t.TRIGGER),this.state=4396,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,232,this.context)))this.state=4394,this.match(t.IF_P),this.state=4395,this.match(t.EXISTS);this.state=4398,this.triggerName(),this.state=4399,this.match(t.ON),this.state=4400,this.anyName(),this.state=4401,this.optionalDropBehavior();break;case 8:this.enterOuterAlt(e,8),this.state=4403,this.match(t.DROP),this.state=4404,this.match(t.TYPE_P),this.state=4405,this.typeNameList(),this.state=4406,this.optionalDropBehavior();break;case 9:this.enterOuterAlt(e,9),this.state=4408,this.match(t.DROP),this.state=4409,this.match(t.TYPE_P),this.state=4410,this.match(t.IF_P),this.state=4411,this.match(t.EXISTS),this.state=4412,this.typeNameList(),this.state=4413,this.optionalDropBehavior();break;case 10:this.enterOuterAlt(e,10),this.state=4415,this.match(t.DROP),this.state=4416,this.match(t.DOMAIN_P),this.state=4417,this.typeNameList(),this.state=4418,this.optionalDropBehavior();break;case 11:this.enterOuterAlt(e,11),this.state=4420,this.match(t.DROP),this.state=4421,this.match(t.DOMAIN_P),this.state=4422,this.match(t.IF_P),this.state=4423,this.match(t.EXISTS),this.state=4424,this.typeNameList(),this.state=4425,this.optionalDropBehavior();break;case 12:this.enterOuterAlt(e,12),this.state=4427,this.match(t.DROP),this.state=4428,this.match(t.INDEX),this.state=4429,this.match(t.CONCURRENTLY),this.state=4430,this.indexName(),this.state=4431,this.optionalDropBehavior();break;case 13:this.enterOuterAlt(e,13),this.state=4433,this.match(t.DROP),this.state=4434,this.match(t.INDEX),this.state=4435,this.match(t.CONCURRENTLY),this.state=4436,this.match(t.IF_P),this.state=4437,this.match(t.EXISTS),this.state=4438,this.indexName(),this.state=4439,this.optionalDropBehavior()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}objectTypeAnyName(){let e=new Co(this.context,this.state);this.enterRule(e,460,t.RULE_objectTypeAnyName);try{switch(this.state=4464,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,234,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4443,this.match(t.TABLE);break;case 2:this.enterOuterAlt(e,2),this.state=4444,this.match(t.VIEW);break;case 3:this.enterOuterAlt(e,3),this.state=4445,this.match(t.MATERIALIZED),this.state=4446,this.match(t.VIEW);break;case 4:this.enterOuterAlt(e,4),this.state=4447,this.match(t.FOREIGN),this.state=4448,this.match(t.TABLE);break;case 5:this.enterOuterAlt(e,5),this.state=4449,this.match(t.COLLATION);break;case 6:this.enterOuterAlt(e,6),this.state=4450,this.match(t.CONVERSION_P);break;case 7:this.enterOuterAlt(e,7),this.state=4451,this.match(t.STATISTICS);break;case 8:this.enterOuterAlt(e,8),this.state=4452,this.match(t.TEXT_P),this.state=4453,this.match(t.SEARCH),this.state=4454,this.match(t.PARSER);break;case 9:this.enterOuterAlt(e,9),this.state=4455,this.match(t.TEXT_P),this.state=4456,this.match(t.SEARCH),this.state=4457,this.match(t.DICTIONARY);break;case 10:this.enterOuterAlt(e,10),this.state=4458,this.match(t.TEXT_P),this.state=4459,this.match(t.SEARCH),this.state=4460,this.match(t.TEMPLATE);break;case 11:this.enterOuterAlt(e,11),this.state=4461,this.match(t.TEXT_P),this.state=4462,this.match(t.SEARCH),this.state=4463,this.match(t.CONFIGURATION)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}objectTypeName(){let e=new _o(this.context,this.state);this.enterRule(e,462,t.RULE_objectTypeName);try{switch(this.state=4469,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOREIGN:case t.ACCESS:case t.EVENT:case t.EXTENSION:case t.LANGUAGE:case t.PROCEDURAL:case t.SERVER:case t.PUBLICATION:this.enterOuterAlt(e,1),this.state=4466,this.dropTypeName();break;case t.SUBSCRIPTION:this.enterOuterAlt(e,2),this.state=4467,this.match(t.SUBSCRIPTION);break;case t.TABLESPACE:this.enterOuterAlt(e,3),this.state=4468,this.match(t.TABLESPACE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropTypeName(){let e=new Po(this.context,this.state);this.enterRule(e,464,t.RULE_dropTypeName);try{switch(this.state=4484,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ACCESS:this.enterOuterAlt(e,1),this.state=4471,this.match(t.ACCESS),this.state=4472,this.match(t.METHOD);break;case t.EVENT:this.enterOuterAlt(e,2),this.state=4473,this.match(t.EVENT),this.state=4474,this.match(t.TRIGGER);break;case t.EXTENSION:this.enterOuterAlt(e,3),this.state=4475,this.match(t.EXTENSION);break;case t.FOREIGN:this.enterOuterAlt(e,4),this.state=4476,this.match(t.FOREIGN),this.state=4477,this.match(t.DATA_P),this.state=4478,this.match(t.WRAPPER);break;case t.LANGUAGE:case t.PROCEDURAL:this.enterOuterAlt(e,5),this.state=4479,this.optionalProcedural(),this.state=4480,this.match(t.LANGUAGE);break;case t.PUBLICATION:this.enterOuterAlt(e,6),this.state=4482,this.match(t.PUBLICATION);break;case t.SERVER:this.enterOuterAlt(e,7),this.state=4483,this.match(t.SERVER);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}objectTypeNameOnAnyName(){let e,s=new Mo(this.context,this.state);this.enterRule(s,466,t.RULE_objectTypeNameOnAnyName);try{this.enterOuterAlt(s,1),this.state=4486,e=this.tokenStream.LA(1),314===e||445===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}anyNameList(){let e,s=new Uo(this.context,this.state);this.enterRule(s,468,t.RULE_anyNameList);try{for(this.enterOuterAlt(s,1),this.state=4488,this.anyName(),this.state=4493,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=4489,this.match(t.COMMA),this.state=4490,this.anyName(),this.state=4495,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}anyName(){let e,s=new mo(this.context,this.state);this.enterRule(s,470,t.RULE_anyName);try{this.enterOuterAlt(s,1),this.state=4496,this.columnId(),this.state=4498,this.errorHandler.sync(this),e=this.tokenStream.LA(1),11===e&&(this.state=4497,this.attributes())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}attributes(){let e=new Do(this.context,this.state);this.enterRule(e,472,t.RULE_attributes);try{let s;this.enterOuterAlt(e,1),this.state=4502,this.errorHandler.sync(this),s=1;do{if(1!==s)throw new Ei(this);this.state=4500,this.match(t.DOT),this.state=4501,this.attributeName(),this.state=4504,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,239,this.context)}while(2!==s&&s!==ja.INVALID_ALT_NUMBER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}typeNameList(){let e,s=new po(this.context,this.state);this.enterRule(s,474,t.RULE_typeNameList);try{for(this.enterOuterAlt(s,1),this.state=4506,this.typeName(),this.state=4511,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=4507,this.match(t.COMMA),this.state=4508,this.typeName(),this.state=4513,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}truncateStatement(){let e=new go(this.context,this.state);this.enterRule(e,476,t.RULE_truncateStatement);try{this.enterOuterAlt(e,1),this.state=4514,this.match(t.TRUNCATE),this.state=4515,this.optionalTable(),this.state=4516,this.relationExpressionList(),this.state=4517,this.optionalRestartSequences(),this.state=4518,this.optionalDropBehavior()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalRestartSequences(){let e=new xo(this.context,this.state);this.enterRule(e,478,t.RULE_optionalRestartSequences);try{switch(this.state=4525,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CONTINUE_P:this.enterOuterAlt(e,1),this.state=4520,this.match(t.CONTINUE_P),this.state=4521,this.match(t.IDENTITY_P);break;case t.RESTART:this.enterOuterAlt(e,2),this.state=4522,this.match(t.RESTART),this.state=4523,this.match(t.IDENTITY_P);break;case t.EOF:case t.SEMI:case t.INTO:case t.CASCADE:case t.RESTRICT:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}commentStatement(){let e=new ko(this.context,this.state);this.enterRule(e,480,t.RULE_commentStatement);try{switch(this.state=4711,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,243,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4527,this.match(t.COMMENT),this.state=4528,this.match(t.ON),this.state=4529,this.objectTypeAnyName(),this.state=4530,this.anyName(),this.state=4531,this.match(t.IS),this.state=4532,this.commentText();break;case 2:this.enterOuterAlt(e,2),this.state=4534,this.match(t.COMMENT),this.state=4535,this.match(t.ON),this.state=4536,this.match(t.SEQUENCE),this.state=4537,this.sequenceName(),this.state=4538,this.match(t.IS),this.state=4539,this.commentText();break;case 3:this.enterOuterAlt(e,3),this.state=4541,this.match(t.COMMENT),this.state=4542,this.match(t.ON),this.state=4543,this.match(t.INDEX),this.state=4544,this.indexName(),this.state=4545,this.match(t.IS),this.state=4546,this.commentText();break;case 4:this.enterOuterAlt(e,4),this.state=4548,this.match(t.COMMENT),this.state=4549,this.match(t.ON),this.state=4550,this.match(t.COLUMN),this.state=4551,this.anyName(),this.state=4552,this.match(t.IS),this.state=4553,this.commentText();break;case 5:this.enterOuterAlt(e,5),this.state=4555,this.match(t.COMMENT),this.state=4556,this.match(t.ON),this.state=4557,this.objectTypeName(),this.state=4558,this.name(),this.state=4559,this.match(t.IS),this.state=4560,this.commentText();break;case 6:this.enterOuterAlt(e,6),this.state=4562,this.match(t.COMMENT),this.state=4563,this.match(t.ON),this.state=4564,this.match(t.ROLE),this.state=4565,this.roleName(),this.state=4566,this.match(t.IS),this.state=4567,this.commentText();break;case 7:this.enterOuterAlt(e,7),this.state=4569,this.match(t.COMMENT),this.state=4570,this.match(t.ON),this.state=4571,this.match(t.DATABASE),this.state=4572,this.databaseName(),this.state=4573,this.match(t.IS),this.state=4574,this.commentText();break;case 8:this.enterOuterAlt(e,8),this.state=4576,this.match(t.COMMENT),this.state=4577,this.match(t.ON),this.state=4578,this.match(t.SCHEMA),this.state=4579,this.schemaName(),this.state=4580,this.match(t.IS),this.state=4581,this.commentText();break;case 9:this.enterOuterAlt(e,9),this.state=4583,this.match(t.COMMENT),this.state=4584,this.match(t.ON),this.state=4585,this.match(t.TYPE_P),this.state=4586,this.typeName(),this.state=4587,this.match(t.IS),this.state=4588,this.commentText();break;case 10:this.enterOuterAlt(e,10),this.state=4590,this.match(t.COMMENT),this.state=4591,this.match(t.ON),this.state=4592,this.match(t.DOMAIN_P),this.state=4593,this.typeName(),this.state=4594,this.match(t.IS),this.state=4595,this.commentText();break;case 11:this.enterOuterAlt(e,11),this.state=4597,this.match(t.COMMENT),this.state=4598,this.match(t.ON),this.state=4599,this.match(t.AGGREGATE),this.state=4600,this.aggregateWithArgumentTypes(),this.state=4601,this.match(t.IS),this.state=4602,this.commentText();break;case 12:this.enterOuterAlt(e,12),this.state=4604,this.match(t.COMMENT),this.state=4605,this.match(t.ON),this.state=4606,this.match(t.FUNCTION),this.state=4607,this.functionWithArgumentTypes(),this.state=4608,this.match(t.IS),this.state=4609,this.commentText();break;case 13:this.enterOuterAlt(e,13),this.state=4611,this.match(t.COMMENT),this.state=4612,this.match(t.ON),this.state=4613,this.match(t.OPERATOR),this.state=4614,this.operatorWithArgumentTypes(),this.state=4615,this.match(t.IS),this.state=4616,this.commentText();break;case 14:if(this.enterOuterAlt(e,14),1===(this.state=4618,this.match(t.COMMENT),this.state=4619,this.match(t.ON),this.state=4620,this.match(t.CONSTRAINT),this.state=4621,this.constraintName(),this.state=4622,this.match(t.ON),this.state=4624,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,242,this.context)))this.state=4623,this.match(t.DOMAIN_P);this.state=4626,this.anyName(),this.state=4627,this.match(t.IS),this.state=4628,this.commentText();break;case 15:this.enterOuterAlt(e,15),this.state=4630,this.match(t.COMMENT),this.state=4631,this.match(t.ON),this.state=4632,this.objectTypeNameOnAnyName(),this.state=4633,this.name(),this.state=4634,this.match(t.ON),this.state=4635,this.anyName(),this.state=4636,this.match(t.IS),this.state=4637,this.commentText();break;case 16:this.enterOuterAlt(e,16),this.state=4639,this.match(t.COMMENT),this.state=4640,this.match(t.ON),this.state=4641,this.match(t.TRIGGER),this.state=4642,this.triggerName(),this.state=4643,this.match(t.ON),this.state=4644,this.anyName(),this.state=4645,this.match(t.IS),this.state=4646,this.commentText();break;case 17:this.enterOuterAlt(e,17),this.state=4648,this.match(t.COMMENT),this.state=4649,this.match(t.ON),this.state=4650,this.match(t.PROCEDURE),this.state=4651,this.functionWithArgumentTypes(),this.state=4652,this.match(t.IS),this.state=4653,this.commentText();break;case 18:this.enterOuterAlt(e,18),this.state=4655,this.match(t.COMMENT),this.state=4656,this.match(t.ON),this.state=4657,this.match(t.ROUTINE),this.state=4658,this.functionWithArgumentTypes(),this.state=4659,this.match(t.IS),this.state=4660,this.commentText();break;case 19:this.enterOuterAlt(e,19),this.state=4662,this.match(t.COMMENT),this.state=4663,this.match(t.ON),this.state=4664,this.match(t.TRANSFORM),this.state=4665,this.match(t.FOR),this.state=4666,this.typeName(),this.state=4667,this.match(t.LANGUAGE),this.state=4668,this.name(),this.state=4669,this.match(t.IS),this.state=4670,this.commentText();break;case 20:this.enterOuterAlt(e,20),this.state=4672,this.match(t.COMMENT),this.state=4673,this.match(t.ON),this.state=4674,this.match(t.OPERATOR),this.state=4675,this.match(t.CLASS),this.state=4676,this.anyName(),this.state=4677,this.match(t.USING),this.state=4678,this.name(),this.state=4679,this.match(t.IS),this.state=4680,this.commentText();break;case 21:this.enterOuterAlt(e,21),this.state=4682,this.match(t.COMMENT),this.state=4683,this.match(t.ON),this.state=4684,this.match(t.OPERATOR),this.state=4685,this.match(t.FAMILY),this.state=4686,this.anyName(),this.state=4687,this.match(t.USING),this.state=4688,this.name(),this.state=4689,this.match(t.IS),this.state=4690,this.commentText();break;case 22:this.enterOuterAlt(e,22),this.state=4692,this.match(t.COMMENT),this.state=4693,this.match(t.ON),this.state=4694,this.match(t.LARGE_P),this.state=4695,this.match(t.OBJECT_P),this.state=4696,this.numericOnly(),this.state=4697,this.match(t.IS),this.state=4698,this.commentText();break;case 23:this.enterOuterAlt(e,23),this.state=4700,this.match(t.COMMENT),this.state=4701,this.match(t.ON),this.state=4702,this.match(t.CAST),this.state=4703,this.match(t.OPEN_PAREN),this.state=4704,this.typeName(),this.state=4705,this.match(t.AS),this.state=4706,this.typeName(),this.state=4707,this.match(t.CLOSE_PAREN),this.state=4708,this.match(t.IS),this.state=4709,this.commentText()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}commentText(){let e=new Ho(this.context,this.state);this.enterRule(e,482,t.RULE_commentText);try{switch(this.state=4715,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=4713,this.sconst();break;case t.NULL_P:this.enterOuterAlt(e,2),this.state=4714,this.match(t.NULL_P);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}securityLabelStatement(){let e=new Go(this.context,this.state);this.enterRule(e,484,t.RULE_securityLabelStatement);try{switch(this.state=4853,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,245,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4717,this.match(t.SECURITY),this.state=4718,this.match(t.LABEL),this.state=4719,this.optionalProvider(),this.state=4720,this.match(t.ON),this.state=4721,this.objectTypeAnyName(),this.state=4722,this.anyName(),this.state=4723,this.match(t.IS),this.state=4724,this.securityLabel();break;case 2:this.enterOuterAlt(e,2),this.state=4726,this.match(t.SECURITY),this.state=4727,this.match(t.LABEL),this.state=4728,this.optionalProvider(),this.state=4729,this.match(t.ON),this.state=4730,this.match(t.SEQUENCE),this.state=4731,this.sequenceName(),this.state=4732,this.match(t.IS),this.state=4733,this.securityLabel();break;case 3:this.enterOuterAlt(e,3),this.state=4735,this.match(t.SECURITY),this.state=4736,this.match(t.LABEL),this.state=4737,this.optionalProvider(),this.state=4738,this.match(t.ON),this.state=4739,this.match(t.INDEX),this.state=4740,this.indexName(),this.state=4741,this.match(t.IS),this.state=4742,this.securityLabel();break;case 4:this.enterOuterAlt(e,4),this.state=4744,this.match(t.SECURITY),this.state=4745,this.match(t.LABEL),this.state=4746,this.optionalProvider(),this.state=4747,this.match(t.ON),this.state=4748,this.match(t.COLUMN),this.state=4749,this.anyName(),this.state=4750,this.match(t.IS),this.state=4751,this.securityLabel();break;case 5:this.enterOuterAlt(e,5),this.state=4753,this.match(t.SECURITY),this.state=4754,this.match(t.LABEL),this.state=4755,this.optionalProvider(),this.state=4756,this.match(t.ON),this.state=4757,this.objectTypeName(),this.state=4758,this.name(),this.state=4759,this.match(t.IS),this.state=4760,this.securityLabel();break;case 6:this.enterOuterAlt(e,6),this.state=4762,this.match(t.SECURITY),this.state=4763,this.match(t.LABEL),this.state=4764,this.optionalProvider(),this.state=4765,this.match(t.ON),this.state=4766,this.match(t.ROLE),this.state=4767,this.roleName(),this.state=4768,this.match(t.IS),this.state=4769,this.securityLabel();break;case 7:this.enterOuterAlt(e,7),this.state=4771,this.match(t.SECURITY),this.state=4772,this.match(t.LABEL),this.state=4773,this.optionalProvider(),this.state=4774,this.match(t.ON),this.state=4775,this.match(t.DATABASE),this.state=4776,this.databaseName(),this.state=4777,this.match(t.IS),this.state=4778,this.securityLabel();break;case 8:this.enterOuterAlt(e,8),this.state=4780,this.match(t.SECURITY),this.state=4781,this.match(t.LABEL),this.state=4782,this.optionalProvider(),this.state=4783,this.match(t.ON),this.state=4784,this.match(t.SCHEMA),this.state=4785,this.schemaName(),this.state=4786,this.match(t.IS),this.state=4787,this.securityLabel();break;case 9:this.enterOuterAlt(e,9),this.state=4789,this.match(t.SECURITY),this.state=4790,this.match(t.LABEL),this.state=4791,this.optionalProvider(),this.state=4792,this.match(t.ON),this.state=4793,this.match(t.TYPE_P),this.state=4794,this.typeName(),this.state=4795,this.match(t.IS),this.state=4796,this.securityLabel();break;case 10:this.enterOuterAlt(e,10),this.state=4798,this.match(t.SECURITY),this.state=4799,this.match(t.LABEL),this.state=4800,this.optionalProvider(),this.state=4801,this.match(t.ON),this.state=4802,this.match(t.DOMAIN_P),this.state=4803,this.typeName(),this.state=4804,this.match(t.IS),this.state=4805,this.securityLabel();break;case 11:this.enterOuterAlt(e,11),this.state=4807,this.match(t.SECURITY),this.state=4808,this.match(t.LABEL),this.state=4809,this.optionalProvider(),this.state=4810,this.match(t.ON),this.state=4811,this.match(t.AGGREGATE),this.state=4812,this.aggregateWithArgumentTypes(),this.state=4813,this.match(t.IS),this.state=4814,this.securityLabel();break;case 12:this.enterOuterAlt(e,12),this.state=4816,this.match(t.SECURITY),this.state=4817,this.match(t.LABEL),this.state=4818,this.optionalProvider(),this.state=4819,this.match(t.ON),this.state=4820,this.match(t.FUNCTION),this.state=4821,this.functionWithArgumentTypes(),this.state=4822,this.match(t.IS),this.state=4823,this.securityLabel();break;case 13:this.enterOuterAlt(e,13),this.state=4825,this.match(t.SECURITY),this.state=4826,this.match(t.LABEL),this.state=4827,this.optionalProvider(),this.state=4828,this.match(t.ON),this.state=4829,this.match(t.LARGE_P),this.state=4830,this.match(t.OBJECT_P),this.state=4831,this.numericOnly(),this.state=4832,this.match(t.IS),this.state=4833,this.securityLabel();break;case 14:this.enterOuterAlt(e,14),this.state=4835,this.match(t.SECURITY),this.state=4836,this.match(t.LABEL),this.state=4837,this.optionalProvider(),this.state=4838,this.match(t.ON),this.state=4839,this.match(t.PROCEDURE),this.state=4840,this.functionWithArgumentTypes(),this.state=4841,this.match(t.IS),this.state=4842,this.securityLabel();break;case 15:this.enterOuterAlt(e,15),this.state=4844,this.match(t.SECURITY),this.state=4845,this.match(t.LABEL),this.state=4846,this.optionalProvider(),this.state=4847,this.match(t.ON),this.state=4848,this.match(t.ROUTINE),this.state=4849,this.functionWithArgumentTypes(),this.state=4850,this.match(t.IS),this.state=4851,this.securityLabel()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalProvider(){let e=new Fo(this.context,this.state);this.enterRule(e,486,t.RULE_optionalProvider);try{switch(this.state=4858,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:this.enterOuterAlt(e,1),this.state=4855,this.match(t.FOR),this.state=4856,this.nonReservedWordOrSconst();break;case t.ON:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}securityLabel(){let e=new vo(this.context,this.state);this.enterRule(e,488,t.RULE_securityLabel);try{switch(this.state=4862,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=4860,this.sconst();break;case t.NULL_P:this.enterOuterAlt(e,2),this.state=4861,this.match(t.NULL_P);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}fetchStatement(){let e=new Bo(this.context,this.state);this.enterRule(e,490,t.RULE_fetchStatement);try{switch(this.state=4868,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FETCH:this.enterOuterAlt(e,1),this.state=4864,this.match(t.FETCH),this.state=4865,this.fetchArguments();break;case t.MOVE:this.enterOuterAlt(e,2),this.state=4866,this.match(t.MOVE),this.state=4867,this.fetchArguments();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}fetchArguments(){let e=new yo(this.context,this.state);this.enterRule(e,492,t.RULE_fetchArguments);try{switch(this.state=4936,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,249,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4870,this.cursorName();break;case 2:this.enterOuterAlt(e,2),this.state=4871,this.fromOrIn(),this.state=4872,this.cursorName();break;case 3:this.enterOuterAlt(e,3),this.state=4874,this.match(t.NEXT),this.state=4875,this.optionalFromOrIn(),this.state=4876,this.cursorName();break;case 4:this.enterOuterAlt(e,4),this.state=4878,this.match(t.PRIOR),this.state=4879,this.optionalFromOrIn(),this.state=4880,this.cursorName();break;case 5:this.enterOuterAlt(e,5),this.state=4882,this.match(t.FIRST_P),this.state=4883,this.optionalFromOrIn(),this.state=4884,this.cursorName();break;case 6:this.enterOuterAlt(e,6),this.state=4886,this.match(t.LAST_P),this.state=4887,this.optionalFromOrIn(),this.state=4888,this.cursorName();break;case 7:this.enterOuterAlt(e,7),this.state=4890,this.match(t.ABSOLUTE_P),this.state=4891,this.signedIconst(),this.state=4892,this.optionalFromOrIn(),this.state=4893,this.cursorName();break;case 8:this.enterOuterAlt(e,8),this.state=4895,this.match(t.RELATIVE_P),this.state=4896,this.signedIconst(),this.state=4897,this.optionalFromOrIn(),this.state=4898,this.cursorName();break;case 9:this.enterOuterAlt(e,9),this.state=4900,this.signedIconst(),this.state=4901,this.optionalFromOrIn(),this.state=4902,this.cursorName();break;case 10:this.enterOuterAlt(e,10),this.state=4904,this.match(t.ALL),this.state=4905,this.optionalFromOrIn(),this.state=4906,this.cursorName();break;case 11:this.enterOuterAlt(e,11),this.state=4908,this.match(t.FORWARD),this.state=4909,this.optionalFromOrIn(),this.state=4910,this.cursorName();break;case 12:this.enterOuterAlt(e,12),this.state=4912,this.match(t.FORWARD),this.state=4913,this.signedIconst(),this.state=4914,this.optionalFromOrIn(),this.state=4915,this.cursorName();break;case 13:this.enterOuterAlt(e,13),this.state=4917,this.match(t.FORWARD),this.state=4918,this.match(t.ALL),this.state=4919,this.optionalFromOrIn(),this.state=4920,this.cursorName();break;case 14:this.enterOuterAlt(e,14),this.state=4922,this.match(t.BACKWARD),this.state=4923,this.optionalFromOrIn(),this.state=4924,this.cursorName();break;case 15:this.enterOuterAlt(e,15),this.state=4926,this.match(t.BACKWARD),this.state=4927,this.signedIconst(),this.state=4928,this.optionalFromOrIn(),this.state=4929,this.cursorName();break;case 16:this.enterOuterAlt(e,16),this.state=4931,this.match(t.BACKWARD),this.state=4932,this.match(t.ALL),this.state=4933,this.optionalFromOrIn(),this.state=4934,this.cursorName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}fromOrIn(){let e,s=new fo(this.context,this.state);this.enterRule(s,494,t.RULE_fromOrIn);try{this.enterOuterAlt(s,1),this.state=4938,e=this.tokenStream.LA(1),64===e||68===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalFromOrIn(){let e=new Yo(this.context,this.state);this.enterRule(e,496,t.RULE_optionalFromOrIn);try{switch(this.state=4942,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FROM:case t.IN_P:this.enterOuterAlt(e,1),this.state=4940,this.fromOrIn();break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}grantStatement(){let e=new wo(this.context,this.state);this.enterRule(e,498,t.RULE_grantStatement);try{this.enterOuterAlt(e,1),this.state=4944,this.match(t.GRANT),this.state=4945,this.privileges(),this.state=4946,this.match(t.ON),this.state=4947,this.privilegeTarget(),this.state=4948,this.match(t.TO),this.state=4949,this.granteeList(),this.state=4950,this.optionalWithGrantOption()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}revokeStatement(){let e=new bo(this.context,this.state);this.enterRule(e,500,t.RULE_revokeStatement);try{switch(this.state=4971,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,251,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4952,this.match(t.REVOKE),this.state=4953,this.privileges(),this.state=4954,this.match(t.ON),this.state=4955,this.privilegeTarget(),this.state=4956,this.match(t.FROM),this.state=4957,this.granteeList(),this.state=4958,this.optionalDropBehavior();break;case 2:this.enterOuterAlt(e,2),this.state=4960,this.match(t.REVOKE),this.state=4961,this.match(t.GRANT),this.state=4962,this.match(t.OPTION),this.state=4963,this.match(t.FOR),this.state=4964,this.privileges(),this.state=4965,this.match(t.ON),this.state=4966,this.privilegeTarget(),this.state=4967,this.match(t.FROM),this.state=4968,this.granteeList(),this.state=4969,this.optionalDropBehavior()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}privileges(){let e=new Wo(this.context,this.state);this.enterRule(e,502,t.RULE_privileges);try{switch(this.state=4988,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,252,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4973,this.privilegeList();break;case 2:this.enterOuterAlt(e,2),this.state=4974,this.match(t.ALL);break;case 3:this.enterOuterAlt(e,3),this.state=4975,this.match(t.ALL),this.state=4976,this.match(t.PRIVILEGES);break;case 4:this.enterOuterAlt(e,4),this.state=4977,this.match(t.ALL),this.state=4978,this.match(t.OPEN_PAREN),this.state=4979,this.columnList(),this.state=4980,this.match(t.CLOSE_PAREN);break;case 5:this.enterOuterAlt(e,5),this.state=4982,this.match(t.ALL),this.state=4983,this.match(t.PRIVILEGES),this.state=4984,this.match(t.OPEN_PAREN),this.state=4985,this.columnList(),this.state=4986,this.match(t.CLOSE_PAREN)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}privilegeList(){let e,s=new Vo(this.context,this.state);this.enterRule(s,504,t.RULE_privilegeList);try{for(this.enterOuterAlt(s,1),this.state=4990,this.privilege(),this.state=4995,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=4991,this.match(t.COMMA),this.state=4992,this.privilege(),this.state=4997,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}privilege(){let e=new Xo(this.context,this.state);this.enterRule(e,506,t.RULE_privilege);try{switch(this.state=5007,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SELECT:this.enterOuterAlt(e,1),this.state=4998,this.match(t.SELECT),this.state=4999,this.columnListWithParentheses();break;case t.REFERENCES:this.enterOuterAlt(e,2),this.state=5e3,this.match(t.REFERENCES),this.state=5001,this.columnListWithParentheses();break;case t.CREATE:this.enterOuterAlt(e,3),this.state=5002,this.match(t.CREATE),this.state=5003,this.columnListWithParentheses();break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,4),this.state=5004,this.columnId(),this.state=5005,this.columnListWithParentheses();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}privilegeTarget(){let e,s=new Ko(this.context,this.state);this.enterRule(s,508,t.RULE_privilegeTarget);try{switch(this.state=5047,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,255,this.context)){case 1:this.enterOuterAlt(s,1),this.state=5009,this.qualifiedNameList();break;case 2:this.enterOuterAlt(s,2),this.state=5010,this.match(t.TABLE),this.state=5011,this.qualifiedNameList();break;case 3:this.enterOuterAlt(s,3),this.state=5012,this.match(t.SEQUENCE),this.state=5013,this.sequenceNameList();break;case 4:this.enterOuterAlt(s,4),this.state=5014,this.match(t.FOREIGN),this.state=5015,this.match(t.DATA_P),this.state=5016,this.match(t.WRAPPER),this.state=5017,this.nameList();break;case 5:this.enterOuterAlt(s,5),this.state=5018,this.match(t.FOREIGN),this.state=5019,this.match(t.SERVER),this.state=5020,this.nameList();break;case 6:this.enterOuterAlt(s,6),this.state=5021,this.match(t.FUNCTION),this.state=5022,this.functionWithArgumentTypesList();break;case 7:this.enterOuterAlt(s,7),this.state=5023,this.match(t.PROCEDURE),this.state=5024,this.functionWithArgumentTypesList();break;case 8:this.enterOuterAlt(s,8),this.state=5025,this.match(t.ROUTINE),this.state=5026,this.functionWithArgumentTypesList();break;case 9:this.enterOuterAlt(s,9),this.state=5027,this.match(t.DATABASE),this.state=5028,this.databaseNameList();break;case 10:this.enterOuterAlt(s,10),this.state=5029,this.match(t.DOMAIN_P),this.state=5030,this.anyNameList();break;case 11:this.enterOuterAlt(s,11),this.state=5031,this.match(t.LANGUAGE),this.state=5032,this.nameList();break;case 12:this.enterOuterAlt(s,12),this.state=5033,this.match(t.LARGE_P),this.state=5034,this.match(t.OBJECT_P),this.state=5035,this.numericOnlyList();break;case 13:this.enterOuterAlt(s,13),this.state=5036,this.match(t.SCHEMA),this.state=5037,this.schemaNameList();break;case 14:this.enterOuterAlt(s,14),this.state=5038,this.match(t.TABLESPACE),this.state=5039,this.nameList();break;case 15:this.enterOuterAlt(s,15),this.state=5040,this.match(t.TYPE_P),this.state=5041,this.anyNameList();break;case 16:this.enterOuterAlt(s,16),this.state=5042,this.match(t.ALL),this.state=5043,e=this.tokenStream.LA(1),212===e||322===e||343===e||455===e||457===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5044,this.match(t.IN_P),this.state=5045,this.match(t.SCHEMA),this.state=5046,this.schemaNameList()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}granteeList(){let e,s=new Qo(this.context,this.state);this.enterRule(s,510,t.RULE_granteeList);try{for(this.enterOuterAlt(s,1),this.state=5049,this.grantee(),this.state=5054,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5050,this.match(t.COMMA),this.state=5051,this.grantee(),this.state=5056,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}grantee(){let e=new Jo(this.context,this.state);this.enterRule(e,512,t.RULE_grantee);try{switch(this.state=5060,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CURRENT_USER:case t.DEFAULT:case t.DO:case t.FETCH:case t.SESSION_USER:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=5057,this.roleName();break;case t.GROUP_P:this.enterOuterAlt(e,2),this.state=5058,this.match(t.GROUP_P),this.state=5059,this.roleName();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalWithGrantOption(){let e=new Zo(this.context,this.state);this.enterRule(e,514,t.RULE_optionalWithGrantOption);try{switch(this.state=5066,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WITH:this.enterOuterAlt(e,1),this.state=5062,this.match(t.WITH),this.state=5063,this.match(t.GRANT),this.state=5064,this.match(t.OPTION);break;case t.EOF:case t.SEMI:case t.CREATE:case t.GRANT:case t.INTO:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}grantPrivilegeStatement(){let e=new qo(this.context,this.state);this.enterRule(e,516,t.RULE_grantPrivilegeStatement);try{this.enterOuterAlt(e,1),this.state=5068,this.match(t.GRANT),this.state=5069,this.privilegeList(),this.state=5070,this.match(t.TO),this.state=5071,this.roleNameList(),this.state=5072,this.optionalGrantAdminOption(),this.state=5073,this.optionalGrantedBy()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}revokePrivilegeStatement(){let e=new jo(this.context,this.state);this.enterRule(e,518,t.RULE_revokePrivilegeStatement);try{switch(this.state=5092,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,259,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5075,this.match(t.REVOKE),this.state=5076,this.privilegeList(),this.state=5077,this.match(t.FROM),this.state=5078,this.roleNameList(),this.state=5079,this.optionalGrantedBy(),this.state=5080,this.optionalDropBehavior();break;case 2:this.enterOuterAlt(e,2),this.state=5082,this.match(t.REVOKE),this.state=5083,this.match(t.ADMIN),this.state=5084,this.match(t.OPTION),this.state=5085,this.match(t.FOR),this.state=5086,this.privilegeList(),this.state=5087,this.match(t.FROM),this.state=5088,this.roleNameList(),this.state=5089,this.optionalGrantedBy(),this.state=5090,this.optionalDropBehavior()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalGrantAdminOption(){let e=new zo(this.context,this.state);this.enterRule(e,520,t.RULE_optionalGrantAdminOption);try{switch(this.state=5098,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WITH:this.enterOuterAlt(e,1),this.state=5094,this.match(t.WITH),this.state=5095,this.match(t.ADMIN),this.state=5096,this.match(t.OPTION);break;case t.EOF:case t.SEMI:case t.INTO:case t.GRANTED:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalGrantedBy(){let e=new $o(this.context,this.state);this.enterRule(e,522,t.RULE_optionalGrantedBy);try{switch(this.state=5104,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.GRANTED:this.enterOuterAlt(e,1),this.state=5100,this.match(t.GRANTED),this.state=5101,this.match(t.BY),this.state=5102,this.roleName();break;case t.EOF:case t.SEMI:case t.INTO:case t.CASCADE:case t.RESTRICT:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterDefaultPrivilegesStatement(){let e,s=new tR(this.context,this.state);this.enterRule(s,524,t.RULE_alterDefaultPrivilegesStatement);try{for(this.enterOuterAlt(s,1),this.state=5106,this.match(t.ALTER),this.state=5107,this.match(t.DEFAULT),this.state=5108,this.match(t.PRIVILEGES),this.state=5112,this.errorHandler.sync(this),e=this.tokenStream.LA(1);62===e||68===e;)this.state=5109,this.defultPrivilegeOption(),this.state=5114,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=5115,this.defaultPrivelegeAction()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}defultPrivilegeOption(){let e=new eR(this.context,this.state);this.enterRule(e,526,t.RULE_defultPrivilegeOption);try{switch(this.state=5124,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.IN_P:this.enterOuterAlt(e,1),this.state=5117,this.match(t.IN_P),this.state=5118,this.match(t.SCHEMA),this.state=5119,this.schemaNameList();break;case t.FOR:this.enterOuterAlt(e,2),this.state=5120,this.match(t.FOR),this.state=5121,this.roleOrAliases(),this.state=5122,this.roleNameList();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}defaultPrivelegeAction(){let e=new sR(this.context,this.state);this.enterRule(e,528,t.RULE_defaultPrivelegeAction);try{switch(this.state=5153,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,264,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5126,this.match(t.GRANT),this.state=5127,this.privileges(),this.state=5128,this.match(t.ON),this.state=5129,this.defultPrivilegeTarget(),this.state=5130,this.match(t.TO),this.state=5131,this.granteeList(),this.state=5132,this.optionalWithGrantOption();break;case 2:this.enterOuterAlt(e,2),this.state=5134,this.match(t.REVOKE),this.state=5135,this.privileges(),this.state=5136,this.match(t.ON),this.state=5137,this.defultPrivilegeTarget(),this.state=5138,this.match(t.FROM),this.state=5139,this.granteeList(),this.state=5140,this.optionalDropBehavior();break;case 3:this.enterOuterAlt(e,3),this.state=5142,this.match(t.REVOKE),this.state=5143,this.match(t.GRANT),this.state=5144,this.match(t.OPTION),this.state=5145,this.match(t.FOR),this.state=5146,this.privileges(),this.state=5147,this.match(t.ON),this.state=5148,this.defultPrivilegeTarget(),this.state=5149,this.match(t.FROM),this.state=5150,this.granteeList(),this.state=5151,this.optionalDropBehavior()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}defultPrivilegeTarget(){let e,s=new aR(this.context,this.state);this.enterRule(s,530,t.RULE_defultPrivilegeTarget);try{this.enterOuterAlt(s,1),this.state=5155,e=this.tokenStream.LA(1),212===e||322===e||343===e||354===e||455===e||456===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}indexStatement(){let e,s=new rR(this.context,this.state);this.enterRule(s,532,t.RULE_indexStatement);try{switch(this.state=5202,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,270,this.context)){case 1:this.enterOuterAlt(s,1),this.state=5157,this.match(t.CREATE),this.state=5159,this.errorHandler.sync(this),e=this.tokenStream.LA(1),98===e&&(this.state=5158,this.match(t.UNIQUE)),this.state=5161,this.match(t.INDEX),this.state=5163,this.errorHandler.sync(this),e=this.tokenStream.LA(1),109===e&&(this.state=5162,this.match(t.CONCURRENTLY)),this.state=5166,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-33&-32)&&1<<e-33&286268421||!(e-92&-32)&&1<<e-92&2298478593||!(e-124&-32)&&1<<e-124&4294967269||!(e-156&-32)&&1<<e-156&4294967295||!(e-188&-32)&&1<<e-188&4294967295||!(e-220&-32)&&1<<e-220&3221225471||!(e-252&-32)&&1<<e-252&4294967293||!(e-284&-32)&&1<<e-284&4294967295||!(e-316&-32)&&1<<e-316&4294967295||!(e-348&-32)&&1<<e-348&4294967295||!(e-380&-32)&&1<<e-380&4294967295||!(e-412&-32)&&1<<e-412&4294967295||!(e-444&-32)&&1<<e-444&4026530815||!(e-476&-32)&&1<<e-476&3623878655||!(e-508&-32)&&1<<e-508&4294965247||!(e-540&-32)&&1<<e-540&4294967295||!(e-572&-32)&&1<<e-572&4294967295||!(e-604&-32)&&1<<e-604&4294967295||!(e-636&-32)&&1<<e-636&100663331)&&(this.state=5165,this.name()),this.state=5168,this.match(t.ON),this.state=5169,this.relationExpression(),this.state=5170,this.optionalAccessMethodClause(),this.state=5171,this.match(t.OPEN_PAREN),this.state=5172,this.indexParameters(),this.state=5173,this.match(t.CLOSE_PAREN),this.state=5174,this.optionalInclude(),this.state=5175,this.optionalRelOptions(),this.state=5176,this.optionalTablespace(),this.state=5177,this.whereClause();break;case 2:this.enterOuterAlt(s,2),this.state=5179,this.match(t.CREATE),this.state=5181,this.errorHandler.sync(this),e=this.tokenStream.LA(1),98===e&&(this.state=5180,this.match(t.UNIQUE)),this.state=5183,this.match(t.INDEX),this.state=5185,this.errorHandler.sync(this),e=this.tokenStream.LA(1),109===e&&(this.state=5184,this.match(t.CONCURRENTLY)),this.state=5187,this.match(t.IF_P),this.state=5188,this.match(t.NOT),this.state=5189,this.match(t.EXISTS),this.state=5190,this.name(),this.state=5191,this.match(t.ON),this.state=5192,this.relationExpression(),this.state=5193,this.optionalAccessMethodClause(),this.state=5194,this.match(t.OPEN_PAREN),this.state=5195,this.indexParameters(),this.state=5196,this.match(t.CLOSE_PAREN),this.state=5197,this.optionalInclude(),this.state=5198,this.optionalRelOptions(),this.state=5199,this.optionalTablespace(),this.state=5200,this.whereClause()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalAccessMethodClause(){let e=new iR(this.context,this.state);this.enterRule(e,534,t.RULE_optionalAccessMethodClause);try{switch(this.state=5207,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.USING:this.enterOuterAlt(e,1),this.state=5204,this.match(t.USING),this.state=5205,this.name();break;case t.OPEN_PAREN:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}indexParameters(){let e,s=new cR(this.context,this.state);this.enterRule(s,536,t.RULE_indexParameters);try{for(this.enterOuterAlt(s,1),this.state=5209,this.indexElement(),this.state=5214,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5210,this.match(t.COMMA),this.state=5211,this.indexElement(),this.state=5216,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}indexElemOptions(){let e=new nR(this.context,this.state);this.enterRule(e,538,t.RULE_indexElemOptions);try{switch(this.state=5228,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,273,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5217,this.optionalCollate(),this.state=5218,this.optionalClass(),this.state=5219,this.optionalAscOrDesc(),this.state=5220,this.optionalNullsOrder();break;case 2:this.enterOuterAlt(e,2),this.state=5222,this.optionalCollate(),this.state=5223,this.anyName(),this.state=5224,this.relOptions(),this.state=5225,this.optionalAscOrDesc(),this.state=5226,this.optionalNullsOrder()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}indexElement(){let e=new hR(this.context,this.state);this.enterRule(e,540,t.RULE_indexElement);try{switch(this.state=5241,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,274,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5230,this.columnId(),this.state=5231,this.indexElemOptions();break;case 2:this.enterOuterAlt(e,2),this.state=5233,this.functionExpressionWindowless(),this.state=5234,this.indexElemOptions();break;case 3:this.enterOuterAlt(e,3),this.state=5236,this.match(t.OPEN_PAREN),this.state=5237,this.expression1(),this.state=5238,this.match(t.CLOSE_PAREN),this.state=5239,this.indexElemOptions()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalInclude(){let e,s=new ER(this.context,this.state);this.enterRule(s,542,t.RULE_optionalInclude);try{switch(this.state=5256,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.INCLUDE:for(this.enterOuterAlt(s,1),this.state=5243,this.match(t.INCLUDE),this.state=5244,this.match(t.OPEN_PAREN),this.state=5245,this.indexElement(),this.state=5250,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5246,this.match(t.COMMA),this.state=5247,this.indexElement(),this.state=5252,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=5253,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.SEMI:case t.CREATE:case t.GRANT:case t.INTO:case t.WHERE:case t.WITH:case t.TABLESPACE:this.enterOuterAlt(s,2);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalCollate(){let e=new TR(this.context,this.state);this.enterRule(e,544,t.RULE_optionalCollate);try{switch(this.state=5261,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,277,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5258,this.match(t.COLLATE),this.state=5259,this.anyName();break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalClass(){let e=new oR(this.context,this.state);this.enterRule(e,546,t.RULE_optionalClass);try{switch(this.state=5265,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,278,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5263,this.anyName();break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalAscOrDesc(){let e=new RR(this.context,this.state);this.enterRule(e,548,t.RULE_optionalAscOrDesc);try{switch(this.state=5270,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ASC:this.enterOuterAlt(e,1),this.state=5267,this.match(t.ASC);break;case t.DESC:this.enterOuterAlt(e,2),this.state=5268,this.match(t.DESC);break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.CREATE:case t.FETCH:case t.FOR:case t.GRANT:case t.INTO:case t.LIMIT:case t.OFFSET:case t.ON:case t.RETURNING:case t.WITH:case t.NULLS_P:case t.RANGE:case t.ROWS:case t.GROUPS:case t.LOOP:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalNullsOrder(){let e=new AR(this.context,this.state);this.enterRule(e,550,t.RULE_optionalNullsOrder);try{switch(this.state=5277,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,280,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5272,this.match(t.NULLS_P),this.state=5273,this.match(t.FIRST_P);break;case 2:this.enterOuterAlt(e,2),this.state=5274,this.match(t.NULLS_P),this.state=5275,this.match(t.LAST_P);break;case 3:this.enterOuterAlt(e,3)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createFunctionStatement(){let e,s=new SR(this.context,this.state);this.enterRule(s,552,t.RULE_createFunctionStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=5279,this.match(t.CREATE),this.state=5280,this.optionalOrReplace(),this.state=5281,e=this.tokenStream.LA(1),211===e||289===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5282,this.functionName(),this.state=5283,this.match(t.OPEN_PAREN),this.state=5285,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-33&-32)&&1<<e-33&286268421||68===e||92===e||!(e-101&-32)&&1<<e-101&4294967265||!(e-133&-32)&&1<<e-133&4294967295||!(e-165&-32)&&1<<e-165&4294967295||!(e-197&-32)&&1<<e-197&4294967295||!(e-229&-32)&&1<<e-229&4276092927||!(e-261&-32)&&1<<e-261&4294967295||!(e-293&-32)&&1<<e-293&4294967295||!(e-325&-32)&&1<<e-325&4294967295||!(e-357&-32)&&1<<e-357&4294967295||!(e-389&-32)&&1<<e-389&4294967295||!(e-421&-32)&&1<<e-421&4294967295||!(e-453&-32)&&1<<e-453&4294967293||!(e-485&-32)&&1<<e-485&4293656575||!(e-517&-32)&&1<<e-517&4294967291||!(e-549&-32)&&1<<e-549&4294967295||!(e-581&-32)&&1<<e-581&4294967295||!(e-613&-32)&&1<<e-613&301989887||661===e||662===e)&&(this.state=5284,this.functionArgumentsWithDefaultsList()),this.state=5287,this.match(t.CLOSE_PAREN),this.state=5297,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,283,this.context)))switch(this.state=5288,this.match(t.RETURNS),this.state=5295,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,282,this.context)){case 1:this.state=5289,this.functionReturn();break;case 2:this.state=5290,this.match(t.TABLE),this.state=5291,this.match(t.OPEN_PAREN),this.state=5292,this.tableFunctionColumnList(),this.state=5293,this.match(t.CLOSE_PAREN)}this.state=5299,this.createFunctionOptionList()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalOrReplace(){let e=new lR(this.context,this.state);this.enterRule(e,554,t.RULE_optionalOrReplace);try{switch(this.state=5304,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OR:this.enterOuterAlt(e,1),this.state=5301,this.match(t.OR),this.state=5302,this.match(t.REPLACE);break;case t.AGGREGATE:case t.FUNCTION:case t.LANGUAGE:case t.PROCEDURAL:case t.PROCEDURE:case t.RULE:case t.TRUSTED:case t.TRANSFORM:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionArgumentsList(){let e,s=new OR(this.context,this.state);this.enterRule(s,556,t.RULE_functionArgumentsList);try{for(this.enterOuterAlt(s,1),this.state=5306,this.functionArgument(),this.state=5311,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5307,this.match(t.COMMA),this.state=5308,this.functionArgument(),this.state=5313,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}functionWithArgumentTypesList(){let e,s=new IR(this.context,this.state);this.enterRule(s,558,t.RULE_functionWithArgumentTypesList);try{for(this.enterOuterAlt(s,1),this.state=5314,this.functionWithArgumentTypes(),this.state=5319,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5315,this.match(t.COMMA),this.state=5316,this.functionWithArgumentTypes(),this.state=5321,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}functionWithArgumentTypes(){let e,s=new uR(this.context,this.state);this.enterRule(s,560,t.RULE_functionWithArgumentTypes);try{switch(this.state=5334,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,289,this.context)){case 1:this.enterOuterAlt(s,1),this.state=5322,this.functionName(),this.state=5323,this.match(t.OPEN_PAREN),this.state=5325,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-33&-32)&&1<<e-33&286268421||68===e||92===e||!(e-101&-32)&&1<<e-101&4294967265||!(e-133&-32)&&1<<e-133&4294967295||!(e-165&-32)&&1<<e-165&4294967295||!(e-197&-32)&&1<<e-197&4294967295||!(e-229&-32)&&1<<e-229&4276092927||!(e-261&-32)&&1<<e-261&4294967295||!(e-293&-32)&&1<<e-293&4294967295||!(e-325&-32)&&1<<e-325&4294967295||!(e-357&-32)&&1<<e-357&4294967295||!(e-389&-32)&&1<<e-389&4294967295||!(e-421&-32)&&1<<e-421&4294967295||!(e-453&-32)&&1<<e-453&4294967293||!(e-485&-32)&&1<<e-485&4293656575||!(e-517&-32)&&1<<e-517&4294967291||!(e-549&-32)&&1<<e-549&4294967295||!(e-581&-32)&&1<<e-581&4294967295||!(e-613&-32)&&1<<e-613&301989887||661===e||662===e)&&(this.state=5324,this.functionArgumentsList()),this.state=5327,this.match(t.CLOSE_PAREN);break;case 2:this.enterOuterAlt(s,2),this.state=5329,this.typeFunctionNameKeyword();break;case 3:this.enterOuterAlt(s,3),this.state=5330,this.columnId(),this.state=5332,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(4===e||11===e)&&(this.state=5331,this.indirection())}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}functionArgumentsWithDefaultsList(){let e,s=new NR(this.context,this.state);this.enterRule(s,562,t.RULE_functionArgumentsWithDefaultsList);try{for(this.enterOuterAlt(s,1),this.state=5336,this.functionArgumentWithDefault(),this.state=5341,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5337,this.match(t.COMMA),this.state=5338,this.functionArgumentWithDefault(),this.state=5343,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}functionArgumentWithDefault(){let e,s=new LR(this.context,this.state);this.enterRule(s,564,t.RULE_functionArgumentWithDefault);try{this.enterOuterAlt(s,1),this.state=5344,this.functionArgument(),this.state=5347,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(10===e||53===e)&&(this.state=5345,e=this.tokenStream.LA(1),10===e||53===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5346,this.expression1())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}functionArgument(){let e=new CR(this.context,this.state);this.enterRule(e,566,t.RULE_functionArgument);try{switch(this.state=5362,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,294,this.context)){case 1:if(this.enterOuterAlt(e,1),1===(this.state=5349,this.argumentClass(),this.state=5351,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,292,this.context)))this.state=5350,this.parameterName();this.state=5353,this.functionType();break;case 2:if(this.enterOuterAlt(e,2),1===(this.state=5355,this.parameterName(),this.state=5357,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,293,this.context)))this.state=5356,this.argumentClass();this.state=5359,this.functionType();break;case 3:this.enterOuterAlt(e,3),this.state=5361,this.functionType()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}argumentClass(){let e=new _R(this.context,this.state);this.enterRule(e,568,t.RULE_argumentClass);try{switch(this.state=5371,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.IN_P:if(1===(this.enterOuterAlt(e,1),this.state=5364,this.match(t.IN_P),this.state=5366,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,295,this.context)))this.state=5365,this.match(t.OUT_P);break;case t.OUT_P:this.enterOuterAlt(e,2),this.state=5368,this.match(t.OUT_P);break;case t.INOUT:this.enterOuterAlt(e,3),this.state=5369,this.match(t.INOUT);break;case t.VARIADIC:this.enterOuterAlt(e,4),this.state=5370,this.match(t.VARIADIC);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}parameterName(){let e=new PR(this.context,this.state);this.enterRule(e,570,t.RULE_parameterName);try{switch(this.state=5377,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.COLUMNS:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=5373,this.typeFunctionName();break;case t.REPLACE:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.REVERSE:case t.LOG:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:this.enterOuterAlt(e,2),this.state=5374,this.builtinFunctionName();break;case t.LEFT:this.enterOuterAlt(e,3),this.state=5375,this.match(t.LEFT);break;case t.RIGHT:this.enterOuterAlt(e,4),this.state=5376,this.match(t.RIGHT);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionReturn(){let e=new MR(this.context,this.state);this.enterRule(e,572,t.RULE_functionReturn);try{this.enterOuterAlt(e,1),this.state=5379,this.functionType()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionType(){let e,s=new dR(this.context,this.state);this.enterRule(s,574,t.RULE_functionType);try{switch(this.state=5395,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,300,this.context)){case 1:this.enterOuterAlt(s,1),this.state=5381,this.typeName();break;case 2:switch(this.enterOuterAlt(s,2),this.state=5383,this.errorHandler.sync(this),e=this.tokenStream.LA(1),408===e&&(this.state=5382,this.match(t.SETOF)),this.state=5389,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.REPLACE:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.REVERSE:case t.LOG:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:this.state=5385,this.builtinFunctionName();break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.COLUMNS:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.state=5386,this.typeFunctionName();break;case t.LEFT:this.state=5387,this.match(t.LEFT);break;case t.RIGHT:this.state=5388,this.match(t.RIGHT);break;default:throw new Ei(this)}this.state=5391,this.attributes(),this.state=5392,this.match(t.PERCENT),this.state=5393,this.match(t.TYPE_P)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}aggregateArguments(){let e=new UR(this.context,this.state);this.enterRule(e,576,t.RULE_aggregateArguments);try{switch(this.enterOuterAlt(e,1),this.state=5397,this.match(t.OPEN_PAREN),this.state=5408,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,301,this.context)){case 1:this.state=5398,this.match(t.STAR);break;case 2:this.state=5399,this.aggregateArgumentsList();break;case 3:this.state=5400,this.match(t.ORDER),this.state=5401,this.match(t.BY),this.state=5402,this.aggregateArgumentsList();break;case 4:this.state=5403,this.aggregateArgumentsList(),this.state=5404,this.match(t.ORDER),this.state=5405,this.match(t.BY),this.state=5406,this.aggregateArgumentsList()}this.state=5410,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}aggregateArgumentsList(){let e,s=new mR(this.context,this.state);this.enterRule(s,578,t.RULE_aggregateArgumentsList);try{for(this.enterOuterAlt(s,1),this.state=5412,this.functionArgument(),this.state=5417,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5413,this.match(t.COMMA),this.state=5414,this.functionArgument(),this.state=5419,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}aggregateWithArgumentTypes(){let e=new DR(this.context,this.state);this.enterRule(e,580,t.RULE_aggregateWithArgumentTypes);try{this.enterOuterAlt(e,1),this.state=5420,this.functionName(),this.state=5421,this.aggregateArguments()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}aggregateWithArgumentTypesList(){let e,s=new pR(this.context,this.state);this.enterRule(s,582,t.RULE_aggregateWithArgumentTypesList);try{for(this.enterOuterAlt(s,1),this.state=5423,this.aggregateWithArgumentTypes(),this.state=5428,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5424,this.match(t.COMMA),this.state=5425,this.aggregateWithArgumentTypes(),this.state=5430,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createFunctionOptionList(){let e,s=new gR(this.context,this.state);this.enterRule(s,584,t.RULE_createFunctionOptionList);try{this.enterOuterAlt(s,1),this.state=5432,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=5431,this.createFunctionOptionItem(),this.state=5434,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(36===e||77===e||104===e||149===e||170===e||205===e||222===e||238===e||241===e||!(e-306&-32)&&1<<e-306&34619529||339===e||370===e||!(e-443&-32)&&1<<e-443&196609);this.ParseRoutineBody(s)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}commonFunctionOptionItem(){let e=new xR(this.context,this.state);this.enterRule(e,586,t.RULE_commonFunctionOptionItem);try{switch(this.state=5473,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,305,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5438,this.match(t.CALLED),this.state=5439,this.match(t.ON),this.state=5440,this.match(t.NULL_P),this.state=5441,this.match(t.INPUT_P);break;case 2:this.enterOuterAlt(e,2),this.state=5442,this.match(t.RETURNS),this.state=5443,this.match(t.NULL_P),this.state=5444,this.match(t.ON),this.state=5445,this.match(t.NULL_P),this.state=5446,this.match(t.INPUT_P);break;case 3:this.enterOuterAlt(e,3),this.state=5447,this.match(t.STRICT_P);break;case 4:this.enterOuterAlt(e,4),this.state=5448,this.match(t.IMMUTABLE);break;case 5:this.enterOuterAlt(e,5),this.state=5449,this.match(t.STABLE);break;case 6:this.enterOuterAlt(e,6),this.state=5450,this.match(t.VOLATILE);break;case 7:this.enterOuterAlt(e,7),this.state=5451,this.match(t.EXTERNAL),this.state=5452,this.match(t.SECURITY),this.state=5453,this.match(t.DEFINER);break;case 8:this.enterOuterAlt(e,8),this.state=5454,this.match(t.EXTERNAL),this.state=5455,this.match(t.SECURITY),this.state=5456,this.match(t.INVOKER);break;case 9:this.enterOuterAlt(e,9),this.state=5457,this.match(t.SECURITY),this.state=5458,this.match(t.DEFINER);break;case 10:this.enterOuterAlt(e,10),this.state=5459,this.match(t.SECURITY),this.state=5460,this.match(t.INVOKER);break;case 11:this.enterOuterAlt(e,11),this.state=5461,this.match(t.LEAKPROOF);break;case 12:this.enterOuterAlt(e,12),this.state=5462,this.match(t.NOT),this.state=5463,this.match(t.LEAKPROOF);break;case 13:this.enterOuterAlt(e,13),this.state=5464,this.match(t.COST),this.state=5465,this.numericOnly();break;case 14:this.enterOuterAlt(e,14),this.state=5466,this.match(t.ROWS),this.state=5467,this.numericOnly();break;case 15:this.enterOuterAlt(e,15),this.state=5468,this.match(t.SUPPORT),this.state=5469,this.anyName();break;case 16:this.enterOuterAlt(e,16),this.state=5470,this.functionSetResetClause();break;case 17:this.enterOuterAlt(e,17),this.state=5471,this.match(t.PARALLEL),this.state=5472,this.columnId()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createFunctionOptionItem(){let e=new kR(this.context,this.state);this.enterRule(e,588,t.RULE_createFunctionOptionItem);try{switch(this.state=5483,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AS:this.enterOuterAlt(e,1),this.state=5475,this.match(t.AS),this.state=5476,this.functionAs();break;case t.LANGUAGE:this.enterOuterAlt(e,2),this.state=5477,this.match(t.LANGUAGE),this.state=5478,this.nonReservedWordOrSconst();break;case t.TRANSFORM:this.enterOuterAlt(e,3),this.state=5479,this.match(t.TRANSFORM),this.state=5480,this.transformTypeList();break;case t.WINDOW:this.enterOuterAlt(e,4),this.state=5481,this.match(t.WINDOW);break;case t.NOT:case t.CALLED:case t.COST:case t.EXTERNAL:case t.IMMUTABLE:case t.LEAKPROOF:case t.RESET:case t.RETURNS:case t.ROWS:case t.SECURITY:case t.SET:case t.STABLE:case t.STRICT_P:case t.VOLATILE:case t.SUPPORT:case t.PARALLEL:this.enterOuterAlt(e,5),this.state=5482,this.commonFunctionOptionItem();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionAs(){let e=new HR(this.context,this.state);this.enterRule(e,590,t.RULE_functionAs);try{switch(this.state=5490,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,307,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5485,e._def=this.sconst();break;case 2:this.enterOuterAlt(e,2),this.state=5486,this.sconst(),this.state=5487,this.match(t.COMMA),this.state=5488,this.sconst()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}transformTypeList(){let e,s=new GR(this.context,this.state);this.enterRule(s,592,t.RULE_transformTypeList);try{for(this.enterOuterAlt(s,1),this.state=5492,this.match(t.FOR),this.state=5493,this.match(t.TYPE_P),this.state=5494,this.typeName(),this.state=5501,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5495,this.match(t.COMMA),this.state=5496,this.match(t.FOR),this.state=5497,this.match(t.TYPE_P),this.state=5498,this.typeName(),this.state=5503,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalDefinition(){let e=new FR(this.context,this.state);this.enterRule(e,594,t.RULE_optionalDefinition);try{switch(this.state=5507,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WITH:this.enterOuterAlt(e,1),this.state=5504,this.match(t.WITH),this.state=5505,this.definition();break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.CHECK:case t.COLLATE:case t.CONSTRAINT:case t.DEFAULT:case t.DEFERRABLE:case t.INITIALLY:case t.INTO:case t.NOT:case t.NULL_P:case t.PRIMARY:case t.REFERENCES:case t.UNIQUE:case t.USING:case t.WHERE:case t.NO:case t.GENERATED:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableFunctionColumn(){let e=new vR(this.context,this.state);this.enterRule(e,596,t.RULE_tableFunctionColumn);try{this.enterOuterAlt(e,1),this.state=5509,this.parameterName(),this.state=5510,this.functionType()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableFunctionColumnList(){let e,s=new BR(this.context,this.state);this.enterRule(s,598,t.RULE_tableFunctionColumnList);try{for(this.enterOuterAlt(s,1),this.state=5512,this.tableFunctionColumn(),this.state=5517,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5513,this.match(t.COMMA),this.state=5514,this.tableFunctionColumn(),this.state=5519,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterFunctionStatement(){let e,s=new yR(this.context,this.state);this.enterRule(s,600,t.RULE_alterFunctionStatement);try{this.enterOuterAlt(s,1),this.state=5520,this.match(t.ALTER),this.state=5521,e=this.tokenStream.LA(1),211===e||289===e||442===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5522,this.functionWithArgumentTypes(),this.state=5524,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=5523,this.commonFunctionOptionItem(),this.state=5526,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(77===e||149===e||170===e||205===e||222===e||241===e||!(e-306&-32)&&1<<e-306&34619529||339===e||370===e||459===e||460===e);this.state=5529,this.errorHandler.sync(this),e=this.tokenStream.LA(1),308===e&&(this.state=5528,this.match(t.RESTRICT))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}removeFunctionStatement(){let e=new fR(this.context,this.state);this.enterRule(e,602,t.RULE_removeFunctionStatement);try{switch(this.state=5567,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,313,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5531,this.match(t.DROP),this.state=5532,this.match(t.FUNCTION),this.state=5533,this.functionWithArgumentTypesList(),this.state=5534,this.optionalDropBehavior();break;case 2:this.enterOuterAlt(e,2),this.state=5536,this.match(t.DROP),this.state=5537,this.match(t.FUNCTION),this.state=5538,this.match(t.IF_P),this.state=5539,this.match(t.EXISTS),this.state=5540,this.functionWithArgumentTypesList(),this.state=5541,this.optionalDropBehavior();break;case 3:this.enterOuterAlt(e,3),this.state=5543,this.match(t.DROP),this.state=5544,this.match(t.PROCEDURE),this.state=5545,this.functionWithArgumentTypesList(),this.state=5546,this.optionalDropBehavior();break;case 4:this.enterOuterAlt(e,4),this.state=5548,this.match(t.DROP),this.state=5549,this.match(t.PROCEDURE),this.state=5550,this.match(t.IF_P),this.state=5551,this.match(t.EXISTS),this.state=5552,this.functionWithArgumentTypesList(),this.state=5553,this.optionalDropBehavior();break;case 5:this.enterOuterAlt(e,5),this.state=5555,this.match(t.DROP),this.state=5556,this.match(t.ROUTINE),this.state=5557,this.functionWithArgumentTypesList(),this.state=5558,this.optionalDropBehavior();break;case 6:this.enterOuterAlt(e,6),this.state=5560,this.match(t.DROP),this.state=5561,this.match(t.ROUTINE),this.state=5562,this.match(t.IF_P),this.state=5563,this.match(t.EXISTS),this.state=5564,this.functionWithArgumentTypesList(),this.state=5565,this.optionalDropBehavior()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}removeAggregateStatement(){let e=new YR(this.context,this.state);this.enterRule(e,604,t.RULE_removeAggregateStatement);try{switch(this.state=5581,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,314,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5569,this.match(t.DROP),this.state=5570,this.match(t.AGGREGATE),this.state=5571,this.aggregateWithArgumentTypesList(),this.state=5572,this.optionalDropBehavior();break;case 2:this.enterOuterAlt(e,2),this.state=5574,this.match(t.DROP),this.state=5575,this.match(t.AGGREGATE),this.state=5576,this.match(t.IF_P),this.state=5577,this.match(t.EXISTS),this.state=5578,this.aggregateWithArgumentTypesList(),this.state=5579,this.optionalDropBehavior()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}removeOperatorStatement(){let e=new wR(this.context,this.state);this.enterRule(e,606,t.RULE_removeOperatorStatement);try{switch(this.state=5595,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,315,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5583,this.match(t.DROP),this.state=5584,this.match(t.OPERATOR),this.state=5585,this.operatorWithArgumentTypesList(),this.state=5586,this.optionalDropBehavior();break;case 2:this.enterOuterAlt(e,2),this.state=5588,this.match(t.DROP),this.state=5589,this.match(t.OPERATOR),this.state=5590,this.match(t.IF_P),this.state=5591,this.match(t.EXISTS),this.state=5592,this.operatorWithArgumentTypesList(),this.state=5593,this.optionalDropBehavior()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}operatorArgumentTypes(){let e=new bR(this.context,this.state);this.enterRule(e,608,t.RULE_operatorArgumentTypes);try{switch(this.state=5619,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,316,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5597,this.match(t.OPEN_PAREN),this.state=5598,this.typeName(),this.state=5599,this.match(t.CLOSE_PAREN);break;case 2:this.enterOuterAlt(e,2),this.state=5601,this.match(t.OPEN_PAREN),this.state=5602,this.typeName(),this.state=5603,this.match(t.COMMA),this.state=5604,this.typeName(),this.state=5605,this.match(t.CLOSE_PAREN);break;case 3:this.enterOuterAlt(e,3),this.state=5607,this.match(t.OPEN_PAREN),this.state=5608,this.match(t.NONE),this.state=5609,this.match(t.COMMA),this.state=5610,this.typeName(),this.state=5611,this.match(t.CLOSE_PAREN);break;case 4:this.enterOuterAlt(e,4),this.state=5613,this.match(t.OPEN_PAREN),this.state=5614,this.typeName(),this.state=5615,this.match(t.COMMA),this.state=5616,this.match(t.NONE),this.state=5617,this.match(t.CLOSE_PAREN)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}anyOperator(){let e,s=new WR(this.context,this.state);this.enterRule(s,610,t.RULE_anyOperator);try{for(this.enterOuterAlt(s,1),this.state=5626,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(e-33&-32)&&1<<e-33&286268421||!(e-92&-32)&&1<<e-92&2298478593||!(e-124&-32)&&1<<e-124&4294967269||!(e-156&-32)&&1<<e-156&4294967295||!(e-188&-32)&&1<<e-188&4294967295||!(e-220&-32)&&1<<e-220&3221225471||!(e-252&-32)&&1<<e-252&4294967293||!(e-284&-32)&&1<<e-284&4294967295||!(e-316&-32)&&1<<e-316&4294967295||!(e-348&-32)&&1<<e-348&4294967295||!(e-380&-32)&&1<<e-380&4294967295||!(e-412&-32)&&1<<e-412&4294967295||!(e-444&-32)&&1<<e-444&4026530815||!(e-476&-32)&&1<<e-476&3623878655||!(e-508&-32)&&1<<e-508&4294965247||!(e-540&-32)&&1<<e-540&4294967295||!(e-572&-32)&&1<<e-572&4294967295||!(e-604&-32)&&1<<e-604&4294967295||!(e-636&-32)&&1<<e-636&100663331;)this.state=5621,this.columnId(),this.state=5622,this.match(t.DOT),this.state=5628,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=5629,this.allOperator()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}operatorWithArgumentTypesList(){let e,s=new VR(this.context,this.state);this.enterRule(s,612,t.RULE_operatorWithArgumentTypesList);try{for(this.enterOuterAlt(s,1),this.state=5631,this.operatorWithArgumentTypes(),this.state=5636,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5632,this.match(t.COMMA),this.state=5633,this.operatorWithArgumentTypes(),this.state=5638,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}operatorWithArgumentTypes(){let e=new XR(this.context,this.state);this.enterRule(e,614,t.RULE_operatorWithArgumentTypes);try{this.enterOuterAlt(e,1),this.state=5639,this.anyOperator(),this.state=5640,this.operatorArgumentTypes()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}doStatement(){let e=new KR(this.context,this.state);this.enterRule(e,616,t.RULE_doStatement);try{this.enterOuterAlt(e,1),this.state=5642,this.match(t.DO),this.state=5643,this.doStatementOptionsList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}doStatementOptionsList(){let e,s=new QR(this.context,this.state);this.enterRule(s,618,t.RULE_doStatementOptionsList);try{this.enterOuterAlt(s,1),this.state=5646,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=5645,this.doStatementOptionItem(),this.state=5648,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(238===e||!(e-645&-32)&&1<<e-645&67108885)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}doStatementOptionItem(){let e=new JR(this.context,this.state);this.enterRule(e,620,t.RULE_doStatementOptionItem);try{switch(this.state=5653,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=5650,this.sconst();break;case t.LANGUAGE:this.enterOuterAlt(e,2),this.state=5651,this.match(t.LANGUAGE),this.state=5652,this.nonReservedWordOrSconst();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createCastStatement(){let e=new ZR(this.context,this.state);this.enterRule(e,622,t.RULE_createCastStatement);try{switch(this.state=5689,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,321,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5655,this.match(t.CREATE),this.state=5656,this.match(t.CAST),this.state=5657,this.match(t.OPEN_PAREN),this.state=5658,this.typeName(),this.state=5659,this.match(t.AS),this.state=5660,this.typeName(),this.state=5661,this.match(t.CLOSE_PAREN),this.state=5662,this.match(t.WITH),this.state=5663,this.match(t.FUNCTION),this.state=5664,this.functionWithArgumentTypes(),this.state=5665,this.castContext();break;case 2:this.enterOuterAlt(e,2),this.state=5667,this.match(t.CREATE),this.state=5668,this.match(t.CAST),this.state=5669,this.match(t.OPEN_PAREN),this.state=5670,this.typeName(),this.state=5671,this.match(t.AS),this.state=5672,this.typeName(),this.state=5673,this.match(t.CLOSE_PAREN),this.state=5674,this.match(t.WITHOUT),this.state=5675,this.match(t.FUNCTION),this.state=5676,this.castContext();break;case 3:this.enterOuterAlt(e,3),this.state=5678,this.match(t.CREATE),this.state=5679,this.match(t.CAST),this.state=5680,this.match(t.OPEN_PAREN),this.state=5681,this.typeName(),this.state=5682,this.match(t.AS),this.state=5683,this.typeName(),this.state=5684,this.match(t.CLOSE_PAREN),this.state=5685,this.match(t.WITH),this.state=5686,this.match(t.INOUT),this.state=5687,this.castContext()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}castContext(){let e=new qR(this.context,this.state);this.enterRule(e,624,t.RULE_castContext);try{switch(this.state=5696,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,322,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5691,this.match(t.AS),this.state=5692,this.match(t.IMPLICIT_P);break;case 2:this.enterOuterAlt(e,2),this.state=5693,this.match(t.AS),this.state=5694,this.match(t.ASSIGNMENT);break;case 3:this.enterOuterAlt(e,3)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropCastStatement(){let e=new jR(this.context,this.state);this.enterRule(e,626,t.RULE_dropCastStatement);try{this.enterOuterAlt(e,1),this.state=5698,this.match(t.DROP),this.state=5699,this.match(t.CAST),this.state=5700,this.optionalIfExists(),this.state=5701,this.match(t.OPEN_PAREN),this.state=5702,this.typeName(),this.state=5703,this.match(t.AS),this.state=5704,this.typeName(),this.state=5705,this.match(t.CLOSE_PAREN),this.state=5706,this.optionalDropBehavior()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalIfExists(){let e=new zR(this.context,this.state);this.enterRule(e,628,t.RULE_optionalIfExists);try{switch(this.state=5711,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.IF_P:this.enterOuterAlt(e,1),this.state=5708,this.match(t.IF_P),this.state=5709,this.match(t.EXISTS);break;case t.OPEN_PAREN:case t.FOR:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createTransformStatement(){let e=new $R(this.context,this.state);this.enterRule(e,630,t.RULE_createTransformStatement);try{this.enterOuterAlt(e,1),this.state=5713,this.match(t.CREATE),this.state=5714,this.optionalOrReplace(),this.state=5715,this.match(t.TRANSFORM),this.state=5716,this.match(t.FOR),this.state=5717,this.typeName(),this.state=5718,this.match(t.LANGUAGE),this.state=5719,this.name(),this.state=5720,this.match(t.OPEN_PAREN),this.state=5721,this.transformElementList(),this.state=5722,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}transformElementList(){let e=new tA(this.context,this.state);this.enterRule(e,632,t.RULE_transformElementList);try{switch(this.state=5758,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,324,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5724,this.match(t.FROM),this.state=5725,this.match(t.SQL_P),this.state=5726,this.match(t.WITH),this.state=5727,this.match(t.FUNCTION),this.state=5728,this.functionWithArgumentTypes(),this.state=5729,this.match(t.COMMA),this.state=5730,this.match(t.TO),this.state=5731,this.match(t.SQL_P),this.state=5732,this.match(t.WITH),this.state=5733,this.match(t.FUNCTION),this.state=5734,this.functionWithArgumentTypes();break;case 2:this.enterOuterAlt(e,2),this.state=5736,this.match(t.TO),this.state=5737,this.match(t.SQL_P),this.state=5738,this.match(t.WITH),this.state=5739,this.match(t.FUNCTION),this.state=5740,this.functionWithArgumentTypes(),this.state=5741,this.match(t.COMMA),this.state=5742,this.match(t.FROM),this.state=5743,this.match(t.SQL_P),this.state=5744,this.match(t.WITH),this.state=5745,this.match(t.FUNCTION),this.state=5746,this.functionWithArgumentTypes();break;case 3:this.enterOuterAlt(e,3),this.state=5748,this.match(t.FROM),this.state=5749,this.match(t.SQL_P),this.state=5750,this.match(t.WITH),this.state=5751,this.match(t.FUNCTION),this.state=5752,this.functionWithArgumentTypes();break;case 4:this.enterOuterAlt(e,4),this.state=5753,this.match(t.TO),this.state=5754,this.match(t.SQL_P),this.state=5755,this.match(t.WITH),this.state=5756,this.match(t.FUNCTION),this.state=5757,this.functionWithArgumentTypes()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropTransformStatement(){let e=new eA(this.context,this.state);this.enterRule(e,634,t.RULE_dropTransformStatement);try{this.enterOuterAlt(e,1),this.state=5760,this.match(t.DROP),this.state=5761,this.match(t.TRANSFORM),this.state=5762,this.optionalIfExists(),this.state=5763,this.match(t.FOR),this.state=5764,this.typeName(),this.state=5765,this.match(t.LANGUAGE),this.state=5766,this.name(),this.state=5767,this.optionalDropBehavior()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}reindexStatement(){let e,s=new sA(this.context,this.state);this.enterRule(s,636,t.RULE_reindexStatement);try{switch(this.state=5830,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,335,this.context)){case 1:this.enterOuterAlt(s,1),this.state=5769,this.match(t.REINDEX),this.state=5774,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=5770,this.match(t.OPEN_PAREN),this.state=5771,this.reindexOptionList(),this.state=5772,this.match(t.CLOSE_PAREN)),this.state=5776,this.reindexTargetType(),this.state=5778,this.errorHandler.sync(this),e=this.tokenStream.LA(1),109===e&&(this.state=5777,this.match(t.CONCURRENTLY)),this.state=5780,this.qualifiedName();break;case 2:this.enterOuterAlt(s,2),this.state=5782,this.match(t.REINDEX),this.state=5787,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=5783,this.match(t.OPEN_PAREN),this.state=5784,this.reindexOptionList(),this.state=5785,this.match(t.CLOSE_PAREN)),this.state=5789,this.match(t.DATABASE),this.state=5791,this.errorHandler.sync(this),e=this.tokenStream.LA(1),109===e&&(this.state=5790,this.match(t.CONCURRENTLY)),this.state=5793,this.databaseName();break;case 3:this.enterOuterAlt(s,3),this.state=5794,this.match(t.REINDEX),this.state=5799,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=5795,this.match(t.OPEN_PAREN),this.state=5796,this.reindexOptionList(),this.state=5797,this.match(t.CLOSE_PAREN)),this.state=5801,this.match(t.SCHEMA),this.state=5803,this.errorHandler.sync(this),e=this.tokenStream.LA(1),109===e&&(this.state=5802,this.match(t.CONCURRENTLY)),this.state=5805,this.schemaName();break;case 4:this.enterOuterAlt(s,4),this.state=5806,this.match(t.REINDEX),this.state=5811,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=5807,this.match(t.OPEN_PAREN),this.state=5808,this.reindexOptionList(),this.state=5809,this.match(t.CLOSE_PAREN)),this.state=5813,this.match(t.INDEX),this.state=5815,this.errorHandler.sync(this),e=this.tokenStream.LA(1),109===e&&(this.state=5814,this.match(t.CONCURRENTLY)),this.state=5817,this.indexName();break;case 5:this.enterOuterAlt(s,5),this.state=5818,this.match(t.REINDEX),this.state=5823,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=5819,this.match(t.OPEN_PAREN),this.state=5820,this.reindexOptionList(),this.state=5821,this.match(t.CLOSE_PAREN)),this.state=5825,this.match(t.SYSTEM_P),this.state=5827,this.errorHandler.sync(this),e=this.tokenStream.LA(1),109===e&&(this.state=5826,this.match(t.CONCURRENTLY)),this.state=5829,this.name()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}reindexTargetType(){let e,s=new aA(this.context,this.state);this.enterRule(s,638,t.RULE_reindexTargetType);try{this.enterOuterAlt(s,1),this.state=5832,e=this.tokenStream.LA(1),92===e||342===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}reindexOptionList(){let e,s=new rA(this.context,this.state);this.enterRule(s,640,t.RULE_reindexOptionList);try{for(this.enterOuterAlt(s,1),this.state=5834,this.reindexOptionElement(),this.state=5839,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=5835,this.match(t.COMMA),this.state=5836,this.reindexOptionElement(),this.state=5841,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}reindexOptionElement(){let e,s=new iA(this.context,this.state);this.enterRule(s,642,t.RULE_reindexOptionElement);try{this.enterOuterAlt(s,1),this.state=5842,e=this.tokenStream.LA(1),109===e||128===e||344===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterTablespaceStatement(){let e=new cA(this.context,this.state);this.enterRule(e,644,t.RULE_alterTablespaceStatement);try{switch(this.state=5856,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,337,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5844,this.match(t.ALTER),this.state=5845,this.match(t.TABLESPACE),this.state=5846,this.name(),this.state=5847,this.match(t.SET),this.state=5848,this.relOptions();break;case 2:this.enterOuterAlt(e,2),this.state=5850,this.match(t.ALTER),this.state=5851,this.match(t.TABLESPACE),this.state=5852,this.name(),this.state=5853,this.match(t.RESET),this.state=5854,this.relOptions()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}renameStatement(){let e=new nA(this.context,this.state);this.enterRule(e,646,t.RULE_renameStatement);try{switch(this.state=6295,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,341,this.context)){case 1:this.enterOuterAlt(e,1),this.state=5858,this.match(t.ALTER),this.state=5859,this.match(t.AGGREGATE),this.state=5860,this.aggregateWithArgumentTypes(),this.state=5861,this.match(t.RENAME),this.state=5862,this.match(t.TO),this.state=5863,this.name();break;case 2:this.enterOuterAlt(e,2),this.state=5865,this.match(t.ALTER),this.state=5866,this.match(t.COLLATION),this.state=5867,this.anyName(),this.state=5868,this.match(t.RENAME),this.state=5869,this.match(t.TO),this.state=5870,this.name();break;case 3:this.enterOuterAlt(e,3),this.state=5872,this.match(t.ALTER),this.state=5873,this.match(t.CONVERSION_P),this.state=5874,this.anyName(),this.state=5875,this.match(t.RENAME),this.state=5876,this.match(t.TO),this.state=5877,this.name();break;case 4:this.enterOuterAlt(e,4),this.state=5879,this.match(t.ALTER),this.state=5880,this.match(t.DATABASE),this.state=5881,this.databaseName(),this.state=5882,this.match(t.RENAME),this.state=5883,this.match(t.TO),this.state=5884,this.name();break;case 5:this.enterOuterAlt(e,5),this.state=5886,this.match(t.ALTER),this.state=5887,this.match(t.DOMAIN_P),this.state=5888,this.anyName(),this.state=5889,this.match(t.RENAME),this.state=5890,this.match(t.TO),this.state=5891,this.name();break;case 6:this.enterOuterAlt(e,6),this.state=5893,this.match(t.ALTER),this.state=5894,this.match(t.DOMAIN_P),this.state=5895,this.anyName(),this.state=5896,this.match(t.RENAME),this.state=5897,this.match(t.CONSTRAINT),this.state=5898,this.constraintName(),this.state=5899,this.match(t.TO),this.state=5900,this.name();break;case 7:this.enterOuterAlt(e,7),this.state=5902,this.match(t.ALTER),this.state=5903,this.match(t.FOREIGN),this.state=5904,this.match(t.DATA_P),this.state=5905,this.match(t.WRAPPER),this.state=5906,this.name(),this.state=5907,this.match(t.RENAME),this.state=5908,this.match(t.TO),this.state=5909,this.name();break;case 8:this.enterOuterAlt(e,8),this.state=5911,this.match(t.ALTER),this.state=5912,this.match(t.FUNCTION),this.state=5913,this.functionWithArgumentTypes(),this.state=5914,this.match(t.RENAME),this.state=5915,this.match(t.TO),this.state=5916,this.name();break;case 9:this.enterOuterAlt(e,9),this.state=5918,this.match(t.ALTER),this.state=5919,this.optionalProcedural(),this.state=5920,this.match(t.LANGUAGE),this.state=5921,this.name(),this.state=5922,this.match(t.RENAME),this.state=5923,this.match(t.TO),this.state=5924,this.name();break;case 10:this.enterOuterAlt(e,10),this.state=5926,this.match(t.ALTER),this.state=5927,this.match(t.OPERATOR),this.state=5928,this.match(t.CLASS),this.state=5929,this.anyName(),this.state=5930,this.match(t.USING),this.state=5931,this.name(),this.state=5932,this.match(t.RENAME),this.state=5933,this.match(t.TO),this.state=5934,this.name();break;case 11:this.enterOuterAlt(e,11),this.state=5936,this.match(t.ALTER),this.state=5937,this.match(t.OPERATOR),this.state=5938,this.match(t.FAMILY),this.state=5939,this.anyName(),this.state=5940,this.match(t.USING),this.state=5941,this.name(),this.state=5942,this.match(t.RENAME),this.state=5943,this.match(t.TO),this.state=5944,this.name();break;case 12:this.enterOuterAlt(e,12),this.state=5946,this.match(t.ALTER),this.state=5947,this.match(t.POLICY),this.state=5948,this.name(),this.state=5949,this.match(t.ON),this.state=5950,this.qualifiedName(),this.state=5951,this.match(t.RENAME),this.state=5952,this.match(t.TO),this.state=5953,this.name();break;case 13:this.enterOuterAlt(e,13),this.state=5955,this.match(t.ALTER),this.state=5956,this.match(t.POLICY),this.state=5957,this.match(t.IF_P),this.state=5958,this.match(t.EXISTS),this.state=5959,this.name(),this.state=5960,this.match(t.ON),this.state=5961,this.qualifiedName(),this.state=5962,this.match(t.RENAME),this.state=5963,this.match(t.TO),this.state=5964,this.name();break;case 14:this.enterOuterAlt(e,14),this.state=5966,this.match(t.ALTER),this.state=5967,this.match(t.PROCEDURE),this.state=5968,this.functionWithArgumentTypes(),this.state=5969,this.match(t.RENAME),this.state=5970,this.match(t.TO),this.state=5971,this.name();break;case 15:this.enterOuterAlt(e,15),this.state=5973,this.match(t.ALTER),this.state=5974,this.match(t.PUBLICATION),this.state=5975,this.name(),this.state=5976,this.match(t.RENAME),this.state=5977,this.match(t.TO),this.state=5978,this.name();break;case 16:this.enterOuterAlt(e,16),this.state=5980,this.match(t.ALTER),this.state=5981,this.match(t.ROUTINE),this.state=5982,this.functionWithArgumentTypes(),this.state=5983,this.match(t.RENAME),this.state=5984,this.match(t.TO),this.state=5985,this.name();break;case 17:this.enterOuterAlt(e,17),this.state=5987,this.match(t.ALTER),this.state=5988,this.match(t.SCHEMA),this.state=5989,this.schemaName(),this.state=5990,this.match(t.RENAME),this.state=5991,this.match(t.TO),this.state=5992,this.name();break;case 18:this.enterOuterAlt(e,18),this.state=5994,this.match(t.ALTER),this.state=5995,this.match(t.SERVER),this.state=5996,this.name(),this.state=5997,this.match(t.RENAME),this.state=5998,this.match(t.TO),this.state=5999,this.name();break;case 19:this.enterOuterAlt(e,19),this.state=6001,this.match(t.ALTER),this.state=6002,this.match(t.SUBSCRIPTION),this.state=6003,this.name(),this.state=6004,this.match(t.RENAME),this.state=6005,this.match(t.TO),this.state=6006,this.name();break;case 20:this.enterOuterAlt(e,20),this.state=6008,this.match(t.ALTER),this.state=6009,this.match(t.TABLE),this.state=6010,this.relationExpression(),this.state=6011,this.match(t.RENAME),this.state=6012,this.match(t.TO),this.state=6013,this.name();break;case 21:this.enterOuterAlt(e,21),this.state=6015,this.match(t.ALTER),this.state=6016,this.match(t.TABLE),this.state=6017,this.match(t.IF_P),this.state=6018,this.match(t.EXISTS),this.state=6019,this.relationExpression(),this.state=6020,this.match(t.RENAME),this.state=6021,this.match(t.TO),this.state=6022,this.name();break;case 22:if(this.enterOuterAlt(e,22),1===(this.state=6024,this.match(t.ALTER),this.state=6025,this.match(t.SEQUENCE),this.state=6028,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,338,this.context)))this.state=6026,this.match(t.IF_P),this.state=6027,this.match(t.EXISTS);this.state=6030,this.sequenceName(),this.state=6031,this.match(t.RENAME),this.state=6032,this.match(t.TO),this.state=6033,this.name();break;case 23:this.enterOuterAlt(e,23),this.state=6035,this.match(t.ALTER),this.state=6036,this.match(t.VIEW),this.state=6037,this.qualifiedName(),this.state=6038,this.match(t.RENAME),this.state=6039,this.match(t.TO),this.state=6040,this.name();break;case 24:this.enterOuterAlt(e,24),this.state=6042,this.match(t.ALTER),this.state=6043,this.match(t.VIEW),this.state=6044,this.match(t.IF_P),this.state=6045,this.match(t.EXISTS),this.state=6046,this.qualifiedName(),this.state=6047,this.match(t.RENAME),this.state=6048,this.match(t.TO),this.state=6049,this.name();break;case 25:this.enterOuterAlt(e,25),this.state=6051,this.match(t.ALTER),this.state=6052,this.match(t.MATERIALIZED),this.state=6053,this.match(t.VIEW),this.state=6054,this.qualifiedName(),this.state=6055,this.match(t.RENAME),this.state=6056,this.match(t.TO),this.state=6057,this.name();break;case 26:this.enterOuterAlt(e,26),this.state=6059,this.match(t.ALTER),this.state=6060,this.match(t.MATERIALIZED),this.state=6061,this.match(t.VIEW),this.state=6062,this.match(t.IF_P),this.state=6063,this.match(t.EXISTS),this.state=6064,this.qualifiedName(),this.state=6065,this.match(t.RENAME),this.state=6066,this.match(t.TO),this.state=6067,this.name();break;case 27:if(this.enterOuterAlt(e,27),1===(this.state=6069,this.match(t.ALTER),this.state=6070,this.match(t.INDEX),this.state=6073,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,339,this.context)))this.state=6071,this.match(t.IF_P),this.state=6072,this.match(t.EXISTS);this.state=6075,this.indexName(),this.state=6076,this.match(t.RENAME),this.state=6077,this.match(t.TO),this.state=6078,this.name();break;case 28:this.enterOuterAlt(e,28),this.state=6080,this.match(t.ALTER),this.state=6081,this.match(t.FOREIGN),this.state=6082,this.match(t.TABLE),this.state=6083,this.relationExpression(),this.state=6084,this.match(t.RENAME),this.state=6085,this.match(t.TO),this.state=6086,this.name();break;case 29:this.enterOuterAlt(e,29),this.state=6088,this.match(t.ALTER),this.state=6089,this.match(t.FOREIGN),this.state=6090,this.match(t.TABLE),this.state=6091,this.match(t.IF_P),this.state=6092,this.match(t.EXISTS),this.state=6093,this.relationExpression(),this.state=6094,this.match(t.RENAME),this.state=6095,this.match(t.TO),this.state=6096,this.name();break;case 30:this.enterOuterAlt(e,30),this.state=6098,this.match(t.ALTER),this.state=6099,this.match(t.TABLE),this.state=6100,this.relationExpression(),this.state=6101,this.match(t.RENAME),this.state=6102,this.optionalColumn(),this.state=6103,this.name(),this.state=6104,this.match(t.TO),this.state=6105,this.name();break;case 31:this.enterOuterAlt(e,31),this.state=6107,this.match(t.ALTER),this.state=6108,this.match(t.TABLE),this.state=6109,this.match(t.IF_P),this.state=6110,this.match(t.EXISTS),this.state=6111,this.relationExpression(),this.state=6112,this.match(t.RENAME),this.state=6113,this.optionalColumn(),this.state=6114,this.name(),this.state=6115,this.match(t.TO),this.state=6116,this.name();break;case 32:this.enterOuterAlt(e,32),this.state=6118,this.match(t.ALTER),this.state=6119,this.match(t.VIEW),this.state=6120,this.qualifiedName(),this.state=6121,this.match(t.RENAME),this.state=6122,this.optionalColumn(),this.state=6123,this.name(),this.state=6124,this.match(t.TO),this.state=6125,this.name();break;case 33:this.enterOuterAlt(e,33),this.state=6127,this.match(t.ALTER),this.state=6128,this.match(t.VIEW),this.state=6129,this.match(t.IF_P),this.state=6130,this.match(t.EXISTS),this.state=6131,this.qualifiedName(),this.state=6132,this.match(t.RENAME),this.state=6133,this.optionalColumn(),this.state=6134,this.name(),this.state=6135,this.match(t.TO),this.state=6136,this.name();break;case 34:this.enterOuterAlt(e,34),this.state=6138,this.match(t.ALTER),this.state=6139,this.match(t.MATERIALIZED),this.state=6140,this.match(t.VIEW),this.state=6141,this.qualifiedName(),this.state=6142,this.match(t.RENAME),this.state=6143,this.optionalColumn(),this.state=6144,this.name(),this.state=6145,this.match(t.TO),this.state=6146,this.name();break;case 35:this.enterOuterAlt(e,35),this.state=6148,this.match(t.ALTER),this.state=6149,this.match(t.MATERIALIZED),this.state=6150,this.match(t.VIEW),this.state=6151,this.match(t.IF_P),this.state=6152,this.match(t.EXISTS),this.state=6153,this.qualifiedName(),this.state=6154,this.match(t.RENAME),this.state=6155,this.optionalColumn(),this.state=6156,this.name(),this.state=6157,this.match(t.TO),this.state=6158,this.name();break;case 36:if(this.enterOuterAlt(e,36),1===(this.state=6160,this.match(t.ALTER),this.state=6161,this.match(t.TABLE),this.state=6164,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,340,this.context)))this.state=6162,this.match(t.IF_P),this.state=6163,this.match(t.EXISTS);this.state=6166,this.relationExpression(),this.state=6167,this.match(t.RENAME),this.state=6168,this.match(t.CONSTRAINT),this.state=6169,this.constraintName(),this.state=6170,this.match(t.TO),this.state=6171,this.name();break;case 37:this.enterOuterAlt(e,37),this.state=6173,this.match(t.ALTER),this.state=6174,this.match(t.FOREIGN),this.state=6175,this.match(t.TABLE),this.state=6176,this.relationExpression(),this.state=6177,this.match(t.RENAME),this.state=6178,this.optionalColumn(),this.state=6179,this.name(),this.state=6180,this.match(t.TO),this.state=6181,this.name();break;case 38:this.enterOuterAlt(e,38),this.state=6183,this.match(t.ALTER),this.state=6184,this.match(t.FOREIGN),this.state=6185,this.match(t.TABLE),this.state=6186,this.match(t.IF_P),this.state=6187,this.match(t.EXISTS),this.state=6188,this.relationExpression(),this.state=6189,this.match(t.RENAME),this.state=6190,this.optionalColumn(),this.state=6191,this.name(),this.state=6192,this.match(t.TO),this.state=6193,this.name();break;case 39:this.enterOuterAlt(e,39),this.state=6195,this.match(t.ALTER),this.state=6196,this.match(t.RULE),this.state=6197,this.name(),this.state=6198,this.match(t.ON),this.state=6199,this.qualifiedName(),this.state=6200,this.match(t.RENAME),this.state=6201,this.match(t.TO),this.state=6202,this.name();break;case 40:this.enterOuterAlt(e,40),this.state=6204,this.match(t.ALTER),this.state=6205,this.match(t.TRIGGER),this.state=6206,this.triggerName(),this.state=6207,this.match(t.ON),this.state=6208,this.qualifiedName(),this.state=6209,this.match(t.RENAME),this.state=6210,this.match(t.TO),this.state=6211,this.name();break;case 41:this.enterOuterAlt(e,41),this.state=6213,this.match(t.ALTER),this.state=6214,this.match(t.EVENT),this.state=6215,this.match(t.TRIGGER),this.state=6216,this.name(),this.state=6217,this.match(t.RENAME),this.state=6218,this.match(t.TO),this.state=6219,this.name();break;case 42:this.enterOuterAlt(e,42),this.state=6221,this.match(t.ALTER),this.state=6222,this.roleOrAliases(),this.state=6223,this.roleName(),this.state=6224,this.match(t.RENAME),this.state=6225,this.match(t.TO),this.state=6226,this.roleName();break;case 43:this.enterOuterAlt(e,43),this.state=6228,this.match(t.ALTER),this.state=6229,this.match(t.TABLESPACE),this.state=6230,this.name(),this.state=6231,this.match(t.RENAME),this.state=6232,this.match(t.TO),this.state=6233,this.name();break;case 44:this.enterOuterAlt(e,44),this.state=6235,this.match(t.ALTER),this.state=6236,this.match(t.STATISTICS),this.state=6237,this.anyName(),this.state=6238,this.match(t.RENAME),this.state=6239,this.match(t.TO),this.state=6240,this.name();break;case 45:this.enterOuterAlt(e,45),this.state=6242,this.match(t.ALTER),this.state=6243,this.match(t.TEXT_P),this.state=6244,this.match(t.SEARCH),this.state=6245,this.match(t.PARSER),this.state=6246,this.anyName(),this.state=6247,this.match(t.RENAME),this.state=6248,this.match(t.TO),this.state=6249,this.name();break;case 46:this.enterOuterAlt(e,46),this.state=6251,this.match(t.ALTER),this.state=6252,this.match(t.TEXT_P),this.state=6253,this.match(t.SEARCH),this.state=6254,this.match(t.DICTIONARY),this.state=6255,this.anyName(),this.state=6256,this.match(t.RENAME),this.state=6257,this.match(t.TO),this.state=6258,this.name();break;case 47:this.enterOuterAlt(e,47),this.state=6260,this.match(t.ALTER),this.state=6261,this.match(t.TEXT_P),this.state=6262,this.match(t.SEARCH),this.state=6263,this.match(t.TEMPLATE),this.state=6264,this.anyName(),this.state=6265,this.match(t.RENAME),this.state=6266,this.match(t.TO),this.state=6267,this.name();break;case 48:this.enterOuterAlt(e,48),this.state=6269,this.match(t.ALTER),this.state=6270,this.match(t.TEXT_P),this.state=6271,this.match(t.SEARCH),this.state=6272,this.match(t.CONFIGURATION),this.state=6273,this.anyName(),this.state=6274,this.match(t.RENAME),this.state=6275,this.match(t.TO),this.state=6276,this.name();break;case 49:this.enterOuterAlt(e,49),this.state=6278,this.match(t.ALTER),this.state=6279,this.match(t.TYPE_P),this.state=6280,this.anyName(),this.state=6281,this.match(t.RENAME),this.state=6282,this.match(t.TO),this.state=6283,this.name();break;case 50:this.enterOuterAlt(e,50),this.state=6285,this.match(t.ALTER),this.state=6286,this.match(t.TYPE_P),this.state=6287,this.anyName(),this.state=6288,this.match(t.RENAME),this.state=6289,this.match(t.ATTRIBUTE),this.state=6290,this.name(),this.state=6291,this.match(t.TO),this.state=6292,this.name(),this.state=6293,this.optionalDropBehavior()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalColumn(){let e=new hA(this.context,this.state);this.enterRule(e,648,t.RULE_optionalColumn);try{switch(this.state=6299,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,342,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6297,this.match(t.COLUMN);break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalSetData(){let e=new EA(this.context,this.state);this.enterRule(e,650,t.RULE_optionalSetData);try{switch(this.state=6304,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SET:this.enterOuterAlt(e,1),this.state=6301,this.match(t.SET),this.state=6302,this.match(t.DATA_P);break;case t.TYPE_P:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterObjectDependsStatement(){let e,s=new TA(this.context,this.state);this.enterRule(s,652,t.RULE_alterObjectDependsStatement);try{switch(this.state=6375,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,350,this.context)){case 1:this.enterOuterAlt(s,1),this.state=6306,this.match(t.ALTER),this.state=6307,this.match(t.FUNCTION),this.state=6308,this.functionWithArgumentTypes(),this.state=6310,this.errorHandler.sync(this),e=this.tokenStream.LA(1),262===e&&(this.state=6309,this.match(t.NO)),this.state=6312,this.match(t.DEPENDS),this.state=6313,this.match(t.ON),this.state=6314,this.match(t.EXTENSION),this.state=6315,this.name();break;case 2:this.enterOuterAlt(s,2),this.state=6317,this.match(t.ALTER),this.state=6318,this.match(t.PROCEDURE),this.state=6319,this.functionWithArgumentTypes(),this.state=6321,this.errorHandler.sync(this),e=this.tokenStream.LA(1),262===e&&(this.state=6320,this.match(t.NO)),this.state=6323,this.match(t.DEPENDS),this.state=6324,this.match(t.ON),this.state=6325,this.match(t.EXTENSION),this.state=6326,this.name();break;case 3:this.enterOuterAlt(s,3),this.state=6328,this.match(t.ALTER),this.state=6329,this.match(t.ROUTINE),this.state=6330,this.functionWithArgumentTypes(),this.state=6332,this.errorHandler.sync(this),e=this.tokenStream.LA(1),262===e&&(this.state=6331,this.match(t.NO)),this.state=6334,this.match(t.DEPENDS),this.state=6335,this.match(t.ON),this.state=6336,this.match(t.EXTENSION),this.state=6337,this.name();break;case 4:this.enterOuterAlt(s,4),this.state=6339,this.match(t.ALTER),this.state=6340,this.match(t.TRIGGER),this.state=6341,this.triggerName(),this.state=6342,this.match(t.ON),this.state=6343,this.qualifiedName(),this.state=6345,this.errorHandler.sync(this),e=this.tokenStream.LA(1),262===e&&(this.state=6344,this.match(t.NO)),this.state=6347,this.match(t.DEPENDS),this.state=6348,this.match(t.ON),this.state=6349,this.match(t.EXTENSION),this.state=6350,this.name();break;case 5:this.enterOuterAlt(s,5),this.state=6352,this.match(t.ALTER),this.state=6353,this.match(t.MATERIALIZED),this.state=6354,this.match(t.VIEW),this.state=6355,this.qualifiedName(),this.state=6357,this.errorHandler.sync(this),e=this.tokenStream.LA(1),262===e&&(this.state=6356,this.match(t.NO)),this.state=6359,this.match(t.DEPENDS),this.state=6360,this.match(t.ON),this.state=6361,this.match(t.EXTENSION),this.state=6362,this.name();break;case 6:this.enterOuterAlt(s,6),this.state=6364,this.match(t.ALTER),this.state=6365,this.match(t.INDEX),this.state=6366,this.indexName(),this.state=6368,this.errorHandler.sync(this),e=this.tokenStream.LA(1),262===e&&(this.state=6367,this.match(t.NO)),this.state=6370,this.match(t.DEPENDS),this.state=6371,this.match(t.ON),this.state=6372,this.match(t.EXTENSION),this.state=6373,this.name()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterObjectSchemaStatement(){let e=new oA(this.context,this.state);this.enterRule(e,654,t.RULE_alterObjectSchemaStatement);try{switch(this.state=6589,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,352,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6377,this.match(t.ALTER),this.state=6378,this.match(t.AGGREGATE),this.state=6379,this.aggregateWithArgumentTypes(),this.state=6380,this.match(t.SET),this.state=6381,this.match(t.SCHEMA),this.state=6382,this.schemaName();break;case 2:this.enterOuterAlt(e,2),this.state=6384,this.match(t.ALTER),this.state=6385,this.match(t.COLLATION),this.state=6386,this.anyName(),this.state=6387,this.match(t.SET),this.state=6388,this.match(t.SCHEMA),this.state=6389,this.schemaName();break;case 3:this.enterOuterAlt(e,3),this.state=6391,this.match(t.ALTER),this.state=6392,this.match(t.CONVERSION_P),this.state=6393,this.anyName(),this.state=6394,this.match(t.SET),this.state=6395,this.match(t.SCHEMA),this.state=6396,this.schemaName();break;case 4:this.enterOuterAlt(e,4),this.state=6398,this.match(t.ALTER),this.state=6399,this.match(t.DOMAIN_P),this.state=6400,this.anyName(),this.state=6401,this.match(t.SET),this.state=6402,this.match(t.SCHEMA),this.state=6403,this.schemaName();break;case 5:this.enterOuterAlt(e,5),this.state=6405,this.match(t.ALTER),this.state=6406,this.match(t.EXTENSION),this.state=6407,this.name(),this.state=6408,this.match(t.SET),this.state=6409,this.match(t.SCHEMA),this.state=6410,this.schemaName();break;case 6:this.enterOuterAlt(e,6),this.state=6412,this.match(t.ALTER),this.state=6413,this.match(t.FUNCTION),this.state=6414,this.functionWithArgumentTypes(),this.state=6415,this.match(t.SET),this.state=6416,this.match(t.SCHEMA),this.state=6417,this.schemaName();break;case 7:this.enterOuterAlt(e,7),this.state=6419,this.match(t.ALTER),this.state=6420,this.match(t.OPERATOR),this.state=6421,this.operatorWithArgumentTypes(),this.state=6422,this.match(t.SET),this.state=6423,this.match(t.SCHEMA),this.state=6424,this.schemaName();break;case 8:this.enterOuterAlt(e,8),this.state=6426,this.match(t.ALTER),this.state=6427,this.match(t.OPERATOR),this.state=6428,this.match(t.CLASS),this.state=6429,this.anyName(),this.state=6430,this.match(t.USING),this.state=6431,this.name(),this.state=6432,this.match(t.SET),this.state=6433,this.match(t.SCHEMA),this.state=6434,this.schemaName();break;case 9:this.enterOuterAlt(e,9),this.state=6436,this.match(t.ALTER),this.state=6437,this.match(t.OPERATOR),this.state=6438,this.match(t.FAMILY),this.state=6439,this.anyName(),this.state=6440,this.match(t.USING),this.state=6441,this.name(),this.state=6442,this.match(t.SET),this.state=6443,this.match(t.SCHEMA),this.state=6444,this.schemaName();break;case 10:this.enterOuterAlt(e,10),this.state=6446,this.match(t.ALTER),this.state=6447,this.match(t.PROCEDURE),this.state=6448,this.functionWithArgumentTypes(),this.state=6449,this.match(t.SET),this.state=6450,this.match(t.SCHEMA),this.state=6451,this.schemaName();break;case 11:this.enterOuterAlt(e,11),this.state=6453,this.match(t.ALTER),this.state=6454,this.match(t.ROUTINE),this.state=6455,this.functionWithArgumentTypes(),this.state=6456,this.match(t.SET),this.state=6457,this.match(t.SCHEMA),this.state=6458,this.schemaName();break;case 12:this.enterOuterAlt(e,12),this.state=6460,this.match(t.ALTER),this.state=6461,this.match(t.TABLE),this.state=6462,this.relationExpression(),this.state=6463,this.match(t.SET),this.state=6464,this.match(t.SCHEMA),this.state=6465,this.schemaName();break;case 13:this.enterOuterAlt(e,13),this.state=6467,this.match(t.ALTER),this.state=6468,this.match(t.TABLE),this.state=6469,this.match(t.IF_P),this.state=6470,this.match(t.EXISTS),this.state=6471,this.relationExpression(),this.state=6472,this.match(t.SET),this.state=6473,this.match(t.SCHEMA),this.state=6474,this.schemaName();break;case 14:this.enterOuterAlt(e,14),this.state=6476,this.match(t.ALTER),this.state=6477,this.match(t.STATISTICS),this.state=6478,this.anyName(),this.state=6479,this.match(t.SET),this.state=6480,this.match(t.SCHEMA),this.state=6481,this.schemaName();break;case 15:this.enterOuterAlt(e,15),this.state=6483,this.match(t.ALTER),this.state=6484,this.match(t.TEXT_P),this.state=6485,this.match(t.SEARCH),this.state=6486,this.match(t.PARSER),this.state=6487,this.anyName(),this.state=6488,this.match(t.SET),this.state=6489,this.match(t.SCHEMA),this.state=6490,this.schemaName();break;case 16:this.enterOuterAlt(e,16),this.state=6492,this.match(t.ALTER),this.state=6493,this.match(t.TEXT_P),this.state=6494,this.match(t.SEARCH),this.state=6495,this.match(t.DICTIONARY),this.state=6496,this.anyName(),this.state=6497,this.match(t.SET),this.state=6498,this.match(t.SCHEMA),this.state=6499,this.schemaName();break;case 17:this.enterOuterAlt(e,17),this.state=6501,this.match(t.ALTER),this.state=6502,this.match(t.TEXT_P),this.state=6503,this.match(t.SEARCH),this.state=6504,this.match(t.TEMPLATE),this.state=6505,this.anyName(),this.state=6506,this.match(t.SET),this.state=6507,this.match(t.SCHEMA),this.state=6508,this.schemaName();break;case 18:this.enterOuterAlt(e,18),this.state=6510,this.match(t.ALTER),this.state=6511,this.match(t.TEXT_P),this.state=6512,this.match(t.SEARCH),this.state=6513,this.match(t.CONFIGURATION),this.state=6514,this.anyName(),this.state=6515,this.match(t.SET),this.state=6516,this.match(t.SCHEMA),this.state=6517,this.schemaName();break;case 19:if(this.enterOuterAlt(e,19),1===(this.state=6519,this.match(t.ALTER),this.state=6520,this.match(t.SEQUENCE),this.state=6523,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,351,this.context)))this.state=6521,this.match(t.IF_P),this.state=6522,this.match(t.EXISTS);this.state=6525,this.sequenceName(),this.state=6526,this.match(t.SET),this.state=6527,this.match(t.SCHEMA),this.state=6528,this.schemaName();break;case 20:this.enterOuterAlt(e,20),this.state=6530,this.match(t.ALTER),this.state=6531,this.match(t.VIEW),this.state=6532,this.qualifiedName(),this.state=6533,this.match(t.SET),this.state=6534,this.match(t.SCHEMA),this.state=6535,this.schemaName();break;case 21:this.enterOuterAlt(e,21),this.state=6537,this.match(t.ALTER),this.state=6538,this.match(t.VIEW),this.state=6539,this.match(t.IF_P),this.state=6540,this.match(t.EXISTS),this.state=6541,this.qualifiedName(),this.state=6542,this.match(t.SET),this.state=6543,this.match(t.SCHEMA),this.state=6544,this.schemaName();break;case 22:this.enterOuterAlt(e,22),this.state=6546,this.match(t.ALTER),this.state=6547,this.match(t.MATERIALIZED),this.state=6548,this.match(t.VIEW),this.state=6549,this.qualifiedName(),this.state=6550,this.match(t.SET),this.state=6551,this.match(t.SCHEMA),this.state=6552,this.schemaName();break;case 23:this.enterOuterAlt(e,23),this.state=6554,this.match(t.ALTER),this.state=6555,this.match(t.MATERIALIZED),this.state=6556,this.match(t.VIEW),this.state=6557,this.match(t.IF_P),this.state=6558,this.match(t.EXISTS),this.state=6559,this.qualifiedName(),this.state=6560,this.match(t.SET),this.state=6561,this.match(t.SCHEMA),this.state=6562,this.schemaName();break;case 24:this.enterOuterAlt(e,24),this.state=6564,this.match(t.ALTER),this.state=6565,this.match(t.FOREIGN),this.state=6566,this.match(t.TABLE),this.state=6567,this.relationExpression(),this.state=6568,this.match(t.SET),this.state=6569,this.match(t.SCHEMA),this.state=6570,this.schemaName();break;case 25:this.enterOuterAlt(e,25),this.state=6572,this.match(t.ALTER),this.state=6573,this.match(t.FOREIGN),this.state=6574,this.match(t.TABLE),this.state=6575,this.match(t.IF_P),this.state=6576,this.match(t.EXISTS),this.state=6577,this.relationExpression(),this.state=6578,this.match(t.SET),this.state=6579,this.match(t.SCHEMA),this.state=6580,this.schemaName();break;case 26:this.enterOuterAlt(e,26),this.state=6582,this.match(t.ALTER),this.state=6583,this.match(t.TYPE_P),this.state=6584,this.anyName(),this.state=6585,this.match(t.SET),this.state=6586,this.match(t.SCHEMA),this.state=6587,this.schemaName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterOperatorStatement(){let e=new RA(this.context,this.state);this.enterRule(e,656,t.RULE_alterOperatorStatement);try{this.enterOuterAlt(e,1),this.state=6591,this.match(t.ALTER),this.state=6592,this.match(t.OPERATOR),this.state=6593,this.operatorWithArgumentTypes(),this.state=6594,this.match(t.SET),this.state=6595,this.match(t.OPEN_PAREN),this.state=6596,this.operatorDefinitionList(),this.state=6597,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}operatorDefinitionList(){let e,s=new AA(this.context,this.state);this.enterRule(s,658,t.RULE_operatorDefinitionList);try{for(this.enterOuterAlt(s,1),this.state=6599,this.operatorDefinitionElement(),this.state=6604,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=6600,this.match(t.COMMA),this.state=6601,this.operatorDefinitionElement(),this.state=6606,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}operatorDefinitionElement(){let e=new SA(this.context,this.state);this.enterRule(e,660,t.RULE_operatorDefinitionElement);try{switch(this.state=6615,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,354,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6607,this.columnLabel(),this.state=6608,this.match(t.EQUAL),this.state=6609,this.match(t.NONE);break;case 2:this.enterOuterAlt(e,2),this.state=6611,this.columnLabel(),this.state=6612,this.match(t.EQUAL),this.state=6613,this.operatorDefinitionArgument()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}operatorDefinitionArgument(){let e=new lA(this.context,this.state);this.enterRule(e,662,t.RULE_operatorDefinitionArgument);try{switch(this.state=6622,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,355,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6617,this.functionType();break;case 2:this.enterOuterAlt(e,2),this.state=6618,this.reservedKeyword();break;case 3:this.enterOuterAlt(e,3),this.state=6619,this.allOperatorQualifier();break;case 4:this.enterOuterAlt(e,4),this.state=6620,this.numericOnly();break;case 5:this.enterOuterAlt(e,5),this.state=6621,this.sconst()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterTypeStatement(){let e=new OA(this.context,this.state);this.enterRule(e,664,t.RULE_alterTypeStatement);try{this.enterOuterAlt(e,1),this.state=6624,this.match(t.ALTER),this.state=6625,this.match(t.TYPE_P),this.state=6626,this.anyName(),this.state=6627,this.match(t.SET),this.state=6628,this.match(t.OPEN_PAREN),this.state=6629,this.operatorDefinitionList(),this.state=6630,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterOwnerStatement(){let e=new IA(this.context,this.state);this.enterRule(e,666,t.RULE_alterOwnerStatement);try{switch(this.state=6815,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,356,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6632,this.match(t.ALTER),this.state=6633,this.match(t.AGGREGATE),this.state=6634,this.aggregateWithArgumentTypes(),this.state=6635,this.match(t.OWNER),this.state=6636,this.match(t.TO),this.state=6637,this.roleName();break;case 2:this.enterOuterAlt(e,2),this.state=6639,this.match(t.ALTER),this.state=6640,this.match(t.COLLATION),this.state=6641,this.anyName(),this.state=6642,this.match(t.OWNER),this.state=6643,this.match(t.TO),this.state=6644,this.roleName();break;case 3:this.enterOuterAlt(e,3),this.state=6646,this.match(t.ALTER),this.state=6647,this.match(t.CONVERSION_P),this.state=6648,this.anyName(),this.state=6649,this.match(t.OWNER),this.state=6650,this.match(t.TO),this.state=6651,this.roleName();break;case 4:this.enterOuterAlt(e,4),this.state=6653,this.match(t.ALTER),this.state=6654,this.match(t.DATABASE),this.state=6655,this.databaseName(),this.state=6656,this.match(t.OWNER),this.state=6657,this.match(t.TO),this.state=6658,this.roleName();break;case 5:this.enterOuterAlt(e,5),this.state=6660,this.match(t.ALTER),this.state=6661,this.match(t.DOMAIN_P),this.state=6662,this.anyName(),this.state=6663,this.match(t.OWNER),this.state=6664,this.match(t.TO),this.state=6665,this.roleName();break;case 6:this.enterOuterAlt(e,6),this.state=6667,this.match(t.ALTER),this.state=6668,this.match(t.FUNCTION),this.state=6669,this.functionWithArgumentTypes(),this.state=6670,this.match(t.OWNER),this.state=6671,this.match(t.TO),this.state=6672,this.roleName();break;case 7:this.enterOuterAlt(e,7),this.state=6674,this.match(t.ALTER),this.state=6675,this.optionalProcedural(),this.state=6676,this.match(t.LANGUAGE),this.state=6677,this.name(),this.state=6678,this.match(t.OWNER),this.state=6679,this.match(t.TO),this.state=6680,this.roleName();break;case 8:this.enterOuterAlt(e,8),this.state=6682,this.match(t.ALTER),this.state=6683,this.match(t.LARGE_P),this.state=6684,this.match(t.OBJECT_P),this.state=6685,this.numericOnly(),this.state=6686,this.match(t.OWNER),this.state=6687,this.match(t.TO),this.state=6688,this.roleName();break;case 9:this.enterOuterAlt(e,9),this.state=6690,this.match(t.ALTER),this.state=6691,this.match(t.OPERATOR),this.state=6692,this.operatorWithArgumentTypes(),this.state=6693,this.match(t.OWNER),this.state=6694,this.match(t.TO),this.state=6695,this.roleName();break;case 10:this.enterOuterAlt(e,10),this.state=6697,this.match(t.ALTER),this.state=6698,this.match(t.OPERATOR),this.state=6699,this.match(t.CLASS),this.state=6700,this.anyName(),this.state=6701,this.match(t.USING),this.state=6702,this.name(),this.state=6703,this.match(t.OWNER),this.state=6704,this.match(t.TO),this.state=6705,this.roleName();break;case 11:this.enterOuterAlt(e,11),this.state=6707,this.match(t.ALTER),this.state=6708,this.match(t.OPERATOR),this.state=6709,this.match(t.FAMILY),this.state=6710,this.anyName(),this.state=6711,this.match(t.USING),this.state=6712,this.name(),this.state=6713,this.match(t.OWNER),this.state=6714,this.match(t.TO),this.state=6715,this.roleName();break;case 12:this.enterOuterAlt(e,12),this.state=6717,this.match(t.ALTER),this.state=6718,this.match(t.PROCEDURE),this.state=6719,this.functionWithArgumentTypes(),this.state=6720,this.match(t.OWNER),this.state=6721,this.match(t.TO),this.state=6722,this.roleName();break;case 13:this.enterOuterAlt(e,13),this.state=6724,this.match(t.ALTER),this.state=6725,this.match(t.ROUTINE),this.state=6726,this.functionWithArgumentTypes(),this.state=6727,this.match(t.OWNER),this.state=6728,this.match(t.TO),this.state=6729,this.roleName();break;case 14:this.enterOuterAlt(e,14),this.state=6731,this.match(t.ALTER),this.state=6732,this.match(t.SCHEMA),this.state=6733,this.schemaName(),this.state=6734,this.match(t.OWNER),this.state=6735,this.match(t.TO),this.state=6736,this.roleName();break;case 15:this.enterOuterAlt(e,15),this.state=6738,this.match(t.ALTER),this.state=6739,this.match(t.TYPE_P),this.state=6740,this.anyName(),this.state=6741,this.match(t.OWNER),this.state=6742,this.match(t.TO),this.state=6743,this.roleName();break;case 16:this.enterOuterAlt(e,16),this.state=6745,this.match(t.ALTER),this.state=6746,this.match(t.TABLESPACE),this.state=6747,this.name(),this.state=6748,this.match(t.OWNER),this.state=6749,this.match(t.TO),this.state=6750,this.roleName();break;case 17:this.enterOuterAlt(e,17),this.state=6752,this.match(t.ALTER),this.state=6753,this.match(t.STATISTICS),this.state=6754,this.anyName(),this.state=6755,this.match(t.OWNER),this.state=6756,this.match(t.TO),this.state=6757,this.roleName();break;case 18:this.enterOuterAlt(e,18),this.state=6759,this.match(t.ALTER),this.state=6760,this.match(t.TEXT_P),this.state=6761,this.match(t.SEARCH),this.state=6762,this.match(t.DICTIONARY),this.state=6763,this.anyName(),this.state=6764,this.match(t.OWNER),this.state=6765,this.match(t.TO),this.state=6766,this.roleName();break;case 19:this.enterOuterAlt(e,19),this.state=6768,this.match(t.ALTER),this.state=6769,this.match(t.TEXT_P),this.state=6770,this.match(t.SEARCH),this.state=6771,this.match(t.CONFIGURATION),this.state=6772,this.anyName(),this.state=6773,this.match(t.OWNER),this.state=6774,this.match(t.TO),this.state=6775,this.roleName();break;case 20:this.enterOuterAlt(e,20),this.state=6777,this.match(t.ALTER),this.state=6778,this.match(t.FOREIGN),this.state=6779,this.match(t.DATA_P),this.state=6780,this.match(t.WRAPPER),this.state=6781,this.name(),this.state=6782,this.match(t.OWNER),this.state=6783,this.match(t.TO),this.state=6784,this.roleName();break;case 21:this.enterOuterAlt(e,21),this.state=6786,this.match(t.ALTER),this.state=6787,this.match(t.SERVER),this.state=6788,this.name(),this.state=6789,this.match(t.OWNER),this.state=6790,this.match(t.TO),this.state=6791,this.roleName();break;case 22:this.enterOuterAlt(e,22),this.state=6793,this.match(t.ALTER),this.state=6794,this.match(t.EVENT),this.state=6795,this.match(t.TRIGGER),this.state=6796,this.name(),this.state=6797,this.match(t.OWNER),this.state=6798,this.match(t.TO),this.state=6799,this.roleName();break;case 23:this.enterOuterAlt(e,23),this.state=6801,this.match(t.ALTER),this.state=6802,this.match(t.PUBLICATION),this.state=6803,this.name(),this.state=6804,this.match(t.OWNER),this.state=6805,this.match(t.TO),this.state=6806,this.roleName();break;case 24:this.enterOuterAlt(e,24),this.state=6808,this.match(t.ALTER),this.state=6809,this.match(t.SUBSCRIPTION),this.state=6810,this.name(),this.state=6811,this.match(t.OWNER),this.state=6812,this.match(t.TO),this.state=6813,this.roleName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createPublicationStatement(){let e=new uA(this.context,this.state);this.enterRule(e,668,t.RULE_createPublicationStatement);try{this.enterOuterAlt(e,1),this.state=6817,this.match(t.CREATE),this.state=6818,this.match(t.PUBLICATION),this.state=6819,this.name(),this.state=6820,this.optionalPublicationForTables(),this.state=6821,this.optionalDefinition()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalPublicationForTables(){let e=new NA(this.context,this.state);this.enterRule(e,670,t.RULE_optionalPublicationForTables);try{switch(this.state=6825,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:this.enterOuterAlt(e,1),this.state=6823,this.publicationForTables();break;case t.EOF:case t.SEMI:case t.INTO:case t.WITH:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}publicationForTables(){let e=new LA(this.context,this.state);this.enterRule(e,672,t.RULE_publicationForTables);try{switch(this.state=6833,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,358,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6827,this.match(t.FOR),this.state=6828,this.match(t.TABLE),this.state=6829,this.relationExpressionList();break;case 2:this.enterOuterAlt(e,2),this.state=6830,this.match(t.FOR),this.state=6831,this.match(t.ALL),this.state=6832,this.match(t.TABLES)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterPublicationStatement(){let e=new CA(this.context,this.state);this.enterRule(e,674,t.RULE_alterPublicationStatement);try{switch(this.state=6862,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,359,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6835,this.match(t.ALTER),this.state=6836,this.match(t.PUBLICATION),this.state=6837,this.name(),this.state=6838,this.match(t.SET),this.state=6839,this.definition();break;case 2:this.enterOuterAlt(e,2),this.state=6841,this.match(t.ALTER),this.state=6842,this.match(t.PUBLICATION),this.state=6843,this.name(),this.state=6844,this.match(t.ADD_P),this.state=6845,this.match(t.TABLE),this.state=6846,this.relationExpressionList();break;case 3:this.enterOuterAlt(e,3),this.state=6848,this.match(t.ALTER),this.state=6849,this.match(t.PUBLICATION),this.state=6850,this.name(),this.state=6851,this.match(t.SET),this.state=6852,this.match(t.TABLE),this.state=6853,this.relationExpressionList();break;case 4:this.enterOuterAlt(e,4),this.state=6855,this.match(t.ALTER),this.state=6856,this.match(t.PUBLICATION),this.state=6857,this.name(),this.state=6858,this.match(t.DROP),this.state=6859,this.match(t.TABLE),this.state=6860,this.relationExpressionList()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createSubscriptionStatement(){let e=new _A(this.context,this.state);this.enterRule(e,676,t.RULE_createSubscriptionStatement);try{this.enterOuterAlt(e,1),this.state=6864,this.match(t.CREATE),this.state=6865,this.match(t.SUBSCRIPTION),this.state=6866,this.name(),this.state=6867,this.match(t.CONNECTION),this.state=6868,this.sconst(),this.state=6869,this.match(t.PUBLICATION),this.state=6870,this.publicationNameList(),this.state=6871,this.optionalDefinition()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}publicationNameList(){let e,s=new PA(this.context,this.state);this.enterRule(s,678,t.RULE_publicationNameList);try{for(this.enterOuterAlt(s,1),this.state=6873,this.publicationNameItem(),this.state=6878,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=6874,this.match(t.COMMA),this.state=6875,this.publicationNameItem(),this.state=6880,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}publicationNameItem(){let e=new MA(this.context,this.state);this.enterRule(e,680,t.RULE_publicationNameItem);try{this.enterOuterAlt(e,1),this.state=6881,this.columnLabel()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterSubscriptionStatement(){let e=new dA(this.context,this.state);this.enterRule(e,682,t.RULE_alterSubscriptionStatement);try{switch(this.state=6920,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,361,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6883,this.match(t.ALTER),this.state=6884,this.match(t.SUBSCRIPTION),this.state=6885,this.name(),this.state=6886,this.match(t.SET),this.state=6887,this.definition();break;case 2:this.enterOuterAlt(e,2),this.state=6889,this.match(t.ALTER),this.state=6890,this.match(t.SUBSCRIPTION),this.state=6891,this.name(),this.state=6892,this.match(t.CONNECTION),this.state=6893,this.sconst();break;case 3:this.enterOuterAlt(e,3),this.state=6895,this.match(t.ALTER),this.state=6896,this.match(t.SUBSCRIPTION),this.state=6897,this.name(),this.state=6898,this.match(t.REFRESH),this.state=6899,this.match(t.PUBLICATION),this.state=6900,this.optionalDefinition();break;case 4:this.enterOuterAlt(e,4),this.state=6902,this.match(t.ALTER),this.state=6903,this.match(t.SUBSCRIPTION),this.state=6904,this.name(),this.state=6905,this.match(t.SET),this.state=6906,this.match(t.PUBLICATION),this.state=6907,this.publicationNameList(),this.state=6908,this.optionalDefinition();break;case 5:this.enterOuterAlt(e,5),this.state=6910,this.match(t.ALTER),this.state=6911,this.match(t.SUBSCRIPTION),this.state=6912,this.name(),this.state=6913,this.match(t.ENABLE_P);break;case 6:this.enterOuterAlt(e,6),this.state=6915,this.match(t.ALTER),this.state=6916,this.match(t.SUBSCRIPTION),this.state=6917,this.name(),this.state=6918,this.match(t.DISABLE_P)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropSubscriptionStatement(){let e=new UA(this.context,this.state);this.enterRule(e,684,t.RULE_dropSubscriptionStatement);try{switch(this.state=6934,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,362,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6922,this.match(t.DROP),this.state=6923,this.match(t.SUBSCRIPTION),this.state=6924,this.name(),this.state=6925,this.optionalDropBehavior();break;case 2:this.enterOuterAlt(e,2),this.state=6927,this.match(t.DROP),this.state=6928,this.match(t.SUBSCRIPTION),this.state=6929,this.match(t.IF_P),this.state=6930,this.match(t.EXISTS),this.state=6931,this.name(),this.state=6932,this.optionalDropBehavior()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ruleStatement(){let e=new mA(this.context,this.state);this.enterRule(e,686,t.RULE_ruleStatement);try{this.enterOuterAlt(e,1),this.state=6936,this.match(t.CREATE),this.state=6937,this.optionalOrReplace(),this.state=6938,this.match(t.RULE),this.state=6939,this.name(),this.state=6940,this.match(t.AS),this.state=6941,this.match(t.ON),this.state=6942,this.event(),this.state=6943,this.match(t.TO),this.state=6944,this.qualifiedName(),this.state=6945,this.whereClause(),this.state=6946,this.match(t.DO),this.state=6947,this.optionalInstead(),this.state=6948,this.ruleActionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ruleActionList(){let e=new DA(this.context,this.state);this.enterRule(e,688,t.RULE_ruleActionList);try{switch(this.state=6956,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,363,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6950,this.match(t.NOTHING);break;case 2:this.enterOuterAlt(e,2),this.state=6951,this.ruleActionStatement();break;case 3:this.enterOuterAlt(e,3),this.state=6952,this.match(t.OPEN_PAREN),this.state=6953,this.ruleActionMulti(),this.state=6954,this.match(t.CLOSE_PAREN)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ruleActionMulti(){let e,s=new pA(this.context,this.state);this.enterRule(s,690,t.RULE_ruleActionMulti);try{for(this.enterOuterAlt(s,1),this.state=6958,this.ruleActionStatementOrEmpty(),this.state=6963,this.errorHandler.sync(this),e=this.tokenStream.LA(1);7===e;)this.state=6959,this.match(t.SEMI),this.state=6960,this.ruleActionStatementOrEmpty(),this.state=6965,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}ruleActionStatement(){let e=new gA(this.context,this.state);this.enterRule(e,692,t.RULE_ruleActionStatement);try{switch(this.state=6971,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,365,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6966,this.selectStatement();break;case 2:this.enterOuterAlt(e,2),this.state=6967,this.insertStatement();break;case 3:this.enterOuterAlt(e,3),this.state=6968,this.updateStatement();break;case 4:this.enterOuterAlt(e,4),this.state=6969,this.deleteStatement();break;case 5:this.enterOuterAlt(e,5),this.state=6970,this.notifyStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ruleActionStatementOrEmpty(){let e=new xA(this.context,this.state);this.enterRule(e,694,t.RULE_ruleActionStatementOrEmpty);try{switch(this.state=6975,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:case t.SELECT:case t.TABLE:case t.WITH:case t.DELETE_P:case t.INSERT:case t.NOTIFY:case t.UPDATE:case t.VALUES:this.enterOuterAlt(e,1),this.state=6973,this.ruleActionStatement();break;case t.CLOSE_PAREN:case t.SEMI:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}event(){let e,s=new kA(this.context,this.state);this.enterRule(s,696,t.RULE_event);try{this.enterOuterAlt(s,1),this.state=6977,e=this.tokenStream.LA(1),88===e||182===e||232===e||362===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalInstead(){let e=new HA(this.context,this.state);this.enterRule(e,698,t.RULE_optionalInstead);try{switch(this.state=6982,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.INSTEAD:this.enterOuterAlt(e,1),this.state=6979,this.match(t.INSTEAD);break;case t.ALSO:this.enterOuterAlt(e,2),this.state=6980,this.match(t.ALSO);break;case t.OPEN_PAREN:case t.SELECT:case t.TABLE:case t.WITH:case t.DELETE_P:case t.INSERT:case t.NOTHING:case t.NOTIFY:case t.UPDATE:case t.VALUES:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}notifyStatement(){let e=new GA(this.context,this.state);this.enterRule(e,700,t.RULE_notifyStatement);try{this.enterOuterAlt(e,1),this.state=6984,this.match(t.NOTIFY),this.state=6985,this.columnId(),this.state=6986,this.notifyPayload()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}notifyPayload(){let e=new FA(this.context,this.state);this.enterRule(e,702,t.RULE_notifyPayload);try{switch(this.state=6991,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.COMMA:this.enterOuterAlt(e,1),this.state=6988,this.match(t.COMMA),this.state=6989,this.sconst();break;case t.EOF:case t.CLOSE_PAREN:case t.SEMI:case t.INTO:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}listenStatement(){let e=new vA(this.context,this.state);this.enterRule(e,704,t.RULE_listenStatement);try{this.enterOuterAlt(e,1),this.state=6993,this.match(t.LISTEN),this.state=6994,this.columnId()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}unlistenStatement(){let e=new BA(this.context,this.state);this.enterRule(e,706,t.RULE_unlistenStatement);try{switch(this.state=7e3,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,369,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6996,this.match(t.UNLISTEN),this.state=6997,this.columnId();break;case 2:this.enterOuterAlt(e,2),this.state=6998,this.match(t.UNLISTEN),this.state=6999,this.match(t.STAR)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}transactionStatement(){let e,s=new yA(this.context,this.state);this.enterRule(s,708,t.RULE_transactionStatement);try{switch(this.state=7055,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,372,this.context)){case 1:this.enterOuterAlt(s,1),this.state=7002,this.match(t.ABORT_P),this.state=7003,this.optionalTransaction(),this.state=7004,this.optionalTransactionChain();break;case 2:this.enterOuterAlt(s,2),this.state=7006,this.match(t.BEGIN_P),this.state=7007,this.optionalTransaction(),this.state=7009,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(54===e||77===e||235===e||293===e)&&(this.state=7008,this.transactionModeList());break;case 3:this.enterOuterAlt(s,3),this.state=7011,this.match(t.START),this.state=7012,this.match(t.TRANSACTION),this.state=7014,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(54===e||77===e||235===e||293===e)&&(this.state=7013,this.transactionModeList());break;case 4:this.enterOuterAlt(s,4),this.state=7016,this.match(t.COMMIT),this.state=7017,this.optionalTransaction(),this.state=7018,this.optionalTransactionChain();break;case 5:this.enterOuterAlt(s,5),this.state=7020,this.match(t.END_P),this.state=7021,this.optionalTransaction(),this.state=7022,this.optionalTransactionChain();break;case 6:this.enterOuterAlt(s,6),this.state=7024,this.match(t.ROLLBACK),this.state=7025,this.optionalTransaction(),this.state=7026,this.optionalTransactionChain();break;case 7:this.enterOuterAlt(s,7),this.state=7028,this.match(t.SAVEPOINT),this.state=7029,this.columnId();break;case 8:this.enterOuterAlt(s,8),this.state=7030,this.match(t.RELEASE),this.state=7031,this.match(t.SAVEPOINT),this.state=7032,this.columnId();break;case 9:this.enterOuterAlt(s,9),this.state=7033,this.match(t.RELEASE),this.state=7034,this.columnId();break;case 10:this.enterOuterAlt(s,10),this.state=7035,this.match(t.ROLLBACK),this.state=7036,this.optionalTransaction(),this.state=7037,this.match(t.TO),this.state=7038,this.match(t.SAVEPOINT),this.state=7039,this.columnId();break;case 11:this.enterOuterAlt(s,11),this.state=7041,this.match(t.ROLLBACK),this.state=7042,this.optionalTransaction(),this.state=7043,this.match(t.TO),this.state=7044,this.columnId();break;case 12:this.enterOuterAlt(s,12),this.state=7046,this.match(t.PREPARE),this.state=7047,this.match(t.TRANSACTION),this.state=7048,this.sconst();break;case 13:this.enterOuterAlt(s,13),this.state=7049,this.match(t.COMMIT),this.state=7050,this.match(t.PREPARED),this.state=7051,this.sconst();break;case 14:this.enterOuterAlt(s,14),this.state=7052,this.match(t.ROLLBACK),this.state=7053,this.match(t.PREPARED),this.state=7054,this.sconst()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalTransaction(){let e=new fA(this.context,this.state);this.enterRule(e,710,t.RULE_optionalTransaction);try{switch(this.state=7060,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WORK:this.enterOuterAlt(e,1),this.state=7057,this.match(t.WORK);break;case t.TRANSACTION:this.enterOuterAlt(e,2),this.state=7058,this.match(t.TRANSACTION);break;case t.EOF:case t.SEMI:case t.AND:case t.DEFERRABLE:case t.INTO:case t.NOT:case t.TO:case t.ISOLATION:case t.READ:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}transactionModeItem(){let e=new YA(this.context,this.state);this.enterRule(e,712,t.RULE_transactionModeItem);try{switch(this.state=7072,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,374,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7062,this.match(t.ISOLATION),this.state=7063,this.match(t.LEVEL),this.state=7064,this.isoLevel();break;case 2:this.enterOuterAlt(e,2),this.state=7065,this.match(t.READ),this.state=7066,this.match(t.ONLY);break;case 3:this.enterOuterAlt(e,3),this.state=7067,this.match(t.READ),this.state=7068,this.match(t.WRITE);break;case 4:this.enterOuterAlt(e,4),this.state=7069,this.match(t.DEFERRABLE);break;case 5:this.enterOuterAlt(e,5),this.state=7070,this.match(t.NOT),this.state=7071,this.match(t.DEFERRABLE)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}transactionModeList(){let e,s=new wA(this.context,this.state);this.enterRule(s,714,t.RULE_transactionModeList);try{for(this.enterOuterAlt(s,1),this.state=7074,this.transactionModeItem(),this.state=7081,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e||54===e||77===e||235===e||293===e;)this.state=7076,this.errorHandler.sync(this),e=this.tokenStream.LA(1),6===e&&(this.state=7075,this.match(t.COMMA)),this.state=7078,this.transactionModeItem(),this.state=7083,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalTransactionChain(){let e,s=new bA(this.context,this.state);this.enterRule(s,716,t.RULE_optionalTransactionChain);try{switch(this.state=7090,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:this.enterOuterAlt(s,1),this.state=7084,this.match(t.AND),this.state=7086,this.errorHandler.sync(this),e=this.tokenStream.LA(1),262===e&&(this.state=7085,this.match(t.NO)),this.state=7088,this.match(t.CHAIN);break;case t.EOF:case t.SEMI:case t.INTO:this.enterOuterAlt(s,2);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}viewStatement(){let e,s=new WA(this.context,this.state);this.enterRule(s,718,t.RULE_viewStatement);try{switch(this.enterOuterAlt(s,1),this.state=7092,this.match(t.CREATE),this.state=7095,this.errorHandler.sync(this),e=this.tokenStream.LA(1),82===e&&(this.state=7093,this.match(t.OR),this.state=7094,this.match(t.REPLACE)),this.state=7097,this.temporaryOption(),this.state=7111,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.VIEW:this.state=7098,this.match(t.VIEW),this.state=7099,this.qualifiedName(),this.state=7100,this.columnListWithParentheses(),this.state=7101,this.optionalRelOptions();break;case t.RECURSIVE:this.state=7103,this.match(t.RECURSIVE),this.state=7104,this.match(t.VIEW),this.state=7105,this.qualifiedName(),this.state=7106,this.match(t.OPEN_PAREN),this.state=7107,this.columnList(),this.state=7108,this.match(t.CLOSE_PAREN),this.state=7109,this.optionalRelOptions();break;default:throw new Ei(this)}this.state=7113,this.match(t.AS),this.state=7114,this.selectStatement(),this.state=7115,this.optionalCheckOption()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalCheckOption(){let e,s=new VA(this.context,this.state);this.enterRule(s,720,t.RULE_optionalCheckOption);try{switch(this.state=7124,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WITH:this.enterOuterAlt(s,1),this.state=7117,this.match(t.WITH),this.state=7119,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(151===e||245===e)&&(this.state=7118,e=this.tokenStream.LA(1),151===e||245===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=7121,this.match(t.CHECK),this.state=7122,this.match(t.OPTION);break;case t.EOF:case t.SEMI:case t.CREATE:case t.GRANT:case t.INTO:this.enterOuterAlt(s,2);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}loadStatement(){let e=new XA(this.context,this.state);this.enterRule(e,722,t.RULE_loadStatement);try{this.enterOuterAlt(e,1),this.state=7126,this.match(t.LOAD),this.state=7127,this.fileName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createDatabaseStatement(){let e=new KA(this.context,this.state);this.enterRule(e,724,t.RULE_createDatabaseStatement);try{this.enterOuterAlt(e,1),this.state=7129,this.match(t.CREATE),this.state=7130,this.match(t.DATABASE),this.state=7131,this.name(),this.state=7132,this.optionalWith(),this.state=7133,this.createDatabaseOptionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createDatabaseOptionList(){let e,s=new QA(this.context,this.state);this.enterRule(s,726,t.RULE_createDatabaseOptionList);try{switch(this.state=7141,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.OUTER_P:case t.ABSOLUTE_P:case t.BACKWARD:case t.CHAIN:case t.CLOSE:case t.COMMIT:case t.CONNECTION:case t.CONTINUE_P:case t.CURSOR:case t.ENCODING:case t.FIRST_P:case t.FORWARD:case t.INSERT:case t.LAST_P:case t.LOCATION:case t.MOVE:case t.NEXT:case t.NO:case t.OPTION:case t.OWNER:case t.PRIOR:case t.RELATIVE_P:case t.RESET:case t.ROLLBACK:case t.SCHEMA:case t.SCROLL:case t.SET:case t.TABLESPACE:case t.TEMPLATE:case t.TYPE_P:case t.CALL:case t.CURRENT_P:case t.ROWTYPE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(s,1),this.state=7136,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=7135,this.createDatabaseOptionItem(),this.state=7138,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(!(e-33&-32)&&1<<e-33&286268421||!(e-92&-32)&&1<<e-92&2164260865||!(e-130&-32)&&1<<e-130&2290106369||!(e-164&-32)&&1<<e-164&1073742089||!(e-207&-32)&&1<<e-207&33554441||!(e-240&-32)&&1<<e-240&6553665||!(e-272&-32)&&1<<e-272&268451849||!(e-306&-32)&&1<<e-306&1051713||!(e-344&-32)&&1<<e-344&517||433===e||434===e||!(e-477&-32)&&1<<e-477&3825197057||!(e-509&-32)&&1<<e-509&3055||!(e-636&-32)&&1<<e-636&100663331);break;case t.EOF:case t.SEMI:case t.INTO:this.enterOuterAlt(s,2);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createDatabaseOptionItem(){let e,s=new JA(this.context,this.state);this.enterRule(s,728,t.RULE_createDatabaseOptionItem);try{switch(this.enterOuterAlt(s,1),this.state=7143,this.createDatabaseOptionName(),this.state=7145,this.errorHandler.sync(this),e=this.tokenStream.LA(1),10===e&&(this.state=7144,this.match(t.EQUAL)),this.state=7150,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,386,this.context)){case 1:this.state=7147,this.signedIconst();break;case 2:this.state=7148,this.booleanOrString();break;case 3:this.state=7149,this.match(t.DEFAULT)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createDatabaseOptionName(){let e=new ZA(this.context,this.state);this.enterRule(e,730,t.RULE_createDatabaseOptionName);try{switch(this.state=7160,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.OUTER_P:case t.ABSOLUTE_P:case t.BACKWARD:case t.CHAIN:case t.CLOSE:case t.COMMIT:case t.CONTINUE_P:case t.CURSOR:case t.FIRST_P:case t.FORWARD:case t.INSERT:case t.LAST_P:case t.MOVE:case t.NEXT:case t.NO:case t.OPTION:case t.PRIOR:case t.RELATIVE_P:case t.RESET:case t.ROLLBACK:case t.SCHEMA:case t.SCROLL:case t.SET:case t.TYPE_P:case t.CALL:case t.CURRENT_P:case t.ROWTYPE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=7152,this.identifier();break;case t.CONNECTION:this.enterOuterAlt(e,2),this.state=7153,this.match(t.CONNECTION),this.state=7154,this.match(t.LIMIT);break;case t.ENCODING:this.enterOuterAlt(e,3),this.state=7155,this.match(t.ENCODING);break;case t.LOCATION:this.enterOuterAlt(e,4),this.state=7156,this.match(t.LOCATION);break;case t.OWNER:this.enterOuterAlt(e,5),this.state=7157,this.match(t.OWNER);break;case t.TABLESPACE:this.enterOuterAlt(e,6),this.state=7158,this.match(t.TABLESPACE);break;case t.TEMPLATE:this.enterOuterAlt(e,7),this.state=7159,this.match(t.TEMPLATE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterDatabaseStatement(){let e=new qA(this.context,this.state);this.enterRule(e,732,t.RULE_alterDatabaseStatement);try{switch(this.enterOuterAlt(e,1),this.state=7162,this.match(t.ALTER),this.state=7163,this.match(t.DATABASE),this.state=7164,this.databaseName(),this.state=7171,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,388,this.context)){case 1:this.state=7165,this.match(t.WITH),this.state=7166,this.createDatabaseOptionList();break;case 2:this.state=7167,this.createDatabaseOptionList();break;case 3:this.state=7168,this.match(t.SET),this.state=7169,this.match(t.TABLESPACE),this.state=7170,this.name()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterDatabaseSetStatement(){let e=new jA(this.context,this.state);this.enterRule(e,734,t.RULE_alterDatabaseSetStatement);try{this.enterOuterAlt(e,1),this.state=7173,this.match(t.ALTER),this.state=7174,this.match(t.DATABASE),this.state=7175,this.databaseName(),this.state=7176,this.setResetClause()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropDatabaseStatement(){let e,s=new zA(this.context,this.state);this.enterRule(s,736,t.RULE_dropDatabaseStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=7178,this.match(t.DROP),this.state=7179,this.match(t.DATABASE),this.state=7182,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,389,this.context)))this.state=7180,this.match(t.IF_P),this.state=7181,this.match(t.EXISTS);if(this.state=7184,this.databaseName(),this.state=7197,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e||105===e){for(this.state=7185,this.optionalWith(),this.state=7186,this.match(t.OPEN_PAREN),this.state=7187,this.match(t.FORCE),this.state=7192,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=7188,this.match(t.COMMA),this.state=7189,this.match(t.FORCE),this.state=7194,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=7195,this.match(t.CLOSE_PAREN)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterCollationStatement(){let e=new $A(this.context,this.state);this.enterRule(e,738,t.RULE_alterCollationStatement);try{this.enterOuterAlt(e,1),this.state=7199,this.match(t.ALTER),this.state=7200,this.match(t.COLLATION),this.state=7201,this.anyName(),this.state=7202,this.match(t.REFRESH),this.state=7203,this.match(t.VERSION_P)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterSystemStatement(){let e,s=new tS(this.context,this.state);this.enterRule(s,740,t.RULE_alterSystemStatement);try{this.enterOuterAlt(s,1),this.state=7205,this.match(t.ALTER),this.state=7206,this.match(t.SYSTEM_P),this.state=7207,e=this.tokenStream.LA(1),306===e||326===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=7208,this.genericSetClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createDomainStatement(){let e=new eS(this.context,this.state);this.enterRule(e,742,t.RULE_createDomainStatement);try{this.enterOuterAlt(e,1),this.state=7210,this.match(t.CREATE),this.state=7211,this.match(t.DOMAIN_P),this.state=7212,this.anyName(),this.state=7213,this.optionalAs(),this.state=7214,this.typeName(),this.state=7215,this.columnQualifierList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterDomainStatement(){let e=new sS(this.context,this.state);this.enterRule(e,744,t.RULE_alterDomainStatement);try{this.enterOuterAlt(e,1),this.state=7217,this.match(t.ALTER),this.state=7218,this.match(t.DOMAIN_P),this.state=7219,this.anyName(),this.state=7220,this.alterDomainCommand()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterDomainCommand(){let e=new aS(this.context,this.state);this.enterRule(e,746,t.RULE_alterDomainCommand);try{switch(this.state=7243,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,393,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7222,this.alterColumnDefault();break;case 2:this.enterOuterAlt(e,2),this.state=7223,this.match(t.DROP),this.state=7224,this.match(t.NOT),this.state=7225,this.match(t.NULL_P);break;case 3:this.enterOuterAlt(e,3),this.state=7226,this.match(t.SET),this.state=7227,this.match(t.NOT),this.state=7228,this.match(t.NULL_P);break;case 4:this.enterOuterAlt(e,4),this.state=7229,this.match(t.ADD_P),this.state=7230,this.tableConstraint();break;case 5:if(this.enterOuterAlt(e,5),1===(this.state=7231,this.match(t.DROP),this.state=7232,this.match(t.CONSTRAINT),this.state=7235,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,392,this.context)))this.state=7233,this.match(t.IF_P),this.state=7234,this.match(t.EXISTS);this.state=7237,this.constraintName(),this.state=7238,this.optionalDropBehavior();break;case 6:this.enterOuterAlt(e,6),this.state=7240,this.match(t.VALIDATE),this.state=7241,this.match(t.CONSTRAINT),this.state=7242,this.constraintName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalAs(){let e=new rS(this.context,this.state);this.enterRule(e,748,t.RULE_optionalAs);try{switch(this.state=7247,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AS:this.enterOuterAlt(e,1),this.state=7245,this.match(t.AS);break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LEFT:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.RIGHT:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}altertsDictionaryStatement(){let e=new iS(this.context,this.state);this.enterRule(e,750,t.RULE_altertsDictionaryStatement);try{this.enterOuterAlt(e,1),this.state=7249,this.match(t.ALTER),this.state=7250,this.match(t.TEXT_P),this.state=7251,this.match(t.SEARCH),this.state=7252,this.match(t.DICTIONARY),this.state=7253,this.anyName(),this.state=7254,this.definition()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}altertsConfigurationStatement(){let e=new cS(this.context,this.state);this.enterRule(e,752,t.RULE_altertsConfigurationStatement);try{switch(this.state=7328,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,395,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7256,this.match(t.ALTER),this.state=7257,this.match(t.TEXT_P),this.state=7258,this.match(t.SEARCH),this.state=7259,this.match(t.CONFIGURATION),this.state=7260,this.anyName(),this.state=7261,this.match(t.ADD_P),this.state=7262,this.match(t.MAPPING),this.state=7263,this.match(t.FOR),this.state=7264,this.nameList(),this.state=7265,this.match(t.WITH),this.state=7266,this.anyNameList();break;case 2:this.enterOuterAlt(e,2),this.state=7268,this.match(t.ALTER),this.state=7269,this.match(t.TEXT_P),this.state=7270,this.match(t.SEARCH),this.state=7271,this.match(t.CONFIGURATION),this.state=7272,this.anyName(),this.state=7273,this.match(t.ALTER),this.state=7274,this.match(t.MAPPING),this.state=7275,this.match(t.FOR),this.state=7276,this.nameList(),this.state=7277,this.match(t.WITH),this.state=7278,this.anyNameList();break;case 3:this.enterOuterAlt(e,3),this.state=7280,this.match(t.ALTER),this.state=7281,this.match(t.TEXT_P),this.state=7282,this.match(t.SEARCH),this.state=7283,this.match(t.CONFIGURATION),this.state=7284,this.anyName(),this.state=7285,this.match(t.ALTER),this.state=7286,this.match(t.MAPPING),this.state=7287,this.match(t.REPLACE),this.state=7288,this.anyName(),this.state=7289,this.match(t.WITH),this.state=7290,this.anyName();break;case 4:this.enterOuterAlt(e,4),this.state=7292,this.match(t.ALTER),this.state=7293,this.match(t.TEXT_P),this.state=7294,this.match(t.SEARCH),this.state=7295,this.match(t.CONFIGURATION),this.state=7296,this.anyName(),this.state=7297,this.match(t.ALTER),this.state=7298,this.match(t.MAPPING),this.state=7299,this.match(t.FOR),this.state=7300,this.nameList(),this.state=7301,this.match(t.REPLACE),this.state=7302,this.anyName(),this.state=7303,this.match(t.WITH),this.state=7304,this.anyName();break;case 5:this.enterOuterAlt(e,5),this.state=7306,this.match(t.ALTER),this.state=7307,this.match(t.TEXT_P),this.state=7308,this.match(t.SEARCH),this.state=7309,this.match(t.CONFIGURATION),this.state=7310,this.anyName(),this.state=7311,this.match(t.DROP),this.state=7312,this.match(t.MAPPING),this.state=7313,this.match(t.FOR),this.state=7314,this.nameList();break;case 6:this.enterOuterAlt(e,6),this.state=7316,this.match(t.ALTER),this.state=7317,this.match(t.TEXT_P),this.state=7318,this.match(t.SEARCH),this.state=7319,this.match(t.CONFIGURATION),this.state=7320,this.anyName(),this.state=7321,this.match(t.DROP),this.state=7322,this.match(t.MAPPING),this.state=7323,this.match(t.IF_P),this.state=7324,this.match(t.EXISTS),this.state=7325,this.match(t.FOR),this.state=7326,this.nameList()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createConversionStatement(){let e,s=new nS(this.context,this.state);this.enterRule(s,754,t.RULE_createConversionStatement);try{this.enterOuterAlt(s,1),this.state=7330,this.match(t.CREATE),this.state=7332,this.errorHandler.sync(this),e=this.tokenStream.LA(1),53===e&&(this.state=7331,this.match(t.DEFAULT)),this.state=7334,this.match(t.CONVERSION_P),this.state=7335,this.anyName(),this.state=7336,this.match(t.FOR),this.state=7337,this.sconst(),this.state=7338,this.match(t.TO),this.state=7339,this.sconst(),this.state=7340,this.match(t.FROM),this.state=7341,this.anyName()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}clusterStatement(){let e=new hS(this.context,this.state);this.enterRule(e,756,t.RULE_clusterStatement);try{switch(this.state=7356,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,397,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7343,this.match(t.CLUSTER),this.state=7344,this.optionalVerbose(),this.state=7345,this.qualifiedName(),this.state=7346,this.clusterIndexSpecification();break;case 2:this.enterOuterAlt(e,2),this.state=7348,this.match(t.CLUSTER),this.state=7349,this.optionalVerbose();break;case 3:this.enterOuterAlt(e,3),this.state=7350,this.match(t.CLUSTER),this.state=7351,this.optionalVerbose(),this.state=7352,this.name(),this.state=7353,this.match(t.ON),this.state=7354,this.qualifiedName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}clusterIndexSpecification(){let e=new ES(this.context,this.state);this.enterRule(e,758,t.RULE_clusterIndexSpecification);try{switch(this.state=7361,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.USING:this.enterOuterAlt(e,1),this.state=7358,this.match(t.USING),this.state=7359,this.name();break;case t.EOF:case t.SEMI:case t.INTO:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}vacuumStatement(){let e,s=new TS(this.context,this.state);this.enterRule(s,760,t.RULE_vacuumStatement);try{switch(this.state=7382,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,402,this.context)){case 1:this.enterOuterAlt(s,1),this.state=7363,this.match(t.VACUUM),this.state=7365,this.errorHandler.sync(this),e=this.tokenStream.LA(1),113===e&&(this.state=7364,this.match(t.FULL)),this.state=7368,this.errorHandler.sync(this),e=this.tokenStream.LA(1),112===e&&(this.state=7367,this.match(t.FREEZE)),this.state=7370,this.optionalVerbose(),this.state=7372,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(31===e||32===e)&&(this.state=7371,this.analyzeKeyword()),this.state=7374,this.optionalVacuumRelationList();break;case 2:this.enterOuterAlt(s,2),this.state=7376,this.match(t.VACUUM),this.state=7377,this.match(t.OPEN_PAREN),this.state=7378,this.vacuumAnalyzeOptionList(),this.state=7379,this.match(t.CLOSE_PAREN),this.state=7380,this.optionalVacuumRelationList()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}analyzeStatement(){let e=new oS(this.context,this.state);this.enterRule(e,762,t.RULE_analyzeStatement);try{switch(this.state=7394,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,403,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7384,this.analyzeKeyword(),this.state=7385,this.optionalVerbose(),this.state=7386,this.optionalVacuumRelationList();break;case 2:this.enterOuterAlt(e,2),this.state=7388,this.analyzeKeyword(),this.state=7389,this.match(t.OPEN_PAREN),this.state=7390,this.vacuumAnalyzeOptionList(),this.state=7391,this.match(t.CLOSE_PAREN),this.state=7392,this.optionalVacuumRelationList()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}vacuumAnalyzeOptionList(){let e,s=new RS(this.context,this.state);this.enterRule(s,764,t.RULE_vacuumAnalyzeOptionList);try{for(this.enterOuterAlt(s,1),this.state=7396,this.vacuumAnalyzeOptionElement(),this.state=7401,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=7397,this.match(t.COMMA),this.state=7398,this.vacuumAnalyzeOptionElement(),this.state=7403,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}analyzeKeyword(){let e,s=new AS(this.context,this.state);this.enterRule(s,766,t.RULE_analyzeKeyword);try{this.enterOuterAlt(s,1),this.state=7404,e=this.tokenStream.LA(1),31===e||32===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}vacuumAnalyzeOptionElement(){let e=new SS(this.context,this.state);this.enterRule(e,768,t.RULE_vacuumAnalyzeOptionElement);try{this.enterOuterAlt(e,1),this.state=7406,this.vacuumAnalyzeOptionName(),this.state=7407,this.vacuumAnalyzeOptionArgument()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}vacuumAnalyzeOptionName(){let e=new lS(this.context,this.state);this.enterRule(e,770,t.RULE_vacuumAnalyzeOptionName);try{switch(this.state=7411,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=7409,this.nonReservedWord();break;case t.ANALYSE:case t.ANALYZE:this.enterOuterAlt(e,2),this.state=7410,this.analyzeKeyword();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}vacuumAnalyzeOptionArgument(){let e=new OS(this.context,this.state);this.enterRule(e,772,t.RULE_vacuumAnalyzeOptionArgument);try{switch(this.state=7416,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.ON:case t.TABLE:case t.TRUE_P:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=7413,this.booleanOrString();break;case t.PLUS:case t.MINUS:case t.Integral:case t.Numeric:this.enterOuterAlt(e,2),this.state=7414,this.numericOnly();break;case t.CLOSE_PAREN:case t.COMMA:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalVerbose(){let e=new IS(this.context,this.state);this.enterRule(e,774,t.RULE_optionalVerbose);try{switch(this.state=7420,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.VERBOSE:this.enterOuterAlt(e,1),this.state=7418,this.match(t.VERBOSE);break;case t.EOF:case t.OPEN_PAREN:case t.SEMI:case t.ANALYSE:case t.ANALYZE:case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CREATE:case t.DEFAULT:case t.DO:case t.FETCH:case t.INTO:case t.SELECT:case t.TABLE:case t.WITH:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalNameList(){let e=new uS(this.context,this.state);this.enterRule(e,776,t.RULE_optionalNameList);try{switch(this.state=7427,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.enterOuterAlt(e,1),this.state=7422,this.match(t.OPEN_PAREN),this.state=7423,this.nameList(),this.state=7424,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.COMMA:case t.SEMI:case t.AS:case t.INTO:case t.ON:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}vacuumRelation(){let e=new NS(this.context,this.state);this.enterRule(e,778,t.RULE_vacuumRelation);try{this.enterOuterAlt(e,1),this.state=7429,this.qualifiedName(),this.state=7430,this.optionalNameList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalVacuumRelationList(){let e,s=new LS(this.context,this.state);this.enterRule(s,780,t.RULE_optionalVacuumRelationList);try{switch(this.state=7441,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:for(this.enterOuterAlt(s,1),this.state=7432,this.vacuumRelation(),this.state=7437,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=7433,this.match(t.COMMA),this.state=7434,this.vacuumRelation(),this.state=7439,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case t.EOF:case t.SEMI:case t.INTO:this.enterOuterAlt(s,2);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}explainStatement(){let e,s=new CS(this.context,this.state);this.enterRule(s,782,t.RULE_explainStatement);try{switch(this.state=7466,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,412,this.context)){case 1:this.enterOuterAlt(s,1),this.state=7443,this.match(t.EXPLAIN),this.state=7444,this.explainableStatement();break;case 2:this.enterOuterAlt(s,2),this.state=7445,this.match(t.EXPLAIN),this.state=7446,this.analyzeKeyword(),this.state=7447,this.optionalVerbose(),this.state=7448,this.explainableStatement();break;case 3:this.enterOuterAlt(s,3),this.state=7450,this.match(t.EXPLAIN),this.state=7451,this.match(t.VERBOSE),this.state=7452,this.explainableStatement();break;case 4:for(this.enterOuterAlt(s,4),this.state=7453,this.match(t.EXPLAIN),this.state=7454,this.match(t.OPEN_PAREN),this.state=7455,this.explainOptionElement(),this.state=7460,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=7456,this.match(t.COMMA),this.state=7457,this.explainOptionElement(),this.state=7462,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=7463,this.match(t.CLOSE_PAREN),this.state=7464,this.explainableStatement()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}explainableStatement(){let e=new _S(this.context,this.state);this.enterRule(e,784,t.RULE_explainableStatement);try{switch(this.state=7477,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,413,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7468,this.selectStatement();break;case 2:this.enterOuterAlt(e,2),this.state=7469,this.insertStatement();break;case 3:this.enterOuterAlt(e,3),this.state=7470,this.updateStatement();break;case 4:this.enterOuterAlt(e,4),this.state=7471,this.deleteStatement();break;case 5:this.enterOuterAlt(e,5),this.state=7472,this.declareCursorStatement();break;case 6:this.enterOuterAlt(e,6),this.state=7473,this.createAsStatement();break;case 7:this.enterOuterAlt(e,7),this.state=7474,this.createMaterializedViewStatement();break;case 8:this.enterOuterAlt(e,8),this.state=7475,this.refreshMaterializedViewStatement();break;case 9:this.enterOuterAlt(e,9),this.state=7476,this.executeStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}explainOptionElement(){let e=new PS(this.context,this.state);this.enterRule(e,786,t.RULE_explainOptionElement);try{this.enterOuterAlt(e,1),this.state=7479,this.explainOptionName(),this.state=7480,this.explainOptionArgument()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}explainOptionName(){let e=new MS(this.context,this.state);this.enterRule(e,788,t.RULE_explainOptionName);try{switch(this.state=7484,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=7482,this.nonReservedWord();break;case t.ANALYSE:case t.ANALYZE:this.enterOuterAlt(e,2),this.state=7483,this.analyzeKeyword();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}explainOptionArgument(){let e=new dS(this.context,this.state);this.enterRule(e,790,t.RULE_explainOptionArgument);try{switch(this.state=7489,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.ON:case t.TABLE:case t.TRUE_P:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=7486,this.booleanOrString();break;case t.PLUS:case t.MINUS:case t.Integral:case t.Numeric:this.enterOuterAlt(e,2),this.state=7487,this.numericOnly();break;case t.CLOSE_PAREN:case t.COMMA:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}prepareStatement(){let e=new US(this.context,this.state);this.enterRule(e,792,t.RULE_prepareStatement);try{this.enterOuterAlt(e,1),this.state=7491,this.match(t.PREPARE),this.state=7492,this.name(),this.state=7493,this.prepareTypeClause(),this.state=7494,this.match(t.AS),this.state=7495,this.preparableStatement()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}prepareTypeClause(){let e=new mS(this.context,this.state);this.enterRule(e,794,t.RULE_prepareTypeClause);try{switch(this.state=7502,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.enterOuterAlt(e,1),this.state=7497,this.match(t.OPEN_PAREN),this.state=7498,this.typeList(),this.state=7499,this.match(t.CLOSE_PAREN);break;case t.AS:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}preparableStatement(){let e=new DS(this.context,this.state);this.enterRule(e,796,t.RULE_preparableStatement);try{switch(this.state=7508,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,417,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7504,this.selectStatement();break;case 2:this.enterOuterAlt(e,2),this.state=7505,this.insertStatement();break;case 3:this.enterOuterAlt(e,3),this.state=7506,this.updateStatement();break;case 4:this.enterOuterAlt(e,4),this.state=7507,this.deleteStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}executeStatement(){let e=new pS(this.context,this.state);this.enterRule(e,798,t.RULE_executeStatement);try{switch(this.state=7537,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,418,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7510,this.match(t.EXECUTE),this.state=7511,this.name(),this.state=7512,this.executeParameterClause();break;case 2:this.enterOuterAlt(e,2),this.state=7514,this.match(t.CREATE),this.state=7515,this.temporaryOption(),this.state=7516,this.match(t.TABLE),this.state=7517,this.createAsTarget(),this.state=7518,this.match(t.AS),this.state=7519,this.match(t.EXECUTE),this.state=7520,this.name(),this.state=7521,this.executeParameterClause(),this.state=7522,this.withData();break;case 3:this.enterOuterAlt(e,3),this.state=7524,this.match(t.CREATE),this.state=7525,this.temporaryOption(),this.state=7526,this.match(t.TABLE),this.state=7527,this.match(t.IF_P),this.state=7528,this.match(t.NOT),this.state=7529,this.match(t.EXISTS),this.state=7530,this.createAsTarget(),this.state=7531,this.match(t.AS),this.state=7532,this.match(t.EXECUTE),this.state=7533,this.name(),this.state=7534,this.executeParameterClause(),this.state=7535,this.withData()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}executeParameterClause(){let e=new gS(this.context,this.state);this.enterRule(e,800,t.RULE_executeParameterClause);try{switch(this.state=7544,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.enterOuterAlt(e,1),this.state=7539,this.match(t.OPEN_PAREN),this.state=7540,this.expressionList(),this.state=7541,this.match(t.CLOSE_PAREN);break;case t.EOF:case t.SEMI:case t.INTO:case t.WITH:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}deallocateStatement(){let e=new xS(this.context,this.state);this.enterRule(e,802,t.RULE_deallocateStatement);try{switch(this.state=7556,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,420,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7546,this.match(t.DEALLOCATE),this.state=7547,this.name();break;case 2:this.enterOuterAlt(e,2),this.state=7548,this.match(t.DEALLOCATE),this.state=7549,this.match(t.PREPARE),this.state=7550,this.name();break;case 3:this.enterOuterAlt(e,3),this.state=7551,this.match(t.DEALLOCATE),this.state=7552,this.match(t.ALL);break;case 4:this.enterOuterAlt(e,4),this.state=7553,this.match(t.DEALLOCATE),this.state=7554,this.match(t.PREPARE),this.state=7555,this.match(t.ALL)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}insertStatement(){let e,s=new kS(this.context,this.state);this.enterRule(s,804,t.RULE_insertStatement);try{this.enterOuterAlt(s,1),this.state=7559,this.errorHandler.sync(this),e=this.tokenStream.LA(1),105===e&&(this.state=7558,this.withClause()),this.state=7561,this.match(t.INSERT),this.state=7562,this.match(t.INTO),this.state=7563,this.insertTarget(),this.state=7564,this.insertRest(),this.state=7565,this.optionalOnConflict(),this.state=7566,this.returningClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}insertTarget(){let e,s=new HS(this.context,this.state);this.enterRule(s,806,t.RULE_insertTarget);try{this.enterOuterAlt(s,1),this.state=7568,this.qualifiedName(),this.state=7571,this.errorHandler.sync(this),e=this.tokenStream.LA(1),36===e&&(this.state=7569,this.match(t.AS),this.state=7570,this.columnId())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}insertRest(){let e,s=new GS(this.context,this.state);this.enterRule(s,808,t.RULE_insertRest);try{switch(this.state=7592,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,424,this.context)){case 1:this.enterOuterAlt(s,1),this.state=7573,this.selectStatement();break;case 2:this.enterOuterAlt(s,2),this.state=7574,this.match(t.OVERRIDING),this.state=7575,this.overrideKind(),this.state=7576,this.match(t.VALUE_P),this.state=7577,this.selectStatement();break;case 3:this.enterOuterAlt(s,3),this.state=7579,this.match(t.OPEN_PAREN),this.state=7580,this.insertColumnList(),this.state=7581,this.match(t.CLOSE_PAREN),this.state=7586,this.errorHandler.sync(this),e=this.tokenStream.LA(1),463===e&&(this.state=7582,this.match(t.OVERRIDING),this.state=7583,this.overrideKind(),this.state=7584,this.match(t.VALUE_P)),this.state=7588,this.selectStatement();break;case 4:this.enterOuterAlt(s,4),this.state=7590,this.match(t.DEFAULT),this.state=7591,this.match(t.VALUES)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}overrideKind(){let e,s=new FS(this.context,this.state);this.enterRule(s,810,t.RULE_overrideKind);try{this.enterOuterAlt(s,1),this.state=7594,e=this.tokenStream.LA(1),99===e||342===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}insertColumnList(){let e,s=new vS(this.context,this.state);this.enterRule(s,812,t.RULE_insertColumnList);try{for(this.enterOuterAlt(s,1),this.state=7596,this.insertColumnItem(),this.state=7601,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=7597,this.match(t.COMMA),this.state=7598,this.insertColumnItem(),this.state=7603,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}insertColumnItem(){let e=new BS(this.context,this.state);this.enterRule(e,814,t.RULE_insertColumnItem);try{this.enterOuterAlt(e,1),this.state=7604,this.columnId(),this.state=7605,this.optionalIndirection()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalOnConflict(){let e=new yS(this.context,this.state);this.enterRule(e,816,t.RULE_optionalOnConflict);try{switch(this.state=7620,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ON:switch(this.enterOuterAlt(e,1),this.state=7607,this.match(t.ON),this.state=7608,this.match(t.CONFLICT),this.state=7609,this.optionalConflictExpr(),this.state=7610,this.match(t.DO),this.state=7617,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.UPDATE:this.state=7611,this.match(t.UPDATE),this.state=7612,this.match(t.SET),this.state=7613,this.setClauseList(),this.state=7614,this.whereClause();break;case t.NOTHING:this.state=7616,this.match(t.NOTHING);break;default:throw new Ei(this)}break;case t.EOF:case t.CLOSE_PAREN:case t.SEMI:case t.INTO:case t.RETURNING:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalConflictExpr(){let e=new fS(this.context,this.state);this.enterRule(e,818,t.RULE_optionalConflictExpr);try{switch(this.state=7631,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.enterOuterAlt(e,1),this.state=7622,this.match(t.OPEN_PAREN),this.state=7623,this.indexParameters(),this.state=7624,this.match(t.CLOSE_PAREN),this.state=7625,this.whereClause();break;case t.ON:this.enterOuterAlt(e,2),this.state=7627,this.match(t.ON),this.state=7628,this.match(t.CONSTRAINT),this.state=7629,this.constraintName();break;case t.DO:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}returningClause(){let e=new YS(this.context,this.state);this.enterRule(e,820,t.RULE_returningClause);try{switch(this.state=7636,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.RETURNING:this.enterOuterAlt(e,1),this.state=7633,this.match(t.RETURNING),this.state=7634,this.targetList();break;case t.EOF:case t.CLOSE_PAREN:case t.SEMI:case t.INTO:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}mergeStatement(){let e,s=new wS(this.context,this.state);this.enterRule(s,822,t.RULE_mergeStatement);try{switch(this.enterOuterAlt(s,1),this.state=7638,this.match(t.MERGE),this.state=7640,this.errorHandler.sync(this),e=this.tokenStream.LA(1),71===e&&(this.state=7639,this.match(t.INTO)),this.state=7642,this.qualifiedName(),this.state=7644,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-33&-32)&&1<<e-33&286268429||!(e-92&-32)&&1<<e-92&2298478593||!(e-124&-32)&&1<<e-124&4294967269||!(e-156&-32)&&1<<e-156&4294967295||!(e-188&-32)&&1<<e-188&4294967295||!(e-220&-32)&&1<<e-220&3221225471||!(e-252&-32)&&1<<e-252&4294967293||!(e-284&-32)&&1<<e-284&4294967295||!(e-316&-32)&&1<<e-316&4294967295||!(e-348&-32)&&1<<e-348&4294967295||!(e-380&-32)&&1<<e-380&4294967295||!(e-412&-32)&&1<<e-412&4294967295||!(e-444&-32)&&1<<e-444&4026530815||!(e-476&-32)&&1<<e-476&3623878655||!(e-508&-32)&&1<<e-508&4294965247||!(e-540&-32)&&1<<e-540&4294967295||!(e-572&-32)&&1<<e-572&4294967295||!(e-604&-32)&&1<<e-604&4294967295||!(e-636&-32)&&1<<e-636&100663331)&&(this.state=7643,this.aliasClause()),this.state=7646,this.match(t.USING),this.state=7649,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.state=7647,this.selectWithParenthesis();break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.state=7648,this.qualifiedName();break;default:throw new Ei(this)}switch(this.state=7652,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-33&-32)&&1<<e-33&286268429||!(e-92&-32)&&1<<e-92&2298478593||!(e-124&-32)&&1<<e-124&4294967269||!(e-156&-32)&&1<<e-156&4294967295||!(e-188&-32)&&1<<e-188&4294967295||!(e-220&-32)&&1<<e-220&3221225471||!(e-252&-32)&&1<<e-252&4294967293||!(e-284&-32)&&1<<e-284&4294967295||!(e-316&-32)&&1<<e-316&4294967295||!(e-348&-32)&&1<<e-348&4294967295||!(e-380&-32)&&1<<e-380&4294967295||!(e-412&-32)&&1<<e-412&4294967295||!(e-444&-32)&&1<<e-444&4026530815||!(e-476&-32)&&1<<e-476&3623878655||!(e-508&-32)&&1<<e-508&4294965247||!(e-540&-32)&&1<<e-540&4294967295||!(e-572&-32)&&1<<e-572&4294967295||!(e-604&-32)&&1<<e-604&4294967295||!(e-636&-32)&&1<<e-636&100663331)&&(this.state=7651,this.aliasClause()),this.state=7654,this.match(t.ON),this.state=7655,this.expression1(),this.state=7664,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,436,this.context)){case 1:if(1===(this.state=7656,this.mergeInsertClause(),this.state=7658,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,434,this.context)))this.state=7657,this.mergeUpdateClause();break;case 2:if(1===(this.state=7660,this.mergeUpdateClause(),this.state=7662,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,435,this.context)))this.state=7661,this.mergeInsertClause()}this.state=7667,this.errorHandler.sync(this),e=this.tokenStream.LA(1),102===e&&(this.state=7666,this.mergeDeleteClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}mergeInsertClause(){let e,s=new bS(this.context,this.state);this.enterRule(s,824,t.RULE_mergeInsertClause);try{this.enterOuterAlt(s,1),this.state=7669,this.match(t.WHEN),this.state=7670,this.match(t.NOT),this.state=7671,this.match(t.MATCHED),this.state=7674,this.errorHandler.sync(this),e=this.tokenStream.LA(1),33===e&&(this.state=7672,this.match(t.AND),this.state=7673,this.expression1()),this.state=7677,this.errorHandler.sync(this),e=this.tokenStream.LA(1),93===e&&(this.state=7676,this.match(t.THEN)),this.state=7679,this.match(t.INSERT),this.state=7684,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=7680,this.match(t.OPEN_PAREN),this.state=7681,this.insertColumnList(),this.state=7682,this.match(t.CLOSE_PAREN)),this.state=7686,this.valuesClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}mergeUpdateClause(){let e,s=new WS(this.context,this.state);this.enterRule(s,826,t.RULE_mergeUpdateClause);try{this.enterOuterAlt(s,1),this.state=7688,this.match(t.WHEN),this.state=7689,this.match(t.MATCHED),this.state=7692,this.errorHandler.sync(this),e=this.tokenStream.LA(1),33===e&&(this.state=7690,this.match(t.AND),this.state=7691,this.expression1()),this.state=7695,this.errorHandler.sync(this),e=this.tokenStream.LA(1),93===e&&(this.state=7694,this.match(t.THEN)),this.state=7697,this.match(t.UPDATE),this.state=7698,this.match(t.SET),this.state=7699,this.setClauseList()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}mergeDeleteClause(){let e,s=new VS(this.context,this.state);this.enterRule(s,828,t.RULE_mergeDeleteClause);try{this.enterOuterAlt(s,1),this.state=7701,this.match(t.WHEN),this.state=7702,this.match(t.MATCHED),this.state=7704,this.errorHandler.sync(this),e=this.tokenStream.LA(1),93===e&&(this.state=7703,this.match(t.THEN)),this.state=7706,this.match(t.DELETE_P)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}deleteStatement(){let e,s=new XS(this.context,this.state);this.enterRule(s,830,t.RULE_deleteStatement);try{this.enterOuterAlt(s,1),this.state=7709,this.errorHandler.sync(this),e=this.tokenStream.LA(1),105===e&&(this.state=7708,this.withClause()),this.state=7711,this.match(t.DELETE_P),this.state=7712,this.match(t.FROM),this.state=7713,this.relationExpressionOptionalAlias(),this.state=7714,this.usingClause(),this.state=7715,this.whereOrCurrentClause(),this.state=7716,this.returningClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}usingClause(){let e=new KS(this.context,this.state);this.enterRule(e,832,t.RULE_usingClause);try{switch(this.state=7721,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.USING:this.enterOuterAlt(e,1),this.state=7718,this.match(t.USING),this.state=7719,this.fromList();break;case t.EOF:case t.CLOSE_PAREN:case t.SEMI:case t.INTO:case t.RETURNING:case t.WHERE:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}lockStatement(){let e=new QS(this.context,this.state);this.enterRule(e,834,t.RULE_lockStatement);try{this.enterOuterAlt(e,1),this.state=7723,this.match(t.LOCK_P),this.state=7724,this.optionalTable(),this.state=7725,this.relationExpressionList(),this.state=7726,this.optionalLock(),this.state=7727,this.optionalNowait()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalLock(){let e=new JS(this.context,this.state);this.enterRule(e,836,t.RULE_optionalLock);try{switch(this.state=7734,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.IN_P:this.enterOuterAlt(e,1),this.state=7729,this.match(t.IN_P),this.state=7730,this.lockType(),this.state=7731,this.match(t.MODE);break;case t.EOF:case t.SEMI:case t.INTO:case t.NOWAIT:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}lockType(){let e,s=new ZS(this.context,this.state);this.enterRule(s,838,t.RULE_lockType);try{switch(this.state=7748,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ACCESS:this.enterOuterAlt(s,1),this.state=7736,this.match(t.ACCESS),this.state=7737,e=this.tokenStream.LA(1),201===e||327===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.ROW:this.enterOuterAlt(s,2),this.state=7738,this.match(t.ROW),this.state=7739,e=this.tokenStream.LA(1),201===e||327===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.SHARE:switch(this.enterOuterAlt(s,3),this.state=7740,this.match(t.SHARE),this.state=7745,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.UPDATE:this.state=7741,this.match(t.UPDATE),this.state=7742,this.match(t.EXCLUSIVE);break;case t.ROW:this.state=7743,this.match(t.ROW),this.state=7744,this.match(t.EXCLUSIVE);case t.MODE:}break;case t.EXCLUSIVE:this.enterOuterAlt(s,4),this.state=7747,this.match(t.EXCLUSIVE);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalNowait(){let e=new qS(this.context,this.state);this.enterRule(e,840,t.RULE_optionalNowait);try{switch(this.state=7752,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NOWAIT:this.enterOuterAlt(e,1),this.state=7750,this.match(t.NOWAIT);break;case t.EOF:case t.SEMI:case t.INTO:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalNowaitOrSkip(){let e=new jS(this.context,this.state);this.enterRule(e,842,t.RULE_optionalNowaitOrSkip);try{switch(this.state=7758,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NOWAIT:this.enterOuterAlt(e,1),this.state=7754,this.match(t.NOWAIT);break;case t.SKIP_P:this.enterOuterAlt(e,2),this.state=7755,this.match(t.SKIP_P),this.state=7756,this.match(t.LOCKED);break;case t.EOF:case t.CLOSE_PAREN:case t.SEMI:case t.CREATE:case t.FETCH:case t.FOR:case t.GRANT:case t.INTO:case t.LIMIT:case t.OFFSET:case t.ON:case t.RETURNING:case t.WITH:case t.LOOP:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}updateStatement(){let e,s=new zS(this.context,this.state);this.enterRule(s,844,t.RULE_updateStatement);try{this.enterOuterAlt(s,1),this.state=7761,this.errorHandler.sync(this),e=this.tokenStream.LA(1),105===e&&(this.state=7760,this.withClause()),this.state=7763,this.match(t.UPDATE),this.state=7764,this.relationExpressionOptionalAlias(),this.state=7765,this.match(t.SET),this.state=7766,this.setClauseList(),this.state=7767,this.fromClause(),this.state=7768,this.whereOrCurrentClause(),this.state=7769,this.returningClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}setClauseList(){let e,s=new $S(this.context,this.state);this.enterRule(s,846,t.RULE_setClauseList);try{for(this.enterOuterAlt(s,1),this.state=7771,this.setClause(),this.state=7776,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=7772,this.match(t.COMMA),this.state=7773,this.setClause(),this.state=7778,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}setClause(){let e,s=new tl(this.context,this.state);this.enterRule(s,848,t.RULE_setClause);try{switch(this.state=7796,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(s,1),this.state=7779,this.setTarget(),this.state=7780,this.match(t.EQUAL),this.state=7781,this.expression1();break;case t.OPEN_PAREN:for(this.enterOuterAlt(s,2),this.state=7783,this.match(t.OPEN_PAREN),this.state=7784,this.setTarget(),this.state=7789,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=7785,this.match(t.COMMA),this.state=7786,this.setTarget(),this.state=7791,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=7792,this.match(t.CLOSE_PAREN),this.state=7793,this.match(t.EQUAL),this.state=7794,this.expression1();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}setTarget(){let e=new el(this.context,this.state);this.enterRule(e,850,t.RULE_setTarget);try{this.enterOuterAlt(e,1),this.state=7798,this.columnId(),this.state=7799,this.optionalIndirection()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareCursorStatement(){let e,s=new sl(this.context,this.state);this.enterRule(s,852,t.RULE_declareCursorStatement);try{for(this.enterOuterAlt(s,1),this.state=7801,this.match(t.DECLARE),this.state=7802,this.cursorName(),this.state=7810,this.errorHandler.sync(this),e=this.tokenStream.LA(1);107===e||231===e||262===e||317===e;){switch(this.state=7808,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NO:this.state=7803,this.match(t.NO),this.state=7804,this.match(t.SCROLL);break;case t.SCROLL:this.state=7805,this.match(t.SCROLL);break;case t.BINARY:this.state=7806,this.match(t.BINARY);break;case t.INSENSITIVE:this.state=7807,this.match(t.INSENSITIVE);break;default:throw new Ei(this)}this.state=7812,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}this.state=7813,this.match(t.CURSOR),this.state=7814,this.optionalHold(),this.state=7815,this.match(t.FOR),this.state=7816,this.selectStatement()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}cursorName(){let e=new al(this.context,this.state);this.enterRule(e,854,t.RULE_cursorName);try{this.enterOuterAlt(e,1),this.state=7818,this.name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalHold(){let e=new rl(this.context,this.state);this.enterRule(e,856,t.RULE_optionalHold);try{switch(this.state=7825,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:this.enterOuterAlt(e,1);break;case t.WITH:this.enterOuterAlt(e,2),this.state=7821,this.match(t.WITH),this.state=7822,this.match(t.HOLD);break;case t.WITHOUT:this.enterOuterAlt(e,3),this.state=7823,this.match(t.WITHOUT),this.state=7824,this.match(t.HOLD);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}selectStatement(){let e=new il(this.context,this.state);this.enterRule(e,858,t.RULE_selectStatement);try{switch(this.state=7829,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,458,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7827,this.selectWithoutParenthesis();break;case 2:this.enterOuterAlt(e,2),this.state=7828,this.selectWithParenthesis()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}selectWithParenthesis(){let e=new cl(this.context,this.state);this.enterRule(e,860,t.RULE_selectWithParenthesis);try{switch(this.state=7839,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,459,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7831,this.match(t.OPEN_PAREN),this.state=7832,this.selectWithoutParenthesis(),this.state=7833,this.match(t.CLOSE_PAREN);break;case 2:this.enterOuterAlt(e,2),this.state=7835,this.match(t.OPEN_PAREN),this.state=7836,this.selectWithParenthesis(),this.state=7837,this.match(t.CLOSE_PAREN)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}selectWithoutParenthesis(){let e,s=new nl(this.context,this.state);this.enterRule(s,862,t.RULE_selectWithoutParenthesis);try{switch(this.state=7864,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:case t.SELECT:case t.TABLE:case t.VALUES:switch(this.enterOuterAlt(s,1),this.state=7841,this.selectClause(),this.state=7842,this.optionalSortClause(),this.state=7850,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:this.state=7843,this.forLockingClause(),this.state=7844,this.optionalSelectLimit();break;case t.FETCH:case t.LIMIT:case t.OFFSET:this.state=7846,this.selectLimit(),this.state=7848,this.errorHandler.sync(this),e=this.tokenStream.LA(1),62===e&&(this.state=7847,this.forLockingClause());case t.EOF:case t.CLOSE_PAREN:case t.SEMI:case t.CREATE:case t.GRANT:case t.INTO:case t.ON:case t.RETURNING:case t.WITH:case t.LOOP:}break;case t.WITH:switch(this.enterOuterAlt(s,2),this.state=7852,this.withClause(),this.state=7853,this.selectClause(),this.state=7854,this.optionalSortClause(),this.state=7862,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:this.state=7855,this.forLockingClause(),this.state=7856,this.optionalSelectLimit();break;case t.FETCH:case t.LIMIT:case t.OFFSET:this.state=7858,this.selectLimit(),this.state=7860,this.errorHandler.sync(this),e=this.tokenStream.LA(1),62===e&&(this.state=7859,this.forLockingClause());case t.EOF:case t.CLOSE_PAREN:case t.SEMI:case t.CREATE:case t.GRANT:case t.INTO:case t.ON:case t.RETURNING:case t.WITH:case t.LOOP:}break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}selectClause(){let e,s=new hl(this.context,this.state);this.enterRule(s,864,t.RULE_selectClause);try{for(this.enterOuterAlt(s,1),this.state=7866,this.simpleSelectIntersect(),this.state=7873,this.errorHandler.sync(this),e=this.tokenStream.LA(1);59===e||97===e;)this.state=7867,e=this.tokenStream.LA(1),59===e||97===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=7868,this.allOrDistinct(),this.state=7869,this.simpleSelectIntersect(),this.state=7875,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}simpleSelectIntersect(){let e,s=new El(this.context,this.state);this.enterRule(s,866,t.RULE_simpleSelectIntersect);try{for(this.enterOuterAlt(s,1),this.state=7876,this.simpleSelectPramary(),this.state=7883,this.errorHandler.sync(this),e=this.tokenStream.LA(1);70===e;)this.state=7877,this.match(t.INTERSECT),this.state=7878,this.allOrDistinct(),this.state=7879,this.simpleSelectPramary(),this.state=7885,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}simpleSelectStart(){let e=new Tl(this.context,this.state);this.enterRule(e,868,t.RULE_simpleSelectStart);try{switch(this.state=7901,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:case t.STAR:case t.PLUS:case t.MINUS:case t.PARAM:case t.Operator:case t.AND:case t.ARRAY:case t.CASE:case t.CAST:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NOT:case t.NULL_P:case t.SESSION_USER:case t.TABLE:case t.TRUE_P:case t.UNIQUE:case t.USER:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LEFT:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.RIGHT:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.BinaryStringConstant:case t.HexadecimalStringConstant:case t.Integral:case t.Numeric:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:if(1===(this.enterOuterAlt(e,1),this.state=7886,this.targetList(),this.state=7888,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,467,this.context)))this.state=7887,this.intoClause();break;case t.ALL:if(1===(this.enterOuterAlt(e,2),this.state=7890,this.allClause(),this.state=7891,this.optionalTargetList(),this.state=7893,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,468,this.context)))this.state=7892,this.intoClause();break;case t.DISTINCT:if(1===(this.enterOuterAlt(e,3),this.state=7895,this.distinctClause(),this.state=7896,this.targetList(),this.state=7898,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,469,this.context)))this.state=7897,this.intoClause();break;case t.INTO:this.enterOuterAlt(e,4),this.state=7900,this.intoClause();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}simpleSelectPramary(){let e=new ol(this.context,this.state);this.enterRule(e,870,t.RULE_simpleSelectPramary);try{switch(this.state=7915,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SELECT:this.enterOuterAlt(e,1),this.state=7903,this.match(t.SELECT),this.state=7904,this.simpleSelectStart(),this.state=7905,this.fromClause(),this.state=7906,this.whereClause(),this.state=7907,this.groupClause(),this.state=7908,this.havingClause(),this.state=7909,this.windowClause();break;case t.VALUES:this.enterOuterAlt(e,2),this.state=7911,this.valuesClause();break;case t.TABLE:this.enterOuterAlt(e,3),this.state=7912,this.match(t.TABLE),this.state=7913,this.relationExpression();break;case t.OPEN_PAREN:this.enterOuterAlt(e,4),this.state=7914,this.selectWithParenthesis();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}withClause(){let e,s=new Rl(this.context,this.state);this.enterRule(s,872,t.RULE_withClause);try{if(this.enterOuterAlt(s,1),1===(this.state=7917,this.match(t.WITH),this.state=7919,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,472,this.context)))this.state=7918,this.match(t.RECURSIVE);for(this.state=7921,this.commonTableExpression(),this.state=7926,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=7922,this.match(t.COMMA),this.state=7923,this.commonTableExpression(),this.state=7928,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}commonTableExpression(){let e=new Al(this.context,this.state);this.enterRule(e,874,t.RULE_commonTableExpression);try{this.enterOuterAlt(e,1),this.state=7929,this.name(),this.state=7930,this.optionalNameList(),this.state=7931,this.match(t.AS),this.state=7932,this.optionalMaterialized(),this.state=7933,this.match(t.OPEN_PAREN),this.state=7934,this.preparableStatement(),this.state=7935,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalMaterialized(){let e=new Sl(this.context,this.state);this.enterRule(e,876,t.RULE_optionalMaterialized);try{switch(this.state=7941,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.MATERIALIZED:this.enterOuterAlt(e,1),this.state=7937,this.match(t.MATERIALIZED);break;case t.NOT:this.enterOuterAlt(e,2),this.state=7938,this.match(t.NOT),this.state=7939,this.match(t.MATERIALIZED);break;case t.OPEN_PAREN:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}intoClause(){let e=new ll(this.context,this.state);this.enterRule(e,878,t.RULE_intoClause);try{switch(this.enterOuterAlt(e,1),this.state=7943,this.match(t.INTO),this.state=7949,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,476,this.context)){case 1:if(1===(this.state=7945,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,475,this.context)))this.state=7944,this.match(t.STRICT_P);this.state=7947,this.optionalTemporaryTableName();break;case 2:this.state=7948,this.intoTarget()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalTemporaryTableName(){let e,s=new Ol(this.context,this.state);this.enterRule(s,880,t.RULE_optionalTemporaryTableName);try{switch(this.state=7965,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,478,this.context)){case 1:this.enterOuterAlt(s,1),this.state=7952,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(213===e||245===e)&&(this.state=7951,e=this.tokenStream.LA(1),213===e||245===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=7954,e=this.tokenStream.LA(1),345===e||347===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=7955,this.optionalTable(),this.state=7956,this.qualifiedName();break;case 2:this.enterOuterAlt(s,2),this.state=7958,this.match(t.UNLOGGED),this.state=7959,this.optionalTable(),this.state=7960,this.qualifiedName();break;case 3:this.enterOuterAlt(s,3),this.state=7962,this.match(t.TABLE),this.state=7963,this.qualifiedName();break;case 4:this.enterOuterAlt(s,4),this.state=7964,this.qualifiedName()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalTable(){let e=new Il(this.context,this.state);this.enterRule(e,882,t.RULE_optionalTable);try{switch(this.state=7969,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,479,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7967,this.match(t.TABLE);break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}allOrDistinct(){let e=new ul(this.context,this.state);this.enterRule(e,884,t.RULE_allOrDistinct);try{switch(this.state=7974,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALL:this.enterOuterAlt(e,1),this.state=7971,this.match(t.ALL);break;case t.DISTINCT:this.enterOuterAlt(e,2),this.state=7972,this.match(t.DISTINCT);break;case t.OPEN_PAREN:case t.SELECT:case t.TABLE:case t.VALUES:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}distinctClause(){let e,s=new Nl(this.context,this.state);this.enterRule(s,886,t.RULE_distinctClause);try{this.enterOuterAlt(s,1),this.state=7976,this.match(t.DISTINCT),this.state=7982,this.errorHandler.sync(this),e=this.tokenStream.LA(1),80===e&&(this.state=7977,this.match(t.ON),this.state=7978,this.match(t.OPEN_PAREN),this.state=7979,this.expressionList(),this.state=7980,this.match(t.CLOSE_PAREN))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}allClause(){let e=new Ll(this.context,this.state);this.enterRule(e,888,t.RULE_allClause);try{this.enterOuterAlt(e,1),this.state=7984,this.match(t.ALL)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalSortClause(){let e=new Cl(this.context,this.state);this.enterRule(e,890,t.RULE_optionalSortClause);try{switch(this.state=7988,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ORDER:this.enterOuterAlt(e,1),this.state=7986,this.sortClause();break;case t.EOF:case t.CLOSE_PAREN:case t.SEMI:case t.CREATE:case t.FETCH:case t.FOR:case t.GRANT:case t.INTO:case t.LIMIT:case t.OFFSET:case t.ON:case t.RETURNING:case t.WITH:case t.RANGE:case t.ROWS:case t.GROUPS:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sortClause(){let e=new _l(this.context,this.state);this.enterRule(e,892,t.RULE_sortClause);try{this.enterOuterAlt(e,1),this.state=7990,this.match(t.ORDER),this.state=7991,this.match(t.BY),this.state=7992,this.sortByList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sortByList(){let e,s=new Pl(this.context,this.state);this.enterRule(s,894,t.RULE_sortByList);try{for(this.enterOuterAlt(s,1),this.state=7994,this.sortBy(),this.state=7999,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=7995,this.match(t.COMMA),this.state=7996,this.sortBy(),this.state=8001,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sortBy(){let e=new Ml(this.context,this.state);this.enterRule(e,896,t.RULE_sortBy);try{switch(this.enterOuterAlt(e,1),this.state=8002,this.expression1(),this.state=8006,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.USING:this.state=8003,this.match(t.USING),this.state=8004,this.allOperatorQualifier();break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.ASC:case t.CREATE:case t.DESC:case t.FETCH:case t.FOR:case t.GRANT:case t.INTO:case t.LIMIT:case t.OFFSET:case t.ON:case t.RETURNING:case t.WITH:case t.NULLS_P:case t.RANGE:case t.ROWS:case t.GROUPS:case t.LOOP:this.state=8005,this.optionalAscOrDesc();break;default:throw new Ei(this)}this.state=8008,this.optionalNullsOrder()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}selectLimit(){let e,s=new dl(this.context,this.state);this.enterRule(s,898,t.RULE_selectLimit);try{switch(this.state=8018,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FETCH:case t.LIMIT:this.enterOuterAlt(s,1),this.state=8010,this.limitClause(),this.state=8012,this.errorHandler.sync(this),e=this.tokenStream.LA(1),79===e&&(this.state=8011,this.offsetClause());break;case t.OFFSET:this.enterOuterAlt(s,2),this.state=8014,this.offsetClause(),this.state=8016,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(61===e||74===e)&&(this.state=8015,this.limitClause());break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalSelectLimit(){let e=new Ul(this.context,this.state);this.enterRule(e,900,t.RULE_optionalSelectLimit);try{switch(this.state=8022,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FETCH:case t.LIMIT:case t.OFFSET:this.enterOuterAlt(e,1),this.state=8020,this.selectLimit();break;case t.EOF:case t.CLOSE_PAREN:case t.SEMI:case t.CREATE:case t.GRANT:case t.INTO:case t.ON:case t.RETURNING:case t.WITH:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}limitClause(){let e,s=new ml(this.context,this.state);this.enterRule(s,902,t.RULE_limitClause);try{switch(this.state=8047,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LIMIT:this.enterOuterAlt(s,1),this.state=8024,this.match(t.LIMIT),this.state=8025,this.selectLimitValue(),this.state=8028,this.errorHandler.sync(this),e=this.tokenStream.LA(1),6===e&&(this.state=8026,this.match(t.COMMA),this.state=8027,this.selectOffsetValue());break;case t.FETCH:switch(this.enterOuterAlt(s,2),this.state=8030,this.match(t.FETCH),this.state=8031,this.firstOrNext(),this.state=8045,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,492,this.context)){case 1:switch(this.state=8032,this.selectFetchFirstValue(),this.state=8033,this.rowOrRows(),this.state=8037,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ONLY:this.state=8034,this.match(t.ONLY);break;case t.WITH:this.state=8035,this.match(t.WITH),this.state=8036,this.match(t.TIES);break;default:throw new Ei(this)}break;case 2:switch(this.state=8039,this.rowOrRows(),this.state=8043,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ONLY:this.state=8040,this.match(t.ONLY);break;case t.WITH:this.state=8041,this.match(t.WITH),this.state=8042,this.match(t.TIES);break;default:throw new Ei(this)}}break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}offsetClause(){let e=new Dl(this.context,this.state);this.enterRule(e,904,t.RULE_offsetClause);try{switch(this.enterOuterAlt(e,1),this.state=8049,this.match(t.OFFSET),this.state=8054,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,494,this.context)){case 1:this.state=8050,this.selectOffsetValue();break;case 2:this.state=8051,this.selectFetchFirstValue(),this.state=8052,this.rowOrRows()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}selectLimitValue(){let e=new pl(this.context,this.state);this.enterRule(e,906,t.RULE_selectLimitValue);try{switch(this.state=8058,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:case t.PLUS:case t.MINUS:case t.PARAM:case t.Operator:case t.AND:case t.ARRAY:case t.CASE:case t.CAST:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NOT:case t.NULL_P:case t.SESSION_USER:case t.TABLE:case t.TRUE_P:case t.UNIQUE:case t.USER:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LEFT:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.RIGHT:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.BinaryStringConstant:case t.HexadecimalStringConstant:case t.Integral:case t.Numeric:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=8056,this.expression1();break;case t.ALL:this.enterOuterAlt(e,2),this.state=8057,this.match(t.ALL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}selectOffsetValue(){let e=new gl(this.context,this.state);this.enterRule(e,908,t.RULE_selectOffsetValue);try{this.enterOuterAlt(e,1),this.state=8060,this.expression1()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}selectFetchFirstValue(){let e=new xl(this.context,this.state);this.enterRule(e,910,t.RULE_selectFetchFirstValue);try{switch(this.state=8067,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:case t.PARAM:case t.AND:case t.ARRAY:case t.CASE:case t.CAST:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NULL_P:case t.SESSION_USER:case t.TABLE:case t.TRUE_P:case t.UNIQUE:case t.USER:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LEFT:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.RIGHT:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.BinaryStringConstant:case t.HexadecimalStringConstant:case t.Integral:case t.Numeric:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=8062,this.expression3();break;case t.PLUS:this.enterOuterAlt(e,2),this.state=8063,this.match(t.PLUS),this.state=8064,this.anyConst();break;case t.MINUS:this.enterOuterAlt(e,3),this.state=8065,this.match(t.MINUS),this.state=8066,this.anyConst();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}anyConst(){let e=new kl(this.context,this.state);this.enterRule(e,912,t.RULE_anyConst);try{switch(this.state=8071,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.Integral:this.enterOuterAlt(e,1),this.state=8069,this.iconst();break;case t.Numeric:this.enterOuterAlt(e,2),this.state=8070,this.fconst();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}rowOrRows(){let e,s=new Hl(this.context,this.state);this.enterRule(s,914,t.RULE_rowOrRows);try{this.enterOuterAlt(s,1),this.state=8073,e=this.tokenStream.LA(1),313===e||407===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}firstOrNext(){let e,s=new Gl(this.context,this.state);this.enterRule(s,916,t.RULE_firstOrNext);try{this.enterOuterAlt(s,1),this.state=8075,e=this.tokenStream.LA(1),207===e||261===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}groupClause(){let e=new Fl(this.context,this.state);this.enterRule(e,918,t.RULE_groupClause);try{switch(this.state=8081,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.GROUP_P:this.enterOuterAlt(e,1),this.state=8077,this.match(t.GROUP_P),this.state=8078,this.match(t.BY),this.state=8079,this.groupByList();break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.CREATE:case t.EXCEPT:case t.FETCH:case t.FOR:case t.GRANT:case t.HAVING:case t.INTERSECT:case t.INTO:case t.LIMIT:case t.OFFSET:case t.ON:case t.ORDER:case t.RETURNING:case t.THEN:case t.UNION:case t.USING:case t.WHEN:case t.WINDOW:case t.WITH:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}groupByList(){let e=new vl(this.context,this.state);this.enterRule(e,920,t.RULE_groupByList);try{let s;for(this.enterOuterAlt(e,1),this.state=8083,this.groupByItem(),this.state=8088,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,499,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=8084,this.match(t.COMMA),this.state=8085,this.groupByItem()),this.state=8090,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,499,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}groupByItem(){let e=new Bl(this.context,this.state);this.enterRule(e,922,t.RULE_groupByItem);try{switch(this.state=8110,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,500,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8091,this.expression1();break;case 2:this.enterOuterAlt(e,2),this.state=8092,this.match(t.OPEN_PAREN),this.state=8093,this.match(t.CLOSE_PAREN);break;case 3:this.enterOuterAlt(e,3),this.state=8094,this.match(t.CUBE),this.state=8095,this.match(t.OPEN_PAREN),this.state=8096,this.expressionList(),this.state=8097,this.match(t.CLOSE_PAREN);break;case 4:this.enterOuterAlt(e,4),this.state=8099,this.match(t.ROLLUP),this.state=8100,this.match(t.OPEN_PAREN),this.state=8101,this.expressionList(),this.state=8102,this.match(t.CLOSE_PAREN);break;case 5:this.enterOuterAlt(e,5),this.state=8104,this.match(t.GROUPING),this.state=8105,this.match(t.SETS),this.state=8106,this.match(t.OPEN_PAREN),this.state=8107,this.groupByList(),this.state=8108,this.match(t.CLOSE_PAREN)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}havingClause(){let e=new yl(this.context,this.state);this.enterRule(e,924,t.RULE_havingClause);try{switch(this.state=8115,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.HAVING:this.enterOuterAlt(e,1),this.state=8112,this.match(t.HAVING),this.state=8113,this.expression1();break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.CREATE:case t.EXCEPT:case t.FETCH:case t.FOR:case t.GRANT:case t.INTERSECT:case t.INTO:case t.LIMIT:case t.OFFSET:case t.ON:case t.ORDER:case t.RETURNING:case t.THEN:case t.UNION:case t.USING:case t.WHEN:case t.WINDOW:case t.WITH:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}forLockingClause(){let e,s=new fl(this.context,this.state);this.enterRule(s,926,t.RULE_forLockingClause);try{switch(this.state=8125,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,503,this.context)){case 1:this.enterOuterAlt(s,1),this.state=8118,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=8117,this.forLockingItem(),this.state=8120,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(62===e);break;case 2:this.enterOuterAlt(s,2),this.state=8122,this.match(t.FOR),this.state=8123,this.match(t.READ),this.state=8124,this.match(t.ONLY)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}forLockingItem(){let e=new Yl(this.context,this.state);this.enterRule(e,928,t.RULE_forLockingItem);try{this.enterOuterAlt(e,1),this.state=8127,this.forLockingStrength(),this.state=8128,this.lockedRelationsList(),this.state=8129,this.optionalNowaitOrSkip()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}forLockingStrength(){let e,s=new wl(this.context,this.state);this.enterRule(s,930,t.RULE_forLockingStrength);try{switch(this.enterOuterAlt(s,1),this.state=8131,this.match(t.FOR),this.state=8141,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NO:case t.UPDATE:this.state=8134,this.errorHandler.sync(this),e=this.tokenStream.LA(1),262===e&&(this.state=8132,this.match(t.NO),this.state=8133,this.match(t.KEY)),this.state=8136,this.match(t.UPDATE);break;case t.KEY:case t.SHARE:this.state=8138,this.errorHandler.sync(this),e=this.tokenStream.LA(1),236===e&&(this.state=8137,this.match(t.KEY)),this.state=8140,this.match(t.SHARE);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}lockedRelationsList(){let e=new bl(this.context,this.state);this.enterRule(e,932,t.RULE_lockedRelationsList);try{switch(this.state=8146,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OF:this.enterOuterAlt(e,1),this.state=8143,this.match(t.OF),this.state=8144,this.qualifiedNameList();break;case t.EOF:case t.CLOSE_PAREN:case t.SEMI:case t.CREATE:case t.FETCH:case t.FOR:case t.GRANT:case t.INTO:case t.LIMIT:case t.OFFSET:case t.ON:case t.RETURNING:case t.WITH:case t.NOWAIT:case t.SKIP_P:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}valuesClause(){let e,s=new Wl(this.context,this.state);this.enterRule(s,934,t.RULE_valuesClause);try{for(this.enterOuterAlt(s,1),this.state=8148,this.match(t.VALUES),this.state=8149,this.match(t.OPEN_PAREN),this.state=8150,this.expressionList(),this.state=8151,this.match(t.CLOSE_PAREN),this.state=8159,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=8152,this.match(t.COMMA),this.state=8153,this.match(t.OPEN_PAREN),this.state=8154,this.expressionList(),this.state=8155,this.match(t.CLOSE_PAREN),this.state=8161,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}fromClause(){let e=new Vl(this.context,this.state);this.enterRule(e,936,t.RULE_fromClause);try{switch(this.state=8165,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FROM:this.enterOuterAlt(e,1),this.state=8162,this.match(t.FROM),this.state=8163,this.fromList();break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.CREATE:case t.EXCEPT:case t.FETCH:case t.FOR:case t.GRANT:case t.GROUP_P:case t.HAVING:case t.INTERSECT:case t.INTO:case t.LIMIT:case t.OFFSET:case t.ON:case t.ORDER:case t.RETURNING:case t.THEN:case t.UNION:case t.USING:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}fromList(){let e=new Xl(this.context,this.state);this.enterRule(e,938,t.RULE_fromList);try{let s;switch(this.state=8176,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,511,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8167,this.nonAnsiJoin();break;case 2:for(this.enterOuterAlt(e,2),this.state=8168,this.tableReference(),this.state=8173,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,510,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=8169,this.match(t.COMMA),this.state=8170,this.tableReference()),this.state=8175,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,510,this.context)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}nonAnsiJoin(){let e=new Kl(this.context,this.state);this.enterRule(e,940,t.RULE_nonAnsiJoin);try{let s;this.enterOuterAlt(e,1),this.state=8178,this.tableReference(),this.state=8181,this.errorHandler.sync(this),s=1;do{if(1!==s)throw new Ei(this);this.state=8179,this.match(t.COMMA),this.state=8180,this.tableReference(),this.state=8183,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,512,this.context)}while(2!==s&&s!==ja.INVALID_ALT_NUMBER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableReference(){let e,s=new Ql(this.context,this.state);this.enterRule(s,942,t.RULE_tableReference);try{let a;switch(this.enterOuterAlt(s,1),this.state=8234,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,518,this.context)){case 1:this.state=8185,this.relationExpression(),this.state=8186,this.optionalAliasClause(),this.state=8188,this.errorHandler.sync(this),e=this.tokenStream.LA(1),472===e&&(this.state=8187,this.tableSampleClause());break;case 2:this.state=8190,this.functionTable(),this.state=8191,this.functionAliasClause();break;case 3:this.state=8193,this.xmlTable(),this.state=8194,this.optionalAliasClause();break;case 4:this.state=8196,this.selectWithParenthesis(),this.state=8197,this.optionalAliasClause();break;case 5:switch(this.state=8199,this.match(t.LATERAL_P),this.state=8209,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,514,this.context)){case 1:this.state=8200,this.xmlTable(),this.state=8201,this.optionalAliasClause();break;case 2:this.state=8203,this.functionTable(),this.state=8204,this.functionAliasClause();break;case 3:this.state=8206,this.selectWithParenthesis(),this.state=8207,this.optionalAliasClause()}break;case 6:switch(this.state=8211,this.match(t.OPEN_PAREN),this.state=8212,this.tableReference(),this.state=8229,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CROSS:this.state=8213,this.match(t.CROSS),this.state=8214,this.match(t.JOIN),this.state=8215,this.tableReference();break;case t.NATURAL:this.state=8216,this.match(t.NATURAL),this.state=8218,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-113&-32)&&1<<e-113&8261&&(this.state=8217,this.joinType()),this.state=8220,this.match(t.JOIN),this.state=8221,this.tableReference();break;case t.FULL:case t.INNER_P:case t.JOIN:case t.LEFT:case t.RIGHT:this.state=8223,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-113&-32)&&1<<e-113&8261&&(this.state=8222,this.joinType()),this.state=8225,this.match(t.JOIN),this.state=8226,this.tableReference(),this.state=8227,this.joinQualifier();case t.CLOSE_PAREN:}this.state=8231,this.match(t.CLOSE_PAREN),this.state=8232,this.optionalAliasClause()}for(this.state=8254,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,522,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;){if(1===a)switch(this.state=8252,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CROSS:this.state=8236,this.match(t.CROSS),this.state=8237,this.match(t.JOIN),this.state=8238,this.tableReference();break;case t.NATURAL:this.state=8239,this.match(t.NATURAL),this.state=8241,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-113&-32)&&1<<e-113&8261&&(this.state=8240,this.joinType()),this.state=8243,this.match(t.JOIN),this.state=8244,this.tableReference();break;case t.FULL:case t.INNER_P:case t.JOIN:case t.LEFT:case t.RIGHT:this.state=8246,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-113&-32)&&1<<e-113&8261&&(this.state=8245,this.joinType()),this.state=8248,this.match(t.JOIN),this.state=8249,this.tableReference(),this.state=8250,this.joinQualifier();break;default:throw new Ei(this)}this.state=8256,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,522,this.context)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}aliasClause(){let e,s=new Jl(this.context,this.state);this.enterRule(s,944,t.RULE_aliasClause);try{this.enterOuterAlt(s,1),this.state=8258,this.errorHandler.sync(this),e=this.tokenStream.LA(1),36===e&&(this.state=8257,this.match(t.AS)),this.state=8260,this.columnId(),this.state=8265,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=8261,this.match(t.OPEN_PAREN),this.state=8262,this.nameList(),this.state=8263,this.match(t.CLOSE_PAREN))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalAliasClause(){let e=new Zl(this.context,this.state);this.enterRule(e,946,t.RULE_optionalAliasClause);try{switch(this.state=8269,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,525,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8267,this.tableAliasClause();break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableAliasClause(){let e,s=new ql(this.context,this.state);this.enterRule(s,948,t.RULE_tableAliasClause);try{this.enterOuterAlt(s,1),this.state=8272,this.errorHandler.sync(this),e=this.tokenStream.LA(1),36===e&&(this.state=8271,this.match(t.AS)),this.state=8274,this.tableAlias(),this.state=8279,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=8275,this.match(t.OPEN_PAREN),this.state=8276,this.nameList(),this.state=8277,this.match(t.CLOSE_PAREN))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}functionAliasClause(){let e,s=new jl(this.context,this.state);this.enterRule(s,950,t.RULE_functionAliasClause);try{switch(this.state=8294,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,530,this.context)){case 1:this.enterOuterAlt(s,1),this.state=8281,this.aliasClause();break;case 2:switch(this.enterOuterAlt(s,2),this.state=8287,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AS:this.state=8282,this.match(t.AS),this.state=8284,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-33&-32)&&1<<e-33&286268421||!(e-92&-32)&&1<<e-92&2298478593||!(e-124&-32)&&1<<e-124&4294967269||!(e-156&-32)&&1<<e-156&4294967295||!(e-188&-32)&&1<<e-188&4294967295||!(e-220&-32)&&1<<e-220&3221225471||!(e-252&-32)&&1<<e-252&4294967293||!(e-284&-32)&&1<<e-284&4294967295||!(e-316&-32)&&1<<e-316&4294967295||!(e-348&-32)&&1<<e-348&4294967295||!(e-380&-32)&&1<<e-380&4294967295||!(e-412&-32)&&1<<e-412&4294967295||!(e-444&-32)&&1<<e-444&4026530815||!(e-476&-32)&&1<<e-476&3623878655||!(e-508&-32)&&1<<e-508&4294965247||!(e-540&-32)&&1<<e-540&4294967295||!(e-572&-32)&&1<<e-572&4294967295||!(e-604&-32)&&1<<e-604&4294967295||!(e-636&-32)&&1<<e-636&100663331)&&(this.state=8283,this.columnId());break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.state=8286,this.columnId();break;default:throw new Ei(this)}this.state=8289,this.match(t.OPEN_PAREN),this.state=8290,this.tableFunctionElementList(),this.state=8291,this.match(t.CLOSE_PAREN);break;case 3:this.enterOuterAlt(s,3)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}joinType(){let e,s=new zl(this.context,this.state);this.enterRule(s,952,t.RULE_joinType);try{this.enterOuterAlt(s,1),this.state=8296,e=this.tokenStream.LA(1),!(e-113&-32)&&1<<e-113&8261?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8298,this.errorHandler.sync(this),e=this.tokenStream.LA(1),123===e&&(this.state=8297,this.match(t.OUTER_P))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}joinQualifier(){let e=new $l(this.context,this.state);this.enterRule(e,954,t.RULE_joinQualifier);try{switch(this.state=8307,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.USING:this.enterOuterAlt(e,1),this.state=8300,this.match(t.USING),this.state=8301,this.match(t.OPEN_PAREN),this.state=8302,this.nameList(),this.state=8303,this.match(t.CLOSE_PAREN);break;case t.ON:this.enterOuterAlt(e,2),this.state=8305,this.match(t.ON),this.state=8306,this.expression1();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}viewName(){let e=new tO(this.context,this.state);this.enterRule(e,956,t.RULE_viewName);try{this.enterOuterAlt(e,1),this.state=8309,this.qualifiedName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}relationExpression(){let e,s=new eO(this.context,this.state);this.enterRule(s,958,t.RULE_relationExpression);try{switch(this.state=8323,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(s,1),this.state=8311,this.qualifiedName(),this.state=8313,this.errorHandler.sync(this),e=this.tokenStream.LA(1),9===e&&(this.state=8312,this.match(t.STAR));break;case t.ONLY:switch(this.enterOuterAlt(s,2),this.state=8315,this.match(t.ONLY),this.state=8321,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.state=8316,this.qualifiedName();break;case t.OPEN_PAREN:this.state=8317,this.match(t.OPEN_PAREN),this.state=8318,this.qualifiedName(),this.state=8319,this.match(t.CLOSE_PAREN);break;default:throw new Ei(this)}break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}relationExpressionList(){let e,s=new sO(this.context,this.state);this.enterRule(s,960,t.RULE_relationExpressionList);try{for(this.enterOuterAlt(s,1),this.state=8325,this.relationExpression(),this.state=8330,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=8326,this.match(t.COMMA),this.state=8327,this.relationExpression(),this.state=8332,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}relationExpressionOptionalAlias(){let e,s=new aO(this.context,this.state);this.enterRule(s,962,t.RULE_relationExpressionOptionalAlias);try{if(1===(this.enterOuterAlt(s,1),this.state=8333,this.relationExpression(),this.state=8338,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,538,this.context)))this.state=8335,this.errorHandler.sync(this),e=this.tokenStream.LA(1),36===e&&(this.state=8334,this.match(t.AS)),this.state=8337,this.columnId()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableSampleClause(){let e=new rO(this.context,this.state);this.enterRule(e,964,t.RULE_tableSampleClause);try{this.enterOuterAlt(e,1),this.state=8340,this.match(t.TABLESAMPLE),this.state=8341,this.functionName(),this.state=8342,this.match(t.OPEN_PAREN),this.state=8343,this.expressionList(),this.state=8344,this.match(t.CLOSE_PAREN),this.state=8345,this.match(t.REPEATABLE),this.state=8346,this.match(t.OPEN_PAREN),this.state=8347,this.expression1(),this.state=8348,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionTable(){let e,s=new iO(this.context,this.state);this.enterRule(s,966,t.RULE_functionTable);try{switch(this.state=8367,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,540,this.context)){case 1:this.enterOuterAlt(s,1),this.state=8350,this.functionExpressionWindowless(),this.state=8351,this.optionalOrdinality();break;case 2:for(this.enterOuterAlt(s,2),this.state=8353,this.match(t.ROWS),this.state=8354,this.match(t.FROM),this.state=8355,this.match(t.OPEN_PAREN),this.state=8356,this.rowsFromItem(),this.state=8361,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=8357,this.match(t.COMMA),this.state=8358,this.rowsFromItem(),this.state=8363,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=8364,this.match(t.CLOSE_PAREN),this.state=8365,this.optionalOrdinality()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}rowsFromItem(){let e=new cO(this.context,this.state);this.enterRule(e,968,t.RULE_rowsFromItem);try{this.enterOuterAlt(e,1),this.state=8369,this.functionExpressionWindowless(),this.state=8370,this.optionalColumnDefinitionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalColumnDefinitionList(){let e=new nO(this.context,this.state);this.enterRule(e,970,t.RULE_optionalColumnDefinitionList);try{switch(this.state=8378,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AS:this.enterOuterAlt(e,1),this.state=8372,this.match(t.AS),this.state=8373,this.match(t.OPEN_PAREN),this.state=8374,this.tableFunctionElementList(),this.state=8375,this.match(t.CLOSE_PAREN);break;case t.CLOSE_PAREN:case t.COMMA:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalOrdinality(){let e=new hO(this.context,this.state);this.enterRule(e,972,t.RULE_optionalOrdinality);try{switch(this.state=8383,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,542,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8380,this.match(t.WITH),this.state=8381,this.match(t.ORDINALITY);break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}whereClause(){let e=new EO(this.context,this.state);this.enterRule(e,974,t.RULE_whereClause);try{switch(this.state=8388,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WHERE:this.enterOuterAlt(e,1),this.state=8385,this.match(t.WHERE),this.state=8386,this.expression1();break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.CREATE:case t.DO:case t.EXCEPT:case t.FETCH:case t.FOR:case t.GRANT:case t.GROUP_P:case t.HAVING:case t.INTERSECT:case t.INTO:case t.LIMIT:case t.OFFSET:case t.ON:case t.ORDER:case t.RETURNING:case t.THEN:case t.UNION:case t.USING:case t.WHEN:case t.WINDOW:case t.WITH:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}whereOrCurrentClause(){let e=new TO(this.context,this.state);this.enterRule(e,976,t.RULE_whereOrCurrentClause);try{switch(this.state=8398,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WHERE:switch(this.enterOuterAlt(e,1),this.state=8390,this.match(t.WHERE),this.state=8395,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,544,this.context)){case 1:this.state=8391,this.match(t.CURRENT_P),this.state=8392,this.match(t.OF),this.state=8393,this.cursorName();break;case 2:this.state=8394,this.expression1()}break;case t.EOF:case t.CLOSE_PAREN:case t.SEMI:case t.INTO:case t.RETURNING:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalTableFunctionElementList(){let e=new oO(this.context,this.state);this.enterRule(e,978,t.RULE_optionalTableFunctionElementList);try{switch(this.state=8402,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=8400,this.tableFunctionElementList();break;case t.CLOSE_PAREN:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableFunctionElementList(){let e,s=new RO(this.context,this.state);this.enterRule(s,980,t.RULE_tableFunctionElementList);try{for(this.enterOuterAlt(s,1),this.state=8404,this.tableFunctionElement(),this.state=8409,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=8405,this.match(t.COMMA),this.state=8406,this.tableFunctionElement(),this.state=8411,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableFunctionElement(){let e=new AO(this.context,this.state);this.enterRule(e,982,t.RULE_tableFunctionElement);try{this.enterOuterAlt(e,1),this.state=8412,this.columnId(),this.state=8413,this.typeName(),this.state=8414,this.optionalCollateClause()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}xmlTable(){let e,s=new SO(this.context,this.state);this.enterRule(s,984,t.RULE_xmlTable);try{switch(this.enterOuterAlt(s,1),this.state=8416,this.match(t.XMLTABLE),this.state=8417,this.match(t.OPEN_PAREN),this.state=8445,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,550,this.context)){case 1:for(this.state=8418,this.expression3(),this.state=8419,this.xmlExistsArgument(),this.state=8420,this.match(t.COLUMNS),this.state=8421,this.xmlTableColumnElement(),this.state=8426,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=8422,this.match(t.COMMA),this.state=8423,this.xmlTableColumnElement(),this.state=8428,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 2:for(this.state=8429,this.match(t.XMLNAMESPACES),this.state=8430,this.match(t.OPEN_PAREN),this.state=8431,this.xmlNamespaceList(),this.state=8432,this.match(t.CLOSE_PAREN),this.state=8433,this.match(t.COMMA),this.state=8434,this.expression3(),this.state=8435,this.xmlExistsArgument(),this.state=8436,this.match(t.COLUMNS),this.state=8437,this.xmlTableColumnElement(),this.state=8442,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=8438,this.match(t.COMMA),this.state=8439,this.xmlTableColumnElement(),this.state=8444,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}this.state=8447,this.match(t.CLOSE_PAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xmlTableColumnElement(){let e,s=new lO(this.context,this.state);this.enterRule(s,986,t.RULE_xmlTableColumnElement);try{switch(this.enterOuterAlt(s,1),this.state=8449,this.columnId(),this.state=8456,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LEFT:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.RIGHT:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.state=8450,this.typeName(),this.state=8452,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-33&-32)&&1<<e-33&286268421||!(e-77&-32)&&1<<e-77&32771||!(e-116&-32)&&1<<e-116&268451969||!(e-153&-32)&&1<<e-153&540945||!(e-207&-32)&&1<<e-207&33554441||!(e-240&-32)&&1<<e-240&6553601||!(e-272&-32)&&1<<e-272&268451841||!(e-306&-32)&&1<<e-306&1051713||353===e||433===e||434===e||!(e-477&-32)&&1<<e-477&3825197057||!(e-509&-32)&&1<<e-509&3055||!(e-636&-32)&&1<<e-636&100663331)&&(this.state=8451,this.xmlTableColumnOptionList());break;case t.FOR:this.state=8454,this.match(t.FOR),this.state=8455,this.match(t.ORDINALITY);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xmlTableColumnOptionList(){let e,s=new OO(this.context,this.state);this.enterRule(s,988,t.RULE_xmlTableColumnOptionList);try{this.enterOuterAlt(s,1),this.state=8459,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=8458,this.xmlTableColumnOptionElement(),this.state=8461,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(!(e-33&-32)&&1<<e-33&286268421||!(e-77&-32)&&1<<e-77&32771||!(e-116&-32)&&1<<e-116&268451969||!(e-153&-32)&&1<<e-153&540945||!(e-207&-32)&&1<<e-207&33554441||!(e-240&-32)&&1<<e-240&6553601||!(e-272&-32)&&1<<e-272&268451841||!(e-306&-32)&&1<<e-306&1051713||353===e||433===e||434===e||!(e-477&-32)&&1<<e-477&3825197057||!(e-509&-32)&&1<<e-509&3055||!(e-636&-32)&&1<<e-636&100663331)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xmlTableColumnOptionElement(){let e=new IO(this.context,this.state);this.enterRule(e,990,t.RULE_xmlTableColumnOptionElement);try{switch(this.state=8471,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,554,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8463,this.match(t.DEFAULT),this.state=8464,this.expression1();break;case 2:this.enterOuterAlt(e,2),this.state=8465,this.identifier(),this.state=8466,this.expression1();break;case 3:this.enterOuterAlt(e,3),this.state=8468,this.match(t.NOT),this.state=8469,this.match(t.NULL_P);break;case 4:this.enterOuterAlt(e,4),this.state=8470,this.match(t.NULL_P)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}xmlNamespaceList(){let e,s=new uO(this.context,this.state);this.enterRule(s,992,t.RULE_xmlNamespaceList);try{for(this.enterOuterAlt(s,1),this.state=8473,this.xmlNamespaceElement(),this.state=8478,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=8474,this.match(t.COMMA),this.state=8475,this.xmlNamespaceElement(),this.state=8480,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xmlNamespaceElement(){let e=new NO(this.context,this.state);this.enterRule(e,994,t.RULE_xmlNamespaceElement);try{switch(this.state=8487,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,556,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8481,this.expression2(0),this.state=8482,this.match(t.AS),this.state=8483,this.columnLabel();break;case 2:this.enterOuterAlt(e,2),this.state=8485,this.match(t.DEFAULT),this.state=8486,this.expression2(0)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}typeName(){let e,s=new LO(this.context,this.state);this.enterRule(s,996,t.RULE_typeName);try{let a;switch(this.state=8516,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,562,this.context)){case 1:switch(this.enterOuterAlt(s,1),this.state=8490,this.errorHandler.sync(this),e=this.tokenStream.LA(1),408===e&&(this.state=8489,this.match(t.SETOF)),this.state=8492,this.simpleTypeName(),this.state=8510,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,561,this.context)){case 1:for(this.state=8500,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,559,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=8493,this.match(t.OPEN_BRACKET),this.state=8495,this.errorHandler.sync(this),e=this.tokenStream.LA(1),658===e&&(this.state=8494,this.iconst()),this.state=8497,this.match(t.CLOSE_BRACKET)),this.state=8502,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,559,this.context);break;case 2:if(1===(this.state=8503,this.match(t.ARRAY),this.state=8508,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,560,this.context)))this.state=8504,this.match(t.OPEN_BRACKET),this.state=8505,this.iconst(),this.state=8506,this.match(t.CLOSE_BRACKET)}break;case 2:this.enterOuterAlt(s,2),this.state=8512,this.qualifiedName(),this.state=8513,this.match(t.PERCENT),this.state=8514,e=this.tokenStream.LA(1),353===e||477===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}simpleTypeName(){let e=new CO(this.context,this.state);this.enterRule(e,998,t.RULE_simpleTypeName);try{switch(this.state=8531,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,564,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8518,this.genericType();break;case 2:this.enterOuterAlt(e,2),this.state=8519,this.numeric();break;case 3:this.enterOuterAlt(e,3),this.state=8520,this.bit();break;case 4:this.enterOuterAlt(e,4),this.state=8521,this.character();break;case 5:this.enterOuterAlt(e,5),this.state=8522,this.constDateTime();break;case 6:switch(this.enterOuterAlt(e,6),this.state=8523,this.constInterval(),this.state=8529,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,563,this.context)){case 1:this.state=8524,this.optionalInterval();break;case 2:this.state=8525,this.match(t.OPEN_PAREN),this.state=8526,this.iconst(),this.state=8527,this.match(t.CLOSE_PAREN)}}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}constTypeName(){let e=new _O(this.context,this.state);this.enterRule(e,1e3,t.RULE_constTypeName);try{switch(this.state=8537,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DOUBLE_P:case t.BIGINT:case t.BOOLEAN_P:case t.DEC:case t.DECIMAL_P:case t.FLOAT_P:case t.INT_P:case t.INTEGER:case t.NUMERIC:case t.REAL:case t.SMALLINT:this.enterOuterAlt(e,1),this.state=8533,this.numeric();break;case t.BIT:this.enterOuterAlt(e,2),this.state=8534,this.constBit();break;case t.CHAR_P:case t.CHARACTER:case t.NATIONAL:case t.NCHAR:case t.VARCHAR:this.enterOuterAlt(e,3),this.state=8535,this.constCharacter();break;case t.TIME:case t.TIMESTAMP:this.enterOuterAlt(e,4),this.state=8536,this.constDateTime();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}genericType(){let e=new PO(this.context,this.state);this.enterRule(e,1002,t.RULE_genericType);try{switch(this.enterOuterAlt(e,1),this.state=8543,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.REPLACE:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.REVERSE:case t.LOG:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:this.state=8539,this.builtinFunctionName();break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.COLUMNS:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.state=8540,this.typeFunctionName();break;case t.LEFT:this.state=8541,this.match(t.LEFT);break;case t.RIGHT:this.state=8542,this.match(t.RIGHT);break;default:throw new Ei(this)}if(1===(this.state=8546,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,567,this.context)))this.state=8545,this.attributes();this.state=8548,this.optionalTypeModifiers()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalTypeModifiers(){let e=new MO(this.context,this.state);this.enterRule(e,1004,t.RULE_optionalTypeModifiers);try{switch(this.state=8555,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,568,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8550,this.match(t.OPEN_PAREN),this.state=8551,this.expressionList(),this.state=8552,this.match(t.CLOSE_PAREN);break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}numeric(){let e=new dO(this.context,this.state);this.enterRule(e,1006,t.RULE_numeric);try{switch(this.state=8573,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.INT_P:this.enterOuterAlt(e,1),this.state=8557,this.match(t.INT_P);break;case t.INTEGER:this.enterOuterAlt(e,2),this.state=8558,this.match(t.INTEGER);break;case t.SMALLINT:this.enterOuterAlt(e,3),this.state=8559,this.match(t.SMALLINT);break;case t.BIGINT:this.enterOuterAlt(e,4),this.state=8560,this.match(t.BIGINT);break;case t.REAL:this.enterOuterAlt(e,5),this.state=8561,this.match(t.REAL);break;case t.FLOAT_P:this.enterOuterAlt(e,6),this.state=8562,this.match(t.FLOAT_P),this.state=8563,this.optionalFloat();break;case t.DOUBLE_P:this.enterOuterAlt(e,7),this.state=8564,this.match(t.DOUBLE_P),this.state=8565,this.match(t.PRECISION);break;case t.DECIMAL_P:this.enterOuterAlt(e,8),this.state=8566,this.match(t.DECIMAL_P),this.state=8567,this.optionalTypeModifiers();break;case t.DEC:this.enterOuterAlt(e,9),this.state=8568,this.match(t.DEC),this.state=8569,this.optionalTypeModifiers();break;case t.NUMERIC:this.enterOuterAlt(e,10),this.state=8570,this.match(t.NUMERIC),this.state=8571,this.optionalTypeModifiers();break;case t.BOOLEAN_P:this.enterOuterAlt(e,11),this.state=8572,this.match(t.BOOLEAN_P);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalFloat(){let e=new UO(this.context,this.state);this.enterRule(e,1008,t.RULE_optionalFloat);try{switch(this.state=8580,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,570,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8575,this.match(t.OPEN_PAREN),this.state=8576,this.iconst(),this.state=8577,this.match(t.CLOSE_PAREN);break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}bit(){let e=new mO(this.context,this.state);this.enterRule(e,1010,t.RULE_bit);try{switch(this.state=8584,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,571,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8582,this.bitWithLength();break;case 2:this.enterOuterAlt(e,2),this.state=8583,this.bitWithoutLength()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}constBit(){let e=new DO(this.context,this.state);this.enterRule(e,1012,t.RULE_constBit);try{switch(this.state=8588,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,572,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8586,this.bitWithLength();break;case 2:this.enterOuterAlt(e,2),this.state=8587,this.bitWithoutLength()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}bitWithLength(){let e=new pO(this.context,this.state);this.enterRule(e,1014,t.RULE_bitWithLength);try{this.enterOuterAlt(e,1),this.state=8590,this.match(t.BIT),this.state=8591,this.optionalVarying(),this.state=8592,this.match(t.OPEN_PAREN),this.state=8593,this.expressionList(),this.state=8594,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}bitWithoutLength(){let e=new gO(this.context,this.state);this.enterRule(e,1016,t.RULE_bitWithoutLength);try{this.enterOuterAlt(e,1),this.state=8596,this.match(t.BIT),this.state=8597,this.optionalVarying()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}character(){let e=new xO(this.context,this.state);this.enterRule(e,1018,t.RULE_character);try{if(1===(this.enterOuterAlt(e,1),this.state=8599,this.characterChar(),this.state=8604,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,573,this.context)))this.state=8600,this.match(t.OPEN_PAREN),this.state=8601,this.iconst(),this.state=8602,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}constCharacter(){let e,s=new kO(this.context,this.state);this.enterRule(s,1020,t.RULE_constCharacter);try{this.enterOuterAlt(s,1),this.state=8606,this.characterChar(),this.state=8611,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=8607,this.match(t.OPEN_PAREN),this.state=8608,this.iconst(),this.state=8609,this.match(t.CLOSE_PAREN))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}characterChar(){let e,s=new HO(this.context,this.state);this.enterRule(s,1022,t.RULE_characterChar);try{switch(this.state=8619,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CHAR_P:case t.CHARACTER:case t.NCHAR:this.enterOuterAlt(s,1),this.state=8613,e=this.tokenStream.LA(1),!(e-384&-32)&&1<<e-384&32771?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8614,this.optionalVarying();break;case t.VARCHAR:this.enterOuterAlt(s,2),this.state=8615,this.match(t.VARCHAR);break;case t.NATIONAL:this.enterOuterAlt(s,3),this.state=8616,this.match(t.NATIONAL),this.state=8617,e=this.tokenStream.LA(1),384===e||385===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8618,this.optionalVarying();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalVarying(){let e=new GO(this.context,this.state);this.enterRule(e,1024,t.RULE_optionalVarying);try{switch(this.state=8623,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,576,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8621,this.match(t.VARYING);break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}constDateTime(){let e,s=new FO(this.context,this.state);this.enterRule(s,1026,t.RULE_constDateTime);try{if(this.enterOuterAlt(s,1),1===(this.state=8625,e=this.tokenStream.LA(1),411===e||412===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8630,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,577,this.context)))this.state=8626,this.match(t.OPEN_PAREN),this.state=8627,this.iconst(),this.state=8628,this.match(t.CLOSE_PAREN);this.state=8632,this.optionalTimezone()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}constInterval(){let e=new vO(this.context,this.state);this.enterRule(e,1028,t.RULE_constInterval);try{this.enterOuterAlt(e,1),this.state=8634,this.match(t.INTERVAL)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalTimezone(){let e=new BO(this.context,this.state);this.enterRule(e,1030,t.RULE_optionalTimezone);try{switch(this.state=8643,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,578,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8636,this.match(t.WITH),this.state=8637,this.match(t.TIME),this.state=8638,this.match(t.ZONE);break;case 2:this.enterOuterAlt(e,2),this.state=8639,this.match(t.WITHOUT),this.state=8640,this.match(t.TIME),this.state=8641,this.match(t.ZONE);break;case 3:this.enterOuterAlt(e,3)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalInterval(){let e=new yO(this.context,this.state);this.enterRule(e,1032,t.RULE_optionalInterval);try{switch(this.state=8671,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,581,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8645,this.match(t.YEAR_P);break;case 2:this.enterOuterAlt(e,2),this.state=8646,this.match(t.MONTH_P);break;case 3:this.enterOuterAlt(e,3),this.state=8647,this.match(t.DAY_P);break;case 4:this.enterOuterAlt(e,4),this.state=8648,this.match(t.HOUR_P);break;case 5:this.enterOuterAlt(e,5),this.state=8649,this.match(t.MINUTE_P);break;case 6:this.enterOuterAlt(e,6),this.state=8650,this.intervalSecond();break;case 7:this.enterOuterAlt(e,7),this.state=8651,this.match(t.YEAR_P),this.state=8652,this.match(t.TO),this.state=8653,this.match(t.MONTH_P);break;case 8:switch(this.enterOuterAlt(e,8),this.state=8654,this.match(t.DAY_P),this.state=8655,this.match(t.TO),this.state=8659,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.HOUR_P:this.state=8656,this.match(t.HOUR_P);break;case t.MINUTE_P:this.state=8657,this.match(t.MINUTE_P);break;case t.SECOND_P:this.state=8658,this.intervalSecond();break;default:throw new Ei(this)}break;case 9:switch(this.enterOuterAlt(e,9),this.state=8661,this.match(t.HOUR_P),this.state=8662,this.match(t.TO),this.state=8665,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.MINUTE_P:this.state=8663,this.match(t.MINUTE_P);break;case t.SECOND_P:this.state=8664,this.intervalSecond();break;default:throw new Ei(this)}break;case 10:this.enterOuterAlt(e,10),this.state=8667,this.match(t.MINUTE_P),this.state=8668,this.match(t.TO),this.state=8669,this.intervalSecond();break;case 11:this.enterOuterAlt(e,11)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}intervalSecond(){let e=new fO(this.context,this.state);this.enterRule(e,1034,t.RULE_intervalSecond);try{if(1===(this.enterOuterAlt(e,1),this.state=8673,this.match(t.SECOND_P),this.state=8678,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,582,this.context)))this.state=8674,this.match(t.OPEN_PAREN),this.state=8675,this.iconst(),this.state=8676,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalEscape(){let e=new YO(this.context,this.state);this.enterRule(e,1036,t.RULE_optionalEscape);try{switch(this.state=8683,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,583,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8680,this.match(t.ESCAPE),this.state=8681,this.expression1();break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expression1(){let e=new wO(this.context,this.state);this.enterRule(e,1038,t.RULE_expression1);try{this.enterOuterAlt(e,1),this.state=8685,this.expression1Qualifier()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expression1Qualifier(){let e=new bO(this.context,this.state);this.enterRule(e,1040,t.RULE_expression1Qualifier);try{if(1===(this.enterOuterAlt(e,1),this.state=8687,this.expression1LessLess(),this.state=8689,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,584,this.context)))this.state=8688,this.operatorQualifier()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expression1LessLess(){let e,s=new WO(this.context,this.state);this.enterRule(s,1042,t.RULE_expression1LessLess);try{let t;for(this.enterOuterAlt(s,1),this.state=8691,this.expression1Or(),this.state=8696,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,585,this.context);2!==t&&t!==ja.INVALID_ALT_NUMBER;)1===t&&(this.state=8692,e=this.tokenStream.LA(1),18===e||19===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8693,this.expression1Or()),this.state=8698,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,585,this.context)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expression1Or(){let e=new VO(this.context,this.state);this.enterRule(e,1044,t.RULE_expression1Or);try{let s;for(this.enterOuterAlt(e,1),this.state=8699,this.expression1And(),this.state=8704,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,586,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=8700,this.match(t.OR),this.state=8701,this.expression1And()),this.state=8706,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,586,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expression1And(){let e=new XO(this.context,this.state);this.enterRule(e,1046,t.RULE_expression1And);try{let s;for(this.enterOuterAlt(e,1),this.state=8707,this.expression1Between(),this.state=8712,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,587,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=8708,this.match(t.AND),this.state=8709,this.expression1Between()),this.state=8714,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,587,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expression1Between(){let e,s=new KO(this.context,this.state);this.enterRule(s,1048,t.RULE_expression1Between);try{if(1===(this.enterOuterAlt(s,1),this.state=8715,this.expression1In(),this.state=8727,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,590,this.context)))this.state=8717,this.errorHandler.sync(this),e=this.tokenStream.LA(1),77===e&&(this.state=8716,this.match(t.NOT)),this.state=8719,this.match(t.BETWEEN),this.state=8721,this.errorHandler.sync(this),e=this.tokenStream.LA(1),91===e&&(this.state=8720,this.match(t.SYMMETRIC)),this.state=8723,this.expression1In(),this.state=8724,this.match(t.AND),this.state=8725,this.expression1In()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expression1In(){let e,s=new QO(this.context,this.state);this.enterRule(s,1050,t.RULE_expression1In);try{if(1===(this.enterOuterAlt(s,1),this.state=8729,this.expression1UnaryNot(),this.state=8735,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,592,this.context)))this.state=8731,this.errorHandler.sync(this),e=this.tokenStream.LA(1),77===e&&(this.state=8730,this.match(t.NOT)),this.state=8733,this.match(t.IN_P),this.state=8734,this.inExpression()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expression1UnaryNot(){let e,s=new JO(this.context,this.state);this.enterRule(s,1052,t.RULE_expression1UnaryNot);try{this.enterOuterAlt(s,1),this.state=8738,this.errorHandler.sync(this),e=this.tokenStream.LA(1),77===e&&(this.state=8737,this.match(t.NOT)),this.state=8740,this.expression1IsNull()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expression1IsNull(){let e,s=new ZO(this.context,this.state);this.enterRule(s,1054,t.RULE_expression1IsNull);try{if(1===(this.enterOuterAlt(s,1),this.state=8742,this.expression1IsNot(),this.state=8744,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,594,this.context)))this.state=8743,e=this.tokenStream.LA(1),117===e||122===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expression1IsNot(){let e,s=new qO(this.context,this.state);this.enterRule(s,1056,t.RULE_expression1IsNot);try{if(1===(this.enterOuterAlt(s,1),this.state=8746,this.expression1Compare(),this.state=8770,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,598,this.context)))switch(this.state=8747,this.match(t.IS),this.state=8749,this.errorHandler.sync(this),e=this.tokenStream.LA(1),77===e&&(this.state=8748,this.match(t.NOT)),this.state=8768,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NULL_P:this.state=8751,this.match(t.NULL_P);break;case t.TRUE_P:this.state=8752,this.match(t.TRUE_P);break;case t.FALSE_P:this.state=8753,this.match(t.FALSE_P);break;case t.UNKNOWN:this.state=8754,this.match(t.UNKNOWN);break;case t.DISTINCT:this.state=8755,this.match(t.DISTINCT),this.state=8756,this.match(t.FROM),this.state=8757,this.expression1();break;case t.OF:this.state=8758,this.match(t.OF),this.state=8759,this.match(t.OPEN_PAREN),this.state=8760,this.typeList(),this.state=8761,this.match(t.CLOSE_PAREN);break;case t.DOCUMENT_P:this.state=8763,this.match(t.DOCUMENT_P);break;case t.NORMALIZED:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:this.state=8765,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-483&-32)&&1<<e-483&15&&(this.state=8764,this.unicodeNormalForm()),this.state=8767,this.match(t.NORMALIZED);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expression1Compare(){let e,s=new jO(this.context,this.state);this.enterRule(s,1058,t.RULE_expression1Compare);try{switch(this.enterOuterAlt(s,1),this.state=8772,this.expression1Like(),this.state=8784,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,600,this.context)){case 1:this.state=8773,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&44237824?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8774,this.expression1Like();break;case 2:switch(this.state=8775,this.subqueryOperator(),this.state=8776,this.subType(),this.state=8782,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,599,this.context)){case 1:this.state=8777,this.selectWithParenthesis();break;case 2:this.state=8778,this.match(t.OPEN_PAREN),this.state=8779,this.expression1(),this.state=8780,this.match(t.CLOSE_PAREN)}}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expression1Like(){let e,s=new zO(this.context,this.state);this.enterRule(s,1060,t.RULE_expression1Like);try{if(1===(this.enterOuterAlt(s,1),this.state=8786,this.expression1qualifierOperator(),this.state=8799,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,603,this.context))){switch(this.state=8788,this.errorHandler.sync(this),e=this.tokenStream.LA(1),77===e&&(this.state=8787,this.match(t.NOT)),this.state=8794,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LIKE:this.state=8790,this.match(t.LIKE);break;case t.ILIKE:this.state=8791,this.match(t.ILIKE);break;case t.SIMILAR:this.state=8792,this.match(t.SIMILAR),this.state=8793,this.match(t.TO);break;default:throw new Ei(this)}this.state=8796,this.expression1qualifierOperator(),this.state=8797,this.optionalEscape()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expression1qualifierOperator(){let e=new $O(this.context,this.state);this.enterRule(e,1062,t.RULE_expression1qualifierOperator);try{let t;for(this.enterOuterAlt(e,1),this.state=8801,this.expression1UnaryQualifierOperator(),this.state=8807,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,604,this.context);2!==t&&t!==ja.INVALID_ALT_NUMBER;)1===t&&(this.state=8802,this.operatorQualifier(),this.state=8803,this.expression1UnaryQualifierOperator()),this.state=8809,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,604,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expression1UnaryQualifierOperator(){let e=new tI(this.context,this.state);this.enterRule(e,1064,t.RULE_expression1UnaryQualifierOperator);try{if(this.enterOuterAlt(e,1),1===(this.state=8811,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,605,this.context)))this.state=8810,this.operatorQualifier();this.state=8813,this.expression1Add()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expression1Add(){let e,s=new eI(this.context,this.state);this.enterRule(s,1066,t.RULE_expression1Add);try{let t;for(this.enterOuterAlt(s,1),this.state=8815,this.expressionMultiply(),this.state=8820,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,606,this.context);2!==t&&t!==ja.INVALID_ALT_NUMBER;)1===t&&(this.state=8816,e=this.tokenStream.LA(1),12===e||13===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8817,this.expressionMultiply()),this.state=8822,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,606,this.context)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expressionMultiply(){let e,s=new sI(this.context,this.state);this.enterRule(s,1068,t.RULE_expressionMultiply);try{let t;for(this.enterOuterAlt(s,1),this.state=8823,this.expression1Caret(),this.state=8828,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,607,this.context);2!==t&&t!==ja.INVALID_ALT_NUMBER;)1===t&&(this.state=8824,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&134234624?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8825,this.expression1Caret()),this.state=8830,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,607,this.context)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expression1Caret(){let e=new aI(this.context,this.state);this.enterRule(e,1070,t.RULE_expression1Caret);try{if(1===(this.enterOuterAlt(e,1),this.state=8831,this.expression1UnarySign(),this.state=8834,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,608,this.context)))this.state=8832,this.match(t.CARET),this.state=8833,this.expression1()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expression1UnarySign(){let e,s=new rI(this.context,this.state);this.enterRule(s,1072,t.RULE_expression1UnarySign);try{this.enterOuterAlt(s,1),this.state=8837,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(12===e||13===e)&&(this.state=8836,e=this.tokenStream.LA(1),12===e||13===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=8839,this.expression1AtTimeZone()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expression1AtTimeZone(){let e=new iI(this.context,this.state);this.enterRule(e,1074,t.RULE_expression1AtTimeZone);try{if(1===(this.enterOuterAlt(e,1),this.state=8841,this.expression1Collate(),this.state=8846,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,610,this.context)))this.state=8842,this.match(t.AT),this.state=8843,this.match(t.TIME),this.state=8844,this.match(t.ZONE),this.state=8845,this.expression1()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expression1Collate(){let e=new cI(this.context,this.state);this.enterRule(e,1076,t.RULE_expression1Collate);try{if(1===(this.enterOuterAlt(e,1),this.state=8848,this.expression1Typecast(),this.state=8851,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,611,this.context)))this.state=8849,this.match(t.COLLATE),this.state=8850,this.anyName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expression1Typecast(){let e,s=new nI(this.context,this.state);this.enterRule(s,1078,t.RULE_expression1Typecast);try{for(this.enterOuterAlt(s,1),this.state=8853,this.expression3(),this.state=8858,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=8854,this.match(t.TYPECAST),this.state=8855,this.typeName(),this.state=8860,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expression2(e){void 0===e&&(e=0);let s,a=this.context,r=this.state,i=new hI(this.context,r),c=i,n=1080;this.enterRecursionRule(i,1080,t.RULE_expression2,e);try{let e;switch(this.enterOuterAlt(i,1),this.state=8868,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,613,this.context)){case 1:this.state=8862,this.expression3();break;case 2:this.state=8863,s=this.tokenStream.LA(1),12===s||13===s?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8864,this.expression2(9);break;case 3:this.state=8865,this.operatorQualifier(),this.state=8866,this.expression2(3)}for(this.context.stop=this.tokenStream.LT(-1),this.state=8909,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,617,this.context);2!==e&&e!==ja.INVALID_ALT_NUMBER;){if(1===e)switch(null!=this.parseListeners&&this.triggerExitRuleEvent(),c=i,this.state=8907,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,616,this.context)){case 1:if(i=new hI(a,r),this.pushNewRecursionContext(i,n,t.RULE_expression2),this.state=8870,!this.precpred(this.context,8))throw this.createFailedPredicateException("this.precpred(this.context, 8)");this.state=8871,this.match(t.CARET),this.state=8872,this.expression2(9);break;case 2:if(i=new hI(a,r),this.pushNewRecursionContext(i,n,t.RULE_expression2),this.state=8873,!this.precpred(this.context,7))throw this.createFailedPredicateException("this.precpred(this.context, 7)");this.state=8874,s=this.tokenStream.LA(1),!(-32&s)&&1<<s&134234624?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8875,this.expression2(8);break;case 3:if(i=new hI(a,r),this.pushNewRecursionContext(i,n,t.RULE_expression2),this.state=8876,!this.precpred(this.context,6))throw this.createFailedPredicateException("this.precpred(this.context, 6)");this.state=8877,s=this.tokenStream.LA(1),12===s||13===s?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8878,this.expression2(7);break;case 4:if(i=new hI(a,r),this.pushNewRecursionContext(i,n,t.RULE_expression2),this.state=8879,!this.precpred(this.context,5))throw this.createFailedPredicateException("this.precpred(this.context, 5)");this.state=8880,this.operatorQualifier(),this.state=8881,this.expression2(6);break;case 5:if(i=new hI(a,r),this.pushNewRecursionContext(i,n,t.RULE_expression2),this.state=8883,!this.precpred(this.context,4))throw this.createFailedPredicateException("this.precpred(this.context, 4)");this.state=8884,s=this.tokenStream.LA(1),!(-32&s)&&1<<s&44237824?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8885,this.expression2(5);break;case 6:if(i=new hI(a,r),this.pushNewRecursionContext(i,n,t.RULE_expression2),this.state=8886,!this.precpred(this.context,10))throw this.createFailedPredicateException("this.precpred(this.context, 10)");this.state=8887,this.match(t.TYPECAST),this.state=8888,this.typeName();break;case 7:if(i=new hI(a,r),this.pushNewRecursionContext(i,n,t.RULE_expression2),this.state=8889,!this.precpred(this.context,2))throw this.createFailedPredicateException("this.precpred(this.context, 2)");this.state=8890,this.operatorQualifier();break;case 8:if(i=new hI(a,r),this.pushNewRecursionContext(i,n,t.RULE_expression2),this.state=8891,!this.precpred(this.context,1))throw this.createFailedPredicateException("this.precpred(this.context, 1)");switch(this.state=8892,this.match(t.IS),this.state=8894,this.errorHandler.sync(this),s=this.tokenStream.LA(1),77===s&&(this.state=8893,this.match(t.NOT)),this.state=8905,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DISTINCT:this.state=8896,this.match(t.DISTINCT),this.state=8897,this.match(t.FROM),this.state=8898,this.expression2(0);break;case t.OF:this.state=8899,this.match(t.OF),this.state=8900,this.match(t.OPEN_PAREN),this.state=8901,this.typeList(),this.state=8902,this.match(t.CLOSE_PAREN);break;case t.DOCUMENT_P:this.state=8904,this.match(t.DOCUMENT_P);break;default:throw new Ei(this)}}this.state=8911,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,617,this.context)}}catch(h){if(!(h instanceof jr))throw h;this.errorHandler.reportError(this,h),this.errorHandler.recover(this,h)}finally{this.unrollRecursionContexts(a)}return i}expression3(){let e=new EI(this.context,this.state);this.enterRule(e,1082,t.RULE_expression3);try{switch(this.state=8948,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,620,this.context)){case 1:e=new TI(e),this.enterOuterAlt(e,1),this.state=8912,this.match(t.EXISTS),this.state=8913,this.selectWithParenthesis();break;case 2:switch(e=new RI(e),this.enterOuterAlt(e,2),this.state=8914,this.match(t.ARRAY),this.state=8917,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.state=8915,this.selectWithParenthesis();break;case t.OPEN_BRACKET:this.state=8916,this.arrayExpression();break;default:throw new Ei(this)}break;case 3:e=new RI(e),this.enterOuterAlt(e,3),this.state=8919,this.match(t.PARAM),this.state=8920,this.optionalIndirection();break;case 4:e=new RI(e),this.enterOuterAlt(e,4),this.state=8921,this.match(t.GROUPING),this.state=8922,this.match(t.OPEN_PAREN),this.state=8923,this.expressionList(),this.state=8924,this.match(t.CLOSE_PAREN);break;case 5:e=new RI(e),this.enterOuterAlt(e,5),this.state=8926,this.match(t.UNIQUE),this.state=8927,this.selectWithParenthesis();break;case 6:e=new RI(e),this.enterOuterAlt(e,6),this.state=8928,this.columnReference();break;case 7:e=new RI(e),this.enterOuterAlt(e,7),this.state=8929,this.aExpressionConst();break;case 8:e=new RI(e),this.enterOuterAlt(e,8),this.state=8930,this.plsqlVariableName();break;case 9:e=new RI(e),this.enterOuterAlt(e,9),this.state=8931,this.match(t.OPEN_PAREN),this.state=8932,e._a_expr_in_parens=this.expression1(),this.state=8933,this.match(t.CLOSE_PAREN),this.state=8934,this.optionalIndirection();break;case 10:e=new oI(e),this.enterOuterAlt(e,10),this.state=8936,this.caseExpression();break;case 11:e=new RI(e),this.enterOuterAlt(e,11),this.state=8937,this.functionExpression();break;case 12:if(1===(e=new RI(e),this.enterOuterAlt(e,12),this.state=8938,this.selectWithParenthesis(),this.state=8940,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,619,this.context)))this.state=8939,this.indirection();break;case 13:e=new RI(e),this.enterOuterAlt(e,13),this.state=8942,this.explicitRow();break;case 14:e=new RI(e),this.enterOuterAlt(e,14),this.state=8943,this.implicitRow();break;case 15:e=new RI(e),this.enterOuterAlt(e,15),this.state=8944,this.row(),this.state=8945,this.match(t.OVERLAPS),this.state=8946,this.row()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}plsqlVariableName(){let e=new AI(this.context,this.state);this.enterRule(e,1084,t.RULE_plsqlVariableName);try{this.enterOuterAlt(e,1),this.state=8950,this.match(t.PLSQLVARIABLENAME)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionApplication(){let e,s=new SI(this.context,this.state);this.enterRule(s,1086,t.RULE_functionApplication);try{switch(this.enterOuterAlt(s,1),this.state=8952,this.functionName(),this.state=8953,this.match(t.OPEN_PAREN),this.state=8972,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:case t.PLUS:case t.MINUS:case t.PARAM:case t.Operator:case t.AND:case t.ARRAY:case t.CASE:case t.CAST:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NOT:case t.NULL_P:case t.SESSION_USER:case t.TABLE:case t.TRUE_P:case t.UNIQUE:case t.USER:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LEFT:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.RIGHT:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.BinaryStringConstant:case t.HexadecimalStringConstant:case t.Integral:case t.Numeric:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.state=8954,this.functionArgumentList(),this.state=8958,this.errorHandler.sync(this),e=this.tokenStream.LA(1),6===e&&(this.state=8955,this.match(t.COMMA),this.state=8956,this.match(t.VARIADIC),this.state=8957,this.functionArgumentExpression()),this.state=8960,this.optionalSortClause();break;case t.VARIADIC:this.state=8962,this.match(t.VARIADIC),this.state=8963,this.functionArgumentExpression(),this.state=8964,this.optionalSortClause();break;case t.ALL:case t.DISTINCT:this.state=8966,e=this.tokenStream.LA(1),30===e||56===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=8967,this.functionArgumentList(),this.state=8968,this.optionalSortClause();break;case t.STAR:this.state=8970,this.match(t.STAR);break;case t.CLOSE_PAREN:break;default:throw new Ei(this)}this.state=8974,this.match(t.CLOSE_PAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}functionExpression(){let e=new lI(this.context,this.state);this.enterRule(e,1088,t.RULE_functionExpression);try{switch(this.state=8982,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,623,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8976,this.functionApplication(),this.state=8977,this.withinGroupClause(),this.state=8978,this.filterClause(),this.state=8979,this.overClause();break;case 2:this.enterOuterAlt(e,2),this.state=8981,this.functionExpressionCommonSubexpr()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionExpressionWindowless(){let e=new OI(this.context,this.state);this.enterRule(e,1090,t.RULE_functionExpressionWindowless);try{switch(this.state=8986,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,624,this.context)){case 1:this.enterOuterAlt(e,1),this.state=8984,this.functionApplication();break;case 2:this.enterOuterAlt(e,2),this.state=8985,this.functionExpressionCommonSubexpr()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionExpressionCommonSubexpr(){let e,s=new II(this.context,this.state);this.enterRule(s,1092,t.RULE_functionExpressionCommonSubexpr);try{switch(this.state=9165,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.COLLATION:this.enterOuterAlt(s,1),this.state=8988,this.match(t.COLLATION),this.state=8989,this.match(t.FOR),this.state=8990,this.match(t.OPEN_PAREN),this.state=8991,this.expression1(),this.state=8992,this.match(t.CLOSE_PAREN);break;case t.CURRENT_DATE:this.enterOuterAlt(s,2),this.state=8994,this.match(t.CURRENT_DATE);break;case t.CURRENT_TIME:if(1===(this.enterOuterAlt(s,3),this.state=8995,this.match(t.CURRENT_TIME),this.state=9e3,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,625,this.context)))this.state=8996,this.match(t.OPEN_PAREN),this.state=8997,this.iconst(),this.state=8998,this.match(t.CLOSE_PAREN);break;case t.CURRENT_TIMESTAMP:if(1===(this.enterOuterAlt(s,4),this.state=9002,this.match(t.CURRENT_TIMESTAMP),this.state=9007,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,626,this.context)))this.state=9003,this.match(t.OPEN_PAREN),this.state=9004,this.iconst(),this.state=9005,this.match(t.CLOSE_PAREN);break;case t.LOCALTIME:if(1===(this.enterOuterAlt(s,5),this.state=9009,this.match(t.LOCALTIME),this.state=9014,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,627,this.context)))this.state=9010,this.match(t.OPEN_PAREN),this.state=9011,this.iconst(),this.state=9012,this.match(t.CLOSE_PAREN);break;case t.LOCALTIMESTAMP:if(1===(this.enterOuterAlt(s,6),this.state=9016,this.match(t.LOCALTIMESTAMP),this.state=9021,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,628,this.context)))this.state=9017,this.match(t.OPEN_PAREN),this.state=9018,this.iconst(),this.state=9019,this.match(t.CLOSE_PAREN);break;case t.CURRENT_ROLE:this.enterOuterAlt(s,7),this.state=9023,this.match(t.CURRENT_ROLE);break;case t.CURRENT_USER:this.enterOuterAlt(s,8),this.state=9024,this.match(t.CURRENT_USER);break;case t.SESSION_USER:this.enterOuterAlt(s,9),this.state=9025,this.match(t.SESSION_USER);break;case t.USER:this.enterOuterAlt(s,10),this.state=9026,this.match(t.USER);break;case t.CURRENT_CATALOG:this.enterOuterAlt(s,11),this.state=9027,this.match(t.CURRENT_CATALOG);break;case t.CURRENT_SCHEMA:this.enterOuterAlt(s,12),this.state=9028,this.match(t.CURRENT_SCHEMA);break;case t.CAST:this.enterOuterAlt(s,13),this.state=9029,this.match(t.CAST),this.state=9030,this.match(t.OPEN_PAREN),this.state=9031,this.expression1(),this.state=9032,this.match(t.AS),this.state=9033,this.typeName(),this.state=9034,this.match(t.CLOSE_PAREN);break;case t.EXTRACT:this.enterOuterAlt(s,14),this.state=9036,this.match(t.EXTRACT),this.state=9037,this.match(t.OPEN_PAREN),this.state=9038,this.extractList(),this.state=9039,this.match(t.CLOSE_PAREN);break;case t.NORMALIZE:this.enterOuterAlt(s,15),this.state=9041,this.match(t.NORMALIZE),this.state=9042,this.match(t.OPEN_PAREN),this.state=9043,this.expression1(),this.state=9046,this.errorHandler.sync(this),e=this.tokenStream.LA(1),6===e&&(this.state=9044,this.match(t.COMMA),this.state=9045,this.unicodeNormalForm()),this.state=9048,this.match(t.CLOSE_PAREN);break;case t.OVERLAY:this.enterOuterAlt(s,16),this.state=9050,this.match(t.OVERLAY),this.state=9051,this.match(t.OPEN_PAREN),this.state=9052,this.overlayList(),this.state=9053,this.match(t.CLOSE_PAREN);break;case t.POSITION:this.enterOuterAlt(s,17),this.state=9055,this.match(t.POSITION),this.state=9056,this.match(t.OPEN_PAREN),this.state=9057,this.positionList(),this.state=9058,this.match(t.CLOSE_PAREN);break;case t.SUBSTRING:this.enterOuterAlt(s,18),this.state=9060,this.match(t.SUBSTRING),this.state=9061,this.match(t.OPEN_PAREN),this.state=9062,this.substrList(),this.state=9063,this.match(t.CLOSE_PAREN);break;case t.TREAT:this.enterOuterAlt(s,19),this.state=9065,this.match(t.TREAT),this.state=9066,this.match(t.OPEN_PAREN),this.state=9067,this.expression1(),this.state=9068,this.match(t.AS),this.state=9069,this.typeName(),this.state=9070,this.match(t.CLOSE_PAREN);break;case t.TRIM:this.enterOuterAlt(s,20),this.state=9072,this.match(t.TRIM),this.state=9073,this.match(t.OPEN_PAREN),this.state=9075,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(39===e||73===e||95===e)&&(this.state=9074,e=this.tokenStream.LA(1),39===e||73===e||95===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=9077,this.trimList(),this.state=9078,this.match(t.CLOSE_PAREN);break;case t.NULLIF:this.enterOuterAlt(s,21),this.state=9080,this.match(t.NULLIF),this.state=9081,this.match(t.OPEN_PAREN),this.state=9082,this.expression1(),this.state=9083,this.match(t.COMMA),this.state=9084,this.expression1(),this.state=9085,this.match(t.CLOSE_PAREN);break;case t.COALESCE:this.enterOuterAlt(s,22),this.state=9087,this.match(t.COALESCE),this.state=9088,this.match(t.OPEN_PAREN),this.state=9089,this.expressionList(),this.state=9090,this.match(t.CLOSE_PAREN);break;case t.GREATEST:this.enterOuterAlt(s,23),this.state=9092,this.match(t.GREATEST),this.state=9093,this.match(t.OPEN_PAREN),this.state=9094,this.expressionList(),this.state=9095,this.match(t.CLOSE_PAREN);break;case t.LEAST:this.enterOuterAlt(s,24),this.state=9097,this.match(t.LEAST),this.state=9098,this.match(t.OPEN_PAREN),this.state=9099,this.expressionList(),this.state=9100,this.match(t.CLOSE_PAREN);break;case t.XMLCONCAT:this.enterOuterAlt(s,25),this.state=9102,this.match(t.XMLCONCAT),this.state=9103,this.match(t.OPEN_PAREN),this.state=9104,this.expressionList(),this.state=9105,this.match(t.CLOSE_PAREN);break;case t.XMLELEMENT:if(this.enterOuterAlt(s,26),this.state=9107,this.match(t.XMLELEMENT),this.state=9108,this.match(t.OPEN_PAREN),this.state=9109,this.match(t.NAME_P),this.state=9110,this.columnLabel(),this.state=9116,this.errorHandler.sync(this),e=this.tokenStream.LA(1),6===e)switch(this.state=9111,this.match(t.COMMA),this.state=9114,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,631,this.context)){case 1:this.state=9112,this.xmlAttributes();break;case 2:this.state=9113,this.expressionList()}this.state=9118,this.match(t.CLOSE_PAREN);break;case t.XMLEXISTS:this.enterOuterAlt(s,27),this.state=9120,this.match(t.XMLEXISTS),this.state=9121,this.match(t.OPEN_PAREN),this.state=9122,this.expression3(),this.state=9123,this.xmlExistsArgument(),this.state=9124,this.match(t.CLOSE_PAREN);break;case t.XMLFOREST:this.enterOuterAlt(s,28),this.state=9126,this.match(t.XMLFOREST),this.state=9127,this.match(t.OPEN_PAREN),this.state=9128,this.xmlAttributeList(),this.state=9129,this.match(t.CLOSE_PAREN);break;case t.XMLPARSE:this.enterOuterAlt(s,29),this.state=9131,this.match(t.XMLPARSE),this.state=9132,this.match(t.OPEN_PAREN),this.state=9133,this.documentOrContent(),this.state=9134,this.expression1(),this.state=9135,this.xmlWhitespaceOption(),this.state=9136,this.match(t.CLOSE_PAREN);break;case t.XMLPI:this.enterOuterAlt(s,30),this.state=9138,this.match(t.XMLPI),this.state=9139,this.match(t.OPEN_PAREN),this.state=9140,this.match(t.NAME_P),this.state=9141,this.columnLabel(),this.state=9144,this.errorHandler.sync(this),e=this.tokenStream.LA(1),6===e&&(this.state=9142,this.match(t.COMMA),this.state=9143,this.expression1()),this.state=9146,this.match(t.CLOSE_PAREN);break;case t.XMLROOT:this.enterOuterAlt(s,31),this.state=9148,this.match(t.XMLROOT),this.state=9149,this.match(t.OPEN_PAREN),this.state=9150,this.match(t.XML_P),this.state=9151,this.expression1(),this.state=9152,this.match(t.COMMA),this.state=9153,this.xmlRootVersion(),this.state=9154,this.optionalXmlRootStandalone(),this.state=9155,this.match(t.CLOSE_PAREN);break;case t.XMLSERIALIZE:this.enterOuterAlt(s,32),this.state=9157,this.match(t.XMLSERIALIZE),this.state=9158,this.match(t.OPEN_PAREN),this.state=9159,this.documentOrContent(),this.state=9160,this.expression1(),this.state=9161,this.match(t.AS),this.state=9162,this.simpleTypeName(),this.state=9163,this.match(t.CLOSE_PAREN);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xmlRootVersion(){let e=new uI(this.context,this.state);this.enterRule(e,1094,t.RULE_xmlRootVersion);try{switch(this.state=9172,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,635,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9167,this.match(t.VERSION_P),this.state=9168,this.expression1();break;case 2:this.enterOuterAlt(e,2),this.state=9169,this.match(t.VERSION_P),this.state=9170,this.match(t.NO),this.state=9171,this.match(t.VALUE_P)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalXmlRootStandalone(){let e=new NI(this.context,this.state);this.enterRule(e,1096,t.RULE_optionalXmlRootStandalone);try{switch(this.state=9185,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,636,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9174,this.match(t.COMMA),this.state=9175,this.match(t.STANDALONE_P),this.state=9176,this.match(t.YES_P);break;case 2:this.enterOuterAlt(e,2),this.state=9177,this.match(t.COMMA),this.state=9178,this.match(t.STANDALONE_P),this.state=9179,this.match(t.NO);break;case 3:this.enterOuterAlt(e,3),this.state=9180,this.match(t.COMMA),this.state=9181,this.match(t.STANDALONE_P),this.state=9182,this.match(t.NO),this.state=9183,this.match(t.VALUE_P);break;case 4:this.enterOuterAlt(e,4)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}xmlAttributes(){let e=new LI(this.context,this.state);this.enterRule(e,1098,t.RULE_xmlAttributes);try{this.enterOuterAlt(e,1),this.state=9187,this.match(t.XMLATTRIBUTES),this.state=9188,this.match(t.OPEN_PAREN),this.state=9189,this.xmlAttributeList(),this.state=9190,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}xmlAttributeList(){let e,s=new CI(this.context,this.state);this.enterRule(s,1100,t.RULE_xmlAttributeList);try{for(this.enterOuterAlt(s,1),this.state=9192,this.xmlAttributeElement(),this.state=9197,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=9193,this.match(t.COMMA),this.state=9194,this.xmlAttributeElement(),this.state=9199,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xmlAttributeElement(){let e,s=new _I(this.context,this.state);this.enterRule(s,1102,t.RULE_xmlAttributeElement);try{this.enterOuterAlt(s,1),this.state=9200,this.expression1(),this.state=9203,this.errorHandler.sync(this),e=this.tokenStream.LA(1),36===e&&(this.state=9201,this.match(t.AS),this.state=9202,this.columnLabel())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}documentOrContent(){let e,s=new PI(this.context,this.state);this.enterRule(s,1104,t.RULE_documentOrContent);try{this.enterOuterAlt(s,1),this.state=9205,e=this.tokenStream.LA(1),166===e||188===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xmlWhitespaceOption(){let e=new MI(this.context,this.state);this.enterRule(e,1106,t.RULE_xmlWhitespaceOption);try{switch(this.state=9212,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PRESERVE:this.enterOuterAlt(e,1),this.state=9207,this.match(t.PRESERVE),this.state=9208,this.match(t.WHITESPACE_P);break;case t.STRIP_P:this.enterOuterAlt(e,2),this.state=9209,this.match(t.STRIP_P),this.state=9210,this.match(t.WHITESPACE_P);break;case t.CLOSE_PAREN:this.enterOuterAlt(e,3);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}xmlExistsArgument(){let e=new dI(this.context,this.state);this.enterRule(e,1108,t.RULE_xmlExistsArgument);try{switch(this.state=9229,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,640,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9214,this.match(t.PASSING),this.state=9215,this.expression3();break;case 2:this.enterOuterAlt(e,2),this.state=9216,this.match(t.PASSING),this.state=9217,this.expression3(),this.state=9218,this.xmlPassingMech();break;case 3:this.enterOuterAlt(e,3),this.state=9220,this.match(t.PASSING),this.state=9221,this.xmlPassingMech(),this.state=9222,this.expression3();break;case 4:this.enterOuterAlt(e,4),this.state=9224,this.match(t.PASSING),this.state=9225,this.xmlPassingMech(),this.state=9226,this.expression3(),this.state=9227,this.xmlPassingMech()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}xmlPassingMech(){let e,s=new UI(this.context,this.state);this.enterRule(s,1110,t.RULE_xmlPassingMech);try{this.enterOuterAlt(s,1),this.state=9231,this.match(t.BY),this.state=9232,e=this.tokenStream.LA(1),297===e||450===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}withinGroupClause(){let e=new mI(this.context,this.state);this.enterRule(e,1112,t.RULE_withinGroupClause);try{switch(this.state=9241,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,641,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9234,this.match(t.WITHIN),this.state=9235,this.match(t.GROUP_P),this.state=9236,this.match(t.OPEN_PAREN),this.state=9237,this.sortClause(),this.state=9238,this.match(t.CLOSE_PAREN);break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}filterClause(){let e=new DI(this.context,this.state);this.enterRule(e,1114,t.RULE_filterClause);try{switch(this.state=9250,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,642,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9243,this.match(t.FILTER),this.state=9244,this.match(t.OPEN_PAREN),this.state=9245,this.match(t.WHERE),this.state=9246,this.expression1(),this.state=9247,this.match(t.CLOSE_PAREN);break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}windowClause(){let e=new pI(this.context,this.state);this.enterRule(e,1116,t.RULE_windowClause);try{switch(this.state=9255,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WINDOW:this.enterOuterAlt(e,1),this.state=9252,this.match(t.WINDOW),this.state=9253,this.windowDefinitionList();break;case t.EOF:case t.CLOSE_PAREN:case t.COMMA:case t.SEMI:case t.CREATE:case t.EXCEPT:case t.FETCH:case t.FOR:case t.GRANT:case t.INTERSECT:case t.INTO:case t.LIMIT:case t.OFFSET:case t.ON:case t.ORDER:case t.RETURNING:case t.THEN:case t.UNION:case t.USING:case t.WHEN:case t.WITH:case t.LOOP:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}windowDefinitionList(){let e=new gI(this.context,this.state);this.enterRule(e,1118,t.RULE_windowDefinitionList);try{let s;for(this.enterOuterAlt(e,1),this.state=9257,this.windowDefinition(),this.state=9262,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,644,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=9258,this.match(t.COMMA),this.state=9259,this.windowDefinition()),this.state=9264,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,644,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}windowDefinition(){let e=new xI(this.context,this.state);this.enterRule(e,1120,t.RULE_windowDefinition);try{this.enterOuterAlt(e,1),this.state=9265,this.columnId(),this.state=9266,this.match(t.AS),this.state=9267,this.windowSpecification()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}overClause(){let e=new kI(this.context,this.state);this.enterRule(e,1122,t.RULE_overClause);try{switch(this.state=9275,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,646,this.context)){case 1:switch(this.enterOuterAlt(e,1),this.state=9269,this.match(t.OVER),this.state=9272,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:this.state=9270,this.windowSpecification();break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.state=9271,this.columnId();break;default:throw new Ei(this)}break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}windowSpecification(){let e=new HI(this.context,this.state);this.enterRule(e,1124,t.RULE_windowSpecification);try{this.enterOuterAlt(e,1),this.state=9277,this.match(t.OPEN_PAREN),this.state=9278,this.optionalExistingWindowName(),this.state=9279,this.optionalPartitionClause(),this.state=9280,this.optionalSortClause(),this.state=9281,this.optionalFrameClause(),this.state=9282,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalExistingWindowName(){let e=new GI(this.context,this.state);this.enterRule(e,1126,t.RULE_optionalExistingWindowName);try{switch(this.state=9286,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,647,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9284,this.columnId();break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalPartitionClause(){let e=new FI(this.context,this.state);this.enterRule(e,1128,t.RULE_optionalPartitionClause);try{switch(this.state=9292,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PARTITION:this.enterOuterAlt(e,1),this.state=9288,this.match(t.PARTITION),this.state=9289,this.match(t.BY),this.state=9290,this.expressionList();break;case t.CLOSE_PAREN:case t.ORDER:case t.RANGE:case t.ROWS:case t.GROUPS:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalFrameClause(){let e=new vI(this.context,this.state);this.enterRule(e,1130,t.RULE_optionalFrameClause);try{switch(this.state=9307,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.RANGE:this.enterOuterAlt(e,1),this.state=9294,this.match(t.RANGE),this.state=9295,this.frameExtent(),this.state=9296,this.optionalWindowExclusionClause();break;case t.ROWS:this.enterOuterAlt(e,2),this.state=9298,this.match(t.ROWS),this.state=9299,this.frameExtent(),this.state=9300,this.optionalWindowExclusionClause();break;case t.GROUPS:this.enterOuterAlt(e,3),this.state=9302,this.match(t.GROUPS),this.state=9303,this.frameExtent(),this.state=9304,this.optionalWindowExclusionClause();break;case t.CLOSE_PAREN:this.enterOuterAlt(e,4);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}frameExtent(){let e=new BI(this.context,this.state);this.enterRule(e,1132,t.RULE_frameExtent);try{switch(this.state=9315,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,650,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9309,this.frameBound();break;case 2:this.enterOuterAlt(e,2),this.state=9310,this.match(t.BETWEEN),this.state=9311,this.frameBound(),this.state=9312,this.match(t.AND),this.state=9313,this.frameBound()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}frameBound(){let e,s=new yI(this.context,this.state);this.enterRule(s,1134,t.RULE_frameBound);try{switch(this.state=9324,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,651,this.context)){case 1:this.enterOuterAlt(s,1),this.state=9317,this.match(t.UNBOUNDED),this.state=9318,e=this.tokenStream.LA(1),208===e||282===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case 2:this.enterOuterAlt(s,2),this.state=9319,this.match(t.CURRENT_P),this.state=9320,this.match(t.ROW);break;case 3:this.enterOuterAlt(s,3),this.state=9321,this.expression1(),this.state=9322,e=this.tokenStream.LA(1),208===e||282===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalWindowExclusionClause(){let e=new fI(this.context,this.state);this.enterRule(e,1136,t.RULE_optionalWindowExclusionClause);try{switch(this.state=9336,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EXCLUDE:switch(this.enterOuterAlt(e,1),this.state=9326,this.match(t.EXCLUDE),this.state=9333,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CURRENT_P:this.state=9327,this.match(t.CURRENT_P),this.state=9328,this.match(t.ROW);break;case t.GROUP_P:this.state=9329,this.match(t.GROUP_P);break;case t.TIES:this.state=9330,this.match(t.TIES);break;case t.NO:this.state=9331,this.match(t.NO),this.state=9332,this.match(t.OTHERS);break;default:throw new Ei(this)}break;case t.CLOSE_PAREN:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row(){let e,s=new YI(this.context,this.state);this.enterRule(s,1138,t.RULE_row);try{switch(this.state=9350,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ROW:this.enterOuterAlt(s,1),this.state=9338,this.match(t.ROW),this.state=9339,this.match(t.OPEN_PAREN),this.state=9341,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&805318660||!(e-33&-32)&&1<<e-33&421518725||!(e-75&-32)&&1<<e-75&2174894095||!(e-107&-32)&&1<<e-107&4294967295||!(e-139&-32)&&1<<e-139&4294967295||!(e-171&-32)&&1<<e-171&4294967295||!(e-203&-32)&&1<<e-203&4294967295||!(e-235&-32)&&1<<e-235&4294672383||!(e-267&-32)&&1<<e-267&4294967295||!(e-299&-32)&&1<<e-299&4294967295||!(e-331&-32)&&1<<e-331&4294967295||!(e-363&-32)&&1<<e-363&4294967295||!(e-395&-32)&&1<<e-395&4294967295||!(e-427&-32)&&1<<e-427&4160749567||!(e-459&-32)&&1<<e-459&4294967295||!(e-491&-32)&&1<<e-491&4026511359||!(e-523&-32)&&1<<e-523&4294967295||!(e-555&-32)&&1<<e-555&4294967295||!(e-587&-32)&&1<<e-587&4294967295||!(e-619&-32)&&1<<e-619&3561488383||!(e-654&-32)&&1<<e-654&131537)&&(this.state=9340,this.expressionList()),this.state=9343,this.match(t.CLOSE_PAREN);break;case t.OPEN_PAREN:this.enterOuterAlt(s,2),this.state=9344,this.match(t.OPEN_PAREN),this.state=9345,this.expressionList(),this.state=9346,this.match(t.COMMA),this.state=9347,this.expression1(),this.state=9348,this.match(t.CLOSE_PAREN);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}explicitRow(){let e,s=new wI(this.context,this.state);this.enterRule(s,1140,t.RULE_explicitRow);try{this.enterOuterAlt(s,1),this.state=9352,this.match(t.ROW),this.state=9353,this.match(t.OPEN_PAREN),this.state=9355,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&805318660||!(e-33&-32)&&1<<e-33&421518725||!(e-75&-32)&&1<<e-75&2174894095||!(e-107&-32)&&1<<e-107&4294967295||!(e-139&-32)&&1<<e-139&4294967295||!(e-171&-32)&&1<<e-171&4294967295||!(e-203&-32)&&1<<e-203&4294967295||!(e-235&-32)&&1<<e-235&4294672383||!(e-267&-32)&&1<<e-267&4294967295||!(e-299&-32)&&1<<e-299&4294967295||!(e-331&-32)&&1<<e-331&4294967295||!(e-363&-32)&&1<<e-363&4294967295||!(e-395&-32)&&1<<e-395&4294967295||!(e-427&-32)&&1<<e-427&4160749567||!(e-459&-32)&&1<<e-459&4294967295||!(e-491&-32)&&1<<e-491&4026511359||!(e-523&-32)&&1<<e-523&4294967295||!(e-555&-32)&&1<<e-555&4294967295||!(e-587&-32)&&1<<e-587&4294967295||!(e-619&-32)&&1<<e-619&3561488383||!(e-654&-32)&&1<<e-654&131537)&&(this.state=9354,this.expressionList()),this.state=9357,this.match(t.CLOSE_PAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}implicitRow(){let e=new bI(this.context,this.state);this.enterRule(e,1142,t.RULE_implicitRow);try{this.enterOuterAlt(e,1),this.state=9359,this.match(t.OPEN_PAREN),this.state=9360,this.expressionList(),this.state=9361,this.match(t.COMMA),this.state=9362,this.expression1(),this.state=9363,this.match(t.CLOSE_PAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}subType(){let e,s=new WI(this.context,this.state);this.enterRule(s,1144,t.RULE_subType);try{this.enterOuterAlt(s,1),this.state=9365,e=this.tokenStream.LA(1),30===e||34===e||90===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}allOperator(){let e=new VI(this.context,this.state);this.enterRule(e,1146,t.RULE_allOperator);try{switch(this.state=9369,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.Operator:this.enterOuterAlt(e,1),this.state=9367,this.match(t.Operator);break;case t.STAR:case t.EQUAL:case t.PLUS:case t.MINUS:case t.SLASH:case t.CARET:case t.LT:case t.GT:case t.LESS_EQUALS:case t.GREATER_EQUALS:case t.NOT_EQUALS:case t.PERCENT:this.enterOuterAlt(e,2),this.state=9368,this.mathOperator();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}mathOperator(){let e,s=new XI(this.context,this.state);this.enterRule(s,1148,t.RULE_mathOperator);try{this.enterOuterAlt(s,1),this.state=9371,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&178517504?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}operatorQualifier(){let e=new KI(this.context,this.state);this.enterRule(e,1150,t.RULE_operatorQualifier);try{switch(this.state=9379,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.Operator:this.enterOuterAlt(e,1),this.state=9373,this.match(t.Operator);break;case t.OPERATOR:this.enterOuterAlt(e,2),this.state=9374,this.match(t.OPERATOR),this.state=9375,this.match(t.OPEN_PAREN),this.state=9376,this.anyOperator(),this.state=9377,this.match(t.CLOSE_PAREN);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}allOperatorQualifier(){let e=new QI(this.context,this.state);this.enterRule(e,1152,t.RULE_allOperatorQualifier);try{switch(this.state=9387,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.STAR:case t.EQUAL:case t.PLUS:case t.MINUS:case t.SLASH:case t.CARET:case t.LT:case t.GT:case t.LESS_EQUALS:case t.GREATER_EQUALS:case t.NOT_EQUALS:case t.PERCENT:case t.Operator:this.enterOuterAlt(e,1),this.state=9381,this.allOperator();break;case t.OPERATOR:this.enterOuterAlt(e,2),this.state=9382,this.match(t.OPERATOR),this.state=9383,this.match(t.OPEN_PAREN),this.state=9384,this.anyOperator(),this.state=9385,this.match(t.CLOSE_PAREN);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}subqueryOperator(){let e=new JI(this.context,this.state);this.enterRule(e,1154,t.RULE_subqueryOperator);try{switch(this.state=9401,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,660,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9389,this.allOperator();break;case 2:this.enterOuterAlt(e,2),this.state=9390,this.match(t.OPERATOR),this.state=9391,this.match(t.OPEN_PAREN),this.state=9392,this.anyOperator(),this.state=9393,this.match(t.CLOSE_PAREN);break;case 3:this.enterOuterAlt(e,3),this.state=9395,this.match(t.LIKE);break;case 4:this.enterOuterAlt(e,4),this.state=9396,this.match(t.NOT),this.state=9397,this.match(t.LIKE);break;case 5:this.enterOuterAlt(e,5),this.state=9398,this.match(t.ILIKE);break;case 6:this.enterOuterAlt(e,6),this.state=9399,this.match(t.NOT),this.state=9400,this.match(t.ILIKE)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expressionList(){let e=new ZI(this.context,this.state);this.enterRule(e,1156,t.RULE_expressionList);try{let s;for(this.enterOuterAlt(e,1),this.state=9403,this.expression1(),this.state=9408,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,661,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=9404,this.match(t.COMMA),this.state=9405,this.expression1()),this.state=9410,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,661,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionArgumentList(){let e=new qI(this.context,this.state);this.enterRule(e,1158,t.RULE_functionArgumentList);try{let s;for(this.enterOuterAlt(e,1),this.state=9411,this.functionArgumentExpression(),this.state=9416,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,662,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=9412,this.match(t.COMMA),this.state=9413,this.functionArgumentExpression()),this.state=9418,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,662,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionArgumentExpression(){let e,s=new jI(this.context,this.state);this.enterRule(s,1160,t.RULE_functionArgumentExpression);try{switch(this.state=9424,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,663,this.context)){case 1:this.enterOuterAlt(s,1),this.state=9419,this.expression1();break;case 2:this.enterOuterAlt(s,2),this.state=9420,this.parameterName(),this.state=9421,e=this.tokenStream.LA(1),20===e||22===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=9422,this.expression1()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}typeList(){let e,s=new zI(this.context,this.state);this.enterRule(s,1162,t.RULE_typeList);try{for(this.enterOuterAlt(s,1),this.state=9426,this.typeName(),this.state=9431,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=9427,this.match(t.COMMA),this.state=9428,this.typeName(),this.state=9433,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}arrayExpression(){let e=new $I(this.context,this.state);this.enterRule(e,1164,t.RULE_arrayExpression);try{switch(this.enterOuterAlt(e,1),this.state=9434,this.match(t.OPEN_BRACKET),this.state=9437,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:case t.PLUS:case t.MINUS:case t.PARAM:case t.Operator:case t.AND:case t.ARRAY:case t.CASE:case t.CAST:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NOT:case t.NULL_P:case t.SESSION_USER:case t.TABLE:case t.TRUE_P:case t.UNIQUE:case t.USER:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LEFT:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.RIGHT:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.BinaryStringConstant:case t.HexadecimalStringConstant:case t.Integral:case t.Numeric:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.state=9435,this.expressionList();break;case t.OPEN_BRACKET:this.state=9436,this.arrayExpressionList();case t.CLOSE_BRACKET:}this.state=9439,this.match(t.CLOSE_BRACKET)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}arrayExpressionList(){let e,s=new tu(this.context,this.state);this.enterRule(s,1166,t.RULE_arrayExpressionList);try{for(this.enterOuterAlt(s,1),this.state=9441,this.arrayExpression(),this.state=9446,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=9442,this.match(t.COMMA),this.state=9443,this.arrayExpression(),this.state=9448,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}extractList(){let e=new eu(this.context,this.state);this.enterRule(e,1168,t.RULE_extractList);try{switch(this.state=9454,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.OUTER_P:case t.ABSOLUTE_P:case t.BACKWARD:case t.CHAIN:case t.CLOSE:case t.COMMIT:case t.CONTINUE_P:case t.CURSOR:case t.DAY_P:case t.FIRST_P:case t.FORWARD:case t.HOUR_P:case t.INSERT:case t.LAST_P:case t.MINUTE_P:case t.MONTH_P:case t.MOVE:case t.NEXT:case t.NO:case t.OPTION:case t.PRIOR:case t.RELATIVE_P:case t.RESET:case t.ROLLBACK:case t.SCHEMA:case t.SCROLL:case t.SECOND_P:case t.SET:case t.TYPE_P:case t.YEAR_P:case t.CALL:case t.CURRENT_P:case t.ROWTYPE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=9449,this.extractArgument(),this.state=9450,this.match(t.FROM),this.state=9451,this.expression1();break;case t.CLOSE_PAREN:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}extractArgument(){let e=new su(this.context,this.state);this.enterRule(e,1170,t.RULE_extractArgument);try{switch(this.state=9464,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.OUTER_P:case t.ABSOLUTE_P:case t.BACKWARD:case t.CHAIN:case t.CLOSE:case t.COMMIT:case t.CONTINUE_P:case t.CURSOR:case t.FIRST_P:case t.FORWARD:case t.INSERT:case t.LAST_P:case t.MOVE:case t.NEXT:case t.NO:case t.OPTION:case t.PRIOR:case t.RELATIVE_P:case t.RESET:case t.ROLLBACK:case t.SCHEMA:case t.SCROLL:case t.SET:case t.TYPE_P:case t.CALL:case t.CURRENT_P:case t.ROWTYPE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=9456,this.identifier();break;case t.YEAR_P:this.enterOuterAlt(e,2),this.state=9457,this.match(t.YEAR_P);break;case t.MONTH_P:this.enterOuterAlt(e,3),this.state=9458,this.match(t.MONTH_P);break;case t.DAY_P:this.enterOuterAlt(e,4),this.state=9459,this.match(t.DAY_P);break;case t.HOUR_P:this.enterOuterAlt(e,5),this.state=9460,this.match(t.HOUR_P);break;case t.MINUTE_P:this.enterOuterAlt(e,6),this.state=9461,this.match(t.MINUTE_P);break;case t.SECOND_P:this.enterOuterAlt(e,7),this.state=9462,this.match(t.SECOND_P);break;case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.enterOuterAlt(e,8),this.state=9463,this.sconst();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}unicodeNormalForm(){let e,s=new au(this.context,this.state);this.enterRule(s,1172,t.RULE_unicodeNormalForm);try{this.enterOuterAlt(s,1),this.state=9466,e=this.tokenStream.LA(1),!(e-483&-32)&&1<<e-483&15?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}overlayList(){let e,s=new ru(this.context,this.state);this.enterRule(s,1174,t.RULE_overlayList);try{this.enterOuterAlt(s,1),this.state=9468,this.expression1(),this.state=9469,this.match(t.PLACING),this.state=9470,this.expression1(),this.state=9471,this.match(t.FROM),this.state=9472,this.expression1(),this.state=9475,this.errorHandler.sync(this),e=this.tokenStream.LA(1),62===e&&(this.state=9473,this.match(t.FOR),this.state=9474,this.expression1())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}positionList(){let e=new iu(this.context,this.state);this.enterRule(e,1176,t.RULE_positionList);try{switch(this.state=9482,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:case t.PLUS:case t.MINUS:case t.PARAM:case t.Operator:case t.AND:case t.ARRAY:case t.CASE:case t.CAST:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NULL_P:case t.SESSION_USER:case t.TABLE:case t.TRUE_P:case t.UNIQUE:case t.USER:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LEFT:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.RIGHT:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.BinaryStringConstant:case t.HexadecimalStringConstant:case t.Integral:case t.Numeric:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=9477,this.expression2(0),this.state=9478,this.match(t.IN_P),this.state=9479,this.expression2(0);break;case t.CLOSE_PAREN:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}substrList(){let e=new cu(this.context,this.state);this.enterRule(e,1178,t.RULE_substrList);try{switch(this.state=9511,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,671,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9484,this.expression1(),this.state=9485,this.match(t.FROM),this.state=9486,this.expression1(),this.state=9487,this.match(t.FOR),this.state=9488,this.expression1();break;case 2:this.enterOuterAlt(e,2),this.state=9490,this.expression1(),this.state=9491,this.match(t.FOR),this.state=9492,this.expression1(),this.state=9493,this.match(t.FROM),this.state=9494,this.expression1();break;case 3:this.enterOuterAlt(e,3),this.state=9496,this.expression1(),this.state=9497,this.match(t.FROM),this.state=9498,this.expression1();break;case 4:this.enterOuterAlt(e,4),this.state=9500,this.expression1(),this.state=9501,this.match(t.FOR),this.state=9502,this.expression1();break;case 5:this.enterOuterAlt(e,5),this.state=9504,this.expression1(),this.state=9505,this.match(t.SIMILAR),this.state=9506,this.expression1(),this.state=9507,this.match(t.ESCAPE),this.state=9508,this.expression1();break;case 6:this.enterOuterAlt(e,6),this.state=9510,this.expressionList()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}trimList(){let e=new nu(this.context,this.state);this.enterRule(e,1180,t.RULE_trimList);try{switch(this.state=9520,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,672,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9513,this.expression1(),this.state=9514,this.match(t.FROM),this.state=9515,this.expressionList();break;case 2:this.enterOuterAlt(e,2),this.state=9517,this.match(t.FROM),this.state=9518,this.expressionList();break;case 3:this.enterOuterAlt(e,3),this.state=9519,this.expressionList()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}inExpression(){let e=new hu(this.context,this.state);this.enterRule(e,1182,t.RULE_inExpression);try{switch(this.state=9527,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,673,this.context)){case 1:e=new Tu(e),this.enterOuterAlt(e,1),this.state=9522,this.selectWithParenthesis();break;case 2:e=new Eu(e),this.enterOuterAlt(e,2),this.state=9523,this.match(t.OPEN_PAREN),this.state=9524,this.expressionList(),this.state=9525,this.match(t.CLOSE_PAREN)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}caseExpression(){let e=new ou(this.context,this.state);this.enterRule(e,1184,t.RULE_caseExpression);try{this.enterOuterAlt(e,1),this.state=9529,this.match(t.CASE),this.state=9530,this.caseArg(),this.state=9531,this.whenClauseList(),this.state=9532,this.caseDefault(),this.state=9533,this.match(t.END_P)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}whenClauseList(){let e,s=new Ru(this.context,this.state);this.enterRule(s,1186,t.RULE_whenClauseList);try{this.enterOuterAlt(s,1),this.state=9536,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=9535,this.whenClause(),this.state=9538,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(102===e)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}whenClause(){let e=new Au(this.context,this.state);this.enterRule(e,1188,t.RULE_whenClause);try{this.enterOuterAlt(e,1),this.state=9540,this.match(t.WHEN),this.state=9541,this.expression1(),this.state=9542,this.match(t.THEN),this.state=9543,this.expression1()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}caseDefault(){let e=new Su(this.context,this.state);this.enterRule(e,1190,t.RULE_caseDefault);try{switch(this.state=9548,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ELSE:this.enterOuterAlt(e,1),this.state=9545,this.match(t.ELSE),this.state=9546,this.expression1();break;case t.END_P:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}caseArg(){let e=new lu(this.context,this.state);this.enterRule(e,1192,t.RULE_caseArg);try{switch(this.state=9552,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:case t.PLUS:case t.MINUS:case t.PARAM:case t.Operator:case t.AND:case t.ARRAY:case t.CASE:case t.CAST:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NOT:case t.NULL_P:case t.SESSION_USER:case t.TABLE:case t.TRUE_P:case t.UNIQUE:case t.USER:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LEFT:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.RIGHT:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.BinaryStringConstant:case t.HexadecimalStringConstant:case t.Integral:case t.Numeric:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(e,1),this.state=9550,this.expression1();break;case t.WHEN:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}columnReference(){let e=new Ou(this.context,this.state);this.enterRule(e,1194,t.RULE_columnReference);try{if(1===(this.enterOuterAlt(e,1),this.state=9554,this.columnId(),this.state=9556,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,677,this.context)))this.state=9555,this.indirection()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}indirectionElement(){let e,s=new Iu(this.context,this.state);this.enterRule(s,1196,t.RULE_indirectionElement);try{switch(this.state=9575,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DOT:switch(this.enterOuterAlt(s,1),this.state=9558,this.match(t.DOT),this.state=9561,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALL:case t.ANALYSE:case t.ANALYZE:case t.AND:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASYMMETRIC:case t.BOTH:case t.CASE:case t.CAST:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CREATE:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DEFERRABLE:case t.DESC:case t.DISTINCT:case t.DO:case t.ELSE:case t.EXCEPT:case t.FALSE_P:case t.FETCH:case t.FOR:case t.FOREIGN:case t.FROM:case t.GRANT:case t.GROUP_P:case t.HAVING:case t.IN_P:case t.INITIALLY:case t.INTERSECT:case t.LATERAL_P:case t.LEADING:case t.LIMIT:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NOT:case t.NULL_P:case t.OFFSET:case t.ON:case t.ONLY:case t.OR:case t.ORDER:case t.PLACING:case t.PRIMARY:case t.REFERENCES:case t.RETURNING:case t.SELECT:case t.SESSION_USER:case t.SOME:case t.SYMMETRIC:case t.TABLE:case t.THEN:case t.TO:case t.TRAILING:case t.TRUE_P:case t.UNION:case t.UNIQUE:case t.USER:case t.USING:case t.VARIADIC:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.END_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.state=9559,this.attributeName();break;case t.STAR:this.state=9560,this.match(t.STAR);break;default:throw new Ei(this)}break;case t.OPEN_BRACKET:switch(this.enterOuterAlt(s,2),this.state=9563,this.match(t.OPEN_BRACKET),this.state=9572,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,681,this.context)){case 1:this.state=9564,this.expression1();break;case 2:this.state=9566,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&805318660||!(e-33&-32)&&1<<e-33&421518725||!(e-75&-32)&&1<<e-75&2174894095||!(e-107&-32)&&1<<e-107&4294967295||!(e-139&-32)&&1<<e-139&4294967295||!(e-171&-32)&&1<<e-171&4294967295||!(e-203&-32)&&1<<e-203&4294967295||!(e-235&-32)&&1<<e-235&4294672383||!(e-267&-32)&&1<<e-267&4294967295||!(e-299&-32)&&1<<e-299&4294967295||!(e-331&-32)&&1<<e-331&4294967295||!(e-363&-32)&&1<<e-363&4294967295||!(e-395&-32)&&1<<e-395&4294967295||!(e-427&-32)&&1<<e-427&4160749567||!(e-459&-32)&&1<<e-459&4294967295||!(e-491&-32)&&1<<e-491&4026511359||!(e-523&-32)&&1<<e-523&4294967295||!(e-555&-32)&&1<<e-555&4294967295||!(e-587&-32)&&1<<e-587&4294967295||!(e-619&-32)&&1<<e-619&3561488383||!(e-654&-32)&&1<<e-654&131537)&&(this.state=9565,this.expression1()),this.state=9568,this.match(t.COLON),this.state=9570,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&805318660||!(e-33&-32)&&1<<e-33&421518725||!(e-75&-32)&&1<<e-75&2174894095||!(e-107&-32)&&1<<e-107&4294967295||!(e-139&-32)&&1<<e-139&4294967295||!(e-171&-32)&&1<<e-171&4294967295||!(e-203&-32)&&1<<e-203&4294967295||!(e-235&-32)&&1<<e-235&4294672383||!(e-267&-32)&&1<<e-267&4294967295||!(e-299&-32)&&1<<e-299&4294967295||!(e-331&-32)&&1<<e-331&4294967295||!(e-363&-32)&&1<<e-363&4294967295||!(e-395&-32)&&1<<e-395&4294967295||!(e-427&-32)&&1<<e-427&4160749567||!(e-459&-32)&&1<<e-459&4294967295||!(e-491&-32)&&1<<e-491&4026511359||!(e-523&-32)&&1<<e-523&4294967295||!(e-555&-32)&&1<<e-555&4294967295||!(e-587&-32)&&1<<e-587&4294967295||!(e-619&-32)&&1<<e-619&3561488383||!(e-654&-32)&&1<<e-654&131537)&&(this.state=9569,this.expression1())}this.state=9574,this.match(t.CLOSE_BRACKET);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}indirection(){let e=new uu(this.context,this.state);this.enterRule(e,1198,t.RULE_indirection);try{let t;this.enterOuterAlt(e,1),this.state=9578,this.errorHandler.sync(this),t=1;do{if(1!==t)throw new Ei(this);this.state=9577,this.indirectionElement(),this.state=9580,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,683,this.context)}while(2!==t&&t!==ja.INVALID_ALT_NUMBER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalIndirection(){let e=new Nu(this.context,this.state);this.enterRule(e,1200,t.RULE_optionalIndirection);try{let t;for(this.enterOuterAlt(e,1),this.state=9585,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,684,this.context);2!==t&&t!==ja.INVALID_ALT_NUMBER;)1===t&&(this.state=9582,this.indirectionElement()),this.state=9587,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,684,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalTargetList(){let e=new Lu(this.context,this.state);this.enterRule(e,1202,t.RULE_optionalTargetList);try{switch(this.state=9590,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,685,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9588,this.targetList();break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}targetList(){let e=new Cu(this.context,this.state);this.enterRule(e,1204,t.RULE_targetList);try{let s;for(this.enterOuterAlt(e,1),this.state=9592,this.targetElement(),this.state=9597,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,686,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=9593,this.match(t.COMMA),this.state=9594,this.targetElement()),this.state=9599,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,686,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}targetElement(){let e=new _u(this.context,this.state);this.enterRule(e,1206,t.RULE_targetElement);try{switch(this.state=9608,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.STAR:e=new Pu(e),this.enterOuterAlt(e,1),this.state=9600,this.match(t.STAR);break;case t.OPEN_PAREN:case t.PLUS:case t.MINUS:case t.PARAM:case t.Operator:case t.AND:case t.ARRAY:case t.CASE:case t.CAST:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NOT:case t.NULL_P:case t.SESSION_USER:case t.TABLE:case t.TRUE_P:case t.UNIQUE:case t.USER:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LEFT:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.RIGHT:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.BinaryStringConstant:case t.HexadecimalStringConstant:case t.Integral:case t.Numeric:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:switch(e=new Mu(e),this.enterOuterAlt(e,2),this.state=9601,this.expression1(),this.state=9606,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,687,this.context)){case 1:this.state=9602,this.match(t.AS),this.state=9603,this.columnLabel();break;case 2:this.state=9604,this.identifier()}break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}qualifiedNameList(){let e,s=new du(this.context,this.state);this.enterRule(s,1208,t.RULE_qualifiedNameList);try{for(this.enterOuterAlt(s,1),this.state=9610,this.qualifiedName(),this.state=9615,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=9611,this.match(t.COMMA),this.state=9612,this.qualifiedName(),this.state=9617,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}databaseName(){let e=new Uu(this.context,this.state);this.enterRule(e,1210,t.RULE_databaseName);try{this.enterOuterAlt(e,1),this.state=9618,this.name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}databaseNameList(){let e,s=new mu(this.context,this.state);this.enterRule(s,1212,t.RULE_databaseNameList);try{for(this.enterOuterAlt(s,1),this.state=9620,this.databaseName(),this.state=9625,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=9621,this.match(t.COMMA),this.state=9622,this.databaseName(),this.state=9627,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}schemaName(){let e=new Du(this.context,this.state);this.enterRule(e,1214,t.RULE_schemaName);try{this.enterOuterAlt(e,1),this.state=9628,this.name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}schemaNameList(){let e,s=new pu(this.context,this.state);this.enterRule(s,1216,t.RULE_schemaNameList);try{for(this.enterOuterAlt(s,1),this.state=9630,this.schemaName(),this.state=9635,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=9631,this.match(t.COMMA),this.state=9632,this.schemaName(),this.state=9637,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}indexName(){let e=new gu(this.context,this.state);this.enterRule(e,1218,t.RULE_indexName);try{this.enterOuterAlt(e,1),this.state=9638,this.qualifiedName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}indexNameList(){let e,s=new xu(this.context,this.state);this.enterRule(s,1220,t.RULE_indexNameList);try{for(this.enterOuterAlt(s,1),this.state=9640,this.indexName(),this.state=9645,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=9641,this.match(t.COMMA),this.state=9642,this.indexName(),this.state=9647,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}triggerName(){let e=new ku(this.context,this.state);this.enterRule(e,1222,t.RULE_triggerName);try{this.enterOuterAlt(e,1),this.state=9648,this.name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}constraintName(){let e=new Hu(this.context,this.state);this.enterRule(e,1224,t.RULE_constraintName);try{this.enterOuterAlt(e,1),this.state=9650,this.name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sequenceName(){let e=new Gu(this.context,this.state);this.enterRule(e,1226,t.RULE_sequenceName);try{this.enterOuterAlt(e,1),this.state=9652,this.qualifiedName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sequenceNameList(){let e,s=new Fu(this.context,this.state);this.enterRule(s,1228,t.RULE_sequenceNameList);try{for(this.enterOuterAlt(s,1),this.state=9654,this.sequenceName(),this.state=9659,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=9655,this.match(t.COMMA),this.state=9656,this.sequenceName(),this.state=9661,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}qualifiedName(){let e,s=new vu(this.context,this.state);this.enterRule(s,1230,t.RULE_qualifiedName);try{this.enterOuterAlt(s,1),this.state=9662,this.columnId(),this.state=9664,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(4===e||11===e)&&(this.state=9663,this.indirection())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}nameList(){let e,s=new Bu(this.context,this.state);this.enterRule(s,1232,t.RULE_nameList);try{for(this.enterOuterAlt(s,1),this.state=9666,this.name(),this.state=9671,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=9667,this.match(t.COMMA),this.state=9668,this.name(),this.state=9673,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}name(){let e=new yu(this.context,this.state);this.enterRule(e,1234,t.RULE_name);try{this.enterOuterAlt(e,1),this.state=9674,this.columnId()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}attributeName(){let e=new fu(this.context,this.state);this.enterRule(e,1236,t.RULE_attributeName);try{this.enterOuterAlt(e,1),this.state=9676,this.columnLabel()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}fileName(){let e=new Yu(this.context,this.state);this.enterRule(e,1238,t.RULE_fileName);try{this.enterOuterAlt(e,1),this.state=9678,this.sconst()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionName(){let e=new wu(this.context,this.state);this.enterRule(e,1240,t.RULE_functionName);try{switch(this.state=9687,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,696,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9680,this.builtinFunctionName();break;case 2:this.enterOuterAlt(e,2),this.state=9681,this.typeFunctionName();break;case 3:this.enterOuterAlt(e,3),this.state=9682,this.columnId(),this.state=9683,this.indirection();break;case 4:this.enterOuterAlt(e,4),this.state=9685,this.match(t.LEFT);break;case 5:this.enterOuterAlt(e,5),this.state=9686,this.match(t.RIGHT)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}aExpressionConst(){let e=new bu(this.context,this.state);this.enterRule(e,1242,t.RULE_aExpressionConst);try{switch(this.state=9721,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,699,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9689,this.iconst();break;case 2:this.enterOuterAlt(e,2),this.state=9690,this.fconst();break;case 3:this.enterOuterAlt(e,3),this.state=9691,this.sconst();break;case 4:this.enterOuterAlt(e,4),this.state=9692,this.bconst();break;case 5:this.enterOuterAlt(e,5),this.state=9693,this.xconst();break;case 6:switch(this.enterOuterAlt(e,6),this.state=9694,this.functionName(),this.state=9702,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.state=9695,this.sconst();break;case t.OPEN_PAREN:this.state=9696,this.match(t.OPEN_PAREN),this.state=9697,this.functionArgumentList(),this.state=9698,this.optionalSortClause(),this.state=9699,this.match(t.CLOSE_PAREN),this.state=9700,this.sconst();break;default:throw new Ei(this)}break;case 7:this.enterOuterAlt(e,7),this.state=9704,this.constTypeName(),this.state=9705,this.sconst();break;case 8:switch(this.enterOuterAlt(e,8),this.state=9707,this.constInterval(),this.state=9716,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.EscapeStringConstant:this.state=9708,this.sconst(),this.state=9709,this.optionalInterval();break;case t.OPEN_PAREN:this.state=9711,this.match(t.OPEN_PAREN),this.state=9712,this.iconst(),this.state=9713,this.match(t.CLOSE_PAREN),this.state=9714,this.sconst();break;default:throw new Ei(this)}break;case 9:this.enterOuterAlt(e,9),this.state=9718,this.match(t.TRUE_P);break;case 10:this.enterOuterAlt(e,10),this.state=9719,this.match(t.FALSE_P);break;case 11:this.enterOuterAlt(e,11),this.state=9720,this.match(t.NULL_P)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}xconst(){let e=new Wu(this.context,this.state);this.enterRule(e,1244,t.RULE_xconst);try{this.enterOuterAlt(e,1),this.state=9723,this.match(t.HexadecimalStringConstant)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}bconst(){let e=new Vu(this.context,this.state);this.enterRule(e,1246,t.RULE_bconst);try{this.enterOuterAlt(e,1),this.state=9725,this.match(t.BinaryStringConstant)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}fconst(){let e=new Xu(this.context,this.state);this.enterRule(e,1248,t.RULE_fconst);try{this.enterOuterAlt(e,1),this.state=9727,this.match(t.Numeric)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}iconst(){let e=new Ku(this.context,this.state);this.enterRule(e,1250,t.RULE_iconst);try{this.enterOuterAlt(e,1),this.state=9729,this.match(t.Integral)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sconst(){let e=new Qu(this.context,this.state);this.enterRule(e,1252,t.RULE_sconst);try{this.enterOuterAlt(e,1),this.state=9731,this.anySconst(),this.state=9732,this.optionalUescape()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}anySconst(){let e,s=new Ju(this.context,this.state);this.enterRule(s,1254,t.RULE_anySconst);try{switch(this.state=9745,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.StringConstant:this.enterOuterAlt(s,1),this.state=9734,this.match(t.StringConstant);break;case t.UnicodeEscapeStringConstant:this.enterOuterAlt(s,2),this.state=9735,this.match(t.UnicodeEscapeStringConstant);break;case t.BeginDollarStringConstant:for(this.enterOuterAlt(s,3),this.state=9736,this.match(t.BeginDollarStringConstant),this.state=9740,this.errorHandler.sync(this),e=this.tokenStream.LA(1);677===e;)this.state=9737,this.match(t.DollarText),this.state=9742,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=9743,this.match(t.EndDollarStringConstant);break;case t.EscapeStringConstant:this.enterOuterAlt(s,4),this.state=9744,this.match(t.EscapeStringConstant);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalUescape(){let e=new Zu(this.context,this.state);this.enterRule(e,1256,t.RULE_optionalUescape);try{switch(this.state=9750,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,702,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9747,this.match(t.UESCAPE),this.state=9748,this.anySconst();break;case 2:this.enterOuterAlt(e,2)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}signedIconst(){let e=new qu(this.context,this.state);this.enterRule(e,1258,t.RULE_signedIconst);try{switch(this.state=9757,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.Integral:this.enterOuterAlt(e,1),this.state=9752,this.iconst();break;case t.PLUS:this.enterOuterAlt(e,2),this.state=9753,this.match(t.PLUS),this.state=9754,this.iconst();break;case t.MINUS:this.enterOuterAlt(e,3),this.state=9755,this.match(t.MINUS),this.state=9756,this.iconst();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}roleName(){let e=new ju(this.context,this.state);this.enterRule(e,1260,t.RULE_roleName);try{switch(this.state=9762,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=9759,this.nonReservedWord();break;case t.CURRENT_USER:this.enterOuterAlt(e,2),this.state=9760,this.match(t.CURRENT_USER);break;case t.SESSION_USER:this.enterOuterAlt(e,3),this.state=9761,this.match(t.SESSION_USER);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}roleNameList(){let e,s=new zu(this.context,this.state);this.enterRule(s,1262,t.RULE_roleNameList);try{for(this.enterOuterAlt(s,1),this.state=9764,this.roleName(),this.state=9769,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=9765,this.match(t.COMMA),this.state=9766,this.roleName(),this.state=9771,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnId(){let e=new $u(this.context,this.state);this.enterRule(e,1264,t.RULE_columnId);try{switch(this.state=9778,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,706,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9772,this.identifier();break;case 2:this.enterOuterAlt(e,2),this.state=9773,this.unreservedKeyword();break;case 3:this.enterOuterAlt(e,3),this.state=9774,this.columnNameKeyword();break;case 4:this.enterOuterAlt(e,4),this.state=9775,this.plsqlUnreservedKeyword();break;case 5:this.enterOuterAlt(e,5),this.state=9776,this.match(t.LEFT);break;case 6:this.enterOuterAlt(e,6),this.state=9777,this.match(t.RIGHT)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableAlias(){let e=new tN(this.context,this.state);this.enterRule(e,1266,t.RULE_tableAlias);try{switch(this.state=9784,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,707,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9780,this.identifier();break;case 2:this.enterOuterAlt(e,2),this.state=9781,this.unreservedKeyword();break;case 3:this.enterOuterAlt(e,3),this.state=9782,this.columnNameKeyword();break;case 4:this.enterOuterAlt(e,4),this.state=9783,this.plsqlUnreservedKeyword()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}typeFunctionName(){let e=new eN(this.context,this.state);this.enterRule(e,1268,t.RULE_typeFunctionName);try{switch(this.state=9790,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,708,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9786,this.identifier();break;case 2:this.enterOuterAlt(e,2),this.state=9787,this.unreservedKeyword();break;case 3:this.enterOuterAlt(e,3),this.state=9788,this.plsqlUnreservedKeyword();break;case 4:this.enterOuterAlt(e,4),this.state=9789,this.typeFunctionNameKeyword()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}nonReservedWord(){let e=new sN(this.context,this.state);this.enterRule(e,1270,t.RULE_nonReservedWord);try{switch(this.state=9796,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,709,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9792,this.identifier();break;case 2:this.enterOuterAlt(e,2),this.state=9793,this.unreservedKeyword();break;case 3:this.enterOuterAlt(e,3),this.state=9794,this.columnNameKeyword();break;case 4:this.enterOuterAlt(e,4),this.state=9795,this.typeFunctionNameKeyword()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}columnLabel(){let e=new aN(this.context,this.state);this.enterRule(e,1272,t.RULE_columnLabel);try{switch(this.state=9804,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,710,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9798,this.identifier();break;case 2:this.enterOuterAlt(e,2),this.state=9799,this.plsqlUnreservedKeyword();break;case 3:this.enterOuterAlt(e,3),this.state=9800,this.unreservedKeyword();break;case 4:this.enterOuterAlt(e,4),this.state=9801,this.columnNameKeyword();break;case 5:this.enterOuterAlt(e,5),this.state=9802,this.typeFunctionNameKeyword();break;case 6:this.enterOuterAlt(e,6),this.state=9803,this.reservedKeyword()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}identifier(){let e=new rN(this.context,this.state);this.enterRule(e,1274,t.RULE_identifier);try{switch(this.state=9813,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.Identifier:this.enterOuterAlt(e,1),this.state=9806,this.match(t.Identifier),this.state=9807,this.optionalUescape();break;case t.QuotedIdentifier:this.enterOuterAlt(e,2),this.state=9808,this.match(t.QuotedIdentifier);break;case t.UnicodeQuotedIdentifier:this.enterOuterAlt(e,3),this.state=9809,this.match(t.UnicodeQuotedIdentifier);break;case t.PLSQLVARIABLENAME:this.enterOuterAlt(e,4),this.state=9810,this.plsqlVariableName();break;case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,5),this.state=9811,this.plsqlIdentifier();break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.OUTER_P:case t.ABSOLUTE_P:case t.BACKWARD:case t.CHAIN:case t.CLOSE:case t.COMMIT:case t.CONTINUE_P:case t.CURSOR:case t.FIRST_P:case t.FORWARD:case t.INSERT:case t.LAST_P:case t.MOVE:case t.NEXT:case t.NO:case t.OPTION:case t.PRIOR:case t.RELATIVE_P:case t.RESET:case t.ROLLBACK:case t.SCHEMA:case t.SCROLL:case t.SET:case t.TYPE_P:case t.CALL:case t.CURRENT_P:case t.ROWTYPE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:this.enterOuterAlt(e,6),this.state=9812,this.plsqlUnreservedKeyword();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}plsqlIdentifier(){let e=new iN(this.context,this.state);this.enterRule(e,1276,t.RULE_plsqlIdentifier);try{this.enterOuterAlt(e,1),this.state=9815,this.match(t.PLSQLIDENTIFIER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}unreservedKeyword(){let e,s=new cN(this.context,this.state);this.enterRule(s,1278,t.RULE_unreservedKeyword);try{this.enterOuterAlt(s,1),this.state=9817,e=this.tokenStream.LA(1),!(e-124&-32)&&1<<e-124&4294967265||!(e-156&-32)&&1<<e-156&4294967295||!(e-188&-32)&&1<<e-188&4294967295||!(e-220&-32)&&1<<e-220&3221225471||!(e-252&-32)&&1<<e-252&4294967293||!(e-284&-32)&&1<<e-284&4293918719||!(e-316&-32)&&1<<e-316&4294967295||!(e-348&-32)&&1<<e-348&4294967295||!(e-433&-32)&&1<<e-433&4291821567||!(e-465&-32)&&1<<e-465&16770399?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnNameKeyword(){let e=new nN(this.context,this.state);this.enterRule(e,1280,t.RULE_columnNameKeyword);try{switch(this.state=9871,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,712,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9819,this.match(t.BETWEEN);break;case 2:this.enterOuterAlt(e,2),this.state=9820,this.match(t.BIGINT);break;case 3:this.enterOuterAlt(e,3),this.state=9821,this.bit();break;case 4:this.enterOuterAlt(e,4),this.state=9822,this.match(t.BOOLEAN_P);break;case 5:this.enterOuterAlt(e,5),this.state=9823,this.match(t.CHAR_P);break;case 6:this.enterOuterAlt(e,6),this.state=9824,this.character();break;case 7:this.enterOuterAlt(e,7),this.state=9825,this.match(t.COALESCE);break;case 8:this.enterOuterAlt(e,8),this.state=9826,this.match(t.DEC);break;case 9:this.enterOuterAlt(e,9),this.state=9827,this.match(t.DECIMAL_P);break;case 10:this.enterOuterAlt(e,10),this.state=9828,this.match(t.EXISTS);break;case 11:this.enterOuterAlt(e,11),this.state=9829,this.match(t.EXTRACT);break;case 12:this.enterOuterAlt(e,12),this.state=9830,this.match(t.FLOAT_P);break;case 13:this.enterOuterAlt(e,13),this.state=9831,this.match(t.GREATEST);break;case 14:this.enterOuterAlt(e,14),this.state=9832,this.match(t.GROUPING);break;case 15:this.enterOuterAlt(e,15),this.state=9833,this.match(t.INOUT);break;case 16:this.enterOuterAlt(e,16),this.state=9834,this.match(t.INT_P);break;case 17:this.enterOuterAlt(e,17),this.state=9835,this.match(t.INTEGER);break;case 18:this.enterOuterAlt(e,18),this.state=9836,this.match(t.INTERVAL);break;case 19:this.enterOuterAlt(e,19),this.state=9837,this.match(t.LEAST);break;case 20:this.enterOuterAlt(e,20),this.state=9838,this.match(t.NATIONAL);break;case 21:this.enterOuterAlt(e,21),this.state=9839,this.match(t.NCHAR);break;case 22:this.enterOuterAlt(e,22),this.state=9840,this.match(t.NONE);break;case 23:this.enterOuterAlt(e,23),this.state=9841,this.match(t.NORMALIZE);break;case 24:this.enterOuterAlt(e,24),this.state=9842,this.match(t.NULLIF);break;case 25:this.enterOuterAlt(e,25),this.state=9843,this.numeric();break;case 26:this.enterOuterAlt(e,26),this.state=9844,this.match(t.OUT_P);break;case 27:this.enterOuterAlt(e,27),this.state=9845,this.match(t.OVERLAY);break;case 28:this.enterOuterAlt(e,28),this.state=9846,this.match(t.POSITION);break;case 29:this.enterOuterAlt(e,29),this.state=9847,this.match(t.PRECISION);break;case 30:this.enterOuterAlt(e,30),this.state=9848,this.match(t.REAL);break;case 31:this.enterOuterAlt(e,31),this.state=9849,this.match(t.ROW);break;case 32:this.enterOuterAlt(e,32),this.state=9850,this.match(t.SETOF);break;case 33:this.enterOuterAlt(e,33),this.state=9851,this.match(t.SMALLINT);break;case 34:this.enterOuterAlt(e,34),this.state=9852,this.match(t.SUBSTRING);break;case 35:this.enterOuterAlt(e,35),this.state=9853,this.match(t.TIME);break;case 36:this.enterOuterAlt(e,36),this.state=9854,this.match(t.TIMESTAMP);break;case 37:this.enterOuterAlt(e,37),this.state=9855,this.match(t.TREAT);break;case 38:this.enterOuterAlt(e,38),this.state=9856,this.match(t.TRIM);break;case 39:this.enterOuterAlt(e,39),this.state=9857,this.match(t.VALUES);break;case 40:this.enterOuterAlt(e,40),this.state=9858,this.match(t.VARCHAR);break;case 41:this.enterOuterAlt(e,41),this.state=9859,this.match(t.XMLATTRIBUTES);break;case 42:this.enterOuterAlt(e,42),this.state=9860,this.match(t.XMLCONCAT);break;case 43:this.enterOuterAlt(e,43),this.state=9861,this.match(t.XMLELEMENT);break;case 44:this.enterOuterAlt(e,44),this.state=9862,this.match(t.XMLEXISTS);break;case 45:this.enterOuterAlt(e,45),this.state=9863,this.match(t.XMLFOREST);break;case 46:this.enterOuterAlt(e,46),this.state=9864,this.match(t.XMLNAMESPACES);break;case 47:this.enterOuterAlt(e,47),this.state=9865,this.match(t.XMLPARSE);break;case 48:this.enterOuterAlt(e,48),this.state=9866,this.match(t.XMLPI);break;case 49:this.enterOuterAlt(e,49),this.state=9867,this.match(t.XMLROOT);break;case 50:this.enterOuterAlt(e,50),this.state=9868,this.match(t.XMLSERIALIZE);break;case 51:this.enterOuterAlt(e,51),this.state=9869,this.match(t.XMLTABLE);break;case 52:this.enterOuterAlt(e,52),this.state=9870,this.builtinFunctionName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}typeFunctionNameKeyword(){let e,s=new hN(this.context,this.state);this.enterRule(s,1282,t.RULE_typeFunctionNameKeyword);try{this.enterOuterAlt(s,1),this.state=9873,e=this.tokenStream.LA(1),!(e-106&-32)&&1<<e-106&7069695||472===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}reservedKeyword(){let e,s=new EN(this.context,this.state);this.enterRule(s,1284,t.RULE_reservedKeyword);try{this.enterOuterAlt(s,1),this.state=9875,e=this.tokenStream.LA(1),!(e-30&-32)&&1<<e-30&4286578687||!(e-62&-32)&&1<<e-62&4294966783||!(e-94&-32)&&1<<e-94&4095||454===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}builtinFunctionName(){let e,s=new TN(this.context,this.state);this.enterRule(s,1286,t.RULE_builtinFunctionName);try{this.enterOuterAlt(s,1),this.state=9877,e=this.tokenStream.LA(1),304===e||!(e-418&-32)&&1<<e-418&127||!(e-504&-32)&&1<<e-504&4294836737||!(e-536&-32)&&1<<e-536&4294967295||!(e-568&-32)&&1<<e-568&4294967295||!(e-600&-32)&&1<<e-600&4294967295||!(e-632&-32)&&1<<e-632&15?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}plsqlFunction(){let e=new oN(this.context,this.state);this.enterRule(e,1288,t.RULE_plsqlFunction);try{this.enterOuterAlt(e,1),this.state=9879,this.computeOptions(),this.state=9880,this.plsqlBlock(),this.state=9881,this.optionalSemi()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}computeOptions(){let e,s=new RN(this.context,this.state);this.enterRule(s,1290,t.RULE_computeOptions);try{for(this.enterOuterAlt(s,1),this.state=9886,this.errorHandler.sync(this),e=this.tokenStream.LA(1);29===e;)this.state=9883,this.computeOption(),this.state=9888,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}computeOption(){let e=new AN(this.context,this.state);this.enterRule(e,1292,t.RULE_computeOption);try{switch(this.state=9909,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,714,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9889,this.sharp(),this.state=9890,this.match(t.OPTION),this.state=9891,this.match(t.DUMP);break;case 2:this.enterOuterAlt(e,2),this.state=9893,this.sharp(),this.state=9894,this.match(t.PRINT_STRICT_PARAMS),this.state=9895,this.optionValue();break;case 3:this.enterOuterAlt(e,3),this.state=9897,this.sharp(),this.state=9898,this.match(t.VARIABLE_CONFLICT),this.state=9899,this.match(t.ERROR);break;case 4:this.enterOuterAlt(e,4),this.state=9901,this.sharp(),this.state=9902,this.match(t.VARIABLE_CONFLICT),this.state=9903,this.match(t.USE_VARIABLE);break;case 5:this.enterOuterAlt(e,5),this.state=9905,this.sharp(),this.state=9906,this.match(t.VARIABLE_CONFLICT),this.state=9907,this.match(t.USE_COLUMN)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sharp(){let e=new SN(this.context,this.state);this.enterRule(e,1294,t.RULE_sharp);try{this.enterOuterAlt(e,1),this.state=9911,this.match(t.Operator)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionValue(){let e=new lN(this.context,this.state);this.enterRule(e,1296,t.RULE_optionValue);try{switch(this.state=9917,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,715,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9913,this.sconst();break;case 2:this.enterOuterAlt(e,2),this.state=9914,this.reservedKeyword();break;case 3:this.enterOuterAlt(e,3),this.state=9915,this.plsqlUnreservedKeyword();break;case 4:this.enterOuterAlt(e,4),this.state=9916,this.unreservedKeyword()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalSemi(){let e=new ON(this.context,this.state);this.enterRule(e,1298,t.RULE_optionalSemi);try{switch(this.state=9921,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EOF:this.enterOuterAlt(e,1);break;case t.SEMI:this.enterOuterAlt(e,2),this.state=9920,this.match(t.SEMI);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}plsqlBlock(){let e=new IN(this.context,this.state);this.enterRule(e,1300,t.RULE_plsqlBlock);try{this.enterOuterAlt(e,1),this.state=9923,this.declareSection(),this.state=9924,this.match(t.BEGIN_P),this.state=9925,this.procedureSection(),this.state=9926,this.exceptionSection(),this.state=9927,this.match(t.END_P),this.state=9928,this.optionalLabel()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareSection(){let e,s=new uN(this.context,this.state);this.enterRule(s,1302,t.RULE_declareSection);try{if(this.enterOuterAlt(s,1),this.state=9930,this.optionalBlockLabel(),this.state=9935,this.errorHandler.sync(this),e=this.tokenStream.LA(1),178===e&&1===(this.state=9931,this.declareStart(),this.state=9933,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,717,this.context)))this.state=9932,this.declareStatements()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}declareStart(){let e=new NN(this.context,this.state);this.enterRule(e,1304,t.RULE_declareStart);try{this.enterOuterAlt(e,1),this.state=9937,this.match(t.DECLARE)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareStatements(){let e=new LN(this.context,this.state);this.enterRule(e,1306,t.RULE_declareStatements);try{let t;this.enterOuterAlt(e,1),this.state=9940,this.errorHandler.sync(this),t=1;do{if(1!==t)throw new Ei(this);this.state=9939,this.declareStatement(),this.state=9942,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,719,this.context)}while(2!==t&&t!==ja.INVALID_ALT_NUMBER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}labelDeclaration(){let e=new CN(this.context,this.state);this.enterRule(e,1308,t.RULE_labelDeclaration);try{this.enterOuterAlt(e,1),this.state=9944,this.match(t.LESS_LESS),this.state=9945,this.anyIdentifier(),this.state=9946,this.match(t.GREATER_GREATER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareStatement(){let e=new _N(this.context,this.state);this.enterRule(e,1310,t.RULE_declareStatement);try{switch(this.state=9951,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,720,this.context)){case 1:this.enterOuterAlt(e,1),this.state=9948,this.declareStatement2();break;case 2:this.enterOuterAlt(e,2),this.state=9949,this.match(t.DECLARE);break;case 3:this.enterOuterAlt(e,3),this.state=9950,this.labelDeclaration()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareStatement2(){let e=new PN(this.context,this.state);this.enterRule(e,1312,t.RULE_declareStatement2);try{switch(this.enterOuterAlt(e,1),this.state=9953,this.declareVarname(),this.state=9969,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,721,this.context)){case 1:this.state=9954,this.match(t.ALIAS),this.state=9955,this.match(t.FOR),this.state=9956,this.declareAliasItem();break;case 2:this.state=9957,this.declareConst(),this.state=9958,this.declareDatatype(),this.state=9959,this.declareCollate(),this.state=9960,this.declareNotNull(),this.state=9961,this.declareDefaultValue();break;case 3:this.state=9963,this.optionalScrollable(),this.state=9964,this.match(t.CURSOR),this.state=9965,this.declareCursorArgs(),this.state=9966,this.declareIsOrFor(),this.state=9967,this.declareCursorQuery()}this.state=9971,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalScrollable(){let e=new MN(this.context,this.state);this.enterRule(e,1314,t.RULE_optionalScrollable);try{switch(this.state=9977,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CURSOR:this.enterOuterAlt(e,1);break;case t.NO:this.enterOuterAlt(e,2),this.state=9974,this.match(t.NO),this.state=9975,this.match(t.SCROLL);break;case t.SCROLL:this.enterOuterAlt(e,3),this.state=9976,this.match(t.SCROLL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareCursorQuery(){let e=new dN(this.context,this.state);this.enterRule(e,1316,t.RULE_declareCursorQuery);try{this.enterOuterAlt(e,1),this.state=9979,this.selectStatement()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareCursorArgs(){let e=new UN(this.context,this.state);this.enterRule(e,1318,t.RULE_declareCursorArgs);try{switch(this.state=9986,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:case t.IS:this.enterOuterAlt(e,1);break;case t.OPEN_PAREN:this.enterOuterAlt(e,2),this.state=9982,this.match(t.OPEN_PAREN),this.state=9983,this.declareCursorArglist(),this.state=9984,this.match(t.CLOSE_PAREN);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareCursorArglist(){let e,s=new mN(this.context,this.state);this.enterRule(s,1320,t.RULE_declareCursorArglist);try{for(this.enterOuterAlt(s,1),this.state=9988,this.declareCursorArg(),this.state=9993,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=9989,this.match(t.COMMA),this.state=9990,this.declareCursorArg(),this.state=9995,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}declareCursorArg(){let e=new DN(this.context,this.state);this.enterRule(e,1322,t.RULE_declareCursorArg);try{this.enterOuterAlt(e,1),this.state=9996,this.declareVarname(),this.state=9997,this.declareDatatype()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareIsOrFor(){let e,s=new pN(this.context,this.state);this.enterRule(s,1324,t.RULE_declareIsOrFor);try{this.enterOuterAlt(s,1),this.state=9999,e=this.tokenStream.LA(1),62===e||116===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}declareAliasItem(){let e=new gN(this.context,this.state);this.enterRule(e,1326,t.RULE_declareAliasItem);try{switch(this.state=10003,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PARAM:this.enterOuterAlt(e,1),this.state=10001,this.match(t.PARAM);break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,2),this.state=10002,this.columnId();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareVarname(){let e=new xN(this.context,this.state);this.enterRule(e,1328,t.RULE_declareVarname);try{this.enterOuterAlt(e,1),this.state=10005,this.anyIdentifier()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareConst(){let e=new kN(this.context,this.state);this.enterRule(e,1330,t.RULE_declareConst);try{switch(this.state=10009,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,726,this.context)){case 1:this.enterOuterAlt(e,1);break;case 2:this.enterOuterAlt(e,2),this.state=10008,this.match(t.CONSTANT)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareDatatype(){let e=new HN(this.context,this.state);this.enterRule(e,1332,t.RULE_declareDatatype);try{this.enterOuterAlt(e,1),this.state=10011,this.typeName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareCollate(){let e=new GN(this.context,this.state);this.enterRule(e,1334,t.RULE_declareCollate);try{switch(this.state=10016,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SEMI:case t.EQUAL:case t.COLON_EQUALS:case t.DEFAULT:case t.NOT:this.enterOuterAlt(e,1);break;case t.COLLATE:this.enterOuterAlt(e,2),this.state=10014,this.match(t.COLLATE),this.state=10015,this.anyName();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareNotNull(){let e=new FN(this.context,this.state);this.enterRule(e,1336,t.RULE_declareNotNull);try{switch(this.state=10021,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SEMI:case t.EQUAL:case t.COLON_EQUALS:case t.DEFAULT:this.enterOuterAlt(e,1);break;case t.NOT:this.enterOuterAlt(e,2),this.state=10019,this.match(t.NOT),this.state=10020,this.match(t.NULL_P);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareDefaultValue(){let e=new vN(this.context,this.state);this.enterRule(e,1338,t.RULE_declareDefaultValue);try{switch(this.state=10027,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SEMI:this.enterOuterAlt(e,1);break;case t.EQUAL:case t.COLON_EQUALS:case t.DEFAULT:this.enterOuterAlt(e,2),this.state=10024,this.declareDefaultKey(),this.state=10025,this.sqlExpression();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareDefaultKey(){let e=new BN(this.context,this.state);this.enterRule(e,1340,t.RULE_declareDefaultKey);try{switch(this.state=10031,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EQUAL:case t.COLON_EQUALS:this.enterOuterAlt(e,1),this.state=10029,this.assignOperator();break;case t.DEFAULT:this.enterOuterAlt(e,2),this.state=10030,this.match(t.DEFAULT);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}assignOperator(){let e,s=new yN(this.context,this.state);this.enterRule(s,1342,t.RULE_assignOperator);try{this.enterOuterAlt(s,1),this.state=10033,e=this.tokenStream.LA(1),10===e||20===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}procedureSection(){let e=new fN(this.context,this.state);this.enterRule(e,1344,t.RULE_procedureSection);try{let t;for(this.enterOuterAlt(e,1),this.state=10038,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,731,this.context);2!==t&&t!==ja.INVALID_ALT_NUMBER;)1===t&&(this.state=10035,this.proceduralStatement()),this.state=10040,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,731,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}proceduralStatement(){let e=new YN(this.context,this.state);this.enterRule(e,1346,t.RULE_proceduralStatement);try{switch(this.state=10068,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,732,this.context)){case 1:this.enterOuterAlt(e,1),this.state=10041,this.plsqlBlock(),this.state=10042,this.match(t.SEMI);break;case 2:this.enterOuterAlt(e,2),this.state=10044,this.statementReturn();break;case 3:this.enterOuterAlt(e,3),this.state=10045,this.statementRaise();break;case 4:this.enterOuterAlt(e,4),this.state=10046,this.statementAssign();break;case 5:this.enterOuterAlt(e,5),this.state=10047,this.statementIf();break;case 6:this.enterOuterAlt(e,6),this.state=10048,this.statementCase();break;case 7:this.enterOuterAlt(e,7),this.state=10049,this.statementLoop();break;case 8:this.enterOuterAlt(e,8),this.state=10050,this.statementWhile();break;case 9:this.enterOuterAlt(e,9),this.state=10051,this.statementFor();break;case 10:this.enterOuterAlt(e,10),this.state=10052,this.statementForeachA();break;case 11:this.enterOuterAlt(e,11),this.state=10053,this.statementExit();break;case 12:this.enterOuterAlt(e,12),this.state=10054,this.statementAssert();break;case 13:this.enterOuterAlt(e,13),this.state=10055,this.statementExecSql();break;case 14:this.enterOuterAlt(e,14),this.state=10056,this.statementDynExecute();break;case 15:this.enterOuterAlt(e,15),this.state=10057,this.statementPerform();break;case 16:this.enterOuterAlt(e,16),this.state=10058,this.statementCall();break;case 17:this.enterOuterAlt(e,17),this.state=10059,this.statementGetDiagram();break;case 18:this.enterOuterAlt(e,18),this.state=10060,this.statementOpen();break;case 19:this.enterOuterAlt(e,19),this.state=10061,this.statementFetch();break;case 20:this.enterOuterAlt(e,20),this.state=10062,this.statementMove();break;case 21:this.enterOuterAlt(e,21),this.state=10063,this.statementClose();break;case 22:this.enterOuterAlt(e,22),this.state=10064,this.statementNull();break;case 23:this.enterOuterAlt(e,23),this.state=10065,this.statementCommit();break;case 24:this.enterOuterAlt(e,24),this.state=10066,this.statementRollback();break;case 25:this.enterOuterAlt(e,25),this.state=10067,this.statementSet()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementPerform(){let e=new wN(this.context,this.state);this.enterRule(e,1348,t.RULE_statementPerform);try{this.enterOuterAlt(e,1),this.state=10070,this.match(t.PERFORM),this.state=10071,this.expressionUntilSemi(),this.state=10072,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementCall(){let e=new bN(this.context,this.state);this.enterRule(e,1350,t.RULE_statementCall);try{switch(this.state=10088,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CALL:this.enterOuterAlt(e,1),this.state=10074,this.match(t.CALL),this.state=10075,this.anyIdentifier(),this.state=10076,this.match(t.OPEN_PAREN),this.state=10077,this.optionalExpressionList(),this.state=10078,this.match(t.CLOSE_PAREN),this.state=10079,this.match(t.SEMI);break;case t.DO:this.enterOuterAlt(e,2),this.state=10081,this.match(t.DO),this.state=10082,this.anyIdentifier(),this.state=10083,this.match(t.OPEN_PAREN),this.state=10084,this.optionalExpressionList(),this.state=10085,this.match(t.CLOSE_PAREN),this.state=10086,this.match(t.SEMI);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalExpressionList(){let e=new WN(this.context,this.state);this.enterRule(e,1352,t.RULE_optionalExpressionList);try{switch(this.state=10092,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CLOSE_PAREN:this.enterOuterAlt(e,1);break;case t.OPEN_PAREN:case t.PLUS:case t.MINUS:case t.PARAM:case t.Operator:case t.AND:case t.ARRAY:case t.CASE:case t.CAST:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.CURRENT_CATALOG:case t.CURRENT_DATE:case t.CURRENT_ROLE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.CURRENT_USER:case t.DEFAULT:case t.DO:case t.FALSE_P:case t.FETCH:case t.LOCALTIME:case t.LOCALTIMESTAMP:case t.NOT:case t.NULL_P:case t.SESSION_USER:case t.TABLE:case t.TRUE_P:case t.UNIQUE:case t.USER:case t.AUTHORIZATION:case t.BINARY:case t.COLLATION:case t.CONCURRENTLY:case t.CROSS:case t.CURRENT_SCHEMA:case t.FREEZE:case t.FULL:case t.ILIKE:case t.INNER_P:case t.IS:case t.ISNULL:case t.JOIN:case t.LEFT:case t.LIKE:case t.NATURAL:case t.NOTNULL:case t.OUTER_P:case t.OVER:case t.OVERLAPS:case t.RIGHT:case t.SIMILAR:case t.VERBOSE:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.TABLESAMPLE:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.StringConstant:case t.UnicodeEscapeStringConstant:case t.BeginDollarStringConstant:case t.BinaryStringConstant:case t.HexadecimalStringConstant:case t.Integral:case t.Numeric:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:case t.EscapeStringConstant:this.enterOuterAlt(e,2),this.state=10091,this.expressionList();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementAssign(){let e=new VN(this.context,this.state);this.enterRule(e,1354,t.RULE_statementAssign);try{this.enterOuterAlt(e,1),this.state=10094,this.assignVariable(),this.state=10095,this.assignOperator(),this.state=10096,this.sqlExpression(),this.state=10097,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementGetDiagram(){let e=new XN(this.context,this.state);this.enterRule(e,1356,t.RULE_statementGetDiagram);try{this.enterOuterAlt(e,1),this.state=10099,this.match(t.GET),this.state=10100,this.optionalGetDiagramArea(),this.state=10101,this.match(t.DIAGNOSTICS),this.state=10102,this.getDiagramList(),this.state=10103,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalGetDiagramArea(){let e=new KN(this.context,this.state);this.enterRule(e,1358,t.RULE_optionalGetDiagramArea);try{switch(this.state=10108,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DIAGNOSTICS:this.enterOuterAlt(e,1);break;case t.CURRENT_P:this.enterOuterAlt(e,2),this.state=10106,this.match(t.CURRENT_P);break;case t.STACKED:this.enterOuterAlt(e,3),this.state=10107,this.match(t.STACKED);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}getDiagramList(){let e,s=new QN(this.context,this.state);this.enterRule(s,1360,t.RULE_getDiagramList);try{for(this.enterOuterAlt(s,1),this.state=10110,this.getDiagramListItem(),this.state=10115,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=10111,this.match(t.COMMA),this.state=10112,this.getDiagramListItem(),this.state=10117,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}getDiagramListItem(){let e=new JN(this.context,this.state);this.enterRule(e,1362,t.RULE_getDiagramListItem);try{this.enterOuterAlt(e,1),this.state=10118,this.getDiagramTarget(),this.state=10119,this.assignOperator(),this.state=10120,this.getDiagramItem()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}getDiagramItem(){let e=new ZN(this.context,this.state);this.enterRule(e,1364,t.RULE_getDiagramItem);try{this.enterOuterAlt(e,1),this.state=10122,this.columnId()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}getDiagramTarget(){let e=new qN(this.context,this.state);this.enterRule(e,1366,t.RULE_getDiagramTarget);try{this.enterOuterAlt(e,1),this.state=10124,this.assignVariable()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}assignVariable(){let e,s=new jN(this.context,this.state);this.enterRule(s,1368,t.RULE_assignVariable);try{switch(this.enterOuterAlt(s,1),this.state=10128,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.state=10126,this.anyName();break;case t.PARAM:this.state=10127,this.match(t.PARAM);break;default:throw new Ei(this)}for(this.state=10136,this.errorHandler.sync(this),e=this.tokenStream.LA(1);4===e;)this.state=10130,this.match(t.OPEN_BRACKET),this.state=10131,this.expressionUntilRightbracket(),this.state=10132,this.match(t.CLOSE_BRACKET),this.state=10138,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}statementIf(){let e=new zN(this.context,this.state);this.enterRule(e,1370,t.RULE_statementIf);try{this.enterOuterAlt(e,1),this.state=10139,this.match(t.IF_P),this.state=10140,this.expressionUntilThen(),this.state=10141,this.match(t.THEN),this.state=10142,this.procedureSection(),this.state=10143,this.statementElsifs(),this.state=10144,this.statementElse(),this.state=10145,this.match(t.END_P),this.state=10146,this.match(t.IF_P),this.state=10147,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementElsifs(){let e,s=new $N(this.context,this.state);this.enterRule(s,1372,t.RULE_statementElsifs);try{for(this.enterOuterAlt(s,1),this.state=10156,this.errorHandler.sync(this),e=this.tokenStream.LA(1);502===e;)this.state=10149,this.match(t.ELSIF),this.state=10150,this.expression1(),this.state=10151,this.match(t.THEN),this.state=10152,this.procedureSection(),this.state=10158,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}statementElse(){let e=new tL(this.context,this.state);this.enterRule(e,1374,t.RULE_statementElse);try{switch(this.state=10162,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.END_P:this.enterOuterAlt(e,1);break;case t.ELSE:this.enterOuterAlt(e,2),this.state=10160,this.match(t.ELSE),this.state=10161,this.procedureSection();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementCase(){let e=new eL(this.context,this.state);this.enterRule(e,1376,t.RULE_statementCase);try{this.enterOuterAlt(e,1),this.state=10164,this.match(t.CASE),this.state=10165,this.optionalExpressionUntilWhen(),this.state=10166,this.caseWhenList(),this.state=10167,this.optionalCaseElse(),this.state=10168,this.match(t.END_P),this.state=10169,this.match(t.CASE),this.state=10170,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalExpressionUntilWhen(){let e=new sL(this.context,this.state);this.enterRule(e,1378,t.RULE_optionalExpressionUntilWhen);try{switch(this.state=10174,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,741,this.context)){case 1:this.enterOuterAlt(e,1);break;case 2:this.enterOuterAlt(e,2),this.state=10173,this.sqlExpression()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}caseWhenList(){let e,s=new aL(this.context,this.state);this.enterRule(s,1380,t.RULE_caseWhenList);try{this.enterOuterAlt(s,1),this.state=10177,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=10176,this.caseWhen(),this.state=10179,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(102===e)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}caseWhen(){let e=new rL(this.context,this.state);this.enterRule(e,1382,t.RULE_caseWhen);try{this.enterOuterAlt(e,1),this.state=10181,this.match(t.WHEN),this.state=10182,this.expressionList(),this.state=10183,this.match(t.THEN),this.state=10184,this.procedureSection()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalCaseElse(){let e=new iL(this.context,this.state);this.enterRule(e,1384,t.RULE_optionalCaseElse);try{switch(this.state=10189,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.END_P:this.enterOuterAlt(e,1);break;case t.ELSE:this.enterOuterAlt(e,2),this.state=10187,this.match(t.ELSE),this.state=10188,this.procedureSection();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementLoop(){let e=new cL(this.context,this.state);this.enterRule(e,1386,t.RULE_statementLoop);try{this.enterOuterAlt(e,1),this.state=10191,this.optionalLoopLabel(),this.state=10192,this.loopBody()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementWhile(){let e=new nL(this.context,this.state);this.enterRule(e,1388,t.RULE_statementWhile);try{this.enterOuterAlt(e,1),this.state=10194,this.optionalLoopLabel(),this.state=10195,this.match(t.WHILE),this.state=10196,this.expressionUntilLoop(),this.state=10197,this.loopBody()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementFor(){let e=new hL(this.context,this.state);this.enterRule(e,1390,t.RULE_statementFor);try{this.enterOuterAlt(e,1),this.state=10199,this.optionalLoopLabel(),this.state=10200,this.match(t.FOR),this.state=10201,this.forControl(),this.state=10202,this.loopBody()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}forControl(){let e=new EL(this.context,this.state);this.enterRule(e,1392,t.RULE_forControl);try{switch(this.enterOuterAlt(e,1),this.state=10204,this.forVariable(),this.state=10205,this.match(t.IN_P),this.state=10221,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,744,this.context)){case 1:this.state=10206,this.cursorName(),this.state=10207,this.optionalCursorParameters();break;case 2:this.state=10209,this.selectStatement();break;case 3:this.state=10210,this.explainStatement();break;case 4:this.state=10211,this.match(t.EXECUTE),this.state=10212,this.expression1(),this.state=10213,this.optionalForUsingExpression();break;case 5:this.state=10215,this.optionalReverse(),this.state=10216,this.expression1(),this.state=10217,this.match(t.DOT_DOT),this.state=10218,this.expression1(),this.state=10219,this.optionalByExpression()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalForUsingExpression(){let e=new TL(this.context,this.state);this.enterRule(e,1394,t.RULE_optionalForUsingExpression);try{switch(this.state=10226,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SEMI:case t.LOOP:this.enterOuterAlt(e,1);break;case t.USING:this.enterOuterAlt(e,2),this.state=10224,this.match(t.USING),this.state=10225,this.expressionList();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalCursorParameters(){let e,s=new oL(this.context,this.state);this.enterRule(s,1396,t.RULE_optionalCursorParameters);try{switch(this.state=10240,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LOOP:this.enterOuterAlt(s,1);break;case t.OPEN_PAREN:for(this.enterOuterAlt(s,2),this.state=10229,this.match(t.OPEN_PAREN),this.state=10230,this.expression1(),this.state=10235,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=10231,this.match(t.COMMA),this.state=10232,this.expression1(),this.state=10237,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=10238,this.match(t.CLOSE_PAREN);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalReverse(){let e=new RL(this.context,this.state);this.enterRule(e,1398,t.RULE_optionalReverse);try{switch(this.state=10244,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,748,this.context)){case 1:this.enterOuterAlt(e,1);break;case 2:this.enterOuterAlt(e,2),this.state=10243,this.match(t.REVERSE)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalByExpression(){let e=new AL(this.context,this.state);this.enterRule(e,1400,t.RULE_optionalByExpression);try{switch(this.state=10249,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LOOP:this.enterOuterAlt(e,1);break;case t.BY:this.enterOuterAlt(e,2),this.state=10247,this.match(t.BY),this.state=10248,this.expression1();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}forVariable(){let e=new SL(this.context,this.state);this.enterRule(e,1402,t.RULE_forVariable);try{this.enterOuterAlt(e,1),this.state=10251,this.anyNameList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementForeachA(){let e=new lL(this.context,this.state);this.enterRule(e,1404,t.RULE_statementForeachA);try{this.enterOuterAlt(e,1),this.state=10253,this.optionalLoopLabel(),this.state=10254,this.match(t.FOREACH),this.state=10255,this.forVariable(),this.state=10256,this.foreachSlice(),this.state=10257,this.match(t.IN_P),this.state=10258,this.match(t.ARRAY),this.state=10259,this.expression1(),this.state=10260,this.loopBody()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}foreachSlice(){let e=new OL(this.context,this.state);this.enterRule(e,1406,t.RULE_foreachSlice);try{switch(this.state=10265,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.IN_P:this.enterOuterAlt(e,1);break;case t.SLICE:this.enterOuterAlt(e,2),this.state=10263,this.match(t.SLICE),this.state=10264,this.iconst();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementExit(){let e=new IL(this.context,this.state);this.enterRule(e,1408,t.RULE_statementExit);try{this.enterOuterAlt(e,1),this.state=10267,this.exitType(),this.state=10268,this.optionalLabel(),this.state=10269,this.optionalExitCondition(),this.state=10270,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}exitType(){let e,s=new uL(this.context,this.state);this.enterRule(s,1410,t.RULE_exitType);try{this.enterOuterAlt(s,1),this.state=10272,e=this.tokenStream.LA(1),167===e||507===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}statementReturn(){let e=new NL(this.context,this.state);this.enterRule(e,1412,t.RULE_statementReturn);try{switch(this.enterOuterAlt(e,1),this.state=10274,this.match(t.RETURN),this.state=10286,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,752,this.context)){case 1:this.state=10275,this.match(t.NEXT),this.state=10276,this.sqlExpression();break;case 2:switch(this.state=10277,this.match(t.QUERY),this.state=10283,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EXECUTE:this.state=10278,this.match(t.EXECUTE),this.state=10279,this.expression1(),this.state=10280,this.optionalForUsingExpression();break;case t.OPEN_PAREN:case t.SELECT:case t.TABLE:case t.WITH:case t.VALUES:this.state=10282,this.selectStatement();break;default:throw new Ei(this)}break;case 3:this.state=10285,this.optionalReturnResult()}this.state=10288,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalReturnResult(){let e=new LL(this.context,this.state);this.enterRule(e,1414,t.RULE_optionalReturnResult);try{switch(this.state=10292,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,753,this.context)){case 1:this.enterOuterAlt(e,1);break;case 2:this.enterOuterAlt(e,2),this.state=10291,this.sqlExpression()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementRaise(){let e=new CL(this.context,this.state);this.enterRule(e,1416,t.RULE_statementRaise);try{switch(this.state=10320,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,754,this.context)){case 1:this.enterOuterAlt(e,1),this.state=10294,this.match(t.RAISE),this.state=10295,this.optionalStatementRaiseLevel(),this.state=10296,this.sconst(),this.state=10297,this.optionalRaiseList(),this.state=10298,this.optionalRaiseUsing(),this.state=10299,this.match(t.SEMI);break;case 2:this.enterOuterAlt(e,2),this.state=10301,this.match(t.RAISE),this.state=10302,this.optionalStatementRaiseLevel(),this.state=10303,this.identifier(),this.state=10304,this.optionalRaiseUsing(),this.state=10305,this.match(t.SEMI);break;case 3:this.enterOuterAlt(e,3),this.state=10307,this.match(t.RAISE),this.state=10308,this.optionalStatementRaiseLevel(),this.state=10309,this.match(t.SQLSTATE),this.state=10310,this.sconst(),this.state=10311,this.optionalRaiseUsing(),this.state=10312,this.match(t.SEMI);break;case 4:this.enterOuterAlt(e,4),this.state=10314,this.match(t.RAISE),this.state=10315,this.optionalStatementRaiseLevel(),this.state=10316,this.optionalRaiseUsing(),this.state=10317,this.match(t.SEMI);break;case 5:this.enterOuterAlt(e,5),this.state=10319,this.match(t.RAISE)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalStatementRaiseLevel(){let e=new _L(this.context,this.state);this.enterRule(e,1418,t.RULE_optionalStatementRaiseLevel);try{switch(this.state=10330,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,755,this.context)){case 1:this.enterOuterAlt(e,1);break;case 2:this.enterOuterAlt(e,2);break;case 3:this.enterOuterAlt(e,3),this.state=10324,this.match(t.DEBUG);break;case 4:this.enterOuterAlt(e,4),this.state=10325,this.match(t.LOG);break;case 5:this.enterOuterAlt(e,5),this.state=10326,this.match(t.INFO);break;case 6:this.enterOuterAlt(e,6),this.state=10327,this.match(t.NOTICE);break;case 7:this.enterOuterAlt(e,7),this.state=10328,this.match(t.WARNING);break;case 8:this.enterOuterAlt(e,8),this.state=10329,this.match(t.EXCEPTION)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalRaiseList(){let e,s=new PL(this.context,this.state);this.enterRule(s,1420,t.RULE_optionalRaiseList);try{switch(this.state=10339,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SEMI:case t.USING:this.enterOuterAlt(s,1);break;case t.COMMA:this.enterOuterAlt(s,2),this.state=10335,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=10333,this.match(t.COMMA),this.state=10334,this.expression1(),this.state=10337,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(6===e);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalRaiseUsing(){let e,s=new ML(this.context,this.state);this.enterRule(s,1422,t.RULE_optionalRaiseUsing);try{switch(this.state=10351,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SEMI:this.enterOuterAlt(s,1);break;case t.USING:for(this.enterOuterAlt(s,2),this.state=10342,this.match(t.USING),this.state=10343,this.optionalRaiseUsingElement(),this.state=10348,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=10344,this.match(t.COMMA),this.state=10345,this.optionalRaiseUsingElement(),this.state=10350,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalRaiseUsingElement(){let e=new dL(this.context,this.state);this.enterRule(e,1424,t.RULE_optionalRaiseUsingElement);try{this.enterOuterAlt(e,1),this.state=10353,this.identifier(),this.state=10354,this.match(t.EQUAL),this.state=10355,this.expression1()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementAssert(){let e=new UL(this.context,this.state);this.enterRule(e,1426,t.RULE_statementAssert);try{this.enterOuterAlt(e,1),this.state=10357,this.match(t.ASSERT),this.state=10358,this.sqlExpression(),this.state=10359,this.optionalStatementAssertMessage(),this.state=10360,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalStatementAssertMessage(){let e=new mL(this.context,this.state);this.enterRule(e,1428,t.RULE_optionalStatementAssertMessage);try{switch(this.state=10365,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SEMI:this.enterOuterAlt(e,1);break;case t.COMMA:this.enterOuterAlt(e,2),this.state=10363,this.match(t.COMMA),this.state=10364,this.sqlExpression();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}loopBody(){let e=new DL(this.context,this.state);this.enterRule(e,1430,t.RULE_loopBody);try{this.enterOuterAlt(e,1),this.state=10367,this.match(t.LOOP),this.state=10368,this.procedureSection(),this.state=10369,this.match(t.END_P),this.state=10370,this.match(t.LOOP),this.state=10371,this.optionalLabel(),this.state=10372,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementExecSql(){let e=new pL(this.context,this.state);this.enterRule(e,1432,t.RULE_statementExecSql);try{this.enterOuterAlt(e,1),this.state=10374,this.makeExecuteSqlStatement(),this.state=10375,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementDynExecute(){let e=new gL(this.context,this.state);this.enterRule(e,1434,t.RULE_statementDynExecute);try{switch(this.enterOuterAlt(e,1),this.state=10377,this.match(t.EXECUTE),this.state=10378,this.expression1(),this.state=10386,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,761,this.context)){case 1:this.state=10379,this.optionalExecuteInto(),this.state=10380,this.optionalExecuteUsing();break;case 2:this.state=10382,this.optionalExecuteUsing(),this.state=10383,this.optionalExecuteInto()}this.state=10388,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalExecuteUsing(){let e=new xL(this.context,this.state);this.enterRule(e,1436,t.RULE_optionalExecuteUsing);try{switch(this.state=10393,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SEMI:case t.INTO:this.enterOuterAlt(e,1);break;case t.USING:this.enterOuterAlt(e,2),this.state=10391,this.match(t.USING),this.state=10392,this.optionalExecuteUsingList();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalExecuteUsingList(){let e,s=new kL(this.context,this.state);this.enterRule(s,1438,t.RULE_optionalExecuteUsingList);try{for(this.enterOuterAlt(s,1),this.state=10395,this.expression1(),this.state=10400,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=10396,this.match(t.COMMA),this.state=10397,this.expression1(),this.state=10402,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalExecuteInto(){let e=new HL(this.context,this.state);this.enterRule(e,1440,t.RULE_optionalExecuteInto);try{switch(this.state=10409,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SEMI:case t.USING:this.enterOuterAlt(e,1);break;case t.INTO:if(this.enterOuterAlt(e,2),1===(this.state=10404,this.match(t.INTO),this.state=10406,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,764,this.context)))this.state=10405,this.match(t.STRICT_P);this.state=10408,this.intoTarget();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementOpen(){let e,s=new GL(this.context,this.state);this.enterRule(s,1442,t.RULE_statementOpen);try{switch(this.enterOuterAlt(s,1),this.state=10411,this.match(t.OPEN),this.state=10440,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,770,this.context)){case 1:switch(this.state=10412,this.cursorVariable(),this.state=10414,this.errorHandler.sync(this),e=this.tokenStream.LA(1),262===e&&(this.state=10413,this.match(t.NO)),this.state=10416,this.match(t.SCROLL),this.state=10417,this.match(t.FOR),this.state=10424,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPEN_PAREN:case t.SELECT:case t.TABLE:case t.WITH:case t.VALUES:this.state=10418,this.selectStatement();break;case t.EXECUTE:this.state=10419,this.match(t.EXECUTE),this.state=10420,this.sqlExpression(),this.state=10421,this.match(t.USING),this.state=10422,this.expressionList();break;default:throw new Ei(this)}break;case 2:if(this.state=10426,this.columnId(),this.state=10438,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e){for(this.state=10427,this.match(t.OPEN_PAREN),this.state=10428,this.optionalOpenBoundListItem(),this.state=10433,this.errorHandler.sync(this),e=this.tokenStream.LA(1);6===e;)this.state=10429,this.match(t.COMMA),this.state=10430,this.optionalOpenBoundListItem(),this.state=10435,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=10436,this.match(t.CLOSE_PAREN)}}this.state=10442,this.match(t.SEMI)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optionalOpenBoundListItem(){let e=new FL(this.context,this.state);this.enterRule(e,1444,t.RULE_optionalOpenBoundListItem);try{switch(this.state=10449,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,771,this.context)){case 1:this.enterOuterAlt(e,1),this.state=10444,this.columnId(),this.state=10445,this.match(t.COLON_EQUALS),this.state=10446,this.expression1();break;case 2:this.enterOuterAlt(e,2),this.state=10448,this.expression1()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementFetch(){let e=new vL(this.context,this.state);this.enterRule(e,1446,t.RULE_statementFetch);try{this.enterOuterAlt(e,1),this.state=10451,this.match(t.FETCH),this.state=10452,e._direction=this.optionalFetchDirection(),this.state=10453,this.optionalCursorFrom(),this.state=10454,this.cursorVariable(),this.state=10455,this.match(t.INTO),this.state=10456,this.intoTarget(),this.state=10457,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}intoTarget(){let e=new BL(this.context,this.state);this.enterRule(e,1448,t.RULE_intoTarget);try{this.enterOuterAlt(e,1),this.state=10459,this.expressionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalCursorFrom(){let e=new yL(this.context,this.state);this.enterRule(e,1450,t.RULE_optionalCursorFrom);try{switch(this.state=10464,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PARAM:case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1);break;case t.FROM:this.enterOuterAlt(e,2),this.state=10462,this.match(t.FROM);break;case t.IN_P:this.enterOuterAlt(e,3),this.state=10463,this.match(t.IN_P);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalFetchDirection(){let e,s=new fL(this.context,this.state);this.enterRule(s,1452,t.RULE_optionalFetchDirection);try{switch(this.state=10483,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,774,this.context)){case 1:this.enterOuterAlt(s,1);break;case 2:this.enterOuterAlt(s,2);break;case 3:this.enterOuterAlt(s,3),this.state=10468,this.match(t.NEXT);break;case 4:this.enterOuterAlt(s,4),this.state=10469,this.match(t.PRIOR);break;case 5:this.enterOuterAlt(s,5),this.state=10470,this.match(t.FIRST_P);break;case 6:this.enterOuterAlt(s,6),this.state=10471,this.match(t.LAST_P);break;case 7:this.enterOuterAlt(s,7),this.state=10472,this.match(t.ABSOLUTE_P),this.state=10473,this.expression1();break;case 8:this.enterOuterAlt(s,8),this.state=10474,this.match(t.RELATIVE_P),this.state=10475,this.expression1();break;case 9:this.enterOuterAlt(s,9),this.state=10476,this.expression1();break;case 10:this.enterOuterAlt(s,10),this.state=10477,this.match(t.ALL);break;case 11:switch(this.enterOuterAlt(s,11),this.state=10478,e=this.tokenStream.LA(1),144===e||210===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=10481,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,773,this.context)){case 1:this.state=10479,this.expression1();break;case 2:this.state=10480,this.match(t.ALL)}}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}statementMove(){let e=new YL(this.context,this.state);this.enterRule(e,1454,t.RULE_statementMove);try{this.enterOuterAlt(e,1),this.state=10485,this.match(t.MOVE),this.state=10486,this.optionalFetchDirection(),this.state=10487,this.cursorVariable(),this.state=10488,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementClose(){let e=new wL(this.context,this.state);this.enterRule(e,1456,t.RULE_statementClose);try{this.enterOuterAlt(e,1),this.state=10490,this.match(t.CLOSE),this.state=10491,this.cursorVariable(),this.state=10492,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementNull(){let e=new bL(this.context,this.state);this.enterRule(e,1458,t.RULE_statementNull);try{this.enterOuterAlt(e,1),this.state=10494,this.match(t.NULL_P),this.state=10495,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementCommit(){let e=new WL(this.context,this.state);this.enterRule(e,1460,t.RULE_statementCommit);try{this.enterOuterAlt(e,1),this.state=10497,this.match(t.COMMIT),this.state=10498,this.plsqlOptionalTransactionChain(),this.state=10499,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}statementRollback(){let e=new VL(this.context,this.state);this.enterRule(e,1462,t.RULE_statementRollback);try{this.enterOuterAlt(e,1),this.state=10501,this.match(t.ROLLBACK),this.state=10502,this.plsqlOptionalTransactionChain(),this.state=10503,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}plsqlOptionalTransactionChain(){let e,s=new XL(this.context,this.state);this.enterRule(s,1464,t.RULE_plsqlOptionalTransactionChain);try{switch(this.state=10511,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:this.enterOuterAlt(s,1),this.state=10505,this.match(t.AND),this.state=10507,this.errorHandler.sync(this),e=this.tokenStream.LA(1),262===e&&(this.state=10506,this.match(t.NO)),this.state=10509,this.match(t.CHAIN);break;case t.SEMI:this.enterOuterAlt(s,2);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}statementSet(){let e=new KL(this.context,this.state);this.enterRule(e,1466,t.RULE_statementSet);try{switch(this.state=10525,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SET:this.enterOuterAlt(e,1),this.state=10513,this.match(t.SET),this.state=10514,this.anyName(),this.state=10515,this.match(t.TO),this.state=10516,this.match(t.DEFAULT),this.state=10517,this.match(t.SEMI);break;case t.RESET:switch(this.enterOuterAlt(e,2),this.state=10519,this.match(t.RESET),this.state=10522,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.state=10520,this.anyName();break;case t.ALL:this.state=10521,this.match(t.ALL);break;default:throw new Ei(this)}this.state=10524,this.match(t.SEMI);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}cursorVariable(){let e=new QL(this.context,this.state);this.enterRule(e,1468,t.RULE_cursorVariable);try{switch(this.state=10529,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,1),this.state=10527,this.columnId();break;case t.PARAM:this.enterOuterAlt(e,2),this.state=10528,this.match(t.PARAM);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}exceptionSection(){let e=new JL(this.context,this.state);this.enterRule(e,1470,t.RULE_exceptionSection);try{switch(this.state=10534,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.END_P:this.enterOuterAlt(e,1);break;case t.EXCEPTION:this.enterOuterAlt(e,2),this.state=10532,this.match(t.EXCEPTION),this.state=10533,this.procedureExceptions();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}procedureExceptions(){let e,s=new ZL(this.context,this.state);this.enterRule(s,1472,t.RULE_procedureExceptions);try{this.enterOuterAlt(s,1),this.state=10537,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=10536,this.procedureException(),this.state=10539,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(102===e)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}procedureException(){let e=new qL(this.context,this.state);this.enterRule(e,1474,t.RULE_procedureException);try{this.enterOuterAlt(e,1),this.state=10541,this.match(t.WHEN),this.state=10542,this.procedureConditions(),this.state=10543,this.match(t.THEN),this.state=10544,this.procedureSection()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}procedureConditions(){let e,s=new jL(this.context,this.state);this.enterRule(s,1476,t.RULE_procedureConditions);try{for(this.enterOuterAlt(s,1),this.state=10546,this.procedureCondition(),this.state=10551,this.errorHandler.sync(this),e=this.tokenStream.LA(1);82===e;)this.state=10547,this.match(t.OR),this.state=10548,this.procedureCondition(),this.state=10553,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}procedureCondition(){let e=new zL(this.context,this.state);this.enterRule(e,1478,t.RULE_procedureCondition);try{switch(this.state=10557,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,783,this.context)){case 1:this.enterOuterAlt(e,1),this.state=10554,this.anyIdentifier();break;case 2:this.enterOuterAlt(e,2),this.state=10555,this.match(t.SQLSTATE),this.state=10556,this.sconst()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalBlockLabel(){let e=new $L(this.context,this.state);this.enterRule(e,1480,t.RULE_optionalBlockLabel);try{switch(this.state=10561,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.BEGIN_P:case t.DECLARE:this.enterOuterAlt(e,1);break;case t.LESS_LESS:this.enterOuterAlt(e,2),this.state=10560,this.labelDeclaration();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalLoopLabel(){let e=new tC(this.context,this.state);this.enterRule(e,1482,t.RULE_optionalLoopLabel);try{switch(this.state=10565,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:case t.WHILE:case t.FOREACH:case t.LOOP:this.enterOuterAlt(e,1);break;case t.LESS_LESS:this.enterOuterAlt(e,2),this.state=10564,this.labelDeclaration();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalLabel(){let e=new eC(this.context,this.state);this.enterRule(e,1484,t.RULE_optionalLabel);try{switch(this.state=10569,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EOF:case t.SEMI:case t.WHEN:this.enterOuterAlt(e,1);break;case t.AND:case t.ARRAY:case t.COLLATE:case t.COLUMN:case t.CONSTRAINT:case t.DEFAULT:case t.DO:case t.FETCH:case t.TABLE:case t.IS:case t.LEFT:case t.OUTER_P:case t.OVER:case t.RIGHT:case t.ABORT_P:case t.ABSOLUTE_P:case t.ACCESS:case t.ACTION:case t.ADD_P:case t.ADMIN:case t.AFTER:case t.AGGREGATE:case t.ALSO:case t.ALTER:case t.ALWAYS:case t.ASSERTION:case t.ASSIGNMENT:case t.AT:case t.ATTRIBUTE:case t.BACKWARD:case t.BEFORE:case t.BEGIN_P:case t.BY:case t.CACHE:case t.CALLED:case t.CASCADE:case t.CASCADED:case t.CATALOG:case t.CHAIN:case t.CHARACTERISTICS:case t.CHECKPOINT:case t.CLASS:case t.CLOSE:case t.CLUSTER:case t.COMMENT:case t.COMMENTS:case t.COMMIT:case t.COMMITTED:case t.CONFIGURATION:case t.CONNECTION:case t.CONSTRAINTS:case t.CONTENT_P:case t.CONTINUE_P:case t.CONVERSION_P:case t.COPY:case t.COST:case t.CSV:case t.CURSOR:case t.CYCLE:case t.DATA_P:case t.DATABASE:case t.DAY_P:case t.DEALLOCATE:case t.DECLARE:case t.DEFAULTS:case t.DEFERRED:case t.DEFINER:case t.DELETE_P:case t.DELIMITER:case t.DELIMITERS:case t.DICTIONARY:case t.DISABLE_P:case t.DISCARD:case t.DOCUMENT_P:case t.DOMAIN_P:case t.DOUBLE_P:case t.DROP:case t.EACH:case t.ENABLE_P:case t.ENCODING:case t.ENCRYPTED:case t.ENUM_P:case t.ESCAPE:case t.EVENT:case t.EXCLUDE:case t.EXCLUDING:case t.EXCLUSIVE:case t.EXECUTE:case t.EXPLAIN:case t.EXTENSION:case t.EXTERNAL:case t.FAMILY:case t.FIRST_P:case t.FOLLOWING:case t.FORCE:case t.FORWARD:case t.FUNCTION:case t.FUNCTIONS:case t.GLOBAL:case t.GRANTED:case t.HANDLER:case t.HEADER_P:case t.HOLD:case t.HOUR_P:case t.IDENTITY_P:case t.IF_P:case t.IMMEDIATE:case t.IMMUTABLE:case t.IMPLICIT_P:case t.INCLUDING:case t.INCREMENT:case t.INDEX:case t.INDEXES:case t.INHERIT:case t.INHERITS:case t.INLINE_P:case t.INSENSITIVE:case t.INSERT:case t.INSTEAD:case t.INVOKER:case t.ISOLATION:case t.KEY:case t.LABEL:case t.LANGUAGE:case t.LARGE_P:case t.LAST_P:case t.LEAKPROOF:case t.LEVEL:case t.LISTEN:case t.LOAD:case t.LOCAL:case t.LOCATION:case t.LOCK_P:case t.MAPPING:case t.MATCH:case t.MATERIALIZED:case t.MAXVALUE:case t.MINUTE_P:case t.MINVALUE:case t.MODE:case t.MONTH_P:case t.MOVE:case t.NAME_P:case t.NAMES:case t.NEXT:case t.NO:case t.NOTHING:case t.NOTIFY:case t.NOWAIT:case t.NULLS_P:case t.OBJECT_P:case t.OF:case t.OFF:case t.OIDS:case t.OPERATOR:case t.OPTION:case t.OPTIONS:case t.OWNED:case t.OWNER:case t.PARSER:case t.PARTIAL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PLANS:case t.PRECEDING:case t.PREPARE:case t.PREPARED:case t.PRESERVE:case t.PRIOR:case t.PRIVILEGES:case t.PROCEDURAL:case t.PROCEDURE:case t.PROGRAM:case t.QUOTE:case t.RANGE:case t.READ:case t.REASSIGN:case t.RECHECK:case t.RECURSIVE:case t.REF:case t.REFRESH:case t.REINDEX:case t.RELATIVE_P:case t.RELEASE:case t.RENAME:case t.REPEATABLE:case t.REPLACE:case t.REPLICA:case t.RESET:case t.RESTART:case t.RESTRICT:case t.RETURNS:case t.REVOKE:case t.ROLE:case t.ROLLBACK:case t.ROWS:case t.RULE:case t.SAVEPOINT:case t.SCHEMA:case t.SCROLL:case t.SEARCH:case t.SECOND_P:case t.SECURITY:case t.SEQUENCE:case t.SEQUENCES:case t.SERIALIZABLE:case t.SERVER:case t.SESSION:case t.SET:case t.SHARE:case t.SHOW:case t.SIMPLE:case t.SNAPSHOT:case t.STABLE:case t.STANDALONE_P:case t.START:case t.STATEMENT:case t.STATISTICS:case t.STDIN:case t.STDOUT:case t.STORAGE:case t.STRICT_P:case t.STRIP_P:case t.SYSID:case t.SYSTEM_P:case t.TABLES:case t.TABLESPACE:case t.TEMP:case t.TEMPLATE:case t.TEMPORARY:case t.TEXT_P:case t.TRANSACTION:case t.TRIGGER:case t.TRUNCATE:case t.TRUSTED:case t.TYPE_P:case t.TYPES_P:case t.UNBOUNDED:case t.UNCOMMITTED:case t.UNENCRYPTED:case t.UNKNOWN:case t.UNLISTEN:case t.UNLOGGED:case t.UNTIL:case t.UPDATE:case t.VACUUM:case t.VALID:case t.VALIDATE:case t.VALIDATOR:case t.VARYING:case t.VERSION_P:case t.VIEW:case t.VOLATILE:case t.WHITESPACE_P:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.WRITE:case t.XML_P:case t.YEAR_P:case t.YES_P:case t.ZONE:case t.BETWEEN:case t.BIGINT:case t.BIT:case t.BOOLEAN_P:case t.CHAR_P:case t.CHARACTER:case t.COALESCE:case t.DEC:case t.DECIMAL_P:case t.EXISTS:case t.EXTRACT:case t.FLOAT_P:case t.GREATEST:case t.INOUT:case t.INT_P:case t.INTEGER:case t.INTERVAL:case t.LEAST:case t.NATIONAL:case t.NCHAR:case t.NONE:case t.NULLIF:case t.NUMERIC:case t.OVERLAY:case t.POSITION:case t.PRECISION:case t.REAL:case t.ROW:case t.SETOF:case t.SMALLINT:case t.SUBSTRING:case t.TIME:case t.TIMESTAMP:case t.TREAT:case t.TRIM:case t.VALUES:case t.VARCHAR:case t.XMLATTRIBUTES:case t.XMLCOMMENT:case t.XMLAGG:case t.XML_IS_WELL_FORMED:case t.XML_IS_WELL_FORMED_DOCUMENT:case t.XML_IS_WELL_FORMED_CONTENT:case t.XPATH:case t.XPATH_EXISTS:case t.XMLCONCAT:case t.XMLELEMENT:case t.XMLEXISTS:case t.XMLFOREST:case t.XMLPARSE:case t.XMLPI:case t.XMLROOT:case t.XMLSERIALIZE:case t.CALL:case t.CURRENT_P:case t.ATTACH:case t.DETACH:case t.EXPRESSION:case t.GENERATED:case t.LOGGED:case t.STORED:case t.INCLUDE:case t.ROUTINE:case t.TRANSFORM:case t.IMPORT_P:case t.POLICY:case t.METHOD:case t.REFERENCING:case t.NEW:case t.OLD:case t.VALUE_P:case t.SUBSCRIPTION:case t.PUBLICATION:case t.OUT_P:case t.ROUTINES:case t.SCHEMAS:case t.PROCEDURES:case t.INPUT_P:case t.SUPPORT:case t.PARALLEL:case t.SQL_P:case t.DEPENDS:case t.OVERRIDING:case t.CONFLICT:case t.SKIP_P:case t.LOCKED:case t.TIES:case t.ROLLUP:case t.CUBE:case t.GROUPING:case t.SETS:case t.ORDINALITY:case t.XMLTABLE:case t.COLUMNS:case t.XMLNAMESPACES:case t.ROWTYPE:case t.NORMALIZED:case t.WITHIN:case t.FILTER:case t.GROUPS:case t.OTHERS:case t.NFC:case t.NFD:case t.NFKC:case t.NFKD:case t.UESCAPE:case t.VIEWS:case t.NORMALIZE:case t.DUMP:case t.PRINT_STRICT_PARAMS:case t.VARIABLE_CONFLICT:case t.ERROR:case t.USE_VARIABLE:case t.USE_COLUMN:case t.ALIAS:case t.CONSTANT:case t.PERFORM:case t.GET:case t.DIAGNOSTICS:case t.STACKED:case t.ELSIF:case t.REVERSE:case t.SLICE:case t.EXIT:case t.RETURN:case t.QUERY:case t.RAISE:case t.SQLSTATE:case t.DEBUG:case t.LOG:case t.INFO:case t.NOTICE:case t.WARNING:case t.EXCEPTION:case t.ASSERT:case t.OPEN:case t.ABS:case t.CBRT:case t.CEIL:case t.CEILING:case t.DEGREES:case t.DIV:case t.EXP:case t.FACTORIAL:case t.FLOOR:case t.GCD:case t.LCM:case t.LN:case t.LOG10:case t.MIN_SCALE:case t.MOD:case t.PI:case t.POWER:case t.RADIANS:case t.ROUND:case t.SCALE:case t.SIGN:case t.SQRT:case t.TRIM_SCALE:case t.TRUNC:case t.WIDTH_BUCKET:case t.RANDOM:case t.SETSEED:case t.ACOS:case t.ACOSD:case t.ASIN:case t.ASIND:case t.ATAN:case t.ATAND:case t.ATAN2:case t.ATAN2D:case t.COS:case t.COSD:case t.COT:case t.COTD:case t.SIN:case t.SIND:case t.TAN:case t.TAND:case t.SINH:case t.COSH:case t.TANH:case t.ASINH:case t.ACOSH:case t.ATANH:case t.BIT_LENGTH:case t.CHAR_LENGTH:case t.CHARACTER_LENGTH:case t.LOWER:case t.OCTET_LENGTH:case t.UPPER:case t.ASCII:case t.BTRIM:case t.CHR:case t.CONCAT:case t.CONCAT_WS:case t.FORMAT:case t.INITCAP:case t.LENGTH:case t.LPAD:case t.LTRIM:case t.MD5:case t.PARSE_IDENT:case t.PG_CLIENT_ENCODING:case t.QUOTE_IDENT:case t.QUOTE_LITERAL:case t.QUOTE_NULLABLE:case t.REGEXP_COUNT:case t.REGEXP_INSTR:case t.REGEXP_LIKE:case t.REGEXP_MATCH:case t.REGEXP_MATCHES:case t.REGEXP_REPLACE:case t.REGEXP_SPLIT_TO_ARRAY:case t.REGEXP_SPLIT_TO_TABLE:case t.REGEXP_SUBSTR:case t.REPEAT:case t.RPAD:case t.RTRIM:case t.SPLIT_PART:case t.STARTS_WITH:case t.STRING_TO_ARRAY:case t.STRING_TO_TABLE:case t.STRPOS:case t.SUBSTR:case t.TO_ASCII:case t.TO_HEX:case t.TRANSLATE:case t.UNISTR:case t.AGE:case t.CLOCK_TIMESTAMP:case t.DATE_BIN:case t.DATE_PART:case t.DATE_TRUNC:case t.ISFINITE:case t.JUSTIFY_DAYS:case t.JUSTIFY_HOURS:case t.JUSTIFY_INTERVAL:case t.MAKE_DATE:case t.MAKE_INTERVAL:case t.MAKE_TIME:case t.MAKE_TIMESTAMP:case t.MAKE_TIMESTAMPTZ:case t.NOW:case t.STATEMENT_TIMESTAMP:case t.TIMEOFDAY:case t.TRANSACTION_TIMESTAMP:case t.TO_TIMESTAMP:case t.TO_CHAR:case t.TO_DATE:case t.TO_NUMBER:case t.Identifier:case t.QuotedIdentifier:case t.UnicodeQuotedIdentifier:case t.PLSQLVARIABLENAME:case t.PLSQLIDENTIFIER:this.enterOuterAlt(e,2),this.state=10568,this.anyIdentifier();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalExitCondition(){let e=new sC(this.context,this.state);this.enterRule(e,1486,t.RULE_optionalExitCondition);try{switch(this.state=10574,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WHEN:this.enterOuterAlt(e,1),this.state=10571,this.match(t.WHEN),this.state=10572,this.expressionUntilSemi();break;case t.SEMI:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}anyIdentifier(){let e=new aC(this.context,this.state);this.enterRule(e,1488,t.RULE_anyIdentifier);try{switch(this.state=10578,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,788,this.context)){case 1:this.enterOuterAlt(e,1),this.state=10576,this.columnId();break;case 2:this.enterOuterAlt(e,2),this.state=10577,this.plsqlUnreservedKeyword()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}plsqlUnreservedKeyword(){let e,s=new rC(this.context,this.state);this.enterRule(s,1490,t.RULE_plsqlUnreservedKeyword);try{this.enterOuterAlt(s,1),this.state=10580,e=this.tokenStream.LA(1),!(e-33&-32)&&1<<e-33&286268421||!(e-92&-32)&&1<<e-92&2164260865||!(e-130&-32)&&1<<e-130&2290106369||167===e||172===e||!(e-207&-32)&&1<<e-207&33554441||!(e-240&-32)&&1<<e-240&6553601||!(e-272&-32)&&1<<e-272&268451841||!(e-306&-32)&&1<<e-306&1051713||353===e||433===e||434===e||!(e-477&-32)&&1<<e-477&3825197057||!(e-509&-32)&&1<<e-509&3055?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sqlExpression(){let e,s=new iC(this.context,this.state);this.enterRule(s,1492,t.RULE_sqlExpression);try{this.enterOuterAlt(s,1),this.state=10582,this.optionalTargetList(),this.state=10584,this.errorHandler.sync(this),e=this.tokenStream.LA(1),71===e&&(this.state=10583,this.intoClause()),this.state=10586,this.fromClause(),this.state=10587,this.whereClause(),this.state=10588,this.groupClause(),this.state=10589,this.havingClause(),this.state=10590,this.windowClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expressionUntilThen(){let e=new cC(this.context,this.state);this.enterRule(e,1494,t.RULE_expressionUntilThen);try{this.enterOuterAlt(e,1),this.state=10592,this.sqlExpression()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expressionUntilSemi(){let e=new nC(this.context,this.state);this.enterRule(e,1496,t.RULE_expressionUntilSemi);try{this.enterOuterAlt(e,1),this.state=10594,this.sqlExpression()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expressionUntilRightbracket(){let e=new hC(this.context,this.state);this.enterRule(e,1498,t.RULE_expressionUntilRightbracket);try{this.enterOuterAlt(e,1),this.state=10596,this.expression1()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expressionUntilLoop(){let e=new EC(this.context,this.state);this.enterRule(e,1500,t.RULE_expressionUntilLoop);try{this.enterOuterAlt(e,1),this.state=10598,this.expression1()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}makeExecuteSqlStatement(){let e=new TC(this.context,this.state);this.enterRule(e,1502,t.RULE_makeExecuteSqlStatement);try{this.enterOuterAlt(e,1),this.state=10600,this.statement(),this.state=10601,this.optionalReturningClauseInto()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}optionalReturningClauseInto(){let e=new oC(this.context,this.state);this.enterRule(e,1504,t.RULE_optionalReturningClauseInto);try{switch(this.state=10609,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.INTO:if(this.enterOuterAlt(e,1),1===(this.state=10603,this.match(t.INTO),this.state=10605,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,790,this.context)))this.state=10604,this.match(t.STRICT_P);this.state=10607,this.intoTarget();break;case t.SEMI:this.enterOuterAlt(e,2);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}roleOrAliases(){let e,s=new RC(this.context,this.state);this.enterRule(s,1506,t.RULE_roleOrAliases);try{this.enterOuterAlt(s,1),this.state=10611,e=this.tokenStream.LA(1),66===e||99===e||311===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sempred(t,e,s){return 540!==e||this.expression2_sempred(t,s)}expression2_sempred(t,e){switch(e){case 0:return this.precpred(this.context,8);case 1:return this.precpred(this.context,7);case 2:return this.precpred(this.context,6);case 3:return this.precpred(this.context,5);case 4:return this.precpred(this.context,4);case 5:return this.precpred(this.context,10);case 6:return this.precpred(this.context,2);case 7:return this.precpred(this.context,1)}return!0}static get _ATN(){return t.__ATN||(t.__ATN=(new fr).deserialize(t._serializedATN)),t.__ATN}get vocabulary(){return t.vocabulary}},Xi.Dollar=1,Xi.OPEN_PAREN=2,Xi.CLOSE_PAREN=3,Xi.OPEN_BRACKET=4,Xi.CLOSE_BRACKET=5,Xi.COMMA=6,Xi.SEMI=7,Xi.COLON=8,Xi.STAR=9,Xi.EQUAL=10,Xi.DOT=11,Xi.PLUS=12,Xi.MINUS=13,Xi.SLASH=14,Xi.CARET=15,Xi.LT=16,Xi.GT=17,Xi.LESS_LESS=18,Xi.GREATER_GREATER=19,Xi.COLON_EQUALS=20,Xi.LESS_EQUALS=21,Xi.EQUALS_GREATER=22,Xi.GREATER_EQUALS=23,Xi.DOT_DOT=24,Xi.NOT_EQUALS=25,Xi.TYPECAST=26,Xi.PERCENT=27,Xi.PARAM=28,Xi.Operator=29,Xi.ALL=30,Xi.ANALYSE=31,Xi.ANALYZE=32,Xi.AND=33,Xi.ANY=34,Xi.ARRAY=35,Xi.AS=36,Xi.ASC=37,Xi.ASYMMETRIC=38,Xi.BOTH=39,Xi.CASE=40,Xi.CAST=41,Xi.CHECK=42,Xi.COLLATE=43,Xi.COLUMN=44,Xi.CONSTRAINT=45,Xi.CREATE=46,Xi.CURRENT_CATALOG=47,Xi.CURRENT_DATE=48,Xi.CURRENT_ROLE=49,Xi.CURRENT_TIME=50,Xi.CURRENT_TIMESTAMP=51,Xi.CURRENT_USER=52,Xi.DEFAULT=53,Xi.DEFERRABLE=54,Xi.DESC=55,Xi.DISTINCT=56,Xi.DO=57,Xi.ELSE=58,Xi.EXCEPT=59,Xi.FALSE_P=60,Xi.FETCH=61,Xi.FOR=62,Xi.FOREIGN=63,Xi.FROM=64,Xi.GRANT=65,Xi.GROUP_P=66,Xi.HAVING=67,Xi.IN_P=68,Xi.INITIALLY=69,Xi.INTERSECT=70,Xi.INTO=71,Xi.LATERAL_P=72,Xi.LEADING=73,Xi.LIMIT=74,Xi.LOCALTIME=75,Xi.LOCALTIMESTAMP=76,Xi.NOT=77,Xi.NULL_P=78,Xi.OFFSET=79,Xi.ON=80,Xi.ONLY=81,Xi.OR=82,Xi.ORDER=83,Xi.PLACING=84,Xi.PRIMARY=85,Xi.REFERENCES=86,Xi.RETURNING=87,Xi.SELECT=88,Xi.SESSION_USER=89,Xi.SOME=90,Xi.SYMMETRIC=91,Xi.TABLE=92,Xi.THEN=93,Xi.TO=94,Xi.TRAILING=95,Xi.TRUE_P=96,Xi.UNION=97,Xi.UNIQUE=98,Xi.USER=99,Xi.USING=100,Xi.VARIADIC=101,Xi.WHEN=102,Xi.WHERE=103,Xi.WINDOW=104,Xi.WITH=105,Xi.AUTHORIZATION=106,Xi.BINARY=107,Xi.COLLATION=108,Xi.CONCURRENTLY=109,Xi.CROSS=110,Xi.CURRENT_SCHEMA=111,Xi.FREEZE=112,Xi.FULL=113,Xi.ILIKE=114,Xi.INNER_P=115,Xi.IS=116,Xi.ISNULL=117,Xi.JOIN=118,Xi.LEFT=119,Xi.LIKE=120,Xi.NATURAL=121,Xi.NOTNULL=122,Xi.OUTER_P=123,Xi.OVER=124,Xi.OVERLAPS=125,Xi.RIGHT=126,Xi.SIMILAR=127,Xi.VERBOSE=128,Xi.ABORT_P=129,Xi.ABSOLUTE_P=130,Xi.ACCESS=131,Xi.ACTION=132,Xi.ADD_P=133,Xi.ADMIN=134,Xi.AFTER=135,Xi.AGGREGATE=136,Xi.ALSO=137,Xi.ALTER=138,Xi.ALWAYS=139,Xi.ASSERTION=140,Xi.ASSIGNMENT=141,Xi.AT=142,Xi.ATTRIBUTE=143,Xi.BACKWARD=144,Xi.BEFORE=145,Xi.BEGIN_P=146,Xi.BY=147,Xi.CACHE=148,Xi.CALLED=149,Xi.CASCADE=150,Xi.CASCADED=151,Xi.CATALOG=152,Xi.CHAIN=153,Xi.CHARACTERISTICS=154,Xi.CHECKPOINT=155,Xi.CLASS=156,Xi.CLOSE=157,Xi.CLUSTER=158,Xi.COMMENT=159,Xi.COMMENTS=160,Xi.COMMIT=161,Xi.COMMITTED=162,Xi.CONFIGURATION=163,Xi.CONNECTION=164,Xi.CONSTRAINTS=165,Xi.CONTENT_P=166,Xi.CONTINUE_P=167,Xi.CONVERSION_P=168,Xi.COPY=169,Xi.COST=170,Xi.CSV=171,Xi.CURSOR=172,Xi.CYCLE=173,Xi.DATA_P=174,Xi.DATABASE=175,Xi.DAY_P=176,Xi.DEALLOCATE=177,Xi.DECLARE=178,Xi.DEFAULTS=179,Xi.DEFERRED=180,Xi.DEFINER=181,Xi.DELETE_P=182,Xi.DELIMITER=183,Xi.DELIMITERS=184,Xi.DICTIONARY=185,Xi.DISABLE_P=186,Xi.DISCARD=187,Xi.DOCUMENT_P=188,Xi.DOMAIN_P=189,Xi.DOUBLE_P=190,Xi.DROP=191,Xi.EACH=192,Xi.ENABLE_P=193,Xi.ENCODING=194,Xi.ENCRYPTED=195,Xi.ENUM_P=196,Xi.ESCAPE=197,Xi.EVENT=198,Xi.EXCLUDE=199,Xi.EXCLUDING=200,Xi.EXCLUSIVE=201,Xi.EXECUTE=202,Xi.EXPLAIN=203,Xi.EXTENSION=204,Xi.EXTERNAL=205,Xi.FAMILY=206,Xi.FIRST_P=207,Xi.FOLLOWING=208,Xi.FORCE=209,Xi.FORWARD=210,Xi.FUNCTION=211,Xi.FUNCTIONS=212,Xi.GLOBAL=213,Xi.GRANTED=214,Xi.HANDLER=215,Xi.HEADER_P=216,Xi.HOLD=217,Xi.HOUR_P=218,Xi.IDENTITY_P=219,Xi.IF_P=220,Xi.IMMEDIATE=221,Xi.IMMUTABLE=222,Xi.IMPLICIT_P=223,Xi.INCLUDING=224,Xi.INCREMENT=225,Xi.INDEX=226,Xi.INDEXES=227,Xi.INHERIT=228,Xi.INHERITS=229,Xi.INLINE_P=230,Xi.INSENSITIVE=231,Xi.INSERT=232,Xi.INSTEAD=233,Xi.INVOKER=234,Xi.ISOLATION=235,Xi.KEY=236,Xi.LABEL=237,Xi.LANGUAGE=238,Xi.LARGE_P=239,Xi.LAST_P=240,Xi.LEAKPROOF=241,Xi.LEVEL=242,Xi.LISTEN=243,Xi.LOAD=244,Xi.LOCAL=245,Xi.LOCATION=246,Xi.LOCK_P=247,Xi.MAPPING=248,Xi.MATCH=249,Xi.MATCHED=250,Xi.MATERIALIZED=251,Xi.MAXVALUE=252,Xi.MERGE=253,Xi.MINUTE_P=254,Xi.MINVALUE=255,Xi.MODE=256,Xi.MONTH_P=257,Xi.MOVE=258,Xi.NAME_P=259,Xi.NAMES=260,Xi.NEXT=261,Xi.NO=262,Xi.NOTHING=263,Xi.NOTIFY=264,Xi.NOWAIT=265,Xi.NULLS_P=266,Xi.OBJECT_P=267,Xi.OF=268,Xi.OFF=269,Xi.OIDS=270,Xi.OPERATOR=271,Xi.OPTION=272,Xi.OPTIONS=273,Xi.OWNED=274,Xi.OWNER=275,Xi.PARSER=276,Xi.PARTIAL=277,Xi.PARTITION=278,Xi.PASSING=279,Xi.PASSWORD=280,Xi.PLANS=281,Xi.PRECEDING=282,Xi.PREPARE=283,Xi.PREPARED=284,Xi.PRESERVE=285,Xi.PRIOR=286,Xi.PRIVILEGES=287,Xi.PROCEDURAL=288,Xi.PROCEDURE=289,Xi.PROGRAM=290,Xi.QUOTE=291,Xi.RANGE=292,Xi.READ=293,Xi.REASSIGN=294,Xi.RECHECK=295,Xi.RECURSIVE=296,Xi.REF=297,Xi.REFRESH=298,Xi.REINDEX=299,Xi.RELATIVE_P=300,Xi.RELEASE=301,Xi.RENAME=302,Xi.REPEATABLE=303,Xi.REPLACE=304,Xi.REPLICA=305,Xi.RESET=306,Xi.RESTART=307,Xi.RESTRICT=308,Xi.RETURNS=309,Xi.REVOKE=310,Xi.ROLE=311,Xi.ROLLBACK=312,Xi.ROWS=313,Xi.RULE=314,Xi.SAVEPOINT=315,Xi.SCHEMA=316,Xi.SCROLL=317,Xi.SEARCH=318,Xi.SECOND_P=319,Xi.SECURITY=320,Xi.SEQUENCE=321,Xi.SEQUENCES=322,Xi.SERIALIZABLE=323,Xi.SERVER=324,Xi.SESSION=325,Xi.SET=326,Xi.SHARE=327,Xi.SHOW=328,Xi.SIMPLE=329,Xi.SNAPSHOT=330,Xi.STABLE=331,Xi.STANDALONE_P=332,Xi.START=333,Xi.STATEMENT=334,Xi.STATISTICS=335,Xi.STDIN=336,Xi.STDOUT=337,Xi.STORAGE=338,Xi.STRICT_P=339,Xi.STRIP_P=340,Xi.SYSID=341,Xi.SYSTEM_P=342,Xi.TABLES=343,Xi.TABLESPACE=344,Xi.TEMP=345,Xi.TEMPLATE=346,Xi.TEMPORARY=347,Xi.TEXT_P=348,Xi.TRANSACTION=349,Xi.TRIGGER=350,Xi.TRUNCATE=351,Xi.TRUSTED=352,Xi.TYPE_P=353,Xi.TYPES_P=354,Xi.UNBOUNDED=355,Xi.UNCOMMITTED=356,Xi.UNENCRYPTED=357,Xi.UNKNOWN=358,Xi.UNLISTEN=359,Xi.UNLOGGED=360,Xi.UNTIL=361,Xi.UPDATE=362,Xi.VACUUM=363,Xi.VALID=364,Xi.VALIDATE=365,Xi.VALIDATOR=366,Xi.VARYING=367,Xi.VERSION_P=368,Xi.VIEW=369,Xi.VOLATILE=370,Xi.WHITESPACE_P=371,Xi.WITHOUT=372,Xi.WORK=373,Xi.WRAPPER=374,Xi.WRITE=375,Xi.XML_P=376,Xi.YEAR_P=377,Xi.YES_P=378,Xi.ZONE=379,Xi.BETWEEN=380,Xi.BIGINT=381,Xi.BIT=382,Xi.BOOLEAN_P=383,Xi.CHAR_P=384,Xi.CHARACTER=385,Xi.COALESCE=386,Xi.DEC=387,Xi.DECIMAL_P=388,Xi.EXISTS=389,Xi.EXTRACT=390,Xi.FLOAT_P=391,Xi.GREATEST=392,Xi.INOUT=393,Xi.INT_P=394,Xi.INTEGER=395,Xi.INTERVAL=396,Xi.LEAST=397,Xi.NATIONAL=398,Xi.NCHAR=399,Xi.NONE=400,Xi.NULLIF=401,Xi.NUMERIC=402,Xi.OVERLAY=403,Xi.POSITION=404,Xi.PRECISION=405,Xi.REAL=406,Xi.ROW=407,Xi.SETOF=408,Xi.SMALLINT=409,Xi.SUBSTRING=410,Xi.TIME=411,Xi.TIMESTAMP=412,Xi.TREAT=413,Xi.TRIM=414,Xi.VALUES=415,Xi.VARCHAR=416,Xi.XMLATTRIBUTES=417,Xi.XMLCOMMENT=418,Xi.XMLAGG=419,Xi.XML_IS_WELL_FORMED=420,Xi.XML_IS_WELL_FORMED_DOCUMENT=421,Xi.XML_IS_WELL_FORMED_CONTENT=422,Xi.XPATH=423,Xi.XPATH_EXISTS=424,Xi.XMLCONCAT=425,Xi.XMLELEMENT=426,Xi.XMLEXISTS=427,Xi.XMLFOREST=428,Xi.XMLPARSE=429,Xi.XMLPI=430,Xi.XMLROOT=431,Xi.XMLSERIALIZE=432,Xi.CALL=433,Xi.CURRENT_P=434,Xi.ATTACH=435,Xi.DETACH=436,Xi.EXPRESSION=437,Xi.GENERATED=438,Xi.LOGGED=439,Xi.STORED=440,Xi.INCLUDE=441,Xi.ROUTINE=442,Xi.TRANSFORM=443,Xi.IMPORT_P=444,Xi.POLICY=445,Xi.METHOD=446,Xi.REFERENCING=447,Xi.NEW=448,Xi.OLD=449,Xi.VALUE_P=450,Xi.SUBSCRIPTION=451,Xi.PUBLICATION=452,Xi.OUT_P=453,Xi.END_P=454,Xi.ROUTINES=455,Xi.SCHEMAS=456,Xi.PROCEDURES=457,Xi.INPUT_P=458,Xi.SUPPORT=459,Xi.PARALLEL=460,Xi.SQL_P=461,Xi.DEPENDS=462,Xi.OVERRIDING=463,Xi.CONFLICT=464,Xi.SKIP_P=465,Xi.LOCKED=466,Xi.TIES=467,Xi.ROLLUP=468,Xi.CUBE=469,Xi.GROUPING=470,Xi.SETS=471,Xi.TABLESAMPLE=472,Xi.ORDINALITY=473,Xi.XMLTABLE=474,Xi.COLUMNS=475,Xi.XMLNAMESPACES=476,Xi.ROWTYPE=477,Xi.NORMALIZED=478,Xi.WITHIN=479,Xi.FILTER=480,Xi.GROUPS=481,Xi.OTHERS=482,Xi.NFC=483,Xi.NFD=484,Xi.NFKC=485,Xi.NFKD=486,Xi.UESCAPE=487,Xi.VIEWS=488,Xi.NORMALIZE=489,Xi.DUMP=490,Xi.PRINT_STRICT_PARAMS=491,Xi.VARIABLE_CONFLICT=492,Xi.ERROR=493,Xi.USE_VARIABLE=494,Xi.USE_COLUMN=495,Xi.ALIAS=496,Xi.CONSTANT=497,Xi.PERFORM=498,Xi.GET=499,Xi.DIAGNOSTICS=500,Xi.STACKED=501,Xi.ELSIF=502,Xi.WHILE=503,Xi.REVERSE=504,Xi.FOREACH=505,Xi.SLICE=506,Xi.EXIT=507,Xi.RETURN=508,Xi.QUERY=509,Xi.RAISE=510,Xi.SQLSTATE=511,Xi.DEBUG=512,Xi.LOG=513,Xi.INFO=514,Xi.NOTICE=515,Xi.WARNING=516,Xi.EXCEPTION=517,Xi.ASSERT=518,Xi.LOOP=519,Xi.OPEN=520,Xi.ABS=521,Xi.CBRT=522,Xi.CEIL=523,Xi.CEILING=524,Xi.DEGREES=525,Xi.DIV=526,Xi.EXP=527,Xi.FACTORIAL=528,Xi.FLOOR=529,Xi.GCD=530,Xi.LCM=531,Xi.LN=532,Xi.LOG10=533,Xi.MIN_SCALE=534,Xi.MOD=535,Xi.PI=536,Xi.POWER=537,Xi.RADIANS=538,Xi.ROUND=539,Xi.SCALE=540,Xi.SIGN=541,Xi.SQRT=542,Xi.TRIM_SCALE=543,Xi.TRUNC=544,Xi.WIDTH_BUCKET=545,Xi.RANDOM=546,Xi.SETSEED=547,Xi.ACOS=548,Xi.ACOSD=549,Xi.ASIN=550,Xi.ASIND=551,Xi.ATAN=552,Xi.ATAND=553,Xi.ATAN2=554,Xi.ATAN2D=555,Xi.COS=556,Xi.COSD=557,Xi.COT=558,Xi.COTD=559,Xi.SIN=560,Xi.SIND=561,Xi.TAN=562,Xi.TAND=563,Xi.SINH=564,Xi.COSH=565,Xi.TANH=566,Xi.ASINH=567,Xi.ACOSH=568,Xi.ATANH=569,Xi.BIT_LENGTH=570,Xi.CHAR_LENGTH=571,Xi.CHARACTER_LENGTH=572,Xi.LOWER=573,Xi.OCTET_LENGTH=574,Xi.UPPER=575,Xi.ASCII=576,Xi.BTRIM=577,Xi.CHR=578,Xi.CONCAT=579,Xi.CONCAT_WS=580,Xi.FORMAT=581,Xi.INITCAP=582,Xi.LENGTH=583,Xi.LPAD=584,Xi.LTRIM=585,Xi.MD5=586,Xi.PARSE_IDENT=587,Xi.PG_CLIENT_ENCODING=588,Xi.QUOTE_IDENT=589,Xi.QUOTE_LITERAL=590,Xi.QUOTE_NULLABLE=591,Xi.REGEXP_COUNT=592,Xi.REGEXP_INSTR=593,Xi.REGEXP_LIKE=594,Xi.REGEXP_MATCH=595,Xi.REGEXP_MATCHES=596,Xi.REGEXP_REPLACE=597,Xi.REGEXP_SPLIT_TO_ARRAY=598,Xi.REGEXP_SPLIT_TO_TABLE=599,Xi.REGEXP_SUBSTR=600,Xi.REPEAT=601,Xi.RPAD=602,Xi.RTRIM=603,Xi.SPLIT_PART=604,Xi.STARTS_WITH=605,Xi.STRING_TO_ARRAY=606,Xi.STRING_TO_TABLE=607,Xi.STRPOS=608,Xi.SUBSTR=609,Xi.TO_ASCII=610,Xi.TO_HEX=611,Xi.TRANSLATE=612,Xi.UNISTR=613,Xi.AGE=614,Xi.CLOCK_TIMESTAMP=615,Xi.DATE_BIN=616,Xi.DATE_PART=617,Xi.DATE_TRUNC=618,Xi.ISFINITE=619,Xi.JUSTIFY_DAYS=620,Xi.JUSTIFY_HOURS=621,Xi.JUSTIFY_INTERVAL=622,Xi.MAKE_DATE=623,Xi.MAKE_INTERVAL=624,Xi.MAKE_TIME=625,Xi.MAKE_TIMESTAMP=626,Xi.MAKE_TIMESTAMPTZ=627,Xi.NOW=628,Xi.STATEMENT_TIMESTAMP=629,Xi.TIMEOFDAY=630,Xi.TRANSACTION_TIMESTAMP=631,Xi.TO_TIMESTAMP=632,Xi.TO_CHAR=633,Xi.TO_DATE=634,Xi.TO_NUMBER=635,Xi.Identifier=636,Xi.QuotedIdentifier=637,Xi.UnterminatedQuotedIdentifier=638,Xi.InvalidQuotedIdentifier=639,Xi.InvalidUnterminatedQuotedIdentifier=640,Xi.UnicodeQuotedIdentifier=641,Xi.UnterminatedUnicodeQuotedIdentifier=642,Xi.InvalidUnicodeQuotedIdentifier=643,Xi.InvalidUnterminatedUnicodeQuotedIdentifier=644,Xi.StringConstant=645,Xi.UnterminatedStringConstant=646,Xi.UnicodeEscapeStringConstant=647,Xi.UnterminatedUnicodeEscapeStringConstant=648,Xi.BeginDollarStringConstant=649,Xi.BinaryStringConstant=650,Xi.UnterminatedBinaryStringConstant=651,Xi.InvalidBinaryStringConstant=652,Xi.InvalidUnterminatedBinaryStringConstant=653,Xi.HexadecimalStringConstant=654,Xi.UnterminatedHexadecimalStringConstant=655,Xi.InvalidHexadecimalStringConstant=656,Xi.InvalidUnterminatedHexadecimalStringConstant=657,Xi.Integral=658,Xi.NumericFail=659,Xi.Numeric=660,Xi.PLSQLVARIABLENAME=661,Xi.PLSQLIDENTIFIER=662,Xi.Whitespace=663,Xi.Newline=664,Xi.LineComment=665,Xi.BlockComment=666,Xi.UnterminatedBlockComment=667,Xi.MetaCommand=668,Xi.EndMetaCommand=669,Xi.ErrorCharacter=670,Xi.EscapeStringConstant=671,Xi.UnterminatedEscapeStringConstant=672,Xi.InvalidEscapeStringConstant=673,Xi.InvalidUnterminatedEscapeStringConstant=674,Xi.AfterEscapeStringConstantMode_NotContinued=675,Xi.AfterEscapeStringConstantWithNewlineMode_NotContinued=676,Xi.DollarText=677,Xi.EndDollarStringConstant=678,Xi.AfterEscapeStringConstantWithNewlineMode_Continued=679,Xi.RULE_root=0,Xi.RULE_plsqlRoot=1,Xi.RULE_statements=2,Xi.RULE_statement=3,Xi.RULE_plsqlConsoleCommand=4,Xi.RULE_callStatement=5,Xi.RULE_optionalWith=6,Xi.RULE_optionalRoleList=7,Xi.RULE_alterOptionalRoleList=8,Xi.RULE_alterRoleElemement=9,Xi.RULE_createRoleElement=10,Xi.RULE_createRoleStatement=11,Xi.RULE_alterRoleStatement=12,Xi.RULE_optionalInDatabase=13,Xi.RULE_alterRoleSetStatement=14,Xi.RULE_dropRoleStatement=15,Xi.RULE_addOrDrop=16,Xi.RULE_createSchemaStatement=17,Xi.RULE_optionalSchemaName=18,Xi.RULE_optionalSchemaList=19,Xi.RULE_schemaStatement=20,Xi.RULE_variableSetStatement=21,Xi.RULE_setStatementEnding=22,Xi.RULE_genericSetClause=23,Xi.RULE_setStatementMore=24,Xi.RULE_variableName=25,Xi.RULE_variableList=26,Xi.RULE_variableValue=27,Xi.RULE_isoLevel=28,Xi.RULE_booleanOrString=29,Xi.RULE_zoneValue=30,Xi.RULE_optionalEncoding=31,Xi.RULE_nonReservedWordOrSconst=32,Xi.RULE_variableResetStatement=33,Xi.RULE_resetClauseRest=34,Xi.RULE_genericResetClause=35,Xi.RULE_setResetClause=36,Xi.RULE_functionSetResetClause=37,Xi.RULE_variableShowStatement=38,Xi.RULE_setConstraintsStatement=39,Xi.RULE_constraintsSetList=40,Xi.RULE_constraintsSetMode=41,Xi.RULE_checkpointStatement=42,Xi.RULE_discardStatement=43,Xi.RULE_alterTableStatement=44,Xi.RULE_alterTableCommands=45,Xi.RULE_partitionCommand=46,Xi.RULE_indexPartitionCommand=47,Xi.RULE_alterTableCommand=48,Xi.RULE_alterColumnDefault=49,Xi.RULE_optionalDropBehavior=50,Xi.RULE_optionalCollateClause=51,Xi.RULE_alterUsing=52,Xi.RULE_replicaIdentity=53,Xi.RULE_relOptions=54,Xi.RULE_optionalRelOptions=55,Xi.RULE_relOptionList=56,Xi.RULE_relOptionElem=57,Xi.RULE_alterIdentityColumnOptionList=58,Xi.RULE_alterIdentityColumnOption=59,Xi.RULE_partitionBoundSpecification=60,Xi.RULE_hashPartitionBoundElement=61,Xi.RULE_hashPartitionBound=62,Xi.RULE_alterCompositeTypeStatement=63,Xi.RULE_alterTypeCommands=64,Xi.RULE_alterTypeCommand=65,Xi.RULE_closePortalStatement=66,Xi.RULE_copyStatement=67,Xi.RULE_fromOrTo=68,Xi.RULE_copyFileName=69,Xi.RULE_copyOptions=70,Xi.RULE_copyOptionsItem=71,Xi.RULE_copyDelimiter=72,Xi.RULE_copyGenericOptionList=73,Xi.RULE_copyGenericOptionElem=74,Xi.RULE_copyGenericOptionArgument=75,Xi.RULE_createStatement=76,Xi.RULE_temporaryOption=77,Xi.RULE_optionalTableElementList=78,Xi.RULE_optionalTypedTableElementList=79,Xi.RULE_tableElementList=80,Xi.RULE_typedTableElementList=81,Xi.RULE_tableElement=82,Xi.RULE_typedTableElement=83,Xi.RULE_columnDefinition=84,Xi.RULE_columnOptions=85,Xi.RULE_columnQualifierList=86,Xi.RULE_columnConstraint=87,Xi.RULE_columnConstraintElement=88,Xi.RULE_generatedWhen=89,Xi.RULE_constraintAttribute=90,Xi.RULE_tableLikeClause=91,Xi.RULE_tableLikeOptionList=92,Xi.RULE_tableLikeOption=93,Xi.RULE_tableConstraint=94,Xi.RULE_constraintElement=95,Xi.RULE_columnListWithParentheses=96,Xi.RULE_columnList=97,Xi.RULE_columnElement=98,Xi.RULE_optionalColumnListInclude=99,Xi.RULE_matchClause=100,Xi.RULE_exclusionConstraintList=101,Xi.RULE_exclusionConstraintElement=102,Xi.RULE_exclusionWhereClause=103,Xi.RULE_keyActions=104,Xi.RULE_onKeyUpdateClause=105,Xi.RULE_onKeyDeleteClause=106,Xi.RULE_keyAction=107,Xi.RULE_inheritClause=108,Xi.RULE_optionalPartitionSpecification=109,Xi.RULE_partitionSpecification=110,Xi.RULE_partitionElements=111,Xi.RULE_partitionElement=112,Xi.RULE_optionalTableAccessMethodClause=113,Xi.RULE_with=114,Xi.RULE_onCommitOption=115,Xi.RULE_optionalTablespace=116,Xi.RULE_usingIndexTablespace=117,Xi.RULE_existingIndex=118,Xi.RULE_createStatsStatement=119,Xi.RULE_alterStatsStatement=120,Xi.RULE_createAsStatement=121,Xi.RULE_createAsTarget=122,Xi.RULE_withData=123,Xi.RULE_createMaterializedViewStatement=124,Xi.RULE_createMaterializedViewTarget=125,Xi.RULE_refreshMaterializedViewStatement=126,Xi.RULE_createSequenceStatement=127,Xi.RULE_alterSequenceStatement=128,Xi.RULE_optionalParenthesizedSeqOptionsList=129,Xi.RULE_sequenceOptionList=130,Xi.RULE_sequenceOptionItem=131,Xi.RULE_numericOnly=132,Xi.RULE_numericOnlyList=133,Xi.RULE_createProcedureLangStatement=134,Xi.RULE_handlerName=135,Xi.RULE_optionalInlineHandler=136,Xi.RULE_validatorClause=137,Xi.RULE_optionalProcedural=138,Xi.RULE_createTablespaceStatement=139,Xi.RULE_optionalTablespaceOwner=140,Xi.RULE_dropTablespaceStatement=141,Xi.RULE_createExtensionStatement=142,Xi.RULE_createExtensionOptionItem=143,Xi.RULE_alterExtensionStatement=144,Xi.RULE_alterExtensionOptionItem=145,Xi.RULE_alterExtensionContentsStatement=146,Xi.RULE_createForeignDataWrapperStatement=147,Xi.RULE_forwardOption=148,Xi.RULE_forwardOptions=149,Xi.RULE_alterForeignDataWrapperStatement=150,Xi.RULE_createGenericOptions=151,Xi.RULE_genericOptionList=152,Xi.RULE_alterGenericOptions=153,Xi.RULE_alterGenericOptionList=154,Xi.RULE_alterGenericOptionElem=155,Xi.RULE_genericOptionElement=156,Xi.RULE_genericOptionName=157,Xi.RULE_genericOptionArgument=158,Xi.RULE_createForeignServerStatement=159,Xi.RULE_optionalType=160,Xi.RULE_foreignServerVersion=161,Xi.RULE_alterForeignServerStatement=162,Xi.RULE_createForeignTableStatement=163,Xi.RULE_importForeignSchemaStatement=164,Xi.RULE_importQualificationType=165,Xi.RULE_importQualification=166,Xi.RULE_createUserMappingStatement=167,Xi.RULE_authIdentifier=168,Xi.RULE_dropUserMappingStatement=169,Xi.RULE_alterUserMappingStatement=170,Xi.RULE_createPolicyStatement=171,Xi.RULE_alterPolicyStatement=172,Xi.RULE_rowSecurityOptionalExpression=173,Xi.RULE_rowSecurityOptionalWithCheck=174,Xi.RULE_rowSecurityOptionalToUser=175,Xi.RULE_rowSecurityDefaultPermissive=176,Xi.RULE_rowSecurityDefaultForCmd=177,Xi.RULE_rowSecurityCommand=178,Xi.RULE_createAccessMethodStatement=179,Xi.RULE_accessMethodType=180,Xi.RULE_createTriggerStatement=181,Xi.RULE_triggerActionTime=182,Xi.RULE_triggerEvents=183,Xi.RULE_triggerOneEvent=184,Xi.RULE_triggerReferencing=185,Xi.RULE_triggerTransitions=186,Xi.RULE_triggerTransition=187,Xi.RULE_transitionOldOrNew=188,Xi.RULE_transitionRowOrTable=189,Xi.RULE_transitionRelName=190,Xi.RULE_triggerForSpec=191,Xi.RULE_triggerForType=192,Xi.RULE_triggerWhen=193,Xi.RULE_functionOrProcedure=194,Xi.RULE_triggerFunctionArguments=195,Xi.RULE_triggerFunctionArgument=196,Xi.RULE_optionalConstraintFromTable=197,Xi.RULE_constraintAttributeSpecification=198,Xi.RULE_constraintAttributeElement=199,Xi.RULE_createEventTriggerStatement=200,Xi.RULE_eventTriggerWhenList=201,Xi.RULE_eventTriggerWhenItem=202,Xi.RULE_eventTriggerValueList=203,Xi.RULE_alterEventTriggerStatement=204,Xi.RULE_enableTrigger=205,Xi.RULE_createAssertionStatement=206,Xi.RULE_defineStatement=207,Xi.RULE_definition=208,Xi.RULE_definitionElement=209,Xi.RULE_definitionArgument=210,Xi.RULE_oldAggregateDefinition=211,Xi.RULE_oldAggregateElement=212,Xi.RULE_enumValueList=213,Xi.RULE_alterEnumStatement=214,Xi.RULE_optionalIfNotExists=215,Xi.RULE_createOperatorClassStatement=216,Xi.RULE_operatorClassItemList=217,Xi.RULE_operatorClassItem=218,Xi.RULE_optionalOperatorFamily=219,Xi.RULE_operatorClassPurpose=220,Xi.RULE_createOperatorFamilyStatement=221,Xi.RULE_alterOperatorFamilyStatement=222,Xi.RULE_operatorClassDropList=223,Xi.RULE_operatorClassDrop=224,Xi.RULE_dropOperatorClassStatement=225,Xi.RULE_dropOperatorFamilyStatement=226,Xi.RULE_dropOwnedStatement=227,Xi.RULE_reassignOwnedStatement=228,Xi.RULE_dropStatement=229,Xi.RULE_objectTypeAnyName=230,Xi.RULE_objectTypeName=231,Xi.RULE_dropTypeName=232,Xi.RULE_objectTypeNameOnAnyName=233,Xi.RULE_anyNameList=234,Xi.RULE_anyName=235,Xi.RULE_attributes=236,Xi.RULE_typeNameList=237,Xi.RULE_truncateStatement=238,Xi.RULE_optionalRestartSequences=239,Xi.RULE_commentStatement=240,Xi.RULE_commentText=241,Xi.RULE_securityLabelStatement=242,Xi.RULE_optionalProvider=243,Xi.RULE_securityLabel=244,Xi.RULE_fetchStatement=245,Xi.RULE_fetchArguments=246,Xi.RULE_fromOrIn=247,Xi.RULE_optionalFromOrIn=248,Xi.RULE_grantStatement=249,Xi.RULE_revokeStatement=250,Xi.RULE_privileges=251,Xi.RULE_privilegeList=252,Xi.RULE_privilege=253,Xi.RULE_privilegeTarget=254,Xi.RULE_granteeList=255,Xi.RULE_grantee=256,Xi.RULE_optionalWithGrantOption=257,Xi.RULE_grantPrivilegeStatement=258,Xi.RULE_revokePrivilegeStatement=259,Xi.RULE_optionalGrantAdminOption=260,Xi.RULE_optionalGrantedBy=261,Xi.RULE_alterDefaultPrivilegesStatement=262,Xi.RULE_defultPrivilegeOption=263,Xi.RULE_defaultPrivelegeAction=264,Xi.RULE_defultPrivilegeTarget=265,Xi.RULE_indexStatement=266,Xi.RULE_optionalAccessMethodClause=267,Xi.RULE_indexParameters=268,Xi.RULE_indexElemOptions=269,Xi.RULE_indexElement=270,Xi.RULE_optionalInclude=271,Xi.RULE_optionalCollate=272,Xi.RULE_optionalClass=273,Xi.RULE_optionalAscOrDesc=274,Xi.RULE_optionalNullsOrder=275,Xi.RULE_createFunctionStatement=276,Xi.RULE_optionalOrReplace=277,Xi.RULE_functionArgumentsList=278,Xi.RULE_functionWithArgumentTypesList=279,Xi.RULE_functionWithArgumentTypes=280,Xi.RULE_functionArgumentsWithDefaultsList=281,Xi.RULE_functionArgumentWithDefault=282,Xi.RULE_functionArgument=283,Xi.RULE_argumentClass=284,Xi.RULE_parameterName=285,Xi.RULE_functionReturn=286,Xi.RULE_functionType=287,Xi.RULE_aggregateArguments=288,Xi.RULE_aggregateArgumentsList=289,Xi.RULE_aggregateWithArgumentTypes=290,Xi.RULE_aggregateWithArgumentTypesList=291,Xi.RULE_createFunctionOptionList=292,Xi.RULE_commonFunctionOptionItem=293,Xi.RULE_createFunctionOptionItem=294,Xi.RULE_functionAs=295,Xi.RULE_transformTypeList=296,Xi.RULE_optionalDefinition=297,Xi.RULE_tableFunctionColumn=298,Xi.RULE_tableFunctionColumnList=299,Xi.RULE_alterFunctionStatement=300,Xi.RULE_removeFunctionStatement=301,Xi.RULE_removeAggregateStatement=302,Xi.RULE_removeOperatorStatement=303,Xi.RULE_operatorArgumentTypes=304,Xi.RULE_anyOperator=305,Xi.RULE_operatorWithArgumentTypesList=306,Xi.RULE_operatorWithArgumentTypes=307,Xi.RULE_doStatement=308,Xi.RULE_doStatementOptionsList=309,Xi.RULE_doStatementOptionItem=310,Xi.RULE_createCastStatement=311,Xi.RULE_castContext=312,Xi.RULE_dropCastStatement=313,Xi.RULE_optionalIfExists=314,Xi.RULE_createTransformStatement=315,Xi.RULE_transformElementList=316,Xi.RULE_dropTransformStatement=317,Xi.RULE_reindexStatement=318,Xi.RULE_reindexTargetType=319,Xi.RULE_reindexOptionList=320,Xi.RULE_reindexOptionElement=321,Xi.RULE_alterTablespaceStatement=322,Xi.RULE_renameStatement=323,Xi.RULE_optionalColumn=324,Xi.RULE_optionalSetData=325,Xi.RULE_alterObjectDependsStatement=326,Xi.RULE_alterObjectSchemaStatement=327,Xi.RULE_alterOperatorStatement=328,Xi.RULE_operatorDefinitionList=329,Xi.RULE_operatorDefinitionElement=330,Xi.RULE_operatorDefinitionArgument=331,Xi.RULE_alterTypeStatement=332,Xi.RULE_alterOwnerStatement=333,Xi.RULE_createPublicationStatement=334,Xi.RULE_optionalPublicationForTables=335,Xi.RULE_publicationForTables=336,Xi.RULE_alterPublicationStatement=337,Xi.RULE_createSubscriptionStatement=338,Xi.RULE_publicationNameList=339,Xi.RULE_publicationNameItem=340,Xi.RULE_alterSubscriptionStatement=341,Xi.RULE_dropSubscriptionStatement=342,Xi.RULE_ruleStatement=343,Xi.RULE_ruleActionList=344,Xi.RULE_ruleActionMulti=345,Xi.RULE_ruleActionStatement=346,Xi.RULE_ruleActionStatementOrEmpty=347,Xi.RULE_event=348,Xi.RULE_optionalInstead=349,Xi.RULE_notifyStatement=350,Xi.RULE_notifyPayload=351,Xi.RULE_listenStatement=352,Xi.RULE_unlistenStatement=353,Xi.RULE_transactionStatement=354,Xi.RULE_optionalTransaction=355,Xi.RULE_transactionModeItem=356,Xi.RULE_transactionModeList=357,Xi.RULE_optionalTransactionChain=358,Xi.RULE_viewStatement=359,Xi.RULE_optionalCheckOption=360,Xi.RULE_loadStatement=361,Xi.RULE_createDatabaseStatement=362,Xi.RULE_createDatabaseOptionList=363,Xi.RULE_createDatabaseOptionItem=364,Xi.RULE_createDatabaseOptionName=365,Xi.RULE_alterDatabaseStatement=366,Xi.RULE_alterDatabaseSetStatement=367,Xi.RULE_dropDatabaseStatement=368,Xi.RULE_alterCollationStatement=369,Xi.RULE_alterSystemStatement=370,Xi.RULE_createDomainStatement=371,Xi.RULE_alterDomainStatement=372,Xi.RULE_alterDomainCommand=373,Xi.RULE_optionalAs=374,Xi.RULE_altertsDictionaryStatement=375,Xi.RULE_altertsConfigurationStatement=376,Xi.RULE_createConversionStatement=377,Xi.RULE_clusterStatement=378,Xi.RULE_clusterIndexSpecification=379,Xi.RULE_vacuumStatement=380,Xi.RULE_analyzeStatement=381,Xi.RULE_vacuumAnalyzeOptionList=382,Xi.RULE_analyzeKeyword=383,Xi.RULE_vacuumAnalyzeOptionElement=384,Xi.RULE_vacuumAnalyzeOptionName=385,Xi.RULE_vacuumAnalyzeOptionArgument=386,Xi.RULE_optionalVerbose=387,Xi.RULE_optionalNameList=388,Xi.RULE_vacuumRelation=389,Xi.RULE_optionalVacuumRelationList=390,Xi.RULE_explainStatement=391,Xi.RULE_explainableStatement=392,Xi.RULE_explainOptionElement=393,Xi.RULE_explainOptionName=394,Xi.RULE_explainOptionArgument=395,Xi.RULE_prepareStatement=396,Xi.RULE_prepareTypeClause=397,Xi.RULE_preparableStatement=398,Xi.RULE_executeStatement=399,Xi.RULE_executeParameterClause=400,Xi.RULE_deallocateStatement=401,Xi.RULE_insertStatement=402,Xi.RULE_insertTarget=403,Xi.RULE_insertRest=404,Xi.RULE_overrideKind=405,Xi.RULE_insertColumnList=406,Xi.RULE_insertColumnItem=407,Xi.RULE_optionalOnConflict=408,Xi.RULE_optionalConflictExpr=409,Xi.RULE_returningClause=410,Xi.RULE_mergeStatement=411,Xi.RULE_mergeInsertClause=412,Xi.RULE_mergeUpdateClause=413,Xi.RULE_mergeDeleteClause=414,Xi.RULE_deleteStatement=415,Xi.RULE_usingClause=416,Xi.RULE_lockStatement=417,Xi.RULE_optionalLock=418,Xi.RULE_lockType=419,Xi.RULE_optionalNowait=420,Xi.RULE_optionalNowaitOrSkip=421,Xi.RULE_updateStatement=422,Xi.RULE_setClauseList=423,Xi.RULE_setClause=424,Xi.RULE_setTarget=425,Xi.RULE_declareCursorStatement=426,Xi.RULE_cursorName=427,Xi.RULE_optionalHold=428,Xi.RULE_selectStatement=429,Xi.RULE_selectWithParenthesis=430,Xi.RULE_selectWithoutParenthesis=431,Xi.RULE_selectClause=432,Xi.RULE_simpleSelectIntersect=433,Xi.RULE_simpleSelectStart=434,Xi.RULE_simpleSelectPramary=435,Xi.RULE_withClause=436,Xi.RULE_commonTableExpression=437,Xi.RULE_optionalMaterialized=438,Xi.RULE_intoClause=439,Xi.RULE_optionalTemporaryTableName=440,Xi.RULE_optionalTable=441,Xi.RULE_allOrDistinct=442,Xi.RULE_distinctClause=443,Xi.RULE_allClause=444,Xi.RULE_optionalSortClause=445,Xi.RULE_sortClause=446,Xi.RULE_sortByList=447,Xi.RULE_sortBy=448,Xi.RULE_selectLimit=449,Xi.RULE_optionalSelectLimit=450,Xi.RULE_limitClause=451,Xi.RULE_offsetClause=452,Xi.RULE_selectLimitValue=453,Xi.RULE_selectOffsetValue=454,Xi.RULE_selectFetchFirstValue=455,Xi.RULE_anyConst=456,Xi.RULE_rowOrRows=457,Xi.RULE_firstOrNext=458,Xi.RULE_groupClause=459,Xi.RULE_groupByList=460,Xi.RULE_groupByItem=461,Xi.RULE_havingClause=462,Xi.RULE_forLockingClause=463,Xi.RULE_forLockingItem=464,Xi.RULE_forLockingStrength=465,Xi.RULE_lockedRelationsList=466,Xi.RULE_valuesClause=467,Xi.RULE_fromClause=468,Xi.RULE_fromList=469,Xi.RULE_nonAnsiJoin=470,Xi.RULE_tableReference=471,Xi.RULE_aliasClause=472,Xi.RULE_optionalAliasClause=473,Xi.RULE_tableAliasClause=474,Xi.RULE_functionAliasClause=475,Xi.RULE_joinType=476,Xi.RULE_joinQualifier=477,Xi.RULE_viewName=478,Xi.RULE_relationExpression=479,Xi.RULE_relationExpressionList=480,Xi.RULE_relationExpressionOptionalAlias=481,Xi.RULE_tableSampleClause=482,Xi.RULE_functionTable=483,Xi.RULE_rowsFromItem=484,Xi.RULE_optionalColumnDefinitionList=485,Xi.RULE_optionalOrdinality=486,Xi.RULE_whereClause=487,Xi.RULE_whereOrCurrentClause=488,Xi.RULE_optionalTableFunctionElementList=489,Xi.RULE_tableFunctionElementList=490,Xi.RULE_tableFunctionElement=491,Xi.RULE_xmlTable=492,Xi.RULE_xmlTableColumnElement=493,Xi.RULE_xmlTableColumnOptionList=494,Xi.RULE_xmlTableColumnOptionElement=495,Xi.RULE_xmlNamespaceList=496,Xi.RULE_xmlNamespaceElement=497,Xi.RULE_typeName=498,Xi.RULE_simpleTypeName=499,Xi.RULE_constTypeName=500,Xi.RULE_genericType=501,Xi.RULE_optionalTypeModifiers=502,Xi.RULE_numeric=503,Xi.RULE_optionalFloat=504,Xi.RULE_bit=505,Xi.RULE_constBit=506,Xi.RULE_bitWithLength=507,Xi.RULE_bitWithoutLength=508,Xi.RULE_character=509,Xi.RULE_constCharacter=510,Xi.RULE_characterChar=511,Xi.RULE_optionalVarying=512,Xi.RULE_constDateTime=513,Xi.RULE_constInterval=514,Xi.RULE_optionalTimezone=515,Xi.RULE_optionalInterval=516,Xi.RULE_intervalSecond=517,Xi.RULE_optionalEscape=518,Xi.RULE_expression1=519,Xi.RULE_expression1Qualifier=520,Xi.RULE_expression1LessLess=521,Xi.RULE_expression1Or=522,Xi.RULE_expression1And=523,Xi.RULE_expression1Between=524,Xi.RULE_expression1In=525,Xi.RULE_expression1UnaryNot=526,Xi.RULE_expression1IsNull=527,Xi.RULE_expression1IsNot=528,Xi.RULE_expression1Compare=529,Xi.RULE_expression1Like=530,Xi.RULE_expression1qualifierOperator=531,Xi.RULE_expression1UnaryQualifierOperator=532,Xi.RULE_expression1Add=533,Xi.RULE_expressionMultiply=534,Xi.RULE_expression1Caret=535,Xi.RULE_expression1UnarySign=536,Xi.RULE_expression1AtTimeZone=537,Xi.RULE_expression1Collate=538,Xi.RULE_expression1Typecast=539,Xi.RULE_expression2=540,Xi.RULE_expression3=541,Xi.RULE_plsqlVariableName=542,Xi.RULE_functionApplication=543,Xi.RULE_functionExpression=544,Xi.RULE_functionExpressionWindowless=545,Xi.RULE_functionExpressionCommonSubexpr=546,Xi.RULE_xmlRootVersion=547,Xi.RULE_optionalXmlRootStandalone=548,Xi.RULE_xmlAttributes=549,Xi.RULE_xmlAttributeList=550,Xi.RULE_xmlAttributeElement=551,Xi.RULE_documentOrContent=552,Xi.RULE_xmlWhitespaceOption=553,Xi.RULE_xmlExistsArgument=554,Xi.RULE_xmlPassingMech=555,Xi.RULE_withinGroupClause=556,Xi.RULE_filterClause=557,Xi.RULE_windowClause=558,Xi.RULE_windowDefinitionList=559,Xi.RULE_windowDefinition=560,Xi.RULE_overClause=561,Xi.RULE_windowSpecification=562,Xi.RULE_optionalExistingWindowName=563,Xi.RULE_optionalPartitionClause=564,Xi.RULE_optionalFrameClause=565,Xi.RULE_frameExtent=566,Xi.RULE_frameBound=567,Xi.RULE_optionalWindowExclusionClause=568,Xi.RULE_row=569,Xi.RULE_explicitRow=570,Xi.RULE_implicitRow=571,Xi.RULE_subType=572,Xi.RULE_allOperator=573,Xi.RULE_mathOperator=574,Xi.RULE_operatorQualifier=575,Xi.RULE_allOperatorQualifier=576,Xi.RULE_subqueryOperator=577,Xi.RULE_expressionList=578,Xi.RULE_functionArgumentList=579,Xi.RULE_functionArgumentExpression=580,Xi.RULE_typeList=581,Xi.RULE_arrayExpression=582,Xi.RULE_arrayExpressionList=583,Xi.RULE_extractList=584,Xi.RULE_extractArgument=585,Xi.RULE_unicodeNormalForm=586,Xi.RULE_overlayList=587,Xi.RULE_positionList=588,Xi.RULE_substrList=589,Xi.RULE_trimList=590,Xi.RULE_inExpression=591,Xi.RULE_caseExpression=592,Xi.RULE_whenClauseList=593,Xi.RULE_whenClause=594,Xi.RULE_caseDefault=595,Xi.RULE_caseArg=596,Xi.RULE_columnReference=597,Xi.RULE_indirectionElement=598,Xi.RULE_indirection=599,Xi.RULE_optionalIndirection=600,Xi.RULE_optionalTargetList=601,Xi.RULE_targetList=602,Xi.RULE_targetElement=603,Xi.RULE_qualifiedNameList=604,Xi.RULE_databaseName=605,Xi.RULE_databaseNameList=606,Xi.RULE_schemaName=607,Xi.RULE_schemaNameList=608,Xi.RULE_indexName=609,Xi.RULE_indexNameList=610,Xi.RULE_triggerName=611,Xi.RULE_constraintName=612,Xi.RULE_sequenceName=613,Xi.RULE_sequenceNameList=614,Xi.RULE_qualifiedName=615,Xi.RULE_nameList=616,Xi.RULE_name=617,Xi.RULE_attributeName=618,Xi.RULE_fileName=619,Xi.RULE_functionName=620,Xi.RULE_aExpressionConst=621,Xi.RULE_xconst=622,Xi.RULE_bconst=623,Xi.RULE_fconst=624,Xi.RULE_iconst=625,Xi.RULE_sconst=626,Xi.RULE_anySconst=627,Xi.RULE_optionalUescape=628,Xi.RULE_signedIconst=629,Xi.RULE_roleName=630,Xi.RULE_roleNameList=631,Xi.RULE_columnId=632,Xi.RULE_tableAlias=633,Xi.RULE_typeFunctionName=634,Xi.RULE_nonReservedWord=635,Xi.RULE_columnLabel=636,Xi.RULE_identifier=637,Xi.RULE_plsqlIdentifier=638,Xi.RULE_unreservedKeyword=639,Xi.RULE_columnNameKeyword=640,Xi.RULE_typeFunctionNameKeyword=641,Xi.RULE_reservedKeyword=642,Xi.RULE_builtinFunctionName=643,Xi.RULE_plsqlFunction=644,Xi.RULE_computeOptions=645,Xi.RULE_computeOption=646,Xi.RULE_sharp=647,Xi.RULE_optionValue=648,Xi.RULE_optionalSemi=649,Xi.RULE_plsqlBlock=650,Xi.RULE_declareSection=651,Xi.RULE_declareStart=652,Xi.RULE_declareStatements=653,Xi.RULE_labelDeclaration=654,Xi.RULE_declareStatement=655,Xi.RULE_declareStatement2=656,Xi.RULE_optionalScrollable=657,Xi.RULE_declareCursorQuery=658,Xi.RULE_declareCursorArgs=659,Xi.RULE_declareCursorArglist=660,Xi.RULE_declareCursorArg=661,Xi.RULE_declareIsOrFor=662,Xi.RULE_declareAliasItem=663,Xi.RULE_declareVarname=664,Xi.RULE_declareConst=665,Xi.RULE_declareDatatype=666,Xi.RULE_declareCollate=667,Xi.RULE_declareNotNull=668,Xi.RULE_declareDefaultValue=669,Xi.RULE_declareDefaultKey=670,Xi.RULE_assignOperator=671,Xi.RULE_procedureSection=672,Xi.RULE_proceduralStatement=673,Xi.RULE_statementPerform=674,Xi.RULE_statementCall=675,Xi.RULE_optionalExpressionList=676,Xi.RULE_statementAssign=677,Xi.RULE_statementGetDiagram=678,Xi.RULE_optionalGetDiagramArea=679,Xi.RULE_getDiagramList=680,Xi.RULE_getDiagramListItem=681,Xi.RULE_getDiagramItem=682,Xi.RULE_getDiagramTarget=683,Xi.RULE_assignVariable=684,Xi.RULE_statementIf=685,Xi.RULE_statementElsifs=686,Xi.RULE_statementElse=687,Xi.RULE_statementCase=688,Xi.RULE_optionalExpressionUntilWhen=689,Xi.RULE_caseWhenList=690,Xi.RULE_caseWhen=691,Xi.RULE_optionalCaseElse=692,Xi.RULE_statementLoop=693,Xi.RULE_statementWhile=694,Xi.RULE_statementFor=695,Xi.RULE_forControl=696,Xi.RULE_optionalForUsingExpression=697,Xi.RULE_optionalCursorParameters=698,Xi.RULE_optionalReverse=699,Xi.RULE_optionalByExpression=700,Xi.RULE_forVariable=701,Xi.RULE_statementForeachA=702,Xi.RULE_foreachSlice=703,Xi.RULE_statementExit=704,Xi.RULE_exitType=705,Xi.RULE_statementReturn=706,Xi.RULE_optionalReturnResult=707,Xi.RULE_statementRaise=708,Xi.RULE_optionalStatementRaiseLevel=709,Xi.RULE_optionalRaiseList=710,Xi.RULE_optionalRaiseUsing=711,Xi.RULE_optionalRaiseUsingElement=712,Xi.RULE_statementAssert=713,Xi.RULE_optionalStatementAssertMessage=714,Xi.RULE_loopBody=715,Xi.RULE_statementExecSql=716,Xi.RULE_statementDynExecute=717,Xi.RULE_optionalExecuteUsing=718,Xi.RULE_optionalExecuteUsingList=719,Xi.RULE_optionalExecuteInto=720,Xi.RULE_statementOpen=721,Xi.RULE_optionalOpenBoundListItem=722,Xi.RULE_statementFetch=723,Xi.RULE_intoTarget=724,Xi.RULE_optionalCursorFrom=725,Xi.RULE_optionalFetchDirection=726,Xi.RULE_statementMove=727,Xi.RULE_statementClose=728,Xi.RULE_statementNull=729,Xi.RULE_statementCommit=730,Xi.RULE_statementRollback=731,Xi.RULE_plsqlOptionalTransactionChain=732,Xi.RULE_statementSet=733,Xi.RULE_cursorVariable=734,Xi.RULE_exceptionSection=735,Xi.RULE_procedureExceptions=736,Xi.RULE_procedureException=737,Xi.RULE_procedureConditions=738,Xi.RULE_procedureCondition=739,Xi.RULE_optionalBlockLabel=740,Xi.RULE_optionalLoopLabel=741,Xi.RULE_optionalLabel=742,Xi.RULE_optionalExitCondition=743,Xi.RULE_anyIdentifier=744,Xi.RULE_plsqlUnreservedKeyword=745,Xi.RULE_sqlExpression=746,Xi.RULE_expressionUntilThen=747,Xi.RULE_expressionUntilSemi=748,Xi.RULE_expressionUntilRightbracket=749,Xi.RULE_expressionUntilLoop=750,Xi.RULE_makeExecuteSqlStatement=751,Xi.RULE_optionalReturningClauseInto=752,Xi.RULE_roleOrAliases=753,Xi.literalNames=[null,"'$'","'('","')'","'['","']'","','","';'","':'","'*'","'='","'.'","'+'","'-'","'/'","'^'","'<'","'>'","'<<'","'>>'","':='","'<='","'=>'","'>='","'..'","'<>'","'::'","'%'",null,null,"'ALL'","'ANALYSE'","'ANALYZE'","'AND'","'ANY'","'ARRAY'","'AS'","'ASC'","'ASYMMETRIC'","'BOTH'","'CASE'","'CAST'","'CHECK'","'COLLATE'","'COLUMN'","'CONSTRAINT'","'CREATE'","'CURRENT_CATALOG'","'CURRENT_DATE'","'CURRENT_ROLE'","'CURRENT_TIME'","'CURRENT_TIMESTAMP'","'CURRENT_USER'","'DEFAULT'","'DEFERRABLE'","'DESC'","'DISTINCT'","'DO'","'ELSE'","'EXCEPT'","'FALSE'","'FETCH'","'FOR'","'FOREIGN'","'FROM'","'GRANT'","'GROUP'","'HAVING'","'IN'","'INITIALLY'","'INTERSECT'","'INTO'","'LATERAL'","'LEADING'","'LIMIT'","'LOCALTIME'","'LOCALTIMESTAMP'","'NOT'","'NULL'","'OFFSET'","'ON'","'ONLY'","'OR'","'ORDER'","'PLACING'","'PRIMARY'","'REFERENCES'","'RETURNING'","'SELECT'","'SESSION_USER'","'SOME'","'SYMMETRIC'","'TABLE'","'THEN'","'TO'","'TRAILING'","'TRUE'","'UNION'","'UNIQUE'","'USER'","'USING'","'VARIADIC'","'WHEN'","'WHERE'","'WINDOW'","'WITH'","'AUTHORIZATION'","'BINARY'","'COLLATION'","'CONCURRENTLY'","'CROSS'","'CURRENT_SCHEMA'","'FREEZE'","'FULL'","'ILIKE'","'INNER'","'IS'","'ISNULL'","'JOIN'","'LEFT'","'LIKE'","'NATURAL'","'NOTNULL'","'OUTER'","'OVER'","'OVERLAPS'","'RIGHT'","'SIMILAR'","'VERBOSE'","'ABORT'","'ABSOLUTE'","'ACCESS'","'ACTION'","'ADD'","'ADMIN'","'AFTER'","'AGGREGATE'","'ALSO'","'ALTER'","'ALWAYS'","'ASSERTION'","'ASSIGNMENT'","'AT'","'ATTRIBUTE'","'BACKWARD'","'BEFORE'","'BEGIN'","'BY'","'CACHE'","'CALLED'","'CASCADE'","'CASCADED'","'CATALOG'","'CHAIN'","'CHARACTERISTICS'","'CHECKPOINT'","'CLASS'","'CLOSE'","'CLUSTER'","'COMMENT'","'COMMENTS'","'COMMIT'","'COMMITTED'","'CONFIGURATION'","'CONNECTION'","'CONSTRAINTS'","'CONTENT'","'CONTINUE'","'CONVERSION'","'COPY'","'COST'","'CSV'","'CURSOR'","'CYCLE'","'DATA'","'DATABASE'","'DAY'","'DEALLOCATE'","'DECLARE'","'DEFAULTS'","'DEFERRED'","'DEFINER'","'DELETE'","'DELIMITER'","'DELIMITERS'","'DICTIONARY'","'DISABLE'","'DISCARD'","'DOCUMENT'","'DOMAIN'","'DOUBLE'","'DROP'","'EACH'","'ENABLE'","'ENCODING'","'ENCRYPTED'","'ENUM'","'ESCAPE'","'EVENT'","'EXCLUDE'","'EXCLUDING'","'EXCLUSIVE'","'EXECUTE'","'EXPLAIN'","'EXTENSION'","'EXTERNAL'","'FAMILY'","'FIRST'","'FOLLOWING'","'FORCE'","'FORWARD'","'FUNCTION'","'FUNCTIONS'","'GLOBAL'","'GRANTED'","'HANDLER'","'HEADER'","'HOLD'","'HOUR'","'IDENTITY'","'IF'","'IMMEDIATE'","'IMMUTABLE'","'IMPLICIT'","'INCLUDING'","'INCREMENT'","'INDEX'","'INDEXES'","'INHERIT'","'INHERITS'","'INLINE'","'INSENSITIVE'","'INSERT'","'INSTEAD'","'INVOKER'","'ISOLATION'","'KEY'","'LABEL'","'LANGUAGE'","'LARGE'","'LAST'","'LEAKPROOF'","'LEVEL'","'LISTEN'","'LOAD'","'LOCAL'","'LOCATION'","'LOCK'","'MAPPING'","'MATCH'","'MATCHED'","'MATERIALIZED'","'MAXVALUE'","'MERGE'","'MINUTE'","'MINVALUE'","'MODE'","'MONTH'","'MOVE'","'NAME'","'NAMES'","'NEXT'","'NO'","'NOTHING'","'NOTIFY'","'NOWAIT'","'NULLS'","'OBJECT'","'OF'","'OFF'","'OIDS'","'OPERATOR'","'OPTION'","'OPTIONS'","'OWNED'","'OWNER'","'PARSER'","'PARTIAL'","'PARTITION'","'PASSING'","'PASSWORD'","'PLANS'","'PRECEDING'","'PREPARE'","'PREPARED'","'PRESERVE'","'PRIOR'","'PRIVILEGES'","'PROCEDURAL'","'PROCEDURE'","'PROGRAM'","'QUOTE'","'RANGE'","'READ'","'REASSIGN'","'RECHECK'","'RECURSIVE'","'REF'","'REFRESH'","'REINDEX'","'RELATIVE'","'RELEASE'","'RENAME'","'REPEATABLE'","'REPLACE'","'REPLICA'","'RESET'","'RESTART'","'RESTRICT'","'RETURNS'","'REVOKE'","'ROLE'","'ROLLBACK'","'ROWS'","'RULE'","'SAVEPOINT'","'SCHEMA'","'SCROLL'","'SEARCH'","'SECOND'","'SECURITY'","'SEQUENCE'","'SEQUENCES'","'SERIALIZABLE'","'SERVER'","'SESSION'","'SET'","'SHARE'","'SHOW'","'SIMPLE'","'SNAPSHOT'","'STABLE'","'STANDALONE'","'START'","'STATEMENT'","'STATISTICS'","'STDIN'","'STDOUT'","'STORAGE'","'STRICT'","'STRIP'","'SYSID'","'SYSTEM'","'TABLES'","'TABLESPACE'","'TEMP'","'TEMPLATE'","'TEMPORARY'","'TEXT'","'TRANSACTION'","'TRIGGER'","'TRUNCATE'","'TRUSTED'","'TYPE'","'TYPES'","'UNBOUNDED'","'UNCOMMITTED'","'UNENCRYPTED'","'UNKNOWN'","'UNLISTEN'","'UNLOGGED'","'UNTIL'","'UPDATE'","'VACUUM'","'VALID'","'VALIDATE'","'VALIDATOR'","'VARYING'","'VERSION'","'VIEW'","'VOLATILE'","'WHITESPACE'","'WITHOUT'","'WORK'","'WRAPPER'","'WRITE'","'XML'","'YEAR'","'YES'","'ZONE'","'BETWEEN'","'BIGINT'","'BIT'","'BOOLEAN'","'CHAR'","'CHARACTER'","'COALESCE'","'DEC'","'DECIMAL'","'EXISTS'","'EXTRACT'","'FLOAT'","'GREATEST'","'INOUT'","'INT'","'INTEGER'","'INTERVAL'","'LEAST'","'NATIONAL'","'NCHAR'","'NONE'","'NULLIF'","'NUMERIC'","'OVERLAY'","'POSITION'","'PRECISION'","'REAL'","'ROW'","'SETOF'","'SMALLINT'","'SUBSTRING'","'TIME'","'TIMESTAMP'","'TREAT'","'TRIM'","'VALUES'","'VARCHAR'","'XMLATTRIBUTES'","'XMLCOMMENT'","'XMLAGG'","'XML_IS_WELL_FORMED'","'XML_IS_WELL_FORMED_DOCUMENT'","'XML_IS_WELL_FORMED_CONTENT'","'XPATH'","'XPATH_EXISTS'","'XMLCONCAT'","'XMLELEMENT'","'XMLEXISTS'","'XMLFOREST'","'XMLPARSE'","'XMLPI'","'XMLROOT'","'XMLSERIALIZE'","'CALL'","'CURRENT'","'ATTACH'","'DETACH'","'EXPRESSION'","'GENERATED'","'LOGGED'","'STORED'","'INCLUDE'","'ROUTINE'","'TRANSFORM'","'IMPORT'","'POLICY'","'METHOD'","'REFERENCING'","'NEW'","'OLD'","'VALUE'","'SUBSCRIPTION'","'PUBLICATION'","'OUT'","'END'","'ROUTINES'","'SCHEMAS'","'PROCEDURES'","'INPUT'","'SUPPORT'","'PARALLEL'","'SQL'","'DEPENDS'","'OVERRIDING'","'CONFLICT'","'SKIP'","'LOCKED'","'TIES'","'ROLLUP'","'CUBE'","'GROUPING'","'SETS'","'TABLESAMPLE'","'ORDINALITY'","'XMLTABLE'","'COLUMNS'","'XMLNAMESPACES'","'ROWTYPE'","'NORMALIZED'","'WITHIN'","'FILTER'","'GROUPS'","'OTHERS'","'NFC'","'NFD'","'NFKC'","'NFKD'","'UESCAPE'","'VIEWS'","'NORMALIZE'","'DUMP'","'PRINT_STRICT_PARAMS'","'VARIABLE_CONFLICT'","'ERROR'","'USE_VARIABLE'","'USE_COLUMN'","'ALIAS'","'CONSTANT'","'PERFORM'","'GET'","'DIAGNOSTICS'","'STACKED'","'ELSIF'","'WHILE'","'REVERSE'","'FOREACH'","'SLICE'","'EXIT'","'RETURN'","'QUERY'","'RAISE'","'SQLSTATE'","'DEBUG'","'LOG'","'INFO'","'NOTICE'","'WARNING'","'EXCEPTION'","'ASSERT'","'LOOP'","'OPEN'","'ABS'","'CBRT'","'CEIL'","'CEILING'","'DEGREES'","'DIV'","'EXP'","'FACTORIAL'","'FLOOR'","'GCD'","'LCM'","'LN'","'LOG10'","'MIN_SCALE'","'MOD'","'PI'","'POWER'","'RADIANS'","'ROUND'","'SCALE'","'SIGN'","'SQRT'","'TRIM_SCALE'","'TRUNC'","'WIDTH_BUCKET'","'RANDOM'","'SETSEED'","'ACOS'","'ACOSD'","'ASIN'","'ASIND'","'ATAN'","'ATAND'","'ATAN2'","'ATAN2D'","'COS'","'COSD'","'COT'","'COTD'","'SIN'","'SIND'","'TAN'","'TAND'","'SINH'","'COSH'","'TANH'","'ASINH'","'ACOSH'","'ATANH'","'BIT_LENGTH'","'CHAR_LENGTH'","'CHARACTER_LENGTH'","'LOWER'","'OCTET_LENGTH'","'UPPER'","'ASCII'","'BTRIM'","'CHR'","'CONCAT'","'CONCAT_WS'","'FORMAT'","'INITCAP'","'LENGTH'","'LPAD'","'LTRIM'","'MD5'","'PARSE_IDENT'","'PG_CLIENT_ENCODING'","'QUOTE_IDENT'","'QUOTE_LITERAL'","'QUOTE_NULLABLE'","'REGEXP_COUNT'","'REGEXP_INSTR'","'REGEXP_LIKE'","'REGEXP_MATCH'","'REGEXP_MATCHES'","'REGEXP_REPLACE'","'REGEXP_SPLIT_TO_ARRAY'","'REGEXP_SPLIT_TO_TABLE'","'REGEXP_SUBSTR'","'REPEAT'","'RPAD'","'RTRIM'","'SPLIT_PART'","'STARTS_WITH'","'STRING_TO_ARRAY'","'STRING_TO_TABLE'","'STRPOS'","'SUBSTR'","'TO_ASCII'","'TO_HEX'","'TRANSLATE'","'UNISTR'","'AGE'","'CLOCK_TIMESTAMP'","'DATE_BIN'","'DATE_PART'","'DATE_TRUNC'","'ISFINITE'","'JUSTIFY_DAYS'","'JUSTIFY_HOURS'","'JUSTIFY_INTERVAL'","'MAKE_DATE'","'MAKE_INTERVAL'","'MAKE_TIME'","'MAKE_TIMESTAMP'","'MAKE_TIMESTAMPTZ'","'NOW'","'STATEMENT_TIMESTAMP'","'TIMEOFDAY'","'TRANSACTION_TIMESTAMP'","'TO_TIMESTAMP'","'TO_CHAR'","'TO_DATE'","'TO_NUMBER'",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"'\\'",null,null,null,null,null,null,null,null,null,"'''"],Xi.symbolicNames=[null,"Dollar","OPEN_PAREN","CLOSE_PAREN","OPEN_BRACKET","CLOSE_BRACKET","COMMA","SEMI","COLON","STAR","EQUAL","DOT","PLUS","MINUS","SLASH","CARET","LT","GT","LESS_LESS","GREATER_GREATER","COLON_EQUALS","LESS_EQUALS","EQUALS_GREATER","GREATER_EQUALS","DOT_DOT","NOT_EQUALS","TYPECAST","PERCENT","PARAM","Operator","ALL","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","ASYMMETRIC","BOTH","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","CURRENT_CATALOG","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DEFAULT","DEFERRABLE","DESC","DISTINCT","DO","ELSE","EXCEPT","FALSE_P","FETCH","FOR","FOREIGN","FROM","GRANT","GROUP_P","HAVING","IN_P","INITIALLY","INTERSECT","INTO","LATERAL_P","LEADING","LIMIT","LOCALTIME","LOCALTIMESTAMP","NOT","NULL_P","OFFSET","ON","ONLY","OR","ORDER","PLACING","PRIMARY","REFERENCES","RETURNING","SELECT","SESSION_USER","SOME","SYMMETRIC","TABLE","THEN","TO","TRAILING","TRUE_P","UNION","UNIQUE","USER","USING","VARIADIC","WHEN","WHERE","WINDOW","WITH","AUTHORIZATION","BINARY","COLLATION","CONCURRENTLY","CROSS","CURRENT_SCHEMA","FREEZE","FULL","ILIKE","INNER_P","IS","ISNULL","JOIN","LEFT","LIKE","NATURAL","NOTNULL","OUTER_P","OVER","OVERLAPS","RIGHT","SIMILAR","VERBOSE","ABORT_P","ABSOLUTE_P","ACCESS","ACTION","ADD_P","ADMIN","AFTER","AGGREGATE","ALSO","ALTER","ALWAYS","ASSERTION","ASSIGNMENT","AT","ATTRIBUTE","BACKWARD","BEFORE","BEGIN_P","BY","CACHE","CALLED","CASCADE","CASCADED","CATALOG","CHAIN","CHARACTERISTICS","CHECKPOINT","CLASS","CLOSE","CLUSTER","COMMENT","COMMENTS","COMMIT","COMMITTED","CONFIGURATION","CONNECTION","CONSTRAINTS","CONTENT_P","CONTINUE_P","CONVERSION_P","COPY","COST","CSV","CURSOR","CYCLE","DATA_P","DATABASE","DAY_P","DEALLOCATE","DECLARE","DEFAULTS","DEFERRED","DEFINER","DELETE_P","DELIMITER","DELIMITERS","DICTIONARY","DISABLE_P","DISCARD","DOCUMENT_P","DOMAIN_P","DOUBLE_P","DROP","EACH","ENABLE_P","ENCODING","ENCRYPTED","ENUM_P","ESCAPE","EVENT","EXCLUDE","EXCLUDING","EXCLUSIVE","EXECUTE","EXPLAIN","EXTENSION","EXTERNAL","FAMILY","FIRST_P","FOLLOWING","FORCE","FORWARD","FUNCTION","FUNCTIONS","GLOBAL","GRANTED","HANDLER","HEADER_P","HOLD","HOUR_P","IDENTITY_P","IF_P","IMMEDIATE","IMMUTABLE","IMPLICIT_P","INCLUDING","INCREMENT","INDEX","INDEXES","INHERIT","INHERITS","INLINE_P","INSENSITIVE","INSERT","INSTEAD","INVOKER","ISOLATION","KEY","LABEL","LANGUAGE","LARGE_P","LAST_P","LEAKPROOF","LEVEL","LISTEN","LOAD","LOCAL","LOCATION","LOCK_P","MAPPING","MATCH","MATCHED","MATERIALIZED","MAXVALUE","MERGE","MINUTE_P","MINVALUE","MODE","MONTH_P","MOVE","NAME_P","NAMES","NEXT","NO","NOTHING","NOTIFY","NOWAIT","NULLS_P","OBJECT_P","OF","OFF","OIDS","OPERATOR","OPTION","OPTIONS","OWNED","OWNER","PARSER","PARTIAL","PARTITION","PASSING","PASSWORD","PLANS","PRECEDING","PREPARE","PREPARED","PRESERVE","PRIOR","PRIVILEGES","PROCEDURAL","PROCEDURE","PROGRAM","QUOTE","RANGE","READ","REASSIGN","RECHECK","RECURSIVE","REF","REFRESH","REINDEX","RELATIVE_P","RELEASE","RENAME","REPEATABLE","REPLACE","REPLICA","RESET","RESTART","RESTRICT","RETURNS","REVOKE","ROLE","ROLLBACK","ROWS","RULE","SAVEPOINT","SCHEMA","SCROLL","SEARCH","SECOND_P","SECURITY","SEQUENCE","SEQUENCES","SERIALIZABLE","SERVER","SESSION","SET","SHARE","SHOW","SIMPLE","SNAPSHOT","STABLE","STANDALONE_P","START","STATEMENT","STATISTICS","STDIN","STDOUT","STORAGE","STRICT_P","STRIP_P","SYSID","SYSTEM_P","TABLES","TABLESPACE","TEMP","TEMPLATE","TEMPORARY","TEXT_P","TRANSACTION","TRIGGER","TRUNCATE","TRUSTED","TYPE_P","TYPES_P","UNBOUNDED","UNCOMMITTED","UNENCRYPTED","UNKNOWN","UNLISTEN","UNLOGGED","UNTIL","UPDATE","VACUUM","VALID","VALIDATE","VALIDATOR","VARYING","VERSION_P","VIEW","VOLATILE","WHITESPACE_P","WITHOUT","WORK","WRAPPER","WRITE","XML_P","YEAR_P","YES_P","ZONE","BETWEEN","BIGINT","BIT","BOOLEAN_P","CHAR_P","CHARACTER","COALESCE","DEC","DECIMAL_P","EXISTS","EXTRACT","FLOAT_P","GREATEST","INOUT","INT_P","INTEGER","INTERVAL","LEAST","NATIONAL","NCHAR","NONE","NULLIF","NUMERIC","OVERLAY","POSITION","PRECISION","REAL","ROW","SETOF","SMALLINT","SUBSTRING","TIME","TIMESTAMP","TREAT","TRIM","VALUES","VARCHAR","XMLATTRIBUTES","XMLCOMMENT","XMLAGG","XML_IS_WELL_FORMED","XML_IS_WELL_FORMED_DOCUMENT","XML_IS_WELL_FORMED_CONTENT","XPATH","XPATH_EXISTS","XMLCONCAT","XMLELEMENT","XMLEXISTS","XMLFOREST","XMLPARSE","XMLPI","XMLROOT","XMLSERIALIZE","CALL","CURRENT_P","ATTACH","DETACH","EXPRESSION","GENERATED","LOGGED","STORED","INCLUDE","ROUTINE","TRANSFORM","IMPORT_P","POLICY","METHOD","REFERENCING","NEW","OLD","VALUE_P","SUBSCRIPTION","PUBLICATION","OUT_P","END_P","ROUTINES","SCHEMAS","PROCEDURES","INPUT_P","SUPPORT","PARALLEL","SQL_P","DEPENDS","OVERRIDING","CONFLICT","SKIP_P","LOCKED","TIES","ROLLUP","CUBE","GROUPING","SETS","TABLESAMPLE","ORDINALITY","XMLTABLE","COLUMNS","XMLNAMESPACES","ROWTYPE","NORMALIZED","WITHIN","FILTER","GROUPS","OTHERS","NFC","NFD","NFKC","NFKD","UESCAPE","VIEWS","NORMALIZE","DUMP","PRINT_STRICT_PARAMS","VARIABLE_CONFLICT","ERROR","USE_VARIABLE","USE_COLUMN","ALIAS","CONSTANT","PERFORM","GET","DIAGNOSTICS","STACKED","ELSIF","WHILE","REVERSE","FOREACH","SLICE","EXIT","RETURN","QUERY","RAISE","SQLSTATE","DEBUG","LOG","INFO","NOTICE","WARNING","EXCEPTION","ASSERT","LOOP","OPEN","ABS","CBRT","CEIL","CEILING","DEGREES","DIV","EXP","FACTORIAL","FLOOR","GCD","LCM","LN","LOG10","MIN_SCALE","MOD","PI","POWER","RADIANS","ROUND","SCALE","SIGN","SQRT","TRIM_SCALE","TRUNC","WIDTH_BUCKET","RANDOM","SETSEED","ACOS","ACOSD","ASIN","ASIND","ATAN","ATAND","ATAN2","ATAN2D","COS","COSD","COT","COTD","SIN","SIND","TAN","TAND","SINH","COSH","TANH","ASINH","ACOSH","ATANH","BIT_LENGTH","CHAR_LENGTH","CHARACTER_LENGTH","LOWER","OCTET_LENGTH","UPPER","ASCII","BTRIM","CHR","CONCAT","CONCAT_WS","FORMAT","INITCAP","LENGTH","LPAD","LTRIM","MD5","PARSE_IDENT","PG_CLIENT_ENCODING","QUOTE_IDENT","QUOTE_LITERAL","QUOTE_NULLABLE","REGEXP_COUNT","REGEXP_INSTR","REGEXP_LIKE","REGEXP_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","REGEXP_SUBSTR","REPEAT","RPAD","RTRIM","SPLIT_PART","STARTS_WITH","STRING_TO_ARRAY","STRING_TO_TABLE","STRPOS","SUBSTR","TO_ASCII","TO_HEX","TRANSLATE","UNISTR","AGE","CLOCK_TIMESTAMP","DATE_BIN","DATE_PART","DATE_TRUNC","ISFINITE","JUSTIFY_DAYS","JUSTIFY_HOURS","JUSTIFY_INTERVAL","MAKE_DATE","MAKE_INTERVAL","MAKE_TIME","MAKE_TIMESTAMP","MAKE_TIMESTAMPTZ","NOW","STATEMENT_TIMESTAMP","TIMEOFDAY","TRANSACTION_TIMESTAMP","TO_TIMESTAMP","TO_CHAR","TO_DATE","TO_NUMBER","Identifier","QuotedIdentifier","UnterminatedQuotedIdentifier","InvalidQuotedIdentifier","InvalidUnterminatedQuotedIdentifier","UnicodeQuotedIdentifier","UnterminatedUnicodeQuotedIdentifier","InvalidUnicodeQuotedIdentifier","InvalidUnterminatedUnicodeQuotedIdentifier","StringConstant","UnterminatedStringConstant","UnicodeEscapeStringConstant","UnterminatedUnicodeEscapeStringConstant","BeginDollarStringConstant","BinaryStringConstant","UnterminatedBinaryStringConstant","InvalidBinaryStringConstant","InvalidUnterminatedBinaryStringConstant","HexadecimalStringConstant","UnterminatedHexadecimalStringConstant","InvalidHexadecimalStringConstant","InvalidUnterminatedHexadecimalStringConstant","Integral","NumericFail","Numeric","PLSQLVARIABLENAME","PLSQLIDENTIFIER","Whitespace","Newline","LineComment","BlockComment","UnterminatedBlockComment","MetaCommand","EndMetaCommand","ErrorCharacter","EscapeStringConstant","UnterminatedEscapeStringConstant","InvalidEscapeStringConstant","InvalidUnterminatedEscapeStringConstant","AfterEscapeStringConstantMode_NotContinued","AfterEscapeStringConstantWithNewlineMode_NotContinued","DollarText","EndDollarStringConstant","AfterEscapeStringConstantWithNewlineMode_Continued"],Xi.ruleNames=["root","plsqlRoot","statements","statement","plsqlConsoleCommand","callStatement","optionalWith","optionalRoleList","alterOptionalRoleList","alterRoleElemement","createRoleElement","createRoleStatement","alterRoleStatement","optionalInDatabase","alterRoleSetStatement","dropRoleStatement","addOrDrop","createSchemaStatement","optionalSchemaName","optionalSchemaList","schemaStatement","variableSetStatement","setStatementEnding","genericSetClause","setStatementMore","variableName","variableList","variableValue","isoLevel","booleanOrString","zoneValue","optionalEncoding","nonReservedWordOrSconst","variableResetStatement","resetClauseRest","genericResetClause","setResetClause","functionSetResetClause","variableShowStatement","setConstraintsStatement","constraintsSetList","constraintsSetMode","checkpointStatement","discardStatement","alterTableStatement","alterTableCommands","partitionCommand","indexPartitionCommand","alterTableCommand","alterColumnDefault","optionalDropBehavior","optionalCollateClause","alterUsing","replicaIdentity","relOptions","optionalRelOptions","relOptionList","relOptionElem","alterIdentityColumnOptionList","alterIdentityColumnOption","partitionBoundSpecification","hashPartitionBoundElement","hashPartitionBound","alterCompositeTypeStatement","alterTypeCommands","alterTypeCommand","closePortalStatement","copyStatement","fromOrTo","copyFileName","copyOptions","copyOptionsItem","copyDelimiter","copyGenericOptionList","copyGenericOptionElem","copyGenericOptionArgument","createStatement","temporaryOption","optionalTableElementList","optionalTypedTableElementList","tableElementList","typedTableElementList","tableElement","typedTableElement","columnDefinition","columnOptions","columnQualifierList","columnConstraint","columnConstraintElement","generatedWhen","constraintAttribute","tableLikeClause","tableLikeOptionList","tableLikeOption","tableConstraint","constraintElement","columnListWithParentheses","columnList","columnElement","optionalColumnListInclude","matchClause","exclusionConstraintList","exclusionConstraintElement","exclusionWhereClause","keyActions","onKeyUpdateClause","onKeyDeleteClause","keyAction","inheritClause","optionalPartitionSpecification","partitionSpecification","partitionElements","partitionElement","optionalTableAccessMethodClause","with","onCommitOption","optionalTablespace","usingIndexTablespace","existingIndex","createStatsStatement","alterStatsStatement","createAsStatement","createAsTarget","withData","createMaterializedViewStatement","createMaterializedViewTarget","refreshMaterializedViewStatement","createSequenceStatement","alterSequenceStatement","optionalParenthesizedSeqOptionsList","sequenceOptionList","sequenceOptionItem","numericOnly","numericOnlyList","createProcedureLangStatement","handlerName","optionalInlineHandler","validatorClause","optionalProcedural","createTablespaceStatement","optionalTablespaceOwner","dropTablespaceStatement","createExtensionStatement","createExtensionOptionItem","alterExtensionStatement","alterExtensionOptionItem","alterExtensionContentsStatement","createForeignDataWrapperStatement","forwardOption","forwardOptions","alterForeignDataWrapperStatement","createGenericOptions","genericOptionList","alterGenericOptions","alterGenericOptionList","alterGenericOptionElem","genericOptionElement","genericOptionName","genericOptionArgument","createForeignServerStatement","optionalType","foreignServerVersion","alterForeignServerStatement","createForeignTableStatement","importForeignSchemaStatement","importQualificationType","importQualification","createUserMappingStatement","authIdentifier","dropUserMappingStatement","alterUserMappingStatement","createPolicyStatement","alterPolicyStatement","rowSecurityOptionalExpression","rowSecurityOptionalWithCheck","rowSecurityOptionalToUser","rowSecurityDefaultPermissive","rowSecurityDefaultForCmd","rowSecurityCommand","createAccessMethodStatement","accessMethodType","createTriggerStatement","triggerActionTime","triggerEvents","triggerOneEvent","triggerReferencing","triggerTransitions","triggerTransition","transitionOldOrNew","transitionRowOrTable","transitionRelName","triggerForSpec","triggerForType","triggerWhen","functionOrProcedure","triggerFunctionArguments","triggerFunctionArgument","optionalConstraintFromTable","constraintAttributeSpecification","constraintAttributeElement","createEventTriggerStatement","eventTriggerWhenList","eventTriggerWhenItem","eventTriggerValueList","alterEventTriggerStatement","enableTrigger","createAssertionStatement","defineStatement","definition","definitionElement","definitionArgument","oldAggregateDefinition","oldAggregateElement","enumValueList","alterEnumStatement","optionalIfNotExists","createOperatorClassStatement","operatorClassItemList","operatorClassItem","optionalOperatorFamily","operatorClassPurpose","createOperatorFamilyStatement","alterOperatorFamilyStatement","operatorClassDropList","operatorClassDrop","dropOperatorClassStatement","dropOperatorFamilyStatement","dropOwnedStatement","reassignOwnedStatement","dropStatement","objectTypeAnyName","objectTypeName","dropTypeName","objectTypeNameOnAnyName","anyNameList","anyName","attributes","typeNameList","truncateStatement","optionalRestartSequences","commentStatement","commentText","securityLabelStatement","optionalProvider","securityLabel","fetchStatement","fetchArguments","fromOrIn","optionalFromOrIn","grantStatement","revokeStatement","privileges","privilegeList","privilege","privilegeTarget","granteeList","grantee","optionalWithGrantOption","grantPrivilegeStatement","revokePrivilegeStatement","optionalGrantAdminOption","optionalGrantedBy","alterDefaultPrivilegesStatement","defultPrivilegeOption","defaultPrivelegeAction","defultPrivilegeTarget","indexStatement","optionalAccessMethodClause","indexParameters","indexElemOptions","indexElement","optionalInclude","optionalCollate","optionalClass","optionalAscOrDesc","optionalNullsOrder","createFunctionStatement","optionalOrReplace","functionArgumentsList","functionWithArgumentTypesList","functionWithArgumentTypes","functionArgumentsWithDefaultsList","functionArgumentWithDefault","functionArgument","argumentClass","parameterName","functionReturn","functionType","aggregateArguments","aggregateArgumentsList","aggregateWithArgumentTypes","aggregateWithArgumentTypesList","createFunctionOptionList","commonFunctionOptionItem","createFunctionOptionItem","functionAs","transformTypeList","optionalDefinition","tableFunctionColumn","tableFunctionColumnList","alterFunctionStatement","removeFunctionStatement","removeAggregateStatement","removeOperatorStatement","operatorArgumentTypes","anyOperator","operatorWithArgumentTypesList","operatorWithArgumentTypes","doStatement","doStatementOptionsList","doStatementOptionItem","createCastStatement","castContext","dropCastStatement","optionalIfExists","createTransformStatement","transformElementList","dropTransformStatement","reindexStatement","reindexTargetType","reindexOptionList","reindexOptionElement","alterTablespaceStatement","renameStatement","optionalColumn","optionalSetData","alterObjectDependsStatement","alterObjectSchemaStatement","alterOperatorStatement","operatorDefinitionList","operatorDefinitionElement","operatorDefinitionArgument","alterTypeStatement","alterOwnerStatement","createPublicationStatement","optionalPublicationForTables","publicationForTables","alterPublicationStatement","createSubscriptionStatement","publicationNameList","publicationNameItem","alterSubscriptionStatement","dropSubscriptionStatement","ruleStatement","ruleActionList","ruleActionMulti","ruleActionStatement","ruleActionStatementOrEmpty","event","optionalInstead","notifyStatement","notifyPayload","listenStatement","unlistenStatement","transactionStatement","optionalTransaction","transactionModeItem","transactionModeList","optionalTransactionChain","viewStatement","optionalCheckOption","loadStatement","createDatabaseStatement","createDatabaseOptionList","createDatabaseOptionItem","createDatabaseOptionName","alterDatabaseStatement","alterDatabaseSetStatement","dropDatabaseStatement","alterCollationStatement","alterSystemStatement","createDomainStatement","alterDomainStatement","alterDomainCommand","optionalAs","altertsDictionaryStatement","altertsConfigurationStatement","createConversionStatement","clusterStatement","clusterIndexSpecification","vacuumStatement","analyzeStatement","vacuumAnalyzeOptionList","analyzeKeyword","vacuumAnalyzeOptionElement","vacuumAnalyzeOptionName","vacuumAnalyzeOptionArgument","optionalVerbose","optionalNameList","vacuumRelation","optionalVacuumRelationList","explainStatement","explainableStatement","explainOptionElement","explainOptionName","explainOptionArgument","prepareStatement","prepareTypeClause","preparableStatement","executeStatement","executeParameterClause","deallocateStatement","insertStatement","insertTarget","insertRest","overrideKind","insertColumnList","insertColumnItem","optionalOnConflict","optionalConflictExpr","returningClause","mergeStatement","mergeInsertClause","mergeUpdateClause","mergeDeleteClause","deleteStatement","usingClause","lockStatement","optionalLock","lockType","optionalNowait","optionalNowaitOrSkip","updateStatement","setClauseList","setClause","setTarget","declareCursorStatement","cursorName","optionalHold","selectStatement","selectWithParenthesis","selectWithoutParenthesis","selectClause","simpleSelectIntersect","simpleSelectStart","simpleSelectPramary","withClause","commonTableExpression","optionalMaterialized","intoClause","optionalTemporaryTableName","optionalTable","allOrDistinct","distinctClause","allClause","optionalSortClause","sortClause","sortByList","sortBy","selectLimit","optionalSelectLimit","limitClause","offsetClause","selectLimitValue","selectOffsetValue","selectFetchFirstValue","anyConst","rowOrRows","firstOrNext","groupClause","groupByList","groupByItem","havingClause","forLockingClause","forLockingItem","forLockingStrength","lockedRelationsList","valuesClause","fromClause","fromList","nonAnsiJoin","tableReference","aliasClause","optionalAliasClause","tableAliasClause","functionAliasClause","joinType","joinQualifier","viewName","relationExpression","relationExpressionList","relationExpressionOptionalAlias","tableSampleClause","functionTable","rowsFromItem","optionalColumnDefinitionList","optionalOrdinality","whereClause","whereOrCurrentClause","optionalTableFunctionElementList","tableFunctionElementList","tableFunctionElement","xmlTable","xmlTableColumnElement","xmlTableColumnOptionList","xmlTableColumnOptionElement","xmlNamespaceList","xmlNamespaceElement","typeName","simpleTypeName","constTypeName","genericType","optionalTypeModifiers","numeric","optionalFloat","bit","constBit","bitWithLength","bitWithoutLength","character","constCharacter","characterChar","optionalVarying","constDateTime","constInterval","optionalTimezone","optionalInterval","intervalSecond","optionalEscape","expression1","expression1Qualifier","expression1LessLess","expression1Or","expression1And","expression1Between","expression1In","expression1UnaryNot","expression1IsNull","expression1IsNot","expression1Compare","expression1Like","expression1qualifierOperator","expression1UnaryQualifierOperator","expression1Add","expressionMultiply","expression1Caret","expression1UnarySign","expression1AtTimeZone","expression1Collate","expression1Typecast","expression2","expression3","plsqlVariableName","functionApplication","functionExpression","functionExpressionWindowless","functionExpressionCommonSubexpr","xmlRootVersion","optionalXmlRootStandalone","xmlAttributes","xmlAttributeList","xmlAttributeElement","documentOrContent","xmlWhitespaceOption","xmlExistsArgument","xmlPassingMech","withinGroupClause","filterClause","windowClause","windowDefinitionList","windowDefinition","overClause","windowSpecification","optionalExistingWindowName","optionalPartitionClause","optionalFrameClause","frameExtent","frameBound","optionalWindowExclusionClause","row","explicitRow","implicitRow","subType","allOperator","mathOperator","operatorQualifier","allOperatorQualifier","subqueryOperator","expressionList","functionArgumentList","functionArgumentExpression","typeList","arrayExpression","arrayExpressionList","extractList","extractArgument","unicodeNormalForm","overlayList","positionList","substrList","trimList","inExpression","caseExpression","whenClauseList","whenClause","caseDefault","caseArg","columnReference","indirectionElement","indirection","optionalIndirection","optionalTargetList","targetList","targetElement","qualifiedNameList","databaseName","databaseNameList","schemaName","schemaNameList","indexName","indexNameList","triggerName","constraintName","sequenceName","sequenceNameList","qualifiedName","nameList","name","attributeName","fileName","functionName","aExpressionConst","xconst","bconst","fconst","iconst","sconst","anySconst","optionalUescape","signedIconst","roleName","roleNameList","columnId","tableAlias","typeFunctionName","nonReservedWord","columnLabel","identifier","plsqlIdentifier","unreservedKeyword","columnNameKeyword","typeFunctionNameKeyword","reservedKeyword","builtinFunctionName","plsqlFunction","computeOptions","computeOption","sharp","optionValue","optionalSemi","plsqlBlock","declareSection","declareStart","declareStatements","labelDeclaration","declareStatement","declareStatement2","optionalScrollable","declareCursorQuery","declareCursorArgs","declareCursorArglist","declareCursorArg","declareIsOrFor","declareAliasItem","declareVarname","declareConst","declareDatatype","declareCollate","declareNotNull","declareDefaultValue","declareDefaultKey","assignOperator","procedureSection","proceduralStatement","statementPerform","statementCall","optionalExpressionList","statementAssign","statementGetDiagram","optionalGetDiagramArea","getDiagramList","getDiagramListItem","getDiagramItem","getDiagramTarget","assignVariable","statementIf","statementElsifs","statementElse","statementCase","optionalExpressionUntilWhen","caseWhenList","caseWhen","optionalCaseElse","statementLoop","statementWhile","statementFor","forControl","optionalForUsingExpression","optionalCursorParameters","optionalReverse","optionalByExpression","forVariable","statementForeachA","foreachSlice","statementExit","exitType","statementReturn","optionalReturnResult","statementRaise","optionalStatementRaiseLevel","optionalRaiseList","optionalRaiseUsing","optionalRaiseUsingElement","statementAssert","optionalStatementAssertMessage","loopBody","statementExecSql","statementDynExecute","optionalExecuteUsing","optionalExecuteUsingList","optionalExecuteInto","statementOpen","optionalOpenBoundListItem","statementFetch","intoTarget","optionalCursorFrom","optionalFetchDirection","statementMove","statementClose","statementNull","statementCommit","statementRollback","plsqlOptionalTransactionChain","statementSet","cursorVariable","exceptionSection","procedureExceptions","procedureException","procedureConditions","procedureCondition","optionalBlockLabel","optionalLoopLabel","optionalLabel","optionalExitCondition","anyIdentifier","plsqlUnreservedKeyword","sqlExpression","expressionUntilThen","expressionUntilSemi","expressionUntilRightbracket","expressionUntilLoop","makeExecuteSqlStatement","optionalReturningClauseInto","roleOrAliases"],Xi._serializedATN=[4,1,679,10614,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350,2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356,7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361,2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367,7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372,2,373,7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378,7,378,2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383,2,384,7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389,7,389,2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394,2,395,7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400,7,400,2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405,2,406,7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411,7,411,2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,2,417,7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421,7,421,2,422,7,422,2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427,7,427,2,428,7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433,7,433,2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438,2,439,7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444,7,444,2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449,2,450,7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455,7,455,2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460,2,461,7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466,7,466,2,467,7,467,2,468,7,468,2,469,7,469,2,470,7,470,2,471,7,471,2,472,7,472,2,473,7,473,2,474,7,474,2,475,7,475,2,476,7,476,2,477,7,477,2,478,7,478,2,479,7,479,2,480,7,480,2,481,7,481,2,482,7,482,2,483,7,483,2,484,7,484,2,485,7,485,2,486,7,486,2,487,7,487,2,488,7,488,2,489,7,489,2,490,7,490,2,491,7,491,2,492,7,492,2,493,7,493,2,494,7,494,2,495,7,495,2,496,7,496,2,497,7,497,2,498,7,498,2,499,7,499,2,500,7,500,2,501,7,501,2,502,7,502,2,503,7,503,2,504,7,504,2,505,7,505,2,506,7,506,2,507,7,507,2,508,7,508,2,509,7,509,2,510,7,510,2,511,7,511,2,512,7,512,2,513,7,513,2,514,7,514,2,515,7,515,2,516,7,516,2,517,7,517,2,518,7,518,2,519,7,519,2,520,7,520,2,521,7,521,2,522,7,522,2,523,7,523,2,524,7,524,2,525,7,525,2,526,7,526,2,527,7,527,2,528,7,528,2,529,7,529,2,530,7,530,2,531,7,531,2,532,7,532,2,533,7,533,2,534,7,534,2,535,7,535,2,536,7,536,2,537,7,537,2,538,7,538,2,539,7,539,2,540,7,540,2,541,7,541,2,542,7,542,2,543,7,543,2,544,7,544,2,545,7,545,2,546,7,546,2,547,7,547,2,548,7,548,2,549,7,549,2,550,7,550,2,551,7,551,2,552,7,552,2,553,7,553,2,554,7,554,2,555,7,555,2,556,7,556,2,557,7,557,2,558,7,558,2,559,7,559,2,560,7,560,2,561,7,561,2,562,7,562,2,563,7,563,2,564,7,564,2,565,7,565,2,566,7,566,2,567,7,567,2,568,7,568,2,569,7,569,2,570,7,570,2,571,7,571,2,572,7,572,2,573,7,573,2,574,7,574,2,575,7,575,2,576,7,576,2,577,7,577,2,578,7,578,2,579,7,579,2,580,7,580,2,581,7,581,2,582,7,582,2,583,7,583,2,584,7,584,2,585,7,585,2,586,7,586,2,587,7,587,2,588,7,588,2,589,7,589,2,590,7,590,2,591,7,591,2,592,7,592,2,593,7,593,2,594,7,594,2,595,7,595,2,596,7,596,2,597,7,597,2,598,7,598,2,599,7,599,2,600,7,600,2,601,7,601,2,602,7,602,2,603,7,603,2,604,7,604,2,605,7,605,2,606,7,606,2,607,7,607,2,608,7,608,2,609,7,609,2,610,7,610,2,611,7,611,2,612,7,612,2,613,7,613,2,614,7,614,2,615,7,615,2,616,7,616,2,617,7,617,2,618,7,618,2,619,7,619,2,620,7,620,2,621,7,621,2,622,7,622,2,623,7,623,2,624,7,624,2,625,7,625,2,626,7,626,2,627,7,627,2,628,7,628,2,629,7,629,2,630,7,630,2,631,7,631,2,632,7,632,2,633,7,633,2,634,7,634,2,635,7,635,2,636,7,636,2,637,7,637,2,638,7,638,2,639,7,639,2,640,7,640,2,641,7,641,2,642,7,642,2,643,7,643,2,644,7,644,2,645,7,645,2,646,7,646,2,647,7,647,2,648,7,648,2,649,7,649,2,650,7,650,2,651,7,651,2,652,7,652,2,653,7,653,2,654,7,654,2,655,7,655,2,656,7,656,2,657,7,657,2,658,7,658,2,659,7,659,2,660,7,660,2,661,7,661,2,662,7,662,2,663,7,663,2,664,7,664,2,665,7,665,2,666,7,666,2,667,7,667,2,668,7,668,2,669,7,669,2,670,7,670,2,671,7,671,2,672,7,672,2,673,7,673,2,674,7,674,2,675,7,675,2,676,7,676,2,677,7,677,2,678,7,678,2,679,7,679,2,680,7,680,2,681,7,681,2,682,7,682,2,683,7,683,2,684,7,684,2,685,7,685,2,686,7,686,2,687,7,687,2,688,7,688,2,689,7,689,2,690,7,690,2,691,7,691,2,692,7,692,2,693,7,693,2,694,7,694,2,695,7,695,2,696,7,696,2,697,7,697,2,698,7,698,2,699,7,699,2,700,7,700,2,701,7,701,2,702,7,702,2,703,7,703,2,704,7,704,2,705,7,705,2,706,7,706,2,707,7,707,2,708,7,708,2,709,7,709,2,710,7,710,2,711,7,711,2,712,7,712,2,713,7,713,2,714,7,714,2,715,7,715,2,716,7,716,2,717,7,717,2,718,7,718,2,719,7,719,2,720,7,720,2,721,7,721,2,722,7,722,2,723,7,723,2,724,7,724,2,725,7,725,2,726,7,726,2,727,7,727,2,728,7,728,2,729,7,729,2,730,7,730,2,731,7,731,2,732,7,732,2,733,7,733,2,734,7,734,2,735,7,735,2,736,7,736,2,737,7,737,2,738,7,738,2,739,7,739,2,740,7,740,2,741,7,741,2,742,7,742,2,743,7,743,2,744,7,744,2,745,7,745,2,746,7,746,2,747,7,747,2,748,7,748,2,749,7,749,2,750,7,750,2,751,7,751,2,752,7,752,2,753,7,753,1,0,3,0,1510,8,0,1,0,1,0,1,1,1,1,1,2,1,2,3,2,1518,8,2,1,2,1,2,1,2,1,2,3,2,1524,8,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,1648,8,3,1,4,1,4,3,4,1652,8,4,1,5,1,5,1,5,1,6,1,6,3,6,1659,8,6,1,7,5,7,1662,8,7,10,7,12,7,1665,9,7,1,8,5,8,1668,8,8,10,8,12,8,1671,9,8,1,9,1,9,1,9,3,9,1676,8,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,3,9,1692,8,9,1,10,1,10,1,10,1,10,1,10,1,10,3,10,1700,8,10,1,10,1,10,1,10,3,10,1705,8,10,1,11,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,3,13,1723,8,13,1,14,1,14,1,14,3,14,1728,8,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,3,15,1738,8,15,1,15,1,15,1,16,1,16,1,17,1,17,1,17,1,17,1,17,3,17,1749,8,17,1,17,1,17,1,17,1,17,1,17,3,17,1756,8,17,1,17,1,17,1,18,1,18,3,18,1762,8,18,1,19,5,19,1765,8,19,10,19,12,19,1768,9,19,1,20,1,20,1,20,1,20,1,20,1,20,3,20,1776,8,20,1,21,1,21,3,21,1780,8,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,1792,8,22,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,1824,8,24,1,25,1,25,1,25,5,25,1829,8,25,10,25,12,25,1832,9,25,1,26,1,26,1,26,5,26,1837,8,26,10,26,12,26,1840,9,26,1,27,1,27,3,27,1844,8,27,1,28,1,28,1,28,1,28,1,28,3,28,1851,8,28,1,29,1,29,1,29,1,29,3,29,1857,8,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,1874,8,30,1,31,1,31,1,31,3,31,1879,8,31,1,32,1,32,3,32,1883,8,32,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,3,34,1896,8,34,1,35,1,35,3,35,1900,8,35,1,36,1,36,1,36,3,36,1905,8,36,1,37,1,37,1,37,3,37,1910,8,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,1922,8,38,1,39,1,39,1,39,1,39,1,39,1,40,1,40,3,40,1931,8,40,1,41,1,41,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,44,3,44,1944,8,44,1,44,1,44,1,44,3,44,1949,8,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1960,8,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1971,8,44,1,44,1,44,1,44,3,44,1976,8,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1987,8,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1998,8,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,2008,8,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,2023,8,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,2035,8,44,1,44,1,44,1,44,3,44,2040,8,44,1,45,1,45,1,45,5,45,2045,8,45,10,45,12,45,2048,9,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,2058,8,46,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,4,48,2207,8,48,11,48,12,48,2208,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,2218,8,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,2238,8,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,2305,8,48,1,49,1,49,1,49,1,49,1,49,3,49,2312,8,49,1,50,1,50,1,50,3,50,2317,8,50,1,51,1,51,1,51,3,51,2322,8,51,1,52,1,52,1,52,3,52,2327,8,52,1,53,1,53,1,53,1,53,1,53,1,53,3,53,2335,8,53,1,54,1,54,1,54,1,54,1,55,1,55,1,55,3,55,2344,8,55,1,56,1,56,1,56,5,56,2349,8,56,10,56,12,56,2352,9,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57,2361,8,57,3,57,2363,8,57,1,58,4,58,2366,8,58,11,58,12,58,2367,1,59,1,59,1,59,1,59,3,59,2374,8,59,1,59,1,59,1,59,1,59,3,59,2380,8,59,3,59,2382,8,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60,2410,8,60,1,61,1,61,1,61,1,62,1,62,1,62,5,62,2418,8,62,10,62,12,62,2421,9,62,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,5,64,2431,8,64,10,64,12,64,2434,9,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,3,65,2445,8,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,3,65,2459,8,65,1,66,1,66,1,66,3,66,2464,8,66,1,67,1,67,3,67,2468,8,67,1,67,1,67,1,67,1,67,3,67,2474,8,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,2488,8,67,1,67,1,67,1,67,1,67,3,67,2494,8,67,1,68,1,68,1,69,1,69,1,69,3,69,2501,8,69,1,70,5,70,2504,8,70,10,70,12,70,2507,9,70,1,70,1,70,1,70,1,70,3,70,2513,8,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,3,71,2550,8,71,1,72,3,72,2553,8,72,1,72,1,72,1,72,3,72,2558,8,72,1,73,1,73,1,73,5,73,2563,8,73,10,73,12,73,2566,9,73,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,5,75,2578,8,75,10,75,12,75,2581,9,75,1,75,1,75,1,75,3,75,2586,8,75,1,76,1,76,1,76,1,76,1,76,1,76,3,76,2594,8,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,3,76,2627,8,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,3,77,2637,8,77,1,78,1,78,3,78,2641,8,78,1,79,1,79,1,79,1,79,1,79,3,79,2648,8,79,1,80,1,80,1,80,5,80,2653,8,80,10,80,12,80,2656,9,80,1,81,1,81,1,81,5,81,2661,8,81,10,81,12,81,2664,9,81,1,82,1,82,1,82,3,82,2669,8,82,1,83,1,83,3,83,2673,8,83,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,3,85,2683,8,85,1,85,1,85,1,86,5,86,2688,8,86,10,86,12,86,2691,9,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,3,87,2701,8,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,3,88,2721,8,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,3,88,2735,8,88,1,88,1,88,1,88,1,88,1,88,1,88,3,88,2743,8,88,1,89,1,89,1,89,3,89,2748,8,89,1,90,1,90,1,90,1,90,1,90,3,90,2755,8,90,1,91,1,91,1,91,1,91,1,92,1,92,5,92,2763,8,92,10,92,12,92,2766,9,92,1,93,1,93,1,94,1,94,1,94,1,94,1,94,3,94,2775,8,94,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,3,95,2795,8,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,3,95,2810,8,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,3,95,2835,8,95,1,96,1,96,1,96,1,96,1,96,3,96,2842,8,96,1,97,1,97,1,97,5,97,2847,8,97,10,97,12,97,2850,9,97,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,99,3,99,2860,8,99,1,100,1,100,1,100,3,100,2865,8,100,1,101,1,101,1,101,5,101,2870,8,101,10,101,12,101,2873,9,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,3,102,2883,8,102,1,103,1,103,1,103,1,103,1,103,1,103,3,103,2891,8,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,3,104,2902,8,104,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,3,107,2918,8,107,1,108,1,108,1,108,1,108,1,108,1,108,3,108,2926,8,108,1,109,1,109,3,109,2930,8,109,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111,5,111,2942,8,111,10,111,12,111,2945,9,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,3,112,2961,8,112,1,113,1,113,1,113,3,113,2966,8,113,1,114,1,114,1,114,1,114,1,114,3,114,2973,8,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,3,115,2982,8,115,1,115,3,115,2985,8,115,1,116,1,116,1,116,3,116,2990,8,116,1,117,1,117,1,117,1,117,1,117,3,117,2997,8,117,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,3,119,3008,8,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,3,120,3021,8,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,3,121,3034,8,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,3,123,3052,8,123,1,123,3,123,3055,8,123,1,124,1,124,3,124,3059,8,124,1,124,1,124,1,124,1,124,1,124,3,124,3066,8,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,3,126,3083,8,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,127,3,127,3094,8,127,1,127,1,127,3,127,3098,8,127,1,128,1,128,1,128,1,128,3,128,3104,8,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,3,129,3114,8,129,1,130,4,130,3117,8,130,11,130,12,130,3118,1,131,1,131,1,131,1,131,1,131,1,131,1,131,3,131,3128,8,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,3,131,3150,8,131,3,131,3152,8,131,1,132,1,132,1,132,1,132,1,132,1,132,3,132,3160,8,132,1,133,1,133,1,133,5,133,3165,8,133,10,133,12,133,3168,9,133,1,134,1,134,1,134,3,134,3173,8,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,3,134,3182,8,134,3,134,3184,8,134,1,135,1,135,3,135,3188,8,135,1,136,1,136,1,136,3,136,3193,8,136,1,137,1,137,1,137,1,137,3,137,3199,8,137,1,138,1,138,3,138,3203,8,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140,3,140,3216,8,140,1,141,1,141,1,141,1,141,3,141,3222,8,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,3,142,3231,8,142,1,142,1,142,1,142,5,142,3236,8,142,10,142,12,142,3239,9,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,3,143,3248,8,143,1,144,1,144,1,144,1,144,1,144,5,144,3255,8,144,10,144,12,144,3258,9,144,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,3,146,3402,8,146,1,147,1,147,1,147,1,147,1,147,1,147,3,147,3410,8,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,3,148,3422,8,148,1,149,4,149,3425,8,149,11,149,12,149,3426,1,150,1,150,1,150,1,150,1,150,1,150,3,150,3435,8,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,3,150,3446,8,150,1,151,1,151,1,151,1,151,1,151,1,151,3,151,3454,8,151,1,152,1,152,1,152,5,152,3459,8,152,10,152,12,152,3462,9,152,1,153,1,153,1,153,1,153,1,153,1,154,1,154,1,154,5,154,3472,8,154,10,154,12,154,3475,9,154,1,155,1,155,1,155,1,155,1,155,1,155,1,155,3,155,3484,8,155,1,156,1,156,1,156,1,157,1,157,1,158,1,158,1,159,1,159,1,159,1,159,1,159,3,159,3498,8,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,3,159,3514,8,159,1,159,1,159,1,159,1,159,1,159,1,159,3,159,3522,8,159,1,160,1,160,1,160,3,160,3527,8,160,1,161,1,161,1,161,3,161,3532,8,161,1,162,1,162,1,162,1,162,1,162,1,162,3,162,3540,8,162,3,162,3542,8,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,3,163,3600,8,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,3,165,3617,8,165,1,166,1,166,1,166,1,166,1,166,1,166,3,166,3625,8,166,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,3,167,3648,8,167,1,168,1,168,3,168,3652,8,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,3,169,3672,8,169,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,173,1,173,3,173,3709,8,173,1,174,1,174,1,174,1,174,1,174,1,174,1,174,3,174,3718,8,174,1,175,1,175,1,175,3,175,3723,8,175,1,176,1,176,1,176,3,176,3728,8,176,1,177,1,177,1,177,3,177,3733,8,177,1,178,1,178,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,3,181,3786,8,181,1,182,1,182,1,182,1,182,3,182,3792,8,182,1,183,1,183,1,183,5,183,3797,8,183,10,183,12,183,3800,9,183,1,184,1,184,1,184,1,184,1,184,1,184,1,184,3,184,3809,8,184,1,185,1,185,1,185,3,185,3814,8,185,1,186,4,186,3817,8,186,11,186,12,186,3818,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,189,1,189,1,190,1,190,1,191,1,191,3,191,3834,8,191,1,191,1,191,3,191,3838,8,191,1,192,1,192,1,193,1,193,1,193,1,193,1,193,1,193,3,193,3848,8,193,1,194,1,194,1,195,1,195,3,195,3854,8,195,1,195,1,195,5,195,3858,8,195,10,195,12,195,3861,9,195,1,196,1,196,1,196,1,196,3,196,3867,8,196,1,197,1,197,1,197,3,197,3872,8,197,1,198,5,198,3875,8,198,10,198,12,198,3878,9,198,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,3,199,3891,8,199,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,3,200,3919,8,200,1,201,1,201,1,201,5,201,3924,8,201,10,201,12,201,3927,9,201,1,202,1,202,1,202,1,202,1,202,1,202,1,203,1,203,1,203,5,203,3938,8,203,10,203,12,203,3941,9,203,1,204,1,204,1,204,1,204,1,204,1,204,1,205,1,205,1,205,1,205,1,205,1,205,3,205,3955,8,205,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,3,207,4007,8,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,3,207,4074,8,207,1,208,1,208,1,208,1,208,5,208,4080,8,208,10,208,12,208,4083,9,208,1,208,1,208,1,209,1,209,1,209,3,209,4090,8,209,1,210,1,210,1,210,1,210,1,210,1,210,3,210,4098,8,210,1,211,1,211,1,211,1,211,5,211,4104,8,211,10,211,12,211,4107,9,211,1,211,1,211,1,212,1,212,1,212,1,212,1,213,1,213,1,213,5,213,4118,8,213,10,213,12,213,4121,9,213,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,3,214,4160,8,214,1,215,1,215,1,215,1,215,3,215,4166,8,215,1,216,1,216,1,216,1,216,1,216,3,216,4173,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,5,217,4187,8,217,10,217,12,217,4190,9,217,1,218,1,218,1,218,1,218,1,218,3,218,4197,8,218,1,218,1,218,1,218,1,218,1,218,3,218,4204,8,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,3,218,4219,8,218,1,219,1,219,1,219,3,219,4224,8,219,1,220,1,220,1,220,1,220,1,220,1,220,1,220,3,220,4233,8,220,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,3,222,4260,8,222,1,223,1,223,1,223,5,223,4265,8,223,10,223,12,223,4268,9,223,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,3,224,4282,8,224,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,3,225,4302,8,225,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,3,226,4322,8,226,1,227,1,227,1,227,1,227,1,227,1,227,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,229,1,229,1,229,1,229,3,229,4341,8,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,3,229,4350,8,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,3,229,4359,8,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,3,229,4368,8,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,3,229,4377,8,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,3,229,4386,8,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,3,229,4397,8,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,3,229,4442,8,229,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,3,230,4465,8,230,1,231,1,231,1,231,3,231,4470,8,231,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,3,232,4485,8,232,1,233,1,233,1,234,1,234,1,234,5,234,4492,8,234,10,234,12,234,4495,9,234,1,235,1,235,3,235,4499,8,235,1,236,1,236,4,236,4503,8,236,11,236,12,236,4504,1,237,1,237,1,237,5,237,4510,8,237,10,237,12,237,4513,9,237,1,238,1,238,1,238,1,238,1,238,1,238,1,239,1,239,1,239,1,239,1,239,3,239,4526,8,239,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,3,240,4625,8,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,3,240,4712,8,240,1,241,1,241,3,241,4716,8,241,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,3,242,4854,8,242,1,243,1,243,1,243,3,243,4859,8,243,1,244,1,244,3,244,4863,8,244,1,245,1,245,1,245,1,245,3,245,4869,8,245,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,3,246,4937,8,246,1,247,1,247,1,248,1,248,3,248,4943,8,248,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,3,250,4972,8,250,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,3,251,4989,8,251,1,252,1,252,1,252,5,252,4994,8,252,10,252,12,252,4997,9,252,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,3,253,5008,8,253,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,3,254,5048,8,254,1,255,1,255,1,255,5,255,5053,8,255,10,255,12,255,5056,9,255,1,256,1,256,1,256,3,256,5061,8,256,1,257,1,257,1,257,1,257,3,257,5067,8,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,3,259,5093,8,259,1,260,1,260,1,260,1,260,3,260,5099,8,260,1,261,1,261,1,261,1,261,3,261,5105,8,261,1,262,1,262,1,262,1,262,5,262,5111,8,262,10,262,12,262,5114,9,262,1,262,1,262,1,263,1,263,1,263,1,263,1,263,1,263,1,263,3,263,5125,8,263,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,3,264,5154,8,264,1,265,1,265,1,266,1,266,3,266,5160,8,266,1,266,1,266,3,266,5164,8,266,1,266,3,266,5167,8,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,3,266,5182,8,266,1,266,1,266,3,266,5186,8,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,3,266,5203,8,266,1,267,1,267,1,267,3,267,5208,8,267,1,268,1,268,1,268,5,268,5213,8,268,10,268,12,268,5216,9,268,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,3,269,5229,8,269,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,3,270,5242,8,270,1,271,1,271,1,271,1,271,1,271,5,271,5249,8,271,10,271,12,271,5252,9,271,1,271,1,271,1,271,3,271,5257,8,271,1,272,1,272,1,272,3,272,5262,8,272,1,273,1,273,3,273,5266,8,273,1,274,1,274,1,274,3,274,5271,8,274,1,275,1,275,1,275,1,275,1,275,3,275,5278,8,275,1,276,1,276,1,276,1,276,1,276,1,276,3,276,5286,8,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,3,276,5296,8,276,3,276,5298,8,276,1,276,1,276,1,277,1,277,1,277,3,277,5305,8,277,1,278,1,278,1,278,5,278,5310,8,278,10,278,12,278,5313,9,278,1,279,1,279,1,279,5,279,5318,8,279,10,279,12,279,5321,9,279,1,280,1,280,1,280,3,280,5326,8,280,1,280,1,280,1,280,1,280,1,280,3,280,5333,8,280,3,280,5335,8,280,1,281,1,281,1,281,5,281,5340,8,281,10,281,12,281,5343,9,281,1,282,1,282,1,282,3,282,5348,8,282,1,283,1,283,3,283,5352,8,283,1,283,1,283,1,283,1,283,3,283,5358,8,283,1,283,1,283,1,283,3,283,5363,8,283,1,284,1,284,3,284,5367,8,284,1,284,1,284,1,284,3,284,5372,8,284,1,285,1,285,1,285,1,285,3,285,5378,8,285,1,286,1,286,1,287,1,287,3,287,5384,8,287,1,287,1,287,1,287,1,287,3,287,5390,8,287,1,287,1,287,1,287,1,287,3,287,5396,8,287,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,3,288,5409,8,288,1,288,1,288,1,289,1,289,1,289,5,289,5416,8,289,10,289,12,289,5419,9,289,1,290,1,290,1,290,1,291,1,291,1,291,5,291,5427,8,291,10,291,12,291,5430,9,291,1,292,4,292,5433,8,292,11,292,12,292,5434,1,292,1,292,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,3,293,5474,8,293,1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294,3,294,5484,8,294,1,295,1,295,1,295,1,295,1,295,3,295,5491,8,295,1,296,1,296,1,296,1,296,1,296,1,296,1,296,5,296,5500,8,296,10,296,12,296,5503,9,296,1,297,1,297,1,297,3,297,5508,8,297,1,298,1,298,1,298,1,299,1,299,1,299,5,299,5516,8,299,10,299,12,299,5519,9,299,1,300,1,300,1,300,1,300,4,300,5525,8,300,11,300,12,300,5526,1,300,3,300,5530,8,300,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,3,301,5568,8,301,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,3,302,5582,8,302,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,3,303,5596,8,303,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,3,304,5620,8,304,1,305,1,305,1,305,5,305,5625,8,305,10,305,12,305,5628,9,305,1,305,1,305,1,306,1,306,1,306,5,306,5635,8,306,10,306,12,306,5638,9,306,1,307,1,307,1,307,1,308,1,308,1,308,1,309,4,309,5647,8,309,11,309,12,309,5648,1,310,1,310,1,310,3,310,5654,8,310,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,3,311,5690,8,311,1,312,1,312,1,312,1,312,1,312,3,312,5697,8,312,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,314,1,314,1,314,3,314,5712,8,314,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,3,316,5759,8,316,1,317,1,317,1,317,1,317,1,317,1,317,1,317,1,317,1,317,1,318,1,318,1,318,1,318,1,318,3,318,5775,8,318,1,318,1,318,3,318,5779,8,318,1,318,1,318,1,318,1,318,1,318,1,318,1,318,3,318,5788,8,318,1,318,1,318,3,318,5792,8,318,1,318,1,318,1,318,1,318,1,318,1,318,3,318,5800,8,318,1,318,1,318,3,318,5804,8,318,1,318,1,318,1,318,1,318,1,318,1,318,3,318,5812,8,318,1,318,1,318,3,318,5816,8,318,1,318,1,318,1,318,1,318,1,318,1,318,3,318,5824,8,318,1,318,1,318,3,318,5828,8,318,1,318,3,318,5831,8,318,1,319,1,319,1,320,1,320,1,320,5,320,5838,8,320,10,320,12,320,5841,9,320,1,321,1,321,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,3,322,5857,8,322,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,3,323,6029,8,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,3,323,6074,8,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,3,323,6165,8,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,3,323,6296,8,323,1,324,1,324,3,324,6300,8,324,1,325,1,325,1,325,3,325,6305,8,325,1,326,1,326,1,326,1,326,3,326,6311,8,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,3,326,6322,8,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,3,326,6333,8,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,3,326,6346,8,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,3,326,6358,8,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,3,326,6369,8,326,1,326,1,326,1,326,1,326,1,326,3,326,6376,8,326,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,3,327,6524,8,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,3,327,6590,8,327,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,329,1,329,1,329,5,329,6603,8,329,10,329,12,329,6606,9,329,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330,3,330,6616,8,330,1,331,1,331,1,331,1,331,1,331,3,331,6623,8,331,1,332,1,332,1,332,1,332,1,332,1,332,1,332,1,332,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,3,333,6816,8,333,1,334,1,334,1,334,1,334,1,334,1,334,1,335,1,335,3,335,6826,8,335,1,336,1,336,1,336,1,336,1,336,1,336,3,336,6834,8,336,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,3,337,6863,8,337,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,339,1,339,1,339,5,339,6877,8,339,10,339,12,339,6880,9,339,1,340,1,340,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,3,341,6921,8,341,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,3,342,6935,8,342,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,344,1,344,1,344,1,344,1,344,1,344,3,344,6957,8,344,1,345,1,345,1,345,5,345,6962,8,345,10,345,12,345,6965,9,345,1,346,1,346,1,346,1,346,1,346,3,346,6972,8,346,1,347,1,347,3,347,6976,8,347,1,348,1,348,1,349,1,349,1,349,3,349,6983,8,349,1,350,1,350,1,350,1,350,1,351,1,351,1,351,3,351,6992,8,351,1,352,1,352,1,352,1,353,1,353,1,353,1,353,3,353,7001,8,353,1,354,1,354,1,354,1,354,1,354,1,354,1,354,3,354,7010,8,354,1,354,1,354,1,354,3,354,7015,8,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,3,354,7056,8,354,1,355,1,355,1,355,3,355,7061,8,355,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,3,356,7073,8,356,1,357,1,357,3,357,7077,8,357,1,357,5,357,7080,8,357,10,357,12,357,7083,9,357,1,358,1,358,3,358,7087,8,358,1,358,1,358,3,358,7091,8,358,1,359,1,359,1,359,3,359,7096,8,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,3,359,7112,8,359,1,359,1,359,1,359,1,359,1,360,1,360,3,360,7120,8,360,1,360,1,360,1,360,3,360,7125,8,360,1,361,1,361,1,361,1,362,1,362,1,362,1,362,1,362,1,362,1,363,4,363,7137,8,363,11,363,12,363,7138,1,363,3,363,7142,8,363,1,364,1,364,3,364,7146,8,364,1,364,1,364,1,364,3,364,7151,8,364,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,3,365,7161,8,365,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,3,366,7172,8,366,1,367,1,367,1,367,1,367,1,367,1,368,1,368,1,368,1,368,3,368,7183,8,368,1,368,1,368,1,368,1,368,1,368,1,368,5,368,7191,8,368,10,368,12,368,7194,9,368,1,368,1,368,3,368,7198,8,368,1,369,1,369,1,369,1,369,1,369,1,369,1,370,1,370,1,370,1,370,1,370,1,371,1,371,1,371,1,371,1,371,1,371,1,371,1,372,1,372,1,372,1,372,1,372,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,3,373,7236,8,373,1,373,1,373,1,373,1,373,1,373,1,373,3,373,7244,8,373,1,374,1,374,3,374,7248,8,374,1,375,1,375,1,375,1,375,1,375,1,375,1,375,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,3,376,7329,8,376,1,377,1,377,3,377,7333,8,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,3,378,7357,8,378,1,379,1,379,1,379,3,379,7362,8,379,1,380,1,380,3,380,7366,8,380,1,380,3,380,7369,8,380,1,380,1,380,3,380,7373,8,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,3,380,7383,8,380,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381,7395,8,381,1,382,1,382,1,382,5,382,7400,8,382,10,382,12,382,7403,9,382,1,383,1,383,1,384,1,384,1,384,1,385,1,385,3,385,7412,8,385,1,386,1,386,1,386,3,386,7417,8,386,1,387,1,387,3,387,7421,8,387,1,388,1,388,1,388,1,388,1,388,3,388,7428,8,388,1,389,1,389,1,389,1,390,1,390,1,390,5,390,7436,8,390,10,390,12,390,7439,9,390,1,390,3,390,7442,8,390,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,391,5,391,7459,8,391,10,391,12,391,7462,9,391,1,391,1,391,1,391,3,391,7467,8,391,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,3,392,7478,8,392,1,393,1,393,1,393,1,394,1,394,3,394,7485,8,394,1,395,1,395,1,395,3,395,7490,8,395,1,396,1,396,1,396,1,396,1,396,1,396,1,397,1,397,1,397,1,397,1,397,3,397,7503,8,397,1,398,1,398,1,398,1,398,3,398,7509,8,398,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,3,399,7538,8,399,1,400,1,400,1,400,1,400,1,400,3,400,7545,8,400,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,3,401,7557,8,401,1,402,3,402,7560,8,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,403,1,403,1,403,3,403,7572,8,403,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,3,404,7587,8,404,1,404,1,404,1,404,1,404,3,404,7593,8,404,1,405,1,405,1,406,1,406,1,406,5,406,7600,8,406,10,406,12,406,7603,9,406,1,407,1,407,1,407,1,408,1,408,1,408,1,408,1,408,1,408,1,408,1,408,1,408,1,408,3,408,7618,8,408,1,408,3,408,7621,8,408,1,409,1,409,1,409,1,409,1,409,1,409,1,409,1,409,1,409,3,409,7632,8,409,1,410,1,410,1,410,3,410,7637,8,410,1,411,1,411,3,411,7641,8,411,1,411,1,411,3,411,7645,8,411,1,411,1,411,1,411,3,411,7650,8,411,1,411,3,411,7653,8,411,1,411,1,411,1,411,1,411,3,411,7659,8,411,1,411,1,411,3,411,7663,8,411,3,411,7665,8,411,1,411,3,411,7668,8,411,1,412,1,412,1,412,1,412,1,412,3,412,7675,8,412,1,412,3,412,7678,8,412,1,412,1,412,1,412,1,412,1,412,3,412,7685,8,412,1,412,1,412,1,413,1,413,1,413,1,413,3,413,7693,8,413,1,413,3,413,7696,8,413,1,413,1,413,1,413,1,413,1,414,1,414,1,414,3,414,7705,8,414,1,414,1,414,1,415,3,415,7710,8,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,416,1,416,1,416,3,416,7722,8,416,1,417,1,417,1,417,1,417,1,417,1,417,1,418,1,418,1,418,1,418,1,418,3,418,7735,8,418,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,3,419,7746,8,419,1,419,3,419,7749,8,419,1,420,1,420,3,420,7753,8,420,1,421,1,421,1,421,1,421,3,421,7759,8,421,1,422,3,422,7762,8,422,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,423,1,423,1,423,5,423,7775,8,423,10,423,12,423,7778,9,423,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,5,424,7788,8,424,10,424,12,424,7791,9,424,1,424,1,424,1,424,1,424,3,424,7797,8,424,1,425,1,425,1,425,1,426,1,426,1,426,1,426,1,426,1,426,1,426,5,426,7809,8,426,10,426,12,426,7812,9,426,1,426,1,426,1,426,1,426,1,426,1,427,1,427,1,428,1,428,1,428,1,428,1,428,3,428,7826,8,428,1,429,1,429,3,429,7830,8,429,1,430,1,430,1,430,1,430,1,430,1,430,1,430,1,430,3,430,7840,8,430,1,431,1,431,1,431,1,431,1,431,1,431,1,431,3,431,7849,8,431,3,431,7851,8,431,1,431,1,431,1,431,1,431,1,431,1,431,1,431,1,431,3,431,7861,8,431,3,431,7863,8,431,3,431,7865,8,431,1,432,1,432,1,432,1,432,1,432,5,432,7872,8,432,10,432,12,432,7875,9,432,1,433,1,433,1,433,1,433,1,433,5,433,7882,8,433,10,433,12,433,7885,9,433,1,434,1,434,3,434,7889,8,434,1,434,1,434,1,434,3,434,7894,8,434,1,434,1,434,1,434,3,434,7899,8,434,1,434,3,434,7902,8,434,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,3,435,7916,8,435,1,436,1,436,3,436,7920,8,436,1,436,1,436,1,436,5,436,7925,8,436,10,436,12,436,7928,9,436,1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,438,1,438,1,438,1,438,3,438,7942,8,438,1,439,1,439,3,439,7946,8,439,1,439,1,439,3,439,7950,8,439,1,440,3,440,7953,8,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,3,440,7966,8,440,1,441,1,441,3,441,7970,8,441,1,442,1,442,1,442,3,442,7975,8,442,1,443,1,443,1,443,1,443,1,443,1,443,3,443,7983,8,443,1,444,1,444,1,445,1,445,3,445,7989,8,445,1,446,1,446,1,446,1,446,1,447,1,447,1,447,5,447,7998,8,447,10,447,12,447,8001,9,447,1,448,1,448,1,448,1,448,3,448,8007,8,448,1,448,1,448,1,449,1,449,3,449,8013,8,449,1,449,1,449,3,449,8017,8,449,3,449,8019,8,449,1,450,1,450,3,450,8023,8,450,1,451,1,451,1,451,1,451,3,451,8029,8,451,1,451,1,451,1,451,1,451,1,451,1,451,1,451,3,451,8038,8,451,1,451,1,451,1,451,1,451,3,451,8044,8,451,3,451,8046,8,451,3,451,8048,8,451,1,452,1,452,1,452,1,452,1,452,3,452,8055,8,452,1,453,1,453,3,453,8059,8,453,1,454,1,454,1,455,1,455,1,455,1,455,1,455,3,455,8068,8,455,1,456,1,456,3,456,8072,8,456,1,457,1,457,1,458,1,458,1,459,1,459,1,459,1,459,3,459,8082,8,459,1,460,1,460,1,460,5,460,8087,8,460,10,460,12,460,8090,9,460,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,3,461,8111,8,461,1,462,1,462,1,462,3,462,8116,8,462,1,463,4,463,8119,8,463,11,463,12,463,8120,1,463,1,463,1,463,3,463,8126,8,463,1,464,1,464,1,464,1,464,1,465,1,465,1,465,3,465,8135,8,465,1,465,1,465,3,465,8139,8,465,1,465,3,465,8142,8,465,1,466,1,466,1,466,3,466,8147,8,466,1,467,1,467,1,467,1,467,1,467,1,467,1,467,1,467,1,467,5,467,8158,8,467,10,467,12,467,8161,9,467,1,468,1,468,1,468,3,468,8166,8,468,1,469,1,469,1,469,1,469,5,469,8172,8,469,10,469,12,469,8175,9,469,3,469,8177,8,469,1,470,1,470,1,470,4,470,8182,8,470,11,470,12,470,8183,1,471,1,471,1,471,3,471,8189,8,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,3,471,8210,8,471,1,471,1,471,1,471,1,471,1,471,1,471,1,471,3,471,8219,8,471,1,471,1,471,1,471,3,471,8224,8,471,1,471,1,471,1,471,1,471,3,471,8230,8,471,1,471,1,471,1,471,3,471,8235,8,471,1,471,1,471,1,471,1,471,1,471,3,471,8242,8,471,1,471,1,471,1,471,3,471,8247,8,471,1,471,1,471,1,471,1,471,5,471,8253,8,471,10,471,12,471,8256,9,471,1,472,3,472,8259,8,472,1,472,1,472,1,472,1,472,1,472,3,472,8266,8,472,1,473,1,473,3,473,8270,8,473,1,474,3,474,8273,8,474,1,474,1,474,1,474,1,474,1,474,3,474,8280,8,474,1,475,1,475,1,475,3,475,8285,8,475,1,475,3,475,8288,8,475,1,475,1,475,1,475,1,475,1,475,3,475,8295,8,475,1,476,1,476,3,476,8299,8,476,1,477,1,477,1,477,1,477,1,477,1,477,1,477,3,477,8308,8,477,1,478,1,478,1,479,1,479,3,479,8314,8,479,1,479,1,479,1,479,1,479,1,479,1,479,3,479,8322,8,479,3,479,8324,8,479,1,480,1,480,1,480,5,480,8329,8,480,10,480,12,480,8332,9,480,1,481,1,481,3,481,8336,8,481,1,481,3,481,8339,8,481,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,5,483,8360,8,483,10,483,12,483,8363,9,483,1,483,1,483,1,483,3,483,8368,8,483,1,484,1,484,1,484,1,485,1,485,1,485,1,485,1,485,1,485,3,485,8379,8,485,1,486,1,486,1,486,3,486,8384,8,486,1,487,1,487,1,487,3,487,8389,8,487,1,488,1,488,1,488,1,488,1,488,3,488,8396,8,488,1,488,3,488,8399,8,488,1,489,1,489,3,489,8403,8,489,1,490,1,490,1,490,5,490,8408,8,490,10,490,12,490,8411,9,490,1,491,1,491,1,491,1,491,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,5,492,8425,8,492,10,492,12,492,8428,9,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,5,492,8441,8,492,10,492,12,492,8444,9,492,3,492,8446,8,492,1,492,1,492,1,493,1,493,1,493,3,493,8453,8,493,1,493,1,493,3,493,8457,8,493,1,494,4,494,8460,8,494,11,494,12,494,8461,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,3,495,8472,8,495,1,496,1,496,1,496,5,496,8477,8,496,10,496,12,496,8480,9,496,1,497,1,497,1,497,1,497,1,497,1,497,3,497,8488,8,497,1,498,3,498,8491,8,498,1,498,1,498,1,498,3,498,8496,8,498,1,498,5,498,8499,8,498,10,498,12,498,8502,9,498,1,498,1,498,1,498,1,498,1,498,3,498,8509,8,498,3,498,8511,8,498,1,498,1,498,1,498,1,498,3,498,8517,8,498,1,499,1,499,1,499,1,499,1,499,1,499,1,499,1,499,1,499,1,499,1,499,3,499,8530,8,499,3,499,8532,8,499,1,500,1,500,1,500,1,500,3,500,8538,8,500,1,501,1,501,1,501,1,501,3,501,8544,8,501,1,501,3,501,8547,8,501,1,501,1,501,1,502,1,502,1,502,1,502,1,502,3,502,8556,8,502,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,3,503,8574,8,503,1,504,1,504,1,504,1,504,1,504,3,504,8581,8,504,1,505,1,505,3,505,8585,8,505,1,506,1,506,3,506,8589,8,506,1,507,1,507,1,507,1,507,1,507,1,507,1,508,1,508,1,508,1,509,1,509,1,509,1,509,1,509,3,509,8605,8,509,1,510,1,510,1,510,1,510,1,510,3,510,8612,8,510,1,511,1,511,1,511,1,511,1,511,1,511,3,511,8620,8,511,1,512,1,512,3,512,8624,8,512,1,513,1,513,1,513,1,513,1,513,3,513,8631,8,513,1,513,1,513,1,514,1,514,1,515,1,515,1,515,1,515,1,515,1,515,1,515,3,515,8644,8,515,1,516,1,516,1,516,1,516,1,516,1,516,1,516,1,516,1,516,1,516,1,516,1,516,1,516,1,516,3,516,8660,8,516,1,516,1,516,1,516,1,516,3,516,8666,8,516,1,516,1,516,1,516,1,516,3,516,8672,8,516,1,517,1,517,1,517,1,517,1,517,3,517,8679,8,517,1,518,1,518,1,518,3,518,8684,8,518,1,519,1,519,1,520,1,520,3,520,8690,8,520,1,521,1,521,1,521,5,521,8695,8,521,10,521,12,521,8698,9,521,1,522,1,522,1,522,5,522,8703,8,522,10,522,12,522,8706,9,522,1,523,1,523,1,523,5,523,8711,8,523,10,523,12,523,8714,9,523,1,524,1,524,3,524,8718,8,524,1,524,1,524,3,524,8722,8,524,1,524,1,524,1,524,1,524,3,524,8728,8,524,1,525,1,525,3,525,8732,8,525,1,525,1,525,3,525,8736,8,525,1,526,3,526,8739,8,526,1,526,1,526,1,527,1,527,3,527,8745,8,527,1,528,1,528,1,528,3,528,8750,8,528,1,528,1,528,1,528,1,528,1,528,1,528,1,528,1,528,1,528,1,528,1,528,1,528,1,528,1,528,3,528,8766,8,528,1,528,3,528,8769,8,528,3,528,8771,8,528,1,529,1,529,1,529,1,529,1,529,1,529,1,529,1,529,1,529,1,529,3,529,8783,8,529,3,529,8785,8,529,1,530,1,530,3,530,8789,8,530,1,530,1,530,1,530,1,530,3,530,8795,8,530,1,530,1,530,1,530,3,530,8800,8,530,1,531,1,531,1,531,1,531,5,531,8806,8,531,10,531,12,531,8809,9,531,1,532,3,532,8812,8,532,1,532,1,532,1,533,1,533,1,533,5,533,8819,8,533,10,533,12,533,8822,9,533,1,534,1,534,1,534,5,534,8827,8,534,10,534,12,534,8830,9,534,1,535,1,535,1,535,3,535,8835,8,535,1,536,3,536,8838,8,536,1,536,1,536,1,537,1,537,1,537,1,537,1,537,3,537,8847,8,537,1,538,1,538,1,538,3,538,8852,8,538,1,539,1,539,1,539,5,539,8857,8,539,10,539,12,539,8860,9,539,1,540,1,540,1,540,1,540,1,540,1,540,1,540,3,540,8869,8,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,3,540,8895,8,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,3,540,8906,8,540,5,540,8908,8,540,10,540,12,540,8911,9,540,1,541,1,541,1,541,1,541,1,541,3,541,8918,8,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541,3,541,8941,8,541,1,541,1,541,1,541,1,541,1,541,1,541,3,541,8949,8,541,1,542,1,542,1,543,1,543,1,543,1,543,1,543,1,543,3,543,8959,8,543,1,543,1,543,1,543,1,543,1,543,1,543,1,543,1,543,1,543,1,543,1,543,1,543,3,543,8973,8,543,1,543,1,543,1,544,1,544,1,544,1,544,1,544,1,544,3,544,8983,8,544,1,545,1,545,3,545,8987,8,545,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,3,546,9001,8,546,1,546,1,546,1,546,1,546,1,546,3,546,9008,8,546,1,546,1,546,1,546,1,546,1,546,3,546,9015,8,546,1,546,1,546,1,546,1,546,1,546,3,546,9022,8,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,3,546,9047,8,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,3,546,9076,8,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,3,546,9115,8,546,3,546,9117,8,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,3,546,9145,8,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,3,546,9166,8,546,1,547,1,547,1,547,1,547,1,547,3,547,9173,8,547,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,3,548,9186,8,548,1,549,1,549,1,549,1,549,1,549,1,550,1,550,1,550,5,550,9196,8,550,10,550,12,550,9199,9,550,1,551,1,551,1,551,3,551,9204,8,551,1,552,1,552,1,553,1,553,1,553,1,553,1,553,3,553,9213,8,553,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,3,554,9230,8,554,1,555,1,555,1,555,1,556,1,556,1,556,1,556,1,556,1,556,1,556,3,556,9242,8,556,1,557,1,557,1,557,1,557,1,557,1,557,1,557,3,557,9251,8,557,1,558,1,558,1,558,3,558,9256,8,558,1,559,1,559,1,559,5,559,9261,8,559,10,559,12,559,9264,9,559,1,560,1,560,1,560,1,560,1,561,1,561,1,561,3,561,9273,8,561,1,561,3,561,9276,8,561,1,562,1,562,1,562,1,562,1,562,1,562,1,562,1,563,1,563,3,563,9287,8,563,1,564,1,564,1,564,1,564,3,564,9293,8,564,1,565,1,565,1,565,1,565,1,565,1,565,1,565,1,565,1,565,1,565,1,565,1,565,1,565,3,565,9308,8,565,1,566,1,566,1,566,1,566,1,566,1,566,3,566,9316,8,566,1,567,1,567,1,567,1,567,1,567,1,567,1,567,3,567,9325,8,567,1,568,1,568,1,568,1,568,1,568,1,568,1,568,3,568,9334,8,568,1,568,3,568,9337,8,568,1,569,1,569,1,569,3,569,9342,8,569,1,569,1,569,1,569,1,569,1,569,1,569,1,569,3,569,9351,8,569,1,570,1,570,1,570,3,570,9356,8,570,1,570,1,570,1,571,1,571,1,571,1,571,1,571,1,571,1,572,1,572,1,573,1,573,3,573,9370,8,573,1,574,1,574,1,575,1,575,1,575,1,575,1,575,1,575,3,575,9380,8,575,1,576,1,576,1,576,1,576,1,576,1,576,3,576,9388,8,576,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,3,577,9402,8,577,1,578,1,578,1,578,5,578,9407,8,578,10,578,12,578,9410,9,578,1,579,1,579,1,579,5,579,9415,8,579,10,579,12,579,9418,9,579,1,580,1,580,1,580,1,580,1,580,3,580,9425,8,580,1,581,1,581,1,581,5,581,9430,8,581,10,581,12,581,9433,9,581,1,582,1,582,1,582,3,582,9438,8,582,1,582,1,582,1,583,1,583,1,583,5,583,9445,8,583,10,583,12,583,9448,9,583,1,584,1,584,1,584,1,584,1,584,3,584,9455,8,584,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,3,585,9465,8,585,1,586,1,586,1,587,1,587,1,587,1,587,1,587,1,587,1,587,3,587,9476,8,587,1,588,1,588,1,588,1,588,1,588,3,588,9483,8,588,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,3,589,9512,8,589,1,590,1,590,1,590,1,590,1,590,1,590,1,590,3,590,9521,8,590,1,591,1,591,1,591,1,591,1,591,3,591,9528,8,591,1,592,1,592,1,592,1,592,1,592,1,592,1,593,4,593,9537,8,593,11,593,12,593,9538,1,594,1,594,1,594,1,594,1,594,1,595,1,595,1,595,3,595,9549,8,595,1,596,1,596,3,596,9553,8,596,1,597,1,597,3,597,9557,8,597,1,598,1,598,1,598,3,598,9562,8,598,1,598,1,598,1,598,3,598,9567,8,598,1,598,1,598,3,598,9571,8,598,3,598,9573,8,598,1,598,3,598,9576,8,598,1,599,4,599,9579,8,599,11,599,12,599,9580,1,600,5,600,9584,8,600,10,600,12,600,9587,9,600,1,601,1,601,3,601,9591,8,601,1,602,1,602,1,602,5,602,9596,8,602,10,602,12,602,9599,9,602,1,603,1,603,1,603,1,603,1,603,1,603,3,603,9607,8,603,3,603,9609,8,603,1,604,1,604,1,604,5,604,9614,8,604,10,604,12,604,9617,9,604,1,605,1,605,1,606,1,606,1,606,5,606,9624,8,606,10,606,12,606,9627,9,606,1,607,1,607,1,608,1,608,1,608,5,608,9634,8,608,10,608,12,608,9637,9,608,1,609,1,609,1,610,1,610,1,610,5,610,9644,8,610,10,610,12,610,9647,9,610,1,611,1,611,1,612,1,612,1,613,1,613,1,614,1,614,1,614,5,614,9658,8,614,10,614,12,614,9661,9,614,1,615,1,615,3,615,9665,8,615,1,616,1,616,1,616,5,616,9670,8,616,10,616,12,616,9673,9,616,1,617,1,617,1,618,1,618,1,619,1,619,1,620,1,620,1,620,1,620,1,620,1,620,1,620,3,620,9688,8,620,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,3,621,9703,8,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,3,621,9717,8,621,1,621,1,621,1,621,3,621,9722,8,621,1,622,1,622,1,623,1,623,1,624,1,624,1,625,1,625,1,626,1,626,1,626,1,627,1,627,1,627,1,627,5,627,9739,8,627,10,627,12,627,9742,9,627,1,627,1,627,3,627,9746,8,627,1,628,1,628,1,628,3,628,9751,8,628,1,629,1,629,1,629,1,629,1,629,3,629,9758,8,629,1,630,1,630,1,630,3,630,9763,8,630,1,631,1,631,1,631,5,631,9768,8,631,10,631,12,631,9771,9,631,1,632,1,632,1,632,1,632,1,632,1,632,3,632,9779,8,632,1,633,1,633,1,633,1,633,3,633,9785,8,633,1,634,1,634,1,634,1,634,3,634,9791,8,634,1,635,1,635,1,635,1,635,3,635,9797,8,635,1,636,1,636,1,636,1,636,1,636,1,636,3,636,9805,8,636,1,637,1,637,1,637,1,637,1,637,1,637,1,637,3,637,9814,8,637,1,638,1,638,1,639,1,639,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,3,640,9872,8,640,1,641,1,641,1,642,1,642,1,643,1,643,1,644,1,644,1,644,1,644,1,645,5,645,9885,8,645,10,645,12,645,9888,9,645,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,3,646,9910,8,646,1,647,1,647,1,648,1,648,1,648,1,648,3,648,9918,8,648,1,649,1,649,3,649,9922,8,649,1,650,1,650,1,650,1,650,1,650,1,650,1,650,1,651,1,651,1,651,3,651,9934,8,651,3,651,9936,8,651,1,652,1,652,1,653,4,653,9941,8,653,11,653,12,653,9942,1,654,1,654,1,654,1,654,1,655,1,655,1,655,3,655,9952,8,655,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,3,656,9970,8,656,1,656,1,656,1,657,1,657,1,657,1,657,3,657,9978,8,657,1,658,1,658,1,659,1,659,1,659,1,659,1,659,3,659,9987,8,659,1,660,1,660,1,660,5,660,9992,8,660,10,660,12,660,9995,9,660,1,661,1,661,1,661,1,662,1,662,1,663,1,663,3,663,10004,8,663,1,664,1,664,1,665,1,665,3,665,10010,8,665,1,666,1,666,1,667,1,667,1,667,3,667,10017,8,667,1,668,1,668,1,668,3,668,10022,8,668,1,669,1,669,1,669,1,669,3,669,10028,8,669,1,670,1,670,3,670,10032,8,670,1,671,1,671,1,672,5,672,10037,8,672,10,672,12,672,10040,9,672,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,1,673,3,673,10069,8,673,1,674,1,674,1,674,1,674,1,675,1,675,1,675,1,675,1,675,1,675,1,675,1,675,1,675,1,675,1,675,1,675,1,675,1,675,3,675,10089,8,675,1,676,1,676,3,676,10093,8,676,1,677,1,677,1,677,1,677,1,677,1,678,1,678,1,678,1,678,1,678,1,678,1,679,1,679,1,679,3,679,10109,8,679,1,680,1,680,1,680,5,680,10114,8,680,10,680,12,680,10117,9,680,1,681,1,681,1,681,1,681,1,682,1,682,1,683,1,683,1,684,1,684,3,684,10129,8,684,1,684,1,684,1,684,1,684,5,684,10135,8,684,10,684,12,684,10138,9,684,1,685,1,685,1,685,1,685,1,685,1,685,1,685,1,685,1,685,1,685,1,686,1,686,1,686,1,686,1,686,5,686,10155,8,686,10,686,12,686,10158,9,686,1,687,1,687,1,687,3,687,10163,8,687,1,688,1,688,1,688,1,688,1,688,1,688,1,688,1,688,1,689,1,689,3,689,10175,8,689,1,690,4,690,10178,8,690,11,690,12,690,10179,1,691,1,691,1,691,1,691,1,691,1,692,1,692,1,692,3,692,10190,8,692,1,693,1,693,1,693,1,694,1,694,1,694,1,694,1,694,1,695,1,695,1,695,1,695,1,695,1,696,1,696,1,696,1,696,1,696,1,696,1,696,1,696,1,696,1,696,1,696,1,696,1,696,1,696,1,696,1,696,1,696,3,696,10222,8,696,1,697,1,697,1,697,3,697,10227,8,697,1,698,1,698,1,698,1,698,1,698,5,698,10234,8,698,10,698,12,698,10237,9,698,1,698,1,698,3,698,10241,8,698,1,699,1,699,3,699,10245,8,699,1,700,1,700,1,700,3,700,10250,8,700,1,701,1,701,1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,703,1,703,1,703,3,703,10266,8,703,1,704,1,704,1,704,1,704,1,704,1,705,1,705,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,3,706,10284,8,706,1,706,3,706,10287,8,706,1,706,1,706,1,707,1,707,3,707,10293,8,707,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,1,708,3,708,10321,8,708,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,3,709,10331,8,709,1,710,1,710,1,710,4,710,10336,8,710,11,710,12,710,10337,3,710,10340,8,710,1,711,1,711,1,711,1,711,1,711,5,711,10347,8,711,10,711,12,711,10350,9,711,3,711,10352,8,711,1,712,1,712,1,712,1,712,1,713,1,713,1,713,1,713,1,713,1,714,1,714,1,714,3,714,10366,8,714,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,716,1,716,1,716,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,3,717,10387,8,717,1,717,1,717,1,718,1,718,1,718,3,718,10394,8,718,1,719,1,719,1,719,5,719,10399,8,719,10,719,12,719,10402,9,719,1,720,1,720,1,720,3,720,10407,8,720,1,720,3,720,10410,8,720,1,721,1,721,1,721,3,721,10415,8,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,3,721,10425,8,721,1,721,1,721,1,721,1,721,1,721,5,721,10432,8,721,10,721,12,721,10435,9,721,1,721,1,721,3,721,10439,8,721,3,721,10441,8,721,1,721,1,721,1,722,1,722,1,722,1,722,1,722,3,722,10450,8,722,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,724,1,724,1,725,1,725,1,725,3,725,10465,8,725,1,726,1,726,1,726,1,726,1,726,1,726,1,726,1,726,1,726,1,726,1,726,1,726,1,726,1,726,1,726,3,726,10482,8,726,3,726,10484,8,726,1,727,1,727,1,727,1,727,1,727,1,728,1,728,1,728,1,728,1,729,1,729,1,729,1,730,1,730,1,730,1,730,1,731,1,731,1,731,1,731,1,732,1,732,3,732,10508,8,732,1,732,1,732,3,732,10512,8,732,1,733,1,733,1,733,1,733,1,733,1,733,1,733,1,733,1,733,3,733,10523,8,733,1,733,3,733,10526,8,733,1,734,1,734,3,734,10530,8,734,1,735,1,735,1,735,3,735,10535,8,735,1,736,4,736,10538,8,736,11,736,12,736,10539,1,737,1,737,1,737,1,737,1,737,1,738,1,738,1,738,5,738,10550,8,738,10,738,12,738,10553,9,738,1,739,1,739,1,739,3,739,10558,8,739,1,740,1,740,3,740,10562,8,740,1,741,1,741,3,741,10566,8,741,1,742,1,742,3,742,10570,8,742,1,743,1,743,1,743,3,743,10575,8,743,1,744,1,744,3,744,10579,8,744,1,745,1,745,1,746,1,746,3,746,10585,8,746,1,746,1,746,1,746,1,746,1,746,1,746,1,747,1,747,1,748,1,748,1,749,1,749,1,750,1,750,1,751,1,751,1,751,1,752,1,752,3,752,10606,8,752,1,752,1,752,3,752,10610,8,752,1,753,1,753,1,753,0,1,1080,754,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988,990,992,994,996,998,1e3,1002,1004,1006,1008,1010,1012,1014,1016,1018,1020,1022,1024,1026,1028,1030,1032,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100,1102,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1204,1206,1208,1210,1212,1214,1216,1218,1220,1222,1224,1226,1228,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502,1504,1506,0,69,2,0,195,195,357,357,2,0,133,133,191,191,2,0,245,245,325,325,2,0,10,10,94,94,2,0,162,162,356,356,2,0,180,180,221,221,5,0,30,30,281,281,322,322,345,345,347,347,2,0,139,139,305,305,2,0,30,30,99,99,2,0,64,64,94,94,2,0,345,345,347,347,2,0,200,200,224,224,9,0,30,30,160,160,165,165,179,179,219,219,227,227,335,335,338,338,438,438,3,0,113,113,277,277,329,329,2,0,53,53,78,78,3,0,173,173,252,252,255,255,5,0,30,30,88,88,182,182,232,232,362,362,2,0,92,92,226,226,1,0,448,449,2,0,92,92,407,407,2,0,334,334,407,407,2,0,211,211,289,289,2,0,314,314,445,445,2,0,64,64,68,68,5,0,212,212,322,322,343,343,455,455,457,457,5,0,212,212,322,322,343,343,354,354,455,456,2,0,10,10,53,53,3,0,211,211,289,289,442,442,2,0,92,92,342,342,3,0,109,109,128,128,344,344,4,0,88,88,182,182,232,232,362,362,2,0,151,151,245,245,2,0,306,306,326,326,1,0,31,32,2,0,99,99,342,342,2,0,201,201,327,327,2,0,59,59,97,97,2,0,213,213,245,245,2,0,313,313,407,407,2,0,207,207,261,261,4,0,113,113,115,115,119,119,126,126,2,0,353,353,477,477,2,0,384,385,399,399,1,0,384,385,1,0,411,412,1,0,18,19,2,0,117,117,122,122,5,0,10,10,16,17,21,21,23,23,25,25,1,0,12,13,3,0,9,9,14,14,27,27,2,0,30,30,56,56,3,0,39,39,73,73,95,95,2,0,166,166,188,188,2,0,297,297,450,450,2,0,208,208,282,282,3,0,30,30,34,34,90,90,6,0,9,10,12,17,21,21,23,23,25,25,27,27,2,0,20,20,22,22,1,0,483,486,11,0,124,124,129,249,251,252,254,303,305,379,433,452,455,469,471,471,473,473,475,475,478,488,5,0,106,118,120,123,125,125,127,128,472,472,4,0,30,52,54,70,72,105,454,454,5,0,304,304,418,424,504,504,513,513,521,635,2,0,62,62,116,116,2,0,10,10,20,20,2,0,167,167,507,507,2,0,144,144,210,210,36,0,33,33,35,35,43,45,53,53,57,57,61,61,92,92,116,116,123,123,130,130,144,144,153,153,157,157,161,161,167,167,172,172,207,207,210,210,232,232,240,240,258,258,261,262,272,272,286,286,300,300,306,306,312,312,316,317,326,326,353,353,433,434,477,477,490,502,506,512,514,518,520,520,3,0,66,66,99,99,311,311,11574,0,1509,1,0,0,0,2,1513,1,0,0,0,4,1523,1,0,0,0,6,1647,1,0,0,0,8,1649,1,0,0,0,10,1653,1,0,0,0,12,1658,1,0,0,0,14,1663,1,0,0,0,16,1669,1,0,0,0,18,1691,1,0,0,0,20,1704,1,0,0,0,22,1706,1,0,0,0,24,1712,1,0,0,0,26,1722,1,0,0,0,28,1724,1,0,0,0,30,1733,1,0,0,0,32,1741,1,0,0,0,34,1743,1,0,0,0,36,1761,1,0,0,0,38,1766,1,0,0,0,40,1775,1,0,0,0,42,1777,1,0,0,0,44,1791,1,0,0,0,46,1793,1,0,0,0,48,1823,1,0,0,0,50,1825,1,0,0,0,52,1833,1,0,0,0,54,1843,1,0,0,0,56,1850,1,0,0,0,58,1856,1,0,0,0,60,1873,1,0,0,0,62,1878,1,0,0,0,64,1882,1,0,0,0,66,1884,1,0,0,0,68,1895,1,0,0,0,70,1899,1,0,0,0,72,1904,1,0,0,0,74,1909,1,0,0,0,76,1911,1,0,0,0,78,1923,1,0,0,0,80,1930,1,0,0,0,82,1932,1,0,0,0,84,1934,1,0,0,0,86,1936,1,0,0,0,88,2039,1,0,0,0,90,2041,1,0,0,0,92,2057,1,0,0,0,94,2059,1,0,0,0,96,2304,1,0,0,0,98,2311,1,0,0,0,100,2316,1,0,0,0,102,2321,1,0,0,0,104,2326,1,0,0,0,106,2334,1,0,0,0,108,2336,1,0,0,0,110,2343,1,0,0,0,112,2345,1,0,0,0,114,2353,1,0,0,0,116,2365,1,0,0,0,118,2381,1,0,0,0,120,2409,1,0,0,0,122,2411,1,0,0,0,124,2414,1,0,0,0,126,2422,1,0,0,0,128,2427,1,0,0,0,130,2458,1,0,0,0,132,2460,1,0,0,0,134,2493,1,0,0,0,136,2495,1,0,0,0,138,2500,1,0,0,0,140,2512,1,0,0,0,142,2549,1,0,0,0,144,2557,1,0,0,0,146,2559,1,0,0,0,148,2567,1,0,0,0,150,2585,1,0,0,0,152,2587,1,0,0,0,154,2636,1,0,0,0,156,2640,1,0,0,0,158,2647,1,0,0,0,160,2649,1,0,0,0,162,2657,1,0,0,0,164,2668,1,0,0,0,166,2672,1,0,0,0,168,2674,1,0,0,0,170,2679,1,0,0,0,172,2689,1,0,0,0,174,2700,1,0,0,0,176,2742,1,0,0,0,178,2747,1,0,0,0,180,2754,1,0,0,0,182,2756,1,0,0,0,184,2764,1,0,0,0,186,2767,1,0,0,0,188,2774,1,0,0,0,190,2834,1,0,0,0,192,2841,1,0,0,0,194,2843,1,0,0,0,196,2851,1,0,0,0,198,2859,1,0,0,0,200,2864,1,0,0,0,202,2866,1,0,0,0,204,2874,1,0,0,0,206,2890,1,0,0,0,208,2901,1,0,0,0,210,2903,1,0,0,0,212,2907,1,0,0,0,214,2917,1,0,0,0,216,2925,1,0,0,0,218,2929,1,0,0,0,220,2931,1,0,0,0,222,2938,1,0,0,0,224,2960,1,0,0,0,226,2965,1,0,0,0,228,2972,1,0,0,0,230,2984,1,0,0,0,232,2989,1,0,0,0,234,2996,1,0,0,0,236,2998,1,0,0,0,238,3002,1,0,0,0,240,3016,1,0,0,0,242,3027,1,0,0,0,244,3040,1,0,0,0,246,3054,1,0,0,0,248,3056,1,0,0,0,250,3072,1,0,0,0,252,3078,1,0,0,0,254,3087,1,0,0,0,256,3099,1,0,0,0,258,3113,1,0,0,0,260,3116,1,0,0,0,262,3151,1,0,0,0,264,3159,1,0,0,0,266,3161,1,0,0,0,268,3169,1,0,0,0,270,3185,1,0,0,0,272,3192,1,0,0,0,274,3198,1,0,0,0,276,3202,1,0,0,0,278,3204,1,0,0,0,280,3215,1,0,0,0,282,3217,1,0,0,0,284,3225,1,0,0,0,286,3247,1,0,0,0,288,3249,1,0,0,0,290,3259,1,0,0,0,292,3401,1,0,0,0,294,3403,1,0,0,0,296,3421,1,0,0,0,298,3424,1,0,0,0,300,3445,1,0,0,0,302,3453,1,0,0,0,304,3455,1,0,0,0,306,3463,1,0,0,0,308,3468,1,0,0,0,310,3483,1,0,0,0,312,3485,1,0,0,0,314,3488,1,0,0,0,316,3490,1,0,0,0,318,3521,1,0,0,0,320,3526,1,0,0,0,322,3528,1,0,0,0,324,3533,1,0,0,0,326,3599,1,0,0,0,328,3601,1,0,0,0,330,3616,1,0,0,0,332,3624,1,0,0,0,334,3647,1,0,0,0,336,3651,1,0,0,0,338,3671,1,0,0,0,340,3673,1,0,0,0,342,3682,1,0,0,0,344,3693,1,0,0,0,346,3708,1,0,0,0,348,3717,1,0,0,0,350,3722,1,0,0,0,352,3727,1,0,0,0,354,3732,1,0,0,0,356,3734,1,0,0,0,358,3736,1,0,0,0,360,3745,1,0,0,0,362,3785,1,0,0,0,364,3791,1,0,0,0,366,3793,1,0,0,0,368,3808,1,0,0,0,370,3813,1,0,0,0,372,3816,1,0,0,0,374,3820,1,0,0,0,376,3825,1,0,0,0,378,3827,1,0,0,0,380,3829,1,0,0,0,382,3837,1,0,0,0,384,3839,1,0,0,0,386,3847,1,0,0,0,388,3849,1,0,0,0,390,3853,1,0,0,0,392,3866,1,0,0,0,394,3871,1,0,0,0,396,3876,1,0,0,0,398,3890,1,0,0,0,400,3918,1,0,0,0,402,3920,1,0,0,0,404,3928,1,0,0,0,406,3934,1,0,0,0,408,3942,1,0,0,0,410,3954,1,0,0,0,412,3956,1,0,0,0,414,4073,1,0,0,0,416,4075,1,0,0,0,418,4086,1,0,0,0,420,4097,1,0,0,0,422,4099,1,0,0,0,424,4110,1,0,0,0,426,4114,1,0,0,0,428,4159,1,0,0,0,430,4165,1,0,0,0,432,4167,1,0,0,0,434,4183,1,0,0,0,436,4218,1,0,0,0,438,4223,1,0,0,0,440,4232,1,0,0,0,442,4234,1,0,0,0,444,4259,1,0,0,0,446,4261,1,0,0,0,448,4281,1,0,0,0,450,4301,1,0,0,0,452,4321,1,0,0,0,454,4323,1,0,0,0,456,4329,1,0,0,0,458,4441,1,0,0,0,460,4464,1,0,0,0,462,4469,1,0,0,0,464,4484,1,0,0,0,466,4486,1,0,0,0,468,4488,1,0,0,0,470,4496,1,0,0,0,472,4502,1,0,0,0,474,4506,1,0,0,0,476,4514,1,0,0,0,478,4525,1,0,0,0,480,4711,1,0,0,0,482,4715,1,0,0,0,484,4853,1,0,0,0,486,4858,1,0,0,0,488,4862,1,0,0,0,490,4868,1,0,0,0,492,4936,1,0,0,0,494,4938,1,0,0,0,496,4942,1,0,0,0,498,4944,1,0,0,0,500,4971,1,0,0,0,502,4988,1,0,0,0,504,4990,1,0,0,0,506,5007,1,0,0,0,508,5047,1,0,0,0,510,5049,1,0,0,0,512,5060,1,0,0,0,514,5066,1,0,0,0,516,5068,1,0,0,0,518,5092,1,0,0,0,520,5098,1,0,0,0,522,5104,1,0,0,0,524,5106,1,0,0,0,526,5124,1,0,0,0,528,5153,1,0,0,0,530,5155,1,0,0,0,532,5202,1,0,0,0,534,5207,1,0,0,0,536,5209,1,0,0,0,538,5228,1,0,0,0,540,5241,1,0,0,0,542,5256,1,0,0,0,544,5261,1,0,0,0,546,5265,1,0,0,0,548,5270,1,0,0,0,550,5277,1,0,0,0,552,5279,1,0,0,0,554,5304,1,0,0,0,556,5306,1,0,0,0,558,5314,1,0,0,0,560,5334,1,0,0,0,562,5336,1,0,0,0,564,5344,1,0,0,0,566,5362,1,0,0,0,568,5371,1,0,0,0,570,5377,1,0,0,0,572,5379,1,0,0,0,574,5395,1,0,0,0,576,5397,1,0,0,0,578,5412,1,0,0,0,580,5420,1,0,0,0,582,5423,1,0,0,0,584,5432,1,0,0,0,586,5473,1,0,0,0,588,5483,1,0,0,0,590,5490,1,0,0,0,592,5492,1,0,0,0,594,5507,1,0,0,0,596,5509,1,0,0,0,598,5512,1,0,0,0,600,5520,1,0,0,0,602,5567,1,0,0,0,604,5581,1,0,0,0,606,5595,1,0,0,0,608,5619,1,0,0,0,610,5626,1,0,0,0,612,5631,1,0,0,0,614,5639,1,0,0,0,616,5642,1,0,0,0,618,5646,1,0,0,0,620,5653,1,0,0,0,622,5689,1,0,0,0,624,5696,1,0,0,0,626,5698,1,0,0,0,628,5711,1,0,0,0,630,5713,1,0,0,0,632,5758,1,0,0,0,634,5760,1,0,0,0,636,5830,1,0,0,0,638,5832,1,0,0,0,640,5834,1,0,0,0,642,5842,1,0,0,0,644,5856,1,0,0,0,646,6295,1,0,0,0,648,6299,1,0,0,0,650,6304,1,0,0,0,652,6375,1,0,0,0,654,6589,1,0,0,0,656,6591,1,0,0,0,658,6599,1,0,0,0,660,6615,1,0,0,0,662,6622,1,0,0,0,664,6624,1,0,0,0,666,6815,1,0,0,0,668,6817,1,0,0,0,670,6825,1,0,0,0,672,6833,1,0,0,0,674,6862,1,0,0,0,676,6864,1,0,0,0,678,6873,1,0,0,0,680,6881,1,0,0,0,682,6920,1,0,0,0,684,6934,1,0,0,0,686,6936,1,0,0,0,688,6956,1,0,0,0,690,6958,1,0,0,0,692,6971,1,0,0,0,694,6975,1,0,0,0,696,6977,1,0,0,0,698,6982,1,0,0,0,700,6984,1,0,0,0,702,6991,1,0,0,0,704,6993,1,0,0,0,706,7e3,1,0,0,0,708,7055,1,0,0,0,710,7060,1,0,0,0,712,7072,1,0,0,0,714,7074,1,0,0,0,716,7090,1,0,0,0,718,7092,1,0,0,0,720,7124,1,0,0,0,722,7126,1,0,0,0,724,7129,1,0,0,0,726,7141,1,0,0,0,728,7143,1,0,0,0,730,7160,1,0,0,0,732,7162,1,0,0,0,734,7173,1,0,0,0,736,7178,1,0,0,0,738,7199,1,0,0,0,740,7205,1,0,0,0,742,7210,1,0,0,0,744,7217,1,0,0,0,746,7243,1,0,0,0,748,7247,1,0,0,0,750,7249,1,0,0,0,752,7328,1,0,0,0,754,7330,1,0,0,0,756,7356,1,0,0,0,758,7361,1,0,0,0,760,7382,1,0,0,0,762,7394,1,0,0,0,764,7396,1,0,0,0,766,7404,1,0,0,0,768,7406,1,0,0,0,770,7411,1,0,0,0,772,7416,1,0,0,0,774,7420,1,0,0,0,776,7427,1,0,0,0,778,7429,1,0,0,0,780,7441,1,0,0,0,782,7466,1,0,0,0,784,7477,1,0,0,0,786,7479,1,0,0,0,788,7484,1,0,0,0,790,7489,1,0,0,0,792,7491,1,0,0,0,794,7502,1,0,0,0,796,7508,1,0,0,0,798,7537,1,0,0,0,800,7544,1,0,0,0,802,7556,1,0,0,0,804,7559,1,0,0,0,806,7568,1,0,0,0,808,7592,1,0,0,0,810,7594,1,0,0,0,812,7596,1,0,0,0,814,7604,1,0,0,0,816,7620,1,0,0,0,818,7631,1,0,0,0,820,7636,1,0,0,0,822,7638,1,0,0,0,824,7669,1,0,0,0,826,7688,1,0,0,0,828,7701,1,0,0,0,830,7709,1,0,0,0,832,7721,1,0,0,0,834,7723,1,0,0,0,836,7734,1,0,0,0,838,7748,1,0,0,0,840,7752,1,0,0,0,842,7758,1,0,0,0,844,7761,1,0,0,0,846,7771,1,0,0,0,848,7796,1,0,0,0,850,7798,1,0,0,0,852,7801,1,0,0,0,854,7818,1,0,0,0,856,7825,1,0,0,0,858,7829,1,0,0,0,860,7839,1,0,0,0,862,7864,1,0,0,0,864,7866,1,0,0,0,866,7876,1,0,0,0,868,7901,1,0,0,0,870,7915,1,0,0,0,872,7917,1,0,0,0,874,7929,1,0,0,0,876,7941,1,0,0,0,878,7943,1,0,0,0,880,7965,1,0,0,0,882,7969,1,0,0,0,884,7974,1,0,0,0,886,7976,1,0,0,0,888,7984,1,0,0,0,890,7988,1,0,0,0,892,7990,1,0,0,0,894,7994,1,0,0,0,896,8002,1,0,0,0,898,8018,1,0,0,0,900,8022,1,0,0,0,902,8047,1,0,0,0,904,8049,1,0,0,0,906,8058,1,0,0,0,908,8060,1,0,0,0,910,8067,1,0,0,0,912,8071,1,0,0,0,914,8073,1,0,0,0,916,8075,1,0,0,0,918,8081,1,0,0,0,920,8083,1,0,0,0,922,8110,1,0,0,0,924,8115,1,0,0,0,926,8125,1,0,0,0,928,8127,1,0,0,0,930,8131,1,0,0,0,932,8146,1,0,0,0,934,8148,1,0,0,0,936,8165,1,0,0,0,938,8176,1,0,0,0,940,8178,1,0,0,0,942,8234,1,0,0,0,944,8258,1,0,0,0,946,8269,1,0,0,0,948,8272,1,0,0,0,950,8294,1,0,0,0,952,8296,1,0,0,0,954,8307,1,0,0,0,956,8309,1,0,0,0,958,8323,1,0,0,0,960,8325,1,0,0,0,962,8333,1,0,0,0,964,8340,1,0,0,0,966,8367,1,0,0,0,968,8369,1,0,0,0,970,8378,1,0,0,0,972,8383,1,0,0,0,974,8388,1,0,0,0,976,8398,1,0,0,0,978,8402,1,0,0,0,980,8404,1,0,0,0,982,8412,1,0,0,0,984,8416,1,0,0,0,986,8449,1,0,0,0,988,8459,1,0,0,0,990,8471,1,0,0,0,992,8473,1,0,0,0,994,8487,1,0,0,0,996,8516,1,0,0,0,998,8531,1,0,0,0,1e3,8537,1,0,0,0,1002,8543,1,0,0,0,1004,8555,1,0,0,0,1006,8573,1,0,0,0,1008,8580,1,0,0,0,1010,8584,1,0,0,0,1012,8588,1,0,0,0,1014,8590,1,0,0,0,1016,8596,1,0,0,0,1018,8599,1,0,0,0,1020,8606,1,0,0,0,1022,8619,1,0,0,0,1024,8623,1,0,0,0,1026,8625,1,0,0,0,1028,8634,1,0,0,0,1030,8643,1,0,0,0,1032,8671,1,0,0,0,1034,8673,1,0,0,0,1036,8683,1,0,0,0,1038,8685,1,0,0,0,1040,8687,1,0,0,0,1042,8691,1,0,0,0,1044,8699,1,0,0,0,1046,8707,1,0,0,0,1048,8715,1,0,0,0,1050,8729,1,0,0,0,1052,8738,1,0,0,0,1054,8742,1,0,0,0,1056,8746,1,0,0,0,1058,8772,1,0,0,0,1060,8786,1,0,0,0,1062,8801,1,0,0,0,1064,8811,1,0,0,0,1066,8815,1,0,0,0,1068,8823,1,0,0,0,1070,8831,1,0,0,0,1072,8837,1,0,0,0,1074,8841,1,0,0,0,1076,8848,1,0,0,0,1078,8853,1,0,0,0,1080,8868,1,0,0,0,1082,8948,1,0,0,0,1084,8950,1,0,0,0,1086,8952,1,0,0,0,1088,8982,1,0,0,0,1090,8986,1,0,0,0,1092,9165,1,0,0,0,1094,9172,1,0,0,0,1096,9185,1,0,0,0,1098,9187,1,0,0,0,1100,9192,1,0,0,0,1102,9200,1,0,0,0,1104,9205,1,0,0,0,1106,9212,1,0,0,0,1108,9229,1,0,0,0,1110,9231,1,0,0,0,1112,9241,1,0,0,0,1114,9250,1,0,0,0,1116,9255,1,0,0,0,1118,9257,1,0,0,0,1120,9265,1,0,0,0,1122,9275,1,0,0,0,1124,9277,1,0,0,0,1126,9286,1,0,0,0,1128,9292,1,0,0,0,1130,9307,1,0,0,0,1132,9315,1,0,0,0,1134,9324,1,0,0,0,1136,9336,1,0,0,0,1138,9350,1,0,0,0,1140,9352,1,0,0,0,1142,9359,1,0,0,0,1144,9365,1,0,0,0,1146,9369,1,0,0,0,1148,9371,1,0,0,0,1150,9379,1,0,0,0,1152,9387,1,0,0,0,1154,9401,1,0,0,0,1156,9403,1,0,0,0,1158,9411,1,0,0,0,1160,9424,1,0,0,0,1162,9426,1,0,0,0,1164,9434,1,0,0,0,1166,9441,1,0,0,0,1168,9454,1,0,0,0,1170,9464,1,0,0,0,1172,9466,1,0,0,0,1174,9468,1,0,0,0,1176,9482,1,0,0,0,1178,9511,1,0,0,0,1180,9520,1,0,0,0,1182,9527,1,0,0,0,1184,9529,1,0,0,0,1186,9536,1,0,0,0,1188,9540,1,0,0,0,1190,9548,1,0,0,0,1192,9552,1,0,0,0,1194,9554,1,0,0,0,1196,9575,1,0,0,0,1198,9578,1,0,0,0,1200,9585,1,0,0,0,1202,9590,1,0,0,0,1204,9592,1,0,0,0,1206,9608,1,0,0,0,1208,9610,1,0,0,0,1210,9618,1,0,0,0,1212,9620,1,0,0,0,1214,9628,1,0,0,0,1216,9630,1,0,0,0,1218,9638,1,0,0,0,1220,9640,1,0,0,0,1222,9648,1,0,0,0,1224,9650,1,0,0,0,1226,9652,1,0,0,0,1228,9654,1,0,0,0,1230,9662,1,0,0,0,1232,9666,1,0,0,0,1234,9674,1,0,0,0,1236,9676,1,0,0,0,1238,9678,1,0,0,0,1240,9687,1,0,0,0,1242,9721,1,0,0,0,1244,9723,1,0,0,0,1246,9725,1,0,0,0,1248,9727,1,0,0,0,1250,9729,1,0,0,0,1252,9731,1,0,0,0,1254,9745,1,0,0,0,1256,9750,1,0,0,0,1258,9757,1,0,0,0,1260,9762,1,0,0,0,1262,9764,1,0,0,0,1264,9778,1,0,0,0,1266,9784,1,0,0,0,1268,9790,1,0,0,0,1270,9796,1,0,0,0,1272,9804,1,0,0,0,1274,9813,1,0,0,0,1276,9815,1,0,0,0,1278,9817,1,0,0,0,1280,9871,1,0,0,0,1282,9873,1,0,0,0,1284,9875,1,0,0,0,1286,9877,1,0,0,0,1288,9879,1,0,0,0,1290,9886,1,0,0,0,1292,9909,1,0,0,0,1294,9911,1,0,0,0,1296,9917,1,0,0,0,1298,9921,1,0,0,0,1300,9923,1,0,0,0,1302,9930,1,0,0,0,1304,9937,1,0,0,0,1306,9940,1,0,0,0,1308,9944,1,0,0,0,1310,9951,1,0,0,0,1312,9953,1,0,0,0,1314,9977,1,0,0,0,1316,9979,1,0,0,0,1318,9986,1,0,0,0,1320,9988,1,0,0,0,1322,9996,1,0,0,0,1324,9999,1,0,0,0,1326,10003,1,0,0,0,1328,10005,1,0,0,0,1330,10009,1,0,0,0,1332,10011,1,0,0,0,1334,10016,1,0,0,0,1336,10021,1,0,0,0,1338,10027,1,0,0,0,1340,10031,1,0,0,0,1342,10033,1,0,0,0,1344,10038,1,0,0,0,1346,10068,1,0,0,0,1348,10070,1,0,0,0,1350,10088,1,0,0,0,1352,10092,1,0,0,0,1354,10094,1,0,0,0,1356,10099,1,0,0,0,1358,10108,1,0,0,0,1360,10110,1,0,0,0,1362,10118,1,0,0,0,1364,10122,1,0,0,0,1366,10124,1,0,0,0,1368,10128,1,0,0,0,1370,10139,1,0,0,0,1372,10156,1,0,0,0,1374,10162,1,0,0,0,1376,10164,1,0,0,0,1378,10174,1,0,0,0,1380,10177,1,0,0,0,1382,10181,1,0,0,0,1384,10189,1,0,0,0,1386,10191,1,0,0,0,1388,10194,1,0,0,0,1390,10199,1,0,0,0,1392,10204,1,0,0,0,1394,10226,1,0,0,0,1396,10240,1,0,0,0,1398,10244,1,0,0,0,1400,10249,1,0,0,0,1402,10251,1,0,0,0,1404,10253,1,0,0,0,1406,10265,1,0,0,0,1408,10267,1,0,0,0,1410,10272,1,0,0,0,1412,10274,1,0,0,0,1414,10292,1,0,0,0,1416,10320,1,0,0,0,1418,10330,1,0,0,0,1420,10339,1,0,0,0,1422,10351,1,0,0,0,1424,10353,1,0,0,0,1426,10357,1,0,0,0,1428,10365,1,0,0,0,1430,10367,1,0,0,0,1432,10374,1,0,0,0,1434,10377,1,0,0,0,1436,10393,1,0,0,0,1438,10395,1,0,0,0,1440,10409,1,0,0,0,1442,10411,1,0,0,0,1444,10449,1,0,0,0,1446,10451,1,0,0,0,1448,10459,1,0,0,0,1450,10464,1,0,0,0,1452,10483,1,0,0,0,1454,10485,1,0,0,0,1456,10490,1,0,0,0,1458,10494,1,0,0,0,1460,10497,1,0,0,0,1462,10501,1,0,0,0,1464,10511,1,0,0,0,1466,10525,1,0,0,0,1468,10529,1,0,0,0,1470,10534,1,0,0,0,1472,10537,1,0,0,0,1474,10541,1,0,0,0,1476,10546,1,0,0,0,1478,10557,1,0,0,0,1480,10561,1,0,0,0,1482,10565,1,0,0,0,1484,10569,1,0,0,0,1486,10574,1,0,0,0,1488,10578,1,0,0,0,1490,10580,1,0,0,0,1492,10582,1,0,0,0,1494,10592,1,0,0,0,1496,10594,1,0,0,0,1498,10596,1,0,0,0,1500,10598,1,0,0,0,1502,10600,1,0,0,0,1504,10609,1,0,0,0,1506,10611,1,0,0,0,1508,1510,3,4,2,0,1509,1508,1,0,0,0,1509,1510,1,0,0,0,1510,1511,1,0,0,0,1511,1512,5,0,0,1,1512,1,1,0,0,0,1513,1514,3,1288,644,0,1514,3,1,0,0,0,1515,1517,3,6,3,0,1516,1518,5,7,0,0,1517,1516,1,0,0,0,1517,1518,1,0,0,0,1518,1524,1,0,0,0,1519,1520,3,6,3,0,1520,1521,5,7,0,0,1521,1522,3,4,2,0,1522,1524,1,0,0,0,1523,1515,1,0,0,0,1523,1519,1,0,0,0,1524,5,1,0,0,0,1525,1648,3,408,204,0,1526,1648,3,738,369,0,1527,1648,3,732,366,0,1528,1648,3,734,367,0,1529,1648,3,524,262,0,1530,1648,3,744,372,0,1531,1648,3,428,214,0,1532,1648,3,288,144,0,1533,1648,3,292,146,0,1534,1648,3,300,150,0,1535,1648,3,324,162,0,1536,1648,3,600,300,0,1537,1648,3,652,326,0,1538,1648,3,654,327,0,1539,1648,3,666,333,0,1540,1648,3,656,328,0,1541,1648,3,664,332,0,1542,1648,3,344,172,0,1543,1648,3,256,128,0,1544,1648,3,740,370,0,1545,1648,3,88,44,0,1546,1648,3,644,322,0,1547,1648,3,126,63,0,1548,1648,3,674,337,0,1549,1648,3,28,14,0,1550,1648,3,24,12,0,1551,1648,3,682,341,0,1552,1648,3,240,120,0,1553,1648,3,752,376,0,1554,1648,3,750,375,0,1555,1648,3,340,170,0,1556,1648,3,762,381,0,1557,1648,3,10,5,0,1558,1648,3,84,42,0,1559,1648,3,132,66,0,1560,1648,3,756,378,0,1561,1648,3,480,240,0,1562,1648,3,78,39,0,1563,1648,3,134,67,0,1564,1648,3,358,179,0,1565,1648,3,242,121,0,1566,1648,3,412,206,0,1567,1648,3,622,311,0,1568,1648,3,754,377,0,1569,1648,3,742,371,0,1570,1648,3,284,142,0,1571,1648,3,294,147,0,1572,1648,3,318,159,0,1573,1648,3,326,163,0,1574,1648,3,552,276,0,1575,1648,3,248,124,0,1576,1648,3,432,216,0,1577,1648,3,442,221,0,1578,1648,3,668,334,0,1579,1648,3,444,222,0,1580,1648,3,342,171,0,1581,1648,3,268,134,0,1582,1648,3,34,17,0,1583,1648,3,254,127,0,1584,1648,3,152,76,0,1585,1648,3,676,338,0,1586,1648,3,238,119,0,1587,1648,3,278,139,0,1588,1648,3,630,315,0,1589,1648,3,362,181,0,1590,1648,3,400,200,0,1591,1648,3,22,11,0,1592,1648,3,334,167,0,1593,1648,3,724,362,0,1594,1648,3,802,401,0,1595,1648,3,852,426,0,1596,1648,3,414,207,0,1597,1648,3,830,415,0,1598,1648,3,86,43,0,1599,1648,3,616,308,0,1600,1648,3,626,313,0,1601,1648,3,450,225,0,1602,1648,3,452,226,0,1603,1648,3,454,227,0,1604,1648,3,458,229,0,1605,1648,3,684,342,0,1606,1648,3,282,141,0,1607,1648,3,634,317,0,1608,1648,3,30,15,0,1609,1648,3,338,169,0,1610,1648,3,736,368,0,1611,1648,3,798,399,0,1612,1648,3,782,391,0,1613,1648,3,490,245,0,1614,1648,3,498,249,0,1615,1648,3,516,258,0,1616,1648,3,328,164,0,1617,1648,3,532,266,0,1618,1648,3,804,402,0,1619,1648,3,822,411,0,1620,1648,3,704,352,0,1621,1648,3,252,126,0,1622,1648,3,722,361,0,1623,1648,3,834,417,0,1624,1648,3,700,350,0,1625,1648,3,792,396,0,1626,1648,3,456,228,0,1627,1648,3,636,318,0,1628,1648,3,604,302,0,1629,1648,3,602,301,0,1630,1648,3,606,303,0,1631,1648,3,646,323,0,1632,1648,3,500,250,0,1633,1648,3,518,259,0,1634,1648,3,686,343,0,1635,1648,3,484,242,0,1636,1648,3,858,429,0,1637,1648,3,708,354,0,1638,1648,3,476,238,0,1639,1648,3,706,353,0,1640,1648,3,844,422,0,1641,1648,3,760,380,0,1642,1648,3,66,33,0,1643,1648,3,42,21,0,1644,1648,3,76,38,0,1645,1648,3,718,359,0,1646,1648,3,8,4,0,1647,1525,1,0,0,0,1647,1526,1,0,0,0,1647,1527,1,0,0,0,1647,1528,1,0,0,0,1647,1529,1,0,0,0,1647,1530,1,0,0,0,1647,1531,1,0,0,0,1647,1532,1,0,0,0,1647,1533,1,0,0,0,1647,1534,1,0,0,0,1647,1535,1,0,0,0,1647,1536,1,0,0,0,1647,1537,1,0,0,0,1647,1538,1,0,0,0,1647,1539,1,0,0,0,1647,1540,1,0,0,0,1647,1541,1,0,0,0,1647,1542,1,0,0,0,1647,1543,1,0,0,0,1647,1544,1,0,0,0,1647,1545,1,0,0,0,1647,1546,1,0,0,0,1647,1547,1,0,0,0,1647,1548,1,0,0,0,1647,1549,1,0,0,0,1647,1550,1,0,0,0,1647,1551,1,0,0,0,1647,1552,1,0,0,0,1647,1553,1,0,0,0,1647,1554,1,0,0,0,1647,1555,1,0,0,0,1647,1556,1,0,0,0,1647,1557,1,0,0,0,1647,1558,1,0,0,0,1647,1559,1,0,0,0,1647,1560,1,0,0,0,1647,1561,1,0,0,0,1647,1562,1,0,0,0,1647,1563,1,0,0,0,1647,1564,1,0,0,0,1647,1565,1,0,0,0,1647,1566,1,0,0,0,1647,1567,1,0,0,0,1647,1568,1,0,0,0,1647,1569,1,0,0,0,1647,1570,1,0,0,0,1647,1571,1,0,0,0,1647,1572,1,0,0,0,1647,1573,1,0,0,0,1647,1574,1,0,0,0,1647,1575,1,0,0,0,1647,1576,1,0,0,0,1647,1577,1,0,0,0,1647,1578,1,0,0,0,1647,1579,1,0,0,0,1647,1580,1,0,0,0,1647,1581,1,0,0,0,1647,1582,1,0,0,0,1647,1583,1,0,0,0,1647,1584,1,0,0,0,1647,1585,1,0,0,0,1647,1586,1,0,0,0,1647,1587,1,0,0,0,1647,1588,1,0,0,0,1647,1589,1,0,0,0,1647,1590,1,0,0,0,1647,1591,1,0,0,0,1647,1592,1,0,0,0,1647,1593,1,0,0,0,1647,1594,1,0,0,0,1647,1595,1,0,0,0,1647,1596,1,0,0,0,1647,1597,1,0,0,0,1647,1598,1,0,0,0,1647,1599,1,0,0,0,1647,1600,1,0,0,0,1647,1601,1,0,0,0,1647,1602,1,0,0,0,1647,1603,1,0,0,0,1647,1604,1,0,0,0,1647,1605,1,0,0,0,1647,1606,1,0,0,0,1647,1607,1,0,0,0,1647,1608,1,0,0,0,1647,1609,1,0,0,0,1647,1610,1,0,0,0,1647,1611,1,0,0,0,1647,1612,1,0,0,0,1647,1613,1,0,0,0,1647,1614,1,0,0,0,1647,1615,1,0,0,0,1647,1616,1,0,0,0,1647,1617,1,0,0,0,1647,1618,1,0,0,0,1647,1619,1,0,0,0,1647,1620,1,0,0,0,1647,1621,1,0,0,0,1647,1622,1,0,0,0,1647,1623,1,0,0,0,1647,1624,1,0,0,0,1647,1625,1,0,0,0,1647,1626,1,0,0,0,1647,1627,1,0,0,0,1647,1628,1,0,0,0,1647,1629,1,0,0,0,1647,1630,1,0,0,0,1647,1631,1,0,0,0,1647,1632,1,0,0,0,1647,1633,1,0,0,0,1647,1634,1,0,0,0,1647,1635,1,0,0,0,1647,1636,1,0,0,0,1647,1637,1,0,0,0,1647,1638,1,0,0,0,1647,1639,1,0,0,0,1647,1640,1,0,0,0,1647,1641,1,0,0,0,1647,1642,1,0,0,0,1647,1643,1,0,0,0,1647,1644,1,0,0,0,1647,1645,1,0,0,0,1647,1646,1,0,0,0,1648,7,1,0,0,0,1649,1651,5,668,0,0,1650,1652,5,669,0,0,1651,1650,1,0,0,0,1651,1652,1,0,0,0,1652,9,1,0,0,0,1653,1654,5,433,0,0,1654,1655,3,1086,543,0,1655,11,1,0,0,0,1656,1659,5,105,0,0,1657,1659,1,0,0,0,1658,1656,1,0,0,0,1658,1657,1,0,0,0,1659,13,1,0,0,0,1660,1662,3,20,10,0,1661,1660,1,0,0,0,1662,1665,1,0,0,0,1663,1661,1,0,0,0,1663,1664,1,0,0,0,1664,15,1,0,0,0,1665,1663,1,0,0,0,1666,1668,3,18,9,0,1667,1666,1,0,0,0,1668,1671,1,0,0,0,1669,1667,1,0,0,0,1669,1670,1,0,0,0,1670,17,1,0,0,0,1671,1669,1,0,0,0,1672,1675,5,280,0,0,1673,1676,3,1252,626,0,1674,1676,5,78,0,0,1675,1673,1,0,0,0,1675,1674,1,0,0,0,1676,1692,1,0,0,0,1677,1678,7,0,0,0,1678,1679,5,280,0,0,1679,1692,3,1252,626,0,1680,1692,5,228,0,0,1681,1682,5,164,0,0,1682,1683,5,74,0,0,1683,1692,3,1258,629,0,1684,1685,5,364,0,0,1685,1686,5,361,0,0,1686,1692,3,1252,626,0,1687,1688,3,1506,753,0,1688,1689,3,1262,631,0,1689,1692,1,0,0,0,1690,1692,3,1274,637,0,1691,1672,1,0,0,0,1691,1677,1,0,0,0,1691,1680,1,0,0,0,1691,1681,1,0,0,0,1691,1684,1,0,0,0,1691,1687,1,0,0,0,1691,1690,1,0,0,0,1692,19,1,0,0,0,1693,1705,3,18,9,0,1694,1695,5,341,0,0,1695,1705,3,1250,625,0,1696,1697,5,134,0,0,1697,1705,3,1262,631,0,1698,1700,5,68,0,0,1699,1698,1,0,0,0,1699,1700,1,0,0,0,1700,1701,1,0,0,0,1701,1702,3,1506,753,0,1702,1703,3,1262,631,0,1703,1705,1,0,0,0,1704,1693,1,0,0,0,1704,1694,1,0,0,0,1704,1696,1,0,0,0,1704,1699,1,0,0,0,1705,21,1,0,0,0,1706,1707,5,46,0,0,1707,1708,3,1506,753,0,1708,1709,3,1260,630,0,1709,1710,3,12,6,0,1710,1711,3,14,7,0,1711,23,1,0,0,0,1712,1713,5,138,0,0,1713,1714,3,1506,753,0,1714,1715,3,1260,630,0,1715,1716,3,12,6,0,1716,1717,3,16,8,0,1717,25,1,0,0,0,1718,1723,1,0,0,0,1719,1720,5,68,0,0,1720,1721,5,175,0,0,1721,1723,3,1210,605,0,1722,1718,1,0,0,0,1722,1719,1,0,0,0,1723,27,1,0,0,0,1724,1725,5,138,0,0,1725,1727,3,1506,753,0,1726,1728,5,30,0,0,1727,1726,1,0,0,0,1727,1728,1,0,0,0,1728,1729,1,0,0,0,1729,1730,3,1260,630,0,1730,1731,3,26,13,0,1731,1732,3,72,36,0,1732,29,1,0,0,0,1733,1734,5,191,0,0,1734,1737,3,1506,753,0,1735,1736,5,220,0,0,1736,1738,5,389,0,0,1737,1735,1,0,0,0,1737,1738,1,0,0,0,1738,1739,1,0,0,0,1739,1740,3,1262,631,0,1740,31,1,0,0,0,1741,1742,7,1,0,0,1742,33,1,0,0,0,1743,1744,5,46,0,0,1744,1748,5,316,0,0,1745,1746,5,220,0,0,1746,1747,5,77,0,0,1747,1749,5,389,0,0,1748,1745,1,0,0,0,1748,1749,1,0,0,0,1749,1755,1,0,0,0,1750,1751,3,36,18,0,1751,1752,5,106,0,0,1752,1753,3,1260,630,0,1753,1756,1,0,0,0,1754,1756,3,1264,632,0,1755,1750,1,0,0,0,1755,1754,1,0,0,0,1756,1757,1,0,0,0,1757,1758,3,38,19,0,1758,35,1,0,0,0,1759,1762,3,1264,632,0,1760,1762,1,0,0,0,1761,1759,1,0,0,0,1761,1760,1,0,0,0,1762,37,1,0,0,0,1763,1765,3,40,20,0,1764,1763,1,0,0,0,1765,1768,1,0,0,0,1766,1764,1,0,0,0,1766,1767,1,0,0,0,1767,39,1,0,0,0,1768,1766,1,0,0,0,1769,1776,3,152,76,0,1770,1776,3,532,266,0,1771,1776,3,254,127,0,1772,1776,3,362,181,0,1773,1776,3,498,249,0,1774,1776,3,718,359,0,1775,1769,1,0,0,0,1775,1770,1,0,0,0,1775,1771,1,0,0,0,1775,1772,1,0,0,0,1775,1773,1,0,0,0,1775,1774,1,0,0,0,1776,41,1,0,0,0,1777,1779,5,326,0,0,1778,1780,7,2,0,0,1779,1778,1,0,0,0,1779,1780,1,0,0,0,1780,1781,1,0,0,0,1781,1782,3,44,22,0,1782,43,1,0,0,0,1783,1784,5,349,0,0,1784,1792,3,714,357,0,1785,1786,5,325,0,0,1786,1787,5,154,0,0,1787,1788,5,36,0,0,1788,1789,5,349,0,0,1789,1792,3,714,357,0,1790,1792,3,48,24,0,1791,1783,1,0,0,0,1791,1785,1,0,0,0,1791,1790,1,0,0,0,1792,45,1,0,0,0,1793,1794,3,50,25,0,1794,1795,7,3,0,0,1795,1796,3,52,26,0,1796,47,1,0,0,0,1797,1824,3,46,23,0,1798,1799,3,50,25,0,1799,1800,5,64,0,0,1800,1801,5,434,0,0,1801,1824,1,0,0,0,1802,1803,5,411,0,0,1803,1804,5,379,0,0,1804,1824,3,60,30,0,1805,1806,5,152,0,0,1806,1824,3,1252,626,0,1807,1808,5,316,0,0,1808,1824,3,1214,607,0,1809,1810,5,260,0,0,1810,1824,3,62,31,0,1811,1812,3,1506,753,0,1812,1813,3,64,32,0,1813,1824,1,0,0,0,1814,1815,5,325,0,0,1815,1816,5,106,0,0,1816,1824,3,64,32,0,1817,1818,5,376,0,0,1818,1819,5,272,0,0,1819,1824,3,1104,552,0,1820,1821,5,349,0,0,1821,1822,5,330,0,0,1822,1824,3,1252,626,0,1823,1797,1,0,0,0,1823,1798,1,0,0,0,1823,1802,1,0,0,0,1823,1805,1,0,0,0,1823,1807,1,0,0,0,1823,1809,1,0,0,0,1823,1811,1,0,0,0,1823,1814,1,0,0,0,1823,1817,1,0,0,0,1823,1820,1,0,0,0,1824,49,1,0,0,0,1825,1830,3,1264,632,0,1826,1827,5,11,0,0,1827,1829,3,1264,632,0,1828,1826,1,0,0,0,1829,1832,1,0,0,0,1830,1828,1,0,0,0,1830,1831,1,0,0,0,1831,51,1,0,0,0,1832,1830,1,0,0,0,1833,1838,3,54,27,0,1834,1835,5,6,0,0,1835,1837,3,54,27,0,1836,1834,1,0,0,0,1837,1840,1,0,0,0,1838,1836,1,0,0,0,1838,1839,1,0,0,0,1839,53,1,0,0,0,1840,1838,1,0,0,0,1841,1844,3,58,29,0,1842,1844,3,264,132,0,1843,1841,1,0,0,0,1843,1842,1,0,0,0,1844,55,1,0,0,0,1845,1846,5,293,0,0,1846,1851,7,4,0,0,1847,1848,5,303,0,0,1848,1851,5,293,0,0,1849,1851,5,323,0,0,1850,1845,1,0,0,0,1850,1847,1,0,0,0,1850,1849,1,0,0,0,1851,57,1,0,0,0,1852,1857,5,96,0,0,1853,1857,5,60,0,0,1854,1857,5,80,0,0,1855,1857,3,64,32,0,1856,1852,1,0,0,0,1856,1853,1,0,0,0,1856,1854,1,0,0,0,1856,1855,1,0,0,0,1857,59,1,0,0,0,1858,1874,3,1252,626,0,1859,1874,3,1274,637,0,1860,1861,3,1028,514,0,1861,1862,3,1252,626,0,1862,1863,3,1032,516,0,1863,1874,1,0,0,0,1864,1865,3,1028,514,0,1865,1866,5,2,0,0,1866,1867,3,1250,625,0,1867,1868,5,3,0,0,1868,1869,3,1252,626,0,1869,1874,1,0,0,0,1870,1874,3,264,132,0,1871,1874,5,53,0,0,1872,1874,5,245,0,0,1873,1858,1,0,0,0,1873,1859,1,0,0,0,1873,1860,1,0,0,0,1873,1864,1,0,0,0,1873,1870,1,0,0,0,1873,1871,1,0,0,0,1873,1872,1,0,0,0,1874,61,1,0,0,0,1875,1879,3,1252,626,0,1876,1879,5,53,0,0,1877,1879,1,0,0,0,1878,1875,1,0,0,0,1878,1876,1,0,0,0,1878,1877,1,0,0,0,1879,63,1,0,0,0,1880,1883,3,1270,635,0,1881,1883,3,1252,626,0,1882,1880,1,0,0,0,1882,1881,1,0,0,0,1883,65,1,0,0,0,1884,1885,5,306,0,0,1885,1886,3,68,34,0,1886,67,1,0,0,0,1887,1896,3,70,35,0,1888,1889,5,411,0,0,1889,1896,5,379,0,0,1890,1891,5,349,0,0,1891,1892,5,235,0,0,1892,1896,5,242,0,0,1893,1894,5,325,0,0,1894,1896,5,106,0,0,1895,1887,1,0,0,0,1895,1888,1,0,0,0,1895,1890,1,0,0,0,1895,1893,1,0,0,0,1896,69,1,0,0,0,1897,1900,3,50,25,0,1898,1900,5,30,0,0,1899,1897,1,0,0,0,1899,1898,1,0,0,0,1900,71,1,0,0,0,1901,1902,5,326,0,0,1902,1905,3,44,22,0,1903,1905,3,66,33,0,1904,1901,1,0,0,0,1904,1903,1,0,0,0,1905,73,1,0,0,0,1906,1907,5,326,0,0,1907,1910,3,48,24,0,1908,1910,3,66,33,0,1909,1906,1,0,0,0,1909,1908,1,0,0,0,1910,75,1,0,0,0,1911,1921,5,328,0,0,1912,1922,3,50,25,0,1913,1914,5,411,0,0,1914,1922,5,379,0,0,1915,1916,5,349,0,0,1916,1917,5,235,0,0,1917,1922,5,242,0,0,1918,1919,5,325,0,0,1919,1922,5,106,0,0,1920,1922,5,30,0,0,1921,1912,1,0,0,0,1921,1913,1,0,0,0,1921,1915,1,0,0,0,1921,1918,1,0,0,0,1921,1920,1,0,0,0,1922,77,1,0,0,0,1923,1924,5,326,0,0,1924,1925,5,165,0,0,1925,1926,3,80,40,0,1926,1927,3,82,41,0,1927,79,1,0,0,0,1928,1931,5,30,0,0,1929,1931,3,1208,604,0,1930,1928,1,0,0,0,1930,1929,1,0,0,0,1931,81,1,0,0,0,1932,1933,7,5,0,0,1933,83,1,0,0,0,1934,1935,5,155,0,0,1935,85,1,0,0,0,1936,1937,5,187,0,0,1937,1938,7,6,0,0,1938,87,1,0,0,0,1939,1940,5,138,0,0,1940,1943,5,92,0,0,1941,1942,5,220,0,0,1942,1944,5,389,0,0,1943,1941,1,0,0,0,1943,1944,1,0,0,0,1944,1945,1,0,0,0,1945,1948,3,958,479,0,1946,1949,3,90,45,0,1947,1949,3,92,46,0,1948,1946,1,0,0,0,1948,1947,1,0,0,0,1949,2040,1,0,0,0,1950,1951,5,138,0,0,1951,1952,5,92,0,0,1952,1953,5,30,0,0,1953,1954,5,68,0,0,1954,1955,5,344,0,0,1955,1959,3,1234,617,0,1956,1957,5,274,0,0,1957,1958,5,147,0,0,1958,1960,3,1262,631,0,1959,1956,1,0,0,0,1959,1960,1,0,0,0,1960,1961,1,0,0,0,1961,1962,5,326,0,0,1962,1963,5,344,0,0,1963,1964,3,1234,617,0,1964,1965,3,840,420,0,1965,2040,1,0,0,0,1966,1967,5,138,0,0,1967,1970,5,226,0,0,1968,1969,5,220,0,0,1969,1971,5,389,0,0,1970,1968,1,0,0,0,1970,1971,1,0,0,0,1971,1972,1,0,0,0,1972,1975,3,1218,609,0,1973,1976,3,90,45,0,1974,1976,3,94,47,0,1975,1973,1,0,0,0,1975,1974,1,0,0,0,1976,2040,1,0,0,0,1977,1978,5,138,0,0,1978,1979,5,226,0,0,1979,1980,5,30,0,0,1980,1981,5,68,0,0,1981,1982,5,344,0,0,1982,1986,3,1234,617,0,1983,1984,5,274,0,0,1984,1985,5,147,0,0,1985,1987,3,1262,631,0,1986,1983,1,0,0,0,1986,1987,1,0,0,0,1987,1988,1,0,0,0,1988,1989,5,326,0,0,1989,1990,5,344,0,0,1990,1991,3,1234,617,0,1991,1992,3,840,420,0,1992,2040,1,0,0,0,1993,1994,5,138,0,0,1994,1997,5,369,0,0,1995,1996,5,220,0,0,1996,1998,5,389,0,0,1997,1995,1,0,0,0,1997,1998,1,0,0,0,1998,1999,1,0,0,0,1999,2e3,3,956,478,0,2e3,2001,3,90,45,0,2001,2040,1,0,0,0,2002,2003,5,138,0,0,2003,2004,5,251,0,0,2004,2007,5,369,0,0,2005,2006,5,220,0,0,2006,2008,5,389,0,0,2007,2005,1,0,0,0,2007,2008,1,0,0,0,2008,2009,1,0,0,0,2009,2010,3,1230,615,0,2010,2011,3,90,45,0,2011,2040,1,0,0,0,2012,2013,5,138,0,0,2013,2014,5,251,0,0,2014,2015,5,369,0,0,2015,2016,5,30,0,0,2016,2017,5,68,0,0,2017,2018,5,344,0,0,2018,2022,3,1234,617,0,2019,2020,5,274,0,0,2020,2021,5,147,0,0,2021,2023,3,1262,631,0,2022,2019,1,0,0,0,2022,2023,1,0,0,0,2023,2024,1,0,0,0,2024,2025,5,326,0,0,2025,2026,5,344,0,0,2026,2027,3,1234,617,0,2027,2028,3,840,420,0,2028,2040,1,0,0,0,2029,2030,5,138,0,0,2030,2031,5,63,0,0,2031,2034,5,92,0,0,2032,2033,5,220,0,0,2033,2035,5,389,0,0,2034,2032,1,0,0,0,2034,2035,1,0,0,0,2035,2036,1,0,0,0,2036,2037,3,958,479,0,2037,2038,3,90,45,0,2038,2040,1,0,0,0,2039,1939,1,0,0,0,2039,1950,1,0,0,0,2039,1966,1,0,0,0,2039,1977,1,0,0,0,2039,1993,1,0,0,0,2039,2002,1,0,0,0,2039,2012,1,0,0,0,2039,2029,1,0,0,0,2040,89,1,0,0,0,2041,2046,3,96,48,0,2042,2043,5,6,0,0,2043,2045,3,96,48,0,2044,2042,1,0,0,0,2045,2048,1,0,0,0,2046,2044,1,0,0,0,2046,2047,1,0,0,0,2047,91,1,0,0,0,2048,2046,1,0,0,0,2049,2050,5,435,0,0,2050,2051,5,278,0,0,2051,2052,3,1230,615,0,2052,2053,3,120,60,0,2053,2058,1,0,0,0,2054,2055,5,436,0,0,2055,2056,5,278,0,0,2056,2058,3,1230,615,0,2057,2049,1,0,0,0,2057,2054,1,0,0,0,2058,93,1,0,0,0,2059,2060,5,435,0,0,2060,2061,5,278,0,0,2061,2062,3,1230,615,0,2062,95,1,0,0,0,2063,2064,5,133,0,0,2064,2305,3,168,84,0,2065,2066,5,133,0,0,2066,2067,5,220,0,0,2067,2068,5,77,0,0,2068,2069,5,389,0,0,2069,2305,3,168,84,0,2070,2071,5,133,0,0,2071,2072,5,44,0,0,2072,2305,3,168,84,0,2073,2074,5,133,0,0,2074,2075,5,44,0,0,2075,2076,5,220,0,0,2076,2077,5,77,0,0,2077,2078,5,389,0,0,2078,2305,3,168,84,0,2079,2080,5,138,0,0,2080,2081,3,648,324,0,2081,2082,3,1264,632,0,2082,2083,3,98,49,0,2083,2305,1,0,0,0,2084,2085,5,138,0,0,2085,2086,3,648,324,0,2086,2087,3,1264,632,0,2087,2088,5,191,0,0,2088,2089,5,77,0,0,2089,2090,5,78,0,0,2090,2305,1,0,0,0,2091,2092,5,138,0,0,2092,2093,3,648,324,0,2093,2094,3,1264,632,0,2094,2095,5,326,0,0,2095,2096,5,77,0,0,2096,2097,5,78,0,0,2097,2305,1,0,0,0,2098,2099,5,138,0,0,2099,2100,3,648,324,0,2100,2101,3,1264,632,0,2101,2102,5,191,0,0,2102,2103,5,437,0,0,2103,2305,1,0,0,0,2104,2105,5,138,0,0,2105,2106,3,648,324,0,2106,2107,3,1264,632,0,2107,2108,5,191,0,0,2108,2109,5,437,0,0,2109,2110,5,220,0,0,2110,2111,5,389,0,0,2111,2305,1,0,0,0,2112,2113,5,138,0,0,2113,2114,3,648,324,0,2114,2115,3,1264,632,0,2115,2116,5,326,0,0,2116,2117,5,335,0,0,2117,2118,3,1258,629,0,2118,2305,1,0,0,0,2119,2120,5,138,0,0,2120,2121,3,648,324,0,2121,2122,3,1250,625,0,2122,2123,5,326,0,0,2123,2124,5,335,0,0,2124,2125,3,1258,629,0,2125,2305,1,0,0,0,2126,2127,5,138,0,0,2127,2128,3,648,324,0,2128,2129,3,1264,632,0,2129,2130,5,326,0,0,2130,2131,3,108,54,0,2131,2305,1,0,0,0,2132,2133,5,138,0,0,2133,2134,3,648,324,0,2134,2135,3,1264,632,0,2135,2136,5,306,0,0,2136,2137,3,108,54,0,2137,2305,1,0,0,0,2138,2139,5,138,0,0,2139,2140,3,648,324,0,2140,2141,3,1264,632,0,2141,2142,5,326,0,0,2142,2143,5,338,0,0,2143,2144,3,1264,632,0,2144,2305,1,0,0,0,2145,2146,5,138,0,0,2146,2147,3,648,324,0,2147,2148,3,1264,632,0,2148,2149,5,133,0,0,2149,2150,5,438,0,0,2150,2151,3,178,89,0,2151,2152,5,36,0,0,2152,2153,5,219,0,0,2153,2154,3,258,129,0,2154,2305,1,0,0,0,2155,2156,5,138,0,0,2156,2157,3,648,324,0,2157,2158,3,1264,632,0,2158,2159,3,116,58,0,2159,2305,1,0,0,0,2160,2161,5,138,0,0,2161,2162,3,648,324,0,2162,2163,3,1264,632,0,2163,2164,5,191,0,0,2164,2165,5,219,0,0,2165,2305,1,0,0,0,2166,2167,5,138,0,0,2167,2168,3,648,324,0,2168,2169,3,1264,632,0,2169,2170,5,191,0,0,2170,2171,5,219,0,0,2171,2172,5,220,0,0,2172,2173,5,389,0,0,2173,2305,1,0,0,0,2174,2175,5,191,0,0,2175,2176,3,648,324,0,2176,2177,5,220,0,0,2177,2178,5,389,0,0,2178,2179,3,1264,632,0,2179,2180,3,100,50,0,2180,2305,1,0,0,0,2181,2182,5,191,0,0,2182,2183,3,648,324,0,2183,2184,3,1264,632,0,2184,2185,3,100,50,0,2185,2305,1,0,0,0,2186,2187,5,138,0,0,2187,2188,3,648,324,0,2188,2189,3,1264,632,0,2189,2190,3,650,325,0,2190,2191,5,353,0,0,2191,2192,3,996,498,0,2192,2193,3,102,51,0,2193,2194,3,104,52,0,2194,2305,1,0,0,0,2195,2196,5,138,0,0,2196,2197,3,648,324,0,2197,2198,3,1264,632,0,2198,2199,3,306,153,0,2199,2305,1,0,0,0,2200,2201,5,133,0,0,2201,2305,3,188,94,0,2202,2203,5,138,0,0,2203,2204,5,45,0,0,2204,2206,3,1224,612,0,2205,2207,3,398,199,0,2206,2205,1,0,0,0,2207,2208,1,0,0,0,2208,2206,1,0,0,0,2208,2209,1,0,0,0,2209,2305,1,0,0,0,2210,2211,5,365,0,0,2211,2212,5,45,0,0,2212,2305,3,1224,612,0,2213,2214,5,191,0,0,2214,2217,5,45,0,0,2215,2216,5,220,0,0,2216,2218,5,389,0,0,2217,2215,1,0,0,0,2217,2218,1,0,0,0,2218,2219,1,0,0,0,2219,2220,3,1224,612,0,2220,2221,3,100,50,0,2221,2305,1,0,0,0,2222,2223,5,326,0,0,2223,2224,5,372,0,0,2224,2305,5,270,0,0,2225,2226,5,158,0,0,2226,2227,5,80,0,0,2227,2305,3,1234,617,0,2228,2229,5,326,0,0,2229,2230,5,372,0,0,2230,2305,5,158,0,0,2231,2232,5,326,0,0,2232,2305,5,439,0,0,2233,2234,5,326,0,0,2234,2305,5,360,0,0,2235,2237,5,193,0,0,2236,2238,7,7,0,0,2237,2236,1,0,0,0,2237,2238,1,0,0,0,2238,2239,1,0,0,0,2239,2240,5,350,0,0,2240,2305,3,1222,611,0,2241,2242,5,193,0,0,2242,2243,5,350,0,0,2243,2305,7,8,0,0,2244,2245,5,186,0,0,2245,2246,5,350,0,0,2246,2305,3,1222,611,0,2247,2248,5,186,0,0,2248,2249,5,350,0,0,2249,2305,7,8,0,0,2250,2251,5,193,0,0,2251,2252,5,314,0,0,2252,2305,3,1234,617,0,2253,2254,5,193,0,0,2254,2255,5,139,0,0,2255,2256,5,314,0,0,2256,2305,3,1234,617,0,2257,2258,5,193,0,0,2258,2259,5,305,0,0,2259,2260,5,314,0,0,2260,2305,3,1234,617,0,2261,2262,5,186,0,0,2262,2263,5,314,0,0,2263,2305,3,1234,617,0,2264,2265,5,228,0,0,2265,2305,3,1230,615,0,2266,2267,5,262,0,0,2267,2268,5,228,0,0,2268,2305,3,1230,615,0,2269,2270,5,268,0,0,2270,2305,3,470,235,0,2271,2272,5,77,0,0,2272,2305,5,268,0,0,2273,2274,5,275,0,0,2274,2275,5,94,0,0,2275,2305,3,1260,630,0,2276,2277,5,326,0,0,2277,2278,5,344,0,0,2278,2305,3,1234,617,0,2279,2280,5,326,0,0,2280,2305,3,108,54,0,2281,2282,5,306,0,0,2282,2305,3,108,54,0,2283,2284,5,305,0,0,2284,2285,5,219,0,0,2285,2305,3,106,53,0,2286,2287,5,193,0,0,2287,2288,5,407,0,0,2288,2289,5,242,0,0,2289,2305,5,320,0,0,2290,2291,5,186,0,0,2291,2292,5,407,0,0,2292,2293,5,242,0,0,2293,2305,5,320,0,0,2294,2295,5,209,0,0,2295,2296,5,407,0,0,2296,2297,5,242,0,0,2297,2305,5,320,0,0,2298,2299,5,262,0,0,2299,2300,5,209,0,0,2300,2301,5,407,0,0,2301,2302,5,242,0,0,2302,2305,5,320,0,0,2303,2305,3,306,153,0,2304,2063,1,0,0,0,2304,2065,1,0,0,0,2304,2070,1,0,0,0,2304,2073,1,0,0,0,2304,2079,1,0,0,0,2304,2084,1,0,0,0,2304,2091,1,0,0,0,2304,2098,1,0,0,0,2304,2104,1,0,0,0,2304,2112,1,0,0,0,2304,2119,1,0,0,0,2304,2126,1,0,0,0,2304,2132,1,0,0,0,2304,2138,1,0,0,0,2304,2145,1,0,0,0,2304,2155,1,0,0,0,2304,2160,1,0,0,0,2304,2166,1,0,0,0,2304,2174,1,0,0,0,2304,2181,1,0,0,0,2304,2186,1,0,0,0,2304,2195,1,0,0,0,2304,2200,1,0,0,0,2304,2202,1,0,0,0,2304,2210,1,0,0,0,2304,2213,1,0,0,0,2304,2222,1,0,0,0,2304,2225,1,0,0,0,2304,2228,1,0,0,0,2304,2231,1,0,0,0,2304,2233,1,0,0,0,2304,2235,1,0,0,0,2304,2241,1,0,0,0,2304,2244,1,0,0,0,2304,2247,1,0,0,0,2304,2250,1,0,0,0,2304,2253,1,0,0,0,2304,2257,1,0,0,0,2304,2261,1,0,0,0,2304,2264,1,0,0,0,2304,2266,1,0,0,0,2304,2269,1,0,0,0,2304,2271,1,0,0,0,2304,2273,1,0,0,0,2304,2276,1,0,0,0,2304,2279,1,0,0,0,2304,2281,1,0,0,0,2304,2283,1,0,0,0,2304,2286,1,0,0,0,2304,2290,1,0,0,0,2304,2294,1,0,0,0,2304,2298,1,0,0,0,2304,2303,1,0,0,0,2305,97,1,0,0,0,2306,2307,5,326,0,0,2307,2308,5,53,0,0,2308,2312,3,1038,519,0,2309,2310,5,191,0,0,2310,2312,5,53,0,0,2311,2306,1,0,0,0,2311,2309,1,0,0,0,2312,99,1,0,0,0,2313,2317,5,150,0,0,2314,2317,5,308,0,0,2315,2317,1,0,0,0,2316,2313,1,0,0,0,2316,2314,1,0,0,0,2316,2315,1,0,0,0,2317,101,1,0,0,0,2318,2319,5,43,0,0,2319,2322,3,470,235,0,2320,2322,1,0,0,0,2321,2318,1,0,0,0,2321,2320,1,0,0,0,2322,103,1,0,0,0,2323,2324,5,100,0,0,2324,2327,3,1038,519,0,2325,2327,1,0,0,0,2326,2323,1,0,0,0,2326,2325,1,0,0,0,2327,105,1,0,0,0,2328,2335,5,263,0,0,2329,2335,5,113,0,0,2330,2335,5,53,0,0,2331,2332,5,100,0,0,2332,2333,5,226,0,0,2333,2335,3,1218,609,0,2334,2328,1,0,0,0,2334,2329,1,0,0,0,2334,2330,1,0,0,0,2334,2331,1,0,0,0,2335,107,1,0,0,0,2336,2337,5,2,0,0,2337,2338,3,112,56,0,2338,2339,5,3,0,0,2339,109,1,0,0,0,2340,2341,5,105,0,0,2341,2344,3,108,54,0,2342,2344,1,0,0,0,2343,2340,1,0,0,0,2343,2342,1,0,0,0,2344,111,1,0,0,0,2345,2350,3,114,57,0,2346,2347,5,6,0,0,2347,2349,3,114,57,0,2348,2346,1,0,0,0,2349,2352,1,0,0,0,2350,2348,1,0,0,0,2350,2351,1,0,0,0,2351,113,1,0,0,0,2352,2350,1,0,0,0,2353,2362,3,1272,636,0,2354,2355,5,10,0,0,2355,2363,3,420,210,0,2356,2357,5,11,0,0,2357,2360,3,1272,636,0,2358,2359,5,10,0,0,2359,2361,3,420,210,0,2360,2358,1,0,0,0,2360,2361,1,0,0,0,2361,2363,1,0,0,0,2362,2354,1,0,0,0,2362,2356,1,0,0,0,2362,2363,1,0,0,0,2363,115,1,0,0,0,2364,2366,3,118,59,0,2365,2364,1,0,0,0,2366,2367,1,0,0,0,2367,2365,1,0,0,0,2367,2368,1,0,0,0,2368,117,1,0,0,0,2369,2373,5,307,0,0,2370,2371,3,12,6,0,2371,2372,3,264,132,0,2372,2374,1,0,0,0,2373,2370,1,0,0,0,2373,2374,1,0,0,0,2374,2382,1,0,0,0,2375,2379,5,326,0,0,2376,2380,3,262,131,0,2377,2378,5,438,0,0,2378,2380,3,178,89,0,2379,2376,1,0,0,0,2379,2377,1,0,0,0,2380,2382,1,0,0,0,2381,2369,1,0,0,0,2381,2375,1,0,0,0,2382,119,1,0,0,0,2383,2384,5,62,0,0,2384,2385,5,415,0,0,2385,2386,5,105,0,0,2386,2387,5,2,0,0,2387,2388,3,124,62,0,2388,2389,5,3,0,0,2389,2410,1,0,0,0,2390,2391,5,62,0,0,2391,2392,5,415,0,0,2392,2393,5,68,0,0,2393,2394,5,2,0,0,2394,2395,3,1156,578,0,2395,2396,5,3,0,0,2396,2410,1,0,0,0,2397,2398,5,62,0,0,2398,2399,5,415,0,0,2399,2400,5,64,0,0,2400,2401,5,2,0,0,2401,2402,3,1156,578,0,2402,2403,5,3,0,0,2403,2404,5,94,0,0,2404,2405,5,2,0,0,2405,2406,3,1156,578,0,2406,2407,5,3,0,0,2407,2410,1,0,0,0,2408,2410,5,53,0,0,2409,2383,1,0,0,0,2409,2390,1,0,0,0,2409,2397,1,0,0,0,2409,2408,1,0,0,0,2410,121,1,0,0,0,2411,2412,3,1270,635,0,2412,2413,3,1250,625,0,2413,123,1,0,0,0,2414,2419,3,122,61,0,2415,2416,5,6,0,0,2416,2418,3,122,61,0,2417,2415,1,0,0,0,2418,2421,1,0,0,0,2419,2417,1,0,0,0,2419,2420,1,0,0,0,2420,125,1,0,0,0,2421,2419,1,0,0,0,2422,2423,5,138,0,0,2423,2424,5,353,0,0,2424,2425,3,470,235,0,2425,2426,3,128,64,0,2426,127,1,0,0,0,2427,2432,3,130,65,0,2428,2429,5,6,0,0,2429,2431,3,130,65,0,2430,2428,1,0,0,0,2431,2434,1,0,0,0,2432,2430,1,0,0,0,2432,2433,1,0,0,0,2433,129,1,0,0,0,2434,2432,1,0,0,0,2435,2436,5,133,0,0,2436,2437,5,143,0,0,2437,2438,3,982,491,0,2438,2439,3,100,50,0,2439,2459,1,0,0,0,2440,2441,5,191,0,0,2441,2444,5,143,0,0,2442,2443,5,220,0,0,2443,2445,5,389,0,0,2444,2442,1,0,0,0,2444,2445,1,0,0,0,2445,2446,1,0,0,0,2446,2447,3,1264,632,0,2447,2448,3,100,50,0,2448,2459,1,0,0,0,2449,2450,5,138,0,0,2450,2451,5,143,0,0,2451,2452,3,1264,632,0,2452,2453,3,650,325,0,2453,2454,5,353,0,0,2454,2455,3,996,498,0,2455,2456,3,102,51,0,2456,2457,3,100,50,0,2457,2459,1,0,0,0,2458,2435,1,0,0,0,2458,2440,1,0,0,0,2458,2449,1,0,0,0,2459,131,1,0,0,0,2460,2463,5,157,0,0,2461,2464,3,854,427,0,2462,2464,5,30,0,0,2463,2461,1,0,0,0,2463,2462,1,0,0,0,2464,133,1,0,0,0,2465,2467,5,169,0,0,2466,2468,5,107,0,0,2467,2466,1,0,0,0,2467,2468,1,0,0,0,2468,2469,1,0,0,0,2469,2470,3,1230,615,0,2470,2471,3,192,96,0,2471,2473,3,136,68,0,2472,2474,5,290,0,0,2473,2472,1,0,0,0,2473,2474,1,0,0,0,2474,2475,1,0,0,0,2475,2476,3,138,69,0,2476,2477,3,144,72,0,2477,2478,3,12,6,0,2478,2479,3,140,70,0,2479,2480,3,974,487,0,2480,2494,1,0,0,0,2481,2482,5,169,0,0,2482,2483,5,2,0,0,2483,2484,3,796,398,0,2484,2485,5,3,0,0,2485,2487,5,94,0,0,2486,2488,5,290,0,0,2487,2486,1,0,0,0,2487,2488,1,0,0,0,2488,2489,1,0,0,0,2489,2490,3,138,69,0,2490,2491,3,12,6,0,2491,2492,3,140,70,0,2492,2494,1,0,0,0,2493,2465,1,0,0,0,2493,2481,1,0,0,0,2494,135,1,0,0,0,2495,2496,7,9,0,0,2496,137,1,0,0,0,2497,2501,3,1252,626,0,2498,2501,5,336,0,0,2499,2501,5,337,0,0,2500,2497,1,0,0,0,2500,2498,1,0,0,0,2500,2499,1,0,0,0,2501,139,1,0,0,0,2502,2504,3,142,71,0,2503,2502,1,0,0,0,2504,2507,1,0,0,0,2505,2503,1,0,0,0,2505,2506,1,0,0,0,2506,2513,1,0,0,0,2507,2505,1,0,0,0,2508,2509,5,2,0,0,2509,2510,3,146,73,0,2510,2511,5,3,0,0,2511,2513,1,0,0,0,2512,2505,1,0,0,0,2512,2508,1,0,0,0,2513,141,1,0,0,0,2514,2550,5,107,0,0,2515,2550,5,112,0,0,2516,2517,5,183,0,0,2517,2518,3,748,374,0,2518,2519,3,1252,626,0,2519,2550,1,0,0,0,2520,2521,5,78,0,0,2521,2522,3,748,374,0,2522,2523,3,1252,626,0,2523,2550,1,0,0,0,2524,2550,5,171,0,0,2525,2550,5,216,0,0,2526,2527,5,291,0,0,2527,2528,3,748,374,0,2528,2529,3,1252,626,0,2529,2550,1,0,0,0,2530,2531,5,197,0,0,2531,2532,3,748,374,0,2532,2533,3,1252,626,0,2533,2550,1,0,0,0,2534,2535,5,209,0,0,2535,2536,5,291,0,0,2536,2550,3,194,97,0,2537,2538,5,209,0,0,2538,2539,5,291,0,0,2539,2550,5,9,0,0,2540,2541,5,209,0,0,2541,2542,5,77,0,0,2542,2543,5,78,0,0,2543,2550,3,194,97,0,2544,2545,5,209,0,0,2545,2546,5,78,0,0,2546,2550,3,194,97,0,2547,2548,5,194,0,0,2548,2550,3,1252,626,0,2549,2514,1,0,0,0,2549,2515,1,0,0,0,2549,2516,1,0,0,0,2549,2520,1,0,0,0,2549,2524,1,0,0,0,2549,2525,1,0,0,0,2549,2526,1,0,0,0,2549,2530,1,0,0,0,2549,2534,1,0,0,0,2549,2537,1,0,0,0,2549,2540,1,0,0,0,2549,2544,1,0,0,0,2549,2547,1,0,0,0,2550,143,1,0,0,0,2551,2553,5,100,0,0,2552,2551,1,0,0,0,2552,2553,1,0,0,0,2553,2554,1,0,0,0,2554,2555,5,184,0,0,2555,2558,3,1252,626,0,2556,2558,1,0,0,0,2557,2552,1,0,0,0,2557,2556,1,0,0,0,2558,145,1,0,0,0,2559,2564,3,148,74,0,2560,2561,5,6,0,0,2561,2563,3,148,74,0,2562,2560,1,0,0,0,2563,2566,1,0,0,0,2564,2562,1,0,0,0,2564,2565,1,0,0,0,2565,147,1,0,0,0,2566,2564,1,0,0,0,2567,2568,3,1272,636,0,2568,2569,3,150,75,0,2569,149,1,0,0,0,2570,2586,3,58,29,0,2571,2586,3,264,132,0,2572,2586,5,9,0,0,2573,2574,5,2,0,0,2574,2579,3,58,29,0,2575,2576,5,6,0,0,2576,2578,3,58,29,0,2577,2575,1,0,0,0,2578,2581,1,0,0,0,2579,2577,1,0,0,0,2579,2580,1,0,0,0,2580,2582,1,0,0,0,2581,2579,1,0,0,0,2582,2583,5,3,0,0,2583,2586,1,0,0,0,2584,2586,1,0,0,0,2585,2570,1,0,0,0,2585,2571,1,0,0,0,2585,2572,1,0,0,0,2585,2573,1,0,0,0,2585,2584,1,0,0,0,2586,151,1,0,0,0,2587,2588,5,46,0,0,2588,2589,3,154,77,0,2589,2593,5,92,0,0,2590,2591,5,220,0,0,2591,2592,5,77,0,0,2592,2594,5,389,0,0,2593,2590,1,0,0,0,2593,2594,1,0,0,0,2594,2595,1,0,0,0,2595,2626,3,1230,615,0,2596,2597,5,2,0,0,2597,2598,3,156,78,0,2598,2599,5,3,0,0,2599,2600,3,216,108,0,2600,2601,3,218,109,0,2601,2602,3,226,113,0,2602,2603,3,228,114,0,2603,2604,3,230,115,0,2604,2605,3,232,116,0,2605,2627,1,0,0,0,2606,2607,5,268,0,0,2607,2608,3,470,235,0,2608,2609,3,158,79,0,2609,2610,3,218,109,0,2610,2611,3,226,113,0,2611,2612,3,228,114,0,2612,2613,3,230,115,0,2613,2614,3,232,116,0,2614,2627,1,0,0,0,2615,2616,5,278,0,0,2616,2617,5,268,0,0,2617,2618,3,1230,615,0,2618,2619,3,158,79,0,2619,2620,3,120,60,0,2620,2621,3,218,109,0,2621,2622,3,226,113,0,2622,2623,3,228,114,0,2623,2624,3,230,115,0,2624,2625,3,232,116,0,2625,2627,1,0,0,0,2626,2596,1,0,0,0,2626,2606,1,0,0,0,2626,2615,1,0,0,0,2627,153,1,0,0,0,2628,2637,5,347,0,0,2629,2637,5,345,0,0,2630,2631,5,245,0,0,2631,2637,7,10,0,0,2632,2633,5,213,0,0,2633,2637,7,10,0,0,2634,2637,5,360,0,0,2635,2637,1,0,0,0,2636,2628,1,0,0,0,2636,2629,1,0,0,0,2636,2630,1,0,0,0,2636,2632,1,0,0,0,2636,2634,1,0,0,0,2636,2635,1,0,0,0,2637,155,1,0,0,0,2638,2641,3,160,80,0,2639,2641,1,0,0,0,2640,2638,1,0,0,0,2640,2639,1,0,0,0,2641,157,1,0,0,0,2642,2643,5,2,0,0,2643,2644,3,162,81,0,2644,2645,5,3,0,0,2645,2648,1,0,0,0,2646,2648,1,0,0,0,2647,2642,1,0,0,0,2647,2646,1,0,0,0,2648,159,1,0,0,0,2649,2654,3,164,82,0,2650,2651,5,6,0,0,2651,2653,3,164,82,0,2652,2650,1,0,0,0,2653,2656,1,0,0,0,2654,2652,1,0,0,0,2654,2655,1,0,0,0,2655,161,1,0,0,0,2656,2654,1,0,0,0,2657,2662,3,166,83,0,2658,2659,5,6,0,0,2659,2661,3,166,83,0,2660,2658,1,0,0,0,2661,2664,1,0,0,0,2662,2660,1,0,0,0,2662,2663,1,0,0,0,2663,163,1,0,0,0,2664,2662,1,0,0,0,2665,2669,3,188,94,0,2666,2669,3,182,91,0,2667,2669,3,168,84,0,2668,2665,1,0,0,0,2668,2666,1,0,0,0,2668,2667,1,0,0,0,2669,165,1,0,0,0,2670,2673,3,170,85,0,2671,2673,3,188,94,0,2672,2670,1,0,0,0,2672,2671,1,0,0,0,2673,167,1,0,0,0,2674,2675,3,1264,632,0,2675,2676,3,996,498,0,2676,2677,3,302,151,0,2677,2678,3,172,86,0,2678,169,1,0,0,0,2679,2682,3,1264,632,0,2680,2681,5,105,0,0,2681,2683,5,273,0,0,2682,2680,1,0,0,0,2682,2683,1,0,0,0,2683,2684,1,0,0,0,2684,2685,3,172,86,0,2685,171,1,0,0,0,2686,2688,3,174,87,0,2687,2686,1,0,0,0,2688,2691,1,0,0,0,2689,2687,1,0,0,0,2689,2690,1,0,0,0,2690,173,1,0,0,0,2691,2689,1,0,0,0,2692,2693,5,45,0,0,2693,2694,3,1234,617,0,2694,2695,3,176,88,0,2695,2701,1,0,0,0,2696,2701,3,176,88,0,2697,2701,3,180,90,0,2698,2699,5,43,0,0,2699,2701,3,470,235,0,2700,2692,1,0,0,0,2700,2696,1,0,0,0,2700,2697,1,0,0,0,2700,2698,1,0,0,0,2701,175,1,0,0,0,2702,2703,5,77,0,0,2703,2743,5,78,0,0,2704,2743,5,78,0,0,2705,2706,5,98,0,0,2706,2707,3,594,297,0,2707,2708,3,234,117,0,2708,2743,1,0,0,0,2709,2710,5,85,0,0,2710,2711,5,236,0,0,2711,2712,3,594,297,0,2712,2713,3,234,117,0,2713,2743,1,0,0,0,2714,2715,5,42,0,0,2715,2716,5,2,0,0,2716,2717,3,1038,519,0,2717,2720,5,3,0,0,2718,2719,5,262,0,0,2719,2721,5,228,0,0,2720,2718,1,0,0,0,2720,2721,1,0,0,0,2721,2743,1,0,0,0,2722,2723,5,53,0,0,2723,2743,3,1080,540,0,2724,2725,5,438,0,0,2725,2726,3,178,89,0,2726,2734,5,36,0,0,2727,2728,5,219,0,0,2728,2735,3,258,129,0,2729,2730,5,2,0,0,2730,2731,3,1038,519,0,2731,2732,5,3,0,0,2732,2733,5,440,0,0,2733,2735,1,0,0,0,2734,2727,1,0,0,0,2734,2729,1,0,0,0,2735,2743,1,0,0,0,2736,2737,5,86,0,0,2737,2738,3,1230,615,0,2738,2739,3,192,96,0,2739,2740,3,200,100,0,2740,2741,3,208,104,0,2741,2743,1,0,0,0,2742,2702,1,0,0,0,2742,2704,1,0,0,0,2742,2705,1,0,0,0,2742,2709,1,0,0,0,2742,2714,1,0,0,0,2742,2722,1,0,0,0,2742,2724,1,0,0,0,2742,2736,1,0,0,0,2743,177,1,0,0,0,2744,2748,5,139,0,0,2745,2746,5,147,0,0,2746,2748,5,53,0,0,2747,2744,1,0,0,0,2747,2745,1,0,0,0,2748,179,1,0,0,0,2749,2755,5,54,0,0,2750,2751,5,77,0,0,2751,2755,5,54,0,0,2752,2753,5,69,0,0,2753,2755,7,5,0,0,2754,2749,1,0,0,0,2754,2750,1,0,0,0,2754,2752,1,0,0,0,2755,181,1,0,0,0,2756,2757,5,120,0,0,2757,2758,3,1230,615,0,2758,2759,3,184,92,0,2759,183,1,0,0,0,2760,2761,7,11,0,0,2761,2763,3,186,93,0,2762,2760,1,0,0,0,2763,2766,1,0,0,0,2764,2762,1,0,0,0,2764,2765,1,0,0,0,2765,185,1,0,0,0,2766,2764,1,0,0,0,2767,2768,7,12,0,0,2768,187,1,0,0,0,2769,2770,5,45,0,0,2770,2771,3,1234,617,0,2771,2772,3,190,95,0,2772,2775,1,0,0,0,2773,2775,3,190,95,0,2774,2769,1,0,0,0,2774,2773,1,0,0,0,2775,189,1,0,0,0,2776,2777,5,42,0,0,2777,2778,5,2,0,0,2778,2779,3,1038,519,0,2779,2780,5,3,0,0,2780,2781,3,396,198,0,2781,2835,1,0,0,0,2782,2794,5,98,0,0,2783,2784,5,2,0,0,2784,2785,3,194,97,0,2785,2786,5,3,0,0,2786,2787,3,198,99,0,2787,2788,3,594,297,0,2788,2789,3,234,117,0,2789,2790,3,396,198,0,2790,2795,1,0,0,0,2791,2792,3,236,118,0,2792,2793,3,396,198,0,2793,2795,1,0,0,0,2794,2783,1,0,0,0,2794,2791,1,0,0,0,2795,2835,1,0,0,0,2796,2797,5,85,0,0,2797,2809,5,236,0,0,2798,2799,5,2,0,0,2799,2800,3,194,97,0,2800,2801,5,3,0,0,2801,2802,3,198,99,0,2802,2803,3,594,297,0,2803,2804,3,234,117,0,2804,2805,3,396,198,0,2805,2810,1,0,0,0,2806,2807,3,236,118,0,2807,2808,3,396,198,0,2808,2810,1,0,0,0,2809,2798,1,0,0,0,2809,2806,1,0,0,0,2810,2835,1,0,0,0,2811,2812,5,199,0,0,2812,2813,3,534,267,0,2813,2814,5,2,0,0,2814,2815,3,202,101,0,2815,2816,5,3,0,0,2816,2817,3,198,99,0,2817,2818,3,594,297,0,2818,2819,3,234,117,0,2819,2820,3,206,103,0,2820,2821,3,396,198,0,2821,2835,1,0,0,0,2822,2823,5,63,0,0,2823,2824,5,236,0,0,2824,2825,5,2,0,0,2825,2826,3,194,97,0,2826,2827,5,3,0,0,2827,2828,5,86,0,0,2828,2829,3,1230,615,0,2829,2830,3,192,96,0,2830,2831,3,200,100,0,2831,2832,3,208,104,0,2832,2833,3,396,198,0,2833,2835,1,0,0,0,2834,2776,1,0,0,0,2834,2782,1,0,0,0,2834,2796,1,0,0,0,2834,2811,1,0,0,0,2834,2822,1,0,0,0,2835,191,1,0,0,0,2836,2837,5,2,0,0,2837,2838,3,194,97,0,2838,2839,5,3,0,0,2839,2842,1,0,0,0,2840,2842,1,0,0,0,2841,2836,1,0,0,0,2841,2840,1,0,0,0,2842,193,1,0,0,0,2843,2848,3,196,98,0,2844,2845,5,6,0,0,2845,2847,3,196,98,0,2846,2844,1,0,0,0,2847,2850,1,0,0,0,2848,2846,1,0,0,0,2848,2849,1,0,0,0,2849,195,1,0,0,0,2850,2848,1,0,0,0,2851,2852,3,1264,632,0,2852,197,1,0,0,0,2853,2854,5,441,0,0,2854,2855,5,2,0,0,2855,2856,3,194,97,0,2856,2857,5,3,0,0,2857,2860,1,0,0,0,2858,2860,1,0,0,0,2859,2853,1,0,0,0,2859,2858,1,0,0,0,2860,199,1,0,0,0,2861,2862,5,249,0,0,2862,2865,7,13,0,0,2863,2865,1,0,0,0,2864,2861,1,0,0,0,2864,2863,1,0,0,0,2865,201,1,0,0,0,2866,2871,3,204,102,0,2867,2868,5,6,0,0,2868,2870,3,204,102,0,2869,2867,1,0,0,0,2870,2873,1,0,0,0,2871,2869,1,0,0,0,2871,2872,1,0,0,0,2872,203,1,0,0,0,2873,2871,1,0,0,0,2874,2875,3,540,270,0,2875,2882,5,105,0,0,2876,2883,3,610,305,0,2877,2878,5,271,0,0,2878,2879,5,2,0,0,2879,2880,3,610,305,0,2880,2881,5,3,0,0,2881,2883,1,0,0,0,2882,2876,1,0,0,0,2882,2877,1,0,0,0,2883,205,1,0,0,0,2884,2885,5,103,0,0,2885,2886,5,2,0,0,2886,2887,3,1038,519,0,2887,2888,5,3,0,0,2888,2891,1,0,0,0,2889,2891,1,0,0,0,2890,2884,1,0,0,0,2890,2889,1,0,0,0,2891,207,1,0,0,0,2892,2902,3,210,105,0,2893,2902,3,212,106,0,2894,2895,3,210,105,0,2895,2896,3,212,106,0,2896,2902,1,0,0,0,2897,2898,3,212,106,0,2898,2899,3,210,105,0,2899,2902,1,0,0,0,2900,2902,1,0,0,0,2901,2892,1,0,0,0,2901,2893,1,0,0,0,2901,2894,1,0,0,0,2901,2897,1,0,0,0,2901,2900,1,0,0,0,2902,209,1,0,0,0,2903,2904,5,80,0,0,2904,2905,5,362,0,0,2905,2906,3,214,107,0,2906,211,1,0,0,0,2907,2908,5,80,0,0,2908,2909,5,182,0,0,2909,2910,3,214,107,0,2910,213,1,0,0,0,2911,2912,5,262,0,0,2912,2918,5,132,0,0,2913,2918,5,308,0,0,2914,2918,5,150,0,0,2915,2916,5,326,0,0,2916,2918,7,14,0,0,2917,2911,1,0,0,0,2917,2913,1,0,0,0,2917,2914,1,0,0,0,2917,2915,1,0,0,0,2918,215,1,0,0,0,2919,2920,5,229,0,0,2920,2921,5,2,0,0,2921,2922,3,1208,604,0,2922,2923,5,3,0,0,2923,2926,1,0,0,0,2924,2926,1,0,0,0,2925,2919,1,0,0,0,2925,2924,1,0,0,0,2926,217,1,0,0,0,2927,2930,3,220,110,0,2928,2930,1,0,0,0,2929,2927,1,0,0,0,2929,2928,1,0,0,0,2930,219,1,0,0,0,2931,2932,5,278,0,0,2932,2933,5,147,0,0,2933,2934,3,1264,632,0,2934,2935,5,2,0,0,2935,2936,3,222,111,0,2936,2937,5,3,0,0,2937,221,1,0,0,0,2938,2943,3,224,112,0,2939,2940,5,6,0,0,2940,2942,3,224,112,0,2941,2939,1,0,0,0,2942,2945,1,0,0,0,2943,2941,1,0,0,0,2943,2944,1,0,0,0,2944,223,1,0,0,0,2945,2943,1,0,0,0,2946,2947,3,1264,632,0,2947,2948,3,544,272,0,2948,2949,3,546,273,0,2949,2961,1,0,0,0,2950,2951,3,1090,545,0,2951,2952,3,544,272,0,2952,2953,3,546,273,0,2953,2961,1,0,0,0,2954,2955,5,2,0,0,2955,2956,3,1038,519,0,2956,2957,5,3,0,0,2957,2958,3,544,272,0,2958,2959,3,546,273,0,2959,2961,1,0,0,0,2960,2946,1,0,0,0,2960,2950,1,0,0,0,2960,2954,1,0,0,0,2961,225,1,0,0,0,2962,2963,5,100,0,0,2963,2966,3,1234,617,0,2964,2966,1,0,0,0,2965,2962,1,0,0,0,2965,2964,1,0,0,0,2966,227,1,0,0,0,2967,2968,5,105,0,0,2968,2973,3,108,54,0,2969,2970,5,372,0,0,2970,2973,5,270,0,0,2971,2973,1,0,0,0,2972,2967,1,0,0,0,2972,2969,1,0,0,0,2972,2971,1,0,0,0,2973,229,1,0,0,0,2974,2975,5,80,0,0,2975,2981,5,161,0,0,2976,2982,5,191,0,0,2977,2978,5,182,0,0,2978,2982,5,313,0,0,2979,2980,5,285,0,0,2980,2982,5,313,0,0,2981,2976,1,0,0,0,2981,2977,1,0,0,0,2981,2979,1,0,0,0,2982,2985,1,0,0,0,2983,2985,1,0,0,0,2984,2974,1,0,0,0,2984,2983,1,0,0,0,2985,231,1,0,0,0,2986,2987,5,344,0,0,2987,2990,3,1234,617,0,2988,2990,1,0,0,0,2989,2986,1,0,0,0,2989,2988,1,0,0,0,2990,233,1,0,0,0,2991,2992,5,100,0,0,2992,2993,5,226,0,0,2993,2994,5,344,0,0,2994,2997,3,1234,617,0,2995,2997,1,0,0,0,2996,2991,1,0,0,0,2996,2995,1,0,0,0,2997,235,1,0,0,0,2998,2999,5,100,0,0,2999,3e3,5,226,0,0,3e3,3001,3,1218,609,0,3001,237,1,0,0,0,3002,3003,5,46,0,0,3003,3007,5,335,0,0,3004,3005,5,220,0,0,3005,3006,5,77,0,0,3006,3008,5,389,0,0,3007,3004,1,0,0,0,3007,3008,1,0,0,0,3008,3009,1,0,0,0,3009,3010,3,470,235,0,3010,3011,3,776,388,0,3011,3012,5,80,0,0,3012,3013,3,1156,578,0,3013,3014,5,64,0,0,3014,3015,3,938,469,0,3015,239,1,0,0,0,3016,3017,5,138,0,0,3017,3020,5,335,0,0,3018,3019,5,220,0,0,3019,3021,5,389,0,0,3020,3018,1,0,0,0,3020,3021,1,0,0,0,3021,3022,1,0,0,0,3022,3023,3,470,235,0,3023,3024,5,326,0,0,3024,3025,5,335,0,0,3025,3026,3,1258,629,0,3026,241,1,0,0,0,3027,3028,5,46,0,0,3028,3029,3,154,77,0,3029,3033,5,92,0,0,3030,3031,5,220,0,0,3031,3032,5,77,0,0,3032,3034,5,389,0,0,3033,3030,1,0,0,0,3033,3034,1,0,0,0,3034,3035,1,0,0,0,3035,3036,3,244,122,0,3036,3037,5,36,0,0,3037,3038,3,858,429,0,3038,3039,3,246,123,0,3039,243,1,0,0,0,3040,3041,3,1230,615,0,3041,3042,3,192,96,0,3042,3043,3,226,113,0,3043,3044,3,228,114,0,3044,3045,3,230,115,0,3045,3046,3,232,116,0,3046,245,1,0,0,0,3047,3051,5,105,0,0,3048,3052,5,174,0,0,3049,3050,5,262,0,0,3050,3052,5,174,0,0,3051,3048,1,0,0,0,3051,3049,1,0,0,0,3052,3055,1,0,0,0,3053,3055,1,0,0,0,3054,3047,1,0,0,0,3054,3053,1,0,0,0,3055,247,1,0,0,0,3056,3058,5,46,0,0,3057,3059,5,360,0,0,3058,3057,1,0,0,0,3058,3059,1,0,0,0,3059,3060,1,0,0,0,3060,3061,5,251,0,0,3061,3065,5,369,0,0,3062,3063,5,220,0,0,3063,3064,5,77,0,0,3064,3066,5,389,0,0,3065,3062,1,0,0,0,3065,3066,1,0,0,0,3066,3067,1,0,0,0,3067,3068,3,250,125,0,3068,3069,5,36,0,0,3069,3070,3,858,429,0,3070,3071,3,246,123,0,3071,249,1,0,0,0,3072,3073,3,1230,615,0,3073,3074,3,192,96,0,3074,3075,3,226,113,0,3075,3076,3,110,55,0,3076,3077,3,232,116,0,3077,251,1,0,0,0,3078,3079,5,298,0,0,3079,3080,5,251,0,0,3080,3082,5,369,0,0,3081,3083,5,109,0,0,3082,3081,1,0,0,0,3082,3083,1,0,0,0,3083,3084,1,0,0,0,3084,3085,3,1230,615,0,3085,3086,3,246,123,0,3086,253,1,0,0,0,3087,3088,5,46,0,0,3088,3089,3,154,77,0,3089,3093,5,321,0,0,3090,3091,5,220,0,0,3091,3092,5,77,0,0,3092,3094,5,389,0,0,3093,3090,1,0,0,0,3093,3094,1,0,0,0,3094,3095,1,0,0,0,3095,3097,3,1230,615,0,3096,3098,3,260,130,0,3097,3096,1,0,0,0,3097,3098,1,0,0,0,3098,255,1,0,0,0,3099,3100,5,138,0,0,3100,3103,5,321,0,0,3101,3102,5,220,0,0,3102,3104,5,389,0,0,3103,3101,1,0,0,0,3103,3104,1,0,0,0,3104,3105,1,0,0,0,3105,3106,3,1226,613,0,3106,3107,3,260,130,0,3107,257,1,0,0,0,3108,3109,5,2,0,0,3109,3110,3,260,130,0,3110,3111,5,3,0,0,3111,3114,1,0,0,0,3112,3114,1,0,0,0,3113,3108,1,0,0,0,3113,3112,1,0,0,0,3114,259,1,0,0,0,3115,3117,3,262,131,0,3116,3115,1,0,0,0,3117,3118,1,0,0,0,3118,3116,1,0,0,0,3118,3119,1,0,0,0,3119,261,1,0,0,0,3120,3121,5,36,0,0,3121,3152,3,998,499,0,3122,3123,5,148,0,0,3123,3152,3,264,132,0,3124,3152,5,173,0,0,3125,3127,5,225,0,0,3126,3128,5,147,0,0,3127,3126,1,0,0,0,3127,3128,1,0,0,0,3128,3129,1,0,0,0,3129,3152,3,264,132,0,3130,3131,5,252,0,0,3131,3152,3,264,132,0,3132,3133,5,255,0,0,3133,3152,3,264,132,0,3134,3135,5,262,0,0,3135,3152,7,15,0,0,3136,3137,5,274,0,0,3137,3138,5,147,0,0,3138,3152,3,470,235,0,3139,3140,5,321,0,0,3140,3141,5,259,0,0,3141,3152,3,470,235,0,3142,3143,5,333,0,0,3143,3144,3,12,6,0,3144,3145,3,264,132,0,3145,3152,1,0,0,0,3146,3147,5,307,0,0,3147,3149,3,12,6,0,3148,3150,3,264,132,0,3149,3148,1,0,0,0,3149,3150,1,0,0,0,3150,3152,1,0,0,0,3151,3120,1,0,0,0,3151,3122,1,0,0,0,3151,3124,1,0,0,0,3151,3125,1,0,0,0,3151,3130,1,0,0,0,3151,3132,1,0,0,0,3151,3134,1,0,0,0,3151,3136,1,0,0,0,3151,3139,1,0,0,0,3151,3142,1,0,0,0,3151,3146,1,0,0,0,3152,263,1,0,0,0,3153,3160,3,1248,624,0,3154,3155,5,12,0,0,3155,3160,3,1248,624,0,3156,3157,5,13,0,0,3157,3160,3,1248,624,0,3158,3160,3,1258,629,0,3159,3153,1,0,0,0,3159,3154,1,0,0,0,3159,3156,1,0,0,0,3159,3158,1,0,0,0,3160,265,1,0,0,0,3161,3166,3,264,132,0,3162,3163,5,6,0,0,3163,3165,3,264,132,0,3164,3162,1,0,0,0,3165,3168,1,0,0,0,3166,3164,1,0,0,0,3166,3167,1,0,0,0,3167,267,1,0,0,0,3168,3166,1,0,0,0,3169,3170,5,46,0,0,3170,3172,3,554,277,0,3171,3173,5,352,0,0,3172,3171,1,0,0,0,3172,3173,1,0,0,0,3173,3174,1,0,0,0,3174,3175,3,276,138,0,3175,3176,5,238,0,0,3176,3183,3,1234,617,0,3177,3178,5,215,0,0,3178,3179,3,270,135,0,3179,3181,3,272,136,0,3180,3182,3,274,137,0,3181,3180,1,0,0,0,3181,3182,1,0,0,0,3182,3184,1,0,0,0,3183,3177,1,0,0,0,3183,3184,1,0,0,0,3184,269,1,0,0,0,3185,3187,3,1234,617,0,3186,3188,3,472,236,0,3187,3186,1,0,0,0,3187,3188,1,0,0,0,3188,271,1,0,0,0,3189,3190,5,230,0,0,3190,3193,3,270,135,0,3191,3193,1,0,0,0,3192,3189,1,0,0,0,3192,3191,1,0,0,0,3193,273,1,0,0,0,3194,3195,5,366,0,0,3195,3199,3,270,135,0,3196,3197,5,262,0,0,3197,3199,5,366,0,0,3198,3194,1,0,0,0,3198,3196,1,0,0,0,3199,275,1,0,0,0,3200,3203,5,288,0,0,3201,3203,1,0,0,0,3202,3200,1,0,0,0,3202,3201,1,0,0,0,3203,277,1,0,0,0,3204,3205,5,46,0,0,3205,3206,5,344,0,0,3206,3207,3,1234,617,0,3207,3208,3,280,140,0,3208,3209,5,246,0,0,3209,3210,3,1252,626,0,3210,3211,3,110,55,0,3211,279,1,0,0,0,3212,3213,5,275,0,0,3213,3216,3,1260,630,0,3214,3216,1,0,0,0,3215,3212,1,0,0,0,3215,3214,1,0,0,0,3216,281,1,0,0,0,3217,3218,5,191,0,0,3218,3221,5,344,0,0,3219,3220,5,220,0,0,3220,3222,5,389,0,0,3221,3219,1,0,0,0,3221,3222,1,0,0,0,3222,3223,1,0,0,0,3223,3224,3,1234,617,0,3224,283,1,0,0,0,3225,3226,5,46,0,0,3226,3230,5,204,0,0,3227,3228,5,220,0,0,3228,3229,5,77,0,0,3229,3231,5,389,0,0,3230,3227,1,0,0,0,3230,3231,1,0,0,0,3231,3232,1,0,0,0,3232,3233,3,1234,617,0,3233,3237,3,12,6,0,3234,3236,3,286,143,0,3235,3234,1,0,0,0,3236,3239,1,0,0,0,3237,3235,1,0,0,0,3237,3238,1,0,0,0,3238,285,1,0,0,0,3239,3237,1,0,0,0,3240,3241,5,316,0,0,3241,3248,3,1214,607,0,3242,3243,5,368,0,0,3243,3248,3,64,32,0,3244,3245,5,64,0,0,3245,3248,3,64,32,0,3246,3248,5,150,0,0,3247,3240,1,0,0,0,3247,3242,1,0,0,0,3247,3244,1,0,0,0,3247,3246,1,0,0,0,3248,287,1,0,0,0,3249,3250,5,138,0,0,3250,3251,5,204,0,0,3251,3252,3,1234,617,0,3252,3256,5,362,0,0,3253,3255,3,290,145,0,3254,3253,1,0,0,0,3255,3258,1,0,0,0,3256,3254,1,0,0,0,3256,3257,1,0,0,0,3257,289,1,0,0,0,3258,3256,1,0,0,0,3259,3260,5,94,0,0,3260,3261,3,64,32,0,3261,291,1,0,0,0,3262,3263,5,138,0,0,3263,3264,5,204,0,0,3264,3265,3,1234,617,0,3265,3266,3,32,16,0,3266,3267,3,462,231,0,3267,3268,3,1234,617,0,3268,3402,1,0,0,0,3269,3270,5,138,0,0,3270,3271,5,204,0,0,3271,3272,3,1234,617,0,3272,3273,3,32,16,0,3273,3274,5,311,0,0,3274,3275,3,1260,630,0,3275,3402,1,0,0,0,3276,3277,5,138,0,0,3277,3278,5,204,0,0,3278,3279,3,1234,617,0,3279,3280,3,32,16,0,3280,3281,5,175,0,0,3281,3282,3,1210,605,0,3282,3402,1,0,0,0,3283,3284,5,138,0,0,3284,3285,5,204,0,0,3285,3286,3,1234,617,0,3286,3287,3,32,16,0,3287,3288,5,316,0,0,3288,3289,3,1214,607,0,3289,3402,1,0,0,0,3290,3291,5,138,0,0,3291,3292,5,204,0,0,3292,3293,3,1234,617,0,3293,3294,3,32,16,0,3294,3295,5,226,0,0,3295,3296,3,1218,609,0,3296,3402,1,0,0,0,3297,3298,5,138,0,0,3298,3299,5,204,0,0,3299,3300,3,1234,617,0,3300,3301,3,32,16,0,3301,3302,3,460,230,0,3302,3303,3,470,235,0,3303,3402,1,0,0,0,3304,3305,5,138,0,0,3305,3306,5,204,0,0,3306,3307,3,1234,617,0,3307,3308,3,32,16,0,3308,3309,5,321,0,0,3309,3310,3,1226,613,0,3310,3402,1,0,0,0,3311,3312,5,138,0,0,3312,3313,5,204,0,0,3313,3314,3,1234,617,0,3314,3315,3,32,16,0,3315,3316,5,136,0,0,3316,3317,3,580,290,0,3317,3402,1,0,0,0,3318,3319,5,138,0,0,3319,3320,5,204,0,0,3320,3321,3,1234,617,0,3321,3322,3,32,16,0,3322,3323,5,41,0,0,3323,3324,5,2,0,0,3324,3325,3,996,498,0,3325,3326,5,36,0,0,3326,3327,3,996,498,0,3327,3328,5,3,0,0,3328,3402,1,0,0,0,3329,3330,5,138,0,0,3330,3331,5,204,0,0,3331,3332,3,1234,617,0,3332,3333,3,32,16,0,3333,3334,5,189,0,0,3334,3335,3,996,498,0,3335,3402,1,0,0,0,3336,3337,5,138,0,0,3337,3338,5,204,0,0,3338,3339,3,1234,617,0,3339,3340,3,32,16,0,3340,3341,5,211,0,0,3341,3342,3,560,280,0,3342,3402,1,0,0,0,3343,3344,5,138,0,0,3344,3345,5,204,0,0,3345,3346,3,1234,617,0,3346,3347,3,32,16,0,3347,3348,5,271,0,0,3348,3349,3,614,307,0,3349,3402,1,0,0,0,3350,3351,5,138,0,0,3351,3352,5,204,0,0,3352,3353,3,1234,617,0,3353,3354,3,32,16,0,3354,3355,5,271,0,0,3355,3356,5,156,0,0,3356,3357,3,470,235,0,3357,3358,5,100,0,0,3358,3359,3,1234,617,0,3359,3402,1,0,0,0,3360,3361,5,138,0,0,3361,3362,5,204,0,0,3362,3363,3,1234,617,0,3363,3364,3,32,16,0,3364,3365,5,271,0,0,3365,3366,5,206,0,0,3366,3367,3,470,235,0,3367,3368,5,100,0,0,3368,3369,3,1234,617,0,3369,3402,1,0,0,0,3370,3371,5,138,0,0,3371,3372,5,204,0,0,3372,3373,3,1234,617,0,3373,3374,3,32,16,0,3374,3375,5,289,0,0,3375,3376,3,560,280,0,3376,3402,1,0,0,0,3377,3378,5,138,0,0,3378,3379,5,204,0,0,3379,3380,3,1234,617,0,3380,3381,3,32,16,0,3381,3382,5,442,0,0,3382,3383,3,560,280,0,3383,3402,1,0,0,0,3384,3385,5,138,0,0,3385,3386,5,204,0,0,3386,3387,3,1234,617,0,3387,3388,3,32,16,0,3388,3389,5,443,0,0,3389,3390,5,62,0,0,3390,3391,3,996,498,0,3391,3392,5,238,0,0,3392,3393,3,1234,617,0,3393,3402,1,0,0,0,3394,3395,5,138,0,0,3395,3396,5,204,0,0,3396,3397,3,1234,617,0,3397,3398,3,32,16,0,3398,3399,5,353,0,0,3399,3400,3,996,498,0,3400,3402,1,0,0,0,3401,3262,1,0,0,0,3401,3269,1,0,0,0,3401,3276,1,0,0,0,3401,3283,1,0,0,0,3401,3290,1,0,0,0,3401,3297,1,0,0,0,3401,3304,1,0,0,0,3401,3311,1,0,0,0,3401,3318,1,0,0,0,3401,3329,1,0,0,0,3401,3336,1,0,0,0,3401,3343,1,0,0,0,3401,3350,1,0,0,0,3401,3360,1,0,0,0,3401,3370,1,0,0,0,3401,3377,1,0,0,0,3401,3384,1,0,0,0,3401,3394,1,0,0,0,3402,293,1,0,0,0,3403,3404,5,46,0,0,3404,3405,5,63,0,0,3405,3406,5,174,0,0,3406,3407,5,374,0,0,3407,3409,3,1234,617,0,3408,3410,3,298,149,0,3409,3408,1,0,0,0,3409,3410,1,0,0,0,3410,3411,1,0,0,0,3411,3412,3,302,151,0,3412,295,1,0,0,0,3413,3414,5,215,0,0,3414,3422,3,270,135,0,3415,3416,5,262,0,0,3416,3422,5,215,0,0,3417,3418,5,366,0,0,3418,3422,3,270,135,0,3419,3420,5,262,0,0,3420,3422,5,366,0,0,3421,3413,1,0,0,0,3421,3415,1,0,0,0,3421,3417,1,0,0,0,3421,3419,1,0,0,0,3422,297,1,0,0,0,3423,3425,3,296,148,0,3424,3423,1,0,0,0,3425,3426,1,0,0,0,3426,3424,1,0,0,0,3426,3427,1,0,0,0,3427,299,1,0,0,0,3428,3429,5,138,0,0,3429,3430,5,63,0,0,3430,3431,5,174,0,0,3431,3432,5,374,0,0,3432,3434,3,1234,617,0,3433,3435,3,298,149,0,3434,3433,1,0,0,0,3434,3435,1,0,0,0,3435,3436,1,0,0,0,3436,3437,3,306,153,0,3437,3446,1,0,0,0,3438,3439,5,138,0,0,3439,3440,5,63,0,0,3440,3441,5,174,0,0,3441,3442,5,374,0,0,3442,3443,3,1234,617,0,3443,3444,3,298,149,0,3444,3446,1,0,0,0,3445,3428,1,0,0,0,3445,3438,1,0,0,0,3446,301,1,0,0,0,3447,3448,5,273,0,0,3448,3449,5,2,0,0,3449,3450,3,304,152,0,3450,3451,5,3,0,0,3451,3454,1,0,0,0,3452,3454,1,0,0,0,3453,3447,1,0,0,0,3453,3452,1,0,0,0,3454,303,1,0,0,0,3455,3460,3,312,156,0,3456,3457,5,6,0,0,3457,3459,3,312,156,0,3458,3456,1,0,0,0,3459,3462,1,0,0,0,3460,3458,1,0,0,0,3460,3461,1,0,0,0,3461,305,1,0,0,0,3462,3460,1,0,0,0,3463,3464,5,273,0,0,3464,3465,5,2,0,0,3465,3466,3,308,154,0,3466,3467,5,3,0,0,3467,307,1,0,0,0,3468,3473,3,310,155,0,3469,3470,5,6,0,0,3470,3472,3,310,155,0,3471,3469,1,0,0,0,3472,3475,1,0,0,0,3473,3471,1,0,0,0,3473,3474,1,0,0,0,3474,309,1,0,0,0,3475,3473,1,0,0,0,3476,3484,3,312,156,0,3477,3478,5,326,0,0,3478,3484,3,312,156,0,3479,3480,5,133,0,0,3480,3484,3,312,156,0,3481,3482,5,191,0,0,3482,3484,3,314,157,0,3483,3476,1,0,0,0,3483,3477,1,0,0,0,3483,3479,1,0,0,0,3483,3481,1,0,0,0,3484,311,1,0,0,0,3485,3486,3,314,157,0,3486,3487,3,316,158,0,3487,313,1,0,0,0,3488,3489,3,1272,636,0,3489,315,1,0,0,0,3490,3491,3,1252,626,0,3491,317,1,0,0,0,3492,3493,5,46,0,0,3493,3494,5,324,0,0,3494,3495,3,1234,617,0,3495,3497,3,320,160,0,3496,3498,3,322,161,0,3497,3496,1,0,0,0,3497,3498,1,0,0,0,3498,3499,1,0,0,0,3499,3500,5,63,0,0,3500,3501,5,174,0,0,3501,3502,5,374,0,0,3502,3503,3,1234,617,0,3503,3504,3,302,151,0,3504,3522,1,0,0,0,3505,3506,5,46,0,0,3506,3507,5,324,0,0,3507,3508,5,220,0,0,3508,3509,5,77,0,0,3509,3510,5,389,0,0,3510,3511,3,1234,617,0,3511,3513,3,320,160,0,3512,3514,3,322,161,0,3513,3512,1,0,0,0,3513,3514,1,0,0,0,3514,3515,1,0,0,0,3515,3516,5,63,0,0,3516,3517,5,174,0,0,3517,3518,5,374,0,0,3518,3519,3,1234,617,0,3519,3520,3,302,151,0,3520,3522,1,0,0,0,3521,3492,1,0,0,0,3521,3505,1,0,0,0,3522,319,1,0,0,0,3523,3524,5,353,0,0,3524,3527,3,1252,626,0,3525,3527,1,0,0,0,3526,3523,1,0,0,0,3526,3525,1,0,0,0,3527,321,1,0,0,0,3528,3531,5,368,0,0,3529,3532,3,1252,626,0,3530,3532,5,78,0,0,3531,3529,1,0,0,0,3531,3530,1,0,0,0,3532,323,1,0,0,0,3533,3534,5,138,0,0,3534,3535,5,324,0,0,3535,3541,3,1234,617,0,3536,3542,3,306,153,0,3537,3539,3,322,161,0,3538,3540,3,306,153,0,3539,3538,1,0,0,0,3539,3540,1,0,0,0,3540,3542,1,0,0,0,3541,3536,1,0,0,0,3541,3537,1,0,0,0,3542,325,1,0,0,0,3543,3544,5,46,0,0,3544,3545,5,63,0,0,3545,3546,5,92,0,0,3546,3547,3,1230,615,0,3547,3548,5,2,0,0,3548,3549,3,156,78,0,3549,3550,5,3,0,0,3550,3551,3,216,108,0,3551,3552,5,324,0,0,3552,3553,3,1234,617,0,3553,3554,3,302,151,0,3554,3600,1,0,0,0,3555,3556,5,46,0,0,3556,3557,5,63,0,0,3557,3558,5,92,0,0,3558,3559,5,220,0,0,3559,3560,5,77,0,0,3560,3561,5,389,0,0,3561,3562,3,1230,615,0,3562,3563,5,2,0,0,3563,3564,3,156,78,0,3564,3565,5,3,0,0,3565,3566,3,216,108,0,3566,3567,5,324,0,0,3567,3568,3,1234,617,0,3568,3569,3,302,151,0,3569,3600,1,0,0,0,3570,3571,5,46,0,0,3571,3572,5,63,0,0,3572,3573,5,92,0,0,3573,3574,3,1230,615,0,3574,3575,5,278,0,0,3575,3576,5,268,0,0,3576,3577,3,1230,615,0,3577,3578,3,158,79,0,3578,3579,3,120,60,0,3579,3580,5,324,0,0,3580,3581,3,1234,617,0,3581,3582,3,302,151,0,3582,3600,1,0,0,0,3583,3584,5,46,0,0,3584,3585,5,63,0,0,3585,3586,5,92,0,0,3586,3587,5,220,0,0,3587,3588,5,77,0,0,3588,3589,5,389,0,0,3589,3590,3,1230,615,0,3590,3591,5,278,0,0,3591,3592,5,268,0,0,3592,3593,3,1230,615,0,3593,3594,3,158,79,0,3594,3595,3,120,60,0,3595,3596,5,324,0,0,3596,3597,3,1234,617,0,3597,3598,3,302,151,0,3598,3600,1,0,0,0,3599,3543,1,0,0,0,3599,3555,1,0,0,0,3599,3570,1,0,0,0,3599,3583,1,0,0,0,3600,327,1,0,0,0,3601,3602,5,444,0,0,3602,3603,5,63,0,0,3603,3604,5,316,0,0,3604,3605,3,1234,617,0,3605,3606,3,332,166,0,3606,3607,5,64,0,0,3607,3608,5,324,0,0,3608,3609,3,1234,617,0,3609,3610,5,71,0,0,3610,3611,3,1234,617,0,3611,3612,3,302,151,0,3612,329,1,0,0,0,3613,3614,5,74,0,0,3614,3617,5,94,0,0,3615,3617,5,59,0,0,3616,3613,1,0,0,0,3616,3615,1,0,0,0,3617,331,1,0,0,0,3618,3619,3,330,165,0,3619,3620,5,2,0,0,3620,3621,3,960,480,0,3621,3622,5,3,0,0,3622,3625,1,0,0,0,3623,3625,1,0,0,0,3624,3618,1,0,0,0,3624,3623,1,0,0,0,3625,333,1,0,0,0,3626,3627,5,46,0,0,3627,3628,5,99,0,0,3628,3629,5,248,0,0,3629,3630,5,62,0,0,3630,3631,3,336,168,0,3631,3632,5,324,0,0,3632,3633,3,1234,617,0,3633,3634,3,302,151,0,3634,3648,1,0,0,0,3635,3636,5,46,0,0,3636,3637,5,99,0,0,3637,3638,5,248,0,0,3638,3639,5,220,0,0,3639,3640,5,77,0,0,3640,3641,5,389,0,0,3641,3642,5,62,0,0,3642,3643,3,336,168,0,3643,3644,5,324,0,0,3644,3645,3,1234,617,0,3645,3646,3,302,151,0,3646,3648,1,0,0,0,3647,3626,1,0,0,0,3647,3635,1,0,0,0,3648,335,1,0,0,0,3649,3652,3,1260,630,0,3650,3652,5,99,0,0,3651,3649,1,0,0,0,3651,3650,1,0,0,0,3652,337,1,0,0,0,3653,3654,5,191,0,0,3654,3655,5,99,0,0,3655,3656,5,248,0,0,3656,3657,5,62,0,0,3657,3658,3,336,168,0,3658,3659,5,324,0,0,3659,3660,3,1234,617,0,3660,3672,1,0,0,0,3661,3662,5,191,0,0,3662,3663,5,99,0,0,3663,3664,5,248,0,0,3664,3665,5,220,0,0,3665,3666,5,389,0,0,3666,3667,5,62,0,0,3667,3668,3,336,168,0,3668,3669,5,324,0,0,3669,3670,3,1234,617,0,3670,3672,1,0,0,0,3671,3653,1,0,0,0,3671,3661,1,0,0,0,3672,339,1,0,0,0,3673,3674,5,138,0,0,3674,3675,5,99,0,0,3675,3676,5,248,0,0,3676,3677,5,62,0,0,3677,3678,3,336,168,0,3678,3679,5,324,0,0,3679,3680,3,1234,617,0,3680,3681,3,306,153,0,3681,341,1,0,0,0,3682,3683,5,46,0,0,3683,3684,5,445,0,0,3684,3685,3,1234,617,0,3685,3686,5,80,0,0,3686,3687,3,1230,615,0,3687,3688,3,352,176,0,3688,3689,3,354,177,0,3689,3690,3,350,175,0,3690,3691,3,346,173,0,3691,3692,3,348,174,0,3692,343,1,0,0,0,3693,3694,5,138,0,0,3694,3695,5,445,0,0,3695,3696,3,1234,617,0,3696,3697,5,80,0,0,3697,3698,3,1230,615,0,3698,3699,3,350,175,0,3699,3700,3,346,173,0,3700,3701,3,348,174,0,3701,345,1,0,0,0,3702,3703,5,100,0,0,3703,3704,5,2,0,0,3704,3705,3,1038,519,0,3705,3706,5,3,0,0,3706,3709,1,0,0,0,3707,3709,1,0,0,0,3708,3702,1,0,0,0,3708,3707,1,0,0,0,3709,347,1,0,0,0,3710,3711,5,105,0,0,3711,3712,5,42,0,0,3712,3713,5,2,0,0,3713,3714,3,1038,519,0,3714,3715,5,3,0,0,3715,3718,1,0,0,0,3716,3718,1,0,0,0,3717,3710,1,0,0,0,3717,3716,1,0,0,0,3718,349,1,0,0,0,3719,3720,5,94,0,0,3720,3723,3,1262,631,0,3721,3723,1,0,0,0,3722,3719,1,0,0,0,3722,3721,1,0,0,0,3723,351,1,0,0,0,3724,3725,5,36,0,0,3725,3728,3,1274,637,0,3726,3728,1,0,0,0,3727,3724,1,0,0,0,3727,3726,1,0,0,0,3728,353,1,0,0,0,3729,3730,5,62,0,0,3730,3733,3,356,178,0,3731,3733,1,0,0,0,3732,3729,1,0,0,0,3732,3731,1,0,0,0,3733,355,1,0,0,0,3734,3735,7,16,0,0,3735,357,1,0,0,0,3736,3737,5,46,0,0,3737,3738,5,131,0,0,3738,3739,5,446,0,0,3739,3740,3,1234,617,0,3740,3741,5,353,0,0,3741,3742,3,360,180,0,3742,3743,5,215,0,0,3743,3744,3,270,135,0,3744,359,1,0,0,0,3745,3746,7,17,0,0,3746,361,1,0,0,0,3747,3748,5,46,0,0,3748,3749,5,350,0,0,3749,3750,3,1234,617,0,3750,3751,3,364,182,0,3751,3752,3,366,183,0,3752,3753,5,80,0,0,3753,3754,3,1230,615,0,3754,3755,3,370,185,0,3755,3756,3,382,191,0,3756,3757,3,386,193,0,3757,3758,5,202,0,0,3758,3759,3,388,194,0,3759,3760,3,1240,620,0,3760,3761,5,2,0,0,3761,3762,3,390,195,0,3762,3763,5,3,0,0,3763,3786,1,0,0,0,3764,3765,5,46,0,0,3765,3766,5,45,0,0,3766,3767,5,350,0,0,3767,3768,3,1234,617,0,3768,3769,5,135,0,0,3769,3770,3,366,183,0,3770,3771,5,80,0,0,3771,3772,3,1230,615,0,3772,3773,3,394,197,0,3773,3774,3,396,198,0,3774,3775,5,62,0,0,3775,3776,5,192,0,0,3776,3777,5,407,0,0,3777,3778,3,386,193,0,3778,3779,5,202,0,0,3779,3780,3,388,194,0,3780,3781,3,1240,620,0,3781,3782,5,2,0,0,3782,3783,3,390,195,0,3783,3784,5,3,0,0,3784,3786,1,0,0,0,3785,3747,1,0,0,0,3785,3764,1,0,0,0,3786,363,1,0,0,0,3787,3792,5,145,0,0,3788,3792,5,135,0,0,3789,3790,5,233,0,0,3790,3792,5,268,0,0,3791,3787,1,0,0,0,3791,3788,1,0,0,0,3791,3789,1,0,0,0,3792,365,1,0,0,0,3793,3798,3,368,184,0,3794,3795,5,82,0,0,3795,3797,3,368,184,0,3796,3794,1,0,0,0,3797,3800,1,0,0,0,3798,3796,1,0,0,0,3798,3799,1,0,0,0,3799,367,1,0,0,0,3800,3798,1,0,0,0,3801,3809,5,232,0,0,3802,3809,5,182,0,0,3803,3809,5,362,0,0,3804,3805,5,362,0,0,3805,3806,5,268,0,0,3806,3809,3,194,97,0,3807,3809,5,351,0,0,3808,3801,1,0,0,0,3808,3802,1,0,0,0,3808,3803,1,0,0,0,3808,3804,1,0,0,0,3808,3807,1,0,0,0,3809,369,1,0,0,0,3810,3811,5,447,0,0,3811,3814,3,372,186,0,3812,3814,1,0,0,0,3813,3810,1,0,0,0,3813,3812,1,0,0,0,3814,371,1,0,0,0,3815,3817,3,374,187,0,3816,3815,1,0,0,0,3817,3818,1,0,0,0,3818,3816,1,0,0,0,3818,3819,1,0,0,0,3819,373,1,0,0,0,3820,3821,3,376,188,0,3821,3822,3,378,189,0,3822,3823,3,748,374,0,3823,3824,3,380,190,0,3824,375,1,0,0,0,3825,3826,7,18,0,0,3826,377,1,0,0,0,3827,3828,7,19,0,0,3828,379,1,0,0,0,3829,3830,3,1264,632,0,3830,381,1,0,0,0,3831,3833,5,62,0,0,3832,3834,5,192,0,0,3833,3832,1,0,0,0,3833,3834,1,0,0,0,3834,3835,1,0,0,0,3835,3838,3,384,192,0,3836,3838,1,0,0,0,3837,3831,1,0,0,0,3837,3836,1,0,0,0,3838,383,1,0,0,0,3839,3840,7,20,0,0,3840,385,1,0,0,0,3841,3842,5,102,0,0,3842,3843,5,2,0,0,3843,3844,3,1038,519,0,3844,3845,5,3,0,0,3845,3848,1,0,0,0,3846,3848,1,0,0,0,3847,3841,1,0,0,0,3847,3846,1,0,0,0,3848,387,1,0,0,0,3849,3850,7,21,0,0,3850,389,1,0,0,0,3851,3854,3,392,196,0,3852,3854,1,0,0,0,3853,3851,1,0,0,0,3853,3852,1,0,0,0,3854,3859,1,0,0,0,3855,3856,5,6,0,0,3856,3858,3,392,196,0,3857,3855,1,0,0,0,3858,3861,1,0,0,0,3859,3857,1,0,0,0,3859,3860,1,0,0,0,3860,391,1,0,0,0,3861,3859,1,0,0,0,3862,3867,3,1250,625,0,3863,3867,3,1248,624,0,3864,3867,3,1252,626,0,3865,3867,3,1272,636,0,3866,3862,1,0,0,0,3866,3863,1,0,0,0,3866,3864,1,0,0,0,3866,3865,1,0,0,0,3867,393,1,0,0,0,3868,3869,5,64,0,0,3869,3872,3,1230,615,0,3870,3872,1,0,0,0,3871,3868,1,0,0,0,3871,3870,1,0,0,0,3872,395,1,0,0,0,3873,3875,3,398,199,0,3874,3873,1,0,0,0,3875,3878,1,0,0,0,3876,3874,1,0,0,0,3876,3877,1,0,0,0,3877,397,1,0,0,0,3878,3876,1,0,0,0,3879,3880,5,77,0,0,3880,3891,5,54,0,0,3881,3891,5,54,0,0,3882,3883,5,69,0,0,3883,3891,5,221,0,0,3884,3885,5,69,0,0,3885,3891,5,180,0,0,3886,3887,5,77,0,0,3887,3891,5,364,0,0,3888,3889,5,262,0,0,3889,3891,5,228,0,0,3890,3879,1,0,0,0,3890,3881,1,0,0,0,3890,3882,1,0,0,0,3890,3884,1,0,0,0,3890,3886,1,0,0,0,3890,3888,1,0,0,0,3891,399,1,0,0,0,3892,3893,5,46,0,0,3893,3894,5,198,0,0,3894,3895,5,350,0,0,3895,3896,3,1234,617,0,3896,3897,5,80,0,0,3897,3898,3,1272,636,0,3898,3899,5,202,0,0,3899,3900,3,388,194,0,3900,3901,3,1240,620,0,3901,3902,5,2,0,0,3902,3903,5,3,0,0,3903,3919,1,0,0,0,3904,3905,5,46,0,0,3905,3906,5,198,0,0,3906,3907,5,350,0,0,3907,3908,3,1234,617,0,3908,3909,5,80,0,0,3909,3910,3,1272,636,0,3910,3911,5,102,0,0,3911,3912,3,402,201,0,3912,3913,5,202,0,0,3913,3914,3,388,194,0,3914,3915,3,1240,620,0,3915,3916,5,2,0,0,3916,3917,5,3,0,0,3917,3919,1,0,0,0,3918,3892,1,0,0,0,3918,3904,1,0,0,0,3919,401,1,0,0,0,3920,3925,3,404,202,0,3921,3922,5,33,0,0,3922,3924,3,404,202,0,3923,3921,1,0,0,0,3924,3927,1,0,0,0,3925,3923,1,0,0,0,3925,3926,1,0,0,0,3926,403,1,0,0,0,3927,3925,1,0,0,0,3928,3929,3,1264,632,0,3929,3930,5,68,0,0,3930,3931,5,2,0,0,3931,3932,3,406,203,0,3932,3933,5,3,0,0,3933,405,1,0,0,0,3934,3939,3,1252,626,0,3935,3936,5,6,0,0,3936,3938,3,1252,626,0,3937,3935,1,0,0,0,3938,3941,1,0,0,0,3939,3937,1,0,0,0,3939,3940,1,0,0,0,3940,407,1,0,0,0,3941,3939,1,0,0,0,3942,3943,5,138,0,0,3943,3944,5,198,0,0,3944,3945,5,350,0,0,3945,3946,3,1234,617,0,3946,3947,3,410,205,0,3947,409,1,0,0,0,3948,3955,5,193,0,0,3949,3950,5,193,0,0,3950,3955,5,305,0,0,3951,3952,5,193,0,0,3952,3955,5,139,0,0,3953,3955,5,186,0,0,3954,3948,1,0,0,0,3954,3949,1,0,0,0,3954,3951,1,0,0,0,3954,3953,1,0,0,0,3955,411,1,0,0,0,3956,3957,5,46,0,0,3957,3958,5,140,0,0,3958,3959,3,470,235,0,3959,3960,5,42,0,0,3960,3961,5,2,0,0,3961,3962,3,1038,519,0,3962,3963,5,3,0,0,3963,3964,3,396,198,0,3964,413,1,0,0,0,3965,3966,5,46,0,0,3966,3967,3,554,277,0,3967,3968,5,136,0,0,3968,3969,3,1240,620,0,3969,3970,3,576,288,0,3970,3971,3,416,208,0,3971,4074,1,0,0,0,3972,3973,5,46,0,0,3973,3974,3,554,277,0,3974,3975,5,136,0,0,3975,3976,3,1240,620,0,3976,3977,3,422,211,0,3977,4074,1,0,0,0,3978,3979,5,46,0,0,3979,3980,5,271,0,0,3980,3981,3,610,305,0,3981,3982,3,416,208,0,3982,4074,1,0,0,0,3983,3984,5,46,0,0,3984,3985,5,353,0,0,3985,3986,3,470,235,0,3986,3987,3,416,208,0,3987,4074,1,0,0,0,3988,3989,5,46,0,0,3989,3990,5,353,0,0,3990,4074,3,470,235,0,3991,3992,5,46,0,0,3992,3993,5,353,0,0,3993,3994,3,470,235,0,3994,3995,5,36,0,0,3995,3996,5,2,0,0,3996,3997,3,978,489,0,3997,3998,5,3,0,0,3998,4074,1,0,0,0,3999,4e3,5,46,0,0,4e3,4001,5,353,0,0,4001,4002,3,470,235,0,4002,4003,5,36,0,0,4003,4004,5,196,0,0,4004,4006,5,2,0,0,4005,4007,3,426,213,0,4006,4005,1,0,0,0,4006,4007,1,0,0,0,4007,4008,1,0,0,0,4008,4009,5,3,0,0,4009,4074,1,0,0,0,4010,4011,5,46,0,0,4011,4012,5,353,0,0,4012,4013,3,470,235,0,4013,4014,5,36,0,0,4014,4015,5,292,0,0,4015,4016,3,416,208,0,4016,4074,1,0,0,0,4017,4018,5,46,0,0,4018,4019,5,348,0,0,4019,4020,5,318,0,0,4020,4021,5,276,0,0,4021,4022,3,470,235,0,4022,4023,3,416,208,0,4023,4074,1,0,0,0,4024,4025,5,46,0,0,4025,4026,5,348,0,0,4026,4027,5,318,0,0,4027,4028,5,185,0,0,4028,4029,3,470,235,0,4029,4030,3,416,208,0,4030,4074,1,0,0,0,4031,4032,5,46,0,0,4032,4033,5,348,0,0,4033,4034,5,318,0,0,4034,4035,5,346,0,0,4035,4036,3,470,235,0,4036,4037,3,416,208,0,4037,4074,1,0,0,0,4038,4039,5,46,0,0,4039,4040,5,348,0,0,4040,4041,5,318,0,0,4041,4042,5,163,0,0,4042,4043,3,470,235,0,4043,4044,3,416,208,0,4044,4074,1,0,0,0,4045,4046,5,46,0,0,4046,4047,5,108,0,0,4047,4048,3,470,235,0,4048,4049,3,416,208,0,4049,4074,1,0,0,0,4050,4051,5,46,0,0,4051,4052,5,108,0,0,4052,4053,5,220,0,0,4053,4054,5,77,0,0,4054,4055,5,389,0,0,4055,4056,3,470,235,0,4056,4057,3,416,208,0,4057,4074,1,0,0,0,4058,4059,5,46,0,0,4059,4060,5,108,0,0,4060,4061,3,470,235,0,4061,4062,5,64,0,0,4062,4063,3,470,235,0,4063,4074,1,0,0,0,4064,4065,5,46,0,0,4065,4066,5,108,0,0,4066,4067,5,220,0,0,4067,4068,5,77,0,0,4068,4069,5,389,0,0,4069,4070,3,470,235,0,4070,4071,5,64,0,0,4071,4072,3,470,235,0,4072,4074,1,0,0,0,4073,3965,1,0,0,0,4073,3972,1,0,0,0,4073,3978,1,0,0,0,4073,3983,1,0,0,0,4073,3988,1,0,0,0,4073,3991,1,0,0,0,4073,3999,1,0,0,0,4073,4010,1,0,0,0,4073,4017,1,0,0,0,4073,4024,1,0,0,0,4073,4031,1,0,0,0,4073,4038,1,0,0,0,4073,4045,1,0,0,0,4073,4050,1,0,0,0,4073,4058,1,0,0,0,4073,4064,1,0,0,0,4074,415,1,0,0,0,4075,4076,5,2,0,0,4076,4081,3,418,209,0,4077,4078,5,6,0,0,4078,4080,3,418,209,0,4079,4077,1,0,0,0,4080,4083,1,0,0,0,4081,4079,1,0,0,0,4081,4082,1,0,0,0,4082,4084,1,0,0,0,4083,4081,1,0,0,0,4084,4085,5,3,0,0,4085,417,1,0,0,0,4086,4089,3,1272,636,0,4087,4088,5,10,0,0,4088,4090,3,420,210,0,4089,4087,1,0,0,0,4089,4090,1,0,0,0,4090,419,1,0,0,0,4091,4098,3,574,287,0,4092,4098,3,1284,642,0,4093,4098,3,1152,576,0,4094,4098,3,264,132,0,4095,4098,3,1252,626,0,4096,4098,5,400,0,0,4097,4091,1,0,0,0,4097,4092,1,0,0,0,4097,4093,1,0,0,0,4097,4094,1,0,0,0,4097,4095,1,0,0,0,4097,4096,1,0,0,0,4098,421,1,0,0,0,4099,4100,5,2,0,0,4100,4105,3,424,212,0,4101,4102,5,6,0,0,4102,4104,3,424,212,0,4103,4101,1,0,0,0,4104,4107,1,0,0,0,4105,4103,1,0,0,0,4105,4106,1,0,0,0,4106,4108,1,0,0,0,4107,4105,1,0,0,0,4108,4109,5,3,0,0,4109,423,1,0,0,0,4110,4111,3,1274,637,0,4111,4112,5,10,0,0,4112,4113,3,420,210,0,4113,425,1,0,0,0,4114,4119,3,1252,626,0,4115,4116,5,6,0,0,4116,4118,3,1252,626,0,4117,4115,1,0,0,0,4118,4121,1,0,0,0,4119,4117,1,0,0,0,4119,4120,1,0,0,0,4120,427,1,0,0,0,4121,4119,1,0,0,0,4122,4123,5,138,0,0,4123,4124,5,353,0,0,4124,4125,3,470,235,0,4125,4126,5,133,0,0,4126,4127,5,450,0,0,4127,4128,3,430,215,0,4128,4129,3,1252,626,0,4129,4160,1,0,0,0,4130,4131,5,138,0,0,4131,4132,5,353,0,0,4132,4133,3,470,235,0,4133,4134,5,133,0,0,4134,4135,5,450,0,0,4135,4136,3,430,215,0,4136,4137,3,1252,626,0,4137,4138,5,145,0,0,4138,4139,3,1252,626,0,4139,4160,1,0,0,0,4140,4141,5,138,0,0,4141,4142,5,353,0,0,4142,4143,3,470,235,0,4143,4144,5,133,0,0,4144,4145,5,450,0,0,4145,4146,3,430,215,0,4146,4147,3,1252,626,0,4147,4148,5,135,0,0,4148,4149,3,1252,626,0,4149,4160,1,0,0,0,4150,4151,5,138,0,0,4151,4152,5,353,0,0,4152,4153,3,470,235,0,4153,4154,5,302,0,0,4154,4155,5,450,0,0,4155,4156,3,1252,626,0,4156,4157,5,94,0,0,4157,4158,3,1252,626,0,4158,4160,1,0,0,0,4159,4122,1,0,0,0,4159,4130,1,0,0,0,4159,4140,1,0,0,0,4159,4150,1,0,0,0,4160,429,1,0,0,0,4161,4162,5,220,0,0,4162,4163,5,77,0,0,4163,4166,5,389,0,0,4164,4166,1,0,0,0,4165,4161,1,0,0,0,4165,4164,1,0,0,0,4166,431,1,0,0,0,4167,4168,5,46,0,0,4168,4169,5,271,0,0,4169,4170,5,156,0,0,4170,4172,3,470,235,0,4171,4173,5,53,0,0,4172,4171,1,0,0,0,4172,4173,1,0,0,0,4173,4174,1,0,0,0,4174,4175,5,62,0,0,4175,4176,5,353,0,0,4176,4177,3,996,498,0,4177,4178,5,100,0,0,4178,4179,3,1234,617,0,4179,4180,3,438,219,0,4180,4181,5,36,0,0,4181,4182,3,434,217,0,4182,433,1,0,0,0,4183,4188,3,436,218,0,4184,4185,5,6,0,0,4185,4187,3,436,218,0,4186,4184,1,0,0,0,4187,4190,1,0,0,0,4188,4186,1,0,0,0,4188,4189,1,0,0,0,4189,435,1,0,0,0,4190,4188,1,0,0,0,4191,4192,5,271,0,0,4192,4193,3,1250,625,0,4193,4194,3,610,305,0,4194,4196,3,440,220,0,4195,4197,5,295,0,0,4196,4195,1,0,0,0,4196,4197,1,0,0,0,4197,4219,1,0,0,0,4198,4199,5,271,0,0,4199,4200,3,1250,625,0,4200,4201,3,614,307,0,4201,4203,3,440,220,0,4202,4204,5,295,0,0,4203,4202,1,0,0,0,4203,4204,1,0,0,0,4204,4219,1,0,0,0,4205,4206,5,211,0,0,4206,4207,3,1250,625,0,4207,4208,3,560,280,0,4208,4219,1,0,0,0,4209,4210,5,211,0,0,4210,4211,3,1250,625,0,4211,4212,5,2,0,0,4212,4213,3,1162,581,0,4213,4214,5,3,0,0,4214,4215,3,560,280,0,4215,4219,1,0,0,0,4216,4217,5,338,0,0,4217,4219,3,996,498,0,4218,4191,1,0,0,0,4218,4198,1,0,0,0,4218,4205,1,0,0,0,4218,4209,1,0,0,0,4218,4216,1,0,0,0,4219,437,1,0,0,0,4220,4221,5,206,0,0,4221,4224,3,470,235,0,4222,4224,1,0,0,0,4223,4220,1,0,0,0,4223,4222,1,0,0,0,4224,439,1,0,0,0,4225,4226,5,62,0,0,4226,4233,5,318,0,0,4227,4228,5,62,0,0,4228,4229,5,83,0,0,4229,4230,5,147,0,0,4230,4233,3,470,235,0,4231,4233,1,0,0,0,4232,4225,1,0,0,0,4232,4227,1,0,0,0,4232,4231,1,0,0,0,4233,441,1,0,0,0,4234,4235,5,46,0,0,4235,4236,5,271,0,0,4236,4237,5,206,0,0,4237,4238,3,470,235,0,4238,4239,5,100,0,0,4239,4240,3,1234,617,0,4240,443,1,0,0,0,4241,4242,5,138,0,0,4242,4243,5,271,0,0,4243,4244,5,206,0,0,4244,4245,3,470,235,0,4245,4246,5,100,0,0,4246,4247,3,1234,617,0,4247,4248,5,133,0,0,4248,4249,3,434,217,0,4249,4260,1,0,0,0,4250,4251,5,138,0,0,4251,4252,5,271,0,0,4252,4253,5,206,0,0,4253,4254,3,470,235,0,4254,4255,5,100,0,0,4255,4256,3,1234,617,0,4256,4257,5,191,0,0,4257,4258,3,446,223,0,4258,4260,1,0,0,0,4259,4241,1,0,0,0,4259,4250,1,0,0,0,4260,445,1,0,0,0,4261,4266,3,448,224,0,4262,4263,5,6,0,0,4263,4265,3,448,224,0,4264,4262,1,0,0,0,4265,4268,1,0,0,0,4266,4264,1,0,0,0,4266,4267,1,0,0,0,4267,447,1,0,0,0,4268,4266,1,0,0,0,4269,4270,5,271,0,0,4270,4271,3,1250,625,0,4271,4272,5,2,0,0,4272,4273,3,1162,581,0,4273,4274,5,3,0,0,4274,4282,1,0,0,0,4275,4276,5,211,0,0,4276,4277,3,1250,625,0,4277,4278,5,2,0,0,4278,4279,3,1162,581,0,4279,4280,5,3,0,0,4280,4282,1,0,0,0,4281,4269,1,0,0,0,4281,4275,1,0,0,0,4282,449,1,0,0,0,4283,4284,5,191,0,0,4284,4285,5,271,0,0,4285,4286,5,156,0,0,4286,4287,3,470,235,0,4287,4288,5,100,0,0,4288,4289,3,1234,617,0,4289,4290,3,100,50,0,4290,4302,1,0,0,0,4291,4292,5,191,0,0,4292,4293,5,271,0,0,4293,4294,5,156,0,0,4294,4295,5,220,0,0,4295,4296,5,389,0,0,4296,4297,3,470,235,0,4297,4298,5,100,0,0,4298,4299,3,1234,617,0,4299,4300,3,100,50,0,4300,4302,1,0,0,0,4301,4283,1,0,0,0,4301,4291,1,0,0,0,4302,451,1,0,0,0,4303,4304,5,191,0,0,4304,4305,5,271,0,0,4305,4306,5,206,0,0,4306,4307,3,470,235,0,4307,4308,5,100,0,0,4308,4309,3,1234,617,0,4309,4310,3,100,50,0,4310,4322,1,0,0,0,4311,4312,5,191,0,0,4312,4313,5,271,0,0,4313,4314,5,206,0,0,4314,4315,5,220,0,0,4315,4316,5,389,0,0,4316,4317,3,470,235,0,4317,4318,5,100,0,0,4318,4319,3,1234,617,0,4319,4320,3,100,50,0,4320,4322,1,0,0,0,4321,4303,1,0,0,0,4321,4311,1,0,0,0,4322,453,1,0,0,0,4323,4324,5,191,0,0,4324,4325,5,274,0,0,4325,4326,5,147,0,0,4326,4327,3,1262,631,0,4327,4328,3,100,50,0,4328,455,1,0,0,0,4329,4330,5,294,0,0,4330,4331,5,274,0,0,4331,4332,5,147,0,0,4332,4333,3,1262,631,0,4333,4334,5,94,0,0,4334,4335,3,1260,630,0,4335,457,1,0,0,0,4336,4337,5,191,0,0,4337,4340,3,460,230,0,4338,4339,5,220,0,0,4339,4341,5,389,0,0,4340,4338,1,0,0,0,4340,4341,1,0,0,0,4341,4342,1,0,0,0,4342,4343,3,468,234,0,4343,4344,3,100,50,0,4344,4442,1,0,0,0,4345,4346,5,191,0,0,4346,4349,5,321,0,0,4347,4348,5,220,0,0,4348,4350,5,389,0,0,4349,4347,1,0,0,0,4349,4350,1,0,0,0,4350,4351,1,0,0,0,4351,4352,3,1228,614,0,4352,4353,3,100,50,0,4353,4442,1,0,0,0,4354,4355,5,191,0,0,4355,4358,5,226,0,0,4356,4357,5,220,0,0,4357,4359,5,389,0,0,4358,4356,1,0,0,0,4358,4359,1,0,0,0,4359,4360,1,0,0,0,4360,4361,3,1220,610,0,4361,4362,3,100,50,0,4362,4442,1,0,0,0,4363,4364,5,191,0,0,4364,4367,5,316,0,0,4365,4366,5,220,0,0,4366,4368,5,389,0,0,4367,4365,1,0,0,0,4367,4368,1,0,0,0,4368,4369,1,0,0,0,4369,4370,3,1216,608,0,4370,4371,3,100,50,0,4371,4442,1,0,0,0,4372,4373,5,191,0,0,4373,4376,3,464,232,0,4374,4375,5,220,0,0,4375,4377,5,389,0,0,4376,4374,1,0,0,0,4376,4377,1,0,0,0,4377,4378,1,0,0,0,4378,4379,3,1232,616,0,4379,4380,3,100,50,0,4380,4442,1,0,0,0,4381,4382,5,191,0,0,4382,4385,3,466,233,0,4383,4384,5,220,0,0,4384,4386,5,389,0,0,4385,4383,1,0,0,0,4385,4386,1,0,0,0,4386,4387,1,0,0,0,4387,4388,3,1234,617,0,4388,4389,5,80,0,0,4389,4390,3,470,235,0,4390,4391,3,100,50,0,4391,4442,1,0,0,0,4392,4393,5,191,0,0,4393,4396,5,350,0,0,4394,4395,5,220,0,0,4395,4397,5,389,0,0,4396,4394,1,0,0,0,4396,4397,1,0,0,0,4397,4398,1,0,0,0,4398,4399,3,1222,611,0,4399,4400,5,80,0,0,4400,4401,3,470,235,0,4401,4402,3,100,50,0,4402,4442,1,0,0,0,4403,4404,5,191,0,0,4404,4405,5,353,0,0,4405,4406,3,474,237,0,4406,4407,3,100,50,0,4407,4442,1,0,0,0,4408,4409,5,191,0,0,4409,4410,5,353,0,0,4410,4411,5,220,0,0,4411,4412,5,389,0,0,4412,4413,3,474,237,0,4413,4414,3,100,50,0,4414,4442,1,0,0,0,4415,4416,5,191,0,0,4416,4417,5,189,0,0,4417,4418,3,474,237,0,4418,4419,3,100,50,0,4419,4442,1,0,0,0,4420,4421,5,191,0,0,4421,4422,5,189,0,0,4422,4423,5,220,0,0,4423,4424,5,389,0,0,4424,4425,3,474,237,0,4425,4426,3,100,50,0,4426,4442,1,0,0,0,4427,4428,5,191,0,0,4428,4429,5,226,0,0,4429,4430,5,109,0,0,4430,4431,3,1218,609,0,4431,4432,3,100,50,0,4432,4442,1,0,0,0,4433,4434,5,191,0,0,4434,4435,5,226,0,0,4435,4436,5,109,0,0,4436,4437,5,220,0,0,4437,4438,5,389,0,0,4438,4439,3,1218,609,0,4439,4440,3,100,50,0,4440,4442,1,0,0,0,4441,4336,1,0,0,0,4441,4345,1,0,0,0,4441,4354,1,0,0,0,4441,4363,1,0,0,0,4441,4372,1,0,0,0,4441,4381,1,0,0,0,4441,4392,1,0,0,0,4441,4403,1,0,0,0,4441,4408,1,0,0,0,4441,4415,1,0,0,0,4441,4420,1,0,0,0,4441,4427,1,0,0,0,4441,4433,1,0,0,0,4442,459,1,0,0,0,4443,4465,5,92,0,0,4444,4465,5,369,0,0,4445,4446,5,251,0,0,4446,4465,5,369,0,0,4447,4448,5,63,0,0,4448,4465,5,92,0,0,4449,4465,5,108,0,0,4450,4465,5,168,0,0,4451,4465,5,335,0,0,4452,4453,5,348,0,0,4453,4454,5,318,0,0,4454,4465,5,276,0,0,4455,4456,5,348,0,0,4456,4457,5,318,0,0,4457,4465,5,185,0,0,4458,4459,5,348,0,0,4459,4460,5,318,0,0,4460,4465,5,346,0,0,4461,4462,5,348,0,0,4462,4463,5,318,0,0,4463,4465,5,163,0,0,4464,4443,1,0,0,0,4464,4444,1,0,0,0,4464,4445,1,0,0,0,4464,4447,1,0,0,0,4464,4449,1,0,0,0,4464,4450,1,0,0,0,4464,4451,1,0,0,0,4464,4452,1,0,0,0,4464,4455,1,0,0,0,4464,4458,1,0,0,0,4464,4461,1,0,0,0,4465,461,1,0,0,0,4466,4470,3,464,232,0,4467,4470,5,451,0,0,4468,4470,5,344,0,0,4469,4466,1,0,0,0,4469,4467,1,0,0,0,4469,4468,1,0,0,0,4470,463,1,0,0,0,4471,4472,5,131,0,0,4472,4485,5,446,0,0,4473,4474,5,198,0,0,4474,4485,5,350,0,0,4475,4485,5,204,0,0,4476,4477,5,63,0,0,4477,4478,5,174,0,0,4478,4485,5,374,0,0,4479,4480,3,276,138,0,4480,4481,5,238,0,0,4481,4485,1,0,0,0,4482,4485,5,452,0,0,4483,4485,5,324,0,0,4484,4471,1,0,0,0,4484,4473,1,0,0,0,4484,4475,1,0,0,0,4484,4476,1,0,0,0,4484,4479,1,0,0,0,4484,4482,1,0,0,0,4484,4483,1,0,0,0,4485,465,1,0,0,0,4486,4487,7,22,0,0,4487,467,1,0,0,0,4488,4493,3,470,235,0,4489,4490,5,6,0,0,4490,4492,3,470,235,0,4491,4489,1,0,0,0,4492,4495,1,0,0,0,4493,4491,1,0,0,0,4493,4494,1,0,0,0,4494,469,1,0,0,0,4495,4493,1,0,0,0,4496,4498,3,1264,632,0,4497,4499,3,472,236,0,4498,4497,1,0,0,0,4498,4499,1,0,0,0,4499,471,1,0,0,0,4500,4501,5,11,0,0,4501,4503,3,1236,618,0,4502,4500,1,0,0,0,4503,4504,1,0,0,0,4504,4502,1,0,0,0,4504,4505,1,0,0,0,4505,473,1,0,0,0,4506,4511,3,996,498,0,4507,4508,5,6,0,0,4508,4510,3,996,498,0,4509,4507,1,0,0,0,4510,4513,1,0,0,0,4511,4509,1,0,0,0,4511,4512,1,0,0,0,4512,475,1,0,0,0,4513,4511,1,0,0,0,4514,4515,5,351,0,0,4515,4516,3,882,441,0,4516,4517,3,960,480,0,4517,4518,3,478,239,0,4518,4519,3,100,50,0,4519,477,1,0,0,0,4520,4521,5,167,0,0,4521,4526,5,219,0,0,4522,4523,5,307,0,0,4523,4526,5,219,0,0,4524,4526,1,0,0,0,4525,4520,1,0,0,0,4525,4522,1,0,0,0,4525,4524,1,0,0,0,4526,479,1,0,0,0,4527,4528,5,159,0,0,4528,4529,5,80,0,0,4529,4530,3,460,230,0,4530,4531,3,470,235,0,4531,4532,5,116,0,0,4532,4533,3,482,241,0,4533,4712,1,0,0,0,4534,4535,5,159,0,0,4535,4536,5,80,0,0,4536,4537,5,321,0,0,4537,4538,3,1226,613,0,4538,4539,5,116,0,0,4539,4540,3,482,241,0,4540,4712,1,0,0,0,4541,4542,5,159,0,0,4542,4543,5,80,0,0,4543,4544,5,226,0,0,4544,4545,3,1218,609,0,4545,4546,5,116,0,0,4546,4547,3,482,241,0,4547,4712,1,0,0,0,4548,4549,5,159,0,0,4549,4550,5,80,0,0,4550,4551,5,44,0,0,4551,4552,3,470,235,0,4552,4553,5,116,0,0,4553,4554,3,482,241,0,4554,4712,1,0,0,0,4555,4556,5,159,0,0,4556,4557,5,80,0,0,4557,4558,3,462,231,0,4558,4559,3,1234,617,0,4559,4560,5,116,0,0,4560,4561,3,482,241,0,4561,4712,1,0,0,0,4562,4563,5,159,0,0,4563,4564,5,80,0,0,4564,4565,5,311,0,0,4565,4566,3,1260,630,0,4566,4567,5,116,0,0,4567,4568,3,482,241,0,4568,4712,1,0,0,0,4569,4570,5,159,0,0,4570,4571,5,80,0,0,4571,4572,5,175,0,0,4572,4573,3,1210,605,0,4573,4574,5,116,0,0,4574,4575,3,482,241,0,4575,4712,1,0,0,0,4576,4577,5,159,0,0,4577,4578,5,80,0,0,4578,4579,5,316,0,0,4579,4580,3,1214,607,0,4580,4581,5,116,0,0,4581,4582,3,482,241,0,4582,4712,1,0,0,0,4583,4584,5,159,0,0,4584,4585,5,80,0,0,4585,4586,5,353,0,0,4586,4587,3,996,498,0,4587,4588,5,116,0,0,4588,4589,3,482,241,0,4589,4712,1,0,0,0,4590,4591,5,159,0,0,4591,4592,5,80,0,0,4592,4593,5,189,0,0,4593,4594,3,996,498,0,4594,4595,5,116,0,0,4595,4596,3,482,241,0,4596,4712,1,0,0,0,4597,4598,5,159,0,0,4598,4599,5,80,0,0,4599,4600,5,136,0,0,4600,4601,3,580,290,0,4601,4602,5,116,0,0,4602,4603,3,482,241,0,4603,4712,1,0,0,0,4604,4605,5,159,0,0,4605,4606,5,80,0,0,4606,4607,5,211,0,0,4607,4608,3,560,280,0,4608,4609,5,116,0,0,4609,4610,3,482,241,0,4610,4712,1,0,0,0,4611,4612,5,159,0,0,4612,4613,5,80,0,0,4613,4614,5,271,0,0,4614,4615,3,614,307,0,4615,4616,5,116,0,0,4616,4617,3,482,241,0,4617,4712,1,0,0,0,4618,4619,5,159,0,0,4619,4620,5,80,0,0,4620,4621,5,45,0,0,4621,4622,3,1224,612,0,4622,4624,5,80,0,0,4623,4625,5,189,0,0,4624,4623,1,0,0,0,4624,4625,1,0,0,0,4625,4626,1,0,0,0,4626,4627,3,470,235,0,4627,4628,5,116,0,0,4628,4629,3,482,241,0,4629,4712,1,0,0,0,4630,4631,5,159,0,0,4631,4632,5,80,0,0,4632,4633,3,466,233,0,4633,4634,3,1234,617,0,4634,4635,5,80,0,0,4635,4636,3,470,235,0,4636,4637,5,116,0,0,4637,4638,3,482,241,0,4638,4712,1,0,0,0,4639,4640,5,159,0,0,4640,4641,5,80,0,0,4641,4642,5,350,0,0,4642,4643,3,1222,611,0,4643,4644,5,80,0,0,4644,4645,3,470,235,0,4645,4646,5,116,0,0,4646,4647,3,482,241,0,4647,4712,1,0,0,0,4648,4649,5,159,0,0,4649,4650,5,80,0,0,4650,4651,5,289,0,0,4651,4652,3,560,280,0,4652,4653,5,116,0,0,4653,4654,3,482,241,0,4654,4712,1,0,0,0,4655,4656,5,159,0,0,4656,4657,5,80,0,0,4657,4658,5,442,0,0,4658,4659,3,560,280,0,4659,4660,5,116,0,0,4660,4661,3,482,241,0,4661,4712,1,0,0,0,4662,4663,5,159,0,0,4663,4664,5,80,0,0,4664,4665,5,443,0,0,4665,4666,5,62,0,0,4666,4667,3,996,498,0,4667,4668,5,238,0,0,4668,4669,3,1234,617,0,4669,4670,5,116,0,0,4670,4671,3,482,241,0,4671,4712,1,0,0,0,4672,4673,5,159,0,0,4673,4674,5,80,0,0,4674,4675,5,271,0,0,4675,4676,5,156,0,0,4676,4677,3,470,235,0,4677,4678,5,100,0,0,4678,4679,3,1234,617,0,4679,4680,5,116,0,0,4680,4681,3,482,241,0,4681,4712,1,0,0,0,4682,4683,5,159,0,0,4683,4684,5,80,0,0,4684,4685,5,271,0,0,4685,4686,5,206,0,0,4686,4687,3,470,235,0,4687,4688,5,100,0,0,4688,4689,3,1234,617,0,4689,4690,5,116,0,0,4690,4691,3,482,241,0,4691,4712,1,0,0,0,4692,4693,5,159,0,0,4693,4694,5,80,0,0,4694,4695,5,239,0,0,4695,4696,5,267,0,0,4696,4697,3,264,132,0,4697,4698,5,116,0,0,4698,4699,3,482,241,0,4699,4712,1,0,0,0,4700,4701,5,159,0,0,4701,4702,5,80,0,0,4702,4703,5,41,0,0,4703,4704,5,2,0,0,4704,4705,3,996,498,0,4705,4706,5,36,0,0,4706,4707,3,996,498,0,4707,4708,5,3,0,0,4708,4709,5,116,0,0,4709,4710,3,482,241,0,4710,4712,1,0,0,0,4711,4527,1,0,0,0,4711,4534,1,0,0,0,4711,4541,1,0,0,0,4711,4548,1,0,0,0,4711,4555,1,0,0,0,4711,4562,1,0,0,0,4711,4569,1,0,0,0,4711,4576,1,0,0,0,4711,4583,1,0,0,0,4711,4590,1,0,0,0,4711,4597,1,0,0,0,4711,4604,1,0,0,0,4711,4611,1,0,0,0,4711,4618,1,0,0,0,4711,4630,1,0,0,0,4711,4639,1,0,0,0,4711,4648,1,0,0,0,4711,4655,1,0,0,0,4711,4662,1,0,0,0,4711,4672,1,0,0,0,4711,4682,1,0,0,0,4711,4692,1,0,0,0,4711,4700,1,0,0,0,4712,481,1,0,0,0,4713,4716,3,1252,626,0,4714,4716,5,78,0,0,4715,4713,1,0,0,0,4715,4714,1,0,0,0,4716,483,1,0,0,0,4717,4718,5,320,0,0,4718,4719,5,237,0,0,4719,4720,3,486,243,0,4720,4721,5,80,0,0,4721,4722,3,460,230,0,4722,4723,3,470,235,0,4723,4724,5,116,0,0,4724,4725,3,488,244,0,4725,4854,1,0,0,0,4726,4727,5,320,0,0,4727,4728,5,237,0,0,4728,4729,3,486,243,0,4729,4730,5,80,0,0,4730,4731,5,321,0,0,4731,4732,3,1226,613,0,4732,4733,5,116,0,0,4733,4734,3,488,244,0,4734,4854,1,0,0,0,4735,4736,5,320,0,0,4736,4737,5,237,0,0,4737,4738,3,486,243,0,4738,4739,5,80,0,0,4739,4740,5,226,0,0,4740,4741,3,1218,609,0,4741,4742,5,116,0,0,4742,4743,3,488,244,0,4743,4854,1,0,0,0,4744,4745,5,320,0,0,4745,4746,5,237,0,0,4746,4747,3,486,243,0,4747,4748,5,80,0,0,4748,4749,5,44,0,0,4749,4750,3,470,235,0,4750,4751,5,116,0,0,4751,4752,3,488,244,0,4752,4854,1,0,0,0,4753,4754,5,320,0,0,4754,4755,5,237,0,0,4755,4756,3,486,243,0,4756,4757,5,80,0,0,4757,4758,3,462,231,0,4758,4759,3,1234,617,0,4759,4760,5,116,0,0,4760,4761,3,488,244,0,4761,4854,1,0,0,0,4762,4763,5,320,0,0,4763,4764,5,237,0,0,4764,4765,3,486,243,0,4765,4766,5,80,0,0,4766,4767,5,311,0,0,4767,4768,3,1260,630,0,4768,4769,5,116,0,0,4769,4770,3,488,244,0,4770,4854,1,0,0,0,4771,4772,5,320,0,0,4772,4773,5,237,0,0,4773,4774,3,486,243,0,4774,4775,5,80,0,0,4775,4776,5,175,0,0,4776,4777,3,1210,605,0,4777,4778,5,116,0,0,4778,4779,3,488,244,0,4779,4854,1,0,0,0,4780,4781,5,320,0,0,4781,4782,5,237,0,0,4782,4783,3,486,243,0,4783,4784,5,80,0,0,4784,4785,5,316,0,0,4785,4786,3,1214,607,0,4786,4787,5,116,0,0,4787,4788,3,488,244,0,4788,4854,1,0,0,0,4789,4790,5,320,0,0,4790,4791,5,237,0,0,4791,4792,3,486,243,0,4792,4793,5,80,0,0,4793,4794,5,353,0,0,4794,4795,3,996,498,0,4795,4796,5,116,0,0,4796,4797,3,488,244,0,4797,4854,1,0,0,0,4798,4799,5,320,0,0,4799,4800,5,237,0,0,4800,4801,3,486,243,0,4801,4802,5,80,0,0,4802,4803,5,189,0,0,4803,4804,3,996,498,0,4804,4805,5,116,0,0,4805,4806,3,488,244,0,4806,4854,1,0,0,0,4807,4808,5,320,0,0,4808,4809,5,237,0,0,4809,4810,3,486,243,0,4810,4811,5,80,0,0,4811,4812,5,136,0,0,4812,4813,3,580,290,0,4813,4814,5,116,0,0,4814,4815,3,488,244,0,4815,4854,1,0,0,0,4816,4817,5,320,0,0,4817,4818,5,237,0,0,4818,4819,3,486,243,0,4819,4820,5,80,0,0,4820,4821,5,211,0,0,4821,4822,3,560,280,0,4822,4823,5,116,0,0,4823,4824,3,488,244,0,4824,4854,1,0,0,0,4825,4826,5,320,0,0,4826,4827,5,237,0,0,4827,4828,3,486,243,0,4828,4829,5,80,0,0,4829,4830,5,239,0,0,4830,4831,5,267,0,0,4831,4832,3,264,132,0,4832,4833,5,116,0,0,4833,4834,3,488,244,0,4834,4854,1,0,0,0,4835,4836,5,320,0,0,4836,4837,5,237,0,0,4837,4838,3,486,243,0,4838,4839,5,80,0,0,4839,4840,5,289,0,0,4840,4841,3,560,280,0,4841,4842,5,116,0,0,4842,4843,3,488,244,0,4843,4854,1,0,0,0,4844,4845,5,320,0,0,4845,4846,5,237,0,0,4846,4847,3,486,243,0,4847,4848,5,80,0,0,4848,4849,5,442,0,0,4849,4850,3,560,280,0,4850,4851,5,116,0,0,4851,4852,3,488,244,0,4852,4854,1,0,0,0,4853,4717,1,0,0,0,4853,4726,1,0,0,0,4853,4735,1,0,0,0,4853,4744,1,0,0,0,4853,4753,1,0,0,0,4853,4762,1,0,0,0,4853,4771,1,0,0,0,4853,4780,1,0,0,0,4853,4789,1,0,0,0,4853,4798,1,0,0,0,4853,4807,1,0,0,0,4853,4816,1,0,0,0,4853,4825,1,0,0,0,4853,4835,1,0,0,0,4853,4844,1,0,0,0,4854,485,1,0,0,0,4855,4856,5,62,0,0,4856,4859,3,64,32,0,4857,4859,1,0,0,0,4858,4855,1,0,0,0,4858,4857,1,0,0,0,4859,487,1,0,0,0,4860,4863,3,1252,626,0,4861,4863,5,78,0,0,4862,4860,1,0,0,0,4862,4861,1,0,0,0,4863,489,1,0,0,0,4864,4865,5,61,0,0,4865,4869,3,492,246,0,4866,4867,5,258,0,0,4867,4869,3,492,246,0,4868,4864,1,0,0,0,4868,4866,1,0,0,0,4869,491,1,0,0,0,4870,4937,3,854,427,0,4871,4872,3,494,247,0,4872,4873,3,854,427,0,4873,4937,1,0,0,0,4874,4875,5,261,0,0,4875,4876,3,496,248,0,4876,4877,3,854,427,0,4877,4937,1,0,0,0,4878,4879,5,286,0,0,4879,4880,3,496,248,0,4880,4881,3,854,427,0,4881,4937,1,0,0,0,4882,4883,5,207,0,0,4883,4884,3,496,248,0,4884,4885,3,854,427,0,4885,4937,1,0,0,0,4886,4887,5,240,0,0,4887,4888,3,496,248,0,4888,4889,3,854,427,0,4889,4937,1,0,0,0,4890,4891,5,130,0,0,4891,4892,3,1258,629,0,4892,4893,3,496,248,0,4893,4894,3,854,427,0,4894,4937,1,0,0,0,4895,4896,5,300,0,0,4896,4897,3,1258,629,0,4897,4898,3,496,248,0,4898,4899,3,854,427,0,4899,4937,1,0,0,0,4900,4901,3,1258,629,0,4901,4902,3,496,248,0,4902,4903,3,854,427,0,4903,4937,1,0,0,0,4904,4905,5,30,0,0,4905,4906,3,496,248,0,4906,4907,3,854,427,0,4907,4937,1,0,0,0,4908,4909,5,210,0,0,4909,4910,3,496,248,0,4910,4911,3,854,427,0,4911,4937,1,0,0,0,4912,4913,5,210,0,0,4913,4914,3,1258,629,0,4914,4915,3,496,248,0,4915,4916,3,854,427,0,4916,4937,1,0,0,0,4917,4918,5,210,0,0,4918,4919,5,30,0,0,4919,4920,3,496,248,0,4920,4921,3,854,427,0,4921,4937,1,0,0,0,4922,4923,5,144,0,0,4923,4924,3,496,248,0,4924,4925,3,854,427,0,4925,4937,1,0,0,0,4926,4927,5,144,0,0,4927,4928,3,1258,629,0,4928,4929,3,496,248,0,4929,4930,3,854,427,0,4930,4937,1,0,0,0,4931,4932,5,144,0,0,4932,4933,5,30,0,0,4933,4934,3,496,248,0,4934,4935,3,854,427,0,4935,4937,1,0,0,0,4936,4870,1,0,0,0,4936,4871,1,0,0,0,4936,4874,1,0,0,0,4936,4878,1,0,0,0,4936,4882,1,0,0,0,4936,4886,1,0,0,0,4936,4890,1,0,0,0,4936,4895,1,0,0,0,4936,4900,1,0,0,0,4936,4904,1,0,0,0,4936,4908,1,0,0,0,4936,4912,1,0,0,0,4936,4917,1,0,0,0,4936,4922,1,0,0,0,4936,4926,1,0,0,0,4936,4931,1,0,0,0,4937,493,1,0,0,0,4938,4939,7,23,0,0,4939,495,1,0,0,0,4940,4943,3,494,247,0,4941,4943,1,0,0,0,4942,4940,1,0,0,0,4942,4941,1,0,0,0,4943,497,1,0,0,0,4944,4945,5,65,0,0,4945,4946,3,502,251,0,4946,4947,5,80,0,0,4947,4948,3,508,254,0,4948,4949,5,94,0,0,4949,4950,3,510,255,0,4950,4951,3,514,257,0,4951,499,1,0,0,0,4952,4953,5,310,0,0,4953,4954,3,502,251,0,4954,4955,5,80,0,0,4955,4956,3,508,254,0,4956,4957,5,64,0,0,4957,4958,3,510,255,0,4958,4959,3,100,50,0,4959,4972,1,0,0,0,4960,4961,5,310,0,0,4961,4962,5,65,0,0,4962,4963,5,272,0,0,4963,4964,5,62,0,0,4964,4965,3,502,251,0,4965,4966,5,80,0,0,4966,4967,3,508,254,0,4967,4968,5,64,0,0,4968,4969,3,510,255,0,4969,4970,3,100,50,0,4970,4972,1,0,0,0,4971,4952,1,0,0,0,4971,4960,1,0,0,0,4972,501,1,0,0,0,4973,4989,3,504,252,0,4974,4989,5,30,0,0,4975,4976,5,30,0,0,4976,4989,5,287,0,0,4977,4978,5,30,0,0,4978,4979,5,2,0,0,4979,4980,3,194,97,0,4980,4981,5,3,0,0,4981,4989,1,0,0,0,4982,4983,5,30,0,0,4983,4984,5,287,0,0,4984,4985,5,2,0,0,4985,4986,3,194,97,0,4986,4987,5,3,0,0,4987,4989,1,0,0,0,4988,4973,1,0,0,0,4988,4974,1,0,0,0,4988,4975,1,0,0,0,4988,4977,1,0,0,0,4988,4982,1,0,0,0,4989,503,1,0,0,0,4990,4995,3,506,253,0,4991,4992,5,6,0,0,4992,4994,3,506,253,0,4993,4991,1,0,0,0,4994,4997,1,0,0,0,4995,4993,1,0,0,0,4995,4996,1,0,0,0,4996,505,1,0,0,0,4997,4995,1,0,0,0,4998,4999,5,88,0,0,4999,5008,3,192,96,0,5e3,5001,5,86,0,0,5001,5008,3,192,96,0,5002,5003,5,46,0,0,5003,5008,3,192,96,0,5004,5005,3,1264,632,0,5005,5006,3,192,96,0,5006,5008,1,0,0,0,5007,4998,1,0,0,0,5007,5e3,1,0,0,0,5007,5002,1,0,0,0,5007,5004,1,0,0,0,5008,507,1,0,0,0,5009,5048,3,1208,604,0,5010,5011,5,92,0,0,5011,5048,3,1208,604,0,5012,5013,5,321,0,0,5013,5048,3,1228,614,0,5014,5015,5,63,0,0,5015,5016,5,174,0,0,5016,5017,5,374,0,0,5017,5048,3,1232,616,0,5018,5019,5,63,0,0,5019,5020,5,324,0,0,5020,5048,3,1232,616,0,5021,5022,5,211,0,0,5022,5048,3,558,279,0,5023,5024,5,289,0,0,5024,5048,3,558,279,0,5025,5026,5,442,0,0,5026,5048,3,558,279,0,5027,5028,5,175,0,0,5028,5048,3,1212,606,0,5029,5030,5,189,0,0,5030,5048,3,468,234,0,5031,5032,5,238,0,0,5032,5048,3,1232,616,0,5033,5034,5,239,0,0,5034,5035,5,267,0,0,5035,5048,3,266,133,0,5036,5037,5,316,0,0,5037,5048,3,1216,608,0,5038,5039,5,344,0,0,5039,5048,3,1232,616,0,5040,5041,5,353,0,0,5041,5048,3,468,234,0,5042,5043,5,30,0,0,5043,5044,7,24,0,0,5044,5045,5,68,0,0,5045,5046,5,316,0,0,5046,5048,3,1216,608,0,5047,5009,1,0,0,0,5047,5010,1,0,0,0,5047,5012,1,0,0,0,5047,5014,1,0,0,0,5047,5018,1,0,0,0,5047,5021,1,0,0,0,5047,5023,1,0,0,0,5047,5025,1,0,0,0,5047,5027,1,0,0,0,5047,5029,1,0,0,0,5047,5031,1,0,0,0,5047,5033,1,0,0,0,5047,5036,1,0,0,0,5047,5038,1,0,0,0,5047,5040,1,0,0,0,5047,5042,1,0,0,0,5048,509,1,0,0,0,5049,5054,3,512,256,0,5050,5051,5,6,0,0,5051,5053,3,512,256,0,5052,5050,1,0,0,0,5053,5056,1,0,0,0,5054,5052,1,0,0,0,5054,5055,1,0,0,0,5055,511,1,0,0,0,5056,5054,1,0,0,0,5057,5061,3,1260,630,0,5058,5059,5,66,0,0,5059,5061,3,1260,630,0,5060,5057,1,0,0,0,5060,5058,1,0,0,0,5061,513,1,0,0,0,5062,5063,5,105,0,0,5063,5064,5,65,0,0,5064,5067,5,272,0,0,5065,5067,1,0,0,0,5066,5062,1,0,0,0,5066,5065,1,0,0,0,5067,515,1,0,0,0,5068,5069,5,65,0,0,5069,5070,3,504,252,0,5070,5071,5,94,0,0,5071,5072,3,1262,631,0,5072,5073,3,520,260,0,5073,5074,3,522,261,0,5074,517,1,0,0,0,5075,5076,5,310,0,0,5076,5077,3,504,252,0,5077,5078,5,64,0,0,5078,5079,3,1262,631,0,5079,5080,3,522,261,0,5080,5081,3,100,50,0,5081,5093,1,0,0,0,5082,5083,5,310,0,0,5083,5084,5,134,0,0,5084,5085,5,272,0,0,5085,5086,5,62,0,0,5086,5087,3,504,252,0,5087,5088,5,64,0,0,5088,5089,3,1262,631,0,5089,5090,3,522,261,0,5090,5091,3,100,50,0,5091,5093,1,0,0,0,5092,5075,1,0,0,0,5092,5082,1,0,0,0,5093,519,1,0,0,0,5094,5095,5,105,0,0,5095,5096,5,134,0,0,5096,5099,5,272,0,0,5097,5099,1,0,0,0,5098,5094,1,0,0,0,5098,5097,1,0,0,0,5099,521,1,0,0,0,5100,5101,5,214,0,0,5101,5102,5,147,0,0,5102,5105,3,1260,630,0,5103,5105,1,0,0,0,5104,5100,1,0,0,0,5104,5103,1,0,0,0,5105,523,1,0,0,0,5106,5107,5,138,0,0,5107,5108,5,53,0,0,5108,5112,5,287,0,0,5109,5111,3,526,263,0,5110,5109,1,0,0,0,5111,5114,1,0,0,0,5112,5110,1,0,0,0,5112,5113,1,0,0,0,5113,5115,1,0,0,0,5114,5112,1,0,0,0,5115,5116,3,528,264,0,5116,525,1,0,0,0,5117,5118,5,68,0,0,5118,5119,5,316,0,0,5119,5125,3,1216,608,0,5120,5121,5,62,0,0,5121,5122,3,1506,753,0,5122,5123,3,1262,631,0,5123,5125,1,0,0,0,5124,5117,1,0,0,0,5124,5120,1,0,0,0,5125,527,1,0,0,0,5126,5127,5,65,0,0,5127,5128,3,502,251,0,5128,5129,5,80,0,0,5129,5130,3,530,265,0,5130,5131,5,94,0,0,5131,5132,3,510,255,0,5132,5133,3,514,257,0,5133,5154,1,0,0,0,5134,5135,5,310,0,0,5135,5136,3,502,251,0,5136,5137,5,80,0,0,5137,5138,3,530,265,0,5138,5139,5,64,0,0,5139,5140,3,510,255,0,5140,5141,3,100,50,0,5141,5154,1,0,0,0,5142,5143,5,310,0,0,5143,5144,5,65,0,0,5144,5145,5,272,0,0,5145,5146,5,62,0,0,5146,5147,3,502,251,0,5147,5148,5,80,0,0,5148,5149,3,530,265,0,5149,5150,5,64,0,0,5150,5151,3,510,255,0,5151,5152,3,100,50,0,5152,5154,1,0,0,0,5153,5126,1,0,0,0,5153,5134,1,0,0,0,5153,5142,1,0,0,0,5154,529,1,0,0,0,5155,5156,7,25,0,0,5156,531,1,0,0,0,5157,5159,5,46,0,0,5158,5160,5,98,0,0,5159,5158,1,0,0,0,5159,5160,1,0,0,0,5160,5161,1,0,0,0,5161,5163,5,226,0,0,5162,5164,5,109,0,0,5163,5162,1,0,0,0,5163,5164,1,0,0,0,5164,5166,1,0,0,0,5165,5167,3,1234,617,0,5166,5165,1,0,0,0,5166,5167,1,0,0,0,5167,5168,1,0,0,0,5168,5169,5,80,0,0,5169,5170,3,958,479,0,5170,5171,3,534,267,0,5171,5172,5,2,0,0,5172,5173,3,536,268,0,5173,5174,5,3,0,0,5174,5175,3,542,271,0,5175,5176,3,110,55,0,5176,5177,3,232,116,0,5177,5178,3,974,487,0,5178,5203,1,0,0,0,5179,5181,5,46,0,0,5180,5182,5,98,0,0,5181,5180,1,0,0,0,5181,5182,1,0,0,0,5182,5183,1,0,0,0,5183,5185,5,226,0,0,5184,5186,5,109,0,0,5185,5184,1,0,0,0,5185,5186,1,0,0,0,5186,5187,1,0,0,0,5187,5188,5,220,0,0,5188,5189,5,77,0,0,5189,5190,5,389,0,0,5190,5191,3,1234,617,0,5191,5192,5,80,0,0,5192,5193,3,958,479,0,5193,5194,3,534,267,0,5194,5195,5,2,0,0,5195,5196,3,536,268,0,5196,5197,5,3,0,0,5197,5198,3,542,271,0,5198,5199,3,110,55,0,5199,5200,3,232,116,0,5200,5201,3,974,487,0,5201,5203,1,0,0,0,5202,5157,1,0,0,0,5202,5179,1,0,0,0,5203,533,1,0,0,0,5204,5205,5,100,0,0,5205,5208,3,1234,617,0,5206,5208,1,0,0,0,5207,5204,1,0,0,0,5207,5206,1,0,0,0,5208,535,1,0,0,0,5209,5214,3,540,270,0,5210,5211,5,6,0,0,5211,5213,3,540,270,0,5212,5210,1,0,0,0,5213,5216,1,0,0,0,5214,5212,1,0,0,0,5214,5215,1,0,0,0,5215,537,1,0,0,0,5216,5214,1,0,0,0,5217,5218,3,544,272,0,5218,5219,3,546,273,0,5219,5220,3,548,274,0,5220,5221,3,550,275,0,5221,5229,1,0,0,0,5222,5223,3,544,272,0,5223,5224,3,470,235,0,5224,5225,3,108,54,0,5225,5226,3,548,274,0,5226,5227,3,550,275,0,5227,5229,1,0,0,0,5228,5217,1,0,0,0,5228,5222,1,0,0,0,5229,539,1,0,0,0,5230,5231,3,1264,632,0,5231,5232,3,538,269,0,5232,5242,1,0,0,0,5233,5234,3,1090,545,0,5234,5235,3,538,269,0,5235,5242,1,0,0,0,5236,5237,5,2,0,0,5237,5238,3,1038,519,0,5238,5239,5,3,0,0,5239,5240,3,538,269,0,5240,5242,1,0,0,0,5241,5230,1,0,0,0,5241,5233,1,0,0,0,5241,5236,1,0,0,0,5242,541,1,0,0,0,5243,5244,5,441,0,0,5244,5245,5,2,0,0,5245,5250,3,540,270,0,5246,5247,5,6,0,0,5247,5249,3,540,270,0,5248,5246,1,0,0,0,5249,5252,1,0,0,0,5250,5248,1,0,0,0,5250,5251,1,0,0,0,5251,5253,1,0,0,0,5252,5250,1,0,0,0,5253,5254,5,3,0,0,5254,5257,1,0,0,0,5255,5257,1,0,0,0,5256,5243,1,0,0,0,5256,5255,1,0,0,0,5257,543,1,0,0,0,5258,5259,5,43,0,0,5259,5262,3,470,235,0,5260,5262,1,0,0,0,5261,5258,1,0,0,0,5261,5260,1,0,0,0,5262,545,1,0,0,0,5263,5266,3,470,235,0,5264,5266,1,0,0,0,5265,5263,1,0,0,0,5265,5264,1,0,0,0,5266,547,1,0,0,0,5267,5271,5,37,0,0,5268,5271,5,55,0,0,5269,5271,1,0,0,0,5270,5267,1,0,0,0,5270,5268,1,0,0,0,5270,5269,1,0,0,0,5271,549,1,0,0,0,5272,5273,5,266,0,0,5273,5278,5,207,0,0,5274,5275,5,266,0,0,5275,5278,5,240,0,0,5276,5278,1,0,0,0,5277,5272,1,0,0,0,5277,5274,1,0,0,0,5277,5276,1,0,0,0,5278,551,1,0,0,0,5279,5280,5,46,0,0,5280,5281,3,554,277,0,5281,5282,7,21,0,0,5282,5283,3,1240,620,0,5283,5285,5,2,0,0,5284,5286,3,562,281,0,5285,5284,1,0,0,0,5285,5286,1,0,0,0,5286,5287,1,0,0,0,5287,5297,5,3,0,0,5288,5295,5,309,0,0,5289,5296,3,572,286,0,5290,5291,5,92,0,0,5291,5292,5,2,0,0,5292,5293,3,598,299,0,5293,5294,5,3,0,0,5294,5296,1,0,0,0,5295,5289,1,0,0,0,5295,5290,1,0,0,0,5296,5298,1,0,0,0,5297,5288,1,0,0,0,5297,5298,1,0,0,0,5298,5299,1,0,0,0,5299,5300,3,584,292,0,5300,553,1,0,0,0,5301,5302,5,82,0,0,5302,5305,5,304,0,0,5303,5305,1,0,0,0,5304,5301,1,0,0,0,5304,5303,1,0,0,0,5305,555,1,0,0,0,5306,5311,3,566,283,0,5307,5308,5,6,0,0,5308,5310,3,566,283,0,5309,5307,1,0,0,0,5310,5313,1,0,0,0,5311,5309,1,0,0,0,5311,5312,1,0,0,0,5312,557,1,0,0,0,5313,5311,1,0,0,0,5314,5319,3,560,280,0,5315,5316,5,6,0,0,5316,5318,3,560,280,0,5317,5315,1,0,0,0,5318,5321,1,0,0,0,5319,5317,1,0,0,0,5319,5320,1,0,0,0,5320,559,1,0,0,0,5321,5319,1,0,0,0,5322,5323,3,1240,620,0,5323,5325,5,2,0,0,5324,5326,3,556,278,0,5325,5324,1,0,0,0,5325,5326,1,0,0,0,5326,5327,1,0,0,0,5327,5328,5,3,0,0,5328,5335,1,0,0,0,5329,5335,3,1282,641,0,5330,5332,3,1264,632,0,5331,5333,3,1198,599,0,5332,5331,1,0,0,0,5332,5333,1,0,0,0,5333,5335,1,0,0,0,5334,5322,1,0,0,0,5334,5329,1,0,0,0,5334,5330,1,0,0,0,5335,561,1,0,0,0,5336,5341,3,564,282,0,5337,5338,5,6,0,0,5338,5340,3,564,282,0,5339,5337,1,0,0,0,5340,5343,1,0,0,0,5341,5339,1,0,0,0,5341,5342,1,0,0,0,5342,563,1,0,0,0,5343,5341,1,0,0,0,5344,5347,3,566,283,0,5345,5346,7,26,0,0,5346,5348,3,1038,519,0,5347,5345,1,0,0,0,5347,5348,1,0,0,0,5348,565,1,0,0,0,5349,5351,3,568,284,0,5350,5352,3,570,285,0,5351,5350,1,0,0,0,5351,5352,1,0,0,0,5352,5353,1,0,0,0,5353,5354,3,574,287,0,5354,5363,1,0,0,0,5355,5357,3,570,285,0,5356,5358,3,568,284,0,5357,5356,1,0,0,0,5357,5358,1,0,0,0,5358,5359,1,0,0,0,5359,5360,3,574,287,0,5360,5363,1,0,0,0,5361,5363,3,574,287,0,5362,5349,1,0,0,0,5362,5355,1,0,0,0,5362,5361,1,0,0,0,5363,567,1,0,0,0,5364,5366,5,68,0,0,5365,5367,5,453,0,0,5366,5365,1,0,0,0,5366,5367,1,0,0,0,5367,5372,1,0,0,0,5368,5372,5,453,0,0,5369,5372,5,393,0,0,5370,5372,5,101,0,0,5371,5364,1,0,0,0,5371,5368,1,0,0,0,5371,5369,1,0,0,0,5371,5370,1,0,0,0,5372,569,1,0,0,0,5373,5378,3,1268,634,0,5374,5378,3,1286,643,0,5375,5378,5,119,0,0,5376,5378,5,126,0,0,5377,5373,1,0,0,0,5377,5374,1,0,0,0,5377,5375,1,0,0,0,5377,5376,1,0,0,0,5378,571,1,0,0,0,5379,5380,3,574,287,0,5380,573,1,0,0,0,5381,5396,3,996,498,0,5382,5384,5,408,0,0,5383,5382,1,0,0,0,5383,5384,1,0,0,0,5384,5389,1,0,0,0,5385,5390,3,1286,643,0,5386,5390,3,1268,634,0,5387,5390,5,119,0,0,5388,5390,5,126,0,0,5389,5385,1,0,0,0,5389,5386,1,0,0,0,5389,5387,1,0,0,0,5389,5388,1,0,0,0,5390,5391,1,0,0,0,5391,5392,3,472,236,0,5392,5393,5,27,0,0,5393,5394,5,353,0,0,5394,5396,1,0,0,0,5395,5381,1,0,0,0,5395,5383,1,0,0,0,5396,575,1,0,0,0,5397,5408,5,2,0,0,5398,5409,5,9,0,0,5399,5409,3,578,289,0,5400,5401,5,83,0,0,5401,5402,5,147,0,0,5402,5409,3,578,289,0,5403,5404,3,578,289,0,5404,5405,5,83,0,0,5405,5406,5,147,0,0,5406,5407,3,578,289,0,5407,5409,1,0,0,0,5408,5398,1,0,0,0,5408,5399,1,0,0,0,5408,5400,1,0,0,0,5408,5403,1,0,0,0,5409,5410,1,0,0,0,5410,5411,5,3,0,0,5411,577,1,0,0,0,5412,5417,3,566,283,0,5413,5414,5,6,0,0,5414,5416,3,566,283,0,5415,5413,1,0,0,0,5416,5419,1,0,0,0,5417,5415,1,0,0,0,5417,5418,1,0,0,0,5418,579,1,0,0,0,5419,5417,1,0,0,0,5420,5421,3,1240,620,0,5421,5422,3,576,288,0,5422,581,1,0,0,0,5423,5428,3,580,290,0,5424,5425,5,6,0,0,5425,5427,3,580,290,0,5426,5424,1,0,0,0,5427,5430,1,0,0,0,5428,5426,1,0,0,0,5428,5429,1,0,0,0,5429,583,1,0,0,0,5430,5428,1,0,0,0,5431,5433,3,588,294,0,5432,5431,1,0,0,0,5433,5434,1,0,0,0,5434,5432,1,0,0,0,5434,5435,1,0,0,0,5435,5436,1,0,0,0,5436,5437,6,292,-1,0,5437,585,1,0,0,0,5438,5439,5,149,0,0,5439,5440,5,80,0,0,5440,5441,5,78,0,0,5441,5474,5,458,0,0,5442,5443,5,309,0,0,5443,5444,5,78,0,0,5444,5445,5,80,0,0,5445,5446,5,78,0,0,5446,5474,5,458,0,0,5447,5474,5,339,0,0,5448,5474,5,222,0,0,5449,5474,5,331,0,0,5450,5474,5,370,0,0,5451,5452,5,205,0,0,5452,5453,5,320,0,0,5453,5474,5,181,0,0,5454,5455,5,205,0,0,5455,5456,5,320,0,0,5456,5474,5,234,0,0,5457,5458,5,320,0,0,5458,5474,5,181,0,0,5459,5460,5,320,0,0,5460,5474,5,234,0,0,5461,5474,5,241,0,0,5462,5463,5,77,0,0,5463,5474,5,241,0,0,5464,5465,5,170,0,0,5465,5474,3,264,132,0,5466,5467,5,313,0,0,5467,5474,3,264,132,0,5468,5469,5,459,0,0,5469,5474,3,470,235,0,5470,5474,3,74,37,0,5471,5472,5,460,0,0,5472,5474,3,1264,632,0,5473,5438,1,0,0,0,5473,5442,1,0,0,0,5473,5447,1,0,0,0,5473,5448,1,0,0,0,5473,5449,1,0,0,0,5473,5450,1,0,0,0,5473,5451,1,0,0,0,5473,5454,1,0,0,0,5473,5457,1,0,0,0,5473,5459,1,0,0,0,5473,5461,1,0,0,0,5473,5462,1,0,0,0,5473,5464,1,0,0,0,5473,5466,1,0,0,0,5473,5468,1,0,0,0,5473,5470,1,0,0,0,5473,5471,1,0,0,0,5474,587,1,0,0,0,5475,5476,5,36,0,0,5476,5484,3,590,295,0,5477,5478,5,238,0,0,5478,5484,3,64,32,0,5479,5480,5,443,0,0,5480,5484,3,592,296,0,5481,5484,5,104,0,0,5482,5484,3,586,293,0,5483,5475,1,0,0,0,5483,5477,1,0,0,0,5483,5479,1,0,0,0,5483,5481,1,0,0,0,5483,5482,1,0,0,0,5484,589,1,0,0,0,5485,5491,3,1252,626,0,5486,5487,3,1252,626,0,5487,5488,5,6,0,0,5488,5489,3,1252,626,0,5489,5491,1,0,0,0,5490,5485,1,0,0,0,5490,5486,1,0,0,0,5491,591,1,0,0,0,5492,5493,5,62,0,0,5493,5494,5,353,0,0,5494,5501,3,996,498,0,5495,5496,5,6,0,0,5496,5497,5,62,0,0,5497,5498,5,353,0,0,5498,5500,3,996,498,0,5499,5495,1,0,0,0,5500,5503,1,0,0,0,5501,5499,1,0,0,0,5501,5502,1,0,0,0,5502,593,1,0,0,0,5503,5501,1,0,0,0,5504,5505,5,105,0,0,5505,5508,3,416,208,0,5506,5508,1,0,0,0,5507,5504,1,0,0,0,5507,5506,1,0,0,0,5508,595,1,0,0,0,5509,5510,3,570,285,0,5510,5511,3,574,287,0,5511,597,1,0,0,0,5512,5517,3,596,298,0,5513,5514,5,6,0,0,5514,5516,3,596,298,0,5515,5513,1,0,0,0,5516,5519,1,0,0,0,5517,5515,1,0,0,0,5517,5518,1,0,0,0,5518,599,1,0,0,0,5519,5517,1,0,0,0,5520,5521,5,138,0,0,5521,5522,7,27,0,0,5522,5524,3,560,280,0,5523,5525,3,586,293,0,5524,5523,1,0,0,0,5525,5526,1,0,0,0,5526,5524,1,0,0,0,5526,5527,1,0,0,0,5527,5529,1,0,0,0,5528,5530,5,308,0,0,5529,5528,1,0,0,0,5529,5530,1,0,0,0,5530,601,1,0,0,0,5531,5532,5,191,0,0,5532,5533,5,211,0,0,5533,5534,3,558,279,0,5534,5535,3,100,50,0,5535,5568,1,0,0,0,5536,5537,5,191,0,0,5537,5538,5,211,0,0,5538,5539,5,220,0,0,5539,5540,5,389,0,0,5540,5541,3,558,279,0,5541,5542,3,100,50,0,5542,5568,1,0,0,0,5543,5544,5,191,0,0,5544,5545,5,289,0,0,5545,5546,3,558,279,0,5546,5547,3,100,50,0,5547,5568,1,0,0,0,5548,5549,5,191,0,0,5549,5550,5,289,0,0,5550,5551,5,220,0,0,5551,5552,5,389,0,0,5552,5553,3,558,279,0,5553,5554,3,100,50,0,5554,5568,1,0,0,0,5555,5556,5,191,0,0,5556,5557,5,442,0,0,5557,5558,3,558,279,0,5558,5559,3,100,50,0,5559,5568,1,0,0,0,5560,5561,5,191,0,0,5561,5562,5,442,0,0,5562,5563,5,220,0,0,5563,5564,5,389,0,0,5564,5565,3,558,279,0,5565,5566,3,100,50,0,5566,5568,1,0,0,0,5567,5531,1,0,0,0,5567,5536,1,0,0,0,5567,5543,1,0,0,0,5567,5548,1,0,0,0,5567,5555,1,0,0,0,5567,5560,1,0,0,0,5568,603,1,0,0,0,5569,5570,5,191,0,0,5570,5571,5,136,0,0,5571,5572,3,582,291,0,5572,5573,3,100,50,0,5573,5582,1,0,0,0,5574,5575,5,191,0,0,5575,5576,5,136,0,0,5576,5577,5,220,0,0,5577,5578,5,389,0,0,5578,5579,3,582,291,0,5579,5580,3,100,50,0,5580,5582,1,0,0,0,5581,5569,1,0,0,0,5581,5574,1,0,0,0,5582,605,1,0,0,0,5583,5584,5,191,0,0,5584,5585,5,271,0,0,5585,5586,3,612,306,0,5586,5587,3,100,50,0,5587,5596,1,0,0,0,5588,5589,5,191,0,0,5589,5590,5,271,0,0,5590,5591,5,220,0,0,5591,5592,5,389,0,0,5592,5593,3,612,306,0,5593,5594,3,100,50,0,5594,5596,1,0,0,0,5595,5583,1,0,0,0,5595,5588,1,0,0,0,5596,607,1,0,0,0,5597,5598,5,2,0,0,5598,5599,3,996,498,0,5599,5600,5,3,0,0,5600,5620,1,0,0,0,5601,5602,5,2,0,0,5602,5603,3,996,498,0,5603,5604,5,6,0,0,5604,5605,3,996,498,0,5605,5606,5,3,0,0,5606,5620,1,0,0,0,5607,5608,5,2,0,0,5608,5609,5,400,0,0,5609,5610,5,6,0,0,5610,5611,3,996,498,0,5611,5612,5,3,0,0,5612,5620,1,0,0,0,5613,5614,5,2,0,0,5614,5615,3,996,498,0,5615,5616,5,6,0,0,5616,5617,5,400,0,0,5617,5618,5,3,0,0,5618,5620,1,0,0,0,5619,5597,1,0,0,0,5619,5601,1,0,0,0,5619,5607,1,0,0,0,5619,5613,1,0,0,0,5620,609,1,0,0,0,5621,5622,3,1264,632,0,5622,5623,5,11,0,0,5623,5625,1,0,0,0,5624,5621,1,0,0,0,5625,5628,1,0,0,0,5626,5624,1,0,0,0,5626,5627,1,0,0,0,5627,5629,1,0,0,0,5628,5626,1,0,0,0,5629,5630,3,1146,573,0,5630,611,1,0,0,0,5631,5636,3,614,307,0,5632,5633,5,6,0,0,5633,5635,3,614,307,0,5634,5632,1,0,0,0,5635,5638,1,0,0,0,5636,5634,1,0,0,0,5636,5637,1,0,0,0,5637,613,1,0,0,0,5638,5636,1,0,0,0,5639,5640,3,610,305,0,5640,5641,3,608,304,0,5641,615,1,0,0,0,5642,5643,5,57,0,0,5643,5644,3,618,309,0,5644,617,1,0,0,0,5645,5647,3,620,310,0,5646,5645,1,0,0,0,5647,5648,1,0,0,0,5648,5646,1,0,0,0,5648,5649,1,0,0,0,5649,619,1,0,0,0,5650,5654,3,1252,626,0,5651,5652,5,238,0,0,5652,5654,3,64,32,0,5653,5650,1,0,0,0,5653,5651,1,0,0,0,5654,621,1,0,0,0,5655,5656,5,46,0,0,5656,5657,5,41,0,0,5657,5658,5,2,0,0,5658,5659,3,996,498,0,5659,5660,5,36,0,0,5660,5661,3,996,498,0,5661,5662,5,3,0,0,5662,5663,5,105,0,0,5663,5664,5,211,0,0,5664,5665,3,560,280,0,5665,5666,3,624,312,0,5666,5690,1,0,0,0,5667,5668,5,46,0,0,5668,5669,5,41,0,0,5669,5670,5,2,0,0,5670,5671,3,996,498,0,5671,5672,5,36,0,0,5672,5673,3,996,498,0,5673,5674,5,3,0,0,5674,5675,5,372,0,0,5675,5676,5,211,0,0,5676,5677,3,624,312,0,5677,5690,1,0,0,0,5678,5679,5,46,0,0,5679,5680,5,41,0,0,5680,5681,5,2,0,0,5681,5682,3,996,498,0,5682,5683,5,36,0,0,5683,5684,3,996,498,0,5684,5685,5,3,0,0,5685,5686,5,105,0,0,5686,5687,5,393,0,0,5687,5688,3,624,312,0,5688,5690,1,0,0,0,5689,5655,1,0,0,0,5689,5667,1,0,0,0,5689,5678,1,0,0,0,5690,623,1,0,0,0,5691,5692,5,36,0,0,5692,5697,5,223,0,0,5693,5694,5,36,0,0,5694,5697,5,141,0,0,5695,5697,1,0,0,0,5696,5691,1,0,0,0,5696,5693,1,0,0,0,5696,5695,1,0,0,0,5697,625,1,0,0,0,5698,5699,5,191,0,0,5699,5700,5,41,0,0,5700,5701,3,628,314,0,5701,5702,5,2,0,0,5702,5703,3,996,498,0,5703,5704,5,36,0,0,5704,5705,3,996,498,0,5705,5706,5,3,0,0,5706,5707,3,100,50,0,5707,627,1,0,0,0,5708,5709,5,220,0,0,5709,5712,5,389,0,0,5710,5712,1,0,0,0,5711,5708,1,0,0,0,5711,5710,1,0,0,0,5712,629,1,0,0,0,5713,5714,5,46,0,0,5714,5715,3,554,277,0,5715,5716,5,443,0,0,5716,5717,5,62,0,0,5717,5718,3,996,498,0,5718,5719,5,238,0,0,5719,5720,3,1234,617,0,5720,5721,5,2,0,0,5721,5722,3,632,316,0,5722,5723,5,3,0,0,5723,631,1,0,0,0,5724,5725,5,64,0,0,5725,5726,5,461,0,0,5726,5727,5,105,0,0,5727,5728,5,211,0,0,5728,5729,3,560,280,0,5729,5730,5,6,0,0,5730,5731,5,94,0,0,5731,5732,5,461,0,0,5732,5733,5,105,0,0,5733,5734,5,211,0,0,5734,5735,3,560,280,0,5735,5759,1,0,0,0,5736,5737,5,94,0,0,5737,5738,5,461,0,0,5738,5739,5,105,0,0,5739,5740,5,211,0,0,5740,5741,3,560,280,0,5741,5742,5,6,0,0,5742,5743,5,64,0,0,5743,5744,5,461,0,0,5744,5745,5,105,0,0,5745,5746,5,211,0,0,5746,5747,3,560,280,0,5747,5759,1,0,0,0,5748,5749,5,64,0,0,5749,5750,5,461,0,0,5750,5751,5,105,0,0,5751,5752,5,211,0,0,5752,5759,3,560,280,0,5753,5754,5,94,0,0,5754,5755,5,461,0,0,5755,5756,5,105,0,0,5756,5757,5,211,0,0,5757,5759,3,560,280,0,5758,5724,1,0,0,0,5758,5736,1,0,0,0,5758,5748,1,0,0,0,5758,5753,1,0,0,0,5759,633,1,0,0,0,5760,5761,5,191,0,0,5761,5762,5,443,0,0,5762,5763,3,628,314,0,5763,5764,5,62,0,0,5764,5765,3,996,498,0,5765,5766,5,238,0,0,5766,5767,3,1234,617,0,5767,5768,3,100,50,0,5768,635,1,0,0,0,5769,5774,5,299,0,0,5770,5771,5,2,0,0,5771,5772,3,640,320,0,5772,5773,5,3,0,0,5773,5775,1,0,0,0,5774,5770,1,0,0,0,5774,5775,1,0,0,0,5775,5776,1,0,0,0,5776,5778,3,638,319,0,5777,5779,5,109,0,0,5778,5777,1,0,0,0,5778,5779,1,0,0,0,5779,5780,1,0,0,0,5780,5781,3,1230,615,0,5781,5831,1,0,0,0,5782,5787,5,299,0,0,5783,5784,5,2,0,0,5784,5785,3,640,320,0,5785,5786,5,3,0,0,5786,5788,1,0,0,0,5787,5783,1,0,0,0,5787,5788,1,0,0,0,5788,5789,1,0,0,0,5789,5791,5,175,0,0,5790,5792,5,109,0,0,5791,5790,1,0,0,0,5791,5792,1,0,0,0,5792,5793,1,0,0,0,5793,5831,3,1210,605,0,5794,5799,5,299,0,0,5795,5796,5,2,0,0,5796,5797,3,640,320,0,5797,5798,5,3,0,0,5798,5800,1,0,0,0,5799,5795,1,0,0,0,5799,5800,1,0,0,0,5800,5801,1,0,0,0,5801,5803,5,316,0,0,5802,5804,5,109,0,0,5803,5802,1,0,0,0,5803,5804,1,0,0,0,5804,5805,1,0,0,0,5805,5831,3,1214,607,0,5806,5811,5,299,0,0,5807,5808,5,2,0,0,5808,5809,3,640,320,0,5809,5810,5,3,0,0,5810,5812,1,0,0,0,5811,5807,1,0,0,0,5811,5812,1,0,0,0,5812,5813,1,0,0,0,5813,5815,5,226,0,0,5814,5816,5,109,0,0,5815,5814,1,0,0,0,5815,5816,1,0,0,0,5816,5817,1,0,0,0,5817,5831,3,1218,609,0,5818,5823,5,299,0,0,5819,5820,5,2,0,0,5820,5821,3,640,320,0,5821,5822,5,3,0,0,5822,5824,1,0,0,0,5823,5819,1,0,0,0,5823,5824,1,0,0,0,5824,5825,1,0,0,0,5825,5827,5,342,0,0,5826,5828,5,109,0,0,5827,5826,1,0,0,0,5827,5828,1,0,0,0,5828,5829,1,0,0,0,5829,5831,3,1234,617,0,5830,5769,1,0,0,0,5830,5782,1,0,0,0,5830,5794,1,0,0,0,5830,5806,1,0,0,0,5830,5818,1,0,0,0,5831,637,1,0,0,0,5832,5833,7,28,0,0,5833,639,1,0,0,0,5834,5839,3,642,321,0,5835,5836,5,6,0,0,5836,5838,3,642,321,0,5837,5835,1,0,0,0,5838,5841,1,0,0,0,5839,5837,1,0,0,0,5839,5840,1,0,0,0,5840,641,1,0,0,0,5841,5839,1,0,0,0,5842,5843,7,29,0,0,5843,643,1,0,0,0,5844,5845,5,138,0,0,5845,5846,5,344,0,0,5846,5847,3,1234,617,0,5847,5848,5,326,0,0,5848,5849,3,108,54,0,5849,5857,1,0,0,0,5850,5851,5,138,0,0,5851,5852,5,344,0,0,5852,5853,3,1234,617,0,5853,5854,5,306,0,0,5854,5855,3,108,54,0,5855,5857,1,0,0,0,5856,5844,1,0,0,0,5856,5850,1,0,0,0,5857,645,1,0,0,0,5858,5859,5,138,0,0,5859,5860,5,136,0,0,5860,5861,3,580,290,0,5861,5862,5,302,0,0,5862,5863,5,94,0,0,5863,5864,3,1234,617,0,5864,6296,1,0,0,0,5865,5866,5,138,0,0,5866,5867,5,108,0,0,5867,5868,3,470,235,0,5868,5869,5,302,0,0,5869,5870,5,94,0,0,5870,5871,3,1234,617,0,5871,6296,1,0,0,0,5872,5873,5,138,0,0,5873,5874,5,168,0,0,5874,5875,3,470,235,0,5875,5876,5,302,0,0,5876,5877,5,94,0,0,5877,5878,3,1234,617,0,5878,6296,1,0,0,0,5879,5880,5,138,0,0,5880,5881,5,175,0,0,5881,5882,3,1210,605,0,5882,5883,5,302,0,0,5883,5884,5,94,0,0,5884,5885,3,1234,617,0,5885,6296,1,0,0,0,5886,5887,5,138,0,0,5887,5888,5,189,0,0,5888,5889,3,470,235,0,5889,5890,5,302,0,0,5890,5891,5,94,0,0,5891,5892,3,1234,617,0,5892,6296,1,0,0,0,5893,5894,5,138,0,0,5894,5895,5,189,0,0,5895,5896,3,470,235,0,5896,5897,5,302,0,0,5897,5898,5,45,0,0,5898,5899,3,1224,612,0,5899,5900,5,94,0,0,5900,5901,3,1234,617,0,5901,6296,1,0,0,0,5902,5903,5,138,0,0,5903,5904,5,63,0,0,5904,5905,5,174,0,0,5905,5906,5,374,0,0,5906,5907,3,1234,617,0,5907,5908,5,302,0,0,5908,5909,5,94,0,0,5909,5910,3,1234,617,0,5910,6296,1,0,0,0,5911,5912,5,138,0,0,5912,5913,5,211,0,0,5913,5914,3,560,280,0,5914,5915,5,302,0,0,5915,5916,5,94,0,0,5916,5917,3,1234,617,0,5917,6296,1,0,0,0,5918,5919,5,138,0,0,5919,5920,3,276,138,0,5920,5921,5,238,0,0,5921,5922,3,1234,617,0,5922,5923,5,302,0,0,5923,5924,5,94,0,0,5924,5925,3,1234,617,0,5925,6296,1,0,0,0,5926,5927,5,138,0,0,5927,5928,5,271,0,0,5928,5929,5,156,0,0,5929,5930,3,470,235,0,5930,5931,5,100,0,0,5931,5932,3,1234,617,0,5932,5933,5,302,0,0,5933,5934,5,94,0,0,5934,5935,3,1234,617,0,5935,6296,1,0,0,0,5936,5937,5,138,0,0,5937,5938,5,271,0,0,5938,5939,5,206,0,0,5939,5940,3,470,235,0,5940,5941,5,100,0,0,5941,5942,3,1234,617,0,5942,5943,5,302,0,0,5943,5944,5,94,0,0,5944,5945,3,1234,617,0,5945,6296,1,0,0,0,5946,5947,5,138,0,0,5947,5948,5,445,0,0,5948,5949,3,1234,617,0,5949,5950,5,80,0,0,5950,5951,3,1230,615,0,5951,5952,5,302,0,0,5952,5953,5,94,0,0,5953,5954,3,1234,617,0,5954,6296,1,0,0,0,5955,5956,5,138,0,0,5956,5957,5,445,0,0,5957,5958,5,220,0,0,5958,5959,5,389,0,0,5959,5960,3,1234,617,0,5960,5961,5,80,0,0,5961,5962,3,1230,615,0,5962,5963,5,302,0,0,5963,5964,5,94,0,0,5964,5965,3,1234,617,0,5965,6296,1,0,0,0,5966,5967,5,138,0,0,5967,5968,5,289,0,0,5968,5969,3,560,280,0,5969,5970,5,302,0,0,5970,5971,5,94,0,0,5971,5972,3,1234,617,0,5972,6296,1,0,0,0,5973,5974,5,138,0,0,5974,5975,5,452,0,0,5975,5976,3,1234,617,0,5976,5977,5,302,0,0,5977,5978,5,94,0,0,5978,5979,3,1234,617,0,5979,6296,1,0,0,0,5980,5981,5,138,0,0,5981,5982,5,442,0,0,5982,5983,3,560,280,0,5983,5984,5,302,0,0,5984,5985,5,94,0,0,5985,5986,3,1234,617,0,5986,6296,1,0,0,0,5987,5988,5,138,0,0,5988,5989,5,316,0,0,5989,5990,3,1214,607,0,5990,5991,5,302,0,0,5991,5992,5,94,0,0,5992,5993,3,1234,617,0,5993,6296,1,0,0,0,5994,5995,5,138,0,0,5995,5996,5,324,0,0,5996,5997,3,1234,617,0,5997,5998,5,302,0,0,5998,5999,5,94,0,0,5999,6e3,3,1234,617,0,6e3,6296,1,0,0,0,6001,6002,5,138,0,0,6002,6003,5,451,0,0,6003,6004,3,1234,617,0,6004,6005,5,302,0,0,6005,6006,5,94,0,0,6006,6007,3,1234,617,0,6007,6296,1,0,0,0,6008,6009,5,138,0,0,6009,6010,5,92,0,0,6010,6011,3,958,479,0,6011,6012,5,302,0,0,6012,6013,5,94,0,0,6013,6014,3,1234,617,0,6014,6296,1,0,0,0,6015,6016,5,138,0,0,6016,6017,5,92,0,0,6017,6018,5,220,0,0,6018,6019,5,389,0,0,6019,6020,3,958,479,0,6020,6021,5,302,0,0,6021,6022,5,94,0,0,6022,6023,3,1234,617,0,6023,6296,1,0,0,0,6024,6025,5,138,0,0,6025,6028,5,321,0,0,6026,6027,5,220,0,0,6027,6029,5,389,0,0,6028,6026,1,0,0,0,6028,6029,1,0,0,0,6029,6030,1,0,0,0,6030,6031,3,1226,613,0,6031,6032,5,302,0,0,6032,6033,5,94,0,0,6033,6034,3,1234,617,0,6034,6296,1,0,0,0,6035,6036,5,138,0,0,6036,6037,5,369,0,0,6037,6038,3,1230,615,0,6038,6039,5,302,0,0,6039,6040,5,94,0,0,6040,6041,3,1234,617,0,6041,6296,1,0,0,0,6042,6043,5,138,0,0,6043,6044,5,369,0,0,6044,6045,5,220,0,0,6045,6046,5,389,0,0,6046,6047,3,1230,615,0,6047,6048,5,302,0,0,6048,6049,5,94,0,0,6049,6050,3,1234,617,0,6050,6296,1,0,0,0,6051,6052,5,138,0,0,6052,6053,5,251,0,0,6053,6054,5,369,0,0,6054,6055,3,1230,615,0,6055,6056,5,302,0,0,6056,6057,5,94,0,0,6057,6058,3,1234,617,0,6058,6296,1,0,0,0,6059,6060,5,138,0,0,6060,6061,5,251,0,0,6061,6062,5,369,0,0,6062,6063,5,220,0,0,6063,6064,5,389,0,0,6064,6065,3,1230,615,0,6065,6066,5,302,0,0,6066,6067,5,94,0,0,6067,6068,3,1234,617,0,6068,6296,1,0,0,0,6069,6070,5,138,0,0,6070,6073,5,226,0,0,6071,6072,5,220,0,0,6072,6074,5,389,0,0,6073,6071,1,0,0,0,6073,6074,1,0,0,0,6074,6075,1,0,0,0,6075,6076,3,1218,609,0,6076,6077,5,302,0,0,6077,6078,5,94,0,0,6078,6079,3,1234,617,0,6079,6296,1,0,0,0,6080,6081,5,138,0,0,6081,6082,5,63,0,0,6082,6083,5,92,0,0,6083,6084,3,958,479,0,6084,6085,5,302,0,0,6085,6086,5,94,0,0,6086,6087,3,1234,617,0,6087,6296,1,0,0,0,6088,6089,5,138,0,0,6089,6090,5,63,0,0,6090,6091,5,92,0,0,6091,6092,5,220,0,0,6092,6093,5,389,0,0,6093,6094,3,958,479,0,6094,6095,5,302,0,0,6095,6096,5,94,0,0,6096,6097,3,1234,617,0,6097,6296,1,0,0,0,6098,6099,5,138,0,0,6099,6100,5,92,0,0,6100,6101,3,958,479,0,6101,6102,5,302,0,0,6102,6103,3,648,324,0,6103,6104,3,1234,617,0,6104,6105,5,94,0,0,6105,6106,3,1234,617,0,6106,6296,1,0,0,0,6107,6108,5,138,0,0,6108,6109,5,92,0,0,6109,6110,5,220,0,0,6110,6111,5,389,0,0,6111,6112,3,958,479,0,6112,6113,5,302,0,0,6113,6114,3,648,324,0,6114,6115,3,1234,617,0,6115,6116,5,94,0,0,6116,6117,3,1234,617,0,6117,6296,1,0,0,0,6118,6119,5,138,0,0,6119,6120,5,369,0,0,6120,6121,3,1230,615,0,6121,6122,5,302,0,0,6122,6123,3,648,324,0,6123,6124,3,1234,617,0,6124,6125,5,94,0,0,6125,6126,3,1234,617,0,6126,6296,1,0,0,0,6127,6128,5,138,0,0,6128,6129,5,369,0,0,6129,6130,5,220,0,0,6130,6131,5,389,0,0,6131,6132,3,1230,615,0,6132,6133,5,302,0,0,6133,6134,3,648,324,0,6134,6135,3,1234,617,0,6135,6136,5,94,0,0,6136,6137,3,1234,617,0,6137,6296,1,0,0,0,6138,6139,5,138,0,0,6139,6140,5,251,0,0,6140,6141,5,369,0,0,6141,6142,3,1230,615,0,6142,6143,5,302,0,0,6143,6144,3,648,324,0,6144,6145,3,1234,617,0,6145,6146,5,94,0,0,6146,6147,3,1234,617,0,6147,6296,1,0,0,0,6148,6149,5,138,0,0,6149,6150,5,251,0,0,6150,6151,5,369,0,0,6151,6152,5,220,0,0,6152,6153,5,389,0,0,6153,6154,3,1230,615,0,6154,6155,5,302,0,0,6155,6156,3,648,324,0,6156,6157,3,1234,617,0,6157,6158,5,94,0,0,6158,6159,3,1234,617,0,6159,6296,1,0,0,0,6160,6161,5,138,0,0,6161,6164,5,92,0,0,6162,6163,5,220,0,0,6163,6165,5,389,0,0,6164,6162,1,0,0,0,6164,6165,1,0,0,0,6165,6166,1,0,0,0,6166,6167,3,958,479,0,6167,6168,5,302,0,0,6168,6169,5,45,0,0,6169,6170,3,1224,612,0,6170,6171,5,94,0,0,6171,6172,3,1234,617,0,6172,6296,1,0,0,0,6173,6174,5,138,0,0,6174,6175,5,63,0,0,6175,6176,5,92,0,0,6176,6177,3,958,479,0,6177,6178,5,302,0,0,6178,6179,3,648,324,0,6179,6180,3,1234,617,0,6180,6181,5,94,0,0,6181,6182,3,1234,617,0,6182,6296,1,0,0,0,6183,6184,5,138,0,0,6184,6185,5,63,0,0,6185,6186,5,92,0,0,6186,6187,5,220,0,0,6187,6188,5,389,0,0,6188,6189,3,958,479,0,6189,6190,5,302,0,0,6190,6191,3,648,324,0,6191,6192,3,1234,617,0,6192,6193,5,94,0,0,6193,6194,3,1234,617,0,6194,6296,1,0,0,0,6195,6196,5,138,0,0,6196,6197,5,314,0,0,6197,6198,3,1234,617,0,6198,6199,5,80,0,0,6199,6200,3,1230,615,0,6200,6201,5,302,0,0,6201,6202,5,94,0,0,6202,6203,3,1234,617,0,6203,6296,1,0,0,0,6204,6205,5,138,0,0,6205,6206,5,350,0,0,6206,6207,3,1222,611,0,6207,6208,5,80,0,0,6208,6209,3,1230,615,0,6209,6210,5,302,0,0,6210,6211,5,94,0,0,6211,6212,3,1234,617,0,6212,6296,1,0,0,0,6213,6214,5,138,0,0,6214,6215,5,198,0,0,6215,6216,5,350,0,0,6216,6217,3,1234,617,0,6217,6218,5,302,0,0,6218,6219,5,94,0,0,6219,6220,3,1234,617,0,6220,6296,1,0,0,0,6221,6222,5,138,0,0,6222,6223,3,1506,753,0,6223,6224,3,1260,630,0,6224,6225,5,302,0,0,6225,6226,5,94,0,0,6226,6227,3,1260,630,0,6227,6296,1,0,0,0,6228,6229,5,138,0,0,6229,6230,5,344,0,0,6230,6231,3,1234,617,0,6231,6232,5,302,0,0,6232,6233,5,94,0,0,6233,6234,3,1234,617,0,6234,6296,1,0,0,0,6235,6236,5,138,0,0,6236,6237,5,335,0,0,6237,6238,3,470,235,0,6238,6239,5,302,0,0,6239,6240,5,94,0,0,6240,6241,3,1234,617,0,6241,6296,1,0,0,0,6242,6243,5,138,0,0,6243,6244,5,348,0,0,6244,6245,5,318,0,0,6245,6246,5,276,0,0,6246,6247,3,470,235,0,6247,6248,5,302,0,0,6248,6249,5,94,0,0,6249,6250,3,1234,617,0,6250,6296,1,0,0,0,6251,6252,5,138,0,0,6252,6253,5,348,0,0,6253,6254,5,318,0,0,6254,6255,5,185,0,0,6255,6256,3,470,235,0,6256,6257,5,302,0,0,6257,6258,5,94,0,0,6258,6259,3,1234,617,0,6259,6296,1,0,0,0,6260,6261,5,138,0,0,6261,6262,5,348,0,0,6262,6263,5,318,0,0,6263,6264,5,346,0,0,6264,6265,3,470,235,0,6265,6266,5,302,0,0,6266,6267,5,94,0,0,6267,6268,3,1234,617,0,6268,6296,1,0,0,0,6269,6270,5,138,0,0,6270,6271,5,348,0,0,6271,6272,5,318,0,0,6272,6273,5,163,0,0,6273,6274,3,470,235,0,6274,6275,5,302,0,0,6275,6276,5,94,0,0,6276,6277,3,1234,617,0,6277,6296,1,0,0,0,6278,6279,5,138,0,0,6279,6280,5,353,0,0,6280,6281,3,470,235,0,6281,6282,5,302,0,0,6282,6283,5,94,0,0,6283,6284,3,1234,617,0,6284,6296,1,0,0,0,6285,6286,5,138,0,0,6286,6287,5,353,0,0,6287,6288,3,470,235,0,6288,6289,5,302,0,0,6289,6290,5,143,0,0,6290,6291,3,1234,617,0,6291,6292,5,94,0,0,6292,6293,3,1234,617,0,6293,6294,3,100,50,0,6294,6296,1,0,0,0,6295,5858,1,0,0,0,6295,5865,1,0,0,0,6295,5872,1,0,0,0,6295,5879,1,0,0,0,6295,5886,1,0,0,0,6295,5893,1,0,0,0,6295,5902,1,0,0,0,6295,5911,1,0,0,0,6295,5918,1,0,0,0,6295,5926,1,0,0,0,6295,5936,1,0,0,0,6295,5946,1,0,0,0,6295,5955,1,0,0,0,6295,5966,1,0,0,0,6295,5973,1,0,0,0,6295,5980,1,0,0,0,6295,5987,1,0,0,0,6295,5994,1,0,0,0,6295,6001,1,0,0,0,6295,6008,1,0,0,0,6295,6015,1,0,0,0,6295,6024,1,0,0,0,6295,6035,1,0,0,0,6295,6042,1,0,0,0,6295,6051,1,0,0,0,6295,6059,1,0,0,0,6295,6069,1,0,0,0,6295,6080,1,0,0,0,6295,6088,1,0,0,0,6295,6098,1,0,0,0,6295,6107,1,0,0,0,6295,6118,1,0,0,0,6295,6127,1,0,0,0,6295,6138,1,0,0,0,6295,6148,1,0,0,0,6295,6160,1,0,0,0,6295,6173,1,0,0,0,6295,6183,1,0,0,0,6295,6195,1,0,0,0,6295,6204,1,0,0,0,6295,6213,1,0,0,0,6295,6221,1,0,0,0,6295,6228,1,0,0,0,6295,6235,1,0,0,0,6295,6242,1,0,0,0,6295,6251,1,0,0,0,6295,6260,1,0,0,0,6295,6269,1,0,0,0,6295,6278,1,0,0,0,6295,6285,1,0,0,0,6296,647,1,0,0,0,6297,6300,5,44,0,0,6298,6300,1,0,0,0,6299,6297,1,0,0,0,6299,6298,1,0,0,0,6300,649,1,0,0,0,6301,6302,5,326,0,0,6302,6305,5,174,0,0,6303,6305,1,0,0,0,6304,6301,1,0,0,0,6304,6303,1,0,0,0,6305,651,1,0,0,0,6306,6307,5,138,0,0,6307,6308,5,211,0,0,6308,6310,3,560,280,0,6309,6311,5,262,0,0,6310,6309,1,0,0,0,6310,6311,1,0,0,0,6311,6312,1,0,0,0,6312,6313,5,462,0,0,6313,6314,5,80,0,0,6314,6315,5,204,0,0,6315,6316,3,1234,617,0,6316,6376,1,0,0,0,6317,6318,5,138,0,0,6318,6319,5,289,0,0,6319,6321,3,560,280,0,6320,6322,5,262,0,0,6321,6320,1,0,0,0,6321,6322,1,0,0,0,6322,6323,1,0,0,0,6323,6324,5,462,0,0,6324,6325,5,80,0,0,6325,6326,5,204,0,0,6326,6327,3,1234,617,0,6327,6376,1,0,0,0,6328,6329,5,138,0,0,6329,6330,5,442,0,0,6330,6332,3,560,280,0,6331,6333,5,262,0,0,6332,6331,1,0,0,0,6332,6333,1,0,0,0,6333,6334,1,0,0,0,6334,6335,5,462,0,0,6335,6336,5,80,0,0,6336,6337,5,204,0,0,6337,6338,3,1234,617,0,6338,6376,1,0,0,0,6339,6340,5,138,0,0,6340,6341,5,350,0,0,6341,6342,3,1222,611,0,6342,6343,5,80,0,0,6343,6345,3,1230,615,0,6344,6346,5,262,0,0,6345,6344,1,0,0,0,6345,6346,1,0,0,0,6346,6347,1,0,0,0,6347,6348,5,462,0,0,6348,6349,5,80,0,0,6349,6350,5,204,0,0,6350,6351,3,1234,617,0,6351,6376,1,0,0,0,6352,6353,5,138,0,0,6353,6354,5,251,0,0,6354,6355,5,369,0,0,6355,6357,3,1230,615,0,6356,6358,5,262,0,0,6357,6356,1,0,0,0,6357,6358,1,0,0,0,6358,6359,1,0,0,0,6359,6360,5,462,0,0,6360,6361,5,80,0,0,6361,6362,5,204,0,0,6362,6363,3,1234,617,0,6363,6376,1,0,0,0,6364,6365,5,138,0,0,6365,6366,5,226,0,0,6366,6368,3,1218,609,0,6367,6369,5,262,0,0,6368,6367,1,0,0,0,6368,6369,1,0,0,0,6369,6370,1,0,0,0,6370,6371,5,462,0,0,6371,6372,5,80,0,0,6372,6373,5,204,0,0,6373,6374,3,1234,617,0,6374,6376,1,0,0,0,6375,6306,1,0,0,0,6375,6317,1,0,0,0,6375,6328,1,0,0,0,6375,6339,1,0,0,0,6375,6352,1,0,0,0,6375,6364,1,0,0,0,6376,653,1,0,0,0,6377,6378,5,138,0,0,6378,6379,5,136,0,0,6379,6380,3,580,290,0,6380,6381,5,326,0,0,6381,6382,5,316,0,0,6382,6383,3,1214,607,0,6383,6590,1,0,0,0,6384,6385,5,138,0,0,6385,6386,5,108,0,0,6386,6387,3,470,235,0,6387,6388,5,326,0,0,6388,6389,5,316,0,0,6389,6390,3,1214,607,0,6390,6590,1,0,0,0,6391,6392,5,138,0,0,6392,6393,5,168,0,0,6393,6394,3,470,235,0,6394,6395,5,326,0,0,6395,6396,5,316,0,0,6396,6397,3,1214,607,0,6397,6590,1,0,0,0,6398,6399,5,138,0,0,6399,6400,5,189,0,0,6400,6401,3,470,235,0,6401,6402,5,326,0,0,6402,6403,5,316,0,0,6403,6404,3,1214,607,0,6404,6590,1,0,0,0,6405,6406,5,138,0,0,6406,6407,5,204,0,0,6407,6408,3,1234,617,0,6408,6409,5,326,0,0,6409,6410,5,316,0,0,6410,6411,3,1214,607,0,6411,6590,1,0,0,0,6412,6413,5,138,0,0,6413,6414,5,211,0,0,6414,6415,3,560,280,0,6415,6416,5,326,0,0,6416,6417,5,316,0,0,6417,6418,3,1214,607,0,6418,6590,1,0,0,0,6419,6420,5,138,0,0,6420,6421,5,271,0,0,6421,6422,3,614,307,0,6422,6423,5,326,0,0,6423,6424,5,316,0,0,6424,6425,3,1214,607,0,6425,6590,1,0,0,0,6426,6427,5,138,0,0,6427,6428,5,271,0,0,6428,6429,5,156,0,0,6429,6430,3,470,235,0,6430,6431,5,100,0,0,6431,6432,3,1234,617,0,6432,6433,5,326,0,0,6433,6434,5,316,0,0,6434,6435,3,1214,607,0,6435,6590,1,0,0,0,6436,6437,5,138,0,0,6437,6438,5,271,0,0,6438,6439,5,206,0,0,6439,6440,3,470,235,0,6440,6441,5,100,0,0,6441,6442,3,1234,617,0,6442,6443,5,326,0,0,6443,6444,5,316,0,0,6444,6445,3,1214,607,0,6445,6590,1,0,0,0,6446,6447,5,138,0,0,6447,6448,5,289,0,0,6448,6449,3,560,280,0,6449,6450,5,326,0,0,6450,6451,5,316,0,0,6451,6452,3,1214,607,0,6452,6590,1,0,0,0,6453,6454,5,138,0,0,6454,6455,5,442,0,0,6455,6456,3,560,280,0,6456,6457,5,326,0,0,6457,6458,5,316,0,0,6458,6459,3,1214,607,0,6459,6590,1,0,0,0,6460,6461,5,138,0,0,6461,6462,5,92,0,0,6462,6463,3,958,479,0,6463,6464,5,326,0,0,6464,6465,5,316,0,0,6465,6466,3,1214,607,0,6466,6590,1,0,0,0,6467,6468,5,138,0,0,6468,6469,5,92,0,0,6469,6470,5,220,0,0,6470,6471,5,389,0,0,6471,6472,3,958,479,0,6472,6473,5,326,0,0,6473,6474,5,316,0,0,6474,6475,3,1214,607,0,6475,6590,1,0,0,0,6476,6477,5,138,0,0,6477,6478,5,335,0,0,6478,6479,3,470,235,0,6479,6480,5,326,0,0,6480,6481,5,316,0,0,6481,6482,3,1214,607,0,6482,6590,1,0,0,0,6483,6484,5,138,0,0,6484,6485,5,348,0,0,6485,6486,5,318,0,0,6486,6487,5,276,0,0,6487,6488,3,470,235,0,6488,6489,5,326,0,0,6489,6490,5,316,0,0,6490,6491,3,1214,607,0,6491,6590,1,0,0,0,6492,6493,5,138,0,0,6493,6494,5,348,0,0,6494,6495,5,318,0,0,6495,6496,5,185,0,0,6496,6497,3,470,235,0,6497,6498,5,326,0,0,6498,6499,5,316,0,0,6499,6500,3,1214,607,0,6500,6590,1,0,0,0,6501,6502,5,138,0,0,6502,6503,5,348,0,0,6503,6504,5,318,0,0,6504,6505,5,346,0,0,6505,6506,3,470,235,0,6506,6507,5,326,0,0,6507,6508,5,316,0,0,6508,6509,3,1214,607,0,6509,6590,1,0,0,0,6510,6511,5,138,0,0,6511,6512,5,348,0,0,6512,6513,5,318,0,0,6513,6514,5,163,0,0,6514,6515,3,470,235,0,6515,6516,5,326,0,0,6516,6517,5,316,0,0,6517,6518,3,1214,607,0,6518,6590,1,0,0,0,6519,6520,5,138,0,0,6520,6523,5,321,0,0,6521,6522,5,220,0,0,6522,6524,5,389,0,0,6523,6521,1,0,0,0,6523,6524,1,0,0,0,6524,6525,1,0,0,0,6525,6526,3,1226,613,0,6526,6527,5,326,0,0,6527,6528,5,316,0,0,6528,6529,3,1214,607,0,6529,6590,1,0,0,0,6530,6531,5,138,0,0,6531,6532,5,369,0,0,6532,6533,3,1230,615,0,6533,6534,5,326,0,0,6534,6535,5,316,0,0,6535,6536,3,1214,607,0,6536,6590,1,0,0,0,6537,6538,5,138,0,0,6538,6539,5,369,0,0,6539,6540,5,220,0,0,6540,6541,5,389,0,0,6541,6542,3,1230,615,0,6542,6543,5,326,0,0,6543,6544,5,316,0,0,6544,6545,3,1214,607,0,6545,6590,1,0,0,0,6546,6547,5,138,0,0,6547,6548,5,251,0,0,6548,6549,5,369,0,0,6549,6550,3,1230,615,0,6550,6551,5,326,0,0,6551,6552,5,316,0,0,6552,6553,3,1214,607,0,6553,6590,1,0,0,0,6554,6555,5,138,0,0,6555,6556,5,251,0,0,6556,6557,5,369,0,0,6557,6558,5,220,0,0,6558,6559,5,389,0,0,6559,6560,3,1230,615,0,6560,6561,5,326,0,0,6561,6562,5,316,0,0,6562,6563,3,1214,607,0,6563,6590,1,0,0,0,6564,6565,5,138,0,0,6565,6566,5,63,0,0,6566,6567,5,92,0,0,6567,6568,3,958,479,0,6568,6569,5,326,0,0,6569,6570,5,316,0,0,6570,6571,3,1214,607,0,6571,6590,1,0,0,0,6572,6573,5,138,0,0,6573,6574,5,63,0,0,6574,6575,5,92,0,0,6575,6576,5,220,0,0,6576,6577,5,389,0,0,6577,6578,3,958,479,0,6578,6579,5,326,0,0,6579,6580,5,316,0,0,6580,6581,3,1214,607,0,6581,6590,1,0,0,0,6582,6583,5,138,0,0,6583,6584,5,353,0,0,6584,6585,3,470,235,0,6585,6586,5,326,0,0,6586,6587,5,316,0,0,6587,6588,3,1214,607,0,6588,6590,1,0,0,0,6589,6377,1,0,0,0,6589,6384,1,0,0,0,6589,6391,1,0,0,0,6589,6398,1,0,0,0,6589,6405,1,0,0,0,6589,6412,1,0,0,0,6589,6419,1,0,0,0,6589,6426,1,0,0,0,6589,6436,1,0,0,0,6589,6446,1,0,0,0,6589,6453,1,0,0,0,6589,6460,1,0,0,0,6589,6467,1,0,0,0,6589,6476,1,0,0,0,6589,6483,1,0,0,0,6589,6492,1,0,0,0,6589,6501,1,0,0,0,6589,6510,1,0,0,0,6589,6519,1,0,0,0,6589,6530,1,0,0,0,6589,6537,1,0,0,0,6589,6546,1,0,0,0,6589,6554,1,0,0,0,6589,6564,1,0,0,0,6589,6572,1,0,0,0,6589,6582,1,0,0,0,6590,655,1,0,0,0,6591,6592,5,138,0,0,6592,6593,5,271,0,0,6593,6594,3,614,307,0,6594,6595,5,326,0,0,6595,6596,5,2,0,0,6596,6597,3,658,329,0,6597,6598,5,3,0,0,6598,657,1,0,0,0,6599,6604,3,660,330,0,6600,6601,5,6,0,0,6601,6603,3,660,330,0,6602,6600,1,0,0,0,6603,6606,1,0,0,0,6604,6602,1,0,0,0,6604,6605,1,0,0,0,6605,659,1,0,0,0,6606,6604,1,0,0,0,6607,6608,3,1272,636,0,6608,6609,5,10,0,0,6609,6610,5,400,0,0,6610,6616,1,0,0,0,6611,6612,3,1272,636,0,6612,6613,5,10,0,0,6613,6614,3,662,331,0,6614,6616,1,0,0,0,6615,6607,1,0,0,0,6615,6611,1,0,0,0,6616,661,1,0,0,0,6617,6623,3,574,287,0,6618,6623,3,1284,642,0,6619,6623,3,1152,576,0,6620,6623,3,264,132,0,6621,6623,3,1252,626,0,6622,6617,1,0,0,0,6622,6618,1,0,0,0,6622,6619,1,0,0,0,6622,6620,1,0,0,0,6622,6621,1,0,0,0,6623,663,1,0,0,0,6624,6625,5,138,0,0,6625,6626,5,353,0,0,6626,6627,3,470,235,0,6627,6628,5,326,0,0,6628,6629,5,2,0,0,6629,6630,3,658,329,0,6630,6631,5,3,0,0,6631,665,1,0,0,0,6632,6633,5,138,0,0,6633,6634,5,136,0,0,6634,6635,3,580,290,0,6635,6636,5,275,0,0,6636,6637,5,94,0,0,6637,6638,3,1260,630,0,6638,6816,1,0,0,0,6639,6640,5,138,0,0,6640,6641,5,108,0,0,6641,6642,3,470,235,0,6642,6643,5,275,0,0,6643,6644,5,94,0,0,6644,6645,3,1260,630,0,6645,6816,1,0,0,0,6646,6647,5,138,0,0,6647,6648,5,168,0,0,6648,6649,3,470,235,0,6649,6650,5,275,0,0,6650,6651,5,94,0,0,6651,6652,3,1260,630,0,6652,6816,1,0,0,0,6653,6654,5,138,0,0,6654,6655,5,175,0,0,6655,6656,3,1210,605,0,6656,6657,5,275,0,0,6657,6658,5,94,0,0,6658,6659,3,1260,630,0,6659,6816,1,0,0,0,6660,6661,5,138,0,0,6661,6662,5,189,0,0,6662,6663,3,470,235,0,6663,6664,5,275,0,0,6664,6665,5,94,0,0,6665,6666,3,1260,630,0,6666,6816,1,0,0,0,6667,6668,5,138,0,0,6668,6669,5,211,0,0,6669,6670,3,560,280,0,6670,6671,5,275,0,0,6671,6672,5,94,0,0,6672,6673,3,1260,630,0,6673,6816,1,0,0,0,6674,6675,5,138,0,0,6675,6676,3,276,138,0,6676,6677,5,238,0,0,6677,6678,3,1234,617,0,6678,6679,5,275,0,0,6679,6680,5,94,0,0,6680,6681,3,1260,630,0,6681,6816,1,0,0,0,6682,6683,5,138,0,0,6683,6684,5,239,0,0,6684,6685,5,267,0,0,6685,6686,3,264,132,0,6686,6687,5,275,0,0,6687,6688,5,94,0,0,6688,6689,3,1260,630,0,6689,6816,1,0,0,0,6690,6691,5,138,0,0,6691,6692,5,271,0,0,6692,6693,3,614,307,0,6693,6694,5,275,0,0,6694,6695,5,94,0,0,6695,6696,3,1260,630,0,6696,6816,1,0,0,0,6697,6698,5,138,0,0,6698,6699,5,271,0,0,6699,6700,5,156,0,0,6700,6701,3,470,235,0,6701,6702,5,100,0,0,6702,6703,3,1234,617,0,6703,6704,5,275,0,0,6704,6705,5,94,0,0,6705,6706,3,1260,630,0,6706,6816,1,0,0,0,6707,6708,5,138,0,0,6708,6709,5,271,0,0,6709,6710,5,206,0,0,6710,6711,3,470,235,0,6711,6712,5,100,0,0,6712,6713,3,1234,617,0,6713,6714,5,275,0,0,6714,6715,5,94,0,0,6715,6716,3,1260,630,0,6716,6816,1,0,0,0,6717,6718,5,138,0,0,6718,6719,5,289,0,0,6719,6720,3,560,280,0,6720,6721,5,275,0,0,6721,6722,5,94,0,0,6722,6723,3,1260,630,0,6723,6816,1,0,0,0,6724,6725,5,138,0,0,6725,6726,5,442,0,0,6726,6727,3,560,280,0,6727,6728,5,275,0,0,6728,6729,5,94,0,0,6729,6730,3,1260,630,0,6730,6816,1,0,0,0,6731,6732,5,138,0,0,6732,6733,5,316,0,0,6733,6734,3,1214,607,0,6734,6735,5,275,0,0,6735,6736,5,94,0,0,6736,6737,3,1260,630,0,6737,6816,1,0,0,0,6738,6739,5,138,0,0,6739,6740,5,353,0,0,6740,6741,3,470,235,0,6741,6742,5,275,0,0,6742,6743,5,94,0,0,6743,6744,3,1260,630,0,6744,6816,1,0,0,0,6745,6746,5,138,0,0,6746,6747,5,344,0,0,6747,6748,3,1234,617,0,6748,6749,5,275,0,0,6749,6750,5,94,0,0,6750,6751,3,1260,630,0,6751,6816,1,0,0,0,6752,6753,5,138,0,0,6753,6754,5,335,0,0,6754,6755,3,470,235,0,6755,6756,5,275,0,0,6756,6757,5,94,0,0,6757,6758,3,1260,630,0,6758,6816,1,0,0,0,6759,6760,5,138,0,0,6760,6761,5,348,0,0,6761,6762,5,318,0,0,6762,6763,5,185,0,0,6763,6764,3,470,235,0,6764,6765,5,275,0,0,6765,6766,5,94,0,0,6766,6767,3,1260,630,0,6767,6816,1,0,0,0,6768,6769,5,138,0,0,6769,6770,5,348,0,0,6770,6771,5,318,0,0,6771,6772,5,163,0,0,6772,6773,3,470,235,0,6773,6774,5,275,0,0,6774,6775,5,94,0,0,6775,6776,3,1260,630,0,6776,6816,1,0,0,0,6777,6778,5,138,0,0,6778,6779,5,63,0,0,6779,6780,5,174,0,0,6780,6781,5,374,0,0,6781,6782,3,1234,617,0,6782,6783,5,275,0,0,6783,6784,5,94,0,0,6784,6785,3,1260,630,0,6785,6816,1,0,0,0,6786,6787,5,138,0,0,6787,6788,5,324,0,0,6788,6789,3,1234,617,0,6789,6790,5,275,0,0,6790,6791,5,94,0,0,6791,6792,3,1260,630,0,6792,6816,1,0,0,0,6793,6794,5,138,0,0,6794,6795,5,198,0,0,6795,6796,5,350,0,0,6796,6797,3,1234,617,0,6797,6798,5,275,0,0,6798,6799,5,94,0,0,6799,6800,3,1260,630,0,6800,6816,1,0,0,0,6801,6802,5,138,0,0,6802,6803,5,452,0,0,6803,6804,3,1234,617,0,6804,6805,5,275,0,0,6805,6806,5,94,0,0,6806,6807,3,1260,630,0,6807,6816,1,0,0,0,6808,6809,5,138,0,0,6809,6810,5,451,0,0,6810,6811,3,1234,617,0,6811,6812,5,275,0,0,6812,6813,5,94,0,0,6813,6814,3,1260,630,0,6814,6816,1,0,0,0,6815,6632,1,0,0,0,6815,6639,1,0,0,0,6815,6646,1,0,0,0,6815,6653,1,0,0,0,6815,6660,1,0,0,0,6815,6667,1,0,0,0,6815,6674,1,0,0,0,6815,6682,1,0,0,0,6815,6690,1,0,0,0,6815,6697,1,0,0,0,6815,6707,1,0,0,0,6815,6717,1,0,0,0,6815,6724,1,0,0,0,6815,6731,1,0,0,0,6815,6738,1,0,0,0,6815,6745,1,0,0,0,6815,6752,1,0,0,0,6815,6759,1,0,0,0,6815,6768,1,0,0,0,6815,6777,1,0,0,0,6815,6786,1,0,0,0,6815,6793,1,0,0,0,6815,6801,1,0,0,0,6815,6808,1,0,0,0,6816,667,1,0,0,0,6817,6818,5,46,0,0,6818,6819,5,452,0,0,6819,6820,3,1234,617,0,6820,6821,3,670,335,0,6821,6822,3,594,297,0,6822,669,1,0,0,0,6823,6826,3,672,336,0,6824,6826,1,0,0,0,6825,6823,1,0,0,0,6825,6824,1,0,0,0,6826,671,1,0,0,0,6827,6828,5,62,0,0,6828,6829,5,92,0,0,6829,6834,3,960,480,0,6830,6831,5,62,0,0,6831,6832,5,30,0,0,6832,6834,5,343,0,0,6833,6827,1,0,0,0,6833,6830,1,0,0,0,6834,673,1,0,0,0,6835,6836,5,138,0,0,6836,6837,5,452,0,0,6837,6838,3,1234,617,0,6838,6839,5,326,0,0,6839,6840,3,416,208,0,6840,6863,1,0,0,0,6841,6842,5,138,0,0,6842,6843,5,452,0,0,6843,6844,3,1234,617,0,6844,6845,5,133,0,0,6845,6846,5,92,0,0,6846,6847,3,960,480,0,6847,6863,1,0,0,0,6848,6849,5,138,0,0,6849,6850,5,452,0,0,6850,6851,3,1234,617,0,6851,6852,5,326,0,0,6852,6853,5,92,0,0,6853,6854,3,960,480,0,6854,6863,1,0,0,0,6855,6856,5,138,0,0,6856,6857,5,452,0,0,6857,6858,3,1234,617,0,6858,6859,5,191,0,0,6859,6860,5,92,0,0,6860,6861,3,960,480,0,6861,6863,1,0,0,0,6862,6835,1,0,0,0,6862,6841,1,0,0,0,6862,6848,1,0,0,0,6862,6855,1,0,0,0,6863,675,1,0,0,0,6864,6865,5,46,0,0,6865,6866,5,451,0,0,6866,6867,3,1234,617,0,6867,6868,5,164,0,0,6868,6869,3,1252,626,0,6869,6870,5,452,0,0,6870,6871,3,678,339,0,6871,6872,3,594,297,0,6872,677,1,0,0,0,6873,6878,3,680,340,0,6874,6875,5,6,0,0,6875,6877,3,680,340,0,6876,6874,1,0,0,0,6877,6880,1,0,0,0,6878,6876,1,0,0,0,6878,6879,1,0,0,0,6879,679,1,0,0,0,6880,6878,1,0,0,0,6881,6882,3,1272,636,0,6882,681,1,0,0,0,6883,6884,5,138,0,0,6884,6885,5,451,0,0,6885,6886,3,1234,617,0,6886,6887,5,326,0,0,6887,6888,3,416,208,0,6888,6921,1,0,0,0,6889,6890,5,138,0,0,6890,6891,5,451,0,0,6891,6892,3,1234,617,0,6892,6893,5,164,0,0,6893,6894,3,1252,626,0,6894,6921,1,0,0,0,6895,6896,5,138,0,0,6896,6897,5,451,0,0,6897,6898,3,1234,617,0,6898,6899,5,298,0,0,6899,6900,5,452,0,0,6900,6901,3,594,297,0,6901,6921,1,0,0,0,6902,6903,5,138,0,0,6903,6904,5,451,0,0,6904,6905,3,1234,617,0,6905,6906,5,326,0,0,6906,6907,5,452,0,0,6907,6908,3,678,339,0,6908,6909,3,594,297,0,6909,6921,1,0,0,0,6910,6911,5,138,0,0,6911,6912,5,451,0,0,6912,6913,3,1234,617,0,6913,6914,5,193,0,0,6914,6921,1,0,0,0,6915,6916,5,138,0,0,6916,6917,5,451,0,0,6917,6918,3,1234,617,0,6918,6919,5,186,0,0,6919,6921,1,0,0,0,6920,6883,1,0,0,0,6920,6889,1,0,0,0,6920,6895,1,0,0,0,6920,6902,1,0,0,0,6920,6910,1,0,0,0,6920,6915,1,0,0,0,6921,683,1,0,0,0,6922,6923,5,191,0,0,6923,6924,5,451,0,0,6924,6925,3,1234,617,0,6925,6926,3,100,50,0,6926,6935,1,0,0,0,6927,6928,5,191,0,0,6928,6929,5,451,0,0,6929,6930,5,220,0,0,6930,6931,5,389,0,0,6931,6932,3,1234,617,0,6932,6933,3,100,50,0,6933,6935,1,0,0,0,6934,6922,1,0,0,0,6934,6927,1,0,0,0,6935,685,1,0,0,0,6936,6937,5,46,0,0,6937,6938,3,554,277,0,6938,6939,5,314,0,0,6939,6940,3,1234,617,0,6940,6941,5,36,0,0,6941,6942,5,80,0,0,6942,6943,3,696,348,0,6943,6944,5,94,0,0,6944,6945,3,1230,615,0,6945,6946,3,974,487,0,6946,6947,5,57,0,0,6947,6948,3,698,349,0,6948,6949,3,688,344,0,6949,687,1,0,0,0,6950,6957,5,263,0,0,6951,6957,3,692,346,0,6952,6953,5,2,0,0,6953,6954,3,690,345,0,6954,6955,5,3,0,0,6955,6957,1,0,0,0,6956,6950,1,0,0,0,6956,6951,1,0,0,0,6956,6952,1,0,0,0,6957,689,1,0,0,0,6958,6963,3,694,347,0,6959,6960,5,7,0,0,6960,6962,3,694,347,0,6961,6959,1,0,0,0,6962,6965,1,0,0,0,6963,6961,1,0,0,0,6963,6964,1,0,0,0,6964,691,1,0,0,0,6965,6963,1,0,0,0,6966,6972,3,858,429,0,6967,6972,3,804,402,0,6968,6972,3,844,422,0,6969,6972,3,830,415,0,6970,6972,3,700,350,0,6971,6966,1,0,0,0,6971,6967,1,0,0,0,6971,6968,1,0,0,0,6971,6969,1,0,0,0,6971,6970,1,0,0,0,6972,693,1,0,0,0,6973,6976,3,692,346,0,6974,6976,1,0,0,0,6975,6973,1,0,0,0,6975,6974,1,0,0,0,6976,695,1,0,0,0,6977,6978,7,30,0,0,6978,697,1,0,0,0,6979,6983,5,233,0,0,6980,6983,5,137,0,0,6981,6983,1,0,0,0,6982,6979,1,0,0,0,6982,6980,1,0,0,0,6982,6981,1,0,0,0,6983,699,1,0,0,0,6984,6985,5,264,0,0,6985,6986,3,1264,632,0,6986,6987,3,702,351,0,6987,701,1,0,0,0,6988,6989,5,6,0,0,6989,6992,3,1252,626,0,6990,6992,1,0,0,0,6991,6988,1,0,0,0,6991,6990,1,0,0,0,6992,703,1,0,0,0,6993,6994,5,243,0,0,6994,6995,3,1264,632,0,6995,705,1,0,0,0,6996,6997,5,359,0,0,6997,7001,3,1264,632,0,6998,6999,5,359,0,0,6999,7001,5,9,0,0,7e3,6996,1,0,0,0,7e3,6998,1,0,0,0,7001,707,1,0,0,0,7002,7003,5,129,0,0,7003,7004,3,710,355,0,7004,7005,3,716,358,0,7005,7056,1,0,0,0,7006,7007,5,146,0,0,7007,7009,3,710,355,0,7008,7010,3,714,357,0,7009,7008,1,0,0,0,7009,7010,1,0,0,0,7010,7056,1,0,0,0,7011,7012,5,333,0,0,7012,7014,5,349,0,0,7013,7015,3,714,357,0,7014,7013,1,0,0,0,7014,7015,1,0,0,0,7015,7056,1,0,0,0,7016,7017,5,161,0,0,7017,7018,3,710,355,0,7018,7019,3,716,358,0,7019,7056,1,0,0,0,7020,7021,5,454,0,0,7021,7022,3,710,355,0,7022,7023,3,716,358,0,7023,7056,1,0,0,0,7024,7025,5,312,0,0,7025,7026,3,710,355,0,7026,7027,3,716,358,0,7027,7056,1,0,0,0,7028,7029,5,315,0,0,7029,7056,3,1264,632,0,7030,7031,5,301,0,0,7031,7032,5,315,0,0,7032,7056,3,1264,632,0,7033,7034,5,301,0,0,7034,7056,3,1264,632,0,7035,7036,5,312,0,0,7036,7037,3,710,355,0,7037,7038,5,94,0,0,7038,7039,5,315,0,0,7039,7040,3,1264,632,0,7040,7056,1,0,0,0,7041,7042,5,312,0,0,7042,7043,3,710,355,0,7043,7044,5,94,0,0,7044,7045,3,1264,632,0,7045,7056,1,0,0,0,7046,7047,5,283,0,0,7047,7048,5,349,0,0,7048,7056,3,1252,626,0,7049,7050,5,161,0,0,7050,7051,5,284,0,0,7051,7056,3,1252,626,0,7052,7053,5,312,0,0,7053,7054,5,284,0,0,7054,7056,3,1252,626,0,7055,7002,1,0,0,0,7055,7006,1,0,0,0,7055,7011,1,0,0,0,7055,7016,1,0,0,0,7055,7020,1,0,0,0,7055,7024,1,0,0,0,7055,7028,1,0,0,0,7055,7030,1,0,0,0,7055,7033,1,0,0,0,7055,7035,1,0,0,0,7055,7041,1,0,0,0,7055,7046,1,0,0,0,7055,7049,1,0,0,0,7055,7052,1,0,0,0,7056,709,1,0,0,0,7057,7061,5,373,0,0,7058,7061,5,349,0,0,7059,7061,1,0,0,0,7060,7057,1,0,0,0,7060,7058,1,0,0,0,7060,7059,1,0,0,0,7061,711,1,0,0,0,7062,7063,5,235,0,0,7063,7064,5,242,0,0,7064,7073,3,56,28,0,7065,7066,5,293,0,0,7066,7073,5,81,0,0,7067,7068,5,293,0,0,7068,7073,5,375,0,0,7069,7073,5,54,0,0,7070,7071,5,77,0,0,7071,7073,5,54,0,0,7072,7062,1,0,0,0,7072,7065,1,0,0,0,7072,7067,1,0,0,0,7072,7069,1,0,0,0,7072,7070,1,0,0,0,7073,713,1,0,0,0,7074,7081,3,712,356,0,7075,7077,5,6,0,0,7076,7075,1,0,0,0,7076,7077,1,0,0,0,7077,7078,1,0,0,0,7078,7080,3,712,356,0,7079,7076,1,0,0,0,7080,7083,1,0,0,0,7081,7079,1,0,0,0,7081,7082,1,0,0,0,7082,715,1,0,0,0,7083,7081,1,0,0,0,7084,7086,5,33,0,0,7085,7087,5,262,0,0,7086,7085,1,0,0,0,7086,7087,1,0,0,0,7087,7088,1,0,0,0,7088,7091,5,153,0,0,7089,7091,1,0,0,0,7090,7084,1,0,0,0,7090,7089,1,0,0,0,7091,717,1,0,0,0,7092,7095,5,46,0,0,7093,7094,5,82,0,0,7094,7096,5,304,0,0,7095,7093,1,0,0,0,7095,7096,1,0,0,0,7096,7097,1,0,0,0,7097,7111,3,154,77,0,7098,7099,5,369,0,0,7099,7100,3,1230,615,0,7100,7101,3,192,96,0,7101,7102,3,110,55,0,7102,7112,1,0,0,0,7103,7104,5,296,0,0,7104,7105,5,369,0,0,7105,7106,3,1230,615,0,7106,7107,5,2,0,0,7107,7108,3,194,97,0,7108,7109,5,3,0,0,7109,7110,3,110,55,0,7110,7112,1,0,0,0,7111,7098,1,0,0,0,7111,7103,1,0,0,0,7112,7113,1,0,0,0,7113,7114,5,36,0,0,7114,7115,3,858,429,0,7115,7116,3,720,360,0,7116,719,1,0,0,0,7117,7119,5,105,0,0,7118,7120,7,31,0,0,7119,7118,1,0,0,0,7119,7120,1,0,0,0,7120,7121,1,0,0,0,7121,7122,5,42,0,0,7122,7125,5,272,0,0,7123,7125,1,0,0,0,7124,7117,1,0,0,0,7124,7123,1,0,0,0,7125,721,1,0,0,0,7126,7127,5,244,0,0,7127,7128,3,1238,619,0,7128,723,1,0,0,0,7129,7130,5,46,0,0,7130,7131,5,175,0,0,7131,7132,3,1234,617,0,7132,7133,3,12,6,0,7133,7134,3,726,363,0,7134,725,1,0,0,0,7135,7137,3,728,364,0,7136,7135,1,0,0,0,7137,7138,1,0,0,0,7138,7136,1,0,0,0,7138,7139,1,0,0,0,7139,7142,1,0,0,0,7140,7142,1,0,0,0,7141,7136,1,0,0,0,7141,7140,1,0,0,0,7142,727,1,0,0,0,7143,7145,3,730,365,0,7144,7146,5,10,0,0,7145,7144,1,0,0,0,7145,7146,1,0,0,0,7146,7150,1,0,0,0,7147,7151,3,1258,629,0,7148,7151,3,58,29,0,7149,7151,5,53,0,0,7150,7147,1,0,0,0,7150,7148,1,0,0,0,7150,7149,1,0,0,0,7151,729,1,0,0,0,7152,7161,3,1274,637,0,7153,7154,5,164,0,0,7154,7161,5,74,0,0,7155,7161,5,194,0,0,7156,7161,5,246,0,0,7157,7161,5,275,0,0,7158,7161,5,344,0,0,7159,7161,5,346,0,0,7160,7152,1,0,0,0,7160,7153,1,0,0,0,7160,7155,1,0,0,0,7160,7156,1,0,0,0,7160,7157,1,0,0,0,7160,7158,1,0,0,0,7160,7159,1,0,0,0,7161,731,1,0,0,0,7162,7163,5,138,0,0,7163,7164,5,175,0,0,7164,7171,3,1210,605,0,7165,7166,5,105,0,0,7166,7172,3,726,363,0,7167,7172,3,726,363,0,7168,7169,5,326,0,0,7169,7170,5,344,0,0,7170,7172,3,1234,617,0,7171,7165,1,0,0,0,7171,7167,1,0,0,0,7171,7168,1,0,0,0,7172,733,1,0,0,0,7173,7174,5,138,0,0,7174,7175,5,175,0,0,7175,7176,3,1210,605,0,7176,7177,3,72,36,0,7177,735,1,0,0,0,7178,7179,5,191,0,0,7179,7182,5,175,0,0,7180,7181,5,220,0,0,7181,7183,5,389,0,0,7182,7180,1,0,0,0,7182,7183,1,0,0,0,7183,7184,1,0,0,0,7184,7197,3,1210,605,0,7185,7186,3,12,6,0,7186,7187,5,2,0,0,7187,7192,5,209,0,0,7188,7189,5,6,0,0,7189,7191,5,209,0,0,7190,7188,1,0,0,0,7191,7194,1,0,0,0,7192,7190,1,0,0,0,7192,7193,1,0,0,0,7193,7195,1,0,0,0,7194,7192,1,0,0,0,7195,7196,5,3,0,0,7196,7198,1,0,0,0,7197,7185,1,0,0,0,7197,7198,1,0,0,0,7198,737,1,0,0,0,7199,7200,5,138,0,0,7200,7201,5,108,0,0,7201,7202,3,470,235,0,7202,7203,5,298,0,0,7203,7204,5,368,0,0,7204,739,1,0,0,0,7205,7206,5,138,0,0,7206,7207,5,342,0,0,7207,7208,7,32,0,0,7208,7209,3,46,23,0,7209,741,1,0,0,0,7210,7211,5,46,0,0,7211,7212,5,189,0,0,7212,7213,3,470,235,0,7213,7214,3,748,374,0,7214,7215,3,996,498,0,7215,7216,3,172,86,0,7216,743,1,0,0,0,7217,7218,5,138,0,0,7218,7219,5,189,0,0,7219,7220,3,470,235,0,7220,7221,3,746,373,0,7221,745,1,0,0,0,7222,7244,3,98,49,0,7223,7224,5,191,0,0,7224,7225,5,77,0,0,7225,7244,5,78,0,0,7226,7227,5,326,0,0,7227,7228,5,77,0,0,7228,7244,5,78,0,0,7229,7230,5,133,0,0,7230,7244,3,188,94,0,7231,7232,5,191,0,0,7232,7235,5,45,0,0,7233,7234,5,220,0,0,7234,7236,5,389,0,0,7235,7233,1,0,0,0,7235,7236,1,0,0,0,7236,7237,1,0,0,0,7237,7238,3,1224,612,0,7238,7239,3,100,50,0,7239,7244,1,0,0,0,7240,7241,5,365,0,0,7241,7242,5,45,0,0,7242,7244,3,1224,612,0,7243,7222,1,0,0,0,7243,7223,1,0,0,0,7243,7226,1,0,0,0,7243,7229,1,0,0,0,7243,7231,1,0,0,0,7243,7240,1,0,0,0,7244,747,1,0,0,0,7245,7248,5,36,0,0,7246,7248,1,0,0,0,7247,7245,1,0,0,0,7247,7246,1,0,0,0,7248,749,1,0,0,0,7249,7250,5,138,0,0,7250,7251,5,348,0,0,7251,7252,5,318,0,0,7252,7253,5,185,0,0,7253,7254,3,470,235,0,7254,7255,3,416,208,0,7255,751,1,0,0,0,7256,7257,5,138,0,0,7257,7258,5,348,0,0,7258,7259,5,318,0,0,7259,7260,5,163,0,0,7260,7261,3,470,235,0,7261,7262,5,133,0,0,7262,7263,5,248,0,0,7263,7264,5,62,0,0,7264,7265,3,1232,616,0,7265,7266,5,105,0,0,7266,7267,3,468,234,0,7267,7329,1,0,0,0,7268,7269,5,138,0,0,7269,7270,5,348,0,0,7270,7271,5,318,0,0,7271,7272,5,163,0,0,7272,7273,3,470,235,0,7273,7274,5,138,0,0,7274,7275,5,248,0,0,7275,7276,5,62,0,0,7276,7277,3,1232,616,0,7277,7278,5,105,0,0,7278,7279,3,468,234,0,7279,7329,1,0,0,0,7280,7281,5,138,0,0,7281,7282,5,348,0,0,7282,7283,5,318,0,0,7283,7284,5,163,0,0,7284,7285,3,470,235,0,7285,7286,5,138,0,0,7286,7287,5,248,0,0,7287,7288,5,304,0,0,7288,7289,3,470,235,0,7289,7290,5,105,0,0,7290,7291,3,470,235,0,7291,7329,1,0,0,0,7292,7293,5,138,0,0,7293,7294,5,348,0,0,7294,7295,5,318,0,0,7295,7296,5,163,0,0,7296,7297,3,470,235,0,7297,7298,5,138,0,0,7298,7299,5,248,0,0,7299,7300,5,62,0,0,7300,7301,3,1232,616,0,7301,7302,5,304,0,0,7302,7303,3,470,235,0,7303,7304,5,105,0,0,7304,7305,3,470,235,0,7305,7329,1,0,0,0,7306,7307,5,138,0,0,7307,7308,5,348,0,0,7308,7309,5,318,0,0,7309,7310,5,163,0,0,7310,7311,3,470,235,0,7311,7312,5,191,0,0,7312,7313,5,248,0,0,7313,7314,5,62,0,0,7314,7315,3,1232,616,0,7315,7329,1,0,0,0,7316,7317,5,138,0,0,7317,7318,5,348,0,0,7318,7319,5,318,0,0,7319,7320,5,163,0,0,7320,7321,3,470,235,0,7321,7322,5,191,0,0,7322,7323,5,248,0,0,7323,7324,5,220,0,0,7324,7325,5,389,0,0,7325,7326,5,62,0,0,7326,7327,3,1232,616,0,7327,7329,1,0,0,0,7328,7256,1,0,0,0,7328,7268,1,0,0,0,7328,7280,1,0,0,0,7328,7292,1,0,0,0,7328,7306,1,0,0,0,7328,7316,1,0,0,0,7329,753,1,0,0,0,7330,7332,5,46,0,0,7331,7333,5,53,0,0,7332,7331,1,0,0,0,7332,7333,1,0,0,0,7333,7334,1,0,0,0,7334,7335,5,168,0,0,7335,7336,3,470,235,0,7336,7337,5,62,0,0,7337,7338,3,1252,626,0,7338,7339,5,94,0,0,7339,7340,3,1252,626,0,7340,7341,5,64,0,0,7341,7342,3,470,235,0,7342,755,1,0,0,0,7343,7344,5,158,0,0,7344,7345,3,774,387,0,7345,7346,3,1230,615,0,7346,7347,3,758,379,0,7347,7357,1,0,0,0,7348,7349,5,158,0,0,7349,7357,3,774,387,0,7350,7351,5,158,0,0,7351,7352,3,774,387,0,7352,7353,3,1234,617,0,7353,7354,5,80,0,0,7354,7355,3,1230,615,0,7355,7357,1,0,0,0,7356,7343,1,0,0,0,7356,7348,1,0,0,0,7356,7350,1,0,0,0,7357,757,1,0,0,0,7358,7359,5,100,0,0,7359,7362,3,1234,617,0,7360,7362,1,0,0,0,7361,7358,1,0,0,0,7361,7360,1,0,0,0,7362,759,1,0,0,0,7363,7365,5,363,0,0,7364,7366,5,113,0,0,7365,7364,1,0,0,0,7365,7366,1,0,0,0,7366,7368,1,0,0,0,7367,7369,5,112,0,0,7368,7367,1,0,0,0,7368,7369,1,0,0,0,7369,7370,1,0,0,0,7370,7372,3,774,387,0,7371,7373,3,766,383,0,7372,7371,1,0,0,0,7372,7373,1,0,0,0,7373,7374,1,0,0,0,7374,7375,3,780,390,0,7375,7383,1,0,0,0,7376,7377,5,363,0,0,7377,7378,5,2,0,0,7378,7379,3,764,382,0,7379,7380,5,3,0,0,7380,7381,3,780,390,0,7381,7383,1,0,0,0,7382,7363,1,0,0,0,7382,7376,1,0,0,0,7383,761,1,0,0,0,7384,7385,3,766,383,0,7385,7386,3,774,387,0,7386,7387,3,780,390,0,7387,7395,1,0,0,0,7388,7389,3,766,383,0,7389,7390,5,2,0,0,7390,7391,3,764,382,0,7391,7392,5,3,0,0,7392,7393,3,780,390,0,7393,7395,1,0,0,0,7394,7384,1,0,0,0,7394,7388,1,0,0,0,7395,763,1,0,0,0,7396,7401,3,768,384,0,7397,7398,5,6,0,0,7398,7400,3,768,384,0,7399,7397,1,0,0,0,7400,7403,1,0,0,0,7401,7399,1,0,0,0,7401,7402,1,0,0,0,7402,765,1,0,0,0,7403,7401,1,0,0,0,7404,7405,7,33,0,0,7405,767,1,0,0,0,7406,7407,3,770,385,0,7407,7408,3,772,386,0,7408,769,1,0,0,0,7409,7412,3,1270,635,0,7410,7412,3,766,383,0,7411,7409,1,0,0,0,7411,7410,1,0,0,0,7412,771,1,0,0,0,7413,7417,3,58,29,0,7414,7417,3,264,132,0,7415,7417,1,0,0,0,7416,7413,1,0,0,0,7416,7414,1,0,0,0,7416,7415,1,0,0,0,7417,773,1,0,0,0,7418,7421,5,128,0,0,7419,7421,1,0,0,0,7420,7418,1,0,0,0,7420,7419,1,0,0,0,7421,775,1,0,0,0,7422,7423,5,2,0,0,7423,7424,3,1232,616,0,7424,7425,5,3,0,0,7425,7428,1,0,0,0,7426,7428,1,0,0,0,7427,7422,1,0,0,0,7427,7426,1,0,0,0,7428,777,1,0,0,0,7429,7430,3,1230,615,0,7430,7431,3,776,388,0,7431,779,1,0,0,0,7432,7437,3,778,389,0,7433,7434,5,6,0,0,7434,7436,3,778,389,0,7435,7433,1,0,0,0,7436,7439,1,0,0,0,7437,7435,1,0,0,0,7437,7438,1,0,0,0,7438,7442,1,0,0,0,7439,7437,1,0,0,0,7440,7442,1,0,0,0,7441,7432,1,0,0,0,7441,7440,1,0,0,0,7442,781,1,0,0,0,7443,7444,5,203,0,0,7444,7467,3,784,392,0,7445,7446,5,203,0,0,7446,7447,3,766,383,0,7447,7448,3,774,387,0,7448,7449,3,784,392,0,7449,7467,1,0,0,0,7450,7451,5,203,0,0,7451,7452,5,128,0,0,7452,7467,3,784,392,0,7453,7454,5,203,0,0,7454,7455,5,2,0,0,7455,7460,3,786,393,0,7456,7457,5,6,0,0,7457,7459,3,786,393,0,7458,7456,1,0,0,0,7459,7462,1,0,0,0,7460,7458,1,0,0,0,7460,7461,1,0,0,0,7461,7463,1,0,0,0,7462,7460,1,0,0,0,7463,7464,5,3,0,0,7464,7465,3,784,392,0,7465,7467,1,0,0,0,7466,7443,1,0,0,0,7466,7445,1,0,0,0,7466,7450,1,0,0,0,7466,7453,1,0,0,0,7467,783,1,0,0,0,7468,7478,3,858,429,0,7469,7478,3,804,402,0,7470,7478,3,844,422,0,7471,7478,3,830,415,0,7472,7478,3,852,426,0,7473,7478,3,242,121,0,7474,7478,3,248,124,0,7475,7478,3,252,126,0,7476,7478,3,798,399,0,7477,7468,1,0,0,0,7477,7469,1,0,0,0,7477,7470,1,0,0,0,7477,7471,1,0,0,0,7477,7472,1,0,0,0,7477,7473,1,0,0,0,7477,7474,1,0,0,0,7477,7475,1,0,0,0,7477,7476,1,0,0,0,7478,785,1,0,0,0,7479,7480,3,788,394,0,7480,7481,3,790,395,0,7481,787,1,0,0,0,7482,7485,3,1270,635,0,7483,7485,3,766,383,0,7484,7482,1,0,0,0,7484,7483,1,0,0,0,7485,789,1,0,0,0,7486,7490,3,58,29,0,7487,7490,3,264,132,0,7488,7490,1,0,0,0,7489,7486,1,0,0,0,7489,7487,1,0,0,0,7489,7488,1,0,0,0,7490,791,1,0,0,0,7491,7492,5,283,0,0,7492,7493,3,1234,617,0,7493,7494,3,794,397,0,7494,7495,5,36,0,0,7495,7496,3,796,398,0,7496,793,1,0,0,0,7497,7498,5,2,0,0,7498,7499,3,1162,581,0,7499,7500,5,3,0,0,7500,7503,1,0,0,0,7501,7503,1,0,0,0,7502,7497,1,0,0,0,7502,7501,1,0,0,0,7503,795,1,0,0,0,7504,7509,3,858,429,0,7505,7509,3,804,402,0,7506,7509,3,844,422,0,7507,7509,3,830,415,0,7508,7504,1,0,0,0,7508,7505,1,0,0,0,7508,7506,1,0,0,0,7508,7507,1,0,0,0,7509,797,1,0,0,0,7510,7511,5,202,0,0,7511,7512,3,1234,617,0,7512,7513,3,800,400,0,7513,7538,1,0,0,0,7514,7515,5,46,0,0,7515,7516,3,154,77,0,7516,7517,5,92,0,0,7517,7518,3,244,122,0,7518,7519,5,36,0,0,7519,7520,5,202,0,0,7520,7521,3,1234,617,0,7521,7522,3,800,400,0,7522,7523,3,246,123,0,7523,7538,1,0,0,0,7524,7525,5,46,0,0,7525,7526,3,154,77,0,7526,7527,5,92,0,0,7527,7528,5,220,0,0,7528,7529,5,77,0,0,7529,7530,5,389,0,0,7530,7531,3,244,122,0,7531,7532,5,36,0,0,7532,7533,5,202,0,0,7533,7534,3,1234,617,0,7534,7535,3,800,400,0,7535,7536,3,246,123,0,7536,7538,1,0,0,0,7537,7510,1,0,0,0,7537,7514,1,0,0,0,7537,7524,1,0,0,0,7538,799,1,0,0,0,7539,7540,5,2,0,0,7540,7541,3,1156,578,0,7541,7542,5,3,0,0,7542,7545,1,0,0,0,7543,7545,1,0,0,0,7544,7539,1,0,0,0,7544,7543,1,0,0,0,7545,801,1,0,0,0,7546,7547,5,177,0,0,7547,7557,3,1234,617,0,7548,7549,5,177,0,0,7549,7550,5,283,0,0,7550,7557,3,1234,617,0,7551,7552,5,177,0,0,7552,7557,5,30,0,0,7553,7554,5,177,0,0,7554,7555,5,283,0,0,7555,7557,5,30,0,0,7556,7546,1,0,0,0,7556,7548,1,0,0,0,7556,7551,1,0,0,0,7556,7553,1,0,0,0,7557,803,1,0,0,0,7558,7560,3,872,436,0,7559,7558,1,0,0,0,7559,7560,1,0,0,0,7560,7561,1,0,0,0,7561,7562,5,232,0,0,7562,7563,5,71,0,0,7563,7564,3,806,403,0,7564,7565,3,808,404,0,7565,7566,3,816,408,0,7566,7567,3,820,410,0,7567,805,1,0,0,0,7568,7571,3,1230,615,0,7569,7570,5,36,0,0,7570,7572,3,1264,632,0,7571,7569,1,0,0,0,7571,7572,1,0,0,0,7572,807,1,0,0,0,7573,7593,3,858,429,0,7574,7575,5,463,0,0,7575,7576,3,810,405,0,7576,7577,5,450,0,0,7577,7578,3,858,429,0,7578,7593,1,0,0,0,7579,7580,5,2,0,0,7580,7581,3,812,406,0,7581,7586,5,3,0,0,7582,7583,5,463,0,0,7583,7584,3,810,405,0,7584,7585,5,450,0,0,7585,7587,1,0,0,0,7586,7582,1,0,0,0,7586,7587,1,0,0,0,7587,7588,1,0,0,0,7588,7589,3,858,429,0,7589,7593,1,0,0,0,7590,7591,5,53,0,0,7591,7593,5,415,0,0,7592,7573,1,0,0,0,7592,7574,1,0,0,0,7592,7579,1,0,0,0,7592,7590,1,0,0,0,7593,809,1,0,0,0,7594,7595,7,34,0,0,7595,811,1,0,0,0,7596,7601,3,814,407,0,7597,7598,5,6,0,0,7598,7600,3,814,407,0,7599,7597,1,0,0,0,7600,7603,1,0,0,0,7601,7599,1,0,0,0,7601,7602,1,0,0,0,7602,813,1,0,0,0,7603,7601,1,0,0,0,7604,7605,3,1264,632,0,7605,7606,3,1200,600,0,7606,815,1,0,0,0,7607,7608,5,80,0,0,7608,7609,5,464,0,0,7609,7610,3,818,409,0,7610,7617,5,57,0,0,7611,7612,5,362,0,0,7612,7613,5,326,0,0,7613,7614,3,846,423,0,7614,7615,3,974,487,0,7615,7618,1,0,0,0,7616,7618,5,263,0,0,7617,7611,1,0,0,0,7617,7616,1,0,0,0,7618,7621,1,0,0,0,7619,7621,1,0,0,0,7620,7607,1,0,0,0,7620,7619,1,0,0,0,7621,817,1,0,0,0,7622,7623,5,2,0,0,7623,7624,3,536,268,0,7624,7625,5,3,0,0,7625,7626,3,974,487,0,7626,7632,1,0,0,0,7627,7628,5,80,0,0,7628,7629,5,45,0,0,7629,7632,3,1224,612,0,7630,7632,1,0,0,0,7631,7622,1,0,0,0,7631,7627,1,0,0,0,7631,7630,1,0,0,0,7632,819,1,0,0,0,7633,7634,5,87,0,0,7634,7637,3,1204,602,0,7635,7637,1,0,0,0,7636,7633,1,0,0,0,7636,7635,1,0,0,0,7637,821,1,0,0,0,7638,7640,5,253,0,0,7639,7641,5,71,0,0,7640,7639,1,0,0,0,7640,7641,1,0,0,0,7641,7642,1,0,0,0,7642,7644,3,1230,615,0,7643,7645,3,944,472,0,7644,7643,1,0,0,0,7644,7645,1,0,0,0,7645,7646,1,0,0,0,7646,7649,5,100,0,0,7647,7650,3,860,430,0,7648,7650,3,1230,615,0,7649,7647,1,0,0,0,7649,7648,1,0,0,0,7650,7652,1,0,0,0,7651,7653,3,944,472,0,7652,7651,1,0,0,0,7652,7653,1,0,0,0,7653,7654,1,0,0,0,7654,7655,5,80,0,0,7655,7664,3,1038,519,0,7656,7658,3,824,412,0,7657,7659,3,826,413,0,7658,7657,1,0,0,0,7658,7659,1,0,0,0,7659,7665,1,0,0,0,7660,7662,3,826,413,0,7661,7663,3,824,412,0,7662,7661,1,0,0,0,7662,7663,1,0,0,0,7663,7665,1,0,0,0,7664,7656,1,0,0,0,7664,7660,1,0,0,0,7665,7667,1,0,0,0,7666,7668,3,828,414,0,7667,7666,1,0,0,0,7667,7668,1,0,0,0,7668,823,1,0,0,0,7669,7670,5,102,0,0,7670,7671,5,77,0,0,7671,7674,5,250,0,0,7672,7673,5,33,0,0,7673,7675,3,1038,519,0,7674,7672,1,0,0,0,7674,7675,1,0,0,0,7675,7677,1,0,0,0,7676,7678,5,93,0,0,7677,7676,1,0,0,0,7677,7678,1,0,0,0,7678,7679,1,0,0,0,7679,7684,5,232,0,0,7680,7681,5,2,0,0,7681,7682,3,812,406,0,7682,7683,5,3,0,0,7683,7685,1,0,0,0,7684,7680,1,0,0,0,7684,7685,1,0,0,0,7685,7686,1,0,0,0,7686,7687,3,934,467,0,7687,825,1,0,0,0,7688,7689,5,102,0,0,7689,7692,5,250,0,0,7690,7691,5,33,0,0,7691,7693,3,1038,519,0,7692,7690,1,0,0,0,7692,7693,1,0,0,0,7693,7695,1,0,0,0,7694,7696,5,93,0,0,7695,7694,1,0,0,0,7695,7696,1,0,0,0,7696,7697,1,0,0,0,7697,7698,5,362,0,0,7698,7699,5,326,0,0,7699,7700,3,846,423,0,7700,827,1,0,0,0,7701,7702,5,102,0,0,7702,7704,5,250,0,0,7703,7705,5,93,0,0,7704,7703,1,0,0,0,7704,7705,1,0,0,0,7705,7706,1,0,0,0,7706,7707,5,182,0,0,7707,829,1,0,0,0,7708,7710,3,872,436,0,7709,7708,1,0,0,0,7709,7710,1,0,0,0,7710,7711,1,0,0,0,7711,7712,5,182,0,0,7712,7713,5,64,0,0,7713,7714,3,962,481,0,7714,7715,3,832,416,0,7715,7716,3,976,488,0,7716,7717,3,820,410,0,7717,831,1,0,0,0,7718,7719,5,100,0,0,7719,7722,3,938,469,0,7720,7722,1,0,0,0,7721,7718,1,0,0,0,7721,7720,1,0,0,0,7722,833,1,0,0,0,7723,7724,5,247,0,0,7724,7725,3,882,441,0,7725,7726,3,960,480,0,7726,7727,3,836,418,0,7727,7728,3,840,420,0,7728,835,1,0,0,0,7729,7730,5,68,0,0,7730,7731,3,838,419,0,7731,7732,5,256,0,0,7732,7735,1,0,0,0,7733,7735,1,0,0,0,7734,7729,1,0,0,0,7734,7733,1,0,0,0,7735,837,1,0,0,0,7736,7737,5,131,0,0,7737,7749,7,35,0,0,7738,7739,5,407,0,0,7739,7749,7,35,0,0,7740,7745,5,327,0,0,7741,7742,5,362,0,0,7742,7746,5,201,0,0,7743,7744,5,407,0,0,7744,7746,5,201,0,0,7745,7741,1,0,0,0,7745,7743,1,0,0,0,7745,7746,1,0,0,0,7746,7749,1,0,0,0,7747,7749,5,201,0,0,7748,7736,1,0,0,0,7748,7738,1,0,0,0,7748,7740,1,0,0,0,7748,7747,1,0,0,0,7749,839,1,0,0,0,7750,7753,5,265,0,0,7751,7753,1,0,0,0,7752,7750,1,0,0,0,7752,7751,1,0,0,0,7753,841,1,0,0,0,7754,7759,5,265,0,0,7755,7756,5,465,0,0,7756,7759,5,466,0,0,7757,7759,1,0,0,0,7758,7754,1,0,0,0,7758,7755,1,0,0,0,7758,7757,1,0,0,0,7759,843,1,0,0,0,7760,7762,3,872,436,0,7761,7760,1,0,0,0,7761,7762,1,0,0,0,7762,7763,1,0,0,0,7763,7764,5,362,0,0,7764,7765,3,962,481,0,7765,7766,5,326,0,0,7766,7767,3,846,423,0,7767,7768,3,936,468,0,7768,7769,3,976,488,0,7769,7770,3,820,410,0,7770,845,1,0,0,0,7771,7776,3,848,424,0,7772,7773,5,6,0,0,7773,7775,3,848,424,0,7774,7772,1,0,0,0,7775,7778,1,0,0,0,7776,7774,1,0,0,0,7776,7777,1,0,0,0,7777,847,1,0,0,0,7778,7776,1,0,0,0,7779,7780,3,850,425,0,7780,7781,5,10,0,0,7781,7782,3,1038,519,0,7782,7797,1,0,0,0,7783,7784,5,2,0,0,7784,7789,3,850,425,0,7785,7786,5,6,0,0,7786,7788,3,850,425,0,7787,7785,1,0,0,0,7788,7791,1,0,0,0,7789,7787,1,0,0,0,7789,7790,1,0,0,0,7790,7792,1,0,0,0,7791,7789,1,0,0,0,7792,7793,5,3,0,0,7793,7794,5,10,0,0,7794,7795,3,1038,519,0,7795,7797,1,0,0,0,7796,7779,1,0,0,0,7796,7783,1,0,0,0,7797,849,1,0,0,0,7798,7799,3,1264,632,0,7799,7800,3,1200,600,0,7800,851,1,0,0,0,7801,7802,5,178,0,0,7802,7810,3,854,427,0,7803,7804,5,262,0,0,7804,7809,5,317,0,0,7805,7809,5,317,0,0,7806,7809,5,107,0,0,7807,7809,5,231,0,0,7808,7803,1,0,0,0,7808,7805,1,0,0,0,7808,7806,1,0,0,0,7808,7807,1,0,0,0,7809,7812,1,0,0,0,7810,7808,1,0,0,0,7810,7811,1,0,0,0,7811,7813,1,0,0,0,7812,7810,1,0,0,0,7813,7814,5,172,0,0,7814,7815,3,856,428,0,7815,7816,5,62,0,0,7816,7817,3,858,429,0,7817,853,1,0,0,0,7818,7819,3,1234,617,0,7819,855,1,0,0,0,7820,7826,1,0,0,0,7821,7822,5,105,0,0,7822,7826,5,217,0,0,7823,7824,5,372,0,0,7824,7826,5,217,0,0,7825,7820,1,0,0,0,7825,7821,1,0,0,0,7825,7823,1,0,0,0,7826,857,1,0,0,0,7827,7830,3,862,431,0,7828,7830,3,860,430,0,7829,7827,1,0,0,0,7829,7828,1,0,0,0,7830,859,1,0,0,0,7831,7832,5,2,0,0,7832,7833,3,862,431,0,7833,7834,5,3,0,0,7834,7840,1,0,0,0,7835,7836,5,2,0,0,7836,7837,3,860,430,0,7837,7838,5,3,0,0,7838,7840,1,0,0,0,7839,7831,1,0,0,0,7839,7835,1,0,0,0,7840,861,1,0,0,0,7841,7842,3,864,432,0,7842,7850,3,890,445,0,7843,7844,3,926,463,0,7844,7845,3,900,450,0,7845,7851,1,0,0,0,7846,7848,3,898,449,0,7847,7849,3,926,463,0,7848,7847,1,0,0,0,7848,7849,1,0,0,0,7849,7851,1,0,0,0,7850,7843,1,0,0,0,7850,7846,1,0,0,0,7850,7851,1,0,0,0,7851,7865,1,0,0,0,7852,7853,3,872,436,0,7853,7854,3,864,432,0,7854,7862,3,890,445,0,7855,7856,3,926,463,0,7856,7857,3,900,450,0,7857,7863,1,0,0,0,7858,7860,3,898,449,0,7859,7861,3,926,463,0,7860,7859,1,0,0,0,7860,7861,1,0,0,0,7861,7863,1,0,0,0,7862,7855,1,0,0,0,7862,7858,1,0,0,0,7862,7863,1,0,0,0,7863,7865,1,0,0,0,7864,7841,1,0,0,0,7864,7852,1,0,0,0,7865,863,1,0,0,0,7866,7873,3,866,433,0,7867,7868,7,36,0,0,7868,7869,3,884,442,0,7869,7870,3,866,433,0,7870,7872,1,0,0,0,7871,7867,1,0,0,0,7872,7875,1,0,0,0,7873,7871,1,0,0,0,7873,7874,1,0,0,0,7874,865,1,0,0,0,7875,7873,1,0,0,0,7876,7883,3,870,435,0,7877,7878,5,70,0,0,7878,7879,3,884,442,0,7879,7880,3,870,435,0,7880,7882,1,0,0,0,7881,7877,1,0,0,0,7882,7885,1,0,0,0,7883,7881,1,0,0,0,7883,7884,1,0,0,0,7884,867,1,0,0,0,7885,7883,1,0,0,0,7886,7888,3,1204,602,0,7887,7889,3,878,439,0,7888,7887,1,0,0,0,7888,7889,1,0,0,0,7889,7902,1,0,0,0,7890,7891,3,888,444,0,7891,7893,3,1202,601,0,7892,7894,3,878,439,0,7893,7892,1,0,0,0,7893,7894,1,0,0,0,7894,7902,1,0,0,0,7895,7896,3,886,443,0,7896,7898,3,1204,602,0,7897,7899,3,878,439,0,7898,7897,1,0,0,0,7898,7899,1,0,0,0,7899,7902,1,0,0,0,7900,7902,3,878,439,0,7901,7886,1,0,0,0,7901,7890,1,0,0,0,7901,7895,1,0,0,0,7901,7900,1,0,0,0,7902,869,1,0,0,0,7903,7904,5,88,0,0,7904,7905,3,868,434,0,7905,7906,3,936,468,0,7906,7907,3,974,487,0,7907,7908,3,918,459,0,7908,7909,3,924,462,0,7909,7910,3,1116,558,0,7910,7916,1,0,0,0,7911,7916,3,934,467,0,7912,7913,5,92,0,0,7913,7916,3,958,479,0,7914,7916,3,860,430,0,7915,7903,1,0,0,0,7915,7911,1,0,0,0,7915,7912,1,0,0,0,7915,7914,1,0,0,0,7916,871,1,0,0,0,7917,7919,5,105,0,0,7918,7920,5,296,0,0,7919,7918,1,0,0,0,7919,7920,1,0,0,0,7920,7921,1,0,0,0,7921,7926,3,874,437,0,7922,7923,5,6,0,0,7923,7925,3,874,437,0,7924,7922,1,0,0,0,7925,7928,1,0,0,0,7926,7924,1,0,0,0,7926,7927,1,0,0,0,7927,873,1,0,0,0,7928,7926,1,0,0,0,7929,7930,3,1234,617,0,7930,7931,3,776,388,0,7931,7932,5,36,0,0,7932,7933,3,876,438,0,7933,7934,5,2,0,0,7934,7935,3,796,398,0,7935,7936,5,3,0,0,7936,875,1,0,0,0,7937,7942,5,251,0,0,7938,7939,5,77,0,0,7939,7942,5,251,0,0,7940,7942,1,0,0,0,7941,7937,1,0,0,0,7941,7938,1,0,0,0,7941,7940,1,0,0,0,7942,877,1,0,0,0,7943,7949,5,71,0,0,7944,7946,5,339,0,0,7945,7944,1,0,0,0,7945,7946,1,0,0,0,7946,7947,1,0,0,0,7947,7950,3,880,440,0,7948,7950,3,1448,724,0,7949,7945,1,0,0,0,7949,7948,1,0,0,0,7950,879,1,0,0,0,7951,7953,7,37,0,0,7952,7951,1,0,0,0,7952,7953,1,0,0,0,7953,7954,1,0,0,0,7954,7955,7,10,0,0,7955,7956,3,882,441,0,7956,7957,3,1230,615,0,7957,7966,1,0,0,0,7958,7959,5,360,0,0,7959,7960,3,882,441,0,7960,7961,3,1230,615,0,7961,7966,1,0,0,0,7962,7963,5,92,0,0,7963,7966,3,1230,615,0,7964,7966,3,1230,615,0,7965,7952,1,0,0,0,7965,7958,1,0,0,0,7965,7962,1,0,0,0,7965,7964,1,0,0,0,7966,881,1,0,0,0,7967,7970,5,92,0,0,7968,7970,1,0,0,0,7969,7967,1,0,0,0,7969,7968,1,0,0,0,7970,883,1,0,0,0,7971,7975,5,30,0,0,7972,7975,5,56,0,0,7973,7975,1,0,0,0,7974,7971,1,0,0,0,7974,7972,1,0,0,0,7974,7973,1,0,0,0,7975,885,1,0,0,0,7976,7982,5,56,0,0,7977,7978,5,80,0,0,7978,7979,5,2,0,0,7979,7980,3,1156,578,0,7980,7981,5,3,0,0,7981,7983,1,0,0,0,7982,7977,1,0,0,0,7982,7983,1,0,0,0,7983,887,1,0,0,0,7984,7985,5,30,0,0,7985,889,1,0,0,0,7986,7989,3,892,446,0,7987,7989,1,0,0,0,7988,7986,1,0,0,0,7988,7987,1,0,0,0,7989,891,1,0,0,0,7990,7991,5,83,0,0,7991,7992,5,147,0,0,7992,7993,3,894,447,0,7993,893,1,0,0,0,7994,7999,3,896,448,0,7995,7996,5,6,0,0,7996,7998,3,896,448,0,7997,7995,1,0,0,0,7998,8001,1,0,0,0,7999,7997,1,0,0,0,7999,8e3,1,0,0,0,8e3,895,1,0,0,0,8001,7999,1,0,0,0,8002,8006,3,1038,519,0,8003,8004,5,100,0,0,8004,8007,3,1152,576,0,8005,8007,3,548,274,0,8006,8003,1,0,0,0,8006,8005,1,0,0,0,8007,8008,1,0,0,0,8008,8009,3,550,275,0,8009,897,1,0,0,0,8010,8012,3,902,451,0,8011,8013,3,904,452,0,8012,8011,1,0,0,0,8012,8013,1,0,0,0,8013,8019,1,0,0,0,8014,8016,3,904,452,0,8015,8017,3,902,451,0,8016,8015,1,0,0,0,8016,8017,1,0,0,0,8017,8019,1,0,0,0,8018,8010,1,0,0,0,8018,8014,1,0,0,0,8019,899,1,0,0,0,8020,8023,3,898,449,0,8021,8023,1,0,0,0,8022,8020,1,0,0,0,8022,8021,1,0,0,0,8023,901,1,0,0,0,8024,8025,5,74,0,0,8025,8028,3,906,453,0,8026,8027,5,6,0,0,8027,8029,3,908,454,0,8028,8026,1,0,0,0,8028,8029,1,0,0,0,8029,8048,1,0,0,0,8030,8031,5,61,0,0,8031,8045,3,916,458,0,8032,8033,3,910,455,0,8033,8037,3,914,457,0,8034,8038,5,81,0,0,8035,8036,5,105,0,0,8036,8038,5,467,0,0,8037,8034,1,0,0,0,8037,8035,1,0,0,0,8038,8046,1,0,0,0,8039,8043,3,914,457,0,8040,8044,5,81,0,0,8041,8042,5,105,0,0,8042,8044,5,467,0,0,8043,8040,1,0,0,0,8043,8041,1,0,0,0,8044,8046,1,0,0,0,8045,8032,1,0,0,0,8045,8039,1,0,0,0,8046,8048,1,0,0,0,8047,8024,1,0,0,0,8047,8030,1,0,0,0,8048,903,1,0,0,0,8049,8054,5,79,0,0,8050,8055,3,908,454,0,8051,8052,3,910,455,0,8052,8053,3,914,457,0,8053,8055,1,0,0,0,8054,8050,1,0,0,0,8054,8051,1,0,0,0,8055,905,1,0,0,0,8056,8059,3,1038,519,0,8057,8059,5,30,0,0,8058,8056,1,0,0,0,8058,8057,1,0,0,0,8059,907,1,0,0,0,8060,8061,3,1038,519,0,8061,909,1,0,0,0,8062,8068,3,1082,541,0,8063,8064,5,12,0,0,8064,8068,3,912,456,0,8065,8066,5,13,0,0,8066,8068,3,912,456,0,8067,8062,1,0,0,0,8067,8063,1,0,0,0,8067,8065,1,0,0,0,8068,911,1,0,0,0,8069,8072,3,1250,625,0,8070,8072,3,1248,624,0,8071,8069,1,0,0,0,8071,8070,1,0,0,0,8072,913,1,0,0,0,8073,8074,7,38,0,0,8074,915,1,0,0,0,8075,8076,7,39,0,0,8076,917,1,0,0,0,8077,8078,5,66,0,0,8078,8079,5,147,0,0,8079,8082,3,920,460,0,8080,8082,1,0,0,0,8081,8077,1,0,0,0,8081,8080,1,0,0,0,8082,919,1,0,0,0,8083,8088,3,922,461,0,8084,8085,5,6,0,0,8085,8087,3,922,461,0,8086,8084,1,0,0,0,8087,8090,1,0,0,0,8088,8086,1,0,0,0,8088,8089,1,0,0,0,8089,921,1,0,0,0,8090,8088,1,0,0,0,8091,8111,3,1038,519,0,8092,8093,5,2,0,0,8093,8111,5,3,0,0,8094,8095,5,469,0,0,8095,8096,5,2,0,0,8096,8097,3,1156,578,0,8097,8098,5,3,0,0,8098,8111,1,0,0,0,8099,8100,5,468,0,0,8100,8101,5,2,0,0,8101,8102,3,1156,578,0,8102,8103,5,3,0,0,8103,8111,1,0,0,0,8104,8105,5,470,0,0,8105,8106,5,471,0,0,8106,8107,5,2,0,0,8107,8108,3,920,460,0,8108,8109,5,3,0,0,8109,8111,1,0,0,0,8110,8091,1,0,0,0,8110,8092,1,0,0,0,8110,8094,1,0,0,0,8110,8099,1,0,0,0,8110,8104,1,0,0,0,8111,923,1,0,0,0,8112,8113,5,67,0,0,8113,8116,3,1038,519,0,8114,8116,1,0,0,0,8115,8112,1,0,0,0,8115,8114,1,0,0,0,8116,925,1,0,0,0,8117,8119,3,928,464,0,8118,8117,1,0,0,0,8119,8120,1,0,0,0,8120,8118,1,0,0,0,8120,8121,1,0,0,0,8121,8126,1,0,0,0,8122,8123,5,62,0,0,8123,8124,5,293,0,0,8124,8126,5,81,0,0,8125,8118,1,0,0,0,8125,8122,1,0,0,0,8126,927,1,0,0,0,8127,8128,3,930,465,0,8128,8129,3,932,466,0,8129,8130,3,842,421,0,8130,929,1,0,0,0,8131,8141,5,62,0,0,8132,8133,5,262,0,0,8133,8135,5,236,0,0,8134,8132,1,0,0,0,8134,8135,1,0,0,0,8135,8136,1,0,0,0,8136,8142,5,362,0,0,8137,8139,5,236,0,0,8138,8137,1,0,0,0,8138,8139,1,0,0,0,8139,8140,1,0,0,0,8140,8142,5,327,0,0,8141,8134,1,0,0,0,8141,8138,1,0,0,0,8142,931,1,0,0,0,8143,8144,5,268,0,0,8144,8147,3,1208,604,0,8145,8147,1,0,0,0,8146,8143,1,0,0,0,8146,8145,1,0,0,0,8147,933,1,0,0,0,8148,8149,5,415,0,0,8149,8150,5,2,0,0,8150,8151,3,1156,578,0,8151,8159,5,3,0,0,8152,8153,5,6,0,0,8153,8154,5,2,0,0,8154,8155,3,1156,578,0,8155,8156,5,3,0,0,8156,8158,1,0,0,0,8157,8152,1,0,0,0,8158,8161,1,0,0,0,8159,8157,1,0,0,0,8159,8160,1,0,0,0,8160,935,1,0,0,0,8161,8159,1,0,0,0,8162,8163,5,64,0,0,8163,8166,3,938,469,0,8164,8166,1,0,0,0,8165,8162,1,0,0,0,8165,8164,1,0,0,0,8166,937,1,0,0,0,8167,8177,3,940,470,0,8168,8173,3,942,471,0,8169,8170,5,6,0,0,8170,8172,3,942,471,0,8171,8169,1,0,0,0,8172,8175,1,0,0,0,8173,8171,1,0,0,0,8173,8174,1,0,0,0,8174,8177,1,0,0,0,8175,8173,1,0,0,0,8176,8167,1,0,0,0,8176,8168,1,0,0,0,8177,939,1,0,0,0,8178,8181,3,942,471,0,8179,8180,5,6,0,0,8180,8182,3,942,471,0,8181,8179,1,0,0,0,8182,8183,1,0,0,0,8183,8181,1,0,0,0,8183,8184,1,0,0,0,8184,941,1,0,0,0,8185,8186,3,958,479,0,8186,8188,3,946,473,0,8187,8189,3,964,482,0,8188,8187,1,0,0,0,8188,8189,1,0,0,0,8189,8235,1,0,0,0,8190,8191,3,966,483,0,8191,8192,3,950,475,0,8192,8235,1,0,0,0,8193,8194,3,984,492,0,8194,8195,3,946,473,0,8195,8235,1,0,0,0,8196,8197,3,860,430,0,8197,8198,3,946,473,0,8198,8235,1,0,0,0,8199,8209,5,72,0,0,8200,8201,3,984,492,0,8201,8202,3,946,473,0,8202,8210,1,0,0,0,8203,8204,3,966,483,0,8204,8205,3,950,475,0,8205,8210,1,0,0,0,8206,8207,3,860,430,0,8207,8208,3,946,473,0,8208,8210,1,0,0,0,8209,8200,1,0,0,0,8209,8203,1,0,0,0,8209,8206,1,0,0,0,8210,8235,1,0,0,0,8211,8212,5,2,0,0,8212,8229,3,942,471,0,8213,8214,5,110,0,0,8214,8215,5,118,0,0,8215,8230,3,942,471,0,8216,8218,5,121,0,0,8217,8219,3,952,476,0,8218,8217,1,0,0,0,8218,8219,1,0,0,0,8219,8220,1,0,0,0,8220,8221,5,118,0,0,8221,8230,3,942,471,0,8222,8224,3,952,476,0,8223,8222,1,0,0,0,8223,8224,1,0,0,0,8224,8225,1,0,0,0,8225,8226,5,118,0,0,8226,8227,3,942,471,0,8227,8228,3,954,477,0,8228,8230,1,0,0,0,8229,8213,1,0,0,0,8229,8216,1,0,0,0,8229,8223,1,0,0,0,8229,8230,1,0,0,0,8230,8231,1,0,0,0,8231,8232,5,3,0,0,8232,8233,3,946,473,0,8233,8235,1,0,0,0,8234,8185,1,0,0,0,8234,8190,1,0,0,0,8234,8193,1,0,0,0,8234,8196,1,0,0,0,8234,8199,1,0,0,0,8234,8211,1,0,0,0,8235,8254,1,0,0,0,8236,8237,5,110,0,0,8237,8238,5,118,0,0,8238,8253,3,942,471,0,8239,8241,5,121,0,0,8240,8242,3,952,476,0,8241,8240,1,0,0,0,8241,8242,1,0,0,0,8242,8243,1,0,0,0,8243,8244,5,118,0,0,8244,8253,3,942,471,0,8245,8247,3,952,476,0,8246,8245,1,0,0,0,8246,8247,1,0,0,0,8247,8248,1,0,0,0,8248,8249,5,118,0,0,8249,8250,3,942,471,0,8250,8251,3,954,477,0,8251,8253,1,0,0,0,8252,8236,1,0,0,0,8252,8239,1,0,0,0,8252,8246,1,0,0,0,8253,8256,1,0,0,0,8254,8252,1,0,0,0,8254,8255,1,0,0,0,8255,943,1,0,0,0,8256,8254,1,0,0,0,8257,8259,5,36,0,0,8258,8257,1,0,0,0,8258,8259,1,0,0,0,8259,8260,1,0,0,0,8260,8265,3,1264,632,0,8261,8262,5,2,0,0,8262,8263,3,1232,616,0,8263,8264,5,3,0,0,8264,8266,1,0,0,0,8265,8261,1,0,0,0,8265,8266,1,0,0,0,8266,945,1,0,0,0,8267,8270,3,948,474,0,8268,8270,1,0,0,0,8269,8267,1,0,0,0,8269,8268,1,0,0,0,8270,947,1,0,0,0,8271,8273,5,36,0,0,8272,8271,1,0,0,0,8272,8273,1,0,0,0,8273,8274,1,0,0,0,8274,8279,3,1266,633,0,8275,8276,5,2,0,0,8276,8277,3,1232,616,0,8277,8278,5,3,0,0,8278,8280,1,0,0,0,8279,8275,1,0,0,0,8279,8280,1,0,0,0,8280,949,1,0,0,0,8281,8295,3,944,472,0,8282,8284,5,36,0,0,8283,8285,3,1264,632,0,8284,8283,1,0,0,0,8284,8285,1,0,0,0,8285,8288,1,0,0,0,8286,8288,3,1264,632,0,8287,8282,1,0,0,0,8287,8286,1,0,0,0,8288,8289,1,0,0,0,8289,8290,5,2,0,0,8290,8291,3,980,490,0,8291,8292,5,3,0,0,8292,8295,1,0,0,0,8293,8295,1,0,0,0,8294,8281,1,0,0,0,8294,8287,1,0,0,0,8294,8293,1,0,0,0,8295,951,1,0,0,0,8296,8298,7,40,0,0,8297,8299,5,123,0,0,8298,8297,1,0,0,0,8298,8299,1,0,0,0,8299,953,1,0,0,0,8300,8301,5,100,0,0,8301,8302,5,2,0,0,8302,8303,3,1232,616,0,8303,8304,5,3,0,0,8304,8308,1,0,0,0,8305,8306,5,80,0,0,8306,8308,3,1038,519,0,8307,8300,1,0,0,0,8307,8305,1,0,0,0,8308,955,1,0,0,0,8309,8310,3,1230,615,0,8310,957,1,0,0,0,8311,8313,3,1230,615,0,8312,8314,5,9,0,0,8313,8312,1,0,0,0,8313,8314,1,0,0,0,8314,8324,1,0,0,0,8315,8321,5,81,0,0,8316,8322,3,1230,615,0,8317,8318,5,2,0,0,8318,8319,3,1230,615,0,8319,8320,5,3,0,0,8320,8322,1,0,0,0,8321,8316,1,0,0,0,8321,8317,1,0,0,0,8322,8324,1,0,0,0,8323,8311,1,0,0,0,8323,8315,1,0,0,0,8324,959,1,0,0,0,8325,8330,3,958,479,0,8326,8327,5,6,0,0,8327,8329,3,958,479,0,8328,8326,1,0,0,0,8329,8332,1,0,0,0,8330,8328,1,0,0,0,8330,8331,1,0,0,0,8331,961,1,0,0,0,8332,8330,1,0,0,0,8333,8338,3,958,479,0,8334,8336,5,36,0,0,8335,8334,1,0,0,0,8335,8336,1,0,0,0,8336,8337,1,0,0,0,8337,8339,3,1264,632,0,8338,8335,1,0,0,0,8338,8339,1,0,0,0,8339,963,1,0,0,0,8340,8341,5,472,0,0,8341,8342,3,1240,620,0,8342,8343,5,2,0,0,8343,8344,3,1156,578,0,8344,8345,5,3,0,0,8345,8346,5,303,0,0,8346,8347,5,2,0,0,8347,8348,3,1038,519,0,8348,8349,5,3,0,0,8349,965,1,0,0,0,8350,8351,3,1090,545,0,8351,8352,3,972,486,0,8352,8368,1,0,0,0,8353,8354,5,313,0,0,8354,8355,5,64,0,0,8355,8356,5,2,0,0,8356,8361,3,968,484,0,8357,8358,5,6,0,0,8358,8360,3,968,484,0,8359,8357,1,0,0,0,8360,8363,1,0,0,0,8361,8359,1,0,0,0,8361,8362,1,0,0,0,8362,8364,1,0,0,0,8363,8361,1,0,0,0,8364,8365,5,3,0,0,8365,8366,3,972,486,0,8366,8368,1,0,0,0,8367,8350,1,0,0,0,8367,8353,1,0,0,0,8368,967,1,0,0,0,8369,8370,3,1090,545,0,8370,8371,3,970,485,0,8371,969,1,0,0,0,8372,8373,5,36,0,0,8373,8374,5,2,0,0,8374,8375,3,980,490,0,8375,8376,5,3,0,0,8376,8379,1,0,0,0,8377,8379,1,0,0,0,8378,8372,1,0,0,0,8378,8377,1,0,0,0,8379,971,1,0,0,0,8380,8381,5,105,0,0,8381,8384,5,473,0,0,8382,8384,1,0,0,0,8383,8380,1,0,0,0,8383,8382,1,0,0,0,8384,973,1,0,0,0,8385,8386,5,103,0,0,8386,8389,3,1038,519,0,8387,8389,1,0,0,0,8388,8385,1,0,0,0,8388,8387,1,0,0,0,8389,975,1,0,0,0,8390,8395,5,103,0,0,8391,8392,5,434,0,0,8392,8393,5,268,0,0,8393,8396,3,854,427,0,8394,8396,3,1038,519,0,8395,8391,1,0,0,0,8395,8394,1,0,0,0,8396,8399,1,0,0,0,8397,8399,1,0,0,0,8398,8390,1,0,0,0,8398,8397,1,0,0,0,8399,977,1,0,0,0,8400,8403,3,980,490,0,8401,8403,1,0,0,0,8402,8400,1,0,0,0,8402,8401,1,0,0,0,8403,979,1,0,0,0,8404,8409,3,982,491,0,8405,8406,5,6,0,0,8406,8408,3,982,491,0,8407,8405,1,0,0,0,8408,8411,1,0,0,0,8409,8407,1,0,0,0,8409,8410,1,0,0,0,8410,981,1,0,0,0,8411,8409,1,0,0,0,8412,8413,3,1264,632,0,8413,8414,3,996,498,0,8414,8415,3,102,51,0,8415,983,1,0,0,0,8416,8417,5,474,0,0,8417,8445,5,2,0,0,8418,8419,3,1082,541,0,8419,8420,3,1108,554,0,8420,8421,5,475,0,0,8421,8426,3,986,493,0,8422,8423,5,6,0,0,8423,8425,3,986,493,0,8424,8422,1,0,0,0,8425,8428,1,0,0,0,8426,8424,1,0,0,0,8426,8427,1,0,0,0,8427,8446,1,0,0,0,8428,8426,1,0,0,0,8429,8430,5,476,0,0,8430,8431,5,2,0,0,8431,8432,3,992,496,0,8432,8433,5,3,0,0,8433,8434,5,6,0,0,8434,8435,3,1082,541,0,8435,8436,3,1108,554,0,8436,8437,5,475,0,0,8437,8442,3,986,493,0,8438,8439,5,6,0,0,8439,8441,3,986,493,0,8440,8438,1,0,0,0,8441,8444,1,0,0,0,8442,8440,1,0,0,0,8442,8443,1,0,0,0,8443,8446,1,0,0,0,8444,8442,1,0,0,0,8445,8418,1,0,0,0,8445,8429,1,0,0,0,8446,8447,1,0,0,0,8447,8448,5,3,0,0,8448,985,1,0,0,0,8449,8456,3,1264,632,0,8450,8452,3,996,498,0,8451,8453,3,988,494,0,8452,8451,1,0,0,0,8452,8453,1,0,0,0,8453,8457,1,0,0,0,8454,8455,5,62,0,0,8455,8457,5,473,0,0,8456,8450,1,0,0,0,8456,8454,1,0,0,0,8457,987,1,0,0,0,8458,8460,3,990,495,0,8459,8458,1,0,0,0,8460,8461,1,0,0,0,8461,8459,1,0,0,0,8461,8462,1,0,0,0,8462,989,1,0,0,0,8463,8464,5,53,0,0,8464,8472,3,1038,519,0,8465,8466,3,1274,637,0,8466,8467,3,1038,519,0,8467,8472,1,0,0,0,8468,8469,5,77,0,0,8469,8472,5,78,0,0,8470,8472,5,78,0,0,8471,8463,1,0,0,0,8471,8465,1,0,0,0,8471,8468,1,0,0,0,8471,8470,1,0,0,0,8472,991,1,0,0,0,8473,8478,3,994,497,0,8474,8475,5,6,0,0,8475,8477,3,994,497,0,8476,8474,1,0,0,0,8477,8480,1,0,0,0,8478,8476,1,0,0,0,8478,8479,1,0,0,0,8479,993,1,0,0,0,8480,8478,1,0,0,0,8481,8482,3,1080,540,0,8482,8483,5,36,0,0,8483,8484,3,1272,636,0,8484,8488,1,0,0,0,8485,8486,5,53,0,0,8486,8488,3,1080,540,0,8487,8481,1,0,0,0,8487,8485,1,0,0,0,8488,995,1,0,0,0,8489,8491,5,408,0,0,8490,8489,1,0,0,0,8490,8491,1,0,0,0,8491,8492,1,0,0,0,8492,8510,3,998,499,0,8493,8495,5,4,0,0,8494,8496,3,1250,625,0,8495,8494,1,0,0,0,8495,8496,1,0,0,0,8496,8497,1,0,0,0,8497,8499,5,5,0,0,8498,8493,1,0,0,0,8499,8502,1,0,0,0,8500,8498,1,0,0,0,8500,8501,1,0,0,0,8501,8511,1,0,0,0,8502,8500,1,0,0,0,8503,8508,5,35,0,0,8504,8505,5,4,0,0,8505,8506,3,1250,625,0,8506,8507,5,5,0,0,8507,8509,1,0,0,0,8508,8504,1,0,0,0,8508,8509,1,0,0,0,8509,8511,1,0,0,0,8510,8500,1,0,0,0,8510,8503,1,0,0,0,8511,8517,1,0,0,0,8512,8513,3,1230,615,0,8513,8514,5,27,0,0,8514,8515,7,41,0,0,8515,8517,1,0,0,0,8516,8490,1,0,0,0,8516,8512,1,0,0,0,8517,997,1,0,0,0,8518,8532,3,1002,501,0,8519,8532,3,1006,503,0,8520,8532,3,1010,505,0,8521,8532,3,1018,509,0,8522,8532,3,1026,513,0,8523,8529,3,1028,514,0,8524,8530,3,1032,516,0,8525,8526,5,2,0,0,8526,8527,3,1250,625,0,8527,8528,5,3,0,0,8528,8530,1,0,0,0,8529,8524,1,0,0,0,8529,8525,1,0,0,0,8530,8532,1,0,0,0,8531,8518,1,0,0,0,8531,8519,1,0,0,0,8531,8520,1,0,0,0,8531,8521,1,0,0,0,8531,8522,1,0,0,0,8531,8523,1,0,0,0,8532,999,1,0,0,0,8533,8538,3,1006,503,0,8534,8538,3,1012,506,0,8535,8538,3,1020,510,0,8536,8538,3,1026,513,0,8537,8533,1,0,0,0,8537,8534,1,0,0,0,8537,8535,1,0,0,0,8537,8536,1,0,0,0,8538,1001,1,0,0,0,8539,8544,3,1286,643,0,8540,8544,3,1268,634,0,8541,8544,5,119,0,0,8542,8544,5,126,0,0,8543,8539,1,0,0,0,8543,8540,1,0,0,0,8543,8541,1,0,0,0,8543,8542,1,0,0,0,8544,8546,1,0,0,0,8545,8547,3,472,236,0,8546,8545,1,0,0,0,8546,8547,1,0,0,0,8547,8548,1,0,0,0,8548,8549,3,1004,502,0,8549,1003,1,0,0,0,8550,8551,5,2,0,0,8551,8552,3,1156,578,0,8552,8553,5,3,0,0,8553,8556,1,0,0,0,8554,8556,1,0,0,0,8555,8550,1,0,0,0,8555,8554,1,0,0,0,8556,1005,1,0,0,0,8557,8574,5,394,0,0,8558,8574,5,395,0,0,8559,8574,5,409,0,0,8560,8574,5,381,0,0,8561,8574,5,406,0,0,8562,8563,5,391,0,0,8563,8574,3,1008,504,0,8564,8565,5,190,0,0,8565,8574,5,405,0,0,8566,8567,5,388,0,0,8567,8574,3,1004,502,0,8568,8569,5,387,0,0,8569,8574,3,1004,502,0,8570,8571,5,402,0,0,8571,8574,3,1004,502,0,8572,8574,5,383,0,0,8573,8557,1,0,0,0,8573,8558,1,0,0,0,8573,8559,1,0,0,0,8573,8560,1,0,0,0,8573,8561,1,0,0,0,8573,8562,1,0,0,0,8573,8564,1,0,0,0,8573,8566,1,0,0,0,8573,8568,1,0,0,0,8573,8570,1,0,0,0,8573,8572,1,0,0,0,8574,1007,1,0,0,0,8575,8576,5,2,0,0,8576,8577,3,1250,625,0,8577,8578,5,3,0,0,8578,8581,1,0,0,0,8579,8581,1,0,0,0,8580,8575,1,0,0,0,8580,8579,1,0,0,0,8581,1009,1,0,0,0,8582,8585,3,1014,507,0,8583,8585,3,1016,508,0,8584,8582,1,0,0,0,8584,8583,1,0,0,0,8585,1011,1,0,0,0,8586,8589,3,1014,507,0,8587,8589,3,1016,508,0,8588,8586,1,0,0,0,8588,8587,1,0,0,0,8589,1013,1,0,0,0,8590,8591,5,382,0,0,8591,8592,3,1024,512,0,8592,8593,5,2,0,0,8593,8594,3,1156,578,0,8594,8595,5,3,0,0,8595,1015,1,0,0,0,8596,8597,5,382,0,0,8597,8598,3,1024,512,0,8598,1017,1,0,0,0,8599,8604,3,1022,511,0,8600,8601,5,2,0,0,8601,8602,3,1250,625,0,8602,8603,5,3,0,0,8603,8605,1,0,0,0,8604,8600,1,0,0,0,8604,8605,1,0,0,0,8605,1019,1,0,0,0,8606,8611,3,1022,511,0,8607,8608,5,2,0,0,8608,8609,3,1250,625,0,8609,8610,5,3,0,0,8610,8612,1,0,0,0,8611,8607,1,0,0,0,8611,8612,1,0,0,0,8612,1021,1,0,0,0,8613,8614,7,42,0,0,8614,8620,3,1024,512,0,8615,8620,5,416,0,0,8616,8617,5,398,0,0,8617,8618,7,43,0,0,8618,8620,3,1024,512,0,8619,8613,1,0,0,0,8619,8615,1,0,0,0,8619,8616,1,0,0,0,8620,1023,1,0,0,0,8621,8624,5,367,0,0,8622,8624,1,0,0,0,8623,8621,1,0,0,0,8623,8622,1,0,0,0,8624,1025,1,0,0,0,8625,8630,7,44,0,0,8626,8627,5,2,0,0,8627,8628,3,1250,625,0,8628,8629,5,3,0,0,8629,8631,1,0,0,0,8630,8626,1,0,0,0,8630,8631,1,0,0,0,8631,8632,1,0,0,0,8632,8633,3,1030,515,0,8633,1027,1,0,0,0,8634,8635,5,396,0,0,8635,1029,1,0,0,0,8636,8637,5,105,0,0,8637,8638,5,411,0,0,8638,8644,5,379,0,0,8639,8640,5,372,0,0,8640,8641,5,411,0,0,8641,8644,5,379,0,0,8642,8644,1,0,0,0,8643,8636,1,0,0,0,8643,8639,1,0,0,0,8643,8642,1,0,0,0,8644,1031,1,0,0,0,8645,8672,5,377,0,0,8646,8672,5,257,0,0,8647,8672,5,176,0,0,8648,8672,5,218,0,0,8649,8672,5,254,0,0,8650,8672,3,1034,517,0,8651,8652,5,377,0,0,8652,8653,5,94,0,0,8653,8672,5,257,0,0,8654,8655,5,176,0,0,8655,8659,5,94,0,0,8656,8660,5,218,0,0,8657,8660,5,254,0,0,8658,8660,3,1034,517,0,8659,8656,1,0,0,0,8659,8657,1,0,0,0,8659,8658,1,0,0,0,8660,8672,1,0,0,0,8661,8662,5,218,0,0,8662,8665,5,94,0,0,8663,8666,5,254,0,0,8664,8666,3,1034,517,0,8665,8663,1,0,0,0,8665,8664,1,0,0,0,8666,8672,1,0,0,0,8667,8668,5,254,0,0,8668,8669,5,94,0,0,8669,8672,3,1034,517,0,8670,8672,1,0,0,0,8671,8645,1,0,0,0,8671,8646,1,0,0,0,8671,8647,1,0,0,0,8671,8648,1,0,0,0,8671,8649,1,0,0,0,8671,8650,1,0,0,0,8671,8651,1,0,0,0,8671,8654,1,0,0,0,8671,8661,1,0,0,0,8671,8667,1,0,0,0,8671,8670,1,0,0,0,8672,1033,1,0,0,0,8673,8678,5,319,0,0,8674,8675,5,2,0,0,8675,8676,3,1250,625,0,8676,8677,5,3,0,0,8677,8679,1,0,0,0,8678,8674,1,0,0,0,8678,8679,1,0,0,0,8679,1035,1,0,0,0,8680,8681,5,197,0,0,8681,8684,3,1038,519,0,8682,8684,1,0,0,0,8683,8680,1,0,0,0,8683,8682,1,0,0,0,8684,1037,1,0,0,0,8685,8686,3,1040,520,0,8686,1039,1,0,0,0,8687,8689,3,1042,521,0,8688,8690,3,1150,575,0,8689,8688,1,0,0,0,8689,8690,1,0,0,0,8690,1041,1,0,0,0,8691,8696,3,1044,522,0,8692,8693,7,45,0,0,8693,8695,3,1044,522,0,8694,8692,1,0,0,0,8695,8698,1,0,0,0,8696,8694,1,0,0,0,8696,8697,1,0,0,0,8697,1043,1,0,0,0,8698,8696,1,0,0,0,8699,8704,3,1046,523,0,8700,8701,5,82,0,0,8701,8703,3,1046,523,0,8702,8700,1,0,0,0,8703,8706,1,0,0,0,8704,8702,1,0,0,0,8704,8705,1,0,0,0,8705,1045,1,0,0,0,8706,8704,1,0,0,0,8707,8712,3,1048,524,0,8708,8709,5,33,0,0,8709,8711,3,1048,524,0,8710,8708,1,0,0,0,8711,8714,1,0,0,0,8712,8710,1,0,0,0,8712,8713,1,0,0,0,8713,1047,1,0,0,0,8714,8712,1,0,0,0,8715,8727,3,1050,525,0,8716,8718,5,77,0,0,8717,8716,1,0,0,0,8717,8718,1,0,0,0,8718,8719,1,0,0,0,8719,8721,5,380,0,0,8720,8722,5,91,0,0,8721,8720,1,0,0,0,8721,8722,1,0,0,0,8722,8723,1,0,0,0,8723,8724,3,1050,525,0,8724,8725,5,33,0,0,8725,8726,3,1050,525,0,8726,8728,1,0,0,0,8727,8717,1,0,0,0,8727,8728,1,0,0,0,8728,1049,1,0,0,0,8729,8735,3,1052,526,0,8730,8732,5,77,0,0,8731,8730,1,0,0,0,8731,8732,1,0,0,0,8732,8733,1,0,0,0,8733,8734,5,68,0,0,8734,8736,3,1182,591,0,8735,8731,1,0,0,0,8735,8736,1,0,0,0,8736,1051,1,0,0,0,8737,8739,5,77,0,0,8738,8737,1,0,0,0,8738,8739,1,0,0,0,8739,8740,1,0,0,0,8740,8741,3,1054,527,0,8741,1053,1,0,0,0,8742,8744,3,1056,528,0,8743,8745,7,46,0,0,8744,8743,1,0,0,0,8744,8745,1,0,0,0,8745,1055,1,0,0,0,8746,8770,3,1058,529,0,8747,8749,5,116,0,0,8748,8750,5,77,0,0,8749,8748,1,0,0,0,8749,8750,1,0,0,0,8750,8768,1,0,0,0,8751,8769,5,78,0,0,8752,8769,5,96,0,0,8753,8769,5,60,0,0,8754,8769,5,358,0,0,8755,8756,5,56,0,0,8756,8757,5,64,0,0,8757,8769,3,1038,519,0,8758,8759,5,268,0,0,8759,8760,5,2,0,0,8760,8761,3,1162,581,0,8761,8762,5,3,0,0,8762,8769,1,0,0,0,8763,8769,5,188,0,0,8764,8766,3,1172,586,0,8765,8764,1,0,0,0,8765,8766,1,0,0,0,8766,8767,1,0,0,0,8767,8769,5,478,0,0,8768,8751,1,0,0,0,8768,8752,1,0,0,0,8768,8753,1,0,0,0,8768,8754,1,0,0,0,8768,8755,1,0,0,0,8768,8758,1,0,0,0,8768,8763,1,0,0,0,8768,8765,1,0,0,0,8769,8771,1,0,0,0,8770,8747,1,0,0,0,8770,8771,1,0,0,0,8771,1057,1,0,0,0,8772,8784,3,1060,530,0,8773,8774,7,47,0,0,8774,8785,3,1060,530,0,8775,8776,3,1154,577,0,8776,8782,3,1144,572,0,8777,8783,3,860,430,0,8778,8779,5,2,0,0,8779,8780,3,1038,519,0,8780,8781,5,3,0,0,8781,8783,1,0,0,0,8782,8777,1,0,0,0,8782,8778,1,0,0,0,8783,8785,1,0,0,0,8784,8773,1,0,0,0,8784,8775,1,0,0,0,8784,8785,1,0,0,0,8785,1059,1,0,0,0,8786,8799,3,1062,531,0,8787,8789,5,77,0,0,8788,8787,1,0,0,0,8788,8789,1,0,0,0,8789,8794,1,0,0,0,8790,8795,5,120,0,0,8791,8795,5,114,0,0,8792,8793,5,127,0,0,8793,8795,5,94,0,0,8794,8790,1,0,0,0,8794,8791,1,0,0,0,8794,8792,1,0,0,0,8795,8796,1,0,0,0,8796,8797,3,1062,531,0,8797,8798,3,1036,518,0,8798,8800,1,0,0,0,8799,8788,1,0,0,0,8799,8800,1,0,0,0,8800,1061,1,0,0,0,8801,8807,3,1064,532,0,8802,8803,3,1150,575,0,8803,8804,3,1064,532,0,8804,8806,1,0,0,0,8805,8802,1,0,0,0,8806,8809,1,0,0,0,8807,8805,1,0,0,0,8807,8808,1,0,0,0,8808,1063,1,0,0,0,8809,8807,1,0,0,0,8810,8812,3,1150,575,0,8811,8810,1,0,0,0,8811,8812,1,0,0,0,8812,8813,1,0,0,0,8813,8814,3,1066,533,0,8814,1065,1,0,0,0,8815,8820,3,1068,534,0,8816,8817,7,48,0,0,8817,8819,3,1068,534,0,8818,8816,1,0,0,0,8819,8822,1,0,0,0,8820,8818,1,0,0,0,8820,8821,1,0,0,0,8821,1067,1,0,0,0,8822,8820,1,0,0,0,8823,8828,3,1070,535,0,8824,8825,7,49,0,0,8825,8827,3,1070,535,0,8826,8824,1,0,0,0,8827,8830,1,0,0,0,8828,8826,1,0,0,0,8828,8829,1,0,0,0,8829,1069,1,0,0,0,8830,8828,1,0,0,0,8831,8834,3,1072,536,0,8832,8833,5,15,0,0,8833,8835,3,1038,519,0,8834,8832,1,0,0,0,8834,8835,1,0,0,0,8835,1071,1,0,0,0,8836,8838,7,48,0,0,8837,8836,1,0,0,0,8837,8838,1,0,0,0,8838,8839,1,0,0,0,8839,8840,3,1074,537,0,8840,1073,1,0,0,0,8841,8846,3,1076,538,0,8842,8843,5,142,0,0,8843,8844,5,411,0,0,8844,8845,5,379,0,0,8845,8847,3,1038,519,0,8846,8842,1,0,0,0,8846,8847,1,0,0,0,8847,1075,1,0,0,0,8848,8851,3,1078,539,0,8849,8850,5,43,0,0,8850,8852,3,470,235,0,8851,8849,1,0,0,0,8851,8852,1,0,0,0,8852,1077,1,0,0,0,8853,8858,3,1082,541,0,8854,8855,5,26,0,0,8855,8857,3,996,498,0,8856,8854,1,0,0,0,8857,8860,1,0,0,0,8858,8856,1,0,0,0,8858,8859,1,0,0,0,8859,1079,1,0,0,0,8860,8858,1,0,0,0,8861,8862,6,540,-1,0,8862,8869,3,1082,541,0,8863,8864,7,48,0,0,8864,8869,3,1080,540,9,8865,8866,3,1150,575,0,8866,8867,3,1080,540,3,8867,8869,1,0,0,0,8868,8861,1,0,0,0,8868,8863,1,0,0,0,8868,8865,1,0,0,0,8869,8909,1,0,0,0,8870,8871,10,8,0,0,8871,8872,5,15,0,0,8872,8908,3,1080,540,9,8873,8874,10,7,0,0,8874,8875,7,49,0,0,8875,8908,3,1080,540,8,8876,8877,10,6,0,0,8877,8878,7,48,0,0,8878,8908,3,1080,540,7,8879,8880,10,5,0,0,8880,8881,3,1150,575,0,8881,8882,3,1080,540,6,8882,8908,1,0,0,0,8883,8884,10,4,0,0,8884,8885,7,47,0,0,8885,8908,3,1080,540,5,8886,8887,10,10,0,0,8887,8888,5,26,0,0,8888,8908,3,996,498,0,8889,8890,10,2,0,0,8890,8908,3,1150,575,0,8891,8892,10,1,0,0,8892,8894,5,116,0,0,8893,8895,5,77,0,0,8894,8893,1,0,0,0,8894,8895,1,0,0,0,8895,8905,1,0,0,0,8896,8897,5,56,0,0,8897,8898,5,64,0,0,8898,8906,3,1080,540,0,8899,8900,5,268,0,0,8900,8901,5,2,0,0,8901,8902,3,1162,581,0,8902,8903,5,3,0,0,8903,8906,1,0,0,0,8904,8906,5,188,0,0,8905,8896,1,0,0,0,8905,8899,1,0,0,0,8905,8904,1,0,0,0,8906,8908,1,0,0,0,8907,8870,1,0,0,0,8907,8873,1,0,0,0,8907,8876,1,0,0,0,8907,8879,1,0,0,0,8907,8883,1,0,0,0,8907,8886,1,0,0,0,8907,8889,1,0,0,0,8907,8891,1,0,0,0,8908,8911,1,0,0,0,8909,8907,1,0,0,0,8909,8910,1,0,0,0,8910,1081,1,0,0,0,8911,8909,1,0,0,0,8912,8913,5,389,0,0,8913,8949,3,860,430,0,8914,8917,5,35,0,0,8915,8918,3,860,430,0,8916,8918,3,1164,582,0,8917,8915,1,0,0,0,8917,8916,1,0,0,0,8918,8949,1,0,0,0,8919,8920,5,28,0,0,8920,8949,3,1200,600,0,8921,8922,5,470,0,0,8922,8923,5,2,0,0,8923,8924,3,1156,578,0,8924,8925,5,3,0,0,8925,8949,1,0,0,0,8926,8927,5,98,0,0,8927,8949,3,860,430,0,8928,8949,3,1194,597,0,8929,8949,3,1242,621,0,8930,8949,3,1084,542,0,8931,8932,5,2,0,0,8932,8933,3,1038,519,0,8933,8934,5,3,0,0,8934,8935,3,1200,600,0,8935,8949,1,0,0,0,8936,8949,3,1184,592,0,8937,8949,3,1088,544,0,8938,8940,3,860,430,0,8939,8941,3,1198,599,0,8940,8939,1,0,0,0,8940,8941,1,0,0,0,8941,8949,1,0,0,0,8942,8949,3,1140,570,0,8943,8949,3,1142,571,0,8944,8945,3,1138,569,0,8945,8946,5,125,0,0,8946,8947,3,1138,569,0,8947,8949,1,0,0,0,8948,8912,1,0,0,0,8948,8914,1,0,0,0,8948,8919,1,0,0,0,8948,8921,1,0,0,0,8948,8926,1,0,0,0,8948,8928,1,0,0,0,8948,8929,1,0,0,0,8948,8930,1,0,0,0,8948,8931,1,0,0,0,8948,8936,1,0,0,0,8948,8937,1,0,0,0,8948,8938,1,0,0,0,8948,8942,1,0,0,0,8948,8943,1,0,0,0,8948,8944,1,0,0,0,8949,1083,1,0,0,0,8950,8951,5,661,0,0,8951,1085,1,0,0,0,8952,8953,3,1240,620,0,8953,8972,5,2,0,0,8954,8958,3,1158,579,0,8955,8956,5,6,0,0,8956,8957,5,101,0,0,8957,8959,3,1160,580,0,8958,8955,1,0,0,0,8958,8959,1,0,0,0,8959,8960,1,0,0,0,8960,8961,3,890,445,0,8961,8973,1,0,0,0,8962,8963,5,101,0,0,8963,8964,3,1160,580,0,8964,8965,3,890,445,0,8965,8973,1,0,0,0,8966,8967,7,50,0,0,8967,8968,3,1158,579,0,8968,8969,3,890,445,0,8969,8973,1,0,0,0,8970,8973,5,9,0,0,8971,8973,1,0,0,0,8972,8954,1,0,0,0,8972,8962,1,0,0,0,8972,8966,1,0,0,0,8972,8970,1,0,0,0,8972,8971,1,0,0,0,8973,8974,1,0,0,0,8974,8975,5,3,0,0,8975,1087,1,0,0,0,8976,8977,3,1086,543,0,8977,8978,3,1112,556,0,8978,8979,3,1114,557,0,8979,8980,3,1122,561,0,8980,8983,1,0,0,0,8981,8983,3,1092,546,0,8982,8976,1,0,0,0,8982,8981,1,0,0,0,8983,1089,1,0,0,0,8984,8987,3,1086,543,0,8985,8987,3,1092,546,0,8986,8984,1,0,0,0,8986,8985,1,0,0,0,8987,1091,1,0,0,0,8988,8989,5,108,0,0,8989,8990,5,62,0,0,8990,8991,5,2,0,0,8991,8992,3,1038,519,0,8992,8993,5,3,0,0,8993,9166,1,0,0,0,8994,9166,5,48,0,0,8995,9e3,5,50,0,0,8996,8997,5,2,0,0,8997,8998,3,1250,625,0,8998,8999,5,3,0,0,8999,9001,1,0,0,0,9e3,8996,1,0,0,0,9e3,9001,1,0,0,0,9001,9166,1,0,0,0,9002,9007,5,51,0,0,9003,9004,5,2,0,0,9004,9005,3,1250,625,0,9005,9006,5,3,0,0,9006,9008,1,0,0,0,9007,9003,1,0,0,0,9007,9008,1,0,0,0,9008,9166,1,0,0,0,9009,9014,5,75,0,0,9010,9011,5,2,0,0,9011,9012,3,1250,625,0,9012,9013,5,3,0,0,9013,9015,1,0,0,0,9014,9010,1,0,0,0,9014,9015,1,0,0,0,9015,9166,1,0,0,0,9016,9021,5,76,0,0,9017,9018,5,2,0,0,9018,9019,3,1250,625,0,9019,9020,5,3,0,0,9020,9022,1,0,0,0,9021,9017,1,0,0,0,9021,9022,1,0,0,0,9022,9166,1,0,0,0,9023,9166,5,49,0,0,9024,9166,5,52,0,0,9025,9166,5,89,0,0,9026,9166,5,99,0,0,9027,9166,5,47,0,0,9028,9166,5,111,0,0,9029,9030,5,41,0,0,9030,9031,5,2,0,0,9031,9032,3,1038,519,0,9032,9033,5,36,0,0,9033,9034,3,996,498,0,9034,9035,5,3,0,0,9035,9166,1,0,0,0,9036,9037,5,390,0,0,9037,9038,5,2,0,0,9038,9039,3,1168,584,0,9039,9040,5,3,0,0,9040,9166,1,0,0,0,9041,9042,5,489,0,0,9042,9043,5,2,0,0,9043,9046,3,1038,519,0,9044,9045,5,6,0,0,9045,9047,3,1172,586,0,9046,9044,1,0,0,0,9046,9047,1,0,0,0,9047,9048,1,0,0,0,9048,9049,5,3,0,0,9049,9166,1,0,0,0,9050,9051,5,403,0,0,9051,9052,5,2,0,0,9052,9053,3,1174,587,0,9053,9054,5,3,0,0,9054,9166,1,0,0,0,9055,9056,5,404,0,0,9056,9057,5,2,0,0,9057,9058,3,1176,588,0,9058,9059,5,3,0,0,9059,9166,1,0,0,0,9060,9061,5,410,0,0,9061,9062,5,2,0,0,9062,9063,3,1178,589,0,9063,9064,5,3,0,0,9064,9166,1,0,0,0,9065,9066,5,413,0,0,9066,9067,5,2,0,0,9067,9068,3,1038,519,0,9068,9069,5,36,0,0,9069,9070,3,996,498,0,9070,9071,5,3,0,0,9071,9166,1,0,0,0,9072,9073,5,414,0,0,9073,9075,5,2,0,0,9074,9076,7,51,0,0,9075,9074,1,0,0,0,9075,9076,1,0,0,0,9076,9077,1,0,0,0,9077,9078,3,1180,590,0,9078,9079,5,3,0,0,9079,9166,1,0,0,0,9080,9081,5,401,0,0,9081,9082,5,2,0,0,9082,9083,3,1038,519,0,9083,9084,5,6,0,0,9084,9085,3,1038,519,0,9085,9086,5,3,0,0,9086,9166,1,0,0,0,9087,9088,5,386,0,0,9088,9089,5,2,0,0,9089,9090,3,1156,578,0,9090,9091,5,3,0,0,9091,9166,1,0,0,0,9092,9093,5,392,0,0,9093,9094,5,2,0,0,9094,9095,3,1156,578,0,9095,9096,5,3,0,0,9096,9166,1,0,0,0,9097,9098,5,397,0,0,9098,9099,5,2,0,0,9099,9100,3,1156,578,0,9100,9101,5,3,0,0,9101,9166,1,0,0,0,9102,9103,5,425,0,0,9103,9104,5,2,0,0,9104,9105,3,1156,578,0,9105,9106,5,3,0,0,9106,9166,1,0,0,0,9107,9108,5,426,0,0,9108,9109,5,2,0,0,9109,9110,5,259,0,0,9110,9116,3,1272,636,0,9111,9114,5,6,0,0,9112,9115,3,1098,549,0,9113,9115,3,1156,578,0,9114,9112,1,0,0,0,9114,9113,1,0,0,0,9115,9117,1,0,0,0,9116,9111,1,0,0,0,9116,9117,1,0,0,0,9117,9118,1,0,0,0,9118,9119,5,3,0,0,9119,9166,1,0,0,0,9120,9121,5,427,0,0,9121,9122,5,2,0,0,9122,9123,3,1082,541,0,9123,9124,3,1108,554,0,9124,9125,5,3,0,0,9125,9166,1,0,0,0,9126,9127,5,428,0,0,9127,9128,5,2,0,0,9128,9129,3,1100,550,0,9129,9130,5,3,0,0,9130,9166,1,0,0,0,9131,9132,5,429,0,0,9132,9133,5,2,0,0,9133,9134,3,1104,552,0,9134,9135,3,1038,519,0,9135,9136,3,1106,553,0,9136,9137,5,3,0,0,9137,9166,1,0,0,0,9138,9139,5,430,0,0,9139,9140,5,2,0,0,9140,9141,5,259,0,0,9141,9144,3,1272,636,0,9142,9143,5,6,0,0,9143,9145,3,1038,519,0,9144,9142,1,0,0,0,9144,9145,1,0,0,0,9145,9146,1,0,0,0,9146,9147,5,3,0,0,9147,9166,1,0,0,0,9148,9149,5,431,0,0,9149,9150,5,2,0,0,9150,9151,5,376,0,0,9151,9152,3,1038,519,0,9152,9153,5,6,0,0,9153,9154,3,1094,547,0,9154,9155,3,1096,548,0,9155,9156,5,3,0,0,9156,9166,1,0,0,0,9157,9158,5,432,0,0,9158,9159,5,2,0,0,9159,9160,3,1104,552,0,9160,9161,3,1038,519,0,9161,9162,5,36,0,0,9162,9163,3,998,499,0,9163,9164,5,3,0,0,9164,9166,1,0,0,0,9165,8988,1,0,0,0,9165,8994,1,0,0,0,9165,8995,1,0,0,0,9165,9002,1,0,0,0,9165,9009,1,0,0,0,9165,9016,1,0,0,0,9165,9023,1,0,0,0,9165,9024,1,0,0,0,9165,9025,1,0,0,0,9165,9026,1,0,0,0,9165,9027,1,0,0,0,9165,9028,1,0,0,0,9165,9029,1,0,0,0,9165,9036,1,0,0,0,9165,9041,1,0,0,0,9165,9050,1,0,0,0,9165,9055,1,0,0,0,9165,9060,1,0,0,0,9165,9065,1,0,0,0,9165,9072,1,0,0,0,9165,9080,1,0,0,0,9165,9087,1,0,0,0,9165,9092,1,0,0,0,9165,9097,1,0,0,0,9165,9102,1,0,0,0,9165,9107,1,0,0,0,9165,9120,1,0,0,0,9165,9126,1,0,0,0,9165,9131,1,0,0,0,9165,9138,1,0,0,0,9165,9148,1,0,0,0,9165,9157,1,0,0,0,9166,1093,1,0,0,0,9167,9168,5,368,0,0,9168,9173,3,1038,519,0,9169,9170,5,368,0,0,9170,9171,5,262,0,0,9171,9173,5,450,0,0,9172,9167,1,0,0,0,9172,9169,1,0,0,0,9173,1095,1,0,0,0,9174,9175,5,6,0,0,9175,9176,5,332,0,0,9176,9186,5,378,0,0,9177,9178,5,6,0,0,9178,9179,5,332,0,0,9179,9186,5,262,0,0,9180,9181,5,6,0,0,9181,9182,5,332,0,0,9182,9183,5,262,0,0,9183,9186,5,450,0,0,9184,9186,1,0,0,0,9185,9174,1,0,0,0,9185,9177,1,0,0,0,9185,9180,1,0,0,0,9185,9184,1,0,0,0,9186,1097,1,0,0,0,9187,9188,5,417,0,0,9188,9189,5,2,0,0,9189,9190,3,1100,550,0,9190,9191,5,3,0,0,9191,1099,1,0,0,0,9192,9197,3,1102,551,0,9193,9194,5,6,0,0,9194,9196,3,1102,551,0,9195,9193,1,0,0,0,9196,9199,1,0,0,0,9197,9195,1,0,0,0,9197,9198,1,0,0,0,9198,1101,1,0,0,0,9199,9197,1,0,0,0,9200,9203,3,1038,519,0,9201,9202,5,36,0,0,9202,9204,3,1272,636,0,9203,9201,1,0,0,0,9203,9204,1,0,0,0,9204,1103,1,0,0,0,9205,9206,7,52,0,0,9206,1105,1,0,0,0,9207,9208,5,285,0,0,9208,9213,5,371,0,0,9209,9210,5,340,0,0,9210,9213,5,371,0,0,9211,9213,1,0,0,0,9212,9207,1,0,0,0,9212,9209,1,0,0,0,9212,9211,1,0,0,0,9213,1107,1,0,0,0,9214,9215,5,279,0,0,9215,9230,3,1082,541,0,9216,9217,5,279,0,0,9217,9218,3,1082,541,0,9218,9219,3,1110,555,0,9219,9230,1,0,0,0,9220,9221,5,279,0,0,9221,9222,3,1110,555,0,9222,9223,3,1082,541,0,9223,9230,1,0,0,0,9224,9225,5,279,0,0,9225,9226,3,1110,555,0,9226,9227,3,1082,541,0,9227,9228,3,1110,555,0,9228,9230,1,0,0,0,9229,9214,1,0,0,0,9229,9216,1,0,0,0,9229,9220,1,0,0,0,9229,9224,1,0,0,0,9230,1109,1,0,0,0,9231,9232,5,147,0,0,9232,9233,7,53,0,0,9233,1111,1,0,0,0,9234,9235,5,479,0,0,9235,9236,5,66,0,0,9236,9237,5,2,0,0,9237,9238,3,892,446,0,9238,9239,5,3,0,0,9239,9242,1,0,0,0,9240,9242,1,0,0,0,9241,9234,1,0,0,0,9241,9240,1,0,0,0,9242,1113,1,0,0,0,9243,9244,5,480,0,0,9244,9245,5,2,0,0,9245,9246,5,103,0,0,9246,9247,3,1038,519,0,9247,9248,5,3,0,0,9248,9251,1,0,0,0,9249,9251,1,0,0,0,9250,9243,1,0,0,0,9250,9249,1,0,0,0,9251,1115,1,0,0,0,9252,9253,5,104,0,0,9253,9256,3,1118,559,0,9254,9256,1,0,0,0,9255,9252,1,0,0,0,9255,9254,1,0,0,0,9256,1117,1,0,0,0,9257,9262,3,1120,560,0,9258,9259,5,6,0,0,9259,9261,3,1120,560,0,9260,9258,1,0,0,0,9261,9264,1,0,0,0,9262,9260,1,0,0,0,9262,9263,1,0,0,0,9263,1119,1,0,0,0,9264,9262,1,0,0,0,9265,9266,3,1264,632,0,9266,9267,5,36,0,0,9267,9268,3,1124,562,0,9268,1121,1,0,0,0,9269,9272,5,124,0,0,9270,9273,3,1124,562,0,9271,9273,3,1264,632,0,9272,9270,1,0,0,0,9272,9271,1,0,0,0,9273,9276,1,0,0,0,9274,9276,1,0,0,0,9275,9269,1,0,0,0,9275,9274,1,0,0,0,9276,1123,1,0,0,0,9277,9278,5,2,0,0,9278,9279,3,1126,563,0,9279,9280,3,1128,564,0,9280,9281,3,890,445,0,9281,9282,3,1130,565,0,9282,9283,5,3,0,0,9283,1125,1,0,0,0,9284,9287,3,1264,632,0,9285,9287,1,0,0,0,9286,9284,1,0,0,0,9286,9285,1,0,0,0,9287,1127,1,0,0,0,9288,9289,5,278,0,0,9289,9290,5,147,0,0,9290,9293,3,1156,578,0,9291,9293,1,0,0,0,9292,9288,1,0,0,0,9292,9291,1,0,0,0,9293,1129,1,0,0,0,9294,9295,5,292,0,0,9295,9296,3,1132,566,0,9296,9297,3,1136,568,0,9297,9308,1,0,0,0,9298,9299,5,313,0,0,9299,9300,3,1132,566,0,9300,9301,3,1136,568,0,9301,9308,1,0,0,0,9302,9303,5,481,0,0,9303,9304,3,1132,566,0,9304,9305,3,1136,568,0,9305,9308,1,0,0,0,9306,9308,1,0,0,0,9307,9294,1,0,0,0,9307,9298,1,0,0,0,9307,9302,1,0,0,0,9307,9306,1,0,0,0,9308,1131,1,0,0,0,9309,9316,3,1134,567,0,9310,9311,5,380,0,0,9311,9312,3,1134,567,0,9312,9313,5,33,0,0,9313,9314,3,1134,567,0,9314,9316,1,0,0,0,9315,9309,1,0,0,0,9315,9310,1,0,0,0,9316,1133,1,0,0,0,9317,9318,5,355,0,0,9318,9325,7,54,0,0,9319,9320,5,434,0,0,9320,9325,5,407,0,0,9321,9322,3,1038,519,0,9322,9323,7,54,0,0,9323,9325,1,0,0,0,9324,9317,1,0,0,0,9324,9319,1,0,0,0,9324,9321,1,0,0,0,9325,1135,1,0,0,0,9326,9333,5,199,0,0,9327,9328,5,434,0,0,9328,9334,5,407,0,0,9329,9334,5,66,0,0,9330,9334,5,467,0,0,9331,9332,5,262,0,0,9332,9334,5,482,0,0,9333,9327,1,0,0,0,9333,9329,1,0,0,0,9333,9330,1,0,0,0,9333,9331,1,0,0,0,9334,9337,1,0,0,0,9335,9337,1,0,0,0,9336,9326,1,0,0,0,9336,9335,1,0,0,0,9337,1137,1,0,0,0,9338,9339,5,407,0,0,9339,9341,5,2,0,0,9340,9342,3,1156,578,0,9341,9340,1,0,0,0,9341,9342,1,0,0,0,9342,9343,1,0,0,0,9343,9351,5,3,0,0,9344,9345,5,2,0,0,9345,9346,3,1156,578,0,9346,9347,5,6,0,0,9347,9348,3,1038,519,0,9348,9349,5,3,0,0,9349,9351,1,0,0,0,9350,9338,1,0,0,0,9350,9344,1,0,0,0,9351,1139,1,0,0,0,9352,9353,5,407,0,0,9353,9355,5,2,0,0,9354,9356,3,1156,578,0,9355,9354,1,0,0,0,9355,9356,1,0,0,0,9356,9357,1,0,0,0,9357,9358,5,3,0,0,9358,1141,1,0,0,0,9359,9360,5,2,0,0,9360,9361,3,1156,578,0,9361,9362,5,6,0,0,9362,9363,3,1038,519,0,9363,9364,5,3,0,0,9364,1143,1,0,0,0,9365,9366,7,55,0,0,9366,1145,1,0,0,0,9367,9370,5,29,0,0,9368,9370,3,1148,574,0,9369,9367,1,0,0,0,9369,9368,1,0,0,0,9370,1147,1,0,0,0,9371,9372,7,56,0,0,9372,1149,1,0,0,0,9373,9380,5,29,0,0,9374,9375,5,271,0,0,9375,9376,5,2,0,0,9376,9377,3,610,305,0,9377,9378,5,3,0,0,9378,9380,1,0,0,0,9379,9373,1,0,0,0,9379,9374,1,0,0,0,9380,1151,1,0,0,0,9381,9388,3,1146,573,0,9382,9383,5,271,0,0,9383,9384,5,2,0,0,9384,9385,3,610,305,0,9385,9386,5,3,0,0,9386,9388,1,0,0,0,9387,9381,1,0,0,0,9387,9382,1,0,0,0,9388,1153,1,0,0,0,9389,9402,3,1146,573,0,9390,9391,5,271,0,0,9391,9392,5,2,0,0,9392,9393,3,610,305,0,9393,9394,5,3,0,0,9394,9402,1,0,0,0,9395,9402,5,120,0,0,9396,9397,5,77,0,0,9397,9402,5,120,0,0,9398,9402,5,114,0,0,9399,9400,5,77,0,0,9400,9402,5,114,0,0,9401,9389,1,0,0,0,9401,9390,1,0,0,0,9401,9395,1,0,0,0,9401,9396,1,0,0,0,9401,9398,1,0,0,0,9401,9399,1,0,0,0,9402,1155,1,0,0,0,9403,9408,3,1038,519,0,9404,9405,5,6,0,0,9405,9407,3,1038,519,0,9406,9404,1,0,0,0,9407,9410,1,0,0,0,9408,9406,1,0,0,0,9408,9409,1,0,0,0,9409,1157,1,0,0,0,9410,9408,1,0,0,0,9411,9416,3,1160,580,0,9412,9413,5,6,0,0,9413,9415,3,1160,580,0,9414,9412,1,0,0,0,9415,9418,1,0,0,0,9416,9414,1,0,0,0,9416,9417,1,0,0,0,9417,1159,1,0,0,0,9418,9416,1,0,0,0,9419,9425,3,1038,519,0,9420,9421,3,570,285,0,9421,9422,7,57,0,0,9422,9423,3,1038,519,0,9423,9425,1,0,0,0,9424,9419,1,0,0,0,9424,9420,1,0,0,0,9425,1161,1,0,0,0,9426,9431,3,996,498,0,9427,9428,5,6,0,0,9428,9430,3,996,498,0,9429,9427,1,0,0,0,9430,9433,1,0,0,0,9431,9429,1,0,0,0,9431,9432,1,0,0,0,9432,1163,1,0,0,0,9433,9431,1,0,0,0,9434,9437,5,4,0,0,9435,9438,3,1156,578,0,9436,9438,3,1166,583,0,9437,9435,1,0,0,0,9437,9436,1,0,0,0,9437,9438,1,0,0,0,9438,9439,1,0,0,0,9439,9440,5,5,0,0,9440,1165,1,0,0,0,9441,9446,3,1164,582,0,9442,9443,5,6,0,0,9443,9445,3,1164,582,0,9444,9442,1,0,0,0,9445,9448,1,0,0,0,9446,9444,1,0,0,0,9446,9447,1,0,0,0,9447,1167,1,0,0,0,9448,9446,1,0,0,0,9449,9450,3,1170,585,0,9450,9451,5,64,0,0,9451,9452,3,1038,519,0,9452,9455,1,0,0,0,9453,9455,1,0,0,0,9454,9449,1,0,0,0,9454,9453,1,0,0,0,9455,1169,1,0,0,0,9456,9465,3,1274,637,0,9457,9465,5,377,0,0,9458,9465,5,257,0,0,9459,9465,5,176,0,0,9460,9465,5,218,0,0,9461,9465,5,254,0,0,9462,9465,5,319,0,0,9463,9465,3,1252,626,0,9464,9456,1,0,0,0,9464,9457,1,0,0,0,9464,9458,1,0,0,0,9464,9459,1,0,0,0,9464,9460,1,0,0,0,9464,9461,1,0,0,0,9464,9462,1,0,0,0,9464,9463,1,0,0,0,9465,1171,1,0,0,0,9466,9467,7,58,0,0,9467,1173,1,0,0,0,9468,9469,3,1038,519,0,9469,9470,5,84,0,0,9470,9471,3,1038,519,0,9471,9472,5,64,0,0,9472,9475,3,1038,519,0,9473,9474,5,62,0,0,9474,9476,3,1038,519,0,9475,9473,1,0,0,0,9475,9476,1,0,0,0,9476,1175,1,0,0,0,9477,9478,3,1080,540,0,9478,9479,5,68,0,0,9479,9480,3,1080,540,0,9480,9483,1,0,0,0,9481,9483,1,0,0,0,9482,9477,1,0,0,0,9482,9481,1,0,0,0,9483,1177,1,0,0,0,9484,9485,3,1038,519,0,9485,9486,5,64,0,0,9486,9487,3,1038,519,0,9487,9488,5,62,0,0,9488,9489,3,1038,519,0,9489,9512,1,0,0,0,9490,9491,3,1038,519,0,9491,9492,5,62,0,0,9492,9493,3,1038,519,0,9493,9494,5,64,0,0,9494,9495,3,1038,519,0,9495,9512,1,0,0,0,9496,9497,3,1038,519,0,9497,9498,5,64,0,0,9498,9499,3,1038,519,0,9499,9512,1,0,0,0,9500,9501,3,1038,519,0,9501,9502,5,62,0,0,9502,9503,3,1038,519,0,9503,9512,1,0,0,0,9504,9505,3,1038,519,0,9505,9506,5,127,0,0,9506,9507,3,1038,519,0,9507,9508,5,197,0,0,9508,9509,3,1038,519,0,9509,9512,1,0,0,0,9510,9512,3,1156,578,0,9511,9484,1,0,0,0,9511,9490,1,0,0,0,9511,9496,1,0,0,0,9511,9500,1,0,0,0,9511,9504,1,0,0,0,9511,9510,1,0,0,0,9512,1179,1,0,0,0,9513,9514,3,1038,519,0,9514,9515,5,64,0,0,9515,9516,3,1156,578,0,9516,9521,1,0,0,0,9517,9518,5,64,0,0,9518,9521,3,1156,578,0,9519,9521,3,1156,578,0,9520,9513,1,0,0,0,9520,9517,1,0,0,0,9520,9519,1,0,0,0,9521,1181,1,0,0,0,9522,9528,3,860,430,0,9523,9524,5,2,0,0,9524,9525,3,1156,578,0,9525,9526,5,3,0,0,9526,9528,1,0,0,0,9527,9522,1,0,0,0,9527,9523,1,0,0,0,9528,1183,1,0,0,0,9529,9530,5,40,0,0,9530,9531,3,1192,596,0,9531,9532,3,1186,593,0,9532,9533,3,1190,595,0,9533,9534,5,454,0,0,9534,1185,1,0,0,0,9535,9537,3,1188,594,0,9536,9535,1,0,0,0,9537,9538,1,0,0,0,9538,9536,1,0,0,0,9538,9539,1,0,0,0,9539,1187,1,0,0,0,9540,9541,5,102,0,0,9541,9542,3,1038,519,0,9542,9543,5,93,0,0,9543,9544,3,1038,519,0,9544,1189,1,0,0,0,9545,9546,5,58,0,0,9546,9549,3,1038,519,0,9547,9549,1,0,0,0,9548,9545,1,0,0,0,9548,9547,1,0,0,0,9549,1191,1,0,0,0,9550,9553,3,1038,519,0,9551,9553,1,0,0,0,9552,9550,1,0,0,0,9552,9551,1,0,0,0,9553,1193,1,0,0,0,9554,9556,3,1264,632,0,9555,9557,3,1198,599,0,9556,9555,1,0,0,0,9556,9557,1,0,0,0,9557,1195,1,0,0,0,9558,9561,5,11,0,0,9559,9562,3,1236,618,0,9560,9562,5,9,0,0,9561,9559,1,0,0,0,9561,9560,1,0,0,0,9562,9576,1,0,0,0,9563,9572,5,4,0,0,9564,9573,3,1038,519,0,9565,9567,3,1038,519,0,9566,9565,1,0,0,0,9566,9567,1,0,0,0,9567,9568,1,0,0,0,9568,9570,5,8,0,0,9569,9571,3,1038,519,0,9570,9569,1,0,0,0,9570,9571,1,0,0,0,9571,9573,1,0,0,0,9572,9564,1,0,0,0,9572,9566,1,0,0,0,9573,9574,1,0,0,0,9574,9576,5,5,0,0,9575,9558,1,0,0,0,9575,9563,1,0,0,0,9576,1197,1,0,0,0,9577,9579,3,1196,598,0,9578,9577,1,0,0,0,9579,9580,1,0,0,0,9580,9578,1,0,0,0,9580,9581,1,0,0,0,9581,1199,1,0,0,0,9582,9584,3,1196,598,0,9583,9582,1,0,0,0,9584,9587,1,0,0,0,9585,9583,1,0,0,0,9585,9586,1,0,0,0,9586,1201,1,0,0,0,9587,9585,1,0,0,0,9588,9591,3,1204,602,0,9589,9591,1,0,0,0,9590,9588,1,0,0,0,9590,9589,1,0,0,0,9591,1203,1,0,0,0,9592,9597,3,1206,603,0,9593,9594,5,6,0,0,9594,9596,3,1206,603,0,9595,9593,1,0,0,0,9596,9599,1,0,0,0,9597,9595,1,0,0,0,9597,9598,1,0,0,0,9598,1205,1,0,0,0,9599,9597,1,0,0,0,9600,9609,5,9,0,0,9601,9606,3,1038,519,0,9602,9603,5,36,0,0,9603,9607,3,1272,636,0,9604,9607,3,1274,637,0,9605,9607,1,0,0,0,9606,9602,1,0,0,0,9606,9604,1,0,0,0,9606,9605,1,0,0,0,9607,9609,1,0,0,0,9608,9600,1,0,0,0,9608,9601,1,0,0,0,9609,1207,1,0,0,0,9610,9615,3,1230,615,0,9611,9612,5,6,0,0,9612,9614,3,1230,615,0,9613,9611,1,0,0,0,9614,9617,1,0,0,0,9615,9613,1,0,0,0,9615,9616,1,0,0,0,9616,1209,1,0,0,0,9617,9615,1,0,0,0,9618,9619,3,1234,617,0,9619,1211,1,0,0,0,9620,9625,3,1210,605,0,9621,9622,5,6,0,0,9622,9624,3,1210,605,0,9623,9621,1,0,0,0,9624,9627,1,0,0,0,9625,9623,1,0,0,0,9625,9626,1,0,0,0,9626,1213,1,0,0,0,9627,9625,1,0,0,0,9628,9629,3,1234,617,0,9629,1215,1,0,0,0,9630,9635,3,1214,607,0,9631,9632,5,6,0,0,9632,9634,3,1214,607,0,9633,9631,1,0,0,0,9634,9637,1,0,0,0,9635,9633,1,0,0,0,9635,9636,1,0,0,0,9636,1217,1,0,0,0,9637,9635,1,0,0,0,9638,9639,3,1230,615,0,9639,1219,1,0,0,0,9640,9645,3,1218,609,0,9641,9642,5,6,0,0,9642,9644,3,1218,609,0,9643,9641,1,0,0,0,9644,9647,1,0,0,0,9645,9643,1,0,0,0,9645,9646,1,0,0,0,9646,1221,1,0,0,0,9647,9645,1,0,0,0,9648,9649,3,1234,617,0,9649,1223,1,0,0,0,9650,9651,3,1234,617,0,9651,1225,1,0,0,0,9652,9653,3,1230,615,0,9653,1227,1,0,0,0,9654,9659,3,1226,613,0,9655,9656,5,6,0,0,9656,9658,3,1226,613,0,9657,9655,1,0,0,0,9658,9661,1,0,0,0,9659,9657,1,0,0,0,9659,9660,1,0,0,0,9660,1229,1,0,0,0,9661,9659,1,0,0,0,9662,9664,3,1264,632,0,9663,9665,3,1198,599,0,9664,9663,1,0,0,0,9664,9665,1,0,0,0,9665,1231,1,0,0,0,9666,9671,3,1234,617,0,9667,9668,5,6,0,0,9668,9670,3,1234,617,0,9669,9667,1,0,0,0,9670,9673,1,0,0,0,9671,9669,1,0,0,0,9671,9672,1,0,0,0,9672,1233,1,0,0,0,9673,9671,1,0,0,0,9674,9675,3,1264,632,0,9675,1235,1,0,0,0,9676,9677,3,1272,636,0,9677,1237,1,0,0,0,9678,9679,3,1252,626,0,9679,1239,1,0,0,0,9680,9688,3,1286,643,0,9681,9688,3,1268,634,0,9682,9683,3,1264,632,0,9683,9684,3,1198,599,0,9684,9688,1,0,0,0,9685,9688,5,119,0,0,9686,9688,5,126,0,0,9687,9680,1,0,0,0,9687,9681,1,0,0,0,9687,9682,1,0,0,0,9687,9685,1,0,0,0,9687,9686,1,0,0,0,9688,1241,1,0,0,0,9689,9722,3,1250,625,0,9690,9722,3,1248,624,0,9691,9722,3,1252,626,0,9692,9722,3,1246,623,0,9693,9722,3,1244,622,0,9694,9702,3,1240,620,0,9695,9703,3,1252,626,0,9696,9697,5,2,0,0,9697,9698,3,1158,579,0,9698,9699,3,890,445,0,9699,9700,5,3,0,0,9700,9701,3,1252,626,0,9701,9703,1,0,0,0,9702,9695,1,0,0,0,9702,9696,1,0,0,0,9703,9722,1,0,0,0,9704,9705,3,1e3,500,0,9705,9706,3,1252,626,0,9706,9722,1,0,0,0,9707,9716,3,1028,514,0,9708,9709,3,1252,626,0,9709,9710,3,1032,516,0,9710,9717,1,0,0,0,9711,9712,5,2,0,0,9712,9713,3,1250,625,0,9713,9714,5,3,0,0,9714,9715,3,1252,626,0,9715,9717,1,0,0,0,9716,9708,1,0,0,0,9716,9711,1,0,0,0,9717,9722,1,0,0,0,9718,9722,5,96,0,0,9719,9722,5,60,0,0,9720,9722,5,78,0,0,9721,9689,1,0,0,0,9721,9690,1,0,0,0,9721,9691,1,0,0,0,9721,9692,1,0,0,0,9721,9693,1,0,0,0,9721,9694,1,0,0,0,9721,9704,1,0,0,0,9721,9707,1,0,0,0,9721,9718,1,0,0,0,9721,9719,1,0,0,0,9721,9720,1,0,0,0,9722,1243,1,0,0,0,9723,9724,5,654,0,0,9724,1245,1,0,0,0,9725,9726,5,650,0,0,9726,1247,1,0,0,0,9727,9728,5,660,0,0,9728,1249,1,0,0,0,9729,9730,5,658,0,0,9730,1251,1,0,0,0,9731,9732,3,1254,627,0,9732,9733,3,1256,628,0,9733,1253,1,0,0,0,9734,9746,5,645,0,0,9735,9746,5,647,0,0,9736,9740,5,649,0,0,9737,9739,5,677,0,0,9738,9737,1,0,0,0,9739,9742,1,0,0,0,9740,9738,1,0,0,0,9740,9741,1,0,0,0,9741,9743,1,0,0,0,9742,9740,1,0,0,0,9743,9746,5,678,0,0,9744,9746,5,671,0,0,9745,9734,1,0,0,0,9745,9735,1,0,0,0,9745,9736,1,0,0,0,9745,9744,1,0,0,0,9746,1255,1,0,0,0,9747,9748,5,487,0,0,9748,9751,3,1254,627,0,9749,9751,1,0,0,0,9750,9747,1,0,0,0,9750,9749,1,0,0,0,9751,1257,1,0,0,0,9752,9758,3,1250,625,0,9753,9754,5,12,0,0,9754,9758,3,1250,625,0,9755,9756,5,13,0,0,9756,9758,3,1250,625,0,9757,9752,1,0,0,0,9757,9753,1,0,0,0,9757,9755,1,0,0,0,9758,1259,1,0,0,0,9759,9763,3,1270,635,0,9760,9763,5,52,0,0,9761,9763,5,89,0,0,9762,9759,1,0,0,0,9762,9760,1,0,0,0,9762,9761,1,0,0,0,9763,1261,1,0,0,0,9764,9769,3,1260,630,0,9765,9766,5,6,0,0,9766,9768,3,1260,630,0,9767,9765,1,0,0,0,9768,9771,1,0,0,0,9769,9767,1,0,0,0,9769,9770,1,0,0,0,9770,1263,1,0,0,0,9771,9769,1,0,0,0,9772,9779,3,1274,637,0,9773,9779,3,1278,639,0,9774,9779,3,1280,640,0,9775,9779,3,1490,745,0,9776,9779,5,119,0,0,9777,9779,5,126,0,0,9778,9772,1,0,0,0,9778,9773,1,0,0,0,9778,9774,1,0,0,0,9778,9775,1,0,0,0,9778,9776,1,0,0,0,9778,9777,1,0,0,0,9779,1265,1,0,0,0,9780,9785,3,1274,637,0,9781,9785,3,1278,639,0,9782,9785,3,1280,640,0,9783,9785,3,1490,745,0,9784,9780,1,0,0,0,9784,9781,1,0,0,0,9784,9782,1,0,0,0,9784,9783,1,0,0,0,9785,1267,1,0,0,0,9786,9791,3,1274,637,0,9787,9791,3,1278,639,0,9788,9791,3,1490,745,0,9789,9791,3,1282,641,0,9790,9786,1,0,0,0,9790,9787,1,0,0,0,9790,9788,1,0,0,0,9790,9789,1,0,0,0,9791,1269,1,0,0,0,9792,9797,3,1274,637,0,9793,9797,3,1278,639,0,9794,9797,3,1280,640,0,9795,9797,3,1282,641,0,9796,9792,1,0,0,0,9796,9793,1,0,0,0,9796,9794,1,0,0,0,9796,9795,1,0,0,0,9797,1271,1,0,0,0,9798,9805,3,1274,637,0,9799,9805,3,1490,745,0,9800,9805,3,1278,639,0,9801,9805,3,1280,640,0,9802,9805,3,1282,641,0,9803,9805,3,1284,642,0,9804,9798,1,0,0,0,9804,9799,1,0,0,0,9804,9800,1,0,0,0,9804,9801,1,0,0,0,9804,9802,1,0,0,0,9804,9803,1,0,0,0,9805,1273,1,0,0,0,9806,9807,5,636,0,0,9807,9814,3,1256,628,0,9808,9814,5,637,0,0,9809,9814,5,641,0,0,9810,9814,3,1084,542,0,9811,9814,3,1276,638,0,9812,9814,3,1490,745,0,9813,9806,1,0,0,0,9813,9808,1,0,0,0,9813,9809,1,0,0,0,9813,9810,1,0,0,0,9813,9811,1,0,0,0,9813,9812,1,0,0,0,9814,1275,1,0,0,0,9815,9816,5,662,0,0,9816,1277,1,0,0,0,9817,9818,7,59,0,0,9818,1279,1,0,0,0,9819,9872,5,380,0,0,9820,9872,5,381,0,0,9821,9872,3,1010,505,0,9822,9872,5,383,0,0,9823,9872,5,384,0,0,9824,9872,3,1018,509,0,9825,9872,5,386,0,0,9826,9872,5,387,0,0,9827,9872,5,388,0,0,9828,9872,5,389,0,0,9829,9872,5,390,0,0,9830,9872,5,391,0,0,9831,9872,5,392,0,0,9832,9872,5,470,0,0,9833,9872,5,393,0,0,9834,9872,5,394,0,0,9835,9872,5,395,0,0,9836,9872,5,396,0,0,9837,9872,5,397,0,0,9838,9872,5,398,0,0,9839,9872,5,399,0,0,9840,9872,5,400,0,0,9841,9872,5,489,0,0,9842,9872,5,401,0,0,9843,9872,3,1006,503,0,9844,9872,5,453,0,0,9845,9872,5,403,0,0,9846,9872,5,404,0,0,9847,9872,5,405,0,0,9848,9872,5,406,0,0,9849,9872,5,407,0,0,9850,9872,5,408,0,0,9851,9872,5,409,0,0,9852,9872,5,410,0,0,9853,9872,5,411,0,0,9854,9872,5,412,0,0,9855,9872,5,413,0,0,9856,9872,5,414,0,0,9857,9872,5,415,0,0,9858,9872,5,416,0,0,9859,9872,5,417,0,0,9860,9872,5,425,0,0,9861,9872,5,426,0,0,9862,9872,5,427,0,0,9863,9872,5,428,0,0,9864,9872,5,476,0,0,9865,9872,5,429,0,0,9866,9872,5,430,0,0,9867,9872,5,431,0,0,9868,9872,5,432,0,0,9869,9872,5,474,0,0,9870,9872,3,1286,643,0,9871,9819,1,0,0,0,9871,9820,1,0,0,0,9871,9821,1,0,0,0,9871,9822,1,0,0,0,9871,9823,1,0,0,0,9871,9824,1,0,0,0,9871,9825,1,0,0,0,9871,9826,1,0,0,0,9871,9827,1,0,0,0,9871,9828,1,0,0,0,9871,9829,1,0,0,0,9871,9830,1,0,0,0,9871,9831,1,0,0,0,9871,9832,1,0,0,0,9871,9833,1,0,0,0,9871,9834,1,0,0,0,9871,9835,1,0,0,0,9871,9836,1,0,0,0,9871,9837,1,0,0,0,9871,9838,1,0,0,0,9871,9839,1,0,0,0,9871,9840,1,0,0,0,9871,9841,1,0,0,0,9871,9842,1,0,0,0,9871,9843,1,0,0,0,9871,9844,1,0,0,0,9871,9845,1,0,0,0,9871,9846,1,0,0,0,9871,9847,1,0,0,0,9871,9848,1,0,0,0,9871,9849,1,0,0,0,9871,9850,1,0,0,0,9871,9851,1,0,0,0,9871,9852,1,0,0,0,9871,9853,1,0,0,0,9871,9854,1,0,0,0,9871,9855,1,0,0,0,9871,9856,1,0,0,0,9871,9857,1,0,0,0,9871,9858,1,0,0,0,9871,9859,1,0,0,0,9871,9860,1,0,0,0,9871,9861,1,0,0,0,9871,9862,1,0,0,0,9871,9863,1,0,0,0,9871,9864,1,0,0,0,9871,9865,1,0,0,0,9871,9866,1,0,0,0,9871,9867,1,0,0,0,9871,9868,1,0,0,0,9871,9869,1,0,0,0,9871,9870,1,0,0,0,9872,1281,1,0,0,0,9873,9874,7,60,0,0,9874,1283,1,0,0,0,9875,9876,7,61,0,0,9876,1285,1,0,0,0,9877,9878,7,62,0,0,9878,1287,1,0,0,0,9879,9880,3,1290,645,0,9880,9881,3,1300,650,0,9881,9882,3,1298,649,0,9882,1289,1,0,0,0,9883,9885,3,1292,646,0,9884,9883,1,0,0,0,9885,9888,1,0,0,0,9886,9884,1,0,0,0,9886,9887,1,0,0,0,9887,1291,1,0,0,0,9888,9886,1,0,0,0,9889,9890,3,1294,647,0,9890,9891,5,272,0,0,9891,9892,5,490,0,0,9892,9910,1,0,0,0,9893,9894,3,1294,647,0,9894,9895,5,491,0,0,9895,9896,3,1296,648,0,9896,9910,1,0,0,0,9897,9898,3,1294,647,0,9898,9899,5,492,0,0,9899,9900,5,493,0,0,9900,9910,1,0,0,0,9901,9902,3,1294,647,0,9902,9903,5,492,0,0,9903,9904,5,494,0,0,9904,9910,1,0,0,0,9905,9906,3,1294,647,0,9906,9907,5,492,0,0,9907,9908,5,495,0,0,9908,9910,1,0,0,0,9909,9889,1,0,0,0,9909,9893,1,0,0,0,9909,9897,1,0,0,0,9909,9901,1,0,0,0,9909,9905,1,0,0,0,9910,1293,1,0,0,0,9911,9912,5,29,0,0,9912,1295,1,0,0,0,9913,9918,3,1252,626,0,9914,9918,3,1284,642,0,9915,9918,3,1490,745,0,9916,9918,3,1278,639,0,9917,9913,1,0,0,0,9917,9914,1,0,0,0,9917,9915,1,0,0,0,9917,9916,1,0,0,0,9918,1297,1,0,0,0,9919,9922,1,0,0,0,9920,9922,5,7,0,0,9921,9919,1,0,0,0,9921,9920,1,0,0,0,9922,1299,1,0,0,0,9923,9924,3,1302,651,0,9924,9925,5,146,0,0,9925,9926,3,1344,672,0,9926,9927,3,1470,735,0,9927,9928,5,454,0,0,9928,9929,3,1484,742,0,9929,1301,1,0,0,0,9930,9935,3,1480,740,0,9931,9933,3,1304,652,0,9932,9934,3,1306,653,0,9933,9932,1,0,0,0,9933,9934,1,0,0,0,9934,9936,1,0,0,0,9935,9931,1,0,0,0,9935,9936,1,0,0,0,9936,1303,1,0,0,0,9937,9938,5,178,0,0,9938,1305,1,0,0,0,9939,9941,3,1310,655,0,9940,9939,1,0,0,0,9941,9942,1,0,0,0,9942,9940,1,0,0,0,9942,9943,1,0,0,0,9943,1307,1,0,0,0,9944,9945,5,18,0,0,9945,9946,3,1488,744,0,9946,9947,5,19,0,0,9947,1309,1,0,0,0,9948,9952,3,1312,656,0,9949,9952,5,178,0,0,9950,9952,3,1308,654,0,9951,9948,1,0,0,0,9951,9949,1,0,0,0,9951,9950,1,0,0,0,9952,1311,1,0,0,0,9953,9969,3,1328,664,0,9954,9955,5,496,0,0,9955,9956,5,62,0,0,9956,9970,3,1326,663,0,9957,9958,3,1330,665,0,9958,9959,3,1332,666,0,9959,9960,3,1334,667,0,9960,9961,3,1336,668,0,9961,9962,3,1338,669,0,9962,9970,1,0,0,0,9963,9964,3,1314,657,0,9964,9965,5,172,0,0,9965,9966,3,1318,659,0,9966,9967,3,1324,662,0,9967,9968,3,1316,658,0,9968,9970,1,0,0,0,9969,9954,1,0,0,0,9969,9957,1,0,0,0,9969,9963,1,0,0,0,9970,9971,1,0,0,0,9971,9972,5,7,0,0,9972,1313,1,0,0,0,9973,9978,1,0,0,0,9974,9975,5,262,0,0,9975,9978,5,317,0,0,9976,9978,5,317,0,0,9977,9973,1,0,0,0,9977,9974,1,0,0,0,9977,9976,1,0,0,0,9978,1315,1,0,0,0,9979,9980,3,858,429,0,9980,1317,1,0,0,0,9981,9987,1,0,0,0,9982,9983,5,2,0,0,9983,9984,3,1320,660,0,9984,9985,5,3,0,0,9985,9987,1,0,0,0,9986,9981,1,0,0,0,9986,9982,1,0,0,0,9987,1319,1,0,0,0,9988,9993,3,1322,661,0,9989,9990,5,6,0,0,9990,9992,3,1322,661,0,9991,9989,1,0,0,0,9992,9995,1,0,0,0,9993,9991,1,0,0,0,9993,9994,1,0,0,0,9994,1321,1,0,0,0,9995,9993,1,0,0,0,9996,9997,3,1328,664,0,9997,9998,3,1332,666,0,9998,1323,1,0,0,0,9999,1e4,7,63,0,0,1e4,1325,1,0,0,0,10001,10004,5,28,0,0,10002,10004,3,1264,632,0,10003,10001,1,0,0,0,10003,10002,1,0,0,0,10004,1327,1,0,0,0,10005,10006,3,1488,744,0,10006,1329,1,0,0,0,10007,10010,1,0,0,0,10008,10010,5,497,0,0,10009,10007,1,0,0,0,10009,10008,1,0,0,0,10010,1331,1,0,0,0,10011,10012,3,996,498,0,10012,1333,1,0,0,0,10013,10017,1,0,0,0,10014,10015,5,43,0,0,10015,10017,3,470,235,0,10016,10013,1,0,0,0,10016,10014,1,0,0,0,10017,1335,1,0,0,0,10018,10022,1,0,0,0,10019,10020,5,77,0,0,10020,10022,5,78,0,0,10021,10018,1,0,0,0,10021,10019,1,0,0,0,10022,1337,1,0,0,0,10023,10028,1,0,0,0,10024,10025,3,1340,670,0,10025,10026,3,1492,746,0,10026,10028,1,0,0,0,10027,10023,1,0,0,0,10027,10024,1,0,0,0,10028,1339,1,0,0,0,10029,10032,3,1342,671,0,10030,10032,5,53,0,0,10031,10029,1,0,0,0,10031,10030,1,0,0,0,10032,1341,1,0,0,0,10033,10034,7,64,0,0,10034,1343,1,0,0,0,10035,10037,3,1346,673,0,10036,10035,1,0,0,0,10037,10040,1,0,0,0,10038,10036,1,0,0,0,10038,10039,1,0,0,0,10039,1345,1,0,0,0,10040,10038,1,0,0,0,10041,10042,3,1300,650,0,10042,10043,5,7,0,0,10043,10069,1,0,0,0,10044,10069,3,1412,706,0,10045,10069,3,1416,708,0,10046,10069,3,1354,677,0,10047,10069,3,1370,685,0,10048,10069,3,1376,688,0,10049,10069,3,1386,693,0,10050,10069,3,1388,694,0,10051,10069,3,1390,695,0,10052,10069,3,1404,702,0,10053,10069,3,1408,704,0,10054,10069,3,1426,713,0,10055,10069,3,1432,716,0,10056,10069,3,1434,717,0,10057,10069,3,1348,674,0,10058,10069,3,1350,675,0,10059,10069,3,1356,678,0,10060,10069,3,1442,721,0,10061,10069,3,1446,723,0,10062,10069,3,1454,727,0,10063,10069,3,1456,728,0,10064,10069,3,1458,729,0,10065,10069,3,1460,730,0,10066,10069,3,1462,731,0,10067,10069,3,1466,733,0,10068,10041,1,0,0,0,10068,10044,1,0,0,0,10068,10045,1,0,0,0,10068,10046,1,0,0,0,10068,10047,1,0,0,0,10068,10048,1,0,0,0,10068,10049,1,0,0,0,10068,10050,1,0,0,0,10068,10051,1,0,0,0,10068,10052,1,0,0,0,10068,10053,1,0,0,0,10068,10054,1,0,0,0,10068,10055,1,0,0,0,10068,10056,1,0,0,0,10068,10057,1,0,0,0,10068,10058,1,0,0,0,10068,10059,1,0,0,0,10068,10060,1,0,0,0,10068,10061,1,0,0,0,10068,10062,1,0,0,0,10068,10063,1,0,0,0,10068,10064,1,0,0,0,10068,10065,1,0,0,0,10068,10066,1,0,0,0,10068,10067,1,0,0,0,10069,1347,1,0,0,0,10070,10071,5,498,0,0,10071,10072,3,1496,748,0,10072,10073,5,7,0,0,10073,1349,1,0,0,0,10074,10075,5,433,0,0,10075,10076,3,1488,744,0,10076,10077,5,2,0,0,10077,10078,3,1352,676,0,10078,10079,5,3,0,0,10079,10080,5,7,0,0,10080,10089,1,0,0,0,10081,10082,5,57,0,0,10082,10083,3,1488,744,0,10083,10084,5,2,0,0,10084,10085,3,1352,676,0,10085,10086,5,3,0,0,10086,10087,5,7,0,0,10087,10089,1,0,0,0,10088,10074,1,0,0,0,10088,10081,1,0,0,0,10089,1351,1,0,0,0,10090,10093,1,0,0,0,10091,10093,3,1156,578,0,10092,10090,1,0,0,0,10092,10091,1,0,0,0,10093,1353,1,0,0,0,10094,10095,3,1368,684,0,10095,10096,3,1342,671,0,10096,10097,3,1492,746,0,10097,10098,5,7,0,0,10098,1355,1,0,0,0,10099,10100,5,499,0,0,10100,10101,3,1358,679,0,10101,10102,5,500,0,0,10102,10103,3,1360,680,0,10103,10104,5,7,0,0,10104,1357,1,0,0,0,10105,10109,1,0,0,0,10106,10109,5,434,0,0,10107,10109,5,501,0,0,10108,10105,1,0,0,0,10108,10106,1,0,0,0,10108,10107,1,0,0,0,10109,1359,1,0,0,0,10110,10115,3,1362,681,0,10111,10112,5,6,0,0,10112,10114,3,1362,681,0,10113,10111,1,0,0,0,10114,10117,1,0,0,0,10115,10113,1,0,0,0,10115,10116,1,0,0,0,10116,1361,1,0,0,0,10117,10115,1,0,0,0,10118,10119,3,1366,683,0,10119,10120,3,1342,671,0,10120,10121,3,1364,682,0,10121,1363,1,0,0,0,10122,10123,3,1264,632,0,10123,1365,1,0,0,0,10124,10125,3,1368,684,0,10125,1367,1,0,0,0,10126,10129,3,470,235,0,10127,10129,5,28,0,0,10128,10126,1,0,0,0,10128,10127,1,0,0,0,10129,10136,1,0,0,0,10130,10131,5,4,0,0,10131,10132,3,1498,749,0,10132,10133,5,5,0,0,10133,10135,1,0,0,0,10134,10130,1,0,0,0,10135,10138,1,0,0,0,10136,10134,1,0,0,0,10136,10137,1,0,0,0,10137,1369,1,0,0,0,10138,10136,1,0,0,0,10139,10140,5,220,0,0,10140,10141,3,1494,747,0,10141,10142,5,93,0,0,10142,10143,3,1344,672,0,10143,10144,3,1372,686,0,10144,10145,3,1374,687,0,10145,10146,5,454,0,0,10146,10147,5,220,0,0,10147,10148,5,7,0,0,10148,1371,1,0,0,0,10149,10150,5,502,0,0,10150,10151,3,1038,519,0,10151,10152,5,93,0,0,10152,10153,3,1344,672,0,10153,10155,1,0,0,0,10154,10149,1,0,0,0,10155,10158,1,0,0,0,10156,10154,1,0,0,0,10156,10157,1,0,0,0,10157,1373,1,0,0,0,10158,10156,1,0,0,0,10159,10163,1,0,0,0,10160,10161,5,58,0,0,10161,10163,3,1344,672,0,10162,10159,1,0,0,0,10162,10160,1,0,0,0,10163,1375,1,0,0,0,10164,10165,5,40,0,0,10165,10166,3,1378,689,0,10166,10167,3,1380,690,0,10167,10168,3,1384,692,0,10168,10169,5,454,0,0,10169,10170,5,40,0,0,10170,10171,5,7,0,0,10171,1377,1,0,0,0,10172,10175,1,0,0,0,10173,10175,3,1492,746,0,10174,10172,1,0,0,0,10174,10173,1,0,0,0,10175,1379,1,0,0,0,10176,10178,3,1382,691,0,10177,10176,1,0,0,0,10178,10179,1,0,0,0,10179,10177,1,0,0,0,10179,10180,1,0,0,0,10180,1381,1,0,0,0,10181,10182,5,102,0,0,10182,10183,3,1156,578,0,10183,10184,5,93,0,0,10184,10185,3,1344,672,0,10185,1383,1,0,0,0,10186,10190,1,0,0,0,10187,10188,5,58,0,0,10188,10190,3,1344,672,0,10189,10186,1,0,0,0,10189,10187,1,0,0,0,10190,1385,1,0,0,0,10191,10192,3,1482,741,0,10192,10193,3,1430,715,0,10193,1387,1,0,0,0,10194,10195,3,1482,741,0,10195,10196,5,503,0,0,10196,10197,3,1500,750,0,10197,10198,3,1430,715,0,10198,1389,1,0,0,0,10199,10200,3,1482,741,0,10200,10201,5,62,0,0,10201,10202,3,1392,696,0,10202,10203,3,1430,715,0,10203,1391,1,0,0,0,10204,10205,3,1402,701,0,10205,10221,5,68,0,0,10206,10207,3,854,427,0,10207,10208,3,1396,698,0,10208,10222,1,0,0,0,10209,10222,3,858,429,0,10210,10222,3,782,391,0,10211,10212,5,202,0,0,10212,10213,3,1038,519,0,10213,10214,3,1394,697,0,10214,10222,1,0,0,0,10215,10216,3,1398,699,0,10216,10217,3,1038,519,0,10217,10218,5,24,0,0,10218,10219,3,1038,519,0,10219,10220,3,1400,700,0,10220,10222,1,0,0,0,10221,10206,1,0,0,0,10221,10209,1,0,0,0,10221,10210,1,0,0,0,10221,10211,1,0,0,0,10221,10215,1,0,0,0,10222,1393,1,0,0,0,10223,10227,1,0,0,0,10224,10225,5,100,0,0,10225,10227,3,1156,578,0,10226,10223,1,0,0,0,10226,10224,1,0,0,0,10227,1395,1,0,0,0,10228,10241,1,0,0,0,10229,10230,5,2,0,0,10230,10235,3,1038,519,0,10231,10232,5,6,0,0,10232,10234,3,1038,519,0,10233,10231,1,0,0,0,10234,10237,1,0,0,0,10235,10233,1,0,0,0,10235,10236,1,0,0,0,10236,10238,1,0,0,0,10237,10235,1,0,0,0,10238,10239,5,3,0,0,10239,10241,1,0,0,0,10240,10228,1,0,0,0,10240,10229,1,0,0,0,10241,1397,1,0,0,0,10242,10245,1,0,0,0,10243,10245,5,504,0,0,10244,10242,1,0,0,0,10244,10243,1,0,0,0,10245,1399,1,0,0,0,10246,10250,1,0,0,0,10247,10248,5,147,0,0,10248,10250,3,1038,519,0,10249,10246,1,0,0,0,10249,10247,1,0,0,0,10250,1401,1,0,0,0,10251,10252,3,468,234,0,10252,1403,1,0,0,0,10253,10254,3,1482,741,0,10254,10255,5,505,0,0,10255,10256,3,1402,701,0,10256,10257,3,1406,703,0,10257,10258,5,68,0,0,10258,10259,5,35,0,0,10259,10260,3,1038,519,0,10260,10261,3,1430,715,0,10261,1405,1,0,0,0,10262,10266,1,0,0,0,10263,10264,5,506,0,0,10264,10266,3,1250,625,0,10265,10262,1,0,0,0,10265,10263,1,0,0,0,10266,1407,1,0,0,0,10267,10268,3,1410,705,0,10268,10269,3,1484,742,0,10269,10270,3,1486,743,0,10270,10271,5,7,0,0,10271,1409,1,0,0,0,10272,10273,7,65,0,0,10273,1411,1,0,0,0,10274,10286,5,508,0,0,10275,10276,5,261,0,0,10276,10287,3,1492,746,0,10277,10283,5,509,0,0,10278,10279,5,202,0,0,10279,10280,3,1038,519,0,10280,10281,3,1394,697,0,10281,10284,1,0,0,0,10282,10284,3,858,429,0,10283,10278,1,0,0,0,10283,10282,1,0,0,0,10284,10287,1,0,0,0,10285,10287,3,1414,707,0,10286,10275,1,0,0,0,10286,10277,1,0,0,0,10286,10285,1,0,0,0,10287,10288,1,0,0,0,10288,10289,5,7,0,0,10289,1413,1,0,0,0,10290,10293,1,0,0,0,10291,10293,3,1492,746,0,10292,10290,1,0,0,0,10292,10291,1,0,0,0,10293,1415,1,0,0,0,10294,10295,5,510,0,0,10295,10296,3,1418,709,0,10296,10297,3,1252,626,0,10297,10298,3,1420,710,0,10298,10299,3,1422,711,0,10299,10300,5,7,0,0,10300,10321,1,0,0,0,10301,10302,5,510,0,0,10302,10303,3,1418,709,0,10303,10304,3,1274,637,0,10304,10305,3,1422,711,0,10305,10306,5,7,0,0,10306,10321,1,0,0,0,10307,10308,5,510,0,0,10308,10309,3,1418,709,0,10309,10310,5,511,0,0,10310,10311,3,1252,626,0,10311,10312,3,1422,711,0,10312,10313,5,7,0,0,10313,10321,1,0,0,0,10314,10315,5,510,0,0,10315,10316,3,1418,709,0,10316,10317,3,1422,711,0,10317,10318,5,7,0,0,10318,10321,1,0,0,0,10319,10321,5,510,0,0,10320,10294,1,0,0,0,10320,10301,1,0,0,0,10320,10307,1,0,0,0,10320,10314,1,0,0,0,10320,10319,1,0,0,0,10321,1417,1,0,0,0,10322,10331,1,0,0,0,10323,10331,1,0,0,0,10324,10331,5,512,0,0,10325,10331,5,513,0,0,10326,10331,5,514,0,0,10327,10331,5,515,0,0,10328,10331,5,516,0,0,10329,10331,5,517,0,0,10330,10322,1,0,0,0,10330,10323,1,0,0,0,10330,10324,1,0,0,0,10330,10325,1,0,0,0,10330,10326,1,0,0,0,10330,10327,1,0,0,0,10330,10328,1,0,0,0,10330,10329,1,0,0,0,10331,1419,1,0,0,0,10332,10340,1,0,0,0,10333,10334,5,6,0,0,10334,10336,3,1038,519,0,10335,10333,1,0,0,0,10336,10337,1,0,0,0,10337,10335,1,0,0,0,10337,10338,1,0,0,0,10338,10340,1,0,0,0,10339,10332,1,0,0,0,10339,10335,1,0,0,0,10340,1421,1,0,0,0,10341,10352,1,0,0,0,10342,10343,5,100,0,0,10343,10348,3,1424,712,0,10344,10345,5,6,0,0,10345,10347,3,1424,712,0,10346,10344,1,0,0,0,10347,10350,1,0,0,0,10348,10346,1,0,0,0,10348,10349,1,0,0,0,10349,10352,1,0,0,0,10350,10348,1,0,0,0,10351,10341,1,0,0,0,10351,10342,1,0,0,0,10352,1423,1,0,0,0,10353,10354,3,1274,637,0,10354,10355,5,10,0,0,10355,10356,3,1038,519,0,10356,1425,1,0,0,0,10357,10358,5,518,0,0,10358,10359,3,1492,746,0,10359,10360,3,1428,714,0,10360,10361,5,7,0,0,10361,1427,1,0,0,0,10362,10366,1,0,0,0,10363,10364,5,6,0,0,10364,10366,3,1492,746,0,10365,10362,1,0,0,0,10365,10363,1,0,0,0,10366,1429,1,0,0,0,10367,10368,5,519,0,0,10368,10369,3,1344,672,0,10369,10370,5,454,0,0,10370,10371,5,519,0,0,10371,10372,3,1484,742,0,10372,10373,5,7,0,0,10373,1431,1,0,0,0,10374,10375,3,1502,751,0,10375,10376,5,7,0,0,10376,1433,1,0,0,0,10377,10378,5,202,0,0,10378,10386,3,1038,519,0,10379,10380,3,1440,720,0,10380,10381,3,1436,718,0,10381,10387,1,0,0,0,10382,10383,3,1436,718,0,10383,10384,3,1440,720,0,10384,10387,1,0,0,0,10385,10387,1,0,0,0,10386,10379,1,0,0,0,10386,10382,1,0,0,0,10386,10385,1,0,0,0,10387,10388,1,0,0,0,10388,10389,5,7,0,0,10389,1435,1,0,0,0,10390,10394,1,0,0,0,10391,10392,5,100,0,0,10392,10394,3,1438,719,0,10393,10390,1,0,0,0,10393,10391,1,0,0,0,10394,1437,1,0,0,0,10395,10400,3,1038,519,0,10396,10397,5,6,0,0,10397,10399,3,1038,519,0,10398,10396,1,0,0,0,10399,10402,1,0,0,0,10400,10398,1,0,0,0,10400,10401,1,0,0,0,10401,1439,1,0,0,0,10402,10400,1,0,0,0,10403,10410,1,0,0,0,10404,10406,5,71,0,0,10405,10407,5,339,0,0,10406,10405,1,0,0,0,10406,10407,1,0,0,0,10407,10408,1,0,0,0,10408,10410,3,1448,724,0,10409,10403,1,0,0,0,10409,10404,1,0,0,0,10410,1441,1,0,0,0,10411,10440,5,520,0,0,10412,10414,3,1468,734,0,10413,10415,5,262,0,0,10414,10413,1,0,0,0,10414,10415,1,0,0,0,10415,10416,1,0,0,0,10416,10417,5,317,0,0,10417,10424,5,62,0,0,10418,10425,3,858,429,0,10419,10420,5,202,0,0,10420,10421,3,1492,746,0,10421,10422,5,100,0,0,10422,10423,3,1156,578,0,10423,10425,1,0,0,0,10424,10418,1,0,0,0,10424,10419,1,0,0,0,10425,10441,1,0,0,0,10426,10438,3,1264,632,0,10427,10428,5,2,0,0,10428,10433,3,1444,722,0,10429,10430,5,6,0,0,10430,10432,3,1444,722,0,10431,10429,1,0,0,0,10432,10435,1,0,0,0,10433,10431,1,0,0,0,10433,10434,1,0,0,0,10434,10436,1,0,0,0,10435,10433,1,0,0,0,10436,10437,5,3,0,0,10437,10439,1,0,0,0,10438,10427,1,0,0,0,10438,10439,1,0,0,0,10439,10441,1,0,0,0,10440,10412,1,0,0,0,10440,10426,1,0,0,0,10441,10442,1,0,0,0,10442,10443,5,7,0,0,10443,1443,1,0,0,0,10444,10445,3,1264,632,0,10445,10446,5,20,0,0,10446,10447,3,1038,519,0,10447,10450,1,0,0,0,10448,10450,3,1038,519,0,10449,10444,1,0,0,0,10449,10448,1,0,0,0,10450,1445,1,0,0,0,10451,10452,5,61,0,0,10452,10453,3,1452,726,0,10453,10454,3,1450,725,0,10454,10455,3,1468,734,0,10455,10456,5,71,0,0,10456,10457,3,1448,724,0,10457,10458,5,7,0,0,10458,1447,1,0,0,0,10459,10460,3,1156,578,0,10460,1449,1,0,0,0,10461,10465,1,0,0,0,10462,10465,5,64,0,0,10463,10465,5,68,0,0,10464,10461,1,0,0,0,10464,10462,1,0,0,0,10464,10463,1,0,0,0,10465,1451,1,0,0,0,10466,10484,1,0,0,0,10467,10484,1,0,0,0,10468,10484,5,261,0,0,10469,10484,5,286,0,0,10470,10484,5,207,0,0,10471,10484,5,240,0,0,10472,10473,5,130,0,0,10473,10484,3,1038,519,0,10474,10475,5,300,0,0,10475,10484,3,1038,519,0,10476,10484,3,1038,519,0,10477,10484,5,30,0,0,10478,10481,7,66,0,0,10479,10482,3,1038,519,0,10480,10482,5,30,0,0,10481,10479,1,0,0,0,10481,10480,1,0,0,0,10481,10482,1,0,0,0,10482,10484,1,0,0,0,10483,10466,1,0,0,0,10483,10467,1,0,0,0,10483,10468,1,0,0,0,10483,10469,1,0,0,0,10483,10470,1,0,0,0,10483,10471,1,0,0,0,10483,10472,1,0,0,0,10483,10474,1,0,0,0,10483,10476,1,0,0,0,10483,10477,1,0,0,0,10483,10478,1,0,0,0,10484,1453,1,0,0,0,10485,10486,5,258,0,0,10486,10487,3,1452,726,0,10487,10488,3,1468,734,0,10488,10489,5,7,0,0,10489,1455,1,0,0,0,10490,10491,5,157,0,0,10491,10492,3,1468,734,0,10492,10493,5,7,0,0,10493,1457,1,0,0,0,10494,10495,5,78,0,0,10495,10496,5,7,0,0,10496,1459,1,0,0,0,10497,10498,5,161,0,0,10498,10499,3,1464,732,0,10499,10500,5,7,0,0,10500,1461,1,0,0,0,10501,10502,5,312,0,0,10502,10503,3,1464,732,0,10503,10504,5,7,0,0,10504,1463,1,0,0,0,10505,10507,5,33,0,0,10506,10508,5,262,0,0,10507,10506,1,0,0,0,10507,10508,1,0,0,0,10508,10509,1,0,0,0,10509,10512,5,153,0,0,10510,10512,1,0,0,0,10511,10505,1,0,0,0,10511,10510,1,0,0,0,10512,1465,1,0,0,0,10513,10514,5,326,0,0,10514,10515,3,470,235,0,10515,10516,5,94,0,0,10516,10517,5,53,0,0,10517,10518,5,7,0,0,10518,10526,1,0,0,0,10519,10522,5,306,0,0,10520,10523,3,470,235,0,10521,10523,5,30,0,0,10522,10520,1,0,0,0,10522,10521,1,0,0,0,10523,10524,1,0,0,0,10524,10526,5,7,0,0,10525,10513,1,0,0,0,10525,10519,1,0,0,0,10526,1467,1,0,0,0,10527,10530,3,1264,632,0,10528,10530,5,28,0,0,10529,10527,1,0,0,0,10529,10528,1,0,0,0,10530,1469,1,0,0,0,10531,10535,1,0,0,0,10532,10533,5,517,0,0,10533,10535,3,1472,736,0,10534,10531,1,0,0,0,10534,10532,1,0,0,0,10535,1471,1,0,0,0,10536,10538,3,1474,737,0,10537,10536,1,0,0,0,10538,10539,1,0,0,0,10539,10537,1,0,0,0,10539,10540,1,0,0,0,10540,1473,1,0,0,0,10541,10542,5,102,0,0,10542,10543,3,1476,738,0,10543,10544,5,93,0,0,10544,10545,3,1344,672,0,10545,1475,1,0,0,0,10546,10551,3,1478,739,0,10547,10548,5,82,0,0,10548,10550,3,1478,739,0,10549,10547,1,0,0,0,10550,10553,1,0,0,0,10551,10549,1,0,0,0,10551,10552,1,0,0,0,10552,1477,1,0,0,0,10553,10551,1,0,0,0,10554,10558,3,1488,744,0,10555,10556,5,511,0,0,10556,10558,3,1252,626,0,10557,10554,1,0,0,0,10557,10555,1,0,0,0,10558,1479,1,0,0,0,10559,10562,1,0,0,0,10560,10562,3,1308,654,0,10561,10559,1,0,0,0,10561,10560,1,0,0,0,10562,1481,1,0,0,0,10563,10566,1,0,0,0,10564,10566,3,1308,654,0,10565,10563,1,0,0,0,10565,10564,1,0,0,0,10566,1483,1,0,0,0,10567,10570,1,0,0,0,10568,10570,3,1488,744,0,10569,10567,1,0,0,0,10569,10568,1,0,0,0,10570,1485,1,0,0,0,10571,10572,5,102,0,0,10572,10575,3,1496,748,0,10573,10575,1,0,0,0,10574,10571,1,0,0,0,10574,10573,1,0,0,0,10575,1487,1,0,0,0,10576,10579,3,1264,632,0,10577,10579,3,1490,745,0,10578,10576,1,0,0,0,10578,10577,1,0,0,0,10579,1489,1,0,0,0,10580,10581,7,67,0,0,10581,1491,1,0,0,0,10582,10584,3,1202,601,0,10583,10585,3,878,439,0,10584,10583,1,0,0,0,10584,10585,1,0,0,0,10585,10586,1,0,0,0,10586,10587,3,936,468,0,10587,10588,3,974,487,0,10588,10589,3,918,459,0,10589,10590,3,924,462,0,10590,10591,3,1116,558,0,10591,1493,1,0,0,0,10592,10593,3,1492,746,0,10593,1495,1,0,0,0,10594,10595,3,1492,746,0,10595,1497,1,0,0,0,10596,10597,3,1038,519,0,10597,1499,1,0,0,0,10598,10599,3,1038,519,0,10599,1501,1,0,0,0,10600,10601,3,6,3,0,10601,10602,3,1504,752,0,10602,1503,1,0,0,0,10603,10605,5,71,0,0,10604,10606,5,339,0,0,10605,10604,1,0,0,0,10605,10606,1,0,0,0,10606,10607,1,0,0,0,10607,10610,3,1448,724,0,10608,10610,1,0,0,0,10609,10603,1,0,0,0,10609,10608,1,0,0,0,10610,1505,1,0,0,0,10611,10612,7,68,0,0,10612,1507,1,0,0,0,792,1509,1517,1523,1647,1651,1658,1663,1669,1675,1691,1699,1704,1722,1727,1737,1748,1755,1761,1766,1775,1779,1791,1823,1830,1838,1843,1850,1856,1873,1878,1882,1895,1899,1904,1909,1921,1930,1943,1948,1959,1970,1975,1986,1997,2007,2022,2034,2039,2046,2057,2208,2217,2237,2304,2311,2316,2321,2326,2334,2343,2350,2360,2362,2367,2373,2379,2381,2409,2419,2432,2444,2458,2463,2467,2473,2487,2493,2500,2505,2512,2549,2552,2557,2564,2579,2585,2593,2626,2636,2640,2647,2654,2662,2668,2672,2682,2689,2700,2720,2734,2742,2747,2754,2764,2774,2794,2809,2834,2841,2848,2859,2864,2871,2882,2890,2901,2917,2925,2929,2943,2960,2965,2972,2981,2984,2989,2996,3007,3020,3033,3051,3054,3058,3065,3082,3093,3097,3103,3113,3118,3127,3149,3151,3159,3166,3172,3181,3183,3187,3192,3198,3202,3215,3221,3230,3237,3247,3256,3401,3409,3421,3426,3434,3445,3453,3460,3473,3483,3497,3513,3521,3526,3531,3539,3541,3599,3616,3624,3647,3651,3671,3708,3717,3722,3727,3732,3785,3791,3798,3808,3813,3818,3833,3837,3847,3853,3859,3866,3871,3876,3890,3918,3925,3939,3954,4006,4073,4081,4089,4097,4105,4119,4159,4165,4172,4188,4196,4203,4218,4223,4232,4259,4266,4281,4301,4321,4340,4349,4358,4367,4376,4385,4396,4441,4464,4469,4484,4493,4498,4504,4511,4525,4624,4711,4715,4853,4858,4862,4868,4936,4942,4971,4988,4995,5007,5047,5054,5060,5066,5092,5098,5104,5112,5124,5153,5159,5163,5166,5181,5185,5202,5207,5214,5228,5241,5250,5256,5261,5265,5270,5277,5285,5295,5297,5304,5311,5319,5325,5332,5334,5341,5347,5351,5357,5362,5366,5371,5377,5383,5389,5395,5408,5417,5428,5434,5473,5483,5490,5501,5507,5517,5526,5529,5567,5581,5595,5619,5626,5636,5648,5653,5689,5696,5711,5758,5774,5778,5787,5791,5799,5803,5811,5815,5823,5827,5830,5839,5856,6028,6073,6164,6295,6299,6304,6310,6321,6332,6345,6357,6368,6375,6523,6589,6604,6615,6622,6815,6825,6833,6862,6878,6920,6934,6956,6963,6971,6975,6982,6991,7e3,7009,7014,7055,7060,7072,7076,7081,7086,7090,7095,7111,7119,7124,7138,7141,7145,7150,7160,7171,7182,7192,7197,7235,7243,7247,7328,7332,7356,7361,7365,7368,7372,7382,7394,7401,7411,7416,7420,7427,7437,7441,7460,7466,7477,7484,7489,7502,7508,7537,7544,7556,7559,7571,7586,7592,7601,7617,7620,7631,7636,7640,7644,7649,7652,7658,7662,7664,7667,7674,7677,7684,7692,7695,7704,7709,7721,7734,7745,7748,7752,7758,7761,7776,7789,7796,7808,7810,7825,7829,7839,7848,7850,7860,7862,7864,7873,7883,7888,7893,7898,7901,7915,7919,7926,7941,7945,7949,7952,7965,7969,7974,7982,7988,7999,8006,8012,8016,8018,8022,8028,8037,8043,8045,8047,8054,8058,8067,8071,8081,8088,8110,8115,8120,8125,8134,8138,8141,8146,8159,8165,8173,8176,8183,8188,8209,8218,8223,8229,8234,8241,8246,8252,8254,8258,8265,8269,8272,8279,8284,8287,8294,8298,8307,8313,8321,8323,8330,8335,8338,8361,8367,8378,8383,8388,8395,8398,8402,8409,8426,8442,8445,8452,8456,8461,8471,8478,8487,8490,8495,8500,8508,8510,8516,8529,8531,8537,8543,8546,8555,8573,8580,8584,8588,8604,8611,8619,8623,8630,8643,8659,8665,8671,8678,8683,8689,8696,8704,8712,8717,8721,8727,8731,8735,8738,8744,8749,8765,8768,8770,8782,8784,8788,8794,8799,8807,8811,8820,8828,8834,8837,8846,8851,8858,8868,8894,8905,8907,8909,8917,8940,8948,8958,8972,8982,8986,9e3,9007,9014,9021,9046,9075,9114,9116,9144,9165,9172,9185,9197,9203,9212,9229,9241,9250,9255,9262,9272,9275,9286,9292,9307,9315,9324,9333,9336,9341,9350,9355,9369,9379,9387,9401,9408,9416,9424,9431,9437,9446,9454,9464,9475,9482,9511,9520,9527,9538,9548,9552,9556,9561,9566,9570,9572,9575,9580,9585,9590,9597,9606,9608,9615,9625,9635,9645,9659,9664,9671,9687,9702,9716,9721,9740,9745,9750,9757,9762,9769,9778,9784,9790,9796,9804,9813,9871,9886,9909,9917,9921,9933,9935,9942,9951,9969,9977,9986,9993,10003,10009,10016,10021,10027,10031,10038,10068,10088,10092,10108,10115,10128,10136,10156,10162,10174,10179,10189,10221,10226,10235,10240,10244,10249,10265,10283,10286,10292,10320,10330,10337,10339,10348,10351,10365,10386,10393,10400,10406,10409,10414,10424,10433,10438,10440,10449,10464,10481,10483,10507,10511,10522,10525,10529,10534,10539,10551,10557,10561,10565,10569,10574,10578,10584,10605,10609],Xi.vocabulary=new Ra(Xi.literalNames,Xi.symbolicNames,[]),Xi.decisionsToDFA=Xi._ATN.decisionToState.map(((t,e)=>new ni(t,e))),Xi),nn=class extends ga{constructor(t,e){super(t,e)}EOF(){return this.getToken(cn.EOF,0)}statements(){return this.getRuleContext(0,En)}get ruleIndex(){return cn.RULE_root}accept(t){return t.visitRoot?t.visitRoot(this):t.visitChildren(this)}},hn=class extends ga{constructor(t,e){super(t,e)}plsqlFunction(){return this.getRuleContext(0,oN)}get ruleIndex(){return cn.RULE_plsqlRoot}accept(t){return t.visitPlsqlRoot?t.visitPlsqlRoot(this):t.visitChildren(this)}},En=class t extends ga{constructor(t,e){super(t,e)}statement(){return this.getRuleContext(0,Tn)}SEMI(){return this.getToken(cn.SEMI,0)}statements(){return this.getRuleContext(0,t)}get ruleIndex(){return cn.RULE_statements}accept(t){return t.visitStatements?t.visitStatements(this):t.visitChildren(this)}},Tn=class extends ga{constructor(t,e){super(t,e)}alterEventTriggerStatement(){return this.getRuleContext(0,ZT)}alterCollationStatement(){return this.getRuleContext(0,$A)}alterDatabaseStatement(){return this.getRuleContext(0,qA)}alterDatabaseSetStatement(){return this.getRuleContext(0,jA)}alterDefaultPrivilegesStatement(){return this.getRuleContext(0,tR)}alterDomainStatement(){return this.getRuleContext(0,sS)}alterEnumStatement(){return this.getRuleContext(0,io)}alterExtensionStatement(){return this.getRuleContext(0,WE)}alterExtensionContentsStatement(){return this.getRuleContext(0,XE)}alterForeignDataWrapperStatement(){return this.getRuleContext(0,ZE)}alterForeignServerStatement(){return this.getRuleContext(0,nT)}alterFunctionStatement(){return this.getRuleContext(0,yR)}alterObjectDependsStatement(){return this.getRuleContext(0,TA)}alterObjectSchemaStatement(){return this.getRuleContext(0,oA)}alterOwnerStatement(){return this.getRuleContext(0,IA)}alterOperatorStatement(){return this.getRuleContext(0,RA)}alterTypeStatement(){return this.getRuleContext(0,OA)}alterPolicyStatement(){return this.getRuleContext(0,IT)}alterSequenceStatement(){return this.getRuleContext(0,mE)}alterSystemStatement(){return this.getRuleContext(0,tS)}alterTableStatement(){return this.getRuleContext(0,jn)}alterTablespaceStatement(){return this.getRuleContext(0,cA)}alterCompositeTypeStatement(){return this.getRuleContext(0,Oh)}alterPublicationStatement(){return this.getRuleContext(0,CA)}alterRoleSetStatement(){return this.getRuleContext(0,Cn)}alterRoleStatement(){return this.getRuleContext(0,Nn)}alterSubscriptionStatement(){return this.getRuleContext(0,dA)}alterStatsStatement(){return this.getRuleContext(0,NE)}altertsConfigurationStatement(){return this.getRuleContext(0,cS)}altertsDictionaryStatement(){return this.getRuleContext(0,iS)}alterUserMappingStatement(){return this.getRuleContext(0,lT)}analyzeStatement(){return this.getRuleContext(0,oS)}callStatement(){return this.getRuleContext(0,Rn)}checkpointStatement(){return this.getRuleContext(0,Zn)}closePortalStatement(){return this.getRuleContext(0,Nh)}clusterStatement(){return this.getRuleContext(0,hS)}commentStatement(){return this.getRuleContext(0,ko)}setConstraintsStatement(){return this.getRuleContext(0,Kn)}copyStatement(){return this.getRuleContext(0,Lh)}createAccessMethodStatement(){return this.getRuleContext(0,MT)}createAsStatement(){return this.getRuleContext(0,LE)}createAssertionStatement(){return this.getRuleContext(0,jT)}createCastStatement(){return this.getRuleContext(0,ZR)}createConversionStatement(){return this.getRuleContext(0,nS)}createDomainStatement(){return this.getRuleContext(0,eS)}createExtensionStatement(){return this.getRuleContext(0,wE)}createForeignDataWrapperStatement(){return this.getRuleContext(0,KE)}createForeignServerStatement(){return this.getRuleContext(0,rT)}createForeignTableStatement(){return this.getRuleContext(0,hT)}createFunctionStatement(){return this.getRuleContext(0,SR)}createMaterializedViewStatement(){return this.getRuleContext(0,PE)}createOperatorClassStatement(){return this.getRuleContext(0,no)}createOperatorFamilyStatement(){return this.getRuleContext(0,Ro)}createPublicationStatement(){return this.getRuleContext(0,uA)}alterOperatorFamilyStatement(){return this.getRuleContext(0,Ao)}createPolicyStatement(){return this.getRuleContext(0,OT)}createProcedureLangStatement(){return this.getRuleContext(0,HE)}createSchemaStatement(){return this.getRuleContext(0,Mn)}createSequenceStatement(){return this.getRuleContext(0,UE)}createStatement(){return this.getRuleContext(0,ph)}createSubscriptionStatement(){return this.getRuleContext(0,_A)}createStatsStatement(){return this.getRuleContext(0,uE)}createTablespaceStatement(){return this.getRuleContext(0,yE)}createTransformStatement(){return this.getRuleContext(0,$R)}createTriggerStatement(){return this.getRuleContext(0,UT)}createEventTriggerStatement(){return this.getRuleContext(0,XT)}createRoleStatement(){return this.getRuleContext(0,un)}createUserMappingStatement(){return this.getRuleContext(0,RT)}createDatabaseStatement(){return this.getRuleContext(0,KA)}deallocateStatement(){return this.getRuleContext(0,xS)}declareCursorStatement(){return this.getRuleContext(0,sl)}defineStatement(){return this.getRuleContext(0,zT)}deleteStatement(){return this.getRuleContext(0,XS)}discardStatement(){return this.getRuleContext(0,qn)}doStatement(){return this.getRuleContext(0,KR)}dropCastStatement(){return this.getRuleContext(0,jR)}dropOperatorClassStatement(){return this.getRuleContext(0,Oo)}dropOperatorFamilyStatement(){return this.getRuleContext(0,Io)}dropOwnedStatement(){return this.getRuleContext(0,uo)}dropStatement(){return this.getRuleContext(0,Lo)}dropSubscriptionStatement(){return this.getRuleContext(0,UA)}dropTablespaceStatement(){return this.getRuleContext(0,YE)}dropTransformStatement(){return this.getRuleContext(0,eA)}dropRoleStatement(){return this.getRuleContext(0,_n)}dropUserMappingStatement(){return this.getRuleContext(0,ST)}dropDatabaseStatement(){return this.getRuleContext(0,zA)}executeStatement(){return this.getRuleContext(0,pS)}explainStatement(){return this.getRuleContext(0,CS)}fetchStatement(){return this.getRuleContext(0,Bo)}grantStatement(){return this.getRuleContext(0,wo)}grantPrivilegeStatement(){return this.getRuleContext(0,qo)}importForeignSchemaStatement(){return this.getRuleContext(0,ET)}indexStatement(){return this.getRuleContext(0,rR)}insertStatement(){return this.getRuleContext(0,kS)}mergeStatement(){return this.getRuleContext(0,wS)}listenStatement(){return this.getRuleContext(0,vA)}refreshMaterializedViewStatement(){return this.getRuleContext(0,dE)}loadStatement(){return this.getRuleContext(0,XA)}lockStatement(){return this.getRuleContext(0,QS)}notifyStatement(){return this.getRuleContext(0,GA)}prepareStatement(){return this.getRuleContext(0,US)}reassignOwnedStatement(){return this.getRuleContext(0,No)}reindexStatement(){return this.getRuleContext(0,sA)}removeAggregateStatement(){return this.getRuleContext(0,YR)}removeFunctionStatement(){return this.getRuleContext(0,fR)}removeOperatorStatement(){return this.getRuleContext(0,wR)}renameStatement(){return this.getRuleContext(0,nA)}revokeStatement(){return this.getRuleContext(0,bo)}revokePrivilegeStatement(){return this.getRuleContext(0,jo)}ruleStatement(){return this.getRuleContext(0,mA)}securityLabelStatement(){return this.getRuleContext(0,Go)}selectStatement(){return this.getRuleContext(0,il)}transactionStatement(){return this.getRuleContext(0,yA)}truncateStatement(){return this.getRuleContext(0,go)}unlistenStatement(){return this.getRuleContext(0,BA)}updateStatement(){return this.getRuleContext(0,zS)}vacuumStatement(){return this.getRuleContext(0,TS)}variableResetStatement(){return this.getRuleContext(0,Yn)}variableSetStatement(){return this.getRuleContext(0,Dn)}variableShowStatement(){return this.getRuleContext(0,Xn)}viewStatement(){return this.getRuleContext(0,WA)}plsqlConsoleCommand(){return this.getRuleContext(0,on)}get ruleIndex(){return cn.RULE_statement}accept(t){return t.visitStatement?t.visitStatement(this):t.visitChildren(this)}},on=class extends ga{constructor(t,e){super(t,e)}MetaCommand(){return this.getToken(cn.MetaCommand,0)}EndMetaCommand(){return this.getToken(cn.EndMetaCommand,0)}get ruleIndex(){return cn.RULE_plsqlConsoleCommand}accept(t){return t.visitPlsqlConsoleCommand?t.visitPlsqlConsoleCommand(this):t.visitChildren(this)}},Rn=class extends ga{constructor(t,e){super(t,e)}CALL(){return this.getToken(cn.CALL,0)}functionApplication(){return this.getRuleContext(0,SI)}get ruleIndex(){return cn.RULE_callStatement}accept(t){return t.visitCallStatement?t.visitCallStatement(this):t.visitChildren(this)}},An=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}get ruleIndex(){return cn.RULE_optionalWith}accept(t){return t.visitOptionalWith?t.visitOptionalWith(this):t.visitChildren(this)}},Sn=class extends ga{constructor(t,e){super(t,e)}createRoleElement(t){return void 0===t?this.getRuleContexts(In):this.getRuleContext(t,In)}get ruleIndex(){return cn.RULE_optionalRoleList}accept(t){return t.visitOptionalRoleList?t.visitOptionalRoleList(this):t.visitChildren(this)}},ln=class extends ga{constructor(t,e){super(t,e)}alterRoleElemement(t){return void 0===t?this.getRuleContexts(On):this.getRuleContext(t,On)}get ruleIndex(){return cn.RULE_alterOptionalRoleList}accept(t){return t.visitAlterOptionalRoleList?t.visitAlterOptionalRoleList(this):t.visitChildren(this)}},On=class extends ga{constructor(t,e){super(t,e)}PASSWORD(){return this.getToken(cn.PASSWORD,0)}sconst(){return this.getRuleContext(0,Qu)}NULL_P(){return this.getToken(cn.NULL_P,0)}ENCRYPTED(){return this.getToken(cn.ENCRYPTED,0)}UNENCRYPTED(){return this.getToken(cn.UNENCRYPTED,0)}INHERIT(){return this.getToken(cn.INHERIT,0)}CONNECTION(){return this.getToken(cn.CONNECTION,0)}LIMIT(){return this.getToken(cn.LIMIT,0)}signedIconst(){return this.getRuleContext(0,qu)}VALID(){return this.getToken(cn.VALID,0)}UNTIL(){return this.getToken(cn.UNTIL,0)}roleOrAliases(){return this.getRuleContext(0,RC)}roleNameList(){return this.getRuleContext(0,zu)}identifier(){return this.getRuleContext(0,rN)}get ruleIndex(){return cn.RULE_alterRoleElemement}accept(t){return t.visitAlterRoleElemement?t.visitAlterRoleElemement(this):t.visitChildren(this)}},In=class extends ga{constructor(t,e){super(t,e)}alterRoleElemement(){return this.getRuleContext(0,On)}SYSID(){return this.getToken(cn.SYSID,0)}iconst(){return this.getRuleContext(0,Ku)}ADMIN(){return this.getToken(cn.ADMIN,0)}roleNameList(){return this.getRuleContext(0,zu)}roleOrAliases(){return this.getRuleContext(0,RC)}IN_P(){return this.getToken(cn.IN_P,0)}get ruleIndex(){return cn.RULE_createRoleElement}accept(t){return t.visitCreateRoleElement?t.visitCreateRoleElement(this):t.visitChildren(this)}},un=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}roleOrAliases(){return this.getRuleContext(0,RC)}roleName(){return this.getRuleContext(0,ju)}optionalWith(){return this.getRuleContext(0,An)}optionalRoleList(){return this.getRuleContext(0,Sn)}get ruleIndex(){return cn.RULE_createRoleStatement}accept(t){return t.visitCreateRoleStatement?t.visitCreateRoleStatement(this):t.visitChildren(this)}},Nn=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}roleOrAliases(){return this.getRuleContext(0,RC)}roleName(){return this.getRuleContext(0,ju)}optionalWith(){return this.getRuleContext(0,An)}alterOptionalRoleList(){return this.getRuleContext(0,ln)}get ruleIndex(){return cn.RULE_alterRoleStatement}accept(t){return t.visitAlterRoleStatement?t.visitAlterRoleStatement(this):t.visitChildren(this)}},Ln=class extends ga{constructor(t,e){super(t,e)}IN_P(){return this.getToken(cn.IN_P,0)}DATABASE(){return this.getToken(cn.DATABASE,0)}databaseName(){return this.getRuleContext(0,Uu)}get ruleIndex(){return cn.RULE_optionalInDatabase}accept(t){return t.visitOptionalInDatabase?t.visitOptionalInDatabase(this):t.visitChildren(this)}},Cn=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}roleOrAliases(){return this.getRuleContext(0,RC)}roleName(){return this.getRuleContext(0,ju)}optionalInDatabase(){return this.getRuleContext(0,Ln)}setResetClause(){return this.getRuleContext(0,Wn)}ALL(){return this.getToken(cn.ALL,0)}get ruleIndex(){return cn.RULE_alterRoleSetStatement}accept(t){return t.visitAlterRoleSetStatement?t.visitAlterRoleSetStatement(this):t.visitChildren(this)}},_n=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}roleOrAliases(){return this.getRuleContext(0,RC)}roleNameList(){return this.getRuleContext(0,zu)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_dropRoleStatement}accept(t){return t.visitDropRoleStatement?t.visitDropRoleStatement(this):t.visitChildren(this)}},Pn=class extends ga{constructor(t,e){super(t,e)}ADD_P(){return this.getToken(cn.ADD_P,0)}DROP(){return this.getToken(cn.DROP,0)}get ruleIndex(){return cn.RULE_addOrDrop}accept(t){return t.visitAddOrDrop?t.visitAddOrDrop(this):t.visitChildren(this)}},Mn=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}optionalSchemaList(){return this.getRuleContext(0,Un)}optionalSchemaName(){return this.getRuleContext(0,dn)}AUTHORIZATION(){return this.getToken(cn.AUTHORIZATION,0)}roleName(){return this.getRuleContext(0,ju)}columnId(){return this.getRuleContext(0,$u)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_createSchemaStatement}accept(t){return t.visitCreateSchemaStatement?t.visitCreateSchemaStatement(this):t.visitChildren(this)}},dn=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_optionalSchemaName}accept(t){return t.visitOptionalSchemaName?t.visitOptionalSchemaName(this):t.visitChildren(this)}},Un=class extends ga{constructor(t,e){super(t,e)}schemaStatement(t){return void 0===t?this.getRuleContexts(mn):this.getRuleContext(t,mn)}get ruleIndex(){return cn.RULE_optionalSchemaList}accept(t){return t.visitOptionalSchemaList?t.visitOptionalSchemaList(this):t.visitChildren(this)}},mn=class extends ga{constructor(t,e){super(t,e)}createStatement(){return this.getRuleContext(0,ph)}indexStatement(){return this.getRuleContext(0,rR)}createSequenceStatement(){return this.getRuleContext(0,UE)}createTriggerStatement(){return this.getRuleContext(0,UT)}grantStatement(){return this.getRuleContext(0,wo)}viewStatement(){return this.getRuleContext(0,WA)}get ruleIndex(){return cn.RULE_schemaStatement}accept(t){return t.visitSchemaStatement?t.visitSchemaStatement(this):t.visitChildren(this)}},Dn=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(cn.SET,0)}setStatementEnding(){return this.getRuleContext(0,pn)}LOCAL(){return this.getToken(cn.LOCAL,0)}SESSION(){return this.getToken(cn.SESSION,0)}get ruleIndex(){return cn.RULE_variableSetStatement}accept(t){return t.visitVariableSetStatement?t.visitVariableSetStatement(this):t.visitChildren(this)}},pn=class extends ga{constructor(t,e){super(t,e)}TRANSACTION(){return this.getToken(cn.TRANSACTION,0)}transactionModeList(){return this.getRuleContext(0,wA)}SESSION(){return this.getToken(cn.SESSION,0)}CHARACTERISTICS(){return this.getToken(cn.CHARACTERISTICS,0)}AS(){return this.getToken(cn.AS,0)}setStatementMore(){return this.getRuleContext(0,xn)}get ruleIndex(){return cn.RULE_setStatementEnding}accept(t){return t.visitSetStatementEnding?t.visitSetStatementEnding(this):t.visitChildren(this)}},gn=class extends ga{constructor(t,e){super(t,e)}variableName(){return this.getRuleContext(0,kn)}variableList(){return this.getRuleContext(0,Hn)}TO(){return this.getToken(cn.TO,0)}EQUAL(){return this.getToken(cn.EQUAL,0)}get ruleIndex(){return cn.RULE_genericSetClause}accept(t){return t.visitGenericSetClause?t.visitGenericSetClause(this):t.visitChildren(this)}},xn=class extends ga{constructor(t,e){super(t,e)}genericSetClause(){return this.getRuleContext(0,gn)}variableName(){return this.getRuleContext(0,kn)}FROM(){return this.getToken(cn.FROM,0)}CURRENT_P(){return this.getToken(cn.CURRENT_P,0)}TIME(){return this.getToken(cn.TIME,0)}ZONE(){return this.getToken(cn.ZONE,0)}zoneValue(){return this.getRuleContext(0,Bn)}CATALOG(){return this.getToken(cn.CATALOG,0)}sconst(){return this.getRuleContext(0,Qu)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaName(){return this.getRuleContext(0,Du)}NAMES(){return this.getToken(cn.NAMES,0)}optionalEncoding(){return this.getRuleContext(0,yn)}roleOrAliases(){return this.getRuleContext(0,RC)}nonReservedWordOrSconst(){return this.getRuleContext(0,fn)}SESSION(){return this.getToken(cn.SESSION,0)}AUTHORIZATION(){return this.getToken(cn.AUTHORIZATION,0)}XML_P(){return this.getToken(cn.XML_P,0)}OPTION(){return this.getToken(cn.OPTION,0)}documentOrContent(){return this.getRuleContext(0,PI)}TRANSACTION(){return this.getToken(cn.TRANSACTION,0)}SNAPSHOT(){return this.getToken(cn.SNAPSHOT,0)}get ruleIndex(){return cn.RULE_setStatementMore}accept(t){return t.visitSetStatementMore?t.visitSetStatementMore(this):t.visitChildren(this)}},kn=class extends ga{constructor(t,e){super(t,e)}columnId(t){return void 0===t?this.getRuleContexts($u):this.getRuleContext(t,$u)}DOT(t){return void 0===t?this.getTokens(cn.DOT):this.getToken(cn.DOT,t)}get ruleIndex(){return cn.RULE_variableName}accept(t){return t.visitVariableName?t.visitVariableName(this):t.visitChildren(this)}},Hn=class extends ga{constructor(t,e){super(t,e)}variableValue(t){return void 0===t?this.getRuleContexts(Gn):this.getRuleContext(t,Gn)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_variableList}accept(t){return t.visitVariableList?t.visitVariableList(this):t.visitChildren(this)}},Gn=class extends ga{constructor(t,e){super(t,e)}booleanOrString(){return this.getRuleContext(0,vn)}numericOnly(){return this.getRuleContext(0,xE)}get ruleIndex(){return cn.RULE_variableValue}accept(t){return t.visitVariableValue?t.visitVariableValue(this):t.visitChildren(this)}},Fn=class extends ga{constructor(t,e){super(t,e)}READ(){return this.getToken(cn.READ,0)}UNCOMMITTED(){return this.getToken(cn.UNCOMMITTED,0)}COMMITTED(){return this.getToken(cn.COMMITTED,0)}REPEATABLE(){return this.getToken(cn.REPEATABLE,0)}SERIALIZABLE(){return this.getToken(cn.SERIALIZABLE,0)}get ruleIndex(){return cn.RULE_isoLevel}accept(t){return t.visitIsoLevel?t.visitIsoLevel(this):t.visitChildren(this)}},vn=class extends ga{constructor(t,e){super(t,e)}TRUE_P(){return this.getToken(cn.TRUE_P,0)}FALSE_P(){return this.getToken(cn.FALSE_P,0)}ON(){return this.getToken(cn.ON,0)}nonReservedWordOrSconst(){return this.getRuleContext(0,fn)}get ruleIndex(){return cn.RULE_booleanOrString}accept(t){return t.visitBooleanOrString?t.visitBooleanOrString(this):t.visitChildren(this)}},Bn=class extends ga{constructor(t,e){super(t,e)}sconst(){return this.getRuleContext(0,Qu)}identifier(){return this.getRuleContext(0,rN)}constInterval(){return this.getRuleContext(0,vO)}optionalInterval(){return this.getRuleContext(0,yO)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}iconst(){return this.getRuleContext(0,Ku)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}numericOnly(){return this.getRuleContext(0,xE)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}LOCAL(){return this.getToken(cn.LOCAL,0)}get ruleIndex(){return cn.RULE_zoneValue}accept(t){return t.visitZoneValue?t.visitZoneValue(this):t.visitChildren(this)}},yn=class extends ga{constructor(t,e){super(t,e)}sconst(){return this.getRuleContext(0,Qu)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}get ruleIndex(){return cn.RULE_optionalEncoding}accept(t){return t.visitOptionalEncoding?t.visitOptionalEncoding(this):t.visitChildren(this)}},fn=class extends ga{constructor(t,e){super(t,e)}nonReservedWord(){return this.getRuleContext(0,sN)}sconst(){return this.getRuleContext(0,Qu)}get ruleIndex(){return cn.RULE_nonReservedWordOrSconst}accept(t){return t.visitNonReservedWordOrSconst?t.visitNonReservedWordOrSconst(this):t.visitChildren(this)}},Yn=class extends ga{constructor(t,e){super(t,e)}RESET(){return this.getToken(cn.RESET,0)}resetClauseRest(){return this.getRuleContext(0,wn)}get ruleIndex(){return cn.RULE_variableResetStatement}accept(t){return t.visitVariableResetStatement?t.visitVariableResetStatement(this):t.visitChildren(this)}},wn=class extends ga{constructor(t,e){super(t,e)}genericResetClause(){return this.getRuleContext(0,bn)}TIME(){return this.getToken(cn.TIME,0)}ZONE(){return this.getToken(cn.ZONE,0)}TRANSACTION(){return this.getToken(cn.TRANSACTION,0)}ISOLATION(){return this.getToken(cn.ISOLATION,0)}LEVEL(){return this.getToken(cn.LEVEL,0)}SESSION(){return this.getToken(cn.SESSION,0)}AUTHORIZATION(){return this.getToken(cn.AUTHORIZATION,0)}get ruleIndex(){return cn.RULE_resetClauseRest}accept(t){return t.visitResetClauseRest?t.visitResetClauseRest(this):t.visitChildren(this)}},bn=class extends ga{constructor(t,e){super(t,e)}variableName(){return this.getRuleContext(0,kn)}ALL(){return this.getToken(cn.ALL,0)}get ruleIndex(){return cn.RULE_genericResetClause}accept(t){return t.visitGenericResetClause?t.visitGenericResetClause(this):t.visitChildren(this)}},Wn=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(cn.SET,0)}setStatementEnding(){return this.getRuleContext(0,pn)}variableResetStatement(){return this.getRuleContext(0,Yn)}get ruleIndex(){return cn.RULE_setResetClause}accept(t){return t.visitSetResetClause?t.visitSetResetClause(this):t.visitChildren(this)}},Vn=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(cn.SET,0)}setStatementMore(){return this.getRuleContext(0,xn)}variableResetStatement(){return this.getRuleContext(0,Yn)}get ruleIndex(){return cn.RULE_functionSetResetClause}accept(t){return t.visitFunctionSetResetClause?t.visitFunctionSetResetClause(this):t.visitChildren(this)}},Xn=class extends ga{constructor(t,e){super(t,e)}SHOW(){return this.getToken(cn.SHOW,0)}variableName(){return this.getRuleContext(0,kn)}TIME(){return this.getToken(cn.TIME,0)}ZONE(){return this.getToken(cn.ZONE,0)}TRANSACTION(){return this.getToken(cn.TRANSACTION,0)}ISOLATION(){return this.getToken(cn.ISOLATION,0)}LEVEL(){return this.getToken(cn.LEVEL,0)}SESSION(){return this.getToken(cn.SESSION,0)}AUTHORIZATION(){return this.getToken(cn.AUTHORIZATION,0)}ALL(){return this.getToken(cn.ALL,0)}get ruleIndex(){return cn.RULE_variableShowStatement}accept(t){return t.visitVariableShowStatement?t.visitVariableShowStatement(this):t.visitChildren(this)}},Kn=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(cn.SET,0)}CONSTRAINTS(){return this.getToken(cn.CONSTRAINTS,0)}constraintsSetList(){return this.getRuleContext(0,Qn)}constraintsSetMode(){return this.getRuleContext(0,Jn)}get ruleIndex(){return cn.RULE_setConstraintsStatement}accept(t){return t.visitSetConstraintsStatement?t.visitSetConstraintsStatement(this):t.visitChildren(this)}},Qn=class extends ga{constructor(t,e){super(t,e)}ALL(){return this.getToken(cn.ALL,0)}qualifiedNameList(){return this.getRuleContext(0,du)}get ruleIndex(){return cn.RULE_constraintsSetList}accept(t){return t.visitConstraintsSetList?t.visitConstraintsSetList(this):t.visitChildren(this)}},Jn=class extends ga{constructor(t,e){super(t,e)}DEFERRED(){return this.getToken(cn.DEFERRED,0)}IMMEDIATE(){return this.getToken(cn.IMMEDIATE,0)}get ruleIndex(){return cn.RULE_constraintsSetMode}accept(t){return t.visitConstraintsSetMode?t.visitConstraintsSetMode(this):t.visitChildren(this)}},Zn=class extends ga{constructor(t,e){super(t,e)}CHECKPOINT(){return this.getToken(cn.CHECKPOINT,0)}get ruleIndex(){return cn.RULE_checkpointStatement}accept(t){return t.visitCheckpointStatement?t.visitCheckpointStatement(this):t.visitChildren(this)}},qn=class extends ga{constructor(t,e){super(t,e)}DISCARD(){return this.getToken(cn.DISCARD,0)}ALL(){return this.getToken(cn.ALL,0)}TEMP(){return this.getToken(cn.TEMP,0)}TEMPORARY(){return this.getToken(cn.TEMPORARY,0)}PLANS(){return this.getToken(cn.PLANS,0)}SEQUENCES(){return this.getToken(cn.SEQUENCES,0)}get ruleIndex(){return cn.RULE_discardStatement}accept(t){return t.visitDiscardStatement?t.visitDiscardStatement(this):t.visitChildren(this)}},jn=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}TABLE(){return this.getToken(cn.TABLE,0)}relationExpression(){return this.getRuleContext(0,eO)}alterTableCommands(){return this.getRuleContext(0,zn)}partitionCommand(){return this.getRuleContext(0,$n)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}ALL(){return this.getToken(cn.ALL,0)}IN_P(){return this.getToken(cn.IN_P,0)}TABLESPACE(t){return void 0===t?this.getTokens(cn.TABLESPACE):this.getToken(cn.TABLESPACE,t)}name(t){return void 0===t?this.getRuleContexts(yu):this.getRuleContext(t,yu)}SET(){return this.getToken(cn.SET,0)}optionalNowait(){return this.getRuleContext(0,qS)}OWNED(){return this.getToken(cn.OWNED,0)}BY(){return this.getToken(cn.BY,0)}roleNameList(){return this.getRuleContext(0,zu)}INDEX(){return this.getToken(cn.INDEX,0)}indexName(){return this.getRuleContext(0,gu)}indexPartitionCommand(){return this.getRuleContext(0,th)}VIEW(){return this.getToken(cn.VIEW,0)}viewName(){return this.getRuleContext(0,tO)}MATERIALIZED(){return this.getToken(cn.MATERIALIZED,0)}qualifiedName(){return this.getRuleContext(0,vu)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}get ruleIndex(){return cn.RULE_alterTableStatement}accept(t){return t.visitAlterTableStatement?t.visitAlterTableStatement(this):t.visitChildren(this)}},zn=class extends ga{constructor(t,e){super(t,e)}alterTableCommand(t){return void 0===t?this.getRuleContexts(eh):this.getRuleContext(t,eh)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_alterTableCommands}accept(t){return t.visitAlterTableCommands?t.visitAlterTableCommands(this):t.visitChildren(this)}},$n=class extends ga{constructor(t,e){super(t,e)}ATTACH(){return this.getToken(cn.ATTACH,0)}PARTITION(){return this.getToken(cn.PARTITION,0)}qualifiedName(){return this.getRuleContext(0,vu)}partitionBoundSpecification(){return this.getRuleContext(0,Ah)}DETACH(){return this.getToken(cn.DETACH,0)}get ruleIndex(){return cn.RULE_partitionCommand}accept(t){return t.visitPartitionCommand?t.visitPartitionCommand(this):t.visitChildren(this)}},th=class extends ga{constructor(t,e){super(t,e)}ATTACH(){return this.getToken(cn.ATTACH,0)}PARTITION(){return this.getToken(cn.PARTITION,0)}qualifiedName(){return this.getRuleContext(0,vu)}get ruleIndex(){return cn.RULE_indexPartitionCommand}accept(t){return t.visitIndexPartitionCommand?t.visitIndexPartitionCommand(this):t.visitChildren(this)}},eh=class extends ga{constructor(t,e){super(t,e)}ADD_P(){return this.getToken(cn.ADD_P,0)}columnDefinition(){return this.getRuleContext(0,Bh)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}COLUMN(){return this.getToken(cn.COLUMN,0)}ALTER(){return this.getToken(cn.ALTER,0)}optionalColumn(){return this.getRuleContext(0,hA)}columnId(t){return void 0===t?this.getRuleContexts($u):this.getRuleContext(t,$u)}alterColumnDefault(){return this.getRuleContext(0,sh)}DROP(){return this.getToken(cn.DROP,0)}NULL_P(){return this.getToken(cn.NULL_P,0)}SET(){return this.getToken(cn.SET,0)}EXPRESSION(){return this.getToken(cn.EXPRESSION,0)}STATISTICS(){return this.getToken(cn.STATISTICS,0)}signedIconst(){return this.getRuleContext(0,qu)}iconst(){return this.getRuleContext(0,Ku)}relOptions(){return this.getRuleContext(0,nh)}RESET(){return this.getToken(cn.RESET,0)}STORAGE(){return this.getToken(cn.STORAGE,0)}GENERATED(){return this.getToken(cn.GENERATED,0)}generatedWhen(){return this.getRuleContext(0,bh)}AS(){return this.getToken(cn.AS,0)}IDENTITY_P(){return this.getToken(cn.IDENTITY_P,0)}optionalParenthesizedSeqOptionsList(){return this.getRuleContext(0,DE)}alterIdentityColumnOptionList(){return this.getRuleContext(0,oh)}optionalDropBehavior(){return this.getRuleContext(0,ah)}optionalSetData(){return this.getRuleContext(0,EA)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}typeName(){return this.getRuleContext(0,LO)}optionalCollateClause(){return this.getRuleContext(0,rh)}alterUsing(){return this.getRuleContext(0,ih)}alterGenericOptions(){return this.getRuleContext(0,zE)}tableConstraint(){return this.getRuleContext(0,Qh)}CONSTRAINT(){return this.getToken(cn.CONSTRAINT,0)}constraintName(){return this.getRuleContext(0,Hu)}constraintAttributeElement(t){return void 0===t?this.getRuleContexts(VT):this.getRuleContext(t,VT)}VALIDATE(){return this.getToken(cn.VALIDATE,0)}WITHOUT(){return this.getToken(cn.WITHOUT,0)}OIDS(){return this.getToken(cn.OIDS,0)}CLUSTER(){return this.getToken(cn.CLUSTER,0)}ON(){return this.getToken(cn.ON,0)}name(){return this.getRuleContext(0,yu)}LOGGED(){return this.getToken(cn.LOGGED,0)}UNLOGGED(){return this.getToken(cn.UNLOGGED,0)}ENABLE_P(){return this.getToken(cn.ENABLE_P,0)}TRIGGER(){return this.getToken(cn.TRIGGER,0)}triggerName(){return this.getRuleContext(0,ku)}ALWAYS(){return this.getToken(cn.ALWAYS,0)}REPLICA(){return this.getToken(cn.REPLICA,0)}ALL(){return this.getToken(cn.ALL,0)}USER(){return this.getToken(cn.USER,0)}DISABLE_P(){return this.getToken(cn.DISABLE_P,0)}RULE(){return this.getToken(cn.RULE,0)}INHERIT(){return this.getToken(cn.INHERIT,0)}qualifiedName(){return this.getRuleContext(0,vu)}NO(){return this.getToken(cn.NO,0)}OF(){return this.getToken(cn.OF,0)}anyName(){return this.getRuleContext(0,mo)}OWNER(){return this.getToken(cn.OWNER,0)}TO(){return this.getToken(cn.TO,0)}roleName(){return this.getRuleContext(0,ju)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}replicaIdentity(){return this.getRuleContext(0,ch)}ROW(){return this.getToken(cn.ROW,0)}LEVEL(){return this.getToken(cn.LEVEL,0)}SECURITY(){return this.getToken(cn.SECURITY,0)}FORCE(){return this.getToken(cn.FORCE,0)}get ruleIndex(){return cn.RULE_alterTableCommand}accept(t){return t.visitAlterTableCommand?t.visitAlterTableCommand(this):t.visitChildren(this)}},sh=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(cn.SET,0)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}expression1(){return this.getRuleContext(0,wO)}DROP(){return this.getToken(cn.DROP,0)}get ruleIndex(){return cn.RULE_alterColumnDefault}accept(t){return t.visitAlterColumnDefault?t.visitAlterColumnDefault(this):t.visitChildren(this)}},ah=class extends ga{constructor(t,e){super(t,e)}CASCADE(){return this.getToken(cn.CASCADE,0)}RESTRICT(){return this.getToken(cn.RESTRICT,0)}get ruleIndex(){return cn.RULE_optionalDropBehavior}accept(t){return t.visitOptionalDropBehavior?t.visitOptionalDropBehavior(this):t.visitChildren(this)}},rh=class extends ga{constructor(t,e){super(t,e)}COLLATE(){return this.getToken(cn.COLLATE,0)}anyName(){return this.getRuleContext(0,mo)}get ruleIndex(){return cn.RULE_optionalCollateClause}accept(t){return t.visitOptionalCollateClause?t.visitOptionalCollateClause(this):t.visitChildren(this)}},ih=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_alterUsing}accept(t){return t.visitAlterUsing?t.visitAlterUsing(this):t.visitChildren(this)}},ch=class extends ga{constructor(t,e){super(t,e)}NOTHING(){return this.getToken(cn.NOTHING,0)}FULL(){return this.getToken(cn.FULL,0)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}USING(){return this.getToken(cn.USING,0)}INDEX(){return this.getToken(cn.INDEX,0)}indexName(){return this.getRuleContext(0,gu)}get ruleIndex(){return cn.RULE_replicaIdentity}accept(t){return t.visitReplicaIdentity?t.visitReplicaIdentity(this):t.visitChildren(this)}},nh=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}relOptionList(){return this.getRuleContext(0,Eh)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_relOptions}accept(t){return t.visitRelOptions?t.visitRelOptions(this):t.visitChildren(this)}},hh=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}relOptions(){return this.getRuleContext(0,nh)}get ruleIndex(){return cn.RULE_optionalRelOptions}accept(t){return t.visitOptionalRelOptions?t.visitOptionalRelOptions(this):t.visitChildren(this)}},Eh=class extends ga{constructor(t,e){super(t,e)}relOptionElem(t){return void 0===t?this.getRuleContexts(Th):this.getRuleContext(t,Th)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_relOptionList}accept(t){return t.visitRelOptionList?t.visitRelOptionList(this):t.visitChildren(this)}},Th=class extends ga{constructor(t,e){super(t,e)}columnLabel(t){return void 0===t?this.getRuleContexts(aN):this.getRuleContext(t,aN)}EQUAL(){return this.getToken(cn.EQUAL,0)}definitionArgument(){return this.getRuleContext(0,eo)}DOT(){return this.getToken(cn.DOT,0)}get ruleIndex(){return cn.RULE_relOptionElem}accept(t){return t.visitRelOptionElem?t.visitRelOptionElem(this):t.visitChildren(this)}},oh=class extends ga{constructor(t,e){super(t,e)}alterIdentityColumnOption(t){return void 0===t?this.getRuleContexts(Rh):this.getRuleContext(t,Rh)}get ruleIndex(){return cn.RULE_alterIdentityColumnOptionList}accept(t){return t.visitAlterIdentityColumnOptionList?t.visitAlterIdentityColumnOptionList(this):t.visitChildren(this)}},Rh=class extends ga{constructor(t,e){super(t,e)}RESTART(){return this.getToken(cn.RESTART,0)}optionalWith(){return this.getRuleContext(0,An)}numericOnly(){return this.getRuleContext(0,xE)}SET(){return this.getToken(cn.SET,0)}sequenceOptionItem(){return this.getRuleContext(0,gE)}GENERATED(){return this.getToken(cn.GENERATED,0)}generatedWhen(){return this.getRuleContext(0,bh)}get ruleIndex(){return cn.RULE_alterIdentityColumnOption}accept(t){return t.visitAlterIdentityColumnOption?t.visitAlterIdentityColumnOption(this):t.visitChildren(this)}},Ah=class extends ga{constructor(t,e){super(t,e)}FOR(){return this.getToken(cn.FOR,0)}VALUES(){return this.getToken(cn.VALUES,0)}WITH(){return this.getToken(cn.WITH,0)}OPEN_PAREN(t){return void 0===t?this.getTokens(cn.OPEN_PAREN):this.getToken(cn.OPEN_PAREN,t)}hashPartitionBound(){return this.getRuleContext(0,lh)}CLOSE_PAREN(t){return void 0===t?this.getTokens(cn.CLOSE_PAREN):this.getToken(cn.CLOSE_PAREN,t)}IN_P(){return this.getToken(cn.IN_P,0)}expressionList(t){return void 0===t?this.getRuleContexts(ZI):this.getRuleContext(t,ZI)}FROM(){return this.getToken(cn.FROM,0)}TO(){return this.getToken(cn.TO,0)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}get ruleIndex(){return cn.RULE_partitionBoundSpecification}accept(t){return t.visitPartitionBoundSpecification?t.visitPartitionBoundSpecification(this):t.visitChildren(this)}},Sh=class extends ga{constructor(t,e){super(t,e)}nonReservedWord(){return this.getRuleContext(0,sN)}iconst(){return this.getRuleContext(0,Ku)}get ruleIndex(){return cn.RULE_hashPartitionBoundElement}accept(t){return t.visitHashPartitionBoundElement?t.visitHashPartitionBoundElement(this):t.visitChildren(this)}},lh=class extends ga{constructor(t,e){super(t,e)}hashPartitionBoundElement(t){return void 0===t?this.getRuleContexts(Sh):this.getRuleContext(t,Sh)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_hashPartitionBound}accept(t){return t.visitHashPartitionBound?t.visitHashPartitionBound(this):t.visitChildren(this)}},Oh=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}anyName(){return this.getRuleContext(0,mo)}alterTypeCommands(){return this.getRuleContext(0,Ih)}get ruleIndex(){return cn.RULE_alterCompositeTypeStatement}accept(t){return t.visitAlterCompositeTypeStatement?t.visitAlterCompositeTypeStatement(this):t.visitChildren(this)}},Ih=class extends ga{constructor(t,e){super(t,e)}alterTypeCommand(t){return void 0===t?this.getRuleContexts(uh):this.getRuleContext(t,uh)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_alterTypeCommands}accept(t){return t.visitAlterTypeCommands?t.visitAlterTypeCommands(this):t.visitChildren(this)}},uh=class extends ga{constructor(t,e){super(t,e)}ADD_P(){return this.getToken(cn.ADD_P,0)}ATTRIBUTE(){return this.getToken(cn.ATTRIBUTE,0)}tableFunctionElement(){return this.getRuleContext(0,AO)}optionalDropBehavior(){return this.getRuleContext(0,ah)}DROP(){return this.getToken(cn.DROP,0)}columnId(){return this.getRuleContext(0,$u)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}ALTER(){return this.getToken(cn.ALTER,0)}optionalSetData(){return this.getRuleContext(0,EA)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}typeName(){return this.getRuleContext(0,LO)}optionalCollateClause(){return this.getRuleContext(0,rh)}get ruleIndex(){return cn.RULE_alterTypeCommand}accept(t){return t.visitAlterTypeCommand?t.visitAlterTypeCommand(this):t.visitChildren(this)}},Nh=class extends ga{constructor(t,e){super(t,e)}CLOSE(){return this.getToken(cn.CLOSE,0)}cursorName(){return this.getRuleContext(0,al)}ALL(){return this.getToken(cn.ALL,0)}get ruleIndex(){return cn.RULE_closePortalStatement}accept(t){return t.visitClosePortalStatement?t.visitClosePortalStatement(this):t.visitChildren(this)}},Lh=class extends ga{constructor(t,e){super(t,e)}COPY(){return this.getToken(cn.COPY,0)}qualifiedName(){return this.getRuleContext(0,vu)}columnListWithParentheses(){return this.getRuleContext(0,Zh)}fromOrTo(){return this.getRuleContext(0,Ch)}copyFileName(){return this.getRuleContext(0,_h)}copyDelimiter(){return this.getRuleContext(0,dh)}optionalWith(){return this.getRuleContext(0,An)}copyOptions(){return this.getRuleContext(0,Ph)}whereClause(){return this.getRuleContext(0,EO)}BINARY(){return this.getToken(cn.BINARY,0)}PROGRAM(){return this.getToken(cn.PROGRAM,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}preparableStatement(){return this.getRuleContext(0,DS)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}TO(){return this.getToken(cn.TO,0)}get ruleIndex(){return cn.RULE_copyStatement}accept(t){return t.visitCopyStatement?t.visitCopyStatement(this):t.visitChildren(this)}},Ch=class extends ga{constructor(t,e){super(t,e)}FROM(){return this.getToken(cn.FROM,0)}TO(){return this.getToken(cn.TO,0)}get ruleIndex(){return cn.RULE_fromOrTo}accept(t){return t.visitFromOrTo?t.visitFromOrTo(this):t.visitChildren(this)}},_h=class extends ga{constructor(t,e){super(t,e)}sconst(){return this.getRuleContext(0,Qu)}STDIN(){return this.getToken(cn.STDIN,0)}STDOUT(){return this.getToken(cn.STDOUT,0)}get ruleIndex(){return cn.RULE_copyFileName}accept(t){return t.visitCopyFileName?t.visitCopyFileName(this):t.visitChildren(this)}},Ph=class extends ga{constructor(t,e){super(t,e)}copyOptionsItem(t){return void 0===t?this.getRuleContexts(Mh):this.getRuleContext(t,Mh)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}copyGenericOptionList(){return this.getRuleContext(0,Uh)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_copyOptions}accept(t){return t.visitCopyOptions?t.visitCopyOptions(this):t.visitChildren(this)}},Mh=class extends ga{constructor(t,e){super(t,e)}BINARY(){return this.getToken(cn.BINARY,0)}FREEZE(){return this.getToken(cn.FREEZE,0)}DELIMITER(){return this.getToken(cn.DELIMITER,0)}optionalAs(){return this.getRuleContext(0,rS)}sconst(){return this.getRuleContext(0,Qu)}NULL_P(){return this.getToken(cn.NULL_P,0)}CSV(){return this.getToken(cn.CSV,0)}HEADER_P(){return this.getToken(cn.HEADER_P,0)}QUOTE(){return this.getToken(cn.QUOTE,0)}ESCAPE(){return this.getToken(cn.ESCAPE,0)}FORCE(){return this.getToken(cn.FORCE,0)}columnList(){return this.getRuleContext(0,qh)}STAR(){return this.getToken(cn.STAR,0)}NOT(){return this.getToken(cn.NOT,0)}ENCODING(){return this.getToken(cn.ENCODING,0)}get ruleIndex(){return cn.RULE_copyOptionsItem}accept(t){return t.visitCopyOptionsItem?t.visitCopyOptionsItem(this):t.visitChildren(this)}},dh=class extends ga{constructor(t,e){super(t,e)}DELIMITERS(){return this.getToken(cn.DELIMITERS,0)}sconst(){return this.getRuleContext(0,Qu)}USING(){return this.getToken(cn.USING,0)}get ruleIndex(){return cn.RULE_copyDelimiter}accept(t){return t.visitCopyDelimiter?t.visitCopyDelimiter(this):t.visitChildren(this)}},Uh=class extends ga{constructor(t,e){super(t,e)}copyGenericOptionElem(t){return void 0===t?this.getRuleContexts(mh):this.getRuleContext(t,mh)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_copyGenericOptionList}accept(t){return t.visitCopyGenericOptionList?t.visitCopyGenericOptionList(this):t.visitChildren(this)}},mh=class extends ga{constructor(t,e){super(t,e)}columnLabel(){return this.getRuleContext(0,aN)}copyGenericOptionArgument(){return this.getRuleContext(0,Dh)}get ruleIndex(){return cn.RULE_copyGenericOptionElem}accept(t){return t.visitCopyGenericOptionElem?t.visitCopyGenericOptionElem(this):t.visitChildren(this)}},Dh=class extends ga{constructor(t,e){super(t,e)}booleanOrString(t){return void 0===t?this.getRuleContexts(vn):this.getRuleContext(t,vn)}numericOnly(){return this.getRuleContext(0,xE)}STAR(){return this.getToken(cn.STAR,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_copyGenericOptionArgument}accept(t){return t.visitCopyGenericOptionArgument?t.visitCopyGenericOptionArgument(this):t.visitChildren(this)}},ph=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}temporaryOption(){return this.getRuleContext(0,gh)}TABLE(){return this.getToken(cn.TABLE,0)}qualifiedName(t){return void 0===t?this.getRuleContexts(vu):this.getRuleContext(t,vu)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}optionalTableElementList(){return this.getRuleContext(0,xh)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}inheritClause(){return this.getRuleContext(0,nE)}optionalPartitionSpecification(){return this.getRuleContext(0,hE)}optionalTableAccessMethodClause(){return this.getRuleContext(0,RE)}with(){return this.getRuleContext(0,AE)}onCommitOption(){return this.getRuleContext(0,SE)}optionalTablespace(){return this.getRuleContext(0,lE)}OF(){return this.getToken(cn.OF,0)}anyName(){return this.getRuleContext(0,mo)}optionalTypedTableElementList(){return this.getRuleContext(0,kh)}PARTITION(){return this.getToken(cn.PARTITION,0)}partitionBoundSpecification(){return this.getRuleContext(0,Ah)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_createStatement}accept(t){return t.visitCreateStatement?t.visitCreateStatement(this):t.visitChildren(this)}},gh=class extends ga{constructor(t,e){super(t,e)}TEMPORARY(){return this.getToken(cn.TEMPORARY,0)}TEMP(){return this.getToken(cn.TEMP,0)}LOCAL(){return this.getToken(cn.LOCAL,0)}GLOBAL(){return this.getToken(cn.GLOBAL,0)}UNLOGGED(){return this.getToken(cn.UNLOGGED,0)}get ruleIndex(){return cn.RULE_temporaryOption}accept(t){return t.visitTemporaryOption?t.visitTemporaryOption(this):t.visitChildren(this)}},xh=class extends ga{constructor(t,e){super(t,e)}tableElementList(){return this.getRuleContext(0,Hh)}get ruleIndex(){return cn.RULE_optionalTableElementList}accept(t){return t.visitOptionalTableElementList?t.visitOptionalTableElementList(this):t.visitChildren(this)}},kh=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}typedTableElementList(){return this.getRuleContext(0,Gh)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_optionalTypedTableElementList}accept(t){return t.visitOptionalTypedTableElementList?t.visitOptionalTypedTableElementList(this):t.visitChildren(this)}},Hh=class extends ga{constructor(t,e){super(t,e)}tableElement(t){return void 0===t?this.getRuleContexts(Fh):this.getRuleContext(t,Fh)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_tableElementList}accept(t){return t.visitTableElementList?t.visitTableElementList(this):t.visitChildren(this)}},Gh=class extends ga{constructor(t,e){super(t,e)}typedTableElement(t){return void 0===t?this.getRuleContexts(vh):this.getRuleContext(t,vh)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_typedTableElementList}accept(t){return t.visitTypedTableElementList?t.visitTypedTableElementList(this):t.visitChildren(this)}},Fh=class extends ga{constructor(t,e){super(t,e)}tableConstraint(){return this.getRuleContext(0,Qh)}tableLikeClause(){return this.getRuleContext(0,Vh)}columnDefinition(){return this.getRuleContext(0,Bh)}get ruleIndex(){return cn.RULE_tableElement}accept(t){return t.visitTableElement?t.visitTableElement(this):t.visitChildren(this)}},vh=class extends ga{constructor(t,e){super(t,e)}columnOptions(){return this.getRuleContext(0,yh)}tableConstraint(){return this.getRuleContext(0,Qh)}get ruleIndex(){return cn.RULE_typedTableElement}accept(t){return t.visitTypedTableElement?t.visitTypedTableElement(this):t.visitChildren(this)}},Bh=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}typeName(){return this.getRuleContext(0,LO)}createGenericOptions(){return this.getRuleContext(0,qE)}columnQualifierList(){return this.getRuleContext(0,fh)}get ruleIndex(){return cn.RULE_columnDefinition}accept(t){return t.visitColumnDefinition?t.visitColumnDefinition(this):t.visitChildren(this)}},yh=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}columnQualifierList(){return this.getRuleContext(0,fh)}WITH(){return this.getToken(cn.WITH,0)}OPTIONS(){return this.getToken(cn.OPTIONS,0)}get ruleIndex(){return cn.RULE_columnOptions}accept(t){return t.visitColumnOptions?t.visitColumnOptions(this):t.visitChildren(this)}},fh=class extends ga{constructor(t,e){super(t,e)}columnConstraint(t){return void 0===t?this.getRuleContexts(Yh):this.getRuleContext(t,Yh)}get ruleIndex(){return cn.RULE_columnQualifierList}accept(t){return t.visitColumnQualifierList?t.visitColumnQualifierList(this):t.visitChildren(this)}},Yh=class extends ga{constructor(t,e){super(t,e)}CONSTRAINT(){return this.getToken(cn.CONSTRAINT,0)}name(){return this.getRuleContext(0,yu)}columnConstraintElement(){return this.getRuleContext(0,wh)}constraintAttribute(){return this.getRuleContext(0,Wh)}COLLATE(){return this.getToken(cn.COLLATE,0)}anyName(){return this.getRuleContext(0,mo)}get ruleIndex(){return cn.RULE_columnConstraint}accept(t){return t.visitColumnConstraint?t.visitColumnConstraint(this):t.visitChildren(this)}},wh=class extends ga{constructor(t,e){super(t,e)}NOT(){return this.getToken(cn.NOT,0)}NULL_P(){return this.getToken(cn.NULL_P,0)}UNIQUE(){return this.getToken(cn.UNIQUE,0)}optionalDefinition(){return this.getRuleContext(0,FR)}usingIndexTablespace(){return this.getRuleContext(0,OE)}PRIMARY(){return this.getToken(cn.PRIMARY,0)}KEY(){return this.getToken(cn.KEY,0)}CHECK(){return this.getToken(cn.CHECK,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}NO(){return this.getToken(cn.NO,0)}INHERIT(){return this.getToken(cn.INHERIT,0)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}expression2(){return this.getRuleContext(0,hI)}GENERATED(){return this.getToken(cn.GENERATED,0)}generatedWhen(){return this.getRuleContext(0,bh)}AS(){return this.getToken(cn.AS,0)}IDENTITY_P(){return this.getToken(cn.IDENTITY_P,0)}optionalParenthesizedSeqOptionsList(){return this.getRuleContext(0,DE)}STORED(){return this.getToken(cn.STORED,0)}REFERENCES(){return this.getToken(cn.REFERENCES,0)}qualifiedName(){return this.getRuleContext(0,vu)}columnListWithParentheses(){return this.getRuleContext(0,Zh)}matchClause(){return this.getRuleContext(0,$h)}keyActions(){return this.getRuleContext(0,aE)}get ruleIndex(){return cn.RULE_columnConstraintElement}accept(t){return t.visitColumnConstraintElement?t.visitColumnConstraintElement(this):t.visitChildren(this)}},bh=class extends ga{constructor(t,e){super(t,e)}ALWAYS(){return this.getToken(cn.ALWAYS,0)}BY(){return this.getToken(cn.BY,0)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}get ruleIndex(){return cn.RULE_generatedWhen}accept(t){return t.visitGeneratedWhen?t.visitGeneratedWhen(this):t.visitChildren(this)}},Wh=class extends ga{constructor(t,e){super(t,e)}DEFERRABLE(){return this.getToken(cn.DEFERRABLE,0)}NOT(){return this.getToken(cn.NOT,0)}INITIALLY(){return this.getToken(cn.INITIALLY,0)}DEFERRED(){return this.getToken(cn.DEFERRED,0)}IMMEDIATE(){return this.getToken(cn.IMMEDIATE,0)}get ruleIndex(){return cn.RULE_constraintAttribute}accept(t){return t.visitConstraintAttribute?t.visitConstraintAttribute(this):t.visitChildren(this)}},Vh=class extends ga{constructor(t,e){super(t,e)}LIKE(){return this.getToken(cn.LIKE,0)}qualifiedName(){return this.getRuleContext(0,vu)}tableLikeOptionList(){return this.getRuleContext(0,Xh)}get ruleIndex(){return cn.RULE_tableLikeClause}accept(t){return t.visitTableLikeClause?t.visitTableLikeClause(this):t.visitChildren(this)}},Xh=class extends ga{constructor(t,e){super(t,e)}tableLikeOption(t){return void 0===t?this.getRuleContexts(Kh):this.getRuleContext(t,Kh)}INCLUDING(t){return void 0===t?this.getTokens(cn.INCLUDING):this.getToken(cn.INCLUDING,t)}EXCLUDING(t){return void 0===t?this.getTokens(cn.EXCLUDING):this.getToken(cn.EXCLUDING,t)}get ruleIndex(){return cn.RULE_tableLikeOptionList}accept(t){return t.visitTableLikeOptionList?t.visitTableLikeOptionList(this):t.visitChildren(this)}},Kh=class extends ga{constructor(t,e){super(t,e)}COMMENTS(){return this.getToken(cn.COMMENTS,0)}CONSTRAINTS(){return this.getToken(cn.CONSTRAINTS,0)}DEFAULTS(){return this.getToken(cn.DEFAULTS,0)}IDENTITY_P(){return this.getToken(cn.IDENTITY_P,0)}GENERATED(){return this.getToken(cn.GENERATED,0)}INDEXES(){return this.getToken(cn.INDEXES,0)}STATISTICS(){return this.getToken(cn.STATISTICS,0)}STORAGE(){return this.getToken(cn.STORAGE,0)}ALL(){return this.getToken(cn.ALL,0)}get ruleIndex(){return cn.RULE_tableLikeOption}accept(t){return t.visitTableLikeOption?t.visitTableLikeOption(this):t.visitChildren(this)}},Qh=class extends ga{constructor(t,e){super(t,e)}CONSTRAINT(){return this.getToken(cn.CONSTRAINT,0)}name(){return this.getRuleContext(0,yu)}constraintElement(){return this.getRuleContext(0,Jh)}get ruleIndex(){return cn.RULE_tableConstraint}accept(t){return t.visitTableConstraint?t.visitTableConstraint(this):t.visitChildren(this)}},Jh=class extends ga{constructor(t,e){super(t,e)}CHECK(){return this.getToken(cn.CHECK,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}constraintAttributeSpecification(){return this.getRuleContext(0,WT)}UNIQUE(){return this.getToken(cn.UNIQUE,0)}columnList(){return this.getRuleContext(0,qh)}optionalColumnListInclude(){return this.getRuleContext(0,zh)}optionalDefinition(){return this.getRuleContext(0,FR)}usingIndexTablespace(){return this.getRuleContext(0,OE)}existingIndex(){return this.getRuleContext(0,IE)}PRIMARY(){return this.getToken(cn.PRIMARY,0)}KEY(){return this.getToken(cn.KEY,0)}EXCLUDE(){return this.getToken(cn.EXCLUDE,0)}optionalAccessMethodClause(){return this.getRuleContext(0,iR)}exclusionConstraintList(){return this.getRuleContext(0,tE)}exclusionWhereClause(){return this.getRuleContext(0,sE)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}REFERENCES(){return this.getToken(cn.REFERENCES,0)}qualifiedName(){return this.getRuleContext(0,vu)}columnListWithParentheses(){return this.getRuleContext(0,Zh)}matchClause(){return this.getRuleContext(0,$h)}keyActions(){return this.getRuleContext(0,aE)}get ruleIndex(){return cn.RULE_constraintElement}accept(t){return t.visitConstraintElement?t.visitConstraintElement(this):t.visitChildren(this)}},Zh=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}columnList(){return this.getRuleContext(0,qh)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_columnListWithParentheses}accept(t){return t.visitColumnListWithParentheses?t.visitColumnListWithParentheses(this):t.visitChildren(this)}},qh=class extends ga{constructor(t,e){super(t,e)}columnElement(t){return void 0===t?this.getRuleContexts(jh):this.getRuleContext(t,jh)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_columnList}accept(t){return t.visitColumnList?t.visitColumnList(this):t.visitChildren(this)}},jh=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_columnElement}accept(t){return t.visitColumnElement?t.visitColumnElement(this):t.visitChildren(this)}},zh=class extends ga{constructor(t,e){super(t,e)}INCLUDE(){return this.getToken(cn.INCLUDE,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}columnList(){return this.getRuleContext(0,qh)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_optionalColumnListInclude}accept(t){return t.visitOptionalColumnListInclude?t.visitOptionalColumnListInclude(this):t.visitChildren(this)}},$h=class extends ga{constructor(t,e){super(t,e)}MATCH(){return this.getToken(cn.MATCH,0)}FULL(){return this.getToken(cn.FULL,0)}PARTIAL(){return this.getToken(cn.PARTIAL,0)}SIMPLE(){return this.getToken(cn.SIMPLE,0)}get ruleIndex(){return cn.RULE_matchClause}accept(t){return t.visitMatchClause?t.visitMatchClause(this):t.visitChildren(this)}},tE=class extends ga{constructor(t,e){super(t,e)}exclusionConstraintElement(t){return void 0===t?this.getRuleContexts(eE):this.getRuleContext(t,eE)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_exclusionConstraintList}accept(t){return t.visitExclusionConstraintList?t.visitExclusionConstraintList(this):t.visitChildren(this)}},eE=class extends ga{constructor(t,e){super(t,e)}indexElement(){return this.getRuleContext(0,hR)}WITH(){return this.getToken(cn.WITH,0)}anyOperator(){return this.getRuleContext(0,WR)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_exclusionConstraintElement}accept(t){return t.visitExclusionConstraintElement?t.visitExclusionConstraintElement(this):t.visitChildren(this)}},sE=class extends ga{constructor(t,e){super(t,e)}WHERE(){return this.getToken(cn.WHERE,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_exclusionWhereClause}accept(t){return t.visitExclusionWhereClause?t.visitExclusionWhereClause(this):t.visitChildren(this)}},aE=class extends ga{constructor(t,e){super(t,e)}onKeyUpdateClause(){return this.getRuleContext(0,rE)}onKeyDeleteClause(){return this.getRuleContext(0,iE)}get ruleIndex(){return cn.RULE_keyActions}accept(t){return t.visitKeyActions?t.visitKeyActions(this):t.visitChildren(this)}},rE=class extends ga{constructor(t,e){super(t,e)}ON(){return this.getToken(cn.ON,0)}UPDATE(){return this.getToken(cn.UPDATE,0)}keyAction(){return this.getRuleContext(0,cE)}get ruleIndex(){return cn.RULE_onKeyUpdateClause}accept(t){return t.visitOnKeyUpdateClause?t.visitOnKeyUpdateClause(this):t.visitChildren(this)}},iE=class extends ga{constructor(t,e){super(t,e)}ON(){return this.getToken(cn.ON,0)}DELETE_P(){return this.getToken(cn.DELETE_P,0)}keyAction(){return this.getRuleContext(0,cE)}get ruleIndex(){return cn.RULE_onKeyDeleteClause}accept(t){return t.visitOnKeyDeleteClause?t.visitOnKeyDeleteClause(this):t.visitChildren(this)}},cE=class extends ga{constructor(t,e){super(t,e)}NO(){return this.getToken(cn.NO,0)}ACTION(){return this.getToken(cn.ACTION,0)}RESTRICT(){return this.getToken(cn.RESTRICT,0)}CASCADE(){return this.getToken(cn.CASCADE,0)}SET(){return this.getToken(cn.SET,0)}NULL_P(){return this.getToken(cn.NULL_P,0)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}get ruleIndex(){return cn.RULE_keyAction}accept(t){return t.visitKeyAction?t.visitKeyAction(this):t.visitChildren(this)}},nE=class extends ga{constructor(t,e){super(t,e)}INHERITS(){return this.getToken(cn.INHERITS,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}qualifiedNameList(){return this.getRuleContext(0,du)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_inheritClause}accept(t){return t.visitInheritClause?t.visitInheritClause(this):t.visitChildren(this)}},hE=class extends ga{constructor(t,e){super(t,e)}partitionSpecification(){return this.getRuleContext(0,EE)}get ruleIndex(){return cn.RULE_optionalPartitionSpecification}accept(t){return t.visitOptionalPartitionSpecification?t.visitOptionalPartitionSpecification(this):t.visitChildren(this)}},EE=class extends ga{constructor(t,e){super(t,e)}PARTITION(){return this.getToken(cn.PARTITION,0)}BY(){return this.getToken(cn.BY,0)}columnId(){return this.getRuleContext(0,$u)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}partitionElements(){return this.getRuleContext(0,TE)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_partitionSpecification}accept(t){return t.visitPartitionSpecification?t.visitPartitionSpecification(this):t.visitChildren(this)}},TE=class extends ga{constructor(t,e){super(t,e)}partitionElement(t){return void 0===t?this.getRuleContexts(oE):this.getRuleContext(t,oE)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_partitionElements}accept(t){return t.visitPartitionElements?t.visitPartitionElements(this):t.visitChildren(this)}},oE=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}optionalCollate(){return this.getRuleContext(0,TR)}optionalClass(){return this.getRuleContext(0,oR)}functionExpressionWindowless(){return this.getRuleContext(0,OI)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_partitionElement}accept(t){return t.visitPartitionElement?t.visitPartitionElement(this):t.visitChildren(this)}},RE=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_optionalTableAccessMethodClause}accept(t){return t.visitOptionalTableAccessMethodClause?t.visitOptionalTableAccessMethodClause(this):t.visitChildren(this)}},AE=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}relOptions(){return this.getRuleContext(0,nh)}WITHOUT(){return this.getToken(cn.WITHOUT,0)}OIDS(){return this.getToken(cn.OIDS,0)}get ruleIndex(){return cn.RULE_with}accept(t){return t.visitWith?t.visitWith(this):t.visitChildren(this)}},SE=class extends ga{constructor(t,e){super(t,e)}ON(){return this.getToken(cn.ON,0)}COMMIT(){return this.getToken(cn.COMMIT,0)}DROP(){return this.getToken(cn.DROP,0)}DELETE_P(){return this.getToken(cn.DELETE_P,0)}ROWS(){return this.getToken(cn.ROWS,0)}PRESERVE(){return this.getToken(cn.PRESERVE,0)}get ruleIndex(){return cn.RULE_onCommitOption}accept(t){return t.visitOnCommitOption?t.visitOnCommitOption(this):t.visitChildren(this)}},lE=class extends ga{constructor(t,e){super(t,e)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_optionalTablespace}accept(t){return t.visitOptionalTablespace?t.visitOptionalTablespace(this):t.visitChildren(this)}},OE=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}INDEX(){return this.getToken(cn.INDEX,0)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_usingIndexTablespace}accept(t){return t.visitUsingIndexTablespace?t.visitUsingIndexTablespace(this):t.visitChildren(this)}},IE=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}INDEX(){return this.getToken(cn.INDEX,0)}indexName(){return this.getRuleContext(0,gu)}get ruleIndex(){return cn.RULE_existingIndex}accept(t){return t.visitExistingIndex?t.visitExistingIndex(this):t.visitChildren(this)}},uE=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}STATISTICS(){return this.getToken(cn.STATISTICS,0)}anyName(){return this.getRuleContext(0,mo)}optionalNameList(){return this.getRuleContext(0,uS)}ON(){return this.getToken(cn.ON,0)}expressionList(){return this.getRuleContext(0,ZI)}FROM(){return this.getToken(cn.FROM,0)}fromList(){return this.getRuleContext(0,Xl)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_createStatsStatement}accept(t){return t.visitCreateStatsStatement?t.visitCreateStatsStatement(this):t.visitChildren(this)}},NE=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}STATISTICS(t){return void 0===t?this.getTokens(cn.STATISTICS):this.getToken(cn.STATISTICS,t)}anyName(){return this.getRuleContext(0,mo)}SET(){return this.getToken(cn.SET,0)}signedIconst(){return this.getRuleContext(0,qu)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_alterStatsStatement}accept(t){return t.visitAlterStatsStatement?t.visitAlterStatsStatement(this):t.visitChildren(this)}},LE=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}temporaryOption(){return this.getRuleContext(0,gh)}TABLE(){return this.getToken(cn.TABLE,0)}createAsTarget(){return this.getRuleContext(0,CE)}AS(){return this.getToken(cn.AS,0)}selectStatement(){return this.getRuleContext(0,il)}withData(){return this.getRuleContext(0,_E)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_createAsStatement}accept(t){return t.visitCreateAsStatement?t.visitCreateAsStatement(this):t.visitChildren(this)}},CE=class extends ga{constructor(t,e){super(t,e)}qualifiedName(){return this.getRuleContext(0,vu)}columnListWithParentheses(){return this.getRuleContext(0,Zh)}optionalTableAccessMethodClause(){return this.getRuleContext(0,RE)}with(){return this.getRuleContext(0,AE)}onCommitOption(){return this.getRuleContext(0,SE)}optionalTablespace(){return this.getRuleContext(0,lE)}get ruleIndex(){return cn.RULE_createAsTarget}accept(t){return t.visitCreateAsTarget?t.visitCreateAsTarget(this):t.visitChildren(this)}},_E=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}DATA_P(){return this.getToken(cn.DATA_P,0)}NO(){return this.getToken(cn.NO,0)}get ruleIndex(){return cn.RULE_withData}accept(t){return t.visitWithData?t.visitWithData(this):t.visitChildren(this)}},PE=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}MATERIALIZED(){return this.getToken(cn.MATERIALIZED,0)}VIEW(){return this.getToken(cn.VIEW,0)}createMaterializedViewTarget(){return this.getRuleContext(0,ME)}AS(){return this.getToken(cn.AS,0)}selectStatement(){return this.getRuleContext(0,il)}withData(){return this.getRuleContext(0,_E)}UNLOGGED(){return this.getToken(cn.UNLOGGED,0)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_createMaterializedViewStatement}accept(t){return t.visitCreateMaterializedViewStatement?t.visitCreateMaterializedViewStatement(this):t.visitChildren(this)}},ME=class extends ga{constructor(t,e){super(t,e)}qualifiedName(){return this.getRuleContext(0,vu)}columnListWithParentheses(){return this.getRuleContext(0,Zh)}optionalTableAccessMethodClause(){return this.getRuleContext(0,RE)}optionalRelOptions(){return this.getRuleContext(0,hh)}optionalTablespace(){return this.getRuleContext(0,lE)}get ruleIndex(){return cn.RULE_createMaterializedViewTarget}accept(t){return t.visitCreateMaterializedViewTarget?t.visitCreateMaterializedViewTarget(this):t.visitChildren(this)}},dE=class extends ga{constructor(t,e){super(t,e)}REFRESH(){return this.getToken(cn.REFRESH,0)}MATERIALIZED(){return this.getToken(cn.MATERIALIZED,0)}VIEW(){return this.getToken(cn.VIEW,0)}qualifiedName(){return this.getRuleContext(0,vu)}withData(){return this.getRuleContext(0,_E)}CONCURRENTLY(){return this.getToken(cn.CONCURRENTLY,0)}get ruleIndex(){return cn.RULE_refreshMaterializedViewStatement}accept(t){return t.visitRefreshMaterializedViewStatement?t.visitRefreshMaterializedViewStatement(this):t.visitChildren(this)}},UE=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}temporaryOption(){return this.getRuleContext(0,gh)}SEQUENCE(){return this.getToken(cn.SEQUENCE,0)}qualifiedName(){return this.getRuleContext(0,vu)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}sequenceOptionList(){return this.getRuleContext(0,pE)}get ruleIndex(){return cn.RULE_createSequenceStatement}accept(t){return t.visitCreateSequenceStatement?t.visitCreateSequenceStatement(this):t.visitChildren(this)}},mE=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}SEQUENCE(){return this.getToken(cn.SEQUENCE,0)}sequenceName(){return this.getRuleContext(0,Gu)}sequenceOptionList(){return this.getRuleContext(0,pE)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_alterSequenceStatement}accept(t){return t.visitAlterSequenceStatement?t.visitAlterSequenceStatement(this):t.visitChildren(this)}},DE=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}sequenceOptionList(){return this.getRuleContext(0,pE)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_optionalParenthesizedSeqOptionsList}accept(t){return t.visitOptionalParenthesizedSeqOptionsList?t.visitOptionalParenthesizedSeqOptionsList(this):t.visitChildren(this)}},pE=class extends ga{constructor(t,e){super(t,e)}sequenceOptionItem(t){return void 0===t?this.getRuleContexts(gE):this.getRuleContext(t,gE)}get ruleIndex(){return cn.RULE_sequenceOptionList}accept(t){return t.visitSequenceOptionList?t.visitSequenceOptionList(this):t.visitChildren(this)}},gE=class extends ga{constructor(t,e){super(t,e)}AS(){return this.getToken(cn.AS,0)}simpleTypeName(){return this.getRuleContext(0,CO)}CACHE(){return this.getToken(cn.CACHE,0)}numericOnly(){return this.getRuleContext(0,xE)}CYCLE(){return this.getToken(cn.CYCLE,0)}INCREMENT(){return this.getToken(cn.INCREMENT,0)}BY(){return this.getToken(cn.BY,0)}MAXVALUE(){return this.getToken(cn.MAXVALUE,0)}MINVALUE(){return this.getToken(cn.MINVALUE,0)}NO(){return this.getToken(cn.NO,0)}OWNED(){return this.getToken(cn.OWNED,0)}anyName(){return this.getRuleContext(0,mo)}SEQUENCE(){return this.getToken(cn.SEQUENCE,0)}NAME_P(){return this.getToken(cn.NAME_P,0)}START(){return this.getToken(cn.START,0)}optionalWith(){return this.getRuleContext(0,An)}RESTART(){return this.getToken(cn.RESTART,0)}get ruleIndex(){return cn.RULE_sequenceOptionItem}accept(t){return t.visitSequenceOptionItem?t.visitSequenceOptionItem(this):t.visitChildren(this)}},xE=class extends ga{constructor(t,e){super(t,e)}fconst(){return this.getRuleContext(0,Xu)}PLUS(){return this.getToken(cn.PLUS,0)}MINUS(){return this.getToken(cn.MINUS,0)}signedIconst(){return this.getRuleContext(0,qu)}get ruleIndex(){return cn.RULE_numericOnly}accept(t){return t.visitNumericOnly?t.visitNumericOnly(this):t.visitChildren(this)}},kE=class extends ga{constructor(t,e){super(t,e)}numericOnly(t){return void 0===t?this.getRuleContexts(xE):this.getRuleContext(t,xE)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_numericOnlyList}accept(t){return t.visitNumericOnlyList?t.visitNumericOnlyList(this):t.visitChildren(this)}},HE=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}optionalOrReplace(){return this.getRuleContext(0,lR)}optionalProcedural(){return this.getRuleContext(0,BE)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}name(){return this.getRuleContext(0,yu)}TRUSTED(){return this.getToken(cn.TRUSTED,0)}HANDLER(){return this.getToken(cn.HANDLER,0)}handlerName(){return this.getRuleContext(0,GE)}optionalInlineHandler(){return this.getRuleContext(0,FE)}validatorClause(){return this.getRuleContext(0,vE)}get ruleIndex(){return cn.RULE_createProcedureLangStatement}accept(t){return t.visitCreateProcedureLangStatement?t.visitCreateProcedureLangStatement(this):t.visitChildren(this)}},GE=class extends ga{constructor(t,e){super(t,e)}name(){return this.getRuleContext(0,yu)}attributes(){return this.getRuleContext(0,Do)}get ruleIndex(){return cn.RULE_handlerName}accept(t){return t.visitHandlerName?t.visitHandlerName(this):t.visitChildren(this)}},FE=class extends ga{constructor(t,e){super(t,e)}INLINE_P(){return this.getToken(cn.INLINE_P,0)}handlerName(){return this.getRuleContext(0,GE)}get ruleIndex(){return cn.RULE_optionalInlineHandler}accept(t){return t.visitOptionalInlineHandler?t.visitOptionalInlineHandler(this):t.visitChildren(this)}},vE=class extends ga{constructor(t,e){super(t,e)}VALIDATOR(){return this.getToken(cn.VALIDATOR,0)}handlerName(){return this.getRuleContext(0,GE)}NO(){return this.getToken(cn.NO,0)}get ruleIndex(){return cn.RULE_validatorClause}accept(t){return t.visitValidatorClause?t.visitValidatorClause(this):t.visitChildren(this)}},BE=class extends ga{constructor(t,e){super(t,e)}PROCEDURAL(){return this.getToken(cn.PROCEDURAL,0)}get ruleIndex(){return cn.RULE_optionalProcedural}accept(t){return t.visitOptionalProcedural?t.visitOptionalProcedural(this):t.visitChildren(this)}},yE=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}name(){return this.getRuleContext(0,yu)}optionalTablespaceOwner(){return this.getRuleContext(0,fE)}LOCATION(){return this.getToken(cn.LOCATION,0)}sconst(){return this.getRuleContext(0,Qu)}optionalRelOptions(){return this.getRuleContext(0,hh)}get ruleIndex(){return cn.RULE_createTablespaceStatement}accept(t){return t.visitCreateTablespaceStatement?t.visitCreateTablespaceStatement(this):t.visitChildren(this)}},fE=class extends ga{constructor(t,e){super(t,e)}OWNER(){return this.getToken(cn.OWNER,0)}roleName(){return this.getRuleContext(0,ju)}get ruleIndex(){return cn.RULE_optionalTablespaceOwner}accept(t){return t.visitOptionalTablespaceOwner?t.visitOptionalTablespaceOwner(this):t.visitChildren(this)}},YE=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}name(){return this.getRuleContext(0,yu)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_dropTablespaceStatement}accept(t){return t.visitDropTablespaceStatement?t.visitDropTablespaceStatement(this):t.visitChildren(this)}},wE=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}EXTENSION(){return this.getToken(cn.EXTENSION,0)}name(){return this.getRuleContext(0,yu)}optionalWith(){return this.getRuleContext(0,An)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}createExtensionOptionItem(t){return void 0===t?this.getRuleContexts(bE):this.getRuleContext(t,bE)}get ruleIndex(){return cn.RULE_createExtensionStatement}accept(t){return t.visitCreateExtensionStatement?t.visitCreateExtensionStatement(this):t.visitChildren(this)}},bE=class extends ga{constructor(t,e){super(t,e)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaName(){return this.getRuleContext(0,Du)}VERSION_P(){return this.getToken(cn.VERSION_P,0)}nonReservedWordOrSconst(){return this.getRuleContext(0,fn)}FROM(){return this.getToken(cn.FROM,0)}CASCADE(){return this.getToken(cn.CASCADE,0)}get ruleIndex(){return cn.RULE_createExtensionOptionItem}accept(t){return t.visitCreateExtensionOptionItem?t.visitCreateExtensionOptionItem(this):t.visitChildren(this)}},WE=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}EXTENSION(){return this.getToken(cn.EXTENSION,0)}name(){return this.getRuleContext(0,yu)}UPDATE(){return this.getToken(cn.UPDATE,0)}alterExtensionOptionItem(t){return void 0===t?this.getRuleContexts(VE):this.getRuleContext(t,VE)}get ruleIndex(){return cn.RULE_alterExtensionStatement}accept(t){return t.visitAlterExtensionStatement?t.visitAlterExtensionStatement(this):t.visitChildren(this)}},VE=class extends ga{constructor(t,e){super(t,e)}TO(){return this.getToken(cn.TO,0)}nonReservedWordOrSconst(){return this.getRuleContext(0,fn)}get ruleIndex(){return cn.RULE_alterExtensionOptionItem}accept(t){return t.visitAlterExtensionOptionItem?t.visitAlterExtensionOptionItem(this):t.visitChildren(this)}},XE=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}EXTENSION(){return this.getToken(cn.EXTENSION,0)}name(t){return void 0===t?this.getRuleContexts(yu):this.getRuleContext(t,yu)}addOrDrop(){return this.getRuleContext(0,Pn)}objectTypeName(){return this.getRuleContext(0,_o)}ROLE(){return this.getToken(cn.ROLE,0)}roleName(){return this.getRuleContext(0,ju)}DATABASE(){return this.getToken(cn.DATABASE,0)}databaseName(){return this.getRuleContext(0,Uu)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaName(){return this.getRuleContext(0,Du)}INDEX(){return this.getToken(cn.INDEX,0)}indexName(){return this.getRuleContext(0,gu)}objectTypeAnyName(){return this.getRuleContext(0,Co)}anyName(){return this.getRuleContext(0,mo)}SEQUENCE(){return this.getToken(cn.SEQUENCE,0)}sequenceName(){return this.getRuleContext(0,Gu)}AGGREGATE(){return this.getToken(cn.AGGREGATE,0)}aggregateWithArgumentTypes(){return this.getRuleContext(0,DR)}CAST(){return this.getToken(cn.CAST,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}typeName(t){return void 0===t?this.getRuleContexts(LO):this.getRuleContext(t,LO)}AS(){return this.getToken(cn.AS,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}DOMAIN_P(){return this.getToken(cn.DOMAIN_P,0)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}functionWithArgumentTypes(){return this.getRuleContext(0,uR)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}operatorWithArgumentTypes(){return this.getRuleContext(0,XR)}CLASS(){return this.getToken(cn.CLASS,0)}USING(){return this.getToken(cn.USING,0)}FAMILY(){return this.getToken(cn.FAMILY,0)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}ROUTINE(){return this.getToken(cn.ROUTINE,0)}TRANSFORM(){return this.getToken(cn.TRANSFORM,0)}FOR(){return this.getToken(cn.FOR,0)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}get ruleIndex(){return cn.RULE_alterExtensionContentsStatement}accept(t){return t.visitAlterExtensionContentsStatement?t.visitAlterExtensionContentsStatement(this):t.visitChildren(this)}},KE=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}DATA_P(){return this.getToken(cn.DATA_P,0)}WRAPPER(){return this.getToken(cn.WRAPPER,0)}name(){return this.getRuleContext(0,yu)}createGenericOptions(){return this.getRuleContext(0,qE)}forwardOptions(){return this.getRuleContext(0,JE)}get ruleIndex(){return cn.RULE_createForeignDataWrapperStatement}accept(t){return t.visitCreateForeignDataWrapperStatement?t.visitCreateForeignDataWrapperStatement(this):t.visitChildren(this)}},QE=class extends ga{constructor(t,e){super(t,e)}HANDLER(){return this.getToken(cn.HANDLER,0)}handlerName(){return this.getRuleContext(0,GE)}NO(){return this.getToken(cn.NO,0)}VALIDATOR(){return this.getToken(cn.VALIDATOR,0)}get ruleIndex(){return cn.RULE_forwardOption}accept(t){return t.visitForwardOption?t.visitForwardOption(this):t.visitChildren(this)}},JE=class extends ga{constructor(t,e){super(t,e)}forwardOption(t){return void 0===t?this.getRuleContexts(QE):this.getRuleContext(t,QE)}get ruleIndex(){return cn.RULE_forwardOptions}accept(t){return t.visitForwardOptions?t.visitForwardOptions(this):t.visitChildren(this)}},ZE=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}DATA_P(){return this.getToken(cn.DATA_P,0)}WRAPPER(){return this.getToken(cn.WRAPPER,0)}name(){return this.getRuleContext(0,yu)}alterGenericOptions(){return this.getRuleContext(0,zE)}forwardOptions(){return this.getRuleContext(0,JE)}get ruleIndex(){return cn.RULE_alterForeignDataWrapperStatement}accept(t){return t.visitAlterForeignDataWrapperStatement?t.visitAlterForeignDataWrapperStatement(this):t.visitChildren(this)}},qE=class extends ga{constructor(t,e){super(t,e)}OPTIONS(){return this.getToken(cn.OPTIONS,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}genericOptionList(){return this.getRuleContext(0,jE)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_createGenericOptions}accept(t){return t.visitCreateGenericOptions?t.visitCreateGenericOptions(this):t.visitChildren(this)}},jE=class extends ga{constructor(t,e){super(t,e)}genericOptionElement(t){return void 0===t?this.getRuleContexts(eT):this.getRuleContext(t,eT)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_genericOptionList}accept(t){return t.visitGenericOptionList?t.visitGenericOptionList(this):t.visitChildren(this)}},zE=class extends ga{constructor(t,e){super(t,e)}OPTIONS(){return this.getToken(cn.OPTIONS,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}alterGenericOptionList(){return this.getRuleContext(0,$E)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_alterGenericOptions}accept(t){return t.visitAlterGenericOptions?t.visitAlterGenericOptions(this):t.visitChildren(this)}},$E=class extends ga{constructor(t,e){super(t,e)}alterGenericOptionElem(t){return void 0===t?this.getRuleContexts(tT):this.getRuleContext(t,tT)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_alterGenericOptionList}accept(t){return t.visitAlterGenericOptionList?t.visitAlterGenericOptionList(this):t.visitChildren(this)}},tT=class extends ga{constructor(t,e){super(t,e)}genericOptionElement(){return this.getRuleContext(0,eT)}SET(){return this.getToken(cn.SET,0)}ADD_P(){return this.getToken(cn.ADD_P,0)}DROP(){return this.getToken(cn.DROP,0)}genericOptionName(){return this.getRuleContext(0,sT)}get ruleIndex(){return cn.RULE_alterGenericOptionElem}accept(t){return t.visitAlterGenericOptionElem?t.visitAlterGenericOptionElem(this):t.visitChildren(this)}},eT=class extends ga{constructor(t,e){super(t,e)}genericOptionName(){return this.getRuleContext(0,sT)}genericOptionArgument(){return this.getRuleContext(0,aT)}get ruleIndex(){return cn.RULE_genericOptionElement}accept(t){return t.visitGenericOptionElement?t.visitGenericOptionElement(this):t.visitChildren(this)}},sT=class extends ga{constructor(t,e){super(t,e)}columnLabel(){return this.getRuleContext(0,aN)}get ruleIndex(){return cn.RULE_genericOptionName}accept(t){return t.visitGenericOptionName?t.visitGenericOptionName(this):t.visitChildren(this)}},aT=class extends ga{constructor(t,e){super(t,e)}sconst(){return this.getRuleContext(0,Qu)}get ruleIndex(){return cn.RULE_genericOptionArgument}accept(t){return t.visitGenericOptionArgument?t.visitGenericOptionArgument(this):t.visitChildren(this)}},rT=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}SERVER(){return this.getToken(cn.SERVER,0)}name(t){return void 0===t?this.getRuleContexts(yu):this.getRuleContext(t,yu)}optionalType(){return this.getRuleContext(0,iT)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}DATA_P(){return this.getToken(cn.DATA_P,0)}WRAPPER(){return this.getToken(cn.WRAPPER,0)}createGenericOptions(){return this.getRuleContext(0,qE)}foreignServerVersion(){return this.getRuleContext(0,cT)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_createForeignServerStatement}accept(t){return t.visitCreateForeignServerStatement?t.visitCreateForeignServerStatement(this):t.visitChildren(this)}},iT=class extends ga{constructor(t,e){super(t,e)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}sconst(){return this.getRuleContext(0,Qu)}get ruleIndex(){return cn.RULE_optionalType}accept(t){return t.visitOptionalType?t.visitOptionalType(this):t.visitChildren(this)}},cT=class extends ga{constructor(t,e){super(t,e)}VERSION_P(){return this.getToken(cn.VERSION_P,0)}sconst(){return this.getRuleContext(0,Qu)}NULL_P(){return this.getToken(cn.NULL_P,0)}get ruleIndex(){return cn.RULE_foreignServerVersion}accept(t){return t.visitForeignServerVersion?t.visitForeignServerVersion(this):t.visitChildren(this)}},nT=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}SERVER(){return this.getToken(cn.SERVER,0)}name(){return this.getRuleContext(0,yu)}alterGenericOptions(){return this.getRuleContext(0,zE)}foreignServerVersion(){return this.getRuleContext(0,cT)}get ruleIndex(){return cn.RULE_alterForeignServerStatement}accept(t){return t.visitAlterForeignServerStatement?t.visitAlterForeignServerStatement(this):t.visitChildren(this)}},hT=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}TABLE(){return this.getToken(cn.TABLE,0)}qualifiedName(t){return void 0===t?this.getRuleContexts(vu):this.getRuleContext(t,vu)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}optionalTableElementList(){return this.getRuleContext(0,xh)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}inheritClause(){return this.getRuleContext(0,nE)}SERVER(){return this.getToken(cn.SERVER,0)}name(){return this.getRuleContext(0,yu)}createGenericOptions(){return this.getRuleContext(0,qE)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}PARTITION(){return this.getToken(cn.PARTITION,0)}OF(){return this.getToken(cn.OF,0)}optionalTypedTableElementList(){return this.getRuleContext(0,kh)}partitionBoundSpecification(){return this.getRuleContext(0,Ah)}get ruleIndex(){return cn.RULE_createForeignTableStatement}accept(t){return t.visitCreateForeignTableStatement?t.visitCreateForeignTableStatement(this):t.visitChildren(this)}},ET=class extends ga{constructor(t,e){super(t,e)}IMPORT_P(){return this.getToken(cn.IMPORT_P,0)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}name(t){return void 0===t?this.getRuleContexts(yu):this.getRuleContext(t,yu)}importQualification(){return this.getRuleContext(0,oT)}FROM(){return this.getToken(cn.FROM,0)}SERVER(){return this.getToken(cn.SERVER,0)}INTO(){return this.getToken(cn.INTO,0)}createGenericOptions(){return this.getRuleContext(0,qE)}get ruleIndex(){return cn.RULE_importForeignSchemaStatement}accept(t){return t.visitImportForeignSchemaStatement?t.visitImportForeignSchemaStatement(this):t.visitChildren(this)}},TT=class extends ga{constructor(t,e){super(t,e)}LIMIT(){return this.getToken(cn.LIMIT,0)}TO(){return this.getToken(cn.TO,0)}EXCEPT(){return this.getToken(cn.EXCEPT,0)}get ruleIndex(){return cn.RULE_importQualificationType}accept(t){return t.visitImportQualificationType?t.visitImportQualificationType(this):t.visitChildren(this)}},oT=class extends ga{constructor(t,e){super(t,e)}importQualificationType(){return this.getRuleContext(0,TT)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}relationExpressionList(){return this.getRuleContext(0,sO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_importQualification}accept(t){return t.visitImportQualification?t.visitImportQualification(this):t.visitChildren(this)}},RT=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}USER(){return this.getToken(cn.USER,0)}MAPPING(){return this.getToken(cn.MAPPING,0)}FOR(){return this.getToken(cn.FOR,0)}authIdentifier(){return this.getRuleContext(0,AT)}SERVER(){return this.getToken(cn.SERVER,0)}name(){return this.getRuleContext(0,yu)}createGenericOptions(){return this.getRuleContext(0,qE)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_createUserMappingStatement}accept(t){return t.visitCreateUserMappingStatement?t.visitCreateUserMappingStatement(this):t.visitChildren(this)}},AT=class extends ga{constructor(t,e){super(t,e)}roleName(){return this.getRuleContext(0,ju)}USER(){return this.getToken(cn.USER,0)}get ruleIndex(){return cn.RULE_authIdentifier}accept(t){return t.visitAuthIdentifier?t.visitAuthIdentifier(this):t.visitChildren(this)}},ST=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}USER(){return this.getToken(cn.USER,0)}MAPPING(){return this.getToken(cn.MAPPING,0)}FOR(){return this.getToken(cn.FOR,0)}authIdentifier(){return this.getRuleContext(0,AT)}SERVER(){return this.getToken(cn.SERVER,0)}name(){return this.getRuleContext(0,yu)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_dropUserMappingStatement}accept(t){return t.visitDropUserMappingStatement?t.visitDropUserMappingStatement(this):t.visitChildren(this)}},lT=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}USER(){return this.getToken(cn.USER,0)}MAPPING(){return this.getToken(cn.MAPPING,0)}FOR(){return this.getToken(cn.FOR,0)}authIdentifier(){return this.getRuleContext(0,AT)}SERVER(){return this.getToken(cn.SERVER,0)}name(){return this.getRuleContext(0,yu)}alterGenericOptions(){return this.getRuleContext(0,zE)}get ruleIndex(){return cn.RULE_alterUserMappingStatement}accept(t){return t.visitAlterUserMappingStatement?t.visitAlterUserMappingStatement(this):t.visitChildren(this)}},OT=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}POLICY(){return this.getToken(cn.POLICY,0)}name(){return this.getRuleContext(0,yu)}ON(){return this.getToken(cn.ON,0)}qualifiedName(){return this.getRuleContext(0,vu)}rowSecurityDefaultPermissive(){return this.getRuleContext(0,CT)}rowSecurityDefaultForCmd(){return this.getRuleContext(0,_T)}rowSecurityOptionalToUser(){return this.getRuleContext(0,LT)}rowSecurityOptionalExpression(){return this.getRuleContext(0,uT)}rowSecurityOptionalWithCheck(){return this.getRuleContext(0,NT)}get ruleIndex(){return cn.RULE_createPolicyStatement}accept(t){return t.visitCreatePolicyStatement?t.visitCreatePolicyStatement(this):t.visitChildren(this)}},IT=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}POLICY(){return this.getToken(cn.POLICY,0)}name(){return this.getRuleContext(0,yu)}ON(){return this.getToken(cn.ON,0)}qualifiedName(){return this.getRuleContext(0,vu)}rowSecurityOptionalToUser(){return this.getRuleContext(0,LT)}rowSecurityOptionalExpression(){return this.getRuleContext(0,uT)}rowSecurityOptionalWithCheck(){return this.getRuleContext(0,NT)}get ruleIndex(){return cn.RULE_alterPolicyStatement}accept(t){return t.visitAlterPolicyStatement?t.visitAlterPolicyStatement(this):t.visitChildren(this)}},uT=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_rowSecurityOptionalExpression}accept(t){return t.visitRowSecurityOptionalExpression?t.visitRowSecurityOptionalExpression(this):t.visitChildren(this)}},NT=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}CHECK(){return this.getToken(cn.CHECK,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_rowSecurityOptionalWithCheck}accept(t){return t.visitRowSecurityOptionalWithCheck?t.visitRowSecurityOptionalWithCheck(this):t.visitChildren(this)}},LT=class extends ga{constructor(t,e){super(t,e)}TO(){return this.getToken(cn.TO,0)}roleNameList(){return this.getRuleContext(0,zu)}get ruleIndex(){return cn.RULE_rowSecurityOptionalToUser}accept(t){return t.visitRowSecurityOptionalToUser?t.visitRowSecurityOptionalToUser(this):t.visitChildren(this)}},CT=class extends ga{constructor(t,e){super(t,e)}AS(){return this.getToken(cn.AS,0)}identifier(){return this.getRuleContext(0,rN)}get ruleIndex(){return cn.RULE_rowSecurityDefaultPermissive}accept(t){return t.visitRowSecurityDefaultPermissive?t.visitRowSecurityDefaultPermissive(this):t.visitChildren(this)}},_T=class extends ga{constructor(t,e){super(t,e)}FOR(){return this.getToken(cn.FOR,0)}rowSecurityCommand(){return this.getRuleContext(0,PT)}get ruleIndex(){return cn.RULE_rowSecurityDefaultForCmd}accept(t){return t.visitRowSecurityDefaultForCmd?t.visitRowSecurityDefaultForCmd(this):t.visitChildren(this)}},PT=class extends ga{constructor(t,e){super(t,e)}ALL(){return this.getToken(cn.ALL,0)}SELECT(){return this.getToken(cn.SELECT,0)}INSERT(){return this.getToken(cn.INSERT,0)}UPDATE(){return this.getToken(cn.UPDATE,0)}DELETE_P(){return this.getToken(cn.DELETE_P,0)}get ruleIndex(){return cn.RULE_rowSecurityCommand}accept(t){return t.visitRowSecurityCommand?t.visitRowSecurityCommand(this):t.visitChildren(this)}},MT=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}ACCESS(){return this.getToken(cn.ACCESS,0)}METHOD(){return this.getToken(cn.METHOD,0)}name(){return this.getRuleContext(0,yu)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}accessMethodType(){return this.getRuleContext(0,dT)}HANDLER(){return this.getToken(cn.HANDLER,0)}handlerName(){return this.getRuleContext(0,GE)}get ruleIndex(){return cn.RULE_createAccessMethodStatement}accept(t){return t.visitCreateAccessMethodStatement?t.visitCreateAccessMethodStatement(this):t.visitChildren(this)}},dT=class extends ga{constructor(t,e){super(t,e)}INDEX(){return this.getToken(cn.INDEX,0)}TABLE(){return this.getToken(cn.TABLE,0)}get ruleIndex(){return cn.RULE_accessMethodType}accept(t){return t.visitAccessMethodType?t.visitAccessMethodType(this):t.visitChildren(this)}},UT=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}TRIGGER(){return this.getToken(cn.TRIGGER,0)}name(){return this.getRuleContext(0,yu)}triggerActionTime(){return this.getRuleContext(0,mT)}triggerEvents(){return this.getRuleContext(0,DT)}ON(){return this.getToken(cn.ON,0)}qualifiedName(){return this.getRuleContext(0,vu)}triggerReferencing(){return this.getRuleContext(0,gT)}triggerForSpec(){return this.getRuleContext(0,vT)}triggerWhen(){return this.getRuleContext(0,yT)}EXECUTE(){return this.getToken(cn.EXECUTE,0)}functionOrProcedure(){return this.getRuleContext(0,fT)}functionName(){return this.getRuleContext(0,wu)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}triggerFunctionArguments(){return this.getRuleContext(0,YT)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}CONSTRAINT(){return this.getToken(cn.CONSTRAINT,0)}AFTER(){return this.getToken(cn.AFTER,0)}optionalConstraintFromTable(){return this.getRuleContext(0,bT)}constraintAttributeSpecification(){return this.getRuleContext(0,WT)}FOR(){return this.getToken(cn.FOR,0)}EACH(){return this.getToken(cn.EACH,0)}ROW(){return this.getToken(cn.ROW,0)}get ruleIndex(){return cn.RULE_createTriggerStatement}accept(t){return t.visitCreateTriggerStatement?t.visitCreateTriggerStatement(this):t.visitChildren(this)}},mT=class extends ga{constructor(t,e){super(t,e)}BEFORE(){return this.getToken(cn.BEFORE,0)}AFTER(){return this.getToken(cn.AFTER,0)}INSTEAD(){return this.getToken(cn.INSTEAD,0)}OF(){return this.getToken(cn.OF,0)}get ruleIndex(){return cn.RULE_triggerActionTime}accept(t){return t.visitTriggerActionTime?t.visitTriggerActionTime(this):t.visitChildren(this)}},DT=class extends ga{constructor(t,e){super(t,e)}triggerOneEvent(t){return void 0===t?this.getRuleContexts(pT):this.getRuleContext(t,pT)}OR(t){return void 0===t?this.getTokens(cn.OR):this.getToken(cn.OR,t)}get ruleIndex(){return cn.RULE_triggerEvents}accept(t){return t.visitTriggerEvents?t.visitTriggerEvents(this):t.visitChildren(this)}},pT=class extends ga{constructor(t,e){super(t,e)}INSERT(){return this.getToken(cn.INSERT,0)}DELETE_P(){return this.getToken(cn.DELETE_P,0)}UPDATE(){return this.getToken(cn.UPDATE,0)}OF(){return this.getToken(cn.OF,0)}columnList(){return this.getRuleContext(0,qh)}TRUNCATE(){return this.getToken(cn.TRUNCATE,0)}get ruleIndex(){return cn.RULE_triggerOneEvent}accept(t){return t.visitTriggerOneEvent?t.visitTriggerOneEvent(this):t.visitChildren(this)}},gT=class extends ga{constructor(t,e){super(t,e)}REFERENCING(){return this.getToken(cn.REFERENCING,0)}triggerTransitions(){return this.getRuleContext(0,xT)}get ruleIndex(){return cn.RULE_triggerReferencing}accept(t){return t.visitTriggerReferencing?t.visitTriggerReferencing(this):t.visitChildren(this)}},xT=class extends ga{constructor(t,e){super(t,e)}triggerTransition(t){return void 0===t?this.getRuleContexts(kT):this.getRuleContext(t,kT)}get ruleIndex(){return cn.RULE_triggerTransitions}accept(t){return t.visitTriggerTransitions?t.visitTriggerTransitions(this):t.visitChildren(this)}},kT=class extends ga{constructor(t,e){super(t,e)}transitionOldOrNew(){return this.getRuleContext(0,HT)}transitionRowOrTable(){return this.getRuleContext(0,GT)}optionalAs(){return this.getRuleContext(0,rS)}transitionRelName(){return this.getRuleContext(0,FT)}get ruleIndex(){return cn.RULE_triggerTransition}accept(t){return t.visitTriggerTransition?t.visitTriggerTransition(this):t.visitChildren(this)}},HT=class extends ga{constructor(t,e){super(t,e)}NEW(){return this.getToken(cn.NEW,0)}OLD(){return this.getToken(cn.OLD,0)}get ruleIndex(){return cn.RULE_transitionOldOrNew}accept(t){return t.visitTransitionOldOrNew?t.visitTransitionOldOrNew(this):t.visitChildren(this)}},GT=class extends ga{constructor(t,e){super(t,e)}TABLE(){return this.getToken(cn.TABLE,0)}ROW(){return this.getToken(cn.ROW,0)}get ruleIndex(){return cn.RULE_transitionRowOrTable}accept(t){return t.visitTransitionRowOrTable?t.visitTransitionRowOrTable(this):t.visitChildren(this)}},FT=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_transitionRelName}accept(t){return t.visitTransitionRelName?t.visitTransitionRelName(this):t.visitChildren(this)}},vT=class extends ga{constructor(t,e){super(t,e)}FOR(){return this.getToken(cn.FOR,0)}triggerForType(){return this.getRuleContext(0,BT)}EACH(){return this.getToken(cn.EACH,0)}get ruleIndex(){return cn.RULE_triggerForSpec}accept(t){return t.visitTriggerForSpec?t.visitTriggerForSpec(this):t.visitChildren(this)}},BT=class extends ga{constructor(t,e){super(t,e)}ROW(){return this.getToken(cn.ROW,0)}STATEMENT(){return this.getToken(cn.STATEMENT,0)}get ruleIndex(){return cn.RULE_triggerForType}accept(t){return t.visitTriggerForType?t.visitTriggerForType(this):t.visitChildren(this)}},yT=class extends ga{constructor(t,e){super(t,e)}WHEN(){return this.getToken(cn.WHEN,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_triggerWhen}accept(t){return t.visitTriggerWhen?t.visitTriggerWhen(this):t.visitChildren(this)}},fT=class extends ga{constructor(t,e){super(t,e)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}get ruleIndex(){return cn.RULE_functionOrProcedure}accept(t){return t.visitFunctionOrProcedure?t.visitFunctionOrProcedure(this):t.visitChildren(this)}},YT=class extends ga{constructor(t,e){super(t,e)}triggerFunctionArgument(t){return void 0===t?this.getRuleContexts(wT):this.getRuleContext(t,wT)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_triggerFunctionArguments}accept(t){return t.visitTriggerFunctionArguments?t.visitTriggerFunctionArguments(this):t.visitChildren(this)}},wT=class extends ga{constructor(t,e){super(t,e)}iconst(){return this.getRuleContext(0,Ku)}fconst(){return this.getRuleContext(0,Xu)}sconst(){return this.getRuleContext(0,Qu)}columnLabel(){return this.getRuleContext(0,aN)}get ruleIndex(){return cn.RULE_triggerFunctionArgument}accept(t){return t.visitTriggerFunctionArgument?t.visitTriggerFunctionArgument(this):t.visitChildren(this)}},bT=class extends ga{constructor(t,e){super(t,e)}FROM(){return this.getToken(cn.FROM,0)}qualifiedName(){return this.getRuleContext(0,vu)}get ruleIndex(){return cn.RULE_optionalConstraintFromTable}accept(t){return t.visitOptionalConstraintFromTable?t.visitOptionalConstraintFromTable(this):t.visitChildren(this)}},WT=class extends ga{constructor(t,e){super(t,e)}constraintAttributeElement(t){return void 0===t?this.getRuleContexts(VT):this.getRuleContext(t,VT)}get ruleIndex(){return cn.RULE_constraintAttributeSpecification}accept(t){return t.visitConstraintAttributeSpecification?t.visitConstraintAttributeSpecification(this):t.visitChildren(this)}},VT=class extends ga{constructor(t,e){super(t,e)}NOT(){return this.getToken(cn.NOT,0)}DEFERRABLE(){return this.getToken(cn.DEFERRABLE,0)}INITIALLY(){return this.getToken(cn.INITIALLY,0)}IMMEDIATE(){return this.getToken(cn.IMMEDIATE,0)}DEFERRED(){return this.getToken(cn.DEFERRED,0)}VALID(){return this.getToken(cn.VALID,0)}NO(){return this.getToken(cn.NO,0)}INHERIT(){return this.getToken(cn.INHERIT,0)}get ruleIndex(){return cn.RULE_constraintAttributeElement}accept(t){return t.visitConstraintAttributeElement?t.visitConstraintAttributeElement(this):t.visitChildren(this)}},XT=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}EVENT(){return this.getToken(cn.EVENT,0)}TRIGGER(){return this.getToken(cn.TRIGGER,0)}name(){return this.getRuleContext(0,yu)}ON(){return this.getToken(cn.ON,0)}columnLabel(){return this.getRuleContext(0,aN)}EXECUTE(){return this.getToken(cn.EXECUTE,0)}functionOrProcedure(){return this.getRuleContext(0,fT)}functionName(){return this.getRuleContext(0,wu)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}WHEN(){return this.getToken(cn.WHEN,0)}eventTriggerWhenList(){return this.getRuleContext(0,KT)}get ruleIndex(){return cn.RULE_createEventTriggerStatement}accept(t){return t.visitCreateEventTriggerStatement?t.visitCreateEventTriggerStatement(this):t.visitChildren(this)}},KT=class extends ga{constructor(t,e){super(t,e)}eventTriggerWhenItem(t){return void 0===t?this.getRuleContexts(QT):this.getRuleContext(t,QT)}AND(t){return void 0===t?this.getTokens(cn.AND):this.getToken(cn.AND,t)}get ruleIndex(){return cn.RULE_eventTriggerWhenList}accept(t){return t.visitEventTriggerWhenList?t.visitEventTriggerWhenList(this):t.visitChildren(this)}},QT=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}IN_P(){return this.getToken(cn.IN_P,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}eventTriggerValueList(){return this.getRuleContext(0,JT)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_eventTriggerWhenItem}accept(t){return t.visitEventTriggerWhenItem?t.visitEventTriggerWhenItem(this):t.visitChildren(this)}},JT=class extends ga{constructor(t,e){super(t,e)}sconst(t){return void 0===t?this.getRuleContexts(Qu):this.getRuleContext(t,Qu)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_eventTriggerValueList}accept(t){return t.visitEventTriggerValueList?t.visitEventTriggerValueList(this):t.visitChildren(this)}},ZT=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}EVENT(){return this.getToken(cn.EVENT,0)}TRIGGER(){return this.getToken(cn.TRIGGER,0)}name(){return this.getRuleContext(0,yu)}enableTrigger(){return this.getRuleContext(0,qT)}get ruleIndex(){return cn.RULE_alterEventTriggerStatement}accept(t){return t.visitAlterEventTriggerStatement?t.visitAlterEventTriggerStatement(this):t.visitChildren(this)}},qT=class extends ga{constructor(t,e){super(t,e)}ENABLE_P(){return this.getToken(cn.ENABLE_P,0)}REPLICA(){return this.getToken(cn.REPLICA,0)}ALWAYS(){return this.getToken(cn.ALWAYS,0)}DISABLE_P(){return this.getToken(cn.DISABLE_P,0)}get ruleIndex(){return cn.RULE_enableTrigger}accept(t){return t.visitEnableTrigger?t.visitEnableTrigger(this):t.visitChildren(this)}},jT=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}ASSERTION(){return this.getToken(cn.ASSERTION,0)}anyName(){return this.getRuleContext(0,mo)}CHECK(){return this.getToken(cn.CHECK,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}constraintAttributeSpecification(){return this.getRuleContext(0,WT)}get ruleIndex(){return cn.RULE_createAssertionStatement}accept(t){return t.visitCreateAssertionStatement?t.visitCreateAssertionStatement(this):t.visitChildren(this)}},zT=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}optionalOrReplace(){return this.getRuleContext(0,lR)}AGGREGATE(){return this.getToken(cn.AGGREGATE,0)}functionName(){return this.getRuleContext(0,wu)}aggregateArguments(){return this.getRuleContext(0,UR)}definition(){return this.getRuleContext(0,$T)}oldAggregateDefinition(){return this.getRuleContext(0,so)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}anyOperator(){return this.getRuleContext(0,WR)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}anyName(t){return void 0===t?this.getRuleContexts(mo):this.getRuleContext(t,mo)}AS(){return this.getToken(cn.AS,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}optionalTableFunctionElementList(){return this.getRuleContext(0,oO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}ENUM_P(){return this.getToken(cn.ENUM_P,0)}enumValueList(){return this.getRuleContext(0,ro)}RANGE(){return this.getToken(cn.RANGE,0)}TEXT_P(){return this.getToken(cn.TEXT_P,0)}SEARCH(){return this.getToken(cn.SEARCH,0)}PARSER(){return this.getToken(cn.PARSER,0)}DICTIONARY(){return this.getToken(cn.DICTIONARY,0)}TEMPLATE(){return this.getToken(cn.TEMPLATE,0)}CONFIGURATION(){return this.getToken(cn.CONFIGURATION,0)}COLLATION(){return this.getToken(cn.COLLATION,0)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}FROM(){return this.getToken(cn.FROM,0)}get ruleIndex(){return cn.RULE_defineStatement}accept(t){return t.visitDefineStatement?t.visitDefineStatement(this):t.visitChildren(this)}},$T=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}definitionElement(t){return void 0===t?this.getRuleContexts(to):this.getRuleContext(t,to)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_definition}accept(t){return t.visitDefinition?t.visitDefinition(this):t.visitChildren(this)}},to=class extends ga{constructor(t,e){super(t,e)}columnLabel(){return this.getRuleContext(0,aN)}EQUAL(){return this.getToken(cn.EQUAL,0)}definitionArgument(){return this.getRuleContext(0,eo)}get ruleIndex(){return cn.RULE_definitionElement}accept(t){return t.visitDefinitionElement?t.visitDefinitionElement(this):t.visitChildren(this)}},eo=class extends ga{constructor(t,e){super(t,e)}functionType(){return this.getRuleContext(0,dR)}reservedKeyword(){return this.getRuleContext(0,EN)}allOperatorQualifier(){return this.getRuleContext(0,QI)}numericOnly(){return this.getRuleContext(0,xE)}sconst(){return this.getRuleContext(0,Qu)}NONE(){return this.getToken(cn.NONE,0)}get ruleIndex(){return cn.RULE_definitionArgument}accept(t){return t.visitDefinitionArgument?t.visitDefinitionArgument(this):t.visitChildren(this)}},so=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}oldAggregateElement(t){return void 0===t?this.getRuleContexts(ao):this.getRuleContext(t,ao)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_oldAggregateDefinition}accept(t){return t.visitOldAggregateDefinition?t.visitOldAggregateDefinition(this):t.visitChildren(this)}},ao=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,rN)}EQUAL(){return this.getToken(cn.EQUAL,0)}definitionArgument(){return this.getRuleContext(0,eo)}get ruleIndex(){return cn.RULE_oldAggregateElement}accept(t){return t.visitOldAggregateElement?t.visitOldAggregateElement(this):t.visitChildren(this)}},ro=class extends ga{constructor(t,e){super(t,e)}sconst(t){return void 0===t?this.getRuleContexts(Qu):this.getRuleContext(t,Qu)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_enumValueList}accept(t){return t.visitEnumValueList?t.visitEnumValueList(this):t.visitChildren(this)}},io=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}anyName(){return this.getRuleContext(0,mo)}ADD_P(){return this.getToken(cn.ADD_P,0)}VALUE_P(){return this.getToken(cn.VALUE_P,0)}optionalIfNotExists(){return this.getRuleContext(0,co)}sconst(t){return void 0===t?this.getRuleContexts(Qu):this.getRuleContext(t,Qu)}BEFORE(){return this.getToken(cn.BEFORE,0)}AFTER(){return this.getToken(cn.AFTER,0)}RENAME(){return this.getToken(cn.RENAME,0)}TO(){return this.getToken(cn.TO,0)}get ruleIndex(){return cn.RULE_alterEnumStatement}accept(t){return t.visitAlterEnumStatement?t.visitAlterEnumStatement(this):t.visitChildren(this)}},co=class extends ga{constructor(t,e){super(t,e)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_optionalIfNotExists}accept(t){return t.visitOptionalIfNotExists?t.visitOptionalIfNotExists(this):t.visitChildren(this)}},no=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}CLASS(){return this.getToken(cn.CLASS,0)}anyName(){return this.getRuleContext(0,mo)}FOR(){return this.getToken(cn.FOR,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}typeName(){return this.getRuleContext(0,LO)}USING(){return this.getToken(cn.USING,0)}name(){return this.getRuleContext(0,yu)}optionalOperatorFamily(){return this.getRuleContext(0,To)}AS(){return this.getToken(cn.AS,0)}operatorClassItemList(){return this.getRuleContext(0,ho)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}get ruleIndex(){return cn.RULE_createOperatorClassStatement}accept(t){return t.visitCreateOperatorClassStatement?t.visitCreateOperatorClassStatement(this):t.visitChildren(this)}},ho=class extends ga{constructor(t,e){super(t,e)}operatorClassItem(t){return void 0===t?this.getRuleContexts(Eo):this.getRuleContext(t,Eo)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_operatorClassItemList}accept(t){return t.visitOperatorClassItemList?t.visitOperatorClassItemList(this):t.visitChildren(this)}},Eo=class extends ga{constructor(t,e){super(t,e)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}iconst(){return this.getRuleContext(0,Ku)}anyOperator(){return this.getRuleContext(0,WR)}operatorClassPurpose(){return this.getRuleContext(0,oo)}RECHECK(){return this.getToken(cn.RECHECK,0)}operatorWithArgumentTypes(){return this.getRuleContext(0,XR)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}functionWithArgumentTypes(){return this.getRuleContext(0,uR)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}typeList(){return this.getRuleContext(0,zI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}STORAGE(){return this.getToken(cn.STORAGE,0)}typeName(){return this.getRuleContext(0,LO)}get ruleIndex(){return cn.RULE_operatorClassItem}accept(t){return t.visitOperatorClassItem?t.visitOperatorClassItem(this):t.visitChildren(this)}},To=class extends ga{constructor(t,e){super(t,e)}FAMILY(){return this.getToken(cn.FAMILY,0)}anyName(){return this.getRuleContext(0,mo)}get ruleIndex(){return cn.RULE_optionalOperatorFamily}accept(t){return t.visitOptionalOperatorFamily?t.visitOptionalOperatorFamily(this):t.visitChildren(this)}},oo=class extends ga{constructor(t,e){super(t,e)}FOR(){return this.getToken(cn.FOR,0)}SEARCH(){return this.getToken(cn.SEARCH,0)}ORDER(){return this.getToken(cn.ORDER,0)}BY(){return this.getToken(cn.BY,0)}anyName(){return this.getRuleContext(0,mo)}get ruleIndex(){return cn.RULE_operatorClassPurpose}accept(t){return t.visitOperatorClassPurpose?t.visitOperatorClassPurpose(this):t.visitChildren(this)}},Ro=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}FAMILY(){return this.getToken(cn.FAMILY,0)}anyName(){return this.getRuleContext(0,mo)}USING(){return this.getToken(cn.USING,0)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_createOperatorFamilyStatement}accept(t){return t.visitCreateOperatorFamilyStatement?t.visitCreateOperatorFamilyStatement(this):t.visitChildren(this)}},Ao=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}FAMILY(){return this.getToken(cn.FAMILY,0)}anyName(){return this.getRuleContext(0,mo)}USING(){return this.getToken(cn.USING,0)}name(){return this.getRuleContext(0,yu)}ADD_P(){return this.getToken(cn.ADD_P,0)}operatorClassItemList(){return this.getRuleContext(0,ho)}DROP(){return this.getToken(cn.DROP,0)}operatorClassDropList(){return this.getRuleContext(0,So)}get ruleIndex(){return cn.RULE_alterOperatorFamilyStatement}accept(t){return t.visitAlterOperatorFamilyStatement?t.visitAlterOperatorFamilyStatement(this):t.visitChildren(this)}},So=class extends ga{constructor(t,e){super(t,e)}operatorClassDrop(t){return void 0===t?this.getRuleContexts(lo):this.getRuleContext(t,lo)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_operatorClassDropList}accept(t){return t.visitOperatorClassDropList?t.visitOperatorClassDropList(this):t.visitChildren(this)}},lo=class extends ga{constructor(t,e){super(t,e)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}iconst(){return this.getRuleContext(0,Ku)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}typeList(){return this.getRuleContext(0,zI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}get ruleIndex(){return cn.RULE_operatorClassDrop}accept(t){return t.visitOperatorClassDrop?t.visitOperatorClassDrop(this):t.visitChildren(this)}},Oo=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}CLASS(){return this.getToken(cn.CLASS,0)}anyName(){return this.getRuleContext(0,mo)}USING(){return this.getToken(cn.USING,0)}name(){return this.getRuleContext(0,yu)}optionalDropBehavior(){return this.getRuleContext(0,ah)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_dropOperatorClassStatement}accept(t){return t.visitDropOperatorClassStatement?t.visitDropOperatorClassStatement(this):t.visitChildren(this)}},Io=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}FAMILY(){return this.getToken(cn.FAMILY,0)}anyName(){return this.getRuleContext(0,mo)}USING(){return this.getToken(cn.USING,0)}name(){return this.getRuleContext(0,yu)}optionalDropBehavior(){return this.getRuleContext(0,ah)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_dropOperatorFamilyStatement}accept(t){return t.visitDropOperatorFamilyStatement?t.visitDropOperatorFamilyStatement(this):t.visitChildren(this)}},uo=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}OWNED(){return this.getToken(cn.OWNED,0)}BY(){return this.getToken(cn.BY,0)}roleNameList(){return this.getRuleContext(0,zu)}optionalDropBehavior(){return this.getRuleContext(0,ah)}get ruleIndex(){return cn.RULE_dropOwnedStatement}accept(t){return t.visitDropOwnedStatement?t.visitDropOwnedStatement(this):t.visitChildren(this)}},No=class extends ga{constructor(t,e){super(t,e)}REASSIGN(){return this.getToken(cn.REASSIGN,0)}OWNED(){return this.getToken(cn.OWNED,0)}BY(){return this.getToken(cn.BY,0)}roleNameList(){return this.getRuleContext(0,zu)}TO(){return this.getToken(cn.TO,0)}roleName(){return this.getRuleContext(0,ju)}get ruleIndex(){return cn.RULE_reassignOwnedStatement}accept(t){return t.visitReassignOwnedStatement?t.visitReassignOwnedStatement(this):t.visitChildren(this)}},Lo=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}objectTypeAnyName(){return this.getRuleContext(0,Co)}anyNameList(){return this.getRuleContext(0,Uo)}optionalDropBehavior(){return this.getRuleContext(0,ah)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}SEQUENCE(){return this.getToken(cn.SEQUENCE,0)}sequenceNameList(){return this.getRuleContext(0,Fu)}INDEX(){return this.getToken(cn.INDEX,0)}indexNameList(){return this.getRuleContext(0,xu)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaNameList(){return this.getRuleContext(0,pu)}dropTypeName(){return this.getRuleContext(0,Po)}nameList(){return this.getRuleContext(0,Bu)}objectTypeNameOnAnyName(){return this.getRuleContext(0,Mo)}name(){return this.getRuleContext(0,yu)}ON(){return this.getToken(cn.ON,0)}anyName(){return this.getRuleContext(0,mo)}TRIGGER(){return this.getToken(cn.TRIGGER,0)}triggerName(){return this.getRuleContext(0,ku)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}typeNameList(){return this.getRuleContext(0,po)}DOMAIN_P(){return this.getToken(cn.DOMAIN_P,0)}CONCURRENTLY(){return this.getToken(cn.CONCURRENTLY,0)}indexName(){return this.getRuleContext(0,gu)}get ruleIndex(){return cn.RULE_dropStatement}accept(t){return t.visitDropStatement?t.visitDropStatement(this):t.visitChildren(this)}},Co=class extends ga{constructor(t,e){super(t,e)}TABLE(){return this.getToken(cn.TABLE,0)}VIEW(){return this.getToken(cn.VIEW,0)}MATERIALIZED(){return this.getToken(cn.MATERIALIZED,0)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}COLLATION(){return this.getToken(cn.COLLATION,0)}CONVERSION_P(){return this.getToken(cn.CONVERSION_P,0)}STATISTICS(){return this.getToken(cn.STATISTICS,0)}TEXT_P(){return this.getToken(cn.TEXT_P,0)}SEARCH(){return this.getToken(cn.SEARCH,0)}PARSER(){return this.getToken(cn.PARSER,0)}DICTIONARY(){return this.getToken(cn.DICTIONARY,0)}TEMPLATE(){return this.getToken(cn.TEMPLATE,0)}CONFIGURATION(){return this.getToken(cn.CONFIGURATION,0)}get ruleIndex(){return cn.RULE_objectTypeAnyName}accept(t){return t.visitObjectTypeAnyName?t.visitObjectTypeAnyName(this):t.visitChildren(this)}},_o=class extends ga{constructor(t,e){super(t,e)}dropTypeName(){return this.getRuleContext(0,Po)}SUBSCRIPTION(){return this.getToken(cn.SUBSCRIPTION,0)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}get ruleIndex(){return cn.RULE_objectTypeName}accept(t){return t.visitObjectTypeName?t.visitObjectTypeName(this):t.visitChildren(this)}},Po=class extends ga{constructor(t,e){super(t,e)}ACCESS(){return this.getToken(cn.ACCESS,0)}METHOD(){return this.getToken(cn.METHOD,0)}EVENT(){return this.getToken(cn.EVENT,0)}TRIGGER(){return this.getToken(cn.TRIGGER,0)}EXTENSION(){return this.getToken(cn.EXTENSION,0)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}DATA_P(){return this.getToken(cn.DATA_P,0)}WRAPPER(){return this.getToken(cn.WRAPPER,0)}optionalProcedural(){return this.getRuleContext(0,BE)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}PUBLICATION(){return this.getToken(cn.PUBLICATION,0)}SERVER(){return this.getToken(cn.SERVER,0)}get ruleIndex(){return cn.RULE_dropTypeName}accept(t){return t.visitDropTypeName?t.visitDropTypeName(this):t.visitChildren(this)}},Mo=class extends ga{constructor(t,e){super(t,e)}POLICY(){return this.getToken(cn.POLICY,0)}RULE(){return this.getToken(cn.RULE,0)}get ruleIndex(){return cn.RULE_objectTypeNameOnAnyName}accept(t){return t.visitObjectTypeNameOnAnyName?t.visitObjectTypeNameOnAnyName(this):t.visitChildren(this)}},Uo=class extends ga{constructor(t,e){super(t,e)}anyName(t){return void 0===t?this.getRuleContexts(mo):this.getRuleContext(t,mo)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_anyNameList}accept(t){return t.visitAnyNameList?t.visitAnyNameList(this):t.visitChildren(this)}},mo=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}attributes(){return this.getRuleContext(0,Do)}get ruleIndex(){return cn.RULE_anyName}accept(t){return t.visitAnyName?t.visitAnyName(this):t.visitChildren(this)}},Do=class extends ga{constructor(t,e){super(t,e)}DOT(t){return void 0===t?this.getTokens(cn.DOT):this.getToken(cn.DOT,t)}attributeName(t){return void 0===t?this.getRuleContexts(fu):this.getRuleContext(t,fu)}get ruleIndex(){return cn.RULE_attributes}accept(t){return t.visitAttributes?t.visitAttributes(this):t.visitChildren(this)}},po=class extends ga{constructor(t,e){super(t,e)}typeName(t){return void 0===t?this.getRuleContexts(LO):this.getRuleContext(t,LO)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_typeNameList}accept(t){return t.visitTypeNameList?t.visitTypeNameList(this):t.visitChildren(this)}},go=class extends ga{constructor(t,e){super(t,e)}TRUNCATE(){return this.getToken(cn.TRUNCATE,0)}optionalTable(){return this.getRuleContext(0,Il)}relationExpressionList(){return this.getRuleContext(0,sO)}optionalRestartSequences(){return this.getRuleContext(0,xo)}optionalDropBehavior(){return this.getRuleContext(0,ah)}get ruleIndex(){return cn.RULE_truncateStatement}accept(t){return t.visitTruncateStatement?t.visitTruncateStatement(this):t.visitChildren(this)}},xo=class extends ga{constructor(t,e){super(t,e)}CONTINUE_P(){return this.getToken(cn.CONTINUE_P,0)}IDENTITY_P(){return this.getToken(cn.IDENTITY_P,0)}RESTART(){return this.getToken(cn.RESTART,0)}get ruleIndex(){return cn.RULE_optionalRestartSequences}accept(t){return t.visitOptionalRestartSequences?t.visitOptionalRestartSequences(this):t.visitChildren(this)}},ko=class extends ga{constructor(t,e){super(t,e)}COMMENT(){return this.getToken(cn.COMMENT,0)}ON(t){return void 0===t?this.getTokens(cn.ON):this.getToken(cn.ON,t)}objectTypeAnyName(){return this.getRuleContext(0,Co)}anyName(){return this.getRuleContext(0,mo)}IS(){return this.getToken(cn.IS,0)}commentText(){return this.getRuleContext(0,Ho)}SEQUENCE(){return this.getToken(cn.SEQUENCE,0)}sequenceName(){return this.getRuleContext(0,Gu)}INDEX(){return this.getToken(cn.INDEX,0)}indexName(){return this.getRuleContext(0,gu)}COLUMN(){return this.getToken(cn.COLUMN,0)}objectTypeName(){return this.getRuleContext(0,_o)}name(){return this.getRuleContext(0,yu)}ROLE(){return this.getToken(cn.ROLE,0)}roleName(){return this.getRuleContext(0,ju)}DATABASE(){return this.getToken(cn.DATABASE,0)}databaseName(){return this.getRuleContext(0,Uu)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaName(){return this.getRuleContext(0,Du)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}typeName(t){return void 0===t?this.getRuleContexts(LO):this.getRuleContext(t,LO)}DOMAIN_P(){return this.getToken(cn.DOMAIN_P,0)}AGGREGATE(){return this.getToken(cn.AGGREGATE,0)}aggregateWithArgumentTypes(){return this.getRuleContext(0,DR)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}functionWithArgumentTypes(){return this.getRuleContext(0,uR)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}operatorWithArgumentTypes(){return this.getRuleContext(0,XR)}CONSTRAINT(){return this.getToken(cn.CONSTRAINT,0)}constraintName(){return this.getRuleContext(0,Hu)}objectTypeNameOnAnyName(){return this.getRuleContext(0,Mo)}TRIGGER(){return this.getToken(cn.TRIGGER,0)}triggerName(){return this.getRuleContext(0,ku)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}ROUTINE(){return this.getToken(cn.ROUTINE,0)}TRANSFORM(){return this.getToken(cn.TRANSFORM,0)}FOR(){return this.getToken(cn.FOR,0)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}CLASS(){return this.getToken(cn.CLASS,0)}USING(){return this.getToken(cn.USING,0)}FAMILY(){return this.getToken(cn.FAMILY,0)}LARGE_P(){return this.getToken(cn.LARGE_P,0)}OBJECT_P(){return this.getToken(cn.OBJECT_P,0)}numericOnly(){return this.getRuleContext(0,xE)}CAST(){return this.getToken(cn.CAST,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}AS(){return this.getToken(cn.AS,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_commentStatement}accept(t){return t.visitCommentStatement?t.visitCommentStatement(this):t.visitChildren(this)}},Ho=class extends ga{constructor(t,e){super(t,e)}sconst(){return this.getRuleContext(0,Qu)}NULL_P(){return this.getToken(cn.NULL_P,0)}get ruleIndex(){return cn.RULE_commentText}accept(t){return t.visitCommentText?t.visitCommentText(this):t.visitChildren(this)}},Go=class extends ga{constructor(t,e){super(t,e)}SECURITY(){return this.getToken(cn.SECURITY,0)}LABEL(){return this.getToken(cn.LABEL,0)}optionalProvider(){return this.getRuleContext(0,Fo)}ON(){return this.getToken(cn.ON,0)}objectTypeAnyName(){return this.getRuleContext(0,Co)}anyName(){return this.getRuleContext(0,mo)}IS(){return this.getToken(cn.IS,0)}securityLabel(){return this.getRuleContext(0,vo)}SEQUENCE(){return this.getToken(cn.SEQUENCE,0)}sequenceName(){return this.getRuleContext(0,Gu)}INDEX(){return this.getToken(cn.INDEX,0)}indexName(){return this.getRuleContext(0,gu)}COLUMN(){return this.getToken(cn.COLUMN,0)}objectTypeName(){return this.getRuleContext(0,_o)}name(){return this.getRuleContext(0,yu)}ROLE(){return this.getToken(cn.ROLE,0)}roleName(){return this.getRuleContext(0,ju)}DATABASE(){return this.getToken(cn.DATABASE,0)}databaseName(){return this.getRuleContext(0,Uu)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaName(){return this.getRuleContext(0,Du)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}typeName(){return this.getRuleContext(0,LO)}DOMAIN_P(){return this.getToken(cn.DOMAIN_P,0)}AGGREGATE(){return this.getToken(cn.AGGREGATE,0)}aggregateWithArgumentTypes(){return this.getRuleContext(0,DR)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}functionWithArgumentTypes(){return this.getRuleContext(0,uR)}LARGE_P(){return this.getToken(cn.LARGE_P,0)}OBJECT_P(){return this.getToken(cn.OBJECT_P,0)}numericOnly(){return this.getRuleContext(0,xE)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}ROUTINE(){return this.getToken(cn.ROUTINE,0)}get ruleIndex(){return cn.RULE_securityLabelStatement}accept(t){return t.visitSecurityLabelStatement?t.visitSecurityLabelStatement(this):t.visitChildren(this)}},Fo=class extends ga{constructor(t,e){super(t,e)}FOR(){return this.getToken(cn.FOR,0)}nonReservedWordOrSconst(){return this.getRuleContext(0,fn)}get ruleIndex(){return cn.RULE_optionalProvider}accept(t){return t.visitOptionalProvider?t.visitOptionalProvider(this):t.visitChildren(this)}},vo=class extends ga{constructor(t,e){super(t,e)}sconst(){return this.getRuleContext(0,Qu)}NULL_P(){return this.getToken(cn.NULL_P,0)}get ruleIndex(){return cn.RULE_securityLabel}accept(t){return t.visitSecurityLabel?t.visitSecurityLabel(this):t.visitChildren(this)}},Bo=class extends ga{constructor(t,e){super(t,e)}FETCH(){return this.getToken(cn.FETCH,0)}fetchArguments(){return this.getRuleContext(0,yo)}MOVE(){return this.getToken(cn.MOVE,0)}get ruleIndex(){return cn.RULE_fetchStatement}accept(t){return t.visitFetchStatement?t.visitFetchStatement(this):t.visitChildren(this)}},yo=class extends ga{constructor(t,e){super(t,e)}cursorName(){return this.getRuleContext(0,al)}fromOrIn(){return this.getRuleContext(0,fo)}NEXT(){return this.getToken(cn.NEXT,0)}optionalFromOrIn(){return this.getRuleContext(0,Yo)}PRIOR(){return this.getToken(cn.PRIOR,0)}FIRST_P(){return this.getToken(cn.FIRST_P,0)}LAST_P(){return this.getToken(cn.LAST_P,0)}ABSOLUTE_P(){return this.getToken(cn.ABSOLUTE_P,0)}signedIconst(){return this.getRuleContext(0,qu)}RELATIVE_P(){return this.getToken(cn.RELATIVE_P,0)}ALL(){return this.getToken(cn.ALL,0)}FORWARD(){return this.getToken(cn.FORWARD,0)}BACKWARD(){return this.getToken(cn.BACKWARD,0)}get ruleIndex(){return cn.RULE_fetchArguments}accept(t){return t.visitFetchArguments?t.visitFetchArguments(this):t.visitChildren(this)}},fo=class extends ga{constructor(t,e){super(t,e)}FROM(){return this.getToken(cn.FROM,0)}IN_P(){return this.getToken(cn.IN_P,0)}get ruleIndex(){return cn.RULE_fromOrIn}accept(t){return t.visitFromOrIn?t.visitFromOrIn(this):t.visitChildren(this)}},Yo=class extends ga{constructor(t,e){super(t,e)}fromOrIn(){return this.getRuleContext(0,fo)}get ruleIndex(){return cn.RULE_optionalFromOrIn}accept(t){return t.visitOptionalFromOrIn?t.visitOptionalFromOrIn(this):t.visitChildren(this)}},wo=class extends ga{constructor(t,e){super(t,e)}GRANT(){return this.getToken(cn.GRANT,0)}privileges(){return this.getRuleContext(0,Wo)}ON(){return this.getToken(cn.ON,0)}privilegeTarget(){return this.getRuleContext(0,Ko)}TO(){return this.getToken(cn.TO,0)}granteeList(){return this.getRuleContext(0,Qo)}optionalWithGrantOption(){return this.getRuleContext(0,Zo)}get ruleIndex(){return cn.RULE_grantStatement}accept(t){return t.visitGrantStatement?t.visitGrantStatement(this):t.visitChildren(this)}},bo=class extends ga{constructor(t,e){super(t,e)}REVOKE(){return this.getToken(cn.REVOKE,0)}privileges(){return this.getRuleContext(0,Wo)}ON(){return this.getToken(cn.ON,0)}privilegeTarget(){return this.getRuleContext(0,Ko)}FROM(){return this.getToken(cn.FROM,0)}granteeList(){return this.getRuleContext(0,Qo)}optionalDropBehavior(){return this.getRuleContext(0,ah)}GRANT(){return this.getToken(cn.GRANT,0)}OPTION(){return this.getToken(cn.OPTION,0)}FOR(){return this.getToken(cn.FOR,0)}get ruleIndex(){return cn.RULE_revokeStatement}accept(t){return t.visitRevokeStatement?t.visitRevokeStatement(this):t.visitChildren(this)}},Wo=class extends ga{constructor(t,e){super(t,e)}privilegeList(){return this.getRuleContext(0,Vo)}ALL(){return this.getToken(cn.ALL,0)}PRIVILEGES(){return this.getToken(cn.PRIVILEGES,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}columnList(){return this.getRuleContext(0,qh)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_privileges}accept(t){return t.visitPrivileges?t.visitPrivileges(this):t.visitChildren(this)}},Vo=class extends ga{constructor(t,e){super(t,e)}privilege(t){return void 0===t?this.getRuleContexts(Xo):this.getRuleContext(t,Xo)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_privilegeList}accept(t){return t.visitPrivilegeList?t.visitPrivilegeList(this):t.visitChildren(this)}},Xo=class extends ga{constructor(t,e){super(t,e)}SELECT(){return this.getToken(cn.SELECT,0)}columnListWithParentheses(){return this.getRuleContext(0,Zh)}REFERENCES(){return this.getToken(cn.REFERENCES,0)}CREATE(){return this.getToken(cn.CREATE,0)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_privilege}accept(t){return t.visitPrivilege?t.visitPrivilege(this):t.visitChildren(this)}},Ko=class extends ga{constructor(t,e){super(t,e)}qualifiedNameList(){return this.getRuleContext(0,du)}TABLE(){return this.getToken(cn.TABLE,0)}SEQUENCE(){return this.getToken(cn.SEQUENCE,0)}sequenceNameList(){return this.getRuleContext(0,Fu)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}DATA_P(){return this.getToken(cn.DATA_P,0)}WRAPPER(){return this.getToken(cn.WRAPPER,0)}nameList(){return this.getRuleContext(0,Bu)}SERVER(){return this.getToken(cn.SERVER,0)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}functionWithArgumentTypesList(){return this.getRuleContext(0,IR)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}ROUTINE(){return this.getToken(cn.ROUTINE,0)}DATABASE(){return this.getToken(cn.DATABASE,0)}databaseNameList(){return this.getRuleContext(0,mu)}DOMAIN_P(){return this.getToken(cn.DOMAIN_P,0)}anyNameList(){return this.getRuleContext(0,Uo)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}LARGE_P(){return this.getToken(cn.LARGE_P,0)}OBJECT_P(){return this.getToken(cn.OBJECT_P,0)}numericOnlyList(){return this.getRuleContext(0,kE)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaNameList(){return this.getRuleContext(0,pu)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}ALL(){return this.getToken(cn.ALL,0)}IN_P(){return this.getToken(cn.IN_P,0)}TABLES(){return this.getToken(cn.TABLES,0)}SEQUENCES(){return this.getToken(cn.SEQUENCES,0)}FUNCTIONS(){return this.getToken(cn.FUNCTIONS,0)}PROCEDURES(){return this.getToken(cn.PROCEDURES,0)}ROUTINES(){return this.getToken(cn.ROUTINES,0)}get ruleIndex(){return cn.RULE_privilegeTarget}accept(t){return t.visitPrivilegeTarget?t.visitPrivilegeTarget(this):t.visitChildren(this)}},Qo=class extends ga{constructor(t,e){super(t,e)}grantee(t){return void 0===t?this.getRuleContexts(Jo):this.getRuleContext(t,Jo)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_granteeList}accept(t){return t.visitGranteeList?t.visitGranteeList(this):t.visitChildren(this)}},Jo=class extends ga{constructor(t,e){super(t,e)}roleName(){return this.getRuleContext(0,ju)}GROUP_P(){return this.getToken(cn.GROUP_P,0)}get ruleIndex(){return cn.RULE_grantee}accept(t){return t.visitGrantee?t.visitGrantee(this):t.visitChildren(this)}},Zo=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}GRANT(){return this.getToken(cn.GRANT,0)}OPTION(){return this.getToken(cn.OPTION,0)}get ruleIndex(){return cn.RULE_optionalWithGrantOption}accept(t){return t.visitOptionalWithGrantOption?t.visitOptionalWithGrantOption(this):t.visitChildren(this)}},qo=class extends ga{constructor(t,e){super(t,e)}GRANT(){return this.getToken(cn.GRANT,0)}privilegeList(){return this.getRuleContext(0,Vo)}TO(){return this.getToken(cn.TO,0)}roleNameList(){return this.getRuleContext(0,zu)}optionalGrantAdminOption(){return this.getRuleContext(0,zo)}optionalGrantedBy(){return this.getRuleContext(0,$o)}get ruleIndex(){return cn.RULE_grantPrivilegeStatement}accept(t){return t.visitGrantPrivilegeStatement?t.visitGrantPrivilegeStatement(this):t.visitChildren(this)}},jo=class extends ga{constructor(t,e){super(t,e)}REVOKE(){return this.getToken(cn.REVOKE,0)}privilegeList(){return this.getRuleContext(0,Vo)}FROM(){return this.getToken(cn.FROM,0)}roleNameList(){return this.getRuleContext(0,zu)}optionalGrantedBy(){return this.getRuleContext(0,$o)}optionalDropBehavior(){return this.getRuleContext(0,ah)}ADMIN(){return this.getToken(cn.ADMIN,0)}OPTION(){return this.getToken(cn.OPTION,0)}FOR(){return this.getToken(cn.FOR,0)}get ruleIndex(){return cn.RULE_revokePrivilegeStatement}accept(t){return t.visitRevokePrivilegeStatement?t.visitRevokePrivilegeStatement(this):t.visitChildren(this)}},zo=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}ADMIN(){return this.getToken(cn.ADMIN,0)}OPTION(){return this.getToken(cn.OPTION,0)}get ruleIndex(){return cn.RULE_optionalGrantAdminOption}accept(t){return t.visitOptionalGrantAdminOption?t.visitOptionalGrantAdminOption(this):t.visitChildren(this)}},$o=class extends ga{constructor(t,e){super(t,e)}GRANTED(){return this.getToken(cn.GRANTED,0)}BY(){return this.getToken(cn.BY,0)}roleName(){return this.getRuleContext(0,ju)}get ruleIndex(){return cn.RULE_optionalGrantedBy}accept(t){return t.visitOptionalGrantedBy?t.visitOptionalGrantedBy(this):t.visitChildren(this)}},tR=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}PRIVILEGES(){return this.getToken(cn.PRIVILEGES,0)}defaultPrivelegeAction(){return this.getRuleContext(0,sR)}defultPrivilegeOption(t){return void 0===t?this.getRuleContexts(eR):this.getRuleContext(t,eR)}get ruleIndex(){return cn.RULE_alterDefaultPrivilegesStatement}accept(t){return t.visitAlterDefaultPrivilegesStatement?t.visitAlterDefaultPrivilegesStatement(this):t.visitChildren(this)}},eR=class extends ga{constructor(t,e){super(t,e)}IN_P(){return this.getToken(cn.IN_P,0)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaNameList(){return this.getRuleContext(0,pu)}FOR(){return this.getToken(cn.FOR,0)}roleOrAliases(){return this.getRuleContext(0,RC)}roleNameList(){return this.getRuleContext(0,zu)}get ruleIndex(){return cn.RULE_defultPrivilegeOption}accept(t){return t.visitDefultPrivilegeOption?t.visitDefultPrivilegeOption(this):t.visitChildren(this)}},sR=class extends ga{constructor(t,e){super(t,e)}GRANT(){return this.getToken(cn.GRANT,0)}privileges(){return this.getRuleContext(0,Wo)}ON(){return this.getToken(cn.ON,0)}defultPrivilegeTarget(){return this.getRuleContext(0,aR)}TO(){return this.getToken(cn.TO,0)}granteeList(){return this.getRuleContext(0,Qo)}optionalWithGrantOption(){return this.getRuleContext(0,Zo)}REVOKE(){return this.getToken(cn.REVOKE,0)}FROM(){return this.getToken(cn.FROM,0)}optionalDropBehavior(){return this.getRuleContext(0,ah)}OPTION(){return this.getToken(cn.OPTION,0)}FOR(){return this.getToken(cn.FOR,0)}get ruleIndex(){return cn.RULE_defaultPrivelegeAction}accept(t){return t.visitDefaultPrivelegeAction?t.visitDefaultPrivelegeAction(this):t.visitChildren(this)}},aR=class extends ga{constructor(t,e){super(t,e)}TABLES(){return this.getToken(cn.TABLES,0)}FUNCTIONS(){return this.getToken(cn.FUNCTIONS,0)}ROUTINES(){return this.getToken(cn.ROUTINES,0)}SEQUENCES(){return this.getToken(cn.SEQUENCES,0)}TYPES_P(){return this.getToken(cn.TYPES_P,0)}SCHEMAS(){return this.getToken(cn.SCHEMAS,0)}get ruleIndex(){return cn.RULE_defultPrivilegeTarget}accept(t){return t.visitDefultPrivilegeTarget?t.visitDefultPrivilegeTarget(this):t.visitChildren(this)}},rR=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}INDEX(){return this.getToken(cn.INDEX,0)}ON(){return this.getToken(cn.ON,0)}relationExpression(){return this.getRuleContext(0,eO)}optionalAccessMethodClause(){return this.getRuleContext(0,iR)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}indexParameters(){return this.getRuleContext(0,cR)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}optionalInclude(){return this.getRuleContext(0,ER)}optionalRelOptions(){return this.getRuleContext(0,hh)}optionalTablespace(){return this.getRuleContext(0,lE)}whereClause(){return this.getRuleContext(0,EO)}UNIQUE(){return this.getToken(cn.UNIQUE,0)}CONCURRENTLY(){return this.getToken(cn.CONCURRENTLY,0)}name(){return this.getRuleContext(0,yu)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_indexStatement}accept(t){return t.visitIndexStatement?t.visitIndexStatement(this):t.visitChildren(this)}},iR=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_optionalAccessMethodClause}accept(t){return t.visitOptionalAccessMethodClause?t.visitOptionalAccessMethodClause(this):t.visitChildren(this)}},cR=class extends ga{constructor(t,e){super(t,e)}indexElement(t){return void 0===t?this.getRuleContexts(hR):this.getRuleContext(t,hR)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_indexParameters}accept(t){return t.visitIndexParameters?t.visitIndexParameters(this):t.visitChildren(this)}},nR=class extends ga{constructor(t,e){super(t,e)}optionalCollate(){return this.getRuleContext(0,TR)}optionalClass(){return this.getRuleContext(0,oR)}optionalAscOrDesc(){return this.getRuleContext(0,RR)}optionalNullsOrder(){return this.getRuleContext(0,AR)}anyName(){return this.getRuleContext(0,mo)}relOptions(){return this.getRuleContext(0,nh)}get ruleIndex(){return cn.RULE_indexElemOptions}accept(t){return t.visitIndexElemOptions?t.visitIndexElemOptions(this):t.visitChildren(this)}},hR=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}indexElemOptions(){return this.getRuleContext(0,nR)}functionExpressionWindowless(){return this.getRuleContext(0,OI)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_indexElement}accept(t){return t.visitIndexElement?t.visitIndexElement(this):t.visitChildren(this)}},ER=class extends ga{constructor(t,e){super(t,e)}INCLUDE(){return this.getToken(cn.INCLUDE,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}indexElement(t){return void 0===t?this.getRuleContexts(hR):this.getRuleContext(t,hR)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_optionalInclude}accept(t){return t.visitOptionalInclude?t.visitOptionalInclude(this):t.visitChildren(this)}},TR=class extends ga{constructor(t,e){super(t,e)}COLLATE(){return this.getToken(cn.COLLATE,0)}anyName(){return this.getRuleContext(0,mo)}get ruleIndex(){return cn.RULE_optionalCollate}accept(t){return t.visitOptionalCollate?t.visitOptionalCollate(this):t.visitChildren(this)}},oR=class extends ga{constructor(t,e){super(t,e)}anyName(){return this.getRuleContext(0,mo)}get ruleIndex(){return cn.RULE_optionalClass}accept(t){return t.visitOptionalClass?t.visitOptionalClass(this):t.visitChildren(this)}},RR=class extends ga{constructor(t,e){super(t,e)}ASC(){return this.getToken(cn.ASC,0)}DESC(){return this.getToken(cn.DESC,0)}get ruleIndex(){return cn.RULE_optionalAscOrDesc}accept(t){return t.visitOptionalAscOrDesc?t.visitOptionalAscOrDesc(this):t.visitChildren(this)}},AR=class extends ga{constructor(t,e){super(t,e)}NULLS_P(){return this.getToken(cn.NULLS_P,0)}FIRST_P(){return this.getToken(cn.FIRST_P,0)}LAST_P(){return this.getToken(cn.LAST_P,0)}get ruleIndex(){return cn.RULE_optionalNullsOrder}accept(t){return t.visitOptionalNullsOrder?t.visitOptionalNullsOrder(this):t.visitChildren(this)}},SR=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}optionalOrReplace(){return this.getRuleContext(0,lR)}functionName(){return this.getRuleContext(0,wu)}OPEN_PAREN(t){return void 0===t?this.getTokens(cn.OPEN_PAREN):this.getToken(cn.OPEN_PAREN,t)}CLOSE_PAREN(t){return void 0===t?this.getTokens(cn.CLOSE_PAREN):this.getToken(cn.CLOSE_PAREN,t)}createFunctionOptionList(){return this.getRuleContext(0,gR)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}functionArgumentsWithDefaultsList(){return this.getRuleContext(0,NR)}RETURNS(){return this.getToken(cn.RETURNS,0)}functionReturn(){return this.getRuleContext(0,MR)}TABLE(){return this.getToken(cn.TABLE,0)}tableFunctionColumnList(){return this.getRuleContext(0,BR)}get ruleIndex(){return cn.RULE_createFunctionStatement}accept(t){return t.visitCreateFunctionStatement?t.visitCreateFunctionStatement(this):t.visitChildren(this)}},lR=class extends ga{constructor(t,e){super(t,e)}OR(){return this.getToken(cn.OR,0)}REPLACE(){return this.getToken(cn.REPLACE,0)}get ruleIndex(){return cn.RULE_optionalOrReplace}accept(t){return t.visitOptionalOrReplace?t.visitOptionalOrReplace(this):t.visitChildren(this)}},OR=class extends ga{constructor(t,e){super(t,e)}functionArgument(t){return void 0===t?this.getRuleContexts(CR):this.getRuleContext(t,CR)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_functionArgumentsList}accept(t){return t.visitFunctionArgumentsList?t.visitFunctionArgumentsList(this):t.visitChildren(this)}},IR=class extends ga{constructor(t,e){super(t,e)}functionWithArgumentTypes(t){return void 0===t?this.getRuleContexts(uR):this.getRuleContext(t,uR)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_functionWithArgumentTypesList}accept(t){return t.visitFunctionWithArgumentTypesList?t.visitFunctionWithArgumentTypesList(this):t.visitChildren(this)}},uR=class extends ga{constructor(t,e){super(t,e)}functionName(){return this.getRuleContext(0,wu)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}functionArgumentsList(){return this.getRuleContext(0,OR)}typeFunctionNameKeyword(){return this.getRuleContext(0,hN)}columnId(){return this.getRuleContext(0,$u)}indirection(){return this.getRuleContext(0,uu)}get ruleIndex(){return cn.RULE_functionWithArgumentTypes}accept(t){return t.visitFunctionWithArgumentTypes?t.visitFunctionWithArgumentTypes(this):t.visitChildren(this)}},NR=class extends ga{constructor(t,e){super(t,e)}functionArgumentWithDefault(t){return void 0===t?this.getRuleContexts(LR):this.getRuleContext(t,LR)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_functionArgumentsWithDefaultsList}accept(t){return t.visitFunctionArgumentsWithDefaultsList?t.visitFunctionArgumentsWithDefaultsList(this):t.visitChildren(this)}},LR=class extends ga{constructor(t,e){super(t,e)}functionArgument(){return this.getRuleContext(0,CR)}expression1(){return this.getRuleContext(0,wO)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}EQUAL(){return this.getToken(cn.EQUAL,0)}get ruleIndex(){return cn.RULE_functionArgumentWithDefault}accept(t){return t.visitFunctionArgumentWithDefault?t.visitFunctionArgumentWithDefault(this):t.visitChildren(this)}},CR=class extends ga{constructor(t,e){super(t,e)}argumentClass(){return this.getRuleContext(0,_R)}functionType(){return this.getRuleContext(0,dR)}parameterName(){return this.getRuleContext(0,PR)}get ruleIndex(){return cn.RULE_functionArgument}accept(t){return t.visitFunctionArgument?t.visitFunctionArgument(this):t.visitChildren(this)}},_R=class extends ga{constructor(t,e){super(t,e)}IN_P(){return this.getToken(cn.IN_P,0)}OUT_P(){return this.getToken(cn.OUT_P,0)}INOUT(){return this.getToken(cn.INOUT,0)}VARIADIC(){return this.getToken(cn.VARIADIC,0)}get ruleIndex(){return cn.RULE_argumentClass}accept(t){return t.visitArgumentClass?t.visitArgumentClass(this):t.visitChildren(this)}},PR=class extends ga{constructor(t,e){super(t,e)}typeFunctionName(){return this.getRuleContext(0,eN)}builtinFunctionName(){return this.getRuleContext(0,TN)}LEFT(){return this.getToken(cn.LEFT,0)}RIGHT(){return this.getToken(cn.RIGHT,0)}get ruleIndex(){return cn.RULE_parameterName}accept(t){return t.visitParameterName?t.visitParameterName(this):t.visitChildren(this)}},MR=class extends ga{constructor(t,e){super(t,e)}functionType(){return this.getRuleContext(0,dR)}get ruleIndex(){return cn.RULE_functionReturn}accept(t){return t.visitFunctionReturn?t.visitFunctionReturn(this):t.visitChildren(this)}},dR=class extends ga{constructor(t,e){super(t,e)}typeName(){return this.getRuleContext(0,LO)}attributes(){return this.getRuleContext(0,Do)}PERCENT(){return this.getToken(cn.PERCENT,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}builtinFunctionName(){return this.getRuleContext(0,TN)}typeFunctionName(){return this.getRuleContext(0,eN)}LEFT(){return this.getToken(cn.LEFT,0)}RIGHT(){return this.getToken(cn.RIGHT,0)}SETOF(){return this.getToken(cn.SETOF,0)}get ruleIndex(){return cn.RULE_functionType}accept(t){return t.visitFunctionType?t.visitFunctionType(this):t.visitChildren(this)}},UR=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}STAR(){return this.getToken(cn.STAR,0)}aggregateArgumentsList(t){return void 0===t?this.getRuleContexts(mR):this.getRuleContext(t,mR)}ORDER(){return this.getToken(cn.ORDER,0)}BY(){return this.getToken(cn.BY,0)}get ruleIndex(){return cn.RULE_aggregateArguments}accept(t){return t.visitAggregateArguments?t.visitAggregateArguments(this):t.visitChildren(this)}},mR=class extends ga{constructor(t,e){super(t,e)}functionArgument(t){return void 0===t?this.getRuleContexts(CR):this.getRuleContext(t,CR)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_aggregateArgumentsList}accept(t){return t.visitAggregateArgumentsList?t.visitAggregateArgumentsList(this):t.visitChildren(this)}},DR=class extends ga{constructor(t,e){super(t,e)}functionName(){return this.getRuleContext(0,wu)}aggregateArguments(){return this.getRuleContext(0,UR)}get ruleIndex(){return cn.RULE_aggregateWithArgumentTypes}accept(t){return t.visitAggregateWithArgumentTypes?t.visitAggregateWithArgumentTypes(this):t.visitChildren(this)}},pR=class extends ga{constructor(t,e){super(t,e)}aggregateWithArgumentTypes(t){return void 0===t?this.getRuleContexts(DR):this.getRuleContext(t,DR)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_aggregateWithArgumentTypesList}accept(t){return t.visitAggregateWithArgumentTypesList?t.visitAggregateWithArgumentTypesList(this):t.visitChildren(this)}},gR=class extends ga{constructor(t,e){super(t,e)}createFunctionOptionItem(t){return void 0===t?this.getRuleContexts(kR):this.getRuleContext(t,kR)}get ruleIndex(){return cn.RULE_createFunctionOptionList}accept(t){return t.visitCreateFunctionOptionList?t.visitCreateFunctionOptionList(this):t.visitChildren(this)}},xR=class extends ga{constructor(t,e){super(t,e)}CALLED(){return this.getToken(cn.CALLED,0)}ON(){return this.getToken(cn.ON,0)}NULL_P(t){return void 0===t?this.getTokens(cn.NULL_P):this.getToken(cn.NULL_P,t)}INPUT_P(){return this.getToken(cn.INPUT_P,0)}RETURNS(){return this.getToken(cn.RETURNS,0)}STRICT_P(){return this.getToken(cn.STRICT_P,0)}IMMUTABLE(){return this.getToken(cn.IMMUTABLE,0)}STABLE(){return this.getToken(cn.STABLE,0)}VOLATILE(){return this.getToken(cn.VOLATILE,0)}EXTERNAL(){return this.getToken(cn.EXTERNAL,0)}SECURITY(){return this.getToken(cn.SECURITY,0)}DEFINER(){return this.getToken(cn.DEFINER,0)}INVOKER(){return this.getToken(cn.INVOKER,0)}LEAKPROOF(){return this.getToken(cn.LEAKPROOF,0)}NOT(){return this.getToken(cn.NOT,0)}COST(){return this.getToken(cn.COST,0)}numericOnly(){return this.getRuleContext(0,xE)}ROWS(){return this.getToken(cn.ROWS,0)}SUPPORT(){return this.getToken(cn.SUPPORT,0)}anyName(){return this.getRuleContext(0,mo)}functionSetResetClause(){return this.getRuleContext(0,Vn)}PARALLEL(){return this.getToken(cn.PARALLEL,0)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_commonFunctionOptionItem}accept(t){return t.visitCommonFunctionOptionItem?t.visitCommonFunctionOptionItem(this):t.visitChildren(this)}},kR=class extends ga{constructor(t,e){super(t,e)}AS(){return this.getToken(cn.AS,0)}functionAs(){return this.getRuleContext(0,HR)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}nonReservedWordOrSconst(){return this.getRuleContext(0,fn)}TRANSFORM(){return this.getToken(cn.TRANSFORM,0)}transformTypeList(){return this.getRuleContext(0,GR)}WINDOW(){return this.getToken(cn.WINDOW,0)}commonFunctionOptionItem(){return this.getRuleContext(0,xR)}get ruleIndex(){return cn.RULE_createFunctionOptionItem}accept(t){return t.visitCreateFunctionOptionItem?t.visitCreateFunctionOptionItem(this):t.visitChildren(this)}},HR=class extends ga{constructor(t,e){super(t,e)}sconst(t){return void 0===t?this.getRuleContexts(Qu):this.getRuleContext(t,Qu)}COMMA(){return this.getToken(cn.COMMA,0)}get ruleIndex(){return cn.RULE_functionAs}accept(t){return t.visitFunctionAs?t.visitFunctionAs(this):t.visitChildren(this)}},GR=class extends ga{constructor(t,e){super(t,e)}FOR(t){return void 0===t?this.getTokens(cn.FOR):this.getToken(cn.FOR,t)}TYPE_P(t){return void 0===t?this.getTokens(cn.TYPE_P):this.getToken(cn.TYPE_P,t)}typeName(t){return void 0===t?this.getRuleContexts(LO):this.getRuleContext(t,LO)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_transformTypeList}accept(t){return t.visitTransformTypeList?t.visitTransformTypeList(this):t.visitChildren(this)}},FR=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}definition(){return this.getRuleContext(0,$T)}get ruleIndex(){return cn.RULE_optionalDefinition}accept(t){return t.visitOptionalDefinition?t.visitOptionalDefinition(this):t.visitChildren(this)}},vR=class extends ga{constructor(t,e){super(t,e)}parameterName(){return this.getRuleContext(0,PR)}functionType(){return this.getRuleContext(0,dR)}get ruleIndex(){return cn.RULE_tableFunctionColumn}accept(t){return t.visitTableFunctionColumn?t.visitTableFunctionColumn(this):t.visitChildren(this)}},BR=class extends ga{constructor(t,e){super(t,e)}tableFunctionColumn(t){return void 0===t?this.getRuleContexts(vR):this.getRuleContext(t,vR)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_tableFunctionColumnList}accept(t){return t.visitTableFunctionColumnList?t.visitTableFunctionColumnList(this):t.visitChildren(this)}},yR=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}functionWithArgumentTypes(){return this.getRuleContext(0,uR)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}ROUTINE(){return this.getToken(cn.ROUTINE,0)}commonFunctionOptionItem(t){return void 0===t?this.getRuleContexts(xR):this.getRuleContext(t,xR)}RESTRICT(){return this.getToken(cn.RESTRICT,0)}get ruleIndex(){return cn.RULE_alterFunctionStatement}accept(t){return t.visitAlterFunctionStatement?t.visitAlterFunctionStatement(this):t.visitChildren(this)}},fR=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}functionWithArgumentTypesList(){return this.getRuleContext(0,IR)}optionalDropBehavior(){return this.getRuleContext(0,ah)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}ROUTINE(){return this.getToken(cn.ROUTINE,0)}get ruleIndex(){return cn.RULE_removeFunctionStatement}accept(t){return t.visitRemoveFunctionStatement?t.visitRemoveFunctionStatement(this):t.visitChildren(this)}},YR=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}AGGREGATE(){return this.getToken(cn.AGGREGATE,0)}aggregateWithArgumentTypesList(){return this.getRuleContext(0,pR)}optionalDropBehavior(){return this.getRuleContext(0,ah)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_removeAggregateStatement}accept(t){return t.visitRemoveAggregateStatement?t.visitRemoveAggregateStatement(this):t.visitChildren(this)}},wR=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}operatorWithArgumentTypesList(){return this.getRuleContext(0,VR)}optionalDropBehavior(){return this.getRuleContext(0,ah)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_removeOperatorStatement}accept(t){return t.visitRemoveOperatorStatement?t.visitRemoveOperatorStatement(this):t.visitChildren(this)}},bR=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}typeName(t){return void 0===t?this.getRuleContexts(LO):this.getRuleContext(t,LO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}COMMA(){return this.getToken(cn.COMMA,0)}NONE(){return this.getToken(cn.NONE,0)}get ruleIndex(){return cn.RULE_operatorArgumentTypes}accept(t){return t.visitOperatorArgumentTypes?t.visitOperatorArgumentTypes(this):t.visitChildren(this)}},WR=class extends ga{constructor(t,e){super(t,e)}allOperator(){return this.getRuleContext(0,VI)}columnId(t){return void 0===t?this.getRuleContexts($u):this.getRuleContext(t,$u)}DOT(t){return void 0===t?this.getTokens(cn.DOT):this.getToken(cn.DOT,t)}get ruleIndex(){return cn.RULE_anyOperator}accept(t){return t.visitAnyOperator?t.visitAnyOperator(this):t.visitChildren(this)}},VR=class extends ga{constructor(t,e){super(t,e)}operatorWithArgumentTypes(t){return void 0===t?this.getRuleContexts(XR):this.getRuleContext(t,XR)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_operatorWithArgumentTypesList}accept(t){return t.visitOperatorWithArgumentTypesList?t.visitOperatorWithArgumentTypesList(this):t.visitChildren(this)}},XR=class extends ga{constructor(t,e){super(t,e)}anyOperator(){return this.getRuleContext(0,WR)}operatorArgumentTypes(){return this.getRuleContext(0,bR)}get ruleIndex(){return cn.RULE_operatorWithArgumentTypes}accept(t){return t.visitOperatorWithArgumentTypes?t.visitOperatorWithArgumentTypes(this):t.visitChildren(this)}},KR=class extends ga{constructor(t,e){super(t,e)}DO(){return this.getToken(cn.DO,0)}doStatementOptionsList(){return this.getRuleContext(0,QR)}get ruleIndex(){return cn.RULE_doStatement}accept(t){return t.visitDoStatement?t.visitDoStatement(this):t.visitChildren(this)}},QR=class extends ga{constructor(t,e){super(t,e)}doStatementOptionItem(t){return void 0===t?this.getRuleContexts(JR):this.getRuleContext(t,JR)}get ruleIndex(){return cn.RULE_doStatementOptionsList}accept(t){return t.visitDoStatementOptionsList?t.visitDoStatementOptionsList(this):t.visitChildren(this)}},JR=class extends ga{constructor(t,e){super(t,e)}sconst(){return this.getRuleContext(0,Qu)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}nonReservedWordOrSconst(){return this.getRuleContext(0,fn)}get ruleIndex(){return cn.RULE_doStatementOptionItem}accept(t){return t.visitDoStatementOptionItem?t.visitDoStatementOptionItem(this):t.visitChildren(this)}},ZR=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}CAST(){return this.getToken(cn.CAST,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}typeName(t){return void 0===t?this.getRuleContexts(LO):this.getRuleContext(t,LO)}AS(){return this.getToken(cn.AS,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}WITH(){return this.getToken(cn.WITH,0)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}functionWithArgumentTypes(){return this.getRuleContext(0,uR)}castContext(){return this.getRuleContext(0,qR)}WITHOUT(){return this.getToken(cn.WITHOUT,0)}INOUT(){return this.getToken(cn.INOUT,0)}get ruleIndex(){return cn.RULE_createCastStatement}accept(t){return t.visitCreateCastStatement?t.visitCreateCastStatement(this):t.visitChildren(this)}},qR=class extends ga{constructor(t,e){super(t,e)}AS(){return this.getToken(cn.AS,0)}IMPLICIT_P(){return this.getToken(cn.IMPLICIT_P,0)}ASSIGNMENT(){return this.getToken(cn.ASSIGNMENT,0)}get ruleIndex(){return cn.RULE_castContext}accept(t){return t.visitCastContext?t.visitCastContext(this):t.visitChildren(this)}},jR=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}CAST(){return this.getToken(cn.CAST,0)}optionalIfExists(){return this.getRuleContext(0,zR)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}typeName(t){return void 0===t?this.getRuleContexts(LO):this.getRuleContext(t,LO)}AS(){return this.getToken(cn.AS,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}optionalDropBehavior(){return this.getRuleContext(0,ah)}get ruleIndex(){return cn.RULE_dropCastStatement}accept(t){return t.visitDropCastStatement?t.visitDropCastStatement(this):t.visitChildren(this)}},zR=class extends ga{constructor(t,e){super(t,e)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_optionalIfExists}accept(t){return t.visitOptionalIfExists?t.visitOptionalIfExists(this):t.visitChildren(this)}},$R=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}optionalOrReplace(){return this.getRuleContext(0,lR)}TRANSFORM(){return this.getToken(cn.TRANSFORM,0)}FOR(){return this.getToken(cn.FOR,0)}typeName(){return this.getRuleContext(0,LO)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}name(){return this.getRuleContext(0,yu)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}transformElementList(){return this.getRuleContext(0,tA)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_createTransformStatement}accept(t){return t.visitCreateTransformStatement?t.visitCreateTransformStatement(this):t.visitChildren(this)}},tA=class extends ga{constructor(t,e){super(t,e)}FROM(){return this.getToken(cn.FROM,0)}SQL_P(t){return void 0===t?this.getTokens(cn.SQL_P):this.getToken(cn.SQL_P,t)}WITH(t){return void 0===t?this.getTokens(cn.WITH):this.getToken(cn.WITH,t)}FUNCTION(t){return void 0===t?this.getTokens(cn.FUNCTION):this.getToken(cn.FUNCTION,t)}functionWithArgumentTypes(t){return void 0===t?this.getRuleContexts(uR):this.getRuleContext(t,uR)}COMMA(){return this.getToken(cn.COMMA,0)}TO(){return this.getToken(cn.TO,0)}get ruleIndex(){return cn.RULE_transformElementList}accept(t){return t.visitTransformElementList?t.visitTransformElementList(this):t.visitChildren(this)}},eA=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}TRANSFORM(){return this.getToken(cn.TRANSFORM,0)}optionalIfExists(){return this.getRuleContext(0,zR)}FOR(){return this.getToken(cn.FOR,0)}typeName(){return this.getRuleContext(0,LO)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}name(){return this.getRuleContext(0,yu)}optionalDropBehavior(){return this.getRuleContext(0,ah)}get ruleIndex(){return cn.RULE_dropTransformStatement}accept(t){return t.visitDropTransformStatement?t.visitDropTransformStatement(this):t.visitChildren(this)}},sA=class extends ga{constructor(t,e){super(t,e)}REINDEX(){return this.getToken(cn.REINDEX,0)}reindexTargetType(){return this.getRuleContext(0,aA)}qualifiedName(){return this.getRuleContext(0,vu)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}reindexOptionList(){return this.getRuleContext(0,rA)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}CONCURRENTLY(){return this.getToken(cn.CONCURRENTLY,0)}DATABASE(){return this.getToken(cn.DATABASE,0)}databaseName(){return this.getRuleContext(0,Uu)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaName(){return this.getRuleContext(0,Du)}INDEX(){return this.getToken(cn.INDEX,0)}indexName(){return this.getRuleContext(0,gu)}SYSTEM_P(){return this.getToken(cn.SYSTEM_P,0)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_reindexStatement}accept(t){return t.visitReindexStatement?t.visitReindexStatement(this):t.visitChildren(this)}},aA=class extends ga{constructor(t,e){super(t,e)}TABLE(){return this.getToken(cn.TABLE,0)}SYSTEM_P(){return this.getToken(cn.SYSTEM_P,0)}get ruleIndex(){return cn.RULE_reindexTargetType}accept(t){return t.visitReindexTargetType?t.visitReindexTargetType(this):t.visitChildren(this)}},rA=class extends ga{constructor(t,e){super(t,e)}reindexOptionElement(t){return void 0===t?this.getRuleContexts(iA):this.getRuleContext(t,iA)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_reindexOptionList}accept(t){return t.visitReindexOptionList?t.visitReindexOptionList(this):t.visitChildren(this)}},iA=class extends ga{constructor(t,e){super(t,e)}VERBOSE(){return this.getToken(cn.VERBOSE,0)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}CONCURRENTLY(){return this.getToken(cn.CONCURRENTLY,0)}get ruleIndex(){return cn.RULE_reindexOptionElement}accept(t){return t.visitReindexOptionElement?t.visitReindexOptionElement(this):t.visitChildren(this)}},cA=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}name(){return this.getRuleContext(0,yu)}SET(){return this.getToken(cn.SET,0)}relOptions(){return this.getRuleContext(0,nh)}RESET(){return this.getToken(cn.RESET,0)}get ruleIndex(){return cn.RULE_alterTablespaceStatement}accept(t){return t.visitAlterTablespaceStatement?t.visitAlterTablespaceStatement(this):t.visitChildren(this)}},nA=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}AGGREGATE(){return this.getToken(cn.AGGREGATE,0)}aggregateWithArgumentTypes(){return this.getRuleContext(0,DR)}RENAME(){return this.getToken(cn.RENAME,0)}TO(){return this.getToken(cn.TO,0)}name(t){return void 0===t?this.getRuleContexts(yu):this.getRuleContext(t,yu)}COLLATION(){return this.getToken(cn.COLLATION,0)}anyName(){return this.getRuleContext(0,mo)}CONVERSION_P(){return this.getToken(cn.CONVERSION_P,0)}DATABASE(){return this.getToken(cn.DATABASE,0)}databaseName(){return this.getRuleContext(0,Uu)}DOMAIN_P(){return this.getToken(cn.DOMAIN_P,0)}CONSTRAINT(){return this.getToken(cn.CONSTRAINT,0)}constraintName(){return this.getRuleContext(0,Hu)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}DATA_P(){return this.getToken(cn.DATA_P,0)}WRAPPER(){return this.getToken(cn.WRAPPER,0)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}functionWithArgumentTypes(){return this.getRuleContext(0,uR)}optionalProcedural(){return this.getRuleContext(0,BE)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}CLASS(){return this.getToken(cn.CLASS,0)}USING(){return this.getToken(cn.USING,0)}FAMILY(){return this.getToken(cn.FAMILY,0)}POLICY(){return this.getToken(cn.POLICY,0)}ON(){return this.getToken(cn.ON,0)}qualifiedName(){return this.getRuleContext(0,vu)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}PUBLICATION(){return this.getToken(cn.PUBLICATION,0)}ROUTINE(){return this.getToken(cn.ROUTINE,0)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaName(){return this.getRuleContext(0,Du)}SERVER(){return this.getToken(cn.SERVER,0)}SUBSCRIPTION(){return this.getToken(cn.SUBSCRIPTION,0)}TABLE(){return this.getToken(cn.TABLE,0)}relationExpression(){return this.getRuleContext(0,eO)}SEQUENCE(){return this.getToken(cn.SEQUENCE,0)}sequenceName(){return this.getRuleContext(0,Gu)}VIEW(){return this.getToken(cn.VIEW,0)}MATERIALIZED(){return this.getToken(cn.MATERIALIZED,0)}INDEX(){return this.getToken(cn.INDEX,0)}indexName(){return this.getRuleContext(0,gu)}optionalColumn(){return this.getRuleContext(0,hA)}RULE(){return this.getToken(cn.RULE,0)}TRIGGER(){return this.getToken(cn.TRIGGER,0)}triggerName(){return this.getRuleContext(0,ku)}EVENT(){return this.getToken(cn.EVENT,0)}roleOrAliases(){return this.getRuleContext(0,RC)}roleName(t){return void 0===t?this.getRuleContexts(ju):this.getRuleContext(t,ju)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}STATISTICS(){return this.getToken(cn.STATISTICS,0)}TEXT_P(){return this.getToken(cn.TEXT_P,0)}SEARCH(){return this.getToken(cn.SEARCH,0)}PARSER(){return this.getToken(cn.PARSER,0)}DICTIONARY(){return this.getToken(cn.DICTIONARY,0)}TEMPLATE(){return this.getToken(cn.TEMPLATE,0)}CONFIGURATION(){return this.getToken(cn.CONFIGURATION,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}ATTRIBUTE(){return this.getToken(cn.ATTRIBUTE,0)}optionalDropBehavior(){return this.getRuleContext(0,ah)}get ruleIndex(){return cn.RULE_renameStatement}accept(t){return t.visitRenameStatement?t.visitRenameStatement(this):t.visitChildren(this)}},hA=class extends ga{constructor(t,e){super(t,e)}COLUMN(){return this.getToken(cn.COLUMN,0)}get ruleIndex(){return cn.RULE_optionalColumn}accept(t){return t.visitOptionalColumn?t.visitOptionalColumn(this):t.visitChildren(this)}},EA=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(cn.SET,0)}DATA_P(){return this.getToken(cn.DATA_P,0)}get ruleIndex(){return cn.RULE_optionalSetData}accept(t){return t.visitOptionalSetData?t.visitOptionalSetData(this):t.visitChildren(this)}},TA=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}functionWithArgumentTypes(){return this.getRuleContext(0,uR)}DEPENDS(){return this.getToken(cn.DEPENDS,0)}ON(t){return void 0===t?this.getTokens(cn.ON):this.getToken(cn.ON,t)}EXTENSION(){return this.getToken(cn.EXTENSION,0)}name(){return this.getRuleContext(0,yu)}NO(){return this.getToken(cn.NO,0)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}ROUTINE(){return this.getToken(cn.ROUTINE,0)}TRIGGER(){return this.getToken(cn.TRIGGER,0)}triggerName(){return this.getRuleContext(0,ku)}qualifiedName(){return this.getRuleContext(0,vu)}MATERIALIZED(){return this.getToken(cn.MATERIALIZED,0)}VIEW(){return this.getToken(cn.VIEW,0)}INDEX(){return this.getToken(cn.INDEX,0)}indexName(){return this.getRuleContext(0,gu)}get ruleIndex(){return cn.RULE_alterObjectDependsStatement}accept(t){return t.visitAlterObjectDependsStatement?t.visitAlterObjectDependsStatement(this):t.visitChildren(this)}},oA=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}AGGREGATE(){return this.getToken(cn.AGGREGATE,0)}aggregateWithArgumentTypes(){return this.getRuleContext(0,DR)}SET(){return this.getToken(cn.SET,0)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaName(){return this.getRuleContext(0,Du)}COLLATION(){return this.getToken(cn.COLLATION,0)}anyName(){return this.getRuleContext(0,mo)}CONVERSION_P(){return this.getToken(cn.CONVERSION_P,0)}DOMAIN_P(){return this.getToken(cn.DOMAIN_P,0)}EXTENSION(){return this.getToken(cn.EXTENSION,0)}name(){return this.getRuleContext(0,yu)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}functionWithArgumentTypes(){return this.getRuleContext(0,uR)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}operatorWithArgumentTypes(){return this.getRuleContext(0,XR)}CLASS(){return this.getToken(cn.CLASS,0)}USING(){return this.getToken(cn.USING,0)}FAMILY(){return this.getToken(cn.FAMILY,0)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}ROUTINE(){return this.getToken(cn.ROUTINE,0)}TABLE(){return this.getToken(cn.TABLE,0)}relationExpression(){return this.getRuleContext(0,eO)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}STATISTICS(){return this.getToken(cn.STATISTICS,0)}TEXT_P(){return this.getToken(cn.TEXT_P,0)}SEARCH(){return this.getToken(cn.SEARCH,0)}PARSER(){return this.getToken(cn.PARSER,0)}DICTIONARY(){return this.getToken(cn.DICTIONARY,0)}TEMPLATE(){return this.getToken(cn.TEMPLATE,0)}CONFIGURATION(){return this.getToken(cn.CONFIGURATION,0)}SEQUENCE(){return this.getToken(cn.SEQUENCE,0)}sequenceName(){return this.getRuleContext(0,Gu)}VIEW(){return this.getToken(cn.VIEW,0)}qualifiedName(){return this.getRuleContext(0,vu)}MATERIALIZED(){return this.getToken(cn.MATERIALIZED,0)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}get ruleIndex(){return cn.RULE_alterObjectSchemaStatement}accept(t){return t.visitAlterObjectSchemaStatement?t.visitAlterObjectSchemaStatement(this):t.visitChildren(this)}},RA=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}operatorWithArgumentTypes(){return this.getRuleContext(0,XR)}SET(){return this.getToken(cn.SET,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}operatorDefinitionList(){return this.getRuleContext(0,AA)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_alterOperatorStatement}accept(t){return t.visitAlterOperatorStatement?t.visitAlterOperatorStatement(this):t.visitChildren(this)}},AA=class extends ga{constructor(t,e){super(t,e)}operatorDefinitionElement(t){return void 0===t?this.getRuleContexts(SA):this.getRuleContext(t,SA)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_operatorDefinitionList}accept(t){return t.visitOperatorDefinitionList?t.visitOperatorDefinitionList(this):t.visitChildren(this)}},SA=class extends ga{constructor(t,e){super(t,e)}columnLabel(){return this.getRuleContext(0,aN)}EQUAL(){return this.getToken(cn.EQUAL,0)}NONE(){return this.getToken(cn.NONE,0)}operatorDefinitionArgument(){return this.getRuleContext(0,lA)}get ruleIndex(){return cn.RULE_operatorDefinitionElement}accept(t){return t.visitOperatorDefinitionElement?t.visitOperatorDefinitionElement(this):t.visitChildren(this)}},lA=class extends ga{constructor(t,e){super(t,e)}functionType(){return this.getRuleContext(0,dR)}reservedKeyword(){return this.getRuleContext(0,EN)}allOperatorQualifier(){return this.getRuleContext(0,QI)}numericOnly(){return this.getRuleContext(0,xE)}sconst(){return this.getRuleContext(0,Qu)}get ruleIndex(){return cn.RULE_operatorDefinitionArgument}accept(t){return t.visitOperatorDefinitionArgument?t.visitOperatorDefinitionArgument(this):t.visitChildren(this)}},OA=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}anyName(){return this.getRuleContext(0,mo)}SET(){return this.getToken(cn.SET,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}operatorDefinitionList(){return this.getRuleContext(0,AA)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_alterTypeStatement}accept(t){return t.visitAlterTypeStatement?t.visitAlterTypeStatement(this):t.visitChildren(this)}},IA=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}AGGREGATE(){return this.getToken(cn.AGGREGATE,0)}aggregateWithArgumentTypes(){return this.getRuleContext(0,DR)}OWNER(){return this.getToken(cn.OWNER,0)}TO(){return this.getToken(cn.TO,0)}roleName(){return this.getRuleContext(0,ju)}COLLATION(){return this.getToken(cn.COLLATION,0)}anyName(){return this.getRuleContext(0,mo)}CONVERSION_P(){return this.getToken(cn.CONVERSION_P,0)}DATABASE(){return this.getToken(cn.DATABASE,0)}databaseName(){return this.getRuleContext(0,Uu)}DOMAIN_P(){return this.getToken(cn.DOMAIN_P,0)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}functionWithArgumentTypes(){return this.getRuleContext(0,uR)}optionalProcedural(){return this.getRuleContext(0,BE)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}name(){return this.getRuleContext(0,yu)}LARGE_P(){return this.getToken(cn.LARGE_P,0)}OBJECT_P(){return this.getToken(cn.OBJECT_P,0)}numericOnly(){return this.getRuleContext(0,xE)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}operatorWithArgumentTypes(){return this.getRuleContext(0,XR)}CLASS(){return this.getToken(cn.CLASS,0)}USING(){return this.getToken(cn.USING,0)}FAMILY(){return this.getToken(cn.FAMILY,0)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}ROUTINE(){return this.getToken(cn.ROUTINE,0)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}schemaName(){return this.getRuleContext(0,Du)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}STATISTICS(){return this.getToken(cn.STATISTICS,0)}TEXT_P(){return this.getToken(cn.TEXT_P,0)}SEARCH(){return this.getToken(cn.SEARCH,0)}DICTIONARY(){return this.getToken(cn.DICTIONARY,0)}CONFIGURATION(){return this.getToken(cn.CONFIGURATION,0)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}DATA_P(){return this.getToken(cn.DATA_P,0)}WRAPPER(){return this.getToken(cn.WRAPPER,0)}SERVER(){return this.getToken(cn.SERVER,0)}EVENT(){return this.getToken(cn.EVENT,0)}TRIGGER(){return this.getToken(cn.TRIGGER,0)}PUBLICATION(){return this.getToken(cn.PUBLICATION,0)}SUBSCRIPTION(){return this.getToken(cn.SUBSCRIPTION,0)}get ruleIndex(){return cn.RULE_alterOwnerStatement}accept(t){return t.visitAlterOwnerStatement?t.visitAlterOwnerStatement(this):t.visitChildren(this)}},uA=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}PUBLICATION(){return this.getToken(cn.PUBLICATION,0)}name(){return this.getRuleContext(0,yu)}optionalPublicationForTables(){return this.getRuleContext(0,NA)}optionalDefinition(){return this.getRuleContext(0,FR)}get ruleIndex(){return cn.RULE_createPublicationStatement}accept(t){return t.visitCreatePublicationStatement?t.visitCreatePublicationStatement(this):t.visitChildren(this)}},NA=class extends ga{constructor(t,e){super(t,e)}publicationForTables(){return this.getRuleContext(0,LA)}get ruleIndex(){return cn.RULE_optionalPublicationForTables}accept(t){return t.visitOptionalPublicationForTables?t.visitOptionalPublicationForTables(this):t.visitChildren(this)}},LA=class extends ga{constructor(t,e){super(t,e)}FOR(){return this.getToken(cn.FOR,0)}TABLE(){return this.getToken(cn.TABLE,0)}relationExpressionList(){return this.getRuleContext(0,sO)}ALL(){return this.getToken(cn.ALL,0)}TABLES(){return this.getToken(cn.TABLES,0)}get ruleIndex(){return cn.RULE_publicationForTables}accept(t){return t.visitPublicationForTables?t.visitPublicationForTables(this):t.visitChildren(this)}},CA=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}PUBLICATION(){return this.getToken(cn.PUBLICATION,0)}name(){return this.getRuleContext(0,yu)}SET(){return this.getToken(cn.SET,0)}definition(){return this.getRuleContext(0,$T)}ADD_P(){return this.getToken(cn.ADD_P,0)}TABLE(){return this.getToken(cn.TABLE,0)}relationExpressionList(){return this.getRuleContext(0,sO)}DROP(){return this.getToken(cn.DROP,0)}get ruleIndex(){return cn.RULE_alterPublicationStatement}accept(t){return t.visitAlterPublicationStatement?t.visitAlterPublicationStatement(this):t.visitChildren(this)}},_A=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}SUBSCRIPTION(){return this.getToken(cn.SUBSCRIPTION,0)}name(){return this.getRuleContext(0,yu)}CONNECTION(){return this.getToken(cn.CONNECTION,0)}sconst(){return this.getRuleContext(0,Qu)}PUBLICATION(){return this.getToken(cn.PUBLICATION,0)}publicationNameList(){return this.getRuleContext(0,PA)}optionalDefinition(){return this.getRuleContext(0,FR)}get ruleIndex(){return cn.RULE_createSubscriptionStatement}accept(t){return t.visitCreateSubscriptionStatement?t.visitCreateSubscriptionStatement(this):t.visitChildren(this)}},PA=class extends ga{constructor(t,e){super(t,e)}publicationNameItem(t){return void 0===t?this.getRuleContexts(MA):this.getRuleContext(t,MA)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_publicationNameList}accept(t){return t.visitPublicationNameList?t.visitPublicationNameList(this):t.visitChildren(this)}},MA=class extends ga{constructor(t,e){super(t,e)}columnLabel(){return this.getRuleContext(0,aN)}get ruleIndex(){return cn.RULE_publicationNameItem}accept(t){return t.visitPublicationNameItem?t.visitPublicationNameItem(this):t.visitChildren(this)}},dA=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}SUBSCRIPTION(){return this.getToken(cn.SUBSCRIPTION,0)}name(){return this.getRuleContext(0,yu)}SET(){return this.getToken(cn.SET,0)}definition(){return this.getRuleContext(0,$T)}CONNECTION(){return this.getToken(cn.CONNECTION,0)}sconst(){return this.getRuleContext(0,Qu)}REFRESH(){return this.getToken(cn.REFRESH,0)}PUBLICATION(){return this.getToken(cn.PUBLICATION,0)}optionalDefinition(){return this.getRuleContext(0,FR)}publicationNameList(){return this.getRuleContext(0,PA)}ENABLE_P(){return this.getToken(cn.ENABLE_P,0)}DISABLE_P(){return this.getToken(cn.DISABLE_P,0)}get ruleIndex(){return cn.RULE_alterSubscriptionStatement}accept(t){return t.visitAlterSubscriptionStatement?t.visitAlterSubscriptionStatement(this):t.visitChildren(this)}},UA=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}SUBSCRIPTION(){return this.getToken(cn.SUBSCRIPTION,0)}name(){return this.getRuleContext(0,yu)}optionalDropBehavior(){return this.getRuleContext(0,ah)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_dropSubscriptionStatement}accept(t){return t.visitDropSubscriptionStatement?t.visitDropSubscriptionStatement(this):t.visitChildren(this)}},mA=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}optionalOrReplace(){return this.getRuleContext(0,lR)}RULE(){return this.getToken(cn.RULE,0)}name(){return this.getRuleContext(0,yu)}AS(){return this.getToken(cn.AS,0)}ON(){return this.getToken(cn.ON,0)}event(){return this.getRuleContext(0,kA)}TO(){return this.getToken(cn.TO,0)}qualifiedName(){return this.getRuleContext(0,vu)}whereClause(){return this.getRuleContext(0,EO)}DO(){return this.getToken(cn.DO,0)}optionalInstead(){return this.getRuleContext(0,HA)}ruleActionList(){return this.getRuleContext(0,DA)}get ruleIndex(){return cn.RULE_ruleStatement}accept(t){return t.visitRuleStatement?t.visitRuleStatement(this):t.visitChildren(this)}},DA=class extends ga{constructor(t,e){super(t,e)}NOTHING(){return this.getToken(cn.NOTHING,0)}ruleActionStatement(){return this.getRuleContext(0,gA)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}ruleActionMulti(){return this.getRuleContext(0,pA)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_ruleActionList}accept(t){return t.visitRuleActionList?t.visitRuleActionList(this):t.visitChildren(this)}},pA=class extends ga{constructor(t,e){super(t,e)}ruleActionStatementOrEmpty(t){return void 0===t?this.getRuleContexts(xA):this.getRuleContext(t,xA)}SEMI(t){return void 0===t?this.getTokens(cn.SEMI):this.getToken(cn.SEMI,t)}get ruleIndex(){return cn.RULE_ruleActionMulti}accept(t){return t.visitRuleActionMulti?t.visitRuleActionMulti(this):t.visitChildren(this)}},gA=class extends ga{constructor(t,e){super(t,e)}selectStatement(){return this.getRuleContext(0,il)}insertStatement(){return this.getRuleContext(0,kS)}updateStatement(){return this.getRuleContext(0,zS)}deleteStatement(){return this.getRuleContext(0,XS)}notifyStatement(){return this.getRuleContext(0,GA)}get ruleIndex(){return cn.RULE_ruleActionStatement}accept(t){return t.visitRuleActionStatement?t.visitRuleActionStatement(this):t.visitChildren(this)}},xA=class extends ga{constructor(t,e){super(t,e)}ruleActionStatement(){return this.getRuleContext(0,gA)}get ruleIndex(){return cn.RULE_ruleActionStatementOrEmpty}accept(t){return t.visitRuleActionStatementOrEmpty?t.visitRuleActionStatementOrEmpty(this):t.visitChildren(this)}},kA=class extends ga{constructor(t,e){super(t,e)}SELECT(){return this.getToken(cn.SELECT,0)}UPDATE(){return this.getToken(cn.UPDATE,0)}DELETE_P(){return this.getToken(cn.DELETE_P,0)}INSERT(){return this.getToken(cn.INSERT,0)}get ruleIndex(){return cn.RULE_event}accept(t){return t.visitEvent?t.visitEvent(this):t.visitChildren(this)}},HA=class extends ga{constructor(t,e){super(t,e)}INSTEAD(){return this.getToken(cn.INSTEAD,0)}ALSO(){return this.getToken(cn.ALSO,0)}get ruleIndex(){return cn.RULE_optionalInstead}accept(t){return t.visitOptionalInstead?t.visitOptionalInstead(this):t.visitChildren(this)}},GA=class extends ga{constructor(t,e){super(t,e)}NOTIFY(){return this.getToken(cn.NOTIFY,0)}columnId(){return this.getRuleContext(0,$u)}notifyPayload(){return this.getRuleContext(0,FA)}get ruleIndex(){return cn.RULE_notifyStatement}accept(t){return t.visitNotifyStatement?t.visitNotifyStatement(this):t.visitChildren(this)}},FA=class extends ga{constructor(t,e){super(t,e)}COMMA(){return this.getToken(cn.COMMA,0)}sconst(){return this.getRuleContext(0,Qu)}get ruleIndex(){return cn.RULE_notifyPayload}accept(t){return t.visitNotifyPayload?t.visitNotifyPayload(this):t.visitChildren(this)}},vA=class extends ga{constructor(t,e){super(t,e)}LISTEN(){return this.getToken(cn.LISTEN,0)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_listenStatement}accept(t){return t.visitListenStatement?t.visitListenStatement(this):t.visitChildren(this)}},BA=class extends ga{constructor(t,e){super(t,e)}UNLISTEN(){return this.getToken(cn.UNLISTEN,0)}columnId(){return this.getRuleContext(0,$u)}STAR(){return this.getToken(cn.STAR,0)}get ruleIndex(){return cn.RULE_unlistenStatement}accept(t){return t.visitUnlistenStatement?t.visitUnlistenStatement(this):t.visitChildren(this)}},yA=class extends ga{constructor(t,e){super(t,e)}ABORT_P(){return this.getToken(cn.ABORT_P,0)}optionalTransaction(){return this.getRuleContext(0,fA)}optionalTransactionChain(){return this.getRuleContext(0,bA)}BEGIN_P(){return this.getToken(cn.BEGIN_P,0)}transactionModeList(){return this.getRuleContext(0,wA)}START(){return this.getToken(cn.START,0)}TRANSACTION(){return this.getToken(cn.TRANSACTION,0)}COMMIT(){return this.getToken(cn.COMMIT,0)}END_P(){return this.getToken(cn.END_P,0)}ROLLBACK(){return this.getToken(cn.ROLLBACK,0)}SAVEPOINT(){return this.getToken(cn.SAVEPOINT,0)}columnId(){return this.getRuleContext(0,$u)}RELEASE(){return this.getToken(cn.RELEASE,0)}TO(){return this.getToken(cn.TO,0)}PREPARE(){return this.getToken(cn.PREPARE,0)}sconst(){return this.getRuleContext(0,Qu)}PREPARED(){return this.getToken(cn.PREPARED,0)}get ruleIndex(){return cn.RULE_transactionStatement}accept(t){return t.visitTransactionStatement?t.visitTransactionStatement(this):t.visitChildren(this)}},fA=class extends ga{constructor(t,e){super(t,e)}WORK(){return this.getToken(cn.WORK,0)}TRANSACTION(){return this.getToken(cn.TRANSACTION,0)}get ruleIndex(){return cn.RULE_optionalTransaction}accept(t){return t.visitOptionalTransaction?t.visitOptionalTransaction(this):t.visitChildren(this)}},YA=class extends ga{constructor(t,e){super(t,e)}ISOLATION(){return this.getToken(cn.ISOLATION,0)}LEVEL(){return this.getToken(cn.LEVEL,0)}isoLevel(){return this.getRuleContext(0,Fn)}READ(){return this.getToken(cn.READ,0)}ONLY(){return this.getToken(cn.ONLY,0)}WRITE(){return this.getToken(cn.WRITE,0)}DEFERRABLE(){return this.getToken(cn.DEFERRABLE,0)}NOT(){return this.getToken(cn.NOT,0)}get ruleIndex(){return cn.RULE_transactionModeItem}accept(t){return t.visitTransactionModeItem?t.visitTransactionModeItem(this):t.visitChildren(this)}},wA=class extends ga{constructor(t,e){super(t,e)}transactionModeItem(t){return void 0===t?this.getRuleContexts(YA):this.getRuleContext(t,YA)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_transactionModeList}accept(t){return t.visitTransactionModeList?t.visitTransactionModeList(this):t.visitChildren(this)}},bA=class extends ga{constructor(t,e){super(t,e)}AND(){return this.getToken(cn.AND,0)}CHAIN(){return this.getToken(cn.CHAIN,0)}NO(){return this.getToken(cn.NO,0)}get ruleIndex(){return cn.RULE_optionalTransactionChain}accept(t){return t.visitOptionalTransactionChain?t.visitOptionalTransactionChain(this):t.visitChildren(this)}},WA=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}temporaryOption(){return this.getRuleContext(0,gh)}AS(){return this.getToken(cn.AS,0)}selectStatement(){return this.getRuleContext(0,il)}optionalCheckOption(){return this.getRuleContext(0,VA)}VIEW(){return this.getToken(cn.VIEW,0)}qualifiedName(){return this.getRuleContext(0,vu)}columnListWithParentheses(){return this.getRuleContext(0,Zh)}optionalRelOptions(){return this.getRuleContext(0,hh)}RECURSIVE(){return this.getToken(cn.RECURSIVE,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}columnList(){return this.getRuleContext(0,qh)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}OR(){return this.getToken(cn.OR,0)}REPLACE(){return this.getToken(cn.REPLACE,0)}get ruleIndex(){return cn.RULE_viewStatement}accept(t){return t.visitViewStatement?t.visitViewStatement(this):t.visitChildren(this)}},VA=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}CHECK(){return this.getToken(cn.CHECK,0)}OPTION(){return this.getToken(cn.OPTION,0)}CASCADED(){return this.getToken(cn.CASCADED,0)}LOCAL(){return this.getToken(cn.LOCAL,0)}get ruleIndex(){return cn.RULE_optionalCheckOption}accept(t){return t.visitOptionalCheckOption?t.visitOptionalCheckOption(this):t.visitChildren(this)}},XA=class extends ga{constructor(t,e){super(t,e)}LOAD(){return this.getToken(cn.LOAD,0)}fileName(){return this.getRuleContext(0,Yu)}get ruleIndex(){return cn.RULE_loadStatement}accept(t){return t.visitLoadStatement?t.visitLoadStatement(this):t.visitChildren(this)}},KA=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}DATABASE(){return this.getToken(cn.DATABASE,0)}name(){return this.getRuleContext(0,yu)}optionalWith(){return this.getRuleContext(0,An)}createDatabaseOptionList(){return this.getRuleContext(0,QA)}get ruleIndex(){return cn.RULE_createDatabaseStatement}accept(t){return t.visitCreateDatabaseStatement?t.visitCreateDatabaseStatement(this):t.visitChildren(this)}},QA=class extends ga{constructor(t,e){super(t,e)}createDatabaseOptionItem(t){return void 0===t?this.getRuleContexts(JA):this.getRuleContext(t,JA)}get ruleIndex(){return cn.RULE_createDatabaseOptionList}accept(t){return t.visitCreateDatabaseOptionList?t.visitCreateDatabaseOptionList(this):t.visitChildren(this)}},JA=class extends ga{constructor(t,e){super(t,e)}createDatabaseOptionName(){return this.getRuleContext(0,ZA)}signedIconst(){return this.getRuleContext(0,qu)}booleanOrString(){return this.getRuleContext(0,vn)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}EQUAL(){return this.getToken(cn.EQUAL,0)}get ruleIndex(){return cn.RULE_createDatabaseOptionItem}accept(t){return t.visitCreateDatabaseOptionItem?t.visitCreateDatabaseOptionItem(this):t.visitChildren(this)}},ZA=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,rN)}CONNECTION(){return this.getToken(cn.CONNECTION,0)}LIMIT(){return this.getToken(cn.LIMIT,0)}ENCODING(){return this.getToken(cn.ENCODING,0)}LOCATION(){return this.getToken(cn.LOCATION,0)}OWNER(){return this.getToken(cn.OWNER,0)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}TEMPLATE(){return this.getToken(cn.TEMPLATE,0)}get ruleIndex(){return cn.RULE_createDatabaseOptionName}accept(t){return t.visitCreateDatabaseOptionName?t.visitCreateDatabaseOptionName(this):t.visitChildren(this)}},qA=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}DATABASE(){return this.getToken(cn.DATABASE,0)}databaseName(){return this.getRuleContext(0,Uu)}WITH(){return this.getToken(cn.WITH,0)}createDatabaseOptionList(){return this.getRuleContext(0,QA)}SET(){return this.getToken(cn.SET,0)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_alterDatabaseStatement}accept(t){return t.visitAlterDatabaseStatement?t.visitAlterDatabaseStatement(this):t.visitChildren(this)}},jA=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}DATABASE(){return this.getToken(cn.DATABASE,0)}databaseName(){return this.getRuleContext(0,Uu)}setResetClause(){return this.getRuleContext(0,Wn)}get ruleIndex(){return cn.RULE_alterDatabaseSetStatement}accept(t){return t.visitAlterDatabaseSetStatement?t.visitAlterDatabaseSetStatement(this):t.visitChildren(this)}},zA=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(cn.DROP,0)}DATABASE(){return this.getToken(cn.DATABASE,0)}databaseName(){return this.getRuleContext(0,Uu)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}optionalWith(){return this.getRuleContext(0,An)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}FORCE(t){return void 0===t?this.getTokens(cn.FORCE):this.getToken(cn.FORCE,t)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_dropDatabaseStatement}accept(t){return t.visitDropDatabaseStatement?t.visitDropDatabaseStatement(this):t.visitChildren(this)}},$A=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}COLLATION(){return this.getToken(cn.COLLATION,0)}anyName(){return this.getRuleContext(0,mo)}REFRESH(){return this.getToken(cn.REFRESH,0)}VERSION_P(){return this.getToken(cn.VERSION_P,0)}get ruleIndex(){return cn.RULE_alterCollationStatement}accept(t){return t.visitAlterCollationStatement?t.visitAlterCollationStatement(this):t.visitChildren(this)}},tS=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}SYSTEM_P(){return this.getToken(cn.SYSTEM_P,0)}genericSetClause(){return this.getRuleContext(0,gn)}SET(){return this.getToken(cn.SET,0)}RESET(){return this.getToken(cn.RESET,0)}get ruleIndex(){return cn.RULE_alterSystemStatement}accept(t){return t.visitAlterSystemStatement?t.visitAlterSystemStatement(this):t.visitChildren(this)}},eS=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}DOMAIN_P(){return this.getToken(cn.DOMAIN_P,0)}anyName(){return this.getRuleContext(0,mo)}optionalAs(){return this.getRuleContext(0,rS)}typeName(){return this.getRuleContext(0,LO)}columnQualifierList(){return this.getRuleContext(0,fh)}get ruleIndex(){return cn.RULE_createDomainStatement}accept(t){return t.visitCreateDomainStatement?t.visitCreateDomainStatement(this):t.visitChildren(this)}},sS=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}DOMAIN_P(){return this.getToken(cn.DOMAIN_P,0)}anyName(){return this.getRuleContext(0,mo)}alterDomainCommand(){return this.getRuleContext(0,aS)}get ruleIndex(){return cn.RULE_alterDomainStatement}accept(t){return t.visitAlterDomainStatement?t.visitAlterDomainStatement(this):t.visitChildren(this)}},aS=class extends ga{constructor(t,e){super(t,e)}alterColumnDefault(){return this.getRuleContext(0,sh)}DROP(){return this.getToken(cn.DROP,0)}NOT(){return this.getToken(cn.NOT,0)}NULL_P(){return this.getToken(cn.NULL_P,0)}SET(){return this.getToken(cn.SET,0)}ADD_P(){return this.getToken(cn.ADD_P,0)}tableConstraint(){return this.getRuleContext(0,Qh)}CONSTRAINT(){return this.getToken(cn.CONSTRAINT,0)}constraintName(){return this.getRuleContext(0,Hu)}optionalDropBehavior(){return this.getRuleContext(0,ah)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}VALIDATE(){return this.getToken(cn.VALIDATE,0)}get ruleIndex(){return cn.RULE_alterDomainCommand}accept(t){return t.visitAlterDomainCommand?t.visitAlterDomainCommand(this):t.visitChildren(this)}},rS=class extends ga{constructor(t,e){super(t,e)}AS(){return this.getToken(cn.AS,0)}get ruleIndex(){return cn.RULE_optionalAs}accept(t){return t.visitOptionalAs?t.visitOptionalAs(this):t.visitChildren(this)}},iS=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(cn.ALTER,0)}TEXT_P(){return this.getToken(cn.TEXT_P,0)}SEARCH(){return this.getToken(cn.SEARCH,0)}DICTIONARY(){return this.getToken(cn.DICTIONARY,0)}anyName(){return this.getRuleContext(0,mo)}definition(){return this.getRuleContext(0,$T)}get ruleIndex(){return cn.RULE_altertsDictionaryStatement}accept(t){return t.visitAltertsDictionaryStatement?t.visitAltertsDictionaryStatement(this):t.visitChildren(this)}},cS=class extends ga{constructor(t,e){super(t,e)}ALTER(t){return void 0===t?this.getTokens(cn.ALTER):this.getToken(cn.ALTER,t)}TEXT_P(){return this.getToken(cn.TEXT_P,0)}SEARCH(){return this.getToken(cn.SEARCH,0)}CONFIGURATION(){return this.getToken(cn.CONFIGURATION,0)}anyName(t){return void 0===t?this.getRuleContexts(mo):this.getRuleContext(t,mo)}ADD_P(){return this.getToken(cn.ADD_P,0)}MAPPING(){return this.getToken(cn.MAPPING,0)}FOR(){return this.getToken(cn.FOR,0)}nameList(){return this.getRuleContext(0,Bu)}WITH(){return this.getToken(cn.WITH,0)}anyNameList(){return this.getRuleContext(0,Uo)}REPLACE(){return this.getToken(cn.REPLACE,0)}DROP(){return this.getToken(cn.DROP,0)}IF_P(){return this.getToken(cn.IF_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_altertsConfigurationStatement}accept(t){return t.visitAltertsConfigurationStatement?t.visitAltertsConfigurationStatement(this):t.visitChildren(this)}},nS=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(cn.CREATE,0)}CONVERSION_P(){return this.getToken(cn.CONVERSION_P,0)}anyName(t){return void 0===t?this.getRuleContexts(mo):this.getRuleContext(t,mo)}FOR(){return this.getToken(cn.FOR,0)}sconst(t){return void 0===t?this.getRuleContexts(Qu):this.getRuleContext(t,Qu)}TO(){return this.getToken(cn.TO,0)}FROM(){return this.getToken(cn.FROM,0)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}get ruleIndex(){return cn.RULE_createConversionStatement}accept(t){return t.visitCreateConversionStatement?t.visitCreateConversionStatement(this):t.visitChildren(this)}},hS=class extends ga{constructor(t,e){super(t,e)}CLUSTER(){return this.getToken(cn.CLUSTER,0)}optionalVerbose(){return this.getRuleContext(0,IS)}qualifiedName(){return this.getRuleContext(0,vu)}clusterIndexSpecification(){return this.getRuleContext(0,ES)}name(){return this.getRuleContext(0,yu)}ON(){return this.getToken(cn.ON,0)}get ruleIndex(){return cn.RULE_clusterStatement}accept(t){return t.visitClusterStatement?t.visitClusterStatement(this):t.visitChildren(this)}},ES=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_clusterIndexSpecification}accept(t){return t.visitClusterIndexSpecification?t.visitClusterIndexSpecification(this):t.visitChildren(this)}},TS=class extends ga{constructor(t,e){super(t,e)}VACUUM(){return this.getToken(cn.VACUUM,0)}optionalVerbose(){return this.getRuleContext(0,IS)}optionalVacuumRelationList(){return this.getRuleContext(0,LS)}FULL(){return this.getToken(cn.FULL,0)}FREEZE(){return this.getToken(cn.FREEZE,0)}analyzeKeyword(){return this.getRuleContext(0,AS)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}vacuumAnalyzeOptionList(){return this.getRuleContext(0,RS)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_vacuumStatement}accept(t){return t.visitVacuumStatement?t.visitVacuumStatement(this):t.visitChildren(this)}},oS=class extends ga{constructor(t,e){super(t,e)}analyzeKeyword(){return this.getRuleContext(0,AS)}optionalVerbose(){return this.getRuleContext(0,IS)}optionalVacuumRelationList(){return this.getRuleContext(0,LS)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}vacuumAnalyzeOptionList(){return this.getRuleContext(0,RS)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_analyzeStatement}accept(t){return t.visitAnalyzeStatement?t.visitAnalyzeStatement(this):t.visitChildren(this)}},RS=class extends ga{constructor(t,e){super(t,e)}vacuumAnalyzeOptionElement(t){return void 0===t?this.getRuleContexts(SS):this.getRuleContext(t,SS)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_vacuumAnalyzeOptionList}accept(t){return t.visitVacuumAnalyzeOptionList?t.visitVacuumAnalyzeOptionList(this):t.visitChildren(this)}},AS=class extends ga{constructor(t,e){super(t,e)}ANALYZE(){return this.getToken(cn.ANALYZE,0)}ANALYSE(){return this.getToken(cn.ANALYSE,0)}get ruleIndex(){return cn.RULE_analyzeKeyword}accept(t){return t.visitAnalyzeKeyword?t.visitAnalyzeKeyword(this):t.visitChildren(this)}},SS=class extends ga{constructor(t,e){super(t,e)}vacuumAnalyzeOptionName(){return this.getRuleContext(0,lS)}vacuumAnalyzeOptionArgument(){return this.getRuleContext(0,OS)}get ruleIndex(){return cn.RULE_vacuumAnalyzeOptionElement}accept(t){return t.visitVacuumAnalyzeOptionElement?t.visitVacuumAnalyzeOptionElement(this):t.visitChildren(this)}},lS=class extends ga{constructor(t,e){super(t,e)}nonReservedWord(){return this.getRuleContext(0,sN)}analyzeKeyword(){return this.getRuleContext(0,AS)}get ruleIndex(){return cn.RULE_vacuumAnalyzeOptionName}accept(t){return t.visitVacuumAnalyzeOptionName?t.visitVacuumAnalyzeOptionName(this):t.visitChildren(this)}},OS=class extends ga{constructor(t,e){super(t,e)}booleanOrString(){return this.getRuleContext(0,vn)}numericOnly(){return this.getRuleContext(0,xE)}get ruleIndex(){return cn.RULE_vacuumAnalyzeOptionArgument}accept(t){return t.visitVacuumAnalyzeOptionArgument?t.visitVacuumAnalyzeOptionArgument(this):t.visitChildren(this)}},IS=class extends ga{constructor(t,e){super(t,e)}VERBOSE(){return this.getToken(cn.VERBOSE,0)}get ruleIndex(){return cn.RULE_optionalVerbose}accept(t){return t.visitOptionalVerbose?t.visitOptionalVerbose(this):t.visitChildren(this)}},uS=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}nameList(){return this.getRuleContext(0,Bu)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_optionalNameList}accept(t){return t.visitOptionalNameList?t.visitOptionalNameList(this):t.visitChildren(this)}},NS=class extends ga{constructor(t,e){super(t,e)}qualifiedName(){return this.getRuleContext(0,vu)}optionalNameList(){return this.getRuleContext(0,uS)}get ruleIndex(){return cn.RULE_vacuumRelation}accept(t){return t.visitVacuumRelation?t.visitVacuumRelation(this):t.visitChildren(this)}},LS=class extends ga{constructor(t,e){super(t,e)}vacuumRelation(t){return void 0===t?this.getRuleContexts(NS):this.getRuleContext(t,NS)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_optionalVacuumRelationList}accept(t){return t.visitOptionalVacuumRelationList?t.visitOptionalVacuumRelationList(this):t.visitChildren(this)}},CS=class extends ga{constructor(t,e){super(t,e)}EXPLAIN(){return this.getToken(cn.EXPLAIN,0)}explainableStatement(){return this.getRuleContext(0,_S)}analyzeKeyword(){return this.getRuleContext(0,AS)}optionalVerbose(){return this.getRuleContext(0,IS)}VERBOSE(){return this.getToken(cn.VERBOSE,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}explainOptionElement(t){return void 0===t?this.getRuleContexts(PS):this.getRuleContext(t,PS)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_explainStatement}accept(t){return t.visitExplainStatement?t.visitExplainStatement(this):t.visitChildren(this)}},_S=class extends ga{constructor(t,e){super(t,e)}selectStatement(){return this.getRuleContext(0,il)}insertStatement(){return this.getRuleContext(0,kS)}updateStatement(){return this.getRuleContext(0,zS)}deleteStatement(){return this.getRuleContext(0,XS)}declareCursorStatement(){return this.getRuleContext(0,sl)}createAsStatement(){return this.getRuleContext(0,LE)}createMaterializedViewStatement(){return this.getRuleContext(0,PE)}refreshMaterializedViewStatement(){return this.getRuleContext(0,dE)}executeStatement(){return this.getRuleContext(0,pS)}get ruleIndex(){return cn.RULE_explainableStatement}accept(t){return t.visitExplainableStatement?t.visitExplainableStatement(this):t.visitChildren(this)}},PS=class extends ga{constructor(t,e){super(t,e)}explainOptionName(){return this.getRuleContext(0,MS)}explainOptionArgument(){return this.getRuleContext(0,dS)}get ruleIndex(){return cn.RULE_explainOptionElement}accept(t){return t.visitExplainOptionElement?t.visitExplainOptionElement(this):t.visitChildren(this)}},MS=class extends ga{constructor(t,e){super(t,e)}nonReservedWord(){return this.getRuleContext(0,sN)}analyzeKeyword(){return this.getRuleContext(0,AS)}get ruleIndex(){return cn.RULE_explainOptionName}accept(t){return t.visitExplainOptionName?t.visitExplainOptionName(this):t.visitChildren(this)}},dS=class extends ga{constructor(t,e){super(t,e)}booleanOrString(){return this.getRuleContext(0,vn)}numericOnly(){return this.getRuleContext(0,xE)}get ruleIndex(){return cn.RULE_explainOptionArgument}accept(t){return t.visitExplainOptionArgument?t.visitExplainOptionArgument(this):t.visitChildren(this)}},US=class extends ga{constructor(t,e){super(t,e)}PREPARE(){return this.getToken(cn.PREPARE,0)}name(){return this.getRuleContext(0,yu)}prepareTypeClause(){return this.getRuleContext(0,mS)}AS(){return this.getToken(cn.AS,0)}preparableStatement(){return this.getRuleContext(0,DS)}get ruleIndex(){return cn.RULE_prepareStatement}accept(t){return t.visitPrepareStatement?t.visitPrepareStatement(this):t.visitChildren(this)}},mS=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}typeList(){return this.getRuleContext(0,zI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_prepareTypeClause}accept(t){return t.visitPrepareTypeClause?t.visitPrepareTypeClause(this):t.visitChildren(this)}},DS=class extends ga{constructor(t,e){super(t,e)}selectStatement(){return this.getRuleContext(0,il)}insertStatement(){return this.getRuleContext(0,kS)}updateStatement(){return this.getRuleContext(0,zS)}deleteStatement(){return this.getRuleContext(0,XS)}get ruleIndex(){return cn.RULE_preparableStatement}accept(t){return t.visitPreparableStatement?t.visitPreparableStatement(this):t.visitChildren(this)}},pS=class extends ga{constructor(t,e){super(t,e)}EXECUTE(){return this.getToken(cn.EXECUTE,0)}name(){return this.getRuleContext(0,yu)}executeParameterClause(){return this.getRuleContext(0,gS)}CREATE(){return this.getToken(cn.CREATE,0)}temporaryOption(){return this.getRuleContext(0,gh)}TABLE(){return this.getToken(cn.TABLE,0)}createAsTarget(){return this.getRuleContext(0,CE)}AS(){return this.getToken(cn.AS,0)}withData(){return this.getRuleContext(0,_E)}IF_P(){return this.getToken(cn.IF_P,0)}NOT(){return this.getToken(cn.NOT,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}get ruleIndex(){return cn.RULE_executeStatement}accept(t){return t.visitExecuteStatement?t.visitExecuteStatement(this):t.visitChildren(this)}},gS=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expressionList(){return this.getRuleContext(0,ZI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_executeParameterClause}accept(t){return t.visitExecuteParameterClause?t.visitExecuteParameterClause(this):t.visitChildren(this)}},xS=class extends ga{constructor(t,e){super(t,e)}DEALLOCATE(){return this.getToken(cn.DEALLOCATE,0)}name(){return this.getRuleContext(0,yu)}PREPARE(){return this.getToken(cn.PREPARE,0)}ALL(){return this.getToken(cn.ALL,0)}get ruleIndex(){return cn.RULE_deallocateStatement}accept(t){return t.visitDeallocateStatement?t.visitDeallocateStatement(this):t.visitChildren(this)}},kS=class extends ga{constructor(t,e){super(t,e)}INSERT(){return this.getToken(cn.INSERT,0)}INTO(){return this.getToken(cn.INTO,0)}insertTarget(){return this.getRuleContext(0,HS)}insertRest(){return this.getRuleContext(0,GS)}optionalOnConflict(){return this.getRuleContext(0,yS)}returningClause(){return this.getRuleContext(0,YS)}withClause(){return this.getRuleContext(0,Rl)}get ruleIndex(){return cn.RULE_insertStatement}accept(t){return t.visitInsertStatement?t.visitInsertStatement(this):t.visitChildren(this)}},HS=class extends ga{constructor(t,e){super(t,e)}qualifiedName(){return this.getRuleContext(0,vu)}AS(){return this.getToken(cn.AS,0)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_insertTarget}accept(t){return t.visitInsertTarget?t.visitInsertTarget(this):t.visitChildren(this)}},GS=class extends ga{constructor(t,e){super(t,e)}selectStatement(){return this.getRuleContext(0,il)}OVERRIDING(){return this.getToken(cn.OVERRIDING,0)}overrideKind(){return this.getRuleContext(0,FS)}VALUE_P(){return this.getToken(cn.VALUE_P,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}insertColumnList(){return this.getRuleContext(0,vS)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}VALUES(){return this.getToken(cn.VALUES,0)}get ruleIndex(){return cn.RULE_insertRest}accept(t){return t.visitInsertRest?t.visitInsertRest(this):t.visitChildren(this)}},FS=class extends ga{constructor(t,e){super(t,e)}USER(){return this.getToken(cn.USER,0)}SYSTEM_P(){return this.getToken(cn.SYSTEM_P,0)}get ruleIndex(){return cn.RULE_overrideKind}accept(t){return t.visitOverrideKind?t.visitOverrideKind(this):t.visitChildren(this)}},vS=class extends ga{constructor(t,e){super(t,e)}insertColumnItem(t){return void 0===t?this.getRuleContexts(BS):this.getRuleContext(t,BS)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_insertColumnList}accept(t){return t.visitInsertColumnList?t.visitInsertColumnList(this):t.visitChildren(this)}},BS=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}optionalIndirection(){return this.getRuleContext(0,Nu)}get ruleIndex(){return cn.RULE_insertColumnItem}accept(t){return t.visitInsertColumnItem?t.visitInsertColumnItem(this):t.visitChildren(this)}},yS=class extends ga{constructor(t,e){super(t,e)}ON(){return this.getToken(cn.ON,0)}CONFLICT(){return this.getToken(cn.CONFLICT,0)}optionalConflictExpr(){return this.getRuleContext(0,fS)}DO(){return this.getToken(cn.DO,0)}UPDATE(){return this.getToken(cn.UPDATE,0)}SET(){return this.getToken(cn.SET,0)}setClauseList(){return this.getRuleContext(0,$S)}whereClause(){return this.getRuleContext(0,EO)}NOTHING(){return this.getToken(cn.NOTHING,0)}get ruleIndex(){return cn.RULE_optionalOnConflict}accept(t){return t.visitOptionalOnConflict?t.visitOptionalOnConflict(this):t.visitChildren(this)}},fS=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}indexParameters(){return this.getRuleContext(0,cR)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}whereClause(){return this.getRuleContext(0,EO)}ON(){return this.getToken(cn.ON,0)}CONSTRAINT(){return this.getToken(cn.CONSTRAINT,0)}constraintName(){return this.getRuleContext(0,Hu)}get ruleIndex(){return cn.RULE_optionalConflictExpr}accept(t){return t.visitOptionalConflictExpr?t.visitOptionalConflictExpr(this):t.visitChildren(this)}},YS=class extends ga{constructor(t,e){super(t,e)}RETURNING(){return this.getToken(cn.RETURNING,0)}targetList(){return this.getRuleContext(0,Cu)}get ruleIndex(){return cn.RULE_returningClause}accept(t){return t.visitReturningClause?t.visitReturningClause(this):t.visitChildren(this)}},wS=class extends ga{constructor(t,e){super(t,e)}MERGE(){return this.getToken(cn.MERGE,0)}qualifiedName(t){return void 0===t?this.getRuleContexts(vu):this.getRuleContext(t,vu)}USING(){return this.getToken(cn.USING,0)}ON(){return this.getToken(cn.ON,0)}expression1(){return this.getRuleContext(0,wO)}selectWithParenthesis(){return this.getRuleContext(0,cl)}mergeInsertClause(){return this.getRuleContext(0,bS)}mergeUpdateClause(){return this.getRuleContext(0,WS)}INTO(){return this.getToken(cn.INTO,0)}aliasClause(t){return void 0===t?this.getRuleContexts(Jl):this.getRuleContext(t,Jl)}mergeDeleteClause(){return this.getRuleContext(0,VS)}get ruleIndex(){return cn.RULE_mergeStatement}accept(t){return t.visitMergeStatement?t.visitMergeStatement(this):t.visitChildren(this)}},bS=class extends ga{constructor(t,e){super(t,e)}WHEN(){return this.getToken(cn.WHEN,0)}NOT(){return this.getToken(cn.NOT,0)}MATCHED(){return this.getToken(cn.MATCHED,0)}INSERT(){return this.getToken(cn.INSERT,0)}valuesClause(){return this.getRuleContext(0,Wl)}AND(){return this.getToken(cn.AND,0)}expression1(){return this.getRuleContext(0,wO)}THEN(){return this.getToken(cn.THEN,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}insertColumnList(){return this.getRuleContext(0,vS)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_mergeInsertClause}accept(t){return t.visitMergeInsertClause?t.visitMergeInsertClause(this):t.visitChildren(this)}},WS=class extends ga{constructor(t,e){super(t,e)}WHEN(){return this.getToken(cn.WHEN,0)}MATCHED(){return this.getToken(cn.MATCHED,0)}UPDATE(){return this.getToken(cn.UPDATE,0)}SET(){return this.getToken(cn.SET,0)}setClauseList(){return this.getRuleContext(0,$S)}AND(){return this.getToken(cn.AND,0)}expression1(){return this.getRuleContext(0,wO)}THEN(){return this.getToken(cn.THEN,0)}get ruleIndex(){return cn.RULE_mergeUpdateClause}accept(t){return t.visitMergeUpdateClause?t.visitMergeUpdateClause(this):t.visitChildren(this)}},VS=class extends ga{constructor(t,e){super(t,e)}WHEN(){return this.getToken(cn.WHEN,0)}MATCHED(){return this.getToken(cn.MATCHED,0)}DELETE_P(){return this.getToken(cn.DELETE_P,0)}THEN(){return this.getToken(cn.THEN,0)}get ruleIndex(){return cn.RULE_mergeDeleteClause}accept(t){return t.visitMergeDeleteClause?t.visitMergeDeleteClause(this):t.visitChildren(this)}},XS=class extends ga{constructor(t,e){super(t,e)}DELETE_P(){return this.getToken(cn.DELETE_P,0)}FROM(){return this.getToken(cn.FROM,0)}relationExpressionOptionalAlias(){return this.getRuleContext(0,aO)}usingClause(){return this.getRuleContext(0,KS)}whereOrCurrentClause(){return this.getRuleContext(0,TO)}returningClause(){return this.getRuleContext(0,YS)}withClause(){return this.getRuleContext(0,Rl)}get ruleIndex(){return cn.RULE_deleteStatement}accept(t){return t.visitDeleteStatement?t.visitDeleteStatement(this):t.visitChildren(this)}},KS=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}fromList(){return this.getRuleContext(0,Xl)}get ruleIndex(){return cn.RULE_usingClause}accept(t){return t.visitUsingClause?t.visitUsingClause(this):t.visitChildren(this)}},QS=class extends ga{constructor(t,e){super(t,e)}LOCK_P(){return this.getToken(cn.LOCK_P,0)}optionalTable(){return this.getRuleContext(0,Il)}relationExpressionList(){return this.getRuleContext(0,sO)}optionalLock(){return this.getRuleContext(0,JS)}optionalNowait(){return this.getRuleContext(0,qS)}get ruleIndex(){return cn.RULE_lockStatement}accept(t){return t.visitLockStatement?t.visitLockStatement(this):t.visitChildren(this)}},JS=class extends ga{constructor(t,e){super(t,e)}IN_P(){return this.getToken(cn.IN_P,0)}lockType(){return this.getRuleContext(0,ZS)}MODE(){return this.getToken(cn.MODE,0)}get ruleIndex(){return cn.RULE_optionalLock}accept(t){return t.visitOptionalLock?t.visitOptionalLock(this):t.visitChildren(this)}},ZS=class extends ga{constructor(t,e){super(t,e)}ACCESS(){return this.getToken(cn.ACCESS,0)}SHARE(){return this.getToken(cn.SHARE,0)}EXCLUSIVE(){return this.getToken(cn.EXCLUSIVE,0)}ROW(){return this.getToken(cn.ROW,0)}UPDATE(){return this.getToken(cn.UPDATE,0)}get ruleIndex(){return cn.RULE_lockType}accept(t){return t.visitLockType?t.visitLockType(this):t.visitChildren(this)}},qS=class extends ga{constructor(t,e){super(t,e)}NOWAIT(){return this.getToken(cn.NOWAIT,0)}get ruleIndex(){return cn.RULE_optionalNowait}accept(t){return t.visitOptionalNowait?t.visitOptionalNowait(this):t.visitChildren(this)}},jS=class extends ga{constructor(t,e){super(t,e)}NOWAIT(){return this.getToken(cn.NOWAIT,0)}SKIP_P(){return this.getToken(cn.SKIP_P,0)}LOCKED(){return this.getToken(cn.LOCKED,0)}get ruleIndex(){return cn.RULE_optionalNowaitOrSkip}accept(t){return t.visitOptionalNowaitOrSkip?t.visitOptionalNowaitOrSkip(this):t.visitChildren(this)}},zS=class extends ga{constructor(t,e){super(t,e)}UPDATE(){return this.getToken(cn.UPDATE,0)}relationExpressionOptionalAlias(){return this.getRuleContext(0,aO)}SET(){return this.getToken(cn.SET,0)}setClauseList(){return this.getRuleContext(0,$S)}fromClause(){return this.getRuleContext(0,Vl)}whereOrCurrentClause(){return this.getRuleContext(0,TO)}returningClause(){return this.getRuleContext(0,YS)}withClause(){return this.getRuleContext(0,Rl)}get ruleIndex(){return cn.RULE_updateStatement}accept(t){return t.visitUpdateStatement?t.visitUpdateStatement(this):t.visitChildren(this)}},$S=class extends ga{constructor(t,e){super(t,e)}setClause(t){return void 0===t?this.getRuleContexts(tl):this.getRuleContext(t,tl)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_setClauseList}accept(t){return t.visitSetClauseList?t.visitSetClauseList(this):t.visitChildren(this)}},tl=class extends ga{constructor(t,e){super(t,e)}setTarget(t){return void 0===t?this.getRuleContexts(el):this.getRuleContext(t,el)}EQUAL(){return this.getToken(cn.EQUAL,0)}expression1(){return this.getRuleContext(0,wO)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_setClause}accept(t){return t.visitSetClause?t.visitSetClause(this):t.visitChildren(this)}},el=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}optionalIndirection(){return this.getRuleContext(0,Nu)}get ruleIndex(){return cn.RULE_setTarget}accept(t){return t.visitSetTarget?t.visitSetTarget(this):t.visitChildren(this)}},sl=class extends ga{constructor(t,e){super(t,e)}DECLARE(){return this.getToken(cn.DECLARE,0)}cursorName(){return this.getRuleContext(0,al)}CURSOR(){return this.getToken(cn.CURSOR,0)}optionalHold(){return this.getRuleContext(0,rl)}FOR(){return this.getToken(cn.FOR,0)}selectStatement(){return this.getRuleContext(0,il)}NO(t){return void 0===t?this.getTokens(cn.NO):this.getToken(cn.NO,t)}SCROLL(t){return void 0===t?this.getTokens(cn.SCROLL):this.getToken(cn.SCROLL,t)}BINARY(t){return void 0===t?this.getTokens(cn.BINARY):this.getToken(cn.BINARY,t)}INSENSITIVE(t){return void 0===t?this.getTokens(cn.INSENSITIVE):this.getToken(cn.INSENSITIVE,t)}get ruleIndex(){return cn.RULE_declareCursorStatement}accept(t){return t.visitDeclareCursorStatement?t.visitDeclareCursorStatement(this):t.visitChildren(this)}},al=class extends ga{constructor(t,e){super(t,e)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_cursorName}accept(t){return t.visitCursorName?t.visitCursorName(this):t.visitChildren(this)}},rl=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}HOLD(){return this.getToken(cn.HOLD,0)}WITHOUT(){return this.getToken(cn.WITHOUT,0)}get ruleIndex(){return cn.RULE_optionalHold}accept(t){return t.visitOptionalHold?t.visitOptionalHold(this):t.visitChildren(this)}},il=class extends ga{constructor(t,e){super(t,e)}selectWithoutParenthesis(){return this.getRuleContext(0,nl)}selectWithParenthesis(){return this.getRuleContext(0,cl)}get ruleIndex(){return cn.RULE_selectStatement}accept(t){return t.visitSelectStatement?t.visitSelectStatement(this):t.visitChildren(this)}},cl=class t extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}selectWithoutParenthesis(){return this.getRuleContext(0,nl)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}selectWithParenthesis(){return this.getRuleContext(0,t)}get ruleIndex(){return cn.RULE_selectWithParenthesis}accept(t){return t.visitSelectWithParenthesis?t.visitSelectWithParenthesis(this):t.visitChildren(this)}},nl=class extends ga{constructor(t,e){super(t,e)}selectClause(){return this.getRuleContext(0,hl)}optionalSortClause(){return this.getRuleContext(0,Cl)}forLockingClause(){return this.getRuleContext(0,fl)}optionalSelectLimit(){return this.getRuleContext(0,Ul)}selectLimit(){return this.getRuleContext(0,dl)}withClause(){return this.getRuleContext(0,Rl)}get ruleIndex(){return cn.RULE_selectWithoutParenthesis}accept(t){return t.visitSelectWithoutParenthesis?t.visitSelectWithoutParenthesis(this):t.visitChildren(this)}},hl=class extends ga{constructor(t,e){super(t,e)}simpleSelectIntersect(t){return void 0===t?this.getRuleContexts(El):this.getRuleContext(t,El)}allOrDistinct(t){return void 0===t?this.getRuleContexts(ul):this.getRuleContext(t,ul)}UNION(t){return void 0===t?this.getTokens(cn.UNION):this.getToken(cn.UNION,t)}EXCEPT(t){return void 0===t?this.getTokens(cn.EXCEPT):this.getToken(cn.EXCEPT,t)}get ruleIndex(){return cn.RULE_selectClause}accept(t){return t.visitSelectClause?t.visitSelectClause(this):t.visitChildren(this)}},El=class extends ga{constructor(t,e){super(t,e)}simpleSelectPramary(t){return void 0===t?this.getRuleContexts(ol):this.getRuleContext(t,ol)}INTERSECT(t){return void 0===t?this.getTokens(cn.INTERSECT):this.getToken(cn.INTERSECT,t)}allOrDistinct(t){return void 0===t?this.getRuleContexts(ul):this.getRuleContext(t,ul)}get ruleIndex(){return cn.RULE_simpleSelectIntersect}accept(t){return t.visitSimpleSelectIntersect?t.visitSimpleSelectIntersect(this):t.visitChildren(this)}},Tl=class extends ga{constructor(t,e){super(t,e)}targetList(){return this.getRuleContext(0,Cu)}intoClause(){return this.getRuleContext(0,ll)}allClause(){return this.getRuleContext(0,Ll)}optionalTargetList(){return this.getRuleContext(0,Lu)}distinctClause(){return this.getRuleContext(0,Nl)}get ruleIndex(){return cn.RULE_simpleSelectStart}accept(t){return t.visitSimpleSelectStart?t.visitSimpleSelectStart(this):t.visitChildren(this)}},ol=class extends ga{constructor(t,e){super(t,e)}SELECT(){return this.getToken(cn.SELECT,0)}simpleSelectStart(){return this.getRuleContext(0,Tl)}fromClause(){return this.getRuleContext(0,Vl)}whereClause(){return this.getRuleContext(0,EO)}groupClause(){return this.getRuleContext(0,Fl)}havingClause(){return this.getRuleContext(0,yl)}windowClause(){return this.getRuleContext(0,pI)}valuesClause(){return this.getRuleContext(0,Wl)}TABLE(){return this.getToken(cn.TABLE,0)}relationExpression(){return this.getRuleContext(0,eO)}selectWithParenthesis(){return this.getRuleContext(0,cl)}get ruleIndex(){return cn.RULE_simpleSelectPramary}accept(t){return t.visitSimpleSelectPramary?t.visitSimpleSelectPramary(this):t.visitChildren(this)}},Rl=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}commonTableExpression(t){return void 0===t?this.getRuleContexts(Al):this.getRuleContext(t,Al)}RECURSIVE(){return this.getToken(cn.RECURSIVE,0)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_withClause}accept(t){return t.visitWithClause?t.visitWithClause(this):t.visitChildren(this)}},Al=class extends ga{constructor(t,e){super(t,e)}name(){return this.getRuleContext(0,yu)}optionalNameList(){return this.getRuleContext(0,uS)}AS(){return this.getToken(cn.AS,0)}optionalMaterialized(){return this.getRuleContext(0,Sl)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}preparableStatement(){return this.getRuleContext(0,DS)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_commonTableExpression}accept(t){return t.visitCommonTableExpression?t.visitCommonTableExpression(this):t.visitChildren(this)}},Sl=class extends ga{constructor(t,e){super(t,e)}MATERIALIZED(){return this.getToken(cn.MATERIALIZED,0)}NOT(){return this.getToken(cn.NOT,0)}get ruleIndex(){return cn.RULE_optionalMaterialized}accept(t){return t.visitOptionalMaterialized?t.visitOptionalMaterialized(this):t.visitChildren(this)}},ll=class extends ga{constructor(t,e){super(t,e)}INTO(){return this.getToken(cn.INTO,0)}optionalTemporaryTableName(){return this.getRuleContext(0,Ol)}intoTarget(){return this.getRuleContext(0,BL)}STRICT_P(){return this.getToken(cn.STRICT_P,0)}get ruleIndex(){return cn.RULE_intoClause}accept(t){return t.visitIntoClause?t.visitIntoClause(this):t.visitChildren(this)}},Ol=class extends ga{constructor(t,e){super(t,e)}optionalTable(){return this.getRuleContext(0,Il)}qualifiedName(){return this.getRuleContext(0,vu)}TEMPORARY(){return this.getToken(cn.TEMPORARY,0)}TEMP(){return this.getToken(cn.TEMP,0)}LOCAL(){return this.getToken(cn.LOCAL,0)}GLOBAL(){return this.getToken(cn.GLOBAL,0)}UNLOGGED(){return this.getToken(cn.UNLOGGED,0)}TABLE(){return this.getToken(cn.TABLE,0)}get ruleIndex(){return cn.RULE_optionalTemporaryTableName}accept(t){return t.visitOptionalTemporaryTableName?t.visitOptionalTemporaryTableName(this):t.visitChildren(this)}},Il=class extends ga{constructor(t,e){super(t,e)}TABLE(){return this.getToken(cn.TABLE,0)}get ruleIndex(){return cn.RULE_optionalTable}accept(t){return t.visitOptionalTable?t.visitOptionalTable(this):t.visitChildren(this)}},ul=class extends ga{constructor(t,e){super(t,e)}ALL(){return this.getToken(cn.ALL,0)}DISTINCT(){return this.getToken(cn.DISTINCT,0)}get ruleIndex(){return cn.RULE_allOrDistinct}accept(t){return t.visitAllOrDistinct?t.visitAllOrDistinct(this):t.visitChildren(this)}},Nl=class extends ga{constructor(t,e){super(t,e)}DISTINCT(){return this.getToken(cn.DISTINCT,0)}ON(){return this.getToken(cn.ON,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expressionList(){return this.getRuleContext(0,ZI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_distinctClause}accept(t){return t.visitDistinctClause?t.visitDistinctClause(this):t.visitChildren(this)}},Ll=class extends ga{constructor(t,e){super(t,e)}ALL(){return this.getToken(cn.ALL,0)}get ruleIndex(){return cn.RULE_allClause}accept(t){return t.visitAllClause?t.visitAllClause(this):t.visitChildren(this)}},Cl=class extends ga{constructor(t,e){super(t,e)}sortClause(){return this.getRuleContext(0,_l)}get ruleIndex(){return cn.RULE_optionalSortClause}accept(t){return t.visitOptionalSortClause?t.visitOptionalSortClause(this):t.visitChildren(this)}},_l=class extends ga{constructor(t,e){super(t,e)}ORDER(){return this.getToken(cn.ORDER,0)}BY(){return this.getToken(cn.BY,0)}sortByList(){return this.getRuleContext(0,Pl)}get ruleIndex(){return cn.RULE_sortClause}accept(t){return t.visitSortClause?t.visitSortClause(this):t.visitChildren(this)}},Pl=class extends ga{constructor(t,e){super(t,e)}sortBy(t){return void 0===t?this.getRuleContexts(Ml):this.getRuleContext(t,Ml)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_sortByList}accept(t){return t.visitSortByList?t.visitSortByList(this):t.visitChildren(this)}},Ml=class extends ga{constructor(t,e){super(t,e)}expression1(){return this.getRuleContext(0,wO)}optionalNullsOrder(){return this.getRuleContext(0,AR)}USING(){return this.getToken(cn.USING,0)}allOperatorQualifier(){return this.getRuleContext(0,QI)}optionalAscOrDesc(){return this.getRuleContext(0,RR)}get ruleIndex(){return cn.RULE_sortBy}accept(t){return t.visitSortBy?t.visitSortBy(this):t.visitChildren(this)}},dl=class extends ga{constructor(t,e){super(t,e)}limitClause(){return this.getRuleContext(0,ml)}offsetClause(){return this.getRuleContext(0,Dl)}get ruleIndex(){return cn.RULE_selectLimit}accept(t){return t.visitSelectLimit?t.visitSelectLimit(this):t.visitChildren(this)}},Ul=class extends ga{constructor(t,e){super(t,e)}selectLimit(){return this.getRuleContext(0,dl)}get ruleIndex(){return cn.RULE_optionalSelectLimit}accept(t){return t.visitOptionalSelectLimit?t.visitOptionalSelectLimit(this):t.visitChildren(this)}},ml=class extends ga{constructor(t,e){super(t,e)}LIMIT(){return this.getToken(cn.LIMIT,0)}selectLimitValue(){return this.getRuleContext(0,pl)}COMMA(){return this.getToken(cn.COMMA,0)}selectOffsetValue(){return this.getRuleContext(0,gl)}FETCH(){return this.getToken(cn.FETCH,0)}firstOrNext(){return this.getRuleContext(0,Gl)}selectFetchFirstValue(){return this.getRuleContext(0,xl)}rowOrRows(){return this.getRuleContext(0,Hl)}ONLY(){return this.getToken(cn.ONLY,0)}WITH(){return this.getToken(cn.WITH,0)}TIES(){return this.getToken(cn.TIES,0)}get ruleIndex(){return cn.RULE_limitClause}accept(t){return t.visitLimitClause?t.visitLimitClause(this):t.visitChildren(this)}},Dl=class extends ga{constructor(t,e){super(t,e)}OFFSET(){return this.getToken(cn.OFFSET,0)}selectOffsetValue(){return this.getRuleContext(0,gl)}selectFetchFirstValue(){return this.getRuleContext(0,xl)}rowOrRows(){return this.getRuleContext(0,Hl)}get ruleIndex(){return cn.RULE_offsetClause}accept(t){return t.visitOffsetClause?t.visitOffsetClause(this):t.visitChildren(this)}},pl=class extends ga{constructor(t,e){super(t,e)}expression1(){return this.getRuleContext(0,wO)}ALL(){return this.getToken(cn.ALL,0)}get ruleIndex(){return cn.RULE_selectLimitValue}accept(t){return t.visitSelectLimitValue?t.visitSelectLimitValue(this):t.visitChildren(this)}},gl=class extends ga{constructor(t,e){super(t,e)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_selectOffsetValue}accept(t){return t.visitSelectOffsetValue?t.visitSelectOffsetValue(this):t.visitChildren(this)}},xl=class extends ga{constructor(t,e){super(t,e)}expression3(){return this.getRuleContext(0,EI)}PLUS(){return this.getToken(cn.PLUS,0)}anyConst(){return this.getRuleContext(0,kl)}MINUS(){return this.getToken(cn.MINUS,0)}get ruleIndex(){return cn.RULE_selectFetchFirstValue}accept(t){return t.visitSelectFetchFirstValue?t.visitSelectFetchFirstValue(this):t.visitChildren(this)}},kl=class extends ga{constructor(t,e){super(t,e)}iconst(){return this.getRuleContext(0,Ku)}fconst(){return this.getRuleContext(0,Xu)}get ruleIndex(){return cn.RULE_anyConst}accept(t){return t.visitAnyConst?t.visitAnyConst(this):t.visitChildren(this)}},Hl=class extends ga{constructor(t,e){super(t,e)}ROW(){return this.getToken(cn.ROW,0)}ROWS(){return this.getToken(cn.ROWS,0)}get ruleIndex(){return cn.RULE_rowOrRows}accept(t){return t.visitRowOrRows?t.visitRowOrRows(this):t.visitChildren(this)}},Gl=class extends ga{constructor(t,e){super(t,e)}FIRST_P(){return this.getToken(cn.FIRST_P,0)}NEXT(){return this.getToken(cn.NEXT,0)}get ruleIndex(){return cn.RULE_firstOrNext}accept(t){return t.visitFirstOrNext?t.visitFirstOrNext(this):t.visitChildren(this)}},Fl=class extends ga{constructor(t,e){super(t,e)}GROUP_P(){return this.getToken(cn.GROUP_P,0)}BY(){return this.getToken(cn.BY,0)}groupByList(){return this.getRuleContext(0,vl)}get ruleIndex(){return cn.RULE_groupClause}accept(t){return t.visitGroupClause?t.visitGroupClause(this):t.visitChildren(this)}},vl=class extends ga{constructor(t,e){super(t,e)}groupByItem(t){return void 0===t?this.getRuleContexts(Bl):this.getRuleContext(t,Bl)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_groupByList}accept(t){return t.visitGroupByList?t.visitGroupByList(this):t.visitChildren(this)}},Bl=class extends ga{constructor(t,e){super(t,e)}expression1(){return this.getRuleContext(0,wO)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}CUBE(){return this.getToken(cn.CUBE,0)}expressionList(){return this.getRuleContext(0,ZI)}ROLLUP(){return this.getToken(cn.ROLLUP,0)}GROUPING(){return this.getToken(cn.GROUPING,0)}SETS(){return this.getToken(cn.SETS,0)}groupByList(){return this.getRuleContext(0,vl)}get ruleIndex(){return cn.RULE_groupByItem}accept(t){return t.visitGroupByItem?t.visitGroupByItem(this):t.visitChildren(this)}},yl=class extends ga{constructor(t,e){super(t,e)}HAVING(){return this.getToken(cn.HAVING,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_havingClause}accept(t){return t.visitHavingClause?t.visitHavingClause(this):t.visitChildren(this)}},fl=class extends ga{constructor(t,e){super(t,e)}forLockingItem(t){return void 0===t?this.getRuleContexts(Yl):this.getRuleContext(t,Yl)}FOR(){return this.getToken(cn.FOR,0)}READ(){return this.getToken(cn.READ,0)}ONLY(){return this.getToken(cn.ONLY,0)}get ruleIndex(){return cn.RULE_forLockingClause}accept(t){return t.visitForLockingClause?t.visitForLockingClause(this):t.visitChildren(this)}},Yl=class extends ga{constructor(t,e){super(t,e)}forLockingStrength(){return this.getRuleContext(0,wl)}lockedRelationsList(){return this.getRuleContext(0,bl)}optionalNowaitOrSkip(){return this.getRuleContext(0,jS)}get ruleIndex(){return cn.RULE_forLockingItem}accept(t){return t.visitForLockingItem?t.visitForLockingItem(this):t.visitChildren(this)}},wl=class extends ga{constructor(t,e){super(t,e)}FOR(){return this.getToken(cn.FOR,0)}UPDATE(){return this.getToken(cn.UPDATE,0)}SHARE(){return this.getToken(cn.SHARE,0)}NO(){return this.getToken(cn.NO,0)}KEY(){return this.getToken(cn.KEY,0)}get ruleIndex(){return cn.RULE_forLockingStrength}accept(t){return t.visitForLockingStrength?t.visitForLockingStrength(this):t.visitChildren(this)}},bl=class extends ga{constructor(t,e){super(t,e)}OF(){return this.getToken(cn.OF,0)}qualifiedNameList(){return this.getRuleContext(0,du)}get ruleIndex(){return cn.RULE_lockedRelationsList}accept(t){return t.visitLockedRelationsList?t.visitLockedRelationsList(this):t.visitChildren(this)}},Wl=class extends ga{constructor(t,e){super(t,e)}VALUES(){return this.getToken(cn.VALUES,0)}OPEN_PAREN(t){return void 0===t?this.getTokens(cn.OPEN_PAREN):this.getToken(cn.OPEN_PAREN,t)}expressionList(t){return void 0===t?this.getRuleContexts(ZI):this.getRuleContext(t,ZI)}CLOSE_PAREN(t){return void 0===t?this.getTokens(cn.CLOSE_PAREN):this.getToken(cn.CLOSE_PAREN,t)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_valuesClause}accept(t){return t.visitValuesClause?t.visitValuesClause(this):t.visitChildren(this)}},Vl=class extends ga{constructor(t,e){super(t,e)}FROM(){return this.getToken(cn.FROM,0)}fromList(){return this.getRuleContext(0,Xl)}get ruleIndex(){return cn.RULE_fromClause}accept(t){return t.visitFromClause?t.visitFromClause(this):t.visitChildren(this)}},Xl=class extends ga{constructor(t,e){super(t,e)}nonAnsiJoin(){return this.getRuleContext(0,Kl)}tableReference(t){return void 0===t?this.getRuleContexts(Ql):this.getRuleContext(t,Ql)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_fromList}accept(t){return t.visitFromList?t.visitFromList(this):t.visitChildren(this)}},Kl=class extends ga{constructor(t,e){super(t,e)}tableReference(t){return void 0===t?this.getRuleContexts(Ql):this.getRuleContext(t,Ql)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_nonAnsiJoin}accept(t){return t.visitNonAnsiJoin?t.visitNonAnsiJoin(this):t.visitChildren(this)}},Ql=class t extends ga{constructor(t,e){super(t,e)}relationExpression(){return this.getRuleContext(0,eO)}optionalAliasClause(){return this.getRuleContext(0,Zl)}functionTable(){return this.getRuleContext(0,iO)}functionAliasClause(){return this.getRuleContext(0,jl)}xmlTable(){return this.getRuleContext(0,SO)}selectWithParenthesis(){return this.getRuleContext(0,cl)}LATERAL_P(){return this.getToken(cn.LATERAL_P,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}tableReference(e){return void 0===e?this.getRuleContexts(t):this.getRuleContext(e,t)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}CROSS(t){return void 0===t?this.getTokens(cn.CROSS):this.getToken(cn.CROSS,t)}JOIN(t){return void 0===t?this.getTokens(cn.JOIN):this.getToken(cn.JOIN,t)}NATURAL(t){return void 0===t?this.getTokens(cn.NATURAL):this.getToken(cn.NATURAL,t)}joinQualifier(t){return void 0===t?this.getRuleContexts($l):this.getRuleContext(t,$l)}tableSampleClause(){return this.getRuleContext(0,rO)}joinType(t){return void 0===t?this.getRuleContexts(zl):this.getRuleContext(t,zl)}get ruleIndex(){return cn.RULE_tableReference}accept(t){return t.visitTableReference?t.visitTableReference(this):t.visitChildren(this)}},Jl=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}AS(){return this.getToken(cn.AS,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}nameList(){return this.getRuleContext(0,Bu)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_aliasClause}accept(t){return t.visitAliasClause?t.visitAliasClause(this):t.visitChildren(this)}},Zl=class extends ga{constructor(t,e){super(t,e)}tableAliasClause(){return this.getRuleContext(0,ql)}get ruleIndex(){return cn.RULE_optionalAliasClause}accept(t){return t.visitOptionalAliasClause?t.visitOptionalAliasClause(this):t.visitChildren(this)}},ql=class extends ga{constructor(t,e){super(t,e)}tableAlias(){return this.getRuleContext(0,tN)}AS(){return this.getToken(cn.AS,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}nameList(){return this.getRuleContext(0,Bu)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_tableAliasClause}accept(t){return t.visitTableAliasClause?t.visitTableAliasClause(this):t.visitChildren(this)}},jl=class extends ga{constructor(t,e){super(t,e)}aliasClause(){return this.getRuleContext(0,Jl)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}tableFunctionElementList(){return this.getRuleContext(0,RO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}AS(){return this.getToken(cn.AS,0)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_functionAliasClause}accept(t){return t.visitFunctionAliasClause?t.visitFunctionAliasClause(this):t.visitChildren(this)}},zl=class extends ga{constructor(t,e){super(t,e)}FULL(){return this.getToken(cn.FULL,0)}LEFT(){return this.getToken(cn.LEFT,0)}RIGHT(){return this.getToken(cn.RIGHT,0)}INNER_P(){return this.getToken(cn.INNER_P,0)}OUTER_P(){return this.getToken(cn.OUTER_P,0)}get ruleIndex(){return cn.RULE_joinType}accept(t){return t.visitJoinType?t.visitJoinType(this):t.visitChildren(this)}},$l=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}nameList(){return this.getRuleContext(0,Bu)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}ON(){return this.getToken(cn.ON,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_joinQualifier}accept(t){return t.visitJoinQualifier?t.visitJoinQualifier(this):t.visitChildren(this)}},tO=class extends ga{constructor(t,e){super(t,e)}qualifiedName(){return this.getRuleContext(0,vu)}get ruleIndex(){return cn.RULE_viewName}accept(t){return t.visitViewName?t.visitViewName(this):t.visitChildren(this)}},eO=class extends ga{constructor(t,e){super(t,e)}qualifiedName(){return this.getRuleContext(0,vu)}STAR(){return this.getToken(cn.STAR,0)}ONLY(){return this.getToken(cn.ONLY,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_relationExpression}accept(t){return t.visitRelationExpression?t.visitRelationExpression(this):t.visitChildren(this)}},sO=class extends ga{constructor(t,e){super(t,e)}relationExpression(t){return void 0===t?this.getRuleContexts(eO):this.getRuleContext(t,eO)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_relationExpressionList}accept(t){return t.visitRelationExpressionList?t.visitRelationExpressionList(this):t.visitChildren(this)}},aO=class extends ga{constructor(t,e){super(t,e)}relationExpression(){return this.getRuleContext(0,eO)}columnId(){return this.getRuleContext(0,$u)}AS(){return this.getToken(cn.AS,0)}get ruleIndex(){return cn.RULE_relationExpressionOptionalAlias}accept(t){return t.visitRelationExpressionOptionalAlias?t.visitRelationExpressionOptionalAlias(this):t.visitChildren(this)}},rO=class extends ga{constructor(t,e){super(t,e)}TABLESAMPLE(){return this.getToken(cn.TABLESAMPLE,0)}functionName(){return this.getRuleContext(0,wu)}OPEN_PAREN(t){return void 0===t?this.getTokens(cn.OPEN_PAREN):this.getToken(cn.OPEN_PAREN,t)}expressionList(){return this.getRuleContext(0,ZI)}CLOSE_PAREN(t){return void 0===t?this.getTokens(cn.CLOSE_PAREN):this.getToken(cn.CLOSE_PAREN,t)}REPEATABLE(){return this.getToken(cn.REPEATABLE,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_tableSampleClause}accept(t){return t.visitTableSampleClause?t.visitTableSampleClause(this):t.visitChildren(this)}},iO=class extends ga{constructor(t,e){super(t,e)}functionExpressionWindowless(){return this.getRuleContext(0,OI)}optionalOrdinality(){return this.getRuleContext(0,hO)}ROWS(){return this.getToken(cn.ROWS,0)}FROM(){return this.getToken(cn.FROM,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}rowsFromItem(t){return void 0===t?this.getRuleContexts(cO):this.getRuleContext(t,cO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_functionTable}accept(t){return t.visitFunctionTable?t.visitFunctionTable(this):t.visitChildren(this)}},cO=class extends ga{constructor(t,e){super(t,e)}functionExpressionWindowless(){return this.getRuleContext(0,OI)}optionalColumnDefinitionList(){return this.getRuleContext(0,nO)}get ruleIndex(){return cn.RULE_rowsFromItem}accept(t){return t.visitRowsFromItem?t.visitRowsFromItem(this):t.visitChildren(this)}},nO=class extends ga{constructor(t,e){super(t,e)}AS(){return this.getToken(cn.AS,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}tableFunctionElementList(){return this.getRuleContext(0,RO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_optionalColumnDefinitionList}accept(t){return t.visitOptionalColumnDefinitionList?t.visitOptionalColumnDefinitionList(this):t.visitChildren(this)}},hO=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}ORDINALITY(){return this.getToken(cn.ORDINALITY,0)}get ruleIndex(){return cn.RULE_optionalOrdinality}accept(t){return t.visitOptionalOrdinality?t.visitOptionalOrdinality(this):t.visitChildren(this)}},EO=class extends ga{constructor(t,e){super(t,e)}WHERE(){return this.getToken(cn.WHERE,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_whereClause}accept(t){return t.visitWhereClause?t.visitWhereClause(this):t.visitChildren(this)}},TO=class extends ga{constructor(t,e){super(t,e)}WHERE(){return this.getToken(cn.WHERE,0)}CURRENT_P(){return this.getToken(cn.CURRENT_P,0)}OF(){return this.getToken(cn.OF,0)}cursorName(){return this.getRuleContext(0,al)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_whereOrCurrentClause}accept(t){return t.visitWhereOrCurrentClause?t.visitWhereOrCurrentClause(this):t.visitChildren(this)}},oO=class extends ga{constructor(t,e){super(t,e)}tableFunctionElementList(){return this.getRuleContext(0,RO)}get ruleIndex(){return cn.RULE_optionalTableFunctionElementList}accept(t){return t.visitOptionalTableFunctionElementList?t.visitOptionalTableFunctionElementList(this):t.visitChildren(this)}},RO=class extends ga{constructor(t,e){super(t,e)}tableFunctionElement(t){return void 0===t?this.getRuleContexts(AO):this.getRuleContext(t,AO)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_tableFunctionElementList}accept(t){return t.visitTableFunctionElementList?t.visitTableFunctionElementList(this):t.visitChildren(this)}},AO=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}typeName(){return this.getRuleContext(0,LO)}optionalCollateClause(){return this.getRuleContext(0,rh)}get ruleIndex(){return cn.RULE_tableFunctionElement}accept(t){return t.visitTableFunctionElement?t.visitTableFunctionElement(this):t.visitChildren(this)}},SO=class extends ga{constructor(t,e){super(t,e)}XMLTABLE(){return this.getToken(cn.XMLTABLE,0)}OPEN_PAREN(t){return void 0===t?this.getTokens(cn.OPEN_PAREN):this.getToken(cn.OPEN_PAREN,t)}CLOSE_PAREN(t){return void 0===t?this.getTokens(cn.CLOSE_PAREN):this.getToken(cn.CLOSE_PAREN,t)}expression3(){return this.getRuleContext(0,EI)}xmlExistsArgument(){return this.getRuleContext(0,dI)}COLUMNS(){return this.getToken(cn.COLUMNS,0)}xmlTableColumnElement(t){return void 0===t?this.getRuleContexts(lO):this.getRuleContext(t,lO)}XMLNAMESPACES(){return this.getToken(cn.XMLNAMESPACES,0)}xmlNamespaceList(){return this.getRuleContext(0,uO)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_xmlTable}accept(t){return t.visitXmlTable?t.visitXmlTable(this):t.visitChildren(this)}},lO=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}typeName(){return this.getRuleContext(0,LO)}FOR(){return this.getToken(cn.FOR,0)}ORDINALITY(){return this.getToken(cn.ORDINALITY,0)}xmlTableColumnOptionList(){return this.getRuleContext(0,OO)}get ruleIndex(){return cn.RULE_xmlTableColumnElement}accept(t){return t.visitXmlTableColumnElement?t.visitXmlTableColumnElement(this):t.visitChildren(this)}},OO=class extends ga{constructor(t,e){super(t,e)}xmlTableColumnOptionElement(t){return void 0===t?this.getRuleContexts(IO):this.getRuleContext(t,IO)}get ruleIndex(){return cn.RULE_xmlTableColumnOptionList}accept(t){return t.visitXmlTableColumnOptionList?t.visitXmlTableColumnOptionList(this):t.visitChildren(this)}},IO=class extends ga{constructor(t,e){super(t,e)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}expression1(){return this.getRuleContext(0,wO)}identifier(){return this.getRuleContext(0,rN)}NOT(){return this.getToken(cn.NOT,0)}NULL_P(){return this.getToken(cn.NULL_P,0)}get ruleIndex(){return cn.RULE_xmlTableColumnOptionElement}accept(t){return t.visitXmlTableColumnOptionElement?t.visitXmlTableColumnOptionElement(this):t.visitChildren(this)}},uO=class extends ga{constructor(t,e){super(t,e)}xmlNamespaceElement(t){return void 0===t?this.getRuleContexts(NO):this.getRuleContext(t,NO)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_xmlNamespaceList}accept(t){return t.visitXmlNamespaceList?t.visitXmlNamespaceList(this):t.visitChildren(this)}},NO=class extends ga{constructor(t,e){super(t,e)}expression2(){return this.getRuleContext(0,hI)}AS(){return this.getToken(cn.AS,0)}columnLabel(){return this.getRuleContext(0,aN)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}get ruleIndex(){return cn.RULE_xmlNamespaceElement}accept(t){return t.visitXmlNamespaceElement?t.visitXmlNamespaceElement(this):t.visitChildren(this)}},LO=class extends ga{constructor(t,e){super(t,e)}simpleTypeName(){return this.getRuleContext(0,CO)}ARRAY(){return this.getToken(cn.ARRAY,0)}SETOF(){return this.getToken(cn.SETOF,0)}OPEN_BRACKET(t){return void 0===t?this.getTokens(cn.OPEN_BRACKET):this.getToken(cn.OPEN_BRACKET,t)}CLOSE_BRACKET(t){return void 0===t?this.getTokens(cn.CLOSE_BRACKET):this.getToken(cn.CLOSE_BRACKET,t)}iconst(t){return void 0===t?this.getRuleContexts(Ku):this.getRuleContext(t,Ku)}qualifiedName(){return this.getRuleContext(0,vu)}PERCENT(){return this.getToken(cn.PERCENT,0)}ROWTYPE(){return this.getToken(cn.ROWTYPE,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}get ruleIndex(){return cn.RULE_typeName}accept(t){return t.visitTypeName?t.visitTypeName(this):t.visitChildren(this)}},CO=class extends ga{constructor(t,e){super(t,e)}genericType(){return this.getRuleContext(0,PO)}numeric(){return this.getRuleContext(0,dO)}bit(){return this.getRuleContext(0,mO)}character(){return this.getRuleContext(0,xO)}constDateTime(){return this.getRuleContext(0,FO)}constInterval(){return this.getRuleContext(0,vO)}optionalInterval(){return this.getRuleContext(0,yO)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}iconst(){return this.getRuleContext(0,Ku)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_simpleTypeName}accept(t){return t.visitSimpleTypeName?t.visitSimpleTypeName(this):t.visitChildren(this)}},_O=class extends ga{constructor(t,e){super(t,e)}numeric(){return this.getRuleContext(0,dO)}constBit(){return this.getRuleContext(0,DO)}constCharacter(){return this.getRuleContext(0,kO)}constDateTime(){return this.getRuleContext(0,FO)}get ruleIndex(){return cn.RULE_constTypeName}accept(t){return t.visitConstTypeName?t.visitConstTypeName(this):t.visitChildren(this)}},PO=class extends ga{constructor(t,e){super(t,e)}optionalTypeModifiers(){return this.getRuleContext(0,MO)}builtinFunctionName(){return this.getRuleContext(0,TN)}typeFunctionName(){return this.getRuleContext(0,eN)}LEFT(){return this.getToken(cn.LEFT,0)}RIGHT(){return this.getToken(cn.RIGHT,0)}attributes(){return this.getRuleContext(0,Do)}get ruleIndex(){return cn.RULE_genericType}accept(t){return t.visitGenericType?t.visitGenericType(this):t.visitChildren(this)}},MO=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expressionList(){return this.getRuleContext(0,ZI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_optionalTypeModifiers}accept(t){return t.visitOptionalTypeModifiers?t.visitOptionalTypeModifiers(this):t.visitChildren(this)}},dO=class extends ga{constructor(t,e){super(t,e)}INT_P(){return this.getToken(cn.INT_P,0)}INTEGER(){return this.getToken(cn.INTEGER,0)}SMALLINT(){return this.getToken(cn.SMALLINT,0)}BIGINT(){return this.getToken(cn.BIGINT,0)}REAL(){return this.getToken(cn.REAL,0)}FLOAT_P(){return this.getToken(cn.FLOAT_P,0)}optionalFloat(){return this.getRuleContext(0,UO)}DOUBLE_P(){return this.getToken(cn.DOUBLE_P,0)}PRECISION(){return this.getToken(cn.PRECISION,0)}DECIMAL_P(){return this.getToken(cn.DECIMAL_P,0)}optionalTypeModifiers(){return this.getRuleContext(0,MO)}DEC(){return this.getToken(cn.DEC,0)}NUMERIC(){return this.getToken(cn.NUMERIC,0)}BOOLEAN_P(){return this.getToken(cn.BOOLEAN_P,0)}get ruleIndex(){return cn.RULE_numeric}accept(t){return t.visitNumeric?t.visitNumeric(this):t.visitChildren(this)}},UO=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}iconst(){return this.getRuleContext(0,Ku)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_optionalFloat}accept(t){return t.visitOptionalFloat?t.visitOptionalFloat(this):t.visitChildren(this)}},mO=class extends ga{constructor(t,e){super(t,e)}bitWithLength(){return this.getRuleContext(0,pO)}bitWithoutLength(){return this.getRuleContext(0,gO)}get ruleIndex(){return cn.RULE_bit}accept(t){return t.visitBit?t.visitBit(this):t.visitChildren(this)}},DO=class extends ga{constructor(t,e){super(t,e)}bitWithLength(){return this.getRuleContext(0,pO)}bitWithoutLength(){return this.getRuleContext(0,gO)}get ruleIndex(){return cn.RULE_constBit}accept(t){return t.visitConstBit?t.visitConstBit(this):t.visitChildren(this)}},pO=class extends ga{constructor(t,e){super(t,e)}BIT(){return this.getToken(cn.BIT,0)}optionalVarying(){return this.getRuleContext(0,GO)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expressionList(){return this.getRuleContext(0,ZI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_bitWithLength}accept(t){return t.visitBitWithLength?t.visitBitWithLength(this):t.visitChildren(this)}},gO=class extends ga{constructor(t,e){super(t,e)}BIT(){return this.getToken(cn.BIT,0)}optionalVarying(){return this.getRuleContext(0,GO)}get ruleIndex(){return cn.RULE_bitWithoutLength}accept(t){return t.visitBitWithoutLength?t.visitBitWithoutLength(this):t.visitChildren(this)}},xO=class extends ga{constructor(t,e){super(t,e)}characterChar(){return this.getRuleContext(0,HO)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}iconst(){return this.getRuleContext(0,Ku)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_character}accept(t){return t.visitCharacter?t.visitCharacter(this):t.visitChildren(this)}},kO=class extends ga{constructor(t,e){super(t,e)}characterChar(){return this.getRuleContext(0,HO)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}iconst(){return this.getRuleContext(0,Ku)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_constCharacter}accept(t){return t.visitConstCharacter?t.visitConstCharacter(this):t.visitChildren(this)}},HO=class extends ga{constructor(t,e){super(t,e)}optionalVarying(){return this.getRuleContext(0,GO)}CHARACTER(){return this.getToken(cn.CHARACTER,0)}CHAR_P(){return this.getToken(cn.CHAR_P,0)}NCHAR(){return this.getToken(cn.NCHAR,0)}VARCHAR(){return this.getToken(cn.VARCHAR,0)}NATIONAL(){return this.getToken(cn.NATIONAL,0)}get ruleIndex(){return cn.RULE_characterChar}accept(t){return t.visitCharacterChar?t.visitCharacterChar(this):t.visitChildren(this)}},GO=class extends ga{constructor(t,e){super(t,e)}VARYING(){return this.getToken(cn.VARYING,0)}get ruleIndex(){return cn.RULE_optionalVarying}accept(t){return t.visitOptionalVarying?t.visitOptionalVarying(this):t.visitChildren(this)}},FO=class extends ga{constructor(t,e){super(t,e)}optionalTimezone(){return this.getRuleContext(0,BO)}TIMESTAMP(){return this.getToken(cn.TIMESTAMP,0)}TIME(){return this.getToken(cn.TIME,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}iconst(){return this.getRuleContext(0,Ku)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_constDateTime}accept(t){return t.visitConstDateTime?t.visitConstDateTime(this):t.visitChildren(this)}},vO=class extends ga{constructor(t,e){super(t,e)}INTERVAL(){return this.getToken(cn.INTERVAL,0)}get ruleIndex(){return cn.RULE_constInterval}accept(t){return t.visitConstInterval?t.visitConstInterval(this):t.visitChildren(this)}},BO=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(cn.WITH,0)}TIME(){return this.getToken(cn.TIME,0)}ZONE(){return this.getToken(cn.ZONE,0)}WITHOUT(){return this.getToken(cn.WITHOUT,0)}get ruleIndex(){return cn.RULE_optionalTimezone}accept(t){return t.visitOptionalTimezone?t.visitOptionalTimezone(this):t.visitChildren(this)}},yO=class extends ga{constructor(t,e){super(t,e)}YEAR_P(){return this.getToken(cn.YEAR_P,0)}MONTH_P(){return this.getToken(cn.MONTH_P,0)}DAY_P(){return this.getToken(cn.DAY_P,0)}HOUR_P(){return this.getToken(cn.HOUR_P,0)}MINUTE_P(){return this.getToken(cn.MINUTE_P,0)}intervalSecond(){return this.getRuleContext(0,fO)}TO(){return this.getToken(cn.TO,0)}get ruleIndex(){return cn.RULE_optionalInterval}accept(t){return t.visitOptionalInterval?t.visitOptionalInterval(this):t.visitChildren(this)}},fO=class extends ga{constructor(t,e){super(t,e)}SECOND_P(){return this.getToken(cn.SECOND_P,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}iconst(){return this.getRuleContext(0,Ku)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_intervalSecond}accept(t){return t.visitIntervalSecond?t.visitIntervalSecond(this):t.visitChildren(this)}},YO=class extends ga{constructor(t,e){super(t,e)}ESCAPE(){return this.getToken(cn.ESCAPE,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_optionalEscape}accept(t){return t.visitOptionalEscape?t.visitOptionalEscape(this):t.visitChildren(this)}},wO=class extends ga{constructor(t,e){super(t,e)}expression1Qualifier(){return this.getRuleContext(0,bO)}get ruleIndex(){return cn.RULE_expression1}accept(t){return t.visitExpression1?t.visitExpression1(this):t.visitChildren(this)}},bO=class extends ga{constructor(t,e){super(t,e)}expression1LessLess(){return this.getRuleContext(0,WO)}operatorQualifier(){return this.getRuleContext(0,KI)}get ruleIndex(){return cn.RULE_expression1Qualifier}accept(t){return t.visitExpression1Qualifier?t.visitExpression1Qualifier(this):t.visitChildren(this)}},WO=class extends ga{constructor(t,e){super(t,e)}expression1Or(t){return void 0===t?this.getRuleContexts(VO):this.getRuleContext(t,VO)}LESS_LESS(t){return void 0===t?this.getTokens(cn.LESS_LESS):this.getToken(cn.LESS_LESS,t)}GREATER_GREATER(t){return void 0===t?this.getTokens(cn.GREATER_GREATER):this.getToken(cn.GREATER_GREATER,t)}get ruleIndex(){return cn.RULE_expression1LessLess}accept(t){return t.visitExpression1LessLess?t.visitExpression1LessLess(this):t.visitChildren(this)}},VO=class extends ga{constructor(t,e){super(t,e)}expression1And(t){return void 0===t?this.getRuleContexts(XO):this.getRuleContext(t,XO)}OR(t){return void 0===t?this.getTokens(cn.OR):this.getToken(cn.OR,t)}get ruleIndex(){return cn.RULE_expression1Or}accept(t){return t.visitExpression1Or?t.visitExpression1Or(this):t.visitChildren(this)}},XO=class extends ga{constructor(t,e){super(t,e)}expression1Between(t){return void 0===t?this.getRuleContexts(KO):this.getRuleContext(t,KO)}AND(t){return void 0===t?this.getTokens(cn.AND):this.getToken(cn.AND,t)}get ruleIndex(){return cn.RULE_expression1And}accept(t){return t.visitExpression1And?t.visitExpression1And(this):t.visitChildren(this)}},KO=class extends ga{constructor(t,e){super(t,e)}expression1In(t){return void 0===t?this.getRuleContexts(QO):this.getRuleContext(t,QO)}BETWEEN(){return this.getToken(cn.BETWEEN,0)}AND(){return this.getToken(cn.AND,0)}NOT(){return this.getToken(cn.NOT,0)}SYMMETRIC(){return this.getToken(cn.SYMMETRIC,0)}get ruleIndex(){return cn.RULE_expression1Between}accept(t){return t.visitExpression1Between?t.visitExpression1Between(this):t.visitChildren(this)}},QO=class extends ga{constructor(t,e){super(t,e)}expression1UnaryNot(){return this.getRuleContext(0,JO)}IN_P(){return this.getToken(cn.IN_P,0)}inExpression(){return this.getRuleContext(0,hu)}NOT(){return this.getToken(cn.NOT,0)}get ruleIndex(){return cn.RULE_expression1In}accept(t){return t.visitExpression1In?t.visitExpression1In(this):t.visitChildren(this)}},JO=class extends ga{constructor(t,e){super(t,e)}expression1IsNull(){return this.getRuleContext(0,ZO)}NOT(){return this.getToken(cn.NOT,0)}get ruleIndex(){return cn.RULE_expression1UnaryNot}accept(t){return t.visitExpression1UnaryNot?t.visitExpression1UnaryNot(this):t.visitChildren(this)}},ZO=class extends ga{constructor(t,e){super(t,e)}expression1IsNot(){return this.getRuleContext(0,qO)}ISNULL(){return this.getToken(cn.ISNULL,0)}NOTNULL(){return this.getToken(cn.NOTNULL,0)}get ruleIndex(){return cn.RULE_expression1IsNull}accept(t){return t.visitExpression1IsNull?t.visitExpression1IsNull(this):t.visitChildren(this)}},qO=class extends ga{constructor(t,e){super(t,e)}expression1Compare(){return this.getRuleContext(0,jO)}IS(){return this.getToken(cn.IS,0)}NULL_P(){return this.getToken(cn.NULL_P,0)}TRUE_P(){return this.getToken(cn.TRUE_P,0)}FALSE_P(){return this.getToken(cn.FALSE_P,0)}UNKNOWN(){return this.getToken(cn.UNKNOWN,0)}DISTINCT(){return this.getToken(cn.DISTINCT,0)}FROM(){return this.getToken(cn.FROM,0)}expression1(){return this.getRuleContext(0,wO)}OF(){return this.getToken(cn.OF,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}typeList(){return this.getRuleContext(0,zI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}DOCUMENT_P(){return this.getToken(cn.DOCUMENT_P,0)}NORMALIZED(){return this.getToken(cn.NORMALIZED,0)}NOT(){return this.getToken(cn.NOT,0)}unicodeNormalForm(){return this.getRuleContext(0,au)}get ruleIndex(){return cn.RULE_expression1IsNot}accept(t){return t.visitExpression1IsNot?t.visitExpression1IsNot(this):t.visitChildren(this)}},jO=class extends ga{constructor(t,e){super(t,e)}expression1Like(t){return void 0===t?this.getRuleContexts(zO):this.getRuleContext(t,zO)}subqueryOperator(){return this.getRuleContext(0,JI)}subType(){return this.getRuleContext(0,WI)}LT(){return this.getToken(cn.LT,0)}GT(){return this.getToken(cn.GT,0)}EQUAL(){return this.getToken(cn.EQUAL,0)}LESS_EQUALS(){return this.getToken(cn.LESS_EQUALS,0)}GREATER_EQUALS(){return this.getToken(cn.GREATER_EQUALS,0)}NOT_EQUALS(){return this.getToken(cn.NOT_EQUALS,0)}selectWithParenthesis(){return this.getRuleContext(0,cl)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_expression1Compare}accept(t){return t.visitExpression1Compare?t.visitExpression1Compare(this):t.visitChildren(this)}},zO=class extends ga{constructor(t,e){super(t,e)}expression1qualifierOperator(t){return void 0===t?this.getRuleContexts($O):this.getRuleContext(t,$O)}optionalEscape(){return this.getRuleContext(0,YO)}LIKE(){return this.getToken(cn.LIKE,0)}ILIKE(){return this.getToken(cn.ILIKE,0)}SIMILAR(){return this.getToken(cn.SIMILAR,0)}TO(){return this.getToken(cn.TO,0)}NOT(){return this.getToken(cn.NOT,0)}get ruleIndex(){return cn.RULE_expression1Like}accept(t){return t.visitExpression1Like?t.visitExpression1Like(this):t.visitChildren(this)}},$O=class extends ga{constructor(t,e){super(t,e)}expression1UnaryQualifierOperator(t){return void 0===t?this.getRuleContexts(tI):this.getRuleContext(t,tI)}operatorQualifier(t){return void 0===t?this.getRuleContexts(KI):this.getRuleContext(t,KI)}get ruleIndex(){return cn.RULE_expression1qualifierOperator}accept(t){return t.visitExpression1qualifierOperator?t.visitExpression1qualifierOperator(this):t.visitChildren(this)}},tI=class extends ga{constructor(t,e){super(t,e)}expression1Add(){return this.getRuleContext(0,eI)}operatorQualifier(){return this.getRuleContext(0,KI)}get ruleIndex(){return cn.RULE_expression1UnaryQualifierOperator}accept(t){return t.visitExpression1UnaryQualifierOperator?t.visitExpression1UnaryQualifierOperator(this):t.visitChildren(this)}},eI=class extends ga{constructor(t,e){super(t,e)}expressionMultiply(t){return void 0===t?this.getRuleContexts(sI):this.getRuleContext(t,sI)}MINUS(t){return void 0===t?this.getTokens(cn.MINUS):this.getToken(cn.MINUS,t)}PLUS(t){return void 0===t?this.getTokens(cn.PLUS):this.getToken(cn.PLUS,t)}get ruleIndex(){return cn.RULE_expression1Add}accept(t){return t.visitExpression1Add?t.visitExpression1Add(this):t.visitChildren(this)}},sI=class extends ga{constructor(t,e){super(t,e)}expression1Caret(t){return void 0===t?this.getRuleContexts(aI):this.getRuleContext(t,aI)}STAR(t){return void 0===t?this.getTokens(cn.STAR):this.getToken(cn.STAR,t)}SLASH(t){return void 0===t?this.getTokens(cn.SLASH):this.getToken(cn.SLASH,t)}PERCENT(t){return void 0===t?this.getTokens(cn.PERCENT):this.getToken(cn.PERCENT,t)}get ruleIndex(){return cn.RULE_expressionMultiply}accept(t){return t.visitExpressionMultiply?t.visitExpressionMultiply(this):t.visitChildren(this)}},aI=class extends ga{constructor(t,e){super(t,e)}expression1UnarySign(){return this.getRuleContext(0,rI)}CARET(){return this.getToken(cn.CARET,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_expression1Caret}accept(t){return t.visitExpression1Caret?t.visitExpression1Caret(this):t.visitChildren(this)}},rI=class extends ga{constructor(t,e){super(t,e)}expression1AtTimeZone(){return this.getRuleContext(0,iI)}MINUS(){return this.getToken(cn.MINUS,0)}PLUS(){return this.getToken(cn.PLUS,0)}get ruleIndex(){return cn.RULE_expression1UnarySign}accept(t){return t.visitExpression1UnarySign?t.visitExpression1UnarySign(this):t.visitChildren(this)}},iI=class extends ga{constructor(t,e){super(t,e)}expression1Collate(){return this.getRuleContext(0,cI)}AT(){return this.getToken(cn.AT,0)}TIME(){return this.getToken(cn.TIME,0)}ZONE(){return this.getToken(cn.ZONE,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_expression1AtTimeZone}accept(t){return t.visitExpression1AtTimeZone?t.visitExpression1AtTimeZone(this):t.visitChildren(this)}},cI=class extends ga{constructor(t,e){super(t,e)}expression1Typecast(){return this.getRuleContext(0,nI)}COLLATE(){return this.getToken(cn.COLLATE,0)}anyName(){return this.getRuleContext(0,mo)}get ruleIndex(){return cn.RULE_expression1Collate}accept(t){return t.visitExpression1Collate?t.visitExpression1Collate(this):t.visitChildren(this)}},nI=class extends ga{constructor(t,e){super(t,e)}expression3(){return this.getRuleContext(0,EI)}TYPECAST(t){return void 0===t?this.getTokens(cn.TYPECAST):this.getToken(cn.TYPECAST,t)}typeName(t){return void 0===t?this.getRuleContexts(LO):this.getRuleContext(t,LO)}get ruleIndex(){return cn.RULE_expression1Typecast}accept(t){return t.visitExpression1Typecast?t.visitExpression1Typecast(this):t.visitChildren(this)}},hI=class t extends ga{constructor(t,e){super(t,e)}expression3(){return this.getRuleContext(0,EI)}expression2(e){return void 0===e?this.getRuleContexts(t):this.getRuleContext(e,t)}PLUS(){return this.getToken(cn.PLUS,0)}MINUS(){return this.getToken(cn.MINUS,0)}operatorQualifier(){return this.getRuleContext(0,KI)}CARET(){return this.getToken(cn.CARET,0)}STAR(){return this.getToken(cn.STAR,0)}SLASH(){return this.getToken(cn.SLASH,0)}PERCENT(){return this.getToken(cn.PERCENT,0)}LT(){return this.getToken(cn.LT,0)}GT(){return this.getToken(cn.GT,0)}EQUAL(){return this.getToken(cn.EQUAL,0)}LESS_EQUALS(){return this.getToken(cn.LESS_EQUALS,0)}GREATER_EQUALS(){return this.getToken(cn.GREATER_EQUALS,0)}NOT_EQUALS(){return this.getToken(cn.NOT_EQUALS,0)}TYPECAST(){return this.getToken(cn.TYPECAST,0)}typeName(){return this.getRuleContext(0,LO)}IS(){return this.getToken(cn.IS,0)}DISTINCT(){return this.getToken(cn.DISTINCT,0)}FROM(){return this.getToken(cn.FROM,0)}OF(){return this.getToken(cn.OF,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}typeList(){return this.getRuleContext(0,zI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}DOCUMENT_P(){return this.getToken(cn.DOCUMENT_P,0)}NOT(){return this.getToken(cn.NOT,0)}get ruleIndex(){return cn.RULE_expression2}accept(t){return t.visitExpression2?t.visitExpression2(this):t.visitChildren(this)}},EI=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return cn.RULE_expression3}copyFrom(t){super.copyFrom(t)}},TI=class extends EI{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXISTS(){return this.getToken(cn.EXISTS,0)}selectWithParenthesis(){return this.getRuleContext(0,cl)}accept(t){return t.visitC_expr_exists?t.visitC_expr_exists(this):t.visitChildren(this)}},oI=class extends EI{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}caseExpression(){return this.getRuleContext(0,ou)}accept(t){return t.visitC_expr_case?t.visitC_expr_case(this):t.visitChildren(this)}},RI=class extends EI{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ARRAY(){return this.getToken(cn.ARRAY,0)}selectWithParenthesis(){return this.getRuleContext(0,cl)}arrayExpression(){return this.getRuleContext(0,$I)}PARAM(){return this.getToken(cn.PARAM,0)}optionalIndirection(){return this.getRuleContext(0,Nu)}GROUPING(){return this.getToken(cn.GROUPING,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expressionList(){return this.getRuleContext(0,ZI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}UNIQUE(){return this.getToken(cn.UNIQUE,0)}columnReference(){return this.getRuleContext(0,Ou)}aExpressionConst(){return this.getRuleContext(0,bu)}plsqlVariableName(){return this.getRuleContext(0,AI)}expression1(){return this.getRuleContext(0,wO)}functionExpression(){return this.getRuleContext(0,lI)}indirection(){return this.getRuleContext(0,uu)}explicitRow(){return this.getRuleContext(0,wI)}implicitRow(){return this.getRuleContext(0,bI)}row(t){return void 0===t?this.getRuleContexts(YI):this.getRuleContext(t,YI)}OVERLAPS(){return this.getToken(cn.OVERLAPS,0)}accept(t){return t.visitC_expr_expr?t.visitC_expr_expr(this):t.visitChildren(this)}},AI=class extends ga{constructor(t,e){super(t,e)}PLSQLVARIABLENAME(){return this.getToken(cn.PLSQLVARIABLENAME,0)}get ruleIndex(){return cn.RULE_plsqlVariableName}accept(t){return t.visitPlsqlVariableName?t.visitPlsqlVariableName(this):t.visitChildren(this)}},SI=class extends ga{constructor(t,e){super(t,e)}functionName(){return this.getRuleContext(0,wu)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}functionArgumentList(){return this.getRuleContext(0,qI)}optionalSortClause(){return this.getRuleContext(0,Cl)}VARIADIC(){return this.getToken(cn.VARIADIC,0)}functionArgumentExpression(){return this.getRuleContext(0,jI)}STAR(){return this.getToken(cn.STAR,0)}ALL(){return this.getToken(cn.ALL,0)}DISTINCT(){return this.getToken(cn.DISTINCT,0)}COMMA(){return this.getToken(cn.COMMA,0)}get ruleIndex(){return cn.RULE_functionApplication}accept(t){return t.visitFunctionApplication?t.visitFunctionApplication(this):t.visitChildren(this)}},lI=class extends ga{constructor(t,e){super(t,e)}functionApplication(){return this.getRuleContext(0,SI)}withinGroupClause(){return this.getRuleContext(0,mI)}filterClause(){return this.getRuleContext(0,DI)}overClause(){return this.getRuleContext(0,kI)}functionExpressionCommonSubexpr(){return this.getRuleContext(0,II)}get ruleIndex(){return cn.RULE_functionExpression}accept(t){return t.visitFunctionExpression?t.visitFunctionExpression(this):t.visitChildren(this)}},OI=class extends ga{constructor(t,e){super(t,e)}functionApplication(){return this.getRuleContext(0,SI)}functionExpressionCommonSubexpr(){return this.getRuleContext(0,II)}get ruleIndex(){return cn.RULE_functionExpressionWindowless}accept(t){return t.visitFunctionExpressionWindowless?t.visitFunctionExpressionWindowless(this):t.visitChildren(this)}},II=class extends ga{constructor(t,e){super(t,e)}COLLATION(){return this.getToken(cn.COLLATION,0)}FOR(){return this.getToken(cn.FOR,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(t){return void 0===t?this.getRuleContexts(wO):this.getRuleContext(t,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}CURRENT_DATE(){return this.getToken(cn.CURRENT_DATE,0)}CURRENT_TIME(){return this.getToken(cn.CURRENT_TIME,0)}iconst(){return this.getRuleContext(0,Ku)}CURRENT_TIMESTAMP(){return this.getToken(cn.CURRENT_TIMESTAMP,0)}LOCALTIME(){return this.getToken(cn.LOCALTIME,0)}LOCALTIMESTAMP(){return this.getToken(cn.LOCALTIMESTAMP,0)}CURRENT_ROLE(){return this.getToken(cn.CURRENT_ROLE,0)}CURRENT_USER(){return this.getToken(cn.CURRENT_USER,0)}SESSION_USER(){return this.getToken(cn.SESSION_USER,0)}USER(){return this.getToken(cn.USER,0)}CURRENT_CATALOG(){return this.getToken(cn.CURRENT_CATALOG,0)}CURRENT_SCHEMA(){return this.getToken(cn.CURRENT_SCHEMA,0)}CAST(){return this.getToken(cn.CAST,0)}AS(){return this.getToken(cn.AS,0)}typeName(){return this.getRuleContext(0,LO)}EXTRACT(){return this.getToken(cn.EXTRACT,0)}extractList(){return this.getRuleContext(0,eu)}NORMALIZE(){return this.getToken(cn.NORMALIZE,0)}COMMA(){return this.getToken(cn.COMMA,0)}unicodeNormalForm(){return this.getRuleContext(0,au)}OVERLAY(){return this.getToken(cn.OVERLAY,0)}overlayList(){return this.getRuleContext(0,ru)}POSITION(){return this.getToken(cn.POSITION,0)}positionList(){return this.getRuleContext(0,iu)}SUBSTRING(){return this.getToken(cn.SUBSTRING,0)}substrList(){return this.getRuleContext(0,cu)}TREAT(){return this.getToken(cn.TREAT,0)}TRIM(){return this.getToken(cn.TRIM,0)}trimList(){return this.getRuleContext(0,nu)}BOTH(){return this.getToken(cn.BOTH,0)}LEADING(){return this.getToken(cn.LEADING,0)}TRAILING(){return this.getToken(cn.TRAILING,0)}NULLIF(){return this.getToken(cn.NULLIF,0)}COALESCE(){return this.getToken(cn.COALESCE,0)}expressionList(){return this.getRuleContext(0,ZI)}GREATEST(){return this.getToken(cn.GREATEST,0)}LEAST(){return this.getToken(cn.LEAST,0)}XMLCONCAT(){return this.getToken(cn.XMLCONCAT,0)}XMLELEMENT(){return this.getToken(cn.XMLELEMENT,0)}NAME_P(){return this.getToken(cn.NAME_P,0)}columnLabel(){return this.getRuleContext(0,aN)}xmlAttributes(){return this.getRuleContext(0,LI)}XMLEXISTS(){return this.getToken(cn.XMLEXISTS,0)}expression3(){return this.getRuleContext(0,EI)}xmlExistsArgument(){return this.getRuleContext(0,dI)}XMLFOREST(){return this.getToken(cn.XMLFOREST,0)}xmlAttributeList(){return this.getRuleContext(0,CI)}XMLPARSE(){return this.getToken(cn.XMLPARSE,0)}documentOrContent(){return this.getRuleContext(0,PI)}xmlWhitespaceOption(){return this.getRuleContext(0,MI)}XMLPI(){return this.getToken(cn.XMLPI,0)}XMLROOT(){return this.getToken(cn.XMLROOT,0)}XML_P(){return this.getToken(cn.XML_P,0)}xmlRootVersion(){return this.getRuleContext(0,uI)}optionalXmlRootStandalone(){return this.getRuleContext(0,NI)}XMLSERIALIZE(){return this.getToken(cn.XMLSERIALIZE,0)}simpleTypeName(){return this.getRuleContext(0,CO)}get ruleIndex(){return cn.RULE_functionExpressionCommonSubexpr}accept(t){return t.visitFunctionExpressionCommonSubexpr?t.visitFunctionExpressionCommonSubexpr(this):t.visitChildren(this)}},uI=class extends ga{constructor(t,e){super(t,e)}VERSION_P(){return this.getToken(cn.VERSION_P,0)}expression1(){return this.getRuleContext(0,wO)}NO(){return this.getToken(cn.NO,0)}VALUE_P(){return this.getToken(cn.VALUE_P,0)}get ruleIndex(){return cn.RULE_xmlRootVersion}accept(t){return t.visitXmlRootVersion?t.visitXmlRootVersion(this):t.visitChildren(this)}},NI=class extends ga{constructor(t,e){super(t,e)}COMMA(){return this.getToken(cn.COMMA,0)}STANDALONE_P(){return this.getToken(cn.STANDALONE_P,0)}YES_P(){return this.getToken(cn.YES_P,0)}NO(){return this.getToken(cn.NO,0)}VALUE_P(){return this.getToken(cn.VALUE_P,0)}get ruleIndex(){return cn.RULE_optionalXmlRootStandalone}accept(t){return t.visitOptionalXmlRootStandalone?t.visitOptionalXmlRootStandalone(this):t.visitChildren(this)}},LI=class extends ga{constructor(t,e){super(t,e)}XMLATTRIBUTES(){return this.getToken(cn.XMLATTRIBUTES,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}xmlAttributeList(){return this.getRuleContext(0,CI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_xmlAttributes}accept(t){return t.visitXmlAttributes?t.visitXmlAttributes(this):t.visitChildren(this)}},CI=class extends ga{constructor(t,e){super(t,e)}xmlAttributeElement(t){return void 0===t?this.getRuleContexts(_I):this.getRuleContext(t,_I)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_xmlAttributeList}accept(t){return t.visitXmlAttributeList?t.visitXmlAttributeList(this):t.visitChildren(this)}},_I=class extends ga{constructor(t,e){super(t,e)}expression1(){return this.getRuleContext(0,wO)}AS(){return this.getToken(cn.AS,0)}columnLabel(){return this.getRuleContext(0,aN)}get ruleIndex(){return cn.RULE_xmlAttributeElement}accept(t){return t.visitXmlAttributeElement?t.visitXmlAttributeElement(this):t.visitChildren(this)}},PI=class extends ga{constructor(t,e){super(t,e)}DOCUMENT_P(){return this.getToken(cn.DOCUMENT_P,0)}CONTENT_P(){return this.getToken(cn.CONTENT_P,0)}get ruleIndex(){return cn.RULE_documentOrContent}accept(t){return t.visitDocumentOrContent?t.visitDocumentOrContent(this):t.visitChildren(this)}},MI=class extends ga{constructor(t,e){super(t,e)}PRESERVE(){return this.getToken(cn.PRESERVE,0)}WHITESPACE_P(){return this.getToken(cn.WHITESPACE_P,0)}STRIP_P(){return this.getToken(cn.STRIP_P,0)}get ruleIndex(){return cn.RULE_xmlWhitespaceOption}accept(t){return t.visitXmlWhitespaceOption?t.visitXmlWhitespaceOption(this):t.visitChildren(this)}},dI=class extends ga{constructor(t,e){super(t,e)}PASSING(){return this.getToken(cn.PASSING,0)}expression3(){return this.getRuleContext(0,EI)}xmlPassingMech(t){return void 0===t?this.getRuleContexts(UI):this.getRuleContext(t,UI)}get ruleIndex(){return cn.RULE_xmlExistsArgument}accept(t){return t.visitXmlExistsArgument?t.visitXmlExistsArgument(this):t.visitChildren(this)}},UI=class extends ga{constructor(t,e){super(t,e)}BY(){return this.getToken(cn.BY,0)}REF(){return this.getToken(cn.REF,0)}VALUE_P(){return this.getToken(cn.VALUE_P,0)}get ruleIndex(){return cn.RULE_xmlPassingMech}accept(t){return t.visitXmlPassingMech?t.visitXmlPassingMech(this):t.visitChildren(this)}},mI=class extends ga{constructor(t,e){super(t,e)}WITHIN(){return this.getToken(cn.WITHIN,0)}GROUP_P(){return this.getToken(cn.GROUP_P,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}sortClause(){return this.getRuleContext(0,_l)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_withinGroupClause}accept(t){return t.visitWithinGroupClause?t.visitWithinGroupClause(this):t.visitChildren(this)}},DI=class extends ga{constructor(t,e){super(t,e)}FILTER(){return this.getToken(cn.FILTER,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}WHERE(){return this.getToken(cn.WHERE,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_filterClause}accept(t){return t.visitFilterClause?t.visitFilterClause(this):t.visitChildren(this)}},pI=class extends ga{constructor(t,e){super(t,e)}WINDOW(){return this.getToken(cn.WINDOW,0)}windowDefinitionList(){return this.getRuleContext(0,gI)}get ruleIndex(){return cn.RULE_windowClause}accept(t){return t.visitWindowClause?t.visitWindowClause(this):t.visitChildren(this)}},gI=class extends ga{constructor(t,e){super(t,e)}windowDefinition(t){return void 0===t?this.getRuleContexts(xI):this.getRuleContext(t,xI)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_windowDefinitionList}accept(t){return t.visitWindowDefinitionList?t.visitWindowDefinitionList(this):t.visitChildren(this)}},xI=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}AS(){return this.getToken(cn.AS,0)}windowSpecification(){return this.getRuleContext(0,HI)}get ruleIndex(){return cn.RULE_windowDefinition}accept(t){return t.visitWindowDefinition?t.visitWindowDefinition(this):t.visitChildren(this)}},kI=class extends ga{constructor(t,e){super(t,e)}OVER(){return this.getToken(cn.OVER,0)}windowSpecification(){return this.getRuleContext(0,HI)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_overClause}accept(t){return t.visitOverClause?t.visitOverClause(this):t.visitChildren(this)}},HI=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}optionalExistingWindowName(){return this.getRuleContext(0,GI)}optionalPartitionClause(){return this.getRuleContext(0,FI)}optionalSortClause(){return this.getRuleContext(0,Cl)}optionalFrameClause(){return this.getRuleContext(0,vI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_windowSpecification}accept(t){return t.visitWindowSpecification?t.visitWindowSpecification(this):t.visitChildren(this)}},GI=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_optionalExistingWindowName}accept(t){return t.visitOptionalExistingWindowName?t.visitOptionalExistingWindowName(this):t.visitChildren(this)}},FI=class extends ga{constructor(t,e){super(t,e)}PARTITION(){return this.getToken(cn.PARTITION,0)}BY(){return this.getToken(cn.BY,0)}expressionList(){return this.getRuleContext(0,ZI)}get ruleIndex(){return cn.RULE_optionalPartitionClause}accept(t){return t.visitOptionalPartitionClause?t.visitOptionalPartitionClause(this):t.visitChildren(this)}},vI=class extends ga{constructor(t,e){super(t,e)}RANGE(){return this.getToken(cn.RANGE,0)}frameExtent(){return this.getRuleContext(0,BI)}optionalWindowExclusionClause(){return this.getRuleContext(0,fI)}ROWS(){return this.getToken(cn.ROWS,0)}GROUPS(){return this.getToken(cn.GROUPS,0)}get ruleIndex(){return cn.RULE_optionalFrameClause}accept(t){return t.visitOptionalFrameClause?t.visitOptionalFrameClause(this):t.visitChildren(this)}},BI=class extends ga{constructor(t,e){super(t,e)}frameBound(t){return void 0===t?this.getRuleContexts(yI):this.getRuleContext(t,yI)}BETWEEN(){return this.getToken(cn.BETWEEN,0)}AND(){return this.getToken(cn.AND,0)}get ruleIndex(){return cn.RULE_frameExtent}accept(t){return t.visitFrameExtent?t.visitFrameExtent(this):t.visitChildren(this)}},yI=class extends ga{constructor(t,e){super(t,e)}UNBOUNDED(){return this.getToken(cn.UNBOUNDED,0)}PRECEDING(){return this.getToken(cn.PRECEDING,0)}FOLLOWING(){return this.getToken(cn.FOLLOWING,0)}CURRENT_P(){return this.getToken(cn.CURRENT_P,0)}ROW(){return this.getToken(cn.ROW,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_frameBound}accept(t){return t.visitFrameBound?t.visitFrameBound(this):t.visitChildren(this)}},fI=class extends ga{constructor(t,e){super(t,e)}EXCLUDE(){return this.getToken(cn.EXCLUDE,0)}CURRENT_P(){return this.getToken(cn.CURRENT_P,0)}ROW(){return this.getToken(cn.ROW,0)}GROUP_P(){return this.getToken(cn.GROUP_P,0)}TIES(){return this.getToken(cn.TIES,0)}NO(){return this.getToken(cn.NO,0)}OTHERS(){return this.getToken(cn.OTHERS,0)}get ruleIndex(){return cn.RULE_optionalWindowExclusionClause}accept(t){return t.visitOptionalWindowExclusionClause?t.visitOptionalWindowExclusionClause(this):t.visitChildren(this)}},YI=class extends ga{constructor(t,e){super(t,e)}ROW(){return this.getToken(cn.ROW,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}expressionList(){return this.getRuleContext(0,ZI)}COMMA(){return this.getToken(cn.COMMA,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_row}accept(t){return t.visitRow?t.visitRow(this):t.visitChildren(this)}},wI=class extends ga{constructor(t,e){super(t,e)}ROW(){return this.getToken(cn.ROW,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}expressionList(){return this.getRuleContext(0,ZI)}get ruleIndex(){return cn.RULE_explicitRow}accept(t){return t.visitExplicitRow?t.visitExplicitRow(this):t.visitChildren(this)}},bI=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expressionList(){return this.getRuleContext(0,ZI)}COMMA(){return this.getToken(cn.COMMA,0)}expression1(){return this.getRuleContext(0,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_implicitRow}accept(t){return t.visitImplicitRow?t.visitImplicitRow(this):t.visitChildren(this)}},WI=class extends ga{constructor(t,e){super(t,e)}ANY(){return this.getToken(cn.ANY,0)}SOME(){return this.getToken(cn.SOME,0)}ALL(){return this.getToken(cn.ALL,0)}get ruleIndex(){return cn.RULE_subType}accept(t){return t.visitSubType?t.visitSubType(this):t.visitChildren(this)}},VI=class extends ga{constructor(t,e){super(t,e)}Operator(){return this.getToken(cn.Operator,0)}mathOperator(){return this.getRuleContext(0,XI)}get ruleIndex(){return cn.RULE_allOperator}accept(t){return t.visitAllOperator?t.visitAllOperator(this):t.visitChildren(this)}},XI=class extends ga{constructor(t,e){super(t,e)}PLUS(){return this.getToken(cn.PLUS,0)}MINUS(){return this.getToken(cn.MINUS,0)}STAR(){return this.getToken(cn.STAR,0)}SLASH(){return this.getToken(cn.SLASH,0)}PERCENT(){return this.getToken(cn.PERCENT,0)}CARET(){return this.getToken(cn.CARET,0)}LT(){return this.getToken(cn.LT,0)}GT(){return this.getToken(cn.GT,0)}EQUAL(){return this.getToken(cn.EQUAL,0)}LESS_EQUALS(){return this.getToken(cn.LESS_EQUALS,0)}GREATER_EQUALS(){return this.getToken(cn.GREATER_EQUALS,0)}NOT_EQUALS(){return this.getToken(cn.NOT_EQUALS,0)}get ruleIndex(){return cn.RULE_mathOperator}accept(t){return t.visitMathOperator?t.visitMathOperator(this):t.visitChildren(this)}},KI=class extends ga{constructor(t,e){super(t,e)}Operator(){return this.getToken(cn.Operator,0)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}anyOperator(){return this.getRuleContext(0,WR)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_operatorQualifier}accept(t){return t.visitOperatorQualifier?t.visitOperatorQualifier(this):t.visitChildren(this)}},QI=class extends ga{constructor(t,e){super(t,e)}allOperator(){return this.getRuleContext(0,VI)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}anyOperator(){return this.getRuleContext(0,WR)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_allOperatorQualifier}accept(t){return t.visitAllOperatorQualifier?t.visitAllOperatorQualifier(this):t.visitChildren(this)}},JI=class extends ga{constructor(t,e){super(t,e)}allOperator(){return this.getRuleContext(0,VI)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}anyOperator(){return this.getRuleContext(0,WR)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}LIKE(){return this.getToken(cn.LIKE,0)}NOT(){return this.getToken(cn.NOT,0)}ILIKE(){return this.getToken(cn.ILIKE,0)}get ruleIndex(){return cn.RULE_subqueryOperator}accept(t){return t.visitSubqueryOperator?t.visitSubqueryOperator(this):t.visitChildren(this)}},ZI=class extends ga{constructor(t,e){super(t,e)}expression1(t){return void 0===t?this.getRuleContexts(wO):this.getRuleContext(t,wO)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_expressionList}accept(t){return t.visitExpressionList?t.visitExpressionList(this):t.visitChildren(this)}},qI=class extends ga{constructor(t,e){super(t,e)}functionArgumentExpression(t){return void 0===t?this.getRuleContexts(jI):this.getRuleContext(t,jI)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_functionArgumentList}accept(t){return t.visitFunctionArgumentList?t.visitFunctionArgumentList(this):t.visitChildren(this)}},jI=class extends ga{constructor(t,e){super(t,e)}expression1(){return this.getRuleContext(0,wO)}parameterName(){return this.getRuleContext(0,PR)}COLON_EQUALS(){return this.getToken(cn.COLON_EQUALS,0)}EQUALS_GREATER(){return this.getToken(cn.EQUALS_GREATER,0)}get ruleIndex(){return cn.RULE_functionArgumentExpression}accept(t){return t.visitFunctionArgumentExpression?t.visitFunctionArgumentExpression(this):t.visitChildren(this)}},zI=class extends ga{constructor(t,e){super(t,e)}typeName(t){return void 0===t?this.getRuleContexts(LO):this.getRuleContext(t,LO)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_typeList}accept(t){return t.visitTypeList?t.visitTypeList(this):t.visitChildren(this)}},$I=class extends ga{constructor(t,e){super(t,e)}OPEN_BRACKET(){return this.getToken(cn.OPEN_BRACKET,0)}CLOSE_BRACKET(){return this.getToken(cn.CLOSE_BRACKET,0)}expressionList(){return this.getRuleContext(0,ZI)}arrayExpressionList(){return this.getRuleContext(0,tu)}get ruleIndex(){return cn.RULE_arrayExpression}accept(t){return t.visitArrayExpression?t.visitArrayExpression(this):t.visitChildren(this)}},tu=class extends ga{constructor(t,e){super(t,e)}arrayExpression(t){return void 0===t?this.getRuleContexts($I):this.getRuleContext(t,$I)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_arrayExpressionList}accept(t){return t.visitArrayExpressionList?t.visitArrayExpressionList(this):t.visitChildren(this)}},eu=class extends ga{constructor(t,e){super(t,e)}extractArgument(){return this.getRuleContext(0,su)}FROM(){return this.getToken(cn.FROM,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_extractList}accept(t){return t.visitExtractList?t.visitExtractList(this):t.visitChildren(this)}},su=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,rN)}YEAR_P(){return this.getToken(cn.YEAR_P,0)}MONTH_P(){return this.getToken(cn.MONTH_P,0)}DAY_P(){return this.getToken(cn.DAY_P,0)}HOUR_P(){return this.getToken(cn.HOUR_P,0)}MINUTE_P(){return this.getToken(cn.MINUTE_P,0)}SECOND_P(){return this.getToken(cn.SECOND_P,0)}sconst(){return this.getRuleContext(0,Qu)}get ruleIndex(){return cn.RULE_extractArgument}accept(t){return t.visitExtractArgument?t.visitExtractArgument(this):t.visitChildren(this)}},au=class extends ga{constructor(t,e){super(t,e)}NFC(){return this.getToken(cn.NFC,0)}NFD(){return this.getToken(cn.NFD,0)}NFKC(){return this.getToken(cn.NFKC,0)}NFKD(){return this.getToken(cn.NFKD,0)}get ruleIndex(){return cn.RULE_unicodeNormalForm}accept(t){return t.visitUnicodeNormalForm?t.visitUnicodeNormalForm(this):t.visitChildren(this)}},ru=class extends ga{constructor(t,e){super(t,e)}expression1(t){return void 0===t?this.getRuleContexts(wO):this.getRuleContext(t,wO)}PLACING(){return this.getToken(cn.PLACING,0)}FROM(){return this.getToken(cn.FROM,0)}FOR(){return this.getToken(cn.FOR,0)}get ruleIndex(){return cn.RULE_overlayList}accept(t){return t.visitOverlayList?t.visitOverlayList(this):t.visitChildren(this)}},iu=class extends ga{constructor(t,e){super(t,e)}expression2(t){return void 0===t?this.getRuleContexts(hI):this.getRuleContext(t,hI)}IN_P(){return this.getToken(cn.IN_P,0)}get ruleIndex(){return cn.RULE_positionList}accept(t){return t.visitPositionList?t.visitPositionList(this):t.visitChildren(this)}},cu=class extends ga{constructor(t,e){super(t,e)}expression1(t){return void 0===t?this.getRuleContexts(wO):this.getRuleContext(t,wO)}FROM(){return this.getToken(cn.FROM,0)}FOR(){return this.getToken(cn.FOR,0)}SIMILAR(){return this.getToken(cn.SIMILAR,0)}ESCAPE(){return this.getToken(cn.ESCAPE,0)}expressionList(){return this.getRuleContext(0,ZI)}get ruleIndex(){return cn.RULE_substrList}accept(t){return t.visitSubstrList?t.visitSubstrList(this):t.visitChildren(this)}},nu=class extends ga{constructor(t,e){super(t,e)}expression1(){return this.getRuleContext(0,wO)}FROM(){return this.getToken(cn.FROM,0)}expressionList(){return this.getRuleContext(0,ZI)}get ruleIndex(){return cn.RULE_trimList}accept(t){return t.visitTrimList?t.visitTrimList(this):t.visitChildren(this)}},hu=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return cn.RULE_inExpression}copyFrom(t){super.copyFrom(t)}},Eu=class extends hu{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expressionList(){return this.getRuleContext(0,ZI)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}accept(t){return t.visitIn_expr_list?t.visitIn_expr_list(this):t.visitChildren(this)}},Tu=class extends hu{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}selectWithParenthesis(){return this.getRuleContext(0,cl)}accept(t){return t.visitIn_expr_select?t.visitIn_expr_select(this):t.visitChildren(this)}},ou=class extends ga{constructor(t,e){super(t,e)}CASE(){return this.getToken(cn.CASE,0)}caseArg(){return this.getRuleContext(0,lu)}whenClauseList(){return this.getRuleContext(0,Ru)}caseDefault(){return this.getRuleContext(0,Su)}END_P(){return this.getToken(cn.END_P,0)}get ruleIndex(){return cn.RULE_caseExpression}accept(t){return t.visitCaseExpression?t.visitCaseExpression(this):t.visitChildren(this)}},Ru=class extends ga{constructor(t,e){super(t,e)}whenClause(t){return void 0===t?this.getRuleContexts(Au):this.getRuleContext(t,Au)}get ruleIndex(){return cn.RULE_whenClauseList}accept(t){return t.visitWhenClauseList?t.visitWhenClauseList(this):t.visitChildren(this)}},Au=class extends ga{constructor(t,e){super(t,e)}WHEN(){return this.getToken(cn.WHEN,0)}expression1(t){return void 0===t?this.getRuleContexts(wO):this.getRuleContext(t,wO)}THEN(){return this.getToken(cn.THEN,0)}get ruleIndex(){return cn.RULE_whenClause}accept(t){return t.visitWhenClause?t.visitWhenClause(this):t.visitChildren(this)}},Su=class extends ga{constructor(t,e){super(t,e)}ELSE(){return this.getToken(cn.ELSE,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_caseDefault}accept(t){return t.visitCaseDefault?t.visitCaseDefault(this):t.visitChildren(this)}},lu=class extends ga{constructor(t,e){super(t,e)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_caseArg}accept(t){return t.visitCaseArg?t.visitCaseArg(this):t.visitChildren(this)}},Ou=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}indirection(){return this.getRuleContext(0,uu)}get ruleIndex(){return cn.RULE_columnReference}accept(t){return t.visitColumnReference?t.visitColumnReference(this):t.visitChildren(this)}},Iu=class extends ga{constructor(t,e){super(t,e)}DOT(){return this.getToken(cn.DOT,0)}attributeName(){return this.getRuleContext(0,fu)}STAR(){return this.getToken(cn.STAR,0)}OPEN_BRACKET(){return this.getToken(cn.OPEN_BRACKET,0)}CLOSE_BRACKET(){return this.getToken(cn.CLOSE_BRACKET,0)}expression1(t){return void 0===t?this.getRuleContexts(wO):this.getRuleContext(t,wO)}COLON(){return this.getToken(cn.COLON,0)}get ruleIndex(){return cn.RULE_indirectionElement}accept(t){return t.visitIndirectionElement?t.visitIndirectionElement(this):t.visitChildren(this)}},uu=class extends ga{constructor(t,e){super(t,e)}indirectionElement(t){return void 0===t?this.getRuleContexts(Iu):this.getRuleContext(t,Iu)}get ruleIndex(){return cn.RULE_indirection}accept(t){return t.visitIndirection?t.visitIndirection(this):t.visitChildren(this)}},Nu=class extends ga{constructor(t,e){super(t,e)}indirectionElement(t){return void 0===t?this.getRuleContexts(Iu):this.getRuleContext(t,Iu)}get ruleIndex(){return cn.RULE_optionalIndirection}accept(t){return t.visitOptionalIndirection?t.visitOptionalIndirection(this):t.visitChildren(this)}},Lu=class extends ga{constructor(t,e){super(t,e)}targetList(){return this.getRuleContext(0,Cu)}get ruleIndex(){return cn.RULE_optionalTargetList}accept(t){return t.visitOptionalTargetList?t.visitOptionalTargetList(this):t.visitChildren(this)}},Cu=class extends ga{constructor(t,e){super(t,e)}targetElement(t){return void 0===t?this.getRuleContexts(_u):this.getRuleContext(t,_u)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_targetList}accept(t){return t.visitTargetList?t.visitTargetList(this):t.visitChildren(this)}},_u=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return cn.RULE_targetElement}copyFrom(t){super.copyFrom(t)}},Pu=class extends _u{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}STAR(){return this.getToken(cn.STAR,0)}accept(t){return t.visitTarget_star?t.visitTarget_star(this):t.visitChildren(this)}},Mu=class extends _u{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}expression1(){return this.getRuleContext(0,wO)}AS(){return this.getToken(cn.AS,0)}columnLabel(){return this.getRuleContext(0,aN)}identifier(){return this.getRuleContext(0,rN)}accept(t){return t.visitTarget_label?t.visitTarget_label(this):t.visitChildren(this)}},du=class extends ga{constructor(t,e){super(t,e)}qualifiedName(t){return void 0===t?this.getRuleContexts(vu):this.getRuleContext(t,vu)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_qualifiedNameList}accept(t){return t.visitQualifiedNameList?t.visitQualifiedNameList(this):t.visitChildren(this)}},Uu=class extends ga{constructor(t,e){super(t,e)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_databaseName}accept(t){return t.visitDatabaseName?t.visitDatabaseName(this):t.visitChildren(this)}},mu=class extends ga{constructor(t,e){super(t,e)}databaseName(t){return void 0===t?this.getRuleContexts(Uu):this.getRuleContext(t,Uu)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_databaseNameList}accept(t){return t.visitDatabaseNameList?t.visitDatabaseNameList(this):t.visitChildren(this)}},Du=class extends ga{constructor(t,e){super(t,e)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_schemaName}accept(t){return t.visitSchemaName?t.visitSchemaName(this):t.visitChildren(this)}},pu=class extends ga{constructor(t,e){super(t,e)}schemaName(t){return void 0===t?this.getRuleContexts(Du):this.getRuleContext(t,Du)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_schemaNameList}accept(t){return t.visitSchemaNameList?t.visitSchemaNameList(this):t.visitChildren(this)}},gu=class extends ga{constructor(t,e){super(t,e)}qualifiedName(){return this.getRuleContext(0,vu)}get ruleIndex(){return cn.RULE_indexName}accept(t){return t.visitIndexName?t.visitIndexName(this):t.visitChildren(this)}},xu=class extends ga{constructor(t,e){super(t,e)}indexName(t){return void 0===t?this.getRuleContexts(gu):this.getRuleContext(t,gu)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_indexNameList}accept(t){return t.visitIndexNameList?t.visitIndexNameList(this):t.visitChildren(this)}},ku=class extends ga{constructor(t,e){super(t,e)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_triggerName}accept(t){return t.visitTriggerName?t.visitTriggerName(this):t.visitChildren(this)}},Hu=class extends ga{constructor(t,e){super(t,e)}name(){return this.getRuleContext(0,yu)}get ruleIndex(){return cn.RULE_constraintName}accept(t){return t.visitConstraintName?t.visitConstraintName(this):t.visitChildren(this)}},Gu=class extends ga{constructor(t,e){super(t,e)}qualifiedName(){return this.getRuleContext(0,vu)}get ruleIndex(){return cn.RULE_sequenceName}accept(t){return t.visitSequenceName?t.visitSequenceName(this):t.visitChildren(this)}},Fu=class extends ga{constructor(t,e){super(t,e)}sequenceName(t){return void 0===t?this.getRuleContexts(Gu):this.getRuleContext(t,Gu)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_sequenceNameList}accept(t){return t.visitSequenceNameList?t.visitSequenceNameList(this):t.visitChildren(this)}},vu=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}indirection(){return this.getRuleContext(0,uu)}get ruleIndex(){return cn.RULE_qualifiedName}accept(t){return t.visitQualifiedName?t.visitQualifiedName(this):t.visitChildren(this)}},Bu=class extends ga{constructor(t,e){super(t,e)}name(t){return void 0===t?this.getRuleContexts(yu):this.getRuleContext(t,yu)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_nameList}accept(t){return t.visitNameList?t.visitNameList(this):t.visitChildren(this)}},yu=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_name}accept(t){return t.visitName?t.visitName(this):t.visitChildren(this)}},fu=class extends ga{constructor(t,e){super(t,e)}columnLabel(){return this.getRuleContext(0,aN)}get ruleIndex(){return cn.RULE_attributeName}accept(t){return t.visitAttributeName?t.visitAttributeName(this):t.visitChildren(this)}},Yu=class extends ga{constructor(t,e){super(t,e)}sconst(){return this.getRuleContext(0,Qu)}get ruleIndex(){return cn.RULE_fileName}accept(t){return t.visitFileName?t.visitFileName(this):t.visitChildren(this)}},wu=class extends ga{constructor(t,e){super(t,e)}builtinFunctionName(){return this.getRuleContext(0,TN)}typeFunctionName(){return this.getRuleContext(0,eN)}columnId(){return this.getRuleContext(0,$u)}indirection(){return this.getRuleContext(0,uu)}LEFT(){return this.getToken(cn.LEFT,0)}RIGHT(){return this.getToken(cn.RIGHT,0)}get ruleIndex(){return cn.RULE_functionName}accept(t){return t.visitFunctionName?t.visitFunctionName(this):t.visitChildren(this)}},bu=class extends ga{constructor(t,e){super(t,e)}iconst(){return this.getRuleContext(0,Ku)}fconst(){return this.getRuleContext(0,Xu)}sconst(){return this.getRuleContext(0,Qu)}bconst(){return this.getRuleContext(0,Vu)}xconst(){return this.getRuleContext(0,Wu)}functionName(){return this.getRuleContext(0,wu)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}functionArgumentList(){return this.getRuleContext(0,qI)}optionalSortClause(){return this.getRuleContext(0,Cl)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}constTypeName(){return this.getRuleContext(0,_O)}constInterval(){return this.getRuleContext(0,vO)}optionalInterval(){return this.getRuleContext(0,yO)}TRUE_P(){return this.getToken(cn.TRUE_P,0)}FALSE_P(){return this.getToken(cn.FALSE_P,0)}NULL_P(){return this.getToken(cn.NULL_P,0)}get ruleIndex(){return cn.RULE_aExpressionConst}accept(t){return t.visitAExpressionConst?t.visitAExpressionConst(this):t.visitChildren(this)}},Wu=class extends ga{constructor(t,e){super(t,e)}HexadecimalStringConstant(){return this.getToken(cn.HexadecimalStringConstant,0)}get ruleIndex(){return cn.RULE_xconst}accept(t){return t.visitXconst?t.visitXconst(this):t.visitChildren(this)}},Vu=class extends ga{constructor(t,e){super(t,e)}BinaryStringConstant(){return this.getToken(cn.BinaryStringConstant,0)}get ruleIndex(){return cn.RULE_bconst}accept(t){return t.visitBconst?t.visitBconst(this):t.visitChildren(this)}},Xu=class extends ga{constructor(t,e){super(t,e)}Numeric(){return this.getToken(cn.Numeric,0)}get ruleIndex(){return cn.RULE_fconst}accept(t){return t.visitFconst?t.visitFconst(this):t.visitChildren(this)}},Ku=class extends ga{constructor(t,e){super(t,e)}Integral(){return this.getToken(cn.Integral,0)}get ruleIndex(){return cn.RULE_iconst}accept(t){return t.visitIconst?t.visitIconst(this):t.visitChildren(this)}},Qu=class extends ga{constructor(t,e){super(t,e)}anySconst(){return this.getRuleContext(0,Ju)}optionalUescape(){return this.getRuleContext(0,Zu)}get ruleIndex(){return cn.RULE_sconst}accept(t){return t.visitSconst?t.visitSconst(this):t.visitChildren(this)}},Ju=class extends ga{constructor(t,e){super(t,e)}StringConstant(){return this.getToken(cn.StringConstant,0)}UnicodeEscapeStringConstant(){return this.getToken(cn.UnicodeEscapeStringConstant,0)}BeginDollarStringConstant(){return this.getToken(cn.BeginDollarStringConstant,0)}EndDollarStringConstant(){return this.getToken(cn.EndDollarStringConstant,0)}DollarText(t){return void 0===t?this.getTokens(cn.DollarText):this.getToken(cn.DollarText,t)}EscapeStringConstant(){return this.getToken(cn.EscapeStringConstant,0)}get ruleIndex(){return cn.RULE_anySconst}accept(t){return t.visitAnySconst?t.visitAnySconst(this):t.visitChildren(this)}},Zu=class extends ga{constructor(t,e){super(t,e)}UESCAPE(){return this.getToken(cn.UESCAPE,0)}anySconst(){return this.getRuleContext(0,Ju)}get ruleIndex(){return cn.RULE_optionalUescape}accept(t){return t.visitOptionalUescape?t.visitOptionalUescape(this):t.visitChildren(this)}},qu=class extends ga{constructor(t,e){super(t,e)}iconst(){return this.getRuleContext(0,Ku)}PLUS(){return this.getToken(cn.PLUS,0)}MINUS(){return this.getToken(cn.MINUS,0)}get ruleIndex(){return cn.RULE_signedIconst}accept(t){return t.visitSignedIconst?t.visitSignedIconst(this):t.visitChildren(this)}},ju=class extends ga{constructor(t,e){super(t,e)}nonReservedWord(){return this.getRuleContext(0,sN)}CURRENT_USER(){return this.getToken(cn.CURRENT_USER,0)}SESSION_USER(){return this.getToken(cn.SESSION_USER,0)}get ruleIndex(){return cn.RULE_roleName}accept(t){return t.visitRoleName?t.visitRoleName(this):t.visitChildren(this)}},zu=class extends ga{constructor(t,e){super(t,e)}roleName(t){return void 0===t?this.getRuleContexts(ju):this.getRuleContext(t,ju)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_roleNameList}accept(t){return t.visitRoleNameList?t.visitRoleNameList(this):t.visitChildren(this)}},$u=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,rN)}unreservedKeyword(){return this.getRuleContext(0,cN)}columnNameKeyword(){return this.getRuleContext(0,nN)}plsqlUnreservedKeyword(){return this.getRuleContext(0,rC)}LEFT(){return this.getToken(cn.LEFT,0)}RIGHT(){return this.getToken(cn.RIGHT,0)}get ruleIndex(){return cn.RULE_columnId}accept(t){return t.visitColumnId?t.visitColumnId(this):t.visitChildren(this)}},tN=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,rN)}unreservedKeyword(){return this.getRuleContext(0,cN)}columnNameKeyword(){return this.getRuleContext(0,nN)}plsqlUnreservedKeyword(){return this.getRuleContext(0,rC)}get ruleIndex(){return cn.RULE_tableAlias}accept(t){return t.visitTableAlias?t.visitTableAlias(this):t.visitChildren(this)}},eN=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,rN)}unreservedKeyword(){return this.getRuleContext(0,cN)}plsqlUnreservedKeyword(){return this.getRuleContext(0,rC)}typeFunctionNameKeyword(){return this.getRuleContext(0,hN)}get ruleIndex(){return cn.RULE_typeFunctionName}accept(t){return t.visitTypeFunctionName?t.visitTypeFunctionName(this):t.visitChildren(this)}},sN=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,rN)}unreservedKeyword(){return this.getRuleContext(0,cN)}columnNameKeyword(){return this.getRuleContext(0,nN)}typeFunctionNameKeyword(){return this.getRuleContext(0,hN)}get ruleIndex(){return cn.RULE_nonReservedWord}accept(t){return t.visitNonReservedWord?t.visitNonReservedWord(this):t.visitChildren(this)}},aN=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,rN)}plsqlUnreservedKeyword(){return this.getRuleContext(0,rC)}unreservedKeyword(){return this.getRuleContext(0,cN)}columnNameKeyword(){return this.getRuleContext(0,nN)}typeFunctionNameKeyword(){return this.getRuleContext(0,hN)}reservedKeyword(){return this.getRuleContext(0,EN)}get ruleIndex(){return cn.RULE_columnLabel}accept(t){return t.visitColumnLabel?t.visitColumnLabel(this):t.visitChildren(this)}},rN=class extends ga{constructor(t,e){super(t,e)}Identifier(){return this.getToken(cn.Identifier,0)}optionalUescape(){return this.getRuleContext(0,Zu)}QuotedIdentifier(){return this.getToken(cn.QuotedIdentifier,0)}UnicodeQuotedIdentifier(){return this.getToken(cn.UnicodeQuotedIdentifier,0)}plsqlVariableName(){return this.getRuleContext(0,AI)}plsqlIdentifier(){return this.getRuleContext(0,iN)}plsqlUnreservedKeyword(){return this.getRuleContext(0,rC)}get ruleIndex(){return cn.RULE_identifier}accept(t){return t.visitIdentifier?t.visitIdentifier(this):t.visitChildren(this)}},iN=class extends ga{constructor(t,e){super(t,e)}PLSQLIDENTIFIER(){return this.getToken(cn.PLSQLIDENTIFIER,0)}get ruleIndex(){return cn.RULE_plsqlIdentifier}accept(t){return t.visitPlsqlIdentifier?t.visitPlsqlIdentifier(this):t.visitChildren(this)}},cN=class extends ga{constructor(t,e){super(t,e)}ABORT_P(){return this.getToken(cn.ABORT_P,0)}ABSOLUTE_P(){return this.getToken(cn.ABSOLUTE_P,0)}ACCESS(){return this.getToken(cn.ACCESS,0)}ACTION(){return this.getToken(cn.ACTION,0)}ADD_P(){return this.getToken(cn.ADD_P,0)}ADMIN(){return this.getToken(cn.ADMIN,0)}AFTER(){return this.getToken(cn.AFTER,0)}AGGREGATE(){return this.getToken(cn.AGGREGATE,0)}ALSO(){return this.getToken(cn.ALSO,0)}ALTER(){return this.getToken(cn.ALTER,0)}ALWAYS(){return this.getToken(cn.ALWAYS,0)}ASSERTION(){return this.getToken(cn.ASSERTION,0)}ASSIGNMENT(){return this.getToken(cn.ASSIGNMENT,0)}AT(){return this.getToken(cn.AT,0)}ATTACH(){return this.getToken(cn.ATTACH,0)}ATTRIBUTE(){return this.getToken(cn.ATTRIBUTE,0)}BACKWARD(){return this.getToken(cn.BACKWARD,0)}BEFORE(){return this.getToken(cn.BEFORE,0)}BEGIN_P(){return this.getToken(cn.BEGIN_P,0)}BY(){return this.getToken(cn.BY,0)}CACHE(){return this.getToken(cn.CACHE,0)}CALL(){return this.getToken(cn.CALL,0)}CALLED(){return this.getToken(cn.CALLED,0)}CASCADE(){return this.getToken(cn.CASCADE,0)}CASCADED(){return this.getToken(cn.CASCADED,0)}CATALOG(){return this.getToken(cn.CATALOG,0)}CHAIN(){return this.getToken(cn.CHAIN,0)}CHARACTERISTICS(){return this.getToken(cn.CHARACTERISTICS,0)}CHECKPOINT(){return this.getToken(cn.CHECKPOINT,0)}CLASS(){return this.getToken(cn.CLASS,0)}CLOSE(){return this.getToken(cn.CLOSE,0)}CLUSTER(){return this.getToken(cn.CLUSTER,0)}COLUMNS(){return this.getToken(cn.COLUMNS,0)}COMMENT(){return this.getToken(cn.COMMENT,0)}COMMENTS(){return this.getToken(cn.COMMENTS,0)}COMMIT(){return this.getToken(cn.COMMIT,0)}COMMITTED(){return this.getToken(cn.COMMITTED,0)}CONFIGURATION(){return this.getToken(cn.CONFIGURATION,0)}CONFLICT(){return this.getToken(cn.CONFLICT,0)}CONNECTION(){return this.getToken(cn.CONNECTION,0)}CONSTRAINTS(){return this.getToken(cn.CONSTRAINTS,0)}CONTENT_P(){return this.getToken(cn.CONTENT_P,0)}CONTINUE_P(){return this.getToken(cn.CONTINUE_P,0)}CONVERSION_P(){return this.getToken(cn.CONVERSION_P,0)}COPY(){return this.getToken(cn.COPY,0)}COST(){return this.getToken(cn.COST,0)}CSV(){return this.getToken(cn.CSV,0)}CUBE(){return this.getToken(cn.CUBE,0)}CURRENT_P(){return this.getToken(cn.CURRENT_P,0)}CURSOR(){return this.getToken(cn.CURSOR,0)}CYCLE(){return this.getToken(cn.CYCLE,0)}DATA_P(){return this.getToken(cn.DATA_P,0)}DATABASE(){return this.getToken(cn.DATABASE,0)}DAY_P(){return this.getToken(cn.DAY_P,0)}DEALLOCATE(){return this.getToken(cn.DEALLOCATE,0)}DECLARE(){return this.getToken(cn.DECLARE,0)}DEFAULTS(){return this.getToken(cn.DEFAULTS,0)}DEFERRED(){return this.getToken(cn.DEFERRED,0)}DEFINER(){return this.getToken(cn.DEFINER,0)}DELETE_P(){return this.getToken(cn.DELETE_P,0)}DELIMITER(){return this.getToken(cn.DELIMITER,0)}DELIMITERS(){return this.getToken(cn.DELIMITERS,0)}DEPENDS(){return this.getToken(cn.DEPENDS,0)}DETACH(){return this.getToken(cn.DETACH,0)}DICTIONARY(){return this.getToken(cn.DICTIONARY,0)}DISABLE_P(){return this.getToken(cn.DISABLE_P,0)}DISCARD(){return this.getToken(cn.DISCARD,0)}DOCUMENT_P(){return this.getToken(cn.DOCUMENT_P,0)}DOMAIN_P(){return this.getToken(cn.DOMAIN_P,0)}DOUBLE_P(){return this.getToken(cn.DOUBLE_P,0)}DROP(){return this.getToken(cn.DROP,0)}EACH(){return this.getToken(cn.EACH,0)}ENABLE_P(){return this.getToken(cn.ENABLE_P,0)}ENCODING(){return this.getToken(cn.ENCODING,0)}ENCRYPTED(){return this.getToken(cn.ENCRYPTED,0)}ENUM_P(){return this.getToken(cn.ENUM_P,0)}ESCAPE(){return this.getToken(cn.ESCAPE,0)}EVENT(){return this.getToken(cn.EVENT,0)}EXCLUDE(){return this.getToken(cn.EXCLUDE,0)}EXCLUDING(){return this.getToken(cn.EXCLUDING,0)}EXCLUSIVE(){return this.getToken(cn.EXCLUSIVE,0)}EXECUTE(){return this.getToken(cn.EXECUTE,0)}EXPLAIN(){return this.getToken(cn.EXPLAIN,0)}EXPRESSION(){return this.getToken(cn.EXPRESSION,0)}EXTENSION(){return this.getToken(cn.EXTENSION,0)}EXTERNAL(){return this.getToken(cn.EXTERNAL,0)}FAMILY(){return this.getToken(cn.FAMILY,0)}FILTER(){return this.getToken(cn.FILTER,0)}FIRST_P(){return this.getToken(cn.FIRST_P,0)}FOLLOWING(){return this.getToken(cn.FOLLOWING,0)}FORCE(){return this.getToken(cn.FORCE,0)}FORWARD(){return this.getToken(cn.FORWARD,0)}FUNCTION(){return this.getToken(cn.FUNCTION,0)}FUNCTIONS(){return this.getToken(cn.FUNCTIONS,0)}GENERATED(){return this.getToken(cn.GENERATED,0)}GLOBAL(){return this.getToken(cn.GLOBAL,0)}GRANTED(){return this.getToken(cn.GRANTED,0)}GROUPS(){return this.getToken(cn.GROUPS,0)}HANDLER(){return this.getToken(cn.HANDLER,0)}HEADER_P(){return this.getToken(cn.HEADER_P,0)}HOLD(){return this.getToken(cn.HOLD,0)}HOUR_P(){return this.getToken(cn.HOUR_P,0)}IDENTITY_P(){return this.getToken(cn.IDENTITY_P,0)}IF_P(){return this.getToken(cn.IF_P,0)}IMMEDIATE(){return this.getToken(cn.IMMEDIATE,0)}IMMUTABLE(){return this.getToken(cn.IMMUTABLE,0)}IMPLICIT_P(){return this.getToken(cn.IMPLICIT_P,0)}IMPORT_P(){return this.getToken(cn.IMPORT_P,0)}INCLUDE(){return this.getToken(cn.INCLUDE,0)}INCLUDING(){return this.getToken(cn.INCLUDING,0)}INCREMENT(){return this.getToken(cn.INCREMENT,0)}INDEX(){return this.getToken(cn.INDEX,0)}INDEXES(){return this.getToken(cn.INDEXES,0)}INHERIT(){return this.getToken(cn.INHERIT,0)}INHERITS(){return this.getToken(cn.INHERITS,0)}INLINE_P(){return this.getToken(cn.INLINE_P,0)}INPUT_P(){return this.getToken(cn.INPUT_P,0)}INSENSITIVE(){return this.getToken(cn.INSENSITIVE,0)}INSERT(){return this.getToken(cn.INSERT,0)}INSTEAD(){return this.getToken(cn.INSTEAD,0)}INVOKER(){return this.getToken(cn.INVOKER,0)}ISOLATION(){return this.getToken(cn.ISOLATION,0)}KEY(){return this.getToken(cn.KEY,0)}LABEL(){return this.getToken(cn.LABEL,0)}LANGUAGE(){return this.getToken(cn.LANGUAGE,0)}LARGE_P(){return this.getToken(cn.LARGE_P,0)}LAST_P(){return this.getToken(cn.LAST_P,0)}LEAKPROOF(){return this.getToken(cn.LEAKPROOF,0)}LEVEL(){return this.getToken(cn.LEVEL,0)}LISTEN(){return this.getToken(cn.LISTEN,0)}LOAD(){return this.getToken(cn.LOAD,0)}LOCAL(){return this.getToken(cn.LOCAL,0)}LOCATION(){return this.getToken(cn.LOCATION,0)}LOCK_P(){return this.getToken(cn.LOCK_P,0)}LOCKED(){return this.getToken(cn.LOCKED,0)}LOGGED(){return this.getToken(cn.LOGGED,0)}MAPPING(){return this.getToken(cn.MAPPING,0)}MATCH(){return this.getToken(cn.MATCH,0)}MATERIALIZED(){return this.getToken(cn.MATERIALIZED,0)}MAXVALUE(){return this.getToken(cn.MAXVALUE,0)}METHOD(){return this.getToken(cn.METHOD,0)}MINUTE_P(){return this.getToken(cn.MINUTE_P,0)}MINVALUE(){return this.getToken(cn.MINVALUE,0)}MODE(){return this.getToken(cn.MODE,0)}MONTH_P(){return this.getToken(cn.MONTH_P,0)}MOVE(){return this.getToken(cn.MOVE,0)}NAME_P(){return this.getToken(cn.NAME_P,0)}NAMES(){return this.getToken(cn.NAMES,0)}NEW(){return this.getToken(cn.NEW,0)}NEXT(){return this.getToken(cn.NEXT,0)}NFC(){return this.getToken(cn.NFC,0)}NFD(){return this.getToken(cn.NFD,0)}NFKC(){return this.getToken(cn.NFKC,0)}NFKD(){return this.getToken(cn.NFKD,0)}NO(){return this.getToken(cn.NO,0)}NORMALIZED(){return this.getToken(cn.NORMALIZED,0)}NOTHING(){return this.getToken(cn.NOTHING,0)}NOTIFY(){return this.getToken(cn.NOTIFY,0)}NOWAIT(){return this.getToken(cn.NOWAIT,0)}NULLS_P(){return this.getToken(cn.NULLS_P,0)}OBJECT_P(){return this.getToken(cn.OBJECT_P,0)}OF(){return this.getToken(cn.OF,0)}OFF(){return this.getToken(cn.OFF,0)}OIDS(){return this.getToken(cn.OIDS,0)}OLD(){return this.getToken(cn.OLD,0)}OPERATOR(){return this.getToken(cn.OPERATOR,0)}OPTION(){return this.getToken(cn.OPTION,0)}OPTIONS(){return this.getToken(cn.OPTIONS,0)}ORDINALITY(){return this.getToken(cn.ORDINALITY,0)}OTHERS(){return this.getToken(cn.OTHERS,0)}OVER(){return this.getToken(cn.OVER,0)}OVERRIDING(){return this.getToken(cn.OVERRIDING,0)}OWNED(){return this.getToken(cn.OWNED,0)}OWNER(){return this.getToken(cn.OWNER,0)}PARALLEL(){return this.getToken(cn.PARALLEL,0)}PARSER(){return this.getToken(cn.PARSER,0)}PARTIAL(){return this.getToken(cn.PARTIAL,0)}PARTITION(){return this.getToken(cn.PARTITION,0)}PASSING(){return this.getToken(cn.PASSING,0)}PASSWORD(){return this.getToken(cn.PASSWORD,0)}PLANS(){return this.getToken(cn.PLANS,0)}POLICY(){return this.getToken(cn.POLICY,0)}PRECEDING(){return this.getToken(cn.PRECEDING,0)}PREPARE(){return this.getToken(cn.PREPARE,0)}PREPARED(){return this.getToken(cn.PREPARED,0)}PRESERVE(){return this.getToken(cn.PRESERVE,0)}PRIOR(){return this.getToken(cn.PRIOR,0)}PRIVILEGES(){return this.getToken(cn.PRIVILEGES,0)}PROCEDURAL(){return this.getToken(cn.PROCEDURAL,0)}PROCEDURE(){return this.getToken(cn.PROCEDURE,0)}PROCEDURES(){return this.getToken(cn.PROCEDURES,0)}PROGRAM(){return this.getToken(cn.PROGRAM,0)}PUBLICATION(){return this.getToken(cn.PUBLICATION,0)}QUOTE(){return this.getToken(cn.QUOTE,0)}RANGE(){return this.getToken(cn.RANGE,0)}READ(){return this.getToken(cn.READ,0)}REASSIGN(){return this.getToken(cn.REASSIGN,0)}RECHECK(){return this.getToken(cn.RECHECK,0)}RECURSIVE(){return this.getToken(cn.RECURSIVE,0)}REF(){return this.getToken(cn.REF,0)}REFERENCING(){return this.getToken(cn.REFERENCING,0)}REFRESH(){return this.getToken(cn.REFRESH,0)}REINDEX(){return this.getToken(cn.REINDEX,0)}RELATIVE_P(){return this.getToken(cn.RELATIVE_P,0)}RELEASE(){return this.getToken(cn.RELEASE,0)}RENAME(){return this.getToken(cn.RENAME,0)}REPEATABLE(){return this.getToken(cn.REPEATABLE,0)}REPLICA(){return this.getToken(cn.REPLICA,0)}RESET(){return this.getToken(cn.RESET,0)}RESTART(){return this.getToken(cn.RESTART,0)}RESTRICT(){return this.getToken(cn.RESTRICT,0)}RETURNS(){return this.getToken(cn.RETURNS,0)}REVOKE(){return this.getToken(cn.REVOKE,0)}ROLE(){return this.getToken(cn.ROLE,0)}ROLLBACK(){return this.getToken(cn.ROLLBACK,0)}ROLLUP(){return this.getToken(cn.ROLLUP,0)}ROUTINE(){return this.getToken(cn.ROUTINE,0)}ROUTINES(){return this.getToken(cn.ROUTINES,0)}ROWS(){return this.getToken(cn.ROWS,0)}RULE(){return this.getToken(cn.RULE,0)}SAVEPOINT(){return this.getToken(cn.SAVEPOINT,0)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}SCHEMAS(){return this.getToken(cn.SCHEMAS,0)}SCROLL(){return this.getToken(cn.SCROLL,0)}SEARCH(){return this.getToken(cn.SEARCH,0)}SECOND_P(){return this.getToken(cn.SECOND_P,0)}SECURITY(){return this.getToken(cn.SECURITY,0)}SEQUENCE(){return this.getToken(cn.SEQUENCE,0)}SEQUENCES(){return this.getToken(cn.SEQUENCES,0)}SERIALIZABLE(){return this.getToken(cn.SERIALIZABLE,0)}SERVER(){return this.getToken(cn.SERVER,0)}SESSION(){return this.getToken(cn.SESSION,0)}SET(){return this.getToken(cn.SET,0)}SETS(){return this.getToken(cn.SETS,0)}SHARE(){return this.getToken(cn.SHARE,0)}SHOW(){return this.getToken(cn.SHOW,0)}SIMPLE(){return this.getToken(cn.SIMPLE,0)}SKIP_P(){return this.getToken(cn.SKIP_P,0)}SNAPSHOT(){return this.getToken(cn.SNAPSHOT,0)}SQL_P(){return this.getToken(cn.SQL_P,0)}STABLE(){return this.getToken(cn.STABLE,0)}STANDALONE_P(){return this.getToken(cn.STANDALONE_P,0)}START(){return this.getToken(cn.START,0)}STATEMENT(){return this.getToken(cn.STATEMENT,0)}STATISTICS(){return this.getToken(cn.STATISTICS,0)}STDIN(){return this.getToken(cn.STDIN,0)}STDOUT(){return this.getToken(cn.STDOUT,0)}STORAGE(){return this.getToken(cn.STORAGE,0)}STORED(){return this.getToken(cn.STORED,0)}STRICT_P(){return this.getToken(cn.STRICT_P,0)}STRIP_P(){return this.getToken(cn.STRIP_P,0)}SUBSCRIPTION(){return this.getToken(cn.SUBSCRIPTION,0)}SUPPORT(){return this.getToken(cn.SUPPORT,0)}SYSID(){return this.getToken(cn.SYSID,0)}SYSTEM_P(){return this.getToken(cn.SYSTEM_P,0)}TABLES(){return this.getToken(cn.TABLES,0)}TABLESPACE(){return this.getToken(cn.TABLESPACE,0)}TEMP(){return this.getToken(cn.TEMP,0)}TEMPLATE(){return this.getToken(cn.TEMPLATE,0)}TEMPORARY(){return this.getToken(cn.TEMPORARY,0)}TEXT_P(){return this.getToken(cn.TEXT_P,0)}TIES(){return this.getToken(cn.TIES,0)}TRANSACTION(){return this.getToken(cn.TRANSACTION,0)}TRANSFORM(){return this.getToken(cn.TRANSFORM,0)}TRIGGER(){return this.getToken(cn.TRIGGER,0)}TRUNCATE(){return this.getToken(cn.TRUNCATE,0)}TRUSTED(){return this.getToken(cn.TRUSTED,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}TYPES_P(){return this.getToken(cn.TYPES_P,0)}UESCAPE(){return this.getToken(cn.UESCAPE,0)}UNBOUNDED(){return this.getToken(cn.UNBOUNDED,0)}UNCOMMITTED(){return this.getToken(cn.UNCOMMITTED,0)}UNENCRYPTED(){return this.getToken(cn.UNENCRYPTED,0)}UNKNOWN(){return this.getToken(cn.UNKNOWN,0)}UNLISTEN(){return this.getToken(cn.UNLISTEN,0)}UNLOGGED(){return this.getToken(cn.UNLOGGED,0)}UNTIL(){return this.getToken(cn.UNTIL,0)}UPDATE(){return this.getToken(cn.UPDATE,0)}VACUUM(){return this.getToken(cn.VACUUM,0)}VALID(){return this.getToken(cn.VALID,0)}VALIDATE(){return this.getToken(cn.VALIDATE,0)}VALIDATOR(){return this.getToken(cn.VALIDATOR,0)}VALUE_P(){return this.getToken(cn.VALUE_P,0)}VARYING(){return this.getToken(cn.VARYING,0)}VERSION_P(){return this.getToken(cn.VERSION_P,0)}VIEW(){return this.getToken(cn.VIEW,0)}VIEWS(){return this.getToken(cn.VIEWS,0)}VOLATILE(){return this.getToken(cn.VOLATILE,0)}WHITESPACE_P(){return this.getToken(cn.WHITESPACE_P,0)}WITHIN(){return this.getToken(cn.WITHIN,0)}WITHOUT(){return this.getToken(cn.WITHOUT,0)}WORK(){return this.getToken(cn.WORK,0)}WRAPPER(){return this.getToken(cn.WRAPPER,0)}WRITE(){return this.getToken(cn.WRITE,0)}XML_P(){return this.getToken(cn.XML_P,0)}YEAR_P(){return this.getToken(cn.YEAR_P,0)}YES_P(){return this.getToken(cn.YES_P,0)}ZONE(){return this.getToken(cn.ZONE,0)}get ruleIndex(){return cn.RULE_unreservedKeyword}accept(t){return t.visitUnreservedKeyword?t.visitUnreservedKeyword(this):t.visitChildren(this)}},nN=class extends ga{constructor(t,e){super(t,e)}BETWEEN(){return this.getToken(cn.BETWEEN,0)}BIGINT(){return this.getToken(cn.BIGINT,0)}bit(){return this.getRuleContext(0,mO)}BOOLEAN_P(){return this.getToken(cn.BOOLEAN_P,0)}CHAR_P(){return this.getToken(cn.CHAR_P,0)}character(){return this.getRuleContext(0,xO)}COALESCE(){return this.getToken(cn.COALESCE,0)}DEC(){return this.getToken(cn.DEC,0)}DECIMAL_P(){return this.getToken(cn.DECIMAL_P,0)}EXISTS(){return this.getToken(cn.EXISTS,0)}EXTRACT(){return this.getToken(cn.EXTRACT,0)}FLOAT_P(){return this.getToken(cn.FLOAT_P,0)}GREATEST(){return this.getToken(cn.GREATEST,0)}GROUPING(){return this.getToken(cn.GROUPING,0)}INOUT(){return this.getToken(cn.INOUT,0)}INT_P(){return this.getToken(cn.INT_P,0)}INTEGER(){return this.getToken(cn.INTEGER,0)}INTERVAL(){return this.getToken(cn.INTERVAL,0)}LEAST(){return this.getToken(cn.LEAST,0)}NATIONAL(){return this.getToken(cn.NATIONAL,0)}NCHAR(){return this.getToken(cn.NCHAR,0)}NONE(){return this.getToken(cn.NONE,0)}NORMALIZE(){return this.getToken(cn.NORMALIZE,0)}NULLIF(){return this.getToken(cn.NULLIF,0)}numeric(){return this.getRuleContext(0,dO)}OUT_P(){return this.getToken(cn.OUT_P,0)}OVERLAY(){return this.getToken(cn.OVERLAY,0)}POSITION(){return this.getToken(cn.POSITION,0)}PRECISION(){return this.getToken(cn.PRECISION,0)}REAL(){return this.getToken(cn.REAL,0)}ROW(){return this.getToken(cn.ROW,0)}SETOF(){return this.getToken(cn.SETOF,0)}SMALLINT(){return this.getToken(cn.SMALLINT,0)}SUBSTRING(){return this.getToken(cn.SUBSTRING,0)}TIME(){return this.getToken(cn.TIME,0)}TIMESTAMP(){return this.getToken(cn.TIMESTAMP,0)}TREAT(){return this.getToken(cn.TREAT,0)}TRIM(){return this.getToken(cn.TRIM,0)}VALUES(){return this.getToken(cn.VALUES,0)}VARCHAR(){return this.getToken(cn.VARCHAR,0)}XMLATTRIBUTES(){return this.getToken(cn.XMLATTRIBUTES,0)}XMLCONCAT(){return this.getToken(cn.XMLCONCAT,0)}XMLELEMENT(){return this.getToken(cn.XMLELEMENT,0)}XMLEXISTS(){return this.getToken(cn.XMLEXISTS,0)}XMLFOREST(){return this.getToken(cn.XMLFOREST,0)}XMLNAMESPACES(){return this.getToken(cn.XMLNAMESPACES,0)}XMLPARSE(){return this.getToken(cn.XMLPARSE,0)}XMLPI(){return this.getToken(cn.XMLPI,0)}XMLROOT(){return this.getToken(cn.XMLROOT,0)}XMLSERIALIZE(){return this.getToken(cn.XMLSERIALIZE,0)}XMLTABLE(){return this.getToken(cn.XMLTABLE,0)}builtinFunctionName(){return this.getRuleContext(0,TN)}get ruleIndex(){return cn.RULE_columnNameKeyword}accept(t){return t.visitColumnNameKeyword?t.visitColumnNameKeyword(this):t.visitChildren(this)}},hN=class extends ga{constructor(t,e){super(t,e)}AUTHORIZATION(){return this.getToken(cn.AUTHORIZATION,0)}BINARY(){return this.getToken(cn.BINARY,0)}COLLATION(){return this.getToken(cn.COLLATION,0)}CONCURRENTLY(){return this.getToken(cn.CONCURRENTLY,0)}CROSS(){return this.getToken(cn.CROSS,0)}CURRENT_SCHEMA(){return this.getToken(cn.CURRENT_SCHEMA,0)}FREEZE(){return this.getToken(cn.FREEZE,0)}FULL(){return this.getToken(cn.FULL,0)}ILIKE(){return this.getToken(cn.ILIKE,0)}INNER_P(){return this.getToken(cn.INNER_P,0)}IS(){return this.getToken(cn.IS,0)}ISNULL(){return this.getToken(cn.ISNULL,0)}JOIN(){return this.getToken(cn.JOIN,0)}LIKE(){return this.getToken(cn.LIKE,0)}NATURAL(){return this.getToken(cn.NATURAL,0)}NOTNULL(){return this.getToken(cn.NOTNULL,0)}OUTER_P(){return this.getToken(cn.OUTER_P,0)}OVERLAPS(){return this.getToken(cn.OVERLAPS,0)}SIMILAR(){return this.getToken(cn.SIMILAR,0)}TABLESAMPLE(){return this.getToken(cn.TABLESAMPLE,0)}VERBOSE(){return this.getToken(cn.VERBOSE,0)}get ruleIndex(){return cn.RULE_typeFunctionNameKeyword}accept(t){return t.visitTypeFunctionNameKeyword?t.visitTypeFunctionNameKeyword(this):t.visitChildren(this)}},EN=class extends ga{constructor(t,e){super(t,e)}ALL(){return this.getToken(cn.ALL,0)}ANALYSE(){return this.getToken(cn.ANALYSE,0)}ANALYZE(){return this.getToken(cn.ANALYZE,0)}AND(){return this.getToken(cn.AND,0)}ANY(){return this.getToken(cn.ANY,0)}ARRAY(){return this.getToken(cn.ARRAY,0)}AS(){return this.getToken(cn.AS,0)}ASC(){return this.getToken(cn.ASC,0)}ASYMMETRIC(){return this.getToken(cn.ASYMMETRIC,0)}BOTH(){return this.getToken(cn.BOTH,0)}CASE(){return this.getToken(cn.CASE,0)}CAST(){return this.getToken(cn.CAST,0)}CHECK(){return this.getToken(cn.CHECK,0)}COLLATE(){return this.getToken(cn.COLLATE,0)}COLUMN(){return this.getToken(cn.COLUMN,0)}CONSTRAINT(){return this.getToken(cn.CONSTRAINT,0)}CREATE(){return this.getToken(cn.CREATE,0)}CURRENT_CATALOG(){return this.getToken(cn.CURRENT_CATALOG,0)}CURRENT_DATE(){return this.getToken(cn.CURRENT_DATE,0)}CURRENT_ROLE(){return this.getToken(cn.CURRENT_ROLE,0)}CURRENT_TIME(){return this.getToken(cn.CURRENT_TIME,0)}CURRENT_TIMESTAMP(){return this.getToken(cn.CURRENT_TIMESTAMP,0)}CURRENT_USER(){return this.getToken(cn.CURRENT_USER,0)}DEFERRABLE(){return this.getToken(cn.DEFERRABLE,0)}DESC(){return this.getToken(cn.DESC,0)}DISTINCT(){return this.getToken(cn.DISTINCT,0)}DO(){return this.getToken(cn.DO,0)}ELSE(){return this.getToken(cn.ELSE,0)}END_P(){return this.getToken(cn.END_P,0)}EXCEPT(){return this.getToken(cn.EXCEPT,0)}FALSE_P(){return this.getToken(cn.FALSE_P,0)}FETCH(){return this.getToken(cn.FETCH,0)}FOR(){return this.getToken(cn.FOR,0)}FOREIGN(){return this.getToken(cn.FOREIGN,0)}FROM(){return this.getToken(cn.FROM,0)}GRANT(){return this.getToken(cn.GRANT,0)}GROUP_P(){return this.getToken(cn.GROUP_P,0)}HAVING(){return this.getToken(cn.HAVING,0)}IN_P(){return this.getToken(cn.IN_P,0)}INITIALLY(){return this.getToken(cn.INITIALLY,0)}INTERSECT(){return this.getToken(cn.INTERSECT,0)}LATERAL_P(){return this.getToken(cn.LATERAL_P,0)}LEADING(){return this.getToken(cn.LEADING,0)}LIMIT(){return this.getToken(cn.LIMIT,0)}LOCALTIME(){return this.getToken(cn.LOCALTIME,0)}LOCALTIMESTAMP(){return this.getToken(cn.LOCALTIMESTAMP,0)}NOT(){return this.getToken(cn.NOT,0)}NULL_P(){return this.getToken(cn.NULL_P,0)}OFFSET(){return this.getToken(cn.OFFSET,0)}ON(){return this.getToken(cn.ON,0)}ONLY(){return this.getToken(cn.ONLY,0)}OR(){return this.getToken(cn.OR,0)}ORDER(){return this.getToken(cn.ORDER,0)}PLACING(){return this.getToken(cn.PLACING,0)}PRIMARY(){return this.getToken(cn.PRIMARY,0)}REFERENCES(){return this.getToken(cn.REFERENCES,0)}RETURNING(){return this.getToken(cn.RETURNING,0)}SELECT(){return this.getToken(cn.SELECT,0)}SESSION_USER(){return this.getToken(cn.SESSION_USER,0)}SOME(){return this.getToken(cn.SOME,0)}SYMMETRIC(){return this.getToken(cn.SYMMETRIC,0)}TABLE(){return this.getToken(cn.TABLE,0)}THEN(){return this.getToken(cn.THEN,0)}TO(){return this.getToken(cn.TO,0)}TRAILING(){return this.getToken(cn.TRAILING,0)}TRUE_P(){return this.getToken(cn.TRUE_P,0)}UNION(){return this.getToken(cn.UNION,0)}UNIQUE(){return this.getToken(cn.UNIQUE,0)}USER(){return this.getToken(cn.USER,0)}USING(){return this.getToken(cn.USING,0)}VARIADIC(){return this.getToken(cn.VARIADIC,0)}WHEN(){return this.getToken(cn.WHEN,0)}WHERE(){return this.getToken(cn.WHERE,0)}WINDOW(){return this.getToken(cn.WINDOW,0)}WITH(){return this.getToken(cn.WITH,0)}get ruleIndex(){return cn.RULE_reservedKeyword}accept(t){return t.visitReservedKeyword?t.visitReservedKeyword(this):t.visitChildren(this)}},TN=class extends ga{constructor(t,e){super(t,e)}XMLCOMMENT(){return this.getToken(cn.XMLCOMMENT,0)}XML_IS_WELL_FORMED(){return this.getToken(cn.XML_IS_WELL_FORMED,0)}XML_IS_WELL_FORMED_DOCUMENT(){return this.getToken(cn.XML_IS_WELL_FORMED_DOCUMENT,0)}XML_IS_WELL_FORMED_CONTENT(){return this.getToken(cn.XML_IS_WELL_FORMED_CONTENT,0)}XMLAGG(){return this.getToken(cn.XMLAGG,0)}XPATH(){return this.getToken(cn.XPATH,0)}XPATH_EXISTS(){return this.getToken(cn.XPATH_EXISTS,0)}ABS(){return this.getToken(cn.ABS,0)}CBRT(){return this.getToken(cn.CBRT,0)}CEIL(){return this.getToken(cn.CEIL,0)}CEILING(){return this.getToken(cn.CEILING,0)}DEGREES(){return this.getToken(cn.DEGREES,0)}DIV(){return this.getToken(cn.DIV,0)}EXP(){return this.getToken(cn.EXP,0)}FACTORIAL(){return this.getToken(cn.FACTORIAL,0)}FLOOR(){return this.getToken(cn.FLOOR,0)}GCD(){return this.getToken(cn.GCD,0)}LCM(){return this.getToken(cn.LCM,0)}LN(){return this.getToken(cn.LN,0)}LOG(){return this.getToken(cn.LOG,0)}LOG10(){return this.getToken(cn.LOG10,0)}MIN_SCALE(){return this.getToken(cn.MIN_SCALE,0)}MOD(){return this.getToken(cn.MOD,0)}PI(){return this.getToken(cn.PI,0)}POWER(){return this.getToken(cn.POWER,0)}RADIANS(){return this.getToken(cn.RADIANS,0)}ROUND(){return this.getToken(cn.ROUND,0)}SCALE(){return this.getToken(cn.SCALE,0)}SIGN(){return this.getToken(cn.SIGN,0)}SQRT(){return this.getToken(cn.SQRT,0)}TRIM_SCALE(){return this.getToken(cn.TRIM_SCALE,0)}TRUNC(){return this.getToken(cn.TRUNC,0)}WIDTH_BUCKET(){return this.getToken(cn.WIDTH_BUCKET,0)}RANDOM(){return this.getToken(cn.RANDOM,0)}SETSEED(){return this.getToken(cn.SETSEED,0)}ACOS(){return this.getToken(cn.ACOS,0)}ACOSD(){return this.getToken(cn.ACOSD,0)}ACOSH(){return this.getToken(cn.ACOSH,0)}ASIN(){return this.getToken(cn.ASIN,0)}ASIND(){return this.getToken(cn.ASIND,0)}ASINH(){return this.getToken(cn.ASINH,0)}ATAN(){return this.getToken(cn.ATAN,0)}ATAND(){return this.getToken(cn.ATAND,0)}ATANH(){return this.getToken(cn.ATANH,0)}ATAN2(){return this.getToken(cn.ATAN2,0)}ATAN2D(){return this.getToken(cn.ATAN2D,0)}COS(){return this.getToken(cn.COS,0)}COSD(){return this.getToken(cn.COSD,0)}COSH(){return this.getToken(cn.COSH,0)}COT(){return this.getToken(cn.COT,0)}COTD(){return this.getToken(cn.COTD,0)}SIN(){return this.getToken(cn.SIN,0)}SIND(){return this.getToken(cn.SIND,0)}SINH(){return this.getToken(cn.SINH,0)}TAN(){return this.getToken(cn.TAN,0)}TAND(){return this.getToken(cn.TAND,0)}TANH(){return this.getToken(cn.TANH,0)}BIT_LENGTH(){return this.getToken(cn.BIT_LENGTH,0)}CHAR_LENGTH(){return this.getToken(cn.CHAR_LENGTH,0)}CHARACTER_LENGTH(){return this.getToken(cn.CHARACTER_LENGTH,0)}LOWER(){return this.getToken(cn.LOWER,0)}OCTET_LENGTH(){return this.getToken(cn.OCTET_LENGTH,0)}UPPER(){return this.getToken(cn.UPPER,0)}ASCII(){return this.getToken(cn.ASCII,0)}BTRIM(){return this.getToken(cn.BTRIM,0)}CHR(){return this.getToken(cn.CHR,0)}CONCAT(){return this.getToken(cn.CONCAT,0)}CONCAT_WS(){return this.getToken(cn.CONCAT_WS,0)}FORMAT(){return this.getToken(cn.FORMAT,0)}INITCAP(){return this.getToken(cn.INITCAP,0)}LENGTH(){return this.getToken(cn.LENGTH,0)}LPAD(){return this.getToken(cn.LPAD,0)}LTRIM(){return this.getToken(cn.LTRIM,0)}MD5(){return this.getToken(cn.MD5,0)}PARSE_IDENT(){return this.getToken(cn.PARSE_IDENT,0)}PG_CLIENT_ENCODING(){return this.getToken(cn.PG_CLIENT_ENCODING,0)}QUOTE_IDENT(){return this.getToken(cn.QUOTE_IDENT,0)}QUOTE_LITERAL(){return this.getToken(cn.QUOTE_LITERAL,0)}QUOTE_NULLABLE(){return this.getToken(cn.QUOTE_NULLABLE,0)}REGEXP_COUNT(){return this.getToken(cn.REGEXP_COUNT,0)}REGEXP_INSTR(){return this.getToken(cn.REGEXP_INSTR,0)}REGEXP_LIKE(){return this.getToken(cn.REGEXP_LIKE,0)}REGEXP_MATCH(){return this.getToken(cn.REGEXP_MATCH,0)}REGEXP_MATCHES(){return this.getToken(cn.REGEXP_MATCHES,0)}REGEXP_REPLACE(){return this.getToken(cn.REGEXP_REPLACE,0)}REGEXP_SPLIT_TO_ARRAY(){return this.getToken(cn.REGEXP_SPLIT_TO_ARRAY,0)}REGEXP_SPLIT_TO_TABLE(){return this.getToken(cn.REGEXP_SPLIT_TO_TABLE,0)}REGEXP_SUBSTR(){return this.getToken(cn.REGEXP_SUBSTR,0)}REPEAT(){return this.getToken(cn.REPEAT,0)}REPLACE(){return this.getToken(cn.REPLACE,0)}REVERSE(){return this.getToken(cn.REVERSE,0)}RPAD(){return this.getToken(cn.RPAD,0)}RTRIM(){return this.getToken(cn.RTRIM,0)}SPLIT_PART(){return this.getToken(cn.SPLIT_PART,0)}STARTS_WITH(){return this.getToken(cn.STARTS_WITH,0)}STRING_TO_ARRAY(){return this.getToken(cn.STRING_TO_ARRAY,0)}STRING_TO_TABLE(){return this.getToken(cn.STRING_TO_TABLE,0)}STRPOS(){return this.getToken(cn.STRPOS,0)}SUBSTR(){return this.getToken(cn.SUBSTR,0)}TO_ASCII(){return this.getToken(cn.TO_ASCII,0)}TO_HEX(){return this.getToken(cn.TO_HEX,0)}TRANSLATE(){return this.getToken(cn.TRANSLATE,0)}UNISTR(){return this.getToken(cn.UNISTR,0)}AGE(){return this.getToken(cn.AGE,0)}DATE_BIN(){return this.getToken(cn.DATE_BIN,0)}DATE_PART(){return this.getToken(cn.DATE_PART,0)}DATE_TRUNC(){return this.getToken(cn.DATE_TRUNC,0)}ISFINITE(){return this.getToken(cn.ISFINITE,0)}JUSTIFY_DAYS(){return this.getToken(cn.JUSTIFY_DAYS,0)}JUSTIFY_HOURS(){return this.getToken(cn.JUSTIFY_HOURS,0)}JUSTIFY_INTERVAL(){return this.getToken(cn.JUSTIFY_INTERVAL,0)}MAKE_DATE(){return this.getToken(cn.MAKE_DATE,0)}MAKE_INTERVAL(){return this.getToken(cn.MAKE_INTERVAL,0)}MAKE_TIME(){return this.getToken(cn.MAKE_TIME,0)}MAKE_TIMESTAMP(){return this.getToken(cn.MAKE_TIMESTAMP,0)}MAKE_TIMESTAMPTZ(){return this.getToken(cn.MAKE_TIMESTAMPTZ,0)}CLOCK_TIMESTAMP(){return this.getToken(cn.CLOCK_TIMESTAMP,0)}NOW(){return this.getToken(cn.NOW,0)}STATEMENT_TIMESTAMP(){return this.getToken(cn.STATEMENT_TIMESTAMP,0)}TIMEOFDAY(){return this.getToken(cn.TIMEOFDAY,0)}TRANSACTION_TIMESTAMP(){return this.getToken(cn.TRANSACTION_TIMESTAMP,0)}TO_TIMESTAMP(){return this.getToken(cn.TO_TIMESTAMP,0)}TO_CHAR(){return this.getToken(cn.TO_CHAR,0)}TO_DATE(){return this.getToken(cn.TO_DATE,0)}TO_NUMBER(){return this.getToken(cn.TO_NUMBER,0)}get ruleIndex(){return cn.RULE_builtinFunctionName}accept(t){return t.visitBuiltinFunctionName?t.visitBuiltinFunctionName(this):t.visitChildren(this)}},oN=class extends ga{constructor(t,e){super(t,e)}computeOptions(){return this.getRuleContext(0,RN)}plsqlBlock(){return this.getRuleContext(0,IN)}optionalSemi(){return this.getRuleContext(0,ON)}get ruleIndex(){return cn.RULE_plsqlFunction}accept(t){return t.visitPlsqlFunction?t.visitPlsqlFunction(this):t.visitChildren(this)}},RN=class extends ga{constructor(t,e){super(t,e)}computeOption(t){return void 0===t?this.getRuleContexts(AN):this.getRuleContext(t,AN)}get ruleIndex(){return cn.RULE_computeOptions}accept(t){return t.visitComputeOptions?t.visitComputeOptions(this):t.visitChildren(this)}},AN=class extends ga{constructor(t,e){super(t,e)}sharp(){return this.getRuleContext(0,SN)}OPTION(){return this.getToken(cn.OPTION,0)}DUMP(){return this.getToken(cn.DUMP,0)}PRINT_STRICT_PARAMS(){return this.getToken(cn.PRINT_STRICT_PARAMS,0)}optionValue(){return this.getRuleContext(0,lN)}VARIABLE_CONFLICT(){return this.getToken(cn.VARIABLE_CONFLICT,0)}ERROR(){return this.getToken(cn.ERROR,0)}USE_VARIABLE(){return this.getToken(cn.USE_VARIABLE,0)}USE_COLUMN(){return this.getToken(cn.USE_COLUMN,0)}get ruleIndex(){return cn.RULE_computeOption}accept(t){return t.visitComputeOption?t.visitComputeOption(this):t.visitChildren(this)}},SN=class extends ga{constructor(t,e){super(t,e)}Operator(){return this.getToken(cn.Operator,0)}get ruleIndex(){return cn.RULE_sharp}accept(t){return t.visitSharp?t.visitSharp(this):t.visitChildren(this)}},lN=class extends ga{constructor(t,e){super(t,e)}sconst(){return this.getRuleContext(0,Qu)}reservedKeyword(){return this.getRuleContext(0,EN)}plsqlUnreservedKeyword(){return this.getRuleContext(0,rC)}unreservedKeyword(){return this.getRuleContext(0,cN)}get ruleIndex(){return cn.RULE_optionValue}accept(t){return t.visitOptionValue?t.visitOptionValue(this):t.visitChildren(this)}},ON=class extends ga{constructor(t,e){super(t,e)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_optionalSemi}accept(t){return t.visitOptionalSemi?t.visitOptionalSemi(this):t.visitChildren(this)}},IN=class extends ga{constructor(t,e){super(t,e)}declareSection(){return this.getRuleContext(0,uN)}BEGIN_P(){return this.getToken(cn.BEGIN_P,0)}procedureSection(){return this.getRuleContext(0,fN)}exceptionSection(){return this.getRuleContext(0,JL)}END_P(){return this.getToken(cn.END_P,0)}optionalLabel(){return this.getRuleContext(0,eC)}get ruleIndex(){return cn.RULE_plsqlBlock}accept(t){return t.visitPlsqlBlock?t.visitPlsqlBlock(this):t.visitChildren(this)}},uN=class extends ga{constructor(t,e){super(t,e)}optionalBlockLabel(){return this.getRuleContext(0,$L)}declareStart(){return this.getRuleContext(0,NN)}declareStatements(){return this.getRuleContext(0,LN)}get ruleIndex(){return cn.RULE_declareSection}accept(t){return t.visitDeclareSection?t.visitDeclareSection(this):t.visitChildren(this)}},NN=class extends ga{constructor(t,e){super(t,e)}DECLARE(){return this.getToken(cn.DECLARE,0)}get ruleIndex(){return cn.RULE_declareStart}accept(t){return t.visitDeclareStart?t.visitDeclareStart(this):t.visitChildren(this)}},LN=class extends ga{constructor(t,e){super(t,e)}declareStatement(t){return void 0===t?this.getRuleContexts(_N):this.getRuleContext(t,_N)}get ruleIndex(){return cn.RULE_declareStatements}accept(t){return t.visitDeclareStatements?t.visitDeclareStatements(this):t.visitChildren(this)}},CN=class extends ga{constructor(t,e){super(t,e)}LESS_LESS(){return this.getToken(cn.LESS_LESS,0)}anyIdentifier(){return this.getRuleContext(0,aC)}GREATER_GREATER(){return this.getToken(cn.GREATER_GREATER,0)}get ruleIndex(){return cn.RULE_labelDeclaration}accept(t){return t.visitLabelDeclaration?t.visitLabelDeclaration(this):t.visitChildren(this)}},_N=class extends ga{constructor(t,e){super(t,e)}declareStatement2(){return this.getRuleContext(0,PN)}DECLARE(){return this.getToken(cn.DECLARE,0)}labelDeclaration(){return this.getRuleContext(0,CN)}get ruleIndex(){return cn.RULE_declareStatement}accept(t){return t.visitDeclareStatement?t.visitDeclareStatement(this):t.visitChildren(this)}},PN=class extends ga{constructor(t,e){super(t,e)}declareVarname(){return this.getRuleContext(0,xN)}SEMI(){return this.getToken(cn.SEMI,0)}ALIAS(){return this.getToken(cn.ALIAS,0)}FOR(){return this.getToken(cn.FOR,0)}declareAliasItem(){return this.getRuleContext(0,gN)}declareConst(){return this.getRuleContext(0,kN)}declareDatatype(){return this.getRuleContext(0,HN)}declareCollate(){return this.getRuleContext(0,GN)}declareNotNull(){return this.getRuleContext(0,FN)}declareDefaultValue(){return this.getRuleContext(0,vN)}optionalScrollable(){return this.getRuleContext(0,MN)}CURSOR(){return this.getToken(cn.CURSOR,0)}declareCursorArgs(){return this.getRuleContext(0,UN)}declareIsOrFor(){return this.getRuleContext(0,pN)}declareCursorQuery(){return this.getRuleContext(0,dN)}get ruleIndex(){return cn.RULE_declareStatement2}accept(t){return t.visitDeclareStatement2?t.visitDeclareStatement2(this):t.visitChildren(this)}},MN=class extends ga{constructor(t,e){super(t,e)}NO(){return this.getToken(cn.NO,0)}SCROLL(){return this.getToken(cn.SCROLL,0)}get ruleIndex(){return cn.RULE_optionalScrollable}accept(t){return t.visitOptionalScrollable?t.visitOptionalScrollable(this):t.visitChildren(this)}},dN=class extends ga{constructor(t,e){super(t,e)}selectStatement(){return this.getRuleContext(0,il)}get ruleIndex(){return cn.RULE_declareCursorQuery}accept(t){return t.visitDeclareCursorQuery?t.visitDeclareCursorQuery(this):t.visitChildren(this)}},UN=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}declareCursorArglist(){return this.getRuleContext(0,mN)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}get ruleIndex(){return cn.RULE_declareCursorArgs}accept(t){return t.visitDeclareCursorArgs?t.visitDeclareCursorArgs(this):t.visitChildren(this)}},mN=class extends ga{constructor(t,e){super(t,e)}declareCursorArg(t){return void 0===t?this.getRuleContexts(DN):this.getRuleContext(t,DN)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_declareCursorArglist}accept(t){return t.visitDeclareCursorArglist?t.visitDeclareCursorArglist(this):t.visitChildren(this)}},DN=class extends ga{constructor(t,e){super(t,e)}declareVarname(){return this.getRuleContext(0,xN)}declareDatatype(){return this.getRuleContext(0,HN)}get ruleIndex(){return cn.RULE_declareCursorArg}accept(t){return t.visitDeclareCursorArg?t.visitDeclareCursorArg(this):t.visitChildren(this)}},pN=class extends ga{constructor(t,e){super(t,e)}IS(){return this.getToken(cn.IS,0)}FOR(){return this.getToken(cn.FOR,0)}get ruleIndex(){return cn.RULE_declareIsOrFor}accept(t){return t.visitDeclareIsOrFor?t.visitDeclareIsOrFor(this):t.visitChildren(this)}},gN=class extends ga{constructor(t,e){super(t,e)}PARAM(){return this.getToken(cn.PARAM,0)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_declareAliasItem}accept(t){return t.visitDeclareAliasItem?t.visitDeclareAliasItem(this):t.visitChildren(this)}},xN=class extends ga{constructor(t,e){super(t,e)}anyIdentifier(){return this.getRuleContext(0,aC)}get ruleIndex(){return cn.RULE_declareVarname}accept(t){return t.visitDeclareVarname?t.visitDeclareVarname(this):t.visitChildren(this)}},kN=class extends ga{constructor(t,e){super(t,e)}CONSTANT(){return this.getToken(cn.CONSTANT,0)}get ruleIndex(){return cn.RULE_declareConst}accept(t){return t.visitDeclareConst?t.visitDeclareConst(this):t.visitChildren(this)}},HN=class extends ga{constructor(t,e){super(t,e)}typeName(){return this.getRuleContext(0,LO)}get ruleIndex(){return cn.RULE_declareDatatype}accept(t){return t.visitDeclareDatatype?t.visitDeclareDatatype(this):t.visitChildren(this)}},GN=class extends ga{constructor(t,e){super(t,e)}COLLATE(){return this.getToken(cn.COLLATE,0)}anyName(){return this.getRuleContext(0,mo)}get ruleIndex(){return cn.RULE_declareCollate}accept(t){return t.visitDeclareCollate?t.visitDeclareCollate(this):t.visitChildren(this)}},FN=class extends ga{constructor(t,e){super(t,e)}NOT(){return this.getToken(cn.NOT,0)}NULL_P(){return this.getToken(cn.NULL_P,0)}get ruleIndex(){return cn.RULE_declareNotNull}accept(t){return t.visitDeclareNotNull?t.visitDeclareNotNull(this):t.visitChildren(this)}},vN=class extends ga{constructor(t,e){super(t,e)}declareDefaultKey(){return this.getRuleContext(0,BN)}sqlExpression(){return this.getRuleContext(0,iC)}get ruleIndex(){return cn.RULE_declareDefaultValue}accept(t){return t.visitDeclareDefaultValue?t.visitDeclareDefaultValue(this):t.visitChildren(this)}},BN=class extends ga{constructor(t,e){super(t,e)}assignOperator(){return this.getRuleContext(0,yN)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}get ruleIndex(){return cn.RULE_declareDefaultKey}accept(t){return t.visitDeclareDefaultKey?t.visitDeclareDefaultKey(this):t.visitChildren(this)}},yN=class extends ga{constructor(t,e){super(t,e)}EQUAL(){return this.getToken(cn.EQUAL,0)}COLON_EQUALS(){return this.getToken(cn.COLON_EQUALS,0)}get ruleIndex(){return cn.RULE_assignOperator}accept(t){return t.visitAssignOperator?t.visitAssignOperator(this):t.visitChildren(this)}},fN=class extends ga{constructor(t,e){super(t,e)}proceduralStatement(t){return void 0===t?this.getRuleContexts(YN):this.getRuleContext(t,YN)}get ruleIndex(){return cn.RULE_procedureSection}accept(t){return t.visitProcedureSection?t.visitProcedureSection(this):t.visitChildren(this)}},YN=class extends ga{constructor(t,e){super(t,e)}plsqlBlock(){return this.getRuleContext(0,IN)}SEMI(){return this.getToken(cn.SEMI,0)}statementReturn(){return this.getRuleContext(0,NL)}statementRaise(){return this.getRuleContext(0,CL)}statementAssign(){return this.getRuleContext(0,VN)}statementIf(){return this.getRuleContext(0,zN)}statementCase(){return this.getRuleContext(0,eL)}statementLoop(){return this.getRuleContext(0,cL)}statementWhile(){return this.getRuleContext(0,nL)}statementFor(){return this.getRuleContext(0,hL)}statementForeachA(){return this.getRuleContext(0,lL)}statementExit(){return this.getRuleContext(0,IL)}statementAssert(){return this.getRuleContext(0,UL)}statementExecSql(){return this.getRuleContext(0,pL)}statementDynExecute(){return this.getRuleContext(0,gL)}statementPerform(){return this.getRuleContext(0,wN)}statementCall(){return this.getRuleContext(0,bN)}statementGetDiagram(){return this.getRuleContext(0,XN)}statementOpen(){return this.getRuleContext(0,GL)}statementFetch(){return this.getRuleContext(0,vL)}statementMove(){return this.getRuleContext(0,YL)}statementClose(){return this.getRuleContext(0,wL)}statementNull(){return this.getRuleContext(0,bL)}statementCommit(){return this.getRuleContext(0,WL)}statementRollback(){return this.getRuleContext(0,VL)}statementSet(){return this.getRuleContext(0,KL)}get ruleIndex(){return cn.RULE_proceduralStatement}accept(t){return t.visitProceduralStatement?t.visitProceduralStatement(this):t.visitChildren(this)}},wN=class extends ga{constructor(t,e){super(t,e)}PERFORM(){return this.getToken(cn.PERFORM,0)}expressionUntilSemi(){return this.getRuleContext(0,nC)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementPerform}accept(t){return t.visitStatementPerform?t.visitStatementPerform(this):t.visitChildren(this)}},bN=class extends ga{constructor(t,e){super(t,e)}CALL(){return this.getToken(cn.CALL,0)}anyIdentifier(){return this.getRuleContext(0,aC)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}optionalExpressionList(){return this.getRuleContext(0,WN)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}SEMI(){return this.getToken(cn.SEMI,0)}DO(){return this.getToken(cn.DO,0)}get ruleIndex(){return cn.RULE_statementCall}accept(t){return t.visitStatementCall?t.visitStatementCall(this):t.visitChildren(this)}},WN=class extends ga{constructor(t,e){super(t,e)}expressionList(){return this.getRuleContext(0,ZI)}get ruleIndex(){return cn.RULE_optionalExpressionList}accept(t){return t.visitOptionalExpressionList?t.visitOptionalExpressionList(this):t.visitChildren(this)}},VN=class extends ga{constructor(t,e){super(t,e)}assignVariable(){return this.getRuleContext(0,jN)}assignOperator(){return this.getRuleContext(0,yN)}sqlExpression(){return this.getRuleContext(0,iC)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementAssign}accept(t){return t.visitStatementAssign?t.visitStatementAssign(this):t.visitChildren(this)}},XN=class extends ga{constructor(t,e){super(t,e)}GET(){return this.getToken(cn.GET,0)}optionalGetDiagramArea(){return this.getRuleContext(0,KN)}DIAGNOSTICS(){return this.getToken(cn.DIAGNOSTICS,0)}getDiagramList(){return this.getRuleContext(0,QN)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementGetDiagram}accept(t){return t.visitStatementGetDiagram?t.visitStatementGetDiagram(this):t.visitChildren(this)}},KN=class extends ga{constructor(t,e){super(t,e)}CURRENT_P(){return this.getToken(cn.CURRENT_P,0)}STACKED(){return this.getToken(cn.STACKED,0)}get ruleIndex(){return cn.RULE_optionalGetDiagramArea}accept(t){return t.visitOptionalGetDiagramArea?t.visitOptionalGetDiagramArea(this):t.visitChildren(this)}},QN=class extends ga{constructor(t,e){super(t,e)}getDiagramListItem(t){return void 0===t?this.getRuleContexts(JN):this.getRuleContext(t,JN)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_getDiagramList}accept(t){return t.visitGetDiagramList?t.visitGetDiagramList(this):t.visitChildren(this)}},JN=class extends ga{constructor(t,e){super(t,e)}getDiagramTarget(){return this.getRuleContext(0,qN)}assignOperator(){return this.getRuleContext(0,yN)}getDiagramItem(){return this.getRuleContext(0,ZN)}get ruleIndex(){return cn.RULE_getDiagramListItem}accept(t){return t.visitGetDiagramListItem?t.visitGetDiagramListItem(this):t.visitChildren(this)}},ZN=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}get ruleIndex(){return cn.RULE_getDiagramItem}accept(t){return t.visitGetDiagramItem?t.visitGetDiagramItem(this):t.visitChildren(this)}},qN=class extends ga{constructor(t,e){super(t,e)}assignVariable(){return this.getRuleContext(0,jN)}get ruleIndex(){return cn.RULE_getDiagramTarget}accept(t){return t.visitGetDiagramTarget?t.visitGetDiagramTarget(this):t.visitChildren(this)}},jN=class extends ga{constructor(t,e){super(t,e)}anyName(){return this.getRuleContext(0,mo)}PARAM(){return this.getToken(cn.PARAM,0)}OPEN_BRACKET(t){return void 0===t?this.getTokens(cn.OPEN_BRACKET):this.getToken(cn.OPEN_BRACKET,t)}expressionUntilRightbracket(t){return void 0===t?this.getRuleContexts(hC):this.getRuleContext(t,hC)}CLOSE_BRACKET(t){return void 0===t?this.getTokens(cn.CLOSE_BRACKET):this.getToken(cn.CLOSE_BRACKET,t)}get ruleIndex(){return cn.RULE_assignVariable}accept(t){return t.visitAssignVariable?t.visitAssignVariable(this):t.visitChildren(this)}},zN=class extends ga{constructor(t,e){super(t,e)}IF_P(t){return void 0===t?this.getTokens(cn.IF_P):this.getToken(cn.IF_P,t)}expressionUntilThen(){return this.getRuleContext(0,cC)}THEN(){return this.getToken(cn.THEN,0)}procedureSection(){return this.getRuleContext(0,fN)}statementElsifs(){return this.getRuleContext(0,$N)}statementElse(){return this.getRuleContext(0,tL)}END_P(){return this.getToken(cn.END_P,0)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementIf}accept(t){return t.visitStatementIf?t.visitStatementIf(this):t.visitChildren(this)}},$N=class extends ga{constructor(t,e){super(t,e)}ELSIF(t){return void 0===t?this.getTokens(cn.ELSIF):this.getToken(cn.ELSIF,t)}expression1(t){return void 0===t?this.getRuleContexts(wO):this.getRuleContext(t,wO)}THEN(t){return void 0===t?this.getTokens(cn.THEN):this.getToken(cn.THEN,t)}procedureSection(t){return void 0===t?this.getRuleContexts(fN):this.getRuleContext(t,fN)}get ruleIndex(){return cn.RULE_statementElsifs}accept(t){return t.visitStatementElsifs?t.visitStatementElsifs(this):t.visitChildren(this)}},tL=class extends ga{constructor(t,e){super(t,e)}ELSE(){return this.getToken(cn.ELSE,0)}procedureSection(){return this.getRuleContext(0,fN)}get ruleIndex(){return cn.RULE_statementElse}accept(t){return t.visitStatementElse?t.visitStatementElse(this):t.visitChildren(this)}},eL=class extends ga{constructor(t,e){super(t,e)}CASE(t){return void 0===t?this.getTokens(cn.CASE):this.getToken(cn.CASE,t)}optionalExpressionUntilWhen(){return this.getRuleContext(0,sL)}caseWhenList(){return this.getRuleContext(0,aL)}optionalCaseElse(){return this.getRuleContext(0,iL)}END_P(){return this.getToken(cn.END_P,0)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementCase}accept(t){return t.visitStatementCase?t.visitStatementCase(this):t.visitChildren(this)}},sL=class extends ga{constructor(t,e){super(t,e)}sqlExpression(){return this.getRuleContext(0,iC)}get ruleIndex(){return cn.RULE_optionalExpressionUntilWhen}accept(t){return t.visitOptionalExpressionUntilWhen?t.visitOptionalExpressionUntilWhen(this):t.visitChildren(this)}},aL=class extends ga{constructor(t,e){super(t,e)}caseWhen(t){return void 0===t?this.getRuleContexts(rL):this.getRuleContext(t,rL)}get ruleIndex(){return cn.RULE_caseWhenList}accept(t){return t.visitCaseWhenList?t.visitCaseWhenList(this):t.visitChildren(this)}},rL=class extends ga{constructor(t,e){super(t,e)}WHEN(){return this.getToken(cn.WHEN,0)}expressionList(){return this.getRuleContext(0,ZI)}THEN(){return this.getToken(cn.THEN,0)}procedureSection(){return this.getRuleContext(0,fN)}get ruleIndex(){return cn.RULE_caseWhen}accept(t){return t.visitCaseWhen?t.visitCaseWhen(this):t.visitChildren(this)}},iL=class extends ga{constructor(t,e){super(t,e)}ELSE(){return this.getToken(cn.ELSE,0)}procedureSection(){return this.getRuleContext(0,fN)}get ruleIndex(){return cn.RULE_optionalCaseElse}accept(t){return t.visitOptionalCaseElse?t.visitOptionalCaseElse(this):t.visitChildren(this)}},cL=class extends ga{constructor(t,e){super(t,e)}optionalLoopLabel(){return this.getRuleContext(0,tC)}loopBody(){return this.getRuleContext(0,DL)}get ruleIndex(){return cn.RULE_statementLoop}accept(t){return t.visitStatementLoop?t.visitStatementLoop(this):t.visitChildren(this)}},nL=class extends ga{constructor(t,e){super(t,e)}optionalLoopLabel(){return this.getRuleContext(0,tC)}WHILE(){return this.getToken(cn.WHILE,0)}expressionUntilLoop(){return this.getRuleContext(0,EC)}loopBody(){return this.getRuleContext(0,DL)}get ruleIndex(){return cn.RULE_statementWhile}accept(t){return t.visitStatementWhile?t.visitStatementWhile(this):t.visitChildren(this)}},hL=class extends ga{constructor(t,e){super(t,e)}optionalLoopLabel(){return this.getRuleContext(0,tC)}FOR(){return this.getToken(cn.FOR,0)}forControl(){return this.getRuleContext(0,EL)}loopBody(){return this.getRuleContext(0,DL)}get ruleIndex(){return cn.RULE_statementFor}accept(t){return t.visitStatementFor?t.visitStatementFor(this):t.visitChildren(this)}},EL=class extends ga{constructor(t,e){super(t,e)}forVariable(){return this.getRuleContext(0,SL)}IN_P(){return this.getToken(cn.IN_P,0)}cursorName(){return this.getRuleContext(0,al)}optionalCursorParameters(){return this.getRuleContext(0,oL)}selectStatement(){return this.getRuleContext(0,il)}explainStatement(){return this.getRuleContext(0,CS)}EXECUTE(){return this.getToken(cn.EXECUTE,0)}expression1(t){return void 0===t?this.getRuleContexts(wO):this.getRuleContext(t,wO)}optionalForUsingExpression(){return this.getRuleContext(0,TL)}optionalReverse(){return this.getRuleContext(0,RL)}DOT_DOT(){return this.getToken(cn.DOT_DOT,0)}optionalByExpression(){return this.getRuleContext(0,AL)}get ruleIndex(){return cn.RULE_forControl}accept(t){return t.visitForControl?t.visitForControl(this):t.visitChildren(this)}},TL=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}expressionList(){return this.getRuleContext(0,ZI)}get ruleIndex(){return cn.RULE_optionalForUsingExpression}accept(t){return t.visitOptionalForUsingExpression?t.visitOptionalForUsingExpression(this):t.visitChildren(this)}},oL=class extends ga{constructor(t,e){super(t,e)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}expression1(t){return void 0===t?this.getRuleContexts(wO):this.getRuleContext(t,wO)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_optionalCursorParameters}accept(t){return t.visitOptionalCursorParameters?t.visitOptionalCursorParameters(this):t.visitChildren(this)}},RL=class extends ga{constructor(t,e){super(t,e)}REVERSE(){return this.getToken(cn.REVERSE,0)}get ruleIndex(){return cn.RULE_optionalReverse}accept(t){return t.visitOptionalReverse?t.visitOptionalReverse(this):t.visitChildren(this)}},AL=class extends ga{constructor(t,e){super(t,e)}BY(){return this.getToken(cn.BY,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_optionalByExpression}accept(t){return t.visitOptionalByExpression?t.visitOptionalByExpression(this):t.visitChildren(this)}},SL=class extends ga{constructor(t,e){super(t,e)}anyNameList(){return this.getRuleContext(0,Uo)}get ruleIndex(){return cn.RULE_forVariable}accept(t){return t.visitForVariable?t.visitForVariable(this):t.visitChildren(this)}},lL=class extends ga{constructor(t,e){super(t,e)}optionalLoopLabel(){return this.getRuleContext(0,tC)}FOREACH(){return this.getToken(cn.FOREACH,0)}forVariable(){return this.getRuleContext(0,SL)}foreachSlice(){return this.getRuleContext(0,OL)}IN_P(){return this.getToken(cn.IN_P,0)}ARRAY(){return this.getToken(cn.ARRAY,0)}expression1(){return this.getRuleContext(0,wO)}loopBody(){return this.getRuleContext(0,DL)}get ruleIndex(){return cn.RULE_statementForeachA}accept(t){return t.visitStatementForeachA?t.visitStatementForeachA(this):t.visitChildren(this)}},OL=class extends ga{constructor(t,e){super(t,e)}SLICE(){return this.getToken(cn.SLICE,0)}iconst(){return this.getRuleContext(0,Ku)}get ruleIndex(){return cn.RULE_foreachSlice}accept(t){return t.visitForeachSlice?t.visitForeachSlice(this):t.visitChildren(this)}},IL=class extends ga{constructor(t,e){super(t,e)}exitType(){return this.getRuleContext(0,uL)}optionalLabel(){return this.getRuleContext(0,eC)}optionalExitCondition(){return this.getRuleContext(0,sC)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementExit}accept(t){return t.visitStatementExit?t.visitStatementExit(this):t.visitChildren(this)}},uL=class extends ga{constructor(t,e){super(t,e)}EXIT(){return this.getToken(cn.EXIT,0)}CONTINUE_P(){return this.getToken(cn.CONTINUE_P,0)}get ruleIndex(){return cn.RULE_exitType}accept(t){return t.visitExitType?t.visitExitType(this):t.visitChildren(this)}},NL=class extends ga{constructor(t,e){super(t,e)}RETURN(){return this.getToken(cn.RETURN,0)}SEMI(){return this.getToken(cn.SEMI,0)}NEXT(){return this.getToken(cn.NEXT,0)}sqlExpression(){return this.getRuleContext(0,iC)}QUERY(){return this.getToken(cn.QUERY,0)}optionalReturnResult(){return this.getRuleContext(0,LL)}EXECUTE(){return this.getToken(cn.EXECUTE,0)}expression1(){return this.getRuleContext(0,wO)}optionalForUsingExpression(){return this.getRuleContext(0,TL)}selectStatement(){return this.getRuleContext(0,il)}get ruleIndex(){return cn.RULE_statementReturn}accept(t){return t.visitStatementReturn?t.visitStatementReturn(this):t.visitChildren(this)}},LL=class extends ga{constructor(t,e){super(t,e)}sqlExpression(){return this.getRuleContext(0,iC)}get ruleIndex(){return cn.RULE_optionalReturnResult}accept(t){return t.visitOptionalReturnResult?t.visitOptionalReturnResult(this):t.visitChildren(this)}},CL=class extends ga{constructor(t,e){super(t,e)}RAISE(){return this.getToken(cn.RAISE,0)}optionalStatementRaiseLevel(){return this.getRuleContext(0,_L)}sconst(){return this.getRuleContext(0,Qu)}optionalRaiseList(){return this.getRuleContext(0,PL)}optionalRaiseUsing(){return this.getRuleContext(0,ML)}SEMI(){return this.getToken(cn.SEMI,0)}identifier(){return this.getRuleContext(0,rN)}SQLSTATE(){return this.getToken(cn.SQLSTATE,0)}get ruleIndex(){return cn.RULE_statementRaise}accept(t){return t.visitStatementRaise?t.visitStatementRaise(this):t.visitChildren(this)}},_L=class extends ga{constructor(t,e){super(t,e)}DEBUG(){return this.getToken(cn.DEBUG,0)}LOG(){return this.getToken(cn.LOG,0)}INFO(){return this.getToken(cn.INFO,0)}NOTICE(){return this.getToken(cn.NOTICE,0)}WARNING(){return this.getToken(cn.WARNING,0)}EXCEPTION(){return this.getToken(cn.EXCEPTION,0)}get ruleIndex(){return cn.RULE_optionalStatementRaiseLevel}accept(t){return t.visitOptionalStatementRaiseLevel?t.visitOptionalStatementRaiseLevel(this):t.visitChildren(this)}},PL=class extends ga{constructor(t,e){super(t,e)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}expression1(t){return void 0===t?this.getRuleContexts(wO):this.getRuleContext(t,wO)}get ruleIndex(){return cn.RULE_optionalRaiseList}accept(t){return t.visitOptionalRaiseList?t.visitOptionalRaiseList(this):t.visitChildren(this)}},ML=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}optionalRaiseUsingElement(t){return void 0===t?this.getRuleContexts(dL):this.getRuleContext(t,dL)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_optionalRaiseUsing}accept(t){return t.visitOptionalRaiseUsing?t.visitOptionalRaiseUsing(this):t.visitChildren(this)}},dL=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,rN)}EQUAL(){return this.getToken(cn.EQUAL,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_optionalRaiseUsingElement}accept(t){return t.visitOptionalRaiseUsingElement?t.visitOptionalRaiseUsingElement(this):t.visitChildren(this)}},UL=class extends ga{constructor(t,e){super(t,e)}ASSERT(){return this.getToken(cn.ASSERT,0)}sqlExpression(){return this.getRuleContext(0,iC)}optionalStatementAssertMessage(){return this.getRuleContext(0,mL)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementAssert}accept(t){return t.visitStatementAssert?t.visitStatementAssert(this):t.visitChildren(this)}},mL=class extends ga{constructor(t,e){super(t,e)}COMMA(){return this.getToken(cn.COMMA,0)}sqlExpression(){return this.getRuleContext(0,iC)}get ruleIndex(){return cn.RULE_optionalStatementAssertMessage}accept(t){return t.visitOptionalStatementAssertMessage?t.visitOptionalStatementAssertMessage(this):t.visitChildren(this)}},DL=class extends ga{constructor(t,e){super(t,e)}LOOP(t){return void 0===t?this.getTokens(cn.LOOP):this.getToken(cn.LOOP,t)}procedureSection(){return this.getRuleContext(0,fN)}END_P(){return this.getToken(cn.END_P,0)}optionalLabel(){return this.getRuleContext(0,eC)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_loopBody}accept(t){return t.visitLoopBody?t.visitLoopBody(this):t.visitChildren(this)}},pL=class extends ga{constructor(t,e){super(t,e)}makeExecuteSqlStatement(){return this.getRuleContext(0,TC)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementExecSql}accept(t){return t.visitStatementExecSql?t.visitStatementExecSql(this):t.visitChildren(this)}},gL=class extends ga{constructor(t,e){super(t,e)}EXECUTE(){return this.getToken(cn.EXECUTE,0)}expression1(){return this.getRuleContext(0,wO)}SEMI(){return this.getToken(cn.SEMI,0)}optionalExecuteInto(){return this.getRuleContext(0,HL)}optionalExecuteUsing(){return this.getRuleContext(0,xL)}get ruleIndex(){return cn.RULE_statementDynExecute}accept(t){return t.visitStatementDynExecute?t.visitStatementDynExecute(this):t.visitChildren(this)}},xL=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(cn.USING,0)}optionalExecuteUsingList(){return this.getRuleContext(0,kL)}get ruleIndex(){return cn.RULE_optionalExecuteUsing}accept(t){return t.visitOptionalExecuteUsing?t.visitOptionalExecuteUsing(this):t.visitChildren(this)}},kL=class extends ga{constructor(t,e){super(t,e)}expression1(t){return void 0===t?this.getRuleContexts(wO):this.getRuleContext(t,wO)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_optionalExecuteUsingList}accept(t){return t.visitOptionalExecuteUsingList?t.visitOptionalExecuteUsingList(this):t.visitChildren(this)}},HL=class extends ga{constructor(t,e){super(t,e)}INTO(){return this.getToken(cn.INTO,0)}intoTarget(){return this.getRuleContext(0,BL)}STRICT_P(){return this.getToken(cn.STRICT_P,0)}get ruleIndex(){return cn.RULE_optionalExecuteInto}accept(t){return t.visitOptionalExecuteInto?t.visitOptionalExecuteInto(this):t.visitChildren(this)}},GL=class extends ga{constructor(t,e){super(t,e)}OPEN(){return this.getToken(cn.OPEN,0)}SEMI(){return this.getToken(cn.SEMI,0)}cursorVariable(){return this.getRuleContext(0,QL)}SCROLL(){return this.getToken(cn.SCROLL,0)}FOR(){return this.getToken(cn.FOR,0)}columnId(){return this.getRuleContext(0,$u)}selectStatement(){return this.getRuleContext(0,il)}EXECUTE(){return this.getToken(cn.EXECUTE,0)}sqlExpression(){return this.getRuleContext(0,iC)}USING(){return this.getToken(cn.USING,0)}expressionList(){return this.getRuleContext(0,ZI)}NO(){return this.getToken(cn.NO,0)}OPEN_PAREN(){return this.getToken(cn.OPEN_PAREN,0)}optionalOpenBoundListItem(t){return void 0===t?this.getRuleContexts(FL):this.getRuleContext(t,FL)}CLOSE_PAREN(){return this.getToken(cn.CLOSE_PAREN,0)}COMMA(t){return void 0===t?this.getTokens(cn.COMMA):this.getToken(cn.COMMA,t)}get ruleIndex(){return cn.RULE_statementOpen}accept(t){return t.visitStatementOpen?t.visitStatementOpen(this):t.visitChildren(this)}},FL=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}COLON_EQUALS(){return this.getToken(cn.COLON_EQUALS,0)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_optionalOpenBoundListItem}accept(t){return t.visitOptionalOpenBoundListItem?t.visitOptionalOpenBoundListItem(this):t.visitChildren(this)}},vL=class extends ga{constructor(t,e){super(t,e)}FETCH(){return this.getToken(cn.FETCH,0)}optionalCursorFrom(){return this.getRuleContext(0,yL)}cursorVariable(){return this.getRuleContext(0,QL)}INTO(){return this.getToken(cn.INTO,0)}intoTarget(){return this.getRuleContext(0,BL)}SEMI(){return this.getToken(cn.SEMI,0)}optionalFetchDirection(){return this.getRuleContext(0,fL)}get ruleIndex(){return cn.RULE_statementFetch}accept(t){return t.visitStatementFetch?t.visitStatementFetch(this):t.visitChildren(this)}},BL=class extends ga{constructor(t,e){super(t,e)}expressionList(){return this.getRuleContext(0,ZI)}get ruleIndex(){return cn.RULE_intoTarget}accept(t){return t.visitIntoTarget?t.visitIntoTarget(this):t.visitChildren(this)}},yL=class extends ga{constructor(t,e){super(t,e)}FROM(){return this.getToken(cn.FROM,0)}IN_P(){return this.getToken(cn.IN_P,0)}get ruleIndex(){return cn.RULE_optionalCursorFrom}accept(t){return t.visitOptionalCursorFrom?t.visitOptionalCursorFrom(this):t.visitChildren(this)}},fL=class extends ga{constructor(t,e){super(t,e)}NEXT(){return this.getToken(cn.NEXT,0)}PRIOR(){return this.getToken(cn.PRIOR,0)}FIRST_P(){return this.getToken(cn.FIRST_P,0)}LAST_P(){return this.getToken(cn.LAST_P,0)}ABSOLUTE_P(){return this.getToken(cn.ABSOLUTE_P,0)}expression1(){return this.getRuleContext(0,wO)}RELATIVE_P(){return this.getToken(cn.RELATIVE_P,0)}ALL(){return this.getToken(cn.ALL,0)}FORWARD(){return this.getToken(cn.FORWARD,0)}BACKWARD(){return this.getToken(cn.BACKWARD,0)}get ruleIndex(){return cn.RULE_optionalFetchDirection}accept(t){return t.visitOptionalFetchDirection?t.visitOptionalFetchDirection(this):t.visitChildren(this)}},YL=class extends ga{constructor(t,e){super(t,e)}MOVE(){return this.getToken(cn.MOVE,0)}optionalFetchDirection(){return this.getRuleContext(0,fL)}cursorVariable(){return this.getRuleContext(0,QL)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementMove}accept(t){return t.visitStatementMove?t.visitStatementMove(this):t.visitChildren(this)}},wL=class extends ga{constructor(t,e){super(t,e)}CLOSE(){return this.getToken(cn.CLOSE,0)}cursorVariable(){return this.getRuleContext(0,QL)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementClose}accept(t){return t.visitStatementClose?t.visitStatementClose(this):t.visitChildren(this)}},bL=class extends ga{constructor(t,e){super(t,e)}NULL_P(){return this.getToken(cn.NULL_P,0)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementNull}accept(t){return t.visitStatementNull?t.visitStatementNull(this):t.visitChildren(this)}},WL=class extends ga{constructor(t,e){super(t,e)}COMMIT(){return this.getToken(cn.COMMIT,0)}plsqlOptionalTransactionChain(){return this.getRuleContext(0,XL)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementCommit}accept(t){return t.visitStatementCommit?t.visitStatementCommit(this):t.visitChildren(this)}},VL=class extends ga{constructor(t,e){super(t,e)}ROLLBACK(){return this.getToken(cn.ROLLBACK,0)}plsqlOptionalTransactionChain(){return this.getRuleContext(0,XL)}SEMI(){return this.getToken(cn.SEMI,0)}get ruleIndex(){return cn.RULE_statementRollback}accept(t){return t.visitStatementRollback?t.visitStatementRollback(this):t.visitChildren(this)}},XL=class extends ga{constructor(t,e){super(t,e)}AND(){return this.getToken(cn.AND,0)}CHAIN(){return this.getToken(cn.CHAIN,0)}NO(){return this.getToken(cn.NO,0)}get ruleIndex(){return cn.RULE_plsqlOptionalTransactionChain}accept(t){return t.visitPlsqlOptionalTransactionChain?t.visitPlsqlOptionalTransactionChain(this):t.visitChildren(this)}},KL=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(cn.SET,0)}anyName(){return this.getRuleContext(0,mo)}TO(){return this.getToken(cn.TO,0)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}SEMI(){return this.getToken(cn.SEMI,0)}RESET(){return this.getToken(cn.RESET,0)}ALL(){return this.getToken(cn.ALL,0)}get ruleIndex(){return cn.RULE_statementSet}accept(t){return t.visitStatementSet?t.visitStatementSet(this):t.visitChildren(this)}},QL=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}PARAM(){return this.getToken(cn.PARAM,0)}get ruleIndex(){return cn.RULE_cursorVariable}accept(t){return t.visitCursorVariable?t.visitCursorVariable(this):t.visitChildren(this)}},JL=class extends ga{constructor(t,e){super(t,e)}EXCEPTION(){return this.getToken(cn.EXCEPTION,0)}procedureExceptions(){return this.getRuleContext(0,ZL)}get ruleIndex(){return cn.RULE_exceptionSection}accept(t){return t.visitExceptionSection?t.visitExceptionSection(this):t.visitChildren(this)}},ZL=class extends ga{constructor(t,e){super(t,e)}procedureException(t){return void 0===t?this.getRuleContexts(qL):this.getRuleContext(t,qL)}get ruleIndex(){return cn.RULE_procedureExceptions}accept(t){return t.visitProcedureExceptions?t.visitProcedureExceptions(this):t.visitChildren(this)}},qL=class extends ga{constructor(t,e){super(t,e)}WHEN(){return this.getToken(cn.WHEN,0)}procedureConditions(){return this.getRuleContext(0,jL)}THEN(){return this.getToken(cn.THEN,0)}procedureSection(){return this.getRuleContext(0,fN)}get ruleIndex(){return cn.RULE_procedureException}accept(t){return t.visitProcedureException?t.visitProcedureException(this):t.visitChildren(this)}},jL=class extends ga{constructor(t,e){super(t,e)}procedureCondition(t){return void 0===t?this.getRuleContexts(zL):this.getRuleContext(t,zL)}OR(t){return void 0===t?this.getTokens(cn.OR):this.getToken(cn.OR,t)}get ruleIndex(){return cn.RULE_procedureConditions}accept(t){return t.visitProcedureConditions?t.visitProcedureConditions(this):t.visitChildren(this)}},zL=class extends ga{constructor(t,e){super(t,e)}anyIdentifier(){return this.getRuleContext(0,aC)}SQLSTATE(){return this.getToken(cn.SQLSTATE,0)}sconst(){return this.getRuleContext(0,Qu)}get ruleIndex(){return cn.RULE_procedureCondition}accept(t){return t.visitProcedureCondition?t.visitProcedureCondition(this):t.visitChildren(this)}},$L=class extends ga{constructor(t,e){super(t,e)}labelDeclaration(){return this.getRuleContext(0,CN)}get ruleIndex(){return cn.RULE_optionalBlockLabel}accept(t){return t.visitOptionalBlockLabel?t.visitOptionalBlockLabel(this):t.visitChildren(this)}},tC=class extends ga{constructor(t,e){super(t,e)}labelDeclaration(){return this.getRuleContext(0,CN)}get ruleIndex(){return cn.RULE_optionalLoopLabel}accept(t){return t.visitOptionalLoopLabel?t.visitOptionalLoopLabel(this):t.visitChildren(this)}},eC=class extends ga{constructor(t,e){super(t,e)}anyIdentifier(){return this.getRuleContext(0,aC)}get ruleIndex(){return cn.RULE_optionalLabel}accept(t){return t.visitOptionalLabel?t.visitOptionalLabel(this):t.visitChildren(this)}},sC=class extends ga{constructor(t,e){super(t,e)}WHEN(){return this.getToken(cn.WHEN,0)}expressionUntilSemi(){return this.getRuleContext(0,nC)}get ruleIndex(){return cn.RULE_optionalExitCondition}accept(t){return t.visitOptionalExitCondition?t.visitOptionalExitCondition(this):t.visitChildren(this)}},aC=class extends ga{constructor(t,e){super(t,e)}columnId(){return this.getRuleContext(0,$u)}plsqlUnreservedKeyword(){return this.getRuleContext(0,rC)}get ruleIndex(){return cn.RULE_anyIdentifier}accept(t){return t.visitAnyIdentifier?t.visitAnyIdentifier(this):t.visitChildren(this)}},rC=class extends ga{constructor(t,e){super(t,e)}ABSOLUTE_P(){return this.getToken(cn.ABSOLUTE_P,0)}ALIAS(){return this.getToken(cn.ALIAS,0)}AND(){return this.getToken(cn.AND,0)}ARRAY(){return this.getToken(cn.ARRAY,0)}ASSERT(){return this.getToken(cn.ASSERT,0)}BACKWARD(){return this.getToken(cn.BACKWARD,0)}CALL(){return this.getToken(cn.CALL,0)}CHAIN(){return this.getToken(cn.CHAIN,0)}CLOSE(){return this.getToken(cn.CLOSE,0)}COLLATE(){return this.getToken(cn.COLLATE,0)}COLUMN(){return this.getToken(cn.COLUMN,0)}COMMIT(){return this.getToken(cn.COMMIT,0)}CONSTANT(){return this.getToken(cn.CONSTANT,0)}CONSTRAINT(){return this.getToken(cn.CONSTRAINT,0)}CONTINUE_P(){return this.getToken(cn.CONTINUE_P,0)}CURRENT_P(){return this.getToken(cn.CURRENT_P,0)}CURSOR(){return this.getToken(cn.CURSOR,0)}DEBUG(){return this.getToken(cn.DEBUG,0)}DEFAULT(){return this.getToken(cn.DEFAULT,0)}DIAGNOSTICS(){return this.getToken(cn.DIAGNOSTICS,0)}DO(){return this.getToken(cn.DO,0)}DUMP(){return this.getToken(cn.DUMP,0)}ELSIF(){return this.getToken(cn.ELSIF,0)}ERROR(){return this.getToken(cn.ERROR,0)}EXCEPTION(){return this.getToken(cn.EXCEPTION,0)}EXIT(){return this.getToken(cn.EXIT,0)}FETCH(){return this.getToken(cn.FETCH,0)}FIRST_P(){return this.getToken(cn.FIRST_P,0)}FORWARD(){return this.getToken(cn.FORWARD,0)}GET(){return this.getToken(cn.GET,0)}INFO(){return this.getToken(cn.INFO,0)}INSERT(){return this.getToken(cn.INSERT,0)}IS(){return this.getToken(cn.IS,0)}LAST_P(){return this.getToken(cn.LAST_P,0)}MOVE(){return this.getToken(cn.MOVE,0)}NEXT(){return this.getToken(cn.NEXT,0)}NO(){return this.getToken(cn.NO,0)}NOTICE(){return this.getToken(cn.NOTICE,0)}OPEN(){return this.getToken(cn.OPEN,0)}OPTION(){return this.getToken(cn.OPTION,0)}PERFORM(){return this.getToken(cn.PERFORM,0)}PRINT_STRICT_PARAMS(){return this.getToken(cn.PRINT_STRICT_PARAMS,0)}PRIOR(){return this.getToken(cn.PRIOR,0)}QUERY(){return this.getToken(cn.QUERY,0)}RAISE(){return this.getToken(cn.RAISE,0)}RELATIVE_P(){return this.getToken(cn.RELATIVE_P,0)}RESET(){return this.getToken(cn.RESET,0)}RETURN(){return this.getToken(cn.RETURN,0)}ROLLBACK(){return this.getToken(cn.ROLLBACK,0)}ROWTYPE(){return this.getToken(cn.ROWTYPE,0)}SCHEMA(){return this.getToken(cn.SCHEMA,0)}SCROLL(){return this.getToken(cn.SCROLL,0)}SET(){return this.getToken(cn.SET,0)}SLICE(){return this.getToken(cn.SLICE,0)}SQLSTATE(){return this.getToken(cn.SQLSTATE,0)}STACKED(){return this.getToken(cn.STACKED,0)}TABLE(){return this.getToken(cn.TABLE,0)}TYPE_P(){return this.getToken(cn.TYPE_P,0)}USE_COLUMN(){return this.getToken(cn.USE_COLUMN,0)}USE_VARIABLE(){return this.getToken(cn.USE_VARIABLE,0)}VARIABLE_CONFLICT(){return this.getToken(cn.VARIABLE_CONFLICT,0)}WARNING(){return this.getToken(cn.WARNING,0)}OUTER_P(){return this.getToken(cn.OUTER_P,0)}get ruleIndex(){return cn.RULE_plsqlUnreservedKeyword}accept(t){return t.visitPlsqlUnreservedKeyword?t.visitPlsqlUnreservedKeyword(this):t.visitChildren(this)}},iC=class extends ga{constructor(t,e){super(t,e)}optionalTargetList(){return this.getRuleContext(0,Lu)}fromClause(){return this.getRuleContext(0,Vl)}whereClause(){return this.getRuleContext(0,EO)}groupClause(){return this.getRuleContext(0,Fl)}havingClause(){return this.getRuleContext(0,yl)}windowClause(){return this.getRuleContext(0,pI)}intoClause(){return this.getRuleContext(0,ll)}get ruleIndex(){return cn.RULE_sqlExpression}accept(t){return t.visitSqlExpression?t.visitSqlExpression(this):t.visitChildren(this)}},cC=class extends ga{constructor(t,e){super(t,e)}sqlExpression(){return this.getRuleContext(0,iC)}get ruleIndex(){return cn.RULE_expressionUntilThen}accept(t){return t.visitExpressionUntilThen?t.visitExpressionUntilThen(this):t.visitChildren(this)}},nC=class extends ga{constructor(t,e){super(t,e)}sqlExpression(){return this.getRuleContext(0,iC)}get ruleIndex(){return cn.RULE_expressionUntilSemi}accept(t){return t.visitExpressionUntilSemi?t.visitExpressionUntilSemi(this):t.visitChildren(this)}},hC=class extends ga{constructor(t,e){super(t,e)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_expressionUntilRightbracket}accept(t){return t.visitExpressionUntilRightbracket?t.visitExpressionUntilRightbracket(this):t.visitChildren(this)}},EC=class extends ga{constructor(t,e){super(t,e)}expression1(){return this.getRuleContext(0,wO)}get ruleIndex(){return cn.RULE_expressionUntilLoop}accept(t){return t.visitExpressionUntilLoop?t.visitExpressionUntilLoop(this):t.visitChildren(this)}},TC=class extends ga{constructor(t,e){super(t,e)}statement(){return this.getRuleContext(0,Tn)}optionalReturningClauseInto(){return this.getRuleContext(0,oC)}get ruleIndex(){return cn.RULE_makeExecuteSqlStatement}accept(t){return t.visitMakeExecuteSqlStatement?t.visitMakeExecuteSqlStatement(this):t.visitChildren(this)}},oC=class extends ga{constructor(t,e){super(t,e)}INTO(){return this.getToken(cn.INTO,0)}intoTarget(){return this.getRuleContext(0,BL)}STRICT_P(){return this.getToken(cn.STRICT_P,0)}get ruleIndex(){return cn.RULE_optionalReturningClauseInto}accept(t){return t.visitOptionalReturningClauseInto?t.visitOptionalReturningClauseInto(this):t.visitChildren(this)}},RC=class extends ga{constructor(t,e){super(t,e)}ROLE(){return this.getToken(cn.ROLE,0)}USER(){return this.getToken(cn.USER,0)}GROUP_P(){return this.getToken(cn.GROUP_P,0)}get ruleIndex(){return cn.RULE_roleOrAliases}accept(t){return t.visitRoleOrAliases?t.visitRoleOrAliases(this):t.visitChildren(this)}},AC=class extends Ii{},SC=/[\w]$/,lC=/\r\n|\n|\r/g;function OC(t,e){var s,a;let r=t.column,i=t.column+((null===(s=t.text)||void 0===s?void 0:s.length)||0),c=t.line;return{startColumn:r,startLine:c,endColumn:i,endLine:t.type===e&&t.text?c+((null===(a=t.text.match(lC))||void 0===a?void 0:a.length)||0):c}}function IC(t,e,s,a){let r=e.column-1;for(let i=0;i<t.size;i++){let c=t.get(i),{startColumn:n,startLine:h,endColumn:E,endLine:T}=OC(c,s);if(T>e.line||h===e.line&&E>r)return a?i:i>0&&h===e.line&&n===r&&SC.test(t.get(i-1).text||"")?i-1:t.get(i).type===s?i+1:i}}function uC(t,e){return t===e.startTokenIndex}var NC="(\\s|\r\n|\n|\r)+",LC=new RegExp("^(".concat(NC,")?explain").concat(NC,"$")),CC=new RegExp("^(".concat(NC,")?\\S+").concat(NC));function _C(t,e){let s=function(t,e){let s=t.split(lC),a=t.match(lC),r="";a&&(r=a[0]);let i=0;return s.reduce(((t,s,a)=>(e.line-1===a&&(i=t.length?t.length+e.column:e.column-1),0===a?s:t+r+s)),""),i}(t,e),a=function(t,e){let s=t.slice(0,e-1),a=t.slice(e-1),r=s.lastIndexOf(";"),i=a.indexOf(";"),c=r>-1?r+1:0,n=i>-1?i+s.length:t.length;return{statement:t.slice(c,n),cursorIndex:e-c}}(t,s),r=a.statement.slice(0,a.cursorIndex).toLowerCase();return!(0!==s&&r.match(CC)&&!r.match(LC))}function PC(t,e,s){let a=new t(Oi.fromString(s)),r=new e(new $i(a));return r.removeErrorListeners(),r}function MC(t,e,s){let a=e;for(;a<t.size;){let e=t.get(a);if(e.type===s.CLOSING_BRACKET||e.type===s.SEMICOLON)return{cursorIndex:e.start,tokenIndex:a};if(e.type===s.OPENING_BRACKET)return;a++}let r=t.size-1;return{cursorIndex:t.get(r).start,tokenIndex:r}}function dC(t,e,s,a){let r=e;for(;r<s;){let e=t.get(r);if(e.type===a.JOIN)return e.stop+1;r++}}function UC(t,e,s,a){let r=s-1;for(;r>-1;){let s=t.get(r);if(s.type===e.SEMICOLON)return;if(s.type===a)return s;r--}}function mC(t,e,s,a,r,i,c,n,h){let E=IC(i,c,a.SPACE,!0);if(!E)throw new Error("Could not find actualCursorTokenIndex at Ln ".concat(c.line,", Col ").concat(c.column));let T={},o=function(t,e,s){let a=t.get(t.size-1).start,r=e,i=!1;for(;r>=0&&r<t.size;){let a=t.get(r);if(a.type===s.OPENING_BRACKET||a.type===s.CLOSING_BRACKET||a.type===s.SEMICOLON){if(i)break;r=e,i=!0}if(a.type===s.FROM){let i=MC(t,e,s);if(!i)break;let c=dC(t,r,i.tokenIndex,s),n=c?{start:c,end:i.cursorIndex}:void 0,h=UC(t,s,i.tokenIndex,s.SELECT),E=h?{start:h.start,end:i.cursorIndex}:void 0;return{start:a.start,end:i.cursorIndex,type:"from",joinTableQueryPosition:n,selectTableQueryPosition:E}}i?r++:r--,-1===r&&(r=e,i=!0)}for(r=e;r>=0;){let e=t.get(r);if(e.type===s.SEMICOLON)return;if(e.type===s.ALTER&&!UC(t,s,r,s.ALTER))return{start:e.start,end:a,type:"alter"};if(e.type===s.INSERT)return{start:e.start,end:a,type:"insert"};if(e.type===s.UPDATE)return{start:e.start,end:a,type:"update"};r--}}(i,E,a);if(o){let a=r(PC(t,e,n.slice(o.start,o.end)),o.type);if(s.visit(a),h&&o.joinTableQueryPosition){let a=r(PC(t,e,n.slice(o.joinTableQueryPosition.start,o.joinTableQueryPosition.end)),"from");s.visit(a)}if(o.selectTableQueryPosition){let a=r(PC(t,e,n.slice(o.selectTableQueryPosition.start,o.selectTableQueryPosition.end)),"select");s.visit(a)}let i=jc(s);i.length&&(T.tableContextSuggestion={tables:i});let c=function(t){return t.symbolTable.getNestedSymbolsOfTypeSync(zc).map((t=>{let{name:e}=t;return{name:e}}))}(s);c.length&&(T.suggestColumnAliases=c.map((t=>{let{name:e}=t;return{name:e}})))}return T}var DC={SPACE:cn.Whitespace,FROM:cn.FROM,OPENING_BRACKET:cn.OPEN_PAREN,CLOSING_BRACKET:cn.CLOSE_PAREN,ALTER:cn.ALTER,INSERT:cn.INSERT,UPDATE:cn.UPDATE,JOIN:cn.JOIN,SEMICOLON:cn.SEMI,SELECT:cn.SELECT};var pC=new Set(function(){let t=[],e=cn.Dollar,s=cn.Operator;for(let i=e;i<=s;i++)i!==cn.STAR&&t.push(i);let a=cn.ABS,r=cn.AfterEscapeStringConstantWithNewlineMode_Continued;for(let i=a;i<=r;i++)t.push(i);return t.push(cn.EOF),t}()),gC=new Set([cn.RULE_columnId,cn.RULE_functionName,cn.RULE_functionExpressionCommonSubexpr,cn.RULE_indexName,cn.RULE_triggerName,cn.RULE_constraintName,cn.RULE_sequenceName,cn.RULE_schemaName,cn.RULE_databaseName,cn.RULE_roleName,cn.RULE_identifier,cn.RULE_plsqlVariableName,cn.RULE_constTypeName,cn.RULE_columnNameKeyword,cn.RULE_unreservedKeyword,cn.RULE_plsqlUnreservedKeyword,cn.RULE_typeFunctionNameKeyword,cn.RULE_reservedKeyword]),xC=class extends AC{constructor(){super(),this.visitRelationExpression=t=>{try{var e;this.symbolTable.addNewSymbolOfType(qc,this.scope,(null===(e=t.qualifiedName())||void 0===e?void 0:e.getText())||"")}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitTableReference=t=>{try{var e,s,a,r,i;this.symbolTable.addNewSymbolOfType(qc,this.scope,(null===(e=t.relationExpression())||void 0===e||null===(s=e.qualifiedName())||void 0===s?void 0:s.getText())||"",null===(a=t.optionalAliasClause())||void 0===a||null===(r=a.tableAliasClause())||void 0===r||null===(i=r.tableAlias())||void 0===i?void 0:i.getText())}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitInsertTarget=t=>{try{var e,s;this.symbolTable.addNewSymbolOfType(qc,this.scope,(null===(e=t.qualifiedName())||void 0===e?void 0:e.getText())||"",null===(s=t.columnId())||void 0===s?void 0:s.getText())}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitTarget_label=t=>{try{var e,s;let a=(null===(e=t.columnLabel())||void 0===e?void 0:e.getText())||(null===(s=t.identifier())||void 0===s?void 0:s.getText());a&&this.symbolTable.addNewSymbolOfType(zc,this.scope,a)}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitViewName=t=>{try{this.symbolTable.addNewSymbolOfType(qc,this.scope,t.getText())}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.symbolTable=new Zc("",{allowDuplicateSymbols:!0}),this.scope=this.symbolTable.addNewSymbolOfType(Bc,void 0)}};function kC(t,e){if(!e)return t.root();switch(e){case"from":return t.nonAnsiJoin();case"alter":return t.alterTableStatement();case"insert":return t.insertStatement();case"update":return t.updateStatement();case"select":return t.selectStatement()}}var HC={Lexer:an,Parser:cn,tokenDictionary:DC,ignoredTokens:pC,rulesToVisit:gC,getParseTree:kC,enrichAutocompleteResult:function(t,e,s,a,r,i){let{shouldSuggestColumns:c,shouldSuggestColumnAliases:n,shouldSuggestConstraints:h,...E}=function(t,e,s){let a,r=!1,i=!1,c=!1,n=!1,h=!1,E=!1,T=!1,o=!1,R=!1,A=!1,S=!1;for(let[l,O]of t)if(uC(e,O))switch(l){case cn.RULE_functionExpressionCommonSubexpr:case cn.RULE_functionName:i=!0,r=!0;break;case cn.RULE_columnId:{let t=O.ruleList.includes(cn.RULE_qualifiedName)&&(O.ruleList.includes(cn.RULE_insertTarget)||O.ruleList.includes(cn.RULE_relationExpression)),r=!O.ruleList.includes(cn.RULE_createStatement)&&(t||O.ruleList.includes(cn.RULE_functionTable));UC(s,DC,e,cn.VIEW)&&!UC(s,DC,e,cn.Identifier)&&(O.ruleList.includes(cn.RULE_alterTableStatement)||O.ruleList.includes(cn.RULE_refreshMaterializedViewStatement)||O.ruleList.includes(cn.RULE_renameStatement)||O.ruleList.includes(cn.RULE_alterObjectDependsStatement)||O.ruleList.includes(cn.RULE_alterObjectSchemaStatement)||O.ruleList.includes(cn.RULE_dropStatement))?a="VIEWS":UC(s,DC,e,cn.TABLE)&&(O.ruleList.includes(cn.RULE_dropStatement)||r)?a="TABLES":r?a="ALL":!O.ruleList.includes(cn.RULE_selectLimitValue)&&!O.ruleList.includes(cn.RULE_selectOffsetValue)&&(A=!0,(O.ruleList.includes(cn.RULE_groupByItem)||O.ruleList.includes(cn.RULE_sortBy))&&(S=!0));break}case cn.RULE_indexName:c=!0;break;case cn.RULE_triggerName:n=!0;break;case cn.RULE_constraintName:R=!0;break;case cn.RULE_sequenceName:h=!0;break;case cn.RULE_schemaName:E=!0;break;case cn.RULE_databaseName:T=!0;break;case cn.RULE_roleName:o=!0}return{suggestViewsOrTables:a,suggestAggregateFunctions:r,suggestFunctions:i,suggestIndexes:c,suggestTriggers:n,shouldSuggestConstraints:R,suggestSequences:h,suggestSchemas:E,suggestDatabases:T,suggestRoles:o,shouldSuggestColumns:A,shouldSuggestColumnAliases:S}}(e,a,s),T={...t,...E,suggestTemplates:_C(i,r)};if(c||h||n){let t=new xC,{tableContextSuggestion:e,suggestColumnAliases:a}=mC(an,cn,t,DC,kC,s,r,i,!0);c&&e&&(T.suggestColumns=e),h&&e&&(T.suggestConstraints=e),n&&a&&(T.suggestColumnAliases=a)}return T}},GC=(Ki=class t extends $r{constructor(e){super(e),this.interpreter=new hi(this,t._ATN,t.decisionsToDFA,new Si)}get grammarFileName(){return"MySqlLexer.g4"}get literalNames(){return t.literalNames}get symbolicNames(){return t.symbolicNames}get ruleNames(){return t.ruleNames}get serializedATN(){return t._serializedATN}get channelNames(){return t.channelNames}get modeNames(){return t.modeNames}static get _ATN(){return t.__ATN||(t.__ATN=(new fr).deserialize(t._serializedATN)),t.__ATN}get vocabulary(){return t.vocabulary}},Ki.SPACE=1,Ki.SPEC_MYSQL_COMMENT=2,Ki.COMMENT_INPUT=3,Ki.LINE_COMMENT=4,Ki.ADD=5,Ki.ALL=6,Ki.ALTER=7,Ki.ALWAYS=8,Ki.ANALYZE=9,Ki.AND=10,Ki.ARRAY=11,Ki.AS=12,Ki.ASC=13,Ki.ATTRIBUTE=14,Ki.BEFORE=15,Ki.BETWEEN=16,Ki.BOTH=17,Ki.BUCKETS=18,Ki.BY=19,Ki.CALL=20,Ki.CASCADE=21,Ki.CASE=22,Ki.CAST=23,Ki.CHANGE=24,Ki.CHARACTER=25,Ki.CHECK=26,Ki.COLLATE=27,Ki.COLUMN=28,Ki.CONDITION=29,Ki.CONSTRAINT=30,Ki.CONTINUE=31,Ki.CONVERT=32,Ki.CREATE=33,Ki.CROSS=34,Ki.CURRENT=35,Ki.CURRENT_ROLE=36,Ki.CURRENT_USER=37,Ki.CURSOR=38,Ki.DATABASE=39,Ki.DATABASES=40,Ki.DECLARE=41,Ki.DEFAULT=42,Ki.DELAYED=43,Ki.DELETE=44,Ki.DESC=45,Ki.DESCRIBE=46,Ki.DETERMINISTIC=47,Ki.DIAGNOSTICS=48,Ki.DISTINCT=49,Ki.DISTINCTROW=50,Ki.DROP=51,Ki.EACH=52,Ki.ELSE=53,Ki.ELSEIF=54,Ki.EMPTY=55,Ki.ENCLOSED=56,Ki.ENFORCED=57,Ki.ESCAPED=58,Ki.EXCEPT=59,Ki.EXISTS=60,Ki.EXIT=61,Ki.EXPLAIN=62,Ki.FALSE=63,Ki.FETCH=64,Ki.FOR=65,Ki.FORCE=66,Ki.FOREIGN=67,Ki.FROM=68,Ki.FULLTEXT=69,Ki.GENERATED=70,Ki.GET=71,Ki.GRANT=72,Ki.GROUP=73,Ki.HAVING=74,Ki.HIGH_PRIORITY=75,Ki.HISTOGRAM=76,Ki.IF=77,Ki.IGNORE=78,Ki.IGNORED=79,Ki.IN=80,Ki.INDEX=81,Ki.INFILE=82,Ki.INNER=83,Ki.INOUT=84,Ki.INSERT=85,Ki.INTERVAL=86,Ki.INTO=87,Ki.IS=88,Ki.ITERATE=89,Ki.JOIN=90,Ki.KEY=91,Ki.KEYS=92,Ki.KILL=93,Ki.LATERAL=94,Ki.LEADING=95,Ki.LEAVE=96,Ki.LEFT=97,Ki.LIKE=98,Ki.LIMIT=99,Ki.LINEAR=100,Ki.LINES=101,Ki.LOAD=102,Ki.LOCK=103,Ki.LOCKED=104,Ki.LOOP=105,Ki.LOW_PRIORITY=106,Ki.MASTER_BIND=107,Ki.MASTER_SSL_VERIFY_SERVER_CERT=108,Ki.MATCH=109,Ki.MAXVALUE=110,Ki.MINVALUE=111,Ki.MODIFIES=112,Ki.NATURAL=113,Ki.NOT=114,Ki.NO_WRITE_TO_BINLOG=115,Ki.NULL_LITERAL=116,Ki.NUMBER=117,Ki.ON=118,Ki.OPTIMIZE=119,Ki.OPTION=120,Ki.OPTIONAL=121,Ki.OPTIONALLY=122,Ki.OR=123,Ki.ORDER=124,Ki.OUT=125,Ki.OUTER=126,Ki.OUTFILE=127,Ki.OVER=128,Ki.PARTITION=129,Ki.PRIMARY=130,Ki.PROCEDURE=131,Ki.PURGE=132,Ki.RANGE=133,Ki.READ=134,Ki.READS=135,Ki.REFERENCES=136,Ki.REGEXP=137,Ki.RELEASE=138,Ki.RENAME=139,Ki.REPEAT=140,Ki.REPLACE=141,Ki.REQUIRE=142,Ki.RESIGNAL=143,Ki.RESTRICT=144,Ki.RETAIN=145,Ki.RETURN=146,Ki.REVOKE=147,Ki.RIGHT=148,Ki.RLIKE=149,Ki.SCHEMA=150,Ki.SCHEMAS=151,Ki.SELECT=152,Ki.SET=153,Ki.SEPARATOR=154,Ki.SHOW=155,Ki.SIGNAL=156,Ki.SKIP_=157,Ki.SKIP_QUERY_REWRITE=158,Ki.SPATIAL=159,Ki.SQL=160,Ki.SQLEXCEPTION=161,Ki.SQLSTATE=162,Ki.SQLWARNING=163,Ki.SQL_BIG_RESULT=164,Ki.SQL_CALC_FOUND_ROWS=165,Ki.SQL_SMALL_RESULT=166,Ki.SSL=167,Ki.STACKED=168,Ki.STARTING=169,Ki.STATEMENT=170,Ki.STRAIGHT_JOIN=171,Ki.TABLE=172,Ki.TERMINATED=173,Ki.THEN=174,Ki.TO=175,Ki.TRAILING=176,Ki.TRIGGER=177,Ki.TRUE=178,Ki.UNDO=179,Ki.UNION=180,Ki.UNIQUE=181,Ki.UNLOCK=182,Ki.UNSIGNED=183,Ki.UPDATE=184,Ki.USAGE=185,Ki.USE=186,Ki.USING=187,Ki.VALUES=188,Ki.WHEN=189,Ki.WHERE=190,Ki.WHILE=191,Ki.WITH=192,Ki.WRITE=193,Ki.XOR=194,Ki.ZEROFILL=195,Ki.TINYINT=196,Ki.SMALLINT=197,Ki.MEDIUMINT=198,Ki.MIDDLEINT=199,Ki.INT=200,Ki.INT1=201,Ki.INT2=202,Ki.INT3=203,Ki.INT4=204,Ki.INT8=205,Ki.INTEGER=206,Ki.BIGINT=207,Ki.REAL=208,Ki.DOUBLE=209,Ki.PRECISION=210,Ki.FLOAT=211,Ki.FLOAT4=212,Ki.FLOAT8=213,Ki.DECIMAL=214,Ki.DEC=215,Ki.NUMERIC=216,Ki.DATE=217,Ki.TIME=218,Ki.TIMESTAMP=219,Ki.DATETIME=220,Ki.YEAR=221,Ki.CHAR=222,Ki.VARCHAR=223,Ki.NVARCHAR=224,Ki.NATIONAL=225,Ki.BINARY=226,Ki.VARBINARY=227,Ki.TINYBLOB=228,Ki.BLOB=229,Ki.MEDIUMBLOB=230,Ki.LONG=231,Ki.LONGBLOB=232,Ki.TINYTEXT=233,Ki.TEXT=234,Ki.MEDIUMTEXT=235,Ki.LONGTEXT=236,Ki.ENUM=237,Ki.VARYING=238,Ki.SERIAL=239,Ki.YEAR_MONTH=240,Ki.DAY_HOUR=241,Ki.DAY_MINUTE=242,Ki.DAY_SECOND=243,Ki.HOUR_MINUTE=244,Ki.HOUR_SECOND=245,Ki.MINUTE_SECOND=246,Ki.SECOND_MICROSECOND=247,Ki.MINUTE_MICROSECOND=248,Ki.HOUR_MICROSECOND=249,Ki.DAY_MICROSECOND=250,Ki.JSON_ARRAY=251,Ki.JSON_ARRAYAGG=252,Ki.JSON_ARRAY_APPEND=253,Ki.JSON_ARRAY_INSERT=254,Ki.JSON_CONTAINS=255,Ki.JSON_CONTAINS_PATH=256,Ki.JSON_DEPTH=257,Ki.JSON_EXTRACT=258,Ki.JSON_INSERT=259,Ki.JSON_KEYS=260,Ki.JSON_LENGTH=261,Ki.JSON_MERGE=262,Ki.JSON_MERGE_PATCH=263,Ki.JSON_MERGE_PRESERVE=264,Ki.JSON_OBJECT=265,Ki.JSON_OBJECTAGG=266,Ki.JSON_OVERLAPS=267,Ki.JSON_PRETTY=268,Ki.JSON_QUOTE=269,Ki.JSON_REMOVE=270,Ki.JSON_REPLACE=271,Ki.JSON_SCHEMA_VALID=272,Ki.JSON_SCHEMA_VALIDATION_REPORT=273,Ki.JSON_SEARCH=274,Ki.JSON_SET=275,Ki.JSON_STORAGE_FREE=276,Ki.JSON_STORAGE_SIZE=277,Ki.JSON_TABLE=278,Ki.JSON_TYPE=279,Ki.JSON_UNQUOTE=280,Ki.JSON_VALID=281,Ki.JSON_VALUE=282,Ki.NESTED=283,Ki.ORDINALITY=284,Ki.PATH=285,Ki.AVG=286,Ki.BIT_AND=287,Ki.BIT_OR=288,Ki.BIT_XOR=289,Ki.COUNT=290,Ki.CUME_DIST=291,Ki.DENSE_RANK=292,Ki.FIRST_VALUE=293,Ki.GROUP_CONCAT=294,Ki.LAG=295,Ki.LAST_VALUE=296,Ki.LEAD=297,Ki.MAX=298,Ki.MIN=299,Ki.NTILE=300,Ki.NTH_VALUE=301,Ki.PERCENT_RANK=302,Ki.RANK=303,Ki.ROW_NUMBER=304,Ki.STD=305,Ki.STDDEV=306,Ki.STDDEV_POP=307,Ki.STDDEV_SAMP=308,Ki.SUM=309,Ki.VAR_POP=310,Ki.VAR_SAMP=311,Ki.VARIANCE=312,Ki.CURRENT_DATE=313,Ki.CURRENT_TIME=314,Ki.CURRENT_TIMESTAMP=315,Ki.LOCALTIME=316,Ki.CURDATE=317,Ki.CURTIME=318,Ki.DATE_ADD=319,Ki.DATE_SUB=320,Ki.EXTRACT=321,Ki.LOCALTIMESTAMP=322,Ki.NOW=323,Ki.POSITION=324,Ki.SUBSTR=325,Ki.SUBSTRING=326,Ki.SYSDATE=327,Ki.TRIM=328,Ki.UTC_DATE=329,Ki.UTC_TIME=330,Ki.UTC_TIMESTAMP=331,Ki.ACCOUNT=332,Ki.ACTION=333,Ki.AFTER=334,Ki.AGGREGATE=335,Ki.ALGORITHM=336,Ki.ANY=337,Ki.AT=338,Ki.AUTHORS=339,Ki.AUTOCOMMIT=340,Ki.AUTOEXTEND_SIZE=341,Ki.AUTO_INCREMENT=342,Ki.AVG_ROW_LENGTH=343,Ki.BEGIN=344,Ki.BINLOG=345,Ki.BIT=346,Ki.BLOCK=347,Ki.BOOL=348,Ki.BOOLEAN=349,Ki.BTREE=350,Ki.CACHE=351,Ki.CASCADED=352,Ki.CHAIN=353,Ki.CHANGED=354,Ki.CHANNEL=355,Ki.CHECKSUM=356,Ki.PAGE_CHECKSUM=357,Ki.CIPHER=358,Ki.CLASS_ORIGIN=359,Ki.CLIENT=360,Ki.CLOSE=361,Ki.CLUSTERING=362,Ki.COALESCE=363,Ki.CODE=364,Ki.COLUMNS=365,Ki.COLUMN_FORMAT=366,Ki.COLUMN_NAME=367,Ki.COMMENT=368,Ki.COMMIT=369,Ki.COMPACT=370,Ki.COMPLETION=371,Ki.COMPRESSED=372,Ki.COMPRESSION=373,Ki.CONCURRENT=374,Ki.CONNECT=375,Ki.CONNECTION=376,Ki.CONSISTENT=377,Ki.CONSTRAINT_CATALOG=378,Ki.CONSTRAINT_SCHEMA=379,Ki.CONSTRAINT_NAME=380,Ki.CONTAINS=381,Ki.CONTEXT=382,Ki.CONTRIBUTORS=383,Ki.COPY=384,Ki.CPU=385,Ki.CYCLE=386,Ki.CURSOR_NAME=387,Ki.DATA=388,Ki.DATAFILE=389,Ki.DEALLOCATE=390,Ki.DEFAULT_AUTH=391,Ki.DEFINER=392,Ki.DELAY_KEY_WRITE=393,Ki.DES_KEY_FILE=394,Ki.DIRECTORY=395,Ki.DISABLE=396,Ki.DISCARD=397,Ki.DISK=398,Ki.DO=399,Ki.DUMPFILE=400,Ki.DUPLICATE=401,Ki.DYNAMIC=402,Ki.ENABLE=403,Ki.ENCRYPTED=404,Ki.ENCRYPTION=405,Ki.ENCRYPTION_KEY_ID=406,Ki.END=407,Ki.ENDS=408,Ki.ENGINE=409,Ki.ENGINES=410,Ki.ERROR=411,Ki.ERRORS=412,Ki.ESCAPE=413,Ki.EVEN=414,Ki.EVENT=415,Ki.EVENTS=416,Ki.EVERY=417,Ki.EXCHANGE=418,Ki.EXCLUSIVE=419,Ki.EXPIRE=420,Ki.EXPORT=421,Ki.EXTENDED=422,Ki.EXTENT_SIZE=423,Ki.FAILED_LOGIN_ATTEMPTS=424,Ki.FAST=425,Ki.FAULTS=426,Ki.FIELDS=427,Ki.FILE_BLOCK_SIZE=428,Ki.FILTER=429,Ki.FIRST=430,Ki.FIXED=431,Ki.FLUSH=432,Ki.FOLLOWING=433,Ki.FOLLOWS=434,Ki.FOUND=435,Ki.FULL=436,Ki.FUNCTION=437,Ki.GENERAL=438,Ki.GLOBAL=439,Ki.GRANTS=440,Ki.GROUP_REPLICATION=441,Ki.HANDLER=442,Ki.HASH=443,Ki.HELP=444,Ki.HISTORY=445,Ki.HOST=446,Ki.HOSTS=447,Ki.IDENTIFIED=448,Ki.IGNORE_SERVER_IDS=449,Ki.IMPORT=450,Ki.INCREMENT=451,Ki.INDEXES=452,Ki.INITIAL_SIZE=453,Ki.INPLACE=454,Ki.INSERT_METHOD=455,Ki.INSTALL=456,Ki.INSTANCE=457,Ki.INSTANT=458,Ki.INVISIBLE=459,Ki.INVOKER=460,Ki.IO=461,Ki.IO_THREAD=462,Ki.IPC=463,Ki.ISOLATION=464,Ki.ISSUER=465,Ki.JSON=466,Ki.KEY_BLOCK_SIZE=467,Ki.LANGUAGE=468,Ki.LAST=469,Ki.LEAVES=470,Ki.LESS=471,Ki.LEVEL=472,Ki.LIST=473,Ki.LOCAL=474,Ki.LOGFILE=475,Ki.LOGS=476,Ki.MASTER=477,Ki.MASTER_AUTO_POSITION=478,Ki.MASTER_CONNECT_RETRY=479,Ki.MASTER_DELAY=480,Ki.MASTER_HEARTBEAT_PERIOD=481,Ki.MASTER_HOST=482,Ki.MASTER_LOG_FILE=483,Ki.MASTER_LOG_POS=484,Ki.MASTER_PASSWORD=485,Ki.MASTER_PORT=486,Ki.MASTER_RETRY_COUNT=487,Ki.MASTER_SSL=488,Ki.MASTER_SSL_CA=489,Ki.MASTER_SSL_CAPATH=490,Ki.MASTER_SSL_CERT=491,Ki.MASTER_SSL_CIPHER=492,Ki.MASTER_SSL_CRL=493,Ki.MASTER_SSL_CRLPATH=494,Ki.MASTER_SSL_KEY=495,Ki.MASTER_TLS_VERSION=496,Ki.MASTER_USER=497,Ki.MAX_CONNECTIONS_PER_HOUR=498,Ki.MAX_QUERIES_PER_HOUR=499,Ki.MAX_ROWS=500,Ki.MAX_SIZE=501,Ki.MAX_UPDATES_PER_HOUR=502,Ki.MAX_USER_CONNECTIONS=503,Ki.MEDIUM=504,Ki.MEMBER=505,Ki.MERGE=506,Ki.MESSAGE_TEXT=507,Ki.MID=508,Ki.MIGRATE=509,Ki.MIN_ROWS=510,Ki.MODE=511,Ki.MODIFY=512,Ki.MUTEX=513,Ki.MYSQL=514,Ki.MYSQL_ERRNO=515,Ki.NAME=516,Ki.NAMES=517,Ki.NCHAR=518,Ki.NEVER=519,Ki.NEXT=520,Ki.NO=521,Ki.NOCACHE=522,Ki.NOCOPY=523,Ki.NOCYCLE=524,Ki.NOMAXVALUE=525,Ki.NOMINVALUE=526,Ki.NOWAIT=527,Ki.NODEGROUP=528,Ki.NONE=529,Ki.ODBC=530,Ki.OFFLINE=531,Ki.OFFSET=532,Ki.OF=533,Ki.OJ=534,Ki.OLD_PASSWORD=535,Ki.ONE=536,Ki.ONLINE=537,Ki.ONLY=538,Ki.OPEN=539,Ki.OPTIMIZER_COSTS=540,Ki.OPTIONS=541,Ki.OWNER=542,Ki.PACK_KEYS=543,Ki.PAGE=544,Ki.PAGE_COMPRESSED=545,Ki.PAGE_COMPRESSION_LEVEL=546,Ki.PARSER=547,Ki.PARTIAL=548,Ki.PARTITIONING=549,Ki.PARTITIONS=550,Ki.PASSWORD=551,Ki.PASSWORD_LOCK_TIME=552,Ki.PHASE=553,Ki.PLUGIN=554,Ki.PLUGIN_DIR=555,Ki.PLUGINS=556,Ki.PORT=557,Ki.PRECEDES=558,Ki.PRECEDING=559,Ki.PREPARE=560,Ki.PRESERVE=561,Ki.PREV=562,Ki.PROCESSLIST=563,Ki.PROFILE=564,Ki.PROFILES=565,Ki.PROXY=566,Ki.QUERY=567,Ki.QUICK=568,Ki.REBUILD=569,Ki.RECOVER=570,Ki.RECURSIVE=571,Ki.REDO_BUFFER_SIZE=572,Ki.REDUNDANT=573,Ki.RELAY=574,Ki.RELAY_LOG_FILE=575,Ki.RELAY_LOG_POS=576,Ki.RELAYLOG=577,Ki.REMOVE=578,Ki.REORGANIZE=579,Ki.REPAIR=580,Ki.REPLICATE_DO_DB=581,Ki.REPLICATE_DO_TABLE=582,Ki.REPLICATE_IGNORE_DB=583,Ki.REPLICATE_IGNORE_TABLE=584,Ki.REPLICATE_REWRITE_DB=585,Ki.REPLICATE_WILD_DO_TABLE=586,Ki.REPLICATE_WILD_IGNORE_TABLE=587,Ki.REPLICATION=588,Ki.RESET=589,Ki.RESTART=590,Ki.RESUME=591,Ki.RETURNED_SQLSTATE=592,Ki.RETURNING=593,Ki.RETURNS=594,Ki.REUSE=595,Ki.ROLE=596,Ki.ROLLBACK=597,Ki.ROLLUP=598,Ki.ROTATE=599,Ki.ROW=600,Ki.ROWS=601,Ki.ROW_FORMAT=602,Ki.RTREE=603,Ki.SAVEPOINT=604,Ki.SCHEDULE=605,Ki.SECURITY=606,Ki.SEQUENCE=607,Ki.SERVER=608,Ki.SESSION=609,Ki.SHARE=610,Ki.SHARED=611,Ki.SIGNED=612,Ki.SIMPLE=613,Ki.SLAVE=614,Ki.SLOW=615,Ki.SNAPSHOT=616,Ki.SOCKET=617,Ki.SOME=618,Ki.SONAME=619,Ki.SOUNDS=620,Ki.SOURCE=621,Ki.SQL_AFTER_GTIDS=622,Ki.SQL_AFTER_MTS_GAPS=623,Ki.SQL_BEFORE_GTIDS=624,Ki.SQL_BUFFER_RESULT=625,Ki.SQL_CACHE=626,Ki.SQL_NO_CACHE=627,Ki.SQL_THREAD=628,Ki.START=629,Ki.STARTS=630,Ki.STATS_AUTO_RECALC=631,Ki.STATS_PERSISTENT=632,Ki.STATS_SAMPLE_PAGES=633,Ki.STATUS=634,Ki.STOP=635,Ki.STORAGE=636,Ki.STORED=637,Ki.STRING=638,Ki.SUBCLASS_ORIGIN=639,Ki.SUBJECT=640,Ki.SUBPARTITION=641,Ki.SUBPARTITIONS=642,Ki.SUSPEND=643,Ki.SWAPS=644,Ki.SWITCHES=645,Ki.TABLE_NAME=646,Ki.TABLESPACE=647,Ki.TABLE_TYPE=648,Ki.TEMPORARY=649,Ki.TEMPTABLE=650,Ki.THAN=651,Ki.TRADITIONAL=652,Ki.TRANSACTION=653,Ki.TRANSACTIONAL=654,Ki.TRIGGERS=655,Ki.TRUNCATE=656,Ki.UNBOUNDED=657,Ki.UNDEFINED=658,Ki.UNDOFILE=659,Ki.UNDO_BUFFER_SIZE=660,Ki.UNINSTALL=661,Ki.UNKNOWN=662,Ki.UNTIL=663,Ki.UPGRADE=664,Ki.USER=665,Ki.USE_FRM=666,Ki.USER_RESOURCES=667,Ki.VALIDATION=668,Ki.VALUE=669,Ki.VARIABLES=670,Ki.VIEW=671,Ki.VIRTUAL=672,Ki.VISIBLE=673,Ki.WAIT=674,Ki.WARNINGS=675,Ki.WINDOW=676,Ki.WITHOUT=677,Ki.WORK=678,Ki.WRAPPER=679,Ki.X509=680,Ki.XA=681,Ki.XML=682,Ki.YES=683,Ki.EUR=684,Ki.USA=685,Ki.JIS=686,Ki.ISO=687,Ki.INTERNAL=688,Ki.QUARTER=689,Ki.MONTH=690,Ki.DAY=691,Ki.HOUR=692,Ki.MINUTE=693,Ki.WEEK=694,Ki.SECOND=695,Ki.MICROSECOND=696,Ki.ADMIN=697,Ki.APPLICATION_PASSWORD_ADMIN=698,Ki.AUDIT_ABORT_EXEMPT=699,Ki.AUDIT_ADMIN=700,Ki.AUTHENTICATION_POLICY_ADMIN=701,Ki.BACKUP_ADMIN=702,Ki.BINLOG_ADMIN=703,Ki.BINLOG_ENCRYPTION_ADMIN=704,Ki.CLONE_ADMIN=705,Ki.CONNECTION_ADMIN=706,Ki.ENCRYPTION_KEY_ADMIN=707,Ki.EXECUTE=708,Ki.FILE=709,Ki.FIREWALL_ADMIN=710,Ki.FIREWALL_EXEMPT=711,Ki.FIREWALL_USER=712,Ki.FLUSH_OPTIMIZER_COSTS=713,Ki.FLUSH_STATUS=714,Ki.FLUSH_TABLES=715,Ki.FLUSH_USER_RESOURCES=716,Ki.GROUP_REPLICATION_ADMIN=717,Ki.INNODB_REDO_LOG_ARCHIVE=718,Ki.INNODB_REDO_LOG_ENABLE=719,Ki.INVOKE=720,Ki.LAMBDA=721,Ki.NDB_STORED_USER=722,Ki.PASSWORDLESS_USER_ADMIN=723,Ki.PERSIST_RO_VARIABLES_ADMIN=724,Ki.PRIVILEGES=725,Ki.PROCESS=726,Ki.RELOAD=727,Ki.REPLICATION_APPLIER=728,Ki.REPLICATION_SLAVE_ADMIN=729,Ki.RESOURCE_GROUP_ADMIN=730,Ki.RESOURCE_GROUP_USER=731,Ki.ROLE_ADMIN=732,Ki.ROUTINE=733,Ki.S3=734,Ki.SERVICE_CONNECTION_ADMIN=735,Ki.SESSION_VARIABLES_ADMIN=736,Ki.SET_USER_ID=737,Ki.SHOW_ROUTINE=738,Ki.SHUTDOWN=739,Ki.SUPER=740,Ki.SYSTEM_VARIABLES_ADMIN=741,Ki.TABLES=742,Ki.TABLE_ENCRYPTION_ADMIN=743,Ki.VERSION_TOKEN_ADMIN=744,Ki.XA_RECOVER_ADMIN=745,Ki.ARMSCII8=746,Ki.ASCII=747,Ki.BIG5=748,Ki.CP1250=749,Ki.CP1251=750,Ki.CP1256=751,Ki.CP1257=752,Ki.CP850=753,Ki.CP852=754,Ki.CP866=755,Ki.CP932=756,Ki.DEC8=757,Ki.EUCJPMS=758,Ki.EUCKR=759,Ki.GB18030=760,Ki.GB2312=761,Ki.GBK=762,Ki.GEOSTD8=763,Ki.GREEK=764,Ki.HEBREW=765,Ki.HP8=766,Ki.KEYBCS2=767,Ki.KOI8R=768,Ki.KOI8U=769,Ki.LATIN1=770,Ki.LATIN2=771,Ki.LATIN5=772,Ki.LATIN7=773,Ki.MACCE=774,Ki.MACROMAN=775,Ki.SJIS=776,Ki.SWE7=777,Ki.TIS620=778,Ki.UCS2=779,Ki.UJIS=780,Ki.UTF16=781,Ki.UTF16LE=782,Ki.UTF32=783,Ki.UTF8=784,Ki.UTF8MB3=785,Ki.UTF8MB4=786,Ki.ARCHIVE=787,Ki.BLACKHOLE=788,Ki.CSV=789,Ki.FEDERATED=790,Ki.INNODB=791,Ki.MEMORY=792,Ki.MRG_MYISAM=793,Ki.MYISAM=794,Ki.NDB=795,Ki.NDBCLUSTER=796,Ki.PERFORMANCE_SCHEMA=797,Ki.TOKUDB=798,Ki.REPEATABLE=799,Ki.COMMITTED=800,Ki.UNCOMMITTED=801,Ki.SERIALIZABLE=802,Ki.GEOMETRYCOLLECTION=803,Ki.GEOMCOLLECTION=804,Ki.GEOMETRY=805,Ki.LINESTRING=806,Ki.MULTILINESTRING=807,Ki.MULTIPOINT=808,Ki.MULTIPOLYGON=809,Ki.POINT=810,Ki.POLYGON=811,Ki.ABS=812,Ki.ACOS=813,Ki.ADDDATE=814,Ki.ADDTIME=815,Ki.AES_DECRYPT=816,Ki.AES_ENCRYPT=817,Ki.AREA=818,Ki.ASBINARY=819,Ki.ASIN=820,Ki.ASTEXT=821,Ki.ASWKB=822,Ki.ASWKT=823,Ki.ASYMMETRIC_DECRYPT=824,Ki.ASYMMETRIC_DERIVE=825,Ki.ASYMMETRIC_ENCRYPT=826,Ki.ASYMMETRIC_SIGN=827,Ki.ASYMMETRIC_VERIFY=828,Ki.ATAN=829,Ki.ATAN2=830,Ki.BENCHMARK=831,Ki.BIN=832,Ki.BIT_COUNT=833,Ki.BIT_LENGTH=834,Ki.BUFFER=835,Ki.CATALOG_NAME=836,Ki.CEIL=837,Ki.CEILING=838,Ki.CENTROID=839,Ki.CHARACTER_LENGTH=840,Ki.CHARSET=841,Ki.CHAR_LENGTH=842,Ki.COERCIBILITY=843,Ki.COLLATION=844,Ki.COMPRESS=845,Ki.CONCAT=846,Ki.CONCAT_WS=847,Ki.CONNECTION_ID=848,Ki.CONV=849,Ki.CONVERT_TZ=850,Ki.COS=851,Ki.COT=852,Ki.CRC32=853,Ki.CREATE_ASYMMETRIC_PRIV_KEY=854,Ki.CREATE_ASYMMETRIC_PUB_KEY=855,Ki.CREATE_DH_PARAMETERS=856,Ki.CREATE_DIGEST=857,Ki.CROSSES=858,Ki.DATEDIFF=859,Ki.DATE_FORMAT=860,Ki.DAYNAME=861,Ki.DAYOFMONTH=862,Ki.DAYOFWEEK=863,Ki.DAYOFYEAR=864,Ki.DECODE=865,Ki.DEGREES=866,Ki.DES_DECRYPT=867,Ki.DES_ENCRYPT=868,Ki.DIMENSION=869,Ki.DISJOINT=870,Ki.ELT=871,Ki.ENCODE=872,Ki.ENCRYPT=873,Ki.ENDPOINT=874,Ki.ENGINE_ATTRIBUTE=875,Ki.ENVELOPE=876,Ki.EQUALS=877,Ki.EXP=878,Ki.EXPORT_SET=879,Ki.EXTERIORRING=880,Ki.EXTRACTVALUE=881,Ki.FIELD=882,Ki.FIND_IN_SET=883,Ki.FLOOR=884,Ki.FORMAT=885,Ki.FOUND_ROWS=886,Ki.FROM_BASE64=887,Ki.FROM_DAYS=888,Ki.FROM_UNIXTIME=889,Ki.GEOMCOLLFROMTEXT=890,Ki.GEOMCOLLFROMWKB=891,Ki.GEOMETRYCOLLECTIONFROMTEXT=892,Ki.GEOMETRYCOLLECTIONFROMWKB=893,Ki.GEOMETRYFROMTEXT=894,Ki.GEOMETRYFROMWKB=895,Ki.GEOMETRYN=896,Ki.GEOMETRYTYPE=897,Ki.GEOMFROMTEXT=898,Ki.GEOMFROMWKB=899,Ki.GET_FORMAT=900,Ki.GET_LOCK=901,Ki.GLENGTH=902,Ki.GREATEST=903,Ki.GTID_SUBSET=904,Ki.GTID_SUBTRACT=905,Ki.HEX=906,Ki.IFNULL=907,Ki.INET6_ATON=908,Ki.INET6_NTOA=909,Ki.INET_ATON=910,Ki.INET_NTOA=911,Ki.INSTR=912,Ki.INTERIORRINGN=913,Ki.INTERSECTS=914,Ki.ISCLOSED=915,Ki.ISEMPTY=916,Ki.ISNULL=917,Ki.ISSIMPLE=918,Ki.IS_FREE_LOCK=919,Ki.IS_IPV4=920,Ki.IS_IPV4_COMPAT=921,Ki.IS_IPV4_MAPPED=922,Ki.IS_IPV6=923,Ki.IS_USED_LOCK=924,Ki.LAST_INSERT_ID=925,Ki.LCASE=926,Ki.LEAST=927,Ki.LENGTH=928,Ki.LINEFROMTEXT=929,Ki.LINEFROMWKB=930,Ki.LINESTRINGFROMTEXT=931,Ki.LINESTRINGFROMWKB=932,Ki.LN=933,Ki.LOAD_FILE=934,Ki.LOCATE=935,Ki.LOG=936,Ki.LOG10=937,Ki.LOG2=938,Ki.LOWER=939,Ki.LPAD=940,Ki.LTRIM=941,Ki.MAKEDATE=942,Ki.MAKETIME=943,Ki.MAKE_SET=944,Ki.MASTER_POS_WAIT=945,Ki.MBRCONTAINS=946,Ki.MBRDISJOINT=947,Ki.MBREQUAL=948,Ki.MBRINTERSECTS=949,Ki.MBROVERLAPS=950,Ki.MBRTOUCHES=951,Ki.MBRWITHIN=952,Ki.MD5=953,Ki.MLINEFROMTEXT=954,Ki.MLINEFROMWKB=955,Ki.MONTHNAME=956,Ki.MPOINTFROMTEXT=957,Ki.MPOINTFROMWKB=958,Ki.MPOLYFROMTEXT=959,Ki.MPOLYFROMWKB=960,Ki.MULTILINESTRINGFROMTEXT=961,Ki.MULTILINESTRINGFROMWKB=962,Ki.MULTIPOINTFROMTEXT=963,Ki.MULTIPOINTFROMWKB=964,Ki.MULTIPOLYGONFROMTEXT=965,Ki.MULTIPOLYGONFROMWKB=966,Ki.NAME_CONST=967,Ki.NULLIF=968,Ki.NUMGEOMETRIES=969,Ki.NUMINTERIORRINGS=970,Ki.NUMPOINTS=971,Ki.OCT=972,Ki.OCTET_LENGTH=973,Ki.ORD=974,Ki.OVERLAPS=975,Ki.PERIOD_ADD=976,Ki.PERIOD_DIFF=977,Ki.PI=978,Ki.POINTFROMTEXT=979,Ki.POINTFROMWKB=980,Ki.POINTN=981,Ki.POLYFROMTEXT=982,Ki.POLYFROMWKB=983,Ki.POLYGONFROMTEXT=984,Ki.POLYGONFROMWKB=985,Ki.POW=986,Ki.POWER=987,Ki.QUOTE=988,Ki.RADIANS=989,Ki.RAND=990,Ki.RANDOM=991,Ki.RANDOM_BYTES=992,Ki.RELEASE_LOCK=993,Ki.REVERSE=994,Ki.ROUND=995,Ki.ROW_COUNT=996,Ki.RPAD=997,Ki.RTRIM=998,Ki.SEC_TO_TIME=999,Ki.SECONDARY_ENGINE_ATTRIBUTE=1e3,Ki.SESSION_USER=1001,Ki.SHA=1002,Ki.SHA1=1003,Ki.SHA2=1004,Ki.SCHEMA_NAME=1005,Ki.SIGN=1006,Ki.SIN=1007,Ki.SLEEP=1008,Ki.SOUNDEX=1009,Ki.SQL_THREAD_WAIT_AFTER_GTIDS=1010,Ki.SQRT=1011,Ki.SRID=1012,Ki.STARTPOINT=1013,Ki.STRCMP=1014,Ki.STR_TO_DATE=1015,Ki.ST_AREA=1016,Ki.ST_ASBINARY=1017,Ki.ST_ASTEXT=1018,Ki.ST_ASWKB=1019,Ki.ST_ASWKT=1020,Ki.ST_BUFFER=1021,Ki.ST_CENTROID=1022,Ki.ST_CONTAINS=1023,Ki.ST_CROSSES=1024,Ki.ST_DIFFERENCE=1025,Ki.ST_DIMENSION=1026,Ki.ST_DISJOINT=1027,Ki.ST_DISTANCE=1028,Ki.ST_ENDPOINT=1029,Ki.ST_ENVELOPE=1030,Ki.ST_EQUALS=1031,Ki.ST_EXTERIORRING=1032,Ki.ST_GEOMCOLLFROMTEXT=1033,Ki.ST_GEOMCOLLFROMTXT=1034,Ki.ST_GEOMCOLLFROMWKB=1035,Ki.ST_GEOMETRYCOLLECTIONFROMTEXT=1036,Ki.ST_GEOMETRYCOLLECTIONFROMWKB=1037,Ki.ST_GEOMETRYFROMTEXT=1038,Ki.ST_GEOMETRYFROMWKB=1039,Ki.ST_GEOMETRYN=1040,Ki.ST_GEOMETRYTYPE=1041,Ki.ST_GEOMFROMTEXT=1042,Ki.ST_GEOMFROMWKB=1043,Ki.ST_INTERIORRINGN=1044,Ki.ST_INTERSECTION=1045,Ki.ST_INTERSECTS=1046,Ki.ST_ISCLOSED=1047,Ki.ST_ISEMPTY=1048,Ki.ST_ISSIMPLE=1049,Ki.ST_LINEFROMTEXT=1050,Ki.ST_LINEFROMWKB=1051,Ki.ST_LINESTRINGFROMTEXT=1052,Ki.ST_LINESTRINGFROMWKB=1053,Ki.ST_NUMGEOMETRIES=1054,Ki.ST_NUMINTERIORRING=1055,Ki.ST_NUMINTERIORRINGS=1056,Ki.ST_NUMPOINTS=1057,Ki.ST_OVERLAPS=1058,Ki.ST_POINTFROMTEXT=1059,Ki.ST_POINTFROMWKB=1060,Ki.ST_POINTN=1061,Ki.ST_POLYFROMTEXT=1062,Ki.ST_POLYFROMWKB=1063,Ki.ST_POLYGONFROMTEXT=1064,Ki.ST_POLYGONFROMWKB=1065,Ki.ST_SRID=1066,Ki.ST_STARTPOINT=1067,Ki.ST_SYMDIFFERENCE=1068,Ki.ST_TOUCHES=1069,Ki.ST_UNION=1070,Ki.ST_WITHIN=1071,Ki.ST_X=1072,Ki.ST_Y=1073,Ki.SUBDATE=1074,Ki.SUBSTRING_INDEX=1075,Ki.SUBTIME=1076,Ki.SYSTEM_USER=1077,Ki.TAN=1078,Ki.TIMEDIFF=1079,Ki.TIMESTAMPADD=1080,Ki.TIMESTAMPDIFF=1081,Ki.TIME_FORMAT=1082,Ki.TIME_TO_SEC=1083,Ki.TOUCHES=1084,Ki.TO_BASE64=1085,Ki.TO_DAYS=1086,Ki.TO_SECONDS=1087,Ki.TP_CONNECTION_ADMIN=1088,Ki.UCASE=1089,Ki.UNCOMPRESS=1090,Ki.UNCOMPRESSED_LENGTH=1091,Ki.UNHEX=1092,Ki.UNIX_TIMESTAMP=1093,Ki.UPDATEXML=1094,Ki.UPPER=1095,Ki.UUID=1096,Ki.UUID_SHORT=1097,Ki.VALIDATE_PASSWORD_STRENGTH=1098,Ki.VERSION=1099,Ki.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS=1100,Ki.WEEKDAY=1101,Ki.WEEKOFYEAR=1102,Ki.WEIGHT_STRING=1103,Ki.WITHIN=1104,Ki.YEARWEEK=1105,Ki.Y_FUNCTION=1106,Ki.X_FUNCTION=1107,Ki.VAR_ASSIGN=1108,Ki.PLUS_ASSIGN=1109,Ki.MINUS_ASSIGN=1110,Ki.MULT_ASSIGN=1111,Ki.DIV_ASSIGN=1112,Ki.MOD_ASSIGN=1113,Ki.AND_ASSIGN=1114,Ki.XOR_ASSIGN=1115,Ki.OR_ASSIGN=1116,Ki.STAR=1117,Ki.DIVIDE=1118,Ki.MODULE=1119,Ki.PLUS=1120,Ki.MINUS=1121,Ki.DIV=1122,Ki.MOD=1123,Ki.EQUAL_SYMBOL=1124,Ki.GREATER_SYMBOL=1125,Ki.LESS_SYMBOL=1126,Ki.EXCLAMATION_SYMBOL=1127,Ki.BIT_NOT_OP=1128,Ki.BIT_OR_OP=1129,Ki.BIT_AND_OP=1130,Ki.BIT_XOR_OP=1131,Ki.DOT=1132,Ki.LR_BRACKET=1133,Ki.RR_BRACKET=1134,Ki.COMMA=1135,Ki.SEMI=1136,Ki.AT_SIGN=1137,Ki.ZERO_DECIMAL=1138,Ki.ONE_DECIMAL=1139,Ki.TWO_DECIMAL=1140,Ki.SINGLE_QUOTE_SYMB=1141,Ki.DOUBLE_QUOTE_SYMB=1142,Ki.REVERSE_QUOTE_SYMB=1143,Ki.COLON_SYMB=1144,Ki.CHARSET_REVERSE_QOUTE_STRING=1145,Ki.FILESIZE_LITERAL=1146,Ki.START_NATIONAL_STRING_LITERAL=1147,Ki.STRING_LITERAL=1148,Ki.DECIMAL_LITERAL=1149,Ki.HEXADECIMAL_LITERAL=1150,Ki.REAL_LITERAL=1151,Ki.NULL_SPEC_LITERAL=1152,Ki.BIT_STRING=1153,Ki.STRING_CHARSET_NAME=1154,Ki.DOT_ID=1155,Ki.ID=1156,Ki.REVERSE_QUOTE_ID=1157,Ki.HOST_IP_ADDRESS=1158,Ki.LOCAL_ID=1159,Ki.GLOBAL_ID=1160,Ki.ERROR_RECONGNIGION=1161,Ki.channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN","MYSQLCOMMENT","ERRORCHANNEL"],Ki.literalNames=[null,null,null,null,null,"'ADD'","'ALL'","'ALTER'","'ALWAYS'","'ANALYZE'","'AND'","'ARRAY'","'AS'","'ASC'","'ATTRIBUTE'","'BEFORE'","'BETWEEN'","'BOTH'","'BUCKETS'","'BY'","'CALL'","'CASCADE'","'CASE'","'CAST'","'CHANGE'","'CHARACTER'","'CHECK'","'COLLATE'","'COLUMN'","'CONDITION'","'CONSTRAINT'","'CONTINUE'","'CONVERT'","'CREATE'","'CROSS'","'CURRENT'","'CURRENT_ROLE'","'CURRENT_USER'","'CURSOR'","'DATABASE'","'DATABASES'","'DECLARE'","'DEFAULT'","'DELAYED'","'DELETE'","'DESC'","'DESCRIBE'","'DETERMINISTIC'","'DIAGNOSTICS'","'DISTINCT'","'DISTINCTROW'","'DROP'","'EACH'","'ELSE'","'ELSEIF'","'EMPTY'","'ENCLOSED'","'ENFORCED'","'ESCAPED'","'EXCEPT'","'EXISTS'","'EXIT'","'EXPLAIN'","'FALSE'","'FETCH'","'FOR'","'FORCE'","'FOREIGN'","'FROM'","'FULLTEXT'","'GENERATED'","'GET'","'GRANT'","'GROUP'","'HAVING'","'HIGH_PRIORITY'","'HISTOGRAM'","'IF'","'IGNORE'","'IGNORED'","'IN'","'INDEX'","'INFILE'","'INNER'","'INOUT'","'INSERT'","'INTERVAL'","'INTO'","'IS'","'ITERATE'","'JOIN'","'KEY'","'KEYS'","'KILL'","'LATERAL'","'LEADING'","'LEAVE'","'LEFT'","'LIKE'","'LIMIT'","'LINEAR'","'LINES'","'LOAD'","'LOCK'","'LOCKED'","'LOOP'","'LOW_PRIORITY'","'MASTER_BIND'","'MASTER_SSL_VERIFY_SERVER_CERT'","'MATCH'","'MAXVALUE'","'MINVALUE'","'MODIFIES'","'NATURAL'","'NOT'","'NO_WRITE_TO_BINLOG'","'NULL'","'NUMBER'","'ON'","'OPTIMIZE'","'OPTION'","'OPTIONAL'","'OPTIONALLY'","'OR'","'ORDER'","'OUT'","'OUTER'","'OUTFILE'","'OVER'","'PARTITION'","'PRIMARY'","'PROCEDURE'","'PURGE'","'RANGE'","'READ'","'READS'","'REFERENCES'","'REGEXP'","'RELEASE'","'RENAME'","'REPEAT'","'REPLACE'","'REQUIRE'","'RESIGNAL'","'RESTRICT'","'RETAIN'","'RETURN'","'REVOKE'","'RIGHT'","'RLIKE'","'SCHEMA'","'SCHEMAS'","'SELECT'","'SET'","'SEPARATOR'","'SHOW'","'SIGNAL'","'SKIP'","'SKIP_QUERY_REWRITE'","'SPATIAL'","'SQL'","'SQLEXCEPTION'","'SQLSTATE'","'SQLWARNING'","'SQL_BIG_RESULT'","'SQL_CALC_FOUND_ROWS'","'SQL_SMALL_RESULT'","'SSL'","'STACKED'","'STARTING'","'STATEMENT'","'STRAIGHT_JOIN'","'TABLE'","'TERMINATED'","'THEN'","'TO'","'TRAILING'","'TRIGGER'","'TRUE'","'UNDO'","'UNION'","'UNIQUE'","'UNLOCK'","'UNSIGNED'","'UPDATE'","'USAGE'","'USE'","'USING'","'VALUES'","'WHEN'","'WHERE'","'WHILE'","'WITH'","'WRITE'","'XOR'","'ZEROFILL'","'TINYINT'","'SMALLINT'","'MEDIUMINT'","'MIDDLEINT'","'INT'","'INT1'","'INT2'","'INT3'","'INT4'","'INT8'","'INTEGER'","'BIGINT'","'REAL'","'DOUBLE'","'PRECISION'","'FLOAT'","'FLOAT4'","'FLOAT8'","'DECIMAL'","'DEC'","'NUMERIC'","'DATE'","'TIME'","'TIMESTAMP'","'DATETIME'","'YEAR'","'CHAR'","'VARCHAR'","'NVARCHAR'","'NATIONAL'","'BINARY'","'VARBINARY'","'TINYBLOB'","'BLOB'","'MEDIUMBLOB'","'LONG'","'LONGBLOB'","'TINYTEXT'","'TEXT'","'MEDIUMTEXT'","'LONGTEXT'","'ENUM'","'VARYING'","'SERIAL'","'YEAR_MONTH'","'DAY_HOUR'","'DAY_MINUTE'","'DAY_SECOND'","'HOUR_MINUTE'","'HOUR_SECOND'","'MINUTE_SECOND'","'SECOND_MICROSECOND'","'MINUTE_MICROSECOND'","'HOUR_MICROSECOND'","'DAY_MICROSECOND'","'JSON_ARRAY'","'JSON_ARRAYAGG'","'JSON_ARRAY_APPEND'","'JSON_ARRAY_INSERT'","'JSON_CONTAINS'","'JSON_CONTAINS_PATH'","'JSON_DEPTH'","'JSON_EXTRACT'","'JSON_INSERT'","'JSON_KEYS'","'JSON_LENGTH'","'JSON_MERGE'","'JSON_MERGE_PATCH'","'JSON_MERGE_PRESERVE'","'JSON_OBJECT'","'JSON_OBJECTAGG'","'JSON_OVERLAPS'","'JSON_PRETTY'","'JSON_QUOTE'","'JSON_REMOVE'","'JSON_REPLACE'","'JSON_SCHEMA_VALID'","'JSON_SCHEMA_VALIDATION_REPORT'","'JSON_SEARCH'","'JSON_SET'","'JSON_STORAGE_FREE'","'JSON_STORAGE_SIZE'","'JSON_TABLE'","'JSON_TYPE'","'JSON_UNQUOTE'","'JSON_VALID'","'JSON_VALUE'","'NESTED'","'ORDINALITY'","'PATH'","'AVG'","'BIT_AND'","'BIT_OR'","'BIT_XOR'","'COUNT'","'CUME_DIST'","'DENSE_RANK'","'FIRST_VALUE'","'GROUP_CONCAT'","'LAG'","'LAST_VALUE'","'LEAD'","'MAX'","'MIN'","'NTILE'","'NTH_VALUE'","'PERCENT_RANK'","'RANK'","'ROW_NUMBER'","'STD'","'STDDEV'","'STDDEV_POP'","'STDDEV_SAMP'","'SUM'","'VAR_POP'","'VAR_SAMP'","'VARIANCE'","'CURRENT_DATE'","'CURRENT_TIME'","'CURRENT_TIMESTAMP'","'LOCALTIME'","'CURDATE'","'CURTIME'","'DATE_ADD'","'DATE_SUB'","'EXTRACT'","'LOCALTIMESTAMP'","'NOW'","'POSITION'","'SUBSTR'","'SUBSTRING'","'SYSDATE'","'TRIM'","'UTC_DATE'","'UTC_TIME'","'UTC_TIMESTAMP'","'ACCOUNT'","'ACTION'","'AFTER'","'AGGREGATE'","'ALGORITHM'","'ANY'","'AT'","'AUTHORS'","'AUTOCOMMIT'","'AUTOEXTEND_SIZE'","'AUTO_INCREMENT'","'AVG_ROW_LENGTH'","'BEGIN'","'BINLOG'","'BIT'","'BLOCK'","'BOOL'","'BOOLEAN'","'BTREE'","'CACHE'","'CASCADED'","'CHAIN'","'CHANGED'","'CHANNEL'","'CHECKSUM'","'PAGE_CHECKSUM'","'CIPHER'","'CLASS_ORIGIN'","'CLIENT'","'CLOSE'","'CLUSTERING'","'COALESCE'","'CODE'","'COLUMNS'","'COLUMN_FORMAT'","'COLUMN_NAME'","'COMMENT'","'COMMIT'","'COMPACT'","'COMPLETION'","'COMPRESSED'","'COMPRESSION'","'CONCURRENT'","'CONNECT'","'CONNECTION'","'CONSISTENT'","'CONSTRAINT_CATALOG'","'CONSTRAINT_SCHEMA'","'CONSTRAINT_NAME'","'CONTAINS'","'CONTEXT'","'CONTRIBUTORS'","'COPY'","'CPU'","'CYCLE'","'CURSOR_NAME'","'DATA'","'DATAFILE'","'DEALLOCATE'","'DEFAULT_AUTH'","'DEFINER'","'DELAY_KEY_WRITE'","'DES_KEY_FILE'","'DIRECTORY'","'DISABLE'","'DISCARD'","'DISK'","'DO'","'DUMPFILE'","'DUPLICATE'","'DYNAMIC'","'ENABLE'","'ENCRYPTED'","'ENCRYPTION'","'ENCRYPTION_KEY_ID'","'END'","'ENDS'","'ENGINE'","'ENGINES'","'ERROR'","'ERRORS'","'ESCAPE'","'EVEN'","'EVENT'","'EVENTS'","'EVERY'","'EXCHANGE'","'EXCLUSIVE'","'EXPIRE'","'EXPORT'","'EXTENDED'","'EXTENT_SIZE'","'FAILED_LOGIN_ATTEMPTS'","'FAST'","'FAULTS'","'FIELDS'","'FILE_BLOCK_SIZE'","'FILTER'","'FIRST'","'FIXED'","'FLUSH'","'FOLLOWING'","'FOLLOWS'","'FOUND'","'FULL'","'FUNCTION'","'GENERAL'","'GLOBAL'","'GRANTS'","'GROUP_REPLICATION'","'HANDLER'","'HASH'","'HELP'","'HISTORY'","'HOST'","'HOSTS'","'IDENTIFIED'","'IGNORE_SERVER_IDS'","'IMPORT'","'INCREMENT'","'INDEXES'","'INITIAL_SIZE'","'INPLACE'","'INSERT_METHOD'","'INSTALL'","'INSTANCE'","'INSTANT'","'INVISIBLE'","'INVOKER'","'IO'","'IO_THREAD'","'IPC'","'ISOLATION'","'ISSUER'","'JSON'","'KEY_BLOCK_SIZE'","'LANGUAGE'","'LAST'","'LEAVES'","'LESS'","'LEVEL'","'LIST'","'LOCAL'","'LOGFILE'","'LOGS'","'MASTER'","'MASTER_AUTO_POSITION'","'MASTER_CONNECT_RETRY'","'MASTER_DELAY'","'MASTER_HEARTBEAT_PERIOD'","'MASTER_HOST'","'MASTER_LOG_FILE'","'MASTER_LOG_POS'","'MASTER_PASSWORD'","'MASTER_PORT'","'MASTER_RETRY_COUNT'","'MASTER_SSL'","'MASTER_SSL_CA'","'MASTER_SSL_CAPATH'","'MASTER_SSL_CERT'","'MASTER_SSL_CIPHER'","'MASTER_SSL_CRL'","'MASTER_SSL_CRLPATH'","'MASTER_SSL_KEY'","'MASTER_TLS_VERSION'","'MASTER_USER'","'MAX_CONNECTIONS_PER_HOUR'","'MAX_QUERIES_PER_HOUR'","'MAX_ROWS'","'MAX_SIZE'","'MAX_UPDATES_PER_HOUR'","'MAX_USER_CONNECTIONS'","'MEDIUM'","'MEMBER'","'MERGE'","'MESSAGE_TEXT'","'MID'","'MIGRATE'","'MIN_ROWS'","'MODE'","'MODIFY'","'MUTEX'","'MYSQL'","'MYSQL_ERRNO'","'NAME'","'NAMES'","'NCHAR'","'NEVER'","'NEXT'","'NO'","'NOCACHE'","'NOCOPY'","'NOCYCLE'","'NOMAXVALUE'","'NOMINVALUE'","'NOWAIT'","'NODEGROUP'","'NONE'","'ODBC'","'OFFLINE'","'OFFSET'","'OF'","'OJ'","'OLD_PASSWORD'","'ONE'","'ONLINE'","'ONLY'","'OPEN'","'OPTIMIZER_COSTS'","'OPTIONS'","'OWNER'","'PACK_KEYS'","'PAGE'","'PAGE_COMPRESSED'","'PAGE_COMPRESSION_LEVEL'","'PARSER'","'PARTIAL'","'PARTITIONING'","'PARTITIONS'","'PASSWORD'","'PASSWORD_LOCK_TIME'","'PHASE'","'PLUGIN'","'PLUGIN_DIR'","'PLUGINS'","'PORT'","'PRECEDES'","'PRECEDING'","'PREPARE'","'PRESERVE'","'PREV'","'PROCESSLIST'","'PROFILE'","'PROFILES'","'PROXY'","'QUERY'","'QUICK'","'REBUILD'","'RECOVER'","'RECURSIVE'","'REDO_BUFFER_SIZE'","'REDUNDANT'","'RELAY'","'RELAY_LOG_FILE'","'RELAY_LOG_POS'","'RELAYLOG'","'REMOVE'","'REORGANIZE'","'REPAIR'","'REPLICATE_DO_DB'","'REPLICATE_DO_TABLE'","'REPLICATE_IGNORE_DB'","'REPLICATE_IGNORE_TABLE'","'REPLICATE_REWRITE_DB'","'REPLICATE_WILD_DO_TABLE'","'REPLICATE_WILD_IGNORE_TABLE'","'REPLICATION'","'RESET'","'RESTART'","'RESUME'","'RETURNED_SQLSTATE'","'RETURNING'","'RETURNS'","'REUSE'","'ROLE'","'ROLLBACK'","'ROLLUP'","'ROTATE'","'ROW'","'ROWS'","'ROW_FORMAT'","'RTREE'","'SAVEPOINT'","'SCHEDULE'","'SECURITY'","'SEQUENCE'","'SERVER'","'SESSION'","'SHARE'","'SHARED'","'SIGNED'","'SIMPLE'","'SLAVE'","'SLOW'","'SNAPSHOT'","'SOCKET'","'SOME'","'SONAME'","'SOUNDS'","'SOURCE'","'SQL_AFTER_GTIDS'","'SQL_AFTER_MTS_GAPS'","'SQL_BEFORE_GTIDS'","'SQL_BUFFER_RESULT'","'SQL_CACHE'","'SQL_NO_CACHE'","'SQL_THREAD'","'START'","'STARTS'","'STATS_AUTO_RECALC'","'STATS_PERSISTENT'","'STATS_SAMPLE_PAGES'","'STATUS'","'STOP'","'STORAGE'","'STORED'","'STRING'","'SUBCLASS_ORIGIN'","'SUBJECT'","'SUBPARTITION'","'SUBPARTITIONS'","'SUSPEND'","'SWAPS'","'SWITCHES'","'TABLE_NAME'","'TABLESPACE'","'TABLE_TYPE'","'TEMPORARY'","'TEMPTABLE'","'THAN'","'TRADITIONAL'","'TRANSACTION'","'TRANSACTIONAL'","'TRIGGERS'","'TRUNCATE'","'UNBOUNDED'","'UNDEFINED'","'UNDOFILE'","'UNDO_BUFFER_SIZE'","'UNINSTALL'","'UNKNOWN'","'UNTIL'","'UPGRADE'","'USER'","'USE_FRM'","'USER_RESOURCES'","'VALIDATION'","'VALUE'","'VARIABLES'","'VIEW'","'VIRTUAL'","'VISIBLE'","'WAIT'","'WARNINGS'","'WINDOW'","'WITHOUT'","'WORK'","'WRAPPER'","'X509'","'XA'","'XML'","'YES'","'EUR'","'USA'","'JIS'","'ISO'","'INTERNAL'","'QUARTER'","'MONTH'","'DAY'","'HOUR'","'MINUTE'","'WEEK'","'SECOND'","'MICROSECOND'","'ADMIN'","'APPLICATION_PASSWORD_ADMIN'","'AUDIT_ABORT_EXEMPT'","'AUDIT_ADMIN'","'AUTHENTICATION_POLICY_ADMIN'","'BACKUP_ADMIN'","'BINLOG_ADMIN'","'BINLOG_ENCRYPTION_ADMIN'","'CLONE_ADMIN'","'CONNECTION_ADMIN'","'ENCRYPTION_KEY_ADMIN'","'EXECUTE'","'FILE'","'FIREWALL_ADMIN'","'FIREWALL_EXEMPT'","'FIREWALL_USER'","'FLUSH_OPTIMIZER_COSTS'","'FLUSH_STATUS'","'FLUSH_TABLES'","'FLUSH_USER_RESOURCES'","'GROUP_REPLICATION_ADMIN'","'INNODB_REDO_LOG_ARCHIVE'","'INNODB_REDO_LOG_ENABLE'","'INVOKE'","'LAMBDA'","'NDB_STORED_USER'","'PASSWORDLESS_USER_ADMIN'","'PERSIST_RO_VARIABLES_ADMIN'","'PRIVILEGES'","'PROCESS'","'RELOAD'","'REPLICATION_APPLIER'","'REPLICATION_SLAVE_ADMIN'","'RESOURCE_GROUP_ADMIN'","'RESOURCE_GROUP_USER'","'ROLE_ADMIN'","'ROUTINE'","'S3'","'SERVICE_CONNECTION_ADMIN'",null,"'SET_USER_ID'","'SHOW_ROUTINE'","'SHUTDOWN'","'SUPER'","'SYSTEM_VARIABLES_ADMIN'","'TABLES'","'TABLE_ENCRYPTION_ADMIN'","'VERSION_TOKEN_ADMIN'","'XA_RECOVER_ADMIN'","'ARMSCII8'","'ASCII'","'BIG5'","'CP1250'","'CP1251'","'CP1256'","'CP1257'","'CP850'","'CP852'","'CP866'","'CP932'","'DEC8'","'EUCJPMS'","'EUCKR'","'GB18030'","'GB2312'","'GBK'","'GEOSTD8'","'GREEK'","'HEBREW'","'HP8'","'KEYBCS2'","'KOI8R'","'KOI8U'","'LATIN1'","'LATIN2'","'LATIN5'","'LATIN7'","'MACCE'","'MACROMAN'","'SJIS'","'SWE7'","'TIS620'","'UCS2'","'UJIS'","'UTF16'","'UTF16LE'","'UTF32'","'UTF8'","'UTF8MB3'","'UTF8MB4'","'ARCHIVE'","'BLACKHOLE'","'CSV'","'FEDERATED'","'INNODB'","'MEMORY'","'MRG_MYISAM'","'MYISAM'","'NDB'","'NDBCLUSTER'","'PERFORMANCE_SCHEMA'","'TOKUDB'","'REPEATABLE'","'COMMITTED'","'UNCOMMITTED'","'SERIALIZABLE'","'GEOMETRYCOLLECTION'","'GEOMCOLLECTION'","'GEOMETRY'","'LINESTRING'","'MULTILINESTRING'","'MULTIPOINT'","'MULTIPOLYGON'","'POINT'","'POLYGON'","'ABS'","'ACOS'","'ADDDATE'","'ADDTIME'","'AES_DECRYPT'","'AES_ENCRYPT'","'AREA'","'ASBINARY'","'ASIN'","'ASTEXT'","'ASWKB'","'ASWKT'","'ASYMMETRIC_DECRYPT'","'ASYMMETRIC_DERIVE'","'ASYMMETRIC_ENCRYPT'","'ASYMMETRIC_SIGN'","'ASYMMETRIC_VERIFY'","'ATAN'","'ATAN2'","'BENCHMARK'","'BIN'","'BIT_COUNT'","'BIT_LENGTH'","'BUFFER'","'CATALOG_NAME'","'CEIL'","'CEILING'","'CENTROID'","'CHARACTER_LENGTH'","'CHARSET'","'CHAR_LENGTH'","'COERCIBILITY'","'COLLATION'","'COMPRESS'","'CONCAT'","'CONCAT_WS'","'CONNECTION_ID'","'CONV'","'CONVERT_TZ'","'COS'","'COT'","'CRC32'","'CREATE_ASYMMETRIC_PRIV_KEY'","'CREATE_ASYMMETRIC_PUB_KEY'","'CREATE_DH_PARAMETERS'","'CREATE_DIGEST'","'CROSSES'","'DATEDIFF'","'DATE_FORMAT'","'DAYNAME'","'DAYOFMONTH'","'DAYOFWEEK'","'DAYOFYEAR'","'DECODE'","'DEGREES'","'DES_DECRYPT'","'DES_ENCRYPT'","'DIMENSION'","'DISJOINT'","'ELT'","'ENCODE'","'ENCRYPT'","'ENDPOINT'","'ENGINE_ATTRIBUTE'","'ENVELOPE'","'EQUALS'","'EXP'","'EXPORT_SET'","'EXTERIORRING'","'EXTRACTVALUE'","'FIELD'","'FIND_IN_SET'","'FLOOR'","'FORMAT'","'FOUND_ROWS'","'FROM_BASE64'","'FROM_DAYS'","'FROM_UNIXTIME'","'GEOMCOLLFROMTEXT'","'GEOMCOLLFROMWKB'","'GEOMETRYCOLLECTIONFROMTEXT'","'GEOMETRYCOLLECTIONFROMWKB'","'GEOMETRYFROMTEXT'","'GEOMETRYFROMWKB'","'GEOMETRYN'","'GEOMETRYTYPE'","'GEOMFROMTEXT'","'GEOMFROMWKB'","'GET_FORMAT'","'GET_LOCK'","'GLENGTH'","'GREATEST'","'GTID_SUBSET'","'GTID_SUBTRACT'","'HEX'","'IFNULL'","'INET6_ATON'","'INET6_NTOA'","'INET_ATON'","'INET_NTOA'","'INSTR'","'INTERIORRINGN'","'INTERSECTS'","'ISCLOSED'","'ISEMPTY'","'ISNULL'","'ISSIMPLE'","'IS_FREE_LOCK'","'IS_IPV4'","'IS_IPV4_COMPAT'","'IS_IPV4_MAPPED'","'IS_IPV6'","'IS_USED_LOCK'","'LAST_INSERT_ID'","'LCASE'","'LEAST'","'LENGTH'","'LINEFROMTEXT'","'LINEFROMWKB'","'LINESTRINGFROMTEXT'","'LINESTRINGFROMWKB'","'LN'","'LOAD_FILE'","'LOCATE'","'LOG'","'LOG10'","'LOG2'","'LOWER'","'LPAD'","'LTRIM'","'MAKEDATE'","'MAKETIME'","'MAKE_SET'","'MASTER_POS_WAIT'","'MBRCONTAINS'","'MBRDISJOINT'","'MBREQUAL'","'MBRINTERSECTS'","'MBROVERLAPS'","'MBRTOUCHES'","'MBRWITHIN'","'MD5'","'MLINEFROMTEXT'","'MLINEFROMWKB'","'MONTHNAME'","'MPOINTFROMTEXT'","'MPOINTFROMWKB'","'MPOLYFROMTEXT'","'MPOLYFROMWKB'","'MULTILINESTRINGFROMTEXT'","'MULTILINESTRINGFROMWKB'","'MULTIPOINTFROMTEXT'","'MULTIPOINTFROMWKB'","'MULTIPOLYGONFROMTEXT'","'MULTIPOLYGONFROMWKB'","'NAME_CONST'","'NULLIF'","'NUMGEOMETRIES'","'NUMINTERIORRINGS'","'NUMPOINTS'","'OCT'","'OCTET_LENGTH'","'ORD'","'OVERLAPS'","'PERIOD_ADD'","'PERIOD_DIFF'","'PI'","'POINTFROMTEXT'","'POINTFROMWKB'","'POINTN'","'POLYFROMTEXT'","'POLYFROMWKB'","'POLYGONFROMTEXT'","'POLYGONFROMWKB'","'POW'","'POWER'","'QUOTE'","'RADIANS'","'RAND'","'RANDOM'","'RANDOM_BYTES'","'RELEASE_LOCK'","'REVERSE'","'ROUND'","'ROW_COUNT'","'RPAD'","'RTRIM'","'SEC_TO_TIME'","'SECONDARY_ENGINE_ATTRIBUTE'","'SESSION_USER'","'SHA'","'SHA1'","'SHA2'","'SCHEMA_NAME'","'SIGN'","'SIN'","'SLEEP'","'SOUNDEX'","'SQL_THREAD_WAIT_AFTER_GTIDS'","'SQRT'","'SRID'","'STARTPOINT'","'STRCMP'","'STR_TO_DATE'","'ST_AREA'","'ST_ASBINARY'","'ST_ASTEXT'","'ST_ASWKB'","'ST_ASWKT'","'ST_BUFFER'","'ST_CENTROID'","'ST_CONTAINS'","'ST_CROSSES'","'ST_DIFFERENCE'","'ST_DIMENSION'","'ST_DISJOINT'","'ST_DISTANCE'","'ST_ENDPOINT'","'ST_ENVELOPE'","'ST_EQUALS'","'ST_EXTERIORRING'","'ST_GEOMCOLLFROMTEXT'","'ST_GEOMCOLLFROMTXT'","'ST_GEOMCOLLFROMWKB'","'ST_GEOMETRYCOLLECTIONFROMTEXT'","'ST_GEOMETRYCOLLECTIONFROMWKB'","'ST_GEOMETRYFROMTEXT'","'ST_GEOMETRYFROMWKB'","'ST_GEOMETRYN'","'ST_GEOMETRYTYPE'","'ST_GEOMFROMTEXT'","'ST_GEOMFROMWKB'","'ST_INTERIORRINGN'","'ST_INTERSECTION'","'ST_INTERSECTS'","'ST_ISCLOSED'","'ST_ISEMPTY'","'ST_ISSIMPLE'","'ST_LINEFROMTEXT'","'ST_LINEFROMWKB'","'ST_LINESTRINGFROMTEXT'","'ST_LINESTRINGFROMWKB'","'ST_NUMGEOMETRIES'","'ST_NUMINTERIORRING'","'ST_NUMINTERIORRINGS'","'ST_NUMPOINTS'","'ST_OVERLAPS'","'ST_POINTFROMTEXT'","'ST_POINTFROMWKB'","'ST_POINTN'","'ST_POLYFROMTEXT'","'ST_POLYFROMWKB'","'ST_POLYGONFROMTEXT'","'ST_POLYGONFROMWKB'","'ST_SRID'","'ST_STARTPOINT'","'ST_SYMDIFFERENCE'","'ST_TOUCHES'","'ST_UNION'","'ST_WITHIN'","'ST_X'","'ST_Y'","'SUBDATE'","'SUBSTRING_INDEX'","'SUBTIME'","'SYSTEM_USER'","'TAN'","'TIMEDIFF'","'TIMESTAMPADD'","'TIMESTAMPDIFF'","'TIME_FORMAT'","'TIME_TO_SEC'","'TOUCHES'","'TO_BASE64'","'TO_DAYS'","'TO_SECONDS'","'TP_CONNECTION_ADMIN'","'UCASE'","'UNCOMPRESS'","'UNCOMPRESSED_LENGTH'","'UNHEX'","'UNIX_TIMESTAMP'","'UPDATEXML'","'UPPER'","'UUID'","'UUID_SHORT'","'VALIDATE_PASSWORD_STRENGTH'","'VERSION'","'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'","'WEEKDAY'","'WEEKOFYEAR'","'WEIGHT_STRING'","'WITHIN'","'YEARWEEK'","'Y'","'X'","':='","'+='","'-='","'*='","'/='","'%='","'&='","'^='","'|='","'*'","'/'","'%'","'+'","'-'","'DIV'","'MOD'","'='","'>'","'<'","'!'","'~'","'|'","'&'","'^'","'.'","'('","')'","','","';'","'@'","'0'","'1'","'2'","'''","'\"'","'`'","':'"],Ki.symbolicNames=[null,"SPACE","SPEC_MYSQL_COMMENT","COMMENT_INPUT","LINE_COMMENT","ADD","ALL","ALTER","ALWAYS","ANALYZE","AND","ARRAY","AS","ASC","ATTRIBUTE","BEFORE","BETWEEN","BOTH","BUCKETS","BY","CALL","CASCADE","CASE","CAST","CHANGE","CHARACTER","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT","CURRENT_ROLE","CURRENT_USER","CURSOR","DATABASE","DATABASES","DECLARE","DEFAULT","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DIAGNOSTICS","DISTINCT","DISTINCTROW","DROP","EACH","ELSE","ELSEIF","EMPTY","ENCLOSED","ENFORCED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FOR","FORCE","FOREIGN","FROM","FULLTEXT","GENERATED","GET","GRANT","GROUP","HAVING","HIGH_PRIORITY","HISTOGRAM","IF","IGNORE","IGNORED","IN","INDEX","INFILE","INNER","INOUT","INSERT","INTERVAL","INTO","IS","ITERATE","JOIN","KEY","KEYS","KILL","LATERAL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCK","LOCKED","LOOP","LOW_PRIORITY","MASTER_BIND","MASTER_SSL_VERIFY_SERVER_CERT","MATCH","MAXVALUE","MINVALUE","MODIFIES","NATURAL","NOT","NO_WRITE_TO_BINLOG","NULL_LITERAL","NUMBER","ON","OPTIMIZE","OPTION","OPTIONAL","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PARTITION","PRIMARY","PROCEDURE","PURGE","RANGE","READ","READS","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESIGNAL","RESTRICT","RETAIN","RETURN","REVOKE","RIGHT","RLIKE","SCHEMA","SCHEMAS","SELECT","SET","SEPARATOR","SHOW","SIGNAL","SKIP_","SKIP_QUERY_REWRITE","SPATIAL","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STACKED","STARTING","STATEMENT","STRAIGHT_JOIN","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNDO","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USING","VALUES","WHEN","WHERE","WHILE","WITH","WRITE","XOR","ZEROFILL","TINYINT","SMALLINT","MEDIUMINT","MIDDLEINT","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","BIGINT","REAL","DOUBLE","PRECISION","FLOAT","FLOAT4","FLOAT8","DECIMAL","DEC","NUMERIC","DATE","TIME","TIMESTAMP","DATETIME","YEAR","CHAR","VARCHAR","NVARCHAR","NATIONAL","BINARY","VARBINARY","TINYBLOB","BLOB","MEDIUMBLOB","LONG","LONGBLOB","TINYTEXT","TEXT","MEDIUMTEXT","LONGTEXT","ENUM","VARYING","SERIAL","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND","SECOND_MICROSECOND","MINUTE_MICROSECOND","HOUR_MICROSECOND","DAY_MICROSECOND","JSON_ARRAY","JSON_ARRAYAGG","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_OBJECTAGG","JSON_OVERLAPS","JSON_PRETTY","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SCHEMA_VALID","JSON_SCHEMA_VALIDATION_REPORT","JSON_SEARCH","JSON_SET","JSON_STORAGE_FREE","JSON_STORAGE_SIZE","JSON_TABLE","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","JSON_VALUE","NESTED","ORDINALITY","PATH","AVG","BIT_AND","BIT_OR","BIT_XOR","COUNT","CUME_DIST","DENSE_RANK","FIRST_VALUE","GROUP_CONCAT","LAG","LAST_VALUE","LEAD","MAX","MIN","NTILE","NTH_VALUE","PERCENT_RANK","RANK","ROW_NUMBER","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","LOCALTIME","CURDATE","CURTIME","DATE_ADD","DATE_SUB","EXTRACT","LOCALTIMESTAMP","NOW","POSITION","SUBSTR","SUBSTRING","SYSDATE","TRIM","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","ACCOUNT","ACTION","AFTER","AGGREGATE","ALGORITHM","ANY","AT","AUTHORS","AUTOCOMMIT","AUTOEXTEND_SIZE","AUTO_INCREMENT","AVG_ROW_LENGTH","BEGIN","BINLOG","BIT","BLOCK","BOOL","BOOLEAN","BTREE","CACHE","CASCADED","CHAIN","CHANGED","CHANNEL","CHECKSUM","PAGE_CHECKSUM","CIPHER","CLASS_ORIGIN","CLIENT","CLOSE","CLUSTERING","COALESCE","CODE","COLUMNS","COLUMN_FORMAT","COLUMN_NAME","COMMENT","COMMIT","COMPACT","COMPLETION","COMPRESSED","COMPRESSION","CONCURRENT","CONNECT","CONNECTION","CONSISTENT","CONSTRAINT_CATALOG","CONSTRAINT_SCHEMA","CONSTRAINT_NAME","CONTAINS","CONTEXT","CONTRIBUTORS","COPY","CPU","CYCLE","CURSOR_NAME","DATA","DATAFILE","DEALLOCATE","DEFAULT_AUTH","DEFINER","DELAY_KEY_WRITE","DES_KEY_FILE","DIRECTORY","DISABLE","DISCARD","DISK","DO","DUMPFILE","DUPLICATE","DYNAMIC","ENABLE","ENCRYPTED","ENCRYPTION","ENCRYPTION_KEY_ID","END","ENDS","ENGINE","ENGINES","ERROR","ERRORS","ESCAPE","EVEN","EVENT","EVENTS","EVERY","EXCHANGE","EXCLUSIVE","EXPIRE","EXPORT","EXTENDED","EXTENT_SIZE","FAILED_LOGIN_ATTEMPTS","FAST","FAULTS","FIELDS","FILE_BLOCK_SIZE","FILTER","FIRST","FIXED","FLUSH","FOLLOWING","FOLLOWS","FOUND","FULL","FUNCTION","GENERAL","GLOBAL","GRANTS","GROUP_REPLICATION","HANDLER","HASH","HELP","HISTORY","HOST","HOSTS","IDENTIFIED","IGNORE_SERVER_IDS","IMPORT","INCREMENT","INDEXES","INITIAL_SIZE","INPLACE","INSERT_METHOD","INSTALL","INSTANCE","INSTANT","INVISIBLE","INVOKER","IO","IO_THREAD","IPC","ISOLATION","ISSUER","JSON","KEY_BLOCK_SIZE","LANGUAGE","LAST","LEAVES","LESS","LEVEL","LIST","LOCAL","LOGFILE","LOGS","MASTER","MASTER_AUTO_POSITION","MASTER_CONNECT_RETRY","MASTER_DELAY","MASTER_HEARTBEAT_PERIOD","MASTER_HOST","MASTER_LOG_FILE","MASTER_LOG_POS","MASTER_PASSWORD","MASTER_PORT","MASTER_RETRY_COUNT","MASTER_SSL","MASTER_SSL_CA","MASTER_SSL_CAPATH","MASTER_SSL_CERT","MASTER_SSL_CIPHER","MASTER_SSL_CRL","MASTER_SSL_CRLPATH","MASTER_SSL_KEY","MASTER_TLS_VERSION","MASTER_USER","MAX_CONNECTIONS_PER_HOUR","MAX_QUERIES_PER_HOUR","MAX_ROWS","MAX_SIZE","MAX_UPDATES_PER_HOUR","MAX_USER_CONNECTIONS","MEDIUM","MEMBER","MERGE","MESSAGE_TEXT","MID","MIGRATE","MIN_ROWS","MODE","MODIFY","MUTEX","MYSQL","MYSQL_ERRNO","NAME","NAMES","NCHAR","NEVER","NEXT","NO","NOCACHE","NOCOPY","NOCYCLE","NOMAXVALUE","NOMINVALUE","NOWAIT","NODEGROUP","NONE","ODBC","OFFLINE","OFFSET","OF","OJ","OLD_PASSWORD","ONE","ONLINE","ONLY","OPEN","OPTIMIZER_COSTS","OPTIONS","OWNER","PACK_KEYS","PAGE","PAGE_COMPRESSED","PAGE_COMPRESSION_LEVEL","PARSER","PARTIAL","PARTITIONING","PARTITIONS","PASSWORD","PASSWORD_LOCK_TIME","PHASE","PLUGIN","PLUGIN_DIR","PLUGINS","PORT","PRECEDES","PRECEDING","PREPARE","PRESERVE","PREV","PROCESSLIST","PROFILE","PROFILES","PROXY","QUERY","QUICK","REBUILD","RECOVER","RECURSIVE","REDO_BUFFER_SIZE","REDUNDANT","RELAY","RELAY_LOG_FILE","RELAY_LOG_POS","RELAYLOG","REMOVE","REORGANIZE","REPAIR","REPLICATE_DO_DB","REPLICATE_DO_TABLE","REPLICATE_IGNORE_DB","REPLICATE_IGNORE_TABLE","REPLICATE_REWRITE_DB","REPLICATE_WILD_DO_TABLE","REPLICATE_WILD_IGNORE_TABLE","REPLICATION","RESET","RESTART","RESUME","RETURNED_SQLSTATE","RETURNING","RETURNS","REUSE","ROLE","ROLLBACK","ROLLUP","ROTATE","ROW","ROWS","ROW_FORMAT","RTREE","SAVEPOINT","SCHEDULE","SECURITY","SEQUENCE","SERVER","SESSION","SHARE","SHARED","SIGNED","SIMPLE","SLAVE","SLOW","SNAPSHOT","SOCKET","SOME","SONAME","SOUNDS","SOURCE","SQL_AFTER_GTIDS","SQL_AFTER_MTS_GAPS","SQL_BEFORE_GTIDS","SQL_BUFFER_RESULT","SQL_CACHE","SQL_NO_CACHE","SQL_THREAD","START","STARTS","STATS_AUTO_RECALC","STATS_PERSISTENT","STATS_SAMPLE_PAGES","STATUS","STOP","STORAGE","STORED","STRING","SUBCLASS_ORIGIN","SUBJECT","SUBPARTITION","SUBPARTITIONS","SUSPEND","SWAPS","SWITCHES","TABLE_NAME","TABLESPACE","TABLE_TYPE","TEMPORARY","TEMPTABLE","THAN","TRADITIONAL","TRANSACTION","TRANSACTIONAL","TRIGGERS","TRUNCATE","UNBOUNDED","UNDEFINED","UNDOFILE","UNDO_BUFFER_SIZE","UNINSTALL","UNKNOWN","UNTIL","UPGRADE","USER","USE_FRM","USER_RESOURCES","VALIDATION","VALUE","VARIABLES","VIEW","VIRTUAL","VISIBLE","WAIT","WARNINGS","WINDOW","WITHOUT","WORK","WRAPPER","X509","XA","XML","YES","EUR","USA","JIS","ISO","INTERNAL","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","MICROSECOND","ADMIN","APPLICATION_PASSWORD_ADMIN","AUDIT_ABORT_EXEMPT","AUDIT_ADMIN","AUTHENTICATION_POLICY_ADMIN","BACKUP_ADMIN","BINLOG_ADMIN","BINLOG_ENCRYPTION_ADMIN","CLONE_ADMIN","CONNECTION_ADMIN","ENCRYPTION_KEY_ADMIN","EXECUTE","FILE","FIREWALL_ADMIN","FIREWALL_EXEMPT","FIREWALL_USER","FLUSH_OPTIMIZER_COSTS","FLUSH_STATUS","FLUSH_TABLES","FLUSH_USER_RESOURCES","GROUP_REPLICATION_ADMIN","INNODB_REDO_LOG_ARCHIVE","INNODB_REDO_LOG_ENABLE","INVOKE","LAMBDA","NDB_STORED_USER","PASSWORDLESS_USER_ADMIN","PERSIST_RO_VARIABLES_ADMIN","PRIVILEGES","PROCESS","RELOAD","REPLICATION_APPLIER","REPLICATION_SLAVE_ADMIN","RESOURCE_GROUP_ADMIN","RESOURCE_GROUP_USER","ROLE_ADMIN","ROUTINE","S3","SERVICE_CONNECTION_ADMIN","SESSION_VARIABLES_ADMIN","SET_USER_ID","SHOW_ROUTINE","SHUTDOWN","SUPER","SYSTEM_VARIABLES_ADMIN","TABLES","TABLE_ENCRYPTION_ADMIN","VERSION_TOKEN_ADMIN","XA_RECOVER_ADMIN","ARMSCII8","ASCII","BIG5","CP1250","CP1251","CP1256","CP1257","CP850","CP852","CP866","CP932","DEC8","EUCJPMS","EUCKR","GB18030","GB2312","GBK","GEOSTD8","GREEK","HEBREW","HP8","KEYBCS2","KOI8R","KOI8U","LATIN1","LATIN2","LATIN5","LATIN7","MACCE","MACROMAN","SJIS","SWE7","TIS620","UCS2","UJIS","UTF16","UTF16LE","UTF32","UTF8","UTF8MB3","UTF8MB4","ARCHIVE","BLACKHOLE","CSV","FEDERATED","INNODB","MEMORY","MRG_MYISAM","MYISAM","NDB","NDBCLUSTER","PERFORMANCE_SCHEMA","TOKUDB","REPEATABLE","COMMITTED","UNCOMMITTED","SERIALIZABLE","GEOMETRYCOLLECTION","GEOMCOLLECTION","GEOMETRY","LINESTRING","MULTILINESTRING","MULTIPOINT","MULTIPOLYGON","POINT","POLYGON","ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","AREA","ASBINARY","ASIN","ASTEXT","ASWKB","ASWKT","ASYMMETRIC_DECRYPT","ASYMMETRIC_DERIVE","ASYMMETRIC_ENCRYPT","ASYMMETRIC_SIGN","ASYMMETRIC_VERIFY","ATAN","ATAN2","BENCHMARK","BIN","BIT_COUNT","BIT_LENGTH","BUFFER","CATALOG_NAME","CEIL","CEILING","CENTROID","CHARACTER_LENGTH","CHARSET","CHAR_LENGTH","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT_TZ","COS","COT","CRC32","CREATE_ASYMMETRIC_PRIV_KEY","CREATE_ASYMMETRIC_PUB_KEY","CREATE_DH_PARAMETERS","CREATE_DIGEST","CROSSES","DATEDIFF","DATE_FORMAT","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEGREES","DES_DECRYPT","DES_ENCRYPT","DIMENSION","DISJOINT","ELT","ENCODE","ENCRYPT","ENDPOINT","ENGINE_ATTRIBUTE","ENVELOPE","EQUALS","EXP","EXPORT_SET","EXTERIORRING","EXTRACTVALUE","FIELD","FIND_IN_SET","FLOOR","FORMAT","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GEOMCOLLFROMTEXT","GEOMCOLLFROMWKB","GEOMETRYCOLLECTIONFROMTEXT","GEOMETRYCOLLECTIONFROMWKB","GEOMETRYFROMTEXT","GEOMETRYFROMWKB","GEOMETRYN","GEOMETRYTYPE","GEOMFROMTEXT","GEOMFROMWKB","GET_FORMAT","GET_LOCK","GLENGTH","GREATEST","GTID_SUBSET","GTID_SUBTRACT","HEX","IFNULL","INET6_ATON","INET6_NTOA","INET_ATON","INET_NTOA","INSTR","INTERIORRINGN","INTERSECTS","ISCLOSED","ISEMPTY","ISNULL","ISSIMPLE","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS_USED_LOCK","LAST_INSERT_ID","LCASE","LEAST","LENGTH","LINEFROMTEXT","LINEFROMWKB","LINESTRINGFROMTEXT","LINESTRINGFROMWKB","LN","LOAD_FILE","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","MAKEDATE","MAKETIME","MAKE_SET","MASTER_POS_WAIT","MBRCONTAINS","MBRDISJOINT","MBREQUAL","MBRINTERSECTS","MBROVERLAPS","MBRTOUCHES","MBRWITHIN","MD5","MLINEFROMTEXT","MLINEFROMWKB","MONTHNAME","MPOINTFROMTEXT","MPOINTFROMWKB","MPOLYFROMTEXT","MPOLYFROMWKB","MULTILINESTRINGFROMTEXT","MULTILINESTRINGFROMWKB","MULTIPOINTFROMTEXT","MULTIPOINTFROMWKB","MULTIPOLYGONFROMTEXT","MULTIPOLYGONFROMWKB","NAME_CONST","NULLIF","NUMGEOMETRIES","NUMINTERIORRINGS","NUMPOINTS","OCT","OCTET_LENGTH","ORD","OVERLAPS","PERIOD_ADD","PERIOD_DIFF","PI","POINTFROMTEXT","POINTFROMWKB","POINTN","POLYFROMTEXT","POLYFROMWKB","POLYGONFROMTEXT","POLYGONFROMWKB","POW","POWER","QUOTE","RADIANS","RAND","RANDOM","RANDOM_BYTES","RELEASE_LOCK","REVERSE","ROUND","ROW_COUNT","RPAD","RTRIM","SEC_TO_TIME","SECONDARY_ENGINE_ATTRIBUTE","SESSION_USER","SHA","SHA1","SHA2","SCHEMA_NAME","SIGN","SIN","SLEEP","SOUNDEX","SQL_THREAD_WAIT_AFTER_GTIDS","SQRT","SRID","STARTPOINT","STRCMP","STR_TO_DATE","ST_AREA","ST_ASBINARY","ST_ASTEXT","ST_ASWKB","ST_ASWKT","ST_BUFFER","ST_CENTROID","ST_CONTAINS","ST_CROSSES","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_ENDPOINT","ST_ENVELOPE","ST_EQUALS","ST_EXTERIORRING","ST_GEOMCOLLFROMTEXT","ST_GEOMCOLLFROMTXT","ST_GEOMCOLLFROMWKB","ST_GEOMETRYCOLLECTIONFROMTEXT","ST_GEOMETRYCOLLECTIONFROMWKB","ST_GEOMETRYFROMTEXT","ST_GEOMETRYFROMWKB","ST_GEOMETRYN","ST_GEOMETRYTYPE","ST_GEOMFROMTEXT","ST_GEOMFROMWKB","ST_INTERIORRINGN","ST_INTERSECTION","ST_INTERSECTS","ST_ISCLOSED","ST_ISEMPTY","ST_ISSIMPLE","ST_LINEFROMTEXT","ST_LINEFROMWKB","ST_LINESTRINGFROMTEXT","ST_LINESTRINGFROMWKB","ST_NUMGEOMETRIES","ST_NUMINTERIORRING","ST_NUMINTERIORRINGS","ST_NUMPOINTS","ST_OVERLAPS","ST_POINTFROMTEXT","ST_POINTFROMWKB","ST_POINTN","ST_POLYFROMTEXT","ST_POLYFROMWKB","ST_POLYGONFROMTEXT","ST_POLYGONFROMWKB","ST_SRID","ST_STARTPOINT","ST_SYMDIFFERENCE","ST_TOUCHES","ST_UNION","ST_WITHIN","ST_X","ST_Y","SUBDATE","SUBSTRING_INDEX","SUBTIME","SYSTEM_USER","TAN","TIMEDIFF","TIMESTAMPADD","TIMESTAMPDIFF","TIME_FORMAT","TIME_TO_SEC","TOUCHES","TO_BASE64","TO_DAYS","TO_SECONDS","TP_CONNECTION_ADMIN","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UUID","UUID_SHORT","VALIDATE_PASSWORD_STRENGTH","VERSION","WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","WITHIN","YEARWEEK","Y_FUNCTION","X_FUNCTION","VAR_ASSIGN","PLUS_ASSIGN","MINUS_ASSIGN","MULT_ASSIGN","DIV_ASSIGN","MOD_ASSIGN","AND_ASSIGN","XOR_ASSIGN","OR_ASSIGN","STAR","DIVIDE","MODULE","PLUS","MINUS","DIV","MOD","EQUAL_SYMBOL","GREATER_SYMBOL","LESS_SYMBOL","EXCLAMATION_SYMBOL","BIT_NOT_OP","BIT_OR_OP","BIT_AND_OP","BIT_XOR_OP","DOT","LR_BRACKET","RR_BRACKET","COMMA","SEMI","AT_SIGN","ZERO_DECIMAL","ONE_DECIMAL","TWO_DECIMAL","SINGLE_QUOTE_SYMB","DOUBLE_QUOTE_SYMB","REVERSE_QUOTE_SYMB","COLON_SYMB","CHARSET_REVERSE_QOUTE_STRING","FILESIZE_LITERAL","START_NATIONAL_STRING_LITERAL","STRING_LITERAL","DECIMAL_LITERAL","HEXADECIMAL_LITERAL","REAL_LITERAL","NULL_SPEC_LITERAL","BIT_STRING","STRING_CHARSET_NAME","DOT_ID","ID","REVERSE_QUOTE_ID","HOST_IP_ADDRESS","LOCAL_ID","GLOBAL_ID","ERROR_RECONGNIGION"],Ki.modeNames=["DEFAULT_MODE"],Ki.ruleNames=["SPACE","SPEC_MYSQL_COMMENT","COMMENT_INPUT","LINE_COMMENT","ADD","ALL","ALTER","ALWAYS","ANALYZE","AND","ARRAY","AS","ASC","ATTRIBUTE","BEFORE","BETWEEN","BOTH","BUCKETS","BY","CALL","CASCADE","CASE","CAST","CHANGE","CHARACTER","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT","CURRENT_ROLE","CURRENT_USER","CURSOR","DATABASE","DATABASES","DECLARE","DEFAULT","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DIAGNOSTICS","DISTINCT","DISTINCTROW","DROP","EACH","ELSE","ELSEIF","EMPTY","ENCLOSED","ENFORCED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FOR","FORCE","FOREIGN","FROM","FULLTEXT","GENERATED","GET","GRANT","GROUP","HAVING","HIGH_PRIORITY","HISTOGRAM","IF","IGNORE","IGNORED","IN","INDEX","INFILE","INNER","INOUT","INSERT","INTERVAL","INTO","IS","ITERATE","JOIN","KEY","KEYS","KILL","LATERAL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCK","LOCKED","LOOP","LOW_PRIORITY","MASTER_BIND","MASTER_SSL_VERIFY_SERVER_CERT","MATCH","MAXVALUE","MINVALUE","MODIFIES","NATURAL","NOT","NO_WRITE_TO_BINLOG","NULL_LITERAL","NUMBER","ON","OPTIMIZE","OPTION","OPTIONAL","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PARTITION","PRIMARY","PROCEDURE","PURGE","RANGE","READ","READS","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESIGNAL","RESTRICT","RETAIN","RETURN","REVOKE","RIGHT","RLIKE","SCHEMA","SCHEMAS","SELECT","SET","SEPARATOR","SHOW","SIGNAL","SKIP_","SKIP_QUERY_REWRITE","SPATIAL","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STACKED","STARTING","STATEMENT","STRAIGHT_JOIN","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNDO","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USING","VALUES","WHEN","WHERE","WHILE","WITH","WRITE","XOR","ZEROFILL","TINYINT","SMALLINT","MEDIUMINT","MIDDLEINT","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","BIGINT","REAL","DOUBLE","PRECISION","FLOAT","FLOAT4","FLOAT8","DECIMAL","DEC","NUMERIC","DATE","TIME","TIMESTAMP","DATETIME","YEAR","CHAR","VARCHAR","NVARCHAR","NATIONAL","BINARY","VARBINARY","TINYBLOB","BLOB","MEDIUMBLOB","LONG","LONGBLOB","TINYTEXT","TEXT","MEDIUMTEXT","LONGTEXT","ENUM","VARYING","SERIAL","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND","SECOND_MICROSECOND","MINUTE_MICROSECOND","HOUR_MICROSECOND","DAY_MICROSECOND","JSON_ARRAY","JSON_ARRAYAGG","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_OBJECTAGG","JSON_OVERLAPS","JSON_PRETTY","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SCHEMA_VALID","JSON_SCHEMA_VALIDATION_REPORT","JSON_SEARCH","JSON_SET","JSON_STORAGE_FREE","JSON_STORAGE_SIZE","JSON_TABLE","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","JSON_VALUE","NESTED","ORDINALITY","PATH","AVG","BIT_AND","BIT_OR","BIT_XOR","COUNT","CUME_DIST","DENSE_RANK","FIRST_VALUE","GROUP_CONCAT","LAG","LAST_VALUE","LEAD","MAX","MIN","NTILE","NTH_VALUE","PERCENT_RANK","RANK","ROW_NUMBER","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","LOCALTIME","CURDATE","CURTIME","DATE_ADD","DATE_SUB","EXTRACT","LOCALTIMESTAMP","NOW","POSITION","SUBSTR","SUBSTRING","SYSDATE","TRIM","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","ACCOUNT","ACTION","AFTER","AGGREGATE","ALGORITHM","ANY","AT","AUTHORS","AUTOCOMMIT","AUTOEXTEND_SIZE","AUTO_INCREMENT","AVG_ROW_LENGTH","BEGIN","BINLOG","BIT","BLOCK","BOOL","BOOLEAN","BTREE","CACHE","CASCADED","CHAIN","CHANGED","CHANNEL","CHECKSUM","PAGE_CHECKSUM","CIPHER","CLASS_ORIGIN","CLIENT","CLOSE","CLUSTERING","COALESCE","CODE","COLUMNS","COLUMN_FORMAT","COLUMN_NAME","COMMENT","COMMIT","COMPACT","COMPLETION","COMPRESSED","COMPRESSION","CONCURRENT","CONNECT","CONNECTION","CONSISTENT","CONSTRAINT_CATALOG","CONSTRAINT_SCHEMA","CONSTRAINT_NAME","CONTAINS","CONTEXT","CONTRIBUTORS","COPY","CPU","CYCLE","CURSOR_NAME","DATA","DATAFILE","DEALLOCATE","DEFAULT_AUTH","DEFINER","DELAY_KEY_WRITE","DES_KEY_FILE","DIRECTORY","DISABLE","DISCARD","DISK","DO","DUMPFILE","DUPLICATE","DYNAMIC","ENABLE","ENCRYPTED","ENCRYPTION","ENCRYPTION_KEY_ID","END","ENDS","ENGINE","ENGINES","ERROR","ERRORS","ESCAPE","EVEN","EVENT","EVENTS","EVERY","EXCHANGE","EXCLUSIVE","EXPIRE","EXPORT","EXTENDED","EXTENT_SIZE","FAILED_LOGIN_ATTEMPTS","FAST","FAULTS","FIELDS","FILE_BLOCK_SIZE","FILTER","FIRST","FIXED","FLUSH","FOLLOWING","FOLLOWS","FOUND","FULL","FUNCTION","GENERAL","GLOBAL","GRANTS","GROUP_REPLICATION","HANDLER","HASH","HELP","HISTORY","HOST","HOSTS","IDENTIFIED","IGNORE_SERVER_IDS","IMPORT","INCREMENT","INDEXES","INITIAL_SIZE","INPLACE","INSERT_METHOD","INSTALL","INSTANCE","INSTANT","INVISIBLE","INVOKER","IO","IO_THREAD","IPC","ISOLATION","ISSUER","JSON","KEY_BLOCK_SIZE","LANGUAGE","LAST","LEAVES","LESS","LEVEL","LIST","LOCAL","LOGFILE","LOGS","MASTER","MASTER_AUTO_POSITION","MASTER_CONNECT_RETRY","MASTER_DELAY","MASTER_HEARTBEAT_PERIOD","MASTER_HOST","MASTER_LOG_FILE","MASTER_LOG_POS","MASTER_PASSWORD","MASTER_PORT","MASTER_RETRY_COUNT","MASTER_SSL","MASTER_SSL_CA","MASTER_SSL_CAPATH","MASTER_SSL_CERT","MASTER_SSL_CIPHER","MASTER_SSL_CRL","MASTER_SSL_CRLPATH","MASTER_SSL_KEY","MASTER_TLS_VERSION","MASTER_USER","MAX_CONNECTIONS_PER_HOUR","MAX_QUERIES_PER_HOUR","MAX_ROWS","MAX_SIZE","MAX_UPDATES_PER_HOUR","MAX_USER_CONNECTIONS","MEDIUM","MEMBER","MERGE","MESSAGE_TEXT","MID","MIGRATE","MIN_ROWS","MODE","MODIFY","MUTEX","MYSQL","MYSQL_ERRNO","NAME","NAMES","NCHAR","NEVER","NEXT","NO","NOCACHE","NOCOPY","NOCYCLE","NOMAXVALUE","NOMINVALUE","NOWAIT","NODEGROUP","NONE","ODBC","OFFLINE","OFFSET","OF","OJ","OLD_PASSWORD","ONE","ONLINE","ONLY","OPEN","OPTIMIZER_COSTS","OPTIONS","OWNER","PACK_KEYS","PAGE","PAGE_COMPRESSED","PAGE_COMPRESSION_LEVEL","PARSER","PARTIAL","PARTITIONING","PARTITIONS","PASSWORD","PASSWORD_LOCK_TIME","PHASE","PLUGIN","PLUGIN_DIR","PLUGINS","PORT","PRECEDES","PRECEDING","PREPARE","PRESERVE","PREV","PROCESSLIST","PROFILE","PROFILES","PROXY","QUERY","QUICK","REBUILD","RECOVER","RECURSIVE","REDO_BUFFER_SIZE","REDUNDANT","RELAY","RELAY_LOG_FILE","RELAY_LOG_POS","RELAYLOG","REMOVE","REORGANIZE","REPAIR","REPLICATE_DO_DB","REPLICATE_DO_TABLE","REPLICATE_IGNORE_DB","REPLICATE_IGNORE_TABLE","REPLICATE_REWRITE_DB","REPLICATE_WILD_DO_TABLE","REPLICATE_WILD_IGNORE_TABLE","REPLICATION","RESET","RESTART","RESUME","RETURNED_SQLSTATE","RETURNING","RETURNS","REUSE","ROLE","ROLLBACK","ROLLUP","ROTATE","ROW","ROWS","ROW_FORMAT","RTREE","SAVEPOINT","SCHEDULE","SECURITY","SEQUENCE","SERVER","SESSION","SHARE","SHARED","SIGNED","SIMPLE","SLAVE","SLOW","SNAPSHOT","SOCKET","SOME","SONAME","SOUNDS","SOURCE","SQL_AFTER_GTIDS","SQL_AFTER_MTS_GAPS","SQL_BEFORE_GTIDS","SQL_BUFFER_RESULT","SQL_CACHE","SQL_NO_CACHE","SQL_THREAD","START","STARTS","STATS_AUTO_RECALC","STATS_PERSISTENT","STATS_SAMPLE_PAGES","STATUS","STOP","STORAGE","STORED","STRING","SUBCLASS_ORIGIN","SUBJECT","SUBPARTITION","SUBPARTITIONS","SUSPEND","SWAPS","SWITCHES","TABLE_NAME","TABLESPACE","TABLE_TYPE","TEMPORARY","TEMPTABLE","THAN","TRADITIONAL","TRANSACTION","TRANSACTIONAL","TRIGGERS","TRUNCATE","UNBOUNDED","UNDEFINED","UNDOFILE","UNDO_BUFFER_SIZE","UNINSTALL","UNKNOWN","UNTIL","UPGRADE","USER","USE_FRM","USER_RESOURCES","VALIDATION","VALUE","VARIABLES","VIEW","VIRTUAL","VISIBLE","WAIT","WARNINGS","WINDOW","WITHOUT","WORK","WRAPPER","X509","XA","XML","YES","EUR","USA","JIS","ISO","INTERNAL","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","MICROSECOND","ADMIN","APPLICATION_PASSWORD_ADMIN","AUDIT_ABORT_EXEMPT","AUDIT_ADMIN","AUTHENTICATION_POLICY_ADMIN","BACKUP_ADMIN","BINLOG_ADMIN","BINLOG_ENCRYPTION_ADMIN","CLONE_ADMIN","CONNECTION_ADMIN","ENCRYPTION_KEY_ADMIN","EXECUTE","FILE","FIREWALL_ADMIN","FIREWALL_EXEMPT","FIREWALL_USER","FLUSH_OPTIMIZER_COSTS","FLUSH_STATUS","FLUSH_TABLES","FLUSH_USER_RESOURCES","GROUP_REPLICATION_ADMIN","INNODB_REDO_LOG_ARCHIVE","INNODB_REDO_LOG_ENABLE","INVOKE","LAMBDA","NDB_STORED_USER","PASSWORDLESS_USER_ADMIN","PERSIST_RO_VARIABLES_ADMIN","PRIVILEGES","PROCESS","RELOAD","REPLICATION_APPLIER","REPLICATION_SLAVE_ADMIN","RESOURCE_GROUP_ADMIN","RESOURCE_GROUP_USER","ROLE_ADMIN","ROUTINE","S3","SERVICE_CONNECTION_ADMIN","SESSION_VARIABLES_ADMIN","SET_USER_ID","SHOW_ROUTINE","SHUTDOWN","SUPER","SYSTEM_VARIABLES_ADMIN","TABLES","TABLE_ENCRYPTION_ADMIN","VERSION_TOKEN_ADMIN","XA_RECOVER_ADMIN","ARMSCII8","ASCII","BIG5","CP1250","CP1251","CP1256","CP1257","CP850","CP852","CP866","CP932","DEC8","EUCJPMS","EUCKR","GB18030","GB2312","GBK","GEOSTD8","GREEK","HEBREW","HP8","KEYBCS2","KOI8R","KOI8U","LATIN1","LATIN2","LATIN5","LATIN7","MACCE","MACROMAN","SJIS","SWE7","TIS620","UCS2","UJIS","UTF16","UTF16LE","UTF32","UTF8","UTF8MB3","UTF8MB4","ARCHIVE","BLACKHOLE","CSV","FEDERATED","INNODB","MEMORY","MRG_MYISAM","MYISAM","NDB","NDBCLUSTER","PERFORMANCE_SCHEMA","TOKUDB","REPEATABLE","COMMITTED","UNCOMMITTED","SERIALIZABLE","GEOMETRYCOLLECTION","GEOMCOLLECTION","GEOMETRY","LINESTRING","MULTILINESTRING","MULTIPOINT","MULTIPOLYGON","POINT","POLYGON","ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","AREA","ASBINARY","ASIN","ASTEXT","ASWKB","ASWKT","ASYMMETRIC_DECRYPT","ASYMMETRIC_DERIVE","ASYMMETRIC_ENCRYPT","ASYMMETRIC_SIGN","ASYMMETRIC_VERIFY","ATAN","ATAN2","BENCHMARK","BIN","BIT_COUNT","BIT_LENGTH","BUFFER","CATALOG_NAME","CEIL","CEILING","CENTROID","CHARACTER_LENGTH","CHARSET","CHAR_LENGTH","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT_TZ","COS","COT","CRC32","CREATE_ASYMMETRIC_PRIV_KEY","CREATE_ASYMMETRIC_PUB_KEY","CREATE_DH_PARAMETERS","CREATE_DIGEST","CROSSES","DATEDIFF","DATE_FORMAT","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEGREES","DES_DECRYPT","DES_ENCRYPT","DIMENSION","DISJOINT","ELT","ENCODE","ENCRYPT","ENDPOINT","ENGINE_ATTRIBUTE","ENVELOPE","EQUALS","EXP","EXPORT_SET","EXTERIORRING","EXTRACTVALUE","FIELD","FIND_IN_SET","FLOOR","FORMAT","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GEOMCOLLFROMTEXT","GEOMCOLLFROMWKB","GEOMETRYCOLLECTIONFROMTEXT","GEOMETRYCOLLECTIONFROMWKB","GEOMETRYFROMTEXT","GEOMETRYFROMWKB","GEOMETRYN","GEOMETRYTYPE","GEOMFROMTEXT","GEOMFROMWKB","GET_FORMAT","GET_LOCK","GLENGTH","GREATEST","GTID_SUBSET","GTID_SUBTRACT","HEX","IFNULL","INET6_ATON","INET6_NTOA","INET_ATON","INET_NTOA","INSTR","INTERIORRINGN","INTERSECTS","ISCLOSED","ISEMPTY","ISNULL","ISSIMPLE","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS_USED_LOCK","LAST_INSERT_ID","LCASE","LEAST","LENGTH","LINEFROMTEXT","LINEFROMWKB","LINESTRINGFROMTEXT","LINESTRINGFROMWKB","LN","LOAD_FILE","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","MAKEDATE","MAKETIME","MAKE_SET","MASTER_POS_WAIT","MBRCONTAINS","MBRDISJOINT","MBREQUAL","MBRINTERSECTS","MBROVERLAPS","MBRTOUCHES","MBRWITHIN","MD5","MLINEFROMTEXT","MLINEFROMWKB","MONTHNAME","MPOINTFROMTEXT","MPOINTFROMWKB","MPOLYFROMTEXT","MPOLYFROMWKB","MULTILINESTRINGFROMTEXT","MULTILINESTRINGFROMWKB","MULTIPOINTFROMTEXT","MULTIPOINTFROMWKB","MULTIPOLYGONFROMTEXT","MULTIPOLYGONFROMWKB","NAME_CONST","NULLIF","NUMGEOMETRIES","NUMINTERIORRINGS","NUMPOINTS","OCT","OCTET_LENGTH","ORD","OVERLAPS","PERIOD_ADD","PERIOD_DIFF","PI","POINTFROMTEXT","POINTFROMWKB","POINTN","POLYFROMTEXT","POLYFROMWKB","POLYGONFROMTEXT","POLYGONFROMWKB","POW","POWER","QUOTE","RADIANS","RAND","RANDOM","RANDOM_BYTES","RELEASE_LOCK","REVERSE","ROUND","ROW_COUNT","RPAD","RTRIM","SEC_TO_TIME","SECONDARY_ENGINE_ATTRIBUTE","SESSION_USER","SHA","SHA1","SHA2","SCHEMA_NAME","SIGN","SIN","SLEEP","SOUNDEX","SQL_THREAD_WAIT_AFTER_GTIDS","SQRT","SRID","STARTPOINT","STRCMP","STR_TO_DATE","ST_AREA","ST_ASBINARY","ST_ASTEXT","ST_ASWKB","ST_ASWKT","ST_BUFFER","ST_CENTROID","ST_CONTAINS","ST_CROSSES","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_ENDPOINT","ST_ENVELOPE","ST_EQUALS","ST_EXTERIORRING","ST_GEOMCOLLFROMTEXT","ST_GEOMCOLLFROMTXT","ST_GEOMCOLLFROMWKB","ST_GEOMETRYCOLLECTIONFROMTEXT","ST_GEOMETRYCOLLECTIONFROMWKB","ST_GEOMETRYFROMTEXT","ST_GEOMETRYFROMWKB","ST_GEOMETRYN","ST_GEOMETRYTYPE","ST_GEOMFROMTEXT","ST_GEOMFROMWKB","ST_INTERIORRINGN","ST_INTERSECTION","ST_INTERSECTS","ST_ISCLOSED","ST_ISEMPTY","ST_ISSIMPLE","ST_LINEFROMTEXT","ST_LINEFROMWKB","ST_LINESTRINGFROMTEXT","ST_LINESTRINGFROMWKB","ST_NUMGEOMETRIES","ST_NUMINTERIORRING","ST_NUMINTERIORRINGS","ST_NUMPOINTS","ST_OVERLAPS","ST_POINTFROMTEXT","ST_POINTFROMWKB","ST_POINTN","ST_POLYFROMTEXT","ST_POLYFROMWKB","ST_POLYGONFROMTEXT","ST_POLYGONFROMWKB","ST_SRID","ST_STARTPOINT","ST_SYMDIFFERENCE","ST_TOUCHES","ST_UNION","ST_WITHIN","ST_X","ST_Y","SUBDATE","SUBSTRING_INDEX","SUBTIME","SYSTEM_USER","TAN","TIMEDIFF","TIMESTAMPADD","TIMESTAMPDIFF","TIME_FORMAT","TIME_TO_SEC","TOUCHES","TO_BASE64","TO_DAYS","TO_SECONDS","TP_CONNECTION_ADMIN","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UUID","UUID_SHORT","VALIDATE_PASSWORD_STRENGTH","VERSION","WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","WITHIN","YEARWEEK","Y_FUNCTION","X_FUNCTION","VAR_ASSIGN","PLUS_ASSIGN","MINUS_ASSIGN","MULT_ASSIGN","DIV_ASSIGN","MOD_ASSIGN","AND_ASSIGN","XOR_ASSIGN","OR_ASSIGN","STAR","DIVIDE","MODULE","PLUS","MINUS","DIV","MOD","EQUAL_SYMBOL","GREATER_SYMBOL","LESS_SYMBOL","EXCLAMATION_SYMBOL","BIT_NOT_OP","BIT_OR_OP","BIT_AND_OP","BIT_XOR_OP","DOT","LR_BRACKET","RR_BRACKET","COMMA","SEMI","AT_SIGN","ZERO_DECIMAL","ONE_DECIMAL","TWO_DECIMAL","SINGLE_QUOTE_SYMB","DOUBLE_QUOTE_SYMB","REVERSE_QUOTE_SYMB","COLON_SYMB","QUOTE_SYMB","CHARSET_REVERSE_QOUTE_STRING","FILESIZE_LITERAL","START_NATIONAL_STRING_LITERAL","STRING_LITERAL","DECIMAL_LITERAL","HEXADECIMAL_LITERAL","REAL_LITERAL","NULL_SPEC_LITERAL","BIT_STRING","STRING_CHARSET_NAME","DOT_ID","ID","REVERSE_QUOTE_ID","HOST_IP_ADDRESS","LOCAL_ID","GLOBAL_ID","CHARSET_NAME","EXPONENT_NUM_PART","ID_LITERAL","DQUOTA_STRING","SQUOTA_STRING","BQUOTA_STRING","HEX_DIGIT","DEC_DIGIT","BIT_STRING_L","IP_ADDRESS","ERROR_RECONGNIGION"],Ki._serializedATN=[4,0,1161,13703,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350,2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356,7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361,2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367,7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372,2,373,7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378,7,378,2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383,2,384,7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389,7,389,2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394,2,395,7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400,7,400,2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405,2,406,7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411,7,411,2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,2,417,7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421,7,421,2,422,7,422,2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427,7,427,2,428,7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433,7,433,2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438,2,439,7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444,7,444,2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449,2,450,7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455,7,455,2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460,2,461,7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466,7,466,2,467,7,467,2,468,7,468,2,469,7,469,2,470,7,470,2,471,7,471,2,472,7,472,2,473,7,473,2,474,7,474,2,475,7,475,2,476,7,476,2,477,7,477,2,478,7,478,2,479,7,479,2,480,7,480,2,481,7,481,2,482,7,482,2,483,7,483,2,484,7,484,2,485,7,485,2,486,7,486,2,487,7,487,2,488,7,488,2,489,7,489,2,490,7,490,2,491,7,491,2,492,7,492,2,493,7,493,2,494,7,494,2,495,7,495,2,496,7,496,2,497,7,497,2,498,7,498,2,499,7,499,2,500,7,500,2,501,7,501,2,502,7,502,2,503,7,503,2,504,7,504,2,505,7,505,2,506,7,506,2,507,7,507,2,508,7,508,2,509,7,509,2,510,7,510,2,511,7,511,2,512,7,512,2,513,7,513,2,514,7,514,2,515,7,515,2,516,7,516,2,517,7,517,2,518,7,518,2,519,7,519,2,520,7,520,2,521,7,521,2,522,7,522,2,523,7,523,2,524,7,524,2,525,7,525,2,526,7,526,2,527,7,527,2,528,7,528,2,529,7,529,2,530,7,530,2,531,7,531,2,532,7,532,2,533,7,533,2,534,7,534,2,535,7,535,2,536,7,536,2,537,7,537,2,538,7,538,2,539,7,539,2,540,7,540,2,541,7,541,2,542,7,542,2,543,7,543,2,544,7,544,2,545,7,545,2,546,7,546,2,547,7,547,2,548,7,548,2,549,7,549,2,550,7,550,2,551,7,551,2,552,7,552,2,553,7,553,2,554,7,554,2,555,7,555,2,556,7,556,2,557,7,557,2,558,7,558,2,559,7,559,2,560,7,560,2,561,7,561,2,562,7,562,2,563,7,563,2,564,7,564,2,565,7,565,2,566,7,566,2,567,7,567,2,568,7,568,2,569,7,569,2,570,7,570,2,571,7,571,2,572,7,572,2,573,7,573,2,574,7,574,2,575,7,575,2,576,7,576,2,577,7,577,2,578,7,578,2,579,7,579,2,580,7,580,2,581,7,581,2,582,7,582,2,583,7,583,2,584,7,584,2,585,7,585,2,586,7,586,2,587,7,587,2,588,7,588,2,589,7,589,2,590,7,590,2,591,7,591,2,592,7,592,2,593,7,593,2,594,7,594,2,595,7,595,2,596,7,596,2,597,7,597,2,598,7,598,2,599,7,599,2,600,7,600,2,601,7,601,2,602,7,602,2,603,7,603,2,604,7,604,2,605,7,605,2,606,7,606,2,607,7,607,2,608,7,608,2,609,7,609,2,610,7,610,2,611,7,611,2,612,7,612,2,613,7,613,2,614,7,614,2,615,7,615,2,616,7,616,2,617,7,617,2,618,7,618,2,619,7,619,2,620,7,620,2,621,7,621,2,622,7,622,2,623,7,623,2,624,7,624,2,625,7,625,2,626,7,626,2,627,7,627,2,628,7,628,2,629,7,629,2,630,7,630,2,631,7,631,2,632,7,632,2,633,7,633,2,634,7,634,2,635,7,635,2,636,7,636,2,637,7,637,2,638,7,638,2,639,7,639,2,640,7,640,2,641,7,641,2,642,7,642,2,643,7,643,2,644,7,644,2,645,7,645,2,646,7,646,2,647,7,647,2,648,7,648,2,649,7,649,2,650,7,650,2,651,7,651,2,652,7,652,2,653,7,653,2,654,7,654,2,655,7,655,2,656,7,656,2,657,7,657,2,658,7,658,2,659,7,659,2,660,7,660,2,661,7,661,2,662,7,662,2,663,7,663,2,664,7,664,2,665,7,665,2,666,7,666,2,667,7,667,2,668,7,668,2,669,7,669,2,670,7,670,2,671,7,671,2,672,7,672,2,673,7,673,2,674,7,674,2,675,7,675,2,676,7,676,2,677,7,677,2,678,7,678,2,679,7,679,2,680,7,680,2,681,7,681,2,682,7,682,2,683,7,683,2,684,7,684,2,685,7,685,2,686,7,686,2,687,7,687,2,688,7,688,2,689,7,689,2,690,7,690,2,691,7,691,2,692,7,692,2,693,7,693,2,694,7,694,2,695,7,695,2,696,7,696,2,697,7,697,2,698,7,698,2,699,7,699,2,700,7,700,2,701,7,701,2,702,7,702,2,703,7,703,2,704,7,704,2,705,7,705,2,706,7,706,2,707,7,707,2,708,7,708,2,709,7,709,2,710,7,710,2,711,7,711,2,712,7,712,2,713,7,713,2,714,7,714,2,715,7,715,2,716,7,716,2,717,7,717,2,718,7,718,2,719,7,719,2,720,7,720,2,721,7,721,2,722,7,722,2,723,7,723,2,724,7,724,2,725,7,725,2,726,7,726,2,727,7,727,2,728,7,728,2,729,7,729,2,730,7,730,2,731,7,731,2,732,7,732,2,733,7,733,2,734,7,734,2,735,7,735,2,736,7,736,2,737,7,737,2,738,7,738,2,739,7,739,2,740,7,740,2,741,7,741,2,742,7,742,2,743,7,743,2,744,7,744,2,745,7,745,2,746,7,746,2,747,7,747,2,748,7,748,2,749,7,749,2,750,7,750,2,751,7,751,2,752,7,752,2,753,7,753,2,754,7,754,2,755,7,755,2,756,7,756,2,757,7,757,2,758,7,758,2,759,7,759,2,760,7,760,2,761,7,761,2,762,7,762,2,763,7,763,2,764,7,764,2,765,7,765,2,766,7,766,2,767,7,767,2,768,7,768,2,769,7,769,2,770,7,770,2,771,7,771,2,772,7,772,2,773,7,773,2,774,7,774,2,775,7,775,2,776,7,776,2,777,7,777,2,778,7,778,2,779,7,779,2,780,7,780,2,781,7,781,2,782,7,782,2,783,7,783,2,784,7,784,2,785,7,785,2,786,7,786,2,787,7,787,2,788,7,788,2,789,7,789,2,790,7,790,2,791,7,791,2,792,7,792,2,793,7,793,2,794,7,794,2,795,7,795,2,796,7,796,2,797,7,797,2,798,7,798,2,799,7,799,2,800,7,800,2,801,7,801,2,802,7,802,2,803,7,803,2,804,7,804,2,805,7,805,2,806,7,806,2,807,7,807,2,808,7,808,2,809,7,809,2,810,7,810,2,811,7,811,2,812,7,812,2,813,7,813,2,814,7,814,2,815,7,815,2,816,7,816,2,817,7,817,2,818,7,818,2,819,7,819,2,820,7,820,2,821,7,821,2,822,7,822,2,823,7,823,2,824,7,824,2,825,7,825,2,826,7,826,2,827,7,827,2,828,7,828,2,829,7,829,2,830,7,830,2,831,7,831,2,832,7,832,2,833,7,833,2,834,7,834,2,835,7,835,2,836,7,836,2,837,7,837,2,838,7,838,2,839,7,839,2,840,7,840,2,841,7,841,2,842,7,842,2,843,7,843,2,844,7,844,2,845,7,845,2,846,7,846,2,847,7,847,2,848,7,848,2,849,7,849,2,850,7,850,2,851,7,851,2,852,7,852,2,853,7,853,2,854,7,854,2,855,7,855,2,856,7,856,2,857,7,857,2,858,7,858,2,859,7,859,2,860,7,860,2,861,7,861,2,862,7,862,2,863,7,863,2,864,7,864,2,865,7,865,2,866,7,866,2,867,7,867,2,868,7,868,2,869,7,869,2,870,7,870,2,871,7,871,2,872,7,872,2,873,7,873,2,874,7,874,2,875,7,875,2,876,7,876,2,877,7,877,2,878,7,878,2,879,7,879,2,880,7,880,2,881,7,881,2,882,7,882,2,883,7,883,2,884,7,884,2,885,7,885,2,886,7,886,2,887,7,887,2,888,7,888,2,889,7,889,2,890,7,890,2,891,7,891,2,892,7,892,2,893,7,893,2,894,7,894,2,895,7,895,2,896,7,896,2,897,7,897,2,898,7,898,2,899,7,899,2,900,7,900,2,901,7,901,2,902,7,902,2,903,7,903,2,904,7,904,2,905,7,905,2,906,7,906,2,907,7,907,2,908,7,908,2,909,7,909,2,910,7,910,2,911,7,911,2,912,7,912,2,913,7,913,2,914,7,914,2,915,7,915,2,916,7,916,2,917,7,917,2,918,7,918,2,919,7,919,2,920,7,920,2,921,7,921,2,922,7,922,2,923,7,923,2,924,7,924,2,925,7,925,2,926,7,926,2,927,7,927,2,928,7,928,2,929,7,929,2,930,7,930,2,931,7,931,2,932,7,932,2,933,7,933,2,934,7,934,2,935,7,935,2,936,7,936,2,937,7,937,2,938,7,938,2,939,7,939,2,940,7,940,2,941,7,941,2,942,7,942,2,943,7,943,2,944,7,944,2,945,7,945,2,946,7,946,2,947,7,947,2,948,7,948,2,949,7,949,2,950,7,950,2,951,7,951,2,952,7,952,2,953,7,953,2,954,7,954,2,955,7,955,2,956,7,956,2,957,7,957,2,958,7,958,2,959,7,959,2,960,7,960,2,961,7,961,2,962,7,962,2,963,7,963,2,964,7,964,2,965,7,965,2,966,7,966,2,967,7,967,2,968,7,968,2,969,7,969,2,970,7,970,2,971,7,971,2,972,7,972,2,973,7,973,2,974,7,974,2,975,7,975,2,976,7,976,2,977,7,977,2,978,7,978,2,979,7,979,2,980,7,980,2,981,7,981,2,982,7,982,2,983,7,983,2,984,7,984,2,985,7,985,2,986,7,986,2,987,7,987,2,988,7,988,2,989,7,989,2,990,7,990,2,991,7,991,2,992,7,992,2,993,7,993,2,994,7,994,2,995,7,995,2,996,7,996,2,997,7,997,2,998,7,998,2,999,7,999,2,1e3,7,1e3,2,1001,7,1001,2,1002,7,1002,2,1003,7,1003,2,1004,7,1004,2,1005,7,1005,2,1006,7,1006,2,1007,7,1007,2,1008,7,1008,2,1009,7,1009,2,1010,7,1010,2,1011,7,1011,2,1012,7,1012,2,1013,7,1013,2,1014,7,1014,2,1015,7,1015,2,1016,7,1016,2,1017,7,1017,2,1018,7,1018,2,1019,7,1019,2,1020,7,1020,2,1021,7,1021,2,1022,7,1022,2,1023,7,1023,2,1024,7,1024,2,1025,7,1025,2,1026,7,1026,2,1027,7,1027,2,1028,7,1028,2,1029,7,1029,2,1030,7,1030,2,1031,7,1031,2,1032,7,1032,2,1033,7,1033,2,1034,7,1034,2,1035,7,1035,2,1036,7,1036,2,1037,7,1037,2,1038,7,1038,2,1039,7,1039,2,1040,7,1040,2,1041,7,1041,2,1042,7,1042,2,1043,7,1043,2,1044,7,1044,2,1045,7,1045,2,1046,7,1046,2,1047,7,1047,2,1048,7,1048,2,1049,7,1049,2,1050,7,1050,2,1051,7,1051,2,1052,7,1052,2,1053,7,1053,2,1054,7,1054,2,1055,7,1055,2,1056,7,1056,2,1057,7,1057,2,1058,7,1058,2,1059,7,1059,2,1060,7,1060,2,1061,7,1061,2,1062,7,1062,2,1063,7,1063,2,1064,7,1064,2,1065,7,1065,2,1066,7,1066,2,1067,7,1067,2,1068,7,1068,2,1069,7,1069,2,1070,7,1070,2,1071,7,1071,2,1072,7,1072,2,1073,7,1073,2,1074,7,1074,2,1075,7,1075,2,1076,7,1076,2,1077,7,1077,2,1078,7,1078,2,1079,7,1079,2,1080,7,1080,2,1081,7,1081,2,1082,7,1082,2,1083,7,1083,2,1084,7,1084,2,1085,7,1085,2,1086,7,1086,2,1087,7,1087,2,1088,7,1088,2,1089,7,1089,2,1090,7,1090,2,1091,7,1091,2,1092,7,1092,2,1093,7,1093,2,1094,7,1094,2,1095,7,1095,2,1096,7,1096,2,1097,7,1097,2,1098,7,1098,2,1099,7,1099,2,1100,7,1100,2,1101,7,1101,2,1102,7,1102,2,1103,7,1103,2,1104,7,1104,2,1105,7,1105,2,1106,7,1106,2,1107,7,1107,2,1108,7,1108,2,1109,7,1109,2,1110,7,1110,2,1111,7,1111,2,1112,7,1112,2,1113,7,1113,2,1114,7,1114,2,1115,7,1115,2,1116,7,1116,2,1117,7,1117,2,1118,7,1118,2,1119,7,1119,2,1120,7,1120,2,1121,7,1121,2,1122,7,1122,2,1123,7,1123,2,1124,7,1124,2,1125,7,1125,2,1126,7,1126,2,1127,7,1127,2,1128,7,1128,2,1129,7,1129,2,1130,7,1130,2,1131,7,1131,2,1132,7,1132,2,1133,7,1133,2,1134,7,1134,2,1135,7,1135,2,1136,7,1136,2,1137,7,1137,2,1138,7,1138,2,1139,7,1139,2,1140,7,1140,2,1141,7,1141,2,1142,7,1142,2,1143,7,1143,2,1144,7,1144,2,1145,7,1145,2,1146,7,1146,2,1147,7,1147,2,1148,7,1148,2,1149,7,1149,2,1150,7,1150,2,1151,7,1151,2,1152,7,1152,2,1153,7,1153,2,1154,7,1154,2,1155,7,1155,2,1156,7,1156,2,1157,7,1157,2,1158,7,1158,2,1159,7,1159,2,1160,7,1160,2,1161,7,1161,2,1162,7,1162,2,1163,7,1163,2,1164,7,1164,2,1165,7,1165,2,1166,7,1166,2,1167,7,1167,2,1168,7,1168,2,1169,7,1169,2,1170,7,1170,2,1171,7,1171,1,0,4,0,2347,8,0,11,0,12,0,2348,1,0,1,0,1,1,1,1,1,1,1,1,1,1,4,1,2358,8,1,11,1,12,1,2359,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,5,2,2371,8,2,10,2,12,2,2374,9,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,5,3,2385,8,3,10,3,12,3,2388,9,3,1,3,3,3,2391,8,3,1,3,5,3,2394,8,3,10,3,12,3,2397,9,3,1,3,3,3,2400,8,3,1,3,1,3,3,3,2404,8,3,1,3,1,3,1,3,1,3,3,3,2410,8,3,1,3,1,3,3,3,2414,8,3,3,3,2416,8,3,1,3,1,3,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,173,1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,179,1,179,1,179,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,186,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188,1,188,1,189,1,189,1,189,1,189,1,189,1,189,1,190,1,190,1,190,1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,200,1,200,1,200,1,200,1,200,1,201,1,201,1,201,1,201,1,201,1,202,1,202,1,202,1,202,1,202,1,203,1,203,1,203,1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,210,1,210,1,210,1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,1,217,1,217,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,220,1,220,1,221,1,221,1,221,1,221,1,221,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,228,1,228,1,228,1,228,1,228,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,230,1,230,1,230,1,230,1,230,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,233,1,233,1,233,1,233,1,233,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,235,1,235,1,235,1,235,1,235,1,235,1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,287,1,287,1,287,1,287,1,287,1,287,1,287,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,289,1,289,1,289,1,289,1,289,1,289,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,294,1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295,1,295,1,295,1,295,1,295,1,295,1,296,1,296,1,296,1,296,1,296,1,297,1,297,1,297,1,297,1,298,1,298,1,298,1,298,1,299,1,299,1,299,1,299,1,299,1,299,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,302,1,302,1,302,1,302,1,302,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,304,1,304,1,304,1,304,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,308,1,308,1,308,1,308,1,309,1,309,1,309,1,309,1,309,1,309,1,309,1,309,1,310,1,310,1,310,1,310,1,310,1,310,1,310,1,310,1,310,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,311,1,312,1,312,1,312,1,312,1,312,1,312,1,312,1,312,1,312,1,312,1,312,1,312,1,312,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,317,1,317,1,317,1,317,1,317,1,317,1,317,1,317,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,320,1,320,1,320,1,320,1,320,1,320,1,320,1,320,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,322,1,322,1,322,1,322,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,327,1,327,1,327,1,327,1,327,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,329,1,329,1,329,1,329,1,329,1,329,1,329,1,329,1,329,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,332,1,332,1,332,1,332,1,332,1,332,1,332,1,333,1,333,1,333,1,333,1,333,1,333,1,334,1,334,1,334,1,334,1,334,1,334,1,334,1,334,1,334,1,334,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,336,1,336,1,336,1,336,1,337,1,337,1,337,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,343,1,343,1,343,1,343,1,343,1,343,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,345,1,345,1,345,1,345,1,346,1,346,1,346,1,346,1,346,1,346,1,347,1,347,1,347,1,347,1,347,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,349,1,349,1,349,1,349,1,349,1,349,1,350,1,350,1,350,1,350,1,350,1,350,1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,352,1,352,1,352,1,352,1,352,1,352,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,357,1,357,1,357,1,357,1,357,1,357,1,357,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,360,1,360,1,360,1,360,1,360,1,360,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,363,1,363,1,363,1,363,1,363,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,367,1,367,1,367,1,367,1,367,1,367,1,367,1,367,1,368,1,368,1,368,1,368,1,368,1,368,1,368,1,369,1,369,1,369,1,369,1,369,1,369,1,369,1,369,1,370,1,370,1,370,1,370,1,370,1,370,1,370,1,370,1,370,1,370,1,370,1,371,1,371,1,371,1,371,1,371,1,371,1,371,1,371,1,371,1,371,1,371,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373,1,374,1,374,1,374,1,374,1,374,1,374,1,374,1,374,1,375,1,375,1,375,1,375,1,375,1,375,1,375,1,375,1,375,1,375,1,375,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,383,1,383,1,383,1,383,1,383,1,384,1,384,1,384,1,384,1,385,1,385,1,385,1,385,1,385,1,385,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,387,1,387,1,387,1,387,1,387,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,389,1,389,1,389,1,389,1,389,1,389,1,389,1,389,1,389,1,389,1,389,1,390,1,390,1,390,1,390,1,390,1,390,1,390,1,390,1,390,1,390,1,390,1,390,1,390,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,391,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,394,1,394,1,394,1,394,1,394,1,394,1,394,1,394,1,394,1,394,1,395,1,395,1,395,1,395,1,395,1,395,1,395,1,395,1,396,1,396,1,396,1,396,1,396,1,396,1,396,1,396,1,397,1,397,1,397,1,397,1,397,1,398,1,398,1,398,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,400,1,400,1,400,1,400,1,400,1,400,1,400,1,400,1,400,1,400,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,406,1,406,1,406,1,406,1,407,1,407,1,407,1,407,1,407,1,408,1,408,1,408,1,408,1,408,1,408,1,408,1,409,1,409,1,409,1,409,1,409,1,409,1,409,1,409,1,410,1,410,1,410,1,410,1,410,1,410,1,411,1,411,1,411,1,411,1,411,1,411,1,411,1,412,1,412,1,412,1,412,1,412,1,412,1,412,1,413,1,413,1,413,1,413,1,413,1,414,1,414,1,414,1,414,1,414,1,414,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,416,1,416,1,416,1,416,1,416,1,416,1,417,1,417,1,417,1,417,1,417,1,417,1,417,1,417,1,417,1,418,1,418,1,418,1,418,1,418,1,418,1,418,1,418,1,418,1,418,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,424,1,424,1,424,1,424,1,424,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,426,1,426,1,426,1,426,1,426,1,426,1,426,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,428,1,428,1,428,1,428,1,428,1,428,1,428,1,429,1,429,1,429,1,429,1,429,1,429,1,430,1,430,1,430,1,430,1,430,1,430,1,431,1,431,1,431,1,431,1,431,1,431,1,432,1,432,1,432,1,432,1,432,1,432,1,432,1,432,1,432,1,432,1,433,1,433,1,433,1,433,1,433,1,433,1,433,1,433,1,434,1,434,1,434,1,434,1,434,1,434,1,435,1,435,1,435,1,435,1,435,1,436,1,436,1,436,1,436,1,436,1,436,1,436,1,436,1,436,1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,439,1,439,1,439,1,439,1,439,1,439,1,439,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,441,1,441,1,441,1,441,1,441,1,441,1,441,1,441,1,442,1,442,1,442,1,442,1,442,1,443,1,443,1,443,1,443,1,443,1,444,1,444,1,444,1,444,1,444,1,444,1,444,1,444,1,445,1,445,1,445,1,445,1,445,1,446,1,446,1,446,1,446,1,446,1,446,1,447,1,447,1,447,1,447,1,447,1,447,1,447,1,447,1,447,1,447,1,447,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,449,1,449,1,449,1,449,1,449,1,449,1,449,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,451,1,451,1,451,1,451,1,451,1,451,1,451,1,451,1,452,1,452,1,452,1,452,1,452,1,452,1,452,1,452,1,452,1,452,1,452,1,452,1,452,1,453,1,453,1,453,1,453,1,453,1,453,1,453,1,453,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,455,1,455,1,455,1,455,1,455,1,455,1,455,1,455,1,456,1,456,1,456,1,456,1,456,1,456,1,456,1,456,1,456,1,457,1,457,1,457,1,457,1,457,1,457,1,457,1,457,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,459,1,459,1,459,1,459,1,459,1,459,1,459,1,459,1,460,1,460,1,460,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,462,1,462,1,462,1,462,1,463,1,463,1,463,1,463,1,463,1,463,1,463,1,463,1,463,1,463,1,464,1,464,1,464,1,464,1,464,1,464,1,464,1,465,1,465,1,465,1,465,1,465,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,467,1,467,1,467,1,467,1,467,1,467,1,467,1,467,1,467,1,468,1,468,1,468,1,468,1,468,1,469,1,469,1,469,1,469,1,469,1,469,1,469,1,470,1,470,1,470,1,470,1,470,1,471,1,471,1,471,1,471,1,471,1,471,1,472,1,472,1,472,1,472,1,472,1,473,1,473,1,473,1,473,1,473,1,473,1,474,1,474,1,474,1,474,1,474,1,474,1,474,1,474,1,475,1,475,1,475,1,475,1,475,1,476,1,476,1,476,1,476,1,476,1,476,1,476,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,487,1,487,1,487,1,487,1,487,1,487,1,487,1,487,1,487,1,487,1,487,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,499,1,499,1,499,1,499,1,499,1,499,1,499,1,499,1,499,1,500,1,500,1,500,1,500,1,500,1,500,1,500,1,500,1,500,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,504,1,504,1,504,1,504,1,504,1,504,1,504,1,505,1,505,1,505,1,505,1,505,1,505,1,506,1,506,1,506,1,506,1,506,1,506,1,506,1,506,1,506,1,506,1,506,1,506,1,506,1,507,1,507,1,507,1,507,1,508,1,508,1,508,1,508,1,508,1,508,1,508,1,508,1,509,1,509,1,509,1,509,1,509,1,509,1,509,1,509,1,509,1,510,1,510,1,510,1,510,1,510,1,511,1,511,1,511,1,511,1,511,1,511,1,511,1,512,1,512,1,512,1,512,1,512,1,512,1,513,1,513,1,513,1,513,1,513,1,513,1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,515,1,515,1,515,1,515,1,515,1,516,1,516,1,516,1,516,1,516,1,516,1,517,1,517,1,517,1,517,1,517,1,517,1,518,1,518,1,518,1,518,1,518,1,518,1,519,1,519,1,519,1,519,1,519,1,520,1,520,1,520,1,521,1,521,1,521,1,521,1,521,1,521,1,521,1,521,1,522,1,522,1,522,1,522,1,522,1,522,1,522,1,523,1,523,1,523,1,523,1,523,1,523,1,523,1,523,1,524,1,524,1,524,1,524,1,524,1,524,1,524,1,524,1,524,1,524,1,524,1,525,1,525,1,525,1,525,1,525,1,525,1,525,1,525,1,525,1,525,1,525,1,526,1,526,1,526,1,526,1,526,1,526,1,526,1,527,1,527,1,527,1,527,1,527,1,527,1,527,1,527,1,527,1,527,1,528,1,528,1,528,1,528,1,528,1,529,1,529,1,529,1,529,1,529,1,530,1,530,1,530,1,530,1,530,1,530,1,530,1,530,1,531,1,531,1,531,1,531,1,531,1,531,1,531,1,532,1,532,1,532,1,533,1,533,1,533,1,534,1,534,1,534,1,534,1,534,1,534,1,534,1,534,1,534,1,534,1,534,1,534,1,534,1,535,1,535,1,535,1,535,1,536,1,536,1,536,1,536,1,536,1,536,1,536,1,537,1,537,1,537,1,537,1,537,1,538,1,538,1,538,1,538,1,538,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,541,1,541,1,541,1,541,1,541,1,541,1,542,1,542,1,542,1,542,1,542,1,542,1,542,1,542,1,542,1,542,1,543,1,543,1,543,1,543,1,543,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,547,1,547,1,547,1,547,1,547,1,547,1,547,1,547,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,549,1,549,1,549,1,549,1,549,1,549,1,549,1,549,1,549,1,549,1,549,1,550,1,550,1,550,1,550,1,550,1,550,1,550,1,550,1,550,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,552,1,552,1,552,1,552,1,552,1,552,1,553,1,553,1,553,1,553,1,553,1,553,1,553,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,555,1,555,1,555,1,555,1,555,1,555,1,555,1,555,1,556,1,556,1,556,1,556,1,556,1,557,1,557,1,557,1,557,1,557,1,557,1,557,1,557,1,557,1,558,1,558,1,558,1,558,1,558,1,558,1,558,1,558,1,558,1,558,1,559,1,559,1,559,1,559,1,559,1,559,1,559,1,559,1,560,1,560,1,560,1,560,1,560,1,560,1,560,1,560,1,560,1,561,1,561,1,561,1,561,1,561,1,562,1,562,1,562,1,562,1,562,1,562,1,562,1,562,1,562,1,562,1,562,1,562,1,563,1,563,1,563,1,563,1,563,1,563,1,563,1,563,1,564,1,564,1,564,1,564,1,564,1,564,1,564,1,564,1,564,1,565,1,565,1,565,1,565,1,565,1,565,1,566,1,566,1,566,1,566,1,566,1,566,1,567,1,567,1,567,1,567,1,567,1,567,1,568,1,568,1,568,1,568,1,568,1,568,1,568,1,568,1,569,1,569,1,569,1,569,1,569,1,569,1,569,1,569,1,570,1,570,1,570,1,570,1,570,1,570,1,570,1,570,1,570,1,570,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,572,1,572,1,572,1,572,1,572,1,572,1,572,1,572,1,572,1,572,1,573,1,573,1,573,1,573,1,573,1,573,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,576,1,576,1,576,1,576,1,576,1,576,1,576,1,576,1,576,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,578,1,578,1,578,1,578,1,578,1,578,1,578,1,578,1,578,1,578,1,578,1,579,1,579,1,579,1,579,1,579,1,579,1,579,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,587,1,587,1,587,1,587,1,587,1,587,1,587,1,587,1,587,1,587,1,587,1,587,1,588,1,588,1,588,1,588,1,588,1,588,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,589,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,594,1,594,1,594,1,594,1,594,1,594,1,595,1,595,1,595,1,595,1,595,1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,597,1,597,1,597,1,597,1,597,1,597,1,597,1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,599,1,599,1,599,1,599,1,600,1,600,1,600,1,600,1,600,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,602,1,602,1,602,1,602,1,602,1,602,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,604,1,604,1,604,1,604,1,604,1,604,1,604,1,604,1,604,1,605,1,605,1,605,1,605,1,605,1,605,1,605,1,605,1,605,1,606,1,606,1,606,1,606,1,606,1,606,1,606,1,606,1,606,1,607,1,607,1,607,1,607,1,607,1,607,1,607,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,609,1,609,1,609,1,609,1,609,1,609,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,611,1,611,1,611,1,611,1,611,1,611,1,611,1,612,1,612,1,612,1,612,1,612,1,612,1,612,1,613,1,613,1,613,1,613,1,613,1,613,1,614,1,614,1,614,1,614,1,614,1,615,1,615,1,615,1,615,1,615,1,615,1,615,1,615,1,615,1,616,1,616,1,616,1,616,1,616,1,616,1,616,1,617,1,617,1,617,1,617,1,617,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,619,1,619,1,619,1,619,1,619,1,619,1,619,1,620,1,620,1,620,1,620,1,620,1,620,1,620,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,628,1,628,1,628,1,628,1,628,1,628,1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,633,1,633,1,633,1,633,1,633,1,633,1,633,1,634,1,634,1,634,1,634,1,634,1,635,1,635,1,635,1,635,1,635,1,635,1,635,1,635,1,636,1,636,1,636,1,636,1,636,1,636,1,636,1,637,1,637,1,637,1,637,1,637,1,637,1,637,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,639,1,639,1,639,1,639,1,639,1,639,1,639,1,639,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,642,1,642,1,642,1,642,1,642,1,642,1,642,1,642,1,643,1,643,1,643,1,643,1,643,1,643,1,644,1,644,1,644,1,644,1,644,1,644,1,644,1,644,1,644,1,645,1,645,1,645,1,645,1,645,1,645,1,645,1,645,1,645,1,645,1,645,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,647,1,647,1,647,1,647,1,647,1,647,1,647,1,647,1,647,1,647,1,647,1,648,1,648,1,648,1,648,1,648,1,648,1,648,1,648,1,648,1,648,1,649,1,649,1,649,1,649,1,649,1,649,1,649,1,649,1,649,1,649,1,650,1,650,1,650,1,650,1,650,1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,652,1,652,1,652,1,652,1,652,1,652,1,652,1,652,1,652,1,652,1,652,1,652,1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,654,1,654,1,654,1,654,1,654,1,654,1,654,1,654,1,654,1,655,1,655,1,655,1,655,1,655,1,655,1,655,1,655,1,655,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,656,1,657,1,657,1,657,1,657,1,657,1,657,1,657,1,657,1,657,1,657,1,658,1,658,1,658,1,658,1,658,1,658,1,658,1,658,1,658,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,660,1,660,1,660,1,660,1,660,1,660,1,660,1,660,1,660,1,660,1,661,1,661,1,661,1,661,1,661,1,661,1,661,1,661,1,662,1,662,1,662,1,662,1,662,1,662,1,663,1,663,1,663,1,663,1,663,1,663,1,663,1,663,1,664,1,664,1,664,1,664,1,664,1,665,1,665,1,665,1,665,1,665,1,665,1,665,1,665,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,667,1,667,1,667,1,667,1,667,1,667,1,667,1,667,1,667,1,667,1,667,1,668,1,668,1,668,1,668,1,668,1,668,1,669,1,669,1,669,1,669,1,669,1,669,1,669,1,669,1,669,1,669,1,670,1,670,1,670,1,670,1,670,1,671,1,671,1,671,1,671,1,671,1,671,1,671,1,671,1,672,1,672,1,672,1,672,1,672,1,672,1,672,1,672,1,673,1,673,1,673,1,673,1,673,1,674,1,674,1,674,1,674,1,674,1,674,1,674,1,674,1,674,1,675,1,675,1,675,1,675,1,675,1,675,1,675,1,676,1,676,1,676,1,676,1,676,1,676,1,676,1,676,1,677,1,677,1,677,1,677,1,677,1,678,1,678,1,678,1,678,1,678,1,678,1,678,1,678,1,679,1,679,1,679,1,679,1,679,1,680,1,680,1,680,1,681,1,681,1,681,1,681,1,682,1,682,1,682,1,682,1,683,1,683,1,683,1,683,1,684,1,684,1,684,1,684,1,685,1,685,1,685,1,685,1,686,1,686,1,686,1,686,1,687,1,687,1,687,1,687,1,687,1,687,1,687,1,687,1,687,1,688,1,688,1,688,1,688,1,688,1,688,1,688,1,688,1,689,1,689,1,689,1,689,1,689,1,689,1,690,1,690,1,690,1,690,1,691,1,691,1,691,1,691,1,691,1,692,1,692,1,692,1,692,1,692,1,692,1,692,1,693,1,693,1,693,1,693,1,693,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,695,1,695,1,695,1,695,1,695,1,695,1,695,1,695,1,695,1,695,1,695,1,695,1,696,1,696,1,696,1,696,1,696,1,696,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,699,1,699,1,699,1,699,1,699,1,699,1,699,1,699,1,699,1,699,1,699,1,699,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,701,1,701,1,701,1,701,1,701,1,701,1,701,1,701,1,701,1,701,1,701,1,701,1,701,1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,704,1,704,1,704,1,704,1,704,1,704,1,704,1,704,1,704,1,704,1,704,1,704,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,707,1,707,1,707,1,707,1,707,1,707,1,707,1,707,1,708,1,708,1,708,1,708,1,708,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,711,1,711,1,711,1,711,1,711,1,711,1,711,1,711,1,711,1,711,1,711,1,711,1,711,1,711,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,713,1,713,1,713,1,713,1,713,1,713,1,713,1,713,1,713,1,713,1,713,1,713,1,713,1,714,1,714,1,714,1,714,1,714,1,714,1,714,1,714,1,714,1,714,1,714,1,714,1,714,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,719,1,719,1,719,1,719,1,719,1,719,1,719,1,720,1,720,1,720,1,720,1,720,1,720,1,720,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,724,1,724,1,724,1,724,1,724,1,724,1,724,1,724,1,724,1,724,1,724,1,725,1,725,1,725,1,725,1,725,1,725,1,725,1,725,1,726,1,726,1,726,1,726,1,726,1,726,1,726,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,731,1,731,1,731,1,731,1,731,1,731,1,731,1,731,1,731,1,731,1,731,1,732,1,732,1,732,1,732,1,732,1,732,1,732,1,732,1,733,1,733,1,733,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,735,3,735,9262,8,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,3,735,9289,8,735,1,736,1,736,1,736,1,736,1,736,1,736,1,736,1,736,1,736,1,736,1,736,1,736,1,737,1,737,1,737,1,737,1,737,1,737,1,737,1,737,1,737,1,737,1,737,1,737,1,737,1,738,1,738,1,738,1,738,1,738,1,738,1,738,1,738,1,738,1,739,1,739,1,739,1,739,1,739,1,739,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,741,1,741,1,741,1,741,1,741,1,741,1,741,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,745,1,745,1,745,1,745,1,745,1,745,1,745,1,745,1,745,1,746,1,746,1,746,1,746,1,746,1,746,1,747,1,747,1,747,1,747,1,747,1,748,1,748,1,748,1,748,1,748,1,748,1,748,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,750,1,750,1,750,1,750,1,750,1,750,1,750,1,751,1,751,1,751,1,751,1,751,1,751,1,751,1,752,1,752,1,752,1,752,1,752,1,752,1,753,1,753,1,753,1,753,1,753,1,753,1,754,1,754,1,754,1,754,1,754,1,754,1,755,1,755,1,755,1,755,1,755,1,755,1,756,1,756,1,756,1,756,1,756,1,757,1,757,1,757,1,757,1,757,1,757,1,757,1,757,1,758,1,758,1,758,1,758,1,758,1,758,1,759,1,759,1,759,1,759,1,759,1,759,1,759,1,759,1,760,1,760,1,760,1,760,1,760,1,760,1,760,1,761,1,761,1,761,1,761,1,762,1,762,1,762,1,762,1,762,1,762,1,762,1,762,1,763,1,763,1,763,1,763,1,763,1,763,1,764,1,764,1,764,1,764,1,764,1,764,1,764,1,765,1,765,1,765,1,765,1,766,1,766,1,766,1,766,1,766,1,766,1,766,1,766,1,767,1,767,1,767,1,767,1,767,1,767,1,768,1,768,1,768,1,768,1,768,1,768,1,769,1,769,1,769,1,769,1,769,1,769,1,769,1,770,1,770,1,770,1,770,1,770,1,770,1,770,1,771,1,771,1,771,1,771,1,771,1,771,1,771,1,772,1,772,1,772,1,772,1,772,1,772,1,772,1,773,1,773,1,773,1,773,1,773,1,773,1,774,1,774,1,774,1,774,1,774,1,774,1,774,1,774,1,774,1,775,1,775,1,775,1,775,1,775,1,776,1,776,1,776,1,776,1,776,1,777,1,777,1,777,1,777,1,777,1,777,1,777,1,778,1,778,1,778,1,778,1,778,1,779,1,779,1,779,1,779,1,779,1,780,1,780,1,780,1,780,1,780,1,780,1,781,1,781,1,781,1,781,1,781,1,781,1,781,1,781,1,782,1,782,1,782,1,782,1,782,1,782,1,783,1,783,1,783,1,783,1,783,1,784,1,784,1,784,1,784,1,784,1,784,1,784,1,784,1,785,1,785,1,785,1,785,1,785,1,785,1,785,1,785,1,786,1,786,1,786,1,786,1,786,1,786,1,786,1,786,1,787,1,787,1,787,1,787,1,787,1,787,1,787,1,787,1,787,1,787,1,788,1,788,1,788,1,788,1,789,1,789,1,789,1,789,1,789,1,789,1,789,1,789,1,789,1,789,1,790,1,790,1,790,1,790,1,790,1,790,1,790,1,791,1,791,1,791,1,791,1,791,1,791,1,791,1,792,1,792,1,792,1,792,1,792,1,792,1,792,1,792,1,792,1,792,1,792,1,793,1,793,1,793,1,793,1,793,1,793,1,793,1,794,1,794,1,794,1,794,1,795,1,795,1,795,1,795,1,795,1,795,1,795,1,795,1,795,1,795,1,795,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,797,1,797,1,797,1,797,1,797,1,797,1,797,1,798,1,798,1,798,1,798,1,798,1,798,1,798,1,798,1,798,1,798,1,798,1,799,1,799,1,799,1,799,1,799,1,799,1,799,1,799,1,799,1,799,1,800,1,800,1,800,1,800,1,800,1,800,1,800,1,800,1,800,1,800,1,800,1,800,1,801,1,801,1,801,1,801,1,801,1,801,1,801,1,801,1,801,1,801,1,801,1,801,1,801,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,804,1,804,1,804,1,804,1,804,1,804,1,804,1,804,1,804,1,805,1,805,1,805,1,805,1,805,1,805,1,805,1,805,1,805,1,805,1,805,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,807,1,807,1,807,1,807,1,807,1,807,1,807,1,807,1,807,1,807,1,807,1,808,1,808,1,808,1,808,1,808,1,808,1,808,1,808,1,808,1,808,1,808,1,808,1,808,1,809,1,809,1,809,1,809,1,809,1,809,1,810,1,810,1,810,1,810,1,810,1,810,1,810,1,810,1,811,1,811,1,811,1,811,1,812,1,812,1,812,1,812,1,812,1,813,1,813,1,813,1,813,1,813,1,813,1,813,1,813,1,814,1,814,1,814,1,814,1,814,1,814,1,814,1,814,1,815,1,815,1,815,1,815,1,815,1,815,1,815,1,815,1,815,1,815,1,815,1,815,1,816,1,816,1,816,1,816,1,816,1,816,1,816,1,816,1,816,1,816,1,816,1,816,1,817,1,817,1,817,1,817,1,817,1,818,1,818,1,818,1,818,1,818,1,818,1,818,1,818,1,818,1,819,1,819,1,819,1,819,1,819,1,820,1,820,1,820,1,820,1,820,1,820,1,820,1,821,1,821,1,821,1,821,1,821,1,821,1,822,1,822,1,822,1,822,1,822,1,822,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,828,1,828,1,828,1,828,1,828,1,829,1,829,1,829,1,829,1,829,1,829,1,830,1,830,1,830,1,830,1,830,1,830,1,830,1,830,1,830,1,830,1,831,1,831,1,831,1,831,1,832,1,832,1,832,1,832,1,832,1,832,1,832,1,832,1,832,1,832,1,833,1,833,1,833,1,833,1,833,1,833,1,833,1,833,1,833,1,833,1,833,1,834,1,834,1,834,1,834,1,834,1,834,1,834,1,835,1,835,1,835,1,835,1,835,1,835,1,835,1,835,1,835,1,835,1,835,1,835,1,835,1,836,1,836,1,836,1,836,1,836,1,837,1,837,1,837,1,837,1,837,1,837,1,837,1,837,1,838,1,838,1,838,1,838,1,838,1,838,1,838,1,838,1,838,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,840,1,840,1,840,1,840,1,840,1,840,1,840,1,840,1,841,1,841,1,841,1,841,1,841,1,841,1,841,1,841,1,841,1,841,1,841,1,841,1,842,1,842,1,842,1,842,1,842,1,842,1,842,1,842,1,842,1,842,1,842,1,842,1,842,1,843,1,843,1,843,1,843,1,843,1,843,1,843,1,843,1,843,1,843,1,844,1,844,1,844,1,844,1,844,1,844,1,844,1,844,1,844,1,845,1,845,1,845,1,845,1,845,1,845,1,845,1,846,1,846,1,846,1,846,1,846,1,846,1,846,1,846,1,846,1,846,1,847,1,847,1,847,1,847,1,847,1,847,1,847,1,847,1,847,1,847,1,847,1,847,1,847,1,847,1,848,1,848,1,848,1,848,1,848,1,849,1,849,1,849,1,849,1,849,1,849,1,849,1,849,1,849,1,849,1,849,1,850,1,850,1,850,1,850,1,851,1,851,1,851,1,851,1,852,1,852,1,852,1,852,1,852,1,852,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,856,1,856,1,856,1,856,1,856,1,856,1,856,1,856,1,856,1,856,1,856,1,856,1,856,1,856,1,857,1,857,1,857,1,857,1,857,1,857,1,857,1,857,1,858,1,858,1,858,1,858,1,858,1,858,1,858,1,858,1,858,1,859,1,859,1,859,1,859,1,859,1,859,1,859,1,859,1,859,1,859,1,859,1,859,1,860,1,860,1,860,1,860,1,860,1,860,1,860,1,860,1,861,1,861,1,861,1,861,1,861,1,861,1,861,1,861,1,861,1,861,1,861,1,862,1,862,1,862,1,862,1,862,1,862,1,862,1,862,1,862,1,862,1,863,1,863,1,863,1,863,1,863,1,863,1,863,1,863,1,863,1,863,1,864,1,864,1,864,1,864,1,864,1,864,1,864,1,865,1,865,1,865,1,865,1,865,1,865,1,865,1,865,1,866,1,866,1,866,1,866,1,866,1,866,1,866,1,866,1,866,1,866,1,866,1,866,1,867,1,867,1,867,1,867,1,867,1,867,1,867,1,867,1,867,1,867,1,867,1,867,1,868,1,868,1,868,1,868,1,868,1,868,1,868,1,868,1,868,1,868,1,869,1,869,1,869,1,869,1,869,1,869,1,869,1,869,1,869,1,870,1,870,1,870,1,870,1,871,1,871,1,871,1,871,1,871,1,871,1,871,1,872,1,872,1,872,1,872,1,872,1,872,1,872,1,872,1,873,1,873,1,873,1,873,1,873,1,873,1,873,1,873,1,873,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,875,1,875,1,875,1,875,1,875,1,875,1,875,1,875,1,875,1,876,1,876,1,876,1,876,1,876,1,876,1,876,1,877,1,877,1,877,1,877,1,878,1,878,1,878,1,878,1,878,1,878,1,878,1,878,1,878,1,878,1,878,1,879,1,879,1,879,1,879,1,879,1,879,1,879,1,879,1,879,1,879,1,879,1,879,1,879,1,880,1,880,1,880,1,880,1,880,1,880,1,880,1,880,1,880,1,880,1,880,1,880,1,880,1,881,1,881,1,881,1,881,1,881,1,881,1,882,1,882,1,882,1,882,1,882,1,882,1,882,1,882,1,882,1,882,1,882,1,882,1,883,1,883,1,883,1,883,1,883,1,883,1,884,1,884,1,884,1,884,1,884,1,884,1,884,1,885,1,885,1,885,1,885,1,885,1,885,1,885,1,885,1,885,1,885,1,885,1,886,1,886,1,886,1,886,1,886,1,886,1,886,1,886,1,886,1,886,1,886,1,886,1,887,1,887,1,887,1,887,1,887,1,887,1,887,1,887,1,887,1,887,1,888,1,888,1,888,1,888,1,888,1,888,1,888,1,888,1,888,1,888,1,888,1,888,1,888,1,888,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,895,1,895,1,895,1,895,1,895,1,895,1,895,1,895,1,895,1,895,1,896,1,896,1,896,1,896,1,896,1,896,1,896,1,896,1,896,1,896,1,896,1,896,1,896,1,897,1,897,1,897,1,897,1,897,1,897,1,897,1,897,1,897,1,897,1,897,1,897,1,897,1,898,1,898,1,898,1,898,1,898,1,898,1,898,1,898,1,898,1,898,1,898,1,898,1,899,1,899,1,899,1,899,1,899,1,899,1,899,1,899,1,899,1,899,1,899,1,900,1,900,1,900,1,900,1,900,1,900,1,900,1,900,1,900,1,901,1,901,1,901,1,901,1,901,1,901,1,901,1,901,1,902,1,902,1,902,1,902,1,902,1,902,1,902,1,902,1,902,1,903,1,903,1,903,1,903,1,903,1,903,1,903,1,903,1,903,1,903,1,903,1,903,1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,905,1,905,1,905,1,905,1,906,1,906,1,906,1,906,1,906,1,906,1,906,1,907,1,907,1,907,1,907,1,907,1,907,1,907,1,907,1,907,1,907,1,907,1,908,1,908,1,908,1,908,1,908,1,908,1,908,1,908,1,908,1,908,1,908,1,909,1,909,1,909,1,909,1,909,1,909,1,909,1,909,1,909,1,909,1,910,1,910,1,910,1,910,1,910,1,910,1,910,1,910,1,910,1,910,1,911,1,911,1,911,1,911,1,911,1,911,1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,913,1,913,1,913,1,913,1,913,1,913,1,913,1,913,1,913,1,913,1,913,1,914,1,914,1,914,1,914,1,914,1,914,1,914,1,914,1,914,1,915,1,915,1,915,1,915,1,915,1,915,1,915,1,915,1,916,1,916,1,916,1,916,1,916,1,916,1,916,1,917,1,917,1,917,1,917,1,917,1,917,1,917,1,917,1,917,1,918,1,918,1,918,1,918,1,918,1,918,1,918,1,918,1,918,1,918,1,918,1,918,1,918,1,919,1,919,1,919,1,919,1,919,1,919,1,919,1,919,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,921,1,921,1,921,1,921,1,921,1,921,1,921,1,921,1,921,1,921,1,921,1,921,1,921,1,921,1,921,1,922,1,922,1,922,1,922,1,922,1,922,1,922,1,922,1,923,1,923,1,923,1,923,1,923,1,923,1,923,1,923,1,923,1,923,1,923,1,923,1,923,1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,925,1,925,1,925,1,925,1,925,1,925,1,926,1,926,1,926,1,926,1,926,1,926,1,927,1,927,1,927,1,927,1,927,1,927,1,927,1,928,1,928,1,928,1,928,1,928,1,928,1,928,1,928,1,928,1,928,1,928,1,928,1,928,1,929,1,929,1,929,1,929,1,929,1,929,1,929,1,929,1,929,1,929,1,929,1,929,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,932,1,932,1,932,1,933,1,933,1,933,1,933,1,933,1,933,1,933,1,933,1,933,1,933,1,934,1,934,1,934,1,934,1,934,1,934,1,934,1,935,1,935,1,935,1,935,1,936,1,936,1,936,1,936,1,936,1,936,1,937,1,937,1,937,1,937,1,937,1,938,1,938,1,938,1,938,1,938,1,938,1,939,1,939,1,939,1,939,1,939,1,940,1,940,1,940,1,940,1,940,1,940,1,941,1,941,1,941,1,941,1,941,1,941,1,941,1,941,1,941,1,942,1,942,1,942,1,942,1,942,1,942,1,942,1,942,1,942,1,943,1,943,1,943,1,943,1,943,1,943,1,943,1,943,1,943,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,945,1,945,1,945,1,945,1,945,1,945,1,945,1,945,1,945,1,945,1,945,1,945,1,946,1,946,1,946,1,946,1,946,1,946,1,946,1,946,1,946,1,946,1,946,1,946,1,947,1,947,1,947,1,947,1,947,1,947,1,947,1,947,1,947,1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,949,1,949,1,949,1,949,1,949,1,949,1,949,1,949,1,949,1,949,1,949,1,949,1,950,1,950,1,950,1,950,1,950,1,950,1,950,1,950,1,950,1,950,1,950,1,951,1,951,1,951,1,951,1,951,1,951,1,951,1,951,1,951,1,951,1,952,1,952,1,952,1,952,1,953,1,953,1,953,1,953,1,953,1,953,1,953,1,953,1,953,1,953,1,953,1,953,1,953,1,953,1,954,1,954,1,954,1,954,1,954,1,954,1,954,1,954,1,954,1,954,1,954,1,954,1,954,1,955,1,955,1,955,1,955,1,955,1,955,1,955,1,955,1,955,1,955,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,957,1,957,1,957,1,957,1,957,1,957,1,957,1,957,1,957,1,957,1,957,1,957,1,957,1,957,1,958,1,958,1,958,1,958,1,958,1,958,1,958,1,958,1,958,1,958,1,958,1,958,1,958,1,958,1,959,1,959,1,959,1,959,1,959,1,959,1,959,1,959,1,959,1,959,1,959,1,959,1,959,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,966,1,966,1,966,1,966,1,966,1,966,1,966,1,966,1,966,1,966,1,966,1,967,1,967,1,967,1,967,1,967,1,967,1,967,1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,970,1,970,1,970,1,970,1,970,1,970,1,970,1,970,1,970,1,970,1,971,1,971,1,971,1,971,1,972,1,972,1,972,1,972,1,972,1,972,1,972,1,972,1,972,1,972,1,972,1,972,1,972,1,973,1,973,1,973,1,973,1,974,1,974,1,974,1,974,1,974,1,974,1,974,1,974,1,974,1,975,1,975,1,975,1,975,1,975,1,975,1,975,1,975,1,975,1,975,1,975,1,976,1,976,1,976,1,976,1,976,1,976,1,976,1,976,1,976,1,976,1,976,1,976,1,977,1,977,1,977,1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,979,1,979,1,979,1,979,1,979,1,979,1,979,1,979,1,979,1,979,1,979,1,979,1,979,1,980,1,980,1,980,1,980,1,980,1,980,1,980,1,981,1,981,1,981,1,981,1,981,1,981,1,981,1,981,1,981,1,981,1,981,1,981,1,981,1,982,1,982,1,982,1,982,1,982,1,982,1,982,1,982,1,982,1,982,1,982,1,982,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,985,1,985,1,985,1,985,1,986,1,986,1,986,1,986,1,986,1,986,1,987,1,987,1,987,1,987,1,987,1,987,1,988,1,988,1,988,1,988,1,988,1,988,1,988,1,988,1,989,1,989,1,989,1,989,1,989,1,990,1,990,1,990,1,990,1,990,1,990,1,990,1,991,1,991,1,991,1,991,1,991,1,991,1,991,1,991,1,991,1,991,1,991,1,991,1,991,1,992,1,992,1,992,1,992,1,992,1,992,1,992,1,992,1,992,1,992,1,992,1,992,1,992,1,993,1,993,1,993,1,993,1,993,1,993,1,993,1,993,1,994,1,994,1,994,1,994,1,994,1,994,1,995,1,995,1,995,1,995,1,995,1,995,1,995,1,995,1,995,1,995,1,996,1,996,1,996,1,996,1,996,1,997,1,997,1,997,1,997,1,997,1,997,1,998,1,998,1,998,1,998,1,998,1,998,1,998,1,998,1,998,1,998,1,998,1,998,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,1e3,1,1e3,1,1e3,1,1e3,1,1e3,1,1e3,1,1e3,1,1e3,1,1e3,1,1e3,1,1e3,1,1e3,1,1e3,1,1001,1,1001,1,1001,1,1001,1,1002,1,1002,1,1002,1,1002,1,1002,1,1003,1,1003,1,1003,1,1003,1,1003,1,1004,1,1004,1,1004,1,1004,1,1004,1,1004,1,1004,1,1004,1,1004,1,1004,1,1004,1,1004,1,1005,1,1005,1,1005,1,1005,1,1005,1,1006,1,1006,1,1006,1,1006,1,1007,1,1007,1,1007,1,1007,1,1007,1,1007,1,1008,1,1008,1,1008,1,1008,1,1008,1,1008,1,1008,1,1008,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1010,1,1010,1,1010,1,1010,1,1010,1,1011,1,1011,1,1011,1,1011,1,1011,1,1012,1,1012,1,1012,1,1012,1,1012,1,1012,1,1012,1,1012,1,1012,1,1012,1,1012,1,1013,1,1013,1,1013,1,1013,1,1013,1,1013,1,1013,1,1014,1,1014,1,1014,1,1014,1,1014,1,1014,1,1014,1,1014,1,1014,1,1014,1,1014,1,1014,1,1015,1,1015,1,1015,1,1015,1,1015,1,1015,1,1015,1,1015,1,1016,1,1016,1,1016,1,1016,1,1016,1,1016,1,1016,1,1016,1,1016,1,1016,1,1016,1,1016,1,1017,1,1017,1,1017,1,1017,1,1017,1,1017,1,1017,1,1017,1,1017,1,1017,1,1018,1,1018,1,1018,1,1018,1,1018,1,1018,1,1018,1,1018,1,1018,1,1019,1,1019,1,1019,1,1019,1,1019,1,1019,1,1019,1,1019,1,1019,1,1020,1,1020,1,1020,1,1020,1,1020,1,1020,1,1020,1,1020,1,1020,1,1020,1,1021,1,1021,1,1021,1,1021,1,1021,1,1021,1,1021,1,1021,1,1021,1,1021,1,1021,1,1021,1,1022,1,1022,1,1022,1,1022,1,1022,1,1022,1,1022,1,1022,1,1022,1,1022,1,1022,1,1022,1,1023,1,1023,1,1023,1,1023,1,1023,1,1023,1,1023,1,1023,1,1023,1,1023,1,1023,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1025,1,1025,1,1025,1,1025,1,1025,1,1025,1,1025,1,1025,1,1025,1,1025,1,1025,1,1025,1,1025,1,1026,1,1026,1,1026,1,1026,1,1026,1,1026,1,1026,1,1026,1,1026,1,1026,1,1026,1,1026,1,1027,1,1027,1,1027,1,1027,1,1027,1,1027,1,1027,1,1027,1,1027,1,1027,1,1027,1,1027,1,1028,1,1028,1,1028,1,1028,1,1028,1,1028,1,1028,1,1028,1,1028,1,1028,1,1028,1,1028,1,1029,1,1029,1,1029,1,1029,1,1029,1,1029,1,1029,1,1029,1,1029,1,1029,1,1029,1,1029,1,1030,1,1030,1,1030,1,1030,1,1030,1,1030,1,1030,1,1030,1,1030,1,1030,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1046,1,1046,1,1046,1,1046,1,1046,1,1046,1,1046,1,1046,1,1046,1,1046,1,1046,1,1046,1,1047,1,1047,1,1047,1,1047,1,1047,1,1047,1,1047,1,1047,1,1047,1,1047,1,1047,1,1048,1,1048,1,1048,1,1048,1,1048,1,1048,1,1048,1,1048,1,1048,1,1048,1,1048,1,1048,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1056,1,1056,1,1056,1,1056,1,1056,1,1056,1,1056,1,1056,1,1056,1,1056,1,1056,1,1056,1,1056,1,1057,1,1057,1,1057,1,1057,1,1057,1,1057,1,1057,1,1057,1,1057,1,1057,1,1057,1,1057,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1060,1,1060,1,1060,1,1060,1,1060,1,1060,1,1060,1,1060,1,1060,1,1060,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1065,1,1065,1,1065,1,1065,1,1065,1,1065,1,1065,1,1065,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1068,1,1068,1,1068,1,1068,1,1068,1,1068,1,1068,1,1068,1,1068,1,1068,1,1068,1,1069,1,1069,1,1069,1,1069,1,1069,1,1069,1,1069,1,1069,1,1069,1,1070,1,1070,1,1070,1,1070,1,1070,1,1070,1,1070,1,1070,1,1070,1,1070,1,1071,1,1071,1,1071,1,1071,1,1071,1,1072,1,1072,1,1072,1,1072,1,1072,1,1073,1,1073,1,1073,1,1073,1,1073,1,1073,1,1073,1,1073,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1075,1,1075,1,1075,1,1075,1,1075,1,1075,1,1075,1,1075,1,1076,1,1076,1,1076,1,1076,1,1076,1,1076,1,1076,1,1076,1,1076,1,1076,1,1076,1,1076,1,1077,1,1077,1,1077,1,1077,1,1078,1,1078,1,1078,1,1078,1,1078,1,1078,1,1078,1,1078,1,1078,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1081,1,1081,1,1081,1,1081,1,1081,1,1081,1,1081,1,1081,1,1081,1,1081,1,1081,1,1081,1,1082,1,1082,1,1082,1,1082,1,1082,1,1082,1,1082,1,1082,1,1082,1,1082,1,1082,1,1082,1,1083,1,1083,1,1083,1,1083,1,1083,1,1083,1,1083,1,1083,1,1084,1,1084,1,1084,1,1084,1,1084,1,1084,1,1084,1,1084,1,1084,1,1084,1,1085,1,1085,1,1085,1,1085,1,1085,1,1085,1,1085,1,1085,1,1086,1,1086,1,1086,1,1086,1,1086,1,1086,1,1086,1,1086,1,1086,1,1086,1,1086,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1088,1,1088,1,1088,1,1088,1,1088,1,1088,1,1089,1,1089,1,1089,1,1089,1,1089,1,1089,1,1089,1,1089,1,1089,1,1089,1,1089,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1091,1,1091,1,1091,1,1091,1,1091,1,1091,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1093,1,1093,1,1093,1,1093,1,1093,1,1093,1,1093,1,1093,1,1093,1,1093,1,1094,1,1094,1,1094,1,1094,1,1094,1,1094,1,1095,1,1095,1,1095,1,1095,1,1095,1,1096,1,1096,1,1096,1,1096,1,1096,1,1096,1,1096,1,1096,1,1096,1,1096,1,1096,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1098,1,1098,1,1098,1,1098,1,1098,1,1098,1,1098,1,1098,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1100,1,1100,1,1100,1,1100,1,1100,1,1100,1,1100,1,1100,1,1101,1,1101,1,1101,1,1101,1,1101,1,1101,1,1101,1,1101,1,1101,1,1101,1,1101,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1103,1,1103,1,1103,1,1103,1,1103,1,1103,1,1103,1,1104,1,1104,1,1104,1,1104,1,1104,1,1104,1,1104,1,1104,1,1104,1,1105,1,1105,1,1106,1,1106,1,1107,1,1107,1,1107,1,1108,1,1108,1,1108,1,1109,1,1109,1,1109,1,1110,1,1110,1,1110,1,1111,1,1111,1,1111,1,1112,1,1112,1,1112,1,1113,1,1113,1,1113,1,1114,1,1114,1,1114,1,1115,1,1115,1,1115,1,1116,1,1116,1,1117,1,1117,1,1118,1,1118,1,1119,1,1119,1,1120,1,1120,1,1121,1,1121,1,1121,1,1121,1,1122,1,1122,1,1122,1,1122,1,1123,1,1123,1,1124,1,1124,1,1125,1,1125,1,1126,1,1126,1,1127,1,1127,1,1128,1,1128,1,1129,1,1129,1,1130,1,1130,1,1131,1,1131,1,1132,1,1132,1,1133,1,1133,1,1134,1,1134,1,1135,1,1135,1,1136,1,1136,1,1137,1,1137,1,1138,1,1138,1,1139,1,1139,1,1140,1,1140,1,1141,1,1141,1,1142,1,1142,1,1143,1,1143,1,1144,1,1144,1,1144,3,1144,13422,8,1144,1,1145,1,1145,1,1145,1,1145,1,1146,4,1146,13429,8,1146,11,1146,12,1146,13430,1,1146,1,1146,1,1147,1,1147,1,1147,1,1148,1,1148,1,1148,3,1148,13441,8,1148,1,1149,4,1149,13444,8,1149,11,1149,12,1149,13445,1,1150,1,1150,1,1150,1,1150,1,1150,4,1150,13453,8,1150,11,1150,12,1150,13454,1,1150,1,1150,1,1150,1,1150,1,1150,1,1150,4,1150,13463,8,1150,11,1150,12,1150,13464,3,1150,13467,8,1150,1,1151,5,1151,13470,8,1151,10,1151,12,1151,13473,9,1151,1,1151,1,1151,4,1151,13477,8,1151,11,1151,12,1151,13478,1,1151,4,1151,13482,8,1151,11,1151,12,1151,13483,1,1151,1,1151,1,1151,1,1151,5,1151,13490,8,1151,10,1151,12,1151,13493,9,1151,1,1151,1,1151,4,1151,13497,8,1151,11,1151,12,1151,13498,1,1151,1,1151,1,1151,4,1151,13504,8,1151,11,1151,12,1151,13505,1,1151,1,1151,3,1151,13510,8,1151,1,1152,1,1152,1,1152,1,1153,1,1153,1,1154,1,1154,1,1154,1,1155,1,1155,1,1155,1,1156,1,1156,1,1157,1,1157,1,1158,1,1158,1,1158,1,1159,1,1159,1,1159,4,1159,13533,8,1159,11,1159,12,1159,13534,3,1159,13537,8,1159,1,1160,1,1160,1,1160,4,1160,13542,8,1160,11,1160,12,1160,13543,1,1160,3,1160,13547,8,1160,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,1,1161,3,1161,13590,8,1161,1,1162,1,1162,3,1162,13594,8,1162,1,1162,4,1162,13597,8,1162,11,1162,12,1162,13598,1,1163,5,1163,13602,8,1163,10,1163,12,1163,13605,9,1163,1,1163,4,1163,13608,8,1163,11,1163,12,1163,13609,1,1163,5,1163,13613,8,1163,10,1163,12,1163,13616,9,1163,1,1164,1,1164,1,1164,1,1164,1,1164,1,1164,5,1164,13624,8,1164,10,1164,12,1164,13627,9,1164,1,1164,1,1164,1,1165,1,1165,1,1165,1,1165,1,1165,1,1165,5,1165,13637,8,1165,10,1165,12,1165,13640,9,1165,1,1165,1,1165,1,1166,1,1166,1,1166,1,1166,5,1166,13648,8,1166,10,1166,12,1166,13651,9,1166,1,1166,1,1166,1,1167,1,1167,1,1168,1,1168,1,1169,1,1169,1,1169,4,1169,13662,8,1169,11,1169,12,1169,13663,1,1169,1,1169,1,1170,4,1170,13669,8,1170,11,1170,12,1170,13670,1,1170,1,1170,4,1170,13675,8,1170,11,1170,12,1170,13676,1,1170,5,1170,13680,8,1170,10,1170,12,1170,13683,9,1170,1,1170,1,1170,5,1170,13687,8,1170,10,1170,12,1170,13690,9,1170,1,1170,1,1170,4,1170,13694,8,1170,11,1170,12,1170,13695,3,1170,13698,8,1170,1,1171,1,1171,1,1171,1,1171,4,2359,2372,13603,13609,0,1172,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213,107,215,108,217,109,219,110,221,111,223,112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239,120,241,121,243,122,245,123,247,124,249,125,251,126,253,127,255,128,257,129,259,130,261,131,263,132,265,133,267,134,269,135,271,136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287,144,289,145,291,146,293,147,295,148,297,149,299,150,301,151,303,152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319,160,321,161,323,162,325,163,327,164,329,165,331,166,333,167,335,168,337,169,339,170,341,171,343,172,345,173,347,174,349,175,351,176,353,177,355,178,357,179,359,180,361,181,363,182,365,183,367,184,369,185,371,186,373,187,375,188,377,189,379,190,381,191,383,192,385,193,387,194,389,195,391,196,393,197,395,198,397,199,399,200,401,201,403,202,405,203,407,204,409,205,411,206,413,207,415,208,417,209,419,210,421,211,423,212,425,213,427,214,429,215,431,216,433,217,435,218,437,219,439,220,441,221,443,222,445,223,447,224,449,225,451,226,453,227,455,228,457,229,459,230,461,231,463,232,465,233,467,234,469,235,471,236,473,237,475,238,477,239,479,240,481,241,483,242,485,243,487,244,489,245,491,246,493,247,495,248,497,249,499,250,501,251,503,252,505,253,507,254,509,255,511,256,513,257,515,258,517,259,519,260,521,261,523,262,525,263,527,264,529,265,531,266,533,267,535,268,537,269,539,270,541,271,543,272,545,273,547,274,549,275,551,276,553,277,555,278,557,279,559,280,561,281,563,282,565,283,567,284,569,285,571,286,573,287,575,288,577,289,579,290,581,291,583,292,585,293,587,294,589,295,591,296,593,297,595,298,597,299,599,300,601,301,603,302,605,303,607,304,609,305,611,306,613,307,615,308,617,309,619,310,621,311,623,312,625,313,627,314,629,315,631,316,633,317,635,318,637,319,639,320,641,321,643,322,645,323,647,324,649,325,651,326,653,327,655,328,657,329,659,330,661,331,663,332,665,333,667,334,669,335,671,336,673,337,675,338,677,339,679,340,681,341,683,342,685,343,687,344,689,345,691,346,693,347,695,348,697,349,699,350,701,351,703,352,705,353,707,354,709,355,711,356,713,357,715,358,717,359,719,360,721,361,723,362,725,363,727,364,729,365,731,366,733,367,735,368,737,369,739,370,741,371,743,372,745,373,747,374,749,375,751,376,753,377,755,378,757,379,759,380,761,381,763,382,765,383,767,384,769,385,771,386,773,387,775,388,777,389,779,390,781,391,783,392,785,393,787,394,789,395,791,396,793,397,795,398,797,399,799,400,801,401,803,402,805,403,807,404,809,405,811,406,813,407,815,408,817,409,819,410,821,411,823,412,825,413,827,414,829,415,831,416,833,417,835,418,837,419,839,420,841,421,843,422,845,423,847,424,849,425,851,426,853,427,855,428,857,429,859,430,861,431,863,432,865,433,867,434,869,435,871,436,873,437,875,438,877,439,879,440,881,441,883,442,885,443,887,444,889,445,891,446,893,447,895,448,897,449,899,450,901,451,903,452,905,453,907,454,909,455,911,456,913,457,915,458,917,459,919,460,921,461,923,462,925,463,927,464,929,465,931,466,933,467,935,468,937,469,939,470,941,471,943,472,945,473,947,474,949,475,951,476,953,477,955,478,957,479,959,480,961,481,963,482,965,483,967,484,969,485,971,486,973,487,975,488,977,489,979,490,981,491,983,492,985,493,987,494,989,495,991,496,993,497,995,498,997,499,999,500,1001,501,1003,502,1005,503,1007,504,1009,505,1011,506,1013,507,1015,508,1017,509,1019,510,1021,511,1023,512,1025,513,1027,514,1029,515,1031,516,1033,517,1035,518,1037,519,1039,520,1041,521,1043,522,1045,523,1047,524,1049,525,1051,526,1053,527,1055,528,1057,529,1059,530,1061,531,1063,532,1065,533,1067,534,1069,535,1071,536,1073,537,1075,538,1077,539,1079,540,1081,541,1083,542,1085,543,1087,544,1089,545,1091,546,1093,547,1095,548,1097,549,1099,550,1101,551,1103,552,1105,553,1107,554,1109,555,1111,556,1113,557,1115,558,1117,559,1119,560,1121,561,1123,562,1125,563,1127,564,1129,565,1131,566,1133,567,1135,568,1137,569,1139,570,1141,571,1143,572,1145,573,1147,574,1149,575,1151,576,1153,577,1155,578,1157,579,1159,580,1161,581,1163,582,1165,583,1167,584,1169,585,1171,586,1173,587,1175,588,1177,589,1179,590,1181,591,1183,592,1185,593,1187,594,1189,595,1191,596,1193,597,1195,598,1197,599,1199,600,1201,601,1203,602,1205,603,1207,604,1209,605,1211,606,1213,607,1215,608,1217,609,1219,610,1221,611,1223,612,1225,613,1227,614,1229,615,1231,616,1233,617,1235,618,1237,619,1239,620,1241,621,1243,622,1245,623,1247,624,1249,625,1251,626,1253,627,1255,628,1257,629,1259,630,1261,631,1263,632,1265,633,1267,634,1269,635,1271,636,1273,637,1275,638,1277,639,1279,640,1281,641,1283,642,1285,643,1287,644,1289,645,1291,646,1293,647,1295,648,1297,649,1299,650,1301,651,1303,652,1305,653,1307,654,1309,655,1311,656,1313,657,1315,658,1317,659,1319,660,1321,661,1323,662,1325,663,1327,664,1329,665,1331,666,1333,667,1335,668,1337,669,1339,670,1341,671,1343,672,1345,673,1347,674,1349,675,1351,676,1353,677,1355,678,1357,679,1359,680,1361,681,1363,682,1365,683,1367,684,1369,685,1371,686,1373,687,1375,688,1377,689,1379,690,1381,691,1383,692,1385,693,1387,694,1389,695,1391,696,1393,697,1395,698,1397,699,1399,700,1401,701,1403,702,1405,703,1407,704,1409,705,1411,706,1413,707,1415,708,1417,709,1419,710,1421,711,1423,712,1425,713,1427,714,1429,715,1431,716,1433,717,1435,718,1437,719,1439,720,1441,721,1443,722,1445,723,1447,724,1449,725,1451,726,1453,727,1455,728,1457,729,1459,730,1461,731,1463,732,1465,733,1467,734,1469,735,1471,736,1473,737,1475,738,1477,739,1479,740,1481,741,1483,742,1485,743,1487,744,1489,745,1491,746,1493,747,1495,748,1497,749,1499,750,1501,751,1503,752,1505,753,1507,754,1509,755,1511,756,1513,757,1515,758,1517,759,1519,760,1521,761,1523,762,1525,763,1527,764,1529,765,1531,766,1533,767,1535,768,1537,769,1539,770,1541,771,1543,772,1545,773,1547,774,1549,775,1551,776,1553,777,1555,778,1557,779,1559,780,1561,781,1563,782,1565,783,1567,784,1569,785,1571,786,1573,787,1575,788,1577,789,1579,790,1581,791,1583,792,1585,793,1587,794,1589,795,1591,796,1593,797,1595,798,1597,799,1599,800,1601,801,1603,802,1605,803,1607,804,1609,805,1611,806,1613,807,1615,808,1617,809,1619,810,1621,811,1623,812,1625,813,1627,814,1629,815,1631,816,1633,817,1635,818,1637,819,1639,820,1641,821,1643,822,1645,823,1647,824,1649,825,1651,826,1653,827,1655,828,1657,829,1659,830,1661,831,1663,832,1665,833,1667,834,1669,835,1671,836,1673,837,1675,838,1677,839,1679,840,1681,841,1683,842,1685,843,1687,844,1689,845,1691,846,1693,847,1695,848,1697,849,1699,850,1701,851,1703,852,1705,853,1707,854,1709,855,1711,856,1713,857,1715,858,1717,859,1719,860,1721,861,1723,862,1725,863,1727,864,1729,865,1731,866,1733,867,1735,868,1737,869,1739,870,1741,871,1743,872,1745,873,1747,874,1749,875,1751,876,1753,877,1755,878,1757,879,1759,880,1761,881,1763,882,1765,883,1767,884,1769,885,1771,886,1773,887,1775,888,1777,889,1779,890,1781,891,1783,892,1785,893,1787,894,1789,895,1791,896,1793,897,1795,898,1797,899,1799,900,1801,901,1803,902,1805,903,1807,904,1809,905,1811,906,1813,907,1815,908,1817,909,1819,910,1821,911,1823,912,1825,913,1827,914,1829,915,1831,916,1833,917,1835,918,1837,919,1839,920,1841,921,1843,922,1845,923,1847,924,1849,925,1851,926,1853,927,1855,928,1857,929,1859,930,1861,931,1863,932,1865,933,1867,934,1869,935,1871,936,1873,937,1875,938,1877,939,1879,940,1881,941,1883,942,1885,943,1887,944,1889,945,1891,946,1893,947,1895,948,1897,949,1899,950,1901,951,1903,952,1905,953,1907,954,1909,955,1911,956,1913,957,1915,958,1917,959,1919,960,1921,961,1923,962,1925,963,1927,964,1929,965,1931,966,1933,967,1935,968,1937,969,1939,970,1941,971,1943,972,1945,973,1947,974,1949,975,1951,976,1953,977,1955,978,1957,979,1959,980,1961,981,1963,982,1965,983,1967,984,1969,985,1971,986,1973,987,1975,988,1977,989,1979,990,1981,991,1983,992,1985,993,1987,994,1989,995,1991,996,1993,997,1995,998,1997,999,1999,1e3,2001,1001,2003,1002,2005,1003,2007,1004,2009,1005,2011,1006,2013,1007,2015,1008,2017,1009,2019,1010,2021,1011,2023,1012,2025,1013,2027,1014,2029,1015,2031,1016,2033,1017,2035,1018,2037,1019,2039,1020,2041,1021,2043,1022,2045,1023,2047,1024,2049,1025,2051,1026,2053,1027,2055,1028,2057,1029,2059,1030,2061,1031,2063,1032,2065,1033,2067,1034,2069,1035,2071,1036,2073,1037,2075,1038,2077,1039,2079,1040,2081,1041,2083,1042,2085,1043,2087,1044,2089,1045,2091,1046,2093,1047,2095,1048,2097,1049,2099,1050,2101,1051,2103,1052,2105,1053,2107,1054,2109,1055,2111,1056,2113,1057,2115,1058,2117,1059,2119,1060,2121,1061,2123,1062,2125,1063,2127,1064,2129,1065,2131,1066,2133,1067,2135,1068,2137,1069,2139,1070,2141,1071,2143,1072,2145,1073,2147,1074,2149,1075,2151,1076,2153,1077,2155,1078,2157,1079,2159,1080,2161,1081,2163,1082,2165,1083,2167,1084,2169,1085,2171,1086,2173,1087,2175,1088,2177,1089,2179,1090,2181,1091,2183,1092,2185,1093,2187,1094,2189,1095,2191,1096,2193,1097,2195,1098,2197,1099,2199,1100,2201,1101,2203,1102,2205,1103,2207,1104,2209,1105,2211,1106,2213,1107,2215,1108,2217,1109,2219,1110,2221,1111,2223,1112,2225,1113,2227,1114,2229,1115,2231,1116,2233,1117,2235,1118,2237,1119,2239,1120,2241,1121,2243,1122,2245,1123,2247,1124,2249,1125,2251,1126,2253,1127,2255,1128,2257,1129,2259,1130,2261,1131,2263,1132,2265,1133,2267,1134,2269,1135,2271,1136,2273,1137,2275,1138,2277,1139,2279,1140,2281,1141,2283,1142,2285,1143,2287,1144,2289,0,2291,1145,2293,1146,2295,1147,2297,1148,2299,1149,2301,1150,2303,1151,2305,1152,2307,1153,2309,1154,2311,1155,2313,1156,2315,1157,2317,1158,2319,1159,2321,1160,2323,0,2325,0,2327,0,2329,0,2331,0,2333,0,2335,0,2337,0,2339,0,2341,0,2343,1161,1,0,42,3,0,9,10,13,13,32,32,2,0,9,9,32,32,2,0,10,10,13,13,2,0,65,65,97,97,2,0,68,68,100,100,2,0,76,76,108,108,2,0,84,84,116,116,2,0,69,69,101,101,2,0,82,82,114,114,2,0,87,87,119,119,2,0,89,89,121,121,2,0,83,83,115,115,2,0,78,78,110,110,2,0,90,90,122,122,2,0,67,67,99,99,2,0,73,73,105,105,2,0,66,66,98,98,2,0,85,85,117,117,2,0,70,70,102,102,2,0,79,79,111,111,2,0,72,72,104,104,2,0,75,75,107,107,2,0,71,71,103,103,2,0,77,77,109,109,2,0,86,86,118,118,2,0,80,80,112,112,2,0,88,88,120,120,2,0,74,74,106,106,2,0,81,81,113,113,8,0,71,71,75,75,77,77,84,84,103,103,107,107,109,109,116,116,7,0,36,36,46,46,48,57,65,90,95,95,97,122,128,65535,2,0,43,43,45,45,6,0,36,36,48,57,65,90,95,95,97,122,128,65535,5,0,36,36,65,90,95,95,97,122,128,65535,2,0,34,34,92,92,2,0,39,39,92,92,1,0,96,96,3,0,48,57,65,70,97,102,1,0,48,57,1,0,48,49,2,0,46,46,48,57,3,0,48,58,65,70,97,102,13786,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0,455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0,501,1,0,0,0,0,503,1,0,0,0,0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0,0,0,0,511,1,0,0,0,0,513,1,0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519,1,0,0,0,0,521,1,0,0,0,0,523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0,0,529,1,0,0,0,0,531,1,0,0,0,0,533,1,0,0,0,0,535,1,0,0,0,0,537,1,0,0,0,0,539,1,0,0,0,0,541,1,0,0,0,0,543,1,0,0,0,0,545,1,0,0,0,0,547,1,0,0,0,0,549,1,0,0,0,0,551,1,0,0,0,0,553,1,0,0,0,0,555,1,0,0,0,0,557,1,0,0,0,0,559,1,0,0,0,0,561,1,0,0,0,0,563,1,0,0,0,0,565,1,0,0,0,0,567,1,0,0,0,0,569,1,0,0,0,0,571,1,0,0,0,0,573,1,0,0,0,0,575,1,0,0,0,0,577,1,0,0,0,0,579,1,0,0,0,0,581,1,0,0,0,0,583,1,0,0,0,0,585,1,0,0,0,0,587,1,0,0,0,0,589,1,0,0,0,0,591,1,0,0,0,0,593,1,0,0,0,0,595,1,0,0,0,0,597,1,0,0,0,0,599,1,0,0,0,0,601,1,0,0,0,0,603,1,0,0,0,0,605,1,0,0,0,0,607,1,0,0,0,0,609,1,0,0,0,0,611,1,0,0,0,0,613,1,0,0,0,0,615,1,0,0,0,0,617,1,0,0,0,0,619,1,0,0,0,0,621,1,0,0,0,0,623,1,0,0,0,0,625,1,0,0,0,0,627,1,0,0,0,0,629,1,0,0,0,0,631,1,0,0,0,0,633,1,0,0,0,0,635,1,0,0,0,0,637,1,0,0,0,0,639,1,0,0,0,0,641,1,0,0,0,0,643,1,0,0,0,0,645,1,0,0,0,0,647,1,0,0,0,0,649,1,0,0,0,0,651,1,0,0,0,0,653,1,0,0,0,0,655,1,0,0,0,0,657,1,0,0,0,0,659,1,0,0,0,0,661,1,0,0,0,0,663,1,0,0,0,0,665,1,0,0,0,0,667,1,0,0,0,0,669,1,0,0,0,0,671,1,0,0,0,0,673,1,0,0,0,0,675,1,0,0,0,0,677,1,0,0,0,0,679,1,0,0,0,0,681,1,0,0,0,0,683,1,0,0,0,0,685,1,0,0,0,0,687,1,0,0,0,0,689,1,0,0,0,0,691,1,0,0,0,0,693,1,0,0,0,0,695,1,0,0,0,0,697,1,0,0,0,0,699,1,0,0,0,0,701,1,0,0,0,0,703,1,0,0,0,0,705,1,0,0,0,0,707,1,0,0,0,0,709,1,0,0,0,0,711,1,0,0,0,0,713,1,0,0,0,0,715,1,0,0,0,0,717,1,0,0,0,0,719,1,0,0,0,0,721,1,0,0,0,0,723,1,0,0,0,0,725,1,0,0,0,0,727,1,0,0,0,0,729,1,0,0,0,0,731,1,0,0,0,0,733,1,0,0,0,0,735,1,0,0,0,0,737,1,0,0,0,0,739,1,0,0,0,0,741,1,0,0,0,0,743,1,0,0,0,0,745,1,0,0,0,0,747,1,0,0,0,0,749,1,0,0,0,0,751,1,0,0,0,0,753,1,0,0,0,0,755,1,0,0,0,0,757,1,0,0,0,0,759,1,0,0,0,0,761,1,0,0,0,0,763,1,0,0,0,0,765,1,0,0,0,0,767,1,0,0,0,0,769,1,0,0,0,0,771,1,0,0,0,0,773,1,0,0,0,0,775,1,0,0,0,0,777,1,0,0,0,0,779,1,0,0,0,0,781,1,0,0,0,0,783,1,0,0,0,0,785,1,0,0,0,0,787,1,0,0,0,0,789,1,0,0,0,0,791,1,0,0,0,0,793,1,0,0,0,0,795,1,0,0,0,0,797,1,0,0,0,0,799,1,0,0,0,0,801,1,0,0,0,0,803,1,0,0,0,0,805,1,0,0,0,0,807,1,0,0,0,0,809,1,0,0,0,0,811,1,0,0,0,0,813,1,0,0,0,0,815,1,0,0,0,0,817,1,0,0,0,0,819,1,0,0,0,0,821,1,0,0,0,0,823,1,0,0,0,0,825,1,0,0,0,0,827,1,0,0,0,0,829,1,0,0,0,0,831,1,0,0,0,0,833,1,0,0,0,0,835,1,0,0,0,0,837,1,0,0,0,0,839,1,0,0,0,0,841,1,0,0,0,0,843,1,0,0,0,0,845,1,0,0,0,0,847,1,0,0,0,0,849,1,0,0,0,0,851,1,0,0,0,0,853,1,0,0,0,0,855,1,0,0,0,0,857,1,0,0,0,0,859,1,0,0,0,0,861,1,0,0,0,0,863,1,0,0,0,0,865,1,0,0,0,0,867,1,0,0,0,0,869,1,0,0,0,0,871,1,0,0,0,0,873,1,0,0,0,0,875,1,0,0,0,0,877,1,0,0,0,0,879,1,0,0,0,0,881,1,0,0,0,0,883,1,0,0,0,0,885,1,0,0,0,0,887,1,0,0,0,0,889,1,0,0,0,0,891,1,0,0,0,0,893,1,0,0,0,0,895,1,0,0,0,0,897,1,0,0,0,0,899,1,0,0,0,0,901,1,0,0,0,0,903,1,0,0,0,0,905,1,0,0,0,0,907,1,0,0,0,0,909,1,0,0,0,0,911,1,0,0,0,0,913,1,0,0,0,0,915,1,0,0,0,0,917,1,0,0,0,0,919,1,0,0,0,0,921,1,0,0,0,0,923,1,0,0,0,0,925,1,0,0,0,0,927,1,0,0,0,0,929,1,0,0,0,0,931,1,0,0,0,0,933,1,0,0,0,0,935,1,0,0,0,0,937,1,0,0,0,0,939,1,0,0,0,0,941,1,0,0,0,0,943,1,0,0,0,0,945,1,0,0,0,0,947,1,0,0,0,0,949,1,0,0,0,0,951,1,0,0,0,0,953,1,0,0,0,0,955,1,0,0,0,0,957,1,0,0,0,0,959,1,0,0,0,0,961,1,0,0,0,0,963,1,0,0,0,0,965,1,0,0,0,0,967,1,0,0,0,0,969,1,0,0,0,0,971,1,0,0,0,0,973,1,0,0,0,0,975,1,0,0,0,0,977,1,0,0,0,0,979,1,0,0,0,0,981,1,0,0,0,0,983,1,0,0,0,0,985,1,0,0,0,0,987,1,0,0,0,0,989,1,0,0,0,0,991,1,0,0,0,0,993,1,0,0,0,0,995,1,0,0,0,0,997,1,0,0,0,0,999,1,0,0,0,0,1001,1,0,0,0,0,1003,1,0,0,0,0,1005,1,0,0,0,0,1007,1,0,0,0,0,1009,1,0,0,0,0,1011,1,0,0,0,0,1013,1,0,0,0,0,1015,1,0,0,0,0,1017,1,0,0,0,0,1019,1,0,0,0,0,1021,1,0,0,0,0,1023,1,0,0,0,0,1025,1,0,0,0,0,1027,1,0,0,0,0,1029,1,0,0,0,0,1031,1,0,0,0,0,1033,1,0,0,0,0,1035,1,0,0,0,0,1037,1,0,0,0,0,1039,1,0,0,0,0,1041,1,0,0,0,0,1043,1,0,0,0,0,1045,1,0,0,0,0,1047,1,0,0,0,0,1049,1,0,0,0,0,1051,1,0,0,0,0,1053,1,0,0,0,0,1055,1,0,0,0,0,1057,1,0,0,0,0,1059,1,0,0,0,0,1061,1,0,0,0,0,1063,1,0,0,0,0,1065,1,0,0,0,0,1067,1,0,0,0,0,1069,1,0,0,0,0,1071,1,0,0,0,0,1073,1,0,0,0,0,1075,1,0,0,0,0,1077,1,0,0,0,0,1079,1,0,0,0,0,1081,1,0,0,0,0,1083,1,0,0,0,0,1085,1,0,0,0,0,1087,1,0,0,0,0,1089,1,0,0,0,0,1091,1,0,0,0,0,1093,1,0,0,0,0,1095,1,0,0,0,0,1097,1,0,0,0,0,1099,1,0,0,0,0,1101,1,0,0,0,0,1103,1,0,0,0,0,1105,1,0,0,0,0,1107,1,0,0,0,0,1109,1,0,0,0,0,1111,1,0,0,0,0,1113,1,0,0,0,0,1115,1,0,0,0,0,1117,1,0,0,0,0,1119,1,0,0,0,0,1121,1,0,0,0,0,1123,1,0,0,0,0,1125,1,0,0,0,0,1127,1,0,0,0,0,1129,1,0,0,0,0,1131,1,0,0,0,0,1133,1,0,0,0,0,1135,1,0,0,0,0,1137,1,0,0,0,0,1139,1,0,0,0,0,1141,1,0,0,0,0,1143,1,0,0,0,0,1145,1,0,0,0,0,1147,1,0,0,0,0,1149,1,0,0,0,0,1151,1,0,0,0,0,1153,1,0,0,0,0,1155,1,0,0,0,0,1157,1,0,0,0,0,1159,1,0,0,0,0,1161,1,0,0,0,0,1163,1,0,0,0,0,1165,1,0,0,0,0,1167,1,0,0,0,0,1169,1,0,0,0,0,1171,1,0,0,0,0,1173,1,0,0,0,0,1175,1,0,0,0,0,1177,1,0,0,0,0,1179,1,0,0,0,0,1181,1,0,0,0,0,1183,1,0,0,0,0,1185,1,0,0,0,0,1187,1,0,0,0,0,1189,1,0,0,0,0,1191,1,0,0,0,0,1193,1,0,0,0,0,1195,1,0,0,0,0,1197,1,0,0,0,0,1199,1,0,0,0,0,1201,1,0,0,0,0,1203,1,0,0,0,0,1205,1,0,0,0,0,1207,1,0,0,0,0,1209,1,0,0,0,0,1211,1,0,0,0,0,1213,1,0,0,0,0,1215,1,0,0,0,0,1217,1,0,0,0,0,1219,1,0,0,0,0,1221,1,0,0,0,0,1223,1,0,0,0,0,1225,1,0,0,0,0,1227,1,0,0,0,0,1229,1,0,0,0,0,1231,1,0,0,0,0,1233,1,0,0,0,0,1235,1,0,0,0,0,1237,1,0,0,0,0,1239,1,0,0,0,0,1241,1,0,0,0,0,1243,1,0,0,0,0,1245,1,0,0,0,0,1247,1,0,0,0,0,1249,1,0,0,0,0,1251,1,0,0,0,0,1253,1,0,0,0,0,1255,1,0,0,0,0,1257,1,0,0,0,0,1259,1,0,0,0,0,1261,1,0,0,0,0,1263,1,0,0,0,0,1265,1,0,0,0,0,1267,1,0,0,0,0,1269,1,0,0,0,0,1271,1,0,0,0,0,1273,1,0,0,0,0,1275,1,0,0,0,0,1277,1,0,0,0,0,1279,1,0,0,0,0,1281,1,0,0,0,0,1283,1,0,0,0,0,1285,1,0,0,0,0,1287,1,0,0,0,0,1289,1,0,0,0,0,1291,1,0,0,0,0,1293,1,0,0,0,0,1295,1,0,0,0,0,1297,1,0,0,0,0,1299,1,0,0,0,0,1301,1,0,0,0,0,1303,1,0,0,0,0,1305,1,0,0,0,0,1307,1,0,0,0,0,1309,1,0,0,0,0,1311,1,0,0,0,0,1313,1,0,0,0,0,1315,1,0,0,0,0,1317,1,0,0,0,0,1319,1,0,0,0,0,1321,1,0,0,0,0,1323,1,0,0,0,0,1325,1,0,0,0,0,1327,1,0,0,0,0,1329,1,0,0,0,0,1331,1,0,0,0,0,1333,1,0,0,0,0,1335,1,0,0,0,0,1337,1,0,0,0,0,1339,1,0,0,0,0,1341,1,0,0,0,0,1343,1,0,0,0,0,1345,1,0,0,0,0,1347,1,0,0,0,0,1349,1,0,0,0,0,1351,1,0,0,0,0,1353,1,0,0,0,0,1355,1,0,0,0,0,1357,1,0,0,0,0,1359,1,0,0,0,0,1361,1,0,0,0,0,1363,1,0,0,0,0,1365,1,0,0,0,0,1367,1,0,0,0,0,1369,1,0,0,0,0,1371,1,0,0,0,0,1373,1,0,0,0,0,1375,1,0,0,0,0,1377,1,0,0,0,0,1379,1,0,0,0,0,1381,1,0,0,0,0,1383,1,0,0,0,0,1385,1,0,0,0,0,1387,1,0,0,0,0,1389,1,0,0,0,0,1391,1,0,0,0,0,1393,1,0,0,0,0,1395,1,0,0,0,0,1397,1,0,0,0,0,1399,1,0,0,0,0,1401,1,0,0,0,0,1403,1,0,0,0,0,1405,1,0,0,0,0,1407,1,0,0,0,0,1409,1,0,0,0,0,1411,1,0,0,0,0,1413,1,0,0,0,0,1415,1,0,0,0,0,1417,1,0,0,0,0,1419,1,0,0,0,0,1421,1,0,0,0,0,1423,1,0,0,0,0,1425,1,0,0,0,0,1427,1,0,0,0,0,1429,1,0,0,0,0,1431,1,0,0,0,0,1433,1,0,0,0,0,1435,1,0,0,0,0,1437,1,0,0,0,0,1439,1,0,0,0,0,1441,1,0,0,0,0,1443,1,0,0,0,0,1445,1,0,0,0,0,1447,1,0,0,0,0,1449,1,0,0,0,0,1451,1,0,0,0,0,1453,1,0,0,0,0,1455,1,0,0,0,0,1457,1,0,0,0,0,1459,1,0,0,0,0,1461,1,0,0,0,0,1463,1,0,0,0,0,1465,1,0,0,0,0,1467,1,0,0,0,0,1469,1,0,0,0,0,1471,1,0,0,0,0,1473,1,0,0,0,0,1475,1,0,0,0,0,1477,1,0,0,0,0,1479,1,0,0,0,0,1481,1,0,0,0,0,1483,1,0,0,0,0,1485,1,0,0,0,0,1487,1,0,0,0,0,1489,1,0,0,0,0,1491,1,0,0,0,0,1493,1,0,0,0,0,1495,1,0,0,0,0,1497,1,0,0,0,0,1499,1,0,0,0,0,1501,1,0,0,0,0,1503,1,0,0,0,0,1505,1,0,0,0,0,1507,1,0,0,0,0,1509,1,0,0,0,0,1511,1,0,0,0,0,1513,1,0,0,0,0,1515,1,0,0,0,0,1517,1,0,0,0,0,1519,1,0,0,0,0,1521,1,0,0,0,0,1523,1,0,0,0,0,1525,1,0,0,0,0,1527,1,0,0,0,0,1529,1,0,0,0,0,1531,1,0,0,0,0,1533,1,0,0,0,0,1535,1,0,0,0,0,1537,1,0,0,0,0,1539,1,0,0,0,0,1541,1,0,0,0,0,1543,1,0,0,0,0,1545,1,0,0,0,0,1547,1,0,0,0,0,1549,1,0,0,0,0,1551,1,0,0,0,0,1553,1,0,0,0,0,1555,1,0,0,0,0,1557,1,0,0,0,0,1559,1,0,0,0,0,1561,1,0,0,0,0,1563,1,0,0,0,0,1565,1,0,0,0,0,1567,1,0,0,0,0,1569,1,0,0,0,0,1571,1,0,0,0,0,1573,1,0,0,0,0,1575,1,0,0,0,0,1577,1,0,0,0,0,1579,1,0,0,0,0,1581,1,0,0,0,0,1583,1,0,0,0,0,1585,1,0,0,0,0,1587,1,0,0,0,0,1589,1,0,0,0,0,1591,1,0,0,0,0,1593,1,0,0,0,0,1595,1,0,0,0,0,1597,1,0,0,0,0,1599,1,0,0,0,0,1601,1,0,0,0,0,1603,1,0,0,0,0,1605,1,0,0,0,0,1607,1,0,0,0,0,1609,1,0,0,0,0,1611,1,0,0,0,0,1613,1,0,0,0,0,1615,1,0,0,0,0,1617,1,0,0,0,0,1619,1,0,0,0,0,1621,1,0,0,0,0,1623,1,0,0,0,0,1625,1,0,0,0,0,1627,1,0,0,0,0,1629,1,0,0,0,0,1631,1,0,0,0,0,1633,1,0,0,0,0,1635,1,0,0,0,0,1637,1,0,0,0,0,1639,1,0,0,0,0,1641,1,0,0,0,0,1643,1,0,0,0,0,1645,1,0,0,0,0,1647,1,0,0,0,0,1649,1,0,0,0,0,1651,1,0,0,0,0,1653,1,0,0,0,0,1655,1,0,0,0,0,1657,1,0,0,0,0,1659,1,0,0,0,0,1661,1,0,0,0,0,1663,1,0,0,0,0,1665,1,0,0,0,0,1667,1,0,0,0,0,1669,1,0,0,0,0,1671,1,0,0,0,0,1673,1,0,0,0,0,1675,1,0,0,0,0,1677,1,0,0,0,0,1679,1,0,0,0,0,1681,1,0,0,0,0,1683,1,0,0,0,0,1685,1,0,0,0,0,1687,1,0,0,0,0,1689,1,0,0,0,0,1691,1,0,0,0,0,1693,1,0,0,0,0,1695,1,0,0,0,0,1697,1,0,0,0,0,1699,1,0,0,0,0,1701,1,0,0,0,0,1703,1,0,0,0,0,1705,1,0,0,0,0,1707,1,0,0,0,0,1709,1,0,0,0,0,1711,1,0,0,0,0,1713,1,0,0,0,0,1715,1,0,0,0,0,1717,1,0,0,0,0,1719,1,0,0,0,0,1721,1,0,0,0,0,1723,1,0,0,0,0,1725,1,0,0,0,0,1727,1,0,0,0,0,1729,1,0,0,0,0,1731,1,0,0,0,0,1733,1,0,0,0,0,1735,1,0,0,0,0,1737,1,0,0,0,0,1739,1,0,0,0,0,1741,1,0,0,0,0,1743,1,0,0,0,0,1745,1,0,0,0,0,1747,1,0,0,0,0,1749,1,0,0,0,0,1751,1,0,0,0,0,1753,1,0,0,0,0,1755,1,0,0,0,0,1757,1,0,0,0,0,1759,1,0,0,0,0,1761,1,0,0,0,0,1763,1,0,0,0,0,1765,1,0,0,0,0,1767,1,0,0,0,0,1769,1,0,0,0,0,1771,1,0,0,0,0,1773,1,0,0,0,0,1775,1,0,0,0,0,1777,1,0,0,0,0,1779,1,0,0,0,0,1781,1,0,0,0,0,1783,1,0,0,0,0,1785,1,0,0,0,0,1787,1,0,0,0,0,1789,1,0,0,0,0,1791,1,0,0,0,0,1793,1,0,0,0,0,1795,1,0,0,0,0,1797,1,0,0,0,0,1799,1,0,0,0,0,1801,1,0,0,0,0,1803,1,0,0,0,0,1805,1,0,0,0,0,1807,1,0,0,0,0,1809,1,0,0,0,0,1811,1,0,0,0,0,1813,1,0,0,0,0,1815,1,0,0,0,0,1817,1,0,0,0,0,1819,1,0,0,0,0,1821,1,0,0,0,0,1823,1,0,0,0,0,1825,1,0,0,0,0,1827,1,0,0,0,0,1829,1,0,0,0,0,1831,1,0,0,0,0,1833,1,0,0,0,0,1835,1,0,0,0,0,1837,1,0,0,0,0,1839,1,0,0,0,0,1841,1,0,0,0,0,1843,1,0,0,0,0,1845,1,0,0,0,0,1847,1,0,0,0,0,1849,1,0,0,0,0,1851,1,0,0,0,0,1853,1,0,0,0,0,1855,1,0,0,0,0,1857,1,0,0,0,0,1859,1,0,0,0,0,1861,1,0,0,0,0,1863,1,0,0,0,0,1865,1,0,0,0,0,1867,1,0,0,0,0,1869,1,0,0,0,0,1871,1,0,0,0,0,1873,1,0,0,0,0,1875,1,0,0,0,0,1877,1,0,0,0,0,1879,1,0,0,0,0,1881,1,0,0,0,0,1883,1,0,0,0,0,1885,1,0,0,0,0,1887,1,0,0,0,0,1889,1,0,0,0,0,1891,1,0,0,0,0,1893,1,0,0,0,0,1895,1,0,0,0,0,1897,1,0,0,0,0,1899,1,0,0,0,0,1901,1,0,0,0,0,1903,1,0,0,0,0,1905,1,0,0,0,0,1907,1,0,0,0,0,1909,1,0,0,0,0,1911,1,0,0,0,0,1913,1,0,0,0,0,1915,1,0,0,0,0,1917,1,0,0,0,0,1919,1,0,0,0,0,1921,1,0,0,0,0,1923,1,0,0,0,0,1925,1,0,0,0,0,1927,1,0,0,0,0,1929,1,0,0,0,0,1931,1,0,0,0,0,1933,1,0,0,0,0,1935,1,0,0,0,0,1937,1,0,0,0,0,1939,1,0,0,0,0,1941,1,0,0,0,0,1943,1,0,0,0,0,1945,1,0,0,0,0,1947,1,0,0,0,0,1949,1,0,0,0,0,1951,1,0,0,0,0,1953,1,0,0,0,0,1955,1,0,0,0,0,1957,1,0,0,0,0,1959,1,0,0,0,0,1961,1,0,0,0,0,1963,1,0,0,0,0,1965,1,0,0,0,0,1967,1,0,0,0,0,1969,1,0,0,0,0,1971,1,0,0,0,0,1973,1,0,0,0,0,1975,1,0,0,0,0,1977,1,0,0,0,0,1979,1,0,0,0,0,1981,1,0,0,0,0,1983,1,0,0,0,0,1985,1,0,0,0,0,1987,1,0,0,0,0,1989,1,0,0,0,0,1991,1,0,0,0,0,1993,1,0,0,0,0,1995,1,0,0,0,0,1997,1,0,0,0,0,1999,1,0,0,0,0,2001,1,0,0,0,0,2003,1,0,0,0,0,2005,1,0,0,0,0,2007,1,0,0,0,0,2009,1,0,0,0,0,2011,1,0,0,0,0,2013,1,0,0,0,0,2015,1,0,0,0,0,2017,1,0,0,0,0,2019,1,0,0,0,0,2021,1,0,0,0,0,2023,1,0,0,0,0,2025,1,0,0,0,0,2027,1,0,0,0,0,2029,1,0,0,0,0,2031,1,0,0,0,0,2033,1,0,0,0,0,2035,1,0,0,0,0,2037,1,0,0,0,0,2039,1,0,0,0,0,2041,1,0,0,0,0,2043,1,0,0,0,0,2045,1,0,0,0,0,2047,1,0,0,0,0,2049,1,0,0,0,0,2051,1,0,0,0,0,2053,1,0,0,0,0,2055,1,0,0,0,0,2057,1,0,0,0,0,2059,1,0,0,0,0,2061,1,0,0,0,0,2063,1,0,0,0,0,2065,1,0,0,0,0,2067,1,0,0,0,0,2069,1,0,0,0,0,2071,1,0,0,0,0,2073,1,0,0,0,0,2075,1,0,0,0,0,2077,1,0,0,0,0,2079,1,0,0,0,0,2081,1,0,0,0,0,2083,1,0,0,0,0,2085,1,0,0,0,0,2087,1,0,0,0,0,2089,1,0,0,0,0,2091,1,0,0,0,0,2093,1,0,0,0,0,2095,1,0,0,0,0,2097,1,0,0,0,0,2099,1,0,0,0,0,2101,1,0,0,0,0,2103,1,0,0,0,0,2105,1,0,0,0,0,2107,1,0,0,0,0,2109,1,0,0,0,0,2111,1,0,0,0,0,2113,1,0,0,0,0,2115,1,0,0,0,0,2117,1,0,0,0,0,2119,1,0,0,0,0,2121,1,0,0,0,0,2123,1,0,0,0,0,2125,1,0,0,0,0,2127,1,0,0,0,0,2129,1,0,0,0,0,2131,1,0,0,0,0,2133,1,0,0,0,0,2135,1,0,0,0,0,2137,1,0,0,0,0,2139,1,0,0,0,0,2141,1,0,0,0,0,2143,1,0,0,0,0,2145,1,0,0,0,0,2147,1,0,0,0,0,2149,1,0,0,0,0,2151,1,0,0,0,0,2153,1,0,0,0,0,2155,1,0,0,0,0,2157,1,0,0,0,0,2159,1,0,0,0,0,2161,1,0,0,0,0,2163,1,0,0,0,0,2165,1,0,0,0,0,2167,1,0,0,0,0,2169,1,0,0,0,0,2171,1,0,0,0,0,2173,1,0,0,0,0,2175,1,0,0,0,0,2177,1,0,0,0,0,2179,1,0,0,0,0,2181,1,0,0,0,0,2183,1,0,0,0,0,2185,1,0,0,0,0,2187,1,0,0,0,0,2189,1,0,0,0,0,2191,1,0,0,0,0,2193,1,0,0,0,0,2195,1,0,0,0,0,2197,1,0,0,0,0,2199,1,0,0,0,0,2201,1,0,0,0,0,2203,1,0,0,0,0,2205,1,0,0,0,0,2207,1,0,0,0,0,2209,1,0,0,0,0,2211,1,0,0,0,0,2213,1,0,0,0,0,2215,1,0,0,0,0,2217,1,0,0,0,0,2219,1,0,0,0,0,2221,1,0,0,0,0,2223,1,0,0,0,0,2225,1,0,0,0,0,2227,1,0,0,0,0,2229,1,0,0,0,0,2231,1,0,0,0,0,2233,1,0,0,0,0,2235,1,0,0,0,0,2237,1,0,0,0,0,2239,1,0,0,0,0,2241,1,0,0,0,0,2243,1,0,0,0,0,2245,1,0,0,0,0,2247,1,0,0,0,0,2249,1,0,0,0,0,2251,1,0,0,0,0,2253,1,0,0,0,0,2255,1,0,0,0,0,2257,1,0,0,0,0,2259,1,0,0,0,0,2261,1,0,0,0,0,2263,1,0,0,0,0,2265,1,0,0,0,0,2267,1,0,0,0,0,2269,1,0,0,0,0,2271,1,0,0,0,0,2273,1,0,0,0,0,2275,1,0,0,0,0,2277,1,0,0,0,0,2279,1,0,0,0,0,2281,1,0,0,0,0,2283,1,0,0,0,0,2285,1,0,0,0,0,2287,1,0,0,0,0,2291,1,0,0,0,0,2293,1,0,0,0,0,2295,1,0,0,0,0,2297,1,0,0,0,0,2299,1,0,0,0,0,2301,1,0,0,0,0,2303,1,0,0,0,0,2305,1,0,0,0,0,2307,1,0,0,0,0,2309,1,0,0,0,0,2311,1,0,0,0,0,2313,1,0,0,0,0,2315,1,0,0,0,0,2317,1,0,0,0,0,2319,1,0,0,0,0,2321,1,0,0,0,0,2343,1,0,0,0,1,2346,1,0,0,0,3,2352,1,0,0,0,5,2366,1,0,0,0,7,2415,1,0,0,0,9,2419,1,0,0,0,11,2423,1,0,0,0,13,2427,1,0,0,0,15,2433,1,0,0,0,17,2440,1,0,0,0,19,2448,1,0,0,0,21,2452,1,0,0,0,23,2458,1,0,0,0,25,2461,1,0,0,0,27,2465,1,0,0,0,29,2475,1,0,0,0,31,2482,1,0,0,0,33,2490,1,0,0,0,35,2495,1,0,0,0,37,2503,1,0,0,0,39,2506,1,0,0,0,41,2511,1,0,0,0,43,2519,1,0,0,0,45,2524,1,0,0,0,47,2529,1,0,0,0,49,2536,1,0,0,0,51,2546,1,0,0,0,53,2552,1,0,0,0,55,2560,1,0,0,0,57,2567,1,0,0,0,59,2577,1,0,0,0,61,2588,1,0,0,0,63,2597,1,0,0,0,65,2605,1,0,0,0,67,2612,1,0,0,0,69,2618,1,0,0,0,71,2626,1,0,0,0,73,2639,1,0,0,0,75,2652,1,0,0,0,77,2659,1,0,0,0,79,2668,1,0,0,0,81,2678,1,0,0,0,83,2686,1,0,0,0,85,2694,1,0,0,0,87,2702,1,0,0,0,89,2709,1,0,0,0,91,2714,1,0,0,0,93,2723,1,0,0,0,95,2737,1,0,0,0,97,2749,1,0,0,0,99,2758,1,0,0,0,101,2770,1,0,0,0,103,2775,1,0,0,0,105,2780,1,0,0,0,107,2785,1,0,0,0,109,2792,1,0,0,0,111,2798,1,0,0,0,113,2807,1,0,0,0,115,2816,1,0,0,0,117,2824,1,0,0,0,119,2831,1,0,0,0,121,2838,1,0,0,0,123,2843,1,0,0,0,125,2851,1,0,0,0,127,2857,1,0,0,0,129,2863,1,0,0,0,131,2867,1,0,0,0,133,2873,1,0,0,0,135,2881,1,0,0,0,137,2886,1,0,0,0,139,2895,1,0,0,0,141,2905,1,0,0,0,143,2909,1,0,0,0,145,2915,1,0,0,0,147,2921,1,0,0,0,149,2928,1,0,0,0,151,2942,1,0,0,0,153,2952,1,0,0,0,155,2955,1,0,0,0,157,2962,1,0,0,0,159,2970,1,0,0,0,161,2973,1,0,0,0,163,2979,1,0,0,0,165,2986,1,0,0,0,167,2992,1,0,0,0,169,2998,1,0,0,0,171,3005,1,0,0,0,173,3014,1,0,0,0,175,3019,1,0,0,0,177,3022,1,0,0,0,179,3030,1,0,0,0,181,3035,1,0,0,0,183,3039,1,0,0,0,185,3044,1,0,0,0,187,3049,1,0,0,0,189,3057,1,0,0,0,191,3065,1,0,0,0,193,3071,1,0,0,0,195,3076,1,0,0,0,197,3081,1,0,0,0,199,3087,1,0,0,0,201,3094,1,0,0,0,203,3100,1,0,0,0,205,3105,1,0,0,0,207,3110,1,0,0,0,209,3117,1,0,0,0,211,3122,1,0,0,0,213,3135,1,0,0,0,215,3147,1,0,0,0,217,3177,1,0,0,0,219,3183,1,0,0,0,221,3192,1,0,0,0,223,3201,1,0,0,0,225,3210,1,0,0,0,227,3218,1,0,0,0,229,3222,1,0,0,0,231,3241,1,0,0,0,233,3246,1,0,0,0,235,3253,1,0,0,0,237,3256,1,0,0,0,239,3265,1,0,0,0,241,3272,1,0,0,0,243,3281,1,0,0,0,245,3292,1,0,0,0,247,3295,1,0,0,0,249,3301,1,0,0,0,251,3305,1,0,0,0,253,3311,1,0,0,0,255,3319,1,0,0,0,257,3324,1,0,0,0,259,3334,1,0,0,0,261,3342,1,0,0,0,263,3352,1,0,0,0,265,3358,1,0,0,0,267,3364,1,0,0,0,269,3369,1,0,0,0,271,3375,1,0,0,0,273,3386,1,0,0,0,275,3393,1,0,0,0,277,3401,1,0,0,0,279,3408,1,0,0,0,281,3415,1,0,0,0,283,3423,1,0,0,0,285,3431,1,0,0,0,287,3440,1,0,0,0,289,3449,1,0,0,0,291,3456,1,0,0,0,293,3463,1,0,0,0,295,3470,1,0,0,0,297,3476,1,0,0,0,299,3482,1,0,0,0,301,3489,1,0,0,0,303,3497,1,0,0,0,305,3504,1,0,0,0,307,3508,1,0,0,0,309,3518,1,0,0,0,311,3523,1,0,0,0,313,3530,1,0,0,0,315,3535,1,0,0,0,317,3554,1,0,0,0,319,3562,1,0,0,0,321,3566,1,0,0,0,323,3579,1,0,0,0,325,3588,1,0,0,0,327,3599,1,0,0,0,329,3614,1,0,0,0,331,3634,1,0,0,0,333,3651,1,0,0,0,335,3655,1,0,0,0,337,3663,1,0,0,0,339,3672,1,0,0,0,341,3682,1,0,0,0,343,3696,1,0,0,0,345,3702,1,0,0,0,347,3713,1,0,0,0,349,3718,1,0,0,0,351,3721,1,0,0,0,353,3730,1,0,0,0,355,3738,1,0,0,0,357,3743,1,0,0,0,359,3748,1,0,0,0,361,3754,1,0,0,0,363,3761,1,0,0,0,365,3768,1,0,0,0,367,3777,1,0,0,0,369,3784,1,0,0,0,371,3790,1,0,0,0,373,3794,1,0,0,0,375,3800,1,0,0,0,377,3807,1,0,0,0,379,3812,1,0,0,0,381,3818,1,0,0,0,383,3824,1,0,0,0,385,3829,1,0,0,0,387,3835,1,0,0,0,389,3839,1,0,0,0,391,3848,1,0,0,0,393,3856,1,0,0,0,395,3865,1,0,0,0,397,3875,1,0,0,0,399,3885,1,0,0,0,401,3889,1,0,0,0,403,3894,1,0,0,0,405,3899,1,0,0,0,407,3904,1,0,0,0,409,3909,1,0,0,0,411,3914,1,0,0,0,413,3922,1,0,0,0,415,3929,1,0,0,0,417,3934,1,0,0,0,419,3941,1,0,0,0,421,3951,1,0,0,0,423,3957,1,0,0,0,425,3964,1,0,0,0,427,3971,1,0,0,0,429,3979,1,0,0,0,431,3983,1,0,0,0,433,3991,1,0,0,0,435,3996,1,0,0,0,437,4001,1,0,0,0,439,4011,1,0,0,0,441,4020,1,0,0,0,443,4025,1,0,0,0,445,4030,1,0,0,0,447,4038,1,0,0,0,449,4047,1,0,0,0,451,4056,1,0,0,0,453,4063,1,0,0,0,455,4073,1,0,0,0,457,4082,1,0,0,0,459,4087,1,0,0,0,461,4098,1,0,0,0,463,4103,1,0,0,0,465,4112,1,0,0,0,467,4121,1,0,0,0,469,4126,1,0,0,0,471,4137,1,0,0,0,473,4146,1,0,0,0,475,4151,1,0,0,0,477,4159,1,0,0,0,479,4166,1,0,0,0,481,4177,1,0,0,0,483,4186,1,0,0,0,485,4197,1,0,0,0,487,4208,1,0,0,0,489,4220,1,0,0,0,491,4232,1,0,0,0,493,4246,1,0,0,0,495,4265,1,0,0,0,497,4284,1,0,0,0,499,4301,1,0,0,0,501,4317,1,0,0,0,503,4328,1,0,0,0,505,4342,1,0,0,0,507,4360,1,0,0,0,509,4378,1,0,0,0,511,4392,1,0,0,0,513,4411,1,0,0,0,515,4422,1,0,0,0,517,4435,1,0,0,0,519,4447,1,0,0,0,521,4457,1,0,0,0,523,4469,1,0,0,0,525,4480,1,0,0,0,527,4497,1,0,0,0,529,4517,1,0,0,0,531,4529,1,0,0,0,533,4544,1,0,0,0,535,4558,1,0,0,0,537,4570,1,0,0,0,539,4581,1,0,0,0,541,4593,1,0,0,0,543,4606,1,0,0,0,545,4624,1,0,0,0,547,4654,1,0,0,0,549,4666,1,0,0,0,551,4675,1,0,0,0,553,4693,1,0,0,0,555,4711,1,0,0,0,557,4722,1,0,0,0,559,4732,1,0,0,0,561,4745,1,0,0,0,563,4756,1,0,0,0,565,4767,1,0,0,0,567,4774,1,0,0,0,569,4785,1,0,0,0,571,4790,1,0,0,0,573,4794,1,0,0,0,575,4802,1,0,0,0,577,4809,1,0,0,0,579,4817,1,0,0,0,581,4823,1,0,0,0,583,4833,1,0,0,0,585,4844,1,0,0,0,587,4856,1,0,0,0,589,4869,1,0,0,0,591,4873,1,0,0,0,593,4884,1,0,0,0,595,4889,1,0,0,0,597,4893,1,0,0,0,599,4897,1,0,0,0,601,4903,1,0,0,0,603,4913,1,0,0,0,605,4926,1,0,0,0,607,4931,1,0,0,0,609,4942,1,0,0,0,611,4946,1,0,0,0,613,4953,1,0,0,0,615,4964,1,0,0,0,617,4976,1,0,0,0,619,4980,1,0,0,0,621,4988,1,0,0,0,623,4997,1,0,0,0,625,5006,1,0,0,0,627,5019,1,0,0,0,629,5032,1,0,0,0,631,5050,1,0,0,0,633,5060,1,0,0,0,635,5068,1,0,0,0,637,5076,1,0,0,0,639,5085,1,0,0,0,641,5094,1,0,0,0,643,5102,1,0,0,0,645,5117,1,0,0,0,647,5121,1,0,0,0,649,5130,1,0,0,0,651,5137,1,0,0,0,653,5147,1,0,0,0,655,5155,1,0,0,0,657,5160,1,0,0,0,659,5169,1,0,0,0,661,5178,1,0,0,0,663,5192,1,0,0,0,665,5200,1,0,0,0,667,5207,1,0,0,0,669,5213,1,0,0,0,671,5223,1,0,0,0,673,5233,1,0,0,0,675,5237,1,0,0,0,677,5240,1,0,0,0,679,5248,1,0,0,0,681,5259,1,0,0,0,683,5275,1,0,0,0,685,5290,1,0,0,0,687,5305,1,0,0,0,689,5311,1,0,0,0,691,5318,1,0,0,0,693,5322,1,0,0,0,695,5328,1,0,0,0,697,5333,1,0,0,0,699,5341,1,0,0,0,701,5347,1,0,0,0,703,5353,1,0,0,0,705,5362,1,0,0,0,707,5368,1,0,0,0,709,5376,1,0,0,0,711,5384,1,0,0,0,713,5393,1,0,0,0,715,5407,1,0,0,0,717,5414,1,0,0,0,719,5427,1,0,0,0,721,5434,1,0,0,0,723,5440,1,0,0,0,725,5451,1,0,0,0,727,5460,1,0,0,0,729,5465,1,0,0,0,731,5473,1,0,0,0,733,5487,1,0,0,0,735,5499,1,0,0,0,737,5507,1,0,0,0,739,5514,1,0,0,0,741,5522,1,0,0,0,743,5533,1,0,0,0,745,5544,1,0,0,0,747,5556,1,0,0,0,749,5567,1,0,0,0,751,5575,1,0,0,0,753,5586,1,0,0,0,755,5597,1,0,0,0,757,5616,1,0,0,0,759,5634,1,0,0,0,761,5650,1,0,0,0,763,5659,1,0,0,0,765,5667,1,0,0,0,767,5680,1,0,0,0,769,5685,1,0,0,0,771,5689,1,0,0,0,773,5695,1,0,0,0,775,5707,1,0,0,0,777,5712,1,0,0,0,779,5721,1,0,0,0,781,5732,1,0,0,0,783,5745,1,0,0,0,785,5753,1,0,0,0,787,5769,1,0,0,0,789,5782,1,0,0,0,791,5792,1,0,0,0,793,5800,1,0,0,0,795,5808,1,0,0,0,797,5813,1,0,0,0,799,5816,1,0,0,0,801,5825,1,0,0,0,803,5835,1,0,0,0,805,5843,1,0,0,0,807,5850,1,0,0,0,809,5860,1,0,0,0,811,5871,1,0,0,0,813,5889,1,0,0,0,815,5893,1,0,0,0,817,5898,1,0,0,0,819,5905,1,0,0,0,821,5913,1,0,0,0,823,5919,1,0,0,0,825,5926,1,0,0,0,827,5933,1,0,0,0,829,5938,1,0,0,0,831,5944,1,0,0,0,833,5951,1,0,0,0,835,5957,1,0,0,0,837,5966,1,0,0,0,839,5976,1,0,0,0,841,5983,1,0,0,0,843,5990,1,0,0,0,845,5999,1,0,0,0,847,6011,1,0,0,0,849,6033,1,0,0,0,851,6038,1,0,0,0,853,6045,1,0,0,0,855,6052,1,0,0,0,857,6068,1,0,0,0,859,6075,1,0,0,0,861,6081,1,0,0,0,863,6087,1,0,0,0,865,6093,1,0,0,0,867,6103,1,0,0,0,869,6111,1,0,0,0,871,6117,1,0,0,0,873,6122,1,0,0,0,875,6131,1,0,0,0,877,6139,1,0,0,0,879,6146,1,0,0,0,881,6153,1,0,0,0,883,6171,1,0,0,0,885,6179,1,0,0,0,887,6184,1,0,0,0,889,6189,1,0,0,0,891,6197,1,0,0,0,893,6202,1,0,0,0,895,6208,1,0,0,0,897,6219,1,0,0,0,899,6237,1,0,0,0,901,6244,1,0,0,0,903,6254,1,0,0,0,905,6262,1,0,0,0,907,6275,1,0,0,0,909,6283,1,0,0,0,911,6297,1,0,0,0,913,6305,1,0,0,0,915,6314,1,0,0,0,917,6322,1,0,0,0,919,6332,1,0,0,0,921,6340,1,0,0,0,923,6343,1,0,0,0,925,6353,1,0,0,0,927,6357,1,0,0,0,929,6367,1,0,0,0,931,6374,1,0,0,0,933,6379,1,0,0,0,935,6394,1,0,0,0,937,6403,1,0,0,0,939,6408,1,0,0,0,941,6415,1,0,0,0,943,6420,1,0,0,0,945,6426,1,0,0,0,947,6431,1,0,0,0,949,6437,1,0,0,0,951,6445,1,0,0,0,953,6450,1,0,0,0,955,6457,1,0,0,0,957,6478,1,0,0,0,959,6499,1,0,0,0,961,6512,1,0,0,0,963,6536,1,0,0,0,965,6548,1,0,0,0,967,6564,1,0,0,0,969,6579,1,0,0,0,971,6595,1,0,0,0,973,6607,1,0,0,0,975,6626,1,0,0,0,977,6637,1,0,0,0,979,6651,1,0,0,0,981,6669,1,0,0,0,983,6685,1,0,0,0,985,6703,1,0,0,0,987,6718,1,0,0,0,989,6737,1,0,0,0,991,6752,1,0,0,0,993,6771,1,0,0,0,995,6783,1,0,0,0,997,6808,1,0,0,0,999,6829,1,0,0,0,1001,6838,1,0,0,0,1003,6847,1,0,0,0,1005,6868,1,0,0,0,1007,6889,1,0,0,0,1009,6896,1,0,0,0,1011,6903,1,0,0,0,1013,6909,1,0,0,0,1015,6922,1,0,0,0,1017,6926,1,0,0,0,1019,6934,1,0,0,0,1021,6943,1,0,0,0,1023,6948,1,0,0,0,1025,6955,1,0,0,0,1027,6961,1,0,0,0,1029,6967,1,0,0,0,1031,6979,1,0,0,0,1033,6984,1,0,0,0,1035,6990,1,0,0,0,1037,6996,1,0,0,0,1039,7002,1,0,0,0,1041,7007,1,0,0,0,1043,7010,1,0,0,0,1045,7018,1,0,0,0,1047,7025,1,0,0,0,1049,7033,1,0,0,0,1051,7044,1,0,0,0,1053,7055,1,0,0,0,1055,7062,1,0,0,0,1057,7072,1,0,0,0,1059,7077,1,0,0,0,1061,7082,1,0,0,0,1063,7090,1,0,0,0,1065,7097,1,0,0,0,1067,7100,1,0,0,0,1069,7103,1,0,0,0,1071,7116,1,0,0,0,1073,7120,1,0,0,0,1075,7127,1,0,0,0,1077,7132,1,0,0,0,1079,7137,1,0,0,0,1081,7153,1,0,0,0,1083,7161,1,0,0,0,1085,7167,1,0,0,0,1087,7177,1,0,0,0,1089,7182,1,0,0,0,1091,7198,1,0,0,0,1093,7221,1,0,0,0,1095,7228,1,0,0,0,1097,7236,1,0,0,0,1099,7249,1,0,0,0,1101,7260,1,0,0,0,1103,7269,1,0,0,0,1105,7288,1,0,0,0,1107,7294,1,0,0,0,1109,7301,1,0,0,0,1111,7312,1,0,0,0,1113,7320,1,0,0,0,1115,7325,1,0,0,0,1117,7334,1,0,0,0,1119,7344,1,0,0,0,1121,7352,1,0,0,0,1123,7361,1,0,0,0,1125,7366,1,0,0,0,1127,7378,1,0,0,0,1129,7386,1,0,0,0,1131,7395,1,0,0,0,1133,7401,1,0,0,0,1135,7407,1,0,0,0,1137,7413,1,0,0,0,1139,7421,1,0,0,0,1141,7429,1,0,0,0,1143,7439,1,0,0,0,1145,7456,1,0,0,0,1147,7466,1,0,0,0,1149,7472,1,0,0,0,1151,7487,1,0,0,0,1153,7501,1,0,0,0,1155,7510,1,0,0,0,1157,7517,1,0,0,0,1159,7528,1,0,0,0,1161,7535,1,0,0,0,1163,7551,1,0,0,0,1165,7570,1,0,0,0,1167,7590,1,0,0,0,1169,7613,1,0,0,0,1171,7634,1,0,0,0,1173,7658,1,0,0,0,1175,7686,1,0,0,0,1177,7698,1,0,0,0,1179,7704,1,0,0,0,1181,7712,1,0,0,0,1183,7719,1,0,0,0,1185,7737,1,0,0,0,1187,7747,1,0,0,0,1189,7755,1,0,0,0,1191,7761,1,0,0,0,1193,7766,1,0,0,0,1195,7775,1,0,0,0,1197,7782,1,0,0,0,1199,7789,1,0,0,0,1201,7793,1,0,0,0,1203,7798,1,0,0,0,1205,7809,1,0,0,0,1207,7815,1,0,0,0,1209,7825,1,0,0,0,1211,7834,1,0,0,0,1213,7843,1,0,0,0,1215,7852,1,0,0,0,1217,7859,1,0,0,0,1219,7867,1,0,0,0,1221,7873,1,0,0,0,1223,7880,1,0,0,0,1225,7887,1,0,0,0,1227,7894,1,0,0,0,1229,7900,1,0,0,0,1231,7905,1,0,0,0,1233,7914,1,0,0,0,1235,7921,1,0,0,0,1237,7926,1,0,0,0,1239,7933,1,0,0,0,1241,7940,1,0,0,0,1243,7947,1,0,0,0,1245,7963,1,0,0,0,1247,7982,1,0,0,0,1249,7999,1,0,0,0,1251,8017,1,0,0,0,1253,8027,1,0,0,0,1255,8040,1,0,0,0,1257,8051,1,0,0,0,1259,8057,1,0,0,0,1261,8064,1,0,0,0,1263,8082,1,0,0,0,1265,8099,1,0,0,0,1267,8118,1,0,0,0,1269,8125,1,0,0,0,1271,8130,1,0,0,0,1273,8138,1,0,0,0,1275,8145,1,0,0,0,1277,8152,1,0,0,0,1279,8168,1,0,0,0,1281,8176,1,0,0,0,1283,8189,1,0,0,0,1285,8203,1,0,0,0,1287,8211,1,0,0,0,1289,8217,1,0,0,0,1291,8226,1,0,0,0,1293,8237,1,0,0,0,1295,8248,1,0,0,0,1297,8259,1,0,0,0,1299,8269,1,0,0,0,1301,8279,1,0,0,0,1303,8284,1,0,0,0,1305,8296,1,0,0,0,1307,8308,1,0,0,0,1309,8322,1,0,0,0,1311,8331,1,0,0,0,1313,8340,1,0,0,0,1315,8350,1,0,0,0,1317,8360,1,0,0,0,1319,8369,1,0,0,0,1321,8386,1,0,0,0,1323,8396,1,0,0,0,1325,8404,1,0,0,0,1327,8410,1,0,0,0,1329,8418,1,0,0,0,1331,8423,1,0,0,0,1333,8431,1,0,0,0,1335,8446,1,0,0,0,1337,8457,1,0,0,0,1339,8463,1,0,0,0,1341,8473,1,0,0,0,1343,8478,1,0,0,0,1345,8486,1,0,0,0,1347,8494,1,0,0,0,1349,8499,1,0,0,0,1351,8508,1,0,0,0,1353,8515,1,0,0,0,1355,8523,1,0,0,0,1357,8528,1,0,0,0,1359,8536,1,0,0,0,1361,8541,1,0,0,0,1363,8544,1,0,0,0,1365,8548,1,0,0,0,1367,8552,1,0,0,0,1369,8556,1,0,0,0,1371,8560,1,0,0,0,1373,8564,1,0,0,0,1375,8568,1,0,0,0,1377,8577,1,0,0,0,1379,8585,1,0,0,0,1381,8591,1,0,0,0,1383,8595,1,0,0,0,1385,8600,1,0,0,0,1387,8607,1,0,0,0,1389,8612,1,0,0,0,1391,8619,1,0,0,0,1393,8631,1,0,0,0,1395,8637,1,0,0,0,1397,8664,1,0,0,0,1399,8683,1,0,0,0,1401,8695,1,0,0,0,1403,8723,1,0,0,0,1405,8736,1,0,0,0,1407,8749,1,0,0,0,1409,8773,1,0,0,0,1411,8785,1,0,0,0,1413,8802,1,0,0,0,1415,8823,1,0,0,0,1417,8831,1,0,0,0,1419,8836,1,0,0,0,1421,8851,1,0,0,0,1423,8867,1,0,0,0,1425,8881,1,0,0,0,1427,8903,1,0,0,0,1429,8916,1,0,0,0,1431,8929,1,0,0,0,1433,8950,1,0,0,0,1435,8974,1,0,0,0,1437,8998,1,0,0,0,1439,9021,1,0,0,0,1441,9028,1,0,0,0,1443,9035,1,0,0,0,1445,9051,1,0,0,0,1447,9075,1,0,0,0,1449,9102,1,0,0,0,1451,9113,1,0,0,0,1453,9121,1,0,0,0,1455,9128,1,0,0,0,1457,9148,1,0,0,0,1459,9172,1,0,0,0,1461,9193,1,0,0,0,1463,9213,1,0,0,0,1465,9224,1,0,0,0,1467,9232,1,0,0,0,1469,9235,1,0,0,0,1471,9261,1,0,0,0,1473,9290,1,0,0,0,1475,9302,1,0,0,0,1477,9315,1,0,0,0,1479,9324,1,0,0,0,1481,9330,1,0,0,0,1483,9353,1,0,0,0,1485,9360,1,0,0,0,1487,9383,1,0,0,0,1489,9403,1,0,0,0,1491,9420,1,0,0,0,1493,9429,1,0,0,0,1495,9435,1,0,0,0,1497,9440,1,0,0,0,1499,9447,1,0,0,0,1501,9454,1,0,0,0,1503,9461,1,0,0,0,1505,9468,1,0,0,0,1507,9474,1,0,0,0,1509,9480,1,0,0,0,1511,9486,1,0,0,0,1513,9492,1,0,0,0,1515,9497,1,0,0,0,1517,9505,1,0,0,0,1519,9511,1,0,0,0,1521,9519,1,0,0,0,1523,9526,1,0,0,0,1525,9530,1,0,0,0,1527,9538,1,0,0,0,1529,9544,1,0,0,0,1531,9551,1,0,0,0,1533,9555,1,0,0,0,1535,9563,1,0,0,0,1537,9569,1,0,0,0,1539,9575,1,0,0,0,1541,9582,1,0,0,0,1543,9589,1,0,0,0,1545,9596,1,0,0,0,1547,9603,1,0,0,0,1549,9609,1,0,0,0,1551,9618,1,0,0,0,1553,9623,1,0,0,0,1555,9628,1,0,0,0,1557,9635,1,0,0,0,1559,9640,1,0,0,0,1561,9645,1,0,0,0,1563,9651,1,0,0,0,1565,9659,1,0,0,0,1567,9665,1,0,0,0,1569,9670,1,0,0,0,1571,9678,1,0,0,0,1573,9686,1,0,0,0,1575,9694,1,0,0,0,1577,9704,1,0,0,0,1579,9708,1,0,0,0,1581,9718,1,0,0,0,1583,9725,1,0,0,0,1585,9732,1,0,0,0,1587,9743,1,0,0,0,1589,9750,1,0,0,0,1591,9754,1,0,0,0,1593,9765,1,0,0,0,1595,9784,1,0,0,0,1597,9791,1,0,0,0,1599,9802,1,0,0,0,1601,9812,1,0,0,0,1603,9824,1,0,0,0,1605,9837,1,0,0,0,1607,9856,1,0,0,0,1609,9871,1,0,0,0,1611,9880,1,0,0,0,1613,9891,1,0,0,0,1615,9907,1,0,0,0,1617,9918,1,0,0,0,1619,9931,1,0,0,0,1621,9937,1,0,0,0,1623,9945,1,0,0,0,1625,9949,1,0,0,0,1627,9954,1,0,0,0,1629,9962,1,0,0,0,1631,9970,1,0,0,0,1633,9982,1,0,0,0,1635,9994,1,0,0,0,1637,9999,1,0,0,0,1639,10008,1,0,0,0,1641,10013,1,0,0,0,1643,10020,1,0,0,0,1645,10026,1,0,0,0,1647,10032,1,0,0,0,1649,10051,1,0,0,0,1651,10069,1,0,0,0,1653,10088,1,0,0,0,1655,10104,1,0,0,0,1657,10122,1,0,0,0,1659,10127,1,0,0,0,1661,10133,1,0,0,0,1663,10143,1,0,0,0,1665,10147,1,0,0,0,1667,10157,1,0,0,0,1669,10168,1,0,0,0,1671,10175,1,0,0,0,1673,10188,1,0,0,0,1675,10193,1,0,0,0,1677,10201,1,0,0,0,1679,10210,1,0,0,0,1681,10227,1,0,0,0,1683,10235,1,0,0,0,1685,10247,1,0,0,0,1687,10260,1,0,0,0,1689,10270,1,0,0,0,1691,10279,1,0,0,0,1693,10286,1,0,0,0,1695,10296,1,0,0,0,1697,10310,1,0,0,0,1699,10315,1,0,0,0,1701,10326,1,0,0,0,1703,10330,1,0,0,0,1705,10334,1,0,0,0,1707,10340,1,0,0,0,1709,10367,1,0,0,0,1711,10393,1,0,0,0,1713,10414,1,0,0,0,1715,10428,1,0,0,0,1717,10436,1,0,0,0,1719,10445,1,0,0,0,1721,10457,1,0,0,0,1723,10465,1,0,0,0,1725,10476,1,0,0,0,1727,10486,1,0,0,0,1729,10496,1,0,0,0,1731,10503,1,0,0,0,1733,10511,1,0,0,0,1735,10523,1,0,0,0,1737,10535,1,0,0,0,1739,10545,1,0,0,0,1741,10554,1,0,0,0,1743,10558,1,0,0,0,1745,10565,1,0,0,0,1747,10573,1,0,0,0,1749,10582,1,0,0,0,1751,10599,1,0,0,0,1753,10608,1,0,0,0,1755,10615,1,0,0,0,1757,10619,1,0,0,0,1759,10630,1,0,0,0,1761,10643,1,0,0,0,1763,10656,1,0,0,0,1765,10662,1,0,0,0,1767,10674,1,0,0,0,1769,10680,1,0,0,0,1771,10687,1,0,0,0,1773,10698,1,0,0,0,1775,10710,1,0,0,0,1777,10720,1,0,0,0,1779,10734,1,0,0,0,1781,10751,1,0,0,0,1783,10767,1,0,0,0,1785,10794,1,0,0,0,1787,10820,1,0,0,0,1789,10837,1,0,0,0,1791,10853,1,0,0,0,1793,10863,1,0,0,0,1795,10876,1,0,0,0,1797,10889,1,0,0,0,1799,10901,1,0,0,0,1801,10912,1,0,0,0,1803,10921,1,0,0,0,1805,10929,1,0,0,0,1807,10938,1,0,0,0,1809,10950,1,0,0,0,1811,10964,1,0,0,0,1813,10968,1,0,0,0,1815,10975,1,0,0,0,1817,10986,1,0,0,0,1819,10997,1,0,0,0,1821,11007,1,0,0,0,1823,11017,1,0,0,0,1825,11023,1,0,0,0,1827,11037,1,0,0,0,1829,11048,1,0,0,0,1831,11057,1,0,0,0,1833,11065,1,0,0,0,1835,11072,1,0,0,0,1837,11081,1,0,0,0,1839,11094,1,0,0,0,1841,11102,1,0,0,0,1843,11117,1,0,0,0,1845,11132,1,0,0,0,1847,11140,1,0,0,0,1849,11153,1,0,0,0,1851,11168,1,0,0,0,1853,11174,1,0,0,0,1855,11180,1,0,0,0,1857,11187,1,0,0,0,1859,11200,1,0,0,0,1861,11212,1,0,0,0,1863,11231,1,0,0,0,1865,11249,1,0,0,0,1867,11252,1,0,0,0,1869,11262,1,0,0,0,1871,11269,1,0,0,0,1873,11273,1,0,0,0,1875,11279,1,0,0,0,1877,11284,1,0,0,0,1879,11290,1,0,0,0,1881,11295,1,0,0,0,1883,11301,1,0,0,0,1885,11310,1,0,0,0,1887,11319,1,0,0,0,1889,11328,1,0,0,0,1891,11344,1,0,0,0,1893,11356,1,0,0,0,1895,11368,1,0,0,0,1897,11377,1,0,0,0,1899,11391,1,0,0,0,1901,11403,1,0,0,0,1903,11414,1,0,0,0,1905,11424,1,0,0,0,1907,11428,1,0,0,0,1909,11442,1,0,0,0,1911,11455,1,0,0,0,1913,11465,1,0,0,0,1915,11480,1,0,0,0,1917,11494,1,0,0,0,1919,11508,1,0,0,0,1921,11521,1,0,0,0,1923,11545,1,0,0,0,1925,11568,1,0,0,0,1927,11587,1,0,0,0,1929,11605,1,0,0,0,1931,11626,1,0,0,0,1933,11646,1,0,0,0,1935,11657,1,0,0,0,1937,11664,1,0,0,0,1939,11678,1,0,0,0,1941,11695,1,0,0,0,1943,11705,1,0,0,0,1945,11709,1,0,0,0,1947,11722,1,0,0,0,1949,11726,1,0,0,0,1951,11735,1,0,0,0,1953,11746,1,0,0,0,1955,11758,1,0,0,0,1957,11761,1,0,0,0,1959,11775,1,0,0,0,1961,11788,1,0,0,0,1963,11795,1,0,0,0,1965,11808,1,0,0,0,1967,11820,1,0,0,0,1969,11836,1,0,0,0,1971,11851,1,0,0,0,1973,11855,1,0,0,0,1975,11861,1,0,0,0,1977,11867,1,0,0,0,1979,11875,1,0,0,0,1981,11880,1,0,0,0,1983,11887,1,0,0,0,1985,11900,1,0,0,0,1987,11913,1,0,0,0,1989,11921,1,0,0,0,1991,11927,1,0,0,0,1993,11937,1,0,0,0,1995,11942,1,0,0,0,1997,11948,1,0,0,0,1999,11960,1,0,0,0,2001,11987,1,0,0,0,2003,12e3,1,0,0,0,2005,12004,1,0,0,0,2007,12009,1,0,0,0,2009,12014,1,0,0,0,2011,12026,1,0,0,0,2013,12031,1,0,0,0,2015,12035,1,0,0,0,2017,12041,1,0,0,0,2019,12049,1,0,0,0,2021,12077,1,0,0,0,2023,12082,1,0,0,0,2025,12087,1,0,0,0,2027,12098,1,0,0,0,2029,12105,1,0,0,0,2031,12117,1,0,0,0,2033,12125,1,0,0,0,2035,12137,1,0,0,0,2037,12147,1,0,0,0,2039,12156,1,0,0,0,2041,12165,1,0,0,0,2043,12175,1,0,0,0,2045,12187,1,0,0,0,2047,12199,1,0,0,0,2049,12210,1,0,0,0,2051,12224,1,0,0,0,2053,12237,1,0,0,0,2055,12249,1,0,0,0,2057,12261,1,0,0,0,2059,12273,1,0,0,0,2061,12285,1,0,0,0,2063,12295,1,0,0,0,2065,12311,1,0,0,0,2067,12331,1,0,0,0,2069,12350,1,0,0,0,2071,12369,1,0,0,0,2073,12399,1,0,0,0,2075,12428,1,0,0,0,2077,12448,1,0,0,0,2079,12467,1,0,0,0,2081,12480,1,0,0,0,2083,12496,1,0,0,0,2085,12512,1,0,0,0,2087,12527,1,0,0,0,2089,12544,1,0,0,0,2091,12560,1,0,0,0,2093,12574,1,0,0,0,2095,12586,1,0,0,0,2097,12597,1,0,0,0,2099,12609,1,0,0,0,2101,12625,1,0,0,0,2103,12640,1,0,0,0,2105,12662,1,0,0,0,2107,12683,1,0,0,0,2109,12700,1,0,0,0,2111,12719,1,0,0,0,2113,12739,1,0,0,0,2115,12752,1,0,0,0,2117,12764,1,0,0,0,2119,12781,1,0,0,0,2121,12797,1,0,0,0,2123,12807,1,0,0,0,2125,12823,1,0,0,0,2127,12838,1,0,0,0,2129,12857,1,0,0,0,2131,12875,1,0,0,0,2133,12883,1,0,0,0,2135,12897,1,0,0,0,2137,12914,1,0,0,0,2139,12925,1,0,0,0,2141,12934,1,0,0,0,2143,12944,1,0,0,0,2145,12949,1,0,0,0,2147,12954,1,0,0,0,2149,12962,1,0,0,0,2151,12978,1,0,0,0,2153,12986,1,0,0,0,2155,12998,1,0,0,0,2157,13002,1,0,0,0,2159,13011,1,0,0,0,2161,13024,1,0,0,0,2163,13038,1,0,0,0,2165,13050,1,0,0,0,2167,13062,1,0,0,0,2169,13070,1,0,0,0,2171,13080,1,0,0,0,2173,13088,1,0,0,0,2175,13099,1,0,0,0,2177,13119,1,0,0,0,2179,13125,1,0,0,0,2181,13136,1,0,0,0,2183,13156,1,0,0,0,2185,13162,1,0,0,0,2187,13177,1,0,0,0,2189,13187,1,0,0,0,2191,13193,1,0,0,0,2193,13198,1,0,0,0,2195,13209,1,0,0,0,2197,13236,1,0,0,0,2199,13244,1,0,0,0,2201,13278,1,0,0,0,2203,13286,1,0,0,0,2205,13297,1,0,0,0,2207,13311,1,0,0,0,2209,13318,1,0,0,0,2211,13327,1,0,0,0,2213,13329,1,0,0,0,2215,13331,1,0,0,0,2217,13334,1,0,0,0,2219,13337,1,0,0,0,2221,13340,1,0,0,0,2223,13343,1,0,0,0,2225,13346,1,0,0,0,2227,13349,1,0,0,0,2229,13352,1,0,0,0,2231,13355,1,0,0,0,2233,13358,1,0,0,0,2235,13360,1,0,0,0,2237,13362,1,0,0,0,2239,13364,1,0,0,0,2241,13366,1,0,0,0,2243,13368,1,0,0,0,2245,13372,1,0,0,0,2247,13376,1,0,0,0,2249,13378,1,0,0,0,2251,13380,1,0,0,0,2253,13382,1,0,0,0,2255,13384,1,0,0,0,2257,13386,1,0,0,0,2259,13388,1,0,0,0,2261,13390,1,0,0,0,2263,13392,1,0,0,0,2265,13394,1,0,0,0,2267,13396,1,0,0,0,2269,13398,1,0,0,0,2271,13400,1,0,0,0,2273,13402,1,0,0,0,2275,13404,1,0,0,0,2277,13406,1,0,0,0,2279,13408,1,0,0,0,2281,13410,1,0,0,0,2283,13412,1,0,0,0,2285,13414,1,0,0,0,2287,13416,1,0,0,0,2289,13421,1,0,0,0,2291,13423,1,0,0,0,2293,13428,1,0,0,0,2295,13434,1,0,0,0,2297,13440,1,0,0,0,2299,13443,1,0,0,0,2301,13466,1,0,0,0,2303,13509,1,0,0,0,2305,13511,1,0,0,0,2307,13514,1,0,0,0,2309,13516,1,0,0,0,2311,13519,1,0,0,0,2313,13522,1,0,0,0,2315,13524,1,0,0,0,2317,13526,1,0,0,0,2319,13529,1,0,0,0,2321,13538,1,0,0,0,2323,13589,1,0,0,0,2325,13591,1,0,0,0,2327,13603,1,0,0,0,2329,13617,1,0,0,0,2331,13630,1,0,0,0,2333,13643,1,0,0,0,2335,13654,1,0,0,0,2337,13656,1,0,0,0,2339,13658,1,0,0,0,2341,13697,1,0,0,0,2343,13699,1,0,0,0,2345,2347,7,0,0,0,2346,2345,1,0,0,0,2347,2348,1,0,0,0,2348,2346,1,0,0,0,2348,2349,1,0,0,0,2349,2350,1,0,0,0,2350,2351,6,0,0,0,2351,2,1,0,0,0,2352,2353,5,47,0,0,2353,2354,5,42,0,0,2354,2355,5,33,0,0,2355,2357,1,0,0,0,2356,2358,9,0,0,0,2357,2356,1,0,0,0,2358,2359,1,0,0,0,2359,2360,1,0,0,0,2359,2357,1,0,0,0,2360,2361,1,0,0,0,2361,2362,5,42,0,0,2362,2363,5,47,0,0,2363,2364,1,0,0,0,2364,2365,6,1,1,0,2365,4,1,0,0,0,2366,2367,5,47,0,0,2367,2368,5,42,0,0,2368,2372,1,0,0,0,2369,2371,9,0,0,0,2370,2369,1,0,0,0,2371,2374,1,0,0,0,2372,2373,1,0,0,0,2372,2370,1,0,0,0,2373,2375,1,0,0,0,2374,2372,1,0,0,0,2375,2376,5,42,0,0,2376,2377,5,47,0,0,2377,2378,1,0,0,0,2378,2379,6,2,1,0,2379,6,1,0,0,0,2380,2381,5,45,0,0,2381,2382,5,45,0,0,2382,2386,1,0,0,0,2383,2385,7,1,0,0,2384,2383,1,0,0,0,2385,2388,1,0,0,0,2386,2384,1,0,0,0,2386,2387,1,0,0,0,2387,2391,1,0,0,0,2388,2386,1,0,0,0,2389,2391,5,35,0,0,2390,2380,1,0,0,0,2390,2389,1,0,0,0,2391,2395,1,0,0,0,2392,2394,8,2,0,0,2393,2392,1,0,0,0,2394,2397,1,0,0,0,2395,2393,1,0,0,0,2395,2396,1,0,0,0,2396,2403,1,0,0,0,2397,2395,1,0,0,0,2398,2400,5,13,0,0,2399,2398,1,0,0,0,2399,2400,1,0,0,0,2400,2401,1,0,0,0,2401,2404,5,10,0,0,2402,2404,5,0,0,1,2403,2399,1,0,0,0,2403,2402,1,0,0,0,2404,2416,1,0,0,0,2405,2406,5,45,0,0,2406,2407,5,45,0,0,2407,2413,1,0,0,0,2408,2410,5,13,0,0,2409,2408,1,0,0,0,2409,2410,1,0,0,0,2410,2411,1,0,0,0,2411,2414,5,10,0,0,2412,2414,5,0,0,1,2413,2409,1,0,0,0,2413,2412,1,0,0,0,2414,2416,1,0,0,0,2415,2390,1,0,0,0,2415,2405,1,0,0,0,2416,2417,1,0,0,0,2417,2418,6,3,1,0,2418,8,1,0,0,0,2419,2420,7,3,0,0,2420,2421,7,4,0,0,2421,2422,7,4,0,0,2422,10,1,0,0,0,2423,2424,7,3,0,0,2424,2425,7,5,0,0,2425,2426,7,5,0,0,2426,12,1,0,0,0,2427,2428,7,3,0,0,2428,2429,7,5,0,0,2429,2430,7,6,0,0,2430,2431,7,7,0,0,2431,2432,7,8,0,0,2432,14,1,0,0,0,2433,2434,7,3,0,0,2434,2435,7,5,0,0,2435,2436,7,9,0,0,2436,2437,7,3,0,0,2437,2438,7,10,0,0,2438,2439,7,11,0,0,2439,16,1,0,0,0,2440,2441,7,3,0,0,2441,2442,7,12,0,0,2442,2443,7,3,0,0,2443,2444,7,5,0,0,2444,2445,7,10,0,0,2445,2446,7,13,0,0,2446,2447,7,7,0,0,2447,18,1,0,0,0,2448,2449,7,3,0,0,2449,2450,7,12,0,0,2450,2451,7,4,0,0,2451,20,1,0,0,0,2452,2453,7,3,0,0,2453,2454,7,8,0,0,2454,2455,7,8,0,0,2455,2456,7,3,0,0,2456,2457,7,10,0,0,2457,22,1,0,0,0,2458,2459,7,3,0,0,2459,2460,7,11,0,0,2460,24,1,0,0,0,2461,2462,7,3,0,0,2462,2463,7,11,0,0,2463,2464,7,14,0,0,2464,26,1,0,0,0,2465,2466,7,3,0,0,2466,2467,7,6,0,0,2467,2468,7,6,0,0,2468,2469,7,8,0,0,2469,2470,7,15,0,0,2470,2471,7,16,0,0,2471,2472,7,17,0,0,2472,2473,7,6,0,0,2473,2474,7,7,0,0,2474,28,1,0,0,0,2475,2476,7,16,0,0,2476,2477,7,7,0,0,2477,2478,7,18,0,0,2478,2479,7,19,0,0,2479,2480,7,8,0,0,2480,2481,7,7,0,0,2481,30,1,0,0,0,2482,2483,7,16,0,0,2483,2484,7,7,0,0,2484,2485,7,6,0,0,2485,2486,7,9,0,0,2486,2487,7,7,0,0,2487,2488,7,7,0,0,2488,2489,7,12,0,0,2489,32,1,0,0,0,2490,2491,7,16,0,0,2491,2492,7,19,0,0,2492,2493,7,6,0,0,2493,2494,7,20,0,0,2494,34,1,0,0,0,2495,2496,7,16,0,0,2496,2497,7,17,0,0,2497,2498,7,14,0,0,2498,2499,7,21,0,0,2499,2500,7,7,0,0,2500,2501,7,6,0,0,2501,2502,7,11,0,0,2502,36,1,0,0,0,2503,2504,7,16,0,0,2504,2505,7,10,0,0,2505,38,1,0,0,0,2506,2507,7,14,0,0,2507,2508,7,3,0,0,2508,2509,7,5,0,0,2509,2510,7,5,0,0,2510,40,1,0,0,0,2511,2512,7,14,0,0,2512,2513,7,3,0,0,2513,2514,7,11,0,0,2514,2515,7,14,0,0,2515,2516,7,3,0,0,2516,2517,7,4,0,0,2517,2518,7,7,0,0,2518,42,1,0,0,0,2519,2520,7,14,0,0,2520,2521,7,3,0,0,2521,2522,7,11,0,0,2522,2523,7,7,0,0,2523,44,1,0,0,0,2524,2525,7,14,0,0,2525,2526,7,3,0,0,2526,2527,7,11,0,0,2527,2528,7,6,0,0,2528,46,1,0,0,0,2529,2530,7,14,0,0,2530,2531,7,20,0,0,2531,2532,7,3,0,0,2532,2533,7,12,0,0,2533,2534,7,22,0,0,2534,2535,7,7,0,0,2535,48,1,0,0,0,2536,2537,7,14,0,0,2537,2538,7,20,0,0,2538,2539,7,3,0,0,2539,2540,7,8,0,0,2540,2541,7,3,0,0,2541,2542,7,14,0,0,2542,2543,7,6,0,0,2543,2544,7,7,0,0,2544,2545,7,8,0,0,2545,50,1,0,0,0,2546,2547,7,14,0,0,2547,2548,7,20,0,0,2548,2549,7,7,0,0,2549,2550,7,14,0,0,2550,2551,7,21,0,0,2551,52,1,0,0,0,2552,2553,7,14,0,0,2553,2554,7,19,0,0,2554,2555,7,5,0,0,2555,2556,7,5,0,0,2556,2557,7,3,0,0,2557,2558,7,6,0,0,2558,2559,7,7,0,0,2559,54,1,0,0,0,2560,2561,7,14,0,0,2561,2562,7,19,0,0,2562,2563,7,5,0,0,2563,2564,7,17,0,0,2564,2565,7,23,0,0,2565,2566,7,12,0,0,2566,56,1,0,0,0,2567,2568,7,14,0,0,2568,2569,7,19,0,0,2569,2570,7,12,0,0,2570,2571,7,4,0,0,2571,2572,7,15,0,0,2572,2573,7,6,0,0,2573,2574,7,15,0,0,2574,2575,7,19,0,0,2575,2576,7,12,0,0,2576,58,1,0,0,0,2577,2578,7,14,0,0,2578,2579,7,19,0,0,2579,2580,7,12,0,0,2580,2581,7,11,0,0,2581,2582,7,6,0,0,2582,2583,7,8,0,0,2583,2584,7,3,0,0,2584,2585,7,15,0,0,2585,2586,7,12,0,0,2586,2587,7,6,0,0,2587,60,1,0,0,0,2588,2589,7,14,0,0,2589,2590,7,19,0,0,2590,2591,7,12,0,0,2591,2592,7,6,0,0,2592,2593,7,15,0,0,2593,2594,7,12,0,0,2594,2595,7,17,0,0,2595,2596,7,7,0,0,2596,62,1,0,0,0,2597,2598,7,14,0,0,2598,2599,7,19,0,0,2599,2600,7,12,0,0,2600,2601,7,24,0,0,2601,2602,7,7,0,0,2602,2603,7,8,0,0,2603,2604,7,6,0,0,2604,64,1,0,0,0,2605,2606,7,14,0,0,2606,2607,7,8,0,0,2607,2608,7,7,0,0,2608,2609,7,3,0,0,2609,2610,7,6,0,0,2610,2611,7,7,0,0,2611,66,1,0,0,0,2612,2613,7,14,0,0,2613,2614,7,8,0,0,2614,2615,7,19,0,0,2615,2616,7,11,0,0,2616,2617,7,11,0,0,2617,68,1,0,0,0,2618,2619,7,14,0,0,2619,2620,7,17,0,0,2620,2621,7,8,0,0,2621,2622,7,8,0,0,2622,2623,7,7,0,0,2623,2624,7,12,0,0,2624,2625,7,6,0,0,2625,70,1,0,0,0,2626,2627,7,14,0,0,2627,2628,7,17,0,0,2628,2629,7,8,0,0,2629,2630,7,8,0,0,2630,2631,7,7,0,0,2631,2632,7,12,0,0,2632,2633,7,6,0,0,2633,2634,5,95,0,0,2634,2635,7,8,0,0,2635,2636,7,19,0,0,2636,2637,7,5,0,0,2637,2638,7,7,0,0,2638,72,1,0,0,0,2639,2640,7,14,0,0,2640,2641,7,17,0,0,2641,2642,7,8,0,0,2642,2643,7,8,0,0,2643,2644,7,7,0,0,2644,2645,7,12,0,0,2645,2646,7,6,0,0,2646,2647,5,95,0,0,2647,2648,7,17,0,0,2648,2649,7,11,0,0,2649,2650,7,7,0,0,2650,2651,7,8,0,0,2651,74,1,0,0,0,2652,2653,7,14,0,0,2653,2654,7,17,0,0,2654,2655,7,8,0,0,2655,2656,7,11,0,0,2656,2657,7,19,0,0,2657,2658,7,8,0,0,2658,76,1,0,0,0,2659,2660,7,4,0,0,2660,2661,7,3,0,0,2661,2662,7,6,0,0,2662,2663,7,3,0,0,2663,2664,7,16,0,0,2664,2665,7,3,0,0,2665,2666,7,11,0,0,2666,2667,7,7,0,0,2667,78,1,0,0,0,2668,2669,7,4,0,0,2669,2670,7,3,0,0,2670,2671,7,6,0,0,2671,2672,7,3,0,0,2672,2673,7,16,0,0,2673,2674,7,3,0,0,2674,2675,7,11,0,0,2675,2676,7,7,0,0,2676,2677,7,11,0,0,2677,80,1,0,0,0,2678,2679,7,4,0,0,2679,2680,7,7,0,0,2680,2681,7,14,0,0,2681,2682,7,5,0,0,2682,2683,7,3,0,0,2683,2684,7,8,0,0,2684,2685,7,7,0,0,2685,82,1,0,0,0,2686,2687,7,4,0,0,2687,2688,7,7,0,0,2688,2689,7,18,0,0,2689,2690,7,3,0,0,2690,2691,7,17,0,0,2691,2692,7,5,0,0,2692,2693,7,6,0,0,2693,84,1,0,0,0,2694,2695,7,4,0,0,2695,2696,7,7,0,0,2696,2697,7,5,0,0,2697,2698,7,3,0,0,2698,2699,7,10,0,0,2699,2700,7,7,0,0,2700,2701,7,4,0,0,2701,86,1,0,0,0,2702,2703,7,4,0,0,2703,2704,7,7,0,0,2704,2705,7,5,0,0,2705,2706,7,7,0,0,2706,2707,7,6,0,0,2707,2708,7,7,0,0,2708,88,1,0,0,0,2709,2710,7,4,0,0,2710,2711,7,7,0,0,2711,2712,7,11,0,0,2712,2713,7,14,0,0,2713,90,1,0,0,0,2714,2715,7,4,0,0,2715,2716,7,7,0,0,2716,2717,7,11,0,0,2717,2718,7,14,0,0,2718,2719,7,8,0,0,2719,2720,7,15,0,0,2720,2721,7,16,0,0,2721,2722,7,7,0,0,2722,92,1,0,0,0,2723,2724,7,4,0,0,2724,2725,7,7,0,0,2725,2726,7,6,0,0,2726,2727,7,7,0,0,2727,2728,7,8,0,0,2728,2729,7,23,0,0,2729,2730,7,15,0,0,2730,2731,7,12,0,0,2731,2732,7,15,0,0,2732,2733,7,11,0,0,2733,2734,7,6,0,0,2734,2735,7,15,0,0,2735,2736,7,14,0,0,2736,94,1,0,0,0,2737,2738,7,4,0,0,2738,2739,7,15,0,0,2739,2740,7,3,0,0,2740,2741,7,22,0,0,2741,2742,7,12,0,0,2742,2743,7,19,0,0,2743,2744,7,11,0,0,2744,2745,7,6,0,0,2745,2746,7,15,0,0,2746,2747,7,14,0,0,2747,2748,7,11,0,0,2748,96,1,0,0,0,2749,2750,7,4,0,0,2750,2751,7,15,0,0,2751,2752,7,11,0,0,2752,2753,7,6,0,0,2753,2754,7,15,0,0,2754,2755,7,12,0,0,2755,2756,7,14,0,0,2756,2757,7,6,0,0,2757,98,1,0,0,0,2758,2759,7,4,0,0,2759,2760,7,15,0,0,2760,2761,7,11,0,0,2761,2762,7,6,0,0,2762,2763,7,15,0,0,2763,2764,7,12,0,0,2764,2765,7,14,0,0,2765,2766,7,6,0,0,2766,2767,7,8,0,0,2767,2768,7,19,0,0,2768,2769,7,9,0,0,2769,100,1,0,0,0,2770,2771,7,4,0,0,2771,2772,7,8,0,0,2772,2773,7,19,0,0,2773,2774,7,25,0,0,2774,102,1,0,0,0,2775,2776,7,7,0,0,2776,2777,7,3,0,0,2777,2778,7,14,0,0,2778,2779,7,20,0,0,2779,104,1,0,0,0,2780,2781,7,7,0,0,2781,2782,7,5,0,0,2782,2783,7,11,0,0,2783,2784,7,7,0,0,2784,106,1,0,0,0,2785,2786,7,7,0,0,2786,2787,7,5,0,0,2787,2788,7,11,0,0,2788,2789,7,7,0,0,2789,2790,7,15,0,0,2790,2791,7,18,0,0,2791,108,1,0,0,0,2792,2793,7,7,0,0,2793,2794,7,23,0,0,2794,2795,7,25,0,0,2795,2796,7,6,0,0,2796,2797,7,10,0,0,2797,110,1,0,0,0,2798,2799,7,7,0,0,2799,2800,7,12,0,0,2800,2801,7,14,0,0,2801,2802,7,5,0,0,2802,2803,7,19,0,0,2803,2804,7,11,0,0,2804,2805,7,7,0,0,2805,2806,7,4,0,0,2806,112,1,0,0,0,2807,2808,7,7,0,0,2808,2809,7,12,0,0,2809,2810,7,18,0,0,2810,2811,7,19,0,0,2811,2812,7,8,0,0,2812,2813,7,14,0,0,2813,2814,7,7,0,0,2814,2815,7,4,0,0,2815,114,1,0,0,0,2816,2817,7,7,0,0,2817,2818,7,11,0,0,2818,2819,7,14,0,0,2819,2820,7,3,0,0,2820,2821,7,25,0,0,2821,2822,7,7,0,0,2822,2823,7,4,0,0,2823,116,1,0,0,0,2824,2825,7,7,0,0,2825,2826,7,26,0,0,2826,2827,7,14,0,0,2827,2828,7,7,0,0,2828,2829,7,25,0,0,2829,2830,7,6,0,0,2830,118,1,0,0,0,2831,2832,7,7,0,0,2832,2833,7,26,0,0,2833,2834,7,15,0,0,2834,2835,7,11,0,0,2835,2836,7,6,0,0,2836,2837,7,11,0,0,2837,120,1,0,0,0,2838,2839,7,7,0,0,2839,2840,7,26,0,0,2840,2841,7,15,0,0,2841,2842,7,6,0,0,2842,122,1,0,0,0,2843,2844,7,7,0,0,2844,2845,7,26,0,0,2845,2846,7,25,0,0,2846,2847,7,5,0,0,2847,2848,7,3,0,0,2848,2849,7,15,0,0,2849,2850,7,12,0,0,2850,124,1,0,0,0,2851,2852,7,18,0,0,2852,2853,7,3,0,0,2853,2854,7,5,0,0,2854,2855,7,11,0,0,2855,2856,7,7,0,0,2856,126,1,0,0,0,2857,2858,7,18,0,0,2858,2859,7,7,0,0,2859,2860,7,6,0,0,2860,2861,7,14,0,0,2861,2862,7,20,0,0,2862,128,1,0,0,0,2863,2864,7,18,0,0,2864,2865,7,19,0,0,2865,2866,7,8,0,0,2866,130,1,0,0,0,2867,2868,7,18,0,0,2868,2869,7,19,0,0,2869,2870,7,8,0,0,2870,2871,7,14,0,0,2871,2872,7,7,0,0,2872,132,1,0,0,0,2873,2874,7,18,0,0,2874,2875,7,19,0,0,2875,2876,7,8,0,0,2876,2877,7,7,0,0,2877,2878,7,15,0,0,2878,2879,7,22,0,0,2879,2880,7,12,0,0,2880,134,1,0,0,0,2881,2882,7,18,0,0,2882,2883,7,8,0,0,2883,2884,7,19,0,0,2884,2885,7,23,0,0,2885,136,1,0,0,0,2886,2887,7,18,0,0,2887,2888,7,17,0,0,2888,2889,7,5,0,0,2889,2890,7,5,0,0,2890,2891,7,6,0,0,2891,2892,7,7,0,0,2892,2893,7,26,0,0,2893,2894,7,6,0,0,2894,138,1,0,0,0,2895,2896,7,22,0,0,2896,2897,7,7,0,0,2897,2898,7,12,0,0,2898,2899,7,7,0,0,2899,2900,7,8,0,0,2900,2901,7,3,0,0,2901,2902,7,6,0,0,2902,2903,7,7,0,0,2903,2904,7,4,0,0,2904,140,1,0,0,0,2905,2906,7,22,0,0,2906,2907,7,7,0,0,2907,2908,7,6,0,0,2908,142,1,0,0,0,2909,2910,7,22,0,0,2910,2911,7,8,0,0,2911,2912,7,3,0,0,2912,2913,7,12,0,0,2913,2914,7,6,0,0,2914,144,1,0,0,0,2915,2916,7,22,0,0,2916,2917,7,8,0,0,2917,2918,7,19,0,0,2918,2919,7,17,0,0,2919,2920,7,25,0,0,2920,146,1,0,0,0,2921,2922,7,20,0,0,2922,2923,7,3,0,0,2923,2924,7,24,0,0,2924,2925,7,15,0,0,2925,2926,7,12,0,0,2926,2927,7,22,0,0,2927,148,1,0,0,0,2928,2929,7,20,0,0,2929,2930,7,15,0,0,2930,2931,7,22,0,0,2931,2932,7,20,0,0,2932,2933,5,95,0,0,2933,2934,7,25,0,0,2934,2935,7,8,0,0,2935,2936,7,15,0,0,2936,2937,7,19,0,0,2937,2938,7,8,0,0,2938,2939,7,15,0,0,2939,2940,7,6,0,0,2940,2941,7,10,0,0,2941,150,1,0,0,0,2942,2943,7,20,0,0,2943,2944,7,15,0,0,2944,2945,7,11,0,0,2945,2946,7,6,0,0,2946,2947,7,19,0,0,2947,2948,7,22,0,0,2948,2949,7,8,0,0,2949,2950,7,3,0,0,2950,2951,7,23,0,0,2951,152,1,0,0,0,2952,2953,7,15,0,0,2953,2954,7,18,0,0,2954,154,1,0,0,0,2955,2956,7,15,0,0,2956,2957,7,22,0,0,2957,2958,7,12,0,0,2958,2959,7,19,0,0,2959,2960,7,8,0,0,2960,2961,7,7,0,0,2961,156,1,0,0,0,2962,2963,7,15,0,0,2963,2964,7,22,0,0,2964,2965,7,12,0,0,2965,2966,7,19,0,0,2966,2967,7,8,0,0,2967,2968,7,7,0,0,2968,2969,7,4,0,0,2969,158,1,0,0,0,2970,2971,7,15,0,0,2971,2972,7,12,0,0,2972,160,1,0,0,0,2973,2974,7,15,0,0,2974,2975,7,12,0,0,2975,2976,7,4,0,0,2976,2977,7,7,0,0,2977,2978,7,26,0,0,2978,162,1,0,0,0,2979,2980,7,15,0,0,2980,2981,7,12,0,0,2981,2982,7,18,0,0,2982,2983,7,15,0,0,2983,2984,7,5,0,0,2984,2985,7,7,0,0,2985,164,1,0,0,0,2986,2987,7,15,0,0,2987,2988,7,12,0,0,2988,2989,7,12,0,0,2989,2990,7,7,0,0,2990,2991,7,8,0,0,2991,166,1,0,0,0,2992,2993,7,15,0,0,2993,2994,7,12,0,0,2994,2995,7,19,0,0,2995,2996,7,17,0,0,2996,2997,7,6,0,0,2997,168,1,0,0,0,2998,2999,7,15,0,0,2999,3e3,7,12,0,0,3e3,3001,7,11,0,0,3001,3002,7,7,0,0,3002,3003,7,8,0,0,3003,3004,7,6,0,0,3004,170,1,0,0,0,3005,3006,7,15,0,0,3006,3007,7,12,0,0,3007,3008,7,6,0,0,3008,3009,7,7,0,0,3009,3010,7,8,0,0,3010,3011,7,24,0,0,3011,3012,7,3,0,0,3012,3013,7,5,0,0,3013,172,1,0,0,0,3014,3015,7,15,0,0,3015,3016,7,12,0,0,3016,3017,7,6,0,0,3017,3018,7,19,0,0,3018,174,1,0,0,0,3019,3020,7,15,0,0,3020,3021,7,11,0,0,3021,176,1,0,0,0,3022,3023,7,15,0,0,3023,3024,7,6,0,0,3024,3025,7,7,0,0,3025,3026,7,8,0,0,3026,3027,7,3,0,0,3027,3028,7,6,0,0,3028,3029,7,7,0,0,3029,178,1,0,0,0,3030,3031,7,27,0,0,3031,3032,7,19,0,0,3032,3033,7,15,0,0,3033,3034,7,12,0,0,3034,180,1,0,0,0,3035,3036,7,21,0,0,3036,3037,7,7,0,0,3037,3038,7,10,0,0,3038,182,1,0,0,0,3039,3040,7,21,0,0,3040,3041,7,7,0,0,3041,3042,7,10,0,0,3042,3043,7,11,0,0,3043,184,1,0,0,0,3044,3045,7,21,0,0,3045,3046,7,15,0,0,3046,3047,7,5,0,0,3047,3048,7,5,0,0,3048,186,1,0,0,0,3049,3050,7,5,0,0,3050,3051,7,3,0,0,3051,3052,7,6,0,0,3052,3053,7,7,0,0,3053,3054,7,8,0,0,3054,3055,7,3,0,0,3055,3056,7,5,0,0,3056,188,1,0,0,0,3057,3058,7,5,0,0,3058,3059,7,7,0,0,3059,3060,7,3,0,0,3060,3061,7,4,0,0,3061,3062,7,15,0,0,3062,3063,7,12,0,0,3063,3064,7,22,0,0,3064,190,1,0,0,0,3065,3066,7,5,0,0,3066,3067,7,7,0,0,3067,3068,7,3,0,0,3068,3069,7,24,0,0,3069,3070,7,7,0,0,3070,192,1,0,0,0,3071,3072,7,5,0,0,3072,3073,7,7,0,0,3073,3074,7,18,0,0,3074,3075,7,6,0,0,3075,194,1,0,0,0,3076,3077,7,5,0,0,3077,3078,7,15,0,0,3078,3079,7,21,0,0,3079,3080,7,7,0,0,3080,196,1,0,0,0,3081,3082,7,5,0,0,3082,3083,7,15,0,0,3083,3084,7,23,0,0,3084,3085,7,15,0,0,3085,3086,7,6,0,0,3086,198,1,0,0,0,3087,3088,7,5,0,0,3088,3089,7,15,0,0,3089,3090,7,12,0,0,3090,3091,7,7,0,0,3091,3092,7,3,0,0,3092,3093,7,8,0,0,3093,200,1,0,0,0,3094,3095,7,5,0,0,3095,3096,7,15,0,0,3096,3097,7,12,0,0,3097,3098,7,7,0,0,3098,3099,7,11,0,0,3099,202,1,0,0,0,3100,3101,7,5,0,0,3101,3102,7,19,0,0,3102,3103,7,3,0,0,3103,3104,7,4,0,0,3104,204,1,0,0,0,3105,3106,7,5,0,0,3106,3107,7,19,0,0,3107,3108,7,14,0,0,3108,3109,7,21,0,0,3109,206,1,0,0,0,3110,3111,7,5,0,0,3111,3112,7,19,0,0,3112,3113,7,14,0,0,3113,3114,7,21,0,0,3114,3115,7,7,0,0,3115,3116,7,4,0,0,3116,208,1,0,0,0,3117,3118,7,5,0,0,3118,3119,7,19,0,0,3119,3120,7,19,0,0,3120,3121,7,25,0,0,3121,210,1,0,0,0,3122,3123,7,5,0,0,3123,3124,7,19,0,0,3124,3125,7,9,0,0,3125,3126,5,95,0,0,3126,3127,7,25,0,0,3127,3128,7,8,0,0,3128,3129,7,15,0,0,3129,3130,7,19,0,0,3130,3131,7,8,0,0,3131,3132,7,15,0,0,3132,3133,7,6,0,0,3133,3134,7,10,0,0,3134,212,1,0,0,0,3135,3136,7,23,0,0,3136,3137,7,3,0,0,3137,3138,7,11,0,0,3138,3139,7,6,0,0,3139,3140,7,7,0,0,3140,3141,7,8,0,0,3141,3142,5,95,0,0,3142,3143,7,16,0,0,3143,3144,7,15,0,0,3144,3145,7,12,0,0,3145,3146,7,4,0,0,3146,214,1,0,0,0,3147,3148,7,23,0,0,3148,3149,7,3,0,0,3149,3150,7,11,0,0,3150,3151,7,6,0,0,3151,3152,7,7,0,0,3152,3153,7,8,0,0,3153,3154,5,95,0,0,3154,3155,7,11,0,0,3155,3156,7,11,0,0,3156,3157,7,5,0,0,3157,3158,5,95,0,0,3158,3159,7,24,0,0,3159,3160,7,7,0,0,3160,3161,7,8,0,0,3161,3162,7,15,0,0,3162,3163,7,18,0,0,3163,3164,7,10,0,0,3164,3165,5,95,0,0,3165,3166,7,11,0,0,3166,3167,7,7,0,0,3167,3168,7,8,0,0,3168,3169,7,24,0,0,3169,3170,7,7,0,0,3170,3171,7,8,0,0,3171,3172,5,95,0,0,3172,3173,7,14,0,0,3173,3174,7,7,0,0,3174,3175,7,8,0,0,3175,3176,7,6,0,0,3176,216,1,0,0,0,3177,3178,7,23,0,0,3178,3179,7,3,0,0,3179,3180,7,6,0,0,3180,3181,7,14,0,0,3181,3182,7,20,0,0,3182,218,1,0,0,0,3183,3184,7,23,0,0,3184,3185,7,3,0,0,3185,3186,7,26,0,0,3186,3187,7,24,0,0,3187,3188,7,3,0,0,3188,3189,7,5,0,0,3189,3190,7,17,0,0,3190,3191,7,7,0,0,3191,220,1,0,0,0,3192,3193,7,23,0,0,3193,3194,7,15,0,0,3194,3195,7,12,0,0,3195,3196,7,24,0,0,3196,3197,7,3,0,0,3197,3198,7,5,0,0,3198,3199,7,17,0,0,3199,3200,7,7,0,0,3200,222,1,0,0,0,3201,3202,7,23,0,0,3202,3203,7,19,0,0,3203,3204,7,4,0,0,3204,3205,7,15,0,0,3205,3206,7,18,0,0,3206,3207,7,15,0,0,3207,3208,7,7,0,0,3208,3209,7,11,0,0,3209,224,1,0,0,0,3210,3211,7,12,0,0,3211,3212,7,3,0,0,3212,3213,7,6,0,0,3213,3214,7,17,0,0,3214,3215,7,8,0,0,3215,3216,7,3,0,0,3216,3217,7,5,0,0,3217,226,1,0,0,0,3218,3219,7,12,0,0,3219,3220,7,19,0,0,3220,3221,7,6,0,0,3221,228,1,0,0,0,3222,3223,7,12,0,0,3223,3224,7,19,0,0,3224,3225,5,95,0,0,3225,3226,7,9,0,0,3226,3227,7,8,0,0,3227,3228,7,15,0,0,3228,3229,7,6,0,0,3229,3230,7,7,0,0,3230,3231,5,95,0,0,3231,3232,7,6,0,0,3232,3233,7,19,0,0,3233,3234,5,95,0,0,3234,3235,7,16,0,0,3235,3236,7,15,0,0,3236,3237,7,12,0,0,3237,3238,7,5,0,0,3238,3239,7,19,0,0,3239,3240,7,22,0,0,3240,230,1,0,0,0,3241,3242,7,12,0,0,3242,3243,7,17,0,0,3243,3244,7,5,0,0,3244,3245,7,5,0,0,3245,232,1,0,0,0,3246,3247,7,12,0,0,3247,3248,7,17,0,0,3248,3249,7,23,0,0,3249,3250,7,16,0,0,3250,3251,7,7,0,0,3251,3252,7,8,0,0,3252,234,1,0,0,0,3253,3254,7,19,0,0,3254,3255,7,12,0,0,3255,236,1,0,0,0,3256,3257,7,19,0,0,3257,3258,7,25,0,0,3258,3259,7,6,0,0,3259,3260,7,15,0,0,3260,3261,7,23,0,0,3261,3262,7,15,0,0,3262,3263,7,13,0,0,3263,3264,7,7,0,0,3264,238,1,0,0,0,3265,3266,7,19,0,0,3266,3267,7,25,0,0,3267,3268,7,6,0,0,3268,3269,7,15,0,0,3269,3270,7,19,0,0,3270,3271,7,12,0,0,3271,240,1,0,0,0,3272,3273,7,19,0,0,3273,3274,7,25,0,0,3274,3275,7,6,0,0,3275,3276,7,15,0,0,3276,3277,7,19,0,0,3277,3278,7,12,0,0,3278,3279,7,3,0,0,3279,3280,7,5,0,0,3280,242,1,0,0,0,3281,3282,7,19,0,0,3282,3283,7,25,0,0,3283,3284,7,6,0,0,3284,3285,7,15,0,0,3285,3286,7,19,0,0,3286,3287,7,12,0,0,3287,3288,7,3,0,0,3288,3289,7,5,0,0,3289,3290,7,5,0,0,3290,3291,7,10,0,0,3291,244,1,0,0,0,3292,3293,7,19,0,0,3293,3294,7,8,0,0,3294,246,1,0,0,0,3295,3296,7,19,0,0,3296,3297,7,8,0,0,3297,3298,7,4,0,0,3298,3299,7,7,0,0,3299,3300,7,8,0,0,3300,248,1,0,0,0,3301,3302,7,19,0,0,3302,3303,7,17,0,0,3303,3304,7,6,0,0,3304,250,1,0,0,0,3305,3306,7,19,0,0,3306,3307,7,17,0,0,3307,3308,7,6,0,0,3308,3309,7,7,0,0,3309,3310,7,8,0,0,3310,252,1,0,0,0,3311,3312,7,19,0,0,3312,3313,7,17,0,0,3313,3314,7,6,0,0,3314,3315,7,18,0,0,3315,3316,7,15,0,0,3316,3317,7,5,0,0,3317,3318,7,7,0,0,3318,254,1,0,0,0,3319,3320,7,19,0,0,3320,3321,7,24,0,0,3321,3322,7,7,0,0,3322,3323,7,8,0,0,3323,256,1,0,0,0,3324,3325,7,25,0,0,3325,3326,7,3,0,0,3326,3327,7,8,0,0,3327,3328,7,6,0,0,3328,3329,7,15,0,0,3329,3330,7,6,0,0,3330,3331,7,15,0,0,3331,3332,7,19,0,0,3332,3333,7,12,0,0,3333,258,1,0,0,0,3334,3335,7,25,0,0,3335,3336,7,8,0,0,3336,3337,7,15,0,0,3337,3338,7,23,0,0,3338,3339,7,3,0,0,3339,3340,7,8,0,0,3340,3341,7,10,0,0,3341,260,1,0,0,0,3342,3343,7,25,0,0,3343,3344,7,8,0,0,3344,3345,7,19,0,0,3345,3346,7,14,0,0,3346,3347,7,7,0,0,3347,3348,7,4,0,0,3348,3349,7,17,0,0,3349,3350,7,8,0,0,3350,3351,7,7,0,0,3351,262,1,0,0,0,3352,3353,7,25,0,0,3353,3354,7,17,0,0,3354,3355,7,8,0,0,3355,3356,7,22,0,0,3356,3357,7,7,0,0,3357,264,1,0,0,0,3358,3359,7,8,0,0,3359,3360,7,3,0,0,3360,3361,7,12,0,0,3361,3362,7,22,0,0,3362,3363,7,7,0,0,3363,266,1,0,0,0,3364,3365,7,8,0,0,3365,3366,7,7,0,0,3366,3367,7,3,0,0,3367,3368,7,4,0,0,3368,268,1,0,0,0,3369,3370,7,8,0,0,3370,3371,7,7,0,0,3371,3372,7,3,0,0,3372,3373,7,4,0,0,3373,3374,7,11,0,0,3374,270,1,0,0,0,3375,3376,7,8,0,0,3376,3377,7,7,0,0,3377,3378,7,18,0,0,3378,3379,7,7,0,0,3379,3380,7,8,0,0,3380,3381,7,7,0,0,3381,3382,7,12,0,0,3382,3383,7,14,0,0,3383,3384,7,7,0,0,3384,3385,7,11,0,0,3385,272,1,0,0,0,3386,3387,7,8,0,0,3387,3388,7,7,0,0,3388,3389,7,22,0,0,3389,3390,7,7,0,0,3390,3391,7,26,0,0,3391,3392,7,25,0,0,3392,274,1,0,0,0,3393,3394,7,8,0,0,3394,3395,7,7,0,0,3395,3396,7,5,0,0,3396,3397,7,7,0,0,3397,3398,7,3,0,0,3398,3399,7,11,0,0,3399,3400,7,7,0,0,3400,276,1,0,0,0,3401,3402,7,8,0,0,3402,3403,7,7,0,0,3403,3404,7,12,0,0,3404,3405,7,3,0,0,3405,3406,7,23,0,0,3406,3407,7,7,0,0,3407,278,1,0,0,0,3408,3409,7,8,0,0,3409,3410,7,7,0,0,3410,3411,7,25,0,0,3411,3412,7,7,0,0,3412,3413,7,3,0,0,3413,3414,7,6,0,0,3414,280,1,0,0,0,3415,3416,7,8,0,0,3416,3417,7,7,0,0,3417,3418,7,25,0,0,3418,3419,7,5,0,0,3419,3420,7,3,0,0,3420,3421,7,14,0,0,3421,3422,7,7,0,0,3422,282,1,0,0,0,3423,3424,7,8,0,0,3424,3425,7,7,0,0,3425,3426,7,28,0,0,3426,3427,7,17,0,0,3427,3428,7,15,0,0,3428,3429,7,8,0,0,3429,3430,7,7,0,0,3430,284,1,0,0,0,3431,3432,7,8,0,0,3432,3433,7,7,0,0,3433,3434,7,11,0,0,3434,3435,7,15,0,0,3435,3436,7,22,0,0,3436,3437,7,12,0,0,3437,3438,7,3,0,0,3438,3439,7,5,0,0,3439,286,1,0,0,0,3440,3441,7,8,0,0,3441,3442,7,7,0,0,3442,3443,7,11,0,0,3443,3444,7,6,0,0,3444,3445,7,8,0,0,3445,3446,7,15,0,0,3446,3447,7,14,0,0,3447,3448,7,6,0,0,3448,288,1,0,0,0,3449,3450,7,8,0,0,3450,3451,7,7,0,0,3451,3452,7,6,0,0,3452,3453,7,3,0,0,3453,3454,7,15,0,0,3454,3455,7,12,0,0,3455,290,1,0,0,0,3456,3457,7,8,0,0,3457,3458,7,7,0,0,3458,3459,7,6,0,0,3459,3460,7,17,0,0,3460,3461,7,8,0,0,3461,3462,7,12,0,0,3462,292,1,0,0,0,3463,3464,7,8,0,0,3464,3465,7,7,0,0,3465,3466,7,24,0,0,3466,3467,7,19,0,0,3467,3468,7,21,0,0,3468,3469,7,7,0,0,3469,294,1,0,0,0,3470,3471,7,8,0,0,3471,3472,7,15,0,0,3472,3473,7,22,0,0,3473,3474,7,20,0,0,3474,3475,7,6,0,0,3475,296,1,0,0,0,3476,3477,7,8,0,0,3477,3478,7,5,0,0,3478,3479,7,15,0,0,3479,3480,7,21,0,0,3480,3481,7,7,0,0,3481,298,1,0,0,0,3482,3483,7,11,0,0,3483,3484,7,14,0,0,3484,3485,7,20,0,0,3485,3486,7,7,0,0,3486,3487,7,23,0,0,3487,3488,7,3,0,0,3488,300,1,0,0,0,3489,3490,7,11,0,0,3490,3491,7,14,0,0,3491,3492,7,20,0,0,3492,3493,7,7,0,0,3493,3494,7,23,0,0,3494,3495,7,3,0,0,3495,3496,7,11,0,0,3496,302,1,0,0,0,3497,3498,7,11,0,0,3498,3499,7,7,0,0,3499,3500,7,5,0,0,3500,3501,7,7,0,0,3501,3502,7,14,0,0,3502,3503,7,6,0,0,3503,304,1,0,0,0,3504,3505,7,11,0,0,3505,3506,7,7,0,0,3506,3507,7,6,0,0,3507,306,1,0,0,0,3508,3509,7,11,0,0,3509,3510,7,7,0,0,3510,3511,7,25,0,0,3511,3512,7,3,0,0,3512,3513,7,8,0,0,3513,3514,7,3,0,0,3514,3515,7,6,0,0,3515,3516,7,19,0,0,3516,3517,7,8,0,0,3517,308,1,0,0,0,3518,3519,7,11,0,0,3519,3520,7,20,0,0,3520,3521,7,19,0,0,3521,3522,7,9,0,0,3522,310,1,0,0,0,3523,3524,7,11,0,0,3524,3525,7,15,0,0,3525,3526,7,22,0,0,3526,3527,7,12,0,0,3527,3528,7,3,0,0,3528,3529,7,5,0,0,3529,312,1,0,0,0,3530,3531,7,11,0,0,3531,3532,7,21,0,0,3532,3533,7,15,0,0,3533,3534,7,25,0,0,3534,314,1,0,0,0,3535,3536,7,11,0,0,3536,3537,7,21,0,0,3537,3538,7,15,0,0,3538,3539,7,25,0,0,3539,3540,5,95,0,0,3540,3541,7,28,0,0,3541,3542,7,17,0,0,3542,3543,7,7,0,0,3543,3544,7,8,0,0,3544,3545,7,10,0,0,3545,3546,5,95,0,0,3546,3547,7,8,0,0,3547,3548,7,7,0,0,3548,3549,7,9,0,0,3549,3550,7,8,0,0,3550,3551,7,15,0,0,3551,3552,7,6,0,0,3552,3553,7,7,0,0,3553,316,1,0,0,0,3554,3555,7,11,0,0,3555,3556,7,25,0,0,3556,3557,7,3,0,0,3557,3558,7,6,0,0,3558,3559,7,15,0,0,3559,3560,7,3,0,0,3560,3561,7,5,0,0,3561,318,1,0,0,0,3562,3563,7,11,0,0,3563,3564,7,28,0,0,3564,3565,7,5,0,0,3565,320,1,0,0,0,3566,3567,7,11,0,0,3567,3568,7,28,0,0,3568,3569,7,5,0,0,3569,3570,7,7,0,0,3570,3571,7,26,0,0,3571,3572,7,14,0,0,3572,3573,7,7,0,0,3573,3574,7,25,0,0,3574,3575,7,6,0,0,3575,3576,7,15,0,0,3576,3577,7,19,0,0,3577,3578,7,12,0,0,3578,322,1,0,0,0,3579,3580,7,11,0,0,3580,3581,7,28,0,0,3581,3582,7,5,0,0,3582,3583,7,11,0,0,3583,3584,7,6,0,0,3584,3585,7,3,0,0,3585,3586,7,6,0,0,3586,3587,7,7,0,0,3587,324,1,0,0,0,3588,3589,7,11,0,0,3589,3590,7,28,0,0,3590,3591,7,5,0,0,3591,3592,7,9,0,0,3592,3593,7,3,0,0,3593,3594,7,8,0,0,3594,3595,7,12,0,0,3595,3596,7,15,0,0,3596,3597,7,12,0,0,3597,3598,7,22,0,0,3598,326,1,0,0,0,3599,3600,7,11,0,0,3600,3601,7,28,0,0,3601,3602,7,5,0,0,3602,3603,5,95,0,0,3603,3604,7,16,0,0,3604,3605,7,15,0,0,3605,3606,7,22,0,0,3606,3607,5,95,0,0,3607,3608,7,8,0,0,3608,3609,7,7,0,0,3609,3610,7,11,0,0,3610,3611,7,17,0,0,3611,3612,7,5,0,0,3612,3613,7,6,0,0,3613,328,1,0,0,0,3614,3615,7,11,0,0,3615,3616,7,28,0,0,3616,3617,7,5,0,0,3617,3618,5,95,0,0,3618,3619,7,14,0,0,3619,3620,7,3,0,0,3620,3621,7,5,0,0,3621,3622,7,14,0,0,3622,3623,5,95,0,0,3623,3624,7,18,0,0,3624,3625,7,19,0,0,3625,3626,7,17,0,0,3626,3627,7,12,0,0,3627,3628,7,4,0,0,3628,3629,5,95,0,0,3629,3630,7,8,0,0,3630,3631,7,19,0,0,3631,3632,7,9,0,0,3632,3633,7,11,0,0,3633,330,1,0,0,0,3634,3635,7,11,0,0,3635,3636,7,28,0,0,3636,3637,7,5,0,0,3637,3638,5,95,0,0,3638,3639,7,11,0,0,3639,3640,7,23,0,0,3640,3641,7,3,0,0,3641,3642,7,5,0,0,3642,3643,7,5,0,0,3643,3644,5,95,0,0,3644,3645,7,8,0,0,3645,3646,7,7,0,0,3646,3647,7,11,0,0,3647,3648,7,17,0,0,3648,3649,7,5,0,0,3649,3650,7,6,0,0,3650,332,1,0,0,0,3651,3652,7,11,0,0,3652,3653,7,11,0,0,3653,3654,7,5,0,0,3654,334,1,0,0,0,3655,3656,7,11,0,0,3656,3657,7,6,0,0,3657,3658,7,3,0,0,3658,3659,7,14,0,0,3659,3660,7,21,0,0,3660,3661,7,7,0,0,3661,3662,7,4,0,0,3662,336,1,0,0,0,3663,3664,7,11,0,0,3664,3665,7,6,0,0,3665,3666,7,3,0,0,3666,3667,7,8,0,0,3667,3668,7,6,0,0,3668,3669,7,15,0,0,3669,3670,7,12,0,0,3670,3671,7,22,0,0,3671,338,1,0,0,0,3672,3673,7,11,0,0,3673,3674,7,6,0,0,3674,3675,7,3,0,0,3675,3676,7,6,0,0,3676,3677,7,7,0,0,3677,3678,7,23,0,0,3678,3679,7,7,0,0,3679,3680,7,12,0,0,3680,3681,7,6,0,0,3681,340,1,0,0,0,3682,3683,7,11,0,0,3683,3684,7,6,0,0,3684,3685,7,8,0,0,3685,3686,7,3,0,0,3686,3687,7,15,0,0,3687,3688,7,22,0,0,3688,3689,7,20,0,0,3689,3690,7,6,0,0,3690,3691,5,95,0,0,3691,3692,7,27,0,0,3692,3693,7,19,0,0,3693,3694,7,15,0,0,3694,3695,7,12,0,0,3695,342,1,0,0,0,3696,3697,7,6,0,0,3697,3698,7,3,0,0,3698,3699,7,16,0,0,3699,3700,7,5,0,0,3700,3701,7,7,0,0,3701,344,1,0,0,0,3702,3703,7,6,0,0,3703,3704,7,7,0,0,3704,3705,7,8,0,0,3705,3706,7,23,0,0,3706,3707,7,15,0,0,3707,3708,7,12,0,0,3708,3709,7,3,0,0,3709,3710,7,6,0,0,3710,3711,7,7,0,0,3711,3712,7,4,0,0,3712,346,1,0,0,0,3713,3714,7,6,0,0,3714,3715,7,20,0,0,3715,3716,7,7,0,0,3716,3717,7,12,0,0,3717,348,1,0,0,0,3718,3719,7,6,0,0,3719,3720,7,19,0,0,3720,350,1,0,0,0,3721,3722,7,6,0,0,3722,3723,7,8,0,0,3723,3724,7,3,0,0,3724,3725,7,15,0,0,3725,3726,7,5,0,0,3726,3727,7,15,0,0,3727,3728,7,12,0,0,3728,3729,7,22,0,0,3729,352,1,0,0,0,3730,3731,7,6,0,0,3731,3732,7,8,0,0,3732,3733,7,15,0,0,3733,3734,7,22,0,0,3734,3735,7,22,0,0,3735,3736,7,7,0,0,3736,3737,7,8,0,0,3737,354,1,0,0,0,3738,3739,7,6,0,0,3739,3740,7,8,0,0,3740,3741,7,17,0,0,3741,3742,7,7,0,0,3742,356,1,0,0,0,3743,3744,7,17,0,0,3744,3745,7,12,0,0,3745,3746,7,4,0,0,3746,3747,7,19,0,0,3747,358,1,0,0,0,3748,3749,7,17,0,0,3749,3750,7,12,0,0,3750,3751,7,15,0,0,3751,3752,7,19,0,0,3752,3753,7,12,0,0,3753,360,1,0,0,0,3754,3755,7,17,0,0,3755,3756,7,12,0,0,3756,3757,7,15,0,0,3757,3758,7,28,0,0,3758,3759,7,17,0,0,3759,3760,7,7,0,0,3760,362,1,0,0,0,3761,3762,7,17,0,0,3762,3763,7,12,0,0,3763,3764,7,5,0,0,3764,3765,7,19,0,0,3765,3766,7,14,0,0,3766,3767,7,21,0,0,3767,364,1,0,0,0,3768,3769,7,17,0,0,3769,3770,7,12,0,0,3770,3771,7,11,0,0,3771,3772,7,15,0,0,3772,3773,7,22,0,0,3773,3774,7,12,0,0,3774,3775,7,7,0,0,3775,3776,7,4,0,0,3776,366,1,0,0,0,3777,3778,7,17,0,0,3778,3779,7,25,0,0,3779,3780,7,4,0,0,3780,3781,7,3,0,0,3781,3782,7,6,0,0,3782,3783,7,7,0,0,3783,368,1,0,0,0,3784,3785,7,17,0,0,3785,3786,7,11,0,0,3786,3787,7,3,0,0,3787,3788,7,22,0,0,3788,3789,7,7,0,0,3789,370,1,0,0,0,3790,3791,7,17,0,0,3791,3792,7,11,0,0,3792,3793,7,7,0,0,3793,372,1,0,0,0,3794,3795,7,17,0,0,3795,3796,7,11,0,0,3796,3797,7,15,0,0,3797,3798,7,12,0,0,3798,3799,7,22,0,0,3799,374,1,0,0,0,3800,3801,7,24,0,0,3801,3802,7,3,0,0,3802,3803,7,5,0,0,3803,3804,7,17,0,0,3804,3805,7,7,0,0,3805,3806,7,11,0,0,3806,376,1,0,0,0,3807,3808,7,9,0,0,3808,3809,7,20,0,0,3809,3810,7,7,0,0,3810,3811,7,12,0,0,3811,378,1,0,0,0,3812,3813,7,9,0,0,3813,3814,7,20,0,0,3814,3815,7,7,0,0,3815,3816,7,8,0,0,3816,3817,7,7,0,0,3817,380,1,0,0,0,3818,3819,7,9,0,0,3819,3820,7,20,0,0,3820,3821,7,15,0,0,3821,3822,7,5,0,0,3822,3823,7,7,0,0,3823,382,1,0,0,0,3824,3825,7,9,0,0,3825,3826,7,15,0,0,3826,3827,7,6,0,0,3827,3828,7,20,0,0,3828,384,1,0,0,0,3829,3830,7,9,0,0,3830,3831,7,8,0,0,3831,3832,7,15,0,0,3832,3833,7,6,0,0,3833,3834,7,7,0,0,3834,386,1,0,0,0,3835,3836,7,26,0,0,3836,3837,7,19,0,0,3837,3838,7,8,0,0,3838,388,1,0,0,0,3839,3840,7,13,0,0,3840,3841,7,7,0,0,3841,3842,7,8,0,0,3842,3843,7,19,0,0,3843,3844,7,18,0,0,3844,3845,7,15,0,0,3845,3846,7,5,0,0,3846,3847,7,5,0,0,3847,390,1,0,0,0,3848,3849,7,6,0,0,3849,3850,7,15,0,0,3850,3851,7,12,0,0,3851,3852,7,10,0,0,3852,3853,7,15,0,0,3853,3854,7,12,0,0,3854,3855,7,6,0,0,3855,392,1,0,0,0,3856,3857,7,11,0,0,3857,3858,7,23,0,0,3858,3859,7,3,0,0,3859,3860,7,5,0,0,3860,3861,7,5,0,0,3861,3862,7,15,0,0,3862,3863,7,12,0,0,3863,3864,7,6,0,0,3864,394,1,0,0,0,3865,3866,7,23,0,0,3866,3867,7,7,0,0,3867,3868,7,4,0,0,3868,3869,7,15,0,0,3869,3870,7,17,0,0,3870,3871,7,23,0,0,3871,3872,7,15,0,0,3872,3873,7,12,0,0,3873,3874,7,6,0,0,3874,396,1,0,0,0,3875,3876,7,23,0,0,3876,3877,7,15,0,0,3877,3878,7,4,0,0,3878,3879,7,4,0,0,3879,3880,7,5,0,0,3880,3881,7,7,0,0,3881,3882,7,15,0,0,3882,3883,7,12,0,0,3883,3884,7,6,0,0,3884,398,1,0,0,0,3885,3886,7,15,0,0,3886,3887,7,12,0,0,3887,3888,7,6,0,0,3888,400,1,0,0,0,3889,3890,7,15,0,0,3890,3891,7,12,0,0,3891,3892,7,6,0,0,3892,3893,5,49,0,0,3893,402,1,0,0,0,3894,3895,7,15,0,0,3895,3896,7,12,0,0,3896,3897,7,6,0,0,3897,3898,5,50,0,0,3898,404,1,0,0,0,3899,3900,7,15,0,0,3900,3901,7,12,0,0,3901,3902,7,6,0,0,3902,3903,5,51,0,0,3903,406,1,0,0,0,3904,3905,7,15,0,0,3905,3906,7,12,0,0,3906,3907,7,6,0,0,3907,3908,5,52,0,0,3908,408,1,0,0,0,3909,3910,7,15,0,0,3910,3911,7,12,0,0,3911,3912,7,6,0,0,3912,3913,5,56,0,0,3913,410,1,0,0,0,3914,3915,7,15,0,0,3915,3916,7,12,0,0,3916,3917,7,6,0,0,3917,3918,7,7,0,0,3918,3919,7,22,0,0,3919,3920,7,7,0,0,3920,3921,7,8,0,0,3921,412,1,0,0,0,3922,3923,7,16,0,0,3923,3924,7,15,0,0,3924,3925,7,22,0,0,3925,3926,7,15,0,0,3926,3927,7,12,0,0,3927,3928,7,6,0,0,3928,414,1,0,0,0,3929,3930,7,8,0,0,3930,3931,7,7,0,0,3931,3932,7,3,0,0,3932,3933,7,5,0,0,3933,416,1,0,0,0,3934,3935,7,4,0,0,3935,3936,7,19,0,0,3936,3937,7,17,0,0,3937,3938,7,16,0,0,3938,3939,7,5,0,0,3939,3940,7,7,0,0,3940,418,1,0,0,0,3941,3942,7,25,0,0,3942,3943,7,8,0,0,3943,3944,7,7,0,0,3944,3945,7,14,0,0,3945,3946,7,15,0,0,3946,3947,7,11,0,0,3947,3948,7,15,0,0,3948,3949,7,19,0,0,3949,3950,7,12,0,0,3950,420,1,0,0,0,3951,3952,7,18,0,0,3952,3953,7,5,0,0,3953,3954,7,19,0,0,3954,3955,7,3,0,0,3955,3956,7,6,0,0,3956,422,1,0,0,0,3957,3958,7,18,0,0,3958,3959,7,5,0,0,3959,3960,7,19,0,0,3960,3961,7,3,0,0,3961,3962,7,6,0,0,3962,3963,5,52,0,0,3963,424,1,0,0,0,3964,3965,7,18,0,0,3965,3966,7,5,0,0,3966,3967,7,19,0,0,3967,3968,7,3,0,0,3968,3969,7,6,0,0,3969,3970,5,56,0,0,3970,426,1,0,0,0,3971,3972,7,4,0,0,3972,3973,7,7,0,0,3973,3974,7,14,0,0,3974,3975,7,15,0,0,3975,3976,7,23,0,0,3976,3977,7,3,0,0,3977,3978,7,5,0,0,3978,428,1,0,0,0,3979,3980,7,4,0,0,3980,3981,7,7,0,0,3981,3982,7,14,0,0,3982,430,1,0,0,0,3983,3984,7,12,0,0,3984,3985,7,17,0,0,3985,3986,7,23,0,0,3986,3987,7,7,0,0,3987,3988,7,8,0,0,3988,3989,7,15,0,0,3989,3990,7,14,0,0,3990,432,1,0,0,0,3991,3992,7,4,0,0,3992,3993,7,3,0,0,3993,3994,7,6,0,0,3994,3995,7,7,0,0,3995,434,1,0,0,0,3996,3997,7,6,0,0,3997,3998,7,15,0,0,3998,3999,7,23,0,0,3999,4e3,7,7,0,0,4e3,436,1,0,0,0,4001,4002,7,6,0,0,4002,4003,7,15,0,0,4003,4004,7,23,0,0,4004,4005,7,7,0,0,4005,4006,7,11,0,0,4006,4007,7,6,0,0,4007,4008,7,3,0,0,4008,4009,7,23,0,0,4009,4010,7,25,0,0,4010,438,1,0,0,0,4011,4012,7,4,0,0,4012,4013,7,3,0,0,4013,4014,7,6,0,0,4014,4015,7,7,0,0,4015,4016,7,6,0,0,4016,4017,7,15,0,0,4017,4018,7,23,0,0,4018,4019,7,7,0,0,4019,440,1,0,0,0,4020,4021,7,10,0,0,4021,4022,7,7,0,0,4022,4023,7,3,0,0,4023,4024,7,8,0,0,4024,442,1,0,0,0,4025,4026,7,14,0,0,4026,4027,7,20,0,0,4027,4028,7,3,0,0,4028,4029,7,8,0,0,4029,444,1,0,0,0,4030,4031,7,24,0,0,4031,4032,7,3,0,0,4032,4033,7,8,0,0,4033,4034,7,14,0,0,4034,4035,7,20,0,0,4035,4036,7,3,0,0,4036,4037,7,8,0,0,4037,446,1,0,0,0,4038,4039,7,12,0,0,4039,4040,7,24,0,0,4040,4041,7,3,0,0,4041,4042,7,8,0,0,4042,4043,7,14,0,0,4043,4044,7,20,0,0,4044,4045,7,3,0,0,4045,4046,7,8,0,0,4046,448,1,0,0,0,4047,4048,7,12,0,0,4048,4049,7,3,0,0,4049,4050,7,6,0,0,4050,4051,7,15,0,0,4051,4052,7,19,0,0,4052,4053,7,12,0,0,4053,4054,7,3,0,0,4054,4055,7,5,0,0,4055,450,1,0,0,0,4056,4057,7,16,0,0,4057,4058,7,15,0,0,4058,4059,7,12,0,0,4059,4060,7,3,0,0,4060,4061,7,8,0,0,4061,4062,7,10,0,0,4062,452,1,0,0,0,4063,4064,7,24,0,0,4064,4065,7,3,0,0,4065,4066,7,8,0,0,4066,4067,7,16,0,0,4067,4068,7,15,0,0,4068,4069,7,12,0,0,4069,4070,7,3,0,0,4070,4071,7,8,0,0,4071,4072,7,10,0,0,4072,454,1,0,0,0,4073,4074,7,6,0,0,4074,4075,7,15,0,0,4075,4076,7,12,0,0,4076,4077,7,10,0,0,4077,4078,7,16,0,0,4078,4079,7,5,0,0,4079,4080,7,19,0,0,4080,4081,7,16,0,0,4081,456,1,0,0,0,4082,4083,7,16,0,0,4083,4084,7,5,0,0,4084,4085,7,19,0,0,4085,4086,7,16,0,0,4086,458,1,0,0,0,4087,4088,7,23,0,0,4088,4089,7,7,0,0,4089,4090,7,4,0,0,4090,4091,7,15,0,0,4091,4092,7,17,0,0,4092,4093,7,23,0,0,4093,4094,7,16,0,0,4094,4095,7,5,0,0,4095,4096,7,19,0,0,4096,4097,7,16,0,0,4097,460,1,0,0,0,4098,4099,7,5,0,0,4099,4100,7,19,0,0,4100,4101,7,12,0,0,4101,4102,7,22,0,0,4102,462,1,0,0,0,4103,4104,7,5,0,0,4104,4105,7,19,0,0,4105,4106,7,12,0,0,4106,4107,7,22,0,0,4107,4108,7,16,0,0,4108,4109,7,5,0,0,4109,4110,7,19,0,0,4110,4111,7,16,0,0,4111,464,1,0,0,0,4112,4113,7,6,0,0,4113,4114,7,15,0,0,4114,4115,7,12,0,0,4115,4116,7,10,0,0,4116,4117,7,6,0,0,4117,4118,7,7,0,0,4118,4119,7,26,0,0,4119,4120,7,6,0,0,4120,466,1,0,0,0,4121,4122,7,6,0,0,4122,4123,7,7,0,0,4123,4124,7,26,0,0,4124,4125,7,6,0,0,4125,468,1,0,0,0,4126,4127,7,23,0,0,4127,4128,7,7,0,0,4128,4129,7,4,0,0,4129,4130,7,15,0,0,4130,4131,7,17,0,0,4131,4132,7,23,0,0,4132,4133,7,6,0,0,4133,4134,7,7,0,0,4134,4135,7,26,0,0,4135,4136,7,6,0,0,4136,470,1,0,0,0,4137,4138,7,5,0,0,4138,4139,7,19,0,0,4139,4140,7,12,0,0,4140,4141,7,22,0,0,4141,4142,7,6,0,0,4142,4143,7,7,0,0,4143,4144,7,26,0,0,4144,4145,7,6,0,0,4145,472,1,0,0,0,4146,4147,7,7,0,0,4147,4148,7,12,0,0,4148,4149,7,17,0,0,4149,4150,7,23,0,0,4150,474,1,0,0,0,4151,4152,7,24,0,0,4152,4153,7,3,0,0,4153,4154,7,8,0,0,4154,4155,7,10,0,0,4155,4156,7,15,0,0,4156,4157,7,12,0,0,4157,4158,7,22,0,0,4158,476,1,0,0,0,4159,4160,7,11,0,0,4160,4161,7,7,0,0,4161,4162,7,8,0,0,4162,4163,7,15,0,0,4163,4164,7,3,0,0,4164,4165,7,5,0,0,4165,478,1,0,0,0,4166,4167,7,10,0,0,4167,4168,7,7,0,0,4168,4169,7,3,0,0,4169,4170,7,8,0,0,4170,4171,5,95,0,0,4171,4172,7,23,0,0,4172,4173,7,19,0,0,4173,4174,7,12,0,0,4174,4175,7,6,0,0,4175,4176,7,20,0,0,4176,480,1,0,0,0,4177,4178,7,4,0,0,4178,4179,7,3,0,0,4179,4180,7,10,0,0,4180,4181,5,95,0,0,4181,4182,7,20,0,0,4182,4183,7,19,0,0,4183,4184,7,17,0,0,4184,4185,7,8,0,0,4185,482,1,0,0,0,4186,4187,7,4,0,0,4187,4188,7,3,0,0,4188,4189,7,10,0,0,4189,4190,5,95,0,0,4190,4191,7,23,0,0,4191,4192,7,15,0,0,4192,4193,7,12,0,0,4193,4194,7,17,0,0,4194,4195,7,6,0,0,4195,4196,7,7,0,0,4196,484,1,0,0,0,4197,4198,7,4,0,0,4198,4199,7,3,0,0,4199,4200,7,10,0,0,4200,4201,5,95,0,0,4201,4202,7,11,0,0,4202,4203,7,7,0,0,4203,4204,7,14,0,0,4204,4205,7,19,0,0,4205,4206,7,12,0,0,4206,4207,7,4,0,0,4207,486,1,0,0,0,4208,4209,7,20,0,0,4209,4210,7,19,0,0,4210,4211,7,17,0,0,4211,4212,7,8,0,0,4212,4213,5,95,0,0,4213,4214,7,23,0,0,4214,4215,7,15,0,0,4215,4216,7,12,0,0,4216,4217,7,17,0,0,4217,4218,7,6,0,0,4218,4219,7,7,0,0,4219,488,1,0,0,0,4220,4221,7,20,0,0,4221,4222,7,19,0,0,4222,4223,7,17,0,0,4223,4224,7,8,0,0,4224,4225,5,95,0,0,4225,4226,7,11,0,0,4226,4227,7,7,0,0,4227,4228,7,14,0,0,4228,4229,7,19,0,0,4229,4230,7,12,0,0,4230,4231,7,4,0,0,4231,490,1,0,0,0,4232,4233,7,23,0,0,4233,4234,7,15,0,0,4234,4235,7,12,0,0,4235,4236,7,17,0,0,4236,4237,7,6,0,0,4237,4238,7,7,0,0,4238,4239,5,95,0,0,4239,4240,7,11,0,0,4240,4241,7,7,0,0,4241,4242,7,14,0,0,4242,4243,7,19,0,0,4243,4244,7,12,0,0,4244,4245,7,4,0,0,4245,492,1,0,0,0,4246,4247,7,11,0,0,4247,4248,7,7,0,0,4248,4249,7,14,0,0,4249,4250,7,19,0,0,4250,4251,7,12,0,0,4251,4252,7,4,0,0,4252,4253,5,95,0,0,4253,4254,7,23,0,0,4254,4255,7,15,0,0,4255,4256,7,14,0,0,4256,4257,7,8,0,0,4257,4258,7,19,0,0,4258,4259,7,11,0,0,4259,4260,7,7,0,0,4260,4261,7,14,0,0,4261,4262,7,19,0,0,4262,4263,7,12,0,0,4263,4264,7,4,0,0,4264,494,1,0,0,0,4265,4266,7,23,0,0,4266,4267,7,15,0,0,4267,4268,7,12,0,0,4268,4269,7,17,0,0,4269,4270,7,6,0,0,4270,4271,7,7,0,0,4271,4272,5,95,0,0,4272,4273,7,23,0,0,4273,4274,7,15,0,0,4274,4275,7,14,0,0,4275,4276,7,8,0,0,4276,4277,7,19,0,0,4277,4278,7,11,0,0,4278,4279,7,7,0,0,4279,4280,7,14,0,0,4280,4281,7,19,0,0,4281,4282,7,12,0,0,4282,4283,7,4,0,0,4283,496,1,0,0,0,4284,4285,7,20,0,0,4285,4286,7,19,0,0,4286,4287,7,17,0,0,4287,4288,7,8,0,0,4288,4289,5,95,0,0,4289,4290,7,23,0,0,4290,4291,7,15,0,0,4291,4292,7,14,0,0,4292,4293,7,8,0,0,4293,4294,7,19,0,0,4294,4295,7,11,0,0,4295,4296,7,7,0,0,4296,4297,7,14,0,0,4297,4298,7,19,0,0,4298,4299,7,12,0,0,4299,4300,7,4,0,0,4300,498,1,0,0,0,4301,4302,7,4,0,0,4302,4303,7,3,0,0,4303,4304,7,10,0,0,4304,4305,5,95,0,0,4305,4306,7,23,0,0,4306,4307,7,15,0,0,4307,4308,7,14,0,0,4308,4309,7,8,0,0,4309,4310,7,19,0,0,4310,4311,7,11,0,0,4311,4312,7,7,0,0,4312,4313,7,14,0,0,4313,4314,7,19,0,0,4314,4315,7,12,0,0,4315,4316,7,4,0,0,4316,500,1,0,0,0,4317,4318,7,27,0,0,4318,4319,7,11,0,0,4319,4320,7,19,0,0,4320,4321,7,12,0,0,4321,4322,5,95,0,0,4322,4323,7,3,0,0,4323,4324,7,8,0,0,4324,4325,7,8,0,0,4325,4326,7,3,0,0,4326,4327,7,10,0,0,4327,502,1,0,0,0,4328,4329,7,27,0,0,4329,4330,7,11,0,0,4330,4331,7,19,0,0,4331,4332,7,12,0,0,4332,4333,5,95,0,0,4333,4334,7,3,0,0,4334,4335,7,8,0,0,4335,4336,7,8,0,0,4336,4337,7,3,0,0,4337,4338,7,10,0,0,4338,4339,7,3,0,0,4339,4340,7,22,0,0,4340,4341,7,22,0,0,4341,504,1,0,0,0,4342,4343,7,27,0,0,4343,4344,7,11,0,0,4344,4345,7,19,0,0,4345,4346,7,12,0,0,4346,4347,5,95,0,0,4347,4348,7,3,0,0,4348,4349,7,8,0,0,4349,4350,7,8,0,0,4350,4351,7,3,0,0,4351,4352,7,10,0,0,4352,4353,5,95,0,0,4353,4354,7,3,0,0,4354,4355,7,25,0,0,4355,4356,7,25,0,0,4356,4357,7,7,0,0,4357,4358,7,12,0,0,4358,4359,7,4,0,0,4359,506,1,0,0,0,4360,4361,7,27,0,0,4361,4362,7,11,0,0,4362,4363,7,19,0,0,4363,4364,7,12,0,0,4364,4365,5,95,0,0,4365,4366,7,3,0,0,4366,4367,7,8,0,0,4367,4368,7,8,0,0,4368,4369,7,3,0,0,4369,4370,7,10,0,0,4370,4371,5,95,0,0,4371,4372,7,15,0,0,4372,4373,7,12,0,0,4373,4374,7,11,0,0,4374,4375,7,7,0,0,4375,4376,7,8,0,0,4376,4377,7,6,0,0,4377,508,1,0,0,0,4378,4379,7,27,0,0,4379,4380,7,11,0,0,4380,4381,7,19,0,0,4381,4382,7,12,0,0,4382,4383,5,95,0,0,4383,4384,7,14,0,0,4384,4385,7,19,0,0,4385,4386,7,12,0,0,4386,4387,7,6,0,0,4387,4388,7,3,0,0,4388,4389,7,15,0,0,4389,4390,7,12,0,0,4390,4391,7,11,0,0,4391,510,1,0,0,0,4392,4393,7,27,0,0,4393,4394,7,11,0,0,4394,4395,7,19,0,0,4395,4396,7,12,0,0,4396,4397,5,95,0,0,4397,4398,7,14,0,0,4398,4399,7,19,0,0,4399,4400,7,12,0,0,4400,4401,7,6,0,0,4401,4402,7,3,0,0,4402,4403,7,15,0,0,4403,4404,7,12,0,0,4404,4405,7,11,0,0,4405,4406,5,95,0,0,4406,4407,7,25,0,0,4407,4408,7,3,0,0,4408,4409,7,6,0,0,4409,4410,7,20,0,0,4410,512,1,0,0,0,4411,4412,7,27,0,0,4412,4413,7,11,0,0,4413,4414,7,19,0,0,4414,4415,7,12,0,0,4415,4416,5,95,0,0,4416,4417,7,4,0,0,4417,4418,7,7,0,0,4418,4419,7,25,0,0,4419,4420,7,6,0,0,4420,4421,7,20,0,0,4421,514,1,0,0,0,4422,4423,7,27,0,0,4423,4424,7,11,0,0,4424,4425,7,19,0,0,4425,4426,7,12,0,0,4426,4427,5,95,0,0,4427,4428,7,7,0,0,4428,4429,7,26,0,0,4429,4430,7,6,0,0,4430,4431,7,8,0,0,4431,4432,7,3,0,0,4432,4433,7,14,0,0,4433,4434,7,6,0,0,4434,516,1,0,0,0,4435,4436,7,27,0,0,4436,4437,7,11,0,0,4437,4438,7,19,0,0,4438,4439,7,12,0,0,4439,4440,5,95,0,0,4440,4441,7,15,0,0,4441,4442,7,12,0,0,4442,4443,7,11,0,0,4443,4444,7,7,0,0,4444,4445,7,8,0,0,4445,4446,7,6,0,0,4446,518,1,0,0,0,4447,4448,7,27,0,0,4448,4449,7,11,0,0,4449,4450,7,19,0,0,4450,4451,7,12,0,0,4451,4452,5,95,0,0,4452,4453,7,21,0,0,4453,4454,7,7,0,0,4454,4455,7,10,0,0,4455,4456,7,11,0,0,4456,520,1,0,0,0,4457,4458,7,27,0,0,4458,4459,7,11,0,0,4459,4460,7,19,0,0,4460,4461,7,12,0,0,4461,4462,5,95,0,0,4462,4463,7,5,0,0,4463,4464,7,7,0,0,4464,4465,7,12,0,0,4465,4466,7,22,0,0,4466,4467,7,6,0,0,4467,4468,7,20,0,0,4468,522,1,0,0,0,4469,4470,7,27,0,0,4470,4471,7,11,0,0,4471,4472,7,19,0,0,4472,4473,7,12,0,0,4473,4474,5,95,0,0,4474,4475,7,23,0,0,4475,4476,7,7,0,0,4476,4477,7,8,0,0,4477,4478,7,22,0,0,4478,4479,7,7,0,0,4479,524,1,0,0,0,4480,4481,7,27,0,0,4481,4482,7,11,0,0,4482,4483,7,19,0,0,4483,4484,7,12,0,0,4484,4485,5,95,0,0,4485,4486,7,23,0,0,4486,4487,7,7,0,0,4487,4488,7,8,0,0,4488,4489,7,22,0,0,4489,4490,7,7,0,0,4490,4491,5,95,0,0,4491,4492,7,25,0,0,4492,4493,7,3,0,0,4493,4494,7,6,0,0,4494,4495,7,14,0,0,4495,4496,7,20,0,0,4496,526,1,0,0,0,4497,4498,7,27,0,0,4498,4499,7,11,0,0,4499,4500,7,19,0,0,4500,4501,7,12,0,0,4501,4502,5,95,0,0,4502,4503,7,23,0,0,4503,4504,7,7,0,0,4504,4505,7,8,0,0,4505,4506,7,22,0,0,4506,4507,7,7,0,0,4507,4508,5,95,0,0,4508,4509,7,25,0,0,4509,4510,7,8,0,0,4510,4511,7,7,0,0,4511,4512,7,11,0,0,4512,4513,7,7,0,0,4513,4514,7,8,0,0,4514,4515,7,24,0,0,4515,4516,7,7,0,0,4516,528,1,0,0,0,4517,4518,7,27,0,0,4518,4519,7,11,0,0,4519,4520,7,19,0,0,4520,4521,7,12,0,0,4521,4522,5,95,0,0,4522,4523,7,19,0,0,4523,4524,7,16,0,0,4524,4525,7,27,0,0,4525,4526,7,7,0,0,4526,4527,7,14,0,0,4527,4528,7,6,0,0,4528,530,1,0,0,0,4529,4530,7,27,0,0,4530,4531,7,11,0,0,4531,4532,7,19,0,0,4532,4533,7,12,0,0,4533,4534,5,95,0,0,4534,4535,7,19,0,0,4535,4536,7,16,0,0,4536,4537,7,27,0,0,4537,4538,7,7,0,0,4538,4539,7,14,0,0,4539,4540,7,6,0,0,4540,4541,7,3,0,0,4541,4542,7,22,0,0,4542,4543,7,22,0,0,4543,532,1,0,0,0,4544,4545,7,27,0,0,4545,4546,7,11,0,0,4546,4547,7,19,0,0,4547,4548,7,12,0,0,4548,4549,5,95,0,0,4549,4550,7,19,0,0,4550,4551,7,24,0,0,4551,4552,7,7,0,0,4552,4553,7,8,0,0,4553,4554,7,5,0,0,4554,4555,7,3,0,0,4555,4556,7,25,0,0,4556,4557,7,11,0,0,4557,534,1,0,0,0,4558,4559,7,27,0,0,4559,4560,7,11,0,0,4560,4561,7,19,0,0,4561,4562,7,12,0,0,4562,4563,5,95,0,0,4563,4564,7,25,0,0,4564,4565,7,8,0,0,4565,4566,7,7,0,0,4566,4567,7,6,0,0,4567,4568,7,6,0,0,4568,4569,7,10,0,0,4569,536,1,0,0,0,4570,4571,7,27,0,0,4571,4572,7,11,0,0,4572,4573,7,19,0,0,4573,4574,7,12,0,0,4574,4575,5,95,0,0,4575,4576,7,28,0,0,4576,4577,7,17,0,0,4577,4578,7,19,0,0,4578,4579,7,6,0,0,4579,4580,7,7,0,0,4580,538,1,0,0,0,4581,4582,7,27,0,0,4582,4583,7,11,0,0,4583,4584,7,19,0,0,4584,4585,7,12,0,0,4585,4586,5,95,0,0,4586,4587,7,8,0,0,4587,4588,7,7,0,0,4588,4589,7,23,0,0,4589,4590,7,19,0,0,4590,4591,7,24,0,0,4591,4592,7,7,0,0,4592,540,1,0,0,0,4593,4594,7,27,0,0,4594,4595,7,11,0,0,4595,4596,7,19,0,0,4596,4597,7,12,0,0,4597,4598,5,95,0,0,4598,4599,7,8,0,0,4599,4600,7,7,0,0,4600,4601,7,25,0,0,4601,4602,7,5,0,0,4602,4603,7,3,0,0,4603,4604,7,14,0,0,4604,4605,7,7,0,0,4605,542,1,0,0,0,4606,4607,7,27,0,0,4607,4608,7,11,0,0,4608,4609,7,19,0,0,4609,4610,7,12,0,0,4610,4611,5,95,0,0,4611,4612,7,11,0,0,4612,4613,7,14,0,0,4613,4614,7,20,0,0,4614,4615,7,7,0,0,4615,4616,7,23,0,0,4616,4617,7,3,0,0,4617,4618,5,95,0,0,4618,4619,7,24,0,0,4619,4620,7,3,0,0,4620,4621,7,5,0,0,4621,4622,7,15,0,0,4622,4623,7,4,0,0,4623,544,1,0,0,0,4624,4625,7,27,0,0,4625,4626,7,11,0,0,4626,4627,7,19,0,0,4627,4628,7,12,0,0,4628,4629,5,95,0,0,4629,4630,7,11,0,0,4630,4631,7,14,0,0,4631,4632,7,20,0,0,4632,4633,7,7,0,0,4633,4634,7,23,0,0,4634,4635,7,3,0,0,4635,4636,5,95,0,0,4636,4637,7,24,0,0,4637,4638,7,3,0,0,4638,4639,7,5,0,0,4639,4640,7,15,0,0,4640,4641,7,4,0,0,4641,4642,7,3,0,0,4642,4643,7,6,0,0,4643,4644,7,15,0,0,4644,4645,7,19,0,0,4645,4646,7,12,0,0,4646,4647,5,95,0,0,4647,4648,7,8,0,0,4648,4649,7,7,0,0,4649,4650,7,25,0,0,4650,4651,7,19,0,0,4651,4652,7,8,0,0,4652,4653,7,6,0,0,4653,546,1,0,0,0,4654,4655,7,27,0,0,4655,4656,7,11,0,0,4656,4657,7,19,0,0,4657,4658,7,12,0,0,4658,4659,5,95,0,0,4659,4660,7,11,0,0,4660,4661,7,7,0,0,4661,4662,7,3,0,0,4662,4663,7,8,0,0,4663,4664,7,14,0,0,4664,4665,7,20,0,0,4665,548,1,0,0,0,4666,4667,7,27,0,0,4667,4668,7,11,0,0,4668,4669,7,19,0,0,4669,4670,7,12,0,0,4670,4671,5,95,0,0,4671,4672,7,11,0,0,4672,4673,7,7,0,0,4673,4674,7,6,0,0,4674,550,1,0,0,0,4675,4676,7,27,0,0,4676,4677,7,11,0,0,4677,4678,7,19,0,0,4678,4679,7,12,0,0,4679,4680,5,95,0,0,4680,4681,7,11,0,0,4681,4682,7,6,0,0,4682,4683,7,19,0,0,4683,4684,7,8,0,0,4684,4685,7,3,0,0,4685,4686,7,22,0,0,4686,4687,7,7,0,0,4687,4688,5,95,0,0,4688,4689,7,18,0,0,4689,4690,7,8,0,0,4690,4691,7,7,0,0,4691,4692,7,7,0,0,4692,552,1,0,0,0,4693,4694,7,27,0,0,4694,4695,7,11,0,0,4695,4696,7,19,0,0,4696,4697,7,12,0,0,4697,4698,5,95,0,0,4698,4699,7,11,0,0,4699,4700,7,6,0,0,4700,4701,7,19,0,0,4701,4702,7,8,0,0,4702,4703,7,3,0,0,4703,4704,7,22,0,0,4704,4705,7,7,0,0,4705,4706,5,95,0,0,4706,4707,7,11,0,0,4707,4708,7,15,0,0,4708,4709,7,13,0,0,4709,4710,7,7,0,0,4710,554,1,0,0,0,4711,4712,7,27,0,0,4712,4713,7,11,0,0,4713,4714,7,19,0,0,4714,4715,7,12,0,0,4715,4716,5,95,0,0,4716,4717,7,6,0,0,4717,4718,7,3,0,0,4718,4719,7,16,0,0,4719,4720,7,5,0,0,4720,4721,7,7,0,0,4721,556,1,0,0,0,4722,4723,7,27,0,0,4723,4724,7,11,0,0,4724,4725,7,19,0,0,4725,4726,7,12,0,0,4726,4727,5,95,0,0,4727,4728,7,6,0,0,4728,4729,7,10,0,0,4729,4730,7,25,0,0,4730,4731,7,7,0,0,4731,558,1,0,0,0,4732,4733,7,27,0,0,4733,4734,7,11,0,0,4734,4735,7,19,0,0,4735,4736,7,12,0,0,4736,4737,5,95,0,0,4737,4738,7,17,0,0,4738,4739,7,12,0,0,4739,4740,7,28,0,0,4740,4741,7,17,0,0,4741,4742,7,19,0,0,4742,4743,7,6,0,0,4743,4744,7,7,0,0,4744,560,1,0,0,0,4745,4746,7,27,0,0,4746,4747,7,11,0,0,4747,4748,7,19,0,0,4748,4749,7,12,0,0,4749,4750,5,95,0,0,4750,4751,7,24,0,0,4751,4752,7,3,0,0,4752,4753,7,5,0,0,4753,4754,7,15,0,0,4754,4755,7,4,0,0,4755,562,1,0,0,0,4756,4757,7,27,0,0,4757,4758,7,11,0,0,4758,4759,7,19,0,0,4759,4760,7,12,0,0,4760,4761,5,95,0,0,4761,4762,7,24,0,0,4762,4763,7,3,0,0,4763,4764,7,5,0,0,4764,4765,7,17,0,0,4765,4766,7,7,0,0,4766,564,1,0,0,0,4767,4768,7,12,0,0,4768,4769,7,7,0,0,4769,4770,7,11,0,0,4770,4771,7,6,0,0,4771,4772,7,7,0,0,4772,4773,7,4,0,0,4773,566,1,0,0,0,4774,4775,7,19,0,0,4775,4776,7,8,0,0,4776,4777,7,4,0,0,4777,4778,7,15,0,0,4778,4779,7,12,0,0,4779,4780,7,3,0,0,4780,4781,7,5,0,0,4781,4782,7,15,0,0,4782,4783,7,6,0,0,4783,4784,7,10,0,0,4784,568,1,0,0,0,4785,4786,7,25,0,0,4786,4787,7,3,0,0,4787,4788,7,6,0,0,4788,4789,7,20,0,0,4789,570,1,0,0,0,4790,4791,7,3,0,0,4791,4792,7,24,0,0,4792,4793,7,22,0,0,4793,572,1,0,0,0,4794,4795,7,16,0,0,4795,4796,7,15,0,0,4796,4797,7,6,0,0,4797,4798,5,95,0,0,4798,4799,7,3,0,0,4799,4800,7,12,0,0,4800,4801,7,4,0,0,4801,574,1,0,0,0,4802,4803,7,16,0,0,4803,4804,7,15,0,0,4804,4805,7,6,0,0,4805,4806,5,95,0,0,4806,4807,7,19,0,0,4807,4808,7,8,0,0,4808,576,1,0,0,0,4809,4810,7,16,0,0,4810,4811,7,15,0,0,4811,4812,7,6,0,0,4812,4813,5,95,0,0,4813,4814,7,26,0,0,4814,4815,7,19,0,0,4815,4816,7,8,0,0,4816,578,1,0,0,0,4817,4818,7,14,0,0,4818,4819,7,19,0,0,4819,4820,7,17,0,0,4820,4821,7,12,0,0,4821,4822,7,6,0,0,4822,580,1,0,0,0,4823,4824,7,14,0,0,4824,4825,7,17,0,0,4825,4826,7,23,0,0,4826,4827,7,7,0,0,4827,4828,5,95,0,0,4828,4829,7,4,0,0,4829,4830,7,15,0,0,4830,4831,7,11,0,0,4831,4832,7,6,0,0,4832,582,1,0,0,0,4833,4834,7,4,0,0,4834,4835,7,7,0,0,4835,4836,7,12,0,0,4836,4837,7,11,0,0,4837,4838,7,7,0,0,4838,4839,5,95,0,0,4839,4840,7,8,0,0,4840,4841,7,3,0,0,4841,4842,7,12,0,0,4842,4843,7,21,0,0,4843,584,1,0,0,0,4844,4845,7,18,0,0,4845,4846,7,15,0,0,4846,4847,7,8,0,0,4847,4848,7,11,0,0,4848,4849,7,6,0,0,4849,4850,5,95,0,0,4850,4851,7,24,0,0,4851,4852,7,3,0,0,4852,4853,7,5,0,0,4853,4854,7,17,0,0,4854,4855,7,7,0,0,4855,586,1,0,0,0,4856,4857,7,22,0,0,4857,4858,7,8,0,0,4858,4859,7,19,0,0,4859,4860,7,17,0,0,4860,4861,7,25,0,0,4861,4862,5,95,0,0,4862,4863,7,14,0,0,4863,4864,7,19,0,0,4864,4865,7,12,0,0,4865,4866,7,14,0,0,4866,4867,7,3,0,0,4867,4868,7,6,0,0,4868,588,1,0,0,0,4869,4870,7,5,0,0,4870,4871,7,3,0,0,4871,4872,7,22,0,0,4872,590,1,0,0,0,4873,4874,7,5,0,0,4874,4875,7,3,0,0,4875,4876,7,11,0,0,4876,4877,7,6,0,0,4877,4878,5,95,0,0,4878,4879,7,24,0,0,4879,4880,7,3,0,0,4880,4881,7,5,0,0,4881,4882,7,17,0,0,4882,4883,7,7,0,0,4883,592,1,0,0,0,4884,4885,7,5,0,0,4885,4886,7,7,0,0,4886,4887,7,3,0,0,4887,4888,7,4,0,0,4888,594,1,0,0,0,4889,4890,7,23,0,0,4890,4891,7,3,0,0,4891,4892,7,26,0,0,4892,596,1,0,0,0,4893,4894,7,23,0,0,4894,4895,7,15,0,0,4895,4896,7,12,0,0,4896,598,1,0,0,0,4897,4898,7,12,0,0,4898,4899,7,6,0,0,4899,4900,7,15,0,0,4900,4901,7,5,0,0,4901,4902,7,7,0,0,4902,600,1,0,0,0,4903,4904,7,12,0,0,4904,4905,7,6,0,0,4905,4906,7,20,0,0,4906,4907,5,95,0,0,4907,4908,7,24,0,0,4908,4909,7,3,0,0,4909,4910,7,5,0,0,4910,4911,7,17,0,0,4911,4912,7,7,0,0,4912,602,1,0,0,0,4913,4914,7,25,0,0,4914,4915,7,7,0,0,4915,4916,7,8,0,0,4916,4917,7,14,0,0,4917,4918,7,7,0,0,4918,4919,7,12,0,0,4919,4920,7,6,0,0,4920,4921,5,95,0,0,4921,4922,7,8,0,0,4922,4923,7,3,0,0,4923,4924,7,12,0,0,4924,4925,7,21,0,0,4925,604,1,0,0,0,4926,4927,7,8,0,0,4927,4928,7,3,0,0,4928,4929,7,12,0,0,4929,4930,7,21,0,0,4930,606,1,0,0,0,4931,4932,7,8,0,0,4932,4933,7,19,0,0,4933,4934,7,9,0,0,4934,4935,5,95,0,0,4935,4936,7,12,0,0,4936,4937,7,17,0,0,4937,4938,7,23,0,0,4938,4939,7,16,0,0,4939,4940,7,7,0,0,4940,4941,7,8,0,0,4941,608,1,0,0,0,4942,4943,7,11,0,0,4943,4944,7,6,0,0,4944,4945,7,4,0,0,4945,610,1,0,0,0,4946,4947,7,11,0,0,4947,4948,7,6,0,0,4948,4949,7,4,0,0,4949,4950,7,4,0,0,4950,4951,7,7,0,0,4951,4952,7,24,0,0,4952,612,1,0,0,0,4953,4954,7,11,0,0,4954,4955,7,6,0,0,4955,4956,7,4,0,0,4956,4957,7,4,0,0,4957,4958,7,7,0,0,4958,4959,7,24,0,0,4959,4960,5,95,0,0,4960,4961,7,25,0,0,4961,4962,7,19,0,0,4962,4963,7,25,0,0,4963,614,1,0,0,0,4964,4965,7,11,0,0,4965,4966,7,6,0,0,4966,4967,7,4,0,0,4967,4968,7,4,0,0,4968,4969,7,7,0,0,4969,4970,7,24,0,0,4970,4971,5,95,0,0,4971,4972,7,11,0,0,4972,4973,7,3,0,0,4973,4974,7,23,0,0,4974,4975,7,25,0,0,4975,616,1,0,0,0,4976,4977,7,11,0,0,4977,4978,7,17,0,0,4978,4979,7,23,0,0,4979,618,1,0,0,0,4980,4981,7,24,0,0,4981,4982,7,3,0,0,4982,4983,7,8,0,0,4983,4984,5,95,0,0,4984,4985,7,25,0,0,4985,4986,7,19,0,0,4986,4987,7,25,0,0,4987,620,1,0,0,0,4988,4989,7,24,0,0,4989,4990,7,3,0,0,4990,4991,7,8,0,0,4991,4992,5,95,0,0,4992,4993,7,11,0,0,4993,4994,7,3,0,0,4994,4995,7,23,0,0,4995,4996,7,25,0,0,4996,622,1,0,0,0,4997,4998,7,24,0,0,4998,4999,7,3,0,0,4999,5e3,7,8,0,0,5e3,5001,7,15,0,0,5001,5002,7,3,0,0,5002,5003,7,12,0,0,5003,5004,7,14,0,0,5004,5005,7,7,0,0,5005,624,1,0,0,0,5006,5007,7,14,0,0,5007,5008,7,17,0,0,5008,5009,7,8,0,0,5009,5010,7,8,0,0,5010,5011,7,7,0,0,5011,5012,7,12,0,0,5012,5013,7,6,0,0,5013,5014,5,95,0,0,5014,5015,7,4,0,0,5015,5016,7,3,0,0,5016,5017,7,6,0,0,5017,5018,7,7,0,0,5018,626,1,0,0,0,5019,5020,7,14,0,0,5020,5021,7,17,0,0,5021,5022,7,8,0,0,5022,5023,7,8,0,0,5023,5024,7,7,0,0,5024,5025,7,12,0,0,5025,5026,7,6,0,0,5026,5027,5,95,0,0,5027,5028,7,6,0,0,5028,5029,7,15,0,0,5029,5030,7,23,0,0,5030,5031,7,7,0,0,5031,628,1,0,0,0,5032,5033,7,14,0,0,5033,5034,7,17,0,0,5034,5035,7,8,0,0,5035,5036,7,8,0,0,5036,5037,7,7,0,0,5037,5038,7,12,0,0,5038,5039,7,6,0,0,5039,5040,5,95,0,0,5040,5041,7,6,0,0,5041,5042,7,15,0,0,5042,5043,7,23,0,0,5043,5044,7,7,0,0,5044,5045,7,11,0,0,5045,5046,7,6,0,0,5046,5047,7,3,0,0,5047,5048,7,23,0,0,5048,5049,7,25,0,0,5049,630,1,0,0,0,5050,5051,7,5,0,0,5051,5052,7,19,0,0,5052,5053,7,14,0,0,5053,5054,7,3,0,0,5054,5055,7,5,0,0,5055,5056,7,6,0,0,5056,5057,7,15,0,0,5057,5058,7,23,0,0,5058,5059,7,7,0,0,5059,632,1,0,0,0,5060,5061,7,14,0,0,5061,5062,7,17,0,0,5062,5063,7,8,0,0,5063,5064,7,4,0,0,5064,5065,7,3,0,0,5065,5066,7,6,0,0,5066,5067,7,7,0,0,5067,634,1,0,0,0,5068,5069,7,14,0,0,5069,5070,7,17,0,0,5070,5071,7,8,0,0,5071,5072,7,6,0,0,5072,5073,7,15,0,0,5073,5074,7,23,0,0,5074,5075,7,7,0,0,5075,636,1,0,0,0,5076,5077,7,4,0,0,5077,5078,7,3,0,0,5078,5079,7,6,0,0,5079,5080,7,7,0,0,5080,5081,5,95,0,0,5081,5082,7,3,0,0,5082,5083,7,4,0,0,5083,5084,7,4,0,0,5084,638,1,0,0,0,5085,5086,7,4,0,0,5086,5087,7,3,0,0,5087,5088,7,6,0,0,5088,5089,7,7,0,0,5089,5090,5,95,0,0,5090,5091,7,11,0,0,5091,5092,7,17,0,0,5092,5093,7,16,0,0,5093,640,1,0,0,0,5094,5095,7,7,0,0,5095,5096,7,26,0,0,5096,5097,7,6,0,0,5097,5098,7,8,0,0,5098,5099,7,3,0,0,5099,5100,7,14,0,0,5100,5101,7,6,0,0,5101,642,1,0,0,0,5102,5103,7,5,0,0,5103,5104,7,19,0,0,5104,5105,7,14,0,0,5105,5106,7,3,0,0,5106,5107,7,5,0,0,5107,5108,7,6,0,0,5108,5109,7,15,0,0,5109,5110,7,23,0,0,5110,5111,7,7,0,0,5111,5112,7,11,0,0,5112,5113,7,6,0,0,5113,5114,7,3,0,0,5114,5115,7,23,0,0,5115,5116,7,25,0,0,5116,644,1,0,0,0,5117,5118,7,12,0,0,5118,5119,7,19,0,0,5119,5120,7,9,0,0,5120,646,1,0,0,0,5121,5122,7,25,0,0,5122,5123,7,19,0,0,5123,5124,7,11,0,0,5124,5125,7,15,0,0,5125,5126,7,6,0,0,5126,5127,7,15,0,0,5127,5128,7,19,0,0,5128,5129,7,12,0,0,5129,648,1,0,0,0,5130,5131,7,11,0,0,5131,5132,7,17,0,0,5132,5133,7,16,0,0,5133,5134,7,11,0,0,5134,5135,7,6,0,0,5135,5136,7,8,0,0,5136,650,1,0,0,0,5137,5138,7,11,0,0,5138,5139,7,17,0,0,5139,5140,7,16,0,0,5140,5141,7,11,0,0,5141,5142,7,6,0,0,5142,5143,7,8,0,0,5143,5144,7,15,0,0,5144,5145,7,12,0,0,5145,5146,7,22,0,0,5146,652,1,0,0,0,5147,5148,7,11,0,0,5148,5149,7,10,0,0,5149,5150,7,11,0,0,5150,5151,7,4,0,0,5151,5152,7,3,0,0,5152,5153,7,6,0,0,5153,5154,7,7,0,0,5154,654,1,0,0,0,5155,5156,7,6,0,0,5156,5157,7,8,0,0,5157,5158,7,15,0,0,5158,5159,7,23,0,0,5159,656,1,0,0,0,5160,5161,7,17,0,0,5161,5162,7,6,0,0,5162,5163,7,14,0,0,5163,5164,5,95,0,0,5164,5165,7,4,0,0,5165,5166,7,3,0,0,5166,5167,7,6,0,0,5167,5168,7,7,0,0,5168,658,1,0,0,0,5169,5170,7,17,0,0,5170,5171,7,6,0,0,5171,5172,7,14,0,0,5172,5173,5,95,0,0,5173,5174,7,6,0,0,5174,5175,7,15,0,0,5175,5176,7,23,0,0,5176,5177,7,7,0,0,5177,660,1,0,0,0,5178,5179,7,17,0,0,5179,5180,7,6,0,0,5180,5181,7,14,0,0,5181,5182,5,95,0,0,5182,5183,7,6,0,0,5183,5184,7,15,0,0,5184,5185,7,23,0,0,5185,5186,7,7,0,0,5186,5187,7,11,0,0,5187,5188,7,6,0,0,5188,5189,7,3,0,0,5189,5190,7,23,0,0,5190,5191,7,25,0,0,5191,662,1,0,0,0,5192,5193,7,3,0,0,5193,5194,7,14,0,0,5194,5195,7,14,0,0,5195,5196,7,19,0,0,5196,5197,7,17,0,0,5197,5198,7,12,0,0,5198,5199,7,6,0,0,5199,664,1,0,0,0,5200,5201,7,3,0,0,5201,5202,7,14,0,0,5202,5203,7,6,0,0,5203,5204,7,15,0,0,5204,5205,7,19,0,0,5205,5206,7,12,0,0,5206,666,1,0,0,0,5207,5208,7,3,0,0,5208,5209,7,18,0,0,5209,5210,7,6,0,0,5210,5211,7,7,0,0,5211,5212,7,8,0,0,5212,668,1,0,0,0,5213,5214,7,3,0,0,5214,5215,7,22,0,0,5215,5216,7,22,0,0,5216,5217,7,8,0,0,5217,5218,7,7,0,0,5218,5219,7,22,0,0,5219,5220,7,3,0,0,5220,5221,7,6,0,0,5221,5222,7,7,0,0,5222,670,1,0,0,0,5223,5224,7,3,0,0,5224,5225,7,5,0,0,5225,5226,7,22,0,0,5226,5227,7,19,0,0,5227,5228,7,8,0,0,5228,5229,7,15,0,0,5229,5230,7,6,0,0,5230,5231,7,20,0,0,5231,5232,7,23,0,0,5232,672,1,0,0,0,5233,5234,7,3,0,0,5234,5235,7,12,0,0,5235,5236,7,10,0,0,5236,674,1,0,0,0,5237,5238,7,3,0,0,5238,5239,7,6,0,0,5239,676,1,0,0,0,5240,5241,7,3,0,0,5241,5242,7,17,0,0,5242,5243,7,6,0,0,5243,5244,7,20,0,0,5244,5245,7,19,0,0,5245,5246,7,8,0,0,5246,5247,7,11,0,0,5247,678,1,0,0,0,5248,5249,7,3,0,0,5249,5250,7,17,0,0,5250,5251,7,6,0,0,5251,5252,7,19,0,0,5252,5253,7,14,0,0,5253,5254,7,19,0,0,5254,5255,7,23,0,0,5255,5256,7,23,0,0,5256,5257,7,15,0,0,5257,5258,7,6,0,0,5258,680,1,0,0,0,5259,5260,7,3,0,0,5260,5261,7,17,0,0,5261,5262,7,6,0,0,5262,5263,7,19,0,0,5263,5264,7,7,0,0,5264,5265,7,26,0,0,5265,5266,7,6,0,0,5266,5267,7,7,0,0,5267,5268,7,12,0,0,5268,5269,7,4,0,0,5269,5270,5,95,0,0,5270,5271,7,11,0,0,5271,5272,7,15,0,0,5272,5273,7,13,0,0,5273,5274,7,7,0,0,5274,682,1,0,0,0,5275,5276,7,3,0,0,5276,5277,7,17,0,0,5277,5278,7,6,0,0,5278,5279,7,19,0,0,5279,5280,5,95,0,0,5280,5281,7,15,0,0,5281,5282,7,12,0,0,5282,5283,7,14,0,0,5283,5284,7,8,0,0,5284,5285,7,7,0,0,5285,5286,7,23,0,0,5286,5287,7,7,0,0,5287,5288,7,12,0,0,5288,5289,7,6,0,0,5289,684,1,0,0,0,5290,5291,7,3,0,0,5291,5292,7,24,0,0,5292,5293,7,22,0,0,5293,5294,5,95,0,0,5294,5295,7,8,0,0,5295,5296,7,19,0,0,5296,5297,7,9,0,0,5297,5298,5,95,0,0,5298,5299,7,5,0,0,5299,5300,7,7,0,0,5300,5301,7,12,0,0,5301,5302,7,22,0,0,5302,5303,7,6,0,0,5303,5304,7,20,0,0,5304,686,1,0,0,0,5305,5306,7,16,0,0,5306,5307,7,7,0,0,5307,5308,7,22,0,0,5308,5309,7,15,0,0,5309,5310,7,12,0,0,5310,688,1,0,0,0,5311,5312,7,16,0,0,5312,5313,7,15,0,0,5313,5314,7,12,0,0,5314,5315,7,5,0,0,5315,5316,7,19,0,0,5316,5317,7,22,0,0,5317,690,1,0,0,0,5318,5319,7,16,0,0,5319,5320,7,15,0,0,5320,5321,7,6,0,0,5321,692,1,0,0,0,5322,5323,7,16,0,0,5323,5324,7,5,0,0,5324,5325,7,19,0,0,5325,5326,7,14,0,0,5326,5327,7,21,0,0,5327,694,1,0,0,0,5328,5329,7,16,0,0,5329,5330,7,19,0,0,5330,5331,7,19,0,0,5331,5332,7,5,0,0,5332,696,1,0,0,0,5333,5334,7,16,0,0,5334,5335,7,19,0,0,5335,5336,7,19,0,0,5336,5337,7,5,0,0,5337,5338,7,7,0,0,5338,5339,7,3,0,0,5339,5340,7,12,0,0,5340,698,1,0,0,0,5341,5342,7,16,0,0,5342,5343,7,6,0,0,5343,5344,7,8,0,0,5344,5345,7,7,0,0,5345,5346,7,7,0,0,5346,700,1,0,0,0,5347,5348,7,14,0,0,5348,5349,7,3,0,0,5349,5350,7,14,0,0,5350,5351,7,20,0,0,5351,5352,7,7,0,0,5352,702,1,0,0,0,5353,5354,7,14,0,0,5354,5355,7,3,0,0,5355,5356,7,11,0,0,5356,5357,7,14,0,0,5357,5358,7,3,0,0,5358,5359,7,4,0,0,5359,5360,7,7,0,0,5360,5361,7,4,0,0,5361,704,1,0,0,0,5362,5363,7,14,0,0,5363,5364,7,20,0,0,5364,5365,7,3,0,0,5365,5366,7,15,0,0,5366,5367,7,12,0,0,5367,706,1,0,0,0,5368,5369,7,14,0,0,5369,5370,7,20,0,0,5370,5371,7,3,0,0,5371,5372,7,12,0,0,5372,5373,7,22,0,0,5373,5374,7,7,0,0,5374,5375,7,4,0,0,5375,708,1,0,0,0,5376,5377,7,14,0,0,5377,5378,7,20,0,0,5378,5379,7,3,0,0,5379,5380,7,12,0,0,5380,5381,7,12,0,0,5381,5382,7,7,0,0,5382,5383,7,5,0,0,5383,710,1,0,0,0,5384,5385,7,14,0,0,5385,5386,7,20,0,0,5386,5387,7,7,0,0,5387,5388,7,14,0,0,5388,5389,7,21,0,0,5389,5390,7,11,0,0,5390,5391,7,17,0,0,5391,5392,7,23,0,0,5392,712,1,0,0,0,5393,5394,7,25,0,0,5394,5395,7,3,0,0,5395,5396,7,22,0,0,5396,5397,7,7,0,0,5397,5398,5,95,0,0,5398,5399,7,14,0,0,5399,5400,7,20,0,0,5400,5401,7,7,0,0,5401,5402,7,14,0,0,5402,5403,7,21,0,0,5403,5404,7,11,0,0,5404,5405,7,17,0,0,5405,5406,7,23,0,0,5406,714,1,0,0,0,5407,5408,7,14,0,0,5408,5409,7,15,0,0,5409,5410,7,25,0,0,5410,5411,7,20,0,0,5411,5412,7,7,0,0,5412,5413,7,8,0,0,5413,716,1,0,0,0,5414,5415,7,14,0,0,5415,5416,7,5,0,0,5416,5417,7,3,0,0,5417,5418,7,11,0,0,5418,5419,7,11,0,0,5419,5420,5,95,0,0,5420,5421,7,19,0,0,5421,5422,7,8,0,0,5422,5423,7,15,0,0,5423,5424,7,22,0,0,5424,5425,7,15,0,0,5425,5426,7,12,0,0,5426,718,1,0,0,0,5427,5428,7,14,0,0,5428,5429,7,5,0,0,5429,5430,7,15,0,0,5430,5431,7,7,0,0,5431,5432,7,12,0,0,5432,5433,7,6,0,0,5433,720,1,0,0,0,5434,5435,7,14,0,0,5435,5436,7,5,0,0,5436,5437,7,19,0,0,5437,5438,7,11,0,0,5438,5439,7,7,0,0,5439,722,1,0,0,0,5440,5441,7,14,0,0,5441,5442,7,5,0,0,5442,5443,7,17,0,0,5443,5444,7,11,0,0,5444,5445,7,6,0,0,5445,5446,7,7,0,0,5446,5447,7,8,0,0,5447,5448,7,15,0,0,5448,5449,7,12,0,0,5449,5450,7,22,0,0,5450,724,1,0,0,0,5451,5452,7,14,0,0,5452,5453,7,19,0,0,5453,5454,7,3,0,0,5454,5455,7,5,0,0,5455,5456,7,7,0,0,5456,5457,7,11,0,0,5457,5458,7,14,0,0,5458,5459,7,7,0,0,5459,726,1,0,0,0,5460,5461,7,14,0,0,5461,5462,7,19,0,0,5462,5463,7,4,0,0,5463,5464,7,7,0,0,5464,728,1,0,0,0,5465,5466,7,14,0,0,5466,5467,7,19,0,0,5467,5468,7,5,0,0,5468,5469,7,17,0,0,5469,5470,7,23,0,0,5470,5471,7,12,0,0,5471,5472,7,11,0,0,5472,730,1,0,0,0,5473,5474,7,14,0,0,5474,5475,7,19,0,0,5475,5476,7,5,0,0,5476,5477,7,17,0,0,5477,5478,7,23,0,0,5478,5479,7,12,0,0,5479,5480,5,95,0,0,5480,5481,7,18,0,0,5481,5482,7,19,0,0,5482,5483,7,8,0,0,5483,5484,7,23,0,0,5484,5485,7,3,0,0,5485,5486,7,6,0,0,5486,732,1,0,0,0,5487,5488,7,14,0,0,5488,5489,7,19,0,0,5489,5490,7,5,0,0,5490,5491,7,17,0,0,5491,5492,7,23,0,0,5492,5493,7,12,0,0,5493,5494,5,95,0,0,5494,5495,7,12,0,0,5495,5496,7,3,0,0,5496,5497,7,23,0,0,5497,5498,7,7,0,0,5498,734,1,0,0,0,5499,5500,7,14,0,0,5500,5501,7,19,0,0,5501,5502,7,23,0,0,5502,5503,7,23,0,0,5503,5504,7,7,0,0,5504,5505,7,12,0,0,5505,5506,7,6,0,0,5506,736,1,0,0,0,5507,5508,7,14,0,0,5508,5509,7,19,0,0,5509,5510,7,23,0,0,5510,5511,7,23,0,0,5511,5512,7,15,0,0,5512,5513,7,6,0,0,5513,738,1,0,0,0,5514,5515,7,14,0,0,5515,5516,7,19,0,0,5516,5517,7,23,0,0,5517,5518,7,25,0,0,5518,5519,7,3,0,0,5519,5520,7,14,0,0,5520,5521,7,6,0,0,5521,740,1,0,0,0,5522,5523,7,14,0,0,5523,5524,7,19,0,0,5524,5525,7,23,0,0,5525,5526,7,25,0,0,5526,5527,7,5,0,0,5527,5528,7,7,0,0,5528,5529,7,6,0,0,5529,5530,7,15,0,0,5530,5531,7,19,0,0,5531,5532,7,12,0,0,5532,742,1,0,0,0,5533,5534,7,14,0,0,5534,5535,7,19,0,0,5535,5536,7,23,0,0,5536,5537,7,25,0,0,5537,5538,7,8,0,0,5538,5539,7,7,0,0,5539,5540,7,11,0,0,5540,5541,7,11,0,0,5541,5542,7,7,0,0,5542,5543,7,4,0,0,5543,744,1,0,0,0,5544,5545,7,14,0,0,5545,5546,7,19,0,0,5546,5547,7,23,0,0,5547,5548,7,25,0,0,5548,5549,7,8,0,0,5549,5550,7,7,0,0,5550,5551,7,11,0,0,5551,5552,7,11,0,0,5552,5553,7,15,0,0,5553,5554,7,19,0,0,5554,5555,7,12,0,0,5555,746,1,0,0,0,5556,5557,7,14,0,0,5557,5558,7,19,0,0,5558,5559,7,12,0,0,5559,5560,7,14,0,0,5560,5561,7,17,0,0,5561,5562,7,8,0,0,5562,5563,7,8,0,0,5563,5564,7,7,0,0,5564,5565,7,12,0,0,5565,5566,7,6,0,0,5566,748,1,0,0,0,5567,5568,7,14,0,0,5568,5569,7,19,0,0,5569,5570,7,12,0,0,5570,5571,7,12,0,0,5571,5572,7,7,0,0,5572,5573,7,14,0,0,5573,5574,7,6,0,0,5574,750,1,0,0,0,5575,5576,7,14,0,0,5576,5577,7,19,0,0,5577,5578,7,12,0,0,5578,5579,7,12,0,0,5579,5580,7,7,0,0,5580,5581,7,14,0,0,5581,5582,7,6,0,0,5582,5583,7,15,0,0,5583,5584,7,19,0,0,5584,5585,7,12,0,0,5585,752,1,0,0,0,5586,5587,7,14,0,0,5587,5588,7,19,0,0,5588,5589,7,12,0,0,5589,5590,7,11,0,0,5590,5591,7,15,0,0,5591,5592,7,11,0,0,5592,5593,7,6,0,0,5593,5594,7,7,0,0,5594,5595,7,12,0,0,5595,5596,7,6,0,0,5596,754,1,0,0,0,5597,5598,7,14,0,0,5598,5599,7,19,0,0,5599,5600,7,12,0,0,5600,5601,7,11,0,0,5601,5602,7,6,0,0,5602,5603,7,8,0,0,5603,5604,7,3,0,0,5604,5605,7,15,0,0,5605,5606,7,12,0,0,5606,5607,7,6,0,0,5607,5608,5,95,0,0,5608,5609,7,14,0,0,5609,5610,7,3,0,0,5610,5611,7,6,0,0,5611,5612,7,3,0,0,5612,5613,7,5,0,0,5613,5614,7,19,0,0,5614,5615,7,22,0,0,5615,756,1,0,0,0,5616,5617,7,14,0,0,5617,5618,7,19,0,0,5618,5619,7,12,0,0,5619,5620,7,11,0,0,5620,5621,7,6,0,0,5621,5622,7,8,0,0,5622,5623,7,3,0,0,5623,5624,7,15,0,0,5624,5625,7,12,0,0,5625,5626,7,6,0,0,5626,5627,5,95,0,0,5627,5628,7,11,0,0,5628,5629,7,14,0,0,5629,5630,7,20,0,0,5630,5631,7,7,0,0,5631,5632,7,23,0,0,5632,5633,7,3,0,0,5633,758,1,0,0,0,5634,5635,7,14,0,0,5635,5636,7,19,0,0,5636,5637,7,12,0,0,5637,5638,7,11,0,0,5638,5639,7,6,0,0,5639,5640,7,8,0,0,5640,5641,7,3,0,0,5641,5642,7,15,0,0,5642,5643,7,12,0,0,5643,5644,7,6,0,0,5644,5645,5,95,0,0,5645,5646,7,12,0,0,5646,5647,7,3,0,0,5647,5648,7,23,0,0,5648,5649,7,7,0,0,5649,760,1,0,0,0,5650,5651,7,14,0,0,5651,5652,7,19,0,0,5652,5653,7,12,0,0,5653,5654,7,6,0,0,5654,5655,7,3,0,0,5655,5656,7,15,0,0,5656,5657,7,12,0,0,5657,5658,7,11,0,0,5658,762,1,0,0,0,5659,5660,7,14,0,0,5660,5661,7,19,0,0,5661,5662,7,12,0,0,5662,5663,7,6,0,0,5663,5664,7,7,0,0,5664,5665,7,26,0,0,5665,5666,7,6,0,0,5666,764,1,0,0,0,5667,5668,7,14,0,0,5668,5669,7,19,0,0,5669,5670,7,12,0,0,5670,5671,7,6,0,0,5671,5672,7,8,0,0,5672,5673,7,15,0,0,5673,5674,7,16,0,0,5674,5675,7,17,0,0,5675,5676,7,6,0,0,5676,5677,7,19,0,0,5677,5678,7,8,0,0,5678,5679,7,11,0,0,5679,766,1,0,0,0,5680,5681,7,14,0,0,5681,5682,7,19,0,0,5682,5683,7,25,0,0,5683,5684,7,10,0,0,5684,768,1,0,0,0,5685,5686,7,14,0,0,5686,5687,7,25,0,0,5687,5688,7,17,0,0,5688,770,1,0,0,0,5689,5690,7,14,0,0,5690,5691,7,10,0,0,5691,5692,7,14,0,0,5692,5693,7,5,0,0,5693,5694,7,7,0,0,5694,772,1,0,0,0,5695,5696,7,14,0,0,5696,5697,7,17,0,0,5697,5698,7,8,0,0,5698,5699,7,11,0,0,5699,5700,7,19,0,0,5700,5701,7,8,0,0,5701,5702,5,95,0,0,5702,5703,7,12,0,0,5703,5704,7,3,0,0,5704,5705,7,23,0,0,5705,5706,7,7,0,0,5706,774,1,0,0,0,5707,5708,7,4,0,0,5708,5709,7,3,0,0,5709,5710,7,6,0,0,5710,5711,7,3,0,0,5711,776,1,0,0,0,5712,5713,7,4,0,0,5713,5714,7,3,0,0,5714,5715,7,6,0,0,5715,5716,7,3,0,0,5716,5717,7,18,0,0,5717,5718,7,15,0,0,5718,5719,7,5,0,0,5719,5720,7,7,0,0,5720,778,1,0,0,0,5721,5722,7,4,0,0,5722,5723,7,7,0,0,5723,5724,7,3,0,0,5724,5725,7,5,0,0,5725,5726,7,5,0,0,5726,5727,7,19,0,0,5727,5728,7,14,0,0,5728,5729,7,3,0,0,5729,5730,7,6,0,0,5730,5731,7,7,0,0,5731,780,1,0,0,0,5732,5733,7,4,0,0,5733,5734,7,7,0,0,5734,5735,7,18,0,0,5735,5736,7,3,0,0,5736,5737,7,17,0,0,5737,5738,7,5,0,0,5738,5739,7,6,0,0,5739,5740,5,95,0,0,5740,5741,7,3,0,0,5741,5742,7,17,0,0,5742,5743,7,6,0,0,5743,5744,7,20,0,0,5744,782,1,0,0,0,5745,5746,7,4,0,0,5746,5747,7,7,0,0,5747,5748,7,18,0,0,5748,5749,7,15,0,0,5749,5750,7,12,0,0,5750,5751,7,7,0,0,5751,5752,7,8,0,0,5752,784,1,0,0,0,5753,5754,7,4,0,0,5754,5755,7,7,0,0,5755,5756,7,5,0,0,5756,5757,7,3,0,0,5757,5758,7,10,0,0,5758,5759,5,95,0,0,5759,5760,7,21,0,0,5760,5761,7,7,0,0,5761,5762,7,10,0,0,5762,5763,5,95,0,0,5763,5764,7,9,0,0,5764,5765,7,8,0,0,5765,5766,7,15,0,0,5766,5767,7,6,0,0,5767,5768,7,7,0,0,5768,786,1,0,0,0,5769,5770,7,4,0,0,5770,5771,7,7,0,0,5771,5772,7,11,0,0,5772,5773,5,95,0,0,5773,5774,7,21,0,0,5774,5775,7,7,0,0,5775,5776,7,10,0,0,5776,5777,5,95,0,0,5777,5778,7,18,0,0,5778,5779,7,15,0,0,5779,5780,7,5,0,0,5780,5781,7,7,0,0,5781,788,1,0,0,0,5782,5783,7,4,0,0,5783,5784,7,15,0,0,5784,5785,7,8,0,0,5785,5786,7,7,0,0,5786,5787,7,14,0,0,5787,5788,7,6,0,0,5788,5789,7,19,0,0,5789,5790,7,8,0,0,5790,5791,7,10,0,0,5791,790,1,0,0,0,5792,5793,7,4,0,0,5793,5794,7,15,0,0,5794,5795,7,11,0,0,5795,5796,7,3,0,0,5796,5797,7,16,0,0,5797,5798,7,5,0,0,5798,5799,7,7,0,0,5799,792,1,0,0,0,5800,5801,7,4,0,0,5801,5802,7,15,0,0,5802,5803,7,11,0,0,5803,5804,7,14,0,0,5804,5805,7,3,0,0,5805,5806,7,8,0,0,5806,5807,7,4,0,0,5807,794,1,0,0,0,5808,5809,7,4,0,0,5809,5810,7,15,0,0,5810,5811,7,11,0,0,5811,5812,7,21,0,0,5812,796,1,0,0,0,5813,5814,7,4,0,0,5814,5815,7,19,0,0,5815,798,1,0,0,0,5816,5817,7,4,0,0,5817,5818,7,17,0,0,5818,5819,7,23,0,0,5819,5820,7,25,0,0,5820,5821,7,18,0,0,5821,5822,7,15,0,0,5822,5823,7,5,0,0,5823,5824,7,7,0,0,5824,800,1,0,0,0,5825,5826,7,4,0,0,5826,5827,7,17,0,0,5827,5828,7,25,0,0,5828,5829,7,5,0,0,5829,5830,7,15,0,0,5830,5831,7,14,0,0,5831,5832,7,3,0,0,5832,5833,7,6,0,0,5833,5834,7,7,0,0,5834,802,1,0,0,0,5835,5836,7,4,0,0,5836,5837,7,10,0,0,5837,5838,7,12,0,0,5838,5839,7,3,0,0,5839,5840,7,23,0,0,5840,5841,7,15,0,0,5841,5842,7,14,0,0,5842,804,1,0,0,0,5843,5844,7,7,0,0,5844,5845,7,12,0,0,5845,5846,7,3,0,0,5846,5847,7,16,0,0,5847,5848,7,5,0,0,5848,5849,7,7,0,0,5849,806,1,0,0,0,5850,5851,7,7,0,0,5851,5852,7,12,0,0,5852,5853,7,14,0,0,5853,5854,7,8,0,0,5854,5855,7,10,0,0,5855,5856,7,25,0,0,5856,5857,7,6,0,0,5857,5858,7,7,0,0,5858,5859,7,4,0,0,5859,808,1,0,0,0,5860,5861,7,7,0,0,5861,5862,7,12,0,0,5862,5863,7,14,0,0,5863,5864,7,8,0,0,5864,5865,7,10,0,0,5865,5866,7,25,0,0,5866,5867,7,6,0,0,5867,5868,7,15,0,0,5868,5869,7,19,0,0,5869,5870,7,12,0,0,5870,810,1,0,0,0,5871,5872,7,7,0,0,5872,5873,7,12,0,0,5873,5874,7,14,0,0,5874,5875,7,8,0,0,5875,5876,7,10,0,0,5876,5877,7,25,0,0,5877,5878,7,6,0,0,5878,5879,7,15,0,0,5879,5880,7,19,0,0,5880,5881,7,12,0,0,5881,5882,5,95,0,0,5882,5883,7,21,0,0,5883,5884,7,7,0,0,5884,5885,7,10,0,0,5885,5886,5,95,0,0,5886,5887,7,15,0,0,5887,5888,7,4,0,0,5888,812,1,0,0,0,5889,5890,7,7,0,0,5890,5891,7,12,0,0,5891,5892,7,4,0,0,5892,814,1,0,0,0,5893,5894,7,7,0,0,5894,5895,7,12,0,0,5895,5896,7,4,0,0,5896,5897,7,11,0,0,5897,816,1,0,0,0,5898,5899,7,7,0,0,5899,5900,7,12,0,0,5900,5901,7,22,0,0,5901,5902,7,15,0,0,5902,5903,7,12,0,0,5903,5904,7,7,0,0,5904,818,1,0,0,0,5905,5906,7,7,0,0,5906,5907,7,12,0,0,5907,5908,7,22,0,0,5908,5909,7,15,0,0,5909,5910,7,12,0,0,5910,5911,7,7,0,0,5911,5912,7,11,0,0,5912,820,1,0,0,0,5913,5914,7,7,0,0,5914,5915,7,8,0,0,5915,5916,7,8,0,0,5916,5917,7,19,0,0,5917,5918,7,8,0,0,5918,822,1,0,0,0,5919,5920,7,7,0,0,5920,5921,7,8,0,0,5921,5922,7,8,0,0,5922,5923,7,19,0,0,5923,5924,7,8,0,0,5924,5925,7,11,0,0,5925,824,1,0,0,0,5926,5927,7,7,0,0,5927,5928,7,11,0,0,5928,5929,7,14,0,0,5929,5930,7,3,0,0,5930,5931,7,25,0,0,5931,5932,7,7,0,0,5932,826,1,0,0,0,5933,5934,7,7,0,0,5934,5935,7,24,0,0,5935,5936,7,7,0,0,5936,5937,7,12,0,0,5937,828,1,0,0,0,5938,5939,7,7,0,0,5939,5940,7,24,0,0,5940,5941,7,7,0,0,5941,5942,7,12,0,0,5942,5943,7,6,0,0,5943,830,1,0,0,0,5944,5945,7,7,0,0,5945,5946,7,24,0,0,5946,5947,7,7,0,0,5947,5948,7,12,0,0,5948,5949,7,6,0,0,5949,5950,7,11,0,0,5950,832,1,0,0,0,5951,5952,7,7,0,0,5952,5953,7,24,0,0,5953,5954,7,7,0,0,5954,5955,7,8,0,0,5955,5956,7,10,0,0,5956,834,1,0,0,0,5957,5958,7,7,0,0,5958,5959,7,26,0,0,5959,5960,7,14,0,0,5960,5961,7,20,0,0,5961,5962,7,3,0,0,5962,5963,7,12,0,0,5963,5964,7,22,0,0,5964,5965,7,7,0,0,5965,836,1,0,0,0,5966,5967,7,7,0,0,5967,5968,7,26,0,0,5968,5969,7,14,0,0,5969,5970,7,5,0,0,5970,5971,7,17,0,0,5971,5972,7,11,0,0,5972,5973,7,15,0,0,5973,5974,7,24,0,0,5974,5975,7,7,0,0,5975,838,1,0,0,0,5976,5977,7,7,0,0,5977,5978,7,26,0,0,5978,5979,7,25,0,0,5979,5980,7,15,0,0,5980,5981,7,8,0,0,5981,5982,7,7,0,0,5982,840,1,0,0,0,5983,5984,7,7,0,0,5984,5985,7,26,0,0,5985,5986,7,25,0,0,5986,5987,7,19,0,0,5987,5988,7,8,0,0,5988,5989,7,6,0,0,5989,842,1,0,0,0,5990,5991,7,7,0,0,5991,5992,7,26,0,0,5992,5993,7,6,0,0,5993,5994,7,7,0,0,5994,5995,7,12,0,0,5995,5996,7,4,0,0,5996,5997,7,7,0,0,5997,5998,7,4,0,0,5998,844,1,0,0,0,5999,6e3,7,7,0,0,6e3,6001,7,26,0,0,6001,6002,7,6,0,0,6002,6003,7,7,0,0,6003,6004,7,12,0,0,6004,6005,7,6,0,0,6005,6006,5,95,0,0,6006,6007,7,11,0,0,6007,6008,7,15,0,0,6008,6009,7,13,0,0,6009,6010,7,7,0,0,6010,846,1,0,0,0,6011,6012,7,18,0,0,6012,6013,7,3,0,0,6013,6014,7,15,0,0,6014,6015,7,5,0,0,6015,6016,7,7,0,0,6016,6017,7,4,0,0,6017,6018,5,95,0,0,6018,6019,7,5,0,0,6019,6020,7,19,0,0,6020,6021,7,22,0,0,6021,6022,7,15,0,0,6022,6023,7,12,0,0,6023,6024,5,95,0,0,6024,6025,7,3,0,0,6025,6026,7,6,0,0,6026,6027,7,6,0,0,6027,6028,7,7,0,0,6028,6029,7,23,0,0,6029,6030,7,25,0,0,6030,6031,7,6,0,0,6031,6032,7,11,0,0,6032,848,1,0,0,0,6033,6034,7,18,0,0,6034,6035,7,3,0,0,6035,6036,7,11,0,0,6036,6037,7,6,0,0,6037,850,1,0,0,0,6038,6039,7,18,0,0,6039,6040,7,3,0,0,6040,6041,7,17,0,0,6041,6042,7,5,0,0,6042,6043,7,6,0,0,6043,6044,7,11,0,0,6044,852,1,0,0,0,6045,6046,7,18,0,0,6046,6047,7,15,0,0,6047,6048,7,7,0,0,6048,6049,7,5,0,0,6049,6050,7,4,0,0,6050,6051,7,11,0,0,6051,854,1,0,0,0,6052,6053,7,18,0,0,6053,6054,7,15,0,0,6054,6055,7,5,0,0,6055,6056,7,7,0,0,6056,6057,5,95,0,0,6057,6058,7,16,0,0,6058,6059,7,5,0,0,6059,6060,7,19,0,0,6060,6061,7,14,0,0,6061,6062,7,21,0,0,6062,6063,5,95,0,0,6063,6064,7,11,0,0,6064,6065,7,15,0,0,6065,6066,7,13,0,0,6066,6067,7,7,0,0,6067,856,1,0,0,0,6068,6069,7,18,0,0,6069,6070,7,15,0,0,6070,6071,7,5,0,0,6071,6072,7,6,0,0,6072,6073,7,7,0,0,6073,6074,7,8,0,0,6074,858,1,0,0,0,6075,6076,7,18,0,0,6076,6077,7,15,0,0,6077,6078,7,8,0,0,6078,6079,7,11,0,0,6079,6080,7,6,0,0,6080,860,1,0,0,0,6081,6082,7,18,0,0,6082,6083,7,15,0,0,6083,6084,7,26,0,0,6084,6085,7,7,0,0,6085,6086,7,4,0,0,6086,862,1,0,0,0,6087,6088,7,18,0,0,6088,6089,7,5,0,0,6089,6090,7,17,0,0,6090,6091,7,11,0,0,6091,6092,7,20,0,0,6092,864,1,0,0,0,6093,6094,7,18,0,0,6094,6095,7,19,0,0,6095,6096,7,5,0,0,6096,6097,7,5,0,0,6097,6098,7,19,0,0,6098,6099,7,9,0,0,6099,6100,7,15,0,0,6100,6101,7,12,0,0,6101,6102,7,22,0,0,6102,866,1,0,0,0,6103,6104,7,18,0,0,6104,6105,7,19,0,0,6105,6106,7,5,0,0,6106,6107,7,5,0,0,6107,6108,7,19,0,0,6108,6109,7,9,0,0,6109,6110,7,11,0,0,6110,868,1,0,0,0,6111,6112,7,18,0,0,6112,6113,7,19,0,0,6113,6114,7,17,0,0,6114,6115,7,12,0,0,6115,6116,7,4,0,0,6116,870,1,0,0,0,6117,6118,7,18,0,0,6118,6119,7,17,0,0,6119,6120,7,5,0,0,6120,6121,7,5,0,0,6121,872,1,0,0,0,6122,6123,7,18,0,0,6123,6124,7,17,0,0,6124,6125,7,12,0,0,6125,6126,7,14,0,0,6126,6127,7,6,0,0,6127,6128,7,15,0,0,6128,6129,7,19,0,0,6129,6130,7,12,0,0,6130,874,1,0,0,0,6131,6132,7,22,0,0,6132,6133,7,7,0,0,6133,6134,7,12,0,0,6134,6135,7,7,0,0,6135,6136,7,8,0,0,6136,6137,7,3,0,0,6137,6138,7,5,0,0,6138,876,1,0,0,0,6139,6140,7,22,0,0,6140,6141,7,5,0,0,6141,6142,7,19,0,0,6142,6143,7,16,0,0,6143,6144,7,3,0,0,6144,6145,7,5,0,0,6145,878,1,0,0,0,6146,6147,7,22,0,0,6147,6148,7,8,0,0,6148,6149,7,3,0,0,6149,6150,7,12,0,0,6150,6151,7,6,0,0,6151,6152,7,11,0,0,6152,880,1,0,0,0,6153,6154,7,22,0,0,6154,6155,7,8,0,0,6155,6156,7,19,0,0,6156,6157,7,17,0,0,6157,6158,7,25,0,0,6158,6159,5,95,0,0,6159,6160,7,8,0,0,6160,6161,7,7,0,0,6161,6162,7,25,0,0,6162,6163,7,5,0,0,6163,6164,7,15,0,0,6164,6165,7,14,0,0,6165,6166,7,3,0,0,6166,6167,7,6,0,0,6167,6168,7,15,0,0,6168,6169,7,19,0,0,6169,6170,7,12,0,0,6170,882,1,0,0,0,6171,6172,7,20,0,0,6172,6173,7,3,0,0,6173,6174,7,12,0,0,6174,6175,7,4,0,0,6175,6176,7,5,0,0,6176,6177,7,7,0,0,6177,6178,7,8,0,0,6178,884,1,0,0,0,6179,6180,7,20,0,0,6180,6181,7,3,0,0,6181,6182,7,11,0,0,6182,6183,7,20,0,0,6183,886,1,0,0,0,6184,6185,7,20,0,0,6185,6186,7,7,0,0,6186,6187,7,5,0,0,6187,6188,7,25,0,0,6188,888,1,0,0,0,6189,6190,7,20,0,0,6190,6191,7,15,0,0,6191,6192,7,11,0,0,6192,6193,7,6,0,0,6193,6194,7,19,0,0,6194,6195,7,8,0,0,6195,6196,7,10,0,0,6196,890,1,0,0,0,6197,6198,7,20,0,0,6198,6199,7,19,0,0,6199,6200,7,11,0,0,6200,6201,7,6,0,0,6201,892,1,0,0,0,6202,6203,7,20,0,0,6203,6204,7,19,0,0,6204,6205,7,11,0,0,6205,6206,7,6,0,0,6206,6207,7,11,0,0,6207,894,1,0,0,0,6208,6209,7,15,0,0,6209,6210,7,4,0,0,6210,6211,7,7,0,0,6211,6212,7,12,0,0,6212,6213,7,6,0,0,6213,6214,7,15,0,0,6214,6215,7,18,0,0,6215,6216,7,15,0,0,6216,6217,7,7,0,0,6217,6218,7,4,0,0,6218,896,1,0,0,0,6219,6220,7,15,0,0,6220,6221,7,22,0,0,6221,6222,7,12,0,0,6222,6223,7,19,0,0,6223,6224,7,8,0,0,6224,6225,7,7,0,0,6225,6226,5,95,0,0,6226,6227,7,11,0,0,6227,6228,7,7,0,0,6228,6229,7,8,0,0,6229,6230,7,24,0,0,6230,6231,7,7,0,0,6231,6232,7,8,0,0,6232,6233,5,95,0,0,6233,6234,7,15,0,0,6234,6235,7,4,0,0,6235,6236,7,11,0,0,6236,898,1,0,0,0,6237,6238,7,15,0,0,6238,6239,7,23,0,0,6239,6240,7,25,0,0,6240,6241,7,19,0,0,6241,6242,7,8,0,0,6242,6243,7,6,0,0,6243,900,1,0,0,0,6244,6245,7,15,0,0,6245,6246,7,12,0,0,6246,6247,7,14,0,0,6247,6248,7,8,0,0,6248,6249,7,7,0,0,6249,6250,7,23,0,0,6250,6251,7,7,0,0,6251,6252,7,12,0,0,6252,6253,7,6,0,0,6253,902,1,0,0,0,6254,6255,7,15,0,0,6255,6256,7,12,0,0,6256,6257,7,4,0,0,6257,6258,7,7,0,0,6258,6259,7,26,0,0,6259,6260,7,7,0,0,6260,6261,7,11,0,0,6261,904,1,0,0,0,6262,6263,7,15,0,0,6263,6264,7,12,0,0,6264,6265,7,15,0,0,6265,6266,7,6,0,0,6266,6267,7,15,0,0,6267,6268,7,3,0,0,6268,6269,7,5,0,0,6269,6270,5,95,0,0,6270,6271,7,11,0,0,6271,6272,7,15,0,0,6272,6273,7,13,0,0,6273,6274,7,7,0,0,6274,906,1,0,0,0,6275,6276,7,15,0,0,6276,6277,7,12,0,0,6277,6278,7,25,0,0,6278,6279,7,5,0,0,6279,6280,7,3,0,0,6280,6281,7,14,0,0,6281,6282,7,7,0,0,6282,908,1,0,0,0,6283,6284,7,15,0,0,6284,6285,7,12,0,0,6285,6286,7,11,0,0,6286,6287,7,7,0,0,6287,6288,7,8,0,0,6288,6289,7,6,0,0,6289,6290,5,95,0,0,6290,6291,7,23,0,0,6291,6292,7,7,0,0,6292,6293,7,6,0,0,6293,6294,7,20,0,0,6294,6295,7,19,0,0,6295,6296,7,4,0,0,6296,910,1,0,0,0,6297,6298,7,15,0,0,6298,6299,7,12,0,0,6299,6300,7,11,0,0,6300,6301,7,6,0,0,6301,6302,7,3,0,0,6302,6303,7,5,0,0,6303,6304,7,5,0,0,6304,912,1,0,0,0,6305,6306,7,15,0,0,6306,6307,7,12,0,0,6307,6308,7,11,0,0,6308,6309,7,6,0,0,6309,6310,7,3,0,0,6310,6311,7,12,0,0,6311,6312,7,14,0,0,6312,6313,7,7,0,0,6313,914,1,0,0,0,6314,6315,7,15,0,0,6315,6316,7,12,0,0,6316,6317,7,11,0,0,6317,6318,7,6,0,0,6318,6319,7,3,0,0,6319,6320,7,12,0,0,6320,6321,7,6,0,0,6321,916,1,0,0,0,6322,6323,7,15,0,0,6323,6324,7,12,0,0,6324,6325,7,24,0,0,6325,6326,7,15,0,0,6326,6327,7,11,0,0,6327,6328,7,15,0,0,6328,6329,7,16,0,0,6329,6330,7,5,0,0,6330,6331,7,7,0,0,6331,918,1,0,0,0,6332,6333,7,15,0,0,6333,6334,7,12,0,0,6334,6335,7,24,0,0,6335,6336,7,19,0,0,6336,6337,7,21,0,0,6337,6338,7,7,0,0,6338,6339,7,8,0,0,6339,920,1,0,0,0,6340,6341,7,15,0,0,6341,6342,7,19,0,0,6342,922,1,0,0,0,6343,6344,7,15,0,0,6344,6345,7,19,0,0,6345,6346,5,95,0,0,6346,6347,7,6,0,0,6347,6348,7,20,0,0,6348,6349,7,8,0,0,6349,6350,7,7,0,0,6350,6351,7,3,0,0,6351,6352,7,4,0,0,6352,924,1,0,0,0,6353,6354,7,15,0,0,6354,6355,7,25,0,0,6355,6356,7,14,0,0,6356,926,1,0,0,0,6357,6358,7,15,0,0,6358,6359,7,11,0,0,6359,6360,7,19,0,0,6360,6361,7,5,0,0,6361,6362,7,3,0,0,6362,6363,7,6,0,0,6363,6364,7,15,0,0,6364,6365,7,19,0,0,6365,6366,7,12,0,0,6366,928,1,0,0,0,6367,6368,7,15,0,0,6368,6369,7,11,0,0,6369,6370,7,11,0,0,6370,6371,7,17,0,0,6371,6372,7,7,0,0,6372,6373,7,8,0,0,6373,930,1,0,0,0,6374,6375,7,27,0,0,6375,6376,7,11,0,0,6376,6377,7,19,0,0,6377,6378,7,12,0,0,6378,932,1,0,0,0,6379,6380,7,21,0,0,6380,6381,7,7,0,0,6381,6382,7,10,0,0,6382,6383,5,95,0,0,6383,6384,7,16,0,0,6384,6385,7,5,0,0,6385,6386,7,19,0,0,6386,6387,7,14,0,0,6387,6388,7,21,0,0,6388,6389,5,95,0,0,6389,6390,7,11,0,0,6390,6391,7,15,0,0,6391,6392,7,13,0,0,6392,6393,7,7,0,0,6393,934,1,0,0,0,6394,6395,7,5,0,0,6395,6396,7,3,0,0,6396,6397,7,12,0,0,6397,6398,7,22,0,0,6398,6399,7,17,0,0,6399,6400,7,3,0,0,6400,6401,7,22,0,0,6401,6402,7,7,0,0,6402,936,1,0,0,0,6403,6404,7,5,0,0,6404,6405,7,3,0,0,6405,6406,7,11,0,0,6406,6407,7,6,0,0,6407,938,1,0,0,0,6408,6409,7,5,0,0,6409,6410,7,7,0,0,6410,6411,7,3,0,0,6411,6412,7,24,0,0,6412,6413,7,7,0,0,6413,6414,7,11,0,0,6414,940,1,0,0,0,6415,6416,7,5,0,0,6416,6417,7,7,0,0,6417,6418,7,11,0,0,6418,6419,7,11,0,0,6419,942,1,0,0,0,6420,6421,7,5,0,0,6421,6422,7,7,0,0,6422,6423,7,24,0,0,6423,6424,7,7,0,0,6424,6425,7,5,0,0,6425,944,1,0,0,0,6426,6427,7,5,0,0,6427,6428,7,15,0,0,6428,6429,7,11,0,0,6429,6430,7,6,0,0,6430,946,1,0,0,0,6431,6432,7,5,0,0,6432,6433,7,19,0,0,6433,6434,7,14,0,0,6434,6435,7,3,0,0,6435,6436,7,5,0,0,6436,948,1,0,0,0,6437,6438,7,5,0,0,6438,6439,7,19,0,0,6439,6440,7,22,0,0,6440,6441,7,18,0,0,6441,6442,7,15,0,0,6442,6443,7,5,0,0,6443,6444,7,7,0,0,6444,950,1,0,0,0,6445,6446,7,5,0,0,6446,6447,7,19,0,0,6447,6448,7,22,0,0,6448,6449,7,11,0,0,6449,952,1,0,0,0,6450,6451,7,23,0,0,6451,6452,7,3,0,0,6452,6453,7,11,0,0,6453,6454,7,6,0,0,6454,6455,7,7,0,0,6455,6456,7,8,0,0,6456,954,1,0,0,0,6457,6458,7,23,0,0,6458,6459,7,3,0,0,6459,6460,7,11,0,0,6460,6461,7,6,0,0,6461,6462,7,7,0,0,6462,6463,7,8,0,0,6463,6464,5,95,0,0,6464,6465,7,3,0,0,6465,6466,7,17,0,0,6466,6467,7,6,0,0,6467,6468,7,19,0,0,6468,6469,5,95,0,0,6469,6470,7,25,0,0,6470,6471,7,19,0,0,6471,6472,7,11,0,0,6472,6473,7,15,0,0,6473,6474,7,6,0,0,6474,6475,7,15,0,0,6475,6476,7,19,0,0,6476,6477,7,12,0,0,6477,956,1,0,0,0,6478,6479,7,23,0,0,6479,6480,7,3,0,0,6480,6481,7,11,0,0,6481,6482,7,6,0,0,6482,6483,7,7,0,0,6483,6484,7,8,0,0,6484,6485,5,95,0,0,6485,6486,7,14,0,0,6486,6487,7,19,0,0,6487,6488,7,12,0,0,6488,6489,7,12,0,0,6489,6490,7,7,0,0,6490,6491,7,14,0,0,6491,6492,7,6,0,0,6492,6493,5,95,0,0,6493,6494,7,8,0,0,6494,6495,7,7,0,0,6495,6496,7,6,0,0,6496,6497,7,8,0,0,6497,6498,7,10,0,0,6498,958,1,0,0,0,6499,6500,7,23,0,0,6500,6501,7,3,0,0,6501,6502,7,11,0,0,6502,6503,7,6,0,0,6503,6504,7,7,0,0,6504,6505,7,8,0,0,6505,6506,5,95,0,0,6506,6507,7,4,0,0,6507,6508,7,7,0,0,6508,6509,7,5,0,0,6509,6510,7,3,0,0,6510,6511,7,10,0,0,6511,960,1,0,0,0,6512,6513,7,23,0,0,6513,6514,7,3,0,0,6514,6515,7,11,0,0,6515,6516,7,6,0,0,6516,6517,7,7,0,0,6517,6518,7,8,0,0,6518,6519,5,95,0,0,6519,6520,7,20,0,0,6520,6521,7,7,0,0,6521,6522,7,3,0,0,6522,6523,7,8,0,0,6523,6524,7,6,0,0,6524,6525,7,16,0,0,6525,6526,7,7,0,0,6526,6527,7,3,0,0,6527,6528,7,6,0,0,6528,6529,5,95,0,0,6529,6530,7,25,0,0,6530,6531,7,7,0,0,6531,6532,7,8,0,0,6532,6533,7,15,0,0,6533,6534,7,19,0,0,6534,6535,7,4,0,0,6535,962,1,0,0,0,6536,6537,7,23,0,0,6537,6538,7,3,0,0,6538,6539,7,11,0,0,6539,6540,7,6,0,0,6540,6541,7,7,0,0,6541,6542,7,8,0,0,6542,6543,5,95,0,0,6543,6544,7,20,0,0,6544,6545,7,19,0,0,6545,6546,7,11,0,0,6546,6547,7,6,0,0,6547,964,1,0,0,0,6548,6549,7,23,0,0,6549,6550,7,3,0,0,6550,6551,7,11,0,0,6551,6552,7,6,0,0,6552,6553,7,7,0,0,6553,6554,7,8,0,0,6554,6555,5,95,0,0,6555,6556,7,5,0,0,6556,6557,7,19,0,0,6557,6558,7,22,0,0,6558,6559,5,95,0,0,6559,6560,7,18,0,0,6560,6561,7,15,0,0,6561,6562,7,5,0,0,6562,6563,7,7,0,0,6563,966,1,0,0,0,6564,6565,7,23,0,0,6565,6566,7,3,0,0,6566,6567,7,11,0,0,6567,6568,7,6,0,0,6568,6569,7,7,0,0,6569,6570,7,8,0,0,6570,6571,5,95,0,0,6571,6572,7,5,0,0,6572,6573,7,19,0,0,6573,6574,7,22,0,0,6574,6575,5,95,0,0,6575,6576,7,25,0,0,6576,6577,7,19,0,0,6577,6578,7,11,0,0,6578,968,1,0,0,0,6579,6580,7,23,0,0,6580,6581,7,3,0,0,6581,6582,7,11,0,0,6582,6583,7,6,0,0,6583,6584,7,7,0,0,6584,6585,7,8,0,0,6585,6586,5,95,0,0,6586,6587,7,25,0,0,6587,6588,7,3,0,0,6588,6589,7,11,0,0,6589,6590,7,11,0,0,6590,6591,7,9,0,0,6591,6592,7,19,0,0,6592,6593,7,8,0,0,6593,6594,7,4,0,0,6594,970,1,0,0,0,6595,6596,7,23,0,0,6596,6597,7,3,0,0,6597,6598,7,11,0,0,6598,6599,7,6,0,0,6599,6600,7,7,0,0,6600,6601,7,8,0,0,6601,6602,5,95,0,0,6602,6603,7,25,0,0,6603,6604,7,19,0,0,6604,6605,7,8,0,0,6605,6606,7,6,0,0,6606,972,1,0,0,0,6607,6608,7,23,0,0,6608,6609,7,3,0,0,6609,6610,7,11,0,0,6610,6611,7,6,0,0,6611,6612,7,7,0,0,6612,6613,7,8,0,0,6613,6614,5,95,0,0,6614,6615,7,8,0,0,6615,6616,7,7,0,0,6616,6617,7,6,0,0,6617,6618,7,8,0,0,6618,6619,7,10,0,0,6619,6620,5,95,0,0,6620,6621,7,14,0,0,6621,6622,7,19,0,0,6622,6623,7,17,0,0,6623,6624,7,12,0,0,6624,6625,7,6,0,0,6625,974,1,0,0,0,6626,6627,7,23,0,0,6627,6628,7,3,0,0,6628,6629,7,11,0,0,6629,6630,7,6,0,0,6630,6631,7,7,0,0,6631,6632,7,8,0,0,6632,6633,5,95,0,0,6633,6634,7,11,0,0,6634,6635,7,11,0,0,6635,6636,7,5,0,0,6636,976,1,0,0,0,6637,6638,7,23,0,0,6638,6639,7,3,0,0,6639,6640,7,11,0,0,6640,6641,7,6,0,0,6641,6642,7,7,0,0,6642,6643,7,8,0,0,6643,6644,5,95,0,0,6644,6645,7,11,0,0,6645,6646,7,11,0,0,6646,6647,7,5,0,0,6647,6648,5,95,0,0,6648,6649,7,14,0,0,6649,6650,7,3,0,0,6650,978,1,0,0,0,6651,6652,7,23,0,0,6652,6653,7,3,0,0,6653,6654,7,11,0,0,6654,6655,7,6,0,0,6655,6656,7,7,0,0,6656,6657,7,8,0,0,6657,6658,5,95,0,0,6658,6659,7,11,0,0,6659,6660,7,11,0,0,6660,6661,7,5,0,0,6661,6662,5,95,0,0,6662,6663,7,14,0,0,6663,6664,7,3,0,0,6664,6665,7,25,0,0,6665,6666,7,3,0,0,6666,6667,7,6,0,0,6667,6668,7,20,0,0,6668,980,1,0,0,0,6669,6670,7,23,0,0,6670,6671,7,3,0,0,6671,6672,7,11,0,0,6672,6673,7,6,0,0,6673,6674,7,7,0,0,6674,6675,7,8,0,0,6675,6676,5,95,0,0,6676,6677,7,11,0,0,6677,6678,7,11,0,0,6678,6679,7,5,0,0,6679,6680,5,95,0,0,6680,6681,7,14,0,0,6681,6682,7,7,0,0,6682,6683,7,8,0,0,6683,6684,7,6,0,0,6684,982,1,0,0,0,6685,6686,7,23,0,0,6686,6687,7,3,0,0,6687,6688,7,11,0,0,6688,6689,7,6,0,0,6689,6690,7,7,0,0,6690,6691,7,8,0,0,6691,6692,5,95,0,0,6692,6693,7,11,0,0,6693,6694,7,11,0,0,6694,6695,7,5,0,0,6695,6696,5,95,0,0,6696,6697,7,14,0,0,6697,6698,7,15,0,0,6698,6699,7,25,0,0,6699,6700,7,20,0,0,6700,6701,7,7,0,0,6701,6702,7,8,0,0,6702,984,1,0,0,0,6703,6704,7,23,0,0,6704,6705,7,3,0,0,6705,6706,7,11,0,0,6706,6707,7,6,0,0,6707,6708,7,7,0,0,6708,6709,7,8,0,0,6709,6710,5,95,0,0,6710,6711,7,11,0,0,6711,6712,7,11,0,0,6712,6713,7,5,0,0,6713,6714,5,95,0,0,6714,6715,7,14,0,0,6715,6716,7,8,0,0,6716,6717,7,5,0,0,6717,986,1,0,0,0,6718,6719,7,23,0,0,6719,6720,7,3,0,0,6720,6721,7,11,0,0,6721,6722,7,6,0,0,6722,6723,7,7,0,0,6723,6724,7,8,0,0,6724,6725,5,95,0,0,6725,6726,7,11,0,0,6726,6727,7,11,0,0,6727,6728,7,5,0,0,6728,6729,5,95,0,0,6729,6730,7,14,0,0,6730,6731,7,8,0,0,6731,6732,7,5,0,0,6732,6733,7,25,0,0,6733,6734,7,3,0,0,6734,6735,7,6,0,0,6735,6736,7,20,0,0,6736,988,1,0,0,0,6737,6738,7,23,0,0,6738,6739,7,3,0,0,6739,6740,7,11,0,0,6740,6741,7,6,0,0,6741,6742,7,7,0,0,6742,6743,7,8,0,0,6743,6744,5,95,0,0,6744,6745,7,11,0,0,6745,6746,7,11,0,0,6746,6747,7,5,0,0,6747,6748,5,95,0,0,6748,6749,7,21,0,0,6749,6750,7,7,0,0,6750,6751,7,10,0,0,6751,990,1,0,0,0,6752,6753,7,23,0,0,6753,6754,7,3,0,0,6754,6755,7,11,0,0,6755,6756,7,6,0,0,6756,6757,7,7,0,0,6757,6758,7,8,0,0,6758,6759,5,95,0,0,6759,6760,7,6,0,0,6760,6761,7,5,0,0,6761,6762,7,11,0,0,6762,6763,5,95,0,0,6763,6764,7,24,0,0,6764,6765,7,7,0,0,6765,6766,7,8,0,0,6766,6767,7,11,0,0,6767,6768,7,15,0,0,6768,6769,7,19,0,0,6769,6770,7,12,0,0,6770,992,1,0,0,0,6771,6772,7,23,0,0,6772,6773,7,3,0,0,6773,6774,7,11,0,0,6774,6775,7,6,0,0,6775,6776,7,7,0,0,6776,6777,7,8,0,0,6777,6778,5,95,0,0,6778,6779,7,17,0,0,6779,6780,7,11,0,0,6780,6781,7,7,0,0,6781,6782,7,8,0,0,6782,994,1,0,0,0,6783,6784,7,23,0,0,6784,6785,7,3,0,0,6785,6786,7,26,0,0,6786,6787,5,95,0,0,6787,6788,7,14,0,0,6788,6789,7,19,0,0,6789,6790,7,12,0,0,6790,6791,7,12,0,0,6791,6792,7,7,0,0,6792,6793,7,14,0,0,6793,6794,7,6,0,0,6794,6795,7,15,0,0,6795,6796,7,19,0,0,6796,6797,7,12,0,0,6797,6798,7,11,0,0,6798,6799,5,95,0,0,6799,6800,7,25,0,0,6800,6801,7,7,0,0,6801,6802,7,8,0,0,6802,6803,5,95,0,0,6803,6804,7,20,0,0,6804,6805,7,19,0,0,6805,6806,7,17,0,0,6806,6807,7,8,0,0,6807,996,1,0,0,0,6808,6809,7,23,0,0,6809,6810,7,3,0,0,6810,6811,7,26,0,0,6811,6812,5,95,0,0,6812,6813,7,28,0,0,6813,6814,7,17,0,0,6814,6815,7,7,0,0,6815,6816,7,8,0,0,6816,6817,7,15,0,0,6817,6818,7,7,0,0,6818,6819,7,11,0,0,6819,6820,5,95,0,0,6820,6821,7,25,0,0,6821,6822,7,7,0,0,6822,6823,7,8,0,0,6823,6824,5,95,0,0,6824,6825,7,20,0,0,6825,6826,7,19,0,0,6826,6827,7,17,0,0,6827,6828,7,8,0,0,6828,998,1,0,0,0,6829,6830,7,23,0,0,6830,6831,7,3,0,0,6831,6832,7,26,0,0,6832,6833,5,95,0,0,6833,6834,7,8,0,0,6834,6835,7,19,0,0,6835,6836,7,9,0,0,6836,6837,7,11,0,0,6837,1e3,1,0,0,0,6838,6839,7,23,0,0,6839,6840,7,3,0,0,6840,6841,7,26,0,0,6841,6842,5,95,0,0,6842,6843,7,11,0,0,6843,6844,7,15,0,0,6844,6845,7,13,0,0,6845,6846,7,7,0,0,6846,1002,1,0,0,0,6847,6848,7,23,0,0,6848,6849,7,3,0,0,6849,6850,7,26,0,0,6850,6851,5,95,0,0,6851,6852,7,17,0,0,6852,6853,7,25,0,0,6853,6854,7,4,0,0,6854,6855,7,3,0,0,6855,6856,7,6,0,0,6856,6857,7,7,0,0,6857,6858,7,11,0,0,6858,6859,5,95,0,0,6859,6860,7,25,0,0,6860,6861,7,7,0,0,6861,6862,7,8,0,0,6862,6863,5,95,0,0,6863,6864,7,20,0,0,6864,6865,7,19,0,0,6865,6866,7,17,0,0,6866,6867,7,8,0,0,6867,1004,1,0,0,0,6868,6869,7,23,0,0,6869,6870,7,3,0,0,6870,6871,7,26,0,0,6871,6872,5,95,0,0,6872,6873,7,17,0,0,6873,6874,7,11,0,0,6874,6875,7,7,0,0,6875,6876,7,8,0,0,6876,6877,5,95,0,0,6877,6878,7,14,0,0,6878,6879,7,19,0,0,6879,6880,7,12,0,0,6880,6881,7,12,0,0,6881,6882,7,7,0,0,6882,6883,7,14,0,0,6883,6884,7,6,0,0,6884,6885,7,15,0,0,6885,6886,7,19,0,0,6886,6887,7,12,0,0,6887,6888,7,11,0,0,6888,1006,1,0,0,0,6889,6890,7,23,0,0,6890,6891,7,7,0,0,6891,6892,7,4,0,0,6892,6893,7,15,0,0,6893,6894,7,17,0,0,6894,6895,7,23,0,0,6895,1008,1,0,0,0,6896,6897,7,23,0,0,6897,6898,7,7,0,0,6898,6899,7,23,0,0,6899,6900,7,16,0,0,6900,6901,7,7,0,0,6901,6902,7,8,0,0,6902,1010,1,0,0,0,6903,6904,7,23,0,0,6904,6905,7,7,0,0,6905,6906,7,8,0,0,6906,6907,7,22,0,0,6907,6908,7,7,0,0,6908,1012,1,0,0,0,6909,6910,7,23,0,0,6910,6911,7,7,0,0,6911,6912,7,11,0,0,6912,6913,7,11,0,0,6913,6914,7,3,0,0,6914,6915,7,22,0,0,6915,6916,7,7,0,0,6916,6917,5,95,0,0,6917,6918,7,6,0,0,6918,6919,7,7,0,0,6919,6920,7,26,0,0,6920,6921,7,6,0,0,6921,1014,1,0,0,0,6922,6923,7,23,0,0,6923,6924,7,15,0,0,6924,6925,7,4,0,0,6925,1016,1,0,0,0,6926,6927,7,23,0,0,6927,6928,7,15,0,0,6928,6929,7,22,0,0,6929,6930,7,8,0,0,6930,6931,7,3,0,0,6931,6932,7,6,0,0,6932,6933,7,7,0,0,6933,1018,1,0,0,0,6934,6935,7,23,0,0,6935,6936,7,15,0,0,6936,6937,7,12,0,0,6937,6938,5,95,0,0,6938,6939,7,8,0,0,6939,6940,7,19,0,0,6940,6941,7,9,0,0,6941,6942,7,11,0,0,6942,1020,1,0,0,0,6943,6944,7,23,0,0,6944,6945,7,19,0,0,6945,6946,7,4,0,0,6946,6947,7,7,0,0,6947,1022,1,0,0,0,6948,6949,7,23,0,0,6949,6950,7,19,0,0,6950,6951,7,4,0,0,6951,6952,7,15,0,0,6952,6953,7,18,0,0,6953,6954,7,10,0,0,6954,1024,1,0,0,0,6955,6956,7,23,0,0,6956,6957,7,17,0,0,6957,6958,7,6,0,0,6958,6959,7,7,0,0,6959,6960,7,26,0,0,6960,1026,1,0,0,0,6961,6962,7,23,0,0,6962,6963,7,10,0,0,6963,6964,7,11,0,0,6964,6965,7,28,0,0,6965,6966,7,5,0,0,6966,1028,1,0,0,0,6967,6968,7,23,0,0,6968,6969,7,10,0,0,6969,6970,7,11,0,0,6970,6971,7,28,0,0,6971,6972,7,5,0,0,6972,6973,5,95,0,0,6973,6974,7,7,0,0,6974,6975,7,8,0,0,6975,6976,7,8,0,0,6976,6977,7,12,0,0,6977,6978,7,19,0,0,6978,1030,1,0,0,0,6979,6980,7,12,0,0,6980,6981,7,3,0,0,6981,6982,7,23,0,0,6982,6983,7,7,0,0,6983,1032,1,0,0,0,6984,6985,7,12,0,0,6985,6986,7,3,0,0,6986,6987,7,23,0,0,6987,6988,7,7,0,0,6988,6989,7,11,0,0,6989,1034,1,0,0,0,6990,6991,7,12,0,0,6991,6992,7,14,0,0,6992,6993,7,20,0,0,6993,6994,7,3,0,0,6994,6995,7,8,0,0,6995,1036,1,0,0,0,6996,6997,7,12,0,0,6997,6998,7,7,0,0,6998,6999,7,24,0,0,6999,7e3,7,7,0,0,7e3,7001,7,8,0,0,7001,1038,1,0,0,0,7002,7003,7,12,0,0,7003,7004,7,7,0,0,7004,7005,7,26,0,0,7005,7006,7,6,0,0,7006,1040,1,0,0,0,7007,7008,7,12,0,0,7008,7009,7,19,0,0,7009,1042,1,0,0,0,7010,7011,7,12,0,0,7011,7012,7,19,0,0,7012,7013,7,14,0,0,7013,7014,7,3,0,0,7014,7015,7,14,0,0,7015,7016,7,20,0,0,7016,7017,7,7,0,0,7017,1044,1,0,0,0,7018,7019,7,12,0,0,7019,7020,7,19,0,0,7020,7021,7,14,0,0,7021,7022,7,19,0,0,7022,7023,7,25,0,0,7023,7024,7,10,0,0,7024,1046,1,0,0,0,7025,7026,7,12,0,0,7026,7027,7,19,0,0,7027,7028,7,14,0,0,7028,7029,7,10,0,0,7029,7030,7,14,0,0,7030,7031,7,5,0,0,7031,7032,7,7,0,0,7032,1048,1,0,0,0,7033,7034,7,12,0,0,7034,7035,7,19,0,0,7035,7036,7,23,0,0,7036,7037,7,3,0,0,7037,7038,7,26,0,0,7038,7039,7,24,0,0,7039,7040,7,3,0,0,7040,7041,7,5,0,0,7041,7042,7,17,0,0,7042,7043,7,7,0,0,7043,1050,1,0,0,0,7044,7045,7,12,0,0,7045,7046,7,19,0,0,7046,7047,7,23,0,0,7047,7048,7,15,0,0,7048,7049,7,12,0,0,7049,7050,7,24,0,0,7050,7051,7,3,0,0,7051,7052,7,5,0,0,7052,7053,7,17,0,0,7053,7054,7,7,0,0,7054,1052,1,0,0,0,7055,7056,7,12,0,0,7056,7057,7,19,0,0,7057,7058,7,9,0,0,7058,7059,7,3,0,0,7059,7060,7,15,0,0,7060,7061,7,6,0,0,7061,1054,1,0,0,0,7062,7063,7,12,0,0,7063,7064,7,19,0,0,7064,7065,7,4,0,0,7065,7066,7,7,0,0,7066,7067,7,22,0,0,7067,7068,7,8,0,0,7068,7069,7,19,0,0,7069,7070,7,17,0,0,7070,7071,7,25,0,0,7071,1056,1,0,0,0,7072,7073,7,12,0,0,7073,7074,7,19,0,0,7074,7075,7,12,0,0,7075,7076,7,7,0,0,7076,1058,1,0,0,0,7077,7078,7,19,0,0,7078,7079,7,4,0,0,7079,7080,7,16,0,0,7080,7081,7,14,0,0,7081,1060,1,0,0,0,7082,7083,7,19,0,0,7083,7084,7,18,0,0,7084,7085,7,18,0,0,7085,7086,7,5,0,0,7086,7087,7,15,0,0,7087,7088,7,12,0,0,7088,7089,7,7,0,0,7089,1062,1,0,0,0,7090,7091,7,19,0,0,7091,7092,7,18,0,0,7092,7093,7,18,0,0,7093,7094,7,11,0,0,7094,7095,7,7,0,0,7095,7096,7,6,0,0,7096,1064,1,0,0,0,7097,7098,7,19,0,0,7098,7099,7,18,0,0,7099,1066,1,0,0,0,7100,7101,7,19,0,0,7101,7102,7,27,0,0,7102,1068,1,0,0,0,7103,7104,7,19,0,0,7104,7105,7,5,0,0,7105,7106,7,4,0,0,7106,7107,5,95,0,0,7107,7108,7,25,0,0,7108,7109,7,3,0,0,7109,7110,7,11,0,0,7110,7111,7,11,0,0,7111,7112,7,9,0,0,7112,7113,7,19,0,0,7113,7114,7,8,0,0,7114,7115,7,4,0,0,7115,1070,1,0,0,0,7116,7117,7,19,0,0,7117,7118,7,12,0,0,7118,7119,7,7,0,0,7119,1072,1,0,0,0,7120,7121,7,19,0,0,7121,7122,7,12,0,0,7122,7123,7,5,0,0,7123,7124,7,15,0,0,7124,7125,7,12,0,0,7125,7126,7,7,0,0,7126,1074,1,0,0,0,7127,7128,7,19,0,0,7128,7129,7,12,0,0,7129,7130,7,5,0,0,7130,7131,7,10,0,0,7131,1076,1,0,0,0,7132,7133,7,19,0,0,7133,7134,7,25,0,0,7134,7135,7,7,0,0,7135,7136,7,12,0,0,7136,1078,1,0,0,0,7137,7138,7,19,0,0,7138,7139,7,25,0,0,7139,7140,7,6,0,0,7140,7141,7,15,0,0,7141,7142,7,23,0,0,7142,7143,7,15,0,0,7143,7144,7,13,0,0,7144,7145,7,7,0,0,7145,7146,7,8,0,0,7146,7147,5,95,0,0,7147,7148,7,14,0,0,7148,7149,7,19,0,0,7149,7150,7,11,0,0,7150,7151,7,6,0,0,7151,7152,7,11,0,0,7152,1080,1,0,0,0,7153,7154,7,19,0,0,7154,7155,7,25,0,0,7155,7156,7,6,0,0,7156,7157,7,15,0,0,7157,7158,7,19,0,0,7158,7159,7,12,0,0,7159,7160,7,11,0,0,7160,1082,1,0,0,0,7161,7162,7,19,0,0,7162,7163,7,9,0,0,7163,7164,7,12,0,0,7164,7165,7,7,0,0,7165,7166,7,8,0,0,7166,1084,1,0,0,0,7167,7168,7,25,0,0,7168,7169,7,3,0,0,7169,7170,7,14,0,0,7170,7171,7,21,0,0,7171,7172,5,95,0,0,7172,7173,7,21,0,0,7173,7174,7,7,0,0,7174,7175,7,10,0,0,7175,7176,7,11,0,0,7176,1086,1,0,0,0,7177,7178,7,25,0,0,7178,7179,7,3,0,0,7179,7180,7,22,0,0,7180,7181,7,7,0,0,7181,1088,1,0,0,0,7182,7183,7,25,0,0,7183,7184,7,3,0,0,7184,7185,7,22,0,0,7185,7186,7,7,0,0,7186,7187,5,95,0,0,7187,7188,7,14,0,0,7188,7189,7,19,0,0,7189,7190,7,23,0,0,7190,7191,7,25,0,0,7191,7192,7,8,0,0,7192,7193,7,7,0,0,7193,7194,7,11,0,0,7194,7195,7,11,0,0,7195,7196,7,7,0,0,7196,7197,7,4,0,0,7197,1090,1,0,0,0,7198,7199,7,25,0,0,7199,7200,7,3,0,0,7200,7201,7,22,0,0,7201,7202,7,7,0,0,7202,7203,5,95,0,0,7203,7204,7,14,0,0,7204,7205,7,19,0,0,7205,7206,7,23,0,0,7206,7207,7,25,0,0,7207,7208,7,8,0,0,7208,7209,7,7,0,0,7209,7210,7,11,0,0,7210,7211,7,11,0,0,7211,7212,7,15,0,0,7212,7213,7,19,0,0,7213,7214,7,12,0,0,7214,7215,5,95,0,0,7215,7216,7,5,0,0,7216,7217,7,7,0,0,7217,7218,7,24,0,0,7218,7219,7,7,0,0,7219,7220,7,5,0,0,7220,1092,1,0,0,0,7221,7222,7,25,0,0,7222,7223,7,3,0,0,7223,7224,7,8,0,0,7224,7225,7,11,0,0,7225,7226,7,7,0,0,7226,7227,7,8,0,0,7227,1094,1,0,0,0,7228,7229,7,25,0,0,7229,7230,7,3,0,0,7230,7231,7,8,0,0,7231,7232,7,6,0,0,7232,7233,7,15,0,0,7233,7234,7,3,0,0,7234,7235,7,5,0,0,7235,1096,1,0,0,0,7236,7237,7,25,0,0,7237,7238,7,3,0,0,7238,7239,7,8,0,0,7239,7240,7,6,0,0,7240,7241,7,15,0,0,7241,7242,7,6,0,0,7242,7243,7,15,0,0,7243,7244,7,19,0,0,7244,7245,7,12,0,0,7245,7246,7,15,0,0,7246,7247,7,12,0,0,7247,7248,7,22,0,0,7248,1098,1,0,0,0,7249,7250,7,25,0,0,7250,7251,7,3,0,0,7251,7252,7,8,0,0,7252,7253,7,6,0,0,7253,7254,7,15,0,0,7254,7255,7,6,0,0,7255,7256,7,15,0,0,7256,7257,7,19,0,0,7257,7258,7,12,0,0,7258,7259,7,11,0,0,7259,1100,1,0,0,0,7260,7261,7,25,0,0,7261,7262,7,3,0,0,7262,7263,7,11,0,0,7263,7264,7,11,0,0,7264,7265,7,9,0,0,7265,7266,7,19,0,0,7266,7267,7,8,0,0,7267,7268,7,4,0,0,7268,1102,1,0,0,0,7269,7270,7,25,0,0,7270,7271,7,3,0,0,7271,7272,7,11,0,0,7272,7273,7,11,0,0,7273,7274,7,9,0,0,7274,7275,7,19,0,0,7275,7276,7,8,0,0,7276,7277,7,4,0,0,7277,7278,5,95,0,0,7278,7279,7,5,0,0,7279,7280,7,19,0,0,7280,7281,7,14,0,0,7281,7282,7,21,0,0,7282,7283,5,95,0,0,7283,7284,7,6,0,0,7284,7285,7,15,0,0,7285,7286,7,23,0,0,7286,7287,7,7,0,0,7287,1104,1,0,0,0,7288,7289,7,25,0,0,7289,7290,7,20,0,0,7290,7291,7,3,0,0,7291,7292,7,11,0,0,7292,7293,7,7,0,0,7293,1106,1,0,0,0,7294,7295,7,25,0,0,7295,7296,7,5,0,0,7296,7297,7,17,0,0,7297,7298,7,22,0,0,7298,7299,7,15,0,0,7299,7300,7,12,0,0,7300,1108,1,0,0,0,7301,7302,7,25,0,0,7302,7303,7,5,0,0,7303,7304,7,17,0,0,7304,7305,7,22,0,0,7305,7306,7,15,0,0,7306,7307,7,12,0,0,7307,7308,5,95,0,0,7308,7309,7,4,0,0,7309,7310,7,15,0,0,7310,7311,7,8,0,0,7311,1110,1,0,0,0,7312,7313,7,25,0,0,7313,7314,7,5,0,0,7314,7315,7,17,0,0,7315,7316,7,22,0,0,7316,7317,7,15,0,0,7317,7318,7,12,0,0,7318,7319,7,11,0,0,7319,1112,1,0,0,0,7320,7321,7,25,0,0,7321,7322,7,19,0,0,7322,7323,7,8,0,0,7323,7324,7,6,0,0,7324,1114,1,0,0,0,7325,7326,7,25,0,0,7326,7327,7,8,0,0,7327,7328,7,7,0,0,7328,7329,7,14,0,0,7329,7330,7,7,0,0,7330,7331,7,4,0,0,7331,7332,7,7,0,0,7332,7333,7,11,0,0,7333,1116,1,0,0,0,7334,7335,7,25,0,0,7335,7336,7,8,0,0,7336,7337,7,7,0,0,7337,7338,7,14,0,0,7338,7339,7,7,0,0,7339,7340,7,4,0,0,7340,7341,7,15,0,0,7341,7342,7,12,0,0,7342,7343,7,22,0,0,7343,1118,1,0,0,0,7344,7345,7,25,0,0,7345,7346,7,8,0,0,7346,7347,7,7,0,0,7347,7348,7,25,0,0,7348,7349,7,3,0,0,7349,7350,7,8,0,0,7350,7351,7,7,0,0,7351,1120,1,0,0,0,7352,7353,7,25,0,0,7353,7354,7,8,0,0,7354,7355,7,7,0,0,7355,7356,7,11,0,0,7356,7357,7,7,0,0,7357,7358,7,8,0,0,7358,7359,7,24,0,0,7359,7360,7,7,0,0,7360,1122,1,0,0,0,7361,7362,7,25,0,0,7362,7363,7,8,0,0,7363,7364,7,7,0,0,7364,7365,7,24,0,0,7365,1124,1,0,0,0,7366,7367,7,25,0,0,7367,7368,7,8,0,0,7368,7369,7,19,0,0,7369,7370,7,14,0,0,7370,7371,7,7,0,0,7371,7372,7,11,0,0,7372,7373,7,11,0,0,7373,7374,7,5,0,0,7374,7375,7,15,0,0,7375,7376,7,11,0,0,7376,7377,7,6,0,0,7377,1126,1,0,0,0,7378,7379,7,25,0,0,7379,7380,7,8,0,0,7380,7381,7,19,0,0,7381,7382,7,18,0,0,7382,7383,7,15,0,0,7383,7384,7,5,0,0,7384,7385,7,7,0,0,7385,1128,1,0,0,0,7386,7387,7,25,0,0,7387,7388,7,8,0,0,7388,7389,7,19,0,0,7389,7390,7,18,0,0,7390,7391,7,15,0,0,7391,7392,7,5,0,0,7392,7393,7,7,0,0,7393,7394,7,11,0,0,7394,1130,1,0,0,0,7395,7396,7,25,0,0,7396,7397,7,8,0,0,7397,7398,7,19,0,0,7398,7399,7,26,0,0,7399,7400,7,10,0,0,7400,1132,1,0,0,0,7401,7402,7,28,0,0,7402,7403,7,17,0,0,7403,7404,7,7,0,0,7404,7405,7,8,0,0,7405,7406,7,10,0,0,7406,1134,1,0,0,0,7407,7408,7,28,0,0,7408,7409,7,17,0,0,7409,7410,7,15,0,0,7410,7411,7,14,0,0,7411,7412,7,21,0,0,7412,1136,1,0,0,0,7413,7414,7,8,0,0,7414,7415,7,7,0,0,7415,7416,7,16,0,0,7416,7417,7,17,0,0,7417,7418,7,15,0,0,7418,7419,7,5,0,0,7419,7420,7,4,0,0,7420,1138,1,0,0,0,7421,7422,7,8,0,0,7422,7423,7,7,0,0,7423,7424,7,14,0,0,7424,7425,7,19,0,0,7425,7426,7,24,0,0,7426,7427,7,7,0,0,7427,7428,7,8,0,0,7428,1140,1,0,0,0,7429,7430,7,8,0,0,7430,7431,7,7,0,0,7431,7432,7,14,0,0,7432,7433,7,17,0,0,7433,7434,7,8,0,0,7434,7435,7,11,0,0,7435,7436,7,15,0,0,7436,7437,7,24,0,0,7437,7438,7,7,0,0,7438,1142,1,0,0,0,7439,7440,7,8,0,0,7440,7441,7,7,0,0,7441,7442,7,4,0,0,7442,7443,7,19,0,0,7443,7444,5,95,0,0,7444,7445,7,16,0,0,7445,7446,7,17,0,0,7446,7447,7,18,0,0,7447,7448,7,18,0,0,7448,7449,7,7,0,0,7449,7450,7,8,0,0,7450,7451,5,95,0,0,7451,7452,7,11,0,0,7452,7453,7,15,0,0,7453,7454,7,13,0,0,7454,7455,7,7,0,0,7455,1144,1,0,0,0,7456,7457,7,8,0,0,7457,7458,7,7,0,0,7458,7459,7,4,0,0,7459,7460,7,17,0,0,7460,7461,7,12,0,0,7461,7462,7,4,0,0,7462,7463,7,3,0,0,7463,7464,7,12,0,0,7464,7465,7,6,0,0,7465,1146,1,0,0,0,7466,7467,7,8,0,0,7467,7468,7,7,0,0,7468,7469,7,5,0,0,7469,7470,7,3,0,0,7470,7471,7,10,0,0,7471,1148,1,0,0,0,7472,7473,7,8,0,0,7473,7474,7,7,0,0,7474,7475,7,5,0,0,7475,7476,7,3,0,0,7476,7477,7,10,0,0,7477,7478,5,95,0,0,7478,7479,7,5,0,0,7479,7480,7,19,0,0,7480,7481,7,22,0,0,7481,7482,5,95,0,0,7482,7483,7,18,0,0,7483,7484,7,15,0,0,7484,7485,7,5,0,0,7485,7486,7,7,0,0,7486,1150,1,0,0,0,7487,7488,7,8,0,0,7488,7489,7,7,0,0,7489,7490,7,5,0,0,7490,7491,7,3,0,0,7491,7492,7,10,0,0,7492,7493,5,95,0,0,7493,7494,7,5,0,0,7494,7495,7,19,0,0,7495,7496,7,22,0,0,7496,7497,5,95,0,0,7497,7498,7,25,0,0,7498,7499,7,19,0,0,7499,7500,7,11,0,0,7500,1152,1,0,0,0,7501,7502,7,8,0,0,7502,7503,7,7,0,0,7503,7504,7,5,0,0,7504,7505,7,3,0,0,7505,7506,7,10,0,0,7506,7507,7,5,0,0,7507,7508,7,19,0,0,7508,7509,7,22,0,0,7509,1154,1,0,0,0,7510,7511,7,8,0,0,7511,7512,7,7,0,0,7512,7513,7,23,0,0,7513,7514,7,19,0,0,7514,7515,7,24,0,0,7515,7516,7,7,0,0,7516,1156,1,0,0,0,7517,7518,7,8,0,0,7518,7519,7,7,0,0,7519,7520,7,19,0,0,7520,7521,7,8,0,0,7521,7522,7,22,0,0,7522,7523,7,3,0,0,7523,7524,7,12,0,0,7524,7525,7,15,0,0,7525,7526,7,13,0,0,7526,7527,7,7,0,0,7527,1158,1,0,0,0,7528,7529,7,8,0,0,7529,7530,7,7,0,0,7530,7531,7,25,0,0,7531,7532,7,3,0,0,7532,7533,7,15,0,0,7533,7534,7,8,0,0,7534,1160,1,0,0,0,7535,7536,7,8,0,0,7536,7537,7,7,0,0,7537,7538,7,25,0,0,7538,7539,7,5,0,0,7539,7540,7,15,0,0,7540,7541,7,14,0,0,7541,7542,7,3,0,0,7542,7543,7,6,0,0,7543,7544,7,7,0,0,7544,7545,5,95,0,0,7545,7546,7,4,0,0,7546,7547,7,19,0,0,7547,7548,5,95,0,0,7548,7549,7,4,0,0,7549,7550,7,16,0,0,7550,1162,1,0,0,0,7551,7552,7,8,0,0,7552,7553,7,7,0,0,7553,7554,7,25,0,0,7554,7555,7,5,0,0,7555,7556,7,15,0,0,7556,7557,7,14,0,0,7557,7558,7,3,0,0,7558,7559,7,6,0,0,7559,7560,7,7,0,0,7560,7561,5,95,0,0,7561,7562,7,4,0,0,7562,7563,7,19,0,0,7563,7564,5,95,0,0,7564,7565,7,6,0,0,7565,7566,7,3,0,0,7566,7567,7,16,0,0,7567,7568,7,5,0,0,7568,7569,7,7,0,0,7569,1164,1,0,0,0,7570,7571,7,8,0,0,7571,7572,7,7,0,0,7572,7573,7,25,0,0,7573,7574,7,5,0,0,7574,7575,7,15,0,0,7575,7576,7,14,0,0,7576,7577,7,3,0,0,7577,7578,7,6,0,0,7578,7579,7,7,0,0,7579,7580,5,95,0,0,7580,7581,7,15,0,0,7581,7582,7,22,0,0,7582,7583,7,12,0,0,7583,7584,7,19,0,0,7584,7585,7,8,0,0,7585,7586,7,7,0,0,7586,7587,5,95,0,0,7587,7588,7,4,0,0,7588,7589,7,16,0,0,7589,1166,1,0,0,0,7590,7591,7,8,0,0,7591,7592,7,7,0,0,7592,7593,7,25,0,0,7593,7594,7,5,0,0,7594,7595,7,15,0,0,7595,7596,7,14,0,0,7596,7597,7,3,0,0,7597,7598,7,6,0,0,7598,7599,7,7,0,0,7599,7600,5,95,0,0,7600,7601,7,15,0,0,7601,7602,7,22,0,0,7602,7603,7,12,0,0,7603,7604,7,19,0,0,7604,7605,7,8,0,0,7605,7606,7,7,0,0,7606,7607,5,95,0,0,7607,7608,7,6,0,0,7608,7609,7,3,0,0,7609,7610,7,16,0,0,7610,7611,7,5,0,0,7611,7612,7,7,0,0,7612,1168,1,0,0,0,7613,7614,7,8,0,0,7614,7615,7,7,0,0,7615,7616,7,25,0,0,7616,7617,7,5,0,0,7617,7618,7,15,0,0,7618,7619,7,14,0,0,7619,7620,7,3,0,0,7620,7621,7,6,0,0,7621,7622,7,7,0,0,7622,7623,5,95,0,0,7623,7624,7,8,0,0,7624,7625,7,7,0,0,7625,7626,7,9,0,0,7626,7627,7,8,0,0,7627,7628,7,15,0,0,7628,7629,7,6,0,0,7629,7630,7,7,0,0,7630,7631,5,95,0,0,7631,7632,7,4,0,0,7632,7633,7,16,0,0,7633,1170,1,0,0,0,7634,7635,7,8,0,0,7635,7636,7,7,0,0,7636,7637,7,25,0,0,7637,7638,7,5,0,0,7638,7639,7,15,0,0,7639,7640,7,14,0,0,7640,7641,7,3,0,0,7641,7642,7,6,0,0,7642,7643,7,7,0,0,7643,7644,5,95,0,0,7644,7645,7,9,0,0,7645,7646,7,15,0,0,7646,7647,7,5,0,0,7647,7648,7,4,0,0,7648,7649,5,95,0,0,7649,7650,7,4,0,0,7650,7651,7,19,0,0,7651,7652,5,95,0,0,7652,7653,7,6,0,0,7653,7654,7,3,0,0,7654,7655,7,16,0,0,7655,7656,7,5,0,0,7656,7657,7,7,0,0,7657,1172,1,0,0,0,7658,7659,7,8,0,0,7659,7660,7,7,0,0,7660,7661,7,25,0,0,7661,7662,7,5,0,0,7662,7663,7,15,0,0,7663,7664,7,14,0,0,7664,7665,7,3,0,0,7665,7666,7,6,0,0,7666,7667,7,7,0,0,7667,7668,5,95,0,0,7668,7669,7,9,0,0,7669,7670,7,15,0,0,7670,7671,7,5,0,0,7671,7672,7,4,0,0,7672,7673,5,95,0,0,7673,7674,7,15,0,0,7674,7675,7,22,0,0,7675,7676,7,12,0,0,7676,7677,7,19,0,0,7677,7678,7,8,0,0,7678,7679,7,7,0,0,7679,7680,5,95,0,0,7680,7681,7,6,0,0,7681,7682,7,3,0,0,7682,7683,7,16,0,0,7683,7684,7,5,0,0,7684,7685,7,7,0,0,7685,1174,1,0,0,0,7686,7687,7,8,0,0,7687,7688,7,7,0,0,7688,7689,7,25,0,0,7689,7690,7,5,0,0,7690,7691,7,15,0,0,7691,7692,7,14,0,0,7692,7693,7,3,0,0,7693,7694,7,6,0,0,7694,7695,7,15,0,0,7695,7696,7,19,0,0,7696,7697,7,12,0,0,7697,1176,1,0,0,0,7698,7699,7,8,0,0,7699,7700,7,7,0,0,7700,7701,7,11,0,0,7701,7702,7,7,0,0,7702,7703,7,6,0,0,7703,1178,1,0,0,0,7704,7705,7,8,0,0,7705,7706,7,7,0,0,7706,7707,7,11,0,0,7707,7708,7,6,0,0,7708,7709,7,3,0,0,7709,7710,7,8,0,0,7710,7711,7,6,0,0,7711,1180,1,0,0,0,7712,7713,7,8,0,0,7713,7714,7,7,0,0,7714,7715,7,11,0,0,7715,7716,7,17,0,0,7716,7717,7,23,0,0,7717,7718,7,7,0,0,7718,1182,1,0,0,0,7719,7720,7,8,0,0,7720,7721,7,7,0,0,7721,7722,7,6,0,0,7722,7723,7,17,0,0,7723,7724,7,8,0,0,7724,7725,7,12,0,0,7725,7726,7,7,0,0,7726,7727,7,4,0,0,7727,7728,5,95,0,0,7728,7729,7,11,0,0,7729,7730,7,28,0,0,7730,7731,7,5,0,0,7731,7732,7,11,0,0,7732,7733,7,6,0,0,7733,7734,7,3,0,0,7734,7735,7,6,0,0,7735,7736,7,7,0,0,7736,1184,1,0,0,0,7737,7738,7,8,0,0,7738,7739,7,7,0,0,7739,7740,7,6,0,0,7740,7741,7,17,0,0,7741,7742,7,8,0,0,7742,7743,7,12,0,0,7743,7744,7,15,0,0,7744,7745,7,12,0,0,7745,7746,7,22,0,0,7746,1186,1,0,0,0,7747,7748,7,8,0,0,7748,7749,7,7,0,0,7749,7750,7,6,0,0,7750,7751,7,17,0,0,7751,7752,7,8,0,0,7752,7753,7,12,0,0,7753,7754,7,11,0,0,7754,1188,1,0,0,0,7755,7756,7,8,0,0,7756,7757,7,7,0,0,7757,7758,7,17,0,0,7758,7759,7,11,0,0,7759,7760,7,7,0,0,7760,1190,1,0,0,0,7761,7762,7,8,0,0,7762,7763,7,19,0,0,7763,7764,7,5,0,0,7764,7765,7,7,0,0,7765,1192,1,0,0,0,7766,7767,7,8,0,0,7767,7768,7,19,0,0,7768,7769,7,5,0,0,7769,7770,7,5,0,0,7770,7771,7,16,0,0,7771,7772,7,3,0,0,7772,7773,7,14,0,0,7773,7774,7,21,0,0,7774,1194,1,0,0,0,7775,7776,7,8,0,0,7776,7777,7,19,0,0,7777,7778,7,5,0,0,7778,7779,7,5,0,0,7779,7780,7,17,0,0,7780,7781,7,25,0,0,7781,1196,1,0,0,0,7782,7783,7,8,0,0,7783,7784,7,19,0,0,7784,7785,7,6,0,0,7785,7786,7,3,0,0,7786,7787,7,6,0,0,7787,7788,7,7,0,0,7788,1198,1,0,0,0,7789,7790,7,8,0,0,7790,7791,7,19,0,0,7791,7792,7,9,0,0,7792,1200,1,0,0,0,7793,7794,7,8,0,0,7794,7795,7,19,0,0,7795,7796,7,9,0,0,7796,7797,7,11,0,0,7797,1202,1,0,0,0,7798,7799,7,8,0,0,7799,7800,7,19,0,0,7800,7801,7,9,0,0,7801,7802,5,95,0,0,7802,7803,7,18,0,0,7803,7804,7,19,0,0,7804,7805,7,8,0,0,7805,7806,7,23,0,0,7806,7807,7,3,0,0,7807,7808,7,6,0,0,7808,1204,1,0,0,0,7809,7810,7,8,0,0,7810,7811,7,6,0,0,7811,7812,7,8,0,0,7812,7813,7,7,0,0,7813,7814,7,7,0,0,7814,1206,1,0,0,0,7815,7816,7,11,0,0,7816,7817,7,3,0,0,7817,7818,7,24,0,0,7818,7819,7,7,0,0,7819,7820,7,25,0,0,7820,7821,7,19,0,0,7821,7822,7,15,0,0,7822,7823,7,12,0,0,7823,7824,7,6,0,0,7824,1208,1,0,0,0,7825,7826,7,11,0,0,7826,7827,7,14,0,0,7827,7828,7,20,0,0,7828,7829,7,7,0,0,7829,7830,7,4,0,0,7830,7831,7,17,0,0,7831,7832,7,5,0,0,7832,7833,7,7,0,0,7833,1210,1,0,0,0,7834,7835,7,11,0,0,7835,7836,7,7,0,0,7836,7837,7,14,0,0,7837,7838,7,17,0,0,7838,7839,7,8,0,0,7839,7840,7,15,0,0,7840,7841,7,6,0,0,7841,7842,7,10,0,0,7842,1212,1,0,0,0,7843,7844,7,11,0,0,7844,7845,7,7,0,0,7845,7846,7,28,0,0,7846,7847,7,17,0,0,7847,7848,7,7,0,0,7848,7849,7,12,0,0,7849,7850,7,14,0,0,7850,7851,7,7,0,0,7851,1214,1,0,0,0,7852,7853,7,11,0,0,7853,7854,7,7,0,0,7854,7855,7,8,0,0,7855,7856,7,24,0,0,7856,7857,7,7,0,0,7857,7858,7,8,0,0,7858,1216,1,0,0,0,7859,7860,7,11,0,0,7860,7861,7,7,0,0,7861,7862,7,11,0,0,7862,7863,7,11,0,0,7863,7864,7,15,0,0,7864,7865,7,19,0,0,7865,7866,7,12,0,0,7866,1218,1,0,0,0,7867,7868,7,11,0,0,7868,7869,7,20,0,0,7869,7870,7,3,0,0,7870,7871,7,8,0,0,7871,7872,7,7,0,0,7872,1220,1,0,0,0,7873,7874,7,11,0,0,7874,7875,7,20,0,0,7875,7876,7,3,0,0,7876,7877,7,8,0,0,7877,7878,7,7,0,0,7878,7879,7,4,0,0,7879,1222,1,0,0,0,7880,7881,7,11,0,0,7881,7882,7,15,0,0,7882,7883,7,22,0,0,7883,7884,7,12,0,0,7884,7885,7,7,0,0,7885,7886,7,4,0,0,7886,1224,1,0,0,0,7887,7888,7,11,0,0,7888,7889,7,15,0,0,7889,7890,7,23,0,0,7890,7891,7,25,0,0,7891,7892,7,5,0,0,7892,7893,7,7,0,0,7893,1226,1,0,0,0,7894,7895,7,11,0,0,7895,7896,7,5,0,0,7896,7897,7,3,0,0,7897,7898,7,24,0,0,7898,7899,7,7,0,0,7899,1228,1,0,0,0,7900,7901,7,11,0,0,7901,7902,7,5,0,0,7902,7903,7,19,0,0,7903,7904,7,9,0,0,7904,1230,1,0,0,0,7905,7906,7,11,0,0,7906,7907,7,12,0,0,7907,7908,7,3,0,0,7908,7909,7,25,0,0,7909,7910,7,11,0,0,7910,7911,7,20,0,0,7911,7912,7,19,0,0,7912,7913,7,6,0,0,7913,1232,1,0,0,0,7914,7915,7,11,0,0,7915,7916,7,19,0,0,7916,7917,7,14,0,0,7917,7918,7,21,0,0,7918,7919,7,7,0,0,7919,7920,7,6,0,0,7920,1234,1,0,0,0,7921,7922,7,11,0,0,7922,7923,7,19,0,0,7923,7924,7,23,0,0,7924,7925,7,7,0,0,7925,1236,1,0,0,0,7926,7927,7,11,0,0,7927,7928,7,19,0,0,7928,7929,7,12,0,0,7929,7930,7,3,0,0,7930,7931,7,23,0,0,7931,7932,7,7,0,0,7932,1238,1,0,0,0,7933,7934,7,11,0,0,7934,7935,7,19,0,0,7935,7936,7,17,0,0,7936,7937,7,12,0,0,7937,7938,7,4,0,0,7938,7939,7,11,0,0,7939,1240,1,0,0,0,7940,7941,7,11,0,0,7941,7942,7,19,0,0,7942,7943,7,17,0,0,7943,7944,7,8,0,0,7944,7945,7,14,0,0,7945,7946,7,7,0,0,7946,1242,1,0,0,0,7947,7948,7,11,0,0,7948,7949,7,28,0,0,7949,7950,7,5,0,0,7950,7951,5,95,0,0,7951,7952,7,3,0,0,7952,7953,7,18,0,0,7953,7954,7,6,0,0,7954,7955,7,7,0,0,7955,7956,7,8,0,0,7956,7957,5,95,0,0,7957,7958,7,22,0,0,7958,7959,7,6,0,0,7959,7960,7,15,0,0,7960,7961,7,4,0,0,7961,7962,7,11,0,0,7962,1244,1,0,0,0,7963,7964,7,11,0,0,7964,7965,7,28,0,0,7965,7966,7,5,0,0,7966,7967,5,95,0,0,7967,7968,7,3,0,0,7968,7969,7,18,0,0,7969,7970,7,6,0,0,7970,7971,7,7,0,0,7971,7972,7,8,0,0,7972,7973,5,95,0,0,7973,7974,7,23,0,0,7974,7975,7,6,0,0,7975,7976,7,11,0,0,7976,7977,5,95,0,0,7977,7978,7,22,0,0,7978,7979,7,3,0,0,7979,7980,7,25,0,0,7980,7981,7,11,0,0,7981,1246,1,0,0,0,7982,7983,7,11,0,0,7983,7984,7,28,0,0,7984,7985,7,5,0,0,7985,7986,5,95,0,0,7986,7987,7,16,0,0,7987,7988,7,7,0,0,7988,7989,7,18,0,0,7989,7990,7,19,0,0,7990,7991,7,8,0,0,7991,7992,7,7,0,0,7992,7993,5,95,0,0,7993,7994,7,22,0,0,7994,7995,7,6,0,0,7995,7996,7,15,0,0,7996,7997,7,4,0,0,7997,7998,7,11,0,0,7998,1248,1,0,0,0,7999,8e3,7,11,0,0,8e3,8001,7,28,0,0,8001,8002,7,5,0,0,8002,8003,5,95,0,0,8003,8004,7,16,0,0,8004,8005,7,17,0,0,8005,8006,7,18,0,0,8006,8007,7,18,0,0,8007,8008,7,7,0,0,8008,8009,7,8,0,0,8009,8010,5,95,0,0,8010,8011,7,8,0,0,8011,8012,7,7,0,0,8012,8013,7,11,0,0,8013,8014,7,17,0,0,8014,8015,7,5,0,0,8015,8016,7,6,0,0,8016,1250,1,0,0,0,8017,8018,7,11,0,0,8018,8019,7,28,0,0,8019,8020,7,5,0,0,8020,8021,5,95,0,0,8021,8022,7,14,0,0,8022,8023,7,3,0,0,8023,8024,7,14,0,0,8024,8025,7,20,0,0,8025,8026,7,7,0,0,8026,1252,1,0,0,0,8027,8028,7,11,0,0,8028,8029,7,28,0,0,8029,8030,7,5,0,0,8030,8031,5,95,0,0,8031,8032,7,12,0,0,8032,8033,7,19,0,0,8033,8034,5,95,0,0,8034,8035,7,14,0,0,8035,8036,7,3,0,0,8036,8037,7,14,0,0,8037,8038,7,20,0,0,8038,8039,7,7,0,0,8039,1254,1,0,0,0,8040,8041,7,11,0,0,8041,8042,7,28,0,0,8042,8043,7,5,0,0,8043,8044,5,95,0,0,8044,8045,7,6,0,0,8045,8046,7,20,0,0,8046,8047,7,8,0,0,8047,8048,7,7,0,0,8048,8049,7,3,0,0,8049,8050,7,4,0,0,8050,1256,1,0,0,0,8051,8052,7,11,0,0,8052,8053,7,6,0,0,8053,8054,7,3,0,0,8054,8055,7,8,0,0,8055,8056,7,6,0,0,8056,1258,1,0,0,0,8057,8058,7,11,0,0,8058,8059,7,6,0,0,8059,8060,7,3,0,0,8060,8061,7,8,0,0,8061,8062,7,6,0,0,8062,8063,7,11,0,0,8063,1260,1,0,0,0,8064,8065,7,11,0,0,8065,8066,7,6,0,0,8066,8067,7,3,0,0,8067,8068,7,6,0,0,8068,8069,7,11,0,0,8069,8070,5,95,0,0,8070,8071,7,3,0,0,8071,8072,7,17,0,0,8072,8073,7,6,0,0,8073,8074,7,19,0,0,8074,8075,5,95,0,0,8075,8076,7,8,0,0,8076,8077,7,7,0,0,8077,8078,7,14,0,0,8078,8079,7,3,0,0,8079,8080,7,5,0,0,8080,8081,7,14,0,0,8081,1262,1,0,0,0,8082,8083,7,11,0,0,8083,8084,7,6,0,0,8084,8085,7,3,0,0,8085,8086,7,6,0,0,8086,8087,7,11,0,0,8087,8088,5,95,0,0,8088,8089,7,25,0,0,8089,8090,7,7,0,0,8090,8091,7,8,0,0,8091,8092,7,11,0,0,8092,8093,7,15,0,0,8093,8094,7,11,0,0,8094,8095,7,6,0,0,8095,8096,7,7,0,0,8096,8097,7,12,0,0,8097,8098,7,6,0,0,8098,1264,1,0,0,0,8099,8100,7,11,0,0,8100,8101,7,6,0,0,8101,8102,7,3,0,0,8102,8103,7,6,0,0,8103,8104,7,11,0,0,8104,8105,5,95,0,0,8105,8106,7,11,0,0,8106,8107,7,3,0,0,8107,8108,7,23,0,0,8108,8109,7,25,0,0,8109,8110,7,5,0,0,8110,8111,7,7,0,0,8111,8112,5,95,0,0,8112,8113,7,25,0,0,8113,8114,7,3,0,0,8114,8115,7,22,0,0,8115,8116,7,7,0,0,8116,8117,7,11,0,0,8117,1266,1,0,0,0,8118,8119,7,11,0,0,8119,8120,7,6,0,0,8120,8121,7,3,0,0,8121,8122,7,6,0,0,8122,8123,7,17,0,0,8123,8124,7,11,0,0,8124,1268,1,0,0,0,8125,8126,7,11,0,0,8126,8127,7,6,0,0,8127,8128,7,19,0,0,8128,8129,7,25,0,0,8129,1270,1,0,0,0,8130,8131,7,11,0,0,8131,8132,7,6,0,0,8132,8133,7,19,0,0,8133,8134,7,8,0,0,8134,8135,7,3,0,0,8135,8136,7,22,0,0,8136,8137,7,7,0,0,8137,1272,1,0,0,0,8138,8139,7,11,0,0,8139,8140,7,6,0,0,8140,8141,7,19,0,0,8141,8142,7,8,0,0,8142,8143,7,7,0,0,8143,8144,7,4,0,0,8144,1274,1,0,0,0,8145,8146,7,11,0,0,8146,8147,7,6,0,0,8147,8148,7,8,0,0,8148,8149,7,15,0,0,8149,8150,7,12,0,0,8150,8151,7,22,0,0,8151,1276,1,0,0,0,8152,8153,7,11,0,0,8153,8154,7,17,0,0,8154,8155,7,16,0,0,8155,8156,7,14,0,0,8156,8157,7,5,0,0,8157,8158,7,3,0,0,8158,8159,7,11,0,0,8159,8160,7,11,0,0,8160,8161,5,95,0,0,8161,8162,7,19,0,0,8162,8163,7,8,0,0,8163,8164,7,15,0,0,8164,8165,7,22,0,0,8165,8166,7,15,0,0,8166,8167,7,12,0,0,8167,1278,1,0,0,0,8168,8169,7,11,0,0,8169,8170,7,17,0,0,8170,8171,7,16,0,0,8171,8172,7,27,0,0,8172,8173,7,7,0,0,8173,8174,7,14,0,0,8174,8175,7,6,0,0,8175,1280,1,0,0,0,8176,8177,7,11,0,0,8177,8178,7,17,0,0,8178,8179,7,16,0,0,8179,8180,7,25,0,0,8180,8181,7,3,0,0,8181,8182,7,8,0,0,8182,8183,7,6,0,0,8183,8184,7,15,0,0,8184,8185,7,6,0,0,8185,8186,7,15,0,0,8186,8187,7,19,0,0,8187,8188,7,12,0,0,8188,1282,1,0,0,0,8189,8190,7,11,0,0,8190,8191,7,17,0,0,8191,8192,7,16,0,0,8192,8193,7,25,0,0,8193,8194,7,3,0,0,8194,8195,7,8,0,0,8195,8196,7,6,0,0,8196,8197,7,15,0,0,8197,8198,7,6,0,0,8198,8199,7,15,0,0,8199,8200,7,19,0,0,8200,8201,7,12,0,0,8201,8202,7,11,0,0,8202,1284,1,0,0,0,8203,8204,7,11,0,0,8204,8205,7,17,0,0,8205,8206,7,11,0,0,8206,8207,7,25,0,0,8207,8208,7,7,0,0,8208,8209,7,12,0,0,8209,8210,7,4,0,0,8210,1286,1,0,0,0,8211,8212,7,11,0,0,8212,8213,7,9,0,0,8213,8214,7,3,0,0,8214,8215,7,25,0,0,8215,8216,7,11,0,0,8216,1288,1,0,0,0,8217,8218,7,11,0,0,8218,8219,7,9,0,0,8219,8220,7,15,0,0,8220,8221,7,6,0,0,8221,8222,7,14,0,0,8222,8223,7,20,0,0,8223,8224,7,7,0,0,8224,8225,7,11,0,0,8225,1290,1,0,0,0,8226,8227,7,6,0,0,8227,8228,7,3,0,0,8228,8229,7,16,0,0,8229,8230,7,5,0,0,8230,8231,7,7,0,0,8231,8232,5,95,0,0,8232,8233,7,12,0,0,8233,8234,7,3,0,0,8234,8235,7,23,0,0,8235,8236,7,7,0,0,8236,1292,1,0,0,0,8237,8238,7,6,0,0,8238,8239,7,3,0,0,8239,8240,7,16,0,0,8240,8241,7,5,0,0,8241,8242,7,7,0,0,8242,8243,7,11,0,0,8243,8244,7,25,0,0,8244,8245,7,3,0,0,8245,8246,7,14,0,0,8246,8247,7,7,0,0,8247,1294,1,0,0,0,8248,8249,7,6,0,0,8249,8250,7,3,0,0,8250,8251,7,16,0,0,8251,8252,7,5,0,0,8252,8253,7,7,0,0,8253,8254,5,95,0,0,8254,8255,7,6,0,0,8255,8256,7,10,0,0,8256,8257,7,25,0,0,8257,8258,7,7,0,0,8258,1296,1,0,0,0,8259,8260,7,6,0,0,8260,8261,7,7,0,0,8261,8262,7,23,0,0,8262,8263,7,25,0,0,8263,8264,7,19,0,0,8264,8265,7,8,0,0,8265,8266,7,3,0,0,8266,8267,7,8,0,0,8267,8268,7,10,0,0,8268,1298,1,0,0,0,8269,8270,7,6,0,0,8270,8271,7,7,0,0,8271,8272,7,23,0,0,8272,8273,7,25,0,0,8273,8274,7,6,0,0,8274,8275,7,3,0,0,8275,8276,7,16,0,0,8276,8277,7,5,0,0,8277,8278,7,7,0,0,8278,1300,1,0,0,0,8279,8280,7,6,0,0,8280,8281,7,20,0,0,8281,8282,7,3,0,0,8282,8283,7,12,0,0,8283,1302,1,0,0,0,8284,8285,7,6,0,0,8285,8286,7,8,0,0,8286,8287,7,3,0,0,8287,8288,7,4,0,0,8288,8289,7,15,0,0,8289,8290,7,6,0,0,8290,8291,7,15,0,0,8291,8292,7,19,0,0,8292,8293,7,12,0,0,8293,8294,7,3,0,0,8294,8295,7,5,0,0,8295,1304,1,0,0,0,8296,8297,7,6,0,0,8297,8298,7,8,0,0,8298,8299,7,3,0,0,8299,8300,7,12,0,0,8300,8301,7,11,0,0,8301,8302,7,3,0,0,8302,8303,7,14,0,0,8303,8304,7,6,0,0,8304,8305,7,15,0,0,8305,8306,7,19,0,0,8306,8307,7,12,0,0,8307,1306,1,0,0,0,8308,8309,7,6,0,0,8309,8310,7,8,0,0,8310,8311,7,3,0,0,8311,8312,7,12,0,0,8312,8313,7,11,0,0,8313,8314,7,3,0,0,8314,8315,7,14,0,0,8315,8316,7,6,0,0,8316,8317,7,15,0,0,8317,8318,7,19,0,0,8318,8319,7,12,0,0,8319,8320,7,3,0,0,8320,8321,7,5,0,0,8321,1308,1,0,0,0,8322,8323,7,6,0,0,8323,8324,7,8,0,0,8324,8325,7,15,0,0,8325,8326,7,22,0,0,8326,8327,7,22,0,0,8327,8328,7,7,0,0,8328,8329,7,8,0,0,8329,8330,7,11,0,0,8330,1310,1,0,0,0,8331,8332,7,6,0,0,8332,8333,7,8,0,0,8333,8334,7,17,0,0,8334,8335,7,12,0,0,8335,8336,7,14,0,0,8336,8337,7,3,0,0,8337,8338,7,6,0,0,8338,8339,7,7,0,0,8339,1312,1,0,0,0,8340,8341,7,17,0,0,8341,8342,7,12,0,0,8342,8343,7,16,0,0,8343,8344,7,19,0,0,8344,8345,7,17,0,0,8345,8346,7,12,0,0,8346,8347,7,4,0,0,8347,8348,7,7,0,0,8348,8349,7,4,0,0,8349,1314,1,0,0,0,8350,8351,7,17,0,0,8351,8352,7,12,0,0,8352,8353,7,4,0,0,8353,8354,7,7,0,0,8354,8355,7,18,0,0,8355,8356,7,15,0,0,8356,8357,7,12,0,0,8357,8358,7,7,0,0,8358,8359,7,4,0,0,8359,1316,1,0,0,0,8360,8361,7,17,0,0,8361,8362,7,12,0,0,8362,8363,7,4,0,0,8363,8364,7,19,0,0,8364,8365,7,18,0,0,8365,8366,7,15,0,0,8366,8367,7,5,0,0,8367,8368,7,7,0,0,8368,1318,1,0,0,0,8369,8370,7,17,0,0,8370,8371,7,12,0,0,8371,8372,7,4,0,0,8372,8373,7,19,0,0,8373,8374,5,95,0,0,8374,8375,7,16,0,0,8375,8376,7,17,0,0,8376,8377,7,18,0,0,8377,8378,7,18,0,0,8378,8379,7,7,0,0,8379,8380,7,8,0,0,8380,8381,5,95,0,0,8381,8382,7,11,0,0,8382,8383,7,15,0,0,8383,8384,7,13,0,0,8384,8385,7,7,0,0,8385,1320,1,0,0,0,8386,8387,7,17,0,0,8387,8388,7,12,0,0,8388,8389,7,15,0,0,8389,8390,7,12,0,0,8390,8391,7,11,0,0,8391,8392,7,6,0,0,8392,8393,7,3,0,0,8393,8394,7,5,0,0,8394,8395,7,5,0,0,8395,1322,1,0,0,0,8396,8397,7,17,0,0,8397,8398,7,12,0,0,8398,8399,7,21,0,0,8399,8400,7,12,0,0,8400,8401,7,19,0,0,8401,8402,7,9,0,0,8402,8403,7,12,0,0,8403,1324,1,0,0,0,8404,8405,7,17,0,0,8405,8406,7,12,0,0,8406,8407,7,6,0,0,8407,8408,7,15,0,0,8408,8409,7,5,0,0,8409,1326,1,0,0,0,8410,8411,7,17,0,0,8411,8412,7,25,0,0,8412,8413,7,22,0,0,8413,8414,7,8,0,0,8414,8415,7,3,0,0,8415,8416,7,4,0,0,8416,8417,7,7,0,0,8417,1328,1,0,0,0,8418,8419,7,17,0,0,8419,8420,7,11,0,0,8420,8421,7,7,0,0,8421,8422,7,8,0,0,8422,1330,1,0,0,0,8423,8424,7,17,0,0,8424,8425,7,11,0,0,8425,8426,7,7,0,0,8426,8427,5,95,0,0,8427,8428,7,18,0,0,8428,8429,7,8,0,0,8429,8430,7,23,0,0,8430,1332,1,0,0,0,8431,8432,7,17,0,0,8432,8433,7,11,0,0,8433,8434,7,7,0,0,8434,8435,7,8,0,0,8435,8436,5,95,0,0,8436,8437,7,8,0,0,8437,8438,7,7,0,0,8438,8439,7,11,0,0,8439,8440,7,19,0,0,8440,8441,7,17,0,0,8441,8442,7,8,0,0,8442,8443,7,14,0,0,8443,8444,7,7,0,0,8444,8445,7,11,0,0,8445,1334,1,0,0,0,8446,8447,7,24,0,0,8447,8448,7,3,0,0,8448,8449,7,5,0,0,8449,8450,7,15,0,0,8450,8451,7,4,0,0,8451,8452,7,3,0,0,8452,8453,7,6,0,0,8453,8454,7,15,0,0,8454,8455,7,19,0,0,8455,8456,7,12,0,0,8456,1336,1,0,0,0,8457,8458,7,24,0,0,8458,8459,7,3,0,0,8459,8460,7,5,0,0,8460,8461,7,17,0,0,8461,8462,7,7,0,0,8462,1338,1,0,0,0,8463,8464,7,24,0,0,8464,8465,7,3,0,0,8465,8466,7,8,0,0,8466,8467,7,15,0,0,8467,8468,7,3,0,0,8468,8469,7,16,0,0,8469,8470,7,5,0,0,8470,8471,7,7,0,0,8471,8472,7,11,0,0,8472,1340,1,0,0,0,8473,8474,7,24,0,0,8474,8475,7,15,0,0,8475,8476,7,7,0,0,8476,8477,7,9,0,0,8477,1342,1,0,0,0,8478,8479,7,24,0,0,8479,8480,7,15,0,0,8480,8481,7,8,0,0,8481,8482,7,6,0,0,8482,8483,7,17,0,0,8483,8484,7,3,0,0,8484,8485,7,5,0,0,8485,1344,1,0,0,0,8486,8487,7,24,0,0,8487,8488,7,15,0,0,8488,8489,7,11,0,0,8489,8490,7,15,0,0,8490,8491,7,16,0,0,8491,8492,7,5,0,0,8492,8493,7,7,0,0,8493,1346,1,0,0,0,8494,8495,7,9,0,0,8495,8496,7,3,0,0,8496,8497,7,15,0,0,8497,8498,7,6,0,0,8498,1348,1,0,0,0,8499,8500,7,9,0,0,8500,8501,7,3,0,0,8501,8502,7,8,0,0,8502,8503,7,12,0,0,8503,8504,7,15,0,0,8504,8505,7,12,0,0,8505,8506,7,22,0,0,8506,8507,7,11,0,0,8507,1350,1,0,0,0,8508,8509,7,9,0,0,8509,8510,7,15,0,0,8510,8511,7,12,0,0,8511,8512,7,4,0,0,8512,8513,7,19,0,0,8513,8514,7,9,0,0,8514,1352,1,0,0,0,8515,8516,7,9,0,0,8516,8517,7,15,0,0,8517,8518,7,6,0,0,8518,8519,7,20,0,0,8519,8520,7,19,0,0,8520,8521,7,17,0,0,8521,8522,7,6,0,0,8522,1354,1,0,0,0,8523,8524,7,9,0,0,8524,8525,7,19,0,0,8525,8526,7,8,0,0,8526,8527,7,21,0,0,8527,1356,1,0,0,0,8528,8529,7,9,0,0,8529,8530,7,8,0,0,8530,8531,7,3,0,0,8531,8532,7,25,0,0,8532,8533,7,25,0,0,8533,8534,7,7,0,0,8534,8535,7,8,0,0,8535,1358,1,0,0,0,8536,8537,7,26,0,0,8537,8538,5,53,0,0,8538,8539,5,48,0,0,8539,8540,5,57,0,0,8540,1360,1,0,0,0,8541,8542,7,26,0,0,8542,8543,7,3,0,0,8543,1362,1,0,0,0,8544,8545,7,26,0,0,8545,8546,7,23,0,0,8546,8547,7,5,0,0,8547,1364,1,0,0,0,8548,8549,7,10,0,0,8549,8550,7,7,0,0,8550,8551,7,11,0,0,8551,1366,1,0,0,0,8552,8553,7,7,0,0,8553,8554,7,17,0,0,8554,8555,7,8,0,0,8555,1368,1,0,0,0,8556,8557,7,17,0,0,8557,8558,7,11,0,0,8558,8559,7,3,0,0,8559,1370,1,0,0,0,8560,8561,7,27,0,0,8561,8562,7,15,0,0,8562,8563,7,11,0,0,8563,1372,1,0,0,0,8564,8565,7,15,0,0,8565,8566,7,11,0,0,8566,8567,7,19,0,0,8567,1374,1,0,0,0,8568,8569,7,15,0,0,8569,8570,7,12,0,0,8570,8571,7,6,0,0,8571,8572,7,7,0,0,8572,8573,7,8,0,0,8573,8574,7,12,0,0,8574,8575,7,3,0,0,8575,8576,7,5,0,0,8576,1376,1,0,0,0,8577,8578,7,28,0,0,8578,8579,7,17,0,0,8579,8580,7,3,0,0,8580,8581,7,8,0,0,8581,8582,7,6,0,0,8582,8583,7,7,0,0,8583,8584,7,8,0,0,8584,1378,1,0,0,0,8585,8586,7,23,0,0,8586,8587,7,19,0,0,8587,8588,7,12,0,0,8588,8589,7,6,0,0,8589,8590,7,20,0,0,8590,1380,1,0,0,0,8591,8592,7,4,0,0,8592,8593,7,3,0,0,8593,8594,7,10,0,0,8594,1382,1,0,0,0,8595,8596,7,20,0,0,8596,8597,7,19,0,0,8597,8598,7,17,0,0,8598,8599,7,8,0,0,8599,1384,1,0,0,0,8600,8601,7,23,0,0,8601,8602,7,15,0,0,8602,8603,7,12,0,0,8603,8604,7,17,0,0,8604,8605,7,6,0,0,8605,8606,7,7,0,0,8606,1386,1,0,0,0,8607,8608,7,9,0,0,8608,8609,7,7,0,0,8609,8610,7,7,0,0,8610,8611,7,21,0,0,8611,1388,1,0,0,0,8612,8613,7,11,0,0,8613,8614,7,7,0,0,8614,8615,7,14,0,0,8615,8616,7,19,0,0,8616,8617,7,12,0,0,8617,8618,7,4,0,0,8618,1390,1,0,0,0,8619,8620,7,23,0,0,8620,8621,7,15,0,0,8621,8622,7,14,0,0,8622,8623,7,8,0,0,8623,8624,7,19,0,0,8624,8625,7,11,0,0,8625,8626,7,7,0,0,8626,8627,7,14,0,0,8627,8628,7,19,0,0,8628,8629,7,12,0,0,8629,8630,7,4,0,0,8630,1392,1,0,0,0,8631,8632,7,3,0,0,8632,8633,7,4,0,0,8633,8634,7,23,0,0,8634,8635,7,15,0,0,8635,8636,7,12,0,0,8636,1394,1,0,0,0,8637,8638,7,3,0,0,8638,8639,7,25,0,0,8639,8640,7,25,0,0,8640,8641,7,5,0,0,8641,8642,7,15,0,0,8642,8643,7,14,0,0,8643,8644,7,3,0,0,8644,8645,7,6,0,0,8645,8646,7,15,0,0,8646,8647,7,19,0,0,8647,8648,7,12,0,0,8648,8649,5,95,0,0,8649,8650,7,25,0,0,8650,8651,7,3,0,0,8651,8652,7,11,0,0,8652,8653,7,11,0,0,8653,8654,7,9,0,0,8654,8655,7,19,0,0,8655,8656,7,8,0,0,8656,8657,7,4,0,0,8657,8658,5,95,0,0,8658,8659,7,3,0,0,8659,8660,7,4,0,0,8660,8661,7,23,0,0,8661,8662,7,15,0,0,8662,8663,7,12,0,0,8663,1396,1,0,0,0,8664,8665,7,3,0,0,8665,8666,7,17,0,0,8666,8667,7,4,0,0,8667,8668,7,15,0,0,8668,8669,7,6,0,0,8669,8670,5,95,0,0,8670,8671,7,3,0,0,8671,8672,7,16,0,0,8672,8673,7,19,0,0,8673,8674,7,8,0,0,8674,8675,7,6,0,0,8675,8676,5,95,0,0,8676,8677,7,7,0,0,8677,8678,7,26,0,0,8678,8679,7,7,0,0,8679,8680,7,23,0,0,8680,8681,7,25,0,0,8681,8682,7,6,0,0,8682,1398,1,0,0,0,8683,8684,7,3,0,0,8684,8685,7,17,0,0,8685,8686,7,4,0,0,8686,8687,7,15,0,0,8687,8688,7,6,0,0,8688,8689,5,95,0,0,8689,8690,7,3,0,0,8690,8691,7,4,0,0,8691,8692,7,23,0,0,8692,8693,7,15,0,0,8693,8694,7,12,0,0,8694,1400,1,0,0,0,8695,8696,7,3,0,0,8696,8697,7,17,0,0,8697,8698,7,6,0,0,8698,8699,7,20,0,0,8699,8700,7,7,0,0,8700,8701,7,12,0,0,8701,8702,7,6,0,0,8702,8703,7,15,0,0,8703,8704,7,14,0,0,8704,8705,7,3,0,0,8705,8706,7,6,0,0,8706,8707,7,15,0,0,8707,8708,7,19,0,0,8708,8709,7,12,0,0,8709,8710,5,95,0,0,8710,8711,7,25,0,0,8711,8712,7,19,0,0,8712,8713,7,5,0,0,8713,8714,7,15,0,0,8714,8715,7,14,0,0,8715,8716,7,10,0,0,8716,8717,5,95,0,0,8717,8718,7,3,0,0,8718,8719,7,4,0,0,8719,8720,7,23,0,0,8720,8721,7,15,0,0,8721,8722,7,12,0,0,8722,1402,1,0,0,0,8723,8724,7,16,0,0,8724,8725,7,3,0,0,8725,8726,7,14,0,0,8726,8727,7,21,0,0,8727,8728,7,17,0,0,8728,8729,7,25,0,0,8729,8730,5,95,0,0,8730,8731,7,3,0,0,8731,8732,7,4,0,0,8732,8733,7,23,0,0,8733,8734,7,15,0,0,8734,8735,7,12,0,0,8735,1404,1,0,0,0,8736,8737,7,16,0,0,8737,8738,7,15,0,0,8738,8739,7,12,0,0,8739,8740,7,5,0,0,8740,8741,7,19,0,0,8741,8742,7,22,0,0,8742,8743,5,95,0,0,8743,8744,7,3,0,0,8744,8745,7,4,0,0,8745,8746,7,23,0,0,8746,8747,7,15,0,0,8747,8748,7,12,0,0,8748,1406,1,0,0,0,8749,8750,7,16,0,0,8750,8751,7,15,0,0,8751,8752,7,12,0,0,8752,8753,7,5,0,0,8753,8754,7,19,0,0,8754,8755,7,22,0,0,8755,8756,5,95,0,0,8756,8757,7,7,0,0,8757,8758,7,12,0,0,8758,8759,7,14,0,0,8759,8760,7,8,0,0,8760,8761,7,10,0,0,8761,8762,7,25,0,0,8762,8763,7,6,0,0,8763,8764,7,15,0,0,8764,8765,7,19,0,0,8765,8766,7,12,0,0,8766,8767,5,95,0,0,8767,8768,7,3,0,0,8768,8769,7,4,0,0,8769,8770,7,23,0,0,8770,8771,7,15,0,0,8771,8772,7,12,0,0,8772,1408,1,0,0,0,8773,8774,7,14,0,0,8774,8775,7,5,0,0,8775,8776,7,19,0,0,8776,8777,7,12,0,0,8777,8778,7,7,0,0,8778,8779,5,95,0,0,8779,8780,7,3,0,0,8780,8781,7,4,0,0,8781,8782,7,23,0,0,8782,8783,7,15,0,0,8783,8784,7,12,0,0,8784,1410,1,0,0,0,8785,8786,7,14,0,0,8786,8787,7,19,0,0,8787,8788,7,12,0,0,8788,8789,7,12,0,0,8789,8790,7,7,0,0,8790,8791,7,14,0,0,8791,8792,7,6,0,0,8792,8793,7,15,0,0,8793,8794,7,19,0,0,8794,8795,7,12,0,0,8795,8796,5,95,0,0,8796,8797,7,3,0,0,8797,8798,7,4,0,0,8798,8799,7,23,0,0,8799,8800,7,15,0,0,8800,8801,7,12,0,0,8801,1412,1,0,0,0,8802,8803,7,7,0,0,8803,8804,7,12,0,0,8804,8805,7,14,0,0,8805,8806,7,8,0,0,8806,8807,7,10,0,0,8807,8808,7,25,0,0,8808,8809,7,6,0,0,8809,8810,7,15,0,0,8810,8811,7,19,0,0,8811,8812,7,12,0,0,8812,8813,5,95,0,0,8813,8814,7,21,0,0,8814,8815,7,7,0,0,8815,8816,7,10,0,0,8816,8817,5,95,0,0,8817,8818,7,3,0,0,8818,8819,7,4,0,0,8819,8820,7,23,0,0,8820,8821,7,15,0,0,8821,8822,7,12,0,0,8822,1414,1,0,0,0,8823,8824,7,7,0,0,8824,8825,7,26,0,0,8825,8826,7,7,0,0,8826,8827,7,14,0,0,8827,8828,7,17,0,0,8828,8829,7,6,0,0,8829,8830,7,7,0,0,8830,1416,1,0,0,0,8831,8832,7,18,0,0,8832,8833,7,15,0,0,8833,8834,7,5,0,0,8834,8835,7,7,0,0,8835,1418,1,0,0,0,8836,8837,7,18,0,0,8837,8838,7,15,0,0,8838,8839,7,8,0,0,8839,8840,7,7,0,0,8840,8841,7,9,0,0,8841,8842,7,3,0,0,8842,8843,7,5,0,0,8843,8844,7,5,0,0,8844,8845,5,95,0,0,8845,8846,7,3,0,0,8846,8847,7,4,0,0,8847,8848,7,23,0,0,8848,8849,7,15,0,0,8849,8850,7,12,0,0,8850,1420,1,0,0,0,8851,8852,7,18,0,0,8852,8853,7,15,0,0,8853,8854,7,8,0,0,8854,8855,7,7,0,0,8855,8856,7,9,0,0,8856,8857,7,3,0,0,8857,8858,7,5,0,0,8858,8859,7,5,0,0,8859,8860,5,95,0,0,8860,8861,7,7,0,0,8861,8862,7,26,0,0,8862,8863,7,7,0,0,8863,8864,7,23,0,0,8864,8865,7,25,0,0,8865,8866,7,6,0,0,8866,1422,1,0,0,0,8867,8868,7,18,0,0,8868,8869,7,15,0,0,8869,8870,7,8,0,0,8870,8871,7,7,0,0,8871,8872,7,9,0,0,8872,8873,7,3,0,0,8873,8874,7,5,0,0,8874,8875,7,5,0,0,8875,8876,5,95,0,0,8876,8877,7,17,0,0,8877,8878,7,11,0,0,8878,8879,7,7,0,0,8879,8880,7,8,0,0,8880,1424,1,0,0,0,8881,8882,7,18,0,0,8882,8883,7,5,0,0,8883,8884,7,17,0,0,8884,8885,7,11,0,0,8885,8886,7,20,0,0,8886,8887,5,95,0,0,8887,8888,7,19,0,0,8888,8889,7,25,0,0,8889,8890,7,6,0,0,8890,8891,7,15,0,0,8891,8892,7,23,0,0,8892,8893,7,15,0,0,8893,8894,7,13,0,0,8894,8895,7,7,0,0,8895,8896,7,8,0,0,8896,8897,5,95,0,0,8897,8898,7,14,0,0,8898,8899,7,19,0,0,8899,8900,7,11,0,0,8900,8901,7,6,0,0,8901,8902,7,11,0,0,8902,1426,1,0,0,0,8903,8904,7,18,0,0,8904,8905,7,5,0,0,8905,8906,7,17,0,0,8906,8907,7,11,0,0,8907,8908,7,20,0,0,8908,8909,5,95,0,0,8909,8910,7,11,0,0,8910,8911,7,6,0,0,8911,8912,7,3,0,0,8912,8913,7,6,0,0,8913,8914,7,17,0,0,8914,8915,7,11,0,0,8915,1428,1,0,0,0,8916,8917,7,18,0,0,8917,8918,7,5,0,0,8918,8919,7,17,0,0,8919,8920,7,11,0,0,8920,8921,7,20,0,0,8921,8922,5,95,0,0,8922,8923,7,6,0,0,8923,8924,7,3,0,0,8924,8925,7,16,0,0,8925,8926,7,5,0,0,8926,8927,7,7,0,0,8927,8928,7,11,0,0,8928,1430,1,0,0,0,8929,8930,7,18,0,0,8930,8931,7,5,0,0,8931,8932,7,17,0,0,8932,8933,7,11,0,0,8933,8934,7,20,0,0,8934,8935,5,95,0,0,8935,8936,7,17,0,0,8936,8937,7,11,0,0,8937,8938,7,7,0,0,8938,8939,7,8,0,0,8939,8940,5,95,0,0,8940,8941,7,8,0,0,8941,8942,7,7,0,0,8942,8943,7,11,0,0,8943,8944,7,19,0,0,8944,8945,7,17,0,0,8945,8946,7,8,0,0,8946,8947,7,14,0,0,8947,8948,7,7,0,0,8948,8949,7,11,0,0,8949,1432,1,0,0,0,8950,8951,7,22,0,0,8951,8952,7,8,0,0,8952,8953,7,19,0,0,8953,8954,7,17,0,0,8954,8955,7,25,0,0,8955,8956,5,95,0,0,8956,8957,7,8,0,0,8957,8958,7,7,0,0,8958,8959,7,25,0,0,8959,8960,7,5,0,0,8960,8961,7,15,0,0,8961,8962,7,14,0,0,8962,8963,7,3,0,0,8963,8964,7,6,0,0,8964,8965,7,15,0,0,8965,8966,7,19,0,0,8966,8967,7,12,0,0,8967,8968,5,95,0,0,8968,8969,7,3,0,0,8969,8970,7,4,0,0,8970,8971,7,23,0,0,8971,8972,7,15,0,0,8972,8973,7,12,0,0,8973,1434,1,0,0,0,8974,8975,7,15,0,0,8975,8976,7,12,0,0,8976,8977,7,12,0,0,8977,8978,7,19,0,0,8978,8979,7,4,0,0,8979,8980,7,16,0,0,8980,8981,5,95,0,0,8981,8982,7,8,0,0,8982,8983,7,7,0,0,8983,8984,7,4,0,0,8984,8985,7,19,0,0,8985,8986,5,95,0,0,8986,8987,7,5,0,0,8987,8988,7,19,0,0,8988,8989,7,22,0,0,8989,8990,5,95,0,0,8990,8991,7,3,0,0,8991,8992,7,8,0,0,8992,8993,7,14,0,0,8993,8994,7,20,0,0,8994,8995,7,15,0,0,8995,8996,7,24,0,0,8996,8997,7,7,0,0,8997,1436,1,0,0,0,8998,8999,7,15,0,0,8999,9e3,7,12,0,0,9e3,9001,7,12,0,0,9001,9002,7,19,0,0,9002,9003,7,4,0,0,9003,9004,7,16,0,0,9004,9005,5,95,0,0,9005,9006,7,8,0,0,9006,9007,7,7,0,0,9007,9008,7,4,0,0,9008,9009,7,19,0,0,9009,9010,5,95,0,0,9010,9011,7,5,0,0,9011,9012,7,19,0,0,9012,9013,7,22,0,0,9013,9014,5,95,0,0,9014,9015,7,7,0,0,9015,9016,7,12,0,0,9016,9017,7,3,0,0,9017,9018,7,16,0,0,9018,9019,7,5,0,0,9019,9020,7,7,0,0,9020,1438,1,0,0,0,9021,9022,7,15,0,0,9022,9023,7,12,0,0,9023,9024,7,24,0,0,9024,9025,7,19,0,0,9025,9026,7,21,0,0,9026,9027,7,7,0,0,9027,1440,1,0,0,0,9028,9029,7,5,0,0,9029,9030,7,3,0,0,9030,9031,7,23,0,0,9031,9032,7,16,0,0,9032,9033,7,4,0,0,9033,9034,7,3,0,0,9034,1442,1,0,0,0,9035,9036,7,12,0,0,9036,9037,7,4,0,0,9037,9038,7,16,0,0,9038,9039,5,95,0,0,9039,9040,7,11,0,0,9040,9041,7,6,0,0,9041,9042,7,19,0,0,9042,9043,7,8,0,0,9043,9044,7,7,0,0,9044,9045,7,4,0,0,9045,9046,5,95,0,0,9046,9047,7,17,0,0,9047,9048,7,11,0,0,9048,9049,7,7,0,0,9049,9050,7,8,0,0,9050,1444,1,0,0,0,9051,9052,7,25,0,0,9052,9053,7,3,0,0,9053,9054,7,11,0,0,9054,9055,7,11,0,0,9055,9056,7,9,0,0,9056,9057,7,19,0,0,9057,9058,7,8,0,0,9058,9059,7,4,0,0,9059,9060,7,5,0,0,9060,9061,7,7,0,0,9061,9062,7,11,0,0,9062,9063,7,11,0,0,9063,9064,5,95,0,0,9064,9065,7,17,0,0,9065,9066,7,11,0,0,9066,9067,7,7,0,0,9067,9068,7,8,0,0,9068,9069,5,95,0,0,9069,9070,7,3,0,0,9070,9071,7,4,0,0,9071,9072,7,23,0,0,9072,9073,7,15,0,0,9073,9074,7,12,0,0,9074,1446,1,0,0,0,9075,9076,7,25,0,0,9076,9077,7,7,0,0,9077,9078,7,8,0,0,9078,9079,7,11,0,0,9079,9080,7,15,0,0,9080,9081,7,11,0,0,9081,9082,7,6,0,0,9082,9083,5,95,0,0,9083,9084,7,8,0,0,9084,9085,7,19,0,0,9085,9086,5,95,0,0,9086,9087,7,24,0,0,9087,9088,7,3,0,0,9088,9089,7,8,0,0,9089,9090,7,15,0,0,9090,9091,7,3,0,0,9091,9092,7,16,0,0,9092,9093,7,5,0,0,9093,9094,7,7,0,0,9094,9095,7,11,0,0,9095,9096,5,95,0,0,9096,9097,7,3,0,0,9097,9098,7,4,0,0,9098,9099,7,23,0,0,9099,9100,7,15,0,0,9100,9101,7,12,0,0,9101,1448,1,0,0,0,9102,9103,7,25,0,0,9103,9104,7,8,0,0,9104,9105,7,15,0,0,9105,9106,7,24,0,0,9106,9107,7,15,0,0,9107,9108,7,5,0,0,9108,9109,7,7,0,0,9109,9110,7,22,0,0,9110,9111,7,7,0,0,9111,9112,7,11,0,0,9112,1450,1,0,0,0,9113,9114,7,25,0,0,9114,9115,7,8,0,0,9115,9116,7,19,0,0,9116,9117,7,14,0,0,9117,9118,7,7,0,0,9118,9119,7,11,0,0,9119,9120,7,11,0,0,9120,1452,1,0,0,0,9121,9122,7,8,0,0,9122,9123,7,7,0,0,9123,9124,7,5,0,0,9124,9125,7,19,0,0,9125,9126,7,3,0,0,9126,9127,7,4,0,0,9127,1454,1,0,0,0,9128,9129,7,8,0,0,9129,9130,7,7,0,0,9130,9131,7,25,0,0,9131,9132,7,5,0,0,9132,9133,7,15,0,0,9133,9134,7,14,0,0,9134,9135,7,3,0,0,9135,9136,7,6,0,0,9136,9137,7,15,0,0,9137,9138,7,19,0,0,9138,9139,7,12,0,0,9139,9140,5,95,0,0,9140,9141,7,3,0,0,9141,9142,7,25,0,0,9142,9143,7,25,0,0,9143,9144,7,5,0,0,9144,9145,7,15,0,0,9145,9146,7,7,0,0,9146,9147,7,8,0,0,9147,1456,1,0,0,0,9148,9149,7,8,0,0,9149,9150,7,7,0,0,9150,9151,7,25,0,0,9151,9152,7,5,0,0,9152,9153,7,15,0,0,9153,9154,7,14,0,0,9154,9155,7,3,0,0,9155,9156,7,6,0,0,9156,9157,7,15,0,0,9157,9158,7,19,0,0,9158,9159,7,12,0,0,9159,9160,5,95,0,0,9160,9161,7,11,0,0,9161,9162,7,5,0,0,9162,9163,7,3,0,0,9163,9164,7,24,0,0,9164,9165,7,7,0,0,9165,9166,5,95,0,0,9166,9167,7,3,0,0,9167,9168,7,4,0,0,9168,9169,7,23,0,0,9169,9170,7,15,0,0,9170,9171,7,12,0,0,9171,1458,1,0,0,0,9172,9173,7,8,0,0,9173,9174,7,7,0,0,9174,9175,7,11,0,0,9175,9176,7,19,0,0,9176,9177,7,17,0,0,9177,9178,7,8,0,0,9178,9179,7,14,0,0,9179,9180,7,7,0,0,9180,9181,5,95,0,0,9181,9182,7,22,0,0,9182,9183,7,8,0,0,9183,9184,7,19,0,0,9184,9185,7,17,0,0,9185,9186,7,25,0,0,9186,9187,5,95,0,0,9187,9188,7,3,0,0,9188,9189,7,4,0,0,9189,9190,7,23,0,0,9190,9191,7,15,0,0,9191,9192,7,12,0,0,9192,1460,1,0,0,0,9193,9194,7,8,0,0,9194,9195,7,7,0,0,9195,9196,7,11,0,0,9196,9197,7,19,0,0,9197,9198,7,17,0,0,9198,9199,7,8,0,0,9199,9200,7,14,0,0,9200,9201,7,7,0,0,9201,9202,5,95,0,0,9202,9203,7,22,0,0,9203,9204,7,8,0,0,9204,9205,7,19,0,0,9205,9206,7,17,0,0,9206,9207,7,25,0,0,9207,9208,5,95,0,0,9208,9209,7,17,0,0,9209,9210,7,11,0,0,9210,9211,7,7,0,0,9211,9212,7,8,0,0,9212,1462,1,0,0,0,9213,9214,7,8,0,0,9214,9215,7,19,0,0,9215,9216,7,5,0,0,9216,9217,7,7,0,0,9217,9218,5,95,0,0,9218,9219,7,3,0,0,9219,9220,7,4,0,0,9220,9221,7,23,0,0,9221,9222,7,15,0,0,9222,9223,7,12,0,0,9223,1464,1,0,0,0,9224,9225,7,8,0,0,9225,9226,7,19,0,0,9226,9227,7,17,0,0,9227,9228,7,6,0,0,9228,9229,7,15,0,0,9229,9230,7,12,0,0,9230,9231,7,7,0,0,9231,1466,1,0,0,0,9232,9233,7,11,0,0,9233,9234,5,51,0,0,9234,1468,1,0,0,0,9235,9236,7,11,0,0,9236,9237,7,7,0,0,9237,9238,7,8,0,0,9238,9239,7,24,0,0,9239,9240,7,15,0,0,9240,9241,7,14,0,0,9241,9242,7,7,0,0,9242,9243,5,95,0,0,9243,9244,7,14,0,0,9244,9245,7,19,0,0,9245,9246,7,12,0,0,9246,9247,7,12,0,0,9247,9248,7,7,0,0,9248,9249,7,14,0,0,9249,9250,7,6,0,0,9250,9251,7,15,0,0,9251,9252,7,19,0,0,9252,9253,7,12,0,0,9253,9254,5,95,0,0,9254,9255,7,3,0,0,9255,9256,7,4,0,0,9256,9257,7,23,0,0,9257,9258,7,15,0,0,9258,9259,7,12,0,0,9259,1470,1,0,0,0,9260,9262,3,2289,1144,0,9261,9260,1,0,0,0,9261,9262,1,0,0,0,9262,9263,1,0,0,0,9263,9264,7,11,0,0,9264,9265,7,7,0,0,9265,9266,7,11,0,0,9266,9267,7,11,0,0,9267,9268,7,15,0,0,9268,9269,7,19,0,0,9269,9270,7,12,0,0,9270,9271,5,95,0,0,9271,9272,7,24,0,0,9272,9273,7,3,0,0,9273,9274,7,8,0,0,9274,9275,7,15,0,0,9275,9276,7,3,0,0,9276,9277,7,16,0,0,9277,9278,7,5,0,0,9278,9279,7,7,0,0,9279,9280,7,11,0,0,9280,9281,5,95,0,0,9281,9282,7,3,0,0,9282,9283,7,4,0,0,9283,9284,7,23,0,0,9284,9285,7,15,0,0,9285,9286,7,12,0,0,9286,9288,1,0,0,0,9287,9289,3,2289,1144,0,9288,9287,1,0,0,0,9288,9289,1,0,0,0,9289,1472,1,0,0,0,9290,9291,7,11,0,0,9291,9292,7,7,0,0,9292,9293,7,6,0,0,9293,9294,5,95,0,0,9294,9295,7,17,0,0,9295,9296,7,11,0,0,9296,9297,7,7,0,0,9297,9298,7,8,0,0,9298,9299,5,95,0,0,9299,9300,7,15,0,0,9300,9301,7,4,0,0,9301,1474,1,0,0,0,9302,9303,7,11,0,0,9303,9304,7,20,0,0,9304,9305,7,19,0,0,9305,9306,7,9,0,0,9306,9307,5,95,0,0,9307,9308,7,8,0,0,9308,9309,7,19,0,0,9309,9310,7,17,0,0,9310,9311,7,6,0,0,9311,9312,7,15,0,0,9312,9313,7,12,0,0,9313,9314,7,7,0,0,9314,1476,1,0,0,0,9315,9316,7,11,0,0,9316,9317,7,20,0,0,9317,9318,7,17,0,0,9318,9319,7,6,0,0,9319,9320,7,4,0,0,9320,9321,7,19,0,0,9321,9322,7,9,0,0,9322,9323,7,12,0,0,9323,1478,1,0,0,0,9324,9325,7,11,0,0,9325,9326,7,17,0,0,9326,9327,7,25,0,0,9327,9328,7,7,0,0,9328,9329,7,8,0,0,9329,1480,1,0,0,0,9330,9331,7,11,0,0,9331,9332,7,10,0,0,9332,9333,7,11,0,0,9333,9334,7,6,0,0,9334,9335,7,7,0,0,9335,9336,7,23,0,0,9336,9337,5,95,0,0,9337,9338,7,24,0,0,9338,9339,7,3,0,0,9339,9340,7,8,0,0,9340,9341,7,15,0,0,9341,9342,7,3,0,0,9342,9343,7,16,0,0,9343,9344,7,5,0,0,9344,9345,7,7,0,0,9345,9346,7,11,0,0,9346,9347,5,95,0,0,9347,9348,7,3,0,0,9348,9349,7,4,0,0,9349,9350,7,23,0,0,9350,9351,7,15,0,0,9351,9352,7,12,0,0,9352,1482,1,0,0,0,9353,9354,7,6,0,0,9354,9355,7,3,0,0,9355,9356,7,16,0,0,9356,9357,7,5,0,0,9357,9358,7,7,0,0,9358,9359,7,11,0,0,9359,1484,1,0,0,0,9360,9361,7,6,0,0,9361,9362,7,3,0,0,9362,9363,7,16,0,0,9363,9364,7,5,0,0,9364,9365,7,7,0,0,9365,9366,5,95,0,0,9366,9367,7,7,0,0,9367,9368,7,12,0,0,9368,9369,7,14,0,0,9369,9370,7,8,0,0,9370,9371,7,10,0,0,9371,9372,7,25,0,0,9372,9373,7,6,0,0,9373,9374,7,15,0,0,9374,9375,7,19,0,0,9375,9376,7,12,0,0,9376,9377,5,95,0,0,9377,9378,7,3,0,0,9378,9379,7,4,0,0,9379,9380,7,23,0,0,9380,9381,7,15,0,0,9381,9382,7,12,0,0,9382,1486,1,0,0,0,9383,9384,7,24,0,0,9384,9385,7,7,0,0,9385,9386,7,8,0,0,9386,9387,7,11,0,0,9387,9388,7,15,0,0,9388,9389,7,19,0,0,9389,9390,7,12,0,0,9390,9391,5,95,0,0,9391,9392,7,6,0,0,9392,9393,7,19,0,0,9393,9394,7,21,0,0,9394,9395,7,7,0,0,9395,9396,7,12,0,0,9396,9397,5,95,0,0,9397,9398,7,3,0,0,9398,9399,7,4,0,0,9399,9400,7,23,0,0,9400,9401,7,15,0,0,9401,9402,7,12,0,0,9402,1488,1,0,0,0,9403,9404,7,26,0,0,9404,9405,7,3,0,0,9405,9406,5,95,0,0,9406,9407,7,8,0,0,9407,9408,7,7,0,0,9408,9409,7,14,0,0,9409,9410,7,19,0,0,9410,9411,7,24,0,0,9411,9412,7,7,0,0,9412,9413,7,8,0,0,9413,9414,5,95,0,0,9414,9415,7,3,0,0,9415,9416,7,4,0,0,9416,9417,7,23,0,0,9417,9418,7,15,0,0,9418,9419,7,12,0,0,9419,1490,1,0,0,0,9420,9421,7,3,0,0,9421,9422,7,8,0,0,9422,9423,7,23,0,0,9423,9424,7,11,0,0,9424,9425,7,14,0,0,9425,9426,7,15,0,0,9426,9427,7,15,0,0,9427,9428,5,56,0,0,9428,1492,1,0,0,0,9429,9430,7,3,0,0,9430,9431,7,11,0,0,9431,9432,7,14,0,0,9432,9433,7,15,0,0,9433,9434,7,15,0,0,9434,1494,1,0,0,0,9435,9436,7,16,0,0,9436,9437,7,15,0,0,9437,9438,7,22,0,0,9438,9439,5,53,0,0,9439,1496,1,0,0,0,9440,9441,7,14,0,0,9441,9442,7,25,0,0,9442,9443,5,49,0,0,9443,9444,5,50,0,0,9444,9445,5,53,0,0,9445,9446,5,48,0,0,9446,1498,1,0,0,0,9447,9448,7,14,0,0,9448,9449,7,25,0,0,9449,9450,5,49,0,0,9450,9451,5,50,0,0,9451,9452,5,53,0,0,9452,9453,5,49,0,0,9453,1500,1,0,0,0,9454,9455,7,14,0,0,9455,9456,7,25,0,0,9456,9457,5,49,0,0,9457,9458,5,50,0,0,9458,9459,5,53,0,0,9459,9460,5,54,0,0,9460,1502,1,0,0,0,9461,9462,7,14,0,0,9462,9463,7,25,0,0,9463,9464,5,49,0,0,9464,9465,5,50,0,0,9465,9466,5,53,0,0,9466,9467,5,55,0,0,9467,1504,1,0,0,0,9468,9469,7,14,0,0,9469,9470,7,25,0,0,9470,9471,5,56,0,0,9471,9472,5,53,0,0,9472,9473,5,48,0,0,9473,1506,1,0,0,0,9474,9475,7,14,0,0,9475,9476,7,25,0,0,9476,9477,5,56,0,0,9477,9478,5,53,0,0,9478,9479,5,50,0,0,9479,1508,1,0,0,0,9480,9481,7,14,0,0,9481,9482,7,25,0,0,9482,9483,5,56,0,0,9483,9484,5,54,0,0,9484,9485,5,54,0,0,9485,1510,1,0,0,0,9486,9487,7,14,0,0,9487,9488,7,25,0,0,9488,9489,5,57,0,0,9489,9490,5,51,0,0,9490,9491,5,50,0,0,9491,1512,1,0,0,0,9492,9493,7,4,0,0,9493,9494,7,7,0,0,9494,9495,7,14,0,0,9495,9496,5,56,0,0,9496,1514,1,0,0,0,9497,9498,7,7,0,0,9498,9499,7,17,0,0,9499,9500,7,14,0,0,9500,9501,7,27,0,0,9501,9502,7,25,0,0,9502,9503,7,23,0,0,9503,9504,7,11,0,0,9504,1516,1,0,0,0,9505,9506,7,7,0,0,9506,9507,7,17,0,0,9507,9508,7,14,0,0,9508,9509,7,21,0,0,9509,9510,7,8,0,0,9510,1518,1,0,0,0,9511,9512,7,22,0,0,9512,9513,7,16,0,0,9513,9514,5,49,0,0,9514,9515,5,56,0,0,9515,9516,5,48,0,0,9516,9517,5,51,0,0,9517,9518,5,48,0,0,9518,1520,1,0,0,0,9519,9520,7,22,0,0,9520,9521,7,16,0,0,9521,9522,5,50,0,0,9522,9523,5,51,0,0,9523,9524,5,49,0,0,9524,9525,5,50,0,0,9525,1522,1,0,0,0,9526,9527,7,22,0,0,9527,9528,7,16,0,0,9528,9529,7,21,0,0,9529,1524,1,0,0,0,9530,9531,7,22,0,0,9531,9532,7,7,0,0,9532,9533,7,19,0,0,9533,9534,7,11,0,0,9534,9535,7,6,0,0,9535,9536,7,4,0,0,9536,9537,5,56,0,0,9537,1526,1,0,0,0,9538,9539,7,22,0,0,9539,9540,7,8,0,0,9540,9541,7,7,0,0,9541,9542,7,7,0,0,9542,9543,7,21,0,0,9543,1528,1,0,0,0,9544,9545,7,20,0,0,9545,9546,7,7,0,0,9546,9547,7,16,0,0,9547,9548,7,8,0,0,9548,9549,7,7,0,0,9549,9550,7,9,0,0,9550,1530,1,0,0,0,9551,9552,7,20,0,0,9552,9553,7,25,0,0,9553,9554,5,56,0,0,9554,1532,1,0,0,0,9555,9556,7,21,0,0,9556,9557,7,7,0,0,9557,9558,7,10,0,0,9558,9559,7,16,0,0,9559,9560,7,14,0,0,9560,9561,7,11,0,0,9561,9562,5,50,0,0,9562,1534,1,0,0,0,9563,9564,7,21,0,0,9564,9565,7,19,0,0,9565,9566,7,15,0,0,9566,9567,5,56,0,0,9567,9568,7,8,0,0,9568,1536,1,0,0,0,9569,9570,7,21,0,0,9570,9571,7,19,0,0,9571,9572,7,15,0,0,9572,9573,5,56,0,0,9573,9574,7,17,0,0,9574,1538,1,0,0,0,9575,9576,7,5,0,0,9576,9577,7,3,0,0,9577,9578,7,6,0,0,9578,9579,7,15,0,0,9579,9580,7,12,0,0,9580,9581,5,49,0,0,9581,1540,1,0,0,0,9582,9583,7,5,0,0,9583,9584,7,3,0,0,9584,9585,7,6,0,0,9585,9586,7,15,0,0,9586,9587,7,12,0,0,9587,9588,5,50,0,0,9588,1542,1,0,0,0,9589,9590,7,5,0,0,9590,9591,7,3,0,0,9591,9592,7,6,0,0,9592,9593,7,15,0,0,9593,9594,7,12,0,0,9594,9595,5,53,0,0,9595,1544,1,0,0,0,9596,9597,7,5,0,0,9597,9598,7,3,0,0,9598,9599,7,6,0,0,9599,9600,7,15,0,0,9600,9601,7,12,0,0,9601,9602,5,55,0,0,9602,1546,1,0,0,0,9603,9604,7,23,0,0,9604,9605,7,3,0,0,9605,9606,7,14,0,0,9606,9607,7,14,0,0,9607,9608,7,7,0,0,9608,1548,1,0,0,0,9609,9610,7,23,0,0,9610,9611,7,3,0,0,9611,9612,7,14,0,0,9612,9613,7,8,0,0,9613,9614,7,19,0,0,9614,9615,7,23,0,0,9615,9616,7,3,0,0,9616,9617,7,12,0,0,9617,1550,1,0,0,0,9618,9619,7,11,0,0,9619,9620,7,27,0,0,9620,9621,7,15,0,0,9621,9622,7,11,0,0,9622,1552,1,0,0,0,9623,9624,7,11,0,0,9624,9625,7,9,0,0,9625,9626,7,7,0,0,9626,9627,5,55,0,0,9627,1554,1,0,0,0,9628,9629,7,6,0,0,9629,9630,7,15,0,0,9630,9631,7,11,0,0,9631,9632,5,54,0,0,9632,9633,5,50,0,0,9633,9634,5,48,0,0,9634,1556,1,0,0,0,9635,9636,7,17,0,0,9636,9637,7,14,0,0,9637,9638,7,11,0,0,9638,9639,5,50,0,0,9639,1558,1,0,0,0,9640,9641,7,17,0,0,9641,9642,7,27,0,0,9642,9643,7,15,0,0,9643,9644,7,11,0,0,9644,1560,1,0,0,0,9645,9646,7,17,0,0,9646,9647,7,6,0,0,9647,9648,7,18,0,0,9648,9649,5,49,0,0,9649,9650,5,54,0,0,9650,1562,1,0,0,0,9651,9652,7,17,0,0,9652,9653,7,6,0,0,9653,9654,7,18,0,0,9654,9655,5,49,0,0,9655,9656,5,54,0,0,9656,9657,7,5,0,0,9657,9658,7,7,0,0,9658,1564,1,0,0,0,9659,9660,7,17,0,0,9660,9661,7,6,0,0,9661,9662,7,18,0,0,9662,9663,5,51,0,0,9663,9664,5,50,0,0,9664,1566,1,0,0,0,9665,9666,7,17,0,0,9666,9667,7,6,0,0,9667,9668,7,18,0,0,9668,9669,5,56,0,0,9669,1568,1,0,0,0,9670,9671,7,17,0,0,9671,9672,7,6,0,0,9672,9673,7,18,0,0,9673,9674,5,56,0,0,9674,9675,7,23,0,0,9675,9676,7,16,0,0,9676,9677,5,51,0,0,9677,1570,1,0,0,0,9678,9679,7,17,0,0,9679,9680,7,6,0,0,9680,9681,7,18,0,0,9681,9682,5,56,0,0,9682,9683,7,23,0,0,9683,9684,7,16,0,0,9684,9685,5,52,0,0,9685,1572,1,0,0,0,9686,9687,7,3,0,0,9687,9688,7,8,0,0,9688,9689,7,14,0,0,9689,9690,7,20,0,0,9690,9691,7,15,0,0,9691,9692,7,24,0,0,9692,9693,7,7,0,0,9693,1574,1,0,0,0,9694,9695,7,16,0,0,9695,9696,7,5,0,0,9696,9697,7,3,0,0,9697,9698,7,14,0,0,9698,9699,7,21,0,0,9699,9700,7,20,0,0,9700,9701,7,19,0,0,9701,9702,7,5,0,0,9702,9703,7,7,0,0,9703,1576,1,0,0,0,9704,9705,7,14,0,0,9705,9706,7,11,0,0,9706,9707,7,24,0,0,9707,1578,1,0,0,0,9708,9709,7,18,0,0,9709,9710,7,7,0,0,9710,9711,7,4,0,0,9711,9712,7,7,0,0,9712,9713,7,8,0,0,9713,9714,7,3,0,0,9714,9715,7,6,0,0,9715,9716,7,7,0,0,9716,9717,7,4,0,0,9717,1580,1,0,0,0,9718,9719,7,15,0,0,9719,9720,7,12,0,0,9720,9721,7,12,0,0,9721,9722,7,19,0,0,9722,9723,7,4,0,0,9723,9724,7,16,0,0,9724,1582,1,0,0,0,9725,9726,7,23,0,0,9726,9727,7,7,0,0,9727,9728,7,23,0,0,9728,9729,7,19,0,0,9729,9730,7,8,0,0,9730,9731,7,10,0,0,9731,1584,1,0,0,0,9732,9733,7,23,0,0,9733,9734,7,8,0,0,9734,9735,7,22,0,0,9735,9736,5,95,0,0,9736,9737,7,23,0,0,9737,9738,7,10,0,0,9738,9739,7,15,0,0,9739,9740,7,11,0,0,9740,9741,7,3,0,0,9741,9742,7,23,0,0,9742,1586,1,0,0,0,9743,9744,7,23,0,0,9744,9745,7,10,0,0,9745,9746,7,15,0,0,9746,9747,7,11,0,0,9747,9748,7,3,0,0,9748,9749,7,23,0,0,9749,1588,1,0,0,0,9750,9751,7,12,0,0,9751,9752,7,4,0,0,9752,9753,7,16,0,0,9753,1590,1,0,0,0,9754,9755,7,12,0,0,9755,9756,7,4,0,0,9756,9757,7,16,0,0,9757,9758,7,14,0,0,9758,9759,7,5,0,0,9759,9760,7,17,0,0,9760,9761,7,11,0,0,9761,9762,7,6,0,0,9762,9763,7,7,0,0,9763,9764,7,8,0,0,9764,1592,1,0,0,0,9765,9766,7,25,0,0,9766,9767,7,7,0,0,9767,9768,7,8,0,0,9768,9769,7,18,0,0,9769,9770,7,19,0,0,9770,9771,7,8,0,0,9771,9772,7,23,0,0,9772,9773,7,3,0,0,9773,9774,7,12,0,0,9774,9775,7,14,0,0,9775,9776,7,7,0,0,9776,9777,5,95,0,0,9777,9778,7,11,0,0,9778,9779,7,14,0,0,9779,9780,7,20,0,0,9780,9781,7,7,0,0,9781,9782,7,23,0,0,9782,9783,7,3,0,0,9783,1594,1,0,0,0,9784,9785,7,6,0,0,9785,9786,7,19,0,0,9786,9787,7,21,0,0,9787,9788,7,17,0,0,9788,9789,7,4,0,0,9789,9790,7,16,0,0,9790,1596,1,0,0,0,9791,9792,7,8,0,0,9792,9793,7,7,0,0,9793,9794,7,25,0,0,9794,9795,7,7,0,0,9795,9796,7,3,0,0,9796,9797,7,6,0,0,9797,9798,7,3,0,0,9798,9799,7,16,0,0,9799,9800,7,5,0,0,9800,9801,7,7,0,0,9801,1598,1,0,0,0,9802,9803,7,14,0,0,9803,9804,7,19,0,0,9804,9805,7,23,0,0,9805,9806,7,23,0,0,9806,9807,7,15,0,0,9807,9808,7,6,0,0,9808,9809,7,6,0,0,9809,9810,7,7,0,0,9810,9811,7,4,0,0,9811,1600,1,0,0,0,9812,9813,7,17,0,0,9813,9814,7,12,0,0,9814,9815,7,14,0,0,9815,9816,7,19,0,0,9816,9817,7,23,0,0,9817,9818,7,23,0,0,9818,9819,7,15,0,0,9819,9820,7,6,0,0,9820,9821,7,6,0,0,9821,9822,7,7,0,0,9822,9823,7,4,0,0,9823,1602,1,0,0,0,9824,9825,7,11,0,0,9825,9826,7,7,0,0,9826,9827,7,8,0,0,9827,9828,7,15,0,0,9828,9829,7,3,0,0,9829,9830,7,5,0,0,9830,9831,7,15,0,0,9831,9832,7,13,0,0,9832,9833,7,3,0,0,9833,9834,7,16,0,0,9834,9835,7,5,0,0,9835,9836,7,7,0,0,9836,1604,1,0,0,0,9837,9838,7,22,0,0,9838,9839,7,7,0,0,9839,9840,7,19,0,0,9840,9841,7,23,0,0,9841,9842,7,7,0,0,9842,9843,7,6,0,0,9843,9844,7,8,0,0,9844,9845,7,10,0,0,9845,9846,7,14,0,0,9846,9847,7,19,0,0,9847,9848,7,5,0,0,9848,9849,7,5,0,0,9849,9850,7,7,0,0,9850,9851,7,14,0,0,9851,9852,7,6,0,0,9852,9853,7,15,0,0,9853,9854,7,19,0,0,9854,9855,7,12,0,0,9855,1606,1,0,0,0,9856,9857,7,22,0,0,9857,9858,7,7,0,0,9858,9859,7,19,0,0,9859,9860,7,23,0,0,9860,9861,7,14,0,0,9861,9862,7,19,0,0,9862,9863,7,5,0,0,9863,9864,7,5,0,0,9864,9865,7,7,0,0,9865,9866,7,14,0,0,9866,9867,7,6,0,0,9867,9868,7,15,0,0,9868,9869,7,19,0,0,9869,9870,7,12,0,0,9870,1608,1,0,0,0,9871,9872,7,22,0,0,9872,9873,7,7,0,0,9873,9874,7,19,0,0,9874,9875,7,23,0,0,9875,9876,7,7,0,0,9876,9877,7,6,0,0,9877,9878,7,8,0,0,9878,9879,7,10,0,0,9879,1610,1,0,0,0,9880,9881,7,5,0,0,9881,9882,7,15,0,0,9882,9883,7,12,0,0,9883,9884,7,7,0,0,9884,9885,7,11,0,0,9885,9886,7,6,0,0,9886,9887,7,8,0,0,9887,9888,7,15,0,0,9888,9889,7,12,0,0,9889,9890,7,22,0,0,9890,1612,1,0,0,0,9891,9892,7,23,0,0,9892,9893,7,17,0,0,9893,9894,7,5,0,0,9894,9895,7,6,0,0,9895,9896,7,15,0,0,9896,9897,7,5,0,0,9897,9898,7,15,0,0,9898,9899,7,12,0,0,9899,9900,7,7,0,0,9900,9901,7,11,0,0,9901,9902,7,6,0,0,9902,9903,7,8,0,0,9903,9904,7,15,0,0,9904,9905,7,12,0,0,9905,9906,7,22,0,0,9906,1614,1,0,0,0,9907,9908,7,23,0,0,9908,9909,7,17,0,0,9909,9910,7,5,0,0,9910,9911,7,6,0,0,9911,9912,7,15,0,0,9912,9913,7,25,0,0,9913,9914,7,19,0,0,9914,9915,7,15,0,0,9915,9916,7,12,0,0,9916,9917,7,6,0,0,9917,1616,1,0,0,0,9918,9919,7,23,0,0,9919,9920,7,17,0,0,9920,9921,7,5,0,0,9921,9922,7,6,0,0,9922,9923,7,15,0,0,9923,9924,7,25,0,0,9924,9925,7,19,0,0,9925,9926,7,5,0,0,9926,9927,7,10,0,0,9927,9928,7,22,0,0,9928,9929,7,19,0,0,9929,9930,7,12,0,0,9930,1618,1,0,0,0,9931,9932,7,25,0,0,9932,9933,7,19,0,0,9933,9934,7,15,0,0,9934,9935,7,12,0,0,9935,9936,7,6,0,0,9936,1620,1,0,0,0,9937,9938,7,25,0,0,9938,9939,7,19,0,0,9939,9940,7,5,0,0,9940,9941,7,10,0,0,9941,9942,7,22,0,0,9942,9943,7,19,0,0,9943,9944,7,12,0,0,9944,1622,1,0,0,0,9945,9946,7,3,0,0,9946,9947,7,16,0,0,9947,9948,7,11,0,0,9948,1624,1,0,0,0,9949,9950,7,3,0,0,9950,9951,7,14,0,0,9951,9952,7,19,0,0,9952,9953,7,11,0,0,9953,1626,1,0,0,0,9954,9955,7,3,0,0,9955,9956,7,4,0,0,9956,9957,7,4,0,0,9957,9958,7,4,0,0,9958,9959,7,3,0,0,9959,9960,7,6,0,0,9960,9961,7,7,0,0,9961,1628,1,0,0,0,9962,9963,7,3,0,0,9963,9964,7,4,0,0,9964,9965,7,4,0,0,9965,9966,7,6,0,0,9966,9967,7,15,0,0,9967,9968,7,23,0,0,9968,9969,7,7,0,0,9969,1630,1,0,0,0,9970,9971,7,3,0,0,9971,9972,7,7,0,0,9972,9973,7,11,0,0,9973,9974,5,95,0,0,9974,9975,7,4,0,0,9975,9976,7,7,0,0,9976,9977,7,14,0,0,9977,9978,7,8,0,0,9978,9979,7,10,0,0,9979,9980,7,25,0,0,9980,9981,7,6,0,0,9981,1632,1,0,0,0,9982,9983,7,3,0,0,9983,9984,7,7,0,0,9984,9985,7,11,0,0,9985,9986,5,95,0,0,9986,9987,7,7,0,0,9987,9988,7,12,0,0,9988,9989,7,14,0,0,9989,9990,7,8,0,0,9990,9991,7,10,0,0,9991,9992,7,25,0,0,9992,9993,7,6,0,0,9993,1634,1,0,0,0,9994,9995,7,3,0,0,9995,9996,7,8,0,0,9996,9997,7,7,0,0,9997,9998,7,3,0,0,9998,1636,1,0,0,0,9999,1e4,7,3,0,0,1e4,10001,7,11,0,0,10001,10002,7,16,0,0,10002,10003,7,15,0,0,10003,10004,7,12,0,0,10004,10005,7,3,0,0,10005,10006,7,8,0,0,10006,10007,7,10,0,0,10007,1638,1,0,0,0,10008,10009,7,3,0,0,10009,10010,7,11,0,0,10010,10011,7,15,0,0,10011,10012,7,12,0,0,10012,1640,1,0,0,0,10013,10014,7,3,0,0,10014,10015,7,11,0,0,10015,10016,7,6,0,0,10016,10017,7,7,0,0,10017,10018,7,26,0,0,10018,10019,7,6,0,0,10019,1642,1,0,0,0,10020,10021,7,3,0,0,10021,10022,7,11,0,0,10022,10023,7,9,0,0,10023,10024,7,21,0,0,10024,10025,7,16,0,0,10025,1644,1,0,0,0,10026,10027,7,3,0,0,10027,10028,7,11,0,0,10028,10029,7,9,0,0,10029,10030,7,21,0,0,10030,10031,7,6,0,0,10031,1646,1,0,0,0,10032,10033,7,3,0,0,10033,10034,7,11,0,0,10034,10035,7,10,0,0,10035,10036,7,23,0,0,10036,10037,7,23,0,0,10037,10038,7,7,0,0,10038,10039,7,6,0,0,10039,10040,7,8,0,0,10040,10041,7,15,0,0,10041,10042,7,14,0,0,10042,10043,5,95,0,0,10043,10044,7,4,0,0,10044,10045,7,7,0,0,10045,10046,7,14,0,0,10046,10047,7,8,0,0,10047,10048,7,10,0,0,10048,10049,7,25,0,0,10049,10050,7,6,0,0,10050,1648,1,0,0,0,10051,10052,7,3,0,0,10052,10053,7,11,0,0,10053,10054,7,10,0,0,10054,10055,7,23,0,0,10055,10056,7,23,0,0,10056,10057,7,7,0,0,10057,10058,7,6,0,0,10058,10059,7,8,0,0,10059,10060,7,15,0,0,10060,10061,7,14,0,0,10061,10062,5,95,0,0,10062,10063,7,4,0,0,10063,10064,7,7,0,0,10064,10065,7,8,0,0,10065,10066,7,15,0,0,10066,10067,7,24,0,0,10067,10068,7,7,0,0,10068,1650,1,0,0,0,10069,10070,7,3,0,0,10070,10071,7,11,0,0,10071,10072,7,10,0,0,10072,10073,7,23,0,0,10073,10074,7,23,0,0,10074,10075,7,7,0,0,10075,10076,7,6,0,0,10076,10077,7,8,0,0,10077,10078,7,15,0,0,10078,10079,7,14,0,0,10079,10080,5,95,0,0,10080,10081,7,7,0,0,10081,10082,7,12,0,0,10082,10083,7,14,0,0,10083,10084,7,8,0,0,10084,10085,7,10,0,0,10085,10086,7,25,0,0,10086,10087,7,6,0,0,10087,1652,1,0,0,0,10088,10089,7,3,0,0,10089,10090,7,11,0,0,10090,10091,7,10,0,0,10091,10092,7,23,0,0,10092,10093,7,23,0,0,10093,10094,7,7,0,0,10094,10095,7,6,0,0,10095,10096,7,8,0,0,10096,10097,7,15,0,0,10097,10098,7,14,0,0,10098,10099,5,95,0,0,10099,10100,7,11,0,0,10100,10101,7,15,0,0,10101,10102,7,22,0,0,10102,10103,7,12,0,0,10103,1654,1,0,0,0,10104,10105,7,3,0,0,10105,10106,7,11,0,0,10106,10107,7,10,0,0,10107,10108,7,23,0,0,10108,10109,7,23,0,0,10109,10110,7,7,0,0,10110,10111,7,6,0,0,10111,10112,7,8,0,0,10112,10113,7,15,0,0,10113,10114,7,14,0,0,10114,10115,5,95,0,0,10115,10116,7,24,0,0,10116,10117,7,7,0,0,10117,10118,7,8,0,0,10118,10119,7,15,0,0,10119,10120,7,18,0,0,10120,10121,7,10,0,0,10121,1656,1,0,0,0,10122,10123,7,3,0,0,10123,10124,7,6,0,0,10124,10125,7,3,0,0,10125,10126,7,12,0,0,10126,1658,1,0,0,0,10127,10128,7,3,0,0,10128,10129,7,6,0,0,10129,10130,7,3,0,0,10130,10131,7,12,0,0,10131,10132,5,50,0,0,10132,1660,1,0,0,0,10133,10134,7,16,0,0,10134,10135,7,7,0,0,10135,10136,7,12,0,0,10136,10137,7,14,0,0,10137,10138,7,20,0,0,10138,10139,7,23,0,0,10139,10140,7,3,0,0,10140,10141,7,8,0,0,10141,10142,7,21,0,0,10142,1662,1,0,0,0,10143,10144,7,16,0,0,10144,10145,7,15,0,0,10145,10146,7,12,0,0,10146,1664,1,0,0,0,10147,10148,7,16,0,0,10148,10149,7,15,0,0,10149,10150,7,6,0,0,10150,10151,5,95,0,0,10151,10152,7,14,0,0,10152,10153,7,19,0,0,10153,10154,7,17,0,0,10154,10155,7,12,0,0,10155,10156,7,6,0,0,10156,1666,1,0,0,0,10157,10158,7,16,0,0,10158,10159,7,15,0,0,10159,10160,7,6,0,0,10160,10161,5,95,0,0,10161,10162,7,5,0,0,10162,10163,7,7,0,0,10163,10164,7,12,0,0,10164,10165,7,22,0,0,10165,10166,7,6,0,0,10166,10167,7,20,0,0,10167,1668,1,0,0,0,10168,10169,7,16,0,0,10169,10170,7,17,0,0,10170,10171,7,18,0,0,10171,10172,7,18,0,0,10172,10173,7,7,0,0,10173,10174,7,8,0,0,10174,1670,1,0,0,0,10175,10176,7,14,0,0,10176,10177,7,3,0,0,10177,10178,7,6,0,0,10178,10179,7,3,0,0,10179,10180,7,5,0,0,10180,10181,7,19,0,0,10181,10182,7,22,0,0,10182,10183,5,95,0,0,10183,10184,7,12,0,0,10184,10185,7,3,0,0,10185,10186,7,23,0,0,10186,10187,7,7,0,0,10187,1672,1,0,0,0,10188,10189,7,14,0,0,10189,10190,7,7,0,0,10190,10191,7,15,0,0,10191,10192,7,5,0,0,10192,1674,1,0,0,0,10193,10194,7,14,0,0,10194,10195,7,7,0,0,10195,10196,7,15,0,0,10196,10197,7,5,0,0,10197,10198,7,15,0,0,10198,10199,7,12,0,0,10199,10200,7,22,0,0,10200,1676,1,0,0,0,10201,10202,7,14,0,0,10202,10203,7,7,0,0,10203,10204,7,12,0,0,10204,10205,7,6,0,0,10205,10206,7,8,0,0,10206,10207,7,19,0,0,10207,10208,7,15,0,0,10208,10209,7,4,0,0,10209,1678,1,0,0,0,10210,10211,7,14,0,0,10211,10212,7,20,0,0,10212,10213,7,3,0,0,10213,10214,7,8,0,0,10214,10215,7,3,0,0,10215,10216,7,14,0,0,10216,10217,7,6,0,0,10217,10218,7,7,0,0,10218,10219,7,8,0,0,10219,10220,5,95,0,0,10220,10221,7,5,0,0,10221,10222,7,7,0,0,10222,10223,7,12,0,0,10223,10224,7,22,0,0,10224,10225,7,6,0,0,10225,10226,7,20,0,0,10226,1680,1,0,0,0,10227,10228,7,14,0,0,10228,10229,7,20,0,0,10229,10230,7,3,0,0,10230,10231,7,8,0,0,10231,10232,7,11,0,0,10232,10233,7,7,0,0,10233,10234,7,6,0,0,10234,1682,1,0,0,0,10235,10236,7,14,0,0,10236,10237,7,20,0,0,10237,10238,7,3,0,0,10238,10239,7,8,0,0,10239,10240,5,95,0,0,10240,10241,7,5,0,0,10241,10242,7,7,0,0,10242,10243,7,12,0,0,10243,10244,7,22,0,0,10244,10245,7,6,0,0,10245,10246,7,20,0,0,10246,1684,1,0,0,0,10247,10248,7,14,0,0,10248,10249,7,19,0,0,10249,10250,7,7,0,0,10250,10251,7,8,0,0,10251,10252,7,14,0,0,10252,10253,7,15,0,0,10253,10254,7,16,0,0,10254,10255,7,15,0,0,10255,10256,7,5,0,0,10256,10257,7,15,0,0,10257,10258,7,6,0,0,10258,10259,7,10,0,0,10259,1686,1,0,0,0,10260,10261,7,14,0,0,10261,10262,7,19,0,0,10262,10263,7,5,0,0,10263,10264,7,5,0,0,10264,10265,7,3,0,0,10265,10266,7,6,0,0,10266,10267,7,15,0,0,10267,10268,7,19,0,0,10268,10269,7,12,0,0,10269,1688,1,0,0,0,10270,10271,7,14,0,0,10271,10272,7,19,0,0,10272,10273,7,23,0,0,10273,10274,7,25,0,0,10274,10275,7,8,0,0,10275,10276,7,7,0,0,10276,10277,7,11,0,0,10277,10278,7,11,0,0,10278,1690,1,0,0,0,10279,10280,7,14,0,0,10280,10281,7,19,0,0,10281,10282,7,12,0,0,10282,10283,7,14,0,0,10283,10284,7,3,0,0,10284,10285,7,6,0,0,10285,1692,1,0,0,0,10286,10287,7,14,0,0,10287,10288,7,19,0,0,10288,10289,7,12,0,0,10289,10290,7,14,0,0,10290,10291,7,3,0,0,10291,10292,7,6,0,0,10292,10293,5,95,0,0,10293,10294,7,9,0,0,10294,10295,7,11,0,0,10295,1694,1,0,0,0,10296,10297,7,14,0,0,10297,10298,7,19,0,0,10298,10299,7,12,0,0,10299,10300,7,12,0,0,10300,10301,7,7,0,0,10301,10302,7,14,0,0,10302,10303,7,6,0,0,10303,10304,7,15,0,0,10304,10305,7,19,0,0,10305,10306,7,12,0,0,10306,10307,5,95,0,0,10307,10308,7,15,0,0,10308,10309,7,4,0,0,10309,1696,1,0,0,0,10310,10311,7,14,0,0,10311,10312,7,19,0,0,10312,10313,7,12,0,0,10313,10314,7,24,0,0,10314,1698,1,0,0,0,10315,10316,7,14,0,0,10316,10317,7,19,0,0,10317,10318,7,12,0,0,10318,10319,7,24,0,0,10319,10320,7,7,0,0,10320,10321,7,8,0,0,10321,10322,7,6,0,0,10322,10323,5,95,0,0,10323,10324,7,6,0,0,10324,10325,7,13,0,0,10325,1700,1,0,0,0,10326,10327,7,14,0,0,10327,10328,7,19,0,0,10328,10329,7,11,0,0,10329,1702,1,0,0,0,10330,10331,7,14,0,0,10331,10332,7,19,0,0,10332,10333,7,6,0,0,10333,1704,1,0,0,0,10334,10335,7,14,0,0,10335,10336,7,8,0,0,10336,10337,7,14,0,0,10337,10338,5,51,0,0,10338,10339,5,50,0,0,10339,1706,1,0,0,0,10340,10341,7,14,0,0,10341,10342,7,8,0,0,10342,10343,7,7,0,0,10343,10344,7,3,0,0,10344,10345,7,6,0,0,10345,10346,7,7,0,0,10346,10347,5,95,0,0,10347,10348,7,3,0,0,10348,10349,7,11,0,0,10349,10350,7,10,0,0,10350,10351,7,23,0,0,10351,10352,7,23,0,0,10352,10353,7,7,0,0,10353,10354,7,6,0,0,10354,10355,7,8,0,0,10355,10356,7,15,0,0,10356,10357,7,14,0,0,10357,10358,5,95,0,0,10358,10359,7,25,0,0,10359,10360,7,8,0,0,10360,10361,7,15,0,0,10361,10362,7,24,0,0,10362,10363,5,95,0,0,10363,10364,7,21,0,0,10364,10365,7,7,0,0,10365,10366,7,10,0,0,10366,1708,1,0,0,0,10367,10368,7,14,0,0,10368,10369,7,8,0,0,10369,10370,7,7,0,0,10370,10371,7,3,0,0,10371,10372,7,6,0,0,10372,10373,7,7,0,0,10373,10374,5,95,0,0,10374,10375,7,3,0,0,10375,10376,7,11,0,0,10376,10377,7,10,0,0,10377,10378,7,23,0,0,10378,10379,7,23,0,0,10379,10380,7,7,0,0,10380,10381,7,6,0,0,10381,10382,7,8,0,0,10382,10383,7,15,0,0,10383,10384,7,14,0,0,10384,10385,5,95,0,0,10385,10386,7,25,0,0,10386,10387,7,17,0,0,10387,10388,7,16,0,0,10388,10389,5,95,0,0,10389,10390,7,21,0,0,10390,10391,7,7,0,0,10391,10392,7,10,0,0,10392,1710,1,0,0,0,10393,10394,7,14,0,0,10394,10395,7,8,0,0,10395,10396,7,7,0,0,10396,10397,7,3,0,0,10397,10398,7,6,0,0,10398,10399,7,7,0,0,10399,10400,5,95,0,0,10400,10401,7,4,0,0,10401,10402,7,20,0,0,10402,10403,5,95,0,0,10403,10404,7,25,0,0,10404,10405,7,3,0,0,10405,10406,7,8,0,0,10406,10407,7,3,0,0,10407,10408,7,23,0,0,10408,10409,7,7,0,0,10409,10410,7,6,0,0,10410,10411,7,7,0,0,10411,10412,7,8,0,0,10412,10413,7,11,0,0,10413,1712,1,0,0,0,10414,10415,7,14,0,0,10415,10416,7,8,0,0,10416,10417,7,7,0,0,10417,10418,7,3,0,0,10418,10419,7,6,0,0,10419,10420,7,7,0,0,10420,10421,5,95,0,0,10421,10422,7,4,0,0,10422,10423,7,15,0,0,10423,10424,7,22,0,0,10424,10425,7,7,0,0,10425,10426,7,11,0,0,10426,10427,7,6,0,0,10427,1714,1,0,0,0,10428,10429,7,14,0,0,10429,10430,7,8,0,0,10430,10431,7,19,0,0,10431,10432,7,11,0,0,10432,10433,7,11,0,0,10433,10434,7,7,0,0,10434,10435,7,11,0,0,10435,1716,1,0,0,0,10436,10437,7,4,0,0,10437,10438,7,3,0,0,10438,10439,7,6,0,0,10439,10440,7,7,0,0,10440,10441,7,4,0,0,10441,10442,7,15,0,0,10442,10443,7,18,0,0,10443,10444,7,18,0,0,10444,1718,1,0,0,0,10445,10446,7,4,0,0,10446,10447,7,3,0,0,10447,10448,7,6,0,0,10448,10449,7,7,0,0,10449,10450,5,95,0,0,10450,10451,7,18,0,0,10451,10452,7,19,0,0,10452,10453,7,8,0,0,10453,10454,7,23,0,0,10454,10455,7,3,0,0,10455,10456,7,6,0,0,10456,1720,1,0,0,0,10457,10458,7,4,0,0,10458,10459,7,3,0,0,10459,10460,7,10,0,0,10460,10461,7,12,0,0,10461,10462,7,3,0,0,10462,10463,7,23,0,0,10463,10464,7,7,0,0,10464,1722,1,0,0,0,10465,10466,7,4,0,0,10466,10467,7,3,0,0,10467,10468,7,10,0,0,10468,10469,7,19,0,0,10469,10470,7,18,0,0,10470,10471,7,23,0,0,10471,10472,7,19,0,0,10472,10473,7,12,0,0,10473,10474,7,6,0,0,10474,10475,7,20,0,0,10475,1724,1,0,0,0,10476,10477,7,4,0,0,10477,10478,7,3,0,0,10478,10479,7,10,0,0,10479,10480,7,19,0,0,10480,10481,7,18,0,0,10481,10482,7,9,0,0,10482,10483,7,7,0,0,10483,10484,7,7,0,0,10484,10485,7,21,0,0,10485,1726,1,0,0,0,10486,10487,7,4,0,0,10487,10488,7,3,0,0,10488,10489,7,10,0,0,10489,10490,7,19,0,0,10490,10491,7,18,0,0,10491,10492,7,10,0,0,10492,10493,7,7,0,0,10493,10494,7,3,0,0,10494,10495,7,8,0,0,10495,1728,1,0,0,0,10496,10497,7,4,0,0,10497,10498,7,7,0,0,10498,10499,7,14,0,0,10499,10500,7,19,0,0,10500,10501,7,4,0,0,10501,10502,7,7,0,0,10502,1730,1,0,0,0,10503,10504,7,4,0,0,10504,10505,7,7,0,0,10505,10506,7,22,0,0,10506,10507,7,8,0,0,10507,10508,7,7,0,0,10508,10509,7,7,0,0,10509,10510,7,11,0,0,10510,1732,1,0,0,0,10511,10512,7,4,0,0,10512,10513,7,7,0,0,10513,10514,7,11,0,0,10514,10515,5,95,0,0,10515,10516,7,4,0,0,10516,10517,7,7,0,0,10517,10518,7,14,0,0,10518,10519,7,8,0,0,10519,10520,7,10,0,0,10520,10521,7,25,0,0,10521,10522,7,6,0,0,10522,1734,1,0,0,0,10523,10524,7,4,0,0,10524,10525,7,7,0,0,10525,10526,7,11,0,0,10526,10527,5,95,0,0,10527,10528,7,7,0,0,10528,10529,7,12,0,0,10529,10530,7,14,0,0,10530,10531,7,8,0,0,10531,10532,7,10,0,0,10532,10533,7,25,0,0,10533,10534,7,6,0,0,10534,1736,1,0,0,0,10535,10536,7,4,0,0,10536,10537,7,15,0,0,10537,10538,7,23,0,0,10538,10539,7,7,0,0,10539,10540,7,12,0,0,10540,10541,7,11,0,0,10541,10542,7,15,0,0,10542,10543,7,19,0,0,10543,10544,7,12,0,0,10544,1738,1,0,0,0,10545,10546,7,4,0,0,10546,10547,7,15,0,0,10547,10548,7,11,0,0,10548,10549,7,27,0,0,10549,10550,7,19,0,0,10550,10551,7,15,0,0,10551,10552,7,12,0,0,10552,10553,7,6,0,0,10553,1740,1,0,0,0,10554,10555,7,7,0,0,10555,10556,7,5,0,0,10556,10557,7,6,0,0,10557,1742,1,0,0,0,10558,10559,7,7,0,0,10559,10560,7,12,0,0,10560,10561,7,14,0,0,10561,10562,7,19,0,0,10562,10563,7,4,0,0,10563,10564,7,7,0,0,10564,1744,1,0,0,0,10565,10566,7,7,0,0,10566,10567,7,12,0,0,10567,10568,7,14,0,0,10568,10569,7,8,0,0,10569,10570,7,10,0,0,10570,10571,7,25,0,0,10571,10572,7,6,0,0,10572,1746,1,0,0,0,10573,10574,7,7,0,0,10574,10575,7,12,0,0,10575,10576,7,4,0,0,10576,10577,7,25,0,0,10577,10578,7,19,0,0,10578,10579,7,15,0,0,10579,10580,7,12,0,0,10580,10581,7,6,0,0,10581,1748,1,0,0,0,10582,10583,7,7,0,0,10583,10584,7,12,0,0,10584,10585,7,22,0,0,10585,10586,7,15,0,0,10586,10587,7,12,0,0,10587,10588,7,7,0,0,10588,10589,5,95,0,0,10589,10590,7,3,0,0,10590,10591,7,6,0,0,10591,10592,7,6,0,0,10592,10593,7,8,0,0,10593,10594,7,15,0,0,10594,10595,7,16,0,0,10595,10596,7,17,0,0,10596,10597,7,6,0,0,10597,10598,7,7,0,0,10598,1750,1,0,0,0,10599,10600,7,7,0,0,10600,10601,7,12,0,0,10601,10602,7,24,0,0,10602,10603,7,7,0,0,10603,10604,7,5,0,0,10604,10605,7,19,0,0,10605,10606,7,25,0,0,10606,10607,7,7,0,0,10607,1752,1,0,0,0,10608,10609,7,7,0,0,10609,10610,7,28,0,0,10610,10611,7,17,0,0,10611,10612,7,3,0,0,10612,10613,7,5,0,0,10613,10614,7,11,0,0,10614,1754,1,0,0,0,10615,10616,7,7,0,0,10616,10617,7,26,0,0,10617,10618,7,25,0,0,10618,1756,1,0,0,0,10619,10620,7,7,0,0,10620,10621,7,26,0,0,10621,10622,7,25,0,0,10622,10623,7,19,0,0,10623,10624,7,8,0,0,10624,10625,7,6,0,0,10625,10626,5,95,0,0,10626,10627,7,11,0,0,10627,10628,7,7,0,0,10628,10629,7,6,0,0,10629,1758,1,0,0,0,10630,10631,7,7,0,0,10631,10632,7,26,0,0,10632,10633,7,6,0,0,10633,10634,7,7,0,0,10634,10635,7,8,0,0,10635,10636,7,15,0,0,10636,10637,7,19,0,0,10637,10638,7,8,0,0,10638,10639,7,8,0,0,10639,10640,7,15,0,0,10640,10641,7,12,0,0,10641,10642,7,22,0,0,10642,1760,1,0,0,0,10643,10644,7,7,0,0,10644,10645,7,26,0,0,10645,10646,7,6,0,0,10646,10647,7,8,0,0,10647,10648,7,3,0,0,10648,10649,7,14,0,0,10649,10650,7,6,0,0,10650,10651,7,24,0,0,10651,10652,7,3,0,0,10652,10653,7,5,0,0,10653,10654,7,17,0,0,10654,10655,7,7,0,0,10655,1762,1,0,0,0,10656,10657,7,18,0,0,10657,10658,7,15,0,0,10658,10659,7,7,0,0,10659,10660,7,5,0,0,10660,10661,7,4,0,0,10661,1764,1,0,0,0,10662,10663,7,18,0,0,10663,10664,7,15,0,0,10664,10665,7,12,0,0,10665,10666,7,4,0,0,10666,10667,5,95,0,0,10667,10668,7,15,0,0,10668,10669,7,12,0,0,10669,10670,5,95,0,0,10670,10671,7,11,0,0,10671,10672,7,7,0,0,10672,10673,7,6,0,0,10673,1766,1,0,0,0,10674,10675,7,18,0,0,10675,10676,7,5,0,0,10676,10677,7,19,0,0,10677,10678,7,19,0,0,10678,10679,7,8,0,0,10679,1768,1,0,0,0,10680,10681,7,18,0,0,10681,10682,7,19,0,0,10682,10683,7,8,0,0,10683,10684,7,23,0,0,10684,10685,7,3,0,0,10685,10686,7,6,0,0,10686,1770,1,0,0,0,10687,10688,7,18,0,0,10688,10689,7,19,0,0,10689,10690,7,17,0,0,10690,10691,7,12,0,0,10691,10692,7,4,0,0,10692,10693,5,95,0,0,10693,10694,7,8,0,0,10694,10695,7,19,0,0,10695,10696,7,9,0,0,10696,10697,7,11,0,0,10697,1772,1,0,0,0,10698,10699,7,18,0,0,10699,10700,7,8,0,0,10700,10701,7,19,0,0,10701,10702,7,23,0,0,10702,10703,5,95,0,0,10703,10704,7,16,0,0,10704,10705,7,3,0,0,10705,10706,7,11,0,0,10706,10707,7,7,0,0,10707,10708,5,54,0,0,10708,10709,5,52,0,0,10709,1774,1,0,0,0,10710,10711,7,18,0,0,10711,10712,7,8,0,0,10712,10713,7,19,0,0,10713,10714,7,23,0,0,10714,10715,5,95,0,0,10715,10716,7,4,0,0,10716,10717,7,3,0,0,10717,10718,7,10,0,0,10718,10719,7,11,0,0,10719,1776,1,0,0,0,10720,10721,7,18,0,0,10721,10722,7,8,0,0,10722,10723,7,19,0,0,10723,10724,7,23,0,0,10724,10725,5,95,0,0,10725,10726,7,17,0,0,10726,10727,7,12,0,0,10727,10728,7,15,0,0,10728,10729,7,26,0,0,10729,10730,7,6,0,0,10730,10731,7,15,0,0,10731,10732,7,23,0,0,10732,10733,7,7,0,0,10733,1778,1,0,0,0,10734,10735,7,22,0,0,10735,10736,7,7,0,0,10736,10737,7,19,0,0,10737,10738,7,23,0,0,10738,10739,7,14,0,0,10739,10740,7,19,0,0,10740,10741,7,5,0,0,10741,10742,7,5,0,0,10742,10743,7,18,0,0,10743,10744,7,8,0,0,10744,10745,7,19,0,0,10745,10746,7,23,0,0,10746,10747,7,6,0,0,10747,10748,7,7,0,0,10748,10749,7,26,0,0,10749,10750,7,6,0,0,10750,1780,1,0,0,0,10751,10752,7,22,0,0,10752,10753,7,7,0,0,10753,10754,7,19,0,0,10754,10755,7,23,0,0,10755,10756,7,14,0,0,10756,10757,7,19,0,0,10757,10758,7,5,0,0,10758,10759,7,5,0,0,10759,10760,7,18,0,0,10760,10761,7,8,0,0,10761,10762,7,19,0,0,10762,10763,7,23,0,0,10763,10764,7,9,0,0,10764,10765,7,21,0,0,10765,10766,7,16,0,0,10766,1782,1,0,0,0,10767,10768,7,22,0,0,10768,10769,7,7,0,0,10769,10770,7,19,0,0,10770,10771,7,23,0,0,10771,10772,7,7,0,0,10772,10773,7,6,0,0,10773,10774,7,8,0,0,10774,10775,7,10,0,0,10775,10776,7,14,0,0,10776,10777,7,19,0,0,10777,10778,7,5,0,0,10778,10779,7,5,0,0,10779,10780,7,7,0,0,10780,10781,7,14,0,0,10781,10782,7,6,0,0,10782,10783,7,15,0,0,10783,10784,7,19,0,0,10784,10785,7,12,0,0,10785,10786,7,18,0,0,10786,10787,7,8,0,0,10787,10788,7,19,0,0,10788,10789,7,23,0,0,10789,10790,7,6,0,0,10790,10791,7,7,0,0,10791,10792,7,26,0,0,10792,10793,7,6,0,0,10793,1784,1,0,0,0,10794,10795,7,22,0,0,10795,10796,7,7,0,0,10796,10797,7,19,0,0,10797,10798,7,23,0,0,10798,10799,7,7,0,0,10799,10800,7,6,0,0,10800,10801,7,8,0,0,10801,10802,7,10,0,0,10802,10803,7,14,0,0,10803,10804,7,19,0,0,10804,10805,7,5,0,0,10805,10806,7,5,0,0,10806,10807,7,7,0,0,10807,10808,7,14,0,0,10808,10809,7,6,0,0,10809,10810,7,15,0,0,10810,10811,7,19,0,0,10811,10812,7,12,0,0,10812,10813,7,18,0,0,10813,10814,7,8,0,0,10814,10815,7,19,0,0,10815,10816,7,23,0,0,10816,10817,7,9,0,0,10817,10818,7,21,0,0,10818,10819,7,16,0,0,10819,1786,1,0,0,0,10820,10821,7,22,0,0,10821,10822,7,7,0,0,10822,10823,7,19,0,0,10823,10824,7,23,0,0,10824,10825,7,7,0,0,10825,10826,7,6,0,0,10826,10827,7,8,0,0,10827,10828,7,10,0,0,10828,10829,7,18,0,0,10829,10830,7,8,0,0,10830,10831,7,19,0,0,10831,10832,7,23,0,0,10832,10833,7,6,0,0,10833,10834,7,7,0,0,10834,10835,7,26,0,0,10835,10836,7,6,0,0,10836,1788,1,0,0,0,10837,10838,7,22,0,0,10838,10839,7,7,0,0,10839,10840,7,19,0,0,10840,10841,7,23,0,0,10841,10842,7,7,0,0,10842,10843,7,6,0,0,10843,10844,7,8,0,0,10844,10845,7,10,0,0,10845,10846,7,18,0,0,10846,10847,7,8,0,0,10847,10848,7,19,0,0,10848,10849,7,23,0,0,10849,10850,7,9,0,0,10850,10851,7,21,0,0,10851,10852,7,16,0,0,10852,1790,1,0,0,0,10853,10854,7,22,0,0,10854,10855,7,7,0,0,10855,10856,7,19,0,0,10856,10857,7,23,0,0,10857,10858,7,7,0,0,10858,10859,7,6,0,0,10859,10860,7,8,0,0,10860,10861,7,10,0,0,10861,10862,7,12,0,0,10862,1792,1,0,0,0,10863,10864,7,22,0,0,10864,10865,7,7,0,0,10865,10866,7,19,0,0,10866,10867,7,23,0,0,10867,10868,7,7,0,0,10868,10869,7,6,0,0,10869,10870,7,8,0,0,10870,10871,7,10,0,0,10871,10872,7,6,0,0,10872,10873,7,10,0,0,10873,10874,7,25,0,0,10874,10875,7,7,0,0,10875,1794,1,0,0,0,10876,10877,7,22,0,0,10877,10878,7,7,0,0,10878,10879,7,19,0,0,10879,10880,7,23,0,0,10880,10881,7,18,0,0,10881,10882,7,8,0,0,10882,10883,7,19,0,0,10883,10884,7,23,0,0,10884,10885,7,6,0,0,10885,10886,7,7,0,0,10886,10887,7,26,0,0,10887,10888,7,6,0,0,10888,1796,1,0,0,0,10889,10890,7,22,0,0,10890,10891,7,7,0,0,10891,10892,7,19,0,0,10892,10893,7,23,0,0,10893,10894,7,18,0,0,10894,10895,7,8,0,0,10895,10896,7,19,0,0,10896,10897,7,23,0,0,10897,10898,7,9,0,0,10898,10899,7,21,0,0,10899,10900,7,16,0,0,10900,1798,1,0,0,0,10901,10902,7,22,0,0,10902,10903,7,7,0,0,10903,10904,7,6,0,0,10904,10905,5,95,0,0,10905,10906,7,18,0,0,10906,10907,7,19,0,0,10907,10908,7,8,0,0,10908,10909,7,23,0,0,10909,10910,7,3,0,0,10910,10911,7,6,0,0,10911,1800,1,0,0,0,10912,10913,7,22,0,0,10913,10914,7,7,0,0,10914,10915,7,6,0,0,10915,10916,5,95,0,0,10916,10917,7,5,0,0,10917,10918,7,19,0,0,10918,10919,7,14,0,0,10919,10920,7,21,0,0,10920,1802,1,0,0,0,10921,10922,7,22,0,0,10922,10923,7,5,0,0,10923,10924,7,7,0,0,10924,10925,7,12,0,0,10925,10926,7,22,0,0,10926,10927,7,6,0,0,10927,10928,7,20,0,0,10928,1804,1,0,0,0,10929,10930,7,22,0,0,10930,10931,7,8,0,0,10931,10932,7,7,0,0,10932,10933,7,3,0,0,10933,10934,7,6,0,0,10934,10935,7,7,0,0,10935,10936,7,11,0,0,10936,10937,7,6,0,0,10937,1806,1,0,0,0,10938,10939,7,22,0,0,10939,10940,7,6,0,0,10940,10941,7,15,0,0,10941,10942,7,4,0,0,10942,10943,5,95,0,0,10943,10944,7,11,0,0,10944,10945,7,17,0,0,10945,10946,7,16,0,0,10946,10947,7,11,0,0,10947,10948,7,7,0,0,10948,10949,7,6,0,0,10949,1808,1,0,0,0,10950,10951,7,22,0,0,10951,10952,7,6,0,0,10952,10953,7,15,0,0,10953,10954,7,4,0,0,10954,10955,5,95,0,0,10955,10956,7,11,0,0,10956,10957,7,17,0,0,10957,10958,7,16,0,0,10958,10959,7,6,0,0,10959,10960,7,8,0,0,10960,10961,7,3,0,0,10961,10962,7,14,0,0,10962,10963,7,6,0,0,10963,1810,1,0,0,0,10964,10965,7,20,0,0,10965,10966,7,7,0,0,10966,10967,7,26,0,0,10967,1812,1,0,0,0,10968,10969,7,15,0,0,10969,10970,7,18,0,0,10970,10971,7,12,0,0,10971,10972,7,17,0,0,10972,10973,7,5,0,0,10973,10974,7,5,0,0,10974,1814,1,0,0,0,10975,10976,7,15,0,0,10976,10977,7,12,0,0,10977,10978,7,7,0,0,10978,10979,7,6,0,0,10979,10980,5,54,0,0,10980,10981,5,95,0,0,10981,10982,7,3,0,0,10982,10983,7,6,0,0,10983,10984,7,19,0,0,10984,10985,7,12,0,0,10985,1816,1,0,0,0,10986,10987,7,15,0,0,10987,10988,7,12,0,0,10988,10989,7,7,0,0,10989,10990,7,6,0,0,10990,10991,5,54,0,0,10991,10992,5,95,0,0,10992,10993,7,12,0,0,10993,10994,7,6,0,0,10994,10995,7,19,0,0,10995,10996,7,3,0,0,10996,1818,1,0,0,0,10997,10998,7,15,0,0,10998,10999,7,12,0,0,10999,11e3,7,7,0,0,11e3,11001,7,6,0,0,11001,11002,5,95,0,0,11002,11003,7,3,0,0,11003,11004,7,6,0,0,11004,11005,7,19,0,0,11005,11006,7,12,0,0,11006,1820,1,0,0,0,11007,11008,7,15,0,0,11008,11009,7,12,0,0,11009,11010,7,7,0,0,11010,11011,7,6,0,0,11011,11012,5,95,0,0,11012,11013,7,12,0,0,11013,11014,7,6,0,0,11014,11015,7,19,0,0,11015,11016,7,3,0,0,11016,1822,1,0,0,0,11017,11018,7,15,0,0,11018,11019,7,12,0,0,11019,11020,7,11,0,0,11020,11021,7,6,0,0,11021,11022,7,8,0,0,11022,1824,1,0,0,0,11023,11024,7,15,0,0,11024,11025,7,12,0,0,11025,11026,7,6,0,0,11026,11027,7,7,0,0,11027,11028,7,8,0,0,11028,11029,7,15,0,0,11029,11030,7,19,0,0,11030,11031,7,8,0,0,11031,11032,7,8,0,0,11032,11033,7,15,0,0,11033,11034,7,12,0,0,11034,11035,7,22,0,0,11035,11036,7,12,0,0,11036,1826,1,0,0,0,11037,11038,7,15,0,0,11038,11039,7,12,0,0,11039,11040,7,6,0,0,11040,11041,7,7,0,0,11041,11042,7,8,0,0,11042,11043,7,11,0,0,11043,11044,7,7,0,0,11044,11045,7,14,0,0,11045,11046,7,6,0,0,11046,11047,7,11,0,0,11047,1828,1,0,0,0,11048,11049,7,15,0,0,11049,11050,7,11,0,0,11050,11051,7,14,0,0,11051,11052,7,5,0,0,11052,11053,7,19,0,0,11053,11054,7,11,0,0,11054,11055,7,7,0,0,11055,11056,7,4,0,0,11056,1830,1,0,0,0,11057,11058,7,15,0,0,11058,11059,7,11,0,0,11059,11060,7,7,0,0,11060,11061,7,23,0,0,11061,11062,7,25,0,0,11062,11063,7,6,0,0,11063,11064,7,10,0,0,11064,1832,1,0,0,0,11065,11066,7,15,0,0,11066,11067,7,11,0,0,11067,11068,7,12,0,0,11068,11069,7,17,0,0,11069,11070,7,5,0,0,11070,11071,7,5,0,0,11071,1834,1,0,0,0,11072,11073,7,15,0,0,11073,11074,7,11,0,0,11074,11075,7,11,0,0,11075,11076,7,15,0,0,11076,11077,7,23,0,0,11077,11078,7,25,0,0,11078,11079,7,5,0,0,11079,11080,7,7,0,0,11080,1836,1,0,0,0,11081,11082,7,15,0,0,11082,11083,7,11,0,0,11083,11084,5,95,0,0,11084,11085,7,18,0,0,11085,11086,7,8,0,0,11086,11087,7,7,0,0,11087,11088,7,7,0,0,11088,11089,5,95,0,0,11089,11090,7,5,0,0,11090,11091,7,19,0,0,11091,11092,7,14,0,0,11092,11093,7,21,0,0,11093,1838,1,0,0,0,11094,11095,7,15,0,0,11095,11096,7,11,0,0,11096,11097,5,95,0,0,11097,11098,7,15,0,0,11098,11099,7,25,0,0,11099,11100,7,24,0,0,11100,11101,5,52,0,0,11101,1840,1,0,0,0,11102,11103,7,15,0,0,11103,11104,7,11,0,0,11104,11105,5,95,0,0,11105,11106,7,15,0,0,11106,11107,7,25,0,0,11107,11108,7,24,0,0,11108,11109,5,52,0,0,11109,11110,5,95,0,0,11110,11111,7,14,0,0,11111,11112,7,19,0,0,11112,11113,7,23,0,0,11113,11114,7,25,0,0,11114,11115,7,3,0,0,11115,11116,7,6,0,0,11116,1842,1,0,0,0,11117,11118,7,15,0,0,11118,11119,7,11,0,0,11119,11120,5,95,0,0,11120,11121,7,15,0,0,11121,11122,7,25,0,0,11122,11123,7,24,0,0,11123,11124,5,52,0,0,11124,11125,5,95,0,0,11125,11126,7,23,0,0,11126,11127,7,3,0,0,11127,11128,7,25,0,0,11128,11129,7,25,0,0,11129,11130,7,7,0,0,11130,11131,7,4,0,0,11131,1844,1,0,0,0,11132,11133,7,15,0,0,11133,11134,7,11,0,0,11134,11135,5,95,0,0,11135,11136,7,15,0,0,11136,11137,7,25,0,0,11137,11138,7,24,0,0,11138,11139,5,54,0,0,11139,1846,1,0,0,0,11140,11141,7,15,0,0,11141,11142,7,11,0,0,11142,11143,5,95,0,0,11143,11144,7,17,0,0,11144,11145,7,11,0,0,11145,11146,7,7,0,0,11146,11147,7,4,0,0,11147,11148,5,95,0,0,11148,11149,7,5,0,0,11149,11150,7,19,0,0,11150,11151,7,14,0,0,11151,11152,7,21,0,0,11152,1848,1,0,0,0,11153,11154,7,5,0,0,11154,11155,7,3,0,0,11155,11156,7,11,0,0,11156,11157,7,6,0,0,11157,11158,5,95,0,0,11158,11159,7,15,0,0,11159,11160,7,12,0,0,11160,11161,7,11,0,0,11161,11162,7,7,0,0,11162,11163,7,8,0,0,11163,11164,7,6,0,0,11164,11165,5,95,0,0,11165,11166,7,15,0,0,11166,11167,7,4,0,0,11167,1850,1,0,0,0,11168,11169,7,5,0,0,11169,11170,7,14,0,0,11170,11171,7,3,0,0,11171,11172,7,11,0,0,11172,11173,7,7,0,0,11173,1852,1,0,0,0,11174,11175,7,5,0,0,11175,11176,7,7,0,0,11176,11177,7,3,0,0,11177,11178,7,11,0,0,11178,11179,7,6,0,0,11179,1854,1,0,0,0,11180,11181,7,5,0,0,11181,11182,7,7,0,0,11182,11183,7,12,0,0,11183,11184,7,22,0,0,11184,11185,7,6,0,0,11185,11186,7,20,0,0,11186,1856,1,0,0,0,11187,11188,7,5,0,0,11188,11189,7,15,0,0,11189,11190,7,12,0,0,11190,11191,7,7,0,0,11191,11192,7,18,0,0,11192,11193,7,8,0,0,11193,11194,7,19,0,0,11194,11195,7,23,0,0,11195,11196,7,6,0,0,11196,11197,7,7,0,0,11197,11198,7,26,0,0,11198,11199,7,6,0,0,11199,1858,1,0,0,0,11200,11201,7,5,0,0,11201,11202,7,15,0,0,11202,11203,7,12,0,0,11203,11204,7,7,0,0,11204,11205,7,18,0,0,11205,11206,7,8,0,0,11206,11207,7,19,0,0,11207,11208,7,23,0,0,11208,11209,7,9,0,0,11209,11210,7,21,0,0,11210,11211,7,16,0,0,11211,1860,1,0,0,0,11212,11213,7,5,0,0,11213,11214,7,15,0,0,11214,11215,7,12,0,0,11215,11216,7,7,0,0,11216,11217,7,11,0,0,11217,11218,7,6,0,0,11218,11219,7,8,0,0,11219,11220,7,15,0,0,11220,11221,7,12,0,0,11221,11222,7,22,0,0,11222,11223,7,18,0,0,11223,11224,7,8,0,0,11224,11225,7,19,0,0,11225,11226,7,23,0,0,11226,11227,7,6,0,0,11227,11228,7,7,0,0,11228,11229,7,26,0,0,11229,11230,7,6,0,0,11230,1862,1,0,0,0,11231,11232,7,5,0,0,11232,11233,7,15,0,0,11233,11234,7,12,0,0,11234,11235,7,7,0,0,11235,11236,7,11,0,0,11236,11237,7,6,0,0,11237,11238,7,8,0,0,11238,11239,7,15,0,0,11239,11240,7,12,0,0,11240,11241,7,22,0,0,11241,11242,7,18,0,0,11242,11243,7,8,0,0,11243,11244,7,19,0,0,11244,11245,7,23,0,0,11245,11246,7,9,0,0,11246,11247,7,21,0,0,11247,11248,7,16,0,0,11248,1864,1,0,0,0,11249,11250,7,5,0,0,11250,11251,7,12,0,0,11251,1866,1,0,0,0,11252,11253,7,5,0,0,11253,11254,7,19,0,0,11254,11255,7,3,0,0,11255,11256,7,4,0,0,11256,11257,5,95,0,0,11257,11258,7,18,0,0,11258,11259,7,15,0,0,11259,11260,7,5,0,0,11260,11261,7,7,0,0,11261,1868,1,0,0,0,11262,11263,7,5,0,0,11263,11264,7,19,0,0,11264,11265,7,14,0,0,11265,11266,7,3,0,0,11266,11267,7,6,0,0,11267,11268,7,7,0,0,11268,1870,1,0,0,0,11269,11270,7,5,0,0,11270,11271,7,19,0,0,11271,11272,7,22,0,0,11272,1872,1,0,0,0,11273,11274,7,5,0,0,11274,11275,7,19,0,0,11275,11276,7,22,0,0,11276,11277,5,49,0,0,11277,11278,5,48,0,0,11278,1874,1,0,0,0,11279,11280,7,5,0,0,11280,11281,7,19,0,0,11281,11282,7,22,0,0,11282,11283,5,50,0,0,11283,1876,1,0,0,0,11284,11285,7,5,0,0,11285,11286,7,19,0,0,11286,11287,7,9,0,0,11287,11288,7,7,0,0,11288,11289,7,8,0,0,11289,1878,1,0,0,0,11290,11291,7,5,0,0,11291,11292,7,25,0,0,11292,11293,7,3,0,0,11293,11294,7,4,0,0,11294,1880,1,0,0,0,11295,11296,7,5,0,0,11296,11297,7,6,0,0,11297,11298,7,8,0,0,11298,11299,7,15,0,0,11299,11300,7,23,0,0,11300,1882,1,0,0,0,11301,11302,7,23,0,0,11302,11303,7,3,0,0,11303,11304,7,21,0,0,11304,11305,7,7,0,0,11305,11306,7,4,0,0,11306,11307,7,3,0,0,11307,11308,7,6,0,0,11308,11309,7,7,0,0,11309,1884,1,0,0,0,11310,11311,7,23,0,0,11311,11312,7,3,0,0,11312,11313,7,21,0,0,11313,11314,7,7,0,0,11314,11315,7,6,0,0,11315,11316,7,15,0,0,11316,11317,7,23,0,0,11317,11318,7,7,0,0,11318,1886,1,0,0,0,11319,11320,7,23,0,0,11320,11321,7,3,0,0,11321,11322,7,21,0,0,11322,11323,7,7,0,0,11323,11324,5,95,0,0,11324,11325,7,11,0,0,11325,11326,7,7,0,0,11326,11327,7,6,0,0,11327,1888,1,0,0,0,11328,11329,7,23,0,0,11329,11330,7,3,0,0,11330,11331,7,11,0,0,11331,11332,7,6,0,0,11332,11333,7,7,0,0,11333,11334,7,8,0,0,11334,11335,5,95,0,0,11335,11336,7,25,0,0,11336,11337,7,19,0,0,11337,11338,7,11,0,0,11338,11339,5,95,0,0,11339,11340,7,9,0,0,11340,11341,7,3,0,0,11341,11342,7,15,0,0,11342,11343,7,6,0,0,11343,1890,1,0,0,0,11344,11345,7,23,0,0,11345,11346,7,16,0,0,11346,11347,7,8,0,0,11347,11348,7,14,0,0,11348,11349,7,19,0,0,11349,11350,7,12,0,0,11350,11351,7,6,0,0,11351,11352,7,3,0,0,11352,11353,7,15,0,0,11353,11354,7,12,0,0,11354,11355,7,11,0,0,11355,1892,1,0,0,0,11356,11357,7,23,0,0,11357,11358,7,16,0,0,11358,11359,7,8,0,0,11359,11360,7,4,0,0,11360,11361,7,15,0,0,11361,11362,7,11,0,0,11362,11363,7,27,0,0,11363,11364,7,19,0,0,11364,11365,7,15,0,0,11365,11366,7,12,0,0,11366,11367,7,6,0,0,11367,1894,1,0,0,0,11368,11369,7,23,0,0,11369,11370,7,16,0,0,11370,11371,7,8,0,0,11371,11372,7,7,0,0,11372,11373,7,28,0,0,11373,11374,7,17,0,0,11374,11375,7,3,0,0,11375,11376,7,5,0,0,11376,1896,1,0,0,0,11377,11378,7,23,0,0,11378,11379,7,16,0,0,11379,11380,7,8,0,0,11380,11381,7,15,0,0,11381,11382,7,12,0,0,11382,11383,7,6,0,0,11383,11384,7,7,0,0,11384,11385,7,8,0,0,11385,11386,7,11,0,0,11386,11387,7,7,0,0,11387,11388,7,14,0,0,11388,11389,7,6,0,0,11389,11390,7,11,0,0,11390,1898,1,0,0,0,11391,11392,7,23,0,0,11392,11393,7,16,0,0,11393,11394,7,8,0,0,11394,11395,7,19,0,0,11395,11396,7,24,0,0,11396,11397,7,7,0,0,11397,11398,7,8,0,0,11398,11399,7,5,0,0,11399,11400,7,3,0,0,11400,11401,7,25,0,0,11401,11402,7,11,0,0,11402,1900,1,0,0,0,11403,11404,7,23,0,0,11404,11405,7,16,0,0,11405,11406,7,8,0,0,11406,11407,7,6,0,0,11407,11408,7,19,0,0,11408,11409,7,17,0,0,11409,11410,7,14,0,0,11410,11411,7,20,0,0,11411,11412,7,7,0,0,11412,11413,7,11,0,0,11413,1902,1,0,0,0,11414,11415,7,23,0,0,11415,11416,7,16,0,0,11416,11417,7,8,0,0,11417,11418,7,9,0,0,11418,11419,7,15,0,0,11419,11420,7,6,0,0,11420,11421,7,20,0,0,11421,11422,7,15,0,0,11422,11423,7,12,0,0,11423,1904,1,0,0,0,11424,11425,7,23,0,0,11425,11426,7,4,0,0,11426,11427,5,53,0,0,11427,1906,1,0,0,0,11428,11429,7,23,0,0,11429,11430,7,5,0,0,11430,11431,7,15,0,0,11431,11432,7,12,0,0,11432,11433,7,7,0,0,11433,11434,7,18,0,0,11434,11435,7,8,0,0,11435,11436,7,19,0,0,11436,11437,7,23,0,0,11437,11438,7,6,0,0,11438,11439,7,7,0,0,11439,11440,7,26,0,0,11440,11441,7,6,0,0,11441,1908,1,0,0,0,11442,11443,7,23,0,0,11443,11444,7,5,0,0,11444,11445,7,15,0,0,11445,11446,7,12,0,0,11446,11447,7,7,0,0,11447,11448,7,18,0,0,11448,11449,7,8,0,0,11449,11450,7,19,0,0,11450,11451,7,23,0,0,11451,11452,7,9,0,0,11452,11453,7,21,0,0,11453,11454,7,16,0,0,11454,1910,1,0,0,0,11455,11456,7,23,0,0,11456,11457,7,19,0,0,11457,11458,7,12,0,0,11458,11459,7,6,0,0,11459,11460,7,20,0,0,11460,11461,7,12,0,0,11461,11462,7,3,0,0,11462,11463,7,23,0,0,11463,11464,7,7,0,0,11464,1912,1,0,0,0,11465,11466,7,23,0,0,11466,11467,7,25,0,0,11467,11468,7,19,0,0,11468,11469,7,15,0,0,11469,11470,7,12,0,0,11470,11471,7,6,0,0,11471,11472,7,18,0,0,11472,11473,7,8,0,0,11473,11474,7,19,0,0,11474,11475,7,23,0,0,11475,11476,7,6,0,0,11476,11477,7,7,0,0,11477,11478,7,26,0,0,11478,11479,7,6,0,0,11479,1914,1,0,0,0,11480,11481,7,23,0,0,11481,11482,7,25,0,0,11482,11483,7,19,0,0,11483,11484,7,15,0,0,11484,11485,7,12,0,0,11485,11486,7,6,0,0,11486,11487,7,18,0,0,11487,11488,7,8,0,0,11488,11489,7,19,0,0,11489,11490,7,23,0,0,11490,11491,7,9,0,0,11491,11492,7,21,0,0,11492,11493,7,16,0,0,11493,1916,1,0,0,0,11494,11495,7,23,0,0,11495,11496,7,25,0,0,11496,11497,7,19,0,0,11497,11498,7,5,0,0,11498,11499,7,10,0,0,11499,11500,7,18,0,0,11500,11501,7,8,0,0,11501,11502,7,19,0,0,11502,11503,7,23,0,0,11503,11504,7,6,0,0,11504,11505,7,7,0,0,11505,11506,7,26,0,0,11506,11507,7,6,0,0,11507,1918,1,0,0,0,11508,11509,7,23,0,0,11509,11510,7,25,0,0,11510,11511,7,19,0,0,11511,11512,7,5,0,0,11512,11513,7,10,0,0,11513,11514,7,18,0,0,11514,11515,7,8,0,0,11515,11516,7,19,0,0,11516,11517,7,23,0,0,11517,11518,7,9,0,0,11518,11519,7,21,0,0,11519,11520,7,16,0,0,11520,1920,1,0,0,0,11521,11522,7,23,0,0,11522,11523,7,17,0,0,11523,11524,7,5,0,0,11524,11525,7,6,0,0,11525,11526,7,15,0,0,11526,11527,7,5,0,0,11527,11528,7,15,0,0,11528,11529,7,12,0,0,11529,11530,7,7,0,0,11530,11531,7,11,0,0,11531,11532,7,6,0,0,11532,11533,7,8,0,0,11533,11534,7,15,0,0,11534,11535,7,12,0,0,11535,11536,7,22,0,0,11536,11537,7,18,0,0,11537,11538,7,8,0,0,11538,11539,7,19,0,0,11539,11540,7,23,0,0,11540,11541,7,6,0,0,11541,11542,7,7,0,0,11542,11543,7,26,0,0,11543,11544,7,6,0,0,11544,1922,1,0,0,0,11545,11546,7,23,0,0,11546,11547,7,17,0,0,11547,11548,7,5,0,0,11548,11549,7,6,0,0,11549,11550,7,15,0,0,11550,11551,7,5,0,0,11551,11552,7,15,0,0,11552,11553,7,12,0,0,11553,11554,7,7,0,0,11554,11555,7,11,0,0,11555,11556,7,6,0,0,11556,11557,7,8,0,0,11557,11558,7,15,0,0,11558,11559,7,12,0,0,11559,11560,7,22,0,0,11560,11561,7,18,0,0,11561,11562,7,8,0,0,11562,11563,7,19,0,0,11563,11564,7,23,0,0,11564,11565,7,9,0,0,11565,11566,7,21,0,0,11566,11567,7,16,0,0,11567,1924,1,0,0,0,11568,11569,7,23,0,0,11569,11570,7,17,0,0,11570,11571,7,5,0,0,11571,11572,7,6,0,0,11572,11573,7,15,0,0,11573,11574,7,25,0,0,11574,11575,7,19,0,0,11575,11576,7,15,0,0,11576,11577,7,12,0,0,11577,11578,7,6,0,0,11578,11579,7,18,0,0,11579,11580,7,8,0,0,11580,11581,7,19,0,0,11581,11582,7,23,0,0,11582,11583,7,6,0,0,11583,11584,7,7,0,0,11584,11585,7,26,0,0,11585,11586,7,6,0,0,11586,1926,1,0,0,0,11587,11588,7,23,0,0,11588,11589,7,17,0,0,11589,11590,7,5,0,0,11590,11591,7,6,0,0,11591,11592,7,15,0,0,11592,11593,7,25,0,0,11593,11594,7,19,0,0,11594,11595,7,15,0,0,11595,11596,7,12,0,0,11596,11597,7,6,0,0,11597,11598,7,18,0,0,11598,11599,7,8,0,0,11599,11600,7,19,0,0,11600,11601,7,23,0,0,11601,11602,7,9,0,0,11602,11603,7,21,0,0,11603,11604,7,16,0,0,11604,1928,1,0,0,0,11605,11606,7,23,0,0,11606,11607,7,17,0,0,11607,11608,7,5,0,0,11608,11609,7,6,0,0,11609,11610,7,15,0,0,11610,11611,7,25,0,0,11611,11612,7,19,0,0,11612,11613,7,5,0,0,11613,11614,7,10,0,0,11614,11615,7,22,0,0,11615,11616,7,19,0,0,11616,11617,7,12,0,0,11617,11618,7,18,0,0,11618,11619,7,8,0,0,11619,11620,7,19,0,0,11620,11621,7,23,0,0,11621,11622,7,6,0,0,11622,11623,7,7,0,0,11623,11624,7,26,0,0,11624,11625,7,6,0,0,11625,1930,1,0,0,0,11626,11627,7,23,0,0,11627,11628,7,17,0,0,11628,11629,7,5,0,0,11629,11630,7,6,0,0,11630,11631,7,15,0,0,11631,11632,7,25,0,0,11632,11633,7,19,0,0,11633,11634,7,5,0,0,11634,11635,7,10,0,0,11635,11636,7,22,0,0,11636,11637,7,19,0,0,11637,11638,7,12,0,0,11638,11639,7,18,0,0,11639,11640,7,8,0,0,11640,11641,7,19,0,0,11641,11642,7,23,0,0,11642,11643,7,9,0,0,11643,11644,7,21,0,0,11644,11645,7,16,0,0,11645,1932,1,0,0,0,11646,11647,7,12,0,0,11647,11648,7,3,0,0,11648,11649,7,23,0,0,11649,11650,7,7,0,0,11650,11651,5,95,0,0,11651,11652,7,14,0,0,11652,11653,7,19,0,0,11653,11654,7,12,0,0,11654,11655,7,11,0,0,11655,11656,7,6,0,0,11656,1934,1,0,0,0,11657,11658,7,12,0,0,11658,11659,7,17,0,0,11659,11660,7,5,0,0,11660,11661,7,5,0,0,11661,11662,7,15,0,0,11662,11663,7,18,0,0,11663,1936,1,0,0,0,11664,11665,7,12,0,0,11665,11666,7,17,0,0,11666,11667,7,23,0,0,11667,11668,7,22,0,0,11668,11669,7,7,0,0,11669,11670,7,19,0,0,11670,11671,7,23,0,0,11671,11672,7,7,0,0,11672,11673,7,6,0,0,11673,11674,7,8,0,0,11674,11675,7,15,0,0,11675,11676,7,7,0,0,11676,11677,7,11,0,0,11677,1938,1,0,0,0,11678,11679,7,12,0,0,11679,11680,7,17,0,0,11680,11681,7,23,0,0,11681,11682,7,15,0,0,11682,11683,7,12,0,0,11683,11684,7,6,0,0,11684,11685,7,7,0,0,11685,11686,7,8,0,0,11686,11687,7,15,0,0,11687,11688,7,19,0,0,11688,11689,7,8,0,0,11689,11690,7,8,0,0,11690,11691,7,15,0,0,11691,11692,7,12,0,0,11692,11693,7,22,0,0,11693,11694,7,11,0,0,11694,1940,1,0,0,0,11695,11696,7,12,0,0,11696,11697,7,17,0,0,11697,11698,7,23,0,0,11698,11699,7,25,0,0,11699,11700,7,19,0,0,11700,11701,7,15,0,0,11701,11702,7,12,0,0,11702,11703,7,6,0,0,11703,11704,7,11,0,0,11704,1942,1,0,0,0,11705,11706,7,19,0,0,11706,11707,7,14,0,0,11707,11708,7,6,0,0,11708,1944,1,0,0,0,11709,11710,7,19,0,0,11710,11711,7,14,0,0,11711,11712,7,6,0,0,11712,11713,7,7,0,0,11713,11714,7,6,0,0,11714,11715,5,95,0,0,11715,11716,7,5,0,0,11716,11717,7,7,0,0,11717,11718,7,12,0,0,11718,11719,7,22,0,0,11719,11720,7,6,0,0,11720,11721,7,20,0,0,11721,1946,1,0,0,0,11722,11723,7,19,0,0,11723,11724,7,8,0,0,11724,11725,7,4,0,0,11725,1948,1,0,0,0,11726,11727,7,19,0,0,11727,11728,7,24,0,0,11728,11729,7,7,0,0,11729,11730,7,8,0,0,11730,11731,7,5,0,0,11731,11732,7,3,0,0,11732,11733,7,25,0,0,11733,11734,7,11,0,0,11734,1950,1,0,0,0,11735,11736,7,25,0,0,11736,11737,7,7,0,0,11737,11738,7,8,0,0,11738,11739,7,15,0,0,11739,11740,7,19,0,0,11740,11741,7,4,0,0,11741,11742,5,95,0,0,11742,11743,7,3,0,0,11743,11744,7,4,0,0,11744,11745,7,4,0,0,11745,1952,1,0,0,0,11746,11747,7,25,0,0,11747,11748,7,7,0,0,11748,11749,7,8,0,0,11749,11750,7,15,0,0,11750,11751,7,19,0,0,11751,11752,7,4,0,0,11752,11753,5,95,0,0,11753,11754,7,4,0,0,11754,11755,7,15,0,0,11755,11756,7,18,0,0,11756,11757,7,18,0,0,11757,1954,1,0,0,0,11758,11759,7,25,0,0,11759,11760,7,15,0,0,11760,1956,1,0,0,0,11761,11762,7,25,0,0,11762,11763,7,19,0,0,11763,11764,7,15,0,0,11764,11765,7,12,0,0,11765,11766,7,6,0,0,11766,11767,7,18,0,0,11767,11768,7,8,0,0,11768,11769,7,19,0,0,11769,11770,7,23,0,0,11770,11771,7,6,0,0,11771,11772,7,7,0,0,11772,11773,7,26,0,0,11773,11774,7,6,0,0,11774,1958,1,0,0,0,11775,11776,7,25,0,0,11776,11777,7,19,0,0,11777,11778,7,15,0,0,11778,11779,7,12,0,0,11779,11780,7,6,0,0,11780,11781,7,18,0,0,11781,11782,7,8,0,0,11782,11783,7,19,0,0,11783,11784,7,23,0,0,11784,11785,7,9,0,0,11785,11786,7,21,0,0,11786,11787,7,16,0,0,11787,1960,1,0,0,0,11788,11789,7,25,0,0,11789,11790,7,19,0,0,11790,11791,7,15,0,0,11791,11792,7,12,0,0,11792,11793,7,6,0,0,11793,11794,7,12,0,0,11794,1962,1,0,0,0,11795,11796,7,25,0,0,11796,11797,7,19,0,0,11797,11798,7,5,0,0,11798,11799,7,10,0,0,11799,11800,7,18,0,0,11800,11801,7,8,0,0,11801,11802,7,19,0,0,11802,11803,7,23,0,0,11803,11804,7,6,0,0,11804,11805,7,7,0,0,11805,11806,7,26,0,0,11806,11807,7,6,0,0,11807,1964,1,0,0,0,11808,11809,7,25,0,0,11809,11810,7,19,0,0,11810,11811,7,5,0,0,11811,11812,7,10,0,0,11812,11813,7,18,0,0,11813,11814,7,8,0,0,11814,11815,7,19,0,0,11815,11816,7,23,0,0,11816,11817,7,9,0,0,11817,11818,7,21,0,0,11818,11819,7,16,0,0,11819,1966,1,0,0,0,11820,11821,7,25,0,0,11821,11822,7,19,0,0,11822,11823,7,5,0,0,11823,11824,7,10,0,0,11824,11825,7,22,0,0,11825,11826,7,19,0,0,11826,11827,7,12,0,0,11827,11828,7,18,0,0,11828,11829,7,8,0,0,11829,11830,7,19,0,0,11830,11831,7,23,0,0,11831,11832,7,6,0,0,11832,11833,7,7,0,0,11833,11834,7,26,0,0,11834,11835,7,6,0,0,11835,1968,1,0,0,0,11836,11837,7,25,0,0,11837,11838,7,19,0,0,11838,11839,7,5,0,0,11839,11840,7,10,0,0,11840,11841,7,22,0,0,11841,11842,7,19,0,0,11842,11843,7,12,0,0,11843,11844,7,18,0,0,11844,11845,7,8,0,0,11845,11846,7,19,0,0,11846,11847,7,23,0,0,11847,11848,7,9,0,0,11848,11849,7,21,0,0,11849,11850,7,16,0,0,11850,1970,1,0,0,0,11851,11852,7,25,0,0,11852,11853,7,19,0,0,11853,11854,7,9,0,0,11854,1972,1,0,0,0,11855,11856,7,25,0,0,11856,11857,7,19,0,0,11857,11858,7,9,0,0,11858,11859,7,7,0,0,11859,11860,7,8,0,0,11860,1974,1,0,0,0,11861,11862,7,28,0,0,11862,11863,7,17,0,0,11863,11864,7,19,0,0,11864,11865,7,6,0,0,11865,11866,7,7,0,0,11866,1976,1,0,0,0,11867,11868,7,8,0,0,11868,11869,7,3,0,0,11869,11870,7,4,0,0,11870,11871,7,15,0,0,11871,11872,7,3,0,0,11872,11873,7,12,0,0,11873,11874,7,11,0,0,11874,1978,1,0,0,0,11875,11876,7,8,0,0,11876,11877,7,3,0,0,11877,11878,7,12,0,0,11878,11879,7,4,0,0,11879,1980,1,0,0,0,11880,11881,7,8,0,0,11881,11882,7,3,0,0,11882,11883,7,12,0,0,11883,11884,7,4,0,0,11884,11885,7,19,0,0,11885,11886,7,23,0,0,11886,1982,1,0,0,0,11887,11888,7,8,0,0,11888,11889,7,3,0,0,11889,11890,7,12,0,0,11890,11891,7,4,0,0,11891,11892,7,19,0,0,11892,11893,7,23,0,0,11893,11894,5,95,0,0,11894,11895,7,16,0,0,11895,11896,7,10,0,0,11896,11897,7,6,0,0,11897,11898,7,7,0,0,11898,11899,7,11,0,0,11899,1984,1,0,0,0,11900,11901,7,8,0,0,11901,11902,7,7,0,0,11902,11903,7,5,0,0,11903,11904,7,7,0,0,11904,11905,7,3,0,0,11905,11906,7,11,0,0,11906,11907,7,7,0,0,11907,11908,5,95,0,0,11908,11909,7,5,0,0,11909,11910,7,19,0,0,11910,11911,7,14,0,0,11911,11912,7,21,0,0,11912,1986,1,0,0,0,11913,11914,7,8,0,0,11914,11915,7,7,0,0,11915,11916,7,24,0,0,11916,11917,7,7,0,0,11917,11918,7,8,0,0,11918,11919,7,11,0,0,11919,11920,7,7,0,0,11920,1988,1,0,0,0,11921,11922,7,8,0,0,11922,11923,7,19,0,0,11923,11924,7,17,0,0,11924,11925,7,12,0,0,11925,11926,7,4,0,0,11926,1990,1,0,0,0,11927,11928,7,8,0,0,11928,11929,7,19,0,0,11929,11930,7,9,0,0,11930,11931,5,95,0,0,11931,11932,7,14,0,0,11932,11933,7,19,0,0,11933,11934,7,17,0,0,11934,11935,7,12,0,0,11935,11936,7,6,0,0,11936,1992,1,0,0,0,11937,11938,7,8,0,0,11938,11939,7,25,0,0,11939,11940,7,3,0,0,11940,11941,7,4,0,0,11941,1994,1,0,0,0,11942,11943,7,8,0,0,11943,11944,7,6,0,0,11944,11945,7,8,0,0,11945,11946,7,15,0,0,11946,11947,7,23,0,0,11947,1996,1,0,0,0,11948,11949,7,11,0,0,11949,11950,7,7,0,0,11950,11951,7,14,0,0,11951,11952,5,95,0,0,11952,11953,7,6,0,0,11953,11954,7,19,0,0,11954,11955,5,95,0,0,11955,11956,7,6,0,0,11956,11957,7,15,0,0,11957,11958,7,23,0,0,11958,11959,7,7,0,0,11959,1998,1,0,0,0,11960,11961,7,11,0,0,11961,11962,7,7,0,0,11962,11963,7,14,0,0,11963,11964,7,19,0,0,11964,11965,7,12,0,0,11965,11966,7,4,0,0,11966,11967,7,3,0,0,11967,11968,7,8,0,0,11968,11969,7,10,0,0,11969,11970,5,95,0,0,11970,11971,7,7,0,0,11971,11972,7,12,0,0,11972,11973,7,22,0,0,11973,11974,7,15,0,0,11974,11975,7,12,0,0,11975,11976,7,7,0,0,11976,11977,5,95,0,0,11977,11978,7,3,0,0,11978,11979,7,6,0,0,11979,11980,7,6,0,0,11980,11981,7,8,0,0,11981,11982,7,15,0,0,11982,11983,7,16,0,0,11983,11984,7,17,0,0,11984,11985,7,6,0,0,11985,11986,7,7,0,0,11986,2e3,1,0,0,0,11987,11988,7,11,0,0,11988,11989,7,7,0,0,11989,11990,7,11,0,0,11990,11991,7,11,0,0,11991,11992,7,15,0,0,11992,11993,7,19,0,0,11993,11994,7,12,0,0,11994,11995,5,95,0,0,11995,11996,7,17,0,0,11996,11997,7,11,0,0,11997,11998,7,7,0,0,11998,11999,7,8,0,0,11999,2002,1,0,0,0,12e3,12001,7,11,0,0,12001,12002,7,20,0,0,12002,12003,7,3,0,0,12003,2004,1,0,0,0,12004,12005,7,11,0,0,12005,12006,7,20,0,0,12006,12007,7,3,0,0,12007,12008,5,49,0,0,12008,2006,1,0,0,0,12009,12010,7,11,0,0,12010,12011,7,20,0,0,12011,12012,7,3,0,0,12012,12013,5,50,0,0,12013,2008,1,0,0,0,12014,12015,7,11,0,0,12015,12016,7,14,0,0,12016,12017,7,20,0,0,12017,12018,7,7,0,0,12018,12019,7,23,0,0,12019,12020,7,3,0,0,12020,12021,5,95,0,0,12021,12022,7,12,0,0,12022,12023,7,3,0,0,12023,12024,7,23,0,0,12024,12025,7,7,0,0,12025,2010,1,0,0,0,12026,12027,7,11,0,0,12027,12028,7,15,0,0,12028,12029,7,22,0,0,12029,12030,7,12,0,0,12030,2012,1,0,0,0,12031,12032,7,11,0,0,12032,12033,7,15,0,0,12033,12034,7,12,0,0,12034,2014,1,0,0,0,12035,12036,7,11,0,0,12036,12037,7,5,0,0,12037,12038,7,7,0,0,12038,12039,7,7,0,0,12039,12040,7,25,0,0,12040,2016,1,0,0,0,12041,12042,7,11,0,0,12042,12043,7,19,0,0,12043,12044,7,17,0,0,12044,12045,7,12,0,0,12045,12046,7,4,0,0,12046,12047,7,7,0,0,12047,12048,7,26,0,0,12048,2018,1,0,0,0,12049,12050,7,11,0,0,12050,12051,7,28,0,0,12051,12052,7,5,0,0,12052,12053,5,95,0,0,12053,12054,7,6,0,0,12054,12055,7,20,0,0,12055,12056,7,8,0,0,12056,12057,7,7,0,0,12057,12058,7,3,0,0,12058,12059,7,4,0,0,12059,12060,5,95,0,0,12060,12061,7,9,0,0,12061,12062,7,3,0,0,12062,12063,7,15,0,0,12063,12064,7,6,0,0,12064,12065,5,95,0,0,12065,12066,7,3,0,0,12066,12067,7,18,0,0,12067,12068,7,6,0,0,12068,12069,7,7,0,0,12069,12070,7,8,0,0,12070,12071,5,95,0,0,12071,12072,7,22,0,0,12072,12073,7,6,0,0,12073,12074,7,15,0,0,12074,12075,7,4,0,0,12075,12076,7,11,0,0,12076,2020,1,0,0,0,12077,12078,7,11,0,0,12078,12079,7,28,0,0,12079,12080,7,8,0,0,12080,12081,7,6,0,0,12081,2022,1,0,0,0,12082,12083,7,11,0,0,12083,12084,7,8,0,0,12084,12085,7,15,0,0,12085,12086,7,4,0,0,12086,2024,1,0,0,0,12087,12088,7,11,0,0,12088,12089,7,6,0,0,12089,12090,7,3,0,0,12090,12091,7,8,0,0,12091,12092,7,6,0,0,12092,12093,7,25,0,0,12093,12094,7,19,0,0,12094,12095,7,15,0,0,12095,12096,7,12,0,0,12096,12097,7,6,0,0,12097,2026,1,0,0,0,12098,12099,7,11,0,0,12099,12100,7,6,0,0,12100,12101,7,8,0,0,12101,12102,7,14,0,0,12102,12103,7,23,0,0,12103,12104,7,25,0,0,12104,2028,1,0,0,0,12105,12106,7,11,0,0,12106,12107,7,6,0,0,12107,12108,7,8,0,0,12108,12109,5,95,0,0,12109,12110,7,6,0,0,12110,12111,7,19,0,0,12111,12112,5,95,0,0,12112,12113,7,4,0,0,12113,12114,7,3,0,0,12114,12115,7,6,0,0,12115,12116,7,7,0,0,12116,2030,1,0,0,0,12117,12118,7,11,0,0,12118,12119,7,6,0,0,12119,12120,5,95,0,0,12120,12121,7,3,0,0,12121,12122,7,8,0,0,12122,12123,7,7,0,0,12123,12124,7,3,0,0,12124,2032,1,0,0,0,12125,12126,7,11,0,0,12126,12127,7,6,0,0,12127,12128,5,95,0,0,12128,12129,7,3,0,0,12129,12130,7,11,0,0,12130,12131,7,16,0,0,12131,12132,7,15,0,0,12132,12133,7,12,0,0,12133,12134,7,3,0,0,12134,12135,7,8,0,0,12135,12136,7,10,0,0,12136,2034,1,0,0,0,12137,12138,7,11,0,0,12138,12139,7,6,0,0,12139,12140,5,95,0,0,12140,12141,7,3,0,0,12141,12142,7,11,0,0,12142,12143,7,6,0,0,12143,12144,7,7,0,0,12144,12145,7,26,0,0,12145,12146,7,6,0,0,12146,2036,1,0,0,0,12147,12148,7,11,0,0,12148,12149,7,6,0,0,12149,12150,5,95,0,0,12150,12151,7,3,0,0,12151,12152,7,11,0,0,12152,12153,7,9,0,0,12153,12154,7,21,0,0,12154,12155,7,16,0,0,12155,2038,1,0,0,0,12156,12157,7,11,0,0,12157,12158,7,6,0,0,12158,12159,5,95,0,0,12159,12160,7,3,0,0,12160,12161,7,11,0,0,12161,12162,7,9,0,0,12162,12163,7,21,0,0,12163,12164,7,6,0,0,12164,2040,1,0,0,0,12165,12166,7,11,0,0,12166,12167,7,6,0,0,12167,12168,5,95,0,0,12168,12169,7,16,0,0,12169,12170,7,17,0,0,12170,12171,7,18,0,0,12171,12172,7,18,0,0,12172,12173,7,7,0,0,12173,12174,7,8,0,0,12174,2042,1,0,0,0,12175,12176,7,11,0,0,12176,12177,7,6,0,0,12177,12178,5,95,0,0,12178,12179,7,14,0,0,12179,12180,7,7,0,0,12180,12181,7,12,0,0,12181,12182,7,6,0,0,12182,12183,7,8,0,0,12183,12184,7,19,0,0,12184,12185,7,15,0,0,12185,12186,7,4,0,0,12186,2044,1,0,0,0,12187,12188,7,11,0,0,12188,12189,7,6,0,0,12189,12190,5,95,0,0,12190,12191,7,14,0,0,12191,12192,7,19,0,0,12192,12193,7,12,0,0,12193,12194,7,6,0,0,12194,12195,7,3,0,0,12195,12196,7,15,0,0,12196,12197,7,12,0,0,12197,12198,7,11,0,0,12198,2046,1,0,0,0,12199,12200,7,11,0,0,12200,12201,7,6,0,0,12201,12202,5,95,0,0,12202,12203,7,14,0,0,12203,12204,7,8,0,0,12204,12205,7,19,0,0,12205,12206,7,11,0,0,12206,12207,7,11,0,0,12207,12208,7,7,0,0,12208,12209,7,11,0,0,12209,2048,1,0,0,0,12210,12211,7,11,0,0,12211,12212,7,6,0,0,12212,12213,5,95,0,0,12213,12214,7,4,0,0,12214,12215,7,15,0,0,12215,12216,7,18,0,0,12216,12217,7,18,0,0,12217,12218,7,7,0,0,12218,12219,7,8,0,0,12219,12220,7,7,0,0,12220,12221,7,12,0,0,12221,12222,7,14,0,0,12222,12223,7,7,0,0,12223,2050,1,0,0,0,12224,12225,7,11,0,0,12225,12226,7,6,0,0,12226,12227,5,95,0,0,12227,12228,7,4,0,0,12228,12229,7,15,0,0,12229,12230,7,23,0,0,12230,12231,7,7,0,0,12231,12232,7,12,0,0,12232,12233,7,11,0,0,12233,12234,7,15,0,0,12234,12235,7,19,0,0,12235,12236,7,12,0,0,12236,2052,1,0,0,0,12237,12238,7,11,0,0,12238,12239,7,6,0,0,12239,12240,5,95,0,0,12240,12241,7,4,0,0,12241,12242,7,15,0,0,12242,12243,7,11,0,0,12243,12244,7,27,0,0,12244,12245,7,19,0,0,12245,12246,7,15,0,0,12246,12247,7,12,0,0,12247,12248,7,6,0,0,12248,2054,1,0,0,0,12249,12250,7,11,0,0,12250,12251,7,6,0,0,12251,12252,5,95,0,0,12252,12253,7,4,0,0,12253,12254,7,15,0,0,12254,12255,7,11,0,0,12255,12256,7,6,0,0,12256,12257,7,3,0,0,12257,12258,7,12,0,0,12258,12259,7,14,0,0,12259,12260,7,7,0,0,12260,2056,1,0,0,0,12261,12262,7,11,0,0,12262,12263,7,6,0,0,12263,12264,5,95,0,0,12264,12265,7,7,0,0,12265,12266,7,12,0,0,12266,12267,7,4,0,0,12267,12268,7,25,0,0,12268,12269,7,19,0,0,12269,12270,7,15,0,0,12270,12271,7,12,0,0,12271,12272,7,6,0,0,12272,2058,1,0,0,0,12273,12274,7,11,0,0,12274,12275,7,6,0,0,12275,12276,5,95,0,0,12276,12277,7,7,0,0,12277,12278,7,12,0,0,12278,12279,7,24,0,0,12279,12280,7,7,0,0,12280,12281,7,5,0,0,12281,12282,7,19,0,0,12282,12283,7,25,0,0,12283,12284,7,7,0,0,12284,2060,1,0,0,0,12285,12286,7,11,0,0,12286,12287,7,6,0,0,12287,12288,5,95,0,0,12288,12289,7,7,0,0,12289,12290,7,28,0,0,12290,12291,7,17,0,0,12291,12292,7,3,0,0,12292,12293,7,5,0,0,12293,12294,7,11,0,0,12294,2062,1,0,0,0,12295,12296,7,11,0,0,12296,12297,7,6,0,0,12297,12298,5,95,0,0,12298,12299,7,7,0,0,12299,12300,7,26,0,0,12300,12301,7,6,0,0,12301,12302,7,7,0,0,12302,12303,7,8,0,0,12303,12304,7,15,0,0,12304,12305,7,19,0,0,12305,12306,7,8,0,0,12306,12307,7,8,0,0,12307,12308,7,15,0,0,12308,12309,7,12,0,0,12309,12310,7,22,0,0,12310,2064,1,0,0,0,12311,12312,7,11,0,0,12312,12313,7,6,0,0,12313,12314,5,95,0,0,12314,12315,7,22,0,0,12315,12316,7,7,0,0,12316,12317,7,19,0,0,12317,12318,7,23,0,0,12318,12319,7,14,0,0,12319,12320,7,19,0,0,12320,12321,7,5,0,0,12321,12322,7,5,0,0,12322,12323,7,18,0,0,12323,12324,7,8,0,0,12324,12325,7,19,0,0,12325,12326,7,23,0,0,12326,12327,7,6,0,0,12327,12328,7,7,0,0,12328,12329,7,26,0,0,12329,12330,7,6,0,0,12330,2066,1,0,0,0,12331,12332,7,11,0,0,12332,12333,7,6,0,0,12333,12334,5,95,0,0,12334,12335,7,22,0,0,12335,12336,7,7,0,0,12336,12337,7,19,0,0,12337,12338,7,23,0,0,12338,12339,7,14,0,0,12339,12340,7,19,0,0,12340,12341,7,5,0,0,12341,12342,7,5,0,0,12342,12343,7,18,0,0,12343,12344,7,8,0,0,12344,12345,7,19,0,0,12345,12346,7,23,0,0,12346,12347,7,6,0,0,12347,12348,7,26,0,0,12348,12349,7,6,0,0,12349,2068,1,0,0,0,12350,12351,7,11,0,0,12351,12352,7,6,0,0,12352,12353,5,95,0,0,12353,12354,7,22,0,0,12354,12355,7,7,0,0,12355,12356,7,19,0,0,12356,12357,7,23,0,0,12357,12358,7,14,0,0,12358,12359,7,19,0,0,12359,12360,7,5,0,0,12360,12361,7,5,0,0,12361,12362,7,18,0,0,12362,12363,7,8,0,0,12363,12364,7,19,0,0,12364,12365,7,23,0,0,12365,12366,7,9,0,0,12366,12367,7,21,0,0,12367,12368,7,16,0,0,12368,2070,1,0,0,0,12369,12370,7,11,0,0,12370,12371,7,6,0,0,12371,12372,5,95,0,0,12372,12373,7,22,0,0,12373,12374,7,7,0,0,12374,12375,7,19,0,0,12375,12376,7,23,0,0,12376,12377,7,7,0,0,12377,12378,7,6,0,0,12378,12379,7,8,0,0,12379,12380,7,10,0,0,12380,12381,7,14,0,0,12381,12382,7,19,0,0,12382,12383,7,5,0,0,12383,12384,7,5,0,0,12384,12385,7,7,0,0,12385,12386,7,14,0,0,12386,12387,7,6,0,0,12387,12388,7,15,0,0,12388,12389,7,19,0,0,12389,12390,7,12,0,0,12390,12391,7,18,0,0,12391,12392,7,8,0,0,12392,12393,7,19,0,0,12393,12394,7,23,0,0,12394,12395,7,6,0,0,12395,12396,7,7,0,0,12396,12397,7,26,0,0,12397,12398,7,6,0,0,12398,2072,1,0,0,0,12399,12400,7,11,0,0,12400,12401,7,6,0,0,12401,12402,5,95,0,0,12402,12403,7,22,0,0,12403,12404,7,7,0,0,12404,12405,7,19,0,0,12405,12406,7,23,0,0,12406,12407,7,7,0,0,12407,12408,7,6,0,0,12408,12409,7,8,0,0,12409,12410,7,10,0,0,12410,12411,7,14,0,0,12411,12412,7,19,0,0,12412,12413,7,5,0,0,12413,12414,7,5,0,0,12414,12415,7,7,0,0,12415,12416,7,14,0,0,12416,12417,7,6,0,0,12417,12418,7,15,0,0,12418,12419,7,19,0,0,12419,12420,7,12,0,0,12420,12421,7,18,0,0,12421,12422,7,8,0,0,12422,12423,7,19,0,0,12423,12424,7,23,0,0,12424,12425,7,9,0,0,12425,12426,7,21,0,0,12426,12427,7,16,0,0,12427,2074,1,0,0,0,12428,12429,7,11,0,0,12429,12430,7,6,0,0,12430,12431,5,95,0,0,12431,12432,7,22,0,0,12432,12433,7,7,0,0,12433,12434,7,19,0,0,12434,12435,7,23,0,0,12435,12436,7,7,0,0,12436,12437,7,6,0,0,12437,12438,7,8,0,0,12438,12439,7,10,0,0,12439,12440,7,18,0,0,12440,12441,7,8,0,0,12441,12442,7,19,0,0,12442,12443,7,23,0,0,12443,12444,7,6,0,0,12444,12445,7,7,0,0,12445,12446,7,26,0,0,12446,12447,7,6,0,0,12447,2076,1,0,0,0,12448,12449,7,11,0,0,12449,12450,7,6,0,0,12450,12451,5,95,0,0,12451,12452,7,22,0,0,12452,12453,7,7,0,0,12453,12454,7,19,0,0,12454,12455,7,23,0,0,12455,12456,7,7,0,0,12456,12457,7,6,0,0,12457,12458,7,8,0,0,12458,12459,7,10,0,0,12459,12460,7,18,0,0,12460,12461,7,8,0,0,12461,12462,7,19,0,0,12462,12463,7,23,0,0,12463,12464,7,9,0,0,12464,12465,7,21,0,0,12465,12466,7,16,0,0,12466,2078,1,0,0,0,12467,12468,7,11,0,0,12468,12469,7,6,0,0,12469,12470,5,95,0,0,12470,12471,7,22,0,0,12471,12472,7,7,0,0,12472,12473,7,19,0,0,12473,12474,7,23,0,0,12474,12475,7,7,0,0,12475,12476,7,6,0,0,12476,12477,7,8,0,0,12477,12478,7,10,0,0,12478,12479,7,12,0,0,12479,2080,1,0,0,0,12480,12481,7,11,0,0,12481,12482,7,6,0,0,12482,12483,5,95,0,0,12483,12484,7,22,0,0,12484,12485,7,7,0,0,12485,12486,7,19,0,0,12486,12487,7,23,0,0,12487,12488,7,7,0,0,12488,12489,7,6,0,0,12489,12490,7,8,0,0,12490,12491,7,10,0,0,12491,12492,7,6,0,0,12492,12493,7,10,0,0,12493,12494,7,25,0,0,12494,12495,7,7,0,0,12495,2082,1,0,0,0,12496,12497,7,11,0,0,12497,12498,7,6,0,0,12498,12499,5,95,0,0,12499,12500,7,22,0,0,12500,12501,7,7,0,0,12501,12502,7,19,0,0,12502,12503,7,23,0,0,12503,12504,7,18,0,0,12504,12505,7,8,0,0,12505,12506,7,19,0,0,12506,12507,7,23,0,0,12507,12508,7,6,0,0,12508,12509,7,7,0,0,12509,12510,7,26,0,0,12510,12511,7,6,0,0,12511,2084,1,0,0,0,12512,12513,7,11,0,0,12513,12514,7,6,0,0,12514,12515,5,95,0,0,12515,12516,7,22,0,0,12516,12517,7,7,0,0,12517,12518,7,19,0,0,12518,12519,7,23,0,0,12519,12520,7,18,0,0,12520,12521,7,8,0,0,12521,12522,7,19,0,0,12522,12523,7,23,0,0,12523,12524,7,9,0,0,12524,12525,7,21,0,0,12525,12526,7,16,0,0,12526,2086,1,0,0,0,12527,12528,7,11,0,0,12528,12529,7,6,0,0,12529,12530,5,95,0,0,12530,12531,7,15,0,0,12531,12532,7,12,0,0,12532,12533,7,6,0,0,12533,12534,7,7,0,0,12534,12535,7,8,0,0,12535,12536,7,15,0,0,12536,12537,7,19,0,0,12537,12538,7,8,0,0,12538,12539,7,8,0,0,12539,12540,7,15,0,0,12540,12541,7,12,0,0,12541,12542,7,22,0,0,12542,12543,7,12,0,0,12543,2088,1,0,0,0,12544,12545,7,11,0,0,12545,12546,7,6,0,0,12546,12547,5,95,0,0,12547,12548,7,15,0,0,12548,12549,7,12,0,0,12549,12550,7,6,0,0,12550,12551,7,7,0,0,12551,12552,7,8,0,0,12552,12553,7,11,0,0,12553,12554,7,7,0,0,12554,12555,7,14,0,0,12555,12556,7,6,0,0,12556,12557,7,15,0,0,12557,12558,7,19,0,0,12558,12559,7,12,0,0,12559,2090,1,0,0,0,12560,12561,7,11,0,0,12561,12562,7,6,0,0,12562,12563,5,95,0,0,12563,12564,7,15,0,0,12564,12565,7,12,0,0,12565,12566,7,6,0,0,12566,12567,7,7,0,0,12567,12568,7,8,0,0,12568,12569,7,11,0,0,12569,12570,7,7,0,0,12570,12571,7,14,0,0,12571,12572,7,6,0,0,12572,12573,7,11,0,0,12573,2092,1,0,0,0,12574,12575,7,11,0,0,12575,12576,7,6,0,0,12576,12577,5,95,0,0,12577,12578,7,15,0,0,12578,12579,7,11,0,0,12579,12580,7,14,0,0,12580,12581,7,5,0,0,12581,12582,7,19,0,0,12582,12583,7,11,0,0,12583,12584,7,7,0,0,12584,12585,7,4,0,0,12585,2094,1,0,0,0,12586,12587,7,11,0,0,12587,12588,7,6,0,0,12588,12589,5,95,0,0,12589,12590,7,15,0,0,12590,12591,7,11,0,0,12591,12592,7,7,0,0,12592,12593,7,23,0,0,12593,12594,7,25,0,0,12594,12595,7,6,0,0,12595,12596,7,10,0,0,12596,2096,1,0,0,0,12597,12598,7,11,0,0,12598,12599,7,6,0,0,12599,12600,5,95,0,0,12600,12601,7,15,0,0,12601,12602,7,11,0,0,12602,12603,7,11,0,0,12603,12604,7,15,0,0,12604,12605,7,23,0,0,12605,12606,7,25,0,0,12606,12607,7,5,0,0,12607,12608,7,7,0,0,12608,2098,1,0,0,0,12609,12610,7,11,0,0,12610,12611,7,6,0,0,12611,12612,5,95,0,0,12612,12613,7,5,0,0,12613,12614,7,15,0,0,12614,12615,7,12,0,0,12615,12616,7,7,0,0,12616,12617,7,18,0,0,12617,12618,7,8,0,0,12618,12619,7,19,0,0,12619,12620,7,23,0,0,12620,12621,7,6,0,0,12621,12622,7,7,0,0,12622,12623,7,26,0,0,12623,12624,7,6,0,0,12624,2100,1,0,0,0,12625,12626,7,11,0,0,12626,12627,7,6,0,0,12627,12628,5,95,0,0,12628,12629,7,5,0,0,12629,12630,7,15,0,0,12630,12631,7,12,0,0,12631,12632,7,7,0,0,12632,12633,7,18,0,0,12633,12634,7,8,0,0,12634,12635,7,19,0,0,12635,12636,7,23,0,0,12636,12637,7,9,0,0,12637,12638,7,21,0,0,12638,12639,7,16,0,0,12639,2102,1,0,0,0,12640,12641,7,11,0,0,12641,12642,7,6,0,0,12642,12643,5,95,0,0,12643,12644,7,5,0,0,12644,12645,7,15,0,0,12645,12646,7,12,0,0,12646,12647,7,7,0,0,12647,12648,7,11,0,0,12648,12649,7,6,0,0,12649,12650,7,8,0,0,12650,12651,7,15,0,0,12651,12652,7,12,0,0,12652,12653,7,22,0,0,12653,12654,7,18,0,0,12654,12655,7,8,0,0,12655,12656,7,19,0,0,12656,12657,7,23,0,0,12657,12658,7,6,0,0,12658,12659,7,7,0,0,12659,12660,7,26,0,0,12660,12661,7,6,0,0,12661,2104,1,0,0,0,12662,12663,7,11,0,0,12663,12664,7,6,0,0,12664,12665,5,95,0,0,12665,12666,7,5,0,0,12666,12667,7,15,0,0,12667,12668,7,12,0,0,12668,12669,7,7,0,0,12669,12670,7,11,0,0,12670,12671,7,6,0,0,12671,12672,7,8,0,0,12672,12673,7,15,0,0,12673,12674,7,12,0,0,12674,12675,7,22,0,0,12675,12676,7,18,0,0,12676,12677,7,8,0,0,12677,12678,7,19,0,0,12678,12679,7,23,0,0,12679,12680,7,9,0,0,12680,12681,7,21,0,0,12681,12682,7,16,0,0,12682,2106,1,0,0,0,12683,12684,7,11,0,0,12684,12685,7,6,0,0,12685,12686,5,95,0,0,12686,12687,7,12,0,0,12687,12688,7,17,0,0,12688,12689,7,23,0,0,12689,12690,7,22,0,0,12690,12691,7,7,0,0,12691,12692,7,19,0,0,12692,12693,7,23,0,0,12693,12694,7,7,0,0,12694,12695,7,6,0,0,12695,12696,7,8,0,0,12696,12697,7,15,0,0,12697,12698,7,7,0,0,12698,12699,7,11,0,0,12699,2108,1,0,0,0,12700,12701,7,11,0,0,12701,12702,7,6,0,0,12702,12703,5,95,0,0,12703,12704,7,12,0,0,12704,12705,7,17,0,0,12705,12706,7,23,0,0,12706,12707,7,15,0,0,12707,12708,7,12,0,0,12708,12709,7,6,0,0,12709,12710,7,7,0,0,12710,12711,7,8,0,0,12711,12712,7,15,0,0,12712,12713,7,19,0,0,12713,12714,7,8,0,0,12714,12715,7,8,0,0,12715,12716,7,15,0,0,12716,12717,7,12,0,0,12717,12718,7,22,0,0,12718,2110,1,0,0,0,12719,12720,7,11,0,0,12720,12721,7,6,0,0,12721,12722,5,95,0,0,12722,12723,7,12,0,0,12723,12724,7,17,0,0,12724,12725,7,23,0,0,12725,12726,7,15,0,0,12726,12727,7,12,0,0,12727,12728,7,6,0,0,12728,12729,7,7,0,0,12729,12730,7,8,0,0,12730,12731,7,15,0,0,12731,12732,7,19,0,0,12732,12733,7,8,0,0,12733,12734,7,8,0,0,12734,12735,7,15,0,0,12735,12736,7,12,0,0,12736,12737,7,22,0,0,12737,12738,7,11,0,0,12738,2112,1,0,0,0,12739,12740,7,11,0,0,12740,12741,7,6,0,0,12741,12742,5,95,0,0,12742,12743,7,12,0,0,12743,12744,7,17,0,0,12744,12745,7,23,0,0,12745,12746,7,25,0,0,12746,12747,7,19,0,0,12747,12748,7,15,0,0,12748,12749,7,12,0,0,12749,12750,7,6,0,0,12750,12751,7,11,0,0,12751,2114,1,0,0,0,12752,12753,7,11,0,0,12753,12754,7,6,0,0,12754,12755,5,95,0,0,12755,12756,7,19,0,0,12756,12757,7,24,0,0,12757,12758,7,7,0,0,12758,12759,7,8,0,0,12759,12760,7,5,0,0,12760,12761,7,3,0,0,12761,12762,7,25,0,0,12762,12763,7,11,0,0,12763,2116,1,0,0,0,12764,12765,7,11,0,0,12765,12766,7,6,0,0,12766,12767,5,95,0,0,12767,12768,7,25,0,0,12768,12769,7,19,0,0,12769,12770,7,15,0,0,12770,12771,7,12,0,0,12771,12772,7,6,0,0,12772,12773,7,18,0,0,12773,12774,7,8,0,0,12774,12775,7,19,0,0,12775,12776,7,23,0,0,12776,12777,7,6,0,0,12777,12778,7,7,0,0,12778,12779,7,26,0,0,12779,12780,7,6,0,0,12780,2118,1,0,0,0,12781,12782,7,11,0,0,12782,12783,7,6,0,0,12783,12784,5,95,0,0,12784,12785,7,25,0,0,12785,12786,7,19,0,0,12786,12787,7,15,0,0,12787,12788,7,12,0,0,12788,12789,7,6,0,0,12789,12790,7,18,0,0,12790,12791,7,8,0,0,12791,12792,7,19,0,0,12792,12793,7,23,0,0,12793,12794,7,9,0,0,12794,12795,7,21,0,0,12795,12796,7,16,0,0,12796,2120,1,0,0,0,12797,12798,7,11,0,0,12798,12799,7,6,0,0,12799,12800,5,95,0,0,12800,12801,7,25,0,0,12801,12802,7,19,0,0,12802,12803,7,15,0,0,12803,12804,7,12,0,0,12804,12805,7,6,0,0,12805,12806,7,12,0,0,12806,2122,1,0,0,0,12807,12808,7,11,0,0,12808,12809,7,6,0,0,12809,12810,5,95,0,0,12810,12811,7,25,0,0,12811,12812,7,19,0,0,12812,12813,7,5,0,0,12813,12814,7,10,0,0,12814,12815,7,18,0,0,12815,12816,7,8,0,0,12816,12817,7,19,0,0,12817,12818,7,23,0,0,12818,12819,7,6,0,0,12819,12820,7,7,0,0,12820,12821,7,26,0,0,12821,12822,7,6,0,0,12822,2124,1,0,0,0,12823,12824,7,11,0,0,12824,12825,7,6,0,0,12825,12826,5,95,0,0,12826,12827,7,25,0,0,12827,12828,7,19,0,0,12828,12829,7,5,0,0,12829,12830,7,10,0,0,12830,12831,7,18,0,0,12831,12832,7,8,0,0,12832,12833,7,19,0,0,12833,12834,7,23,0,0,12834,12835,7,9,0,0,12835,12836,7,21,0,0,12836,12837,7,16,0,0,12837,2126,1,0,0,0,12838,12839,7,11,0,0,12839,12840,7,6,0,0,12840,12841,5,95,0,0,12841,12842,7,25,0,0,12842,12843,7,19,0,0,12843,12844,7,5,0,0,12844,12845,7,10,0,0,12845,12846,7,22,0,0,12846,12847,7,19,0,0,12847,12848,7,12,0,0,12848,12849,7,18,0,0,12849,12850,7,8,0,0,12850,12851,7,19,0,0,12851,12852,7,23,0,0,12852,12853,7,6,0,0,12853,12854,7,7,0,0,12854,12855,7,26,0,0,12855,12856,7,6,0,0,12856,2128,1,0,0,0,12857,12858,7,11,0,0,12858,12859,7,6,0,0,12859,12860,5,95,0,0,12860,12861,7,25,0,0,12861,12862,7,19,0,0,12862,12863,7,5,0,0,12863,12864,7,10,0,0,12864,12865,7,22,0,0,12865,12866,7,19,0,0,12866,12867,7,12,0,0,12867,12868,7,18,0,0,12868,12869,7,8,0,0,12869,12870,7,19,0,0,12870,12871,7,23,0,0,12871,12872,7,9,0,0,12872,12873,7,21,0,0,12873,12874,7,16,0,0,12874,2130,1,0,0,0,12875,12876,7,11,0,0,12876,12877,7,6,0,0,12877,12878,5,95,0,0,12878,12879,7,11,0,0,12879,12880,7,8,0,0,12880,12881,7,15,0,0,12881,12882,7,4,0,0,12882,2132,1,0,0,0,12883,12884,7,11,0,0,12884,12885,7,6,0,0,12885,12886,5,95,0,0,12886,12887,7,11,0,0,12887,12888,7,6,0,0,12888,12889,7,3,0,0,12889,12890,7,8,0,0,12890,12891,7,6,0,0,12891,12892,7,25,0,0,12892,12893,7,19,0,0,12893,12894,7,15,0,0,12894,12895,7,12,0,0,12895,12896,7,6,0,0,12896,2134,1,0,0,0,12897,12898,7,11,0,0,12898,12899,7,6,0,0,12899,12900,5,95,0,0,12900,12901,7,11,0,0,12901,12902,7,10,0,0,12902,12903,7,23,0,0,12903,12904,7,4,0,0,12904,12905,7,15,0,0,12905,12906,7,18,0,0,12906,12907,7,18,0,0,12907,12908,7,7,0,0,12908,12909,7,8,0,0,12909,12910,7,7,0,0,12910,12911,7,12,0,0,12911,12912,7,14,0,0,12912,12913,7,7,0,0,12913,2136,1,0,0,0,12914,12915,7,11,0,0,12915,12916,7,6,0,0,12916,12917,5,95,0,0,12917,12918,7,6,0,0,12918,12919,7,19,0,0,12919,12920,7,17,0,0,12920,12921,7,14,0,0,12921,12922,7,20,0,0,12922,12923,7,7,0,0,12923,12924,7,11,0,0,12924,2138,1,0,0,0,12925,12926,7,11,0,0,12926,12927,7,6,0,0,12927,12928,5,95,0,0,12928,12929,7,17,0,0,12929,12930,7,12,0,0,12930,12931,7,15,0,0,12931,12932,7,19,0,0,12932,12933,7,12,0,0,12933,2140,1,0,0,0,12934,12935,7,11,0,0,12935,12936,7,6,0,0,12936,12937,5,95,0,0,12937,12938,7,9,0,0,12938,12939,7,15,0,0,12939,12940,7,6,0,0,12940,12941,7,20,0,0,12941,12942,7,15,0,0,12942,12943,7,12,0,0,12943,2142,1,0,0,0,12944,12945,7,11,0,0,12945,12946,7,6,0,0,12946,12947,5,95,0,0,12947,12948,7,26,0,0,12948,2144,1,0,0,0,12949,12950,7,11,0,0,12950,12951,7,6,0,0,12951,12952,5,95,0,0,12952,12953,7,10,0,0,12953,2146,1,0,0,0,12954,12955,7,11,0,0,12955,12956,7,17,0,0,12956,12957,7,16,0,0,12957,12958,7,4,0,0,12958,12959,7,3,0,0,12959,12960,7,6,0,0,12960,12961,7,7,0,0,12961,2148,1,0,0,0,12962,12963,7,11,0,0,12963,12964,7,17,0,0,12964,12965,7,16,0,0,12965,12966,7,11,0,0,12966,12967,7,6,0,0,12967,12968,7,8,0,0,12968,12969,7,15,0,0,12969,12970,7,12,0,0,12970,12971,7,22,0,0,12971,12972,5,95,0,0,12972,12973,7,15,0,0,12973,12974,7,12,0,0,12974,12975,7,4,0,0,12975,12976,7,7,0,0,12976,12977,7,26,0,0,12977,2150,1,0,0,0,12978,12979,7,11,0,0,12979,12980,7,17,0,0,12980,12981,7,16,0,0,12981,12982,7,6,0,0,12982,12983,7,15,0,0,12983,12984,7,23,0,0,12984,12985,7,7,0,0,12985,2152,1,0,0,0,12986,12987,7,11,0,0,12987,12988,7,10,0,0,12988,12989,7,11,0,0,12989,12990,7,6,0,0,12990,12991,7,7,0,0,12991,12992,7,23,0,0,12992,12993,5,95,0,0,12993,12994,7,17,0,0,12994,12995,7,11,0,0,12995,12996,7,7,0,0,12996,12997,7,8,0,0,12997,2154,1,0,0,0,12998,12999,7,6,0,0,12999,13e3,7,3,0,0,13e3,13001,7,12,0,0,13001,2156,1,0,0,0,13002,13003,7,6,0,0,13003,13004,7,15,0,0,13004,13005,7,23,0,0,13005,13006,7,7,0,0,13006,13007,7,4,0,0,13007,13008,7,15,0,0,13008,13009,7,18,0,0,13009,13010,7,18,0,0,13010,2158,1,0,0,0,13011,13012,7,6,0,0,13012,13013,7,15,0,0,13013,13014,7,23,0,0,13014,13015,7,7,0,0,13015,13016,7,11,0,0,13016,13017,7,6,0,0,13017,13018,7,3,0,0,13018,13019,7,23,0,0,13019,13020,7,25,0,0,13020,13021,7,3,0,0,13021,13022,7,4,0,0,13022,13023,7,4,0,0,13023,2160,1,0,0,0,13024,13025,7,6,0,0,13025,13026,7,15,0,0,13026,13027,7,23,0,0,13027,13028,7,7,0,0,13028,13029,7,11,0,0,13029,13030,7,6,0,0,13030,13031,7,3,0,0,13031,13032,7,23,0,0,13032,13033,7,25,0,0,13033,13034,7,4,0,0,13034,13035,7,15,0,0,13035,13036,7,18,0,0,13036,13037,7,18,0,0,13037,2162,1,0,0,0,13038,13039,7,6,0,0,13039,13040,7,15,0,0,13040,13041,7,23,0,0,13041,13042,7,7,0,0,13042,13043,5,95,0,0,13043,13044,7,18,0,0,13044,13045,7,19,0,0,13045,13046,7,8,0,0,13046,13047,7,23,0,0,13047,13048,7,3,0,0,13048,13049,7,6,0,0,13049,2164,1,0,0,0,13050,13051,7,6,0,0,13051,13052,7,15,0,0,13052,13053,7,23,0,0,13053,13054,7,7,0,0,13054,13055,5,95,0,0,13055,13056,7,6,0,0,13056,13057,7,19,0,0,13057,13058,5,95,0,0,13058,13059,7,11,0,0,13059,13060,7,7,0,0,13060,13061,7,14,0,0,13061,2166,1,0,0,0,13062,13063,7,6,0,0,13063,13064,7,19,0,0,13064,13065,7,17,0,0,13065,13066,7,14,0,0,13066,13067,7,20,0,0,13067,13068,7,7,0,0,13068,13069,7,11,0,0,13069,2168,1,0,0,0,13070,13071,7,6,0,0,13071,13072,7,19,0,0,13072,13073,5,95,0,0,13073,13074,7,16,0,0,13074,13075,7,3,0,0,13075,13076,7,11,0,0,13076,13077,7,7,0,0,13077,13078,5,54,0,0,13078,13079,5,52,0,0,13079,2170,1,0,0,0,13080,13081,7,6,0,0,13081,13082,7,19,0,0,13082,13083,5,95,0,0,13083,13084,7,4,0,0,13084,13085,7,3,0,0,13085,13086,7,10,0,0,13086,13087,7,11,0,0,13087,2172,1,0,0,0,13088,13089,7,6,0,0,13089,13090,7,19,0,0,13090,13091,5,95,0,0,13091,13092,7,11,0,0,13092,13093,7,7,0,0,13093,13094,7,14,0,0,13094,13095,7,19,0,0,13095,13096,7,12,0,0,13096,13097,7,4,0,0,13097,13098,7,11,0,0,13098,2174,1,0,0,0,13099,13100,7,6,0,0,13100,13101,7,25,0,0,13101,13102,5,95,0,0,13102,13103,7,14,0,0,13103,13104,7,19,0,0,13104,13105,7,12,0,0,13105,13106,7,12,0,0,13106,13107,7,7,0,0,13107,13108,7,14,0,0,13108,13109,7,6,0,0,13109,13110,7,15,0,0,13110,13111,7,19,0,0,13111,13112,7,12,0,0,13112,13113,5,95,0,0,13113,13114,7,3,0,0,13114,13115,7,4,0,0,13115,13116,7,23,0,0,13116,13117,7,15,0,0,13117,13118,7,12,0,0,13118,2176,1,0,0,0,13119,13120,7,17,0,0,13120,13121,7,14,0,0,13121,13122,7,3,0,0,13122,13123,7,11,0,0,13123,13124,7,7,0,0,13124,2178,1,0,0,0,13125,13126,7,17,0,0,13126,13127,7,12,0,0,13127,13128,7,14,0,0,13128,13129,7,19,0,0,13129,13130,7,23,0,0,13130,13131,7,25,0,0,13131,13132,7,8,0,0,13132,13133,7,7,0,0,13133,13134,7,11,0,0,13134,13135,7,11,0,0,13135,2180,1,0,0,0,13136,13137,7,17,0,0,13137,13138,7,12,0,0,13138,13139,7,14,0,0,13139,13140,7,19,0,0,13140,13141,7,23,0,0,13141,13142,7,25,0,0,13142,13143,7,8,0,0,13143,13144,7,7,0,0,13144,13145,7,11,0,0,13145,13146,7,11,0,0,13146,13147,7,7,0,0,13147,13148,7,4,0,0,13148,13149,5,95,0,0,13149,13150,7,5,0,0,13150,13151,7,7,0,0,13151,13152,7,12,0,0,13152,13153,7,22,0,0,13153,13154,7,6,0,0,13154,13155,7,20,0,0,13155,2182,1,0,0,0,13156,13157,7,17,0,0,13157,13158,7,12,0,0,13158,13159,7,20,0,0,13159,13160,7,7,0,0,13160,13161,7,26,0,0,13161,2184,1,0,0,0,13162,13163,7,17,0,0,13163,13164,7,12,0,0,13164,13165,7,15,0,0,13165,13166,7,26,0,0,13166,13167,5,95,0,0,13167,13168,7,6,0,0,13168,13169,7,15,0,0,13169,13170,7,23,0,0,13170,13171,7,7,0,0,13171,13172,7,11,0,0,13172,13173,7,6,0,0,13173,13174,7,3,0,0,13174,13175,7,23,0,0,13175,13176,7,25,0,0,13176,2186,1,0,0,0,13177,13178,7,17,0,0,13178,13179,7,25,0,0,13179,13180,7,4,0,0,13180,13181,7,3,0,0,13181,13182,7,6,0,0,13182,13183,7,7,0,0,13183,13184,7,26,0,0,13184,13185,7,23,0,0,13185,13186,7,5,0,0,13186,2188,1,0,0,0,13187,13188,7,17,0,0,13188,13189,7,25,0,0,13189,13190,7,25,0,0,13190,13191,7,7,0,0,13191,13192,7,8,0,0,13192,2190,1,0,0,0,13193,13194,7,17,0,0,13194,13195,7,17,0,0,13195,13196,7,15,0,0,13196,13197,7,4,0,0,13197,2192,1,0,0,0,13198,13199,7,17,0,0,13199,13200,7,17,0,0,13200,13201,7,15,0,0,13201,13202,7,4,0,0,13202,13203,5,95,0,0,13203,13204,7,11,0,0,13204,13205,7,20,0,0,13205,13206,7,19,0,0,13206,13207,7,8,0,0,13207,13208,7,6,0,0,13208,2194,1,0,0,0,13209,13210,7,24,0,0,13210,13211,7,3,0,0,13211,13212,7,5,0,0,13212,13213,7,15,0,0,13213,13214,7,4,0,0,13214,13215,7,3,0,0,13215,13216,7,6,0,0,13216,13217,7,7,0,0,13217,13218,5,95,0,0,13218,13219,7,25,0,0,13219,13220,7,3,0,0,13220,13221,7,11,0,0,13221,13222,7,11,0,0,13222,13223,7,9,0,0,13223,13224,7,19,0,0,13224,13225,7,8,0,0,13225,13226,7,4,0,0,13226,13227,5,95,0,0,13227,13228,7,11,0,0,13228,13229,7,6,0,0,13229,13230,7,8,0,0,13230,13231,7,7,0,0,13231,13232,7,12,0,0,13232,13233,7,22,0,0,13233,13234,7,6,0,0,13234,13235,7,20,0,0,13235,2196,1,0,0,0,13236,13237,7,24,0,0,13237,13238,7,7,0,0,13238,13239,7,8,0,0,13239,13240,7,11,0,0,13240,13241,7,15,0,0,13241,13242,7,19,0,0,13242,13243,7,12,0,0,13243,2198,1,0,0,0,13244,13245,7,9,0,0,13245,13246,7,3,0,0,13246,13247,7,15,0,0,13247,13248,7,6,0,0,13248,13249,5,95,0,0,13249,13250,7,17,0,0,13250,13251,7,12,0,0,13251,13252,7,6,0,0,13252,13253,7,15,0,0,13253,13254,7,5,0,0,13254,13255,5,95,0,0,13255,13256,7,11,0,0,13256,13257,7,28,0,0,13257,13258,7,5,0,0,13258,13259,5,95,0,0,13259,13260,7,6,0,0,13260,13261,7,20,0,0,13261,13262,7,8,0,0,13262,13263,7,7,0,0,13263,13264,7,3,0,0,13264,13265,7,4,0,0,13265,13266,5,95,0,0,13266,13267,7,3,0,0,13267,13268,7,18,0,0,13268,13269,7,6,0,0,13269,13270,7,7,0,0,13270,13271,7,8,0,0,13271,13272,5,95,0,0,13272,13273,7,22,0,0,13273,13274,7,6,0,0,13274,13275,7,15,0,0,13275,13276,7,4,0,0,13276,13277,7,11,0,0,13277,2200,1,0,0,0,13278,13279,7,9,0,0,13279,13280,7,7,0,0,13280,13281,7,7,0,0,13281,13282,7,21,0,0,13282,13283,7,4,0,0,13283,13284,7,3,0,0,13284,13285,7,10,0,0,13285,2202,1,0,0,0,13286,13287,7,9,0,0,13287,13288,7,7,0,0,13288,13289,7,7,0,0,13289,13290,7,21,0,0,13290,13291,7,19,0,0,13291,13292,7,18,0,0,13292,13293,7,10,0,0,13293,13294,7,7,0,0,13294,13295,7,3,0,0,13295,13296,7,8,0,0,13296,2204,1,0,0,0,13297,13298,7,9,0,0,13298,13299,7,7,0,0,13299,13300,7,15,0,0,13300,13301,7,22,0,0,13301,13302,7,20,0,0,13302,13303,7,6,0,0,13303,13304,5,95,0,0,13304,13305,7,11,0,0,13305,13306,7,6,0,0,13306,13307,7,8,0,0,13307,13308,7,15,0,0,13308,13309,7,12,0,0,13309,13310,7,22,0,0,13310,2206,1,0,0,0,13311,13312,7,9,0,0,13312,13313,7,15,0,0,13313,13314,7,6,0,0,13314,13315,7,20,0,0,13315,13316,7,15,0,0,13316,13317,7,12,0,0,13317,2208,1,0,0,0,13318,13319,7,10,0,0,13319,13320,7,7,0,0,13320,13321,7,3,0,0,13321,13322,7,8,0,0,13322,13323,7,9,0,0,13323,13324,7,7,0,0,13324,13325,7,7,0,0,13325,13326,7,21,0,0,13326,2210,1,0,0,0,13327,13328,7,10,0,0,13328,2212,1,0,0,0,13329,13330,7,26,0,0,13330,2214,1,0,0,0,13331,13332,5,58,0,0,13332,13333,5,61,0,0,13333,2216,1,0,0,0,13334,13335,5,43,0,0,13335,13336,5,61,0,0,13336,2218,1,0,0,0,13337,13338,5,45,0,0,13338,13339,5,61,0,0,13339,2220,1,0,0,0,13340,13341,5,42,0,0,13341,13342,5,61,0,0,13342,2222,1,0,0,0,13343,13344,5,47,0,0,13344,13345,5,61,0,0,13345,2224,1,0,0,0,13346,13347,5,37,0,0,13347,13348,5,61,0,0,13348,2226,1,0,0,0,13349,13350,5,38,0,0,13350,13351,5,61,0,0,13351,2228,1,0,0,0,13352,13353,5,94,0,0,13353,13354,5,61,0,0,13354,2230,1,0,0,0,13355,13356,5,124,0,0,13356,13357,5,61,0,0,13357,2232,1,0,0,0,13358,13359,5,42,0,0,13359,2234,1,0,0,0,13360,13361,5,47,0,0,13361,2236,1,0,0,0,13362,13363,5,37,0,0,13363,2238,1,0,0,0,13364,13365,5,43,0,0,13365,2240,1,0,0,0,13366,13367,5,45,0,0,13367,2242,1,0,0,0,13368,13369,7,4,0,0,13369,13370,7,15,0,0,13370,13371,7,24,0,0,13371,2244,1,0,0,0,13372,13373,7,23,0,0,13373,13374,7,19,0,0,13374,13375,7,4,0,0,13375,2246,1,0,0,0,13376,13377,5,61,0,0,13377,2248,1,0,0,0,13378,13379,5,62,0,0,13379,2250,1,0,0,0,13380,13381,5,60,0,0,13381,2252,1,0,0,0,13382,13383,5,33,0,0,13383,2254,1,0,0,0,13384,13385,5,126,0,0,13385,2256,1,0,0,0,13386,13387,5,124,0,0,13387,2258,1,0,0,0,13388,13389,5,38,0,0,13389,2260,1,0,0,0,13390,13391,5,94,0,0,13391,2262,1,0,0,0,13392,13393,5,46,0,0,13393,2264,1,0,0,0,13394,13395,5,40,0,0,13395,2266,1,0,0,0,13396,13397,5,41,0,0,13397,2268,1,0,0,0,13398,13399,5,44,0,0,13399,2270,1,0,0,0,13400,13401,5,59,0,0,13401,2272,1,0,0,0,13402,13403,5,64,0,0,13403,2274,1,0,0,0,13404,13405,5,48,0,0,13405,2276,1,0,0,0,13406,13407,5,49,0,0,13407,2278,1,0,0,0,13408,13409,5,50,0,0,13409,2280,1,0,0,0,13410,13411,5,39,0,0,13411,2282,1,0,0,0,13412,13413,5,34,0,0,13413,2284,1,0,0,0,13414,13415,5,96,0,0,13415,2286,1,0,0,0,13416,13417,5,58,0,0,13417,2288,1,0,0,0,13418,13422,3,2281,1140,0,13419,13422,3,2283,1141,0,13420,13422,3,2285,1142,0,13421,13418,1,0,0,0,13421,13419,1,0,0,0,13421,13420,1,0,0,0,13422,2290,1,0,0,0,13423,13424,5,96,0,0,13424,13425,3,2323,1161,0,13425,13426,5,96,0,0,13426,2292,1,0,0,0,13427,13429,3,2337,1168,0,13428,13427,1,0,0,0,13429,13430,1,0,0,0,13430,13428,1,0,0,0,13430,13431,1,0,0,0,13431,13432,1,0,0,0,13432,13433,7,29,0,0,13433,2294,1,0,0,0,13434,13435,7,12,0,0,13435,13436,3,2331,1165,0,13436,2296,1,0,0,0,13437,13441,3,2329,1164,0,13438,13441,3,2331,1165,0,13439,13441,3,2333,1166,0,13440,13437,1,0,0,0,13440,13438,1,0,0,0,13440,13439,1,0,0,0,13441,2298,1,0,0,0,13442,13444,3,2337,1168,0,13443,13442,1,0,0,0,13444,13445,1,0,0,0,13445,13443,1,0,0,0,13445,13446,1,0,0,0,13446,2300,1,0,0,0,13447,13448,7,26,0,0,13448,13452,5,39,0,0,13449,13450,3,2335,1167,0,13450,13451,3,2335,1167,0,13451,13453,1,0,0,0,13452,13449,1,0,0,0,13453,13454,1,0,0,0,13454,13452,1,0,0,0,13454,13455,1,0,0,0,13455,13456,1,0,0,0,13456,13457,5,39,0,0,13457,13467,1,0,0,0,13458,13459,5,48,0,0,13459,13460,7,26,0,0,13460,13462,1,0,0,0,13461,13463,3,2335,1167,0,13462,13461,1,0,0,0,13463,13464,1,0,0,0,13464,13462,1,0,0,0,13464,13465,1,0,0,0,13465,13467,1,0,0,0,13466,13447,1,0,0,0,13466,13458,1,0,0,0,13467,2302,1,0,0,0,13468,13470,3,2337,1168,0,13469,13468,1,0,0,0,13470,13473,1,0,0,0,13471,13469,1,0,0,0,13471,13472,1,0,0,0,13472,13474,1,0,0,0,13473,13471,1,0,0,0,13474,13476,5,46,0,0,13475,13477,3,2337,1168,0,13476,13475,1,0,0,0,13477,13478,1,0,0,0,13478,13476,1,0,0,0,13478,13479,1,0,0,0,13479,13510,1,0,0,0,13480,13482,3,2337,1168,0,13481,13480,1,0,0,0,13482,13483,1,0,0,0,13483,13481,1,0,0,0,13483,13484,1,0,0,0,13484,13485,1,0,0,0,13485,13486,5,46,0,0,13486,13487,3,2325,1162,0,13487,13510,1,0,0,0,13488,13490,3,2337,1168,0,13489,13488,1,0,0,0,13490,13493,1,0,0,0,13491,13489,1,0,0,0,13491,13492,1,0,0,0,13492,13494,1,0,0,0,13493,13491,1,0,0,0,13494,13496,5,46,0,0,13495,13497,3,2337,1168,0,13496,13495,1,0,0,0,13497,13498,1,0,0,0,13498,13496,1,0,0,0,13498,13499,1,0,0,0,13499,13500,1,0,0,0,13500,13501,3,2325,1162,0,13501,13510,1,0,0,0,13502,13504,3,2337,1168,0,13503,13502,1,0,0,0,13504,13505,1,0,0,0,13505,13503,1,0,0,0,13505,13506,1,0,0,0,13506,13507,1,0,0,0,13507,13508,3,2325,1162,0,13508,13510,1,0,0,0,13509,13471,1,0,0,0,13509,13481,1,0,0,0,13509,13491,1,0,0,0,13509,13503,1,0,0,0,13510,2304,1,0,0,0,13511,13512,5,92,0,0,13512,13513,7,12,0,0,13513,2306,1,0,0,0,13514,13515,3,2339,1169,0,13515,2308,1,0,0,0,13516,13517,5,95,0,0,13517,13518,3,2323,1161,0,13518,2310,1,0,0,0,13519,13520,5,46,0,0,13520,13521,3,2327,1163,0,13521,2312,1,0,0,0,13522,13523,3,2327,1163,0,13523,2314,1,0,0,0,13524,13525,3,2333,1166,0,13525,2316,1,0,0,0,13526,13527,3,2273,1136,0,13527,13528,3,2341,1170,0,13528,2318,1,0,0,0,13529,13536,3,2273,1136,0,13530,13537,3,2297,1148,0,13531,13533,7,30,0,0,13532,13531,1,0,0,0,13533,13534,1,0,0,0,13534,13532,1,0,0,0,13534,13535,1,0,0,0,13535,13537,1,0,0,0,13536,13530,1,0,0,0,13536,13532,1,0,0,0,13537,2320,1,0,0,0,13538,13539,3,2273,1136,0,13539,13546,3,2273,1136,0,13540,13542,7,30,0,0,13541,13540,1,0,0,0,13542,13543,1,0,0,0,13543,13541,1,0,0,0,13543,13544,1,0,0,0,13544,13547,1,0,0,0,13545,13547,3,2333,1166,0,13546,13541,1,0,0,0,13546,13545,1,0,0,0,13547,2322,1,0,0,0,13548,13590,3,1491,745,0,13549,13590,3,1493,746,0,13550,13590,3,1495,747,0,13551,13590,3,451,225,0,13552,13590,3,1497,748,0,13553,13590,3,1499,749,0,13554,13590,3,1501,750,0,13555,13590,3,1503,751,0,13556,13590,3,1505,752,0,13557,13590,3,1507,753,0,13558,13590,3,1509,754,0,13559,13590,3,1511,755,0,13560,13590,3,1513,756,0,13561,13590,3,1515,757,0,13562,13590,3,1517,758,0,13563,13590,3,1521,760,0,13564,13590,3,1523,761,0,13565,13590,3,1525,762,0,13566,13590,3,1527,763,0,13567,13590,3,1529,764,0,13568,13590,3,1531,765,0,13569,13590,3,1533,766,0,13570,13590,3,1535,767,0,13571,13590,3,1537,768,0,13572,13590,3,1539,769,0,13573,13590,3,1541,770,0,13574,13590,3,1543,771,0,13575,13590,3,1545,772,0,13576,13590,3,1547,773,0,13577,13590,3,1549,774,0,13578,13590,3,1551,775,0,13579,13590,3,1553,776,0,13580,13590,3,1555,777,0,13581,13590,3,1557,778,0,13582,13590,3,1559,779,0,13583,13590,3,1561,780,0,13584,13590,3,1563,781,0,13585,13590,3,1565,782,0,13586,13590,3,1567,783,0,13587,13590,3,1569,784,0,13588,13590,3,1571,785,0,13589,13548,1,0,0,0,13589,13549,1,0,0,0,13589,13550,1,0,0,0,13589,13551,1,0,0,0,13589,13552,1,0,0,0,13589,13553,1,0,0,0,13589,13554,1,0,0,0,13589,13555,1,0,0,0,13589,13556,1,0,0,0,13589,13557,1,0,0,0,13589,13558,1,0,0,0,13589,13559,1,0,0,0,13589,13560,1,0,0,0,13589,13561,1,0,0,0,13589,13562,1,0,0,0,13589,13563,1,0,0,0,13589,13564,1,0,0,0,13589,13565,1,0,0,0,13589,13566,1,0,0,0,13589,13567,1,0,0,0,13589,13568,1,0,0,0,13589,13569,1,0,0,0,13589,13570,1,0,0,0,13589,13571,1,0,0,0,13589,13572,1,0,0,0,13589,13573,1,0,0,0,13589,13574,1,0,0,0,13589,13575,1,0,0,0,13589,13576,1,0,0,0,13589,13577,1,0,0,0,13589,13578,1,0,0,0,13589,13579,1,0,0,0,13589,13580,1,0,0,0,13589,13581,1,0,0,0,13589,13582,1,0,0,0,13589,13583,1,0,0,0,13589,13584,1,0,0,0,13589,13585,1,0,0,0,13589,13586,1,0,0,0,13589,13587,1,0,0,0,13589,13588,1,0,0,0,13590,2324,1,0,0,0,13591,13593,7,7,0,0,13592,13594,7,31,0,0,13593,13592,1,0,0,0,13593,13594,1,0,0,0,13594,13596,1,0,0,0,13595,13597,3,2337,1168,0,13596,13595,1,0,0,0,13597,13598,1,0,0,0,13598,13596,1,0,0,0,13598,13599,1,0,0,0,13599,2326,1,0,0,0,13600,13602,7,32,0,0,13601,13600,1,0,0,0,13602,13605,1,0,0,0,13603,13604,1,0,0,0,13603,13601,1,0,0,0,13604,13607,1,0,0,0,13605,13603,1,0,0,0,13606,13608,7,33,0,0,13607,13606,1,0,0,0,13608,13609,1,0,0,0,13609,13610,1,0,0,0,13609,13607,1,0,0,0,13610,13614,1,0,0,0,13611,13613,7,32,0,0,13612,13611,1,0,0,0,13613,13616,1,0,0,0,13614,13612,1,0,0,0,13614,13615,1,0,0,0,13615,2328,1,0,0,0,13616,13614,1,0,0,0,13617,13625,5,34,0,0,13618,13619,5,92,0,0,13619,13624,9,0,0,0,13620,13621,5,34,0,0,13621,13624,5,34,0,0,13622,13624,8,34,0,0,13623,13618,1,0,0,0,13623,13620,1,0,0,0,13623,13622,1,0,0,0,13624,13627,1,0,0,0,13625,13623,1,0,0,0,13625,13626,1,0,0,0,13626,13628,1,0,0,0,13627,13625,1,0,0,0,13628,13629,5,34,0,0,13629,2330,1,0,0,0,13630,13638,5,39,0,0,13631,13632,5,92,0,0,13632,13637,9,0,0,0,13633,13634,5,39,0,0,13634,13637,5,39,0,0,13635,13637,8,35,0,0,13636,13631,1,0,0,0,13636,13633,1,0,0,0,13636,13635,1,0,0,0,13637,13640,1,0,0,0,13638,13636,1,0,0,0,13638,13639,1,0,0,0,13639,13641,1,0,0,0,13640,13638,1,0,0,0,13641,13642,5,39,0,0,13642,2332,1,0,0,0,13643,13649,5,96,0,0,13644,13648,8,36,0,0,13645,13646,5,96,0,0,13646,13648,5,96,0,0,13647,13644,1,0,0,0,13647,13645,1,0,0,0,13648,13651,1,0,0,0,13649,13647,1,0,0,0,13649,13650,1,0,0,0,13650,13652,1,0,0,0,13651,13649,1,0,0,0,13652,13653,5,96,0,0,13653,2334,1,0,0,0,13654,13655,7,37,0,0,13655,2336,1,0,0,0,13656,13657,7,38,0,0,13657,2338,1,0,0,0,13658,13659,7,16,0,0,13659,13661,5,39,0,0,13660,13662,7,39,0,0,13661,13660,1,0,0,0,13662,13663,1,0,0,0,13663,13661,1,0,0,0,13663,13664,1,0,0,0,13664,13665,1,0,0,0,13665,13666,5,39,0,0,13666,2340,1,0,0,0,13667,13669,7,38,0,0,13668,13667,1,0,0,0,13669,13670,1,0,0,0,13670,13668,1,0,0,0,13670,13671,1,0,0,0,13671,13672,1,0,0,0,13672,13674,5,46,0,0,13673,13675,7,40,0,0,13674,13673,1,0,0,0,13675,13676,1,0,0,0,13676,13674,1,0,0,0,13676,13677,1,0,0,0,13677,13698,1,0,0,0,13678,13680,7,37,0,0,13679,13678,1,0,0,0,13680,13683,1,0,0,0,13681,13679,1,0,0,0,13681,13682,1,0,0,0,13682,13684,1,0,0,0,13683,13681,1,0,0,0,13684,13688,5,58,0,0,13685,13687,7,37,0,0,13686,13685,1,0,0,0,13687,13690,1,0,0,0,13688,13686,1,0,0,0,13688,13689,1,0,0,0,13689,13691,1,0,0,0,13690,13688,1,0,0,0,13691,13693,5,58,0,0,13692,13694,7,41,0,0,13693,13692,1,0,0,0,13694,13695,1,0,0,0,13695,13693,1,0,0,0,13695,13696,1,0,0,0,13696,13698,1,0,0,0,13697,13668,1,0,0,0,13697,13681,1,0,0,0,13698,2342,1,0,0,0,13699,13700,9,0,0,0,13700,13701,1,0,0,0,13701,13702,6,1171,2,0,13702,2344,1,0,0,0,51,0,2348,2359,2372,2386,2390,2395,2399,2403,2409,2413,2415,9261,9288,13421,13430,13440,13445,13454,13464,13466,13471,13478,13483,13491,13498,13505,13509,13534,13536,13543,13546,13589,13593,13598,13603,13609,13614,13623,13625,13636,13638,13647,13649,13663,13670,13676,13681,13688,13695,13697,3,0,1,0,6,0,0,0,3,0],Ki.vocabulary=new Ra(Ki.literalNames,Ki.symbolicNames,[]),Ki.decisionsToDFA=Ki._ATN.decisionToState.map(((t,e)=>new ni(t,e))),Ki),FC=(Qi=class t extends Cc{get grammarFileName(){return"MySqlParser.g4"}get literalNames(){return t.literalNames}get symbolicNames(){return t.symbolicNames}get ruleNames(){return t.ruleNames}get serializedATN(){return t._serializedATN}createFailedPredicateException(t,e){return new Sc(this,t,e)}constructor(e){super(e),this.interpreter=new Ai(this,t._ATN,t.decisionsToDFA,new Si)}root(){let e,s=new vC(this.context,this.state);this.enterRule(s,0,t.RULE_root);try{this.enterOuterAlt(s,1),this.state=751,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&84935296||!(e-33&-32)&&1<<e-33&537147393||!(e-71&-32)&&1<<e-71&2151694339||!(e-103&-32)&&1<<e-103&536936449||!(e-138&-32)&&1<<e-138&442923||!(e-172&-32)&&1<<e-172&1135617||!(e-344&-32)&&1<<e-344&33558659||390===e||399===e||!(e-432&-32)&&1<<e-432&16782337||!(e-560&-32)&&1<<e-560&537919489||597===e||604===e||!(e-629&-32)&&1<<e-629&134217793||661===e||681===e||708===e||739===e||1133===e)&&(this.state=750,this.statements()),this.state=753,this.match(t.EOF)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}statements(){let e,s=new BC(this.context,this.state);this.enterRule(s,2,t.RULE_statements);try{switch(this.state=763,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,2,this.context)){case 1:this.enterOuterAlt(s,1),this.state=755,this.statement(),this.state=757,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1136===e&&(this.state=756,this.match(t.SEMI));break;case 2:this.enterOuterAlt(s,2),this.state=759,this.statement(),this.state=760,this.match(t.SEMI),this.state=761,this.statements()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}statement(){let e=new yC(this.context,this.state);this.enterRule(e,4,t.RULE_statement);try{switch(this.state=772,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,3,this.context)){case 1:this.enterOuterAlt(e,1),this.state=765,this.ddlStatement();break;case 2:this.enterOuterAlt(e,2),this.state=766,this.dmlStatement();break;case 3:this.enterOuterAlt(e,3),this.state=767,this.transactionStatement();break;case 4:this.enterOuterAlt(e,4),this.state=768,this.replicationStatement();break;case 5:this.enterOuterAlt(e,5),this.state=769,this.preparedStatement();break;case 6:this.enterOuterAlt(e,6),this.state=770,this.administrationStatement();break;case 7:this.enterOuterAlt(e,7),this.state=771,this.utilityStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ddlStatement(){let e=new fC(this.context,this.state);this.enterRule(e,6,t.RULE_ddlStatement);try{switch(this.state=812,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,4,this.context)){case 1:this.enterOuterAlt(e,1),this.state=774,this.createDatabase();break;case 2:this.enterOuterAlt(e,2),this.state=775,this.createEvent();break;case 3:this.enterOuterAlt(e,3),this.state=776,this.createIndex();break;case 4:this.enterOuterAlt(e,4),this.state=777,this.createLogfileGroup();break;case 5:this.enterOuterAlt(e,5),this.state=778,this.createProcedure();break;case 6:this.enterOuterAlt(e,6),this.state=779,this.createFunction();break;case 7:this.enterOuterAlt(e,7),this.state=780,this.createServer();break;case 8:this.enterOuterAlt(e,8),this.state=781,this.createTable();break;case 9:this.enterOuterAlt(e,9),this.state=782,this.createTablespaceInnodb();break;case 10:this.enterOuterAlt(e,10),this.state=783,this.createTablespaceNdb();break;case 11:this.enterOuterAlt(e,11),this.state=784,this.createTrigger();break;case 12:this.enterOuterAlt(e,12),this.state=785,this.createView();break;case 13:this.enterOuterAlt(e,13),this.state=786,this.createRole();break;case 14:this.enterOuterAlt(e,14),this.state=787,this.alterDatabase();break;case 15:this.enterOuterAlt(e,15),this.state=788,this.alterEvent();break;case 16:this.enterOuterAlt(e,16),this.state=789,this.alterFunction();break;case 17:this.enterOuterAlt(e,17),this.state=790,this.alterInstance();break;case 18:this.enterOuterAlt(e,18),this.state=791,this.alterLogfileGroup();break;case 19:this.enterOuterAlt(e,19),this.state=792,this.alterProcedure();break;case 20:this.enterOuterAlt(e,20),this.state=793,this.alterServer();break;case 21:this.enterOuterAlt(e,21),this.state=794,this.alterTable();break;case 22:this.enterOuterAlt(e,22),this.state=795,this.alterTablespace();break;case 23:this.enterOuterAlt(e,23),this.state=796,this.alterView();break;case 24:this.enterOuterAlt(e,24),this.state=797,this.dropDatabase();break;case 25:this.enterOuterAlt(e,25),this.state=798,this.dropEvent();break;case 26:this.enterOuterAlt(e,26),this.state=799,this.dropIndex();break;case 27:this.enterOuterAlt(e,27),this.state=800,this.dropLogfileGroup();break;case 28:this.enterOuterAlt(e,28),this.state=801,this.dropProcedure();break;case 29:this.enterOuterAlt(e,29),this.state=802,this.dropFunction();break;case 30:this.enterOuterAlt(e,30),this.state=803,this.dropServer();break;case 31:this.enterOuterAlt(e,31),this.state=804,this.dropTable();break;case 32:this.enterOuterAlt(e,32),this.state=805,this.dropTablespace();break;case 33:this.enterOuterAlt(e,33),this.state=806,this.dropTrigger();break;case 34:this.enterOuterAlt(e,34),this.state=807,this.dropView();break;case 35:this.enterOuterAlt(e,35),this.state=808,this.dropRole();break;case 36:this.enterOuterAlt(e,36),this.state=809,this.setRole();break;case 37:this.enterOuterAlt(e,37),this.state=810,this.renameTable();break;case 38:this.enterOuterAlt(e,38),this.state=811,this.truncateTable()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dmlStatement(){let e=new YC(this.context,this.state);this.enterRule(e,8,t.RULE_dmlStatement);try{switch(this.state=827,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,5,this.context)){case 1:this.enterOuterAlt(e,1),this.state=814,this.selectStatement();break;case 2:this.enterOuterAlt(e,2),this.state=815,this.insertStatement();break;case 3:this.enterOuterAlt(e,3),this.state=816,this.updateStatement();break;case 4:this.enterOuterAlt(e,4),this.state=817,this.deleteStatement();break;case 5:this.enterOuterAlt(e,5),this.state=818,this.replaceStatement();break;case 6:this.enterOuterAlt(e,6),this.state=819,this.callStatement();break;case 7:this.enterOuterAlt(e,7),this.state=820,this.loadDataStatement();break;case 8:this.enterOuterAlt(e,8),this.state=821,this.loadXmlStatement();break;case 9:this.enterOuterAlt(e,9),this.state=822,this.doStatement();break;case 10:this.enterOuterAlt(e,10),this.state=823,this.handlerStatement();break;case 11:this.enterOuterAlt(e,11),this.state=824,this.valuesStatement();break;case 12:this.enterOuterAlt(e,12),this.state=825,this.withStatement();break;case 13:this.enterOuterAlt(e,13),this.state=826,this.tableStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}transactionStatement(){let e=new wC(this.context,this.state);this.enterRule(e,10,t.RULE_transactionStatement);try{switch(this.state=838,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,6,this.context)){case 1:this.enterOuterAlt(e,1),this.state=829,this.startTransaction();break;case 2:this.enterOuterAlt(e,2),this.state=830,this.beginWork();break;case 3:this.enterOuterAlt(e,3),this.state=831,this.commitWork();break;case 4:this.enterOuterAlt(e,4),this.state=832,this.rollbackWork();break;case 5:this.enterOuterAlt(e,5),this.state=833,this.savepointStatement();break;case 6:this.enterOuterAlt(e,6),this.state=834,this.rollbackStatement();break;case 7:this.enterOuterAlt(e,7),this.state=835,this.releaseStatement();break;case 8:this.enterOuterAlt(e,8),this.state=836,this.lockTables();break;case 9:this.enterOuterAlt(e,9),this.state=837,this.unlockTables()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}replicationStatement(){let e=new bC(this.context,this.state);this.enterRule(e,12,t.RULE_replicationStatement);try{switch(this.state=855,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,7,this.context)){case 1:this.enterOuterAlt(e,1),this.state=840,this.changeMaster();break;case 2:this.enterOuterAlt(e,2),this.state=841,this.changeReplicationFilter();break;case 3:this.enterOuterAlt(e,3),this.state=842,this.purgeBinaryLogs();break;case 4:this.enterOuterAlt(e,4),this.state=843,this.resetMaster();break;case 5:this.enterOuterAlt(e,5),this.state=844,this.resetSlave();break;case 6:this.enterOuterAlt(e,6),this.state=845,this.startSlave();break;case 7:this.enterOuterAlt(e,7),this.state=846,this.stopSlave();break;case 8:this.enterOuterAlt(e,8),this.state=847,this.startGroupReplication();break;case 9:this.enterOuterAlt(e,9),this.state=848,this.stopGroupReplication();break;case 10:this.enterOuterAlt(e,10),this.state=849,this.xaStartTransaction();break;case 11:this.enterOuterAlt(e,11),this.state=850,this.xaEndTransaction();break;case 12:this.enterOuterAlt(e,12),this.state=851,this.xaPrepareStatement();break;case 13:this.enterOuterAlt(e,13),this.state=852,this.xaCommitWork();break;case 14:this.enterOuterAlt(e,14),this.state=853,this.xaRollbackWork();break;case 15:this.enterOuterAlt(e,15),this.state=854,this.xaRecoverWork()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}preparedStatement(){let e=new WC(this.context,this.state);this.enterRule(e,14,t.RULE_preparedStatement);try{switch(this.state=860,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PREPARE:this.enterOuterAlt(e,1),this.state=857,this.prepareStatement();break;case t.EXECUTE:this.enterOuterAlt(e,2),this.state=858,this.executeStatement();break;case t.DROP:case t.DEALLOCATE:this.enterOuterAlt(e,3),this.state=859,this.deallocatePrepare();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}compoundStatement(){let e=new VC(this.context,this.state);this.enterRule(e,16,t.RULE_compoundStatement);try{switch(this.state=872,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,9,this.context)){case 1:this.enterOuterAlt(e,1),this.state=862,this.blockStatement();break;case 2:this.enterOuterAlt(e,2),this.state=863,this.caseStatement();break;case 3:this.enterOuterAlt(e,3),this.state=864,this.ifStatement();break;case 4:this.enterOuterAlt(e,4),this.state=865,this.leaveStatement();break;case 5:this.enterOuterAlt(e,5),this.state=866,this.loopStatement();break;case 6:this.enterOuterAlt(e,6),this.state=867,this.repeatStatement();break;case 7:this.enterOuterAlt(e,7),this.state=868,this.whileStatement();break;case 8:this.enterOuterAlt(e,8),this.state=869,this.iterateStatement();break;case 9:this.enterOuterAlt(e,9),this.state=870,this.returnStatement();break;case 10:this.enterOuterAlt(e,10),this.state=871,this.cursorStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}administrationStatement(){let e=new XC(this.context,this.state);this.enterRule(e,18,t.RULE_administrationStatement);try{switch(this.state=899,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,10,this.context)){case 1:this.enterOuterAlt(e,1),this.state=874,this.alterUser();break;case 2:this.enterOuterAlt(e,2),this.state=875,this.createUser();break;case 3:this.enterOuterAlt(e,3),this.state=876,this.dropUser();break;case 4:this.enterOuterAlt(e,4),this.state=877,this.grantStatement();break;case 5:this.enterOuterAlt(e,5),this.state=878,this.grantProxy();break;case 6:this.enterOuterAlt(e,6),this.state=879,this.renameUser();break;case 7:this.enterOuterAlt(e,7),this.state=880,this.revokeStatement();break;case 8:this.enterOuterAlt(e,8),this.state=881,this.revokeProxy();break;case 9:this.enterOuterAlt(e,9),this.state=882,this.analyzeTable();break;case 10:this.enterOuterAlt(e,10),this.state=883,this.checkTable();break;case 11:this.enterOuterAlt(e,11),this.state=884,this.checksumTable();break;case 12:this.enterOuterAlt(e,12),this.state=885,this.optimizeTable();break;case 13:this.enterOuterAlt(e,13),this.state=886,this.repairTable();break;case 14:this.enterOuterAlt(e,14),this.state=887,this.createUdfunction();break;case 15:this.enterOuterAlt(e,15),this.state=888,this.installPlugin();break;case 16:this.enterOuterAlt(e,16),this.state=889,this.uninstallPlugin();break;case 17:this.enterOuterAlt(e,17),this.state=890,this.setStatement();break;case 18:this.enterOuterAlt(e,18),this.state=891,this.showStatement();break;case 19:this.enterOuterAlt(e,19),this.state=892,this.binlogStatement();break;case 20:this.enterOuterAlt(e,20),this.state=893,this.cacheIndexStatement();break;case 21:this.enterOuterAlt(e,21),this.state=894,this.flushStatement();break;case 22:this.enterOuterAlt(e,22),this.state=895,this.killStatement();break;case 23:this.enterOuterAlt(e,23),this.state=896,this.loadIndexIntoCache();break;case 24:this.enterOuterAlt(e,24),this.state=897,this.resetStatement();break;case 25:this.enterOuterAlt(e,25),this.state=898,this.shutdownStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}utilityStatement(){let e=new KC(this.context,this.state);this.enterRule(e,20,t.RULE_utilityStatement);try{switch(this.state=908,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,11,this.context)){case 1:this.enterOuterAlt(e,1),this.state=901,this.simpleDescribeStatement();break;case 2:this.enterOuterAlt(e,2),this.state=902,this.fullDescribeStatement();break;case 3:this.enterOuterAlt(e,3),this.state=903,this.helpStatement();break;case 4:this.enterOuterAlt(e,4),this.state=904,this.useStatement();break;case 5:this.enterOuterAlt(e,5),this.state=905,this.signalStatement();break;case 6:this.enterOuterAlt(e,6),this.state=906,this.resignalStatement();break;case 7:this.enterOuterAlt(e,7),this.state=907,this.diagnosticsStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createDatabase(){let e,s=new QC(this.context,this.state);this.enterRule(s,22,t.RULE_createDatabase);try{if(this.enterOuterAlt(s,1),1===(this.state=910,this.match(t.CREATE),this.state=911,s._dbFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),39===e||150===e?(this.errorHandler.reportMatch(this),this.consume()):s._dbFormat=this.errorHandler.recoverInline(this),this.state=913,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,12,this.context)))this.state=912,this.ifNotExists();for(this.state=915,this.uid(),this.state=919,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(e-25&-32)&&1<<e-25&131077||134===e||222===e||405===e||841===e;)this.state=916,this.createDatabaseOption(),this.state=921,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createEvent(){let e,s=new JC(this.context,this.state);this.enterRule(s,24,t.RULE_createEvent);try{if(this.enterOuterAlt(s,1),1===(this.state=922,this.match(t.CREATE),this.state=924,this.errorHandler.sync(this),e=this.tokenStream.LA(1),392===e&&(this.state=923,this.ownerStatement()),this.state=926,this.match(t.EVENT),this.state=928,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,15,this.context)))this.state=927,this.ifNotExists();this.state=930,this.fullId(),this.state=931,this.match(t.ON),this.state=932,this.match(t.SCHEDULE),this.state=933,this.scheduleExpression(),this.state=940,this.errorHandler.sync(this),e=this.tokenStream.LA(1),118===e&&(this.state=934,this.match(t.ON),this.state=935,this.match(t.COMPLETION),this.state=937,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=936,this.match(t.NOT)),this.state=939,this.match(t.PRESERVE)),this.state=943,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(396===e||403===e)&&(this.state=942,this.enableType()),this.state=947,this.errorHandler.sync(this),e=this.tokenStream.LA(1),368===e&&(this.state=945,this.match(t.COMMENT),this.state=946,this.match(t.STRING_LITERAL)),this.state=949,this.match(t.DO),this.state=950,this.routineBody()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createIndex(){let e,s=new ZC(this.context,this.state);this.enterRule(s,26,t.RULE_createIndex);try{for(this.enterOuterAlt(s,1),this.state=952,this.match(t.CREATE),this.state=954,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(531===e||537===e)&&(this.state=953,s._intimeAction=this.tokenStream.LT(1),e=this.tokenStream.LA(1),531===e||537===e?(this.errorHandler.reportMatch(this),this.consume()):s._intimeAction=this.errorHandler.recoverInline(this)),this.state=957,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(69===e||159===e||181===e)&&(this.state=956,s._indexCategory=this.tokenStream.LT(1),e=this.tokenStream.LA(1),69===e||159===e||181===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexCategory=this.errorHandler.recoverInline(this)),this.state=959,this.match(t.INDEX),this.state=960,this.uid(),this.state=962,this.errorHandler.sync(this),e=this.tokenStream.LA(1),187===e&&(this.state=961,this.indexType()),this.state=964,this.match(t.ON),this.state=965,this.tableName(),this.state=966,this.indexColumnNames(),this.state=970,this.errorHandler.sync(this),e=this.tokenStream.LA(1);187===e||192===e||368===e||459===e||467===e||673===e||875===e||1e3===e;)this.state=967,this.indexOption(),this.state=972,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=985,this.errorHandler.sync(this),e=this.tokenStream.LA(1);103===e||336===e;){switch(this.state=983,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALGORITHM:this.state=973,this.match(t.ALGORITHM),this.state=975,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=974,this.match(t.EQUAL_SYMBOL)),this.state=977,s._algType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||384===e||454===e?(this.errorHandler.reportMatch(this),this.consume()):s._algType=this.errorHandler.recoverInline(this);break;case t.LOCK:this.state=978,this.match(t.LOCK),this.state=980,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=979,this.match(t.EQUAL_SYMBOL)),this.state=982,s._lockType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||419===e||529===e||611===e?(this.errorHandler.reportMatch(this),this.consume()):s._lockType=this.errorHandler.recoverInline(this);break;default:throw new Ei(this)}this.state=987,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createLogfileGroup(){let e,s=new qC(this.context,this.state);this.enterRule(s,28,t.RULE_createLogfileGroup);try{this.enterOuterAlt(s,1),this.state=988,this.match(t.CREATE),this.state=989,this.match(t.LOGFILE),this.state=990,this.match(t.GROUP),this.state=991,this.uid(),this.state=992,this.match(t.ADD),this.state=993,this.match(t.UNDOFILE),this.state=994,s._undoFile=this.match(t.STRING_LITERAL),this.state=1e3,this.errorHandler.sync(this),e=this.tokenStream.LA(1),453===e&&(this.state=995,this.match(t.INITIAL_SIZE),this.state=997,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=996,this.match(t.EQUAL_SYMBOL)),this.state=999,s._initSize=this.fileSizeLiteral()),this.state=1007,this.errorHandler.sync(this),e=this.tokenStream.LA(1),660===e&&(this.state=1002,this.match(t.UNDO_BUFFER_SIZE),this.state=1004,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1003,this.match(t.EQUAL_SYMBOL)),this.state=1006,s._undoSize=this.fileSizeLiteral()),this.state=1014,this.errorHandler.sync(this),e=this.tokenStream.LA(1),572===e&&(this.state=1009,this.match(t.REDO_BUFFER_SIZE),this.state=1011,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1010,this.match(t.EQUAL_SYMBOL)),this.state=1013,s._redoSize=this.fileSizeLiteral()),this.state=1021,this.errorHandler.sync(this),e=this.tokenStream.LA(1),528===e&&(this.state=1016,this.match(t.NODEGROUP),this.state=1018,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1017,this.match(t.EQUAL_SYMBOL)),this.state=1020,this.uid()),this.state=1024,this.errorHandler.sync(this),e=this.tokenStream.LA(1),674===e&&(this.state=1023,this.match(t.WAIT)),this.state=1031,this.errorHandler.sync(this),e=this.tokenStream.LA(1),368===e&&(this.state=1026,this.match(t.COMMENT),this.state=1028,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1027,this.match(t.EQUAL_SYMBOL)),this.state=1030,s._comment=this.match(t.STRING_LITERAL)),this.state=1033,this.match(t.ENGINE),this.state=1035,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1034,this.match(t.EQUAL_SYMBOL)),this.state=1037,this.engineName()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createProcedure(){let e,s=new jC(this.context,this.state);this.enterRule(s,30,t.RULE_createProcedure);try{let a;for(this.enterOuterAlt(s,1),this.state=1039,this.match(t.CREATE),this.state=1041,this.errorHandler.sync(this),e=this.tokenStream.LA(1),392===e&&(this.state=1040,this.ownerStatement()),this.state=1043,this.match(t.PROCEDURE),this.state=1044,this.fullId(),this.state=1045,this.match(t.LR_BRACKET),this.state=1047,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18880721||!(e-117&-32)&&1<<e-117&2172658065||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=1046,this.procedureParameter()),this.state=1053,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=1049,this.match(t.COMMA),this.state=1050,this.procedureParameter(),this.state=1055,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=1056,this.match(t.RR_BRACKET),this.state=1060,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,43,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=1057,this.routineOption()),this.state=1062,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,43,this.context);this.state=1063,this.routineBody()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createFunction(){let e,s=new zC(this.context,this.state);this.enterRule(s,32,t.RULE_createFunction);try{let a;if(this.enterOuterAlt(s,1),1===(this.state=1065,this.match(t.CREATE),this.state=1067,this.errorHandler.sync(this),e=this.tokenStream.LA(1),392===e&&(this.state=1066,this.ownerStatement()),this.state=1070,this.errorHandler.sync(this),e=this.tokenStream.LA(1),335===e&&(this.state=1069,this.match(t.AGGREGATE)),this.state=1072,this.match(t.FUNCTION),this.state=1074,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,46,this.context)))this.state=1073,this.ifNotExists();for(this.state=1076,this.fullId(),this.state=1077,this.match(t.LR_BRACKET),this.state=1079,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=1078,this.functionParameter()),this.state=1085,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=1081,this.match(t.COMMA),this.state=1082,this.functionParameter(),this.state=1087,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=1088,this.match(t.RR_BRACKET),this.state=1089,this.match(t.RETURNS),this.state=1090,this.dataType(),this.state=1094,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,49,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=1091,this.routineOption()),this.state=1096,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,49,this.context);switch(this.state=1099,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALTER:case t.ANALYZE:case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CALL:case t.CHANGE:case t.CHECK:case t.CONDITION:case t.CREATE:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DIAGNOSTICS:case t.DROP:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.EXPLAIN:case t.GET:case t.GRANT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.KILL:case t.LATERAL:case t.LEFT:case t.LOAD:case t.LOCK:case t.NUMBER:case t.OPTIMIZE:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.PURGE:case t.RELEASE:case t.RENAME:case t.REPEAT:case t.REPLACE:case t.RESIGNAL:case t.REVOKE:case t.RIGHT:case t.SCHEMA:case t.SELECT:case t.SET:case t.SHOW:case t.SIGNAL:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.TABLE:case t.UNLOCK:case t.UPDATE:case t.USE:case t.VALUES:case t.WITH:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.LR_BRACKET:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=1097,this.routineBody();break;case t.RETURN:this.state=1098,this.returnStatement();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createRole(){let e=new $C(this.context,this.state);this.enterRule(e,34,t.RULE_createRole);try{if(this.enterOuterAlt(e,1),1===(this.state=1101,this.match(t.CREATE),this.state=1102,this.match(t.ROLE),this.state=1104,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,51,this.context)))this.state=1103,this.ifNotExists();this.state=1106,this.newRoleNameList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createServer(){let e,s=new t_(this.context,this.state);this.enterRule(s,36,t.RULE_createServer);try{for(this.enterOuterAlt(s,1),this.state=1108,this.match(t.CREATE),this.state=1109,this.match(t.SERVER),this.state=1110,this.uid(),this.state=1111,this.match(t.FOREIGN),this.state=1112,this.match(t.DATA),this.state=1113,this.match(t.WRAPPER),this.state=1114,s._wrapperName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),514===e||1148===e?(this.errorHandler.reportMatch(this),this.consume()):s._wrapperName=this.errorHandler.recoverInline(this),this.state=1115,this.match(t.OPTIONS),this.state=1116,this.match(t.LR_BRACKET),this.state=1117,this.serverOption(),this.state=1122,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=1118,this.match(t.COMMA),this.state=1119,this.serverOption(),this.state=1124,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1125,this.match(t.RR_BRACKET)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createTable(){let e,s=new e_(this.context,this.state);this.enterRule(s,38,t.RULE_createTable);try{switch(this.state=1205,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,71,this.context)){case 1:if(s=new s_(s),this.enterOuterAlt(s,1),1===(this.state=1127,this.match(t.CREATE),this.state=1129,this.errorHandler.sync(this),e=this.tokenStream.LA(1),649===e&&(this.state=1128,this.match(t.TEMPORARY)),this.state=1131,this.match(t.TABLE),this.state=1133,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,54,this.context)))this.state=1132,this.ifNotExists();switch(this.state=1135,this.tableName(),this.state=1143,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LIKE:this.state=1136,this.match(t.LIKE),this.state=1137,this.tableName();break;case t.LR_BRACKET:this.state=1138,this.match(t.LR_BRACKET),this.state=1139,this.match(t.LIKE),this.state=1140,s._parenthesisTable=this.tableName(),this.state=1141,this.match(t.RR_BRACKET);break;default:throw new Ei(this)}break;case 2:if(s=new r_(s),this.enterOuterAlt(s,2),1===(this.state=1145,this.match(t.CREATE),this.state=1147,this.errorHandler.sync(this),e=this.tokenStream.LA(1),649===e&&(this.state=1146,this.match(t.TEMPORARY)),this.state=1149,this.match(t.TABLE),this.state=1151,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,57,this.context)))this.state=1150,this.ifNotExists();if(1===(this.state=1153,this.tableName(),this.state=1155,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,58,this.context)))this.state=1154,this.createDefinitions();if(this.state=1167,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-25&-32)&&1<<e-25&131077||81===e||180===e||222===e||!(e-341&-32)&&1<<e-341&134316039||!(e-373&-32)&&1<<e-373&1081353||!(e-405&-32)&&1<<e-405&19||455===e||467===e||500===e||510===e||!(e-543&-32)&&1<<e-543&269||!(e-602&-32)&&1<<e-602&3892314113||!(e-636&-32)&&1<<e-636&268289||841===e||875===e||1e3===e||1148===e)for(this.state=1157,this.tableOption(),this.state=1164,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(e-25&-32)&&1<<e-25&131077||81===e||180===e||222===e||!(e-341&-32)&&1<<e-341&134316039||!(e-373&-32)&&1<<e-373&1081353||!(e-405&-32)&&1<<e-405&19||455===e||467===e||500===e||510===e||!(e-543&-32)&&1<<e-543&269||!(e-602&-32)&&1<<e-602&3892314113||!(e-636&-32)&&1<<e-636&268289||841===e||875===e||1e3===e||1135===e||1148===e;)this.state=1159,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1135===e&&(this.state=1158,this.match(t.COMMA)),this.state=1161,this.tableOption(),this.state=1166,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1170,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=1169,this.partitionDefinitions()),this.state=1173,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(78===e||141===e)&&(this.state=1172,s._keyViolate=this.tokenStream.LT(1),e=this.tokenStream.LA(1),78===e||141===e?(this.errorHandler.reportMatch(this),this.consume()):s._keyViolate=this.errorHandler.recoverInline(this)),this.state=1176,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=1175,this.match(t.AS)),this.state=1178,this.selectStatement();break;case 3:if(s=new a_(s),this.enterOuterAlt(s,3),1===(this.state=1180,this.match(t.CREATE),this.state=1182,this.errorHandler.sync(this),e=this.tokenStream.LA(1),649===e&&(this.state=1181,this.match(t.TEMPORARY)),this.state=1184,this.match(t.TABLE),this.state=1186,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,66,this.context)))this.state=1185,this.ifNotExists();if(this.state=1188,this.tableName(),this.state=1189,this.createDefinitions(),this.state=1200,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-25&-32)&&1<<e-25&131077||81===e||180===e||222===e||!(e-341&-32)&&1<<e-341&134316039||!(e-373&-32)&&1<<e-373&1081353||!(e-405&-32)&&1<<e-405&19||455===e||467===e||500===e||510===e||!(e-543&-32)&&1<<e-543&269||!(e-602&-32)&&1<<e-602&3892314113||!(e-636&-32)&&1<<e-636&268289||841===e||875===e||1e3===e||1148===e)for(this.state=1190,this.tableOption(),this.state=1197,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(e-25&-32)&&1<<e-25&131077||81===e||180===e||222===e||!(e-341&-32)&&1<<e-341&134316039||!(e-373&-32)&&1<<e-373&1081353||!(e-405&-32)&&1<<e-405&19||455===e||467===e||500===e||510===e||!(e-543&-32)&&1<<e-543&269||!(e-602&-32)&&1<<e-602&3892314113||!(e-636&-32)&&1<<e-636&268289||841===e||875===e||1e3===e||1135===e||1148===e;)this.state=1192,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1135===e&&(this.state=1191,this.match(t.COMMA)),this.state=1194,this.tableOption(),this.state=1199,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1203,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=1202,this.partitionDefinitions())}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createTablespaceInnodb(){let e,s=new i_(this.context,this.state);this.enterRule(s,40,t.RULE_createTablespaceInnodb);try{this.enterOuterAlt(s,1),this.state=1207,this.match(t.CREATE),this.state=1208,this.match(t.TABLESPACE),this.state=1209,this.uid(),this.state=1210,this.match(t.ADD),this.state=1211,this.match(t.DATAFILE),this.state=1212,s._datafile=this.match(t.STRING_LITERAL),this.state=1216,this.errorHandler.sync(this),e=this.tokenStream.LA(1),428===e&&(this.state=1213,this.match(t.FILE_BLOCK_SIZE),this.state=1214,this.match(t.EQUAL_SYMBOL),this.state=1215,s._fileBlockSize=this.fileSizeLiteral()),this.state=1223,this.errorHandler.sync(this),e=this.tokenStream.LA(1),409===e&&(this.state=1218,this.match(t.ENGINE),this.state=1220,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1219,this.match(t.EQUAL_SYMBOL)),this.state=1222,this.engineName())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createTablespaceNdb(){let e,s=new c_(this.context,this.state);this.enterRule(s,42,t.RULE_createTablespaceNdb);try{this.enterOuterAlt(s,1),this.state=1225,this.match(t.CREATE),this.state=1226,this.match(t.TABLESPACE),this.state=1227,this.uid(),this.state=1228,this.match(t.ADD),this.state=1229,this.match(t.DATAFILE),this.state=1230,s._datafile=this.match(t.STRING_LITERAL),this.state=1231,this.match(t.USE),this.state=1232,this.match(t.LOGFILE),this.state=1233,this.match(t.GROUP),this.state=1234,this.uid(),this.state=1240,this.errorHandler.sync(this),e=this.tokenStream.LA(1),423===e&&(this.state=1235,this.match(t.EXTENT_SIZE),this.state=1237,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1236,this.match(t.EQUAL_SYMBOL)),this.state=1239,s._extentSize=this.fileSizeLiteral()),this.state=1247,this.errorHandler.sync(this),e=this.tokenStream.LA(1),453===e&&(this.state=1242,this.match(t.INITIAL_SIZE),this.state=1244,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1243,this.match(t.EQUAL_SYMBOL)),this.state=1246,s._initialSize=this.fileSizeLiteral()),this.state=1254,this.errorHandler.sync(this),e=this.tokenStream.LA(1),341===e&&(this.state=1249,this.match(t.AUTOEXTEND_SIZE),this.state=1251,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1250,this.match(t.EQUAL_SYMBOL)),this.state=1253,s._autoextendSize=this.fileSizeLiteral()),this.state=1261,this.errorHandler.sync(this),e=this.tokenStream.LA(1),501===e&&(this.state=1256,this.match(t.MAX_SIZE),this.state=1258,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1257,this.match(t.EQUAL_SYMBOL)),this.state=1260,s._maxSize=this.fileSizeLiteral()),this.state=1268,this.errorHandler.sync(this),e=this.tokenStream.LA(1),528===e&&(this.state=1263,this.match(t.NODEGROUP),this.state=1265,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1264,this.match(t.EQUAL_SYMBOL)),this.state=1267,this.uid()),this.state=1271,this.errorHandler.sync(this),e=this.tokenStream.LA(1),674===e&&(this.state=1270,this.match(t.WAIT)),this.state=1278,this.errorHandler.sync(this),e=this.tokenStream.LA(1),368===e&&(this.state=1273,this.match(t.COMMENT),this.state=1275,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1274,this.match(t.EQUAL_SYMBOL)),this.state=1277,s._comment=this.match(t.STRING_LITERAL)),this.state=1280,this.match(t.ENGINE),this.state=1282,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1281,this.match(t.EQUAL_SYMBOL)),this.state=1284,this.engineName()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createTrigger(){let e,s=new n_(this.context,this.state);this.enterRule(s,44,t.RULE_createTrigger);try{if(this.enterOuterAlt(s,1),1===(this.state=1286,this.match(t.CREATE),this.state=1288,this.errorHandler.sync(this),e=this.tokenStream.LA(1),392===e&&(this.state=1287,this.ownerStatement()),this.state=1290,this.match(t.TRIGGER),this.state=1292,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,90,this.context)))this.state=1291,this.ifNotExists();if(1===(this.state=1294,s._thisTrigger=this.fullId(),this.state=1295,s._triggerTime=this.tokenStream.LT(1),e=this.tokenStream.LA(1),15===e||334===e?(this.errorHandler.reportMatch(this),this.consume()):s._triggerTime=this.errorHandler.recoverInline(this),this.state=1296,s._triggerEvent=this.tokenStream.LT(1),e=this.tokenStream.LA(1),44===e||85===e||184===e?(this.errorHandler.reportMatch(this),this.consume()):s._triggerEvent=this.errorHandler.recoverInline(this),this.state=1297,this.match(t.ON),this.state=1298,this.tableName(),this.state=1299,this.match(t.FOR),this.state=1300,this.match(t.EACH),this.state=1301,this.match(t.ROW),this.state=1304,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,91,this.context)))this.state=1302,s._triggerPlace=this.tokenStream.LT(1),e=this.tokenStream.LA(1),434===e||558===e?(this.errorHandler.reportMatch(this),this.consume()):s._triggerPlace=this.errorHandler.recoverInline(this),this.state=1303,s._otherTrigger=this.fullId();this.state=1306,this.routineBody()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}withClause(){let e=new h_(this.context,this.state);this.enterRule(e,46,t.RULE_withClause);try{if(this.enterOuterAlt(e,1),1===(this.state=1308,this.match(t.WITH),this.state=1310,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,92,this.context)))this.state=1309,this.match(t.RECURSIVE);this.state=1312,this.commonTableExpressions()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}commonTableExpressions(){let e,s=new E_(this.context,this.state);this.enterRule(s,48,t.RULE_commonTableExpressions);try{if(this.enterOuterAlt(s,1),this.state=1314,this.cteName(),this.state=1326,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e){for(this.state=1315,this.match(t.LR_BRACKET),this.state=1316,this.cteColumnName(),this.state=1321,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=1317,this.match(t.COMMA),this.state=1318,this.cteColumnName(),this.state=1323,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1324,this.match(t.RR_BRACKET)}if(1===(this.state=1328,this.match(t.AS),this.state=1329,this.match(t.LR_BRACKET),this.state=1330,this.dmlStatement(),this.state=1331,this.match(t.RR_BRACKET),this.state=1334,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,95,this.context)))this.state=1332,this.match(t.COMMA),this.state=1333,this.commonTableExpressions()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}cteName(){let e=new T_(this.context,this.state);this.enterRule(e,50,t.RULE_cteName);try{this.enterOuterAlt(e,1),this.state=1336,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}cteColumnName(){let e=new o_(this.context,this.state);this.enterRule(e,52,t.RULE_cteColumnName);try{this.enterOuterAlt(e,1),this.state=1338,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createView(){let e,s=new R_(this.context,this.state);this.enterRule(s,54,t.RULE_createView);try{switch(this.enterOuterAlt(s,1),this.state=1340,this.match(t.CREATE),this.state=1342,this.errorHandler.sync(this),e=this.tokenStream.LA(1),123===e&&(this.state=1341,this.orReplace()),this.state=1347,this.errorHandler.sync(this),e=this.tokenStream.LA(1),336===e&&(this.state=1344,this.match(t.ALGORITHM),this.state=1345,this.match(t.EQUAL_SYMBOL),this.state=1346,s._algType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),506===e||650===e||658===e?(this.errorHandler.reportMatch(this),this.consume()):s._algType=this.errorHandler.recoverInline(this)),this.state=1350,this.errorHandler.sync(this),e=this.tokenStream.LA(1),392===e&&(this.state=1349,this.ownerStatement()),this.state=1355,this.errorHandler.sync(this),e=this.tokenStream.LA(1),160===e&&(this.state=1352,this.match(t.SQL),this.state=1353,this.match(t.SECURITY),this.state=1354,s._secContext=this.tokenStream.LT(1),e=this.tokenStream.LA(1),392===e||460===e?(this.errorHandler.reportMatch(this),this.consume()):s._secContext=this.errorHandler.recoverInline(this)),this.state=1357,this.match(t.VIEW),this.state=1358,this.fullId(),this.state=1363,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e&&(this.state=1359,this.match(t.LR_BRACKET),this.state=1360,this.uidList(),this.state=1361,this.match(t.RR_BRACKET)),this.state=1365,this.match(t.AS),this.state=1385,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,105,this.context)){case 1:this.state=1366,this.match(t.LR_BRACKET),this.state=1368,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e&&(this.state=1367,this.withClause()),this.state=1370,this.selectStatement(),this.state=1371,this.match(t.RR_BRACKET);break;case 2:this.state=1374,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e&&(this.state=1373,this.withClause()),this.state=1376,this.selectStatement(),this.state=1383,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e&&(this.state=1377,this.match(t.WITH),this.state=1379,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(352===e||474===e)&&(this.state=1378,s._checkOption=this.tokenStream.LT(1),e=this.tokenStream.LA(1),352===e||474===e?(this.errorHandler.reportMatch(this),this.consume()):s._checkOption=this.errorHandler.recoverInline(this)),this.state=1381,this.match(t.CHECK),this.state=1382,this.match(t.OPTION))}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createDatabaseOption(){let e,s=new A_(this.context,this.state);this.enterRule(s,56,t.RULE_createDatabaseOption);try{switch(this.state=1420,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,114,this.context)){case 1:switch(this.enterOuterAlt(s,1),this.state=1388,this.errorHandler.sync(this),e=this.tokenStream.LA(1),42===e&&(this.state=1387,this.match(t.DEFAULT)),this.state=1390,this.charSet(),this.state=1392,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1391,this.match(t.EQUAL_SYMBOL)),this.state=1396,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.BINARY:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:this.state=1394,this.charsetName();break;case t.DEFAULT:this.state=1395,this.match(t.DEFAULT);break;default:throw new Ei(this)}break;case 2:this.enterOuterAlt(s,2),this.state=1399,this.errorHandler.sync(this),e=this.tokenStream.LA(1),42===e&&(this.state=1398,this.match(t.DEFAULT)),this.state=1401,this.match(t.COLLATE),this.state=1403,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1402,this.match(t.EQUAL_SYMBOL)),this.state=1405,this.collationName();break;case 3:this.enterOuterAlt(s,3),this.state=1407,this.errorHandler.sync(this),e=this.tokenStream.LA(1),42===e&&(this.state=1406,this.match(t.DEFAULT)),this.state=1409,this.match(t.ENCRYPTION),this.state=1411,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1410,this.match(t.EQUAL_SYMBOL)),this.state=1413,this.match(t.STRING_LITERAL);break;case 4:this.enterOuterAlt(s,4),this.state=1414,this.match(t.READ),this.state=1415,this.match(t.ONLY),this.state=1417,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1416,this.match(t.EQUAL_SYMBOL)),this.state=1419,e=this.tokenStream.LA(1),42===e||1138===e||1139===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}charSet(){let e=new S_(this.context,this.state);this.enterRule(e,58,t.RULE_charSet);try{switch(this.state=1427,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CHARACTER:this.enterOuterAlt(e,1),this.state=1422,this.match(t.CHARACTER),this.state=1423,this.match(t.SET);break;case t.CHARSET:this.enterOuterAlt(e,2),this.state=1424,this.match(t.CHARSET);break;case t.CHAR:this.enterOuterAlt(e,3),this.state=1425,this.match(t.CHAR),this.state=1426,this.match(t.SET);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}currentUserExpression(){let e=new l_(this.context,this.state);this.enterRule(e,60,t.RULE_currentUserExpression);try{if(1===(this.enterOuterAlt(e,1),this.state=1429,this.match(t.CURRENT_USER),this.state=1432,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,116,this.context)))this.state=1430,this.match(t.LR_BRACKET),this.state=1431,this.match(t.RR_BRACKET)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ownerStatement(){let e=new O_(this.context,this.state);this.enterRule(e,62,t.RULE_ownerStatement);try{switch(this.enterOuterAlt(e,1),this.state=1434,this.match(t.DEFINER),this.state=1435,this.match(t.EQUAL_SYMBOL),this.state=1438,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,117,this.context)){case 1:this.state=1436,this.userName();break;case 2:this.state=1437,this.currentUserExpression()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}scheduleExpression(){let e,s=new I_(this.context,this.state);this.enterRule(s,64,t.RULE_scheduleExpression);try{switch(this.state=1474,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AT:for(s=new u_(s),this.enterOuterAlt(s,1),this.state=1440,this.match(t.AT),this.state=1441,this.timestampValue(),this.state=1445,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1120===e;)this.state=1442,this.intervalExpr(),this.state=1447,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case t.EVERY:switch(s=new N_(s),this.enterOuterAlt(s,2),this.state=1448,this.match(t.EVERY),this.state=1451,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,119,this.context)){case 1:this.state=1449,this.decimalLiteral();break;case 2:this.state=1450,this.expression(0)}if(this.state=1453,this.intervalType(),this.state=1462,this.errorHandler.sync(this),e=this.tokenStream.LA(1),630===e)for(this.state=1454,this.match(t.STARTS),this.state=1455,s._startTimestamp=this.timestampValue(),this.state=1459,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1120===e;)this.state=1456,s._intervalExpr=this.intervalExpr(),s._startIntervals.push(s._intervalExpr),this.state=1461,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(this.state=1472,this.errorHandler.sync(this),e=this.tokenStream.LA(1),408===e)for(this.state=1464,this.match(t.ENDS),this.state=1465,s._endTimestamp=this.timestampValue(),this.state=1469,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1120===e;)this.state=1466,s._intervalExpr=this.intervalExpr(),s._endIntervals.push(s._intervalExpr),this.state=1471,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}timestampValue(){let e=new L_(this.context,this.state);this.enterRule(e,66,t.RULE_timestampValue);try{switch(this.state=1480,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,125,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1476,this.match(t.CURRENT_TIMESTAMP);break;case 2:this.enterOuterAlt(e,2),this.state=1477,this.stringLiteral();break;case 3:this.enterOuterAlt(e,3),this.state=1478,this.decimalLiteral();break;case 4:this.enterOuterAlt(e,4),this.state=1479,this.expression(0)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}intervalExpr(){let e=new C_(this.context,this.state);this.enterRule(e,68,t.RULE_intervalExpr);try{switch(this.enterOuterAlt(e,1),this.state=1482,this.match(t.PLUS),this.state=1483,this.match(t.INTERVAL),this.state=1486,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,126,this.context)){case 1:this.state=1484,this.decimalLiteral();break;case 2:this.state=1485,this.expression(0)}this.state=1488,this.intervalType()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}intervalType(){let e=new __(this.context,this.state);this.enterRule(e,70,t.RULE_intervalType);try{switch(this.state=1503,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:this.enterOuterAlt(e,1),this.state=1490,this.intervalTypeBase();break;case t.YEAR:this.enterOuterAlt(e,2),this.state=1491,this.match(t.YEAR);break;case t.YEAR_MONTH:this.enterOuterAlt(e,3),this.state=1492,this.match(t.YEAR_MONTH);break;case t.DAY_HOUR:this.enterOuterAlt(e,4),this.state=1493,this.match(t.DAY_HOUR);break;case t.DAY_MINUTE:this.enterOuterAlt(e,5),this.state=1494,this.match(t.DAY_MINUTE);break;case t.DAY_SECOND:this.enterOuterAlt(e,6),this.state=1495,this.match(t.DAY_SECOND);break;case t.HOUR_MINUTE:this.enterOuterAlt(e,7),this.state=1496,this.match(t.HOUR_MINUTE);break;case t.HOUR_SECOND:this.enterOuterAlt(e,8),this.state=1497,this.match(t.HOUR_SECOND);break;case t.MINUTE_SECOND:this.enterOuterAlt(e,9),this.state=1498,this.match(t.MINUTE_SECOND);break;case t.SECOND_MICROSECOND:this.enterOuterAlt(e,10),this.state=1499,this.match(t.SECOND_MICROSECOND);break;case t.MINUTE_MICROSECOND:this.enterOuterAlt(e,11),this.state=1500,this.match(t.MINUTE_MICROSECOND);break;case t.HOUR_MICROSECOND:this.enterOuterAlt(e,12),this.state=1501,this.match(t.HOUR_MICROSECOND);break;case t.DAY_MICROSECOND:this.enterOuterAlt(e,13),this.state=1502,this.match(t.DAY_MICROSECOND);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}enableType(){let e=new P_(this.context,this.state);this.enterRule(e,72,t.RULE_enableType);try{switch(this.state=1510,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,128,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1505,this.match(t.ENABLE);break;case 2:this.enterOuterAlt(e,2),this.state=1506,this.match(t.DISABLE);break;case 3:this.enterOuterAlt(e,3),this.state=1507,this.match(t.DISABLE),this.state=1508,this.match(t.ON),this.state=1509,this.match(t.SLAVE)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}indexType(){let e,s=new M_(this.context,this.state);this.enterRule(s,74,t.RULE_indexType);try{this.enterOuterAlt(s,1),this.state=1512,this.match(t.USING),this.state=1513,e=this.tokenStream.LA(1),350===e||443===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}indexOption(){let e,s=new d_(this.context,this.state);this.enterRule(s,76,t.RULE_indexOption);try{switch(this.state=1537,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.KEY_BLOCK_SIZE:this.enterOuterAlt(s,1),this.state=1515,this.match(t.KEY_BLOCK_SIZE),this.state=1517,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1516,this.match(t.EQUAL_SYMBOL)),this.state=1519,this.fileSizeLiteral();break;case t.USING:this.enterOuterAlt(s,2),this.state=1520,this.indexType();break;case t.WITH:this.enterOuterAlt(s,3),this.state=1521,this.match(t.WITH),this.state=1522,this.match(t.PARSER),this.state=1523,this.uid();break;case t.COMMENT:this.enterOuterAlt(s,4),this.state=1524,this.match(t.COMMENT),this.state=1525,this.match(t.STRING_LITERAL);break;case t.INVISIBLE:case t.VISIBLE:this.enterOuterAlt(s,5),this.state=1526,e=this.tokenStream.LA(1),459===e||673===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.ENGINE_ATTRIBUTE:this.enterOuterAlt(s,6),this.state=1527,this.match(t.ENGINE_ATTRIBUTE),this.state=1529,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1528,this.match(t.EQUAL_SYMBOL)),this.state=1531,this.match(t.STRING_LITERAL);break;case t.SECONDARY_ENGINE_ATTRIBUTE:this.enterOuterAlt(s,7),this.state=1532,this.match(t.SECONDARY_ENGINE_ATTRIBUTE),this.state=1534,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1533,this.match(t.EQUAL_SYMBOL)),this.state=1536,this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}procedureParameter(){let e,s=new U_(this.context,this.state);this.enterRule(s,78,t.RULE_procedureParameter);try{this.enterOuterAlt(s,1),this.state=1540,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(80===e||84===e||125===e)&&(this.state=1539,s._direction=this.tokenStream.LT(1),e=this.tokenStream.LA(1),80===e||84===e||125===e?(this.errorHandler.reportMatch(this),this.consume()):s._direction=this.errorHandler.recoverInline(this)),this.state=1542,this.uid(),this.state=1543,this.dataType()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}functionParameter(){let e=new m_(this.context,this.state);this.enterRule(e,80,t.RULE_functionParameter);try{this.enterOuterAlt(e,1),this.state=1545,this.uid(),this.state=1546,this.dataType()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}routineOption(){let e,s=new D_(this.context,this.state);this.enterRule(s,82,t.RULE_routineOption);try{switch(this.state=1571,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.COMMENT:s=new x_(s),this.enterOuterAlt(s,1),this.state=1548,this.match(t.COMMENT),this.state=1549,this.match(t.STRING_LITERAL);break;case t.LANGUAGE:s=new g_(s),this.enterOuterAlt(s,2),this.state=1550,this.match(t.LANGUAGE),this.state=1551,this.match(t.SQL);break;case t.DETERMINISTIC:case t.NOT:s=new p_(s),this.enterOuterAlt(s,3),this.state=1553,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=1552,this.match(t.NOT)),this.state=1555,this.match(t.DETERMINISTIC);break;case t.MODIFIES:case t.READS:case t.CONTAINS:case t.NO:switch(s=new H_(s),this.enterOuterAlt(s,4),this.state=1566,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CONTAINS:this.state=1556,this.match(t.CONTAINS),this.state=1557,this.match(t.SQL);break;case t.NO:this.state=1558,this.match(t.NO),this.state=1559,this.match(t.SQL);break;case t.READS:this.state=1560,this.match(t.READS),this.state=1561,this.match(t.SQL),this.state=1562,this.match(t.DATA);break;case t.MODIFIES:this.state=1563,this.match(t.MODIFIES),this.state=1564,this.match(t.SQL),this.state=1565,this.match(t.DATA);break;default:throw new Ei(this)}break;case t.SQL:s=new k_(s),this.enterOuterAlt(s,5),this.state=1568,this.match(t.SQL),this.state=1569,this.match(t.SECURITY),this.state=1570,s._context=this.tokenStream.LT(1),e=this.tokenStream.LA(1),392===e||460===e?(this.errorHandler.reportMatch(this),this.consume()):s._context=this.errorHandler.recoverInline(this);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}serverOption(){let e=new G_(this.context,this.state);this.enterRule(e,84,t.RULE_serverOption);try{switch(this.state=1587,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.HOST:this.enterOuterAlt(e,1),this.state=1573,this.match(t.HOST),this.state=1574,this.match(t.STRING_LITERAL);break;case t.DATABASE:this.enterOuterAlt(e,2),this.state=1575,this.match(t.DATABASE),this.state=1576,this.match(t.STRING_LITERAL);break;case t.USER:this.enterOuterAlt(e,3),this.state=1577,this.match(t.USER),this.state=1578,this.match(t.STRING_LITERAL);break;case t.PASSWORD:this.enterOuterAlt(e,4),this.state=1579,this.match(t.PASSWORD),this.state=1580,this.match(t.STRING_LITERAL);break;case t.SOCKET:this.enterOuterAlt(e,5),this.state=1581,this.match(t.SOCKET),this.state=1582,this.match(t.STRING_LITERAL);break;case t.OWNER:this.enterOuterAlt(e,6),this.state=1583,this.match(t.OWNER),this.state=1584,this.match(t.STRING_LITERAL);break;case t.PORT:this.enterOuterAlt(e,7),this.state=1585,this.match(t.PORT),this.state=1586,this.decimalLiteral();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createDefinitions(){let e,s=new F_(this.context,this.state);this.enterRule(s,86,t.RULE_createDefinitions);try{for(this.enterOuterAlt(s,1),this.state=1589,this.match(t.LR_BRACKET),this.state=1590,this.createDefinition(),this.state=1595,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=1591,this.match(t.COMMA),this.state=1592,this.createDefinition(),this.state=1597,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1598,this.match(t.RR_BRACKET)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createDefinition(){let e,s=new v_(this.context,this.state);this.enterRule(s,88,t.RULE_createDefinition);try{switch(this.state=1611,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,141,this.context)){case 1:s=new B_(s),this.enterOuterAlt(s,1),this.state=1600,this.fullColumnName(),this.state=1601,this.columnDefinition();break;case 2:s=new y_(s),this.enterOuterAlt(s,2),this.state=1603,this.tableConstraint(),this.state=1605,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=1604,this.match(t.NOT)),this.state=1608,this.errorHandler.sync(this),e=this.tokenStream.LA(1),57===e&&(this.state=1607,this.match(t.ENFORCED));break;case 3:s=new f_(s),this.enterOuterAlt(s,3),this.state=1610,this.indexColumnDefinition()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnDefinition(){let e,s=new Y_(this.context,this.state);this.enterRule(s,90,t.RULE_columnDefinition);try{let a;for(this.enterOuterAlt(s,1),this.state=1613,this.dataType(),this.state=1617,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,142,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=1614,this.columnConstraint()),this.state=1619,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,142,this.context);this.state=1621,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=1620,this.match(t.NOT)),this.state=1624,this.errorHandler.sync(this),e=this.tokenStream.LA(1),57===e&&(this.state=1623,this.match(t.ENFORCED))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnConstraint(){let e,s=new w_(this.context,this.state);this.enterRule(s,92,t.RULE_columnConstraint);try{switch(this.state=1679,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NOT:case t.NULL_LITERAL:case t.NULL_SPEC_LITERAL:s=new $_(s),this.enterOuterAlt(s,1),this.state=1626,this.nullNotnull();break;case t.DEFAULT:s=new tP(s),this.enterOuterAlt(s,2),this.state=1627,this.match(t.DEFAULT),this.state=1628,this.defaultValue();break;case t.VISIBLE:s=new W_(s),this.enterOuterAlt(s,3),this.state=1629,this.match(t.VISIBLE);break;case t.INVISIBLE:s=new sP(s),this.enterOuterAlt(s,4),this.state=1630,this.match(t.INVISIBLE);break;case t.ON:case t.AUTO_INCREMENT:switch(s=new V_(s),this.enterOuterAlt(s,5),this.state=1635,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AUTO_INCREMENT:this.state=1631,this.match(t.AUTO_INCREMENT);break;case t.ON:this.state=1632,this.match(t.ON),this.state=1633,this.match(t.UPDATE),this.state=1634,this.currentTimestamp();break;default:throw new Ei(this)}break;case t.KEY:case t.PRIMARY:s=new j_(s),this.enterOuterAlt(s,6),this.state=1638,this.errorHandler.sync(this),e=this.tokenStream.LA(1),130===e&&(this.state=1637,this.match(t.PRIMARY)),this.state=1640,this.match(t.KEY);break;case t.UNIQUE:if(1===(s=new K_(s),this.enterOuterAlt(s,7),this.state=1641,this.match(t.UNIQUE),this.state=1643,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,147,this.context)))this.state=1642,this.match(t.KEY);break;case t.COMMENT:s=new X_(s),this.enterOuterAlt(s,8),this.state=1645,this.match(t.COMMENT),this.state=1646,this.match(t.STRING_LITERAL);break;case t.COLUMN_FORMAT:s=new Z_(s),this.enterOuterAlt(s,9),this.state=1647,this.match(t.COLUMN_FORMAT),this.state=1648,s._colformat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||402===e||431===e?(this.errorHandler.reportMatch(this),this.consume()):s._colformat=this.errorHandler.recoverInline(this);break;case t.STORAGE:s=new b_(s),this.enterOuterAlt(s,10),this.state=1649,this.match(t.STORAGE),this.state=1650,s._storageval=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||398===e||792===e?(this.errorHandler.reportMatch(this),this.consume()):s._storageval=this.errorHandler.recoverInline(this);break;case t.REFERENCES:s=new eP(s),this.enterOuterAlt(s,11),this.state=1651,this.referenceDefinition();break;case t.COLLATE:s=new q_(s),this.enterOuterAlt(s,12),this.state=1652,this.match(t.COLLATE),this.state=1653,this.collationName();break;case t.AS:case t.GENERATED:s=new J_(s),this.enterOuterAlt(s,13),this.state=1656,this.errorHandler.sync(this),e=this.tokenStream.LA(1),70===e&&(this.state=1654,this.match(t.GENERATED),this.state=1655,this.match(t.ALWAYS)),this.state=1658,this.match(t.AS),this.state=1659,this.match(t.LR_BRACKET),this.state=1660,this.expression(0),this.state=1661,this.match(t.RR_BRACKET),this.state=1663,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(637===e||672===e)&&(this.state=1662,e=this.tokenStream.LA(1),637===e||672===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;case t.SERIAL:s=new Q_(s),this.enterOuterAlt(s,14),this.state=1665,this.match(t.SERIAL),this.state=1666,this.match(t.DEFAULT),this.state=1667,this.match(t.VALUE);break;case t.CHECK:case t.CONSTRAINT:s=new z_(s),this.enterOuterAlt(s,15),this.state=1672,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=1668,this.match(t.CONSTRAINT),this.state=1670,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=1669,s._name=this.uid())),this.state=1674,this.match(t.CHECK),this.state=1675,this.match(t.LR_BRACKET),this.state=1676,this.expression(0),this.state=1677,this.match(t.RR_BRACKET);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableConstraint(){let e,s=new aP(this.context,this.state);this.enterRule(s,94,t.RULE_tableConstraint);try{switch(this.state=1750,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,169,this.context)){case 1:if(s=new cP(s),this.enterOuterAlt(s,1),this.state=1685,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&1===(this.state=1681,this.match(t.CONSTRAINT),this.state=1683,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,153,this.context)))this.state=1682,s._name=this.uid();for(this.state=1687,this.match(t.PRIMARY),this.state=1688,this.match(t.KEY),this.state=1690,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=1689,s._index=this.uid()),this.state=1693,this.errorHandler.sync(this),e=this.tokenStream.LA(1),187===e&&(this.state=1692,this.indexType()),this.state=1695,this.indexColumnNames(),this.state=1699,this.errorHandler.sync(this),e=this.tokenStream.LA(1);187===e||192===e||368===e||459===e||467===e||673===e||875===e||1e3===e;)this.state=1696,this.indexOption(),this.state=1701,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 2:for(s=new rP(s),this.enterOuterAlt(s,2),this.state=1706,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=1702,this.match(t.CONSTRAINT),this.state=1704,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=1703,s._name=this.uid())),this.state=1708,this.match(t.UNIQUE),this.state=1710,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(81===e||91===e)&&(this.state=1709,s._indexFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexFormat=this.errorHandler.recoverInline(this)),this.state=1713,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=1712,s._index=this.uid()),this.state=1716,this.errorHandler.sync(this),e=this.tokenStream.LA(1),187===e&&(this.state=1715,this.indexType()),this.state=1718,this.indexColumnNames(),this.state=1722,this.errorHandler.sync(this),e=this.tokenStream.LA(1);187===e||192===e||368===e||459===e||467===e||673===e||875===e||1e3===e;)this.state=1719,this.indexOption(),this.state=1724,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 3:s=new nP(s),this.enterOuterAlt(s,3),this.state=1729,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=1725,this.match(t.CONSTRAINT),this.state=1727,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=1726,s._name=this.uid())),this.state=1731,this.match(t.FOREIGN),this.state=1732,this.match(t.KEY),this.state=1734,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=1733,s._index=this.uid()),this.state=1736,this.indexColumnNames(),this.state=1737,this.referenceDefinition();break;case 4:s=new iP(s),this.enterOuterAlt(s,4),this.state=1743,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=1739,this.match(t.CONSTRAINT),this.state=1741,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=1740,s._name=this.uid())),this.state=1745,this.match(t.CHECK),this.state=1746,this.match(t.LR_BRACKET),this.state=1747,this.expression(0),this.state=1748,this.match(t.RR_BRACKET)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}referenceDefinition(){let e,s=new hP(this.context,this.state);this.enterRule(s,96,t.RULE_referenceDefinition);try{if(1===(this.enterOuterAlt(s,1),this.state=1752,this.match(t.REFERENCES),this.state=1753,this.tableName(),this.state=1755,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e&&(this.state=1754,this.indexColumnNames()),this.state=1759,this.errorHandler.sync(this),e=this.tokenStream.LA(1),109===e&&(this.state=1757,this.match(t.MATCH),this.state=1758,s._matchType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),436===e||548===e||613===e?(this.errorHandler.reportMatch(this),this.consume()):s._matchType=this.errorHandler.recoverInline(this)),this.state=1762,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,172,this.context)))this.state=1761,this.referenceAction()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}referenceAction(){let e=new EP(this.context,this.state);this.enterRule(e,98,t.RULE_referenceAction);try{switch(this.state=1780,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,175,this.context)){case 1:if(1===(this.enterOuterAlt(e,1),this.state=1764,this.match(t.ON),this.state=1765,this.match(t.DELETE),this.state=1766,e._onDelete=this.referenceControlType(),this.state=1770,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,173,this.context)))this.state=1767,this.match(t.ON),this.state=1768,this.match(t.UPDATE),this.state=1769,e._onUpdate=this.referenceControlType();break;case 2:if(1===(this.enterOuterAlt(e,2),this.state=1772,this.match(t.ON),this.state=1773,this.match(t.UPDATE),this.state=1774,e._onUpdate=this.referenceControlType(),this.state=1778,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,174,this.context)))this.state=1775,this.match(t.ON),this.state=1776,this.match(t.DELETE),this.state=1777,e._onDelete=this.referenceControlType()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}referenceControlType(){let e=new TP(this.context,this.state);this.enterRule(e,100,t.RULE_referenceControlType);try{switch(this.state=1790,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,176,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1782,this.match(t.RESTRICT);break;case 2:this.enterOuterAlt(e,2),this.state=1783,this.match(t.CASCADE);break;case 3:this.enterOuterAlt(e,3),this.state=1784,this.match(t.SET),this.state=1785,this.match(t.NULL_LITERAL);break;case 4:this.enterOuterAlt(e,4),this.state=1786,this.match(t.NO),this.state=1787,this.match(t.ACTION);break;case 5:this.enterOuterAlt(e,5),this.state=1788,this.match(t.SET),this.state=1789,this.match(t.DEFAULT)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}indexColumnDefinition(){let e,s=new oP(this.context,this.state);this.enterRule(s,102,t.RULE_indexColumnDefinition);try{switch(this.state=1820,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.INDEX:case t.KEY:for(s=new AP(s),this.enterOuterAlt(s,1),this.state=1792,s._indexFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexFormat=this.errorHandler.recoverInline(this),this.state=1794,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=1793,this.uid()),this.state=1797,this.errorHandler.sync(this),e=this.tokenStream.LA(1),187===e&&(this.state=1796,this.indexType()),this.state=1799,this.indexColumnNames(),this.state=1803,this.errorHandler.sync(this),e=this.tokenStream.LA(1);187===e||192===e||368===e||459===e||467===e||673===e||875===e||1e3===e;)this.state=1800,this.indexOption(),this.state=1805,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case t.FULLTEXT:case t.SPATIAL:for(s=new RP(s),this.enterOuterAlt(s,2),this.state=1806,e=this.tokenStream.LA(1),69===e||159===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1808,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(81===e||91===e)&&(this.state=1807,s._indexFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexFormat=this.errorHandler.recoverInline(this)),this.state=1811,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=1810,this.uid()),this.state=1813,this.indexColumnNames(),this.state=1817,this.errorHandler.sync(this),e=this.tokenStream.LA(1);187===e||192===e||368===e||459===e||467===e||673===e||875===e||1e3===e;)this.state=1814,this.indexOption(),this.state=1819,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableOption(){let e,s=new SP(this.context,this.state);this.enterRule(s,104,t.RULE_tableOption);try{switch(this.state=2007,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,221,this.context)){case 1:if(1===(s=new lP(s),this.enterOuterAlt(s,1),this.state=1822,this.match(t.ENGINE),this.state=1824,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1823,this.match(t.EQUAL_SYMBOL)),this.state=1827,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,185,this.context)))this.state=1826,this.engineName();break;case 2:s=new QP(s),this.enterOuterAlt(s,2),this.state=1829,this.match(t.ENGINE_ATTRIBUTE),this.state=1831,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1830,this.match(t.EQUAL_SYMBOL)),this.state=1833,this.match(t.STRING_LITERAL);break;case 3:s=new LP(s),this.enterOuterAlt(s,3),this.state=1834,this.match(t.AUTOEXTEND_SIZE),this.state=1836,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1835,this.match(t.EQUAL_SYMBOL)),this.state=1838,this.decimalLiteral();break;case 4:s=new GP(s),this.enterOuterAlt(s,4),this.state=1839,this.match(t.AUTO_INCREMENT),this.state=1841,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1840,this.match(t.EQUAL_SYMBOL)),this.state=1843,this.decimalLiteral();break;case 5:s=new WP(s),this.enterOuterAlt(s,5),this.state=1844,this.match(t.AVG_ROW_LENGTH),this.state=1846,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1845,this.match(t.EQUAL_SYMBOL)),this.state=1848,this.decimalLiteral();break;case 6:switch(s=new mP(s),this.enterOuterAlt(s,6),this.state=1850,this.errorHandler.sync(this),e=this.tokenStream.LA(1),42===e&&(this.state=1849,this.match(t.DEFAULT)),this.state=1852,this.charSet(),this.state=1854,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1853,this.match(t.EQUAL_SYMBOL)),this.state=1858,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.BINARY:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:this.state=1856,this.charsetName();break;case t.DEFAULT:this.state=1857,this.match(t.DEFAULT);break;default:throw new Ei(this)}break;case 7:s=new vP(s),this.enterOuterAlt(s,7),this.state=1860,e=this.tokenStream.LA(1),356===e||357===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1862,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1861,this.match(t.EQUAL_SYMBOL)),this.state=1864,s._boolValue=this.tokenStream.LT(1),e=this.tokenStream.LA(1),1138===e||1139===e?(this.errorHandler.reportMatch(this),this.consume()):s._boolValue=this.errorHandler.recoverInline(this);break;case 8:s=new IP(s),this.enterOuterAlt(s,8),this.state=1866,this.errorHandler.sync(this),e=this.tokenStream.LA(1),42===e&&(this.state=1865,this.match(t.DEFAULT)),this.state=1868,this.match(t.COLLATE),this.state=1870,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1869,this.match(t.EQUAL_SYMBOL)),this.state=1872,this.collationName();break;case 9:s=new bP(s),this.enterOuterAlt(s,9),this.state=1873,this.match(t.COMMENT),this.state=1875,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1874,this.match(t.EQUAL_SYMBOL)),this.state=1877,this.match(t.STRING_LITERAL);break;case 10:s=new XP(s),this.enterOuterAlt(s,10),this.state=1878,this.match(t.COMPRESSION),this.state=1880,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1879,this.match(t.EQUAL_SYMBOL)),this.state=1882,e=this.tokenStream.LA(1),1148===e||1156===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case 11:s=new yP(s),this.enterOuterAlt(s,11),this.state=1883,this.match(t.CONNECTION),this.state=1885,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1884,this.match(t.EQUAL_SYMBOL)),this.state=1887,this.match(t.STRING_LITERAL);break;case 12:s=new kP(s),this.enterOuterAlt(s,12),this.state=1888,e=this.tokenStream.LA(1),81===e||388===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1889,this.match(t.DIRECTORY),this.state=1891,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1890,this.match(t.EQUAL_SYMBOL)),this.state=1893,this.match(t.STRING_LITERAL);break;case 13:s=new BP(s),this.enterOuterAlt(s,13),this.state=1894,this.match(t.DELAY_KEY_WRITE),this.state=1896,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1895,this.match(t.EQUAL_SYMBOL)),this.state=1898,s._boolValue=this.tokenStream.LT(1),e=this.tokenStream.LA(1),1138===e||1139===e?(this.errorHandler.reportMatch(this),this.consume()):s._boolValue=this.errorHandler.recoverInline(this);break;case 14:s=new xP(s),this.enterOuterAlt(s,14),this.state=1899,this.match(t.ENCRYPTION),this.state=1901,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1900,this.match(t.EQUAL_SYMBOL)),this.state=1903,this.match(t.STRING_LITERAL);break;case 15:s=new CP(s),this.enterOuterAlt(s,15),this.state=1904,e=this.tokenStream.LA(1),545===e||1148===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1906,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1905,this.match(t.EQUAL_SYMBOL)),this.state=1908,e=this.tokenStream.LA(1),1138===e||1139===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case 16:s=new YP(s),this.enterOuterAlt(s,16),this.state=1909,e=this.tokenStream.LA(1),546===e||1148===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1911,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1910,this.match(t.EQUAL_SYMBOL)),this.state=1913,this.decimalLiteral();break;case 17:s=new FP(s),this.enterOuterAlt(s,17),this.state=1914,this.match(t.ENCRYPTION_KEY_ID),this.state=1916,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1915,this.match(t.EQUAL_SYMBOL)),this.state=1918,this.decimalLiteral();break;case 18:s=new DP(s),this.enterOuterAlt(s,18),this.state=1919,this.match(t.INDEX),this.state=1920,this.match(t.DIRECTORY),this.state=1922,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1921,this.match(t.EQUAL_SYMBOL)),this.state=1924,this.match(t.STRING_LITERAL);break;case 19:s=new KP(s),this.enterOuterAlt(s,19),this.state=1925,this.match(t.INSERT_METHOD),this.state=1927,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1926,this.match(t.EQUAL_SYMBOL)),this.state=1929,s._insertMethod=this.tokenStream.LT(1),e=this.tokenStream.LA(1),430===e||469===e||521===e?(this.errorHandler.reportMatch(this),this.consume()):s._insertMethod=this.errorHandler.recoverInline(this);break;case 20:s=new gP(s),this.enterOuterAlt(s,20),this.state=1930,this.match(t.KEY_BLOCK_SIZE),this.state=1932,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1931,this.match(t.EQUAL_SYMBOL)),this.state=1934,this.fileSizeLiteral();break;case 21:s=new OP(s),this.enterOuterAlt(s,21),this.state=1935,this.match(t.MAX_ROWS),this.state=1937,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1936,this.match(t.EQUAL_SYMBOL)),this.state=1939,this.decimalLiteral();break;case 22:s=new JP(s),this.enterOuterAlt(s,22),this.state=1940,this.match(t.MIN_ROWS),this.state=1942,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1941,this.match(t.EQUAL_SYMBOL)),this.state=1944,this.decimalLiteral();break;case 23:s=new PP(s),this.enterOuterAlt(s,23),this.state=1945,this.match(t.PACK_KEYS),this.state=1947,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1946,this.match(t.EQUAL_SYMBOL)),this.state=1949,s._extBoolValue=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||1138===e||1139===e?(this.errorHandler.reportMatch(this),this.consume()):s._extBoolValue=this.errorHandler.recoverInline(this);break;case 24:s=new MP(s),this.enterOuterAlt(s,24),this.state=1950,this.match(t.PASSWORD),this.state=1952,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1951,this.match(t.EQUAL_SYMBOL)),this.state=1954,this.match(t.STRING_LITERAL);break;case 25:s=new VP(s),this.enterOuterAlt(s,25),this.state=1955,this.match(t.ROW_FORMAT),this.state=1957,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1956,this.match(t.EQUAL_SYMBOL)),this.state=1959,s._rowFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||370===e||372===e||402===e||431===e||573===e||1156===e?(this.errorHandler.reportMatch(this),this.consume()):s._rowFormat=this.errorHandler.recoverInline(this);break;case 26:s=new _P(s),this.enterOuterAlt(s,26),this.state=1960,this.match(t.START),this.state=1961,this.match(t.TRANSACTION);break;case 27:s=new wP(s),this.enterOuterAlt(s,27),this.state=1962,this.match(t.SECONDARY_ENGINE_ATTRIBUTE),this.state=1964,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1963,this.match(t.EQUAL_SYMBOL)),this.state=1966,this.match(t.STRING_LITERAL);break;case 28:s=new HP(s),this.enterOuterAlt(s,28),this.state=1967,this.match(t.STATS_AUTO_RECALC),this.state=1969,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1968,this.match(t.EQUAL_SYMBOL)),this.state=1971,s._extBoolValue=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||1138===e||1139===e?(this.errorHandler.reportMatch(this),this.consume()):s._extBoolValue=this.errorHandler.recoverInline(this);break;case 29:s=new uP(s),this.enterOuterAlt(s,29),this.state=1972,this.match(t.STATS_PERSISTENT),this.state=1974,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1973,this.match(t.EQUAL_SYMBOL)),this.state=1976,s._extBoolValue=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||1138===e||1139===e?(this.errorHandler.reportMatch(this),this.consume()):s._extBoolValue=this.errorHandler.recoverInline(this);break;case 30:switch(s=new UP(s),this.enterOuterAlt(s,30),this.state=1977,this.match(t.STATS_SAMPLE_PAGES),this.state=1979,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1978,this.match(t.EQUAL_SYMBOL)),this.state=1983,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DEFAULT:this.state=1981,this.match(t.DEFAULT);break;case t.ZERO_DECIMAL:case t.ONE_DECIMAL:case t.TWO_DECIMAL:case t.DECIMAL_LITERAL:case t.REAL_LITERAL:this.state=1982,this.decimalLiteral();break;default:throw new Ei(this)}break;case 31:if(1===(s=new NP(s),this.enterOuterAlt(s,31),this.state=1985,this.match(t.TABLESPACE),this.state=1986,this.uid(),this.state=1988,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,218,this.context)))this.state=1987,this.tablespaceStorage();break;case 32:s=new pP(s),this.enterOuterAlt(s,32),this.state=1990,this.match(t.TABLE_TYPE),this.state=1991,this.match(t.EQUAL_SYMBOL),this.state=1992,this.tableType();break;case 33:s=new NP(s),this.enterOuterAlt(s,33),this.state=1993,this.tablespaceStorage();break;case 34:s=new fP(s),this.enterOuterAlt(s,34),this.state=1994,this.match(t.TRANSACTIONAL),this.state=1996,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=1995,this.match(t.EQUAL_SYMBOL)),this.state=1998,e=this.tokenStream.LA(1),1138===e||1139===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case 35:s=new dP(s),this.enterOuterAlt(s,35),this.state=1999,this.match(t.UNION),this.state=2001,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2e3,this.match(t.EQUAL_SYMBOL)),this.state=2003,this.match(t.LR_BRACKET),this.state=2004,this.tables(),this.state=2005,this.match(t.RR_BRACKET)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableType(){let e,s=new ZP(this.context,this.state);this.enterRule(s,106,t.RULE_tableType);try{this.enterOuterAlt(s,1),this.state=2009,e=this.tokenStream.LA(1),514===e||530===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tablespaceStorage(){let e,s=new qP(this.context,this.state);this.enterRule(s,108,t.RULE_tablespaceStorage);try{this.enterOuterAlt(s,1),this.state=2011,this.match(t.STORAGE),this.state=2012,e=this.tokenStream.LA(1),42===e||398===e||792===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}partitionDefinitions(){let e,s=new jP(this.context,this.state);this.enterRule(s,110,t.RULE_partitionDefinitions);try{if(1===(this.enterOuterAlt(s,1),this.state=2014,this.match(t.PARTITION),this.state=2015,this.match(t.BY),this.state=2016,this.partitionFunctionDefinition(),this.state=2019,this.errorHandler.sync(this),e=this.tokenStream.LA(1),550===e&&(this.state=2017,this.match(t.PARTITIONS),this.state=2018,s._count=this.decimalLiteral()),this.state=2028,this.errorHandler.sync(this),e=this.tokenStream.LA(1),641===e&&(this.state=2021,this.match(t.SUBPARTITION),this.state=2022,this.match(t.BY),this.state=2023,this.subpartitionFunctionDefinition(),this.state=2026,this.errorHandler.sync(this),e=this.tokenStream.LA(1),642===e&&(this.state=2024,this.match(t.SUBPARTITIONS),this.state=2025,s._subCount=this.decimalLiteral())),this.state=2041,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,226,this.context))){for(this.state=2030,this.match(t.LR_BRACKET),this.state=2031,this.partitionDefinition(),this.state=2036,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2032,this.match(t.COMMA),this.state=2033,this.partitionDefinition(),this.state=2038,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2039,this.match(t.RR_BRACKET)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}partitionFunctionDefinition(){let e,s=new zP(this.context,this.state);this.enterRule(s,112,t.RULE_partitionFunctionDefinition);try{switch(this.state=2089,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,233,this.context)){case 1:s=new tM(s),this.enterOuterAlt(s,1),this.state=2044,this.errorHandler.sync(this),e=this.tokenStream.LA(1),100===e&&(this.state=2043,this.match(t.LINEAR)),this.state=2046,this.match(t.HASH),this.state=2047,this.match(t.LR_BRACKET),this.state=2048,this.expression(0),this.state=2049,this.match(t.RR_BRACKET);break;case 2:s=new $P(s),this.enterOuterAlt(s,2),this.state=2052,this.errorHandler.sync(this),e=this.tokenStream.LA(1),100===e&&(this.state=2051,this.match(t.LINEAR)),this.state=2054,this.match(t.KEY),this.state=2058,this.errorHandler.sync(this),e=this.tokenStream.LA(1),336===e&&(this.state=2055,this.match(t.ALGORITHM),this.state=2056,this.match(t.EQUAL_SYMBOL),this.state=2057,s._algType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),1139===e||1140===e?(this.errorHandler.reportMatch(this),this.consume()):s._algType=this.errorHandler.recoverInline(this)),this.state=2060,this.match(t.LR_BRACKET),this.state=2062,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=2061,this.uidList()),this.state=2064,this.match(t.RR_BRACKET);break;case 3:switch(s=new sM(s),this.enterOuterAlt(s,3),this.state=2065,this.match(t.RANGE),this.state=2075,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LR_BRACKET:this.state=2066,this.match(t.LR_BRACKET),this.state=2067,this.expression(0),this.state=2068,this.match(t.RR_BRACKET);break;case t.COLUMNS:this.state=2070,this.match(t.COLUMNS),this.state=2071,this.match(t.LR_BRACKET),this.state=2072,this.uidList(),this.state=2073,this.match(t.RR_BRACKET);break;default:throw new Ei(this)}break;case 4:switch(s=new eM(s),this.enterOuterAlt(s,4),this.state=2077,this.match(t.LIST),this.state=2087,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LR_BRACKET:this.state=2078,this.match(t.LR_BRACKET),this.state=2079,this.expression(0),this.state=2080,this.match(t.RR_BRACKET);break;case t.COLUMNS:this.state=2082,this.match(t.COLUMNS),this.state=2083,this.match(t.LR_BRACKET),this.state=2084,this.uidList(),this.state=2085,this.match(t.RR_BRACKET);break;default:throw new Ei(this)}}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}subpartitionFunctionDefinition(){let e,s=new aM(this.context,this.state);this.enterRule(s,114,t.RULE_subpartitionFunctionDefinition);try{switch(this.state=2112,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,237,this.context)){case 1:s=new rM(s),this.enterOuterAlt(s,1),this.state=2092,this.errorHandler.sync(this),e=this.tokenStream.LA(1),100===e&&(this.state=2091,this.match(t.LINEAR)),this.state=2094,this.match(t.HASH),this.state=2095,this.match(t.LR_BRACKET),this.state=2096,this.expression(0),this.state=2097,this.match(t.RR_BRACKET);break;case 2:s=new iM(s),this.enterOuterAlt(s,2),this.state=2100,this.errorHandler.sync(this),e=this.tokenStream.LA(1),100===e&&(this.state=2099,this.match(t.LINEAR)),this.state=2102,this.match(t.KEY),this.state=2106,this.errorHandler.sync(this),e=this.tokenStream.LA(1),336===e&&(this.state=2103,this.match(t.ALGORITHM),this.state=2104,this.match(t.EQUAL_SYMBOL),this.state=2105,s._algType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),1139===e||1140===e?(this.errorHandler.reportMatch(this),this.consume()):s._algType=this.errorHandler.recoverInline(this)),this.state=2108,this.match(t.LR_BRACKET),this.state=2109,this.uidList(),this.state=2110,this.match(t.RR_BRACKET)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}partitionDefinition(){let e,s=new cM(this.context,this.state);this.enterRule(s,116,t.RULE_partitionDefinition);try{switch(this.state=2260,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,256,this.context)){case 1:for(s=new nM(s),this.enterOuterAlt(s,1),this.state=2114,this.match(t.PARTITION),this.state=2115,this.uid(),this.state=2116,this.match(t.VALUES),this.state=2117,this.match(t.LESS),this.state=2118,this.match(t.THAN),this.state=2119,this.match(t.LR_BRACKET),this.state=2120,this.partitionDefinerAtom(),this.state=2125,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2121,this.match(t.COMMA),this.state=2122,this.partitionDefinerAtom(),this.state=2127,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=2128,this.match(t.RR_BRACKET),this.state=2132,this.errorHandler.sync(this),e=this.tokenStream.LA(1);42===e||81===e||368===e||388===e||409===e||!(e-500&-32)&&1<<e-500&268436481||636===e||647===e;)this.state=2129,this.partitionOption(),this.state=2134,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(this.state=2146,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e){for(this.state=2135,this.match(t.LR_BRACKET),this.state=2136,this.subpartitionDefinition(),this.state=2141,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2137,this.match(t.COMMA),this.state=2138,this.subpartitionDefinition(),this.state=2143,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2144,this.match(t.RR_BRACKET)}break;case 2:for(s=new nM(s),this.enterOuterAlt(s,2),this.state=2148,this.match(t.PARTITION),this.state=2149,this.uid(),this.state=2150,this.match(t.VALUES),this.state=2151,this.match(t.LESS),this.state=2152,this.match(t.THAN),this.state=2153,this.partitionDefinerAtom(),this.state=2157,this.errorHandler.sync(this),e=this.tokenStream.LA(1);42===e||81===e||368===e||388===e||409===e||!(e-500&-32)&&1<<e-500&268436481||636===e||647===e;)this.state=2154,this.partitionOption(),this.state=2159,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(this.state=2171,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e){for(this.state=2160,this.match(t.LR_BRACKET),this.state=2161,this.subpartitionDefinition(),this.state=2166,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2162,this.match(t.COMMA),this.state=2163,this.subpartitionDefinition(),this.state=2168,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2169,this.match(t.RR_BRACKET)}break;case 3:for(s=new hM(s),this.enterOuterAlt(s,3),this.state=2173,this.match(t.PARTITION),this.state=2174,this.uid(),this.state=2175,this.match(t.VALUES),this.state=2176,this.match(t.IN),this.state=2177,this.match(t.LR_BRACKET),this.state=2178,this.partitionDefinerAtom(),this.state=2183,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2179,this.match(t.COMMA),this.state=2180,this.partitionDefinerAtom(),this.state=2185,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=2186,this.match(t.RR_BRACKET),this.state=2190,this.errorHandler.sync(this),e=this.tokenStream.LA(1);42===e||81===e||368===e||388===e||409===e||!(e-500&-32)&&1<<e-500&268436481||636===e||647===e;)this.state=2187,this.partitionOption(),this.state=2192,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(this.state=2204,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e){for(this.state=2193,this.match(t.LR_BRACKET),this.state=2194,this.subpartitionDefinition(),this.state=2199,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2195,this.match(t.COMMA),this.state=2196,this.subpartitionDefinition(),this.state=2201,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2202,this.match(t.RR_BRACKET)}break;case 4:for(s=new EM(s),this.enterOuterAlt(s,4),this.state=2206,this.match(t.PARTITION),this.state=2207,this.uid(),this.state=2208,this.match(t.VALUES),this.state=2209,this.match(t.IN),this.state=2210,this.match(t.LR_BRACKET),this.state=2211,this.partitionDefinerVector(),this.state=2216,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2212,this.match(t.COMMA),this.state=2213,this.partitionDefinerVector(),this.state=2218,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=2219,this.match(t.RR_BRACKET),this.state=2223,this.errorHandler.sync(this),e=this.tokenStream.LA(1);42===e||81===e||368===e||388===e||409===e||!(e-500&-32)&&1<<e-500&268436481||636===e||647===e;)this.state=2220,this.partitionOption(),this.state=2225,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(this.state=2237,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e){for(this.state=2226,this.match(t.LR_BRACKET),this.state=2227,this.subpartitionDefinition(),this.state=2232,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2228,this.match(t.COMMA),this.state=2229,this.subpartitionDefinition(),this.state=2234,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2235,this.match(t.RR_BRACKET)}break;case 5:for(s=new TM(s),this.enterOuterAlt(s,5),this.state=2239,this.match(t.PARTITION),this.state=2240,this.uid(),this.state=2244,this.errorHandler.sync(this),e=this.tokenStream.LA(1);42===e||81===e||368===e||388===e||409===e||!(e-500&-32)&&1<<e-500&268436481||636===e||647===e;)this.state=2241,this.partitionOption(),this.state=2246,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(this.state=2258,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e){for(this.state=2247,this.match(t.LR_BRACKET),this.state=2248,this.subpartitionDefinition(),this.state=2253,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2249,this.match(t.COMMA),this.state=2250,this.subpartitionDefinition(),this.state=2255,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2256,this.match(t.RR_BRACKET)}}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}partitionDefinerAtom(){let e=new oM(this.context,this.state);this.enterRule(e,118,t.RULE_partitionDefinerAtom);try{switch(this.state=2265,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,257,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2262,this.constant();break;case 2:this.enterOuterAlt(e,2),this.state=2263,this.expression(0);break;case 3:this.enterOuterAlt(e,3),this.state=2264,this.match(t.MAXVALUE)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}partitionDefinerVector(){let e,s=new RM(this.context,this.state);this.enterRule(s,120,t.RULE_partitionDefinerVector);try{this.enterOuterAlt(s,1),this.state=2267,this.match(t.LR_BRACKET),this.state=2268,this.partitionDefinerAtom(),this.state=2271,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=2269,this.match(t.COMMA),this.state=2270,this.partitionDefinerAtom(),this.state=2273,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(1135===e);this.state=2275,this.match(t.RR_BRACKET)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}subpartitionDefinition(){let e,s=new AM(this.context,this.state);this.enterRule(s,122,t.RULE_subpartitionDefinition);try{for(this.enterOuterAlt(s,1),this.state=2277,this.match(t.SUBPARTITION),this.state=2278,this.uid(),this.state=2282,this.errorHandler.sync(this),e=this.tokenStream.LA(1);42===e||81===e||368===e||388===e||409===e||!(e-500&-32)&&1<<e-500&268436481||636===e||647===e;)this.state=2279,this.partitionOption(),this.state=2284,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}partitionOption(){let e,s=new SM(this.context,this.state);this.enterRule(s,124,t.RULE_partitionOption);try{switch(this.state=2333,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DEFAULT:case t.ENGINE:case t.STORAGE:s=new LM(s),this.enterOuterAlt(s,1),this.state=2286,this.errorHandler.sync(this),e=this.tokenStream.LA(1),42===e&&(this.state=2285,this.match(t.DEFAULT)),this.state=2289,this.errorHandler.sync(this),e=this.tokenStream.LA(1),636===e&&(this.state=2288,this.match(t.STORAGE)),this.state=2291,this.match(t.ENGINE),this.state=2293,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2292,this.match(t.EQUAL_SYMBOL)),this.state=2295,this.engineName();break;case t.COMMENT:s=new lM(s),this.enterOuterAlt(s,2),this.state=2296,this.match(t.COMMENT),this.state=2298,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2297,this.match(t.EQUAL_SYMBOL)),this.state=2300,s._comment=this.match(t.STRING_LITERAL);break;case t.DATA:s=new _M(s),this.enterOuterAlt(s,3),this.state=2301,this.match(t.DATA),this.state=2302,this.match(t.DIRECTORY),this.state=2304,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2303,this.match(t.EQUAL_SYMBOL)),this.state=2306,s._dataDirectory=this.match(t.STRING_LITERAL);break;case t.INDEX:s=new IM(s),this.enterOuterAlt(s,4),this.state=2307,this.match(t.INDEX),this.state=2308,this.match(t.DIRECTORY),this.state=2310,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2309,this.match(t.EQUAL_SYMBOL)),this.state=2312,s._indexDirectory=this.match(t.STRING_LITERAL);break;case t.MAX_ROWS:s=new uM(s),this.enterOuterAlt(s,5),this.state=2313,this.match(t.MAX_ROWS),this.state=2315,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2314,this.match(t.EQUAL_SYMBOL)),this.state=2317,s._maxRows=this.decimalLiteral();break;case t.MIN_ROWS:s=new CM(s),this.enterOuterAlt(s,6),this.state=2318,this.match(t.MIN_ROWS),this.state=2320,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2319,this.match(t.EQUAL_SYMBOL)),this.state=2322,s._minRows=this.decimalLiteral();break;case t.TABLESPACE:s=new NM(s),this.enterOuterAlt(s,7),this.state=2323,this.match(t.TABLESPACE),this.state=2325,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2324,this.match(t.EQUAL_SYMBOL)),this.state=2327,s._tablespace=this.uid();break;case t.NODEGROUP:s=new OM(s),this.enterOuterAlt(s,8),this.state=2328,this.match(t.NODEGROUP),this.state=2330,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2329,this.match(t.EQUAL_SYMBOL)),this.state=2332,s._nodegroup=this.uid();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterDatabase(){let e,s=new PM(this.context,this.state);this.enterRule(s,126,t.RULE_alterDatabase);try{switch(this.state=2351,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,272,this.context)){case 1:s=new dM(s),this.enterOuterAlt(s,1),this.state=2335,this.match(t.ALTER),this.state=2336,s._dbFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),39===e||150===e?(this.errorHandler.reportMatch(this),this.consume()):s._dbFormat=this.errorHandler.recoverInline(this),this.state=2337,this.databaseName(),this.state=2339,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=2338,this.createDatabaseOption(),this.state=2341,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(!(e-25&-32)&&1<<e-25&131077||134===e||222===e||405===e||841===e);break;case 2:s=new MM(s),this.enterOuterAlt(s,2),this.state=2343,this.match(t.ALTER),this.state=2344,s._dbFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),39===e||150===e?(this.errorHandler.reportMatch(this),this.consume()):s._dbFormat=this.errorHandler.recoverInline(this),this.state=2345,this.databaseName(),this.state=2346,this.match(t.UPGRADE),this.state=2347,this.match(t.DATA),this.state=2348,this.match(t.DIRECTORY),this.state=2349,this.match(t.NAME)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterEvent(){let e,s=new UM(this.context,this.state);this.enterRule(s,128,t.RULE_alterEvent);try{if(this.enterOuterAlt(s,1),1===(this.state=2353,this.match(t.ALTER),this.state=2355,this.errorHandler.sync(this),e=this.tokenStream.LA(1),392===e&&(this.state=2354,this.ownerStatement()),this.state=2357,this.match(t.EVENT),this.state=2358,this.fullId(),this.state=2362,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,274,this.context)))this.state=2359,this.match(t.ON),this.state=2360,this.match(t.SCHEDULE),this.state=2361,this.scheduleExpression();this.state=2370,this.errorHandler.sync(this),e=this.tokenStream.LA(1),118===e&&(this.state=2364,this.match(t.ON),this.state=2365,this.match(t.COMPLETION),this.state=2367,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=2366,this.match(t.NOT)),this.state=2369,this.match(t.PRESERVE)),this.state=2375,this.errorHandler.sync(this),e=this.tokenStream.LA(1),139===e&&(this.state=2372,this.match(t.RENAME),this.state=2373,this.match(t.TO),this.state=2374,this.fullId()),this.state=2378,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(396===e||403===e)&&(this.state=2377,this.enableType()),this.state=2382,this.errorHandler.sync(this),e=this.tokenStream.LA(1),368===e&&(this.state=2380,this.match(t.COMMENT),this.state=2381,this.match(t.STRING_LITERAL)),this.state=2386,this.errorHandler.sync(this),e=this.tokenStream.LA(1),399===e&&(this.state=2384,this.match(t.DO),this.state=2385,this.routineBody())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterFunction(){let e,s=new mM(this.context,this.state);this.enterRule(s,130,t.RULE_alterFunction);try{for(this.enterOuterAlt(s,1),this.state=2388,this.match(t.ALTER),this.state=2389,this.match(t.FUNCTION),this.state=2390,this.fullId(),this.state=2394,this.errorHandler.sync(this),e=this.tokenStream.LA(1);47===e||!(e-112&-32)&&1<<e-112&8388613||160===e||368===e||381===e||468===e||521===e;)this.state=2391,this.routineOption(),this.state=2396,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterInstance(){let e=new DM(this.context,this.state);this.enterRule(e,132,t.RULE_alterInstance);try{this.enterOuterAlt(e,1),this.state=2397,this.match(t.ALTER),this.state=2398,this.match(t.INSTANCE),this.state=2399,this.match(t.ROTATE),this.state=2400,this.match(t.INNODB),this.state=2401,this.match(t.MASTER),this.state=2402,this.match(t.KEY)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterLogfileGroup(){let e,s=new pM(this.context,this.state);this.enterRule(s,134,t.RULE_alterLogfileGroup);try{this.enterOuterAlt(s,1),this.state=2404,this.match(t.ALTER),this.state=2405,this.match(t.LOGFILE),this.state=2406,this.match(t.GROUP),this.state=2407,this.uid(),this.state=2408,this.match(t.ADD),this.state=2409,this.match(t.UNDOFILE),this.state=2410,this.match(t.STRING_LITERAL),this.state=2416,this.errorHandler.sync(this),e=this.tokenStream.LA(1),453===e&&(this.state=2411,this.match(t.INITIAL_SIZE),this.state=2413,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2412,this.match(t.EQUAL_SYMBOL)),this.state=2415,this.fileSizeLiteral()),this.state=2419,this.errorHandler.sync(this),e=this.tokenStream.LA(1),674===e&&(this.state=2418,this.match(t.WAIT)),this.state=2421,this.match(t.ENGINE),this.state=2423,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2422,this.match(t.EQUAL_SYMBOL)),this.state=2425,this.engineName()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterProcedure(){let e,s=new gM(this.context,this.state);this.enterRule(s,136,t.RULE_alterProcedure);try{for(this.enterOuterAlt(s,1),this.state=2427,this.match(t.ALTER),this.state=2428,this.match(t.PROCEDURE),this.state=2429,this.fullId(),this.state=2433,this.errorHandler.sync(this),e=this.tokenStream.LA(1);47===e||!(e-112&-32)&&1<<e-112&8388613||160===e||368===e||381===e||468===e||521===e;)this.state=2430,this.routineOption(),this.state=2435,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterServer(){let e,s=new xM(this.context,this.state);this.enterRule(s,138,t.RULE_alterServer);try{for(this.enterOuterAlt(s,1),this.state=2436,this.match(t.ALTER),this.state=2437,this.match(t.SERVER),this.state=2438,this.uid(),this.state=2439,this.match(t.OPTIONS),this.state=2440,this.match(t.LR_BRACKET),this.state=2441,this.serverOption(),this.state=2446,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2442,this.match(t.COMMA),this.state=2443,this.serverOption(),this.state=2448,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2449,this.match(t.RR_BRACKET)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterTable(){let e,s=new kM(this.context,this.state);this.enterRule(s,140,t.RULE_alterTable);try{if(this.enterOuterAlt(s,1),this.state=2451,this.match(t.ALTER),this.state=2453,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(531===e||537===e)&&(this.state=2452,s._intimeAction=this.tokenStream.LT(1),e=this.tokenStream.LA(1),531===e||537===e?(this.errorHandler.reportMatch(this),this.consume()):s._intimeAction=this.errorHandler.recoverInline(this)),this.state=2456,this.errorHandler.sync(this),e=this.tokenStream.LA(1),78===e&&(this.state=2455,this.match(t.IGNORE)),this.state=2458,this.match(t.TABLE),this.state=2459,this.tableName(),this.state=2461,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(527===e||674===e)&&(this.state=2460,this.waitNowaitClause()),this.state=2471,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-5&-32)&&1<<e-5&142082069||!(e-42&-32)&&1<<e-42&16777729||81===e||103===e||!(e-119&-32)&&1<<e-119&1048609||180===e||192===e||222===e||!(e-336&-32)&&1<<e-336&137363681||!(e-368&-32)&&1<<e-368&839909665||!(e-403&-32)&&1<<e-403&32845||!(e-450&-32)&&1<<e-450&131105||!(e-500&-32)&&1<<e-500&5121||!(e-543&-32)&&1<<e-543&67109133||!(e-578&-32)&&1<<e-578&16777223||!(e-629&-32)&&1<<e-629&168558749||664===e||677===e||841===e||875===e||1e3===e||1148===e)for(this.state=2463,this.alterSpecification(),this.state=2468,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2464,this.match(t.COMMA),this.state=2465,this.alterSpecification(),this.state=2470,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2474,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=2473,this.partitionDefinitions())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterTablespace(){let e,s=new HM(this.context,this.state);this.enterRule(s,142,t.RULE_alterTablespace);try{this.enterOuterAlt(s,1),this.state=2476,this.match(t.ALTER),this.state=2477,this.match(t.TABLESPACE),this.state=2478,this.uid(),this.state=2479,s._objectAction=this.tokenStream.LT(1),e=this.tokenStream.LA(1),5===e||51===e?(this.errorHandler.reportMatch(this),this.consume()):s._objectAction=this.errorHandler.recoverInline(this),this.state=2480,this.match(t.DATAFILE),this.state=2481,this.match(t.STRING_LITERAL),this.state=2485,this.errorHandler.sync(this),e=this.tokenStream.LA(1),453===e&&(this.state=2482,this.match(t.INITIAL_SIZE),this.state=2483,this.match(t.EQUAL_SYMBOL),this.state=2484,this.fileSizeLiteral()),this.state=2488,this.errorHandler.sync(this),e=this.tokenStream.LA(1),674===e&&(this.state=2487,this.match(t.WAIT)),this.state=2490,this.match(t.ENGINE),this.state=2492,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2491,this.match(t.EQUAL_SYMBOL)),this.state=2494,this.engineName()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterView(){let e,s=new GM(this.context,this.state);this.enterRule(s,144,t.RULE_alterView);try{this.enterOuterAlt(s,1),this.state=2496,this.match(t.ALTER),this.state=2500,this.errorHandler.sync(this),e=this.tokenStream.LA(1),336===e&&(this.state=2497,this.match(t.ALGORITHM),this.state=2498,this.match(t.EQUAL_SYMBOL),this.state=2499,s._algType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),506===e||650===e||658===e?(this.errorHandler.reportMatch(this),this.consume()):s._algType=this.errorHandler.recoverInline(this)),this.state=2503,this.errorHandler.sync(this),e=this.tokenStream.LA(1),392===e&&(this.state=2502,this.ownerStatement()),this.state=2508,this.errorHandler.sync(this),e=this.tokenStream.LA(1),160===e&&(this.state=2505,this.match(t.SQL),this.state=2506,this.match(t.SECURITY),this.state=2507,s._secContext=this.tokenStream.LT(1),e=this.tokenStream.LA(1),392===e||460===e?(this.errorHandler.reportMatch(this),this.consume()):s._secContext=this.errorHandler.recoverInline(this)),this.state=2510,this.match(t.VIEW),this.state=2511,this.fullId(),this.state=2516,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e&&(this.state=2512,this.match(t.LR_BRACKET),this.state=2513,this.uidList(),this.state=2514,this.match(t.RR_BRACKET)),this.state=2518,this.match(t.AS),this.state=2519,this.selectStatement(),this.state=2526,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e&&(this.state=2520,this.match(t.WITH),this.state=2522,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(352===e||474===e)&&(this.state=2521,s._checkOpt=this.tokenStream.LT(1),e=this.tokenStream.LA(1),352===e||474===e?(this.errorHandler.reportMatch(this),this.consume()):s._checkOpt=this.errorHandler.recoverInline(this)),this.state=2524,this.match(t.CHECK),this.state=2525,this.match(t.OPTION))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterSpecification(){let e,s=new FM(this.context,this.state);this.enterRule(s,146,t.RULE_alterSpecification);try{let a;switch(this.state=2879,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,362,this.context)){case 1:for(s=new id(s),this.enterOuterAlt(s,1),this.state=2528,this.tableOption(),this.state=2535,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,304,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=2530,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1135===e&&(this.state=2529,this.match(t.COMMA)),this.state=2532,this.tableOption()),this.state=2537,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,304,this.context);break;case 2:switch(s=new Od(s),this.enterOuterAlt(s,2),this.state=2538,this.match(t.ADD),this.state=2540,this.errorHandler.sync(this),e=this.tokenStream.LA(1),28===e&&(this.state=2539,this.match(t.COLUMN)),this.state=2542,this.uid(),this.state=2543,this.columnDefinition(),this.state=2547,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FIRST:this.state=2544,this.match(t.FIRST);break;case t.AFTER:this.state=2545,this.match(t.AFTER),this.state=2546,this.uid();case t.EOF:case t.PARTITION:case t.COMMA:case t.SEMI:}break;case 3:for(s=new JM(s),this.enterOuterAlt(s,3),this.state=2549,this.match(t.ADD),this.state=2551,this.errorHandler.sync(this),e=this.tokenStream.LA(1),28===e&&(this.state=2550,this.match(t.COLUMN)),this.state=2553,this.match(t.LR_BRACKET),this.state=2554,this.uid(),this.state=2555,this.columnDefinition(),this.state=2562,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2556,this.match(t.COMMA),this.state=2557,this.uid(),this.state=2558,this.columnDefinition(),this.state=2564,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2565,this.match(t.RR_BRACKET);break;case 4:for(s=new $M(s),this.enterOuterAlt(s,4),this.state=2567,this.match(t.ADD),this.state=2568,s._indexFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexFormat=this.errorHandler.recoverInline(this),this.state=2570,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=2569,this.uid()),this.state=2573,this.errorHandler.sync(this),e=this.tokenStream.LA(1),187===e&&(this.state=2572,this.indexType()),this.state=2575,this.indexColumnNames(),this.state=2579,this.errorHandler.sync(this),e=this.tokenStream.LA(1);187===e||192===e||368===e||459===e||467===e||673===e||875===e||1e3===e;)this.state=2576,this.indexOption(),this.state=2581,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 5:if(s=new Td(s),this.enterOuterAlt(s,5),this.state=2582,this.match(t.ADD),this.state=2587,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&1===(this.state=2583,this.match(t.CONSTRAINT),this.state=2585,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,312,this.context)))this.state=2584,s._name=this.uid();for(this.state=2589,this.match(t.PRIMARY),this.state=2590,this.match(t.KEY),this.state=2592,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=2591,s._index=this.uid()),this.state=2595,this.errorHandler.sync(this),e=this.tokenStream.LA(1),187===e&&(this.state=2594,this.indexType()),this.state=2597,this.indexColumnNames(),this.state=2601,this.errorHandler.sync(this),e=this.tokenStream.LA(1);187===e||192===e||368===e||459===e||467===e||673===e||875===e||1e3===e;)this.state=2598,this.indexOption(),this.state=2603,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 6:for(s=new Sd(s),this.enterOuterAlt(s,6),this.state=2604,this.match(t.ADD),this.state=2609,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=2605,this.match(t.CONSTRAINT),this.state=2607,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=2606,s._name=this.uid())),this.state=2611,this.match(t.UNIQUE),this.state=2613,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(81===e||91===e)&&(this.state=2612,s._indexFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexFormat=this.errorHandler.recoverInline(this)),this.state=2616,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=2615,this.uid()),this.state=2619,this.errorHandler.sync(this),e=this.tokenStream.LA(1),187===e&&(this.state=2618,this.indexType()),this.state=2621,this.indexColumnNames(),this.state=2625,this.errorHandler.sync(this),e=this.tokenStream.LA(1);187===e||192===e||368===e||459===e||467===e||673===e||875===e||1e3===e;)this.state=2622,this.indexOption(),this.state=2627,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 7:for(s=new ad(s),this.enterOuterAlt(s,7),this.state=2628,this.match(t.ADD),this.state=2629,s._keyType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),69===e||159===e?(this.errorHandler.reportMatch(this),this.consume()):s._keyType=this.errorHandler.recoverInline(this),this.state=2631,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(81===e||91===e)&&(this.state=2630,s._indexFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexFormat=this.errorHandler.recoverInline(this)),this.state=2634,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=2633,this.uid()),this.state=2636,this.indexColumnNames(),this.state=2640,this.errorHandler.sync(this),e=this.tokenStream.LA(1);187===e||192===e||368===e||459===e||467===e||673===e||875===e||1e3===e;)this.state=2637,this.indexOption(),this.state=2642,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 8:s=new wM(s),this.enterOuterAlt(s,8),this.state=2643,this.match(t.ADD),this.state=2648,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=2644,this.match(t.CONSTRAINT),this.state=2646,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=2645,s._name=this.uid())),this.state=2650,this.match(t.FOREIGN),this.state=2651,this.match(t.KEY),this.state=2653,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=2652,this.uid()),this.state=2655,this.indexColumnNames(),this.state=2656,this.referenceDefinition();break;case 9:switch(s=new jM(s),this.enterOuterAlt(s,9),this.state=2658,this.match(t.ADD),this.state=2663,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=2659,this.match(t.CONSTRAINT),this.state=2661,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=2660,s._name=this.uid())),this.state=2665,this.match(t.CHECK),this.state=2672,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,331,this.context)){case 1:this.state=2666,this.uid();break;case 2:this.state=2667,this.stringLiteral();break;case 3:this.state=2668,this.match(t.LR_BRACKET),this.state=2669,this.expression(0),this.state=2670,this.match(t.RR_BRACKET)}this.state=2675,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=2674,this.match(t.NOT)),this.state=2678,this.errorHandler.sync(this),e=this.tokenStream.LA(1),57===e&&(this.state=2677,this.match(t.ENFORCED));break;case 10:switch(s=new KM(s),this.enterOuterAlt(s,10),this.state=2680,this.match(t.ALTER),this.state=2685,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=2681,this.match(t.CONSTRAINT),this.state=2683,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=2682,this.constraintName())),this.state=2687,this.match(t.CHECK),this.state=2694,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,336,this.context)){case 1:this.state=2688,this.uid();break;case 2:this.state=2689,this.stringLiteral();break;case 3:this.state=2690,this.match(t.LR_BRACKET),this.state=2691,this.expression(0),this.state=2692,this.match(t.RR_BRACKET)}this.state=2697,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=2696,this.match(t.NOT)),this.state=2700,this.errorHandler.sync(this),e=this.tokenStream.LA(1),57===e&&(this.state=2699,this.match(t.ENFORCED));break;case 11:s=new jM(s),this.enterOuterAlt(s,11),this.state=2702,this.match(t.ADD),this.state=2707,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=2703,this.match(t.CONSTRAINT),this.state=2705,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=2704,s._name=this.uid())),this.state=2709,this.match(t.CHECK),this.state=2710,this.match(t.LR_BRACKET),this.state=2711,this.expression(0),this.state=2712,this.match(t.RR_BRACKET);break;case 12:s=new Rd(s),this.enterOuterAlt(s,12),this.state=2714,this.match(t.ALGORITHM),this.state=2716,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2715,this.match(t.EQUAL_SYMBOL)),this.state=2718,s._algType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||384===e||454===e||458===e?(this.errorHandler.reportMatch(this),this.consume()):s._algType=this.errorHandler.recoverInline(this);break;case 13:switch(s=new ed(s),this.enterOuterAlt(s,13),this.state=2719,this.match(t.ALTER),this.state=2721,this.errorHandler.sync(this),e=this.tokenStream.LA(1),28===e&&(this.state=2720,this.match(t.COLUMN)),this.state=2723,this.uid(),this.state=2729,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SET:this.state=2724,this.match(t.SET),this.state=2725,this.match(t.DEFAULT),this.state=2726,this.defaultValue();break;case t.DROP:this.state=2727,this.match(t.DROP),this.state=2728,this.match(t.DEFAULT);break;default:throw new Ei(this)}break;case 14:switch(s=new Ad(s),this.enterOuterAlt(s,14),this.state=2731,this.match(t.CHANGE),this.state=2733,this.errorHandler.sync(this),e=this.tokenStream.LA(1),28===e&&(this.state=2732,this.match(t.COLUMN)),this.state=2735,s._oldColumn=this.uid(),this.state=2736,s._newColumn=this.uid(),this.state=2737,this.columnDefinition(),this.state=2741,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FIRST:this.state=2738,this.match(t.FIRST);break;case t.AFTER:this.state=2739,this.match(t.AFTER),this.state=2740,s._afterColumn=this.uid();case t.EOF:case t.PARTITION:case t.COMMA:case t.SEMI:}break;case 15:s=new fM(s),this.enterOuterAlt(s,15),this.state=2743,this.match(t.RENAME),this.state=2744,this.match(t.COLUMN),this.state=2745,s._oldColumn=this.uid(),this.state=2746,this.match(t.TO),this.state=2747,s._newColumn=this.uid();break;case 16:s=new nd(s),this.enterOuterAlt(s,16),this.state=2749,this.match(t.LOCK),this.state=2751,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=2750,this.match(t.EQUAL_SYMBOL)),this.state=2753,s._lockType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||419===e||529===e||611===e?(this.errorHandler.reportMatch(this),this.consume()):s._lockType=this.errorHandler.recoverInline(this);break;case 17:switch(s=new rd(s),this.enterOuterAlt(s,17),this.state=2754,this.match(t.MODIFY),this.state=2756,this.errorHandler.sync(this),e=this.tokenStream.LA(1),28===e&&(this.state=2755,this.match(t.COLUMN)),this.state=2758,this.uid(),this.state=2759,this.columnDefinition(),this.state=2763,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FIRST:this.state=2760,this.match(t.FIRST);break;case t.AFTER:this.state=2761,this.match(t.AFTER),this.state=2762,this.uid();case t.EOF:case t.PARTITION:case t.COMMA:case t.SEMI:}break;case 18:s=new td(s),this.enterOuterAlt(s,18),this.state=2765,this.match(t.DROP),this.state=2767,this.errorHandler.sync(this),e=this.tokenStream.LA(1),28===e&&(this.state=2766,this.match(t.COLUMN)),this.state=2769,this.uid(),this.state=2771,this.errorHandler.sync(this),e=this.tokenStream.LA(1),144===e&&(this.state=2770,this.match(t.RESTRICT));break;case 19:s=new QM(s),this.enterOuterAlt(s,19),this.state=2773,this.match(t.DROP),this.state=2774,e=this.tokenStream.LA(1),26===e||30===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2775,this.constraintName();break;case 20:s=new cd(s),this.enterOuterAlt(s,20),this.state=2776,this.match(t.DROP),this.state=2777,this.match(t.PRIMARY),this.state=2778,this.match(t.KEY);break;case 21:s=new ld(s),this.enterOuterAlt(s,21),this.state=2779,this.match(t.DROP),this.state=2780,s._indexFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexFormat=this.errorHandler.recoverInline(this),this.state=2781,this.indexName();break;case 22:s=new bM(s),this.enterOuterAlt(s,22),this.state=2782,this.match(t.RENAME),this.state=2783,s._indexFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexFormat=this.errorHandler.recoverInline(this),this.state=2784,this.indexName(),this.state=2785,this.match(t.TO),this.state=2786,this.uid();break;case 23:switch(s=new vM(s),this.enterOuterAlt(s,23),this.state=2788,this.match(t.ALTER),this.state=2790,this.errorHandler.sync(this),e=this.tokenStream.LA(1),28===e&&(this.state=2789,this.match(t.COLUMN)),this.state=2792,this.uid(),this.state=2806,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,353,this.context)){case 1:switch(this.state=2793,this.match(t.SET),this.state=2794,this.match(t.DEFAULT),this.state=2800,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.START_NATIONAL_STRING_LITERAL:case t.STRING_LITERAL:case t.STRING_CHARSET_NAME:this.state=2795,this.stringLiteral();break;case t.LR_BRACKET:this.state=2796,this.match(t.LR_BRACKET),this.state=2797,this.expression(0),this.state=2798,this.match(t.RR_BRACKET);break;default:throw new Ei(this)}break;case 2:this.state=2802,this.match(t.SET),this.state=2803,e=this.tokenStream.LA(1),459===e||673===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case 3:this.state=2804,this.match(t.DROP),this.state=2805,this.match(t.DEFAULT)}break;case 24:s=new ZM(s),this.enterOuterAlt(s,24),this.state=2808,this.match(t.ALTER),this.state=2809,this.match(t.INDEX),this.state=2810,this.indexName(),this.state=2811,e=this.tokenStream.LA(1),459===e||673===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case 25:s=new qM(s),this.enterOuterAlt(s,25),this.state=2813,this.match(t.DROP),this.state=2814,this.match(t.FOREIGN),this.state=2815,this.match(t.KEY),this.state=2816,this.uid();break;case 26:s=new BM(s),this.enterOuterAlt(s,26),this.state=2817,this.match(t.DISABLE),this.state=2818,this.match(t.KEYS);break;case 27:s=new od(s),this.enterOuterAlt(s,27),this.state=2819,this.match(t.ENABLE),this.state=2820,this.match(t.KEYS);break;case 28:switch(s=new WM(s),this.enterOuterAlt(s,28),this.state=2821,this.match(t.RENAME),this.state=2823,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(12===e||175===e)&&(this.state=2822,s._renameFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),12===e||175===e?(this.errorHandler.reportMatch(this),this.consume()):s._renameFormat=this.errorHandler.recoverInline(this)),this.state=2827,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,355,this.context)){case 1:this.state=2825,this.uid();break;case 2:this.state=2826,this.fullId()}break;case 29:s=new Id(s),this.enterOuterAlt(s,29),this.state=2829,this.match(t.ORDER),this.state=2830,this.match(t.BY),this.state=2831,this.uidList();break;case 30:switch(s=new YM(s),this.enterOuterAlt(s,30),this.state=2832,this.match(t.CONVERT),this.state=2833,this.match(t.TO),this.state=2837,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CHARSET:this.state=2834,this.match(t.CHARSET);break;case t.CHARACTER:this.state=2835,this.match(t.CHARACTER),this.state=2836,this.match(t.SET);break;default:throw new Ei(this)}this.state=2839,this.charsetName(),this.state=2842,this.errorHandler.sync(this),e=this.tokenStream.LA(1),27===e&&(this.state=2840,this.match(t.COLLATE),this.state=2841,this.collationName());break;case 31:s=new yM(s),this.enterOuterAlt(s,31),this.state=2845,this.errorHandler.sync(this),e=this.tokenStream.LA(1),42===e&&(this.state=2844,this.match(t.DEFAULT)),this.state=2847,this.match(t.CHARACTER),this.state=2848,this.match(t.SET),this.state=2849,this.match(t.EQUAL_SYMBOL),this.state=2850,this.charsetName(),this.state=2854,this.errorHandler.sync(this),e=this.tokenStream.LA(1),27===e&&(this.state=2851,this.match(t.COLLATE),this.state=2852,this.match(t.EQUAL_SYMBOL),this.state=2853,this.collationName());break;case 32:s=new hd(s),this.enterOuterAlt(s,32),this.state=2856,this.match(t.DISCARD),this.state=2857,this.match(t.TABLESPACE);break;case 33:s=new VM(s),this.enterOuterAlt(s,33),this.state=2858,this.match(t.IMPORT),this.state=2859,this.match(t.TABLESPACE);break;case 34:s=new sd(s),this.enterOuterAlt(s,34),this.state=2860,this.match(t.FORCE);break;case 35:s=new Ed(s),this.enterOuterAlt(s,35),this.state=2861,s._validationFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),192===e||677===e?(this.errorHandler.reportMatch(this),this.consume()):s._validationFormat=this.errorHandler.recoverInline(this),this.state=2862,this.match(t.VALIDATION);break;case 36:for(s=new XM(s),this.enterOuterAlt(s,36),this.state=2863,this.match(t.ADD),this.state=2865,this.errorHandler.sync(this),e=this.tokenStream.LA(1),28===e&&(this.state=2864,this.match(t.COLUMN)),this.state=2867,this.match(t.LR_BRACKET),this.state=2868,this.createDefinition(),this.state=2873,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2869,this.match(t.COMMA),this.state=2870,this.createDefinition(),this.state=2875,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2876,this.match(t.RR_BRACKET);break;case 37:s=new zM(s),this.enterOuterAlt(s,37),this.state=2878,this.alterPartitionSpecification()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterPartitionSpecification(){let e,s=new ud(this.context,this.state);this.enterRule(s,148,t.RULE_alterPartitionSpecification);try{switch(this.state=2979,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ADD:for(s=new _d(s),this.enterOuterAlt(s,1),this.state=2881,this.match(t.ADD),this.state=2882,this.match(t.PARTITION),this.state=2883,this.match(t.LR_BRACKET),this.state=2884,this.partitionDefinition(),this.state=2889,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2885,this.match(t.COMMA),this.state=2886,this.partitionDefinition(),this.state=2891,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2892,this.match(t.RR_BRACKET);break;case t.DROP:s=new Ld(s),this.enterOuterAlt(s,2),this.state=2894,this.match(t.DROP),this.state=2895,this.match(t.PARTITION),this.state=2896,this.uidList();break;case t.DISCARD:switch(s=new Cd(s),this.enterOuterAlt(s,3),this.state=2897,this.match(t.DISCARD),this.state=2898,this.match(t.PARTITION),this.state=2901,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=2899,this.uidList();break;case t.ALL:this.state=2900,this.match(t.ALL);break;default:throw new Ei(this)}this.state=2903,this.match(t.TABLESPACE);break;case t.IMPORT:switch(s=new Nd(s),this.enterOuterAlt(s,4),this.state=2904,this.match(t.IMPORT),this.state=2905,this.match(t.PARTITION),this.state=2908,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=2906,this.uidList();break;case t.ALL:this.state=2907,this.match(t.ALL);break;default:throw new Ei(this)}this.state=2910,this.match(t.TABLESPACE);break;case t.TRUNCATE:switch(s=new xd(s),this.enterOuterAlt(s,5),this.state=2911,this.match(t.TRUNCATE),this.state=2912,this.match(t.PARTITION),this.state=2915,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=2913,this.uidList();break;case t.ALL:this.state=2914,this.match(t.ALL);break;default:throw new Ei(this)}break;case t.COALESCE:s=new Ud(s),this.enterOuterAlt(s,6),this.state=2917,this.match(t.COALESCE),this.state=2918,this.match(t.PARTITION),this.state=2919,this.decimalLiteral();break;case t.REORGANIZE:for(s=new md(s),this.enterOuterAlt(s,7),this.state=2920,this.match(t.REORGANIZE),this.state=2921,this.match(t.PARTITION),this.state=2922,this.uidList(),this.state=2923,this.match(t.INTO),this.state=2924,this.match(t.LR_BRACKET),this.state=2925,this.partitionDefinition(),this.state=2930,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=2926,this.match(t.COMMA),this.state=2927,this.partitionDefinition(),this.state=2932,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2933,this.match(t.RR_BRACKET);break;case t.EXCHANGE:s=new Hd(s),this.enterOuterAlt(s,8),this.state=2935,this.match(t.EXCHANGE),this.state=2936,this.match(t.PARTITION),this.state=2937,this.uid(),this.state=2938,this.match(t.WITH),this.state=2939,this.match(t.TABLE),this.state=2940,this.tableName(),this.state=2943,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(192===e||677===e)&&(this.state=2941,s._validationFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),192===e||677===e?(this.errorHandler.reportMatch(this),this.consume()):s._validationFormat=this.errorHandler.recoverInline(this),this.state=2942,this.match(t.VALIDATION));break;case t.ANALYZE:switch(s=new Dd(s),this.enterOuterAlt(s,9),this.state=2945,this.match(t.ANALYZE),this.state=2946,this.match(t.PARTITION),this.state=2949,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=2947,this.uidList();break;case t.ALL:this.state=2948,this.match(t.ALL);break;default:throw new Ei(this)}break;case t.CHECK:switch(s=new dd(s),this.enterOuterAlt(s,10),this.state=2951,this.match(t.CHECK),this.state=2952,this.match(t.PARTITION),this.state=2955,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=2953,this.uidList();break;case t.ALL:this.state=2954,this.match(t.ALL);break;default:throw new Ei(this)}break;case t.OPTIMIZE:switch(s=new Md(s),this.enterOuterAlt(s,11),this.state=2957,this.match(t.OPTIMIZE),this.state=2958,this.match(t.PARTITION),this.state=2961,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=2959,this.uidList();break;case t.ALL:this.state=2960,this.match(t.ALL);break;default:throw new Ei(this)}break;case t.REBUILD:switch(s=new pd(s),this.enterOuterAlt(s,12),this.state=2963,this.match(t.REBUILD),this.state=2964,this.match(t.PARTITION),this.state=2967,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=2965,this.uidList();break;case t.ALL:this.state=2966,this.match(t.ALL);break;default:throw new Ei(this)}break;case t.REPAIR:switch(s=new kd(s),this.enterOuterAlt(s,13),this.state=2969,this.match(t.REPAIR),this.state=2970,this.match(t.PARTITION),this.state=2973,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=2971,this.uidList();break;case t.ALL:this.state=2972,this.match(t.ALL);break;default:throw new Ei(this)}break;case t.REMOVE:s=new Pd(s),this.enterOuterAlt(s,14),this.state=2975,this.match(t.REMOVE),this.state=2976,this.match(t.PARTITIONING);break;case t.UPGRADE:s=new gd(s),this.enterOuterAlt(s,15),this.state=2977,this.match(t.UPGRADE),this.state=2978,this.match(t.PARTITIONING);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dropDatabase(){let e,s=new Gd(this.context,this.state);this.enterRule(s,150,t.RULE_dropDatabase);try{if(this.enterOuterAlt(s,1),1===(this.state=2981,this.match(t.DROP),this.state=2982,s._dbFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),39===e||150===e?(this.errorHandler.reportMatch(this),this.consume()):s._dbFormat=this.errorHandler.recoverInline(this),this.state=2984,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,375,this.context)))this.state=2983,this.ifExists();this.state=2986,this.databaseName()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dropEvent(){let e=new Fd(this.context,this.state);this.enterRule(e,152,t.RULE_dropEvent);try{if(this.enterOuterAlt(e,1),1===(this.state=2988,this.match(t.DROP),this.state=2989,this.match(t.EVENT),this.state=2991,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,376,this.context)))this.state=2990,this.ifExists();this.state=2993,this.fullId()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropIndex(){let e,s=new vd(this.context,this.state);this.enterRule(s,154,t.RULE_dropIndex);try{if(this.enterOuterAlt(s,1),1===(this.state=2995,this.match(t.DROP),this.state=2996,this.match(t.INDEX),this.state=2998,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,377,this.context)))this.state=2997,s._intimeAction=this.tokenStream.LT(1),e=this.tokenStream.LA(1),531===e||537===e?(this.errorHandler.reportMatch(this),this.consume()):s._intimeAction=this.errorHandler.recoverInline(this);for(this.state=3e3,this.indexName(),this.state=3001,this.match(t.ON),this.state=3002,this.tableName(),this.state=3015,this.errorHandler.sync(this),e=this.tokenStream.LA(1);103===e||336===e;){switch(this.state=3013,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALGORITHM:this.state=3003,this.match(t.ALGORITHM),this.state=3005,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=3004,this.match(t.EQUAL_SYMBOL)),this.state=3007,s._algType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||384===e||454===e?(this.errorHandler.reportMatch(this),this.consume()):s._algType=this.errorHandler.recoverInline(this);break;case t.LOCK:this.state=3008,this.match(t.LOCK),this.state=3010,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=3009,this.match(t.EQUAL_SYMBOL)),this.state=3012,s._lockType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),42===e||419===e||529===e||611===e?(this.errorHandler.reportMatch(this),this.consume()):s._lockType=this.errorHandler.recoverInline(this);break;default:throw new Ei(this)}this.state=3017,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dropLogfileGroup(){let e=new Bd(this.context,this.state);this.enterRule(e,156,t.RULE_dropLogfileGroup);try{this.enterOuterAlt(e,1),this.state=3018,this.match(t.DROP),this.state=3019,this.match(t.LOGFILE),this.state=3020,this.match(t.GROUP),this.state=3021,this.uid(),this.state=3022,this.match(t.ENGINE),this.state=3023,this.match(t.EQUAL_SYMBOL),this.state=3024,this.engineName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropProcedure(){let e=new yd(this.context,this.state);this.enterRule(e,158,t.RULE_dropProcedure);try{if(this.enterOuterAlt(e,1),1===(this.state=3026,this.match(t.DROP),this.state=3027,this.match(t.PROCEDURE),this.state=3029,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,382,this.context)))this.state=3028,this.ifExists();this.state=3031,this.fullId()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropFunction(){let e=new fd(this.context,this.state);this.enterRule(e,160,t.RULE_dropFunction);try{if(this.enterOuterAlt(e,1),1===(this.state=3033,this.match(t.DROP),this.state=3034,this.match(t.FUNCTION),this.state=3036,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,383,this.context)))this.state=3035,this.ifExists();this.state=3038,this.fullId()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropServer(){let e=new Yd(this.context,this.state);this.enterRule(e,162,t.RULE_dropServer);try{if(this.enterOuterAlt(e,1),1===(this.state=3040,this.match(t.DROP),this.state=3041,this.match(t.SERVER),this.state=3043,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,384,this.context)))this.state=3042,this.ifExists();this.state=3045,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropTable(){let e,s=new wd(this.context,this.state);this.enterRule(s,164,t.RULE_dropTable);try{if(this.enterOuterAlt(s,1),1===(this.state=3047,this.match(t.DROP),this.state=3049,this.errorHandler.sync(this),e=this.tokenStream.LA(1),649===e&&(this.state=3048,this.match(t.TEMPORARY)),this.state=3051,this.match(t.TABLE),this.state=3053,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,386,this.context)))this.state=3052,this.ifExists();this.state=3055,this.tables(),this.state=3057,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(21===e||144===e)&&(this.state=3056,s._dropType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),21===e||144===e?(this.errorHandler.reportMatch(this),this.consume()):s._dropType=this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dropTablespace(){let e,s=new bd(this.context,this.state);this.enterRule(s,166,t.RULE_dropTablespace);try{this.enterOuterAlt(s,1),this.state=3059,this.match(t.DROP),this.state=3060,this.match(t.TABLESPACE),this.state=3061,this.uid(),this.state=3067,this.errorHandler.sync(this),e=this.tokenStream.LA(1),409===e&&(this.state=3062,this.match(t.ENGINE),this.state=3064,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1124===e&&(this.state=3063,this.match(t.EQUAL_SYMBOL)),this.state=3066,this.engineName())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dropTrigger(){let e=new Wd(this.context,this.state);this.enterRule(e,168,t.RULE_dropTrigger);try{if(this.enterOuterAlt(e,1),1===(this.state=3069,this.match(t.DROP),this.state=3070,this.match(t.TRIGGER),this.state=3072,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,390,this.context)))this.state=3071,this.ifExists();this.state=3074,this.triggerName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dropView(){let e,s=new Vd(this.context,this.state);this.enterRule(s,170,t.RULE_dropView);try{if(this.enterOuterAlt(s,1),1===(this.state=3076,this.match(t.DROP),this.state=3077,this.match(t.VIEW),this.state=3079,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,391,this.context)))this.state=3078,this.ifExists();for(this.state=3081,this.fullId(),this.state=3086,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3082,this.match(t.COMMA),this.state=3083,this.fullId(),this.state=3088,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3090,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(21===e||144===e)&&(this.state=3089,s._dropType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),21===e||144===e?(this.errorHandler.reportMatch(this),this.consume()):s._dropType=this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dropRole(){let e=new Xd(this.context,this.state);this.enterRule(e,172,t.RULE_dropRole);try{if(this.enterOuterAlt(e,1),1===(this.state=3092,this.match(t.DROP),this.state=3093,this.match(t.ROLE),this.state=3095,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,394,this.context)))this.state=3094,this.ifExists();this.state=3097,this.roleNameList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}setRole(){let e=new Kd(this.context,this.state);this.enterRule(e,174,t.RULE_setRole);try{switch(this.state=3112,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,396,this.context)){case 1:switch(this.enterOuterAlt(e,1),this.state=3099,this.match(t.SET),this.state=3100,this.match(t.DEFAULT),this.state=3101,this.match(t.ROLE),this.state=3105,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,395,this.context)){case 1:this.state=3102,this.match(t.NONE);break;case 2:this.state=3103,this.match(t.ALL);break;case 3:this.state=3104,this.roleNameList()}this.state=3107,this.match(t.TO),this.state=3108,this.userNameList();break;case 2:this.enterOuterAlt(e,2),this.state=3109,this.match(t.SET),this.state=3110,this.match(t.ROLE),this.state=3111,this.roleOption()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}renameTable(){let e,s=new Qd(this.context,this.state);this.enterRule(s,176,t.RULE_renameTable);try{for(this.enterOuterAlt(s,1),this.state=3114,this.match(t.RENAME),this.state=3115,this.match(t.TABLE),this.state=3116,this.renameTableClause(),this.state=3121,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3117,this.match(t.COMMA),this.state=3118,this.renameTableClause(),this.state=3123,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}renameTableClause(){let e=new Jd(this.context,this.state);this.enterRule(e,178,t.RULE_renameTableClause);try{this.enterOuterAlt(e,1),this.state=3124,this.tableName(),this.state=3125,this.match(t.TO),this.state=3126,this.tableName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}truncateTable(){let e,s=new Zd(this.context,this.state);this.enterRule(s,180,t.RULE_truncateTable);try{this.enterOuterAlt(s,1),this.state=3128,this.match(t.TRUNCATE),this.state=3130,this.errorHandler.sync(this),e=this.tokenStream.LA(1),172===e&&(this.state=3129,this.match(t.TABLE)),this.state=3132,this.tableName()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}callStatement(){let e,s=new qd(this.context,this.state);this.enterRule(s,182,t.RULE_callStatement);try{if(this.enterOuterAlt(s,1),this.state=3134,this.match(t.CALL),this.state=3135,this.fullId(),this.state=3142,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e){switch(this.state=3136,this.match(t.LR_BRACKET),this.state=3139,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,399,this.context)){case 1:this.state=3137,this.constants();break;case 2:this.state=3138,this.expressions()}this.state=3141,this.match(t.RR_BRACKET)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}deleteStatement(){let e=new jd(this.context,this.state);this.enterRule(e,184,t.RULE_deleteStatement);try{switch(this.state=3146,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,401,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3144,this.singleDeleteStatement();break;case 2:this.enterOuterAlt(e,2),this.state=3145,this.multipleDeleteStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}doStatement(){let e=new zd(this.context,this.state);this.enterRule(e,186,t.RULE_doStatement);try{this.enterOuterAlt(e,1),this.state=3148,this.match(t.DO),this.state=3149,this.expressions()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}handlerStatement(){let e=new $d(this.context,this.state);this.enterRule(e,188,t.RULE_handlerStatement);try{switch(this.state=3155,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,402,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3151,this.handlerOpenStatement();break;case 2:this.enterOuterAlt(e,2),this.state=3152,this.handlerReadIndexStatement();break;case 3:this.enterOuterAlt(e,3),this.state=3153,this.handlerReadStatement();break;case 4:this.enterOuterAlt(e,4),this.state=3154,this.handlerCloseStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}insertStatement(){let e,s=new tU(this.context,this.state);this.enterRule(s,190,t.RULE_insertStatement);try{switch(this.enterOuterAlt(s,1),this.state=3157,this.match(t.INSERT),this.state=3159,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(43===e||75===e||106===e)&&(this.state=3158,s._priority=this.tokenStream.LT(1),e=this.tokenStream.LA(1),43===e||75===e||106===e?(this.errorHandler.reportMatch(this),this.consume()):s._priority=this.errorHandler.recoverInline(this)),this.state=3162,this.errorHandler.sync(this),e=this.tokenStream.LA(1),78===e&&(this.state=3161,this.match(t.IGNORE)),this.state=3165,this.errorHandler.sync(this),e=this.tokenStream.LA(1),87===e&&(this.state=3164,this.match(t.INTO)),this.state=3167,this.tableName(),this.state=3174,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=3168,this.match(t.PARTITION),this.state=3169,this.match(t.LR_BRACKET),this.state=3171,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=3170,s._partitions=this.uidList()),this.state=3173,this.match(t.RR_BRACKET)),this.state=3199,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SELECT:case t.VALUES:case t.VALUE:case t.LR_BRACKET:if(1===(this.state=3181,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,409,this.context))){if(1===(this.state=3176,this.match(t.LR_BRACKET),this.state=3178,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,408,this.context)))this.state=3177,s._columns=this.fullColumnNameList();this.state=3180,this.match(t.RR_BRACKET)}this.state=3183,this.insertStatementValue(),this.state=3188,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537155584||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=3185,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=3184,this.match(t.AS)),this.state=3187,this.uid());break;case t.SET:for(this.state=3190,this.match(t.SET),this.state=3191,s._setFirst=this.updatedElement(),this.state=3196,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3192,this.match(t.COMMA),this.state=3193,s._updatedElement=this.updatedElement(),s._setElements.push(s._updatedElement),this.state=3198,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;default:throw new Ei(this)}if(this.state=3213,this.errorHandler.sync(this),e=this.tokenStream.LA(1),118===e)for(this.state=3201,this.match(t.ON),this.state=3202,this.match(t.DUPLICATE),this.state=3203,this.match(t.KEY),this.state=3204,this.match(t.UPDATE),this.state=3205,s._duplicatedFirst=this.updatedElement(),this.state=3210,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3206,this.match(t.COMMA),this.state=3207,s._updatedElement=this.updatedElement(),s._duplicatedElements.push(s._updatedElement),this.state=3212,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}loadDataStatement(){let e,s=new eU(this.context,this.state);this.enterRule(s,192,t.RULE_loadDataStatement);try{if(this.enterOuterAlt(s,1),this.state=3215,this.match(t.LOAD),this.state=3216,this.match(t.DATA),this.state=3218,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(106===e||374===e)&&(this.state=3217,s._priority=this.tokenStream.LT(1),e=this.tokenStream.LA(1),106===e||374===e?(this.errorHandler.reportMatch(this),this.consume()):s._priority=this.errorHandler.recoverInline(this)),this.state=3221,this.errorHandler.sync(this),e=this.tokenStream.LA(1),474===e&&(this.state=3220,this.match(t.LOCAL)),this.state=3223,this.match(t.INFILE),this.state=3224,s._filename=this.match(t.STRING_LITERAL),this.state=3226,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(78===e||141===e)&&(this.state=3225,s._violation=this.tokenStream.LT(1),e=this.tokenStream.LA(1),78===e||141===e?(this.errorHandler.reportMatch(this),this.consume()):s._violation=this.errorHandler.recoverInline(this)),this.state=3228,this.match(t.INTO),this.state=3229,this.match(t.TABLE),this.state=3230,this.tableName(),this.state=3236,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=3231,this.match(t.PARTITION),this.state=3232,this.match(t.LR_BRACKET),this.state=3233,this.uidList(),this.state=3234,this.match(t.RR_BRACKET)),this.state=3241,this.errorHandler.sync(this),e=this.tokenStream.LA(1),25===e&&(this.state=3238,this.match(t.CHARACTER),this.state=3239,this.match(t.SET),this.state=3240,s._charset=this.charsetName()),this.state=3249,this.errorHandler.sync(this),e=this.tokenStream.LA(1),365===e||427===e){this.state=3243,s._fieldsFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),365===e||427===e?(this.errorHandler.reportMatch(this),this.consume()):s._fieldsFormat=this.errorHandler.recoverInline(this),this.state=3245,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=3244,this.selectFieldsInto(),this.state=3247,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(56===e||58===e||122===e||173===e)}if(this.state=3257,this.errorHandler.sync(this),e=this.tokenStream.LA(1),101===e){this.state=3251,this.match(t.LINES),this.state=3253,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=3252,this.selectLinesInto(),this.state=3255,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(169===e||173===e)}if(this.state=3263,this.errorHandler.sync(this),e=this.tokenStream.LA(1),78===e&&(this.state=3259,this.match(t.IGNORE),this.state=3260,this.decimalLiteral(),this.state=3261,s._linesFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),101===e||601===e?(this.errorHandler.reportMatch(this),this.consume()):s._linesFormat=this.errorHandler.recoverInline(this)),this.state=3276,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e){for(this.state=3265,this.match(t.LR_BRACKET),this.state=3266,this.assignmentField(),this.state=3271,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3267,this.match(t.COMMA),this.state=3268,this.assignmentField(),this.state=3273,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3274,this.match(t.RR_BRACKET)}if(this.state=3287,this.errorHandler.sync(this),e=this.tokenStream.LA(1),153===e)for(this.state=3278,this.match(t.SET),this.state=3279,this.updatedElement(),this.state=3284,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3280,this.match(t.COMMA),this.state=3281,this.updatedElement(),this.state=3286,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}loadXmlStatement(){let e,s=new sU(this.context,this.state);this.enterRule(s,194,t.RULE_loadXmlStatement);try{if(this.enterOuterAlt(s,1),this.state=3289,this.match(t.LOAD),this.state=3290,this.match(t.XML),this.state=3292,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(106===e||374===e)&&(this.state=3291,s._priority=this.tokenStream.LT(1),e=this.tokenStream.LA(1),106===e||374===e?(this.errorHandler.reportMatch(this),this.consume()):s._priority=this.errorHandler.recoverInline(this)),this.state=3295,this.errorHandler.sync(this),e=this.tokenStream.LA(1),474===e&&(this.state=3294,this.match(t.LOCAL)),this.state=3297,this.match(t.INFILE),this.state=3298,s._filename=this.match(t.STRING_LITERAL),this.state=3300,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(78===e||141===e)&&(this.state=3299,s._violation=this.tokenStream.LT(1),e=this.tokenStream.LA(1),78===e||141===e?(this.errorHandler.reportMatch(this),this.consume()):s._violation=this.errorHandler.recoverInline(this)),this.state=3302,this.match(t.INTO),this.state=3303,this.match(t.TABLE),this.state=3304,this.tableName(),this.state=3308,this.errorHandler.sync(this),e=this.tokenStream.LA(1),25===e&&(this.state=3305,this.match(t.CHARACTER),this.state=3306,this.match(t.SET),this.state=3307,s._charset=this.charsetName()),this.state=3316,this.errorHandler.sync(this),e=this.tokenStream.LA(1),601===e&&(this.state=3310,this.match(t.ROWS),this.state=3311,this.match(t.IDENTIFIED),this.state=3312,this.match(t.BY),this.state=3313,this.match(t.LESS_SYMBOL),this.state=3314,s._tag=this.match(t.STRING_LITERAL),this.state=3315,this.match(t.GREATER_SYMBOL)),this.state=3322,this.errorHandler.sync(this),e=this.tokenStream.LA(1),78===e&&(this.state=3318,this.match(t.IGNORE),this.state=3319,this.decimalLiteral(),this.state=3320,s._linesFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),101===e||601===e?(this.errorHandler.reportMatch(this),this.consume()):s._linesFormat=this.errorHandler.recoverInline(this)),this.state=3335,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e){for(this.state=3324,this.match(t.LR_BRACKET),this.state=3325,this.assignmentField(),this.state=3330,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3326,this.match(t.COMMA),this.state=3327,this.assignmentField(),this.state=3332,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3333,this.match(t.RR_BRACKET)}if(this.state=3346,this.errorHandler.sync(this),e=this.tokenStream.LA(1),153===e)for(this.state=3337,this.match(t.SET),this.state=3338,this.updatedElement(),this.state=3343,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3339,this.match(t.COMMA),this.state=3340,this.updatedElement(),this.state=3345,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}replaceStatement(){let e,s=new aU(this.context,this.state);this.enterRule(s,196,t.RULE_replaceStatement);try{switch(this.enterOuterAlt(s,1),this.state=3348,this.match(t.REPLACE),this.state=3350,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(43===e||106===e)&&(this.state=3349,s._priority=this.tokenStream.LT(1),e=this.tokenStream.LA(1),43===e||106===e?(this.errorHandler.reportMatch(this),this.consume()):s._priority=this.errorHandler.recoverInline(this)),this.state=3353,this.errorHandler.sync(this),e=this.tokenStream.LA(1),87===e&&(this.state=3352,this.match(t.INTO)),this.state=3355,this.tableName(),this.state=3361,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=3356,this.match(t.PARTITION),this.state=3357,this.match(t.LR_BRACKET),this.state=3358,s._partitions=this.uidList(),this.state=3359,this.match(t.RR_BRACKET)),this.state=3379,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SELECT:case t.VALUES:case t.VALUE:case t.LR_BRACKET:if(1===(this.state=3367,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,443,this.context)))this.state=3363,this.match(t.LR_BRACKET),this.state=3364,s._columns=this.uidList(),this.state=3365,this.match(t.RR_BRACKET);this.state=3369,this.insertStatementValue();break;case t.SET:for(this.state=3370,this.match(t.SET),this.state=3371,s._setFirst=this.updatedElement(),this.state=3376,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3372,this.match(t.COMMA),this.state=3373,s._updatedElement=this.updatedElement(),s._setElements.push(s._updatedElement),this.state=3378,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}selectStatement(){let e,s=new rU(this.context,this.state);this.enterRule(s,198,t.RULE_selectStatement);try{let a;switch(this.state=3446,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,463,this.context)){case 1:s=new nU(s),this.enterOuterAlt(s,1),this.state=3381,this.querySpecification(),this.state=3383,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(65===e||103===e)&&(this.state=3382,this.lockClause());break;case 2:s=new hU(s),this.enterOuterAlt(s,2),this.state=3385,this.queryExpression(),this.state=3387,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(65===e||103===e)&&(this.state=3386,this.lockClause());break;case 3:switch(s=new iU(s),this.enterOuterAlt(s,3),this.state=3391,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SELECT:this.state=3389,this.querySpecificationNointo();break;case t.LR_BRACKET:this.state=3390,this.queryExpressionNointo();break;default:throw new Ei(this)}this.state=3394,this.errorHandler.sync(this),a=1;do{if(1!==a)throw new Ei(this);this.state=3393,this.unionStatement(),this.state=3396,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,449,this.context)}while(2!==a&&a!==ja.INVALID_ALT_NUMBER);if(this.state=3406,this.errorHandler.sync(this),e=this.tokenStream.LA(1),180===e)switch(this.state=3398,this.match(t.UNION),this.state=3400,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(6===e||49===e)&&(this.state=3399,s._unionType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),6===e||49===e?(this.errorHandler.reportMatch(this),this.consume()):s._unionType=this.errorHandler.recoverInline(this)),this.state=3404,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SELECT:this.state=3402,this.querySpecification();break;case t.LR_BRACKET:this.state=3403,this.queryExpression();break;default:throw new Ei(this)}if(1===(this.state=3409,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,453,this.context)))this.state=3408,this.orderByClause();this.state=3412,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e&&(this.state=3411,this.limitClause()),this.state=3415,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(65===e||103===e)&&(this.state=3414,this.lockClause());break;case 4:s=new cU(s),this.enterOuterAlt(s,4),this.state=3417,this.queryExpressionNointo(),this.state=3419,this.errorHandler.sync(this),a=1;do{if(1!==a)throw new Ei(this);this.state=3418,this.unionParenthesis(),this.state=3421,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,456,this.context)}while(2!==a&&a!==ja.INVALID_ALT_NUMBER);if(1===(this.state=3428,this.errorHandler.sync(this),e=this.tokenStream.LA(1),180===e&&(this.state=3423,this.match(t.UNION),this.state=3425,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(6===e||49===e)&&(this.state=3424,s._unionType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),6===e||49===e?(this.errorHandler.reportMatch(this),this.consume()):s._unionType=this.errorHandler.recoverInline(this)),this.state=3427,this.queryExpression()),this.state=3431,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,459,this.context)))this.state=3430,this.orderByClause();this.state=3434,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e&&(this.state=3433,this.limitClause()),this.state=3437,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(65===e||103===e)&&(this.state=3436,this.lockClause());break;case 5:s=new EU(s),this.enterOuterAlt(s,5),this.state=3439,this.querySpecificationNointo(),this.state=3442,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=3440,this.match(t.COMMA),this.state=3441,this.lateralStatement(),this.state=3444,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(1135===e)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}updateStatement(){let e=new TU(this.context,this.state);this.enterRule(e,200,t.RULE_updateStatement);try{switch(this.state=3450,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,464,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3448,this.singleUpdateStatement();break;case 2:this.enterOuterAlt(e,2),this.state=3449,this.multipleUpdateStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}valuesStatement(){let e,s=new oU(this.context,this.state);this.enterRule(s,202,t.RULE_valuesStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=3452,this.match(t.VALUES),this.state=3453,this.match(t.LR_BRACKET),this.state=3455,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,465,this.context)))this.state=3454,this.expressionsWithDefaults();for(this.state=3457,this.match(t.RR_BRACKET),this.state=3466,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;){if(1===(this.state=3458,this.match(t.COMMA),this.state=3459,this.match(t.LR_BRACKET),this.state=3461,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,466,this.context)))this.state=3460,this.expressionsWithDefaults();this.state=3463,this.match(t.RR_BRACKET),this.state=3468,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}insertStatementValue(){let e,s=new RU(this.context,this.state);this.enterRule(s,204,t.RULE_insertStatementValue);try{switch(this.state=3487,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SELECT:case t.LR_BRACKET:this.enterOuterAlt(s,1),this.state=3469,this.selectStatement();break;case t.VALUES:case t.VALUE:if(this.enterOuterAlt(s,2),1===(this.state=3470,s._insertFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),188===e||669===e?(this.errorHandler.reportMatch(this),this.consume()):s._insertFormat=this.errorHandler.recoverInline(this),this.state=3471,this.match(t.LR_BRACKET),this.state=3473,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,468,this.context)))this.state=3472,this.expressionsWithDefaults();for(this.state=3475,this.match(t.RR_BRACKET),this.state=3484,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;){if(1===(this.state=3476,this.match(t.COMMA),this.state=3477,this.match(t.LR_BRACKET),this.state=3479,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,469,this.context)))this.state=3478,this.expressionsWithDefaults();this.state=3481,this.match(t.RR_BRACKET),this.state=3486,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}updatedElement(){let e=new AU(this.context,this.state);this.enterRule(e,206,t.RULE_updatedElement);try{switch(this.enterOuterAlt(e,1),this.state=3489,this.fullColumnName(),this.state=3490,this.match(t.EQUAL_SYMBOL),this.state=3493,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,472,this.context)){case 1:this.state=3491,this.expression(0);break;case 2:this.state=3492,this.match(t.DEFAULT)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}assignmentField(){let e=new SU(this.context,this.state);this.enterRule(e,208,t.RULE_assignmentField);try{switch(this.state=3497,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.enterOuterAlt(e,1),this.state=3495,this.uid();break;case t.LOCAL_ID:this.enterOuterAlt(e,2),this.state=3496,this.match(t.LOCAL_ID);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}lockClause(){let e=new lU(this.context,this.state);this.enterRule(e,210,t.RULE_lockClause);try{switch(this.state=3505,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:this.enterOuterAlt(e,1),this.state=3499,this.match(t.FOR),this.state=3500,this.match(t.UPDATE);break;case t.LOCK:this.enterOuterAlt(e,2),this.state=3501,this.match(t.LOCK),this.state=3502,this.match(t.IN),this.state=3503,this.match(t.SHARE),this.state=3504,this.match(t.MODE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}singleDeleteStatement(){let e,s=new OU(this.context,this.state);this.enterRule(s,212,t.RULE_singleDeleteStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=3507,this.match(t.DELETE),this.state=3509,this.errorHandler.sync(this),e=this.tokenStream.LA(1),106===e&&(this.state=3508,s._priority=this.match(t.LOW_PRIORITY)),this.state=3512,this.errorHandler.sync(this),e=this.tokenStream.LA(1),568===e&&(this.state=3511,this.match(t.QUICK)),this.state=3515,this.errorHandler.sync(this),e=this.tokenStream.LA(1),78===e&&(this.state=3514,this.match(t.IGNORE)),this.state=3517,this.match(t.FROM),this.state=3518,this.tableName(),this.state=3523,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,479,this.context)))this.state=3520,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=3519,this.match(t.AS)),this.state=3522,this.uid();this.state=3530,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=3525,this.match(t.PARTITION),this.state=3526,this.match(t.LR_BRACKET),this.state=3527,this.uidList(),this.state=3528,this.match(t.RR_BRACKET)),this.state=3534,this.errorHandler.sync(this),e=this.tokenStream.LA(1),190===e&&(this.state=3532,this.match(t.WHERE),this.state=3533,this.expression(0)),this.state=3537,this.errorHandler.sync(this),e=this.tokenStream.LA(1),124===e&&(this.state=3536,this.orderByClause()),this.state=3541,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e&&(this.state=3539,this.match(t.LIMIT),this.state=3540,this.limitClauseAtom())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}multipleDeleteStatement(){let e,s=new IU(this.context,this.state);this.enterRule(s,214,t.RULE_multipleDeleteStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=3543,this.match(t.DELETE),this.state=3545,this.errorHandler.sync(this),e=this.tokenStream.LA(1),106===e&&(this.state=3544,s._priority=this.match(t.LOW_PRIORITY)),this.state=3548,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,485,this.context)))this.state=3547,this.match(t.QUICK);switch(this.state=3551,this.errorHandler.sync(this),e=this.tokenStream.LA(1),78===e&&(this.state=3550,this.match(t.IGNORE)),this.state=3592,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:for(this.state=3553,this.tableName(),this.state=3556,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1132===e&&(this.state=3554,this.match(t.DOT),this.state=3555,this.match(t.STAR)),this.state=3566,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3558,this.match(t.COMMA),this.state=3559,this.tableName(),this.state=3562,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1132===e&&(this.state=3560,this.match(t.DOT),this.state=3561,this.match(t.STAR)),this.state=3568,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3569,this.match(t.FROM),this.state=3570,this.tableSources();break;case t.FROM:for(this.state=3572,this.match(t.FROM),this.state=3573,this.tableName(),this.state=3576,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1132===e&&(this.state=3574,this.match(t.DOT),this.state=3575,this.match(t.STAR)),this.state=3586,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3578,this.match(t.COMMA),this.state=3579,this.tableName(),this.state=3582,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1132===e&&(this.state=3580,this.match(t.DOT),this.state=3581,this.match(t.STAR)),this.state=3588,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3589,this.match(t.USING),this.state=3590,this.tableSources();break;default:throw new Ei(this)}this.state=3596,this.errorHandler.sync(this),e=this.tokenStream.LA(1),190===e&&(this.state=3594,this.match(t.WHERE),this.state=3595,this.expression(0))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}handlerOpenStatement(){let e,s=new uU(this.context,this.state);this.enterRule(s,216,t.RULE_handlerOpenStatement);try{this.enterOuterAlt(s,1),this.state=3598,this.match(t.HANDLER),this.state=3599,this.tableName(),this.state=3600,this.match(t.OPEN),this.state=3605,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537155584||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=3602,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=3601,this.match(t.AS)),this.state=3604,this.uid())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}handlerReadIndexStatement(){let e,s=new NU(this.context,this.state);this.enterRule(s,218,t.RULE_handlerReadIndexStatement);try{switch(this.enterOuterAlt(s,1),this.state=3607,this.match(t.HANDLER),this.state=3608,this.tableName(),this.state=3609,this.match(t.READ),this.state=3610,s._index=this.uid(),this.state=3617,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EQUAL_SYMBOL:case t.GREATER_SYMBOL:case t.LESS_SYMBOL:case t.EXCLAMATION_SYMBOL:this.state=3611,this.comparisonOperator(),this.state=3612,this.match(t.LR_BRACKET),this.state=3613,this.constants(),this.state=3614,this.match(t.RR_BRACKET);break;case t.FIRST:case t.LAST:case t.NEXT:case t.PREV:this.state=3616,s._moveOrder=this.tokenStream.LT(1),e=this.tokenStream.LA(1),430===e||469===e||520===e||562===e?(this.errorHandler.reportMatch(this),this.consume()):s._moveOrder=this.errorHandler.recoverInline(this);break;default:throw new Ei(this)}this.state=3621,this.errorHandler.sync(this),e=this.tokenStream.LA(1),190===e&&(this.state=3619,this.match(t.WHERE),this.state=3620,this.expression(0)),this.state=3625,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e&&(this.state=3623,this.match(t.LIMIT),this.state=3624,this.limitClauseAtom())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}handlerReadStatement(){let e,s=new LU(this.context,this.state);this.enterRule(s,220,t.RULE_handlerReadStatement);try{this.enterOuterAlt(s,1),this.state=3627,this.match(t.HANDLER),this.state=3628,this.tableName(),this.state=3629,this.match(t.READ),this.state=3630,s._moveOrder=this.tokenStream.LT(1),e=this.tokenStream.LA(1),430===e||520===e?(this.errorHandler.reportMatch(this),this.consume()):s._moveOrder=this.errorHandler.recoverInline(this),this.state=3633,this.errorHandler.sync(this),e=this.tokenStream.LA(1),190===e&&(this.state=3631,this.match(t.WHERE),this.state=3632,this.expression(0)),this.state=3637,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e&&(this.state=3635,this.match(t.LIMIT),this.state=3636,this.limitClauseAtom())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}handlerCloseStatement(){let e=new CU(this.context,this.state);this.enterRule(e,222,t.RULE_handlerCloseStatement);try{this.enterOuterAlt(e,1),this.state=3639,this.match(t.HANDLER),this.state=3640,this.tableName(),this.state=3641,this.match(t.CLOSE)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}singleUpdateStatement(){let e,s=new _U(this.context,this.state);this.enterRule(s,224,t.RULE_singleUpdateStatement);try{for(this.enterOuterAlt(s,1),this.state=3643,this.match(t.UPDATE),this.state=3645,this.errorHandler.sync(this),e=this.tokenStream.LA(1),106===e&&(this.state=3644,s._priority=this.match(t.LOW_PRIORITY)),this.state=3648,this.errorHandler.sync(this),e=this.tokenStream.LA(1),78===e&&(this.state=3647,this.match(t.IGNORE)),this.state=3650,this.tableName(),this.state=3655,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537155584||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=3652,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=3651,this.match(t.AS)),this.state=3654,this.uid()),this.state=3657,this.match(t.SET),this.state=3658,this.updatedElement(),this.state=3663,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3659,this.match(t.COMMA),this.state=3660,this.updatedElement(),this.state=3665,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3668,this.errorHandler.sync(this),e=this.tokenStream.LA(1),190===e&&(this.state=3666,this.match(t.WHERE),this.state=3667,this.expression(0)),this.state=3671,this.errorHandler.sync(this),e=this.tokenStream.LA(1),124===e&&(this.state=3670,this.orderByClause()),this.state=3674,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e&&(this.state=3673,this.limitClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}multipleUpdateStatement(){let e,s=new PU(this.context,this.state);this.enterRule(s,226,t.RULE_multipleUpdateStatement);try{for(this.enterOuterAlt(s,1),this.state=3676,this.match(t.UPDATE),this.state=3678,this.errorHandler.sync(this),e=this.tokenStream.LA(1),106===e&&(this.state=3677,s._priority=this.match(t.LOW_PRIORITY)),this.state=3681,this.errorHandler.sync(this),e=this.tokenStream.LA(1),78===e&&(this.state=3680,this.match(t.IGNORE)),this.state=3683,this.tableNames(),this.state=3684,this.match(t.SET),this.state=3685,this.updatedElement(),this.state=3690,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=3686,this.match(t.COMMA),this.state=3687,this.updatedElement(),this.state=3692,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3695,this.errorHandler.sync(this),e=this.tokenStream.LA(1),190===e&&(this.state=3693,this.match(t.WHERE),this.state=3694,this.expression(0))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}orderByClause(){let e=new MU(this.context,this.state);this.enterRule(e,228,t.RULE_orderByClause);try{let s;for(this.enterOuterAlt(e,1),this.state=3697,this.match(t.ORDER),this.state=3698,this.match(t.BY),this.state=3699,this.orderByExpression(),this.state=3704,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,514,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=3700,this.match(t.COMMA),this.state=3701,this.orderByExpression()),this.state=3706,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,514,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}orderByExpression(){let e,s=new dU(this.context,this.state);this.enterRule(s,230,t.RULE_orderByExpression);try{this.enterOuterAlt(s,1),this.state=3707,this.expression(0),this.state=3709,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(13===e||45===e)&&(this.state=3708,s._order=this.tokenStream.LT(1),e=this.tokenStream.LA(1),13===e||45===e?(this.errorHandler.reportMatch(this),this.consume()):s._order=this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableSources(){let e=new UU(this.context,this.state);this.enterRule(e,232,t.RULE_tableSources);try{let s;for(this.enterOuterAlt(e,1),this.state=3711,this.tableSource(),this.state=3716,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,516,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=3712,this.match(t.COMMA),this.state=3713,this.tableSource()),this.state=3718,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,516,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableSource(){let e,s=new mU(this.context,this.state);this.enterRule(s,234,t.RULE_tableSource);try{let a;switch(this.state=3737,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,519,this.context)){case 1:for(s=new gU(s),this.enterOuterAlt(s,1),this.state=3719,this.tableSourceItem(),this.state=3723,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,517,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3720,this.joinPart()),this.state=3725,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,517,this.context);break;case 2:for(s=new pU(s),this.enterOuterAlt(s,2),this.state=3726,this.match(t.LR_BRACKET),this.state=3727,this.tableSourceItem(),this.state=3731,this.errorHandler.sync(this),e=this.tokenStream.LA(1);34===e||!(e-83&-32)&&1<<e-83&1073758337||148===e||171===e;)this.state=3728,this.joinPart(),this.state=3733,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3734,this.match(t.RR_BRACKET);break;case 3:s=new DU(s),this.enterOuterAlt(s,3),this.state=3736,this.jsonTable()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableSourceItem(){let e,s=new xU(this.context,this.state);this.enterRule(s,236,t.RULE_tableSourceItem);try{let a;switch(this.state=3776,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,526,this.context)){case 1:if(s=new HU(s),this.enterOuterAlt(s,1),1===(this.state=3739,this.tableName(),this.state=3745,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=3740,this.match(t.PARTITION),this.state=3741,this.match(t.LR_BRACKET),this.state=3742,this.uidList(),this.state=3743,this.match(t.RR_BRACKET)),this.state=3751,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,522,this.context)))this.state=3748,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=3747,this.match(t.AS)),this.state=3750,s._alias=this.uid();if(this.state=3761,this.errorHandler.sync(this),e=this.tokenStream.LA(1),66===e||78===e||186===e)for(this.state=3753,this.indexHint(),this.state=3758,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,523,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3754,this.match(t.COMMA),this.state=3755,this.indexHint()),this.state=3760,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,523,this.context);break;case 2:s=new kU(s),this.enterOuterAlt(s,2),this.state=3763,this.match(t.LR_BRACKET),this.state=3764,s._parenthesisSubquery=this.selectStatement(),this.state=3765,this.match(t.RR_BRACKET),this.state=3768,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=3767,this.match(t.AS)),this.state=3770,s._alias=this.uid();break;case 3:s=new GU(s),this.enterOuterAlt(s,3),this.state=3772,this.match(t.LR_BRACKET),this.state=3773,this.tableSources(),this.state=3774,this.match(t.RR_BRACKET)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}indexHint(){let e,s=new FU(this.context,this.state);this.enterRule(s,238,t.RULE_indexHint);try{this.enterOuterAlt(s,1),this.state=3778,s._indexHintAction=this.tokenStream.LT(1),e=this.tokenStream.LA(1),66===e||78===e||186===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexHintAction=this.errorHandler.recoverInline(this),this.state=3779,s._keyFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):s._keyFormat=this.errorHandler.recoverInline(this),this.state=3782,this.errorHandler.sync(this),e=this.tokenStream.LA(1),65===e&&(this.state=3780,this.match(t.FOR),this.state=3781,this.indexHintType()),this.state=3784,this.match(t.LR_BRACKET),this.state=3785,this.indexNameList(),this.state=3786,this.match(t.RR_BRACKET)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}indexHintType(){let e=new vU(this.context,this.state);this.enterRule(e,240,t.RULE_indexHintType);try{switch(this.state=3793,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.JOIN:this.enterOuterAlt(e,1),this.state=3788,this.match(t.JOIN);break;case t.ORDER:this.enterOuterAlt(e,2),this.state=3789,this.match(t.ORDER),this.state=3790,this.match(t.BY);break;case t.GROUP:this.enterOuterAlt(e,3),this.state=3791,this.match(t.GROUP),this.state=3792,this.match(t.BY);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}joinPart(){let e,s=new BU(this.context,this.state);this.enterRule(s,242,t.RULE_joinPart);try{let a;switch(this.state=3842,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CROSS:case t.INNER:case t.JOIN:if(s=new yU(s),this.enterOuterAlt(s,1),1===(this.state=3796,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(34===e||83===e)&&(this.state=3795,e=this.tokenStream.LA(1),34===e||83===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=3798,this.match(t.JOIN),this.state=3800,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,530,this.context)))this.state=3799,this.match(t.LATERAL);for(this.state=3802,this.tableSourceItem(),this.state=3806,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,531,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3803,this.joinSpec()),this.state=3808,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,531,this.context);break;case t.STRAIGHT_JOIN:for(s=new wU(s),this.enterOuterAlt(s,2),this.state=3809,this.match(t.STRAIGHT_JOIN),this.state=3810,this.tableSourceItem(),this.state=3815,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,532,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3811,this.match(t.ON),this.state=3812,this.expression(0)),this.state=3817,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,532,this.context);break;case t.LEFT:case t.RIGHT:if(s=new YU(s),this.enterOuterAlt(s,3),1===(this.state=3818,e=this.tokenStream.LA(1),97===e||148===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3820,this.errorHandler.sync(this),e=this.tokenStream.LA(1),126===e&&(this.state=3819,this.match(t.OUTER)),this.state=3822,this.match(t.JOIN),this.state=3824,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,534,this.context)))this.state=3823,this.match(t.LATERAL);for(this.state=3826,this.tableSourceItem(),this.state=3830,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,535,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3827,this.joinSpec()),this.state=3832,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,535,this.context);break;case t.NATURAL:s=new fU(s),this.enterOuterAlt(s,4),this.state=3833,this.match(t.NATURAL),this.state=3838,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(97===e||148===e)&&(this.state=3834,e=this.tokenStream.LA(1),97===e||148===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3836,this.errorHandler.sync(this),e=this.tokenStream.LA(1),126===e&&(this.state=3835,this.match(t.OUTER))),this.state=3840,this.match(t.JOIN),this.state=3841,this.tableSourceItem();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}joinSpec(){let e=new bU(this.context,this.state);this.enterRule(e,244,t.RULE_joinSpec);try{switch(this.state=3851,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ON:this.enterOuterAlt(e,1),this.state=3844,this.match(t.ON),this.state=3845,this.expression(0);break;case t.USING:this.enterOuterAlt(e,2),this.state=3846,this.match(t.USING),this.state=3847,this.match(t.LR_BRACKET),this.state=3848,this.uidList(),this.state=3849,this.match(t.RR_BRACKET);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}queryExpression(){let e=new WU(this.context,this.state);this.enterRule(e,246,t.RULE_queryExpression);try{switch(this.state=3861,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,540,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3853,this.match(t.LR_BRACKET),this.state=3854,this.querySpecification(),this.state=3855,this.match(t.RR_BRACKET);break;case 2:this.enterOuterAlt(e,2),this.state=3857,this.match(t.LR_BRACKET),this.state=3858,this.queryExpression(),this.state=3859,this.match(t.RR_BRACKET)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}queryExpressionNointo(){let e=new VU(this.context,this.state);this.enterRule(e,248,t.RULE_queryExpressionNointo);try{switch(this.state=3871,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,541,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3863,this.match(t.LR_BRACKET),this.state=3864,this.querySpecificationNointo(),this.state=3865,this.match(t.RR_BRACKET);break;case 2:this.enterOuterAlt(e,2),this.state=3867,this.match(t.LR_BRACKET),this.state=3868,this.queryExpressionNointo(),this.state=3869,this.match(t.RR_BRACKET)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}querySpecification(){let e,s=new XU(this.context,this.state);this.enterRule(s,250,t.RULE_querySpecification);try{let a;switch(this.state=3927,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,556,this.context)){case 1:for(this.enterOuterAlt(s,1),this.state=3873,this.match(t.SELECT),this.state=3877,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,542,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3874,this.selectSpec()),this.state=3879,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,542,this.context);if(1===(this.state=3880,this.selectElements(),this.state=3882,this.errorHandler.sync(this),e=this.tokenStream.LA(1),87===e&&(this.state=3881,this.selectIntoExpression()),this.state=3884,this.fromClause(),this.state=3886,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,544,this.context)))this.state=3885,this.groupByClause();if(1===(this.state=3889,this.errorHandler.sync(this),e=this.tokenStream.LA(1),74===e&&(this.state=3888,this.havingClause()),this.state=3892,this.errorHandler.sync(this),e=this.tokenStream.LA(1),676===e&&(this.state=3891,this.windowClause()),this.state=3895,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,547,this.context)))this.state=3894,this.orderByClause();if(1===(this.state=3898,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,548,this.context)))this.state=3897,this.limitClause();break;case 2:for(this.enterOuterAlt(s,2),this.state=3900,this.match(t.SELECT),this.state=3904,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,549,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3901,this.selectSpec()),this.state=3906,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,549,this.context);if(1===(this.state=3907,this.selectElements(),this.state=3908,this.fromClause(),this.state=3910,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,550,this.context)))this.state=3909,this.groupByClause();if(1===(this.state=3913,this.errorHandler.sync(this),e=this.tokenStream.LA(1),74===e&&(this.state=3912,this.havingClause()),this.state=3916,this.errorHandler.sync(this),e=this.tokenStream.LA(1),676===e&&(this.state=3915,this.windowClause()),this.state=3919,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,553,this.context)))this.state=3918,this.orderByClause();if(1===(this.state=3922,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,554,this.context)))this.state=3921,this.limitClause();this.state=3925,this.errorHandler.sync(this),e=this.tokenStream.LA(1),87===e&&(this.state=3924,this.selectIntoExpression())}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}querySpecificationNointo(){let e,s=new KU(this.context,this.state);this.enterRule(s,252,t.RULE_querySpecificationNointo);try{let a;for(this.enterOuterAlt(s,1),this.state=3929,this.match(t.SELECT),this.state=3933,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,557,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3930,this.selectSpec()),this.state=3935,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,557,this.context);if(1===(this.state=3936,this.selectElements(),this.state=3937,this.fromClause(),this.state=3939,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,558,this.context)))this.state=3938,this.groupByClause();if(1===(this.state=3942,this.errorHandler.sync(this),e=this.tokenStream.LA(1),74===e&&(this.state=3941,this.havingClause()),this.state=3945,this.errorHandler.sync(this),e=this.tokenStream.LA(1),676===e&&(this.state=3944,this.windowClause()),this.state=3948,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,561,this.context)))this.state=3947,this.orderByClause();if(1===(this.state=3951,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,562,this.context)))this.state=3950,this.limitClause();if(1===(this.state=3954,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,563,this.context)))this.state=3953,this.unionStatement()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}unionParenthesis(){let e,s=new QU(this.context,this.state);this.enterRule(s,254,t.RULE_unionParenthesis);try{this.enterOuterAlt(s,1),this.state=3956,this.match(t.UNION),this.state=3958,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(6===e||49===e)&&(this.state=3957,s._unionType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),6===e||49===e?(this.errorHandler.reportMatch(this),this.consume()):s._unionType=this.errorHandler.recoverInline(this)),this.state=3960,this.queryExpressionNointo()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}unionStatement(){let e,s=new JU(this.context,this.state);this.enterRule(s,256,t.RULE_unionStatement);try{switch(this.enterOuterAlt(s,1),this.state=3962,this.match(t.UNION),this.state=3964,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(6===e||49===e)&&(this.state=3963,s._unionType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),6===e||49===e?(this.errorHandler.reportMatch(this),this.consume()):s._unionType=this.errorHandler.recoverInline(this)),this.state=3968,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SELECT:this.state=3966,this.querySpecificationNointo();break;case t.LR_BRACKET:this.state=3967,this.queryExpressionNointo();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}lateralStatement(){let e,s=new ZU(this.context,this.state);this.enterRule(s,258,t.RULE_lateralStatement);try{switch(this.enterOuterAlt(s,1),this.state=3970,this.match(t.LATERAL),this.state=3985,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,570,this.context)){case 1:this.state=3971,this.querySpecificationNointo();break;case 2:this.state=3972,this.queryExpressionNointo();break;case 3:switch(this.state=3973,this.match(t.LR_BRACKET),this.state=3976,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SELECT:this.state=3974,this.querySpecificationNointo();break;case t.LR_BRACKET:this.state=3975,this.queryExpressionNointo();break;default:throw new Ei(this)}if(1===(this.state=3978,this.match(t.RR_BRACKET),this.state=3983,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,569,this.context)))this.state=3980,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=3979,this.match(t.AS)),this.state=3982,this.uid()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}jsonTable(){let e,s=new qU(this.context,this.state);this.enterRule(s,260,t.RULE_jsonTable);try{if(1===(this.enterOuterAlt(s,1),this.state=3987,this.match(t.JSON_TABLE),this.state=3988,this.match(t.LR_BRACKET),this.state=3989,this.match(t.STRING_LITERAL),this.state=3990,this.match(t.COMMA),this.state=3991,this.match(t.STRING_LITERAL),this.state=3992,this.match(t.COLUMNS),this.state=3993,this.match(t.LR_BRACKET),this.state=3994,this.jsonColumnList(),this.state=3995,this.match(t.RR_BRACKET),this.state=3996,this.match(t.RR_BRACKET),this.state=4001,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,572,this.context)))this.state=3998,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=3997,this.match(t.AS)),this.state=4e3,this.uid()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}jsonColumnList(){let e,s=new jU(this.context,this.state);this.enterRule(s,262,t.RULE_jsonColumnList);try{for(this.enterOuterAlt(s,1),this.state=4003,this.jsonColumn(),this.state=4008,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4004,this.match(t.COMMA),this.state=4005,this.jsonColumn(),this.state=4010,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}jsonColumn(){let e,s=new zU(this.context,this.state);this.enterRule(s,264,t.RULE_jsonColumn);try{switch(this.state=4040,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,579,this.context)){case 1:switch(this.enterOuterAlt(s,1),this.state=4011,this.fullColumnName(),this.state=4028,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:this.state=4012,this.match(t.FOR),this.state=4013,this.match(t.ORDINALITY);break;case t.CHARACTER:case t.SET:case t.TINYINT:case t.SMALLINT:case t.MEDIUMINT:case t.MIDDLEINT:case t.INT:case t.INT1:case t.INT2:case t.INT3:case t.INT4:case t.INT8:case t.INTEGER:case t.BIGINT:case t.REAL:case t.DOUBLE:case t.FLOAT:case t.FLOAT4:case t.FLOAT8:case t.DECIMAL:case t.DEC:case t.NUMERIC:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.CHAR:case t.VARCHAR:case t.NVARCHAR:case t.NATIONAL:case t.BINARY:case t.VARBINARY:case t.TINYBLOB:case t.BLOB:case t.MEDIUMBLOB:case t.LONG:case t.LONGBLOB:case t.TINYTEXT:case t.TEXT:case t.MEDIUMTEXT:case t.LONGTEXT:case t.ENUM:case t.SERIAL:case t.BIT:case t.BOOL:case t.BOOLEAN:case t.FIXED:case t.JSON:case t.NCHAR:case t.GEOMETRYCOLLECTION:case t.GEOMCOLLECTION:case t.GEOMETRY:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:switch(this.state=4014,this.dataType(),this.state=4026,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PATH:if(1===(this.state=4015,this.match(t.PATH),this.state=4016,this.match(t.STRING_LITERAL),this.state=4018,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,574,this.context)))this.state=4017,this.jsonOnEmpty();this.state=4021,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(42===e||116===e||411===e)&&(this.state=4020,this.jsonOnError());break;case t.EXISTS:this.state=4023,this.match(t.EXISTS),this.state=4024,this.match(t.PATH),this.state=4025,this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}break;default:throw new Ei(this)}break;case 2:this.enterOuterAlt(s,2),this.state=4030,this.match(t.NESTED),this.state=4032,this.errorHandler.sync(this),e=this.tokenStream.LA(1),285===e&&(this.state=4031,this.match(t.PATH)),this.state=4034,this.match(t.STRING_LITERAL),this.state=4035,this.match(t.COLUMNS),this.state=4036,this.match(t.LR_BRACKET),this.state=4037,this.jsonColumnList(),this.state=4038,this.match(t.RR_BRACKET)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}jsonOnEmpty(){let e=new $U(this.context,this.state);this.enterRule(e,266,t.RULE_jsonOnEmpty);try{switch(this.enterOuterAlt(e,1),this.state=4046,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NULL_LITERAL:this.state=4042,this.match(t.NULL_LITERAL);break;case t.ERROR:this.state=4043,this.match(t.ERROR);break;case t.DEFAULT:this.state=4044,this.match(t.DEFAULT),this.state=4045,this.defaultValue();break;default:throw new Ei(this)}this.state=4048,this.match(t.ON),this.state=4049,this.match(t.EMPTY)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}jsonOnError(){let e=new tm(this.context,this.state);this.enterRule(e,268,t.RULE_jsonOnError);try{switch(this.enterOuterAlt(e,1),this.state=4055,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NULL_LITERAL:this.state=4051,this.match(t.NULL_LITERAL);break;case t.ERROR:this.state=4052,this.match(t.ERROR);break;case t.DEFAULT:this.state=4053,this.match(t.DEFAULT),this.state=4054,this.defaultValue();break;default:throw new Ei(this)}this.state=4057,this.match(t.ON),this.state=4058,this.match(t.ERROR)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}selectSpec(){let e,s=new em(this.context,this.state);this.enterRule(s,270,t.RULE_selectSpec);try{switch(this.state=4068,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALL:case t.DISTINCT:case t.DISTINCTROW:this.enterOuterAlt(s,1),this.state=4060,e=this.tokenStream.LA(1),6===e||49===e||50===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.HIGH_PRIORITY:this.enterOuterAlt(s,2),this.state=4061,this.match(t.HIGH_PRIORITY);break;case t.STRAIGHT_JOIN:this.enterOuterAlt(s,3),this.state=4062,this.match(t.STRAIGHT_JOIN);break;case t.SQL_SMALL_RESULT:this.enterOuterAlt(s,4),this.state=4063,this.match(t.SQL_SMALL_RESULT);break;case t.SQL_BIG_RESULT:this.enterOuterAlt(s,5),this.state=4064,this.match(t.SQL_BIG_RESULT);break;case t.SQL_BUFFER_RESULT:this.enterOuterAlt(s,6),this.state=4065,this.match(t.SQL_BUFFER_RESULT);break;case t.SQL_CACHE:case t.SQL_NO_CACHE:this.enterOuterAlt(s,7),this.state=4066,e=this.tokenStream.LA(1),626===e||627===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.SQL_CALC_FOUND_ROWS:this.enterOuterAlt(s,8),this.state=4067,this.match(t.SQL_CALC_FOUND_ROWS);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}selectElements(){let e=new sm(this.context,this.state);this.enterRule(e,272,t.RULE_selectElements);try{let s;switch(this.enterOuterAlt(e,1),this.state=4072,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,583,this.context)){case 1:this.state=4070,e._star=this.match(t.STAR);break;case 2:this.state=4071,this.selectElement()}for(this.state=4078,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,584,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=4074,this.match(t.COMMA),this.state=4075,this.selectElement()),this.state=4080,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,584,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}selectElementAlias(){let e,s=new am(this.context,this.state);this.enterRule(s,274,t.RULE_selectElementAlias);try{this.enterOuterAlt(s,1),this.state=4082,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=4081,this.match(t.AS)),this.state=4084,this.uid()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}selectElement(){let e=new rm(this.context,this.state);this.enterRule(e,276,t.RULE_selectElement);try{switch(this.state=4106,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,590,this.context)){case 1:e=new nm(e),this.enterOuterAlt(e,1),this.state=4086,this.fullId(),this.state=4087,this.match(t.DOT),this.state=4088,this.match(t.STAR);break;case 2:if(1===(e=new hm(e),this.enterOuterAlt(e,2),this.state=4090,this.fullColumnName(),this.state=4092,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,586,this.context)))this.state=4091,this.selectElementAlias();break;case 3:if(1===(e=new cm(e),this.enterOuterAlt(e,3),this.state=4094,this.functionCall(),this.state=4096,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,587,this.context)))this.state=4095,this.selectElementAlias();break;case 4:if(e=new im(e),this.enterOuterAlt(e,4),1===(this.state=4100,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,588,this.context)))this.state=4098,this.match(t.LOCAL_ID),this.state=4099,this.match(t.VAR_ASSIGN);if(1===(this.state=4102,this.expression(0),this.state=4104,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,589,this.context)))this.state=4103,this.selectElementAlias()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}selectIntoExpression(){let e,s=new Em(this.context,this.state);this.enterRule(s,278,t.RULE_selectIntoExpression);try{switch(this.state=4144,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,597,this.context)){case 1:for(s=new Tm(s),this.enterOuterAlt(s,1),this.state=4108,this.match(t.INTO),this.state=4109,this.assignmentField(),this.state=4114,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4110,this.match(t.COMMA),this.state=4111,this.assignmentField(),this.state=4116,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 2:s=new Rm(s),this.enterOuterAlt(s,2),this.state=4117,this.match(t.INTO),this.state=4118,this.match(t.DUMPFILE),this.state=4119,this.match(t.STRING_LITERAL);break;case 3:if(s=new om(s),this.enterOuterAlt(s,3),1===(this.state=4120,this.match(t.INTO),this.state=4121,this.match(t.OUTFILE),this.state=4122,s._filename=this.match(t.STRING_LITERAL),this.state=4126,this.errorHandler.sync(this),e=this.tokenStream.LA(1),25===e&&(this.state=4123,this.match(t.CHARACTER),this.state=4124,this.match(t.SET),this.state=4125,s._charset=this.charsetName()),this.state=4134,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,594,this.context))){this.state=4128,s._fieldsFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),365===e||427===e?(this.errorHandler.reportMatch(this),this.consume()):s._fieldsFormat=this.errorHandler.recoverInline(this),this.state=4130,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=4129,this.selectFieldsInto(),this.state=4132,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(56===e||58===e||122===e||173===e)}if(this.state=4142,this.errorHandler.sync(this),e=this.tokenStream.LA(1),101===e){this.state=4136,this.match(t.LINES),this.state=4138,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=4137,this.selectLinesInto(),this.state=4140,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(169===e||173===e)}}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}selectFieldsInto(){let e,s=new Am(this.context,this.state);this.enterRule(s,280,t.RULE_selectFieldsInto);try{switch(this.state=4158,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.TERMINATED:this.enterOuterAlt(s,1),this.state=4146,this.match(t.TERMINATED),this.state=4147,this.match(t.BY),this.state=4148,s._terminationField=this.match(t.STRING_LITERAL);break;case t.ENCLOSED:case t.OPTIONALLY:this.enterOuterAlt(s,2),this.state=4150,this.errorHandler.sync(this),e=this.tokenStream.LA(1),122===e&&(this.state=4149,this.match(t.OPTIONALLY)),this.state=4152,this.match(t.ENCLOSED),this.state=4153,this.match(t.BY),this.state=4154,s._enclosion=this.match(t.STRING_LITERAL);break;case t.ESCAPED:this.enterOuterAlt(s,3),this.state=4155,this.match(t.ESCAPED),this.state=4156,this.match(t.BY),this.state=4157,s._escaping=this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}selectLinesInto(){let e=new Sm(this.context,this.state);this.enterRule(e,282,t.RULE_selectLinesInto);try{switch(this.state=4166,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.STARTING:this.enterOuterAlt(e,1),this.state=4160,this.match(t.STARTING),this.state=4161,this.match(t.BY),this.state=4162,e._starting=this.match(t.STRING_LITERAL);break;case t.TERMINATED:this.enterOuterAlt(e,2),this.state=4163,this.match(t.TERMINATED),this.state=4164,this.match(t.BY),this.state=4165,e._terminationLine=this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}fromClause(){let e,s=new lm(this.context,this.state);this.enterRule(s,284,t.RULE_fromClause);try{this.enterOuterAlt(s,1),this.state=4170,this.errorHandler.sync(this),e=this.tokenStream.LA(1),68===e&&(this.state=4168,this.match(t.FROM),this.state=4169,this.tableSources()),this.state=4174,this.errorHandler.sync(this),e=this.tokenStream.LA(1),190===e&&(this.state=4172,this.match(t.WHERE),this.state=4173,s._whereExpr=this.expression(0))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}groupByClause(){let e=new Om(this.context,this.state);this.enterRule(e,286,t.RULE_groupByClause);try{let s;for(this.enterOuterAlt(e,1),this.state=4176,this.match(t.GROUP),this.state=4177,this.match(t.BY),this.state=4178,this.groupByItem(),this.state=4183,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,603,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=4179,this.match(t.COMMA),this.state=4180,this.groupByItem()),this.state=4185,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,603,this.context);if(1===(this.state=4188,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,604,this.context)))this.state=4186,this.match(t.WITH),this.state=4187,this.match(t.ROLLUP)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}havingClause(){let e=new Im(this.context,this.state);this.enterRule(e,288,t.RULE_havingClause);try{this.enterOuterAlt(e,1),this.state=4190,this.match(t.HAVING),this.state=4191,e._havingExpr=this.expression(0)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}windowClause(){let e=new um(this.context,this.state);this.enterRule(e,290,t.RULE_windowClause);try{let s;for(this.enterOuterAlt(e,1),this.state=4193,this.match(t.WINDOW),this.state=4194,this.windowName(),this.state=4195,this.match(t.AS),this.state=4196,this.match(t.LR_BRACKET),this.state=4197,this.windowSpec(),this.state=4198,this.match(t.RR_BRACKET),this.state=4208,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,605,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=4199,this.match(t.COMMA),this.state=4200,this.windowName(),this.state=4201,this.match(t.AS),this.state=4202,this.match(t.LR_BRACKET),this.state=4203,this.windowSpec(),this.state=4204,this.match(t.RR_BRACKET)),this.state=4210,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,605,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}groupByItem(){let e,s=new Nm(this.context,this.state);this.enterRule(s,292,t.RULE_groupByItem);try{this.enterOuterAlt(s,1),this.state=4211,this.expression(0),this.state=4213,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(13===e||45===e)&&(this.state=4212,s._order=this.tokenStream.LT(1),e=this.tokenStream.LA(1),13===e||45===e?(this.errorHandler.reportMatch(this),this.consume()):s._order=this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}limitClause(){let e=new Lm(this.context,this.state);this.enterRule(e,294,t.RULE_limitClause);try{switch(this.enterOuterAlt(e,1),this.state=4215,this.match(t.LIMIT),this.state=4226,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,608,this.context)){case 1:if(1===(this.state=4219,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,607,this.context)))this.state=4216,e._offset=this.limitClauseAtom(),this.state=4217,this.match(t.COMMA);this.state=4221,e._limit=this.limitClauseAtom();break;case 2:this.state=4222,e._limit=this.limitClauseAtom(),this.state=4223,this.match(t.OFFSET),this.state=4224,e._offset=this.limitClauseAtom()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}limitClauseAtom(){let e=new Cm(this.context,this.state);this.enterRule(e,296,t.RULE_limitClauseAtom);try{switch(this.state=4231,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ZERO_DECIMAL:case t.ONE_DECIMAL:case t.TWO_DECIMAL:case t.DECIMAL_LITERAL:case t.REAL_LITERAL:this.enterOuterAlt(e,1),this.state=4228,this.decimalLiteral();break;case t.LOCAL_ID:case t.GLOBAL_ID:this.enterOuterAlt(e,2),this.state=4229,this.mysqlVariable();break;case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.ID:this.enterOuterAlt(e,3),this.state=4230,this.simpleId();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}startTransaction(){let e,s=new _m(this.context,this.state);this.enterRule(s,298,t.RULE_startTransaction);try{if(this.enterOuterAlt(s,1),this.state=4233,this.match(t.START),this.state=4234,this.match(t.TRANSACTION),this.state=4243,this.errorHandler.sync(this),e=this.tokenStream.LA(1),134===e||192===e)for(this.state=4235,this.transactionMode(),this.state=4240,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4236,this.match(t.COMMA),this.state=4237,this.transactionMode(),this.state=4242,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}beginWork(){let e,s=new Pm(this.context,this.state);this.enterRule(s,300,t.RULE_beginWork);try{this.enterOuterAlt(s,1),this.state=4245,this.match(t.BEGIN),this.state=4247,this.errorHandler.sync(this),e=this.tokenStream.LA(1),678===e&&(this.state=4246,this.match(t.WORK))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}commitWork(){let e,s=new Mm(this.context,this.state);this.enterRule(s,302,t.RULE_commitWork);try{this.enterOuterAlt(s,1),this.state=4249,this.match(t.COMMIT),this.state=4251,this.errorHandler.sync(this),e=this.tokenStream.LA(1),678===e&&(this.state=4250,this.match(t.WORK)),this.state=4258,this.errorHandler.sync(this),e=this.tokenStream.LA(1),10===e&&(this.state=4253,this.match(t.AND),this.state=4255,this.errorHandler.sync(this),e=this.tokenStream.LA(1),521===e&&(this.state=4254,s._nochain=this.match(t.NO)),this.state=4257,this.match(t.CHAIN)),this.state=4264,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(138===e||521===e)&&(this.state=4261,this.errorHandler.sync(this),e=this.tokenStream.LA(1),521===e&&(this.state=4260,s._norelease=this.match(t.NO)),this.state=4263,this.match(t.RELEASE))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}rollbackWork(){let e,s=new dm(this.context,this.state);this.enterRule(s,304,t.RULE_rollbackWork);try{this.enterOuterAlt(s,1),this.state=4266,this.match(t.ROLLBACK),this.state=4268,this.errorHandler.sync(this),e=this.tokenStream.LA(1),678===e&&(this.state=4267,this.match(t.WORK)),this.state=4275,this.errorHandler.sync(this),e=this.tokenStream.LA(1),10===e&&(this.state=4270,this.match(t.AND),this.state=4272,this.errorHandler.sync(this),e=this.tokenStream.LA(1),521===e&&(this.state=4271,s._nochain=this.match(t.NO)),this.state=4274,this.match(t.CHAIN)),this.state=4281,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(138===e||521===e)&&(this.state=4278,this.errorHandler.sync(this),e=this.tokenStream.LA(1),521===e&&(this.state=4277,s._norelease=this.match(t.NO)),this.state=4280,this.match(t.RELEASE))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}savepointStatement(){let e=new Um(this.context,this.state);this.enterRule(e,306,t.RULE_savepointStatement);try{this.enterOuterAlt(e,1),this.state=4283,this.match(t.SAVEPOINT),this.state=4284,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}rollbackStatement(){let e,s=new mm(this.context,this.state);this.enterRule(s,308,t.RULE_rollbackStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=4286,this.match(t.ROLLBACK),this.state=4288,this.errorHandler.sync(this),e=this.tokenStream.LA(1),678===e&&(this.state=4287,this.match(t.WORK)),this.state=4290,this.match(t.TO),this.state=4292,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,624,this.context)))this.state=4291,this.match(t.SAVEPOINT);this.state=4294,this.uid()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}releaseStatement(){let e=new Dm(this.context,this.state);this.enterRule(e,310,t.RULE_releaseStatement);try{this.enterOuterAlt(e,1),this.state=4296,this.match(t.RELEASE),this.state=4297,this.match(t.SAVEPOINT),this.state=4298,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}lockTables(){let e,s=new pm(this.context,this.state);this.enterRule(s,312,t.RULE_lockTables);try{for(this.enterOuterAlt(s,1),this.state=4300,this.match(t.LOCK),this.state=4301,e=this.tokenStream.LA(1),172===e||742===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=4302,this.lockTableElement(),this.state=4307,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4303,this.match(t.COMMA),this.state=4304,this.lockTableElement(),this.state=4309,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=4311,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(527===e||674===e)&&(this.state=4310,this.waitNowaitClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}unlockTables(){let e=new gm(this.context,this.state);this.enterRule(e,314,t.RULE_unlockTables);try{this.enterOuterAlt(e,1),this.state=4313,this.match(t.UNLOCK),this.state=4314,this.match(t.TABLES)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}setAutocommitStatement(){let e,s=new xm(this.context,this.state);this.enterRule(s,316,t.RULE_setAutocommitStatement);try{this.enterOuterAlt(s,1),this.state=4316,this.match(t.SET),this.state=4317,this.match(t.AUTOCOMMIT),this.state=4318,this.match(t.EQUAL_SYMBOL),this.state=4319,s._autocommitValue=this.tokenStream.LT(1),e=this.tokenStream.LA(1),1138===e||1139===e?(this.errorHandler.reportMatch(this),this.consume()):s._autocommitValue=this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}setTransactionStatement(){let e,s=new km(this.context,this.state);this.enterRule(s,318,t.RULE_setTransactionStatement);try{for(this.enterOuterAlt(s,1),this.state=4321,this.match(t.SET),this.state=4323,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(439===e||609===e)&&(this.state=4322,s._transactionContext=this.tokenStream.LT(1),e=this.tokenStream.LA(1),439===e||609===e?(this.errorHandler.reportMatch(this),this.consume()):s._transactionContext=this.errorHandler.recoverInline(this)),this.state=4325,this.match(t.TRANSACTION),this.state=4326,this.transactionOption(),this.state=4331,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4327,this.match(t.COMMA),this.state=4328,this.transactionOption(),this.state=4333,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}transactionMode(){let e=new Hm(this.context,this.state);this.enterRule(e,320,t.RULE_transactionMode);try{switch(this.state=4341,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,629,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4334,this.match(t.WITH),this.state=4335,this.match(t.CONSISTENT),this.state=4336,this.match(t.SNAPSHOT);break;case 2:this.enterOuterAlt(e,2),this.state=4337,this.match(t.READ),this.state=4338,this.match(t.WRITE);break;case 3:this.enterOuterAlt(e,3),this.state=4339,this.match(t.READ),this.state=4340,this.match(t.ONLY)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}lockTableElement(){let e,s=new Gm(this.context,this.state);this.enterRule(s,322,t.RULE_lockTableElement);try{this.enterOuterAlt(s,1),this.state=4343,this.tableName(),this.state=4348,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537155584||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=4345,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=4344,this.match(t.AS)),this.state=4347,this.uid()),this.state=4350,this.lockAction()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}lockAction(){let e,s=new Fm(this.context,this.state);this.enterRule(s,324,t.RULE_lockAction);try{switch(this.state=4360,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.READ:this.enterOuterAlt(s,1),this.state=4352,this.match(t.READ),this.state=4354,this.errorHandler.sync(this),e=this.tokenStream.LA(1),474===e&&(this.state=4353,this.match(t.LOCAL));break;case t.LOW_PRIORITY:case t.WRITE:this.enterOuterAlt(s,2),this.state=4357,this.errorHandler.sync(this),e=this.tokenStream.LA(1),106===e&&(this.state=4356,this.match(t.LOW_PRIORITY)),this.state=4359,this.match(t.WRITE);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}transactionOption(){let e=new vm(this.context,this.state);this.enterRule(e,326,t.RULE_transactionOption);try{switch(this.state=4369,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,635,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4362,this.match(t.ISOLATION),this.state=4363,this.match(t.LEVEL),this.state=4364,this.transactionLevel();break;case 2:this.enterOuterAlt(e,2),this.state=4365,this.match(t.READ),this.state=4366,this.match(t.WRITE);break;case 3:this.enterOuterAlt(e,3),this.state=4367,this.match(t.READ),this.state=4368,this.match(t.ONLY)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}transactionLevel(){let e=new Bm(this.context,this.state);this.enterRule(e,328,t.RULE_transactionLevel);try{switch(this.state=4378,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,636,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4371,this.match(t.REPEATABLE),this.state=4372,this.match(t.READ);break;case 2:this.enterOuterAlt(e,2),this.state=4373,this.match(t.READ),this.state=4374,this.match(t.COMMITTED);break;case 3:this.enterOuterAlt(e,3),this.state=4375,this.match(t.READ),this.state=4376,this.match(t.UNCOMMITTED);break;case 4:this.enterOuterAlt(e,4),this.state=4377,this.match(t.SERIALIZABLE)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}changeMaster(){let e,s=new ym(this.context,this.state);this.enterRule(s,330,t.RULE_changeMaster);try{for(this.enterOuterAlt(s,1),this.state=4380,this.match(t.CHANGE),this.state=4381,this.match(t.MASTER),this.state=4382,this.match(t.TO),this.state=4383,this.masterOption(),this.state=4388,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4384,this.match(t.COMMA),this.state=4385,this.masterOption(),this.state=4390,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=4392,this.errorHandler.sync(this),e=this.tokenStream.LA(1),65===e&&(this.state=4391,this.channelOption())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}changeReplicationFilter(){let e,s=new fm(this.context,this.state);this.enterRule(s,332,t.RULE_changeReplicationFilter);try{for(this.enterOuterAlt(s,1),this.state=4394,this.match(t.CHANGE),this.state=4395,this.match(t.REPLICATION),this.state=4396,this.match(t.FILTER),this.state=4397,this.replicationFilter(),this.state=4402,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4398,this.match(t.COMMA),this.state=4399,this.replicationFilter(),this.state=4404,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}purgeBinaryLogs(){let e,s=new Ym(this.context,this.state);this.enterRule(s,334,t.RULE_purgeBinaryLogs);try{switch(this.enterOuterAlt(s,1),this.state=4405,this.match(t.PURGE),this.state=4406,s._purgeFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),226===e||477===e?(this.errorHandler.reportMatch(this),this.consume()):s._purgeFormat=this.errorHandler.recoverInline(this),this.state=4407,this.match(t.LOGS),this.state=4412,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.TO:this.state=4408,this.match(t.TO),this.state=4409,s._fileName=this.match(t.STRING_LITERAL);break;case t.BEFORE:this.state=4410,this.match(t.BEFORE),this.state=4411,s._timeValue=this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}resetMaster(){let e=new wm(this.context,this.state);this.enterRule(e,336,t.RULE_resetMaster);try{this.enterOuterAlt(e,1),this.state=4414,this.match(t.RESET),this.state=4415,this.match(t.MASTER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}resetSlave(){let e,s=new bm(this.context,this.state);this.enterRule(s,338,t.RULE_resetSlave);try{this.enterOuterAlt(s,1),this.state=4417,this.match(t.RESET),this.state=4418,this.match(t.SLAVE),this.state=4420,this.errorHandler.sync(this),e=this.tokenStream.LA(1),6===e&&(this.state=4419,this.match(t.ALL)),this.state=4423,this.errorHandler.sync(this),e=this.tokenStream.LA(1),65===e&&(this.state=4422,this.channelOption())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}startSlave(){let e,s=new Wm(this.context,this.state);this.enterRule(s,340,t.RULE_startSlave);try{if(this.enterOuterAlt(s,1),this.state=4425,this.match(t.START),this.state=4426,this.match(t.SLAVE),this.state=4435,this.errorHandler.sync(this),e=this.tokenStream.LA(1),462===e||628===e)for(this.state=4427,this.threadType(),this.state=4432,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4428,this.match(t.COMMA),this.state=4429,this.threadType(),this.state=4434,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=4439,this.errorHandler.sync(this),e=this.tokenStream.LA(1),663===e&&(this.state=4437,this.match(t.UNTIL),this.state=4438,this.untilOption()),this.state=4444,this.errorHandler.sync(this),e=this.tokenStream.LA(1);391===e||551===e||555===e||665===e;)this.state=4441,this.connectionOption(),this.state=4446,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=4448,this.errorHandler.sync(this),e=this.tokenStream.LA(1),65===e&&(this.state=4447,this.channelOption())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}stopSlave(){let e,s=new Vm(this.context,this.state);this.enterRule(s,342,t.RULE_stopSlave);try{if(this.enterOuterAlt(s,1),this.state=4450,this.match(t.STOP),this.state=4451,this.match(t.SLAVE),this.state=4460,this.errorHandler.sync(this),e=this.tokenStream.LA(1),462===e||628===e)for(this.state=4452,this.threadType(),this.state=4457,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4453,this.match(t.COMMA),this.state=4454,this.threadType(),this.state=4459,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}startGroupReplication(){let e=new Xm(this.context,this.state);this.enterRule(e,344,t.RULE_startGroupReplication);try{this.enterOuterAlt(e,1),this.state=4462,this.match(t.START),this.state=4463,this.match(t.GROUP_REPLICATION)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}stopGroupReplication(){let e=new Km(this.context,this.state);this.enterRule(e,346,t.RULE_stopGroupReplication);try{this.enterOuterAlt(e,1),this.state=4465,this.match(t.STOP),this.state=4466,this.match(t.GROUP_REPLICATION)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}masterOption(){let e,s=new Qm(this.context,this.state);this.enterRule(s,348,t.RULE_masterOption);try{switch(this.state=4497,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.MASTER_BIND:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_PASSWORD:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.RELAY_LOG_FILE:s=new Jm(s),this.enterOuterAlt(s,1),this.state=4468,this.stringMasterOption(),this.state=4469,this.match(t.EQUAL_SYMBOL),this.state=4470,this.match(t.STRING_LITERAL);break;case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_LOG_POS:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.RELAY_LOG_POS:s=new zm(s),this.enterOuterAlt(s,2),this.state=4472,this.decimalMasterOption(),this.state=4473,this.match(t.EQUAL_SYMBOL),this.state=4474,this.decimalLiteral();break;case t.MASTER_SSL_VERIFY_SERVER_CERT:case t.MASTER_AUTO_POSITION:case t.MASTER_SSL:s=new qm(s),this.enterOuterAlt(s,3),this.state=4476,this.boolMasterOption(),this.state=4477,this.match(t.EQUAL_SYMBOL),this.state=4478,s._boolVal=this.tokenStream.LT(1),e=this.tokenStream.LA(1),1138===e||1139===e?(this.errorHandler.reportMatch(this),this.consume()):s._boolVal=this.errorHandler.recoverInline(this);break;case t.MASTER_HEARTBEAT_PERIOD:s=new Zm(s),this.enterOuterAlt(s,4),this.state=4480,this.match(t.MASTER_HEARTBEAT_PERIOD),this.state=4481,this.match(t.EQUAL_SYMBOL),this.state=4482,this.match(t.REAL_LITERAL);break;case t.IGNORE_SERVER_IDS:if(s=new jm(s),this.enterOuterAlt(s,5),this.state=4483,this.match(t.IGNORE_SERVER_IDS),this.state=4484,this.match(t.EQUAL_SYMBOL),this.state=4485,this.match(t.LR_BRACKET),this.state=4494,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)for(this.state=4486,this.uid(),this.state=4491,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4487,this.match(t.COMMA),this.state=4488,this.uid(),this.state=4493,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=4496,this.match(t.RR_BRACKET);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}stringMasterOption(){let e,s=new $m(this.context,this.state);this.enterRule(s,350,t.RULE_stringMasterOption);try{this.enterOuterAlt(s,1),this.state=4499,e=this.tokenStream.LA(1),107===e||!(e-482&-32)&&1<<e-482&65419||575===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}decimalMasterOption(){let e,s=new tD(this.context,this.state);this.enterRule(s,352,t.RULE_decimalMasterOption);try{this.enterOuterAlt(s,1),this.state=4501,e=this.tokenStream.LA(1),!(e-479&-32)&&1<<e-479&419||576===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}boolMasterOption(){let e,s=new eD(this.context,this.state);this.enterRule(s,354,t.RULE_boolMasterOption);try{this.enterOuterAlt(s,1),this.state=4503,e=this.tokenStream.LA(1),108===e||478===e||488===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}channelOption(){let e=new sD(this.context,this.state);this.enterRule(e,356,t.RULE_channelOption);try{this.enterOuterAlt(e,1),this.state=4505,this.match(t.FOR),this.state=4506,this.match(t.CHANNEL),this.state=4507,this.match(t.STRING_LITERAL)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}replicationFilter(){let e,s=new aD(this.context,this.state);this.enterRule(s,358,t.RULE_replicationFilter);try{switch(this.state=4558,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.REPLICATE_DO_DB:s=new hD(s),this.enterOuterAlt(s,1),this.state=4509,this.match(t.REPLICATE_DO_DB),this.state=4510,this.match(t.EQUAL_SYMBOL),this.state=4511,this.match(t.LR_BRACKET),this.state=4512,this.uidList(),this.state=4513,this.match(t.RR_BRACKET);break;case t.REPLICATE_IGNORE_DB:s=new ED(s),this.enterOuterAlt(s,2),this.state=4515,this.match(t.REPLICATE_IGNORE_DB),this.state=4516,this.match(t.EQUAL_SYMBOL),this.state=4517,this.match(t.LR_BRACKET),this.state=4518,this.uidList(),this.state=4519,this.match(t.RR_BRACKET);break;case t.REPLICATE_DO_TABLE:s=new iD(s),this.enterOuterAlt(s,3),this.state=4521,this.match(t.REPLICATE_DO_TABLE),this.state=4522,this.match(t.EQUAL_SYMBOL),this.state=4523,this.match(t.LR_BRACKET),this.state=4524,this.tables(),this.state=4525,this.match(t.RR_BRACKET);break;case t.REPLICATE_IGNORE_TABLE:s=new cD(s),this.enterOuterAlt(s,4),this.state=4527,this.match(t.REPLICATE_IGNORE_TABLE),this.state=4528,this.match(t.EQUAL_SYMBOL),this.state=4529,this.match(t.LR_BRACKET),this.state=4530,this.tables(),this.state=4531,this.match(t.RR_BRACKET);break;case t.REPLICATE_WILD_DO_TABLE:s=new TD(s),this.enterOuterAlt(s,5),this.state=4533,this.match(t.REPLICATE_WILD_DO_TABLE),this.state=4534,this.match(t.EQUAL_SYMBOL),this.state=4535,this.match(t.LR_BRACKET),this.state=4536,this.simpleStrings(),this.state=4537,this.match(t.RR_BRACKET);break;case t.REPLICATE_WILD_IGNORE_TABLE:s=new rD(s),this.enterOuterAlt(s,6),this.state=4539,this.match(t.REPLICATE_WILD_IGNORE_TABLE),this.state=4540,this.match(t.EQUAL_SYMBOL),this.state=4541,this.match(t.LR_BRACKET),this.state=4542,this.simpleStrings(),this.state=4543,this.match(t.RR_BRACKET);break;case t.REPLICATE_REWRITE_DB:for(s=new nD(s),this.enterOuterAlt(s,7),this.state=4545,this.match(t.REPLICATE_REWRITE_DB),this.state=4546,this.match(t.EQUAL_SYMBOL),this.state=4547,this.match(t.LR_BRACKET),this.state=4548,this.tablePair(),this.state=4553,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4549,this.match(t.COMMA),this.state=4550,this.tablePair(),this.state=4555,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=4556,this.match(t.RR_BRACKET);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tablePair(){let e=new oD(this.context,this.state);this.enterRule(e,360,t.RULE_tablePair);try{this.enterOuterAlt(e,1),this.state=4560,this.match(t.LR_BRACKET),this.state=4561,e._firstTable=this.tableName(),this.state=4562,this.match(t.COMMA),this.state=4563,e._secondTable=this.tableName(),this.state=4564,this.match(t.RR_BRACKET)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}threadType(){let e,s=new RD(this.context,this.state);this.enterRule(s,362,t.RULE_threadType);try{this.enterOuterAlt(s,1),this.state=4566,e=this.tokenStream.LA(1),462===e||628===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}untilOption(){let e,s=new AD(this.context,this.state);this.enterRule(s,364,t.RULE_untilOption);try{switch(this.state=4586,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SQL_AFTER_GTIDS:case t.SQL_BEFORE_GTIDS:s=new SD(s),this.enterOuterAlt(s,1),this.state=4568,s._gtids=this.tokenStream.LT(1),e=this.tokenStream.LA(1),622===e||624===e?(this.errorHandler.reportMatch(this),this.consume()):s._gtids=this.errorHandler.recoverInline(this),this.state=4569,this.match(t.EQUAL_SYMBOL),this.state=4570,this.gtuidSet();break;case t.MASTER_LOG_FILE:s=new OD(s),this.enterOuterAlt(s,2),this.state=4571,this.match(t.MASTER_LOG_FILE),this.state=4572,this.match(t.EQUAL_SYMBOL),this.state=4573,this.match(t.STRING_LITERAL),this.state=4574,this.match(t.COMMA),this.state=4575,this.match(t.MASTER_LOG_POS),this.state=4576,this.match(t.EQUAL_SYMBOL),this.state=4577,this.decimalLiteral();break;case t.RELAY_LOG_FILE:s=new ID(s),this.enterOuterAlt(s,3),this.state=4578,this.match(t.RELAY_LOG_FILE),this.state=4579,this.match(t.EQUAL_SYMBOL),this.state=4580,this.match(t.STRING_LITERAL),this.state=4581,this.match(t.COMMA),this.state=4582,this.match(t.RELAY_LOG_POS),this.state=4583,this.match(t.EQUAL_SYMBOL),this.state=4584,this.decimalLiteral();break;case t.SQL_AFTER_MTS_GAPS:s=new lD(s),this.enterOuterAlt(s,4),this.state=4585,this.match(t.SQL_AFTER_MTS_GAPS);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}connectionOption(){let e=new uD(this.context,this.state);this.enterRule(e,366,t.RULE_connectionOption);try{switch(this.state=4600,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.USER:e=new LD(e),this.enterOuterAlt(e,1),this.state=4588,this.match(t.USER),this.state=4589,this.match(t.EQUAL_SYMBOL),this.state=4590,e._conOptUser=this.match(t.STRING_LITERAL);break;case t.PASSWORD:e=new _D(e),this.enterOuterAlt(e,2),this.state=4591,this.match(t.PASSWORD),this.state=4592,this.match(t.EQUAL_SYMBOL),this.state=4593,e._conOptPassword=this.match(t.STRING_LITERAL);break;case t.DEFAULT_AUTH:e=new CD(e),this.enterOuterAlt(e,3),this.state=4594,this.match(t.DEFAULT_AUTH),this.state=4595,this.match(t.EQUAL_SYMBOL),this.state=4596,e._conOptDefAuth=this.match(t.STRING_LITERAL);break;case t.PLUGIN_DIR:e=new ND(e),this.enterOuterAlt(e,4),this.state=4597,this.match(t.PLUGIN_DIR),this.state=4598,this.match(t.EQUAL_SYMBOL),this.state=4599,e._conOptPluginDir=this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}gtuidSet(){let e,s=new PD(this.context,this.state);this.enterRule(s,368,t.RULE_gtuidSet);try{switch(this.state=4611,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ZERO_DECIMAL:case t.ONE_DECIMAL:case t.TWO_DECIMAL:case t.DECIMAL_LITERAL:case t.REAL_LITERAL:for(this.enterOuterAlt(s,1),this.state=4602,this.uuidSet(),this.state=4607,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4603,this.match(t.COMMA),this.state=4604,this.uuidSet(),this.state=4609,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case t.STRING_LITERAL:this.enterOuterAlt(s,2),this.state=4610,this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xaStartTransaction(){let e,s=new MD(this.context,this.state);this.enterRule(s,370,t.RULE_xaStartTransaction);try{this.enterOuterAlt(s,1),this.state=4613,this.match(t.XA),this.state=4614,s._xaStart=this.tokenStream.LT(1),e=this.tokenStream.LA(1),344===e||629===e?(this.errorHandler.reportMatch(this),this.consume()):s._xaStart=this.errorHandler.recoverInline(this),this.state=4615,this.xid(),this.state=4617,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(90===e||591===e)&&(this.state=4616,s._xaAction=this.tokenStream.LT(1),e=this.tokenStream.LA(1),90===e||591===e?(this.errorHandler.reportMatch(this),this.consume()):s._xaAction=this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xaEndTransaction(){let e,s=new dD(this.context,this.state);this.enterRule(s,372,t.RULE_xaEndTransaction);try{this.enterOuterAlt(s,1),this.state=4619,this.match(t.XA),this.state=4620,this.match(t.END),this.state=4621,this.xid(),this.state=4627,this.errorHandler.sync(this),e=this.tokenStream.LA(1),643===e&&(this.state=4622,this.match(t.SUSPEND),this.state=4625,this.errorHandler.sync(this),e=this.tokenStream.LA(1),65===e&&(this.state=4623,this.match(t.FOR),this.state=4624,this.match(t.MIGRATE)))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xaPrepareStatement(){let e=new UD(this.context,this.state);this.enterRule(e,374,t.RULE_xaPrepareStatement);try{this.enterOuterAlt(e,1),this.state=4629,this.match(t.XA),this.state=4630,this.match(t.PREPARE),this.state=4631,this.xid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}xaCommitWork(){let e,s=new mD(this.context,this.state);this.enterRule(s,376,t.RULE_xaCommitWork);try{this.enterOuterAlt(s,1),this.state=4633,this.match(t.XA),this.state=4634,this.match(t.COMMIT),this.state=4635,this.xid(),this.state=4638,this.errorHandler.sync(this),e=this.tokenStream.LA(1),536===e&&(this.state=4636,this.match(t.ONE),this.state=4637,this.match(t.PHASE))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xaRollbackWork(){let e=new DD(this.context,this.state);this.enterRule(e,378,t.RULE_xaRollbackWork);try{this.enterOuterAlt(e,1),this.state=4640,this.match(t.XA),this.state=4641,this.match(t.ROLLBACK),this.state=4642,this.xid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}xaRecoverWork(){let e,s=new pD(this.context,this.state);this.enterRule(s,380,t.RULE_xaRecoverWork);try{this.enterOuterAlt(s,1),this.state=4644,this.match(t.XA),this.state=4645,this.match(t.RECOVER),this.state=4648,this.errorHandler.sync(this),e=this.tokenStream.LA(1),32===e&&(this.state=4646,this.match(t.CONVERT),this.state=4647,this.xid())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}prepareStatement(){let e=new gD(this.context,this.state);this.enterRule(e,382,t.RULE_prepareStatement);try{switch(this.enterOuterAlt(e,1),this.state=4650,this.match(t.PREPARE),this.state=4651,this.uid(),this.state=4652,this.match(t.FROM),this.state=4655,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.STRING_LITERAL:this.state=4653,e._query=this.match(t.STRING_LITERAL);break;case t.LOCAL_ID:this.state=4654,e._variable=this.match(t.LOCAL_ID);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}executeStatement(){let e,s=new xD(this.context,this.state);this.enterRule(s,384,t.RULE_executeStatement);try{this.enterOuterAlt(s,1),this.state=4657,this.match(t.EXECUTE),this.state=4658,this.uid(),this.state=4661,this.errorHandler.sync(this),e=this.tokenStream.LA(1),187===e&&(this.state=4659,this.match(t.USING),this.state=4660,this.userVariables())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}deallocatePrepare(){let e,s=new kD(this.context,this.state);this.enterRule(s,386,t.RULE_deallocatePrepare);try{this.enterOuterAlt(s,1),this.state=4663,s._dropFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),51===e||390===e?(this.errorHandler.reportMatch(this),this.consume()):s._dropFormat=this.errorHandler.recoverInline(this),this.state=4664,this.match(t.PREPARE),this.state=4665,this.uid()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}routineBody(){let e=new HD(this.context,this.state);this.enterRule(e,388,t.RULE_routineBody);try{switch(this.state=4669,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,666,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4667,this.blockStatement();break;case 2:this.enterOuterAlt(e,2),this.state=4668,this.statement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}blockStatement(){let e,s=new GD(this.context,this.state);this.enterRule(s,390,t.RULE_blockStatement);try{let a;if(this.enterOuterAlt(s,1),1===(this.state=4674,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,667,this.context)))this.state=4671,this.uid(),this.state=4672,this.match(t.COLON_SYMB);for(this.state=4676,this.match(t.BEGIN),this.state=4682,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,668,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=4677,this.declareVariable(),this.state=4678,this.match(t.SEMI)),this.state=4684,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,668,this.context);for(this.state=4690,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,669,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=4685,this.declareCondition(),this.state=4686,this.match(t.SEMI)),this.state=4692,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,669,this.context);for(this.state=4698,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,670,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=4693,this.declareCursor(),this.state=4694,this.match(t.SEMI)),this.state=4700,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,670,this.context);for(this.state=4706,this.errorHandler.sync(this),e=this.tokenStream.LA(1);41===e;)this.state=4701,this.declareHandler(),this.state=4702,this.match(t.SEMI),this.state=4708,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=4712,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,672,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=4709,this.procedureSqlStatement()),this.state=4714,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,672,this.context);this.state=4715,this.match(t.END),this.state=4717,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=4716,this.uid())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}caseStatement(){let e,s=new FD(this.context,this.state);this.enterRule(s,392,t.RULE_caseStatement);try{let a;switch(this.enterOuterAlt(s,1),this.state=4719,this.match(t.CASE),this.state=4722,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,674,this.context)){case 1:this.state=4720,this.uid();break;case 2:this.state=4721,this.expression(0)}this.state=4725,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=4724,this.caseAlternative(),this.state=4727,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(189===e);if(this.state=4735,this.errorHandler.sync(this),e=this.tokenStream.LA(1),53===e){this.state=4729,this.match(t.ELSE),this.state=4731,this.errorHandler.sync(this),a=1;do{if(1!==a)throw new Ei(this);this.state=4730,this.procedureSqlStatement(),this.state=4733,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,676,this.context)}while(2!==a&&a!==ja.INVALID_ALT_NUMBER)}this.state=4737,this.match(t.END),this.state=4738,this.match(t.CASE)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}ifStatement(){let e,s=new vD(this.context,this.state);this.enterRule(s,394,t.RULE_ifStatement);try{let a;this.enterOuterAlt(s,1),this.state=4740,this.match(t.IF),this.state=4741,this.expression(0),this.state=4742,this.match(t.THEN),this.state=4744,this.errorHandler.sync(this),a=1;do{if(1!==a)throw new Ei(this);this.state=4743,s._procedureSqlStatement=this.procedureSqlStatement(),s._thenStatements.push(s._procedureSqlStatement),this.state=4746,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,678,this.context)}while(2!==a&&a!==ja.INVALID_ALT_NUMBER);for(this.state=4751,this.errorHandler.sync(this),e=this.tokenStream.LA(1);54===e;)this.state=4748,this.elifAlternative(),this.state=4753,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(this.state=4760,this.errorHandler.sync(this),e=this.tokenStream.LA(1),53===e){this.state=4754,this.match(t.ELSE),this.state=4756,this.errorHandler.sync(this),a=1;do{if(1!==a)throw new Ei(this);this.state=4755,s._procedureSqlStatement=this.procedureSqlStatement(),s._elseStatements.push(s._procedureSqlStatement),this.state=4758,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,680,this.context)}while(2!==a&&a!==ja.INVALID_ALT_NUMBER)}this.state=4762,this.match(t.END),this.state=4763,this.match(t.IF)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}iterateStatement(){let e=new BD(this.context,this.state);this.enterRule(e,396,t.RULE_iterateStatement);try{this.enterOuterAlt(e,1),this.state=4765,this.match(t.ITERATE),this.state=4766,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}leaveStatement(){let e=new yD(this.context,this.state);this.enterRule(e,398,t.RULE_leaveStatement);try{this.enterOuterAlt(e,1),this.state=4768,this.match(t.LEAVE),this.state=4769,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}loopStatement(){let e,s=new fD(this.context,this.state);this.enterRule(s,400,t.RULE_loopStatement);try{let a;this.enterOuterAlt(s,1),this.state=4774,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=4771,this.uid(),this.state=4772,this.match(t.COLON_SYMB)),this.state=4776,this.match(t.LOOP),this.state=4778,this.errorHandler.sync(this),a=1;do{if(1!==a)throw new Ei(this);this.state=4777,this.procedureSqlStatement(),this.state=4780,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,683,this.context)}while(2!==a&&a!==ja.INVALID_ALT_NUMBER);this.state=4782,this.match(t.END),this.state=4783,this.match(t.LOOP),this.state=4785,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=4784,this.uid())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}repeatStatement(){let e,s=new YD(this.context,this.state);this.enterRule(s,402,t.RULE_repeatStatement);try{let a;if(this.enterOuterAlt(s,1),1===(this.state=4790,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,685,this.context)))this.state=4787,this.uid(),this.state=4788,this.match(t.COLON_SYMB);this.state=4792,this.match(t.REPEAT),this.state=4794,this.errorHandler.sync(this),a=1;do{if(1!==a)throw new Ei(this);this.state=4793,this.procedureSqlStatement(),this.state=4796,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,686,this.context)}while(2!==a&&a!==ja.INVALID_ALT_NUMBER);this.state=4798,this.match(t.UNTIL),this.state=4799,this.expression(0),this.state=4800,this.match(t.END),this.state=4801,this.match(t.REPEAT),this.state=4803,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=4802,this.uid())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}returnStatement(){let e=new wD(this.context,this.state);this.enterRule(e,404,t.RULE_returnStatement);try{this.enterOuterAlt(e,1),this.state=4805,this.match(t.RETURN),this.state=4806,this.expression(0)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}whileStatement(){let e,s=new bD(this.context,this.state);this.enterRule(s,406,t.RULE_whileStatement);try{let a;this.enterOuterAlt(s,1),this.state=4811,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=4808,this.uid(),this.state=4809,this.match(t.COLON_SYMB)),this.state=4813,this.match(t.WHILE),this.state=4814,this.expression(0),this.state=4815,this.match(t.DO),this.state=4817,this.errorHandler.sync(this),a=1;do{if(1!==a)throw new Ei(this);this.state=4816,this.procedureSqlStatement(),this.state=4819,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,689,this.context)}while(2!==a&&a!==ja.INVALID_ALT_NUMBER);this.state=4821,this.match(t.END),this.state=4822,this.match(t.WHILE),this.state=4824,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=4823,this.uid())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}cursorStatement(){let e,s=new WD(this.context,this.state);this.enterRule(s,408,t.RULE_cursorStatement);try{switch(this.state=4841,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CLOSE:s=new VD(s),this.enterOuterAlt(s,1),this.state=4826,this.match(t.CLOSE),this.state=4827,this.uid();break;case t.FETCH:if(s=new KD(s),this.enterOuterAlt(s,2),1===(this.state=4828,this.match(t.FETCH),this.state=4833,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,692,this.context)))this.state=4830,this.errorHandler.sync(this),e=this.tokenStream.LA(1),520===e&&(this.state=4829,this.match(t.NEXT)),this.state=4832,this.match(t.FROM);this.state=4835,this.uid(),this.state=4836,this.match(t.INTO),this.state=4837,this.uidList();break;case t.OPEN:s=new XD(s),this.enterOuterAlt(s,3),this.state=4839,this.match(t.OPEN),this.state=4840,this.uid();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}declareVariable(){let e,s=new QD(this.context,this.state);this.enterRule(s,410,t.RULE_declareVariable);try{this.enterOuterAlt(s,1),this.state=4843,this.match(t.DECLARE),this.state=4844,this.uidList(),this.state=4845,this.dataType(),this.state=4848,this.errorHandler.sync(this),e=this.tokenStream.LA(1),42===e&&(this.state=4846,this.match(t.DEFAULT),this.state=4847,this.expression(0))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}declareCondition(){let e,s=new JD(this.context,this.state);this.enterRule(s,412,t.RULE_declareCondition);try{switch(this.enterOuterAlt(s,1),this.state=4850,this.match(t.DECLARE),this.state=4851,this.uid(),this.state=4852,this.match(t.CONDITION),this.state=4853,this.match(t.FOR),this.state=4860,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ZERO_DECIMAL:case t.ONE_DECIMAL:case t.TWO_DECIMAL:case t.DECIMAL_LITERAL:case t.REAL_LITERAL:this.state=4854,this.decimalLiteral();break;case t.SQLSTATE:this.state=4855,this.match(t.SQLSTATE),this.state=4857,this.errorHandler.sync(this),e=this.tokenStream.LA(1),669===e&&(this.state=4856,this.match(t.VALUE)),this.state=4859,this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}declareCursor(){let e=new ZD(this.context,this.state);this.enterRule(e,414,t.RULE_declareCursor);try{this.enterOuterAlt(e,1),this.state=4862,this.match(t.DECLARE),this.state=4863,this.uid(),this.state=4864,this.match(t.CURSOR),this.state=4865,this.match(t.FOR),this.state=4866,this.selectStatement()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declareHandler(){let e,s=new qD(this.context,this.state);this.enterRule(s,416,t.RULE_declareHandler);try{for(this.enterOuterAlt(s,1),this.state=4868,this.match(t.DECLARE),this.state=4869,s._handlerAction=this.tokenStream.LT(1),e=this.tokenStream.LA(1),31===e||61===e||179===e?(this.errorHandler.reportMatch(this),this.consume()):s._handlerAction=this.errorHandler.recoverInline(this),this.state=4870,this.match(t.HANDLER),this.state=4871,this.match(t.FOR),this.state=4872,this.handlerConditionValue(),this.state=4877,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4873,this.match(t.COMMA),this.state=4874,this.handlerConditionValue(),this.state=4879,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=4880,this.routineBody()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}handlerConditionValue(){let e,s=new jD(this.context,this.state);this.enterRule(s,418,t.RULE_handlerConditionValue);try{switch(this.state=4893,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ZERO_DECIMAL:case t.ONE_DECIMAL:case t.TWO_DECIMAL:case t.DECIMAL_LITERAL:case t.REAL_LITERAL:s=new $D(s),this.enterOuterAlt(s,1),this.state=4882,this.decimalLiteral();break;case t.SQLSTATE:s=new ep(s),this.enterOuterAlt(s,2),this.state=4883,this.match(t.SQLSTATE),this.state=4885,this.errorHandler.sync(this),e=this.tokenStream.LA(1),669===e&&(this.state=4884,this.match(t.VALUE)),this.state=4887,this.match(t.STRING_LITERAL);break;case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:s=new ap(s),this.enterOuterAlt(s,3),this.state=4888,this.uid();break;case t.SQLWARNING:s=new zD(s),this.enterOuterAlt(s,4),this.state=4889,this.match(t.SQLWARNING);break;case t.NOT:s=new tp(s),this.enterOuterAlt(s,5),this.state=4890,this.match(t.NOT),this.state=4891,this.match(t.FOUND);break;case t.SQLEXCEPTION:s=new sp(s),this.enterOuterAlt(s,6),this.state=4892,this.match(t.SQLEXCEPTION);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}procedureSqlStatement(){let e=new rp(this.context,this.state);this.enterRule(e,420,t.RULE_procedureSqlStatement);try{switch(this.enterOuterAlt(e,1),this.state=4897,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,700,this.context)){case 1:this.state=4895,this.compoundStatement();break;case 2:this.state=4896,this.statement()}this.state=4899,this.match(t.SEMI)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}caseAlternative(){let e=new ip(this.context,this.state);this.enterRule(e,422,t.RULE_caseAlternative);try{let s;switch(this.enterOuterAlt(e,1),this.state=4901,this.match(t.WHEN),this.state=4904,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,701,this.context)){case 1:this.state=4902,this.constant();break;case 2:this.state=4903,this.expression(0)}this.state=4906,this.match(t.THEN),this.state=4908,this.errorHandler.sync(this),s=1;do{if(1!==s)throw new Ei(this);this.state=4907,this.procedureSqlStatement(),this.state=4910,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,702,this.context)}while(2!==s&&s!==ja.INVALID_ALT_NUMBER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}elifAlternative(){let e=new cp(this.context,this.state);this.enterRule(e,424,t.RULE_elifAlternative);try{let s;this.enterOuterAlt(e,1),this.state=4912,this.match(t.ELSEIF),this.state=4913,this.expression(0),this.state=4914,this.match(t.THEN),this.state=4916,this.errorHandler.sync(this),s=1;do{if(1!==s)throw new Ei(this);this.state=4915,this.procedureSqlStatement(),this.state=4918,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,703,this.context)}while(2!==s&&s!==ja.INVALID_ALT_NUMBER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alterUser(){let e,s=new np(this.context,this.state);this.enterRule(s,426,t.RULE_alterUser);try{switch(this.state=4983,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,716,this.context)){case 1:for(s=new Ep(s),this.enterOuterAlt(s,1),this.state=4920,this.match(t.ALTER),this.state=4921,this.match(t.USER),this.state=4922,this.userSpecification(),this.state=4927,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=4923,this.match(t.COMMA),this.state=4924,this.userSpecification(),this.state=4929,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 2:if(s=new hp(s),this.enterOuterAlt(s,2),this.state=4930,this.match(t.ALTER),this.state=4931,this.match(t.USER),this.state=4933,this.errorHandler.sync(this),e=this.tokenStream.LA(1),77===e&&(this.state=4932,this.ifExists()),this.state=4935,this.newUserAuthOptionList(),this.state=4950,this.errorHandler.sync(this),e=this.tokenStream.LA(1),142===e)switch(this.state=4936,this.match(t.REQUIRE),this.state=4948,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NONE:this.state=4937,s._tlsNone=this.match(t.NONE);break;case t.SSL:case t.CIPHER:case t.ISSUER:case t.SUBJECT:case t.X509:for(this.state=4938,this.tlsOption(),this.state=4945,this.errorHandler.sync(this),e=this.tokenStream.LA(1);10===e||167===e||358===e||465===e||640===e||680===e;)this.state=4940,this.errorHandler.sync(this),e=this.tokenStream.LA(1),10===e&&(this.state=4939,this.match(t.AND)),this.state=4942,this.tlsOption(),this.state=4947,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;default:throw new Ei(this)}if(this.state=4958,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e){this.state=4952,this.match(t.WITH),this.state=4954,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=4953,this.userResourceOption(),this.state=4956,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(!(e-498&-32)&&1<<e-498&51)}for(this.state=4964,this.errorHandler.sync(this),e=this.tokenStream.LA(1);332===e||424===e||551===e||552===e;){switch(this.state=4962,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FAILED_LOGIN_ATTEMPTS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:this.state=4960,this.userPasswordOption();break;case t.ACCOUNT:this.state=4961,this.userLockOption();break;default:throw new Ei(this)}this.state=4966,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}switch(this.state=4971,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.COMMENT:this.state=4967,this.match(t.COMMENT),this.state=4968,this.match(t.STRING_LITERAL);break;case t.ATTRIBUTE:this.state=4969,this.match(t.ATTRIBUTE),this.state=4970,this.match(t.STRING_LITERAL);case t.EOF:case t.SEMI:}break;case 3:s=new hp(s),this.enterOuterAlt(s,3),this.state=4973,this.match(t.ALTER),this.state=4974,this.match(t.USER),this.state=4976,this.errorHandler.sync(this),e=this.tokenStream.LA(1),77===e&&(this.state=4975,this.ifExists()),this.state=4978,this.userName(),this.state=4979,this.match(t.DEFAULT),this.state=4980,this.match(t.ROLE),this.state=4981,this.roleOption()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createUser(){let e,s=new Tp(this.context,this.state);this.enterRule(s,428,t.RULE_createUser);try{switch(this.state=5036,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,728,this.context)){case 1:s=new op(s),this.enterOuterAlt(s,1),this.state=4985,this.match(t.CREATE),this.state=4986,this.match(t.USER),this.state=4987,this.newUserAuthOptionList();break;case 2:if(s=new Rp(s),this.enterOuterAlt(s,2),this.state=4988,this.match(t.CREATE),this.state=4989,this.match(t.USER),this.state=4991,this.errorHandler.sync(this),e=this.tokenStream.LA(1),77===e&&(this.state=4990,this.ifNotExists()),this.state=4993,this.newUserAuthOptionList(),this.state=4997,this.errorHandler.sync(this),e=this.tokenStream.LA(1),42===e&&(this.state=4994,this.match(t.DEFAULT),this.state=4995,this.match(t.ROLE),this.state=4996,this.roleOption()),this.state=5013,this.errorHandler.sync(this),e=this.tokenStream.LA(1),142===e)switch(this.state=4999,this.match(t.REQUIRE),this.state=5011,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NONE:this.state=5e3,s._tlsNone=this.match(t.NONE);break;case t.SSL:case t.CIPHER:case t.ISSUER:case t.SUBJECT:case t.X509:for(this.state=5001,this.tlsOption(),this.state=5008,this.errorHandler.sync(this),e=this.tokenStream.LA(1);10===e||167===e||358===e||465===e||640===e||680===e;)this.state=5003,this.errorHandler.sync(this),e=this.tokenStream.LA(1),10===e&&(this.state=5002,this.match(t.AND)),this.state=5005,this.tlsOption(),this.state=5010,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;default:throw new Ei(this)}if(this.state=5021,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e){this.state=5015,this.match(t.WITH),this.state=5017,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=5016,this.userResourceOption(),this.state=5019,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(!(e-498&-32)&&1<<e-498&51)}for(this.state=5027,this.errorHandler.sync(this),e=this.tokenStream.LA(1);332===e||424===e||551===e||552===e;){switch(this.state=5025,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FAILED_LOGIN_ATTEMPTS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:this.state=5023,this.userPasswordOption();break;case t.ACCOUNT:this.state=5024,this.userLockOption();break;default:throw new Ei(this)}this.state=5029,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}switch(this.state=5034,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.COMMENT:this.state=5030,this.match(t.COMMENT),this.state=5031,this.match(t.STRING_LITERAL);break;case t.ATTRIBUTE:this.state=5032,this.match(t.ATTRIBUTE),this.state=5033,this.match(t.STRING_LITERAL);case t.EOF:case t.SEMI:}}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dropUser(){let e,s=new Ap(this.context,this.state);this.enterRule(s,430,t.RULE_dropUser);try{this.enterOuterAlt(s,1),this.state=5038,this.match(t.DROP),this.state=5039,this.match(t.USER),this.state=5041,this.errorHandler.sync(this),e=this.tokenStream.LA(1),77===e&&(this.state=5040,this.ifExists()),this.state=5043,this.userNameList()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}grantStatement(){let e,s=new Sp(this.context,this.state);this.enterRule(s,432,t.RULE_grantStatement);try{switch(this.state=5105,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,741,this.context)){case 1:for(this.enterOuterAlt(s,1),this.state=5045,this.match(t.GRANT),this.state=5046,this.privelegeClause(),this.state=5051,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5047,this.match(t.COMMA),this.state=5048,this.privelegeClause(),this.state=5053,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(1===(this.state=5054,this.match(t.ON),this.state=5056,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,731,this.context)))this.state=5055,e=this.tokenStream.LA(1),131===e||172===e||437===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);if(this.state=5058,this.privilegeLevel(),this.state=5059,this.match(t.TO),this.state=5060,this.userOrRoleNameList(),this.state=5075,this.errorHandler.sync(this),e=this.tokenStream.LA(1),142===e)switch(this.state=5061,this.match(t.REQUIRE),this.state=5073,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.NONE:this.state=5062,s._tlsNone=this.match(t.NONE);break;case t.SSL:case t.CIPHER:case t.ISSUER:case t.SUBJECT:case t.X509:for(this.state=5063,this.tlsOption(),this.state=5070,this.errorHandler.sync(this),e=this.tokenStream.LA(1);10===e||167===e||358===e||465===e||640===e||680===e;)this.state=5065,this.errorHandler.sync(this),e=this.tokenStream.LA(1),10===e&&(this.state=5064,this.match(t.AND)),this.state=5067,this.tlsOption(),this.state=5072,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;default:throw new Ei(this)}if(this.state=5086,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e)for(this.state=5077,this.match(t.WITH),this.state=5083,this.errorHandler.sync(this),e=this.tokenStream.LA(1);72===e||!(e-498&-32)&&1<<e-498&51;){switch(this.state=5081,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.GRANT:this.state=5078,this.match(t.GRANT),this.state=5079,this.match(t.OPTION);break;case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:this.state=5080,this.userResourceOption();break;default:throw new Ei(this)}this.state=5085,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}this.state=5094,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=5088,this.match(t.AS),this.state=5089,this.userName(),this.state=5090,this.match(t.WITH),this.state=5091,this.match(t.ROLE),this.state=5092,this.roleOption());break;case 2:this.enterOuterAlt(s,2),this.state=5096,this.match(t.GRANT),this.state=5097,this.roleNameList(),this.state=5098,this.match(t.TO),this.state=5099,this.userOrRoleNameList(),this.state=5103,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e&&(this.state=5100,this.match(t.WITH),this.state=5101,this.match(t.ADMIN),this.state=5102,this.match(t.OPTION))}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}roleOption(){let e,s=new lp(this.context,this.state);this.enterRule(s,434,t.RULE_roleOption);try{switch(this.state=5115,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,743,this.context)){case 1:this.enterOuterAlt(s,1),this.state=5107,this.match(t.DEFAULT);break;case 2:this.enterOuterAlt(s,2),this.state=5108,this.match(t.NONE);break;case 3:this.enterOuterAlt(s,3),this.state=5109,this.match(t.ALL),this.state=5112,this.errorHandler.sync(this),e=this.tokenStream.LA(1),59===e&&(this.state=5110,this.match(t.EXCEPT),this.state=5111,this.roleNameList());break;case 4:this.enterOuterAlt(s,4),this.state=5114,this.roleNameList()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}grantProxy(){let e,s=new Op(this.context,this.state);this.enterRule(s,436,t.RULE_grantProxy);try{for(this.enterOuterAlt(s,1),this.state=5117,this.match(t.GRANT),this.state=5118,this.match(t.PROXY),this.state=5119,this.match(t.ON),this.state=5120,s._fromFirst=this.userName(),this.state=5121,this.match(t.TO),this.state=5122,s._toFirst=this.userName(),this.state=5127,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5123,this.match(t.COMMA),this.state=5124,s._userName=this.userName(),s._toOther.push(s._userName),this.state=5129,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=5133,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e&&(this.state=5130,this.match(t.WITH),this.state=5131,this.match(t.GRANT),this.state=5132,this.match(t.OPTION))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}renameUser(){let e,s=new Ip(this.context,this.state);this.enterRule(s,438,t.RULE_renameUser);try{for(this.enterOuterAlt(s,1),this.state=5135,this.match(t.RENAME),this.state=5136,this.match(t.USER),this.state=5137,this.renameUserClause(),this.state=5142,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5138,this.match(t.COMMA),this.state=5139,this.renameUserClause(),this.state=5144,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}revokeStatement(){let e,s=new up(this.context,this.state);this.enterRule(s,440,t.RULE_revokeStatement);try{switch(this.state=5181,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,751,this.context)){case 1:for(s=new Cp(s),this.enterOuterAlt(s,1),this.state=5145,this.match(t.REVOKE),this.state=5146,this.privelegeClause(),this.state=5151,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5147,this.match(t.COMMA),this.state=5148,this.privelegeClause(),this.state=5153,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(1===(this.state=5154,this.match(t.ON),this.state=5156,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,748,this.context)))this.state=5155,s._privilegeObject=this.tokenStream.LT(1),e=this.tokenStream.LA(1),131===e||172===e||437===e?(this.errorHandler.reportMatch(this),this.consume()):s._privilegeObject=this.errorHandler.recoverInline(this);this.state=5158,this.privilegeLevel(),this.state=5159,this.match(t.FROM),this.state=5160,this.userOrRoleNameList();break;case 2:s=new Np(s),this.enterOuterAlt(s,2),this.state=5162,this.match(t.REVOKE),this.state=5163,this.match(t.ALL),this.state=5165,this.errorHandler.sync(this),e=this.tokenStream.LA(1),725===e&&(this.state=5164,this.match(t.PRIVILEGES)),this.state=5167,this.match(t.COMMA),this.state=5168,this.match(t.GRANT),this.state=5169,this.match(t.OPTION),this.state=5170,this.match(t.FROM),this.state=5171,this.userOrRoleNameList();break;case 3:for(s=new Lp(s),this.enterOuterAlt(s,3),this.state=5172,this.match(t.REVOKE),this.state=5173,this.roleNameList(),this.state=5174,this.match(t.FROM),this.state=5178,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e;)this.state=5175,this.userOrRoleNameList(),this.state=5180,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}revokeProxy(){let e,s=new _p(this.context,this.state);this.enterRule(s,442,t.RULE_revokeProxy);try{for(this.enterOuterAlt(s,1),this.state=5183,this.match(t.REVOKE),this.state=5184,this.match(t.PROXY),this.state=5185,this.match(t.ON),this.state=5186,s._onUser=this.userName(),this.state=5187,this.match(t.FROM),this.state=5188,s._fromFirst=this.userName(),this.state=5193,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5189,this.match(t.COMMA),this.state=5190,s._userName=this.userName(),s._fromOther.push(s._userName),this.state=5195,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}setPasswordStatement(){let e,s=new Pp(this.context,this.state);this.enterRule(s,444,t.RULE_setPasswordStatement);try{switch(this.enterOuterAlt(s,1),this.state=5196,this.match(t.SET),this.state=5197,this.match(t.PASSWORD),this.state=5200,this.errorHandler.sync(this),e=this.tokenStream.LA(1),65===e&&(this.state=5198,this.match(t.FOR),this.state=5199,this.userName()),this.state=5202,this.match(t.EQUAL_SYMBOL),this.state=5205,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OLD_PASSWORD:case t.PASSWORD:this.state=5203,this.passwordFunctionClause();break;case t.STRING_LITERAL:this.state=5204,this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}userSpecification(){let e=new Mp(this.context,this.state);this.enterRule(e,446,t.RULE_userSpecification);try{this.enterOuterAlt(e,1),this.state=5207,this.userName(),this.state=5208,this.userPasswordOption()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}newUserAuthOptionList(){let e,s=new dp(this.context,this.state);this.enterRule(s,448,t.RULE_newUserAuthOptionList);try{for(this.enterOuterAlt(s,1),this.state=5210,this.newUserAuthOption(),this.state=5215,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5211,this.match(t.COMMA),this.state=5212,this.newUserAuthOption(),this.state=5217,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}newUserAuthOption(){let e=new Up(this.context,this.state);this.enterRule(e,450,t.RULE_newUserAuthOption);try{switch(this.state=5243,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,756,this.context)){case 1:e=new xp(e),this.enterOuterAlt(e,1),this.state=5218,this.newUserName(),this.state=5219,this.match(t.IDENTIFIED),this.state=5220,this.match(t.BY),this.state=5221,this.match(t.PASSWORD),this.state=5222,e._hashed=this.match(t.STRING_LITERAL);break;case 2:e=new pp(e),this.enterOuterAlt(e,2),this.state=5224,this.newUserName(),this.state=5225,this.match(t.IDENTIFIED),this.state=5226,this.match(t.BY),this.state=5227,this.match(t.RANDOM),this.state=5228,this.match(t.PASSWORD),this.state=5229,this.authOptionClause();break;case 3:e=new gp(e),this.enterOuterAlt(e,3),this.state=5231,this.newUserName(),this.state=5232,this.match(t.IDENTIFIED),this.state=5233,this.match(t.BY),this.state=5234,this.match(t.STRING_LITERAL),this.state=5235,this.authOptionClause();break;case 4:e=new Dp(e),this.enterOuterAlt(e,4),this.state=5237,this.newUserName(),this.state=5238,this.match(t.IDENTIFIED),this.state=5239,this.match(t.WITH),this.state=5240,this.authenticationRule();break;case 5:e=new mp(e),this.enterOuterAlt(e,5),this.state=5242,this.newUserName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}authOptionClause(){let e,s=new kp(this.context,this.state);this.enterRule(s,452,t.RULE_authOptionClause);try{this.enterOuterAlt(s,1),this.state=5247,this.errorHandler.sync(this),e=this.tokenStream.LA(1),141===e&&(this.state=5245,this.match(t.REPLACE),this.state=5246,this.match(t.STRING_LITERAL)),this.state=5252,this.errorHandler.sync(this),e=this.tokenStream.LA(1),145===e&&(this.state=5249,this.match(t.RETAIN),this.state=5250,this.match(t.CURRENT),this.state=5251,this.match(t.PASSWORD))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}authenticationRule(){let e,s=new Hp(this.context,this.state);this.enterRule(s,454,t.RULE_authenticationRule);try{switch(this.state=5268,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,761,this.context)){case 1:if(s=new Fp(s),this.enterOuterAlt(s,1),this.state=5254,this.authPlugin(),this.state=5262,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e||19===e||187===e){switch(this.state=5255,e=this.tokenStream.LA(1),12===e||19===e||187===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5259,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.STRING_LITERAL:this.state=5256,this.match(t.STRING_LITERAL);break;case t.RANDOM:this.state=5257,this.match(t.RANDOM),this.state=5258,this.match(t.PASSWORD);break;default:throw new Ei(this)}this.state=5261,this.authOptionClause()}break;case 2:s=new Gp(s),this.enterOuterAlt(s,2),this.state=5264,this.authPlugin(),this.state=5265,this.match(t.USING),this.state=5266,this.passwordFunctionClause()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tlsOption(){let e=new vp(this.context,this.state);this.enterRule(e,456,t.RULE_tlsOption);try{switch(this.state=5278,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SSL:this.enterOuterAlt(e,1),this.state=5270,this.match(t.SSL);break;case t.X509:this.enterOuterAlt(e,2),this.state=5271,this.match(t.X509);break;case t.CIPHER:this.enterOuterAlt(e,3),this.state=5272,this.match(t.CIPHER),this.state=5273,this.match(t.STRING_LITERAL);break;case t.ISSUER:this.enterOuterAlt(e,4),this.state=5274,this.match(t.ISSUER),this.state=5275,this.match(t.STRING_LITERAL);break;case t.SUBJECT:this.enterOuterAlt(e,5),this.state=5276,this.match(t.SUBJECT),this.state=5277,this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}userResourceOption(){let e=new Bp(this.context,this.state);this.enterRule(e,458,t.RULE_userResourceOption);try{switch(this.state=5288,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.MAX_QUERIES_PER_HOUR:this.enterOuterAlt(e,1),this.state=5280,this.match(t.MAX_QUERIES_PER_HOUR),this.state=5281,this.decimalLiteral();break;case t.MAX_UPDATES_PER_HOUR:this.enterOuterAlt(e,2),this.state=5282,this.match(t.MAX_UPDATES_PER_HOUR),this.state=5283,this.decimalLiteral();break;case t.MAX_CONNECTIONS_PER_HOUR:this.enterOuterAlt(e,3),this.state=5284,this.match(t.MAX_CONNECTIONS_PER_HOUR),this.state=5285,this.decimalLiteral();break;case t.MAX_USER_CONNECTIONS:this.enterOuterAlt(e,4),this.state=5286,this.match(t.MAX_USER_CONNECTIONS),this.state=5287,this.decimalLiteral();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}userPasswordOption(){let e,s=new yp(this.context,this.state);this.enterRule(s,460,t.RULE_userPasswordOption);try{switch(this.state=5328,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,769,this.context)){case 1:switch(this.enterOuterAlt(s,1),this.state=5290,this.match(t.PASSWORD),this.state=5291,this.match(t.EXPIRE),this.state=5298,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DEFAULT:this.state=5292,s._expireType=this.match(t.DEFAULT);break;case t.NEVER:this.state=5293,s._expireType=this.match(t.NEVER);break;case t.INTERVAL:this.state=5294,s._expireType=this.match(t.INTERVAL),this.state=5295,this.decimalLiteral(),this.state=5296,this.match(t.DAY);case t.EOF:case t.ATTRIBUTE:case t.ACCOUNT:case t.COMMENT:case t.FAILED_LOGIN_ATTEMPTS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.COMMA:case t.SEMI:}break;case 2:switch(this.enterOuterAlt(s,2),this.state=5300,this.match(t.PASSWORD),this.state=5301,this.match(t.HISTORY),this.state=5304,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DEFAULT:this.state=5302,this.match(t.DEFAULT);break;case t.ZERO_DECIMAL:case t.ONE_DECIMAL:case t.TWO_DECIMAL:case t.DECIMAL_LITERAL:case t.REAL_LITERAL:this.state=5303,this.decimalLiteral();break;default:throw new Ei(this)}break;case 3:switch(this.enterOuterAlt(s,3),this.state=5306,this.match(t.PASSWORD),this.state=5307,this.match(t.REUSE),this.state=5308,this.match(t.INTERVAL),this.state=5313,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DEFAULT:this.state=5309,this.match(t.DEFAULT);break;case t.ZERO_DECIMAL:case t.ONE_DECIMAL:case t.TWO_DECIMAL:case t.DECIMAL_LITERAL:case t.REAL_LITERAL:this.state=5310,this.decimalLiteral(),this.state=5311,this.match(t.DAY);break;default:throw new Ei(this)}break;case 4:this.enterOuterAlt(s,4),this.state=5315,this.match(t.PASSWORD),this.state=5316,this.match(t.REQUIRE),this.state=5317,this.match(t.CURRENT),this.state=5319,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(42===e||121===e)&&(this.state=5318,e=this.tokenStream.LA(1),42===e||121===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;case 5:this.enterOuterAlt(s,5),this.state=5321,this.match(t.FAILED_LOGIN_ATTEMPTS),this.state=5322,this.decimalLiteral();break;case 6:switch(this.enterOuterAlt(s,6),this.state=5323,this.match(t.PASSWORD_LOCK_TIME),this.state=5326,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ZERO_DECIMAL:case t.ONE_DECIMAL:case t.TWO_DECIMAL:case t.DECIMAL_LITERAL:case t.REAL_LITERAL:this.state=5324,this.decimalLiteral();break;case t.UNBOUNDED:this.state=5325,this.match(t.UNBOUNDED);break;default:throw new Ei(this)}}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}userLockOption(){let e,s=new fp(this.context,this.state);this.enterRule(s,462,t.RULE_userLockOption);try{this.enterOuterAlt(s,1),this.state=5330,this.match(t.ACCOUNT),this.state=5331,s._lockType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),103===e||182===e?(this.errorHandler.reportMatch(this),this.consume()):s._lockType=this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}privelegeClause(){let e,s=new Yp(this.context,this.state);this.enterRule(s,464,t.RULE_privelegeClause);try{this.enterOuterAlt(s,1),this.state=5333,this.privilege(),this.state=5338,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e&&(this.state=5334,this.match(t.LR_BRACKET),this.state=5335,this.uidList(),this.state=5336,this.match(t.RR_BRACKET))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}privilege(){let e,s=new wp(this.context,this.state);this.enterRule(s,466,t.RULE_privilege);try{switch(this.state=5433,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,775,this.context)){case 1:this.enterOuterAlt(s,1),this.state=5340,this.match(t.ALL),this.state=5342,this.errorHandler.sync(this),e=this.tokenStream.LA(1),725===e&&(this.state=5341,this.match(t.PRIVILEGES));break;case 2:this.enterOuterAlt(s,2),this.state=5344,this.match(t.ALTER),this.state=5346,this.errorHandler.sync(this),e=this.tokenStream.LA(1),733===e&&(this.state=5345,this.match(t.ROUTINE));break;case 3:switch(this.enterOuterAlt(s,3),this.state=5348,this.match(t.CREATE),this.state=5356,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.TEMPORARY:this.state=5349,this.match(t.TEMPORARY),this.state=5350,this.match(t.TABLES);break;case t.ROUTINE:this.state=5351,this.match(t.ROUTINE);break;case t.VIEW:this.state=5352,this.match(t.VIEW);break;case t.USER:this.state=5353,this.match(t.USER);break;case t.TABLESPACE:this.state=5354,this.match(t.TABLESPACE);break;case t.ROLE:this.state=5355,this.match(t.ROLE);case t.ON:case t.LR_BRACKET:case t.COMMA:}break;case 4:this.enterOuterAlt(s,4),this.state=5358,this.match(t.DELETE);break;case 5:this.enterOuterAlt(s,5),this.state=5359,this.match(t.DROP),this.state=5361,this.errorHandler.sync(this),e=this.tokenStream.LA(1),596===e&&(this.state=5360,this.match(t.ROLE));break;case 6:this.enterOuterAlt(s,6),this.state=5363,this.match(t.EVENT);break;case 7:this.enterOuterAlt(s,7),this.state=5364,this.match(t.EXECUTE);break;case 8:this.enterOuterAlt(s,8),this.state=5365,this.match(t.FILE);break;case 9:this.enterOuterAlt(s,9),this.state=5366,this.match(t.GRANT),this.state=5367,this.match(t.OPTION);break;case 10:this.enterOuterAlt(s,10),this.state=5368,this.match(t.INDEX);break;case 11:this.enterOuterAlt(s,11),this.state=5369,this.match(t.INSERT);break;case 12:this.enterOuterAlt(s,12),this.state=5370,this.match(t.LOCK),this.state=5371,this.match(t.TABLES);break;case 13:this.enterOuterAlt(s,13),this.state=5372,this.match(t.PROCESS);break;case 14:this.enterOuterAlt(s,14),this.state=5373,this.match(t.PROXY);break;case 15:this.enterOuterAlt(s,15),this.state=5374,this.match(t.REFERENCES);break;case 16:this.enterOuterAlt(s,16),this.state=5375,this.match(t.RELOAD);break;case 17:this.enterOuterAlt(s,17),this.state=5376,this.match(t.REPLICATION),this.state=5377,e=this.tokenStream.LA(1),360===e||614===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case 18:this.enterOuterAlt(s,18),this.state=5378,this.match(t.SELECT);break;case 19:this.enterOuterAlt(s,19),this.state=5379,this.match(t.SHOW),this.state=5380,e=this.tokenStream.LA(1),40===e||671===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case 20:this.enterOuterAlt(s,20),this.state=5381,this.match(t.SHUTDOWN);break;case 21:this.enterOuterAlt(s,21),this.state=5382,this.match(t.SUPER);break;case 22:this.enterOuterAlt(s,22),this.state=5383,this.match(t.TRIGGER);break;case 23:this.enterOuterAlt(s,23),this.state=5384,this.match(t.UPDATE);break;case 24:this.enterOuterAlt(s,24),this.state=5385,this.match(t.USAGE);break;case 25:this.enterOuterAlt(s,25),this.state=5386,this.match(t.APPLICATION_PASSWORD_ADMIN);break;case 26:this.enterOuterAlt(s,26),this.state=5387,this.match(t.AUDIT_ABORT_EXEMPT);break;case 27:this.enterOuterAlt(s,27),this.state=5388,this.match(t.AUDIT_ADMIN);break;case 28:this.enterOuterAlt(s,28),this.state=5389,this.match(t.AUTHENTICATION_POLICY_ADMIN);break;case 29:this.enterOuterAlt(s,29),this.state=5390,this.match(t.BACKUP_ADMIN);break;case 30:this.enterOuterAlt(s,30),this.state=5391,this.match(t.BINLOG_ADMIN);break;case 31:this.enterOuterAlt(s,31),this.state=5392,this.match(t.BINLOG_ENCRYPTION_ADMIN);break;case 32:this.enterOuterAlt(s,32),this.state=5393,this.match(t.CLONE_ADMIN);break;case 33:this.enterOuterAlt(s,33),this.state=5394,this.match(t.CONNECTION_ADMIN);break;case 34:this.enterOuterAlt(s,34),this.state=5395,this.match(t.ENCRYPTION_KEY_ADMIN);break;case 35:this.enterOuterAlt(s,35),this.state=5396,this.match(t.FIREWALL_ADMIN);break;case 36:this.enterOuterAlt(s,36),this.state=5397,this.match(t.FIREWALL_EXEMPT);break;case 37:this.enterOuterAlt(s,37),this.state=5398,this.match(t.FIREWALL_USER);break;case 38:this.enterOuterAlt(s,38),this.state=5399,this.match(t.FLUSH_OPTIMIZER_COSTS);break;case 39:this.enterOuterAlt(s,39),this.state=5400,this.match(t.FLUSH_STATUS);break;case 40:this.enterOuterAlt(s,40),this.state=5401,this.match(t.FLUSH_TABLES);break;case 41:this.enterOuterAlt(s,41),this.state=5402,this.match(t.FLUSH_USER_RESOURCES);break;case 42:this.enterOuterAlt(s,42),this.state=5403,this.match(t.GROUP_REPLICATION_ADMIN);break;case 43:this.enterOuterAlt(s,43),this.state=5404,this.match(t.INNODB_REDO_LOG_ARCHIVE);break;case 44:this.enterOuterAlt(s,44),this.state=5405,this.match(t.INNODB_REDO_LOG_ENABLE);break;case 45:this.enterOuterAlt(s,45),this.state=5406,this.match(t.NDB_STORED_USER);break;case 46:this.enterOuterAlt(s,46),this.state=5407,this.match(t.PASSWORDLESS_USER_ADMIN);break;case 47:this.enterOuterAlt(s,47),this.state=5408,this.match(t.PERSIST_RO_VARIABLES_ADMIN);break;case 48:this.enterOuterAlt(s,48),this.state=5409,this.match(t.REPLICATION_APPLIER);break;case 49:this.enterOuterAlt(s,49),this.state=5410,this.match(t.REPLICATION_SLAVE_ADMIN);break;case 50:this.enterOuterAlt(s,50),this.state=5411,this.match(t.RESOURCE_GROUP_ADMIN);break;case 51:this.enterOuterAlt(s,51),this.state=5412,this.match(t.RESOURCE_GROUP_USER);break;case 52:this.enterOuterAlt(s,52),this.state=5413,this.match(t.ROLE_ADMIN);break;case 53:this.enterOuterAlt(s,53),this.state=5414,this.match(t.SERVICE_CONNECTION_ADMIN);break;case 54:this.enterOuterAlt(s,54),this.state=5415,this.match(t.SESSION_VARIABLES_ADMIN);break;case 55:this.enterOuterAlt(s,55),this.state=5416,this.match(t.SET_USER_ID);break;case 56:this.enterOuterAlt(s,56),this.state=5417,this.match(t.SKIP_QUERY_REWRITE);break;case 57:this.enterOuterAlt(s,57),this.state=5418,this.match(t.SHOW_ROUTINE);break;case 58:this.enterOuterAlt(s,58),this.state=5419,this.match(t.SYSTEM_USER);break;case 59:this.enterOuterAlt(s,59),this.state=5420,this.match(t.SYSTEM_VARIABLES_ADMIN);break;case 60:this.enterOuterAlt(s,60),this.state=5421,this.match(t.TABLE_ENCRYPTION_ADMIN);break;case 61:this.enterOuterAlt(s,61),this.state=5422,this.match(t.TP_CONNECTION_ADMIN);break;case 62:this.enterOuterAlt(s,62),this.state=5423,this.match(t.VERSION_TOKEN_ADMIN);break;case 63:this.enterOuterAlt(s,63),this.state=5424,this.match(t.XA_RECOVER_ADMIN);break;case 64:this.enterOuterAlt(s,64),this.state=5425,this.match(t.LOAD),this.state=5426,this.match(t.FROM),this.state=5427,this.match(t.S3);break;case 65:this.enterOuterAlt(s,65),this.state=5428,this.match(t.SELECT),this.state=5429,this.match(t.INTO),this.state=5430,this.match(t.S3);break;case 66:this.enterOuterAlt(s,66),this.state=5431,this.match(t.INVOKE),this.state=5432,this.match(t.LAMBDA)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}privilegeLevel(){let e=new bp(this.context,this.state);this.enterRule(e,468,t.RULE_privilegeLevel);try{switch(this.state=5451,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,776,this.context)){case 1:e=new Jp(e),this.enterOuterAlt(e,1),this.state=5435,this.match(t.STAR);break;case 2:e=new Kp(e),this.enterOuterAlt(e,2),this.state=5436,this.match(t.STAR),this.state=5437,this.match(t.DOT),this.state=5438,this.match(t.STAR);break;case 3:e=new Wp(e),this.enterOuterAlt(e,3),this.state=5439,this.uid(),this.state=5440,this.match(t.DOT),this.state=5441,this.match(t.STAR);break;case 4:e=new Xp(e),this.enterOuterAlt(e,4),this.state=5443,this.uid(),this.state=5444,this.match(t.DOT),this.state=5445,this.uid();break;case 5:e=new Vp(e),this.enterOuterAlt(e,5),this.state=5447,this.uid(),this.state=5448,this.dottedId();break;case 6:e=new Qp(e),this.enterOuterAlt(e,6),this.state=5450,this.uid()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}renameUserClause(){let e=new Zp(this.context,this.state);this.enterRule(e,470,t.RULE_renameUserClause);try{this.enterOuterAlt(e,1),this.state=5453,this.userName(),this.state=5454,this.match(t.TO),this.state=5455,this.newUserName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}analyzeTable(){let e,s=new qp(this.context,this.state);this.enterRule(s,472,t.RULE_analyzeTable);try{if(this.enterOuterAlt(s,1),this.state=5457,this.match(t.ANALYZE),this.state=5459,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(115===e||474===e)&&(this.state=5458,s._actionOption=this.tokenStream.LT(1),e=this.tokenStream.LA(1),115===e||474===e?(this.errorHandler.reportMatch(this),this.consume()):s._actionOption=this.errorHandler.recoverInline(this)),this.state=5461,e=this.tokenStream.LA(1),172===e||742===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5462,this.tables(),this.state=5480,this.errorHandler.sync(this),e=this.tokenStream.LA(1),184===e){for(this.state=5463,this.match(t.UPDATE),this.state=5464,this.match(t.HISTOGRAM),this.state=5465,this.match(t.ON),this.state=5466,this.fullColumnName(),this.state=5471,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5467,this.match(t.COMMA),this.state=5468,this.fullColumnName(),this.state=5473,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=5478,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e&&(this.state=5474,this.match(t.WITH),this.state=5475,this.decimalLiteral(),this.state=5476,this.match(t.BUCKETS))}if(this.state=5493,this.errorHandler.sync(this),e=this.tokenStream.LA(1),51===e)for(this.state=5482,this.match(t.DROP),this.state=5483,this.match(t.HISTOGRAM),this.state=5484,this.match(t.ON),this.state=5485,this.fullColumnName(),this.state=5490,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5486,this.match(t.COMMA),this.state=5487,this.fullColumnName(),this.state=5492,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}checkTable(){let e,s=new jp(this.context,this.state);this.enterRule(s,474,t.RULE_checkTable);try{for(this.enterOuterAlt(s,1),this.state=5495,this.match(t.CHECK),this.state=5496,this.match(t.TABLE),this.state=5497,this.tables(),this.state=5501,this.errorHandler.sync(this),e=this.tokenStream.LA(1);65===e||354===e||422===e||425===e||504===e||568===e;)this.state=5498,this.checkTableOption(),this.state=5503,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}checksumTable(){let e,s=new zp(this.context,this.state);this.enterRule(s,476,t.RULE_checksumTable);try{this.enterOuterAlt(s,1),this.state=5504,this.match(t.CHECKSUM),this.state=5505,this.match(t.TABLE),this.state=5506,this.tables(),this.state=5508,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(422===e||568===e)&&(this.state=5507,s._actionOption=this.tokenStream.LT(1),e=this.tokenStream.LA(1),422===e||568===e?(this.errorHandler.reportMatch(this),this.consume()):s._actionOption=this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optimizeTable(){let e,s=new $p(this.context,this.state);this.enterRule(s,478,t.RULE_optimizeTable);try{this.enterOuterAlt(s,1),this.state=5510,this.match(t.OPTIMIZE),this.state=5512,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(115===e||474===e)&&(this.state=5511,s._actionOption=this.tokenStream.LT(1),e=this.tokenStream.LA(1),115===e||474===e?(this.errorHandler.reportMatch(this),this.consume()):s._actionOption=this.errorHandler.recoverInline(this)),this.state=5514,e=this.tokenStream.LA(1),172===e||742===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5515,this.tables()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}repairTable(){let e,s=new tg(this.context,this.state);this.enterRule(s,480,t.RULE_repairTable);try{this.enterOuterAlt(s,1),this.state=5517,this.match(t.REPAIR),this.state=5519,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(115===e||474===e)&&(this.state=5518,s._actionOption=this.tokenStream.LT(1),e=this.tokenStream.LA(1),115===e||474===e?(this.errorHandler.reportMatch(this),this.consume()):s._actionOption=this.errorHandler.recoverInline(this)),this.state=5521,this.match(t.TABLE),this.state=5522,this.tables(),this.state=5524,this.errorHandler.sync(this),e=this.tokenStream.LA(1),568===e&&(this.state=5523,this.match(t.QUICK)),this.state=5527,this.errorHandler.sync(this),e=this.tokenStream.LA(1),422===e&&(this.state=5526,this.match(t.EXTENDED)),this.state=5530,this.errorHandler.sync(this),e=this.tokenStream.LA(1),666===e&&(this.state=5529,this.match(t.USE_FRM))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}checkTableOption(){let e=new eg(this.context,this.state);this.enterRule(e,482,t.RULE_checkTableOption);try{switch(this.state=5539,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FOR:this.enterOuterAlt(e,1),this.state=5532,this.match(t.FOR),this.state=5533,this.match(t.UPGRADE);break;case t.QUICK:this.enterOuterAlt(e,2),this.state=5534,this.match(t.QUICK);break;case t.FAST:this.enterOuterAlt(e,3),this.state=5535,this.match(t.FAST);break;case t.MEDIUM:this.enterOuterAlt(e,4),this.state=5536,this.match(t.MEDIUM);break;case t.EXTENDED:this.enterOuterAlt(e,5),this.state=5537,this.match(t.EXTENDED);break;case t.CHANGED:this.enterOuterAlt(e,6),this.state=5538,this.match(t.CHANGED);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}createUdfunction(){let e,s=new sg(this.context,this.state);this.enterRule(s,484,t.RULE_createUdfunction);try{if(this.enterOuterAlt(s,1),1===(this.state=5541,this.match(t.CREATE),this.state=5543,this.errorHandler.sync(this),e=this.tokenStream.LA(1),335===e&&(this.state=5542,this.match(t.AGGREGATE)),this.state=5545,this.match(t.FUNCTION),this.state=5547,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,792,this.context)))this.state=5546,this.ifNotExists();this.state=5549,this.uid(),this.state=5550,this.match(t.RETURNS),this.state=5551,s._returnType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),!(e-206&-32)&&1<<e-206&261||638===e?(this.errorHandler.reportMatch(this),this.consume()):s._returnType=this.errorHandler.recoverInline(this),this.state=5552,this.match(t.SONAME),this.state=5553,this.match(t.STRING_LITERAL)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}installPlugin(){let e=new ag(this.context,this.state);this.enterRule(e,486,t.RULE_installPlugin);try{this.enterOuterAlt(e,1),this.state=5555,this.match(t.INSTALL),this.state=5556,this.match(t.PLUGIN),this.state=5557,this.uid(),this.state=5558,this.match(t.SONAME),this.state=5559,this.match(t.STRING_LITERAL)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}uninstallPlugin(){let e=new rg(this.context,this.state);this.enterRule(e,488,t.RULE_uninstallPlugin);try{this.enterOuterAlt(e,1),this.state=5561,this.match(t.UNINSTALL),this.state=5562,this.match(t.PLUGIN),this.state=5563,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}setStatement(){let e,s=new ig(this.context,this.state);this.enterRule(s,490,t.RULE_setStatement);try{switch(this.state=5617,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,800,this.context)){case 1:switch(s=new Rg(s),this.enterOuterAlt(s,1),this.state=5565,this.match(t.SET),this.state=5566,this.variableClause(),this.state=5567,e=this.tokenStream.LA(1),1108===e||1124===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5570,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,793,this.context)){case 1:this.state=5568,this.expression(0);break;case 2:this.state=5569,this.match(t.ON)}for(this.state=5581,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;){switch(this.state=5572,this.match(t.COMMA),this.state=5573,this.variableClause(),this.state=5574,e=this.tokenStream.LA(1),1108===e||1124===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5577,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,794,this.context)){case 1:this.state=5575,this.expression(0);break;case 2:this.state=5576,this.match(t.ON)}this.state=5583,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}break;case 2:switch(s=new ng(s),this.enterOuterAlt(s,2),this.state=5584,this.match(t.SET),this.state=5585,this.charSet(),this.state=5588,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.BINARY:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:this.state=5586,this.charsetName();break;case t.DEFAULT:this.state=5587,this.match(t.DEFAULT);break;default:throw new Ei(this)}break;case 3:switch(s=new hg(s),this.enterOuterAlt(s,3),this.state=5590,this.match(t.SET),this.state=5591,this.match(t.NAMES),this.state=5598,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.BINARY:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:this.state=5592,this.charsetName(),this.state=5595,this.errorHandler.sync(this),e=this.tokenStream.LA(1),27===e&&(this.state=5593,this.match(t.COLLATE),this.state=5594,this.collationName());break;case t.DEFAULT:this.state=5597,this.match(t.DEFAULT);break;default:throw new Ei(this)}break;case 4:s=new Eg(s),this.enterOuterAlt(s,4),this.state=5600,this.setPasswordStatement();break;case 5:s=new cg(s),this.enterOuterAlt(s,5),this.state=5601,this.setTransactionStatement();break;case 6:s=new Tg(s),this.enterOuterAlt(s,6),this.state=5602,this.setAutocommitStatement();break;case 7:for(s=new og(s),this.enterOuterAlt(s,7),this.state=5603,this.match(t.SET),this.state=5604,this.fullId(),this.state=5605,e=this.tokenStream.LA(1),1108===e||1124===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5606,this.expression(0),this.state=5614,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5607,this.match(t.COMMA),this.state=5608,this.fullId(),this.state=5609,e=this.tokenStream.LA(1),1108===e||1124===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5610,this.expression(0),this.state=5616,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}showStatement(){let e,s=new Ag(this.context,this.state);this.enterRule(s,492,t.RULE_showStatement);try{switch(this.state=5780,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,823,this.context)){case 1:s=new mg(s),this.enterOuterAlt(s,1),this.state=5619,this.match(t.SHOW),this.state=5620,s._logFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),226===e||477===e?(this.errorHandler.reportMatch(this),this.consume()):s._logFormat=this.errorHandler.recoverInline(this),this.state=5621,this.match(t.LOGS);break;case 2:if(s=new dg(s),this.enterOuterAlt(s,2),this.state=5622,this.match(t.SHOW),this.state=5623,s._logFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),345===e||577===e?(this.errorHandler.reportMatch(this),this.consume()):s._logFormat=this.errorHandler.recoverInline(this),this.state=5624,this.match(t.EVENTS),this.state=5627,this.errorHandler.sync(this),e=this.tokenStream.LA(1),80===e&&(this.state=5625,this.match(t.IN),this.state=5626,s._filename=this.match(t.STRING_LITERAL)),this.state=5631,this.errorHandler.sync(this),e=this.tokenStream.LA(1),68===e&&(this.state=5629,this.match(t.FROM),this.state=5630,s._fromPosition=this.decimalLiteral()),this.state=5640,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e){if(1===(this.state=5633,this.match(t.LIMIT),this.state=5637,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,803,this.context)))this.state=5634,s._offset=this.decimalLiteral(),this.state=5635,this.match(t.COMMA);this.state=5639,s._rowCount=this.decimalLiteral()}break;case 3:s=new Lg(s),this.enterOuterAlt(s,3),this.state=5642,this.match(t.SHOW),this.state=5643,this.showCommonEntity(),this.state=5645,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(98===e||190===e)&&(this.state=5644,this.showFilter());break;case 4:s=new kg(s),this.enterOuterAlt(s,4),this.state=5647,this.match(t.SHOW),this.state=5649,this.errorHandler.sync(this),e=this.tokenStream.LA(1),436===e&&(this.state=5648,this.match(t.FULL)),this.state=5651,s._columnsFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),365===e||427===e?(this.errorHandler.reportMatch(this),this.consume()):s._columnsFormat=this.errorHandler.recoverInline(this),this.state=5652,s._tableFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),68===e||80===e?(this.errorHandler.reportMatch(this),this.consume()):s._tableFormat=this.errorHandler.recoverInline(this),this.state=5653,this.tableName(),this.state=5656,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(68===e||80===e)&&(this.state=5654,s._schemaFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),68===e||80===e?(this.errorHandler.reportMatch(this),this.consume()):s._schemaFormat=this.errorHandler.recoverInline(this),this.state=5655,this.uid()),this.state=5659,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(98===e||190===e)&&(this.state=5658,this.showFilter());break;case 5:if(s=new Cg(s),this.enterOuterAlt(s,5),1===(this.state=5661,this.match(t.SHOW),this.state=5662,this.match(t.CREATE),this.state=5663,s._schemaFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),39===e||150===e?(this.errorHandler.reportMatch(this),this.consume()):s._schemaFormat=this.errorHandler.recoverInline(this),this.state=5665,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,809,this.context)))this.state=5664,this.ifNotExists();this.state=5667,this.databaseName();break;case 6:s=new Og(s),this.enterOuterAlt(s,6),this.state=5668,this.match(t.SHOW),this.state=5669,this.match(t.CREATE),this.state=5670,s._namedEntity=this.tokenStream.LT(1),e=this.tokenStream.LA(1),131===e||415===e||437===e?(this.errorHandler.reportMatch(this),this.consume()):s._namedEntity=this.errorHandler.recoverInline(this),this.state=5671,this.fullId();break;case 7:s=new Hg(s),this.enterOuterAlt(s,7),this.state=5672,this.match(t.SHOW),this.state=5673,this.match(t.CREATE),this.state=5674,e=this.tokenStream.LA(1),172===e||671===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5675,this.tableName();break;case 8:s=new Ug(s),this.enterOuterAlt(s,8),this.state=5676,this.match(t.SHOW),this.state=5677,this.match(t.CREATE),this.state=5678,this.match(t.TRIGGER),this.state=5679,this.triggerName();break;case 9:s=new Ig(s),this.enterOuterAlt(s,9),this.state=5680,this.match(t.SHOW),this.state=5681,this.match(t.CREATE),this.state=5682,this.match(t.USER),this.state=5683,this.userName();break;case 10:s=new _g(s),this.enterOuterAlt(s,10),this.state=5684,this.match(t.SHOW),this.state=5685,this.match(t.ENGINE),this.state=5686,this.engineName(),this.state=5687,s._engineOption=this.tokenStream.LT(1),e=this.tokenStream.LA(1),513===e||634===e?(this.errorHandler.reportMatch(this),this.consume()):s._engineOption=this.errorHandler.recoverInline(this);break;case 11:s=new lg(s),this.enterOuterAlt(s,11),this.state=5689,this.match(t.SHOW),this.state=5690,this.showGlobalInfoClause();break;case 12:if(s=new ug(s),this.enterOuterAlt(s,12),this.state=5691,this.match(t.SHOW),this.state=5692,s._errorFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),412===e||675===e?(this.errorHandler.reportMatch(this),this.consume()):s._errorFormat=this.errorHandler.recoverInline(this),this.state=5700,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e){if(1===(this.state=5693,this.match(t.LIMIT),this.state=5697,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,810,this.context)))this.state=5694,s._offset=this.decimalLiteral(),this.state=5695,this.match(t.COMMA);this.state=5699,s._rowCount=this.decimalLiteral()}break;case 13:s=new Ng(s),this.enterOuterAlt(s,13),this.state=5702,this.match(t.SHOW),this.state=5703,this.match(t.COUNT),this.state=5704,this.match(t.LR_BRACKET),this.state=5705,this.match(t.STAR),this.state=5706,this.match(t.RR_BRACKET),this.state=5707,s._errorFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),412===e||675===e?(this.errorHandler.reportMatch(this),this.consume()):s._errorFormat=this.errorHandler.recoverInline(this);break;case 14:s=new Pg(s),this.enterOuterAlt(s,14),this.state=5708,this.match(t.SHOW),this.state=5709,this.showSchemaEntity(),this.state=5712,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(68===e||80===e)&&(this.state=5710,s._schemaFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),68===e||80===e?(this.errorHandler.reportMatch(this),this.consume()):s._schemaFormat=this.errorHandler.recoverInline(this),this.state=5711,this.uid()),this.state=5715,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(98===e||190===e)&&(this.state=5714,this.showFilter());break;case 15:s=new gg(s),this.enterOuterAlt(s,15),this.state=5717,this.match(t.SHOW),this.state=5718,s._routine=this.tokenStream.LT(1),e=this.tokenStream.LA(1),131===e||437===e?(this.errorHandler.reportMatch(this),this.consume()):s._routine=this.errorHandler.recoverInline(this),this.state=5719,this.match(t.CODE),this.state=5720,this.fullId();break;case 16:s=new Dg(s),this.enterOuterAlt(s,16),this.state=5721,this.match(t.SHOW),this.state=5722,this.match(t.GRANTS),this.state=5725,this.errorHandler.sync(this),e=this.tokenStream.LA(1),65===e&&(this.state=5723,this.match(t.FOR),this.state=5724,this.userName());break;case 17:s=new Mg(s),this.enterOuterAlt(s,17),this.state=5727,this.match(t.SHOW),this.state=5728,s._indexFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||92===e||452===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexFormat=this.errorHandler.recoverInline(this),this.state=5729,s._tableFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),68===e||80===e?(this.errorHandler.reportMatch(this),this.consume()):s._tableFormat=this.errorHandler.recoverInline(this),this.state=5730,this.tableName(),this.state=5733,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(68===e||80===e)&&(this.state=5731,s._schemaFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),68===e||80===e?(this.errorHandler.reportMatch(this),this.consume()):s._schemaFormat=this.errorHandler.recoverInline(this),this.state=5732,this.uid()),this.state=5737,this.errorHandler.sync(this),e=this.tokenStream.LA(1),190===e&&(this.state=5735,this.match(t.WHERE),this.state=5736,this.expression(0));break;case 18:s=new Sg(s),this.enterOuterAlt(s,18),this.state=5739,this.match(t.SHOW),this.state=5740,this.match(t.OPEN),this.state=5741,this.match(t.TABLES),this.state=5744,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(68===e||80===e)&&(this.state=5742,s._schemaFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),68===e||80===e?(this.errorHandler.reportMatch(this),this.consume()):s._schemaFormat=this.errorHandler.recoverInline(this),this.state=5743,this.uid()),this.state=5747,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(98===e||190===e)&&(this.state=5746,this.showFilter());break;case 19:for(s=new xg(s),this.enterOuterAlt(s,19),this.state=5749,this.match(t.SHOW),this.state=5750,this.match(t.PROFILE),this.state=5751,this.showProfileType(),this.state=5756,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5752,this.match(t.COMMA),this.state=5753,this.showProfileType(),this.state=5758,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(this.state=5762,this.errorHandler.sync(this),e=this.tokenStream.LA(1),65===e&&(this.state=5759,this.match(t.FOR),this.state=5760,this.match(t.QUERY),this.state=5761,s._queryCount=this.decimalLiteral()),1===(this.state=5764,this.match(t.LIMIT),this.state=5768,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,821,this.context)))this.state=5765,s._offset=this.decimalLiteral(),this.state=5766,this.match(t.COMMA);this.state=5770,s._rowCount=this.decimalLiteral();break;case 20:s=new pg(s),this.enterOuterAlt(s,20),this.state=5772,this.match(t.SHOW),this.state=5773,this.match(t.SLAVE),this.state=5774,this.match(t.STATUS),this.state=5778,this.errorHandler.sync(this),e=this.tokenStream.LA(1),65===e&&(this.state=5775,this.match(t.FOR),this.state=5776,this.match(t.CHANNEL),this.state=5777,this.match(t.STRING_LITERAL))}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}variableClause(){let e,s=new Gg(this.context,this.state);this.enterRule(s,494,t.RULE_variableClause);try{switch(this.state=5792,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LOCAL_ID:this.enterOuterAlt(s,1),this.state=5782,this.match(t.LOCAL_ID);break;case t.GLOBAL_ID:this.enterOuterAlt(s,2),this.state=5783,this.match(t.GLOBAL_ID);break;case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.AT_SIGN:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:if(this.enterOuterAlt(s,3),1===(this.state=5789,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,825,this.context)))this.state=5786,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1137===e&&(this.state=5784,this.match(t.AT_SIGN),this.state=5785,this.match(t.AT_SIGN)),this.state=5788,e=this.tokenStream.LA(1),439===e||474===e||609===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);this.state=5791,this.uid();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}showCommonEntity(){let e,s=new Fg(this.context,this.state);this.enterRule(s,496,t.RULE_showCommonEntity);try{switch(this.state=5807,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CHARACTER:this.enterOuterAlt(s,1),this.state=5794,this.match(t.CHARACTER),this.state=5795,this.match(t.SET);break;case t.COLLATION:this.enterOuterAlt(s,2),this.state=5796,this.match(t.COLLATION);break;case t.DATABASES:this.enterOuterAlt(s,3),this.state=5797,this.match(t.DATABASES);break;case t.SCHEMAS:this.enterOuterAlt(s,4),this.state=5798,this.match(t.SCHEMAS);break;case t.FUNCTION:this.enterOuterAlt(s,5),this.state=5799,this.match(t.FUNCTION),this.state=5800,this.match(t.STATUS);break;case t.PROCEDURE:this.enterOuterAlt(s,6),this.state=5801,this.match(t.PROCEDURE),this.state=5802,this.match(t.STATUS);break;case t.GLOBAL:case t.SESSION:case t.STATUS:case t.VARIABLES:this.enterOuterAlt(s,7),this.state=5804,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(439===e||609===e)&&(this.state=5803,e=this.tokenStream.LA(1),439===e||609===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=5806,e=this.tokenStream.LA(1),634===e||670===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}showFilter(){let e=new vg(this.context,this.state);this.enterRule(e,498,t.RULE_showFilter);try{switch(this.state=5813,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LIKE:this.enterOuterAlt(e,1),this.state=5809,this.match(t.LIKE),this.state=5810,this.match(t.STRING_LITERAL);break;case t.WHERE:this.enterOuterAlt(e,2),this.state=5811,this.match(t.WHERE),this.state=5812,this.expression(0);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}showGlobalInfoClause(){let e,s=new Bg(this.context,this.state);this.enterRule(s,500,t.RULE_showGlobalInfoClause);try{switch(this.state=5832,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ENGINES:case t.STORAGE:this.enterOuterAlt(s,1),this.state=5816,this.errorHandler.sync(this),e=this.tokenStream.LA(1),636===e&&(this.state=5815,this.match(t.STORAGE)),this.state=5818,this.match(t.ENGINES);break;case t.MASTER:this.enterOuterAlt(s,2),this.state=5819,this.match(t.MASTER),this.state=5820,this.match(t.STATUS);break;case t.PLUGINS:this.enterOuterAlt(s,3),this.state=5821,this.match(t.PLUGINS);break;case t.PRIVILEGES:this.enterOuterAlt(s,4),this.state=5822,this.match(t.PRIVILEGES);break;case t.FULL:case t.PROCESSLIST:this.enterOuterAlt(s,5),this.state=5824,this.errorHandler.sync(this),e=this.tokenStream.LA(1),436===e&&(this.state=5823,this.match(t.FULL)),this.state=5826,this.match(t.PROCESSLIST);break;case t.PROFILES:this.enterOuterAlt(s,6),this.state=5827,this.match(t.PROFILES);break;case t.SLAVE:this.enterOuterAlt(s,7),this.state=5828,this.match(t.SLAVE),this.state=5829,this.match(t.HOSTS);break;case t.AUTHORS:this.enterOuterAlt(s,8),this.state=5830,this.match(t.AUTHORS);break;case t.CONTRIBUTORS:this.enterOuterAlt(s,9),this.state=5831,this.match(t.CONTRIBUTORS);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}showSchemaEntity(){let e,s=new yg(this.context,this.state);this.enterRule(s,502,t.RULE_showSchemaEntity);try{switch(this.state=5842,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EVENTS:this.enterOuterAlt(s,1),this.state=5834,this.match(t.EVENTS);break;case t.TABLE:this.enterOuterAlt(s,2),this.state=5835,this.match(t.TABLE),this.state=5836,this.match(t.STATUS);break;case t.FULL:case t.TABLES:this.enterOuterAlt(s,3),this.state=5838,this.errorHandler.sync(this),e=this.tokenStream.LA(1),436===e&&(this.state=5837,this.match(t.FULL)),this.state=5840,this.match(t.TABLES);break;case t.TRIGGERS:this.enterOuterAlt(s,4),this.state=5841,this.match(t.TRIGGERS);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}showProfileType(){let e=new fg(this.context,this.state);this.enterRule(e,504,t.RULE_showProfileType);try{switch(this.state=5856,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALL:this.enterOuterAlt(e,1),this.state=5844,this.match(t.ALL);break;case t.BLOCK:this.enterOuterAlt(e,2),this.state=5845,this.match(t.BLOCK),this.state=5846,this.match(t.IO);break;case t.CONTEXT:this.enterOuterAlt(e,3),this.state=5847,this.match(t.CONTEXT),this.state=5848,this.match(t.SWITCHES);break;case t.CPU:this.enterOuterAlt(e,4),this.state=5849,this.match(t.CPU);break;case t.IPC:this.enterOuterAlt(e,5),this.state=5850,this.match(t.IPC);break;case t.MEMORY:this.enterOuterAlt(e,6),this.state=5851,this.match(t.MEMORY);break;case t.PAGE:this.enterOuterAlt(e,7),this.state=5852,this.match(t.PAGE),this.state=5853,this.match(t.FAULTS);break;case t.SOURCE:this.enterOuterAlt(e,8),this.state=5854,this.match(t.SOURCE);break;case t.SWAPS:this.enterOuterAlt(e,9),this.state=5855,this.match(t.SWAPS);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}binlogStatement(){let e=new Yg(this.context,this.state);this.enterRule(e,506,t.RULE_binlogStatement);try{this.enterOuterAlt(e,1),this.state=5858,this.match(t.BINLOG),this.state=5859,this.match(t.STRING_LITERAL)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}cacheIndexStatement(){let e,s=new wg(this.context,this.state);this.enterRule(s,508,t.RULE_cacheIndexStatement);try{for(this.enterOuterAlt(s,1),this.state=5861,this.match(t.CACHE),this.state=5862,this.match(t.INDEX),this.state=5863,this.tableIndexes(),this.state=5868,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5864,this.match(t.COMMA),this.state=5865,this.tableIndexes(),this.state=5870,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(this.state=5878,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e){switch(this.state=5871,this.match(t.PARTITION),this.state=5872,this.match(t.LR_BRACKET),this.state=5875,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=5873,this.uidList();break;case t.ALL:this.state=5874,this.match(t.ALL);break;default:throw new Ei(this)}this.state=5877,this.match(t.RR_BRACKET)}this.state=5880,this.match(t.IN),this.state=5881,s._schema=this.uid()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}flushStatement(){let e,s=new bg(this.context,this.state);this.enterRule(s,510,t.RULE_flushStatement);try{for(this.enterOuterAlt(s,1),this.state=5883,this.match(t.FLUSH),this.state=5885,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(115===e||474===e)&&(this.state=5884,s._flushFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),115===e||474===e?(this.errorHandler.reportMatch(this),this.consume()):s._flushFormat=this.errorHandler.recoverInline(this)),this.state=5887,this.flushOption(),this.state=5892,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5888,this.match(t.COMMA),this.state=5889,this.flushOption(),this.state=5894,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}killStatement(){let e,s=new Wg(this.context,this.state);this.enterRule(s,512,t.RULE_killStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=5895,this.match(t.KILL),this.state=5897,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,841,this.context)))this.state=5896,s._connectionFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),376===e||567===e?(this.errorHandler.reportMatch(this),this.consume()):s._connectionFormat=this.errorHandler.recoverInline(this);this.state=5899,this.expression(0)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}loadIndexIntoCache(){let e,s=new Vg(this.context,this.state);this.enterRule(s,514,t.RULE_loadIndexIntoCache);try{for(this.enterOuterAlt(s,1),this.state=5901,this.match(t.LOAD),this.state=5902,this.match(t.INDEX),this.state=5903,this.match(t.INTO),this.state=5904,this.match(t.CACHE),this.state=5905,this.loadedTableIndexes(),this.state=5910,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=5906,this.match(t.COMMA),this.state=5907,this.loadedTableIndexes(),this.state=5912,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}resetStatement(){let e=new Xg(this.context,this.state);this.enterRule(e,516,t.RULE_resetStatement);try{this.enterOuterAlt(e,1),this.state=5913,this.match(t.RESET),this.state=5914,this.match(t.QUERY),this.state=5915,this.match(t.CACHE)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}shutdownStatement(){let e=new Kg(this.context,this.state);this.enterRule(e,518,t.RULE_shutdownStatement);try{this.enterOuterAlt(e,1),this.state=5917,this.match(t.SHUTDOWN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableIndexes(){let e,s=new Qg(this.context,this.state);this.enterRule(s,520,t.RULE_tableIndexes);try{this.enterOuterAlt(s,1),this.state=5919,this.tableName(),this.state=5927,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(81===e||91===e||1133===e)&&(this.state=5921,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(81===e||91===e)&&(this.state=5920,s._indexFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexFormat=this.errorHandler.recoverInline(this)),this.state=5923,this.match(t.LR_BRACKET),this.state=5924,this.indexNameList(),this.state=5925,this.match(t.RR_BRACKET))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}flushOption(){let e,s=new Jg(this.context,this.state);this.enterRule(s,522,t.RULE_flushOption);try{switch(this.state=5961,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,851,this.context)){case 1:switch(s=new jg(s),this.enterOuterAlt(s,1),this.state=5947,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DES_KEY_FILE:this.state=5929,this.match(t.DES_KEY_FILE);break;case t.HOSTS:this.state=5930,this.match(t.HOSTS);break;case t.BINARY:case t.ENGINE:case t.ERROR:case t.GENERAL:case t.LOGS:case t.RELAY:case t.SLOW:this.state=5932,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(226===e||!(e-409&-32)&&1<<e-409&536870917||574===e||615===e)&&(this.state=5931,e=this.tokenStream.LA(1),226===e||!(e-409&-32)&&1<<e-409&536870917||574===e||615===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=5934,this.match(t.LOGS);break;case t.OPTIMIZER_COSTS:this.state=5935,this.match(t.OPTIMIZER_COSTS);break;case t.PRIVILEGES:this.state=5936,this.match(t.PRIVILEGES);break;case t.QUERY:this.state=5937,this.match(t.QUERY),this.state=5938,this.match(t.CACHE);break;case t.STATUS:this.state=5939,this.match(t.STATUS);break;case t.USER_RESOURCES:this.state=5940,this.match(t.USER_RESOURCES);break;case t.TABLES:this.state=5941,this.match(t.TABLES),this.state=5945,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e&&(this.state=5942,this.match(t.WITH),this.state=5943,this.match(t.READ),this.state=5944,this.match(t.LOCK));break;default:throw new Ei(this)}break;case 2:s=new qg(s),this.enterOuterAlt(s,2),this.state=5949,this.match(t.RELAY),this.state=5950,this.match(t.LOGS),this.state=5952,this.errorHandler.sync(this),e=this.tokenStream.LA(1),65===e&&(this.state=5951,this.channelOption());break;case 3:s=new Zg(s),this.enterOuterAlt(s,3),this.state=5954,e=this.tokenStream.LA(1),172===e||742===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=5956,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028437||!(e-73&-32)&&1<<e-73&18878545||!(e-117&-32)&&1<<e-117&2172657809||!(e-150&-32)&&1<<e-150&262401||!(e-217&-32)&&1<<e-217&5374495||!(e-251&-32)&&1<<e-251&4294967295||!(e-283&-32)&&1<<e-283&4294967295||!(e-315&-32)&&1<<e-315&4294967231||!(e-347&-32)&&1<<e-347&4294967295||!(e-379&-32)&&1<<e-379&4127195007||!(e-411&-32)&&1<<e-411&4290772991||!(e-443&-32)&&1<<e-443&4294967039||!(e-475&-32)&&1<<e-475&4294967295||!(e-507&-32)&&1<<e-507&4294017023||!(e-539&-32)&&1<<e-539&4293918527||!(e-571&-32)&&1<<e-571&4290248703||!(e-603&-32)&&1<<e-603&4294967279||!(e-635&-32)&&1<<e-635&4294967291||!(e-667&-32)&&1<<e-667&2147417599||!(e-699&-32)&&1<<e-699&4293672959||!(e-731&-32)&&1<<e-731&4294967279||!(e-763&-32)&&1<<e-763&4294967295||!(e-795&-32)&&1<<e-795&4294965759||!(e-827&-32)&&1<<e-827&4294967295||!(e-859&-32)&&1<<e-859&4294967295||!(e-891&-32)&&1<<e-891&4294967295||!(e-923&-32)&&1<<e-923&4294967295||!(e-955&-32)&&1<<e-955&4294967295||!(e-987&-32)&&1<<e-987&4294967295||!(e-1019&-32)&&1<<e-1019&4294967295||!(e-1051&-32)&&1<<e-1051&4294967295||!(e-1083&-32)&&1<<e-1083&33554431||!(e-1123&-32)&&1<<e-1123&37748737||1156===e)&&(this.state=5955,this.tables()),this.state=5959,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(65===e||192===e)&&(this.state=5958,this.flushTableOption())}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}flushTableOption(){let e=new zg(this.context,this.state);this.enterRule(e,524,t.RULE_flushTableOption);try{switch(this.state=5968,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WITH:this.enterOuterAlt(e,1),this.state=5963,this.match(t.WITH),this.state=5964,this.match(t.READ),this.state=5965,this.match(t.LOCK);break;case t.FOR:this.enterOuterAlt(e,2),this.state=5966,this.match(t.FOR),this.state=5967,this.match(t.EXPORT);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}loadedTableIndexes(){let e,s=new $g(this.context,this.state);this.enterRule(s,526,t.RULE_loadedTableIndexes);try{if(this.enterOuterAlt(s,1),this.state=5970,this.tableName(),this.state=5978,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e){switch(this.state=5971,this.match(t.PARTITION),this.state=5972,this.match(t.LR_BRACKET),this.state=5975,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=5973,s._partitionList=this.uidList();break;case t.ALL:this.state=5974,this.match(t.ALL);break;default:throw new Ei(this)}this.state=5977,this.match(t.RR_BRACKET)}this.state=5987,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(81===e||91===e||1133===e)&&(this.state=5981,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(81===e||91===e)&&(this.state=5980,s._indexFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),81===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):s._indexFormat=this.errorHandler.recoverInline(this)),this.state=5983,this.match(t.LR_BRACKET),this.state=5984,this.indexNameList(),this.state=5985,this.match(t.RR_BRACKET)),this.state=5991,this.errorHandler.sync(this),e=this.tokenStream.LA(1),78===e&&(this.state=5989,this.match(t.IGNORE),this.state=5990,this.match(t.LEAVES))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}simpleDescribeStatement(){let e,s=new tx(this.context,this.state);this.enterRule(s,528,t.RULE_simpleDescribeStatement);try{switch(this.enterOuterAlt(s,1),this.state=5993,s._command=this.tokenStream.LT(1),e=this.tokenStream.LA(1),!(e-45&-32)&&1<<e-45&131075?(this.errorHandler.reportMatch(this),this.consume()):s._command=this.errorHandler.recoverInline(this),this.state=5994,this.tableName(),this.state=5997,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,858,this.context)){case 1:this.state=5995,s._column=this.uid();break;case 2:this.state=5996,s._pattern=this.match(t.STRING_LITERAL)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}fullDescribeStatement(){let e,s=new ex(this.context,this.state);this.enterRule(s,530,t.RULE_fullDescribeStatement);try{this.enterOuterAlt(s,1),this.state=5999,s._command=this.tokenStream.LT(1),e=this.tokenStream.LA(1),!(e-45&-32)&&1<<e-45&131075?(this.errorHandler.reportMatch(this),this.consume()):s._command=this.errorHandler.recoverInline(this),this.state=6003,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(422===e||550===e||885===e)&&(this.state=6e3,s._formatType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),422===e||550===e||885===e?(this.errorHandler.reportMatch(this),this.consume()):s._formatType=this.errorHandler.recoverInline(this),this.state=6001,this.match(t.EQUAL_SYMBOL),this.state=6002,s._formatValue=this.tokenStream.LT(1),e=this.tokenStream.LA(1),466===e||652===e?(this.errorHandler.reportMatch(this),this.consume()):s._formatValue=this.errorHandler.recoverInline(this)),this.state=6005,this.describeObjectClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}helpStatement(){let e=new sx(this.context,this.state);this.enterRule(e,532,t.RULE_helpStatement);try{this.enterOuterAlt(e,1),this.state=6007,this.match(t.HELP),this.state=6008,this.match(t.STRING_LITERAL)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}useStatement(){let e=new ax(this.context,this.state);this.enterRule(e,534,t.RULE_useStatement);try{this.enterOuterAlt(e,1),this.state=6010,this.match(t.USE),this.state=6011,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}signalStatement(){let e,s=new rx(this.context,this.state);this.enterRule(s,536,t.RULE_signalStatement);try{switch(this.enterOuterAlt(s,1),this.state=6013,this.match(t.SIGNAL),this.state=6021,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SQLSTATE:this.state=6014,this.match(t.SQLSTATE),this.state=6016,this.errorHandler.sync(this),e=this.tokenStream.LA(1),669===e&&(this.state=6015,this.match(t.VALUE)),this.state=6018,this.stringLiteral();break;case t.ID:this.state=6019,this.match(t.ID);break;case t.REVERSE_QUOTE_ID:this.state=6020,this.match(t.REVERSE_QUOTE_ID);break;default:throw new Ei(this)}if(this.state=6032,this.errorHandler.sync(this),e=this.tokenStream.LA(1),153===e)for(this.state=6023,this.match(t.SET),this.state=6024,this.signalConditionInformation(),this.state=6029,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6025,this.match(t.COMMA),this.state=6026,this.signalConditionInformation(),this.state=6031,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}resignalStatement(){let e,s=new ix(this.context,this.state);this.enterRule(s,538,t.RULE_resignalStatement);try{switch(this.enterOuterAlt(s,1),this.state=6034,this.match(t.RESIGNAL),this.state=6042,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SQLSTATE:this.state=6035,this.match(t.SQLSTATE),this.state=6037,this.errorHandler.sync(this),e=this.tokenStream.LA(1),669===e&&(this.state=6036,this.match(t.VALUE)),this.state=6039,this.stringLiteral();break;case t.ID:this.state=6040,this.match(t.ID);break;case t.REVERSE_QUOTE_ID:this.state=6041,this.match(t.REVERSE_QUOTE_ID);case t.EOF:case t.SET:case t.SEMI:}if(this.state=6053,this.errorHandler.sync(this),e=this.tokenStream.LA(1),153===e)for(this.state=6044,this.match(t.SET),this.state=6045,this.signalConditionInformation(),this.state=6050,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6046,this.match(t.COMMA),this.state=6047,this.signalConditionInformation(),this.state=6052,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}signalConditionInformation(){let e,s=new cx(this.context,this.state);this.enterRule(s,540,t.RULE_signalConditionInformation);try{switch(this.enterOuterAlt(s,1),this.state=6055,e=this.tokenStream.LA(1),!(e-359&-32)&&1<<e-359&272105729||507===e||515===e||639===e||646===e||836===e||1005===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=6056,this.match(t.EQUAL_SYMBOL),this.state=6061,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.START_NATIONAL_STRING_LITERAL:case t.STRING_LITERAL:case t.STRING_CHARSET_NAME:this.state=6057,this.stringLiteral();break;case t.DECIMAL_LITERAL:this.state=6058,this.match(t.DECIMAL_LITERAL);break;case t.LOCAL_ID:case t.GLOBAL_ID:this.state=6059,this.mysqlVariable();break;case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.ID:this.state=6060,this.simpleId();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}withStatement(){let e,s=new nx(this.context,this.state);this.enterRule(s,542,t.RULE_withStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=6063,this.match(t.WITH),this.state=6065,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,869,this.context)))this.state=6064,this.match(t.RECURSIVE);for(this.state=6067,this.commonTableExpressions(),this.state=6072,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6068,this.match(t.COMMA),this.state=6069,this.commonTableExpressions(),this.state=6074,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableStatement(){let e,s=new hx(this.context,this.state);this.enterRule(s,544,t.RULE_tableStatement);try{this.enterOuterAlt(s,1),this.state=6075,this.match(t.TABLE),this.state=6076,this.tableName(),this.state=6078,this.errorHandler.sync(this),e=this.tokenStream.LA(1),124===e&&(this.state=6077,this.orderByClause()),this.state=6081,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e&&(this.state=6080,this.limitClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}diagnosticsStatement(){let e,s=new Ex(this.context,this.state);this.enterRule(s,546,t.RULE_diagnosticsStatement);try{switch(this.enterOuterAlt(s,1),this.state=6083,this.match(t.GET),this.state=6085,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(35===e||168===e)&&(this.state=6084,e=this.tokenStream.LA(1),35===e||168===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=6087,this.match(t.DIAGNOSTICS),this.state=6119,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,877,this.context)){case 1:for(this.state=6088,this.variableClause(),this.state=6089,this.match(t.EQUAL_SYMBOL),this.state=6090,e=this.tokenStream.LA(1),117===e||996===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=6098,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6091,this.match(t.COMMA),this.state=6092,this.variableClause(),this.state=6093,this.match(t.EQUAL_SYMBOL),this.state=6094,e=this.tokenStream.LA(1),117===e||996===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=6100,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 2:switch(this.state=6101,this.match(t.CONDITION),this.state=6104,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ZERO_DECIMAL:case t.ONE_DECIMAL:case t.TWO_DECIMAL:case t.DECIMAL_LITERAL:case t.REAL_LITERAL:this.state=6102,this.decimalLiteral();break;case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.AT_SIGN:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:case t.LOCAL_ID:case t.GLOBAL_ID:this.state=6103,this.variableClause();break;default:throw new Ei(this)}for(this.state=6106,this.variableClause(),this.state=6107,this.match(t.EQUAL_SYMBOL),this.state=6108,this.diagnosticsConditionInformationName(),this.state=6116,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6109,this.match(t.COMMA),this.state=6110,this.variableClause(),this.state=6111,this.match(t.EQUAL_SYMBOL),this.state=6112,this.diagnosticsConditionInformationName(),this.state=6118,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}diagnosticsConditionInformationName(){let e,s=new Tx(this.context,this.state);this.enterRule(s,548,t.RULE_diagnosticsConditionInformationName);try{this.enterOuterAlt(s,1),this.state=6121,e=this.tokenStream.LA(1),!(e-359&-32)&&1<<e-359&272105729||507===e||515===e||592===e||639===e||646===e||836===e||1005===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}describeObjectClause(){let e=new ox(this.context,this.state);this.enterRule(e,550,t.RULE_describeObjectClause);try{switch(this.state=6133,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DELETE:case t.INSERT:case t.REPLACE:case t.SELECT:case t.UPDATE:case t.LR_BRACKET:switch(e=new Rx(e),this.enterOuterAlt(e,1),this.state=6128,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SELECT:case t.LR_BRACKET:this.state=6123,this.selectStatement();break;case t.DELETE:this.state=6124,this.deleteStatement();break;case t.INSERT:this.state=6125,this.insertStatement();break;case t.REPLACE:this.state=6126,this.replaceStatement();break;case t.UPDATE:this.state=6127,this.updateStatement();break;default:throw new Ei(this)}break;case t.FOR:e=new Ax(e),this.enterOuterAlt(e,2),this.state=6130,this.match(t.FOR),this.state=6131,this.match(t.CONNECTION),this.state=6132,this.uid();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}fullId(){let e=new Sx(this.context,this.state);this.enterRule(e,552,t.RULE_fullId);try{switch(this.enterOuterAlt(e,1),this.state=6135,this.uid(),this.state=6139,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,880,this.context)){case 1:this.state=6136,this.match(t.DOT_ID);break;case 2:this.state=6137,this.match(t.DOT),this.state=6138,this.uid()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableName(){let e=new lx(this.context,this.state);this.enterRule(e,554,t.RULE_tableName);try{this.enterOuterAlt(e,1),this.state=6141,this.fullId()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableNames(){let e,s=new Ox(this.context,this.state);this.enterRule(s,556,t.RULE_tableNames);try{for(this.enterOuterAlt(s,1),this.state=6143,this.tableName(),this.state=6148,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6144,this.match(t.COMMA),this.state=6145,this.tableName(),this.state=6150,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}userOrRoleName(){let e=new Ix(this.context,this.state);this.enterRule(e,558,t.RULE_userOrRoleName);try{switch(this.state=6153,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,882,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6151,this.userName();break;case 2:this.enterOuterAlt(e,2),this.state=6152,this.roleName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}userOrRoleNameList(){let e,s=new ux(this.context,this.state);this.enterRule(s,560,t.RULE_userOrRoleNameList);try{for(this.enterOuterAlt(s,1),this.state=6155,this.userOrRoleName(),this.state=6160,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6156,this.match(t.COMMA),this.state=6157,this.userOrRoleName(),this.state=6162,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}newRoleNameList(){let e,s=new Nx(this.context,this.state);this.enterRule(s,562,t.RULE_newRoleNameList);try{for(this.enterOuterAlt(s,1),this.state=6163,this.newRoleName(),this.state=6168,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6164,this.match(t.COMMA),this.state=6165,this.newRoleName(),this.state=6170,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}newRoleName(){let e=new Lx(this.context,this.state);this.enterRule(e,564,t.RULE_newRoleName);try{this.enterOuterAlt(e,1),this.state=6171,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}roleNameList(){let e,s=new Cx(this.context,this.state);this.enterRule(s,566,t.RULE_roleNameList);try{for(this.enterOuterAlt(s,1),this.state=6173,this.roleName(),this.state=6178,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6174,this.match(t.COMMA),this.state=6175,this.roleName(),this.state=6180,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}roleName(){let e=new _x(this.context,this.state);this.enterRule(e,568,t.RULE_roleName);try{this.enterOuterAlt(e,1),this.state=6181,this.newRoleName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}fullColumnName(){let e=new Px(this.context,this.state);this.enterRule(e,570,t.RULE_fullColumnName);try{switch(this.state=6197,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,890,this.context)){case 1:if(1===(this.enterOuterAlt(e,1),this.state=6183,this.uid(),this.state=6188,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,887,this.context)))if(1===(this.state=6184,this.dottedId(),this.state=6186,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,886,this.context)))this.state=6185,this.dottedId();break;case 2:if(this.enterOuterAlt(e,2),1===(this.state=6191,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,888,this.context)))this.state=6190,this.matchWildcard();if(1===(this.state=6193,this.dottedId(),this.state=6195,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,889,this.context)))this.state=6194,this.dottedId()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}databaseName(){let e=new Mx(this.context,this.state);this.enterRule(e,572,t.RULE_databaseName);try{this.enterOuterAlt(e,1),this.state=6199,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}indexName(){let e=new dx(this.context,this.state);this.enterRule(e,574,t.RULE_indexName);try{this.enterOuterAlt(e,1),this.state=6201,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}constraintName(){let e=new Ux(this.context,this.state);this.enterRule(e,576,t.RULE_constraintName);try{this.enterOuterAlt(e,1),this.state=6203,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}triggerName(){let e=new mx(this.context,this.state);this.enterRule(e,578,t.RULE_triggerName);try{this.enterOuterAlt(e,1),this.state=6205,this.fullId()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}indexNameList(){let e,s=new Dx(this.context,this.state);this.enterRule(s,580,t.RULE_indexNameList);try{for(this.enterOuterAlt(s,1),this.state=6207,this.indexName(),this.state=6212,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6208,this.match(t.COMMA),this.state=6209,this.indexName(),this.state=6214,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}indexColumnName(){let e,s=new px(this.context,this.state);this.enterRule(s,582,t.RULE_indexColumnName);try{switch(this.enterOuterAlt(s,1),this.state=6226,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,894,this.context)){case 1:switch(this.state=6217,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,892,this.context)){case 1:this.state=6215,this.uid();break;case 2:this.state=6216,this.match(t.STRING_LITERAL)}this.state=6223,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e&&(this.state=6219,this.match(t.LR_BRACKET),this.state=6220,this.decimalLiteral(),this.state=6221,this.match(t.RR_BRACKET));break;case 2:this.state=6225,this.expression(0)}this.state=6229,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(13===e||45===e)&&(this.state=6228,s._sortType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),13===e||45===e?(this.errorHandler.reportMatch(this),this.consume()):s._sortType=this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}simpleUserName(){let e=new gx(this.context,this.state);this.enterRule(e,584,t.RULE_simpleUserName);try{switch(this.state=6235,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,896,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6231,this.match(t.STRING_LITERAL);break;case 2:this.enterOuterAlt(e,2),this.state=6232,this.match(t.ID);break;case 3:this.enterOuterAlt(e,3),this.state=6233,this.match(t.ADMIN);break;case 4:this.enterOuterAlt(e,4),this.state=6234,this.keywordsCanBeId()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}hostName(){let e,s=new xx(this.context,this.state);this.enterRule(s,586,t.RULE_hostName);try{this.enterOuterAlt(s,1),this.state=6237,e=this.tokenStream.LA(1),!(e-1137&-32)&&1<<e-1137&6291457?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}userNameList(){let e,s=new kx(this.context,this.state);this.enterRule(s,588,t.RULE_userNameList);try{for(this.enterOuterAlt(s,1),this.state=6239,this.userName(),this.state=6244,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6240,this.match(t.COMMA),this.state=6241,this.userName(),this.state=6246,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}newUserName(){let e=new Hx(this.context,this.state);this.enterRule(e,590,t.RULE_newUserName);try{switch(this.state=6252,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,898,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6247,this.simpleUserName();break;case 2:this.enterOuterAlt(e,2),this.state=6248,this.simpleUserName(),this.state=6249,this.hostName();break;case 3:this.enterOuterAlt(e,3),this.state=6251,this.currentUserExpression()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}userName(){let e=new Gx(this.context,this.state);this.enterRule(e,592,t.RULE_userName);try{this.enterOuterAlt(e,1),this.state=6254,this.newUserName()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}mysqlVariable(){let e,s=new Fx(this.context,this.state);this.enterRule(s,594,t.RULE_mysqlVariable);try{this.enterOuterAlt(s,1),this.state=6256,e=this.tokenStream.LA(1),1159===e||1160===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}charsetName(){let e=new vx(this.context,this.state);this.enterRule(e,596,t.RULE_charsetName);try{switch(this.state=6262,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,899,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6258,this.match(t.BINARY);break;case 2:this.enterOuterAlt(e,2),this.state=6259,this.charsetNameBase();break;case 3:this.enterOuterAlt(e,3),this.state=6260,this.match(t.STRING_LITERAL);break;case 4:this.enterOuterAlt(e,4),this.state=6261,this.match(t.CHARSET_REVERSE_QOUTE_STRING)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}collationName(){let e=new Bx(this.context,this.state);this.enterRule(e,598,t.RULE_collationName);try{switch(this.state=6266,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,900,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6264,this.uid();break;case 2:this.enterOuterAlt(e,2),this.state=6265,this.match(t.STRING_LITERAL)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}engineName(){let e=new yx(this.context,this.state);this.enterRule(e,600,t.RULE_engineName);try{switch(this.state=6271,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CONNECT:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:this.enterOuterAlt(e,1),this.state=6268,this.engineNameBase();break;case t.ID:this.enterOuterAlt(e,2),this.state=6269,this.match(t.ID);break;case t.STRING_LITERAL:this.enterOuterAlt(e,3),this.state=6270,this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}engineNameBase(){let e,s=new fx(this.context,this.state);this.enterRule(s,602,t.RULE_engineNameBase);try{this.enterOuterAlt(s,1),this.state=6273,e=this.tokenStream.LA(1),375===e||!(e-787&-32)&&1<<e-787&4095?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}uuidSet(){let e,s=new Yx(this.context,this.state);this.enterRule(s,604,t.RULE_uuidSet);try{this.enterOuterAlt(s,1),this.state=6275,this.decimalLiteral(),this.state=6276,this.match(t.MINUS),this.state=6277,this.decimalLiteral(),this.state=6278,this.match(t.MINUS),this.state=6279,this.decimalLiteral(),this.state=6280,this.match(t.MINUS),this.state=6281,this.decimalLiteral(),this.state=6282,this.match(t.MINUS),this.state=6283,this.decimalLiteral(),this.state=6289,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=6284,this.match(t.COLON_SYMB),this.state=6285,this.decimalLiteral(),this.state=6286,this.match(t.MINUS),this.state=6287,this.decimalLiteral(),this.state=6291,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(1144===e)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xid(){let e,s=new wx(this.context,this.state);this.enterRule(s,606,t.RULE_xid);try{this.enterOuterAlt(s,1),this.state=6293,s._globalTableUid=this.xuidStringId(),this.state=6300,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1135===e&&(this.state=6294,this.match(t.COMMA),this.state=6295,s._qualifier=this.xuidStringId(),this.state=6298,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1135===e&&(this.state=6296,this.match(t.COMMA),this.state=6297,s._idFormat=this.decimalLiteral()))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xuidStringId(){let e,s=new bx(this.context,this.state);this.enterRule(s,608,t.RULE_xuidStringId);try{switch(this.state=6309,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.STRING_LITERAL:this.enterOuterAlt(s,1),this.state=6302,this.match(t.STRING_LITERAL);break;case t.BIT_STRING:this.enterOuterAlt(s,2),this.state=6303,this.match(t.BIT_STRING);break;case t.HEXADECIMAL_LITERAL:this.enterOuterAlt(s,3),this.state=6305,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=6304,this.match(t.HEXADECIMAL_LITERAL),this.state=6307,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(1150===e);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}authPlugin(){let e=new Wx(this.context,this.state);this.enterRule(e,610,t.RULE_authPlugin);try{switch(this.state=6313,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,907,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6311,this.uid();break;case 2:this.enterOuterAlt(e,2),this.state=6312,this.match(t.STRING_LITERAL)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}uid(){let e=new Vx(this.context,this.state);this.enterRule(e,612,t.RULE_uid);try{switch(this.state=6318,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.ID:this.enterOuterAlt(e,1),this.state=6315,this.simpleId();break;case t.CHARSET_REVERSE_QOUTE_STRING:this.enterOuterAlt(e,2),this.state=6316,this.match(t.CHARSET_REVERSE_QOUTE_STRING);break;case t.STRING_LITERAL:this.enterOuterAlt(e,3),this.state=6317,this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}simpleId(){let e=new Xx(this.context,this.state);this.enterRule(e,614,t.RULE_simpleId);try{switch(this.state=6329,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,909,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6320,this.match(t.ID);break;case 2:this.enterOuterAlt(e,2),this.state=6321,this.charsetNameBase();break;case 3:this.enterOuterAlt(e,3),this.state=6322,this.transactionLevelBase();break;case 4:this.enterOuterAlt(e,4),this.state=6323,this.engineNameBase();break;case 5:this.enterOuterAlt(e,5),this.state=6324,this.privilegesBase();break;case 6:this.enterOuterAlt(e,6),this.state=6325,this.intervalTypeBase();break;case 7:this.enterOuterAlt(e,7),this.state=6326,this.dataTypeBase();break;case 8:this.enterOuterAlt(e,8),this.state=6327,this.keywordsCanBeId();break;case 9:this.enterOuterAlt(e,9),this.state=6328,this.scalarFunctionName()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dottedId(){let e=new Kx(this.context,this.state);this.enterRule(e,616,t.RULE_dottedId);try{switch(this.state=6334,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DOT_ID:this.enterOuterAlt(e,1),this.state=6331,this.match(t.DOT_ID);break;case t.DOT:this.enterOuterAlt(e,2),this.state=6332,this.match(t.DOT),this.state=6333,this.uid();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}decimalLiteral(){let e,s=new Qx(this.context,this.state);this.enterRule(s,618,t.RULE_decimalLiteral);try{this.enterOuterAlt(s,1),this.state=6336,e=this.tokenStream.LA(1),!(e-1138&-32)&&1<<e-1138&10247?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}fileSizeLiteral(){let e=new Jx(this.context,this.state);this.enterRule(e,620,t.RULE_fileSizeLiteral);try{switch(this.state=6340,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FILESIZE_LITERAL:this.enterOuterAlt(e,1),this.state=6338,this.match(t.FILESIZE_LITERAL);break;case t.ZERO_DECIMAL:case t.ONE_DECIMAL:case t.TWO_DECIMAL:case t.DECIMAL_LITERAL:case t.REAL_LITERAL:this.enterOuterAlt(e,2),this.state=6339,this.decimalLiteral();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}stringLiteral(){let e,s=new Zx(this.context,this.state);this.enterRule(s,622,t.RULE_stringLiteral);try{let a;switch(this.state=6365,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,918,this.context)){case 1:switch(this.enterOuterAlt(s,1),this.state=6347,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.STRING_LITERAL:case t.STRING_CHARSET_NAME:this.state=6343,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1154===e&&(this.state=6342,this.match(t.STRING_CHARSET_NAME)),this.state=6345,this.match(t.STRING_LITERAL);break;case t.START_NATIONAL_STRING_LITERAL:this.state=6346,this.match(t.START_NATIONAL_STRING_LITERAL);break;default:throw new Ei(this)}this.state=6350,this.errorHandler.sync(this),a=1;do{if(1!==a)throw new Ei(this);this.state=6349,this.match(t.STRING_LITERAL),this.state=6352,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,914,this.context)}while(2!==a&&a!==ja.INVALID_ALT_NUMBER);break;case 2:switch(this.enterOuterAlt(s,2),this.state=6359,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.STRING_LITERAL:case t.STRING_CHARSET_NAME:this.state=6355,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1154===e&&(this.state=6354,this.match(t.STRING_CHARSET_NAME)),this.state=6357,this.match(t.STRING_LITERAL);break;case t.START_NATIONAL_STRING_LITERAL:this.state=6358,this.match(t.START_NATIONAL_STRING_LITERAL);break;default:throw new Ei(this)}if(1===(this.state=6363,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,917,this.context)))this.state=6361,this.match(t.COLLATE),this.state=6362,this.collationName()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}booleanLiteral(){let e,s=new qx(this.context,this.state);this.enterRule(s,624,t.RULE_booleanLiteral);try{this.enterOuterAlt(s,1),this.state=6367,e=this.tokenStream.LA(1),63===e||178===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}hexadecimalLiteral(){let e,s=new jx(this.context,this.state);this.enterRule(s,626,t.RULE_hexadecimalLiteral);try{this.enterOuterAlt(s,1),this.state=6370,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1154===e&&(this.state=6369,this.match(t.STRING_CHARSET_NAME)),this.state=6372,this.match(t.HEXADECIMAL_LITERAL)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}nullNotnull(){let e,s=new zx(this.context,this.state);this.enterRule(s,628,t.RULE_nullNotnull);try{this.enterOuterAlt(s,1),this.state=6375,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=6374,this.match(t.NOT)),this.state=6377,e=this.tokenStream.LA(1),116===e||1152===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}constant(){let e,s=new $x(this.context,this.state);this.enterRule(s,630,t.RULE_constant);try{switch(this.state=6391,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,922,this.context)){case 1:this.enterOuterAlt(s,1),this.state=6379,this.stringLiteral();break;case 2:this.enterOuterAlt(s,2),this.state=6380,this.decimalLiteral();break;case 3:this.enterOuterAlt(s,3),this.state=6381,this.match(t.MINUS),this.state=6382,this.decimalLiteral();break;case 4:this.enterOuterAlt(s,4),this.state=6383,this.hexadecimalLiteral();break;case 5:this.enterOuterAlt(s,5),this.state=6384,this.booleanLiteral();break;case 6:this.enterOuterAlt(s,6),this.state=6385,this.match(t.REAL_LITERAL);break;case 7:this.enterOuterAlt(s,7),this.state=6386,this.match(t.BIT_STRING);break;case 8:this.enterOuterAlt(s,8),this.state=6388,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=6387,this.match(t.NOT)),this.state=6390,s._nullLiteral=this.tokenStream.LT(1),e=this.tokenStream.LA(1),116===e||1152===e?(this.errorHandler.reportMatch(this),this.consume()):s._nullLiteral=this.errorHandler.recoverInline(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dataType(){let e,s=new tk(this.context,this.state);this.enterRule(s,632,t.RULE_dataType);try{let a;switch(this.state=6519,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,951,this.context)){case 1:if(s=new ck(s),this.enterOuterAlt(s,1),1===(this.state=6393,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),25===e||!(e-222&-32)&&1<<e-222&31239||518===e?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this),this.state=6395,this.errorHandler.sync(this),e=this.tokenStream.LA(1),238===e&&(this.state=6394,this.match(t.VARYING)),this.state=6398,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,924,this.context)))this.state=6397,this.lengthOneDimension();if(1===(this.state=6401,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,925,this.context)))this.state=6400,this.match(t.BINARY);if(1===(this.state=6406,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,926,this.context)))this.state=6403,this.charSet(),this.state=6404,this.charsetName();switch(this.state=6411,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,927,this.context)){case 1:this.state=6408,this.match(t.COLLATE),this.state=6409,this.collationName();break;case 2:this.state=6410,this.match(t.BINARY)}break;case 2:if(s=new rk(s),this.enterOuterAlt(s,2),1===(this.state=6413,this.match(t.NATIONAL),this.state=6414,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),25===e||222===e?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this),this.state=6415,this.match(t.VARYING),this.state=6417,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,928,this.context)))this.state=6416,this.lengthOneDimension();if(1===(this.state=6420,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,929,this.context)))this.state=6419,this.match(t.BINARY);break;case 3:if(s=new hk(s),this.enterOuterAlt(s,3),1===(this.state=6422,this.match(t.NATIONAL),this.state=6423,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),25===e||222===e||223===e?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this),this.state=6425,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,930,this.context)))this.state=6424,this.lengthOneDimension();if(1===(this.state=6428,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,931,this.context)))this.state=6427,this.match(t.BINARY);break;case 4:if(s=new hk(s),this.enterOuterAlt(s,4),1===(this.state=6430,this.match(t.NCHAR),this.state=6431,s._typeName=this.match(t.VARCHAR),this.state=6433,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,932,this.context)))this.state=6432,this.lengthOneDimension();if(1===(this.state=6436,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,933,this.context)))this.state=6435,this.match(t.BINARY);break;case 5:if(s=new ik(s),this.enterOuterAlt(s,5),1===(this.state=6438,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),!(e-196&-32)&&1<<e-196&4095?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this),this.state=6440,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,934,this.context)))this.state=6439,this.lengthOneDimension();for(this.state=6445,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,935,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=6442,e=this.tokenStream.LA(1),183===e||195===e||612===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=6447,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,935,this.context);break;case 6:if(s=new ik(s),this.enterOuterAlt(s,6),1===(this.state=6448,s._typeName=this.match(t.REAL),this.state=6450,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,936,this.context)))this.state=6449,this.lengthTwoDimension();for(this.state=6455,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,937,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=6452,e=this.tokenStream.LA(1),183===e||195===e||612===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=6457,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,937,this.context);break;case 7:if(s=new ik(s),this.enterOuterAlt(s,7),1===(this.state=6458,s._typeName=this.match(t.DOUBLE),this.state=6460,this.errorHandler.sync(this),e=this.tokenStream.LA(1),210===e&&(this.state=6459,this.match(t.PRECISION)),this.state=6463,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,939,this.context)))this.state=6462,this.lengthTwoDimension();for(this.state=6468,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,940,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=6465,e=this.tokenStream.LA(1),183===e||195===e||612===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=6470,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,940,this.context);break;case 8:if(s=new ik(s),this.enterOuterAlt(s,8),1===(this.state=6471,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),!(e-211&-32)&&1<<e-211&63||431===e?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this),this.state=6473,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,941,this.context)))this.state=6472,this.lengthTwoOptionalDimension();for(this.state=6478,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,942,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=6475,e=this.tokenStream.LA(1),183===e||195===e||612===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=6480,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,942,this.context);break;case 9:s=new Ek(s),this.enterOuterAlt(s,9),this.state=6481,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),!(e-217&-32)&&1<<e-217&4237313||348===e||349===e?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this);break;case 10:if(1===(s=new ik(s),this.enterOuterAlt(s,10),this.state=6482,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),!(e-218&-32)&&1<<e-218&2831||346===e?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this),this.state=6484,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,943,this.context)))this.state=6483,this.lengthOneDimension();break;case 11:if(s=new ak(s),this.enterOuterAlt(s,11),1===(this.state=6486,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),153===e||237===e?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this),this.state=6487,this.collectionOptions(),this.state=6489,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,944,this.context)))this.state=6488,this.match(t.BINARY);if(1===(this.state=6494,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,945,this.context)))this.state=6491,this.charSet(),this.state=6492,this.charsetName();break;case 12:if(1===(s=new ek(s),this.enterOuterAlt(s,12),this.state=6496,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),466===e||!(e-803&-32)&&1<<e-803&511?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this),this.state=6499,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,946,this.context)))this.state=6497,this.match(t.SRID),this.state=6498,this.decimalLiteral();break;case 13:if(s=new nk(s),this.enterOuterAlt(s,13),1===(this.state=6501,s._typeName=this.match(t.LONG),this.state=6503,this.errorHandler.sync(this),e=this.tokenStream.LA(1),223===e&&(this.state=6502,this.match(t.VARCHAR)),this.state=6506,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,948,this.context)))this.state=6505,this.match(t.BINARY);if(1===(this.state=6511,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,949,this.context)))this.state=6508,this.charSet(),this.state=6509,this.charsetName();if(1===(this.state=6515,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,950,this.context)))this.state=6513,this.match(t.COLLATE),this.state=6514,this.collationName();break;case 14:s=new sk(s),this.enterOuterAlt(s,14),this.state=6517,this.match(t.LONG),this.state=6518,this.match(t.VARBINARY)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}collectionOptions(){let e,s=new Tk(this.context,this.state);this.enterRule(s,634,t.RULE_collectionOptions);try{for(this.enterOuterAlt(s,1),this.state=6521,this.match(t.LR_BRACKET),this.state=6522,this.match(t.STRING_LITERAL),this.state=6527,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6523,this.match(t.COMMA),this.state=6524,this.match(t.STRING_LITERAL),this.state=6529,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=6530,this.match(t.RR_BRACKET)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}convertedDataType(){let e,s=new ok(this.context,this.state);this.enterRule(s,636,t.RULE_convertedDataType);try{switch(this.enterOuterAlt(s,1),this.state=6554,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FLOAT:case t.BINARY:case t.NCHAR:this.state=6532,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),211===e||226===e||518===e?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this),this.state=6534,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e&&(this.state=6533,this.lengthOneDimension());break;case t.CHAR:this.state=6536,s._typeName=this.match(t.CHAR),this.state=6538,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e&&(this.state=6537,this.lengthOneDimension()),this.state=6543,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(25===e||222===e||841===e)&&(this.state=6540,this.charSet(),this.state=6541,this.charsetName());break;case t.INT:case t.INTEGER:case t.DOUBLE:case t.DATE:case t.TIME:case t.DATETIME:case t.YEAR:case t.JSON:this.state=6545,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),!(e-200&-32)&&1<<e-200&3539521||466===e?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this);break;case t.DECIMAL:case t.DEC:this.state=6546,s._typeName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),214===e||215===e?(this.errorHandler.reportMatch(this),this.consume()):s._typeName=this.errorHandler.recoverInline(this),this.state=6548,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e&&(this.state=6547,this.lengthTwoOptionalDimension());break;case t.UNSIGNED:case t.SIGNED:this.state=6550,e=this.tokenStream.LA(1),183===e||612===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=6552,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(200===e||206===e)&&(this.state=6551,e=this.tokenStream.LA(1),200===e||206===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;default:throw new Ei(this)}this.state=6557,this.errorHandler.sync(this),e=this.tokenStream.LA(1),11===e&&(this.state=6556,this.match(t.ARRAY))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}lengthOneDimension(){let e=new Rk(this.context,this.state);this.enterRule(e,638,t.RULE_lengthOneDimension);try{this.enterOuterAlt(e,1),this.state=6559,this.match(t.LR_BRACKET),this.state=6560,this.decimalLiteral(),this.state=6561,this.match(t.RR_BRACKET)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}lengthTwoDimension(){let e=new Ak(this.context,this.state);this.enterRule(e,640,t.RULE_lengthTwoDimension);try{this.enterOuterAlt(e,1),this.state=6563,this.match(t.LR_BRACKET),this.state=6564,this.decimalLiteral(),this.state=6565,this.match(t.COMMA),this.state=6566,this.decimalLiteral(),this.state=6567,this.match(t.RR_BRACKET)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}lengthTwoOptionalDimension(){let e,s=new Sk(this.context,this.state);this.enterRule(s,642,t.RULE_lengthTwoOptionalDimension);try{this.enterOuterAlt(s,1),this.state=6569,this.match(t.LR_BRACKET),this.state=6570,this.decimalLiteral(),this.state=6573,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1135===e&&(this.state=6571,this.match(t.COMMA),this.state=6572,this.decimalLiteral()),this.state=6575,this.match(t.RR_BRACKET)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}uidList(){let e=new lk(this.context,this.state);this.enterRule(e,644,t.RULE_uidList);try{let s;for(this.enterOuterAlt(e,1),this.state=6577,this.uid(),this.state=6582,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,961,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=6578,this.match(t.COMMA),this.state=6579,this.uid()),this.state=6584,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,961,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}fullColumnNameList(){let e,s=new Ok(this.context,this.state);this.enterRule(s,646,t.RULE_fullColumnNameList);try{for(this.enterOuterAlt(s,1),this.state=6585,this.fullColumnName(),this.state=6590,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6586,this.match(t.COMMA),this.state=6587,this.fullColumnName(),this.state=6592,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tables(){let e=new Ik(this.context,this.state);this.enterRule(e,648,t.RULE_tables);try{let s;for(this.enterOuterAlt(e,1),this.state=6593,this.tableName(),this.state=6598,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,963,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=6594,this.match(t.COMMA),this.state=6595,this.tableName()),this.state=6600,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,963,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}indexColumnNames(){let e,s=new uk(this.context,this.state);this.enterRule(s,650,t.RULE_indexColumnNames);try{for(this.enterOuterAlt(s,1),this.state=6601,this.match(t.LR_BRACKET),this.state=6602,this.indexColumnName(),this.state=6607,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6603,this.match(t.COMMA),this.state=6604,this.indexColumnName(),this.state=6609,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=6610,this.match(t.RR_BRACKET)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expressions(){let e,s=new Nk(this.context,this.state);this.enterRule(s,652,t.RULE_expressions);try{for(this.enterOuterAlt(s,1),this.state=6612,this.expression(0),this.state=6617,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6613,this.match(t.COMMA),this.state=6614,this.expression(0),this.state=6619,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expressionsWithDefaults(){let e,s=new Lk(this.context,this.state);this.enterRule(s,654,t.RULE_expressionsWithDefaults);try{for(this.enterOuterAlt(s,1),this.state=6620,this.expressionOrDefault(),this.state=6625,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6621,this.match(t.COMMA),this.state=6622,this.expressionOrDefault(),this.state=6627,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}constants(){let e,s=new Ck(this.context,this.state);this.enterRule(s,656,t.RULE_constants);try{for(this.enterOuterAlt(s,1),this.state=6628,this.constant(),this.state=6633,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6629,this.match(t.COMMA),this.state=6630,this.constant(),this.state=6635,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}simpleStrings(){let e,s=new _k(this.context,this.state);this.enterRule(s,658,t.RULE_simpleStrings);try{for(this.enterOuterAlt(s,1),this.state=6636,this.match(t.STRING_LITERAL),this.state=6641,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6637,this.match(t.COMMA),this.state=6638,this.match(t.STRING_LITERAL),this.state=6643,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}userVariables(){let e,s=new Pk(this.context,this.state);this.enterRule(s,660,t.RULE_userVariables);try{for(this.enterOuterAlt(s,1),this.state=6644,this.match(t.LOCAL_ID),this.state=6649,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6645,this.match(t.COMMA),this.state=6646,this.match(t.LOCAL_ID),this.state=6651,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}defaultValue(){let e=new Mk(this.context,this.state);this.enterRule(e,662,t.RULE_defaultValue);try{switch(this.state=6678,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,972,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6652,this.match(t.NULL_LITERAL);break;case 2:this.enterOuterAlt(e,2),this.state=6653,this.match(t.CAST),this.state=6654,this.match(t.LR_BRACKET),this.state=6655,this.expression(0),this.state=6656,this.match(t.AS),this.state=6657,this.convertedDataType(),this.state=6658,this.match(t.RR_BRACKET);break;case 3:if(this.enterOuterAlt(e,3),1===(this.state=6661,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,970,this.context)))this.state=6660,this.unaryOperator();this.state=6663,this.constant();break;case 4:if(1===(this.enterOuterAlt(e,4),this.state=6664,this.currentTimestamp(),this.state=6668,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,971,this.context)))this.state=6665,this.match(t.ON),this.state=6666,this.match(t.UPDATE),this.state=6667,this.currentTimestamp();break;case 5:this.enterOuterAlt(e,5),this.state=6670,this.match(t.LR_BRACKET),this.state=6671,this.expression(0),this.state=6672,this.match(t.RR_BRACKET);break;case 6:this.enterOuterAlt(e,6),this.state=6674,this.match(t.LR_BRACKET),this.state=6675,this.fullId(),this.state=6676,this.match(t.RR_BRACKET)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}currentTimestamp(){let e,s=new dk(this.context,this.state);this.enterRule(s,664,t.RULE_currentTimestamp);try{switch(this.enterOuterAlt(s,1),this.state=6694,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.LOCALTIMESTAMP:this.state=6680,e=this.tokenStream.LA(1),!(e-315&-32)&&1<<e-315&131?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=6686,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1133===e&&(this.state=6681,this.match(t.LR_BRACKET),this.state=6683,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-1138&-32)&&1<<e-1138&10247&&(this.state=6682,this.decimalLiteral()),this.state=6685,this.match(t.RR_BRACKET));break;case t.NOW:this.state=6688,this.match(t.NOW),this.state=6689,this.match(t.LR_BRACKET),this.state=6691,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-1138&-32)&&1<<e-1138&10247&&(this.state=6690,this.decimalLiteral()),this.state=6693,this.match(t.RR_BRACKET);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expressionOrDefault(){let e=new Uk(this.context,this.state);this.enterRule(e,666,t.RULE_expressionOrDefault);try{switch(this.state=6698,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,977,this.context)){case 1:this.enterOuterAlt(e,1),this.state=6696,this.expression(0);break;case 2:this.enterOuterAlt(e,2),this.state=6697,this.match(t.DEFAULT)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ifExists(){let e=new mk(this.context,this.state);this.enterRule(e,668,t.RULE_ifExists);try{this.enterOuterAlt(e,1),this.state=6700,this.match(t.IF),this.state=6701,this.match(t.EXISTS)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ifNotExists(){let e=new Dk(this.context,this.state);this.enterRule(e,670,t.RULE_ifNotExists);try{this.enterOuterAlt(e,1),this.state=6703,this.match(t.IF),this.state=6704,this.match(t.NOT),this.state=6705,this.match(t.EXISTS)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}orReplace(){let e=new pk(this.context,this.state);this.enterRule(e,672,t.RULE_orReplace);try{this.enterOuterAlt(e,1),this.state=6707,this.match(t.OR),this.state=6708,this.match(t.REPLACE)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}waitNowaitClause(){let e=new gk(this.context,this.state);this.enterRule(e,674,t.RULE_waitNowaitClause);try{switch(this.state=6713,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WAIT:this.enterOuterAlt(e,1),this.state=6710,this.match(t.WAIT),this.state=6711,this.decimalLiteral();break;case t.NOWAIT:this.enterOuterAlt(e,2),this.state=6712,this.match(t.NOWAIT);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}functionCall(){let e=new xk(this.context,this.state);this.enterRule(e,676,t.RULE_functionCall);try{switch(this.state=6733,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,981,this.context)){case 1:e=new kk(e),this.enterOuterAlt(e,1),this.state=6715,this.specificFunction();break;case 2:e=new vk(e),this.enterOuterAlt(e,2),this.state=6716,this.aggregateWindowedFunction();break;case 3:e=new Fk(e),this.enterOuterAlt(e,3),this.state=6717,this.nonAggregateWindowedFunction();break;case 4:if(e=new Bk(e),this.enterOuterAlt(e,4),1===(this.state=6718,this.scalarFunctionName(),this.state=6719,this.match(t.LR_BRACKET),this.state=6721,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,979,this.context)))this.state=6720,this.functionArgs();this.state=6723,this.match(t.RR_BRACKET);break;case 5:if(e=new Gk(e),this.enterOuterAlt(e,5),1===(this.state=6725,this.fullId(),this.state=6726,this.match(t.LR_BRACKET),this.state=6728,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,980,this.context)))this.state=6727,this.functionArgs();this.state=6730,this.match(t.RR_BRACKET);break;case 6:e=new Hk(e),this.enterOuterAlt(e,6),this.state=6732,this.passwordFunctionClause()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}specificFunction(){let e,s=new yk(this.context,this.state);this.enterRule(s,678,t.RULE_specificFunction);try{switch(this.state=6914,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1005,this.context)){case 1:if(1===(s=new Jk(s),this.enterOuterAlt(s,1),this.state=6735,e=this.tokenStream.LA(1),150===e||!(e-313&-32)&&1<<e-313&262159?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=6738,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,982,this.context)))this.state=6736,this.match(t.LR_BRACKET),this.state=6737,this.match(t.RR_BRACKET);break;case 2:s=new Qk(s),this.enterOuterAlt(s,2),this.state=6740,this.currentUserExpression();break;case 3:s=new Vk(s),this.enterOuterAlt(s,3),this.state=6741,this.match(t.CONVERT),this.state=6742,this.match(t.LR_BRACKET),this.state=6743,this.expression(0),this.state=6744,s._separator=this.match(t.COMMA),this.state=6745,this.convertedDataType(),this.state=6746,this.match(t.RR_BRACKET);break;case 4:s=new Vk(s),this.enterOuterAlt(s,4),this.state=6748,this.match(t.CONVERT),this.state=6749,this.match(t.LR_BRACKET),this.state=6750,this.expression(0),this.state=6751,this.match(t.USING),this.state=6752,this.charsetName(),this.state=6753,this.match(t.RR_BRACKET);break;case 5:s=new Vk(s),this.enterOuterAlt(s,5),this.state=6755,this.match(t.CAST),this.state=6756,this.match(t.LR_BRACKET),this.state=6757,this.expression(0),this.state=6758,this.match(t.AS),this.state=6759,this.convertedDataType(),this.state=6760,this.match(t.RR_BRACKET);break;case 6:s=new Xk(s),this.enterOuterAlt(s,6),this.state=6762,this.match(t.VALUES),this.state=6763,this.match(t.LR_BRACKET),this.state=6764,this.fullColumnName(),this.state=6765,this.match(t.RR_BRACKET);break;case 7:s=new Kk(s),this.enterOuterAlt(s,7),this.state=6767,this.match(t.CASE),this.state=6768,this.expression(0),this.state=6770,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=6769,this.caseFuncAlternative(),this.state=6772,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(189===e);this.state=6776,this.errorHandler.sync(this),e=this.tokenStream.LA(1),53===e&&(this.state=6774,this.match(t.ELSE),this.state=6775,s._elseArg=this.functionArg()),this.state=6778,this.match(t.END);break;case 8:s=new bk(s),this.enterOuterAlt(s,8),this.state=6780,this.match(t.CASE),this.state=6782,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=6781,this.caseFuncAlternative(),this.state=6784,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(189===e);this.state=6788,this.errorHandler.sync(this),e=this.tokenStream.LA(1),53===e&&(this.state=6786,this.match(t.ELSE),this.state=6787,s._elseArg=this.functionArg()),this.state=6790,this.match(t.END);break;case 9:s=new Zk(s),this.enterOuterAlt(s,9),this.state=6792,this.match(t.CHAR),this.state=6793,this.match(t.LR_BRACKET),this.state=6794,this.functionArgs(),this.state=6797,this.errorHandler.sync(this),e=this.tokenStream.LA(1),187===e&&(this.state=6795,this.match(t.USING),this.state=6796,this.charsetName()),this.state=6799,this.match(t.RR_BRACKET);break;case 10:switch(s=new fk(s),this.enterOuterAlt(s,10),this.state=6801,this.match(t.POSITION),this.state=6802,this.match(t.LR_BRACKET),this.state=6805,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,988,this.context)){case 1:this.state=6803,s._positionString=this.stringLiteral();break;case 2:this.state=6804,s._positionExpression=this.expression(0)}switch(this.state=6807,this.match(t.IN),this.state=6810,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,989,this.context)){case 1:this.state=6808,s._inString=this.stringLiteral();break;case 2:this.state=6809,s._inExpression=this.expression(0)}this.state=6812,this.match(t.RR_BRACKET);break;case 11:switch(s=new zk(s),this.enterOuterAlt(s,11),this.state=6814,e=this.tokenStream.LA(1),325===e||326===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=6815,this.match(t.LR_BRACKET),this.state=6818,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,990,this.context)){case 1:this.state=6816,s._sourceString=this.stringLiteral();break;case 2:this.state=6817,s._sourceExpression=this.expression(0)}switch(this.state=6820,this.match(t.FROM),this.state=6823,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,991,this.context)){case 1:this.state=6821,s._fromDecimal=this.decimalLiteral();break;case 2:this.state=6822,s._fromExpression=this.expression(0)}if(this.state=6830,this.errorHandler.sync(this),e=this.tokenStream.LA(1),65===e)switch(this.state=6825,this.match(t.FOR),this.state=6828,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,992,this.context)){case 1:this.state=6826,s._forDecimal=this.decimalLiteral();break;case 2:this.state=6827,s._forExpression=this.expression(0)}this.state=6832,this.match(t.RR_BRACKET);break;case 12:switch(s=new Yk(s),this.enterOuterAlt(s,12),this.state=6834,this.match(t.TRIM),this.state=6835,this.match(t.LR_BRACKET),this.state=6836,s._positioinForm=this.tokenStream.LT(1),e=this.tokenStream.LA(1),17===e||95===e||176===e?(this.errorHandler.reportMatch(this),this.consume()):s._positioinForm=this.errorHandler.recoverInline(this),this.state=6839,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,994,this.context)){case 1:this.state=6837,s._sourceString=this.stringLiteral();break;case 2:this.state=6838,s._sourceExpression=this.expression(0)}switch(this.state=6841,this.match(t.FROM),this.state=6844,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,995,this.context)){case 1:this.state=6842,s._fromString=this.stringLiteral();break;case 2:this.state=6843,s._fromExpression=this.expression(0)}this.state=6846,this.match(t.RR_BRACKET);break;case 13:switch(s=new Yk(s),this.enterOuterAlt(s,13),this.state=6848,this.match(t.TRIM),this.state=6849,this.match(t.LR_BRACKET),this.state=6852,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,996,this.context)){case 1:this.state=6850,s._sourceString=this.stringLiteral();break;case 2:this.state=6851,s._sourceExpression=this.expression(0)}switch(this.state=6854,this.match(t.FROM),this.state=6857,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,997,this.context)){case 1:this.state=6855,s._fromString=this.stringLiteral();break;case 2:this.state=6856,s._fromExpression=this.expression(0)}this.state=6859,this.match(t.RR_BRACKET);break;case 14:switch(s=new qk(s),this.enterOuterAlt(s,14),this.state=6861,this.match(t.WEIGHT_STRING),this.state=6862,this.match(t.LR_BRACKET),this.state=6865,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,998,this.context)){case 1:this.state=6863,this.stringLiteral();break;case 2:this.state=6864,this.expression(0)}this.state=6873,this.errorHandler.sync(this),e=this.tokenStream.LA(1),12===e&&(this.state=6867,this.match(t.AS),this.state=6868,s._stringFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),222===e||226===e?(this.errorHandler.reportMatch(this),this.consume()):s._stringFormat=this.errorHandler.recoverInline(this),this.state=6869,this.match(t.LR_BRACKET),this.state=6870,this.decimalLiteral(),this.state=6871,this.match(t.RR_BRACKET)),this.state=6876,this.errorHandler.sync(this),e=this.tokenStream.LA(1),472===e&&(this.state=6875,this.levelsInWeightString()),this.state=6878,this.match(t.RR_BRACKET);break;case 15:switch(s=new Wk(s),this.enterOuterAlt(s,15),this.state=6880,this.match(t.EXTRACT),this.state=6881,this.match(t.LR_BRACKET),this.state=6882,this.intervalType(),this.state=6883,this.match(t.FROM),this.state=6886,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1001,this.context)){case 1:this.state=6884,s._sourceString=this.stringLiteral();break;case 2:this.state=6885,s._sourceExpression=this.expression(0)}this.state=6888,this.match(t.RR_BRACKET);break;case 16:s=new jk(s),this.enterOuterAlt(s,16),this.state=6890,this.match(t.GET_FORMAT),this.state=6891,this.match(t.LR_BRACKET),this.state=6892,s._datetimeFormat=this.tokenStream.LT(1),e=this.tokenStream.LA(1),!(e-217&-32)&&1<<e-217&11?(this.errorHandler.reportMatch(this),this.consume()):s._datetimeFormat=this.errorHandler.recoverInline(this),this.state=6893,this.match(t.COMMA),this.state=6894,this.stringLiteral(),this.state=6895,this.match(t.RR_BRACKET);break;case 17:if(s=new wk(s),this.enterOuterAlt(s,17),1===(this.state=6897,this.match(t.JSON_VALUE),this.state=6898,this.match(t.LR_BRACKET),this.state=6899,this.expression(0),this.state=6900,this.match(t.COMMA),this.state=6901,this.expression(0),this.state=6904,this.errorHandler.sync(this),e=this.tokenStream.LA(1),593===e&&(this.state=6902,this.match(t.RETURNING),this.state=6903,this.convertedDataType()),this.state=6907,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1003,this.context)))this.state=6906,this.jsonOnEmpty();this.state=6910,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(42===e||116===e||411===e)&&(this.state=6909,this.jsonOnError()),this.state=6912,this.match(t.RR_BRACKET)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}caseFuncAlternative(){let e=new $k(this.context,this.state);this.enterRule(e,680,t.RULE_caseFuncAlternative);try{this.enterOuterAlt(e,1),this.state=6916,this.match(t.WHEN),this.state=6917,e._condition=this.functionArg(),this.state=6918,this.match(t.THEN),this.state=6919,e._consequent=this.functionArg()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}levelsInWeightString(){let e,s=new tH(this.context,this.state);this.enterRule(s,682,t.RULE_levelsInWeightString);try{switch(this.state=6935,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1007,this.context)){case 1:for(s=new sH(s),this.enterOuterAlt(s,1),this.state=6921,this.match(t.LEVEL),this.state=6922,this.levelInWeightListElement(),this.state=6927,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6923,this.match(t.COMMA),this.state=6924,this.levelInWeightListElement(),this.state=6929,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 2:s=new eH(s),this.enterOuterAlt(s,2),this.state=6930,this.match(t.LEVEL),this.state=6931,s._firstLevel=this.decimalLiteral(),this.state=6932,this.match(t.MINUS),this.state=6933,s._lastLevel=this.decimalLiteral()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}levelInWeightListElement(){let e,s=new aH(this.context,this.state);this.enterRule(s,684,t.RULE_levelInWeightListElement);try{this.enterOuterAlt(s,1),this.state=6937,this.decimalLiteral(),this.state=6939,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(13===e||45===e||994===e)&&(this.state=6938,s._orderType=this.tokenStream.LT(1),e=this.tokenStream.LA(1),13===e||45===e||994===e?(this.errorHandler.reportMatch(this),this.consume()):s._orderType=this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}aggregateWindowedFunction(){let e,s=new rH(this.context,this.state);this.enterRule(s,686,t.RULE_aggregateWindowedFunction);try{switch(this.state=7e3,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AVG:case t.MAX:case t.MIN:case t.SUM:if(this.enterOuterAlt(s,1),1===(this.state=6941,e=this.tokenStream.LA(1),!(e-286&-32)&&1<<e-286&8400897?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=6942,this.match(t.LR_BRACKET),this.state=6944,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1009,this.context)))this.state=6943,s._aggregator=this.tokenStream.LT(1),e=this.tokenStream.LA(1),6===e||49===e?(this.errorHandler.reportMatch(this),this.consume()):s._aggregator=this.errorHandler.recoverInline(this);if(1===(this.state=6946,this.functionArg(),this.state=6947,this.match(t.RR_BRACKET),this.state=6949,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1010,this.context)))this.state=6948,this.overClause();break;case t.COUNT:switch(this.enterOuterAlt(s,2),this.state=6951,this.match(t.COUNT),this.state=6952,this.match(t.LR_BRACKET),this.state=6960,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1012,this.context)){case 1:this.state=6953,s._starArg=this.match(t.STAR);break;case 2:if(1===(this.state=6955,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1011,this.context)))this.state=6954,s._aggregator=this.match(t.ALL);this.state=6957,this.functionArg();break;case 3:this.state=6958,s._aggregator=this.match(t.DISTINCT),this.state=6959,this.functionArgs()}if(1===(this.state=6962,this.match(t.RR_BRACKET),this.state=6964,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1013,this.context)))this.state=6963,this.overClause();break;case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:if(this.enterOuterAlt(s,3),1===(this.state=6966,e=this.tokenStream.LA(1),!(e-287&-32)&&1<<e-287&62652423?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=6967,this.match(t.LR_BRACKET),this.state=6969,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1014,this.context)))this.state=6968,s._aggregator=this.match(t.ALL);if(1===(this.state=6971,this.functionArg(),this.state=6972,this.match(t.RR_BRACKET),this.state=6974,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1015,this.context)))this.state=6973,this.overClause();break;case t.GROUP_CONCAT:if(this.enterOuterAlt(s,4),1===(this.state=6976,this.match(t.GROUP_CONCAT),this.state=6977,this.match(t.LR_BRACKET),this.state=6979,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1016,this.context)))this.state=6978,s._aggregator=this.match(t.DISTINCT);if(this.state=6981,this.functionArgs(),this.state=6992,this.errorHandler.sync(this),e=this.tokenStream.LA(1),124===e)for(this.state=6982,this.match(t.ORDER),this.state=6983,this.match(t.BY),this.state=6984,this.orderByExpression(),this.state=6989,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=6985,this.match(t.COMMA),this.state=6986,this.orderByExpression(),this.state=6991,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=6996,this.errorHandler.sync(this),e=this.tokenStream.LA(1),154===e&&(this.state=6994,this.match(t.SEPARATOR),this.state=6995,s._separator=this.match(t.STRING_LITERAL)),this.state=6998,this.match(t.RR_BRACKET);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}nonAggregateWindowedFunction(){let e,s=new iH(this.context,this.state);this.enterRule(s,688,t.RULE_nonAggregateWindowedFunction);try{switch(this.state=7040,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LAG:case t.LEAD:if(this.enterOuterAlt(s,1),1===(this.state=7002,e=this.tokenStream.LA(1),295===e||297===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=7003,this.match(t.LR_BRACKET),this.state=7004,this.expression(0),this.state=7007,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1021,this.context)))this.state=7005,this.match(t.COMMA),this.state=7006,this.decimalLiteral();this.state=7011,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1135===e&&(this.state=7009,this.match(t.COMMA),this.state=7010,this.decimalLiteral()),this.state=7013,this.match(t.RR_BRACKET),this.state=7014,this.overClause();break;case t.FIRST_VALUE:case t.LAST_VALUE:this.enterOuterAlt(s,2),this.state=7016,e=this.tokenStream.LA(1),293===e||296===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=7017,this.match(t.LR_BRACKET),this.state=7018,this.expression(0),this.state=7019,this.match(t.RR_BRACKET),this.state=7020,this.overClause();break;case t.CUME_DIST:case t.DENSE_RANK:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:this.enterOuterAlt(s,3),this.state=7022,e=this.tokenStream.LA(1),!(e-291&-32)&&1<<e-291&14339?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=7023,this.match(t.LR_BRACKET),this.state=7024,this.match(t.RR_BRACKET),this.state=7025,this.overClause();break;case t.NTH_VALUE:this.enterOuterAlt(s,4),this.state=7026,this.match(t.NTH_VALUE),this.state=7027,this.match(t.LR_BRACKET),this.state=7028,this.expression(0),this.state=7029,this.match(t.COMMA),this.state=7030,this.decimalLiteral(),this.state=7031,this.match(t.RR_BRACKET),this.state=7032,this.overClause();break;case t.NTILE:this.enterOuterAlt(s,5),this.state=7034,this.match(t.NTILE),this.state=7035,this.match(t.LR_BRACKET),this.state=7036,this.decimalLiteral(),this.state=7037,this.match(t.RR_BRACKET),this.state=7038,this.overClause();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}overClause(){let e=new cH(this.context,this.state);this.enterRule(e,690,t.RULE_overClause);try{switch(this.enterOuterAlt(e,1),this.state=7042,this.match(t.OVER),this.state=7048,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LR_BRACKET:this.state=7043,this.match(t.LR_BRACKET),this.state=7044,this.windowSpec(),this.state=7045,this.match(t.RR_BRACKET);break;case t.ARRAY:case t.ATTRIBUTE:case t.BUCKETS:case t.CONDITION:case t.CURRENT:case t.CURRENT_USER:case t.DATABASE:case t.DEFAULT:case t.DIAGNOSTICS:case t.EMPTY:case t.ENFORCED:case t.EXCEPT:case t.GROUP:case t.IF:case t.IGNORED:case t.INSERT:case t.LATERAL:case t.LEFT:case t.NUMBER:case t.OPTIONAL:case t.ORDER:case t.PRIMARY:case t.REPEAT:case t.REPLACE:case t.RIGHT:case t.SCHEMA:case t.SKIP_QUERY_REWRITE:case t.STACKED:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.DATETIME:case t.YEAR:case t.BINARY:case t.TEXT:case t.ENUM:case t.SERIAL:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.NESTED:case t.ORDINALITY:case t.PATH:case t.AVG:case t.BIT_AND:case t.BIT_OR:case t.BIT_XOR:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.GROUP_CONCAT:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.MAX:case t.MIN:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.STD:case t.STDDEV:case t.STDDEV_POP:case t.STDDEV_SAMP:case t.SUM:case t.VAR_POP:case t.VAR_SAMP:case t.VARIANCE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.LOCALTIME:case t.CURDATE:case t.CURTIME:case t.DATE_ADD:case t.DATE_SUB:case t.LOCALTIMESTAMP:case t.NOW:case t.POSITION:case t.SUBSTR:case t.SUBSTRING:case t.SYSDATE:case t.TRIM:case t.UTC_DATE:case t.UTC_TIME:case t.UTC_TIMESTAMP:case t.ACCOUNT:case t.ACTION:case t.AFTER:case t.AGGREGATE:case t.ALGORITHM:case t.ANY:case t.AT:case t.AUTHORS:case t.AUTOCOMMIT:case t.AUTOEXTEND_SIZE:case t.AUTO_INCREMENT:case t.AVG_ROW_LENGTH:case t.BEGIN:case t.BINLOG:case t.BIT:case t.BLOCK:case t.BOOL:case t.BOOLEAN:case t.BTREE:case t.CACHE:case t.CASCADED:case t.CHAIN:case t.CHANGED:case t.CHANNEL:case t.CHECKSUM:case t.PAGE_CHECKSUM:case t.CIPHER:case t.CLASS_ORIGIN:case t.CLIENT:case t.CLOSE:case t.CLUSTERING:case t.COALESCE:case t.CODE:case t.COLUMNS:case t.COLUMN_FORMAT:case t.COLUMN_NAME:case t.COMMENT:case t.COMMIT:case t.COMPACT:case t.COMPLETION:case t.COMPRESSED:case t.COMPRESSION:case t.CONCURRENT:case t.CONNECT:case t.CONNECTION:case t.CONSISTENT:case t.CONSTRAINT_CATALOG:case t.CONSTRAINT_SCHEMA:case t.CONSTRAINT_NAME:case t.CONTAINS:case t.CONTEXT:case t.CONTRIBUTORS:case t.COPY:case t.CPU:case t.CURSOR_NAME:case t.DATA:case t.DATAFILE:case t.DEALLOCATE:case t.DEFAULT_AUTH:case t.DEFINER:case t.DELAY_KEY_WRITE:case t.DES_KEY_FILE:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISK:case t.DO:case t.DUMPFILE:case t.DUPLICATE:case t.DYNAMIC:case t.ENABLE:case t.ENCRYPTION:case t.END:case t.ENDS:case t.ENGINE:case t.ENGINES:case t.ERROR:case t.ERRORS:case t.ESCAPE:case t.EVEN:case t.EVENT:case t.EVENTS:case t.EVERY:case t.EXCHANGE:case t.EXCLUSIVE:case t.EXPIRE:case t.EXPORT:case t.EXTENDED:case t.EXTENT_SIZE:case t.FAILED_LOGIN_ATTEMPTS:case t.FAST:case t.FAULTS:case t.FIELDS:case t.FILE_BLOCK_SIZE:case t.FILTER:case t.FIRST:case t.FIXED:case t.FLUSH:case t.FOLLOWS:case t.FOUND:case t.FULL:case t.FUNCTION:case t.GENERAL:case t.GLOBAL:case t.GRANTS:case t.GROUP_REPLICATION:case t.HANDLER:case t.HASH:case t.HELP:case t.HISTORY:case t.HOST:case t.HOSTS:case t.IDENTIFIED:case t.IGNORE_SERVER_IDS:case t.IMPORT:case t.INDEXES:case t.INITIAL_SIZE:case t.INPLACE:case t.INSERT_METHOD:case t.INSTALL:case t.INSTANCE:case t.INSTANT:case t.INVISIBLE:case t.INVOKER:case t.IO:case t.IO_THREAD:case t.IPC:case t.ISOLATION:case t.ISSUER:case t.JSON:case t.KEY_BLOCK_SIZE:case t.LANGUAGE:case t.LAST:case t.LEAVES:case t.LESS:case t.LEVEL:case t.LIST:case t.LOCAL:case t.LOGFILE:case t.LOGS:case t.MASTER:case t.MASTER_AUTO_POSITION:case t.MASTER_CONNECT_RETRY:case t.MASTER_DELAY:case t.MASTER_HEARTBEAT_PERIOD:case t.MASTER_HOST:case t.MASTER_LOG_FILE:case t.MASTER_LOG_POS:case t.MASTER_PASSWORD:case t.MASTER_PORT:case t.MASTER_RETRY_COUNT:case t.MASTER_SSL:case t.MASTER_SSL_CA:case t.MASTER_SSL_CAPATH:case t.MASTER_SSL_CERT:case t.MASTER_SSL_CIPHER:case t.MASTER_SSL_CRL:case t.MASTER_SSL_CRLPATH:case t.MASTER_SSL_KEY:case t.MASTER_TLS_VERSION:case t.MASTER_USER:case t.MAX_CONNECTIONS_PER_HOUR:case t.MAX_QUERIES_PER_HOUR:case t.MAX_ROWS:case t.MAX_SIZE:case t.MAX_UPDATES_PER_HOUR:case t.MAX_USER_CONNECTIONS:case t.MEDIUM:case t.MEMBER:case t.MERGE:case t.MESSAGE_TEXT:case t.MID:case t.MIGRATE:case t.MIN_ROWS:case t.MODE:case t.MODIFY:case t.MUTEX:case t.MYSQL:case t.MYSQL_ERRNO:case t.NAME:case t.NAMES:case t.NCHAR:case t.NEVER:case t.NEXT:case t.NO:case t.NOCOPY:case t.NOWAIT:case t.NODEGROUP:case t.NONE:case t.ODBC:case t.OFFLINE:case t.OFFSET:case t.OF:case t.OJ:case t.OLD_PASSWORD:case t.ONE:case t.ONLINE:case t.ONLY:case t.OPEN:case t.OPTIMIZER_COSTS:case t.OPTIONS:case t.OWNER:case t.PACK_KEYS:case t.PAGE:case t.PARSER:case t.PARTIAL:case t.PARTITIONING:case t.PARTITIONS:case t.PASSWORD:case t.PASSWORD_LOCK_TIME:case t.PHASE:case t.PLUGIN:case t.PLUGIN_DIR:case t.PLUGINS:case t.PORT:case t.PRECEDES:case t.PREPARE:case t.PRESERVE:case t.PREV:case t.PROCESSLIST:case t.PROFILE:case t.PROFILES:case t.PROXY:case t.QUERY:case t.QUICK:case t.REBUILD:case t.RECOVER:case t.RECURSIVE:case t.REDO_BUFFER_SIZE:case t.REDUNDANT:case t.RELAY:case t.RELAY_LOG_FILE:case t.RELAY_LOG_POS:case t.RELAYLOG:case t.REMOVE:case t.REORGANIZE:case t.REPAIR:case t.REPLICATE_DO_DB:case t.REPLICATE_DO_TABLE:case t.REPLICATE_IGNORE_DB:case t.REPLICATE_IGNORE_TABLE:case t.REPLICATE_REWRITE_DB:case t.REPLICATE_WILD_DO_TABLE:case t.REPLICATE_WILD_IGNORE_TABLE:case t.REPLICATION:case t.RESET:case t.RESUME:case t.RETURNED_SQLSTATE:case t.RETURNS:case t.REUSE:case t.ROLE:case t.ROLLBACK:case t.ROLLUP:case t.ROTATE:case t.ROW:case t.ROWS:case t.ROW_FORMAT:case t.RTREE:case t.SAVEPOINT:case t.SCHEDULE:case t.SECURITY:case t.SERVER:case t.SESSION:case t.SHARE:case t.SHARED:case t.SIGNED:case t.SIMPLE:case t.SLAVE:case t.SLOW:case t.SNAPSHOT:case t.SOCKET:case t.SOME:case t.SONAME:case t.SOUNDS:case t.SOURCE:case t.SQL_AFTER_GTIDS:case t.SQL_AFTER_MTS_GAPS:case t.SQL_BEFORE_GTIDS:case t.SQL_BUFFER_RESULT:case t.SQL_CACHE:case t.SQL_NO_CACHE:case t.SQL_THREAD:case t.START:case t.STARTS:case t.STATS_AUTO_RECALC:case t.STATS_PERSISTENT:case t.STATS_SAMPLE_PAGES:case t.STATUS:case t.STOP:case t.STORAGE:case t.STRING:case t.SUBCLASS_ORIGIN:case t.SUBJECT:case t.SUBPARTITION:case t.SUBPARTITIONS:case t.SUSPEND:case t.SWAPS:case t.SWITCHES:case t.TABLE_NAME:case t.TABLESPACE:case t.TABLE_TYPE:case t.TEMPORARY:case t.TEMPTABLE:case t.THAN:case t.TRADITIONAL:case t.TRANSACTION:case t.TRANSACTIONAL:case t.TRIGGERS:case t.TRUNCATE:case t.UNBOUNDED:case t.UNDEFINED:case t.UNDOFILE:case t.UNDO_BUFFER_SIZE:case t.UNINSTALL:case t.UNKNOWN:case t.UNTIL:case t.UPGRADE:case t.USER:case t.USE_FRM:case t.USER_RESOURCES:case t.VALIDATION:case t.VALUE:case t.VARIABLES:case t.VIEW:case t.VIRTUAL:case t.VISIBLE:case t.WAIT:case t.WARNINGS:case t.WITHOUT:case t.WORK:case t.WRAPPER:case t.X509:case t.XA:case t.XML:case t.EUR:case t.USA:case t.JIS:case t.ISO:case t.INTERNAL:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.ADMIN:case t.AUDIT_ABORT_EXEMPT:case t.AUDIT_ADMIN:case t.AUTHENTICATION_POLICY_ADMIN:case t.BACKUP_ADMIN:case t.BINLOG_ADMIN:case t.BINLOG_ENCRYPTION_ADMIN:case t.CLONE_ADMIN:case t.CONNECTION_ADMIN:case t.ENCRYPTION_KEY_ADMIN:case t.EXECUTE:case t.FILE:case t.FIREWALL_ADMIN:case t.FIREWALL_EXEMPT:case t.FIREWALL_USER:case t.GROUP_REPLICATION_ADMIN:case t.INNODB_REDO_LOG_ARCHIVE:case t.INVOKE:case t.LAMBDA:case t.NDB_STORED_USER:case t.PASSWORDLESS_USER_ADMIN:case t.PERSIST_RO_VARIABLES_ADMIN:case t.PRIVILEGES:case t.PROCESS:case t.RELOAD:case t.REPLICATION_APPLIER:case t.REPLICATION_SLAVE_ADMIN:case t.RESOURCE_GROUP_ADMIN:case t.RESOURCE_GROUP_USER:case t.ROLE_ADMIN:case t.ROUTINE:case t.S3:case t.SESSION_VARIABLES_ADMIN:case t.SET_USER_ID:case t.SHOW_ROUTINE:case t.SHUTDOWN:case t.SUPER:case t.SYSTEM_VARIABLES_ADMIN:case t.TABLES:case t.TABLE_ENCRYPTION_ADMIN:case t.VERSION_TOKEN_ADMIN:case t.XA_RECOVER_ADMIN:case t.ARMSCII8:case t.ASCII:case t.BIG5:case t.CP1250:case t.CP1251:case t.CP1256:case t.CP1257:case t.CP850:case t.CP852:case t.CP866:case t.CP932:case t.DEC8:case t.EUCJPMS:case t.EUCKR:case t.GB18030:case t.GB2312:case t.GBK:case t.GEOSTD8:case t.GREEK:case t.HEBREW:case t.HP8:case t.KEYBCS2:case t.KOI8R:case t.KOI8U:case t.LATIN1:case t.LATIN2:case t.LATIN5:case t.LATIN7:case t.MACCE:case t.MACROMAN:case t.SJIS:case t.SWE7:case t.TIS620:case t.UCS2:case t.UJIS:case t.UTF16:case t.UTF16LE:case t.UTF32:case t.UTF8:case t.UTF8MB3:case t.UTF8MB4:case t.ARCHIVE:case t.BLACKHOLE:case t.CSV:case t.FEDERATED:case t.INNODB:case t.MEMORY:case t.MRG_MYISAM:case t.MYISAM:case t.NDB:case t.NDBCLUSTER:case t.PERFORMANCE_SCHEMA:case t.TOKUDB:case t.REPEATABLE:case t.COMMITTED:case t.UNCOMMITTED:case t.SERIALIZABLE:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CATALOG_NAME:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENGINE_ATTRIBUTE:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SECONDARY_ENGINE_ATTRIBUTE:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SCHEMA_NAME:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.TP_CONNECTION_ADMIN:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:case t.CHARSET_REVERSE_QOUTE_STRING:case t.STRING_LITERAL:case t.ID:this.state=7047,this.windowName();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}windowSpec(){let e,s=new nH(this.context,this.state);this.enterRule(s,692,t.RULE_windowSpec);try{if(this.enterOuterAlt(s,1),1===(this.state=7051,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1025,this.context)))this.state=7050,this.windowName();this.state=7054,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=7053,this.partitionClause()),this.state=7057,this.errorHandler.sync(this),e=this.tokenStream.LA(1),124===e&&(this.state=7056,this.orderByClause()),this.state=7060,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(133===e||601===e)&&(this.state=7059,this.frameClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}windowName(){let e=new hH(this.context,this.state);this.enterRule(e,694,t.RULE_windowName);try{this.enterOuterAlt(e,1),this.state=7062,this.uid()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}frameClause(){let e=new EH(this.context,this.state);this.enterRule(e,696,t.RULE_frameClause);try{this.enterOuterAlt(e,1),this.state=7064,this.frameUnits(),this.state=7065,this.frameExtent()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}frameUnits(){let e,s=new TH(this.context,this.state);this.enterRule(s,698,t.RULE_frameUnits);try{this.enterOuterAlt(s,1),this.state=7067,e=this.tokenStream.LA(1),133===e||601===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}frameExtent(){let e=new oH(this.context,this.state);this.enterRule(e,700,t.RULE_frameExtent);try{switch(this.state=7071,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1029,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7069,this.frameRange();break;case 2:this.enterOuterAlt(e,2),this.state=7070,this.frameBetween()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}frameBetween(){let e=new RH(this.context,this.state);this.enterRule(e,702,t.RULE_frameBetween);try{this.enterOuterAlt(e,1),this.state=7073,this.match(t.BETWEEN),this.state=7074,this.frameRange(),this.state=7075,this.match(t.AND),this.state=7076,this.frameRange()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}frameRange(){let e,s=new AH(this.context,this.state);this.enterRule(s,704,t.RULE_frameRange);try{switch(this.state=7085,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1030,this.context)){case 1:this.enterOuterAlt(s,1),this.state=7078,this.match(t.CURRENT),this.state=7079,this.match(t.ROW);break;case 2:this.enterOuterAlt(s,2),this.state=7080,this.match(t.UNBOUNDED),this.state=7081,e=this.tokenStream.LA(1),433===e||559===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case 3:this.enterOuterAlt(s,3),this.state=7082,this.expression(0),this.state=7083,e=this.tokenStream.LA(1),433===e||559===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}partitionClause(){let e,s=new SH(this.context,this.state);this.enterRule(s,706,t.RULE_partitionClause);try{for(this.enterOuterAlt(s,1),this.state=7087,this.match(t.PARTITION),this.state=7088,this.match(t.BY),this.state=7089,this.expression(0),this.state=7094,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;)this.state=7090,this.match(t.COMMA),this.state=7091,this.expression(0),this.state=7096,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}scalarFunctionName(){let e=new lH(this.context,this.state);this.enterRule(e,708,t.RULE_scalarFunctionName);try{switch(this.state=7121,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DATABASE:case t.LEFT:case t.RIGHT:case t.SCHEMA:case t.DATE:case t.TIME:case t.TIMESTAMP:case t.YEAR:case t.JSON_ARRAY:case t.JSON_ARRAYAGG:case t.JSON_ARRAY_APPEND:case t.JSON_ARRAY_INSERT:case t.JSON_CONTAINS:case t.JSON_CONTAINS_PATH:case t.JSON_DEPTH:case t.JSON_EXTRACT:case t.JSON_INSERT:case t.JSON_KEYS:case t.JSON_LENGTH:case t.JSON_MERGE:case t.JSON_MERGE_PATCH:case t.JSON_MERGE_PRESERVE:case t.JSON_OBJECT:case t.JSON_OBJECTAGG:case t.JSON_OVERLAPS:case t.JSON_PRETTY:case t.JSON_QUOTE:case t.JSON_REMOVE:case t.JSON_REPLACE:case t.JSON_SCHEMA_VALID:case t.JSON_SCHEMA_VALIDATION_REPORT:case t.JSON_SEARCH:case t.JSON_SET:case t.JSON_STORAGE_FREE:case t.JSON_STORAGE_SIZE:case t.JSON_TABLE:case t.JSON_TYPE:case t.JSON_UNQUOTE:case t.JSON_VALID:case t.JSON_VALUE:case t.COUNT:case t.CUME_DIST:case t.DENSE_RANK:case t.FIRST_VALUE:case t.LAG:case t.LAST_VALUE:case t.LEAD:case t.NTILE:case t.NTH_VALUE:case t.PERCENT_RANK:case t.RANK:case t.ROW_NUMBER:case t.POSITION:case t.INVISIBLE:case t.VISIBLE:case t.QUARTER:case t.MONTH:case t.DAY:case t.HOUR:case t.MINUTE:case t.WEEK:case t.SECOND:case t.MICROSECOND:case t.SESSION_VARIABLES_ADMIN:case t.GEOMETRYCOLLECTION:case t.LINESTRING:case t.MULTILINESTRING:case t.MULTIPOINT:case t.MULTIPOLYGON:case t.POINT:case t.POLYGON:case t.ABS:case t.ACOS:case t.ADDDATE:case t.ADDTIME:case t.AES_DECRYPT:case t.AES_ENCRYPT:case t.AREA:case t.ASBINARY:case t.ASIN:case t.ASTEXT:case t.ASWKB:case t.ASWKT:case t.ASYMMETRIC_DECRYPT:case t.ASYMMETRIC_DERIVE:case t.ASYMMETRIC_ENCRYPT:case t.ASYMMETRIC_SIGN:case t.ASYMMETRIC_VERIFY:case t.ATAN:case t.ATAN2:case t.BENCHMARK:case t.BIN:case t.BIT_COUNT:case t.BIT_LENGTH:case t.BUFFER:case t.CEIL:case t.CEILING:case t.CENTROID:case t.CHARACTER_LENGTH:case t.CHARSET:case t.CHAR_LENGTH:case t.COERCIBILITY:case t.COLLATION:case t.COMPRESS:case t.CONCAT:case t.CONCAT_WS:case t.CONNECTION_ID:case t.CONV:case t.CONVERT_TZ:case t.COS:case t.COT:case t.CRC32:case t.CREATE_ASYMMETRIC_PRIV_KEY:case t.CREATE_ASYMMETRIC_PUB_KEY:case t.CREATE_DH_PARAMETERS:case t.CREATE_DIGEST:case t.CROSSES:case t.DATEDIFF:case t.DATE_FORMAT:case t.DAYNAME:case t.DAYOFMONTH:case t.DAYOFWEEK:case t.DAYOFYEAR:case t.DECODE:case t.DEGREES:case t.DES_DECRYPT:case t.DES_ENCRYPT:case t.DIMENSION:case t.DISJOINT:case t.ELT:case t.ENCODE:case t.ENCRYPT:case t.ENDPOINT:case t.ENVELOPE:case t.EQUALS:case t.EXP:case t.EXPORT_SET:case t.EXTERIORRING:case t.EXTRACTVALUE:case t.FIELD:case t.FIND_IN_SET:case t.FLOOR:case t.FORMAT:case t.FOUND_ROWS:case t.FROM_BASE64:case t.FROM_DAYS:case t.FROM_UNIXTIME:case t.GEOMCOLLFROMTEXT:case t.GEOMCOLLFROMWKB:case t.GEOMETRYCOLLECTIONFROMTEXT:case t.GEOMETRYCOLLECTIONFROMWKB:case t.GEOMETRYFROMTEXT:case t.GEOMETRYFROMWKB:case t.GEOMETRYN:case t.GEOMETRYTYPE:case t.GEOMFROMTEXT:case t.GEOMFROMWKB:case t.GET_FORMAT:case t.GET_LOCK:case t.GLENGTH:case t.GREATEST:case t.GTID_SUBSET:case t.GTID_SUBTRACT:case t.HEX:case t.IFNULL:case t.INET6_ATON:case t.INET6_NTOA:case t.INET_ATON:case t.INET_NTOA:case t.INSTR:case t.INTERIORRINGN:case t.INTERSECTS:case t.ISCLOSED:case t.ISEMPTY:case t.ISNULL:case t.ISSIMPLE:case t.IS_FREE_LOCK:case t.IS_IPV4:case t.IS_IPV4_COMPAT:case t.IS_IPV4_MAPPED:case t.IS_IPV6:case t.IS_USED_LOCK:case t.LAST_INSERT_ID:case t.LCASE:case t.LEAST:case t.LENGTH:case t.LINEFROMTEXT:case t.LINEFROMWKB:case t.LINESTRINGFROMTEXT:case t.LINESTRINGFROMWKB:case t.LN:case t.LOAD_FILE:case t.LOCATE:case t.LOG:case t.LOG10:case t.LOG2:case t.LOWER:case t.LPAD:case t.LTRIM:case t.MAKEDATE:case t.MAKETIME:case t.MAKE_SET:case t.MASTER_POS_WAIT:case t.MBRCONTAINS:case t.MBRDISJOINT:case t.MBREQUAL:case t.MBRINTERSECTS:case t.MBROVERLAPS:case t.MBRTOUCHES:case t.MBRWITHIN:case t.MD5:case t.MLINEFROMTEXT:case t.MLINEFROMWKB:case t.MONTHNAME:case t.MPOINTFROMTEXT:case t.MPOINTFROMWKB:case t.MPOLYFROMTEXT:case t.MPOLYFROMWKB:case t.MULTILINESTRINGFROMTEXT:case t.MULTILINESTRINGFROMWKB:case t.MULTIPOINTFROMTEXT:case t.MULTIPOINTFROMWKB:case t.MULTIPOLYGONFROMTEXT:case t.MULTIPOLYGONFROMWKB:case t.NAME_CONST:case t.NULLIF:case t.NUMGEOMETRIES:case t.NUMINTERIORRINGS:case t.NUMPOINTS:case t.OCT:case t.OCTET_LENGTH:case t.ORD:case t.OVERLAPS:case t.PERIOD_ADD:case t.PERIOD_DIFF:case t.PI:case t.POINTFROMTEXT:case t.POINTFROMWKB:case t.POINTN:case t.POLYFROMTEXT:case t.POLYFROMWKB:case t.POLYGONFROMTEXT:case t.POLYGONFROMWKB:case t.POW:case t.POWER:case t.QUOTE:case t.RADIANS:case t.RAND:case t.RANDOM:case t.RANDOM_BYTES:case t.RELEASE_LOCK:case t.REVERSE:case t.ROUND:case t.ROW_COUNT:case t.RPAD:case t.RTRIM:case t.SEC_TO_TIME:case t.SESSION_USER:case t.SHA:case t.SHA1:case t.SHA2:case t.SIGN:case t.SIN:case t.SLEEP:case t.SOUNDEX:case t.SQL_THREAD_WAIT_AFTER_GTIDS:case t.SQRT:case t.SRID:case t.STARTPOINT:case t.STRCMP:case t.STR_TO_DATE:case t.ST_AREA:case t.ST_ASBINARY:case t.ST_ASTEXT:case t.ST_ASWKB:case t.ST_ASWKT:case t.ST_BUFFER:case t.ST_CENTROID:case t.ST_CONTAINS:case t.ST_CROSSES:case t.ST_DIFFERENCE:case t.ST_DIMENSION:case t.ST_DISJOINT:case t.ST_DISTANCE:case t.ST_ENDPOINT:case t.ST_ENVELOPE:case t.ST_EQUALS:case t.ST_EXTERIORRING:case t.ST_GEOMCOLLFROMTEXT:case t.ST_GEOMCOLLFROMTXT:case t.ST_GEOMCOLLFROMWKB:case t.ST_GEOMETRYCOLLECTIONFROMTEXT:case t.ST_GEOMETRYCOLLECTIONFROMWKB:case t.ST_GEOMETRYFROMTEXT:case t.ST_GEOMETRYFROMWKB:case t.ST_GEOMETRYN:case t.ST_GEOMETRYTYPE:case t.ST_GEOMFROMTEXT:case t.ST_GEOMFROMWKB:case t.ST_INTERIORRINGN:case t.ST_INTERSECTION:case t.ST_INTERSECTS:case t.ST_ISCLOSED:case t.ST_ISEMPTY:case t.ST_ISSIMPLE:case t.ST_LINEFROMTEXT:case t.ST_LINEFROMWKB:case t.ST_LINESTRINGFROMTEXT:case t.ST_LINESTRINGFROMWKB:case t.ST_NUMGEOMETRIES:case t.ST_NUMINTERIORRING:case t.ST_NUMINTERIORRINGS:case t.ST_NUMPOINTS:case t.ST_OVERLAPS:case t.ST_POINTFROMTEXT:case t.ST_POINTFROMWKB:case t.ST_POINTN:case t.ST_POLYFROMTEXT:case t.ST_POLYFROMWKB:case t.ST_POLYGONFROMTEXT:case t.ST_POLYGONFROMWKB:case t.ST_SRID:case t.ST_STARTPOINT:case t.ST_SYMDIFFERENCE:case t.ST_TOUCHES:case t.ST_UNION:case t.ST_WITHIN:case t.ST_X:case t.ST_Y:case t.SUBDATE:case t.SUBSTRING_INDEX:case t.SUBTIME:case t.SYSTEM_USER:case t.TAN:case t.TIMEDIFF:case t.TIMESTAMPADD:case t.TIMESTAMPDIFF:case t.TIME_FORMAT:case t.TIME_TO_SEC:case t.TOUCHES:case t.TO_BASE64:case t.TO_DAYS:case t.TO_SECONDS:case t.UCASE:case t.UNCOMPRESS:case t.UNCOMPRESSED_LENGTH:case t.UNHEX:case t.UNIX_TIMESTAMP:case t.UPDATEXML:case t.UPPER:case t.UUID:case t.UUID_SHORT:case t.VALIDATE_PASSWORD_STRENGTH:case t.VERSION:case t.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:case t.WEEKDAY:case t.WEEKOFYEAR:case t.WEIGHT_STRING:case t.WITHIN:case t.YEARWEEK:case t.Y_FUNCTION:case t.X_FUNCTION:case t.MOD:this.enterOuterAlt(e,1),this.state=7097,this.functionNameBase();break;case t.ASCII:this.enterOuterAlt(e,2),this.state=7098,this.match(t.ASCII);break;case t.CURDATE:this.enterOuterAlt(e,3),this.state=7099,this.match(t.CURDATE);break;case t.CURRENT_DATE:this.enterOuterAlt(e,4),this.state=7100,this.match(t.CURRENT_DATE);break;case t.CURRENT_TIME:this.enterOuterAlt(e,5),this.state=7101,this.match(t.CURRENT_TIME);break;case t.CURRENT_TIMESTAMP:this.enterOuterAlt(e,6),this.state=7102,this.match(t.CURRENT_TIMESTAMP);break;case t.CURTIME:this.enterOuterAlt(e,7),this.state=7103,this.match(t.CURTIME);break;case t.DATE_ADD:this.enterOuterAlt(e,8),this.state=7104,this.match(t.DATE_ADD);break;case t.DATE_SUB:this.enterOuterAlt(e,9),this.state=7105,this.match(t.DATE_SUB);break;case t.IF:this.enterOuterAlt(e,10),this.state=7106,this.match(t.IF);break;case t.INSERT:this.enterOuterAlt(e,11),this.state=7107,this.match(t.INSERT);break;case t.LOCALTIME:this.enterOuterAlt(e,12),this.state=7108,this.match(t.LOCALTIME);break;case t.LOCALTIMESTAMP:this.enterOuterAlt(e,13),this.state=7109,this.match(t.LOCALTIMESTAMP);break;case t.MID:this.enterOuterAlt(e,14),this.state=7110,this.match(t.MID);break;case t.NOW:this.enterOuterAlt(e,15),this.state=7111,this.match(t.NOW);break;case t.REPEAT:this.enterOuterAlt(e,16),this.state=7112,this.match(t.REPEAT);break;case t.REPLACE:this.enterOuterAlt(e,17),this.state=7113,this.match(t.REPLACE);break;case t.SUBSTR:this.enterOuterAlt(e,18),this.state=7114,this.match(t.SUBSTR);break;case t.SUBSTRING:this.enterOuterAlt(e,19),this.state=7115,this.match(t.SUBSTRING);break;case t.SYSDATE:this.enterOuterAlt(e,20),this.state=7116,this.match(t.SYSDATE);break;case t.TRIM:this.enterOuterAlt(e,21),this.state=7117,this.match(t.TRIM);break;case t.UTC_DATE:this.enterOuterAlt(e,22),this.state=7118,this.match(t.UTC_DATE);break;case t.UTC_TIME:this.enterOuterAlt(e,23),this.state=7119,this.match(t.UTC_TIME);break;case t.UTC_TIMESTAMP:this.enterOuterAlt(e,24),this.state=7120,this.match(t.UTC_TIMESTAMP);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}passwordFunctionClause(){let e,s=new OH(this.context,this.state);this.enterRule(s,710,t.RULE_passwordFunctionClause);try{this.enterOuterAlt(s,1),this.state=7123,s._functionName=this.tokenStream.LT(1),e=this.tokenStream.LA(1),535===e||551===e?(this.errorHandler.reportMatch(this),this.consume()):s._functionName=this.errorHandler.recoverInline(this),this.state=7124,this.match(t.LR_BRACKET),this.state=7125,this.functionArg(),this.state=7126,this.match(t.RR_BRACKET)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}functionArgs(){let e,s=new IH(this.context,this.state);this.enterRule(s,712,t.RULE_functionArgs);try{switch(this.enterOuterAlt(s,1),this.state=7132,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1033,this.context)){case 1:this.state=7128,this.constant();break;case 2:this.state=7129,this.fullColumnName();break;case 3:this.state=7130,this.functionCall();break;case 4:this.state=7131,this.expression(0)}for(this.state=7143,this.errorHandler.sync(this),e=this.tokenStream.LA(1);1135===e;){switch(this.state=7134,this.match(t.COMMA),this.state=7139,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1034,this.context)){case 1:this.state=7135,this.constant();break;case 2:this.state=7136,this.fullColumnName();break;case 3:this.state=7137,this.functionCall();break;case 4:this.state=7138,this.expression(0)}this.state=7145,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}functionArg(){let e=new uH(this.context,this.state);this.enterRule(e,714,t.RULE_functionArg);try{switch(this.state=7150,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1036,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7146,this.constant();break;case 2:this.enterOuterAlt(e,2),this.state=7147,this.fullColumnName();break;case 3:this.enterOuterAlt(e,3),this.state=7148,this.functionCall();break;case 4:this.enterOuterAlt(e,4),this.state=7149,this.expression(0)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expression(e){void 0===e&&(e=0);let s,a=this.context,r=this.state,i=new NH(this.context,r),c=i;this.enterRecursionRule(i,716,t.RULE_expression,e);try{let e;switch(this.enterOuterAlt(i,1),this.state=7163,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1038,this.context)){case 1:i=new CH(i),this.context=i,c=i,this.state=7153,i._notOperator=this.tokenStream.LT(1),s=this.tokenStream.LA(1),114===s||1127===s?(this.errorHandler.reportMatch(this),this.consume()):i._notOperator=this.errorHandler.recoverInline(this),this.state=7154,this.expression(4);break;case 2:i=new LH(i),this.context=i,c=i,this.state=7155,this.predicate(0),this.state=7156,this.match(t.IS),this.state=7158,this.errorHandler.sync(this),s=this.tokenStream.LA(1),114===s&&(this.state=7157,this.match(t.NOT)),this.state=7160,i._testValue=this.tokenStream.LT(1),s=this.tokenStream.LA(1),63===s||178===s||662===s?(this.errorHandler.reportMatch(this),this.consume()):i._testValue=this.errorHandler.recoverInline(this);break;case 3:i=new PH(i),this.context=i,c=i,this.state=7162,this.predicate(0)}for(this.context.stop=this.tokenStream.LT(-1),this.state=7171,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,1039,this.context);2!==e&&e!==ja.INVALID_ALT_NUMBER;){if(1===e){if(null!=this.parseListeners&&this.triggerExitRuleEvent(),c=i,i=new _H(new NH(a,r)),this.pushNewRecursionContext(i,716,t.RULE_expression),this.state=7165,!this.precpred(this.context,3))throw this.createFailedPredicateException("this.precpred(this.context, 3)");this.state=7166,this.logicalOperator(),this.state=7167,this.expression(4)}this.state=7173,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,1039,this.context)}}catch(n){if(!(n instanceof jr))throw n;this.errorHandler.reportError(this,n),this.errorHandler.recover(this,n)}finally{this.unrollRecursionContexts(a)}return i}predicate(e){void 0===e&&(e=0);let s,a=this.context,r=this.state,i=new MH(this.context,r),c=i,n=718;this.enterRecursionRule(i,718,t.RULE_predicate,e);try{let e;for(this.enterOuterAlt(i,1),i=new UH(i),this.context=i,c=i,this.state=7175,this.expressionAtom(0),this.context.stop=this.tokenStream.LT(-1),this.state=7241,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,1047,this.context);2!==e&&e!==ja.INVALID_ALT_NUMBER;){if(1===e)switch(null!=this.parseListeners&&this.triggerExitRuleEvent(),c=i,this.state=7239,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1046,this.context)){case 1:if(i=new pH(new MH(a,r)),i._left=c,this.pushNewRecursionContext(i,n,t.RULE_predicate),this.state=7177,!this.precpred(this.context,8))throw this.createFailedPredicateException("this.precpred(this.context, 8)");this.state=7178,this.comparisonOperator(),this.state=7179,i._right=this.predicate(9);break;case 2:if(i=new xH(new MH(a,r)),this.pushNewRecursionContext(i,n,t.RULE_predicate),this.state=7181,!this.precpred(this.context,6))throw this.createFailedPredicateException("this.precpred(this.context, 6)");this.state=7183,this.errorHandler.sync(this),s=this.tokenStream.LA(1),114===s&&(this.state=7182,this.match(t.NOT)),this.state=7185,this.match(t.BETWEEN),this.state=7186,this.predicate(0),this.state=7187,this.match(t.AND),this.state=7188,this.predicate(7);break;case 3:if(i=new dH(new MH(a,r)),this.pushNewRecursionContext(i,n,t.RULE_predicate),this.state=7190,!this.precpred(this.context,5))throw this.createFailedPredicateException("this.precpred(this.context, 5)");this.state=7191,this.match(t.SOUNDS),this.state=7192,this.match(t.LIKE),this.state=7193,this.predicate(6);break;case 4:if(i=new GH(new MH(a,r)),this.pushNewRecursionContext(i,n,t.RULE_predicate),this.state=7194,!this.precpred(this.context,3))throw this.createFailedPredicateException("this.precpred(this.context, 3)");this.state=7196,this.errorHandler.sync(this),s=this.tokenStream.LA(1),114===s&&(this.state=7195,this.match(t.NOT)),this.state=7198,i._regex=this.tokenStream.LT(1),s=this.tokenStream.LA(1),137===s||149===s?(this.errorHandler.reportMatch(this),this.consume()):i._regex=this.errorHandler.recoverInline(this),this.state=7199,this.predicate(4);break;case 5:if(i=new gH(new MH(a,r)),this.pushNewRecursionContext(i,n,t.RULE_predicate),this.state=7200,!this.precpred(this.context,10))throw this.createFailedPredicateException("this.precpred(this.context, 10)");switch(this.state=7202,this.errorHandler.sync(this),s=this.tokenStream.LA(1),114===s&&(this.state=7201,this.match(t.NOT)),this.state=7204,this.match(t.IN),this.state=7205,this.match(t.LR_BRACKET),this.state=7208,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1043,this.context)){case 1:this.state=7206,this.selectStatement();break;case 2:this.state=7207,this.expressions()}this.state=7210,this.match(t.RR_BRACKET);break;case 6:if(i=new kH(new MH(a,r)),this.pushNewRecursionContext(i,n,t.RULE_predicate),this.state=7212,!this.precpred(this.context,9))throw this.createFailedPredicateException("this.precpred(this.context, 9)");this.state=7213,this.match(t.IS),this.state=7214,this.nullNotnull();break;case 7:if(i=new mH(new MH(a,r)),this.pushNewRecursionContext(i,n,t.RULE_predicate),this.state=7215,!this.precpred(this.context,7))throw this.createFailedPredicateException("this.precpred(this.context, 7)");this.state=7216,this.comparisonOperator(),this.state=7217,i._quantifier=this.tokenStream.LT(1),s=this.tokenStream.LA(1),6===s||337===s||618===s?(this.errorHandler.reportMatch(this),this.consume()):i._quantifier=this.errorHandler.recoverInline(this),this.state=7218,this.match(t.LR_BRACKET),this.state=7219,this.selectStatement(),this.state=7220,this.match(t.RR_BRACKET);break;case 8:if(i=new HH(new MH(a,r)),this.pushNewRecursionContext(i,n,t.RULE_predicate),this.state=7222,!this.precpred(this.context,4))throw this.createFailedPredicateException("this.precpred(this.context, 4)");if(1===(this.state=7224,this.errorHandler.sync(this),s=this.tokenStream.LA(1),114===s&&(this.state=7223,this.match(t.NOT)),this.state=7226,this.match(t.LIKE),this.state=7227,this.predicate(0),this.state=7230,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1045,this.context)))this.state=7228,this.match(t.ESCAPE),this.state=7229,this.match(t.STRING_LITERAL);break;case 9:if(i=new DH(new MH(a,r)),this.pushNewRecursionContext(i,n,t.RULE_predicate),this.state=7232,!this.precpred(this.context,2))throw this.createFailedPredicateException("this.precpred(this.context, 2)");this.state=7233,this.match(t.MEMBER),this.state=7234,this.match(t.OF),this.state=7235,this.match(t.LR_BRACKET),this.state=7236,this.predicate(0),this.state=7237,this.match(t.RR_BRACKET)}this.state=7243,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,1047,this.context)}}catch(h){if(!(h instanceof jr))throw h;this.errorHandler.reportError(this,h),this.errorHandler.recover(this,h)}finally{this.unrollRecursionContexts(a)}return i}expressionAtom(e){void 0===e&&(e=0);let s,a=this.context,r=this.state,i=new FH(this.context,r),c=i,n=720;this.enterRecursionRule(i,720,t.RULE_expressionAtom,e);try{let e;switch(this.enterOuterAlt(i,1),this.state=7292,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1050,this.context)){case 1:i=new QH(i),this.context=i,c=i,this.state=7245,this.constant();break;case 2:i=new qH(i),this.context=i,c=i,this.state=7246,this.fullColumnName();break;case 3:i=new JH(i),this.context=i,c=i,this.state=7247,this.functionCall();break;case 4:i=new fH(i),this.context=i,c=i,this.state=7248,this.mysqlVariable();break;case 5:i=new vH(i),this.context=i,c=i,this.state=7249,this.unaryOperator(),this.state=7250,this.expressionAtom(12);break;case 6:i=new ZH(i),this.context=i,c=i,this.state=7252,this.match(t.BINARY),this.state=7253,this.expressionAtom(11);break;case 7:i=new yH(i),this.context=i,c=i,this.state=7254,this.match(t.LOCAL_ID),this.state=7255,this.match(t.VAR_ASSIGN),this.state=7256,this.expressionAtom(10);break;case 8:for(i=new YH(i),this.context=i,c=i,this.state=7257,this.match(t.LR_BRACKET),this.state=7258,this.expression(0),this.state=7263,this.errorHandler.sync(this),s=this.tokenStream.LA(1);1135===s;)this.state=7259,this.match(t.COMMA),this.state=7260,this.expression(0),this.state=7265,this.errorHandler.sync(this),s=this.tokenStream.LA(1);this.state=7266,this.match(t.RR_BRACKET);break;case 9:i=new wH(i),this.context=i,c=i,this.state=7268,this.match(t.ROW),this.state=7269,this.match(t.LR_BRACKET),this.state=7270,this.expression(0),this.state=7273,this.errorHandler.sync(this),s=this.tokenStream.LA(1);do{this.state=7271,this.match(t.COMMA),this.state=7272,this.expression(0),this.state=7275,this.errorHandler.sync(this),s=this.tokenStream.LA(1)}while(1135===s);this.state=7277,this.match(t.RR_BRACKET);break;case 10:i=new WH(i),this.context=i,c=i,this.state=7279,this.match(t.EXISTS),this.state=7280,this.match(t.LR_BRACKET),this.state=7281,this.selectStatement(),this.state=7282,this.match(t.RR_BRACKET);break;case 11:i=new KH(i),this.context=i,c=i,this.state=7284,this.match(t.LR_BRACKET),this.state=7285,this.selectStatement(),this.state=7286,this.match(t.RR_BRACKET);break;case 12:i=new VH(i),this.context=i,c=i,this.state=7288,this.match(t.INTERVAL),this.state=7289,this.expression(0),this.state=7290,this.intervalType()}for(this.context.stop=this.tokenStream.LT(-1),this.state=7315,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,1052,this.context);2!==e&&e!==ja.INVALID_ALT_NUMBER;){if(1===e)switch(null!=this.parseListeners&&this.triggerExitRuleEvent(),c=i,this.state=7313,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1051,this.context)){case 1:if(i=new jH(new FH(a,r)),i._left=c,this.pushNewRecursionContext(i,n,t.RULE_expressionAtom),this.state=7294,!this.precpred(this.context,4))throw this.createFailedPredicateException("this.precpred(this.context, 4)");this.state=7295,this.bitOperator(),this.state=7296,i._right=this.expressionAtom(5);break;case 2:if(i=new bH(new FH(a,r)),i._left=c,this.pushNewRecursionContext(i,n,t.RULE_expressionAtom),this.state=7298,!this.precpred(this.context,3))throw this.createFailedPredicateException("this.precpred(this.context, 3)");this.state=7299,this.multOperator(),this.state=7300,i._right=this.expressionAtom(4);break;case 3:if(i=new bH(new FH(a,r)),i._left=c,this.pushNewRecursionContext(i,n,t.RULE_expressionAtom),this.state=7302,!this.precpred(this.context,2))throw this.createFailedPredicateException("this.precpred(this.context, 2)");this.state=7303,this.addOperator(),this.state=7304,i._right=this.expressionAtom(3);break;case 4:if(i=new XH(new FH(a,r)),i._left=c,this.pushNewRecursionContext(i,n,t.RULE_expressionAtom),this.state=7306,!this.precpred(this.context,1))throw this.createFailedPredicateException("this.precpred(this.context, 1)");this.state=7307,this.jsonOperator(),this.state=7308,i._right=this.expressionAtom(2);break;case 5:if(i=new BH(new FH(a,r)),this.pushNewRecursionContext(i,n,t.RULE_expressionAtom),this.state=7310,!this.precpred(this.context,14))throw this.createFailedPredicateException("this.precpred(this.context, 14)");this.state=7311,this.match(t.COLLATE),this.state=7312,this.collationName()}this.state=7317,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,1052,this.context)}}catch(h){if(!(h instanceof jr))throw h;this.errorHandler.reportError(this,h),this.errorHandler.recover(this,h)}finally{this.unrollRecursionContexts(a)}return i}unaryOperator(){let e,s=new zH(this.context,this.state);this.enterRule(s,722,t.RULE_unaryOperator);try{this.enterOuterAlt(s,1),this.state=7318,e=this.tokenStream.LA(1),114===e||!(e-1120&-32)&&1<<e-1120&387?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}comparisonOperator(){let e=new $H(this.context,this.state);this.enterRule(e,724,t.RULE_comparisonOperator);try{switch(this.state=7334,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1053,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7320,this.match(t.EQUAL_SYMBOL);break;case 2:this.enterOuterAlt(e,2),this.state=7321,this.match(t.GREATER_SYMBOL);break;case 3:this.enterOuterAlt(e,3),this.state=7322,this.match(t.LESS_SYMBOL);break;case 4:this.enterOuterAlt(e,4),this.state=7323,this.match(t.LESS_SYMBOL),this.state=7324,this.match(t.EQUAL_SYMBOL);break;case 5:this.enterOuterAlt(e,5),this.state=7325,this.match(t.GREATER_SYMBOL),this.state=7326,this.match(t.EQUAL_SYMBOL);break;case 6:this.enterOuterAlt(e,6),this.state=7327,this.match(t.LESS_SYMBOL),this.state=7328,this.match(t.GREATER_SYMBOL);break;case 7:this.enterOuterAlt(e,7),this.state=7329,this.match(t.EXCLAMATION_SYMBOL),this.state=7330,this.match(t.EQUAL_SYMBOL);break;case 8:this.enterOuterAlt(e,8),this.state=7331,this.match(t.LESS_SYMBOL),this.state=7332,this.match(t.EQUAL_SYMBOL),this.state=7333,this.match(t.GREATER_SYMBOL)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}logicalOperator(){let e=new tG(this.context,this.state);this.enterRule(e,726,t.RULE_logicalOperator);try{switch(this.state=7343,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AND:this.enterOuterAlt(e,1),this.state=7336,this.match(t.AND);break;case t.BIT_AND_OP:this.enterOuterAlt(e,2),this.state=7337,this.match(t.BIT_AND_OP),this.state=7338,this.match(t.BIT_AND_OP);break;case t.XOR:this.enterOuterAlt(e,3),this.state=7339,this.match(t.XOR);break;case t.OR:this.enterOuterAlt(e,4),this.state=7340,this.match(t.OR);break;case t.BIT_OR_OP:this.enterOuterAlt(e,5),this.state=7341,this.match(t.BIT_OR_OP),this.state=7342,this.match(t.BIT_OR_OP);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}bitOperator(){let e=new eG(this.context,this.state);this.enterRule(e,728,t.RULE_bitOperator);try{switch(this.state=7352,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LESS_SYMBOL:this.enterOuterAlt(e,1),this.state=7345,this.match(t.LESS_SYMBOL),this.state=7346,this.match(t.LESS_SYMBOL);break;case t.GREATER_SYMBOL:this.enterOuterAlt(e,2),this.state=7347,this.match(t.GREATER_SYMBOL),this.state=7348,this.match(t.GREATER_SYMBOL);break;case t.BIT_AND_OP:this.enterOuterAlt(e,3),this.state=7349,this.match(t.BIT_AND_OP);break;case t.BIT_XOR_OP:this.enterOuterAlt(e,4),this.state=7350,this.match(t.BIT_XOR_OP);break;case t.BIT_OR_OP:this.enterOuterAlt(e,5),this.state=7351,this.match(t.BIT_OR_OP);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}multOperator(){let e,s=new sG(this.context,this.state);this.enterRule(s,730,t.RULE_multOperator);try{this.enterOuterAlt(s,1),this.state=7354,e=this.tokenStream.LA(1),!(e-1117&-32)&&1<<e-1117&103?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}addOperator(){let e,s=new aG(this.context,this.state);this.enterRule(s,732,t.RULE_addOperator);try{this.enterOuterAlt(s,1),this.state=7356,e=this.tokenStream.LA(1),1120===e||1121===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}jsonOperator(){let e=new rG(this.context,this.state);this.enterRule(e,734,t.RULE_jsonOperator);try{switch(this.state=7363,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,1056,this.context)){case 1:this.enterOuterAlt(e,1),this.state=7358,this.match(t.MINUS),this.state=7359,this.match(t.GREATER_SYMBOL);break;case 2:this.enterOuterAlt(e,2),this.state=7360,this.match(t.MINUS),this.state=7361,this.match(t.GREATER_SYMBOL),this.state=7362,this.match(t.GREATER_SYMBOL)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}charsetNameBase(){let e,s=new iG(this.context,this.state);this.enterRule(s,736,t.RULE_charsetNameBase);try{this.enterOuterAlt(s,1),this.state=7365,e=this.tokenStream.LA(1),226===e||!(e-746&-32)&&1<<e-746&4294967295||!(e-778&-32)&&1<<e-778&511?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}transactionLevelBase(){let e,s=new cG(this.context,this.state);this.enterRule(s,738,t.RULE_transactionLevelBase);try{this.enterOuterAlt(s,1),this.state=7367,e=this.tokenStream.LA(1),!(e-799&-32)&&1<<e-799&15?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}privilegesBase(){let e,s=new nG(this.context,this.state);this.enterRule(s,740,t.RULE_privilegesBase);try{this.enterOuterAlt(s,1),this.state=7369,e=this.tokenStream.LA(1),!(e-708&-32)&&1<<e-708&2181955587||740===e||742===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}intervalTypeBase(){let e,s=new hG(this.context,this.state);this.enterRule(s,742,t.RULE_intervalTypeBase);try{this.enterOuterAlt(s,1),this.state=7371,e=this.tokenStream.LA(1),!(e-689&-32)&&1<<e-689&255?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dataTypeBase(){let e,s=new EG(this.context,this.state);this.enterRule(s,744,t.RULE_dataTypeBase);try{this.enterOuterAlt(s,1),this.state=7373,e=this.tokenStream.LA(1),!(e-217&-32)&&1<<e-217&1179679?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}keywordsCanBeId(){let e,s=new TG(this.context,this.state);this.enterRule(s,746,t.RULE_keywordsCanBeId);try{this.enterOuterAlt(s,1),this.state=7375,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&537151488||!(e-35&-32)&&1<<e-35&22028421||!(e-73&-32)&&1<<e-73&2097217||!(e-117&-32)&&1<<e-117&8337||158===e||168===e||239===e||!(e-283&-32)&&1<<e-283&1069648127||!(e-332&-32)&&1<<e-332&4294967295||!(e-364&-32)&&1<<e-364&4290772991||!(e-396&-32)&&1<<e-396&4294966015||!(e-428&-32)&&1<<e-428&2139095007||!(e-460&-32)&&1<<e-460&4294967295||!(e-492&-32)&&1<<e-492&3221225471||!(e-527&-32)&&1<<e-527&4294180863||!(e-560&-32)&&1<<e-560&3221225471||!(e-592&-32)&&1<<e-592&4294934525||!(e-624&-32)&&1<<e-624&4294959103||!(e-656&-32)&&1<<e-656&4159569919||!(e-688&-32)&&1<<e-688&1641019905||!(e-720&-32)&&1<<e-720&61300511||792===e||836===e||875===e||1e3===e||1005===e||1088===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}functionNameBase(){let e,s=new oG(this.context,this.state);this.enterRule(s,748,t.RULE_functionNameBase);try{this.enterOuterAlt(s,1),this.state=7377,e=this.tokenStream.LA(1),39===e||97===e||148===e||150===e||!(e-217&-32)&&1<<e-217&23||!(e-251&-32)&&1<<e-251&4294967295||!(e-290&-32)&&1<<e-290&31983||324===e||459===e||!(e-673&-32)&&1<<e-673&16711681||736===e||!(e-803&-32)&&1<<e-803&4294967289||!(e-835&-32)&&1<<e-835&4294967293||!(e-867&-32)&&1<<e-867&4294967039||!(e-899&-32)&&1<<e-899&4294967295||!(e-931&-32)&&1<<e-931&4294967295||!(e-963&-32)&&1<<e-963&4294967295||!(e-995&-32)&&1<<e-995&4294966239||!(e-1027&-32)&&1<<e-1027&4294967295||!(e-1059&-32)&&1<<e-1059&3758096383||!(e-1091&-32)&&1<<e-1091&131071||1123===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sempred(t,e,s){switch(e){case 358:return this.expression_sempred(t,s);case 359:return this.predicate_sempred(t,s);case 360:return this.expressionAtom_sempred(t,s)}return!0}expression_sempred(t,e){return 0!==e||this.precpred(this.context,3)}predicate_sempred(t,e){switch(e){case 1:return this.precpred(this.context,8);case 2:return this.precpred(this.context,6);case 3:return this.precpred(this.context,5);case 4:return this.precpred(this.context,3);case 5:return this.precpred(this.context,10);case 6:return this.precpred(this.context,9);case 7:return this.precpred(this.context,7);case 8:return this.precpred(this.context,4);case 9:return this.precpred(this.context,2)}return!0}expressionAtom_sempred(t,e){switch(e){case 10:return this.precpred(this.context,4);case 11:return this.precpred(this.context,3);case 12:return this.precpred(this.context,2);case 13:return this.precpred(this.context,1);case 14:return this.precpred(this.context,14)}return!0}static get _ATN(){return t.__ATN||(t.__ATN=(new fr).deserialize(t._serializedATN)),t.__ATN}get vocabulary(){return t.vocabulary}},Qi.SPACE=1,Qi.SPEC_MYSQL_COMMENT=2,Qi.COMMENT_INPUT=3,Qi.LINE_COMMENT=4,Qi.ADD=5,Qi.ALL=6,Qi.ALTER=7,Qi.ALWAYS=8,Qi.ANALYZE=9,Qi.AND=10,Qi.ARRAY=11,Qi.AS=12,Qi.ASC=13,Qi.ATTRIBUTE=14,Qi.BEFORE=15,Qi.BETWEEN=16,Qi.BOTH=17,Qi.BUCKETS=18,Qi.BY=19,Qi.CALL=20,Qi.CASCADE=21,Qi.CASE=22,Qi.CAST=23,Qi.CHANGE=24,Qi.CHARACTER=25,Qi.CHECK=26,Qi.COLLATE=27,Qi.COLUMN=28,Qi.CONDITION=29,Qi.CONSTRAINT=30,Qi.CONTINUE=31,Qi.CONVERT=32,Qi.CREATE=33,Qi.CROSS=34,Qi.CURRENT=35,Qi.CURRENT_ROLE=36,Qi.CURRENT_USER=37,Qi.CURSOR=38,Qi.DATABASE=39,Qi.DATABASES=40,Qi.DECLARE=41,Qi.DEFAULT=42,Qi.DELAYED=43,Qi.DELETE=44,Qi.DESC=45,Qi.DESCRIBE=46,Qi.DETERMINISTIC=47,Qi.DIAGNOSTICS=48,Qi.DISTINCT=49,Qi.DISTINCTROW=50,Qi.DROP=51,Qi.EACH=52,Qi.ELSE=53,Qi.ELSEIF=54,Qi.EMPTY=55,Qi.ENCLOSED=56,Qi.ENFORCED=57,Qi.ESCAPED=58,Qi.EXCEPT=59,Qi.EXISTS=60,Qi.EXIT=61,Qi.EXPLAIN=62,Qi.FALSE=63,Qi.FETCH=64,Qi.FOR=65,Qi.FORCE=66,Qi.FOREIGN=67,Qi.FROM=68,Qi.FULLTEXT=69,Qi.GENERATED=70,Qi.GET=71,Qi.GRANT=72,Qi.GROUP=73,Qi.HAVING=74,Qi.HIGH_PRIORITY=75,Qi.HISTOGRAM=76,Qi.IF=77,Qi.IGNORE=78,Qi.IGNORED=79,Qi.IN=80,Qi.INDEX=81,Qi.INFILE=82,Qi.INNER=83,Qi.INOUT=84,Qi.INSERT=85,Qi.INTERVAL=86,Qi.INTO=87,Qi.IS=88,Qi.ITERATE=89,Qi.JOIN=90,Qi.KEY=91,Qi.KEYS=92,Qi.KILL=93,Qi.LATERAL=94,Qi.LEADING=95,Qi.LEAVE=96,Qi.LEFT=97,Qi.LIKE=98,Qi.LIMIT=99,Qi.LINEAR=100,Qi.LINES=101,Qi.LOAD=102,Qi.LOCK=103,Qi.LOCKED=104,Qi.LOOP=105,Qi.LOW_PRIORITY=106,Qi.MASTER_BIND=107,Qi.MASTER_SSL_VERIFY_SERVER_CERT=108,Qi.MATCH=109,Qi.MAXVALUE=110,Qi.MINVALUE=111,Qi.MODIFIES=112,Qi.NATURAL=113,Qi.NOT=114,Qi.NO_WRITE_TO_BINLOG=115,Qi.NULL_LITERAL=116,Qi.NUMBER=117,Qi.ON=118,Qi.OPTIMIZE=119,Qi.OPTION=120,Qi.OPTIONAL=121,Qi.OPTIONALLY=122,Qi.OR=123,Qi.ORDER=124,Qi.OUT=125,Qi.OUTER=126,Qi.OUTFILE=127,Qi.OVER=128,Qi.PARTITION=129,Qi.PRIMARY=130,Qi.PROCEDURE=131,Qi.PURGE=132,Qi.RANGE=133,Qi.READ=134,Qi.READS=135,Qi.REFERENCES=136,Qi.REGEXP=137,Qi.RELEASE=138,Qi.RENAME=139,Qi.REPEAT=140,Qi.REPLACE=141,Qi.REQUIRE=142,Qi.RESIGNAL=143,Qi.RESTRICT=144,Qi.RETAIN=145,Qi.RETURN=146,Qi.REVOKE=147,Qi.RIGHT=148,Qi.RLIKE=149,Qi.SCHEMA=150,Qi.SCHEMAS=151,Qi.SELECT=152,Qi.SET=153,Qi.SEPARATOR=154,Qi.SHOW=155,Qi.SIGNAL=156,Qi.SKIP_=157,Qi.SKIP_QUERY_REWRITE=158,Qi.SPATIAL=159,Qi.SQL=160,Qi.SQLEXCEPTION=161,Qi.SQLSTATE=162,Qi.SQLWARNING=163,Qi.SQL_BIG_RESULT=164,Qi.SQL_CALC_FOUND_ROWS=165,Qi.SQL_SMALL_RESULT=166,Qi.SSL=167,Qi.STACKED=168,Qi.STARTING=169,Qi.STATEMENT=170,Qi.STRAIGHT_JOIN=171,Qi.TABLE=172,Qi.TERMINATED=173,Qi.THEN=174,Qi.TO=175,Qi.TRAILING=176,Qi.TRIGGER=177,Qi.TRUE=178,Qi.UNDO=179,Qi.UNION=180,Qi.UNIQUE=181,Qi.UNLOCK=182,Qi.UNSIGNED=183,Qi.UPDATE=184,Qi.USAGE=185,Qi.USE=186,Qi.USING=187,Qi.VALUES=188,Qi.WHEN=189,Qi.WHERE=190,Qi.WHILE=191,Qi.WITH=192,Qi.WRITE=193,Qi.XOR=194,Qi.ZEROFILL=195,Qi.TINYINT=196,Qi.SMALLINT=197,Qi.MEDIUMINT=198,Qi.MIDDLEINT=199,Qi.INT=200,Qi.INT1=201,Qi.INT2=202,Qi.INT3=203,Qi.INT4=204,Qi.INT8=205,Qi.INTEGER=206,Qi.BIGINT=207,Qi.REAL=208,Qi.DOUBLE=209,Qi.PRECISION=210,Qi.FLOAT=211,Qi.FLOAT4=212,Qi.FLOAT8=213,Qi.DECIMAL=214,Qi.DEC=215,Qi.NUMERIC=216,Qi.DATE=217,Qi.TIME=218,Qi.TIMESTAMP=219,Qi.DATETIME=220,Qi.YEAR=221,Qi.CHAR=222,Qi.VARCHAR=223,Qi.NVARCHAR=224,Qi.NATIONAL=225,Qi.BINARY=226,Qi.VARBINARY=227,Qi.TINYBLOB=228,Qi.BLOB=229,Qi.MEDIUMBLOB=230,Qi.LONG=231,Qi.LONGBLOB=232,Qi.TINYTEXT=233,Qi.TEXT=234,Qi.MEDIUMTEXT=235,Qi.LONGTEXT=236,Qi.ENUM=237,Qi.VARYING=238,Qi.SERIAL=239,Qi.YEAR_MONTH=240,Qi.DAY_HOUR=241,Qi.DAY_MINUTE=242,Qi.DAY_SECOND=243,Qi.HOUR_MINUTE=244,Qi.HOUR_SECOND=245,Qi.MINUTE_SECOND=246,Qi.SECOND_MICROSECOND=247,Qi.MINUTE_MICROSECOND=248,Qi.HOUR_MICROSECOND=249,Qi.DAY_MICROSECOND=250,Qi.JSON_ARRAY=251,Qi.JSON_ARRAYAGG=252,Qi.JSON_ARRAY_APPEND=253,Qi.JSON_ARRAY_INSERT=254,Qi.JSON_CONTAINS=255,Qi.JSON_CONTAINS_PATH=256,Qi.JSON_DEPTH=257,Qi.JSON_EXTRACT=258,Qi.JSON_INSERT=259,Qi.JSON_KEYS=260,Qi.JSON_LENGTH=261,Qi.JSON_MERGE=262,Qi.JSON_MERGE_PATCH=263,Qi.JSON_MERGE_PRESERVE=264,Qi.JSON_OBJECT=265,Qi.JSON_OBJECTAGG=266,Qi.JSON_OVERLAPS=267,Qi.JSON_PRETTY=268,Qi.JSON_QUOTE=269,Qi.JSON_REMOVE=270,Qi.JSON_REPLACE=271,Qi.JSON_SCHEMA_VALID=272,Qi.JSON_SCHEMA_VALIDATION_REPORT=273,Qi.JSON_SEARCH=274,Qi.JSON_SET=275,Qi.JSON_STORAGE_FREE=276,Qi.JSON_STORAGE_SIZE=277,Qi.JSON_TABLE=278,Qi.JSON_TYPE=279,Qi.JSON_UNQUOTE=280,Qi.JSON_VALID=281,Qi.JSON_VALUE=282,Qi.NESTED=283,Qi.ORDINALITY=284,Qi.PATH=285,Qi.AVG=286,Qi.BIT_AND=287,Qi.BIT_OR=288,Qi.BIT_XOR=289,Qi.COUNT=290,Qi.CUME_DIST=291,Qi.DENSE_RANK=292,Qi.FIRST_VALUE=293,Qi.GROUP_CONCAT=294,Qi.LAG=295,Qi.LAST_VALUE=296,Qi.LEAD=297,Qi.MAX=298,Qi.MIN=299,Qi.NTILE=300,Qi.NTH_VALUE=301,Qi.PERCENT_RANK=302,Qi.RANK=303,Qi.ROW_NUMBER=304,Qi.STD=305,Qi.STDDEV=306,Qi.STDDEV_POP=307,Qi.STDDEV_SAMP=308,Qi.SUM=309,Qi.VAR_POP=310,Qi.VAR_SAMP=311,Qi.VARIANCE=312,Qi.CURRENT_DATE=313,Qi.CURRENT_TIME=314,Qi.CURRENT_TIMESTAMP=315,Qi.LOCALTIME=316,Qi.CURDATE=317,Qi.CURTIME=318,Qi.DATE_ADD=319,Qi.DATE_SUB=320,Qi.EXTRACT=321,Qi.LOCALTIMESTAMP=322,Qi.NOW=323,Qi.POSITION=324,Qi.SUBSTR=325,Qi.SUBSTRING=326,Qi.SYSDATE=327,Qi.TRIM=328,Qi.UTC_DATE=329,Qi.UTC_TIME=330,Qi.UTC_TIMESTAMP=331,Qi.ACCOUNT=332,Qi.ACTION=333,Qi.AFTER=334,Qi.AGGREGATE=335,Qi.ALGORITHM=336,Qi.ANY=337,Qi.AT=338,Qi.AUTHORS=339,Qi.AUTOCOMMIT=340,Qi.AUTOEXTEND_SIZE=341,Qi.AUTO_INCREMENT=342,Qi.AVG_ROW_LENGTH=343,Qi.BEGIN=344,Qi.BINLOG=345,Qi.BIT=346,Qi.BLOCK=347,Qi.BOOL=348,Qi.BOOLEAN=349,Qi.BTREE=350,Qi.CACHE=351,Qi.CASCADED=352,Qi.CHAIN=353,Qi.CHANGED=354,Qi.CHANNEL=355,Qi.CHECKSUM=356,Qi.PAGE_CHECKSUM=357,Qi.CIPHER=358,Qi.CLASS_ORIGIN=359,Qi.CLIENT=360,Qi.CLOSE=361,Qi.CLUSTERING=362,Qi.COALESCE=363,Qi.CODE=364,Qi.COLUMNS=365,Qi.COLUMN_FORMAT=366,Qi.COLUMN_NAME=367,Qi.COMMENT=368,Qi.COMMIT=369,Qi.COMPACT=370,Qi.COMPLETION=371,Qi.COMPRESSED=372,Qi.COMPRESSION=373,Qi.CONCURRENT=374,Qi.CONNECT=375,Qi.CONNECTION=376,Qi.CONSISTENT=377,Qi.CONSTRAINT_CATALOG=378,Qi.CONSTRAINT_SCHEMA=379,Qi.CONSTRAINT_NAME=380,Qi.CONTAINS=381,Qi.CONTEXT=382,Qi.CONTRIBUTORS=383,Qi.COPY=384,Qi.CPU=385,Qi.CYCLE=386,Qi.CURSOR_NAME=387,Qi.DATA=388,Qi.DATAFILE=389,Qi.DEALLOCATE=390,Qi.DEFAULT_AUTH=391,Qi.DEFINER=392,Qi.DELAY_KEY_WRITE=393,Qi.DES_KEY_FILE=394,Qi.DIRECTORY=395,Qi.DISABLE=396,Qi.DISCARD=397,Qi.DISK=398,Qi.DO=399,Qi.DUMPFILE=400,Qi.DUPLICATE=401,Qi.DYNAMIC=402,Qi.ENABLE=403,Qi.ENCRYPTED=404,Qi.ENCRYPTION=405,Qi.ENCRYPTION_KEY_ID=406,Qi.END=407,Qi.ENDS=408,Qi.ENGINE=409,Qi.ENGINES=410,Qi.ERROR=411,Qi.ERRORS=412,Qi.ESCAPE=413,Qi.EVEN=414,Qi.EVENT=415,Qi.EVENTS=416,Qi.EVERY=417,Qi.EXCHANGE=418,Qi.EXCLUSIVE=419,Qi.EXPIRE=420,Qi.EXPORT=421,Qi.EXTENDED=422,Qi.EXTENT_SIZE=423,Qi.FAILED_LOGIN_ATTEMPTS=424,Qi.FAST=425,Qi.FAULTS=426,Qi.FIELDS=427,Qi.FILE_BLOCK_SIZE=428,Qi.FILTER=429,Qi.FIRST=430,Qi.FIXED=431,Qi.FLUSH=432,Qi.FOLLOWING=433,Qi.FOLLOWS=434,Qi.FOUND=435,Qi.FULL=436,Qi.FUNCTION=437,Qi.GENERAL=438,Qi.GLOBAL=439,Qi.GRANTS=440,Qi.GROUP_REPLICATION=441,Qi.HANDLER=442,Qi.HASH=443,Qi.HELP=444,Qi.HISTORY=445,Qi.HOST=446,Qi.HOSTS=447,Qi.IDENTIFIED=448,Qi.IGNORE_SERVER_IDS=449,Qi.IMPORT=450,Qi.INCREMENT=451,Qi.INDEXES=452,Qi.INITIAL_SIZE=453,Qi.INPLACE=454,Qi.INSERT_METHOD=455,Qi.INSTALL=456,Qi.INSTANCE=457,Qi.INSTANT=458,Qi.INVISIBLE=459,Qi.INVOKER=460,Qi.IO=461,Qi.IO_THREAD=462,Qi.IPC=463,Qi.ISOLATION=464,Qi.ISSUER=465,Qi.JSON=466,Qi.KEY_BLOCK_SIZE=467,Qi.LANGUAGE=468,Qi.LAST=469,Qi.LEAVES=470,Qi.LESS=471,Qi.LEVEL=472,Qi.LIST=473,Qi.LOCAL=474,Qi.LOGFILE=475,Qi.LOGS=476,Qi.MASTER=477,Qi.MASTER_AUTO_POSITION=478,Qi.MASTER_CONNECT_RETRY=479,Qi.MASTER_DELAY=480,Qi.MASTER_HEARTBEAT_PERIOD=481,Qi.MASTER_HOST=482,Qi.MASTER_LOG_FILE=483,Qi.MASTER_LOG_POS=484,Qi.MASTER_PASSWORD=485,Qi.MASTER_PORT=486,Qi.MASTER_RETRY_COUNT=487,Qi.MASTER_SSL=488,Qi.MASTER_SSL_CA=489,Qi.MASTER_SSL_CAPATH=490,Qi.MASTER_SSL_CERT=491,Qi.MASTER_SSL_CIPHER=492,Qi.MASTER_SSL_CRL=493,Qi.MASTER_SSL_CRLPATH=494,Qi.MASTER_SSL_KEY=495,Qi.MASTER_TLS_VERSION=496,Qi.MASTER_USER=497,Qi.MAX_CONNECTIONS_PER_HOUR=498,Qi.MAX_QUERIES_PER_HOUR=499,Qi.MAX_ROWS=500,Qi.MAX_SIZE=501,Qi.MAX_UPDATES_PER_HOUR=502,Qi.MAX_USER_CONNECTIONS=503,Qi.MEDIUM=504,Qi.MEMBER=505,Qi.MERGE=506,Qi.MESSAGE_TEXT=507,Qi.MID=508,Qi.MIGRATE=509,Qi.MIN_ROWS=510,Qi.MODE=511,Qi.MODIFY=512,Qi.MUTEX=513,Qi.MYSQL=514,Qi.MYSQL_ERRNO=515,Qi.NAME=516,Qi.NAMES=517,Qi.NCHAR=518,Qi.NEVER=519,Qi.NEXT=520,Qi.NO=521,Qi.NOCACHE=522,Qi.NOCOPY=523,Qi.NOCYCLE=524,Qi.NOMAXVALUE=525,Qi.NOMINVALUE=526,Qi.NOWAIT=527,Qi.NODEGROUP=528,Qi.NONE=529,Qi.ODBC=530,Qi.OFFLINE=531,Qi.OFFSET=532,Qi.OF=533,Qi.OJ=534,Qi.OLD_PASSWORD=535,Qi.ONE=536,Qi.ONLINE=537,Qi.ONLY=538,Qi.OPEN=539,Qi.OPTIMIZER_COSTS=540,Qi.OPTIONS=541,Qi.OWNER=542,Qi.PACK_KEYS=543,Qi.PAGE=544,Qi.PAGE_COMPRESSED=545,Qi.PAGE_COMPRESSION_LEVEL=546,Qi.PARSER=547,Qi.PARTIAL=548,Qi.PARTITIONING=549,Qi.PARTITIONS=550,Qi.PASSWORD=551,Qi.PASSWORD_LOCK_TIME=552,Qi.PHASE=553,Qi.PLUGIN=554,Qi.PLUGIN_DIR=555,Qi.PLUGINS=556,Qi.PORT=557,Qi.PRECEDES=558,Qi.PRECEDING=559,Qi.PREPARE=560,Qi.PRESERVE=561,Qi.PREV=562,Qi.PROCESSLIST=563,Qi.PROFILE=564,Qi.PROFILES=565,Qi.PROXY=566,Qi.QUERY=567,Qi.QUICK=568,Qi.REBUILD=569,Qi.RECOVER=570,Qi.RECURSIVE=571,Qi.REDO_BUFFER_SIZE=572,Qi.REDUNDANT=573,Qi.RELAY=574,Qi.RELAY_LOG_FILE=575,Qi.RELAY_LOG_POS=576,Qi.RELAYLOG=577,Qi.REMOVE=578,Qi.REORGANIZE=579,Qi.REPAIR=580,Qi.REPLICATE_DO_DB=581,Qi.REPLICATE_DO_TABLE=582,Qi.REPLICATE_IGNORE_DB=583,Qi.REPLICATE_IGNORE_TABLE=584,Qi.REPLICATE_REWRITE_DB=585,Qi.REPLICATE_WILD_DO_TABLE=586,Qi.REPLICATE_WILD_IGNORE_TABLE=587,Qi.REPLICATION=588,Qi.RESET=589,Qi.RESTART=590,Qi.RESUME=591,Qi.RETURNED_SQLSTATE=592,Qi.RETURNING=593,Qi.RETURNS=594,Qi.REUSE=595,Qi.ROLE=596,Qi.ROLLBACK=597,Qi.ROLLUP=598,Qi.ROTATE=599,Qi.ROW=600,Qi.ROWS=601,Qi.ROW_FORMAT=602,Qi.RTREE=603,Qi.SAVEPOINT=604,Qi.SCHEDULE=605,Qi.SECURITY=606,Qi.SEQUENCE=607,Qi.SERVER=608,Qi.SESSION=609,Qi.SHARE=610,Qi.SHARED=611,Qi.SIGNED=612,Qi.SIMPLE=613,Qi.SLAVE=614,Qi.SLOW=615,Qi.SNAPSHOT=616,Qi.SOCKET=617,Qi.SOME=618,Qi.SONAME=619,Qi.SOUNDS=620,Qi.SOURCE=621,Qi.SQL_AFTER_GTIDS=622,Qi.SQL_AFTER_MTS_GAPS=623,Qi.SQL_BEFORE_GTIDS=624,Qi.SQL_BUFFER_RESULT=625,Qi.SQL_CACHE=626,Qi.SQL_NO_CACHE=627,Qi.SQL_THREAD=628,Qi.START=629,Qi.STARTS=630,Qi.STATS_AUTO_RECALC=631,Qi.STATS_PERSISTENT=632,Qi.STATS_SAMPLE_PAGES=633,Qi.STATUS=634,Qi.STOP=635,Qi.STORAGE=636,Qi.STORED=637,Qi.STRING=638,Qi.SUBCLASS_ORIGIN=639,Qi.SUBJECT=640,Qi.SUBPARTITION=641,Qi.SUBPARTITIONS=642,Qi.SUSPEND=643,Qi.SWAPS=644,Qi.SWITCHES=645,Qi.TABLE_NAME=646,Qi.TABLESPACE=647,Qi.TABLE_TYPE=648,Qi.TEMPORARY=649,Qi.TEMPTABLE=650,Qi.THAN=651,Qi.TRADITIONAL=652,Qi.TRANSACTION=653,Qi.TRANSACTIONAL=654,Qi.TRIGGERS=655,Qi.TRUNCATE=656,Qi.UNBOUNDED=657,Qi.UNDEFINED=658,Qi.UNDOFILE=659,Qi.UNDO_BUFFER_SIZE=660,Qi.UNINSTALL=661,Qi.UNKNOWN=662,Qi.UNTIL=663,Qi.UPGRADE=664,Qi.USER=665,Qi.USE_FRM=666,Qi.USER_RESOURCES=667,Qi.VALIDATION=668,Qi.VALUE=669,Qi.VARIABLES=670,Qi.VIEW=671,Qi.VIRTUAL=672,Qi.VISIBLE=673,Qi.WAIT=674,Qi.WARNINGS=675,Qi.WINDOW=676,Qi.WITHOUT=677,Qi.WORK=678,Qi.WRAPPER=679,Qi.X509=680,Qi.XA=681,Qi.XML=682,Qi.YES=683,Qi.EUR=684,Qi.USA=685,Qi.JIS=686,Qi.ISO=687,Qi.INTERNAL=688,Qi.QUARTER=689,Qi.MONTH=690,Qi.DAY=691,Qi.HOUR=692,Qi.MINUTE=693,Qi.WEEK=694,Qi.SECOND=695,Qi.MICROSECOND=696,Qi.ADMIN=697,Qi.APPLICATION_PASSWORD_ADMIN=698,Qi.AUDIT_ABORT_EXEMPT=699,Qi.AUDIT_ADMIN=700,Qi.AUTHENTICATION_POLICY_ADMIN=701,Qi.BACKUP_ADMIN=702,Qi.BINLOG_ADMIN=703,Qi.BINLOG_ENCRYPTION_ADMIN=704,Qi.CLONE_ADMIN=705,Qi.CONNECTION_ADMIN=706,Qi.ENCRYPTION_KEY_ADMIN=707,Qi.EXECUTE=708,Qi.FILE=709,Qi.FIREWALL_ADMIN=710,Qi.FIREWALL_EXEMPT=711,Qi.FIREWALL_USER=712,Qi.FLUSH_OPTIMIZER_COSTS=713,Qi.FLUSH_STATUS=714,Qi.FLUSH_TABLES=715,Qi.FLUSH_USER_RESOURCES=716,Qi.GROUP_REPLICATION_ADMIN=717,Qi.INNODB_REDO_LOG_ARCHIVE=718,Qi.INNODB_REDO_LOG_ENABLE=719,Qi.INVOKE=720,Qi.LAMBDA=721,Qi.NDB_STORED_USER=722,Qi.PASSWORDLESS_USER_ADMIN=723,Qi.PERSIST_RO_VARIABLES_ADMIN=724,Qi.PRIVILEGES=725,Qi.PROCESS=726,Qi.RELOAD=727,Qi.REPLICATION_APPLIER=728,Qi.REPLICATION_SLAVE_ADMIN=729,Qi.RESOURCE_GROUP_ADMIN=730,Qi.RESOURCE_GROUP_USER=731,Qi.ROLE_ADMIN=732,Qi.ROUTINE=733,Qi.S3=734,Qi.SERVICE_CONNECTION_ADMIN=735,Qi.SESSION_VARIABLES_ADMIN=736,Qi.SET_USER_ID=737,Qi.SHOW_ROUTINE=738,Qi.SHUTDOWN=739,Qi.SUPER=740,Qi.SYSTEM_VARIABLES_ADMIN=741,Qi.TABLES=742,Qi.TABLE_ENCRYPTION_ADMIN=743,Qi.VERSION_TOKEN_ADMIN=744,Qi.XA_RECOVER_ADMIN=745,Qi.ARMSCII8=746,Qi.ASCII=747,Qi.BIG5=748,Qi.CP1250=749,Qi.CP1251=750,Qi.CP1256=751,Qi.CP1257=752,Qi.CP850=753,Qi.CP852=754,Qi.CP866=755,Qi.CP932=756,Qi.DEC8=757,Qi.EUCJPMS=758,Qi.EUCKR=759,Qi.GB18030=760,Qi.GB2312=761,Qi.GBK=762,Qi.GEOSTD8=763,Qi.GREEK=764,Qi.HEBREW=765,Qi.HP8=766,Qi.KEYBCS2=767,Qi.KOI8R=768,Qi.KOI8U=769,Qi.LATIN1=770,Qi.LATIN2=771,Qi.LATIN5=772,Qi.LATIN7=773,Qi.MACCE=774,Qi.MACROMAN=775,Qi.SJIS=776,Qi.SWE7=777,Qi.TIS620=778,Qi.UCS2=779,Qi.UJIS=780,Qi.UTF16=781,Qi.UTF16LE=782,Qi.UTF32=783,Qi.UTF8=784,Qi.UTF8MB3=785,Qi.UTF8MB4=786,Qi.ARCHIVE=787,Qi.BLACKHOLE=788,Qi.CSV=789,Qi.FEDERATED=790,Qi.INNODB=791,Qi.MEMORY=792,Qi.MRG_MYISAM=793,Qi.MYISAM=794,Qi.NDB=795,Qi.NDBCLUSTER=796,Qi.PERFORMANCE_SCHEMA=797,Qi.TOKUDB=798,Qi.REPEATABLE=799,Qi.COMMITTED=800,Qi.UNCOMMITTED=801,Qi.SERIALIZABLE=802,Qi.GEOMETRYCOLLECTION=803,Qi.GEOMCOLLECTION=804,Qi.GEOMETRY=805,Qi.LINESTRING=806,Qi.MULTILINESTRING=807,Qi.MULTIPOINT=808,Qi.MULTIPOLYGON=809,Qi.POINT=810,Qi.POLYGON=811,Qi.ABS=812,Qi.ACOS=813,Qi.ADDDATE=814,Qi.ADDTIME=815,Qi.AES_DECRYPT=816,Qi.AES_ENCRYPT=817,Qi.AREA=818,Qi.ASBINARY=819,Qi.ASIN=820,Qi.ASTEXT=821,Qi.ASWKB=822,Qi.ASWKT=823,Qi.ASYMMETRIC_DECRYPT=824,Qi.ASYMMETRIC_DERIVE=825,Qi.ASYMMETRIC_ENCRYPT=826,Qi.ASYMMETRIC_SIGN=827,Qi.ASYMMETRIC_VERIFY=828,Qi.ATAN=829,Qi.ATAN2=830,Qi.BENCHMARK=831,Qi.BIN=832,Qi.BIT_COUNT=833,Qi.BIT_LENGTH=834,Qi.BUFFER=835,Qi.CATALOG_NAME=836,Qi.CEIL=837,Qi.CEILING=838,Qi.CENTROID=839,Qi.CHARACTER_LENGTH=840,Qi.CHARSET=841,Qi.CHAR_LENGTH=842,Qi.COERCIBILITY=843,Qi.COLLATION=844,Qi.COMPRESS=845,Qi.CONCAT=846,Qi.CONCAT_WS=847,Qi.CONNECTION_ID=848,Qi.CONV=849,Qi.CONVERT_TZ=850,Qi.COS=851,Qi.COT=852,Qi.CRC32=853,Qi.CREATE_ASYMMETRIC_PRIV_KEY=854,Qi.CREATE_ASYMMETRIC_PUB_KEY=855,Qi.CREATE_DH_PARAMETERS=856,Qi.CREATE_DIGEST=857,Qi.CROSSES=858,Qi.DATEDIFF=859,Qi.DATE_FORMAT=860,Qi.DAYNAME=861,Qi.DAYOFMONTH=862,Qi.DAYOFWEEK=863,Qi.DAYOFYEAR=864,Qi.DECODE=865,Qi.DEGREES=866,Qi.DES_DECRYPT=867,Qi.DES_ENCRYPT=868,Qi.DIMENSION=869,Qi.DISJOINT=870,Qi.ELT=871,Qi.ENCODE=872,Qi.ENCRYPT=873,Qi.ENDPOINT=874,Qi.ENGINE_ATTRIBUTE=875,Qi.ENVELOPE=876,Qi.EQUALS=877,Qi.EXP=878,Qi.EXPORT_SET=879,Qi.EXTERIORRING=880,Qi.EXTRACTVALUE=881,Qi.FIELD=882,Qi.FIND_IN_SET=883,Qi.FLOOR=884,Qi.FORMAT=885,Qi.FOUND_ROWS=886,Qi.FROM_BASE64=887,Qi.FROM_DAYS=888,Qi.FROM_UNIXTIME=889,Qi.GEOMCOLLFROMTEXT=890,Qi.GEOMCOLLFROMWKB=891,Qi.GEOMETRYCOLLECTIONFROMTEXT=892,Qi.GEOMETRYCOLLECTIONFROMWKB=893,Qi.GEOMETRYFROMTEXT=894,Qi.GEOMETRYFROMWKB=895,Qi.GEOMETRYN=896,Qi.GEOMETRYTYPE=897,Qi.GEOMFROMTEXT=898,Qi.GEOMFROMWKB=899,Qi.GET_FORMAT=900,Qi.GET_LOCK=901,Qi.GLENGTH=902,Qi.GREATEST=903,Qi.GTID_SUBSET=904,Qi.GTID_SUBTRACT=905,Qi.HEX=906,Qi.IFNULL=907,Qi.INET6_ATON=908,Qi.INET6_NTOA=909,Qi.INET_ATON=910,Qi.INET_NTOA=911,Qi.INSTR=912,Qi.INTERIORRINGN=913,Qi.INTERSECTS=914,Qi.ISCLOSED=915,Qi.ISEMPTY=916,Qi.ISNULL=917,Qi.ISSIMPLE=918,Qi.IS_FREE_LOCK=919,Qi.IS_IPV4=920,Qi.IS_IPV4_COMPAT=921,Qi.IS_IPV4_MAPPED=922,Qi.IS_IPV6=923,Qi.IS_USED_LOCK=924,Qi.LAST_INSERT_ID=925,Qi.LCASE=926,Qi.LEAST=927,Qi.LENGTH=928,Qi.LINEFROMTEXT=929,Qi.LINEFROMWKB=930,Qi.LINESTRINGFROMTEXT=931,Qi.LINESTRINGFROMWKB=932,Qi.LN=933,Qi.LOAD_FILE=934,Qi.LOCATE=935,Qi.LOG=936,Qi.LOG10=937,Qi.LOG2=938,Qi.LOWER=939,Qi.LPAD=940,Qi.LTRIM=941,Qi.MAKEDATE=942,Qi.MAKETIME=943,Qi.MAKE_SET=944,Qi.MASTER_POS_WAIT=945,Qi.MBRCONTAINS=946,Qi.MBRDISJOINT=947,Qi.MBREQUAL=948,Qi.MBRINTERSECTS=949,Qi.MBROVERLAPS=950,Qi.MBRTOUCHES=951,Qi.MBRWITHIN=952,Qi.MD5=953,Qi.MLINEFROMTEXT=954,Qi.MLINEFROMWKB=955,Qi.MONTHNAME=956,Qi.MPOINTFROMTEXT=957,Qi.MPOINTFROMWKB=958,Qi.MPOLYFROMTEXT=959,Qi.MPOLYFROMWKB=960,Qi.MULTILINESTRINGFROMTEXT=961,Qi.MULTILINESTRINGFROMWKB=962,Qi.MULTIPOINTFROMTEXT=963,Qi.MULTIPOINTFROMWKB=964,Qi.MULTIPOLYGONFROMTEXT=965,Qi.MULTIPOLYGONFROMWKB=966,Qi.NAME_CONST=967,Qi.NULLIF=968,Qi.NUMGEOMETRIES=969,Qi.NUMINTERIORRINGS=970,Qi.NUMPOINTS=971,Qi.OCT=972,Qi.OCTET_LENGTH=973,Qi.ORD=974,Qi.OVERLAPS=975,Qi.PERIOD_ADD=976,Qi.PERIOD_DIFF=977,Qi.PI=978,Qi.POINTFROMTEXT=979,Qi.POINTFROMWKB=980,Qi.POINTN=981,Qi.POLYFROMTEXT=982,Qi.POLYFROMWKB=983,Qi.POLYGONFROMTEXT=984,Qi.POLYGONFROMWKB=985,Qi.POW=986,Qi.POWER=987,Qi.QUOTE=988,Qi.RADIANS=989,Qi.RAND=990,Qi.RANDOM=991,Qi.RANDOM_BYTES=992,Qi.RELEASE_LOCK=993,Qi.REVERSE=994,Qi.ROUND=995,Qi.ROW_COUNT=996,Qi.RPAD=997,Qi.RTRIM=998,Qi.SEC_TO_TIME=999,Qi.SECONDARY_ENGINE_ATTRIBUTE=1e3,Qi.SESSION_USER=1001,Qi.SHA=1002,Qi.SHA1=1003,Qi.SHA2=1004,Qi.SCHEMA_NAME=1005,Qi.SIGN=1006,Qi.SIN=1007,Qi.SLEEP=1008,Qi.SOUNDEX=1009,Qi.SQL_THREAD_WAIT_AFTER_GTIDS=1010,Qi.SQRT=1011,Qi.SRID=1012,Qi.STARTPOINT=1013,Qi.STRCMP=1014,Qi.STR_TO_DATE=1015,Qi.ST_AREA=1016,Qi.ST_ASBINARY=1017,Qi.ST_ASTEXT=1018,Qi.ST_ASWKB=1019,Qi.ST_ASWKT=1020,Qi.ST_BUFFER=1021,Qi.ST_CENTROID=1022,Qi.ST_CONTAINS=1023,Qi.ST_CROSSES=1024,Qi.ST_DIFFERENCE=1025,Qi.ST_DIMENSION=1026,Qi.ST_DISJOINT=1027,Qi.ST_DISTANCE=1028,Qi.ST_ENDPOINT=1029,Qi.ST_ENVELOPE=1030,Qi.ST_EQUALS=1031,Qi.ST_EXTERIORRING=1032,Qi.ST_GEOMCOLLFROMTEXT=1033,Qi.ST_GEOMCOLLFROMTXT=1034,Qi.ST_GEOMCOLLFROMWKB=1035,Qi.ST_GEOMETRYCOLLECTIONFROMTEXT=1036,Qi.ST_GEOMETRYCOLLECTIONFROMWKB=1037,Qi.ST_GEOMETRYFROMTEXT=1038,Qi.ST_GEOMETRYFROMWKB=1039,Qi.ST_GEOMETRYN=1040,Qi.ST_GEOMETRYTYPE=1041,Qi.ST_GEOMFROMTEXT=1042,Qi.ST_GEOMFROMWKB=1043,Qi.ST_INTERIORRINGN=1044,Qi.ST_INTERSECTION=1045,Qi.ST_INTERSECTS=1046,Qi.ST_ISCLOSED=1047,Qi.ST_ISEMPTY=1048,Qi.ST_ISSIMPLE=1049,Qi.ST_LINEFROMTEXT=1050,Qi.ST_LINEFROMWKB=1051,Qi.ST_LINESTRINGFROMTEXT=1052,Qi.ST_LINESTRINGFROMWKB=1053,Qi.ST_NUMGEOMETRIES=1054,Qi.ST_NUMINTERIORRING=1055,Qi.ST_NUMINTERIORRINGS=1056,Qi.ST_NUMPOINTS=1057,Qi.ST_OVERLAPS=1058,Qi.ST_POINTFROMTEXT=1059,Qi.ST_POINTFROMWKB=1060,Qi.ST_POINTN=1061,Qi.ST_POLYFROMTEXT=1062,Qi.ST_POLYFROMWKB=1063,Qi.ST_POLYGONFROMTEXT=1064,Qi.ST_POLYGONFROMWKB=1065,Qi.ST_SRID=1066,Qi.ST_STARTPOINT=1067,Qi.ST_SYMDIFFERENCE=1068,Qi.ST_TOUCHES=1069,Qi.ST_UNION=1070,Qi.ST_WITHIN=1071,Qi.ST_X=1072,Qi.ST_Y=1073,Qi.SUBDATE=1074,Qi.SUBSTRING_INDEX=1075,Qi.SUBTIME=1076,Qi.SYSTEM_USER=1077,Qi.TAN=1078,Qi.TIMEDIFF=1079,Qi.TIMESTAMPADD=1080,Qi.TIMESTAMPDIFF=1081,Qi.TIME_FORMAT=1082,Qi.TIME_TO_SEC=1083,Qi.TOUCHES=1084,Qi.TO_BASE64=1085,Qi.TO_DAYS=1086,Qi.TO_SECONDS=1087,Qi.TP_CONNECTION_ADMIN=1088,Qi.UCASE=1089,Qi.UNCOMPRESS=1090,Qi.UNCOMPRESSED_LENGTH=1091,Qi.UNHEX=1092,Qi.UNIX_TIMESTAMP=1093,Qi.UPDATEXML=1094,Qi.UPPER=1095,Qi.UUID=1096,Qi.UUID_SHORT=1097,Qi.VALIDATE_PASSWORD_STRENGTH=1098,Qi.VERSION=1099,Qi.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS=1100,Qi.WEEKDAY=1101,Qi.WEEKOFYEAR=1102,Qi.WEIGHT_STRING=1103,Qi.WITHIN=1104,Qi.YEARWEEK=1105,Qi.Y_FUNCTION=1106,Qi.X_FUNCTION=1107,Qi.VAR_ASSIGN=1108,Qi.PLUS_ASSIGN=1109,Qi.MINUS_ASSIGN=1110,Qi.MULT_ASSIGN=1111,Qi.DIV_ASSIGN=1112,Qi.MOD_ASSIGN=1113,Qi.AND_ASSIGN=1114,Qi.XOR_ASSIGN=1115,Qi.OR_ASSIGN=1116,Qi.STAR=1117,Qi.DIVIDE=1118,Qi.MODULE=1119,Qi.PLUS=1120,Qi.MINUS=1121,Qi.DIV=1122,Qi.MOD=1123,Qi.EQUAL_SYMBOL=1124,Qi.GREATER_SYMBOL=1125,Qi.LESS_SYMBOL=1126,Qi.EXCLAMATION_SYMBOL=1127,Qi.BIT_NOT_OP=1128,Qi.BIT_OR_OP=1129,Qi.BIT_AND_OP=1130,Qi.BIT_XOR_OP=1131,Qi.DOT=1132,Qi.LR_BRACKET=1133,Qi.RR_BRACKET=1134,Qi.COMMA=1135,Qi.SEMI=1136,Qi.AT_SIGN=1137,Qi.ZERO_DECIMAL=1138,Qi.ONE_DECIMAL=1139,Qi.TWO_DECIMAL=1140,Qi.SINGLE_QUOTE_SYMB=1141,Qi.DOUBLE_QUOTE_SYMB=1142,Qi.REVERSE_QUOTE_SYMB=1143,Qi.COLON_SYMB=1144,Qi.CHARSET_REVERSE_QOUTE_STRING=1145,Qi.FILESIZE_LITERAL=1146,Qi.START_NATIONAL_STRING_LITERAL=1147,Qi.STRING_LITERAL=1148,Qi.DECIMAL_LITERAL=1149,Qi.HEXADECIMAL_LITERAL=1150,Qi.REAL_LITERAL=1151,Qi.NULL_SPEC_LITERAL=1152,Qi.BIT_STRING=1153,Qi.STRING_CHARSET_NAME=1154,Qi.DOT_ID=1155,Qi.ID=1156,Qi.REVERSE_QUOTE_ID=1157,Qi.HOST_IP_ADDRESS=1158,Qi.LOCAL_ID=1159,Qi.GLOBAL_ID=1160,Qi.ERROR_RECONGNIGION=1161,Qi.RULE_root=0,Qi.RULE_statements=1,Qi.RULE_statement=2,Qi.RULE_ddlStatement=3,Qi.RULE_dmlStatement=4,Qi.RULE_transactionStatement=5,Qi.RULE_replicationStatement=6,Qi.RULE_preparedStatement=7,Qi.RULE_compoundStatement=8,Qi.RULE_administrationStatement=9,Qi.RULE_utilityStatement=10,Qi.RULE_createDatabase=11,Qi.RULE_createEvent=12,Qi.RULE_createIndex=13,Qi.RULE_createLogfileGroup=14,Qi.RULE_createProcedure=15,Qi.RULE_createFunction=16,Qi.RULE_createRole=17,Qi.RULE_createServer=18,Qi.RULE_createTable=19,Qi.RULE_createTablespaceInnodb=20,Qi.RULE_createTablespaceNdb=21,Qi.RULE_createTrigger=22,Qi.RULE_withClause=23,Qi.RULE_commonTableExpressions=24,Qi.RULE_cteName=25,Qi.RULE_cteColumnName=26,Qi.RULE_createView=27,Qi.RULE_createDatabaseOption=28,Qi.RULE_charSet=29,Qi.RULE_currentUserExpression=30,Qi.RULE_ownerStatement=31,Qi.RULE_scheduleExpression=32,Qi.RULE_timestampValue=33,Qi.RULE_intervalExpr=34,Qi.RULE_intervalType=35,Qi.RULE_enableType=36,Qi.RULE_indexType=37,Qi.RULE_indexOption=38,Qi.RULE_procedureParameter=39,Qi.RULE_functionParameter=40,Qi.RULE_routineOption=41,Qi.RULE_serverOption=42,Qi.RULE_createDefinitions=43,Qi.RULE_createDefinition=44,Qi.RULE_columnDefinition=45,Qi.RULE_columnConstraint=46,Qi.RULE_tableConstraint=47,Qi.RULE_referenceDefinition=48,Qi.RULE_referenceAction=49,Qi.RULE_referenceControlType=50,Qi.RULE_indexColumnDefinition=51,Qi.RULE_tableOption=52,Qi.RULE_tableType=53,Qi.RULE_tablespaceStorage=54,Qi.RULE_partitionDefinitions=55,Qi.RULE_partitionFunctionDefinition=56,Qi.RULE_subpartitionFunctionDefinition=57,Qi.RULE_partitionDefinition=58,Qi.RULE_partitionDefinerAtom=59,Qi.RULE_partitionDefinerVector=60,Qi.RULE_subpartitionDefinition=61,Qi.RULE_partitionOption=62,Qi.RULE_alterDatabase=63,Qi.RULE_alterEvent=64,Qi.RULE_alterFunction=65,Qi.RULE_alterInstance=66,Qi.RULE_alterLogfileGroup=67,Qi.RULE_alterProcedure=68,Qi.RULE_alterServer=69,Qi.RULE_alterTable=70,Qi.RULE_alterTablespace=71,Qi.RULE_alterView=72,Qi.RULE_alterSpecification=73,Qi.RULE_alterPartitionSpecification=74,Qi.RULE_dropDatabase=75,Qi.RULE_dropEvent=76,Qi.RULE_dropIndex=77,Qi.RULE_dropLogfileGroup=78,Qi.RULE_dropProcedure=79,Qi.RULE_dropFunction=80,Qi.RULE_dropServer=81,Qi.RULE_dropTable=82,Qi.RULE_dropTablespace=83,Qi.RULE_dropTrigger=84,Qi.RULE_dropView=85,Qi.RULE_dropRole=86,Qi.RULE_setRole=87,Qi.RULE_renameTable=88,Qi.RULE_renameTableClause=89,Qi.RULE_truncateTable=90,Qi.RULE_callStatement=91,Qi.RULE_deleteStatement=92,Qi.RULE_doStatement=93,Qi.RULE_handlerStatement=94,Qi.RULE_insertStatement=95,Qi.RULE_loadDataStatement=96,Qi.RULE_loadXmlStatement=97,Qi.RULE_replaceStatement=98,Qi.RULE_selectStatement=99,Qi.RULE_updateStatement=100,Qi.RULE_valuesStatement=101,Qi.RULE_insertStatementValue=102,Qi.RULE_updatedElement=103,Qi.RULE_assignmentField=104,Qi.RULE_lockClause=105,Qi.RULE_singleDeleteStatement=106,Qi.RULE_multipleDeleteStatement=107,Qi.RULE_handlerOpenStatement=108,Qi.RULE_handlerReadIndexStatement=109,Qi.RULE_handlerReadStatement=110,Qi.RULE_handlerCloseStatement=111,Qi.RULE_singleUpdateStatement=112,Qi.RULE_multipleUpdateStatement=113,Qi.RULE_orderByClause=114,Qi.RULE_orderByExpression=115,Qi.RULE_tableSources=116,Qi.RULE_tableSource=117,Qi.RULE_tableSourceItem=118,Qi.RULE_indexHint=119,Qi.RULE_indexHintType=120,Qi.RULE_joinPart=121,Qi.RULE_joinSpec=122,Qi.RULE_queryExpression=123,Qi.RULE_queryExpressionNointo=124,Qi.RULE_querySpecification=125,Qi.RULE_querySpecificationNointo=126,Qi.RULE_unionParenthesis=127,Qi.RULE_unionStatement=128,Qi.RULE_lateralStatement=129,Qi.RULE_jsonTable=130,Qi.RULE_jsonColumnList=131,Qi.RULE_jsonColumn=132,Qi.RULE_jsonOnEmpty=133,Qi.RULE_jsonOnError=134,Qi.RULE_selectSpec=135,Qi.RULE_selectElements=136,Qi.RULE_selectElementAlias=137,Qi.RULE_selectElement=138,Qi.RULE_selectIntoExpression=139,Qi.RULE_selectFieldsInto=140,Qi.RULE_selectLinesInto=141,Qi.RULE_fromClause=142,Qi.RULE_groupByClause=143,Qi.RULE_havingClause=144,Qi.RULE_windowClause=145,Qi.RULE_groupByItem=146,Qi.RULE_limitClause=147,Qi.RULE_limitClauseAtom=148,Qi.RULE_startTransaction=149,Qi.RULE_beginWork=150,Qi.RULE_commitWork=151,Qi.RULE_rollbackWork=152,Qi.RULE_savepointStatement=153,Qi.RULE_rollbackStatement=154,Qi.RULE_releaseStatement=155,Qi.RULE_lockTables=156,Qi.RULE_unlockTables=157,Qi.RULE_setAutocommitStatement=158,Qi.RULE_setTransactionStatement=159,Qi.RULE_transactionMode=160,Qi.RULE_lockTableElement=161,Qi.RULE_lockAction=162,Qi.RULE_transactionOption=163,Qi.RULE_transactionLevel=164,Qi.RULE_changeMaster=165,Qi.RULE_changeReplicationFilter=166,Qi.RULE_purgeBinaryLogs=167,Qi.RULE_resetMaster=168,Qi.RULE_resetSlave=169,Qi.RULE_startSlave=170,Qi.RULE_stopSlave=171,Qi.RULE_startGroupReplication=172,Qi.RULE_stopGroupReplication=173,Qi.RULE_masterOption=174,Qi.RULE_stringMasterOption=175,Qi.RULE_decimalMasterOption=176,Qi.RULE_boolMasterOption=177,Qi.RULE_channelOption=178,Qi.RULE_replicationFilter=179,Qi.RULE_tablePair=180,Qi.RULE_threadType=181,Qi.RULE_untilOption=182,Qi.RULE_connectionOption=183,Qi.RULE_gtuidSet=184,Qi.RULE_xaStartTransaction=185,Qi.RULE_xaEndTransaction=186,Qi.RULE_xaPrepareStatement=187,Qi.RULE_xaCommitWork=188,Qi.RULE_xaRollbackWork=189,Qi.RULE_xaRecoverWork=190,Qi.RULE_prepareStatement=191,Qi.RULE_executeStatement=192,Qi.RULE_deallocatePrepare=193,Qi.RULE_routineBody=194,Qi.RULE_blockStatement=195,Qi.RULE_caseStatement=196,Qi.RULE_ifStatement=197,Qi.RULE_iterateStatement=198,Qi.RULE_leaveStatement=199,Qi.RULE_loopStatement=200,Qi.RULE_repeatStatement=201,Qi.RULE_returnStatement=202,Qi.RULE_whileStatement=203,Qi.RULE_cursorStatement=204,Qi.RULE_declareVariable=205,Qi.RULE_declareCondition=206,Qi.RULE_declareCursor=207,Qi.RULE_declareHandler=208,Qi.RULE_handlerConditionValue=209,Qi.RULE_procedureSqlStatement=210,Qi.RULE_caseAlternative=211,Qi.RULE_elifAlternative=212,Qi.RULE_alterUser=213,Qi.RULE_createUser=214,Qi.RULE_dropUser=215,Qi.RULE_grantStatement=216,Qi.RULE_roleOption=217,Qi.RULE_grantProxy=218,Qi.RULE_renameUser=219,Qi.RULE_revokeStatement=220,Qi.RULE_revokeProxy=221,Qi.RULE_setPasswordStatement=222,Qi.RULE_userSpecification=223,Qi.RULE_newUserAuthOptionList=224,Qi.RULE_newUserAuthOption=225,Qi.RULE_authOptionClause=226,Qi.RULE_authenticationRule=227,Qi.RULE_tlsOption=228,Qi.RULE_userResourceOption=229,Qi.RULE_userPasswordOption=230,Qi.RULE_userLockOption=231,Qi.RULE_privelegeClause=232,Qi.RULE_privilege=233,Qi.RULE_privilegeLevel=234,Qi.RULE_renameUserClause=235,Qi.RULE_analyzeTable=236,Qi.RULE_checkTable=237,Qi.RULE_checksumTable=238,Qi.RULE_optimizeTable=239,Qi.RULE_repairTable=240,Qi.RULE_checkTableOption=241,Qi.RULE_createUdfunction=242,Qi.RULE_installPlugin=243,Qi.RULE_uninstallPlugin=244,Qi.RULE_setStatement=245,Qi.RULE_showStatement=246,Qi.RULE_variableClause=247,Qi.RULE_showCommonEntity=248,Qi.RULE_showFilter=249,Qi.RULE_showGlobalInfoClause=250,Qi.RULE_showSchemaEntity=251,Qi.RULE_showProfileType=252,Qi.RULE_binlogStatement=253,Qi.RULE_cacheIndexStatement=254,Qi.RULE_flushStatement=255,Qi.RULE_killStatement=256,Qi.RULE_loadIndexIntoCache=257,Qi.RULE_resetStatement=258,Qi.RULE_shutdownStatement=259,Qi.RULE_tableIndexes=260,Qi.RULE_flushOption=261,Qi.RULE_flushTableOption=262,Qi.RULE_loadedTableIndexes=263,Qi.RULE_simpleDescribeStatement=264,Qi.RULE_fullDescribeStatement=265,Qi.RULE_helpStatement=266,Qi.RULE_useStatement=267,Qi.RULE_signalStatement=268,Qi.RULE_resignalStatement=269,Qi.RULE_signalConditionInformation=270,Qi.RULE_withStatement=271,Qi.RULE_tableStatement=272,Qi.RULE_diagnosticsStatement=273,Qi.RULE_diagnosticsConditionInformationName=274,Qi.RULE_describeObjectClause=275,Qi.RULE_fullId=276,Qi.RULE_tableName=277,Qi.RULE_tableNames=278,Qi.RULE_userOrRoleName=279,Qi.RULE_userOrRoleNameList=280,Qi.RULE_newRoleNameList=281,Qi.RULE_newRoleName=282,Qi.RULE_roleNameList=283,Qi.RULE_roleName=284,Qi.RULE_fullColumnName=285,Qi.RULE_databaseName=286,Qi.RULE_indexName=287,Qi.RULE_constraintName=288,Qi.RULE_triggerName=289,Qi.RULE_indexNameList=290,Qi.RULE_indexColumnName=291,Qi.RULE_simpleUserName=292,Qi.RULE_hostName=293,Qi.RULE_userNameList=294,Qi.RULE_newUserName=295,Qi.RULE_userName=296,Qi.RULE_mysqlVariable=297,Qi.RULE_charsetName=298,Qi.RULE_collationName=299,Qi.RULE_engineName=300,Qi.RULE_engineNameBase=301,Qi.RULE_uuidSet=302,Qi.RULE_xid=303,Qi.RULE_xuidStringId=304,Qi.RULE_authPlugin=305,Qi.RULE_uid=306,Qi.RULE_simpleId=307,Qi.RULE_dottedId=308,Qi.RULE_decimalLiteral=309,Qi.RULE_fileSizeLiteral=310,Qi.RULE_stringLiteral=311,Qi.RULE_booleanLiteral=312,Qi.RULE_hexadecimalLiteral=313,Qi.RULE_nullNotnull=314,Qi.RULE_constant=315,Qi.RULE_dataType=316,Qi.RULE_collectionOptions=317,Qi.RULE_convertedDataType=318,Qi.RULE_lengthOneDimension=319,Qi.RULE_lengthTwoDimension=320,Qi.RULE_lengthTwoOptionalDimension=321,Qi.RULE_uidList=322,Qi.RULE_fullColumnNameList=323,Qi.RULE_tables=324,Qi.RULE_indexColumnNames=325,Qi.RULE_expressions=326,Qi.RULE_expressionsWithDefaults=327,Qi.RULE_constants=328,Qi.RULE_simpleStrings=329,Qi.RULE_userVariables=330,Qi.RULE_defaultValue=331,Qi.RULE_currentTimestamp=332,Qi.RULE_expressionOrDefault=333,Qi.RULE_ifExists=334,Qi.RULE_ifNotExists=335,Qi.RULE_orReplace=336,Qi.RULE_waitNowaitClause=337,Qi.RULE_functionCall=338,Qi.RULE_specificFunction=339,Qi.RULE_caseFuncAlternative=340,Qi.RULE_levelsInWeightString=341,Qi.RULE_levelInWeightListElement=342,Qi.RULE_aggregateWindowedFunction=343,Qi.RULE_nonAggregateWindowedFunction=344,Qi.RULE_overClause=345,Qi.RULE_windowSpec=346,Qi.RULE_windowName=347,Qi.RULE_frameClause=348,Qi.RULE_frameUnits=349,Qi.RULE_frameExtent=350,Qi.RULE_frameBetween=351,Qi.RULE_frameRange=352,Qi.RULE_partitionClause=353,Qi.RULE_scalarFunctionName=354,Qi.RULE_passwordFunctionClause=355,Qi.RULE_functionArgs=356,Qi.RULE_functionArg=357,Qi.RULE_expression=358,Qi.RULE_predicate=359,Qi.RULE_expressionAtom=360,Qi.RULE_unaryOperator=361,Qi.RULE_comparisonOperator=362,Qi.RULE_logicalOperator=363,Qi.RULE_bitOperator=364,Qi.RULE_multOperator=365,Qi.RULE_addOperator=366,Qi.RULE_jsonOperator=367,Qi.RULE_charsetNameBase=368,Qi.RULE_transactionLevelBase=369,Qi.RULE_privilegesBase=370,Qi.RULE_intervalTypeBase=371,Qi.RULE_dataTypeBase=372,Qi.RULE_keywordsCanBeId=373,Qi.RULE_functionNameBase=374,Qi.literalNames=[null,null,null,null,null,"'ADD'","'ALL'","'ALTER'","'ALWAYS'","'ANALYZE'","'AND'","'ARRAY'","'AS'","'ASC'","'ATTRIBUTE'","'BEFORE'","'BETWEEN'","'BOTH'","'BUCKETS'","'BY'","'CALL'","'CASCADE'","'CASE'","'CAST'","'CHANGE'","'CHARACTER'","'CHECK'","'COLLATE'","'COLUMN'","'CONDITION'","'CONSTRAINT'","'CONTINUE'","'CONVERT'","'CREATE'","'CROSS'","'CURRENT'","'CURRENT_ROLE'","'CURRENT_USER'","'CURSOR'","'DATABASE'","'DATABASES'","'DECLARE'","'DEFAULT'","'DELAYED'","'DELETE'","'DESC'","'DESCRIBE'","'DETERMINISTIC'","'DIAGNOSTICS'","'DISTINCT'","'DISTINCTROW'","'DROP'","'EACH'","'ELSE'","'ELSEIF'","'EMPTY'","'ENCLOSED'","'ENFORCED'","'ESCAPED'","'EXCEPT'","'EXISTS'","'EXIT'","'EXPLAIN'","'FALSE'","'FETCH'","'FOR'","'FORCE'","'FOREIGN'","'FROM'","'FULLTEXT'","'GENERATED'","'GET'","'GRANT'","'GROUP'","'HAVING'","'HIGH_PRIORITY'","'HISTOGRAM'","'IF'","'IGNORE'","'IGNORED'","'IN'","'INDEX'","'INFILE'","'INNER'","'INOUT'","'INSERT'","'INTERVAL'","'INTO'","'IS'","'ITERATE'","'JOIN'","'KEY'","'KEYS'","'KILL'","'LATERAL'","'LEADING'","'LEAVE'","'LEFT'","'LIKE'","'LIMIT'","'LINEAR'","'LINES'","'LOAD'","'LOCK'","'LOCKED'","'LOOP'","'LOW_PRIORITY'","'MASTER_BIND'","'MASTER_SSL_VERIFY_SERVER_CERT'","'MATCH'","'MAXVALUE'","'MINVALUE'","'MODIFIES'","'NATURAL'","'NOT'","'NO_WRITE_TO_BINLOG'","'NULL'","'NUMBER'","'ON'","'OPTIMIZE'","'OPTION'","'OPTIONAL'","'OPTIONALLY'","'OR'","'ORDER'","'OUT'","'OUTER'","'OUTFILE'","'OVER'","'PARTITION'","'PRIMARY'","'PROCEDURE'","'PURGE'","'RANGE'","'READ'","'READS'","'REFERENCES'","'REGEXP'","'RELEASE'","'RENAME'","'REPEAT'","'REPLACE'","'REQUIRE'","'RESIGNAL'","'RESTRICT'","'RETAIN'","'RETURN'","'REVOKE'","'RIGHT'","'RLIKE'","'SCHEMA'","'SCHEMAS'","'SELECT'","'SET'","'SEPARATOR'","'SHOW'","'SIGNAL'","'SKIP'","'SKIP_QUERY_REWRITE'","'SPATIAL'","'SQL'","'SQLEXCEPTION'","'SQLSTATE'","'SQLWARNING'","'SQL_BIG_RESULT'","'SQL_CALC_FOUND_ROWS'","'SQL_SMALL_RESULT'","'SSL'","'STACKED'","'STARTING'","'STATEMENT'","'STRAIGHT_JOIN'","'TABLE'","'TERMINATED'","'THEN'","'TO'","'TRAILING'","'TRIGGER'","'TRUE'","'UNDO'","'UNION'","'UNIQUE'","'UNLOCK'","'UNSIGNED'","'UPDATE'","'USAGE'","'USE'","'USING'","'VALUES'","'WHEN'","'WHERE'","'WHILE'","'WITH'","'WRITE'","'XOR'","'ZEROFILL'","'TINYINT'","'SMALLINT'","'MEDIUMINT'","'MIDDLEINT'","'INT'","'INT1'","'INT2'","'INT3'","'INT4'","'INT8'","'INTEGER'","'BIGINT'","'REAL'","'DOUBLE'","'PRECISION'","'FLOAT'","'FLOAT4'","'FLOAT8'","'DECIMAL'","'DEC'","'NUMERIC'","'DATE'","'TIME'","'TIMESTAMP'","'DATETIME'","'YEAR'","'CHAR'","'VARCHAR'","'NVARCHAR'","'NATIONAL'","'BINARY'","'VARBINARY'","'TINYBLOB'","'BLOB'","'MEDIUMBLOB'","'LONG'","'LONGBLOB'","'TINYTEXT'","'TEXT'","'MEDIUMTEXT'","'LONGTEXT'","'ENUM'","'VARYING'","'SERIAL'","'YEAR_MONTH'","'DAY_HOUR'","'DAY_MINUTE'","'DAY_SECOND'","'HOUR_MINUTE'","'HOUR_SECOND'","'MINUTE_SECOND'","'SECOND_MICROSECOND'","'MINUTE_MICROSECOND'","'HOUR_MICROSECOND'","'DAY_MICROSECOND'","'JSON_ARRAY'","'JSON_ARRAYAGG'","'JSON_ARRAY_APPEND'","'JSON_ARRAY_INSERT'","'JSON_CONTAINS'","'JSON_CONTAINS_PATH'","'JSON_DEPTH'","'JSON_EXTRACT'","'JSON_INSERT'","'JSON_KEYS'","'JSON_LENGTH'","'JSON_MERGE'","'JSON_MERGE_PATCH'","'JSON_MERGE_PRESERVE'","'JSON_OBJECT'","'JSON_OBJECTAGG'","'JSON_OVERLAPS'","'JSON_PRETTY'","'JSON_QUOTE'","'JSON_REMOVE'","'JSON_REPLACE'","'JSON_SCHEMA_VALID'","'JSON_SCHEMA_VALIDATION_REPORT'","'JSON_SEARCH'","'JSON_SET'","'JSON_STORAGE_FREE'","'JSON_STORAGE_SIZE'","'JSON_TABLE'","'JSON_TYPE'","'JSON_UNQUOTE'","'JSON_VALID'","'JSON_VALUE'","'NESTED'","'ORDINALITY'","'PATH'","'AVG'","'BIT_AND'","'BIT_OR'","'BIT_XOR'","'COUNT'","'CUME_DIST'","'DENSE_RANK'","'FIRST_VALUE'","'GROUP_CONCAT'","'LAG'","'LAST_VALUE'","'LEAD'","'MAX'","'MIN'","'NTILE'","'NTH_VALUE'","'PERCENT_RANK'","'RANK'","'ROW_NUMBER'","'STD'","'STDDEV'","'STDDEV_POP'","'STDDEV_SAMP'","'SUM'","'VAR_POP'","'VAR_SAMP'","'VARIANCE'","'CURRENT_DATE'","'CURRENT_TIME'","'CURRENT_TIMESTAMP'","'LOCALTIME'","'CURDATE'","'CURTIME'","'DATE_ADD'","'DATE_SUB'","'EXTRACT'","'LOCALTIMESTAMP'","'NOW'","'POSITION'","'SUBSTR'","'SUBSTRING'","'SYSDATE'","'TRIM'","'UTC_DATE'","'UTC_TIME'","'UTC_TIMESTAMP'","'ACCOUNT'","'ACTION'","'AFTER'","'AGGREGATE'","'ALGORITHM'","'ANY'","'AT'","'AUTHORS'","'AUTOCOMMIT'","'AUTOEXTEND_SIZE'","'AUTO_INCREMENT'","'AVG_ROW_LENGTH'","'BEGIN'","'BINLOG'","'BIT'","'BLOCK'","'BOOL'","'BOOLEAN'","'BTREE'","'CACHE'","'CASCADED'","'CHAIN'","'CHANGED'","'CHANNEL'","'CHECKSUM'","'PAGE_CHECKSUM'","'CIPHER'","'CLASS_ORIGIN'","'CLIENT'","'CLOSE'","'CLUSTERING'","'COALESCE'","'CODE'","'COLUMNS'","'COLUMN_FORMAT'","'COLUMN_NAME'","'COMMENT'","'COMMIT'","'COMPACT'","'COMPLETION'","'COMPRESSED'","'COMPRESSION'","'CONCURRENT'","'CONNECT'","'CONNECTION'","'CONSISTENT'","'CONSTRAINT_CATALOG'","'CONSTRAINT_SCHEMA'","'CONSTRAINT_NAME'","'CONTAINS'","'CONTEXT'","'CONTRIBUTORS'","'COPY'","'CPU'","'CYCLE'","'CURSOR_NAME'","'DATA'","'DATAFILE'","'DEALLOCATE'","'DEFAULT_AUTH'","'DEFINER'","'DELAY_KEY_WRITE'","'DES_KEY_FILE'","'DIRECTORY'","'DISABLE'","'DISCARD'","'DISK'","'DO'","'DUMPFILE'","'DUPLICATE'","'DYNAMIC'","'ENABLE'","'ENCRYPTED'","'ENCRYPTION'","'ENCRYPTION_KEY_ID'","'END'","'ENDS'","'ENGINE'","'ENGINES'","'ERROR'","'ERRORS'","'ESCAPE'","'EVEN'","'EVENT'","'EVENTS'","'EVERY'","'EXCHANGE'","'EXCLUSIVE'","'EXPIRE'","'EXPORT'","'EXTENDED'","'EXTENT_SIZE'","'FAILED_LOGIN_ATTEMPTS'","'FAST'","'FAULTS'","'FIELDS'","'FILE_BLOCK_SIZE'","'FILTER'","'FIRST'","'FIXED'","'FLUSH'","'FOLLOWING'","'FOLLOWS'","'FOUND'","'FULL'","'FUNCTION'","'GENERAL'","'GLOBAL'","'GRANTS'","'GROUP_REPLICATION'","'HANDLER'","'HASH'","'HELP'","'HISTORY'","'HOST'","'HOSTS'","'IDENTIFIED'","'IGNORE_SERVER_IDS'","'IMPORT'","'INCREMENT'","'INDEXES'","'INITIAL_SIZE'","'INPLACE'","'INSERT_METHOD'","'INSTALL'","'INSTANCE'","'INSTANT'","'INVISIBLE'","'INVOKER'","'IO'","'IO_THREAD'","'IPC'","'ISOLATION'","'ISSUER'","'JSON'","'KEY_BLOCK_SIZE'","'LANGUAGE'","'LAST'","'LEAVES'","'LESS'","'LEVEL'","'LIST'","'LOCAL'","'LOGFILE'","'LOGS'","'MASTER'","'MASTER_AUTO_POSITION'","'MASTER_CONNECT_RETRY'","'MASTER_DELAY'","'MASTER_HEARTBEAT_PERIOD'","'MASTER_HOST'","'MASTER_LOG_FILE'","'MASTER_LOG_POS'","'MASTER_PASSWORD'","'MASTER_PORT'","'MASTER_RETRY_COUNT'","'MASTER_SSL'","'MASTER_SSL_CA'","'MASTER_SSL_CAPATH'","'MASTER_SSL_CERT'","'MASTER_SSL_CIPHER'","'MASTER_SSL_CRL'","'MASTER_SSL_CRLPATH'","'MASTER_SSL_KEY'","'MASTER_TLS_VERSION'","'MASTER_USER'","'MAX_CONNECTIONS_PER_HOUR'","'MAX_QUERIES_PER_HOUR'","'MAX_ROWS'","'MAX_SIZE'","'MAX_UPDATES_PER_HOUR'","'MAX_USER_CONNECTIONS'","'MEDIUM'","'MEMBER'","'MERGE'","'MESSAGE_TEXT'","'MID'","'MIGRATE'","'MIN_ROWS'","'MODE'","'MODIFY'","'MUTEX'","'MYSQL'","'MYSQL_ERRNO'","'NAME'","'NAMES'","'NCHAR'","'NEVER'","'NEXT'","'NO'","'NOCACHE'","'NOCOPY'","'NOCYCLE'","'NOMAXVALUE'","'NOMINVALUE'","'NOWAIT'","'NODEGROUP'","'NONE'","'ODBC'","'OFFLINE'","'OFFSET'","'OF'","'OJ'","'OLD_PASSWORD'","'ONE'","'ONLINE'","'ONLY'","'OPEN'","'OPTIMIZER_COSTS'","'OPTIONS'","'OWNER'","'PACK_KEYS'","'PAGE'","'PAGE_COMPRESSED'","'PAGE_COMPRESSION_LEVEL'","'PARSER'","'PARTIAL'","'PARTITIONING'","'PARTITIONS'","'PASSWORD'","'PASSWORD_LOCK_TIME'","'PHASE'","'PLUGIN'","'PLUGIN_DIR'","'PLUGINS'","'PORT'","'PRECEDES'","'PRECEDING'","'PREPARE'","'PRESERVE'","'PREV'","'PROCESSLIST'","'PROFILE'","'PROFILES'","'PROXY'","'QUERY'","'QUICK'","'REBUILD'","'RECOVER'","'RECURSIVE'","'REDO_BUFFER_SIZE'","'REDUNDANT'","'RELAY'","'RELAY_LOG_FILE'","'RELAY_LOG_POS'","'RELAYLOG'","'REMOVE'","'REORGANIZE'","'REPAIR'","'REPLICATE_DO_DB'","'REPLICATE_DO_TABLE'","'REPLICATE_IGNORE_DB'","'REPLICATE_IGNORE_TABLE'","'REPLICATE_REWRITE_DB'","'REPLICATE_WILD_DO_TABLE'","'REPLICATE_WILD_IGNORE_TABLE'","'REPLICATION'","'RESET'","'RESTART'","'RESUME'","'RETURNED_SQLSTATE'","'RETURNING'","'RETURNS'","'REUSE'","'ROLE'","'ROLLBACK'","'ROLLUP'","'ROTATE'","'ROW'","'ROWS'","'ROW_FORMAT'","'RTREE'","'SAVEPOINT'","'SCHEDULE'","'SECURITY'","'SEQUENCE'","'SERVER'","'SESSION'","'SHARE'","'SHARED'","'SIGNED'","'SIMPLE'","'SLAVE'","'SLOW'","'SNAPSHOT'","'SOCKET'","'SOME'","'SONAME'","'SOUNDS'","'SOURCE'","'SQL_AFTER_GTIDS'","'SQL_AFTER_MTS_GAPS'","'SQL_BEFORE_GTIDS'","'SQL_BUFFER_RESULT'","'SQL_CACHE'","'SQL_NO_CACHE'","'SQL_THREAD'","'START'","'STARTS'","'STATS_AUTO_RECALC'","'STATS_PERSISTENT'","'STATS_SAMPLE_PAGES'","'STATUS'","'STOP'","'STORAGE'","'STORED'","'STRING'","'SUBCLASS_ORIGIN'","'SUBJECT'","'SUBPARTITION'","'SUBPARTITIONS'","'SUSPEND'","'SWAPS'","'SWITCHES'","'TABLE_NAME'","'TABLESPACE'","'TABLE_TYPE'","'TEMPORARY'","'TEMPTABLE'","'THAN'","'TRADITIONAL'","'TRANSACTION'","'TRANSACTIONAL'","'TRIGGERS'","'TRUNCATE'","'UNBOUNDED'","'UNDEFINED'","'UNDOFILE'","'UNDO_BUFFER_SIZE'","'UNINSTALL'","'UNKNOWN'","'UNTIL'","'UPGRADE'","'USER'","'USE_FRM'","'USER_RESOURCES'","'VALIDATION'","'VALUE'","'VARIABLES'","'VIEW'","'VIRTUAL'","'VISIBLE'","'WAIT'","'WARNINGS'","'WINDOW'","'WITHOUT'","'WORK'","'WRAPPER'","'X509'","'XA'","'XML'","'YES'","'EUR'","'USA'","'JIS'","'ISO'","'INTERNAL'","'QUARTER'","'MONTH'","'DAY'","'HOUR'","'MINUTE'","'WEEK'","'SECOND'","'MICROSECOND'","'ADMIN'","'APPLICATION_PASSWORD_ADMIN'","'AUDIT_ABORT_EXEMPT'","'AUDIT_ADMIN'","'AUTHENTICATION_POLICY_ADMIN'","'BACKUP_ADMIN'","'BINLOG_ADMIN'","'BINLOG_ENCRYPTION_ADMIN'","'CLONE_ADMIN'","'CONNECTION_ADMIN'","'ENCRYPTION_KEY_ADMIN'","'EXECUTE'","'FILE'","'FIREWALL_ADMIN'","'FIREWALL_EXEMPT'","'FIREWALL_USER'","'FLUSH_OPTIMIZER_COSTS'","'FLUSH_STATUS'","'FLUSH_TABLES'","'FLUSH_USER_RESOURCES'","'GROUP_REPLICATION_ADMIN'","'INNODB_REDO_LOG_ARCHIVE'","'INNODB_REDO_LOG_ENABLE'","'INVOKE'","'LAMBDA'","'NDB_STORED_USER'","'PASSWORDLESS_USER_ADMIN'","'PERSIST_RO_VARIABLES_ADMIN'","'PRIVILEGES'","'PROCESS'","'RELOAD'","'REPLICATION_APPLIER'","'REPLICATION_SLAVE_ADMIN'","'RESOURCE_GROUP_ADMIN'","'RESOURCE_GROUP_USER'","'ROLE_ADMIN'","'ROUTINE'","'S3'","'SERVICE_CONNECTION_ADMIN'",null,"'SET_USER_ID'","'SHOW_ROUTINE'","'SHUTDOWN'","'SUPER'","'SYSTEM_VARIABLES_ADMIN'","'TABLES'","'TABLE_ENCRYPTION_ADMIN'","'VERSION_TOKEN_ADMIN'","'XA_RECOVER_ADMIN'","'ARMSCII8'","'ASCII'","'BIG5'","'CP1250'","'CP1251'","'CP1256'","'CP1257'","'CP850'","'CP852'","'CP866'","'CP932'","'DEC8'","'EUCJPMS'","'EUCKR'","'GB18030'","'GB2312'","'GBK'","'GEOSTD8'","'GREEK'","'HEBREW'","'HP8'","'KEYBCS2'","'KOI8R'","'KOI8U'","'LATIN1'","'LATIN2'","'LATIN5'","'LATIN7'","'MACCE'","'MACROMAN'","'SJIS'","'SWE7'","'TIS620'","'UCS2'","'UJIS'","'UTF16'","'UTF16LE'","'UTF32'","'UTF8'","'UTF8MB3'","'UTF8MB4'","'ARCHIVE'","'BLACKHOLE'","'CSV'","'FEDERATED'","'INNODB'","'MEMORY'","'MRG_MYISAM'","'MYISAM'","'NDB'","'NDBCLUSTER'","'PERFORMANCE_SCHEMA'","'TOKUDB'","'REPEATABLE'","'COMMITTED'","'UNCOMMITTED'","'SERIALIZABLE'","'GEOMETRYCOLLECTION'","'GEOMCOLLECTION'","'GEOMETRY'","'LINESTRING'","'MULTILINESTRING'","'MULTIPOINT'","'MULTIPOLYGON'","'POINT'","'POLYGON'","'ABS'","'ACOS'","'ADDDATE'","'ADDTIME'","'AES_DECRYPT'","'AES_ENCRYPT'","'AREA'","'ASBINARY'","'ASIN'","'ASTEXT'","'ASWKB'","'ASWKT'","'ASYMMETRIC_DECRYPT'","'ASYMMETRIC_DERIVE'","'ASYMMETRIC_ENCRYPT'","'ASYMMETRIC_SIGN'","'ASYMMETRIC_VERIFY'","'ATAN'","'ATAN2'","'BENCHMARK'","'BIN'","'BIT_COUNT'","'BIT_LENGTH'","'BUFFER'","'CATALOG_NAME'","'CEIL'","'CEILING'","'CENTROID'","'CHARACTER_LENGTH'","'CHARSET'","'CHAR_LENGTH'","'COERCIBILITY'","'COLLATION'","'COMPRESS'","'CONCAT'","'CONCAT_WS'","'CONNECTION_ID'","'CONV'","'CONVERT_TZ'","'COS'","'COT'","'CRC32'","'CREATE_ASYMMETRIC_PRIV_KEY'","'CREATE_ASYMMETRIC_PUB_KEY'","'CREATE_DH_PARAMETERS'","'CREATE_DIGEST'","'CROSSES'","'DATEDIFF'","'DATE_FORMAT'","'DAYNAME'","'DAYOFMONTH'","'DAYOFWEEK'","'DAYOFYEAR'","'DECODE'","'DEGREES'","'DES_DECRYPT'","'DES_ENCRYPT'","'DIMENSION'","'DISJOINT'","'ELT'","'ENCODE'","'ENCRYPT'","'ENDPOINT'","'ENGINE_ATTRIBUTE'","'ENVELOPE'","'EQUALS'","'EXP'","'EXPORT_SET'","'EXTERIORRING'","'EXTRACTVALUE'","'FIELD'","'FIND_IN_SET'","'FLOOR'","'FORMAT'","'FOUND_ROWS'","'FROM_BASE64'","'FROM_DAYS'","'FROM_UNIXTIME'","'GEOMCOLLFROMTEXT'","'GEOMCOLLFROMWKB'","'GEOMETRYCOLLECTIONFROMTEXT'","'GEOMETRYCOLLECTIONFROMWKB'","'GEOMETRYFROMTEXT'","'GEOMETRYFROMWKB'","'GEOMETRYN'","'GEOMETRYTYPE'","'GEOMFROMTEXT'","'GEOMFROMWKB'","'GET_FORMAT'","'GET_LOCK'","'GLENGTH'","'GREATEST'","'GTID_SUBSET'","'GTID_SUBTRACT'","'HEX'","'IFNULL'","'INET6_ATON'","'INET6_NTOA'","'INET_ATON'","'INET_NTOA'","'INSTR'","'INTERIORRINGN'","'INTERSECTS'","'ISCLOSED'","'ISEMPTY'","'ISNULL'","'ISSIMPLE'","'IS_FREE_LOCK'","'IS_IPV4'","'IS_IPV4_COMPAT'","'IS_IPV4_MAPPED'","'IS_IPV6'","'IS_USED_LOCK'","'LAST_INSERT_ID'","'LCASE'","'LEAST'","'LENGTH'","'LINEFROMTEXT'","'LINEFROMWKB'","'LINESTRINGFROMTEXT'","'LINESTRINGFROMWKB'","'LN'","'LOAD_FILE'","'LOCATE'","'LOG'","'LOG10'","'LOG2'","'LOWER'","'LPAD'","'LTRIM'","'MAKEDATE'","'MAKETIME'","'MAKE_SET'","'MASTER_POS_WAIT'","'MBRCONTAINS'","'MBRDISJOINT'","'MBREQUAL'","'MBRINTERSECTS'","'MBROVERLAPS'","'MBRTOUCHES'","'MBRWITHIN'","'MD5'","'MLINEFROMTEXT'","'MLINEFROMWKB'","'MONTHNAME'","'MPOINTFROMTEXT'","'MPOINTFROMWKB'","'MPOLYFROMTEXT'","'MPOLYFROMWKB'","'MULTILINESTRINGFROMTEXT'","'MULTILINESTRINGFROMWKB'","'MULTIPOINTFROMTEXT'","'MULTIPOINTFROMWKB'","'MULTIPOLYGONFROMTEXT'","'MULTIPOLYGONFROMWKB'","'NAME_CONST'","'NULLIF'","'NUMGEOMETRIES'","'NUMINTERIORRINGS'","'NUMPOINTS'","'OCT'","'OCTET_LENGTH'","'ORD'","'OVERLAPS'","'PERIOD_ADD'","'PERIOD_DIFF'","'PI'","'POINTFROMTEXT'","'POINTFROMWKB'","'POINTN'","'POLYFROMTEXT'","'POLYFROMWKB'","'POLYGONFROMTEXT'","'POLYGONFROMWKB'","'POW'","'POWER'","'QUOTE'","'RADIANS'","'RAND'","'RANDOM'","'RANDOM_BYTES'","'RELEASE_LOCK'","'REVERSE'","'ROUND'","'ROW_COUNT'","'RPAD'","'RTRIM'","'SEC_TO_TIME'","'SECONDARY_ENGINE_ATTRIBUTE'","'SESSION_USER'","'SHA'","'SHA1'","'SHA2'","'SCHEMA_NAME'","'SIGN'","'SIN'","'SLEEP'","'SOUNDEX'","'SQL_THREAD_WAIT_AFTER_GTIDS'","'SQRT'","'SRID'","'STARTPOINT'","'STRCMP'","'STR_TO_DATE'","'ST_AREA'","'ST_ASBINARY'","'ST_ASTEXT'","'ST_ASWKB'","'ST_ASWKT'","'ST_BUFFER'","'ST_CENTROID'","'ST_CONTAINS'","'ST_CROSSES'","'ST_DIFFERENCE'","'ST_DIMENSION'","'ST_DISJOINT'","'ST_DISTANCE'","'ST_ENDPOINT'","'ST_ENVELOPE'","'ST_EQUALS'","'ST_EXTERIORRING'","'ST_GEOMCOLLFROMTEXT'","'ST_GEOMCOLLFROMTXT'","'ST_GEOMCOLLFROMWKB'","'ST_GEOMETRYCOLLECTIONFROMTEXT'","'ST_GEOMETRYCOLLECTIONFROMWKB'","'ST_GEOMETRYFROMTEXT'","'ST_GEOMETRYFROMWKB'","'ST_GEOMETRYN'","'ST_GEOMETRYTYPE'","'ST_GEOMFROMTEXT'","'ST_GEOMFROMWKB'","'ST_INTERIORRINGN'","'ST_INTERSECTION'","'ST_INTERSECTS'","'ST_ISCLOSED'","'ST_ISEMPTY'","'ST_ISSIMPLE'","'ST_LINEFROMTEXT'","'ST_LINEFROMWKB'","'ST_LINESTRINGFROMTEXT'","'ST_LINESTRINGFROMWKB'","'ST_NUMGEOMETRIES'","'ST_NUMINTERIORRING'","'ST_NUMINTERIORRINGS'","'ST_NUMPOINTS'","'ST_OVERLAPS'","'ST_POINTFROMTEXT'","'ST_POINTFROMWKB'","'ST_POINTN'","'ST_POLYFROMTEXT'","'ST_POLYFROMWKB'","'ST_POLYGONFROMTEXT'","'ST_POLYGONFROMWKB'","'ST_SRID'","'ST_STARTPOINT'","'ST_SYMDIFFERENCE'","'ST_TOUCHES'","'ST_UNION'","'ST_WITHIN'","'ST_X'","'ST_Y'","'SUBDATE'","'SUBSTRING_INDEX'","'SUBTIME'","'SYSTEM_USER'","'TAN'","'TIMEDIFF'","'TIMESTAMPADD'","'TIMESTAMPDIFF'","'TIME_FORMAT'","'TIME_TO_SEC'","'TOUCHES'","'TO_BASE64'","'TO_DAYS'","'TO_SECONDS'","'TP_CONNECTION_ADMIN'","'UCASE'","'UNCOMPRESS'","'UNCOMPRESSED_LENGTH'","'UNHEX'","'UNIX_TIMESTAMP'","'UPDATEXML'","'UPPER'","'UUID'","'UUID_SHORT'","'VALIDATE_PASSWORD_STRENGTH'","'VERSION'","'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'","'WEEKDAY'","'WEEKOFYEAR'","'WEIGHT_STRING'","'WITHIN'","'YEARWEEK'","'Y'","'X'","':='","'+='","'-='","'*='","'/='","'%='","'&='","'^='","'|='","'*'","'/'","'%'","'+'","'-'","'DIV'","'MOD'","'='","'>'","'<'","'!'","'~'","'|'","'&'","'^'","'.'","'('","')'","','","';'","'@'","'0'","'1'","'2'","'''","'\"'","'`'","':'"],Qi.symbolicNames=[null,"SPACE","SPEC_MYSQL_COMMENT","COMMENT_INPUT","LINE_COMMENT","ADD","ALL","ALTER","ALWAYS","ANALYZE","AND","ARRAY","AS","ASC","ATTRIBUTE","BEFORE","BETWEEN","BOTH","BUCKETS","BY","CALL","CASCADE","CASE","CAST","CHANGE","CHARACTER","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT","CURRENT_ROLE","CURRENT_USER","CURSOR","DATABASE","DATABASES","DECLARE","DEFAULT","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DIAGNOSTICS","DISTINCT","DISTINCTROW","DROP","EACH","ELSE","ELSEIF","EMPTY","ENCLOSED","ENFORCED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FOR","FORCE","FOREIGN","FROM","FULLTEXT","GENERATED","GET","GRANT","GROUP","HAVING","HIGH_PRIORITY","HISTOGRAM","IF","IGNORE","IGNORED","IN","INDEX","INFILE","INNER","INOUT","INSERT","INTERVAL","INTO","IS","ITERATE","JOIN","KEY","KEYS","KILL","LATERAL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCK","LOCKED","LOOP","LOW_PRIORITY","MASTER_BIND","MASTER_SSL_VERIFY_SERVER_CERT","MATCH","MAXVALUE","MINVALUE","MODIFIES","NATURAL","NOT","NO_WRITE_TO_BINLOG","NULL_LITERAL","NUMBER","ON","OPTIMIZE","OPTION","OPTIONAL","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PARTITION","PRIMARY","PROCEDURE","PURGE","RANGE","READ","READS","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESIGNAL","RESTRICT","RETAIN","RETURN","REVOKE","RIGHT","RLIKE","SCHEMA","SCHEMAS","SELECT","SET","SEPARATOR","SHOW","SIGNAL","SKIP_","SKIP_QUERY_REWRITE","SPATIAL","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STACKED","STARTING","STATEMENT","STRAIGHT_JOIN","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNDO","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USING","VALUES","WHEN","WHERE","WHILE","WITH","WRITE","XOR","ZEROFILL","TINYINT","SMALLINT","MEDIUMINT","MIDDLEINT","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","BIGINT","REAL","DOUBLE","PRECISION","FLOAT","FLOAT4","FLOAT8","DECIMAL","DEC","NUMERIC","DATE","TIME","TIMESTAMP","DATETIME","YEAR","CHAR","VARCHAR","NVARCHAR","NATIONAL","BINARY","VARBINARY","TINYBLOB","BLOB","MEDIUMBLOB","LONG","LONGBLOB","TINYTEXT","TEXT","MEDIUMTEXT","LONGTEXT","ENUM","VARYING","SERIAL","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND","SECOND_MICROSECOND","MINUTE_MICROSECOND","HOUR_MICROSECOND","DAY_MICROSECOND","JSON_ARRAY","JSON_ARRAYAGG","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_OBJECTAGG","JSON_OVERLAPS","JSON_PRETTY","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SCHEMA_VALID","JSON_SCHEMA_VALIDATION_REPORT","JSON_SEARCH","JSON_SET","JSON_STORAGE_FREE","JSON_STORAGE_SIZE","JSON_TABLE","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","JSON_VALUE","NESTED","ORDINALITY","PATH","AVG","BIT_AND","BIT_OR","BIT_XOR","COUNT","CUME_DIST","DENSE_RANK","FIRST_VALUE","GROUP_CONCAT","LAG","LAST_VALUE","LEAD","MAX","MIN","NTILE","NTH_VALUE","PERCENT_RANK","RANK","ROW_NUMBER","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","LOCALTIME","CURDATE","CURTIME","DATE_ADD","DATE_SUB","EXTRACT","LOCALTIMESTAMP","NOW","POSITION","SUBSTR","SUBSTRING","SYSDATE","TRIM","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","ACCOUNT","ACTION","AFTER","AGGREGATE","ALGORITHM","ANY","AT","AUTHORS","AUTOCOMMIT","AUTOEXTEND_SIZE","AUTO_INCREMENT","AVG_ROW_LENGTH","BEGIN","BINLOG","BIT","BLOCK","BOOL","BOOLEAN","BTREE","CACHE","CASCADED","CHAIN","CHANGED","CHANNEL","CHECKSUM","PAGE_CHECKSUM","CIPHER","CLASS_ORIGIN","CLIENT","CLOSE","CLUSTERING","COALESCE","CODE","COLUMNS","COLUMN_FORMAT","COLUMN_NAME","COMMENT","COMMIT","COMPACT","COMPLETION","COMPRESSED","COMPRESSION","CONCURRENT","CONNECT","CONNECTION","CONSISTENT","CONSTRAINT_CATALOG","CONSTRAINT_SCHEMA","CONSTRAINT_NAME","CONTAINS","CONTEXT","CONTRIBUTORS","COPY","CPU","CYCLE","CURSOR_NAME","DATA","DATAFILE","DEALLOCATE","DEFAULT_AUTH","DEFINER","DELAY_KEY_WRITE","DES_KEY_FILE","DIRECTORY","DISABLE","DISCARD","DISK","DO","DUMPFILE","DUPLICATE","DYNAMIC","ENABLE","ENCRYPTED","ENCRYPTION","ENCRYPTION_KEY_ID","END","ENDS","ENGINE","ENGINES","ERROR","ERRORS","ESCAPE","EVEN","EVENT","EVENTS","EVERY","EXCHANGE","EXCLUSIVE","EXPIRE","EXPORT","EXTENDED","EXTENT_SIZE","FAILED_LOGIN_ATTEMPTS","FAST","FAULTS","FIELDS","FILE_BLOCK_SIZE","FILTER","FIRST","FIXED","FLUSH","FOLLOWING","FOLLOWS","FOUND","FULL","FUNCTION","GENERAL","GLOBAL","GRANTS","GROUP_REPLICATION","HANDLER","HASH","HELP","HISTORY","HOST","HOSTS","IDENTIFIED","IGNORE_SERVER_IDS","IMPORT","INCREMENT","INDEXES","INITIAL_SIZE","INPLACE","INSERT_METHOD","INSTALL","INSTANCE","INSTANT","INVISIBLE","INVOKER","IO","IO_THREAD","IPC","ISOLATION","ISSUER","JSON","KEY_BLOCK_SIZE","LANGUAGE","LAST","LEAVES","LESS","LEVEL","LIST","LOCAL","LOGFILE","LOGS","MASTER","MASTER_AUTO_POSITION","MASTER_CONNECT_RETRY","MASTER_DELAY","MASTER_HEARTBEAT_PERIOD","MASTER_HOST","MASTER_LOG_FILE","MASTER_LOG_POS","MASTER_PASSWORD","MASTER_PORT","MASTER_RETRY_COUNT","MASTER_SSL","MASTER_SSL_CA","MASTER_SSL_CAPATH","MASTER_SSL_CERT","MASTER_SSL_CIPHER","MASTER_SSL_CRL","MASTER_SSL_CRLPATH","MASTER_SSL_KEY","MASTER_TLS_VERSION","MASTER_USER","MAX_CONNECTIONS_PER_HOUR","MAX_QUERIES_PER_HOUR","MAX_ROWS","MAX_SIZE","MAX_UPDATES_PER_HOUR","MAX_USER_CONNECTIONS","MEDIUM","MEMBER","MERGE","MESSAGE_TEXT","MID","MIGRATE","MIN_ROWS","MODE","MODIFY","MUTEX","MYSQL","MYSQL_ERRNO","NAME","NAMES","NCHAR","NEVER","NEXT","NO","NOCACHE","NOCOPY","NOCYCLE","NOMAXVALUE","NOMINVALUE","NOWAIT","NODEGROUP","NONE","ODBC","OFFLINE","OFFSET","OF","OJ","OLD_PASSWORD","ONE","ONLINE","ONLY","OPEN","OPTIMIZER_COSTS","OPTIONS","OWNER","PACK_KEYS","PAGE","PAGE_COMPRESSED","PAGE_COMPRESSION_LEVEL","PARSER","PARTIAL","PARTITIONING","PARTITIONS","PASSWORD","PASSWORD_LOCK_TIME","PHASE","PLUGIN","PLUGIN_DIR","PLUGINS","PORT","PRECEDES","PRECEDING","PREPARE","PRESERVE","PREV","PROCESSLIST","PROFILE","PROFILES","PROXY","QUERY","QUICK","REBUILD","RECOVER","RECURSIVE","REDO_BUFFER_SIZE","REDUNDANT","RELAY","RELAY_LOG_FILE","RELAY_LOG_POS","RELAYLOG","REMOVE","REORGANIZE","REPAIR","REPLICATE_DO_DB","REPLICATE_DO_TABLE","REPLICATE_IGNORE_DB","REPLICATE_IGNORE_TABLE","REPLICATE_REWRITE_DB","REPLICATE_WILD_DO_TABLE","REPLICATE_WILD_IGNORE_TABLE","REPLICATION","RESET","RESTART","RESUME","RETURNED_SQLSTATE","RETURNING","RETURNS","REUSE","ROLE","ROLLBACK","ROLLUP","ROTATE","ROW","ROWS","ROW_FORMAT","RTREE","SAVEPOINT","SCHEDULE","SECURITY","SEQUENCE","SERVER","SESSION","SHARE","SHARED","SIGNED","SIMPLE","SLAVE","SLOW","SNAPSHOT","SOCKET","SOME","SONAME","SOUNDS","SOURCE","SQL_AFTER_GTIDS","SQL_AFTER_MTS_GAPS","SQL_BEFORE_GTIDS","SQL_BUFFER_RESULT","SQL_CACHE","SQL_NO_CACHE","SQL_THREAD","START","STARTS","STATS_AUTO_RECALC","STATS_PERSISTENT","STATS_SAMPLE_PAGES","STATUS","STOP","STORAGE","STORED","STRING","SUBCLASS_ORIGIN","SUBJECT","SUBPARTITION","SUBPARTITIONS","SUSPEND","SWAPS","SWITCHES","TABLE_NAME","TABLESPACE","TABLE_TYPE","TEMPORARY","TEMPTABLE","THAN","TRADITIONAL","TRANSACTION","TRANSACTIONAL","TRIGGERS","TRUNCATE","UNBOUNDED","UNDEFINED","UNDOFILE","UNDO_BUFFER_SIZE","UNINSTALL","UNKNOWN","UNTIL","UPGRADE","USER","USE_FRM","USER_RESOURCES","VALIDATION","VALUE","VARIABLES","VIEW","VIRTUAL","VISIBLE","WAIT","WARNINGS","WINDOW","WITHOUT","WORK","WRAPPER","X509","XA","XML","YES","EUR","USA","JIS","ISO","INTERNAL","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","MICROSECOND","ADMIN","APPLICATION_PASSWORD_ADMIN","AUDIT_ABORT_EXEMPT","AUDIT_ADMIN","AUTHENTICATION_POLICY_ADMIN","BACKUP_ADMIN","BINLOG_ADMIN","BINLOG_ENCRYPTION_ADMIN","CLONE_ADMIN","CONNECTION_ADMIN","ENCRYPTION_KEY_ADMIN","EXECUTE","FILE","FIREWALL_ADMIN","FIREWALL_EXEMPT","FIREWALL_USER","FLUSH_OPTIMIZER_COSTS","FLUSH_STATUS","FLUSH_TABLES","FLUSH_USER_RESOURCES","GROUP_REPLICATION_ADMIN","INNODB_REDO_LOG_ARCHIVE","INNODB_REDO_LOG_ENABLE","INVOKE","LAMBDA","NDB_STORED_USER","PASSWORDLESS_USER_ADMIN","PERSIST_RO_VARIABLES_ADMIN","PRIVILEGES","PROCESS","RELOAD","REPLICATION_APPLIER","REPLICATION_SLAVE_ADMIN","RESOURCE_GROUP_ADMIN","RESOURCE_GROUP_USER","ROLE_ADMIN","ROUTINE","S3","SERVICE_CONNECTION_ADMIN","SESSION_VARIABLES_ADMIN","SET_USER_ID","SHOW_ROUTINE","SHUTDOWN","SUPER","SYSTEM_VARIABLES_ADMIN","TABLES","TABLE_ENCRYPTION_ADMIN","VERSION_TOKEN_ADMIN","XA_RECOVER_ADMIN","ARMSCII8","ASCII","BIG5","CP1250","CP1251","CP1256","CP1257","CP850","CP852","CP866","CP932","DEC8","EUCJPMS","EUCKR","GB18030","GB2312","GBK","GEOSTD8","GREEK","HEBREW","HP8","KEYBCS2","KOI8R","KOI8U","LATIN1","LATIN2","LATIN5","LATIN7","MACCE","MACROMAN","SJIS","SWE7","TIS620","UCS2","UJIS","UTF16","UTF16LE","UTF32","UTF8","UTF8MB3","UTF8MB4","ARCHIVE","BLACKHOLE","CSV","FEDERATED","INNODB","MEMORY","MRG_MYISAM","MYISAM","NDB","NDBCLUSTER","PERFORMANCE_SCHEMA","TOKUDB","REPEATABLE","COMMITTED","UNCOMMITTED","SERIALIZABLE","GEOMETRYCOLLECTION","GEOMCOLLECTION","GEOMETRY","LINESTRING","MULTILINESTRING","MULTIPOINT","MULTIPOLYGON","POINT","POLYGON","ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","AREA","ASBINARY","ASIN","ASTEXT","ASWKB","ASWKT","ASYMMETRIC_DECRYPT","ASYMMETRIC_DERIVE","ASYMMETRIC_ENCRYPT","ASYMMETRIC_SIGN","ASYMMETRIC_VERIFY","ATAN","ATAN2","BENCHMARK","BIN","BIT_COUNT","BIT_LENGTH","BUFFER","CATALOG_NAME","CEIL","CEILING","CENTROID","CHARACTER_LENGTH","CHARSET","CHAR_LENGTH","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT_TZ","COS","COT","CRC32","CREATE_ASYMMETRIC_PRIV_KEY","CREATE_ASYMMETRIC_PUB_KEY","CREATE_DH_PARAMETERS","CREATE_DIGEST","CROSSES","DATEDIFF","DATE_FORMAT","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEGREES","DES_DECRYPT","DES_ENCRYPT","DIMENSION","DISJOINT","ELT","ENCODE","ENCRYPT","ENDPOINT","ENGINE_ATTRIBUTE","ENVELOPE","EQUALS","EXP","EXPORT_SET","EXTERIORRING","EXTRACTVALUE","FIELD","FIND_IN_SET","FLOOR","FORMAT","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GEOMCOLLFROMTEXT","GEOMCOLLFROMWKB","GEOMETRYCOLLECTIONFROMTEXT","GEOMETRYCOLLECTIONFROMWKB","GEOMETRYFROMTEXT","GEOMETRYFROMWKB","GEOMETRYN","GEOMETRYTYPE","GEOMFROMTEXT","GEOMFROMWKB","GET_FORMAT","GET_LOCK","GLENGTH","GREATEST","GTID_SUBSET","GTID_SUBTRACT","HEX","IFNULL","INET6_ATON","INET6_NTOA","INET_ATON","INET_NTOA","INSTR","INTERIORRINGN","INTERSECTS","ISCLOSED","ISEMPTY","ISNULL","ISSIMPLE","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS_USED_LOCK","LAST_INSERT_ID","LCASE","LEAST","LENGTH","LINEFROMTEXT","LINEFROMWKB","LINESTRINGFROMTEXT","LINESTRINGFROMWKB","LN","LOAD_FILE","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","MAKEDATE","MAKETIME","MAKE_SET","MASTER_POS_WAIT","MBRCONTAINS","MBRDISJOINT","MBREQUAL","MBRINTERSECTS","MBROVERLAPS","MBRTOUCHES","MBRWITHIN","MD5","MLINEFROMTEXT","MLINEFROMWKB","MONTHNAME","MPOINTFROMTEXT","MPOINTFROMWKB","MPOLYFROMTEXT","MPOLYFROMWKB","MULTILINESTRINGFROMTEXT","MULTILINESTRINGFROMWKB","MULTIPOINTFROMTEXT","MULTIPOINTFROMWKB","MULTIPOLYGONFROMTEXT","MULTIPOLYGONFROMWKB","NAME_CONST","NULLIF","NUMGEOMETRIES","NUMINTERIORRINGS","NUMPOINTS","OCT","OCTET_LENGTH","ORD","OVERLAPS","PERIOD_ADD","PERIOD_DIFF","PI","POINTFROMTEXT","POINTFROMWKB","POINTN","POLYFROMTEXT","POLYFROMWKB","POLYGONFROMTEXT","POLYGONFROMWKB","POW","POWER","QUOTE","RADIANS","RAND","RANDOM","RANDOM_BYTES","RELEASE_LOCK","REVERSE","ROUND","ROW_COUNT","RPAD","RTRIM","SEC_TO_TIME","SECONDARY_ENGINE_ATTRIBUTE","SESSION_USER","SHA","SHA1","SHA2","SCHEMA_NAME","SIGN","SIN","SLEEP","SOUNDEX","SQL_THREAD_WAIT_AFTER_GTIDS","SQRT","SRID","STARTPOINT","STRCMP","STR_TO_DATE","ST_AREA","ST_ASBINARY","ST_ASTEXT","ST_ASWKB","ST_ASWKT","ST_BUFFER","ST_CENTROID","ST_CONTAINS","ST_CROSSES","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_ENDPOINT","ST_ENVELOPE","ST_EQUALS","ST_EXTERIORRING","ST_GEOMCOLLFROMTEXT","ST_GEOMCOLLFROMTXT","ST_GEOMCOLLFROMWKB","ST_GEOMETRYCOLLECTIONFROMTEXT","ST_GEOMETRYCOLLECTIONFROMWKB","ST_GEOMETRYFROMTEXT","ST_GEOMETRYFROMWKB","ST_GEOMETRYN","ST_GEOMETRYTYPE","ST_GEOMFROMTEXT","ST_GEOMFROMWKB","ST_INTERIORRINGN","ST_INTERSECTION","ST_INTERSECTS","ST_ISCLOSED","ST_ISEMPTY","ST_ISSIMPLE","ST_LINEFROMTEXT","ST_LINEFROMWKB","ST_LINESTRINGFROMTEXT","ST_LINESTRINGFROMWKB","ST_NUMGEOMETRIES","ST_NUMINTERIORRING","ST_NUMINTERIORRINGS","ST_NUMPOINTS","ST_OVERLAPS","ST_POINTFROMTEXT","ST_POINTFROMWKB","ST_POINTN","ST_POLYFROMTEXT","ST_POLYFROMWKB","ST_POLYGONFROMTEXT","ST_POLYGONFROMWKB","ST_SRID","ST_STARTPOINT","ST_SYMDIFFERENCE","ST_TOUCHES","ST_UNION","ST_WITHIN","ST_X","ST_Y","SUBDATE","SUBSTRING_INDEX","SUBTIME","SYSTEM_USER","TAN","TIMEDIFF","TIMESTAMPADD","TIMESTAMPDIFF","TIME_FORMAT","TIME_TO_SEC","TOUCHES","TO_BASE64","TO_DAYS","TO_SECONDS","TP_CONNECTION_ADMIN","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UUID","UUID_SHORT","VALIDATE_PASSWORD_STRENGTH","VERSION","WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","WITHIN","YEARWEEK","Y_FUNCTION","X_FUNCTION","VAR_ASSIGN","PLUS_ASSIGN","MINUS_ASSIGN","MULT_ASSIGN","DIV_ASSIGN","MOD_ASSIGN","AND_ASSIGN","XOR_ASSIGN","OR_ASSIGN","STAR","DIVIDE","MODULE","PLUS","MINUS","DIV","MOD","EQUAL_SYMBOL","GREATER_SYMBOL","LESS_SYMBOL","EXCLAMATION_SYMBOL","BIT_NOT_OP","BIT_OR_OP","BIT_AND_OP","BIT_XOR_OP","DOT","LR_BRACKET","RR_BRACKET","COMMA","SEMI","AT_SIGN","ZERO_DECIMAL","ONE_DECIMAL","TWO_DECIMAL","SINGLE_QUOTE_SYMB","DOUBLE_QUOTE_SYMB","REVERSE_QUOTE_SYMB","COLON_SYMB","CHARSET_REVERSE_QOUTE_STRING","FILESIZE_LITERAL","START_NATIONAL_STRING_LITERAL","STRING_LITERAL","DECIMAL_LITERAL","HEXADECIMAL_LITERAL","REAL_LITERAL","NULL_SPEC_LITERAL","BIT_STRING","STRING_CHARSET_NAME","DOT_ID","ID","REVERSE_QUOTE_ID","HOST_IP_ADDRESS","LOCAL_ID","GLOBAL_ID","ERROR_RECONGNIGION"],Qi.ruleNames=["root","statements","statement","ddlStatement","dmlStatement","transactionStatement","replicationStatement","preparedStatement","compoundStatement","administrationStatement","utilityStatement","createDatabase","createEvent","createIndex","createLogfileGroup","createProcedure","createFunction","createRole","createServer","createTable","createTablespaceInnodb","createTablespaceNdb","createTrigger","withClause","commonTableExpressions","cteName","cteColumnName","createView","createDatabaseOption","charSet","currentUserExpression","ownerStatement","scheduleExpression","timestampValue","intervalExpr","intervalType","enableType","indexType","indexOption","procedureParameter","functionParameter","routineOption","serverOption","createDefinitions","createDefinition","columnDefinition","columnConstraint","tableConstraint","referenceDefinition","referenceAction","referenceControlType","indexColumnDefinition","tableOption","tableType","tablespaceStorage","partitionDefinitions","partitionFunctionDefinition","subpartitionFunctionDefinition","partitionDefinition","partitionDefinerAtom","partitionDefinerVector","subpartitionDefinition","partitionOption","alterDatabase","alterEvent","alterFunction","alterInstance","alterLogfileGroup","alterProcedure","alterServer","alterTable","alterTablespace","alterView","alterSpecification","alterPartitionSpecification","dropDatabase","dropEvent","dropIndex","dropLogfileGroup","dropProcedure","dropFunction","dropServer","dropTable","dropTablespace","dropTrigger","dropView","dropRole","setRole","renameTable","renameTableClause","truncateTable","callStatement","deleteStatement","doStatement","handlerStatement","insertStatement","loadDataStatement","loadXmlStatement","replaceStatement","selectStatement","updateStatement","valuesStatement","insertStatementValue","updatedElement","assignmentField","lockClause","singleDeleteStatement","multipleDeleteStatement","handlerOpenStatement","handlerReadIndexStatement","handlerReadStatement","handlerCloseStatement","singleUpdateStatement","multipleUpdateStatement","orderByClause","orderByExpression","tableSources","tableSource","tableSourceItem","indexHint","indexHintType","joinPart","joinSpec","queryExpression","queryExpressionNointo","querySpecification","querySpecificationNointo","unionParenthesis","unionStatement","lateralStatement","jsonTable","jsonColumnList","jsonColumn","jsonOnEmpty","jsonOnError","selectSpec","selectElements","selectElementAlias","selectElement","selectIntoExpression","selectFieldsInto","selectLinesInto","fromClause","groupByClause","havingClause","windowClause","groupByItem","limitClause","limitClauseAtom","startTransaction","beginWork","commitWork","rollbackWork","savepointStatement","rollbackStatement","releaseStatement","lockTables","unlockTables","setAutocommitStatement","setTransactionStatement","transactionMode","lockTableElement","lockAction","transactionOption","transactionLevel","changeMaster","changeReplicationFilter","purgeBinaryLogs","resetMaster","resetSlave","startSlave","stopSlave","startGroupReplication","stopGroupReplication","masterOption","stringMasterOption","decimalMasterOption","boolMasterOption","channelOption","replicationFilter","tablePair","threadType","untilOption","connectionOption","gtuidSet","xaStartTransaction","xaEndTransaction","xaPrepareStatement","xaCommitWork","xaRollbackWork","xaRecoverWork","prepareStatement","executeStatement","deallocatePrepare","routineBody","blockStatement","caseStatement","ifStatement","iterateStatement","leaveStatement","loopStatement","repeatStatement","returnStatement","whileStatement","cursorStatement","declareVariable","declareCondition","declareCursor","declareHandler","handlerConditionValue","procedureSqlStatement","caseAlternative","elifAlternative","alterUser","createUser","dropUser","grantStatement","roleOption","grantProxy","renameUser","revokeStatement","revokeProxy","setPasswordStatement","userSpecification","newUserAuthOptionList","newUserAuthOption","authOptionClause","authenticationRule","tlsOption","userResourceOption","userPasswordOption","userLockOption","privelegeClause","privilege","privilegeLevel","renameUserClause","analyzeTable","checkTable","checksumTable","optimizeTable","repairTable","checkTableOption","createUdfunction","installPlugin","uninstallPlugin","setStatement","showStatement","variableClause","showCommonEntity","showFilter","showGlobalInfoClause","showSchemaEntity","showProfileType","binlogStatement","cacheIndexStatement","flushStatement","killStatement","loadIndexIntoCache","resetStatement","shutdownStatement","tableIndexes","flushOption","flushTableOption","loadedTableIndexes","simpleDescribeStatement","fullDescribeStatement","helpStatement","useStatement","signalStatement","resignalStatement","signalConditionInformation","withStatement","tableStatement","diagnosticsStatement","diagnosticsConditionInformationName","describeObjectClause","fullId","tableName","tableNames","userOrRoleName","userOrRoleNameList","newRoleNameList","newRoleName","roleNameList","roleName","fullColumnName","databaseName","indexName","constraintName","triggerName","indexNameList","indexColumnName","simpleUserName","hostName","userNameList","newUserName","userName","mysqlVariable","charsetName","collationName","engineName","engineNameBase","uuidSet","xid","xuidStringId","authPlugin","uid","simpleId","dottedId","decimalLiteral","fileSizeLiteral","stringLiteral","booleanLiteral","hexadecimalLiteral","nullNotnull","constant","dataType","collectionOptions","convertedDataType","lengthOneDimension","lengthTwoDimension","lengthTwoOptionalDimension","uidList","fullColumnNameList","tables","indexColumnNames","expressions","expressionsWithDefaults","constants","simpleStrings","userVariables","defaultValue","currentTimestamp","expressionOrDefault","ifExists","ifNotExists","orReplace","waitNowaitClause","functionCall","specificFunction","caseFuncAlternative","levelsInWeightString","levelInWeightListElement","aggregateWindowedFunction","nonAggregateWindowedFunction","overClause","windowSpec","windowName","frameClause","frameUnits","frameExtent","frameBetween","frameRange","partitionClause","scalarFunctionName","passwordFunctionClause","functionArgs","functionArg","expression","predicate","expressionAtom","unaryOperator","comparisonOperator","logicalOperator","bitOperator","multOperator","addOperator","jsonOperator","charsetNameBase","transactionLevelBase","privilegesBase","intervalTypeBase","dataTypeBase","keywordsCanBeId","functionNameBase"],Qi._serializedATN=[4,1,1161,7380,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350,2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356,7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361,2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367,7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372,2,373,7,373,2,374,7,374,1,0,3,0,752,8,0,1,0,1,0,1,1,1,1,3,1,758,8,1,1,1,1,1,1,1,1,1,3,1,764,8,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,773,8,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,813,8,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,828,8,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,839,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,856,8,6,1,7,1,7,1,7,3,7,861,8,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,873,8,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,3,9,900,8,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,909,8,10,1,11,1,11,1,11,3,11,914,8,11,1,11,1,11,5,11,918,8,11,10,11,12,11,921,9,11,1,12,1,12,3,12,925,8,12,1,12,1,12,3,12,929,8,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,938,8,12,1,12,3,12,941,8,12,1,12,3,12,944,8,12,1,12,1,12,3,12,948,8,12,1,12,1,12,1,12,1,13,1,13,3,13,955,8,13,1,13,3,13,958,8,13,1,13,1,13,1,13,3,13,963,8,13,1,13,1,13,1,13,1,13,5,13,969,8,13,10,13,12,13,972,9,13,1,13,1,13,3,13,976,8,13,1,13,1,13,1,13,3,13,981,8,13,1,13,5,13,984,8,13,10,13,12,13,987,9,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,3,14,998,8,14,1,14,3,14,1001,8,14,1,14,1,14,3,14,1005,8,14,1,14,3,14,1008,8,14,1,14,1,14,3,14,1012,8,14,1,14,3,14,1015,8,14,1,14,1,14,3,14,1019,8,14,1,14,3,14,1022,8,14,1,14,3,14,1025,8,14,1,14,1,14,3,14,1029,8,14,1,14,3,14,1032,8,14,1,14,1,14,3,14,1036,8,14,1,14,1,14,1,15,1,15,3,15,1042,8,15,1,15,1,15,1,15,1,15,3,15,1048,8,15,1,15,1,15,5,15,1052,8,15,10,15,12,15,1055,9,15,1,15,1,15,5,15,1059,8,15,10,15,12,15,1062,9,15,1,15,1,15,1,16,1,16,3,16,1068,8,16,1,16,3,16,1071,8,16,1,16,1,16,3,16,1075,8,16,1,16,1,16,1,16,3,16,1080,8,16,1,16,1,16,5,16,1084,8,16,10,16,12,16,1087,9,16,1,16,1,16,1,16,1,16,5,16,1093,8,16,10,16,12,16,1096,9,16,1,16,1,16,3,16,1100,8,16,1,17,1,17,1,17,3,17,1105,8,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,5,18,1121,8,18,10,18,12,18,1124,9,18,1,18,1,18,1,19,1,19,3,19,1130,8,19,1,19,1,19,3,19,1134,8,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,1144,8,19,1,19,1,19,3,19,1148,8,19,1,19,1,19,3,19,1152,8,19,1,19,1,19,3,19,1156,8,19,1,19,1,19,3,19,1160,8,19,1,19,5,19,1163,8,19,10,19,12,19,1166,9,19,3,19,1168,8,19,1,19,3,19,1171,8,19,1,19,3,19,1174,8,19,1,19,3,19,1177,8,19,1,19,1,19,1,19,1,19,3,19,1183,8,19,1,19,1,19,3,19,1187,8,19,1,19,1,19,1,19,1,19,3,19,1193,8,19,1,19,5,19,1196,8,19,10,19,12,19,1199,9,19,3,19,1201,8,19,1,19,3,19,1204,8,19,3,19,1206,8,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,3,20,1217,8,20,1,20,1,20,3,20,1221,8,20,1,20,3,20,1224,8,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1238,8,21,1,21,3,21,1241,8,21,1,21,1,21,3,21,1245,8,21,1,21,3,21,1248,8,21,1,21,1,21,3,21,1252,8,21,1,21,3,21,1255,8,21,1,21,1,21,3,21,1259,8,21,1,21,3,21,1262,8,21,1,21,1,21,3,21,1266,8,21,1,21,3,21,1269,8,21,1,21,3,21,1272,8,21,1,21,1,21,3,21,1276,8,21,1,21,3,21,1279,8,21,1,21,1,21,3,21,1283,8,21,1,21,1,21,1,22,1,22,3,22,1289,8,22,1,22,1,22,3,22,1293,8,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,1305,8,22,1,22,1,22,1,23,1,23,3,23,1311,8,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,5,24,1320,8,24,10,24,12,24,1323,9,24,1,24,1,24,3,24,1327,8,24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,1335,8,24,1,25,1,25,1,26,1,26,1,27,1,27,3,27,1343,8,27,1,27,1,27,1,27,3,27,1348,8,27,1,27,3,27,1351,8,27,1,27,1,27,1,27,3,27,1356,8,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,1364,8,27,1,27,1,27,1,27,3,27,1369,8,27,1,27,1,27,1,27,1,27,3,27,1375,8,27,1,27,1,27,1,27,3,27,1380,8,27,1,27,1,27,3,27,1384,8,27,3,27,1386,8,27,1,28,3,28,1389,8,28,1,28,1,28,3,28,1393,8,28,1,28,1,28,3,28,1397,8,28,1,28,3,28,1400,8,28,1,28,1,28,3,28,1404,8,28,1,28,1,28,3,28,1408,8,28,1,28,1,28,3,28,1412,8,28,1,28,1,28,1,28,1,28,3,28,1418,8,28,1,28,3,28,1421,8,28,1,29,1,29,1,29,1,29,1,29,3,29,1428,8,29,1,30,1,30,1,30,3,30,1433,8,30,1,31,1,31,1,31,1,31,3,31,1439,8,31,1,32,1,32,1,32,5,32,1444,8,32,10,32,12,32,1447,9,32,1,32,1,32,1,32,3,32,1452,8,32,1,32,1,32,1,32,1,32,5,32,1458,8,32,10,32,12,32,1461,9,32,3,32,1463,8,32,1,32,1,32,1,32,5,32,1468,8,32,10,32,12,32,1471,9,32,3,32,1473,8,32,3,32,1475,8,32,1,33,1,33,1,33,1,33,3,33,1481,8,33,1,34,1,34,1,34,1,34,3,34,1487,8,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,3,35,1504,8,35,1,36,1,36,1,36,1,36,1,36,3,36,1511,8,36,1,37,1,37,1,37,1,38,1,38,3,38,1518,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,1530,8,38,1,38,1,38,1,38,3,38,1535,8,38,1,38,3,38,1538,8,38,1,39,3,39,1541,8,39,1,39,1,39,1,39,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,3,41,1554,8,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,3,41,1567,8,41,1,41,1,41,1,41,3,41,1572,8,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,3,42,1588,8,42,1,43,1,43,1,43,1,43,5,43,1594,8,43,10,43,12,43,1597,9,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,3,44,1606,8,44,1,44,3,44,1609,8,44,1,44,3,44,1612,8,44,1,45,1,45,5,45,1616,8,45,10,45,12,45,1619,9,45,1,45,3,45,1622,8,45,1,45,3,45,1625,8,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1636,8,46,1,46,3,46,1639,8,46,1,46,1,46,1,46,3,46,1644,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1657,8,46,1,46,1,46,1,46,1,46,1,46,3,46,1664,8,46,1,46,1,46,1,46,1,46,1,46,3,46,1671,8,46,3,46,1673,8,46,1,46,1,46,1,46,1,46,1,46,3,46,1680,8,46,1,47,1,47,3,47,1684,8,47,3,47,1686,8,47,1,47,1,47,1,47,3,47,1691,8,47,1,47,3,47,1694,8,47,1,47,1,47,5,47,1698,8,47,10,47,12,47,1701,9,47,1,47,1,47,3,47,1705,8,47,3,47,1707,8,47,1,47,1,47,3,47,1711,8,47,1,47,3,47,1714,8,47,1,47,3,47,1717,8,47,1,47,1,47,5,47,1721,8,47,10,47,12,47,1724,9,47,1,47,1,47,3,47,1728,8,47,3,47,1730,8,47,1,47,1,47,1,47,3,47,1735,8,47,1,47,1,47,1,47,1,47,1,47,3,47,1742,8,47,3,47,1744,8,47,1,47,1,47,1,47,1,47,1,47,3,47,1751,8,47,1,48,1,48,1,48,3,48,1756,8,48,1,48,1,48,3,48,1760,8,48,1,48,3,48,1763,8,48,1,49,1,49,1,49,1,49,1,49,1,49,3,49,1771,8,49,1,49,1,49,1,49,1,49,1,49,1,49,3,49,1779,8,49,3,49,1781,8,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,3,50,1791,8,50,1,51,1,51,3,51,1795,8,51,1,51,3,51,1798,8,51,1,51,1,51,5,51,1802,8,51,10,51,12,51,1805,9,51,1,51,1,51,3,51,1809,8,51,1,51,3,51,1812,8,51,1,51,1,51,5,51,1816,8,51,10,51,12,51,1819,9,51,3,51,1821,8,51,1,52,1,52,3,52,1825,8,52,1,52,3,52,1828,8,52,1,52,1,52,3,52,1832,8,52,1,52,1,52,1,52,3,52,1837,8,52,1,52,1,52,1,52,3,52,1842,8,52,1,52,1,52,1,52,3,52,1847,8,52,1,52,1,52,3,52,1851,8,52,1,52,1,52,3,52,1855,8,52,1,52,1,52,3,52,1859,8,52,1,52,1,52,3,52,1863,8,52,1,52,1,52,3,52,1867,8,52,1,52,1,52,3,52,1871,8,52,1,52,1,52,1,52,3,52,1876,8,52,1,52,1,52,1,52,3,52,1881,8,52,1,52,1,52,1,52,3,52,1886,8,52,1,52,1,52,1,52,1,52,3,52,1892,8,52,1,52,1,52,1,52,3,52,1897,8,52,1,52,1,52,1,52,3,52,1902,8,52,1,52,1,52,1,52,3,52,1907,8,52,1,52,1,52,1,52,3,52,1912,8,52,1,52,1,52,1,52,3,52,1917,8,52,1,52,1,52,1,52,1,52,3,52,1923,8,52,1,52,1,52,1,52,3,52,1928,8,52,1,52,1,52,1,52,3,52,1933,8,52,1,52,1,52,1,52,3,52,1938,8,52,1,52,1,52,1,52,3,52,1943,8,52,1,52,1,52,1,52,3,52,1948,8,52,1,52,1,52,1,52,3,52,1953,8,52,1,52,1,52,1,52,3,52,1958,8,52,1,52,1,52,1,52,1,52,1,52,3,52,1965,8,52,1,52,1,52,1,52,3,52,1970,8,52,1,52,1,52,1,52,3,52,1975,8,52,1,52,1,52,1,52,3,52,1980,8,52,1,52,1,52,3,52,1984,8,52,1,52,1,52,1,52,3,52,1989,8,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,1997,8,52,1,52,1,52,1,52,3,52,2002,8,52,1,52,1,52,1,52,1,52,3,52,2008,8,52,1,53,1,53,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,3,55,2020,8,55,1,55,1,55,1,55,1,55,1,55,3,55,2027,8,55,3,55,2029,8,55,1,55,1,55,1,55,1,55,5,55,2035,8,55,10,55,12,55,2038,9,55,1,55,1,55,3,55,2042,8,55,1,56,3,56,2045,8,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2053,8,56,1,56,1,56,1,56,1,56,3,56,2059,8,56,1,56,1,56,3,56,2063,8,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2076,8,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2088,8,56,3,56,2090,8,56,1,57,3,57,2093,8,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57,2101,8,57,1,57,1,57,1,57,1,57,3,57,2107,8,57,1,57,1,57,1,57,1,57,3,57,2113,8,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,5,58,2124,8,58,10,58,12,58,2127,9,58,1,58,1,58,5,58,2131,8,58,10,58,12,58,2134,9,58,1,58,1,58,1,58,1,58,5,58,2140,8,58,10,58,12,58,2143,9,58,1,58,1,58,3,58,2147,8,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,5,58,2156,8,58,10,58,12,58,2159,9,58,1,58,1,58,1,58,1,58,5,58,2165,8,58,10,58,12,58,2168,9,58,1,58,1,58,3,58,2172,8,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,5,58,2182,8,58,10,58,12,58,2185,9,58,1,58,1,58,5,58,2189,8,58,10,58,12,58,2192,9,58,1,58,1,58,1,58,1,58,5,58,2198,8,58,10,58,12,58,2201,9,58,1,58,1,58,3,58,2205,8,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,5,58,2215,8,58,10,58,12,58,2218,9,58,1,58,1,58,5,58,2222,8,58,10,58,12,58,2225,9,58,1,58,1,58,1,58,1,58,5,58,2231,8,58,10,58,12,58,2234,9,58,1,58,1,58,3,58,2238,8,58,1,58,1,58,1,58,5,58,2243,8,58,10,58,12,58,2246,9,58,1,58,1,58,1,58,1,58,5,58,2252,8,58,10,58,12,58,2255,9,58,1,58,1,58,3,58,2259,8,58,3,58,2261,8,58,1,59,1,59,1,59,3,59,2266,8,59,1,60,1,60,1,60,1,60,4,60,2272,8,60,11,60,12,60,2273,1,60,1,60,1,61,1,61,1,61,5,61,2281,8,61,10,61,12,61,2284,9,61,1,62,3,62,2287,8,62,1,62,3,62,2290,8,62,1,62,1,62,3,62,2294,8,62,1,62,1,62,1,62,3,62,2299,8,62,1,62,1,62,1,62,1,62,3,62,2305,8,62,1,62,1,62,1,62,1,62,3,62,2311,8,62,1,62,1,62,1,62,3,62,2316,8,62,1,62,1,62,1,62,3,62,2321,8,62,1,62,1,62,1,62,3,62,2326,8,62,1,62,1,62,1,62,3,62,2331,8,62,1,62,3,62,2334,8,62,1,63,1,63,1,63,1,63,4,63,2340,8,63,11,63,12,63,2341,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,3,63,2352,8,63,1,64,1,64,3,64,2356,8,64,1,64,1,64,1,64,1,64,1,64,3,64,2363,8,64,1,64,1,64,1,64,3,64,2368,8,64,1,64,3,64,2371,8,64,1,64,1,64,1,64,3,64,2376,8,64,1,64,3,64,2379,8,64,1,64,1,64,3,64,2383,8,64,1,64,1,64,3,64,2387,8,64,1,65,1,65,1,65,1,65,5,65,2393,8,65,10,65,12,65,2396,9,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,2414,8,67,1,67,3,67,2417,8,67,1,67,3,67,2420,8,67,1,67,1,67,3,67,2424,8,67,1,67,1,67,1,68,1,68,1,68,1,68,5,68,2432,8,68,10,68,12,68,2435,9,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,5,69,2445,8,69,10,69,12,69,2448,9,69,1,69,1,69,1,70,1,70,3,70,2454,8,70,1,70,3,70,2457,8,70,1,70,1,70,1,70,3,70,2462,8,70,1,70,1,70,1,70,5,70,2467,8,70,10,70,12,70,2470,9,70,3,70,2472,8,70,1,70,3,70,2475,8,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,3,71,2486,8,71,1,71,3,71,2489,8,71,1,71,1,71,3,71,2493,8,71,1,71,1,71,1,72,1,72,1,72,1,72,3,72,2501,8,72,1,72,3,72,2504,8,72,1,72,1,72,1,72,3,72,2509,8,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2517,8,72,1,72,1,72,1,72,1,72,3,72,2523,8,72,1,72,1,72,3,72,2527,8,72,1,73,1,73,3,73,2531,8,73,1,73,5,73,2534,8,73,10,73,12,73,2537,9,73,1,73,1,73,3,73,2541,8,73,1,73,1,73,1,73,1,73,1,73,3,73,2548,8,73,1,73,1,73,3,73,2552,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,5,73,2561,8,73,10,73,12,73,2564,9,73,1,73,1,73,1,73,1,73,1,73,3,73,2571,8,73,1,73,3,73,2574,8,73,1,73,1,73,5,73,2578,8,73,10,73,12,73,2581,9,73,1,73,1,73,1,73,3,73,2586,8,73,3,73,2588,8,73,1,73,1,73,1,73,3,73,2593,8,73,1,73,3,73,2596,8,73,1,73,1,73,5,73,2600,8,73,10,73,12,73,2603,9,73,1,73,1,73,1,73,3,73,2608,8,73,3,73,2610,8,73,1,73,1,73,3,73,2614,8,73,1,73,3,73,2617,8,73,1,73,3,73,2620,8,73,1,73,1,73,5,73,2624,8,73,10,73,12,73,2627,9,73,1,73,1,73,1,73,3,73,2632,8,73,1,73,3,73,2635,8,73,1,73,1,73,5,73,2639,8,73,10,73,12,73,2642,9,73,1,73,1,73,1,73,3,73,2647,8,73,3,73,2649,8,73,1,73,1,73,1,73,3,73,2654,8,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2662,8,73,3,73,2664,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2673,8,73,1,73,3,73,2676,8,73,1,73,3,73,2679,8,73,1,73,1,73,1,73,3,73,2684,8,73,3,73,2686,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2695,8,73,1,73,3,73,2698,8,73,1,73,3,73,2701,8,73,1,73,1,73,1,73,3,73,2706,8,73,3,73,2708,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2717,8,73,1,73,1,73,1,73,3,73,2722,8,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2730,8,73,1,73,1,73,3,73,2734,8,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2742,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2752,8,73,1,73,1,73,1,73,3,73,2757,8,73,1,73,1,73,1,73,1,73,1,73,3,73,2764,8,73,1,73,1,73,3,73,2768,8,73,1,73,1,73,3,73,2772,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2791,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2801,8,73,1,73,1,73,1,73,1,73,3,73,2807,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2824,8,73,1,73,1,73,3,73,2828,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2838,8,73,1,73,1,73,1,73,3,73,2843,8,73,1,73,3,73,2846,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2855,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2866,8,73,1,73,1,73,1,73,1,73,5,73,2872,8,73,10,73,12,73,2875,9,73,1,73,1,73,1,73,3,73,2880,8,73,1,74,1,74,1,74,1,74,1,74,1,74,5,74,2888,8,74,10,74,12,74,2891,9,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,3,74,2902,8,74,1,74,1,74,1,74,1,74,1,74,3,74,2909,8,74,1,74,1,74,1,74,1,74,1,74,3,74,2916,8,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,5,74,2929,8,74,10,74,12,74,2932,9,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,3,74,2944,8,74,1,74,1,74,1,74,1,74,3,74,2950,8,74,1,74,1,74,1,74,1,74,3,74,2956,8,74,1,74,1,74,1,74,1,74,3,74,2962,8,74,1,74,1,74,1,74,1,74,3,74,2968,8,74,1,74,1,74,1,74,1,74,3,74,2974,8,74,1,74,1,74,1,74,1,74,3,74,2980,8,74,1,75,1,75,1,75,3,75,2985,8,75,1,75,1,75,1,76,1,76,1,76,3,76,2992,8,76,1,76,1,76,1,77,1,77,1,77,3,77,2999,8,77,1,77,1,77,1,77,1,77,1,77,3,77,3006,8,77,1,77,1,77,1,77,3,77,3011,8,77,1,77,5,77,3014,8,77,10,77,12,77,3017,9,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,3,79,3030,8,79,1,79,1,79,1,80,1,80,1,80,3,80,3037,8,80,1,80,1,80,1,81,1,81,1,81,3,81,3044,8,81,1,81,1,81,1,82,1,82,3,82,3050,8,82,1,82,1,82,3,82,3054,8,82,1,82,1,82,3,82,3058,8,82,1,83,1,83,1,83,1,83,1,83,3,83,3065,8,83,1,83,3,83,3068,8,83,1,84,1,84,1,84,3,84,3073,8,84,1,84,1,84,1,85,1,85,1,85,3,85,3080,8,85,1,85,1,85,1,85,5,85,3085,8,85,10,85,12,85,3088,9,85,1,85,3,85,3091,8,85,1,86,1,86,1,86,3,86,3096,8,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,3,87,3106,8,87,1,87,1,87,1,87,1,87,1,87,3,87,3113,8,87,1,88,1,88,1,88,1,88,1,88,5,88,3120,8,88,10,88,12,88,3123,9,88,1,89,1,89,1,89,1,89,1,90,1,90,3,90,3131,8,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,3,91,3140,8,91,1,91,3,91,3143,8,91,1,92,1,92,3,92,3147,8,92,1,93,1,93,1,93,1,94,1,94,1,94,1,94,3,94,3156,8,94,1,95,1,95,3,95,3160,8,95,1,95,3,95,3163,8,95,1,95,3,95,3166,8,95,1,95,1,95,1,95,1,95,3,95,3172,8,95,1,95,3,95,3175,8,95,1,95,1,95,3,95,3179,8,95,1,95,3,95,3182,8,95,1,95,1,95,3,95,3186,8,95,1,95,3,95,3189,8,95,1,95,1,95,1,95,1,95,5,95,3195,8,95,10,95,12,95,3198,9,95,3,95,3200,8,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,5,95,3209,8,95,10,95,12,95,3212,9,95,3,95,3214,8,95,1,96,1,96,1,96,3,96,3219,8,96,1,96,3,96,3222,8,96,1,96,1,96,1,96,3,96,3227,8,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,3,96,3237,8,96,1,96,1,96,1,96,3,96,3242,8,96,1,96,1,96,4,96,3246,8,96,11,96,12,96,3247,3,96,3250,8,96,1,96,1,96,4,96,3254,8,96,11,96,12,96,3255,3,96,3258,8,96,1,96,1,96,1,96,1,96,3,96,3264,8,96,1,96,1,96,1,96,1,96,5,96,3270,8,96,10,96,12,96,3273,9,96,1,96,1,96,3,96,3277,8,96,1,96,1,96,1,96,1,96,5,96,3283,8,96,10,96,12,96,3286,9,96,3,96,3288,8,96,1,97,1,97,1,97,3,97,3293,8,97,1,97,3,97,3296,8,97,1,97,1,97,1,97,3,97,3301,8,97,1,97,1,97,1,97,1,97,1,97,1,97,3,97,3309,8,97,1,97,1,97,1,97,1,97,1,97,1,97,3,97,3317,8,97,1,97,1,97,1,97,1,97,3,97,3323,8,97,1,97,1,97,1,97,1,97,5,97,3329,8,97,10,97,12,97,3332,9,97,1,97,1,97,3,97,3336,8,97,1,97,1,97,1,97,1,97,5,97,3342,8,97,10,97,12,97,3345,9,97,3,97,3347,8,97,1,98,1,98,3,98,3351,8,98,1,98,3,98,3354,8,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,3362,8,98,1,98,1,98,1,98,1,98,3,98,3368,8,98,1,98,1,98,1,98,1,98,1,98,5,98,3375,8,98,10,98,12,98,3378,9,98,3,98,3380,8,98,1,99,1,99,3,99,3384,8,99,1,99,1,99,3,99,3388,8,99,1,99,1,99,3,99,3392,8,99,1,99,4,99,3395,8,99,11,99,12,99,3396,1,99,1,99,3,99,3401,8,99,1,99,1,99,3,99,3405,8,99,3,99,3407,8,99,1,99,3,99,3410,8,99,1,99,3,99,3413,8,99,1,99,3,99,3416,8,99,1,99,1,99,4,99,3420,8,99,11,99,12,99,3421,1,99,1,99,3,99,3426,8,99,1,99,3,99,3429,8,99,1,99,3,99,3432,8,99,1,99,3,99,3435,8,99,1,99,3,99,3438,8,99,1,99,1,99,1,99,4,99,3443,8,99,11,99,12,99,3444,3,99,3447,8,99,1,100,1,100,3,100,3451,8,100,1,101,1,101,1,101,3,101,3456,8,101,1,101,1,101,1,101,1,101,3,101,3462,8,101,1,101,5,101,3465,8,101,10,101,12,101,3468,9,101,1,102,1,102,1,102,1,102,3,102,3474,8,102,1,102,1,102,1,102,1,102,3,102,3480,8,102,1,102,5,102,3483,8,102,10,102,12,102,3486,9,102,3,102,3488,8,102,1,103,1,103,1,103,1,103,3,103,3494,8,103,1,104,1,104,3,104,3498,8,104,1,105,1,105,1,105,1,105,1,105,1,105,3,105,3506,8,105,1,106,1,106,3,106,3510,8,106,1,106,3,106,3513,8,106,1,106,3,106,3516,8,106,1,106,1,106,1,106,3,106,3521,8,106,1,106,3,106,3524,8,106,1,106,1,106,1,106,1,106,1,106,3,106,3531,8,106,1,106,1,106,3,106,3535,8,106,1,106,3,106,3538,8,106,1,106,1,106,3,106,3542,8,106,1,107,1,107,3,107,3546,8,107,1,107,3,107,3549,8,107,1,107,3,107,3552,8,107,1,107,1,107,1,107,3,107,3557,8,107,1,107,1,107,1,107,1,107,3,107,3563,8,107,5,107,3565,8,107,10,107,12,107,3568,9,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,3,107,3577,8,107,1,107,1,107,1,107,1,107,3,107,3583,8,107,5,107,3585,8,107,10,107,12,107,3588,9,107,1,107,1,107,1,107,3,107,3593,8,107,1,107,1,107,3,107,3597,8,107,1,108,1,108,1,108,1,108,3,108,3603,8,108,1,108,3,108,3606,8,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,3,109,3618,8,109,1,109,1,109,3,109,3622,8,109,1,109,1,109,3,109,3626,8,109,1,110,1,110,1,110,1,110,1,110,1,110,3,110,3634,8,110,1,110,1,110,3,110,3638,8,110,1,111,1,111,1,111,1,111,1,112,1,112,3,112,3646,8,112,1,112,3,112,3649,8,112,1,112,1,112,3,112,3653,8,112,1,112,3,112,3656,8,112,1,112,1,112,1,112,1,112,5,112,3662,8,112,10,112,12,112,3665,9,112,1,112,1,112,3,112,3669,8,112,1,112,3,112,3672,8,112,1,112,3,112,3675,8,112,1,113,1,113,3,113,3679,8,113,1,113,3,113,3682,8,113,1,113,1,113,1,113,1,113,1,113,5,113,3689,8,113,10,113,12,113,3692,9,113,1,113,1,113,3,113,3696,8,113,1,114,1,114,1,114,1,114,1,114,5,114,3703,8,114,10,114,12,114,3706,9,114,1,115,1,115,3,115,3710,8,115,1,116,1,116,1,116,5,116,3715,8,116,10,116,12,116,3718,9,116,1,117,1,117,5,117,3722,8,117,10,117,12,117,3725,9,117,1,117,1,117,1,117,5,117,3730,8,117,10,117,12,117,3733,9,117,1,117,1,117,1,117,3,117,3738,8,117,1,118,1,118,1,118,1,118,1,118,1,118,3,118,3746,8,118,1,118,3,118,3749,8,118,1,118,3,118,3752,8,118,1,118,1,118,1,118,5,118,3757,8,118,10,118,12,118,3760,9,118,3,118,3762,8,118,1,118,1,118,1,118,1,118,1,118,3,118,3769,8,118,1,118,1,118,1,118,1,118,1,118,1,118,3,118,3777,8,118,1,119,1,119,1,119,1,119,3,119,3783,8,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,3,120,3794,8,120,1,121,3,121,3797,8,121,1,121,1,121,3,121,3801,8,121,1,121,1,121,5,121,3805,8,121,10,121,12,121,3808,9,121,1,121,1,121,1,121,1,121,5,121,3814,8,121,10,121,12,121,3817,9,121,1,121,1,121,3,121,3821,8,121,1,121,1,121,3,121,3825,8,121,1,121,1,121,5,121,3829,8,121,10,121,12,121,3832,9,121,1,121,1,121,1,121,3,121,3837,8,121,3,121,3839,8,121,1,121,1,121,3,121,3843,8,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,3,122,3852,8,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,3,123,3862,8,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,3,124,3872,8,124,1,125,1,125,5,125,3876,8,125,10,125,12,125,3879,9,125,1,125,1,125,3,125,3883,8,125,1,125,1,125,3,125,3887,8,125,1,125,3,125,3890,8,125,1,125,3,125,3893,8,125,1,125,3,125,3896,8,125,1,125,3,125,3899,8,125,1,125,1,125,5,125,3903,8,125,10,125,12,125,3906,9,125,1,125,1,125,1,125,3,125,3911,8,125,1,125,3,125,3914,8,125,1,125,3,125,3917,8,125,1,125,3,125,3920,8,125,1,125,3,125,3923,8,125,1,125,3,125,3926,8,125,3,125,3928,8,125,1,126,1,126,5,126,3932,8,126,10,126,12,126,3935,9,126,1,126,1,126,1,126,3,126,3940,8,126,1,126,3,126,3943,8,126,1,126,3,126,3946,8,126,1,126,3,126,3949,8,126,1,126,3,126,3952,8,126,1,126,3,126,3955,8,126,1,127,1,127,3,127,3959,8,127,1,127,1,127,1,128,1,128,3,128,3965,8,128,1,128,1,128,3,128,3969,8,128,1,129,1,129,1,129,1,129,1,129,1,129,3,129,3977,8,129,1,129,1,129,3,129,3981,8,129,1,129,3,129,3984,8,129,3,129,3986,8,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,3,130,3999,8,130,1,130,3,130,4002,8,130,1,131,1,131,1,131,5,131,4007,8,131,10,131,12,131,4010,9,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132,3,132,4019,8,132,1,132,3,132,4022,8,132,1,132,1,132,1,132,3,132,4027,8,132,3,132,4029,8,132,1,132,1,132,3,132,4033,8,132,1,132,1,132,1,132,1,132,1,132,1,132,3,132,4041,8,132,1,133,1,133,1,133,1,133,3,133,4047,8,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,3,134,4056,8,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,3,135,4069,8,135,1,136,1,136,3,136,4073,8,136,1,136,1,136,5,136,4077,8,136,10,136,12,136,4080,9,136,1,137,3,137,4083,8,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,138,3,138,4093,8,138,1,138,1,138,3,138,4097,8,138,1,138,1,138,3,138,4101,8,138,1,138,1,138,3,138,4105,8,138,3,138,4107,8,138,1,139,1,139,1,139,1,139,5,139,4113,8,139,10,139,12,139,4116,9,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,3,139,4127,8,139,1,139,1,139,4,139,4131,8,139,11,139,12,139,4132,3,139,4135,8,139,1,139,1,139,4,139,4139,8,139,11,139,12,139,4140,3,139,4143,8,139,3,139,4145,8,139,1,140,1,140,1,140,1,140,3,140,4151,8,140,1,140,1,140,1,140,1,140,1,140,1,140,3,140,4159,8,140,1,141,1,141,1,141,1,141,1,141,1,141,3,141,4167,8,141,1,142,1,142,3,142,4171,8,142,1,142,1,142,3,142,4175,8,142,1,143,1,143,1,143,1,143,1,143,5,143,4182,8,143,10,143,12,143,4185,9,143,1,143,1,143,3,143,4189,8,143,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145,5,145,4207,8,145,10,145,12,145,4210,9,145,1,146,1,146,3,146,4214,8,146,1,147,1,147,1,147,1,147,3,147,4220,8,147,1,147,1,147,1,147,1,147,1,147,3,147,4227,8,147,1,148,1,148,1,148,3,148,4232,8,148,1,149,1,149,1,149,1,149,1,149,5,149,4239,8,149,10,149,12,149,4242,9,149,3,149,4244,8,149,1,150,1,150,3,150,4248,8,150,1,151,1,151,3,151,4252,8,151,1,151,1,151,3,151,4256,8,151,1,151,3,151,4259,8,151,1,151,3,151,4262,8,151,1,151,3,151,4265,8,151,1,152,1,152,3,152,4269,8,152,1,152,1,152,3,152,4273,8,152,1,152,3,152,4276,8,152,1,152,3,152,4279,8,152,1,152,3,152,4282,8,152,1,153,1,153,1,153,1,154,1,154,3,154,4289,8,154,1,154,1,154,3,154,4293,8,154,1,154,1,154,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,5,156,4306,8,156,10,156,12,156,4309,9,156,1,156,3,156,4312,8,156,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,159,1,159,3,159,4324,8,159,1,159,1,159,1,159,1,159,5,159,4330,8,159,10,159,12,159,4333,9,159,1,160,1,160,1,160,1,160,1,160,1,160,1,160,3,160,4342,8,160,1,161,1,161,3,161,4346,8,161,1,161,3,161,4349,8,161,1,161,1,161,1,162,1,162,3,162,4355,8,162,1,162,3,162,4358,8,162,1,162,3,162,4361,8,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,3,163,4370,8,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,3,164,4379,8,164,1,165,1,165,1,165,1,165,1,165,1,165,5,165,4387,8,165,10,165,12,165,4390,9,165,1,165,3,165,4393,8,165,1,166,1,166,1,166,1,166,1,166,1,166,5,166,4401,8,166,10,166,12,166,4404,9,166,1,167,1,167,1,167,1,167,1,167,1,167,1,167,3,167,4413,8,167,1,168,1,168,1,168,1,169,1,169,1,169,3,169,4421,8,169,1,169,3,169,4424,8,169,1,170,1,170,1,170,1,170,1,170,5,170,4431,8,170,10,170,12,170,4434,9,170,3,170,4436,8,170,1,170,1,170,3,170,4440,8,170,1,170,5,170,4443,8,170,10,170,12,170,4446,9,170,1,170,3,170,4449,8,170,1,171,1,171,1,171,1,171,1,171,5,171,4456,8,171,10,171,12,171,4459,9,171,3,171,4461,8,171,1,172,1,172,1,172,1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,5,174,4490,8,174,10,174,12,174,4493,9,174,3,174,4495,8,174,1,174,3,174,4498,8,174,1,175,1,175,1,176,1,176,1,177,1,177,1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,1,179,5,179,4552,8,179,10,179,12,179,4555,9,179,1,179,1,179,3,179,4559,8,179,1,180,1,180,1,180,1,180,1,180,1,180,1,181,1,181,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,3,182,4587,8,182,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,3,183,4601,8,183,1,184,1,184,1,184,5,184,4606,8,184,10,184,12,184,4609,9,184,1,184,3,184,4612,8,184,1,185,1,185,1,185,1,185,3,185,4618,8,185,1,186,1,186,1,186,1,186,1,186,1,186,3,186,4626,8,186,3,186,4628,8,186,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188,1,188,3,188,4639,8,188,1,189,1,189,1,189,1,189,1,190,1,190,1,190,1,190,3,190,4649,8,190,1,191,1,191,1,191,1,191,1,191,3,191,4656,8,191,1,192,1,192,1,192,1,192,3,192,4662,8,192,1,193,1,193,1,193,1,193,1,194,1,194,3,194,4670,8,194,1,195,1,195,1,195,3,195,4675,8,195,1,195,1,195,1,195,1,195,5,195,4681,8,195,10,195,12,195,4684,9,195,1,195,1,195,1,195,5,195,4689,8,195,10,195,12,195,4692,9,195,1,195,1,195,1,195,5,195,4697,8,195,10,195,12,195,4700,9,195,1,195,1,195,1,195,5,195,4705,8,195,10,195,12,195,4708,9,195,1,195,5,195,4711,8,195,10,195,12,195,4714,9,195,1,195,1,195,3,195,4718,8,195,1,196,1,196,1,196,3,196,4723,8,196,1,196,4,196,4726,8,196,11,196,12,196,4727,1,196,1,196,4,196,4732,8,196,11,196,12,196,4733,3,196,4736,8,196,1,196,1,196,1,196,1,197,1,197,1,197,1,197,4,197,4745,8,197,11,197,12,197,4746,1,197,5,197,4750,8,197,10,197,12,197,4753,9,197,1,197,1,197,4,197,4757,8,197,11,197,12,197,4758,3,197,4761,8,197,1,197,1,197,1,197,1,198,1,198,1,198,1,199,1,199,1,199,1,200,1,200,1,200,3,200,4775,8,200,1,200,1,200,4,200,4779,8,200,11,200,12,200,4780,1,200,1,200,1,200,3,200,4786,8,200,1,201,1,201,1,201,3,201,4791,8,201,1,201,1,201,4,201,4795,8,201,11,201,12,201,4796,1,201,1,201,1,201,1,201,1,201,3,201,4804,8,201,1,202,1,202,1,202,1,203,1,203,1,203,3,203,4812,8,203,1,203,1,203,1,203,1,203,4,203,4818,8,203,11,203,12,203,4819,1,203,1,203,1,203,3,203,4825,8,203,1,204,1,204,1,204,1,204,3,204,4831,8,204,1,204,3,204,4834,8,204,1,204,1,204,1,204,1,204,1,204,1,204,3,204,4842,8,204,1,205,1,205,1,205,1,205,1,205,3,205,4849,8,205,1,206,1,206,1,206,1,206,1,206,1,206,1,206,3,206,4858,8,206,1,206,3,206,4861,8,206,1,207,1,207,1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,208,1,208,1,208,5,208,4876,8,208,10,208,12,208,4879,9,208,1,208,1,208,1,209,1,209,1,209,3,209,4886,8,209,1,209,1,209,1,209,1,209,1,209,1,209,3,209,4894,8,209,1,210,1,210,3,210,4898,8,210,1,210,1,210,1,211,1,211,1,211,3,211,4905,8,211,1,211,1,211,4,211,4909,8,211,11,211,12,211,4910,1,212,1,212,1,212,1,212,4,212,4917,8,212,11,212,12,212,4918,1,213,1,213,1,213,1,213,1,213,5,213,4926,8,213,10,213,12,213,4929,9,213,1,213,1,213,1,213,3,213,4934,8,213,1,213,1,213,1,213,1,213,1,213,3,213,4941,8,213,1,213,5,213,4944,8,213,10,213,12,213,4947,9,213,3,213,4949,8,213,3,213,4951,8,213,1,213,1,213,4,213,4955,8,213,11,213,12,213,4956,3,213,4959,8,213,1,213,1,213,5,213,4963,8,213,10,213,12,213,4966,9,213,1,213,1,213,1,213,1,213,3,213,4972,8,213,1,213,1,213,1,213,3,213,4977,8,213,1,213,1,213,1,213,1,213,1,213,3,213,4984,8,213,1,214,1,214,1,214,1,214,1,214,1,214,3,214,4992,8,214,1,214,1,214,1,214,1,214,3,214,4998,8,214,1,214,1,214,1,214,1,214,3,214,5004,8,214,1,214,5,214,5007,8,214,10,214,12,214,5010,9,214,3,214,5012,8,214,3,214,5014,8,214,1,214,1,214,4,214,5018,8,214,11,214,12,214,5019,3,214,5022,8,214,1,214,1,214,5,214,5026,8,214,10,214,12,214,5029,9,214,1,214,1,214,1,214,1,214,3,214,5035,8,214,3,214,5037,8,214,1,215,1,215,1,215,3,215,5042,8,215,1,215,1,215,1,216,1,216,1,216,1,216,5,216,5050,8,216,10,216,12,216,5053,9,216,1,216,1,216,3,216,5057,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,5066,8,216,1,216,5,216,5069,8,216,10,216,12,216,5072,9,216,3,216,5074,8,216,3,216,5076,8,216,1,216,1,216,1,216,1,216,5,216,5082,8,216,10,216,12,216,5085,9,216,3,216,5087,8,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,5095,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,5104,8,216,3,216,5106,8,216,1,217,1,217,1,217,1,217,1,217,3,217,5113,8,217,1,217,3,217,5116,8,217,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,5,218,5126,8,218,10,218,12,218,5129,9,218,1,218,1,218,1,218,3,218,5134,8,218,1,219,1,219,1,219,1,219,1,219,5,219,5141,8,219,10,219,12,219,5144,9,219,1,220,1,220,1,220,1,220,5,220,5150,8,220,10,220,12,220,5153,9,220,1,220,1,220,3,220,5157,8,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,3,220,5166,8,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,5,220,5177,8,220,10,220,12,220,5180,9,220,3,220,5182,8,220,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,5,221,5192,8,221,10,221,12,221,5195,9,221,1,222,1,222,1,222,1,222,3,222,5201,8,222,1,222,1,222,1,222,3,222,5206,8,222,1,223,1,223,1,223,1,224,1,224,1,224,5,224,5214,8,224,10,224,12,224,5217,9,224,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,3,225,5244,8,225,1,226,1,226,3,226,5248,8,226,1,226,1,226,1,226,3,226,5253,8,226,1,227,1,227,1,227,1,227,1,227,3,227,5260,8,227,1,227,3,227,5263,8,227,1,227,1,227,1,227,1,227,3,227,5269,8,227,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,3,228,5279,8,228,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,3,229,5289,8,229,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,3,230,5299,8,230,1,230,1,230,1,230,1,230,3,230,5305,8,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,3,230,5314,8,230,1,230,1,230,1,230,1,230,3,230,5320,8,230,1,230,1,230,1,230,1,230,1,230,3,230,5327,8,230,3,230,5329,8,230,1,231,1,231,1,231,1,232,1,232,1,232,1,232,1,232,3,232,5339,8,232,1,233,1,233,3,233,5343,8,233,1,233,1,233,3,233,5347,8,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,3,233,5357,8,233,1,233,1,233,1,233,3,233,5362,8,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,3,233,5434,8,233,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,3,234,5452,8,234,1,235,1,235,1,235,1,235,1,236,1,236,3,236,5460,8,236,1,236,1,236,1,236,1,236,1,236,1,236,1,236,1,236,5,236,5470,8,236,10,236,12,236,5473,9,236,1,236,1,236,1,236,1,236,3,236,5479,8,236,3,236,5481,8,236,1,236,1,236,1,236,1,236,1,236,1,236,5,236,5489,8,236,10,236,12,236,5492,9,236,3,236,5494,8,236,1,237,1,237,1,237,1,237,5,237,5500,8,237,10,237,12,237,5503,9,237,1,238,1,238,1,238,1,238,3,238,5509,8,238,1,239,1,239,3,239,5513,8,239,1,239,1,239,1,239,1,240,1,240,3,240,5520,8,240,1,240,1,240,1,240,3,240,5525,8,240,1,240,3,240,5528,8,240,1,240,3,240,5531,8,240,1,241,1,241,1,241,1,241,1,241,1,241,1,241,3,241,5540,8,241,1,242,1,242,3,242,5544,8,242,1,242,1,242,3,242,5548,8,242,1,242,1,242,1,242,1,242,1,242,1,242,1,243,1,243,1,243,1,243,1,243,1,243,1,244,1,244,1,244,1,244,1,245,1,245,1,245,1,245,1,245,3,245,5571,8,245,1,245,1,245,1,245,1,245,1,245,3,245,5578,8,245,5,245,5580,8,245,10,245,12,245,5583,9,245,1,245,1,245,1,245,1,245,3,245,5589,8,245,1,245,1,245,1,245,1,245,1,245,3,245,5596,8,245,1,245,3,245,5599,8,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,5,245,5613,8,245,10,245,12,245,5616,9,245,3,245,5618,8,245,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,3,246,5628,8,246,1,246,1,246,3,246,5632,8,246,1,246,1,246,1,246,1,246,3,246,5638,8,246,1,246,3,246,5641,8,246,1,246,1,246,1,246,3,246,5646,8,246,1,246,1,246,3,246,5650,8,246,1,246,1,246,1,246,1,246,1,246,3,246,5657,8,246,1,246,3,246,5660,8,246,1,246,1,246,1,246,1,246,3,246,5666,8,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,3,246,5698,8,246,1,246,3,246,5701,8,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,3,246,5713,8,246,1,246,3,246,5716,8,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,3,246,5726,8,246,1,246,1,246,1,246,1,246,1,246,1,246,3,246,5734,8,246,1,246,1,246,3,246,5738,8,246,1,246,1,246,1,246,1,246,1,246,3,246,5745,8,246,1,246,3,246,5748,8,246,1,246,1,246,1,246,1,246,1,246,5,246,5755,8,246,10,246,12,246,5758,9,246,1,246,1,246,1,246,3,246,5763,8,246,1,246,1,246,1,246,1,246,3,246,5769,8,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,3,246,5779,8,246,3,246,5781,8,246,1,247,1,247,1,247,1,247,3,247,5787,8,247,1,247,3,247,5790,8,247,1,247,3,247,5793,8,247,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,3,248,5805,8,248,1,248,3,248,5808,8,248,1,249,1,249,1,249,1,249,3,249,5814,8,249,1,250,3,250,5817,8,250,1,250,1,250,1,250,1,250,1,250,1,250,3,250,5825,8,250,1,250,1,250,1,250,1,250,1,250,1,250,3,250,5833,8,250,1,251,1,251,1,251,1,251,3,251,5839,8,251,1,251,1,251,3,251,5843,8,251,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,3,252,5857,8,252,1,253,1,253,1,253,1,254,1,254,1,254,1,254,1,254,5,254,5867,8,254,10,254,12,254,5870,9,254,1,254,1,254,1,254,1,254,3,254,5876,8,254,1,254,3,254,5879,8,254,1,254,1,254,1,254,1,255,1,255,3,255,5886,8,255,1,255,1,255,1,255,5,255,5891,8,255,10,255,12,255,5894,9,255,1,256,1,256,3,256,5898,8,256,1,256,1,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257,5,257,5909,8,257,10,257,12,257,5912,9,257,1,258,1,258,1,258,1,258,1,259,1,259,1,260,1,260,3,260,5922,8,260,1,260,1,260,1,260,1,260,3,260,5928,8,260,1,261,1,261,1,261,3,261,5933,8,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,3,261,5946,8,261,3,261,5948,8,261,1,261,1,261,1,261,3,261,5953,8,261,1,261,1,261,3,261,5957,8,261,1,261,3,261,5960,8,261,3,261,5962,8,261,1,262,1,262,1,262,1,262,1,262,3,262,5969,8,262,1,263,1,263,1,263,1,263,1,263,3,263,5976,8,263,1,263,3,263,5979,8,263,1,263,3,263,5982,8,263,1,263,1,263,1,263,1,263,3,263,5988,8,263,1,263,1,263,3,263,5992,8,263,1,264,1,264,1,264,1,264,3,264,5998,8,264,1,265,1,265,1,265,1,265,3,265,6004,8,265,1,265,1,265,1,266,1,266,1,266,1,267,1,267,1,267,1,268,1,268,1,268,3,268,6017,8,268,1,268,1,268,1,268,3,268,6022,8,268,1,268,1,268,1,268,1,268,5,268,6028,8,268,10,268,12,268,6031,9,268,3,268,6033,8,268,1,269,1,269,1,269,3,269,6038,8,269,1,269,1,269,1,269,3,269,6043,8,269,1,269,1,269,1,269,1,269,5,269,6049,8,269,10,269,12,269,6052,9,269,3,269,6054,8,269,1,270,1,270,1,270,1,270,1,270,1,270,3,270,6062,8,270,1,271,1,271,3,271,6066,8,271,1,271,1,271,1,271,5,271,6071,8,271,10,271,12,271,6074,9,271,1,272,1,272,1,272,3,272,6079,8,272,1,272,3,272,6082,8,272,1,273,1,273,3,273,6086,8,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,5,273,6097,8,273,10,273,12,273,6100,9,273,1,273,1,273,1,273,3,273,6105,8,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,5,273,6115,8,273,10,273,12,273,6118,9,273,3,273,6120,8,273,1,274,1,274,1,275,1,275,1,275,1,275,1,275,3,275,6129,8,275,1,275,1,275,1,275,3,275,6134,8,275,1,276,1,276,1,276,1,276,3,276,6140,8,276,1,277,1,277,1,278,1,278,1,278,5,278,6147,8,278,10,278,12,278,6150,9,278,1,279,1,279,3,279,6154,8,279,1,280,1,280,1,280,5,280,6159,8,280,10,280,12,280,6162,9,280,1,281,1,281,1,281,5,281,6167,8,281,10,281,12,281,6170,9,281,1,282,1,282,1,283,1,283,1,283,5,283,6177,8,283,10,283,12,283,6180,9,283,1,284,1,284,1,285,1,285,1,285,3,285,6187,8,285,3,285,6189,8,285,1,285,3,285,6192,8,285,1,285,1,285,3,285,6196,8,285,3,285,6198,8,285,1,286,1,286,1,287,1,287,1,288,1,288,1,289,1,289,1,290,1,290,1,290,5,290,6211,8,290,10,290,12,290,6214,9,290,1,291,1,291,3,291,6218,8,291,1,291,1,291,1,291,1,291,3,291,6224,8,291,1,291,3,291,6227,8,291,1,291,3,291,6230,8,291,1,292,1,292,1,292,1,292,3,292,6236,8,292,1,293,1,293,1,294,1,294,1,294,5,294,6243,8,294,10,294,12,294,6246,9,294,1,295,1,295,1,295,1,295,1,295,3,295,6253,8,295,1,296,1,296,1,297,1,297,1,298,1,298,1,298,1,298,3,298,6263,8,298,1,299,1,299,3,299,6267,8,299,1,300,1,300,1,300,3,300,6272,8,300,1,301,1,301,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,4,302,6290,8,302,11,302,12,302,6291,1,303,1,303,1,303,1,303,1,303,3,303,6299,8,303,3,303,6301,8,303,1,304,1,304,1,304,4,304,6306,8,304,11,304,12,304,6307,3,304,6310,8,304,1,305,1,305,3,305,6314,8,305,1,306,1,306,1,306,3,306,6319,8,306,1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,3,307,6330,8,307,1,308,1,308,1,308,3,308,6335,8,308,1,309,1,309,1,310,1,310,3,310,6341,8,310,1,311,3,311,6344,8,311,1,311,1,311,3,311,6348,8,311,1,311,4,311,6351,8,311,11,311,12,311,6352,1,311,3,311,6356,8,311,1,311,1,311,3,311,6360,8,311,1,311,1,311,3,311,6364,8,311,3,311,6366,8,311,1,312,1,312,1,313,3,313,6371,8,313,1,313,1,313,1,314,3,314,6376,8,314,1,314,1,314,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,3,315,6389,8,315,1,315,3,315,6392,8,315,1,316,1,316,3,316,6396,8,316,1,316,3,316,6399,8,316,1,316,3,316,6402,8,316,1,316,1,316,1,316,3,316,6407,8,316,1,316,1,316,1,316,3,316,6412,8,316,1,316,1,316,1,316,1,316,3,316,6418,8,316,1,316,3,316,6421,8,316,1,316,1,316,1,316,3,316,6426,8,316,1,316,3,316,6429,8,316,1,316,1,316,1,316,3,316,6434,8,316,1,316,3,316,6437,8,316,1,316,1,316,3,316,6441,8,316,1,316,5,316,6444,8,316,10,316,12,316,6447,9,316,1,316,1,316,3,316,6451,8,316,1,316,5,316,6454,8,316,10,316,12,316,6457,9,316,1,316,1,316,3,316,6461,8,316,1,316,3,316,6464,8,316,1,316,5,316,6467,8,316,10,316,12,316,6470,9,316,1,316,1,316,3,316,6474,8,316,1,316,5,316,6477,8,316,10,316,12,316,6480,9,316,1,316,1,316,1,316,3,316,6485,8,316,1,316,1,316,1,316,3,316,6490,8,316,1,316,1,316,1,316,3,316,6495,8,316,1,316,1,316,1,316,3,316,6500,8,316,1,316,1,316,3,316,6504,8,316,1,316,3,316,6507,8,316,1,316,1,316,1,316,3,316,6512,8,316,1,316,1,316,3,316,6516,8,316,1,316,1,316,3,316,6520,8,316,1,317,1,317,1,317,1,317,5,317,6526,8,317,10,317,12,317,6529,9,317,1,317,1,317,1,318,1,318,3,318,6535,8,318,1,318,1,318,3,318,6539,8,318,1,318,1,318,1,318,3,318,6544,8,318,1,318,1,318,1,318,3,318,6549,8,318,1,318,1,318,3,318,6553,8,318,3,318,6555,8,318,1,318,3,318,6558,8,318,1,319,1,319,1,319,1,319,1,320,1,320,1,320,1,320,1,320,1,320,1,321,1,321,1,321,1,321,3,321,6574,8,321,1,321,1,321,1,322,1,322,1,322,5,322,6581,8,322,10,322,12,322,6584,9,322,1,323,1,323,1,323,5,323,6589,8,323,10,323,12,323,6592,9,323,1,324,1,324,1,324,5,324,6597,8,324,10,324,12,324,6600,9,324,1,325,1,325,1,325,1,325,5,325,6606,8,325,10,325,12,325,6609,9,325,1,325,1,325,1,326,1,326,1,326,5,326,6616,8,326,10,326,12,326,6619,9,326,1,327,1,327,1,327,5,327,6624,8,327,10,327,12,327,6627,9,327,1,328,1,328,1,328,5,328,6632,8,328,10,328,12,328,6635,9,328,1,329,1,329,1,329,5,329,6640,8,329,10,329,12,329,6643,9,329,1,330,1,330,1,330,5,330,6648,8,330,10,330,12,330,6651,9,330,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,3,331,6662,8,331,1,331,1,331,1,331,1,331,1,331,3,331,6669,8,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,3,331,6679,8,331,1,332,1,332,1,332,3,332,6684,8,332,1,332,3,332,6687,8,332,1,332,1,332,1,332,3,332,6692,8,332,1,332,3,332,6695,8,332,1,333,1,333,3,333,6699,8,333,1,334,1,334,1,334,1,335,1,335,1,335,1,335,1,336,1,336,1,336,1,337,1,337,1,337,3,337,6714,8,337,1,338,1,338,1,338,1,338,1,338,1,338,3,338,6722,8,338,1,338,1,338,1,338,1,338,1,338,3,338,6729,8,338,1,338,1,338,1,338,3,338,6734,8,338,1,339,1,339,1,339,3,339,6739,8,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,4,339,6771,8,339,11,339,12,339,6772,1,339,1,339,3,339,6777,8,339,1,339,1,339,1,339,1,339,4,339,6783,8,339,11,339,12,339,6784,1,339,1,339,3,339,6789,8,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339,6798,8,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339,6806,8,339,1,339,1,339,1,339,3,339,6811,8,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339,6819,8,339,1,339,1,339,1,339,3,339,6824,8,339,1,339,1,339,1,339,3,339,6829,8,339,3,339,6831,8,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339,6840,8,339,1,339,1,339,1,339,3,339,6845,8,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339,6853,8,339,1,339,1,339,1,339,3,339,6858,8,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339,6866,8,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339,6874,8,339,1,339,3,339,6877,8,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339,6887,8,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339,6905,8,339,1,339,3,339,6908,8,339,1,339,3,339,6911,8,339,1,339,1,339,3,339,6915,8,339,1,340,1,340,1,340,1,340,1,340,1,341,1,341,1,341,1,341,5,341,6926,8,341,10,341,12,341,6929,9,341,1,341,1,341,1,341,1,341,1,341,3,341,6936,8,341,1,342,1,342,3,342,6940,8,342,1,343,1,343,1,343,3,343,6945,8,343,1,343,1,343,1,343,3,343,6950,8,343,1,343,1,343,1,343,1,343,3,343,6956,8,343,1,343,1,343,1,343,3,343,6961,8,343,1,343,1,343,3,343,6965,8,343,1,343,1,343,1,343,3,343,6970,8,343,1,343,1,343,1,343,3,343,6975,8,343,1,343,1,343,1,343,3,343,6980,8,343,1,343,1,343,1,343,1,343,1,343,1,343,5,343,6988,8,343,10,343,12,343,6991,9,343,3,343,6993,8,343,1,343,1,343,3,343,6997,8,343,1,343,1,343,3,343,7001,8,343,1,344,1,344,1,344,1,344,1,344,3,344,7008,8,344,1,344,1,344,3,344,7012,8,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,3,344,7041,8,344,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7049,8,345,1,346,3,346,7052,8,346,1,346,3,346,7055,8,346,1,346,3,346,7058,8,346,1,346,3,346,7061,8,346,1,347,1,347,1,348,1,348,1,348,1,349,1,349,1,350,1,350,3,350,7072,8,350,1,351,1,351,1,351,1,351,1,351,1,352,1,352,1,352,1,352,1,352,1,352,1,352,3,352,7086,8,352,1,353,1,353,1,353,1,353,1,353,5,353,7093,8,353,10,353,12,353,7096,9,353,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,3,354,7122,8,354,1,355,1,355,1,355,1,355,1,355,1,356,1,356,1,356,1,356,3,356,7133,8,356,1,356,1,356,1,356,1,356,1,356,3,356,7140,8,356,5,356,7142,8,356,10,356,12,356,7145,9,356,1,357,1,357,1,357,1,357,3,357,7151,8,357,1,358,1,358,1,358,1,358,1,358,1,358,3,358,7159,8,358,1,358,1,358,1,358,3,358,7164,8,358,1,358,1,358,1,358,1,358,5,358,7170,8,358,10,358,12,358,7173,9,358,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,3,359,7184,8,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,3,359,7197,8,359,1,359,1,359,1,359,1,359,3,359,7203,8,359,1,359,1,359,1,359,1,359,3,359,7209,8,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,3,359,7225,8,359,1,359,1,359,1,359,1,359,3,359,7231,8,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,5,359,7240,8,359,10,359,12,359,7243,9,359,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,5,360,7262,8,360,10,360,12,360,7265,9,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,4,360,7274,8,360,11,360,12,360,7275,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,3,360,7293,8,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,5,360,7314,8,360,10,360,12,360,7317,9,360,1,361,1,361,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,3,362,7335,8,362,1,363,1,363,1,363,1,363,1,363,1,363,1,363,3,363,7344,8,363,1,364,1,364,1,364,1,364,1,364,1,364,1,364,3,364,7353,8,364,1,365,1,365,1,366,1,366,1,367,1,367,1,367,1,367,1,367,3,367,7364,8,367,1,368,1,368,1,369,1,369,1,370,1,370,1,371,1,371,1,372,1,372,1,373,1,373,1,374,1,374,1,374,0,3,716,718,720,375,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,0,145,2,0,39,39,150,150,2,0,531,531,537,537,3,0,69,69,159,159,181,181,3,0,42,42,384,384,454,454,4,0,42,42,419,419,529,529,611,611,2,0,514,514,1148,1148,2,0,78,78,141,141,2,0,15,15,334,334,3,0,44,44,85,85,184,184,2,0,434,434,558,558,3,0,506,506,650,650,658,658,2,0,392,392,460,460,2,0,352,352,474,474,2,0,42,42,1138,1139,2,0,350,350,443,443,2,0,459,459,673,673,3,0,80,80,84,84,125,125,3,0,42,42,402,402,431,431,3,0,42,42,398,398,792,792,2,0,637,637,672,672,2,0,81,81,91,91,3,0,436,436,548,548,613,613,2,0,69,69,159,159,1,0,356,357,1,0,1138,1139,2,0,1148,1148,1156,1156,2,0,81,81,388,388,2,0,545,545,1148,1148,2,0,546,546,1148,1148,3,0,430,430,469,469,521,521,7,0,42,42,370,370,372,372,402,402,431,431,573,573,1156,1156,2,0,514,514,530,530,1,0,1139,1140,2,0,5,5,51,51,4,0,42,42,384,384,454,454,458,458,2,0,26,26,30,30,2,0,12,12,175,175,2,0,192,192,677,677,2,0,21,21,144,144,3,0,43,43,75,75,106,106,2,0,106,106,374,374,2,0,365,365,427,427,2,0,101,101,601,601,2,0,43,43,106,106,2,0,6,6,49,49,2,0,188,188,669,669,4,0,430,430,469,469,520,520,562,562,2,0,430,430,520,520,2,0,13,13,45,45,3,0,66,66,78,78,186,186,2,0,34,34,83,83,2,0,97,97,148,148,2,0,6,6,49,50,1,0,626,627,2,0,172,172,742,742,2,0,439,439,609,609,2,0,226,226,477,477,5,0,107,107,482,483,485,485,489,497,575,575,4,0,479,480,484,484,486,487,576,576,3,0,108,108,478,478,488,488,2,0,462,462,628,628,2,0,622,622,624,624,2,0,344,344,629,629,2,0,90,90,591,591,2,0,51,51,390,390,3,0,31,31,61,61,179,179,3,0,131,131,172,172,437,437,3,0,12,12,19,19,187,187,2,0,42,42,121,121,2,0,103,103,182,182,2,0,360,360,614,614,2,0,40,40,671,671,2,0,115,115,474,474,2,0,422,422,568,568,4,0,206,206,208,208,214,214,638,638,2,0,1108,1108,1124,1124,2,0,345,345,577,577,2,0,68,68,80,80,3,0,131,131,415,415,437,437,2,0,172,172,671,671,2,0,513,513,634,634,2,0,412,412,675,675,2,0,131,131,437,437,3,0,81,81,92,92,452,452,3,0,439,439,474,474,609,609,2,0,634,634,670,670,2,0,376,376,567,567,6,0,226,226,409,409,411,411,438,438,574,574,615,615,2,0,45,46,62,62,3,0,422,422,550,550,885,885,2,0,466,466,652,652,10,0,359,359,367,367,378,380,387,387,507,507,515,515,639,639,646,646,836,836,1005,1005,2,0,35,35,168,168,2,0,117,117,996,996,11,0,359,359,367,367,378,380,387,387,507,507,515,515,592,592,639,639,646,646,836,836,1005,1005,2,0,1137,1137,1158,1159,1,0,1159,1160,2,0,375,375,787,798,3,0,1138,1140,1149,1149,1151,1151,2,0,63,63,178,178,2,0,116,116,1152,1152,5,0,25,25,222,224,231,231,233,236,518,518,2,0,25,25,222,222,2,0,25,25,222,223,1,0,196,207,3,0,183,183,195,195,612,612,2,0,211,216,431,431,6,0,217,217,228,228,230,230,232,232,239,239,348,349,4,0,218,221,226,227,229,229,346,346,2,0,153,153,237,237,2,0,466,466,803,811,3,0,211,211,226,226,518,518,6,0,200,200,206,206,209,209,217,218,220,221,466,466,1,0,214,215,2,0,183,183,612,612,2,0,200,200,206,206,2,0,315,316,322,322,3,0,150,150,313,316,331,331,1,0,325,326,3,0,17,17,95,95,176,176,2,0,222,222,226,226,2,0,217,218,220,220,3,0,13,13,45,45,994,994,3,0,286,286,298,299,309,309,3,0,287,289,305,308,310,312,2,0,295,295,297,297,2,0,293,293,296,296,2,0,291,292,302,304,2,0,133,133,601,601,2,0,433,433,559,559,2,0,535,535,551,551,2,0,114,114,1127,1127,3,0,63,63,178,178,662,662,2,0,137,137,149,149,3,0,6,6,337,337,618,618,3,0,114,114,1120,1121,1127,1128,2,0,1117,1119,1122,1123,1,0,1120,1121,2,0,226,226,746,786,1,0,799,802,5,0,708,709,725,727,733,733,739,740,742,742,1,0,689,696,3,0,217,221,234,234,237,237,59,0,11,11,14,14,18,18,29,29,35,35,37,37,42,42,48,48,55,55,57,57,59,59,73,73,79,79,94,94,117,117,121,121,124,124,130,130,158,158,168,168,239,239,283,290,294,294,298,299,305,312,332,385,387,403,405,405,407,432,434,450,452,458,460,521,523,523,527,544,547,558,560,589,591,592,594,606,608,636,638,672,674,675,677,682,684,688,697,697,699,707,710,712,717,718,720,724,728,732,734,734,736,738,741,741,743,745,792,792,836,836,875,875,1e3,1e3,1005,1005,1088,1088,23,0,39,39,97,97,148,148,150,150,217,219,221,221,251,282,290,293,295,297,300,304,324,324,459,459,673,673,689,696,736,736,803,803,806,835,837,874,876,999,1001,1004,1006,1087,1089,1107,1123,1123,8658,0,751,1,0,0,0,2,763,1,0,0,0,4,772,1,0,0,0,6,812,1,0,0,0,8,827,1,0,0,0,10,838,1,0,0,0,12,855,1,0,0,0,14,860,1,0,0,0,16,872,1,0,0,0,18,899,1,0,0,0,20,908,1,0,0,0,22,910,1,0,0,0,24,922,1,0,0,0,26,952,1,0,0,0,28,988,1,0,0,0,30,1039,1,0,0,0,32,1065,1,0,0,0,34,1101,1,0,0,0,36,1108,1,0,0,0,38,1205,1,0,0,0,40,1207,1,0,0,0,42,1225,1,0,0,0,44,1286,1,0,0,0,46,1308,1,0,0,0,48,1314,1,0,0,0,50,1336,1,0,0,0,52,1338,1,0,0,0,54,1340,1,0,0,0,56,1420,1,0,0,0,58,1427,1,0,0,0,60,1429,1,0,0,0,62,1434,1,0,0,0,64,1474,1,0,0,0,66,1480,1,0,0,0,68,1482,1,0,0,0,70,1503,1,0,0,0,72,1510,1,0,0,0,74,1512,1,0,0,0,76,1537,1,0,0,0,78,1540,1,0,0,0,80,1545,1,0,0,0,82,1571,1,0,0,0,84,1587,1,0,0,0,86,1589,1,0,0,0,88,1611,1,0,0,0,90,1613,1,0,0,0,92,1679,1,0,0,0,94,1750,1,0,0,0,96,1752,1,0,0,0,98,1780,1,0,0,0,100,1790,1,0,0,0,102,1820,1,0,0,0,104,2007,1,0,0,0,106,2009,1,0,0,0,108,2011,1,0,0,0,110,2014,1,0,0,0,112,2089,1,0,0,0,114,2112,1,0,0,0,116,2260,1,0,0,0,118,2265,1,0,0,0,120,2267,1,0,0,0,122,2277,1,0,0,0,124,2333,1,0,0,0,126,2351,1,0,0,0,128,2353,1,0,0,0,130,2388,1,0,0,0,132,2397,1,0,0,0,134,2404,1,0,0,0,136,2427,1,0,0,0,138,2436,1,0,0,0,140,2451,1,0,0,0,142,2476,1,0,0,0,144,2496,1,0,0,0,146,2879,1,0,0,0,148,2979,1,0,0,0,150,2981,1,0,0,0,152,2988,1,0,0,0,154,2995,1,0,0,0,156,3018,1,0,0,0,158,3026,1,0,0,0,160,3033,1,0,0,0,162,3040,1,0,0,0,164,3047,1,0,0,0,166,3059,1,0,0,0,168,3069,1,0,0,0,170,3076,1,0,0,0,172,3092,1,0,0,0,174,3112,1,0,0,0,176,3114,1,0,0,0,178,3124,1,0,0,0,180,3128,1,0,0,0,182,3134,1,0,0,0,184,3146,1,0,0,0,186,3148,1,0,0,0,188,3155,1,0,0,0,190,3157,1,0,0,0,192,3215,1,0,0,0,194,3289,1,0,0,0,196,3348,1,0,0,0,198,3446,1,0,0,0,200,3450,1,0,0,0,202,3452,1,0,0,0,204,3487,1,0,0,0,206,3489,1,0,0,0,208,3497,1,0,0,0,210,3505,1,0,0,0,212,3507,1,0,0,0,214,3543,1,0,0,0,216,3598,1,0,0,0,218,3607,1,0,0,0,220,3627,1,0,0,0,222,3639,1,0,0,0,224,3643,1,0,0,0,226,3676,1,0,0,0,228,3697,1,0,0,0,230,3707,1,0,0,0,232,3711,1,0,0,0,234,3737,1,0,0,0,236,3776,1,0,0,0,238,3778,1,0,0,0,240,3793,1,0,0,0,242,3842,1,0,0,0,244,3851,1,0,0,0,246,3861,1,0,0,0,248,3871,1,0,0,0,250,3927,1,0,0,0,252,3929,1,0,0,0,254,3956,1,0,0,0,256,3962,1,0,0,0,258,3970,1,0,0,0,260,3987,1,0,0,0,262,4003,1,0,0,0,264,4040,1,0,0,0,266,4046,1,0,0,0,268,4055,1,0,0,0,270,4068,1,0,0,0,272,4072,1,0,0,0,274,4082,1,0,0,0,276,4106,1,0,0,0,278,4144,1,0,0,0,280,4158,1,0,0,0,282,4166,1,0,0,0,284,4170,1,0,0,0,286,4176,1,0,0,0,288,4190,1,0,0,0,290,4193,1,0,0,0,292,4211,1,0,0,0,294,4215,1,0,0,0,296,4231,1,0,0,0,298,4233,1,0,0,0,300,4245,1,0,0,0,302,4249,1,0,0,0,304,4266,1,0,0,0,306,4283,1,0,0,0,308,4286,1,0,0,0,310,4296,1,0,0,0,312,4300,1,0,0,0,314,4313,1,0,0,0,316,4316,1,0,0,0,318,4321,1,0,0,0,320,4341,1,0,0,0,322,4343,1,0,0,0,324,4360,1,0,0,0,326,4369,1,0,0,0,328,4378,1,0,0,0,330,4380,1,0,0,0,332,4394,1,0,0,0,334,4405,1,0,0,0,336,4414,1,0,0,0,338,4417,1,0,0,0,340,4425,1,0,0,0,342,4450,1,0,0,0,344,4462,1,0,0,0,346,4465,1,0,0,0,348,4497,1,0,0,0,350,4499,1,0,0,0,352,4501,1,0,0,0,354,4503,1,0,0,0,356,4505,1,0,0,0,358,4558,1,0,0,0,360,4560,1,0,0,0,362,4566,1,0,0,0,364,4586,1,0,0,0,366,4600,1,0,0,0,368,4611,1,0,0,0,370,4613,1,0,0,0,372,4619,1,0,0,0,374,4629,1,0,0,0,376,4633,1,0,0,0,378,4640,1,0,0,0,380,4644,1,0,0,0,382,4650,1,0,0,0,384,4657,1,0,0,0,386,4663,1,0,0,0,388,4669,1,0,0,0,390,4674,1,0,0,0,392,4719,1,0,0,0,394,4740,1,0,0,0,396,4765,1,0,0,0,398,4768,1,0,0,0,400,4774,1,0,0,0,402,4790,1,0,0,0,404,4805,1,0,0,0,406,4811,1,0,0,0,408,4841,1,0,0,0,410,4843,1,0,0,0,412,4850,1,0,0,0,414,4862,1,0,0,0,416,4868,1,0,0,0,418,4893,1,0,0,0,420,4897,1,0,0,0,422,4901,1,0,0,0,424,4912,1,0,0,0,426,4983,1,0,0,0,428,5036,1,0,0,0,430,5038,1,0,0,0,432,5105,1,0,0,0,434,5115,1,0,0,0,436,5117,1,0,0,0,438,5135,1,0,0,0,440,5181,1,0,0,0,442,5183,1,0,0,0,444,5196,1,0,0,0,446,5207,1,0,0,0,448,5210,1,0,0,0,450,5243,1,0,0,0,452,5247,1,0,0,0,454,5268,1,0,0,0,456,5278,1,0,0,0,458,5288,1,0,0,0,460,5328,1,0,0,0,462,5330,1,0,0,0,464,5333,1,0,0,0,466,5433,1,0,0,0,468,5451,1,0,0,0,470,5453,1,0,0,0,472,5457,1,0,0,0,474,5495,1,0,0,0,476,5504,1,0,0,0,478,5510,1,0,0,0,480,5517,1,0,0,0,482,5539,1,0,0,0,484,5541,1,0,0,0,486,5555,1,0,0,0,488,5561,1,0,0,0,490,5617,1,0,0,0,492,5780,1,0,0,0,494,5792,1,0,0,0,496,5807,1,0,0,0,498,5813,1,0,0,0,500,5832,1,0,0,0,502,5842,1,0,0,0,504,5856,1,0,0,0,506,5858,1,0,0,0,508,5861,1,0,0,0,510,5883,1,0,0,0,512,5895,1,0,0,0,514,5901,1,0,0,0,516,5913,1,0,0,0,518,5917,1,0,0,0,520,5919,1,0,0,0,522,5961,1,0,0,0,524,5968,1,0,0,0,526,5970,1,0,0,0,528,5993,1,0,0,0,530,5999,1,0,0,0,532,6007,1,0,0,0,534,6010,1,0,0,0,536,6013,1,0,0,0,538,6034,1,0,0,0,540,6055,1,0,0,0,542,6063,1,0,0,0,544,6075,1,0,0,0,546,6083,1,0,0,0,548,6121,1,0,0,0,550,6133,1,0,0,0,552,6135,1,0,0,0,554,6141,1,0,0,0,556,6143,1,0,0,0,558,6153,1,0,0,0,560,6155,1,0,0,0,562,6163,1,0,0,0,564,6171,1,0,0,0,566,6173,1,0,0,0,568,6181,1,0,0,0,570,6197,1,0,0,0,572,6199,1,0,0,0,574,6201,1,0,0,0,576,6203,1,0,0,0,578,6205,1,0,0,0,580,6207,1,0,0,0,582,6226,1,0,0,0,584,6235,1,0,0,0,586,6237,1,0,0,0,588,6239,1,0,0,0,590,6252,1,0,0,0,592,6254,1,0,0,0,594,6256,1,0,0,0,596,6262,1,0,0,0,598,6266,1,0,0,0,600,6271,1,0,0,0,602,6273,1,0,0,0,604,6275,1,0,0,0,606,6293,1,0,0,0,608,6309,1,0,0,0,610,6313,1,0,0,0,612,6318,1,0,0,0,614,6329,1,0,0,0,616,6334,1,0,0,0,618,6336,1,0,0,0,620,6340,1,0,0,0,622,6365,1,0,0,0,624,6367,1,0,0,0,626,6370,1,0,0,0,628,6375,1,0,0,0,630,6391,1,0,0,0,632,6519,1,0,0,0,634,6521,1,0,0,0,636,6554,1,0,0,0,638,6559,1,0,0,0,640,6563,1,0,0,0,642,6569,1,0,0,0,644,6577,1,0,0,0,646,6585,1,0,0,0,648,6593,1,0,0,0,650,6601,1,0,0,0,652,6612,1,0,0,0,654,6620,1,0,0,0,656,6628,1,0,0,0,658,6636,1,0,0,0,660,6644,1,0,0,0,662,6678,1,0,0,0,664,6694,1,0,0,0,666,6698,1,0,0,0,668,6700,1,0,0,0,670,6703,1,0,0,0,672,6707,1,0,0,0,674,6713,1,0,0,0,676,6733,1,0,0,0,678,6914,1,0,0,0,680,6916,1,0,0,0,682,6935,1,0,0,0,684,6937,1,0,0,0,686,7e3,1,0,0,0,688,7040,1,0,0,0,690,7042,1,0,0,0,692,7051,1,0,0,0,694,7062,1,0,0,0,696,7064,1,0,0,0,698,7067,1,0,0,0,700,7071,1,0,0,0,702,7073,1,0,0,0,704,7085,1,0,0,0,706,7087,1,0,0,0,708,7121,1,0,0,0,710,7123,1,0,0,0,712,7132,1,0,0,0,714,7150,1,0,0,0,716,7163,1,0,0,0,718,7174,1,0,0,0,720,7292,1,0,0,0,722,7318,1,0,0,0,724,7334,1,0,0,0,726,7343,1,0,0,0,728,7352,1,0,0,0,730,7354,1,0,0,0,732,7356,1,0,0,0,734,7363,1,0,0,0,736,7365,1,0,0,0,738,7367,1,0,0,0,740,7369,1,0,0,0,742,7371,1,0,0,0,744,7373,1,0,0,0,746,7375,1,0,0,0,748,7377,1,0,0,0,750,752,3,2,1,0,751,750,1,0,0,0,751,752,1,0,0,0,752,753,1,0,0,0,753,754,5,0,0,1,754,1,1,0,0,0,755,757,3,4,2,0,756,758,5,1136,0,0,757,756,1,0,0,0,757,758,1,0,0,0,758,764,1,0,0,0,759,760,3,4,2,0,760,761,5,1136,0,0,761,762,3,2,1,0,762,764,1,0,0,0,763,755,1,0,0,0,763,759,1,0,0,0,764,3,1,0,0,0,765,773,3,6,3,0,766,773,3,8,4,0,767,773,3,10,5,0,768,773,3,12,6,0,769,773,3,14,7,0,770,773,3,18,9,0,771,773,3,20,10,0,772,765,1,0,0,0,772,766,1,0,0,0,772,767,1,0,0,0,772,768,1,0,0,0,772,769,1,0,0,0,772,770,1,0,0,0,772,771,1,0,0,0,773,5,1,0,0,0,774,813,3,22,11,0,775,813,3,24,12,0,776,813,3,26,13,0,777,813,3,28,14,0,778,813,3,30,15,0,779,813,3,32,16,0,780,813,3,36,18,0,781,813,3,38,19,0,782,813,3,40,20,0,783,813,3,42,21,0,784,813,3,44,22,0,785,813,3,54,27,0,786,813,3,34,17,0,787,813,3,126,63,0,788,813,3,128,64,0,789,813,3,130,65,0,790,813,3,132,66,0,791,813,3,134,67,0,792,813,3,136,68,0,793,813,3,138,69,0,794,813,3,140,70,0,795,813,3,142,71,0,796,813,3,144,72,0,797,813,3,150,75,0,798,813,3,152,76,0,799,813,3,154,77,0,800,813,3,156,78,0,801,813,3,158,79,0,802,813,3,160,80,0,803,813,3,162,81,0,804,813,3,164,82,0,805,813,3,166,83,0,806,813,3,168,84,0,807,813,3,170,85,0,808,813,3,172,86,0,809,813,3,174,87,0,810,813,3,176,88,0,811,813,3,180,90,0,812,774,1,0,0,0,812,775,1,0,0,0,812,776,1,0,0,0,812,777,1,0,0,0,812,778,1,0,0,0,812,779,1,0,0,0,812,780,1,0,0,0,812,781,1,0,0,0,812,782,1,0,0,0,812,783,1,0,0,0,812,784,1,0,0,0,812,785,1,0,0,0,812,786,1,0,0,0,812,787,1,0,0,0,812,788,1,0,0,0,812,789,1,0,0,0,812,790,1,0,0,0,812,791,1,0,0,0,812,792,1,0,0,0,812,793,1,0,0,0,812,794,1,0,0,0,812,795,1,0,0,0,812,796,1,0,0,0,812,797,1,0,0,0,812,798,1,0,0,0,812,799,1,0,0,0,812,800,1,0,0,0,812,801,1,0,0,0,812,802,1,0,0,0,812,803,1,0,0,0,812,804,1,0,0,0,812,805,1,0,0,0,812,806,1,0,0,0,812,807,1,0,0,0,812,808,1,0,0,0,812,809,1,0,0,0,812,810,1,0,0,0,812,811,1,0,0,0,813,7,1,0,0,0,814,828,3,198,99,0,815,828,3,190,95,0,816,828,3,200,100,0,817,828,3,184,92,0,818,828,3,196,98,0,819,828,3,182,91,0,820,828,3,192,96,0,821,828,3,194,97,0,822,828,3,186,93,0,823,828,3,188,94,0,824,828,3,202,101,0,825,828,3,542,271,0,826,828,3,544,272,0,827,814,1,0,0,0,827,815,1,0,0,0,827,816,1,0,0,0,827,817,1,0,0,0,827,818,1,0,0,0,827,819,1,0,0,0,827,820,1,0,0,0,827,821,1,0,0,0,827,822,1,0,0,0,827,823,1,0,0,0,827,824,1,0,0,0,827,825,1,0,0,0,827,826,1,0,0,0,828,9,1,0,0,0,829,839,3,298,149,0,830,839,3,300,150,0,831,839,3,302,151,0,832,839,3,304,152,0,833,839,3,306,153,0,834,839,3,308,154,0,835,839,3,310,155,0,836,839,3,312,156,0,837,839,3,314,157,0,838,829,1,0,0,0,838,830,1,0,0,0,838,831,1,0,0,0,838,832,1,0,0,0,838,833,1,0,0,0,838,834,1,0,0,0,838,835,1,0,0,0,838,836,1,0,0,0,838,837,1,0,0,0,839,11,1,0,0,0,840,856,3,330,165,0,841,856,3,332,166,0,842,856,3,334,167,0,843,856,3,336,168,0,844,856,3,338,169,0,845,856,3,340,170,0,846,856,3,342,171,0,847,856,3,344,172,0,848,856,3,346,173,0,849,856,3,370,185,0,850,856,3,372,186,0,851,856,3,374,187,0,852,856,3,376,188,0,853,856,3,378,189,0,854,856,3,380,190,0,855,840,1,0,0,0,855,841,1,0,0,0,855,842,1,0,0,0,855,843,1,0,0,0,855,844,1,0,0,0,855,845,1,0,0,0,855,846,1,0,0,0,855,847,1,0,0,0,855,848,1,0,0,0,855,849,1,0,0,0,855,850,1,0,0,0,855,851,1,0,0,0,855,852,1,0,0,0,855,853,1,0,0,0,855,854,1,0,0,0,856,13,1,0,0,0,857,861,3,382,191,0,858,861,3,384,192,0,859,861,3,386,193,0,860,857,1,0,0,0,860,858,1,0,0,0,860,859,1,0,0,0,861,15,1,0,0,0,862,873,3,390,195,0,863,873,3,392,196,0,864,873,3,394,197,0,865,873,3,398,199,0,866,873,3,400,200,0,867,873,3,402,201,0,868,873,3,406,203,0,869,873,3,396,198,0,870,873,3,404,202,0,871,873,3,408,204,0,872,862,1,0,0,0,872,863,1,0,0,0,872,864,1,0,0,0,872,865,1,0,0,0,872,866,1,0,0,0,872,867,1,0,0,0,872,868,1,0,0,0,872,869,1,0,0,0,872,870,1,0,0,0,872,871,1,0,0,0,873,17,1,0,0,0,874,900,3,426,213,0,875,900,3,428,214,0,876,900,3,430,215,0,877,900,3,432,216,0,878,900,3,436,218,0,879,900,3,438,219,0,880,900,3,440,220,0,881,900,3,442,221,0,882,900,3,472,236,0,883,900,3,474,237,0,884,900,3,476,238,0,885,900,3,478,239,0,886,900,3,480,240,0,887,900,3,484,242,0,888,900,3,486,243,0,889,900,3,488,244,0,890,900,3,490,245,0,891,900,3,492,246,0,892,900,3,506,253,0,893,900,3,508,254,0,894,900,3,510,255,0,895,900,3,512,256,0,896,900,3,514,257,0,897,900,3,516,258,0,898,900,3,518,259,0,899,874,1,0,0,0,899,875,1,0,0,0,899,876,1,0,0,0,899,877,1,0,0,0,899,878,1,0,0,0,899,879,1,0,0,0,899,880,1,0,0,0,899,881,1,0,0,0,899,882,1,0,0,0,899,883,1,0,0,0,899,884,1,0,0,0,899,885,1,0,0,0,899,886,1,0,0,0,899,887,1,0,0,0,899,888,1,0,0,0,899,889,1,0,0,0,899,890,1,0,0,0,899,891,1,0,0,0,899,892,1,0,0,0,899,893,1,0,0,0,899,894,1,0,0,0,899,895,1,0,0,0,899,896,1,0,0,0,899,897,1,0,0,0,899,898,1,0,0,0,900,19,1,0,0,0,901,909,3,528,264,0,902,909,3,530,265,0,903,909,3,532,266,0,904,909,3,534,267,0,905,909,3,536,268,0,906,909,3,538,269,0,907,909,3,546,273,0,908,901,1,0,0,0,908,902,1,0,0,0,908,903,1,0,0,0,908,904,1,0,0,0,908,905,1,0,0,0,908,906,1,0,0,0,908,907,1,0,0,0,909,21,1,0,0,0,910,911,5,33,0,0,911,913,7,0,0,0,912,914,3,670,335,0,913,912,1,0,0,0,913,914,1,0,0,0,914,915,1,0,0,0,915,919,3,612,306,0,916,918,3,56,28,0,917,916,1,0,0,0,918,921,1,0,0,0,919,917,1,0,0,0,919,920,1,0,0,0,920,23,1,0,0,0,921,919,1,0,0,0,922,924,5,33,0,0,923,925,3,62,31,0,924,923,1,0,0,0,924,925,1,0,0,0,925,926,1,0,0,0,926,928,5,415,0,0,927,929,3,670,335,0,928,927,1,0,0,0,928,929,1,0,0,0,929,930,1,0,0,0,930,931,3,552,276,0,931,932,5,118,0,0,932,933,5,605,0,0,933,940,3,64,32,0,934,935,5,118,0,0,935,937,5,371,0,0,936,938,5,114,0,0,937,936,1,0,0,0,937,938,1,0,0,0,938,939,1,0,0,0,939,941,5,561,0,0,940,934,1,0,0,0,940,941,1,0,0,0,941,943,1,0,0,0,942,944,3,72,36,0,943,942,1,0,0,0,943,944,1,0,0,0,944,947,1,0,0,0,945,946,5,368,0,0,946,948,5,1148,0,0,947,945,1,0,0,0,947,948,1,0,0,0,948,949,1,0,0,0,949,950,5,399,0,0,950,951,3,388,194,0,951,25,1,0,0,0,952,954,5,33,0,0,953,955,7,1,0,0,954,953,1,0,0,0,954,955,1,0,0,0,955,957,1,0,0,0,956,958,7,2,0,0,957,956,1,0,0,0,957,958,1,0,0,0,958,959,1,0,0,0,959,960,5,81,0,0,960,962,3,612,306,0,961,963,3,74,37,0,962,961,1,0,0,0,962,963,1,0,0,0,963,964,1,0,0,0,964,965,5,118,0,0,965,966,3,554,277,0,966,970,3,650,325,0,967,969,3,76,38,0,968,967,1,0,0,0,969,972,1,0,0,0,970,968,1,0,0,0,970,971,1,0,0,0,971,985,1,0,0,0,972,970,1,0,0,0,973,975,5,336,0,0,974,976,5,1124,0,0,975,974,1,0,0,0,975,976,1,0,0,0,976,977,1,0,0,0,977,984,7,3,0,0,978,980,5,103,0,0,979,981,5,1124,0,0,980,979,1,0,0,0,980,981,1,0,0,0,981,982,1,0,0,0,982,984,7,4,0,0,983,973,1,0,0,0,983,978,1,0,0,0,984,987,1,0,0,0,985,983,1,0,0,0,985,986,1,0,0,0,986,27,1,0,0,0,987,985,1,0,0,0,988,989,5,33,0,0,989,990,5,475,0,0,990,991,5,73,0,0,991,992,3,612,306,0,992,993,5,5,0,0,993,994,5,659,0,0,994,1e3,5,1148,0,0,995,997,5,453,0,0,996,998,5,1124,0,0,997,996,1,0,0,0,997,998,1,0,0,0,998,999,1,0,0,0,999,1001,3,620,310,0,1e3,995,1,0,0,0,1e3,1001,1,0,0,0,1001,1007,1,0,0,0,1002,1004,5,660,0,0,1003,1005,5,1124,0,0,1004,1003,1,0,0,0,1004,1005,1,0,0,0,1005,1006,1,0,0,0,1006,1008,3,620,310,0,1007,1002,1,0,0,0,1007,1008,1,0,0,0,1008,1014,1,0,0,0,1009,1011,5,572,0,0,1010,1012,5,1124,0,0,1011,1010,1,0,0,0,1011,1012,1,0,0,0,1012,1013,1,0,0,0,1013,1015,3,620,310,0,1014,1009,1,0,0,0,1014,1015,1,0,0,0,1015,1021,1,0,0,0,1016,1018,5,528,0,0,1017,1019,5,1124,0,0,1018,1017,1,0,0,0,1018,1019,1,0,0,0,1019,1020,1,0,0,0,1020,1022,3,612,306,0,1021,1016,1,0,0,0,1021,1022,1,0,0,0,1022,1024,1,0,0,0,1023,1025,5,674,0,0,1024,1023,1,0,0,0,1024,1025,1,0,0,0,1025,1031,1,0,0,0,1026,1028,5,368,0,0,1027,1029,5,1124,0,0,1028,1027,1,0,0,0,1028,1029,1,0,0,0,1029,1030,1,0,0,0,1030,1032,5,1148,0,0,1031,1026,1,0,0,0,1031,1032,1,0,0,0,1032,1033,1,0,0,0,1033,1035,5,409,0,0,1034,1036,5,1124,0,0,1035,1034,1,0,0,0,1035,1036,1,0,0,0,1036,1037,1,0,0,0,1037,1038,3,600,300,0,1038,29,1,0,0,0,1039,1041,5,33,0,0,1040,1042,3,62,31,0,1041,1040,1,0,0,0,1041,1042,1,0,0,0,1042,1043,1,0,0,0,1043,1044,5,131,0,0,1044,1045,3,552,276,0,1045,1047,5,1133,0,0,1046,1048,3,78,39,0,1047,1046,1,0,0,0,1047,1048,1,0,0,0,1048,1053,1,0,0,0,1049,1050,5,1135,0,0,1050,1052,3,78,39,0,1051,1049,1,0,0,0,1052,1055,1,0,0,0,1053,1051,1,0,0,0,1053,1054,1,0,0,0,1054,1056,1,0,0,0,1055,1053,1,0,0,0,1056,1060,5,1134,0,0,1057,1059,3,82,41,0,1058,1057,1,0,0,0,1059,1062,1,0,0,0,1060,1058,1,0,0,0,1060,1061,1,0,0,0,1061,1063,1,0,0,0,1062,1060,1,0,0,0,1063,1064,3,388,194,0,1064,31,1,0,0,0,1065,1067,5,33,0,0,1066,1068,3,62,31,0,1067,1066,1,0,0,0,1067,1068,1,0,0,0,1068,1070,1,0,0,0,1069,1071,5,335,0,0,1070,1069,1,0,0,0,1070,1071,1,0,0,0,1071,1072,1,0,0,0,1072,1074,5,437,0,0,1073,1075,3,670,335,0,1074,1073,1,0,0,0,1074,1075,1,0,0,0,1075,1076,1,0,0,0,1076,1077,3,552,276,0,1077,1079,5,1133,0,0,1078,1080,3,80,40,0,1079,1078,1,0,0,0,1079,1080,1,0,0,0,1080,1085,1,0,0,0,1081,1082,5,1135,0,0,1082,1084,3,80,40,0,1083,1081,1,0,0,0,1084,1087,1,0,0,0,1085,1083,1,0,0,0,1085,1086,1,0,0,0,1086,1088,1,0,0,0,1087,1085,1,0,0,0,1088,1089,5,1134,0,0,1089,1090,5,594,0,0,1090,1094,3,632,316,0,1091,1093,3,82,41,0,1092,1091,1,0,0,0,1093,1096,1,0,0,0,1094,1092,1,0,0,0,1094,1095,1,0,0,0,1095,1099,1,0,0,0,1096,1094,1,0,0,0,1097,1100,3,388,194,0,1098,1100,3,404,202,0,1099,1097,1,0,0,0,1099,1098,1,0,0,0,1100,33,1,0,0,0,1101,1102,5,33,0,0,1102,1104,5,596,0,0,1103,1105,3,670,335,0,1104,1103,1,0,0,0,1104,1105,1,0,0,0,1105,1106,1,0,0,0,1106,1107,3,562,281,0,1107,35,1,0,0,0,1108,1109,5,33,0,0,1109,1110,5,608,0,0,1110,1111,3,612,306,0,1111,1112,5,67,0,0,1112,1113,5,388,0,0,1113,1114,5,679,0,0,1114,1115,7,5,0,0,1115,1116,5,541,0,0,1116,1117,5,1133,0,0,1117,1122,3,84,42,0,1118,1119,5,1135,0,0,1119,1121,3,84,42,0,1120,1118,1,0,0,0,1121,1124,1,0,0,0,1122,1120,1,0,0,0,1122,1123,1,0,0,0,1123,1125,1,0,0,0,1124,1122,1,0,0,0,1125,1126,5,1134,0,0,1126,37,1,0,0,0,1127,1129,5,33,0,0,1128,1130,5,649,0,0,1129,1128,1,0,0,0,1129,1130,1,0,0,0,1130,1131,1,0,0,0,1131,1133,5,172,0,0,1132,1134,3,670,335,0,1133,1132,1,0,0,0,1133,1134,1,0,0,0,1134,1135,1,0,0,0,1135,1143,3,554,277,0,1136,1137,5,98,0,0,1137,1144,3,554,277,0,1138,1139,5,1133,0,0,1139,1140,5,98,0,0,1140,1141,3,554,277,0,1141,1142,5,1134,0,0,1142,1144,1,0,0,0,1143,1136,1,0,0,0,1143,1138,1,0,0,0,1144,1206,1,0,0,0,1145,1147,5,33,0,0,1146,1148,5,649,0,0,1147,1146,1,0,0,0,1147,1148,1,0,0,0,1148,1149,1,0,0,0,1149,1151,5,172,0,0,1150,1152,3,670,335,0,1151,1150,1,0,0,0,1151,1152,1,0,0,0,1152,1153,1,0,0,0,1153,1155,3,554,277,0,1154,1156,3,86,43,0,1155,1154,1,0,0,0,1155,1156,1,0,0,0,1156,1167,1,0,0,0,1157,1164,3,104,52,0,1158,1160,5,1135,0,0,1159,1158,1,0,0,0,1159,1160,1,0,0,0,1160,1161,1,0,0,0,1161,1163,3,104,52,0,1162,1159,1,0,0,0,1163,1166,1,0,0,0,1164,1162,1,0,0,0,1164,1165,1,0,0,0,1165,1168,1,0,0,0,1166,1164,1,0,0,0,1167,1157,1,0,0,0,1167,1168,1,0,0,0,1168,1170,1,0,0,0,1169,1171,3,110,55,0,1170,1169,1,0,0,0,1170,1171,1,0,0,0,1171,1173,1,0,0,0,1172,1174,7,6,0,0,1173,1172,1,0,0,0,1173,1174,1,0,0,0,1174,1176,1,0,0,0,1175,1177,5,12,0,0,1176,1175,1,0,0,0,1176,1177,1,0,0,0,1177,1178,1,0,0,0,1178,1179,3,198,99,0,1179,1206,1,0,0,0,1180,1182,5,33,0,0,1181,1183,5,649,0,0,1182,1181,1,0,0,0,1182,1183,1,0,0,0,1183,1184,1,0,0,0,1184,1186,5,172,0,0,1185,1187,3,670,335,0,1186,1185,1,0,0,0,1186,1187,1,0,0,0,1187,1188,1,0,0,0,1188,1189,3,554,277,0,1189,1200,3,86,43,0,1190,1197,3,104,52,0,1191,1193,5,1135,0,0,1192,1191,1,0,0,0,1192,1193,1,0,0,0,1193,1194,1,0,0,0,1194,1196,3,104,52,0,1195,1192,1,0,0,0,1196,1199,1,0,0,0,1197,1195,1,0,0,0,1197,1198,1,0,0,0,1198,1201,1,0,0,0,1199,1197,1,0,0,0,1200,1190,1,0,0,0,1200,1201,1,0,0,0,1201,1203,1,0,0,0,1202,1204,3,110,55,0,1203,1202,1,0,0,0,1203,1204,1,0,0,0,1204,1206,1,0,0,0,1205,1127,1,0,0,0,1205,1145,1,0,0,0,1205,1180,1,0,0,0,1206,39,1,0,0,0,1207,1208,5,33,0,0,1208,1209,5,647,0,0,1209,1210,3,612,306,0,1210,1211,5,5,0,0,1211,1212,5,389,0,0,1212,1216,5,1148,0,0,1213,1214,5,428,0,0,1214,1215,5,1124,0,0,1215,1217,3,620,310,0,1216,1213,1,0,0,0,1216,1217,1,0,0,0,1217,1223,1,0,0,0,1218,1220,5,409,0,0,1219,1221,5,1124,0,0,1220,1219,1,0,0,0,1220,1221,1,0,0,0,1221,1222,1,0,0,0,1222,1224,3,600,300,0,1223,1218,1,0,0,0,1223,1224,1,0,0,0,1224,41,1,0,0,0,1225,1226,5,33,0,0,1226,1227,5,647,0,0,1227,1228,3,612,306,0,1228,1229,5,5,0,0,1229,1230,5,389,0,0,1230,1231,5,1148,0,0,1231,1232,5,186,0,0,1232,1233,5,475,0,0,1233,1234,5,73,0,0,1234,1240,3,612,306,0,1235,1237,5,423,0,0,1236,1238,5,1124,0,0,1237,1236,1,0,0,0,1237,1238,1,0,0,0,1238,1239,1,0,0,0,1239,1241,3,620,310,0,1240,1235,1,0,0,0,1240,1241,1,0,0,0,1241,1247,1,0,0,0,1242,1244,5,453,0,0,1243,1245,5,1124,0,0,1244,1243,1,0,0,0,1244,1245,1,0,0,0,1245,1246,1,0,0,0,1246,1248,3,620,310,0,1247,1242,1,0,0,0,1247,1248,1,0,0,0,1248,1254,1,0,0,0,1249,1251,5,341,0,0,1250,1252,5,1124,0,0,1251,1250,1,0,0,0,1251,1252,1,0,0,0,1252,1253,1,0,0,0,1253,1255,3,620,310,0,1254,1249,1,0,0,0,1254,1255,1,0,0,0,1255,1261,1,0,0,0,1256,1258,5,501,0,0,1257,1259,5,1124,0,0,1258,1257,1,0,0,0,1258,1259,1,0,0,0,1259,1260,1,0,0,0,1260,1262,3,620,310,0,1261,1256,1,0,0,0,1261,1262,1,0,0,0,1262,1268,1,0,0,0,1263,1265,5,528,0,0,1264,1266,5,1124,0,0,1265,1264,1,0,0,0,1265,1266,1,0,0,0,1266,1267,1,0,0,0,1267,1269,3,612,306,0,1268,1263,1,0,0,0,1268,1269,1,0,0,0,1269,1271,1,0,0,0,1270,1272,5,674,0,0,1271,1270,1,0,0,0,1271,1272,1,0,0,0,1272,1278,1,0,0,0,1273,1275,5,368,0,0,1274,1276,5,1124,0,0,1275,1274,1,0,0,0,1275,1276,1,0,0,0,1276,1277,1,0,0,0,1277,1279,5,1148,0,0,1278,1273,1,0,0,0,1278,1279,1,0,0,0,1279,1280,1,0,0,0,1280,1282,5,409,0,0,1281,1283,5,1124,0,0,1282,1281,1,0,0,0,1282,1283,1,0,0,0,1283,1284,1,0,0,0,1284,1285,3,600,300,0,1285,43,1,0,0,0,1286,1288,5,33,0,0,1287,1289,3,62,31,0,1288,1287,1,0,0,0,1288,1289,1,0,0,0,1289,1290,1,0,0,0,1290,1292,5,177,0,0,1291,1293,3,670,335,0,1292,1291,1,0,0,0,1292,1293,1,0,0,0,1293,1294,1,0,0,0,1294,1295,3,552,276,0,1295,1296,7,7,0,0,1296,1297,7,8,0,0,1297,1298,5,118,0,0,1298,1299,3,554,277,0,1299,1300,5,65,0,0,1300,1301,5,52,0,0,1301,1304,5,600,0,0,1302,1303,7,9,0,0,1303,1305,3,552,276,0,1304,1302,1,0,0,0,1304,1305,1,0,0,0,1305,1306,1,0,0,0,1306,1307,3,388,194,0,1307,45,1,0,0,0,1308,1310,5,192,0,0,1309,1311,5,571,0,0,1310,1309,1,0,0,0,1310,1311,1,0,0,0,1311,1312,1,0,0,0,1312,1313,3,48,24,0,1313,47,1,0,0,0,1314,1326,3,50,25,0,1315,1316,5,1133,0,0,1316,1321,3,52,26,0,1317,1318,5,1135,0,0,1318,1320,3,52,26,0,1319,1317,1,0,0,0,1320,1323,1,0,0,0,1321,1319,1,0,0,0,1321,1322,1,0,0,0,1322,1324,1,0,0,0,1323,1321,1,0,0,0,1324,1325,5,1134,0,0,1325,1327,1,0,0,0,1326,1315,1,0,0,0,1326,1327,1,0,0,0,1327,1328,1,0,0,0,1328,1329,5,12,0,0,1329,1330,5,1133,0,0,1330,1331,3,8,4,0,1331,1334,5,1134,0,0,1332,1333,5,1135,0,0,1333,1335,3,48,24,0,1334,1332,1,0,0,0,1334,1335,1,0,0,0,1335,49,1,0,0,0,1336,1337,3,612,306,0,1337,51,1,0,0,0,1338,1339,3,612,306,0,1339,53,1,0,0,0,1340,1342,5,33,0,0,1341,1343,3,672,336,0,1342,1341,1,0,0,0,1342,1343,1,0,0,0,1343,1347,1,0,0,0,1344,1345,5,336,0,0,1345,1346,5,1124,0,0,1346,1348,7,10,0,0,1347,1344,1,0,0,0,1347,1348,1,0,0,0,1348,1350,1,0,0,0,1349,1351,3,62,31,0,1350,1349,1,0,0,0,1350,1351,1,0,0,0,1351,1355,1,0,0,0,1352,1353,5,160,0,0,1353,1354,5,606,0,0,1354,1356,7,11,0,0,1355,1352,1,0,0,0,1355,1356,1,0,0,0,1356,1357,1,0,0,0,1357,1358,5,671,0,0,1358,1363,3,552,276,0,1359,1360,5,1133,0,0,1360,1361,3,644,322,0,1361,1362,5,1134,0,0,1362,1364,1,0,0,0,1363,1359,1,0,0,0,1363,1364,1,0,0,0,1364,1365,1,0,0,0,1365,1385,5,12,0,0,1366,1368,5,1133,0,0,1367,1369,3,46,23,0,1368,1367,1,0,0,0,1368,1369,1,0,0,0,1369,1370,1,0,0,0,1370,1371,3,198,99,0,1371,1372,5,1134,0,0,1372,1386,1,0,0,0,1373,1375,3,46,23,0,1374,1373,1,0,0,0,1374,1375,1,0,0,0,1375,1376,1,0,0,0,1376,1383,3,198,99,0,1377,1379,5,192,0,0,1378,1380,7,12,0,0,1379,1378,1,0,0,0,1379,1380,1,0,0,0,1380,1381,1,0,0,0,1381,1382,5,26,0,0,1382,1384,5,120,0,0,1383,1377,1,0,0,0,1383,1384,1,0,0,0,1384,1386,1,0,0,0,1385,1366,1,0,0,0,1385,1374,1,0,0,0,1386,55,1,0,0,0,1387,1389,5,42,0,0,1388,1387,1,0,0,0,1388,1389,1,0,0,0,1389,1390,1,0,0,0,1390,1392,3,58,29,0,1391,1393,5,1124,0,0,1392,1391,1,0,0,0,1392,1393,1,0,0,0,1393,1396,1,0,0,0,1394,1397,3,596,298,0,1395,1397,5,42,0,0,1396,1394,1,0,0,0,1396,1395,1,0,0,0,1397,1421,1,0,0,0,1398,1400,5,42,0,0,1399,1398,1,0,0,0,1399,1400,1,0,0,0,1400,1401,1,0,0,0,1401,1403,5,27,0,0,1402,1404,5,1124,0,0,1403,1402,1,0,0,0,1403,1404,1,0,0,0,1404,1405,1,0,0,0,1405,1421,3,598,299,0,1406,1408,5,42,0,0,1407,1406,1,0,0,0,1407,1408,1,0,0,0,1408,1409,1,0,0,0,1409,1411,5,405,0,0,1410,1412,5,1124,0,0,1411,1410,1,0,0,0,1411,1412,1,0,0,0,1412,1413,1,0,0,0,1413,1421,5,1148,0,0,1414,1415,5,134,0,0,1415,1417,5,538,0,0,1416,1418,5,1124,0,0,1417,1416,1,0,0,0,1417,1418,1,0,0,0,1418,1419,1,0,0,0,1419,1421,7,13,0,0,1420,1388,1,0,0,0,1420,1399,1,0,0,0,1420,1407,1,0,0,0,1420,1414,1,0,0,0,1421,57,1,0,0,0,1422,1423,5,25,0,0,1423,1428,5,153,0,0,1424,1428,5,841,0,0,1425,1426,5,222,0,0,1426,1428,5,153,0,0,1427,1422,1,0,0,0,1427,1424,1,0,0,0,1427,1425,1,0,0,0,1428,59,1,0,0,0,1429,1432,5,37,0,0,1430,1431,5,1133,0,0,1431,1433,5,1134,0,0,1432,1430,1,0,0,0,1432,1433,1,0,0,0,1433,61,1,0,0,0,1434,1435,5,392,0,0,1435,1438,5,1124,0,0,1436,1439,3,592,296,0,1437,1439,3,60,30,0,1438,1436,1,0,0,0,1438,1437,1,0,0,0,1439,63,1,0,0,0,1440,1441,5,338,0,0,1441,1445,3,66,33,0,1442,1444,3,68,34,0,1443,1442,1,0,0,0,1444,1447,1,0,0,0,1445,1443,1,0,0,0,1445,1446,1,0,0,0,1446,1475,1,0,0,0,1447,1445,1,0,0,0,1448,1451,5,417,0,0,1449,1452,3,618,309,0,1450,1452,3,716,358,0,1451,1449,1,0,0,0,1451,1450,1,0,0,0,1452,1453,1,0,0,0,1453,1462,3,70,35,0,1454,1455,5,630,0,0,1455,1459,3,66,33,0,1456,1458,3,68,34,0,1457,1456,1,0,0,0,1458,1461,1,0,0,0,1459,1457,1,0,0,0,1459,1460,1,0,0,0,1460,1463,1,0,0,0,1461,1459,1,0,0,0,1462,1454,1,0,0,0,1462,1463,1,0,0,0,1463,1472,1,0,0,0,1464,1465,5,408,0,0,1465,1469,3,66,33,0,1466,1468,3,68,34,0,1467,1466,1,0,0,0,1468,1471,1,0,0,0,1469,1467,1,0,0,0,1469,1470,1,0,0,0,1470,1473,1,0,0,0,1471,1469,1,0,0,0,1472,1464,1,0,0,0,1472,1473,1,0,0,0,1473,1475,1,0,0,0,1474,1440,1,0,0,0,1474,1448,1,0,0,0,1475,65,1,0,0,0,1476,1481,5,315,0,0,1477,1481,3,622,311,0,1478,1481,3,618,309,0,1479,1481,3,716,358,0,1480,1476,1,0,0,0,1480,1477,1,0,0,0,1480,1478,1,0,0,0,1480,1479,1,0,0,0,1481,67,1,0,0,0,1482,1483,5,1120,0,0,1483,1486,5,86,0,0,1484,1487,3,618,309,0,1485,1487,3,716,358,0,1486,1484,1,0,0,0,1486,1485,1,0,0,0,1487,1488,1,0,0,0,1488,1489,3,70,35,0,1489,69,1,0,0,0,1490,1504,3,742,371,0,1491,1504,5,221,0,0,1492,1504,5,240,0,0,1493,1504,5,241,0,0,1494,1504,5,242,0,0,1495,1504,5,243,0,0,1496,1504,5,244,0,0,1497,1504,5,245,0,0,1498,1504,5,246,0,0,1499,1504,5,247,0,0,1500,1504,5,248,0,0,1501,1504,5,249,0,0,1502,1504,5,250,0,0,1503,1490,1,0,0,0,1503,1491,1,0,0,0,1503,1492,1,0,0,0,1503,1493,1,0,0,0,1503,1494,1,0,0,0,1503,1495,1,0,0,0,1503,1496,1,0,0,0,1503,1497,1,0,0,0,1503,1498,1,0,0,0,1503,1499,1,0,0,0,1503,1500,1,0,0,0,1503,1501,1,0,0,0,1503,1502,1,0,0,0,1504,71,1,0,0,0,1505,1511,5,403,0,0,1506,1511,5,396,0,0,1507,1508,5,396,0,0,1508,1509,5,118,0,0,1509,1511,5,614,0,0,1510,1505,1,0,0,0,1510,1506,1,0,0,0,1510,1507,1,0,0,0,1511,73,1,0,0,0,1512,1513,5,187,0,0,1513,1514,7,14,0,0,1514,75,1,0,0,0,1515,1517,5,467,0,0,1516,1518,5,1124,0,0,1517,1516,1,0,0,0,1517,1518,1,0,0,0,1518,1519,1,0,0,0,1519,1538,3,620,310,0,1520,1538,3,74,37,0,1521,1522,5,192,0,0,1522,1523,5,547,0,0,1523,1538,3,612,306,0,1524,1525,5,368,0,0,1525,1538,5,1148,0,0,1526,1538,7,15,0,0,1527,1529,5,875,0,0,1528,1530,5,1124,0,0,1529,1528,1,0,0,0,1529,1530,1,0,0,0,1530,1531,1,0,0,0,1531,1538,5,1148,0,0,1532,1534,5,1e3,0,0,1533,1535,5,1124,0,0,1534,1533,1,0,0,0,1534,1535,1,0,0,0,1535,1536,1,0,0,0,1536,1538,5,1148,0,0,1537,1515,1,0,0,0,1537,1520,1,0,0,0,1537,1521,1,0,0,0,1537,1524,1,0,0,0,1537,1526,1,0,0,0,1537,1527,1,0,0,0,1537,1532,1,0,0,0,1538,77,1,0,0,0,1539,1541,7,16,0,0,1540,1539,1,0,0,0,1540,1541,1,0,0,0,1541,1542,1,0,0,0,1542,1543,3,612,306,0,1543,1544,3,632,316,0,1544,79,1,0,0,0,1545,1546,3,612,306,0,1546,1547,3,632,316,0,1547,81,1,0,0,0,1548,1549,5,368,0,0,1549,1572,5,1148,0,0,1550,1551,5,468,0,0,1551,1572,5,160,0,0,1552,1554,5,114,0,0,1553,1552,1,0,0,0,1553,1554,1,0,0,0,1554,1555,1,0,0,0,1555,1572,5,47,0,0,1556,1557,5,381,0,0,1557,1567,5,160,0,0,1558,1559,5,521,0,0,1559,1567,5,160,0,0,1560,1561,5,135,0,0,1561,1562,5,160,0,0,1562,1567,5,388,0,0,1563,1564,5,112,0,0,1564,1565,5,160,0,0,1565,1567,5,388,0,0,1566,1556,1,0,0,0,1566,1558,1,0,0,0,1566,1560,1,0,0,0,1566,1563,1,0,0,0,1567,1572,1,0,0,0,1568,1569,5,160,0,0,1569,1570,5,606,0,0,1570,1572,7,11,0,0,1571,1548,1,0,0,0,1571,1550,1,0,0,0,1571,1553,1,0,0,0,1571,1566,1,0,0,0,1571,1568,1,0,0,0,1572,83,1,0,0,0,1573,1574,5,446,0,0,1574,1588,5,1148,0,0,1575,1576,5,39,0,0,1576,1588,5,1148,0,0,1577,1578,5,665,0,0,1578,1588,5,1148,0,0,1579,1580,5,551,0,0,1580,1588,5,1148,0,0,1581,1582,5,617,0,0,1582,1588,5,1148,0,0,1583,1584,5,542,0,0,1584,1588,5,1148,0,0,1585,1586,5,557,0,0,1586,1588,3,618,309,0,1587,1573,1,0,0,0,1587,1575,1,0,0,0,1587,1577,1,0,0,0,1587,1579,1,0,0,0,1587,1581,1,0,0,0,1587,1583,1,0,0,0,1587,1585,1,0,0,0,1588,85,1,0,0,0,1589,1590,5,1133,0,0,1590,1595,3,88,44,0,1591,1592,5,1135,0,0,1592,1594,3,88,44,0,1593,1591,1,0,0,0,1594,1597,1,0,0,0,1595,1593,1,0,0,0,1595,1596,1,0,0,0,1596,1598,1,0,0,0,1597,1595,1,0,0,0,1598,1599,5,1134,0,0,1599,87,1,0,0,0,1600,1601,3,570,285,0,1601,1602,3,90,45,0,1602,1612,1,0,0,0,1603,1605,3,94,47,0,1604,1606,5,114,0,0,1605,1604,1,0,0,0,1605,1606,1,0,0,0,1606,1608,1,0,0,0,1607,1609,5,57,0,0,1608,1607,1,0,0,0,1608,1609,1,0,0,0,1609,1612,1,0,0,0,1610,1612,3,102,51,0,1611,1600,1,0,0,0,1611,1603,1,0,0,0,1611,1610,1,0,0,0,1612,89,1,0,0,0,1613,1617,3,632,316,0,1614,1616,3,92,46,0,1615,1614,1,0,0,0,1616,1619,1,0,0,0,1617,1615,1,0,0,0,1617,1618,1,0,0,0,1618,1621,1,0,0,0,1619,1617,1,0,0,0,1620,1622,5,114,0,0,1621,1620,1,0,0,0,1621,1622,1,0,0,0,1622,1624,1,0,0,0,1623,1625,5,57,0,0,1624,1623,1,0,0,0,1624,1625,1,0,0,0,1625,91,1,0,0,0,1626,1680,3,628,314,0,1627,1628,5,42,0,0,1628,1680,3,662,331,0,1629,1680,5,673,0,0,1630,1680,5,459,0,0,1631,1636,5,342,0,0,1632,1633,5,118,0,0,1633,1634,5,184,0,0,1634,1636,3,664,332,0,1635,1631,1,0,0,0,1635,1632,1,0,0,0,1636,1680,1,0,0,0,1637,1639,5,130,0,0,1638,1637,1,0,0,0,1638,1639,1,0,0,0,1639,1640,1,0,0,0,1640,1680,5,91,0,0,1641,1643,5,181,0,0,1642,1644,5,91,0,0,1643,1642,1,0,0,0,1643,1644,1,0,0,0,1644,1680,1,0,0,0,1645,1646,5,368,0,0,1646,1680,5,1148,0,0,1647,1648,5,366,0,0,1648,1680,7,17,0,0,1649,1650,5,636,0,0,1650,1680,7,18,0,0,1651,1680,3,96,48,0,1652,1653,5,27,0,0,1653,1680,3,598,299,0,1654,1655,5,70,0,0,1655,1657,5,8,0,0,1656,1654,1,0,0,0,1656,1657,1,0,0,0,1657,1658,1,0,0,0,1658,1659,5,12,0,0,1659,1660,5,1133,0,0,1660,1661,3,716,358,0,1661,1663,5,1134,0,0,1662,1664,7,19,0,0,1663,1662,1,0,0,0,1663,1664,1,0,0,0,1664,1680,1,0,0,0,1665,1666,5,239,0,0,1666,1667,5,42,0,0,1667,1680,5,669,0,0,1668,1670,5,30,0,0,1669,1671,3,612,306,0,1670,1669,1,0,0,0,1670,1671,1,0,0,0,1671,1673,1,0,0,0,1672,1668,1,0,0,0,1672,1673,1,0,0,0,1673,1674,1,0,0,0,1674,1675,5,26,0,0,1675,1676,5,1133,0,0,1676,1677,3,716,358,0,1677,1678,5,1134,0,0,1678,1680,1,0,0,0,1679,1626,1,0,0,0,1679,1627,1,0,0,0,1679,1629,1,0,0,0,1679,1630,1,0,0,0,1679,1635,1,0,0,0,1679,1638,1,0,0,0,1679,1641,1,0,0,0,1679,1645,1,0,0,0,1679,1647,1,0,0,0,1679,1649,1,0,0,0,1679,1651,1,0,0,0,1679,1652,1,0,0,0,1679,1656,1,0,0,0,1679,1665,1,0,0,0,1679,1672,1,0,0,0,1680,93,1,0,0,0,1681,1683,5,30,0,0,1682,1684,3,612,306,0,1683,1682,1,0,0,0,1683,1684,1,0,0,0,1684,1686,1,0,0,0,1685,1681,1,0,0,0,1685,1686,1,0,0,0,1686,1687,1,0,0,0,1687,1688,5,130,0,0,1688,1690,5,91,0,0,1689,1691,3,612,306,0,1690,1689,1,0,0,0,1690,1691,1,0,0,0,1691,1693,1,0,0,0,1692,1694,3,74,37,0,1693,1692,1,0,0,0,1693,1694,1,0,0,0,1694,1695,1,0,0,0,1695,1699,3,650,325,0,1696,1698,3,76,38,0,1697,1696,1,0,0,0,1698,1701,1,0,0,0,1699,1697,1,0,0,0,1699,1700,1,0,0,0,1700,1751,1,0,0,0,1701,1699,1,0,0,0,1702,1704,5,30,0,0,1703,1705,3,612,306,0,1704,1703,1,0,0,0,1704,1705,1,0,0,0,1705,1707,1,0,0,0,1706,1702,1,0,0,0,1706,1707,1,0,0,0,1707,1708,1,0,0,0,1708,1710,5,181,0,0,1709,1711,7,20,0,0,1710,1709,1,0,0,0,1710,1711,1,0,0,0,1711,1713,1,0,0,0,1712,1714,3,612,306,0,1713,1712,1,0,0,0,1713,1714,1,0,0,0,1714,1716,1,0,0,0,1715,1717,3,74,37,0,1716,1715,1,0,0,0,1716,1717,1,0,0,0,1717,1718,1,0,0,0,1718,1722,3,650,325,0,1719,1721,3,76,38,0,1720,1719,1,0,0,0,1721,1724,1,0,0,0,1722,1720,1,0,0,0,1722,1723,1,0,0,0,1723,1751,1,0,0,0,1724,1722,1,0,0,0,1725,1727,5,30,0,0,1726,1728,3,612,306,0,1727,1726,1,0,0,0,1727,1728,1,0,0,0,1728,1730,1,0,0,0,1729,1725,1,0,0,0,1729,1730,1,0,0,0,1730,1731,1,0,0,0,1731,1732,5,67,0,0,1732,1734,5,91,0,0,1733,1735,3,612,306,0,1734,1733,1,0,0,0,1734,1735,1,0,0,0,1735,1736,1,0,0,0,1736,1737,3,650,325,0,1737,1738,3,96,48,0,1738,1751,1,0,0,0,1739,1741,5,30,0,0,1740,1742,3,612,306,0,1741,1740,1,0,0,0,1741,1742,1,0,0,0,1742,1744,1,0,0,0,1743,1739,1,0,0,0,1743,1744,1,0,0,0,1744,1745,1,0,0,0,1745,1746,5,26,0,0,1746,1747,5,1133,0,0,1747,1748,3,716,358,0,1748,1749,5,1134,0,0,1749,1751,1,0,0,0,1750,1685,1,0,0,0,1750,1706,1,0,0,0,1750,1729,1,0,0,0,1750,1743,1,0,0,0,1751,95,1,0,0,0,1752,1753,5,136,0,0,1753,1755,3,554,277,0,1754,1756,3,650,325,0,1755,1754,1,0,0,0,1755,1756,1,0,0,0,1756,1759,1,0,0,0,1757,1758,5,109,0,0,1758,1760,7,21,0,0,1759,1757,1,0,0,0,1759,1760,1,0,0,0,1760,1762,1,0,0,0,1761,1763,3,98,49,0,1762,1761,1,0,0,0,1762,1763,1,0,0,0,1763,97,1,0,0,0,1764,1765,5,118,0,0,1765,1766,5,44,0,0,1766,1770,3,100,50,0,1767,1768,5,118,0,0,1768,1769,5,184,0,0,1769,1771,3,100,50,0,1770,1767,1,0,0,0,1770,1771,1,0,0,0,1771,1781,1,0,0,0,1772,1773,5,118,0,0,1773,1774,5,184,0,0,1774,1778,3,100,50,0,1775,1776,5,118,0,0,1776,1777,5,44,0,0,1777,1779,3,100,50,0,1778,1775,1,0,0,0,1778,1779,1,0,0,0,1779,1781,1,0,0,0,1780,1764,1,0,0,0,1780,1772,1,0,0,0,1781,99,1,0,0,0,1782,1791,5,144,0,0,1783,1791,5,21,0,0,1784,1785,5,153,0,0,1785,1791,5,116,0,0,1786,1787,5,521,0,0,1787,1791,5,333,0,0,1788,1789,5,153,0,0,1789,1791,5,42,0,0,1790,1782,1,0,0,0,1790,1783,1,0,0,0,1790,1784,1,0,0,0,1790,1786,1,0,0,0,1790,1788,1,0,0,0,1791,101,1,0,0,0,1792,1794,7,20,0,0,1793,1795,3,612,306,0,1794,1793,1,0,0,0,1794,1795,1,0,0,0,1795,1797,1,0,0,0,1796,1798,3,74,37,0,1797,1796,1,0,0,0,1797,1798,1,0,0,0,1798,1799,1,0,0,0,1799,1803,3,650,325,0,1800,1802,3,76,38,0,1801,1800,1,0,0,0,1802,1805,1,0,0,0,1803,1801,1,0,0,0,1803,1804,1,0,0,0,1804,1821,1,0,0,0,1805,1803,1,0,0,0,1806,1808,7,22,0,0,1807,1809,7,20,0,0,1808,1807,1,0,0,0,1808,1809,1,0,0,0,1809,1811,1,0,0,0,1810,1812,3,612,306,0,1811,1810,1,0,0,0,1811,1812,1,0,0,0,1812,1813,1,0,0,0,1813,1817,3,650,325,0,1814,1816,3,76,38,0,1815,1814,1,0,0,0,1816,1819,1,0,0,0,1817,1815,1,0,0,0,1817,1818,1,0,0,0,1818,1821,1,0,0,0,1819,1817,1,0,0,0,1820,1792,1,0,0,0,1820,1806,1,0,0,0,1821,103,1,0,0,0,1822,1824,5,409,0,0,1823,1825,5,1124,0,0,1824,1823,1,0,0,0,1824,1825,1,0,0,0,1825,1827,1,0,0,0,1826,1828,3,600,300,0,1827,1826,1,0,0,0,1827,1828,1,0,0,0,1828,2008,1,0,0,0,1829,1831,5,875,0,0,1830,1832,5,1124,0,0,1831,1830,1,0,0,0,1831,1832,1,0,0,0,1832,1833,1,0,0,0,1833,2008,5,1148,0,0,1834,1836,5,341,0,0,1835,1837,5,1124,0,0,1836,1835,1,0,0,0,1836,1837,1,0,0,0,1837,1838,1,0,0,0,1838,2008,3,618,309,0,1839,1841,5,342,0,0,1840,1842,5,1124,0,0,1841,1840,1,0,0,0,1841,1842,1,0,0,0,1842,1843,1,0,0,0,1843,2008,3,618,309,0,1844,1846,5,343,0,0,1845,1847,5,1124,0,0,1846,1845,1,0,0,0,1846,1847,1,0,0,0,1847,1848,1,0,0,0,1848,2008,3,618,309,0,1849,1851,5,42,0,0,1850,1849,1,0,0,0,1850,1851,1,0,0,0,1851,1852,1,0,0,0,1852,1854,3,58,29,0,1853,1855,5,1124,0,0,1854,1853,1,0,0,0,1854,1855,1,0,0,0,1855,1858,1,0,0,0,1856,1859,3,596,298,0,1857,1859,5,42,0,0,1858,1856,1,0,0,0,1858,1857,1,0,0,0,1859,2008,1,0,0,0,1860,1862,7,23,0,0,1861,1863,5,1124,0,0,1862,1861,1,0,0,0,1862,1863,1,0,0,0,1863,1864,1,0,0,0,1864,2008,7,24,0,0,1865,1867,5,42,0,0,1866,1865,1,0,0,0,1866,1867,1,0,0,0,1867,1868,1,0,0,0,1868,1870,5,27,0,0,1869,1871,5,1124,0,0,1870,1869,1,0,0,0,1870,1871,1,0,0,0,1871,1872,1,0,0,0,1872,2008,3,598,299,0,1873,1875,5,368,0,0,1874,1876,5,1124,0,0,1875,1874,1,0,0,0,1875,1876,1,0,0,0,1876,1877,1,0,0,0,1877,2008,5,1148,0,0,1878,1880,5,373,0,0,1879,1881,5,1124,0,0,1880,1879,1,0,0,0,1880,1881,1,0,0,0,1881,1882,1,0,0,0,1882,2008,7,25,0,0,1883,1885,5,376,0,0,1884,1886,5,1124,0,0,1885,1884,1,0,0,0,1885,1886,1,0,0,0,1886,1887,1,0,0,0,1887,2008,5,1148,0,0,1888,1889,7,26,0,0,1889,1891,5,395,0,0,1890,1892,5,1124,0,0,1891,1890,1,0,0,0,1891,1892,1,0,0,0,1892,1893,1,0,0,0,1893,2008,5,1148,0,0,1894,1896,5,393,0,0,1895,1897,5,1124,0,0,1896,1895,1,0,0,0,1896,1897,1,0,0,0,1897,1898,1,0,0,0,1898,2008,7,24,0,0,1899,1901,5,405,0,0,1900,1902,5,1124,0,0,1901,1900,1,0,0,0,1901,1902,1,0,0,0,1902,1903,1,0,0,0,1903,2008,5,1148,0,0,1904,1906,7,27,0,0,1905,1907,5,1124,0,0,1906,1905,1,0,0,0,1906,1907,1,0,0,0,1907,1908,1,0,0,0,1908,2008,7,24,0,0,1909,1911,7,28,0,0,1910,1912,5,1124,0,0,1911,1910,1,0,0,0,1911,1912,1,0,0,0,1912,1913,1,0,0,0,1913,2008,3,618,309,0,1914,1916,5,406,0,0,1915,1917,5,1124,0,0,1916,1915,1,0,0,0,1916,1917,1,0,0,0,1917,1918,1,0,0,0,1918,2008,3,618,309,0,1919,1920,5,81,0,0,1920,1922,5,395,0,0,1921,1923,5,1124,0,0,1922,1921,1,0,0,0,1922,1923,1,0,0,0,1923,1924,1,0,0,0,1924,2008,5,1148,0,0,1925,1927,5,455,0,0,1926,1928,5,1124,0,0,1927,1926,1,0,0,0,1927,1928,1,0,0,0,1928,1929,1,0,0,0,1929,2008,7,29,0,0,1930,1932,5,467,0,0,1931,1933,5,1124,0,0,1932,1931,1,0,0,0,1932,1933,1,0,0,0,1933,1934,1,0,0,0,1934,2008,3,620,310,0,1935,1937,5,500,0,0,1936,1938,5,1124,0,0,1937,1936,1,0,0,0,1937,1938,1,0,0,0,1938,1939,1,0,0,0,1939,2008,3,618,309,0,1940,1942,5,510,0,0,1941,1943,5,1124,0,0,1942,1941,1,0,0,0,1942,1943,1,0,0,0,1943,1944,1,0,0,0,1944,2008,3,618,309,0,1945,1947,5,543,0,0,1946,1948,5,1124,0,0,1947,1946,1,0,0,0,1947,1948,1,0,0,0,1948,1949,1,0,0,0,1949,2008,7,13,0,0,1950,1952,5,551,0,0,1951,1953,5,1124,0,0,1952,1951,1,0,0,0,1952,1953,1,0,0,0,1953,1954,1,0,0,0,1954,2008,5,1148,0,0,1955,1957,5,602,0,0,1956,1958,5,1124,0,0,1957,1956,1,0,0,0,1957,1958,1,0,0,0,1958,1959,1,0,0,0,1959,2008,7,30,0,0,1960,1961,5,629,0,0,1961,2008,5,653,0,0,1962,1964,5,1e3,0,0,1963,1965,5,1124,0,0,1964,1963,1,0,0,0,1964,1965,1,0,0,0,1965,1966,1,0,0,0,1966,2008,5,1148,0,0,1967,1969,5,631,0,0,1968,1970,5,1124,0,0,1969,1968,1,0,0,0,1969,1970,1,0,0,0,1970,1971,1,0,0,0,1971,2008,7,13,0,0,1972,1974,5,632,0,0,1973,1975,5,1124,0,0,1974,1973,1,0,0,0,1974,1975,1,0,0,0,1975,1976,1,0,0,0,1976,2008,7,13,0,0,1977,1979,5,633,0,0,1978,1980,5,1124,0,0,1979,1978,1,0,0,0,1979,1980,1,0,0,0,1980,1983,1,0,0,0,1981,1984,5,42,0,0,1982,1984,3,618,309,0,1983,1981,1,0,0,0,1983,1982,1,0,0,0,1984,2008,1,0,0,0,1985,1986,5,647,0,0,1986,1988,3,612,306,0,1987,1989,3,108,54,0,1988,1987,1,0,0,0,1988,1989,1,0,0,0,1989,2008,1,0,0,0,1990,1991,5,648,0,0,1991,1992,5,1124,0,0,1992,2008,3,106,53,0,1993,2008,3,108,54,0,1994,1996,5,654,0,0,1995,1997,5,1124,0,0,1996,1995,1,0,0,0,1996,1997,1,0,0,0,1997,1998,1,0,0,0,1998,2008,7,24,0,0,1999,2001,5,180,0,0,2e3,2002,5,1124,0,0,2001,2e3,1,0,0,0,2001,2002,1,0,0,0,2002,2003,1,0,0,0,2003,2004,5,1133,0,0,2004,2005,3,648,324,0,2005,2006,5,1134,0,0,2006,2008,1,0,0,0,2007,1822,1,0,0,0,2007,1829,1,0,0,0,2007,1834,1,0,0,0,2007,1839,1,0,0,0,2007,1844,1,0,0,0,2007,1850,1,0,0,0,2007,1860,1,0,0,0,2007,1866,1,0,0,0,2007,1873,1,0,0,0,2007,1878,1,0,0,0,2007,1883,1,0,0,0,2007,1888,1,0,0,0,2007,1894,1,0,0,0,2007,1899,1,0,0,0,2007,1904,1,0,0,0,2007,1909,1,0,0,0,2007,1914,1,0,0,0,2007,1919,1,0,0,0,2007,1925,1,0,0,0,2007,1930,1,0,0,0,2007,1935,1,0,0,0,2007,1940,1,0,0,0,2007,1945,1,0,0,0,2007,1950,1,0,0,0,2007,1955,1,0,0,0,2007,1960,1,0,0,0,2007,1962,1,0,0,0,2007,1967,1,0,0,0,2007,1972,1,0,0,0,2007,1977,1,0,0,0,2007,1985,1,0,0,0,2007,1990,1,0,0,0,2007,1993,1,0,0,0,2007,1994,1,0,0,0,2007,1999,1,0,0,0,2008,105,1,0,0,0,2009,2010,7,31,0,0,2010,107,1,0,0,0,2011,2012,5,636,0,0,2012,2013,7,18,0,0,2013,109,1,0,0,0,2014,2015,5,129,0,0,2015,2016,5,19,0,0,2016,2019,3,112,56,0,2017,2018,5,550,0,0,2018,2020,3,618,309,0,2019,2017,1,0,0,0,2019,2020,1,0,0,0,2020,2028,1,0,0,0,2021,2022,5,641,0,0,2022,2023,5,19,0,0,2023,2026,3,114,57,0,2024,2025,5,642,0,0,2025,2027,3,618,309,0,2026,2024,1,0,0,0,2026,2027,1,0,0,0,2027,2029,1,0,0,0,2028,2021,1,0,0,0,2028,2029,1,0,0,0,2029,2041,1,0,0,0,2030,2031,5,1133,0,0,2031,2036,3,116,58,0,2032,2033,5,1135,0,0,2033,2035,3,116,58,0,2034,2032,1,0,0,0,2035,2038,1,0,0,0,2036,2034,1,0,0,0,2036,2037,1,0,0,0,2037,2039,1,0,0,0,2038,2036,1,0,0,0,2039,2040,5,1134,0,0,2040,2042,1,0,0,0,2041,2030,1,0,0,0,2041,2042,1,0,0,0,2042,111,1,0,0,0,2043,2045,5,100,0,0,2044,2043,1,0,0,0,2044,2045,1,0,0,0,2045,2046,1,0,0,0,2046,2047,5,443,0,0,2047,2048,5,1133,0,0,2048,2049,3,716,358,0,2049,2050,5,1134,0,0,2050,2090,1,0,0,0,2051,2053,5,100,0,0,2052,2051,1,0,0,0,2052,2053,1,0,0,0,2053,2054,1,0,0,0,2054,2058,5,91,0,0,2055,2056,5,336,0,0,2056,2057,5,1124,0,0,2057,2059,7,32,0,0,2058,2055,1,0,0,0,2058,2059,1,0,0,0,2059,2060,1,0,0,0,2060,2062,5,1133,0,0,2061,2063,3,644,322,0,2062,2061,1,0,0,0,2062,2063,1,0,0,0,2063,2064,1,0,0,0,2064,2090,5,1134,0,0,2065,2075,5,133,0,0,2066,2067,5,1133,0,0,2067,2068,3,716,358,0,2068,2069,5,1134,0,0,2069,2076,1,0,0,0,2070,2071,5,365,0,0,2071,2072,5,1133,0,0,2072,2073,3,644,322,0,2073,2074,5,1134,0,0,2074,2076,1,0,0,0,2075,2066,1,0,0,0,2075,2070,1,0,0,0,2076,2090,1,0,0,0,2077,2087,5,473,0,0,2078,2079,5,1133,0,0,2079,2080,3,716,358,0,2080,2081,5,1134,0,0,2081,2088,1,0,0,0,2082,2083,5,365,0,0,2083,2084,5,1133,0,0,2084,2085,3,644,322,0,2085,2086,5,1134,0,0,2086,2088,1,0,0,0,2087,2078,1,0,0,0,2087,2082,1,0,0,0,2088,2090,1,0,0,0,2089,2044,1,0,0,0,2089,2052,1,0,0,0,2089,2065,1,0,0,0,2089,2077,1,0,0,0,2090,113,1,0,0,0,2091,2093,5,100,0,0,2092,2091,1,0,0,0,2092,2093,1,0,0,0,2093,2094,1,0,0,0,2094,2095,5,443,0,0,2095,2096,5,1133,0,0,2096,2097,3,716,358,0,2097,2098,5,1134,0,0,2098,2113,1,0,0,0,2099,2101,5,100,0,0,2100,2099,1,0,0,0,2100,2101,1,0,0,0,2101,2102,1,0,0,0,2102,2106,5,91,0,0,2103,2104,5,336,0,0,2104,2105,5,1124,0,0,2105,2107,7,32,0,0,2106,2103,1,0,0,0,2106,2107,1,0,0,0,2107,2108,1,0,0,0,2108,2109,5,1133,0,0,2109,2110,3,644,322,0,2110,2111,5,1134,0,0,2111,2113,1,0,0,0,2112,2092,1,0,0,0,2112,2100,1,0,0,0,2113,115,1,0,0,0,2114,2115,5,129,0,0,2115,2116,3,612,306,0,2116,2117,5,188,0,0,2117,2118,5,471,0,0,2118,2119,5,651,0,0,2119,2120,5,1133,0,0,2120,2125,3,118,59,0,2121,2122,5,1135,0,0,2122,2124,3,118,59,0,2123,2121,1,0,0,0,2124,2127,1,0,0,0,2125,2123,1,0,0,0,2125,2126,1,0,0,0,2126,2128,1,0,0,0,2127,2125,1,0,0,0,2128,2132,5,1134,0,0,2129,2131,3,124,62,0,2130,2129,1,0,0,0,2131,2134,1,0,0,0,2132,2130,1,0,0,0,2132,2133,1,0,0,0,2133,2146,1,0,0,0,2134,2132,1,0,0,0,2135,2136,5,1133,0,0,2136,2141,3,122,61,0,2137,2138,5,1135,0,0,2138,2140,3,122,61,0,2139,2137,1,0,0,0,2140,2143,1,0,0,0,2141,2139,1,0,0,0,2141,2142,1,0,0,0,2142,2144,1,0,0,0,2143,2141,1,0,0,0,2144,2145,5,1134,0,0,2145,2147,1,0,0,0,2146,2135,1,0,0,0,2146,2147,1,0,0,0,2147,2261,1,0,0,0,2148,2149,5,129,0,0,2149,2150,3,612,306,0,2150,2151,5,188,0,0,2151,2152,5,471,0,0,2152,2153,5,651,0,0,2153,2157,3,118,59,0,2154,2156,3,124,62,0,2155,2154,1,0,0,0,2156,2159,1,0,0,0,2157,2155,1,0,0,0,2157,2158,1,0,0,0,2158,2171,1,0,0,0,2159,2157,1,0,0,0,2160,2161,5,1133,0,0,2161,2166,3,122,61,0,2162,2163,5,1135,0,0,2163,2165,3,122,61,0,2164,2162,1,0,0,0,2165,2168,1,0,0,0,2166,2164,1,0,0,0,2166,2167,1,0,0,0,2167,2169,1,0,0,0,2168,2166,1,0,0,0,2169,2170,5,1134,0,0,2170,2172,1,0,0,0,2171,2160,1,0,0,0,2171,2172,1,0,0,0,2172,2261,1,0,0,0,2173,2174,5,129,0,0,2174,2175,3,612,306,0,2175,2176,5,188,0,0,2176,2177,5,80,0,0,2177,2178,5,1133,0,0,2178,2183,3,118,59,0,2179,2180,5,1135,0,0,2180,2182,3,118,59,0,2181,2179,1,0,0,0,2182,2185,1,0,0,0,2183,2181,1,0,0,0,2183,2184,1,0,0,0,2184,2186,1,0,0,0,2185,2183,1,0,0,0,2186,2190,5,1134,0,0,2187,2189,3,124,62,0,2188,2187,1,0,0,0,2189,2192,1,0,0,0,2190,2188,1,0,0,0,2190,2191,1,0,0,0,2191,2204,1,0,0,0,2192,2190,1,0,0,0,2193,2194,5,1133,0,0,2194,2199,3,122,61,0,2195,2196,5,1135,0,0,2196,2198,3,122,61,0,2197,2195,1,0,0,0,2198,2201,1,0,0,0,2199,2197,1,0,0,0,2199,2200,1,0,0,0,2200,2202,1,0,0,0,2201,2199,1,0,0,0,2202,2203,5,1134,0,0,2203,2205,1,0,0,0,2204,2193,1,0,0,0,2204,2205,1,0,0,0,2205,2261,1,0,0,0,2206,2207,5,129,0,0,2207,2208,3,612,306,0,2208,2209,5,188,0,0,2209,2210,5,80,0,0,2210,2211,5,1133,0,0,2211,2216,3,120,60,0,2212,2213,5,1135,0,0,2213,2215,3,120,60,0,2214,2212,1,0,0,0,2215,2218,1,0,0,0,2216,2214,1,0,0,0,2216,2217,1,0,0,0,2217,2219,1,0,0,0,2218,2216,1,0,0,0,2219,2223,5,1134,0,0,2220,2222,3,124,62,0,2221,2220,1,0,0,0,2222,2225,1,0,0,0,2223,2221,1,0,0,0,2223,2224,1,0,0,0,2224,2237,1,0,0,0,2225,2223,1,0,0,0,2226,2227,5,1133,0,0,2227,2232,3,122,61,0,2228,2229,5,1135,0,0,2229,2231,3,122,61,0,2230,2228,1,0,0,0,2231,2234,1,0,0,0,2232,2230,1,0,0,0,2232,2233,1,0,0,0,2233,2235,1,0,0,0,2234,2232,1,0,0,0,2235,2236,5,1134,0,0,2236,2238,1,0,0,0,2237,2226,1,0,0,0,2237,2238,1,0,0,0,2238,2261,1,0,0,0,2239,2240,5,129,0,0,2240,2244,3,612,306,0,2241,2243,3,124,62,0,2242,2241,1,0,0,0,2243,2246,1,0,0,0,2244,2242,1,0,0,0,2244,2245,1,0,0,0,2245,2258,1,0,0,0,2246,2244,1,0,0,0,2247,2248,5,1133,0,0,2248,2253,3,122,61,0,2249,2250,5,1135,0,0,2250,2252,3,122,61,0,2251,2249,1,0,0,0,2252,2255,1,0,0,0,2253,2251,1,0,0,0,2253,2254,1,0,0,0,2254,2256,1,0,0,0,2255,2253,1,0,0,0,2256,2257,5,1134,0,0,2257,2259,1,0,0,0,2258,2247,1,0,0,0,2258,2259,1,0,0,0,2259,2261,1,0,0,0,2260,2114,1,0,0,0,2260,2148,1,0,0,0,2260,2173,1,0,0,0,2260,2206,1,0,0,0,2260,2239,1,0,0,0,2261,117,1,0,0,0,2262,2266,3,630,315,0,2263,2266,3,716,358,0,2264,2266,5,110,0,0,2265,2262,1,0,0,0,2265,2263,1,0,0,0,2265,2264,1,0,0,0,2266,119,1,0,0,0,2267,2268,5,1133,0,0,2268,2271,3,118,59,0,2269,2270,5,1135,0,0,2270,2272,3,118,59,0,2271,2269,1,0,0,0,2272,2273,1,0,0,0,2273,2271,1,0,0,0,2273,2274,1,0,0,0,2274,2275,1,0,0,0,2275,2276,5,1134,0,0,2276,121,1,0,0,0,2277,2278,5,641,0,0,2278,2282,3,612,306,0,2279,2281,3,124,62,0,2280,2279,1,0,0,0,2281,2284,1,0,0,0,2282,2280,1,0,0,0,2282,2283,1,0,0,0,2283,123,1,0,0,0,2284,2282,1,0,0,0,2285,2287,5,42,0,0,2286,2285,1,0,0,0,2286,2287,1,0,0,0,2287,2289,1,0,0,0,2288,2290,5,636,0,0,2289,2288,1,0,0,0,2289,2290,1,0,0,0,2290,2291,1,0,0,0,2291,2293,5,409,0,0,2292,2294,5,1124,0,0,2293,2292,1,0,0,0,2293,2294,1,0,0,0,2294,2295,1,0,0,0,2295,2334,3,600,300,0,2296,2298,5,368,0,0,2297,2299,5,1124,0,0,2298,2297,1,0,0,0,2298,2299,1,0,0,0,2299,2300,1,0,0,0,2300,2334,5,1148,0,0,2301,2302,5,388,0,0,2302,2304,5,395,0,0,2303,2305,5,1124,0,0,2304,2303,1,0,0,0,2304,2305,1,0,0,0,2305,2306,1,0,0,0,2306,2334,5,1148,0,0,2307,2308,5,81,0,0,2308,2310,5,395,0,0,2309,2311,5,1124,0,0,2310,2309,1,0,0,0,2310,2311,1,0,0,0,2311,2312,1,0,0,0,2312,2334,5,1148,0,0,2313,2315,5,500,0,0,2314,2316,5,1124,0,0,2315,2314,1,0,0,0,2315,2316,1,0,0,0,2316,2317,1,0,0,0,2317,2334,3,618,309,0,2318,2320,5,510,0,0,2319,2321,5,1124,0,0,2320,2319,1,0,0,0,2320,2321,1,0,0,0,2321,2322,1,0,0,0,2322,2334,3,618,309,0,2323,2325,5,647,0,0,2324,2326,5,1124,0,0,2325,2324,1,0,0,0,2325,2326,1,0,0,0,2326,2327,1,0,0,0,2327,2334,3,612,306,0,2328,2330,5,528,0,0,2329,2331,5,1124,0,0,2330,2329,1,0,0,0,2330,2331,1,0,0,0,2331,2332,1,0,0,0,2332,2334,3,612,306,0,2333,2286,1,0,0,0,2333,2296,1,0,0,0,2333,2301,1,0,0,0,2333,2307,1,0,0,0,2333,2313,1,0,0,0,2333,2318,1,0,0,0,2333,2323,1,0,0,0,2333,2328,1,0,0,0,2334,125,1,0,0,0,2335,2336,5,7,0,0,2336,2337,7,0,0,0,2337,2339,3,572,286,0,2338,2340,3,56,28,0,2339,2338,1,0,0,0,2340,2341,1,0,0,0,2341,2339,1,0,0,0,2341,2342,1,0,0,0,2342,2352,1,0,0,0,2343,2344,5,7,0,0,2344,2345,7,0,0,0,2345,2346,3,572,286,0,2346,2347,5,664,0,0,2347,2348,5,388,0,0,2348,2349,5,395,0,0,2349,2350,5,516,0,0,2350,2352,1,0,0,0,2351,2335,1,0,0,0,2351,2343,1,0,0,0,2352,127,1,0,0,0,2353,2355,5,7,0,0,2354,2356,3,62,31,0,2355,2354,1,0,0,0,2355,2356,1,0,0,0,2356,2357,1,0,0,0,2357,2358,5,415,0,0,2358,2362,3,552,276,0,2359,2360,5,118,0,0,2360,2361,5,605,0,0,2361,2363,3,64,32,0,2362,2359,1,0,0,0,2362,2363,1,0,0,0,2363,2370,1,0,0,0,2364,2365,5,118,0,0,2365,2367,5,371,0,0,2366,2368,5,114,0,0,2367,2366,1,0,0,0,2367,2368,1,0,0,0,2368,2369,1,0,0,0,2369,2371,5,561,0,0,2370,2364,1,0,0,0,2370,2371,1,0,0,0,2371,2375,1,0,0,0,2372,2373,5,139,0,0,2373,2374,5,175,0,0,2374,2376,3,552,276,0,2375,2372,1,0,0,0,2375,2376,1,0,0,0,2376,2378,1,0,0,0,2377,2379,3,72,36,0,2378,2377,1,0,0,0,2378,2379,1,0,0,0,2379,2382,1,0,0,0,2380,2381,5,368,0,0,2381,2383,5,1148,0,0,2382,2380,1,0,0,0,2382,2383,1,0,0,0,2383,2386,1,0,0,0,2384,2385,5,399,0,0,2385,2387,3,388,194,0,2386,2384,1,0,0,0,2386,2387,1,0,0,0,2387,129,1,0,0,0,2388,2389,5,7,0,0,2389,2390,5,437,0,0,2390,2394,3,552,276,0,2391,2393,3,82,41,0,2392,2391,1,0,0,0,2393,2396,1,0,0,0,2394,2392,1,0,0,0,2394,2395,1,0,0,0,2395,131,1,0,0,0,2396,2394,1,0,0,0,2397,2398,5,7,0,0,2398,2399,5,457,0,0,2399,2400,5,599,0,0,2400,2401,5,791,0,0,2401,2402,5,477,0,0,2402,2403,5,91,0,0,2403,133,1,0,0,0,2404,2405,5,7,0,0,2405,2406,5,475,0,0,2406,2407,5,73,0,0,2407,2408,3,612,306,0,2408,2409,5,5,0,0,2409,2410,5,659,0,0,2410,2416,5,1148,0,0,2411,2413,5,453,0,0,2412,2414,5,1124,0,0,2413,2412,1,0,0,0,2413,2414,1,0,0,0,2414,2415,1,0,0,0,2415,2417,3,620,310,0,2416,2411,1,0,0,0,2416,2417,1,0,0,0,2417,2419,1,0,0,0,2418,2420,5,674,0,0,2419,2418,1,0,0,0,2419,2420,1,0,0,0,2420,2421,1,0,0,0,2421,2423,5,409,0,0,2422,2424,5,1124,0,0,2423,2422,1,0,0,0,2423,2424,1,0,0,0,2424,2425,1,0,0,0,2425,2426,3,600,300,0,2426,135,1,0,0,0,2427,2428,5,7,0,0,2428,2429,5,131,0,0,2429,2433,3,552,276,0,2430,2432,3,82,41,0,2431,2430,1,0,0,0,2432,2435,1,0,0,0,2433,2431,1,0,0,0,2433,2434,1,0,0,0,2434,137,1,0,0,0,2435,2433,1,0,0,0,2436,2437,5,7,0,0,2437,2438,5,608,0,0,2438,2439,3,612,306,0,2439,2440,5,541,0,0,2440,2441,5,1133,0,0,2441,2446,3,84,42,0,2442,2443,5,1135,0,0,2443,2445,3,84,42,0,2444,2442,1,0,0,0,2445,2448,1,0,0,0,2446,2444,1,0,0,0,2446,2447,1,0,0,0,2447,2449,1,0,0,0,2448,2446,1,0,0,0,2449,2450,5,1134,0,0,2450,139,1,0,0,0,2451,2453,5,7,0,0,2452,2454,7,1,0,0,2453,2452,1,0,0,0,2453,2454,1,0,0,0,2454,2456,1,0,0,0,2455,2457,5,78,0,0,2456,2455,1,0,0,0,2456,2457,1,0,0,0,2457,2458,1,0,0,0,2458,2459,5,172,0,0,2459,2461,3,554,277,0,2460,2462,3,674,337,0,2461,2460,1,0,0,0,2461,2462,1,0,0,0,2462,2471,1,0,0,0,2463,2468,3,146,73,0,2464,2465,5,1135,0,0,2465,2467,3,146,73,0,2466,2464,1,0,0,0,2467,2470,1,0,0,0,2468,2466,1,0,0,0,2468,2469,1,0,0,0,2469,2472,1,0,0,0,2470,2468,1,0,0,0,2471,2463,1,0,0,0,2471,2472,1,0,0,0,2472,2474,1,0,0,0,2473,2475,3,110,55,0,2474,2473,1,0,0,0,2474,2475,1,0,0,0,2475,141,1,0,0,0,2476,2477,5,7,0,0,2477,2478,5,647,0,0,2478,2479,3,612,306,0,2479,2480,7,33,0,0,2480,2481,5,389,0,0,2481,2485,5,1148,0,0,2482,2483,5,453,0,0,2483,2484,5,1124,0,0,2484,2486,3,620,310,0,2485,2482,1,0,0,0,2485,2486,1,0,0,0,2486,2488,1,0,0,0,2487,2489,5,674,0,0,2488,2487,1,0,0,0,2488,2489,1,0,0,0,2489,2490,1,0,0,0,2490,2492,5,409,0,0,2491,2493,5,1124,0,0,2492,2491,1,0,0,0,2492,2493,1,0,0,0,2493,2494,1,0,0,0,2494,2495,3,600,300,0,2495,143,1,0,0,0,2496,2500,5,7,0,0,2497,2498,5,336,0,0,2498,2499,5,1124,0,0,2499,2501,7,10,0,0,2500,2497,1,0,0,0,2500,2501,1,0,0,0,2501,2503,1,0,0,0,2502,2504,3,62,31,0,2503,2502,1,0,0,0,2503,2504,1,0,0,0,2504,2508,1,0,0,0,2505,2506,5,160,0,0,2506,2507,5,606,0,0,2507,2509,7,11,0,0,2508,2505,1,0,0,0,2508,2509,1,0,0,0,2509,2510,1,0,0,0,2510,2511,5,671,0,0,2511,2516,3,552,276,0,2512,2513,5,1133,0,0,2513,2514,3,644,322,0,2514,2515,5,1134,0,0,2515,2517,1,0,0,0,2516,2512,1,0,0,0,2516,2517,1,0,0,0,2517,2518,1,0,0,0,2518,2519,5,12,0,0,2519,2526,3,198,99,0,2520,2522,5,192,0,0,2521,2523,7,12,0,0,2522,2521,1,0,0,0,2522,2523,1,0,0,0,2523,2524,1,0,0,0,2524,2525,5,26,0,0,2525,2527,5,120,0,0,2526,2520,1,0,0,0,2526,2527,1,0,0,0,2527,145,1,0,0,0,2528,2535,3,104,52,0,2529,2531,5,1135,0,0,2530,2529,1,0,0,0,2530,2531,1,0,0,0,2531,2532,1,0,0,0,2532,2534,3,104,52,0,2533,2530,1,0,0,0,2534,2537,1,0,0,0,2535,2533,1,0,0,0,2535,2536,1,0,0,0,2536,2880,1,0,0,0,2537,2535,1,0,0,0,2538,2540,5,5,0,0,2539,2541,5,28,0,0,2540,2539,1,0,0,0,2540,2541,1,0,0,0,2541,2542,1,0,0,0,2542,2543,3,612,306,0,2543,2547,3,90,45,0,2544,2548,5,430,0,0,2545,2546,5,334,0,0,2546,2548,3,612,306,0,2547,2544,1,0,0,0,2547,2545,1,0,0,0,2547,2548,1,0,0,0,2548,2880,1,0,0,0,2549,2551,5,5,0,0,2550,2552,5,28,0,0,2551,2550,1,0,0,0,2551,2552,1,0,0,0,2552,2553,1,0,0,0,2553,2554,5,1133,0,0,2554,2555,3,612,306,0,2555,2562,3,90,45,0,2556,2557,5,1135,0,0,2557,2558,3,612,306,0,2558,2559,3,90,45,0,2559,2561,1,0,0,0,2560,2556,1,0,0,0,2561,2564,1,0,0,0,2562,2560,1,0,0,0,2562,2563,1,0,0,0,2563,2565,1,0,0,0,2564,2562,1,0,0,0,2565,2566,5,1134,0,0,2566,2880,1,0,0,0,2567,2568,5,5,0,0,2568,2570,7,20,0,0,2569,2571,3,612,306,0,2570,2569,1,0,0,0,2570,2571,1,0,0,0,2571,2573,1,0,0,0,2572,2574,3,74,37,0,2573,2572,1,0,0,0,2573,2574,1,0,0,0,2574,2575,1,0,0,0,2575,2579,3,650,325,0,2576,2578,3,76,38,0,2577,2576,1,0,0,0,2578,2581,1,0,0,0,2579,2577,1,0,0,0,2579,2580,1,0,0,0,2580,2880,1,0,0,0,2581,2579,1,0,0,0,2582,2587,5,5,0,0,2583,2585,5,30,0,0,2584,2586,3,612,306,0,2585,2584,1,0,0,0,2585,2586,1,0,0,0,2586,2588,1,0,0,0,2587,2583,1,0,0,0,2587,2588,1,0,0,0,2588,2589,1,0,0,0,2589,2590,5,130,0,0,2590,2592,5,91,0,0,2591,2593,3,612,306,0,2592,2591,1,0,0,0,2592,2593,1,0,0,0,2593,2595,1,0,0,0,2594,2596,3,74,37,0,2595,2594,1,0,0,0,2595,2596,1,0,0,0,2596,2597,1,0,0,0,2597,2601,3,650,325,0,2598,2600,3,76,38,0,2599,2598,1,0,0,0,2600,2603,1,0,0,0,2601,2599,1,0,0,0,2601,2602,1,0,0,0,2602,2880,1,0,0,0,2603,2601,1,0,0,0,2604,2609,5,5,0,0,2605,2607,5,30,0,0,2606,2608,3,612,306,0,2607,2606,1,0,0,0,2607,2608,1,0,0,0,2608,2610,1,0,0,0,2609,2605,1,0,0,0,2609,2610,1,0,0,0,2610,2611,1,0,0,0,2611,2613,5,181,0,0,2612,2614,7,20,0,0,2613,2612,1,0,0,0,2613,2614,1,0,0,0,2614,2616,1,0,0,0,2615,2617,3,612,306,0,2616,2615,1,0,0,0,2616,2617,1,0,0,0,2617,2619,1,0,0,0,2618,2620,3,74,37,0,2619,2618,1,0,0,0,2619,2620,1,0,0,0,2620,2621,1,0,0,0,2621,2625,3,650,325,0,2622,2624,3,76,38,0,2623,2622,1,0,0,0,2624,2627,1,0,0,0,2625,2623,1,0,0,0,2625,2626,1,0,0,0,2626,2880,1,0,0,0,2627,2625,1,0,0,0,2628,2629,5,5,0,0,2629,2631,7,22,0,0,2630,2632,7,20,0,0,2631,2630,1,0,0,0,2631,2632,1,0,0,0,2632,2634,1,0,0,0,2633,2635,3,612,306,0,2634,2633,1,0,0,0,2634,2635,1,0,0,0,2635,2636,1,0,0,0,2636,2640,3,650,325,0,2637,2639,3,76,38,0,2638,2637,1,0,0,0,2639,2642,1,0,0,0,2640,2638,1,0,0,0,2640,2641,1,0,0,0,2641,2880,1,0,0,0,2642,2640,1,0,0,0,2643,2648,5,5,0,0,2644,2646,5,30,0,0,2645,2647,3,612,306,0,2646,2645,1,0,0,0,2646,2647,1,0,0,0,2647,2649,1,0,0,0,2648,2644,1,0,0,0,2648,2649,1,0,0,0,2649,2650,1,0,0,0,2650,2651,5,67,0,0,2651,2653,5,91,0,0,2652,2654,3,612,306,0,2653,2652,1,0,0,0,2653,2654,1,0,0,0,2654,2655,1,0,0,0,2655,2656,3,650,325,0,2656,2657,3,96,48,0,2657,2880,1,0,0,0,2658,2663,5,5,0,0,2659,2661,5,30,0,0,2660,2662,3,612,306,0,2661,2660,1,0,0,0,2661,2662,1,0,0,0,2662,2664,1,0,0,0,2663,2659,1,0,0,0,2663,2664,1,0,0,0,2664,2665,1,0,0,0,2665,2672,5,26,0,0,2666,2673,3,612,306,0,2667,2673,3,622,311,0,2668,2669,5,1133,0,0,2669,2670,3,716,358,0,2670,2671,5,1134,0,0,2671,2673,1,0,0,0,2672,2666,1,0,0,0,2672,2667,1,0,0,0,2672,2668,1,0,0,0,2673,2675,1,0,0,0,2674,2676,5,114,0,0,2675,2674,1,0,0,0,2675,2676,1,0,0,0,2676,2678,1,0,0,0,2677,2679,5,57,0,0,2678,2677,1,0,0,0,2678,2679,1,0,0,0,2679,2880,1,0,0,0,2680,2685,5,7,0,0,2681,2683,5,30,0,0,2682,2684,3,576,288,0,2683,2682,1,0,0,0,2683,2684,1,0,0,0,2684,2686,1,0,0,0,2685,2681,1,0,0,0,2685,2686,1,0,0,0,2686,2687,1,0,0,0,2687,2694,5,26,0,0,2688,2695,3,612,306,0,2689,2695,3,622,311,0,2690,2691,5,1133,0,0,2691,2692,3,716,358,0,2692,2693,5,1134,0,0,2693,2695,1,0,0,0,2694,2688,1,0,0,0,2694,2689,1,0,0,0,2694,2690,1,0,0,0,2695,2697,1,0,0,0,2696,2698,5,114,0,0,2697,2696,1,0,0,0,2697,2698,1,0,0,0,2698,2700,1,0,0,0,2699,2701,5,57,0,0,2700,2699,1,0,0,0,2700,2701,1,0,0,0,2701,2880,1,0,0,0,2702,2707,5,5,0,0,2703,2705,5,30,0,0,2704,2706,3,612,306,0,2705,2704,1,0,0,0,2705,2706,1,0,0,0,2706,2708,1,0,0,0,2707,2703,1,0,0,0,2707,2708,1,0,0,0,2708,2709,1,0,0,0,2709,2710,5,26,0,0,2710,2711,5,1133,0,0,2711,2712,3,716,358,0,2712,2713,5,1134,0,0,2713,2880,1,0,0,0,2714,2716,5,336,0,0,2715,2717,5,1124,0,0,2716,2715,1,0,0,0,2716,2717,1,0,0,0,2717,2718,1,0,0,0,2718,2880,7,34,0,0,2719,2721,5,7,0,0,2720,2722,5,28,0,0,2721,2720,1,0,0,0,2721,2722,1,0,0,0,2722,2723,1,0,0,0,2723,2729,3,612,306,0,2724,2725,5,153,0,0,2725,2726,5,42,0,0,2726,2730,3,662,331,0,2727,2728,5,51,0,0,2728,2730,5,42,0,0,2729,2724,1,0,0,0,2729,2727,1,0,0,0,2730,2880,1,0,0,0,2731,2733,5,24,0,0,2732,2734,5,28,0,0,2733,2732,1,0,0,0,2733,2734,1,0,0,0,2734,2735,1,0,0,0,2735,2736,3,612,306,0,2736,2737,3,612,306,0,2737,2741,3,90,45,0,2738,2742,5,430,0,0,2739,2740,5,334,0,0,2740,2742,3,612,306,0,2741,2738,1,0,0,0,2741,2739,1,0,0,0,2741,2742,1,0,0,0,2742,2880,1,0,0,0,2743,2744,5,139,0,0,2744,2745,5,28,0,0,2745,2746,3,612,306,0,2746,2747,5,175,0,0,2747,2748,3,612,306,0,2748,2880,1,0,0,0,2749,2751,5,103,0,0,2750,2752,5,1124,0,0,2751,2750,1,0,0,0,2751,2752,1,0,0,0,2752,2753,1,0,0,0,2753,2880,7,4,0,0,2754,2756,5,512,0,0,2755,2757,5,28,0,0,2756,2755,1,0,0,0,2756,2757,1,0,0,0,2757,2758,1,0,0,0,2758,2759,3,612,306,0,2759,2763,3,90,45,0,2760,2764,5,430,0,0,2761,2762,5,334,0,0,2762,2764,3,612,306,0,2763,2760,1,0,0,0,2763,2761,1,0,0,0,2763,2764,1,0,0,0,2764,2880,1,0,0,0,2765,2767,5,51,0,0,2766,2768,5,28,0,0,2767,2766,1,0,0,0,2767,2768,1,0,0,0,2768,2769,1,0,0,0,2769,2771,3,612,306,0,2770,2772,5,144,0,0,2771,2770,1,0,0,0,2771,2772,1,0,0,0,2772,2880,1,0,0,0,2773,2774,5,51,0,0,2774,2775,7,35,0,0,2775,2880,3,576,288,0,2776,2777,5,51,0,0,2777,2778,5,130,0,0,2778,2880,5,91,0,0,2779,2780,5,51,0,0,2780,2781,7,20,0,0,2781,2880,3,574,287,0,2782,2783,5,139,0,0,2783,2784,7,20,0,0,2784,2785,3,574,287,0,2785,2786,5,175,0,0,2786,2787,3,612,306,0,2787,2880,1,0,0,0,2788,2790,5,7,0,0,2789,2791,5,28,0,0,2790,2789,1,0,0,0,2790,2791,1,0,0,0,2791,2792,1,0,0,0,2792,2806,3,612,306,0,2793,2794,5,153,0,0,2794,2800,5,42,0,0,2795,2801,3,622,311,0,2796,2797,5,1133,0,0,2797,2798,3,716,358,0,2798,2799,5,1134,0,0,2799,2801,1,0,0,0,2800,2795,1,0,0,0,2800,2796,1,0,0,0,2801,2807,1,0,0,0,2802,2803,5,153,0,0,2803,2807,7,15,0,0,2804,2805,5,51,0,0,2805,2807,5,42,0,0,2806,2793,1,0,0,0,2806,2802,1,0,0,0,2806,2804,1,0,0,0,2807,2880,1,0,0,0,2808,2809,5,7,0,0,2809,2810,5,81,0,0,2810,2811,3,574,287,0,2811,2812,7,15,0,0,2812,2880,1,0,0,0,2813,2814,5,51,0,0,2814,2815,5,67,0,0,2815,2816,5,91,0,0,2816,2880,3,612,306,0,2817,2818,5,396,0,0,2818,2880,5,92,0,0,2819,2820,5,403,0,0,2820,2880,5,92,0,0,2821,2823,5,139,0,0,2822,2824,7,36,0,0,2823,2822,1,0,0,0,2823,2824,1,0,0,0,2824,2827,1,0,0,0,2825,2828,3,612,306,0,2826,2828,3,552,276,0,2827,2825,1,0,0,0,2827,2826,1,0,0,0,2828,2880,1,0,0,0,2829,2830,5,124,0,0,2830,2831,5,19,0,0,2831,2880,3,644,322,0,2832,2833,5,32,0,0,2833,2837,5,175,0,0,2834,2838,5,841,0,0,2835,2836,5,25,0,0,2836,2838,5,153,0,0,2837,2834,1,0,0,0,2837,2835,1,0,0,0,2838,2839,1,0,0,0,2839,2842,3,596,298,0,2840,2841,5,27,0,0,2841,2843,3,598,299,0,2842,2840,1,0,0,0,2842,2843,1,0,0,0,2843,2880,1,0,0,0,2844,2846,5,42,0,0,2845,2844,1,0,0,0,2845,2846,1,0,0,0,2846,2847,1,0,0,0,2847,2848,5,25,0,0,2848,2849,5,153,0,0,2849,2850,5,1124,0,0,2850,2854,3,596,298,0,2851,2852,5,27,0,0,2852,2853,5,1124,0,0,2853,2855,3,598,299,0,2854,2851,1,0,0,0,2854,2855,1,0,0,0,2855,2880,1,0,0,0,2856,2857,5,397,0,0,2857,2880,5,647,0,0,2858,2859,5,450,0,0,2859,2880,5,647,0,0,2860,2880,5,66,0,0,2861,2862,7,37,0,0,2862,2880,5,668,0,0,2863,2865,5,5,0,0,2864,2866,5,28,0,0,2865,2864,1,0,0,0,2865,2866,1,0,0,0,2866,2867,1,0,0,0,2867,2868,5,1133,0,0,2868,2873,3,88,44,0,2869,2870,5,1135,0,0,2870,2872,3,88,44,0,2871,2869,1,0,0,0,2872,2875,1,0,0,0,2873,2871,1,0,0,0,2873,2874,1,0,0,0,2874,2876,1,0,0,0,2875,2873,1,0,0,0,2876,2877,5,1134,0,0,2877,2880,1,0,0,0,2878,2880,3,148,74,0,2879,2528,1,0,0,0,2879,2538,1,0,0,0,2879,2549,1,0,0,0,2879,2567,1,0,0,0,2879,2582,1,0,0,0,2879,2604,1,0,0,0,2879,2628,1,0,0,0,2879,2643,1,0,0,0,2879,2658,1,0,0,0,2879,2680,1,0,0,0,2879,2702,1,0,0,0,2879,2714,1,0,0,0,2879,2719,1,0,0,0,2879,2731,1,0,0,0,2879,2743,1,0,0,0,2879,2749,1,0,0,0,2879,2754,1,0,0,0,2879,2765,1,0,0,0,2879,2773,1,0,0,0,2879,2776,1,0,0,0,2879,2779,1,0,0,0,2879,2782,1,0,0,0,2879,2788,1,0,0,0,2879,2808,1,0,0,0,2879,2813,1,0,0,0,2879,2817,1,0,0,0,2879,2819,1,0,0,0,2879,2821,1,0,0,0,2879,2829,1,0,0,0,2879,2832,1,0,0,0,2879,2845,1,0,0,0,2879,2856,1,0,0,0,2879,2858,1,0,0,0,2879,2860,1,0,0,0,2879,2861,1,0,0,0,2879,2863,1,0,0,0,2879,2878,1,0,0,0,2880,147,1,0,0,0,2881,2882,5,5,0,0,2882,2883,5,129,0,0,2883,2884,5,1133,0,0,2884,2889,3,116,58,0,2885,2886,5,1135,0,0,2886,2888,3,116,58,0,2887,2885,1,0,0,0,2888,2891,1,0,0,0,2889,2887,1,0,0,0,2889,2890,1,0,0,0,2890,2892,1,0,0,0,2891,2889,1,0,0,0,2892,2893,5,1134,0,0,2893,2980,1,0,0,0,2894,2895,5,51,0,0,2895,2896,5,129,0,0,2896,2980,3,644,322,0,2897,2898,5,397,0,0,2898,2901,5,129,0,0,2899,2902,3,644,322,0,2900,2902,5,6,0,0,2901,2899,1,0,0,0,2901,2900,1,0,0,0,2902,2903,1,0,0,0,2903,2980,5,647,0,0,2904,2905,5,450,0,0,2905,2908,5,129,0,0,2906,2909,3,644,322,0,2907,2909,5,6,0,0,2908,2906,1,0,0,0,2908,2907,1,0,0,0,2909,2910,1,0,0,0,2910,2980,5,647,0,0,2911,2912,5,656,0,0,2912,2915,5,129,0,0,2913,2916,3,644,322,0,2914,2916,5,6,0,0,2915,2913,1,0,0,0,2915,2914,1,0,0,0,2916,2980,1,0,0,0,2917,2918,5,363,0,0,2918,2919,5,129,0,0,2919,2980,3,618,309,0,2920,2921,5,579,0,0,2921,2922,5,129,0,0,2922,2923,3,644,322,0,2923,2924,5,87,0,0,2924,2925,5,1133,0,0,2925,2930,3,116,58,0,2926,2927,5,1135,0,0,2927,2929,3,116,58,0,2928,2926,1,0,0,0,2929,2932,1,0,0,0,2930,2928,1,0,0,0,2930,2931,1,0,0,0,2931,2933,1,0,0,0,2932,2930,1,0,0,0,2933,2934,5,1134,0,0,2934,2980,1,0,0,0,2935,2936,5,418,0,0,2936,2937,5,129,0,0,2937,2938,3,612,306,0,2938,2939,5,192,0,0,2939,2940,5,172,0,0,2940,2943,3,554,277,0,2941,2942,7,37,0,0,2942,2944,5,668,0,0,2943,2941,1,0,0,0,2943,2944,1,0,0,0,2944,2980,1,0,0,0,2945,2946,5,9,0,0,2946,2949,5,129,0,0,2947,2950,3,644,322,0,2948,2950,5,6,0,0,2949,2947,1,0,0,0,2949,2948,1,0,0,0,2950,2980,1,0,0,0,2951,2952,5,26,0,0,2952,2955,5,129,0,0,2953,2956,3,644,322,0,2954,2956,5,6,0,0,2955,2953,1,0,0,0,2955,2954,1,0,0,0,2956,2980,1,0,0,0,2957,2958,5,119,0,0,2958,2961,5,129,0,0,2959,2962,3,644,322,0,2960,2962,5,6,0,0,2961,2959,1,0,0,0,2961,2960,1,0,0,0,2962,2980,1,0,0,0,2963,2964,5,569,0,0,2964,2967,5,129,0,0,2965,2968,3,644,322,0,2966,2968,5,6,0,0,2967,2965,1,0,0,0,2967,2966,1,0,0,0,2968,2980,1,0,0,0,2969,2970,5,580,0,0,2970,2973,5,129,0,0,2971,2974,3,644,322,0,2972,2974,5,6,0,0,2973,2971,1,0,0,0,2973,2972,1,0,0,0,2974,2980,1,0,0,0,2975,2976,5,578,0,0,2976,2980,5,549,0,0,2977,2978,5,664,0,0,2978,2980,5,549,0,0,2979,2881,1,0,0,0,2979,2894,1,0,0,0,2979,2897,1,0,0,0,2979,2904,1,0,0,0,2979,2911,1,0,0,0,2979,2917,1,0,0,0,2979,2920,1,0,0,0,2979,2935,1,0,0,0,2979,2945,1,0,0,0,2979,2951,1,0,0,0,2979,2957,1,0,0,0,2979,2963,1,0,0,0,2979,2969,1,0,0,0,2979,2975,1,0,0,0,2979,2977,1,0,0,0,2980,149,1,0,0,0,2981,2982,5,51,0,0,2982,2984,7,0,0,0,2983,2985,3,668,334,0,2984,2983,1,0,0,0,2984,2985,1,0,0,0,2985,2986,1,0,0,0,2986,2987,3,572,286,0,2987,151,1,0,0,0,2988,2989,5,51,0,0,2989,2991,5,415,0,0,2990,2992,3,668,334,0,2991,2990,1,0,0,0,2991,2992,1,0,0,0,2992,2993,1,0,0,0,2993,2994,3,552,276,0,2994,153,1,0,0,0,2995,2996,5,51,0,0,2996,2998,5,81,0,0,2997,2999,7,1,0,0,2998,2997,1,0,0,0,2998,2999,1,0,0,0,2999,3e3,1,0,0,0,3e3,3001,3,574,287,0,3001,3002,5,118,0,0,3002,3015,3,554,277,0,3003,3005,5,336,0,0,3004,3006,5,1124,0,0,3005,3004,1,0,0,0,3005,3006,1,0,0,0,3006,3007,1,0,0,0,3007,3014,7,3,0,0,3008,3010,5,103,0,0,3009,3011,5,1124,0,0,3010,3009,1,0,0,0,3010,3011,1,0,0,0,3011,3012,1,0,0,0,3012,3014,7,4,0,0,3013,3003,1,0,0,0,3013,3008,1,0,0,0,3014,3017,1,0,0,0,3015,3013,1,0,0,0,3015,3016,1,0,0,0,3016,155,1,0,0,0,3017,3015,1,0,0,0,3018,3019,5,51,0,0,3019,3020,5,475,0,0,3020,3021,5,73,0,0,3021,3022,3,612,306,0,3022,3023,5,409,0,0,3023,3024,5,1124,0,0,3024,3025,3,600,300,0,3025,157,1,0,0,0,3026,3027,5,51,0,0,3027,3029,5,131,0,0,3028,3030,3,668,334,0,3029,3028,1,0,0,0,3029,3030,1,0,0,0,3030,3031,1,0,0,0,3031,3032,3,552,276,0,3032,159,1,0,0,0,3033,3034,5,51,0,0,3034,3036,5,437,0,0,3035,3037,3,668,334,0,3036,3035,1,0,0,0,3036,3037,1,0,0,0,3037,3038,1,0,0,0,3038,3039,3,552,276,0,3039,161,1,0,0,0,3040,3041,5,51,0,0,3041,3043,5,608,0,0,3042,3044,3,668,334,0,3043,3042,1,0,0,0,3043,3044,1,0,0,0,3044,3045,1,0,0,0,3045,3046,3,612,306,0,3046,163,1,0,0,0,3047,3049,5,51,0,0,3048,3050,5,649,0,0,3049,3048,1,0,0,0,3049,3050,1,0,0,0,3050,3051,1,0,0,0,3051,3053,5,172,0,0,3052,3054,3,668,334,0,3053,3052,1,0,0,0,3053,3054,1,0,0,0,3054,3055,1,0,0,0,3055,3057,3,648,324,0,3056,3058,7,38,0,0,3057,3056,1,0,0,0,3057,3058,1,0,0,0,3058,165,1,0,0,0,3059,3060,5,51,0,0,3060,3061,5,647,0,0,3061,3067,3,612,306,0,3062,3064,5,409,0,0,3063,3065,5,1124,0,0,3064,3063,1,0,0,0,3064,3065,1,0,0,0,3065,3066,1,0,0,0,3066,3068,3,600,300,0,3067,3062,1,0,0,0,3067,3068,1,0,0,0,3068,167,1,0,0,0,3069,3070,5,51,0,0,3070,3072,5,177,0,0,3071,3073,3,668,334,0,3072,3071,1,0,0,0,3072,3073,1,0,0,0,3073,3074,1,0,0,0,3074,3075,3,578,289,0,3075,169,1,0,0,0,3076,3077,5,51,0,0,3077,3079,5,671,0,0,3078,3080,3,668,334,0,3079,3078,1,0,0,0,3079,3080,1,0,0,0,3080,3081,1,0,0,0,3081,3086,3,552,276,0,3082,3083,5,1135,0,0,3083,3085,3,552,276,0,3084,3082,1,0,0,0,3085,3088,1,0,0,0,3086,3084,1,0,0,0,3086,3087,1,0,0,0,3087,3090,1,0,0,0,3088,3086,1,0,0,0,3089,3091,7,38,0,0,3090,3089,1,0,0,0,3090,3091,1,0,0,0,3091,171,1,0,0,0,3092,3093,5,51,0,0,3093,3095,5,596,0,0,3094,3096,3,668,334,0,3095,3094,1,0,0,0,3095,3096,1,0,0,0,3096,3097,1,0,0,0,3097,3098,3,566,283,0,3098,173,1,0,0,0,3099,3100,5,153,0,0,3100,3101,5,42,0,0,3101,3105,5,596,0,0,3102,3106,5,529,0,0,3103,3106,5,6,0,0,3104,3106,3,566,283,0,3105,3102,1,0,0,0,3105,3103,1,0,0,0,3105,3104,1,0,0,0,3106,3107,1,0,0,0,3107,3108,5,175,0,0,3108,3113,3,588,294,0,3109,3110,5,153,0,0,3110,3111,5,596,0,0,3111,3113,3,434,217,0,3112,3099,1,0,0,0,3112,3109,1,0,0,0,3113,175,1,0,0,0,3114,3115,5,139,0,0,3115,3116,5,172,0,0,3116,3121,3,178,89,0,3117,3118,5,1135,0,0,3118,3120,3,178,89,0,3119,3117,1,0,0,0,3120,3123,1,0,0,0,3121,3119,1,0,0,0,3121,3122,1,0,0,0,3122,177,1,0,0,0,3123,3121,1,0,0,0,3124,3125,3,554,277,0,3125,3126,5,175,0,0,3126,3127,3,554,277,0,3127,179,1,0,0,0,3128,3130,5,656,0,0,3129,3131,5,172,0,0,3130,3129,1,0,0,0,3130,3131,1,0,0,0,3131,3132,1,0,0,0,3132,3133,3,554,277,0,3133,181,1,0,0,0,3134,3135,5,20,0,0,3135,3142,3,552,276,0,3136,3139,5,1133,0,0,3137,3140,3,656,328,0,3138,3140,3,652,326,0,3139,3137,1,0,0,0,3139,3138,1,0,0,0,3139,3140,1,0,0,0,3140,3141,1,0,0,0,3141,3143,5,1134,0,0,3142,3136,1,0,0,0,3142,3143,1,0,0,0,3143,183,1,0,0,0,3144,3147,3,212,106,0,3145,3147,3,214,107,0,3146,3144,1,0,0,0,3146,3145,1,0,0,0,3147,185,1,0,0,0,3148,3149,5,399,0,0,3149,3150,3,652,326,0,3150,187,1,0,0,0,3151,3156,3,216,108,0,3152,3156,3,218,109,0,3153,3156,3,220,110,0,3154,3156,3,222,111,0,3155,3151,1,0,0,0,3155,3152,1,0,0,0,3155,3153,1,0,0,0,3155,3154,1,0,0,0,3156,189,1,0,0,0,3157,3159,5,85,0,0,3158,3160,7,39,0,0,3159,3158,1,0,0,0,3159,3160,1,0,0,0,3160,3162,1,0,0,0,3161,3163,5,78,0,0,3162,3161,1,0,0,0,3162,3163,1,0,0,0,3163,3165,1,0,0,0,3164,3166,5,87,0,0,3165,3164,1,0,0,0,3165,3166,1,0,0,0,3166,3167,1,0,0,0,3167,3174,3,554,277,0,3168,3169,5,129,0,0,3169,3171,5,1133,0,0,3170,3172,3,644,322,0,3171,3170,1,0,0,0,3171,3172,1,0,0,0,3172,3173,1,0,0,0,3173,3175,5,1134,0,0,3174,3168,1,0,0,0,3174,3175,1,0,0,0,3175,3199,1,0,0,0,3176,3178,5,1133,0,0,3177,3179,3,646,323,0,3178,3177,1,0,0,0,3178,3179,1,0,0,0,3179,3180,1,0,0,0,3180,3182,5,1134,0,0,3181,3176,1,0,0,0,3181,3182,1,0,0,0,3182,3183,1,0,0,0,3183,3188,3,204,102,0,3184,3186,5,12,0,0,3185,3184,1,0,0,0,3185,3186,1,0,0,0,3186,3187,1,0,0,0,3187,3189,3,612,306,0,3188,3185,1,0,0,0,3188,3189,1,0,0,0,3189,3200,1,0,0,0,3190,3191,5,153,0,0,3191,3196,3,206,103,0,3192,3193,5,1135,0,0,3193,3195,3,206,103,0,3194,3192,1,0,0,0,3195,3198,1,0,0,0,3196,3194,1,0,0,0,3196,3197,1,0,0,0,3197,3200,1,0,0,0,3198,3196,1,0,0,0,3199,3181,1,0,0,0,3199,3190,1,0,0,0,3200,3213,1,0,0,0,3201,3202,5,118,0,0,3202,3203,5,401,0,0,3203,3204,5,91,0,0,3204,3205,5,184,0,0,3205,3210,3,206,103,0,3206,3207,5,1135,0,0,3207,3209,3,206,103,0,3208,3206,1,0,0,0,3209,3212,1,0,0,0,3210,3208,1,0,0,0,3210,3211,1,0,0,0,3211,3214,1,0,0,0,3212,3210,1,0,0,0,3213,3201,1,0,0,0,3213,3214,1,0,0,0,3214,191,1,0,0,0,3215,3216,5,102,0,0,3216,3218,5,388,0,0,3217,3219,7,40,0,0,3218,3217,1,0,0,0,3218,3219,1,0,0,0,3219,3221,1,0,0,0,3220,3222,5,474,0,0,3221,3220,1,0,0,0,3221,3222,1,0,0,0,3222,3223,1,0,0,0,3223,3224,5,82,0,0,3224,3226,5,1148,0,0,3225,3227,7,6,0,0,3226,3225,1,0,0,0,3226,3227,1,0,0,0,3227,3228,1,0,0,0,3228,3229,5,87,0,0,3229,3230,5,172,0,0,3230,3236,3,554,277,0,3231,3232,5,129,0,0,3232,3233,5,1133,0,0,3233,3234,3,644,322,0,3234,3235,5,1134,0,0,3235,3237,1,0,0,0,3236,3231,1,0,0,0,3236,3237,1,0,0,0,3237,3241,1,0,0,0,3238,3239,5,25,0,0,3239,3240,5,153,0,0,3240,3242,3,596,298,0,3241,3238,1,0,0,0,3241,3242,1,0,0,0,3242,3249,1,0,0,0,3243,3245,7,41,0,0,3244,3246,3,280,140,0,3245,3244,1,0,0,0,3246,3247,1,0,0,0,3247,3245,1,0,0,0,3247,3248,1,0,0,0,3248,3250,1,0,0,0,3249,3243,1,0,0,0,3249,3250,1,0,0,0,3250,3257,1,0,0,0,3251,3253,5,101,0,0,3252,3254,3,282,141,0,3253,3252,1,0,0,0,3254,3255,1,0,0,0,3255,3253,1,0,0,0,3255,3256,1,0,0,0,3256,3258,1,0,0,0,3257,3251,1,0,0,0,3257,3258,1,0,0,0,3258,3263,1,0,0,0,3259,3260,5,78,0,0,3260,3261,3,618,309,0,3261,3262,7,42,0,0,3262,3264,1,0,0,0,3263,3259,1,0,0,0,3263,3264,1,0,0,0,3264,3276,1,0,0,0,3265,3266,5,1133,0,0,3266,3271,3,208,104,0,3267,3268,5,1135,0,0,3268,3270,3,208,104,0,3269,3267,1,0,0,0,3270,3273,1,0,0,0,3271,3269,1,0,0,0,3271,3272,1,0,0,0,3272,3274,1,0,0,0,3273,3271,1,0,0,0,3274,3275,5,1134,0,0,3275,3277,1,0,0,0,3276,3265,1,0,0,0,3276,3277,1,0,0,0,3277,3287,1,0,0,0,3278,3279,5,153,0,0,3279,3284,3,206,103,0,3280,3281,5,1135,0,0,3281,3283,3,206,103,0,3282,3280,1,0,0,0,3283,3286,1,0,0,0,3284,3282,1,0,0,0,3284,3285,1,0,0,0,3285,3288,1,0,0,0,3286,3284,1,0,0,0,3287,3278,1,0,0,0,3287,3288,1,0,0,0,3288,193,1,0,0,0,3289,3290,5,102,0,0,3290,3292,5,682,0,0,3291,3293,7,40,0,0,3292,3291,1,0,0,0,3292,3293,1,0,0,0,3293,3295,1,0,0,0,3294,3296,5,474,0,0,3295,3294,1,0,0,0,3295,3296,1,0,0,0,3296,3297,1,0,0,0,3297,3298,5,82,0,0,3298,3300,5,1148,0,0,3299,3301,7,6,0,0,3300,3299,1,0,0,0,3300,3301,1,0,0,0,3301,3302,1,0,0,0,3302,3303,5,87,0,0,3303,3304,5,172,0,0,3304,3308,3,554,277,0,3305,3306,5,25,0,0,3306,3307,5,153,0,0,3307,3309,3,596,298,0,3308,3305,1,0,0,0,3308,3309,1,0,0,0,3309,3316,1,0,0,0,3310,3311,5,601,0,0,3311,3312,5,448,0,0,3312,3313,5,19,0,0,3313,3314,5,1126,0,0,3314,3315,5,1148,0,0,3315,3317,5,1125,0,0,3316,3310,1,0,0,0,3316,3317,1,0,0,0,3317,3322,1,0,0,0,3318,3319,5,78,0,0,3319,3320,3,618,309,0,3320,3321,7,42,0,0,3321,3323,1,0,0,0,3322,3318,1,0,0,0,3322,3323,1,0,0,0,3323,3335,1,0,0,0,3324,3325,5,1133,0,0,3325,3330,3,208,104,0,3326,3327,5,1135,0,0,3327,3329,3,208,104,0,3328,3326,1,0,0,0,3329,3332,1,0,0,0,3330,3328,1,0,0,0,3330,3331,1,0,0,0,3331,3333,1,0,0,0,3332,3330,1,0,0,0,3333,3334,5,1134,0,0,3334,3336,1,0,0,0,3335,3324,1,0,0,0,3335,3336,1,0,0,0,3336,3346,1,0,0,0,3337,3338,5,153,0,0,3338,3343,3,206,103,0,3339,3340,5,1135,0,0,3340,3342,3,206,103,0,3341,3339,1,0,0,0,3342,3345,1,0,0,0,3343,3341,1,0,0,0,3343,3344,1,0,0,0,3344,3347,1,0,0,0,3345,3343,1,0,0,0,3346,3337,1,0,0,0,3346,3347,1,0,0,0,3347,195,1,0,0,0,3348,3350,5,141,0,0,3349,3351,7,43,0,0,3350,3349,1,0,0,0,3350,3351,1,0,0,0,3351,3353,1,0,0,0,3352,3354,5,87,0,0,3353,3352,1,0,0,0,3353,3354,1,0,0,0,3354,3355,1,0,0,0,3355,3361,3,554,277,0,3356,3357,5,129,0,0,3357,3358,5,1133,0,0,3358,3359,3,644,322,0,3359,3360,5,1134,0,0,3360,3362,1,0,0,0,3361,3356,1,0,0,0,3361,3362,1,0,0,0,3362,3379,1,0,0,0,3363,3364,5,1133,0,0,3364,3365,3,644,322,0,3365,3366,5,1134,0,0,3366,3368,1,0,0,0,3367,3363,1,0,0,0,3367,3368,1,0,0,0,3368,3369,1,0,0,0,3369,3380,3,204,102,0,3370,3371,5,153,0,0,3371,3376,3,206,103,0,3372,3373,5,1135,0,0,3373,3375,3,206,103,0,3374,3372,1,0,0,0,3375,3378,1,0,0,0,3376,3374,1,0,0,0,3376,3377,1,0,0,0,3377,3380,1,0,0,0,3378,3376,1,0,0,0,3379,3367,1,0,0,0,3379,3370,1,0,0,0,3380,197,1,0,0,0,3381,3383,3,250,125,0,3382,3384,3,210,105,0,3383,3382,1,0,0,0,3383,3384,1,0,0,0,3384,3447,1,0,0,0,3385,3387,3,246,123,0,3386,3388,3,210,105,0,3387,3386,1,0,0,0,3387,3388,1,0,0,0,3388,3447,1,0,0,0,3389,3392,3,252,126,0,3390,3392,3,248,124,0,3391,3389,1,0,0,0,3391,3390,1,0,0,0,3392,3394,1,0,0,0,3393,3395,3,256,128,0,3394,3393,1,0,0,0,3395,3396,1,0,0,0,3396,3394,1,0,0,0,3396,3397,1,0,0,0,3397,3406,1,0,0,0,3398,3400,5,180,0,0,3399,3401,7,44,0,0,3400,3399,1,0,0,0,3400,3401,1,0,0,0,3401,3404,1,0,0,0,3402,3405,3,250,125,0,3403,3405,3,246,123,0,3404,3402,1,0,0,0,3404,3403,1,0,0,0,3405,3407,1,0,0,0,3406,3398,1,0,0,0,3406,3407,1,0,0,0,3407,3409,1,0,0,0,3408,3410,3,228,114,0,3409,3408,1,0,0,0,3409,3410,1,0,0,0,3410,3412,1,0,0,0,3411,3413,3,294,147,0,3412,3411,1,0,0,0,3412,3413,1,0,0,0,3413,3415,1,0,0,0,3414,3416,3,210,105,0,3415,3414,1,0,0,0,3415,3416,1,0,0,0,3416,3447,1,0,0,0,3417,3419,3,248,124,0,3418,3420,3,254,127,0,3419,3418,1,0,0,0,3420,3421,1,0,0,0,3421,3419,1,0,0,0,3421,3422,1,0,0,0,3422,3428,1,0,0,0,3423,3425,5,180,0,0,3424,3426,7,44,0,0,3425,3424,1,0,0,0,3425,3426,1,0,0,0,3426,3427,1,0,0,0,3427,3429,3,246,123,0,3428,3423,1,0,0,0,3428,3429,1,0,0,0,3429,3431,1,0,0,0,3430,3432,3,228,114,0,3431,3430,1,0,0,0,3431,3432,1,0,0,0,3432,3434,1,0,0,0,3433,3435,3,294,147,0,3434,3433,1,0,0,0,3434,3435,1,0,0,0,3435,3437,1,0,0,0,3436,3438,3,210,105,0,3437,3436,1,0,0,0,3437,3438,1,0,0,0,3438,3447,1,0,0,0,3439,3442,3,252,126,0,3440,3441,5,1135,0,0,3441,3443,3,258,129,0,3442,3440,1,0,0,0,3443,3444,1,0,0,0,3444,3442,1,0,0,0,3444,3445,1,0,0,0,3445,3447,1,0,0,0,3446,3381,1,0,0,0,3446,3385,1,0,0,0,3446,3391,1,0,0,0,3446,3417,1,0,0,0,3446,3439,1,0,0,0,3447,199,1,0,0,0,3448,3451,3,224,112,0,3449,3451,3,226,113,0,3450,3448,1,0,0,0,3450,3449,1,0,0,0,3451,201,1,0,0,0,3452,3453,5,188,0,0,3453,3455,5,1133,0,0,3454,3456,3,654,327,0,3455,3454,1,0,0,0,3455,3456,1,0,0,0,3456,3457,1,0,0,0,3457,3466,5,1134,0,0,3458,3459,5,1135,0,0,3459,3461,5,1133,0,0,3460,3462,3,654,327,0,3461,3460,1,0,0,0,3461,3462,1,0,0,0,3462,3463,1,0,0,0,3463,3465,5,1134,0,0,3464,3458,1,0,0,0,3465,3468,1,0,0,0,3466,3464,1,0,0,0,3466,3467,1,0,0,0,3467,203,1,0,0,0,3468,3466,1,0,0,0,3469,3488,3,198,99,0,3470,3471,7,45,0,0,3471,3473,5,1133,0,0,3472,3474,3,654,327,0,3473,3472,1,0,0,0,3473,3474,1,0,0,0,3474,3475,1,0,0,0,3475,3484,5,1134,0,0,3476,3477,5,1135,0,0,3477,3479,5,1133,0,0,3478,3480,3,654,327,0,3479,3478,1,0,0,0,3479,3480,1,0,0,0,3480,3481,1,0,0,0,3481,3483,5,1134,0,0,3482,3476,1,0,0,0,3483,3486,1,0,0,0,3484,3482,1,0,0,0,3484,3485,1,0,0,0,3485,3488,1,0,0,0,3486,3484,1,0,0,0,3487,3469,1,0,0,0,3487,3470,1,0,0,0,3488,205,1,0,0,0,3489,3490,3,570,285,0,3490,3493,5,1124,0,0,3491,3494,3,716,358,0,3492,3494,5,42,0,0,3493,3491,1,0,0,0,3493,3492,1,0,0,0,3494,207,1,0,0,0,3495,3498,3,612,306,0,3496,3498,5,1159,0,0,3497,3495,1,0,0,0,3497,3496,1,0,0,0,3498,209,1,0,0,0,3499,3500,5,65,0,0,3500,3506,5,184,0,0,3501,3502,5,103,0,0,3502,3503,5,80,0,0,3503,3504,5,610,0,0,3504,3506,5,511,0,0,3505,3499,1,0,0,0,3505,3501,1,0,0,0,3506,211,1,0,0,0,3507,3509,5,44,0,0,3508,3510,5,106,0,0,3509,3508,1,0,0,0,3509,3510,1,0,0,0,3510,3512,1,0,0,0,3511,3513,5,568,0,0,3512,3511,1,0,0,0,3512,3513,1,0,0,0,3513,3515,1,0,0,0,3514,3516,5,78,0,0,3515,3514,1,0,0,0,3515,3516,1,0,0,0,3516,3517,1,0,0,0,3517,3518,5,68,0,0,3518,3523,3,554,277,0,3519,3521,5,12,0,0,3520,3519,1,0,0,0,3520,3521,1,0,0,0,3521,3522,1,0,0,0,3522,3524,3,612,306,0,3523,3520,1,0,0,0,3523,3524,1,0,0,0,3524,3530,1,0,0,0,3525,3526,5,129,0,0,3526,3527,5,1133,0,0,3527,3528,3,644,322,0,3528,3529,5,1134,0,0,3529,3531,1,0,0,0,3530,3525,1,0,0,0,3530,3531,1,0,0,0,3531,3534,1,0,0,0,3532,3533,5,190,0,0,3533,3535,3,716,358,0,3534,3532,1,0,0,0,3534,3535,1,0,0,0,3535,3537,1,0,0,0,3536,3538,3,228,114,0,3537,3536,1,0,0,0,3537,3538,1,0,0,0,3538,3541,1,0,0,0,3539,3540,5,99,0,0,3540,3542,3,296,148,0,3541,3539,1,0,0,0,3541,3542,1,0,0,0,3542,213,1,0,0,0,3543,3545,5,44,0,0,3544,3546,5,106,0,0,3545,3544,1,0,0,0,3545,3546,1,0,0,0,3546,3548,1,0,0,0,3547,3549,5,568,0,0,3548,3547,1,0,0,0,3548,3549,1,0,0,0,3549,3551,1,0,0,0,3550,3552,5,78,0,0,3551,3550,1,0,0,0,3551,3552,1,0,0,0,3552,3592,1,0,0,0,3553,3556,3,554,277,0,3554,3555,5,1132,0,0,3555,3557,5,1117,0,0,3556,3554,1,0,0,0,3556,3557,1,0,0,0,3557,3566,1,0,0,0,3558,3559,5,1135,0,0,3559,3562,3,554,277,0,3560,3561,5,1132,0,0,3561,3563,5,1117,0,0,3562,3560,1,0,0,0,3562,3563,1,0,0,0,3563,3565,1,0,0,0,3564,3558,1,0,0,0,3565,3568,1,0,0,0,3566,3564,1,0,0,0,3566,3567,1,0,0,0,3567,3569,1,0,0,0,3568,3566,1,0,0,0,3569,3570,5,68,0,0,3570,3571,3,232,116,0,3571,3593,1,0,0,0,3572,3573,5,68,0,0,3573,3576,3,554,277,0,3574,3575,5,1132,0,0,3575,3577,5,1117,0,0,3576,3574,1,0,0,0,3576,3577,1,0,0,0,3577,3586,1,0,0,0,3578,3579,5,1135,0,0,3579,3582,3,554,277,0,3580,3581,5,1132,0,0,3581,3583,5,1117,0,0,3582,3580,1,0,0,0,3582,3583,1,0,0,0,3583,3585,1,0,0,0,3584,3578,1,0,0,0,3585,3588,1,0,0,0,3586,3584,1,0,0,0,3586,3587,1,0,0,0,3587,3589,1,0,0,0,3588,3586,1,0,0,0,3589,3590,5,187,0,0,3590,3591,3,232,116,0,3591,3593,1,0,0,0,3592,3553,1,0,0,0,3592,3572,1,0,0,0,3593,3596,1,0,0,0,3594,3595,5,190,0,0,3595,3597,3,716,358,0,3596,3594,1,0,0,0,3596,3597,1,0,0,0,3597,215,1,0,0,0,3598,3599,5,442,0,0,3599,3600,3,554,277,0,3600,3605,5,539,0,0,3601,3603,5,12,0,0,3602,3601,1,0,0,0,3602,3603,1,0,0,0,3603,3604,1,0,0,0,3604,3606,3,612,306,0,3605,3602,1,0,0,0,3605,3606,1,0,0,0,3606,217,1,0,0,0,3607,3608,5,442,0,0,3608,3609,3,554,277,0,3609,3610,5,134,0,0,3610,3617,3,612,306,0,3611,3612,3,724,362,0,3612,3613,5,1133,0,0,3613,3614,3,656,328,0,3614,3615,5,1134,0,0,3615,3618,1,0,0,0,3616,3618,7,46,0,0,3617,3611,1,0,0,0,3617,3616,1,0,0,0,3618,3621,1,0,0,0,3619,3620,5,190,0,0,3620,3622,3,716,358,0,3621,3619,1,0,0,0,3621,3622,1,0,0,0,3622,3625,1,0,0,0,3623,3624,5,99,0,0,3624,3626,3,296,148,0,3625,3623,1,0,0,0,3625,3626,1,0,0,0,3626,219,1,0,0,0,3627,3628,5,442,0,0,3628,3629,3,554,277,0,3629,3630,5,134,0,0,3630,3633,7,47,0,0,3631,3632,5,190,0,0,3632,3634,3,716,358,0,3633,3631,1,0,0,0,3633,3634,1,0,0,0,3634,3637,1,0,0,0,3635,3636,5,99,0,0,3636,3638,3,296,148,0,3637,3635,1,0,0,0,3637,3638,1,0,0,0,3638,221,1,0,0,0,3639,3640,5,442,0,0,3640,3641,3,554,277,0,3641,3642,5,361,0,0,3642,223,1,0,0,0,3643,3645,5,184,0,0,3644,3646,5,106,0,0,3645,3644,1,0,0,0,3645,3646,1,0,0,0,3646,3648,1,0,0,0,3647,3649,5,78,0,0,3648,3647,1,0,0,0,3648,3649,1,0,0,0,3649,3650,1,0,0,0,3650,3655,3,554,277,0,3651,3653,5,12,0,0,3652,3651,1,0,0,0,3652,3653,1,0,0,0,3653,3654,1,0,0,0,3654,3656,3,612,306,0,3655,3652,1,0,0,0,3655,3656,1,0,0,0,3656,3657,1,0,0,0,3657,3658,5,153,0,0,3658,3663,3,206,103,0,3659,3660,5,1135,0,0,3660,3662,3,206,103,0,3661,3659,1,0,0,0,3662,3665,1,0,0,0,3663,3661,1,0,0,0,3663,3664,1,0,0,0,3664,3668,1,0,0,0,3665,3663,1,0,0,0,3666,3667,5,190,0,0,3667,3669,3,716,358,0,3668,3666,1,0,0,0,3668,3669,1,0,0,0,3669,3671,1,0,0,0,3670,3672,3,228,114,0,3671,3670,1,0,0,0,3671,3672,1,0,0,0,3672,3674,1,0,0,0,3673,3675,3,294,147,0,3674,3673,1,0,0,0,3674,3675,1,0,0,0,3675,225,1,0,0,0,3676,3678,5,184,0,0,3677,3679,5,106,0,0,3678,3677,1,0,0,0,3678,3679,1,0,0,0,3679,3681,1,0,0,0,3680,3682,5,78,0,0,3681,3680,1,0,0,0,3681,3682,1,0,0,0,3682,3683,1,0,0,0,3683,3684,3,556,278,0,3684,3685,5,153,0,0,3685,3690,3,206,103,0,3686,3687,5,1135,0,0,3687,3689,3,206,103,0,3688,3686,1,0,0,0,3689,3692,1,0,0,0,3690,3688,1,0,0,0,3690,3691,1,0,0,0,3691,3695,1,0,0,0,3692,3690,1,0,0,0,3693,3694,5,190,0,0,3694,3696,3,716,358,0,3695,3693,1,0,0,0,3695,3696,1,0,0,0,3696,227,1,0,0,0,3697,3698,5,124,0,0,3698,3699,5,19,0,0,3699,3704,3,230,115,0,3700,3701,5,1135,0,0,3701,3703,3,230,115,0,3702,3700,1,0,0,0,3703,3706,1,0,0,0,3704,3702,1,0,0,0,3704,3705,1,0,0,0,3705,229,1,0,0,0,3706,3704,1,0,0,0,3707,3709,3,716,358,0,3708,3710,7,48,0,0,3709,3708,1,0,0,0,3709,3710,1,0,0,0,3710,231,1,0,0,0,3711,3716,3,234,117,0,3712,3713,5,1135,0,0,3713,3715,3,234,117,0,3714,3712,1,0,0,0,3715,3718,1,0,0,0,3716,3714,1,0,0,0,3716,3717,1,0,0,0,3717,233,1,0,0,0,3718,3716,1,0,0,0,3719,3723,3,236,118,0,3720,3722,3,242,121,0,3721,3720,1,0,0,0,3722,3725,1,0,0,0,3723,3721,1,0,0,0,3723,3724,1,0,0,0,3724,3738,1,0,0,0,3725,3723,1,0,0,0,3726,3727,5,1133,0,0,3727,3731,3,236,118,0,3728,3730,3,242,121,0,3729,3728,1,0,0,0,3730,3733,1,0,0,0,3731,3729,1,0,0,0,3731,3732,1,0,0,0,3732,3734,1,0,0,0,3733,3731,1,0,0,0,3734,3735,5,1134,0,0,3735,3738,1,0,0,0,3736,3738,3,260,130,0,3737,3719,1,0,0,0,3737,3726,1,0,0,0,3737,3736,1,0,0,0,3738,235,1,0,0,0,3739,3745,3,554,277,0,3740,3741,5,129,0,0,3741,3742,5,1133,0,0,3742,3743,3,644,322,0,3743,3744,5,1134,0,0,3744,3746,1,0,0,0,3745,3740,1,0,0,0,3745,3746,1,0,0,0,3746,3751,1,0,0,0,3747,3749,5,12,0,0,3748,3747,1,0,0,0,3748,3749,1,0,0,0,3749,3750,1,0,0,0,3750,3752,3,612,306,0,3751,3748,1,0,0,0,3751,3752,1,0,0,0,3752,3761,1,0,0,0,3753,3758,3,238,119,0,3754,3755,5,1135,0,0,3755,3757,3,238,119,0,3756,3754,1,0,0,0,3757,3760,1,0,0,0,3758,3756,1,0,0,0,3758,3759,1,0,0,0,3759,3762,1,0,0,0,3760,3758,1,0,0,0,3761,3753,1,0,0,0,3761,3762,1,0,0,0,3762,3777,1,0,0,0,3763,3764,5,1133,0,0,3764,3765,3,198,99,0,3765,3766,5,1134,0,0,3766,3768,1,0,0,0,3767,3769,5,12,0,0,3768,3767,1,0,0,0,3768,3769,1,0,0,0,3769,3770,1,0,0,0,3770,3771,3,612,306,0,3771,3777,1,0,0,0,3772,3773,5,1133,0,0,3773,3774,3,232,116,0,3774,3775,5,1134,0,0,3775,3777,1,0,0,0,3776,3739,1,0,0,0,3776,3763,1,0,0,0,3776,3772,1,0,0,0,3777,237,1,0,0,0,3778,3779,7,49,0,0,3779,3782,7,20,0,0,3780,3781,5,65,0,0,3781,3783,3,240,120,0,3782,3780,1,0,0,0,3782,3783,1,0,0,0,3783,3784,1,0,0,0,3784,3785,5,1133,0,0,3785,3786,3,580,290,0,3786,3787,5,1134,0,0,3787,239,1,0,0,0,3788,3794,5,90,0,0,3789,3790,5,124,0,0,3790,3794,5,19,0,0,3791,3792,5,73,0,0,3792,3794,5,19,0,0,3793,3788,1,0,0,0,3793,3789,1,0,0,0,3793,3791,1,0,0,0,3794,241,1,0,0,0,3795,3797,7,50,0,0,3796,3795,1,0,0,0,3796,3797,1,0,0,0,3797,3798,1,0,0,0,3798,3800,5,90,0,0,3799,3801,5,94,0,0,3800,3799,1,0,0,0,3800,3801,1,0,0,0,3801,3802,1,0,0,0,3802,3806,3,236,118,0,3803,3805,3,244,122,0,3804,3803,1,0,0,0,3805,3808,1,0,0,0,3806,3804,1,0,0,0,3806,3807,1,0,0,0,3807,3843,1,0,0,0,3808,3806,1,0,0,0,3809,3810,5,171,0,0,3810,3815,3,236,118,0,3811,3812,5,118,0,0,3812,3814,3,716,358,0,3813,3811,1,0,0,0,3814,3817,1,0,0,0,3815,3813,1,0,0,0,3815,3816,1,0,0,0,3816,3843,1,0,0,0,3817,3815,1,0,0,0,3818,3820,7,51,0,0,3819,3821,5,126,0,0,3820,3819,1,0,0,0,3820,3821,1,0,0,0,3821,3822,1,0,0,0,3822,3824,5,90,0,0,3823,3825,5,94,0,0,3824,3823,1,0,0,0,3824,3825,1,0,0,0,3825,3826,1,0,0,0,3826,3830,3,236,118,0,3827,3829,3,244,122,0,3828,3827,1,0,0,0,3829,3832,1,0,0,0,3830,3828,1,0,0,0,3830,3831,1,0,0,0,3831,3843,1,0,0,0,3832,3830,1,0,0,0,3833,3838,5,113,0,0,3834,3836,7,51,0,0,3835,3837,5,126,0,0,3836,3835,1,0,0,0,3836,3837,1,0,0,0,3837,3839,1,0,0,0,3838,3834,1,0,0,0,3838,3839,1,0,0,0,3839,3840,1,0,0,0,3840,3841,5,90,0,0,3841,3843,3,236,118,0,3842,3796,1,0,0,0,3842,3809,1,0,0,0,3842,3818,1,0,0,0,3842,3833,1,0,0,0,3843,243,1,0,0,0,3844,3845,5,118,0,0,3845,3852,3,716,358,0,3846,3847,5,187,0,0,3847,3848,5,1133,0,0,3848,3849,3,644,322,0,3849,3850,5,1134,0,0,3850,3852,1,0,0,0,3851,3844,1,0,0,0,3851,3846,1,0,0,0,3852,245,1,0,0,0,3853,3854,5,1133,0,0,3854,3855,3,250,125,0,3855,3856,5,1134,0,0,3856,3862,1,0,0,0,3857,3858,5,1133,0,0,3858,3859,3,246,123,0,3859,3860,5,1134,0,0,3860,3862,1,0,0,0,3861,3853,1,0,0,0,3861,3857,1,0,0,0,3862,247,1,0,0,0,3863,3864,5,1133,0,0,3864,3865,3,252,126,0,3865,3866,5,1134,0,0,3866,3872,1,0,0,0,3867,3868,5,1133,0,0,3868,3869,3,248,124,0,3869,3870,5,1134,0,0,3870,3872,1,0,0,0,3871,3863,1,0,0,0,3871,3867,1,0,0,0,3872,249,1,0,0,0,3873,3877,5,152,0,0,3874,3876,3,270,135,0,3875,3874,1,0,0,0,3876,3879,1,0,0,0,3877,3875,1,0,0,0,3877,3878,1,0,0,0,3878,3880,1,0,0,0,3879,3877,1,0,0,0,3880,3882,3,272,136,0,3881,3883,3,278,139,0,3882,3881,1,0,0,0,3882,3883,1,0,0,0,3883,3884,1,0,0,0,3884,3886,3,284,142,0,3885,3887,3,286,143,0,3886,3885,1,0,0,0,3886,3887,1,0,0,0,3887,3889,1,0,0,0,3888,3890,3,288,144,0,3889,3888,1,0,0,0,3889,3890,1,0,0,0,3890,3892,1,0,0,0,3891,3893,3,290,145,0,3892,3891,1,0,0,0,3892,3893,1,0,0,0,3893,3895,1,0,0,0,3894,3896,3,228,114,0,3895,3894,1,0,0,0,3895,3896,1,0,0,0,3896,3898,1,0,0,0,3897,3899,3,294,147,0,3898,3897,1,0,0,0,3898,3899,1,0,0,0,3899,3928,1,0,0,0,3900,3904,5,152,0,0,3901,3903,3,270,135,0,3902,3901,1,0,0,0,3903,3906,1,0,0,0,3904,3902,1,0,0,0,3904,3905,1,0,0,0,3905,3907,1,0,0,0,3906,3904,1,0,0,0,3907,3908,3,272,136,0,3908,3910,3,284,142,0,3909,3911,3,286,143,0,3910,3909,1,0,0,0,3910,3911,1,0,0,0,3911,3913,1,0,0,0,3912,3914,3,288,144,0,3913,3912,1,0,0,0,3913,3914,1,0,0,0,3914,3916,1,0,0,0,3915,3917,3,290,145,0,3916,3915,1,0,0,0,3916,3917,1,0,0,0,3917,3919,1,0,0,0,3918,3920,3,228,114,0,3919,3918,1,0,0,0,3919,3920,1,0,0,0,3920,3922,1,0,0,0,3921,3923,3,294,147,0,3922,3921,1,0,0,0,3922,3923,1,0,0,0,3923,3925,1,0,0,0,3924,3926,3,278,139,0,3925,3924,1,0,0,0,3925,3926,1,0,0,0,3926,3928,1,0,0,0,3927,3873,1,0,0,0,3927,3900,1,0,0,0,3928,251,1,0,0,0,3929,3933,5,152,0,0,3930,3932,3,270,135,0,3931,3930,1,0,0,0,3932,3935,1,0,0,0,3933,3931,1,0,0,0,3933,3934,1,0,0,0,3934,3936,1,0,0,0,3935,3933,1,0,0,0,3936,3937,3,272,136,0,3937,3939,3,284,142,0,3938,3940,3,286,143,0,3939,3938,1,0,0,0,3939,3940,1,0,0,0,3940,3942,1,0,0,0,3941,3943,3,288,144,0,3942,3941,1,0,0,0,3942,3943,1,0,0,0,3943,3945,1,0,0,0,3944,3946,3,290,145,0,3945,3944,1,0,0,0,3945,3946,1,0,0,0,3946,3948,1,0,0,0,3947,3949,3,228,114,0,3948,3947,1,0,0,0,3948,3949,1,0,0,0,3949,3951,1,0,0,0,3950,3952,3,294,147,0,3951,3950,1,0,0,0,3951,3952,1,0,0,0,3952,3954,1,0,0,0,3953,3955,3,256,128,0,3954,3953,1,0,0,0,3954,3955,1,0,0,0,3955,253,1,0,0,0,3956,3958,5,180,0,0,3957,3959,7,44,0,0,3958,3957,1,0,0,0,3958,3959,1,0,0,0,3959,3960,1,0,0,0,3960,3961,3,248,124,0,3961,255,1,0,0,0,3962,3964,5,180,0,0,3963,3965,7,44,0,0,3964,3963,1,0,0,0,3964,3965,1,0,0,0,3965,3968,1,0,0,0,3966,3969,3,252,126,0,3967,3969,3,248,124,0,3968,3966,1,0,0,0,3968,3967,1,0,0,0,3969,257,1,0,0,0,3970,3985,5,94,0,0,3971,3986,3,252,126,0,3972,3986,3,248,124,0,3973,3976,5,1133,0,0,3974,3977,3,252,126,0,3975,3977,3,248,124,0,3976,3974,1,0,0,0,3976,3975,1,0,0,0,3977,3978,1,0,0,0,3978,3983,5,1134,0,0,3979,3981,5,12,0,0,3980,3979,1,0,0,0,3980,3981,1,0,0,0,3981,3982,1,0,0,0,3982,3984,3,612,306,0,3983,3980,1,0,0,0,3983,3984,1,0,0,0,3984,3986,1,0,0,0,3985,3971,1,0,0,0,3985,3972,1,0,0,0,3985,3973,1,0,0,0,3986,259,1,0,0,0,3987,3988,5,278,0,0,3988,3989,5,1133,0,0,3989,3990,5,1148,0,0,3990,3991,5,1135,0,0,3991,3992,5,1148,0,0,3992,3993,5,365,0,0,3993,3994,5,1133,0,0,3994,3995,3,262,131,0,3995,3996,5,1134,0,0,3996,4001,5,1134,0,0,3997,3999,5,12,0,0,3998,3997,1,0,0,0,3998,3999,1,0,0,0,3999,4e3,1,0,0,0,4e3,4002,3,612,306,0,4001,3998,1,0,0,0,4001,4002,1,0,0,0,4002,261,1,0,0,0,4003,4008,3,264,132,0,4004,4005,5,1135,0,0,4005,4007,3,264,132,0,4006,4004,1,0,0,0,4007,4010,1,0,0,0,4008,4006,1,0,0,0,4008,4009,1,0,0,0,4009,263,1,0,0,0,4010,4008,1,0,0,0,4011,4028,3,570,285,0,4012,4013,5,65,0,0,4013,4029,5,284,0,0,4014,4026,3,632,316,0,4015,4016,5,285,0,0,4016,4018,5,1148,0,0,4017,4019,3,266,133,0,4018,4017,1,0,0,0,4018,4019,1,0,0,0,4019,4021,1,0,0,0,4020,4022,3,268,134,0,4021,4020,1,0,0,0,4021,4022,1,0,0,0,4022,4027,1,0,0,0,4023,4024,5,60,0,0,4024,4025,5,285,0,0,4025,4027,5,1148,0,0,4026,4015,1,0,0,0,4026,4023,1,0,0,0,4027,4029,1,0,0,0,4028,4012,1,0,0,0,4028,4014,1,0,0,0,4029,4041,1,0,0,0,4030,4032,5,283,0,0,4031,4033,5,285,0,0,4032,4031,1,0,0,0,4032,4033,1,0,0,0,4033,4034,1,0,0,0,4034,4035,5,1148,0,0,4035,4036,5,365,0,0,4036,4037,5,1133,0,0,4037,4038,3,262,131,0,4038,4039,5,1134,0,0,4039,4041,1,0,0,0,4040,4011,1,0,0,0,4040,4030,1,0,0,0,4041,265,1,0,0,0,4042,4047,5,116,0,0,4043,4047,5,411,0,0,4044,4045,5,42,0,0,4045,4047,3,662,331,0,4046,4042,1,0,0,0,4046,4043,1,0,0,0,4046,4044,1,0,0,0,4047,4048,1,0,0,0,4048,4049,5,118,0,0,4049,4050,5,55,0,0,4050,267,1,0,0,0,4051,4056,5,116,0,0,4052,4056,5,411,0,0,4053,4054,5,42,0,0,4054,4056,3,662,331,0,4055,4051,1,0,0,0,4055,4052,1,0,0,0,4055,4053,1,0,0,0,4056,4057,1,0,0,0,4057,4058,5,118,0,0,4058,4059,5,411,0,0,4059,269,1,0,0,0,4060,4069,7,52,0,0,4061,4069,5,75,0,0,4062,4069,5,171,0,0,4063,4069,5,166,0,0,4064,4069,5,164,0,0,4065,4069,5,625,0,0,4066,4069,7,53,0,0,4067,4069,5,165,0,0,4068,4060,1,0,0,0,4068,4061,1,0,0,0,4068,4062,1,0,0,0,4068,4063,1,0,0,0,4068,4064,1,0,0,0,4068,4065,1,0,0,0,4068,4066,1,0,0,0,4068,4067,1,0,0,0,4069,271,1,0,0,0,4070,4073,5,1117,0,0,4071,4073,3,276,138,0,4072,4070,1,0,0,0,4072,4071,1,0,0,0,4073,4078,1,0,0,0,4074,4075,5,1135,0,0,4075,4077,3,276,138,0,4076,4074,1,0,0,0,4077,4080,1,0,0,0,4078,4076,1,0,0,0,4078,4079,1,0,0,0,4079,273,1,0,0,0,4080,4078,1,0,0,0,4081,4083,5,12,0,0,4082,4081,1,0,0,0,4082,4083,1,0,0,0,4083,4084,1,0,0,0,4084,4085,3,612,306,0,4085,275,1,0,0,0,4086,4087,3,552,276,0,4087,4088,5,1132,0,0,4088,4089,5,1117,0,0,4089,4107,1,0,0,0,4090,4092,3,570,285,0,4091,4093,3,274,137,0,4092,4091,1,0,0,0,4092,4093,1,0,0,0,4093,4107,1,0,0,0,4094,4096,3,676,338,0,4095,4097,3,274,137,0,4096,4095,1,0,0,0,4096,4097,1,0,0,0,4097,4107,1,0,0,0,4098,4099,5,1159,0,0,4099,4101,5,1108,0,0,4100,4098,1,0,0,0,4100,4101,1,0,0,0,4101,4102,1,0,0,0,4102,4104,3,716,358,0,4103,4105,3,274,137,0,4104,4103,1,0,0,0,4104,4105,1,0,0,0,4105,4107,1,0,0,0,4106,4086,1,0,0,0,4106,4090,1,0,0,0,4106,4094,1,0,0,0,4106,4100,1,0,0,0,4107,277,1,0,0,0,4108,4109,5,87,0,0,4109,4114,3,208,104,0,4110,4111,5,1135,0,0,4111,4113,3,208,104,0,4112,4110,1,0,0,0,4113,4116,1,0,0,0,4114,4112,1,0,0,0,4114,4115,1,0,0,0,4115,4145,1,0,0,0,4116,4114,1,0,0,0,4117,4118,5,87,0,0,4118,4119,5,400,0,0,4119,4145,5,1148,0,0,4120,4121,5,87,0,0,4121,4122,5,127,0,0,4122,4126,5,1148,0,0,4123,4124,5,25,0,0,4124,4125,5,153,0,0,4125,4127,3,596,298,0,4126,4123,1,0,0,0,4126,4127,1,0,0,0,4127,4134,1,0,0,0,4128,4130,7,41,0,0,4129,4131,3,280,140,0,4130,4129,1,0,0,0,4131,4132,1,0,0,0,4132,4130,1,0,0,0,4132,4133,1,0,0,0,4133,4135,1,0,0,0,4134,4128,1,0,0,0,4134,4135,1,0,0,0,4135,4142,1,0,0,0,4136,4138,5,101,0,0,4137,4139,3,282,141,0,4138,4137,1,0,0,0,4139,4140,1,0,0,0,4140,4138,1,0,0,0,4140,4141,1,0,0,0,4141,4143,1,0,0,0,4142,4136,1,0,0,0,4142,4143,1,0,0,0,4143,4145,1,0,0,0,4144,4108,1,0,0,0,4144,4117,1,0,0,0,4144,4120,1,0,0,0,4145,279,1,0,0,0,4146,4147,5,173,0,0,4147,4148,5,19,0,0,4148,4159,5,1148,0,0,4149,4151,5,122,0,0,4150,4149,1,0,0,0,4150,4151,1,0,0,0,4151,4152,1,0,0,0,4152,4153,5,56,0,0,4153,4154,5,19,0,0,4154,4159,5,1148,0,0,4155,4156,5,58,0,0,4156,4157,5,19,0,0,4157,4159,5,1148,0,0,4158,4146,1,0,0,0,4158,4150,1,0,0,0,4158,4155,1,0,0,0,4159,281,1,0,0,0,4160,4161,5,169,0,0,4161,4162,5,19,0,0,4162,4167,5,1148,0,0,4163,4164,5,173,0,0,4164,4165,5,19,0,0,4165,4167,5,1148,0,0,4166,4160,1,0,0,0,4166,4163,1,0,0,0,4167,283,1,0,0,0,4168,4169,5,68,0,0,4169,4171,3,232,116,0,4170,4168,1,0,0,0,4170,4171,1,0,0,0,4171,4174,1,0,0,0,4172,4173,5,190,0,0,4173,4175,3,716,358,0,4174,4172,1,0,0,0,4174,4175,1,0,0,0,4175,285,1,0,0,0,4176,4177,5,73,0,0,4177,4178,5,19,0,0,4178,4183,3,292,146,0,4179,4180,5,1135,0,0,4180,4182,3,292,146,0,4181,4179,1,0,0,0,4182,4185,1,0,0,0,4183,4181,1,0,0,0,4183,4184,1,0,0,0,4184,4188,1,0,0,0,4185,4183,1,0,0,0,4186,4187,5,192,0,0,4187,4189,5,598,0,0,4188,4186,1,0,0,0,4188,4189,1,0,0,0,4189,287,1,0,0,0,4190,4191,5,74,0,0,4191,4192,3,716,358,0,4192,289,1,0,0,0,4193,4194,5,676,0,0,4194,4195,3,694,347,0,4195,4196,5,12,0,0,4196,4197,5,1133,0,0,4197,4198,3,692,346,0,4198,4208,5,1134,0,0,4199,4200,5,1135,0,0,4200,4201,3,694,347,0,4201,4202,5,12,0,0,4202,4203,5,1133,0,0,4203,4204,3,692,346,0,4204,4205,5,1134,0,0,4205,4207,1,0,0,0,4206,4199,1,0,0,0,4207,4210,1,0,0,0,4208,4206,1,0,0,0,4208,4209,1,0,0,0,4209,291,1,0,0,0,4210,4208,1,0,0,0,4211,4213,3,716,358,0,4212,4214,7,48,0,0,4213,4212,1,0,0,0,4213,4214,1,0,0,0,4214,293,1,0,0,0,4215,4226,5,99,0,0,4216,4217,3,296,148,0,4217,4218,5,1135,0,0,4218,4220,1,0,0,0,4219,4216,1,0,0,0,4219,4220,1,0,0,0,4220,4221,1,0,0,0,4221,4227,3,296,148,0,4222,4223,3,296,148,0,4223,4224,5,532,0,0,4224,4225,3,296,148,0,4225,4227,1,0,0,0,4226,4219,1,0,0,0,4226,4222,1,0,0,0,4227,295,1,0,0,0,4228,4232,3,618,309,0,4229,4232,3,594,297,0,4230,4232,3,614,307,0,4231,4228,1,0,0,0,4231,4229,1,0,0,0,4231,4230,1,0,0,0,4232,297,1,0,0,0,4233,4234,5,629,0,0,4234,4243,5,653,0,0,4235,4240,3,320,160,0,4236,4237,5,1135,0,0,4237,4239,3,320,160,0,4238,4236,1,0,0,0,4239,4242,1,0,0,0,4240,4238,1,0,0,0,4240,4241,1,0,0,0,4241,4244,1,0,0,0,4242,4240,1,0,0,0,4243,4235,1,0,0,0,4243,4244,1,0,0,0,4244,299,1,0,0,0,4245,4247,5,344,0,0,4246,4248,5,678,0,0,4247,4246,1,0,0,0,4247,4248,1,0,0,0,4248,301,1,0,0,0,4249,4251,5,369,0,0,4250,4252,5,678,0,0,4251,4250,1,0,0,0,4251,4252,1,0,0,0,4252,4258,1,0,0,0,4253,4255,5,10,0,0,4254,4256,5,521,0,0,4255,4254,1,0,0,0,4255,4256,1,0,0,0,4256,4257,1,0,0,0,4257,4259,5,353,0,0,4258,4253,1,0,0,0,4258,4259,1,0,0,0,4259,4264,1,0,0,0,4260,4262,5,521,0,0,4261,4260,1,0,0,0,4261,4262,1,0,0,0,4262,4263,1,0,0,0,4263,4265,5,138,0,0,4264,4261,1,0,0,0,4264,4265,1,0,0,0,4265,303,1,0,0,0,4266,4268,5,597,0,0,4267,4269,5,678,0,0,4268,4267,1,0,0,0,4268,4269,1,0,0,0,4269,4275,1,0,0,0,4270,4272,5,10,0,0,4271,4273,5,521,0,0,4272,4271,1,0,0,0,4272,4273,1,0,0,0,4273,4274,1,0,0,0,4274,4276,5,353,0,0,4275,4270,1,0,0,0,4275,4276,1,0,0,0,4276,4281,1,0,0,0,4277,4279,5,521,0,0,4278,4277,1,0,0,0,4278,4279,1,0,0,0,4279,4280,1,0,0,0,4280,4282,5,138,0,0,4281,4278,1,0,0,0,4281,4282,1,0,0,0,4282,305,1,0,0,0,4283,4284,5,604,0,0,4284,4285,3,612,306,0,4285,307,1,0,0,0,4286,4288,5,597,0,0,4287,4289,5,678,0,0,4288,4287,1,0,0,0,4288,4289,1,0,0,0,4289,4290,1,0,0,0,4290,4292,5,175,0,0,4291,4293,5,604,0,0,4292,4291,1,0,0,0,4292,4293,1,0,0,0,4293,4294,1,0,0,0,4294,4295,3,612,306,0,4295,309,1,0,0,0,4296,4297,5,138,0,0,4297,4298,5,604,0,0,4298,4299,3,612,306,0,4299,311,1,0,0,0,4300,4301,5,103,0,0,4301,4302,7,54,0,0,4302,4307,3,322,161,0,4303,4304,5,1135,0,0,4304,4306,3,322,161,0,4305,4303,1,0,0,0,4306,4309,1,0,0,0,4307,4305,1,0,0,0,4307,4308,1,0,0,0,4308,4311,1,0,0,0,4309,4307,1,0,0,0,4310,4312,3,674,337,0,4311,4310,1,0,0,0,4311,4312,1,0,0,0,4312,313,1,0,0,0,4313,4314,5,182,0,0,4314,4315,5,742,0,0,4315,315,1,0,0,0,4316,4317,5,153,0,0,4317,4318,5,340,0,0,4318,4319,5,1124,0,0,4319,4320,7,24,0,0,4320,317,1,0,0,0,4321,4323,5,153,0,0,4322,4324,7,55,0,0,4323,4322,1,0,0,0,4323,4324,1,0,0,0,4324,4325,1,0,0,0,4325,4326,5,653,0,0,4326,4331,3,326,163,0,4327,4328,5,1135,0,0,4328,4330,3,326,163,0,4329,4327,1,0,0,0,4330,4333,1,0,0,0,4331,4329,1,0,0,0,4331,4332,1,0,0,0,4332,319,1,0,0,0,4333,4331,1,0,0,0,4334,4335,5,192,0,0,4335,4336,5,377,0,0,4336,4342,5,616,0,0,4337,4338,5,134,0,0,4338,4342,5,193,0,0,4339,4340,5,134,0,0,4340,4342,5,538,0,0,4341,4334,1,0,0,0,4341,4337,1,0,0,0,4341,4339,1,0,0,0,4342,321,1,0,0,0,4343,4348,3,554,277,0,4344,4346,5,12,0,0,4345,4344,1,0,0,0,4345,4346,1,0,0,0,4346,4347,1,0,0,0,4347,4349,3,612,306,0,4348,4345,1,0,0,0,4348,4349,1,0,0,0,4349,4350,1,0,0,0,4350,4351,3,324,162,0,4351,323,1,0,0,0,4352,4354,5,134,0,0,4353,4355,5,474,0,0,4354,4353,1,0,0,0,4354,4355,1,0,0,0,4355,4361,1,0,0,0,4356,4358,5,106,0,0,4357,4356,1,0,0,0,4357,4358,1,0,0,0,4358,4359,1,0,0,0,4359,4361,5,193,0,0,4360,4352,1,0,0,0,4360,4357,1,0,0,0,4361,325,1,0,0,0,4362,4363,5,464,0,0,4363,4364,5,472,0,0,4364,4370,3,328,164,0,4365,4366,5,134,0,0,4366,4370,5,193,0,0,4367,4368,5,134,0,0,4368,4370,5,538,0,0,4369,4362,1,0,0,0,4369,4365,1,0,0,0,4369,4367,1,0,0,0,4370,327,1,0,0,0,4371,4372,5,799,0,0,4372,4379,5,134,0,0,4373,4374,5,134,0,0,4374,4379,5,800,0,0,4375,4376,5,134,0,0,4376,4379,5,801,0,0,4377,4379,5,802,0,0,4378,4371,1,0,0,0,4378,4373,1,0,0,0,4378,4375,1,0,0,0,4378,4377,1,0,0,0,4379,329,1,0,0,0,4380,4381,5,24,0,0,4381,4382,5,477,0,0,4382,4383,5,175,0,0,4383,4388,3,348,174,0,4384,4385,5,1135,0,0,4385,4387,3,348,174,0,4386,4384,1,0,0,0,4387,4390,1,0,0,0,4388,4386,1,0,0,0,4388,4389,1,0,0,0,4389,4392,1,0,0,0,4390,4388,1,0,0,0,4391,4393,3,356,178,0,4392,4391,1,0,0,0,4392,4393,1,0,0,0,4393,331,1,0,0,0,4394,4395,5,24,0,0,4395,4396,5,588,0,0,4396,4397,5,429,0,0,4397,4402,3,358,179,0,4398,4399,5,1135,0,0,4399,4401,3,358,179,0,4400,4398,1,0,0,0,4401,4404,1,0,0,0,4402,4400,1,0,0,0,4402,4403,1,0,0,0,4403,333,1,0,0,0,4404,4402,1,0,0,0,4405,4406,5,132,0,0,4406,4407,7,56,0,0,4407,4412,5,476,0,0,4408,4409,5,175,0,0,4409,4413,5,1148,0,0,4410,4411,5,15,0,0,4411,4413,5,1148,0,0,4412,4408,1,0,0,0,4412,4410,1,0,0,0,4413,335,1,0,0,0,4414,4415,5,589,0,0,4415,4416,5,477,0,0,4416,337,1,0,0,0,4417,4418,5,589,0,0,4418,4420,5,614,0,0,4419,4421,5,6,0,0,4420,4419,1,0,0,0,4420,4421,1,0,0,0,4421,4423,1,0,0,0,4422,4424,3,356,178,0,4423,4422,1,0,0,0,4423,4424,1,0,0,0,4424,339,1,0,0,0,4425,4426,5,629,0,0,4426,4435,5,614,0,0,4427,4432,3,362,181,0,4428,4429,5,1135,0,0,4429,4431,3,362,181,0,4430,4428,1,0,0,0,4431,4434,1,0,0,0,4432,4430,1,0,0,0,4432,4433,1,0,0,0,4433,4436,1,0,0,0,4434,4432,1,0,0,0,4435,4427,1,0,0,0,4435,4436,1,0,0,0,4436,4439,1,0,0,0,4437,4438,5,663,0,0,4438,4440,3,364,182,0,4439,4437,1,0,0,0,4439,4440,1,0,0,0,4440,4444,1,0,0,0,4441,4443,3,366,183,0,4442,4441,1,0,0,0,4443,4446,1,0,0,0,4444,4442,1,0,0,0,4444,4445,1,0,0,0,4445,4448,1,0,0,0,4446,4444,1,0,0,0,4447,4449,3,356,178,0,4448,4447,1,0,0,0,4448,4449,1,0,0,0,4449,341,1,0,0,0,4450,4451,5,635,0,0,4451,4460,5,614,0,0,4452,4457,3,362,181,0,4453,4454,5,1135,0,0,4454,4456,3,362,181,0,4455,4453,1,0,0,0,4456,4459,1,0,0,0,4457,4455,1,0,0,0,4457,4458,1,0,0,0,4458,4461,1,0,0,0,4459,4457,1,0,0,0,4460,4452,1,0,0,0,4460,4461,1,0,0,0,4461,343,1,0,0,0,4462,4463,5,629,0,0,4463,4464,5,441,0,0,4464,345,1,0,0,0,4465,4466,5,635,0,0,4466,4467,5,441,0,0,4467,347,1,0,0,0,4468,4469,3,350,175,0,4469,4470,5,1124,0,0,4470,4471,5,1148,0,0,4471,4498,1,0,0,0,4472,4473,3,352,176,0,4473,4474,5,1124,0,0,4474,4475,3,618,309,0,4475,4498,1,0,0,0,4476,4477,3,354,177,0,4477,4478,5,1124,0,0,4478,4479,7,24,0,0,4479,4498,1,0,0,0,4480,4481,5,481,0,0,4481,4482,5,1124,0,0,4482,4498,5,1151,0,0,4483,4484,5,449,0,0,4484,4485,5,1124,0,0,4485,4494,5,1133,0,0,4486,4491,3,612,306,0,4487,4488,5,1135,0,0,4488,4490,3,612,306,0,4489,4487,1,0,0,0,4490,4493,1,0,0,0,4491,4489,1,0,0,0,4491,4492,1,0,0,0,4492,4495,1,0,0,0,4493,4491,1,0,0,0,4494,4486,1,0,0,0,4494,4495,1,0,0,0,4495,4496,1,0,0,0,4496,4498,5,1134,0,0,4497,4468,1,0,0,0,4497,4472,1,0,0,0,4497,4476,1,0,0,0,4497,4480,1,0,0,0,4497,4483,1,0,0,0,4498,349,1,0,0,0,4499,4500,7,57,0,0,4500,351,1,0,0,0,4501,4502,7,58,0,0,4502,353,1,0,0,0,4503,4504,7,59,0,0,4504,355,1,0,0,0,4505,4506,5,65,0,0,4506,4507,5,355,0,0,4507,4508,5,1148,0,0,4508,357,1,0,0,0,4509,4510,5,581,0,0,4510,4511,5,1124,0,0,4511,4512,5,1133,0,0,4512,4513,3,644,322,0,4513,4514,5,1134,0,0,4514,4559,1,0,0,0,4515,4516,5,583,0,0,4516,4517,5,1124,0,0,4517,4518,5,1133,0,0,4518,4519,3,644,322,0,4519,4520,5,1134,0,0,4520,4559,1,0,0,0,4521,4522,5,582,0,0,4522,4523,5,1124,0,0,4523,4524,5,1133,0,0,4524,4525,3,648,324,0,4525,4526,5,1134,0,0,4526,4559,1,0,0,0,4527,4528,5,584,0,0,4528,4529,5,1124,0,0,4529,4530,5,1133,0,0,4530,4531,3,648,324,0,4531,4532,5,1134,0,0,4532,4559,1,0,0,0,4533,4534,5,586,0,0,4534,4535,5,1124,0,0,4535,4536,5,1133,0,0,4536,4537,3,658,329,0,4537,4538,5,1134,0,0,4538,4559,1,0,0,0,4539,4540,5,587,0,0,4540,4541,5,1124,0,0,4541,4542,5,1133,0,0,4542,4543,3,658,329,0,4543,4544,5,1134,0,0,4544,4559,1,0,0,0,4545,4546,5,585,0,0,4546,4547,5,1124,0,0,4547,4548,5,1133,0,0,4548,4553,3,360,180,0,4549,4550,5,1135,0,0,4550,4552,3,360,180,0,4551,4549,1,0,0,0,4552,4555,1,0,0,0,4553,4551,1,0,0,0,4553,4554,1,0,0,0,4554,4556,1,0,0,0,4555,4553,1,0,0,0,4556,4557,5,1134,0,0,4557,4559,1,0,0,0,4558,4509,1,0,0,0,4558,4515,1,0,0,0,4558,4521,1,0,0,0,4558,4527,1,0,0,0,4558,4533,1,0,0,0,4558,4539,1,0,0,0,4558,4545,1,0,0,0,4559,359,1,0,0,0,4560,4561,5,1133,0,0,4561,4562,3,554,277,0,4562,4563,5,1135,0,0,4563,4564,3,554,277,0,4564,4565,5,1134,0,0,4565,361,1,0,0,0,4566,4567,7,60,0,0,4567,363,1,0,0,0,4568,4569,7,61,0,0,4569,4570,5,1124,0,0,4570,4587,3,368,184,0,4571,4572,5,483,0,0,4572,4573,5,1124,0,0,4573,4574,5,1148,0,0,4574,4575,5,1135,0,0,4575,4576,5,484,0,0,4576,4577,5,1124,0,0,4577,4587,3,618,309,0,4578,4579,5,575,0,0,4579,4580,5,1124,0,0,4580,4581,5,1148,0,0,4581,4582,5,1135,0,0,4582,4583,5,576,0,0,4583,4584,5,1124,0,0,4584,4587,3,618,309,0,4585,4587,5,623,0,0,4586,4568,1,0,0,0,4586,4571,1,0,0,0,4586,4578,1,0,0,0,4586,4585,1,0,0,0,4587,365,1,0,0,0,4588,4589,5,665,0,0,4589,4590,5,1124,0,0,4590,4601,5,1148,0,0,4591,4592,5,551,0,0,4592,4593,5,1124,0,0,4593,4601,5,1148,0,0,4594,4595,5,391,0,0,4595,4596,5,1124,0,0,4596,4601,5,1148,0,0,4597,4598,5,555,0,0,4598,4599,5,1124,0,0,4599,4601,5,1148,0,0,4600,4588,1,0,0,0,4600,4591,1,0,0,0,4600,4594,1,0,0,0,4600,4597,1,0,0,0,4601,367,1,0,0,0,4602,4607,3,604,302,0,4603,4604,5,1135,0,0,4604,4606,3,604,302,0,4605,4603,1,0,0,0,4606,4609,1,0,0,0,4607,4605,1,0,0,0,4607,4608,1,0,0,0,4608,4612,1,0,0,0,4609,4607,1,0,0,0,4610,4612,5,1148,0,0,4611,4602,1,0,0,0,4611,4610,1,0,0,0,4612,369,1,0,0,0,4613,4614,5,681,0,0,4614,4615,7,62,0,0,4615,4617,3,606,303,0,4616,4618,7,63,0,0,4617,4616,1,0,0,0,4617,4618,1,0,0,0,4618,371,1,0,0,0,4619,4620,5,681,0,0,4620,4621,5,407,0,0,4621,4627,3,606,303,0,4622,4625,5,643,0,0,4623,4624,5,65,0,0,4624,4626,5,509,0,0,4625,4623,1,0,0,0,4625,4626,1,0,0,0,4626,4628,1,0,0,0,4627,4622,1,0,0,0,4627,4628,1,0,0,0,4628,373,1,0,0,0,4629,4630,5,681,0,0,4630,4631,5,560,0,0,4631,4632,3,606,303,0,4632,375,1,0,0,0,4633,4634,5,681,0,0,4634,4635,5,369,0,0,4635,4638,3,606,303,0,4636,4637,5,536,0,0,4637,4639,5,553,0,0,4638,4636,1,0,0,0,4638,4639,1,0,0,0,4639,377,1,0,0,0,4640,4641,5,681,0,0,4641,4642,5,597,0,0,4642,4643,3,606,303,0,4643,379,1,0,0,0,4644,4645,5,681,0,0,4645,4648,5,570,0,0,4646,4647,5,32,0,0,4647,4649,3,606,303,0,4648,4646,1,0,0,0,4648,4649,1,0,0,0,4649,381,1,0,0,0,4650,4651,5,560,0,0,4651,4652,3,612,306,0,4652,4655,5,68,0,0,4653,4656,5,1148,0,0,4654,4656,5,1159,0,0,4655,4653,1,0,0,0,4655,4654,1,0,0,0,4656,383,1,0,0,0,4657,4658,5,708,0,0,4658,4661,3,612,306,0,4659,4660,5,187,0,0,4660,4662,3,660,330,0,4661,4659,1,0,0,0,4661,4662,1,0,0,0,4662,385,1,0,0,0,4663,4664,7,64,0,0,4664,4665,5,560,0,0,4665,4666,3,612,306,0,4666,387,1,0,0,0,4667,4670,3,390,195,0,4668,4670,3,4,2,0,4669,4667,1,0,0,0,4669,4668,1,0,0,0,4670,389,1,0,0,0,4671,4672,3,612,306,0,4672,4673,5,1144,0,0,4673,4675,1,0,0,0,4674,4671,1,0,0,0,4674,4675,1,0,0,0,4675,4676,1,0,0,0,4676,4682,5,344,0,0,4677,4678,3,410,205,0,4678,4679,5,1136,0,0,4679,4681,1,0,0,0,4680,4677,1,0,0,0,4681,4684,1,0,0,0,4682,4680,1,0,0,0,4682,4683,1,0,0,0,4683,4690,1,0,0,0,4684,4682,1,0,0,0,4685,4686,3,412,206,0,4686,4687,5,1136,0,0,4687,4689,1,0,0,0,4688,4685,1,0,0,0,4689,4692,1,0,0,0,4690,4688,1,0,0,0,4690,4691,1,0,0,0,4691,4698,1,0,0,0,4692,4690,1,0,0,0,4693,4694,3,414,207,0,4694,4695,5,1136,0,0,4695,4697,1,0,0,0,4696,4693,1,0,0,0,4697,4700,1,0,0,0,4698,4696,1,0,0,0,4698,4699,1,0,0,0,4699,4706,1,0,0,0,4700,4698,1,0,0,0,4701,4702,3,416,208,0,4702,4703,5,1136,0,0,4703,4705,1,0,0,0,4704,4701,1,0,0,0,4705,4708,1,0,0,0,4706,4704,1,0,0,0,4706,4707,1,0,0,0,4707,4712,1,0,0,0,4708,4706,1,0,0,0,4709,4711,3,420,210,0,4710,4709,1,0,0,0,4711,4714,1,0,0,0,4712,4710,1,0,0,0,4712,4713,1,0,0,0,4713,4715,1,0,0,0,4714,4712,1,0,0,0,4715,4717,5,407,0,0,4716,4718,3,612,306,0,4717,4716,1,0,0,0,4717,4718,1,0,0,0,4718,391,1,0,0,0,4719,4722,5,22,0,0,4720,4723,3,612,306,0,4721,4723,3,716,358,0,4722,4720,1,0,0,0,4722,4721,1,0,0,0,4722,4723,1,0,0,0,4723,4725,1,0,0,0,4724,4726,3,422,211,0,4725,4724,1,0,0,0,4726,4727,1,0,0,0,4727,4725,1,0,0,0,4727,4728,1,0,0,0,4728,4735,1,0,0,0,4729,4731,5,53,0,0,4730,4732,3,420,210,0,4731,4730,1,0,0,0,4732,4733,1,0,0,0,4733,4731,1,0,0,0,4733,4734,1,0,0,0,4734,4736,1,0,0,0,4735,4729,1,0,0,0,4735,4736,1,0,0,0,4736,4737,1,0,0,0,4737,4738,5,407,0,0,4738,4739,5,22,0,0,4739,393,1,0,0,0,4740,4741,5,77,0,0,4741,4742,3,716,358,0,4742,4744,5,174,0,0,4743,4745,3,420,210,0,4744,4743,1,0,0,0,4745,4746,1,0,0,0,4746,4744,1,0,0,0,4746,4747,1,0,0,0,4747,4751,1,0,0,0,4748,4750,3,424,212,0,4749,4748,1,0,0,0,4750,4753,1,0,0,0,4751,4749,1,0,0,0,4751,4752,1,0,0,0,4752,4760,1,0,0,0,4753,4751,1,0,0,0,4754,4756,5,53,0,0,4755,4757,3,420,210,0,4756,4755,1,0,0,0,4757,4758,1,0,0,0,4758,4756,1,0,0,0,4758,4759,1,0,0,0,4759,4761,1,0,0,0,4760,4754,1,0,0,0,4760,4761,1,0,0,0,4761,4762,1,0,0,0,4762,4763,5,407,0,0,4763,4764,5,77,0,0,4764,395,1,0,0,0,4765,4766,5,89,0,0,4766,4767,3,612,306,0,4767,397,1,0,0,0,4768,4769,5,96,0,0,4769,4770,3,612,306,0,4770,399,1,0,0,0,4771,4772,3,612,306,0,4772,4773,5,1144,0,0,4773,4775,1,0,0,0,4774,4771,1,0,0,0,4774,4775,1,0,0,0,4775,4776,1,0,0,0,4776,4778,5,105,0,0,4777,4779,3,420,210,0,4778,4777,1,0,0,0,4779,4780,1,0,0,0,4780,4778,1,0,0,0,4780,4781,1,0,0,0,4781,4782,1,0,0,0,4782,4783,5,407,0,0,4783,4785,5,105,0,0,4784,4786,3,612,306,0,4785,4784,1,0,0,0,4785,4786,1,0,0,0,4786,401,1,0,0,0,4787,4788,3,612,306,0,4788,4789,5,1144,0,0,4789,4791,1,0,0,0,4790,4787,1,0,0,0,4790,4791,1,0,0,0,4791,4792,1,0,0,0,4792,4794,5,140,0,0,4793,4795,3,420,210,0,4794,4793,1,0,0,0,4795,4796,1,0,0,0,4796,4794,1,0,0,0,4796,4797,1,0,0,0,4797,4798,1,0,0,0,4798,4799,5,663,0,0,4799,4800,3,716,358,0,4800,4801,5,407,0,0,4801,4803,5,140,0,0,4802,4804,3,612,306,0,4803,4802,1,0,0,0,4803,4804,1,0,0,0,4804,403,1,0,0,0,4805,4806,5,146,0,0,4806,4807,3,716,358,0,4807,405,1,0,0,0,4808,4809,3,612,306,0,4809,4810,5,1144,0,0,4810,4812,1,0,0,0,4811,4808,1,0,0,0,4811,4812,1,0,0,0,4812,4813,1,0,0,0,4813,4814,5,191,0,0,4814,4815,3,716,358,0,4815,4817,5,399,0,0,4816,4818,3,420,210,0,4817,4816,1,0,0,0,4818,4819,1,0,0,0,4819,4817,1,0,0,0,4819,4820,1,0,0,0,4820,4821,1,0,0,0,4821,4822,5,407,0,0,4822,4824,5,191,0,0,4823,4825,3,612,306,0,4824,4823,1,0,0,0,4824,4825,1,0,0,0,4825,407,1,0,0,0,4826,4827,5,361,0,0,4827,4842,3,612,306,0,4828,4833,5,64,0,0,4829,4831,5,520,0,0,4830,4829,1,0,0,0,4830,4831,1,0,0,0,4831,4832,1,0,0,0,4832,4834,5,68,0,0,4833,4830,1,0,0,0,4833,4834,1,0,0,0,4834,4835,1,0,0,0,4835,4836,3,612,306,0,4836,4837,5,87,0,0,4837,4838,3,644,322,0,4838,4842,1,0,0,0,4839,4840,5,539,0,0,4840,4842,3,612,306,0,4841,4826,1,0,0,0,4841,4828,1,0,0,0,4841,4839,1,0,0,0,4842,409,1,0,0,0,4843,4844,5,41,0,0,4844,4845,3,644,322,0,4845,4848,3,632,316,0,4846,4847,5,42,0,0,4847,4849,3,716,358,0,4848,4846,1,0,0,0,4848,4849,1,0,0,0,4849,411,1,0,0,0,4850,4851,5,41,0,0,4851,4852,3,612,306,0,4852,4853,5,29,0,0,4853,4860,5,65,0,0,4854,4861,3,618,309,0,4855,4857,5,162,0,0,4856,4858,5,669,0,0,4857,4856,1,0,0,0,4857,4858,1,0,0,0,4858,4859,1,0,0,0,4859,4861,5,1148,0,0,4860,4854,1,0,0,0,4860,4855,1,0,0,0,4861,413,1,0,0,0,4862,4863,5,41,0,0,4863,4864,3,612,306,0,4864,4865,5,38,0,0,4865,4866,5,65,0,0,4866,4867,3,198,99,0,4867,415,1,0,0,0,4868,4869,5,41,0,0,4869,4870,7,65,0,0,4870,4871,5,442,0,0,4871,4872,5,65,0,0,4872,4877,3,418,209,0,4873,4874,5,1135,0,0,4874,4876,3,418,209,0,4875,4873,1,0,0,0,4876,4879,1,0,0,0,4877,4875,1,0,0,0,4877,4878,1,0,0,0,4878,4880,1,0,0,0,4879,4877,1,0,0,0,4880,4881,3,388,194,0,4881,417,1,0,0,0,4882,4894,3,618,309,0,4883,4885,5,162,0,0,4884,4886,5,669,0,0,4885,4884,1,0,0,0,4885,4886,1,0,0,0,4886,4887,1,0,0,0,4887,4894,5,1148,0,0,4888,4894,3,612,306,0,4889,4894,5,163,0,0,4890,4891,5,114,0,0,4891,4894,5,435,0,0,4892,4894,5,161,0,0,4893,4882,1,0,0,0,4893,4883,1,0,0,0,4893,4888,1,0,0,0,4893,4889,1,0,0,0,4893,4890,1,0,0,0,4893,4892,1,0,0,0,4894,419,1,0,0,0,4895,4898,3,16,8,0,4896,4898,3,4,2,0,4897,4895,1,0,0,0,4897,4896,1,0,0,0,4898,4899,1,0,0,0,4899,4900,5,1136,0,0,4900,421,1,0,0,0,4901,4904,5,189,0,0,4902,4905,3,630,315,0,4903,4905,3,716,358,0,4904,4902,1,0,0,0,4904,4903,1,0,0,0,4905,4906,1,0,0,0,4906,4908,5,174,0,0,4907,4909,3,420,210,0,4908,4907,1,0,0,0,4909,4910,1,0,0,0,4910,4908,1,0,0,0,4910,4911,1,0,0,0,4911,423,1,0,0,0,4912,4913,5,54,0,0,4913,4914,3,716,358,0,4914,4916,5,174,0,0,4915,4917,3,420,210,0,4916,4915,1,0,0,0,4917,4918,1,0,0,0,4918,4916,1,0,0,0,4918,4919,1,0,0,0,4919,425,1,0,0,0,4920,4921,5,7,0,0,4921,4922,5,665,0,0,4922,4927,3,446,223,0,4923,4924,5,1135,0,0,4924,4926,3,446,223,0,4925,4923,1,0,0,0,4926,4929,1,0,0,0,4927,4925,1,0,0,0,4927,4928,1,0,0,0,4928,4984,1,0,0,0,4929,4927,1,0,0,0,4930,4931,5,7,0,0,4931,4933,5,665,0,0,4932,4934,3,668,334,0,4933,4932,1,0,0,0,4933,4934,1,0,0,0,4934,4935,1,0,0,0,4935,4950,3,448,224,0,4936,4948,5,142,0,0,4937,4949,5,529,0,0,4938,4945,3,456,228,0,4939,4941,5,10,0,0,4940,4939,1,0,0,0,4940,4941,1,0,0,0,4941,4942,1,0,0,0,4942,4944,3,456,228,0,4943,4940,1,0,0,0,4944,4947,1,0,0,0,4945,4943,1,0,0,0,4945,4946,1,0,0,0,4946,4949,1,0,0,0,4947,4945,1,0,0,0,4948,4937,1,0,0,0,4948,4938,1,0,0,0,4949,4951,1,0,0,0,4950,4936,1,0,0,0,4950,4951,1,0,0,0,4951,4958,1,0,0,0,4952,4954,5,192,0,0,4953,4955,3,458,229,0,4954,4953,1,0,0,0,4955,4956,1,0,0,0,4956,4954,1,0,0,0,4956,4957,1,0,0,0,4957,4959,1,0,0,0,4958,4952,1,0,0,0,4958,4959,1,0,0,0,4959,4964,1,0,0,0,4960,4963,3,460,230,0,4961,4963,3,462,231,0,4962,4960,1,0,0,0,4962,4961,1,0,0,0,4963,4966,1,0,0,0,4964,4962,1,0,0,0,4964,4965,1,0,0,0,4965,4971,1,0,0,0,4966,4964,1,0,0,0,4967,4968,5,368,0,0,4968,4972,5,1148,0,0,4969,4970,5,14,0,0,4970,4972,5,1148,0,0,4971,4967,1,0,0,0,4971,4969,1,0,0,0,4971,4972,1,0,0,0,4972,4984,1,0,0,0,4973,4974,5,7,0,0,4974,4976,5,665,0,0,4975,4977,3,668,334,0,4976,4975,1,0,0,0,4976,4977,1,0,0,0,4977,4978,1,0,0,0,4978,4979,3,592,296,0,4979,4980,5,42,0,0,4980,4981,5,596,0,0,4981,4982,3,434,217,0,4982,4984,1,0,0,0,4983,4920,1,0,0,0,4983,4930,1,0,0,0,4983,4973,1,0,0,0,4984,427,1,0,0,0,4985,4986,5,33,0,0,4986,4987,5,665,0,0,4987,5037,3,448,224,0,4988,4989,5,33,0,0,4989,4991,5,665,0,0,4990,4992,3,670,335,0,4991,4990,1,0,0,0,4991,4992,1,0,0,0,4992,4993,1,0,0,0,4993,4997,3,448,224,0,4994,4995,5,42,0,0,4995,4996,5,596,0,0,4996,4998,3,434,217,0,4997,4994,1,0,0,0,4997,4998,1,0,0,0,4998,5013,1,0,0,0,4999,5011,5,142,0,0,5e3,5012,5,529,0,0,5001,5008,3,456,228,0,5002,5004,5,10,0,0,5003,5002,1,0,0,0,5003,5004,1,0,0,0,5004,5005,1,0,0,0,5005,5007,3,456,228,0,5006,5003,1,0,0,0,5007,5010,1,0,0,0,5008,5006,1,0,0,0,5008,5009,1,0,0,0,5009,5012,1,0,0,0,5010,5008,1,0,0,0,5011,5e3,1,0,0,0,5011,5001,1,0,0,0,5012,5014,1,0,0,0,5013,4999,1,0,0,0,5013,5014,1,0,0,0,5014,5021,1,0,0,0,5015,5017,5,192,0,0,5016,5018,3,458,229,0,5017,5016,1,0,0,0,5018,5019,1,0,0,0,5019,5017,1,0,0,0,5019,5020,1,0,0,0,5020,5022,1,0,0,0,5021,5015,1,0,0,0,5021,5022,1,0,0,0,5022,5027,1,0,0,0,5023,5026,3,460,230,0,5024,5026,3,462,231,0,5025,5023,1,0,0,0,5025,5024,1,0,0,0,5026,5029,1,0,0,0,5027,5025,1,0,0,0,5027,5028,1,0,0,0,5028,5034,1,0,0,0,5029,5027,1,0,0,0,5030,5031,5,368,0,0,5031,5035,5,1148,0,0,5032,5033,5,14,0,0,5033,5035,5,1148,0,0,5034,5030,1,0,0,0,5034,5032,1,0,0,0,5034,5035,1,0,0,0,5035,5037,1,0,0,0,5036,4985,1,0,0,0,5036,4988,1,0,0,0,5037,429,1,0,0,0,5038,5039,5,51,0,0,5039,5041,5,665,0,0,5040,5042,3,668,334,0,5041,5040,1,0,0,0,5041,5042,1,0,0,0,5042,5043,1,0,0,0,5043,5044,3,588,294,0,5044,431,1,0,0,0,5045,5046,5,72,0,0,5046,5051,3,464,232,0,5047,5048,5,1135,0,0,5048,5050,3,464,232,0,5049,5047,1,0,0,0,5050,5053,1,0,0,0,5051,5049,1,0,0,0,5051,5052,1,0,0,0,5052,5054,1,0,0,0,5053,5051,1,0,0,0,5054,5056,5,118,0,0,5055,5057,7,66,0,0,5056,5055,1,0,0,0,5056,5057,1,0,0,0,5057,5058,1,0,0,0,5058,5059,3,468,234,0,5059,5060,5,175,0,0,5060,5075,3,560,280,0,5061,5073,5,142,0,0,5062,5074,5,529,0,0,5063,5070,3,456,228,0,5064,5066,5,10,0,0,5065,5064,1,0,0,0,5065,5066,1,0,0,0,5066,5067,1,0,0,0,5067,5069,3,456,228,0,5068,5065,1,0,0,0,5069,5072,1,0,0,0,5070,5068,1,0,0,0,5070,5071,1,0,0,0,5071,5074,1,0,0,0,5072,5070,1,0,0,0,5073,5062,1,0,0,0,5073,5063,1,0,0,0,5074,5076,1,0,0,0,5075,5061,1,0,0,0,5075,5076,1,0,0,0,5076,5086,1,0,0,0,5077,5083,5,192,0,0,5078,5079,5,72,0,0,5079,5082,5,120,0,0,5080,5082,3,458,229,0,5081,5078,1,0,0,0,5081,5080,1,0,0,0,5082,5085,1,0,0,0,5083,5081,1,0,0,0,5083,5084,1,0,0,0,5084,5087,1,0,0,0,5085,5083,1,0,0,0,5086,5077,1,0,0,0,5086,5087,1,0,0,0,5087,5094,1,0,0,0,5088,5089,5,12,0,0,5089,5090,3,592,296,0,5090,5091,5,192,0,0,5091,5092,5,596,0,0,5092,5093,3,434,217,0,5093,5095,1,0,0,0,5094,5088,1,0,0,0,5094,5095,1,0,0,0,5095,5106,1,0,0,0,5096,5097,5,72,0,0,5097,5098,3,566,283,0,5098,5099,5,175,0,0,5099,5103,3,560,280,0,5100,5101,5,192,0,0,5101,5102,5,697,0,0,5102,5104,5,120,0,0,5103,5100,1,0,0,0,5103,5104,1,0,0,0,5104,5106,1,0,0,0,5105,5045,1,0,0,0,5105,5096,1,0,0,0,5106,433,1,0,0,0,5107,5116,5,42,0,0,5108,5116,5,529,0,0,5109,5112,5,6,0,0,5110,5111,5,59,0,0,5111,5113,3,566,283,0,5112,5110,1,0,0,0,5112,5113,1,0,0,0,5113,5116,1,0,0,0,5114,5116,3,566,283,0,5115,5107,1,0,0,0,5115,5108,1,0,0,0,5115,5109,1,0,0,0,5115,5114,1,0,0,0,5116,435,1,0,0,0,5117,5118,5,72,0,0,5118,5119,5,566,0,0,5119,5120,5,118,0,0,5120,5121,3,592,296,0,5121,5122,5,175,0,0,5122,5127,3,592,296,0,5123,5124,5,1135,0,0,5124,5126,3,592,296,0,5125,5123,1,0,0,0,5126,5129,1,0,0,0,5127,5125,1,0,0,0,5127,5128,1,0,0,0,5128,5133,1,0,0,0,5129,5127,1,0,0,0,5130,5131,5,192,0,0,5131,5132,5,72,0,0,5132,5134,5,120,0,0,5133,5130,1,0,0,0,5133,5134,1,0,0,0,5134,437,1,0,0,0,5135,5136,5,139,0,0,5136,5137,5,665,0,0,5137,5142,3,470,235,0,5138,5139,5,1135,0,0,5139,5141,3,470,235,0,5140,5138,1,0,0,0,5141,5144,1,0,0,0,5142,5140,1,0,0,0,5142,5143,1,0,0,0,5143,439,1,0,0,0,5144,5142,1,0,0,0,5145,5146,5,147,0,0,5146,5151,3,464,232,0,5147,5148,5,1135,0,0,5148,5150,3,464,232,0,5149,5147,1,0,0,0,5150,5153,1,0,0,0,5151,5149,1,0,0,0,5151,5152,1,0,0,0,5152,5154,1,0,0,0,5153,5151,1,0,0,0,5154,5156,5,118,0,0,5155,5157,7,66,0,0,5156,5155,1,0,0,0,5156,5157,1,0,0,0,5157,5158,1,0,0,0,5158,5159,3,468,234,0,5159,5160,5,68,0,0,5160,5161,3,560,280,0,5161,5182,1,0,0,0,5162,5163,5,147,0,0,5163,5165,5,6,0,0,5164,5166,5,725,0,0,5165,5164,1,0,0,0,5165,5166,1,0,0,0,5166,5167,1,0,0,0,5167,5168,5,1135,0,0,5168,5169,5,72,0,0,5169,5170,5,120,0,0,5170,5171,5,68,0,0,5171,5182,3,560,280,0,5172,5173,5,147,0,0,5173,5174,3,566,283,0,5174,5178,5,68,0,0,5175,5177,3,560,280,0,5176,5175,1,0,0,0,5177,5180,1,0,0,0,5178,5176,1,0,0,0,5178,5179,1,0,0,0,5179,5182,1,0,0,0,5180,5178,1,0,0,0,5181,5145,1,0,0,0,5181,5162,1,0,0,0,5181,5172,1,0,0,0,5182,441,1,0,0,0,5183,5184,5,147,0,0,5184,5185,5,566,0,0,5185,5186,5,118,0,0,5186,5187,3,592,296,0,5187,5188,5,68,0,0,5188,5193,3,592,296,0,5189,5190,5,1135,0,0,5190,5192,3,592,296,0,5191,5189,1,0,0,0,5192,5195,1,0,0,0,5193,5191,1,0,0,0,5193,5194,1,0,0,0,5194,443,1,0,0,0,5195,5193,1,0,0,0,5196,5197,5,153,0,0,5197,5200,5,551,0,0,5198,5199,5,65,0,0,5199,5201,3,592,296,0,5200,5198,1,0,0,0,5200,5201,1,0,0,0,5201,5202,1,0,0,0,5202,5205,5,1124,0,0,5203,5206,3,710,355,0,5204,5206,5,1148,0,0,5205,5203,1,0,0,0,5205,5204,1,0,0,0,5206,445,1,0,0,0,5207,5208,3,592,296,0,5208,5209,3,460,230,0,5209,447,1,0,0,0,5210,5215,3,450,225,0,5211,5212,5,1135,0,0,5212,5214,3,450,225,0,5213,5211,1,0,0,0,5214,5217,1,0,0,0,5215,5213,1,0,0,0,5215,5216,1,0,0,0,5216,449,1,0,0,0,5217,5215,1,0,0,0,5218,5219,3,590,295,0,5219,5220,5,448,0,0,5220,5221,5,19,0,0,5221,5222,5,551,0,0,5222,5223,5,1148,0,0,5223,5244,1,0,0,0,5224,5225,3,590,295,0,5225,5226,5,448,0,0,5226,5227,5,19,0,0,5227,5228,5,991,0,0,5228,5229,5,551,0,0,5229,5230,3,452,226,0,5230,5244,1,0,0,0,5231,5232,3,590,295,0,5232,5233,5,448,0,0,5233,5234,5,19,0,0,5234,5235,5,1148,0,0,5235,5236,3,452,226,0,5236,5244,1,0,0,0,5237,5238,3,590,295,0,5238,5239,5,448,0,0,5239,5240,5,192,0,0,5240,5241,3,454,227,0,5241,5244,1,0,0,0,5242,5244,3,590,295,0,5243,5218,1,0,0,0,5243,5224,1,0,0,0,5243,5231,1,0,0,0,5243,5237,1,0,0,0,5243,5242,1,0,0,0,5244,451,1,0,0,0,5245,5246,5,141,0,0,5246,5248,5,1148,0,0,5247,5245,1,0,0,0,5247,5248,1,0,0,0,5248,5252,1,0,0,0,5249,5250,5,145,0,0,5250,5251,5,35,0,0,5251,5253,5,551,0,0,5252,5249,1,0,0,0,5252,5253,1,0,0,0,5253,453,1,0,0,0,5254,5262,3,610,305,0,5255,5259,7,67,0,0,5256,5260,5,1148,0,0,5257,5258,5,991,0,0,5258,5260,5,551,0,0,5259,5256,1,0,0,0,5259,5257,1,0,0,0,5260,5261,1,0,0,0,5261,5263,3,452,226,0,5262,5255,1,0,0,0,5262,5263,1,0,0,0,5263,5269,1,0,0,0,5264,5265,3,610,305,0,5265,5266,5,187,0,0,5266,5267,3,710,355,0,5267,5269,1,0,0,0,5268,5254,1,0,0,0,5268,5264,1,0,0,0,5269,455,1,0,0,0,5270,5279,5,167,0,0,5271,5279,5,680,0,0,5272,5273,5,358,0,0,5273,5279,5,1148,0,0,5274,5275,5,465,0,0,5275,5279,5,1148,0,0,5276,5277,5,640,0,0,5277,5279,5,1148,0,0,5278,5270,1,0,0,0,5278,5271,1,0,0,0,5278,5272,1,0,0,0,5278,5274,1,0,0,0,5278,5276,1,0,0,0,5279,457,1,0,0,0,5280,5281,5,499,0,0,5281,5289,3,618,309,0,5282,5283,5,502,0,0,5283,5289,3,618,309,0,5284,5285,5,498,0,0,5285,5289,3,618,309,0,5286,5287,5,503,0,0,5287,5289,3,618,309,0,5288,5280,1,0,0,0,5288,5282,1,0,0,0,5288,5284,1,0,0,0,5288,5286,1,0,0,0,5289,459,1,0,0,0,5290,5291,5,551,0,0,5291,5298,5,420,0,0,5292,5299,5,42,0,0,5293,5299,5,519,0,0,5294,5295,5,86,0,0,5295,5296,3,618,309,0,5296,5297,5,691,0,0,5297,5299,1,0,0,0,5298,5292,1,0,0,0,5298,5293,1,0,0,0,5298,5294,1,0,0,0,5298,5299,1,0,0,0,5299,5329,1,0,0,0,5300,5301,5,551,0,0,5301,5304,5,445,0,0,5302,5305,5,42,0,0,5303,5305,3,618,309,0,5304,5302,1,0,0,0,5304,5303,1,0,0,0,5305,5329,1,0,0,0,5306,5307,5,551,0,0,5307,5308,5,595,0,0,5308,5313,5,86,0,0,5309,5314,5,42,0,0,5310,5311,3,618,309,0,5311,5312,5,691,0,0,5312,5314,1,0,0,0,5313,5309,1,0,0,0,5313,5310,1,0,0,0,5314,5329,1,0,0,0,5315,5316,5,551,0,0,5316,5317,5,142,0,0,5317,5319,5,35,0,0,5318,5320,7,68,0,0,5319,5318,1,0,0,0,5319,5320,1,0,0,0,5320,5329,1,0,0,0,5321,5322,5,424,0,0,5322,5329,3,618,309,0,5323,5326,5,552,0,0,5324,5327,3,618,309,0,5325,5327,5,657,0,0,5326,5324,1,0,0,0,5326,5325,1,0,0,0,5327,5329,1,0,0,0,5328,5290,1,0,0,0,5328,5300,1,0,0,0,5328,5306,1,0,0,0,5328,5315,1,0,0,0,5328,5321,1,0,0,0,5328,5323,1,0,0,0,5329,461,1,0,0,0,5330,5331,5,332,0,0,5331,5332,7,69,0,0,5332,463,1,0,0,0,5333,5338,3,466,233,0,5334,5335,5,1133,0,0,5335,5336,3,644,322,0,5336,5337,5,1134,0,0,5337,5339,1,0,0,0,5338,5334,1,0,0,0,5338,5339,1,0,0,0,5339,465,1,0,0,0,5340,5342,5,6,0,0,5341,5343,5,725,0,0,5342,5341,1,0,0,0,5342,5343,1,0,0,0,5343,5434,1,0,0,0,5344,5346,5,7,0,0,5345,5347,5,733,0,0,5346,5345,1,0,0,0,5346,5347,1,0,0,0,5347,5434,1,0,0,0,5348,5356,5,33,0,0,5349,5350,5,649,0,0,5350,5357,5,742,0,0,5351,5357,5,733,0,0,5352,5357,5,671,0,0,5353,5357,5,665,0,0,5354,5357,5,647,0,0,5355,5357,5,596,0,0,5356,5349,1,0,0,0,5356,5351,1,0,0,0,5356,5352,1,0,0,0,5356,5353,1,0,0,0,5356,5354,1,0,0,0,5356,5355,1,0,0,0,5356,5357,1,0,0,0,5357,5434,1,0,0,0,5358,5434,5,44,0,0,5359,5361,5,51,0,0,5360,5362,5,596,0,0,5361,5360,1,0,0,0,5361,5362,1,0,0,0,5362,5434,1,0,0,0,5363,5434,5,415,0,0,5364,5434,5,708,0,0,5365,5434,5,709,0,0,5366,5367,5,72,0,0,5367,5434,5,120,0,0,5368,5434,5,81,0,0,5369,5434,5,85,0,0,5370,5371,5,103,0,0,5371,5434,5,742,0,0,5372,5434,5,726,0,0,5373,5434,5,566,0,0,5374,5434,5,136,0,0,5375,5434,5,727,0,0,5376,5377,5,588,0,0,5377,5434,7,70,0,0,5378,5434,5,152,0,0,5379,5380,5,155,0,0,5380,5434,7,71,0,0,5381,5434,5,739,0,0,5382,5434,5,740,0,0,5383,5434,5,177,0,0,5384,5434,5,184,0,0,5385,5434,5,185,0,0,5386,5434,5,698,0,0,5387,5434,5,699,0,0,5388,5434,5,700,0,0,5389,5434,5,701,0,0,5390,5434,5,702,0,0,5391,5434,5,703,0,0,5392,5434,5,704,0,0,5393,5434,5,705,0,0,5394,5434,5,706,0,0,5395,5434,5,707,0,0,5396,5434,5,710,0,0,5397,5434,5,711,0,0,5398,5434,5,712,0,0,5399,5434,5,713,0,0,5400,5434,5,714,0,0,5401,5434,5,715,0,0,5402,5434,5,716,0,0,5403,5434,5,717,0,0,5404,5434,5,718,0,0,5405,5434,5,719,0,0,5406,5434,5,722,0,0,5407,5434,5,723,0,0,5408,5434,5,724,0,0,5409,5434,5,728,0,0,5410,5434,5,729,0,0,5411,5434,5,730,0,0,5412,5434,5,731,0,0,5413,5434,5,732,0,0,5414,5434,5,735,0,0,5415,5434,5,736,0,0,5416,5434,5,737,0,0,5417,5434,5,158,0,0,5418,5434,5,738,0,0,5419,5434,5,1077,0,0,5420,5434,5,741,0,0,5421,5434,5,743,0,0,5422,5434,5,1088,0,0,5423,5434,5,744,0,0,5424,5434,5,745,0,0,5425,5426,5,102,0,0,5426,5427,5,68,0,0,5427,5434,5,734,0,0,5428,5429,5,152,0,0,5429,5430,5,87,0,0,5430,5434,5,734,0,0,5431,5432,5,720,0,0,5432,5434,5,721,0,0,5433,5340,1,0,0,0,5433,5344,1,0,0,0,5433,5348,1,0,0,0,5433,5358,1,0,0,0,5433,5359,1,0,0,0,5433,5363,1,0,0,0,5433,5364,1,0,0,0,5433,5365,1,0,0,0,5433,5366,1,0,0,0,5433,5368,1,0,0,0,5433,5369,1,0,0,0,5433,5370,1,0,0,0,5433,5372,1,0,0,0,5433,5373,1,0,0,0,5433,5374,1,0,0,0,5433,5375,1,0,0,0,5433,5376,1,0,0,0,5433,5378,1,0,0,0,5433,5379,1,0,0,0,5433,5381,1,0,0,0,5433,5382,1,0,0,0,5433,5383,1,0,0,0,5433,5384,1,0,0,0,5433,5385,1,0,0,0,5433,5386,1,0,0,0,5433,5387,1,0,0,0,5433,5388,1,0,0,0,5433,5389,1,0,0,0,5433,5390,1,0,0,0,5433,5391,1,0,0,0,5433,5392,1,0,0,0,5433,5393,1,0,0,0,5433,5394,1,0,0,0,5433,5395,1,0,0,0,5433,5396,1,0,0,0,5433,5397,1,0,0,0,5433,5398,1,0,0,0,5433,5399,1,0,0,0,5433,5400,1,0,0,0,5433,5401,1,0,0,0,5433,5402,1,0,0,0,5433,5403,1,0,0,0,5433,5404,1,0,0,0,5433,5405,1,0,0,0,5433,5406,1,0,0,0,5433,5407,1,0,0,0,5433,5408,1,0,0,0,5433,5409,1,0,0,0,5433,5410,1,0,0,0,5433,5411,1,0,0,0,5433,5412,1,0,0,0,5433,5413,1,0,0,0,5433,5414,1,0,0,0,5433,5415,1,0,0,0,5433,5416,1,0,0,0,5433,5417,1,0,0,0,5433,5418,1,0,0,0,5433,5419,1,0,0,0,5433,5420,1,0,0,0,5433,5421,1,0,0,0,5433,5422,1,0,0,0,5433,5423,1,0,0,0,5433,5424,1,0,0,0,5433,5425,1,0,0,0,5433,5428,1,0,0,0,5433,5431,1,0,0,0,5434,467,1,0,0,0,5435,5452,5,1117,0,0,5436,5437,5,1117,0,0,5437,5438,5,1132,0,0,5438,5452,5,1117,0,0,5439,5440,3,612,306,0,5440,5441,5,1132,0,0,5441,5442,5,1117,0,0,5442,5452,1,0,0,0,5443,5444,3,612,306,0,5444,5445,5,1132,0,0,5445,5446,3,612,306,0,5446,5452,1,0,0,0,5447,5448,3,612,306,0,5448,5449,3,616,308,0,5449,5452,1,0,0,0,5450,5452,3,612,306,0,5451,5435,1,0,0,0,5451,5436,1,0,0,0,5451,5439,1,0,0,0,5451,5443,1,0,0,0,5451,5447,1,0,0,0,5451,5450,1,0,0,0,5452,469,1,0,0,0,5453,5454,3,592,296,0,5454,5455,5,175,0,0,5455,5456,3,590,295,0,5456,471,1,0,0,0,5457,5459,5,9,0,0,5458,5460,7,72,0,0,5459,5458,1,0,0,0,5459,5460,1,0,0,0,5460,5461,1,0,0,0,5461,5462,7,54,0,0,5462,5480,3,648,324,0,5463,5464,5,184,0,0,5464,5465,5,76,0,0,5465,5466,5,118,0,0,5466,5471,3,570,285,0,5467,5468,5,1135,0,0,5468,5470,3,570,285,0,5469,5467,1,0,0,0,5470,5473,1,0,0,0,5471,5469,1,0,0,0,5471,5472,1,0,0,0,5472,5478,1,0,0,0,5473,5471,1,0,0,0,5474,5475,5,192,0,0,5475,5476,3,618,309,0,5476,5477,5,18,0,0,5477,5479,1,0,0,0,5478,5474,1,0,0,0,5478,5479,1,0,0,0,5479,5481,1,0,0,0,5480,5463,1,0,0,0,5480,5481,1,0,0,0,5481,5493,1,0,0,0,5482,5483,5,51,0,0,5483,5484,5,76,0,0,5484,5485,5,118,0,0,5485,5490,3,570,285,0,5486,5487,5,1135,0,0,5487,5489,3,570,285,0,5488,5486,1,0,0,0,5489,5492,1,0,0,0,5490,5488,1,0,0,0,5490,5491,1,0,0,0,5491,5494,1,0,0,0,5492,5490,1,0,0,0,5493,5482,1,0,0,0,5493,5494,1,0,0,0,5494,473,1,0,0,0,5495,5496,5,26,0,0,5496,5497,5,172,0,0,5497,5501,3,648,324,0,5498,5500,3,482,241,0,5499,5498,1,0,0,0,5500,5503,1,0,0,0,5501,5499,1,0,0,0,5501,5502,1,0,0,0,5502,475,1,0,0,0,5503,5501,1,0,0,0,5504,5505,5,356,0,0,5505,5506,5,172,0,0,5506,5508,3,648,324,0,5507,5509,7,73,0,0,5508,5507,1,0,0,0,5508,5509,1,0,0,0,5509,477,1,0,0,0,5510,5512,5,119,0,0,5511,5513,7,72,0,0,5512,5511,1,0,0,0,5512,5513,1,0,0,0,5513,5514,1,0,0,0,5514,5515,7,54,0,0,5515,5516,3,648,324,0,5516,479,1,0,0,0,5517,5519,5,580,0,0,5518,5520,7,72,0,0,5519,5518,1,0,0,0,5519,5520,1,0,0,0,5520,5521,1,0,0,0,5521,5522,5,172,0,0,5522,5524,3,648,324,0,5523,5525,5,568,0,0,5524,5523,1,0,0,0,5524,5525,1,0,0,0,5525,5527,1,0,0,0,5526,5528,5,422,0,0,5527,5526,1,0,0,0,5527,5528,1,0,0,0,5528,5530,1,0,0,0,5529,5531,5,666,0,0,5530,5529,1,0,0,0,5530,5531,1,0,0,0,5531,481,1,0,0,0,5532,5533,5,65,0,0,5533,5540,5,664,0,0,5534,5540,5,568,0,0,5535,5540,5,425,0,0,5536,5540,5,504,0,0,5537,5540,5,422,0,0,5538,5540,5,354,0,0,5539,5532,1,0,0,0,5539,5534,1,0,0,0,5539,5535,1,0,0,0,5539,5536,1,0,0,0,5539,5537,1,0,0,0,5539,5538,1,0,0,0,5540,483,1,0,0,0,5541,5543,5,33,0,0,5542,5544,5,335,0,0,5543,5542,1,0,0,0,5543,5544,1,0,0,0,5544,5545,1,0,0,0,5545,5547,5,437,0,0,5546,5548,3,670,335,0,5547,5546,1,0,0,0,5547,5548,1,0,0,0,5548,5549,1,0,0,0,5549,5550,3,612,306,0,5550,5551,5,594,0,0,5551,5552,7,74,0,0,5552,5553,5,619,0,0,5553,5554,5,1148,0,0,5554,485,1,0,0,0,5555,5556,5,456,0,0,5556,5557,5,554,0,0,5557,5558,3,612,306,0,5558,5559,5,619,0,0,5559,5560,5,1148,0,0,5560,487,1,0,0,0,5561,5562,5,661,0,0,5562,5563,5,554,0,0,5563,5564,3,612,306,0,5564,489,1,0,0,0,5565,5566,5,153,0,0,5566,5567,3,494,247,0,5567,5570,7,75,0,0,5568,5571,3,716,358,0,5569,5571,5,118,0,0,5570,5568,1,0,0,0,5570,5569,1,0,0,0,5571,5581,1,0,0,0,5572,5573,5,1135,0,0,5573,5574,3,494,247,0,5574,5577,7,75,0,0,5575,5578,3,716,358,0,5576,5578,5,118,0,0,5577,5575,1,0,0,0,5577,5576,1,0,0,0,5578,5580,1,0,0,0,5579,5572,1,0,0,0,5580,5583,1,0,0,0,5581,5579,1,0,0,0,5581,5582,1,0,0,0,5582,5618,1,0,0,0,5583,5581,1,0,0,0,5584,5585,5,153,0,0,5585,5588,3,58,29,0,5586,5589,3,596,298,0,5587,5589,5,42,0,0,5588,5586,1,0,0,0,5588,5587,1,0,0,0,5589,5618,1,0,0,0,5590,5591,5,153,0,0,5591,5598,5,517,0,0,5592,5595,3,596,298,0,5593,5594,5,27,0,0,5594,5596,3,598,299,0,5595,5593,1,0,0,0,5595,5596,1,0,0,0,5596,5599,1,0,0,0,5597,5599,5,42,0,0,5598,5592,1,0,0,0,5598,5597,1,0,0,0,5599,5618,1,0,0,0,5600,5618,3,444,222,0,5601,5618,3,318,159,0,5602,5618,3,316,158,0,5603,5604,5,153,0,0,5604,5605,3,552,276,0,5605,5606,7,75,0,0,5606,5614,3,716,358,0,5607,5608,5,1135,0,0,5608,5609,3,552,276,0,5609,5610,7,75,0,0,5610,5611,3,716,358,0,5611,5613,1,0,0,0,5612,5607,1,0,0,0,5613,5616,1,0,0,0,5614,5612,1,0,0,0,5614,5615,1,0,0,0,5615,5618,1,0,0,0,5616,5614,1,0,0,0,5617,5565,1,0,0,0,5617,5584,1,0,0,0,5617,5590,1,0,0,0,5617,5600,1,0,0,0,5617,5601,1,0,0,0,5617,5602,1,0,0,0,5617,5603,1,0,0,0,5618,491,1,0,0,0,5619,5620,5,155,0,0,5620,5621,7,56,0,0,5621,5781,5,476,0,0,5622,5623,5,155,0,0,5623,5624,7,76,0,0,5624,5627,5,416,0,0,5625,5626,5,80,0,0,5626,5628,5,1148,0,0,5627,5625,1,0,0,0,5627,5628,1,0,0,0,5628,5631,1,0,0,0,5629,5630,5,68,0,0,5630,5632,3,618,309,0,5631,5629,1,0,0,0,5631,5632,1,0,0,0,5632,5640,1,0,0,0,5633,5637,5,99,0,0,5634,5635,3,618,309,0,5635,5636,5,1135,0,0,5636,5638,1,0,0,0,5637,5634,1,0,0,0,5637,5638,1,0,0,0,5638,5639,1,0,0,0,5639,5641,3,618,309,0,5640,5633,1,0,0,0,5640,5641,1,0,0,0,5641,5781,1,0,0,0,5642,5643,5,155,0,0,5643,5645,3,496,248,0,5644,5646,3,498,249,0,5645,5644,1,0,0,0,5645,5646,1,0,0,0,5646,5781,1,0,0,0,5647,5649,5,155,0,0,5648,5650,5,436,0,0,5649,5648,1,0,0,0,5649,5650,1,0,0,0,5650,5651,1,0,0,0,5651,5652,7,41,0,0,5652,5653,7,77,0,0,5653,5656,3,554,277,0,5654,5655,7,77,0,0,5655,5657,3,612,306,0,5656,5654,1,0,0,0,5656,5657,1,0,0,0,5657,5659,1,0,0,0,5658,5660,3,498,249,0,5659,5658,1,0,0,0,5659,5660,1,0,0,0,5660,5781,1,0,0,0,5661,5662,5,155,0,0,5662,5663,5,33,0,0,5663,5665,7,0,0,0,5664,5666,3,670,335,0,5665,5664,1,0,0,0,5665,5666,1,0,0,0,5666,5667,1,0,0,0,5667,5781,3,572,286,0,5668,5669,5,155,0,0,5669,5670,5,33,0,0,5670,5671,7,78,0,0,5671,5781,3,552,276,0,5672,5673,5,155,0,0,5673,5674,5,33,0,0,5674,5675,7,79,0,0,5675,5781,3,554,277,0,5676,5677,5,155,0,0,5677,5678,5,33,0,0,5678,5679,5,177,0,0,5679,5781,3,578,289,0,5680,5681,5,155,0,0,5681,5682,5,33,0,0,5682,5683,5,665,0,0,5683,5781,3,592,296,0,5684,5685,5,155,0,0,5685,5686,5,409,0,0,5686,5687,3,600,300,0,5687,5688,7,80,0,0,5688,5781,1,0,0,0,5689,5690,5,155,0,0,5690,5781,3,500,250,0,5691,5692,5,155,0,0,5692,5700,7,81,0,0,5693,5697,5,99,0,0,5694,5695,3,618,309,0,5695,5696,5,1135,0,0,5696,5698,1,0,0,0,5697,5694,1,0,0,0,5697,5698,1,0,0,0,5698,5699,1,0,0,0,5699,5701,3,618,309,0,5700,5693,1,0,0,0,5700,5701,1,0,0,0,5701,5781,1,0,0,0,5702,5703,5,155,0,0,5703,5704,5,290,0,0,5704,5705,5,1133,0,0,5705,5706,5,1117,0,0,5706,5707,5,1134,0,0,5707,5781,7,81,0,0,5708,5709,5,155,0,0,5709,5712,3,502,251,0,5710,5711,7,77,0,0,5711,5713,3,612,306,0,5712,5710,1,0,0,0,5712,5713,1,0,0,0,5713,5715,1,0,0,0,5714,5716,3,498,249,0,5715,5714,1,0,0,0,5715,5716,1,0,0,0,5716,5781,1,0,0,0,5717,5718,5,155,0,0,5718,5719,7,82,0,0,5719,5720,5,364,0,0,5720,5781,3,552,276,0,5721,5722,5,155,0,0,5722,5725,5,440,0,0,5723,5724,5,65,0,0,5724,5726,3,592,296,0,5725,5723,1,0,0,0,5725,5726,1,0,0,0,5726,5781,1,0,0,0,5727,5728,5,155,0,0,5728,5729,7,83,0,0,5729,5730,7,77,0,0,5730,5733,3,554,277,0,5731,5732,7,77,0,0,5732,5734,3,612,306,0,5733,5731,1,0,0,0,5733,5734,1,0,0,0,5734,5737,1,0,0,0,5735,5736,5,190,0,0,5736,5738,3,716,358,0,5737,5735,1,0,0,0,5737,5738,1,0,0,0,5738,5781,1,0,0,0,5739,5740,5,155,0,0,5740,5741,5,539,0,0,5741,5744,5,742,0,0,5742,5743,7,77,0,0,5743,5745,3,612,306,0,5744,5742,1,0,0,0,5744,5745,1,0,0,0,5745,5747,1,0,0,0,5746,5748,3,498,249,0,5747,5746,1,0,0,0,5747,5748,1,0,0,0,5748,5781,1,0,0,0,5749,5750,5,155,0,0,5750,5751,5,564,0,0,5751,5756,3,504,252,0,5752,5753,5,1135,0,0,5753,5755,3,504,252,0,5754,5752,1,0,0,0,5755,5758,1,0,0,0,5756,5754,1,0,0,0,5756,5757,1,0,0,0,5757,5762,1,0,0,0,5758,5756,1,0,0,0,5759,5760,5,65,0,0,5760,5761,5,567,0,0,5761,5763,3,618,309,0,5762,5759,1,0,0,0,5762,5763,1,0,0,0,5763,5764,1,0,0,0,5764,5768,5,99,0,0,5765,5766,3,618,309,0,5766,5767,5,1135,0,0,5767,5769,1,0,0,0,5768,5765,1,0,0,0,5768,5769,1,0,0,0,5769,5770,1,0,0,0,5770,5771,3,618,309,0,5771,5781,1,0,0,0,5772,5773,5,155,0,0,5773,5774,5,614,0,0,5774,5778,5,634,0,0,5775,5776,5,65,0,0,5776,5777,5,355,0,0,5777,5779,5,1148,0,0,5778,5775,1,0,0,0,5778,5779,1,0,0,0,5779,5781,1,0,0,0,5780,5619,1,0,0,0,5780,5622,1,0,0,0,5780,5642,1,0,0,0,5780,5647,1,0,0,0,5780,5661,1,0,0,0,5780,5668,1,0,0,0,5780,5672,1,0,0,0,5780,5676,1,0,0,0,5780,5680,1,0,0,0,5780,5684,1,0,0,0,5780,5689,1,0,0,0,5780,5691,1,0,0,0,5780,5702,1,0,0,0,5780,5708,1,0,0,0,5780,5717,1,0,0,0,5780,5721,1,0,0,0,5780,5727,1,0,0,0,5780,5739,1,0,0,0,5780,5749,1,0,0,0,5780,5772,1,0,0,0,5781,493,1,0,0,0,5782,5793,5,1159,0,0,5783,5793,5,1160,0,0,5784,5785,5,1137,0,0,5785,5787,5,1137,0,0,5786,5784,1,0,0,0,5786,5787,1,0,0,0,5787,5788,1,0,0,0,5788,5790,7,84,0,0,5789,5786,1,0,0,0,5789,5790,1,0,0,0,5790,5791,1,0,0,0,5791,5793,3,612,306,0,5792,5782,1,0,0,0,5792,5783,1,0,0,0,5792,5789,1,0,0,0,5793,495,1,0,0,0,5794,5795,5,25,0,0,5795,5808,5,153,0,0,5796,5808,5,844,0,0,5797,5808,5,40,0,0,5798,5808,5,151,0,0,5799,5800,5,437,0,0,5800,5808,5,634,0,0,5801,5802,5,131,0,0,5802,5808,5,634,0,0,5803,5805,7,55,0,0,5804,5803,1,0,0,0,5804,5805,1,0,0,0,5805,5806,1,0,0,0,5806,5808,7,85,0,0,5807,5794,1,0,0,0,5807,5796,1,0,0,0,5807,5797,1,0,0,0,5807,5798,1,0,0,0,5807,5799,1,0,0,0,5807,5801,1,0,0,0,5807,5804,1,0,0,0,5808,497,1,0,0,0,5809,5810,5,98,0,0,5810,5814,5,1148,0,0,5811,5812,5,190,0,0,5812,5814,3,716,358,0,5813,5809,1,0,0,0,5813,5811,1,0,0,0,5814,499,1,0,0,0,5815,5817,5,636,0,0,5816,5815,1,0,0,0,5816,5817,1,0,0,0,5817,5818,1,0,0,0,5818,5833,5,410,0,0,5819,5820,5,477,0,0,5820,5833,5,634,0,0,5821,5833,5,556,0,0,5822,5833,5,725,0,0,5823,5825,5,436,0,0,5824,5823,1,0,0,0,5824,5825,1,0,0,0,5825,5826,1,0,0,0,5826,5833,5,563,0,0,5827,5833,5,565,0,0,5828,5829,5,614,0,0,5829,5833,5,447,0,0,5830,5833,5,339,0,0,5831,5833,5,383,0,0,5832,5816,1,0,0,0,5832,5819,1,0,0,0,5832,5821,1,0,0,0,5832,5822,1,0,0,0,5832,5824,1,0,0,0,5832,5827,1,0,0,0,5832,5828,1,0,0,0,5832,5830,1,0,0,0,5832,5831,1,0,0,0,5833,501,1,0,0,0,5834,5843,5,416,0,0,5835,5836,5,172,0,0,5836,5843,5,634,0,0,5837,5839,5,436,0,0,5838,5837,1,0,0,0,5838,5839,1,0,0,0,5839,5840,1,0,0,0,5840,5843,5,742,0,0,5841,5843,5,655,0,0,5842,5834,1,0,0,0,5842,5835,1,0,0,0,5842,5838,1,0,0,0,5842,5841,1,0,0,0,5843,503,1,0,0,0,5844,5857,5,6,0,0,5845,5846,5,347,0,0,5846,5857,5,461,0,0,5847,5848,5,382,0,0,5848,5857,5,645,0,0,5849,5857,5,385,0,0,5850,5857,5,463,0,0,5851,5857,5,792,0,0,5852,5853,5,544,0,0,5853,5857,5,426,0,0,5854,5857,5,621,0,0,5855,5857,5,644,0,0,5856,5844,1,0,0,0,5856,5845,1,0,0,0,5856,5847,1,0,0,0,5856,5849,1,0,0,0,5856,5850,1,0,0,0,5856,5851,1,0,0,0,5856,5852,1,0,0,0,5856,5854,1,0,0,0,5856,5855,1,0,0,0,5857,505,1,0,0,0,5858,5859,5,345,0,0,5859,5860,5,1148,0,0,5860,507,1,0,0,0,5861,5862,5,351,0,0,5862,5863,5,81,0,0,5863,5868,3,520,260,0,5864,5865,5,1135,0,0,5865,5867,3,520,260,0,5866,5864,1,0,0,0,5867,5870,1,0,0,0,5868,5866,1,0,0,0,5868,5869,1,0,0,0,5869,5878,1,0,0,0,5870,5868,1,0,0,0,5871,5872,5,129,0,0,5872,5875,5,1133,0,0,5873,5876,3,644,322,0,5874,5876,5,6,0,0,5875,5873,1,0,0,0,5875,5874,1,0,0,0,5876,5877,1,0,0,0,5877,5879,5,1134,0,0,5878,5871,1,0,0,0,5878,5879,1,0,0,0,5879,5880,1,0,0,0,5880,5881,5,80,0,0,5881,5882,3,612,306,0,5882,509,1,0,0,0,5883,5885,5,432,0,0,5884,5886,7,72,0,0,5885,5884,1,0,0,0,5885,5886,1,0,0,0,5886,5887,1,0,0,0,5887,5892,3,522,261,0,5888,5889,5,1135,0,0,5889,5891,3,522,261,0,5890,5888,1,0,0,0,5891,5894,1,0,0,0,5892,5890,1,0,0,0,5892,5893,1,0,0,0,5893,511,1,0,0,0,5894,5892,1,0,0,0,5895,5897,5,93,0,0,5896,5898,7,86,0,0,5897,5896,1,0,0,0,5897,5898,1,0,0,0,5898,5899,1,0,0,0,5899,5900,3,716,358,0,5900,513,1,0,0,0,5901,5902,5,102,0,0,5902,5903,5,81,0,0,5903,5904,5,87,0,0,5904,5905,5,351,0,0,5905,5910,3,526,263,0,5906,5907,5,1135,0,0,5907,5909,3,526,263,0,5908,5906,1,0,0,0,5909,5912,1,0,0,0,5910,5908,1,0,0,0,5910,5911,1,0,0,0,5911,515,1,0,0,0,5912,5910,1,0,0,0,5913,5914,5,589,0,0,5914,5915,5,567,0,0,5915,5916,5,351,0,0,5916,517,1,0,0,0,5917,5918,5,739,0,0,5918,519,1,0,0,0,5919,5927,3,554,277,0,5920,5922,7,20,0,0,5921,5920,1,0,0,0,5921,5922,1,0,0,0,5922,5923,1,0,0,0,5923,5924,5,1133,0,0,5924,5925,3,580,290,0,5925,5926,5,1134,0,0,5926,5928,1,0,0,0,5927,5921,1,0,0,0,5927,5928,1,0,0,0,5928,521,1,0,0,0,5929,5948,5,394,0,0,5930,5948,5,447,0,0,5931,5933,7,87,0,0,5932,5931,1,0,0,0,5932,5933,1,0,0,0,5933,5934,1,0,0,0,5934,5948,5,476,0,0,5935,5948,5,540,0,0,5936,5948,5,725,0,0,5937,5938,5,567,0,0,5938,5948,5,351,0,0,5939,5948,5,634,0,0,5940,5948,5,667,0,0,5941,5945,5,742,0,0,5942,5943,5,192,0,0,5943,5944,5,134,0,0,5944,5946,5,103,0,0,5945,5942,1,0,0,0,5945,5946,1,0,0,0,5946,5948,1,0,0,0,5947,5929,1,0,0,0,5947,5930,1,0,0,0,5947,5932,1,0,0,0,5947,5935,1,0,0,0,5947,5936,1,0,0,0,5947,5937,1,0,0,0,5947,5939,1,0,0,0,5947,5940,1,0,0,0,5947,5941,1,0,0,0,5948,5962,1,0,0,0,5949,5950,5,574,0,0,5950,5952,5,476,0,0,5951,5953,3,356,178,0,5952,5951,1,0,0,0,5952,5953,1,0,0,0,5953,5962,1,0,0,0,5954,5956,7,54,0,0,5955,5957,3,648,324,0,5956,5955,1,0,0,0,5956,5957,1,0,0,0,5957,5959,1,0,0,0,5958,5960,3,524,262,0,5959,5958,1,0,0,0,5959,5960,1,0,0,0,5960,5962,1,0,0,0,5961,5947,1,0,0,0,5961,5949,1,0,0,0,5961,5954,1,0,0,0,5962,523,1,0,0,0,5963,5964,5,192,0,0,5964,5965,5,134,0,0,5965,5969,5,103,0,0,5966,5967,5,65,0,0,5967,5969,5,421,0,0,5968,5963,1,0,0,0,5968,5966,1,0,0,0,5969,525,1,0,0,0,5970,5978,3,554,277,0,5971,5972,5,129,0,0,5972,5975,5,1133,0,0,5973,5976,3,644,322,0,5974,5976,5,6,0,0,5975,5973,1,0,0,0,5975,5974,1,0,0,0,5976,5977,1,0,0,0,5977,5979,5,1134,0,0,5978,5971,1,0,0,0,5978,5979,1,0,0,0,5979,5987,1,0,0,0,5980,5982,7,20,0,0,5981,5980,1,0,0,0,5981,5982,1,0,0,0,5982,5983,1,0,0,0,5983,5984,5,1133,0,0,5984,5985,3,580,290,0,5985,5986,5,1134,0,0,5986,5988,1,0,0,0,5987,5981,1,0,0,0,5987,5988,1,0,0,0,5988,5991,1,0,0,0,5989,5990,5,78,0,0,5990,5992,5,470,0,0,5991,5989,1,0,0,0,5991,5992,1,0,0,0,5992,527,1,0,0,0,5993,5994,7,88,0,0,5994,5997,3,554,277,0,5995,5998,3,612,306,0,5996,5998,5,1148,0,0,5997,5995,1,0,0,0,5997,5996,1,0,0,0,5997,5998,1,0,0,0,5998,529,1,0,0,0,5999,6003,7,88,0,0,6e3,6001,7,89,0,0,6001,6002,5,1124,0,0,6002,6004,7,90,0,0,6003,6e3,1,0,0,0,6003,6004,1,0,0,0,6004,6005,1,0,0,0,6005,6006,3,550,275,0,6006,531,1,0,0,0,6007,6008,5,444,0,0,6008,6009,5,1148,0,0,6009,533,1,0,0,0,6010,6011,5,186,0,0,6011,6012,3,612,306,0,6012,535,1,0,0,0,6013,6021,5,156,0,0,6014,6016,5,162,0,0,6015,6017,5,669,0,0,6016,6015,1,0,0,0,6016,6017,1,0,0,0,6017,6018,1,0,0,0,6018,6022,3,622,311,0,6019,6022,5,1156,0,0,6020,6022,5,1157,0,0,6021,6014,1,0,0,0,6021,6019,1,0,0,0,6021,6020,1,0,0,0,6022,6032,1,0,0,0,6023,6024,5,153,0,0,6024,6029,3,540,270,0,6025,6026,5,1135,0,0,6026,6028,3,540,270,0,6027,6025,1,0,0,0,6028,6031,1,0,0,0,6029,6027,1,0,0,0,6029,6030,1,0,0,0,6030,6033,1,0,0,0,6031,6029,1,0,0,0,6032,6023,1,0,0,0,6032,6033,1,0,0,0,6033,537,1,0,0,0,6034,6042,5,143,0,0,6035,6037,5,162,0,0,6036,6038,5,669,0,0,6037,6036,1,0,0,0,6037,6038,1,0,0,0,6038,6039,1,0,0,0,6039,6043,3,622,311,0,6040,6043,5,1156,0,0,6041,6043,5,1157,0,0,6042,6035,1,0,0,0,6042,6040,1,0,0,0,6042,6041,1,0,0,0,6042,6043,1,0,0,0,6043,6053,1,0,0,0,6044,6045,5,153,0,0,6045,6050,3,540,270,0,6046,6047,5,1135,0,0,6047,6049,3,540,270,0,6048,6046,1,0,0,0,6049,6052,1,0,0,0,6050,6048,1,0,0,0,6050,6051,1,0,0,0,6051,6054,1,0,0,0,6052,6050,1,0,0,0,6053,6044,1,0,0,0,6053,6054,1,0,0,0,6054,539,1,0,0,0,6055,6056,7,91,0,0,6056,6061,5,1124,0,0,6057,6062,3,622,311,0,6058,6062,5,1149,0,0,6059,6062,3,594,297,0,6060,6062,3,614,307,0,6061,6057,1,0,0,0,6061,6058,1,0,0,0,6061,6059,1,0,0,0,6061,6060,1,0,0,0,6062,541,1,0,0,0,6063,6065,5,192,0,0,6064,6066,5,571,0,0,6065,6064,1,0,0,0,6065,6066,1,0,0,0,6066,6067,1,0,0,0,6067,6072,3,48,24,0,6068,6069,5,1135,0,0,6069,6071,3,48,24,0,6070,6068,1,0,0,0,6071,6074,1,0,0,0,6072,6070,1,0,0,0,6072,6073,1,0,0,0,6073,543,1,0,0,0,6074,6072,1,0,0,0,6075,6076,5,172,0,0,6076,6078,3,554,277,0,6077,6079,3,228,114,0,6078,6077,1,0,0,0,6078,6079,1,0,0,0,6079,6081,1,0,0,0,6080,6082,3,294,147,0,6081,6080,1,0,0,0,6081,6082,1,0,0,0,6082,545,1,0,0,0,6083,6085,5,71,0,0,6084,6086,7,92,0,0,6085,6084,1,0,0,0,6085,6086,1,0,0,0,6086,6087,1,0,0,0,6087,6119,5,48,0,0,6088,6089,3,494,247,0,6089,6090,5,1124,0,0,6090,6098,7,93,0,0,6091,6092,5,1135,0,0,6092,6093,3,494,247,0,6093,6094,5,1124,0,0,6094,6095,7,93,0,0,6095,6097,1,0,0,0,6096,6091,1,0,0,0,6097,6100,1,0,0,0,6098,6096,1,0,0,0,6098,6099,1,0,0,0,6099,6120,1,0,0,0,6100,6098,1,0,0,0,6101,6104,5,29,0,0,6102,6105,3,618,309,0,6103,6105,3,494,247,0,6104,6102,1,0,0,0,6104,6103,1,0,0,0,6105,6106,1,0,0,0,6106,6107,3,494,247,0,6107,6108,5,1124,0,0,6108,6116,3,548,274,0,6109,6110,5,1135,0,0,6110,6111,3,494,247,0,6111,6112,5,1124,0,0,6112,6113,3,548,274,0,6113,6115,1,0,0,0,6114,6109,1,0,0,0,6115,6118,1,0,0,0,6116,6114,1,0,0,0,6116,6117,1,0,0,0,6117,6120,1,0,0,0,6118,6116,1,0,0,0,6119,6088,1,0,0,0,6119,6101,1,0,0,0,6120,547,1,0,0,0,6121,6122,7,94,0,0,6122,549,1,0,0,0,6123,6129,3,198,99,0,6124,6129,3,184,92,0,6125,6129,3,190,95,0,6126,6129,3,196,98,0,6127,6129,3,200,100,0,6128,6123,1,0,0,0,6128,6124,1,0,0,0,6128,6125,1,0,0,0,6128,6126,1,0,0,0,6128,6127,1,0,0,0,6129,6134,1,0,0,0,6130,6131,5,65,0,0,6131,6132,5,376,0,0,6132,6134,3,612,306,0,6133,6128,1,0,0,0,6133,6130,1,0,0,0,6134,551,1,0,0,0,6135,6139,3,612,306,0,6136,6140,5,1155,0,0,6137,6138,5,1132,0,0,6138,6140,3,612,306,0,6139,6136,1,0,0,0,6139,6137,1,0,0,0,6139,6140,1,0,0,0,6140,553,1,0,0,0,6141,6142,3,552,276,0,6142,555,1,0,0,0,6143,6148,3,554,277,0,6144,6145,5,1135,0,0,6145,6147,3,554,277,0,6146,6144,1,0,0,0,6147,6150,1,0,0,0,6148,6146,1,0,0,0,6148,6149,1,0,0,0,6149,557,1,0,0,0,6150,6148,1,0,0,0,6151,6154,3,592,296,0,6152,6154,3,568,284,0,6153,6151,1,0,0,0,6153,6152,1,0,0,0,6154,559,1,0,0,0,6155,6160,3,558,279,0,6156,6157,5,1135,0,0,6157,6159,3,558,279,0,6158,6156,1,0,0,0,6159,6162,1,0,0,0,6160,6158,1,0,0,0,6160,6161,1,0,0,0,6161,561,1,0,0,0,6162,6160,1,0,0,0,6163,6168,3,564,282,0,6164,6165,5,1135,0,0,6165,6167,3,564,282,0,6166,6164,1,0,0,0,6167,6170,1,0,0,0,6168,6166,1,0,0,0,6168,6169,1,0,0,0,6169,563,1,0,0,0,6170,6168,1,0,0,0,6171,6172,3,612,306,0,6172,565,1,0,0,0,6173,6178,3,568,284,0,6174,6175,5,1135,0,0,6175,6177,3,568,284,0,6176,6174,1,0,0,0,6177,6180,1,0,0,0,6178,6176,1,0,0,0,6178,6179,1,0,0,0,6179,567,1,0,0,0,6180,6178,1,0,0,0,6181,6182,3,564,282,0,6182,569,1,0,0,0,6183,6188,3,612,306,0,6184,6186,3,616,308,0,6185,6187,3,616,308,0,6186,6185,1,0,0,0,6186,6187,1,0,0,0,6187,6189,1,0,0,0,6188,6184,1,0,0,0,6188,6189,1,0,0,0,6189,6198,1,0,0,0,6190,6192,9,0,0,0,6191,6190,1,0,0,0,6191,6192,1,0,0,0,6192,6193,1,0,0,0,6193,6195,3,616,308,0,6194,6196,3,616,308,0,6195,6194,1,0,0,0,6195,6196,1,0,0,0,6196,6198,1,0,0,0,6197,6183,1,0,0,0,6197,6191,1,0,0,0,6198,571,1,0,0,0,6199,6200,3,612,306,0,6200,573,1,0,0,0,6201,6202,3,612,306,0,6202,575,1,0,0,0,6203,6204,3,612,306,0,6204,577,1,0,0,0,6205,6206,3,552,276,0,6206,579,1,0,0,0,6207,6212,3,574,287,0,6208,6209,5,1135,0,0,6209,6211,3,574,287,0,6210,6208,1,0,0,0,6211,6214,1,0,0,0,6212,6210,1,0,0,0,6212,6213,1,0,0,0,6213,581,1,0,0,0,6214,6212,1,0,0,0,6215,6218,3,612,306,0,6216,6218,5,1148,0,0,6217,6215,1,0,0,0,6217,6216,1,0,0,0,6218,6223,1,0,0,0,6219,6220,5,1133,0,0,6220,6221,3,618,309,0,6221,6222,5,1134,0,0,6222,6224,1,0,0,0,6223,6219,1,0,0,0,6223,6224,1,0,0,0,6224,6227,1,0,0,0,6225,6227,3,716,358,0,6226,6217,1,0,0,0,6226,6225,1,0,0,0,6227,6229,1,0,0,0,6228,6230,7,48,0,0,6229,6228,1,0,0,0,6229,6230,1,0,0,0,6230,583,1,0,0,0,6231,6236,5,1148,0,0,6232,6236,5,1156,0,0,6233,6236,5,697,0,0,6234,6236,3,746,373,0,6235,6231,1,0,0,0,6235,6232,1,0,0,0,6235,6233,1,0,0,0,6235,6234,1,0,0,0,6236,585,1,0,0,0,6237,6238,7,95,0,0,6238,587,1,0,0,0,6239,6244,3,592,296,0,6240,6241,5,1135,0,0,6241,6243,3,592,296,0,6242,6240,1,0,0,0,6243,6246,1,0,0,0,6244,6242,1,0,0,0,6244,6245,1,0,0,0,6245,589,1,0,0,0,6246,6244,1,0,0,0,6247,6253,3,584,292,0,6248,6249,3,584,292,0,6249,6250,3,586,293,0,6250,6253,1,0,0,0,6251,6253,3,60,30,0,6252,6247,1,0,0,0,6252,6248,1,0,0,0,6252,6251,1,0,0,0,6253,591,1,0,0,0,6254,6255,3,590,295,0,6255,593,1,0,0,0,6256,6257,7,96,0,0,6257,595,1,0,0,0,6258,6263,5,226,0,0,6259,6263,3,736,368,0,6260,6263,5,1148,0,0,6261,6263,5,1145,0,0,6262,6258,1,0,0,0,6262,6259,1,0,0,0,6262,6260,1,0,0,0,6262,6261,1,0,0,0,6263,597,1,0,0,0,6264,6267,3,612,306,0,6265,6267,5,1148,0,0,6266,6264,1,0,0,0,6266,6265,1,0,0,0,6267,599,1,0,0,0,6268,6272,3,602,301,0,6269,6272,5,1156,0,0,6270,6272,5,1148,0,0,6271,6268,1,0,0,0,6271,6269,1,0,0,0,6271,6270,1,0,0,0,6272,601,1,0,0,0,6273,6274,7,97,0,0,6274,603,1,0,0,0,6275,6276,3,618,309,0,6276,6277,5,1121,0,0,6277,6278,3,618,309,0,6278,6279,5,1121,0,0,6279,6280,3,618,309,0,6280,6281,5,1121,0,0,6281,6282,3,618,309,0,6282,6283,5,1121,0,0,6283,6289,3,618,309,0,6284,6285,5,1144,0,0,6285,6286,3,618,309,0,6286,6287,5,1121,0,0,6287,6288,3,618,309,0,6288,6290,1,0,0,0,6289,6284,1,0,0,0,6290,6291,1,0,0,0,6291,6289,1,0,0,0,6291,6292,1,0,0,0,6292,605,1,0,0,0,6293,6300,3,608,304,0,6294,6295,5,1135,0,0,6295,6298,3,608,304,0,6296,6297,5,1135,0,0,6297,6299,3,618,309,0,6298,6296,1,0,0,0,6298,6299,1,0,0,0,6299,6301,1,0,0,0,6300,6294,1,0,0,0,6300,6301,1,0,0,0,6301,607,1,0,0,0,6302,6310,5,1148,0,0,6303,6310,5,1153,0,0,6304,6306,5,1150,0,0,6305,6304,1,0,0,0,6306,6307,1,0,0,0,6307,6305,1,0,0,0,6307,6308,1,0,0,0,6308,6310,1,0,0,0,6309,6302,1,0,0,0,6309,6303,1,0,0,0,6309,6305,1,0,0,0,6310,609,1,0,0,0,6311,6314,3,612,306,0,6312,6314,5,1148,0,0,6313,6311,1,0,0,0,6313,6312,1,0,0,0,6314,611,1,0,0,0,6315,6319,3,614,307,0,6316,6319,5,1145,0,0,6317,6319,5,1148,0,0,6318,6315,1,0,0,0,6318,6316,1,0,0,0,6318,6317,1,0,0,0,6319,613,1,0,0,0,6320,6330,5,1156,0,0,6321,6330,3,736,368,0,6322,6330,3,738,369,0,6323,6330,3,602,301,0,6324,6330,3,740,370,0,6325,6330,3,742,371,0,6326,6330,3,744,372,0,6327,6330,3,746,373,0,6328,6330,3,708,354,0,6329,6320,1,0,0,0,6329,6321,1,0,0,0,6329,6322,1,0,0,0,6329,6323,1,0,0,0,6329,6324,1,0,0,0,6329,6325,1,0,0,0,6329,6326,1,0,0,0,6329,6327,1,0,0,0,6329,6328,1,0,0,0,6330,615,1,0,0,0,6331,6335,5,1155,0,0,6332,6333,5,1132,0,0,6333,6335,3,612,306,0,6334,6331,1,0,0,0,6334,6332,1,0,0,0,6335,617,1,0,0,0,6336,6337,7,98,0,0,6337,619,1,0,0,0,6338,6341,5,1146,0,0,6339,6341,3,618,309,0,6340,6338,1,0,0,0,6340,6339,1,0,0,0,6341,621,1,0,0,0,6342,6344,5,1154,0,0,6343,6342,1,0,0,0,6343,6344,1,0,0,0,6344,6345,1,0,0,0,6345,6348,5,1148,0,0,6346,6348,5,1147,0,0,6347,6343,1,0,0,0,6347,6346,1,0,0,0,6348,6350,1,0,0,0,6349,6351,5,1148,0,0,6350,6349,1,0,0,0,6351,6352,1,0,0,0,6352,6350,1,0,0,0,6352,6353,1,0,0,0,6353,6366,1,0,0,0,6354,6356,5,1154,0,0,6355,6354,1,0,0,0,6355,6356,1,0,0,0,6356,6357,1,0,0,0,6357,6360,5,1148,0,0,6358,6360,5,1147,0,0,6359,6355,1,0,0,0,6359,6358,1,0,0,0,6360,6363,1,0,0,0,6361,6362,5,27,0,0,6362,6364,3,598,299,0,6363,6361,1,0,0,0,6363,6364,1,0,0,0,6364,6366,1,0,0,0,6365,6347,1,0,0,0,6365,6359,1,0,0,0,6366,623,1,0,0,0,6367,6368,7,99,0,0,6368,625,1,0,0,0,6369,6371,5,1154,0,0,6370,6369,1,0,0,0,6370,6371,1,0,0,0,6371,6372,1,0,0,0,6372,6373,5,1150,0,0,6373,627,1,0,0,0,6374,6376,5,114,0,0,6375,6374,1,0,0,0,6375,6376,1,0,0,0,6376,6377,1,0,0,0,6377,6378,7,100,0,0,6378,629,1,0,0,0,6379,6392,3,622,311,0,6380,6392,3,618,309,0,6381,6382,5,1121,0,0,6382,6392,3,618,309,0,6383,6392,3,626,313,0,6384,6392,3,624,312,0,6385,6392,5,1151,0,0,6386,6392,5,1153,0,0,6387,6389,5,114,0,0,6388,6387,1,0,0,0,6388,6389,1,0,0,0,6389,6390,1,0,0,0,6390,6392,7,100,0,0,6391,6379,1,0,0,0,6391,6380,1,0,0,0,6391,6381,1,0,0,0,6391,6383,1,0,0,0,6391,6384,1,0,0,0,6391,6385,1,0,0,0,6391,6386,1,0,0,0,6391,6388,1,0,0,0,6392,631,1,0,0,0,6393,6395,7,101,0,0,6394,6396,5,238,0,0,6395,6394,1,0,0,0,6395,6396,1,0,0,0,6396,6398,1,0,0,0,6397,6399,3,638,319,0,6398,6397,1,0,0,0,6398,6399,1,0,0,0,6399,6401,1,0,0,0,6400,6402,5,226,0,0,6401,6400,1,0,0,0,6401,6402,1,0,0,0,6402,6406,1,0,0,0,6403,6404,3,58,29,0,6404,6405,3,596,298,0,6405,6407,1,0,0,0,6406,6403,1,0,0,0,6406,6407,1,0,0,0,6407,6411,1,0,0,0,6408,6409,5,27,0,0,6409,6412,3,598,299,0,6410,6412,5,226,0,0,6411,6408,1,0,0,0,6411,6410,1,0,0,0,6411,6412,1,0,0,0,6412,6520,1,0,0,0,6413,6414,5,225,0,0,6414,6415,7,102,0,0,6415,6417,5,238,0,0,6416,6418,3,638,319,0,6417,6416,1,0,0,0,6417,6418,1,0,0,0,6418,6420,1,0,0,0,6419,6421,5,226,0,0,6420,6419,1,0,0,0,6420,6421,1,0,0,0,6421,6520,1,0,0,0,6422,6423,5,225,0,0,6423,6425,7,103,0,0,6424,6426,3,638,319,0,6425,6424,1,0,0,0,6425,6426,1,0,0,0,6426,6428,1,0,0,0,6427,6429,5,226,0,0,6428,6427,1,0,0,0,6428,6429,1,0,0,0,6429,6520,1,0,0,0,6430,6431,5,518,0,0,6431,6433,5,223,0,0,6432,6434,3,638,319,0,6433,6432,1,0,0,0,6433,6434,1,0,0,0,6434,6436,1,0,0,0,6435,6437,5,226,0,0,6436,6435,1,0,0,0,6436,6437,1,0,0,0,6437,6520,1,0,0,0,6438,6440,7,104,0,0,6439,6441,3,638,319,0,6440,6439,1,0,0,0,6440,6441,1,0,0,0,6441,6445,1,0,0,0,6442,6444,7,105,0,0,6443,6442,1,0,0,0,6444,6447,1,0,0,0,6445,6443,1,0,0,0,6445,6446,1,0,0,0,6446,6520,1,0,0,0,6447,6445,1,0,0,0,6448,6450,5,208,0,0,6449,6451,3,640,320,0,6450,6449,1,0,0,0,6450,6451,1,0,0,0,6451,6455,1,0,0,0,6452,6454,7,105,0,0,6453,6452,1,0,0,0,6454,6457,1,0,0,0,6455,6453,1,0,0,0,6455,6456,1,0,0,0,6456,6520,1,0,0,0,6457,6455,1,0,0,0,6458,6460,5,209,0,0,6459,6461,5,210,0,0,6460,6459,1,0,0,0,6460,6461,1,0,0,0,6461,6463,1,0,0,0,6462,6464,3,640,320,0,6463,6462,1,0,0,0,6463,6464,1,0,0,0,6464,6468,1,0,0,0,6465,6467,7,105,0,0,6466,6465,1,0,0,0,6467,6470,1,0,0,0,6468,6466,1,0,0,0,6468,6469,1,0,0,0,6469,6520,1,0,0,0,6470,6468,1,0,0,0,6471,6473,7,106,0,0,6472,6474,3,642,321,0,6473,6472,1,0,0,0,6473,6474,1,0,0,0,6474,6478,1,0,0,0,6475,6477,7,105,0,0,6476,6475,1,0,0,0,6477,6480,1,0,0,0,6478,6476,1,0,0,0,6478,6479,1,0,0,0,6479,6520,1,0,0,0,6480,6478,1,0,0,0,6481,6520,7,107,0,0,6482,6484,7,108,0,0,6483,6485,3,638,319,0,6484,6483,1,0,0,0,6484,6485,1,0,0,0,6485,6520,1,0,0,0,6486,6487,7,109,0,0,6487,6489,3,634,317,0,6488,6490,5,226,0,0,6489,6488,1,0,0,0,6489,6490,1,0,0,0,6490,6494,1,0,0,0,6491,6492,3,58,29,0,6492,6493,3,596,298,0,6493,6495,1,0,0,0,6494,6491,1,0,0,0,6494,6495,1,0,0,0,6495,6520,1,0,0,0,6496,6499,7,110,0,0,6497,6498,5,1012,0,0,6498,6500,3,618,309,0,6499,6497,1,0,0,0,6499,6500,1,0,0,0,6500,6520,1,0,0,0,6501,6503,5,231,0,0,6502,6504,5,223,0,0,6503,6502,1,0,0,0,6503,6504,1,0,0,0,6504,6506,1,0,0,0,6505,6507,5,226,0,0,6506,6505,1,0,0,0,6506,6507,1,0,0,0,6507,6511,1,0,0,0,6508,6509,3,58,29,0,6509,6510,3,596,298,0,6510,6512,1,0,0,0,6511,6508,1,0,0,0,6511,6512,1,0,0,0,6512,6515,1,0,0,0,6513,6514,5,27,0,0,6514,6516,3,598,299,0,6515,6513,1,0,0,0,6515,6516,1,0,0,0,6516,6520,1,0,0,0,6517,6518,5,231,0,0,6518,6520,5,227,0,0,6519,6393,1,0,0,0,6519,6413,1,0,0,0,6519,6422,1,0,0,0,6519,6430,1,0,0,0,6519,6438,1,0,0,0,6519,6448,1,0,0,0,6519,6458,1,0,0,0,6519,6471,1,0,0,0,6519,6481,1,0,0,0,6519,6482,1,0,0,0,6519,6486,1,0,0,0,6519,6496,1,0,0,0,6519,6501,1,0,0,0,6519,6517,1,0,0,0,6520,633,1,0,0,0,6521,6522,5,1133,0,0,6522,6527,5,1148,0,0,6523,6524,5,1135,0,0,6524,6526,5,1148,0,0,6525,6523,1,0,0,0,6526,6529,1,0,0,0,6527,6525,1,0,0,0,6527,6528,1,0,0,0,6528,6530,1,0,0,0,6529,6527,1,0,0,0,6530,6531,5,1134,0,0,6531,635,1,0,0,0,6532,6534,7,111,0,0,6533,6535,3,638,319,0,6534,6533,1,0,0,0,6534,6535,1,0,0,0,6535,6555,1,0,0,0,6536,6538,5,222,0,0,6537,6539,3,638,319,0,6538,6537,1,0,0,0,6538,6539,1,0,0,0,6539,6543,1,0,0,0,6540,6541,3,58,29,0,6541,6542,3,596,298,0,6542,6544,1,0,0,0,6543,6540,1,0,0,0,6543,6544,1,0,0,0,6544,6555,1,0,0,0,6545,6555,7,112,0,0,6546,6548,7,113,0,0,6547,6549,3,642,321,0,6548,6547,1,0,0,0,6548,6549,1,0,0,0,6549,6555,1,0,0,0,6550,6552,7,114,0,0,6551,6553,7,115,0,0,6552,6551,1,0,0,0,6552,6553,1,0,0,0,6553,6555,1,0,0,0,6554,6532,1,0,0,0,6554,6536,1,0,0,0,6554,6545,1,0,0,0,6554,6546,1,0,0,0,6554,6550,1,0,0,0,6555,6557,1,0,0,0,6556,6558,5,11,0,0,6557,6556,1,0,0,0,6557,6558,1,0,0,0,6558,637,1,0,0,0,6559,6560,5,1133,0,0,6560,6561,3,618,309,0,6561,6562,5,1134,0,0,6562,639,1,0,0,0,6563,6564,5,1133,0,0,6564,6565,3,618,309,0,6565,6566,5,1135,0,0,6566,6567,3,618,309,0,6567,6568,5,1134,0,0,6568,641,1,0,0,0,6569,6570,5,1133,0,0,6570,6573,3,618,309,0,6571,6572,5,1135,0,0,6572,6574,3,618,309,0,6573,6571,1,0,0,0,6573,6574,1,0,0,0,6574,6575,1,0,0,0,6575,6576,5,1134,0,0,6576,643,1,0,0,0,6577,6582,3,612,306,0,6578,6579,5,1135,0,0,6579,6581,3,612,306,0,6580,6578,1,0,0,0,6581,6584,1,0,0,0,6582,6580,1,0,0,0,6582,6583,1,0,0,0,6583,645,1,0,0,0,6584,6582,1,0,0,0,6585,6590,3,570,285,0,6586,6587,5,1135,0,0,6587,6589,3,570,285,0,6588,6586,1,0,0,0,6589,6592,1,0,0,0,6590,6588,1,0,0,0,6590,6591,1,0,0,0,6591,647,1,0,0,0,6592,6590,1,0,0,0,6593,6598,3,554,277,0,6594,6595,5,1135,0,0,6595,6597,3,554,277,0,6596,6594,1,0,0,0,6597,6600,1,0,0,0,6598,6596,1,0,0,0,6598,6599,1,0,0,0,6599,649,1,0,0,0,6600,6598,1,0,0,0,6601,6602,5,1133,0,0,6602,6607,3,582,291,0,6603,6604,5,1135,0,0,6604,6606,3,582,291,0,6605,6603,1,0,0,0,6606,6609,1,0,0,0,6607,6605,1,0,0,0,6607,6608,1,0,0,0,6608,6610,1,0,0,0,6609,6607,1,0,0,0,6610,6611,5,1134,0,0,6611,651,1,0,0,0,6612,6617,3,716,358,0,6613,6614,5,1135,0,0,6614,6616,3,716,358,0,6615,6613,1,0,0,0,6616,6619,1,0,0,0,6617,6615,1,0,0,0,6617,6618,1,0,0,0,6618,653,1,0,0,0,6619,6617,1,0,0,0,6620,6625,3,666,333,0,6621,6622,5,1135,0,0,6622,6624,3,666,333,0,6623,6621,1,0,0,0,6624,6627,1,0,0,0,6625,6623,1,0,0,0,6625,6626,1,0,0,0,6626,655,1,0,0,0,6627,6625,1,0,0,0,6628,6633,3,630,315,0,6629,6630,5,1135,0,0,6630,6632,3,630,315,0,6631,6629,1,0,0,0,6632,6635,1,0,0,0,6633,6631,1,0,0,0,6633,6634,1,0,0,0,6634,657,1,0,0,0,6635,6633,1,0,0,0,6636,6641,5,1148,0,0,6637,6638,5,1135,0,0,6638,6640,5,1148,0,0,6639,6637,1,0,0,0,6640,6643,1,0,0,0,6641,6639,1,0,0,0,6641,6642,1,0,0,0,6642,659,1,0,0,0,6643,6641,1,0,0,0,6644,6649,5,1159,0,0,6645,6646,5,1135,0,0,6646,6648,5,1159,0,0,6647,6645,1,0,0,0,6648,6651,1,0,0,0,6649,6647,1,0,0,0,6649,6650,1,0,0,0,6650,661,1,0,0,0,6651,6649,1,0,0,0,6652,6679,5,116,0,0,6653,6654,5,23,0,0,6654,6655,5,1133,0,0,6655,6656,3,716,358,0,6656,6657,5,12,0,0,6657,6658,3,636,318,0,6658,6659,5,1134,0,0,6659,6679,1,0,0,0,6660,6662,3,722,361,0,6661,6660,1,0,0,0,6661,6662,1,0,0,0,6662,6663,1,0,0,0,6663,6679,3,630,315,0,6664,6668,3,664,332,0,6665,6666,5,118,0,0,6666,6667,5,184,0,0,6667,6669,3,664,332,0,6668,6665,1,0,0,0,6668,6669,1,0,0,0,6669,6679,1,0,0,0,6670,6671,5,1133,0,0,6671,6672,3,716,358,0,6672,6673,5,1134,0,0,6673,6679,1,0,0,0,6674,6675,5,1133,0,0,6675,6676,3,552,276,0,6676,6677,5,1134,0,0,6677,6679,1,0,0,0,6678,6652,1,0,0,0,6678,6653,1,0,0,0,6678,6661,1,0,0,0,6678,6664,1,0,0,0,6678,6670,1,0,0,0,6678,6674,1,0,0,0,6679,663,1,0,0,0,6680,6686,7,116,0,0,6681,6683,5,1133,0,0,6682,6684,3,618,309,0,6683,6682,1,0,0,0,6683,6684,1,0,0,0,6684,6685,1,0,0,0,6685,6687,5,1134,0,0,6686,6681,1,0,0,0,6686,6687,1,0,0,0,6687,6695,1,0,0,0,6688,6689,5,323,0,0,6689,6691,5,1133,0,0,6690,6692,3,618,309,0,6691,6690,1,0,0,0,6691,6692,1,0,0,0,6692,6693,1,0,0,0,6693,6695,5,1134,0,0,6694,6680,1,0,0,0,6694,6688,1,0,0,0,6695,665,1,0,0,0,6696,6699,3,716,358,0,6697,6699,5,42,0,0,6698,6696,1,0,0,0,6698,6697,1,0,0,0,6699,667,1,0,0,0,6700,6701,5,77,0,0,6701,6702,5,60,0,0,6702,669,1,0,0,0,6703,6704,5,77,0,0,6704,6705,5,114,0,0,6705,6706,5,60,0,0,6706,671,1,0,0,0,6707,6708,5,123,0,0,6708,6709,5,141,0,0,6709,673,1,0,0,0,6710,6711,5,674,0,0,6711,6714,3,618,309,0,6712,6714,5,527,0,0,6713,6710,1,0,0,0,6713,6712,1,0,0,0,6714,675,1,0,0,0,6715,6734,3,678,339,0,6716,6734,3,686,343,0,6717,6734,3,688,344,0,6718,6719,3,708,354,0,6719,6721,5,1133,0,0,6720,6722,3,712,356,0,6721,6720,1,0,0,0,6721,6722,1,0,0,0,6722,6723,1,0,0,0,6723,6724,5,1134,0,0,6724,6734,1,0,0,0,6725,6726,3,552,276,0,6726,6728,5,1133,0,0,6727,6729,3,712,356,0,6728,6727,1,0,0,0,6728,6729,1,0,0,0,6729,6730,1,0,0,0,6730,6731,5,1134,0,0,6731,6734,1,0,0,0,6732,6734,3,710,355,0,6733,6715,1,0,0,0,6733,6716,1,0,0,0,6733,6717,1,0,0,0,6733,6718,1,0,0,0,6733,6725,1,0,0,0,6733,6732,1,0,0,0,6734,677,1,0,0,0,6735,6738,7,117,0,0,6736,6737,5,1133,0,0,6737,6739,5,1134,0,0,6738,6736,1,0,0,0,6738,6739,1,0,0,0,6739,6915,1,0,0,0,6740,6915,3,60,30,0,6741,6742,5,32,0,0,6742,6743,5,1133,0,0,6743,6744,3,716,358,0,6744,6745,5,1135,0,0,6745,6746,3,636,318,0,6746,6747,5,1134,0,0,6747,6915,1,0,0,0,6748,6749,5,32,0,0,6749,6750,5,1133,0,0,6750,6751,3,716,358,0,6751,6752,5,187,0,0,6752,6753,3,596,298,0,6753,6754,5,1134,0,0,6754,6915,1,0,0,0,6755,6756,5,23,0,0,6756,6757,5,1133,0,0,6757,6758,3,716,358,0,6758,6759,5,12,0,0,6759,6760,3,636,318,0,6760,6761,5,1134,0,0,6761,6915,1,0,0,0,6762,6763,5,188,0,0,6763,6764,5,1133,0,0,6764,6765,3,570,285,0,6765,6766,5,1134,0,0,6766,6915,1,0,0,0,6767,6768,5,22,0,0,6768,6770,3,716,358,0,6769,6771,3,680,340,0,6770,6769,1,0,0,0,6771,6772,1,0,0,0,6772,6770,1,0,0,0,6772,6773,1,0,0,0,6773,6776,1,0,0,0,6774,6775,5,53,0,0,6775,6777,3,714,357,0,6776,6774,1,0,0,0,6776,6777,1,0,0,0,6777,6778,1,0,0,0,6778,6779,5,407,0,0,6779,6915,1,0,0,0,6780,6782,5,22,0,0,6781,6783,3,680,340,0,6782,6781,1,0,0,0,6783,6784,1,0,0,0,6784,6782,1,0,0,0,6784,6785,1,0,0,0,6785,6788,1,0,0,0,6786,6787,5,53,0,0,6787,6789,3,714,357,0,6788,6786,1,0,0,0,6788,6789,1,0,0,0,6789,6790,1,0,0,0,6790,6791,5,407,0,0,6791,6915,1,0,0,0,6792,6793,5,222,0,0,6793,6794,5,1133,0,0,6794,6797,3,712,356,0,6795,6796,5,187,0,0,6796,6798,3,596,298,0,6797,6795,1,0,0,0,6797,6798,1,0,0,0,6798,6799,1,0,0,0,6799,6800,5,1134,0,0,6800,6915,1,0,0,0,6801,6802,5,324,0,0,6802,6805,5,1133,0,0,6803,6806,3,622,311,0,6804,6806,3,716,358,0,6805,6803,1,0,0,0,6805,6804,1,0,0,0,6806,6807,1,0,0,0,6807,6810,5,80,0,0,6808,6811,3,622,311,0,6809,6811,3,716,358,0,6810,6808,1,0,0,0,6810,6809,1,0,0,0,6811,6812,1,0,0,0,6812,6813,5,1134,0,0,6813,6915,1,0,0,0,6814,6815,7,118,0,0,6815,6818,5,1133,0,0,6816,6819,3,622,311,0,6817,6819,3,716,358,0,6818,6816,1,0,0,0,6818,6817,1,0,0,0,6819,6820,1,0,0,0,6820,6823,5,68,0,0,6821,6824,3,618,309,0,6822,6824,3,716,358,0,6823,6821,1,0,0,0,6823,6822,1,0,0,0,6824,6830,1,0,0,0,6825,6828,5,65,0,0,6826,6829,3,618,309,0,6827,6829,3,716,358,0,6828,6826,1,0,0,0,6828,6827,1,0,0,0,6829,6831,1,0,0,0,6830,6825,1,0,0,0,6830,6831,1,0,0,0,6831,6832,1,0,0,0,6832,6833,5,1134,0,0,6833,6915,1,0,0,0,6834,6835,5,328,0,0,6835,6836,5,1133,0,0,6836,6839,7,119,0,0,6837,6840,3,622,311,0,6838,6840,3,716,358,0,6839,6837,1,0,0,0,6839,6838,1,0,0,0,6839,6840,1,0,0,0,6840,6841,1,0,0,0,6841,6844,5,68,0,0,6842,6845,3,622,311,0,6843,6845,3,716,358,0,6844,6842,1,0,0,0,6844,6843,1,0,0,0,6845,6846,1,0,0,0,6846,6847,5,1134,0,0,6847,6915,1,0,0,0,6848,6849,5,328,0,0,6849,6852,5,1133,0,0,6850,6853,3,622,311,0,6851,6853,3,716,358,0,6852,6850,1,0,0,0,6852,6851,1,0,0,0,6853,6854,1,0,0,0,6854,6857,5,68,0,0,6855,6858,3,622,311,0,6856,6858,3,716,358,0,6857,6855,1,0,0,0,6857,6856,1,0,0,0,6858,6859,1,0,0,0,6859,6860,5,1134,0,0,6860,6915,1,0,0,0,6861,6862,5,1103,0,0,6862,6865,5,1133,0,0,6863,6866,3,622,311,0,6864,6866,3,716,358,0,6865,6863,1,0,0,0,6865,6864,1,0,0,0,6866,6873,1,0,0,0,6867,6868,5,12,0,0,6868,6869,7,120,0,0,6869,6870,5,1133,0,0,6870,6871,3,618,309,0,6871,6872,5,1134,0,0,6872,6874,1,0,0,0,6873,6867,1,0,0,0,6873,6874,1,0,0,0,6874,6876,1,0,0,0,6875,6877,3,682,341,0,6876,6875,1,0,0,0,6876,6877,1,0,0,0,6877,6878,1,0,0,0,6878,6879,5,1134,0,0,6879,6915,1,0,0,0,6880,6881,5,321,0,0,6881,6882,5,1133,0,0,6882,6883,3,70,35,0,6883,6886,5,68,0,0,6884,6887,3,622,311,0,6885,6887,3,716,358,0,6886,6884,1,0,0,0,6886,6885,1,0,0,0,6887,6888,1,0,0,0,6888,6889,5,1134,0,0,6889,6915,1,0,0,0,6890,6891,5,900,0,0,6891,6892,5,1133,0,0,6892,6893,7,121,0,0,6893,6894,5,1135,0,0,6894,6895,3,622,311,0,6895,6896,5,1134,0,0,6896,6915,1,0,0,0,6897,6898,5,282,0,0,6898,6899,5,1133,0,0,6899,6900,3,716,358,0,6900,6901,5,1135,0,0,6901,6904,3,716,358,0,6902,6903,5,593,0,0,6903,6905,3,636,318,0,6904,6902,1,0,0,0,6904,6905,1,0,0,0,6905,6907,1,0,0,0,6906,6908,3,266,133,0,6907,6906,1,0,0,0,6907,6908,1,0,0,0,6908,6910,1,0,0,0,6909,6911,3,268,134,0,6910,6909,1,0,0,0,6910,6911,1,0,0,0,6911,6912,1,0,0,0,6912,6913,5,1134,0,0,6913,6915,1,0,0,0,6914,6735,1,0,0,0,6914,6740,1,0,0,0,6914,6741,1,0,0,0,6914,6748,1,0,0,0,6914,6755,1,0,0,0,6914,6762,1,0,0,0,6914,6767,1,0,0,0,6914,6780,1,0,0,0,6914,6792,1,0,0,0,6914,6801,1,0,0,0,6914,6814,1,0,0,0,6914,6834,1,0,0,0,6914,6848,1,0,0,0,6914,6861,1,0,0,0,6914,6880,1,0,0,0,6914,6890,1,0,0,0,6914,6897,1,0,0,0,6915,679,1,0,0,0,6916,6917,5,189,0,0,6917,6918,3,714,357,0,6918,6919,5,174,0,0,6919,6920,3,714,357,0,6920,681,1,0,0,0,6921,6922,5,472,0,0,6922,6927,3,684,342,0,6923,6924,5,1135,0,0,6924,6926,3,684,342,0,6925,6923,1,0,0,0,6926,6929,1,0,0,0,6927,6925,1,0,0,0,6927,6928,1,0,0,0,6928,6936,1,0,0,0,6929,6927,1,0,0,0,6930,6931,5,472,0,0,6931,6932,3,618,309,0,6932,6933,5,1121,0,0,6933,6934,3,618,309,0,6934,6936,1,0,0,0,6935,6921,1,0,0,0,6935,6930,1,0,0,0,6936,683,1,0,0,0,6937,6939,3,618,309,0,6938,6940,7,122,0,0,6939,6938,1,0,0,0,6939,6940,1,0,0,0,6940,685,1,0,0,0,6941,6942,7,123,0,0,6942,6944,5,1133,0,0,6943,6945,7,44,0,0,6944,6943,1,0,0,0,6944,6945,1,0,0,0,6945,6946,1,0,0,0,6946,6947,3,714,357,0,6947,6949,5,1134,0,0,6948,6950,3,690,345,0,6949,6948,1,0,0,0,6949,6950,1,0,0,0,6950,7001,1,0,0,0,6951,6952,5,290,0,0,6952,6960,5,1133,0,0,6953,6961,5,1117,0,0,6954,6956,5,6,0,0,6955,6954,1,0,0,0,6955,6956,1,0,0,0,6956,6957,1,0,0,0,6957,6961,3,714,357,0,6958,6959,5,49,0,0,6959,6961,3,712,356,0,6960,6953,1,0,0,0,6960,6955,1,0,0,0,6960,6958,1,0,0,0,6961,6962,1,0,0,0,6962,6964,5,1134,0,0,6963,6965,3,690,345,0,6964,6963,1,0,0,0,6964,6965,1,0,0,0,6965,7001,1,0,0,0,6966,6967,7,124,0,0,6967,6969,5,1133,0,0,6968,6970,5,6,0,0,6969,6968,1,0,0,0,6969,6970,1,0,0,0,6970,6971,1,0,0,0,6971,6972,3,714,357,0,6972,6974,5,1134,0,0,6973,6975,3,690,345,0,6974,6973,1,0,0,0,6974,6975,1,0,0,0,6975,7001,1,0,0,0,6976,6977,5,294,0,0,6977,6979,5,1133,0,0,6978,6980,5,49,0,0,6979,6978,1,0,0,0,6979,6980,1,0,0,0,6980,6981,1,0,0,0,6981,6992,3,712,356,0,6982,6983,5,124,0,0,6983,6984,5,19,0,0,6984,6989,3,230,115,0,6985,6986,5,1135,0,0,6986,6988,3,230,115,0,6987,6985,1,0,0,0,6988,6991,1,0,0,0,6989,6987,1,0,0,0,6989,6990,1,0,0,0,6990,6993,1,0,0,0,6991,6989,1,0,0,0,6992,6982,1,0,0,0,6992,6993,1,0,0,0,6993,6996,1,0,0,0,6994,6995,5,154,0,0,6995,6997,5,1148,0,0,6996,6994,1,0,0,0,6996,6997,1,0,0,0,6997,6998,1,0,0,0,6998,6999,5,1134,0,0,6999,7001,1,0,0,0,7e3,6941,1,0,0,0,7e3,6951,1,0,0,0,7e3,6966,1,0,0,0,7e3,6976,1,0,0,0,7001,687,1,0,0,0,7002,7003,7,125,0,0,7003,7004,5,1133,0,0,7004,7007,3,716,358,0,7005,7006,5,1135,0,0,7006,7008,3,618,309,0,7007,7005,1,0,0,0,7007,7008,1,0,0,0,7008,7011,1,0,0,0,7009,7010,5,1135,0,0,7010,7012,3,618,309,0,7011,7009,1,0,0,0,7011,7012,1,0,0,0,7012,7013,1,0,0,0,7013,7014,5,1134,0,0,7014,7015,3,690,345,0,7015,7041,1,0,0,0,7016,7017,7,126,0,0,7017,7018,5,1133,0,0,7018,7019,3,716,358,0,7019,7020,5,1134,0,0,7020,7021,3,690,345,0,7021,7041,1,0,0,0,7022,7023,7,127,0,0,7023,7024,5,1133,0,0,7024,7025,5,1134,0,0,7025,7041,3,690,345,0,7026,7027,5,301,0,0,7027,7028,5,1133,0,0,7028,7029,3,716,358,0,7029,7030,5,1135,0,0,7030,7031,3,618,309,0,7031,7032,5,1134,0,0,7032,7033,3,690,345,0,7033,7041,1,0,0,0,7034,7035,5,300,0,0,7035,7036,5,1133,0,0,7036,7037,3,618,309,0,7037,7038,5,1134,0,0,7038,7039,3,690,345,0,7039,7041,1,0,0,0,7040,7002,1,0,0,0,7040,7016,1,0,0,0,7040,7022,1,0,0,0,7040,7026,1,0,0,0,7040,7034,1,0,0,0,7041,689,1,0,0,0,7042,7048,5,128,0,0,7043,7044,5,1133,0,0,7044,7045,3,692,346,0,7045,7046,5,1134,0,0,7046,7049,1,0,0,0,7047,7049,3,694,347,0,7048,7043,1,0,0,0,7048,7047,1,0,0,0,7049,691,1,0,0,0,7050,7052,3,694,347,0,7051,7050,1,0,0,0,7051,7052,1,0,0,0,7052,7054,1,0,0,0,7053,7055,3,706,353,0,7054,7053,1,0,0,0,7054,7055,1,0,0,0,7055,7057,1,0,0,0,7056,7058,3,228,114,0,7057,7056,1,0,0,0,7057,7058,1,0,0,0,7058,7060,1,0,0,0,7059,7061,3,696,348,0,7060,7059,1,0,0,0,7060,7061,1,0,0,0,7061,693,1,0,0,0,7062,7063,3,612,306,0,7063,695,1,0,0,0,7064,7065,3,698,349,0,7065,7066,3,700,350,0,7066,697,1,0,0,0,7067,7068,7,128,0,0,7068,699,1,0,0,0,7069,7072,3,704,352,0,7070,7072,3,702,351,0,7071,7069,1,0,0,0,7071,7070,1,0,0,0,7072,701,1,0,0,0,7073,7074,5,16,0,0,7074,7075,3,704,352,0,7075,7076,5,10,0,0,7076,7077,3,704,352,0,7077,703,1,0,0,0,7078,7079,5,35,0,0,7079,7086,5,600,0,0,7080,7081,5,657,0,0,7081,7086,7,129,0,0,7082,7083,3,716,358,0,7083,7084,7,129,0,0,7084,7086,1,0,0,0,7085,7078,1,0,0,0,7085,7080,1,0,0,0,7085,7082,1,0,0,0,7086,705,1,0,0,0,7087,7088,5,129,0,0,7088,7089,5,19,0,0,7089,7094,3,716,358,0,7090,7091,5,1135,0,0,7091,7093,3,716,358,0,7092,7090,1,0,0,0,7093,7096,1,0,0,0,7094,7092,1,0,0,0,7094,7095,1,0,0,0,7095,707,1,0,0,0,7096,7094,1,0,0,0,7097,7122,3,748,374,0,7098,7122,5,747,0,0,7099,7122,5,317,0,0,7100,7122,5,313,0,0,7101,7122,5,314,0,0,7102,7122,5,315,0,0,7103,7122,5,318,0,0,7104,7122,5,319,0,0,7105,7122,5,320,0,0,7106,7122,5,77,0,0,7107,7122,5,85,0,0,7108,7122,5,316,0,0,7109,7122,5,322,0,0,7110,7122,5,508,0,0,7111,7122,5,323,0,0,7112,7122,5,140,0,0,7113,7122,5,141,0,0,7114,7122,5,325,0,0,7115,7122,5,326,0,0,7116,7122,5,327,0,0,7117,7122,5,328,0,0,7118,7122,5,329,0,0,7119,7122,5,330,0,0,7120,7122,5,331,0,0,7121,7097,1,0,0,0,7121,7098,1,0,0,0,7121,7099,1,0,0,0,7121,7100,1,0,0,0,7121,7101,1,0,0,0,7121,7102,1,0,0,0,7121,7103,1,0,0,0,7121,7104,1,0,0,0,7121,7105,1,0,0,0,7121,7106,1,0,0,0,7121,7107,1,0,0,0,7121,7108,1,0,0,0,7121,7109,1,0,0,0,7121,7110,1,0,0,0,7121,7111,1,0,0,0,7121,7112,1,0,0,0,7121,7113,1,0,0,0,7121,7114,1,0,0,0,7121,7115,1,0,0,0,7121,7116,1,0,0,0,7121,7117,1,0,0,0,7121,7118,1,0,0,0,7121,7119,1,0,0,0,7121,7120,1,0,0,0,7122,709,1,0,0,0,7123,7124,7,130,0,0,7124,7125,5,1133,0,0,7125,7126,3,714,357,0,7126,7127,5,1134,0,0,7127,711,1,0,0,0,7128,7133,3,630,315,0,7129,7133,3,570,285,0,7130,7133,3,676,338,0,7131,7133,3,716,358,0,7132,7128,1,0,0,0,7132,7129,1,0,0,0,7132,7130,1,0,0,0,7132,7131,1,0,0,0,7133,7143,1,0,0,0,7134,7139,5,1135,0,0,7135,7140,3,630,315,0,7136,7140,3,570,285,0,7137,7140,3,676,338,0,7138,7140,3,716,358,0,7139,7135,1,0,0,0,7139,7136,1,0,0,0,7139,7137,1,0,0,0,7139,7138,1,0,0,0,7140,7142,1,0,0,0,7141,7134,1,0,0,0,7142,7145,1,0,0,0,7143,7141,1,0,0,0,7143,7144,1,0,0,0,7144,713,1,0,0,0,7145,7143,1,0,0,0,7146,7151,3,630,315,0,7147,7151,3,570,285,0,7148,7151,3,676,338,0,7149,7151,3,716,358,0,7150,7146,1,0,0,0,7150,7147,1,0,0,0,7150,7148,1,0,0,0,7150,7149,1,0,0,0,7151,715,1,0,0,0,7152,7153,6,358,-1,0,7153,7154,7,131,0,0,7154,7164,3,716,358,4,7155,7156,3,718,359,0,7156,7158,5,88,0,0,7157,7159,5,114,0,0,7158,7157,1,0,0,0,7158,7159,1,0,0,0,7159,7160,1,0,0,0,7160,7161,7,132,0,0,7161,7164,1,0,0,0,7162,7164,3,718,359,0,7163,7152,1,0,0,0,7163,7155,1,0,0,0,7163,7162,1,0,0,0,7164,7171,1,0,0,0,7165,7166,10,3,0,0,7166,7167,3,726,363,0,7167,7168,3,716,358,4,7168,7170,1,0,0,0,7169,7165,1,0,0,0,7170,7173,1,0,0,0,7171,7169,1,0,0,0,7171,7172,1,0,0,0,7172,717,1,0,0,0,7173,7171,1,0,0,0,7174,7175,6,359,-1,0,7175,7176,3,720,360,0,7176,7241,1,0,0,0,7177,7178,10,8,0,0,7178,7179,3,724,362,0,7179,7180,3,718,359,9,7180,7240,1,0,0,0,7181,7183,10,6,0,0,7182,7184,5,114,0,0,7183,7182,1,0,0,0,7183,7184,1,0,0,0,7184,7185,1,0,0,0,7185,7186,5,16,0,0,7186,7187,3,718,359,0,7187,7188,5,10,0,0,7188,7189,3,718,359,7,7189,7240,1,0,0,0,7190,7191,10,5,0,0,7191,7192,5,620,0,0,7192,7193,5,98,0,0,7193,7240,3,718,359,6,7194,7196,10,3,0,0,7195,7197,5,114,0,0,7196,7195,1,0,0,0,7196,7197,1,0,0,0,7197,7198,1,0,0,0,7198,7199,7,133,0,0,7199,7240,3,718,359,4,7200,7202,10,10,0,0,7201,7203,5,114,0,0,7202,7201,1,0,0,0,7202,7203,1,0,0,0,7203,7204,1,0,0,0,7204,7205,5,80,0,0,7205,7208,5,1133,0,0,7206,7209,3,198,99,0,7207,7209,3,652,326,0,7208,7206,1,0,0,0,7208,7207,1,0,0,0,7209,7210,1,0,0,0,7210,7211,5,1134,0,0,7211,7240,1,0,0,0,7212,7213,10,9,0,0,7213,7214,5,88,0,0,7214,7240,3,628,314,0,7215,7216,10,7,0,0,7216,7217,3,724,362,0,7217,7218,7,134,0,0,7218,7219,5,1133,0,0,7219,7220,3,198,99,0,7220,7221,5,1134,0,0,7221,7240,1,0,0,0,7222,7224,10,4,0,0,7223,7225,5,114,0,0,7224,7223,1,0,0,0,7224,7225,1,0,0,0,7225,7226,1,0,0,0,7226,7227,5,98,0,0,7227,7230,3,718,359,0,7228,7229,5,413,0,0,7229,7231,5,1148,0,0,7230,7228,1,0,0,0,7230,7231,1,0,0,0,7231,7240,1,0,0,0,7232,7233,10,2,0,0,7233,7234,5,505,0,0,7234,7235,5,533,0,0,7235,7236,5,1133,0,0,7236,7237,3,718,359,0,7237,7238,5,1134,0,0,7238,7240,1,0,0,0,7239,7177,1,0,0,0,7239,7181,1,0,0,0,7239,7190,1,0,0,0,7239,7194,1,0,0,0,7239,7200,1,0,0,0,7239,7212,1,0,0,0,7239,7215,1,0,0,0,7239,7222,1,0,0,0,7239,7232,1,0,0,0,7240,7243,1,0,0,0,7241,7239,1,0,0,0,7241,7242,1,0,0,0,7242,719,1,0,0,0,7243,7241,1,0,0,0,7244,7245,6,360,-1,0,7245,7293,3,630,315,0,7246,7293,3,570,285,0,7247,7293,3,676,338,0,7248,7293,3,594,297,0,7249,7250,3,722,361,0,7250,7251,3,720,360,12,7251,7293,1,0,0,0,7252,7253,5,226,0,0,7253,7293,3,720,360,11,7254,7255,5,1159,0,0,7255,7256,5,1108,0,0,7256,7293,3,720,360,10,7257,7258,5,1133,0,0,7258,7263,3,716,358,0,7259,7260,5,1135,0,0,7260,7262,3,716,358,0,7261,7259,1,0,0,0,7262,7265,1,0,0,0,7263,7261,1,0,0,0,7263,7264,1,0,0,0,7264,7266,1,0,0,0,7265,7263,1,0,0,0,7266,7267,5,1134,0,0,7267,7293,1,0,0,0,7268,7269,5,600,0,0,7269,7270,5,1133,0,0,7270,7273,3,716,358,0,7271,7272,5,1135,0,0,7272,7274,3,716,358,0,7273,7271,1,0,0,0,7274,7275,1,0,0,0,7275,7273,1,0,0,0,7275,7276,1,0,0,0,7276,7277,1,0,0,0,7277,7278,5,1134,0,0,7278,7293,1,0,0,0,7279,7280,5,60,0,0,7280,7281,5,1133,0,0,7281,7282,3,198,99,0,7282,7283,5,1134,0,0,7283,7293,1,0,0,0,7284,7285,5,1133,0,0,7285,7286,3,198,99,0,7286,7287,5,1134,0,0,7287,7293,1,0,0,0,7288,7289,5,86,0,0,7289,7290,3,716,358,0,7290,7291,3,70,35,0,7291,7293,1,0,0,0,7292,7244,1,0,0,0,7292,7246,1,0,0,0,7292,7247,1,0,0,0,7292,7248,1,0,0,0,7292,7249,1,0,0,0,7292,7252,1,0,0,0,7292,7254,1,0,0,0,7292,7257,1,0,0,0,7292,7268,1,0,0,0,7292,7279,1,0,0,0,7292,7284,1,0,0,0,7292,7288,1,0,0,0,7293,7315,1,0,0,0,7294,7295,10,4,0,0,7295,7296,3,728,364,0,7296,7297,3,720,360,5,7297,7314,1,0,0,0,7298,7299,10,3,0,0,7299,7300,3,730,365,0,7300,7301,3,720,360,4,7301,7314,1,0,0,0,7302,7303,10,2,0,0,7303,7304,3,732,366,0,7304,7305,3,720,360,3,7305,7314,1,0,0,0,7306,7307,10,1,0,0,7307,7308,3,734,367,0,7308,7309,3,720,360,2,7309,7314,1,0,0,0,7310,7311,10,14,0,0,7311,7312,5,27,0,0,7312,7314,3,598,299,0,7313,7294,1,0,0,0,7313,7298,1,0,0,0,7313,7302,1,0,0,0,7313,7306,1,0,0,0,7313,7310,1,0,0,0,7314,7317,1,0,0,0,7315,7313,1,0,0,0,7315,7316,1,0,0,0,7316,721,1,0,0,0,7317,7315,1,0,0,0,7318,7319,7,135,0,0,7319,723,1,0,0,0,7320,7335,5,1124,0,0,7321,7335,5,1125,0,0,7322,7335,5,1126,0,0,7323,7324,5,1126,0,0,7324,7335,5,1124,0,0,7325,7326,5,1125,0,0,7326,7335,5,1124,0,0,7327,7328,5,1126,0,0,7328,7335,5,1125,0,0,7329,7330,5,1127,0,0,7330,7335,5,1124,0,0,7331,7332,5,1126,0,0,7332,7333,5,1124,0,0,7333,7335,5,1125,0,0,7334,7320,1,0,0,0,7334,7321,1,0,0,0,7334,7322,1,0,0,0,7334,7323,1,0,0,0,7334,7325,1,0,0,0,7334,7327,1,0,0,0,7334,7329,1,0,0,0,7334,7331,1,0,0,0,7335,725,1,0,0,0,7336,7344,5,10,0,0,7337,7338,5,1130,0,0,7338,7344,5,1130,0,0,7339,7344,5,194,0,0,7340,7344,5,123,0,0,7341,7342,5,1129,0,0,7342,7344,5,1129,0,0,7343,7336,1,0,0,0,7343,7337,1,0,0,0,7343,7339,1,0,0,0,7343,7340,1,0,0,0,7343,7341,1,0,0,0,7344,727,1,0,0,0,7345,7346,5,1126,0,0,7346,7353,5,1126,0,0,7347,7348,5,1125,0,0,7348,7353,5,1125,0,0,7349,7353,5,1130,0,0,7350,7353,5,1131,0,0,7351,7353,5,1129,0,0,7352,7345,1,0,0,0,7352,7347,1,0,0,0,7352,7349,1,0,0,0,7352,7350,1,0,0,0,7352,7351,1,0,0,0,7353,729,1,0,0,0,7354,7355,7,136,0,0,7355,731,1,0,0,0,7356,7357,7,137,0,0,7357,733,1,0,0,0,7358,7359,5,1121,0,0,7359,7364,5,1125,0,0,7360,7361,5,1121,0,0,7361,7362,5,1125,0,0,7362,7364,5,1125,0,0,7363,7358,1,0,0,0,7363,7360,1,0,0,0,7364,735,1,0,0,0,7365,7366,7,138,0,0,7366,737,1,0,0,0,7367,7368,7,139,0,0,7368,739,1,0,0,0,7369,7370,7,140,0,0,7370,741,1,0,0,0,7371,7372,7,141,0,0,7372,743,1,0,0,0,7373,7374,7,142,0,0,7374,745,1,0,0,0,7375,7376,7,143,0,0,7376,747,1,0,0,0,7377,7378,7,144,0,0,7378,749,1,0,0,0,1057,751,757,763,772,812,827,838,855,860,872,899,908,913,919,924,928,937,940,943,947,954,957,962,970,975,980,983,985,997,1e3,1004,1007,1011,1014,1018,1021,1024,1028,1031,1035,1041,1047,1053,1060,1067,1070,1074,1079,1085,1094,1099,1104,1122,1129,1133,1143,1147,1151,1155,1159,1164,1167,1170,1173,1176,1182,1186,1192,1197,1200,1203,1205,1216,1220,1223,1237,1240,1244,1247,1251,1254,1258,1261,1265,1268,1271,1275,1278,1282,1288,1292,1304,1310,1321,1326,1334,1342,1347,1350,1355,1363,1368,1374,1379,1383,1385,1388,1392,1396,1399,1403,1407,1411,1417,1420,1427,1432,1438,1445,1451,1459,1462,1469,1472,1474,1480,1486,1503,1510,1517,1529,1534,1537,1540,1553,1566,1571,1587,1595,1605,1608,1611,1617,1621,1624,1635,1638,1643,1656,1663,1670,1672,1679,1683,1685,1690,1693,1699,1704,1706,1710,1713,1716,1722,1727,1729,1734,1741,1743,1750,1755,1759,1762,1770,1778,1780,1790,1794,1797,1803,1808,1811,1817,1820,1824,1827,1831,1836,1841,1846,1850,1854,1858,1862,1866,1870,1875,1880,1885,1891,1896,1901,1906,1911,1916,1922,1927,1932,1937,1942,1947,1952,1957,1964,1969,1974,1979,1983,1988,1996,2001,2007,2019,2026,2028,2036,2041,2044,2052,2058,2062,2075,2087,2089,2092,2100,2106,2112,2125,2132,2141,2146,2157,2166,2171,2183,2190,2199,2204,2216,2223,2232,2237,2244,2253,2258,2260,2265,2273,2282,2286,2289,2293,2298,2304,2310,2315,2320,2325,2330,2333,2341,2351,2355,2362,2367,2370,2375,2378,2382,2386,2394,2413,2416,2419,2423,2433,2446,2453,2456,2461,2468,2471,2474,2485,2488,2492,2500,2503,2508,2516,2522,2526,2530,2535,2540,2547,2551,2562,2570,2573,2579,2585,2587,2592,2595,2601,2607,2609,2613,2616,2619,2625,2631,2634,2640,2646,2648,2653,2661,2663,2672,2675,2678,2683,2685,2694,2697,2700,2705,2707,2716,2721,2729,2733,2741,2751,2756,2763,2767,2771,2790,2800,2806,2823,2827,2837,2842,2845,2854,2865,2873,2879,2889,2901,2908,2915,2930,2943,2949,2955,2961,2967,2973,2979,2984,2991,2998,3005,3010,3013,3015,3029,3036,3043,3049,3053,3057,3064,3067,3072,3079,3086,3090,3095,3105,3112,3121,3130,3139,3142,3146,3155,3159,3162,3165,3171,3174,3178,3181,3185,3188,3196,3199,3210,3213,3218,3221,3226,3236,3241,3247,3249,3255,3257,3263,3271,3276,3284,3287,3292,3295,3300,3308,3316,3322,3330,3335,3343,3346,3350,3353,3361,3367,3376,3379,3383,3387,3391,3396,3400,3404,3406,3409,3412,3415,3421,3425,3428,3431,3434,3437,3444,3446,3450,3455,3461,3466,3473,3479,3484,3487,3493,3497,3505,3509,3512,3515,3520,3523,3530,3534,3537,3541,3545,3548,3551,3556,3562,3566,3576,3582,3586,3592,3596,3602,3605,3617,3621,3625,3633,3637,3645,3648,3652,3655,3663,3668,3671,3674,3678,3681,3690,3695,3704,3709,3716,3723,3731,3737,3745,3748,3751,3758,3761,3768,3776,3782,3793,3796,3800,3806,3815,3820,3824,3830,3836,3838,3842,3851,3861,3871,3877,3882,3886,3889,3892,3895,3898,3904,3910,3913,3916,3919,3922,3925,3927,3933,3939,3942,3945,3948,3951,3954,3958,3964,3968,3976,3980,3983,3985,3998,4001,4008,4018,4021,4026,4028,4032,4040,4046,4055,4068,4072,4078,4082,4092,4096,4100,4104,4106,4114,4126,4132,4134,4140,4142,4144,4150,4158,4166,4170,4174,4183,4188,4208,4213,4219,4226,4231,4240,4243,4247,4251,4255,4258,4261,4264,4268,4272,4275,4278,4281,4288,4292,4307,4311,4323,4331,4341,4345,4348,4354,4357,4360,4369,4378,4388,4392,4402,4412,4420,4423,4432,4435,4439,4444,4448,4457,4460,4491,4494,4497,4553,4558,4586,4600,4607,4611,4617,4625,4627,4638,4648,4655,4661,4669,4674,4682,4690,4698,4706,4712,4717,4722,4727,4733,4735,4746,4751,4758,4760,4774,4780,4785,4790,4796,4803,4811,4819,4824,4830,4833,4841,4848,4857,4860,4877,4885,4893,4897,4904,4910,4918,4927,4933,4940,4945,4948,4950,4956,4958,4962,4964,4971,4976,4983,4991,4997,5003,5008,5011,5013,5019,5021,5025,5027,5034,5036,5041,5051,5056,5065,5070,5073,5075,5081,5083,5086,5094,5103,5105,5112,5115,5127,5133,5142,5151,5156,5165,5178,5181,5193,5200,5205,5215,5243,5247,5252,5259,5262,5268,5278,5288,5298,5304,5313,5319,5326,5328,5338,5342,5346,5356,5361,5433,5451,5459,5471,5478,5480,5490,5493,5501,5508,5512,5519,5524,5527,5530,5539,5543,5547,5570,5577,5581,5588,5595,5598,5614,5617,5627,5631,5637,5640,5645,5649,5656,5659,5665,5697,5700,5712,5715,5725,5733,5737,5744,5747,5756,5762,5768,5778,5780,5786,5789,5792,5804,5807,5813,5816,5824,5832,5838,5842,5856,5868,5875,5878,5885,5892,5897,5910,5921,5927,5932,5945,5947,5952,5956,5959,5961,5968,5975,5978,5981,5987,5991,5997,6003,6016,6021,6029,6032,6037,6042,6050,6053,6061,6065,6072,6078,6081,6085,6098,6104,6116,6119,6128,6133,6139,6148,6153,6160,6168,6178,6186,6188,6191,6195,6197,6212,6217,6223,6226,6229,6235,6244,6252,6262,6266,6271,6291,6298,6300,6307,6309,6313,6318,6329,6334,6340,6343,6347,6352,6355,6359,6363,6365,6370,6375,6388,6391,6395,6398,6401,6406,6411,6417,6420,6425,6428,6433,6436,6440,6445,6450,6455,6460,6463,6468,6473,6478,6484,6489,6494,6499,6503,6506,6511,6515,6519,6527,6534,6538,6543,6548,6552,6554,6557,6573,6582,6590,6598,6607,6617,6625,6633,6641,6649,6661,6668,6678,6683,6686,6691,6694,6698,6713,6721,6728,6733,6738,6772,6776,6784,6788,6797,6805,6810,6818,6823,6828,6830,6839,6844,6852,6857,6865,6873,6876,6886,6904,6907,6910,6914,6927,6935,6939,6944,6949,6955,6960,6964,6969,6974,6979,6989,6992,6996,7e3,7007,7011,7040,7048,7051,7054,7057,7060,7071,7085,7094,7121,7132,7139,7143,7150,7158,7163,7171,7183,7196,7202,7208,7224,7230,7239,7241,7263,7275,7292,7313,7315,7334,7343,7352,7363],Qi.vocabulary=new Ra(Qi.literalNames,Qi.symbolicNames,[]),Qi.decisionsToDFA=Qi._ATN.decisionToState.map(((t,e)=>new ni(t,e))),Qi),vC=class extends ga{constructor(t,e){super(t,e)}EOF(){return this.getToken(FC.EOF,0)}statements(){return this.getRuleContext(0,BC)}get ruleIndex(){return FC.RULE_root}accept(t){return t.visitRoot?t.visitRoot(this):t.visitChildren(this)}},BC=class t extends ga{constructor(t,e){super(t,e)}statement(){return this.getRuleContext(0,yC)}SEMI(){return this.getToken(FC.SEMI,0)}statements(){return this.getRuleContext(0,t)}get ruleIndex(){return FC.RULE_statements}accept(t){return t.visitStatements?t.visitStatements(this):t.visitChildren(this)}},yC=class extends ga{constructor(t,e){super(t,e)}ddlStatement(){return this.getRuleContext(0,fC)}dmlStatement(){return this.getRuleContext(0,YC)}transactionStatement(){return this.getRuleContext(0,wC)}replicationStatement(){return this.getRuleContext(0,bC)}preparedStatement(){return this.getRuleContext(0,WC)}administrationStatement(){return this.getRuleContext(0,XC)}utilityStatement(){return this.getRuleContext(0,KC)}get ruleIndex(){return FC.RULE_statement}accept(t){return t.visitStatement?t.visitStatement(this):t.visitChildren(this)}},fC=class extends ga{constructor(t,e){super(t,e)}createDatabase(){return this.getRuleContext(0,QC)}createEvent(){return this.getRuleContext(0,JC)}createIndex(){return this.getRuleContext(0,ZC)}createLogfileGroup(){return this.getRuleContext(0,qC)}createProcedure(){return this.getRuleContext(0,jC)}createFunction(){return this.getRuleContext(0,zC)}createServer(){return this.getRuleContext(0,t_)}createTable(){return this.getRuleContext(0,e_)}createTablespaceInnodb(){return this.getRuleContext(0,i_)}createTablespaceNdb(){return this.getRuleContext(0,c_)}createTrigger(){return this.getRuleContext(0,n_)}createView(){return this.getRuleContext(0,R_)}createRole(){return this.getRuleContext(0,$C)}alterDatabase(){return this.getRuleContext(0,PM)}alterEvent(){return this.getRuleContext(0,UM)}alterFunction(){return this.getRuleContext(0,mM)}alterInstance(){return this.getRuleContext(0,DM)}alterLogfileGroup(){return this.getRuleContext(0,pM)}alterProcedure(){return this.getRuleContext(0,gM)}alterServer(){return this.getRuleContext(0,xM)}alterTable(){return this.getRuleContext(0,kM)}alterTablespace(){return this.getRuleContext(0,HM)}alterView(){return this.getRuleContext(0,GM)}dropDatabase(){return this.getRuleContext(0,Gd)}dropEvent(){return this.getRuleContext(0,Fd)}dropIndex(){return this.getRuleContext(0,vd)}dropLogfileGroup(){return this.getRuleContext(0,Bd)}dropProcedure(){return this.getRuleContext(0,yd)}dropFunction(){return this.getRuleContext(0,fd)}dropServer(){return this.getRuleContext(0,Yd)}dropTable(){return this.getRuleContext(0,wd)}dropTablespace(){return this.getRuleContext(0,bd)}dropTrigger(){return this.getRuleContext(0,Wd)}dropView(){return this.getRuleContext(0,Vd)}dropRole(){return this.getRuleContext(0,Xd)}setRole(){return this.getRuleContext(0,Kd)}renameTable(){return this.getRuleContext(0,Qd)}truncateTable(){return this.getRuleContext(0,Zd)}get ruleIndex(){return FC.RULE_ddlStatement}accept(t){return t.visitDdlStatement?t.visitDdlStatement(this):t.visitChildren(this)}},YC=class extends ga{constructor(t,e){super(t,e)}selectStatement(){return this.getRuleContext(0,rU)}insertStatement(){return this.getRuleContext(0,tU)}updateStatement(){return this.getRuleContext(0,TU)}deleteStatement(){return this.getRuleContext(0,jd)}replaceStatement(){return this.getRuleContext(0,aU)}callStatement(){return this.getRuleContext(0,qd)}loadDataStatement(){return this.getRuleContext(0,eU)}loadXmlStatement(){return this.getRuleContext(0,sU)}doStatement(){return this.getRuleContext(0,zd)}handlerStatement(){return this.getRuleContext(0,$d)}valuesStatement(){return this.getRuleContext(0,oU)}withStatement(){return this.getRuleContext(0,nx)}tableStatement(){return this.getRuleContext(0,hx)}get ruleIndex(){return FC.RULE_dmlStatement}accept(t){return t.visitDmlStatement?t.visitDmlStatement(this):t.visitChildren(this)}},wC=class extends ga{constructor(t,e){super(t,e)}startTransaction(){return this.getRuleContext(0,_m)}beginWork(){return this.getRuleContext(0,Pm)}commitWork(){return this.getRuleContext(0,Mm)}rollbackWork(){return this.getRuleContext(0,dm)}savepointStatement(){return this.getRuleContext(0,Um)}rollbackStatement(){return this.getRuleContext(0,mm)}releaseStatement(){return this.getRuleContext(0,Dm)}lockTables(){return this.getRuleContext(0,pm)}unlockTables(){return this.getRuleContext(0,gm)}get ruleIndex(){return FC.RULE_transactionStatement}accept(t){return t.visitTransactionStatement?t.visitTransactionStatement(this):t.visitChildren(this)}},bC=class extends ga{constructor(t,e){super(t,e)}changeMaster(){return this.getRuleContext(0,ym)}changeReplicationFilter(){return this.getRuleContext(0,fm)}purgeBinaryLogs(){return this.getRuleContext(0,Ym)}resetMaster(){return this.getRuleContext(0,wm)}resetSlave(){return this.getRuleContext(0,bm)}startSlave(){return this.getRuleContext(0,Wm)}stopSlave(){return this.getRuleContext(0,Vm)}startGroupReplication(){return this.getRuleContext(0,Xm)}stopGroupReplication(){return this.getRuleContext(0,Km)}xaStartTransaction(){return this.getRuleContext(0,MD)}xaEndTransaction(){return this.getRuleContext(0,dD)}xaPrepareStatement(){return this.getRuleContext(0,UD)}xaCommitWork(){return this.getRuleContext(0,mD)}xaRollbackWork(){return this.getRuleContext(0,DD)}xaRecoverWork(){return this.getRuleContext(0,pD)}get ruleIndex(){return FC.RULE_replicationStatement}accept(t){return t.visitReplicationStatement?t.visitReplicationStatement(this):t.visitChildren(this)}},WC=class extends ga{constructor(t,e){super(t,e)}prepareStatement(){return this.getRuleContext(0,gD)}executeStatement(){return this.getRuleContext(0,xD)}deallocatePrepare(){return this.getRuleContext(0,kD)}get ruleIndex(){return FC.RULE_preparedStatement}accept(t){return t.visitPreparedStatement?t.visitPreparedStatement(this):t.visitChildren(this)}},VC=class extends ga{constructor(t,e){super(t,e)}blockStatement(){return this.getRuleContext(0,GD)}caseStatement(){return this.getRuleContext(0,FD)}ifStatement(){return this.getRuleContext(0,vD)}leaveStatement(){return this.getRuleContext(0,yD)}loopStatement(){return this.getRuleContext(0,fD)}repeatStatement(){return this.getRuleContext(0,YD)}whileStatement(){return this.getRuleContext(0,bD)}iterateStatement(){return this.getRuleContext(0,BD)}returnStatement(){return this.getRuleContext(0,wD)}cursorStatement(){return this.getRuleContext(0,WD)}get ruleIndex(){return FC.RULE_compoundStatement}accept(t){return t.visitCompoundStatement?t.visitCompoundStatement(this):t.visitChildren(this)}},XC=class extends ga{constructor(t,e){super(t,e)}alterUser(){return this.getRuleContext(0,np)}createUser(){return this.getRuleContext(0,Tp)}dropUser(){return this.getRuleContext(0,Ap)}grantStatement(){return this.getRuleContext(0,Sp)}grantProxy(){return this.getRuleContext(0,Op)}renameUser(){return this.getRuleContext(0,Ip)}revokeStatement(){return this.getRuleContext(0,up)}revokeProxy(){return this.getRuleContext(0,_p)}analyzeTable(){return this.getRuleContext(0,qp)}checkTable(){return this.getRuleContext(0,jp)}checksumTable(){return this.getRuleContext(0,zp)}optimizeTable(){return this.getRuleContext(0,$p)}repairTable(){return this.getRuleContext(0,tg)}createUdfunction(){return this.getRuleContext(0,sg)}installPlugin(){return this.getRuleContext(0,ag)}uninstallPlugin(){return this.getRuleContext(0,rg)}setStatement(){return this.getRuleContext(0,ig)}showStatement(){return this.getRuleContext(0,Ag)}binlogStatement(){return this.getRuleContext(0,Yg)}cacheIndexStatement(){return this.getRuleContext(0,wg)}flushStatement(){return this.getRuleContext(0,bg)}killStatement(){return this.getRuleContext(0,Wg)}loadIndexIntoCache(){return this.getRuleContext(0,Vg)}resetStatement(){return this.getRuleContext(0,Xg)}shutdownStatement(){return this.getRuleContext(0,Kg)}get ruleIndex(){return FC.RULE_administrationStatement}accept(t){return t.visitAdministrationStatement?t.visitAdministrationStatement(this):t.visitChildren(this)}},KC=class extends ga{constructor(t,e){super(t,e)}simpleDescribeStatement(){return this.getRuleContext(0,tx)}fullDescribeStatement(){return this.getRuleContext(0,ex)}helpStatement(){return this.getRuleContext(0,sx)}useStatement(){return this.getRuleContext(0,ax)}signalStatement(){return this.getRuleContext(0,rx)}resignalStatement(){return this.getRuleContext(0,ix)}diagnosticsStatement(){return this.getRuleContext(0,Ex)}get ruleIndex(){return FC.RULE_utilityStatement}accept(t){return t.visitUtilityStatement?t.visitUtilityStatement(this):t.visitChildren(this)}},QC=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}uid(){return this.getRuleContext(0,Vx)}DATABASE(){return this.getToken(FC.DATABASE,0)}SCHEMA(){return this.getToken(FC.SCHEMA,0)}ifNotExists(){return this.getRuleContext(0,Dk)}createDatabaseOption(t){return void 0===t?this.getRuleContexts(A_):this.getRuleContext(t,A_)}get ruleIndex(){return FC.RULE_createDatabase}accept(t){return t.visitCreateDatabase?t.visitCreateDatabase(this):t.visitChildren(this)}},JC=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}EVENT(){return this.getToken(FC.EVENT,0)}fullId(){return this.getRuleContext(0,Sx)}ON(t){return void 0===t?this.getTokens(FC.ON):this.getToken(FC.ON,t)}SCHEDULE(){return this.getToken(FC.SCHEDULE,0)}scheduleExpression(){return this.getRuleContext(0,I_)}DO(){return this.getToken(FC.DO,0)}routineBody(){return this.getRuleContext(0,HD)}ownerStatement(){return this.getRuleContext(0,O_)}ifNotExists(){return this.getRuleContext(0,Dk)}COMPLETION(){return this.getToken(FC.COMPLETION,0)}PRESERVE(){return this.getToken(FC.PRESERVE,0)}enableType(){return this.getRuleContext(0,P_)}COMMENT(){return this.getToken(FC.COMMENT,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}NOT(){return this.getToken(FC.NOT,0)}get ruleIndex(){return FC.RULE_createEvent}accept(t){return t.visitCreateEvent?t.visitCreateEvent(this):t.visitChildren(this)}},ZC=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}INDEX(){return this.getToken(FC.INDEX,0)}uid(){return this.getRuleContext(0,Vx)}ON(){return this.getToken(FC.ON,0)}tableName(){return this.getRuleContext(0,lx)}indexColumnNames(){return this.getRuleContext(0,uk)}indexType(){return this.getRuleContext(0,M_)}indexOption(t){return void 0===t?this.getRuleContexts(d_):this.getRuleContext(t,d_)}ALGORITHM(t){return void 0===t?this.getTokens(FC.ALGORITHM):this.getToken(FC.ALGORITHM,t)}LOCK(t){return void 0===t?this.getTokens(FC.LOCK):this.getToken(FC.LOCK,t)}ONLINE(){return this.getToken(FC.ONLINE,0)}OFFLINE(){return this.getToken(FC.OFFLINE,0)}UNIQUE(){return this.getToken(FC.UNIQUE,0)}FULLTEXT(){return this.getToken(FC.FULLTEXT,0)}SPATIAL(){return this.getToken(FC.SPATIAL,0)}DEFAULT(t){return void 0===t?this.getTokens(FC.DEFAULT):this.getToken(FC.DEFAULT,t)}INPLACE(t){return void 0===t?this.getTokens(FC.INPLACE):this.getToken(FC.INPLACE,t)}COPY(t){return void 0===t?this.getTokens(FC.COPY):this.getToken(FC.COPY,t)}NONE(t){return void 0===t?this.getTokens(FC.NONE):this.getToken(FC.NONE,t)}SHARED(t){return void 0===t?this.getTokens(FC.SHARED):this.getToken(FC.SHARED,t)}EXCLUSIVE(t){return void 0===t?this.getTokens(FC.EXCLUSIVE):this.getToken(FC.EXCLUSIVE,t)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}get ruleIndex(){return FC.RULE_createIndex}accept(t){return t.visitCreateIndex?t.visitCreateIndex(this):t.visitChildren(this)}},qC=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}LOGFILE(){return this.getToken(FC.LOGFILE,0)}GROUP(){return this.getToken(FC.GROUP,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}ADD(){return this.getToken(FC.ADD,0)}UNDOFILE(){return this.getToken(FC.UNDOFILE,0)}ENGINE(){return this.getToken(FC.ENGINE,0)}engineName(){return this.getRuleContext(0,yx)}STRING_LITERAL(t){return void 0===t?this.getTokens(FC.STRING_LITERAL):this.getToken(FC.STRING_LITERAL,t)}INITIAL_SIZE(){return this.getToken(FC.INITIAL_SIZE,0)}UNDO_BUFFER_SIZE(){return this.getToken(FC.UNDO_BUFFER_SIZE,0)}REDO_BUFFER_SIZE(){return this.getToken(FC.REDO_BUFFER_SIZE,0)}NODEGROUP(){return this.getToken(FC.NODEGROUP,0)}WAIT(){return this.getToken(FC.WAIT,0)}COMMENT(){return this.getToken(FC.COMMENT,0)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}fileSizeLiteral(t){return void 0===t?this.getRuleContexts(Jx):this.getRuleContext(t,Jx)}get ruleIndex(){return FC.RULE_createLogfileGroup}accept(t){return t.visitCreateLogfileGroup?t.visitCreateLogfileGroup(this):t.visitChildren(this)}},jC=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}PROCEDURE(){return this.getToken(FC.PROCEDURE,0)}fullId(){return this.getRuleContext(0,Sx)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}routineBody(){return this.getRuleContext(0,HD)}ownerStatement(){return this.getRuleContext(0,O_)}procedureParameter(t){return void 0===t?this.getRuleContexts(U_):this.getRuleContext(t,U_)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}routineOption(t){return void 0===t?this.getRuleContexts(D_):this.getRuleContext(t,D_)}get ruleIndex(){return FC.RULE_createProcedure}accept(t){return t.visitCreateProcedure?t.visitCreateProcedure(this):t.visitChildren(this)}},zC=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}FUNCTION(){return this.getToken(FC.FUNCTION,0)}fullId(){return this.getRuleContext(0,Sx)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}RETURNS(){return this.getToken(FC.RETURNS,0)}dataType(){return this.getRuleContext(0,tk)}routineBody(){return this.getRuleContext(0,HD)}returnStatement(){return this.getRuleContext(0,wD)}ownerStatement(){return this.getRuleContext(0,O_)}AGGREGATE(){return this.getToken(FC.AGGREGATE,0)}ifNotExists(){return this.getRuleContext(0,Dk)}functionParameter(t){return void 0===t?this.getRuleContexts(m_):this.getRuleContext(t,m_)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}routineOption(t){return void 0===t?this.getRuleContexts(D_):this.getRuleContext(t,D_)}get ruleIndex(){return FC.RULE_createFunction}accept(t){return t.visitCreateFunction?t.visitCreateFunction(this):t.visitChildren(this)}},$C=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}ROLE(){return this.getToken(FC.ROLE,0)}newRoleNameList(){return this.getRuleContext(0,Nx)}ifNotExists(){return this.getRuleContext(0,Dk)}get ruleIndex(){return FC.RULE_createRole}accept(t){return t.visitCreateRole?t.visitCreateRole(this):t.visitChildren(this)}},t_=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}SERVER(){return this.getToken(FC.SERVER,0)}uid(){return this.getRuleContext(0,Vx)}FOREIGN(){return this.getToken(FC.FOREIGN,0)}DATA(){return this.getToken(FC.DATA,0)}WRAPPER(){return this.getToken(FC.WRAPPER,0)}OPTIONS(){return this.getToken(FC.OPTIONS,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}serverOption(t){return void 0===t?this.getRuleContexts(G_):this.getRuleContext(t,G_)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}MYSQL(){return this.getToken(FC.MYSQL,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_createServer}accept(t){return t.visitCreateServer?t.visitCreateServer(this):t.visitChildren(this)}},e_=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_createTable}copyFrom(t){super.copyFrom(t)}},s_=class extends e_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CREATE(){return this.getToken(FC.CREATE,0)}TABLE(){return this.getToken(FC.TABLE,0)}tableName(t){return void 0===t?this.getRuleContexts(lx):this.getRuleContext(t,lx)}LIKE(){return this.getToken(FC.LIKE,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}TEMPORARY(){return this.getToken(FC.TEMPORARY,0)}ifNotExists(){return this.getRuleContext(0,Dk)}accept(t){return t.visitCopyCreateTable?t.visitCopyCreateTable(this):t.visitChildren(this)}},a_=class extends e_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CREATE(){return this.getToken(FC.CREATE,0)}TABLE(){return this.getToken(FC.TABLE,0)}tableName(){return this.getRuleContext(0,lx)}createDefinitions(){return this.getRuleContext(0,F_)}TEMPORARY(){return this.getToken(FC.TEMPORARY,0)}ifNotExists(){return this.getRuleContext(0,Dk)}tableOption(t){return void 0===t?this.getRuleContexts(SP):this.getRuleContext(t,SP)}partitionDefinitions(){return this.getRuleContext(0,jP)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitColumnCreateTable?t.visitColumnCreateTable(this):t.visitChildren(this)}},r_=class extends e_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CREATE(){return this.getToken(FC.CREATE,0)}TABLE(){return this.getToken(FC.TABLE,0)}tableName(){return this.getRuleContext(0,lx)}selectStatement(){return this.getRuleContext(0,rU)}TEMPORARY(){return this.getToken(FC.TEMPORARY,0)}ifNotExists(){return this.getRuleContext(0,Dk)}createDefinitions(){return this.getRuleContext(0,F_)}tableOption(t){return void 0===t?this.getRuleContexts(SP):this.getRuleContext(t,SP)}partitionDefinitions(){return this.getRuleContext(0,jP)}AS(){return this.getToken(FC.AS,0)}IGNORE(){return this.getToken(FC.IGNORE,0)}REPLACE(){return this.getToken(FC.REPLACE,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitQueryCreateTable?t.visitQueryCreateTable(this):t.visitChildren(this)}},i_=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}uid(){return this.getRuleContext(0,Vx)}ADD(){return this.getToken(FC.ADD,0)}DATAFILE(){return this.getToken(FC.DATAFILE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}FILE_BLOCK_SIZE(){return this.getToken(FC.FILE_BLOCK_SIZE,0)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}ENGINE(){return this.getToken(FC.ENGINE,0)}engineName(){return this.getRuleContext(0,yx)}fileSizeLiteral(){return this.getRuleContext(0,Jx)}get ruleIndex(){return FC.RULE_createTablespaceInnodb}accept(t){return t.visitCreateTablespaceInnodb?t.visitCreateTablespaceInnodb(this):t.visitChildren(this)}},c_=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}ADD(){return this.getToken(FC.ADD,0)}DATAFILE(){return this.getToken(FC.DATAFILE,0)}USE(){return this.getToken(FC.USE,0)}LOGFILE(){return this.getToken(FC.LOGFILE,0)}GROUP(){return this.getToken(FC.GROUP,0)}ENGINE(){return this.getToken(FC.ENGINE,0)}engineName(){return this.getRuleContext(0,yx)}STRING_LITERAL(t){return void 0===t?this.getTokens(FC.STRING_LITERAL):this.getToken(FC.STRING_LITERAL,t)}EXTENT_SIZE(){return this.getToken(FC.EXTENT_SIZE,0)}INITIAL_SIZE(){return this.getToken(FC.INITIAL_SIZE,0)}AUTOEXTEND_SIZE(){return this.getToken(FC.AUTOEXTEND_SIZE,0)}MAX_SIZE(){return this.getToken(FC.MAX_SIZE,0)}NODEGROUP(){return this.getToken(FC.NODEGROUP,0)}WAIT(){return this.getToken(FC.WAIT,0)}COMMENT(){return this.getToken(FC.COMMENT,0)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}fileSizeLiteral(t){return void 0===t?this.getRuleContexts(Jx):this.getRuleContext(t,Jx)}get ruleIndex(){return FC.RULE_createTablespaceNdb}accept(t){return t.visitCreateTablespaceNdb?t.visitCreateTablespaceNdb(this):t.visitChildren(this)}},n_=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}TRIGGER(){return this.getToken(FC.TRIGGER,0)}ON(){return this.getToken(FC.ON,0)}tableName(){return this.getRuleContext(0,lx)}FOR(){return this.getToken(FC.FOR,0)}EACH(){return this.getToken(FC.EACH,0)}ROW(){return this.getToken(FC.ROW,0)}routineBody(){return this.getRuleContext(0,HD)}fullId(t){return void 0===t?this.getRuleContexts(Sx):this.getRuleContext(t,Sx)}BEFORE(){return this.getToken(FC.BEFORE,0)}AFTER(){return this.getToken(FC.AFTER,0)}INSERT(){return this.getToken(FC.INSERT,0)}UPDATE(){return this.getToken(FC.UPDATE,0)}DELETE(){return this.getToken(FC.DELETE,0)}ownerStatement(){return this.getRuleContext(0,O_)}ifNotExists(){return this.getRuleContext(0,Dk)}FOLLOWS(){return this.getToken(FC.FOLLOWS,0)}PRECEDES(){return this.getToken(FC.PRECEDES,0)}get ruleIndex(){return FC.RULE_createTrigger}accept(t){return t.visitCreateTrigger?t.visitCreateTrigger(this):t.visitChildren(this)}},h_=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(FC.WITH,0)}commonTableExpressions(){return this.getRuleContext(0,E_)}RECURSIVE(){return this.getToken(FC.RECURSIVE,0)}get ruleIndex(){return FC.RULE_withClause}accept(t){return t.visitWithClause?t.visitWithClause(this):t.visitChildren(this)}},E_=class t extends ga{constructor(t,e){super(t,e)}cteName(){return this.getRuleContext(0,T_)}AS(){return this.getToken(FC.AS,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}dmlStatement(){return this.getRuleContext(0,YC)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}cteColumnName(t){return void 0===t?this.getRuleContexts(o_):this.getRuleContext(t,o_)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}commonTableExpressions(){return this.getRuleContext(0,t)}get ruleIndex(){return FC.RULE_commonTableExpressions}accept(t){return t.visitCommonTableExpressions?t.visitCommonTableExpressions(this):t.visitChildren(this)}},T_=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_cteName}accept(t){return t.visitCteName?t.visitCteName(this):t.visitChildren(this)}},o_=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_cteColumnName}accept(t){return t.visitCteColumnName?t.visitCteColumnName(this):t.visitChildren(this)}},R_=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}VIEW(){return this.getToken(FC.VIEW,0)}fullId(){return this.getRuleContext(0,Sx)}AS(){return this.getToken(FC.AS,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}selectStatement(){return this.getRuleContext(0,rU)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}orReplace(){return this.getRuleContext(0,pk)}ALGORITHM(){return this.getToken(FC.ALGORITHM,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}ownerStatement(){return this.getRuleContext(0,O_)}SQL(){return this.getToken(FC.SQL,0)}SECURITY(){return this.getToken(FC.SECURITY,0)}uidList(){return this.getRuleContext(0,lk)}UNDEFINED(){return this.getToken(FC.UNDEFINED,0)}MERGE(){return this.getToken(FC.MERGE,0)}TEMPTABLE(){return this.getToken(FC.TEMPTABLE,0)}DEFINER(){return this.getToken(FC.DEFINER,0)}INVOKER(){return this.getToken(FC.INVOKER,0)}withClause(){return this.getRuleContext(0,h_)}WITH(){return this.getToken(FC.WITH,0)}CHECK(){return this.getToken(FC.CHECK,0)}OPTION(){return this.getToken(FC.OPTION,0)}CASCADED(){return this.getToken(FC.CASCADED,0)}LOCAL(){return this.getToken(FC.LOCAL,0)}get ruleIndex(){return FC.RULE_createView}accept(t){return t.visitCreateView?t.visitCreateView(this):t.visitChildren(this)}},A_=class extends ga{constructor(t,e){super(t,e)}charSet(){return this.getRuleContext(0,S_)}charsetName(){return this.getRuleContext(0,vx)}DEFAULT(t){return void 0===t?this.getTokens(FC.DEFAULT):this.getToken(FC.DEFAULT,t)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}COLLATE(){return this.getToken(FC.COLLATE,0)}collationName(){return this.getRuleContext(0,Bx)}ENCRYPTION(){return this.getToken(FC.ENCRYPTION,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}READ(){return this.getToken(FC.READ,0)}ONLY(){return this.getToken(FC.ONLY,0)}ZERO_DECIMAL(){return this.getToken(FC.ZERO_DECIMAL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}get ruleIndex(){return FC.RULE_createDatabaseOption}accept(t){return t.visitCreateDatabaseOption?t.visitCreateDatabaseOption(this):t.visitChildren(this)}},S_=class extends ga{constructor(t,e){super(t,e)}CHARACTER(){return this.getToken(FC.CHARACTER,0)}SET(){return this.getToken(FC.SET,0)}CHARSET(){return this.getToken(FC.CHARSET,0)}CHAR(){return this.getToken(FC.CHAR,0)}get ruleIndex(){return FC.RULE_charSet}accept(t){return t.visitCharSet?t.visitCharSet(this):t.visitChildren(this)}},l_=class extends ga{constructor(t,e){super(t,e)}CURRENT_USER(){return this.getToken(FC.CURRENT_USER,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}get ruleIndex(){return FC.RULE_currentUserExpression}accept(t){return t.visitCurrentUserExpression?t.visitCurrentUserExpression(this):t.visitChildren(this)}},O_=class extends ga{constructor(t,e){super(t,e)}DEFINER(){return this.getToken(FC.DEFINER,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}userName(){return this.getRuleContext(0,Gx)}currentUserExpression(){return this.getRuleContext(0,l_)}get ruleIndex(){return FC.RULE_ownerStatement}accept(t){return t.visitOwnerStatement?t.visitOwnerStatement(this):t.visitChildren(this)}},I_=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_scheduleExpression}copyFrom(t){super.copyFrom(t)}},u_=class extends I_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}AT(){return this.getToken(FC.AT,0)}timestampValue(){return this.getRuleContext(0,L_)}intervalExpr(t){return void 0===t?this.getRuleContexts(C_):this.getRuleContext(t,C_)}accept(t){return t.visitPreciseSchedule?t.visitPreciseSchedule(this):t.visitChildren(this)}},N_=class extends I_{constructor(t){super(t.parent,t.invokingState),this._startIntervals=[],this._endIntervals=[],super.copyFrom(t)}EVERY(){return this.getToken(FC.EVERY,0)}intervalType(){return this.getRuleContext(0,__)}decimalLiteral(){return this.getRuleContext(0,Qx)}expression(){return this.getRuleContext(0,NH)}STARTS(){return this.getToken(FC.STARTS,0)}ENDS(){return this.getToken(FC.ENDS,0)}timestampValue(t){return void 0===t?this.getRuleContexts(L_):this.getRuleContext(t,L_)}intervalExpr(t){return void 0===t?this.getRuleContexts(C_):this.getRuleContext(t,C_)}accept(t){return t.visitIntervalSchedule?t.visitIntervalSchedule(this):t.visitChildren(this)}},L_=class extends ga{constructor(t,e){super(t,e)}CURRENT_TIMESTAMP(){return this.getToken(FC.CURRENT_TIMESTAMP,0)}stringLiteral(){return this.getRuleContext(0,Zx)}decimalLiteral(){return this.getRuleContext(0,Qx)}expression(){return this.getRuleContext(0,NH)}get ruleIndex(){return FC.RULE_timestampValue}accept(t){return t.visitTimestampValue?t.visitTimestampValue(this):t.visitChildren(this)}},C_=class extends ga{constructor(t,e){super(t,e)}PLUS(){return this.getToken(FC.PLUS,0)}INTERVAL(){return this.getToken(FC.INTERVAL,0)}intervalType(){return this.getRuleContext(0,__)}decimalLiteral(){return this.getRuleContext(0,Qx)}expression(){return this.getRuleContext(0,NH)}get ruleIndex(){return FC.RULE_intervalExpr}accept(t){return t.visitIntervalExpr?t.visitIntervalExpr(this):t.visitChildren(this)}},__=class extends ga{constructor(t,e){super(t,e)}intervalTypeBase(){return this.getRuleContext(0,hG)}YEAR(){return this.getToken(FC.YEAR,0)}YEAR_MONTH(){return this.getToken(FC.YEAR_MONTH,0)}DAY_HOUR(){return this.getToken(FC.DAY_HOUR,0)}DAY_MINUTE(){return this.getToken(FC.DAY_MINUTE,0)}DAY_SECOND(){return this.getToken(FC.DAY_SECOND,0)}HOUR_MINUTE(){return this.getToken(FC.HOUR_MINUTE,0)}HOUR_SECOND(){return this.getToken(FC.HOUR_SECOND,0)}MINUTE_SECOND(){return this.getToken(FC.MINUTE_SECOND,0)}SECOND_MICROSECOND(){return this.getToken(FC.SECOND_MICROSECOND,0)}MINUTE_MICROSECOND(){return this.getToken(FC.MINUTE_MICROSECOND,0)}HOUR_MICROSECOND(){return this.getToken(FC.HOUR_MICROSECOND,0)}DAY_MICROSECOND(){return this.getToken(FC.DAY_MICROSECOND,0)}get ruleIndex(){return FC.RULE_intervalType}accept(t){return t.visitIntervalType?t.visitIntervalType(this):t.visitChildren(this)}},P_=class extends ga{constructor(t,e){super(t,e)}ENABLE(){return this.getToken(FC.ENABLE,0)}DISABLE(){return this.getToken(FC.DISABLE,0)}ON(){return this.getToken(FC.ON,0)}SLAVE(){return this.getToken(FC.SLAVE,0)}get ruleIndex(){return FC.RULE_enableType}accept(t){return t.visitEnableType?t.visitEnableType(this):t.visitChildren(this)}},M_=class extends ga{constructor(t,e){super(t,e)}USING(){return this.getToken(FC.USING,0)}BTREE(){return this.getToken(FC.BTREE,0)}HASH(){return this.getToken(FC.HASH,0)}get ruleIndex(){return FC.RULE_indexType}accept(t){return t.visitIndexType?t.visitIndexType(this):t.visitChildren(this)}},d_=class extends ga{constructor(t,e){super(t,e)}KEY_BLOCK_SIZE(){return this.getToken(FC.KEY_BLOCK_SIZE,0)}fileSizeLiteral(){return this.getRuleContext(0,Jx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}indexType(){return this.getRuleContext(0,M_)}WITH(){return this.getToken(FC.WITH,0)}PARSER(){return this.getToken(FC.PARSER,0)}uid(){return this.getRuleContext(0,Vx)}COMMENT(){return this.getToken(FC.COMMENT,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}VISIBLE(){return this.getToken(FC.VISIBLE,0)}INVISIBLE(){return this.getToken(FC.INVISIBLE,0)}ENGINE_ATTRIBUTE(){return this.getToken(FC.ENGINE_ATTRIBUTE,0)}SECONDARY_ENGINE_ATTRIBUTE(){return this.getToken(FC.SECONDARY_ENGINE_ATTRIBUTE,0)}get ruleIndex(){return FC.RULE_indexOption}accept(t){return t.visitIndexOption?t.visitIndexOption(this):t.visitChildren(this)}},U_=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}dataType(){return this.getRuleContext(0,tk)}IN(){return this.getToken(FC.IN,0)}OUT(){return this.getToken(FC.OUT,0)}INOUT(){return this.getToken(FC.INOUT,0)}get ruleIndex(){return FC.RULE_procedureParameter}accept(t){return t.visitProcedureParameter?t.visitProcedureParameter(this):t.visitChildren(this)}},m_=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}dataType(){return this.getRuleContext(0,tk)}get ruleIndex(){return FC.RULE_functionParameter}accept(t){return t.visitFunctionParameter?t.visitFunctionParameter(this):t.visitChildren(this)}},D_=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_routineOption}copyFrom(t){super.copyFrom(t)}},p_=class extends D_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DETERMINISTIC(){return this.getToken(FC.DETERMINISTIC,0)}NOT(){return this.getToken(FC.NOT,0)}accept(t){return t.visitRoutineBehavior?t.visitRoutineBehavior(this):t.visitChildren(this)}},g_=class extends D_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LANGUAGE(){return this.getToken(FC.LANGUAGE,0)}SQL(){return this.getToken(FC.SQL,0)}accept(t){return t.visitRoutineLanguage?t.visitRoutineLanguage(this):t.visitChildren(this)}},x_=class extends D_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}COMMENT(){return this.getToken(FC.COMMENT,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}accept(t){return t.visitRoutineComment?t.visitRoutineComment(this):t.visitChildren(this)}},k_=class extends D_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SQL(){return this.getToken(FC.SQL,0)}SECURITY(){return this.getToken(FC.SECURITY,0)}DEFINER(){return this.getToken(FC.DEFINER,0)}INVOKER(){return this.getToken(FC.INVOKER,0)}accept(t){return t.visitRoutineSecurity?t.visitRoutineSecurity(this):t.visitChildren(this)}},H_=class extends D_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CONTAINS(){return this.getToken(FC.CONTAINS,0)}SQL(){return this.getToken(FC.SQL,0)}NO(){return this.getToken(FC.NO,0)}READS(){return this.getToken(FC.READS,0)}DATA(){return this.getToken(FC.DATA,0)}MODIFIES(){return this.getToken(FC.MODIFIES,0)}accept(t){return t.visitRoutineData?t.visitRoutineData(this):t.visitChildren(this)}},G_=class extends ga{constructor(t,e){super(t,e)}HOST(){return this.getToken(FC.HOST,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}DATABASE(){return this.getToken(FC.DATABASE,0)}USER(){return this.getToken(FC.USER,0)}PASSWORD(){return this.getToken(FC.PASSWORD,0)}SOCKET(){return this.getToken(FC.SOCKET,0)}OWNER(){return this.getToken(FC.OWNER,0)}PORT(){return this.getToken(FC.PORT,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}get ruleIndex(){return FC.RULE_serverOption}accept(t){return t.visitServerOption?t.visitServerOption(this):t.visitChildren(this)}},F_=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}createDefinition(t){return void 0===t?this.getRuleContexts(v_):this.getRuleContext(t,v_)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_createDefinitions}accept(t){return t.visitCreateDefinitions?t.visitCreateDefinitions(this):t.visitChildren(this)}},v_=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_createDefinition}copyFrom(t){super.copyFrom(t)}},B_=class extends v_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}fullColumnName(){return this.getRuleContext(0,Px)}columnDefinition(){return this.getRuleContext(0,Y_)}accept(t){return t.visitColumnDeclaration?t.visitColumnDeclaration(this):t.visitChildren(this)}},y_=class extends v_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}tableConstraint(){return this.getRuleContext(0,aP)}NOT(){return this.getToken(FC.NOT,0)}ENFORCED(){return this.getToken(FC.ENFORCED,0)}accept(t){return t.visitConstraintDeclaration?t.visitConstraintDeclaration(this):t.visitChildren(this)}},f_=class extends v_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}indexColumnDefinition(){return this.getRuleContext(0,oP)}accept(t){return t.visitIndexDeclaration?t.visitIndexDeclaration(this):t.visitChildren(this)}},Y_=class extends ga{constructor(t,e){super(t,e)}dataType(){return this.getRuleContext(0,tk)}columnConstraint(t){return void 0===t?this.getRuleContexts(w_):this.getRuleContext(t,w_)}NOT(){return this.getToken(FC.NOT,0)}ENFORCED(){return this.getToken(FC.ENFORCED,0)}get ruleIndex(){return FC.RULE_columnDefinition}accept(t){return t.visitColumnDefinition?t.visitColumnDefinition(this):t.visitChildren(this)}},w_=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_columnConstraint}copyFrom(t){super.copyFrom(t)}},b_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}STORAGE(){return this.getToken(FC.STORAGE,0)}DISK(){return this.getToken(FC.DISK,0)}MEMORY(){return this.getToken(FC.MEMORY,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}accept(t){return t.visitStorageColumnConstraint?t.visitStorageColumnConstraint(this):t.visitChildren(this)}},W_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}VISIBLE(){return this.getToken(FC.VISIBLE,0)}accept(t){return t.visitVisibilityColumnConstraint?t.visitVisibilityColumnConstraint(this):t.visitChildren(this)}},V_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}AUTO_INCREMENT(){return this.getToken(FC.AUTO_INCREMENT,0)}ON(){return this.getToken(FC.ON,0)}UPDATE(){return this.getToken(FC.UPDATE,0)}currentTimestamp(){return this.getRuleContext(0,dk)}accept(t){return t.visitAutoIncrementColumnConstraint?t.visitAutoIncrementColumnConstraint(this):t.visitChildren(this)}},X_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}COMMENT(){return this.getToken(FC.COMMENT,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}accept(t){return t.visitCommentColumnConstraint?t.visitCommentColumnConstraint(this):t.visitChildren(this)}},K_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}UNIQUE(){return this.getToken(FC.UNIQUE,0)}KEY(){return this.getToken(FC.KEY,0)}accept(t){return t.visitUniqueKeyColumnConstraint?t.visitUniqueKeyColumnConstraint(this):t.visitChildren(this)}},Q_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SERIAL(){return this.getToken(FC.SERIAL,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}VALUE(){return this.getToken(FC.VALUE,0)}accept(t){return t.visitSerialDefaultColumnConstraint?t.visitSerialDefaultColumnConstraint(this):t.visitChildren(this)}},J_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}AS(){return this.getToken(FC.AS,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}GENERATED(){return this.getToken(FC.GENERATED,0)}ALWAYS(){return this.getToken(FC.ALWAYS,0)}VIRTUAL(){return this.getToken(FC.VIRTUAL,0)}STORED(){return this.getToken(FC.STORED,0)}accept(t){return t.visitGeneratedColumnConstraint?t.visitGeneratedColumnConstraint(this):t.visitChildren(this)}},Z_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}COLUMN_FORMAT(){return this.getToken(FC.COLUMN_FORMAT,0)}FIXED(){return this.getToken(FC.FIXED,0)}DYNAMIC(){return this.getToken(FC.DYNAMIC,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}accept(t){return t.visitFormatColumnConstraint?t.visitFormatColumnConstraint(this):t.visitChildren(this)}},q_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}COLLATE(){return this.getToken(FC.COLLATE,0)}collationName(){return this.getRuleContext(0,Bx)}accept(t){return t.visitCollateColumnConstraint?t.visitCollateColumnConstraint(this):t.visitChildren(this)}},j_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}KEY(){return this.getToken(FC.KEY,0)}PRIMARY(){return this.getToken(FC.PRIMARY,0)}accept(t){return t.visitPrimaryKeyColumnConstraint?t.visitPrimaryKeyColumnConstraint(this):t.visitChildren(this)}},z_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CHECK(){return this.getToken(FC.CHECK,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}CONSTRAINT(){return this.getToken(FC.CONSTRAINT,0)}uid(){return this.getRuleContext(0,Vx)}accept(t){return t.visitCheckColumnConstraint?t.visitCheckColumnConstraint(this):t.visitChildren(this)}},$_=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}nullNotnull(){return this.getRuleContext(0,zx)}accept(t){return t.visitNullColumnConstraint?t.visitNullColumnConstraint(this):t.visitChildren(this)}},tP=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}defaultValue(){return this.getRuleContext(0,Mk)}accept(t){return t.visitDefaultColumnConstraint?t.visitDefaultColumnConstraint(this):t.visitChildren(this)}},eP=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}referenceDefinition(){return this.getRuleContext(0,hP)}accept(t){return t.visitReferenceColumnConstraint?t.visitReferenceColumnConstraint(this):t.visitChildren(this)}},sP=class extends w_{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}INVISIBLE(){return this.getToken(FC.INVISIBLE,0)}accept(t){return t.visitInvisibilityColumnConstraint?t.visitInvisibilityColumnConstraint(this):t.visitChildren(this)}},aP=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_tableConstraint}copyFrom(t){super.copyFrom(t)}},rP=class extends aP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}UNIQUE(){return this.getToken(FC.UNIQUE,0)}indexColumnNames(){return this.getRuleContext(0,uk)}CONSTRAINT(){return this.getToken(FC.CONSTRAINT,0)}indexType(){return this.getRuleContext(0,M_)}indexOption(t){return void 0===t?this.getRuleContexts(d_):this.getRuleContext(t,d_)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}INDEX(){return this.getToken(FC.INDEX,0)}KEY(){return this.getToken(FC.KEY,0)}accept(t){return t.visitUniqueKeyTableConstraint?t.visitUniqueKeyTableConstraint(this):t.visitChildren(this)}},iP=class extends aP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CHECK(){return this.getToken(FC.CHECK,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}CONSTRAINT(){return this.getToken(FC.CONSTRAINT,0)}uid(){return this.getRuleContext(0,Vx)}accept(t){return t.visitCheckTableConstraint?t.visitCheckTableConstraint(this):t.visitChildren(this)}},cP=class extends aP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}PRIMARY(){return this.getToken(FC.PRIMARY,0)}KEY(){return this.getToken(FC.KEY,0)}indexColumnNames(){return this.getRuleContext(0,uk)}CONSTRAINT(){return this.getToken(FC.CONSTRAINT,0)}indexType(){return this.getRuleContext(0,M_)}indexOption(t){return void 0===t?this.getRuleContexts(d_):this.getRuleContext(t,d_)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}accept(t){return t.visitPrimaryKeyTableConstraint?t.visitPrimaryKeyTableConstraint(this):t.visitChildren(this)}},nP=class extends aP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}FOREIGN(){return this.getToken(FC.FOREIGN,0)}KEY(){return this.getToken(FC.KEY,0)}indexColumnNames(){return this.getRuleContext(0,uk)}referenceDefinition(){return this.getRuleContext(0,hP)}CONSTRAINT(){return this.getToken(FC.CONSTRAINT,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}accept(t){return t.visitForeignKeyTableConstraint?t.visitForeignKeyTableConstraint(this):t.visitChildren(this)}},hP=class extends ga{constructor(t,e){super(t,e)}REFERENCES(){return this.getToken(FC.REFERENCES,0)}tableName(){return this.getRuleContext(0,lx)}indexColumnNames(){return this.getRuleContext(0,uk)}MATCH(){return this.getToken(FC.MATCH,0)}referenceAction(){return this.getRuleContext(0,EP)}FULL(){return this.getToken(FC.FULL,0)}PARTIAL(){return this.getToken(FC.PARTIAL,0)}SIMPLE(){return this.getToken(FC.SIMPLE,0)}get ruleIndex(){return FC.RULE_referenceDefinition}accept(t){return t.visitReferenceDefinition?t.visitReferenceDefinition(this):t.visitChildren(this)}},EP=class extends ga{constructor(t,e){super(t,e)}ON(t){return void 0===t?this.getTokens(FC.ON):this.getToken(FC.ON,t)}DELETE(){return this.getToken(FC.DELETE,0)}referenceControlType(t){return void 0===t?this.getRuleContexts(TP):this.getRuleContext(t,TP)}UPDATE(){return this.getToken(FC.UPDATE,0)}get ruleIndex(){return FC.RULE_referenceAction}accept(t){return t.visitReferenceAction?t.visitReferenceAction(this):t.visitChildren(this)}},TP=class extends ga{constructor(t,e){super(t,e)}RESTRICT(){return this.getToken(FC.RESTRICT,0)}CASCADE(){return this.getToken(FC.CASCADE,0)}SET(){return this.getToken(FC.SET,0)}NULL_LITERAL(){return this.getToken(FC.NULL_LITERAL,0)}NO(){return this.getToken(FC.NO,0)}ACTION(){return this.getToken(FC.ACTION,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}get ruleIndex(){return FC.RULE_referenceControlType}accept(t){return t.visitReferenceControlType?t.visitReferenceControlType(this):t.visitChildren(this)}},oP=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_indexColumnDefinition}copyFrom(t){super.copyFrom(t)}},RP=class extends oP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}indexColumnNames(){return this.getRuleContext(0,uk)}FULLTEXT(){return this.getToken(FC.FULLTEXT,0)}SPATIAL(){return this.getToken(FC.SPATIAL,0)}uid(){return this.getRuleContext(0,Vx)}indexOption(t){return void 0===t?this.getRuleContexts(d_):this.getRuleContext(t,d_)}INDEX(){return this.getToken(FC.INDEX,0)}KEY(){return this.getToken(FC.KEY,0)}accept(t){return t.visitSpecialIndexDeclaration?t.visitSpecialIndexDeclaration(this):t.visitChildren(this)}},AP=class extends oP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}indexColumnNames(){return this.getRuleContext(0,uk)}INDEX(){return this.getToken(FC.INDEX,0)}KEY(){return this.getToken(FC.KEY,0)}uid(){return this.getRuleContext(0,Vx)}indexType(){return this.getRuleContext(0,M_)}indexOption(t){return void 0===t?this.getRuleContexts(d_):this.getRuleContext(t,d_)}accept(t){return t.visitSimpleIndexDeclaration?t.visitSimpleIndexDeclaration(this):t.visitChildren(this)}},SP=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_tableOption}copyFrom(t){super.copyFrom(t)}},lP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ENGINE(){return this.getToken(FC.ENGINE,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}engineName(){return this.getRuleContext(0,yx)}accept(t){return t.visitTableOptionEngine?t.visitTableOptionEngine(this):t.visitChildren(this)}},OP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MAX_ROWS(){return this.getToken(FC.MAX_ROWS,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionMaxRows?t.visitTableOptionMaxRows(this):t.visitChildren(this)}},IP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}COLLATE(){return this.getToken(FC.COLLATE,0)}collationName(){return this.getRuleContext(0,Bx)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionCollate?t.visitTableOptionCollate(this):t.visitChildren(this)}},uP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}STATS_PERSISTENT(){return this.getToken(FC.STATS_PERSISTENT,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}ZERO_DECIMAL(){return this.getToken(FC.ZERO_DECIMAL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionPersistent?t.visitTableOptionPersistent(this):t.visitChildren(this)}},NP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}uid(){return this.getRuleContext(0,Vx)}tablespaceStorage(){return this.getRuleContext(0,qP)}accept(t){return t.visitTableOptionTablespace?t.visitTableOptionTablespace(this):t.visitChildren(this)}},LP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}AUTOEXTEND_SIZE(){return this.getToken(FC.AUTOEXTEND_SIZE,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionAutoextendSize?t.visitTableOptionAutoextendSize(this):t.visitChildren(this)}},CP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}PAGE_COMPRESSED(){return this.getToken(FC.PAGE_COMPRESSED,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}ZERO_DECIMAL(){return this.getToken(FC.ZERO_DECIMAL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionPageCompressed?t.visitTableOptionPageCompressed(this):t.visitChildren(this)}},_P=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}START(){return this.getToken(FC.START,0)}TRANSACTION(){return this.getToken(FC.TRANSACTION,0)}accept(t){return t.visitTableOptionStartTransaction?t.visitTableOptionStartTransaction(this):t.visitChildren(this)}},PP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}PACK_KEYS(){return this.getToken(FC.PACK_KEYS,0)}ZERO_DECIMAL(){return this.getToken(FC.ZERO_DECIMAL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionPackKeys?t.visitTableOptionPackKeys(this):t.visitChildren(this)}},MP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}PASSWORD(){return this.getToken(FC.PASSWORD,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionPassword?t.visitTableOptionPassword(this):t.visitChildren(this)}},dP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}UNION(){return this.getToken(FC.UNION,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}tables(){return this.getRuleContext(0,Ik)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionUnion?t.visitTableOptionUnion(this):t.visitChildren(this)}},UP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}STATS_SAMPLE_PAGES(){return this.getToken(FC.STATS_SAMPLE_PAGES,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionSamplePage?t.visitTableOptionSamplePage(this):t.visitChildren(this)}},mP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}charSet(){return this.getRuleContext(0,S_)}charsetName(){return this.getRuleContext(0,vx)}DEFAULT(t){return void 0===t?this.getTokens(FC.DEFAULT):this.getToken(FC.DEFAULT,t)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionCharset?t.visitTableOptionCharset(this):t.visitChildren(this)}},DP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}INDEX(){return this.getToken(FC.INDEX,0)}DIRECTORY(){return this.getToken(FC.DIRECTORY,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionIndexDirectory?t.visitTableOptionIndexDirectory(this):t.visitChildren(this)}},pP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}TABLE_TYPE(){return this.getToken(FC.TABLE_TYPE,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}tableType(){return this.getRuleContext(0,ZP)}accept(t){return t.visitTableOptionTableType?t.visitTableOptionTableType(this):t.visitChildren(this)}},gP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}KEY_BLOCK_SIZE(){return this.getToken(FC.KEY_BLOCK_SIZE,0)}fileSizeLiteral(){return this.getRuleContext(0,Jx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionKeyBlockSize?t.visitTableOptionKeyBlockSize(this):t.visitChildren(this)}},xP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ENCRYPTION(){return this.getToken(FC.ENCRYPTION,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionEncryption?t.visitTableOptionEncryption(this):t.visitChildren(this)}},kP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DIRECTORY(){return this.getToken(FC.DIRECTORY,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}DATA(){return this.getToken(FC.DATA,0)}INDEX(){return this.getToken(FC.INDEX,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionDataDirectory?t.visitTableOptionDataDirectory(this):t.visitChildren(this)}},HP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}STATS_AUTO_RECALC(){return this.getToken(FC.STATS_AUTO_RECALC,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}ZERO_DECIMAL(){return this.getToken(FC.ZERO_DECIMAL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionRecalculation?t.visitTableOptionRecalculation(this):t.visitChildren(this)}},GP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}AUTO_INCREMENT(){return this.getToken(FC.AUTO_INCREMENT,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionAutoIncrement?t.visitTableOptionAutoIncrement(this):t.visitChildren(this)}},FP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ENCRYPTION_KEY_ID(){return this.getToken(FC.ENCRYPTION_KEY_ID,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionEncryptionKeyId?t.visitTableOptionEncryptionKeyId(this):t.visitChildren(this)}},vP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CHECKSUM(){return this.getToken(FC.CHECKSUM,0)}PAGE_CHECKSUM(){return this.getToken(FC.PAGE_CHECKSUM,0)}ZERO_DECIMAL(){return this.getToken(FC.ZERO_DECIMAL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionChecksum?t.visitTableOptionChecksum(this):t.visitChildren(this)}},BP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DELAY_KEY_WRITE(){return this.getToken(FC.DELAY_KEY_WRITE,0)}ZERO_DECIMAL(){return this.getToken(FC.ZERO_DECIMAL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionDelay?t.visitTableOptionDelay(this):t.visitChildren(this)}},yP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CONNECTION(){return this.getToken(FC.CONNECTION,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionConnection?t.visitTableOptionConnection(this):t.visitChildren(this)}},fP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}TRANSACTIONAL(){return this.getToken(FC.TRANSACTIONAL,0)}ZERO_DECIMAL(){return this.getToken(FC.ZERO_DECIMAL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionTransactional?t.visitTableOptionTransactional(this):t.visitChildren(this)}},YP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}decimalLiteral(){return this.getRuleContext(0,Qx)}PAGE_COMPRESSION_LEVEL(){return this.getToken(FC.PAGE_COMPRESSION_LEVEL,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionPageCompressionLevel?t.visitTableOptionPageCompressionLevel(this):t.visitChildren(this)}},wP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SECONDARY_ENGINE_ATTRIBUTE(){return this.getToken(FC.SECONDARY_ENGINE_ATTRIBUTE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionSecondaryEngineAttribute?t.visitTableOptionSecondaryEngineAttribute(this):t.visitChildren(this)}},bP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}COMMENT(){return this.getToken(FC.COMMENT,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionComment?t.visitTableOptionComment(this):t.visitChildren(this)}},WP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}AVG_ROW_LENGTH(){return this.getToken(FC.AVG_ROW_LENGTH,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionAverage?t.visitTableOptionAverage(this):t.visitChildren(this)}},VP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ROW_FORMAT(){return this.getToken(FC.ROW_FORMAT,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}DYNAMIC(){return this.getToken(FC.DYNAMIC,0)}FIXED(){return this.getToken(FC.FIXED,0)}COMPRESSED(){return this.getToken(FC.COMPRESSED,0)}REDUNDANT(){return this.getToken(FC.REDUNDANT,0)}COMPACT(){return this.getToken(FC.COMPACT,0)}ID(){return this.getToken(FC.ID,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionRowFormat?t.visitTableOptionRowFormat(this):t.visitChildren(this)}},XP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}COMPRESSION(){return this.getToken(FC.COMPRESSION,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}ID(){return this.getToken(FC.ID,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionCompression?t.visitTableOptionCompression(this):t.visitChildren(this)}},KP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}INSERT_METHOD(){return this.getToken(FC.INSERT_METHOD,0)}NO(){return this.getToken(FC.NO,0)}FIRST(){return this.getToken(FC.FIRST,0)}LAST(){return this.getToken(FC.LAST,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionInsertMethod?t.visitTableOptionInsertMethod(this):t.visitChildren(this)}},QP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ENGINE_ATTRIBUTE(){return this.getToken(FC.ENGINE_ATTRIBUTE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionEngineAttribute?t.visitTableOptionEngineAttribute(this):t.visitChildren(this)}},JP=class extends SP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MIN_ROWS(){return this.getToken(FC.MIN_ROWS,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitTableOptionMinRows?t.visitTableOptionMinRows(this):t.visitChildren(this)}},ZP=class extends ga{constructor(t,e){super(t,e)}MYSQL(){return this.getToken(FC.MYSQL,0)}ODBC(){return this.getToken(FC.ODBC,0)}get ruleIndex(){return FC.RULE_tableType}accept(t){return t.visitTableType?t.visitTableType(this):t.visitChildren(this)}},qP=class extends ga{constructor(t,e){super(t,e)}STORAGE(){return this.getToken(FC.STORAGE,0)}DISK(){return this.getToken(FC.DISK,0)}MEMORY(){return this.getToken(FC.MEMORY,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}get ruleIndex(){return FC.RULE_tablespaceStorage}accept(t){return t.visitTablespaceStorage?t.visitTablespaceStorage(this):t.visitChildren(this)}},jP=class extends ga{constructor(t,e){super(t,e)}PARTITION(){return this.getToken(FC.PARTITION,0)}BY(t){return void 0===t?this.getTokens(FC.BY):this.getToken(FC.BY,t)}partitionFunctionDefinition(){return this.getRuleContext(0,zP)}PARTITIONS(){return this.getToken(FC.PARTITIONS,0)}SUBPARTITION(){return this.getToken(FC.SUBPARTITION,0)}subpartitionFunctionDefinition(){return this.getRuleContext(0,aM)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}partitionDefinition(t){return void 0===t?this.getRuleContexts(cM):this.getRuleContext(t,cM)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}decimalLiteral(t){return void 0===t?this.getRuleContexts(Qx):this.getRuleContext(t,Qx)}SUBPARTITIONS(){return this.getToken(FC.SUBPARTITIONS,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_partitionDefinitions}accept(t){return t.visitPartitionDefinitions?t.visitPartitionDefinitions(this):t.visitChildren(this)}},zP=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_partitionFunctionDefinition}copyFrom(t){super.copyFrom(t)}},$P=class extends zP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}KEY(){return this.getToken(FC.KEY,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}LINEAR(){return this.getToken(FC.LINEAR,0)}ALGORITHM(){return this.getToken(FC.ALGORITHM,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}uidList(){return this.getRuleContext(0,lk)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}TWO_DECIMAL(){return this.getToken(FC.TWO_DECIMAL,0)}accept(t){return t.visitPartitionFunctionKey?t.visitPartitionFunctionKey(this):t.visitChildren(this)}},tM=class extends zP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}HASH(){return this.getToken(FC.HASH,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}LINEAR(){return this.getToken(FC.LINEAR,0)}accept(t){return t.visitPartitionFunctionHash?t.visitPartitionFunctionHash(this):t.visitChildren(this)}},eM=class extends zP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LIST(){return this.getToken(FC.LIST,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COLUMNS(){return this.getToken(FC.COLUMNS,0)}uidList(){return this.getRuleContext(0,lk)}accept(t){return t.visitPartitionFunctionList?t.visitPartitionFunctionList(this):t.visitChildren(this)}},sM=class extends zP{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}RANGE(){return this.getToken(FC.RANGE,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COLUMNS(){return this.getToken(FC.COLUMNS,0)}uidList(){return this.getRuleContext(0,lk)}accept(t){return t.visitPartitionFunctionRange?t.visitPartitionFunctionRange(this):t.visitChildren(this)}},aM=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_subpartitionFunctionDefinition}copyFrom(t){super.copyFrom(t)}},rM=class extends aM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}HASH(){return this.getToken(FC.HASH,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}LINEAR(){return this.getToken(FC.LINEAR,0)}accept(t){return t.visitSubPartitionFunctionHash?t.visitSubPartitionFunctionHash(this):t.visitChildren(this)}},iM=class extends aM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}KEY(){return this.getToken(FC.KEY,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}uidList(){return this.getRuleContext(0,lk)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}LINEAR(){return this.getToken(FC.LINEAR,0)}ALGORITHM(){return this.getToken(FC.ALGORITHM,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}TWO_DECIMAL(){return this.getToken(FC.TWO_DECIMAL,0)}accept(t){return t.visitSubPartitionFunctionKey?t.visitSubPartitionFunctionKey(this):t.visitChildren(this)}},cM=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_partitionDefinition}copyFrom(t){super.copyFrom(t)}},nM=class extends cM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}PARTITION(){return this.getToken(FC.PARTITION,0)}uid(){return this.getRuleContext(0,Vx)}VALUES(){return this.getToken(FC.VALUES,0)}LESS(){return this.getToken(FC.LESS,0)}THAN(){return this.getToken(FC.THAN,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}partitionDefinerAtom(t){return void 0===t?this.getRuleContexts(oM):this.getRuleContext(t,oM)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}partitionOption(t){return void 0===t?this.getRuleContexts(SM):this.getRuleContext(t,SM)}subpartitionDefinition(t){return void 0===t?this.getRuleContexts(AM):this.getRuleContext(t,AM)}accept(t){return t.visitPartitionComparison?t.visitPartitionComparison(this):t.visitChildren(this)}},hM=class extends cM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}PARTITION(){return this.getToken(FC.PARTITION,0)}uid(){return this.getRuleContext(0,Vx)}VALUES(){return this.getToken(FC.VALUES,0)}IN(){return this.getToken(FC.IN,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}partitionDefinerAtom(t){return void 0===t?this.getRuleContexts(oM):this.getRuleContext(t,oM)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}partitionOption(t){return void 0===t?this.getRuleContexts(SM):this.getRuleContext(t,SM)}subpartitionDefinition(t){return void 0===t?this.getRuleContexts(AM):this.getRuleContext(t,AM)}accept(t){return t.visitPartitionListAtom?t.visitPartitionListAtom(this):t.visitChildren(this)}},EM=class extends cM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}PARTITION(){return this.getToken(FC.PARTITION,0)}uid(){return this.getRuleContext(0,Vx)}VALUES(){return this.getToken(FC.VALUES,0)}IN(){return this.getToken(FC.IN,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}partitionDefinerVector(t){return void 0===t?this.getRuleContexts(RM):this.getRuleContext(t,RM)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}partitionOption(t){return void 0===t?this.getRuleContexts(SM):this.getRuleContext(t,SM)}subpartitionDefinition(t){return void 0===t?this.getRuleContexts(AM):this.getRuleContext(t,AM)}accept(t){return t.visitPartitionListVector?t.visitPartitionListVector(this):t.visitChildren(this)}},TM=class extends cM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}PARTITION(){return this.getToken(FC.PARTITION,0)}uid(){return this.getRuleContext(0,Vx)}partitionOption(t){return void 0===t?this.getRuleContexts(SM):this.getRuleContext(t,SM)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}subpartitionDefinition(t){return void 0===t?this.getRuleContexts(AM):this.getRuleContext(t,AM)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitPartitionSimple?t.visitPartitionSimple(this):t.visitChildren(this)}},oM=class extends ga{constructor(t,e){super(t,e)}constant(){return this.getRuleContext(0,$x)}expression(){return this.getRuleContext(0,NH)}MAXVALUE(){return this.getToken(FC.MAXVALUE,0)}get ruleIndex(){return FC.RULE_partitionDefinerAtom}accept(t){return t.visitPartitionDefinerAtom?t.visitPartitionDefinerAtom(this):t.visitChildren(this)}},RM=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}partitionDefinerAtom(t){return void 0===t?this.getRuleContexts(oM):this.getRuleContext(t,oM)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_partitionDefinerVector}accept(t){return t.visitPartitionDefinerVector?t.visitPartitionDefinerVector(this):t.visitChildren(this)}},AM=class extends ga{constructor(t,e){super(t,e)}SUBPARTITION(){return this.getToken(FC.SUBPARTITION,0)}uid(){return this.getRuleContext(0,Vx)}partitionOption(t){return void 0===t?this.getRuleContexts(SM):this.getRuleContext(t,SM)}get ruleIndex(){return FC.RULE_subpartitionDefinition}accept(t){return t.visitSubpartitionDefinition?t.visitSubpartitionDefinition(this):t.visitChildren(this)}},SM=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_partitionOption}copyFrom(t){super.copyFrom(t)}},lM=class extends SM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}COMMENT(){return this.getToken(FC.COMMENT,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitPartitionOptionComment?t.visitPartitionOptionComment(this):t.visitChildren(this)}},OM=class extends SM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}NODEGROUP(){return this.getToken(FC.NODEGROUP,0)}uid(){return this.getRuleContext(0,Vx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitPartitionOptionNodeGroup?t.visitPartitionOptionNodeGroup(this):t.visitChildren(this)}},IM=class extends SM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}INDEX(){return this.getToken(FC.INDEX,0)}DIRECTORY(){return this.getToken(FC.DIRECTORY,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitPartitionOptionIndexDirectory?t.visitPartitionOptionIndexDirectory(this):t.visitChildren(this)}},uM=class extends SM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MAX_ROWS(){return this.getToken(FC.MAX_ROWS,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitPartitionOptionMaxRows?t.visitPartitionOptionMaxRows(this):t.visitChildren(this)}},NM=class extends SM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}uid(){return this.getRuleContext(0,Vx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitPartitionOptionTablespace?t.visitPartitionOptionTablespace(this):t.visitChildren(this)}},LM=class extends SM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ENGINE(){return this.getToken(FC.ENGINE,0)}engineName(){return this.getRuleContext(0,yx)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}STORAGE(){return this.getToken(FC.STORAGE,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitPartitionOptionEngine?t.visitPartitionOptionEngine(this):t.visitChildren(this)}},CM=class extends SM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MIN_ROWS(){return this.getToken(FC.MIN_ROWS,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitPartitionOptionMinRows?t.visitPartitionOptionMinRows(this):t.visitChildren(this)}},_M=class extends SM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DATA(){return this.getToken(FC.DATA,0)}DIRECTORY(){return this.getToken(FC.DIRECTORY,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitPartitionOptionDataDirectory?t.visitPartitionOptionDataDirectory(this):t.visitChildren(this)}},PM=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_alterDatabase}copyFrom(t){super.copyFrom(t)}},MM=class extends PM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ALTER(){return this.getToken(FC.ALTER,0)}databaseName(){return this.getRuleContext(0,Mx)}UPGRADE(){return this.getToken(FC.UPGRADE,0)}DATA(){return this.getToken(FC.DATA,0)}DIRECTORY(){return this.getToken(FC.DIRECTORY,0)}NAME(){return this.getToken(FC.NAME,0)}DATABASE(){return this.getToken(FC.DATABASE,0)}SCHEMA(){return this.getToken(FC.SCHEMA,0)}accept(t){return t.visitAlterUpgradeName?t.visitAlterUpgradeName(this):t.visitChildren(this)}},dM=class extends PM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ALTER(){return this.getToken(FC.ALTER,0)}databaseName(){return this.getRuleContext(0,Mx)}DATABASE(){return this.getToken(FC.DATABASE,0)}SCHEMA(){return this.getToken(FC.SCHEMA,0)}createDatabaseOption(t){return void 0===t?this.getRuleContexts(A_):this.getRuleContext(t,A_)}accept(t){return t.visitAlterSimpleDatabase?t.visitAlterSimpleDatabase(this):t.visitChildren(this)}},UM=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(FC.ALTER,0)}EVENT(){return this.getToken(FC.EVENT,0)}fullId(t){return void 0===t?this.getRuleContexts(Sx):this.getRuleContext(t,Sx)}ownerStatement(){return this.getRuleContext(0,O_)}ON(t){return void 0===t?this.getTokens(FC.ON):this.getToken(FC.ON,t)}SCHEDULE(){return this.getToken(FC.SCHEDULE,0)}scheduleExpression(){return this.getRuleContext(0,I_)}COMPLETION(){return this.getToken(FC.COMPLETION,0)}PRESERVE(){return this.getToken(FC.PRESERVE,0)}RENAME(){return this.getToken(FC.RENAME,0)}TO(){return this.getToken(FC.TO,0)}enableType(){return this.getRuleContext(0,P_)}COMMENT(){return this.getToken(FC.COMMENT,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}DO(){return this.getToken(FC.DO,0)}routineBody(){return this.getRuleContext(0,HD)}NOT(){return this.getToken(FC.NOT,0)}get ruleIndex(){return FC.RULE_alterEvent}accept(t){return t.visitAlterEvent?t.visitAlterEvent(this):t.visitChildren(this)}},mM=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(FC.ALTER,0)}FUNCTION(){return this.getToken(FC.FUNCTION,0)}fullId(){return this.getRuleContext(0,Sx)}routineOption(t){return void 0===t?this.getRuleContexts(D_):this.getRuleContext(t,D_)}get ruleIndex(){return FC.RULE_alterFunction}accept(t){return t.visitAlterFunction?t.visitAlterFunction(this):t.visitChildren(this)}},DM=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(FC.ALTER,0)}INSTANCE(){return this.getToken(FC.INSTANCE,0)}ROTATE(){return this.getToken(FC.ROTATE,0)}INNODB(){return this.getToken(FC.INNODB,0)}MASTER(){return this.getToken(FC.MASTER,0)}KEY(){return this.getToken(FC.KEY,0)}get ruleIndex(){return FC.RULE_alterInstance}accept(t){return t.visitAlterInstance?t.visitAlterInstance(this):t.visitChildren(this)}},pM=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(FC.ALTER,0)}LOGFILE(){return this.getToken(FC.LOGFILE,0)}GROUP(){return this.getToken(FC.GROUP,0)}uid(){return this.getRuleContext(0,Vx)}ADD(){return this.getToken(FC.ADD,0)}UNDOFILE(){return this.getToken(FC.UNDOFILE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}ENGINE(){return this.getToken(FC.ENGINE,0)}engineName(){return this.getRuleContext(0,yx)}INITIAL_SIZE(){return this.getToken(FC.INITIAL_SIZE,0)}fileSizeLiteral(){return this.getRuleContext(0,Jx)}WAIT(){return this.getToken(FC.WAIT,0)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}get ruleIndex(){return FC.RULE_alterLogfileGroup}accept(t){return t.visitAlterLogfileGroup?t.visitAlterLogfileGroup(this):t.visitChildren(this)}},gM=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(FC.ALTER,0)}PROCEDURE(){return this.getToken(FC.PROCEDURE,0)}fullId(){return this.getRuleContext(0,Sx)}routineOption(t){return void 0===t?this.getRuleContexts(D_):this.getRuleContext(t,D_)}get ruleIndex(){return FC.RULE_alterProcedure}accept(t){return t.visitAlterProcedure?t.visitAlterProcedure(this):t.visitChildren(this)}},xM=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(FC.ALTER,0)}SERVER(){return this.getToken(FC.SERVER,0)}uid(){return this.getRuleContext(0,Vx)}OPTIONS(){return this.getToken(FC.OPTIONS,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}serverOption(t){return void 0===t?this.getRuleContexts(G_):this.getRuleContext(t,G_)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_alterServer}accept(t){return t.visitAlterServer?t.visitAlterServer(this):t.visitChildren(this)}},kM=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(FC.ALTER,0)}TABLE(){return this.getToken(FC.TABLE,0)}tableName(){return this.getRuleContext(0,lx)}IGNORE(){return this.getToken(FC.IGNORE,0)}waitNowaitClause(){return this.getRuleContext(0,gk)}alterSpecification(t){return void 0===t?this.getRuleContexts(FM):this.getRuleContext(t,FM)}partitionDefinitions(){return this.getRuleContext(0,jP)}ONLINE(){return this.getToken(FC.ONLINE,0)}OFFLINE(){return this.getToken(FC.OFFLINE,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_alterTable}accept(t){return t.visitAlterTable?t.visitAlterTable(this):t.visitChildren(this)}},HM=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(FC.ALTER,0)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}uid(){return this.getRuleContext(0,Vx)}DATAFILE(){return this.getToken(FC.DATAFILE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}ENGINE(){return this.getToken(FC.ENGINE,0)}engineName(){return this.getRuleContext(0,yx)}ADD(){return this.getToken(FC.ADD,0)}DROP(){return this.getToken(FC.DROP,0)}INITIAL_SIZE(){return this.getToken(FC.INITIAL_SIZE,0)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}fileSizeLiteral(){return this.getRuleContext(0,Jx)}WAIT(){return this.getToken(FC.WAIT,0)}get ruleIndex(){return FC.RULE_alterTablespace}accept(t){return t.visitAlterTablespace?t.visitAlterTablespace(this):t.visitChildren(this)}},GM=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(FC.ALTER,0)}VIEW(){return this.getToken(FC.VIEW,0)}fullId(){return this.getRuleContext(0,Sx)}AS(){return this.getToken(FC.AS,0)}selectStatement(){return this.getRuleContext(0,rU)}ALGORITHM(){return this.getToken(FC.ALGORITHM,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}ownerStatement(){return this.getRuleContext(0,O_)}SQL(){return this.getToken(FC.SQL,0)}SECURITY(){return this.getToken(FC.SECURITY,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}uidList(){return this.getRuleContext(0,lk)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}WITH(){return this.getToken(FC.WITH,0)}CHECK(){return this.getToken(FC.CHECK,0)}OPTION(){return this.getToken(FC.OPTION,0)}UNDEFINED(){return this.getToken(FC.UNDEFINED,0)}MERGE(){return this.getToken(FC.MERGE,0)}TEMPTABLE(){return this.getToken(FC.TEMPTABLE,0)}DEFINER(){return this.getToken(FC.DEFINER,0)}INVOKER(){return this.getToken(FC.INVOKER,0)}CASCADED(){return this.getToken(FC.CASCADED,0)}LOCAL(){return this.getToken(FC.LOCAL,0)}get ruleIndex(){return FC.RULE_alterView}accept(t){return t.visitAlterView?t.visitAlterView(this):t.visitChildren(this)}},FM=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_alterSpecification}copyFrom(t){super.copyFrom(t)}},vM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ALTER(){return this.getToken(FC.ALTER,0)}uid(){return this.getRuleContext(0,Vx)}SET(){return this.getToken(FC.SET,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}DROP(){return this.getToken(FC.DROP,0)}COLUMN(){return this.getToken(FC.COLUMN,0)}VISIBLE(){return this.getToken(FC.VISIBLE,0)}INVISIBLE(){return this.getToken(FC.INVISIBLE,0)}stringLiteral(){return this.getRuleContext(0,Zx)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitAlterByAlterColumnDefault?t.visitAlterByAlterColumnDefault(this):t.visitChildren(this)}},BM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DISABLE(){return this.getToken(FC.DISABLE,0)}KEYS(){return this.getToken(FC.KEYS,0)}accept(t){return t.visitAlterByDisableKeys?t.visitAlterByDisableKeys(this):t.visitChildren(this)}},yM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CHARACTER(){return this.getToken(FC.CHARACTER,0)}SET(){return this.getToken(FC.SET,0)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}charsetName(){return this.getRuleContext(0,vx)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}COLLATE(){return this.getToken(FC.COLLATE,0)}collationName(){return this.getRuleContext(0,Bx)}accept(t){return t.visitAlterByDefaultCharset?t.visitAlterByDefaultCharset(this):t.visitChildren(this)}},fM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}RENAME(){return this.getToken(FC.RENAME,0)}COLUMN(){return this.getToken(FC.COLUMN,0)}TO(){return this.getToken(FC.TO,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}accept(t){return t.visitAlterByRenameColumn?t.visitAlterByRenameColumn(this):t.visitChildren(this)}},YM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CONVERT(){return this.getToken(FC.CONVERT,0)}TO(){return this.getToken(FC.TO,0)}charsetName(){return this.getRuleContext(0,vx)}CHARSET(){return this.getToken(FC.CHARSET,0)}CHARACTER(){return this.getToken(FC.CHARACTER,0)}SET(){return this.getToken(FC.SET,0)}COLLATE(){return this.getToken(FC.COLLATE,0)}collationName(){return this.getRuleContext(0,Bx)}accept(t){return t.visitAlterByConvertCharset?t.visitAlterByConvertCharset(this):t.visitChildren(this)}},wM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(FC.ADD,0)}FOREIGN(){return this.getToken(FC.FOREIGN,0)}KEY(){return this.getToken(FC.KEY,0)}indexColumnNames(){return this.getRuleContext(0,uk)}referenceDefinition(){return this.getRuleContext(0,hP)}CONSTRAINT(){return this.getToken(FC.CONSTRAINT,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}accept(t){return t.visitAlterByAddForeignKey?t.visitAlterByAddForeignKey(this):t.visitChildren(this)}},bM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}RENAME(){return this.getToken(FC.RENAME,0)}indexName(){return this.getRuleContext(0,dx)}TO(){return this.getToken(FC.TO,0)}uid(){return this.getRuleContext(0,Vx)}INDEX(){return this.getToken(FC.INDEX,0)}KEY(){return this.getToken(FC.KEY,0)}accept(t){return t.visitAlterByRenameIndex?t.visitAlterByRenameIndex(this):t.visitChildren(this)}},WM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}RENAME(){return this.getToken(FC.RENAME,0)}uid(){return this.getRuleContext(0,Vx)}fullId(){return this.getRuleContext(0,Sx)}TO(){return this.getToken(FC.TO,0)}AS(){return this.getToken(FC.AS,0)}accept(t){return t.visitAlterByRename?t.visitAlterByRename(this):t.visitChildren(this)}},VM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}IMPORT(){return this.getToken(FC.IMPORT,0)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}accept(t){return t.visitAlterByImportTablespace?t.visitAlterByImportTablespace(this):t.visitChildren(this)}},XM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(FC.ADD,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}createDefinition(t){return void 0===t?this.getRuleContexts(v_):this.getRuleContext(t,v_)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COLUMN(){return this.getToken(FC.COLUMN,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitAlterByAddDefinitions?t.visitAlterByAddDefinitions(this):t.visitChildren(this)}},KM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ALTER(){return this.getToken(FC.ALTER,0)}CHECK(){return this.getToken(FC.CHECK,0)}uid(){return this.getRuleContext(0,Vx)}stringLiteral(){return this.getRuleContext(0,Zx)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}CONSTRAINT(){return this.getToken(FC.CONSTRAINT,0)}NOT(){return this.getToken(FC.NOT,0)}ENFORCED(){return this.getToken(FC.ENFORCED,0)}constraintName(){return this.getRuleContext(0,Ux)}accept(t){return t.visitAlterByAlterCheckTableConstraint?t.visitAlterByAlterCheckTableConstraint(this):t.visitChildren(this)}},QM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DROP(){return this.getToken(FC.DROP,0)}constraintName(){return this.getRuleContext(0,Ux)}CONSTRAINT(){return this.getToken(FC.CONSTRAINT,0)}CHECK(){return this.getToken(FC.CHECK,0)}accept(t){return t.visitAlterByDropConstraintCheck?t.visitAlterByDropConstraintCheck(this):t.visitChildren(this)}},JM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(FC.ADD,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}columnDefinition(t){return void 0===t?this.getRuleContexts(Y_):this.getRuleContext(t,Y_)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COLUMN(){return this.getToken(FC.COLUMN,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitAlterByAddColumns?t.visitAlterByAddColumns(this):t.visitChildren(this)}},ZM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ALTER(){return this.getToken(FC.ALTER,0)}INDEX(){return this.getToken(FC.INDEX,0)}indexName(){return this.getRuleContext(0,dx)}VISIBLE(){return this.getToken(FC.VISIBLE,0)}INVISIBLE(){return this.getToken(FC.INVISIBLE,0)}accept(t){return t.visitAlterByAlterIndexVisibility?t.visitAlterByAlterIndexVisibility(this):t.visitChildren(this)}},qM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DROP(){return this.getToken(FC.DROP,0)}FOREIGN(){return this.getToken(FC.FOREIGN,0)}KEY(){return this.getToken(FC.KEY,0)}uid(){return this.getRuleContext(0,Vx)}accept(t){return t.visitAlterByDropForeignKey?t.visitAlterByDropForeignKey(this):t.visitChildren(this)}},jM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(FC.ADD,0)}CHECK(){return this.getToken(FC.CHECK,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}stringLiteral(){return this.getRuleContext(0,Zx)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}CONSTRAINT(){return this.getToken(FC.CONSTRAINT,0)}NOT(){return this.getToken(FC.NOT,0)}ENFORCED(){return this.getToken(FC.ENFORCED,0)}accept(t){return t.visitAlterByAddCheckTableConstraint?t.visitAlterByAddCheckTableConstraint(this):t.visitChildren(this)}},zM=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}alterPartitionSpecification(){return this.getRuleContext(0,ud)}accept(t){return t.visitAlterPartition?t.visitAlterPartition(this):t.visitChildren(this)}},$M=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(FC.ADD,0)}indexColumnNames(){return this.getRuleContext(0,uk)}INDEX(){return this.getToken(FC.INDEX,0)}KEY(){return this.getToken(FC.KEY,0)}uid(){return this.getRuleContext(0,Vx)}indexType(){return this.getRuleContext(0,M_)}indexOption(t){return void 0===t?this.getRuleContexts(d_):this.getRuleContext(t,d_)}accept(t){return t.visitAlterByAddIndex?t.visitAlterByAddIndex(this):t.visitChildren(this)}},td=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DROP(){return this.getToken(FC.DROP,0)}uid(){return this.getRuleContext(0,Vx)}COLUMN(){return this.getToken(FC.COLUMN,0)}RESTRICT(){return this.getToken(FC.RESTRICT,0)}accept(t){return t.visitAlterByDropColumn?t.visitAlterByDropColumn(this):t.visitChildren(this)}},ed=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ALTER(){return this.getToken(FC.ALTER,0)}uid(){return this.getRuleContext(0,Vx)}SET(){return this.getToken(FC.SET,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}defaultValue(){return this.getRuleContext(0,Mk)}DROP(){return this.getToken(FC.DROP,0)}COLUMN(){return this.getToken(FC.COLUMN,0)}accept(t){return t.visitAlterByChangeDefault?t.visitAlterByChangeDefault(this):t.visitChildren(this)}},sd=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}FORCE(){return this.getToken(FC.FORCE,0)}accept(t){return t.visitAlterByForce?t.visitAlterByForce(this):t.visitChildren(this)}},ad=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(FC.ADD,0)}indexColumnNames(){return this.getRuleContext(0,uk)}FULLTEXT(){return this.getToken(FC.FULLTEXT,0)}SPATIAL(){return this.getToken(FC.SPATIAL,0)}uid(){return this.getRuleContext(0,Vx)}indexOption(t){return void 0===t?this.getRuleContexts(d_):this.getRuleContext(t,d_)}INDEX(){return this.getToken(FC.INDEX,0)}KEY(){return this.getToken(FC.KEY,0)}accept(t){return t.visitAlterByAddSpecialIndex?t.visitAlterByAddSpecialIndex(this):t.visitChildren(this)}},rd=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MODIFY(){return this.getToken(FC.MODIFY,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}columnDefinition(){return this.getRuleContext(0,Y_)}COLUMN(){return this.getToken(FC.COLUMN,0)}FIRST(){return this.getToken(FC.FIRST,0)}AFTER(){return this.getToken(FC.AFTER,0)}accept(t){return t.visitAlterByModifyColumn?t.visitAlterByModifyColumn(this):t.visitChildren(this)}},id=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}tableOption(t){return void 0===t?this.getRuleContexts(SP):this.getRuleContext(t,SP)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitAlterByTableOption?t.visitAlterByTableOption(this):t.visitChildren(this)}},cd=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DROP(){return this.getToken(FC.DROP,0)}PRIMARY(){return this.getToken(FC.PRIMARY,0)}KEY(){return this.getToken(FC.KEY,0)}accept(t){return t.visitAlterByDropPrimaryKey?t.visitAlterByDropPrimaryKey(this):t.visitChildren(this)}},nd=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LOCK(){return this.getToken(FC.LOCK,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}NONE(){return this.getToken(FC.NONE,0)}SHARED(){return this.getToken(FC.SHARED,0)}EXCLUSIVE(){return this.getToken(FC.EXCLUSIVE,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitAlterByLock?t.visitAlterByLock(this):t.visitChildren(this)}},hd=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DISCARD(){return this.getToken(FC.DISCARD,0)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}accept(t){return t.visitAlterByDiscardTablespace?t.visitAlterByDiscardTablespace(this):t.visitChildren(this)}},Ed=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}VALIDATION(){return this.getToken(FC.VALIDATION,0)}WITHOUT(){return this.getToken(FC.WITHOUT,0)}WITH(){return this.getToken(FC.WITH,0)}accept(t){return t.visitAlterByValidate?t.visitAlterByValidate(this):t.visitChildren(this)}},Td=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(FC.ADD,0)}PRIMARY(){return this.getToken(FC.PRIMARY,0)}KEY(){return this.getToken(FC.KEY,0)}indexColumnNames(){return this.getRuleContext(0,uk)}CONSTRAINT(){return this.getToken(FC.CONSTRAINT,0)}indexType(){return this.getRuleContext(0,M_)}indexOption(t){return void 0===t?this.getRuleContexts(d_):this.getRuleContext(t,d_)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}accept(t){return t.visitAlterByAddPrimaryKey?t.visitAlterByAddPrimaryKey(this):t.visitChildren(this)}},od=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ENABLE(){return this.getToken(FC.ENABLE,0)}KEYS(){return this.getToken(FC.KEYS,0)}accept(t){return t.visitAlterByEnableKeys?t.visitAlterByEnableKeys(this):t.visitChildren(this)}},Rd=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ALGORITHM(){return this.getToken(FC.ALGORITHM,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}INSTANT(){return this.getToken(FC.INSTANT,0)}INPLACE(){return this.getToken(FC.INPLACE,0)}COPY(){return this.getToken(FC.COPY,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}accept(t){return t.visitAlterBySetAlgorithm?t.visitAlterBySetAlgorithm(this):t.visitChildren(this)}},Ad=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CHANGE(){return this.getToken(FC.CHANGE,0)}columnDefinition(){return this.getRuleContext(0,Y_)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}COLUMN(){return this.getToken(FC.COLUMN,0)}FIRST(){return this.getToken(FC.FIRST,0)}AFTER(){return this.getToken(FC.AFTER,0)}accept(t){return t.visitAlterByChangeColumn?t.visitAlterByChangeColumn(this):t.visitChildren(this)}},Sd=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(FC.ADD,0)}UNIQUE(){return this.getToken(FC.UNIQUE,0)}indexColumnNames(){return this.getRuleContext(0,uk)}CONSTRAINT(){return this.getToken(FC.CONSTRAINT,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}indexType(){return this.getRuleContext(0,M_)}indexOption(t){return void 0===t?this.getRuleContexts(d_):this.getRuleContext(t,d_)}INDEX(){return this.getToken(FC.INDEX,0)}KEY(){return this.getToken(FC.KEY,0)}accept(t){return t.visitAlterByAddUniqueKey?t.visitAlterByAddUniqueKey(this):t.visitChildren(this)}},ld=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DROP(){return this.getToken(FC.DROP,0)}indexName(){return this.getRuleContext(0,dx)}INDEX(){return this.getToken(FC.INDEX,0)}KEY(){return this.getToken(FC.KEY,0)}accept(t){return t.visitAlterByDropIndex?t.visitAlterByDropIndex(this):t.visitChildren(this)}},Od=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(FC.ADD,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}columnDefinition(){return this.getRuleContext(0,Y_)}COLUMN(){return this.getToken(FC.COLUMN,0)}FIRST(){return this.getToken(FC.FIRST,0)}AFTER(){return this.getToken(FC.AFTER,0)}accept(t){return t.visitAlterByAddColumn?t.visitAlterByAddColumn(this):t.visitChildren(this)}},Id=class extends FM{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ORDER(){return this.getToken(FC.ORDER,0)}BY(){return this.getToken(FC.BY,0)}uidList(){return this.getRuleContext(0,lk)}accept(t){return t.visitAlterByOrder?t.visitAlterByOrder(this):t.visitChildren(this)}},ud=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_alterPartitionSpecification}copyFrom(t){super.copyFrom(t)}},Nd=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}IMPORT(){return this.getToken(FC.IMPORT,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}uidList(){return this.getRuleContext(0,lk)}ALL(){return this.getToken(FC.ALL,0)}accept(t){return t.visitAlterByImportPartition?t.visitAlterByImportPartition(this):t.visitChildren(this)}},Ld=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DROP(){return this.getToken(FC.DROP,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}uidList(){return this.getRuleContext(0,lk)}accept(t){return t.visitAlterByDropPartition?t.visitAlterByDropPartition(this):t.visitChildren(this)}},Cd=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DISCARD(){return this.getToken(FC.DISCARD,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}uidList(){return this.getRuleContext(0,lk)}ALL(){return this.getToken(FC.ALL,0)}accept(t){return t.visitAlterByDiscardPartition?t.visitAlterByDiscardPartition(this):t.visitChildren(this)}},_d=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(FC.ADD,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}partitionDefinition(t){return void 0===t?this.getRuleContexts(cM):this.getRuleContext(t,cM)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitAlterByAddPartition?t.visitAlterByAddPartition(this):t.visitChildren(this)}},Pd=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REMOVE(){return this.getToken(FC.REMOVE,0)}PARTITIONING(){return this.getToken(FC.PARTITIONING,0)}accept(t){return t.visitAlterByRemovePartitioning?t.visitAlterByRemovePartitioning(this):t.visitChildren(this)}},Md=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}OPTIMIZE(){return this.getToken(FC.OPTIMIZE,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}uidList(){return this.getRuleContext(0,lk)}ALL(){return this.getToken(FC.ALL,0)}accept(t){return t.visitAlterByOptimizePartition?t.visitAlterByOptimizePartition(this):t.visitChildren(this)}},dd=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CHECK(){return this.getToken(FC.CHECK,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}uidList(){return this.getRuleContext(0,lk)}ALL(){return this.getToken(FC.ALL,0)}accept(t){return t.visitAlterByCheckPartition?t.visitAlterByCheckPartition(this):t.visitChildren(this)}},Ud=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}COALESCE(){return this.getToken(FC.COALESCE,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}accept(t){return t.visitAlterByCoalescePartition?t.visitAlterByCoalescePartition(this):t.visitChildren(this)}},md=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REORGANIZE(){return this.getToken(FC.REORGANIZE,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}uidList(){return this.getRuleContext(0,lk)}INTO(){return this.getToken(FC.INTO,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}partitionDefinition(t){return void 0===t?this.getRuleContexts(cM):this.getRuleContext(t,cM)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitAlterByReorganizePartition?t.visitAlterByReorganizePartition(this):t.visitChildren(this)}},Dd=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ANALYZE(){return this.getToken(FC.ANALYZE,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}uidList(){return this.getRuleContext(0,lk)}ALL(){return this.getToken(FC.ALL,0)}accept(t){return t.visitAlterByAnalyzePartition?t.visitAlterByAnalyzePartition(this):t.visitChildren(this)}},pd=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REBUILD(){return this.getToken(FC.REBUILD,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}uidList(){return this.getRuleContext(0,lk)}ALL(){return this.getToken(FC.ALL,0)}accept(t){return t.visitAlterByRebuildPartition?t.visitAlterByRebuildPartition(this):t.visitChildren(this)}},gd=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}UPGRADE(){return this.getToken(FC.UPGRADE,0)}PARTITIONING(){return this.getToken(FC.PARTITIONING,0)}accept(t){return t.visitAlterByUpgradePartitioning?t.visitAlterByUpgradePartitioning(this):t.visitChildren(this)}},xd=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}TRUNCATE(){return this.getToken(FC.TRUNCATE,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}uidList(){return this.getRuleContext(0,lk)}ALL(){return this.getToken(FC.ALL,0)}accept(t){return t.visitAlterByTruncatePartition?t.visitAlterByTruncatePartition(this):t.visitChildren(this)}},kd=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REPAIR(){return this.getToken(FC.REPAIR,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}uidList(){return this.getRuleContext(0,lk)}ALL(){return this.getToken(FC.ALL,0)}accept(t){return t.visitAlterByRepairPartition?t.visitAlterByRepairPartition(this):t.visitChildren(this)}},Hd=class extends ud{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXCHANGE(){return this.getToken(FC.EXCHANGE,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}uid(){return this.getRuleContext(0,Vx)}WITH(t){return void 0===t?this.getTokens(FC.WITH):this.getToken(FC.WITH,t)}TABLE(){return this.getToken(FC.TABLE,0)}tableName(){return this.getRuleContext(0,lx)}VALIDATION(){return this.getToken(FC.VALIDATION,0)}WITHOUT(){return this.getToken(FC.WITHOUT,0)}accept(t){return t.visitAlterByExchangePartition?t.visitAlterByExchangePartition(this):t.visitChildren(this)}},Gd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}databaseName(){return this.getRuleContext(0,Mx)}DATABASE(){return this.getToken(FC.DATABASE,0)}SCHEMA(){return this.getToken(FC.SCHEMA,0)}ifExists(){return this.getRuleContext(0,mk)}get ruleIndex(){return FC.RULE_dropDatabase}accept(t){return t.visitDropDatabase?t.visitDropDatabase(this):t.visitChildren(this)}},Fd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}EVENT(){return this.getToken(FC.EVENT,0)}fullId(){return this.getRuleContext(0,Sx)}ifExists(){return this.getRuleContext(0,mk)}get ruleIndex(){return FC.RULE_dropEvent}accept(t){return t.visitDropEvent?t.visitDropEvent(this):t.visitChildren(this)}},vd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}INDEX(){return this.getToken(FC.INDEX,0)}indexName(){return this.getRuleContext(0,dx)}ON(){return this.getToken(FC.ON,0)}tableName(){return this.getRuleContext(0,lx)}ALGORITHM(t){return void 0===t?this.getTokens(FC.ALGORITHM):this.getToken(FC.ALGORITHM,t)}LOCK(t){return void 0===t?this.getTokens(FC.LOCK):this.getToken(FC.LOCK,t)}ONLINE(){return this.getToken(FC.ONLINE,0)}OFFLINE(){return this.getToken(FC.OFFLINE,0)}DEFAULT(t){return void 0===t?this.getTokens(FC.DEFAULT):this.getToken(FC.DEFAULT,t)}INPLACE(t){return void 0===t?this.getTokens(FC.INPLACE):this.getToken(FC.INPLACE,t)}COPY(t){return void 0===t?this.getTokens(FC.COPY):this.getToken(FC.COPY,t)}NONE(t){return void 0===t?this.getTokens(FC.NONE):this.getToken(FC.NONE,t)}SHARED(t){return void 0===t?this.getTokens(FC.SHARED):this.getToken(FC.SHARED,t)}EXCLUSIVE(t){return void 0===t?this.getTokens(FC.EXCLUSIVE):this.getToken(FC.EXCLUSIVE,t)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}get ruleIndex(){return FC.RULE_dropIndex}accept(t){return t.visitDropIndex?t.visitDropIndex(this):t.visitChildren(this)}},Bd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}LOGFILE(){return this.getToken(FC.LOGFILE,0)}GROUP(){return this.getToken(FC.GROUP,0)}uid(){return this.getRuleContext(0,Vx)}ENGINE(){return this.getToken(FC.ENGINE,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}engineName(){return this.getRuleContext(0,yx)}get ruleIndex(){return FC.RULE_dropLogfileGroup}accept(t){return t.visitDropLogfileGroup?t.visitDropLogfileGroup(this):t.visitChildren(this)}},yd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}PROCEDURE(){return this.getToken(FC.PROCEDURE,0)}fullId(){return this.getRuleContext(0,Sx)}ifExists(){return this.getRuleContext(0,mk)}get ruleIndex(){return FC.RULE_dropProcedure}accept(t){return t.visitDropProcedure?t.visitDropProcedure(this):t.visitChildren(this)}},fd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}FUNCTION(){return this.getToken(FC.FUNCTION,0)}fullId(){return this.getRuleContext(0,Sx)}ifExists(){return this.getRuleContext(0,mk)}get ruleIndex(){return FC.RULE_dropFunction}accept(t){return t.visitDropFunction?t.visitDropFunction(this):t.visitChildren(this)}},Yd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}SERVER(){return this.getToken(FC.SERVER,0)}uid(){return this.getRuleContext(0,Vx)}ifExists(){return this.getRuleContext(0,mk)}get ruleIndex(){return FC.RULE_dropServer}accept(t){return t.visitDropServer?t.visitDropServer(this):t.visitChildren(this)}},wd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}TABLE(){return this.getToken(FC.TABLE,0)}tables(){return this.getRuleContext(0,Ik)}TEMPORARY(){return this.getToken(FC.TEMPORARY,0)}ifExists(){return this.getRuleContext(0,mk)}RESTRICT(){return this.getToken(FC.RESTRICT,0)}CASCADE(){return this.getToken(FC.CASCADE,0)}get ruleIndex(){return FC.RULE_dropTable}accept(t){return t.visitDropTable?t.visitDropTable(this):t.visitChildren(this)}},bd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}uid(){return this.getRuleContext(0,Vx)}ENGINE(){return this.getToken(FC.ENGINE,0)}engineName(){return this.getRuleContext(0,yx)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}get ruleIndex(){return FC.RULE_dropTablespace}accept(t){return t.visitDropTablespace?t.visitDropTablespace(this):t.visitChildren(this)}},Wd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}TRIGGER(){return this.getToken(FC.TRIGGER,0)}triggerName(){return this.getRuleContext(0,mx)}ifExists(){return this.getRuleContext(0,mk)}get ruleIndex(){return FC.RULE_dropTrigger}accept(t){return t.visitDropTrigger?t.visitDropTrigger(this):t.visitChildren(this)}},Vd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}VIEW(){return this.getToken(FC.VIEW,0)}fullId(t){return void 0===t?this.getRuleContexts(Sx):this.getRuleContext(t,Sx)}ifExists(){return this.getRuleContext(0,mk)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}RESTRICT(){return this.getToken(FC.RESTRICT,0)}CASCADE(){return this.getToken(FC.CASCADE,0)}get ruleIndex(){return FC.RULE_dropView}accept(t){return t.visitDropView?t.visitDropView(this):t.visitChildren(this)}},Xd=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}ROLE(){return this.getToken(FC.ROLE,0)}roleNameList(){return this.getRuleContext(0,Cx)}ifExists(){return this.getRuleContext(0,mk)}get ruleIndex(){return FC.RULE_dropRole}accept(t){return t.visitDropRole?t.visitDropRole(this):t.visitChildren(this)}},Kd=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(FC.SET,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}ROLE(){return this.getToken(FC.ROLE,0)}TO(){return this.getToken(FC.TO,0)}userNameList(){return this.getRuleContext(0,kx)}NONE(){return this.getToken(FC.NONE,0)}ALL(){return this.getToken(FC.ALL,0)}roleNameList(){return this.getRuleContext(0,Cx)}roleOption(){return this.getRuleContext(0,lp)}get ruleIndex(){return FC.RULE_setRole}accept(t){return t.visitSetRole?t.visitSetRole(this):t.visitChildren(this)}},Qd=class extends ga{constructor(t,e){super(t,e)}RENAME(){return this.getToken(FC.RENAME,0)}TABLE(){return this.getToken(FC.TABLE,0)}renameTableClause(t){return void 0===t?this.getRuleContexts(Jd):this.getRuleContext(t,Jd)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_renameTable}accept(t){return t.visitRenameTable?t.visitRenameTable(this):t.visitChildren(this)}},Jd=class extends ga{constructor(t,e){super(t,e)}tableName(t){return void 0===t?this.getRuleContexts(lx):this.getRuleContext(t,lx)}TO(){return this.getToken(FC.TO,0)}get ruleIndex(){return FC.RULE_renameTableClause}accept(t){return t.visitRenameTableClause?t.visitRenameTableClause(this):t.visitChildren(this)}},Zd=class extends ga{constructor(t,e){super(t,e)}TRUNCATE(){return this.getToken(FC.TRUNCATE,0)}tableName(){return this.getRuleContext(0,lx)}TABLE(){return this.getToken(FC.TABLE,0)}get ruleIndex(){return FC.RULE_truncateTable}accept(t){return t.visitTruncateTable?t.visitTruncateTable(this):t.visitChildren(this)}},qd=class extends ga{constructor(t,e){super(t,e)}CALL(){return this.getToken(FC.CALL,0)}fullId(){return this.getRuleContext(0,Sx)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}constants(){return this.getRuleContext(0,Ck)}expressions(){return this.getRuleContext(0,Nk)}get ruleIndex(){return FC.RULE_callStatement}accept(t){return t.visitCallStatement?t.visitCallStatement(this):t.visitChildren(this)}},jd=class extends ga{constructor(t,e){super(t,e)}singleDeleteStatement(){return this.getRuleContext(0,OU)}multipleDeleteStatement(){return this.getRuleContext(0,IU)}get ruleIndex(){return FC.RULE_deleteStatement}accept(t){return t.visitDeleteStatement?t.visitDeleteStatement(this):t.visitChildren(this)}},zd=class extends ga{constructor(t,e){super(t,e)}DO(){return this.getToken(FC.DO,0)}expressions(){return this.getRuleContext(0,Nk)}get ruleIndex(){return FC.RULE_doStatement}accept(t){return t.visitDoStatement?t.visitDoStatement(this):t.visitChildren(this)}},$d=class extends ga{constructor(t,e){super(t,e)}handlerOpenStatement(){return this.getRuleContext(0,uU)}handlerReadIndexStatement(){return this.getRuleContext(0,NU)}handlerReadStatement(){return this.getRuleContext(0,LU)}handlerCloseStatement(){return this.getRuleContext(0,CU)}get ruleIndex(){return FC.RULE_handlerStatement}accept(t){return t.visitHandlerStatement?t.visitHandlerStatement(this):t.visitChildren(this)}},tU=class extends ga{constructor(t,e){super(t,e),this._setElements=[],this._duplicatedElements=[]}INSERT(){return this.getToken(FC.INSERT,0)}tableName(){return this.getRuleContext(0,lx)}insertStatementValue(){return this.getRuleContext(0,RU)}SET(){return this.getToken(FC.SET,0)}IGNORE(){return this.getToken(FC.IGNORE,0)}INTO(){return this.getToken(FC.INTO,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}updatedElement(t){return void 0===t?this.getRuleContexts(AU):this.getRuleContext(t,AU)}ON(){return this.getToken(FC.ON,0)}DUPLICATE(){return this.getToken(FC.DUPLICATE,0)}KEY(){return this.getToken(FC.KEY,0)}UPDATE(){return this.getToken(FC.UPDATE,0)}LOW_PRIORITY(){return this.getToken(FC.LOW_PRIORITY,0)}DELAYED(){return this.getToken(FC.DELAYED,0)}HIGH_PRIORITY(){return this.getToken(FC.HIGH_PRIORITY,0)}uid(){return this.getRuleContext(0,Vx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}uidList(){return this.getRuleContext(0,lk)}AS(){return this.getToken(FC.AS,0)}fullColumnNameList(){return this.getRuleContext(0,Ok)}get ruleIndex(){return FC.RULE_insertStatement}accept(t){return t.visitInsertStatement?t.visitInsertStatement(this):t.visitChildren(this)}},eU=class extends ga{constructor(t,e){super(t,e)}LOAD(){return this.getToken(FC.LOAD,0)}DATA(){return this.getToken(FC.DATA,0)}INFILE(){return this.getToken(FC.INFILE,0)}INTO(){return this.getToken(FC.INTO,0)}TABLE(){return this.getToken(FC.TABLE,0)}tableName(){return this.getRuleContext(0,lx)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}LOCAL(){return this.getToken(FC.LOCAL,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}uidList(){return this.getRuleContext(0,lk)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}CHARACTER(){return this.getToken(FC.CHARACTER,0)}SET(t){return void 0===t?this.getTokens(FC.SET):this.getToken(FC.SET,t)}LINES(t){return void 0===t?this.getTokens(FC.LINES):this.getToken(FC.LINES,t)}IGNORE(t){return void 0===t?this.getTokens(FC.IGNORE):this.getToken(FC.IGNORE,t)}decimalLiteral(){return this.getRuleContext(0,Qx)}assignmentField(t){return void 0===t?this.getRuleContexts(SU):this.getRuleContext(t,SU)}updatedElement(t){return void 0===t?this.getRuleContexts(AU):this.getRuleContext(t,AU)}charsetName(){return this.getRuleContext(0,vx)}LOW_PRIORITY(){return this.getToken(FC.LOW_PRIORITY,0)}CONCURRENT(){return this.getToken(FC.CONCURRENT,0)}REPLACE(){return this.getToken(FC.REPLACE,0)}FIELDS(){return this.getToken(FC.FIELDS,0)}COLUMNS(){return this.getToken(FC.COLUMNS,0)}ROWS(){return this.getToken(FC.ROWS,0)}selectFieldsInto(t){return void 0===t?this.getRuleContexts(Am):this.getRuleContext(t,Am)}selectLinesInto(t){return void 0===t?this.getRuleContexts(Sm):this.getRuleContext(t,Sm)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_loadDataStatement}accept(t){return t.visitLoadDataStatement?t.visitLoadDataStatement(this):t.visitChildren(this)}},sU=class extends ga{constructor(t,e){super(t,e)}LOAD(){return this.getToken(FC.LOAD,0)}XML(){return this.getToken(FC.XML,0)}INFILE(){return this.getToken(FC.INFILE,0)}INTO(){return this.getToken(FC.INTO,0)}TABLE(){return this.getToken(FC.TABLE,0)}tableName(){return this.getRuleContext(0,lx)}STRING_LITERAL(t){return void 0===t?this.getTokens(FC.STRING_LITERAL):this.getToken(FC.STRING_LITERAL,t)}LOCAL(){return this.getToken(FC.LOCAL,0)}CHARACTER(){return this.getToken(FC.CHARACTER,0)}SET(t){return void 0===t?this.getTokens(FC.SET):this.getToken(FC.SET,t)}ROWS(t){return void 0===t?this.getTokens(FC.ROWS):this.getToken(FC.ROWS,t)}IDENTIFIED(){return this.getToken(FC.IDENTIFIED,0)}BY(){return this.getToken(FC.BY,0)}LESS_SYMBOL(){return this.getToken(FC.LESS_SYMBOL,0)}GREATER_SYMBOL(){return this.getToken(FC.GREATER_SYMBOL,0)}IGNORE(t){return void 0===t?this.getTokens(FC.IGNORE):this.getToken(FC.IGNORE,t)}decimalLiteral(){return this.getRuleContext(0,Qx)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}assignmentField(t){return void 0===t?this.getRuleContexts(SU):this.getRuleContext(t,SU)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}updatedElement(t){return void 0===t?this.getRuleContexts(AU):this.getRuleContext(t,AU)}charsetName(){return this.getRuleContext(0,vx)}LOW_PRIORITY(){return this.getToken(FC.LOW_PRIORITY,0)}CONCURRENT(){return this.getToken(FC.CONCURRENT,0)}REPLACE(){return this.getToken(FC.REPLACE,0)}LINES(){return this.getToken(FC.LINES,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_loadXmlStatement}accept(t){return t.visitLoadXmlStatement?t.visitLoadXmlStatement(this):t.visitChildren(this)}},aU=class extends ga{constructor(t,e){super(t,e),this._setElements=[]}REPLACE(){return this.getToken(FC.REPLACE,0)}tableName(){return this.getRuleContext(0,lx)}insertStatementValue(){return this.getRuleContext(0,RU)}SET(){return this.getToken(FC.SET,0)}INTO(){return this.getToken(FC.INTO,0)}PARTITION(){return this.getToken(FC.PARTITION,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}updatedElement(t){return void 0===t?this.getRuleContexts(AU):this.getRuleContext(t,AU)}uidList(t){return void 0===t?this.getRuleContexts(lk):this.getRuleContext(t,lk)}LOW_PRIORITY(){return this.getToken(FC.LOW_PRIORITY,0)}DELAYED(){return this.getToken(FC.DELAYED,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_replaceStatement}accept(t){return t.visitReplaceStatement?t.visitReplaceStatement(this):t.visitChildren(this)}},rU=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_selectStatement}copyFrom(t){super.copyFrom(t)}},iU=class extends rU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}querySpecificationNointo(){return this.getRuleContext(0,KU)}queryExpressionNointo(){return this.getRuleContext(0,VU)}unionStatement(t){return void 0===t?this.getRuleContexts(JU):this.getRuleContext(t,JU)}UNION(){return this.getToken(FC.UNION,0)}orderByClause(){return this.getRuleContext(0,MU)}limitClause(){return this.getRuleContext(0,Lm)}lockClause(){return this.getRuleContext(0,lU)}querySpecification(){return this.getRuleContext(0,XU)}queryExpression(){return this.getRuleContext(0,WU)}ALL(){return this.getToken(FC.ALL,0)}DISTINCT(){return this.getToken(FC.DISTINCT,0)}accept(t){return t.visitUnionSelect?t.visitUnionSelect(this):t.visitChildren(this)}},cU=class extends rU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}queryExpressionNointo(){return this.getRuleContext(0,VU)}unionParenthesis(t){return void 0===t?this.getRuleContexts(QU):this.getRuleContext(t,QU)}UNION(){return this.getToken(FC.UNION,0)}queryExpression(){return this.getRuleContext(0,WU)}orderByClause(){return this.getRuleContext(0,MU)}limitClause(){return this.getRuleContext(0,Lm)}lockClause(){return this.getRuleContext(0,lU)}ALL(){return this.getToken(FC.ALL,0)}DISTINCT(){return this.getToken(FC.DISTINCT,0)}accept(t){return t.visitUnionParenthesisSelect?t.visitUnionParenthesisSelect(this):t.visitChildren(this)}},nU=class extends rU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}querySpecification(){return this.getRuleContext(0,XU)}lockClause(){return this.getRuleContext(0,lU)}accept(t){return t.visitSimpleSelect?t.visitSimpleSelect(this):t.visitChildren(this)}},hU=class extends rU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}queryExpression(){return this.getRuleContext(0,WU)}lockClause(){return this.getRuleContext(0,lU)}accept(t){return t.visitParenthesisSelect?t.visitParenthesisSelect(this):t.visitChildren(this)}},EU=class extends rU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}querySpecificationNointo(){return this.getRuleContext(0,KU)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}lateralStatement(t){return void 0===t?this.getRuleContexts(ZU):this.getRuleContext(t,ZU)}accept(t){return t.visitWithLateralStatement?t.visitWithLateralStatement(this):t.visitChildren(this)}},TU=class extends ga{constructor(t,e){super(t,e)}singleUpdateStatement(){return this.getRuleContext(0,_U)}multipleUpdateStatement(){return this.getRuleContext(0,PU)}get ruleIndex(){return FC.RULE_updateStatement}accept(t){return t.visitUpdateStatement?t.visitUpdateStatement(this):t.visitChildren(this)}},oU=class extends ga{constructor(t,e){super(t,e)}VALUES(){return this.getToken(FC.VALUES,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}expressionsWithDefaults(t){return void 0===t?this.getRuleContexts(Lk):this.getRuleContext(t,Lk)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_valuesStatement}accept(t){return t.visitValuesStatement?t.visitValuesStatement(this):t.visitChildren(this)}},RU=class extends ga{constructor(t,e){super(t,e)}selectStatement(){return this.getRuleContext(0,rU)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}VALUES(){return this.getToken(FC.VALUES,0)}VALUE(){return this.getToken(FC.VALUE,0)}expressionsWithDefaults(t){return void 0===t?this.getRuleContexts(Lk):this.getRuleContext(t,Lk)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_insertStatementValue}accept(t){return t.visitInsertStatementValue?t.visitInsertStatementValue(this):t.visitChildren(this)}},AU=class extends ga{constructor(t,e){super(t,e)}fullColumnName(){return this.getRuleContext(0,Px)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}expression(){return this.getRuleContext(0,NH)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}get ruleIndex(){return FC.RULE_updatedElement}accept(t){return t.visitUpdatedElement?t.visitUpdatedElement(this):t.visitChildren(this)}},SU=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}LOCAL_ID(){return this.getToken(FC.LOCAL_ID,0)}get ruleIndex(){return FC.RULE_assignmentField}accept(t){return t.visitAssignmentField?t.visitAssignmentField(this):t.visitChildren(this)}},lU=class extends ga{constructor(t,e){super(t,e)}FOR(){return this.getToken(FC.FOR,0)}UPDATE(){return this.getToken(FC.UPDATE,0)}LOCK(){return this.getToken(FC.LOCK,0)}IN(){return this.getToken(FC.IN,0)}SHARE(){return this.getToken(FC.SHARE,0)}MODE(){return this.getToken(FC.MODE,0)}get ruleIndex(){return FC.RULE_lockClause}accept(t){return t.visitLockClause?t.visitLockClause(this):t.visitChildren(this)}},OU=class extends ga{constructor(t,e){super(t,e)}DELETE(){return this.getToken(FC.DELETE,0)}FROM(){return this.getToken(FC.FROM,0)}tableName(){return this.getRuleContext(0,lx)}QUICK(){return this.getToken(FC.QUICK,0)}IGNORE(){return this.getToken(FC.IGNORE,0)}uid(){return this.getRuleContext(0,Vx)}PARTITION(){return this.getToken(FC.PARTITION,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}uidList(){return this.getRuleContext(0,lk)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}WHERE(){return this.getToken(FC.WHERE,0)}expression(){return this.getRuleContext(0,NH)}orderByClause(){return this.getRuleContext(0,MU)}LIMIT(){return this.getToken(FC.LIMIT,0)}limitClauseAtom(){return this.getRuleContext(0,Cm)}LOW_PRIORITY(){return this.getToken(FC.LOW_PRIORITY,0)}AS(){return this.getToken(FC.AS,0)}get ruleIndex(){return FC.RULE_singleDeleteStatement}accept(t){return t.visitSingleDeleteStatement?t.visitSingleDeleteStatement(this):t.visitChildren(this)}},IU=class extends ga{constructor(t,e){super(t,e)}DELETE(){return this.getToken(FC.DELETE,0)}tableName(t){return void 0===t?this.getRuleContexts(lx):this.getRuleContext(t,lx)}FROM(){return this.getToken(FC.FROM,0)}tableSources(){return this.getRuleContext(0,UU)}USING(){return this.getToken(FC.USING,0)}QUICK(){return this.getToken(FC.QUICK,0)}IGNORE(){return this.getToken(FC.IGNORE,0)}WHERE(){return this.getToken(FC.WHERE,0)}expression(){return this.getRuleContext(0,NH)}LOW_PRIORITY(){return this.getToken(FC.LOW_PRIORITY,0)}DOT(t){return void 0===t?this.getTokens(FC.DOT):this.getToken(FC.DOT,t)}STAR(t){return void 0===t?this.getTokens(FC.STAR):this.getToken(FC.STAR,t)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_multipleDeleteStatement}accept(t){return t.visitMultipleDeleteStatement?t.visitMultipleDeleteStatement(this):t.visitChildren(this)}},uU=class extends ga{constructor(t,e){super(t,e)}HANDLER(){return this.getToken(FC.HANDLER,0)}tableName(){return this.getRuleContext(0,lx)}OPEN(){return this.getToken(FC.OPEN,0)}uid(){return this.getRuleContext(0,Vx)}AS(){return this.getToken(FC.AS,0)}get ruleIndex(){return FC.RULE_handlerOpenStatement}accept(t){return t.visitHandlerOpenStatement?t.visitHandlerOpenStatement(this):t.visitChildren(this)}},NU=class extends ga{constructor(t,e){super(t,e)}HANDLER(){return this.getToken(FC.HANDLER,0)}tableName(){return this.getRuleContext(0,lx)}READ(){return this.getToken(FC.READ,0)}uid(){return this.getRuleContext(0,Vx)}comparisonOperator(){return this.getRuleContext(0,$H)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}constants(){return this.getRuleContext(0,Ck)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}WHERE(){return this.getToken(FC.WHERE,0)}expression(){return this.getRuleContext(0,NH)}LIMIT(){return this.getToken(FC.LIMIT,0)}limitClauseAtom(){return this.getRuleContext(0,Cm)}FIRST(){return this.getToken(FC.FIRST,0)}NEXT(){return this.getToken(FC.NEXT,0)}PREV(){return this.getToken(FC.PREV,0)}LAST(){return this.getToken(FC.LAST,0)}get ruleIndex(){return FC.RULE_handlerReadIndexStatement}accept(t){return t.visitHandlerReadIndexStatement?t.visitHandlerReadIndexStatement(this):t.visitChildren(this)}},LU=class extends ga{constructor(t,e){super(t,e)}HANDLER(){return this.getToken(FC.HANDLER,0)}tableName(){return this.getRuleContext(0,lx)}READ(){return this.getToken(FC.READ,0)}FIRST(){return this.getToken(FC.FIRST,0)}NEXT(){return this.getToken(FC.NEXT,0)}WHERE(){return this.getToken(FC.WHERE,0)}expression(){return this.getRuleContext(0,NH)}LIMIT(){return this.getToken(FC.LIMIT,0)}limitClauseAtom(){return this.getRuleContext(0,Cm)}get ruleIndex(){return FC.RULE_handlerReadStatement}accept(t){return t.visitHandlerReadStatement?t.visitHandlerReadStatement(this):t.visitChildren(this)}},CU=class extends ga{constructor(t,e){super(t,e)}HANDLER(){return this.getToken(FC.HANDLER,0)}tableName(){return this.getRuleContext(0,lx)}CLOSE(){return this.getToken(FC.CLOSE,0)}get ruleIndex(){return FC.RULE_handlerCloseStatement}accept(t){return t.visitHandlerCloseStatement?t.visitHandlerCloseStatement(this):t.visitChildren(this)}},_U=class extends ga{constructor(t,e){super(t,e)}UPDATE(){return this.getToken(FC.UPDATE,0)}tableName(){return this.getRuleContext(0,lx)}SET(){return this.getToken(FC.SET,0)}updatedElement(t){return void 0===t?this.getRuleContexts(AU):this.getRuleContext(t,AU)}IGNORE(){return this.getToken(FC.IGNORE,0)}uid(){return this.getRuleContext(0,Vx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}WHERE(){return this.getToken(FC.WHERE,0)}expression(){return this.getRuleContext(0,NH)}orderByClause(){return this.getRuleContext(0,MU)}limitClause(){return this.getRuleContext(0,Lm)}LOW_PRIORITY(){return this.getToken(FC.LOW_PRIORITY,0)}AS(){return this.getToken(FC.AS,0)}get ruleIndex(){return FC.RULE_singleUpdateStatement}accept(t){return t.visitSingleUpdateStatement?t.visitSingleUpdateStatement(this):t.visitChildren(this)}},PU=class extends ga{constructor(t,e){super(t,e)}UPDATE(){return this.getToken(FC.UPDATE,0)}tableNames(){return this.getRuleContext(0,Ox)}SET(){return this.getToken(FC.SET,0)}updatedElement(t){return void 0===t?this.getRuleContexts(AU):this.getRuleContext(t,AU)}IGNORE(){return this.getToken(FC.IGNORE,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}WHERE(){return this.getToken(FC.WHERE,0)}expression(){return this.getRuleContext(0,NH)}LOW_PRIORITY(){return this.getToken(FC.LOW_PRIORITY,0)}get ruleIndex(){return FC.RULE_multipleUpdateStatement}accept(t){return t.visitMultipleUpdateStatement?t.visitMultipleUpdateStatement(this):t.visitChildren(this)}},MU=class extends ga{constructor(t,e){super(t,e)}ORDER(){return this.getToken(FC.ORDER,0)}BY(){return this.getToken(FC.BY,0)}orderByExpression(t){return void 0===t?this.getRuleContexts(dU):this.getRuleContext(t,dU)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_orderByClause}accept(t){return t.visitOrderByClause?t.visitOrderByClause(this):t.visitChildren(this)}},dU=class extends ga{constructor(t,e){super(t,e)}expression(){return this.getRuleContext(0,NH)}ASC(){return this.getToken(FC.ASC,0)}DESC(){return this.getToken(FC.DESC,0)}get ruleIndex(){return FC.RULE_orderByExpression}accept(t){return t.visitOrderByExpression?t.visitOrderByExpression(this):t.visitChildren(this)}},UU=class extends ga{constructor(t,e){super(t,e)}tableSource(t){return void 0===t?this.getRuleContexts(mU):this.getRuleContext(t,mU)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_tableSources}accept(t){return t.visitTableSources?t.visitTableSources(this):t.visitChildren(this)}},mU=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_tableSource}copyFrom(t){super.copyFrom(t)}},DU=class extends mU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}jsonTable(){return this.getRuleContext(0,qU)}accept(t){return t.visitTableJson?t.visitTableJson(this):t.visitChildren(this)}},pU=class extends mU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}tableSourceItem(){return this.getRuleContext(0,xU)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}joinPart(t){return void 0===t?this.getRuleContexts(BU):this.getRuleContext(t,BU)}accept(t){return t.visitTableSourceNested?t.visitTableSourceNested(this):t.visitChildren(this)}},gU=class extends mU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}tableSourceItem(){return this.getRuleContext(0,xU)}joinPart(t){return void 0===t?this.getRuleContexts(BU):this.getRuleContext(t,BU)}accept(t){return t.visitTableSourceBase?t.visitTableSourceBase(this):t.visitChildren(this)}},xU=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_tableSourceItem}copyFrom(t){super.copyFrom(t)}},kU=class extends xU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}uid(){return this.getRuleContext(0,Vx)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}selectStatement(){return this.getRuleContext(0,rU)}AS(){return this.getToken(FC.AS,0)}accept(t){return t.visitSubqueryTableItem?t.visitSubqueryTableItem(this):t.visitChildren(this)}},HU=class extends xU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}tableName(){return this.getRuleContext(0,lx)}PARTITION(){return this.getToken(FC.PARTITION,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}uidList(){return this.getRuleContext(0,lk)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}indexHint(t){return void 0===t?this.getRuleContexts(FU):this.getRuleContext(t,FU)}uid(){return this.getRuleContext(0,Vx)}AS(){return this.getToken(FC.AS,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitAtomTableItem?t.visitAtomTableItem(this):t.visitChildren(this)}},GU=class extends xU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}tableSources(){return this.getRuleContext(0,UU)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitTableSourcesItem?t.visitTableSourcesItem(this):t.visitChildren(this)}},FU=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}indexNameList(){return this.getRuleContext(0,Dx)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}USE(){return this.getToken(FC.USE,0)}IGNORE(){return this.getToken(FC.IGNORE,0)}FORCE(){return this.getToken(FC.FORCE,0)}INDEX(){return this.getToken(FC.INDEX,0)}KEY(){return this.getToken(FC.KEY,0)}FOR(){return this.getToken(FC.FOR,0)}indexHintType(){return this.getRuleContext(0,vU)}get ruleIndex(){return FC.RULE_indexHint}accept(t){return t.visitIndexHint?t.visitIndexHint(this):t.visitChildren(this)}},vU=class extends ga{constructor(t,e){super(t,e)}JOIN(){return this.getToken(FC.JOIN,0)}ORDER(){return this.getToken(FC.ORDER,0)}BY(){return this.getToken(FC.BY,0)}GROUP(){return this.getToken(FC.GROUP,0)}get ruleIndex(){return FC.RULE_indexHintType}accept(t){return t.visitIndexHintType?t.visitIndexHintType(this):t.visitChildren(this)}},BU=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_joinPart}copyFrom(t){super.copyFrom(t)}},yU=class extends BU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}JOIN(){return this.getToken(FC.JOIN,0)}tableSourceItem(){return this.getRuleContext(0,xU)}LATERAL(){return this.getToken(FC.LATERAL,0)}joinSpec(t){return void 0===t?this.getRuleContexts(bU):this.getRuleContext(t,bU)}INNER(){return this.getToken(FC.INNER,0)}CROSS(){return this.getToken(FC.CROSS,0)}accept(t){return t.visitInnerJoin?t.visitInnerJoin(this):t.visitChildren(this)}},fU=class extends BU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}NATURAL(){return this.getToken(FC.NATURAL,0)}JOIN(){return this.getToken(FC.JOIN,0)}tableSourceItem(){return this.getRuleContext(0,xU)}LEFT(){return this.getToken(FC.LEFT,0)}RIGHT(){return this.getToken(FC.RIGHT,0)}OUTER(){return this.getToken(FC.OUTER,0)}accept(t){return t.visitNaturalJoin?t.visitNaturalJoin(this):t.visitChildren(this)}},YU=class extends BU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}JOIN(){return this.getToken(FC.JOIN,0)}tableSourceItem(){return this.getRuleContext(0,xU)}LEFT(){return this.getToken(FC.LEFT,0)}RIGHT(){return this.getToken(FC.RIGHT,0)}OUTER(){return this.getToken(FC.OUTER,0)}LATERAL(){return this.getToken(FC.LATERAL,0)}joinSpec(t){return void 0===t?this.getRuleContexts(bU):this.getRuleContext(t,bU)}accept(t){return t.visitOuterJoin?t.visitOuterJoin(this):t.visitChildren(this)}},wU=class extends BU{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}STRAIGHT_JOIN(){return this.getToken(FC.STRAIGHT_JOIN,0)}tableSourceItem(){return this.getRuleContext(0,xU)}ON(t){return void 0===t?this.getTokens(FC.ON):this.getToken(FC.ON,t)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}accept(t){return t.visitStraightJoin?t.visitStraightJoin(this):t.visitChildren(this)}},bU=class extends ga{constructor(t,e){super(t,e)}ON(){return this.getToken(FC.ON,0)}expression(){return this.getRuleContext(0,NH)}USING(){return this.getToken(FC.USING,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}uidList(){return this.getRuleContext(0,lk)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}get ruleIndex(){return FC.RULE_joinSpec}accept(t){return t.visitJoinSpec?t.visitJoinSpec(this):t.visitChildren(this)}},WU=class t extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}querySpecification(){return this.getRuleContext(0,XU)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}queryExpression(){return this.getRuleContext(0,t)}get ruleIndex(){return FC.RULE_queryExpression}accept(t){return t.visitQueryExpression?t.visitQueryExpression(this):t.visitChildren(this)}},VU=class t extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}querySpecificationNointo(){return this.getRuleContext(0,KU)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}queryExpressionNointo(){return this.getRuleContext(0,t)}get ruleIndex(){return FC.RULE_queryExpressionNointo}accept(t){return t.visitQueryExpressionNointo?t.visitQueryExpressionNointo(this):t.visitChildren(this)}},XU=class extends ga{constructor(t,e){super(t,e)}SELECT(){return this.getToken(FC.SELECT,0)}selectElements(){return this.getRuleContext(0,sm)}fromClause(){return this.getRuleContext(0,lm)}selectSpec(t){return void 0===t?this.getRuleContexts(em):this.getRuleContext(t,em)}selectIntoExpression(){return this.getRuleContext(0,Em)}groupByClause(){return this.getRuleContext(0,Om)}havingClause(){return this.getRuleContext(0,Im)}windowClause(){return this.getRuleContext(0,um)}orderByClause(){return this.getRuleContext(0,MU)}limitClause(){return this.getRuleContext(0,Lm)}get ruleIndex(){return FC.RULE_querySpecification}accept(t){return t.visitQuerySpecification?t.visitQuerySpecification(this):t.visitChildren(this)}},KU=class extends ga{constructor(t,e){super(t,e)}SELECT(){return this.getToken(FC.SELECT,0)}selectElements(){return this.getRuleContext(0,sm)}fromClause(){return this.getRuleContext(0,lm)}selectSpec(t){return void 0===t?this.getRuleContexts(em):this.getRuleContext(t,em)}groupByClause(){return this.getRuleContext(0,Om)}havingClause(){return this.getRuleContext(0,Im)}windowClause(){return this.getRuleContext(0,um)}orderByClause(){return this.getRuleContext(0,MU)}limitClause(){return this.getRuleContext(0,Lm)}unionStatement(){return this.getRuleContext(0,JU)}get ruleIndex(){return FC.RULE_querySpecificationNointo}accept(t){return t.visitQuerySpecificationNointo?t.visitQuerySpecificationNointo(this):t.visitChildren(this)}},QU=class extends ga{constructor(t,e){super(t,e)}UNION(){return this.getToken(FC.UNION,0)}queryExpressionNointo(){return this.getRuleContext(0,VU)}ALL(){return this.getToken(FC.ALL,0)}DISTINCT(){return this.getToken(FC.DISTINCT,0)}get ruleIndex(){return FC.RULE_unionParenthesis}accept(t){return t.visitUnionParenthesis?t.visitUnionParenthesis(this):t.visitChildren(this)}},JU=class extends ga{constructor(t,e){super(t,e)}UNION(){return this.getToken(FC.UNION,0)}querySpecificationNointo(){return this.getRuleContext(0,KU)}queryExpressionNointo(){return this.getRuleContext(0,VU)}ALL(){return this.getToken(FC.ALL,0)}DISTINCT(){return this.getToken(FC.DISTINCT,0)}get ruleIndex(){return FC.RULE_unionStatement}accept(t){return t.visitUnionStatement?t.visitUnionStatement(this):t.visitChildren(this)}},ZU=class extends ga{constructor(t,e){super(t,e)}LATERAL(){return this.getToken(FC.LATERAL,0)}querySpecificationNointo(){return this.getRuleContext(0,KU)}queryExpressionNointo(){return this.getRuleContext(0,VU)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}uid(){return this.getRuleContext(0,Vx)}AS(){return this.getToken(FC.AS,0)}get ruleIndex(){return FC.RULE_lateralStatement}accept(t){return t.visitLateralStatement?t.visitLateralStatement(this):t.visitChildren(this)}},qU=class extends ga{constructor(t,e){super(t,e)}JSON_TABLE(){return this.getToken(FC.JSON_TABLE,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}STRING_LITERAL(t){return void 0===t?this.getTokens(FC.STRING_LITERAL):this.getToken(FC.STRING_LITERAL,t)}COMMA(){return this.getToken(FC.COMMA,0)}COLUMNS(){return this.getToken(FC.COLUMNS,0)}jsonColumnList(){return this.getRuleContext(0,jU)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}uid(){return this.getRuleContext(0,Vx)}AS(){return this.getToken(FC.AS,0)}get ruleIndex(){return FC.RULE_jsonTable}accept(t){return t.visitJsonTable?t.visitJsonTable(this):t.visitChildren(this)}},jU=class extends ga{constructor(t,e){super(t,e)}jsonColumn(t){return void 0===t?this.getRuleContexts(zU):this.getRuleContext(t,zU)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_jsonColumnList}accept(t){return t.visitJsonColumnList?t.visitJsonColumnList(this):t.visitChildren(this)}},zU=class extends ga{constructor(t,e){super(t,e)}fullColumnName(){return this.getRuleContext(0,Px)}FOR(){return this.getToken(FC.FOR,0)}ORDINALITY(){return this.getToken(FC.ORDINALITY,0)}dataType(){return this.getRuleContext(0,tk)}PATH(){return this.getToken(FC.PATH,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}EXISTS(){return this.getToken(FC.EXISTS,0)}jsonOnEmpty(){return this.getRuleContext(0,$U)}jsonOnError(){return this.getRuleContext(0,tm)}NESTED(){return this.getToken(FC.NESTED,0)}COLUMNS(){return this.getToken(FC.COLUMNS,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}jsonColumnList(){return this.getRuleContext(0,jU)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}get ruleIndex(){return FC.RULE_jsonColumn}accept(t){return t.visitJsonColumn?t.visitJsonColumn(this):t.visitChildren(this)}},$U=class extends ga{constructor(t,e){super(t,e)}ON(){return this.getToken(FC.ON,0)}EMPTY(){return this.getToken(FC.EMPTY,0)}NULL_LITERAL(){return this.getToken(FC.NULL_LITERAL,0)}ERROR(){return this.getToken(FC.ERROR,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}defaultValue(){return this.getRuleContext(0,Mk)}get ruleIndex(){return FC.RULE_jsonOnEmpty}accept(t){return t.visitJsonOnEmpty?t.visitJsonOnEmpty(this):t.visitChildren(this)}},tm=class extends ga{constructor(t,e){super(t,e)}ON(){return this.getToken(FC.ON,0)}ERROR(t){return void 0===t?this.getTokens(FC.ERROR):this.getToken(FC.ERROR,t)}NULL_LITERAL(){return this.getToken(FC.NULL_LITERAL,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}defaultValue(){return this.getRuleContext(0,Mk)}get ruleIndex(){return FC.RULE_jsonOnError}accept(t){return t.visitJsonOnError?t.visitJsonOnError(this):t.visitChildren(this)}},em=class extends ga{constructor(t,e){super(t,e)}ALL(){return this.getToken(FC.ALL,0)}DISTINCT(){return this.getToken(FC.DISTINCT,0)}DISTINCTROW(){return this.getToken(FC.DISTINCTROW,0)}HIGH_PRIORITY(){return this.getToken(FC.HIGH_PRIORITY,0)}STRAIGHT_JOIN(){return this.getToken(FC.STRAIGHT_JOIN,0)}SQL_SMALL_RESULT(){return this.getToken(FC.SQL_SMALL_RESULT,0)}SQL_BIG_RESULT(){return this.getToken(FC.SQL_BIG_RESULT,0)}SQL_BUFFER_RESULT(){return this.getToken(FC.SQL_BUFFER_RESULT,0)}SQL_CACHE(){return this.getToken(FC.SQL_CACHE,0)}SQL_NO_CACHE(){return this.getToken(FC.SQL_NO_CACHE,0)}SQL_CALC_FOUND_ROWS(){return this.getToken(FC.SQL_CALC_FOUND_ROWS,0)}get ruleIndex(){return FC.RULE_selectSpec}accept(t){return t.visitSelectSpec?t.visitSelectSpec(this):t.visitChildren(this)}},sm=class extends ga{constructor(t,e){super(t,e)}selectElement(t){return void 0===t?this.getRuleContexts(rm):this.getRuleContext(t,rm)}STAR(){return this.getToken(FC.STAR,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_selectElements}accept(t){return t.visitSelectElements?t.visitSelectElements(this):t.visitChildren(this)}},am=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}AS(){return this.getToken(FC.AS,0)}get ruleIndex(){return FC.RULE_selectElementAlias}accept(t){return t.visitSelectElementAlias?t.visitSelectElementAlias(this):t.visitChildren(this)}},rm=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_selectElement}copyFrom(t){super.copyFrom(t)}},im=class extends rm{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}expression(){return this.getRuleContext(0,NH)}LOCAL_ID(){return this.getToken(FC.LOCAL_ID,0)}VAR_ASSIGN(){return this.getToken(FC.VAR_ASSIGN,0)}selectElementAlias(){return this.getRuleContext(0,am)}accept(t){return t.visitSelectExpressionElement?t.visitSelectExpressionElement(this):t.visitChildren(this)}},cm=class extends rm{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}functionCall(){return this.getRuleContext(0,xk)}selectElementAlias(){return this.getRuleContext(0,am)}accept(t){return t.visitSelectFunctionElement?t.visitSelectFunctionElement(this):t.visitChildren(this)}},nm=class extends rm{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}fullId(){return this.getRuleContext(0,Sx)}DOT(){return this.getToken(FC.DOT,0)}STAR(){return this.getToken(FC.STAR,0)}accept(t){return t.visitSelectStarElement?t.visitSelectStarElement(this):t.visitChildren(this)}},hm=class extends rm{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}fullColumnName(){return this.getRuleContext(0,Px)}selectElementAlias(){return this.getRuleContext(0,am)}accept(t){return t.visitSelectColumnElement?t.visitSelectColumnElement(this):t.visitChildren(this)}},Em=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_selectIntoExpression}copyFrom(t){super.copyFrom(t)}},Tm=class extends Em{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}INTO(){return this.getToken(FC.INTO,0)}assignmentField(t){return void 0===t?this.getRuleContexts(SU):this.getRuleContext(t,SU)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitSelectIntoVariables?t.visitSelectIntoVariables(this):t.visitChildren(this)}},om=class extends Em{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}INTO(){return this.getToken(FC.INTO,0)}OUTFILE(){return this.getToken(FC.OUTFILE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}CHARACTER(){return this.getToken(FC.CHARACTER,0)}SET(){return this.getToken(FC.SET,0)}LINES(){return this.getToken(FC.LINES,0)}charsetName(){return this.getRuleContext(0,vx)}FIELDS(){return this.getToken(FC.FIELDS,0)}COLUMNS(){return this.getToken(FC.COLUMNS,0)}selectFieldsInto(t){return void 0===t?this.getRuleContexts(Am):this.getRuleContext(t,Am)}selectLinesInto(t){return void 0===t?this.getRuleContexts(Sm):this.getRuleContext(t,Sm)}accept(t){return t.visitSelectIntoTextFile?t.visitSelectIntoTextFile(this):t.visitChildren(this)}},Rm=class extends Em{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}INTO(){return this.getToken(FC.INTO,0)}DUMPFILE(){return this.getToken(FC.DUMPFILE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}accept(t){return t.visitSelectIntoDumpFile?t.visitSelectIntoDumpFile(this):t.visitChildren(this)}},Am=class extends ga{constructor(t,e){super(t,e)}TERMINATED(){return this.getToken(FC.TERMINATED,0)}BY(){return this.getToken(FC.BY,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}ENCLOSED(){return this.getToken(FC.ENCLOSED,0)}OPTIONALLY(){return this.getToken(FC.OPTIONALLY,0)}ESCAPED(){return this.getToken(FC.ESCAPED,0)}get ruleIndex(){return FC.RULE_selectFieldsInto}accept(t){return t.visitSelectFieldsInto?t.visitSelectFieldsInto(this):t.visitChildren(this)}},Sm=class extends ga{constructor(t,e){super(t,e)}STARTING(){return this.getToken(FC.STARTING,0)}BY(){return this.getToken(FC.BY,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}TERMINATED(){return this.getToken(FC.TERMINATED,0)}get ruleIndex(){return FC.RULE_selectLinesInto}accept(t){return t.visitSelectLinesInto?t.visitSelectLinesInto(this):t.visitChildren(this)}},lm=class extends ga{constructor(t,e){super(t,e)}FROM(){return this.getToken(FC.FROM,0)}tableSources(){return this.getRuleContext(0,UU)}WHERE(){return this.getToken(FC.WHERE,0)}expression(){return this.getRuleContext(0,NH)}get ruleIndex(){return FC.RULE_fromClause}accept(t){return t.visitFromClause?t.visitFromClause(this):t.visitChildren(this)}},Om=class extends ga{constructor(t,e){super(t,e)}GROUP(){return this.getToken(FC.GROUP,0)}BY(){return this.getToken(FC.BY,0)}groupByItem(t){return void 0===t?this.getRuleContexts(Nm):this.getRuleContext(t,Nm)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}WITH(){return this.getToken(FC.WITH,0)}ROLLUP(){return this.getToken(FC.ROLLUP,0)}get ruleIndex(){return FC.RULE_groupByClause}accept(t){return t.visitGroupByClause?t.visitGroupByClause(this):t.visitChildren(this)}},Im=class extends ga{constructor(t,e){super(t,e)}HAVING(){return this.getToken(FC.HAVING,0)}expression(){return this.getRuleContext(0,NH)}get ruleIndex(){return FC.RULE_havingClause}accept(t){return t.visitHavingClause?t.visitHavingClause(this):t.visitChildren(this)}},um=class extends ga{constructor(t,e){super(t,e)}WINDOW(){return this.getToken(FC.WINDOW,0)}windowName(t){return void 0===t?this.getRuleContexts(hH):this.getRuleContext(t,hH)}AS(t){return void 0===t?this.getTokens(FC.AS):this.getToken(FC.AS,t)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}windowSpec(t){return void 0===t?this.getRuleContexts(nH):this.getRuleContext(t,nH)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_windowClause}accept(t){return t.visitWindowClause?t.visitWindowClause(this):t.visitChildren(this)}},Nm=class extends ga{constructor(t,e){super(t,e)}expression(){return this.getRuleContext(0,NH)}ASC(){return this.getToken(FC.ASC,0)}DESC(){return this.getToken(FC.DESC,0)}get ruleIndex(){return FC.RULE_groupByItem}accept(t){return t.visitGroupByItem?t.visitGroupByItem(this):t.visitChildren(this)}},Lm=class extends ga{constructor(t,e){super(t,e)}LIMIT(){return this.getToken(FC.LIMIT,0)}OFFSET(){return this.getToken(FC.OFFSET,0)}limitClauseAtom(t){return void 0===t?this.getRuleContexts(Cm):this.getRuleContext(t,Cm)}COMMA(){return this.getToken(FC.COMMA,0)}get ruleIndex(){return FC.RULE_limitClause}accept(t){return t.visitLimitClause?t.visitLimitClause(this):t.visitChildren(this)}},Cm=class extends ga{constructor(t,e){super(t,e)}decimalLiteral(){return this.getRuleContext(0,Qx)}mysqlVariable(){return this.getRuleContext(0,Fx)}simpleId(){return this.getRuleContext(0,Xx)}get ruleIndex(){return FC.RULE_limitClauseAtom}accept(t){return t.visitLimitClauseAtom?t.visitLimitClauseAtom(this):t.visitChildren(this)}},_m=class extends ga{constructor(t,e){super(t,e)}START(){return this.getToken(FC.START,0)}TRANSACTION(){return this.getToken(FC.TRANSACTION,0)}transactionMode(t){return void 0===t?this.getRuleContexts(Hm):this.getRuleContext(t,Hm)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_startTransaction}accept(t){return t.visitStartTransaction?t.visitStartTransaction(this):t.visitChildren(this)}},Pm=class extends ga{constructor(t,e){super(t,e)}BEGIN(){return this.getToken(FC.BEGIN,0)}WORK(){return this.getToken(FC.WORK,0)}get ruleIndex(){return FC.RULE_beginWork}accept(t){return t.visitBeginWork?t.visitBeginWork(this):t.visitChildren(this)}},Mm=class extends ga{constructor(t,e){super(t,e)}COMMIT(){return this.getToken(FC.COMMIT,0)}WORK(){return this.getToken(FC.WORK,0)}AND(){return this.getToken(FC.AND,0)}CHAIN(){return this.getToken(FC.CHAIN,0)}RELEASE(){return this.getToken(FC.RELEASE,0)}NO(t){return void 0===t?this.getTokens(FC.NO):this.getToken(FC.NO,t)}get ruleIndex(){return FC.RULE_commitWork}accept(t){return t.visitCommitWork?t.visitCommitWork(this):t.visitChildren(this)}},dm=class extends ga{constructor(t,e){super(t,e)}ROLLBACK(){return this.getToken(FC.ROLLBACK,0)}WORK(){return this.getToken(FC.WORK,0)}AND(){return this.getToken(FC.AND,0)}CHAIN(){return this.getToken(FC.CHAIN,0)}RELEASE(){return this.getToken(FC.RELEASE,0)}NO(t){return void 0===t?this.getTokens(FC.NO):this.getToken(FC.NO,t)}get ruleIndex(){return FC.RULE_rollbackWork}accept(t){return t.visitRollbackWork?t.visitRollbackWork(this):t.visitChildren(this)}},Um=class extends ga{constructor(t,e){super(t,e)}SAVEPOINT(){return this.getToken(FC.SAVEPOINT,0)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_savepointStatement}accept(t){return t.visitSavepointStatement?t.visitSavepointStatement(this):t.visitChildren(this)}},mm=class extends ga{constructor(t,e){super(t,e)}ROLLBACK(){return this.getToken(FC.ROLLBACK,0)}TO(){return this.getToken(FC.TO,0)}uid(){return this.getRuleContext(0,Vx)}WORK(){return this.getToken(FC.WORK,0)}SAVEPOINT(){return this.getToken(FC.SAVEPOINT,0)}get ruleIndex(){return FC.RULE_rollbackStatement}accept(t){return t.visitRollbackStatement?t.visitRollbackStatement(this):t.visitChildren(this)}},Dm=class extends ga{constructor(t,e){super(t,e)}RELEASE(){return this.getToken(FC.RELEASE,0)}SAVEPOINT(){return this.getToken(FC.SAVEPOINT,0)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_releaseStatement}accept(t){return t.visitReleaseStatement?t.visitReleaseStatement(this):t.visitChildren(this)}},pm=class extends ga{constructor(t,e){super(t,e)}LOCK(){return this.getToken(FC.LOCK,0)}lockTableElement(t){return void 0===t?this.getRuleContexts(Gm):this.getRuleContext(t,Gm)}TABLE(){return this.getToken(FC.TABLE,0)}TABLES(){return this.getToken(FC.TABLES,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}waitNowaitClause(){return this.getRuleContext(0,gk)}get ruleIndex(){return FC.RULE_lockTables}accept(t){return t.visitLockTables?t.visitLockTables(this):t.visitChildren(this)}},gm=class extends ga{constructor(t,e){super(t,e)}UNLOCK(){return this.getToken(FC.UNLOCK,0)}TABLES(){return this.getToken(FC.TABLES,0)}get ruleIndex(){return FC.RULE_unlockTables}accept(t){return t.visitUnlockTables?t.visitUnlockTables(this):t.visitChildren(this)}},xm=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(FC.SET,0)}AUTOCOMMIT(){return this.getToken(FC.AUTOCOMMIT,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}ZERO_DECIMAL(){return this.getToken(FC.ZERO_DECIMAL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}get ruleIndex(){return FC.RULE_setAutocommitStatement}accept(t){return t.visitSetAutocommitStatement?t.visitSetAutocommitStatement(this):t.visitChildren(this)}},km=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(FC.SET,0)}TRANSACTION(){return this.getToken(FC.TRANSACTION,0)}transactionOption(t){return void 0===t?this.getRuleContexts(vm):this.getRuleContext(t,vm)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}GLOBAL(){return this.getToken(FC.GLOBAL,0)}SESSION(){return this.getToken(FC.SESSION,0)}get ruleIndex(){return FC.RULE_setTransactionStatement}accept(t){return t.visitSetTransactionStatement?t.visitSetTransactionStatement(this):t.visitChildren(this)}},Hm=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(FC.WITH,0)}CONSISTENT(){return this.getToken(FC.CONSISTENT,0)}SNAPSHOT(){return this.getToken(FC.SNAPSHOT,0)}READ(){return this.getToken(FC.READ,0)}WRITE(){return this.getToken(FC.WRITE,0)}ONLY(){return this.getToken(FC.ONLY,0)}get ruleIndex(){return FC.RULE_transactionMode}accept(t){return t.visitTransactionMode?t.visitTransactionMode(this):t.visitChildren(this)}},Gm=class extends ga{constructor(t,e){super(t,e)}tableName(){return this.getRuleContext(0,lx)}lockAction(){return this.getRuleContext(0,Fm)}uid(){return this.getRuleContext(0,Vx)}AS(){return this.getToken(FC.AS,0)}get ruleIndex(){return FC.RULE_lockTableElement}accept(t){return t.visitLockTableElement?t.visitLockTableElement(this):t.visitChildren(this)}},Fm=class extends ga{constructor(t,e){super(t,e)}READ(){return this.getToken(FC.READ,0)}LOCAL(){return this.getToken(FC.LOCAL,0)}WRITE(){return this.getToken(FC.WRITE,0)}LOW_PRIORITY(){return this.getToken(FC.LOW_PRIORITY,0)}get ruleIndex(){return FC.RULE_lockAction}accept(t){return t.visitLockAction?t.visitLockAction(this):t.visitChildren(this)}},vm=class extends ga{constructor(t,e){super(t,e)}ISOLATION(){return this.getToken(FC.ISOLATION,0)}LEVEL(){return this.getToken(FC.LEVEL,0)}transactionLevel(){return this.getRuleContext(0,Bm)}READ(){return this.getToken(FC.READ,0)}WRITE(){return this.getToken(FC.WRITE,0)}ONLY(){return this.getToken(FC.ONLY,0)}get ruleIndex(){return FC.RULE_transactionOption}accept(t){return t.visitTransactionOption?t.visitTransactionOption(this):t.visitChildren(this)}},Bm=class extends ga{constructor(t,e){super(t,e)}REPEATABLE(){return this.getToken(FC.REPEATABLE,0)}READ(){return this.getToken(FC.READ,0)}COMMITTED(){return this.getToken(FC.COMMITTED,0)}UNCOMMITTED(){return this.getToken(FC.UNCOMMITTED,0)}SERIALIZABLE(){return this.getToken(FC.SERIALIZABLE,0)}get ruleIndex(){return FC.RULE_transactionLevel}accept(t){return t.visitTransactionLevel?t.visitTransactionLevel(this):t.visitChildren(this)}},ym=class extends ga{constructor(t,e){super(t,e)}CHANGE(){return this.getToken(FC.CHANGE,0)}MASTER(){return this.getToken(FC.MASTER,0)}TO(){return this.getToken(FC.TO,0)}masterOption(t){return void 0===t?this.getRuleContexts(Qm):this.getRuleContext(t,Qm)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}channelOption(){return this.getRuleContext(0,sD)}get ruleIndex(){return FC.RULE_changeMaster}accept(t){return t.visitChangeMaster?t.visitChangeMaster(this):t.visitChildren(this)}},fm=class extends ga{constructor(t,e){super(t,e)}CHANGE(){return this.getToken(FC.CHANGE,0)}REPLICATION(){return this.getToken(FC.REPLICATION,0)}FILTER(){return this.getToken(FC.FILTER,0)}replicationFilter(t){return void 0===t?this.getRuleContexts(aD):this.getRuleContext(t,aD)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_changeReplicationFilter}accept(t){return t.visitChangeReplicationFilter?t.visitChangeReplicationFilter(this):t.visitChildren(this)}},Ym=class extends ga{constructor(t,e){super(t,e)}PURGE(){return this.getToken(FC.PURGE,0)}LOGS(){return this.getToken(FC.LOGS,0)}BINARY(){return this.getToken(FC.BINARY,0)}MASTER(){return this.getToken(FC.MASTER,0)}TO(){return this.getToken(FC.TO,0)}BEFORE(){return this.getToken(FC.BEFORE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}get ruleIndex(){return FC.RULE_purgeBinaryLogs}accept(t){return t.visitPurgeBinaryLogs?t.visitPurgeBinaryLogs(this):t.visitChildren(this)}},wm=class extends ga{constructor(t,e){super(t,e)}RESET(){return this.getToken(FC.RESET,0)}MASTER(){return this.getToken(FC.MASTER,0)}get ruleIndex(){return FC.RULE_resetMaster}accept(t){return t.visitResetMaster?t.visitResetMaster(this):t.visitChildren(this)}},bm=class extends ga{constructor(t,e){super(t,e)}RESET(){return this.getToken(FC.RESET,0)}SLAVE(){return this.getToken(FC.SLAVE,0)}ALL(){return this.getToken(FC.ALL,0)}channelOption(){return this.getRuleContext(0,sD)}get ruleIndex(){return FC.RULE_resetSlave}accept(t){return t.visitResetSlave?t.visitResetSlave(this):t.visitChildren(this)}},Wm=class extends ga{constructor(t,e){super(t,e)}START(){return this.getToken(FC.START,0)}SLAVE(){return this.getToken(FC.SLAVE,0)}threadType(t){return void 0===t?this.getRuleContexts(RD):this.getRuleContext(t,RD)}UNTIL(){return this.getToken(FC.UNTIL,0)}untilOption(){return this.getRuleContext(0,AD)}connectionOption(t){return void 0===t?this.getRuleContexts(uD):this.getRuleContext(t,uD)}channelOption(){return this.getRuleContext(0,sD)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_startSlave}accept(t){return t.visitStartSlave?t.visitStartSlave(this):t.visitChildren(this)}},Vm=class extends ga{constructor(t,e){super(t,e)}STOP(){return this.getToken(FC.STOP,0)}SLAVE(){return this.getToken(FC.SLAVE,0)}threadType(t){return void 0===t?this.getRuleContexts(RD):this.getRuleContext(t,RD)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_stopSlave}accept(t){return t.visitStopSlave?t.visitStopSlave(this):t.visitChildren(this)}},Xm=class extends ga{constructor(t,e){super(t,e)}START(){return this.getToken(FC.START,0)}GROUP_REPLICATION(){return this.getToken(FC.GROUP_REPLICATION,0)}get ruleIndex(){return FC.RULE_startGroupReplication}accept(t){return t.visitStartGroupReplication?t.visitStartGroupReplication(this):t.visitChildren(this)}},Km=class extends ga{constructor(t,e){super(t,e)}STOP(){return this.getToken(FC.STOP,0)}GROUP_REPLICATION(){return this.getToken(FC.GROUP_REPLICATION,0)}get ruleIndex(){return FC.RULE_stopGroupReplication}accept(t){return t.visitStopGroupReplication?t.visitStopGroupReplication(this):t.visitChildren(this)}},Qm=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_masterOption}copyFrom(t){super.copyFrom(t)}},Jm=class extends Qm{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}stringMasterOption(){return this.getRuleContext(0,$m)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}accept(t){return t.visitMasterStringOption?t.visitMasterStringOption(this):t.visitChildren(this)}},Zm=class extends Qm{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MASTER_HEARTBEAT_PERIOD(){return this.getToken(FC.MASTER_HEARTBEAT_PERIOD,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}REAL_LITERAL(){return this.getToken(FC.REAL_LITERAL,0)}accept(t){return t.visitMasterRealOption?t.visitMasterRealOption(this):t.visitChildren(this)}},qm=class extends Qm{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}boolMasterOption(){return this.getRuleContext(0,eD)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}ZERO_DECIMAL(){return this.getToken(FC.ZERO_DECIMAL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}accept(t){return t.visitMasterBoolOption?t.visitMasterBoolOption(this):t.visitChildren(this)}},jm=class extends Qm{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}IGNORE_SERVER_IDS(){return this.getToken(FC.IGNORE_SERVER_IDS,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitMasterUidListOption?t.visitMasterUidListOption(this):t.visitChildren(this)}},zm=class extends Qm{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}decimalMasterOption(){return this.getRuleContext(0,tD)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}accept(t){return t.visitMasterDecimalOption?t.visitMasterDecimalOption(this):t.visitChildren(this)}},$m=class extends ga{constructor(t,e){super(t,e)}MASTER_BIND(){return this.getToken(FC.MASTER_BIND,0)}MASTER_HOST(){return this.getToken(FC.MASTER_HOST,0)}MASTER_USER(){return this.getToken(FC.MASTER_USER,0)}MASTER_PASSWORD(){return this.getToken(FC.MASTER_PASSWORD,0)}MASTER_LOG_FILE(){return this.getToken(FC.MASTER_LOG_FILE,0)}RELAY_LOG_FILE(){return this.getToken(FC.RELAY_LOG_FILE,0)}MASTER_SSL_CA(){return this.getToken(FC.MASTER_SSL_CA,0)}MASTER_SSL_CAPATH(){return this.getToken(FC.MASTER_SSL_CAPATH,0)}MASTER_SSL_CERT(){return this.getToken(FC.MASTER_SSL_CERT,0)}MASTER_SSL_CRL(){return this.getToken(FC.MASTER_SSL_CRL,0)}MASTER_SSL_CRLPATH(){return this.getToken(FC.MASTER_SSL_CRLPATH,0)}MASTER_SSL_KEY(){return this.getToken(FC.MASTER_SSL_KEY,0)}MASTER_SSL_CIPHER(){return this.getToken(FC.MASTER_SSL_CIPHER,0)}MASTER_TLS_VERSION(){return this.getToken(FC.MASTER_TLS_VERSION,0)}get ruleIndex(){return FC.RULE_stringMasterOption}accept(t){return t.visitStringMasterOption?t.visitStringMasterOption(this):t.visitChildren(this)}},tD=class extends ga{constructor(t,e){super(t,e)}MASTER_PORT(){return this.getToken(FC.MASTER_PORT,0)}MASTER_CONNECT_RETRY(){return this.getToken(FC.MASTER_CONNECT_RETRY,0)}MASTER_RETRY_COUNT(){return this.getToken(FC.MASTER_RETRY_COUNT,0)}MASTER_DELAY(){return this.getToken(FC.MASTER_DELAY,0)}MASTER_LOG_POS(){return this.getToken(FC.MASTER_LOG_POS,0)}RELAY_LOG_POS(){return this.getToken(FC.RELAY_LOG_POS,0)}get ruleIndex(){return FC.RULE_decimalMasterOption}accept(t){return t.visitDecimalMasterOption?t.visitDecimalMasterOption(this):t.visitChildren(this)}},eD=class extends ga{constructor(t,e){super(t,e)}MASTER_AUTO_POSITION(){return this.getToken(FC.MASTER_AUTO_POSITION,0)}MASTER_SSL(){return this.getToken(FC.MASTER_SSL,0)}MASTER_SSL_VERIFY_SERVER_CERT(){return this.getToken(FC.MASTER_SSL_VERIFY_SERVER_CERT,0)}get ruleIndex(){return FC.RULE_boolMasterOption}accept(t){return t.visitBoolMasterOption?t.visitBoolMasterOption(this):t.visitChildren(this)}},sD=class extends ga{constructor(t,e){super(t,e)}FOR(){return this.getToken(FC.FOR,0)}CHANNEL(){return this.getToken(FC.CHANNEL,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}get ruleIndex(){return FC.RULE_channelOption}accept(t){return t.visitChannelOption?t.visitChannelOption(this):t.visitChildren(this)}},aD=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_replicationFilter}copyFrom(t){super.copyFrom(t)}},rD=class extends aD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REPLICATE_WILD_IGNORE_TABLE(){return this.getToken(FC.REPLICATE_WILD_IGNORE_TABLE,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}simpleStrings(){return this.getRuleContext(0,_k)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitWildIgnoreTableReplication?t.visitWildIgnoreTableReplication(this):t.visitChildren(this)}},iD=class extends aD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REPLICATE_DO_TABLE(){return this.getToken(FC.REPLICATE_DO_TABLE,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}tables(){return this.getRuleContext(0,Ik)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitDoTableReplication?t.visitDoTableReplication(this):t.visitChildren(this)}},cD=class extends aD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REPLICATE_IGNORE_TABLE(){return this.getToken(FC.REPLICATE_IGNORE_TABLE,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}tables(){return this.getRuleContext(0,Ik)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitIgnoreTableReplication?t.visitIgnoreTableReplication(this):t.visitChildren(this)}},nD=class extends aD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REPLICATE_REWRITE_DB(){return this.getToken(FC.REPLICATE_REWRITE_DB,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}tablePair(t){return void 0===t?this.getRuleContexts(oD):this.getRuleContext(t,oD)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitRewriteDbReplication?t.visitRewriteDbReplication(this):t.visitChildren(this)}},hD=class extends aD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REPLICATE_DO_DB(){return this.getToken(FC.REPLICATE_DO_DB,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}uidList(){return this.getRuleContext(0,lk)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitDoDbReplication?t.visitDoDbReplication(this):t.visitChildren(this)}},ED=class extends aD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REPLICATE_IGNORE_DB(){return this.getToken(FC.REPLICATE_IGNORE_DB,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}uidList(){return this.getRuleContext(0,lk)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitIgnoreDbReplication?t.visitIgnoreDbReplication(this):t.visitChildren(this)}},TD=class extends aD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REPLICATE_WILD_DO_TABLE(){return this.getToken(FC.REPLICATE_WILD_DO_TABLE,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}simpleStrings(){return this.getRuleContext(0,_k)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitWildDoTableReplication?t.visitWildDoTableReplication(this):t.visitChildren(this)}},oD=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}COMMA(){return this.getToken(FC.COMMA,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}tableName(t){return void 0===t?this.getRuleContexts(lx):this.getRuleContext(t,lx)}get ruleIndex(){return FC.RULE_tablePair}accept(t){return t.visitTablePair?t.visitTablePair(this):t.visitChildren(this)}},RD=class extends ga{constructor(t,e){super(t,e)}IO_THREAD(){return this.getToken(FC.IO_THREAD,0)}SQL_THREAD(){return this.getToken(FC.SQL_THREAD,0)}get ruleIndex(){return FC.RULE_threadType}accept(t){return t.visitThreadType?t.visitThreadType(this):t.visitChildren(this)}},AD=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_untilOption}copyFrom(t){super.copyFrom(t)}},SD=class extends AD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}gtuidSet(){return this.getRuleContext(0,PD)}SQL_BEFORE_GTIDS(){return this.getToken(FC.SQL_BEFORE_GTIDS,0)}SQL_AFTER_GTIDS(){return this.getToken(FC.SQL_AFTER_GTIDS,0)}accept(t){return t.visitGtidsUntilOption?t.visitGtidsUntilOption(this):t.visitChildren(this)}},lD=class extends AD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SQL_AFTER_MTS_GAPS(){return this.getToken(FC.SQL_AFTER_MTS_GAPS,0)}accept(t){return t.visitSqlGapsUntilOption?t.visitSqlGapsUntilOption(this):t.visitChildren(this)}},OD=class extends AD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MASTER_LOG_FILE(){return this.getToken(FC.MASTER_LOG_FILE,0)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}COMMA(){return this.getToken(FC.COMMA,0)}MASTER_LOG_POS(){return this.getToken(FC.MASTER_LOG_POS,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}accept(t){return t.visitMasterLogUntilOption?t.visitMasterLogUntilOption(this):t.visitChildren(this)}},ID=class extends AD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}RELAY_LOG_FILE(){return this.getToken(FC.RELAY_LOG_FILE,0)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}COMMA(){return this.getToken(FC.COMMA,0)}RELAY_LOG_POS(){return this.getToken(FC.RELAY_LOG_POS,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}accept(t){return t.visitRelayLogUntilOption?t.visitRelayLogUntilOption(this):t.visitChildren(this)}},uD=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_connectionOption}copyFrom(t){super.copyFrom(t)}},ND=class extends uD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}PLUGIN_DIR(){return this.getToken(FC.PLUGIN_DIR,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}accept(t){return t.visitPluginDirConnectionOption?t.visitPluginDirConnectionOption(this):t.visitChildren(this)}},LD=class extends uD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}USER(){return this.getToken(FC.USER,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}accept(t){return t.visitUserConnectionOption?t.visitUserConnectionOption(this):t.visitChildren(this)}},CD=class extends uD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DEFAULT_AUTH(){return this.getToken(FC.DEFAULT_AUTH,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}accept(t){return t.visitDefaultAuthConnectionOption?t.visitDefaultAuthConnectionOption(this):t.visitChildren(this)}},_D=class extends uD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}PASSWORD(){return this.getToken(FC.PASSWORD,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}accept(t){return t.visitPasswordConnectionOption?t.visitPasswordConnectionOption(this):t.visitChildren(this)}},PD=class extends ga{constructor(t,e){super(t,e)}uuidSet(t){return void 0===t?this.getRuleContexts(Yx):this.getRuleContext(t,Yx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}get ruleIndex(){return FC.RULE_gtuidSet}accept(t){return t.visitGtuidSet?t.visitGtuidSet(this):t.visitChildren(this)}},MD=class extends ga{constructor(t,e){super(t,e)}XA(){return this.getToken(FC.XA,0)}xid(){return this.getRuleContext(0,wx)}START(){return this.getToken(FC.START,0)}BEGIN(){return this.getToken(FC.BEGIN,0)}JOIN(){return this.getToken(FC.JOIN,0)}RESUME(){return this.getToken(FC.RESUME,0)}get ruleIndex(){return FC.RULE_xaStartTransaction}accept(t){return t.visitXaStartTransaction?t.visitXaStartTransaction(this):t.visitChildren(this)}},dD=class extends ga{constructor(t,e){super(t,e)}XA(){return this.getToken(FC.XA,0)}END(){return this.getToken(FC.END,0)}xid(){return this.getRuleContext(0,wx)}SUSPEND(){return this.getToken(FC.SUSPEND,0)}FOR(){return this.getToken(FC.FOR,0)}MIGRATE(){return this.getToken(FC.MIGRATE,0)}get ruleIndex(){return FC.RULE_xaEndTransaction}accept(t){return t.visitXaEndTransaction?t.visitXaEndTransaction(this):t.visitChildren(this)}},UD=class extends ga{constructor(t,e){super(t,e)}XA(){return this.getToken(FC.XA,0)}PREPARE(){return this.getToken(FC.PREPARE,0)}xid(){return this.getRuleContext(0,wx)}get ruleIndex(){return FC.RULE_xaPrepareStatement}accept(t){return t.visitXaPrepareStatement?t.visitXaPrepareStatement(this):t.visitChildren(this)}},mD=class extends ga{constructor(t,e){super(t,e)}XA(){return this.getToken(FC.XA,0)}COMMIT(){return this.getToken(FC.COMMIT,0)}xid(){return this.getRuleContext(0,wx)}ONE(){return this.getToken(FC.ONE,0)}PHASE(){return this.getToken(FC.PHASE,0)}get ruleIndex(){return FC.RULE_xaCommitWork}accept(t){return t.visitXaCommitWork?t.visitXaCommitWork(this):t.visitChildren(this)}},DD=class extends ga{constructor(t,e){super(t,e)}XA(){return this.getToken(FC.XA,0)}ROLLBACK(){return this.getToken(FC.ROLLBACK,0)}xid(){return this.getRuleContext(0,wx)}get ruleIndex(){return FC.RULE_xaRollbackWork}accept(t){return t.visitXaRollbackWork?t.visitXaRollbackWork(this):t.visitChildren(this)}},pD=class extends ga{constructor(t,e){super(t,e)}XA(){return this.getToken(FC.XA,0)}RECOVER(){return this.getToken(FC.RECOVER,0)}CONVERT(){return this.getToken(FC.CONVERT,0)}xid(){return this.getRuleContext(0,wx)}get ruleIndex(){return FC.RULE_xaRecoverWork}accept(t){return t.visitXaRecoverWork?t.visitXaRecoverWork(this):t.visitChildren(this)}},gD=class extends ga{constructor(t,e){super(t,e)}PREPARE(){return this.getToken(FC.PREPARE,0)}uid(){return this.getRuleContext(0,Vx)}FROM(){return this.getToken(FC.FROM,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}LOCAL_ID(){return this.getToken(FC.LOCAL_ID,0)}get ruleIndex(){return FC.RULE_prepareStatement}accept(t){return t.visitPrepareStatement?t.visitPrepareStatement(this):t.visitChildren(this)}},xD=class extends ga{constructor(t,e){super(t,e)}EXECUTE(){return this.getToken(FC.EXECUTE,0)}uid(){return this.getRuleContext(0,Vx)}USING(){return this.getToken(FC.USING,0)}userVariables(){return this.getRuleContext(0,Pk)}get ruleIndex(){return FC.RULE_executeStatement}accept(t){return t.visitExecuteStatement?t.visitExecuteStatement(this):t.visitChildren(this)}},kD=class extends ga{constructor(t,e){super(t,e)}PREPARE(){return this.getToken(FC.PREPARE,0)}uid(){return this.getRuleContext(0,Vx)}DEALLOCATE(){return this.getToken(FC.DEALLOCATE,0)}DROP(){return this.getToken(FC.DROP,0)}get ruleIndex(){return FC.RULE_deallocatePrepare}accept(t){return t.visitDeallocatePrepare?t.visitDeallocatePrepare(this):t.visitChildren(this)}},HD=class extends ga{constructor(t,e){super(t,e)}blockStatement(){return this.getRuleContext(0,GD)}statement(){return this.getRuleContext(0,yC)}get ruleIndex(){return FC.RULE_routineBody}accept(t){return t.visitRoutineBody?t.visitRoutineBody(this):t.visitChildren(this)}},GD=class extends ga{constructor(t,e){super(t,e)}BEGIN(){return this.getToken(FC.BEGIN,0)}END(){return this.getToken(FC.END,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}COLON_SYMB(){return this.getToken(FC.COLON_SYMB,0)}declareVariable(t){return void 0===t?this.getRuleContexts(QD):this.getRuleContext(t,QD)}SEMI(t){return void 0===t?this.getTokens(FC.SEMI):this.getToken(FC.SEMI,t)}declareCondition(t){return void 0===t?this.getRuleContexts(JD):this.getRuleContext(t,JD)}declareCursor(t){return void 0===t?this.getRuleContexts(ZD):this.getRuleContext(t,ZD)}declareHandler(t){return void 0===t?this.getRuleContexts(qD):this.getRuleContext(t,qD)}procedureSqlStatement(t){return void 0===t?this.getRuleContexts(rp):this.getRuleContext(t,rp)}get ruleIndex(){return FC.RULE_blockStatement}accept(t){return t.visitBlockStatement?t.visitBlockStatement(this):t.visitChildren(this)}},FD=class extends ga{constructor(t,e){super(t,e)}CASE(t){return void 0===t?this.getTokens(FC.CASE):this.getToken(FC.CASE,t)}END(){return this.getToken(FC.END,0)}uid(){return this.getRuleContext(0,Vx)}expression(){return this.getRuleContext(0,NH)}caseAlternative(t){return void 0===t?this.getRuleContexts(ip):this.getRuleContext(t,ip)}ELSE(){return this.getToken(FC.ELSE,0)}procedureSqlStatement(t){return void 0===t?this.getRuleContexts(rp):this.getRuleContext(t,rp)}get ruleIndex(){return FC.RULE_caseStatement}accept(t){return t.visitCaseStatement?t.visitCaseStatement(this):t.visitChildren(this)}},vD=class extends ga{constructor(t,e){super(t,e),this._thenStatements=[],this._elseStatements=[]}IF(t){return void 0===t?this.getTokens(FC.IF):this.getToken(FC.IF,t)}expression(){return this.getRuleContext(0,NH)}THEN(){return this.getToken(FC.THEN,0)}END(){return this.getToken(FC.END,0)}elifAlternative(t){return void 0===t?this.getRuleContexts(cp):this.getRuleContext(t,cp)}ELSE(){return this.getToken(FC.ELSE,0)}procedureSqlStatement(t){return void 0===t?this.getRuleContexts(rp):this.getRuleContext(t,rp)}get ruleIndex(){return FC.RULE_ifStatement}accept(t){return t.visitIfStatement?t.visitIfStatement(this):t.visitChildren(this)}},BD=class extends ga{constructor(t,e){super(t,e)}ITERATE(){return this.getToken(FC.ITERATE,0)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_iterateStatement}accept(t){return t.visitIterateStatement?t.visitIterateStatement(this):t.visitChildren(this)}},yD=class extends ga{constructor(t,e){super(t,e)}LEAVE(){return this.getToken(FC.LEAVE,0)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_leaveStatement}accept(t){return t.visitLeaveStatement?t.visitLeaveStatement(this):t.visitChildren(this)}},fD=class extends ga{constructor(t,e){super(t,e)}LOOP(t){return void 0===t?this.getTokens(FC.LOOP):this.getToken(FC.LOOP,t)}END(){return this.getToken(FC.END,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}COLON_SYMB(){return this.getToken(FC.COLON_SYMB,0)}procedureSqlStatement(t){return void 0===t?this.getRuleContexts(rp):this.getRuleContext(t,rp)}get ruleIndex(){return FC.RULE_loopStatement}accept(t){return t.visitLoopStatement?t.visitLoopStatement(this):t.visitChildren(this)}},YD=class extends ga{constructor(t,e){super(t,e)}REPEAT(t){return void 0===t?this.getTokens(FC.REPEAT):this.getToken(FC.REPEAT,t)}UNTIL(){return this.getToken(FC.UNTIL,0)}expression(){return this.getRuleContext(0,NH)}END(){return this.getToken(FC.END,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}COLON_SYMB(){return this.getToken(FC.COLON_SYMB,0)}procedureSqlStatement(t){return void 0===t?this.getRuleContexts(rp):this.getRuleContext(t,rp)}get ruleIndex(){return FC.RULE_repeatStatement}accept(t){return t.visitRepeatStatement?t.visitRepeatStatement(this):t.visitChildren(this)}},wD=class extends ga{constructor(t,e){super(t,e)}RETURN(){return this.getToken(FC.RETURN,0)}expression(){return this.getRuleContext(0,NH)}get ruleIndex(){return FC.RULE_returnStatement}accept(t){return t.visitReturnStatement?t.visitReturnStatement(this):t.visitChildren(this)}},bD=class extends ga{constructor(t,e){super(t,e)}WHILE(t){return void 0===t?this.getTokens(FC.WHILE):this.getToken(FC.WHILE,t)}expression(){return this.getRuleContext(0,NH)}DO(){return this.getToken(FC.DO,0)}END(){return this.getToken(FC.END,0)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}COLON_SYMB(){return this.getToken(FC.COLON_SYMB,0)}procedureSqlStatement(t){return void 0===t?this.getRuleContexts(rp):this.getRuleContext(t,rp)}get ruleIndex(){return FC.RULE_whileStatement}accept(t){return t.visitWhileStatement?t.visitWhileStatement(this):t.visitChildren(this)}},WD=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_cursorStatement}copyFrom(t){super.copyFrom(t)}},VD=class extends WD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CLOSE(){return this.getToken(FC.CLOSE,0)}uid(){return this.getRuleContext(0,Vx)}accept(t){return t.visitCloseCursor?t.visitCloseCursor(this):t.visitChildren(this)}},XD=class extends WD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}OPEN(){return this.getToken(FC.OPEN,0)}uid(){return this.getRuleContext(0,Vx)}accept(t){return t.visitOpenCursor?t.visitOpenCursor(this):t.visitChildren(this)}},KD=class extends WD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}FETCH(){return this.getToken(FC.FETCH,0)}uid(){return this.getRuleContext(0,Vx)}INTO(){return this.getToken(FC.INTO,0)}uidList(){return this.getRuleContext(0,lk)}FROM(){return this.getToken(FC.FROM,0)}NEXT(){return this.getToken(FC.NEXT,0)}accept(t){return t.visitFetchCursor?t.visitFetchCursor(this):t.visitChildren(this)}},QD=class extends ga{constructor(t,e){super(t,e)}DECLARE(){return this.getToken(FC.DECLARE,0)}uidList(){return this.getRuleContext(0,lk)}dataType(){return this.getRuleContext(0,tk)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}expression(){return this.getRuleContext(0,NH)}get ruleIndex(){return FC.RULE_declareVariable}accept(t){return t.visitDeclareVariable?t.visitDeclareVariable(this):t.visitChildren(this)}},JD=class extends ga{constructor(t,e){super(t,e)}DECLARE(){return this.getToken(FC.DECLARE,0)}uid(){return this.getRuleContext(0,Vx)}CONDITION(){return this.getToken(FC.CONDITION,0)}FOR(){return this.getToken(FC.FOR,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}SQLSTATE(){return this.getToken(FC.SQLSTATE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}VALUE(){return this.getToken(FC.VALUE,0)}get ruleIndex(){return FC.RULE_declareCondition}accept(t){return t.visitDeclareCondition?t.visitDeclareCondition(this):t.visitChildren(this)}},ZD=class extends ga{constructor(t,e){super(t,e)}DECLARE(){return this.getToken(FC.DECLARE,0)}uid(){return this.getRuleContext(0,Vx)}CURSOR(){return this.getToken(FC.CURSOR,0)}FOR(){return this.getToken(FC.FOR,0)}selectStatement(){return this.getRuleContext(0,rU)}get ruleIndex(){return FC.RULE_declareCursor}accept(t){return t.visitDeclareCursor?t.visitDeclareCursor(this):t.visitChildren(this)}},qD=class extends ga{constructor(t,e){super(t,e)}DECLARE(){return this.getToken(FC.DECLARE,0)}HANDLER(){return this.getToken(FC.HANDLER,0)}FOR(){return this.getToken(FC.FOR,0)}handlerConditionValue(t){return void 0===t?this.getRuleContexts(jD):this.getRuleContext(t,jD)}routineBody(){return this.getRuleContext(0,HD)}CONTINUE(){return this.getToken(FC.CONTINUE,0)}EXIT(){return this.getToken(FC.EXIT,0)}UNDO(){return this.getToken(FC.UNDO,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_declareHandler}accept(t){return t.visitDeclareHandler?t.visitDeclareHandler(this):t.visitChildren(this)}},jD=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_handlerConditionValue}copyFrom(t){super.copyFrom(t)}},zD=class extends jD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SQLWARNING(){return this.getToken(FC.SQLWARNING,0)}accept(t){return t.visitHandlerConditionWarning?t.visitHandlerConditionWarning(this):t.visitChildren(this)}},$D=class extends jD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}decimalLiteral(){return this.getRuleContext(0,Qx)}accept(t){return t.visitHandlerConditionCode?t.visitHandlerConditionCode(this):t.visitChildren(this)}},tp=class extends jD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}NOT(){return this.getToken(FC.NOT,0)}FOUND(){return this.getToken(FC.FOUND,0)}accept(t){return t.visitHandlerConditionNotfound?t.visitHandlerConditionNotfound(this):t.visitChildren(this)}},ep=class extends jD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SQLSTATE(){return this.getToken(FC.SQLSTATE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}VALUE(){return this.getToken(FC.VALUE,0)}accept(t){return t.visitHandlerConditionState?t.visitHandlerConditionState(this):t.visitChildren(this)}},sp=class extends jD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SQLEXCEPTION(){return this.getToken(FC.SQLEXCEPTION,0)}accept(t){return t.visitHandlerConditionException?t.visitHandlerConditionException(this):t.visitChildren(this)}},ap=class extends jD{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}uid(){return this.getRuleContext(0,Vx)}accept(t){return t.visitHandlerConditionName?t.visitHandlerConditionName(this):t.visitChildren(this)}},rp=class extends ga{constructor(t,e){super(t,e)}SEMI(){return this.getToken(FC.SEMI,0)}compoundStatement(){return this.getRuleContext(0,VC)}statement(){return this.getRuleContext(0,yC)}get ruleIndex(){return FC.RULE_procedureSqlStatement}accept(t){return t.visitProcedureSqlStatement?t.visitProcedureSqlStatement(this):t.visitChildren(this)}},ip=class extends ga{constructor(t,e){super(t,e)}WHEN(){return this.getToken(FC.WHEN,0)}THEN(){return this.getToken(FC.THEN,0)}constant(){return this.getRuleContext(0,$x)}expression(){return this.getRuleContext(0,NH)}procedureSqlStatement(t){return void 0===t?this.getRuleContexts(rp):this.getRuleContext(t,rp)}get ruleIndex(){return FC.RULE_caseAlternative}accept(t){return t.visitCaseAlternative?t.visitCaseAlternative(this):t.visitChildren(this)}},cp=class extends ga{constructor(t,e){super(t,e)}ELSEIF(){return this.getToken(FC.ELSEIF,0)}expression(){return this.getRuleContext(0,NH)}THEN(){return this.getToken(FC.THEN,0)}procedureSqlStatement(t){return void 0===t?this.getRuleContexts(rp):this.getRuleContext(t,rp)}get ruleIndex(){return FC.RULE_elifAlternative}accept(t){return t.visitElifAlternative?t.visitElifAlternative(this):t.visitChildren(this)}},np=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_alterUser}copyFrom(t){super.copyFrom(t)}},hp=class extends np{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ALTER(){return this.getToken(FC.ALTER,0)}USER(){return this.getToken(FC.USER,0)}newUserAuthOptionList(){return this.getRuleContext(0,dp)}ifExists(){return this.getRuleContext(0,mk)}REQUIRE(){return this.getToken(FC.REQUIRE,0)}WITH(){return this.getToken(FC.WITH,0)}userPasswordOption(t){return void 0===t?this.getRuleContexts(yp):this.getRuleContext(t,yp)}userLockOption(t){return void 0===t?this.getRuleContexts(fp):this.getRuleContext(t,fp)}COMMENT(){return this.getToken(FC.COMMENT,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}ATTRIBUTE(){return this.getToken(FC.ATTRIBUTE,0)}tlsOption(t){return void 0===t?this.getRuleContexts(vp):this.getRuleContext(t,vp)}NONE(){return this.getToken(FC.NONE,0)}userResourceOption(t){return void 0===t?this.getRuleContexts(Bp):this.getRuleContext(t,Bp)}AND(t){return void 0===t?this.getTokens(FC.AND):this.getToken(FC.AND,t)}userName(){return this.getRuleContext(0,Gx)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}ROLE(){return this.getToken(FC.ROLE,0)}roleOption(){return this.getRuleContext(0,lp)}accept(t){return t.visitAlterUserMysqlV80?t.visitAlterUserMysqlV80(this):t.visitChildren(this)}},Ep=class extends np{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ALTER(){return this.getToken(FC.ALTER,0)}USER(){return this.getToken(FC.USER,0)}userSpecification(t){return void 0===t?this.getRuleContexts(Mp):this.getRuleContext(t,Mp)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitAlterUserMysqlV56?t.visitAlterUserMysqlV56(this):t.visitChildren(this)}},Tp=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_createUser}copyFrom(t){super.copyFrom(t)}},op=class extends Tp{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CREATE(){return this.getToken(FC.CREATE,0)}USER(){return this.getToken(FC.USER,0)}newUserAuthOptionList(){return this.getRuleContext(0,dp)}accept(t){return t.visitCreateUserMysqlV56?t.visitCreateUserMysqlV56(this):t.visitChildren(this)}},Rp=class extends Tp{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CREATE(){return this.getToken(FC.CREATE,0)}USER(){return this.getToken(FC.USER,0)}newUserAuthOptionList(){return this.getRuleContext(0,dp)}ifNotExists(){return this.getRuleContext(0,Dk)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}ROLE(){return this.getToken(FC.ROLE,0)}roleOption(){return this.getRuleContext(0,lp)}REQUIRE(){return this.getToken(FC.REQUIRE,0)}WITH(){return this.getToken(FC.WITH,0)}userPasswordOption(t){return void 0===t?this.getRuleContexts(yp):this.getRuleContext(t,yp)}userLockOption(t){return void 0===t?this.getRuleContexts(fp):this.getRuleContext(t,fp)}COMMENT(){return this.getToken(FC.COMMENT,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}ATTRIBUTE(){return this.getToken(FC.ATTRIBUTE,0)}tlsOption(t){return void 0===t?this.getRuleContexts(vp):this.getRuleContext(t,vp)}NONE(){return this.getToken(FC.NONE,0)}userResourceOption(t){return void 0===t?this.getRuleContexts(Bp):this.getRuleContext(t,Bp)}AND(t){return void 0===t?this.getTokens(FC.AND):this.getToken(FC.AND,t)}accept(t){return t.visitCreateUserMysqlV80?t.visitCreateUserMysqlV80(this):t.visitChildren(this)}},Ap=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(FC.DROP,0)}USER(){return this.getToken(FC.USER,0)}userNameList(){return this.getRuleContext(0,kx)}ifExists(){return this.getRuleContext(0,mk)}get ruleIndex(){return FC.RULE_dropUser}accept(t){return t.visitDropUser?t.visitDropUser(this):t.visitChildren(this)}},Sp=class extends ga{constructor(t,e){super(t,e)}GRANT(t){return void 0===t?this.getTokens(FC.GRANT):this.getToken(FC.GRANT,t)}privelegeClause(t){return void 0===t?this.getRuleContexts(Yp):this.getRuleContext(t,Yp)}ON(){return this.getToken(FC.ON,0)}privilegeLevel(){return this.getRuleContext(0,bp)}TO(){return this.getToken(FC.TO,0)}userOrRoleNameList(){return this.getRuleContext(0,ux)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}REQUIRE(){return this.getToken(FC.REQUIRE,0)}WITH(t){return void 0===t?this.getTokens(FC.WITH):this.getToken(FC.WITH,t)}AS(){return this.getToken(FC.AS,0)}userName(){return this.getRuleContext(0,Gx)}ROLE(){return this.getToken(FC.ROLE,0)}roleOption(){return this.getRuleContext(0,lp)}TABLE(){return this.getToken(FC.TABLE,0)}FUNCTION(){return this.getToken(FC.FUNCTION,0)}PROCEDURE(){return this.getToken(FC.PROCEDURE,0)}tlsOption(t){return void 0===t?this.getRuleContexts(vp):this.getRuleContext(t,vp)}NONE(){return this.getToken(FC.NONE,0)}OPTION(t){return void 0===t?this.getTokens(FC.OPTION):this.getToken(FC.OPTION,t)}userResourceOption(t){return void 0===t?this.getRuleContexts(Bp):this.getRuleContext(t,Bp)}AND(t){return void 0===t?this.getTokens(FC.AND):this.getToken(FC.AND,t)}roleNameList(){return this.getRuleContext(0,Cx)}ADMIN(){return this.getToken(FC.ADMIN,0)}get ruleIndex(){return FC.RULE_grantStatement}accept(t){return t.visitGrantStatement?t.visitGrantStatement(this):t.visitChildren(this)}},lp=class extends ga{constructor(t,e){super(t,e)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}NONE(){return this.getToken(FC.NONE,0)}ALL(){return this.getToken(FC.ALL,0)}EXCEPT(){return this.getToken(FC.EXCEPT,0)}roleNameList(){return this.getRuleContext(0,Cx)}get ruleIndex(){return FC.RULE_roleOption}accept(t){return t.visitRoleOption?t.visitRoleOption(this):t.visitChildren(this)}},Op=class extends ga{constructor(t,e){super(t,e),this._toOther=[]}GRANT(t){return void 0===t?this.getTokens(FC.GRANT):this.getToken(FC.GRANT,t)}PROXY(){return this.getToken(FC.PROXY,0)}ON(){return this.getToken(FC.ON,0)}TO(){return this.getToken(FC.TO,0)}userName(t){return void 0===t?this.getRuleContexts(Gx):this.getRuleContext(t,Gx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}WITH(){return this.getToken(FC.WITH,0)}OPTION(){return this.getToken(FC.OPTION,0)}get ruleIndex(){return FC.RULE_grantProxy}accept(t){return t.visitGrantProxy?t.visitGrantProxy(this):t.visitChildren(this)}},Ip=class extends ga{constructor(t,e){super(t,e)}RENAME(){return this.getToken(FC.RENAME,0)}USER(){return this.getToken(FC.USER,0)}renameUserClause(t){return void 0===t?this.getRuleContexts(Zp):this.getRuleContext(t,Zp)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_renameUser}accept(t){return t.visitRenameUser?t.visitRenameUser(this):t.visitChildren(this)}},up=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_revokeStatement}copyFrom(t){super.copyFrom(t)}},Np=class extends up{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REVOKE(){return this.getToken(FC.REVOKE,0)}ALL(){return this.getToken(FC.ALL,0)}COMMA(){return this.getToken(FC.COMMA,0)}GRANT(){return this.getToken(FC.GRANT,0)}OPTION(){return this.getToken(FC.OPTION,0)}FROM(){return this.getToken(FC.FROM,0)}userOrRoleNameList(){return this.getRuleContext(0,ux)}PRIVILEGES(){return this.getToken(FC.PRIVILEGES,0)}accept(t){return t.visitShortPrivilegeRevoke?t.visitShortPrivilegeRevoke(this):t.visitChildren(this)}},Lp=class extends up{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REVOKE(){return this.getToken(FC.REVOKE,0)}roleNameList(){return this.getRuleContext(0,Cx)}FROM(){return this.getToken(FC.FROM,0)}userOrRoleNameList(t){return void 0===t?this.getRuleContexts(ux):this.getRuleContext(t,ux)}accept(t){return t.visitRoleRevoke?t.visitRoleRevoke(this):t.visitChildren(this)}},Cp=class extends up{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REVOKE(){return this.getToken(FC.REVOKE,0)}privelegeClause(t){return void 0===t?this.getRuleContexts(Yp):this.getRuleContext(t,Yp)}ON(){return this.getToken(FC.ON,0)}privilegeLevel(){return this.getRuleContext(0,bp)}FROM(){return this.getToken(FC.FROM,0)}userOrRoleNameList(){return this.getRuleContext(0,ux)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}TABLE(){return this.getToken(FC.TABLE,0)}FUNCTION(){return this.getToken(FC.FUNCTION,0)}PROCEDURE(){return this.getToken(FC.PROCEDURE,0)}accept(t){return t.visitDetailedPrivilegeRevoke?t.visitDetailedPrivilegeRevoke(this):t.visitChildren(this)}},_p=class extends ga{constructor(t,e){super(t,e),this._fromOther=[]}REVOKE(){return this.getToken(FC.REVOKE,0)}PROXY(){return this.getToken(FC.PROXY,0)}ON(){return this.getToken(FC.ON,0)}FROM(){return this.getToken(FC.FROM,0)}userName(t){return void 0===t?this.getRuleContexts(Gx):this.getRuleContext(t,Gx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_revokeProxy}accept(t){return t.visitRevokeProxy?t.visitRevokeProxy(this):t.visitChildren(this)}},Pp=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(FC.SET,0)}PASSWORD(){return this.getToken(FC.PASSWORD,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}passwordFunctionClause(){return this.getRuleContext(0,OH)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}FOR(){return this.getToken(FC.FOR,0)}userName(){return this.getRuleContext(0,Gx)}get ruleIndex(){return FC.RULE_setPasswordStatement}accept(t){return t.visitSetPasswordStatement?t.visitSetPasswordStatement(this):t.visitChildren(this)}},Mp=class extends ga{constructor(t,e){super(t,e)}userName(){return this.getRuleContext(0,Gx)}userPasswordOption(){return this.getRuleContext(0,yp)}get ruleIndex(){return FC.RULE_userSpecification}accept(t){return t.visitUserSpecification?t.visitUserSpecification(this):t.visitChildren(this)}},dp=class extends ga{constructor(t,e){super(t,e)}newUserAuthOption(t){return void 0===t?this.getRuleContexts(Up):this.getRuleContext(t,Up)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_newUserAuthOptionList}accept(t){return t.visitNewUserAuthOptionList?t.visitNewUserAuthOptionList(this):t.visitChildren(this)}},Up=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_newUserAuthOption}copyFrom(t){super.copyFrom(t)}},mp=class extends Up{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}newUserName(){return this.getRuleContext(0,Hx)}accept(t){return t.visitSimpleAuthOption?t.visitSimpleAuthOption(this):t.visitChildren(this)}},Dp=class extends Up{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}newUserName(){return this.getRuleContext(0,Hx)}IDENTIFIED(){return this.getToken(FC.IDENTIFIED,0)}WITH(){return this.getToken(FC.WITH,0)}authenticationRule(){return this.getRuleContext(0,Hp)}accept(t){return t.visitModuleAuthOption?t.visitModuleAuthOption(this):t.visitChildren(this)}},pp=class extends Up{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}newUserName(){return this.getRuleContext(0,Hx)}IDENTIFIED(){return this.getToken(FC.IDENTIFIED,0)}BY(){return this.getToken(FC.BY,0)}RANDOM(){return this.getToken(FC.RANDOM,0)}PASSWORD(){return this.getToken(FC.PASSWORD,0)}authOptionClause(){return this.getRuleContext(0,kp)}accept(t){return t.visitRandomAuthOption?t.visitRandomAuthOption(this):t.visitChildren(this)}},gp=class extends Up{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}newUserName(){return this.getRuleContext(0,Hx)}IDENTIFIED(){return this.getToken(FC.IDENTIFIED,0)}BY(){return this.getToken(FC.BY,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}authOptionClause(){return this.getRuleContext(0,kp)}accept(t){return t.visitStringAuthOption?t.visitStringAuthOption(this):t.visitChildren(this)}},xp=class extends Up{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}newUserName(){return this.getRuleContext(0,Hx)}IDENTIFIED(){return this.getToken(FC.IDENTIFIED,0)}BY(){return this.getToken(FC.BY,0)}PASSWORD(){return this.getToken(FC.PASSWORD,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}accept(t){return t.visitHashAuthOption?t.visitHashAuthOption(this):t.visitChildren(this)}},kp=class extends ga{constructor(t,e){super(t,e)}REPLACE(){return this.getToken(FC.REPLACE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}RETAIN(){return this.getToken(FC.RETAIN,0)}CURRENT(){return this.getToken(FC.CURRENT,0)}PASSWORD(){return this.getToken(FC.PASSWORD,0)}get ruleIndex(){return FC.RULE_authOptionClause}accept(t){return t.visitAuthOptionClause?t.visitAuthOptionClause(this):t.visitChildren(this)}},Hp=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_authenticationRule}copyFrom(t){super.copyFrom(t)}},Gp=class extends Hp{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}authPlugin(){return this.getRuleContext(0,Wx)}USING(){return this.getToken(FC.USING,0)}passwordFunctionClause(){return this.getRuleContext(0,OH)}accept(t){return t.visitPasswordModuleOption?t.visitPasswordModuleOption(this):t.visitChildren(this)}},Fp=class extends Hp{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}authPlugin(){return this.getRuleContext(0,Wx)}authOptionClause(){return this.getRuleContext(0,kp)}BY(){return this.getToken(FC.BY,0)}USING(){return this.getToken(FC.USING,0)}AS(){return this.getToken(FC.AS,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}RANDOM(){return this.getToken(FC.RANDOM,0)}PASSWORD(){return this.getToken(FC.PASSWORD,0)}accept(t){return t.visitModule?t.visitModule(this):t.visitChildren(this)}},vp=class extends ga{constructor(t,e){super(t,e)}SSL(){return this.getToken(FC.SSL,0)}X509(){return this.getToken(FC.X509,0)}CIPHER(){return this.getToken(FC.CIPHER,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}ISSUER(){return this.getToken(FC.ISSUER,0)}SUBJECT(){return this.getToken(FC.SUBJECT,0)}get ruleIndex(){return FC.RULE_tlsOption}accept(t){return t.visitTlsOption?t.visitTlsOption(this):t.visitChildren(this)}},Bp=class extends ga{constructor(t,e){super(t,e)}MAX_QUERIES_PER_HOUR(){return this.getToken(FC.MAX_QUERIES_PER_HOUR,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}MAX_UPDATES_PER_HOUR(){return this.getToken(FC.MAX_UPDATES_PER_HOUR,0)}MAX_CONNECTIONS_PER_HOUR(){return this.getToken(FC.MAX_CONNECTIONS_PER_HOUR,0)}MAX_USER_CONNECTIONS(){return this.getToken(FC.MAX_USER_CONNECTIONS,0)}get ruleIndex(){return FC.RULE_userResourceOption}accept(t){return t.visitUserResourceOption?t.visitUserResourceOption(this):t.visitChildren(this)}},yp=class extends ga{constructor(t,e){super(t,e)}PASSWORD(){return this.getToken(FC.PASSWORD,0)}EXPIRE(){return this.getToken(FC.EXPIRE,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}DAY(){return this.getToken(FC.DAY,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}NEVER(){return this.getToken(FC.NEVER,0)}INTERVAL(){return this.getToken(FC.INTERVAL,0)}HISTORY(){return this.getToken(FC.HISTORY,0)}REUSE(){return this.getToken(FC.REUSE,0)}REQUIRE(){return this.getToken(FC.REQUIRE,0)}CURRENT(){return this.getToken(FC.CURRENT,0)}OPTIONAL(){return this.getToken(FC.OPTIONAL,0)}FAILED_LOGIN_ATTEMPTS(){return this.getToken(FC.FAILED_LOGIN_ATTEMPTS,0)}PASSWORD_LOCK_TIME(){return this.getToken(FC.PASSWORD_LOCK_TIME,0)}UNBOUNDED(){return this.getToken(FC.UNBOUNDED,0)}get ruleIndex(){return FC.RULE_userPasswordOption}accept(t){return t.visitUserPasswordOption?t.visitUserPasswordOption(this):t.visitChildren(this)}},fp=class extends ga{constructor(t,e){super(t,e)}ACCOUNT(){return this.getToken(FC.ACCOUNT,0)}LOCK(){return this.getToken(FC.LOCK,0)}UNLOCK(){return this.getToken(FC.UNLOCK,0)}get ruleIndex(){return FC.RULE_userLockOption}accept(t){return t.visitUserLockOption?t.visitUserLockOption(this):t.visitChildren(this)}},Yp=class extends ga{constructor(t,e){super(t,e)}privilege(){return this.getRuleContext(0,wp)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}uidList(){return this.getRuleContext(0,lk)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}get ruleIndex(){return FC.RULE_privelegeClause}accept(t){return t.visitPrivelegeClause?t.visitPrivelegeClause(this):t.visitChildren(this)}},wp=class extends ga{constructor(t,e){super(t,e)}ALL(){return this.getToken(FC.ALL,0)}PRIVILEGES(){return this.getToken(FC.PRIVILEGES,0)}ALTER(){return this.getToken(FC.ALTER,0)}ROUTINE(){return this.getToken(FC.ROUTINE,0)}CREATE(){return this.getToken(FC.CREATE,0)}TEMPORARY(){return this.getToken(FC.TEMPORARY,0)}TABLES(){return this.getToken(FC.TABLES,0)}VIEW(){return this.getToken(FC.VIEW,0)}USER(){return this.getToken(FC.USER,0)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}ROLE(){return this.getToken(FC.ROLE,0)}DELETE(){return this.getToken(FC.DELETE,0)}DROP(){return this.getToken(FC.DROP,0)}EVENT(){return this.getToken(FC.EVENT,0)}EXECUTE(){return this.getToken(FC.EXECUTE,0)}FILE(){return this.getToken(FC.FILE,0)}GRANT(){return this.getToken(FC.GRANT,0)}OPTION(){return this.getToken(FC.OPTION,0)}INDEX(){return this.getToken(FC.INDEX,0)}INSERT(){return this.getToken(FC.INSERT,0)}LOCK(){return this.getToken(FC.LOCK,0)}PROCESS(){return this.getToken(FC.PROCESS,0)}PROXY(){return this.getToken(FC.PROXY,0)}REFERENCES(){return this.getToken(FC.REFERENCES,0)}RELOAD(){return this.getToken(FC.RELOAD,0)}REPLICATION(){return this.getToken(FC.REPLICATION,0)}CLIENT(){return this.getToken(FC.CLIENT,0)}SLAVE(){return this.getToken(FC.SLAVE,0)}SELECT(){return this.getToken(FC.SELECT,0)}SHOW(){return this.getToken(FC.SHOW,0)}DATABASES(){return this.getToken(FC.DATABASES,0)}SHUTDOWN(){return this.getToken(FC.SHUTDOWN,0)}SUPER(){return this.getToken(FC.SUPER,0)}TRIGGER(){return this.getToken(FC.TRIGGER,0)}UPDATE(){return this.getToken(FC.UPDATE,0)}USAGE(){return this.getToken(FC.USAGE,0)}APPLICATION_PASSWORD_ADMIN(){return this.getToken(FC.APPLICATION_PASSWORD_ADMIN,0)}AUDIT_ABORT_EXEMPT(){return this.getToken(FC.AUDIT_ABORT_EXEMPT,0)}AUDIT_ADMIN(){return this.getToken(FC.AUDIT_ADMIN,0)}AUTHENTICATION_POLICY_ADMIN(){return this.getToken(FC.AUTHENTICATION_POLICY_ADMIN,0)}BACKUP_ADMIN(){return this.getToken(FC.BACKUP_ADMIN,0)}BINLOG_ADMIN(){return this.getToken(FC.BINLOG_ADMIN,0)}BINLOG_ENCRYPTION_ADMIN(){return this.getToken(FC.BINLOG_ENCRYPTION_ADMIN,0)}CLONE_ADMIN(){return this.getToken(FC.CLONE_ADMIN,0)}CONNECTION_ADMIN(){return this.getToken(FC.CONNECTION_ADMIN,0)}ENCRYPTION_KEY_ADMIN(){return this.getToken(FC.ENCRYPTION_KEY_ADMIN,0)}FIREWALL_ADMIN(){return this.getToken(FC.FIREWALL_ADMIN,0)}FIREWALL_EXEMPT(){return this.getToken(FC.FIREWALL_EXEMPT,0)}FIREWALL_USER(){return this.getToken(FC.FIREWALL_USER,0)}FLUSH_OPTIMIZER_COSTS(){return this.getToken(FC.FLUSH_OPTIMIZER_COSTS,0)}FLUSH_STATUS(){return this.getToken(FC.FLUSH_STATUS,0)}FLUSH_TABLES(){return this.getToken(FC.FLUSH_TABLES,0)}FLUSH_USER_RESOURCES(){return this.getToken(FC.FLUSH_USER_RESOURCES,0)}GROUP_REPLICATION_ADMIN(){return this.getToken(FC.GROUP_REPLICATION_ADMIN,0)}INNODB_REDO_LOG_ARCHIVE(){return this.getToken(FC.INNODB_REDO_LOG_ARCHIVE,0)}INNODB_REDO_LOG_ENABLE(){return this.getToken(FC.INNODB_REDO_LOG_ENABLE,0)}NDB_STORED_USER(){return this.getToken(FC.NDB_STORED_USER,0)}PASSWORDLESS_USER_ADMIN(){return this.getToken(FC.PASSWORDLESS_USER_ADMIN,0)}PERSIST_RO_VARIABLES_ADMIN(){return this.getToken(FC.PERSIST_RO_VARIABLES_ADMIN,0)}REPLICATION_APPLIER(){return this.getToken(FC.REPLICATION_APPLIER,0)}REPLICATION_SLAVE_ADMIN(){return this.getToken(FC.REPLICATION_SLAVE_ADMIN,0)}RESOURCE_GROUP_ADMIN(){return this.getToken(FC.RESOURCE_GROUP_ADMIN,0)}RESOURCE_GROUP_USER(){return this.getToken(FC.RESOURCE_GROUP_USER,0)}ROLE_ADMIN(){return this.getToken(FC.ROLE_ADMIN,0)}SERVICE_CONNECTION_ADMIN(){return this.getToken(FC.SERVICE_CONNECTION_ADMIN,0)}SESSION_VARIABLES_ADMIN(){return this.getToken(FC.SESSION_VARIABLES_ADMIN,0)}SET_USER_ID(){return this.getToken(FC.SET_USER_ID,0)}SKIP_QUERY_REWRITE(){return this.getToken(FC.SKIP_QUERY_REWRITE,0)}SHOW_ROUTINE(){return this.getToken(FC.SHOW_ROUTINE,0)}SYSTEM_USER(){return this.getToken(FC.SYSTEM_USER,0)}SYSTEM_VARIABLES_ADMIN(){return this.getToken(FC.SYSTEM_VARIABLES_ADMIN,0)}TABLE_ENCRYPTION_ADMIN(){return this.getToken(FC.TABLE_ENCRYPTION_ADMIN,0)}TP_CONNECTION_ADMIN(){return this.getToken(FC.TP_CONNECTION_ADMIN,0)}VERSION_TOKEN_ADMIN(){return this.getToken(FC.VERSION_TOKEN_ADMIN,0)}XA_RECOVER_ADMIN(){return this.getToken(FC.XA_RECOVER_ADMIN,0)}LOAD(){return this.getToken(FC.LOAD,0)}FROM(){return this.getToken(FC.FROM,0)}S3(){return this.getToken(FC.S3,0)}INTO(){return this.getToken(FC.INTO,0)}INVOKE(){return this.getToken(FC.INVOKE,0)}LAMBDA(){return this.getToken(FC.LAMBDA,0)}get ruleIndex(){return FC.RULE_privilege}accept(t){return t.visitPrivilege?t.visitPrivilege(this):t.visitChildren(this)}},bp=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_privilegeLevel}copyFrom(t){super.copyFrom(t)}},Wp=class extends bp{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}uid(){return this.getRuleContext(0,Vx)}DOT(){return this.getToken(FC.DOT,0)}STAR(){return this.getToken(FC.STAR,0)}accept(t){return t.visitDefiniteSchemaPrivLevel?t.visitDefiniteSchemaPrivLevel(this):t.visitChildren(this)}},Vp=class extends bp{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}uid(){return this.getRuleContext(0,Vx)}dottedId(){return this.getRuleContext(0,Kx)}accept(t){return t.visitDefiniteFullTablePrivLevel2?t.visitDefiniteFullTablePrivLevel2(this):t.visitChildren(this)}},Xp=class extends bp{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}DOT(){return this.getToken(FC.DOT,0)}accept(t){return t.visitDefiniteFullTablePrivLevel?t.visitDefiniteFullTablePrivLevel(this):t.visitChildren(this)}},Kp=class extends bp{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}STAR(t){return void 0===t?this.getTokens(FC.STAR):this.getToken(FC.STAR,t)}DOT(){return this.getToken(FC.DOT,0)}accept(t){return t.visitGlobalPrivLevel?t.visitGlobalPrivLevel(this):t.visitChildren(this)}},Qp=class extends bp{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}uid(){return this.getRuleContext(0,Vx)}accept(t){return t.visitDefiniteTablePrivLevel?t.visitDefiniteTablePrivLevel(this):t.visitChildren(this)}},Jp=class extends bp{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}STAR(){return this.getToken(FC.STAR,0)}accept(t){return t.visitCurrentSchemaPriviLevel?t.visitCurrentSchemaPriviLevel(this):t.visitChildren(this)}},Zp=class extends ga{constructor(t,e){super(t,e)}userName(){return this.getRuleContext(0,Gx)}TO(){return this.getToken(FC.TO,0)}newUserName(){return this.getRuleContext(0,Hx)}get ruleIndex(){return FC.RULE_renameUserClause}accept(t){return t.visitRenameUserClause?t.visitRenameUserClause(this):t.visitChildren(this)}},qp=class extends ga{constructor(t,e){super(t,e)}ANALYZE(){return this.getToken(FC.ANALYZE,0)}tables(){return this.getRuleContext(0,Ik)}TABLE(){return this.getToken(FC.TABLE,0)}TABLES(){return this.getToken(FC.TABLES,0)}UPDATE(){return this.getToken(FC.UPDATE,0)}HISTOGRAM(t){return void 0===t?this.getTokens(FC.HISTOGRAM):this.getToken(FC.HISTOGRAM,t)}ON(t){return void 0===t?this.getTokens(FC.ON):this.getToken(FC.ON,t)}fullColumnName(t){return void 0===t?this.getRuleContexts(Px):this.getRuleContext(t,Px)}DROP(){return this.getToken(FC.DROP,0)}NO_WRITE_TO_BINLOG(){return this.getToken(FC.NO_WRITE_TO_BINLOG,0)}LOCAL(){return this.getToken(FC.LOCAL,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}WITH(){return this.getToken(FC.WITH,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}BUCKETS(){return this.getToken(FC.BUCKETS,0)}get ruleIndex(){return FC.RULE_analyzeTable}accept(t){return t.visitAnalyzeTable?t.visitAnalyzeTable(this):t.visitChildren(this)}},jp=class extends ga{constructor(t,e){super(t,e)}CHECK(){return this.getToken(FC.CHECK,0)}TABLE(){return this.getToken(FC.TABLE,0)}tables(){return this.getRuleContext(0,Ik)}checkTableOption(t){return void 0===t?this.getRuleContexts(eg):this.getRuleContext(t,eg)}get ruleIndex(){return FC.RULE_checkTable}accept(t){return t.visitCheckTable?t.visitCheckTable(this):t.visitChildren(this)}},zp=class extends ga{constructor(t,e){super(t,e)}CHECKSUM(){return this.getToken(FC.CHECKSUM,0)}TABLE(){return this.getToken(FC.TABLE,0)}tables(){return this.getRuleContext(0,Ik)}QUICK(){return this.getToken(FC.QUICK,0)}EXTENDED(){return this.getToken(FC.EXTENDED,0)}get ruleIndex(){return FC.RULE_checksumTable}accept(t){return t.visitChecksumTable?t.visitChecksumTable(this):t.visitChildren(this)}},$p=class extends ga{constructor(t,e){super(t,e)}OPTIMIZE(){return this.getToken(FC.OPTIMIZE,0)}tables(){return this.getRuleContext(0,Ik)}TABLE(){return this.getToken(FC.TABLE,0)}TABLES(){return this.getToken(FC.TABLES,0)}NO_WRITE_TO_BINLOG(){return this.getToken(FC.NO_WRITE_TO_BINLOG,0)}LOCAL(){return this.getToken(FC.LOCAL,0)}get ruleIndex(){return FC.RULE_optimizeTable}accept(t){return t.visitOptimizeTable?t.visitOptimizeTable(this):t.visitChildren(this)}},tg=class extends ga{constructor(t,e){super(t,e)}REPAIR(){return this.getToken(FC.REPAIR,0)}TABLE(){return this.getToken(FC.TABLE,0)}tables(){return this.getRuleContext(0,Ik)}QUICK(){return this.getToken(FC.QUICK,0)}EXTENDED(){return this.getToken(FC.EXTENDED,0)}USE_FRM(){return this.getToken(FC.USE_FRM,0)}NO_WRITE_TO_BINLOG(){return this.getToken(FC.NO_WRITE_TO_BINLOG,0)}LOCAL(){return this.getToken(FC.LOCAL,0)}get ruleIndex(){return FC.RULE_repairTable}accept(t){return t.visitRepairTable?t.visitRepairTable(this):t.visitChildren(this)}},eg=class extends ga{constructor(t,e){super(t,e)}FOR(){return this.getToken(FC.FOR,0)}UPGRADE(){return this.getToken(FC.UPGRADE,0)}QUICK(){return this.getToken(FC.QUICK,0)}FAST(){return this.getToken(FC.FAST,0)}MEDIUM(){return this.getToken(FC.MEDIUM,0)}EXTENDED(){return this.getToken(FC.EXTENDED,0)}CHANGED(){return this.getToken(FC.CHANGED,0)}get ruleIndex(){return FC.RULE_checkTableOption}accept(t){return t.visitCheckTableOption?t.visitCheckTableOption(this):t.visitChildren(this)}},sg=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(FC.CREATE,0)}FUNCTION(){return this.getToken(FC.FUNCTION,0)}uid(){return this.getRuleContext(0,Vx)}RETURNS(){return this.getToken(FC.RETURNS,0)}SONAME(){return this.getToken(FC.SONAME,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}STRING(){return this.getToken(FC.STRING,0)}INTEGER(){return this.getToken(FC.INTEGER,0)}REAL(){return this.getToken(FC.REAL,0)}DECIMAL(){return this.getToken(FC.DECIMAL,0)}AGGREGATE(){return this.getToken(FC.AGGREGATE,0)}ifNotExists(){return this.getRuleContext(0,Dk)}get ruleIndex(){return FC.RULE_createUdfunction}accept(t){return t.visitCreateUdfunction?t.visitCreateUdfunction(this):t.visitChildren(this)}},ag=class extends ga{constructor(t,e){super(t,e)}INSTALL(){return this.getToken(FC.INSTALL,0)}PLUGIN(){return this.getToken(FC.PLUGIN,0)}uid(){return this.getRuleContext(0,Vx)}SONAME(){return this.getToken(FC.SONAME,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}get ruleIndex(){return FC.RULE_installPlugin}accept(t){return t.visitInstallPlugin?t.visitInstallPlugin(this):t.visitChildren(this)}},rg=class extends ga{constructor(t,e){super(t,e)}UNINSTALL(){return this.getToken(FC.UNINSTALL,0)}PLUGIN(){return this.getToken(FC.PLUGIN,0)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_uninstallPlugin}accept(t){return t.visitUninstallPlugin?t.visitUninstallPlugin(this):t.visitChildren(this)}},ig=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_setStatement}copyFrom(t){super.copyFrom(t)}},cg=class extends ig{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}setTransactionStatement(){return this.getRuleContext(0,km)}accept(t){return t.visitSetTransaction?t.visitSetTransaction(this):t.visitChildren(this)}},ng=class extends ig{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SET(){return this.getToken(FC.SET,0)}charSet(){return this.getRuleContext(0,S_)}charsetName(){return this.getRuleContext(0,vx)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}accept(t){return t.visitSetCharset?t.visitSetCharset(this):t.visitChildren(this)}},hg=class extends ig{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SET(){return this.getToken(FC.SET,0)}NAMES(){return this.getToken(FC.NAMES,0)}charsetName(){return this.getRuleContext(0,vx)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}COLLATE(){return this.getToken(FC.COLLATE,0)}collationName(){return this.getRuleContext(0,Bx)}accept(t){return t.visitSetNames?t.visitSetNames(this):t.visitChildren(this)}},Eg=class extends ig{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}setPasswordStatement(){return this.getRuleContext(0,Pp)}accept(t){return t.visitSetPassword?t.visitSetPassword(this):t.visitChildren(this)}},Tg=class extends ig{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}setAutocommitStatement(){return this.getRuleContext(0,xm)}accept(t){return t.visitSetAutocommit?t.visitSetAutocommit(this):t.visitChildren(this)}},og=class extends ig{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SET(){return this.getToken(FC.SET,0)}fullId(t){return void 0===t?this.getRuleContexts(Sx):this.getRuleContext(t,Sx)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}VAR_ASSIGN(t){return void 0===t?this.getTokens(FC.VAR_ASSIGN):this.getToken(FC.VAR_ASSIGN,t)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitSetNewValueInsideTrigger?t.visitSetNewValueInsideTrigger(this):t.visitChildren(this)}},Rg=class extends ig{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SET(){return this.getToken(FC.SET,0)}variableClause(t){return void 0===t?this.getRuleContexts(Gg):this.getRuleContext(t,Gg)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}VAR_ASSIGN(t){return void 0===t?this.getTokens(FC.VAR_ASSIGN):this.getToken(FC.VAR_ASSIGN,t)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}ON(t){return void 0===t?this.getTokens(FC.ON):this.getToken(FC.ON,t)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitSetVariable?t.visitSetVariable(this):t.visitChildren(this)}},Ag=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_showStatement}copyFrom(t){super.copyFrom(t)}},Sg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}OPEN(){return this.getToken(FC.OPEN,0)}TABLES(){return this.getToken(FC.TABLES,0)}uid(){return this.getRuleContext(0,Vx)}showFilter(){return this.getRuleContext(0,vg)}FROM(){return this.getToken(FC.FROM,0)}IN(){return this.getToken(FC.IN,0)}accept(t){return t.visitShowOpenTables?t.visitShowOpenTables(this):t.visitChildren(this)}},lg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}showGlobalInfoClause(){return this.getRuleContext(0,Bg)}accept(t){return t.visitShowGlobalInfo?t.visitShowGlobalInfo(this):t.visitChildren(this)}},Og=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}CREATE(){return this.getToken(FC.CREATE,0)}fullId(){return this.getRuleContext(0,Sx)}EVENT(){return this.getToken(FC.EVENT,0)}FUNCTION(){return this.getToken(FC.FUNCTION,0)}PROCEDURE(){return this.getToken(FC.PROCEDURE,0)}accept(t){return t.visitShowCreateFullIdObject?t.visitShowCreateFullIdObject(this):t.visitChildren(this)}},Ig=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}CREATE(){return this.getToken(FC.CREATE,0)}USER(){return this.getToken(FC.USER,0)}userName(){return this.getRuleContext(0,Gx)}accept(t){return t.visitShowCreateUser?t.visitShowCreateUser(this):t.visitChildren(this)}},ug=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}ERRORS(){return this.getToken(FC.ERRORS,0)}WARNINGS(){return this.getToken(FC.WARNINGS,0)}LIMIT(){return this.getToken(FC.LIMIT,0)}decimalLiteral(t){return void 0===t?this.getRuleContexts(Qx):this.getRuleContext(t,Qx)}COMMA(){return this.getToken(FC.COMMA,0)}accept(t){return t.visitShowErrors?t.visitShowErrors(this):t.visitChildren(this)}},Ng=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}COUNT(){return this.getToken(FC.COUNT,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}STAR(){return this.getToken(FC.STAR,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}ERRORS(){return this.getToken(FC.ERRORS,0)}WARNINGS(){return this.getToken(FC.WARNINGS,0)}accept(t){return t.visitShowCountErrors?t.visitShowCountErrors(this):t.visitChildren(this)}},Lg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}showCommonEntity(){return this.getRuleContext(0,Fg)}showFilter(){return this.getRuleContext(0,vg)}accept(t){return t.visitShowObjectFilter?t.visitShowObjectFilter(this):t.visitChildren(this)}},Cg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}CREATE(){return this.getToken(FC.CREATE,0)}databaseName(){return this.getRuleContext(0,Mx)}DATABASE(){return this.getToken(FC.DATABASE,0)}SCHEMA(){return this.getToken(FC.SCHEMA,0)}ifNotExists(){return this.getRuleContext(0,Dk)}accept(t){return t.visitShowCreateDb?t.visitShowCreateDb(this):t.visitChildren(this)}},_g=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}ENGINE(){return this.getToken(FC.ENGINE,0)}engineName(){return this.getRuleContext(0,yx)}STATUS(){return this.getToken(FC.STATUS,0)}MUTEX(){return this.getToken(FC.MUTEX,0)}accept(t){return t.visitShowEngine?t.visitShowEngine(this):t.visitChildren(this)}},Pg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}showSchemaEntity(){return this.getRuleContext(0,yg)}uid(){return this.getRuleContext(0,Vx)}showFilter(){return this.getRuleContext(0,vg)}FROM(){return this.getToken(FC.FROM,0)}IN(){return this.getToken(FC.IN,0)}accept(t){return t.visitShowSchemaFilter?t.visitShowSchemaFilter(this):t.visitChildren(this)}},Mg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}tableName(){return this.getRuleContext(0,lx)}INDEX(){return this.getToken(FC.INDEX,0)}INDEXES(){return this.getToken(FC.INDEXES,0)}KEYS(){return this.getToken(FC.KEYS,0)}FROM(t){return void 0===t?this.getTokens(FC.FROM):this.getToken(FC.FROM,t)}IN(t){return void 0===t?this.getTokens(FC.IN):this.getToken(FC.IN,t)}uid(){return this.getRuleContext(0,Vx)}WHERE(){return this.getToken(FC.WHERE,0)}expression(){return this.getRuleContext(0,NH)}accept(t){return t.visitShowIndexes?t.visitShowIndexes(this):t.visitChildren(this)}},dg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}EVENTS(){return this.getToken(FC.EVENTS,0)}BINLOG(){return this.getToken(FC.BINLOG,0)}RELAYLOG(){return this.getToken(FC.RELAYLOG,0)}IN(){return this.getToken(FC.IN,0)}FROM(){return this.getToken(FC.FROM,0)}LIMIT(){return this.getToken(FC.LIMIT,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}decimalLiteral(t){return void 0===t?this.getRuleContexts(Qx):this.getRuleContext(t,Qx)}COMMA(){return this.getToken(FC.COMMA,0)}accept(t){return t.visitShowLogEvents?t.visitShowLogEvents(this):t.visitChildren(this)}},Ug=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}CREATE(){return this.getToken(FC.CREATE,0)}TRIGGER(){return this.getToken(FC.TRIGGER,0)}triggerName(){return this.getRuleContext(0,mx)}accept(t){return t.visitShowCreateTrigger?t.visitShowCreateTrigger(this):t.visitChildren(this)}},mg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}LOGS(){return this.getToken(FC.LOGS,0)}BINARY(){return this.getToken(FC.BINARY,0)}MASTER(){return this.getToken(FC.MASTER,0)}accept(t){return t.visitShowMasterLogs?t.visitShowMasterLogs(this):t.visitChildren(this)}},Dg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}GRANTS(){return this.getToken(FC.GRANTS,0)}FOR(){return this.getToken(FC.FOR,0)}userName(){return this.getRuleContext(0,Gx)}accept(t){return t.visitShowGrants?t.visitShowGrants(this):t.visitChildren(this)}},pg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}SLAVE(){return this.getToken(FC.SLAVE,0)}STATUS(){return this.getToken(FC.STATUS,0)}FOR(){return this.getToken(FC.FOR,0)}CHANNEL(){return this.getToken(FC.CHANNEL,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}accept(t){return t.visitShowSlaveStatus?t.visitShowSlaveStatus(this):t.visitChildren(this)}},gg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}CODE(){return this.getToken(FC.CODE,0)}fullId(){return this.getRuleContext(0,Sx)}FUNCTION(){return this.getToken(FC.FUNCTION,0)}PROCEDURE(){return this.getToken(FC.PROCEDURE,0)}accept(t){return t.visitShowRoutine?t.visitShowRoutine(this):t.visitChildren(this)}},xg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}PROFILE(){return this.getToken(FC.PROFILE,0)}showProfileType(t){return void 0===t?this.getRuleContexts(fg):this.getRuleContext(t,fg)}LIMIT(){return this.getToken(FC.LIMIT,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}FOR(){return this.getToken(FC.FOR,0)}QUERY(){return this.getToken(FC.QUERY,0)}decimalLiteral(t){return void 0===t?this.getRuleContexts(Qx):this.getRuleContext(t,Qx)}accept(t){return t.visitShowProfile?t.visitShowProfile(this):t.visitChildren(this)}},kg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}tableName(){return this.getRuleContext(0,lx)}COLUMNS(){return this.getToken(FC.COLUMNS,0)}FIELDS(){return this.getToken(FC.FIELDS,0)}FROM(t){return void 0===t?this.getTokens(FC.FROM):this.getToken(FC.FROM,t)}IN(t){return void 0===t?this.getTokens(FC.IN):this.getToken(FC.IN,t)}FULL(){return this.getToken(FC.FULL,0)}uid(){return this.getRuleContext(0,Vx)}showFilter(){return this.getRuleContext(0,vg)}accept(t){return t.visitShowColumns?t.visitShowColumns(this):t.visitChildren(this)}},Hg=class extends Ag{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(FC.SHOW,0)}CREATE(){return this.getToken(FC.CREATE,0)}tableName(){return this.getRuleContext(0,lx)}TABLE(){return this.getToken(FC.TABLE,0)}VIEW(){return this.getToken(FC.VIEW,0)}accept(t){return t.visitShowCreateTableOrView?t.visitShowCreateTableOrView(this):t.visitChildren(this)}},Gg=class extends ga{constructor(t,e){super(t,e)}LOCAL_ID(){return this.getToken(FC.LOCAL_ID,0)}GLOBAL_ID(){return this.getToken(FC.GLOBAL_ID,0)}uid(){return this.getRuleContext(0,Vx)}GLOBAL(){return this.getToken(FC.GLOBAL,0)}SESSION(){return this.getToken(FC.SESSION,0)}LOCAL(){return this.getToken(FC.LOCAL,0)}AT_SIGN(t){return void 0===t?this.getTokens(FC.AT_SIGN):this.getToken(FC.AT_SIGN,t)}get ruleIndex(){return FC.RULE_variableClause}accept(t){return t.visitVariableClause?t.visitVariableClause(this):t.visitChildren(this)}},Fg=class extends ga{constructor(t,e){super(t,e)}CHARACTER(){return this.getToken(FC.CHARACTER,0)}SET(){return this.getToken(FC.SET,0)}COLLATION(){return this.getToken(FC.COLLATION,0)}DATABASES(){return this.getToken(FC.DATABASES,0)}SCHEMAS(){return this.getToken(FC.SCHEMAS,0)}FUNCTION(){return this.getToken(FC.FUNCTION,0)}STATUS(){return this.getToken(FC.STATUS,0)}PROCEDURE(){return this.getToken(FC.PROCEDURE,0)}VARIABLES(){return this.getToken(FC.VARIABLES,0)}GLOBAL(){return this.getToken(FC.GLOBAL,0)}SESSION(){return this.getToken(FC.SESSION,0)}get ruleIndex(){return FC.RULE_showCommonEntity}accept(t){return t.visitShowCommonEntity?t.visitShowCommonEntity(this):t.visitChildren(this)}},vg=class extends ga{constructor(t,e){super(t,e)}LIKE(){return this.getToken(FC.LIKE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}WHERE(){return this.getToken(FC.WHERE,0)}expression(){return this.getRuleContext(0,NH)}get ruleIndex(){return FC.RULE_showFilter}accept(t){return t.visitShowFilter?t.visitShowFilter(this):t.visitChildren(this)}},Bg=class extends ga{constructor(t,e){super(t,e)}ENGINES(){return this.getToken(FC.ENGINES,0)}STORAGE(){return this.getToken(FC.STORAGE,0)}MASTER(){return this.getToken(FC.MASTER,0)}STATUS(){return this.getToken(FC.STATUS,0)}PLUGINS(){return this.getToken(FC.PLUGINS,0)}PRIVILEGES(){return this.getToken(FC.PRIVILEGES,0)}PROCESSLIST(){return this.getToken(FC.PROCESSLIST,0)}FULL(){return this.getToken(FC.FULL,0)}PROFILES(){return this.getToken(FC.PROFILES,0)}SLAVE(){return this.getToken(FC.SLAVE,0)}HOSTS(){return this.getToken(FC.HOSTS,0)}AUTHORS(){return this.getToken(FC.AUTHORS,0)}CONTRIBUTORS(){return this.getToken(FC.CONTRIBUTORS,0)}get ruleIndex(){return FC.RULE_showGlobalInfoClause}accept(t){return t.visitShowGlobalInfoClause?t.visitShowGlobalInfoClause(this):t.visitChildren(this)}},yg=class extends ga{constructor(t,e){super(t,e)}EVENTS(){return this.getToken(FC.EVENTS,0)}TABLE(){return this.getToken(FC.TABLE,0)}STATUS(){return this.getToken(FC.STATUS,0)}TABLES(){return this.getToken(FC.TABLES,0)}FULL(){return this.getToken(FC.FULL,0)}TRIGGERS(){return this.getToken(FC.TRIGGERS,0)}get ruleIndex(){return FC.RULE_showSchemaEntity}accept(t){return t.visitShowSchemaEntity?t.visitShowSchemaEntity(this):t.visitChildren(this)}},fg=class extends ga{constructor(t,e){super(t,e)}ALL(){return this.getToken(FC.ALL,0)}BLOCK(){return this.getToken(FC.BLOCK,0)}IO(){return this.getToken(FC.IO,0)}CONTEXT(){return this.getToken(FC.CONTEXT,0)}SWITCHES(){return this.getToken(FC.SWITCHES,0)}CPU(){return this.getToken(FC.CPU,0)}IPC(){return this.getToken(FC.IPC,0)}MEMORY(){return this.getToken(FC.MEMORY,0)}PAGE(){return this.getToken(FC.PAGE,0)}FAULTS(){return this.getToken(FC.FAULTS,0)}SOURCE(){return this.getToken(FC.SOURCE,0)}SWAPS(){return this.getToken(FC.SWAPS,0)}get ruleIndex(){return FC.RULE_showProfileType}accept(t){return t.visitShowProfileType?t.visitShowProfileType(this):t.visitChildren(this)}},Yg=class extends ga{constructor(t,e){super(t,e)}BINLOG(){return this.getToken(FC.BINLOG,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}get ruleIndex(){return FC.RULE_binlogStatement}accept(t){return t.visitBinlogStatement?t.visitBinlogStatement(this):t.visitChildren(this)}},wg=class extends ga{constructor(t,e){super(t,e)}CACHE(){return this.getToken(FC.CACHE,0)}INDEX(){return this.getToken(FC.INDEX,0)}tableIndexes(t){return void 0===t?this.getRuleContexts(Qg):this.getRuleContext(t,Qg)}IN(){return this.getToken(FC.IN,0)}uid(){return this.getRuleContext(0,Vx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}PARTITION(){return this.getToken(FC.PARTITION,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}uidList(){return this.getRuleContext(0,lk)}ALL(){return this.getToken(FC.ALL,0)}get ruleIndex(){return FC.RULE_cacheIndexStatement}accept(t){return t.visitCacheIndexStatement?t.visitCacheIndexStatement(this):t.visitChildren(this)}},bg=class extends ga{constructor(t,e){super(t,e)}FLUSH(){return this.getToken(FC.FLUSH,0)}flushOption(t){return void 0===t?this.getRuleContexts(Jg):this.getRuleContext(t,Jg)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}NO_WRITE_TO_BINLOG(){return this.getToken(FC.NO_WRITE_TO_BINLOG,0)}LOCAL(){return this.getToken(FC.LOCAL,0)}get ruleIndex(){return FC.RULE_flushStatement}accept(t){return t.visitFlushStatement?t.visitFlushStatement(this):t.visitChildren(this)}},Wg=class extends ga{constructor(t,e){super(t,e)}KILL(){return this.getToken(FC.KILL,0)}expression(){return this.getRuleContext(0,NH)}CONNECTION(){return this.getToken(FC.CONNECTION,0)}QUERY(){return this.getToken(FC.QUERY,0)}get ruleIndex(){return FC.RULE_killStatement}accept(t){return t.visitKillStatement?t.visitKillStatement(this):t.visitChildren(this)}},Vg=class extends ga{constructor(t,e){super(t,e)}LOAD(){return this.getToken(FC.LOAD,0)}INDEX(){return this.getToken(FC.INDEX,0)}INTO(){return this.getToken(FC.INTO,0)}CACHE(){return this.getToken(FC.CACHE,0)}loadedTableIndexes(t){return void 0===t?this.getRuleContexts($g):this.getRuleContext(t,$g)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_loadIndexIntoCache}accept(t){return t.visitLoadIndexIntoCache?t.visitLoadIndexIntoCache(this):t.visitChildren(this)}},Xg=class extends ga{constructor(t,e){super(t,e)}RESET(){return this.getToken(FC.RESET,0)}QUERY(){return this.getToken(FC.QUERY,0)}CACHE(){return this.getToken(FC.CACHE,0)}get ruleIndex(){return FC.RULE_resetStatement}accept(t){return t.visitResetStatement?t.visitResetStatement(this):t.visitChildren(this)}},Kg=class extends ga{constructor(t,e){super(t,e)}SHUTDOWN(){return this.getToken(FC.SHUTDOWN,0)}get ruleIndex(){return FC.RULE_shutdownStatement}accept(t){return t.visitShutdownStatement?t.visitShutdownStatement(this):t.visitChildren(this)}},Qg=class extends ga{constructor(t,e){super(t,e)}tableName(){return this.getRuleContext(0,lx)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}indexNameList(){return this.getRuleContext(0,Dx)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}INDEX(){return this.getToken(FC.INDEX,0)}KEY(){return this.getToken(FC.KEY,0)}get ruleIndex(){return FC.RULE_tableIndexes}accept(t){return t.visitTableIndexes?t.visitTableIndexes(this):t.visitChildren(this)}},Jg=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_flushOption}copyFrom(t){super.copyFrom(t)}},Zg=class extends Jg{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}TABLE(){return this.getToken(FC.TABLE,0)}TABLES(){return this.getToken(FC.TABLES,0)}tables(){return this.getRuleContext(0,Ik)}flushTableOption(){return this.getRuleContext(0,zg)}accept(t){return t.visitTableFlushOption?t.visitTableFlushOption(this):t.visitChildren(this)}},qg=class extends Jg{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}RELAY(){return this.getToken(FC.RELAY,0)}LOGS(){return this.getToken(FC.LOGS,0)}channelOption(){return this.getRuleContext(0,sD)}accept(t){return t.visitChannelFlushOption?t.visitChannelFlushOption(this):t.visitChildren(this)}},jg=class extends Jg{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DES_KEY_FILE(){return this.getToken(FC.DES_KEY_FILE,0)}HOSTS(){return this.getToken(FC.HOSTS,0)}LOGS(){return this.getToken(FC.LOGS,0)}OPTIMIZER_COSTS(){return this.getToken(FC.OPTIMIZER_COSTS,0)}PRIVILEGES(){return this.getToken(FC.PRIVILEGES,0)}QUERY(){return this.getToken(FC.QUERY,0)}CACHE(){return this.getToken(FC.CACHE,0)}STATUS(){return this.getToken(FC.STATUS,0)}USER_RESOURCES(){return this.getToken(FC.USER_RESOURCES,0)}TABLES(){return this.getToken(FC.TABLES,0)}WITH(){return this.getToken(FC.WITH,0)}READ(){return this.getToken(FC.READ,0)}LOCK(){return this.getToken(FC.LOCK,0)}BINARY(){return this.getToken(FC.BINARY,0)}ENGINE(){return this.getToken(FC.ENGINE,0)}ERROR(){return this.getToken(FC.ERROR,0)}GENERAL(){return this.getToken(FC.GENERAL,0)}RELAY(){return this.getToken(FC.RELAY,0)}SLOW(){return this.getToken(FC.SLOW,0)}accept(t){return t.visitSimpleFlushOption?t.visitSimpleFlushOption(this):t.visitChildren(this)}},zg=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(FC.WITH,0)}READ(){return this.getToken(FC.READ,0)}LOCK(){return this.getToken(FC.LOCK,0)}FOR(){return this.getToken(FC.FOR,0)}EXPORT(){return this.getToken(FC.EXPORT,0)}get ruleIndex(){return FC.RULE_flushTableOption}accept(t){return t.visitFlushTableOption?t.visitFlushTableOption(this):t.visitChildren(this)}},$g=class extends ga{constructor(t,e){super(t,e)}tableName(){return this.getRuleContext(0,lx)}PARTITION(){return this.getToken(FC.PARTITION,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}indexNameList(){return this.getRuleContext(0,Dx)}IGNORE(){return this.getToken(FC.IGNORE,0)}LEAVES(){return this.getToken(FC.LEAVES,0)}ALL(){return this.getToken(FC.ALL,0)}uidList(){return this.getRuleContext(0,lk)}INDEX(){return this.getToken(FC.INDEX,0)}KEY(){return this.getToken(FC.KEY,0)}get ruleIndex(){return FC.RULE_loadedTableIndexes}accept(t){return t.visitLoadedTableIndexes?t.visitLoadedTableIndexes(this):t.visitChildren(this)}},tx=class extends ga{constructor(t,e){super(t,e)}tableName(){return this.getRuleContext(0,lx)}EXPLAIN(){return this.getToken(FC.EXPLAIN,0)}DESCRIBE(){return this.getToken(FC.DESCRIBE,0)}DESC(){return this.getToken(FC.DESC,0)}uid(){return this.getRuleContext(0,Vx)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}get ruleIndex(){return FC.RULE_simpleDescribeStatement}accept(t){return t.visitSimpleDescribeStatement?t.visitSimpleDescribeStatement(this):t.visitChildren(this)}},ex=class extends ga{constructor(t,e){super(t,e)}describeObjectClause(){return this.getRuleContext(0,ox)}EXPLAIN(){return this.getToken(FC.EXPLAIN,0)}DESCRIBE(){return this.getToken(FC.DESCRIBE,0)}DESC(){return this.getToken(FC.DESC,0)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}EXTENDED(){return this.getToken(FC.EXTENDED,0)}PARTITIONS(){return this.getToken(FC.PARTITIONS,0)}FORMAT(){return this.getToken(FC.FORMAT,0)}TRADITIONAL(){return this.getToken(FC.TRADITIONAL,0)}JSON(){return this.getToken(FC.JSON,0)}get ruleIndex(){return FC.RULE_fullDescribeStatement}accept(t){return t.visitFullDescribeStatement?t.visitFullDescribeStatement(this):t.visitChildren(this)}},sx=class extends ga{constructor(t,e){super(t,e)}HELP(){return this.getToken(FC.HELP,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}get ruleIndex(){return FC.RULE_helpStatement}accept(t){return t.visitHelpStatement?t.visitHelpStatement(this):t.visitChildren(this)}},ax=class extends ga{constructor(t,e){super(t,e)}USE(){return this.getToken(FC.USE,0)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_useStatement}accept(t){return t.visitUseStatement?t.visitUseStatement(this):t.visitChildren(this)}},rx=class extends ga{constructor(t,e){super(t,e)}SIGNAL(){return this.getToken(FC.SIGNAL,0)}ID(){return this.getToken(FC.ID,0)}REVERSE_QUOTE_ID(){return this.getToken(FC.REVERSE_QUOTE_ID,0)}SET(){return this.getToken(FC.SET,0)}signalConditionInformation(t){return void 0===t?this.getRuleContexts(cx):this.getRuleContext(t,cx)}SQLSTATE(){return this.getToken(FC.SQLSTATE,0)}stringLiteral(){return this.getRuleContext(0,Zx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}VALUE(){return this.getToken(FC.VALUE,0)}get ruleIndex(){return FC.RULE_signalStatement}accept(t){return t.visitSignalStatement?t.visitSignalStatement(this):t.visitChildren(this)}},ix=class extends ga{constructor(t,e){super(t,e)}RESIGNAL(){return this.getToken(FC.RESIGNAL,0)}ID(){return this.getToken(FC.ID,0)}REVERSE_QUOTE_ID(){return this.getToken(FC.REVERSE_QUOTE_ID,0)}SET(){return this.getToken(FC.SET,0)}signalConditionInformation(t){return void 0===t?this.getRuleContexts(cx):this.getRuleContext(t,cx)}SQLSTATE(){return this.getToken(FC.SQLSTATE,0)}stringLiteral(){return this.getRuleContext(0,Zx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}VALUE(){return this.getToken(FC.VALUE,0)}get ruleIndex(){return FC.RULE_resignalStatement}accept(t){return t.visitResignalStatement?t.visitResignalStatement(this):t.visitChildren(this)}},cx=class extends ga{constructor(t,e){super(t,e)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}CLASS_ORIGIN(){return this.getToken(FC.CLASS_ORIGIN,0)}SUBCLASS_ORIGIN(){return this.getToken(FC.SUBCLASS_ORIGIN,0)}MESSAGE_TEXT(){return this.getToken(FC.MESSAGE_TEXT,0)}MYSQL_ERRNO(){return this.getToken(FC.MYSQL_ERRNO,0)}CONSTRAINT_CATALOG(){return this.getToken(FC.CONSTRAINT_CATALOG,0)}CONSTRAINT_SCHEMA(){return this.getToken(FC.CONSTRAINT_SCHEMA,0)}CONSTRAINT_NAME(){return this.getToken(FC.CONSTRAINT_NAME,0)}CATALOG_NAME(){return this.getToken(FC.CATALOG_NAME,0)}SCHEMA_NAME(){return this.getToken(FC.SCHEMA_NAME,0)}TABLE_NAME(){return this.getToken(FC.TABLE_NAME,0)}COLUMN_NAME(){return this.getToken(FC.COLUMN_NAME,0)}CURSOR_NAME(){return this.getToken(FC.CURSOR_NAME,0)}stringLiteral(){return this.getRuleContext(0,Zx)}DECIMAL_LITERAL(){return this.getToken(FC.DECIMAL_LITERAL,0)}mysqlVariable(){return this.getRuleContext(0,Fx)}simpleId(){return this.getRuleContext(0,Xx)}get ruleIndex(){return FC.RULE_signalConditionInformation}accept(t){return t.visitSignalConditionInformation?t.visitSignalConditionInformation(this):t.visitChildren(this)}},nx=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(FC.WITH,0)}commonTableExpressions(t){return void 0===t?this.getRuleContexts(E_):this.getRuleContext(t,E_)}RECURSIVE(){return this.getToken(FC.RECURSIVE,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_withStatement}accept(t){return t.visitWithStatement?t.visitWithStatement(this):t.visitChildren(this)}},hx=class extends ga{constructor(t,e){super(t,e)}TABLE(){return this.getToken(FC.TABLE,0)}tableName(){return this.getRuleContext(0,lx)}orderByClause(){return this.getRuleContext(0,MU)}limitClause(){return this.getRuleContext(0,Lm)}get ruleIndex(){return FC.RULE_tableStatement}accept(t){return t.visitTableStatement?t.visitTableStatement(this):t.visitChildren(this)}},Ex=class extends ga{constructor(t,e){super(t,e)}GET(){return this.getToken(FC.GET,0)}DIAGNOSTICS(){return this.getToken(FC.DIAGNOSTICS,0)}CURRENT(){return this.getToken(FC.CURRENT,0)}STACKED(){return this.getToken(FC.STACKED,0)}variableClause(t){return void 0===t?this.getRuleContexts(Gg):this.getRuleContext(t,Gg)}EQUAL_SYMBOL(t){return void 0===t?this.getTokens(FC.EQUAL_SYMBOL):this.getToken(FC.EQUAL_SYMBOL,t)}CONDITION(){return this.getToken(FC.CONDITION,0)}diagnosticsConditionInformationName(t){return void 0===t?this.getRuleContexts(Tx):this.getRuleContext(t,Tx)}NUMBER(t){return void 0===t?this.getTokens(FC.NUMBER):this.getToken(FC.NUMBER,t)}ROW_COUNT(t){return void 0===t?this.getTokens(FC.ROW_COUNT):this.getToken(FC.ROW_COUNT,t)}decimalLiteral(){return this.getRuleContext(0,Qx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_diagnosticsStatement}accept(t){return t.visitDiagnosticsStatement?t.visitDiagnosticsStatement(this):t.visitChildren(this)}},Tx=class extends ga{constructor(t,e){super(t,e)}CLASS_ORIGIN(){return this.getToken(FC.CLASS_ORIGIN,0)}SUBCLASS_ORIGIN(){return this.getToken(FC.SUBCLASS_ORIGIN,0)}RETURNED_SQLSTATE(){return this.getToken(FC.RETURNED_SQLSTATE,0)}MESSAGE_TEXT(){return this.getToken(FC.MESSAGE_TEXT,0)}MYSQL_ERRNO(){return this.getToken(FC.MYSQL_ERRNO,0)}CONSTRAINT_CATALOG(){return this.getToken(FC.CONSTRAINT_CATALOG,0)}CONSTRAINT_SCHEMA(){return this.getToken(FC.CONSTRAINT_SCHEMA,0)}CONSTRAINT_NAME(){return this.getToken(FC.CONSTRAINT_NAME,0)}CATALOG_NAME(){return this.getToken(FC.CATALOG_NAME,0)}SCHEMA_NAME(){return this.getToken(FC.SCHEMA_NAME,0)}TABLE_NAME(){return this.getToken(FC.TABLE_NAME,0)}COLUMN_NAME(){return this.getToken(FC.COLUMN_NAME,0)}CURSOR_NAME(){return this.getToken(FC.CURSOR_NAME,0)}get ruleIndex(){return FC.RULE_diagnosticsConditionInformationName}accept(t){return t.visitDiagnosticsConditionInformationName?t.visitDiagnosticsConditionInformationName(this):t.visitChildren(this)}},ox=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_describeObjectClause}copyFrom(t){super.copyFrom(t)}},Rx=class extends ox{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}selectStatement(){return this.getRuleContext(0,rU)}deleteStatement(){return this.getRuleContext(0,jd)}insertStatement(){return this.getRuleContext(0,tU)}replaceStatement(){return this.getRuleContext(0,aU)}updateStatement(){return this.getRuleContext(0,TU)}accept(t){return t.visitDescribeStatements?t.visitDescribeStatements(this):t.visitChildren(this)}},Ax=class extends ox{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}FOR(){return this.getToken(FC.FOR,0)}CONNECTION(){return this.getToken(FC.CONNECTION,0)}uid(){return this.getRuleContext(0,Vx)}accept(t){return t.visitDescribeConnection?t.visitDescribeConnection(this):t.visitChildren(this)}},Sx=class extends ga{constructor(t,e){super(t,e)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}DOT_ID(){return this.getToken(FC.DOT_ID,0)}DOT(){return this.getToken(FC.DOT,0)}get ruleIndex(){return FC.RULE_fullId}accept(t){return t.visitFullId?t.visitFullId(this):t.visitChildren(this)}},lx=class extends ga{constructor(t,e){super(t,e)}fullId(){return this.getRuleContext(0,Sx)}get ruleIndex(){return FC.RULE_tableName}accept(t){return t.visitTableName?t.visitTableName(this):t.visitChildren(this)}},Ox=class extends ga{constructor(t,e){super(t,e)}tableName(t){return void 0===t?this.getRuleContexts(lx):this.getRuleContext(t,lx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_tableNames}accept(t){return t.visitTableNames?t.visitTableNames(this):t.visitChildren(this)}},Ix=class extends ga{constructor(t,e){super(t,e)}userName(){return this.getRuleContext(0,Gx)}roleName(){return this.getRuleContext(0,_x)}get ruleIndex(){return FC.RULE_userOrRoleName}accept(t){return t.visitUserOrRoleName?t.visitUserOrRoleName(this):t.visitChildren(this)}},ux=class extends ga{constructor(t,e){super(t,e)}userOrRoleName(t){return void 0===t?this.getRuleContexts(Ix):this.getRuleContext(t,Ix)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_userOrRoleNameList}accept(t){return t.visitUserOrRoleNameList?t.visitUserOrRoleNameList(this):t.visitChildren(this)}},Nx=class extends ga{constructor(t,e){super(t,e)}newRoleName(t){return void 0===t?this.getRuleContexts(Lx):this.getRuleContext(t,Lx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_newRoleNameList}accept(t){return t.visitNewRoleNameList?t.visitNewRoleNameList(this):t.visitChildren(this)}},Lx=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_newRoleName}accept(t){return t.visitNewRoleName?t.visitNewRoleName(this):t.visitChildren(this)}},Cx=class extends ga{constructor(t,e){super(t,e)}roleName(t){return void 0===t?this.getRuleContexts(_x):this.getRuleContext(t,_x)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_roleNameList}accept(t){return t.visitRoleNameList?t.visitRoleNameList(this):t.visitChildren(this)}},_x=class extends ga{constructor(t,e){super(t,e)}newRoleName(){return this.getRuleContext(0,Lx)}get ruleIndex(){return FC.RULE_roleName}accept(t){return t.visitRoleName?t.visitRoleName(this):t.visitChildren(this)}},Px=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}dottedId(t){return void 0===t?this.getRuleContexts(Kx):this.getRuleContext(t,Kx)}get ruleIndex(){return FC.RULE_fullColumnName}accept(t){return t.visitFullColumnName?t.visitFullColumnName(this):t.visitChildren(this)}},Mx=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_databaseName}accept(t){return t.visitDatabaseName?t.visitDatabaseName(this):t.visitChildren(this)}},dx=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_indexName}accept(t){return t.visitIndexName?t.visitIndexName(this):t.visitChildren(this)}},Ux=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_constraintName}accept(t){return t.visitConstraintName?t.visitConstraintName(this):t.visitChildren(this)}},mx=class extends ga{constructor(t,e){super(t,e)}fullId(){return this.getRuleContext(0,Sx)}get ruleIndex(){return FC.RULE_triggerName}accept(t){return t.visitTriggerName?t.visitTriggerName(this):t.visitChildren(this)}},Dx=class extends ga{constructor(t,e){super(t,e)}indexName(t){return void 0===t?this.getRuleContexts(dx):this.getRuleContext(t,dx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_indexNameList}accept(t){return t.visitIndexNameList?t.visitIndexNameList(this):t.visitChildren(this)}},px=class extends ga{constructor(t,e){super(t,e)}expression(){return this.getRuleContext(0,NH)}uid(){return this.getRuleContext(0,Vx)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}ASC(){return this.getToken(FC.ASC,0)}DESC(){return this.getToken(FC.DESC,0)}get ruleIndex(){return FC.RULE_indexColumnName}accept(t){return t.visitIndexColumnName?t.visitIndexColumnName(this):t.visitChildren(this)}},gx=class extends ga{constructor(t,e){super(t,e)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}ID(){return this.getToken(FC.ID,0)}ADMIN(){return this.getToken(FC.ADMIN,0)}keywordsCanBeId(){return this.getRuleContext(0,TG)}get ruleIndex(){return FC.RULE_simpleUserName}accept(t){return t.visitSimpleUserName?t.visitSimpleUserName(this):t.visitChildren(this)}},xx=class extends ga{constructor(t,e){super(t,e)}LOCAL_ID(){return this.getToken(FC.LOCAL_ID,0)}HOST_IP_ADDRESS(){return this.getToken(FC.HOST_IP_ADDRESS,0)}AT_SIGN(){return this.getToken(FC.AT_SIGN,0)}get ruleIndex(){return FC.RULE_hostName}accept(t){return t.visitHostName?t.visitHostName(this):t.visitChildren(this)}},kx=class extends ga{constructor(t,e){super(t,e)}userName(t){return void 0===t?this.getRuleContexts(Gx):this.getRuleContext(t,Gx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_userNameList}accept(t){return t.visitUserNameList?t.visitUserNameList(this):t.visitChildren(this)}},Hx=class extends ga{constructor(t,e){super(t,e)}simpleUserName(){return this.getRuleContext(0,gx)}hostName(){return this.getRuleContext(0,xx)}currentUserExpression(){return this.getRuleContext(0,l_)}get ruleIndex(){return FC.RULE_newUserName}accept(t){return t.visitNewUserName?t.visitNewUserName(this):t.visitChildren(this)}},Gx=class extends ga{constructor(t,e){super(t,e)}newUserName(){return this.getRuleContext(0,Hx)}get ruleIndex(){return FC.RULE_userName}accept(t){return t.visitUserName?t.visitUserName(this):t.visitChildren(this)}},Fx=class extends ga{constructor(t,e){super(t,e)}LOCAL_ID(){return this.getToken(FC.LOCAL_ID,0)}GLOBAL_ID(){return this.getToken(FC.GLOBAL_ID,0)}get ruleIndex(){return FC.RULE_mysqlVariable}accept(t){return t.visitMysqlVariable?t.visitMysqlVariable(this):t.visitChildren(this)}},vx=class extends ga{constructor(t,e){super(t,e)}BINARY(){return this.getToken(FC.BINARY,0)}charsetNameBase(){return this.getRuleContext(0,iG)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}CHARSET_REVERSE_QOUTE_STRING(){return this.getToken(FC.CHARSET_REVERSE_QOUTE_STRING,0)}get ruleIndex(){return FC.RULE_charsetName}accept(t){return t.visitCharsetName?t.visitCharsetName(this):t.visitChildren(this)}},Bx=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}get ruleIndex(){return FC.RULE_collationName}accept(t){return t.visitCollationName?t.visitCollationName(this):t.visitChildren(this)}},yx=class extends ga{constructor(t,e){super(t,e)}engineNameBase(){return this.getRuleContext(0,fx)}ID(){return this.getToken(FC.ID,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}get ruleIndex(){return FC.RULE_engineName}accept(t){return t.visitEngineName?t.visitEngineName(this):t.visitChildren(this)}},fx=class extends ga{constructor(t,e){super(t,e)}ARCHIVE(){return this.getToken(FC.ARCHIVE,0)}BLACKHOLE(){return this.getToken(FC.BLACKHOLE,0)}CONNECT(){return this.getToken(FC.CONNECT,0)}CSV(){return this.getToken(FC.CSV,0)}FEDERATED(){return this.getToken(FC.FEDERATED,0)}INNODB(){return this.getToken(FC.INNODB,0)}MEMORY(){return this.getToken(FC.MEMORY,0)}MRG_MYISAM(){return this.getToken(FC.MRG_MYISAM,0)}MYISAM(){return this.getToken(FC.MYISAM,0)}NDB(){return this.getToken(FC.NDB,0)}NDBCLUSTER(){return this.getToken(FC.NDBCLUSTER,0)}PERFORMANCE_SCHEMA(){return this.getToken(FC.PERFORMANCE_SCHEMA,0)}TOKUDB(){return this.getToken(FC.TOKUDB,0)}get ruleIndex(){return FC.RULE_engineNameBase}accept(t){return t.visitEngineNameBase?t.visitEngineNameBase(this):t.visitChildren(this)}},Yx=class extends ga{constructor(t,e){super(t,e)}decimalLiteral(t){return void 0===t?this.getRuleContexts(Qx):this.getRuleContext(t,Qx)}MINUS(t){return void 0===t?this.getTokens(FC.MINUS):this.getToken(FC.MINUS,t)}COLON_SYMB(t){return void 0===t?this.getTokens(FC.COLON_SYMB):this.getToken(FC.COLON_SYMB,t)}get ruleIndex(){return FC.RULE_uuidSet}accept(t){return t.visitUuidSet?t.visitUuidSet(this):t.visitChildren(this)}},wx=class extends ga{constructor(t,e){super(t,e)}xuidStringId(t){return void 0===t?this.getRuleContexts(bx):this.getRuleContext(t,bx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}decimalLiteral(){return this.getRuleContext(0,Qx)}get ruleIndex(){return FC.RULE_xid}accept(t){return t.visitXid?t.visitXid(this):t.visitChildren(this)}},bx=class extends ga{constructor(t,e){super(t,e)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}BIT_STRING(){return this.getToken(FC.BIT_STRING,0)}HEXADECIMAL_LITERAL(t){return void 0===t?this.getTokens(FC.HEXADECIMAL_LITERAL):this.getToken(FC.HEXADECIMAL_LITERAL,t)}get ruleIndex(){return FC.RULE_xuidStringId}accept(t){return t.visitXuidStringId?t.visitXuidStringId(this):t.visitChildren(this)}},Wx=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}get ruleIndex(){return FC.RULE_authPlugin}accept(t){return t.visitAuthPlugin?t.visitAuthPlugin(this):t.visitChildren(this)}},Vx=class extends ga{constructor(t,e){super(t,e)}simpleId(){return this.getRuleContext(0,Xx)}CHARSET_REVERSE_QOUTE_STRING(){return this.getToken(FC.CHARSET_REVERSE_QOUTE_STRING,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}get ruleIndex(){return FC.RULE_uid}accept(t){return t.visitUid?t.visitUid(this):t.visitChildren(this)}},Xx=class extends ga{constructor(t,e){super(t,e)}ID(){return this.getToken(FC.ID,0)}charsetNameBase(){return this.getRuleContext(0,iG)}transactionLevelBase(){return this.getRuleContext(0,cG)}engineNameBase(){return this.getRuleContext(0,fx)}privilegesBase(){return this.getRuleContext(0,nG)}intervalTypeBase(){return this.getRuleContext(0,hG)}dataTypeBase(){return this.getRuleContext(0,EG)}keywordsCanBeId(){return this.getRuleContext(0,TG)}scalarFunctionName(){return this.getRuleContext(0,lH)}get ruleIndex(){return FC.RULE_simpleId}accept(t){return t.visitSimpleId?t.visitSimpleId(this):t.visitChildren(this)}},Kx=class extends ga{constructor(t,e){super(t,e)}DOT_ID(){return this.getToken(FC.DOT_ID,0)}DOT(){return this.getToken(FC.DOT,0)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_dottedId}accept(t){return t.visitDottedId?t.visitDottedId(this):t.visitChildren(this)}},Qx=class extends ga{constructor(t,e){super(t,e)}DECIMAL_LITERAL(){return this.getToken(FC.DECIMAL_LITERAL,0)}ZERO_DECIMAL(){return this.getToken(FC.ZERO_DECIMAL,0)}ONE_DECIMAL(){return this.getToken(FC.ONE_DECIMAL,0)}TWO_DECIMAL(){return this.getToken(FC.TWO_DECIMAL,0)}REAL_LITERAL(){return this.getToken(FC.REAL_LITERAL,0)}get ruleIndex(){return FC.RULE_decimalLiteral}accept(t){return t.visitDecimalLiteral?t.visitDecimalLiteral(this):t.visitChildren(this)}},Jx=class extends ga{constructor(t,e){super(t,e)}FILESIZE_LITERAL(){return this.getToken(FC.FILESIZE_LITERAL,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}get ruleIndex(){return FC.RULE_fileSizeLiteral}accept(t){return t.visitFileSizeLiteral?t.visitFileSizeLiteral(this):t.visitChildren(this)}},Zx=class extends ga{constructor(t,e){super(t,e)}STRING_LITERAL(t){return void 0===t?this.getTokens(FC.STRING_LITERAL):this.getToken(FC.STRING_LITERAL,t)}START_NATIONAL_STRING_LITERAL(){return this.getToken(FC.START_NATIONAL_STRING_LITERAL,0)}STRING_CHARSET_NAME(){return this.getToken(FC.STRING_CHARSET_NAME,0)}COLLATE(){return this.getToken(FC.COLLATE,0)}collationName(){return this.getRuleContext(0,Bx)}get ruleIndex(){return FC.RULE_stringLiteral}accept(t){return t.visitStringLiteral?t.visitStringLiteral(this):t.visitChildren(this)}},qx=class extends ga{constructor(t,e){super(t,e)}TRUE(){return this.getToken(FC.TRUE,0)}FALSE(){return this.getToken(FC.FALSE,0)}get ruleIndex(){return FC.RULE_booleanLiteral}accept(t){return t.visitBooleanLiteral?t.visitBooleanLiteral(this):t.visitChildren(this)}},jx=class extends ga{constructor(t,e){super(t,e)}HEXADECIMAL_LITERAL(){return this.getToken(FC.HEXADECIMAL_LITERAL,0)}STRING_CHARSET_NAME(){return this.getToken(FC.STRING_CHARSET_NAME,0)}get ruleIndex(){return FC.RULE_hexadecimalLiteral}accept(t){return t.visitHexadecimalLiteral?t.visitHexadecimalLiteral(this):t.visitChildren(this)}},zx=class extends ga{constructor(t,e){super(t,e)}NULL_LITERAL(){return this.getToken(FC.NULL_LITERAL,0)}NULL_SPEC_LITERAL(){return this.getToken(FC.NULL_SPEC_LITERAL,0)}NOT(){return this.getToken(FC.NOT,0)}get ruleIndex(){return FC.RULE_nullNotnull}accept(t){return t.visitNullNotnull?t.visitNullNotnull(this):t.visitChildren(this)}},$x=class extends ga{constructor(t,e){super(t,e)}stringLiteral(){return this.getRuleContext(0,Zx)}decimalLiteral(){return this.getRuleContext(0,Qx)}MINUS(){return this.getToken(FC.MINUS,0)}hexadecimalLiteral(){return this.getRuleContext(0,jx)}booleanLiteral(){return this.getRuleContext(0,qx)}REAL_LITERAL(){return this.getToken(FC.REAL_LITERAL,0)}BIT_STRING(){return this.getToken(FC.BIT_STRING,0)}NULL_LITERAL(){return this.getToken(FC.NULL_LITERAL,0)}NULL_SPEC_LITERAL(){return this.getToken(FC.NULL_SPEC_LITERAL,0)}NOT(){return this.getToken(FC.NOT,0)}get ruleIndex(){return FC.RULE_constant}accept(t){return t.visitConstant?t.visitConstant(this):t.visitChildren(this)}},tk=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_dataType}copyFrom(t){super.copyFrom(t)}},ek=class extends tk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}GEOMETRYCOLLECTION(){return this.getToken(FC.GEOMETRYCOLLECTION,0)}GEOMCOLLECTION(){return this.getToken(FC.GEOMCOLLECTION,0)}LINESTRING(){return this.getToken(FC.LINESTRING,0)}MULTILINESTRING(){return this.getToken(FC.MULTILINESTRING,0)}MULTIPOINT(){return this.getToken(FC.MULTIPOINT,0)}MULTIPOLYGON(){return this.getToken(FC.MULTIPOLYGON,0)}POINT(){return this.getToken(FC.POINT,0)}POLYGON(){return this.getToken(FC.POLYGON,0)}JSON(){return this.getToken(FC.JSON,0)}GEOMETRY(){return this.getToken(FC.GEOMETRY,0)}SRID(){return this.getToken(FC.SRID,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}accept(t){return t.visitSpatialDataType?t.visitSpatialDataType(this):t.visitChildren(this)}},sk=class extends tk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LONG(){return this.getToken(FC.LONG,0)}VARBINARY(){return this.getToken(FC.VARBINARY,0)}accept(t){return t.visitLongVarbinaryDataType?t.visitLongVarbinaryDataType(this):t.visitChildren(this)}},ak=class extends tk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}collectionOptions(){return this.getRuleContext(0,Tk)}ENUM(){return this.getToken(FC.ENUM,0)}SET(){return this.getToken(FC.SET,0)}BINARY(){return this.getToken(FC.BINARY,0)}charSet(){return this.getRuleContext(0,S_)}charsetName(){return this.getRuleContext(0,vx)}accept(t){return t.visitCollectionDataType?t.visitCollectionDataType(this):t.visitChildren(this)}},rk=class extends tk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}NATIONAL(){return this.getToken(FC.NATIONAL,0)}VARYING(){return this.getToken(FC.VARYING,0)}CHAR(){return this.getToken(FC.CHAR,0)}CHARACTER(){return this.getToken(FC.CHARACTER,0)}lengthOneDimension(){return this.getRuleContext(0,Rk)}BINARY(){return this.getToken(FC.BINARY,0)}accept(t){return t.visitNationalVaryingStringDataType?t.visitNationalVaryingStringDataType(this):t.visitChildren(this)}},ik=class extends tk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}TINYINT(){return this.getToken(FC.TINYINT,0)}SMALLINT(){return this.getToken(FC.SMALLINT,0)}MEDIUMINT(){return this.getToken(FC.MEDIUMINT,0)}INT(){return this.getToken(FC.INT,0)}INTEGER(){return this.getToken(FC.INTEGER,0)}BIGINT(){return this.getToken(FC.BIGINT,0)}MIDDLEINT(){return this.getToken(FC.MIDDLEINT,0)}INT1(){return this.getToken(FC.INT1,0)}INT2(){return this.getToken(FC.INT2,0)}INT3(){return this.getToken(FC.INT3,0)}INT4(){return this.getToken(FC.INT4,0)}INT8(){return this.getToken(FC.INT8,0)}lengthOneDimension(){return this.getRuleContext(0,Rk)}SIGNED(t){return void 0===t?this.getTokens(FC.SIGNED):this.getToken(FC.SIGNED,t)}UNSIGNED(t){return void 0===t?this.getTokens(FC.UNSIGNED):this.getToken(FC.UNSIGNED,t)}ZEROFILL(t){return void 0===t?this.getTokens(FC.ZEROFILL):this.getToken(FC.ZEROFILL,t)}REAL(){return this.getToken(FC.REAL,0)}lengthTwoDimension(){return this.getRuleContext(0,Ak)}DOUBLE(){return this.getToken(FC.DOUBLE,0)}PRECISION(){return this.getToken(FC.PRECISION,0)}DECIMAL(){return this.getToken(FC.DECIMAL,0)}DEC(){return this.getToken(FC.DEC,0)}FIXED(){return this.getToken(FC.FIXED,0)}NUMERIC(){return this.getToken(FC.NUMERIC,0)}FLOAT(){return this.getToken(FC.FLOAT,0)}FLOAT4(){return this.getToken(FC.FLOAT4,0)}FLOAT8(){return this.getToken(FC.FLOAT8,0)}lengthTwoOptionalDimension(){return this.getRuleContext(0,Sk)}BIT(){return this.getToken(FC.BIT,0)}TIME(){return this.getToken(FC.TIME,0)}TIMESTAMP(){return this.getToken(FC.TIMESTAMP,0)}DATETIME(){return this.getToken(FC.DATETIME,0)}BINARY(){return this.getToken(FC.BINARY,0)}VARBINARY(){return this.getToken(FC.VARBINARY,0)}BLOB(){return this.getToken(FC.BLOB,0)}YEAR(){return this.getToken(FC.YEAR,0)}accept(t){return t.visitDimensionDataType?t.visitDimensionDataType(this):t.visitChildren(this)}},ck=class extends tk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CHAR(){return this.getToken(FC.CHAR,0)}CHARACTER(){return this.getToken(FC.CHARACTER,0)}VARCHAR(){return this.getToken(FC.VARCHAR,0)}TINYTEXT(){return this.getToken(FC.TINYTEXT,0)}TEXT(){return this.getToken(FC.TEXT,0)}MEDIUMTEXT(){return this.getToken(FC.MEDIUMTEXT,0)}LONGTEXT(){return this.getToken(FC.LONGTEXT,0)}NCHAR(){return this.getToken(FC.NCHAR,0)}NVARCHAR(){return this.getToken(FC.NVARCHAR,0)}LONG(){return this.getToken(FC.LONG,0)}VARYING(){return this.getToken(FC.VARYING,0)}lengthOneDimension(){return this.getRuleContext(0,Rk)}BINARY(t){return void 0===t?this.getTokens(FC.BINARY):this.getToken(FC.BINARY,t)}charSet(){return this.getRuleContext(0,S_)}charsetName(){return this.getRuleContext(0,vx)}COLLATE(){return this.getToken(FC.COLLATE,0)}collationName(){return this.getRuleContext(0,Bx)}accept(t){return t.visitStringDataType?t.visitStringDataType(this):t.visitChildren(this)}},nk=class extends tk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LONG(){return this.getToken(FC.LONG,0)}VARCHAR(){return this.getToken(FC.VARCHAR,0)}BINARY(){return this.getToken(FC.BINARY,0)}charSet(){return this.getRuleContext(0,S_)}charsetName(){return this.getRuleContext(0,vx)}COLLATE(){return this.getToken(FC.COLLATE,0)}collationName(){return this.getRuleContext(0,Bx)}accept(t){return t.visitLongVarcharDataType?t.visitLongVarcharDataType(this):t.visitChildren(this)}},hk=class extends tk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}NATIONAL(){return this.getToken(FC.NATIONAL,0)}VARCHAR(){return this.getToken(FC.VARCHAR,0)}CHARACTER(){return this.getToken(FC.CHARACTER,0)}CHAR(){return this.getToken(FC.CHAR,0)}lengthOneDimension(){return this.getRuleContext(0,Rk)}BINARY(){return this.getToken(FC.BINARY,0)}NCHAR(){return this.getToken(FC.NCHAR,0)}accept(t){return t.visitNationalStringDataType?t.visitNationalStringDataType(this):t.visitChildren(this)}},Ek=class extends tk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DATE(){return this.getToken(FC.DATE,0)}TINYBLOB(){return this.getToken(FC.TINYBLOB,0)}MEDIUMBLOB(){return this.getToken(FC.MEDIUMBLOB,0)}LONGBLOB(){return this.getToken(FC.LONGBLOB,0)}BOOL(){return this.getToken(FC.BOOL,0)}BOOLEAN(){return this.getToken(FC.BOOLEAN,0)}SERIAL(){return this.getToken(FC.SERIAL,0)}accept(t){return t.visitSimpleDataType?t.visitSimpleDataType(this):t.visitChildren(this)}},Tk=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}STRING_LITERAL(t){return void 0===t?this.getTokens(FC.STRING_LITERAL):this.getToken(FC.STRING_LITERAL,t)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_collectionOptions}accept(t){return t.visitCollectionOptions?t.visitCollectionOptions(this):t.visitChildren(this)}},ok=class extends ga{constructor(t,e){super(t,e)}CHAR(){return this.getToken(FC.CHAR,0)}SIGNED(){return this.getToken(FC.SIGNED,0)}UNSIGNED(){return this.getToken(FC.UNSIGNED,0)}ARRAY(){return this.getToken(FC.ARRAY,0)}BINARY(){return this.getToken(FC.BINARY,0)}NCHAR(){return this.getToken(FC.NCHAR,0)}FLOAT(){return this.getToken(FC.FLOAT,0)}DATE(){return this.getToken(FC.DATE,0)}DATETIME(){return this.getToken(FC.DATETIME,0)}TIME(){return this.getToken(FC.TIME,0)}YEAR(){return this.getToken(FC.YEAR,0)}JSON(){return this.getToken(FC.JSON,0)}INT(){return this.getToken(FC.INT,0)}INTEGER(){return this.getToken(FC.INTEGER,0)}DOUBLE(){return this.getToken(FC.DOUBLE,0)}DECIMAL(){return this.getToken(FC.DECIMAL,0)}DEC(){return this.getToken(FC.DEC,0)}lengthOneDimension(){return this.getRuleContext(0,Rk)}charSet(){return this.getRuleContext(0,S_)}charsetName(){return this.getRuleContext(0,vx)}lengthTwoOptionalDimension(){return this.getRuleContext(0,Sk)}get ruleIndex(){return FC.RULE_convertedDataType}accept(t){return t.visitConvertedDataType?t.visitConvertedDataType(this):t.visitChildren(this)}},Rk=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}get ruleIndex(){return FC.RULE_lengthOneDimension}accept(t){return t.visitLengthOneDimension?t.visitLengthOneDimension(this):t.visitChildren(this)}},Ak=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}decimalLiteral(t){return void 0===t?this.getRuleContexts(Qx):this.getRuleContext(t,Qx)}COMMA(){return this.getToken(FC.COMMA,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}get ruleIndex(){return FC.RULE_lengthTwoDimension}accept(t){return t.visitLengthTwoDimension?t.visitLengthTwoDimension(this):t.visitChildren(this)}},Sk=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}decimalLiteral(t){return void 0===t?this.getRuleContexts(Qx):this.getRuleContext(t,Qx)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(){return this.getToken(FC.COMMA,0)}get ruleIndex(){return FC.RULE_lengthTwoOptionalDimension}accept(t){return t.visitLengthTwoOptionalDimension?t.visitLengthTwoOptionalDimension(this):t.visitChildren(this)}},lk=class extends ga{constructor(t,e){super(t,e)}uid(t){return void 0===t?this.getRuleContexts(Vx):this.getRuleContext(t,Vx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_uidList}accept(t){return t.visitUidList?t.visitUidList(this):t.visitChildren(this)}},Ok=class extends ga{constructor(t,e){super(t,e)}fullColumnName(t){return void 0===t?this.getRuleContexts(Px):this.getRuleContext(t,Px)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_fullColumnNameList}accept(t){return t.visitFullColumnNameList?t.visitFullColumnNameList(this):t.visitChildren(this)}},Ik=class extends ga{constructor(t,e){super(t,e)}tableName(t){return void 0===t?this.getRuleContexts(lx):this.getRuleContext(t,lx)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_tables}accept(t){return t.visitTables?t.visitTables(this):t.visitChildren(this)}},uk=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}indexColumnName(t){return void 0===t?this.getRuleContexts(px):this.getRuleContext(t,px)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_indexColumnNames}accept(t){return t.visitIndexColumnNames?t.visitIndexColumnNames(this):t.visitChildren(this)}},Nk=class extends ga{constructor(t,e){super(t,e)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_expressions}accept(t){return t.visitExpressions?t.visitExpressions(this):t.visitChildren(this)}},Lk=class extends ga{constructor(t,e){super(t,e)}expressionOrDefault(t){return void 0===t?this.getRuleContexts(Uk):this.getRuleContext(t,Uk)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_expressionsWithDefaults}accept(t){return t.visitExpressionsWithDefaults?t.visitExpressionsWithDefaults(this):t.visitChildren(this)}},Ck=class extends ga{constructor(t,e){super(t,e)}constant(t){return void 0===t?this.getRuleContexts($x):this.getRuleContext(t,$x)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_constants}accept(t){return t.visitConstants?t.visitConstants(this):t.visitChildren(this)}},_k=class extends ga{constructor(t,e){super(t,e)}STRING_LITERAL(t){return void 0===t?this.getTokens(FC.STRING_LITERAL):this.getToken(FC.STRING_LITERAL,t)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_simpleStrings}accept(t){return t.visitSimpleStrings?t.visitSimpleStrings(this):t.visitChildren(this)}},Pk=class extends ga{constructor(t,e){super(t,e)}LOCAL_ID(t){return void 0===t?this.getTokens(FC.LOCAL_ID):this.getToken(FC.LOCAL_ID,t)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_userVariables}accept(t){return t.visitUserVariables?t.visitUserVariables(this):t.visitChildren(this)}},Mk=class extends ga{constructor(t,e){super(t,e)}NULL_LITERAL(){return this.getToken(FC.NULL_LITERAL,0)}CAST(){return this.getToken(FC.CAST,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}AS(){return this.getToken(FC.AS,0)}convertedDataType(){return this.getRuleContext(0,ok)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}constant(){return this.getRuleContext(0,$x)}unaryOperator(){return this.getRuleContext(0,zH)}currentTimestamp(t){return void 0===t?this.getRuleContexts(dk):this.getRuleContext(t,dk)}ON(){return this.getToken(FC.ON,0)}UPDATE(){return this.getToken(FC.UPDATE,0)}fullId(){return this.getRuleContext(0,Sx)}get ruleIndex(){return FC.RULE_defaultValue}accept(t){return t.visitDefaultValue?t.visitDefaultValue(this):t.visitChildren(this)}},dk=class extends ga{constructor(t,e){super(t,e)}NOW(){return this.getToken(FC.NOW,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}CURRENT_TIMESTAMP(){return this.getToken(FC.CURRENT_TIMESTAMP,0)}LOCALTIME(){return this.getToken(FC.LOCALTIME,0)}LOCALTIMESTAMP(){return this.getToken(FC.LOCALTIMESTAMP,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}get ruleIndex(){return FC.RULE_currentTimestamp}accept(t){return t.visitCurrentTimestamp?t.visitCurrentTimestamp(this):t.visitChildren(this)}},Uk=class extends ga{constructor(t,e){super(t,e)}expression(){return this.getRuleContext(0,NH)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}get ruleIndex(){return FC.RULE_expressionOrDefault}accept(t){return t.visitExpressionOrDefault?t.visitExpressionOrDefault(this):t.visitChildren(this)}},mk=class extends ga{constructor(t,e){super(t,e)}IF(){return this.getToken(FC.IF,0)}EXISTS(){return this.getToken(FC.EXISTS,0)}get ruleIndex(){return FC.RULE_ifExists}accept(t){return t.visitIfExists?t.visitIfExists(this):t.visitChildren(this)}},Dk=class extends ga{constructor(t,e){super(t,e)}IF(){return this.getToken(FC.IF,0)}NOT(){return this.getToken(FC.NOT,0)}EXISTS(){return this.getToken(FC.EXISTS,0)}get ruleIndex(){return FC.RULE_ifNotExists}accept(t){return t.visitIfNotExists?t.visitIfNotExists(this):t.visitChildren(this)}},pk=class extends ga{constructor(t,e){super(t,e)}OR(){return this.getToken(FC.OR,0)}REPLACE(){return this.getToken(FC.REPLACE,0)}get ruleIndex(){return FC.RULE_orReplace}accept(t){return t.visitOrReplace?t.visitOrReplace(this):t.visitChildren(this)}},gk=class extends ga{constructor(t,e){super(t,e)}WAIT(){return this.getToken(FC.WAIT,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}NOWAIT(){return this.getToken(FC.NOWAIT,0)}get ruleIndex(){return FC.RULE_waitNowaitClause}accept(t){return t.visitWaitNowaitClause?t.visitWaitNowaitClause(this):t.visitChildren(this)}},xk=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_functionCall}copyFrom(t){super.copyFrom(t)}},kk=class extends xk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}specificFunction(){return this.getRuleContext(0,yk)}accept(t){return t.visitSpecificFunctionCall?t.visitSpecificFunctionCall(this):t.visitChildren(this)}},Hk=class extends xk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}passwordFunctionClause(){return this.getRuleContext(0,OH)}accept(t){return t.visitPasswordFunctionCall?t.visitPasswordFunctionCall(this):t.visitChildren(this)}},Gk=class extends xk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}fullId(){return this.getRuleContext(0,Sx)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}functionArgs(){return this.getRuleContext(0,IH)}accept(t){return t.visitUdfFunctionCall?t.visitUdfFunctionCall(this):t.visitChildren(this)}},Fk=class extends xk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}nonAggregateWindowedFunction(){return this.getRuleContext(0,iH)}accept(t){return t.visitNonAggregateFunctionCall?t.visitNonAggregateFunctionCall(this):t.visitChildren(this)}},vk=class extends xk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}aggregateWindowedFunction(){return this.getRuleContext(0,rH)}accept(t){return t.visitAggregateFunctionCall?t.visitAggregateFunctionCall(this):t.visitChildren(this)}},Bk=class extends xk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}scalarFunctionName(){return this.getRuleContext(0,lH)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}functionArgs(){return this.getRuleContext(0,IH)}accept(t){return t.visitScalarFunctionCall?t.visitScalarFunctionCall(this):t.visitChildren(this)}},yk=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_specificFunction}copyFrom(t){super.copyFrom(t)}},fk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}POSITION(){return this.getToken(FC.POSITION,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}IN(){return this.getToken(FC.IN,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}stringLiteral(t){return void 0===t?this.getRuleContexts(Zx):this.getRuleContext(t,Zx)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}accept(t){return t.visitPositionFunctionCall?t.visitPositionFunctionCall(this):t.visitChildren(this)}},Yk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}TRIM(){return this.getToken(FC.TRIM,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}FROM(){return this.getToken(FC.FROM,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}BOTH(){return this.getToken(FC.BOTH,0)}LEADING(){return this.getToken(FC.LEADING,0)}TRAILING(){return this.getToken(FC.TRAILING,0)}stringLiteral(t){return void 0===t?this.getRuleContexts(Zx):this.getRuleContext(t,Zx)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}accept(t){return t.visitTrimFunctionCall?t.visitTrimFunctionCall(this):t.visitChildren(this)}},wk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}JSON_VALUE(){return this.getToken(FC.JSON_VALUE,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}COMMA(){return this.getToken(FC.COMMA,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}RETURNING(){return this.getToken(FC.RETURNING,0)}convertedDataType(){return this.getRuleContext(0,ok)}jsonOnEmpty(){return this.getRuleContext(0,$U)}jsonOnError(){return this.getRuleContext(0,tm)}accept(t){return t.visitJsonValueFunctionCall?t.visitJsonValueFunctionCall(this):t.visitChildren(this)}},bk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CASE(){return this.getToken(FC.CASE,0)}END(){return this.getToken(FC.END,0)}caseFuncAlternative(t){return void 0===t?this.getRuleContexts($k):this.getRuleContext(t,$k)}ELSE(){return this.getToken(FC.ELSE,0)}functionArg(){return this.getRuleContext(0,uH)}accept(t){return t.visitCaseFunctionCall?t.visitCaseFunctionCall(this):t.visitChildren(this)}},Wk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXTRACT(){return this.getToken(FC.EXTRACT,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}intervalType(){return this.getRuleContext(0,__)}FROM(){return this.getToken(FC.FROM,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}stringLiteral(){return this.getRuleContext(0,Zx)}expression(){return this.getRuleContext(0,NH)}accept(t){return t.visitExtractFunctionCall?t.visitExtractFunctionCall(this):t.visitChildren(this)}},Vk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CONVERT(){return this.getToken(FC.CONVERT,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}convertedDataType(){return this.getRuleContext(0,ok)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(){return this.getToken(FC.COMMA,0)}USING(){return this.getToken(FC.USING,0)}charsetName(){return this.getRuleContext(0,vx)}CAST(){return this.getToken(FC.CAST,0)}AS(){return this.getToken(FC.AS,0)}accept(t){return t.visitDataTypeFunctionCall?t.visitDataTypeFunctionCall(this):t.visitChildren(this)}},Xk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}VALUES(){return this.getToken(FC.VALUES,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}fullColumnName(){return this.getRuleContext(0,Px)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitValuesFunctionCall?t.visitValuesFunctionCall(this):t.visitChildren(this)}},Kk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CASE(){return this.getToken(FC.CASE,0)}expression(){return this.getRuleContext(0,NH)}END(){return this.getToken(FC.END,0)}caseFuncAlternative(t){return void 0===t?this.getRuleContexts($k):this.getRuleContext(t,$k)}ELSE(){return this.getToken(FC.ELSE,0)}functionArg(){return this.getRuleContext(0,uH)}accept(t){return t.visitCaseExpressionFunctionCall?t.visitCaseExpressionFunctionCall(this):t.visitChildren(this)}},Qk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}currentUserExpression(){return this.getRuleContext(0,l_)}accept(t){return t.visitCurrentUser?t.visitCurrentUser(this):t.visitChildren(this)}},Jk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CURRENT_DATE(){return this.getToken(FC.CURRENT_DATE,0)}CURRENT_TIME(){return this.getToken(FC.CURRENT_TIME,0)}CURRENT_TIMESTAMP(){return this.getToken(FC.CURRENT_TIMESTAMP,0)}LOCALTIME(){return this.getToken(FC.LOCALTIME,0)}UTC_TIMESTAMP(){return this.getToken(FC.UTC_TIMESTAMP,0)}SCHEMA(){return this.getToken(FC.SCHEMA,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitSimpleFunctionCall?t.visitSimpleFunctionCall(this):t.visitChildren(this)}},Zk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CHAR(){return this.getToken(FC.CHAR,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}functionArgs(){return this.getRuleContext(0,IH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}USING(){return this.getToken(FC.USING,0)}charsetName(){return this.getRuleContext(0,vx)}accept(t){return t.visitCharFunctionCall?t.visitCharFunctionCall(this):t.visitChildren(this)}},qk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}WEIGHT_STRING(){return this.getToken(FC.WEIGHT_STRING,0)}LR_BRACKET(t){return void 0===t?this.getTokens(FC.LR_BRACKET):this.getToken(FC.LR_BRACKET,t)}RR_BRACKET(t){return void 0===t?this.getTokens(FC.RR_BRACKET):this.getToken(FC.RR_BRACKET,t)}stringLiteral(){return this.getRuleContext(0,Zx)}expression(){return this.getRuleContext(0,NH)}AS(){return this.getToken(FC.AS,0)}decimalLiteral(){return this.getRuleContext(0,Qx)}levelsInWeightString(){return this.getRuleContext(0,tH)}CHAR(){return this.getToken(FC.CHAR,0)}BINARY(){return this.getToken(FC.BINARY,0)}accept(t){return t.visitWeightFunctionCall?t.visitWeightFunctionCall(this):t.visitChildren(this)}},jk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}GET_FORMAT(){return this.getToken(FC.GET_FORMAT,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}COMMA(){return this.getToken(FC.COMMA,0)}stringLiteral(){return this.getRuleContext(0,Zx)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}DATE(){return this.getToken(FC.DATE,0)}TIME(){return this.getToken(FC.TIME,0)}DATETIME(){return this.getToken(FC.DATETIME,0)}accept(t){return t.visitGetFormatFunctionCall?t.visitGetFormatFunctionCall(this):t.visitChildren(this)}},zk=class extends yk{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}FROM(){return this.getToken(FC.FROM,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}SUBSTR(){return this.getToken(FC.SUBSTR,0)}SUBSTRING(){return this.getToken(FC.SUBSTRING,0)}stringLiteral(){return this.getRuleContext(0,Zx)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}decimalLiteral(t){return void 0===t?this.getRuleContexts(Qx):this.getRuleContext(t,Qx)}FOR(){return this.getToken(FC.FOR,0)}accept(t){return t.visitSubstrFunctionCall?t.visitSubstrFunctionCall(this):t.visitChildren(this)}},$k=class extends ga{constructor(t,e){super(t,e)}WHEN(){return this.getToken(FC.WHEN,0)}THEN(){return this.getToken(FC.THEN,0)}functionArg(t){return void 0===t?this.getRuleContexts(uH):this.getRuleContext(t,uH)}get ruleIndex(){return FC.RULE_caseFuncAlternative}accept(t){return t.visitCaseFuncAlternative?t.visitCaseFuncAlternative(this):t.visitChildren(this)}},tH=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_levelsInWeightString}copyFrom(t){super.copyFrom(t)}},eH=class extends tH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LEVEL(){return this.getToken(FC.LEVEL,0)}MINUS(){return this.getToken(FC.MINUS,0)}decimalLiteral(t){return void 0===t?this.getRuleContexts(Qx):this.getRuleContext(t,Qx)}accept(t){return t.visitLevelWeightRange?t.visitLevelWeightRange(this):t.visitChildren(this)}},sH=class extends tH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LEVEL(){return this.getToken(FC.LEVEL,0)}levelInWeightListElement(t){return void 0===t?this.getRuleContexts(aH):this.getRuleContext(t,aH)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitLevelWeightList?t.visitLevelWeightList(this):t.visitChildren(this)}},aH=class extends ga{constructor(t,e){super(t,e)}decimalLiteral(){return this.getRuleContext(0,Qx)}ASC(){return this.getToken(FC.ASC,0)}DESC(){return this.getToken(FC.DESC,0)}REVERSE(){return this.getToken(FC.REVERSE,0)}get ruleIndex(){return FC.RULE_levelInWeightListElement}accept(t){return t.visitLevelInWeightListElement?t.visitLevelInWeightListElement(this):t.visitChildren(this)}},rH=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}functionArg(){return this.getRuleContext(0,uH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}AVG(){return this.getToken(FC.AVG,0)}MAX(){return this.getToken(FC.MAX,0)}MIN(){return this.getToken(FC.MIN,0)}SUM(){return this.getToken(FC.SUM,0)}overClause(){return this.getRuleContext(0,cH)}ALL(){return this.getToken(FC.ALL,0)}DISTINCT(){return this.getToken(FC.DISTINCT,0)}COUNT(){return this.getToken(FC.COUNT,0)}functionArgs(){return this.getRuleContext(0,IH)}STAR(){return this.getToken(FC.STAR,0)}BIT_AND(){return this.getToken(FC.BIT_AND,0)}BIT_OR(){return this.getToken(FC.BIT_OR,0)}BIT_XOR(){return this.getToken(FC.BIT_XOR,0)}STD(){return this.getToken(FC.STD,0)}STDDEV(){return this.getToken(FC.STDDEV,0)}STDDEV_POP(){return this.getToken(FC.STDDEV_POP,0)}STDDEV_SAMP(){return this.getToken(FC.STDDEV_SAMP,0)}VAR_POP(){return this.getToken(FC.VAR_POP,0)}VAR_SAMP(){return this.getToken(FC.VAR_SAMP,0)}VARIANCE(){return this.getToken(FC.VARIANCE,0)}GROUP_CONCAT(){return this.getToken(FC.GROUP_CONCAT,0)}ORDER(){return this.getToken(FC.ORDER,0)}BY(){return this.getToken(FC.BY,0)}orderByExpression(t){return void 0===t?this.getRuleContexts(dU):this.getRuleContext(t,dU)}SEPARATOR(){return this.getToken(FC.SEPARATOR,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_aggregateWindowedFunction}accept(t){return t.visitAggregateWindowedFunction?t.visitAggregateWindowedFunction(this):t.visitChildren(this)}},iH=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(){return this.getRuleContext(0,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}overClause(){return this.getRuleContext(0,cH)}LAG(){return this.getToken(FC.LAG,0)}LEAD(){return this.getToken(FC.LEAD,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}decimalLiteral(t){return void 0===t?this.getRuleContexts(Qx):this.getRuleContext(t,Qx)}FIRST_VALUE(){return this.getToken(FC.FIRST_VALUE,0)}LAST_VALUE(){return this.getToken(FC.LAST_VALUE,0)}CUME_DIST(){return this.getToken(FC.CUME_DIST,0)}DENSE_RANK(){return this.getToken(FC.DENSE_RANK,0)}PERCENT_RANK(){return this.getToken(FC.PERCENT_RANK,0)}RANK(){return this.getToken(FC.RANK,0)}ROW_NUMBER(){return this.getToken(FC.ROW_NUMBER,0)}NTH_VALUE(){return this.getToken(FC.NTH_VALUE,0)}NTILE(){return this.getToken(FC.NTILE,0)}get ruleIndex(){return FC.RULE_nonAggregateWindowedFunction}accept(t){return t.visitNonAggregateWindowedFunction?t.visitNonAggregateWindowedFunction(this):t.visitChildren(this)}},cH=class extends ga{constructor(t,e){super(t,e)}OVER(){return this.getToken(FC.OVER,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}windowSpec(){return this.getRuleContext(0,nH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}windowName(){return this.getRuleContext(0,hH)}get ruleIndex(){return FC.RULE_overClause}accept(t){return t.visitOverClause?t.visitOverClause(this):t.visitChildren(this)}},nH=class extends ga{constructor(t,e){super(t,e)}windowName(){return this.getRuleContext(0,hH)}partitionClause(){return this.getRuleContext(0,SH)}orderByClause(){return this.getRuleContext(0,MU)}frameClause(){return this.getRuleContext(0,EH)}get ruleIndex(){return FC.RULE_windowSpec}accept(t){return t.visitWindowSpec?t.visitWindowSpec(this):t.visitChildren(this)}},hH=class extends ga{constructor(t,e){super(t,e)}uid(){return this.getRuleContext(0,Vx)}get ruleIndex(){return FC.RULE_windowName}accept(t){return t.visitWindowName?t.visitWindowName(this):t.visitChildren(this)}},EH=class extends ga{constructor(t,e){super(t,e)}frameUnits(){return this.getRuleContext(0,TH)}frameExtent(){return this.getRuleContext(0,oH)}get ruleIndex(){return FC.RULE_frameClause}accept(t){return t.visitFrameClause?t.visitFrameClause(this):t.visitChildren(this)}},TH=class extends ga{constructor(t,e){super(t,e)}ROWS(){return this.getToken(FC.ROWS,0)}RANGE(){return this.getToken(FC.RANGE,0)}get ruleIndex(){return FC.RULE_frameUnits}accept(t){return t.visitFrameUnits?t.visitFrameUnits(this):t.visitChildren(this)}},oH=class extends ga{constructor(t,e){super(t,e)}frameRange(){return this.getRuleContext(0,AH)}frameBetween(){return this.getRuleContext(0,RH)}get ruleIndex(){return FC.RULE_frameExtent}accept(t){return t.visitFrameExtent?t.visitFrameExtent(this):t.visitChildren(this)}},RH=class extends ga{constructor(t,e){super(t,e)}BETWEEN(){return this.getToken(FC.BETWEEN,0)}frameRange(t){return void 0===t?this.getRuleContexts(AH):this.getRuleContext(t,AH)}AND(){return this.getToken(FC.AND,0)}get ruleIndex(){return FC.RULE_frameBetween}accept(t){return t.visitFrameBetween?t.visitFrameBetween(this):t.visitChildren(this)}},AH=class extends ga{constructor(t,e){super(t,e)}CURRENT(){return this.getToken(FC.CURRENT,0)}ROW(){return this.getToken(FC.ROW,0)}UNBOUNDED(){return this.getToken(FC.UNBOUNDED,0)}PRECEDING(){return this.getToken(FC.PRECEDING,0)}FOLLOWING(){return this.getToken(FC.FOLLOWING,0)}expression(){return this.getRuleContext(0,NH)}get ruleIndex(){return FC.RULE_frameRange}accept(t){return t.visitFrameRange?t.visitFrameRange(this):t.visitChildren(this)}},SH=class extends ga{constructor(t,e){super(t,e)}PARTITION(){return this.getToken(FC.PARTITION,0)}BY(){return this.getToken(FC.BY,0)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_partitionClause}accept(t){return t.visitPartitionClause?t.visitPartitionClause(this):t.visitChildren(this)}},lH=class extends ga{constructor(t,e){super(t,e)}functionNameBase(){return this.getRuleContext(0,oG)}ASCII(){return this.getToken(FC.ASCII,0)}CURDATE(){return this.getToken(FC.CURDATE,0)}CURRENT_DATE(){return this.getToken(FC.CURRENT_DATE,0)}CURRENT_TIME(){return this.getToken(FC.CURRENT_TIME,0)}CURRENT_TIMESTAMP(){return this.getToken(FC.CURRENT_TIMESTAMP,0)}CURTIME(){return this.getToken(FC.CURTIME,0)}DATE_ADD(){return this.getToken(FC.DATE_ADD,0)}DATE_SUB(){return this.getToken(FC.DATE_SUB,0)}IF(){return this.getToken(FC.IF,0)}INSERT(){return this.getToken(FC.INSERT,0)}LOCALTIME(){return this.getToken(FC.LOCALTIME,0)}LOCALTIMESTAMP(){return this.getToken(FC.LOCALTIMESTAMP,0)}MID(){return this.getToken(FC.MID,0)}NOW(){return this.getToken(FC.NOW,0)}REPEAT(){return this.getToken(FC.REPEAT,0)}REPLACE(){return this.getToken(FC.REPLACE,0)}SUBSTR(){return this.getToken(FC.SUBSTR,0)}SUBSTRING(){return this.getToken(FC.SUBSTRING,0)}SYSDATE(){return this.getToken(FC.SYSDATE,0)}TRIM(){return this.getToken(FC.TRIM,0)}UTC_DATE(){return this.getToken(FC.UTC_DATE,0)}UTC_TIME(){return this.getToken(FC.UTC_TIME,0)}UTC_TIMESTAMP(){return this.getToken(FC.UTC_TIMESTAMP,0)}get ruleIndex(){return FC.RULE_scalarFunctionName}accept(t){return t.visitScalarFunctionName?t.visitScalarFunctionName(this):t.visitChildren(this)}},OH=class extends ga{constructor(t,e){super(t,e)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}functionArg(){return this.getRuleContext(0,uH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}PASSWORD(){return this.getToken(FC.PASSWORD,0)}OLD_PASSWORD(){return this.getToken(FC.OLD_PASSWORD,0)}get ruleIndex(){return FC.RULE_passwordFunctionClause}accept(t){return t.visitPasswordFunctionClause?t.visitPasswordFunctionClause(this):t.visitChildren(this)}},IH=class extends ga{constructor(t,e){super(t,e)}constant(t){return void 0===t?this.getRuleContexts($x):this.getRuleContext(t,$x)}fullColumnName(t){return void 0===t?this.getRuleContexts(Px):this.getRuleContext(t,Px)}functionCall(t){return void 0===t?this.getRuleContexts(xk):this.getRuleContext(t,xk)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}get ruleIndex(){return FC.RULE_functionArgs}accept(t){return t.visitFunctionArgs?t.visitFunctionArgs(this):t.visitChildren(this)}},uH=class extends ga{constructor(t,e){super(t,e)}constant(){return this.getRuleContext(0,$x)}fullColumnName(){return this.getRuleContext(0,Px)}functionCall(){return this.getRuleContext(0,xk)}expression(){return this.getRuleContext(0,NH)}get ruleIndex(){return FC.RULE_functionArg}accept(t){return t.visitFunctionArg?t.visitFunctionArg(this):t.visitChildren(this)}},NH=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_expression}copyFrom(t){super.copyFrom(t)}},LH=class extends NH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}predicate(){return this.getRuleContext(0,MH)}IS(){return this.getToken(FC.IS,0)}TRUE(){return this.getToken(FC.TRUE,0)}FALSE(){return this.getToken(FC.FALSE,0)}UNKNOWN(){return this.getToken(FC.UNKNOWN,0)}NOT(){return this.getToken(FC.NOT,0)}accept(t){return t.visitIsExpression?t.visitIsExpression(this):t.visitChildren(this)}},CH=class extends NH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}expression(){return this.getRuleContext(0,NH)}NOT(){return this.getToken(FC.NOT,0)}EXCLAMATION_SYMBOL(){return this.getToken(FC.EXCLAMATION_SYMBOL,0)}accept(t){return t.visitNotExpression?t.visitNotExpression(this):t.visitChildren(this)}},_H=class extends NH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}logicalOperator(){return this.getRuleContext(0,tG)}accept(t){return t.visitLogicalExpression?t.visitLogicalExpression(this):t.visitChildren(this)}},PH=class extends NH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}predicate(){return this.getRuleContext(0,MH)}accept(t){return t.visitPredicateExpression?t.visitPredicateExpression(this):t.visitChildren(this)}},MH=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_predicate}copyFrom(t){super.copyFrom(t)}},dH=class extends MH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}predicate(t){return void 0===t?this.getRuleContexts(MH):this.getRuleContext(t,MH)}SOUNDS(){return this.getToken(FC.SOUNDS,0)}LIKE(){return this.getToken(FC.LIKE,0)}accept(t){return t.visitSoundsLikePredicate?t.visitSoundsLikePredicate(this):t.visitChildren(this)}},UH=class extends MH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}expressionAtom(){return this.getRuleContext(0,FH)}accept(t){return t.visitExpressionAtomPredicate?t.visitExpressionAtomPredicate(this):t.visitChildren(this)}},mH=class extends MH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}predicate(){return this.getRuleContext(0,MH)}comparisonOperator(){return this.getRuleContext(0,$H)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}selectStatement(){return this.getRuleContext(0,rU)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}ALL(){return this.getToken(FC.ALL,0)}ANY(){return this.getToken(FC.ANY,0)}SOME(){return this.getToken(FC.SOME,0)}accept(t){return t.visitSubqueryComparisonPredicate?t.visitSubqueryComparisonPredicate(this):t.visitChildren(this)}},DH=class extends MH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}predicate(t){return void 0===t?this.getRuleContexts(MH):this.getRuleContext(t,MH)}MEMBER(){return this.getToken(FC.MEMBER,0)}OF(){return this.getToken(FC.OF,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitJsonMemberOfPredicate?t.visitJsonMemberOfPredicate(this):t.visitChildren(this)}},pH=class extends MH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}comparisonOperator(){return this.getRuleContext(0,$H)}predicate(t){return void 0===t?this.getRuleContexts(MH):this.getRuleContext(t,MH)}accept(t){return t.visitBinaryComparisonPredicate?t.visitBinaryComparisonPredicate(this):t.visitChildren(this)}},gH=class extends MH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}predicate(){return this.getRuleContext(0,MH)}IN(){return this.getToken(FC.IN,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}selectStatement(){return this.getRuleContext(0,rU)}expressions(){return this.getRuleContext(0,Nk)}NOT(){return this.getToken(FC.NOT,0)}accept(t){return t.visitInPredicate?t.visitInPredicate(this):t.visitChildren(this)}},xH=class extends MH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}predicate(t){return void 0===t?this.getRuleContexts(MH):this.getRuleContext(t,MH)}BETWEEN(){return this.getToken(FC.BETWEEN,0)}AND(){return this.getToken(FC.AND,0)}NOT(){return this.getToken(FC.NOT,0)}accept(t){return t.visitBetweenPredicate?t.visitBetweenPredicate(this):t.visitChildren(this)}},kH=class extends MH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}predicate(){return this.getRuleContext(0,MH)}IS(){return this.getToken(FC.IS,0)}nullNotnull(){return this.getRuleContext(0,zx)}accept(t){return t.visitIsNullPredicate?t.visitIsNullPredicate(this):t.visitChildren(this)}},HH=class extends MH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}predicate(t){return void 0===t?this.getRuleContexts(MH):this.getRuleContext(t,MH)}LIKE(){return this.getToken(FC.LIKE,0)}NOT(){return this.getToken(FC.NOT,0)}ESCAPE(){return this.getToken(FC.ESCAPE,0)}STRING_LITERAL(){return this.getToken(FC.STRING_LITERAL,0)}accept(t){return t.visitLikePredicate?t.visitLikePredicate(this):t.visitChildren(this)}},GH=class extends MH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}predicate(t){return void 0===t?this.getRuleContexts(MH):this.getRuleContext(t,MH)}REGEXP(){return this.getToken(FC.REGEXP,0)}RLIKE(){return this.getToken(FC.RLIKE,0)}NOT(){return this.getToken(FC.NOT,0)}accept(t){return t.visitRegexpPredicate?t.visitRegexpPredicate(this):t.visitChildren(this)}},FH=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return FC.RULE_expressionAtom}copyFrom(t){super.copyFrom(t)}},vH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}unaryOperator(){return this.getRuleContext(0,zH)}expressionAtom(){return this.getRuleContext(0,FH)}accept(t){return t.visitUnaryExpressionAtom?t.visitUnaryExpressionAtom(this):t.visitChildren(this)}},BH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}expressionAtom(){return this.getRuleContext(0,FH)}COLLATE(){return this.getToken(FC.COLLATE,0)}collationName(){return this.getRuleContext(0,Bx)}accept(t){return t.visitCollateExpressionAtom?t.visitCollateExpressionAtom(this):t.visitChildren(this)}},yH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LOCAL_ID(){return this.getToken(FC.LOCAL_ID,0)}VAR_ASSIGN(){return this.getToken(FC.VAR_ASSIGN,0)}expressionAtom(){return this.getRuleContext(0,FH)}accept(t){return t.visitVariableAssignExpressionAtom?t.visitVariableAssignExpressionAtom(this):t.visitChildren(this)}},fH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}mysqlVariable(){return this.getRuleContext(0,Fx)}accept(t){return t.visitMysqlVariableExpressionAtom?t.visitMysqlVariableExpressionAtom(this):t.visitChildren(this)}},YH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitNestedExpressionAtom?t.visitNestedExpressionAtom(this):t.visitChildren(this)}},wH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ROW(){return this.getToken(FC.ROW,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}expression(t){return void 0===t?this.getRuleContexts(NH):this.getRuleContext(t,NH)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}COMMA(t){return void 0===t?this.getTokens(FC.COMMA):this.getToken(FC.COMMA,t)}accept(t){return t.visitNestedRowExpressionAtom?t.visitNestedRowExpressionAtom(this):t.visitChildren(this)}},bH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}multOperator(){return this.getRuleContext(0,sG)}expressionAtom(t){return void 0===t?this.getRuleContexts(FH):this.getRuleContext(t,FH)}addOperator(){return this.getRuleContext(0,aG)}accept(t){return t.visitMathExpressionAtom?t.visitMathExpressionAtom(this):t.visitChildren(this)}},WH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXISTS(){return this.getToken(FC.EXISTS,0)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}selectStatement(){return this.getRuleContext(0,rU)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitExistsExpressionAtom?t.visitExistsExpressionAtom(this):t.visitChildren(this)}},VH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}INTERVAL(){return this.getToken(FC.INTERVAL,0)}expression(){return this.getRuleContext(0,NH)}intervalType(){return this.getRuleContext(0,__)}accept(t){return t.visitIntervalExpressionAtom?t.visitIntervalExpressionAtom(this):t.visitChildren(this)}},XH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}jsonOperator(){return this.getRuleContext(0,rG)}expressionAtom(t){return void 0===t?this.getRuleContexts(FH):this.getRuleContext(t,FH)}accept(t){return t.visitJsonExpressionAtom?t.visitJsonExpressionAtom(this):t.visitChildren(this)}},KH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LR_BRACKET(){return this.getToken(FC.LR_BRACKET,0)}selectStatement(){return this.getRuleContext(0,rU)}RR_BRACKET(){return this.getToken(FC.RR_BRACKET,0)}accept(t){return t.visitSubqueryExpressionAtom?t.visitSubqueryExpressionAtom(this):t.visitChildren(this)}},QH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}constant(){return this.getRuleContext(0,$x)}accept(t){return t.visitConstantExpressionAtom?t.visitConstantExpressionAtom(this):t.visitChildren(this)}},JH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}functionCall(){return this.getRuleContext(0,xk)}accept(t){return t.visitFunctionCallExpressionAtom?t.visitFunctionCallExpressionAtom(this):t.visitChildren(this)}},ZH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}BINARY(){return this.getToken(FC.BINARY,0)}expressionAtom(){return this.getRuleContext(0,FH)}accept(t){return t.visitBinaryExpressionAtom?t.visitBinaryExpressionAtom(this):t.visitChildren(this)}},qH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}fullColumnName(){return this.getRuleContext(0,Px)}accept(t){return t.visitFullColumnNameExpressionAtom?t.visitFullColumnNameExpressionAtom(this):t.visitChildren(this)}},jH=class extends FH{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}bitOperator(){return this.getRuleContext(0,eG)}expressionAtom(t){return void 0===t?this.getRuleContexts(FH):this.getRuleContext(t,FH)}accept(t){return t.visitBitExpressionAtom?t.visitBitExpressionAtom(this):t.visitChildren(this)}},zH=class extends ga{constructor(t,e){super(t,e)}EXCLAMATION_SYMBOL(){return this.getToken(FC.EXCLAMATION_SYMBOL,0)}BIT_NOT_OP(){return this.getToken(FC.BIT_NOT_OP,0)}PLUS(){return this.getToken(FC.PLUS,0)}MINUS(){return this.getToken(FC.MINUS,0)}NOT(){return this.getToken(FC.NOT,0)}get ruleIndex(){return FC.RULE_unaryOperator}accept(t){return t.visitUnaryOperator?t.visitUnaryOperator(this):t.visitChildren(this)}},$H=class extends ga{constructor(t,e){super(t,e)}EQUAL_SYMBOL(){return this.getToken(FC.EQUAL_SYMBOL,0)}GREATER_SYMBOL(){return this.getToken(FC.GREATER_SYMBOL,0)}LESS_SYMBOL(){return this.getToken(FC.LESS_SYMBOL,0)}EXCLAMATION_SYMBOL(){return this.getToken(FC.EXCLAMATION_SYMBOL,0)}get ruleIndex(){return FC.RULE_comparisonOperator}accept(t){return t.visitComparisonOperator?t.visitComparisonOperator(this):t.visitChildren(this)}},tG=class extends ga{constructor(t,e){super(t,e)}AND(){return this.getToken(FC.AND,0)}BIT_AND_OP(t){return void 0===t?this.getTokens(FC.BIT_AND_OP):this.getToken(FC.BIT_AND_OP,t)}XOR(){return this.getToken(FC.XOR,0)}OR(){return this.getToken(FC.OR,0)}BIT_OR_OP(t){return void 0===t?this.getTokens(FC.BIT_OR_OP):this.getToken(FC.BIT_OR_OP,t)}get ruleIndex(){return FC.RULE_logicalOperator}accept(t){return t.visitLogicalOperator?t.visitLogicalOperator(this):t.visitChildren(this)}},eG=class extends ga{constructor(t,e){super(t,e)}LESS_SYMBOL(t){return void 0===t?this.getTokens(FC.LESS_SYMBOL):this.getToken(FC.LESS_SYMBOL,t)}GREATER_SYMBOL(t){return void 0===t?this.getTokens(FC.GREATER_SYMBOL):this.getToken(FC.GREATER_SYMBOL,t)}BIT_AND_OP(){return this.getToken(FC.BIT_AND_OP,0)}BIT_XOR_OP(){return this.getToken(FC.BIT_XOR_OP,0)}BIT_OR_OP(){return this.getToken(FC.BIT_OR_OP,0)}get ruleIndex(){return FC.RULE_bitOperator}accept(t){return t.visitBitOperator?t.visitBitOperator(this):t.visitChildren(this)}},sG=class extends ga{constructor(t,e){super(t,e)}STAR(){return this.getToken(FC.STAR,0)}DIVIDE(){return this.getToken(FC.DIVIDE,0)}MODULE(){return this.getToken(FC.MODULE,0)}DIV(){return this.getToken(FC.DIV,0)}MOD(){return this.getToken(FC.MOD,0)}get ruleIndex(){return FC.RULE_multOperator}accept(t){return t.visitMultOperator?t.visitMultOperator(this):t.visitChildren(this)}},aG=class extends ga{constructor(t,e){super(t,e)}PLUS(){return this.getToken(FC.PLUS,0)}MINUS(){return this.getToken(FC.MINUS,0)}get ruleIndex(){return FC.RULE_addOperator}accept(t){return t.visitAddOperator?t.visitAddOperator(this):t.visitChildren(this)}},rG=class extends ga{constructor(t,e){super(t,e)}MINUS(){return this.getToken(FC.MINUS,0)}GREATER_SYMBOL(t){return void 0===t?this.getTokens(FC.GREATER_SYMBOL):this.getToken(FC.GREATER_SYMBOL,t)}get ruleIndex(){return FC.RULE_jsonOperator}accept(t){return t.visitJsonOperator?t.visitJsonOperator(this):t.visitChildren(this)}},iG=class extends ga{constructor(t,e){super(t,e)}ARMSCII8(){return this.getToken(FC.ARMSCII8,0)}ASCII(){return this.getToken(FC.ASCII,0)}BIG5(){return this.getToken(FC.BIG5,0)}BINARY(){return this.getToken(FC.BINARY,0)}CP1250(){return this.getToken(FC.CP1250,0)}CP1251(){return this.getToken(FC.CP1251,0)}CP1256(){return this.getToken(FC.CP1256,0)}CP1257(){return this.getToken(FC.CP1257,0)}CP850(){return this.getToken(FC.CP850,0)}CP852(){return this.getToken(FC.CP852,0)}CP866(){return this.getToken(FC.CP866,0)}CP932(){return this.getToken(FC.CP932,0)}DEC8(){return this.getToken(FC.DEC8,0)}EUCJPMS(){return this.getToken(FC.EUCJPMS,0)}EUCKR(){return this.getToken(FC.EUCKR,0)}GB18030(){return this.getToken(FC.GB18030,0)}GB2312(){return this.getToken(FC.GB2312,0)}GBK(){return this.getToken(FC.GBK,0)}GEOSTD8(){return this.getToken(FC.GEOSTD8,0)}GREEK(){return this.getToken(FC.GREEK,0)}HEBREW(){return this.getToken(FC.HEBREW,0)}HP8(){return this.getToken(FC.HP8,0)}KEYBCS2(){return this.getToken(FC.KEYBCS2,0)}KOI8R(){return this.getToken(FC.KOI8R,0)}KOI8U(){return this.getToken(FC.KOI8U,0)}LATIN1(){return this.getToken(FC.LATIN1,0)}LATIN2(){return this.getToken(FC.LATIN2,0)}LATIN5(){return this.getToken(FC.LATIN5,0)}LATIN7(){return this.getToken(FC.LATIN7,0)}MACCE(){return this.getToken(FC.MACCE,0)}MACROMAN(){return this.getToken(FC.MACROMAN,0)}SJIS(){return this.getToken(FC.SJIS,0)}SWE7(){return this.getToken(FC.SWE7,0)}TIS620(){return this.getToken(FC.TIS620,0)}UCS2(){return this.getToken(FC.UCS2,0)}UJIS(){return this.getToken(FC.UJIS,0)}UTF16(){return this.getToken(FC.UTF16,0)}UTF16LE(){return this.getToken(FC.UTF16LE,0)}UTF32(){return this.getToken(FC.UTF32,0)}UTF8(){return this.getToken(FC.UTF8,0)}UTF8MB3(){return this.getToken(FC.UTF8MB3,0)}UTF8MB4(){return this.getToken(FC.UTF8MB4,0)}get ruleIndex(){return FC.RULE_charsetNameBase}accept(t){return t.visitCharsetNameBase?t.visitCharsetNameBase(this):t.visitChildren(this)}},cG=class extends ga{constructor(t,e){super(t,e)}REPEATABLE(){return this.getToken(FC.REPEATABLE,0)}COMMITTED(){return this.getToken(FC.COMMITTED,0)}UNCOMMITTED(){return this.getToken(FC.UNCOMMITTED,0)}SERIALIZABLE(){return this.getToken(FC.SERIALIZABLE,0)}get ruleIndex(){return FC.RULE_transactionLevelBase}accept(t){return t.visitTransactionLevelBase?t.visitTransactionLevelBase(this):t.visitChildren(this)}},nG=class extends ga{constructor(t,e){super(t,e)}TABLES(){return this.getToken(FC.TABLES,0)}ROUTINE(){return this.getToken(FC.ROUTINE,0)}EXECUTE(){return this.getToken(FC.EXECUTE,0)}FILE(){return this.getToken(FC.FILE,0)}PROCESS(){return this.getToken(FC.PROCESS,0)}RELOAD(){return this.getToken(FC.RELOAD,0)}SHUTDOWN(){return this.getToken(FC.SHUTDOWN,0)}SUPER(){return this.getToken(FC.SUPER,0)}PRIVILEGES(){return this.getToken(FC.PRIVILEGES,0)}get ruleIndex(){return FC.RULE_privilegesBase}accept(t){return t.visitPrivilegesBase?t.visitPrivilegesBase(this):t.visitChildren(this)}},hG=class extends ga{constructor(t,e){super(t,e)}QUARTER(){return this.getToken(FC.QUARTER,0)}MONTH(){return this.getToken(FC.MONTH,0)}DAY(){return this.getToken(FC.DAY,0)}HOUR(){return this.getToken(FC.HOUR,0)}MINUTE(){return this.getToken(FC.MINUTE,0)}WEEK(){return this.getToken(FC.WEEK,0)}SECOND(){return this.getToken(FC.SECOND,0)}MICROSECOND(){return this.getToken(FC.MICROSECOND,0)}get ruleIndex(){return FC.RULE_intervalTypeBase}accept(t){return t.visitIntervalTypeBase?t.visitIntervalTypeBase(this):t.visitChildren(this)}},EG=class extends ga{constructor(t,e){super(t,e)}DATE(){return this.getToken(FC.DATE,0)}TIME(){return this.getToken(FC.TIME,0)}TIMESTAMP(){return this.getToken(FC.TIMESTAMP,0)}DATETIME(){return this.getToken(FC.DATETIME,0)}YEAR(){return this.getToken(FC.YEAR,0)}ENUM(){return this.getToken(FC.ENUM,0)}TEXT(){return this.getToken(FC.TEXT,0)}get ruleIndex(){return FC.RULE_dataTypeBase}accept(t){return t.visitDataTypeBase?t.visitDataTypeBase(this):t.visitChildren(this)}},TG=class extends ga{constructor(t,e){super(t,e)}ACCOUNT(){return this.getToken(FC.ACCOUNT,0)}ACTION(){return this.getToken(FC.ACTION,0)}ADMIN(){return this.getToken(FC.ADMIN,0)}AFTER(){return this.getToken(FC.AFTER,0)}AGGREGATE(){return this.getToken(FC.AGGREGATE,0)}ALGORITHM(){return this.getToken(FC.ALGORITHM,0)}ANY(){return this.getToken(FC.ANY,0)}ARRAY(){return this.getToken(FC.ARRAY,0)}AT(){return this.getToken(FC.AT,0)}AUDIT_ADMIN(){return this.getToken(FC.AUDIT_ADMIN,0)}AUDIT_ABORT_EXEMPT(){return this.getToken(FC.AUDIT_ABORT_EXEMPT,0)}AUTHORS(){return this.getToken(FC.AUTHORS,0)}AUTOCOMMIT(){return this.getToken(FC.AUTOCOMMIT,0)}AUTOEXTEND_SIZE(){return this.getToken(FC.AUTOEXTEND_SIZE,0)}AUTO_INCREMENT(){return this.getToken(FC.AUTO_INCREMENT,0)}AUTHENTICATION_POLICY_ADMIN(){return this.getToken(FC.AUTHENTICATION_POLICY_ADMIN,0)}AVG(){return this.getToken(FC.AVG,0)}AVG_ROW_LENGTH(){return this.getToken(FC.AVG_ROW_LENGTH,0)}ATTRIBUTE(){return this.getToken(FC.ATTRIBUTE,0)}BACKUP_ADMIN(){return this.getToken(FC.BACKUP_ADMIN,0)}BEGIN(){return this.getToken(FC.BEGIN,0)}BINLOG(){return this.getToken(FC.BINLOG,0)}BINLOG_ADMIN(){return this.getToken(FC.BINLOG_ADMIN,0)}BINLOG_ENCRYPTION_ADMIN(){return this.getToken(FC.BINLOG_ENCRYPTION_ADMIN,0)}BIT(){return this.getToken(FC.BIT,0)}BIT_AND(){return this.getToken(FC.BIT_AND,0)}BIT_OR(){return this.getToken(FC.BIT_OR,0)}BIT_XOR(){return this.getToken(FC.BIT_XOR,0)}BLOCK(){return this.getToken(FC.BLOCK,0)}BOOL(){return this.getToken(FC.BOOL,0)}BOOLEAN(){return this.getToken(FC.BOOLEAN,0)}BTREE(){return this.getToken(FC.BTREE,0)}BUCKETS(){return this.getToken(FC.BUCKETS,0)}CACHE(){return this.getToken(FC.CACHE,0)}CASCADED(){return this.getToken(FC.CASCADED,0)}CHAIN(){return this.getToken(FC.CHAIN,0)}CHANGED(){return this.getToken(FC.CHANGED,0)}CHANNEL(){return this.getToken(FC.CHANNEL,0)}CHECKSUM(){return this.getToken(FC.CHECKSUM,0)}PAGE_CHECKSUM(){return this.getToken(FC.PAGE_CHECKSUM,0)}CATALOG_NAME(){return this.getToken(FC.CATALOG_NAME,0)}CIPHER(){return this.getToken(FC.CIPHER,0)}CLASS_ORIGIN(){return this.getToken(FC.CLASS_ORIGIN,0)}CLIENT(){return this.getToken(FC.CLIENT,0)}CLONE_ADMIN(){return this.getToken(FC.CLONE_ADMIN,0)}CLOSE(){return this.getToken(FC.CLOSE,0)}CLUSTERING(){return this.getToken(FC.CLUSTERING,0)}COALESCE(){return this.getToken(FC.COALESCE,0)}CODE(){return this.getToken(FC.CODE,0)}COLUMNS(){return this.getToken(FC.COLUMNS,0)}COLUMN_FORMAT(){return this.getToken(FC.COLUMN_FORMAT,0)}COLUMN_NAME(){return this.getToken(FC.COLUMN_NAME,0)}COMMENT(){return this.getToken(FC.COMMENT,0)}COMMIT(){return this.getToken(FC.COMMIT,0)}COMPACT(){return this.getToken(FC.COMPACT,0)}COMPLETION(){return this.getToken(FC.COMPLETION,0)}COMPRESSED(){return this.getToken(FC.COMPRESSED,0)}COMPRESSION(){return this.getToken(FC.COMPRESSION,0)}CONCURRENT(){return this.getToken(FC.CONCURRENT,0)}CONDITION(){return this.getToken(FC.CONDITION,0)}CONNECT(){return this.getToken(FC.CONNECT,0)}CONNECTION(){return this.getToken(FC.CONNECTION,0)}CONNECTION_ADMIN(){return this.getToken(FC.CONNECTION_ADMIN,0)}CONSISTENT(){return this.getToken(FC.CONSISTENT,0)}CONSTRAINT_CATALOG(){return this.getToken(FC.CONSTRAINT_CATALOG,0)}CONSTRAINT_NAME(){return this.getToken(FC.CONSTRAINT_NAME,0)}CONSTRAINT_SCHEMA(){return this.getToken(FC.CONSTRAINT_SCHEMA,0)}CONTAINS(){return this.getToken(FC.CONTAINS,0)}CONTEXT(){return this.getToken(FC.CONTEXT,0)}CONTRIBUTORS(){return this.getToken(FC.CONTRIBUTORS,0)}COPY(){return this.getToken(FC.COPY,0)}COUNT(){return this.getToken(FC.COUNT,0)}CPU(){return this.getToken(FC.CPU,0)}CURRENT(){return this.getToken(FC.CURRENT,0)}CURRENT_USER(){return this.getToken(FC.CURRENT_USER,0)}CURSOR_NAME(){return this.getToken(FC.CURSOR_NAME,0)}DATA(){return this.getToken(FC.DATA,0)}DATAFILE(){return this.getToken(FC.DATAFILE,0)}DEALLOCATE(){return this.getToken(FC.DEALLOCATE,0)}DEFAULT(){return this.getToken(FC.DEFAULT,0)}DEFAULT_AUTH(){return this.getToken(FC.DEFAULT_AUTH,0)}DEFINER(){return this.getToken(FC.DEFINER,0)}DELAY_KEY_WRITE(){return this.getToken(FC.DELAY_KEY_WRITE,0)}DES_KEY_FILE(){return this.getToken(FC.DES_KEY_FILE,0)}DIAGNOSTICS(){return this.getToken(FC.DIAGNOSTICS,0)}DIRECTORY(){return this.getToken(FC.DIRECTORY,0)}DISABLE(){return this.getToken(FC.DISABLE,0)}DISCARD(){return this.getToken(FC.DISCARD,0)}DISK(){return this.getToken(FC.DISK,0)}DO(){return this.getToken(FC.DO,0)}DUMPFILE(){return this.getToken(FC.DUMPFILE,0)}DUPLICATE(){return this.getToken(FC.DUPLICATE,0)}DYNAMIC(){return this.getToken(FC.DYNAMIC,0)}EMPTY(){return this.getToken(FC.EMPTY,0)}ENABLE(){return this.getToken(FC.ENABLE,0)}ENCRYPTION(){return this.getToken(FC.ENCRYPTION,0)}ENCRYPTION_KEY_ADMIN(){return this.getToken(FC.ENCRYPTION_KEY_ADMIN,0)}END(){return this.getToken(FC.END,0)}ENDS(){return this.getToken(FC.ENDS,0)}ENGINE(){return this.getToken(FC.ENGINE,0)}ENGINE_ATTRIBUTE(){return this.getToken(FC.ENGINE_ATTRIBUTE,0)}ENGINES(){return this.getToken(FC.ENGINES,0)}ENFORCED(){return this.getToken(FC.ENFORCED,0)}ERROR(){return this.getToken(FC.ERROR,0)}ERRORS(){return this.getToken(FC.ERRORS,0)}ESCAPE(){return this.getToken(FC.ESCAPE,0)}EUR(){return this.getToken(FC.EUR,0)}EVEN(){return this.getToken(FC.EVEN,0)}EVENT(){return this.getToken(FC.EVENT,0)}EVENTS(){return this.getToken(FC.EVENTS,0)}EVERY(){return this.getToken(FC.EVERY,0)}EXCEPT(){return this.getToken(FC.EXCEPT,0)}EXCHANGE(){return this.getToken(FC.EXCHANGE,0)}EXCLUSIVE(){return this.getToken(FC.EXCLUSIVE,0)}EXPIRE(){return this.getToken(FC.EXPIRE,0)}EXPORT(){return this.getToken(FC.EXPORT,0)}EXTENDED(){return this.getToken(FC.EXTENDED,0)}EXTENT_SIZE(){return this.getToken(FC.EXTENT_SIZE,0)}FAILED_LOGIN_ATTEMPTS(){return this.getToken(FC.FAILED_LOGIN_ATTEMPTS,0)}FAST(){return this.getToken(FC.FAST,0)}FAULTS(){return this.getToken(FC.FAULTS,0)}FIELDS(){return this.getToken(FC.FIELDS,0)}FILE_BLOCK_SIZE(){return this.getToken(FC.FILE_BLOCK_SIZE,0)}FILTER(){return this.getToken(FC.FILTER,0)}FIREWALL_ADMIN(){return this.getToken(FC.FIREWALL_ADMIN,0)}FIREWALL_EXEMPT(){return this.getToken(FC.FIREWALL_EXEMPT,0)}FIREWALL_USER(){return this.getToken(FC.FIREWALL_USER,0)}FIRST(){return this.getToken(FC.FIRST,0)}FIXED(){return this.getToken(FC.FIXED,0)}FLUSH(){return this.getToken(FC.FLUSH,0)}FOLLOWS(){return this.getToken(FC.FOLLOWS,0)}FOUND(){return this.getToken(FC.FOUND,0)}FULL(){return this.getToken(FC.FULL,0)}FUNCTION(){return this.getToken(FC.FUNCTION,0)}GENERAL(){return this.getToken(FC.GENERAL,0)}GLOBAL(){return this.getToken(FC.GLOBAL,0)}GRANTS(){return this.getToken(FC.GRANTS,0)}GROUP(){return this.getToken(FC.GROUP,0)}GROUP_CONCAT(){return this.getToken(FC.GROUP_CONCAT,0)}GROUP_REPLICATION(){return this.getToken(FC.GROUP_REPLICATION,0)}GROUP_REPLICATION_ADMIN(){return this.getToken(FC.GROUP_REPLICATION_ADMIN,0)}HANDLER(){return this.getToken(FC.HANDLER,0)}HASH(){return this.getToken(FC.HASH,0)}HELP(){return this.getToken(FC.HELP,0)}HISTORY(){return this.getToken(FC.HISTORY,0)}HOST(){return this.getToken(FC.HOST,0)}HOSTS(){return this.getToken(FC.HOSTS,0)}IDENTIFIED(){return this.getToken(FC.IDENTIFIED,0)}IGNORED(){return this.getToken(FC.IGNORED,0)}IGNORE_SERVER_IDS(){return this.getToken(FC.IGNORE_SERVER_IDS,0)}IMPORT(){return this.getToken(FC.IMPORT,0)}INDEXES(){return this.getToken(FC.INDEXES,0)}INITIAL_SIZE(){return this.getToken(FC.INITIAL_SIZE,0)}INNODB_REDO_LOG_ARCHIVE(){return this.getToken(FC.INNODB_REDO_LOG_ARCHIVE,0)}INPLACE(){return this.getToken(FC.INPLACE,0)}INSERT_METHOD(){return this.getToken(FC.INSERT_METHOD,0)}INSTALL(){return this.getToken(FC.INSTALL,0)}INSTANCE(){return this.getToken(FC.INSTANCE,0)}INSTANT(){return this.getToken(FC.INSTANT,0)}INTERNAL(){return this.getToken(FC.INTERNAL,0)}INVOKE(){return this.getToken(FC.INVOKE,0)}INVOKER(){return this.getToken(FC.INVOKER,0)}IO(){return this.getToken(FC.IO,0)}IO_THREAD(){return this.getToken(FC.IO_THREAD,0)}IPC(){return this.getToken(FC.IPC,0)}ISO(){return this.getToken(FC.ISO,0)}ISOLATION(){return this.getToken(FC.ISOLATION,0)}ISSUER(){return this.getToken(FC.ISSUER,0)}JIS(){return this.getToken(FC.JIS,0)}JSON(){return this.getToken(FC.JSON,0)}KEY_BLOCK_SIZE(){return this.getToken(FC.KEY_BLOCK_SIZE,0)}LAMBDA(){return this.getToken(FC.LAMBDA,0)}LANGUAGE(){return this.getToken(FC.LANGUAGE,0)}LAST(){return this.getToken(FC.LAST,0)}LATERAL(){return this.getToken(FC.LATERAL,0)}LEAVES(){return this.getToken(FC.LEAVES,0)}LESS(){return this.getToken(FC.LESS,0)}LEVEL(){return this.getToken(FC.LEVEL,0)}LIST(){return this.getToken(FC.LIST,0)}LOCAL(){return this.getToken(FC.LOCAL,0)}LOGFILE(){return this.getToken(FC.LOGFILE,0)}LOGS(){return this.getToken(FC.LOGS,0)}MASTER(){return this.getToken(FC.MASTER,0)}MASTER_AUTO_POSITION(){return this.getToken(FC.MASTER_AUTO_POSITION,0)}MASTER_CONNECT_RETRY(){return this.getToken(FC.MASTER_CONNECT_RETRY,0)}MASTER_DELAY(){return this.getToken(FC.MASTER_DELAY,0)}MASTER_HEARTBEAT_PERIOD(){return this.getToken(FC.MASTER_HEARTBEAT_PERIOD,0)}MASTER_HOST(){return this.getToken(FC.MASTER_HOST,0)}MASTER_LOG_FILE(){return this.getToken(FC.MASTER_LOG_FILE,0)}MASTER_LOG_POS(){return this.getToken(FC.MASTER_LOG_POS,0)}MASTER_PASSWORD(){return this.getToken(FC.MASTER_PASSWORD,0)}MASTER_PORT(){return this.getToken(FC.MASTER_PORT,0)}MASTER_RETRY_COUNT(){return this.getToken(FC.MASTER_RETRY_COUNT,0)}MASTER_SSL(){return this.getToken(FC.MASTER_SSL,0)}MASTER_SSL_CA(){return this.getToken(FC.MASTER_SSL_CA,0)}MASTER_SSL_CAPATH(){return this.getToken(FC.MASTER_SSL_CAPATH,0)}MASTER_SSL_CERT(){return this.getToken(FC.MASTER_SSL_CERT,0)}MASTER_SSL_CIPHER(){return this.getToken(FC.MASTER_SSL_CIPHER,0)}MASTER_SSL_CRL(){return this.getToken(FC.MASTER_SSL_CRL,0)}MASTER_SSL_CRLPATH(){return this.getToken(FC.MASTER_SSL_CRLPATH,0)}MASTER_SSL_KEY(){return this.getToken(FC.MASTER_SSL_KEY,0)}MASTER_TLS_VERSION(){return this.getToken(FC.MASTER_TLS_VERSION,0)}MASTER_USER(){return this.getToken(FC.MASTER_USER,0)}MAX_CONNECTIONS_PER_HOUR(){return this.getToken(FC.MAX_CONNECTIONS_PER_HOUR,0)}MAX_QUERIES_PER_HOUR(){return this.getToken(FC.MAX_QUERIES_PER_HOUR,0)}MAX(){return this.getToken(FC.MAX,0)}MAX_ROWS(){return this.getToken(FC.MAX_ROWS,0)}MAX_SIZE(){return this.getToken(FC.MAX_SIZE,0)}MAX_UPDATES_PER_HOUR(){return this.getToken(FC.MAX_UPDATES_PER_HOUR,0)}MAX_USER_CONNECTIONS(){return this.getToken(FC.MAX_USER_CONNECTIONS,0)}MEDIUM(){return this.getToken(FC.MEDIUM,0)}MEMBER(){return this.getToken(FC.MEMBER,0)}MEMORY(){return this.getToken(FC.MEMORY,0)}MERGE(){return this.getToken(FC.MERGE,0)}MESSAGE_TEXT(){return this.getToken(FC.MESSAGE_TEXT,0)}MID(){return this.getToken(FC.MID,0)}MIGRATE(){return this.getToken(FC.MIGRATE,0)}MIN(){return this.getToken(FC.MIN,0)}MIN_ROWS(){return this.getToken(FC.MIN_ROWS,0)}MODE(){return this.getToken(FC.MODE,0)}MODIFY(){return this.getToken(FC.MODIFY,0)}MUTEX(){return this.getToken(FC.MUTEX,0)}MYSQL(){return this.getToken(FC.MYSQL,0)}MYSQL_ERRNO(){return this.getToken(FC.MYSQL_ERRNO,0)}NAME(){return this.getToken(FC.NAME,0)}NAMES(){return this.getToken(FC.NAMES,0)}NCHAR(){return this.getToken(FC.NCHAR,0)}NDB_STORED_USER(){return this.getToken(FC.NDB_STORED_USER,0)}NESTED(){return this.getToken(FC.NESTED,0)}NEVER(){return this.getToken(FC.NEVER,0)}NEXT(){return this.getToken(FC.NEXT,0)}NO(){return this.getToken(FC.NO,0)}NOCOPY(){return this.getToken(FC.NOCOPY,0)}NODEGROUP(){return this.getToken(FC.NODEGROUP,0)}NONE(){return this.getToken(FC.NONE,0)}NOWAIT(){return this.getToken(FC.NOWAIT,0)}NUMBER(){return this.getToken(FC.NUMBER,0)}ODBC(){return this.getToken(FC.ODBC,0)}OFFLINE(){return this.getToken(FC.OFFLINE,0)}OFFSET(){return this.getToken(FC.OFFSET,0)}OF(){return this.getToken(FC.OF,0)}OJ(){return this.getToken(FC.OJ,0)}OLD_PASSWORD(){return this.getToken(FC.OLD_PASSWORD,0)}ONE(){return this.getToken(FC.ONE,0)}ONLINE(){return this.getToken(FC.ONLINE,0)}ONLY(){return this.getToken(FC.ONLY,0)}OPEN(){return this.getToken(FC.OPEN,0)}OPTIMIZER_COSTS(){return this.getToken(FC.OPTIMIZER_COSTS,0)}OPTIONAL(){return this.getToken(FC.OPTIONAL,0)}OPTIONS(){return this.getToken(FC.OPTIONS,0)}ORDER(){return this.getToken(FC.ORDER,0)}ORDINALITY(){return this.getToken(FC.ORDINALITY,0)}OWNER(){return this.getToken(FC.OWNER,0)}PACK_KEYS(){return this.getToken(FC.PACK_KEYS,0)}PAGE(){return this.getToken(FC.PAGE,0)}PARSER(){return this.getToken(FC.PARSER,0)}PARTIAL(){return this.getToken(FC.PARTIAL,0)}PARTITIONING(){return this.getToken(FC.PARTITIONING,0)}PARTITIONS(){return this.getToken(FC.PARTITIONS,0)}PASSWORD(){return this.getToken(FC.PASSWORD,0)}PASSWORDLESS_USER_ADMIN(){return this.getToken(FC.PASSWORDLESS_USER_ADMIN,0)}PASSWORD_LOCK_TIME(){return this.getToken(FC.PASSWORD_LOCK_TIME,0)}PATH(){return this.getToken(FC.PATH,0)}PERSIST_RO_VARIABLES_ADMIN(){return this.getToken(FC.PERSIST_RO_VARIABLES_ADMIN,0)}PHASE(){return this.getToken(FC.PHASE,0)}PLUGINS(){return this.getToken(FC.PLUGINS,0)}PLUGIN_DIR(){return this.getToken(FC.PLUGIN_DIR,0)}PLUGIN(){return this.getToken(FC.PLUGIN,0)}PORT(){return this.getToken(FC.PORT,0)}PRECEDES(){return this.getToken(FC.PRECEDES,0)}PREPARE(){return this.getToken(FC.PREPARE,0)}PRESERVE(){return this.getToken(FC.PRESERVE,0)}PREV(){return this.getToken(FC.PREV,0)}PRIMARY(){return this.getToken(FC.PRIMARY,0)}PROCESSLIST(){return this.getToken(FC.PROCESSLIST,0)}PROFILE(){return this.getToken(FC.PROFILE,0)}PROFILES(){return this.getToken(FC.PROFILES,0)}PROXY(){return this.getToken(FC.PROXY,0)}QUERY(){return this.getToken(FC.QUERY,0)}QUICK(){return this.getToken(FC.QUICK,0)}REBUILD(){return this.getToken(FC.REBUILD,0)}RECOVER(){return this.getToken(FC.RECOVER,0)}RECURSIVE(){return this.getToken(FC.RECURSIVE,0)}REDO_BUFFER_SIZE(){return this.getToken(FC.REDO_BUFFER_SIZE,0)}REDUNDANT(){return this.getToken(FC.REDUNDANT,0)}RELAY(){return this.getToken(FC.RELAY,0)}RELAYLOG(){return this.getToken(FC.RELAYLOG,0)}RELAY_LOG_FILE(){return this.getToken(FC.RELAY_LOG_FILE,0)}RELAY_LOG_POS(){return this.getToken(FC.RELAY_LOG_POS,0)}REMOVE(){return this.getToken(FC.REMOVE,0)}REORGANIZE(){return this.getToken(FC.REORGANIZE,0)}REPAIR(){return this.getToken(FC.REPAIR,0)}REPLICATE_DO_DB(){return this.getToken(FC.REPLICATE_DO_DB,0)}REPLICATE_DO_TABLE(){return this.getToken(FC.REPLICATE_DO_TABLE,0)}REPLICATE_IGNORE_DB(){return this.getToken(FC.REPLICATE_IGNORE_DB,0)}REPLICATE_IGNORE_TABLE(){return this.getToken(FC.REPLICATE_IGNORE_TABLE,0)}REPLICATE_REWRITE_DB(){return this.getToken(FC.REPLICATE_REWRITE_DB,0)}REPLICATE_WILD_DO_TABLE(){return this.getToken(FC.REPLICATE_WILD_DO_TABLE,0)}REPLICATE_WILD_IGNORE_TABLE(){return this.getToken(FC.REPLICATE_WILD_IGNORE_TABLE,0)}REPLICATION(){return this.getToken(FC.REPLICATION,0)}REPLICATION_APPLIER(){return this.getToken(FC.REPLICATION_APPLIER,0)}REPLICATION_SLAVE_ADMIN(){return this.getToken(FC.REPLICATION_SLAVE_ADMIN,0)}RESET(){return this.getToken(FC.RESET,0)}RESOURCE_GROUP_ADMIN(){return this.getToken(FC.RESOURCE_GROUP_ADMIN,0)}RESOURCE_GROUP_USER(){return this.getToken(FC.RESOURCE_GROUP_USER,0)}RESUME(){return this.getToken(FC.RESUME,0)}RETURNED_SQLSTATE(){return this.getToken(FC.RETURNED_SQLSTATE,0)}RETURNS(){return this.getToken(FC.RETURNS,0)}REUSE(){return this.getToken(FC.REUSE,0)}ROLE(){return this.getToken(FC.ROLE,0)}ROLE_ADMIN(){return this.getToken(FC.ROLE_ADMIN,0)}ROLLBACK(){return this.getToken(FC.ROLLBACK,0)}ROLLUP(){return this.getToken(FC.ROLLUP,0)}ROTATE(){return this.getToken(FC.ROTATE,0)}ROW(){return this.getToken(FC.ROW,0)}ROWS(){return this.getToken(FC.ROWS,0)}ROW_FORMAT(){return this.getToken(FC.ROW_FORMAT,0)}RTREE(){return this.getToken(FC.RTREE,0)}S3(){return this.getToken(FC.S3,0)}SAVEPOINT(){return this.getToken(FC.SAVEPOINT,0)}SCHEDULE(){return this.getToken(FC.SCHEDULE,0)}SCHEMA_NAME(){return this.getToken(FC.SCHEMA_NAME,0)}SECURITY(){return this.getToken(FC.SECURITY,0)}SECONDARY_ENGINE_ATTRIBUTE(){return this.getToken(FC.SECONDARY_ENGINE_ATTRIBUTE,0)}SERIAL(){return this.getToken(FC.SERIAL,0)}SERVER(){return this.getToken(FC.SERVER,0)}SESSION(){return this.getToken(FC.SESSION,0)}SESSION_VARIABLES_ADMIN(){return this.getToken(FC.SESSION_VARIABLES_ADMIN,0)}SET_USER_ID(){return this.getToken(FC.SET_USER_ID,0)}SHARE(){return this.getToken(FC.SHARE,0)}SHARED(){return this.getToken(FC.SHARED,0)}SHOW_ROUTINE(){return this.getToken(FC.SHOW_ROUTINE,0)}SIGNED(){return this.getToken(FC.SIGNED,0)}SIMPLE(){return this.getToken(FC.SIMPLE,0)}SLAVE(){return this.getToken(FC.SLAVE,0)}SLOW(){return this.getToken(FC.SLOW,0)}SKIP_QUERY_REWRITE(){return this.getToken(FC.SKIP_QUERY_REWRITE,0)}SNAPSHOT(){return this.getToken(FC.SNAPSHOT,0)}SOCKET(){return this.getToken(FC.SOCKET,0)}SOME(){return this.getToken(FC.SOME,0)}SONAME(){return this.getToken(FC.SONAME,0)}SOUNDS(){return this.getToken(FC.SOUNDS,0)}SOURCE(){return this.getToken(FC.SOURCE,0)}SQL_AFTER_GTIDS(){return this.getToken(FC.SQL_AFTER_GTIDS,0)}SQL_AFTER_MTS_GAPS(){return this.getToken(FC.SQL_AFTER_MTS_GAPS,0)}SQL_BEFORE_GTIDS(){return this.getToken(FC.SQL_BEFORE_GTIDS,0)}SQL_BUFFER_RESULT(){return this.getToken(FC.SQL_BUFFER_RESULT,0)}SQL_CACHE(){return this.getToken(FC.SQL_CACHE,0)}SQL_NO_CACHE(){return this.getToken(FC.SQL_NO_CACHE,0)}SQL_THREAD(){return this.getToken(FC.SQL_THREAD,0)}STACKED(){return this.getToken(FC.STACKED,0)}START(){return this.getToken(FC.START,0)}STARTS(){return this.getToken(FC.STARTS,0)}STATS_AUTO_RECALC(){return this.getToken(FC.STATS_AUTO_RECALC,0)}STATS_PERSISTENT(){return this.getToken(FC.STATS_PERSISTENT,0)}STATS_SAMPLE_PAGES(){return this.getToken(FC.STATS_SAMPLE_PAGES,0)}STATUS(){return this.getToken(FC.STATUS,0)}STD(){return this.getToken(FC.STD,0)}STDDEV(){return this.getToken(FC.STDDEV,0)}STDDEV_POP(){return this.getToken(FC.STDDEV_POP,0)}STDDEV_SAMP(){return this.getToken(FC.STDDEV_SAMP,0)}STOP(){return this.getToken(FC.STOP,0)}STORAGE(){return this.getToken(FC.STORAGE,0)}STRING(){return this.getToken(FC.STRING,0)}SUBCLASS_ORIGIN(){return this.getToken(FC.SUBCLASS_ORIGIN,0)}SUBJECT(){return this.getToken(FC.SUBJECT,0)}SUBPARTITION(){return this.getToken(FC.SUBPARTITION,0)}SUBPARTITIONS(){return this.getToken(FC.SUBPARTITIONS,0)}SUM(){return this.getToken(FC.SUM,0)}SUSPEND(){return this.getToken(FC.SUSPEND,0)}SWAPS(){return this.getToken(FC.SWAPS,0)}SWITCHES(){return this.getToken(FC.SWITCHES,0)}SYSTEM_VARIABLES_ADMIN(){return this.getToken(FC.SYSTEM_VARIABLES_ADMIN,0)}TABLE_NAME(){return this.getToken(FC.TABLE_NAME,0)}TABLESPACE(){return this.getToken(FC.TABLESPACE,0)}TABLE_ENCRYPTION_ADMIN(){return this.getToken(FC.TABLE_ENCRYPTION_ADMIN,0)}TABLE_TYPE(){return this.getToken(FC.TABLE_TYPE,0)}TEMPORARY(){return this.getToken(FC.TEMPORARY,0)}TEMPTABLE(){return this.getToken(FC.TEMPTABLE,0)}THAN(){return this.getToken(FC.THAN,0)}TP_CONNECTION_ADMIN(){return this.getToken(FC.TP_CONNECTION_ADMIN,0)}TRADITIONAL(){return this.getToken(FC.TRADITIONAL,0)}TRANSACTION(){return this.getToken(FC.TRANSACTION,0)}TRANSACTIONAL(){return this.getToken(FC.TRANSACTIONAL,0)}TRIGGERS(){return this.getToken(FC.TRIGGERS,0)}TRUNCATE(){return this.getToken(FC.TRUNCATE,0)}UNBOUNDED(){return this.getToken(FC.UNBOUNDED,0)}UNDEFINED(){return this.getToken(FC.UNDEFINED,0)}UNDOFILE(){return this.getToken(FC.UNDOFILE,0)}UNDO_BUFFER_SIZE(){return this.getToken(FC.UNDO_BUFFER_SIZE,0)}UNINSTALL(){return this.getToken(FC.UNINSTALL,0)}UNKNOWN(){return this.getToken(FC.UNKNOWN,0)}UNTIL(){return this.getToken(FC.UNTIL,0)}UPGRADE(){return this.getToken(FC.UPGRADE,0)}USA(){return this.getToken(FC.USA,0)}USER(){return this.getToken(FC.USER,0)}USE_FRM(){return this.getToken(FC.USE_FRM,0)}USER_RESOURCES(){return this.getToken(FC.USER_RESOURCES,0)}VALIDATION(){return this.getToken(FC.VALIDATION,0)}VALUE(){return this.getToken(FC.VALUE,0)}VAR_POP(){return this.getToken(FC.VAR_POP,0)}VAR_SAMP(){return this.getToken(FC.VAR_SAMP,0)}VARIABLES(){return this.getToken(FC.VARIABLES,0)}VARIANCE(){return this.getToken(FC.VARIANCE,0)}VERSION_TOKEN_ADMIN(){return this.getToken(FC.VERSION_TOKEN_ADMIN,0)}VIEW(){return this.getToken(FC.VIEW,0)}VIRTUAL(){return this.getToken(FC.VIRTUAL,0)}WAIT(){return this.getToken(FC.WAIT,0)}WARNINGS(){return this.getToken(FC.WARNINGS,0)}WITHOUT(){return this.getToken(FC.WITHOUT,0)}WORK(){return this.getToken(FC.WORK,0)}WRAPPER(){return this.getToken(FC.WRAPPER,0)}X509(){return this.getToken(FC.X509,0)}XA(){return this.getToken(FC.XA,0)}XA_RECOVER_ADMIN(){return this.getToken(FC.XA_RECOVER_ADMIN,0)}XML(){return this.getToken(FC.XML,0)}get ruleIndex(){return FC.RULE_keywordsCanBeId}accept(t){return t.visitKeywordsCanBeId?t.visitKeywordsCanBeId(this):t.visitChildren(this)}},oG=class extends ga{constructor(t,e){super(t,e)}ABS(){return this.getToken(FC.ABS,0)}ACOS(){return this.getToken(FC.ACOS,0)}ADDDATE(){return this.getToken(FC.ADDDATE,0)}ADDTIME(){return this.getToken(FC.ADDTIME,0)}AES_DECRYPT(){return this.getToken(FC.AES_DECRYPT,0)}AES_ENCRYPT(){return this.getToken(FC.AES_ENCRYPT,0)}AREA(){return this.getToken(FC.AREA,0)}ASBINARY(){return this.getToken(FC.ASBINARY,0)}ASIN(){return this.getToken(FC.ASIN,0)}ASTEXT(){return this.getToken(FC.ASTEXT,0)}ASWKB(){return this.getToken(FC.ASWKB,0)}ASWKT(){return this.getToken(FC.ASWKT,0)}ASYMMETRIC_DECRYPT(){return this.getToken(FC.ASYMMETRIC_DECRYPT,0)}ASYMMETRIC_DERIVE(){return this.getToken(FC.ASYMMETRIC_DERIVE,0)}ASYMMETRIC_ENCRYPT(){return this.getToken(FC.ASYMMETRIC_ENCRYPT,0)}ASYMMETRIC_SIGN(){return this.getToken(FC.ASYMMETRIC_SIGN,0)}ASYMMETRIC_VERIFY(){return this.getToken(FC.ASYMMETRIC_VERIFY,0)}ATAN(){return this.getToken(FC.ATAN,0)}ATAN2(){return this.getToken(FC.ATAN2,0)}BENCHMARK(){return this.getToken(FC.BENCHMARK,0)}BIN(){return this.getToken(FC.BIN,0)}BIT_COUNT(){return this.getToken(FC.BIT_COUNT,0)}BIT_LENGTH(){return this.getToken(FC.BIT_LENGTH,0)}BUFFER(){return this.getToken(FC.BUFFER,0)}CEIL(){return this.getToken(FC.CEIL,0)}CEILING(){return this.getToken(FC.CEILING,0)}CENTROID(){return this.getToken(FC.CENTROID,0)}CHARACTER_LENGTH(){return this.getToken(FC.CHARACTER_LENGTH,0)}CHARSET(){return this.getToken(FC.CHARSET,0)}CHAR_LENGTH(){return this.getToken(FC.CHAR_LENGTH,0)}COERCIBILITY(){return this.getToken(FC.COERCIBILITY,0)}COLLATION(){return this.getToken(FC.COLLATION,0)}COMPRESS(){return this.getToken(FC.COMPRESS,0)}CONCAT(){return this.getToken(FC.CONCAT,0)}CONCAT_WS(){return this.getToken(FC.CONCAT_WS,0)}CONNECTION_ID(){return this.getToken(FC.CONNECTION_ID,0)}CONV(){return this.getToken(FC.CONV,0)}CONVERT_TZ(){return this.getToken(FC.CONVERT_TZ,0)}COS(){return this.getToken(FC.COS,0)}COT(){return this.getToken(FC.COT,0)}COUNT(){return this.getToken(FC.COUNT,0)}CRC32(){return this.getToken(FC.CRC32,0)}CREATE_ASYMMETRIC_PRIV_KEY(){return this.getToken(FC.CREATE_ASYMMETRIC_PRIV_KEY,0)}CREATE_ASYMMETRIC_PUB_KEY(){return this.getToken(FC.CREATE_ASYMMETRIC_PUB_KEY,0)}CREATE_DH_PARAMETERS(){return this.getToken(FC.CREATE_DH_PARAMETERS,0)}CREATE_DIGEST(){return this.getToken(FC.CREATE_DIGEST,0)}CROSSES(){return this.getToken(FC.CROSSES,0)}CUME_DIST(){return this.getToken(FC.CUME_DIST,0)}DATABASE(){return this.getToken(FC.DATABASE,0)}DATE(){return this.getToken(FC.DATE,0)}DATEDIFF(){return this.getToken(FC.DATEDIFF,0)}DATE_FORMAT(){return this.getToken(FC.DATE_FORMAT,0)}DAY(){return this.getToken(FC.DAY,0)}DAYNAME(){return this.getToken(FC.DAYNAME,0)}DAYOFMONTH(){return this.getToken(FC.DAYOFMONTH,0)}DAYOFWEEK(){return this.getToken(FC.DAYOFWEEK,0)}DAYOFYEAR(){return this.getToken(FC.DAYOFYEAR,0)}DECODE(){return this.getToken(FC.DECODE,0)}DEGREES(){return this.getToken(FC.DEGREES,0)}DENSE_RANK(){return this.getToken(FC.DENSE_RANK,0)}DES_DECRYPT(){return this.getToken(FC.DES_DECRYPT,0)}DES_ENCRYPT(){return this.getToken(FC.DES_ENCRYPT,0)}DIMENSION(){return this.getToken(FC.DIMENSION,0)}DISJOINT(){return this.getToken(FC.DISJOINT,0)}ELT(){return this.getToken(FC.ELT,0)}ENCODE(){return this.getToken(FC.ENCODE,0)}ENCRYPT(){return this.getToken(FC.ENCRYPT,0)}ENDPOINT(){return this.getToken(FC.ENDPOINT,0)}ENVELOPE(){return this.getToken(FC.ENVELOPE,0)}EQUALS(){return this.getToken(FC.EQUALS,0)}EXP(){return this.getToken(FC.EXP,0)}EXPORT_SET(){return this.getToken(FC.EXPORT_SET,0)}EXTERIORRING(){return this.getToken(FC.EXTERIORRING,0)}EXTRACTVALUE(){return this.getToken(FC.EXTRACTVALUE,0)}FIELD(){return this.getToken(FC.FIELD,0)}FIND_IN_SET(){return this.getToken(FC.FIND_IN_SET,0)}FIRST_VALUE(){return this.getToken(FC.FIRST_VALUE,0)}FLOOR(){return this.getToken(FC.FLOOR,0)}FORMAT(){return this.getToken(FC.FORMAT,0)}FOUND_ROWS(){return this.getToken(FC.FOUND_ROWS,0)}FROM_BASE64(){return this.getToken(FC.FROM_BASE64,0)}FROM_DAYS(){return this.getToken(FC.FROM_DAYS,0)}FROM_UNIXTIME(){return this.getToken(FC.FROM_UNIXTIME,0)}GEOMCOLLFROMTEXT(){return this.getToken(FC.GEOMCOLLFROMTEXT,0)}GEOMCOLLFROMWKB(){return this.getToken(FC.GEOMCOLLFROMWKB,0)}GEOMETRYCOLLECTION(){return this.getToken(FC.GEOMETRYCOLLECTION,0)}GEOMETRYCOLLECTIONFROMTEXT(){return this.getToken(FC.GEOMETRYCOLLECTIONFROMTEXT,0)}GEOMETRYCOLLECTIONFROMWKB(){return this.getToken(FC.GEOMETRYCOLLECTIONFROMWKB,0)}GEOMETRYFROMTEXT(){return this.getToken(FC.GEOMETRYFROMTEXT,0)}GEOMETRYFROMWKB(){return this.getToken(FC.GEOMETRYFROMWKB,0)}GEOMETRYN(){return this.getToken(FC.GEOMETRYN,0)}GEOMETRYTYPE(){return this.getToken(FC.GEOMETRYTYPE,0)}GEOMFROMTEXT(){return this.getToken(FC.GEOMFROMTEXT,0)}GEOMFROMWKB(){return this.getToken(FC.GEOMFROMWKB,0)}GET_FORMAT(){return this.getToken(FC.GET_FORMAT,0)}GET_LOCK(){return this.getToken(FC.GET_LOCK,0)}GLENGTH(){return this.getToken(FC.GLENGTH,0)}GREATEST(){return this.getToken(FC.GREATEST,0)}GTID_SUBSET(){return this.getToken(FC.GTID_SUBSET,0)}GTID_SUBTRACT(){return this.getToken(FC.GTID_SUBTRACT,0)}HEX(){return this.getToken(FC.HEX,0)}HOUR(){return this.getToken(FC.HOUR,0)}IFNULL(){return this.getToken(FC.IFNULL,0)}INET6_ATON(){return this.getToken(FC.INET6_ATON,0)}INET6_NTOA(){return this.getToken(FC.INET6_NTOA,0)}INET_ATON(){return this.getToken(FC.INET_ATON,0)}INET_NTOA(){return this.getToken(FC.INET_NTOA,0)}INSTR(){return this.getToken(FC.INSTR,0)}INTERIORRINGN(){return this.getToken(FC.INTERIORRINGN,0)}INTERSECTS(){return this.getToken(FC.INTERSECTS,0)}INVISIBLE(){return this.getToken(FC.INVISIBLE,0)}ISCLOSED(){return this.getToken(FC.ISCLOSED,0)}ISEMPTY(){return this.getToken(FC.ISEMPTY,0)}ISNULL(){return this.getToken(FC.ISNULL,0)}ISSIMPLE(){return this.getToken(FC.ISSIMPLE,0)}IS_FREE_LOCK(){return this.getToken(FC.IS_FREE_LOCK,0)}IS_IPV4(){return this.getToken(FC.IS_IPV4,0)}IS_IPV4_COMPAT(){return this.getToken(FC.IS_IPV4_COMPAT,0)}IS_IPV4_MAPPED(){return this.getToken(FC.IS_IPV4_MAPPED,0)}IS_IPV6(){return this.getToken(FC.IS_IPV6,0)}IS_USED_LOCK(){return this.getToken(FC.IS_USED_LOCK,0)}LAG(){return this.getToken(FC.LAG,0)}LAST_INSERT_ID(){return this.getToken(FC.LAST_INSERT_ID,0)}LAST_VALUE(){return this.getToken(FC.LAST_VALUE,0)}LCASE(){return this.getToken(FC.LCASE,0)}LEAD(){return this.getToken(FC.LEAD,0)}LEAST(){return this.getToken(FC.LEAST,0)}LEFT(){return this.getToken(FC.LEFT,0)}LENGTH(){return this.getToken(FC.LENGTH,0)}LINEFROMTEXT(){return this.getToken(FC.LINEFROMTEXT,0)}LINEFROMWKB(){return this.getToken(FC.LINEFROMWKB,0)}LINESTRING(){return this.getToken(FC.LINESTRING,0)}LINESTRINGFROMTEXT(){return this.getToken(FC.LINESTRINGFROMTEXT,0)}LINESTRINGFROMWKB(){return this.getToken(FC.LINESTRINGFROMWKB,0)}LN(){return this.getToken(FC.LN,0)}LOAD_FILE(){return this.getToken(FC.LOAD_FILE,0)}LOCATE(){return this.getToken(FC.LOCATE,0)}LOG(){return this.getToken(FC.LOG,0)}LOG10(){return this.getToken(FC.LOG10,0)}LOG2(){return this.getToken(FC.LOG2,0)}LOWER(){return this.getToken(FC.LOWER,0)}LPAD(){return this.getToken(FC.LPAD,0)}LTRIM(){return this.getToken(FC.LTRIM,0)}MAKEDATE(){return this.getToken(FC.MAKEDATE,0)}MAKETIME(){return this.getToken(FC.MAKETIME,0)}MAKE_SET(){return this.getToken(FC.MAKE_SET,0)}MASTER_POS_WAIT(){return this.getToken(FC.MASTER_POS_WAIT,0)}MBRCONTAINS(){return this.getToken(FC.MBRCONTAINS,0)}MBRDISJOINT(){return this.getToken(FC.MBRDISJOINT,0)}MBREQUAL(){return this.getToken(FC.MBREQUAL,0)}MBRINTERSECTS(){return this.getToken(FC.MBRINTERSECTS,0)}MBROVERLAPS(){return this.getToken(FC.MBROVERLAPS,0)}MBRTOUCHES(){return this.getToken(FC.MBRTOUCHES,0)}MBRWITHIN(){return this.getToken(FC.MBRWITHIN,0)}MD5(){return this.getToken(FC.MD5,0)}MICROSECOND(){return this.getToken(FC.MICROSECOND,0)}MINUTE(){return this.getToken(FC.MINUTE,0)}MLINEFROMTEXT(){return this.getToken(FC.MLINEFROMTEXT,0)}MLINEFROMWKB(){return this.getToken(FC.MLINEFROMWKB,0)}MOD(){return this.getToken(FC.MOD,0)}MONTH(){return this.getToken(FC.MONTH,0)}MONTHNAME(){return this.getToken(FC.MONTHNAME,0)}MPOINTFROMTEXT(){return this.getToken(FC.MPOINTFROMTEXT,0)}MPOINTFROMWKB(){return this.getToken(FC.MPOINTFROMWKB,0)}MPOLYFROMTEXT(){return this.getToken(FC.MPOLYFROMTEXT,0)}MPOLYFROMWKB(){return this.getToken(FC.MPOLYFROMWKB,0)}MULTILINESTRING(){return this.getToken(FC.MULTILINESTRING,0)}MULTILINESTRINGFROMTEXT(){return this.getToken(FC.MULTILINESTRINGFROMTEXT,0)}MULTILINESTRINGFROMWKB(){return this.getToken(FC.MULTILINESTRINGFROMWKB,0)}MULTIPOINT(){return this.getToken(FC.MULTIPOINT,0)}MULTIPOINTFROMTEXT(){return this.getToken(FC.MULTIPOINTFROMTEXT,0)}MULTIPOINTFROMWKB(){return this.getToken(FC.MULTIPOINTFROMWKB,0)}MULTIPOLYGON(){return this.getToken(FC.MULTIPOLYGON,0)}MULTIPOLYGONFROMTEXT(){return this.getToken(FC.MULTIPOLYGONFROMTEXT,0)}MULTIPOLYGONFROMWKB(){return this.getToken(FC.MULTIPOLYGONFROMWKB,0)}NAME_CONST(){return this.getToken(FC.NAME_CONST,0)}NTH_VALUE(){return this.getToken(FC.NTH_VALUE,0)}NTILE(){return this.getToken(FC.NTILE,0)}NULLIF(){return this.getToken(FC.NULLIF,0)}NUMGEOMETRIES(){return this.getToken(FC.NUMGEOMETRIES,0)}NUMINTERIORRINGS(){return this.getToken(FC.NUMINTERIORRINGS,0)}NUMPOINTS(){return this.getToken(FC.NUMPOINTS,0)}OCT(){return this.getToken(FC.OCT,0)}OCTET_LENGTH(){return this.getToken(FC.OCTET_LENGTH,0)}ORD(){return this.getToken(FC.ORD,0)}OVERLAPS(){return this.getToken(FC.OVERLAPS,0)}PERCENT_RANK(){return this.getToken(FC.PERCENT_RANK,0)}PERIOD_ADD(){return this.getToken(FC.PERIOD_ADD,0)}PERIOD_DIFF(){return this.getToken(FC.PERIOD_DIFF,0)}PI(){return this.getToken(FC.PI,0)}POINT(){return this.getToken(FC.POINT,0)}POINTFROMTEXT(){return this.getToken(FC.POINTFROMTEXT,0)}POINTFROMWKB(){return this.getToken(FC.POINTFROMWKB,0)}POINTN(){return this.getToken(FC.POINTN,0)}POLYFROMTEXT(){return this.getToken(FC.POLYFROMTEXT,0)}POLYFROMWKB(){return this.getToken(FC.POLYFROMWKB,0)}POLYGON(){return this.getToken(FC.POLYGON,0)}POLYGONFROMTEXT(){return this.getToken(FC.POLYGONFROMTEXT,0)}POLYGONFROMWKB(){return this.getToken(FC.POLYGONFROMWKB,0)}POSITION(){return this.getToken(FC.POSITION,0)}POW(){return this.getToken(FC.POW,0)}POWER(){return this.getToken(FC.POWER,0)}QUARTER(){return this.getToken(FC.QUARTER,0)}QUOTE(){return this.getToken(FC.QUOTE,0)}RADIANS(){return this.getToken(FC.RADIANS,0)}RAND(){return this.getToken(FC.RAND,0)}RANDOM(){return this.getToken(FC.RANDOM,0)}RANK(){return this.getToken(FC.RANK,0)}RANDOM_BYTES(){return this.getToken(FC.RANDOM_BYTES,0)}RELEASE_LOCK(){return this.getToken(FC.RELEASE_LOCK,0)}REVERSE(){return this.getToken(FC.REVERSE,0)}RIGHT(){return this.getToken(FC.RIGHT,0)}ROUND(){return this.getToken(FC.ROUND,0)}ROW_COUNT(){return this.getToken(FC.ROW_COUNT,0)}ROW_NUMBER(){return this.getToken(FC.ROW_NUMBER,0)}RPAD(){return this.getToken(FC.RPAD,0)}RTRIM(){return this.getToken(FC.RTRIM,0)}SCHEMA(){return this.getToken(FC.SCHEMA,0)}SECOND(){return this.getToken(FC.SECOND,0)}SEC_TO_TIME(){return this.getToken(FC.SEC_TO_TIME,0)}SESSION_USER(){return this.getToken(FC.SESSION_USER,0)}SESSION_VARIABLES_ADMIN(){return this.getToken(FC.SESSION_VARIABLES_ADMIN,0)}SHA(){return this.getToken(FC.SHA,0)}SHA1(){return this.getToken(FC.SHA1,0)}SHA2(){return this.getToken(FC.SHA2,0)}SIGN(){return this.getToken(FC.SIGN,0)}SIN(){return this.getToken(FC.SIN,0)}SLEEP(){return this.getToken(FC.SLEEP,0)}SOUNDEX(){return this.getToken(FC.SOUNDEX,0)}SQL_THREAD_WAIT_AFTER_GTIDS(){return this.getToken(FC.SQL_THREAD_WAIT_AFTER_GTIDS,0)}SQRT(){return this.getToken(FC.SQRT,0)}SRID(){return this.getToken(FC.SRID,0)}STARTPOINT(){return this.getToken(FC.STARTPOINT,0)}STRCMP(){return this.getToken(FC.STRCMP,0)}STR_TO_DATE(){return this.getToken(FC.STR_TO_DATE,0)}ST_AREA(){return this.getToken(FC.ST_AREA,0)}ST_ASBINARY(){return this.getToken(FC.ST_ASBINARY,0)}ST_ASTEXT(){return this.getToken(FC.ST_ASTEXT,0)}ST_ASWKB(){return this.getToken(FC.ST_ASWKB,0)}ST_ASWKT(){return this.getToken(FC.ST_ASWKT,0)}ST_BUFFER(){return this.getToken(FC.ST_BUFFER,0)}ST_CENTROID(){return this.getToken(FC.ST_CENTROID,0)}ST_CONTAINS(){return this.getToken(FC.ST_CONTAINS,0)}ST_CROSSES(){return this.getToken(FC.ST_CROSSES,0)}ST_DIFFERENCE(){return this.getToken(FC.ST_DIFFERENCE,0)}ST_DIMENSION(){return this.getToken(FC.ST_DIMENSION,0)}ST_DISJOINT(){return this.getToken(FC.ST_DISJOINT,0)}ST_DISTANCE(){return this.getToken(FC.ST_DISTANCE,0)}ST_ENDPOINT(){return this.getToken(FC.ST_ENDPOINT,0)}ST_ENVELOPE(){return this.getToken(FC.ST_ENVELOPE,0)}ST_EQUALS(){return this.getToken(FC.ST_EQUALS,0)}ST_EXTERIORRING(){return this.getToken(FC.ST_EXTERIORRING,0)}ST_GEOMCOLLFROMTEXT(){return this.getToken(FC.ST_GEOMCOLLFROMTEXT,0)}ST_GEOMCOLLFROMTXT(){return this.getToken(FC.ST_GEOMCOLLFROMTXT,0)}ST_GEOMCOLLFROMWKB(){return this.getToken(FC.ST_GEOMCOLLFROMWKB,0)}ST_GEOMETRYCOLLECTIONFROMTEXT(){return this.getToken(FC.ST_GEOMETRYCOLLECTIONFROMTEXT,0)}ST_GEOMETRYCOLLECTIONFROMWKB(){return this.getToken(FC.ST_GEOMETRYCOLLECTIONFROMWKB,0)}ST_GEOMETRYFROMTEXT(){return this.getToken(FC.ST_GEOMETRYFROMTEXT,0)}ST_GEOMETRYFROMWKB(){return this.getToken(FC.ST_GEOMETRYFROMWKB,0)}ST_GEOMETRYN(){return this.getToken(FC.ST_GEOMETRYN,0)}ST_GEOMETRYTYPE(){return this.getToken(FC.ST_GEOMETRYTYPE,0)}ST_GEOMFROMTEXT(){return this.getToken(FC.ST_GEOMFROMTEXT,0)}ST_GEOMFROMWKB(){return this.getToken(FC.ST_GEOMFROMWKB,0)}ST_INTERIORRINGN(){return this.getToken(FC.ST_INTERIORRINGN,0)}ST_INTERSECTION(){return this.getToken(FC.ST_INTERSECTION,0)}ST_INTERSECTS(){return this.getToken(FC.ST_INTERSECTS,0)}ST_ISCLOSED(){return this.getToken(FC.ST_ISCLOSED,0)}ST_ISEMPTY(){return this.getToken(FC.ST_ISEMPTY,0)}ST_ISSIMPLE(){return this.getToken(FC.ST_ISSIMPLE,0)}ST_LINEFROMTEXT(){return this.getToken(FC.ST_LINEFROMTEXT,0)}ST_LINEFROMWKB(){return this.getToken(FC.ST_LINEFROMWKB,0)}ST_LINESTRINGFROMTEXT(){return this.getToken(FC.ST_LINESTRINGFROMTEXT,0)}ST_LINESTRINGFROMWKB(){return this.getToken(FC.ST_LINESTRINGFROMWKB,0)}ST_NUMGEOMETRIES(){return this.getToken(FC.ST_NUMGEOMETRIES,0)}ST_NUMINTERIORRING(){return this.getToken(FC.ST_NUMINTERIORRING,0)}ST_NUMINTERIORRINGS(){return this.getToken(FC.ST_NUMINTERIORRINGS,0)}ST_NUMPOINTS(){return this.getToken(FC.ST_NUMPOINTS,0)}ST_OVERLAPS(){return this.getToken(FC.ST_OVERLAPS,0)}ST_POINTFROMTEXT(){return this.getToken(FC.ST_POINTFROMTEXT,0)}ST_POINTFROMWKB(){return this.getToken(FC.ST_POINTFROMWKB,0)}ST_POINTN(){return this.getToken(FC.ST_POINTN,0)}ST_POLYFROMTEXT(){return this.getToken(FC.ST_POLYFROMTEXT,0)}ST_POLYFROMWKB(){return this.getToken(FC.ST_POLYFROMWKB,0)}ST_POLYGONFROMTEXT(){return this.getToken(FC.ST_POLYGONFROMTEXT,0)}ST_POLYGONFROMWKB(){return this.getToken(FC.ST_POLYGONFROMWKB,0)}ST_SRID(){return this.getToken(FC.ST_SRID,0)}ST_STARTPOINT(){return this.getToken(FC.ST_STARTPOINT,0)}ST_SYMDIFFERENCE(){return this.getToken(FC.ST_SYMDIFFERENCE,0)}ST_TOUCHES(){return this.getToken(FC.ST_TOUCHES,0)}ST_UNION(){return this.getToken(FC.ST_UNION,0)}ST_WITHIN(){return this.getToken(FC.ST_WITHIN,0)}ST_X(){return this.getToken(FC.ST_X,0)}ST_Y(){return this.getToken(FC.ST_Y,0)}SUBDATE(){return this.getToken(FC.SUBDATE,0)}SUBSTRING_INDEX(){return this.getToken(FC.SUBSTRING_INDEX,0)}SUBTIME(){return this.getToken(FC.SUBTIME,0)}SYSTEM_USER(){return this.getToken(FC.SYSTEM_USER,0)}TAN(){return this.getToken(FC.TAN,0)}TIME(){return this.getToken(FC.TIME,0)}TIMEDIFF(){return this.getToken(FC.TIMEDIFF,0)}TIMESTAMP(){return this.getToken(FC.TIMESTAMP,0)}TIMESTAMPADD(){return this.getToken(FC.TIMESTAMPADD,0)}TIMESTAMPDIFF(){return this.getToken(FC.TIMESTAMPDIFF,0)}TIME_FORMAT(){return this.getToken(FC.TIME_FORMAT,0)}TIME_TO_SEC(){return this.getToken(FC.TIME_TO_SEC,0)}TOUCHES(){return this.getToken(FC.TOUCHES,0)}TO_BASE64(){return this.getToken(FC.TO_BASE64,0)}TO_DAYS(){return this.getToken(FC.TO_DAYS,0)}TO_SECONDS(){return this.getToken(FC.TO_SECONDS,0)}UCASE(){return this.getToken(FC.UCASE,0)}UNCOMPRESS(){return this.getToken(FC.UNCOMPRESS,0)}UNCOMPRESSED_LENGTH(){return this.getToken(FC.UNCOMPRESSED_LENGTH,0)}UNHEX(){return this.getToken(FC.UNHEX,0)}UNIX_TIMESTAMP(){return this.getToken(FC.UNIX_TIMESTAMP,0)}UPDATEXML(){return this.getToken(FC.UPDATEXML,0)}UPPER(){return this.getToken(FC.UPPER,0)}UUID(){return this.getToken(FC.UUID,0)}UUID_SHORT(){return this.getToken(FC.UUID_SHORT,0)}VALIDATE_PASSWORD_STRENGTH(){return this.getToken(FC.VALIDATE_PASSWORD_STRENGTH,0)}VERSION(){return this.getToken(FC.VERSION,0)}VISIBLE(){return this.getToken(FC.VISIBLE,0)}WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(){return this.getToken(FC.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS,0)}WEEK(){return this.getToken(FC.WEEK,0)}WEEKDAY(){return this.getToken(FC.WEEKDAY,0)}WEEKOFYEAR(){return this.getToken(FC.WEEKOFYEAR,0)}WEIGHT_STRING(){return this.getToken(FC.WEIGHT_STRING,0)}WITHIN(){return this.getToken(FC.WITHIN,0)}YEAR(){return this.getToken(FC.YEAR,0)}YEARWEEK(){return this.getToken(FC.YEARWEEK,0)}Y_FUNCTION(){return this.getToken(FC.Y_FUNCTION,0)}X_FUNCTION(){return this.getToken(FC.X_FUNCTION,0)}JSON_ARRAY(){return this.getToken(FC.JSON_ARRAY,0)}JSON_OBJECT(){return this.getToken(FC.JSON_OBJECT,0)}JSON_QUOTE(){return this.getToken(FC.JSON_QUOTE,0)}JSON_CONTAINS(){return this.getToken(FC.JSON_CONTAINS,0)}JSON_CONTAINS_PATH(){return this.getToken(FC.JSON_CONTAINS_PATH,0)}JSON_EXTRACT(){return this.getToken(FC.JSON_EXTRACT,0)}JSON_KEYS(){return this.getToken(FC.JSON_KEYS,0)}JSON_OVERLAPS(){return this.getToken(FC.JSON_OVERLAPS,0)}JSON_SEARCH(){return this.getToken(FC.JSON_SEARCH,0)}JSON_VALUE(){return this.getToken(FC.JSON_VALUE,0)}JSON_ARRAY_APPEND(){return this.getToken(FC.JSON_ARRAY_APPEND,0)}JSON_ARRAY_INSERT(){return this.getToken(FC.JSON_ARRAY_INSERT,0)}JSON_INSERT(){return this.getToken(FC.JSON_INSERT,0)}JSON_MERGE(){return this.getToken(FC.JSON_MERGE,0)}JSON_MERGE_PATCH(){return this.getToken(FC.JSON_MERGE_PATCH,0)}JSON_MERGE_PRESERVE(){return this.getToken(FC.JSON_MERGE_PRESERVE,0)}JSON_REMOVE(){return this.getToken(FC.JSON_REMOVE,0)}JSON_REPLACE(){return this.getToken(FC.JSON_REPLACE,0)}JSON_SET(){return this.getToken(FC.JSON_SET,0)}JSON_UNQUOTE(){return this.getToken(FC.JSON_UNQUOTE,0)}JSON_DEPTH(){return this.getToken(FC.JSON_DEPTH,0)}JSON_LENGTH(){return this.getToken(FC.JSON_LENGTH,0)}JSON_TYPE(){return this.getToken(FC.JSON_TYPE,0)}JSON_VALID(){return this.getToken(FC.JSON_VALID,0)}JSON_TABLE(){return this.getToken(FC.JSON_TABLE,0)}JSON_SCHEMA_VALID(){return this.getToken(FC.JSON_SCHEMA_VALID,0)}JSON_SCHEMA_VALIDATION_REPORT(){return this.getToken(FC.JSON_SCHEMA_VALIDATION_REPORT,0)}JSON_PRETTY(){return this.getToken(FC.JSON_PRETTY,0)}JSON_STORAGE_FREE(){return this.getToken(FC.JSON_STORAGE_FREE,0)}JSON_STORAGE_SIZE(){return this.getToken(FC.JSON_STORAGE_SIZE,0)}JSON_ARRAYAGG(){return this.getToken(FC.JSON_ARRAYAGG,0)}JSON_OBJECTAGG(){return this.getToken(FC.JSON_OBJECTAGG,0)}get ruleIndex(){return FC.RULE_functionNameBase}accept(t){return t.visitFunctionNameBase?t.visitFunctionNameBase(this):t.visitChildren(this)}},RG=class extends Ii{},AG={SPACE:FC.SPACE,FROM:FC.FROM,OPENING_BRACKET:FC.LR_BRACKET,CLOSING_BRACKET:FC.RR_BRACKET,ALTER:FC.ALTER,INSERT:FC.INSERT,UPDATE:FC.UPDATE,JOIN:FC.JOIN,SEMICOLON:FC.SEMI,SELECT:FC.SELECT};var SG=new Set(function(){let t=[],e=FC.VAR_ASSIGN,s=FC.ERROR_RECONGNIGION;for(let E=e;E<=s;E++)E!==FC.STAR&&t.push(E);let a=FC.ARMSCII8,r=FC.UTF8MB4;for(let E=a;E<=r;E++)t.push(E);let i=FC.AVG,c=FC.UTC_TIMESTAMP;for(let E=i;E<=c;E++)t.push(E);let n=FC.ABS,h=FC.X_FUNCTION;for(let E=n;E<=h;E++)t.push(E);return t.push(FC.EOF),t.push(FC.KEY),t}()),lG=new Set([FC.RULE_userName,FC.RULE_roleName,FC.RULE_databaseName,FC.RULE_constraintName,FC.RULE_triggerName,FC.RULE_indexName,FC.RULE_fullColumnName,FC.RULE_tableName,FC.RULE_simpleUserName,FC.RULE_fullId,FC.RULE_simpleId,FC.RULE_uid,FC.RULE_aggregateWindowedFunction,FC.RULE_scalarFunctionName,FC.RULE_specificFunction,FC.RULE_passwordFunctionClause]),OG=class extends RG{constructor(){super(),this.visitTableName=t=>{try{this.symbolTable.addNewSymbolOfType(qc,this.scope,t.getText())}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitAtomTableItem=t=>{try{var e;let s=null===(e=t.uid())||void 0===e?void 0:e.getText(),a="left"===(null===s||void 0===s?void 0:s.toLowerCase())||"right"===(null===s||void 0===s?void 0:s.toLowerCase());this.symbolTable.addNewSymbolOfType(qc,this.scope,t.tableName().getText(),a?void 0:s)}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitSelectElementAlias=t=>{try{this.symbolTable.addNewSymbolOfType(zc,this.scope,t.uid().getText())}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.symbolTable=new Zc("",{allowDuplicateSymbols:!0}),this.scope=this.symbolTable.addNewSymbolOfType(Bc,void 0)}};function IG(t,e){if(!e)return t.root();switch(e){case"from":return t.fromClause();case"alter":return t.alterTable();case"insert":return t.insertStatement();case"update":return t.multipleUpdateStatement();case"select":return t.selectStatement()}}var uG={Lexer:GC,Parser:FC,tokenDictionary:AG,ignoredTokens:SG,rulesToVisit:lG,getParseTree:IG,enrichAutocompleteResult:function(t,e,s,a,r,i){let{shouldSuggestColumns:c,shouldSuggestColumnAliases:n,shouldSuggestConstraints:h,...E}=function(t,e,s){let a,r=!1,i=!1,c=!1,n=!1,h=!1,E=!1,T=!1,o=!1,R=!1,A=!1;for(let[S,l]of t)if(uC(e,l))switch(S){case FC.RULE_tableName:if(l.ruleList.includes(FC.RULE_createTable))break;a=UC(s,AG,e,FC.VIEW)?"VIEWS":UC(s,AG,e,FC.TABLE)?"TABLES":"ALL";break;case FC.RULE_fullId:UC(s,AG,e,FC.VIEW)&&(l.ruleList.includes(FC.RULE_alterView)||l.ruleList.includes(FC.RULE_dropView))&&(a="VIEWS");break;case FC.RULE_aggregateWindowedFunction:r=!0;break;case FC.RULE_scalarFunctionName:i=!0;break;case FC.RULE_triggerName:n=!0;break;case FC.RULE_indexName:c=!0;break;case FC.RULE_constraintName:o=!0;break;case FC.RULE_databaseName:h=!0;break;case FC.RULE_roleName:E=!0;break;case FC.RULE_userName:T=!0;break;case FC.RULE_fullColumnName:case FC.RULE_indexColumnName:R=!0,(l.ruleList.includes(FC.RULE_groupByItem)||l.ruleList.includes(FC.RULE_orderByExpression))&&(A=!0);break;case FC.RULE_uid:(l.ruleList.includes(FC.RULE_alterSpecification)&&!UC(s,AG,e,FC.ADD)||l.ruleList.includes(FC.RULE_indexColumnName))&&(R=!0)}return{suggestViewsOrTables:a,suggestAggregateFunctions:r,suggestFunctions:i,suggestIndexes:c,suggestTriggers:n,suggestDatabases:h,suggestRoles:E,suggestUsers:T,shouldSuggestConstraints:o,shouldSuggestColumns:R,shouldSuggestColumnAliases:A}}(e,a,s),T={...t,...E,suggestTemplates:_C(i,r)};if(c||h||n){let t=new OG,{tableContextSuggestion:e,suggestColumnAliases:a}=mC(GC,FC,t,AG,IG,s,r,i);c&&e&&(T.suggestColumns=e),h&&e&&(T.suggestConstraints=e),n&&a&&(T.suggestColumnAliases=a)}return T}},NG=class{constructor(t){this.errors=[],this.whitespaceToken=t}syntaxError(t,e,s,a,r){if(e){let t=OC(e,this.whitespaceToken);this.errors.push({message:r,...t})}else this.errors.push({message:r,startLine:s,startColumn:a,endLine:s,endColumn:a})}reportAmbiguity(){}reportAttemptingFullContext(){}reportContextSensitivity(){}},LG=(Ji=class t extends $r{constructor(e){super(e),this.interpreter=new hi(this,t._ATN,t.decisionsToDFA,new Si)}get grammarFileName(){return"ClickHouseLexer.g4"}get literalNames(){return t.literalNames}get symbolicNames(){return t.symbolicNames}get ruleNames(){return t.ruleNames}get serializedATN(){return t._serializedATN}get channelNames(){return t.channelNames}get modeNames(){return t.modeNames}static get _ATN(){return t.__ATN||(t.__ATN=(new fr).deserialize(t._serializedATN)),t.__ATN}get vocabulary(){return t.vocabulary}},Ji.ADD=1,Ji.AFTER=2,Ji.ALIAS=3,Ji.ALL=4,Ji.ALTER=5,Ji.AND=6,Ji.ANTI=7,Ji.ANY=8,Ji.ARRAY=9,Ji.AS=10,Ji.ASCENDING=11,Ji.ASOF=12,Ji.AST=13,Ji.ASYNC=14,Ji.ATTACH=15,Ji.BETWEEN=16,Ji.BOTH=17,Ji.BY=18,Ji.CASE=19,Ji.CAST=20,Ji.CHECK=21,Ji.CLEAR=22,Ji.CLUSTER=23,Ji.CODEC=24,Ji.COLLATE=25,Ji.COLUMN=26,Ji.COMMENT=27,Ji.CONSTRAINT=28,Ji.CREATE=29,Ji.CROSS=30,Ji.CUBE=31,Ji.CURRENT=32,Ji.DATABASE=33,Ji.DATABASES=34,Ji.DATE=35,Ji.DAY=36,Ji.DEDUPLICATE=37,Ji.DEFAULT=38,Ji.DELAY=39,Ji.DELETE=40,Ji.DESC=41,Ji.DESCENDING=42,Ji.DESCRIBE=43,Ji.DETACH=44,Ji.DICTIONARIES=45,Ji.DICTIONARY=46,Ji.DISK=47,Ji.DISTINCT=48,Ji.DISTRIBUTED=49,Ji.DROP=50,Ji.ELSE=51,Ji.END=52,Ji.ENGINE=53,Ji.ESTIMATE=54,Ji.EVENTS=55,Ji.EXISTS=56,Ji.EXPLAIN=57,Ji.EXPRESSION=58,Ji.EXTRACT=59,Ji.FETCHES=60,Ji.FINAL=61,Ji.FIRST=62,Ji.FLUSH=63,Ji.FOLLOWING=64,Ji.FOR=65,Ji.FORMAT=66,Ji.FREEZE=67,Ji.FROM=68,Ji.FULL=69,Ji.FUNCTION=70,Ji.GLOBAL=71,Ji.GRANULARITY=72,Ji.GROUP=73,Ji.HAVING=74,Ji.HIERARCHICAL=75,Ji.HOUR=76,Ji.ID=77,Ji.IF=78,Ji.ILIKE=79,Ji.IN=80,Ji.INDEX=81,Ji.INF=82,Ji.INJECTIVE=83,Ji.INNER=84,Ji.INSERT=85,Ji.INTERVAL=86,Ji.INTO=87,Ji.IS=88,Ji.IS_OBJECT_ID=89,Ji.JOIN=90,Ji.KEY=91,Ji.KILL=92,Ji.LAST=93,Ji.LAYOUT=94,Ji.LEADING=95,Ji.LEFT=96,Ji.LIFETIME=97,Ji.LIKE=98,Ji.LIMIT=99,Ji.LIVE=100,Ji.LOCAL=101,Ji.LOGS=102,Ji.MATERIALIZE=103,Ji.MATERIALIZED=104,Ji.MAX=105,Ji.MERGES=106,Ji.MIN=107,Ji.MINUTE=108,Ji.MODIFY=109,Ji.MONTH=110,Ji.MOVE=111,Ji.MUTATION=112,Ji.NAN_SQL=113,Ji.NO=114,Ji.NOT=115,Ji.NULL_SQL=116,Ji.NULLS=117,Ji.OFFSET=118,Ji.ON=119,Ji.OPTIMIZE=120,Ji.OR=121,Ji.ORDER=122,Ji.OUTER=123,Ji.OUTFILE=124,Ji.OVER=125,Ji.PARTITION=126,Ji.PIPELINE=127,Ji.PLAN=128,Ji.POPULATE=129,Ji.PRECEDING=130,Ji.PREWHERE=131,Ji.PRIMARY=132,Ji.PROJECTION=133,Ji.QUARTER=134,Ji.QUERY=135,Ji.RANGE=136,Ji.RELOAD=137,Ji.REMOVE=138,Ji.RENAME=139,Ji.REPLACE=140,Ji.REPLICA=141,Ji.REPLICATED=142,Ji.RIGHT=143,Ji.ROLLUP=144,Ji.ROW=145,Ji.ROWS=146,Ji.SAMPLE=147,Ji.SECOND=148,Ji.SELECT=149,Ji.SEMI=150,Ji.SENDS=151,Ji.SET=152,Ji.SETTINGS=153,Ji.SHOW=154,Ji.SOURCE=155,Ji.START=156,Ji.STOP=157,Ji.SUBSTRING=158,Ji.SYNC=159,Ji.SYNTAX=160,Ji.SYSTEM=161,Ji.TABLE=162,Ji.TABLES=163,Ji.TEMPORARY=164,Ji.TEST=165,Ji.THEN=166,Ji.TIES=167,Ji.TIMEOUT=168,Ji.TIMESTAMP=169,Ji.TO=170,Ji.TOP=171,Ji.TOTALS=172,Ji.TRAILING=173,Ji.TRIM=174,Ji.TREE=175,Ji.TRUNCATE=176,Ji.TTL=177,Ji.TYPE=178,Ji.UNBOUNDED=179,Ji.UNION=180,Ji.UPDATE=181,Ji.USE=182,Ji.USING=183,Ji.UUID=184,Ji.VALUES=185,Ji.VIEW=186,Ji.VOLUME=187,Ji.WATCH=188,Ji.WEEK=189,Ji.WHEN=190,Ji.WHERE=191,Ji.WINDOW=192,Ji.WITH=193,Ji.YEAR=194,Ji.JSON_FALSE=195,Ji.JSON_TRUE=196,Ji.IDENTIFIER=197,Ji.FLOATING_LITERAL=198,Ji.OCTAL_LITERAL=199,Ji.DECIMAL_LITERAL=200,Ji.HEXADECIMAL_LITERAL=201,Ji.STRING_LITERAL=202,Ji.ARROW=203,Ji.ASTERISK=204,Ji.BACKQUOTE=205,Ji.BACKSLASH=206,Ji.COLON=207,Ji.COMMA=208,Ji.CONCAT=209,Ji.DASH=210,Ji.DOT=211,Ji.EQ_DOUBLE=212,Ji.EQ_SINGLE=213,Ji.GE=214,Ji.GT=215,Ji.LBRACE=216,Ji.LBRACKET=217,Ji.LE=218,Ji.LPAREN=219,Ji.LT=220,Ji.NOT_EQ=221,Ji.PERCENT=222,Ji.PLUS=223,Ji.QUESTIONMARK=224,Ji.QUOTE_DOUBLE=225,Ji.QUOTE_SINGLE=226,Ji.RBRACE=227,Ji.RBRACKET=228,Ji.RPAREN=229,Ji.SEMICOLON=230,Ji.SLASH=231,Ji.UNDERSCORE=232,Ji.MULTI_LINE_COMMENT=233,Ji.SINGLE_LINE_COMMENT=234,Ji.WHITESPACE=235,Ji.channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"],Ji.literalNames=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"'false'","'true'",null,null,null,null,null,null,"'->'","'*'","'`'","''","':'","','","'||'","'-'","'.'","'=='","'='","'>='","'>'","'{'","'['","'<='","'('","'<'",null,"'%'","'+'","'?'","'\"'","'''","'}'","']'","')'","';'","'/'","'_'"],Ji.symbolicNames=[null,"ADD","AFTER","ALIAS","ALL","ALTER","AND","ANTI","ANY","ARRAY","AS","ASCENDING","ASOF","AST","ASYNC","ATTACH","BETWEEN","BOTH","BY","CASE","CAST","CHECK","CLEAR","CLUSTER","CODEC","COLLATE","COLUMN","COMMENT","CONSTRAINT","CREATE","CROSS","CUBE","CURRENT","DATABASE","DATABASES","DATE","DAY","DEDUPLICATE","DEFAULT","DELAY","DELETE","DESC","DESCENDING","DESCRIBE","DETACH","DICTIONARIES","DICTIONARY","DISK","DISTINCT","DISTRIBUTED","DROP","ELSE","END","ENGINE","ESTIMATE","EVENTS","EXISTS","EXPLAIN","EXPRESSION","EXTRACT","FETCHES","FINAL","FIRST","FLUSH","FOLLOWING","FOR","FORMAT","FREEZE","FROM","FULL","FUNCTION","GLOBAL","GRANULARITY","GROUP","HAVING","HIERARCHICAL","HOUR","ID","IF","ILIKE","IN","INDEX","INF","INJECTIVE","INNER","INSERT","INTERVAL","INTO","IS","IS_OBJECT_ID","JOIN","KEY","KILL","LAST","LAYOUT","LEADING","LEFT","LIFETIME","LIKE","LIMIT","LIVE","LOCAL","LOGS","MATERIALIZE","MATERIALIZED","MAX","MERGES","MIN","MINUTE","MODIFY","MONTH","MOVE","MUTATION","NAN_SQL","NO","NOT","NULL_SQL","NULLS","OFFSET","ON","OPTIMIZE","OR","ORDER","OUTER","OUTFILE","OVER","PARTITION","PIPELINE","PLAN","POPULATE","PRECEDING","PREWHERE","PRIMARY","PROJECTION","QUARTER","QUERY","RANGE","RELOAD","REMOVE","RENAME","REPLACE","REPLICA","REPLICATED","RIGHT","ROLLUP","ROW","ROWS","SAMPLE","SECOND","SELECT","SEMI","SENDS","SET","SETTINGS","SHOW","SOURCE","START","STOP","SUBSTRING","SYNC","SYNTAX","SYSTEM","TABLE","TABLES","TEMPORARY","TEST","THEN","TIES","TIMEOUT","TIMESTAMP","TO","TOP","TOTALS","TRAILING","TRIM","TREE","TRUNCATE","TTL","TYPE","UNBOUNDED","UNION","UPDATE","USE","USING","UUID","VALUES","VIEW","VOLUME","WATCH","WEEK","WHEN","WHERE","WINDOW","WITH","YEAR","JSON_FALSE","JSON_TRUE","IDENTIFIER","FLOATING_LITERAL","OCTAL_LITERAL","DECIMAL_LITERAL","HEXADECIMAL_LITERAL","STRING_LITERAL","ARROW","ASTERISK","BACKQUOTE","BACKSLASH","COLON","COMMA","CONCAT","DASH","DOT","EQ_DOUBLE","EQ_SINGLE","GE","GT","LBRACE","LBRACKET","LE","LPAREN","LT","NOT_EQ","PERCENT","PLUS","QUESTIONMARK","QUOTE_DOUBLE","QUOTE_SINGLE","RBRACE","RBRACKET","RPAREN","SEMICOLON","SLASH","UNDERSCORE","MULTI_LINE_COMMENT","SINGLE_LINE_COMMENT","WHITESPACE"],Ji.modeNames=["DEFAULT_MODE"],Ji.ruleNames=["ADD","AFTER","ALIAS","ALL","ALTER","AND","ANTI","ANY","ARRAY","AS","ASCENDING","ASOF","AST","ASYNC","ATTACH","BETWEEN","BOTH","BY","CASE","CAST","CHECK","CLEAR","CLUSTER","CODEC","COLLATE","COLUMN","COMMENT","CONSTRAINT","CREATE","CROSS","CUBE","CURRENT","DATABASE","DATABASES","DATE","DAY","DEDUPLICATE","DEFAULT","DELAY","DELETE","DESC","DESCENDING","DESCRIBE","DETACH","DICTIONARIES","DICTIONARY","DISK","DISTINCT","DISTRIBUTED","DROP","ELSE","END","ENGINE","ESTIMATE","EVENTS","EXISTS","EXPLAIN","EXPRESSION","EXTRACT","FETCHES","FINAL","FIRST","FLUSH","FOLLOWING","FOR","FORMAT","FREEZE","FROM","FULL","FUNCTION","GLOBAL","GRANULARITY","GROUP","HAVING","HIERARCHICAL","HOUR","ID","IF","ILIKE","IN","INDEX","INF","INJECTIVE","INNER","INSERT","INTERVAL","INTO","IS","IS_OBJECT_ID","JOIN","KEY","KILL","LAST","LAYOUT","LEADING","LEFT","LIFETIME","LIKE","LIMIT","LIVE","LOCAL","LOGS","MATERIALIZE","MATERIALIZED","MAX","MERGES","MIN","MINUTE","MODIFY","MONTH","MOVE","MUTATION","NAN_SQL","NO","NOT","NULL_SQL","NULLS","OFFSET","ON","OPTIMIZE","OR","ORDER","OUTER","OUTFILE","OVER","PARTITION","PIPELINE","PLAN","POPULATE","PRECEDING","PREWHERE","PRIMARY","PROJECTION","QUARTER","QUERY","RANGE","RELOAD","REMOVE","RENAME","REPLACE","REPLICA","REPLICATED","RIGHT","ROLLUP","ROW","ROWS","SAMPLE","SECOND","SELECT","SEMI","SENDS","SET","SETTINGS","SHOW","SOURCE","START","STOP","SUBSTRING","SYNC","SYNTAX","SYSTEM","TABLE","TABLES","TEMPORARY","TEST","THEN","TIES","TIMEOUT","TIMESTAMP","TO","TOP","TOTALS","TRAILING","TRIM","TREE","TRUNCATE","TTL","TYPE","UNBOUNDED","UNION","UPDATE","USE","USING","UUID","VALUES","VIEW","VOLUME","WATCH","WEEK","WHEN","WHERE","WINDOW","WITH","YEAR","JSON_FALSE","JSON_TRUE","IDENTIFIER","FLOATING_LITERAL","OCTAL_LITERAL","DECIMAL_LITERAL","HEXADECIMAL_LITERAL","STRING_LITERAL","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","LETTER","OCT_DIGIT","DEC_DIGIT","HEX_DIGIT","ARROW","ASTERISK","BACKQUOTE","BACKSLASH","COLON","COMMA","CONCAT","DASH","DOT","EQ_DOUBLE","EQ_SINGLE","GE","GT","LBRACE","LBRACKET","LE","LPAREN","LT","NOT_EQ","PERCENT","PLUS","QUESTIONMARK","QUOTE_DOUBLE","QUOTE_SINGLE","RBRACE","RBRACKET","RPAREN","SEMICOLON","SLASH","UNDERSCORE","MULTI_LINE_COMMENT","SINGLE_LINE_COMMENT","WHITESPACE"],Ji._serializedATN=[4,0,235,2168,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,594,8,10,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,3,81,1101,8,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,179,1,179,1,179,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,181,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,182,1,182,1,183,1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188,1,188,1,189,1,189,1,189,1,189,1,189,1,190,1,190,1,190,1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,3,193,1840,8,193,1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195,1,195,1,196,1,196,3,196,1855,8,196,1,196,1,196,1,196,5,196,1860,8,196,10,196,12,196,1863,9,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,5,196,1873,8,196,10,196,12,196,1876,9,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,5,196,1888,8,196,10,196,12,196,1891,9,196,1,196,1,196,3,196,1895,8,196,1,197,1,197,1,197,5,197,1900,8,197,10,197,12,197,1903,9,197,1,197,1,197,3,197,1907,8,197,1,197,1,197,3,197,1911,8,197,1,197,4,197,1914,8,197,11,197,12,197,1915,1,197,1,197,1,197,3,197,1921,8,197,1,197,1,197,3,197,1925,8,197,1,197,4,197,1928,8,197,11,197,12,197,1929,1,197,1,197,1,197,5,197,1935,8,197,10,197,12,197,1938,9,197,1,197,1,197,1,197,3,197,1943,8,197,1,197,4,197,1946,8,197,11,197,12,197,1947,1,197,1,197,1,197,1,197,1,197,3,197,1955,8,197,1,197,4,197,1958,8,197,11,197,12,197,1959,1,197,1,197,1,197,1,197,3,197,1966,8,197,1,197,4,197,1969,8,197,11,197,12,197,1970,3,197,1973,8,197,1,198,1,198,4,198,1977,8,198,11,198,12,198,1978,1,199,4,199,1982,8,199,11,199,12,199,1983,1,200,1,200,1,200,4,200,1989,8,200,11,200,12,200,1990,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,5,201,2001,8,201,10,201,12,201,2004,9,201,1,201,1,201,1,202,1,202,1,203,1,203,1,204,1,204,1,205,1,205,1,206,1,206,1,207,1,207,1,208,1,208,1,209,1,209,1,210,1,210,1,211,1,211,1,212,1,212,1,213,1,213,1,214,1,214,1,215,1,215,1,216,1,216,1,217,1,217,1,218,1,218,1,219,1,219,1,220,1,220,1,221,1,221,1,222,1,222,1,223,1,223,1,224,1,224,1,225,1,225,1,226,1,226,1,227,1,227,1,228,1,228,1,229,1,229,1,230,1,230,1,231,1,231,1,232,1,232,1,232,1,233,1,233,1,234,1,234,1,235,1,235,1,236,1,236,1,237,1,237,1,238,1,238,1,238,1,239,1,239,1,240,1,240,1,241,1,241,1,241,1,242,1,242,1,243,1,243,1,243,1,244,1,244,1,245,1,245,1,246,1,246,1,247,1,247,1,247,1,248,1,248,1,249,1,249,1,250,1,250,1,250,1,250,3,250,2113,8,250,1,251,1,251,1,252,1,252,1,253,1,253,1,254,1,254,1,255,1,255,1,256,1,256,1,257,1,257,1,258,1,258,1,259,1,259,1,260,1,260,1,261,1,261,1,262,1,262,1,262,1,262,5,262,2141,8,262,10,262,12,262,2144,9,262,1,262,1,262,1,262,1,262,1,262,1,263,1,263,1,263,1,263,5,263,2155,8,263,10,263,12,263,2158,9,263,1,263,3,263,2161,8,263,1,263,1,263,1,264,1,264,1,264,1,264,1,2142,0,265,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213,107,215,108,217,109,219,110,221,111,223,112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239,120,241,121,243,122,245,123,247,124,249,125,251,126,253,127,255,128,257,129,259,130,261,131,263,132,265,133,267,134,269,135,271,136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287,144,289,145,291,146,293,147,295,148,297,149,299,150,301,151,303,152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319,160,321,161,323,162,325,163,327,164,329,165,331,166,333,167,335,168,337,169,339,170,341,171,343,172,345,173,347,174,349,175,351,176,353,177,355,178,357,179,359,180,361,181,363,182,365,183,367,184,369,185,371,186,373,187,375,188,377,189,379,190,381,191,383,192,385,193,387,194,389,195,391,196,393,197,395,198,397,199,399,200,401,201,403,202,405,0,407,0,409,0,411,0,413,0,415,0,417,0,419,0,421,0,423,0,425,0,427,0,429,0,431,0,433,0,435,0,437,0,439,0,441,0,443,0,445,0,447,0,449,0,451,0,453,0,455,0,457,0,459,0,461,0,463,0,465,203,467,204,469,205,471,206,473,207,475,208,477,209,479,210,481,211,483,212,485,213,487,214,489,215,491,216,493,217,495,218,497,219,499,220,501,221,503,222,505,223,507,224,509,225,511,226,513,227,515,228,517,229,519,230,521,231,523,232,525,233,527,234,529,235,1,0,36,2,0,92,92,96,96,2,0,34,34,92,92,2,0,39,39,92,92,2,0,65,65,97,97,2,0,66,66,98,98,2,0,67,67,99,99,2,0,68,68,100,100,2,0,69,69,101,101,2,0,70,70,102,102,2,0,71,71,103,103,2,0,72,72,104,104,2,0,73,73,105,105,2,0,74,74,106,106,2,0,75,75,107,107,2,0,76,76,108,108,2,0,77,77,109,109,2,0,78,78,110,110,2,0,79,79,111,111,2,0,80,80,112,112,2,0,81,81,113,113,2,0,82,82,114,114,2,0,83,83,115,115,2,0,84,84,116,116,2,0,85,85,117,117,2,0,86,86,118,118,2,0,87,87,119,119,2,0,88,88,120,120,2,0,89,89,121,121,2,0,90,90,122,122,2,0,65,90,97,122,1,0,48,55,1,0,48,57,3,0,48,57,65,70,97,102,2,0,10,10,13,13,2,1,10,10,13,13,2,0,9,13,32,32,2184,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0,501,1,0,0,0,0,503,1,0,0,0,0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0,0,0,0,511,1,0,0,0,0,513,1,0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519,1,0,0,0,0,521,1,0,0,0,0,523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0,0,529,1,0,0,0,1,531,1,0,0,0,3,535,1,0,0,0,5,541,1,0,0,0,7,547,1,0,0,0,9,551,1,0,0,0,11,557,1,0,0,0,13,561,1,0,0,0,15,566,1,0,0,0,17,570,1,0,0,0,19,576,1,0,0,0,21,593,1,0,0,0,23,595,1,0,0,0,25,600,1,0,0,0,27,604,1,0,0,0,29,610,1,0,0,0,31,617,1,0,0,0,33,625,1,0,0,0,35,630,1,0,0,0,37,633,1,0,0,0,39,638,1,0,0,0,41,643,1,0,0,0,43,649,1,0,0,0,45,655,1,0,0,0,47,663,1,0,0,0,49,669,1,0,0,0,51,677,1,0,0,0,53,684,1,0,0,0,55,692,1,0,0,0,57,703,1,0,0,0,59,710,1,0,0,0,61,716,1,0,0,0,63,721,1,0,0,0,65,729,1,0,0,0,67,738,1,0,0,0,69,748,1,0,0,0,71,753,1,0,0,0,73,757,1,0,0,0,75,769,1,0,0,0,77,777,1,0,0,0,79,783,1,0,0,0,81,790,1,0,0,0,83,795,1,0,0,0,85,806,1,0,0,0,87,815,1,0,0,0,89,822,1,0,0,0,91,835,1,0,0,0,93,846,1,0,0,0,95,851,1,0,0,0,97,860,1,0,0,0,99,872,1,0,0,0,101,877,1,0,0,0,103,882,1,0,0,0,105,886,1,0,0,0,107,893,1,0,0,0,109,902,1,0,0,0,111,909,1,0,0,0,113,916,1,0,0,0,115,924,1,0,0,0,117,935,1,0,0,0,119,943,1,0,0,0,121,951,1,0,0,0,123,957,1,0,0,0,125,963,1,0,0,0,127,969,1,0,0,0,129,979,1,0,0,0,131,983,1,0,0,0,133,990,1,0,0,0,135,997,1,0,0,0,137,1002,1,0,0,0,139,1007,1,0,0,0,141,1016,1,0,0,0,143,1023,1,0,0,0,145,1035,1,0,0,0,147,1041,1,0,0,0,149,1048,1,0,0,0,151,1061,1,0,0,0,153,1066,1,0,0,0,155,1069,1,0,0,0,157,1072,1,0,0,0,159,1078,1,0,0,0,161,1081,1,0,0,0,163,1100,1,0,0,0,165,1102,1,0,0,0,167,1112,1,0,0,0,169,1118,1,0,0,0,171,1125,1,0,0,0,173,1134,1,0,0,0,175,1139,1,0,0,0,177,1142,1,0,0,0,179,1155,1,0,0,0,181,1160,1,0,0,0,183,1164,1,0,0,0,185,1169,1,0,0,0,187,1174,1,0,0,0,189,1181,1,0,0,0,191,1189,1,0,0,0,193,1194,1,0,0,0,195,1203,1,0,0,0,197,1208,1,0,0,0,199,1214,1,0,0,0,201,1219,1,0,0,0,203,1225,1,0,0,0,205,1230,1,0,0,0,207,1242,1,0,0,0,209,1255,1,0,0,0,211,1259,1,0,0,0,213,1266,1,0,0,0,215,1270,1,0,0,0,217,1277,1,0,0,0,219,1284,1,0,0,0,221,1290,1,0,0,0,223,1295,1,0,0,0,225,1304,1,0,0,0,227,1308,1,0,0,0,229,1311,1,0,0,0,231,1315,1,0,0,0,233,1320,1,0,0,0,235,1326,1,0,0,0,237,1333,1,0,0,0,239,1336,1,0,0,0,241,1345,1,0,0,0,243,1348,1,0,0,0,245,1354,1,0,0,0,247,1360,1,0,0,0,249,1368,1,0,0,0,251,1373,1,0,0,0,253,1383,1,0,0,0,255,1392,1,0,0,0,257,1397,1,0,0,0,259,1406,1,0,0,0,261,1416,1,0,0,0,263,1425,1,0,0,0,265,1433,1,0,0,0,267,1444,1,0,0,0,269,1452,1,0,0,0,271,1458,1,0,0,0,273,1464,1,0,0,0,275,1471,1,0,0,0,277,1478,1,0,0,0,279,1485,1,0,0,0,281,1493,1,0,0,0,283,1501,1,0,0,0,285,1512,1,0,0,0,287,1518,1,0,0,0,289,1525,1,0,0,0,291,1529,1,0,0,0,293,1534,1,0,0,0,295,1541,1,0,0,0,297,1548,1,0,0,0,299,1555,1,0,0,0,301,1560,1,0,0,0,303,1566,1,0,0,0,305,1570,1,0,0,0,307,1579,1,0,0,0,309,1584,1,0,0,0,311,1591,1,0,0,0,313,1597,1,0,0,0,315,1602,1,0,0,0,317,1612,1,0,0,0,319,1617,1,0,0,0,321,1624,1,0,0,0,323,1631,1,0,0,0,325,1637,1,0,0,0,327,1644,1,0,0,0,329,1654,1,0,0,0,331,1659,1,0,0,0,333,1664,1,0,0,0,335,1669,1,0,0,0,337,1677,1,0,0,0,339,1687,1,0,0,0,341,1690,1,0,0,0,343,1694,1,0,0,0,345,1701,1,0,0,0,347,1710,1,0,0,0,349,1715,1,0,0,0,351,1720,1,0,0,0,353,1729,1,0,0,0,355,1733,1,0,0,0,357,1738,1,0,0,0,359,1748,1,0,0,0,361,1754,1,0,0,0,363,1761,1,0,0,0,365,1765,1,0,0,0,367,1771,1,0,0,0,369,1776,1,0,0,0,371,1783,1,0,0,0,373,1788,1,0,0,0,375,1795,1,0,0,0,377,1801,1,0,0,0,379,1806,1,0,0,0,381,1811,1,0,0,0,383,1817,1,0,0,0,385,1824,1,0,0,0,387,1839,1,0,0,0,389,1841,1,0,0,0,391,1847,1,0,0,0,393,1894,1,0,0,0,395,1972,1,0,0,0,397,1974,1,0,0,0,399,1981,1,0,0,0,401,1985,1,0,0,0,403,1992,1,0,0,0,405,2007,1,0,0,0,407,2009,1,0,0,0,409,2011,1,0,0,0,411,2013,1,0,0,0,413,2015,1,0,0,0,415,2017,1,0,0,0,417,2019,1,0,0,0,419,2021,1,0,0,0,421,2023,1,0,0,0,423,2025,1,0,0,0,425,2027,1,0,0,0,427,2029,1,0,0,0,429,2031,1,0,0,0,431,2033,1,0,0,0,433,2035,1,0,0,0,435,2037,1,0,0,0,437,2039,1,0,0,0,439,2041,1,0,0,0,441,2043,1,0,0,0,443,2045,1,0,0,0,445,2047,1,0,0,0,447,2049,1,0,0,0,449,2051,1,0,0,0,451,2053,1,0,0,0,453,2055,1,0,0,0,455,2057,1,0,0,0,457,2059,1,0,0,0,459,2061,1,0,0,0,461,2063,1,0,0,0,463,2065,1,0,0,0,465,2067,1,0,0,0,467,2070,1,0,0,0,469,2072,1,0,0,0,471,2074,1,0,0,0,473,2076,1,0,0,0,475,2078,1,0,0,0,477,2080,1,0,0,0,479,2083,1,0,0,0,481,2085,1,0,0,0,483,2087,1,0,0,0,485,2090,1,0,0,0,487,2092,1,0,0,0,489,2095,1,0,0,0,491,2097,1,0,0,0,493,2099,1,0,0,0,495,2101,1,0,0,0,497,2104,1,0,0,0,499,2106,1,0,0,0,501,2112,1,0,0,0,503,2114,1,0,0,0,505,2116,1,0,0,0,507,2118,1,0,0,0,509,2120,1,0,0,0,511,2122,1,0,0,0,513,2124,1,0,0,0,515,2126,1,0,0,0,517,2128,1,0,0,0,519,2130,1,0,0,0,521,2132,1,0,0,0,523,2134,1,0,0,0,525,2136,1,0,0,0,527,2150,1,0,0,0,529,2164,1,0,0,0,531,532,3,405,202,0,532,533,3,411,205,0,533,534,3,411,205,0,534,2,1,0,0,0,535,536,3,405,202,0,536,537,3,415,207,0,537,538,3,443,221,0,538,539,3,413,206,0,539,540,3,439,219,0,540,4,1,0,0,0,541,542,3,405,202,0,542,543,3,427,213,0,543,544,3,421,210,0,544,545,3,405,202,0,545,546,3,441,220,0,546,6,1,0,0,0,547,548,3,405,202,0,548,549,3,427,213,0,549,550,3,427,213,0,550,8,1,0,0,0,551,552,3,405,202,0,552,553,3,427,213,0,553,554,3,443,221,0,554,555,3,413,206,0,555,556,3,439,219,0,556,10,1,0,0,0,557,558,3,405,202,0,558,559,3,431,215,0,559,560,3,411,205,0,560,12,1,0,0,0,561,562,3,405,202,0,562,563,3,431,215,0,563,564,3,443,221,0,564,565,3,421,210,0,565,14,1,0,0,0,566,567,3,405,202,0,567,568,3,431,215,0,568,569,3,453,226,0,569,16,1,0,0,0,570,571,3,405,202,0,571,572,3,439,219,0,572,573,3,439,219,0,573,574,3,405,202,0,574,575,3,453,226,0,575,18,1,0,0,0,576,577,3,405,202,0,577,578,3,441,220,0,578,20,1,0,0,0,579,580,3,405,202,0,580,581,3,441,220,0,581,582,3,409,204,0,582,594,1,0,0,0,583,584,3,405,202,0,584,585,3,441,220,0,585,586,3,409,204,0,586,587,3,413,206,0,587,588,3,431,215,0,588,589,3,411,205,0,589,590,3,421,210,0,590,591,3,431,215,0,591,592,3,417,208,0,592,594,1,0,0,0,593,579,1,0,0,0,593,583,1,0,0,0,594,22,1,0,0,0,595,596,3,405,202,0,596,597,3,441,220,0,597,598,3,433,216,0,598,599,3,415,207,0,599,24,1,0,0,0,600,601,3,405,202,0,601,602,3,441,220,0,602,603,3,443,221,0,603,26,1,0,0,0,604,605,3,405,202,0,605,606,3,441,220,0,606,607,3,453,226,0,607,608,3,431,215,0,608,609,3,409,204,0,609,28,1,0,0,0,610,611,3,405,202,0,611,612,3,443,221,0,612,613,3,443,221,0,613,614,3,405,202,0,614,615,3,409,204,0,615,616,3,419,209,0,616,30,1,0,0,0,617,618,3,407,203,0,618,619,3,413,206,0,619,620,3,443,221,0,620,621,3,449,224,0,621,622,3,413,206,0,622,623,3,413,206,0,623,624,3,431,215,0,624,32,1,0,0,0,625,626,3,407,203,0,626,627,3,433,216,0,627,628,3,443,221,0,628,629,3,419,209,0,629,34,1,0,0,0,630,631,3,407,203,0,631,632,3,453,226,0,632,36,1,0,0,0,633,634,3,409,204,0,634,635,3,405,202,0,635,636,3,441,220,0,636,637,3,413,206,0,637,38,1,0,0,0,638,639,3,409,204,0,639,640,3,405,202,0,640,641,3,441,220,0,641,642,3,443,221,0,642,40,1,0,0,0,643,644,3,409,204,0,644,645,3,419,209,0,645,646,3,413,206,0,646,647,3,409,204,0,647,648,3,425,212,0,648,42,1,0,0,0,649,650,3,409,204,0,650,651,3,427,213,0,651,652,3,413,206,0,652,653,3,405,202,0,653,654,3,439,219,0,654,44,1,0,0,0,655,656,3,409,204,0,656,657,3,427,213,0,657,658,3,445,222,0,658,659,3,441,220,0,659,660,3,443,221,0,660,661,3,413,206,0,661,662,3,439,219,0,662,46,1,0,0,0,663,664,3,409,204,0,664,665,3,433,216,0,665,666,3,411,205,0,666,667,3,413,206,0,667,668,3,409,204,0,668,48,1,0,0,0,669,670,3,409,204,0,670,671,3,433,216,0,671,672,3,427,213,0,672,673,3,427,213,0,673,674,3,405,202,0,674,675,3,443,221,0,675,676,3,413,206,0,676,50,1,0,0,0,677,678,3,409,204,0,678,679,3,433,216,0,679,680,3,427,213,0,680,681,3,445,222,0,681,682,3,429,214,0,682,683,3,431,215,0,683,52,1,0,0,0,684,685,3,409,204,0,685,686,3,433,216,0,686,687,3,429,214,0,687,688,3,429,214,0,688,689,3,413,206,0,689,690,3,431,215,0,690,691,3,443,221,0,691,54,1,0,0,0,692,693,3,409,204,0,693,694,3,433,216,0,694,695,3,431,215,0,695,696,3,441,220,0,696,697,3,443,221,0,697,698,3,439,219,0,698,699,3,405,202,0,699,700,3,421,210,0,700,701,3,431,215,0,701,702,3,443,221,0,702,56,1,0,0,0,703,704,3,409,204,0,704,705,3,439,219,0,705,706,3,413,206,0,706,707,3,405,202,0,707,708,3,443,221,0,708,709,3,413,206,0,709,58,1,0,0,0,710,711,3,409,204,0,711,712,3,439,219,0,712,713,3,433,216,0,713,714,3,441,220,0,714,715,3,441,220,0,715,60,1,0,0,0,716,717,3,409,204,0,717,718,3,445,222,0,718,719,3,407,203,0,719,720,3,413,206,0,720,62,1,0,0,0,721,722,3,409,204,0,722,723,3,445,222,0,723,724,3,439,219,0,724,725,3,439,219,0,725,726,3,413,206,0,726,727,3,431,215,0,727,728,3,443,221,0,728,64,1,0,0,0,729,730,3,411,205,0,730,731,3,405,202,0,731,732,3,443,221,0,732,733,3,405,202,0,733,734,3,407,203,0,734,735,3,405,202,0,735,736,3,441,220,0,736,737,3,413,206,0,737,66,1,0,0,0,738,739,3,411,205,0,739,740,3,405,202,0,740,741,3,443,221,0,741,742,3,405,202,0,742,743,3,407,203,0,743,744,3,405,202,0,744,745,3,441,220,0,745,746,3,413,206,0,746,747,3,441,220,0,747,68,1,0,0,0,748,749,3,411,205,0,749,750,3,405,202,0,750,751,3,443,221,0,751,752,3,413,206,0,752,70,1,0,0,0,753,754,3,411,205,0,754,755,3,405,202,0,755,756,3,453,226,0,756,72,1,0,0,0,757,758,3,411,205,0,758,759,3,413,206,0,759,760,3,411,205,0,760,761,3,445,222,0,761,762,3,435,217,0,762,763,3,427,213,0,763,764,3,421,210,0,764,765,3,409,204,0,765,766,3,405,202,0,766,767,3,443,221,0,767,768,3,413,206,0,768,74,1,0,0,0,769,770,3,411,205,0,770,771,3,413,206,0,771,772,3,415,207,0,772,773,3,405,202,0,773,774,3,445,222,0,774,775,3,427,213,0,775,776,3,443,221,0,776,76,1,0,0,0,777,778,3,411,205,0,778,779,3,413,206,0,779,780,3,427,213,0,780,781,3,405,202,0,781,782,3,453,226,0,782,78,1,0,0,0,783,784,3,411,205,0,784,785,3,413,206,0,785,786,3,427,213,0,786,787,3,413,206,0,787,788,3,443,221,0,788,789,3,413,206,0,789,80,1,0,0,0,790,791,3,411,205,0,791,792,3,413,206,0,792,793,3,441,220,0,793,794,3,409,204,0,794,82,1,0,0,0,795,796,3,411,205,0,796,797,3,413,206,0,797,798,3,441,220,0,798,799,3,409,204,0,799,800,3,413,206,0,800,801,3,431,215,0,801,802,3,411,205,0,802,803,3,421,210,0,803,804,3,431,215,0,804,805,3,417,208,0,805,84,1,0,0,0,806,807,3,411,205,0,807,808,3,413,206,0,808,809,3,441,220,0,809,810,3,409,204,0,810,811,3,439,219,0,811,812,3,421,210,0,812,813,3,407,203,0,813,814,3,413,206,0,814,86,1,0,0,0,815,816,3,411,205,0,816,817,3,413,206,0,817,818,3,443,221,0,818,819,3,405,202,0,819,820,3,409,204,0,820,821,3,419,209,0,821,88,1,0,0,0,822,823,3,411,205,0,823,824,3,421,210,0,824,825,3,409,204,0,825,826,3,443,221,0,826,827,3,421,210,0,827,828,3,433,216,0,828,829,3,431,215,0,829,830,3,405,202,0,830,831,3,439,219,0,831,832,3,421,210,0,832,833,3,413,206,0,833,834,3,441,220,0,834,90,1,0,0,0,835,836,3,411,205,0,836,837,3,421,210,0,837,838,3,409,204,0,838,839,3,443,221,0,839,840,3,421,210,0,840,841,3,433,216,0,841,842,3,431,215,0,842,843,3,405,202,0,843,844,3,439,219,0,844,845,3,453,226,0,845,92,1,0,0,0,846,847,3,411,205,0,847,848,3,421,210,0,848,849,3,441,220,0,849,850,3,425,212,0,850,94,1,0,0,0,851,852,3,411,205,0,852,853,3,421,210,0,853,854,3,441,220,0,854,855,3,443,221,0,855,856,3,421,210,0,856,857,3,431,215,0,857,858,3,409,204,0,858,859,3,443,221,0,859,96,1,0,0,0,860,861,3,411,205,0,861,862,3,421,210,0,862,863,3,441,220,0,863,864,3,443,221,0,864,865,3,439,219,0,865,866,3,421,210,0,866,867,3,407,203,0,867,868,3,445,222,0,868,869,3,443,221,0,869,870,3,413,206,0,870,871,3,411,205,0,871,98,1,0,0,0,872,873,3,411,205,0,873,874,3,439,219,0,874,875,3,433,216,0,875,876,3,435,217,0,876,100,1,0,0,0,877,878,3,413,206,0,878,879,3,427,213,0,879,880,3,441,220,0,880,881,3,413,206,0,881,102,1,0,0,0,882,883,3,413,206,0,883,884,3,431,215,0,884,885,3,411,205,0,885,104,1,0,0,0,886,887,3,413,206,0,887,888,3,431,215,0,888,889,3,417,208,0,889,890,3,421,210,0,890,891,3,431,215,0,891,892,3,413,206,0,892,106,1,0,0,0,893,894,3,413,206,0,894,895,3,441,220,0,895,896,3,443,221,0,896,897,3,421,210,0,897,898,3,429,214,0,898,899,3,405,202,0,899,900,3,443,221,0,900,901,3,413,206,0,901,108,1,0,0,0,902,903,3,413,206,0,903,904,3,447,223,0,904,905,3,413,206,0,905,906,3,431,215,0,906,907,3,443,221,0,907,908,3,441,220,0,908,110,1,0,0,0,909,910,3,413,206,0,910,911,3,451,225,0,911,912,3,421,210,0,912,913,3,441,220,0,913,914,3,443,221,0,914,915,3,441,220,0,915,112,1,0,0,0,916,917,3,413,206,0,917,918,3,451,225,0,918,919,3,435,217,0,919,920,3,427,213,0,920,921,3,405,202,0,921,922,3,421,210,0,922,923,3,431,215,0,923,114,1,0,0,0,924,925,3,413,206,0,925,926,3,451,225,0,926,927,3,435,217,0,927,928,3,439,219,0,928,929,3,413,206,0,929,930,3,441,220,0,930,931,3,441,220,0,931,932,3,421,210,0,932,933,3,433,216,0,933,934,3,431,215,0,934,116,1,0,0,0,935,936,3,413,206,0,936,937,3,451,225,0,937,938,3,443,221,0,938,939,3,439,219,0,939,940,3,405,202,0,940,941,3,409,204,0,941,942,3,443,221,0,942,118,1,0,0,0,943,944,3,415,207,0,944,945,3,413,206,0,945,946,3,443,221,0,946,947,3,409,204,0,947,948,3,419,209,0,948,949,3,413,206,0,949,950,3,441,220,0,950,120,1,0,0,0,951,952,3,415,207,0,952,953,3,421,210,0,953,954,3,431,215,0,954,955,3,405,202,0,955,956,3,427,213,0,956,122,1,0,0,0,957,958,3,415,207,0,958,959,3,421,210,0,959,960,3,439,219,0,960,961,3,441,220,0,961,962,3,443,221,0,962,124,1,0,0,0,963,964,3,415,207,0,964,965,3,427,213,0,965,966,3,445,222,0,966,967,3,441,220,0,967,968,3,419,209,0,968,126,1,0,0,0,969,970,3,415,207,0,970,971,3,433,216,0,971,972,3,427,213,0,972,973,3,427,213,0,973,974,3,433,216,0,974,975,3,449,224,0,975,976,3,421,210,0,976,977,3,431,215,0,977,978,3,417,208,0,978,128,1,0,0,0,979,980,3,415,207,0,980,981,3,433,216,0,981,982,3,439,219,0,982,130,1,0,0,0,983,984,3,415,207,0,984,985,3,433,216,0,985,986,3,439,219,0,986,987,3,429,214,0,987,988,3,405,202,0,988,989,3,443,221,0,989,132,1,0,0,0,990,991,3,415,207,0,991,992,3,439,219,0,992,993,3,413,206,0,993,994,3,413,206,0,994,995,3,455,227,0,995,996,3,413,206,0,996,134,1,0,0,0,997,998,3,415,207,0,998,999,3,439,219,0,999,1e3,3,433,216,0,1e3,1001,3,429,214,0,1001,136,1,0,0,0,1002,1003,3,415,207,0,1003,1004,3,445,222,0,1004,1005,3,427,213,0,1005,1006,3,427,213,0,1006,138,1,0,0,0,1007,1008,3,415,207,0,1008,1009,3,445,222,0,1009,1010,3,431,215,0,1010,1011,3,409,204,0,1011,1012,3,443,221,0,1012,1013,3,421,210,0,1013,1014,3,433,216,0,1014,1015,3,431,215,0,1015,140,1,0,0,0,1016,1017,3,417,208,0,1017,1018,3,427,213,0,1018,1019,3,433,216,0,1019,1020,3,407,203,0,1020,1021,3,405,202,0,1021,1022,3,427,213,0,1022,142,1,0,0,0,1023,1024,3,417,208,0,1024,1025,3,439,219,0,1025,1026,3,405,202,0,1026,1027,3,431,215,0,1027,1028,3,445,222,0,1028,1029,3,427,213,0,1029,1030,3,405,202,0,1030,1031,3,439,219,0,1031,1032,3,421,210,0,1032,1033,3,443,221,0,1033,1034,3,453,226,0,1034,144,1,0,0,0,1035,1036,3,417,208,0,1036,1037,3,439,219,0,1037,1038,3,433,216,0,1038,1039,3,445,222,0,1039,1040,3,435,217,0,1040,146,1,0,0,0,1041,1042,3,419,209,0,1042,1043,3,405,202,0,1043,1044,3,447,223,0,1044,1045,3,421,210,0,1045,1046,3,431,215,0,1046,1047,3,417,208,0,1047,148,1,0,0,0,1048,1049,3,419,209,0,1049,1050,3,421,210,0,1050,1051,3,413,206,0,1051,1052,3,439,219,0,1052,1053,3,405,202,0,1053,1054,3,439,219,0,1054,1055,3,409,204,0,1055,1056,3,419,209,0,1056,1057,3,421,210,0,1057,1058,3,409,204,0,1058,1059,3,405,202,0,1059,1060,3,427,213,0,1060,150,1,0,0,0,1061,1062,3,419,209,0,1062,1063,3,433,216,0,1063,1064,3,445,222,0,1064,1065,3,439,219,0,1065,152,1,0,0,0,1066,1067,3,421,210,0,1067,1068,3,411,205,0,1068,154,1,0,0,0,1069,1070,3,421,210,0,1070,1071,3,415,207,0,1071,156,1,0,0,0,1072,1073,3,421,210,0,1073,1074,3,427,213,0,1074,1075,3,421,210,0,1075,1076,3,425,212,0,1076,1077,3,413,206,0,1077,158,1,0,0,0,1078,1079,3,421,210,0,1079,1080,3,431,215,0,1080,160,1,0,0,0,1081,1082,3,421,210,0,1082,1083,3,431,215,0,1083,1084,3,411,205,0,1084,1085,3,413,206,0,1085,1086,3,451,225,0,1086,162,1,0,0,0,1087,1088,3,421,210,0,1088,1089,3,431,215,0,1089,1090,3,415,207,0,1090,1101,1,0,0,0,1091,1092,3,421,210,0,1092,1093,3,431,215,0,1093,1094,3,415,207,0,1094,1095,3,421,210,0,1095,1096,3,431,215,0,1096,1097,3,421,210,0,1097,1098,3,443,221,0,1098,1099,3,453,226,0,1099,1101,1,0,0,0,1100,1087,1,0,0,0,1100,1091,1,0,0,0,1101,164,1,0,0,0,1102,1103,3,421,210,0,1103,1104,3,431,215,0,1104,1105,3,423,211,0,1105,1106,3,413,206,0,1106,1107,3,409,204,0,1107,1108,3,443,221,0,1108,1109,3,421,210,0,1109,1110,3,447,223,0,1110,1111,3,413,206,0,1111,166,1,0,0,0,1112,1113,3,421,210,0,1113,1114,3,431,215,0,1114,1115,3,431,215,0,1115,1116,3,413,206,0,1116,1117,3,439,219,0,1117,168,1,0,0,0,1118,1119,3,421,210,0,1119,1120,3,431,215,0,1120,1121,3,441,220,0,1121,1122,3,413,206,0,1122,1123,3,439,219,0,1123,1124,3,443,221,0,1124,170,1,0,0,0,1125,1126,3,421,210,0,1126,1127,3,431,215,0,1127,1128,3,443,221,0,1128,1129,3,413,206,0,1129,1130,3,439,219,0,1130,1131,3,447,223,0,1131,1132,3,405,202,0,1132,1133,3,427,213,0,1133,172,1,0,0,0,1134,1135,3,421,210,0,1135,1136,3,431,215,0,1136,1137,3,443,221,0,1137,1138,3,433,216,0,1138,174,1,0,0,0,1139,1140,3,421,210,0,1140,1141,3,441,220,0,1141,176,1,0,0,0,1142,1143,3,421,210,0,1143,1144,3,441,220,0,1144,1145,3,523,261,0,1145,1146,3,433,216,0,1146,1147,3,407,203,0,1147,1148,3,423,211,0,1148,1149,3,413,206,0,1149,1150,3,409,204,0,1150,1151,3,443,221,0,1151,1152,3,523,261,0,1152,1153,3,421,210,0,1153,1154,3,411,205,0,1154,178,1,0,0,0,1155,1156,3,423,211,0,1156,1157,3,433,216,0,1157,1158,3,421,210,0,1158,1159,3,431,215,0,1159,180,1,0,0,0,1160,1161,3,425,212,0,1161,1162,3,413,206,0,1162,1163,3,453,226,0,1163,182,1,0,0,0,1164,1165,3,425,212,0,1165,1166,3,421,210,0,1166,1167,3,427,213,0,1167,1168,3,427,213,0,1168,184,1,0,0,0,1169,1170,3,427,213,0,1170,1171,3,405,202,0,1171,1172,3,441,220,0,1172,1173,3,443,221,0,1173,186,1,0,0,0,1174,1175,3,427,213,0,1175,1176,3,405,202,0,1176,1177,3,453,226,0,1177,1178,3,433,216,0,1178,1179,3,445,222,0,1179,1180,3,443,221,0,1180,188,1,0,0,0,1181,1182,3,427,213,0,1182,1183,3,413,206,0,1183,1184,3,405,202,0,1184,1185,3,411,205,0,1185,1186,3,421,210,0,1186,1187,3,431,215,0,1187,1188,3,417,208,0,1188,190,1,0,0,0,1189,1190,3,427,213,0,1190,1191,3,413,206,0,1191,1192,3,415,207,0,1192,1193,3,443,221,0,1193,192,1,0,0,0,1194,1195,3,427,213,0,1195,1196,3,421,210,0,1196,1197,3,415,207,0,1197,1198,3,413,206,0,1198,1199,3,443,221,0,1199,1200,3,421,210,0,1200,1201,3,429,214,0,1201,1202,3,413,206,0,1202,194,1,0,0,0,1203,1204,3,427,213,0,1204,1205,3,421,210,0,1205,1206,3,425,212,0,1206,1207,3,413,206,0,1207,196,1,0,0,0,1208,1209,3,427,213,0,1209,1210,3,421,210,0,1210,1211,3,429,214,0,1211,1212,3,421,210,0,1212,1213,3,443,221,0,1213,198,1,0,0,0,1214,1215,3,427,213,0,1215,1216,3,421,210,0,1216,1217,3,447,223,0,1217,1218,3,413,206,0,1218,200,1,0,0,0,1219,1220,3,427,213,0,1220,1221,3,433,216,0,1221,1222,3,409,204,0,1222,1223,3,405,202,0,1223,1224,3,427,213,0,1224,202,1,0,0,0,1225,1226,3,427,213,0,1226,1227,3,433,216,0,1227,1228,3,417,208,0,1228,1229,3,441,220,0,1229,204,1,0,0,0,1230,1231,3,429,214,0,1231,1232,3,405,202,0,1232,1233,3,443,221,0,1233,1234,3,413,206,0,1234,1235,3,439,219,0,1235,1236,3,421,210,0,1236,1237,3,405,202,0,1237,1238,3,427,213,0,1238,1239,3,421,210,0,1239,1240,3,455,227,0,1240,1241,3,413,206,0,1241,206,1,0,0,0,1242,1243,3,429,214,0,1243,1244,3,405,202,0,1244,1245,3,443,221,0,1245,1246,3,413,206,0,1246,1247,3,439,219,0,1247,1248,3,421,210,0,1248,1249,3,405,202,0,1249,1250,3,427,213,0,1250,1251,3,421,210,0,1251,1252,3,455,227,0,1252,1253,3,413,206,0,1253,1254,3,411,205,0,1254,208,1,0,0,0,1255,1256,3,429,214,0,1256,1257,3,405,202,0,1257,1258,3,451,225,0,1258,210,1,0,0,0,1259,1260,3,429,214,0,1260,1261,3,413,206,0,1261,1262,3,439,219,0,1262,1263,3,417,208,0,1263,1264,3,413,206,0,1264,1265,3,441,220,0,1265,212,1,0,0,0,1266,1267,3,429,214,0,1267,1268,3,421,210,0,1268,1269,3,431,215,0,1269,214,1,0,0,0,1270,1271,3,429,214,0,1271,1272,3,421,210,0,1272,1273,3,431,215,0,1273,1274,3,445,222,0,1274,1275,3,443,221,0,1275,1276,3,413,206,0,1276,216,1,0,0,0,1277,1278,3,429,214,0,1278,1279,3,433,216,0,1279,1280,3,411,205,0,1280,1281,3,421,210,0,1281,1282,3,415,207,0,1282,1283,3,453,226,0,1283,218,1,0,0,0,1284,1285,3,429,214,0,1285,1286,3,433,216,0,1286,1287,3,431,215,0,1287,1288,3,443,221,0,1288,1289,3,419,209,0,1289,220,1,0,0,0,1290,1291,3,429,214,0,1291,1292,3,433,216,0,1292,1293,3,447,223,0,1293,1294,3,413,206,0,1294,222,1,0,0,0,1295,1296,3,429,214,0,1296,1297,3,445,222,0,1297,1298,3,443,221,0,1298,1299,3,405,202,0,1299,1300,3,443,221,0,1300,1301,3,421,210,0,1301,1302,3,433,216,0,1302,1303,3,431,215,0,1303,224,1,0,0,0,1304,1305,3,431,215,0,1305,1306,3,405,202,0,1306,1307,3,431,215,0,1307,226,1,0,0,0,1308,1309,3,431,215,0,1309,1310,3,433,216,0,1310,228,1,0,0,0,1311,1312,3,431,215,0,1312,1313,3,433,216,0,1313,1314,3,443,221,0,1314,230,1,0,0,0,1315,1316,3,431,215,0,1316,1317,3,445,222,0,1317,1318,3,427,213,0,1318,1319,3,427,213,0,1319,232,1,0,0,0,1320,1321,3,431,215,0,1321,1322,3,445,222,0,1322,1323,3,427,213,0,1323,1324,3,427,213,0,1324,1325,3,441,220,0,1325,234,1,0,0,0,1326,1327,3,433,216,0,1327,1328,3,415,207,0,1328,1329,3,415,207,0,1329,1330,3,441,220,0,1330,1331,3,413,206,0,1331,1332,3,443,221,0,1332,236,1,0,0,0,1333,1334,3,433,216,0,1334,1335,3,431,215,0,1335,238,1,0,0,0,1336,1337,3,433,216,0,1337,1338,3,435,217,0,1338,1339,3,443,221,0,1339,1340,3,421,210,0,1340,1341,3,429,214,0,1341,1342,3,421,210,0,1342,1343,3,455,227,0,1343,1344,3,413,206,0,1344,240,1,0,0,0,1345,1346,3,433,216,0,1346,1347,3,439,219,0,1347,242,1,0,0,0,1348,1349,3,433,216,0,1349,1350,3,439,219,0,1350,1351,3,411,205,0,1351,1352,3,413,206,0,1352,1353,3,439,219,0,1353,244,1,0,0,0,1354,1355,3,433,216,0,1355,1356,3,445,222,0,1356,1357,3,443,221,0,1357,1358,3,413,206,0,1358,1359,3,439,219,0,1359,246,1,0,0,0,1360,1361,3,433,216,0,1361,1362,3,445,222,0,1362,1363,3,443,221,0,1363,1364,3,415,207,0,1364,1365,3,421,210,0,1365,1366,3,427,213,0,1366,1367,3,413,206,0,1367,248,1,0,0,0,1368,1369,3,433,216,0,1369,1370,3,447,223,0,1370,1371,3,413,206,0,1371,1372,3,439,219,0,1372,250,1,0,0,0,1373,1374,3,435,217,0,1374,1375,3,405,202,0,1375,1376,3,439,219,0,1376,1377,3,443,221,0,1377,1378,3,421,210,0,1378,1379,3,443,221,0,1379,1380,3,421,210,0,1380,1381,3,433,216,0,1381,1382,3,431,215,0,1382,252,1,0,0,0,1383,1384,3,435,217,0,1384,1385,3,421,210,0,1385,1386,3,435,217,0,1386,1387,3,413,206,0,1387,1388,3,427,213,0,1388,1389,3,421,210,0,1389,1390,3,431,215,0,1390,1391,3,413,206,0,1391,254,1,0,0,0,1392,1393,3,435,217,0,1393,1394,3,427,213,0,1394,1395,3,405,202,0,1395,1396,3,431,215,0,1396,256,1,0,0,0,1397,1398,3,435,217,0,1398,1399,3,433,216,0,1399,1400,3,435,217,0,1400,1401,3,445,222,0,1401,1402,3,427,213,0,1402,1403,3,405,202,0,1403,1404,3,443,221,0,1404,1405,3,413,206,0,1405,258,1,0,0,0,1406,1407,3,435,217,0,1407,1408,3,439,219,0,1408,1409,3,413,206,0,1409,1410,3,409,204,0,1410,1411,3,413,206,0,1411,1412,3,411,205,0,1412,1413,3,421,210,0,1413,1414,3,431,215,0,1414,1415,3,417,208,0,1415,260,1,0,0,0,1416,1417,3,435,217,0,1417,1418,3,439,219,0,1418,1419,3,413,206,0,1419,1420,3,449,224,0,1420,1421,3,419,209,0,1421,1422,3,413,206,0,1422,1423,3,439,219,0,1423,1424,3,413,206,0,1424,262,1,0,0,0,1425,1426,3,435,217,0,1426,1427,3,439,219,0,1427,1428,3,421,210,0,1428,1429,3,429,214,0,1429,1430,3,405,202,0,1430,1431,3,439,219,0,1431,1432,3,453,226,0,1432,264,1,0,0,0,1433,1434,3,435,217,0,1434,1435,3,439,219,0,1435,1436,3,433,216,0,1436,1437,3,423,211,0,1437,1438,3,413,206,0,1438,1439,3,409,204,0,1439,1440,3,443,221,0,1440,1441,3,421,210,0,1441,1442,3,433,216,0,1442,1443,3,431,215,0,1443,266,1,0,0,0,1444,1445,3,437,218,0,1445,1446,3,445,222,0,1446,1447,3,405,202,0,1447,1448,3,439,219,0,1448,1449,3,443,221,0,1449,1450,3,413,206,0,1450,1451,3,439,219,0,1451,268,1,0,0,0,1452,1453,3,437,218,0,1453,1454,3,445,222,0,1454,1455,3,413,206,0,1455,1456,3,439,219,0,1456,1457,3,453,226,0,1457,270,1,0,0,0,1458,1459,3,439,219,0,1459,1460,3,405,202,0,1460,1461,3,431,215,0,1461,1462,3,417,208,0,1462,1463,3,413,206,0,1463,272,1,0,0,0,1464,1465,3,439,219,0,1465,1466,3,413,206,0,1466,1467,3,427,213,0,1467,1468,3,433,216,0,1468,1469,3,405,202,0,1469,1470,3,411,205,0,1470,274,1,0,0,0,1471,1472,3,439,219,0,1472,1473,3,413,206,0,1473,1474,3,429,214,0,1474,1475,3,433,216,0,1475,1476,3,447,223,0,1476,1477,3,413,206,0,1477,276,1,0,0,0,1478,1479,3,439,219,0,1479,1480,3,413,206,0,1480,1481,3,431,215,0,1481,1482,3,405,202,0,1482,1483,3,429,214,0,1483,1484,3,413,206,0,1484,278,1,0,0,0,1485,1486,3,439,219,0,1486,1487,3,413,206,0,1487,1488,3,435,217,0,1488,1489,3,427,213,0,1489,1490,3,405,202,0,1490,1491,3,409,204,0,1491,1492,3,413,206,0,1492,280,1,0,0,0,1493,1494,3,439,219,0,1494,1495,3,413,206,0,1495,1496,3,435,217,0,1496,1497,3,427,213,0,1497,1498,3,421,210,0,1498,1499,3,409,204,0,1499,1500,3,405,202,0,1500,282,1,0,0,0,1501,1502,3,439,219,0,1502,1503,3,413,206,0,1503,1504,3,435,217,0,1504,1505,3,427,213,0,1505,1506,3,421,210,0,1506,1507,3,409,204,0,1507,1508,3,405,202,0,1508,1509,3,443,221,0,1509,1510,3,413,206,0,1510,1511,3,411,205,0,1511,284,1,0,0,0,1512,1513,3,439,219,0,1513,1514,3,421,210,0,1514,1515,3,417,208,0,1515,1516,3,419,209,0,1516,1517,3,443,221,0,1517,286,1,0,0,0,1518,1519,3,439,219,0,1519,1520,3,433,216,0,1520,1521,3,427,213,0,1521,1522,3,427,213,0,1522,1523,3,445,222,0,1523,1524,3,435,217,0,1524,288,1,0,0,0,1525,1526,3,439,219,0,1526,1527,3,433,216,0,1527,1528,3,449,224,0,1528,290,1,0,0,0,1529,1530,3,439,219,0,1530,1531,3,433,216,0,1531,1532,3,449,224,0,1532,1533,3,441,220,0,1533,292,1,0,0,0,1534,1535,3,441,220,0,1535,1536,3,405,202,0,1536,1537,3,429,214,0,1537,1538,3,435,217,0,1538,1539,3,427,213,0,1539,1540,3,413,206,0,1540,294,1,0,0,0,1541,1542,3,441,220,0,1542,1543,3,413,206,0,1543,1544,3,409,204,0,1544,1545,3,433,216,0,1545,1546,3,431,215,0,1546,1547,3,411,205,0,1547,296,1,0,0,0,1548,1549,3,441,220,0,1549,1550,3,413,206,0,1550,1551,3,427,213,0,1551,1552,3,413,206,0,1552,1553,3,409,204,0,1553,1554,3,443,221,0,1554,298,1,0,0,0,1555,1556,3,441,220,0,1556,1557,3,413,206,0,1557,1558,3,429,214,0,1558,1559,3,421,210,0,1559,300,1,0,0,0,1560,1561,3,441,220,0,1561,1562,3,413,206,0,1562,1563,3,431,215,0,1563,1564,3,411,205,0,1564,1565,3,441,220,0,1565,302,1,0,0,0,1566,1567,3,441,220,0,1567,1568,3,413,206,0,1568,1569,3,443,221,0,1569,304,1,0,0,0,1570,1571,3,441,220,0,1571,1572,3,413,206,0,1572,1573,3,443,221,0,1573,1574,3,443,221,0,1574,1575,3,421,210,0,1575,1576,3,431,215,0,1576,1577,3,417,208,0,1577,1578,3,441,220,0,1578,306,1,0,0,0,1579,1580,3,441,220,0,1580,1581,3,419,209,0,1581,1582,3,433,216,0,1582,1583,3,449,224,0,1583,308,1,0,0,0,1584,1585,3,441,220,0,1585,1586,3,433,216,0,1586,1587,3,445,222,0,1587,1588,3,439,219,0,1588,1589,3,409,204,0,1589,1590,3,413,206,0,1590,310,1,0,0,0,1591,1592,3,441,220,0,1592,1593,3,443,221,0,1593,1594,3,405,202,0,1594,1595,3,439,219,0,1595,1596,3,443,221,0,1596,312,1,0,0,0,1597,1598,3,441,220,0,1598,1599,3,443,221,0,1599,1600,3,433,216,0,1600,1601,3,435,217,0,1601,314,1,0,0,0,1602,1603,3,441,220,0,1603,1604,3,445,222,0,1604,1605,3,407,203,0,1605,1606,3,441,220,0,1606,1607,3,443,221,0,1607,1608,3,439,219,0,1608,1609,3,421,210,0,1609,1610,3,431,215,0,1610,1611,3,417,208,0,1611,316,1,0,0,0,1612,1613,3,441,220,0,1613,1614,3,453,226,0,1614,1615,3,431,215,0,1615,1616,3,409,204,0,1616,318,1,0,0,0,1617,1618,3,441,220,0,1618,1619,3,453,226,0,1619,1620,3,431,215,0,1620,1621,3,443,221,0,1621,1622,3,405,202,0,1622,1623,3,451,225,0,1623,320,1,0,0,0,1624,1625,3,441,220,0,1625,1626,3,453,226,0,1626,1627,3,441,220,0,1627,1628,3,443,221,0,1628,1629,3,413,206,0,1629,1630,3,429,214,0,1630,322,1,0,0,0,1631,1632,3,443,221,0,1632,1633,3,405,202,0,1633,1634,3,407,203,0,1634,1635,3,427,213,0,1635,1636,3,413,206,0,1636,324,1,0,0,0,1637,1638,3,443,221,0,1638,1639,3,405,202,0,1639,1640,3,407,203,0,1640,1641,3,427,213,0,1641,1642,3,413,206,0,1642,1643,3,441,220,0,1643,326,1,0,0,0,1644,1645,3,443,221,0,1645,1646,3,413,206,0,1646,1647,3,429,214,0,1647,1648,3,435,217,0,1648,1649,3,433,216,0,1649,1650,3,439,219,0,1650,1651,3,405,202,0,1651,1652,3,439,219,0,1652,1653,3,453,226,0,1653,328,1,0,0,0,1654,1655,3,443,221,0,1655,1656,3,413,206,0,1656,1657,3,441,220,0,1657,1658,3,443,221,0,1658,330,1,0,0,0,1659,1660,3,443,221,0,1660,1661,3,419,209,0,1661,1662,3,413,206,0,1662,1663,3,431,215,0,1663,332,1,0,0,0,1664,1665,3,443,221,0,1665,1666,3,421,210,0,1666,1667,3,413,206,0,1667,1668,3,441,220,0,1668,334,1,0,0,0,1669,1670,3,443,221,0,1670,1671,3,421,210,0,1671,1672,3,429,214,0,1672,1673,3,413,206,0,1673,1674,3,433,216,0,1674,1675,3,445,222,0,1675,1676,3,443,221,0,1676,336,1,0,0,0,1677,1678,3,443,221,0,1678,1679,3,421,210,0,1679,1680,3,429,214,0,1680,1681,3,413,206,0,1681,1682,3,441,220,0,1682,1683,3,443,221,0,1683,1684,3,405,202,0,1684,1685,3,429,214,0,1685,1686,3,435,217,0,1686,338,1,0,0,0,1687,1688,3,443,221,0,1688,1689,3,433,216,0,1689,340,1,0,0,0,1690,1691,3,443,221,0,1691,1692,3,433,216,0,1692,1693,3,435,217,0,1693,342,1,0,0,0,1694,1695,3,443,221,0,1695,1696,3,433,216,0,1696,1697,3,443,221,0,1697,1698,3,405,202,0,1698,1699,3,427,213,0,1699,1700,3,441,220,0,1700,344,1,0,0,0,1701,1702,3,443,221,0,1702,1703,3,439,219,0,1703,1704,3,405,202,0,1704,1705,3,421,210,0,1705,1706,3,427,213,0,1706,1707,3,421,210,0,1707,1708,3,431,215,0,1708,1709,3,417,208,0,1709,346,1,0,0,0,1710,1711,3,443,221,0,1711,1712,3,439,219,0,1712,1713,3,421,210,0,1713,1714,3,429,214,0,1714,348,1,0,0,0,1715,1716,3,443,221,0,1716,1717,3,439,219,0,1717,1718,3,413,206,0,1718,1719,3,413,206,0,1719,350,1,0,0,0,1720,1721,3,443,221,0,1721,1722,3,439,219,0,1722,1723,3,445,222,0,1723,1724,3,431,215,0,1724,1725,3,409,204,0,1725,1726,3,405,202,0,1726,1727,3,443,221,0,1727,1728,3,413,206,0,1728,352,1,0,0,0,1729,1730,3,443,221,0,1730,1731,3,443,221,0,1731,1732,3,427,213,0,1732,354,1,0,0,0,1733,1734,3,443,221,0,1734,1735,3,453,226,0,1735,1736,3,435,217,0,1736,1737,3,413,206,0,1737,356,1,0,0,0,1738,1739,3,445,222,0,1739,1740,3,431,215,0,1740,1741,3,407,203,0,1741,1742,3,433,216,0,1742,1743,3,445,222,0,1743,1744,3,431,215,0,1744,1745,3,411,205,0,1745,1746,3,413,206,0,1746,1747,3,411,205,0,1747,358,1,0,0,0,1748,1749,3,445,222,0,1749,1750,3,431,215,0,1750,1751,3,421,210,0,1751,1752,3,433,216,0,1752,1753,3,431,215,0,1753,360,1,0,0,0,1754,1755,3,445,222,0,1755,1756,3,435,217,0,1756,1757,3,411,205,0,1757,1758,3,405,202,0,1758,1759,3,443,221,0,1759,1760,3,413,206,0,1760,362,1,0,0,0,1761,1762,3,445,222,0,1762,1763,3,441,220,0,1763,1764,3,413,206,0,1764,364,1,0,0,0,1765,1766,3,445,222,0,1766,1767,3,441,220,0,1767,1768,3,421,210,0,1768,1769,3,431,215,0,1769,1770,3,417,208,0,1770,366,1,0,0,0,1771,1772,3,445,222,0,1772,1773,3,445,222,0,1773,1774,3,421,210,0,1774,1775,3,411,205,0,1775,368,1,0,0,0,1776,1777,3,447,223,0,1777,1778,3,405,202,0,1778,1779,3,427,213,0,1779,1780,3,445,222,0,1780,1781,3,413,206,0,1781,1782,3,441,220,0,1782,370,1,0,0,0,1783,1784,3,447,223,0,1784,1785,3,421,210,0,1785,1786,3,413,206,0,1786,1787,3,449,224,0,1787,372,1,0,0,0,1788,1789,3,447,223,0,1789,1790,3,433,216,0,1790,1791,3,427,213,0,1791,1792,3,445,222,0,1792,1793,3,429,214,0,1793,1794,3,413,206,0,1794,374,1,0,0,0,1795,1796,3,449,224,0,1796,1797,3,405,202,0,1797,1798,3,443,221,0,1798,1799,3,409,204,0,1799,1800,3,419,209,0,1800,376,1,0,0,0,1801,1802,3,449,224,0,1802,1803,3,413,206,0,1803,1804,3,413,206,0,1804,1805,3,425,212,0,1805,378,1,0,0,0,1806,1807,3,449,224,0,1807,1808,3,419,209,0,1808,1809,3,413,206,0,1809,1810,3,431,215,0,1810,380,1,0,0,0,1811,1812,3,449,224,0,1812,1813,3,419,209,0,1813,1814,3,413,206,0,1814,1815,3,439,219,0,1815,1816,3,413,206,0,1816,382,1,0,0,0,1817,1818,3,449,224,0,1818,1819,3,421,210,0,1819,1820,3,431,215,0,1820,1821,3,411,205,0,1821,1822,3,433,216,0,1822,1823,3,449,224,0,1823,384,1,0,0,0,1824,1825,3,449,224,0,1825,1826,3,421,210,0,1826,1827,3,443,221,0,1827,1828,3,419,209,0,1828,386,1,0,0,0,1829,1830,3,453,226,0,1830,1831,3,413,206,0,1831,1832,3,405,202,0,1832,1833,3,439,219,0,1833,1840,1,0,0,0,1834,1835,3,453,226,0,1835,1836,3,453,226,0,1836,1837,3,453,226,0,1837,1838,3,453,226,0,1838,1840,1,0,0,0,1839,1829,1,0,0,0,1839,1834,1,0,0,0,1840,388,1,0,0,0,1841,1842,5,102,0,0,1842,1843,5,97,0,0,1843,1844,5,108,0,0,1844,1845,5,115,0,0,1845,1846,5,101,0,0,1846,390,1,0,0,0,1847,1848,5,116,0,0,1848,1849,5,114,0,0,1849,1850,5,117,0,0,1850,1851,5,101,0,0,1851,392,1,0,0,0,1852,1855,3,457,228,0,1853,1855,3,523,261,0,1854,1852,1,0,0,0,1854,1853,1,0,0,0,1855,1861,1,0,0,0,1856,1860,3,457,228,0,1857,1860,3,523,261,0,1858,1860,3,461,230,0,1859,1856,1,0,0,0,1859,1857,1,0,0,0,1859,1858,1,0,0,0,1860,1863,1,0,0,0,1861,1859,1,0,0,0,1861,1862,1,0,0,0,1862,1895,1,0,0,0,1863,1861,1,0,0,0,1864,1874,3,469,234,0,1865,1873,8,0,0,0,1866,1867,3,471,235,0,1867,1868,9,0,0,0,1868,1873,1,0,0,0,1869,1870,3,469,234,0,1870,1871,3,469,234,0,1871,1873,1,0,0,0,1872,1865,1,0,0,0,1872,1866,1,0,0,0,1872,1869,1,0,0,0,1873,1876,1,0,0,0,1874,1872,1,0,0,0,1874,1875,1,0,0,0,1875,1877,1,0,0,0,1876,1874,1,0,0,0,1877,1878,3,469,234,0,1878,1895,1,0,0,0,1879,1889,3,509,254,0,1880,1888,8,1,0,0,1881,1882,3,471,235,0,1882,1883,9,0,0,0,1883,1888,1,0,0,0,1884,1885,3,509,254,0,1885,1886,3,509,254,0,1886,1888,1,0,0,0,1887,1880,1,0,0,0,1887,1881,1,0,0,0,1887,1884,1,0,0,0,1888,1891,1,0,0,0,1889,1887,1,0,0,0,1889,1890,1,0,0,0,1890,1892,1,0,0,0,1891,1889,1,0,0,0,1892,1893,3,509,254,0,1893,1895,1,0,0,0,1894,1854,1,0,0,0,1894,1864,1,0,0,0,1894,1879,1,0,0,0,1895,394,1,0,0,0,1896,1897,3,401,200,0,1897,1901,3,481,240,0,1898,1900,3,463,231,0,1899,1898,1,0,0,0,1900,1903,1,0,0,0,1901,1899,1,0,0,0,1901,1902,1,0,0,0,1902,1906,1,0,0,0,1903,1901,1,0,0,0,1904,1907,3,435,217,0,1905,1907,3,413,206,0,1906,1904,1,0,0,0,1906,1905,1,0,0,0,1907,1910,1,0,0,0,1908,1911,3,505,252,0,1909,1911,3,479,239,0,1910,1908,1,0,0,0,1910,1909,1,0,0,0,1910,1911,1,0,0,0,1911,1913,1,0,0,0,1912,1914,3,461,230,0,1913,1912,1,0,0,0,1914,1915,1,0,0,0,1915,1913,1,0,0,0,1915,1916,1,0,0,0,1916,1973,1,0,0,0,1917,1920,3,401,200,0,1918,1921,3,435,217,0,1919,1921,3,413,206,0,1920,1918,1,0,0,0,1920,1919,1,0,0,0,1921,1924,1,0,0,0,1922,1925,3,505,252,0,1923,1925,3,479,239,0,1924,1922,1,0,0,0,1924,1923,1,0,0,0,1924,1925,1,0,0,0,1925,1927,1,0,0,0,1926,1928,3,461,230,0,1927,1926,1,0,0,0,1928,1929,1,0,0,0,1929,1927,1,0,0,0,1929,1930,1,0,0,0,1930,1973,1,0,0,0,1931,1932,3,399,199,0,1932,1936,3,481,240,0,1933,1935,3,461,230,0,1934,1933,1,0,0,0,1935,1938,1,0,0,0,1936,1934,1,0,0,0,1936,1937,1,0,0,0,1937,1939,1,0,0,0,1938,1936,1,0,0,0,1939,1942,3,413,206,0,1940,1943,3,505,252,0,1941,1943,3,479,239,0,1942,1940,1,0,0,0,1942,1941,1,0,0,0,1942,1943,1,0,0,0,1943,1945,1,0,0,0,1944,1946,3,461,230,0,1945,1944,1,0,0,0,1946,1947,1,0,0,0,1947,1945,1,0,0,0,1947,1948,1,0,0,0,1948,1973,1,0,0,0,1949,1950,3,481,240,0,1950,1951,3,399,199,0,1951,1954,3,413,206,0,1952,1955,3,505,252,0,1953,1955,3,479,239,0,1954,1952,1,0,0,0,1954,1953,1,0,0,0,1954,1955,1,0,0,0,1955,1957,1,0,0,0,1956,1958,3,461,230,0,1957,1956,1,0,0,0,1958,1959,1,0,0,0,1959,1957,1,0,0,0,1959,1960,1,0,0,0,1960,1973,1,0,0,0,1961,1962,3,399,199,0,1962,1965,3,413,206,0,1963,1966,3,505,252,0,1964,1966,3,479,239,0,1965,1963,1,0,0,0,1965,1964,1,0,0,0,1965,1966,1,0,0,0,1966,1968,1,0,0,0,1967,1969,3,461,230,0,1968,1967,1,0,0,0,1969,1970,1,0,0,0,1970,1968,1,0,0,0,1970,1971,1,0,0,0,1971,1973,1,0,0,0,1972,1896,1,0,0,0,1972,1917,1,0,0,0,1972,1931,1,0,0,0,1972,1949,1,0,0,0,1972,1961,1,0,0,0,1973,396,1,0,0,0,1974,1976,5,48,0,0,1975,1977,3,459,229,0,1976,1975,1,0,0,0,1977,1978,1,0,0,0,1978,1976,1,0,0,0,1978,1979,1,0,0,0,1979,398,1,0,0,0,1980,1982,3,461,230,0,1981,1980,1,0,0,0,1982,1983,1,0,0,0,1983,1981,1,0,0,0,1983,1984,1,0,0,0,1984,400,1,0,0,0,1985,1986,5,48,0,0,1986,1988,3,451,225,0,1987,1989,3,463,231,0,1988,1987,1,0,0,0,1989,1990,1,0,0,0,1990,1988,1,0,0,0,1990,1991,1,0,0,0,1991,402,1,0,0,0,1992,2002,3,511,255,0,1993,2001,8,2,0,0,1994,1995,3,471,235,0,1995,1996,9,0,0,0,1996,2001,1,0,0,0,1997,1998,3,511,255,0,1998,1999,3,511,255,0,1999,2001,1,0,0,0,2e3,1993,1,0,0,0,2e3,1994,1,0,0,0,2e3,1997,1,0,0,0,2001,2004,1,0,0,0,2002,2e3,1,0,0,0,2002,2003,1,0,0,0,2003,2005,1,0,0,0,2004,2002,1,0,0,0,2005,2006,3,511,255,0,2006,404,1,0,0,0,2007,2008,7,3,0,0,2008,406,1,0,0,0,2009,2010,7,4,0,0,2010,408,1,0,0,0,2011,2012,7,5,0,0,2012,410,1,0,0,0,2013,2014,7,6,0,0,2014,412,1,0,0,0,2015,2016,7,7,0,0,2016,414,1,0,0,0,2017,2018,7,8,0,0,2018,416,1,0,0,0,2019,2020,7,9,0,0,2020,418,1,0,0,0,2021,2022,7,10,0,0,2022,420,1,0,0,0,2023,2024,7,11,0,0,2024,422,1,0,0,0,2025,2026,7,12,0,0,2026,424,1,0,0,0,2027,2028,7,13,0,0,2028,426,1,0,0,0,2029,2030,7,14,0,0,2030,428,1,0,0,0,2031,2032,7,15,0,0,2032,430,1,0,0,0,2033,2034,7,16,0,0,2034,432,1,0,0,0,2035,2036,7,17,0,0,2036,434,1,0,0,0,2037,2038,7,18,0,0,2038,436,1,0,0,0,2039,2040,7,19,0,0,2040,438,1,0,0,0,2041,2042,7,20,0,0,2042,440,1,0,0,0,2043,2044,7,21,0,0,2044,442,1,0,0,0,2045,2046,7,22,0,0,2046,444,1,0,0,0,2047,2048,7,23,0,0,2048,446,1,0,0,0,2049,2050,7,24,0,0,2050,448,1,0,0,0,2051,2052,7,25,0,0,2052,450,1,0,0,0,2053,2054,7,26,0,0,2054,452,1,0,0,0,2055,2056,7,27,0,0,2056,454,1,0,0,0,2057,2058,7,28,0,0,2058,456,1,0,0,0,2059,2060,7,29,0,0,2060,458,1,0,0,0,2061,2062,7,30,0,0,2062,460,1,0,0,0,2063,2064,7,31,0,0,2064,462,1,0,0,0,2065,2066,7,32,0,0,2066,464,1,0,0,0,2067,2068,5,45,0,0,2068,2069,5,62,0,0,2069,466,1,0,0,0,2070,2071,5,42,0,0,2071,468,1,0,0,0,2072,2073,5,96,0,0,2073,470,1,0,0,0,2074,2075,5,92,0,0,2075,472,1,0,0,0,2076,2077,5,58,0,0,2077,474,1,0,0,0,2078,2079,5,44,0,0,2079,476,1,0,0,0,2080,2081,5,124,0,0,2081,2082,5,124,0,0,2082,478,1,0,0,0,2083,2084,5,45,0,0,2084,480,1,0,0,0,2085,2086,5,46,0,0,2086,482,1,0,0,0,2087,2088,5,61,0,0,2088,2089,5,61,0,0,2089,484,1,0,0,0,2090,2091,5,61,0,0,2091,486,1,0,0,0,2092,2093,5,62,0,0,2093,2094,5,61,0,0,2094,488,1,0,0,0,2095,2096,5,62,0,0,2096,490,1,0,0,0,2097,2098,5,123,0,0,2098,492,1,0,0,0,2099,2100,5,91,0,0,2100,494,1,0,0,0,2101,2102,5,60,0,0,2102,2103,5,61,0,0,2103,496,1,0,0,0,2104,2105,5,40,0,0,2105,498,1,0,0,0,2106,2107,5,60,0,0,2107,500,1,0,0,0,2108,2109,5,33,0,0,2109,2113,5,61,0,0,2110,2111,5,60,0,0,2111,2113,5,62,0,0,2112,2108,1,0,0,0,2112,2110,1,0,0,0,2113,502,1,0,0,0,2114,2115,5,37,0,0,2115,504,1,0,0,0,2116,2117,5,43,0,0,2117,506,1,0,0,0,2118,2119,5,63,0,0,2119,508,1,0,0,0,2120,2121,5,34,0,0,2121,510,1,0,0,0,2122,2123,5,39,0,0,2123,512,1,0,0,0,2124,2125,5,125,0,0,2125,514,1,0,0,0,2126,2127,5,93,0,0,2127,516,1,0,0,0,2128,2129,5,41,0,0,2129,518,1,0,0,0,2130,2131,5,59,0,0,2131,520,1,0,0,0,2132,2133,5,47,0,0,2133,522,1,0,0,0,2134,2135,5,95,0,0,2135,524,1,0,0,0,2136,2137,5,47,0,0,2137,2138,5,42,0,0,2138,2142,1,0,0,0,2139,2141,9,0,0,0,2140,2139,1,0,0,0,2141,2144,1,0,0,0,2142,2143,1,0,0,0,2142,2140,1,0,0,0,2143,2145,1,0,0,0,2144,2142,1,0,0,0,2145,2146,5,42,0,0,2146,2147,5,47,0,0,2147,2148,1,0,0,0,2148,2149,6,262,0,0,2149,526,1,0,0,0,2150,2151,5,45,0,0,2151,2152,5,45,0,0,2152,2156,1,0,0,0,2153,2155,8,33,0,0,2154,2153,1,0,0,0,2155,2158,1,0,0,0,2156,2154,1,0,0,0,2156,2157,1,0,0,0,2157,2160,1,0,0,0,2158,2156,1,0,0,0,2159,2161,7,34,0,0,2160,2159,1,0,0,0,2161,2162,1,0,0,0,2162,2163,6,263,0,0,2163,528,1,0,0,0,2164,2165,7,35,0,0,2165,2166,1,0,0,0,2166,2167,6,264,1,0,2167,530,1,0,0,0,36,0,593,1100,1839,1854,1859,1861,1872,1874,1887,1889,1894,1901,1906,1910,1915,1920,1924,1929,1936,1942,1947,1954,1959,1965,1970,1972,1978,1983,1990,2e3,2002,2112,2142,2156,2160,2,6,0,0,0,1,0],Ji.vocabulary=new Ra(Ji.literalNames,Ji.symbolicNames,[]),Ji.decisionsToDFA=Ji._ATN.decisionToState.map(((t,e)=>new ni(t,e))),Ji),CG=(Zi=class t extends Cc{get grammarFileName(){return"ClickHouseParser.g4"}get literalNames(){return t.literalNames}get symbolicNames(){return t.symbolicNames}get ruleNames(){return t.ruleNames}get serializedATN(){return t._serializedATN}createFailedPredicateException(t,e){return new Sc(this,t,e)}constructor(e){super(e),this.interpreter=new Ai(this,t._ATN,t.decisionsToDFA,new Si)}root(){let e,s=new _G(this.context,this.state);this.enterRule(s,0,t.RULE_root);try{this.enterOuterAlt(s,1),this.state=257,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&539000864||!(e-40&-32)&&1<<e-40&197659||85===e||92===e||!(e-120&-32)&&1<<e-120&538443777||!(e-152&-32)&&1<<e-152&1090519557||!(e-188&-32)&&1<<e-188&2147483681)&&(this.state=256,this.statements()),this.state=259,this.match(t.EOF)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}statements(){let e,s=new PG(this.context,this.state);this.enterRule(s,2,t.RULE_statements);try{switch(this.state=269,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,2,this.context)){case 1:this.enterOuterAlt(s,1),this.state=261,this.statement(),this.state=263,this.errorHandler.sync(this),e=this.tokenStream.LA(1),230===e&&(this.state=262,this.match(t.SEMICOLON));break;case 2:this.enterOuterAlt(s,2),this.state=265,this.statement(),this.state=266,this.match(t.SEMICOLON),this.state=267,this.statements()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}statement(){let e,s=new MG(this.context,this.state);this.enterRule(s,4,t.RULE_statement);try{switch(this.state=285,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALTER:case t.ATTACH:case t.CHECK:case t.CREATE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DROP:case t.EXISTS:case t.EXPLAIN:case t.KILL:case t.OPTIMIZE:case t.RENAME:case t.REPLACE:case t.SELECT:case t.SET:case t.SHOW:case t.SYSTEM:case t.TRUNCATE:case t.USE:case t.WATCH:case t.WITH:case t.LPAREN:if(1===(this.enterOuterAlt(s,1),this.state=271,this.notInsertStatement(),this.state=275,this.errorHandler.sync(this),e=this.tokenStream.LA(1),87===e&&(this.state=272,this.match(t.INTO),this.state=273,this.match(t.OUTFILE),this.state=274,this.match(t.STRING_LITERAL)),this.state=279,this.errorHandler.sync(this),e=this.tokenStream.LA(1),66===e&&(this.state=277,this.match(t.FORMAT),this.state=278,this.identifierOrNull()),this.state=282,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,5,this.context)))this.state=281,this.match(t.SEMICOLON);break;case t.INSERT:this.enterOuterAlt(s,2),this.state=284,this.insertStatement();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}notInsertStatement(){let e=new dG(this.context,this.state);this.enterRule(e,6,t.RULE_notInsertStatement);try{switch(this.state=310,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,8,this.context)){case 1:this.enterOuterAlt(e,1),this.state=287,this.alterStatement();break;case 2:this.enterOuterAlt(e,2),this.state=288,this.attachStatement();break;case 3:this.enterOuterAlt(e,3),this.state=289,this.checkStatement();break;case 4:this.enterOuterAlt(e,4),this.state=290,this.createStatement();break;case 5:this.enterOuterAlt(e,5),this.state=291,this.describeStatement();break;case 6:this.enterOuterAlt(e,6),this.state=292,this.deleteStatement();break;case 7:this.enterOuterAlt(e,7),this.state=293,this.dropStatement();break;case 8:this.enterOuterAlt(e,8),this.state=294,this.existsStatement();break;case 9:this.enterOuterAlt(e,9),this.state=295,this.explainStatement();break;case 10:this.enterOuterAlt(e,10),this.state=296,this.killStatement();break;case 11:this.enterOuterAlt(e,11),this.state=297,this.optimizeStatement();break;case 12:this.enterOuterAlt(e,12),this.state=298,this.renameStatement();break;case 13:this.enterOuterAlt(e,13),this.state=299,this.selectUnionStatement();break;case 14:this.enterOuterAlt(e,14),this.state=300,this.setStatement();break;case 15:this.enterOuterAlt(e,15),this.state=301,this.showStatement();break;case 16:this.enterOuterAlt(e,16),this.state=302,this.systemStatement();break;case 17:this.enterOuterAlt(e,17),this.state=303,this.truncateStatement();break;case 18:this.enterOuterAlt(e,18),this.state=304,this.useStatement();break;case 19:this.enterOuterAlt(e,19),this.state=305,this.watchStatement();break;case 20:if(this.enterOuterAlt(e,20),1===(this.state=307,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,7,this.context)))this.state=306,this.commonTableExpressionStatement();this.state=309,this.selectStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}commonTableExpressionStatement(){let e,s=new UG(this.context,this.state);this.enterRule(s,8,t.RULE_commonTableExpressionStatement);try{for(this.enterOuterAlt(s,1),this.state=312,this.match(t.WITH),this.state=313,this.namedQuery(),this.state=318,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=314,this.match(t.COMMA),this.state=315,this.namedQuery(),this.state=320,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}namedQuery(){let e,s=new mG(this.context,this.state);this.enterRule(s,10,t.RULE_namedQuery);try{this.enterOuterAlt(s,1),this.state=321,s._name=this.identifier(),this.state=323,this.errorHandler.sync(this),e=this.tokenStream.LA(1),219===e&&(this.state=322,this.columnAliases()),this.state=325,this.match(t.AS),this.state=326,this.match(t.LPAREN),this.state=327,this.notInsertStatement(),this.state=328,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnAliases(){let e,s=new DG(this.context,this.state);this.enterRule(s,12,t.RULE_columnAliases);try{for(this.enterOuterAlt(s,1),this.state=330,this.match(t.LPAREN),this.state=331,this.identifier(),this.state=336,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=332,this.match(t.COMMA),this.state=333,this.identifier(),this.state=338,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=339,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterStatement(){let e,s=new pG(this.context,this.state);this.enterRule(s,14,t.RULE_alterStatement);try{for(s=new gG(s),this.enterOuterAlt(s,1),this.state=341,this.match(t.ALTER),this.state=342,this.match(t.TABLE),this.state=343,this.tableIdentifier(),this.state=345,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=344,this.clusterClause()),this.state=347,this.alterTableClause(),this.state=352,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=348,this.match(t.COMMA),this.state=349,this.alterTableClause(),this.state=354,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alterTableClause(){let e,s=new xG(this.context,this.state);this.enterRule(s,16,t.RULE_alterTableClause);try{switch(this.state=569,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,42,this.context)){case 1:if(s=new iF(s),this.enterOuterAlt(s,1),1===(this.state=355,this.match(t.ADD),this.state=356,this.match(t.COLUMN),this.state=360,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,14,this.context)))this.state=357,this.match(t.IF),this.state=358,this.match(t.NOT),this.state=359,this.match(t.EXISTS);this.state=362,this.tableColumnDefinition(),this.state=365,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=363,this.match(t.AFTER),this.state=364,this.columnIdentifier());break;case 2:if(s=new wG(s),this.enterOuterAlt(s,2),1===(this.state=367,this.match(t.ADD),this.state=368,this.match(t.INDEX),this.state=372,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,16,this.context)))this.state=369,this.match(t.IF),this.state=370,this.match(t.NOT),this.state=371,this.match(t.EXISTS);this.state=374,this.tableIndexDefinition(),this.state=377,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=375,this.match(t.AFTER),this.state=376,this.columnIdentifier());break;case 3:if(s=new rF(s),this.enterOuterAlt(s,3),1===(this.state=379,this.match(t.ADD),this.state=380,this.match(t.PROJECTION),this.state=384,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,18,this.context)))this.state=381,this.match(t.IF),this.state=382,this.match(t.NOT),this.state=383,this.match(t.EXISTS);this.state=386,this.tableProjectionDefinition(),this.state=389,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=387,this.match(t.AFTER),this.state=388,this.columnIdentifier());break;case 4:s=new $G(s),this.enterOuterAlt(s,4),this.state=391,this.match(t.ATTACH),this.state=392,this.partitionClause(),this.state=395,this.errorHandler.sync(this),e=this.tokenStream.LA(1),68===e&&(this.state=393,this.match(t.FROM),this.state=394,this.tableIdentifier());break;case 5:if(s=new JG(s),this.enterOuterAlt(s,5),1===(this.state=397,this.match(t.CLEAR),this.state=398,this.match(t.COLUMN),this.state=401,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,21,this.context)))this.state=399,this.match(t.IF),this.state=400,this.match(t.EXISTS);this.state=403,this.columnIdentifier(),this.state=406,this.errorHandler.sync(this),e=this.tokenStream.LA(1),80===e&&(this.state=404,this.match(t.IN),this.state=405,this.partitionClause());break;case 6:if(s=new qG(s),this.enterOuterAlt(s,6),1===(this.state=408,this.match(t.CLEAR),this.state=409,this.match(t.INDEX),this.state=412,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,23,this.context)))this.state=410,this.match(t.IF),this.state=411,this.match(t.EXISTS);this.state=414,this.columnIdentifier(),this.state=417,this.errorHandler.sync(this),e=this.tokenStream.LA(1),80===e&&(this.state=415,this.match(t.IN),this.state=416,this.partitionClause());break;case 7:if(s=new FG(s),this.enterOuterAlt(s,7),1===(this.state=419,this.match(t.CLEAR),this.state=420,this.match(t.PROJECTION),this.state=423,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,25,this.context)))this.state=421,this.match(t.IF),this.state=422,this.match(t.EXISTS);this.state=425,this.columnIdentifier(),this.state=428,this.errorHandler.sync(this),e=this.tokenStream.LA(1),80===e&&(this.state=426,this.match(t.IN),this.state=427,this.partitionClause());break;case 8:if(s=new yG(s),this.enterOuterAlt(s,8),1===(this.state=430,this.match(t.COMMENT),this.state=431,this.match(t.COLUMN),this.state=434,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,27,this.context)))this.state=432,this.match(t.IF),this.state=433,this.match(t.EXISTS);this.state=436,this.columnIdentifier(),this.state=437,this.match(t.STRING_LITERAL);break;case 9:s=new BG(s),this.enterOuterAlt(s,9),this.state=439,this.match(t.DELETE),this.state=440,this.match(t.WHERE),this.state=441,this.columnExpression(0);break;case 10:s=new YG(s),this.enterOuterAlt(s,10),this.state=442,this.match(t.DETACH),this.state=443,this.partitionClause();break;case 11:if(s=new fG(s),this.enterOuterAlt(s,11),1===(this.state=444,this.match(t.DROP),this.state=445,this.match(t.COLUMN),this.state=448,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,28,this.context)))this.state=446,this.match(t.IF),this.state=447,this.match(t.EXISTS);this.state=450,this.columnIdentifier();break;case 12:if(s=new eF(s),this.enterOuterAlt(s,12),1===(this.state=451,this.match(t.DROP),this.state=452,this.match(t.INDEX),this.state=455,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,29,this.context)))this.state=453,this.match(t.IF),this.state=454,this.match(t.EXISTS);this.state=457,this.columnIdentifier();break;case 13:if(s=new tF(s),this.enterOuterAlt(s,13),1===(this.state=458,this.match(t.DROP),this.state=459,this.match(t.PROJECTION),this.state=462,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,30,this.context)))this.state=460,this.match(t.IF),this.state=461,this.match(t.EXISTS);this.state=464,this.columnIdentifier();break;case 14:s=new bG(s),this.enterOuterAlt(s,14),this.state=465,this.match(t.DROP),this.state=466,this.partitionClause();break;case 15:s=new QG(s),this.enterOuterAlt(s,15),this.state=467,this.match(t.FREEZE),this.state=469,this.errorHandler.sync(this),e=this.tokenStream.LA(1),126===e&&(this.state=468,this.partitionClause());break;case 16:if(s=new WG(s),this.enterOuterAlt(s,16),1===(this.state=471,this.match(t.MATERIALIZE),this.state=472,this.match(t.INDEX),this.state=475,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,32,this.context)))this.state=473,this.match(t.IF),this.state=474,this.match(t.EXISTS);this.state=477,this.columnIdentifier(),this.state=480,this.errorHandler.sync(this),e=this.tokenStream.LA(1),80===e&&(this.state=478,this.match(t.IN),this.state=479,this.partitionClause());break;case 17:if(s=new VG(s),this.enterOuterAlt(s,17),1===(this.state=482,this.match(t.MATERIALIZE),this.state=483,this.match(t.PROJECTION),this.state=486,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,34,this.context)))this.state=484,this.match(t.IF),this.state=485,this.match(t.EXISTS);this.state=488,this.columnIdentifier(),this.state=491,this.errorHandler.sync(this),e=this.tokenStream.LA(1),80===e&&(this.state=489,this.match(t.IN),this.state=490,this.partitionClause());break;case 18:if(s=new zG(s),this.enterOuterAlt(s,18),1===(this.state=493,this.match(t.MODIFY),this.state=494,this.match(t.COLUMN),this.state=497,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,36,this.context)))this.state=495,this.match(t.IF),this.state=496,this.match(t.EXISTS);this.state=499,this.columnIdentifier(),this.state=500,this.codecExpression();break;case 19:if(s=new sF(s),this.enterOuterAlt(s,19),1===(this.state=502,this.match(t.MODIFY),this.state=503,this.match(t.COLUMN),this.state=506,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,37,this.context)))this.state=504,this.match(t.IF),this.state=505,this.match(t.EXISTS);this.state=508,this.columnIdentifier(),this.state=509,this.match(t.COMMENT),this.state=510,this.match(t.STRING_LITERAL);break;case 20:if(s=new vG(s),this.enterOuterAlt(s,20),1===(this.state=512,this.match(t.MODIFY),this.state=513,this.match(t.COLUMN),this.state=516,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,38,this.context)))this.state=514,this.match(t.IF),this.state=515,this.match(t.EXISTS);this.state=518,this.columnIdentifier(),this.state=519,this.match(t.REMOVE),this.state=520,this.tableColumnPropertyType();break;case 21:if(s=new ZG(s),this.enterOuterAlt(s,21),1===(this.state=522,this.match(t.MODIFY),this.state=523,this.match(t.COLUMN),this.state=526,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,39,this.context)))this.state=524,this.match(t.IF),this.state=525,this.match(t.EXISTS);this.state=528,this.tableColumnDefinition();break;case 22:s=new HG(s),this.enterOuterAlt(s,22),this.state=529,this.match(t.MODIFY),this.state=530,this.match(t.ORDER),this.state=531,this.match(t.BY),this.state=532,this.columnExpression(0);break;case 23:s=new aF(s),this.enterOuterAlt(s,23),this.state=533,this.match(t.MODIFY),this.state=534,this.ttlClause();break;case 24:switch(s=new XG(s),this.enterOuterAlt(s,24),this.state=535,this.match(t.MOVE),this.state=536,this.partitionClause(),this.state=546,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,40,this.context)){case 1:this.state=537,this.match(t.TO),this.state=538,this.match(t.DISK),this.state=539,this.match(t.STRING_LITERAL);break;case 2:this.state=540,this.match(t.TO),this.state=541,this.match(t.VOLUME),this.state=542,this.match(t.STRING_LITERAL);break;case 3:this.state=543,this.match(t.TO),this.state=544,this.match(t.TABLE),this.state=545,this.tableIdentifier()}break;case 25:s=new jG(s),this.enterOuterAlt(s,25),this.state=548,this.match(t.REMOVE),this.state=549,this.match(t.TTL);break;case 26:if(s=new KG(s),this.enterOuterAlt(s,26),1===(this.state=550,this.match(t.RENAME),this.state=551,this.match(t.COLUMN),this.state=554,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,41,this.context)))this.state=552,this.match(t.IF),this.state=553,this.match(t.EXISTS);this.state=556,this.columnIdentifier(),this.state=557,this.match(t.TO),this.state=558,this.columnIdentifier();break;case 27:s=new kG(s),this.enterOuterAlt(s,27),this.state=560,this.match(t.REPLACE),this.state=561,this.partitionClause(),this.state=562,this.match(t.FROM),this.state=563,this.tableIdentifier();break;case 28:s=new GG(s),this.enterOuterAlt(s,28),this.state=565,this.match(t.UPDATE),this.state=566,this.assignmentExpressionList(),this.state=567,this.whereClause()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}assignmentExpressionList(){let e,s=new cF(this.context,this.state);this.enterRule(s,18,t.RULE_assignmentExpressionList);try{for(this.enterOuterAlt(s,1),this.state=571,this.assignmentExpression(),this.state=576,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=572,this.match(t.COMMA),this.state=573,this.assignmentExpression(),this.state=578,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}assignmentExpression(){let e=new nF(this.context,this.state);this.enterRule(e,20,t.RULE_assignmentExpression);try{this.enterOuterAlt(e,1),this.state=579,this.columnIdentifier(),this.state=580,this.match(t.EQ_SINGLE),this.state=581,this.columnExpression(0)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableColumnPropertyType(){let e,s=new hF(this.context,this.state);this.enterRule(s,22,t.RULE_tableColumnPropertyType);try{this.enterOuterAlt(s,1),this.state=583,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&150994952||38===e||104===e||177===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}partitionClause(){let e=new EF(this.context,this.state);this.enterRule(e,24,t.RULE_partitionClause);try{switch(this.state=590,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,44,this.context)){case 1:this.enterOuterAlt(e,1),this.state=585,this.match(t.PARTITION),this.state=586,this.columnExpression(0);break;case 2:this.enterOuterAlt(e,2),this.state=587,this.match(t.PARTITION),this.state=588,this.match(t.ID),this.state=589,this.match(t.STRING_LITERAL)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}attachStatement(){let e,s=new TF(this.context,this.state);this.enterRule(s,26,t.RULE_attachStatement);try{s=new oF(s),this.enterOuterAlt(s,1),this.state=592,this.match(t.ATTACH),this.state=593,this.match(t.DICTIONARY),this.state=594,this.tableIdentifier(),this.state=596,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=595,this.clusterClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}checkStatement(){let e,s=new RF(this.context,this.state);this.enterRule(s,28,t.RULE_checkStatement);try{this.enterOuterAlt(s,1),this.state=598,this.match(t.CHECK),this.state=599,this.match(t.TABLE),this.state=600,this.tableIdentifier(),this.state=602,this.errorHandler.sync(this),e=this.tokenStream.LA(1),126===e&&(this.state=601,this.partitionClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}deleteStatement(){let e,s=new AF(this.context,this.state);this.enterRule(s,30,t.RULE_deleteStatement);try{this.enterOuterAlt(s,1),this.state=604,this.match(t.DELETE),this.state=605,this.match(t.FROM),this.state=606,this.tableIdentifier(),this.state=608,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=607,this.clusterClause()),this.state=611,this.errorHandler.sync(this),e=this.tokenStream.LA(1),191===e&&(this.state=610,this.whereClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createTableStatement(){let e,s=new SF(this.context,this.state);this.enterRule(s,32,t.RULE_createTableStatement);try{switch(this.enterOuterAlt(s,1),this.state=620,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ATTACH:this.state=613,this.match(t.ATTACH);break;case t.CREATE:this.state=614,this.match(t.CREATE),this.state=617,this.errorHandler.sync(this),e=this.tokenStream.LA(1),121===e&&(this.state=615,this.match(t.OR),this.state=616,this.match(t.REPLACE));break;case t.REPLACE:this.state=619,this.match(t.REPLACE);break;default:throw new Ei(this)}if(1===(this.state=623,this.errorHandler.sync(this),e=this.tokenStream.LA(1),164===e&&(this.state=622,this.match(t.TEMPORARY)),this.state=625,this.match(t.TABLE),this.state=629,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,52,this.context)))this.state=626,this.match(t.IF),this.state=627,this.match(t.NOT),this.state=628,this.match(t.EXISTS);if(1===(this.state=631,this.tableIdentifier(),this.state=633,this.errorHandler.sync(this),e=this.tokenStream.LA(1),184===e&&(this.state=632,this.uuidClause()),this.state=636,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=635,this.clusterClause()),this.state=639,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,55,this.context)))this.state=638,this.tableSchemaClause();this.state=642,this.errorHandler.sync(this),e=this.tokenStream.LA(1),53===e&&(this.state=641,this.engineClause()),this.state=645,this.errorHandler.sync(this),e=this.tokenStream.LA(1),10===e&&(this.state=644,this.subqueryClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createDatabaseStatement(){let e,s=new lF(this.context,this.state);this.enterRule(s,34,t.RULE_createDatabaseStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=647,e=this.tokenStream.LA(1),15===e||29===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=648,this.match(t.DATABASE),this.state=652,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,58,this.context)))this.state=649,this.match(t.IF),this.state=650,this.match(t.NOT),this.state=651,this.match(t.EXISTS);this.state=654,this.identifier(),this.state=656,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=655,this.clusterClause()),this.state=658,this.engineExpression()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createDictionaryStatement(){let e,s=new OF(this.context,this.state);this.enterRule(s,36,t.RULE_createDictionaryStatement);try{switch(this.enterOuterAlt(s,1),this.state=667,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ATTACH:this.state=660,this.match(t.ATTACH);break;case t.CREATE:this.state=661,this.match(t.CREATE),this.state=664,this.errorHandler.sync(this),e=this.tokenStream.LA(1),121===e&&(this.state=662,this.match(t.OR),this.state=663,this.match(t.REPLACE));break;case t.REPLACE:this.state=666,this.match(t.REPLACE);break;default:throw new Ei(this)}if(1===(this.state=669,this.match(t.DICTIONARY),this.state=673,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,62,this.context)))this.state=670,this.match(t.IF),this.state=671,this.match(t.NOT),this.state=672,this.match(t.EXISTS);this.state=675,this.tableIdentifier(),this.state=677,this.errorHandler.sync(this),e=this.tokenStream.LA(1),184===e&&(this.state=676,this.uuidClause()),this.state=680,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=679,this.clusterClause()),this.state=682,this.dictionarySchemaClause(),this.state=683,this.dictionaryEngineClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createLiveViewStatement(){let e,s=new IF(this.context,this.state);this.enterRule(s,38,t.RULE_createLiveViewStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=685,e=this.tokenStream.LA(1),15===e||29===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=686,this.match(t.LIVE),this.state=687,this.match(t.VIEW),this.state=691,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,65,this.context)))this.state=688,this.match(t.IF),this.state=689,this.match(t.NOT),this.state=690,this.match(t.EXISTS);if(1===(this.state=693,this.tableIdentifier(),this.state=695,this.errorHandler.sync(this),e=this.tokenStream.LA(1),184===e&&(this.state=694,this.uuidClause()),this.state=698,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=697,this.clusterClause()),this.state=705,this.errorHandler.sync(this),e=this.tokenStream.LA(1),193===e&&(this.state=700,this.match(t.WITH),this.state=701,this.match(t.TIMEOUT),this.state=703,this.errorHandler.sync(this),e=this.tokenStream.LA(1),200===e&&(this.state=702,this.match(t.DECIMAL_LITERAL))),this.state=708,this.errorHandler.sync(this),e=this.tokenStream.LA(1),170===e&&(this.state=707,this.destinationClause()),this.state=711,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,71,this.context)))this.state=710,this.tableSchemaClause();this.state=713,this.subqueryClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createMaterializedViewStatement(){let e,s=new uF(this.context,this.state);this.enterRule(s,40,t.RULE_createMaterializedViewStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=715,e=this.tokenStream.LA(1),15===e||29===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=716,this.match(t.MATERIALIZED),this.state=717,this.match(t.VIEW),this.state=721,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,72,this.context)))this.state=718,this.match(t.IF),this.state=719,this.match(t.NOT),this.state=720,this.match(t.EXISTS);switch(this.state=723,this.tableIdentifier(),this.state=725,this.errorHandler.sync(this),e=this.tokenStream.LA(1),184===e&&(this.state=724,this.uuidClause()),this.state=728,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=727,this.clusterClause()),this.state=731,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(10===e||219===e)&&(this.state=730,this.tableSchemaClause()),this.state=738,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.TO:this.state=733,this.destinationClause();break;case t.ENGINE:this.state=734,this.engineClause(),this.state=736,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=735,this.match(t.POPULATE));break;default:throw new Ei(this)}this.state=740,this.subqueryClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createViewStatement(){let e,s=new NF(this.context,this.state);this.enterRule(s,42,t.RULE_createViewStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=742,e=this.tokenStream.LA(1),15===e||29===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=745,this.errorHandler.sync(this),e=this.tokenStream.LA(1),121===e&&(this.state=743,this.match(t.OR),this.state=744,this.match(t.REPLACE)),this.state=747,this.match(t.VIEW),this.state=751,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,79,this.context)))this.state=748,this.match(t.IF),this.state=749,this.match(t.NOT),this.state=750,this.match(t.EXISTS);if(1===(this.state=753,this.tableIdentifier(),this.state=755,this.errorHandler.sync(this),e=this.tokenStream.LA(1),184===e&&(this.state=754,this.uuidClause()),this.state=758,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=757,this.clusterClause()),this.state=761,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,82,this.context)))this.state=760,this.tableSchemaClause();this.state=763,this.subqueryClause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}createStatement(){let e=new LF(this.context,this.state);this.enterRule(e,44,t.RULE_createStatement);try{switch(this.state=771,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,83,this.context)){case 1:this.enterOuterAlt(e,1),this.state=765,this.createDatabaseStatement();break;case 2:this.enterOuterAlt(e,2),this.state=766,this.createDictionaryStatement();break;case 3:this.enterOuterAlt(e,3),this.state=767,this.createLiveViewStatement();break;case 4:this.enterOuterAlt(e,4),this.state=768,this.createMaterializedViewStatement();break;case 5:this.enterOuterAlt(e,5),this.state=769,this.createTableStatement();break;case 6:this.enterOuterAlt(e,6),this.state=770,this.createViewStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dictionarySchemaClause(){let e,s=new CF(this.context,this.state);this.enterRule(s,46,t.RULE_dictionarySchemaClause);try{for(this.enterOuterAlt(s,1),this.state=773,this.match(t.LPAREN),this.state=774,this.dictionaryAttributeDefinition(),this.state=779,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=775,this.match(t.COMMA),this.state=776,this.dictionaryAttributeDefinition(),this.state=781,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=782,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dictionaryAttributeDefinition(){let e=new _F(this.context,this.state);this.enterRule(e,48,t.RULE_dictionaryAttributeDefinition);try{let s;for(this.enterOuterAlt(e,1),this.state=784,this.identifier(),this.state=785,this.columnTypeExpression(),this.state=807,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,86,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;){if(1===s)switch(this.state=805,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,85,this.context)){case 1:if(this.state=786,e.attrs.has("default"))throw this.createFailedPredicateException('!$attrs.has("default")');this.state=787,this.match(t.DEFAULT),this.state=788,this.literal(),e.attrs.add("default");break;case 2:if(this.state=791,e.attrs.has("expression"))throw this.createFailedPredicateException('!$attrs.has("expression")');this.state=792,this.match(t.EXPRESSION),this.state=793,this.columnExpression(0),e.attrs.add("expression");break;case 3:if(this.state=796,e.attrs.has("hierarchical"))throw this.createFailedPredicateException('!$attrs.has("hierarchical")');this.state=797,this.match(t.HIERARCHICAL),e.attrs.add("hierarchical");break;case 4:if(this.state=799,e.attrs.has("injective"))throw this.createFailedPredicateException('!$attrs.has("injective")');this.state=800,this.match(t.INJECTIVE),e.attrs.add("injective");break;case 5:if(this.state=802,e.attrs.has("is_object_id"))throw this.createFailedPredicateException('!$attrs.has("is_object_id")');this.state=803,this.match(t.IS_OBJECT_ID),e.attrs.add("is_object_id")}this.state=809,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,86,this.context)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dictionaryEngineClause(){let e=new PF(this.context,this.state);this.enterRule(e,50,t.RULE_dictionaryEngineClause);try{let t;if(this.enterOuterAlt(e,1),1===(this.state=811,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,87,this.context)))this.state=810,this.dictionaryPrimaryKeyClause();for(this.state=835,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,89,this.context);2!==t&&t!==ja.INVALID_ALT_NUMBER;){if(1===t)switch(this.state=833,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,88,this.context)){case 1:if(this.state=813,e.clauses.has("source"))throw this.createFailedPredicateException('!$clauses.has("source")');this.state=814,this.sourceClause(),e.clauses.add("source");break;case 2:if(this.state=817,e.clauses.has("lifetime"))throw this.createFailedPredicateException('!$clauses.has("lifetime")');this.state=818,this.lifetimeClause(),e.clauses.add("lifetime");break;case 3:if(this.state=821,e.clauses.has("layout"))throw this.createFailedPredicateException('!$clauses.has("layout")');this.state=822,this.layoutClause(),e.clauses.add("layout");break;case 4:if(this.state=825,e.clauses.has("range"))throw this.createFailedPredicateException('!$clauses.has("range")');this.state=826,this.rangeClause(),e.clauses.add("range");break;case 5:if(this.state=829,e.clauses.has("settings"))throw this.createFailedPredicateException('!$clauses.has("settings")');this.state=830,this.dictionarySettingsClause(),e.clauses.add("settings")}this.state=837,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,89,this.context)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dictionaryPrimaryKeyClause(){let e=new MF(this.context,this.state);this.enterRule(e,52,t.RULE_dictionaryPrimaryKeyClause);try{this.enterOuterAlt(e,1),this.state=838,this.match(t.PRIMARY),this.state=839,this.match(t.KEY),this.state=840,this.columnExpressionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dictionaryArgumentExpression(){let e,s=new dF(this.context,this.state);this.enterRule(s,54,t.RULE_dictionaryArgumentExpression);try{switch(this.enterOuterAlt(s,1),this.state=842,this.identifier(),this.state=849,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AFTER:case t.ALIAS:case t.ALL:case t.ALTER:case t.AND:case t.ANTI:case t.ANY:case t.ARRAY:case t.AS:case t.ASCENDING:case t.ASOF:case t.AST:case t.ASYNC:case t.ATTACH:case t.BETWEEN:case t.BOTH:case t.BY:case t.CASE:case t.CAST:case t.CHECK:case t.CLEAR:case t.CLUSTER:case t.CODEC:case t.COLLATE:case t.COLUMN:case t.COMMENT:case t.CONSTRAINT:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.DATABASE:case t.DATABASES:case t.DATE:case t.DAY:case t.DEDUPLICATE:case t.DEFAULT:case t.DELAY:case t.DELETE:case t.DESC:case t.DESCENDING:case t.DESCRIBE:case t.DETACH:case t.DICTIONARIES:case t.DICTIONARY:case t.DISK:case t.DISTINCT:case t.DISTRIBUTED:case t.DROP:case t.ELSE:case t.END:case t.ENGINE:case t.EVENTS:case t.EXISTS:case t.EXPLAIN:case t.EXPRESSION:case t.EXTRACT:case t.FETCHES:case t.FINAL:case t.FIRST:case t.FLUSH:case t.FOLLOWING:case t.FOR:case t.FORMAT:case t.FREEZE:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOBAL:case t.GRANULARITY:case t.GROUP:case t.HAVING:case t.HIERARCHICAL:case t.HOUR:case t.ID:case t.IF:case t.ILIKE:case t.IN:case t.INDEX:case t.INJECTIVE:case t.INNER:case t.INSERT:case t.INTERVAL:case t.INTO:case t.IS:case t.IS_OBJECT_ID:case t.JOIN:case t.KEY:case t.KILL:case t.LAST:case t.LAYOUT:case t.LEADING:case t.LEFT:case t.LIFETIME:case t.LIKE:case t.LIMIT:case t.LIVE:case t.LOCAL:case t.LOGS:case t.MATERIALIZE:case t.MATERIALIZED:case t.MAX:case t.MERGES:case t.MIN:case t.MINUTE:case t.MODIFY:case t.MONTH:case t.MOVE:case t.MUTATION:case t.NO:case t.NOT:case t.NULLS:case t.OFFSET:case t.ON:case t.OPTIMIZE:case t.OR:case t.ORDER:case t.OUTER:case t.OUTFILE:case t.OVER:case t.PARTITION:case t.POPULATE:case t.PRECEDING:case t.PREWHERE:case t.PRIMARY:case t.QUARTER:case t.RANGE:case t.RELOAD:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICA:case t.REPLICATED:case t.RIGHT:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SECOND:case t.SELECT:case t.SEMI:case t.SENDS:case t.SET:case t.SETTINGS:case t.SHOW:case t.SOURCE:case t.START:case t.STOP:case t.SUBSTRING:case t.SYNC:case t.SYNTAX:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TEMPORARY:case t.TEST:case t.THEN:case t.TIES:case t.TIMEOUT:case t.TIMESTAMP:case t.TO:case t.TOP:case t.TOTALS:case t.TRAILING:case t.TRIM:case t.TRUNCATE:case t.TTL:case t.TYPE:case t.UNBOUNDED:case t.UNION:case t.UPDATE:case t.USE:case t.USING:case t.UUID:case t.VALUES:case t.VIEW:case t.VOLUME:case t.WATCH:case t.WEEK:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.YEAR:case t.JSON_FALSE:case t.JSON_TRUE:case t.IDENTIFIER:this.state=843,this.identifier(),this.state=846,this.errorHandler.sync(this),e=this.tokenStream.LA(1),219===e&&(this.state=844,this.match(t.LPAREN),this.state=845,this.match(t.RPAREN));break;case t.INF:case t.NAN_SQL:case t.NULL_SQL:case t.FLOATING_LITERAL:case t.OCTAL_LITERAL:case t.DECIMAL_LITERAL:case t.HEXADECIMAL_LITERAL:case t.STRING_LITERAL:case t.DASH:case t.DOT:case t.PLUS:this.state=848,this.literal();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sourceClause(){let e,s=new UF(this.context,this.state);this.enterRule(s,56,t.RULE_sourceClause);try{for(this.enterOuterAlt(s,1),this.state=851,this.match(t.SOURCE),this.state=852,this.match(t.LPAREN),this.state=853,this.identifier(),this.state=854,this.match(t.LPAREN),this.state=858,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(-32&e)&&1<<e&4294967292||!(e-32&-32)&&1<<e-32&4290772991||!(e-64&-32)&&1<<e-64&4294705151||!(e-96&-32)&&1<<e-96&2146303999||!(e-129&-32)&&1<<e-129&4294967215||!(e-161&-32)&&1<<e-161&4294950911||!(e-193&-32)&&1<<e-193&31;)this.state=855,this.dictionaryArgumentExpression(),this.state=860,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=861,this.match(t.RPAREN),this.state=862,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}lifetimeClause(){let e=new mF(this.context,this.state);this.enterRule(e,58,t.RULE_lifetimeClause);try{switch(this.enterOuterAlt(e,1),this.state=864,this.match(t.LIFETIME),this.state=865,this.match(t.LPAREN),this.state=875,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DECIMAL_LITERAL:this.state=866,this.match(t.DECIMAL_LITERAL);break;case t.MIN:this.state=867,this.match(t.MIN),this.state=868,this.match(t.DECIMAL_LITERAL),this.state=869,this.match(t.MAX),this.state=870,this.match(t.DECIMAL_LITERAL);break;case t.MAX:this.state=871,this.match(t.MAX),this.state=872,this.match(t.DECIMAL_LITERAL),this.state=873,this.match(t.MIN),this.state=874,this.match(t.DECIMAL_LITERAL);break;default:throw new Ei(this)}this.state=877,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}layoutClause(){let e,s=new DF(this.context,this.state);this.enterRule(s,60,t.RULE_layoutClause);try{for(this.enterOuterAlt(s,1),this.state=879,this.match(t.LAYOUT),this.state=880,this.match(t.LPAREN),this.state=881,this.identifier(),this.state=882,this.match(t.LPAREN),this.state=886,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(-32&e)&&1<<e&4294967292||!(e-32&-32)&&1<<e-32&4290772991||!(e-64&-32)&&1<<e-64&4294705151||!(e-96&-32)&&1<<e-96&2146303999||!(e-129&-32)&&1<<e-129&4294967215||!(e-161&-32)&&1<<e-161&4294950911||!(e-193&-32)&&1<<e-193&31;)this.state=883,this.dictionaryArgumentExpression(),this.state=888,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=889,this.match(t.RPAREN),this.state=890,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}rangeClause(){let e=new pF(this.context,this.state);this.enterRule(e,62,t.RULE_rangeClause);try{switch(this.enterOuterAlt(e,1),this.state=892,this.match(t.RANGE),this.state=893,this.match(t.LPAREN),this.state=904,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.MIN:this.state=894,this.match(t.MIN),this.state=895,this.identifier(),this.state=896,this.match(t.MAX),this.state=897,this.identifier();break;case t.MAX:this.state=899,this.match(t.MAX),this.state=900,this.identifier(),this.state=901,this.match(t.MIN),this.state=902,this.identifier();break;default:throw new Ei(this)}this.state=906,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}dictionarySettingsClause(){let e=new gF(this.context,this.state);this.enterRule(e,64,t.RULE_dictionarySettingsClause);try{this.enterOuterAlt(e,1),this.state=908,this.match(t.SETTINGS),this.state=909,this.match(t.LPAREN),this.state=910,this.settingExpressionList(),this.state=911,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}clusterClause(){let e=new xF(this.context,this.state);this.enterRule(e,66,t.RULE_clusterClause);try{switch(this.enterOuterAlt(e,1),this.state=913,this.match(t.ON),this.state=914,this.match(t.CLUSTER),this.state=917,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AFTER:case t.ALIAS:case t.ALL:case t.ALTER:case t.AND:case t.ANTI:case t.ANY:case t.ARRAY:case t.AS:case t.ASCENDING:case t.ASOF:case t.AST:case t.ASYNC:case t.ATTACH:case t.BETWEEN:case t.BOTH:case t.BY:case t.CASE:case t.CAST:case t.CHECK:case t.CLEAR:case t.CLUSTER:case t.CODEC:case t.COLLATE:case t.COLUMN:case t.COMMENT:case t.CONSTRAINT:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.DATABASE:case t.DATABASES:case t.DATE:case t.DAY:case t.DEDUPLICATE:case t.DEFAULT:case t.DELAY:case t.DELETE:case t.DESC:case t.DESCENDING:case t.DESCRIBE:case t.DETACH:case t.DICTIONARIES:case t.DICTIONARY:case t.DISK:case t.DISTINCT:case t.DISTRIBUTED:case t.DROP:case t.ELSE:case t.END:case t.ENGINE:case t.EVENTS:case t.EXISTS:case t.EXPLAIN:case t.EXPRESSION:case t.EXTRACT:case t.FETCHES:case t.FINAL:case t.FIRST:case t.FLUSH:case t.FOLLOWING:case t.FOR:case t.FORMAT:case t.FREEZE:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOBAL:case t.GRANULARITY:case t.GROUP:case t.HAVING:case t.HIERARCHICAL:case t.HOUR:case t.ID:case t.IF:case t.ILIKE:case t.IN:case t.INDEX:case t.INJECTIVE:case t.INNER:case t.INSERT:case t.INTERVAL:case t.INTO:case t.IS:case t.IS_OBJECT_ID:case t.JOIN:case t.KEY:case t.KILL:case t.LAST:case t.LAYOUT:case t.LEADING:case t.LEFT:case t.LIFETIME:case t.LIKE:case t.LIMIT:case t.LIVE:case t.LOCAL:case t.LOGS:case t.MATERIALIZE:case t.MATERIALIZED:case t.MAX:case t.MERGES:case t.MIN:case t.MINUTE:case t.MODIFY:case t.MONTH:case t.MOVE:case t.MUTATION:case t.NO:case t.NOT:case t.NULLS:case t.OFFSET:case t.ON:case t.OPTIMIZE:case t.OR:case t.ORDER:case t.OUTER:case t.OUTFILE:case t.OVER:case t.PARTITION:case t.POPULATE:case t.PRECEDING:case t.PREWHERE:case t.PRIMARY:case t.QUARTER:case t.RANGE:case t.RELOAD:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICA:case t.REPLICATED:case t.RIGHT:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SECOND:case t.SELECT:case t.SEMI:case t.SENDS:case t.SET:case t.SETTINGS:case t.SHOW:case t.SOURCE:case t.START:case t.STOP:case t.SUBSTRING:case t.SYNC:case t.SYNTAX:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TEMPORARY:case t.TEST:case t.THEN:case t.TIES:case t.TIMEOUT:case t.TIMESTAMP:case t.TO:case t.TOP:case t.TOTALS:case t.TRAILING:case t.TRIM:case t.TRUNCATE:case t.TTL:case t.TYPE:case t.UNBOUNDED:case t.UNION:case t.UPDATE:case t.USE:case t.USING:case t.UUID:case t.VALUES:case t.VIEW:case t.VOLUME:case t.WATCH:case t.WEEK:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.YEAR:case t.JSON_FALSE:case t.JSON_TRUE:case t.IDENTIFIER:this.state=915,this.identifier();break;case t.STRING_LITERAL:this.state=916,this.match(t.STRING_LITERAL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}uuidClause(){let e=new kF(this.context,this.state);this.enterRule(e,68,t.RULE_uuidClause);try{this.enterOuterAlt(e,1),this.state=919,this.match(t.UUID),this.state=920,this.match(t.STRING_LITERAL)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}destinationClause(){let e=new HF(this.context,this.state);this.enterRule(e,70,t.RULE_destinationClause);try{this.enterOuterAlt(e,1),this.state=922,this.match(t.TO),this.state=923,this.tableIdentifier()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}subqueryClause(){let e=new GF(this.context,this.state);this.enterRule(e,72,t.RULE_subqueryClause);try{this.enterOuterAlt(e,1),this.state=925,this.match(t.AS),this.state=926,this.selectUnionStatement()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableSchemaClause(){let e,s=new FF(this.context,this.state);this.enterRule(s,74,t.RULE_tableSchemaClause);try{switch(this.state=943,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,98,this.context)){case 1:for(s=new yF(s),this.enterOuterAlt(s,1),this.state=928,this.match(t.LPAREN),this.state=929,this.tableElementExpression(),this.state=934,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=930,this.match(t.COMMA),this.state=931,this.tableElementExpression(),this.state=936,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=937,this.match(t.RPAREN);break;case 2:s=new vF(s),this.enterOuterAlt(s,2),this.state=939,this.match(t.AS),this.state=940,this.tableIdentifier();break;case 3:s=new BF(s),this.enterOuterAlt(s,3),this.state=941,this.match(t.AS),this.state=942,this.tableFunctionExpression()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}engineClause(){let e=new fF(this.context,this.state);this.enterRule(e,76,t.RULE_engineClause);try{let t;for(this.enterOuterAlt(e,1),this.state=945,this.engineExpression(),this.state=972,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,100,this.context);2!==t&&t!==ja.INVALID_ALT_NUMBER;){if(1===t)switch(this.state=970,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,99,this.context)){case 1:if(this.state=946,e.clauses.has("orderByClause"))throw this.createFailedPredicateException('!$clauses.has("orderByClause")');this.state=947,this.orderByClause(),e.clauses.add("orderByClause");break;case 2:if(this.state=950,e.clauses.has("partitionByClause"))throw this.createFailedPredicateException('!$clauses.has("partitionByClause")');this.state=951,this.partitionByClause(),e.clauses.add("partitionByClause");break;case 3:if(this.state=954,e.clauses.has("primaryKeyClause"))throw this.createFailedPredicateException('!$clauses.has("primaryKeyClause")');this.state=955,this.primaryKeyClause(),e.clauses.add("primaryKeyClause");break;case 4:if(this.state=958,e.clauses.has("sampleByClause"))throw this.createFailedPredicateException('!$clauses.has("sampleByClause")');this.state=959,this.sampleByClause(),e.clauses.add("sampleByClause");break;case 5:if(this.state=962,e.clauses.has("ttlClause"))throw this.createFailedPredicateException('!$clauses.has("ttlClause")');this.state=963,this.ttlClause(),e.clauses.add("ttlClause");break;case 6:if(this.state=966,e.clauses.has("settingsClause"))throw this.createFailedPredicateException('!$clauses.has("settingsClause")');this.state=967,this.settingsClause(),e.clauses.add("settingsClause")}this.state=974,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,100,this.context)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}partitionByClause(){let e=new YF(this.context,this.state);this.enterRule(e,78,t.RULE_partitionByClause);try{this.enterOuterAlt(e,1),this.state=975,this.match(t.PARTITION),this.state=976,this.match(t.BY),this.state=977,this.columnExpression(0)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}primaryKeyClause(){let e=new wF(this.context,this.state);this.enterRule(e,80,t.RULE_primaryKeyClause);try{this.enterOuterAlt(e,1),this.state=979,this.match(t.PRIMARY),this.state=980,this.match(t.KEY),this.state=981,this.columnExpression(0)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sampleByClause(){let e=new bF(this.context,this.state);this.enterRule(e,82,t.RULE_sampleByClause);try{this.enterOuterAlt(e,1),this.state=983,this.match(t.SAMPLE),this.state=984,this.match(t.BY),this.state=985,this.columnExpression(0)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ttlClause(){let e=new WF(this.context,this.state);this.enterRule(e,84,t.RULE_ttlClause);try{let s;for(this.enterOuterAlt(e,1),this.state=987,this.match(t.TTL),this.state=988,this.ttlExpression(),this.state=993,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,101,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=989,this.match(t.COMMA),this.state=990,this.ttlExpression()),this.state=995,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,101,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}engineExpression(){let e,s=new VF(this.context,this.state);this.enterRule(s,86,t.RULE_engineExpression);try{if(1===(this.enterOuterAlt(s,1),this.state=996,this.match(t.ENGINE),this.state=998,this.errorHandler.sync(this),e=this.tokenStream.LA(1),213===e&&(this.state=997,this.match(t.EQ_SINGLE)),this.state=1e3,this.identifierOrNull(),this.state=1006,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,104,this.context)))this.state=1001,this.match(t.LPAREN),this.state=1003,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&4294967292||!(e-32&-32)&&1<<e-32&4290772991||!(e-64&-32)&&1<<e-64&4294967295||!(e-96&-32)&&1<<e-96&2147483647||!(e-129&-32)&&1<<e-129&4294967215||!(e-161&-32)&&1<<e-161&4294950911||!(e-193&-32)&&1<<e-193&1158024191)&&(this.state=1002,this.columnExpressionList()),this.state=1005,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableElementExpression(){let e=new XF(this.context,this.state);this.enterRule(e,88,t.RULE_tableElementExpression);try{switch(this.state=1018,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,105,this.context)){case 1:e=new KF(e),this.enterOuterAlt(e,1),this.state=1008,this.tableColumnDefinition();break;case 2:e=new QF(e),this.enterOuterAlt(e,2),this.state=1009,this.match(t.CONSTRAINT),this.state=1010,this.identifier(),this.state=1011,this.match(t.CHECK),this.state=1012,this.columnExpression(0);break;case 3:e=new JF(e),this.enterOuterAlt(e,3),this.state=1014,this.match(t.INDEX),this.state=1015,this.tableIndexDefinition();break;case 4:e=new ZF(e),this.enterOuterAlt(e,4),this.state=1016,this.match(t.PROJECTION),this.state=1017,this.tableProjectionDefinition()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableColumnDefinition(){let e,s=new qF(this.context,this.state);this.enterRule(s,90,t.RULE_tableColumnDefinition);try{switch(this.state=1052,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,114,this.context)){case 1:this.enterOuterAlt(s,1),this.state=1020,this.columnIdentifier(),this.state=1021,this.columnTypeExpression(),this.state=1023,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(3===e||38===e||104===e)&&(this.state=1022,this.tableColumnPropertyExpression()),this.state=1027,this.errorHandler.sync(this),e=this.tokenStream.LA(1),27===e&&(this.state=1025,this.match(t.COMMENT),this.state=1026,this.match(t.STRING_LITERAL)),this.state=1030,this.errorHandler.sync(this),e=this.tokenStream.LA(1),24===e&&(this.state=1029,this.codecExpression()),this.state=1034,this.errorHandler.sync(this),e=this.tokenStream.LA(1),177===e&&(this.state=1032,this.match(t.TTL),this.state=1033,this.columnExpression(0));break;case 2:if(this.enterOuterAlt(s,2),1===(this.state=1036,this.columnIdentifier(),this.state=1038,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,110,this.context)))this.state=1037,this.columnTypeExpression();this.state=1040,this.tableColumnPropertyExpression(),this.state=1043,this.errorHandler.sync(this),e=this.tokenStream.LA(1),27===e&&(this.state=1041,this.match(t.COMMENT),this.state=1042,this.match(t.STRING_LITERAL)),this.state=1046,this.errorHandler.sync(this),e=this.tokenStream.LA(1),24===e&&(this.state=1045,this.codecExpression()),this.state=1050,this.errorHandler.sync(this),e=this.tokenStream.LA(1),177===e&&(this.state=1048,this.match(t.TTL),this.state=1049,this.columnExpression(0))}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableColumnPropertyExpression(){let e,s=new jF(this.context,this.state);this.enterRule(s,92,t.RULE_tableColumnPropertyExpression);try{this.enterOuterAlt(s,1),this.state=1054,e=this.tokenStream.LA(1),3===e||38===e||104===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1055,this.columnExpression(0)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableIndexDefinition(){let e=new zF(this.context,this.state);this.enterRule(e,94,t.RULE_tableIndexDefinition);try{this.enterOuterAlt(e,1),this.state=1057,this.columnIdentifier(),this.state=1058,this.columnExpression(0),this.state=1059,this.match(t.TYPE),this.state=1060,this.columnTypeExpression(),this.state=1061,this.match(t.GRANULARITY),this.state=1062,this.match(t.DECIMAL_LITERAL)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableProjectionDefinition(){let e=new $F(this.context,this.state);this.enterRule(e,96,t.RULE_tableProjectionDefinition);try{this.enterOuterAlt(e,1),this.state=1064,this.columnIdentifier(),this.state=1065,this.projectionSelectStatement()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}codecExpression(){let e,s=new tv(this.context,this.state);this.enterRule(s,98,t.RULE_codecExpression);try{for(this.enterOuterAlt(s,1),this.state=1067,this.match(t.CODEC),this.state=1068,this.match(t.LPAREN),this.state=1069,this.codecArgExpression(),this.state=1074,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=1070,this.match(t.COMMA),this.state=1071,this.codecArgExpression(),this.state=1076,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1077,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}codecArgExpression(){let e,s=new ev(this.context,this.state);this.enterRule(s,100,t.RULE_codecArgExpression);try{this.enterOuterAlt(s,1),this.state=1079,this.identifier(),this.state=1085,this.errorHandler.sync(this),e=this.tokenStream.LA(1),219===e&&(this.state=1080,this.match(t.LPAREN),this.state=1082,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&4294967292||!(e-32&-32)&&1<<e-32&4290772991||!(e-64&-32)&&1<<e-64&4294967295||!(e-96&-32)&&1<<e-96&2147483647||!(e-129&-32)&&1<<e-129&4294967215||!(e-161&-32)&&1<<e-161&4294950911||!(e-193&-32)&&1<<e-193&1158024191)&&(this.state=1081,this.columnExpressionList()),this.state=1084,this.match(t.RPAREN))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}ttlExpression(){let e=new sv(this.context,this.state);this.enterRule(e,102,t.RULE_ttlExpression);try{switch(this.enterOuterAlt(e,1),this.state=1087,this.columnExpression(0),this.state=1095,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,118,this.context)){case 1:this.state=1088,this.match(t.DELETE);break;case 2:this.state=1089,this.match(t.TO),this.state=1090,this.match(t.DISK),this.state=1091,this.match(t.STRING_LITERAL);break;case 3:this.state=1092,this.match(t.TO),this.state=1093,this.match(t.VOLUME),this.state=1094,this.match(t.STRING_LITERAL)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}describeStatement(){let e,s=new av(this.context,this.state);this.enterRule(s,104,t.RULE_describeStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=1097,e=this.tokenStream.LA(1),41===e||43===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1099,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,119,this.context)))this.state=1098,this.match(t.TABLE);this.state=1101,this.tableExpression(0)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dropStatement(){let e,s=new rv(this.context,this.state);this.enterRule(s,106,t.RULE_dropStatement);try{switch(this.state=1134,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,127,this.context)){case 1:if(s=new iv(s),this.enterOuterAlt(s,1),1===(this.state=1103,e=this.tokenStream.LA(1),44===e||50===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1104,this.match(t.DATABASE),this.state=1107,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,120,this.context)))this.state=1105,this.match(t.IF),this.state=1106,this.match(t.EXISTS);this.state=1109,this.databaseIdentifier(),this.state=1111,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=1110,this.clusterClause());break;case 2:switch(s=new cv(s),this.enterOuterAlt(s,2),this.state=1113,e=this.tokenStream.LA(1),44===e||50===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1120,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DICTIONARY:this.state=1114,this.match(t.DICTIONARY);break;case t.TABLE:case t.TEMPORARY:this.state=1116,this.errorHandler.sync(this),e=this.tokenStream.LA(1),164===e&&(this.state=1115,this.match(t.TEMPORARY)),this.state=1118,this.match(t.TABLE);break;case t.VIEW:this.state=1119,this.match(t.VIEW);break;default:throw new Ei(this)}if(1===(this.state=1124,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,124,this.context)))this.state=1122,this.match(t.IF),this.state=1123,this.match(t.EXISTS);this.state=1126,this.tableIdentifier(),this.state=1128,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=1127,this.clusterClause()),this.state=1132,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=1130,this.match(t.NO),this.state=1131,this.match(t.DELAY))}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}existsStatement(){let e,s=new nv(this.context,this.state);this.enterRule(s,108,t.RULE_existsStatement);try{switch(this.state=1149,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,130,this.context)){case 1:s=new hv(s),this.enterOuterAlt(s,1),this.state=1136,this.match(t.EXISTS),this.state=1137,this.match(t.DATABASE),this.state=1138,this.databaseIdentifier();break;case 2:switch(s=new Ev(s),this.enterOuterAlt(s,2),this.state=1139,this.match(t.EXISTS),this.state=1146,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,129,this.context)){case 1:this.state=1140,this.match(t.DICTIONARY);break;case 2:this.state=1142,this.errorHandler.sync(this),e=this.tokenStream.LA(1),164===e&&(this.state=1141,this.match(t.TEMPORARY)),this.state=1144,this.match(t.TABLE);break;case 3:this.state=1145,this.match(t.VIEW)}this.state=1148,this.tableIdentifier()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}explainStatement(){let e=new Tv(this.context,this.state);this.enterRule(e,110,t.RULE_explainStatement);try{switch(this.state=1172,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,131,this.context)){case 1:e=new Sv(e),this.enterOuterAlt(e,1),this.state=1151,this.match(t.EXPLAIN),this.state=1152,this.notInsertStatement();break;case 2:e=new ov(e),this.enterOuterAlt(e,2),this.state=1153,this.match(t.EXPLAIN),this.state=1154,this.match(t.AST),this.state=1155,this.notInsertStatement();break;case 3:e=new Ov(e),this.enterOuterAlt(e,3),this.state=1156,this.match(t.EXPLAIN),this.state=1157,this.match(t.SYNTAX),this.state=1158,this.notInsertStatement();break;case 4:e=new Iv(e),this.enterOuterAlt(e,4),this.state=1159,this.match(t.EXPLAIN),this.state=1160,this.match(t.PIPELINE),this.state=1161,this.notInsertStatement();break;case 5:e=new Av(e),this.enterOuterAlt(e,5),this.state=1162,this.match(t.EXPLAIN),this.state=1163,this.match(t.PLAN),this.state=1164,this.notInsertStatement();break;case 6:e=new Rv(e),this.enterOuterAlt(e,6),this.state=1165,this.match(t.EXPLAIN),this.state=1166,this.match(t.QUERY),this.state=1167,this.match(t.TREE),this.state=1168,this.notInsertStatement();break;case 7:e=new lv(e),this.enterOuterAlt(e,7),this.state=1169,this.match(t.EXPLAIN),this.state=1170,this.match(t.ESTIMATE),this.state=1171,this.notInsertStatement()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}insertStatement(){let e=new uv(this.context,this.state);this.enterRule(e,112,t.RULE_insertStatement);try{if(this.enterOuterAlt(e,1),1===(this.state=1174,this.match(t.INSERT),this.state=1175,this.match(t.INTO),this.state=1177,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,132,this.context)))this.state=1176,this.match(t.TABLE);switch(this.state=1182,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,133,this.context)){case 1:this.state=1179,this.tableIdentifier();break;case 2:this.state=1180,this.match(t.FUNCTION),this.state=1181,this.tableFunctionExpression()}if(1===(this.state=1185,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,134,this.context)))this.state=1184,this.columnsClause();this.state=1187,this.dataClause()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}columnsClause(){let e,s=new Nv(this.context,this.state);this.enterRule(s,114,t.RULE_columnsClause);try{for(this.enterOuterAlt(s,1),this.state=1189,this.match(t.LPAREN),this.state=1190,this.columnIdentifier(),this.state=1195,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=1191,this.match(t.COMMA),this.state=1192,this.columnIdentifier(),this.state=1197,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1198,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dataClause(){let e,s=new Lv(this.context,this.state);this.enterRule(s,116,t.RULE_dataClause);try{switch(this.state=1209,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FORMAT:s=new _v(s),this.enterOuterAlt(s,1),this.state=1200,this.match(t.FORMAT),this.state=1201,this.identifier();break;case t.VALUES:s=new Cv(s),this.enterOuterAlt(s,2),this.state=1202,this.valuesStatement();break;case t.SELECT:case t.WITH:case t.LPAREN:s=new Pv(s),this.enterOuterAlt(s,3),this.state=1203,this.selectUnionStatement(),this.state=1205,this.errorHandler.sync(this),e=this.tokenStream.LA(1),230===e&&(this.state=1204,this.match(t.SEMICOLON)),this.state=1207,this.match(t.EOF);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}valuesStatement(){let e,s=new Mv(this.context,this.state);this.enterRule(s,118,t.RULE_valuesStatement);try{for(this.enterOuterAlt(s,1),this.state=1211,this.match(t.VALUES),this.state=1212,this.match(t.LPAREN),this.state=1214,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(82===e||113===e||116===e||!(e-198&-32)&&1<<e-198&33566751)&&(this.state=1213,this.literal()),this.state=1216,this.match(t.RPAREN),this.state=1225,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=1217,this.match(t.COMMA),this.state=1218,this.match(t.LPAREN),this.state=1220,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(82===e||113===e||116===e||!(e-198&-32)&&1<<e-198&33566751)&&(this.state=1219,this.literal()),this.state=1222,this.match(t.RPAREN),this.state=1227,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}killStatement(){let e,s=new dv(this.context,this.state);this.enterRule(s,120,t.RULE_killStatement);try{s=new Uv(s),this.enterOuterAlt(s,1),this.state=1228,this.match(t.KILL),this.state=1229,this.match(t.MUTATION),this.state=1231,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=1230,this.clusterClause()),this.state=1233,this.whereClause(),this.state=1235,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(14===e||159===e||165===e)&&(this.state=1234,e=this.tokenStream.LA(1),14===e||159===e||165===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}optimizeStatement(){let e,s=new mv(this.context,this.state);this.enterRule(s,122,t.RULE_optimizeStatement);try{this.enterOuterAlt(s,1),this.state=1237,this.match(t.OPTIMIZE),this.state=1238,this.match(t.TABLE),this.state=1239,this.tableIdentifier(),this.state=1241,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=1240,this.clusterClause()),this.state=1244,this.errorHandler.sync(this),e=this.tokenStream.LA(1),126===e&&(this.state=1243,this.partitionClause()),this.state=1247,this.errorHandler.sync(this),e=this.tokenStream.LA(1),61===e&&(this.state=1246,this.match(t.FINAL)),this.state=1250,this.errorHandler.sync(this),e=this.tokenStream.LA(1),37===e&&(this.state=1249,this.match(t.DEDUPLICATE))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}renameStatement(){let e,s=new Dv(this.context,this.state);this.enterRule(s,124,t.RULE_renameStatement);try{for(this.enterOuterAlt(s,1),this.state=1252,this.match(t.RENAME),this.state=1253,this.match(t.TABLE),this.state=1254,this.tableIdentifier(),this.state=1255,this.match(t.TO),this.state=1256,this.tableIdentifier(),this.state=1264,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=1257,this.match(t.COMMA),this.state=1258,this.tableIdentifier(),this.state=1259,this.match(t.TO),this.state=1260,this.tableIdentifier(),this.state=1266,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1268,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=1267,this.clusterClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}projectionSelectStatement(){let e,s=new pv(this.context,this.state);this.enterRule(s,126,t.RULE_projectionSelectStatement);try{this.enterOuterAlt(s,1),this.state=1270,this.match(t.LPAREN),this.state=1272,this.errorHandler.sync(this),e=this.tokenStream.LA(1),193===e&&(this.state=1271,this.withClause()),this.state=1274,this.match(t.SELECT),this.state=1275,this.columnExpressionList(),this.state=1277,this.errorHandler.sync(this),e=this.tokenStream.LA(1),73===e&&(this.state=1276,this.groupByClause()),this.state=1280,this.errorHandler.sync(this),e=this.tokenStream.LA(1),122===e&&(this.state=1279,this.projectionOrderByClause()),this.state=1282,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}selectUnionStatement(){let e,s=new gv(this.context,this.state);this.enterRule(s,128,t.RULE_selectUnionStatement);try{for(this.enterOuterAlt(s,1),this.state=1284,this.selectStatementWithParentheses(),this.state=1290,this.errorHandler.sync(this),e=this.tokenStream.LA(1);180===e;)this.state=1285,this.match(t.UNION),this.state=1286,this.match(t.ALL),this.state=1287,this.selectStatementWithParentheses(),this.state=1292,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}selectStatementWithParentheses(){let e=new xv(this.context,this.state);this.enterRule(e,130,t.RULE_selectStatementWithParentheses);try{switch(this.state=1298,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SELECT:case t.WITH:this.enterOuterAlt(e,1),this.state=1293,this.selectStatement();break;case t.LPAREN:this.enterOuterAlt(e,2),this.state=1294,this.match(t.LPAREN),this.state=1295,this.selectUnionStatement(),this.state=1296,this.match(t.RPAREN);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}selectStatement(){let e,s=new kv(this.context,this.state);this.enterRule(s,132,t.RULE_selectStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=1301,this.errorHandler.sync(this),e=this.tokenStream.LA(1),193===e&&(this.state=1300,this.withClause()),this.state=1303,this.match(t.SELECT),this.state=1305,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,155,this.context)))this.state=1304,this.match(t.DISTINCT);if(1===(this.state=1308,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,156,this.context)))this.state=1307,this.topClause();if(1===(this.state=1310,this.columnExpressionList(),this.state=1312,this.errorHandler.sync(this),e=this.tokenStream.LA(1),68===e&&(this.state=1311,this.fromClause()),this.state=1315,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(9===e||84===e||96===e)&&(this.state=1314,this.arrayJoinClause()),this.state=1318,this.errorHandler.sync(this),e=this.tokenStream.LA(1),192===e&&(this.state=1317,this.windowClause()),this.state=1321,this.errorHandler.sync(this),e=this.tokenStream.LA(1),131===e&&(this.state=1320,this.prewhereClause()),this.state=1324,this.errorHandler.sync(this),e=this.tokenStream.LA(1),191===e&&(this.state=1323,this.whereClause()),this.state=1327,this.errorHandler.sync(this),e=this.tokenStream.LA(1),73===e&&(this.state=1326,this.groupByClause()),this.state=1331,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,163,this.context)))this.state=1329,this.match(t.WITH),this.state=1330,e=this.tokenStream.LA(1),31===e||144===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);if(1===(this.state=1335,this.errorHandler.sync(this),e=this.tokenStream.LA(1),193===e&&(this.state=1333,this.match(t.WITH),this.state=1334,this.match(t.TOTALS)),this.state=1338,this.errorHandler.sync(this),e=this.tokenStream.LA(1),74===e&&(this.state=1337,this.havingClause()),this.state=1341,this.errorHandler.sync(this),e=this.tokenStream.LA(1),122===e&&(this.state=1340,this.orderByClause()),this.state=1344,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,167,this.context)))this.state=1343,this.limitByClause();this.state=1347,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e&&(this.state=1346,this.limitClause()),this.state=1350,this.errorHandler.sync(this),e=this.tokenStream.LA(1),153===e&&(this.state=1349,this.settingsClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}withClause(){let e=new Hv(this.context,this.state);this.enterRule(e,134,t.RULE_withClause);try{this.enterOuterAlt(e,1),this.state=1352,this.match(t.WITH),this.state=1353,this.columnExpressionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}topClause(){let e=new Gv(this.context,this.state);this.enterRule(e,136,t.RULE_topClause);try{if(1===(this.enterOuterAlt(e,1),this.state=1355,this.match(t.TOP),this.state=1356,this.match(t.DECIMAL_LITERAL),this.state=1359,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,170,this.context)))this.state=1357,this.match(t.WITH),this.state=1358,this.match(t.TIES)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}fromClause(){let e=new Fv(this.context,this.state);this.enterRule(e,138,t.RULE_fromClause);try{this.enterOuterAlt(e,1),this.state=1361,this.match(t.FROM),this.state=1362,this.joinExpression(0)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}arrayJoinClause(){let e,s=new vv(this.context,this.state);this.enterRule(s,140,t.RULE_arrayJoinClause);try{this.enterOuterAlt(s,1),this.state=1365,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(84===e||96===e)&&(this.state=1364,e=this.tokenStream.LA(1),84===e||96===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=1367,this.match(t.ARRAY),this.state=1368,this.match(t.JOIN),this.state=1369,this.columnExpressionList()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}windowClause(){let e=new Bv(this.context,this.state);this.enterRule(e,142,t.RULE_windowClause);try{this.enterOuterAlt(e,1),this.state=1371,this.match(t.WINDOW),this.state=1372,this.identifier(),this.state=1373,this.match(t.AS),this.state=1374,this.match(t.LPAREN),this.state=1375,this.windowExpression(),this.state=1376,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}prewhereClause(){let e=new yv(this.context,this.state);this.enterRule(e,144,t.RULE_prewhereClause);try{this.enterOuterAlt(e,1),this.state=1378,this.match(t.PREWHERE),this.state=1379,this.columnExpression(0)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}whereClause(){let e=new fv(this.context,this.state);this.enterRule(e,146,t.RULE_whereClause);try{this.enterOuterAlt(e,1),this.state=1381,this.match(t.WHERE),this.state=1382,this.columnExpression(0)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}groupByClause(){let e,s=new Yv(this.context,this.state);this.enterRule(s,148,t.RULE_groupByClause);try{switch(this.enterOuterAlt(s,1),this.state=1384,this.match(t.GROUP),this.state=1385,this.match(t.BY),this.state=1392,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,172,this.context)){case 1:this.state=1386,e=this.tokenStream.LA(1),31===e||144===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1387,this.match(t.LPAREN),this.state=1388,this.columnExpressionList(),this.state=1389,this.match(t.RPAREN);break;case 2:this.state=1391,this.columnExpressionList()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}havingClause(){let e=new wv(this.context,this.state);this.enterRule(e,150,t.RULE_havingClause);try{this.enterOuterAlt(e,1),this.state=1394,this.match(t.HAVING),this.state=1395,this.columnExpression(0)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}orderByClause(){let e=new bv(this.context,this.state);this.enterRule(e,152,t.RULE_orderByClause);try{this.enterOuterAlt(e,1),this.state=1397,this.match(t.ORDER),this.state=1398,this.match(t.BY),this.state=1399,this.orderExpressionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}projectionOrderByClause(){let e=new Wv(this.context,this.state);this.enterRule(e,154,t.RULE_projectionOrderByClause);try{this.enterOuterAlt(e,1),this.state=1401,this.match(t.ORDER),this.state=1402,this.match(t.BY),this.state=1403,this.columnExpressionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}limitByClause(){let e=new Vv(this.context,this.state);this.enterRule(e,156,t.RULE_limitByClause);try{this.enterOuterAlt(e,1),this.state=1405,this.match(t.LIMIT),this.state=1406,this.limitExpression(),this.state=1407,this.match(t.BY),this.state=1408,this.columnExpressionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}limitClause(){let e,s=new Xv(this.context,this.state);this.enterRule(s,158,t.RULE_limitClause);try{this.enterOuterAlt(s,1),this.state=1410,this.match(t.LIMIT),this.state=1411,this.limitExpression(),this.state=1414,this.errorHandler.sync(this),e=this.tokenStream.LA(1),193===e&&(this.state=1412,this.match(t.WITH),this.state=1413,this.match(t.TIES))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}settingsClause(){let e=new Kv(this.context,this.state);this.enterRule(e,160,t.RULE_settingsClause);try{this.enterOuterAlt(e,1),this.state=1416,this.match(t.SETTINGS),this.state=1417,this.settingExpressionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}joinExpression(e){void 0===e&&(e=0);let s,a=this.context,r=this.state,i=new Qv(this.context,r),c=i;this.enterRecursionRule(i,162,t.RULE_joinExpression,e);try{let e;switch(this.enterOuterAlt(i,1),this.state=1431,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,176,this.context)){case 1:if(1===(i=new Zv(i),this.context=i,c=i,this.state=1420,this.tableExpression(0),this.state=1422,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,174,this.context)))this.state=1421,this.match(t.FINAL);if(1===(this.state=1425,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,175,this.context)))this.state=1424,this.sampleClause();break;case 2:i=new Jv(i),this.context=i,c=i,this.state=1427,this.match(t.LPAREN),this.state=1428,this.joinExpression(0),this.state=1429,this.match(t.RPAREN)}for(this.context.stop=this.tokenStream.LT(-1),this.state=1450,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,180,this.context);2!==e&&e!==ja.INVALID_ALT_NUMBER;){if(1===e)switch(null!=this.parseListeners&&this.triggerExitRuleEvent(),c=i,this.state=1448,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,179,this.context)){case 1:if(i=new qv(new Qv(a,r)),this.pushNewRecursionContext(i,162,t.RULE_joinExpression),this.state=1433,!this.precpred(this.context,3))throw this.createFailedPredicateException("this.precpred(this.context, 3)");this.state=1434,this.joinOperatorCross(),this.state=1435,this.joinExpression(4);break;case 2:if(i=new jv(new Qv(a,r)),this.pushNewRecursionContext(i,162,t.RULE_joinExpression),this.state=1437,!this.precpred(this.context,4))throw this.createFailedPredicateException("this.precpred(this.context, 4)");this.state=1439,this.errorHandler.sync(this),s=this.tokenStream.LA(1),(71===s||101===s)&&(this.state=1438,s=this.tokenStream.LA(1),71===s||101===s?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=1442,this.errorHandler.sync(this),s=this.tokenStream.LA(1),(!(-32&s)&&1<<s&4496||!(s-69&-32)&&1<<s-69&134250497||143===s||150===s)&&(this.state=1441,this.joinOperator()),this.state=1444,this.match(t.JOIN),this.state=1445,this.joinExpression(0),this.state=1446,this.joinConstraintClause()}this.state=1452,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,180,this.context)}}catch(n){if(!(n instanceof jr))throw n;this.errorHandler.reportError(this,n),this.errorHandler.recover(this,n)}finally{this.unrollRecursionContexts(a)}return i}joinOperator(){let e,s=new zv(this.context,this.state);this.enterRule(s,164,t.RULE_joinOperator);try{switch(this.state=1496,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,194,this.context)){case 1:switch(s=new tB(s),this.enterOuterAlt(s,1),this.state=1462,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,183,this.context)){case 1:this.state=1454,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(-32&e)&&1<<e&4368&&(this.state=1453,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&4368?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=1456,this.match(t.INNER);break;case 2:this.state=1457,this.match(t.INNER),this.state=1459,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(-32&e)&&1<<e&4368&&(this.state=1458,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&4368?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;case 3:this.state=1461,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&4368?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}break;case 2:switch(s=new eB(s),this.enterOuterAlt(s,2),this.state=1478,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,188,this.context)){case 1:this.state=1465,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&4496||150===e)&&(this.state=1464,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&4496||150===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=1467,e=this.tokenStream.LA(1),96===e||143===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1469,this.errorHandler.sync(this),e=this.tokenStream.LA(1),123===e&&(this.state=1468,this.match(t.OUTER));break;case 2:this.state=1471,e=this.tokenStream.LA(1),96===e||143===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1473,this.errorHandler.sync(this),e=this.tokenStream.LA(1),123===e&&(this.state=1472,this.match(t.OUTER)),this.state=1476,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&4496||150===e)&&(this.state=1475,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&4496||150===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this))}break;case 3:switch(s=new $v(s),this.enterOuterAlt(s,3),this.state=1494,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,193,this.context)){case 1:this.state=1481,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(4===e||8===e)&&(this.state=1480,e=this.tokenStream.LA(1),4===e||8===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=1483,this.match(t.FULL),this.state=1485,this.errorHandler.sync(this),e=this.tokenStream.LA(1),123===e&&(this.state=1484,this.match(t.OUTER));break;case 2:this.state=1487,this.match(t.FULL),this.state=1489,this.errorHandler.sync(this),e=this.tokenStream.LA(1),123===e&&(this.state=1488,this.match(t.OUTER)),this.state=1492,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(4===e||8===e)&&(this.state=1491,e=this.tokenStream.LA(1),4===e||8===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this))}}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}joinOperatorCross(){let e,s=new sB(this.context,this.state);this.enterRule(s,166,t.RULE_joinOperatorCross);try{switch(this.state=1504,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CROSS:case t.GLOBAL:case t.LOCAL:this.enterOuterAlt(s,1),this.state=1499,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(71===e||101===e)&&(this.state=1498,e=this.tokenStream.LA(1),71===e||101===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=1501,this.match(t.CROSS),this.state=1502,this.match(t.JOIN);break;case t.COMMA:this.enterOuterAlt(s,2),this.state=1503,this.match(t.COMMA);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}joinConstraintClause(){let e=new aB(this.context,this.state);this.enterRule(e,168,t.RULE_joinConstraintClause);try{switch(this.state=1515,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,197,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1506,this.match(t.ON),this.state=1507,this.columnExpressionList();break;case 2:this.enterOuterAlt(e,2),this.state=1508,this.match(t.USING),this.state=1509,this.match(t.LPAREN),this.state=1510,this.columnExpressionList(),this.state=1511,this.match(t.RPAREN);break;case 3:this.enterOuterAlt(e,3),this.state=1513,this.match(t.USING),this.state=1514,this.columnExpressionList()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sampleClause(){let e=new rB(this.context,this.state);this.enterRule(e,170,t.RULE_sampleClause);try{if(1===(this.enterOuterAlt(e,1),this.state=1517,this.match(t.SAMPLE),this.state=1518,this.ratioExpression(),this.state=1521,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,198,this.context)))this.state=1519,this.match(t.OFFSET),this.state=1520,this.ratioExpression()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}limitExpression(){let e,s=new iB(this.context,this.state);this.enterRule(s,172,t.RULE_limitExpression);try{this.enterOuterAlt(s,1),this.state=1523,this.columnExpression(0),this.state=1526,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(118===e||208===e)&&(this.state=1524,e=this.tokenStream.LA(1),118===e||208===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1525,this.columnExpression(0))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}orderExpressionList(){let e=new cB(this.context,this.state);this.enterRule(e,174,t.RULE_orderExpressionList);try{let s;for(this.enterOuterAlt(e,1),this.state=1528,this.orderExpression(),this.state=1533,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,200,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=1529,this.match(t.COMMA),this.state=1530,this.orderExpression()),this.state=1535,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,200,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}orderExpression(){let e,s=new nB(this.context,this.state);this.enterRule(s,176,t.RULE_orderExpression);try{if(this.enterOuterAlt(s,1),1===(this.state=1536,this.columnExpression(0),this.state=1538,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,201,this.context)))this.state=1537,e=this.tokenStream.LA(1),!(e-11&-32)&&1<<e-11&3221225473?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);if(1===(this.state=1542,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,202,this.context)))this.state=1540,this.match(t.NULLS),this.state=1541,e=this.tokenStream.LA(1),62===e||93===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);if(1===(this.state=1546,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,203,this.context)))this.state=1544,this.match(t.COLLATE),this.state=1545,this.match(t.STRING_LITERAL)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}ratioExpression(){let e=new hB(this.context,this.state);this.enterRule(e,178,t.RULE_ratioExpression);try{if(1===(this.enterOuterAlt(e,1),this.state=1548,this.numberLiteral(),this.state=1551,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,204,this.context)))this.state=1549,this.match(t.SLASH),this.state=1550,this.numberLiteral()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}settingExpressionList(){let e=new EB(this.context,this.state);this.enterRule(e,180,t.RULE_settingExpressionList);try{let s;for(this.enterOuterAlt(e,1),this.state=1553,this.settingExpression(),this.state=1558,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,205,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=1554,this.match(t.COMMA),this.state=1555,this.settingExpression()),this.state=1560,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,205,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}settingExpression(){let e=new TB(this.context,this.state);this.enterRule(e,182,t.RULE_settingExpression);try{this.enterOuterAlt(e,1),this.state=1561,this.identifier(),this.state=1562,this.match(t.EQ_SINGLE),this.state=1563,this.literal()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}windowExpression(){let e,s=new oB(this.context,this.state);this.enterRule(s,184,t.RULE_windowExpression);try{this.enterOuterAlt(s,1),this.state=1566,this.errorHandler.sync(this),e=this.tokenStream.LA(1),126===e&&(this.state=1565,this.windowPartitionByClause()),this.state=1569,this.errorHandler.sync(this),e=this.tokenStream.LA(1),122===e&&(this.state=1568,this.windowOrderByClause()),this.state=1572,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(136===e||146===e)&&(this.state=1571,this.windowFrameClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}windowPartitionByClause(){let e=new RB(this.context,this.state);this.enterRule(e,186,t.RULE_windowPartitionByClause);try{this.enterOuterAlt(e,1),this.state=1574,this.match(t.PARTITION),this.state=1575,this.match(t.BY),this.state=1576,this.columnExpressionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}windowOrderByClause(){let e=new AB(this.context,this.state);this.enterRule(e,188,t.RULE_windowOrderByClause);try{this.enterOuterAlt(e,1),this.state=1578,this.match(t.ORDER),this.state=1579,this.match(t.BY),this.state=1580,this.orderExpressionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}windowFrameClause(){let e,s=new SB(this.context,this.state);this.enterRule(s,190,t.RULE_windowFrameClause);try{this.enterOuterAlt(s,1),this.state=1582,e=this.tokenStream.LA(1),136===e||146===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1583,this.windowFrameExtend()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}windowFrameExtend(){let e=new lB(this.context,this.state);this.enterRule(e,192,t.RULE_windowFrameExtend);try{switch(this.state=1591,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CURRENT:case t.INF:case t.NAN_SQL:case t.UNBOUNDED:case t.FLOATING_LITERAL:case t.OCTAL_LITERAL:case t.DECIMAL_LITERAL:case t.HEXADECIMAL_LITERAL:case t.DASH:case t.DOT:case t.PLUS:e=new OB(e),this.enterOuterAlt(e,1),this.state=1585,this.windowFrameBound();break;case t.BETWEEN:e=new IB(e),this.enterOuterAlt(e,2),this.state=1586,this.match(t.BETWEEN),this.state=1587,this.windowFrameBound(),this.state=1588,this.match(t.AND),this.state=1589,this.windowFrameBound();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}windowFrameBound(){let e=new uB(this.context,this.state);this.enterRule(e,194,t.RULE_windowFrameBound);try{switch(this.enterOuterAlt(e,1),this.state=1605,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,210,this.context)){case 1:this.state=1593,this.match(t.CURRENT),this.state=1594,this.match(t.ROW);break;case 2:this.state=1595,this.match(t.UNBOUNDED),this.state=1596,this.match(t.PRECEDING);break;case 3:this.state=1597,this.match(t.UNBOUNDED),this.state=1598,this.match(t.FOLLOWING);break;case 4:this.state=1599,this.numberLiteral(),this.state=1600,this.match(t.PRECEDING);break;case 5:this.state=1602,this.numberLiteral(),this.state=1603,this.match(t.FOLLOWING)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}setStatement(){let e=new NB(this.context,this.state);this.enterRule(e,196,t.RULE_setStatement);try{this.enterOuterAlt(e,1),this.state=1607,this.match(t.SET),this.state=1608,this.settingExpressionList()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}showStatement(){let e,s=new LB(this.context,this.state);this.enterRule(s,198,t.RULE_showStatement);try{switch(this.state=1652,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,218,this.context)){case 1:s=new dB(s),this.enterOuterAlt(s,1),this.state=1610,this.match(t.SHOW),this.state=1611,this.match(t.CREATE),this.state=1612,this.match(t.DATABASE),this.state=1613,this.databaseIdentifier();break;case 2:s=new _B(s),this.enterOuterAlt(s,2),this.state=1614,this.match(t.SHOW),this.state=1615,this.match(t.CREATE),this.state=1616,this.match(t.DICTIONARY),this.state=1617,this.tableIdentifier();break;case 3:if(s=new CB(s),this.enterOuterAlt(s,3),1===(this.state=1618,this.match(t.SHOW),this.state=1619,this.match(t.CREATE),this.state=1621,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,211,this.context)))this.state=1620,this.match(t.TEMPORARY);if(1===(this.state=1624,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,212,this.context)))this.state=1623,this.match(t.TABLE);this.state=1626,this.tableIdentifier();break;case 4:s=new UB(s),this.enterOuterAlt(s,4),this.state=1627,this.match(t.SHOW),this.state=1628,this.match(t.DATABASES);break;case 5:s=new MB(s),this.enterOuterAlt(s,5),this.state=1629,this.match(t.SHOW),this.state=1630,this.match(t.DICTIONARIES),this.state=1633,this.errorHandler.sync(this),e=this.tokenStream.LA(1),68===e&&(this.state=1631,this.match(t.FROM),this.state=1632,this.databaseIdentifier());break;case 6:switch(s=new PB(s),this.enterOuterAlt(s,6),this.state=1635,this.match(t.SHOW),this.state=1637,this.errorHandler.sync(this),e=this.tokenStream.LA(1),164===e&&(this.state=1636,this.match(t.TEMPORARY)),this.state=1639,this.match(t.TABLES),this.state=1642,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(68===e||80===e)&&(this.state=1640,e=this.tokenStream.LA(1),68===e||80===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1641,this.databaseIdentifier()),this.state=1647,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LIKE:this.state=1644,this.match(t.LIKE),this.state=1645,this.match(t.STRING_LITERAL);break;case t.WHERE:this.state=1646,this.whereClause();case t.EOF:case t.FORMAT:case t.INTO:case t.LIMIT:case t.RPAREN:case t.SEMICOLON:}this.state=1650,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e&&(this.state=1649,this.limitClause())}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}systemStatement(){let e,s=new mB(this.context,this.state);this.enterRule(s,200,t.RULE_systemStatement);try{switch(this.state=1688,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,221,this.context)){case 1:this.enterOuterAlt(s,1),this.state=1654,this.match(t.SYSTEM),this.state=1655,this.match(t.FLUSH),this.state=1656,this.match(t.DISTRIBUTED),this.state=1657,this.tableIdentifier();break;case 2:this.enterOuterAlt(s,2),this.state=1658,this.match(t.SYSTEM),this.state=1659,this.match(t.FLUSH),this.state=1660,this.match(t.LOGS);break;case 3:this.enterOuterAlt(s,3),this.state=1661,this.match(t.SYSTEM),this.state=1662,this.match(t.RELOAD),this.state=1663,this.match(t.DICTIONARIES);break;case 4:this.enterOuterAlt(s,4),this.state=1664,this.match(t.SYSTEM),this.state=1665,this.match(t.RELOAD),this.state=1666,this.match(t.DICTIONARY),this.state=1667,this.tableIdentifier();break;case 5:switch(this.enterOuterAlt(s,5),this.state=1668,this.match(t.SYSTEM),this.state=1669,e=this.tokenStream.LA(1),156===e||157===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1677,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DISTRIBUTED:this.state=1670,this.match(t.DISTRIBUTED),this.state=1671,this.match(t.SENDS);break;case t.FETCHES:this.state=1672,this.match(t.FETCHES);break;case t.MERGES:case t.TTL:this.state=1674,this.errorHandler.sync(this),e=this.tokenStream.LA(1),177===e&&(this.state=1673,this.match(t.TTL)),this.state=1676,this.match(t.MERGES);break;default:throw new Ei(this)}this.state=1679,this.tableIdentifier();break;case 6:this.enterOuterAlt(s,6),this.state=1680,this.match(t.SYSTEM),this.state=1681,e=this.tokenStream.LA(1),156===e||157===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1682,this.match(t.REPLICATED),this.state=1683,this.match(t.SENDS);break;case 7:this.enterOuterAlt(s,7),this.state=1684,this.match(t.SYSTEM),this.state=1685,this.match(t.SYNC),this.state=1686,this.match(t.REPLICA),this.state=1687,this.tableIdentifier()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}truncateStatement(){let e,s=new DB(this.context,this.state);this.enterRule(s,202,t.RULE_truncateStatement);try{if(this.enterOuterAlt(s,1),1===(this.state=1690,this.match(t.TRUNCATE),this.state=1692,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,222,this.context)))this.state=1691,this.match(t.TEMPORARY);if(1===(this.state=1695,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,223,this.context)))this.state=1694,this.match(t.TABLE);if(1===(this.state=1699,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,224,this.context)))this.state=1697,this.match(t.IF),this.state=1698,this.match(t.EXISTS);this.state=1701,this.tableIdentifier(),this.state=1703,this.errorHandler.sync(this),e=this.tokenStream.LA(1),119===e&&(this.state=1702,this.clusterClause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}useStatement(){let e=new pB(this.context,this.state);this.enterRule(e,204,t.RULE_useStatement);try{this.enterOuterAlt(e,1),this.state=1705,this.match(t.USE),this.state=1706,this.databaseIdentifier()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}watchStatement(){let e,s=new gB(this.context,this.state);this.enterRule(s,206,t.RULE_watchStatement);try{this.enterOuterAlt(s,1),this.state=1708,this.match(t.WATCH),this.state=1709,this.tableIdentifier(),this.state=1711,this.errorHandler.sync(this),e=this.tokenStream.LA(1),55===e&&(this.state=1710,this.match(t.EVENTS)),this.state=1715,this.errorHandler.sync(this),e=this.tokenStream.LA(1),99===e&&(this.state=1713,this.match(t.LIMIT),this.state=1714,this.match(t.DECIMAL_LITERAL))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnTypeExpression(){let e,s=new xB(this.context,this.state);this.enterRule(s,208,t.RULE_columnTypeExpression);try{switch(this.state=1764,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,232,this.context)){case 1:s=new vB(s),this.enterOuterAlt(s,1),this.state=1717,this.identifier();break;case 2:for(s=new GB(s),this.enterOuterAlt(s,2),this.state=1718,this.identifier(),this.state=1719,this.match(t.LPAREN),this.state=1720,this.identifier(),this.state=1721,this.columnTypeExpression(),this.state=1728,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=1722,this.match(t.COMMA),this.state=1723,this.identifier(),this.state=1724,this.columnTypeExpression(),this.state=1730,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1731,this.match(t.RPAREN);break;case 3:for(s=new HB(s),this.enterOuterAlt(s,3),this.state=1733,this.identifier(),this.state=1734,this.match(t.LPAREN),this.state=1735,this.enumValue(),this.state=1740,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=1736,this.match(t.COMMA),this.state=1737,this.enumValue(),this.state=1742,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1743,this.match(t.RPAREN);break;case 4:for(s=new kB(s),this.enterOuterAlt(s,4),this.state=1745,this.identifier(),this.state=1746,this.match(t.LPAREN),this.state=1747,this.columnTypeExpression(),this.state=1752,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=1748,this.match(t.COMMA),this.state=1749,this.columnTypeExpression(),this.state=1754,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1755,this.match(t.RPAREN);break;case 5:s=new FB(s),this.enterOuterAlt(s,5),this.state=1757,this.identifier(),this.state=1758,this.match(t.LPAREN),this.state=1760,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&4294967292||!(e-32&-32)&&1<<e-32&4290772991||!(e-64&-32)&&1<<e-64&4294967295||!(e-96&-32)&&1<<e-96&2147483647||!(e-129&-32)&&1<<e-129&4294967215||!(e-161&-32)&&1<<e-161&4294950911||!(e-193&-32)&&1<<e-193&1158024191)&&(this.state=1759,this.columnExpressionList()),this.state=1762,this.match(t.RPAREN)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnExpressionList(){let e=new BB(this.context,this.state);this.enterRule(e,210,t.RULE_columnExpressionList);try{let s;for(this.enterOuterAlt(e,1),this.state=1766,this.columnsExpression(),this.state=1771,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,233,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=1767,this.match(t.COMMA),this.state=1768,this.columnsExpression()),this.state=1773,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,233,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}columnsExpression(){let e,s=new yB(this.context,this.state);this.enterRule(s,212,t.RULE_columnsExpression);try{switch(this.state=1785,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,235,this.context)){case 1:s=new fB(s),this.enterOuterAlt(s,1),this.state=1777,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&4294967292||!(e-32&-32)&&1<<e-32&4290772991||!(e-64&-32)&&1<<e-64&4294705151||!(e-96&-32)&&1<<e-96&2146303999||!(e-129&-32)&&1<<e-129&4294967215||!(e-161&-32)&&1<<e-161&4294950911||!(e-193&-32)&&1<<e-193&31)&&(this.state=1774,this.tableIdentifier(),this.state=1775,this.match(t.DOT)),this.state=1779,this.match(t.ASTERISK);break;case 2:s=new YB(s),this.enterOuterAlt(s,2),this.state=1780,this.match(t.LPAREN),this.state=1781,this.selectUnionStatement(),this.state=1782,this.match(t.RPAREN);break;case 3:s=new wB(s),this.enterOuterAlt(s,3),this.state=1784,this.columnExpression(0)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnExpression(e){void 0===e&&(e=0);let s,a=this.context,r=this.state,i=new bB(this.context,r),c=i,n=214;this.enterRecursionRule(i,214,t.RULE_columnExpression,e);try{let e;switch(this.enterOuterAlt(i,1),this.state=1916,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,248,this.context)){case 1:if(1===(i=new jB(i),this.context=i,c=i,this.state=1788,this.match(t.CASE),this.state=1790,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,236,this.context)))this.state=1789,this.columnExpression(0);this.state=1797,this.errorHandler.sync(this),s=this.tokenStream.LA(1);do{this.state=1792,this.match(t.WHEN),this.state=1793,this.columnExpression(0),this.state=1794,this.match(t.THEN),this.state=1795,this.columnExpression(0),this.state=1799,this.errorHandler.sync(this),s=this.tokenStream.LA(1)}while(190===s);this.state=1803,this.errorHandler.sync(this),s=this.tokenStream.LA(1),51===s&&(this.state=1801,this.match(t.ELSE),this.state=1802,this.columnExpression(0)),this.state=1805,this.match(t.END);break;case 2:i=new uy(i),this.context=i,c=i,this.state=1807,this.match(t.CAST),this.state=1808,this.match(t.LPAREN),this.state=1809,this.columnExpression(0),this.state=1810,this.match(t.AS),this.state=1811,this.columnTypeExpression(),this.state=1812,this.match(t.RPAREN);break;case 3:i=new KB(i),this.context=i,c=i,this.state=1814,this.match(t.DATE),this.state=1815,this.match(t.STRING_LITERAL);break;case 4:i=new Iy(i),this.context=i,c=i,this.state=1816,this.match(t.EXTRACT),this.state=1817,this.match(t.LPAREN),this.state=1818,this.interval(),this.state=1819,this.match(t.FROM),this.state=1820,this.columnExpression(0),this.state=1821,this.match(t.RPAREN);break;case 5:i=new Sy(i),this.context=i,c=i,this.state=1823,this.match(t.INTERVAL),this.state=1824,this.columnExpression(0),this.state=1825,this.interval();break;case 6:i=new qB(i),this.context=i,c=i,this.state=1827,this.match(t.SUBSTRING),this.state=1828,this.match(t.LPAREN),this.state=1829,this.columnExpression(0),this.state=1830,this.match(t.FROM),this.state=1831,this.columnExpression(0),this.state=1834,this.errorHandler.sync(this),s=this.tokenStream.LA(1),65===s&&(this.state=1832,this.match(t.FOR),this.state=1833,this.columnExpression(0)),this.state=1836,this.match(t.RPAREN);break;case 7:i=new oy(i),this.context=i,c=i,this.state=1838,this.match(t.TIMESTAMP),this.state=1839,this.match(t.STRING_LITERAL);break;case 8:i=new JB(i),this.context=i,c=i,this.state=1840,this.match(t.TRIM),this.state=1841,this.match(t.LPAREN),this.state=1842,s=this.tokenStream.LA(1),17===s||95===s||173===s?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1843,this.match(t.STRING_LITERAL),this.state=1844,this.match(t.FROM),this.state=1845,this.columnExpression(0),this.state=1846,this.match(t.RPAREN);break;case 9:i=new ay(i),this.context=i,c=i,this.state=1848,this.identifier(),this.state=1849,this.match(t.LPAREN),this.state=1851,this.errorHandler.sync(this),s=this.tokenStream.LA(1),(!(-32&s)&&1<<s&4294967292||!(s-32&-32)&&1<<s-32&4290772991||!(s-64&-32)&&1<<s-64&4294967295||!(s-96&-32)&&1<<s-96&2147483647||!(s-129&-32)&&1<<s-129&4294967215||!(s-161&-32)&&1<<s-161&4294950911||!(s-193&-32)&&1<<s-193&1158024191)&&(this.state=1850,this.columnExpressionList()),this.state=1853,this.match(t.RPAREN),this.state=1855,this.match(t.OVER),this.state=1856,this.match(t.LPAREN),this.state=1857,this.windowExpression(),this.state=1858,this.match(t.RPAREN);break;case 10:i=new hy(i),this.context=i,c=i,this.state=1860,this.identifier(),this.state=1861,this.match(t.LPAREN),this.state=1863,this.errorHandler.sync(this),s=this.tokenStream.LA(1),(!(-32&s)&&1<<s&4294967292||!(s-32&-32)&&1<<s-32&4290772991||!(s-64&-32)&&1<<s-64&4294967295||!(s-96&-32)&&1<<s-96&2147483647||!(s-129&-32)&&1<<s-129&4294967215||!(s-161&-32)&&1<<s-161&4294950911||!(s-193&-32)&&1<<s-193&1158024191)&&(this.state=1862,this.columnExpressionList()),this.state=1865,this.match(t.RPAREN),this.state=1867,this.match(t.OVER),this.state=1868,this.identifier();break;case 11:if(1===(i=new ty(i),this.context=i,c=i,this.state=1870,this.identifier(),this.state=1876,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,243,this.context)))this.state=1871,this.match(t.LPAREN),this.state=1873,this.errorHandler.sync(this),s=this.tokenStream.LA(1),(!(-32&s)&&1<<s&4294967292||!(s-32&-32)&&1<<s-32&4290772991||!(s-64&-32)&&1<<s-64&4294967295||!(s-96&-32)&&1<<s-96&2147483647||!(s-129&-32)&&1<<s-129&4294967215||!(s-161&-32)&&1<<s-161&4294950911||!(s-193&-32)&&1<<s-193&1158024191)&&(this.state=1872,this.columnExpressionList()),this.state=1875,this.match(t.RPAREN);if(1===(this.state=1878,this.match(t.LPAREN),this.state=1880,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,244,this.context)))this.state=1879,this.match(t.DISTINCT);this.state=1883,this.errorHandler.sync(this),s=this.tokenStream.LA(1),(!(-32&s)&&1<<s&4294967292||!(s-32&-32)&&1<<s-32&4290772991||!(s-64&-32)&&1<<s-64&4294967295||!(s-96&-32)&&1<<s-96&2147483647||!(s-129&-32)&&1<<s-129&4294967215||!(s-161&-32)&&1<<s-161&4294950911||!(s-193&-32)&&1<<s-193&1158024191)&&(this.state=1882,this.columnArgumentList()),this.state=1885,this.match(t.RPAREN);break;case 12:i=new sy(i),this.context=i,c=i,this.state=1887,this.literal();break;case 13:i=new Oy(i),this.context=i,c=i,this.state=1888,this.match(t.DASH),this.state=1889,this.columnExpression(17);break;case 14:i=new ZB(i),this.context=i,c=i,this.state=1890,this.match(t.NOT),this.state=1891,this.columnExpression(12);break;case 15:i=new ey(i),this.context=i,c=i,this.state=1895,this.errorHandler.sync(this),s=this.tokenStream.LA(1),(!(-32&s)&&1<<s&4294967292||!(s-32&-32)&&1<<s-32&4290772991||!(s-64&-32)&&1<<s-64&4294705151||!(s-96&-32)&&1<<s-96&2146303999||!(s-129&-32)&&1<<s-129&4294967215||!(s-161&-32)&&1<<s-161&4294950911||!(s-193&-32)&&1<<s-193&31)&&(this.state=1892,this.tableIdentifier(),this.state=1893,this.match(t.DOT)),this.state=1897,this.match(t.ASTERISK);break;case 16:i=new ly(i),this.context=i,c=i,this.state=1898,this.match(t.LPAREN),this.state=1899,this.selectUnionStatement(),this.state=1900,this.match(t.RPAREN);break;case 17:i=new ny(i),this.context=i,c=i,this.state=1902,this.match(t.LPAREN),this.state=1903,this.columnExpression(0),this.state=1904,this.match(t.RPAREN);break;case 18:i=new VB(i),this.context=i,c=i,this.state=1906,this.match(t.LPAREN),this.state=1907,this.columnExpressionList(),this.state=1908,this.match(t.RPAREN);break;case 19:i=new iy(i),this.context=i,c=i,this.state=1910,this.match(t.LBRACKET),this.state=1912,this.errorHandler.sync(this),s=this.tokenStream.LA(1),(!(-32&s)&&1<<s&4294967292||!(s-32&-32)&&1<<s-32&4290772991||!(s-64&-32)&&1<<s-64&4294967295||!(s-96&-32)&&1<<s-96&2147483647||!(s-129&-32)&&1<<s-129&4294967215||!(s-161&-32)&&1<<s-161&4294950911||!(s-193&-32)&&1<<s-193&1158024191)&&(this.state=1911,this.columnExpressionList()),this.state=1914,this.match(t.RBRACKET);break;case 20:i=new zB(i),this.context=i,c=i,this.state=1915,this.columnIdentifier()}for(this.context.stop=this.tokenStream.LT(-1),this.state=1989,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,257,this.context);2!==e&&e!==ja.INVALID_ALT_NUMBER;){if(1===e)switch(null!=this.parseListeners&&this.triggerExitRuleEvent(),c=i,this.state=1987,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,256,this.context)){case 1:if(i=new Ay(new bB(a,r)),this.pushNewRecursionContext(i,n,t.RULE_columnExpression),this.state=1918,!this.precpred(this.context,16))throw this.createFailedPredicateException("this.precpred(this.context, 16)");this.state=1919,s=this.tokenStream.LA(1),!(s-204&-32)&&1<<s-204&134479873?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1920,this.columnExpression(17);break;case 2:if(i=new Ry(new bB(a,r)),this.pushNewRecursionContext(i,n,t.RULE_columnExpression),this.state=1921,!this.precpred(this.context,15))throw this.createFailedPredicateException("this.precpred(this.context, 15)");this.state=1922,s=this.tokenStream.LA(1),!(s-209&-32)&&1<<s-209&16387?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1923,this.columnExpression(16);break;case 3:if(i=new Ty(new bB(a,r)),this.pushNewRecursionContext(i,n,t.RULE_columnExpression),this.state=1924,!this.precpred(this.context,14))throw this.createFailedPredicateException("this.precpred(this.context, 14)");switch(this.state=1943,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,252,this.context)){case 1:this.state=1925,this.match(t.EQ_DOUBLE);break;case 2:this.state=1926,this.match(t.EQ_SINGLE);break;case 3:this.state=1927,this.match(t.NOT_EQ);break;case 4:this.state=1928,this.match(t.LE);break;case 5:this.state=1929,this.match(t.GE);break;case 6:this.state=1930,this.match(t.LT);break;case 7:this.state=1931,this.match(t.GT);break;case 8:this.state=1933,this.errorHandler.sync(this),s=this.tokenStream.LA(1),71===s&&(this.state=1932,this.match(t.GLOBAL)),this.state=1936,this.errorHandler.sync(this),s=this.tokenStream.LA(1),115===s&&(this.state=1935,this.match(t.NOT)),this.state=1938,this.match(t.IN);break;case 9:this.state=1940,this.errorHandler.sync(this),s=this.tokenStream.LA(1),115===s&&(this.state=1939,this.match(t.NOT)),this.state=1942,s=this.tokenStream.LA(1),79===s||98===s?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}this.state=1945,this.columnExpression(15);break;case 4:if(i=new XB(new bB(a,r)),this.pushNewRecursionContext(i,n,t.RULE_columnExpression),this.state=1946,!this.precpred(this.context,11))throw this.createFailedPredicateException("this.precpred(this.context, 11)");this.state=1947,this.match(t.AND),this.state=1948,this.columnExpression(12);break;case 5:if(i=new Ny(new bB(a,r)),this.pushNewRecursionContext(i,n,t.RULE_columnExpression),this.state=1949,!this.precpred(this.context,10))throw this.createFailedPredicateException("this.precpred(this.context, 10)");this.state=1950,this.match(t.OR),this.state=1951,this.columnExpression(11);break;case 6:if(i=new QB(new bB(a,r)),this.pushNewRecursionContext(i,n,t.RULE_columnExpression),this.state=1952,!this.precpred(this.context,9))throw this.createFailedPredicateException("this.precpred(this.context, 9)");this.state=1954,this.errorHandler.sync(this),s=this.tokenStream.LA(1),115===s&&(this.state=1953,this.match(t.NOT)),this.state=1956,this.match(t.BETWEEN),this.state=1957,this.columnExpression(0),this.state=1958,this.match(t.AND),this.state=1959,this.columnExpression(10);break;case 7:if(i=new ry(new bB(a,r)),this.pushNewRecursionContext(i,n,t.RULE_columnExpression),this.state=1961,!this.precpred(this.context,8))throw this.createFailedPredicateException("this.precpred(this.context, 8)");this.state=1962,this.match(t.QUESTIONMARK),this.state=1963,this.columnExpression(0),this.state=1964,this.match(t.COLON),this.state=1965,this.columnExpression(8);break;case 8:if(i=new $B(new bB(a,r)),this.pushNewRecursionContext(i,n,t.RULE_columnExpression),this.state=1967,!this.precpred(this.context,19))throw this.createFailedPredicateException("this.precpred(this.context, 19)");this.state=1968,this.match(t.LBRACKET),this.state=1969,this.columnExpression(0),this.state=1970,this.match(t.RBRACKET);break;case 9:if(i=new cy(new bB(a,r)),this.pushNewRecursionContext(i,n,t.RULE_columnExpression),this.state=1972,!this.precpred(this.context,18))throw this.createFailedPredicateException("this.precpred(this.context, 18)");this.state=1973,this.match(t.DOT),this.state=1974,this.match(t.DECIMAL_LITERAL);break;case 10:if(i=new WB(new bB(a,r)),this.pushNewRecursionContext(i,n,t.RULE_columnExpression),this.state=1975,!this.precpred(this.context,13))throw this.createFailedPredicateException("this.precpred(this.context, 13)");this.state=1976,this.match(t.IS),this.state=1978,this.errorHandler.sync(this),s=this.tokenStream.LA(1),115===s&&(this.state=1977,this.match(t.NOT)),this.state=1980,this.match(t.NULL_SQL);break;case 11:if(i=new Ey(new bB(a,r)),this.pushNewRecursionContext(i,n,t.RULE_columnExpression),this.state=1981,!this.precpred(this.context,7))throw this.createFailedPredicateException("this.precpred(this.context, 7)");switch(this.state=1985,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DATE:case t.FIRST:case t.ID:case t.KEY:case t.IDENTIFIER:this.state=1982,this.alias();break;case t.AS:this.state=1983,this.match(t.AS),this.state=1984,this.identifier();break;default:throw new Ei(this)}}this.state=1991,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,257,this.context)}}catch(h){if(!(h instanceof jr))throw h;this.errorHandler.reportError(this,h),this.errorHandler.recover(this,h)}finally{this.unrollRecursionContexts(a)}return i}columnArgumentList(){let e,s=new Ly(this.context,this.state);this.enterRule(s,216,t.RULE_columnArgumentList);try{for(this.enterOuterAlt(s,1),this.state=1992,this.columnArgumentExpression(),this.state=1997,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=1993,this.match(t.COMMA),this.state=1994,this.columnArgumentExpression(),this.state=1999,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnArgumentExpression(){let e=new Cy(this.context,this.state);this.enterRule(e,218,t.RULE_columnArgumentExpression);try{switch(this.state=2002,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,259,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2e3,this.columnLambdaExpression();break;case 2:this.enterOuterAlt(e,2),this.state=2001,this.columnExpression(0)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}columnLambdaExpression(){let e,s=new _y(this.context,this.state);this.enterRule(s,220,t.RULE_columnLambdaExpression);try{switch(this.enterOuterAlt(s,1),this.state=2023,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LPAREN:for(this.state=2004,this.match(t.LPAREN),this.state=2005,this.identifier(),this.state=2010,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=2006,this.match(t.COMMA),this.state=2007,this.identifier(),this.state=2012,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2013,this.match(t.RPAREN);break;case t.AFTER:case t.ALIAS:case t.ALL:case t.ALTER:case t.AND:case t.ANTI:case t.ANY:case t.ARRAY:case t.AS:case t.ASCENDING:case t.ASOF:case t.AST:case t.ASYNC:case t.ATTACH:case t.BETWEEN:case t.BOTH:case t.BY:case t.CASE:case t.CAST:case t.CHECK:case t.CLEAR:case t.CLUSTER:case t.CODEC:case t.COLLATE:case t.COLUMN:case t.COMMENT:case t.CONSTRAINT:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.DATABASE:case t.DATABASES:case t.DATE:case t.DAY:case t.DEDUPLICATE:case t.DEFAULT:case t.DELAY:case t.DELETE:case t.DESC:case t.DESCENDING:case t.DESCRIBE:case t.DETACH:case t.DICTIONARIES:case t.DICTIONARY:case t.DISK:case t.DISTINCT:case t.DISTRIBUTED:case t.DROP:case t.ELSE:case t.END:case t.ENGINE:case t.EVENTS:case t.EXISTS:case t.EXPLAIN:case t.EXPRESSION:case t.EXTRACT:case t.FETCHES:case t.FINAL:case t.FIRST:case t.FLUSH:case t.FOLLOWING:case t.FOR:case t.FORMAT:case t.FREEZE:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOBAL:case t.GRANULARITY:case t.GROUP:case t.HAVING:case t.HIERARCHICAL:case t.HOUR:case t.ID:case t.IF:case t.ILIKE:case t.IN:case t.INDEX:case t.INJECTIVE:case t.INNER:case t.INSERT:case t.INTERVAL:case t.INTO:case t.IS:case t.IS_OBJECT_ID:case t.JOIN:case t.KEY:case t.KILL:case t.LAST:case t.LAYOUT:case t.LEADING:case t.LEFT:case t.LIFETIME:case t.LIKE:case t.LIMIT:case t.LIVE:case t.LOCAL:case t.LOGS:case t.MATERIALIZE:case t.MATERIALIZED:case t.MAX:case t.MERGES:case t.MIN:case t.MINUTE:case t.MODIFY:case t.MONTH:case t.MOVE:case t.MUTATION:case t.NO:case t.NOT:case t.NULLS:case t.OFFSET:case t.ON:case t.OPTIMIZE:case t.OR:case t.ORDER:case t.OUTER:case t.OUTFILE:case t.OVER:case t.PARTITION:case t.POPULATE:case t.PRECEDING:case t.PREWHERE:case t.PRIMARY:case t.QUARTER:case t.RANGE:case t.RELOAD:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICA:case t.REPLICATED:case t.RIGHT:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SECOND:case t.SELECT:case t.SEMI:case t.SENDS:case t.SET:case t.SETTINGS:case t.SHOW:case t.SOURCE:case t.START:case t.STOP:case t.SUBSTRING:case t.SYNC:case t.SYNTAX:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TEMPORARY:case t.TEST:case t.THEN:case t.TIES:case t.TIMEOUT:case t.TIMESTAMP:case t.TO:case t.TOP:case t.TOTALS:case t.TRAILING:case t.TRIM:case t.TRUNCATE:case t.TTL:case t.TYPE:case t.UNBOUNDED:case t.UNION:case t.UPDATE:case t.USE:case t.USING:case t.UUID:case t.VALUES:case t.VIEW:case t.VOLUME:case t.WATCH:case t.WEEK:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.YEAR:case t.JSON_FALSE:case t.JSON_TRUE:case t.IDENTIFIER:for(this.state=2015,this.identifier(),this.state=2020,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=2016,this.match(t.COMMA),this.state=2017,this.identifier(),this.state=2022,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;default:throw new Ei(this)}this.state=2025,this.match(t.ARROW),this.state=2026,this.columnExpression(0)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}columnIdentifier(){let e=new Py(this.context,this.state);this.enterRule(e,222,t.RULE_columnIdentifier);try{if(this.enterOuterAlt(e,1),1===(this.state=2031,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,263,this.context)))this.state=2028,this.tableIdentifier(),this.state=2029,this.match(t.DOT);if(1===(this.state=2033,this.identifier(),this.state=2036,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,264,this.context)))this.state=2034,this.match(t.DOT),this.state=2035,this.identifier()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableExpression(e){void 0===e&&(e=0);let s=this.context,a=this.state,r=new My(this.context,a),i=r;this.enterRecursionRule(r,224,t.RULE_tableExpression,e);try{let e;switch(this.enterOuterAlt(r,1),this.state=2045,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,265,this.context)){case 1:r=new Uy(r),this.context=r,i=r,this.state=2039,this.tableIdentifier();break;case 2:r=new dy(r),this.context=r,i=r,this.state=2040,this.tableFunctionExpression();break;case 3:r=new Dy(r),this.context=r,i=r,this.state=2041,this.match(t.LPAREN),this.state=2042,this.selectUnionStatement(),this.state=2043,this.match(t.RPAREN)}for(this.context.stop=this.tokenStream.LT(-1),this.state=2055,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,267,this.context);2!==e&&e!==ja.INVALID_ALT_NUMBER;){if(1===e){if(null!=this.parseListeners&&this.triggerExitRuleEvent(),i=r,r=new my(new My(s,a)),this.pushNewRecursionContext(r,224,t.RULE_tableExpression),this.state=2047,!this.precpred(this.context,1))throw this.createFailedPredicateException("this.precpred(this.context, 1)");switch(this.state=2051,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DATE:case t.FIRST:case t.ID:case t.KEY:case t.IDENTIFIER:this.state=2048,this.alias();break;case t.AS:this.state=2049,this.match(t.AS),this.state=2050,this.identifier();break;default:throw new Ei(this)}}this.state=2057,this.errorHandler.sync(this),e=this.interpreter.adaptivePredict(this.tokenStream,267,this.context)}}catch(c){if(!(c instanceof jr))throw c;this.errorHandler.reportError(this,c),this.errorHandler.recover(this,c)}finally{this.unrollRecursionContexts(s)}return r}tableFunctionExpression(){let e,s=new py(this.context,this.state);this.enterRule(s,226,t.RULE_tableFunctionExpression);try{this.enterOuterAlt(s,1),this.state=2058,this.identifier(),this.state=2059,this.match(t.LPAREN),this.state=2061,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&4294967292||!(e-32&-32)&&1<<e-32&4290772991||!(e-64&-32)&&1<<e-64&4294967295||!(e-96&-32)&&1<<e-96&2147483647||!(e-129&-32)&&1<<e-129&4294967215||!(e-161&-32)&&1<<e-161&4294950911||!(e-193&-32)&&1<<e-193&1074136063)&&(this.state=2060,this.tableArgList()),this.state=2063,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableIdentifier(){let e=new gy(this.context,this.state);this.enterRule(e,228,t.RULE_tableIdentifier);try{if(this.enterOuterAlt(e,1),1===(this.state=2068,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,269,this.context)))this.state=2065,this.databaseIdentifier(),this.state=2066,this.match(t.DOT);this.state=2070,this.identifier()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tableArgList(){let e,s=new xy(this.context,this.state);this.enterRule(s,230,t.RULE_tableArgList);try{for(this.enterOuterAlt(s,1),this.state=2072,this.tableArgExpression(),this.state=2077,this.errorHandler.sync(this),e=this.tokenStream.LA(1);208===e;)this.state=2073,this.match(t.COMMA),this.state=2074,this.tableArgExpression(),this.state=2079,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}tableArgExpression(){let e=new ky(this.context,this.state);this.enterRule(e,232,t.RULE_tableArgExpression);try{switch(this.state=2083,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,271,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2080,this.columnIdentifier();break;case 2:this.enterOuterAlt(e,2),this.state=2081,this.tableFunctionExpression();break;case 3:this.enterOuterAlt(e,3),this.state=2082,this.literal()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}databaseIdentifier(){let e=new Hy(this.context,this.state);this.enterRule(e,234,t.RULE_databaseIdentifier);try{this.enterOuterAlt(e,1),this.state=2085,this.identifier()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}floatingLiteral(){let e,s=new Gy(this.context,this.state);this.enterRule(s,236,t.RULE_floatingLiteral);try{switch(this.state=2095,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.FLOATING_LITERAL:this.enterOuterAlt(s,1),this.state=2087,this.match(t.FLOATING_LITERAL);break;case t.DOT:this.enterOuterAlt(s,2),this.state=2088,this.match(t.DOT),this.state=2089,e=this.tokenStream.LA(1),199===e||200===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.DECIMAL_LITERAL:if(1===(this.enterOuterAlt(s,3),this.state=2090,this.match(t.DECIMAL_LITERAL),this.state=2091,this.match(t.DOT),this.state=2093,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,272,this.context)))this.state=2092,e=this.tokenStream.LA(1),199===e||200===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}numberLiteral(){let e,s=new Fy(this.context,this.state);this.enterRule(s,238,t.RULE_numberLiteral);try{switch(this.enterOuterAlt(s,1),this.state=2098,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(210===e||223===e)&&(this.state=2097,e=this.tokenStream.LA(1),210===e||223===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2106,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,275,this.context)){case 1:this.state=2100,this.floatingLiteral();break;case 2:this.state=2101,this.match(t.OCTAL_LITERAL);break;case 3:this.state=2102,this.match(t.DECIMAL_LITERAL);break;case 4:this.state=2103,this.match(t.HEXADECIMAL_LITERAL);break;case 5:this.state=2104,this.match(t.INF);break;case 6:this.state=2105,this.match(t.NAN_SQL)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}literal(){let e=new vy(this.context,this.state);this.enterRule(e,240,t.RULE_literal);try{switch(this.state=2111,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.INF:case t.NAN_SQL:case t.FLOATING_LITERAL:case t.OCTAL_LITERAL:case t.DECIMAL_LITERAL:case t.HEXADECIMAL_LITERAL:case t.DASH:case t.DOT:case t.PLUS:this.enterOuterAlt(e,1),this.state=2108,this.numberLiteral();break;case t.STRING_LITERAL:this.enterOuterAlt(e,2),this.state=2109,this.match(t.STRING_LITERAL);break;case t.NULL_SQL:this.enterOuterAlt(e,3),this.state=2110,this.match(t.NULL_SQL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}interval(){let e,s=new By(this.context,this.state);this.enterRule(s,242,t.RULE_interval);try{this.enterOuterAlt(s,1),this.state=2113,e=this.tokenStream.LA(1),36===e||76===e||!(e-108&-32)&&1<<e-108&67108869||148===e||189===e||194===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}keyword(){let e,s=new yy(this.context,this.state);this.enterRule(s,244,t.RULE_keyword);try{this.enterOuterAlt(s,1),this.state=2115,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&4294967292||!(e-32&-32)&&1<<e-32&4290772975||!(e-64&-32)&&1<<e-64&4294701055||!(e-96&-32)&&1<<e-96&2146283519||!(e-129&-32)&&1<<e-129&4294442895||!(e-161&-32)&&1<<e-161&4026515455||!(e-193&-32)&&1<<e-193&13?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}keywordForAlias(){let e,s=new fy(this.context,this.state);this.enterRule(s,246,t.RULE_keywordForAlias);try{this.enterOuterAlt(s,1),this.state=2117,e=this.tokenStream.LA(1),35===e||62===e||77===e||91===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alias(){let e=new Yy(this.context,this.state);this.enterRule(e,248,t.RULE_alias);try{switch(this.state=2121,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.IDENTIFIER:this.enterOuterAlt(e,1),this.state=2119,this.match(t.IDENTIFIER);break;case t.DATE:case t.FIRST:case t.ID:case t.KEY:this.enterOuterAlt(e,2),this.state=2120,this.keywordForAlias();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}identifier(){let e=new wy(this.context,this.state);this.enterRule(e,250,t.RULE_identifier);try{switch(this.state=2126,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.IDENTIFIER:this.enterOuterAlt(e,1),this.state=2123,this.match(t.IDENTIFIER);break;case t.DAY:case t.HOUR:case t.MINUTE:case t.MONTH:case t.QUARTER:case t.SECOND:case t.WEEK:case t.YEAR:this.enterOuterAlt(e,2),this.state=2124,this.interval();break;case t.AFTER:case t.ALIAS:case t.ALL:case t.ALTER:case t.AND:case t.ANTI:case t.ANY:case t.ARRAY:case t.AS:case t.ASCENDING:case t.ASOF:case t.AST:case t.ASYNC:case t.ATTACH:case t.BETWEEN:case t.BOTH:case t.BY:case t.CASE:case t.CAST:case t.CHECK:case t.CLEAR:case t.CLUSTER:case t.CODEC:case t.COLLATE:case t.COLUMN:case t.COMMENT:case t.CONSTRAINT:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.DATABASE:case t.DATABASES:case t.DATE:case t.DEDUPLICATE:case t.DEFAULT:case t.DELAY:case t.DELETE:case t.DESC:case t.DESCENDING:case t.DESCRIBE:case t.DETACH:case t.DICTIONARIES:case t.DICTIONARY:case t.DISK:case t.DISTINCT:case t.DISTRIBUTED:case t.DROP:case t.ELSE:case t.END:case t.ENGINE:case t.EVENTS:case t.EXISTS:case t.EXPLAIN:case t.EXPRESSION:case t.EXTRACT:case t.FETCHES:case t.FINAL:case t.FIRST:case t.FLUSH:case t.FOLLOWING:case t.FOR:case t.FORMAT:case t.FREEZE:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOBAL:case t.GRANULARITY:case t.GROUP:case t.HAVING:case t.HIERARCHICAL:case t.ID:case t.IF:case t.ILIKE:case t.IN:case t.INDEX:case t.INJECTIVE:case t.INNER:case t.INSERT:case t.INTERVAL:case t.INTO:case t.IS:case t.IS_OBJECT_ID:case t.JOIN:case t.KEY:case t.KILL:case t.LAST:case t.LAYOUT:case t.LEADING:case t.LEFT:case t.LIFETIME:case t.LIKE:case t.LIMIT:case t.LIVE:case t.LOCAL:case t.LOGS:case t.MATERIALIZE:case t.MATERIALIZED:case t.MAX:case t.MERGES:case t.MIN:case t.MODIFY:case t.MOVE:case t.MUTATION:case t.NO:case t.NOT:case t.NULLS:case t.OFFSET:case t.ON:case t.OPTIMIZE:case t.OR:case t.ORDER:case t.OUTER:case t.OUTFILE:case t.OVER:case t.PARTITION:case t.POPULATE:case t.PRECEDING:case t.PREWHERE:case t.PRIMARY:case t.RANGE:case t.RELOAD:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICA:case t.REPLICATED:case t.RIGHT:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SELECT:case t.SEMI:case t.SENDS:case t.SET:case t.SETTINGS:case t.SHOW:case t.SOURCE:case t.START:case t.STOP:case t.SUBSTRING:case t.SYNC:case t.SYNTAX:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TEMPORARY:case t.TEST:case t.THEN:case t.TIES:case t.TIMEOUT:case t.TIMESTAMP:case t.TO:case t.TOP:case t.TOTALS:case t.TRAILING:case t.TRIM:case t.TRUNCATE:case t.TTL:case t.TYPE:case t.UNBOUNDED:case t.UNION:case t.UPDATE:case t.USE:case t.USING:case t.UUID:case t.VALUES:case t.VIEW:case t.VOLUME:case t.WATCH:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.JSON_FALSE:case t.JSON_TRUE:this.enterOuterAlt(e,3),this.state=2125,this.keyword();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}identifierOrNull(){let e=new by(this.context,this.state);this.enterRule(e,252,t.RULE_identifierOrNull);try{switch(this.state=2130,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AFTER:case t.ALIAS:case t.ALL:case t.ALTER:case t.AND:case t.ANTI:case t.ANY:case t.ARRAY:case t.AS:case t.ASCENDING:case t.ASOF:case t.AST:case t.ASYNC:case t.ATTACH:case t.BETWEEN:case t.BOTH:case t.BY:case t.CASE:case t.CAST:case t.CHECK:case t.CLEAR:case t.CLUSTER:case t.CODEC:case t.COLLATE:case t.COLUMN:case t.COMMENT:case t.CONSTRAINT:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.DATABASE:case t.DATABASES:case t.DATE:case t.DAY:case t.DEDUPLICATE:case t.DEFAULT:case t.DELAY:case t.DELETE:case t.DESC:case t.DESCENDING:case t.DESCRIBE:case t.DETACH:case t.DICTIONARIES:case t.DICTIONARY:case t.DISK:case t.DISTINCT:case t.DISTRIBUTED:case t.DROP:case t.ELSE:case t.END:case t.ENGINE:case t.EVENTS:case t.EXISTS:case t.EXPLAIN:case t.EXPRESSION:case t.EXTRACT:case t.FETCHES:case t.FINAL:case t.FIRST:case t.FLUSH:case t.FOLLOWING:case t.FOR:case t.FORMAT:case t.FREEZE:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOBAL:case t.GRANULARITY:case t.GROUP:case t.HAVING:case t.HIERARCHICAL:case t.HOUR:case t.ID:case t.IF:case t.ILIKE:case t.IN:case t.INDEX:case t.INJECTIVE:case t.INNER:case t.INSERT:case t.INTERVAL:case t.INTO:case t.IS:case t.IS_OBJECT_ID:case t.JOIN:case t.KEY:case t.KILL:case t.LAST:case t.LAYOUT:case t.LEADING:case t.LEFT:case t.LIFETIME:case t.LIKE:case t.LIMIT:case t.LIVE:case t.LOCAL:case t.LOGS:case t.MATERIALIZE:case t.MATERIALIZED:case t.MAX:case t.MERGES:case t.MIN:case t.MINUTE:case t.MODIFY:case t.MONTH:case t.MOVE:case t.MUTATION:case t.NO:case t.NOT:case t.NULLS:case t.OFFSET:case t.ON:case t.OPTIMIZE:case t.OR:case t.ORDER:case t.OUTER:case t.OUTFILE:case t.OVER:case t.PARTITION:case t.POPULATE:case t.PRECEDING:case t.PREWHERE:case t.PRIMARY:case t.QUARTER:case t.RANGE:case t.RELOAD:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICA:case t.REPLICATED:case t.RIGHT:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SECOND:case t.SELECT:case t.SEMI:case t.SENDS:case t.SET:case t.SETTINGS:case t.SHOW:case t.SOURCE:case t.START:case t.STOP:case t.SUBSTRING:case t.SYNC:case t.SYNTAX:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TEMPORARY:case t.TEST:case t.THEN:case t.TIES:case t.TIMEOUT:case t.TIMESTAMP:case t.TO:case t.TOP:case t.TOTALS:case t.TRAILING:case t.TRIM:case t.TRUNCATE:case t.TTL:case t.TYPE:case t.UNBOUNDED:case t.UNION:case t.UPDATE:case t.USE:case t.USING:case t.UUID:case t.VALUES:case t.VIEW:case t.VOLUME:case t.WATCH:case t.WEEK:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.YEAR:case t.JSON_FALSE:case t.JSON_TRUE:case t.IDENTIFIER:this.enterOuterAlt(e,1),this.state=2128,this.identifier();break;case t.NULL_SQL:this.enterOuterAlt(e,2),this.state=2129,this.match(t.NULL_SQL);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}enumValue(){let e=new Wy(this.context,this.state);this.enterRule(e,254,t.RULE_enumValue);try{this.enterOuterAlt(e,1),this.state=2132,this.match(t.STRING_LITERAL),this.state=2133,this.match(t.EQ_SINGLE),this.state=2134,this.numberLiteral()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sempred(t,e,s){switch(e){case 24:return this.dictionaryAttributeDefinition_sempred(t,s);case 25:return this.dictionaryEngineClause_sempred(t,s);case 38:return this.engineClause_sempred(t,s);case 81:return this.joinExpression_sempred(t,s);case 107:return this.columnExpression_sempred(t,s);case 112:return this.tableExpression_sempred(t,s)}return!0}dictionaryAttributeDefinition_sempred(t,e){switch(e){case 0:return!t.attrs.has("default");case 1:return!t.attrs.has("expression");case 2:return!t.attrs.has("hierarchical");case 3:return!t.attrs.has("injective");case 4:return!t.attrs.has("is_object_id")}return!0}dictionaryEngineClause_sempred(t,e){switch(e){case 5:return!t.clauses.has("source");case 6:return!t.clauses.has("lifetime");case 7:return!t.clauses.has("layout");case 8:return!t.clauses.has("range");case 9:return!t.clauses.has("settings")}return!0}engineClause_sempred(t,e){switch(e){case 10:return!t.clauses.has("orderByClause");case 11:return!t.clauses.has("partitionByClause");case 12:return!t.clauses.has("primaryKeyClause");case 13:return!t.clauses.has("sampleByClause");case 14:return!t.clauses.has("ttlClause");case 15:return!t.clauses.has("settingsClause")}return!0}joinExpression_sempred(t,e){switch(e){case 16:return this.precpred(this.context,3);case 17:return this.precpred(this.context,4)}return!0}columnExpression_sempred(t,e){switch(e){case 18:return this.precpred(this.context,16);case 19:return this.precpred(this.context,15);case 20:return this.precpred(this.context,14);case 21:return this.precpred(this.context,11);case 22:return this.precpred(this.context,10);case 23:return this.precpred(this.context,9);case 24:return this.precpred(this.context,8);case 25:return this.precpred(this.context,19);case 26:return this.precpred(this.context,18);case 27:return this.precpred(this.context,13);case 28:return this.precpred(this.context,7)}return!0}tableExpression_sempred(t,e){return 29!==e||this.precpred(this.context,1)}static get _ATN(){return t.__ATN||(t.__ATN=(new fr).deserialize(t._serializedATN)),t.__ATN}get vocabulary(){return t.vocabulary}},Zi.ADD=1,Zi.AFTER=2,Zi.ALIAS=3,Zi.ALL=4,Zi.ALTER=5,Zi.AND=6,Zi.ANTI=7,Zi.ANY=8,Zi.ARRAY=9,Zi.AS=10,Zi.ASCENDING=11,Zi.ASOF=12,Zi.AST=13,Zi.ASYNC=14,Zi.ATTACH=15,Zi.BETWEEN=16,Zi.BOTH=17,Zi.BY=18,Zi.CASE=19,Zi.CAST=20,Zi.CHECK=21,Zi.CLEAR=22,Zi.CLUSTER=23,Zi.CODEC=24,Zi.COLLATE=25,Zi.COLUMN=26,Zi.COMMENT=27,Zi.CONSTRAINT=28,Zi.CREATE=29,Zi.CROSS=30,Zi.CUBE=31,Zi.CURRENT=32,Zi.DATABASE=33,Zi.DATABASES=34,Zi.DATE=35,Zi.DAY=36,Zi.DEDUPLICATE=37,Zi.DEFAULT=38,Zi.DELAY=39,Zi.DELETE=40,Zi.DESC=41,Zi.DESCENDING=42,Zi.DESCRIBE=43,Zi.DETACH=44,Zi.DICTIONARIES=45,Zi.DICTIONARY=46,Zi.DISK=47,Zi.DISTINCT=48,Zi.DISTRIBUTED=49,Zi.DROP=50,Zi.ELSE=51,Zi.END=52,Zi.ENGINE=53,Zi.ESTIMATE=54,Zi.EVENTS=55,Zi.EXISTS=56,Zi.EXPLAIN=57,Zi.EXPRESSION=58,Zi.EXTRACT=59,Zi.FETCHES=60,Zi.FINAL=61,Zi.FIRST=62,Zi.FLUSH=63,Zi.FOLLOWING=64,Zi.FOR=65,Zi.FORMAT=66,Zi.FREEZE=67,Zi.FROM=68,Zi.FULL=69,Zi.FUNCTION=70,Zi.GLOBAL=71,Zi.GRANULARITY=72,Zi.GROUP=73,Zi.HAVING=74,Zi.HIERARCHICAL=75,Zi.HOUR=76,Zi.ID=77,Zi.IF=78,Zi.ILIKE=79,Zi.IN=80,Zi.INDEX=81,Zi.INF=82,Zi.INJECTIVE=83,Zi.INNER=84,Zi.INSERT=85,Zi.INTERVAL=86,Zi.INTO=87,Zi.IS=88,Zi.IS_OBJECT_ID=89,Zi.JOIN=90,Zi.KEY=91,Zi.KILL=92,Zi.LAST=93,Zi.LAYOUT=94,Zi.LEADING=95,Zi.LEFT=96,Zi.LIFETIME=97,Zi.LIKE=98,Zi.LIMIT=99,Zi.LIVE=100,Zi.LOCAL=101,Zi.LOGS=102,Zi.MATERIALIZE=103,Zi.MATERIALIZED=104,Zi.MAX=105,Zi.MERGES=106,Zi.MIN=107,Zi.MINUTE=108,Zi.MODIFY=109,Zi.MONTH=110,Zi.MOVE=111,Zi.MUTATION=112,Zi.NAN_SQL=113,Zi.NO=114,Zi.NOT=115,Zi.NULL_SQL=116,Zi.NULLS=117,Zi.OFFSET=118,Zi.ON=119,Zi.OPTIMIZE=120,Zi.OR=121,Zi.ORDER=122,Zi.OUTER=123,Zi.OUTFILE=124,Zi.OVER=125,Zi.PARTITION=126,Zi.PIPELINE=127,Zi.PLAN=128,Zi.POPULATE=129,Zi.PRECEDING=130,Zi.PREWHERE=131,Zi.PRIMARY=132,Zi.PROJECTION=133,Zi.QUARTER=134,Zi.QUERY=135,Zi.RANGE=136,Zi.RELOAD=137,Zi.REMOVE=138,Zi.RENAME=139,Zi.REPLACE=140,Zi.REPLICA=141,Zi.REPLICATED=142,Zi.RIGHT=143,Zi.ROLLUP=144,Zi.ROW=145,Zi.ROWS=146,Zi.SAMPLE=147,Zi.SECOND=148,Zi.SELECT=149,Zi.SEMI=150,Zi.SENDS=151,Zi.SET=152,Zi.SETTINGS=153,Zi.SHOW=154,Zi.SOURCE=155,Zi.START=156,Zi.STOP=157,Zi.SUBSTRING=158,Zi.SYNC=159,Zi.SYNTAX=160,Zi.SYSTEM=161,Zi.TABLE=162,Zi.TABLES=163,Zi.TEMPORARY=164,Zi.TEST=165,Zi.THEN=166,Zi.TIES=167,Zi.TIMEOUT=168,Zi.TIMESTAMP=169,Zi.TO=170,Zi.TOP=171,Zi.TOTALS=172,Zi.TRAILING=173,Zi.TRIM=174,Zi.TREE=175,Zi.TRUNCATE=176,Zi.TTL=177,Zi.TYPE=178,Zi.UNBOUNDED=179,Zi.UNION=180,Zi.UPDATE=181,Zi.USE=182,Zi.USING=183,Zi.UUID=184,Zi.VALUES=185,Zi.VIEW=186,Zi.VOLUME=187,Zi.WATCH=188,Zi.WEEK=189,Zi.WHEN=190,Zi.WHERE=191,Zi.WINDOW=192,Zi.WITH=193,Zi.YEAR=194,Zi.JSON_FALSE=195,Zi.JSON_TRUE=196,Zi.IDENTIFIER=197,Zi.FLOATING_LITERAL=198,Zi.OCTAL_LITERAL=199,Zi.DECIMAL_LITERAL=200,Zi.HEXADECIMAL_LITERAL=201,Zi.STRING_LITERAL=202,Zi.ARROW=203,Zi.ASTERISK=204,Zi.BACKQUOTE=205,Zi.BACKSLASH=206,Zi.COLON=207,Zi.COMMA=208,Zi.CONCAT=209,Zi.DASH=210,Zi.DOT=211,Zi.EQ_DOUBLE=212,Zi.EQ_SINGLE=213,Zi.GE=214,Zi.GT=215,Zi.LBRACE=216,Zi.LBRACKET=217,Zi.LE=218,Zi.LPAREN=219,Zi.LT=220,Zi.NOT_EQ=221,Zi.PERCENT=222,Zi.PLUS=223,Zi.QUESTIONMARK=224,Zi.QUOTE_DOUBLE=225,Zi.QUOTE_SINGLE=226,Zi.RBRACE=227,Zi.RBRACKET=228,Zi.RPAREN=229,Zi.SEMICOLON=230,Zi.SLASH=231,Zi.UNDERSCORE=232,Zi.MULTI_LINE_COMMENT=233,Zi.SINGLE_LINE_COMMENT=234,Zi.WHITESPACE=235,Zi.RULE_root=0,Zi.RULE_statements=1,Zi.RULE_statement=2,Zi.RULE_notInsertStatement=3,Zi.RULE_commonTableExpressionStatement=4,Zi.RULE_namedQuery=5,Zi.RULE_columnAliases=6,Zi.RULE_alterStatement=7,Zi.RULE_alterTableClause=8,Zi.RULE_assignmentExpressionList=9,Zi.RULE_assignmentExpression=10,Zi.RULE_tableColumnPropertyType=11,Zi.RULE_partitionClause=12,Zi.RULE_attachStatement=13,Zi.RULE_checkStatement=14,Zi.RULE_deleteStatement=15,Zi.RULE_createTableStatement=16,Zi.RULE_createDatabaseStatement=17,Zi.RULE_createDictionaryStatement=18,Zi.RULE_createLiveViewStatement=19,Zi.RULE_createMaterializedViewStatement=20,Zi.RULE_createViewStatement=21,Zi.RULE_createStatement=22,Zi.RULE_dictionarySchemaClause=23,Zi.RULE_dictionaryAttributeDefinition=24,Zi.RULE_dictionaryEngineClause=25,Zi.RULE_dictionaryPrimaryKeyClause=26,Zi.RULE_dictionaryArgumentExpression=27,Zi.RULE_sourceClause=28,Zi.RULE_lifetimeClause=29,Zi.RULE_layoutClause=30,Zi.RULE_rangeClause=31,Zi.RULE_dictionarySettingsClause=32,Zi.RULE_clusterClause=33,Zi.RULE_uuidClause=34,Zi.RULE_destinationClause=35,Zi.RULE_subqueryClause=36,Zi.RULE_tableSchemaClause=37,Zi.RULE_engineClause=38,Zi.RULE_partitionByClause=39,Zi.RULE_primaryKeyClause=40,Zi.RULE_sampleByClause=41,Zi.RULE_ttlClause=42,Zi.RULE_engineExpression=43,Zi.RULE_tableElementExpression=44,Zi.RULE_tableColumnDefinition=45,Zi.RULE_tableColumnPropertyExpression=46,Zi.RULE_tableIndexDefinition=47,Zi.RULE_tableProjectionDefinition=48,Zi.RULE_codecExpression=49,Zi.RULE_codecArgExpression=50,Zi.RULE_ttlExpression=51,Zi.RULE_describeStatement=52,Zi.RULE_dropStatement=53,Zi.RULE_existsStatement=54,Zi.RULE_explainStatement=55,Zi.RULE_insertStatement=56,Zi.RULE_columnsClause=57,Zi.RULE_dataClause=58,Zi.RULE_valuesStatement=59,Zi.RULE_killStatement=60,Zi.RULE_optimizeStatement=61,Zi.RULE_renameStatement=62,Zi.RULE_projectionSelectStatement=63,Zi.RULE_selectUnionStatement=64,Zi.RULE_selectStatementWithParentheses=65,Zi.RULE_selectStatement=66,Zi.RULE_withClause=67,Zi.RULE_topClause=68,Zi.RULE_fromClause=69,Zi.RULE_arrayJoinClause=70,Zi.RULE_windowClause=71,Zi.RULE_prewhereClause=72,Zi.RULE_whereClause=73,Zi.RULE_groupByClause=74,Zi.RULE_havingClause=75,Zi.RULE_orderByClause=76,Zi.RULE_projectionOrderByClause=77,Zi.RULE_limitByClause=78,Zi.RULE_limitClause=79,Zi.RULE_settingsClause=80,Zi.RULE_joinExpression=81,Zi.RULE_joinOperator=82,Zi.RULE_joinOperatorCross=83,Zi.RULE_joinConstraintClause=84,Zi.RULE_sampleClause=85,Zi.RULE_limitExpression=86,Zi.RULE_orderExpressionList=87,Zi.RULE_orderExpression=88,Zi.RULE_ratioExpression=89,Zi.RULE_settingExpressionList=90,Zi.RULE_settingExpression=91,Zi.RULE_windowExpression=92,Zi.RULE_windowPartitionByClause=93,Zi.RULE_windowOrderByClause=94,Zi.RULE_windowFrameClause=95,Zi.RULE_windowFrameExtend=96,Zi.RULE_windowFrameBound=97,Zi.RULE_setStatement=98,Zi.RULE_showStatement=99,Zi.RULE_systemStatement=100,Zi.RULE_truncateStatement=101,Zi.RULE_useStatement=102,Zi.RULE_watchStatement=103,Zi.RULE_columnTypeExpression=104,Zi.RULE_columnExpressionList=105,Zi.RULE_columnsExpression=106,Zi.RULE_columnExpression=107,Zi.RULE_columnArgumentList=108,Zi.RULE_columnArgumentExpression=109,Zi.RULE_columnLambdaExpression=110,Zi.RULE_columnIdentifier=111,Zi.RULE_tableExpression=112,Zi.RULE_tableFunctionExpression=113,Zi.RULE_tableIdentifier=114,Zi.RULE_tableArgList=115,Zi.RULE_tableArgExpression=116,Zi.RULE_databaseIdentifier=117,Zi.RULE_floatingLiteral=118,Zi.RULE_numberLiteral=119,Zi.RULE_literal=120,Zi.RULE_interval=121,Zi.RULE_keyword=122,Zi.RULE_keywordForAlias=123,Zi.RULE_alias=124,Zi.RULE_identifier=125,Zi.RULE_identifierOrNull=126,Zi.RULE_enumValue=127,Zi.literalNames=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"'false'","'true'",null,null,null,null,null,null,"'->'","'*'","'`'","''","':'","','","'||'","'-'","'.'","'=='","'='","'>='","'>'","'{'","'['","'<='","'('","'<'",null,"'%'","'+'","'?'","'\"'","'''","'}'","']'","')'","';'","'/'","'_'"],Zi.symbolicNames=[null,"ADD","AFTER","ALIAS","ALL","ALTER","AND","ANTI","ANY","ARRAY","AS","ASCENDING","ASOF","AST","ASYNC","ATTACH","BETWEEN","BOTH","BY","CASE","CAST","CHECK","CLEAR","CLUSTER","CODEC","COLLATE","COLUMN","COMMENT","CONSTRAINT","CREATE","CROSS","CUBE","CURRENT","DATABASE","DATABASES","DATE","DAY","DEDUPLICATE","DEFAULT","DELAY","DELETE","DESC","DESCENDING","DESCRIBE","DETACH","DICTIONARIES","DICTIONARY","DISK","DISTINCT","DISTRIBUTED","DROP","ELSE","END","ENGINE","ESTIMATE","EVENTS","EXISTS","EXPLAIN","EXPRESSION","EXTRACT","FETCHES","FINAL","FIRST","FLUSH","FOLLOWING","FOR","FORMAT","FREEZE","FROM","FULL","FUNCTION","GLOBAL","GRANULARITY","GROUP","HAVING","HIERARCHICAL","HOUR","ID","IF","ILIKE","IN","INDEX","INF","INJECTIVE","INNER","INSERT","INTERVAL","INTO","IS","IS_OBJECT_ID","JOIN","KEY","KILL","LAST","LAYOUT","LEADING","LEFT","LIFETIME","LIKE","LIMIT","LIVE","LOCAL","LOGS","MATERIALIZE","MATERIALIZED","MAX","MERGES","MIN","MINUTE","MODIFY","MONTH","MOVE","MUTATION","NAN_SQL","NO","NOT","NULL_SQL","NULLS","OFFSET","ON","OPTIMIZE","OR","ORDER","OUTER","OUTFILE","OVER","PARTITION","PIPELINE","PLAN","POPULATE","PRECEDING","PREWHERE","PRIMARY","PROJECTION","QUARTER","QUERY","RANGE","RELOAD","REMOVE","RENAME","REPLACE","REPLICA","REPLICATED","RIGHT","ROLLUP","ROW","ROWS","SAMPLE","SECOND","SELECT","SEMI","SENDS","SET","SETTINGS","SHOW","SOURCE","START","STOP","SUBSTRING","SYNC","SYNTAX","SYSTEM","TABLE","TABLES","TEMPORARY","TEST","THEN","TIES","TIMEOUT","TIMESTAMP","TO","TOP","TOTALS","TRAILING","TRIM","TREE","TRUNCATE","TTL","TYPE","UNBOUNDED","UNION","UPDATE","USE","USING","UUID","VALUES","VIEW","VOLUME","WATCH","WEEK","WHEN","WHERE","WINDOW","WITH","YEAR","JSON_FALSE","JSON_TRUE","IDENTIFIER","FLOATING_LITERAL","OCTAL_LITERAL","DECIMAL_LITERAL","HEXADECIMAL_LITERAL","STRING_LITERAL","ARROW","ASTERISK","BACKQUOTE","BACKSLASH","COLON","COMMA","CONCAT","DASH","DOT","EQ_DOUBLE","EQ_SINGLE","GE","GT","LBRACE","LBRACKET","LE","LPAREN","LT","NOT_EQ","PERCENT","PLUS","QUESTIONMARK","QUOTE_DOUBLE","QUOTE_SINGLE","RBRACE","RBRACKET","RPAREN","SEMICOLON","SLASH","UNDERSCORE","MULTI_LINE_COMMENT","SINGLE_LINE_COMMENT","WHITESPACE"],Zi.ruleNames=["root","statements","statement","notInsertStatement","commonTableExpressionStatement","namedQuery","columnAliases","alterStatement","alterTableClause","assignmentExpressionList","assignmentExpression","tableColumnPropertyType","partitionClause","attachStatement","checkStatement","deleteStatement","createTableStatement","createDatabaseStatement","createDictionaryStatement","createLiveViewStatement","createMaterializedViewStatement","createViewStatement","createStatement","dictionarySchemaClause","dictionaryAttributeDefinition","dictionaryEngineClause","dictionaryPrimaryKeyClause","dictionaryArgumentExpression","sourceClause","lifetimeClause","layoutClause","rangeClause","dictionarySettingsClause","clusterClause","uuidClause","destinationClause","subqueryClause","tableSchemaClause","engineClause","partitionByClause","primaryKeyClause","sampleByClause","ttlClause","engineExpression","tableElementExpression","tableColumnDefinition","tableColumnPropertyExpression","tableIndexDefinition","tableProjectionDefinition","codecExpression","codecArgExpression","ttlExpression","describeStatement","dropStatement","existsStatement","explainStatement","insertStatement","columnsClause","dataClause","valuesStatement","killStatement","optimizeStatement","renameStatement","projectionSelectStatement","selectUnionStatement","selectStatementWithParentheses","selectStatement","withClause","topClause","fromClause","arrayJoinClause","windowClause","prewhereClause","whereClause","groupByClause","havingClause","orderByClause","projectionOrderByClause","limitByClause","limitClause","settingsClause","joinExpression","joinOperator","joinOperatorCross","joinConstraintClause","sampleClause","limitExpression","orderExpressionList","orderExpression","ratioExpression","settingExpressionList","settingExpression","windowExpression","windowPartitionByClause","windowOrderByClause","windowFrameClause","windowFrameExtend","windowFrameBound","setStatement","showStatement","systemStatement","truncateStatement","useStatement","watchStatement","columnTypeExpression","columnExpressionList","columnsExpression","columnExpression","columnArgumentList","columnArgumentExpression","columnLambdaExpression","columnIdentifier","tableExpression","tableFunctionExpression","tableIdentifier","tableArgList","tableArgExpression","databaseIdentifier","floatingLiteral","numberLiteral","literal","interval","keyword","keywordForAlias","alias","identifier","identifierOrNull","enumValue"],Zi._serializedATN=[4,1,235,2137,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,1,0,3,0,258,8,0,1,0,1,0,1,1,1,1,3,1,264,8,1,1,1,1,1,1,1,1,1,3,1,270,8,1,1,2,1,2,1,2,1,2,3,2,276,8,2,1,2,1,2,3,2,280,8,2,1,2,3,2,283,8,2,1,2,3,2,286,8,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,308,8,3,1,3,3,3,311,8,3,1,4,1,4,1,4,1,4,5,4,317,8,4,10,4,12,4,320,9,4,1,5,1,5,3,5,324,8,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,5,6,335,8,6,10,6,12,6,338,9,6,1,6,1,6,1,7,1,7,1,7,1,7,3,7,346,8,7,1,7,1,7,1,7,5,7,351,8,7,10,7,12,7,354,9,7,1,8,1,8,1,8,1,8,1,8,3,8,361,8,8,1,8,1,8,1,8,3,8,366,8,8,1,8,1,8,1,8,1,8,1,8,3,8,373,8,8,1,8,1,8,1,8,3,8,378,8,8,1,8,1,8,1,8,1,8,1,8,3,8,385,8,8,1,8,1,8,1,8,3,8,390,8,8,1,8,1,8,1,8,1,8,3,8,396,8,8,1,8,1,8,1,8,1,8,3,8,402,8,8,1,8,1,8,1,8,3,8,407,8,8,1,8,1,8,1,8,1,8,3,8,413,8,8,1,8,1,8,1,8,3,8,418,8,8,1,8,1,8,1,8,1,8,3,8,424,8,8,1,8,1,8,1,8,3,8,429,8,8,1,8,1,8,1,8,1,8,3,8,435,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,449,8,8,1,8,1,8,1,8,1,8,1,8,3,8,456,8,8,1,8,1,8,1,8,1,8,1,8,3,8,463,8,8,1,8,1,8,1,8,1,8,1,8,3,8,470,8,8,1,8,1,8,1,8,1,8,3,8,476,8,8,1,8,1,8,1,8,3,8,481,8,8,1,8,1,8,1,8,1,8,3,8,487,8,8,1,8,1,8,1,8,3,8,492,8,8,1,8,1,8,1,8,1,8,3,8,498,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,507,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,517,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,527,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,547,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,555,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,570,8,8,1,9,1,9,1,9,5,9,575,8,9,10,9,12,9,578,9,9,1,10,1,10,1,10,1,10,1,11,1,11,1,12,1,12,1,12,1,12,1,12,3,12,591,8,12,1,13,1,13,1,13,1,13,3,13,597,8,13,1,14,1,14,1,14,1,14,3,14,603,8,14,1,15,1,15,1,15,1,15,3,15,609,8,15,1,15,3,15,612,8,15,1,16,1,16,1,16,1,16,3,16,618,8,16,1,16,3,16,621,8,16,1,16,3,16,624,8,16,1,16,1,16,1,16,1,16,3,16,630,8,16,1,16,1,16,3,16,634,8,16,1,16,3,16,637,8,16,1,16,3,16,640,8,16,1,16,3,16,643,8,16,1,16,3,16,646,8,16,1,17,1,17,1,17,1,17,1,17,3,17,653,8,17,1,17,1,17,3,17,657,8,17,1,17,1,17,1,18,1,18,1,18,1,18,3,18,665,8,18,1,18,3,18,668,8,18,1,18,1,18,1,18,1,18,3,18,674,8,18,1,18,1,18,3,18,678,8,18,1,18,3,18,681,8,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,3,19,692,8,19,1,19,1,19,3,19,696,8,19,1,19,3,19,699,8,19,1,19,1,19,1,19,3,19,704,8,19,3,19,706,8,19,1,19,3,19,709,8,19,1,19,3,19,712,8,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,3,20,722,8,20,1,20,1,20,3,20,726,8,20,1,20,3,20,729,8,20,1,20,3,20,732,8,20,1,20,1,20,1,20,3,20,737,8,20,3,20,739,8,20,1,20,1,20,1,21,1,21,1,21,3,21,746,8,21,1,21,1,21,1,21,1,21,3,21,752,8,21,1,21,1,21,3,21,756,8,21,1,21,3,21,759,8,21,1,21,3,21,762,8,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,3,22,772,8,22,1,23,1,23,1,23,1,23,5,23,778,8,23,10,23,12,23,781,9,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,5,24,806,8,24,10,24,12,24,809,9,24,1,25,3,25,812,8,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,5,25,834,8,25,10,25,12,25,837,9,25,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,3,27,847,8,27,1,27,3,27,850,8,27,1,28,1,28,1,28,1,28,1,28,5,28,857,8,28,10,28,12,28,860,9,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,876,8,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,5,30,885,8,30,10,30,12,30,888,9,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,3,31,905,8,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,3,33,918,8,33,1,34,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,37,1,37,1,37,1,37,5,37,933,8,37,10,37,12,37,936,9,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,944,8,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,5,38,971,8,38,10,38,12,38,974,9,38,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,5,42,992,8,42,10,42,12,42,995,9,42,1,43,1,43,3,43,999,8,43,1,43,1,43,1,43,3,43,1004,8,43,1,43,3,43,1007,8,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1019,8,44,1,45,1,45,1,45,3,45,1024,8,45,1,45,1,45,3,45,1028,8,45,1,45,3,45,1031,8,45,1,45,1,45,3,45,1035,8,45,1,45,1,45,3,45,1039,8,45,1,45,1,45,1,45,3,45,1044,8,45,1,45,3,45,1047,8,45,1,45,1,45,3,45,1051,8,45,3,45,1053,8,45,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,5,49,1073,8,49,10,49,12,49,1076,9,49,1,49,1,49,1,50,1,50,1,50,3,50,1083,8,50,1,50,3,50,1086,8,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,3,51,1096,8,51,1,52,1,52,3,52,1100,8,52,1,52,1,52,1,53,1,53,1,53,1,53,3,53,1108,8,53,1,53,1,53,3,53,1112,8,53,1,53,1,53,1,53,3,53,1117,8,53,1,53,1,53,3,53,1121,8,53,1,53,1,53,3,53,1125,8,53,1,53,1,53,3,53,1129,8,53,1,53,1,53,3,53,1133,8,53,3,53,1135,8,53,1,54,1,54,1,54,1,54,1,54,1,54,3,54,1143,8,54,1,54,1,54,3,54,1147,8,54,1,54,3,54,1150,8,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,3,55,1173,8,55,1,56,1,56,1,56,3,56,1178,8,56,1,56,1,56,1,56,3,56,1183,8,56,1,56,3,56,1186,8,56,1,56,1,56,1,57,1,57,1,57,1,57,5,57,1194,8,57,10,57,12,57,1197,9,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,3,58,1206,8,58,1,58,1,58,3,58,1210,8,58,1,59,1,59,1,59,3,59,1215,8,59,1,59,1,59,1,59,1,59,3,59,1221,8,59,1,59,5,59,1224,8,59,10,59,12,59,1227,9,59,1,60,1,60,1,60,3,60,1232,8,60,1,60,1,60,3,60,1236,8,60,1,61,1,61,1,61,1,61,3,61,1242,8,61,1,61,3,61,1245,8,61,1,61,3,61,1248,8,61,1,61,3,61,1251,8,61,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,5,62,1263,8,62,10,62,12,62,1266,9,62,1,62,3,62,1269,8,62,1,63,1,63,3,63,1273,8,63,1,63,1,63,1,63,3,63,1278,8,63,1,63,3,63,1281,8,63,1,63,1,63,1,64,1,64,1,64,1,64,5,64,1289,8,64,10,64,12,64,1292,9,64,1,65,1,65,1,65,1,65,1,65,3,65,1299,8,65,1,66,3,66,1302,8,66,1,66,1,66,3,66,1306,8,66,1,66,3,66,1309,8,66,1,66,1,66,3,66,1313,8,66,1,66,3,66,1316,8,66,1,66,3,66,1319,8,66,1,66,3,66,1322,8,66,1,66,3,66,1325,8,66,1,66,3,66,1328,8,66,1,66,1,66,3,66,1332,8,66,1,66,1,66,3,66,1336,8,66,1,66,3,66,1339,8,66,1,66,3,66,1342,8,66,1,66,3,66,1345,8,66,1,66,3,66,1348,8,66,1,66,3,66,1351,8,66,1,67,1,67,1,67,1,68,1,68,1,68,1,68,3,68,1360,8,68,1,69,1,69,1,69,1,70,3,70,1366,8,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,3,74,1393,8,74,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,3,79,1415,8,79,1,80,1,80,1,80,1,81,1,81,1,81,3,81,1423,8,81,1,81,3,81,1426,8,81,1,81,1,81,1,81,1,81,3,81,1432,8,81,1,81,1,81,1,81,1,81,1,81,1,81,3,81,1440,8,81,1,81,3,81,1443,8,81,1,81,1,81,1,81,1,81,5,81,1449,8,81,10,81,12,81,1452,9,81,1,82,3,82,1455,8,82,1,82,1,82,1,82,3,82,1460,8,82,1,82,3,82,1463,8,82,1,82,3,82,1466,8,82,1,82,1,82,3,82,1470,8,82,1,82,1,82,3,82,1474,8,82,1,82,3,82,1477,8,82,3,82,1479,8,82,1,82,3,82,1482,8,82,1,82,1,82,3,82,1486,8,82,1,82,1,82,3,82,1490,8,82,1,82,3,82,1493,8,82,3,82,1495,8,82,3,82,1497,8,82,1,83,3,83,1500,8,83,1,83,1,83,1,83,3,83,1505,8,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,3,84,1516,8,84,1,85,1,85,1,85,1,85,3,85,1522,8,85,1,86,1,86,1,86,3,86,1527,8,86,1,87,1,87,1,87,5,87,1532,8,87,10,87,12,87,1535,9,87,1,88,1,88,3,88,1539,8,88,1,88,1,88,3,88,1543,8,88,1,88,1,88,3,88,1547,8,88,1,89,1,89,1,89,3,89,1552,8,89,1,90,1,90,1,90,5,90,1557,8,90,10,90,12,90,1560,9,90,1,91,1,91,1,91,1,91,1,92,3,92,1567,8,92,1,92,3,92,1570,8,92,1,92,3,92,1573,8,92,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,3,96,1592,8,96,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,3,97,1606,8,97,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,3,99,1622,8,99,1,99,3,99,1625,8,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,3,99,1634,8,99,1,99,1,99,3,99,1638,8,99,1,99,1,99,1,99,3,99,1643,8,99,1,99,1,99,1,99,3,99,1648,8,99,1,99,3,99,1651,8,99,3,99,1653,8,99,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,3,100,1675,8,100,1,100,3,100,1678,8,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,3,100,1689,8,100,1,101,1,101,3,101,1693,8,101,1,101,3,101,1696,8,101,1,101,1,101,3,101,1700,8,101,1,101,1,101,3,101,1704,8,101,1,102,1,102,1,102,1,103,1,103,1,103,3,103,1712,8,103,1,103,1,103,3,103,1716,8,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,5,104,1727,8,104,10,104,12,104,1730,9,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,5,104,1739,8,104,10,104,12,104,1742,9,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,5,104,1751,8,104,10,104,12,104,1754,9,104,1,104,1,104,1,104,1,104,1,104,3,104,1761,8,104,1,104,1,104,3,104,1765,8,104,1,105,1,105,1,105,5,105,1770,8,105,10,105,12,105,1773,9,105,1,106,1,106,1,106,3,106,1778,8,106,1,106,1,106,1,106,1,106,1,106,1,106,3,106,1786,8,106,1,107,1,107,1,107,3,107,1791,8,107,1,107,1,107,1,107,1,107,1,107,4,107,1798,8,107,11,107,12,107,1799,1,107,1,107,3,107,1804,8,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,3,107,1835,8,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,3,107,1852,8,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,3,107,1864,8,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,3,107,1874,8,107,1,107,3,107,1877,8,107,1,107,1,107,3,107,1881,8,107,1,107,3,107,1884,8,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,3,107,1896,8,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,3,107,1913,8,107,1,107,1,107,3,107,1917,8,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,3,107,1934,8,107,1,107,3,107,1937,8,107,1,107,1,107,3,107,1941,8,107,1,107,3,107,1944,8,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,3,107,1955,8,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,3,107,1979,8,107,1,107,1,107,1,107,1,107,1,107,3,107,1986,8,107,5,107,1988,8,107,10,107,12,107,1991,9,107,1,108,1,108,1,108,5,108,1996,8,108,10,108,12,108,1999,9,108,1,109,1,109,3,109,2003,8,109,1,110,1,110,1,110,1,110,5,110,2009,8,110,10,110,12,110,2012,9,110,1,110,1,110,1,110,1,110,1,110,5,110,2019,8,110,10,110,12,110,2022,9,110,3,110,2024,8,110,1,110,1,110,1,110,1,111,1,111,1,111,3,111,2032,8,111,1,111,1,111,1,111,3,111,2037,8,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,3,112,2046,8,112,1,112,1,112,1,112,1,112,3,112,2052,8,112,5,112,2054,8,112,10,112,12,112,2057,9,112,1,113,1,113,1,113,3,113,2062,8,113,1,113,1,113,1,114,1,114,1,114,3,114,2069,8,114,1,114,1,114,1,115,1,115,1,115,5,115,2076,8,115,10,115,12,115,2079,9,115,1,116,1,116,1,116,3,116,2084,8,116,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,3,118,2094,8,118,3,118,2096,8,118,1,119,3,119,2099,8,119,1,119,1,119,1,119,1,119,1,119,1,119,3,119,2107,8,119,1,120,1,120,1,120,3,120,2112,8,120,1,121,1,121,1,122,1,122,1,123,1,123,1,124,1,124,3,124,2122,8,124,1,125,1,125,1,125,3,125,2127,8,125,1,126,1,126,3,126,2131,8,126,1,127,1,127,1,127,1,127,1,127,0,3,162,214,224,128,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,0,28,6,0,3,3,24,24,27,27,38,38,104,104,177,177,2,0,15,15,29,29,3,0,3,3,38,38,104,104,2,0,41,41,43,43,2,0,44,44,50,50,3,0,14,14,159,159,165,165,2,0,31,31,144,144,2,0,84,84,96,96,2,0,71,71,101,101,3,0,4,4,8,8,12,12,4,0,4,4,7,8,12,12,150,150,2,0,96,96,143,143,2,0,4,4,8,8,2,0,118,118,208,208,2,0,11,11,41,42,2,0,62,62,93,93,2,0,136,136,146,146,2,0,68,68,80,80,1,0,156,157,3,0,17,17,95,95,173,173,3,0,204,204,222,222,231,231,2,0,209,210,223,223,2,0,79,79,98,98,1,0,199,200,2,0,210,210,223,223,8,0,36,36,76,76,108,108,110,110,134,134,148,148,189,189,194,194,15,0,2,35,37,53,55,75,77,81,83,107,109,109,111,112,114,115,117,126,129,132,136,147,149,174,176,188,190,193,195,196,4,0,35,35,62,62,77,77,91,91,2428,0,257,1,0,0,0,2,269,1,0,0,0,4,285,1,0,0,0,6,310,1,0,0,0,8,312,1,0,0,0,10,321,1,0,0,0,12,330,1,0,0,0,14,341,1,0,0,0,16,569,1,0,0,0,18,571,1,0,0,0,20,579,1,0,0,0,22,583,1,0,0,0,24,590,1,0,0,0,26,592,1,0,0,0,28,598,1,0,0,0,30,604,1,0,0,0,32,620,1,0,0,0,34,647,1,0,0,0,36,667,1,0,0,0,38,685,1,0,0,0,40,715,1,0,0,0,42,742,1,0,0,0,44,771,1,0,0,0,46,773,1,0,0,0,48,784,1,0,0,0,50,811,1,0,0,0,52,838,1,0,0,0,54,842,1,0,0,0,56,851,1,0,0,0,58,864,1,0,0,0,60,879,1,0,0,0,62,892,1,0,0,0,64,908,1,0,0,0,66,913,1,0,0,0,68,919,1,0,0,0,70,922,1,0,0,0,72,925,1,0,0,0,74,943,1,0,0,0,76,945,1,0,0,0,78,975,1,0,0,0,80,979,1,0,0,0,82,983,1,0,0,0,84,987,1,0,0,0,86,996,1,0,0,0,88,1018,1,0,0,0,90,1052,1,0,0,0,92,1054,1,0,0,0,94,1057,1,0,0,0,96,1064,1,0,0,0,98,1067,1,0,0,0,100,1079,1,0,0,0,102,1087,1,0,0,0,104,1097,1,0,0,0,106,1134,1,0,0,0,108,1149,1,0,0,0,110,1172,1,0,0,0,112,1174,1,0,0,0,114,1189,1,0,0,0,116,1209,1,0,0,0,118,1211,1,0,0,0,120,1228,1,0,0,0,122,1237,1,0,0,0,124,1252,1,0,0,0,126,1270,1,0,0,0,128,1284,1,0,0,0,130,1298,1,0,0,0,132,1301,1,0,0,0,134,1352,1,0,0,0,136,1355,1,0,0,0,138,1361,1,0,0,0,140,1365,1,0,0,0,142,1371,1,0,0,0,144,1378,1,0,0,0,146,1381,1,0,0,0,148,1384,1,0,0,0,150,1394,1,0,0,0,152,1397,1,0,0,0,154,1401,1,0,0,0,156,1405,1,0,0,0,158,1410,1,0,0,0,160,1416,1,0,0,0,162,1431,1,0,0,0,164,1496,1,0,0,0,166,1504,1,0,0,0,168,1515,1,0,0,0,170,1517,1,0,0,0,172,1523,1,0,0,0,174,1528,1,0,0,0,176,1536,1,0,0,0,178,1548,1,0,0,0,180,1553,1,0,0,0,182,1561,1,0,0,0,184,1566,1,0,0,0,186,1574,1,0,0,0,188,1578,1,0,0,0,190,1582,1,0,0,0,192,1591,1,0,0,0,194,1605,1,0,0,0,196,1607,1,0,0,0,198,1652,1,0,0,0,200,1688,1,0,0,0,202,1690,1,0,0,0,204,1705,1,0,0,0,206,1708,1,0,0,0,208,1764,1,0,0,0,210,1766,1,0,0,0,212,1785,1,0,0,0,214,1916,1,0,0,0,216,1992,1,0,0,0,218,2002,1,0,0,0,220,2023,1,0,0,0,222,2031,1,0,0,0,224,2045,1,0,0,0,226,2058,1,0,0,0,228,2068,1,0,0,0,230,2072,1,0,0,0,232,2083,1,0,0,0,234,2085,1,0,0,0,236,2095,1,0,0,0,238,2098,1,0,0,0,240,2111,1,0,0,0,242,2113,1,0,0,0,244,2115,1,0,0,0,246,2117,1,0,0,0,248,2121,1,0,0,0,250,2126,1,0,0,0,252,2130,1,0,0,0,254,2132,1,0,0,0,256,258,3,2,1,0,257,256,1,0,0,0,257,258,1,0,0,0,258,259,1,0,0,0,259,260,5,0,0,1,260,1,1,0,0,0,261,263,3,4,2,0,262,264,5,230,0,0,263,262,1,0,0,0,263,264,1,0,0,0,264,270,1,0,0,0,265,266,3,4,2,0,266,267,5,230,0,0,267,268,3,2,1,0,268,270,1,0,0,0,269,261,1,0,0,0,269,265,1,0,0,0,270,3,1,0,0,0,271,275,3,6,3,0,272,273,5,87,0,0,273,274,5,124,0,0,274,276,5,202,0,0,275,272,1,0,0,0,275,276,1,0,0,0,276,279,1,0,0,0,277,278,5,66,0,0,278,280,3,252,126,0,279,277,1,0,0,0,279,280,1,0,0,0,280,282,1,0,0,0,281,283,5,230,0,0,282,281,1,0,0,0,282,283,1,0,0,0,283,286,1,0,0,0,284,286,3,112,56,0,285,271,1,0,0,0,285,284,1,0,0,0,286,5,1,0,0,0,287,311,3,14,7,0,288,311,3,26,13,0,289,311,3,28,14,0,290,311,3,44,22,0,291,311,3,104,52,0,292,311,3,30,15,0,293,311,3,106,53,0,294,311,3,108,54,0,295,311,3,110,55,0,296,311,3,120,60,0,297,311,3,122,61,0,298,311,3,124,62,0,299,311,3,128,64,0,300,311,3,196,98,0,301,311,3,198,99,0,302,311,3,200,100,0,303,311,3,202,101,0,304,311,3,204,102,0,305,311,3,206,103,0,306,308,3,8,4,0,307,306,1,0,0,0,307,308,1,0,0,0,308,309,1,0,0,0,309,311,3,132,66,0,310,287,1,0,0,0,310,288,1,0,0,0,310,289,1,0,0,0,310,290,1,0,0,0,310,291,1,0,0,0,310,292,1,0,0,0,310,293,1,0,0,0,310,294,1,0,0,0,310,295,1,0,0,0,310,296,1,0,0,0,310,297,1,0,0,0,310,298,1,0,0,0,310,299,1,0,0,0,310,300,1,0,0,0,310,301,1,0,0,0,310,302,1,0,0,0,310,303,1,0,0,0,310,304,1,0,0,0,310,305,1,0,0,0,310,307,1,0,0,0,311,7,1,0,0,0,312,313,5,193,0,0,313,318,3,10,5,0,314,315,5,208,0,0,315,317,3,10,5,0,316,314,1,0,0,0,317,320,1,0,0,0,318,316,1,0,0,0,318,319,1,0,0,0,319,9,1,0,0,0,320,318,1,0,0,0,321,323,3,250,125,0,322,324,3,12,6,0,323,322,1,0,0,0,323,324,1,0,0,0,324,325,1,0,0,0,325,326,5,10,0,0,326,327,5,219,0,0,327,328,3,6,3,0,328,329,5,229,0,0,329,11,1,0,0,0,330,331,5,219,0,0,331,336,3,250,125,0,332,333,5,208,0,0,333,335,3,250,125,0,334,332,1,0,0,0,335,338,1,0,0,0,336,334,1,0,0,0,336,337,1,0,0,0,337,339,1,0,0,0,338,336,1,0,0,0,339,340,5,229,0,0,340,13,1,0,0,0,341,342,5,5,0,0,342,343,5,162,0,0,343,345,3,228,114,0,344,346,3,66,33,0,345,344,1,0,0,0,345,346,1,0,0,0,346,347,1,0,0,0,347,352,3,16,8,0,348,349,5,208,0,0,349,351,3,16,8,0,350,348,1,0,0,0,351,354,1,0,0,0,352,350,1,0,0,0,352,353,1,0,0,0,353,15,1,0,0,0,354,352,1,0,0,0,355,356,5,1,0,0,356,360,5,26,0,0,357,358,5,78,0,0,358,359,5,115,0,0,359,361,5,56,0,0,360,357,1,0,0,0,360,361,1,0,0,0,361,362,1,0,0,0,362,365,3,90,45,0,363,364,5,2,0,0,364,366,3,222,111,0,365,363,1,0,0,0,365,366,1,0,0,0,366,570,1,0,0,0,367,368,5,1,0,0,368,372,5,81,0,0,369,370,5,78,0,0,370,371,5,115,0,0,371,373,5,56,0,0,372,369,1,0,0,0,372,373,1,0,0,0,373,374,1,0,0,0,374,377,3,94,47,0,375,376,5,2,0,0,376,378,3,222,111,0,377,375,1,0,0,0,377,378,1,0,0,0,378,570,1,0,0,0,379,380,5,1,0,0,380,384,5,133,0,0,381,382,5,78,0,0,382,383,5,115,0,0,383,385,5,56,0,0,384,381,1,0,0,0,384,385,1,0,0,0,385,386,1,0,0,0,386,389,3,96,48,0,387,388,5,2,0,0,388,390,3,222,111,0,389,387,1,0,0,0,389,390,1,0,0,0,390,570,1,0,0,0,391,392,5,15,0,0,392,395,3,24,12,0,393,394,5,68,0,0,394,396,3,228,114,0,395,393,1,0,0,0,395,396,1,0,0,0,396,570,1,0,0,0,397,398,5,22,0,0,398,401,5,26,0,0,399,400,5,78,0,0,400,402,5,56,0,0,401,399,1,0,0,0,401,402,1,0,0,0,402,403,1,0,0,0,403,406,3,222,111,0,404,405,5,80,0,0,405,407,3,24,12,0,406,404,1,0,0,0,406,407,1,0,0,0,407,570,1,0,0,0,408,409,5,22,0,0,409,412,5,81,0,0,410,411,5,78,0,0,411,413,5,56,0,0,412,410,1,0,0,0,412,413,1,0,0,0,413,414,1,0,0,0,414,417,3,222,111,0,415,416,5,80,0,0,416,418,3,24,12,0,417,415,1,0,0,0,417,418,1,0,0,0,418,570,1,0,0,0,419,420,5,22,0,0,420,423,5,133,0,0,421,422,5,78,0,0,422,424,5,56,0,0,423,421,1,0,0,0,423,424,1,0,0,0,424,425,1,0,0,0,425,428,3,222,111,0,426,427,5,80,0,0,427,429,3,24,12,0,428,426,1,0,0,0,428,429,1,0,0,0,429,570,1,0,0,0,430,431,5,27,0,0,431,434,5,26,0,0,432,433,5,78,0,0,433,435,5,56,0,0,434,432,1,0,0,0,434,435,1,0,0,0,435,436,1,0,0,0,436,437,3,222,111,0,437,438,5,202,0,0,438,570,1,0,0,0,439,440,5,40,0,0,440,441,5,191,0,0,441,570,3,214,107,0,442,443,5,44,0,0,443,570,3,24,12,0,444,445,5,50,0,0,445,448,5,26,0,0,446,447,5,78,0,0,447,449,5,56,0,0,448,446,1,0,0,0,448,449,1,0,0,0,449,450,1,0,0,0,450,570,3,222,111,0,451,452,5,50,0,0,452,455,5,81,0,0,453,454,5,78,0,0,454,456,5,56,0,0,455,453,1,0,0,0,455,456,1,0,0,0,456,457,1,0,0,0,457,570,3,222,111,0,458,459,5,50,0,0,459,462,5,133,0,0,460,461,5,78,0,0,461,463,5,56,0,0,462,460,1,0,0,0,462,463,1,0,0,0,463,464,1,0,0,0,464,570,3,222,111,0,465,466,5,50,0,0,466,570,3,24,12,0,467,469,5,67,0,0,468,470,3,24,12,0,469,468,1,0,0,0,469,470,1,0,0,0,470,570,1,0,0,0,471,472,5,103,0,0,472,475,5,81,0,0,473,474,5,78,0,0,474,476,5,56,0,0,475,473,1,0,0,0,475,476,1,0,0,0,476,477,1,0,0,0,477,480,3,222,111,0,478,479,5,80,0,0,479,481,3,24,12,0,480,478,1,0,0,0,480,481,1,0,0,0,481,570,1,0,0,0,482,483,5,103,0,0,483,486,5,133,0,0,484,485,5,78,0,0,485,487,5,56,0,0,486,484,1,0,0,0,486,487,1,0,0,0,487,488,1,0,0,0,488,491,3,222,111,0,489,490,5,80,0,0,490,492,3,24,12,0,491,489,1,0,0,0,491,492,1,0,0,0,492,570,1,0,0,0,493,494,5,109,0,0,494,497,5,26,0,0,495,496,5,78,0,0,496,498,5,56,0,0,497,495,1,0,0,0,497,498,1,0,0,0,498,499,1,0,0,0,499,500,3,222,111,0,500,501,3,98,49,0,501,570,1,0,0,0,502,503,5,109,0,0,503,506,5,26,0,0,504,505,5,78,0,0,505,507,5,56,0,0,506,504,1,0,0,0,506,507,1,0,0,0,507,508,1,0,0,0,508,509,3,222,111,0,509,510,5,27,0,0,510,511,5,202,0,0,511,570,1,0,0,0,512,513,5,109,0,0,513,516,5,26,0,0,514,515,5,78,0,0,515,517,5,56,0,0,516,514,1,0,0,0,516,517,1,0,0,0,517,518,1,0,0,0,518,519,3,222,111,0,519,520,5,138,0,0,520,521,3,22,11,0,521,570,1,0,0,0,522,523,5,109,0,0,523,526,5,26,0,0,524,525,5,78,0,0,525,527,5,56,0,0,526,524,1,0,0,0,526,527,1,0,0,0,527,528,1,0,0,0,528,570,3,90,45,0,529,530,5,109,0,0,530,531,5,122,0,0,531,532,5,18,0,0,532,570,3,214,107,0,533,534,5,109,0,0,534,570,3,84,42,0,535,536,5,111,0,0,536,546,3,24,12,0,537,538,5,170,0,0,538,539,5,47,0,0,539,547,5,202,0,0,540,541,5,170,0,0,541,542,5,187,0,0,542,547,5,202,0,0,543,544,5,170,0,0,544,545,5,162,0,0,545,547,3,228,114,0,546,537,1,0,0,0,546,540,1,0,0,0,546,543,1,0,0,0,547,570,1,0,0,0,548,549,5,138,0,0,549,570,5,177,0,0,550,551,5,139,0,0,551,554,5,26,0,0,552,553,5,78,0,0,553,555,5,56,0,0,554,552,1,0,0,0,554,555,1,0,0,0,555,556,1,0,0,0,556,557,3,222,111,0,557,558,5,170,0,0,558,559,3,222,111,0,559,570,1,0,0,0,560,561,5,140,0,0,561,562,3,24,12,0,562,563,5,68,0,0,563,564,3,228,114,0,564,570,1,0,0,0,565,566,5,181,0,0,566,567,3,18,9,0,567,568,3,146,73,0,568,570,1,0,0,0,569,355,1,0,0,0,569,367,1,0,0,0,569,379,1,0,0,0,569,391,1,0,0,0,569,397,1,0,0,0,569,408,1,0,0,0,569,419,1,0,0,0,569,430,1,0,0,0,569,439,1,0,0,0,569,442,1,0,0,0,569,444,1,0,0,0,569,451,1,0,0,0,569,458,1,0,0,0,569,465,1,0,0,0,569,467,1,0,0,0,569,471,1,0,0,0,569,482,1,0,0,0,569,493,1,0,0,0,569,502,1,0,0,0,569,512,1,0,0,0,569,522,1,0,0,0,569,529,1,0,0,0,569,533,1,0,0,0,569,535,1,0,0,0,569,548,1,0,0,0,569,550,1,0,0,0,569,560,1,0,0,0,569,565,1,0,0,0,570,17,1,0,0,0,571,576,3,20,10,0,572,573,5,208,0,0,573,575,3,20,10,0,574,572,1,0,0,0,575,578,1,0,0,0,576,574,1,0,0,0,576,577,1,0,0,0,577,19,1,0,0,0,578,576,1,0,0,0,579,580,3,222,111,0,580,581,5,213,0,0,581,582,3,214,107,0,582,21,1,0,0,0,583,584,7,0,0,0,584,23,1,0,0,0,585,586,5,126,0,0,586,591,3,214,107,0,587,588,5,126,0,0,588,589,5,77,0,0,589,591,5,202,0,0,590,585,1,0,0,0,590,587,1,0,0,0,591,25,1,0,0,0,592,593,5,15,0,0,593,594,5,46,0,0,594,596,3,228,114,0,595,597,3,66,33,0,596,595,1,0,0,0,596,597,1,0,0,0,597,27,1,0,0,0,598,599,5,21,0,0,599,600,5,162,0,0,600,602,3,228,114,0,601,603,3,24,12,0,602,601,1,0,0,0,602,603,1,0,0,0,603,29,1,0,0,0,604,605,5,40,0,0,605,606,5,68,0,0,606,608,3,228,114,0,607,609,3,66,33,0,608,607,1,0,0,0,608,609,1,0,0,0,609,611,1,0,0,0,610,612,3,146,73,0,611,610,1,0,0,0,611,612,1,0,0,0,612,31,1,0,0,0,613,621,5,15,0,0,614,617,5,29,0,0,615,616,5,121,0,0,616,618,5,140,0,0,617,615,1,0,0,0,617,618,1,0,0,0,618,621,1,0,0,0,619,621,5,140,0,0,620,613,1,0,0,0,620,614,1,0,0,0,620,619,1,0,0,0,621,623,1,0,0,0,622,624,5,164,0,0,623,622,1,0,0,0,623,624,1,0,0,0,624,625,1,0,0,0,625,629,5,162,0,0,626,627,5,78,0,0,627,628,5,115,0,0,628,630,5,56,0,0,629,626,1,0,0,0,629,630,1,0,0,0,630,631,1,0,0,0,631,633,3,228,114,0,632,634,3,68,34,0,633,632,1,0,0,0,633,634,1,0,0,0,634,636,1,0,0,0,635,637,3,66,33,0,636,635,1,0,0,0,636,637,1,0,0,0,637,639,1,0,0,0,638,640,3,74,37,0,639,638,1,0,0,0,639,640,1,0,0,0,640,642,1,0,0,0,641,643,3,76,38,0,642,641,1,0,0,0,642,643,1,0,0,0,643,645,1,0,0,0,644,646,3,72,36,0,645,644,1,0,0,0,645,646,1,0,0,0,646,33,1,0,0,0,647,648,7,1,0,0,648,652,5,33,0,0,649,650,5,78,0,0,650,651,5,115,0,0,651,653,5,56,0,0,652,649,1,0,0,0,652,653,1,0,0,0,653,654,1,0,0,0,654,656,3,250,125,0,655,657,3,66,33,0,656,655,1,0,0,0,656,657,1,0,0,0,657,658,1,0,0,0,658,659,3,86,43,0,659,35,1,0,0,0,660,668,5,15,0,0,661,664,5,29,0,0,662,663,5,121,0,0,663,665,5,140,0,0,664,662,1,0,0,0,664,665,1,0,0,0,665,668,1,0,0,0,666,668,5,140,0,0,667,660,1,0,0,0,667,661,1,0,0,0,667,666,1,0,0,0,668,669,1,0,0,0,669,673,5,46,0,0,670,671,5,78,0,0,671,672,5,115,0,0,672,674,5,56,0,0,673,670,1,0,0,0,673,674,1,0,0,0,674,675,1,0,0,0,675,677,3,228,114,0,676,678,3,68,34,0,677,676,1,0,0,0,677,678,1,0,0,0,678,680,1,0,0,0,679,681,3,66,33,0,680,679,1,0,0,0,680,681,1,0,0,0,681,682,1,0,0,0,682,683,3,46,23,0,683,684,3,50,25,0,684,37,1,0,0,0,685,686,7,1,0,0,686,687,5,100,0,0,687,691,5,186,0,0,688,689,5,78,0,0,689,690,5,115,0,0,690,692,5,56,0,0,691,688,1,0,0,0,691,692,1,0,0,0,692,693,1,0,0,0,693,695,3,228,114,0,694,696,3,68,34,0,695,694,1,0,0,0,695,696,1,0,0,0,696,698,1,0,0,0,697,699,3,66,33,0,698,697,1,0,0,0,698,699,1,0,0,0,699,705,1,0,0,0,700,701,5,193,0,0,701,703,5,168,0,0,702,704,5,200,0,0,703,702,1,0,0,0,703,704,1,0,0,0,704,706,1,0,0,0,705,700,1,0,0,0,705,706,1,0,0,0,706,708,1,0,0,0,707,709,3,70,35,0,708,707,1,0,0,0,708,709,1,0,0,0,709,711,1,0,0,0,710,712,3,74,37,0,711,710,1,0,0,0,711,712,1,0,0,0,712,713,1,0,0,0,713,714,3,72,36,0,714,39,1,0,0,0,715,716,7,1,0,0,716,717,5,104,0,0,717,721,5,186,0,0,718,719,5,78,0,0,719,720,5,115,0,0,720,722,5,56,0,0,721,718,1,0,0,0,721,722,1,0,0,0,722,723,1,0,0,0,723,725,3,228,114,0,724,726,3,68,34,0,725,724,1,0,0,0,725,726,1,0,0,0,726,728,1,0,0,0,727,729,3,66,33,0,728,727,1,0,0,0,728,729,1,0,0,0,729,731,1,0,0,0,730,732,3,74,37,0,731,730,1,0,0,0,731,732,1,0,0,0,732,738,1,0,0,0,733,739,3,70,35,0,734,736,3,76,38,0,735,737,5,129,0,0,736,735,1,0,0,0,736,737,1,0,0,0,737,739,1,0,0,0,738,733,1,0,0,0,738,734,1,0,0,0,739,740,1,0,0,0,740,741,3,72,36,0,741,41,1,0,0,0,742,745,7,1,0,0,743,744,5,121,0,0,744,746,5,140,0,0,745,743,1,0,0,0,745,746,1,0,0,0,746,747,1,0,0,0,747,751,5,186,0,0,748,749,5,78,0,0,749,750,5,115,0,0,750,752,5,56,0,0,751,748,1,0,0,0,751,752,1,0,0,0,752,753,1,0,0,0,753,755,3,228,114,0,754,756,3,68,34,0,755,754,1,0,0,0,755,756,1,0,0,0,756,758,1,0,0,0,757,759,3,66,33,0,758,757,1,0,0,0,758,759,1,0,0,0,759,761,1,0,0,0,760,762,3,74,37,0,761,760,1,0,0,0,761,762,1,0,0,0,762,763,1,0,0,0,763,764,3,72,36,0,764,43,1,0,0,0,765,772,3,34,17,0,766,772,3,36,18,0,767,772,3,38,19,0,768,772,3,40,20,0,769,772,3,32,16,0,770,772,3,42,21,0,771,765,1,0,0,0,771,766,1,0,0,0,771,767,1,0,0,0,771,768,1,0,0,0,771,769,1,0,0,0,771,770,1,0,0,0,772,45,1,0,0,0,773,774,5,219,0,0,774,779,3,48,24,0,775,776,5,208,0,0,776,778,3,48,24,0,777,775,1,0,0,0,778,781,1,0,0,0,779,777,1,0,0,0,779,780,1,0,0,0,780,782,1,0,0,0,781,779,1,0,0,0,782,783,5,229,0,0,783,47,1,0,0,0,784,785,3,250,125,0,785,807,3,208,104,0,786,787,4,24,0,1,787,788,5,38,0,0,788,789,3,240,120,0,789,790,6,24,-1,0,790,806,1,0,0,0,791,792,4,24,1,1,792,793,5,58,0,0,793,794,3,214,107,0,794,795,6,24,-1,0,795,806,1,0,0,0,796,797,4,24,2,1,797,798,5,75,0,0,798,806,6,24,-1,0,799,800,4,24,3,1,800,801,5,83,0,0,801,806,6,24,-1,0,802,803,4,24,4,1,803,804,5,89,0,0,804,806,6,24,-1,0,805,786,1,0,0,0,805,791,1,0,0,0,805,796,1,0,0,0,805,799,1,0,0,0,805,802,1,0,0,0,806,809,1,0,0,0,807,805,1,0,0,0,807,808,1,0,0,0,808,49,1,0,0,0,809,807,1,0,0,0,810,812,3,52,26,0,811,810,1,0,0,0,811,812,1,0,0,0,812,835,1,0,0,0,813,814,4,25,5,1,814,815,3,56,28,0,815,816,6,25,-1,0,816,834,1,0,0,0,817,818,4,25,6,1,818,819,3,58,29,0,819,820,6,25,-1,0,820,834,1,0,0,0,821,822,4,25,7,1,822,823,3,60,30,0,823,824,6,25,-1,0,824,834,1,0,0,0,825,826,4,25,8,1,826,827,3,62,31,0,827,828,6,25,-1,0,828,834,1,0,0,0,829,830,4,25,9,1,830,831,3,64,32,0,831,832,6,25,-1,0,832,834,1,0,0,0,833,813,1,0,0,0,833,817,1,0,0,0,833,821,1,0,0,0,833,825,1,0,0,0,833,829,1,0,0,0,834,837,1,0,0,0,835,833,1,0,0,0,835,836,1,0,0,0,836,51,1,0,0,0,837,835,1,0,0,0,838,839,5,132,0,0,839,840,5,91,0,0,840,841,3,210,105,0,841,53,1,0,0,0,842,849,3,250,125,0,843,846,3,250,125,0,844,845,5,219,0,0,845,847,5,229,0,0,846,844,1,0,0,0,846,847,1,0,0,0,847,850,1,0,0,0,848,850,3,240,120,0,849,843,1,0,0,0,849,848,1,0,0,0,850,55,1,0,0,0,851,852,5,155,0,0,852,853,5,219,0,0,853,854,3,250,125,0,854,858,5,219,0,0,855,857,3,54,27,0,856,855,1,0,0,0,857,860,1,0,0,0,858,856,1,0,0,0,858,859,1,0,0,0,859,861,1,0,0,0,860,858,1,0,0,0,861,862,5,229,0,0,862,863,5,229,0,0,863,57,1,0,0,0,864,865,5,97,0,0,865,875,5,219,0,0,866,876,5,200,0,0,867,868,5,107,0,0,868,869,5,200,0,0,869,870,5,105,0,0,870,876,5,200,0,0,871,872,5,105,0,0,872,873,5,200,0,0,873,874,5,107,0,0,874,876,5,200,0,0,875,866,1,0,0,0,875,867,1,0,0,0,875,871,1,0,0,0,876,877,1,0,0,0,877,878,5,229,0,0,878,59,1,0,0,0,879,880,5,94,0,0,880,881,5,219,0,0,881,882,3,250,125,0,882,886,5,219,0,0,883,885,3,54,27,0,884,883,1,0,0,0,885,888,1,0,0,0,886,884,1,0,0,0,886,887,1,0,0,0,887,889,1,0,0,0,888,886,1,0,0,0,889,890,5,229,0,0,890,891,5,229,0,0,891,61,1,0,0,0,892,893,5,136,0,0,893,904,5,219,0,0,894,895,5,107,0,0,895,896,3,250,125,0,896,897,5,105,0,0,897,898,3,250,125,0,898,905,1,0,0,0,899,900,5,105,0,0,900,901,3,250,125,0,901,902,5,107,0,0,902,903,3,250,125,0,903,905,1,0,0,0,904,894,1,0,0,0,904,899,1,0,0,0,905,906,1,0,0,0,906,907,5,229,0,0,907,63,1,0,0,0,908,909,5,153,0,0,909,910,5,219,0,0,910,911,3,180,90,0,911,912,5,229,0,0,912,65,1,0,0,0,913,914,5,119,0,0,914,917,5,23,0,0,915,918,3,250,125,0,916,918,5,202,0,0,917,915,1,0,0,0,917,916,1,0,0,0,918,67,1,0,0,0,919,920,5,184,0,0,920,921,5,202,0,0,921,69,1,0,0,0,922,923,5,170,0,0,923,924,3,228,114,0,924,71,1,0,0,0,925,926,5,10,0,0,926,927,3,128,64,0,927,73,1,0,0,0,928,929,5,219,0,0,929,934,3,88,44,0,930,931,5,208,0,0,931,933,3,88,44,0,932,930,1,0,0,0,933,936,1,0,0,0,934,932,1,0,0,0,934,935,1,0,0,0,935,937,1,0,0,0,936,934,1,0,0,0,937,938,5,229,0,0,938,944,1,0,0,0,939,940,5,10,0,0,940,944,3,228,114,0,941,942,5,10,0,0,942,944,3,226,113,0,943,928,1,0,0,0,943,939,1,0,0,0,943,941,1,0,0,0,944,75,1,0,0,0,945,972,3,86,43,0,946,947,4,38,10,1,947,948,3,152,76,0,948,949,6,38,-1,0,949,971,1,0,0,0,950,951,4,38,11,1,951,952,3,78,39,0,952,953,6,38,-1,0,953,971,1,0,0,0,954,955,4,38,12,1,955,956,3,80,40,0,956,957,6,38,-1,0,957,971,1,0,0,0,958,959,4,38,13,1,959,960,3,82,41,0,960,961,6,38,-1,0,961,971,1,0,0,0,962,963,4,38,14,1,963,964,3,84,42,0,964,965,6,38,-1,0,965,971,1,0,0,0,966,967,4,38,15,1,967,968,3,160,80,0,968,969,6,38,-1,0,969,971,1,0,0,0,970,946,1,0,0,0,970,950,1,0,0,0,970,954,1,0,0,0,970,958,1,0,0,0,970,962,1,0,0,0,970,966,1,0,0,0,971,974,1,0,0,0,972,970,1,0,0,0,972,973,1,0,0,0,973,77,1,0,0,0,974,972,1,0,0,0,975,976,5,126,0,0,976,977,5,18,0,0,977,978,3,214,107,0,978,79,1,0,0,0,979,980,5,132,0,0,980,981,5,91,0,0,981,982,3,214,107,0,982,81,1,0,0,0,983,984,5,147,0,0,984,985,5,18,0,0,985,986,3,214,107,0,986,83,1,0,0,0,987,988,5,177,0,0,988,993,3,102,51,0,989,990,5,208,0,0,990,992,3,102,51,0,991,989,1,0,0,0,992,995,1,0,0,0,993,991,1,0,0,0,993,994,1,0,0,0,994,85,1,0,0,0,995,993,1,0,0,0,996,998,5,53,0,0,997,999,5,213,0,0,998,997,1,0,0,0,998,999,1,0,0,0,999,1e3,1,0,0,0,1e3,1006,3,252,126,0,1001,1003,5,219,0,0,1002,1004,3,210,105,0,1003,1002,1,0,0,0,1003,1004,1,0,0,0,1004,1005,1,0,0,0,1005,1007,5,229,0,0,1006,1001,1,0,0,0,1006,1007,1,0,0,0,1007,87,1,0,0,0,1008,1019,3,90,45,0,1009,1010,5,28,0,0,1010,1011,3,250,125,0,1011,1012,5,21,0,0,1012,1013,3,214,107,0,1013,1019,1,0,0,0,1014,1015,5,81,0,0,1015,1019,3,94,47,0,1016,1017,5,133,0,0,1017,1019,3,96,48,0,1018,1008,1,0,0,0,1018,1009,1,0,0,0,1018,1014,1,0,0,0,1018,1016,1,0,0,0,1019,89,1,0,0,0,1020,1021,3,222,111,0,1021,1023,3,208,104,0,1022,1024,3,92,46,0,1023,1022,1,0,0,0,1023,1024,1,0,0,0,1024,1027,1,0,0,0,1025,1026,5,27,0,0,1026,1028,5,202,0,0,1027,1025,1,0,0,0,1027,1028,1,0,0,0,1028,1030,1,0,0,0,1029,1031,3,98,49,0,1030,1029,1,0,0,0,1030,1031,1,0,0,0,1031,1034,1,0,0,0,1032,1033,5,177,0,0,1033,1035,3,214,107,0,1034,1032,1,0,0,0,1034,1035,1,0,0,0,1035,1053,1,0,0,0,1036,1038,3,222,111,0,1037,1039,3,208,104,0,1038,1037,1,0,0,0,1038,1039,1,0,0,0,1039,1040,1,0,0,0,1040,1043,3,92,46,0,1041,1042,5,27,0,0,1042,1044,5,202,0,0,1043,1041,1,0,0,0,1043,1044,1,0,0,0,1044,1046,1,0,0,0,1045,1047,3,98,49,0,1046,1045,1,0,0,0,1046,1047,1,0,0,0,1047,1050,1,0,0,0,1048,1049,5,177,0,0,1049,1051,3,214,107,0,1050,1048,1,0,0,0,1050,1051,1,0,0,0,1051,1053,1,0,0,0,1052,1020,1,0,0,0,1052,1036,1,0,0,0,1053,91,1,0,0,0,1054,1055,7,2,0,0,1055,1056,3,214,107,0,1056,93,1,0,0,0,1057,1058,3,222,111,0,1058,1059,3,214,107,0,1059,1060,5,178,0,0,1060,1061,3,208,104,0,1061,1062,5,72,0,0,1062,1063,5,200,0,0,1063,95,1,0,0,0,1064,1065,3,222,111,0,1065,1066,3,126,63,0,1066,97,1,0,0,0,1067,1068,5,24,0,0,1068,1069,5,219,0,0,1069,1074,3,100,50,0,1070,1071,5,208,0,0,1071,1073,3,100,50,0,1072,1070,1,0,0,0,1073,1076,1,0,0,0,1074,1072,1,0,0,0,1074,1075,1,0,0,0,1075,1077,1,0,0,0,1076,1074,1,0,0,0,1077,1078,5,229,0,0,1078,99,1,0,0,0,1079,1085,3,250,125,0,1080,1082,5,219,0,0,1081,1083,3,210,105,0,1082,1081,1,0,0,0,1082,1083,1,0,0,0,1083,1084,1,0,0,0,1084,1086,5,229,0,0,1085,1080,1,0,0,0,1085,1086,1,0,0,0,1086,101,1,0,0,0,1087,1095,3,214,107,0,1088,1096,5,40,0,0,1089,1090,5,170,0,0,1090,1091,5,47,0,0,1091,1096,5,202,0,0,1092,1093,5,170,0,0,1093,1094,5,187,0,0,1094,1096,5,202,0,0,1095,1088,1,0,0,0,1095,1089,1,0,0,0,1095,1092,1,0,0,0,1095,1096,1,0,0,0,1096,103,1,0,0,0,1097,1099,7,3,0,0,1098,1100,5,162,0,0,1099,1098,1,0,0,0,1099,1100,1,0,0,0,1100,1101,1,0,0,0,1101,1102,3,224,112,0,1102,105,1,0,0,0,1103,1104,7,4,0,0,1104,1107,5,33,0,0,1105,1106,5,78,0,0,1106,1108,5,56,0,0,1107,1105,1,0,0,0,1107,1108,1,0,0,0,1108,1109,1,0,0,0,1109,1111,3,234,117,0,1110,1112,3,66,33,0,1111,1110,1,0,0,0,1111,1112,1,0,0,0,1112,1135,1,0,0,0,1113,1120,7,4,0,0,1114,1121,5,46,0,0,1115,1117,5,164,0,0,1116,1115,1,0,0,0,1116,1117,1,0,0,0,1117,1118,1,0,0,0,1118,1121,5,162,0,0,1119,1121,5,186,0,0,1120,1114,1,0,0,0,1120,1116,1,0,0,0,1120,1119,1,0,0,0,1121,1124,1,0,0,0,1122,1123,5,78,0,0,1123,1125,5,56,0,0,1124,1122,1,0,0,0,1124,1125,1,0,0,0,1125,1126,1,0,0,0,1126,1128,3,228,114,0,1127,1129,3,66,33,0,1128,1127,1,0,0,0,1128,1129,1,0,0,0,1129,1132,1,0,0,0,1130,1131,5,114,0,0,1131,1133,5,39,0,0,1132,1130,1,0,0,0,1132,1133,1,0,0,0,1133,1135,1,0,0,0,1134,1103,1,0,0,0,1134,1113,1,0,0,0,1135,107,1,0,0,0,1136,1137,5,56,0,0,1137,1138,5,33,0,0,1138,1150,3,234,117,0,1139,1146,5,56,0,0,1140,1147,5,46,0,0,1141,1143,5,164,0,0,1142,1141,1,0,0,0,1142,1143,1,0,0,0,1143,1144,1,0,0,0,1144,1147,5,162,0,0,1145,1147,5,186,0,0,1146,1140,1,0,0,0,1146,1142,1,0,0,0,1146,1145,1,0,0,0,1146,1147,1,0,0,0,1147,1148,1,0,0,0,1148,1150,3,228,114,0,1149,1136,1,0,0,0,1149,1139,1,0,0,0,1150,109,1,0,0,0,1151,1152,5,57,0,0,1152,1173,3,6,3,0,1153,1154,5,57,0,0,1154,1155,5,13,0,0,1155,1173,3,6,3,0,1156,1157,5,57,0,0,1157,1158,5,160,0,0,1158,1173,3,6,3,0,1159,1160,5,57,0,0,1160,1161,5,127,0,0,1161,1173,3,6,3,0,1162,1163,5,57,0,0,1163,1164,5,128,0,0,1164,1173,3,6,3,0,1165,1166,5,57,0,0,1166,1167,5,135,0,0,1167,1168,5,175,0,0,1168,1173,3,6,3,0,1169,1170,5,57,0,0,1170,1171,5,54,0,0,1171,1173,3,6,3,0,1172,1151,1,0,0,0,1172,1153,1,0,0,0,1172,1156,1,0,0,0,1172,1159,1,0,0,0,1172,1162,1,0,0,0,1172,1165,1,0,0,0,1172,1169,1,0,0,0,1173,111,1,0,0,0,1174,1175,5,85,0,0,1175,1177,5,87,0,0,1176,1178,5,162,0,0,1177,1176,1,0,0,0,1177,1178,1,0,0,0,1178,1182,1,0,0,0,1179,1183,3,228,114,0,1180,1181,5,70,0,0,1181,1183,3,226,113,0,1182,1179,1,0,0,0,1182,1180,1,0,0,0,1183,1185,1,0,0,0,1184,1186,3,114,57,0,1185,1184,1,0,0,0,1185,1186,1,0,0,0,1186,1187,1,0,0,0,1187,1188,3,116,58,0,1188,113,1,0,0,0,1189,1190,5,219,0,0,1190,1195,3,222,111,0,1191,1192,5,208,0,0,1192,1194,3,222,111,0,1193,1191,1,0,0,0,1194,1197,1,0,0,0,1195,1193,1,0,0,0,1195,1196,1,0,0,0,1196,1198,1,0,0,0,1197,1195,1,0,0,0,1198,1199,5,229,0,0,1199,115,1,0,0,0,1200,1201,5,66,0,0,1201,1210,3,250,125,0,1202,1210,3,118,59,0,1203,1205,3,128,64,0,1204,1206,5,230,0,0,1205,1204,1,0,0,0,1205,1206,1,0,0,0,1206,1207,1,0,0,0,1207,1208,5,0,0,1,1208,1210,1,0,0,0,1209,1200,1,0,0,0,1209,1202,1,0,0,0,1209,1203,1,0,0,0,1210,117,1,0,0,0,1211,1212,5,185,0,0,1212,1214,5,219,0,0,1213,1215,3,240,120,0,1214,1213,1,0,0,0,1214,1215,1,0,0,0,1215,1216,1,0,0,0,1216,1225,5,229,0,0,1217,1218,5,208,0,0,1218,1220,5,219,0,0,1219,1221,3,240,120,0,1220,1219,1,0,0,0,1220,1221,1,0,0,0,1221,1222,1,0,0,0,1222,1224,5,229,0,0,1223,1217,1,0,0,0,1224,1227,1,0,0,0,1225,1223,1,0,0,0,1225,1226,1,0,0,0,1226,119,1,0,0,0,1227,1225,1,0,0,0,1228,1229,5,92,0,0,1229,1231,5,112,0,0,1230,1232,3,66,33,0,1231,1230,1,0,0,0,1231,1232,1,0,0,0,1232,1233,1,0,0,0,1233,1235,3,146,73,0,1234,1236,7,5,0,0,1235,1234,1,0,0,0,1235,1236,1,0,0,0,1236,121,1,0,0,0,1237,1238,5,120,0,0,1238,1239,5,162,0,0,1239,1241,3,228,114,0,1240,1242,3,66,33,0,1241,1240,1,0,0,0,1241,1242,1,0,0,0,1242,1244,1,0,0,0,1243,1245,3,24,12,0,1244,1243,1,0,0,0,1244,1245,1,0,0,0,1245,1247,1,0,0,0,1246,1248,5,61,0,0,1247,1246,1,0,0,0,1247,1248,1,0,0,0,1248,1250,1,0,0,0,1249,1251,5,37,0,0,1250,1249,1,0,0,0,1250,1251,1,0,0,0,1251,123,1,0,0,0,1252,1253,5,139,0,0,1253,1254,5,162,0,0,1254,1255,3,228,114,0,1255,1256,5,170,0,0,1256,1264,3,228,114,0,1257,1258,5,208,0,0,1258,1259,3,228,114,0,1259,1260,5,170,0,0,1260,1261,3,228,114,0,1261,1263,1,0,0,0,1262,1257,1,0,0,0,1263,1266,1,0,0,0,1264,1262,1,0,0,0,1264,1265,1,0,0,0,1265,1268,1,0,0,0,1266,1264,1,0,0,0,1267,1269,3,66,33,0,1268,1267,1,0,0,0,1268,1269,1,0,0,0,1269,125,1,0,0,0,1270,1272,5,219,0,0,1271,1273,3,134,67,0,1272,1271,1,0,0,0,1272,1273,1,0,0,0,1273,1274,1,0,0,0,1274,1275,5,149,0,0,1275,1277,3,210,105,0,1276,1278,3,148,74,0,1277,1276,1,0,0,0,1277,1278,1,0,0,0,1278,1280,1,0,0,0,1279,1281,3,154,77,0,1280,1279,1,0,0,0,1280,1281,1,0,0,0,1281,1282,1,0,0,0,1282,1283,5,229,0,0,1283,127,1,0,0,0,1284,1290,3,130,65,0,1285,1286,5,180,0,0,1286,1287,5,4,0,0,1287,1289,3,130,65,0,1288,1285,1,0,0,0,1289,1292,1,0,0,0,1290,1288,1,0,0,0,1290,1291,1,0,0,0,1291,129,1,0,0,0,1292,1290,1,0,0,0,1293,1299,3,132,66,0,1294,1295,5,219,0,0,1295,1296,3,128,64,0,1296,1297,5,229,0,0,1297,1299,1,0,0,0,1298,1293,1,0,0,0,1298,1294,1,0,0,0,1299,131,1,0,0,0,1300,1302,3,134,67,0,1301,1300,1,0,0,0,1301,1302,1,0,0,0,1302,1303,1,0,0,0,1303,1305,5,149,0,0,1304,1306,5,48,0,0,1305,1304,1,0,0,0,1305,1306,1,0,0,0,1306,1308,1,0,0,0,1307,1309,3,136,68,0,1308,1307,1,0,0,0,1308,1309,1,0,0,0,1309,1310,1,0,0,0,1310,1312,3,210,105,0,1311,1313,3,138,69,0,1312,1311,1,0,0,0,1312,1313,1,0,0,0,1313,1315,1,0,0,0,1314,1316,3,140,70,0,1315,1314,1,0,0,0,1315,1316,1,0,0,0,1316,1318,1,0,0,0,1317,1319,3,142,71,0,1318,1317,1,0,0,0,1318,1319,1,0,0,0,1319,1321,1,0,0,0,1320,1322,3,144,72,0,1321,1320,1,0,0,0,1321,1322,1,0,0,0,1322,1324,1,0,0,0,1323,1325,3,146,73,0,1324,1323,1,0,0,0,1324,1325,1,0,0,0,1325,1327,1,0,0,0,1326,1328,3,148,74,0,1327,1326,1,0,0,0,1327,1328,1,0,0,0,1328,1331,1,0,0,0,1329,1330,5,193,0,0,1330,1332,7,6,0,0,1331,1329,1,0,0,0,1331,1332,1,0,0,0,1332,1335,1,0,0,0,1333,1334,5,193,0,0,1334,1336,5,172,0,0,1335,1333,1,0,0,0,1335,1336,1,0,0,0,1336,1338,1,0,0,0,1337,1339,3,150,75,0,1338,1337,1,0,0,0,1338,1339,1,0,0,0,1339,1341,1,0,0,0,1340,1342,3,152,76,0,1341,1340,1,0,0,0,1341,1342,1,0,0,0,1342,1344,1,0,0,0,1343,1345,3,156,78,0,1344,1343,1,0,0,0,1344,1345,1,0,0,0,1345,1347,1,0,0,0,1346,1348,3,158,79,0,1347,1346,1,0,0,0,1347,1348,1,0,0,0,1348,1350,1,0,0,0,1349,1351,3,160,80,0,1350,1349,1,0,0,0,1350,1351,1,0,0,0,1351,133,1,0,0,0,1352,1353,5,193,0,0,1353,1354,3,210,105,0,1354,135,1,0,0,0,1355,1356,5,171,0,0,1356,1359,5,200,0,0,1357,1358,5,193,0,0,1358,1360,5,167,0,0,1359,1357,1,0,0,0,1359,1360,1,0,0,0,1360,137,1,0,0,0,1361,1362,5,68,0,0,1362,1363,3,162,81,0,1363,139,1,0,0,0,1364,1366,7,7,0,0,1365,1364,1,0,0,0,1365,1366,1,0,0,0,1366,1367,1,0,0,0,1367,1368,5,9,0,0,1368,1369,5,90,0,0,1369,1370,3,210,105,0,1370,141,1,0,0,0,1371,1372,5,192,0,0,1372,1373,3,250,125,0,1373,1374,5,10,0,0,1374,1375,5,219,0,0,1375,1376,3,184,92,0,1376,1377,5,229,0,0,1377,143,1,0,0,0,1378,1379,5,131,0,0,1379,1380,3,214,107,0,1380,145,1,0,0,0,1381,1382,5,191,0,0,1382,1383,3,214,107,0,1383,147,1,0,0,0,1384,1385,5,73,0,0,1385,1392,5,18,0,0,1386,1387,7,6,0,0,1387,1388,5,219,0,0,1388,1389,3,210,105,0,1389,1390,5,229,0,0,1390,1393,1,0,0,0,1391,1393,3,210,105,0,1392,1386,1,0,0,0,1392,1391,1,0,0,0,1393,149,1,0,0,0,1394,1395,5,74,0,0,1395,1396,3,214,107,0,1396,151,1,0,0,0,1397,1398,5,122,0,0,1398,1399,5,18,0,0,1399,1400,3,174,87,0,1400,153,1,0,0,0,1401,1402,5,122,0,0,1402,1403,5,18,0,0,1403,1404,3,210,105,0,1404,155,1,0,0,0,1405,1406,5,99,0,0,1406,1407,3,172,86,0,1407,1408,5,18,0,0,1408,1409,3,210,105,0,1409,157,1,0,0,0,1410,1411,5,99,0,0,1411,1414,3,172,86,0,1412,1413,5,193,0,0,1413,1415,5,167,0,0,1414,1412,1,0,0,0,1414,1415,1,0,0,0,1415,159,1,0,0,0,1416,1417,5,153,0,0,1417,1418,3,180,90,0,1418,161,1,0,0,0,1419,1420,6,81,-1,0,1420,1422,3,224,112,0,1421,1423,5,61,0,0,1422,1421,1,0,0,0,1422,1423,1,0,0,0,1423,1425,1,0,0,0,1424,1426,3,170,85,0,1425,1424,1,0,0,0,1425,1426,1,0,0,0,1426,1432,1,0,0,0,1427,1428,5,219,0,0,1428,1429,3,162,81,0,1429,1430,5,229,0,0,1430,1432,1,0,0,0,1431,1419,1,0,0,0,1431,1427,1,0,0,0,1432,1450,1,0,0,0,1433,1434,10,3,0,0,1434,1435,3,166,83,0,1435,1436,3,162,81,4,1436,1449,1,0,0,0,1437,1439,10,4,0,0,1438,1440,7,8,0,0,1439,1438,1,0,0,0,1439,1440,1,0,0,0,1440,1442,1,0,0,0,1441,1443,3,164,82,0,1442,1441,1,0,0,0,1442,1443,1,0,0,0,1443,1444,1,0,0,0,1444,1445,5,90,0,0,1445,1446,3,162,81,0,1446,1447,3,168,84,0,1447,1449,1,0,0,0,1448,1433,1,0,0,0,1448,1437,1,0,0,0,1449,1452,1,0,0,0,1450,1448,1,0,0,0,1450,1451,1,0,0,0,1451,163,1,0,0,0,1452,1450,1,0,0,0,1453,1455,7,9,0,0,1454,1453,1,0,0,0,1454,1455,1,0,0,0,1455,1456,1,0,0,0,1456,1463,5,84,0,0,1457,1459,5,84,0,0,1458,1460,7,9,0,0,1459,1458,1,0,0,0,1459,1460,1,0,0,0,1460,1463,1,0,0,0,1461,1463,7,9,0,0,1462,1454,1,0,0,0,1462,1457,1,0,0,0,1462,1461,1,0,0,0,1463,1497,1,0,0,0,1464,1466,7,10,0,0,1465,1464,1,0,0,0,1465,1466,1,0,0,0,1466,1467,1,0,0,0,1467,1469,7,11,0,0,1468,1470,5,123,0,0,1469,1468,1,0,0,0,1469,1470,1,0,0,0,1470,1479,1,0,0,0,1471,1473,7,11,0,0,1472,1474,5,123,0,0,1473,1472,1,0,0,0,1473,1474,1,0,0,0,1474,1476,1,0,0,0,1475,1477,7,10,0,0,1476,1475,1,0,0,0,1476,1477,1,0,0,0,1477,1479,1,0,0,0,1478,1465,1,0,0,0,1478,1471,1,0,0,0,1479,1497,1,0,0,0,1480,1482,7,12,0,0,1481,1480,1,0,0,0,1481,1482,1,0,0,0,1482,1483,1,0,0,0,1483,1485,5,69,0,0,1484,1486,5,123,0,0,1485,1484,1,0,0,0,1485,1486,1,0,0,0,1486,1495,1,0,0,0,1487,1489,5,69,0,0,1488,1490,5,123,0,0,1489,1488,1,0,0,0,1489,1490,1,0,0,0,1490,1492,1,0,0,0,1491,1493,7,12,0,0,1492,1491,1,0,0,0,1492,1493,1,0,0,0,1493,1495,1,0,0,0,1494,1481,1,0,0,0,1494,1487,1,0,0,0,1495,1497,1,0,0,0,1496,1462,1,0,0,0,1496,1478,1,0,0,0,1496,1494,1,0,0,0,1497,165,1,0,0,0,1498,1500,7,8,0,0,1499,1498,1,0,0,0,1499,1500,1,0,0,0,1500,1501,1,0,0,0,1501,1502,5,30,0,0,1502,1505,5,90,0,0,1503,1505,5,208,0,0,1504,1499,1,0,0,0,1504,1503,1,0,0,0,1505,167,1,0,0,0,1506,1507,5,119,0,0,1507,1516,3,210,105,0,1508,1509,5,183,0,0,1509,1510,5,219,0,0,1510,1511,3,210,105,0,1511,1512,5,229,0,0,1512,1516,1,0,0,0,1513,1514,5,183,0,0,1514,1516,3,210,105,0,1515,1506,1,0,0,0,1515,1508,1,0,0,0,1515,1513,1,0,0,0,1516,169,1,0,0,0,1517,1518,5,147,0,0,1518,1521,3,178,89,0,1519,1520,5,118,0,0,1520,1522,3,178,89,0,1521,1519,1,0,0,0,1521,1522,1,0,0,0,1522,171,1,0,0,0,1523,1526,3,214,107,0,1524,1525,7,13,0,0,1525,1527,3,214,107,0,1526,1524,1,0,0,0,1526,1527,1,0,0,0,1527,173,1,0,0,0,1528,1533,3,176,88,0,1529,1530,5,208,0,0,1530,1532,3,176,88,0,1531,1529,1,0,0,0,1532,1535,1,0,0,0,1533,1531,1,0,0,0,1533,1534,1,0,0,0,1534,175,1,0,0,0,1535,1533,1,0,0,0,1536,1538,3,214,107,0,1537,1539,7,14,0,0,1538,1537,1,0,0,0,1538,1539,1,0,0,0,1539,1542,1,0,0,0,1540,1541,5,117,0,0,1541,1543,7,15,0,0,1542,1540,1,0,0,0,1542,1543,1,0,0,0,1543,1546,1,0,0,0,1544,1545,5,25,0,0,1545,1547,5,202,0,0,1546,1544,1,0,0,0,1546,1547,1,0,0,0,1547,177,1,0,0,0,1548,1551,3,238,119,0,1549,1550,5,231,0,0,1550,1552,3,238,119,0,1551,1549,1,0,0,0,1551,1552,1,0,0,0,1552,179,1,0,0,0,1553,1558,3,182,91,0,1554,1555,5,208,0,0,1555,1557,3,182,91,0,1556,1554,1,0,0,0,1557,1560,1,0,0,0,1558,1556,1,0,0,0,1558,1559,1,0,0,0,1559,181,1,0,0,0,1560,1558,1,0,0,0,1561,1562,3,250,125,0,1562,1563,5,213,0,0,1563,1564,3,240,120,0,1564,183,1,0,0,0,1565,1567,3,186,93,0,1566,1565,1,0,0,0,1566,1567,1,0,0,0,1567,1569,1,0,0,0,1568,1570,3,188,94,0,1569,1568,1,0,0,0,1569,1570,1,0,0,0,1570,1572,1,0,0,0,1571,1573,3,190,95,0,1572,1571,1,0,0,0,1572,1573,1,0,0,0,1573,185,1,0,0,0,1574,1575,5,126,0,0,1575,1576,5,18,0,0,1576,1577,3,210,105,0,1577,187,1,0,0,0,1578,1579,5,122,0,0,1579,1580,5,18,0,0,1580,1581,3,174,87,0,1581,189,1,0,0,0,1582,1583,7,16,0,0,1583,1584,3,192,96,0,1584,191,1,0,0,0,1585,1592,3,194,97,0,1586,1587,5,16,0,0,1587,1588,3,194,97,0,1588,1589,5,6,0,0,1589,1590,3,194,97,0,1590,1592,1,0,0,0,1591,1585,1,0,0,0,1591,1586,1,0,0,0,1592,193,1,0,0,0,1593,1594,5,32,0,0,1594,1606,5,145,0,0,1595,1596,5,179,0,0,1596,1606,5,130,0,0,1597,1598,5,179,0,0,1598,1606,5,64,0,0,1599,1600,3,238,119,0,1600,1601,5,130,0,0,1601,1606,1,0,0,0,1602,1603,3,238,119,0,1603,1604,5,64,0,0,1604,1606,1,0,0,0,1605,1593,1,0,0,0,1605,1595,1,0,0,0,1605,1597,1,0,0,0,1605,1599,1,0,0,0,1605,1602,1,0,0,0,1606,195,1,0,0,0,1607,1608,5,152,0,0,1608,1609,3,180,90,0,1609,197,1,0,0,0,1610,1611,5,154,0,0,1611,1612,5,29,0,0,1612,1613,5,33,0,0,1613,1653,3,234,117,0,1614,1615,5,154,0,0,1615,1616,5,29,0,0,1616,1617,5,46,0,0,1617,1653,3,228,114,0,1618,1619,5,154,0,0,1619,1621,5,29,0,0,1620,1622,5,164,0,0,1621,1620,1,0,0,0,1621,1622,1,0,0,0,1622,1624,1,0,0,0,1623,1625,5,162,0,0,1624,1623,1,0,0,0,1624,1625,1,0,0,0,1625,1626,1,0,0,0,1626,1653,3,228,114,0,1627,1628,5,154,0,0,1628,1653,5,34,0,0,1629,1630,5,154,0,0,1630,1633,5,45,0,0,1631,1632,5,68,0,0,1632,1634,3,234,117,0,1633,1631,1,0,0,0,1633,1634,1,0,0,0,1634,1653,1,0,0,0,1635,1637,5,154,0,0,1636,1638,5,164,0,0,1637,1636,1,0,0,0,1637,1638,1,0,0,0,1638,1639,1,0,0,0,1639,1642,5,163,0,0,1640,1641,7,17,0,0,1641,1643,3,234,117,0,1642,1640,1,0,0,0,1642,1643,1,0,0,0,1643,1647,1,0,0,0,1644,1645,5,98,0,0,1645,1648,5,202,0,0,1646,1648,3,146,73,0,1647,1644,1,0,0,0,1647,1646,1,0,0,0,1647,1648,1,0,0,0,1648,1650,1,0,0,0,1649,1651,3,158,79,0,1650,1649,1,0,0,0,1650,1651,1,0,0,0,1651,1653,1,0,0,0,1652,1610,1,0,0,0,1652,1614,1,0,0,0,1652,1618,1,0,0,0,1652,1627,1,0,0,0,1652,1629,1,0,0,0,1652,1635,1,0,0,0,1653,199,1,0,0,0,1654,1655,5,161,0,0,1655,1656,5,63,0,0,1656,1657,5,49,0,0,1657,1689,3,228,114,0,1658,1659,5,161,0,0,1659,1660,5,63,0,0,1660,1689,5,102,0,0,1661,1662,5,161,0,0,1662,1663,5,137,0,0,1663,1689,5,45,0,0,1664,1665,5,161,0,0,1665,1666,5,137,0,0,1666,1667,5,46,0,0,1667,1689,3,228,114,0,1668,1669,5,161,0,0,1669,1677,7,18,0,0,1670,1671,5,49,0,0,1671,1678,5,151,0,0,1672,1678,5,60,0,0,1673,1675,5,177,0,0,1674,1673,1,0,0,0,1674,1675,1,0,0,0,1675,1676,1,0,0,0,1676,1678,5,106,0,0,1677,1670,1,0,0,0,1677,1672,1,0,0,0,1677,1674,1,0,0,0,1678,1679,1,0,0,0,1679,1689,3,228,114,0,1680,1681,5,161,0,0,1681,1682,7,18,0,0,1682,1683,5,142,0,0,1683,1689,5,151,0,0,1684,1685,5,161,0,0,1685,1686,5,159,0,0,1686,1687,5,141,0,0,1687,1689,3,228,114,0,1688,1654,1,0,0,0,1688,1658,1,0,0,0,1688,1661,1,0,0,0,1688,1664,1,0,0,0,1688,1668,1,0,0,0,1688,1680,1,0,0,0,1688,1684,1,0,0,0,1689,201,1,0,0,0,1690,1692,5,176,0,0,1691,1693,5,164,0,0,1692,1691,1,0,0,0,1692,1693,1,0,0,0,1693,1695,1,0,0,0,1694,1696,5,162,0,0,1695,1694,1,0,0,0,1695,1696,1,0,0,0,1696,1699,1,0,0,0,1697,1698,5,78,0,0,1698,1700,5,56,0,0,1699,1697,1,0,0,0,1699,1700,1,0,0,0,1700,1701,1,0,0,0,1701,1703,3,228,114,0,1702,1704,3,66,33,0,1703,1702,1,0,0,0,1703,1704,1,0,0,0,1704,203,1,0,0,0,1705,1706,5,182,0,0,1706,1707,3,234,117,0,1707,205,1,0,0,0,1708,1709,5,188,0,0,1709,1711,3,228,114,0,1710,1712,5,55,0,0,1711,1710,1,0,0,0,1711,1712,1,0,0,0,1712,1715,1,0,0,0,1713,1714,5,99,0,0,1714,1716,5,200,0,0,1715,1713,1,0,0,0,1715,1716,1,0,0,0,1716,207,1,0,0,0,1717,1765,3,250,125,0,1718,1719,3,250,125,0,1719,1720,5,219,0,0,1720,1721,3,250,125,0,1721,1728,3,208,104,0,1722,1723,5,208,0,0,1723,1724,3,250,125,0,1724,1725,3,208,104,0,1725,1727,1,0,0,0,1726,1722,1,0,0,0,1727,1730,1,0,0,0,1728,1726,1,0,0,0,1728,1729,1,0,0,0,1729,1731,1,0,0,0,1730,1728,1,0,0,0,1731,1732,5,229,0,0,1732,1765,1,0,0,0,1733,1734,3,250,125,0,1734,1735,5,219,0,0,1735,1740,3,254,127,0,1736,1737,5,208,0,0,1737,1739,3,254,127,0,1738,1736,1,0,0,0,1739,1742,1,0,0,0,1740,1738,1,0,0,0,1740,1741,1,0,0,0,1741,1743,1,0,0,0,1742,1740,1,0,0,0,1743,1744,5,229,0,0,1744,1765,1,0,0,0,1745,1746,3,250,125,0,1746,1747,5,219,0,0,1747,1752,3,208,104,0,1748,1749,5,208,0,0,1749,1751,3,208,104,0,1750,1748,1,0,0,0,1751,1754,1,0,0,0,1752,1750,1,0,0,0,1752,1753,1,0,0,0,1753,1755,1,0,0,0,1754,1752,1,0,0,0,1755,1756,5,229,0,0,1756,1765,1,0,0,0,1757,1758,3,250,125,0,1758,1760,5,219,0,0,1759,1761,3,210,105,0,1760,1759,1,0,0,0,1760,1761,1,0,0,0,1761,1762,1,0,0,0,1762,1763,5,229,0,0,1763,1765,1,0,0,0,1764,1717,1,0,0,0,1764,1718,1,0,0,0,1764,1733,1,0,0,0,1764,1745,1,0,0,0,1764,1757,1,0,0,0,1765,209,1,0,0,0,1766,1771,3,212,106,0,1767,1768,5,208,0,0,1768,1770,3,212,106,0,1769,1767,1,0,0,0,1770,1773,1,0,0,0,1771,1769,1,0,0,0,1771,1772,1,0,0,0,1772,211,1,0,0,0,1773,1771,1,0,0,0,1774,1775,3,228,114,0,1775,1776,5,211,0,0,1776,1778,1,0,0,0,1777,1774,1,0,0,0,1777,1778,1,0,0,0,1778,1779,1,0,0,0,1779,1786,5,204,0,0,1780,1781,5,219,0,0,1781,1782,3,128,64,0,1782,1783,5,229,0,0,1783,1786,1,0,0,0,1784,1786,3,214,107,0,1785,1777,1,0,0,0,1785,1780,1,0,0,0,1785,1784,1,0,0,0,1786,213,1,0,0,0,1787,1788,6,107,-1,0,1788,1790,5,19,0,0,1789,1791,3,214,107,0,1790,1789,1,0,0,0,1790,1791,1,0,0,0,1791,1797,1,0,0,0,1792,1793,5,190,0,0,1793,1794,3,214,107,0,1794,1795,5,166,0,0,1795,1796,3,214,107,0,1796,1798,1,0,0,0,1797,1792,1,0,0,0,1798,1799,1,0,0,0,1799,1797,1,0,0,0,1799,1800,1,0,0,0,1800,1803,1,0,0,0,1801,1802,5,51,0,0,1802,1804,3,214,107,0,1803,1801,1,0,0,0,1803,1804,1,0,0,0,1804,1805,1,0,0,0,1805,1806,5,52,0,0,1806,1917,1,0,0,0,1807,1808,5,20,0,0,1808,1809,5,219,0,0,1809,1810,3,214,107,0,1810,1811,5,10,0,0,1811,1812,3,208,104,0,1812,1813,5,229,0,0,1813,1917,1,0,0,0,1814,1815,5,35,0,0,1815,1917,5,202,0,0,1816,1817,5,59,0,0,1817,1818,5,219,0,0,1818,1819,3,242,121,0,1819,1820,5,68,0,0,1820,1821,3,214,107,0,1821,1822,5,229,0,0,1822,1917,1,0,0,0,1823,1824,5,86,0,0,1824,1825,3,214,107,0,1825,1826,3,242,121,0,1826,1917,1,0,0,0,1827,1828,5,158,0,0,1828,1829,5,219,0,0,1829,1830,3,214,107,0,1830,1831,5,68,0,0,1831,1834,3,214,107,0,1832,1833,5,65,0,0,1833,1835,3,214,107,0,1834,1832,1,0,0,0,1834,1835,1,0,0,0,1835,1836,1,0,0,0,1836,1837,5,229,0,0,1837,1917,1,0,0,0,1838,1839,5,169,0,0,1839,1917,5,202,0,0,1840,1841,5,174,0,0,1841,1842,5,219,0,0,1842,1843,7,19,0,0,1843,1844,5,202,0,0,1844,1845,5,68,0,0,1845,1846,3,214,107,0,1846,1847,5,229,0,0,1847,1917,1,0,0,0,1848,1849,3,250,125,0,1849,1851,5,219,0,0,1850,1852,3,210,105,0,1851,1850,1,0,0,0,1851,1852,1,0,0,0,1852,1853,1,0,0,0,1853,1854,5,229,0,0,1854,1855,1,0,0,0,1855,1856,5,125,0,0,1856,1857,5,219,0,0,1857,1858,3,184,92,0,1858,1859,5,229,0,0,1859,1917,1,0,0,0,1860,1861,3,250,125,0,1861,1863,5,219,0,0,1862,1864,3,210,105,0,1863,1862,1,0,0,0,1863,1864,1,0,0,0,1864,1865,1,0,0,0,1865,1866,5,229,0,0,1866,1867,1,0,0,0,1867,1868,5,125,0,0,1868,1869,3,250,125,0,1869,1917,1,0,0,0,1870,1876,3,250,125,0,1871,1873,5,219,0,0,1872,1874,3,210,105,0,1873,1872,1,0,0,0,1873,1874,1,0,0,0,1874,1875,1,0,0,0,1875,1877,5,229,0,0,1876,1871,1,0,0,0,1876,1877,1,0,0,0,1877,1878,1,0,0,0,1878,1880,5,219,0,0,1879,1881,5,48,0,0,1880,1879,1,0,0,0,1880,1881,1,0,0,0,1881,1883,1,0,0,0,1882,1884,3,216,108,0,1883,1882,1,0,0,0,1883,1884,1,0,0,0,1884,1885,1,0,0,0,1885,1886,5,229,0,0,1886,1917,1,0,0,0,1887,1917,3,240,120,0,1888,1889,5,210,0,0,1889,1917,3,214,107,17,1890,1891,5,115,0,0,1891,1917,3,214,107,12,1892,1893,3,228,114,0,1893,1894,5,211,0,0,1894,1896,1,0,0,0,1895,1892,1,0,0,0,1895,1896,1,0,0,0,1896,1897,1,0,0,0,1897,1917,5,204,0,0,1898,1899,5,219,0,0,1899,1900,3,128,64,0,1900,1901,5,229,0,0,1901,1917,1,0,0,0,1902,1903,5,219,0,0,1903,1904,3,214,107,0,1904,1905,5,229,0,0,1905,1917,1,0,0,0,1906,1907,5,219,0,0,1907,1908,3,210,105,0,1908,1909,5,229,0,0,1909,1917,1,0,0,0,1910,1912,5,217,0,0,1911,1913,3,210,105,0,1912,1911,1,0,0,0,1912,1913,1,0,0,0,1913,1914,1,0,0,0,1914,1917,5,228,0,0,1915,1917,3,222,111,0,1916,1787,1,0,0,0,1916,1807,1,0,0,0,1916,1814,1,0,0,0,1916,1816,1,0,0,0,1916,1823,1,0,0,0,1916,1827,1,0,0,0,1916,1838,1,0,0,0,1916,1840,1,0,0,0,1916,1848,1,0,0,0,1916,1860,1,0,0,0,1916,1870,1,0,0,0,1916,1887,1,0,0,0,1916,1888,1,0,0,0,1916,1890,1,0,0,0,1916,1895,1,0,0,0,1916,1898,1,0,0,0,1916,1902,1,0,0,0,1916,1906,1,0,0,0,1916,1910,1,0,0,0,1916,1915,1,0,0,0,1917,1989,1,0,0,0,1918,1919,10,16,0,0,1919,1920,7,20,0,0,1920,1988,3,214,107,17,1921,1922,10,15,0,0,1922,1923,7,21,0,0,1923,1988,3,214,107,16,1924,1943,10,14,0,0,1925,1944,5,212,0,0,1926,1944,5,213,0,0,1927,1944,5,221,0,0,1928,1944,5,218,0,0,1929,1944,5,214,0,0,1930,1944,5,220,0,0,1931,1944,5,215,0,0,1932,1934,5,71,0,0,1933,1932,1,0,0,0,1933,1934,1,0,0,0,1934,1936,1,0,0,0,1935,1937,5,115,0,0,1936,1935,1,0,0,0,1936,1937,1,0,0,0,1937,1938,1,0,0,0,1938,1944,5,80,0,0,1939,1941,5,115,0,0,1940,1939,1,0,0,0,1940,1941,1,0,0,0,1941,1942,1,0,0,0,1942,1944,7,22,0,0,1943,1925,1,0,0,0,1943,1926,1,0,0,0,1943,1927,1,0,0,0,1943,1928,1,0,0,0,1943,1929,1,0,0,0,1943,1930,1,0,0,0,1943,1931,1,0,0,0,1943,1933,1,0,0,0,1943,1940,1,0,0,0,1944,1945,1,0,0,0,1945,1988,3,214,107,15,1946,1947,10,11,0,0,1947,1948,5,6,0,0,1948,1988,3,214,107,12,1949,1950,10,10,0,0,1950,1951,5,121,0,0,1951,1988,3,214,107,11,1952,1954,10,9,0,0,1953,1955,5,115,0,0,1954,1953,1,0,0,0,1954,1955,1,0,0,0,1955,1956,1,0,0,0,1956,1957,5,16,0,0,1957,1958,3,214,107,0,1958,1959,5,6,0,0,1959,1960,3,214,107,10,1960,1988,1,0,0,0,1961,1962,10,8,0,0,1962,1963,5,224,0,0,1963,1964,3,214,107,0,1964,1965,5,207,0,0,1965,1966,3,214,107,8,1966,1988,1,0,0,0,1967,1968,10,19,0,0,1968,1969,5,217,0,0,1969,1970,3,214,107,0,1970,1971,5,228,0,0,1971,1988,1,0,0,0,1972,1973,10,18,0,0,1973,1974,5,211,0,0,1974,1988,5,200,0,0,1975,1976,10,13,0,0,1976,1978,5,88,0,0,1977,1979,5,115,0,0,1978,1977,1,0,0,0,1978,1979,1,0,0,0,1979,1980,1,0,0,0,1980,1988,5,116,0,0,1981,1985,10,7,0,0,1982,1986,3,248,124,0,1983,1984,5,10,0,0,1984,1986,3,250,125,0,1985,1982,1,0,0,0,1985,1983,1,0,0,0,1986,1988,1,0,0,0,1987,1918,1,0,0,0,1987,1921,1,0,0,0,1987,1924,1,0,0,0,1987,1946,1,0,0,0,1987,1949,1,0,0,0,1987,1952,1,0,0,0,1987,1961,1,0,0,0,1987,1967,1,0,0,0,1987,1972,1,0,0,0,1987,1975,1,0,0,0,1987,1981,1,0,0,0,1988,1991,1,0,0,0,1989,1987,1,0,0,0,1989,1990,1,0,0,0,1990,215,1,0,0,0,1991,1989,1,0,0,0,1992,1997,3,218,109,0,1993,1994,5,208,0,0,1994,1996,3,218,109,0,1995,1993,1,0,0,0,1996,1999,1,0,0,0,1997,1995,1,0,0,0,1997,1998,1,0,0,0,1998,217,1,0,0,0,1999,1997,1,0,0,0,2e3,2003,3,220,110,0,2001,2003,3,214,107,0,2002,2e3,1,0,0,0,2002,2001,1,0,0,0,2003,219,1,0,0,0,2004,2005,5,219,0,0,2005,2010,3,250,125,0,2006,2007,5,208,0,0,2007,2009,3,250,125,0,2008,2006,1,0,0,0,2009,2012,1,0,0,0,2010,2008,1,0,0,0,2010,2011,1,0,0,0,2011,2013,1,0,0,0,2012,2010,1,0,0,0,2013,2014,5,229,0,0,2014,2024,1,0,0,0,2015,2020,3,250,125,0,2016,2017,5,208,0,0,2017,2019,3,250,125,0,2018,2016,1,0,0,0,2019,2022,1,0,0,0,2020,2018,1,0,0,0,2020,2021,1,0,0,0,2021,2024,1,0,0,0,2022,2020,1,0,0,0,2023,2004,1,0,0,0,2023,2015,1,0,0,0,2024,2025,1,0,0,0,2025,2026,5,203,0,0,2026,2027,3,214,107,0,2027,221,1,0,0,0,2028,2029,3,228,114,0,2029,2030,5,211,0,0,2030,2032,1,0,0,0,2031,2028,1,0,0,0,2031,2032,1,0,0,0,2032,2033,1,0,0,0,2033,2036,3,250,125,0,2034,2035,5,211,0,0,2035,2037,3,250,125,0,2036,2034,1,0,0,0,2036,2037,1,0,0,0,2037,223,1,0,0,0,2038,2039,6,112,-1,0,2039,2046,3,228,114,0,2040,2046,3,226,113,0,2041,2042,5,219,0,0,2042,2043,3,128,64,0,2043,2044,5,229,0,0,2044,2046,1,0,0,0,2045,2038,1,0,0,0,2045,2040,1,0,0,0,2045,2041,1,0,0,0,2046,2055,1,0,0,0,2047,2051,10,1,0,0,2048,2052,3,248,124,0,2049,2050,5,10,0,0,2050,2052,3,250,125,0,2051,2048,1,0,0,0,2051,2049,1,0,0,0,2052,2054,1,0,0,0,2053,2047,1,0,0,0,2054,2057,1,0,0,0,2055,2053,1,0,0,0,2055,2056,1,0,0,0,2056,225,1,0,0,0,2057,2055,1,0,0,0,2058,2059,3,250,125,0,2059,2061,5,219,0,0,2060,2062,3,230,115,0,2061,2060,1,0,0,0,2061,2062,1,0,0,0,2062,2063,1,0,0,0,2063,2064,5,229,0,0,2064,227,1,0,0,0,2065,2066,3,234,117,0,2066,2067,5,211,0,0,2067,2069,1,0,0,0,2068,2065,1,0,0,0,2068,2069,1,0,0,0,2069,2070,1,0,0,0,2070,2071,3,250,125,0,2071,229,1,0,0,0,2072,2077,3,232,116,0,2073,2074,5,208,0,0,2074,2076,3,232,116,0,2075,2073,1,0,0,0,2076,2079,1,0,0,0,2077,2075,1,0,0,0,2077,2078,1,0,0,0,2078,231,1,0,0,0,2079,2077,1,0,0,0,2080,2084,3,222,111,0,2081,2084,3,226,113,0,2082,2084,3,240,120,0,2083,2080,1,0,0,0,2083,2081,1,0,0,0,2083,2082,1,0,0,0,2084,233,1,0,0,0,2085,2086,3,250,125,0,2086,235,1,0,0,0,2087,2096,5,198,0,0,2088,2089,5,211,0,0,2089,2096,7,23,0,0,2090,2091,5,200,0,0,2091,2093,5,211,0,0,2092,2094,7,23,0,0,2093,2092,1,0,0,0,2093,2094,1,0,0,0,2094,2096,1,0,0,0,2095,2087,1,0,0,0,2095,2088,1,0,0,0,2095,2090,1,0,0,0,2096,237,1,0,0,0,2097,2099,7,24,0,0,2098,2097,1,0,0,0,2098,2099,1,0,0,0,2099,2106,1,0,0,0,2100,2107,3,236,118,0,2101,2107,5,199,0,0,2102,2107,5,200,0,0,2103,2107,5,201,0,0,2104,2107,5,82,0,0,2105,2107,5,113,0,0,2106,2100,1,0,0,0,2106,2101,1,0,0,0,2106,2102,1,0,0,0,2106,2103,1,0,0,0,2106,2104,1,0,0,0,2106,2105,1,0,0,0,2107,239,1,0,0,0,2108,2112,3,238,119,0,2109,2112,5,202,0,0,2110,2112,5,116,0,0,2111,2108,1,0,0,0,2111,2109,1,0,0,0,2111,2110,1,0,0,0,2112,241,1,0,0,0,2113,2114,7,25,0,0,2114,243,1,0,0,0,2115,2116,7,26,0,0,2116,245,1,0,0,0,2117,2118,7,27,0,0,2118,247,1,0,0,0,2119,2122,5,197,0,0,2120,2122,3,246,123,0,2121,2119,1,0,0,0,2121,2120,1,0,0,0,2122,249,1,0,0,0,2123,2127,5,197,0,0,2124,2127,3,242,121,0,2125,2127,3,244,122,0,2126,2123,1,0,0,0,2126,2124,1,0,0,0,2126,2125,1,0,0,0,2127,251,1,0,0,0,2128,2131,3,250,125,0,2129,2131,5,116,0,0,2130,2128,1,0,0,0,2130,2129,1,0,0,0,2131,253,1,0,0,0,2132,2133,5,202,0,0,2133,2134,5,213,0,0,2134,2135,3,238,119,0,2135,255,1,0,0,0,280,257,263,269,275,279,282,285,307,310,318,323,336,345,352,360,365,372,377,384,389,395,401,406,412,417,423,428,434,448,455,462,469,475,480,486,491,497,506,516,526,546,554,569,576,590,596,602,608,611,617,620,623,629,633,636,639,642,645,652,656,664,667,673,677,680,691,695,698,703,705,708,711,721,725,728,731,736,738,745,751,755,758,761,771,779,805,807,811,833,835,846,849,858,875,886,904,917,934,943,970,972,993,998,1003,1006,1018,1023,1027,1030,1034,1038,1043,1046,1050,1052,1074,1082,1085,1095,1099,1107,1111,1116,1120,1124,1128,1132,1134,1142,1146,1149,1172,1177,1182,1185,1195,1205,1209,1214,1220,1225,1231,1235,1241,1244,1247,1250,1264,1268,1272,1277,1280,1290,1298,1301,1305,1308,1312,1315,1318,1321,1324,1327,1331,1335,1338,1341,1344,1347,1350,1359,1365,1392,1414,1422,1425,1431,1439,1442,1448,1450,1454,1459,1462,1465,1469,1473,1476,1478,1481,1485,1489,1492,1494,1496,1499,1504,1515,1521,1526,1533,1538,1542,1546,1551,1558,1566,1569,1572,1591,1605,1621,1624,1633,1637,1642,1647,1650,1652,1674,1677,1688,1692,1695,1699,1703,1711,1715,1728,1740,1752,1760,1764,1771,1777,1785,1790,1799,1803,1834,1851,1863,1873,1876,1880,1883,1895,1912,1916,1933,1936,1940,1943,1954,1978,1985,1987,1989,1997,2002,2010,2020,2023,2031,2036,2045,2051,2055,2061,2068,2077,2083,2093,2095,2098,2106,2111,2121,2126,2130],Zi.vocabulary=new Ra(Zi.literalNames,Zi.symbolicNames,[]),Zi.decisionsToDFA=Zi._ATN.decisionToState.map(((t,e)=>new ni(t,e))),Zi),_G=class extends ga{constructor(t,e){super(t,e)}EOF(){return this.getToken(CG.EOF,0)}statements(){return this.getRuleContext(0,PG)}get ruleIndex(){return CG.RULE_root}accept(t){return t.visitRoot?t.visitRoot(this):t.visitChildren(this)}},PG=class t extends ga{constructor(t,e){super(t,e)}statement(){return this.getRuleContext(0,MG)}SEMICOLON(){return this.getToken(CG.SEMICOLON,0)}statements(){return this.getRuleContext(0,t)}get ruleIndex(){return CG.RULE_statements}accept(t){return t.visitStatements?t.visitStatements(this):t.visitChildren(this)}},MG=class extends ga{constructor(t,e){super(t,e)}notInsertStatement(){return this.getRuleContext(0,dG)}INTO(){return this.getToken(CG.INTO,0)}OUTFILE(){return this.getToken(CG.OUTFILE,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}FORMAT(){return this.getToken(CG.FORMAT,0)}identifierOrNull(){return this.getRuleContext(0,by)}SEMICOLON(){return this.getToken(CG.SEMICOLON,0)}insertStatement(){return this.getRuleContext(0,uv)}get ruleIndex(){return CG.RULE_statement}accept(t){return t.visitStatement?t.visitStatement(this):t.visitChildren(this)}},dG=class extends ga{constructor(t,e){super(t,e)}alterStatement(){return this.getRuleContext(0,pG)}attachStatement(){return this.getRuleContext(0,TF)}checkStatement(){return this.getRuleContext(0,RF)}createStatement(){return this.getRuleContext(0,LF)}describeStatement(){return this.getRuleContext(0,av)}deleteStatement(){return this.getRuleContext(0,AF)}dropStatement(){return this.getRuleContext(0,rv)}existsStatement(){return this.getRuleContext(0,nv)}explainStatement(){return this.getRuleContext(0,Tv)}killStatement(){return this.getRuleContext(0,dv)}optimizeStatement(){return this.getRuleContext(0,mv)}renameStatement(){return this.getRuleContext(0,Dv)}selectUnionStatement(){return this.getRuleContext(0,gv)}setStatement(){return this.getRuleContext(0,NB)}showStatement(){return this.getRuleContext(0,LB)}systemStatement(){return this.getRuleContext(0,mB)}truncateStatement(){return this.getRuleContext(0,DB)}useStatement(){return this.getRuleContext(0,pB)}watchStatement(){return this.getRuleContext(0,gB)}selectStatement(){return this.getRuleContext(0,kv)}commonTableExpressionStatement(){return this.getRuleContext(0,UG)}get ruleIndex(){return CG.RULE_notInsertStatement}accept(t){return t.visitNotInsertStatement?t.visitNotInsertStatement(this):t.visitChildren(this)}},UG=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(CG.WITH,0)}namedQuery(t){return void 0===t?this.getRuleContexts(mG):this.getRuleContext(t,mG)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_commonTableExpressionStatement}accept(t){return t.visitCommonTableExpressionStatement?t.visitCommonTableExpressionStatement(this):t.visitChildren(this)}},mG=class extends ga{constructor(t,e){super(t,e)}AS(){return this.getToken(CG.AS,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}notInsertStatement(){return this.getRuleContext(0,dG)}RPAREN(){return this.getToken(CG.RPAREN,0)}identifier(){return this.getRuleContext(0,wy)}columnAliases(){return this.getRuleContext(0,DG)}get ruleIndex(){return CG.RULE_namedQuery}accept(t){return t.visitNamedQuery?t.visitNamedQuery(this):t.visitChildren(this)}},DG=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(CG.LPAREN,0)}identifier(t){return void 0===t?this.getRuleContexts(wy):this.getRuleContext(t,wy)}RPAREN(){return this.getToken(CG.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_columnAliases}accept(t){return t.visitColumnAliases?t.visitColumnAliases(this):t.visitChildren(this)}},pG=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_alterStatement}copyFrom(t){super.copyFrom(t)}},gG=class extends pG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ALTER(){return this.getToken(CG.ALTER,0)}TABLE(){return this.getToken(CG.TABLE,0)}tableIdentifier(){return this.getRuleContext(0,gy)}alterTableClause(t){return void 0===t?this.getRuleContexts(xG):this.getRuleContext(t,xG)}clusterClause(){return this.getRuleContext(0,xF)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}accept(t){return t.visitAlterTableStatement?t.visitAlterTableStatement(this):t.visitChildren(this)}},xG=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_alterTableClause}copyFrom(t){super.copyFrom(t)}},kG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REPLACE(){return this.getToken(CG.REPLACE,0)}partitionClause(){return this.getRuleContext(0,EF)}FROM(){return this.getToken(CG.FROM,0)}tableIdentifier(){return this.getRuleContext(0,gy)}accept(t){return t.visitAlterTableClauseReplace?t.visitAlterTableClauseReplace(this):t.visitChildren(this)}},HG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MODIFY(){return this.getToken(CG.MODIFY,0)}ORDER(){return this.getToken(CG.ORDER,0)}BY(){return this.getToken(CG.BY,0)}columnExpression(){return this.getRuleContext(0,bB)}accept(t){return t.visitAlterTableClauseModifyOrderBy?t.visitAlterTableClauseModifyOrderBy(this):t.visitChildren(this)}},GG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}UPDATE(){return this.getToken(CG.UPDATE,0)}assignmentExpressionList(){return this.getRuleContext(0,cF)}whereClause(){return this.getRuleContext(0,fv)}accept(t){return t.visitAlterTableClauseUpdate?t.visitAlterTableClauseUpdate(this):t.visitChildren(this)}},FG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CLEAR(){return this.getToken(CG.CLEAR,0)}PROJECTION(){return this.getToken(CG.PROJECTION,0)}columnIdentifier(){return this.getRuleContext(0,Py)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}IN(){return this.getToken(CG.IN,0)}partitionClause(){return this.getRuleContext(0,EF)}accept(t){return t.visitAlterTableClauseClearProjection?t.visitAlterTableClauseClearProjection(this):t.visitChildren(this)}},vG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MODIFY(){return this.getToken(CG.MODIFY,0)}COLUMN(){return this.getToken(CG.COLUMN,0)}columnIdentifier(){return this.getRuleContext(0,Py)}REMOVE(){return this.getToken(CG.REMOVE,0)}tableColumnPropertyType(){return this.getRuleContext(0,hF)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}accept(t){return t.visitAlterTableClauseModifyRemove?t.visitAlterTableClauseModifyRemove(this):t.visitChildren(this)}},BG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DELETE(){return this.getToken(CG.DELETE,0)}WHERE(){return this.getToken(CG.WHERE,0)}columnExpression(){return this.getRuleContext(0,bB)}accept(t){return t.visitAlterTableClauseDelete?t.visitAlterTableClauseDelete(this):t.visitChildren(this)}},yG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}COMMENT(){return this.getToken(CG.COMMENT,0)}COLUMN(){return this.getToken(CG.COLUMN,0)}columnIdentifier(){return this.getRuleContext(0,Py)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}accept(t){return t.visitAlterTableClauseComment?t.visitAlterTableClauseComment(this):t.visitChildren(this)}},fG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DROP(){return this.getToken(CG.DROP,0)}COLUMN(){return this.getToken(CG.COLUMN,0)}columnIdentifier(){return this.getRuleContext(0,Py)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}accept(t){return t.visitAlterTableClauseDropColumn?t.visitAlterTableClauseDropColumn(this):t.visitChildren(this)}},YG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DETACH(){return this.getToken(CG.DETACH,0)}partitionClause(){return this.getRuleContext(0,EF)}accept(t){return t.visitAlterTableClauseDetach?t.visitAlterTableClauseDetach(this):t.visitChildren(this)}},wG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(CG.ADD,0)}INDEX(){return this.getToken(CG.INDEX,0)}tableIndexDefinition(){return this.getRuleContext(0,zF)}IF(){return this.getToken(CG.IF,0)}NOT(){return this.getToken(CG.NOT,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}AFTER(){return this.getToken(CG.AFTER,0)}columnIdentifier(){return this.getRuleContext(0,Py)}accept(t){return t.visitAlterTableClauseAddIndex?t.visitAlterTableClauseAddIndex(this):t.visitChildren(this)}},bG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DROP(){return this.getToken(CG.DROP,0)}partitionClause(){return this.getRuleContext(0,EF)}accept(t){return t.visitAlterTableClauseDropPartition?t.visitAlterTableClauseDropPartition(this):t.visitChildren(this)}},WG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MATERIALIZE(){return this.getToken(CG.MATERIALIZE,0)}INDEX(){return this.getToken(CG.INDEX,0)}columnIdentifier(){return this.getRuleContext(0,Py)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}IN(){return this.getToken(CG.IN,0)}partitionClause(){return this.getRuleContext(0,EF)}accept(t){return t.visitAlterTableClauseMaterializeIndex?t.visitAlterTableClauseMaterializeIndex(this):t.visitChildren(this)}},VG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MATERIALIZE(){return this.getToken(CG.MATERIALIZE,0)}PROJECTION(){return this.getToken(CG.PROJECTION,0)}columnIdentifier(){return this.getRuleContext(0,Py)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}IN(){return this.getToken(CG.IN,0)}partitionClause(){return this.getRuleContext(0,EF)}accept(t){return t.visitAlterTableClauseMaterializeProjection?t.visitAlterTableClauseMaterializeProjection(this):t.visitChildren(this)}},XG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MOVE(){return this.getToken(CG.MOVE,0)}partitionClause(){return this.getRuleContext(0,EF)}TO(){return this.getToken(CG.TO,0)}DISK(){return this.getToken(CG.DISK,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}VOLUME(){return this.getToken(CG.VOLUME,0)}TABLE(){return this.getToken(CG.TABLE,0)}tableIdentifier(){return this.getRuleContext(0,gy)}accept(t){return t.visitAlterTableClauseMovePartition?t.visitAlterTableClauseMovePartition(this):t.visitChildren(this)}},KG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}RENAME(){return this.getToken(CG.RENAME,0)}COLUMN(){return this.getToken(CG.COLUMN,0)}columnIdentifier(t){return void 0===t?this.getRuleContexts(Py):this.getRuleContext(t,Py)}TO(){return this.getToken(CG.TO,0)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}accept(t){return t.visitAlterTableClauseRename?t.visitAlterTableClauseRename(this):t.visitChildren(this)}},QG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}FREEZE(){return this.getToken(CG.FREEZE,0)}partitionClause(){return this.getRuleContext(0,EF)}accept(t){return t.visitAlterTableClauseFreezePartition?t.visitAlterTableClauseFreezePartition(this):t.visitChildren(this)}},JG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CLEAR(){return this.getToken(CG.CLEAR,0)}COLUMN(){return this.getToken(CG.COLUMN,0)}columnIdentifier(){return this.getRuleContext(0,Py)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}IN(){return this.getToken(CG.IN,0)}partitionClause(){return this.getRuleContext(0,EF)}accept(t){return t.visitAlterTableClauseClearColumn?t.visitAlterTableClauseClearColumn(this):t.visitChildren(this)}},ZG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MODIFY(){return this.getToken(CG.MODIFY,0)}COLUMN(){return this.getToken(CG.COLUMN,0)}tableColumnDefinition(){return this.getRuleContext(0,qF)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}accept(t){return t.visitAlterTableClauseModify?t.visitAlterTableClauseModify(this):t.visitChildren(this)}},qG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CLEAR(){return this.getToken(CG.CLEAR,0)}INDEX(){return this.getToken(CG.INDEX,0)}columnIdentifier(){return this.getRuleContext(0,Py)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}IN(){return this.getToken(CG.IN,0)}partitionClause(){return this.getRuleContext(0,EF)}accept(t){return t.visitAlterTableClauseClearIndex?t.visitAlterTableClauseClearIndex(this):t.visitChildren(this)}},jG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}REMOVE(){return this.getToken(CG.REMOVE,0)}TTL(){return this.getToken(CG.TTL,0)}accept(t){return t.visitAlterTableClauseRemoveTTL?t.visitAlterTableClauseRemoveTTL(this):t.visitChildren(this)}},zG=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MODIFY(){return this.getToken(CG.MODIFY,0)}COLUMN(){return this.getToken(CG.COLUMN,0)}columnIdentifier(){return this.getRuleContext(0,Py)}codecExpression(){return this.getRuleContext(0,tv)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}accept(t){return t.visitAlterTableClauseModifyCodec?t.visitAlterTableClauseModifyCodec(this):t.visitChildren(this)}},$G=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ATTACH(){return this.getToken(CG.ATTACH,0)}partitionClause(){return this.getRuleContext(0,EF)}FROM(){return this.getToken(CG.FROM,0)}tableIdentifier(){return this.getRuleContext(0,gy)}accept(t){return t.visitAlterTableClauseAttach?t.visitAlterTableClauseAttach(this):t.visitChildren(this)}},tF=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DROP(){return this.getToken(CG.DROP,0)}PROJECTION(){return this.getToken(CG.PROJECTION,0)}columnIdentifier(){return this.getRuleContext(0,Py)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}accept(t){return t.visitAlterTableClauseDropProjection?t.visitAlterTableClauseDropProjection(this):t.visitChildren(this)}},eF=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DROP(){return this.getToken(CG.DROP,0)}INDEX(){return this.getToken(CG.INDEX,0)}columnIdentifier(){return this.getRuleContext(0,Py)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}accept(t){return t.visitAlterTableClauseDropIndex?t.visitAlterTableClauseDropIndex(this):t.visitChildren(this)}},sF=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MODIFY(){return this.getToken(CG.MODIFY,0)}COLUMN(){return this.getToken(CG.COLUMN,0)}columnIdentifier(){return this.getRuleContext(0,Py)}COMMENT(){return this.getToken(CG.COMMENT,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}accept(t){return t.visitAlterTableClauseModifyComment?t.visitAlterTableClauseModifyComment(this):t.visitChildren(this)}},aF=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}MODIFY(){return this.getToken(CG.MODIFY,0)}ttlClause(){return this.getRuleContext(0,WF)}accept(t){return t.visitAlterTableClauseModifyTTL?t.visitAlterTableClauseModifyTTL(this):t.visitChildren(this)}},rF=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(CG.ADD,0)}PROJECTION(){return this.getToken(CG.PROJECTION,0)}tableProjectionDefinition(){return this.getRuleContext(0,$F)}IF(){return this.getToken(CG.IF,0)}NOT(){return this.getToken(CG.NOT,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}AFTER(){return this.getToken(CG.AFTER,0)}columnIdentifier(){return this.getRuleContext(0,Py)}accept(t){return t.visitAlterTableClauseAddProjection?t.visitAlterTableClauseAddProjection(this):t.visitChildren(this)}},iF=class extends xG{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ADD(){return this.getToken(CG.ADD,0)}COLUMN(){return this.getToken(CG.COLUMN,0)}tableColumnDefinition(){return this.getRuleContext(0,qF)}IF(){return this.getToken(CG.IF,0)}NOT(){return this.getToken(CG.NOT,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}AFTER(){return this.getToken(CG.AFTER,0)}columnIdentifier(){return this.getRuleContext(0,Py)}accept(t){return t.visitAlterTableClauseAddColumn?t.visitAlterTableClauseAddColumn(this):t.visitChildren(this)}},cF=class extends ga{constructor(t,e){super(t,e)}assignmentExpression(t){return void 0===t?this.getRuleContexts(nF):this.getRuleContext(t,nF)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_assignmentExpressionList}accept(t){return t.visitAssignmentExpressionList?t.visitAssignmentExpressionList(this):t.visitChildren(this)}},nF=class extends ga{constructor(t,e){super(t,e)}columnIdentifier(){return this.getRuleContext(0,Py)}EQ_SINGLE(){return this.getToken(CG.EQ_SINGLE,0)}columnExpression(){return this.getRuleContext(0,bB)}get ruleIndex(){return CG.RULE_assignmentExpression}accept(t){return t.visitAssignmentExpression?t.visitAssignmentExpression(this):t.visitChildren(this)}},hF=class extends ga{constructor(t,e){super(t,e)}ALIAS(){return this.getToken(CG.ALIAS,0)}CODEC(){return this.getToken(CG.CODEC,0)}COMMENT(){return this.getToken(CG.COMMENT,0)}DEFAULT(){return this.getToken(CG.DEFAULT,0)}MATERIALIZED(){return this.getToken(CG.MATERIALIZED,0)}TTL(){return this.getToken(CG.TTL,0)}get ruleIndex(){return CG.RULE_tableColumnPropertyType}accept(t){return t.visitTableColumnPropertyType?t.visitTableColumnPropertyType(this):t.visitChildren(this)}},EF=class extends ga{constructor(t,e){super(t,e)}PARTITION(){return this.getToken(CG.PARTITION,0)}columnExpression(){return this.getRuleContext(0,bB)}ID(){return this.getToken(CG.ID,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}get ruleIndex(){return CG.RULE_partitionClause}accept(t){return t.visitPartitionClause?t.visitPartitionClause(this):t.visitChildren(this)}},TF=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_attachStatement}copyFrom(t){super.copyFrom(t)}},oF=class extends TF{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ATTACH(){return this.getToken(CG.ATTACH,0)}DICTIONARY(){return this.getToken(CG.DICTIONARY,0)}tableIdentifier(){return this.getRuleContext(0,gy)}clusterClause(){return this.getRuleContext(0,xF)}accept(t){return t.visitAttachDictionaryStatement?t.visitAttachDictionaryStatement(this):t.visitChildren(this)}},RF=class extends ga{constructor(t,e){super(t,e)}CHECK(){return this.getToken(CG.CHECK,0)}TABLE(){return this.getToken(CG.TABLE,0)}tableIdentifier(){return this.getRuleContext(0,gy)}partitionClause(){return this.getRuleContext(0,EF)}get ruleIndex(){return CG.RULE_checkStatement}accept(t){return t.visitCheckStatement?t.visitCheckStatement(this):t.visitChildren(this)}},AF=class extends ga{constructor(t,e){super(t,e)}DELETE(){return this.getToken(CG.DELETE,0)}FROM(){return this.getToken(CG.FROM,0)}tableIdentifier(){return this.getRuleContext(0,gy)}clusterClause(){return this.getRuleContext(0,xF)}whereClause(){return this.getRuleContext(0,fv)}get ruleIndex(){return CG.RULE_deleteStatement}accept(t){return t.visitDeleteStatement?t.visitDeleteStatement(this):t.visitChildren(this)}},SF=class extends ga{constructor(t,e){super(t,e)}TABLE(){return this.getToken(CG.TABLE,0)}tableIdentifier(){return this.getRuleContext(0,gy)}ATTACH(){return this.getToken(CG.ATTACH,0)}CREATE(){return this.getToken(CG.CREATE,0)}REPLACE(){return this.getToken(CG.REPLACE,0)}TEMPORARY(){return this.getToken(CG.TEMPORARY,0)}IF(){return this.getToken(CG.IF,0)}NOT(){return this.getToken(CG.NOT,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}uuidClause(){return this.getRuleContext(0,kF)}clusterClause(){return this.getRuleContext(0,xF)}tableSchemaClause(){return this.getRuleContext(0,FF)}engineClause(){return this.getRuleContext(0,fF)}subqueryClause(){return this.getRuleContext(0,GF)}OR(){return this.getToken(CG.OR,0)}get ruleIndex(){return CG.RULE_createTableStatement}accept(t){return t.visitCreateTableStatement?t.visitCreateTableStatement(this):t.visitChildren(this)}},lF=class extends ga{constructor(t,e){super(t,e)}DATABASE(){return this.getToken(CG.DATABASE,0)}identifier(){return this.getRuleContext(0,wy)}engineExpression(){return this.getRuleContext(0,VF)}ATTACH(){return this.getToken(CG.ATTACH,0)}CREATE(){return this.getToken(CG.CREATE,0)}IF(){return this.getToken(CG.IF,0)}NOT(){return this.getToken(CG.NOT,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}clusterClause(){return this.getRuleContext(0,xF)}get ruleIndex(){return CG.RULE_createDatabaseStatement}accept(t){return t.visitCreateDatabaseStatement?t.visitCreateDatabaseStatement(this):t.visitChildren(this)}},OF=class extends ga{constructor(t,e){super(t,e)}DICTIONARY(){return this.getToken(CG.DICTIONARY,0)}tableIdentifier(){return this.getRuleContext(0,gy)}dictionarySchemaClause(){return this.getRuleContext(0,CF)}dictionaryEngineClause(){return this.getRuleContext(0,PF)}ATTACH(){return this.getToken(CG.ATTACH,0)}CREATE(){return this.getToken(CG.CREATE,0)}REPLACE(){return this.getToken(CG.REPLACE,0)}IF(){return this.getToken(CG.IF,0)}NOT(){return this.getToken(CG.NOT,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}uuidClause(){return this.getRuleContext(0,kF)}clusterClause(){return this.getRuleContext(0,xF)}OR(){return this.getToken(CG.OR,0)}get ruleIndex(){return CG.RULE_createDictionaryStatement}accept(t){return t.visitCreateDictionaryStatement?t.visitCreateDictionaryStatement(this):t.visitChildren(this)}},IF=class extends ga{constructor(t,e){super(t,e)}LIVE(){return this.getToken(CG.LIVE,0)}VIEW(){return this.getToken(CG.VIEW,0)}tableIdentifier(){return this.getRuleContext(0,gy)}subqueryClause(){return this.getRuleContext(0,GF)}ATTACH(){return this.getToken(CG.ATTACH,0)}CREATE(){return this.getToken(CG.CREATE,0)}IF(){return this.getToken(CG.IF,0)}NOT(){return this.getToken(CG.NOT,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}uuidClause(){return this.getRuleContext(0,kF)}clusterClause(){return this.getRuleContext(0,xF)}WITH(){return this.getToken(CG.WITH,0)}TIMEOUT(){return this.getToken(CG.TIMEOUT,0)}destinationClause(){return this.getRuleContext(0,HF)}tableSchemaClause(){return this.getRuleContext(0,FF)}DECIMAL_LITERAL(){return this.getToken(CG.DECIMAL_LITERAL,0)}get ruleIndex(){return CG.RULE_createLiveViewStatement}accept(t){return t.visitCreateLiveViewStatement?t.visitCreateLiveViewStatement(this):t.visitChildren(this)}},uF=class extends ga{constructor(t,e){super(t,e)}MATERIALIZED(){return this.getToken(CG.MATERIALIZED,0)}VIEW(){return this.getToken(CG.VIEW,0)}tableIdentifier(){return this.getRuleContext(0,gy)}subqueryClause(){return this.getRuleContext(0,GF)}ATTACH(){return this.getToken(CG.ATTACH,0)}CREATE(){return this.getToken(CG.CREATE,0)}destinationClause(){return this.getRuleContext(0,HF)}engineClause(){return this.getRuleContext(0,fF)}IF(){return this.getToken(CG.IF,0)}NOT(){return this.getToken(CG.NOT,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}uuidClause(){return this.getRuleContext(0,kF)}clusterClause(){return this.getRuleContext(0,xF)}tableSchemaClause(){return this.getRuleContext(0,FF)}POPULATE(){return this.getToken(CG.POPULATE,0)}get ruleIndex(){return CG.RULE_createMaterializedViewStatement}accept(t){return t.visitCreateMaterializedViewStatement?t.visitCreateMaterializedViewStatement(this):t.visitChildren(this)}},NF=class extends ga{constructor(t,e){super(t,e)}VIEW(){return this.getToken(CG.VIEW,0)}tableIdentifier(){return this.getRuleContext(0,gy)}subqueryClause(){return this.getRuleContext(0,GF)}ATTACH(){return this.getToken(CG.ATTACH,0)}CREATE(){return this.getToken(CG.CREATE,0)}OR(){return this.getToken(CG.OR,0)}REPLACE(){return this.getToken(CG.REPLACE,0)}IF(){return this.getToken(CG.IF,0)}NOT(){return this.getToken(CG.NOT,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}uuidClause(){return this.getRuleContext(0,kF)}clusterClause(){return this.getRuleContext(0,xF)}tableSchemaClause(){return this.getRuleContext(0,FF)}get ruleIndex(){return CG.RULE_createViewStatement}accept(t){return t.visitCreateViewStatement?t.visitCreateViewStatement(this):t.visitChildren(this)}},LF=class extends ga{constructor(t,e){super(t,e)}createDatabaseStatement(){return this.getRuleContext(0,lF)}createDictionaryStatement(){return this.getRuleContext(0,OF)}createLiveViewStatement(){return this.getRuleContext(0,IF)}createMaterializedViewStatement(){return this.getRuleContext(0,uF)}createTableStatement(){return this.getRuleContext(0,SF)}createViewStatement(){return this.getRuleContext(0,NF)}get ruleIndex(){return CG.RULE_createStatement}accept(t){return t.visitCreateStatement?t.visitCreateStatement(this):t.visitChildren(this)}},CF=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(CG.LPAREN,0)}dictionaryAttributeDefinition(t){return void 0===t?this.getRuleContexts(_F):this.getRuleContext(t,_F)}RPAREN(){return this.getToken(CG.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_dictionarySchemaClause}accept(t){return t.visitDictionarySchemaClause?t.visitDictionarySchemaClause(this):t.visitChildren(this)}},_F=class extends ga{constructor(t,e){super(t,e),this.attrs=new Set}identifier(){return this.getRuleContext(0,wy)}columnTypeExpression(){return this.getRuleContext(0,xB)}DEFAULT(t){return void 0===t?this.getTokens(CG.DEFAULT):this.getToken(CG.DEFAULT,t)}literal(t){return void 0===t?this.getRuleContexts(vy):this.getRuleContext(t,vy)}EXPRESSION(t){return void 0===t?this.getTokens(CG.EXPRESSION):this.getToken(CG.EXPRESSION,t)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}HIERARCHICAL(t){return void 0===t?this.getTokens(CG.HIERARCHICAL):this.getToken(CG.HIERARCHICAL,t)}INJECTIVE(t){return void 0===t?this.getTokens(CG.INJECTIVE):this.getToken(CG.INJECTIVE,t)}IS_OBJECT_ID(t){return void 0===t?this.getTokens(CG.IS_OBJECT_ID):this.getToken(CG.IS_OBJECT_ID,t)}get ruleIndex(){return CG.RULE_dictionaryAttributeDefinition}accept(t){return t.visitDictionaryAttributeDefinition?t.visitDictionaryAttributeDefinition(this):t.visitChildren(this)}},PF=class extends ga{constructor(t,e){super(t,e),this.clauses=new Set}dictionaryPrimaryKeyClause(){return this.getRuleContext(0,MF)}sourceClause(t){return void 0===t?this.getRuleContexts(UF):this.getRuleContext(t,UF)}lifetimeClause(t){return void 0===t?this.getRuleContexts(mF):this.getRuleContext(t,mF)}layoutClause(t){return void 0===t?this.getRuleContexts(DF):this.getRuleContext(t,DF)}rangeClause(t){return void 0===t?this.getRuleContexts(pF):this.getRuleContext(t,pF)}dictionarySettingsClause(t){return void 0===t?this.getRuleContexts(gF):this.getRuleContext(t,gF)}get ruleIndex(){return CG.RULE_dictionaryEngineClause}accept(t){return t.visitDictionaryEngineClause?t.visitDictionaryEngineClause(this):t.visitChildren(this)}},MF=class extends ga{constructor(t,e){super(t,e)}PRIMARY(){return this.getToken(CG.PRIMARY,0)}KEY(){return this.getToken(CG.KEY,0)}columnExpressionList(){return this.getRuleContext(0,BB)}get ruleIndex(){return CG.RULE_dictionaryPrimaryKeyClause}accept(t){return t.visitDictionaryPrimaryKeyClause?t.visitDictionaryPrimaryKeyClause(this):t.visitChildren(this)}},dF=class extends ga{constructor(t,e){super(t,e)}identifier(t){return void 0===t?this.getRuleContexts(wy):this.getRuleContext(t,wy)}literal(){return this.getRuleContext(0,vy)}LPAREN(){return this.getToken(CG.LPAREN,0)}RPAREN(){return this.getToken(CG.RPAREN,0)}get ruleIndex(){return CG.RULE_dictionaryArgumentExpression}accept(t){return t.visitDictionaryArgumentExpression?t.visitDictionaryArgumentExpression(this):t.visitChildren(this)}},UF=class extends ga{constructor(t,e){super(t,e)}SOURCE(){return this.getToken(CG.SOURCE,0)}LPAREN(t){return void 0===t?this.getTokens(CG.LPAREN):this.getToken(CG.LPAREN,t)}identifier(){return this.getRuleContext(0,wy)}RPAREN(t){return void 0===t?this.getTokens(CG.RPAREN):this.getToken(CG.RPAREN,t)}dictionaryArgumentExpression(t){return void 0===t?this.getRuleContexts(dF):this.getRuleContext(t,dF)}get ruleIndex(){return CG.RULE_sourceClause}accept(t){return t.visitSourceClause?t.visitSourceClause(this):t.visitChildren(this)}},mF=class extends ga{constructor(t,e){super(t,e)}LIFETIME(){return this.getToken(CG.LIFETIME,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}RPAREN(){return this.getToken(CG.RPAREN,0)}DECIMAL_LITERAL(t){return void 0===t?this.getTokens(CG.DECIMAL_LITERAL):this.getToken(CG.DECIMAL_LITERAL,t)}MIN(){return this.getToken(CG.MIN,0)}MAX(){return this.getToken(CG.MAX,0)}get ruleIndex(){return CG.RULE_lifetimeClause}accept(t){return t.visitLifetimeClause?t.visitLifetimeClause(this):t.visitChildren(this)}},DF=class extends ga{constructor(t,e){super(t,e)}LAYOUT(){return this.getToken(CG.LAYOUT,0)}LPAREN(t){return void 0===t?this.getTokens(CG.LPAREN):this.getToken(CG.LPAREN,t)}identifier(){return this.getRuleContext(0,wy)}RPAREN(t){return void 0===t?this.getTokens(CG.RPAREN):this.getToken(CG.RPAREN,t)}dictionaryArgumentExpression(t){return void 0===t?this.getRuleContexts(dF):this.getRuleContext(t,dF)}get ruleIndex(){return CG.RULE_layoutClause}accept(t){return t.visitLayoutClause?t.visitLayoutClause(this):t.visitChildren(this)}},pF=class extends ga{constructor(t,e){super(t,e)}RANGE(){return this.getToken(CG.RANGE,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}RPAREN(){return this.getToken(CG.RPAREN,0)}MIN(){return this.getToken(CG.MIN,0)}identifier(t){return void 0===t?this.getRuleContexts(wy):this.getRuleContext(t,wy)}MAX(){return this.getToken(CG.MAX,0)}get ruleIndex(){return CG.RULE_rangeClause}accept(t){return t.visitRangeClause?t.visitRangeClause(this):t.visitChildren(this)}},gF=class extends ga{constructor(t,e){super(t,e)}SETTINGS(){return this.getToken(CG.SETTINGS,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}settingExpressionList(){return this.getRuleContext(0,EB)}RPAREN(){return this.getToken(CG.RPAREN,0)}get ruleIndex(){return CG.RULE_dictionarySettingsClause}accept(t){return t.visitDictionarySettingsClause?t.visitDictionarySettingsClause(this):t.visitChildren(this)}},xF=class extends ga{constructor(t,e){super(t,e)}ON(){return this.getToken(CG.ON,0)}CLUSTER(){return this.getToken(CG.CLUSTER,0)}identifier(){return this.getRuleContext(0,wy)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}get ruleIndex(){return CG.RULE_clusterClause}accept(t){return t.visitClusterClause?t.visitClusterClause(this):t.visitChildren(this)}},kF=class extends ga{constructor(t,e){super(t,e)}UUID(){return this.getToken(CG.UUID,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}get ruleIndex(){return CG.RULE_uuidClause}accept(t){return t.visitUuidClause?t.visitUuidClause(this):t.visitChildren(this)}},HF=class extends ga{constructor(t,e){super(t,e)}TO(){return this.getToken(CG.TO,0)}tableIdentifier(){return this.getRuleContext(0,gy)}get ruleIndex(){return CG.RULE_destinationClause}accept(t){return t.visitDestinationClause?t.visitDestinationClause(this):t.visitChildren(this)}},GF=class extends ga{constructor(t,e){super(t,e)}AS(){return this.getToken(CG.AS,0)}selectUnionStatement(){return this.getRuleContext(0,gv)}get ruleIndex(){return CG.RULE_subqueryClause}accept(t){return t.visitSubqueryClause?t.visitSubqueryClause(this):t.visitChildren(this)}},FF=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_tableSchemaClause}copyFrom(t){super.copyFrom(t)}},vF=class extends FF{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}AS(){return this.getToken(CG.AS,0)}tableIdentifier(){return this.getRuleContext(0,gy)}accept(t){return t.visitSchemaAsTableClause?t.visitSchemaAsTableClause(this):t.visitChildren(this)}},BF=class extends FF{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}AS(){return this.getToken(CG.AS,0)}tableFunctionExpression(){return this.getRuleContext(0,py)}accept(t){return t.visitSchemaAsFunctionClause?t.visitSchemaAsFunctionClause(this):t.visitChildren(this)}},yF=class extends FF{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LPAREN(){return this.getToken(CG.LPAREN,0)}tableElementExpression(t){return void 0===t?this.getRuleContexts(XF):this.getRuleContext(t,XF)}RPAREN(){return this.getToken(CG.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}accept(t){return t.visitSchemaDescriptionClause?t.visitSchemaDescriptionClause(this):t.visitChildren(this)}},fF=class extends ga{constructor(t,e){super(t,e),this.clauses=new Set}engineExpression(){return this.getRuleContext(0,VF)}orderByClause(t){return void 0===t?this.getRuleContexts(bv):this.getRuleContext(t,bv)}partitionByClause(t){return void 0===t?this.getRuleContexts(YF):this.getRuleContext(t,YF)}primaryKeyClause(t){return void 0===t?this.getRuleContexts(wF):this.getRuleContext(t,wF)}sampleByClause(t){return void 0===t?this.getRuleContexts(bF):this.getRuleContext(t,bF)}ttlClause(t){return void 0===t?this.getRuleContexts(WF):this.getRuleContext(t,WF)}settingsClause(t){return void 0===t?this.getRuleContexts(Kv):this.getRuleContext(t,Kv)}get ruleIndex(){return CG.RULE_engineClause}accept(t){return t.visitEngineClause?t.visitEngineClause(this):t.visitChildren(this)}},YF=class extends ga{constructor(t,e){super(t,e)}PARTITION(){return this.getToken(CG.PARTITION,0)}BY(){return this.getToken(CG.BY,0)}columnExpression(){return this.getRuleContext(0,bB)}get ruleIndex(){return CG.RULE_partitionByClause}accept(t){return t.visitPartitionByClause?t.visitPartitionByClause(this):t.visitChildren(this)}},wF=class extends ga{constructor(t,e){super(t,e)}PRIMARY(){return this.getToken(CG.PRIMARY,0)}KEY(){return this.getToken(CG.KEY,0)}columnExpression(){return this.getRuleContext(0,bB)}get ruleIndex(){return CG.RULE_primaryKeyClause}accept(t){return t.visitPrimaryKeyClause?t.visitPrimaryKeyClause(this):t.visitChildren(this)}},bF=class extends ga{constructor(t,e){super(t,e)}SAMPLE(){return this.getToken(CG.SAMPLE,0)}BY(){return this.getToken(CG.BY,0)}columnExpression(){return this.getRuleContext(0,bB)}get ruleIndex(){return CG.RULE_sampleByClause}accept(t){return t.visitSampleByClause?t.visitSampleByClause(this):t.visitChildren(this)}},WF=class extends ga{constructor(t,e){super(t,e)}TTL(){return this.getToken(CG.TTL,0)}ttlExpression(t){return void 0===t?this.getRuleContexts(sv):this.getRuleContext(t,sv)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_ttlClause}accept(t){return t.visitTtlClause?t.visitTtlClause(this):t.visitChildren(this)}},VF=class extends ga{constructor(t,e){super(t,e)}ENGINE(){return this.getToken(CG.ENGINE,0)}identifierOrNull(){return this.getRuleContext(0,by)}EQ_SINGLE(){return this.getToken(CG.EQ_SINGLE,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}RPAREN(){return this.getToken(CG.RPAREN,0)}columnExpressionList(){return this.getRuleContext(0,BB)}get ruleIndex(){return CG.RULE_engineExpression}accept(t){return t.visitEngineExpression?t.visitEngineExpression(this):t.visitChildren(this)}},XF=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_tableElementExpression}copyFrom(t){super.copyFrom(t)}},KF=class extends XF{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}tableColumnDefinition(){return this.getRuleContext(0,qF)}accept(t){return t.visitTableElementExpressionColumn?t.visitTableElementExpressionColumn(this):t.visitChildren(this)}},QF=class extends XF{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CONSTRAINT(){return this.getToken(CG.CONSTRAINT,0)}identifier(){return this.getRuleContext(0,wy)}CHECK(){return this.getToken(CG.CHECK,0)}columnExpression(){return this.getRuleContext(0,bB)}accept(t){return t.visitTableElementExpressionConstraint?t.visitTableElementExpressionConstraint(this):t.visitChildren(this)}},JF=class extends XF{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}INDEX(){return this.getToken(CG.INDEX,0)}tableIndexDefinition(){return this.getRuleContext(0,zF)}accept(t){return t.visitTableElementExpressionIndex?t.visitTableElementExpressionIndex(this):t.visitChildren(this)}},ZF=class extends XF{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}PROJECTION(){return this.getToken(CG.PROJECTION,0)}tableProjectionDefinition(){return this.getRuleContext(0,$F)}accept(t){return t.visitTableElementExpressionProjection?t.visitTableElementExpressionProjection(this):t.visitChildren(this)}},qF=class extends ga{constructor(t,e){super(t,e)}columnIdentifier(){return this.getRuleContext(0,Py)}columnTypeExpression(){return this.getRuleContext(0,xB)}tableColumnPropertyExpression(){return this.getRuleContext(0,jF)}COMMENT(){return this.getToken(CG.COMMENT,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}codecExpression(){return this.getRuleContext(0,tv)}TTL(){return this.getToken(CG.TTL,0)}columnExpression(){return this.getRuleContext(0,bB)}get ruleIndex(){return CG.RULE_tableColumnDefinition}accept(t){return t.visitTableColumnDefinition?t.visitTableColumnDefinition(this):t.visitChildren(this)}},jF=class extends ga{constructor(t,e){super(t,e)}columnExpression(){return this.getRuleContext(0,bB)}DEFAULT(){return this.getToken(CG.DEFAULT,0)}MATERIALIZED(){return this.getToken(CG.MATERIALIZED,0)}ALIAS(){return this.getToken(CG.ALIAS,0)}get ruleIndex(){return CG.RULE_tableColumnPropertyExpression}accept(t){return t.visitTableColumnPropertyExpression?t.visitTableColumnPropertyExpression(this):t.visitChildren(this)}},zF=class extends ga{constructor(t,e){super(t,e)}columnIdentifier(){return this.getRuleContext(0,Py)}columnExpression(){return this.getRuleContext(0,bB)}TYPE(){return this.getToken(CG.TYPE,0)}columnTypeExpression(){return this.getRuleContext(0,xB)}GRANULARITY(){return this.getToken(CG.GRANULARITY,0)}DECIMAL_LITERAL(){return this.getToken(CG.DECIMAL_LITERAL,0)}get ruleIndex(){return CG.RULE_tableIndexDefinition}accept(t){return t.visitTableIndexDefinition?t.visitTableIndexDefinition(this):t.visitChildren(this)}},$F=class extends ga{constructor(t,e){super(t,e)}columnIdentifier(){return this.getRuleContext(0,Py)}projectionSelectStatement(){return this.getRuleContext(0,pv)}get ruleIndex(){return CG.RULE_tableProjectionDefinition}accept(t){return t.visitTableProjectionDefinition?t.visitTableProjectionDefinition(this):t.visitChildren(this)}},tv=class extends ga{constructor(t,e){super(t,e)}CODEC(){return this.getToken(CG.CODEC,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}codecArgExpression(t){return void 0===t?this.getRuleContexts(ev):this.getRuleContext(t,ev)}RPAREN(){return this.getToken(CG.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_codecExpression}accept(t){return t.visitCodecExpression?t.visitCodecExpression(this):t.visitChildren(this)}},ev=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,wy)}LPAREN(){return this.getToken(CG.LPAREN,0)}RPAREN(){return this.getToken(CG.RPAREN,0)}columnExpressionList(){return this.getRuleContext(0,BB)}get ruleIndex(){return CG.RULE_codecArgExpression}accept(t){return t.visitCodecArgExpression?t.visitCodecArgExpression(this):t.visitChildren(this)}},sv=class extends ga{constructor(t,e){super(t,e)}columnExpression(){return this.getRuleContext(0,bB)}DELETE(){return this.getToken(CG.DELETE,0)}TO(){return this.getToken(CG.TO,0)}DISK(){return this.getToken(CG.DISK,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}VOLUME(){return this.getToken(CG.VOLUME,0)}get ruleIndex(){return CG.RULE_ttlExpression}accept(t){return t.visitTtlExpression?t.visitTtlExpression(this):t.visitChildren(this)}},av=class extends ga{constructor(t,e){super(t,e)}tableExpression(){return this.getRuleContext(0,My)}DESCRIBE(){return this.getToken(CG.DESCRIBE,0)}DESC(){return this.getToken(CG.DESC,0)}TABLE(){return this.getToken(CG.TABLE,0)}get ruleIndex(){return CG.RULE_describeStatement}accept(t){return t.visitDescribeStatement?t.visitDescribeStatement(this):t.visitChildren(this)}},rv=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_dropStatement}copyFrom(t){super.copyFrom(t)}},iv=class extends rv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DATABASE(){return this.getToken(CG.DATABASE,0)}databaseIdentifier(){return this.getRuleContext(0,Hy)}DETACH(){return this.getToken(CG.DETACH,0)}DROP(){return this.getToken(CG.DROP,0)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}clusterClause(){return this.getRuleContext(0,xF)}accept(t){return t.visitDropDatabaseStatement?t.visitDropDatabaseStatement(this):t.visitChildren(this)}},cv=class extends rv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}tableIdentifier(){return this.getRuleContext(0,gy)}DETACH(){return this.getToken(CG.DETACH,0)}DROP(){return this.getToken(CG.DROP,0)}DICTIONARY(){return this.getToken(CG.DICTIONARY,0)}TABLE(){return this.getToken(CG.TABLE,0)}VIEW(){return this.getToken(CG.VIEW,0)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}clusterClause(){return this.getRuleContext(0,xF)}NO(){return this.getToken(CG.NO,0)}DELAY(){return this.getToken(CG.DELAY,0)}TEMPORARY(){return this.getToken(CG.TEMPORARY,0)}accept(t){return t.visitDropTableStatement?t.visitDropTableStatement(this):t.visitChildren(this)}},nv=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_existsStatement}copyFrom(t){super.copyFrom(t)}},hv=class extends nv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXISTS(){return this.getToken(CG.EXISTS,0)}DATABASE(){return this.getToken(CG.DATABASE,0)}databaseIdentifier(){return this.getRuleContext(0,Hy)}accept(t){return t.visitExistsDatabaseStatement?t.visitExistsDatabaseStatement(this):t.visitChildren(this)}},Ev=class extends nv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXISTS(){return this.getToken(CG.EXISTS,0)}tableIdentifier(){return this.getRuleContext(0,gy)}DICTIONARY(){return this.getToken(CG.DICTIONARY,0)}TABLE(){return this.getToken(CG.TABLE,0)}VIEW(){return this.getToken(CG.VIEW,0)}TEMPORARY(){return this.getToken(CG.TEMPORARY,0)}accept(t){return t.visitExistsTableStatement?t.visitExistsTableStatement(this):t.visitChildren(this)}},Tv=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_explainStatement}copyFrom(t){super.copyFrom(t)}},ov=class extends Tv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXPLAIN(){return this.getToken(CG.EXPLAIN,0)}AST(){return this.getToken(CG.AST,0)}notInsertStatement(){return this.getRuleContext(0,dG)}accept(t){return t.visitExplainASTStatement?t.visitExplainASTStatement(this):t.visitChildren(this)}},Rv=class extends Tv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXPLAIN(){return this.getToken(CG.EXPLAIN,0)}QUERY(){return this.getToken(CG.QUERY,0)}TREE(){return this.getToken(CG.TREE,0)}notInsertStatement(){return this.getRuleContext(0,dG)}accept(t){return t.visitExplainQueryTreeStatement?t.visitExplainQueryTreeStatement(this):t.visitChildren(this)}},Av=class extends Tv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXPLAIN(){return this.getToken(CG.EXPLAIN,0)}PLAN(){return this.getToken(CG.PLAN,0)}notInsertStatement(){return this.getRuleContext(0,dG)}accept(t){return t.visitExplainPlanStatement?t.visitExplainPlanStatement(this):t.visitChildren(this)}},Sv=class extends Tv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXPLAIN(){return this.getToken(CG.EXPLAIN,0)}notInsertStatement(){return this.getRuleContext(0,dG)}accept(t){return t.visitExplainDefaultStatement?t.visitExplainDefaultStatement(this):t.visitChildren(this)}},lv=class extends Tv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXPLAIN(){return this.getToken(CG.EXPLAIN,0)}ESTIMATE(){return this.getToken(CG.ESTIMATE,0)}notInsertStatement(){return this.getRuleContext(0,dG)}accept(t){return t.visitExplainEstimateStatement?t.visitExplainEstimateStatement(this):t.visitChildren(this)}},Ov=class extends Tv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXPLAIN(){return this.getToken(CG.EXPLAIN,0)}SYNTAX(){return this.getToken(CG.SYNTAX,0)}notInsertStatement(){return this.getRuleContext(0,dG)}accept(t){return t.visitExplainSyntaxStatement?t.visitExplainSyntaxStatement(this):t.visitChildren(this)}},Iv=class extends Tv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXPLAIN(){return this.getToken(CG.EXPLAIN,0)}PIPELINE(){return this.getToken(CG.PIPELINE,0)}notInsertStatement(){return this.getRuleContext(0,dG)}accept(t){return t.visitExplainPipelineStatement?t.visitExplainPipelineStatement(this):t.visitChildren(this)}},uv=class extends ga{constructor(t,e){super(t,e)}INSERT(){return this.getToken(CG.INSERT,0)}INTO(){return this.getToken(CG.INTO,0)}dataClause(){return this.getRuleContext(0,Lv)}tableIdentifier(){return this.getRuleContext(0,gy)}FUNCTION(){return this.getToken(CG.FUNCTION,0)}tableFunctionExpression(){return this.getRuleContext(0,py)}TABLE(){return this.getToken(CG.TABLE,0)}columnsClause(){return this.getRuleContext(0,Nv)}get ruleIndex(){return CG.RULE_insertStatement}accept(t){return t.visitInsertStatement?t.visitInsertStatement(this):t.visitChildren(this)}},Nv=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(CG.LPAREN,0)}columnIdentifier(t){return void 0===t?this.getRuleContexts(Py):this.getRuleContext(t,Py)}RPAREN(){return this.getToken(CG.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_columnsClause}accept(t){return t.visitColumnsClause?t.visitColumnsClause(this):t.visitChildren(this)}},Lv=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_dataClause}copyFrom(t){super.copyFrom(t)}},Cv=class extends Lv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}valuesStatement(){return this.getRuleContext(0,Mv)}accept(t){return t.visitDataClauseValues?t.visitDataClauseValues(this):t.visitChildren(this)}},_v=class extends Lv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}FORMAT(){return this.getToken(CG.FORMAT,0)}identifier(){return this.getRuleContext(0,wy)}accept(t){return t.visitDataClauseFormat?t.visitDataClauseFormat(this):t.visitChildren(this)}},Pv=class extends Lv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}selectUnionStatement(){return this.getRuleContext(0,gv)}EOF(){return this.getToken(CG.EOF,0)}SEMICOLON(){return this.getToken(CG.SEMICOLON,0)}accept(t){return t.visitDataClauseSelect?t.visitDataClauseSelect(this):t.visitChildren(this)}},Mv=class extends ga{constructor(t,e){super(t,e)}VALUES(){return this.getToken(CG.VALUES,0)}LPAREN(t){return void 0===t?this.getTokens(CG.LPAREN):this.getToken(CG.LPAREN,t)}RPAREN(t){return void 0===t?this.getTokens(CG.RPAREN):this.getToken(CG.RPAREN,t)}literal(t){return void 0===t?this.getRuleContexts(vy):this.getRuleContext(t,vy)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_valuesStatement}accept(t){return t.visitValuesStatement?t.visitValuesStatement(this):t.visitChildren(this)}},dv=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_killStatement}copyFrom(t){super.copyFrom(t)}},Uv=class extends dv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}KILL(){return this.getToken(CG.KILL,0)}MUTATION(){return this.getToken(CG.MUTATION,0)}whereClause(){return this.getRuleContext(0,fv)}clusterClause(){return this.getRuleContext(0,xF)}SYNC(){return this.getToken(CG.SYNC,0)}ASYNC(){return this.getToken(CG.ASYNC,0)}TEST(){return this.getToken(CG.TEST,0)}accept(t){return t.visitKillMutationStatement?t.visitKillMutationStatement(this):t.visitChildren(this)}},mv=class extends ga{constructor(t,e){super(t,e)}OPTIMIZE(){return this.getToken(CG.OPTIMIZE,0)}TABLE(){return this.getToken(CG.TABLE,0)}tableIdentifier(){return this.getRuleContext(0,gy)}clusterClause(){return this.getRuleContext(0,xF)}partitionClause(){return this.getRuleContext(0,EF)}FINAL(){return this.getToken(CG.FINAL,0)}DEDUPLICATE(){return this.getToken(CG.DEDUPLICATE,0)}get ruleIndex(){return CG.RULE_optimizeStatement}accept(t){return t.visitOptimizeStatement?t.visitOptimizeStatement(this):t.visitChildren(this)}},Dv=class extends ga{constructor(t,e){super(t,e)}RENAME(){return this.getToken(CG.RENAME,0)}TABLE(){return this.getToken(CG.TABLE,0)}tableIdentifier(t){return void 0===t?this.getRuleContexts(gy):this.getRuleContext(t,gy)}TO(t){return void 0===t?this.getTokens(CG.TO):this.getToken(CG.TO,t)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}clusterClause(){return this.getRuleContext(0,xF)}get ruleIndex(){return CG.RULE_renameStatement}accept(t){return t.visitRenameStatement?t.visitRenameStatement(this):t.visitChildren(this)}},pv=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(CG.LPAREN,0)}SELECT(){return this.getToken(CG.SELECT,0)}columnExpressionList(){return this.getRuleContext(0,BB)}RPAREN(){return this.getToken(CG.RPAREN,0)}withClause(){return this.getRuleContext(0,Hv)}groupByClause(){return this.getRuleContext(0,Yv)}projectionOrderByClause(){return this.getRuleContext(0,Wv)}get ruleIndex(){return CG.RULE_projectionSelectStatement}accept(t){return t.visitProjectionSelectStatement?t.visitProjectionSelectStatement(this):t.visitChildren(this)}},gv=class extends ga{constructor(t,e){super(t,e)}selectStatementWithParentheses(t){return void 0===t?this.getRuleContexts(xv):this.getRuleContext(t,xv)}UNION(t){return void 0===t?this.getTokens(CG.UNION):this.getToken(CG.UNION,t)}ALL(t){return void 0===t?this.getTokens(CG.ALL):this.getToken(CG.ALL,t)}get ruleIndex(){return CG.RULE_selectUnionStatement}accept(t){return t.visitSelectUnionStatement?t.visitSelectUnionStatement(this):t.visitChildren(this)}},xv=class extends ga{constructor(t,e){super(t,e)}selectStatement(){return this.getRuleContext(0,kv)}LPAREN(){return this.getToken(CG.LPAREN,0)}selectUnionStatement(){return this.getRuleContext(0,gv)}RPAREN(){return this.getToken(CG.RPAREN,0)}get ruleIndex(){return CG.RULE_selectStatementWithParentheses}accept(t){return t.visitSelectStatementWithParentheses?t.visitSelectStatementWithParentheses(this):t.visitChildren(this)}},kv=class extends ga{constructor(t,e){super(t,e)}SELECT(){return this.getToken(CG.SELECT,0)}columnExpressionList(){return this.getRuleContext(0,BB)}withClause(){return this.getRuleContext(0,Hv)}DISTINCT(){return this.getToken(CG.DISTINCT,0)}topClause(){return this.getRuleContext(0,Gv)}fromClause(){return this.getRuleContext(0,Fv)}arrayJoinClause(){return this.getRuleContext(0,vv)}windowClause(){return this.getRuleContext(0,Bv)}prewhereClause(){return this.getRuleContext(0,yv)}whereClause(){return this.getRuleContext(0,fv)}groupByClause(){return this.getRuleContext(0,Yv)}WITH(t){return void 0===t?this.getTokens(CG.WITH):this.getToken(CG.WITH,t)}TOTALS(){return this.getToken(CG.TOTALS,0)}havingClause(){return this.getRuleContext(0,wv)}orderByClause(){return this.getRuleContext(0,bv)}limitByClause(){return this.getRuleContext(0,Vv)}limitClause(){return this.getRuleContext(0,Xv)}settingsClause(){return this.getRuleContext(0,Kv)}CUBE(){return this.getToken(CG.CUBE,0)}ROLLUP(){return this.getToken(CG.ROLLUP,0)}get ruleIndex(){return CG.RULE_selectStatement}accept(t){return t.visitSelectStatement?t.visitSelectStatement(this):t.visitChildren(this)}},Hv=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(CG.WITH,0)}columnExpressionList(){return this.getRuleContext(0,BB)}get ruleIndex(){return CG.RULE_withClause}accept(t){return t.visitWithClause?t.visitWithClause(this):t.visitChildren(this)}},Gv=class extends ga{constructor(t,e){super(t,e)}TOP(){return this.getToken(CG.TOP,0)}DECIMAL_LITERAL(){return this.getToken(CG.DECIMAL_LITERAL,0)}WITH(){return this.getToken(CG.WITH,0)}TIES(){return this.getToken(CG.TIES,0)}get ruleIndex(){return CG.RULE_topClause}accept(t){return t.visitTopClause?t.visitTopClause(this):t.visitChildren(this)}},Fv=class extends ga{constructor(t,e){super(t,e)}FROM(){return this.getToken(CG.FROM,0)}joinExpression(){return this.getRuleContext(0,Qv)}get ruleIndex(){return CG.RULE_fromClause}accept(t){return t.visitFromClause?t.visitFromClause(this):t.visitChildren(this)}},vv=class extends ga{constructor(t,e){super(t,e)}ARRAY(){return this.getToken(CG.ARRAY,0)}JOIN(){return this.getToken(CG.JOIN,0)}columnExpressionList(){return this.getRuleContext(0,BB)}LEFT(){return this.getToken(CG.LEFT,0)}INNER(){return this.getToken(CG.INNER,0)}get ruleIndex(){return CG.RULE_arrayJoinClause}accept(t){return t.visitArrayJoinClause?t.visitArrayJoinClause(this):t.visitChildren(this)}},Bv=class extends ga{constructor(t,e){super(t,e)}WINDOW(){return this.getToken(CG.WINDOW,0)}identifier(){return this.getRuleContext(0,wy)}AS(){return this.getToken(CG.AS,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}windowExpression(){return this.getRuleContext(0,oB)}RPAREN(){return this.getToken(CG.RPAREN,0)}get ruleIndex(){return CG.RULE_windowClause}accept(t){return t.visitWindowClause?t.visitWindowClause(this):t.visitChildren(this)}},yv=class extends ga{constructor(t,e){super(t,e)}PREWHERE(){return this.getToken(CG.PREWHERE,0)}columnExpression(){return this.getRuleContext(0,bB)}get ruleIndex(){return CG.RULE_prewhereClause}accept(t){return t.visitPrewhereClause?t.visitPrewhereClause(this):t.visitChildren(this)}},fv=class extends ga{constructor(t,e){super(t,e)}WHERE(){return this.getToken(CG.WHERE,0)}columnExpression(){return this.getRuleContext(0,bB)}get ruleIndex(){return CG.RULE_whereClause}accept(t){return t.visitWhereClause?t.visitWhereClause(this):t.visitChildren(this)}},Yv=class extends ga{constructor(t,e){super(t,e)}GROUP(){return this.getToken(CG.GROUP,0)}BY(){return this.getToken(CG.BY,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}columnExpressionList(){return this.getRuleContext(0,BB)}RPAREN(){return this.getToken(CG.RPAREN,0)}CUBE(){return this.getToken(CG.CUBE,0)}ROLLUP(){return this.getToken(CG.ROLLUP,0)}get ruleIndex(){return CG.RULE_groupByClause}accept(t){return t.visitGroupByClause?t.visitGroupByClause(this):t.visitChildren(this)}},wv=class extends ga{constructor(t,e){super(t,e)}HAVING(){return this.getToken(CG.HAVING,0)}columnExpression(){return this.getRuleContext(0,bB)}get ruleIndex(){return CG.RULE_havingClause}accept(t){return t.visitHavingClause?t.visitHavingClause(this):t.visitChildren(this)}},bv=class extends ga{constructor(t,e){super(t,e)}ORDER(){return this.getToken(CG.ORDER,0)}BY(){return this.getToken(CG.BY,0)}orderExpressionList(){return this.getRuleContext(0,cB)}get ruleIndex(){return CG.RULE_orderByClause}accept(t){return t.visitOrderByClause?t.visitOrderByClause(this):t.visitChildren(this)}},Wv=class extends ga{constructor(t,e){super(t,e)}ORDER(){return this.getToken(CG.ORDER,0)}BY(){return this.getToken(CG.BY,0)}columnExpressionList(){return this.getRuleContext(0,BB)}get ruleIndex(){return CG.RULE_projectionOrderByClause}accept(t){return t.visitProjectionOrderByClause?t.visitProjectionOrderByClause(this):t.visitChildren(this)}},Vv=class extends ga{constructor(t,e){super(t,e)}LIMIT(){return this.getToken(CG.LIMIT,0)}limitExpression(){return this.getRuleContext(0,iB)}BY(){return this.getToken(CG.BY,0)}columnExpressionList(){return this.getRuleContext(0,BB)}get ruleIndex(){return CG.RULE_limitByClause}accept(t){return t.visitLimitByClause?t.visitLimitByClause(this):t.visitChildren(this)}},Xv=class extends ga{constructor(t,e){super(t,e)}LIMIT(){return this.getToken(CG.LIMIT,0)}limitExpression(){return this.getRuleContext(0,iB)}WITH(){return this.getToken(CG.WITH,0)}TIES(){return this.getToken(CG.TIES,0)}get ruleIndex(){return CG.RULE_limitClause}accept(t){return t.visitLimitClause?t.visitLimitClause(this):t.visitChildren(this)}},Kv=class extends ga{constructor(t,e){super(t,e)}SETTINGS(){return this.getToken(CG.SETTINGS,0)}settingExpressionList(){return this.getRuleContext(0,EB)}get ruleIndex(){return CG.RULE_settingsClause}accept(t){return t.visitSettingsClause?t.visitSettingsClause(this):t.visitChildren(this)}},Qv=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_joinExpression}copyFrom(t){super.copyFrom(t)}},Jv=class extends Qv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LPAREN(){return this.getToken(CG.LPAREN,0)}joinExpression(){return this.getRuleContext(0,Qv)}RPAREN(){return this.getToken(CG.RPAREN,0)}accept(t){return t.visitJoinExpressionParens?t.visitJoinExpressionParens(this):t.visitChildren(this)}},Zv=class extends Qv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}tableExpression(){return this.getRuleContext(0,My)}FINAL(){return this.getToken(CG.FINAL,0)}sampleClause(){return this.getRuleContext(0,rB)}accept(t){return t.visitJoinExpressionTable?t.visitJoinExpressionTable(this):t.visitChildren(this)}},qv=class extends Qv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}joinExpression(t){return void 0===t?this.getRuleContexts(Qv):this.getRuleContext(t,Qv)}joinOperatorCross(){return this.getRuleContext(0,sB)}accept(t){return t.visitJoinExpressionCrossOp?t.visitJoinExpressionCrossOp(this):t.visitChildren(this)}},jv=class extends Qv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}joinExpression(t){return void 0===t?this.getRuleContexts(Qv):this.getRuleContext(t,Qv)}JOIN(){return this.getToken(CG.JOIN,0)}joinConstraintClause(){return this.getRuleContext(0,aB)}joinOperator(){return this.getRuleContext(0,zv)}GLOBAL(){return this.getToken(CG.GLOBAL,0)}LOCAL(){return this.getToken(CG.LOCAL,0)}accept(t){return t.visitJoinExpressionOp?t.visitJoinExpressionOp(this):t.visitChildren(this)}},zv=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_joinOperator}copyFrom(t){super.copyFrom(t)}},$v=class extends zv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}FULL(){return this.getToken(CG.FULL,0)}OUTER(){return this.getToken(CG.OUTER,0)}ALL(){return this.getToken(CG.ALL,0)}ANY(){return this.getToken(CG.ANY,0)}accept(t){return t.visitJoinOpFull?t.visitJoinOpFull(this):t.visitChildren(this)}},tB=class extends zv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}INNER(){return this.getToken(CG.INNER,0)}ALL(){return this.getToken(CG.ALL,0)}ANY(){return this.getToken(CG.ANY,0)}ASOF(){return this.getToken(CG.ASOF,0)}accept(t){return t.visitJoinOpInner?t.visitJoinOpInner(this):t.visitChildren(this)}},eB=class extends zv{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LEFT(){return this.getToken(CG.LEFT,0)}RIGHT(){return this.getToken(CG.RIGHT,0)}OUTER(){return this.getToken(CG.OUTER,0)}SEMI(){return this.getToken(CG.SEMI,0)}ALL(){return this.getToken(CG.ALL,0)}ANTI(){return this.getToken(CG.ANTI,0)}ANY(){return this.getToken(CG.ANY,0)}ASOF(){return this.getToken(CG.ASOF,0)}accept(t){return t.visitJoinOpLeftRight?t.visitJoinOpLeftRight(this):t.visitChildren(this)}},sB=class extends ga{constructor(t,e){super(t,e)}CROSS(){return this.getToken(CG.CROSS,0)}JOIN(){return this.getToken(CG.JOIN,0)}GLOBAL(){return this.getToken(CG.GLOBAL,0)}LOCAL(){return this.getToken(CG.LOCAL,0)}COMMA(){return this.getToken(CG.COMMA,0)}get ruleIndex(){return CG.RULE_joinOperatorCross}accept(t){return t.visitJoinOperatorCross?t.visitJoinOperatorCross(this):t.visitChildren(this)}},aB=class extends ga{constructor(t,e){super(t,e)}ON(){return this.getToken(CG.ON,0)}columnExpressionList(){return this.getRuleContext(0,BB)}USING(){return this.getToken(CG.USING,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}RPAREN(){return this.getToken(CG.RPAREN,0)}get ruleIndex(){return CG.RULE_joinConstraintClause}accept(t){return t.visitJoinConstraintClause?t.visitJoinConstraintClause(this):t.visitChildren(this)}},rB=class extends ga{constructor(t,e){super(t,e)}SAMPLE(){return this.getToken(CG.SAMPLE,0)}ratioExpression(t){return void 0===t?this.getRuleContexts(hB):this.getRuleContext(t,hB)}OFFSET(){return this.getToken(CG.OFFSET,0)}get ruleIndex(){return CG.RULE_sampleClause}accept(t){return t.visitSampleClause?t.visitSampleClause(this):t.visitChildren(this)}},iB=class extends ga{constructor(t,e){super(t,e)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}COMMA(){return this.getToken(CG.COMMA,0)}OFFSET(){return this.getToken(CG.OFFSET,0)}get ruleIndex(){return CG.RULE_limitExpression}accept(t){return t.visitLimitExpression?t.visitLimitExpression(this):t.visitChildren(this)}},cB=class extends ga{constructor(t,e){super(t,e)}orderExpression(t){return void 0===t?this.getRuleContexts(nB):this.getRuleContext(t,nB)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_orderExpressionList}accept(t){return t.visitOrderExpressionList?t.visitOrderExpressionList(this):t.visitChildren(this)}},nB=class extends ga{constructor(t,e){super(t,e)}columnExpression(){return this.getRuleContext(0,bB)}NULLS(){return this.getToken(CG.NULLS,0)}COLLATE(){return this.getToken(CG.COLLATE,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}ASCENDING(){return this.getToken(CG.ASCENDING,0)}DESCENDING(){return this.getToken(CG.DESCENDING,0)}DESC(){return this.getToken(CG.DESC,0)}FIRST(){return this.getToken(CG.FIRST,0)}LAST(){return this.getToken(CG.LAST,0)}get ruleIndex(){return CG.RULE_orderExpression}accept(t){return t.visitOrderExpression?t.visitOrderExpression(this):t.visitChildren(this)}},hB=class extends ga{constructor(t,e){super(t,e)}numberLiteral(t){return void 0===t?this.getRuleContexts(Fy):this.getRuleContext(t,Fy)}SLASH(){return this.getToken(CG.SLASH,0)}get ruleIndex(){return CG.RULE_ratioExpression}accept(t){return t.visitRatioExpression?t.visitRatioExpression(this):t.visitChildren(this)}},EB=class extends ga{constructor(t,e){super(t,e)}settingExpression(t){return void 0===t?this.getRuleContexts(TB):this.getRuleContext(t,TB)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_settingExpressionList}accept(t){return t.visitSettingExpressionList?t.visitSettingExpressionList(this):t.visitChildren(this)}},TB=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,wy)}EQ_SINGLE(){return this.getToken(CG.EQ_SINGLE,0)}literal(){return this.getRuleContext(0,vy)}get ruleIndex(){return CG.RULE_settingExpression}accept(t){return t.visitSettingExpression?t.visitSettingExpression(this):t.visitChildren(this)}},oB=class extends ga{constructor(t,e){super(t,e)}windowPartitionByClause(){return this.getRuleContext(0,RB)}windowOrderByClause(){return this.getRuleContext(0,AB)}windowFrameClause(){return this.getRuleContext(0,SB)}get ruleIndex(){return CG.RULE_windowExpression}accept(t){return t.visitWindowExpression?t.visitWindowExpression(this):t.visitChildren(this)}},RB=class extends ga{constructor(t,e){super(t,e)}PARTITION(){return this.getToken(CG.PARTITION,0)}BY(){return this.getToken(CG.BY,0)}columnExpressionList(){return this.getRuleContext(0,BB)}get ruleIndex(){return CG.RULE_windowPartitionByClause}accept(t){return t.visitWindowPartitionByClause?t.visitWindowPartitionByClause(this):t.visitChildren(this)}},AB=class extends ga{constructor(t,e){super(t,e)}ORDER(){return this.getToken(CG.ORDER,0)}BY(){return this.getToken(CG.BY,0)}orderExpressionList(){return this.getRuleContext(0,cB)}get ruleIndex(){return CG.RULE_windowOrderByClause}accept(t){return t.visitWindowOrderByClause?t.visitWindowOrderByClause(this):t.visitChildren(this)}},SB=class extends ga{constructor(t,e){super(t,e)}windowFrameExtend(){return this.getRuleContext(0,lB)}ROWS(){return this.getToken(CG.ROWS,0)}RANGE(){return this.getToken(CG.RANGE,0)}get ruleIndex(){return CG.RULE_windowFrameClause}accept(t){return t.visitWindowFrameClause?t.visitWindowFrameClause(this):t.visitChildren(this)}},lB=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_windowFrameExtend}copyFrom(t){super.copyFrom(t)}},OB=class extends lB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}windowFrameBound(){return this.getRuleContext(0,uB)}accept(t){return t.visitFrameStart?t.visitFrameStart(this):t.visitChildren(this)}},IB=class extends lB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}BETWEEN(){return this.getToken(CG.BETWEEN,0)}windowFrameBound(t){return void 0===t?this.getRuleContexts(uB):this.getRuleContext(t,uB)}AND(){return this.getToken(CG.AND,0)}accept(t){return t.visitFrameBetween?t.visitFrameBetween(this):t.visitChildren(this)}},uB=class extends ga{constructor(t,e){super(t,e)}CURRENT(){return this.getToken(CG.CURRENT,0)}ROW(){return this.getToken(CG.ROW,0)}UNBOUNDED(){return this.getToken(CG.UNBOUNDED,0)}PRECEDING(){return this.getToken(CG.PRECEDING,0)}FOLLOWING(){return this.getToken(CG.FOLLOWING,0)}numberLiteral(){return this.getRuleContext(0,Fy)}get ruleIndex(){return CG.RULE_windowFrameBound}accept(t){return t.visitWindowFrameBound?t.visitWindowFrameBound(this):t.visitChildren(this)}},NB=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(CG.SET,0)}settingExpressionList(){return this.getRuleContext(0,EB)}get ruleIndex(){return CG.RULE_setStatement}accept(t){return t.visitSetStatement?t.visitSetStatement(this):t.visitChildren(this)}},LB=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_showStatement}copyFrom(t){super.copyFrom(t)}},CB=class extends LB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(CG.SHOW,0)}CREATE(){return this.getToken(CG.CREATE,0)}tableIdentifier(){return this.getRuleContext(0,gy)}TEMPORARY(){return this.getToken(CG.TEMPORARY,0)}TABLE(){return this.getToken(CG.TABLE,0)}accept(t){return t.visitShowCreateTableStatement?t.visitShowCreateTableStatement(this):t.visitChildren(this)}},_B=class extends LB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(CG.SHOW,0)}CREATE(){return this.getToken(CG.CREATE,0)}DICTIONARY(){return this.getToken(CG.DICTIONARY,0)}tableIdentifier(){return this.getRuleContext(0,gy)}accept(t){return t.visitShowCreateDictionaryStatement?t.visitShowCreateDictionaryStatement(this):t.visitChildren(this)}},PB=class extends LB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(CG.SHOW,0)}TABLES(){return this.getToken(CG.TABLES,0)}TEMPORARY(){return this.getToken(CG.TEMPORARY,0)}databaseIdentifier(){return this.getRuleContext(0,Hy)}LIKE(){return this.getToken(CG.LIKE,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}whereClause(){return this.getRuleContext(0,fv)}limitClause(){return this.getRuleContext(0,Xv)}FROM(){return this.getToken(CG.FROM,0)}IN(){return this.getToken(CG.IN,0)}accept(t){return t.visitShowTablesStatement?t.visitShowTablesStatement(this):t.visitChildren(this)}},MB=class extends LB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(CG.SHOW,0)}DICTIONARIES(){return this.getToken(CG.DICTIONARIES,0)}FROM(){return this.getToken(CG.FROM,0)}databaseIdentifier(){return this.getRuleContext(0,Hy)}accept(t){return t.visitShowDictionariesStatement?t.visitShowDictionariesStatement(this):t.visitChildren(this)}},dB=class extends LB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(CG.SHOW,0)}CREATE(){return this.getToken(CG.CREATE,0)}DATABASE(){return this.getToken(CG.DATABASE,0)}databaseIdentifier(){return this.getRuleContext(0,Hy)}accept(t){return t.visitShowCreateDatabaseStatement?t.visitShowCreateDatabaseStatement(this):t.visitChildren(this)}},UB=class extends LB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SHOW(){return this.getToken(CG.SHOW,0)}DATABASES(){return this.getToken(CG.DATABASES,0)}accept(t){return t.visitShowDatabasesStatement?t.visitShowDatabasesStatement(this):t.visitChildren(this)}},mB=class extends ga{constructor(t,e){super(t,e)}SYSTEM(){return this.getToken(CG.SYSTEM,0)}FLUSH(){return this.getToken(CG.FLUSH,0)}DISTRIBUTED(){return this.getToken(CG.DISTRIBUTED,0)}tableIdentifier(){return this.getRuleContext(0,gy)}LOGS(){return this.getToken(CG.LOGS,0)}RELOAD(){return this.getToken(CG.RELOAD,0)}DICTIONARIES(){return this.getToken(CG.DICTIONARIES,0)}DICTIONARY(){return this.getToken(CG.DICTIONARY,0)}START(){return this.getToken(CG.START,0)}STOP(){return this.getToken(CG.STOP,0)}SENDS(){return this.getToken(CG.SENDS,0)}FETCHES(){return this.getToken(CG.FETCHES,0)}MERGES(){return this.getToken(CG.MERGES,0)}TTL(){return this.getToken(CG.TTL,0)}REPLICATED(){return this.getToken(CG.REPLICATED,0)}SYNC(){return this.getToken(CG.SYNC,0)}REPLICA(){return this.getToken(CG.REPLICA,0)}get ruleIndex(){return CG.RULE_systemStatement}accept(t){return t.visitSystemStatement?t.visitSystemStatement(this):t.visitChildren(this)}},DB=class extends ga{constructor(t,e){super(t,e)}TRUNCATE(){return this.getToken(CG.TRUNCATE,0)}tableIdentifier(){return this.getRuleContext(0,gy)}TEMPORARY(){return this.getToken(CG.TEMPORARY,0)}TABLE(){return this.getToken(CG.TABLE,0)}IF(){return this.getToken(CG.IF,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}clusterClause(){return this.getRuleContext(0,xF)}get ruleIndex(){return CG.RULE_truncateStatement}accept(t){return t.visitTruncateStatement?t.visitTruncateStatement(this):t.visitChildren(this)}},pB=class extends ga{constructor(t,e){super(t,e)}USE(){return this.getToken(CG.USE,0)}databaseIdentifier(){return this.getRuleContext(0,Hy)}get ruleIndex(){return CG.RULE_useStatement}accept(t){return t.visitUseStatement?t.visitUseStatement(this):t.visitChildren(this)}},gB=class extends ga{constructor(t,e){super(t,e)}WATCH(){return this.getToken(CG.WATCH,0)}tableIdentifier(){return this.getRuleContext(0,gy)}EVENTS(){return this.getToken(CG.EVENTS,0)}LIMIT(){return this.getToken(CG.LIMIT,0)}DECIMAL_LITERAL(){return this.getToken(CG.DECIMAL_LITERAL,0)}get ruleIndex(){return CG.RULE_watchStatement}accept(t){return t.visitWatchStatement?t.visitWatchStatement(this):t.visitChildren(this)}},xB=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_columnTypeExpression}copyFrom(t){super.copyFrom(t)}},kB=class extends xB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}identifier(){return this.getRuleContext(0,wy)}LPAREN(){return this.getToken(CG.LPAREN,0)}columnTypeExpression(t){return void 0===t?this.getRuleContexts(xB):this.getRuleContext(t,xB)}RPAREN(){return this.getToken(CG.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}accept(t){return t.visitColumnTypeExpressionComplex?t.visitColumnTypeExpressionComplex(this):t.visitChildren(this)}},HB=class extends xB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}identifier(){return this.getRuleContext(0,wy)}LPAREN(){return this.getToken(CG.LPAREN,0)}enumValue(t){return void 0===t?this.getRuleContexts(Wy):this.getRuleContext(t,Wy)}RPAREN(){return this.getToken(CG.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}accept(t){return t.visitColumnTypeExpressionEnum?t.visitColumnTypeExpressionEnum(this):t.visitChildren(this)}},GB=class extends xB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}identifier(t){return void 0===t?this.getRuleContexts(wy):this.getRuleContext(t,wy)}LPAREN(){return this.getToken(CG.LPAREN,0)}columnTypeExpression(t){return void 0===t?this.getRuleContexts(xB):this.getRuleContext(t,xB)}RPAREN(){return this.getToken(CG.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}accept(t){return t.visitColumnTypeExpressionNested?t.visitColumnTypeExpressionNested(this):t.visitChildren(this)}},FB=class extends xB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}identifier(){return this.getRuleContext(0,wy)}LPAREN(){return this.getToken(CG.LPAREN,0)}RPAREN(){return this.getToken(CG.RPAREN,0)}columnExpressionList(){return this.getRuleContext(0,BB)}accept(t){return t.visitColumnTypeExpressionParam?t.visitColumnTypeExpressionParam(this):t.visitChildren(this)}},vB=class extends xB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}identifier(){return this.getRuleContext(0,wy)}accept(t){return t.visitColumnTypeExpressionSimple?t.visitColumnTypeExpressionSimple(this):t.visitChildren(this)}},BB=class extends ga{constructor(t,e){super(t,e)}columnsExpression(t){return void 0===t?this.getRuleContexts(yB):this.getRuleContext(t,yB)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_columnExpressionList}accept(t){return t.visitColumnExpressionList?t.visitColumnExpressionList(this):t.visitChildren(this)}},yB=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_columnsExpression}copyFrom(t){super.copyFrom(t)}},fB=class extends yB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ASTERISK(){return this.getToken(CG.ASTERISK,0)}tableIdentifier(){return this.getRuleContext(0,gy)}DOT(){return this.getToken(CG.DOT,0)}accept(t){return t.visitColumnsExpressionAsterisk?t.visitColumnsExpressionAsterisk(this):t.visitChildren(this)}},YB=class extends yB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LPAREN(){return this.getToken(CG.LPAREN,0)}selectUnionStatement(){return this.getRuleContext(0,gv)}RPAREN(){return this.getToken(CG.RPAREN,0)}accept(t){return t.visitColumnsExpressionSubquery?t.visitColumnsExpressionSubquery(this):t.visitChildren(this)}},wB=class extends yB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(){return this.getRuleContext(0,bB)}accept(t){return t.visitColumnsExpressionColumn?t.visitColumnsExpressionColumn(this):t.visitChildren(this)}},bB=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_columnExpression}copyFrom(t){super.copyFrom(t)}},WB=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(){return this.getRuleContext(0,bB)}IS(){return this.getToken(CG.IS,0)}NULL_SQL(){return this.getToken(CG.NULL_SQL,0)}NOT(){return this.getToken(CG.NOT,0)}accept(t){return t.visitColumnExpressionIsNull?t.visitColumnExpressionIsNull(this):t.visitChildren(this)}},VB=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LPAREN(){return this.getToken(CG.LPAREN,0)}columnExpressionList(){return this.getRuleContext(0,BB)}RPAREN(){return this.getToken(CG.RPAREN,0)}accept(t){return t.visitColumnExpressionTuple?t.visitColumnExpressionTuple(this):t.visitChildren(this)}},XB=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}AND(){return this.getToken(CG.AND,0)}accept(t){return t.visitColumnExpressionAnd?t.visitColumnExpressionAnd(this):t.visitChildren(this)}},KB=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DATE(){return this.getToken(CG.DATE,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}accept(t){return t.visitColumnExpressionDate?t.visitColumnExpressionDate(this):t.visitChildren(this)}},QB=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}BETWEEN(){return this.getToken(CG.BETWEEN,0)}AND(){return this.getToken(CG.AND,0)}NOT(){return this.getToken(CG.NOT,0)}accept(t){return t.visitColumnExpressionBetween?t.visitColumnExpressionBetween(this):t.visitChildren(this)}},JB=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}TRIM(){return this.getToken(CG.TRIM,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}FROM(){return this.getToken(CG.FROM,0)}columnExpression(){return this.getRuleContext(0,bB)}RPAREN(){return this.getToken(CG.RPAREN,0)}BOTH(){return this.getToken(CG.BOTH,0)}LEADING(){return this.getToken(CG.LEADING,0)}TRAILING(){return this.getToken(CG.TRAILING,0)}accept(t){return t.visitColumnExpressionTrim?t.visitColumnExpressionTrim(this):t.visitChildren(this)}},ZB=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}NOT(){return this.getToken(CG.NOT,0)}columnExpression(){return this.getRuleContext(0,bB)}accept(t){return t.visitColumnExpressionNot?t.visitColumnExpressionNot(this):t.visitChildren(this)}},qB=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}SUBSTRING(){return this.getToken(CG.SUBSTRING,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}FROM(){return this.getToken(CG.FROM,0)}RPAREN(){return this.getToken(CG.RPAREN,0)}FOR(){return this.getToken(CG.FOR,0)}accept(t){return t.visitColumnExpressionSubstring?t.visitColumnExpressionSubstring(this):t.visitChildren(this)}},jB=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CASE(){return this.getToken(CG.CASE,0)}END(){return this.getToken(CG.END,0)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}WHEN(t){return void 0===t?this.getTokens(CG.WHEN):this.getToken(CG.WHEN,t)}THEN(t){return void 0===t?this.getTokens(CG.THEN):this.getToken(CG.THEN,t)}ELSE(){return this.getToken(CG.ELSE,0)}accept(t){return t.visitColumnExpressionCase?t.visitColumnExpressionCase(this):t.visitChildren(this)}},zB=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnIdentifier(){return this.getRuleContext(0,Py)}accept(t){return t.visitColumnExpressionIdentifier?t.visitColumnExpressionIdentifier(this):t.visitChildren(this)}},$B=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}LBRACKET(){return this.getToken(CG.LBRACKET,0)}RBRACKET(){return this.getToken(CG.RBRACKET,0)}accept(t){return t.visitColumnExpressionArrayAccess?t.visitColumnExpressionArrayAccess(this):t.visitChildren(this)}},ty=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}identifier(){return this.getRuleContext(0,wy)}LPAREN(t){return void 0===t?this.getTokens(CG.LPAREN):this.getToken(CG.LPAREN,t)}RPAREN(t){return void 0===t?this.getTokens(CG.RPAREN):this.getToken(CG.RPAREN,t)}DISTINCT(){return this.getToken(CG.DISTINCT,0)}columnArgumentList(){return this.getRuleContext(0,Ly)}columnExpressionList(){return this.getRuleContext(0,BB)}accept(t){return t.visitColumnExpressionFunction?t.visitColumnExpressionFunction(this):t.visitChildren(this)}},ey=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}ASTERISK(){return this.getToken(CG.ASTERISK,0)}tableIdentifier(){return this.getRuleContext(0,gy)}DOT(){return this.getToken(CG.DOT,0)}accept(t){return t.visitColumnExpressionAsterisk?t.visitColumnExpressionAsterisk(this):t.visitChildren(this)}},sy=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}literal(){return this.getRuleContext(0,vy)}accept(t){return t.visitColumnExpressionLiteral?t.visitColumnExpressionLiteral(this):t.visitChildren(this)}},ay=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}identifier(){return this.getRuleContext(0,wy)}OVER(){return this.getToken(CG.OVER,0)}LPAREN(t){return void 0===t?this.getTokens(CG.LPAREN):this.getToken(CG.LPAREN,t)}windowExpression(){return this.getRuleContext(0,oB)}RPAREN(t){return void 0===t?this.getTokens(CG.RPAREN):this.getToken(CG.RPAREN,t)}columnExpressionList(){return this.getRuleContext(0,BB)}accept(t){return t.visitColumnExpressionWinFunction?t.visitColumnExpressionWinFunction(this):t.visitChildren(this)}},ry=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}QUESTIONMARK(){return this.getToken(CG.QUESTIONMARK,0)}COLON(){return this.getToken(CG.COLON,0)}accept(t){return t.visitColumnExpressionTernaryOp?t.visitColumnExpressionTernaryOp(this):t.visitChildren(this)}},iy=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LBRACKET(){return this.getToken(CG.LBRACKET,0)}RBRACKET(){return this.getToken(CG.RBRACKET,0)}columnExpressionList(){return this.getRuleContext(0,BB)}accept(t){return t.visitColumnExpressionArray?t.visitColumnExpressionArray(this):t.visitChildren(this)}},cy=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(){return this.getRuleContext(0,bB)}DOT(){return this.getToken(CG.DOT,0)}DECIMAL_LITERAL(){return this.getToken(CG.DECIMAL_LITERAL,0)}accept(t){return t.visitColumnExpressionTupleAccess?t.visitColumnExpressionTupleAccess(this):t.visitChildren(this)}},ny=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LPAREN(){return this.getToken(CG.LPAREN,0)}columnExpression(){return this.getRuleContext(0,bB)}RPAREN(){return this.getToken(CG.RPAREN,0)}accept(t){return t.visitColumnExpressionParens?t.visitColumnExpressionParens(this):t.visitChildren(this)}},hy=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}identifier(t){return void 0===t?this.getRuleContexts(wy):this.getRuleContext(t,wy)}OVER(){return this.getToken(CG.OVER,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}RPAREN(){return this.getToken(CG.RPAREN,0)}columnExpressionList(){return this.getRuleContext(0,BB)}accept(t){return t.visitColumnExpressionWinFunctionTarget?t.visitColumnExpressionWinFunctionTarget(this):t.visitChildren(this)}},Ey=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(){return this.getRuleContext(0,bB)}alias(){return this.getRuleContext(0,Yy)}AS(){return this.getToken(CG.AS,0)}identifier(){return this.getRuleContext(0,wy)}accept(t){return t.visitColumnExpressionAlias?t.visitColumnExpressionAlias(this):t.visitChildren(this)}},Ty=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}EQ_DOUBLE(){return this.getToken(CG.EQ_DOUBLE,0)}EQ_SINGLE(){return this.getToken(CG.EQ_SINGLE,0)}NOT_EQ(){return this.getToken(CG.NOT_EQ,0)}LE(){return this.getToken(CG.LE,0)}GE(){return this.getToken(CG.GE,0)}LT(){return this.getToken(CG.LT,0)}GT(){return this.getToken(CG.GT,0)}IN(){return this.getToken(CG.IN,0)}LIKE(){return this.getToken(CG.LIKE,0)}ILIKE(){return this.getToken(CG.ILIKE,0)}GLOBAL(){return this.getToken(CG.GLOBAL,0)}NOT(){return this.getToken(CG.NOT,0)}accept(t){return t.visitColumnExpressionPrecedence3?t.visitColumnExpressionPrecedence3(this):t.visitChildren(this)}},oy=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}TIMESTAMP(){return this.getToken(CG.TIMESTAMP,0)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}accept(t){return t.visitColumnExpressionTimestamp?t.visitColumnExpressionTimestamp(this):t.visitChildren(this)}},Ry=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}PLUS(){return this.getToken(CG.PLUS,0)}DASH(){return this.getToken(CG.DASH,0)}CONCAT(){return this.getToken(CG.CONCAT,0)}accept(t){return t.visitColumnExpressionPrecedence2?t.visitColumnExpressionPrecedence2(this):t.visitChildren(this)}},Ay=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}ASTERISK(){return this.getToken(CG.ASTERISK,0)}SLASH(){return this.getToken(CG.SLASH,0)}PERCENT(){return this.getToken(CG.PERCENT,0)}accept(t){return t.visitColumnExpressionPrecedence1?t.visitColumnExpressionPrecedence1(this):t.visitChildren(this)}},Sy=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}INTERVAL(){return this.getToken(CG.INTERVAL,0)}columnExpression(){return this.getRuleContext(0,bB)}interval(){return this.getRuleContext(0,By)}accept(t){return t.visitColumnExpressionInterval?t.visitColumnExpressionInterval(this):t.visitChildren(this)}},ly=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LPAREN(){return this.getToken(CG.LPAREN,0)}selectUnionStatement(){return this.getRuleContext(0,gv)}RPAREN(){return this.getToken(CG.RPAREN,0)}accept(t){return t.visitColumnExpressionSubquery?t.visitColumnExpressionSubquery(this):t.visitChildren(this)}},Oy=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}DASH(){return this.getToken(CG.DASH,0)}columnExpression(){return this.getRuleContext(0,bB)}accept(t){return t.visitColumnExpressionNegate?t.visitColumnExpressionNegate(this):t.visitChildren(this)}},Iy=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}EXTRACT(){return this.getToken(CG.EXTRACT,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}interval(){return this.getRuleContext(0,By)}FROM(){return this.getToken(CG.FROM,0)}columnExpression(){return this.getRuleContext(0,bB)}RPAREN(){return this.getToken(CG.RPAREN,0)}accept(t){return t.visitColumnExpressionExtract?t.visitColumnExpressionExtract(this):t.visitChildren(this)}},uy=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}CAST(){return this.getToken(CG.CAST,0)}LPAREN(){return this.getToken(CG.LPAREN,0)}columnExpression(){return this.getRuleContext(0,bB)}AS(){return this.getToken(CG.AS,0)}columnTypeExpression(){return this.getRuleContext(0,xB)}RPAREN(){return this.getToken(CG.RPAREN,0)}accept(t){return t.visitColumnExpressionCast?t.visitColumnExpressionCast(this):t.visitChildren(this)}},Ny=class extends bB{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}columnExpression(t){return void 0===t?this.getRuleContexts(bB):this.getRuleContext(t,bB)}OR(){return this.getToken(CG.OR,0)}accept(t){return t.visitColumnExpressionOr?t.visitColumnExpressionOr(this):t.visitChildren(this)}},Ly=class extends ga{constructor(t,e){super(t,e)}columnArgumentExpression(t){return void 0===t?this.getRuleContexts(Cy):this.getRuleContext(t,Cy)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_columnArgumentList}accept(t){return t.visitColumnArgumentList?t.visitColumnArgumentList(this):t.visitChildren(this)}},Cy=class extends ga{constructor(t,e){super(t,e)}columnLambdaExpression(){return this.getRuleContext(0,_y)}columnExpression(){return this.getRuleContext(0,bB)}get ruleIndex(){return CG.RULE_columnArgumentExpression}accept(t){return t.visitColumnArgumentExpression?t.visitColumnArgumentExpression(this):t.visitChildren(this)}},_y=class extends ga{constructor(t,e){super(t,e)}ARROW(){return this.getToken(CG.ARROW,0)}columnExpression(){return this.getRuleContext(0,bB)}LPAREN(){return this.getToken(CG.LPAREN,0)}identifier(t){return void 0===t?this.getRuleContexts(wy):this.getRuleContext(t,wy)}RPAREN(){return this.getToken(CG.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_columnLambdaExpression}accept(t){return t.visitColumnLambdaExpression?t.visitColumnLambdaExpression(this):t.visitChildren(this)}},Py=class extends ga{constructor(t,e){super(t,e)}identifier(t){return void 0===t?this.getRuleContexts(wy):this.getRuleContext(t,wy)}tableIdentifier(){return this.getRuleContext(0,gy)}DOT(t){return void 0===t?this.getTokens(CG.DOT):this.getToken(CG.DOT,t)}get ruleIndex(){return CG.RULE_columnIdentifier}accept(t){return t.visitColumnIdentifier?t.visitColumnIdentifier(this):t.visitChildren(this)}},My=class extends ga{constructor(t,e){super(t,e)}get ruleIndex(){return CG.RULE_tableExpression}copyFrom(t){super.copyFrom(t)}},dy=class extends My{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}tableFunctionExpression(){return this.getRuleContext(0,py)}accept(t){return t.visitTableExpressionFunction?t.visitTableExpressionFunction(this):t.visitChildren(this)}},Uy=class extends My{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}tableIdentifier(){return this.getRuleContext(0,gy)}accept(t){return t.visitTableExpressionIdentifier?t.visitTableExpressionIdentifier(this):t.visitChildren(this)}},my=class extends My{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}tableExpression(){return this.getRuleContext(0,My)}alias(){return this.getRuleContext(0,Yy)}AS(){return this.getToken(CG.AS,0)}identifier(){return this.getRuleContext(0,wy)}accept(t){return t.visitTableExpressionAlias?t.visitTableExpressionAlias(this):t.visitChildren(this)}},Dy=class extends My{constructor(t){super(t.parent,t.invokingState),super.copyFrom(t)}LPAREN(){return this.getToken(CG.LPAREN,0)}selectUnionStatement(){return this.getRuleContext(0,gv)}RPAREN(){return this.getToken(CG.RPAREN,0)}accept(t){return t.visitTableExpressionSubquery?t.visitTableExpressionSubquery(this):t.visitChildren(this)}},py=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,wy)}LPAREN(){return this.getToken(CG.LPAREN,0)}RPAREN(){return this.getToken(CG.RPAREN,0)}tableArgList(){return this.getRuleContext(0,xy)}get ruleIndex(){return CG.RULE_tableFunctionExpression}accept(t){return t.visitTableFunctionExpression?t.visitTableFunctionExpression(this):t.visitChildren(this)}},gy=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,wy)}databaseIdentifier(){return this.getRuleContext(0,Hy)}DOT(){return this.getToken(CG.DOT,0)}get ruleIndex(){return CG.RULE_tableIdentifier}accept(t){return t.visitTableIdentifier?t.visitTableIdentifier(this):t.visitChildren(this)}},xy=class extends ga{constructor(t,e){super(t,e)}tableArgExpression(t){return void 0===t?this.getRuleContexts(ky):this.getRuleContext(t,ky)}COMMA(t){return void 0===t?this.getTokens(CG.COMMA):this.getToken(CG.COMMA,t)}get ruleIndex(){return CG.RULE_tableArgList}accept(t){return t.visitTableArgList?t.visitTableArgList(this):t.visitChildren(this)}},ky=class extends ga{constructor(t,e){super(t,e)}columnIdentifier(){return this.getRuleContext(0,Py)}tableFunctionExpression(){return this.getRuleContext(0,py)}literal(){return this.getRuleContext(0,vy)}get ruleIndex(){return CG.RULE_tableArgExpression}accept(t){return t.visitTableArgExpression?t.visitTableArgExpression(this):t.visitChildren(this)}},Hy=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,wy)}get ruleIndex(){return CG.RULE_databaseIdentifier}accept(t){return t.visitDatabaseIdentifier?t.visitDatabaseIdentifier(this):t.visitChildren(this)}},Gy=class extends ga{constructor(t,e){super(t,e)}FLOATING_LITERAL(){return this.getToken(CG.FLOATING_LITERAL,0)}DOT(){return this.getToken(CG.DOT,0)}DECIMAL_LITERAL(t){return void 0===t?this.getTokens(CG.DECIMAL_LITERAL):this.getToken(CG.DECIMAL_LITERAL,t)}OCTAL_LITERAL(){return this.getToken(CG.OCTAL_LITERAL,0)}get ruleIndex(){return CG.RULE_floatingLiteral}accept(t){return t.visitFloatingLiteral?t.visitFloatingLiteral(this):t.visitChildren(this)}},Fy=class extends ga{constructor(t,e){super(t,e)}floatingLiteral(){return this.getRuleContext(0,Gy)}OCTAL_LITERAL(){return this.getToken(CG.OCTAL_LITERAL,0)}DECIMAL_LITERAL(){return this.getToken(CG.DECIMAL_LITERAL,0)}HEXADECIMAL_LITERAL(){return this.getToken(CG.HEXADECIMAL_LITERAL,0)}INF(){return this.getToken(CG.INF,0)}NAN_SQL(){return this.getToken(CG.NAN_SQL,0)}PLUS(){return this.getToken(CG.PLUS,0)}DASH(){return this.getToken(CG.DASH,0)}get ruleIndex(){return CG.RULE_numberLiteral}accept(t){return t.visitNumberLiteral?t.visitNumberLiteral(this):t.visitChildren(this)}},vy=class extends ga{constructor(t,e){super(t,e)}numberLiteral(){return this.getRuleContext(0,Fy)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}NULL_SQL(){return this.getToken(CG.NULL_SQL,0)}get ruleIndex(){return CG.RULE_literal}accept(t){return t.visitLiteral?t.visitLiteral(this):t.visitChildren(this)}},By=class extends ga{constructor(t,e){super(t,e)}SECOND(){return this.getToken(CG.SECOND,0)}MINUTE(){return this.getToken(CG.MINUTE,0)}HOUR(){return this.getToken(CG.HOUR,0)}DAY(){return this.getToken(CG.DAY,0)}WEEK(){return this.getToken(CG.WEEK,0)}MONTH(){return this.getToken(CG.MONTH,0)}QUARTER(){return this.getToken(CG.QUARTER,0)}YEAR(){return this.getToken(CG.YEAR,0)}get ruleIndex(){return CG.RULE_interval}accept(t){return t.visitInterval?t.visitInterval(this):t.visitChildren(this)}},yy=class extends ga{constructor(t,e){super(t,e)}AFTER(){return this.getToken(CG.AFTER,0)}ALIAS(){return this.getToken(CG.ALIAS,0)}ALL(){return this.getToken(CG.ALL,0)}ALTER(){return this.getToken(CG.ALTER,0)}AND(){return this.getToken(CG.AND,0)}ANTI(){return this.getToken(CG.ANTI,0)}ANY(){return this.getToken(CG.ANY,0)}ARRAY(){return this.getToken(CG.ARRAY,0)}AS(){return this.getToken(CG.AS,0)}ASCENDING(){return this.getToken(CG.ASCENDING,0)}ASOF(){return this.getToken(CG.ASOF,0)}AST(){return this.getToken(CG.AST,0)}ASYNC(){return this.getToken(CG.ASYNC,0)}ATTACH(){return this.getToken(CG.ATTACH,0)}BETWEEN(){return this.getToken(CG.BETWEEN,0)}BOTH(){return this.getToken(CG.BOTH,0)}BY(){return this.getToken(CG.BY,0)}CASE(){return this.getToken(CG.CASE,0)}CAST(){return this.getToken(CG.CAST,0)}CHECK(){return this.getToken(CG.CHECK,0)}CLEAR(){return this.getToken(CG.CLEAR,0)}CLUSTER(){return this.getToken(CG.CLUSTER,0)}CODEC(){return this.getToken(CG.CODEC,0)}COLLATE(){return this.getToken(CG.COLLATE,0)}COLUMN(){return this.getToken(CG.COLUMN,0)}COMMENT(){return this.getToken(CG.COMMENT,0)}CONSTRAINT(){return this.getToken(CG.CONSTRAINT,0)}CREATE(){return this.getToken(CG.CREATE,0)}CROSS(){return this.getToken(CG.CROSS,0)}CUBE(){return this.getToken(CG.CUBE,0)}CURRENT(){return this.getToken(CG.CURRENT,0)}DATABASE(){return this.getToken(CG.DATABASE,0)}DATABASES(){return this.getToken(CG.DATABASES,0)}DATE(){return this.getToken(CG.DATE,0)}DEDUPLICATE(){return this.getToken(CG.DEDUPLICATE,0)}DEFAULT(){return this.getToken(CG.DEFAULT,0)}DELAY(){return this.getToken(CG.DELAY,0)}DELETE(){return this.getToken(CG.DELETE,0)}DESCRIBE(){return this.getToken(CG.DESCRIBE,0)}DESC(){return this.getToken(CG.DESC,0)}DESCENDING(){return this.getToken(CG.DESCENDING,0)}DETACH(){return this.getToken(CG.DETACH,0)}DICTIONARIES(){return this.getToken(CG.DICTIONARIES,0)}DICTIONARY(){return this.getToken(CG.DICTIONARY,0)}DISK(){return this.getToken(CG.DISK,0)}DISTINCT(){return this.getToken(CG.DISTINCT,0)}DISTRIBUTED(){return this.getToken(CG.DISTRIBUTED,0)}DROP(){return this.getToken(CG.DROP,0)}ELSE(){return this.getToken(CG.ELSE,0)}END(){return this.getToken(CG.END,0)}ENGINE(){return this.getToken(CG.ENGINE,0)}EVENTS(){return this.getToken(CG.EVENTS,0)}EXISTS(){return this.getToken(CG.EXISTS,0)}EXPLAIN(){return this.getToken(CG.EXPLAIN,0)}EXPRESSION(){return this.getToken(CG.EXPRESSION,0)}EXTRACT(){return this.getToken(CG.EXTRACT,0)}FETCHES(){return this.getToken(CG.FETCHES,0)}FINAL(){return this.getToken(CG.FINAL,0)}FIRST(){return this.getToken(CG.FIRST,0)}FLUSH(){return this.getToken(CG.FLUSH,0)}FOR(){return this.getToken(CG.FOR,0)}FOLLOWING(){return this.getToken(CG.FOLLOWING,0)}FORMAT(){return this.getToken(CG.FORMAT,0)}FREEZE(){return this.getToken(CG.FREEZE,0)}FROM(){return this.getToken(CG.FROM,0)}FULL(){return this.getToken(CG.FULL,0)}FUNCTION(){return this.getToken(CG.FUNCTION,0)}GLOBAL(){return this.getToken(CG.GLOBAL,0)}GRANULARITY(){return this.getToken(CG.GRANULARITY,0)}GROUP(){return this.getToken(CG.GROUP,0)}HAVING(){return this.getToken(CG.HAVING,0)}HIERARCHICAL(){return this.getToken(CG.HIERARCHICAL,0)}ID(){return this.getToken(CG.ID,0)}IF(){return this.getToken(CG.IF,0)}ILIKE(){return this.getToken(CG.ILIKE,0)}IN(){return this.getToken(CG.IN,0)}INDEX(){return this.getToken(CG.INDEX,0)}INJECTIVE(){return this.getToken(CG.INJECTIVE,0)}INNER(){return this.getToken(CG.INNER,0)}INSERT(){return this.getToken(CG.INSERT,0)}INTERVAL(){return this.getToken(CG.INTERVAL,0)}INTO(){return this.getToken(CG.INTO,0)}IS(){return this.getToken(CG.IS,0)}IS_OBJECT_ID(){return this.getToken(CG.IS_OBJECT_ID,0)}JOIN(){return this.getToken(CG.JOIN,0)}JSON_FALSE(){return this.getToken(CG.JSON_FALSE,0)}JSON_TRUE(){return this.getToken(CG.JSON_TRUE,0)}KEY(){return this.getToken(CG.KEY,0)}KILL(){return this.getToken(CG.KILL,0)}LAST(){return this.getToken(CG.LAST,0)}LAYOUT(){return this.getToken(CG.LAYOUT,0)}LEADING(){return this.getToken(CG.LEADING,0)}LEFT(){return this.getToken(CG.LEFT,0)}LIFETIME(){return this.getToken(CG.LIFETIME,0)}LIKE(){return this.getToken(CG.LIKE,0)}LIMIT(){return this.getToken(CG.LIMIT,0)}LIVE(){return this.getToken(CG.LIVE,0)}LOCAL(){return this.getToken(CG.LOCAL,0)}LOGS(){return this.getToken(CG.LOGS,0)}MATERIALIZE(){return this.getToken(CG.MATERIALIZE,0)}MATERIALIZED(){return this.getToken(CG.MATERIALIZED,0)}MAX(){return this.getToken(CG.MAX,0)}MERGES(){return this.getToken(CG.MERGES,0)}MIN(){return this.getToken(CG.MIN,0)}MODIFY(){return this.getToken(CG.MODIFY,0)}MOVE(){return this.getToken(CG.MOVE,0)}MUTATION(){return this.getToken(CG.MUTATION,0)}NO(){return this.getToken(CG.NO,0)}NOT(){return this.getToken(CG.NOT,0)}NULLS(){return this.getToken(CG.NULLS,0)}OFFSET(){return this.getToken(CG.OFFSET,0)}ON(){return this.getToken(CG.ON,0)}OPTIMIZE(){return this.getToken(CG.OPTIMIZE,0)}OR(){return this.getToken(CG.OR,0)}ORDER(){return this.getToken(CG.ORDER,0)}OUTER(){return this.getToken(CG.OUTER,0)}OUTFILE(){return this.getToken(CG.OUTFILE,0)}OVER(){return this.getToken(CG.OVER,0)}PARTITION(){return this.getToken(CG.PARTITION,0)}POPULATE(){return this.getToken(CG.POPULATE,0)}PRECEDING(){return this.getToken(CG.PRECEDING,0)}PREWHERE(){return this.getToken(CG.PREWHERE,0)}PRIMARY(){return this.getToken(CG.PRIMARY,0)}RANGE(){return this.getToken(CG.RANGE,0)}RELOAD(){return this.getToken(CG.RELOAD,0)}REMOVE(){return this.getToken(CG.REMOVE,0)}RENAME(){return this.getToken(CG.RENAME,0)}REPLACE(){return this.getToken(CG.REPLACE,0)}REPLICA(){return this.getToken(CG.REPLICA,0)}REPLICATED(){return this.getToken(CG.REPLICATED,0)}RIGHT(){return this.getToken(CG.RIGHT,0)}ROLLUP(){return this.getToken(CG.ROLLUP,0)}ROW(){return this.getToken(CG.ROW,0)}ROWS(){return this.getToken(CG.ROWS,0)}SAMPLE(){return this.getToken(CG.SAMPLE,0)}SELECT(){return this.getToken(CG.SELECT,0)}SEMI(){return this.getToken(CG.SEMI,0)}SENDS(){return this.getToken(CG.SENDS,0)}SET(){return this.getToken(CG.SET,0)}SETTINGS(){return this.getToken(CG.SETTINGS,0)}SHOW(){return this.getToken(CG.SHOW,0)}SOURCE(){return this.getToken(CG.SOURCE,0)}START(){return this.getToken(CG.START,0)}STOP(){return this.getToken(CG.STOP,0)}SUBSTRING(){return this.getToken(CG.SUBSTRING,0)}SYNC(){return this.getToken(CG.SYNC,0)}SYNTAX(){return this.getToken(CG.SYNTAX,0)}SYSTEM(){return this.getToken(CG.SYSTEM,0)}TABLE(){return this.getToken(CG.TABLE,0)}TABLES(){return this.getToken(CG.TABLES,0)}TEMPORARY(){return this.getToken(CG.TEMPORARY,0)}TEST(){return this.getToken(CG.TEST,0)}THEN(){return this.getToken(CG.THEN,0)}TIES(){return this.getToken(CG.TIES,0)}TIMEOUT(){return this.getToken(CG.TIMEOUT,0)}TIMESTAMP(){return this.getToken(CG.TIMESTAMP,0)}TOTALS(){return this.getToken(CG.TOTALS,0)}TRAILING(){return this.getToken(CG.TRAILING,0)}TRIM(){return this.getToken(CG.TRIM,0)}TRUNCATE(){return this.getToken(CG.TRUNCATE,0)}TO(){return this.getToken(CG.TO,0)}TOP(){return this.getToken(CG.TOP,0)}TTL(){return this.getToken(CG.TTL,0)}TYPE(){return this.getToken(CG.TYPE,0)}UNBOUNDED(){return this.getToken(CG.UNBOUNDED,0)}UNION(){return this.getToken(CG.UNION,0)}UPDATE(){return this.getToken(CG.UPDATE,0)}USE(){return this.getToken(CG.USE,0)}USING(){return this.getToken(CG.USING,0)}UUID(){return this.getToken(CG.UUID,0)}VALUES(){return this.getToken(CG.VALUES,0)}VIEW(){return this.getToken(CG.VIEW,0)}VOLUME(){return this.getToken(CG.VOLUME,0)}WATCH(){return this.getToken(CG.WATCH,0)}WHEN(){return this.getToken(CG.WHEN,0)}WHERE(){return this.getToken(CG.WHERE,0)}WINDOW(){return this.getToken(CG.WINDOW,0)}WITH(){return this.getToken(CG.WITH,0)}get ruleIndex(){return CG.RULE_keyword}accept(t){return t.visitKeyword?t.visitKeyword(this):t.visitChildren(this)}},fy=class extends ga{constructor(t,e){super(t,e)}DATE(){return this.getToken(CG.DATE,0)}FIRST(){return this.getToken(CG.FIRST,0)}ID(){return this.getToken(CG.ID,0)}KEY(){return this.getToken(CG.KEY,0)}get ruleIndex(){return CG.RULE_keywordForAlias}accept(t){return t.visitKeywordForAlias?t.visitKeywordForAlias(this):t.visitChildren(this)}},Yy=class extends ga{constructor(t,e){super(t,e)}IDENTIFIER(){return this.getToken(CG.IDENTIFIER,0)}keywordForAlias(){return this.getRuleContext(0,fy)}get ruleIndex(){return CG.RULE_alias}accept(t){return t.visitAlias?t.visitAlias(this):t.visitChildren(this)}},wy=class extends ga{constructor(t,e){super(t,e)}IDENTIFIER(){return this.getToken(CG.IDENTIFIER,0)}interval(){return this.getRuleContext(0,By)}keyword(){return this.getRuleContext(0,yy)}get ruleIndex(){return CG.RULE_identifier}accept(t){return t.visitIdentifier?t.visitIdentifier(this):t.visitChildren(this)}},by=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,wy)}NULL_SQL(){return this.getToken(CG.NULL_SQL,0)}get ruleIndex(){return CG.RULE_identifierOrNull}accept(t){return t.visitIdentifierOrNull?t.visitIdentifierOrNull(this):t.visitChildren(this)}},Wy=class extends ga{constructor(t,e){super(t,e)}STRING_LITERAL(){return this.getToken(CG.STRING_LITERAL,0)}EQ_SINGLE(){return this.getToken(CG.EQ_SINGLE,0)}numberLiteral(){return this.getRuleContext(0,Fy)}get ruleIndex(){return CG.RULE_enumValue}accept(t){return t.visitEnumValue?t.visitEnumValue(this):t.visitChildren(this)}},Vy=class extends Ii{},Xy=["Null","Set","Log","Memory","TinyLog","StripeLog"],Ky=["MergeTree()","Merge()","ReplacingMergeTree()","CollapsingMergeTree()","AggregatingMergeTree()","Buffer()","Dictionary()","Distributed()","File()","GraphiteMergeTree()","Join()","Kafka()","MySQL()","URL()","ReplicatedAggregatingMergeTree()","ReplicatedCollapsingMergeTree()","ReplicatedGraphiteMergeTree()","ReplicatedMergeTree()","ReplicatedReplacingMergeTree()","ReplicatedSummingMergeTree()","ReplicatedVersionedCollapsingMergeTree()","SummingMergeTree()","VersionedCollapsingMergeTree()","PostgreSQL()"],Qy={SPACE:CG.WHITESPACE,FROM:CG.FROM,OPENING_BRACKET:CG.LPAREN,CLOSING_BRACKET:CG.RPAREN,ALTER:CG.ALTER,INSERT:CG.INSERT,UPDATE:CG.UPDATE,JOIN:CG.JOIN,SEMICOLON:CG.SEMICOLON,SELECT:CG.SELECT};var Jy=new Set(function(){let t=[],e=CG.JSON_FALSE,s=CG.WHITESPACE;for(let a=e;a<=s;a++)a!==CG.ASTERISK&&t.push(a);return t.push(CG.EOF),t.push(CG.QUESTIONMARK),t}()),Zy=new Set([CG.RULE_databaseIdentifier,CG.RULE_tableIdentifier,CG.RULE_identifier,CG.RULE_columnIdentifier,CG.RULE_identifierOrNull,CG.RULE_literal]),qy=class extends Vy{constructor(){super(),this.visitTableIdentifier=t=>{try{this.symbolTable.addNewSymbolOfType(qc,this.scope,t.getText())}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitTableExpressionAlias=t=>{try{var e,s,a;this.symbolTable.addNewSymbolOfType(qc,this.scope,null===(e=t.tableExpression())||void 0===e?void 0:e.getText(),(null===(s=t.alias())||void 0===s?void 0:s.getText())||(null===(a=t.identifier())||void 0===a?void 0:a.getText())||void 0)}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitColumnExpressionAlias=t=>{try{var e,s;let a=(null===(e=t.alias())||void 0===e?void 0:e.getText())||(null===(s=t.identifier())||void 0===s?void 0:s.getText());a&&this.symbolTable.addNewSymbolOfType(zc,this.scope,a)}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.symbolTable=new Zc("",{allowDuplicateSymbols:!0}),this.scope=this.symbolTable.addNewSymbolOfType(Bc,void 0)}};function jy(t,e){if(!e||"update"===e)return t.root();switch(e){case"from":return t.fromClause();case"alter":return t.alterStatement();case"insert":return t.insertStatement();case"select":return t.selectStatement()}}var zy={Lexer:LG,Parser:CG,tokenDictionary:Qy,ignoredTokens:Jy,rulesToVisit:Zy,getParseTree:jy,enrichAutocompleteResult:function(t,e,s,a,r,i){let{shouldSuggestColumns:c,shouldSuggestColumnAliases:n,...h}=function(t,e,s){let a,r,i=!1,c=!1,n=!1,h=!1,E=!1;for(let[T,o]of t)if(uC(e,o))switch(T){case CG.RULE_tableIdentifier:if(o.ruleList.includes(CG.RULE_createStatement)||o.ruleList.includes(CG.RULE_columnsExpression))break;a=UC(s,Qy,e,CG.VIEW)?"VIEWS":UC(s,Qy,e,CG.TABLE)?"TABLES":"ALL";break;case CG.RULE_identifier:o.ruleList.includes(CG.RULE_columnExpression)&&(c=!0,i=!0),o.ruleList.includes(CG.RULE_alterTableClause)&&(h=!0);break;case CG.RULE_columnIdentifier:h=!0,(o.ruleList.includes(CG.RULE_orderExpression)||o.ruleList.includes(CG.RULE_groupByClause))&&(E=!0);break;case CG.RULE_identifierOrNull:o.ruleList.includes(CG.RULE_engineClause)&&(r={engines:Xy,functionalEngines:Ky});break;case CG.RULE_databaseIdentifier:n=!0}return{suggestViewsOrTables:a,suggestAggregateFunctions:i,suggestFunctions:c,suggestEngines:r,suggestDatabases:n,shouldSuggestColumns:h,shouldSuggestColumnAliases:E}}(e,a,s),E={...t,...h,suggestTemplates:_C(i,r)};if(c||n){let t=new qy,{tableContextSuggestion:e,suggestColumnAliases:a}=mC(LG,CG,t,Qy,jy,s,r,i);c&&e&&(E.suggestColumns=e),n&&a&&(E.suggestColumnAliases=a)}return E}},$y=(qi=class t extends $r{constructor(e){super(e),this.interpreter=new hi(this,t._ATN,t.decisionsToDFA,new Si)}get grammarFileName(){return"YQL.g4"}get literalNames(){return t.literalNames}get symbolicNames(){return t.symbolicNames}get ruleNames(){return t.ruleNames}get serializedATN(){return t._serializedATN}get channelNames(){return t.channelNames}get modeNames(){return t.modeNames}static get _ATN(){return t.__ATN||(t.__ATN=(new fr).deserialize(t._serializedATN)),t.__ATN}get vocabulary(){return t.vocabulary}},qi.QUERY=1,qi.EQUALS=2,qi.EQUALS2=3,qi.NOT_EQUALS=4,qi.NOT_EQUALS2=5,qi.LESS=6,qi.LESS_OR_EQ=7,qi.GREATER=8,qi.GREATER_OR_EQ=9,qi.SHIFT_LEFT=10,qi.ROT_LEFT=11,qi.AMPERSAND=12,qi.PIPE=13,qi.DOUBLE_PIPE=14,qi.STRUCT_OPEN=15,qi.STRUCT_CLOSE=16,qi.PLUS=17,qi.MINUS=18,qi.TILDA=19,qi.ASTERISK=20,qi.SLASH=21,qi.BACKSLASH=22,qi.PERCENT=23,qi.SEMICOLON=24,qi.DOT=25,qi.COMMA=26,qi.LPAREN=27,qi.RPAREN=28,qi.QUESTION=29,qi.COLON=30,qi.AT=31,qi.DOUBLE_AT=32,qi.DOLLAR=33,qi.QUOTE_DOUBLE=34,qi.QUOTE_SINGLE=35,qi.BACKTICK=36,qi.LBRACE_CURLY=37,qi.RBRACE_CURLY=38,qi.CARET=39,qi.NAMESPACE=40,qi.ARROW=41,qi.RBRACE_SQUARE=42,qi.LBRACE_SQUARE=43,qi.ABORT=44,qi.ACTION=45,qi.ADD=46,qi.AFTER=47,qi.ALL=48,qi.ALTER=49,qi.ANALYZE=50,qi.AND=51,qi.ANSI=52,qi.ANY=53,qi.ARRAY=54,qi.AS=55,qi.ASC=56,qi.ASSUME=57,qi.ASYMMETRIC=58,qi.ASYNC=59,qi.ATTACH=60,qi.ATTRIBUTES=61,qi.AUTOINCREMENT=62,qi.AUTOMAP=63,qi.BEFORE=64,qi.BEGIN=65,qi.BERNOULLI=66,qi.BETWEEN=67,qi.BITCAST=68,qi.BY=69,qi.CALLABLE=70,qi.CASCADE=71,qi.CASE=72,qi.CAST=73,qi.CHANGEFEED=74,qi.CHECK=75,qi.COLLATE=76,qi.COLUMN=77,qi.COLUMNS=78,qi.COMMIT=79,qi.COMPACT=80,qi.CONDITIONAL=81,qi.CONFLICT=82,qi.CONNECT=83,qi.CONSTRAINT=84,qi.CONSUMER=85,qi.COVER=86,qi.CREATE=87,qi.CROSS=88,qi.CUBE=89,qi.CURRENT=90,qi.CURRENT_DATE=91,qi.CURRENT_TIME=92,qi.CURRENT_TIMESTAMP=93,qi.DATA=94,qi.DATABASE=95,qi.DECIMAL=96,qi.DECLARE=97,qi.DEFAULT=98,qi.DEFERRABLE=99,qi.DEFERRED=100,qi.DEFINE=101,qi.DELETE=102,qi.DESC=103,qi.DESCRIBE=104,qi.DETACH=105,qi.DICT=106,qi.DIRECTORY=107,qi.DISABLE=108,qi.DISCARD=109,qi.DISTINCT=110,qi.DO=111,qi.DROP=112,qi.EACH=113,qi.ELSE=114,qi.EMPTY=115,qi.EMPTY_ACTION=116,qi.ENCRYPTED=117,qi.END=118,qi.ENUM=119,qi.ERASE=120,qi.ERROR=121,qi.ESCAPE=122,qi.EVALUATE=123,qi.EXCEPT=124,qi.EXCLUDE=125,qi.EXCLUSION=126,qi.EXCLUSIVE=127,qi.EXISTS=128,qi.EXPLAIN=129,qi.EXPORT=130,qi.EXTERNAL=131,qi.FAIL=132,qi.FALSE=133,qi.FAMILY=134,qi.FILTER=135,qi.FIRST=136,qi.FLATTEN=137,qi.FLOW=138,qi.FOLLOWING=139,qi.FOR=140,qi.FOREIGN=141,qi.FROM=142,qi.FULL=143,qi.FUNCTION=144,qi.GLOB=145,qi.GLOBAL=146,qi.GRANT=147,qi.GROUP=148,qi.GROUPING=149,qi.GROUPS=150,qi.HASH=151,qi.HAVING=152,qi.HOP=153,qi.IF=154,qi.IGNORE=155,qi.ILIKE=156,qi.IMMEDIATE=157,qi.IMPORT=158,qi.IN=159,qi.INDEX=160,qi.INDEXED=161,qi.INHERITS=162,qi.INITIAL=163,qi.INITIALLY=164,qi.INNER=165,qi.INSERT=166,qi.INSTEAD=167,qi.INTERSECT=168,qi.INTO=169,qi.IS=170,qi.ISNULL=171,qi.JOIN=172,qi.JSON_EXISTS=173,qi.JSON_QUERY=174,qi.JSON_VALUE=175,qi.KEY=176,qi.LAST=177,qi.LEFT=178,qi.LEGACY=179,qi.LIKE=180,qi.LIMIT=181,qi.LIST=182,qi.LOCAL=183,qi.MANAGE=184,qi.MATCH=185,qi.MATCHES=186,qi.MATCH_RECOGNIZE=187,qi.MEASURES=188,qi.MICROSECONDS=189,qi.MILLISECONDS=190,qi.MODIFY=191,qi.NANOSECONDS=192,qi.NATURAL=193,qi.NEXT=194,qi.NO=195,qi.NOT=196,qi.NOTNULL=197,qi.NULL=198,qi.NULLS=199,qi.OBJECT=200,qi.OF=201,qi.OFFSET=202,qi.OMIT=203,qi.ON=204,qi.ONE=205,qi.ONLY=206,qi.OPTION=207,qi.OPTIONAL=208,qi.OR=209,qi.ORDER=210,qi.OTHERS=211,qi.OUTER=212,qi.OVER=213,qi.PARALLEL=214,qi.PARTITION=215,qi.PASSING=216,qi.PASSWORD=217,qi.PAST=218,qi.PATTERN=219,qi.PER=220,qi.PERMUTE=221,qi.PLAN=222,qi.PRAGMA=223,qi.PRECEDING=224,qi.PRESORT=225,qi.PRIMARY=226,qi.PRIVILEGES=227,qi.PROCESS=228,qi.QUEUE=229,qi.RAISE=230,qi.RANGE=231,qi.REDUCE=232,qi.REFERENCES=233,qi.REGEXP=234,qi.REINDEX=235,qi.RELEASE=236,qi.REMOVE=237,qi.RENAME=238,qi.REPEATABLE=239,qi.REPLACE=240,qi.REPLICATION=241,qi.RESET=242,qi.RESOURCE=243,qi.RESPECT=244,qi.RESTRICT=245,qi.RESULT=246,qi.RETURN=247,qi.RETURNING=248,qi.REVERT=249,qi.REVOKE=250,qi.RIGHT=251,qi.RLIKE=252,qi.ROLLBACK=253,qi.ROLLUP=254,qi.ROW=255,qi.ROWS=256,qi.SAMPLE=257,qi.SAVEPOINT=258,qi.SCHEMA=259,qi.SECONDS=260,qi.SEEK=261,qi.SELECT=262,qi.SEMI=263,qi.SET=264,qi.SETS=265,qi.SHOW=266,qi.SKIP_RULE=267,qi.SOURCE=268,qi.STREAM=269,qi.STRUCT=270,qi.SUBQUERY=271,qi.SUBSET=272,qi.SYMBOLS=273,qi.SYMMETRIC=274,qi.SYNC=275,qi.SYSTEM=276,qi.TABLE=277,qi.TABLES=278,qi.TABLESAMPLE=279,qi.TABLESTORE=280,qi.TAGGED=281,qi.TEMP=282,qi.TEMPORARY=283,qi.THEN=284,qi.TIES=285,qi.TO=286,qi.TOPIC=287,qi.TRANSACTION=288,qi.TRIGGER=289,qi.TRUE=290,qi.TUPLE=291,qi.TYPE=292,qi.UNBOUNDED=293,qi.UNCONDITIONAL=294,qi.UNION=295,qi.UNIQUE=296,qi.UNKNOWN=297,qi.UNMATCHED=298,qi.UPDATE=299,qi.UPSERT=300,qi.USE=301,qi.USER=302,qi.USING=303,qi.VACUUM=304,qi.VALUES=305,qi.VARIANT=306,qi.VIEW=307,qi.VIRTUAL=308,qi.WHEN=309,qi.WHERE=310,qi.WINDOW=311,qi.WITH=312,qi.WITHOUT=313,qi.WRAPPER=314,qi.XOR=315,qi.STRING_VALUE=316,qi.ID_PLAIN=317,qi.ID_QUOTED=318,qi.DIGITS=319,qi.INTEGER_VALUE=320,qi.REAL=321,qi.BLOB=322,qi.WS=323,qi.COMMENT=324,qi.channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"],qi.literalNames=[null,null,"'='","'=='","'!='","'<>'","'<'","'<='","'>'","'>='","'<<'","'|<<'","'&'","'|'","'||'","'<|'","'|>'","'+'","'-'","'~'","'*'","'/'","''","'%'","';'","'.'","','","'('","')'","'?'","':'","'@'","'@@'","'$'","'\"'","'''","'`'","'{'","'}'","'^'","'::'","'->'","']'","'['"],qi.symbolicNames=[null,"QUERY","EQUALS","EQUALS2","NOT_EQUALS","NOT_EQUALS2","LESS","LESS_OR_EQ","GREATER","GREATER_OR_EQ","SHIFT_LEFT","ROT_LEFT","AMPERSAND","PIPE","DOUBLE_PIPE","STRUCT_OPEN","STRUCT_CLOSE","PLUS","MINUS","TILDA","ASTERISK","SLASH","BACKSLASH","PERCENT","SEMICOLON","DOT","COMMA","LPAREN","RPAREN","QUESTION","COLON","AT","DOUBLE_AT","DOLLAR","QUOTE_DOUBLE","QUOTE_SINGLE","BACKTICK","LBRACE_CURLY","RBRACE_CURLY","CARET","NAMESPACE","ARROW","RBRACE_SQUARE","LBRACE_SQUARE","ABORT","ACTION","ADD","AFTER","ALL","ALTER","ANALYZE","AND","ANSI","ANY","ARRAY","AS","ASC","ASSUME","ASYMMETRIC","ASYNC","ATTACH","ATTRIBUTES","AUTOINCREMENT","AUTOMAP","BEFORE","BEGIN","BERNOULLI","BETWEEN","BITCAST","BY","CALLABLE","CASCADE","CASE","CAST","CHANGEFEED","CHECK","COLLATE","COLUMN","COLUMNS","COMMIT","COMPACT","CONDITIONAL","CONFLICT","CONNECT","CONSTRAINT","CONSUMER","COVER","CREATE","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATA","DATABASE","DECIMAL","DECLARE","DEFAULT","DEFERRABLE","DEFERRED","DEFINE","DELETE","DESC","DESCRIBE","DETACH","DICT","DIRECTORY","DISABLE","DISCARD","DISTINCT","DO","DROP","EACH","ELSE","EMPTY","EMPTY_ACTION","ENCRYPTED","END","ENUM","ERASE","ERROR","ESCAPE","EVALUATE","EXCEPT","EXCLUDE","EXCLUSION","EXCLUSIVE","EXISTS","EXPLAIN","EXPORT","EXTERNAL","FAIL","FALSE","FAMILY","FILTER","FIRST","FLATTEN","FLOW","FOLLOWING","FOR","FOREIGN","FROM","FULL","FUNCTION","GLOB","GLOBAL","GRANT","GROUP","GROUPING","GROUPS","HASH","HAVING","HOP","IF","IGNORE","ILIKE","IMMEDIATE","IMPORT","IN","INDEX","INDEXED","INHERITS","INITIAL","INITIALLY","INNER","INSERT","INSTEAD","INTERSECT","INTO","IS","ISNULL","JOIN","JSON_EXISTS","JSON_QUERY","JSON_VALUE","KEY","LAST","LEFT","LEGACY","LIKE","LIMIT","LIST","LOCAL","MANAGE","MATCH","MATCHES","MATCH_RECOGNIZE","MEASURES","MICROSECONDS","MILLISECONDS","MODIFY","NANOSECONDS","NATURAL","NEXT","NO","NOT","NOTNULL","NULL","NULLS","OBJECT","OF","OFFSET","OMIT","ON","ONE","ONLY","OPTION","OPTIONAL","OR","ORDER","OTHERS","OUTER","OVER","PARALLEL","PARTITION","PASSING","PASSWORD","PAST","PATTERN","PER","PERMUTE","PLAN","PRAGMA","PRECEDING","PRESORT","PRIMARY","PRIVILEGES","PROCESS","QUEUE","RAISE","RANGE","REDUCE","REFERENCES","REGEXP","REINDEX","RELEASE","REMOVE","RENAME","REPEATABLE","REPLACE","REPLICATION","RESET","RESOURCE","RESPECT","RESTRICT","RESULT","RETURN","RETURNING","REVERT","REVOKE","RIGHT","RLIKE","ROLLBACK","ROLLUP","ROW","ROWS","SAMPLE","SAVEPOINT","SCHEMA","SECONDS","SEEK","SELECT","SEMI","SET","SETS","SHOW","SKIP_RULE","SOURCE","STREAM","STRUCT","SUBQUERY","SUBSET","SYMBOLS","SYMMETRIC","SYNC","SYSTEM","TABLE","TABLES","TABLESAMPLE","TABLESTORE","TAGGED","TEMP","TEMPORARY","THEN","TIES","TO","TOPIC","TRANSACTION","TRIGGER","TRUE","TUPLE","TYPE","UNBOUNDED","UNCONDITIONAL","UNION","UNIQUE","UNKNOWN","UNMATCHED","UPDATE","UPSERT","USE","USER","USING","VACUUM","VALUES","VARIANT","VIEW","VIRTUAL","WHEN","WHERE","WINDOW","WITH","WITHOUT","WRAPPER","XOR","STRING_VALUE","ID_PLAIN","ID_QUOTED","DIGITS","INTEGER_VALUE","REAL","BLOB","WS","COMMENT"],qi.modeNames=["DEFAULT_MODE"],qi.ruleNames=["QUERY","EQUALS","EQUALS2","NOT_EQUALS","NOT_EQUALS2","LESS","LESS_OR_EQ","GREATER","GREATER_OR_EQ","SHIFT_LEFT","ROT_LEFT","AMPERSAND","PIPE","DOUBLE_PIPE","STRUCT_OPEN","STRUCT_CLOSE","PLUS","MINUS","TILDA","ASTERISK","SLASH","BACKSLASH","PERCENT","SEMICOLON","DOT","COMMA","LPAREN","RPAREN","QUESTION","COLON","AT","DOUBLE_AT","DOLLAR","QUOTE_DOUBLE","QUOTE_SINGLE","BACKTICK","LBRACE_CURLY","RBRACE_CURLY","CARET","NAMESPACE","ARROW","RBRACE_SQUARE","LBRACE_SQUARE","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ABORT","ACTION","ADD","AFTER","ALL","ALTER","ANALYZE","AND","ANSI","ANY","ARRAY","AS","ASC","ASSUME","ASYMMETRIC","ASYNC","ATTACH","ATTRIBUTES","AUTOINCREMENT","AUTOMAP","BEFORE","BEGIN","BERNOULLI","BETWEEN","BITCAST","BY","CALLABLE","CASCADE","CASE","CAST","CHANGEFEED","CHECK","COLLATE","COLUMN","COLUMNS","COMMIT","COMPACT","CONDITIONAL","CONFLICT","CONNECT","CONSTRAINT","CONSUMER","COVER","CREATE","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATA","DATABASE","DECIMAL","DECLARE","DEFAULT","DEFERRABLE","DEFERRED","DEFINE","DELETE","DESC","DESCRIBE","DETACH","DICT","DIRECTORY","DISABLE","DISCARD","DISTINCT","DO","DROP","EACH","ELSE","EMPTY","EMPTY_ACTION","ENCRYPTED","END","ENUM","ERASE","ERROR","ESCAPE","EVALUATE","EXCEPT","EXCLUDE","EXCLUSION","EXCLUSIVE","EXISTS","EXPLAIN","EXPORT","EXTERNAL","FAIL","FALSE","FAMILY","FILTER","FIRST","FLATTEN","FLOW","FOLLOWING","FOR","FOREIGN","FROM","FULL","FUNCTION","GLOB","GLOBAL","GRANT","GROUP","GROUPING","GROUPS","HASH","HAVING","HOP","IF","IGNORE","ILIKE","IMMEDIATE","IMPORT","IN","INDEX","INDEXED","INHERITS","INITIAL","INITIALLY","INNER","INSERT","INSTEAD","INTERSECT","INTO","IS","ISNULL","JOIN","JSON_EXISTS","JSON_QUERY","JSON_VALUE","KEY","LAST","LEFT","LEGACY","LIKE","LIMIT","LIST","LOCAL","MANAGE","MATCH","MATCHES","MATCH_RECOGNIZE","MEASURES","MICROSECONDS","MILLISECONDS","MODIFY","NANOSECONDS","NATURAL","NEXT","NO","NOT","NOTNULL","NULL","NULLS","OBJECT","OF","OFFSET","OMIT","ON","ONE","ONLY","OPTION","OPTIONAL","OR","ORDER","OTHERS","OUTER","OVER","PARALLEL","PARTITION","PASSING","PASSWORD","PAST","PATTERN","PER","PERMUTE","PLAN","PRAGMA","PRECEDING","PRESORT","PRIMARY","PRIVILEGES","PROCESS","QUEUE","RAISE","RANGE","REDUCE","REFERENCES","REGEXP","REINDEX","RELEASE","REMOVE","RENAME","REPEATABLE","REPLACE","REPLICATION","RESET","RESOURCE","RESPECT","RESTRICT","RESULT","RETURN","RETURNING","REVERT","REVOKE","RIGHT","RLIKE","ROLLBACK","ROLLUP","ROW","ROWS","SAMPLE","SAVEPOINT","SCHEMA","SECONDS","SEEK","SELECT","SEMI","SET","SETS","SHOW","SKIP_RULE","SOURCE","STREAM","STRUCT","SUBQUERY","SUBSET","SYMBOLS","SYMMETRIC","SYNC","SYSTEM","TABLE","TABLES","TABLESAMPLE","TABLESTORE","TAGGED","TEMP","TEMPORARY","THEN","TIES","TO","TOPIC","TRANSACTION","TRIGGER","TRUE","TUPLE","TYPE","UNBOUNDED","UNCONDITIONAL","UNION","UNIQUE","UNKNOWN","UNMATCHED","UPDATE","UPSERT","USE","USER","USING","VACUUM","VALUES","VARIANT","VIEW","VIRTUAL","WHEN","WHERE","WINDOW","WITH","WITHOUT","WRAPPER","XOR","STRING_CORE_SINGLE","STRING_CORE_DOUBLE","STRING_SINGLE","STRING_DOUBLE","STRING_MULTILINE","STRING_VALUE","ID_PLAIN","ID_QUOTED_CORE","ID_QUOTED","DIGIT","HEXDIGIT","HEXDIGITS","OCTDIGITS","BINDIGITS","DECDIGITS","DIGITS","INTEGER_VALUE","FLOAT_EXP","REAL","BLOB","MULTILINE_COMMENT","LINE_COMMENT","WS","COMMENT"],qi._serializedATN=[4,0,324,3058,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350,2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356,7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361,2,362,7,362,2,363,7,363,2,364,7,364,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,2,1,2,1,2,1,3,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,8,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,11,1,11,1,12,1,12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,24,1,24,1,25,1,25,1,26,1,26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,31,1,32,1,32,1,33,1,33,1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,1,39,1,40,1,40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,45,1,45,1,46,1,46,1,47,1,47,1,48,1,48,1,49,1,49,1,50,1,50,1,51,1,51,1,52,1,52,1,53,1,53,1,54,1,54,1,55,1,55,1,56,1,56,1,57,1,57,1,58,1,58,1,59,1,59,1,60,1,60,1,61,1,61,1,62,1,62,1,63,1,63,1,64,1,64,1,65,1,65,1,66,1,66,1,67,1,67,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,190,1,190,1,190,1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,197,1,197,1,197,1,197,1,197,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,201,1,201,1,201,1,201,1,202,1,202,1,202,1,202,1,202,1,203,1,203,1,203,1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,205,1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,210,1,210,1,210,1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,219,1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,221,1,221,1,221,1,221,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,1,223,1,224,1,224,1,224,1,224,1,224,1,224,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,228,1,228,1,228,1,228,1,228,1,229,1,229,1,229,1,230,1,230,1,230,1,230,1,231,1,231,1,231,1,231,1,231,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,234,1,234,1,234,1,235,1,235,1,235,1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,236,1,236,1,237,1,237,1,237,1,237,1,237,1,237,1,238,1,238,1,238,1,238,1,238,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,243,1,243,1,243,1,243,1,243,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,245,1,245,1,245,1,245,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,247,1,247,1,247,1,247,1,247,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,254,1,254,1,254,1,254,1,254,1,254,1,255,1,255,1,255,1,255,1,255,1,255,1,256,1,256,1,256,1,256,1,256,1,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,267,1,267,1,267,1,267,1,267,1,267,1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,276,1,276,1,276,1,276,1,276,1,276,1,277,1,277,1,277,1,277,1,277,1,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,280,1,280,1,280,1,280,1,281,1,281,1,281,1,281,1,281,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286,1,287,1,287,1,287,1,287,1,287,1,287,1,287,1,288,1,288,1,288,1,288,1,288,1,289,1,289,1,289,1,289,1,290,1,290,1,290,1,290,1,290,1,291,1,291,1,291,1,291,1,291,1,292,1,292,1,292,1,292,1,292,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295,1,295,1,296,1,296,1,296,1,296,1,296,1,296,1,296,1,296,1,296,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,298,1,298,1,298,1,298,1,298,1,298,1,298,1,298,1,299,1,299,1,299,1,299,1,299,1,299,1,299,1,299,1,299,1,299,1,300,1,300,1,300,1,300,1,300,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,302,1,302,1,302,1,302,1,302,1,302,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,307,1,307,1,307,1,307,1,307,1,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308,1,309,1,309,1,309,1,309,1,309,1,310,1,310,1,310,1,310,1,310,1,311,1,311,1,311,1,312,1,312,1,312,1,312,1,312,1,312,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,315,1,315,1,315,1,315,1,315,1,316,1,316,1,316,1,316,1,316,1,316,1,317,1,317,1,317,1,317,1,317,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,319,1,320,1,320,1,320,1,320,1,320,1,320,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,326,1,326,1,326,1,326,1,327,1,327,1,327,1,327,1,327,1,328,1,328,1,328,1,328,1,328,1,328,1,329,1,329,1,329,1,329,1,329,1,329,1,329,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,332,1,332,1,332,1,332,1,332,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,333,1,334,1,334,1,334,1,334,1,334,1,335,1,335,1,335,1,335,1,335,1,335,1,336,1,336,1,336,1,336,1,336,1,336,1,336,1,337,1,337,1,337,1,337,1,337,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,340,1,340,1,340,1,340,1,341,1,341,1,341,1,341,3,341,2847,8,341,1,342,1,342,1,342,1,342,3,342,2853,8,342,1,343,1,343,5,343,2857,8,343,10,343,12,343,2860,9,343,1,343,1,343,1,344,1,344,5,344,2866,8,344,10,344,12,344,2869,9,344,1,344,1,344,1,345,1,345,5,345,2875,8,345,10,345,12,345,2878,9,345,1,345,1,345,4,345,2882,8,345,11,345,12,345,2883,1,345,3,345,2887,8,345,1,346,1,346,1,346,3,346,2892,8,346,1,346,1,346,1,346,1,346,1,346,1,346,1,346,1,346,3,346,2902,8,346,3,346,2904,8,346,1,347,1,347,1,347,5,347,2909,8,347,10,347,12,347,2912,9,347,1,348,1,348,1,348,1,348,1,348,3,348,2919,8,348,1,349,1,349,5,349,2923,8,349,10,349,12,349,2926,9,349,1,349,1,349,1,350,1,350,1,351,1,351,1,352,1,352,1,352,4,352,2937,8,352,11,352,12,352,2938,1,353,1,353,1,353,4,353,2944,8,353,11,353,12,353,2945,1,354,1,354,1,354,4,354,2951,8,354,11,354,12,354,2952,1,355,4,355,2956,8,355,11,355,12,355,2957,1,356,1,356,1,356,1,356,3,356,2964,8,356,1,357,1,357,1,357,3,357,2969,8,357,1,357,1,357,1,357,1,357,1,357,1,357,3,357,2977,8,357,1,358,1,358,1,358,3,358,2982,8,358,1,358,1,358,1,359,1,359,1,359,5,359,2989,8,359,10,359,12,359,2992,9,359,1,359,3,359,2995,8,359,1,359,1,359,1,359,3,359,3e3,8,359,1,359,1,359,1,359,1,359,1,359,1,359,3,359,3008,8,359,3,359,3010,8,359,1,360,1,360,1,360,4,360,3015,8,360,11,360,12,360,3016,1,360,1,360,1,361,1,361,1,361,1,361,5,361,3025,8,361,10,361,12,361,3028,9,361,1,361,1,361,1,361,1,362,1,362,1,362,1,362,5,362,3037,8,362,10,362,12,362,3040,9,362,1,362,1,362,3,362,3044,8,362,1,362,3,362,3047,8,362,1,363,1,363,1,363,1,363,1,364,1,364,3,364,3055,8,364,1,364,1,364,2,2876,3026,0,365,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,0,89,0,91,0,93,0,95,0,97,0,99,0,101,0,103,0,105,0,107,0,109,0,111,0,113,0,115,0,117,0,119,0,121,0,123,0,125,0,127,0,129,0,131,0,133,0,135,0,137,0,139,44,141,45,143,46,145,47,147,48,149,49,151,50,153,51,155,52,157,53,159,54,161,55,163,56,165,57,167,58,169,59,171,60,173,61,175,62,177,63,179,64,181,65,183,66,185,67,187,68,189,69,191,70,193,71,195,72,197,73,199,74,201,75,203,76,205,77,207,78,209,79,211,80,213,81,215,82,217,83,219,84,221,85,223,86,225,87,227,88,229,89,231,90,233,91,235,92,237,93,239,94,241,95,243,96,245,97,247,98,249,99,251,100,253,101,255,102,257,103,259,104,261,105,263,106,265,107,267,108,269,109,271,110,273,111,275,112,277,113,279,114,281,115,283,116,285,117,287,118,289,119,291,120,293,121,295,122,297,123,299,124,301,125,303,126,305,127,307,128,309,129,311,130,313,131,315,132,317,133,319,134,321,135,323,136,325,137,327,138,329,139,331,140,333,141,335,142,337,143,339,144,341,145,343,146,345,147,347,148,349,149,351,150,353,151,355,152,357,153,359,154,361,155,363,156,365,157,367,158,369,159,371,160,373,161,375,162,377,163,379,164,381,165,383,166,385,167,387,168,389,169,391,170,393,171,395,172,397,173,399,174,401,175,403,176,405,177,407,178,409,179,411,180,413,181,415,182,417,183,419,184,421,185,423,186,425,187,427,188,429,189,431,190,433,191,435,192,437,193,439,194,441,195,443,196,445,197,447,198,449,199,451,200,453,201,455,202,457,203,459,204,461,205,463,206,465,207,467,208,469,209,471,210,473,211,475,212,477,213,479,214,481,215,483,216,485,217,487,218,489,219,491,220,493,221,495,222,497,223,499,224,501,225,503,226,505,227,507,228,509,229,511,230,513,231,515,232,517,233,519,234,521,235,523,236,525,237,527,238,529,239,531,240,533,241,535,242,537,243,539,244,541,245,543,246,545,247,547,248,549,249,551,250,553,251,555,252,557,253,559,254,561,255,563,256,565,257,567,258,569,259,571,260,573,261,575,262,577,263,579,264,581,265,583,266,585,267,587,268,589,269,591,270,593,271,595,272,597,273,599,274,601,275,603,276,605,277,607,278,609,279,611,280,613,281,615,282,617,283,619,284,621,285,623,286,625,287,627,288,629,289,631,290,633,291,635,292,637,293,639,294,641,295,643,296,645,297,647,298,649,299,651,300,653,301,655,302,657,303,659,304,661,305,663,306,665,307,667,308,669,309,671,310,673,311,675,312,677,313,679,314,681,315,683,0,685,0,687,0,689,0,691,0,693,316,695,317,697,0,699,318,701,0,703,0,705,0,707,0,709,0,711,0,713,319,715,320,717,0,719,321,721,322,723,0,725,0,727,323,729,324,1,0,35,2,0,65,65,97,97,2,0,66,66,98,98,2,0,67,67,99,99,2,0,68,68,100,100,2,0,69,69,101,101,2,0,70,70,102,102,2,0,71,71,103,103,2,0,72,72,104,104,2,0,73,73,105,105,2,0,74,74,106,106,2,0,75,75,107,107,2,0,76,76,108,108,2,0,77,77,109,109,2,0,78,78,110,110,2,0,79,79,111,111,2,0,80,80,112,112,2,0,81,81,113,113,2,0,82,82,114,114,2,0,83,83,115,115,2,0,84,84,116,116,2,0,85,85,117,117,2,0,86,86,118,118,2,0,87,87,119,119,2,0,88,88,120,120,2,0,89,89,121,121,2,0,90,90,122,122,2,0,39,39,92,92,2,0,34,34,92,92,3,0,65,90,95,95,97,122,1,0,96,96,3,0,48,57,65,70,97,102,2,0,52,52,56,56,2,0,10,10,13,13,1,1,10,10,3,0,9,10,12,13,32,32,3068,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0,455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0,501,1,0,0,0,0,503,1,0,0,0,0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0,0,0,0,511,1,0,0,0,0,513,1,0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519,1,0,0,0,0,521,1,0,0,0,0,523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0,0,529,1,0,0,0,0,531,1,0,0,0,0,533,1,0,0,0,0,535,1,0,0,0,0,537,1,0,0,0,0,539,1,0,0,0,0,541,1,0,0,0,0,543,1,0,0,0,0,545,1,0,0,0,0,547,1,0,0,0,0,549,1,0,0,0,0,551,1,0,0,0,0,553,1,0,0,0,0,555,1,0,0,0,0,557,1,0,0,0,0,559,1,0,0,0,0,561,1,0,0,0,0,563,1,0,0,0,0,565,1,0,0,0,0,567,1,0,0,0,0,569,1,0,0,0,0,571,1,0,0,0,0,573,1,0,0,0,0,575,1,0,0,0,0,577,1,0,0,0,0,579,1,0,0,0,0,581,1,0,0,0,0,583,1,0,0,0,0,585,1,0,0,0,0,587,1,0,0,0,0,589,1,0,0,0,0,591,1,0,0,0,0,593,1,0,0,0,0,595,1,0,0,0,0,597,1,0,0,0,0,599,1,0,0,0,0,601,1,0,0,0,0,603,1,0,0,0,0,605,1,0,0,0,0,607,1,0,0,0,0,609,1,0,0,0,0,611,1,0,0,0,0,613,1,0,0,0,0,615,1,0,0,0,0,617,1,0,0,0,0,619,1,0,0,0,0,621,1,0,0,0,0,623,1,0,0,0,0,625,1,0,0,0,0,627,1,0,0,0,0,629,1,0,0,0,0,631,1,0,0,0,0,633,1,0,0,0,0,635,1,0,0,0,0,637,1,0,0,0,0,639,1,0,0,0,0,641,1,0,0,0,0,643,1,0,0,0,0,645,1,0,0,0,0,647,1,0,0,0,0,649,1,0,0,0,0,651,1,0,0,0,0,653,1,0,0,0,0,655,1,0,0,0,0,657,1,0,0,0,0,659,1,0,0,0,0,661,1,0,0,0,0,663,1,0,0,0,0,665,1,0,0,0,0,667,1,0,0,0,0,669,1,0,0,0,0,671,1,0,0,0,0,673,1,0,0,0,0,675,1,0,0,0,0,677,1,0,0,0,0,679,1,0,0,0,0,681,1,0,0,0,0,693,1,0,0,0,0,695,1,0,0,0,0,699,1,0,0,0,0,713,1,0,0,0,0,715,1,0,0,0,0,719,1,0,0,0,0,721,1,0,0,0,0,727,1,0,0,0,0,729,1,0,0,0,1,731,1,0,0,0,3,737,1,0,0,0,5,739,1,0,0,0,7,742,1,0,0,0,9,745,1,0,0,0,11,748,1,0,0,0,13,750,1,0,0,0,15,753,1,0,0,0,17,755,1,0,0,0,19,758,1,0,0,0,21,761,1,0,0,0,23,765,1,0,0,0,25,767,1,0,0,0,27,769,1,0,0,0,29,772,1,0,0,0,31,775,1,0,0,0,33,778,1,0,0,0,35,780,1,0,0,0,37,782,1,0,0,0,39,784,1,0,0,0,41,786,1,0,0,0,43,788,1,0,0,0,45,790,1,0,0,0,47,792,1,0,0,0,49,794,1,0,0,0,51,796,1,0,0,0,53,798,1,0,0,0,55,800,1,0,0,0,57,802,1,0,0,0,59,804,1,0,0,0,61,806,1,0,0,0,63,808,1,0,0,0,65,811,1,0,0,0,67,813,1,0,0,0,69,815,1,0,0,0,71,817,1,0,0,0,73,819,1,0,0,0,75,821,1,0,0,0,77,823,1,0,0,0,79,825,1,0,0,0,81,828,1,0,0,0,83,831,1,0,0,0,85,833,1,0,0,0,87,835,1,0,0,0,89,837,1,0,0,0,91,839,1,0,0,0,93,841,1,0,0,0,95,843,1,0,0,0,97,845,1,0,0,0,99,847,1,0,0,0,101,849,1,0,0,0,103,851,1,0,0,0,105,853,1,0,0,0,107,855,1,0,0,0,109,857,1,0,0,0,111,859,1,0,0,0,113,861,1,0,0,0,115,863,1,0,0,0,117,865,1,0,0,0,119,867,1,0,0,0,121,869,1,0,0,0,123,871,1,0,0,0,125,873,1,0,0,0,127,875,1,0,0,0,129,877,1,0,0,0,131,879,1,0,0,0,133,881,1,0,0,0,135,883,1,0,0,0,137,885,1,0,0,0,139,887,1,0,0,0,141,893,1,0,0,0,143,900,1,0,0,0,145,904,1,0,0,0,147,910,1,0,0,0,149,914,1,0,0,0,151,920,1,0,0,0,153,928,1,0,0,0,155,932,1,0,0,0,157,937,1,0,0,0,159,941,1,0,0,0,161,947,1,0,0,0,163,950,1,0,0,0,165,954,1,0,0,0,167,961,1,0,0,0,169,972,1,0,0,0,171,978,1,0,0,0,173,985,1,0,0,0,175,996,1,0,0,0,177,1010,1,0,0,0,179,1018,1,0,0,0,181,1025,1,0,0,0,183,1031,1,0,0,0,185,1041,1,0,0,0,187,1049,1,0,0,0,189,1057,1,0,0,0,191,1060,1,0,0,0,193,1069,1,0,0,0,195,1077,1,0,0,0,197,1082,1,0,0,0,199,1087,1,0,0,0,201,1098,1,0,0,0,203,1104,1,0,0,0,205,1112,1,0,0,0,207,1119,1,0,0,0,209,1127,1,0,0,0,211,1134,1,0,0,0,213,1142,1,0,0,0,215,1154,1,0,0,0,217,1163,1,0,0,0,219,1171,1,0,0,0,221,1182,1,0,0,0,223,1191,1,0,0,0,225,1197,1,0,0,0,227,1204,1,0,0,0,229,1210,1,0,0,0,231,1215,1,0,0,0,233,1223,1,0,0,0,235,1236,1,0,0,0,237,1249,1,0,0,0,239,1267,1,0,0,0,241,1272,1,0,0,0,243,1281,1,0,0,0,245,1289,1,0,0,0,247,1297,1,0,0,0,249,1305,1,0,0,0,251,1316,1,0,0,0,253,1325,1,0,0,0,255,1332,1,0,0,0,257,1339,1,0,0,0,259,1344,1,0,0,0,261,1353,1,0,0,0,263,1360,1,0,0,0,265,1365,1,0,0,0,267,1375,1,0,0,0,269,1383,1,0,0,0,271,1391,1,0,0,0,273,1400,1,0,0,0,275,1403,1,0,0,0,277,1408,1,0,0,0,279,1413,1,0,0,0,281,1418,1,0,0,0,283,1424,1,0,0,0,285,1437,1,0,0,0,287,1447,1,0,0,0,289,1451,1,0,0,0,291,1456,1,0,0,0,293,1462,1,0,0,0,295,1468,1,0,0,0,297,1475,1,0,0,0,299,1484,1,0,0,0,301,1491,1,0,0,0,303,1499,1,0,0,0,305,1509,1,0,0,0,307,1519,1,0,0,0,309,1526,1,0,0,0,311,1534,1,0,0,0,313,1541,1,0,0,0,315,1550,1,0,0,0,317,1555,1,0,0,0,319,1561,1,0,0,0,321,1568,1,0,0,0,323,1575,1,0,0,0,325,1581,1,0,0,0,327,1589,1,0,0,0,329,1594,1,0,0,0,331,1604,1,0,0,0,333,1608,1,0,0,0,335,1616,1,0,0,0,337,1621,1,0,0,0,339,1626,1,0,0,0,341,1635,1,0,0,0,343,1640,1,0,0,0,345,1647,1,0,0,0,347,1653,1,0,0,0,349,1659,1,0,0,0,351,1668,1,0,0,0,353,1675,1,0,0,0,355,1680,1,0,0,0,357,1687,1,0,0,0,359,1691,1,0,0,0,361,1694,1,0,0,0,363,1701,1,0,0,0,365,1707,1,0,0,0,367,1717,1,0,0,0,369,1724,1,0,0,0,371,1727,1,0,0,0,373,1733,1,0,0,0,375,1741,1,0,0,0,377,1750,1,0,0,0,379,1758,1,0,0,0,381,1768,1,0,0,0,383,1774,1,0,0,0,385,1781,1,0,0,0,387,1789,1,0,0,0,389,1799,1,0,0,0,391,1804,1,0,0,0,393,1807,1,0,0,0,395,1814,1,0,0,0,397,1819,1,0,0,0,399,1831,1,0,0,0,401,1842,1,0,0,0,403,1853,1,0,0,0,405,1857,1,0,0,0,407,1862,1,0,0,0,409,1867,1,0,0,0,411,1874,1,0,0,0,413,1879,1,0,0,0,415,1885,1,0,0,0,417,1890,1,0,0,0,419,1896,1,0,0,0,421,1903,1,0,0,0,423,1909,1,0,0,0,425,1917,1,0,0,0,427,1933,1,0,0,0,429,1942,1,0,0,0,431,1955,1,0,0,0,433,1968,1,0,0,0,435,1975,1,0,0,0,437,1987,1,0,0,0,439,1995,1,0,0,0,441,2e3,1,0,0,0,443,2003,1,0,0,0,445,2007,1,0,0,0,447,2015,1,0,0,0,449,2020,1,0,0,0,451,2026,1,0,0,0,453,2033,1,0,0,0,455,2036,1,0,0,0,457,2043,1,0,0,0,459,2048,1,0,0,0,461,2051,1,0,0,0,463,2055,1,0,0,0,465,2060,1,0,0,0,467,2067,1,0,0,0,469,2076,1,0,0,0,471,2079,1,0,0,0,473,2085,1,0,0,0,475,2092,1,0,0,0,477,2098,1,0,0,0,479,2103,1,0,0,0,481,2112,1,0,0,0,483,2122,1,0,0,0,485,2130,1,0,0,0,487,2139,1,0,0,0,489,2144,1,0,0,0,491,2152,1,0,0,0,493,2156,1,0,0,0,495,2164,1,0,0,0,497,2169,1,0,0,0,499,2176,1,0,0,0,501,2186,1,0,0,0,503,2194,1,0,0,0,505,2202,1,0,0,0,507,2213,1,0,0,0,509,2221,1,0,0,0,511,2227,1,0,0,0,513,2233,1,0,0,0,515,2239,1,0,0,0,517,2246,1,0,0,0,519,2257,1,0,0,0,521,2264,1,0,0,0,523,2272,1,0,0,0,525,2280,1,0,0,0,527,2287,1,0,0,0,529,2294,1,0,0,0,531,2305,1,0,0,0,533,2313,1,0,0,0,535,2325,1,0,0,0,537,2331,1,0,0,0,539,2340,1,0,0,0,541,2348,1,0,0,0,543,2357,1,0,0,0,545,2364,1,0,0,0,547,2371,1,0,0,0,549,2381,1,0,0,0,551,2388,1,0,0,0,553,2395,1,0,0,0,555,2401,1,0,0,0,557,2407,1,0,0,0,559,2416,1,0,0,0,561,2423,1,0,0,0,563,2427,1,0,0,0,565,2432,1,0,0,0,567,2439,1,0,0,0,569,2449,1,0,0,0,571,2456,1,0,0,0,573,2464,1,0,0,0,575,2469,1,0,0,0,577,2476,1,0,0,0,579,2481,1,0,0,0,581,2485,1,0,0,0,583,2490,1,0,0,0,585,2495,1,0,0,0,587,2500,1,0,0,0,589,2507,1,0,0,0,591,2514,1,0,0,0,593,2521,1,0,0,0,595,2530,1,0,0,0,597,2537,1,0,0,0,599,2545,1,0,0,0,601,2555,1,0,0,0,603,2560,1,0,0,0,605,2567,1,0,0,0,607,2573,1,0,0,0,609,2580,1,0,0,0,611,2592,1,0,0,0,613,2603,1,0,0,0,615,2610,1,0,0,0,617,2615,1,0,0,0,619,2625,1,0,0,0,621,2630,1,0,0,0,623,2635,1,0,0,0,625,2638,1,0,0,0,627,2644,1,0,0,0,629,2656,1,0,0,0,631,2664,1,0,0,0,633,2669,1,0,0,0,635,2675,1,0,0,0,637,2680,1,0,0,0,639,2690,1,0,0,0,641,2704,1,0,0,0,643,2710,1,0,0,0,645,2717,1,0,0,0,647,2725,1,0,0,0,649,2735,1,0,0,0,651,2742,1,0,0,0,653,2749,1,0,0,0,655,2753,1,0,0,0,657,2758,1,0,0,0,659,2764,1,0,0,0,661,2771,1,0,0,0,663,2778,1,0,0,0,665,2786,1,0,0,0,667,2791,1,0,0,0,669,2799,1,0,0,0,671,2804,1,0,0,0,673,2810,1,0,0,0,675,2817,1,0,0,0,677,2822,1,0,0,0,679,2830,1,0,0,0,681,2838,1,0,0,0,683,2846,1,0,0,0,685,2852,1,0,0,0,687,2854,1,0,0,0,689,2863,1,0,0,0,691,2881,1,0,0,0,693,2891,1,0,0,0,695,2905,1,0,0,0,697,2918,1,0,0,0,699,2920,1,0,0,0,701,2929,1,0,0,0,703,2931,1,0,0,0,705,2933,1,0,0,0,707,2940,1,0,0,0,709,2947,1,0,0,0,711,2955,1,0,0,0,713,2963,1,0,0,0,715,2965,1,0,0,0,717,2978,1,0,0,0,719,2999,1,0,0,0,721,3011,1,0,0,0,723,3020,1,0,0,0,725,3032,1,0,0,0,727,3048,1,0,0,0,729,3054,1,0,0,0,731,732,3,119,59,0,732,733,3,127,63,0,733,734,3,95,47,0,734,735,3,121,60,0,735,736,3,135,67,0,736,2,1,0,0,0,737,738,5,61,0,0,738,4,1,0,0,0,739,740,5,61,0,0,740,741,5,61,0,0,741,6,1,0,0,0,742,743,5,33,0,0,743,744,5,61,0,0,744,8,1,0,0,0,745,746,5,60,0,0,746,747,5,62,0,0,747,10,1,0,0,0,748,749,5,60,0,0,749,12,1,0,0,0,750,751,5,60,0,0,751,752,5,61,0,0,752,14,1,0,0,0,753,754,5,62,0,0,754,16,1,0,0,0,755,756,5,62,0,0,756,757,5,61,0,0,757,18,1,0,0,0,758,759,5,60,0,0,759,760,5,60,0,0,760,20,1,0,0,0,761,762,5,124,0,0,762,763,5,60,0,0,763,764,5,60,0,0,764,22,1,0,0,0,765,766,5,38,0,0,766,24,1,0,0,0,767,768,5,124,0,0,768,26,1,0,0,0,769,770,5,124,0,0,770,771,5,124,0,0,771,28,1,0,0,0,772,773,5,60,0,0,773,774,5,124,0,0,774,30,1,0,0,0,775,776,5,124,0,0,776,777,5,62,0,0,777,32,1,0,0,0,778,779,5,43,0,0,779,34,1,0,0,0,780,781,5,45,0,0,781,36,1,0,0,0,782,783,5,126,0,0,783,38,1,0,0,0,784,785,5,42,0,0,785,40,1,0,0,0,786,787,5,47,0,0,787,42,1,0,0,0,788,789,5,92,0,0,789,44,1,0,0,0,790,791,5,37,0,0,791,46,1,0,0,0,792,793,5,59,0,0,793,48,1,0,0,0,794,795,5,46,0,0,795,50,1,0,0,0,796,797,5,44,0,0,797,52,1,0,0,0,798,799,5,40,0,0,799,54,1,0,0,0,800,801,5,41,0,0,801,56,1,0,0,0,802,803,5,63,0,0,803,58,1,0,0,0,804,805,5,58,0,0,805,60,1,0,0,0,806,807,5,64,0,0,807,62,1,0,0,0,808,809,5,64,0,0,809,810,5,64,0,0,810,64,1,0,0,0,811,812,5,36,0,0,812,66,1,0,0,0,813,814,5,34,0,0,814,68,1,0,0,0,815,816,5,39,0,0,816,70,1,0,0,0,817,818,5,96,0,0,818,72,1,0,0,0,819,820,5,123,0,0,820,74,1,0,0,0,821,822,5,125,0,0,822,76,1,0,0,0,823,824,5,94,0,0,824,78,1,0,0,0,825,826,5,58,0,0,826,827,5,58,0,0,827,80,1,0,0,0,828,829,5,45,0,0,829,830,5,62,0,0,830,82,1,0,0,0,831,832,5,93,0,0,832,84,1,0,0,0,833,834,5,91,0,0,834,86,1,0,0,0,835,836,7,0,0,0,836,88,1,0,0,0,837,838,7,1,0,0,838,90,1,0,0,0,839,840,7,2,0,0,840,92,1,0,0,0,841,842,7,3,0,0,842,94,1,0,0,0,843,844,7,4,0,0,844,96,1,0,0,0,845,846,7,5,0,0,846,98,1,0,0,0,847,848,7,6,0,0,848,100,1,0,0,0,849,850,7,7,0,0,850,102,1,0,0,0,851,852,7,8,0,0,852,104,1,0,0,0,853,854,7,9,0,0,854,106,1,0,0,0,855,856,7,10,0,0,856,108,1,0,0,0,857,858,7,11,0,0,858,110,1,0,0,0,859,860,7,12,0,0,860,112,1,0,0,0,861,862,7,13,0,0,862,114,1,0,0,0,863,864,7,14,0,0,864,116,1,0,0,0,865,866,7,15,0,0,866,118,1,0,0,0,867,868,7,16,0,0,868,120,1,0,0,0,869,870,7,17,0,0,870,122,1,0,0,0,871,872,7,18,0,0,872,124,1,0,0,0,873,874,7,19,0,0,874,126,1,0,0,0,875,876,7,20,0,0,876,128,1,0,0,0,877,878,7,21,0,0,878,130,1,0,0,0,879,880,7,22,0,0,880,132,1,0,0,0,881,882,7,23,0,0,882,134,1,0,0,0,883,884,7,24,0,0,884,136,1,0,0,0,885,886,7,25,0,0,886,138,1,0,0,0,887,888,3,87,43,0,888,889,3,89,44,0,889,890,3,115,57,0,890,891,3,121,60,0,891,892,3,125,62,0,892,140,1,0,0,0,893,894,3,87,43,0,894,895,3,91,45,0,895,896,3,125,62,0,896,897,3,103,51,0,897,898,3,115,57,0,898,899,3,113,56,0,899,142,1,0,0,0,900,901,3,87,43,0,901,902,3,93,46,0,902,903,3,93,46,0,903,144,1,0,0,0,904,905,3,87,43,0,905,906,3,97,48,0,906,907,3,125,62,0,907,908,3,95,47,0,908,909,3,121,60,0,909,146,1,0,0,0,910,911,3,87,43,0,911,912,3,109,54,0,912,913,3,109,54,0,913,148,1,0,0,0,914,915,3,87,43,0,915,916,3,109,54,0,916,917,3,125,62,0,917,918,3,95,47,0,918,919,3,121,60,0,919,150,1,0,0,0,920,921,3,87,43,0,921,922,3,113,56,0,922,923,3,87,43,0,923,924,3,109,54,0,924,925,3,135,67,0,925,926,3,137,68,0,926,927,3,95,47,0,927,152,1,0,0,0,928,929,3,87,43,0,929,930,3,113,56,0,930,931,3,93,46,0,931,154,1,0,0,0,932,933,3,87,43,0,933,934,3,113,56,0,934,935,3,123,61,0,935,936,3,103,51,0,936,156,1,0,0,0,937,938,3,87,43,0,938,939,3,113,56,0,939,940,3,135,67,0,940,158,1,0,0,0,941,942,3,87,43,0,942,943,3,121,60,0,943,944,3,121,60,0,944,945,3,87,43,0,945,946,3,135,67,0,946,160,1,0,0,0,947,948,3,87,43,0,948,949,3,123,61,0,949,162,1,0,0,0,950,951,3,87,43,0,951,952,3,123,61,0,952,953,3,91,45,0,953,164,1,0,0,0,954,955,3,87,43,0,955,956,3,123,61,0,956,957,3,123,61,0,957,958,3,127,63,0,958,959,3,111,55,0,959,960,3,95,47,0,960,166,1,0,0,0,961,962,3,87,43,0,962,963,3,123,61,0,963,964,3,135,67,0,964,965,3,111,55,0,965,966,3,111,55,0,966,967,3,95,47,0,967,968,3,125,62,0,968,969,3,121,60,0,969,970,3,103,51,0,970,971,3,91,45,0,971,168,1,0,0,0,972,973,3,87,43,0,973,974,3,123,61,0,974,975,3,135,67,0,975,976,3,113,56,0,976,977,3,91,45,0,977,170,1,0,0,0,978,979,3,87,43,0,979,980,3,125,62,0,980,981,3,125,62,0,981,982,3,87,43,0,982,983,3,91,45,0,983,984,3,101,50,0,984,172,1,0,0,0,985,986,3,87,43,0,986,987,3,125,62,0,987,988,3,125,62,0,988,989,3,121,60,0,989,990,3,103,51,0,990,991,3,89,44,0,991,992,3,127,63,0,992,993,3,125,62,0,993,994,3,95,47,0,994,995,3,123,61,0,995,174,1,0,0,0,996,997,3,87,43,0,997,998,3,127,63,0,998,999,3,125,62,0,999,1e3,3,115,57,0,1e3,1001,3,103,51,0,1001,1002,3,113,56,0,1002,1003,3,91,45,0,1003,1004,3,121,60,0,1004,1005,3,95,47,0,1005,1006,3,111,55,0,1006,1007,3,95,47,0,1007,1008,3,113,56,0,1008,1009,3,125,62,0,1009,176,1,0,0,0,1010,1011,3,87,43,0,1011,1012,3,127,63,0,1012,1013,3,125,62,0,1013,1014,3,115,57,0,1014,1015,3,111,55,0,1015,1016,3,87,43,0,1016,1017,3,117,58,0,1017,178,1,0,0,0,1018,1019,3,89,44,0,1019,1020,3,95,47,0,1020,1021,3,97,48,0,1021,1022,3,115,57,0,1022,1023,3,121,60,0,1023,1024,3,95,47,0,1024,180,1,0,0,0,1025,1026,3,89,44,0,1026,1027,3,95,47,0,1027,1028,3,99,49,0,1028,1029,3,103,51,0,1029,1030,3,113,56,0,1030,182,1,0,0,0,1031,1032,3,89,44,0,1032,1033,3,95,47,0,1033,1034,3,121,60,0,1034,1035,3,113,56,0,1035,1036,3,115,57,0,1036,1037,3,127,63,0,1037,1038,3,109,54,0,1038,1039,3,109,54,0,1039,1040,3,103,51,0,1040,184,1,0,0,0,1041,1042,3,89,44,0,1042,1043,3,95,47,0,1043,1044,3,125,62,0,1044,1045,3,131,65,0,1045,1046,3,95,47,0,1046,1047,3,95,47,0,1047,1048,3,113,56,0,1048,186,1,0,0,0,1049,1050,3,89,44,0,1050,1051,3,103,51,0,1051,1052,3,125,62,0,1052,1053,3,91,45,0,1053,1054,3,87,43,0,1054,1055,3,123,61,0,1055,1056,3,125,62,0,1056,188,1,0,0,0,1057,1058,3,89,44,0,1058,1059,3,135,67,0,1059,190,1,0,0,0,1060,1061,3,91,45,0,1061,1062,3,87,43,0,1062,1063,3,109,54,0,1063,1064,3,109,54,0,1064,1065,3,87,43,0,1065,1066,3,89,44,0,1066,1067,3,109,54,0,1067,1068,3,95,47,0,1068,192,1,0,0,0,1069,1070,3,91,45,0,1070,1071,3,87,43,0,1071,1072,3,123,61,0,1072,1073,3,91,45,0,1073,1074,3,87,43,0,1074,1075,3,93,46,0,1075,1076,3,95,47,0,1076,194,1,0,0,0,1077,1078,3,91,45,0,1078,1079,3,87,43,0,1079,1080,3,123,61,0,1080,1081,3,95,47,0,1081,196,1,0,0,0,1082,1083,3,91,45,0,1083,1084,3,87,43,0,1084,1085,3,123,61,0,1085,1086,3,125,62,0,1086,198,1,0,0,0,1087,1088,3,91,45,0,1088,1089,3,101,50,0,1089,1090,3,87,43,0,1090,1091,3,113,56,0,1091,1092,3,99,49,0,1092,1093,3,95,47,0,1093,1094,3,97,48,0,1094,1095,3,95,47,0,1095,1096,3,95,47,0,1096,1097,3,93,46,0,1097,200,1,0,0,0,1098,1099,3,91,45,0,1099,1100,3,101,50,0,1100,1101,3,95,47,0,1101,1102,3,91,45,0,1102,1103,3,107,53,0,1103,202,1,0,0,0,1104,1105,3,91,45,0,1105,1106,3,115,57,0,1106,1107,3,109,54,0,1107,1108,3,109,54,0,1108,1109,3,87,43,0,1109,1110,3,125,62,0,1110,1111,3,95,47,0,1111,204,1,0,0,0,1112,1113,3,91,45,0,1113,1114,3,115,57,0,1114,1115,3,109,54,0,1115,1116,3,127,63,0,1116,1117,3,111,55,0,1117,1118,3,113,56,0,1118,206,1,0,0,0,1119,1120,3,91,45,0,1120,1121,3,115,57,0,1121,1122,3,109,54,0,1122,1123,3,127,63,0,1123,1124,3,111,55,0,1124,1125,3,113,56,0,1125,1126,3,123,61,0,1126,208,1,0,0,0,1127,1128,3,91,45,0,1128,1129,3,115,57,0,1129,1130,3,111,55,0,1130,1131,3,111,55,0,1131,1132,3,103,51,0,1132,1133,3,125,62,0,1133,210,1,0,0,0,1134,1135,3,91,45,0,1135,1136,3,115,57,0,1136,1137,3,111,55,0,1137,1138,3,117,58,0,1138,1139,3,87,43,0,1139,1140,3,91,45,0,1140,1141,3,125,62,0,1141,212,1,0,0,0,1142,1143,3,91,45,0,1143,1144,3,115,57,0,1144,1145,3,113,56,0,1145,1146,3,93,46,0,1146,1147,3,103,51,0,1147,1148,3,125,62,0,1148,1149,3,103,51,0,1149,1150,3,115,57,0,1150,1151,3,113,56,0,1151,1152,3,87,43,0,1152,1153,3,109,54,0,1153,214,1,0,0,0,1154,1155,3,91,45,0,1155,1156,3,115,57,0,1156,1157,3,113,56,0,1157,1158,3,97,48,0,1158,1159,3,109,54,0,1159,1160,3,103,51,0,1160,1161,3,91,45,0,1161,1162,3,125,62,0,1162,216,1,0,0,0,1163,1164,3,91,45,0,1164,1165,3,115,57,0,1165,1166,3,113,56,0,1166,1167,3,113,56,0,1167,1168,3,95,47,0,1168,1169,3,91,45,0,1169,1170,3,125,62,0,1170,218,1,0,0,0,1171,1172,3,91,45,0,1172,1173,3,115,57,0,1173,1174,3,113,56,0,1174,1175,3,123,61,0,1175,1176,3,125,62,0,1176,1177,3,121,60,0,1177,1178,3,87,43,0,1178,1179,3,103,51,0,1179,1180,3,113,56,0,1180,1181,3,125,62,0,1181,220,1,0,0,0,1182,1183,3,91,45,0,1183,1184,3,115,57,0,1184,1185,3,113,56,0,1185,1186,3,123,61,0,1186,1187,3,127,63,0,1187,1188,3,111,55,0,1188,1189,3,95,47,0,1189,1190,3,121,60,0,1190,222,1,0,0,0,1191,1192,3,91,45,0,1192,1193,3,115,57,0,1193,1194,3,129,64,0,1194,1195,3,95,47,0,1195,1196,3,121,60,0,1196,224,1,0,0,0,1197,1198,3,91,45,0,1198,1199,3,121,60,0,1199,1200,3,95,47,0,1200,1201,3,87,43,0,1201,1202,3,125,62,0,1202,1203,3,95,47,0,1203,226,1,0,0,0,1204,1205,3,91,45,0,1205,1206,3,121,60,0,1206,1207,3,115,57,0,1207,1208,3,123,61,0,1208,1209,3,123,61,0,1209,228,1,0,0,0,1210,1211,3,91,45,0,1211,1212,3,127,63,0,1212,1213,3,89,44,0,1213,1214,3,95,47,0,1214,230,1,0,0,0,1215,1216,3,91,45,0,1216,1217,3,127,63,0,1217,1218,3,121,60,0,1218,1219,3,121,60,0,1219,1220,3,95,47,0,1220,1221,3,113,56,0,1221,1222,3,125,62,0,1222,232,1,0,0,0,1223,1224,3,91,45,0,1224,1225,3,127,63,0,1225,1226,3,121,60,0,1226,1227,3,121,60,0,1227,1228,3,95,47,0,1228,1229,3,113,56,0,1229,1230,3,125,62,0,1230,1231,5,95,0,0,1231,1232,3,93,46,0,1232,1233,3,87,43,0,1233,1234,3,125,62,0,1234,1235,3,95,47,0,1235,234,1,0,0,0,1236,1237,3,91,45,0,1237,1238,3,127,63,0,1238,1239,3,121,60,0,1239,1240,3,121,60,0,1240,1241,3,95,47,0,1241,1242,3,113,56,0,1242,1243,3,125,62,0,1243,1244,5,95,0,0,1244,1245,3,125,62,0,1245,1246,3,103,51,0,1246,1247,3,111,55,0,1247,1248,3,95,47,0,1248,236,1,0,0,0,1249,1250,3,91,45,0,1250,1251,3,127,63,0,1251,1252,3,121,60,0,1252,1253,3,121,60,0,1253,1254,3,95,47,0,1254,1255,3,113,56,0,1255,1256,3,125,62,0,1256,1257,5,95,0,0,1257,1258,3,125,62,0,1258,1259,3,103,51,0,1259,1260,3,111,55,0,1260,1261,3,95,47,0,1261,1262,3,123,61,0,1262,1263,3,125,62,0,1263,1264,3,87,43,0,1264,1265,3,111,55,0,1265,1266,3,117,58,0,1266,238,1,0,0,0,1267,1268,3,93,46,0,1268,1269,3,87,43,0,1269,1270,3,125,62,0,1270,1271,3,87,43,0,1271,240,1,0,0,0,1272,1273,3,93,46,0,1273,1274,3,87,43,0,1274,1275,3,125,62,0,1275,1276,3,87,43,0,1276,1277,3,89,44,0,1277,1278,3,87,43,0,1278,1279,3,123,61,0,1279,1280,3,95,47,0,1280,242,1,0,0,0,1281,1282,3,93,46,0,1282,1283,3,95,47,0,1283,1284,3,91,45,0,1284,1285,3,103,51,0,1285,1286,3,111,55,0,1286,1287,3,87,43,0,1287,1288,3,109,54,0,1288,244,1,0,0,0,1289,1290,3,93,46,0,1290,1291,3,95,47,0,1291,1292,3,91,45,0,1292,1293,3,109,54,0,1293,1294,3,87,43,0,1294,1295,3,121,60,0,1295,1296,3,95,47,0,1296,246,1,0,0,0,1297,1298,3,93,46,0,1298,1299,3,95,47,0,1299,1300,3,97,48,0,1300,1301,3,87,43,0,1301,1302,3,127,63,0,1302,1303,3,109,54,0,1303,1304,3,125,62,0,1304,248,1,0,0,0,1305,1306,3,93,46,0,1306,1307,3,95,47,0,1307,1308,3,97,48,0,1308,1309,3,95,47,0,1309,1310,3,121,60,0,1310,1311,3,121,60,0,1311,1312,3,87,43,0,1312,1313,3,89,44,0,1313,1314,3,109,54,0,1314,1315,3,95,47,0,1315,250,1,0,0,0,1316,1317,3,93,46,0,1317,1318,3,95,47,0,1318,1319,3,97,48,0,1319,1320,3,95,47,0,1320,1321,3,121,60,0,1321,1322,3,121,60,0,1322,1323,3,95,47,0,1323,1324,3,93,46,0,1324,252,1,0,0,0,1325,1326,3,93,46,0,1326,1327,3,95,47,0,1327,1328,3,97,48,0,1328,1329,3,103,51,0,1329,1330,3,113,56,0,1330,1331,3,95,47,0,1331,254,1,0,0,0,1332,1333,3,93,46,0,1333,1334,3,95,47,0,1334,1335,3,109,54,0,1335,1336,3,95,47,0,1336,1337,3,125,62,0,1337,1338,3,95,47,0,1338,256,1,0,0,0,1339,1340,3,93,46,0,1340,1341,3,95,47,0,1341,1342,3,123,61,0,1342,1343,3,91,45,0,1343,258,1,0,0,0,1344,1345,3,93,46,0,1345,1346,3,95,47,0,1346,1347,3,123,61,0,1347,1348,3,91,45,0,1348,1349,3,121,60,0,1349,1350,3,103,51,0,1350,1351,3,89,44,0,1351,1352,3,95,47,0,1352,260,1,0,0,0,1353,1354,3,93,46,0,1354,1355,3,95,47,0,1355,1356,3,125,62,0,1356,1357,3,87,43,0,1357,1358,3,91,45,0,1358,1359,3,101,50,0,1359,262,1,0,0,0,1360,1361,3,93,46,0,1361,1362,3,103,51,0,1362,1363,3,91,45,0,1363,1364,3,125,62,0,1364,264,1,0,0,0,1365,1366,3,93,46,0,1366,1367,3,103,51,0,1367,1368,3,121,60,0,1368,1369,3,95,47,0,1369,1370,3,91,45,0,1370,1371,3,125,62,0,1371,1372,3,115,57,0,1372,1373,3,121,60,0,1373,1374,3,135,67,0,1374,266,1,0,0,0,1375,1376,3,93,46,0,1376,1377,3,103,51,0,1377,1378,3,123,61,0,1378,1379,3,87,43,0,1379,1380,3,89,44,0,1380,1381,3,109,54,0,1381,1382,3,95,47,0,1382,268,1,0,0,0,1383,1384,3,93,46,0,1384,1385,3,103,51,0,1385,1386,3,123,61,0,1386,1387,3,91,45,0,1387,1388,3,87,43,0,1388,1389,3,121,60,0,1389,1390,3,93,46,0,1390,270,1,0,0,0,1391,1392,3,93,46,0,1392,1393,3,103,51,0,1393,1394,3,123,61,0,1394,1395,3,125,62,0,1395,1396,3,103,51,0,1396,1397,3,113,56,0,1397,1398,3,91,45,0,1398,1399,3,125,62,0,1399,272,1,0,0,0,1400,1401,3,93,46,0,1401,1402,3,115,57,0,1402,274,1,0,0,0,1403,1404,3,93,46,0,1404,1405,3,121,60,0,1405,1406,3,115,57,0,1406,1407,3,117,58,0,1407,276,1,0,0,0,1408,1409,3,95,47,0,1409,1410,3,87,43,0,1410,1411,3,91,45,0,1411,1412,3,101,50,0,1412,278,1,0,0,0,1413,1414,3,95,47,0,1414,1415,3,109,54,0,1415,1416,3,123,61,0,1416,1417,3,95,47,0,1417,280,1,0,0,0,1418,1419,3,95,47,0,1419,1420,3,111,55,0,1420,1421,3,117,58,0,1421,1422,3,125,62,0,1422,1423,3,135,67,0,1423,282,1,0,0,0,1424,1425,3,95,47,0,1425,1426,3,111,55,0,1426,1427,3,117,58,0,1427,1428,3,125,62,0,1428,1429,3,135,67,0,1429,1430,5,95,0,0,1430,1431,3,87,43,0,1431,1432,3,91,45,0,1432,1433,3,125,62,0,1433,1434,3,103,51,0,1434,1435,3,115,57,0,1435,1436,3,113,56,0,1436,284,1,0,0,0,1437,1438,3,95,47,0,1438,1439,3,113,56,0,1439,1440,3,91,45,0,1440,1441,3,121,60,0,1441,1442,3,135,67,0,1442,1443,3,117,58,0,1443,1444,3,125,62,0,1444,1445,3,95,47,0,1445,1446,3,93,46,0,1446,286,1,0,0,0,1447,1448,3,95,47,0,1448,1449,3,113,56,0,1449,1450,3,93,46,0,1450,288,1,0,0,0,1451,1452,3,95,47,0,1452,1453,3,113,56,0,1453,1454,3,127,63,0,1454,1455,3,111,55,0,1455,290,1,0,0,0,1456,1457,3,95,47,0,1457,1458,3,121,60,0,1458,1459,3,87,43,0,1459,1460,3,123,61,0,1460,1461,3,95,47,0,1461,292,1,0,0,0,1462,1463,3,95,47,0,1463,1464,3,121,60,0,1464,1465,3,121,60,0,1465,1466,3,115,57,0,1466,1467,3,121,60,0,1467,294,1,0,0,0,1468,1469,3,95,47,0,1469,1470,3,123,61,0,1470,1471,3,91,45,0,1471,1472,3,87,43,0,1472,1473,3,117,58,0,1473,1474,3,95,47,0,1474,296,1,0,0,0,1475,1476,3,95,47,0,1476,1477,3,129,64,0,1477,1478,3,87,43,0,1478,1479,3,109,54,0,1479,1480,3,127,63,0,1480,1481,3,87,43,0,1481,1482,3,125,62,0,1482,1483,3,95,47,0,1483,298,1,0,0,0,1484,1485,3,95,47,0,1485,1486,3,133,66,0,1486,1487,3,91,45,0,1487,1488,3,95,47,0,1488,1489,3,117,58,0,1489,1490,3,125,62,0,1490,300,1,0,0,0,1491,1492,3,95,47,0,1492,1493,3,133,66,0,1493,1494,3,91,45,0,1494,1495,3,109,54,0,1495,1496,3,127,63,0,1496,1497,3,93,46,0,1497,1498,3,95,47,0,1498,302,1,0,0,0,1499,1500,3,95,47,0,1500,1501,3,133,66,0,1501,1502,3,91,45,0,1502,1503,3,109,54,0,1503,1504,3,127,63,0,1504,1505,3,123,61,0,1505,1506,3,103,51,0,1506,1507,3,115,57,0,1507,1508,3,113,56,0,1508,304,1,0,0,0,1509,1510,3,95,47,0,1510,1511,3,133,66,0,1511,1512,3,91,45,0,1512,1513,3,109,54,0,1513,1514,3,127,63,0,1514,1515,3,123,61,0,1515,1516,3,103,51,0,1516,1517,3,129,64,0,1517,1518,3,95,47,0,1518,306,1,0,0,0,1519,1520,3,95,47,0,1520,1521,3,133,66,0,1521,1522,3,103,51,0,1522,1523,3,123,61,0,1523,1524,3,125,62,0,1524,1525,3,123,61,0,1525,308,1,0,0,0,1526,1527,3,95,47,0,1527,1528,3,133,66,0,1528,1529,3,117,58,0,1529,1530,3,109,54,0,1530,1531,3,87,43,0,1531,1532,3,103,51,0,1532,1533,3,113,56,0,1533,310,1,0,0,0,1534,1535,3,95,47,0,1535,1536,3,133,66,0,1536,1537,3,117,58,0,1537,1538,3,115,57,0,1538,1539,3,121,60,0,1539,1540,3,125,62,0,1540,312,1,0,0,0,1541,1542,3,95,47,0,1542,1543,3,133,66,0,1543,1544,3,125,62,0,1544,1545,3,95,47,0,1545,1546,3,121,60,0,1546,1547,3,113,56,0,1547,1548,3,87,43,0,1548,1549,3,109,54,0,1549,314,1,0,0,0,1550,1551,3,97,48,0,1551,1552,3,87,43,0,1552,1553,3,103,51,0,1553,1554,3,109,54,0,1554,316,1,0,0,0,1555,1556,3,97,48,0,1556,1557,3,87,43,0,1557,1558,3,109,54,0,1558,1559,3,123,61,0,1559,1560,3,95,47,0,1560,318,1,0,0,0,1561,1562,3,97,48,0,1562,1563,3,87,43,0,1563,1564,3,111,55,0,1564,1565,3,103,51,0,1565,1566,3,109,54,0,1566,1567,3,135,67,0,1567,320,1,0,0,0,1568,1569,3,97,48,0,1569,1570,3,103,51,0,1570,1571,3,109,54,0,1571,1572,3,125,62,0,1572,1573,3,95,47,0,1573,1574,3,121,60,0,1574,322,1,0,0,0,1575,1576,3,97,48,0,1576,1577,3,103,51,0,1577,1578,3,121,60,0,1578,1579,3,123,61,0,1579,1580,3,125,62,0,1580,324,1,0,0,0,1581,1582,3,97,48,0,1582,1583,3,109,54,0,1583,1584,3,87,43,0,1584,1585,3,125,62,0,1585,1586,3,125,62,0,1586,1587,3,95,47,0,1587,1588,3,113,56,0,1588,326,1,0,0,0,1589,1590,3,97,48,0,1590,1591,3,109,54,0,1591,1592,3,115,57,0,1592,1593,3,131,65,0,1593,328,1,0,0,0,1594,1595,3,97,48,0,1595,1596,3,115,57,0,1596,1597,3,109,54,0,1597,1598,3,109,54,0,1598,1599,3,115,57,0,1599,1600,3,131,65,0,1600,1601,3,103,51,0,1601,1602,3,113,56,0,1602,1603,3,99,49,0,1603,330,1,0,0,0,1604,1605,3,97,48,0,1605,1606,3,115,57,0,1606,1607,3,121,60,0,1607,332,1,0,0,0,1608,1609,3,97,48,0,1609,1610,3,115,57,0,1610,1611,3,121,60,0,1611,1612,3,95,47,0,1612,1613,3,103,51,0,1613,1614,3,99,49,0,1614,1615,3,113,56,0,1615,334,1,0,0,0,1616,1617,3,97,48,0,1617,1618,3,121,60,0,1618,1619,3,115,57,0,1619,1620,3,111,55,0,1620,336,1,0,0,0,1621,1622,3,97,48,0,1622,1623,3,127,63,0,1623,1624,3,109,54,0,1624,1625,3,109,54,0,1625,338,1,0,0,0,1626,1627,3,97,48,0,1627,1628,3,127,63,0,1628,1629,3,113,56,0,1629,1630,3,91,45,0,1630,1631,3,125,62,0,1631,1632,3,103,51,0,1632,1633,3,115,57,0,1633,1634,3,113,56,0,1634,340,1,0,0,0,1635,1636,3,99,49,0,1636,1637,3,109,54,0,1637,1638,3,115,57,0,1638,1639,3,89,44,0,1639,342,1,0,0,0,1640,1641,3,99,49,0,1641,1642,3,109,54,0,1642,1643,3,115,57,0,1643,1644,3,89,44,0,1644,1645,3,87,43,0,1645,1646,3,109,54,0,1646,344,1,0,0,0,1647,1648,3,99,49,0,1648,1649,3,121,60,0,1649,1650,3,87,43,0,1650,1651,3,113,56,0,1651,1652,3,125,62,0,1652,346,1,0,0,0,1653,1654,3,99,49,0,1654,1655,3,121,60,0,1655,1656,3,115,57,0,1656,1657,3,127,63,0,1657,1658,3,117,58,0,1658,348,1,0,0,0,1659,1660,3,99,49,0,1660,1661,3,121,60,0,1661,1662,3,115,57,0,1662,1663,3,127,63,0,1663,1664,3,117,58,0,1664,1665,3,103,51,0,1665,1666,3,113,56,0,1666,1667,3,99,49,0,1667,350,1,0,0,0,1668,1669,3,99,49,0,1669,1670,3,121,60,0,1670,1671,3,115,57,0,1671,1672,3,127,63,0,1672,1673,3,117,58,0,1673,1674,3,123,61,0,1674,352,1,0,0,0,1675,1676,3,101,50,0,1676,1677,3,87,43,0,1677,1678,3,123,61,0,1678,1679,3,101,50,0,1679,354,1,0,0,0,1680,1681,3,101,50,0,1681,1682,3,87,43,0,1682,1683,3,129,64,0,1683,1684,3,103,51,0,1684,1685,3,113,56,0,1685,1686,3,99,49,0,1686,356,1,0,0,0,1687,1688,3,101,50,0,1688,1689,3,115,57,0,1689,1690,3,117,58,0,1690,358,1,0,0,0,1691,1692,3,103,51,0,1692,1693,3,97,48,0,1693,360,1,0,0,0,1694,1695,3,103,51,0,1695,1696,3,99,49,0,1696,1697,3,113,56,0,1697,1698,3,115,57,0,1698,1699,3,121,60,0,1699,1700,3,95,47,0,1700,362,1,0,0,0,1701,1702,3,103,51,0,1702,1703,3,109,54,0,1703,1704,3,103,51,0,1704,1705,3,107,53,0,1705,1706,3,95,47,0,1706,364,1,0,0,0,1707,1708,3,103,51,0,1708,1709,3,111,55,0,1709,1710,3,111,55,0,1710,1711,3,95,47,0,1711,1712,3,93,46,0,1712,1713,3,103,51,0,1713,1714,3,87,43,0,1714,1715,3,125,62,0,1715,1716,3,95,47,0,1716,366,1,0,0,0,1717,1718,3,103,51,0,1718,1719,3,111,55,0,1719,1720,3,117,58,0,1720,1721,3,115,57,0,1721,1722,3,121,60,0,1722,1723,3,125,62,0,1723,368,1,0,0,0,1724,1725,3,103,51,0,1725,1726,3,113,56,0,1726,370,1,0,0,0,1727,1728,3,103,51,0,1728,1729,3,113,56,0,1729,1730,3,93,46,0,1730,1731,3,95,47,0,1731,1732,3,133,66,0,1732,372,1,0,0,0,1733,1734,3,103,51,0,1734,1735,3,113,56,0,1735,1736,3,93,46,0,1736,1737,3,95,47,0,1737,1738,3,133,66,0,1738,1739,3,95,47,0,1739,1740,3,93,46,0,1740,374,1,0,0,0,1741,1742,3,103,51,0,1742,1743,3,113,56,0,1743,1744,3,101,50,0,1744,1745,3,95,47,0,1745,1746,3,121,60,0,1746,1747,3,103,51,0,1747,1748,3,125,62,0,1748,1749,3,123,61,0,1749,376,1,0,0,0,1750,1751,3,103,51,0,1751,1752,3,113,56,0,1752,1753,3,103,51,0,1753,1754,3,125,62,0,1754,1755,3,103,51,0,1755,1756,3,87,43,0,1756,1757,3,109,54,0,1757,378,1,0,0,0,1758,1759,3,103,51,0,1759,1760,3,113,56,0,1760,1761,3,103,51,0,1761,1762,3,125,62,0,1762,1763,3,103,51,0,1763,1764,3,87,43,0,1764,1765,3,109,54,0,1765,1766,3,109,54,0,1766,1767,3,135,67,0,1767,380,1,0,0,0,1768,1769,3,103,51,0,1769,1770,3,113,56,0,1770,1771,3,113,56,0,1771,1772,3,95,47,0,1772,1773,3,121,60,0,1773,382,1,0,0,0,1774,1775,3,103,51,0,1775,1776,3,113,56,0,1776,1777,3,123,61,0,1777,1778,3,95,47,0,1778,1779,3,121,60,0,1779,1780,3,125,62,0,1780,384,1,0,0,0,1781,1782,3,103,51,0,1782,1783,3,113,56,0,1783,1784,3,123,61,0,1784,1785,3,125,62,0,1785,1786,3,95,47,0,1786,1787,3,87,43,0,1787,1788,3,93,46,0,1788,386,1,0,0,0,1789,1790,3,103,51,0,1790,1791,3,113,56,0,1791,1792,3,125,62,0,1792,1793,3,95,47,0,1793,1794,3,121,60,0,1794,1795,3,123,61,0,1795,1796,3,95,47,0,1796,1797,3,91,45,0,1797,1798,3,125,62,0,1798,388,1,0,0,0,1799,1800,3,103,51,0,1800,1801,3,113,56,0,1801,1802,3,125,62,0,1802,1803,3,115,57,0,1803,390,1,0,0,0,1804,1805,3,103,51,0,1805,1806,3,123,61,0,1806,392,1,0,0,0,1807,1808,3,103,51,0,1808,1809,3,123,61,0,1809,1810,3,113,56,0,1810,1811,3,127,63,0,1811,1812,3,109,54,0,1812,1813,3,109,54,0,1813,394,1,0,0,0,1814,1815,3,105,52,0,1815,1816,3,115,57,0,1816,1817,3,103,51,0,1817,1818,3,113,56,0,1818,396,1,0,0,0,1819,1820,3,105,52,0,1820,1821,3,123,61,0,1821,1822,3,115,57,0,1822,1823,3,113,56,0,1823,1824,5,95,0,0,1824,1825,3,95,47,0,1825,1826,3,133,66,0,1826,1827,3,103,51,0,1827,1828,3,123,61,0,1828,1829,3,125,62,0,1829,1830,3,123,61,0,1830,398,1,0,0,0,1831,1832,3,105,52,0,1832,1833,3,123,61,0,1833,1834,3,115,57,0,1834,1835,3,113,56,0,1835,1836,5,95,0,0,1836,1837,3,119,59,0,1837,1838,3,127,63,0,1838,1839,3,95,47,0,1839,1840,3,121,60,0,1840,1841,3,135,67,0,1841,400,1,0,0,0,1842,1843,3,105,52,0,1843,1844,3,123,61,0,1844,1845,3,115,57,0,1845,1846,3,113,56,0,1846,1847,5,95,0,0,1847,1848,3,129,64,0,1848,1849,3,87,43,0,1849,1850,3,109,54,0,1850,1851,3,127,63,0,1851,1852,3,95,47,0,1852,402,1,0,0,0,1853,1854,3,107,53,0,1854,1855,3,95,47,0,1855,1856,3,135,67,0,1856,404,1,0,0,0,1857,1858,3,109,54,0,1858,1859,3,87,43,0,1859,1860,3,123,61,0,1860,1861,3,125,62,0,1861,406,1,0,0,0,1862,1863,3,109,54,0,1863,1864,3,95,47,0,1864,1865,3,97,48,0,1865,1866,3,125,62,0,1866,408,1,0,0,0,1867,1868,3,109,54,0,1868,1869,3,95,47,0,1869,1870,3,99,49,0,1870,1871,3,87,43,0,1871,1872,3,91,45,0,1872,1873,3,135,67,0,1873,410,1,0,0,0,1874,1875,3,109,54,0,1875,1876,3,103,51,0,1876,1877,3,107,53,0,1877,1878,3,95,47,0,1878,412,1,0,0,0,1879,1880,3,109,54,0,1880,1881,3,103,51,0,1881,1882,3,111,55,0,1882,1883,3,103,51,0,1883,1884,3,125,62,0,1884,414,1,0,0,0,1885,1886,3,109,54,0,1886,1887,3,103,51,0,1887,1888,3,123,61,0,1888,1889,3,125,62,0,1889,416,1,0,0,0,1890,1891,3,109,54,0,1891,1892,3,115,57,0,1892,1893,3,91,45,0,1893,1894,3,87,43,0,1894,1895,3,109,54,0,1895,418,1,0,0,0,1896,1897,3,111,55,0,1897,1898,3,87,43,0,1898,1899,3,113,56,0,1899,1900,3,87,43,0,1900,1901,3,99,49,0,1901,1902,3,95,47,0,1902,420,1,0,0,0,1903,1904,3,111,55,0,1904,1905,3,87,43,0,1905,1906,3,125,62,0,1906,1907,3,91,45,0,1907,1908,3,101,50,0,1908,422,1,0,0,0,1909,1910,3,111,55,0,1910,1911,3,87,43,0,1911,1912,3,125,62,0,1912,1913,3,91,45,0,1913,1914,3,101,50,0,1914,1915,3,95,47,0,1915,1916,3,123,61,0,1916,424,1,0,0,0,1917,1918,3,111,55,0,1918,1919,3,87,43,0,1919,1920,3,125,62,0,1920,1921,3,91,45,0,1921,1922,3,101,50,0,1922,1923,5,95,0,0,1923,1924,3,121,60,0,1924,1925,3,95,47,0,1925,1926,3,91,45,0,1926,1927,3,115,57,0,1927,1928,3,99,49,0,1928,1929,3,113,56,0,1929,1930,3,103,51,0,1930,1931,3,137,68,0,1931,1932,3,95,47,0,1932,426,1,0,0,0,1933,1934,3,111,55,0,1934,1935,3,95,47,0,1935,1936,3,87,43,0,1936,1937,3,123,61,0,1937,1938,3,127,63,0,1938,1939,3,121,60,0,1939,1940,3,95,47,0,1940,1941,3,123,61,0,1941,428,1,0,0,0,1942,1943,3,111,55,0,1943,1944,3,103,51,0,1944,1945,3,91,45,0,1945,1946,3,121,60,0,1946,1947,3,115,57,0,1947,1948,3,123,61,0,1948,1949,3,95,47,0,1949,1950,3,91,45,0,1950,1951,3,115,57,0,1951,1952,3,113,56,0,1952,1953,3,93,46,0,1953,1954,3,123,61,0,1954,430,1,0,0,0,1955,1956,3,111,55,0,1956,1957,3,103,51,0,1957,1958,3,109,54,0,1958,1959,3,109,54,0,1959,1960,3,103,51,0,1960,1961,3,123,61,0,1961,1962,3,95,47,0,1962,1963,3,91,45,0,1963,1964,3,115,57,0,1964,1965,3,113,56,0,1965,1966,3,93,46,0,1966,1967,3,123,61,0,1967,432,1,0,0,0,1968,1969,3,111,55,0,1969,1970,3,115,57,0,1970,1971,3,93,46,0,1971,1972,3,103,51,0,1972,1973,3,97,48,0,1973,1974,3,135,67,0,1974,434,1,0,0,0,1975,1976,3,113,56,0,1976,1977,3,87,43,0,1977,1978,3,113,56,0,1978,1979,3,115,57,0,1979,1980,3,123,61,0,1980,1981,3,95,47,0,1981,1982,3,91,45,0,1982,1983,3,115,57,0,1983,1984,3,113,56,0,1984,1985,3,93,46,0,1985,1986,3,123,61,0,1986,436,1,0,0,0,1987,1988,3,113,56,0,1988,1989,3,87,43,0,1989,1990,3,125,62,0,1990,1991,3,127,63,0,1991,1992,3,121,60,0,1992,1993,3,87,43,0,1993,1994,3,109,54,0,1994,438,1,0,0,0,1995,1996,3,113,56,0,1996,1997,3,95,47,0,1997,1998,3,133,66,0,1998,1999,3,125,62,0,1999,440,1,0,0,0,2e3,2001,3,113,56,0,2001,2002,3,115,57,0,2002,442,1,0,0,0,2003,2004,3,113,56,0,2004,2005,3,115,57,0,2005,2006,3,125,62,0,2006,444,1,0,0,0,2007,2008,3,113,56,0,2008,2009,3,115,57,0,2009,2010,3,125,62,0,2010,2011,3,113,56,0,2011,2012,3,127,63,0,2012,2013,3,109,54,0,2013,2014,3,109,54,0,2014,446,1,0,0,0,2015,2016,3,113,56,0,2016,2017,3,127,63,0,2017,2018,3,109,54,0,2018,2019,3,109,54,0,2019,448,1,0,0,0,2020,2021,3,113,56,0,2021,2022,3,127,63,0,2022,2023,3,109,54,0,2023,2024,3,109,54,0,2024,2025,3,123,61,0,2025,450,1,0,0,0,2026,2027,3,115,57,0,2027,2028,3,89,44,0,2028,2029,3,105,52,0,2029,2030,3,95,47,0,2030,2031,3,91,45,0,2031,2032,3,125,62,0,2032,452,1,0,0,0,2033,2034,3,115,57,0,2034,2035,3,97,48,0,2035,454,1,0,0,0,2036,2037,3,115,57,0,2037,2038,3,97,48,0,2038,2039,3,97,48,0,2039,2040,3,123,61,0,2040,2041,3,95,47,0,2041,2042,3,125,62,0,2042,456,1,0,0,0,2043,2044,3,115,57,0,2044,2045,3,111,55,0,2045,2046,3,103,51,0,2046,2047,3,125,62,0,2047,458,1,0,0,0,2048,2049,3,115,57,0,2049,2050,3,113,56,0,2050,460,1,0,0,0,2051,2052,3,115,57,0,2052,2053,3,113,56,0,2053,2054,3,95,47,0,2054,462,1,0,0,0,2055,2056,3,115,57,0,2056,2057,3,113,56,0,2057,2058,3,109,54,0,2058,2059,3,135,67,0,2059,464,1,0,0,0,2060,2061,3,115,57,0,2061,2062,3,117,58,0,2062,2063,3,125,62,0,2063,2064,3,103,51,0,2064,2065,3,115,57,0,2065,2066,3,113,56,0,2066,466,1,0,0,0,2067,2068,3,115,57,0,2068,2069,3,117,58,0,2069,2070,3,125,62,0,2070,2071,3,103,51,0,2071,2072,3,115,57,0,2072,2073,3,113,56,0,2073,2074,3,87,43,0,2074,2075,3,109,54,0,2075,468,1,0,0,0,2076,2077,3,115,57,0,2077,2078,3,121,60,0,2078,470,1,0,0,0,2079,2080,3,115,57,0,2080,2081,3,121,60,0,2081,2082,3,93,46,0,2082,2083,3,95,47,0,2083,2084,3,121,60,0,2084,472,1,0,0,0,2085,2086,3,115,57,0,2086,2087,3,125,62,0,2087,2088,3,101,50,0,2088,2089,3,95,47,0,2089,2090,3,121,60,0,2090,2091,3,123,61,0,2091,474,1,0,0,0,2092,2093,3,115,57,0,2093,2094,3,127,63,0,2094,2095,3,125,62,0,2095,2096,3,95,47,0,2096,2097,3,121,60,0,2097,476,1,0,0,0,2098,2099,3,115,57,0,2099,2100,3,129,64,0,2100,2101,3,95,47,0,2101,2102,3,121,60,0,2102,478,1,0,0,0,2103,2104,3,117,58,0,2104,2105,3,87,43,0,2105,2106,3,121,60,0,2106,2107,3,87,43,0,2107,2108,3,109,54,0,2108,2109,3,109,54,0,2109,2110,3,95,47,0,2110,2111,3,109,54,0,2111,480,1,0,0,0,2112,2113,3,117,58,0,2113,2114,3,87,43,0,2114,2115,3,121,60,0,2115,2116,3,125,62,0,2116,2117,3,103,51,0,2117,2118,3,125,62,0,2118,2119,3,103,51,0,2119,2120,3,115,57,0,2120,2121,3,113,56,0,2121,482,1,0,0,0,2122,2123,3,117,58,0,2123,2124,3,87,43,0,2124,2125,3,123,61,0,2125,2126,3,123,61,0,2126,2127,3,103,51,0,2127,2128,3,113,56,0,2128,2129,3,99,49,0,2129,484,1,0,0,0,2130,2131,3,117,58,0,2131,2132,3,87,43,0,2132,2133,3,123,61,0,2133,2134,3,123,61,0,2134,2135,3,131,65,0,2135,2136,3,115,57,0,2136,2137,3,121,60,0,2137,2138,3,93,46,0,2138,486,1,0,0,0,2139,2140,3,117,58,0,2140,2141,3,87,43,0,2141,2142,3,123,61,0,2142,2143,3,125,62,0,2143,488,1,0,0,0,2144,2145,3,117,58,0,2145,2146,3,87,43,0,2146,2147,3,125,62,0,2147,2148,3,125,62,0,2148,2149,3,95,47,0,2149,2150,3,121,60,0,2150,2151,3,113,56,0,2151,490,1,0,0,0,2152,2153,3,117,58,0,2153,2154,3,95,47,0,2154,2155,3,121,60,0,2155,492,1,0,0,0,2156,2157,3,117,58,0,2157,2158,3,95,47,0,2158,2159,3,121,60,0,2159,2160,3,111,55,0,2160,2161,3,127,63,0,2161,2162,3,125,62,0,2162,2163,3,95,47,0,2163,494,1,0,0,0,2164,2165,3,117,58,0,2165,2166,3,109,54,0,2166,2167,3,87,43,0,2167,2168,3,113,56,0,2168,496,1,0,0,0,2169,2170,3,117,58,0,2170,2171,3,121,60,0,2171,2172,3,87,43,0,2172,2173,3,99,49,0,2173,2174,3,111,55,0,2174,2175,3,87,43,0,2175,498,1,0,0,0,2176,2177,3,117,58,0,2177,2178,3,121,60,0,2178,2179,3,95,47,0,2179,2180,3,91,45,0,2180,2181,3,95,47,0,2181,2182,3,93,46,0,2182,2183,3,103,51,0,2183,2184,3,113,56,0,2184,2185,3,99,49,0,2185,500,1,0,0,0,2186,2187,3,117,58,0,2187,2188,3,121,60,0,2188,2189,3,95,47,0,2189,2190,3,123,61,0,2190,2191,3,115,57,0,2191,2192,3,121,60,0,2192,2193,3,125,62,0,2193,502,1,0,0,0,2194,2195,3,117,58,0,2195,2196,3,121,60,0,2196,2197,3,103,51,0,2197,2198,3,111,55,0,2198,2199,3,87,43,0,2199,2200,3,121,60,0,2200,2201,3,135,67,0,2201,504,1,0,0,0,2202,2203,3,117,58,0,2203,2204,3,121,60,0,2204,2205,3,103,51,0,2205,2206,3,129,64,0,2206,2207,3,103,51,0,2207,2208,3,109,54,0,2208,2209,3,95,47,0,2209,2210,3,99,49,0,2210,2211,3,95,47,0,2211,2212,3,123,61,0,2212,506,1,0,0,0,2213,2214,3,117,58,0,2214,2215,3,121,60,0,2215,2216,3,115,57,0,2216,2217,3,91,45,0,2217,2218,3,95,47,0,2218,2219,3,123,61,0,2219,2220,3,123,61,0,2220,508,1,0,0,0,2221,2222,3,119,59,0,2222,2223,3,127,63,0,2223,2224,3,95,47,0,2224,2225,3,127,63,0,2225,2226,3,95,47,0,2226,510,1,0,0,0,2227,2228,3,121,60,0,2228,2229,3,87,43,0,2229,2230,3,103,51,0,2230,2231,3,123,61,0,2231,2232,3,95,47,0,2232,512,1,0,0,0,2233,2234,3,121,60,0,2234,2235,3,87,43,0,2235,2236,3,113,56,0,2236,2237,3,99,49,0,2237,2238,3,95,47,0,2238,514,1,0,0,0,2239,2240,3,121,60,0,2240,2241,3,95,47,0,2241,2242,3,93,46,0,2242,2243,3,127,63,0,2243,2244,3,91,45,0,2244,2245,3,95,47,0,2245,516,1,0,0,0,2246,2247,3,121,60,0,2247,2248,3,95,47,0,2248,2249,3,97,48,0,2249,2250,3,95,47,0,2250,2251,3,121,60,0,2251,2252,3,95,47,0,2252,2253,3,113,56,0,2253,2254,3,91,45,0,2254,2255,3,95,47,0,2255,2256,3,123,61,0,2256,518,1,0,0,0,2257,2258,3,121,60,0,2258,2259,3,95,47,0,2259,2260,3,99,49,0,2260,2261,3,95,47,0,2261,2262,3,133,66,0,2262,2263,3,117,58,0,2263,520,1,0,0,0,2264,2265,3,121,60,0,2265,2266,3,95,47,0,2266,2267,3,103,51,0,2267,2268,3,113,56,0,2268,2269,3,93,46,0,2269,2270,3,95,47,0,2270,2271,3,133,66,0,2271,522,1,0,0,0,2272,2273,3,121,60,0,2273,2274,3,95,47,0,2274,2275,3,109,54,0,2275,2276,3,95,47,0,2276,2277,3,87,43,0,2277,2278,3,123,61,0,2278,2279,3,95,47,0,2279,524,1,0,0,0,2280,2281,3,121,60,0,2281,2282,3,95,47,0,2282,2283,3,111,55,0,2283,2284,3,115,57,0,2284,2285,3,129,64,0,2285,2286,3,95,47,0,2286,526,1,0,0,0,2287,2288,3,121,60,0,2288,2289,3,95,47,0,2289,2290,3,113,56,0,2290,2291,3,87,43,0,2291,2292,3,111,55,0,2292,2293,3,95,47,0,2293,528,1,0,0,0,2294,2295,3,121,60,0,2295,2296,3,95,47,0,2296,2297,3,117,58,0,2297,2298,3,95,47,0,2298,2299,3,87,43,0,2299,2300,3,125,62,0,2300,2301,3,87,43,0,2301,2302,3,89,44,0,2302,2303,3,109,54,0,2303,2304,3,95,47,0,2304,530,1,0,0,0,2305,2306,3,121,60,0,2306,2307,3,95,47,0,2307,2308,3,117,58,0,2308,2309,3,109,54,0,2309,2310,3,87,43,0,2310,2311,3,91,45,0,2311,2312,3,95,47,0,2312,532,1,0,0,0,2313,2314,3,121,60,0,2314,2315,3,95,47,0,2315,2316,3,117,58,0,2316,2317,3,109,54,0,2317,2318,3,103,51,0,2318,2319,3,91,45,0,2319,2320,3,87,43,0,2320,2321,3,125,62,0,2321,2322,3,103,51,0,2322,2323,3,115,57,0,2323,2324,3,113,56,0,2324,534,1,0,0,0,2325,2326,3,121,60,0,2326,2327,3,95,47,0,2327,2328,3,123,61,0,2328,2329,3,95,47,0,2329,2330,3,125,62,0,2330,536,1,0,0,0,2331,2332,3,121,60,0,2332,2333,3,95,47,0,2333,2334,3,123,61,0,2334,2335,3,115,57,0,2335,2336,3,127,63,0,2336,2337,3,121,60,0,2337,2338,3,91,45,0,2338,2339,3,95,47,0,2339,538,1,0,0,0,2340,2341,3,121,60,0,2341,2342,3,95,47,0,2342,2343,3,123,61,0,2343,2344,3,117,58,0,2344,2345,3,95,47,0,2345,2346,3,91,45,0,2346,2347,3,125,62,0,2347,540,1,0,0,0,2348,2349,3,121,60,0,2349,2350,3,95,47,0,2350,2351,3,123,61,0,2351,2352,3,125,62,0,2352,2353,3,121,60,0,2353,2354,3,103,51,0,2354,2355,3,91,45,0,2355,2356,3,125,62,0,2356,542,1,0,0,0,2357,2358,3,121,60,0,2358,2359,3,95,47,0,2359,2360,3,123,61,0,2360,2361,3,127,63,0,2361,2362,3,109,54,0,2362,2363,3,125,62,0,2363,544,1,0,0,0,2364,2365,3,121,60,0,2365,2366,3,95,47,0,2366,2367,3,125,62,0,2367,2368,3,127,63,0,2368,2369,3,121,60,0,2369,2370,3,113,56,0,2370,546,1,0,0,0,2371,2372,3,121,60,0,2372,2373,3,95,47,0,2373,2374,3,125,62,0,2374,2375,3,127,63,0,2375,2376,3,121,60,0,2376,2377,3,113,56,0,2377,2378,3,103,51,0,2378,2379,3,113,56,0,2379,2380,3,99,49,0,2380,548,1,0,0,0,2381,2382,3,121,60,0,2382,2383,3,95,47,0,2383,2384,3,129,64,0,2384,2385,3,95,47,0,2385,2386,3,121,60,0,2386,2387,3,125,62,0,2387,550,1,0,0,0,2388,2389,3,121,60,0,2389,2390,3,95,47,0,2390,2391,3,129,64,0,2391,2392,3,115,57,0,2392,2393,3,107,53,0,2393,2394,3,95,47,0,2394,552,1,0,0,0,2395,2396,3,121,60,0,2396,2397,3,103,51,0,2397,2398,3,99,49,0,2398,2399,3,101,50,0,2399,2400,3,125,62,0,2400,554,1,0,0,0,2401,2402,3,121,60,0,2402,2403,3,109,54,0,2403,2404,3,103,51,0,2404,2405,3,107,53,0,2405,2406,3,95,47,0,2406,556,1,0,0,0,2407,2408,3,121,60,0,2408,2409,3,115,57,0,2409,2410,3,109,54,0,2410,2411,3,109,54,0,2411,2412,3,89,44,0,2412,2413,3,87,43,0,2413,2414,3,91,45,0,2414,2415,3,107,53,0,2415,558,1,0,0,0,2416,2417,3,121,60,0,2417,2418,3,115,57,0,2418,2419,3,109,54,0,2419,2420,3,109,54,0,2420,2421,3,127,63,0,2421,2422,3,117,58,0,2422,560,1,0,0,0,2423,2424,3,121,60,0,2424,2425,3,115,57,0,2425,2426,3,131,65,0,2426,562,1,0,0,0,2427,2428,3,121,60,0,2428,2429,3,115,57,0,2429,2430,3,131,65,0,2430,2431,3,123,61,0,2431,564,1,0,0,0,2432,2433,3,123,61,0,2433,2434,3,87,43,0,2434,2435,3,111,55,0,2435,2436,3,117,58,0,2436,2437,3,109,54,0,2437,2438,3,95,47,0,2438,566,1,0,0,0,2439,2440,3,123,61,0,2440,2441,3,87,43,0,2441,2442,3,129,64,0,2442,2443,3,95,47,0,2443,2444,3,117,58,0,2444,2445,3,115,57,0,2445,2446,3,103,51,0,2446,2447,3,113,56,0,2447,2448,3,125,62,0,2448,568,1,0,0,0,2449,2450,3,123,61,0,2450,2451,3,91,45,0,2451,2452,3,101,50,0,2452,2453,3,95,47,0,2453,2454,3,111,55,0,2454,2455,3,87,43,0,2455,570,1,0,0,0,2456,2457,3,123,61,0,2457,2458,3,95,47,0,2458,2459,3,91,45,0,2459,2460,3,115,57,0,2460,2461,3,113,56,0,2461,2462,3,93,46,0,2462,2463,3,123,61,0,2463,572,1,0,0,0,2464,2465,3,123,61,0,2465,2466,3,95,47,0,2466,2467,3,95,47,0,2467,2468,3,107,53,0,2468,574,1,0,0,0,2469,2470,3,123,61,0,2470,2471,3,95,47,0,2471,2472,3,109,54,0,2472,2473,3,95,47,0,2473,2474,3,91,45,0,2474,2475,3,125,62,0,2475,576,1,0,0,0,2476,2477,3,123,61,0,2477,2478,3,95,47,0,2478,2479,3,111,55,0,2479,2480,3,103,51,0,2480,578,1,0,0,0,2481,2482,3,123,61,0,2482,2483,3,95,47,0,2483,2484,3,125,62,0,2484,580,1,0,0,0,2485,2486,3,123,61,0,2486,2487,3,95,47,0,2487,2488,3,125,62,0,2488,2489,3,123,61,0,2489,582,1,0,0,0,2490,2491,3,123,61,0,2491,2492,3,101,50,0,2492,2493,3,115,57,0,2493,2494,3,131,65,0,2494,584,1,0,0,0,2495,2496,3,123,61,0,2496,2497,3,107,53,0,2497,2498,3,103,51,0,2498,2499,3,117,58,0,2499,586,1,0,0,0,2500,2501,3,123,61,0,2501,2502,3,115,57,0,2502,2503,3,127,63,0,2503,2504,3,121,60,0,2504,2505,3,91,45,0,2505,2506,3,95,47,0,2506,588,1,0,0,0,2507,2508,3,123,61,0,2508,2509,3,125,62,0,2509,2510,3,121,60,0,2510,2511,3,95,47,0,2511,2512,3,87,43,0,2512,2513,3,111,55,0,2513,590,1,0,0,0,2514,2515,3,123,61,0,2515,2516,3,125,62,0,2516,2517,3,121,60,0,2517,2518,3,127,63,0,2518,2519,3,91,45,0,2519,2520,3,125,62,0,2520,592,1,0,0,0,2521,2522,3,123,61,0,2522,2523,3,127,63,0,2523,2524,3,89,44,0,2524,2525,3,119,59,0,2525,2526,3,127,63,0,2526,2527,3,95,47,0,2527,2528,3,121,60,0,2528,2529,3,135,67,0,2529,594,1,0,0,0,2530,2531,3,123,61,0,2531,2532,3,127,63,0,2532,2533,3,89,44,0,2533,2534,3,123,61,0,2534,2535,3,95,47,0,2535,2536,3,125,62,0,2536,596,1,0,0,0,2537,2538,3,123,61,0,2538,2539,3,135,67,0,2539,2540,3,111,55,0,2540,2541,3,89,44,0,2541,2542,3,115,57,0,2542,2543,3,109,54,0,2543,2544,3,123,61,0,2544,598,1,0,0,0,2545,2546,3,123,61,0,2546,2547,3,135,67,0,2547,2548,3,111,55,0,2548,2549,3,111,55,0,2549,2550,3,95,47,0,2550,2551,3,125,62,0,2551,2552,3,121,60,0,2552,2553,3,103,51,0,2553,2554,3,91,45,0,2554,600,1,0,0,0,2555,2556,3,123,61,0,2556,2557,3,135,67,0,2557,2558,3,113,56,0,2558,2559,3,91,45,0,2559,602,1,0,0,0,2560,2561,3,123,61,0,2561,2562,3,135,67,0,2562,2563,3,123,61,0,2563,2564,3,125,62,0,2564,2565,3,95,47,0,2565,2566,3,111,55,0,2566,604,1,0,0,0,2567,2568,3,125,62,0,2568,2569,3,87,43,0,2569,2570,3,89,44,0,2570,2571,3,109,54,0,2571,2572,3,95,47,0,2572,606,1,0,0,0,2573,2574,3,125,62,0,2574,2575,3,87,43,0,2575,2576,3,89,44,0,2576,2577,3,109,54,0,2577,2578,3,95,47,0,2578,2579,3,123,61,0,2579,608,1,0,0,0,2580,2581,3,125,62,0,2581,2582,3,87,43,0,2582,2583,3,89,44,0,2583,2584,3,109,54,0,2584,2585,3,95,47,0,2585,2586,3,123,61,0,2586,2587,3,87,43,0,2587,2588,3,111,55,0,2588,2589,3,117,58,0,2589,2590,3,109,54,0,2590,2591,3,95,47,0,2591,610,1,0,0,0,2592,2593,3,125,62,0,2593,2594,3,87,43,0,2594,2595,3,89,44,0,2595,2596,3,109,54,0,2596,2597,3,95,47,0,2597,2598,3,123,61,0,2598,2599,3,125,62,0,2599,2600,3,115,57,0,2600,2601,3,121,60,0,2601,2602,3,95,47,0,2602,612,1,0,0,0,2603,2604,3,125,62,0,2604,2605,3,87,43,0,2605,2606,3,99,49,0,2606,2607,3,99,49,0,2607,2608,3,95,47,0,2608,2609,3,93,46,0,2609,614,1,0,0,0,2610,2611,3,125,62,0,2611,2612,3,95,47,0,2612,2613,3,111,55,0,2613,2614,3,117,58,0,2614,616,1,0,0,0,2615,2616,3,125,62,0,2616,2617,3,95,47,0,2617,2618,3,111,55,0,2618,2619,3,117,58,0,2619,2620,3,115,57,0,2620,2621,3,121,60,0,2621,2622,3,87,43,0,2622,2623,3,121,60,0,2623,2624,3,135,67,0,2624,618,1,0,0,0,2625,2626,3,125,62,0,2626,2627,3,101,50,0,2627,2628,3,95,47,0,2628,2629,3,113,56,0,2629,620,1,0,0,0,2630,2631,3,125,62,0,2631,2632,3,103,51,0,2632,2633,3,95,47,0,2633,2634,3,123,61,0,2634,622,1,0,0,0,2635,2636,3,125,62,0,2636,2637,3,115,57,0,2637,624,1,0,0,0,2638,2639,3,125,62,0,2639,2640,3,115,57,0,2640,2641,3,117,58,0,2641,2642,3,103,51,0,2642,2643,3,91,45,0,2643,626,1,0,0,0,2644,2645,3,125,62,0,2645,2646,3,121,60,0,2646,2647,3,87,43,0,2647,2648,3,113,56,0,2648,2649,3,123,61,0,2649,2650,3,87,43,0,2650,2651,3,91,45,0,2651,2652,3,125,62,0,2652,2653,3,103,51,0,2653,2654,3,115,57,0,2654,2655,3,113,56,0,2655,628,1,0,0,0,2656,2657,3,125,62,0,2657,2658,3,121,60,0,2658,2659,3,103,51,0,2659,2660,3,99,49,0,2660,2661,3,99,49,0,2661,2662,3,95,47,0,2662,2663,3,121,60,0,2663,630,1,0,0,0,2664,2665,3,125,62,0,2665,2666,3,121,60,0,2666,2667,3,127,63,0,2667,2668,3,95,47,0,2668,632,1,0,0,0,2669,2670,3,125,62,0,2670,2671,3,127,63,0,2671,2672,3,117,58,0,2672,2673,3,109,54,0,2673,2674,3,95,47,0,2674,634,1,0,0,0,2675,2676,3,125,62,0,2676,2677,3,135,67,0,2677,2678,3,117,58,0,2678,2679,3,95,47,0,2679,636,1,0,0,0,2680,2681,3,127,63,0,2681,2682,3,113,56,0,2682,2683,3,89,44,0,2683,2684,3,115,57,0,2684,2685,3,127,63,0,2685,2686,3,113,56,0,2686,2687,3,93,46,0,2687,2688,3,95,47,0,2688,2689,3,93,46,0,2689,638,1,0,0,0,2690,2691,3,127,63,0,2691,2692,3,113,56,0,2692,2693,3,91,45,0,2693,2694,3,115,57,0,2694,2695,3,113,56,0,2695,2696,3,93,46,0,2696,2697,3,103,51,0,2697,2698,3,125,62,0,2698,2699,3,103,51,0,2699,2700,3,115,57,0,2700,2701,3,113,56,0,2701,2702,3,87,43,0,2702,2703,3,109,54,0,2703,640,1,0,0,0,2704,2705,3,127,63,0,2705,2706,3,113,56,0,2706,2707,3,103,51,0,2707,2708,3,115,57,0,2708,2709,3,113,56,0,2709,642,1,0,0,0,2710,2711,3,127,63,0,2711,2712,3,113,56,0,2712,2713,3,103,51,0,2713,2714,3,119,59,0,2714,2715,3,127,63,0,2715,2716,3,95,47,0,2716,644,1,0,0,0,2717,2718,3,127,63,0,2718,2719,3,113,56,0,2719,2720,3,107,53,0,2720,2721,3,113,56,0,2721,2722,3,115,57,0,2722,2723,3,131,65,0,2723,2724,3,113,56,0,2724,646,1,0,0,0,2725,2726,3,127,63,0,2726,2727,3,113,56,0,2727,2728,3,111,55,0,2728,2729,3,87,43,0,2729,2730,3,125,62,0,2730,2731,3,91,45,0,2731,2732,3,101,50,0,2732,2733,3,95,47,0,2733,2734,3,93,46,0,2734,648,1,0,0,0,2735,2736,3,127,63,0,2736,2737,3,117,58,0,2737,2738,3,93,46,0,2738,2739,3,87,43,0,2739,2740,3,125,62,0,2740,2741,3,95,47,0,2741,650,1,0,0,0,2742,2743,3,127,63,0,2743,2744,3,117,58,0,2744,2745,3,123,61,0,2745,2746,3,95,47,0,2746,2747,3,121,60,0,2747,2748,3,125,62,0,2748,652,1,0,0,0,2749,2750,3,127,63,0,2750,2751,3,123,61,0,2751,2752,3,95,47,0,2752,654,1,0,0,0,2753,2754,3,127,63,0,2754,2755,3,123,61,0,2755,2756,3,95,47,0,2756,2757,3,121,60,0,2757,656,1,0,0,0,2758,2759,3,127,63,0,2759,2760,3,123,61,0,2760,2761,3,103,51,0,2761,2762,3,113,56,0,2762,2763,3,99,49,0,2763,658,1,0,0,0,2764,2765,3,129,64,0,2765,2766,3,87,43,0,2766,2767,3,91,45,0,2767,2768,3,127,63,0,2768,2769,3,127,63,0,2769,2770,3,111,55,0,2770,660,1,0,0,0,2771,2772,3,129,64,0,2772,2773,3,87,43,0,2773,2774,3,109,54,0,2774,2775,3,127,63,0,2775,2776,3,95,47,0,2776,2777,3,123,61,0,2777,662,1,0,0,0,2778,2779,3,129,64,0,2779,2780,3,87,43,0,2780,2781,3,121,60,0,2781,2782,3,103,51,0,2782,2783,3,87,43,0,2783,2784,3,113,56,0,2784,2785,3,125,62,0,2785,664,1,0,0,0,2786,2787,3,129,64,0,2787,2788,3,103,51,0,2788,2789,3,95,47,0,2789,2790,3,131,65,0,2790,666,1,0,0,0,2791,2792,3,129,64,0,2792,2793,3,103,51,0,2793,2794,3,121,60,0,2794,2795,3,125,62,0,2795,2796,3,127,63,0,2796,2797,3,87,43,0,2797,2798,3,109,54,0,2798,668,1,0,0,0,2799,2800,3,131,65,0,2800,2801,3,101,50,0,2801,2802,3,95,47,0,2802,2803,3,113,56,0,2803,670,1,0,0,0,2804,2805,3,131,65,0,2805,2806,3,101,50,0,2806,2807,3,95,47,0,2807,2808,3,121,60,0,2808,2809,3,95,47,0,2809,672,1,0,0,0,2810,2811,3,131,65,0,2811,2812,3,103,51,0,2812,2813,3,113,56,0,2813,2814,3,93,46,0,2814,2815,3,115,57,0,2815,2816,3,131,65,0,2816,674,1,0,0,0,2817,2818,3,131,65,0,2818,2819,3,103,51,0,2819,2820,3,125,62,0,2820,2821,3,101,50,0,2821,676,1,0,0,0,2822,2823,3,131,65,0,2823,2824,3,103,51,0,2824,2825,3,125,62,0,2825,2826,3,101,50,0,2826,2827,3,115,57,0,2827,2828,3,127,63,0,2828,2829,3,125,62,0,2829,678,1,0,0,0,2830,2831,3,131,65,0,2831,2832,3,121,60,0,2832,2833,3,87,43,0,2833,2834,3,117,58,0,2834,2835,3,117,58,0,2835,2836,3,95,47,0,2836,2837,3,121,60,0,2837,680,1,0,0,0,2838,2839,3,133,66,0,2839,2840,3,115,57,0,2840,2841,3,121,60,0,2841,682,1,0,0,0,2842,2847,8,26,0,0,2843,2844,3,43,21,0,2844,2845,9,0,0,0,2845,2847,1,0,0,0,2846,2842,1,0,0,0,2846,2843,1,0,0,0,2847,684,1,0,0,0,2848,2853,8,27,0,0,2849,2850,3,43,21,0,2850,2851,9,0,0,0,2851,2853,1,0,0,0,2852,2848,1,0,0,0,2852,2849,1,0,0,0,2853,686,1,0,0,0,2854,2858,3,69,34,0,2855,2857,3,683,341,0,2856,2855,1,0,0,0,2857,2860,1,0,0,0,2858,2856,1,0,0,0,2858,2859,1,0,0,0,2859,2861,1,0,0,0,2860,2858,1,0,0,0,2861,2862,3,69,34,0,2862,688,1,0,0,0,2863,2867,3,67,33,0,2864,2866,3,685,342,0,2865,2864,1,0,0,0,2866,2869,1,0,0,0,2867,2865,1,0,0,0,2867,2868,1,0,0,0,2868,2870,1,0,0,0,2869,2867,1,0,0,0,2870,2871,3,67,33,0,2871,690,1,0,0,0,2872,2876,3,63,31,0,2873,2875,9,0,0,0,2874,2873,1,0,0,0,2875,2878,1,0,0,0,2876,2877,1,0,0,0,2876,2874,1,0,0,0,2877,2879,1,0,0,0,2878,2876,1,0,0,0,2879,2880,3,63,31,0,2880,2882,1,0,0,0,2881,2872,1,0,0,0,2882,2883,1,0,0,0,2883,2881,1,0,0,0,2883,2884,1,0,0,0,2884,2886,1,0,0,0,2885,2887,3,61,30,0,2886,2885,1,0,0,0,2886,2887,1,0,0,0,2887,692,1,0,0,0,2888,2892,3,687,343,0,2889,2892,3,689,344,0,2890,2892,3,691,345,0,2891,2888,1,0,0,0,2891,2889,1,0,0,0,2891,2890,1,0,0,0,2892,2903,1,0,0,0,2893,2904,3,123,61,0,2894,2904,3,127,63,0,2895,2904,3,135,67,0,2896,2904,3,105,52,0,2897,2901,3,117,58,0,2898,2902,3,125,62,0,2899,2902,3,89,44,0,2900,2902,3,129,64,0,2901,2898,1,0,0,0,2901,2899,1,0,0,0,2901,2900,1,0,0,0,2901,2902,1,0,0,0,2902,2904,1,0,0,0,2903,2893,1,0,0,0,2903,2894,1,0,0,0,2903,2895,1,0,0,0,2903,2896,1,0,0,0,2903,2897,1,0,0,0,2903,2904,1,0,0,0,2904,694,1,0,0,0,2905,2910,7,28,0,0,2906,2909,7,28,0,0,2907,2909,3,701,350,0,2908,2906,1,0,0,0,2908,2907,1,0,0,0,2909,2912,1,0,0,0,2910,2908,1,0,0,0,2910,2911,1,0,0,0,2911,696,1,0,0,0,2912,2910,1,0,0,0,2913,2914,5,96,0,0,2914,2919,5,96,0,0,2915,2916,5,92,0,0,2916,2919,5,96,0,0,2917,2919,8,29,0,0,2918,2913,1,0,0,0,2918,2915,1,0,0,0,2918,2917,1,0,0,0,2919,698,1,0,0,0,2920,2924,3,71,35,0,2921,2923,3,697,348,0,2922,2921,1,0,0,0,2923,2926,1,0,0,0,2924,2922,1,0,0,0,2924,2925,1,0,0,0,2925,2927,1,0,0,0,2926,2924,1,0,0,0,2927,2928,3,71,35,0,2928,700,1,0,0,0,2929,2930,2,48,57,0,2930,702,1,0,0,0,2931,2932,7,30,0,0,2932,704,1,0,0,0,2933,2934,5,48,0,0,2934,2936,3,133,66,0,2935,2937,3,703,351,0,2936,2935,1,0,0,0,2937,2938,1,0,0,0,2938,2936,1,0,0,0,2938,2939,1,0,0,0,2939,706,1,0,0,0,2940,2941,5,48,0,0,2941,2943,3,115,57,0,2942,2944,2,48,56,0,2943,2942,1,0,0,0,2944,2945,1,0,0,0,2945,2943,1,0,0,0,2945,2946,1,0,0,0,2946,708,1,0,0,0,2947,2948,5,48,0,0,2948,2950,3,89,44,0,2949,2951,2,48,49,0,2950,2949,1,0,0,0,2951,2952,1,0,0,0,2952,2950,1,0,0,0,2952,2953,1,0,0,0,2953,710,1,0,0,0,2954,2956,3,701,350,0,2955,2954,1,0,0,0,2956,2957,1,0,0,0,2957,2955,1,0,0,0,2957,2958,1,0,0,0,2958,712,1,0,0,0,2959,2964,3,711,355,0,2960,2964,3,705,352,0,2961,2964,3,707,353,0,2962,2964,3,709,354,0,2963,2959,1,0,0,0,2963,2960,1,0,0,0,2963,2961,1,0,0,0,2963,2962,1,0,0,0,2964,714,1,0,0,0,2965,2968,3,713,356,0,2966,2969,3,117,58,0,2967,2969,3,127,63,0,2968,2966,1,0,0,0,2968,2967,1,0,0,0,2968,2969,1,0,0,0,2969,2976,1,0,0,0,2970,2977,3,109,54,0,2971,2977,3,123,61,0,2972,2977,3,125,62,0,2973,2977,3,103,51,0,2974,2977,3,89,44,0,2975,2977,3,113,56,0,2976,2970,1,0,0,0,2976,2971,1,0,0,0,2976,2972,1,0,0,0,2976,2973,1,0,0,0,2976,2974,1,0,0,0,2976,2975,1,0,0,0,2976,2977,1,0,0,0,2977,716,1,0,0,0,2978,2981,3,95,47,0,2979,2982,3,33,16,0,2980,2982,3,35,17,0,2981,2979,1,0,0,0,2981,2980,1,0,0,0,2981,2982,1,0,0,0,2982,2983,1,0,0,0,2983,2984,3,711,355,0,2984,718,1,0,0,0,2985,2986,3,711,355,0,2986,2990,3,49,24,0,2987,2989,3,701,350,0,2988,2987,1,0,0,0,2989,2992,1,0,0,0,2990,2988,1,0,0,0,2990,2991,1,0,0,0,2991,2994,1,0,0,0,2992,2990,1,0,0,0,2993,2995,3,717,358,0,2994,2993,1,0,0,0,2994,2995,1,0,0,0,2995,3e3,1,0,0,0,2996,2997,3,711,355,0,2997,2998,3,717,358,0,2998,3e3,1,0,0,0,2999,2985,1,0,0,0,2999,2996,1,0,0,0,3e3,3009,1,0,0,0,3001,3010,3,97,48,0,3002,3007,3,117,58,0,3003,3004,3,97,48,0,3004,3005,7,31,0,0,3005,3008,1,0,0,0,3006,3008,3,113,56,0,3007,3003,1,0,0,0,3007,3006,1,0,0,0,3007,3008,1,0,0,0,3008,3010,1,0,0,0,3009,3001,1,0,0,0,3009,3002,1,0,0,0,3009,3010,1,0,0,0,3010,720,1,0,0,0,3011,3012,3,133,66,0,3012,3014,3,69,34,0,3013,3015,3,703,351,0,3014,3013,1,0,0,0,3015,3016,1,0,0,0,3016,3014,1,0,0,0,3016,3017,1,0,0,0,3017,3018,1,0,0,0,3018,3019,3,69,34,0,3019,722,1,0,0,0,3020,3021,5,47,0,0,3021,3022,5,42,0,0,3022,3026,1,0,0,0,3023,3025,9,0,0,0,3024,3023,1,0,0,0,3025,3028,1,0,0,0,3026,3027,1,0,0,0,3026,3024,1,0,0,0,3027,3029,1,0,0,0,3028,3026,1,0,0,0,3029,3030,5,42,0,0,3030,3031,5,47,0,0,3031,724,1,0,0,0,3032,3033,5,45,0,0,3033,3034,5,45,0,0,3034,3038,1,0,0,0,3035,3037,8,32,0,0,3036,3035,1,0,0,0,3037,3040,1,0,0,0,3038,3036,1,0,0,0,3038,3039,1,0,0,0,3039,3046,1,0,0,0,3040,3038,1,0,0,0,3041,3043,5,13,0,0,3042,3044,5,10,0,0,3043,3042,1,0,0,0,3043,3044,1,0,0,0,3044,3047,1,0,0,0,3045,3047,7,33,0,0,3046,3041,1,0,0,0,3046,3045,1,0,0,0,3047,726,1,0,0,0,3048,3049,7,34,0,0,3049,3050,1,0,0,0,3050,3051,6,363,0,0,3051,728,1,0,0,0,3052,3055,3,723,361,0,3053,3055,3,725,362,0,3054,3052,1,0,0,0,3054,3053,1,0,0,0,3055,3056,1,0,0,0,3056,3057,6,364,1,0,3057,730,1,0,0,0,34,0,2846,2852,2858,2867,2876,2883,2886,2891,2901,2903,2908,2910,2918,2924,2938,2945,2952,2957,2963,2968,2976,2981,2990,2994,2999,3007,3009,3016,3026,3038,3043,3046,3054,2,0,1,0,6,0,0],qi.vocabulary=new Ra(qi.literalNames,qi.symbolicNames,[]),qi.decisionsToDFA=qi._ATN.decisionToState.map(((t,e)=>new ni(t,e))),qi),tf=(ji=class t extends Cc{get grammarFileName(){return"YQL.g4"}get literalNames(){return t.literalNames}get symbolicNames(){return t.symbolicNames}get ruleNames(){return t.ruleNames}get serializedATN(){return t._serializedATN}createFailedPredicateException(t,e){return new Sc(this,t,e)}constructor(e){super(e),this.interpreter=new Ai(this,t._ATN,t.decisionsToDFA,new Si)}sql_query(){let e=new ef(this.context,this.state);this.enterRule(e,0,t.RULE_sql_query);try{switch(this.state=811,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,0,this.context)){case 1:this.enterOuterAlt(e,1),this.state=806,this.sql_stmt_list();break;case 2:this.enterOuterAlt(e,2),this.state=807,this.match(t.PRAGMA),this.state=808,this.match(t.ANSI),this.state=809,this.match(t.DIGITS),this.state=810,this.ansi_sql_stmt_list()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sql_stmt_list(){let e,s=new sf(this.context,this.state);this.enterRule(s,2,t.RULE_sql_stmt_list);try{let a;for(this.enterOuterAlt(s,1),this.state=816,this.errorHandler.sync(this),e=this.tokenStream.LA(1);24===e;)this.state=813,this.match(t.SEMICOLON),this.state=818,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=819,this.sql_stmt(),this.state=828,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,3,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;){if(1===a){this.state=821,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=820,this.match(t.SEMICOLON),this.state=823,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(24===e);this.state=825,this.sql_stmt()}this.state=830,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,3,this.context)}for(this.state=834,this.errorHandler.sync(this),e=this.tokenStream.LA(1);24===e;)this.state=831,this.match(t.SEMICOLON),this.state=836,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=837,this.match(t.EOF)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}ansi_sql_stmt_list(){let e,s=new af(this.context,this.state);this.enterRule(s,4,t.RULE_ansi_sql_stmt_list);try{for(this.enterOuterAlt(s,1),this.state=842,this.errorHandler.sync(this),e=this.tokenStream.LA(1);24===e;)this.state=839,this.match(t.SEMICOLON),this.state=844,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=845,this.match(t.EOF)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}lambda_body(){let e,s=new rf(this.context,this.state);this.enterRule(s,6,t.RULE_lambda_body);try{for(this.enterOuterAlt(s,1),this.state=850,this.errorHandler.sync(this),e=this.tokenStream.LA(1);24===e;)this.state=847,this.match(t.SEMICOLON),this.state=852,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=861,this.errorHandler.sync(this),e=this.tokenStream.LA(1);33===e||158===e;){this.state=853,this.lambda_stmt(),this.state=855,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=854,this.match(t.SEMICOLON),this.state=857,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(24===e);this.state=863,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}for(this.state=864,this.match(t.RETURN),this.state=865,this.expr(),this.state=869,this.errorHandler.sync(this),e=this.tokenStream.LA(1);24===e;)this.state=866,this.match(t.SEMICOLON),this.state=871,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}lambda_stmt(){let e=new cf(this.context,this.state);this.enterRule(e,8,t.RULE_lambda_stmt);try{switch(this.state=874,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DOLLAR:this.enterOuterAlt(e,1),this.state=872,this.named_nodes_stmt();break;case t.IMPORT:this.enterOuterAlt(e,2),this.state=873,this.import_stmt();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sql_stmt(){let e,s=new nf(this.context,this.state);this.enterRule(s,10,t.RULE_sql_stmt);try{this.enterOuterAlt(s,1),this.state=881,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=876,this.match(t.EXPLAIN),this.state=879,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1===e&&(this.state=877,this.match(t.QUERY),this.state=878,this.match(t.PLAN))),this.state=883,this.sql_stmt_core()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sql_stmt_core(){let e=new hf(this.context,this.state);this.enterRule(e,12,t.RULE_sql_stmt_core);try{switch(this.state=929,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,13,this.context)){case 1:this.enterOuterAlt(e,1),this.state=885,this.pragma_stmt();break;case 2:this.enterOuterAlt(e,2),this.state=886,this.select_stmt();break;case 3:this.enterOuterAlt(e,3),this.state=887,this.named_nodes_stmt();break;case 4:this.enterOuterAlt(e,4),this.state=888,this.create_table_stmt();break;case 5:this.enterOuterAlt(e,5),this.state=889,this.drop_table_stmt();break;case 6:this.enterOuterAlt(e,6),this.state=890,this.use_stmt();break;case 7:this.enterOuterAlt(e,7),this.state=891,this.into_table_stmt();break;case 8:this.enterOuterAlt(e,8),this.state=892,this.commit_stmt();break;case 9:this.enterOuterAlt(e,9),this.state=893,this.update_stmt();break;case 10:this.enterOuterAlt(e,10),this.state=894,this.delete_stmt();break;case 11:this.enterOuterAlt(e,11),this.state=895,this.rollback_stmt();break;case 12:this.enterOuterAlt(e,12),this.state=896,this.declare_stmt();break;case 13:this.enterOuterAlt(e,13),this.state=897,this.import_stmt();break;case 14:this.enterOuterAlt(e,14),this.state=898,this.export_stmt();break;case 15:this.enterOuterAlt(e,15),this.state=899,this.alter_table_stmt();break;case 16:this.enterOuterAlt(e,16),this.state=900,this.alter_external_table_stmt();break;case 17:this.enterOuterAlt(e,17),this.state=901,this.do_stmt();break;case 18:this.enterOuterAlt(e,18),this.state=902,this.define_action_or_subquery_stmt();break;case 19:this.enterOuterAlt(e,19),this.state=903,this.if_stmt();break;case 20:this.enterOuterAlt(e,20),this.state=904,this.for_stmt();break;case 21:this.enterOuterAlt(e,21),this.state=905,this.values_stmt();break;case 22:this.enterOuterAlt(e,22),this.state=906,this.create_user_stmt();break;case 23:this.enterOuterAlt(e,23),this.state=907,this.alter_user_stmt();break;case 24:this.enterOuterAlt(e,24),this.state=908,this.create_group_stmt();break;case 25:this.enterOuterAlt(e,25),this.state=909,this.alter_group_stmt();break;case 26:this.enterOuterAlt(e,26),this.state=910,this.drop_role_stmt();break;case 27:this.enterOuterAlt(e,27),this.state=911,this.create_object_stmt();break;case 28:this.enterOuterAlt(e,28),this.state=912,this.alter_object_stmt();break;case 29:this.enterOuterAlt(e,29),this.state=913,this.drop_object_stmt();break;case 30:this.enterOuterAlt(e,30),this.state=914,this.create_external_data_source_stmt();break;case 31:this.enterOuterAlt(e,31),this.state=915,this.alter_external_data_source_stmt();break;case 32:this.enterOuterAlt(e,32),this.state=916,this.drop_external_data_source_stmt();break;case 33:this.enterOuterAlt(e,33),this.state=917,this.create_replication_stmt();break;case 34:this.enterOuterAlt(e,34),this.state=918,this.drop_replication_stmt();break;case 35:this.enterOuterAlt(e,35),this.state=919,this.create_topic_stmt();break;case 36:this.enterOuterAlt(e,36),this.state=920,this.alter_topic_stmt();break;case 37:this.enterOuterAlt(e,37),this.state=921,this.drop_topic_stmt();break;case 38:this.enterOuterAlt(e,38),this.state=922,this.grant_permissions_stmt();break;case 39:this.enterOuterAlt(e,39),this.state=923,this.revoke_permissions_stmt();break;case 40:this.enterOuterAlt(e,40),this.state=924,this.alter_table_store_stmt();break;case 41:this.enterOuterAlt(e,41),this.state=925,this.upsert_object_stmt();break;case 42:this.enterOuterAlt(e,42),this.state=926,this.create_view_stmt();break;case 43:this.enterOuterAlt(e,43),this.state=927,this.drop_view_stmt();break;case 44:this.enterOuterAlt(e,44),this.state=928,this.alter_replication_stmt()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}expr(){let e,s=new Ef(this.context,this.state);this.enterRule(s,14,t.RULE_expr);try{switch(this.state=940,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,15,this.context)){case 1:for(this.enterOuterAlt(s,1),this.state=931,this.or_subexpr(),this.state=936,this.errorHandler.sync(this),e=this.tokenStream.LA(1);209===e;)this.state=932,this.match(t.OR),this.state=933,this.or_subexpr(),this.state=938,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;case 2:this.enterOuterAlt(s,2),this.state=939,this.type_name_composite()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}or_subexpr(){let e,s=new Tf(this.context,this.state);this.enterRule(s,16,t.RULE_or_subexpr);try{for(this.enterOuterAlt(s,1),this.state=942,this.and_subexpr(),this.state=947,this.errorHandler.sync(this),e=this.tokenStream.LA(1);51===e;)this.state=943,this.match(t.AND),this.state=944,this.and_subexpr(),this.state=949,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}and_subexpr(){let e,s=new of(this.context,this.state);this.enterRule(s,18,t.RULE_and_subexpr);try{for(this.enterOuterAlt(s,1),this.state=950,this.xor_subexpr(),this.state=955,this.errorHandler.sync(this),e=this.tokenStream.LA(1);315===e;)this.state=951,this.match(t.XOR),this.state=952,this.xor_subexpr(),this.state=957,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}xor_subexpr(){let e,s=new Rf(this.context,this.state);this.enterRule(s,20,t.RULE_xor_subexpr);try{this.enterOuterAlt(s,1),this.state=958,this.eq_subexpr(),this.state=960,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(-32&e)&&1<<e&60||67===e||!(e-145&-32)&&1<<e-145&100681729||!(e-180&-32)&&1<<e-180&196641||234===e||252===e)&&(this.state=959,this.cond_expr())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}distinct_from_op(){let e,s=new Af(this.context,this.state);this.enterRule(s,22,t.RULE_distinct_from_op);try{this.enterOuterAlt(s,1),this.state=962,this.match(t.IS),this.state=964,this.errorHandler.sync(this),e=this.tokenStream.LA(1),196===e&&(this.state=963,this.match(t.NOT)),this.state=966,this.match(t.DISTINCT),this.state=967,this.match(t.FROM)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}cond_expr(){let e,s=new Sf(this.context,this.state);this.enterRule(s,24,t.RULE_cond_expr);try{switch(this.state=1020,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,30,this.context)){case 1:this.enterOuterAlt(s,1),this.state=970,this.errorHandler.sync(this),e=this.tokenStream.LA(1),196===e&&(this.state=969,this.match(t.NOT)),this.state=972,this.match_op(),this.state=973,this.eq_subexpr(),this.state=976,this.errorHandler.sync(this),e=this.tokenStream.LA(1),122===e&&(this.state=974,this.match(t.ESCAPE),this.state=975,this.eq_subexpr());break;case 2:if(this.enterOuterAlt(s,2),1===(this.state=979,this.errorHandler.sync(this),e=this.tokenStream.LA(1),196===e&&(this.state=978,this.match(t.NOT)),this.state=981,this.match(t.IN),this.state=983,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,23,this.context)))this.state=982,this.match(t.COMPACT);this.state=985,this.in_expr();break;case 3:switch(this.enterOuterAlt(s,3),this.state=995,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,25,this.context)){case 1:this.state=986,this.match(t.ISNULL);break;case 2:this.state=987,this.match(t.NOTNULL);break;case 3:this.state=988,this.match(t.IS),this.state=989,this.match(t.NULL);break;case 4:this.state=991,this.errorHandler.sync(this),e=this.tokenStream.LA(1),170===e&&(this.state=990,this.match(t.IS)),this.state=993,this.match(t.NOT),this.state=994,this.match(t.NULL)}break;case 4:if(this.enterOuterAlt(s,4),1===(this.state=998,this.errorHandler.sync(this),e=this.tokenStream.LA(1),196===e&&(this.state=997,this.match(t.NOT)),this.state=1e3,this.match(t.BETWEEN),this.state=1002,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,27,this.context)))this.state=1001,e=this.tokenStream.LA(1),58===e||274===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);this.state=1004,this.eq_subexpr(),this.state=1005,this.match(t.AND),this.state=1006,this.eq_subexpr();break;case 5:this.enterOuterAlt(s,5),this.state=1016,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{switch(this.state=1013,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EQUALS:this.state=1008,this.match(t.EQUALS);break;case t.EQUALS2:this.state=1009,this.match(t.EQUALS2);break;case t.NOT_EQUALS:this.state=1010,this.match(t.NOT_EQUALS);break;case t.NOT_EQUALS2:this.state=1011,this.match(t.NOT_EQUALS2);break;case t.IS:this.state=1012,this.distinct_from_op();break;default:throw new Ei(this)}this.state=1015,this.eq_subexpr(),this.state=1018,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(!(-32&e)&&1<<e&60||170===e)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}match_op(){let e,s=new lf(this.context,this.state);this.enterRule(s,26,t.RULE_match_op);try{this.enterOuterAlt(s,1),this.state=1022,e=this.tokenStream.LA(1),145===e||156===e||180===e||185===e||234===e||252===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}eq_subexpr(){let e,s=new Of(this.context,this.state);this.enterRule(s,28,t.RULE_eq_subexpr);try{for(this.enterOuterAlt(s,1),this.state=1024,this.neq_subexpr(),this.state=1029,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(-32&e)&&1<<e&960;)this.state=1025,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&960?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1026,this.neq_subexpr(),this.state=1031,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}shift_right(){let e=new If(this.context,this.state);this.enterRule(e,30,t.RULE_shift_right);try{this.enterOuterAlt(e,1),this.state=1032,this.match(t.GREATER),this.state=1033,this.match(t.GREATER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}rot_right(){let e=new uf(this.context,this.state);this.enterRule(e,32,t.RULE_rot_right);try{this.enterOuterAlt(e,1),this.state=1035,this.match(t.GREATER),this.state=1036,this.match(t.GREATER),this.state=1037,this.match(t.PIPE)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}double_question(){let e=new Nf(this.context,this.state);this.enterRule(e,34,t.RULE_double_question);try{this.enterOuterAlt(e,1),this.state=1039,this.match(t.QUESTION),this.state=1040,this.match(t.QUESTION)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}neq_subexpr(){let e,s=new Lf(this.context,this.state);this.enterRule(s,36,t.RULE_neq_subexpr);try{let a;for(this.enterOuterAlt(s,1),this.state=1042,this.bit_subexpr(),this.state=1055,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,33,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;){if(1===a){switch(this.state=1050,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,32,this.context)){case 1:this.state=1043,this.match(t.SHIFT_LEFT);break;case 2:this.state=1044,this.shift_right();break;case 3:this.state=1045,this.match(t.ROT_LEFT);break;case 4:this.state=1046,this.rot_right();break;case 5:this.state=1047,this.match(t.AMPERSAND);break;case 6:this.state=1048,this.match(t.PIPE);break;case 7:this.state=1049,this.match(t.CARET)}this.state=1052,this.bit_subexpr()}this.state=1057,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,33,this.context)}switch(this.state=1066,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,35,this.context)){case 1:this.state=1058,this.double_question(),this.state=1059,this.neq_subexpr();break;case 2:this.state=1062,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=1061,this.match(t.QUESTION),this.state=1064,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(29===e)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}bit_subexpr(){let e,s=new Cf(this.context,this.state);this.enterRule(s,38,t.RULE_bit_subexpr);try{for(this.enterOuterAlt(s,1),this.state=1068,this.add_subexpr(),this.state=1073,this.errorHandler.sync(this),e=this.tokenStream.LA(1);17===e||18===e;)this.state=1069,e=this.tokenStream.LA(1),17===e||18===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1070,this.add_subexpr(),this.state=1075,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}add_subexpr(){let e,s=new _f(this.context,this.state);this.enterRule(s,40,t.RULE_add_subexpr);try{for(this.enterOuterAlt(s,1),this.state=1076,this.mul_subexpr(),this.state=1081,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(-32&e)&&1<<e&11534336;)this.state=1077,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&11534336?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1078,this.mul_subexpr(),this.state=1083,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}mul_subexpr(){let e,s=new Pf(this.context,this.state);this.enterRule(s,42,t.RULE_mul_subexpr);try{for(this.enterOuterAlt(s,1),this.state=1084,this.con_subexpr(),this.state=1089,this.errorHandler.sync(this),e=this.tokenStream.LA(1);14===e;)this.state=1085,this.match(t.DOUBLE_PIPE),this.state=1086,this.con_subexpr(),this.state=1091,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}con_subexpr(){let e=new Mf(this.context,this.state);this.enterRule(e,44,t.RULE_con_subexpr);try{switch(this.state=1096,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,39,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1092,this.unary_subexpr();break;case 2:this.enterOuterAlt(e,2),this.state=1093,this.unary_op(),this.state=1094,this.unary_subexpr()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}unary_op(){let e,s=new df(this.context,this.state);this.enterRule(s,46,t.RULE_unary_op);try{this.enterOuterAlt(s,1),this.state=1098,e=this.tokenStream.LA(1),!(-32&e)&&1<<e&917504||196===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}unary_subexpr_suffix(){let e,s=new Uf(this.context,this.state);this.enterRule(s,48,t.RULE_unary_subexpr_suffix);try{for(this.enterOuterAlt(s,1),this.state=1110,this.errorHandler.sync(this),e=this.tokenStream.LA(1);!(e-25&-32)&&1<<e-25&262149;){switch(this.state=1108,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LBRACE_SQUARE:this.state=1100,this.key_expr();break;case t.LPAREN:this.state=1101,this.invoke_expr();break;case t.DOT:switch(this.state=1102,this.match(t.DOT),this.state=1106,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DOLLAR:this.state=1103,this.bind_parameter();break;case t.DIGITS:this.state=1104,this.match(t.DIGITS);break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CALLABLE:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DICT:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ENUM:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FLOW:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LIST:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OPTIONAL:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESOURCE:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SET:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.STRUCT:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TAGGED:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TUPLE:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VARIANT:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.state=1105,this.an_id_or_type();break;default:throw new Ei(this)}break;default:throw new Ei(this)}this.state=1112,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}this.state=1115,this.errorHandler.sync(this),e=this.tokenStream.LA(1),76===e&&(this.state=1113,this.match(t.COLLATE),this.state=1114,this.an_id())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}unary_casual_subexpr(){let e=new mf(this.context,this.state);this.enterRule(e,50,t.RULE_unary_casual_subexpr);try{switch(this.enterOuterAlt(e,1),this.state=1119,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,44,this.context)){case 1:this.state=1117,this.id_expr();break;case 2:this.state=1118,this.atom_expr()}this.state=1121,this.unary_subexpr_suffix()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}in_unary_casual_subexpr(){let e=new Df(this.context,this.state);this.enterRule(e,52,t.RULE_in_unary_casual_subexpr);try{switch(this.enterOuterAlt(e,1),this.state=1125,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,45,this.context)){case 1:this.state=1123,this.id_expr_in();break;case 2:this.state=1124,this.in_atom_expr()}this.state=1127,this.unary_subexpr_suffix()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}unary_subexpr(){let e=new pf(this.context,this.state);this.enterRule(e,54,t.RULE_unary_subexpr);try{switch(this.state=1131,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,46,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1129,this.unary_casual_subexpr();break;case 2:this.enterOuterAlt(e,2),this.state=1130,this.json_api_expr()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}in_unary_subexpr(){let e=new gf(this.context,this.state);this.enterRule(e,56,t.RULE_in_unary_subexpr);try{switch(this.state=1135,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,47,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1133,this.in_unary_casual_subexpr();break;case 2:this.enterOuterAlt(e,2),this.state=1134,this.json_api_expr()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}list_literal(){let e,s=new xf(this.context,this.state);this.enterRule(s,58,t.RULE_list_literal);try{this.enterOuterAlt(s,1),this.state=1137,this.match(t.LBRACE_SQUARE),this.state=1139,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-15&-32)&&1<<e-15&4030992413||!(e-47&-32)&&1<<e-47&4294901759||!(e-79&-32)&&1<<e-79&4294967295||!(e-111&-32)&&1<<e-111&4294967295||!(e-143&-32)&&1<<e-143&4294967287||!(e-175&-32)&&1<<e-175&4294967295||!(e-207&-32)&&1<<e-207&4294967295||!(e-240&-32)&&1<<e-240&4294967295||!(e-272&-32)&&1<<e-272&4294967295||!(e-304&-32)&&1<<e-304&524287)&&(this.state=1138,this.expr_list()),this.state=1142,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1141,this.match(t.COMMA)),this.state=1144,this.match(t.RBRACE_SQUARE)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expr_dict_list(){let e,s=new kf(this.context,this.state);this.enterRule(s,60,t.RULE_expr_dict_list);try{let a;for(this.enterOuterAlt(s,1),this.state=1146,this.expr(),this.state=1149,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=1147,this.match(t.COLON),this.state=1148,this.expr()),this.state=1159,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,52,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=1151,this.match(t.COMMA),this.state=1152,this.expr(),this.state=1155,this.errorHandler.sync(this),e=this.tokenStream.LA(1),30===e&&(this.state=1153,this.match(t.COLON),this.state=1154,this.expr())),this.state=1161,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,52,this.context)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}dict_literal(){let e,s=new Hf(this.context,this.state);this.enterRule(s,62,t.RULE_dict_literal);try{this.enterOuterAlt(s,1),this.state=1162,this.match(t.LBRACE_CURLY),this.state=1164,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-15&-32)&&1<<e-15&4030992413||!(e-47&-32)&&1<<e-47&4294901759||!(e-79&-32)&&1<<e-79&4294967295||!(e-111&-32)&&1<<e-111&4294967295||!(e-143&-32)&&1<<e-143&4294967287||!(e-175&-32)&&1<<e-175&4294967295||!(e-207&-32)&&1<<e-207&4294967295||!(e-240&-32)&&1<<e-240&4294967295||!(e-272&-32)&&1<<e-272&4294967295||!(e-304&-32)&&1<<e-304&524287)&&(this.state=1163,this.expr_dict_list()),this.state=1167,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1166,this.match(t.COMMA)),this.state=1169,this.match(t.RBRACE_CURLY)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expr_struct_list(){let e=new Gf(this.context,this.state);this.enterRule(e,64,t.RULE_expr_struct_list);try{let s;for(this.enterOuterAlt(e,1),this.state=1171,this.expr(),this.state=1172,this.match(t.COLON),this.state=1173,this.expr(),this.state=1181,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,55,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=1174,this.match(t.COMMA),this.state=1175,this.expr(),this.state=1176,this.match(t.COLON),this.state=1177,this.expr()),this.state=1183,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,55,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}struct_literal(){let e,s=new Ff(this.context,this.state);this.enterRule(s,66,t.RULE_struct_literal);try{this.enterOuterAlt(s,1),this.state=1184,this.match(t.STRUCT_OPEN),this.state=1186,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-15&-32)&&1<<e-15&4030992413||!(e-47&-32)&&1<<e-47&4294901759||!(e-79&-32)&&1<<e-79&4294967295||!(e-111&-32)&&1<<e-111&4294967295||!(e-143&-32)&&1<<e-143&4294967287||!(e-175&-32)&&1<<e-175&4294967295||!(e-207&-32)&&1<<e-207&4294967295||!(e-240&-32)&&1<<e-240&4294967295||!(e-272&-32)&&1<<e-272&4294967295||!(e-304&-32)&&1<<e-304&524287)&&(this.state=1185,this.expr_struct_list()),this.state=1189,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1188,this.match(t.COMMA)),this.state=1191,this.match(t.STRUCT_CLOSE)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}atom_expr(){let e=new vf(this.context,this.state);this.enterRule(e,68,t.RULE_atom_expr);try{switch(this.state=1210,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,59,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1193,this.literal_value();break;case 2:this.enterOuterAlt(e,2),this.state=1194,this.bind_parameter();break;case 3:this.enterOuterAlt(e,3),this.state=1195,this.lambda();break;case 4:this.enterOuterAlt(e,4),this.state=1196,this.cast_expr();break;case 5:this.enterOuterAlt(e,5),this.state=1197,this.exists_expr();break;case 6:this.enterOuterAlt(e,6),this.state=1198,this.case_expr();break;case 7:switch(this.enterOuterAlt(e,7),this.state=1199,this.an_id_or_type(),this.state=1200,this.match(t.NAMESPACE),this.state=1203,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CALLABLE:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DICT:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ENUM:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FLOW:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LIST:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OPTIONAL:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESOURCE:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SET:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.STRUCT:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TAGGED:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TUPLE:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VARIANT:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.state=1201,this.id_or_type();break;case t.STRING_VALUE:this.state=1202,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}break;case 8:this.enterOuterAlt(e,8),this.state=1205,this.value_constructor();break;case 9:this.enterOuterAlt(e,9),this.state=1206,this.bitcast_expr();break;case 10:this.enterOuterAlt(e,10),this.state=1207,this.list_literal();break;case 11:this.enterOuterAlt(e,11),this.state=1208,this.dict_literal();break;case 12:this.enterOuterAlt(e,12),this.state=1209,this.struct_literal()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}in_atom_expr(){let e=new Bf(this.context,this.state);this.enterRule(e,70,t.RULE_in_atom_expr);try{switch(this.state=1232,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,61,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1212,this.literal_value();break;case 2:this.enterOuterAlt(e,2),this.state=1213,this.bind_parameter();break;case 3:this.enterOuterAlt(e,3),this.state=1214,this.lambda();break;case 4:this.enterOuterAlt(e,4),this.state=1215,this.cast_expr();break;case 5:this.enterOuterAlt(e,5),this.state=1216,this.case_expr();break;case 6:switch(this.enterOuterAlt(e,6),this.state=1217,this.an_id_or_type(),this.state=1218,this.match(t.NAMESPACE),this.state=1221,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CALLABLE:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DICT:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ENUM:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FLOW:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LIST:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OPTIONAL:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESOURCE:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SET:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.STRUCT:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TAGGED:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TUPLE:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VARIANT:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.state=1219,this.id_or_type();break;case t.STRING_VALUE:this.state=1220,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}break;case 7:this.enterOuterAlt(e,7),this.state=1223,this.match(t.LPAREN),this.state=1224,this.select_stmt(),this.state=1225,this.match(t.RPAREN);break;case 8:this.enterOuterAlt(e,8),this.state=1227,this.value_constructor();break;case 9:this.enterOuterAlt(e,9),this.state=1228,this.bitcast_expr();break;case 10:this.enterOuterAlt(e,10),this.state=1229,this.list_literal();break;case 11:this.enterOuterAlt(e,11),this.state=1230,this.dict_literal();break;case 12:this.enterOuterAlt(e,12),this.state=1231,this.struct_literal()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}cast_expr(){let e=new yf(this.context,this.state);this.enterRule(e,72,t.RULE_cast_expr);try{this.enterOuterAlt(e,1),this.state=1234,this.match(t.CAST),this.state=1235,this.match(t.LPAREN),this.state=1236,this.expr(),this.state=1237,this.match(t.AS),this.state=1238,this.type_name_or_bind(),this.state=1239,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}bitcast_expr(){let e=new ff(this.context,this.state);this.enterRule(e,74,t.RULE_bitcast_expr);try{this.enterOuterAlt(e,1),this.state=1241,this.match(t.BITCAST),this.state=1242,this.match(t.LPAREN),this.state=1243,this.expr(),this.state=1244,this.match(t.AS),this.state=1245,this.type_name_simple(),this.state=1246,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}exists_expr(){let e=new Yf(this.context,this.state);this.enterRule(e,76,t.RULE_exists_expr);try{switch(this.enterOuterAlt(e,1),this.state=1248,this.match(t.EXISTS),this.state=1249,this.match(t.LPAREN),this.state=1252,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LPAREN:case t.DISCARD:case t.FROM:case t.PROCESS:case t.REDUCE:case t.SELECT:this.state=1250,this.select_stmt();break;case t.VALUES:this.state=1251,this.values_stmt();break;default:throw new Ei(this)}this.state=1254,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}case_expr(){let e,s=new wf(this.context,this.state);this.enterRule(s,78,t.RULE_case_expr);try{if(this.enterOuterAlt(s,1),1===(this.state=1256,this.match(t.CASE),this.state=1258,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,63,this.context)))this.state=1257,this.expr();this.state=1261,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=1260,this.when_expr(),this.state=1263,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(309===e);this.state=1267,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=1265,this.match(t.ELSE),this.state=1266,this.expr()),this.state=1269,this.match(t.END)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}lambda(){let e,s=new bf(this.context,this.state);this.enterRule(s,80,t.RULE_lambda);try{if(this.enterOuterAlt(s,1),this.state=1271,this.smart_parenthesis(),this.state=1283,this.errorHandler.sync(this),e=this.tokenStream.LA(1),41===e)switch(this.state=1272,this.match(t.ARROW),this.state=1281,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LPAREN:this.state=1273,this.match(t.LPAREN),this.state=1274,this.expr(),this.state=1275,this.match(t.RPAREN);break;case t.LBRACE_CURLY:this.state=1277,this.match(t.LBRACE_CURLY),this.state=1278,this.lambda_body(),this.state=1279,this.match(t.RBRACE_CURLY);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}in_expr(){let e=new Wf(this.context,this.state);this.enterRule(e,82,t.RULE_in_expr);try{this.enterOuterAlt(e,1),this.state=1285,this.in_unary_subexpr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}json_api_expr(){let e=new Vf(this.context,this.state);this.enterRule(e,84,t.RULE_json_api_expr);try{switch(this.state=1290,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.JSON_VALUE:this.enterOuterAlt(e,1),this.state=1287,this.json_value();break;case t.JSON_EXISTS:this.enterOuterAlt(e,2),this.state=1288,this.json_exists();break;case t.JSON_QUERY:this.enterOuterAlt(e,3),this.state=1289,this.json_query();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}jsonpath_spec(){let e=new Xf(this.context,this.state);this.enterRule(e,86,t.RULE_jsonpath_spec);try{this.enterOuterAlt(e,1),this.state=1292,this.match(t.STRING_VALUE)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}json_variable_name(){let e=new Kf(this.context,this.state);this.enterRule(e,88,t.RULE_json_variable_name);try{switch(this.state=1296,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=1294,this.id_expr();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=1295,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}json_variable(){let e=new Qf(this.context,this.state);this.enterRule(e,90,t.RULE_json_variable);try{this.enterOuterAlt(e,1),this.state=1298,this.expr(),this.state=1299,this.match(t.AS),this.state=1300,this.json_variable_name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}json_variables(){let e,s=new Jf(this.context,this.state);this.enterRule(s,92,t.RULE_json_variables);try{for(this.enterOuterAlt(s,1),this.state=1302,this.json_variable(),this.state=1307,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=1303,this.match(t.COMMA),this.state=1304,this.json_variable(),this.state=1309,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}json_common_args(){let e,s=new Zf(this.context,this.state);this.enterRule(s,94,t.RULE_json_common_args);try{this.enterOuterAlt(s,1),this.state=1310,this.expr(),this.state=1311,this.match(t.COMMA),this.state=1312,this.jsonpath_spec(),this.state=1315,this.errorHandler.sync(this),e=this.tokenStream.LA(1),216===e&&(this.state=1313,this.match(t.PASSING),this.state=1314,this.json_variables())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}json_case_handler(){let e=new qf(this.context,this.state);this.enterRule(e,96,t.RULE_json_case_handler);try{switch(this.state=1321,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ERROR:this.enterOuterAlt(e,1),this.state=1317,this.match(t.ERROR);break;case t.NULL:this.enterOuterAlt(e,2),this.state=1318,this.match(t.NULL);break;case t.DEFAULT:this.enterOuterAlt(e,3),this.state=1319,this.match(t.DEFAULT),this.state=1320,this.expr();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}json_value(){let e,s=new jf(this.context,this.state);this.enterRule(s,98,t.RULE_json_value);try{for(this.enterOuterAlt(s,1),this.state=1323,this.match(t.JSON_VALUE),this.state=1324,this.match(t.LPAREN),this.state=1325,this.json_common_args(),this.state=1328,this.errorHandler.sync(this),e=this.tokenStream.LA(1),248===e&&(this.state=1326,this.match(t.RETURNING),this.state=1327,this.type_name_simple()),this.state=1336,this.errorHandler.sync(this),e=this.tokenStream.LA(1);98===e||121===e||198===e;)this.state=1330,this.json_case_handler(),this.state=1331,this.match(t.ON),this.state=1332,e=this.tokenStream.LA(1),115===e||121===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1338,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1339,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}json_exists_handler(){let e,s=new zf(this.context,this.state);this.enterRule(s,100,t.RULE_json_exists_handler);try{this.enterOuterAlt(s,1),this.state=1341,e=this.tokenStream.LA(1),121===e||133===e||290===e||297===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1342,this.match(t.ON),this.state=1343,this.match(t.ERROR)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}json_exists(){let e,s=new $f(this.context,this.state);this.enterRule(s,102,t.RULE_json_exists);try{this.enterOuterAlt(s,1),this.state=1345,this.match(t.JSON_EXISTS),this.state=1346,this.match(t.LPAREN),this.state=1347,this.json_common_args(),this.state=1349,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(121===e||133===e||290===e||297===e)&&(this.state=1348,this.json_exists_handler()),this.state=1351,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}json_query_wrapper(){let e,s=new tY(this.context,this.state);this.enterRule(s,104,t.RULE_json_query_wrapper);try{switch(this.state=1364,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WITHOUT:this.enterOuterAlt(s,1),this.state=1353,this.match(t.WITHOUT),this.state=1355,this.errorHandler.sync(this),e=this.tokenStream.LA(1),54===e&&(this.state=1354,this.match(t.ARRAY));break;case t.WITH:this.enterOuterAlt(s,2),this.state=1357,this.match(t.WITH),this.state=1359,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(81===e||294===e)&&(this.state=1358,e=this.tokenStream.LA(1),81===e||294===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=1362,this.errorHandler.sync(this),e=this.tokenStream.LA(1),54===e&&(this.state=1361,this.match(t.ARRAY));break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}json_query_handler(){let e=new eY(this.context,this.state);this.enterRule(e,106,t.RULE_json_query_handler);try{switch(this.state=1372,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,80,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1366,this.match(t.ERROR);break;case 2:this.enterOuterAlt(e,2),this.state=1367,this.match(t.NULL);break;case 3:this.enterOuterAlt(e,3),this.state=1368,this.match(t.EMPTY),this.state=1369,this.match(t.ARRAY);break;case 4:this.enterOuterAlt(e,4),this.state=1370,this.match(t.EMPTY),this.state=1371,this.match(t.OBJECT)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}json_query(){let e,s=new sY(this.context,this.state);this.enterRule(s,108,t.RULE_json_query);try{if(this.enterOuterAlt(s,1),1===(this.state=1374,this.match(t.JSON_QUERY),this.state=1375,this.match(t.LPAREN),this.state=1376,this.json_common_args(),this.state=1380,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(312===e||313===e)&&(this.state=1377,this.json_query_wrapper(),this.state=1378,this.match(t.WRAPPER)),this.state=1386,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,82,this.context)))this.state=1382,this.json_query_handler(),this.state=1383,this.match(t.ON),this.state=1384,this.match(t.EMPTY);this.state=1392,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(115===e||121===e||198===e)&&(this.state=1388,this.json_query_handler(),this.state=1389,this.match(t.ON),this.state=1390,this.match(t.ERROR)),this.state=1394,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}smart_parenthesis(){let e,s=new aY(this.context,this.state);this.enterRule(s,110,t.RULE_smart_parenthesis);try{this.enterOuterAlt(s,1),this.state=1396,this.match(t.LPAREN),this.state=1398,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-15&-32)&&1<<e-15&4030992413||!(e-47&-32)&&1<<e-47&4294901759||!(e-79&-32)&&1<<e-79&4294967295||!(e-111&-32)&&1<<e-111&4294967295||!(e-143&-32)&&1<<e-143&4294967287||!(e-175&-32)&&1<<e-175&4294967295||!(e-207&-32)&&1<<e-207&4294967295||!(e-240&-32)&&1<<e-240&4294967295||!(e-272&-32)&&1<<e-272&4294967295||!(e-304&-32)&&1<<e-304&524287)&&(this.state=1397,this.named_expr_list()),this.state=1401,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1400,this.match(t.COMMA)),this.state=1403,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}expr_list(){let e=new rY(this.context,this.state);this.enterRule(e,112,t.RULE_expr_list);try{let s;for(this.enterOuterAlt(e,1),this.state=1405,this.expr(),this.state=1410,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,86,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=1406,this.match(t.COMMA),this.state=1407,this.expr()),this.state=1412,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,86,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}pure_column_list(){let e,s=new iY(this.context,this.state);this.enterRule(s,114,t.RULE_pure_column_list);try{for(this.enterOuterAlt(s,1),this.state=1413,this.match(t.LPAREN),this.state=1414,this.an_id(),this.state=1419,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=1415,this.match(t.COMMA),this.state=1416,this.an_id(),this.state=1421,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1422,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}pure_column_or_named(){let e=new cY(this.context,this.state);this.enterRule(e,116,t.RULE_pure_column_or_named);try{switch(this.state=1426,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DOLLAR:this.enterOuterAlt(e,1),this.state=1424,this.bind_parameter();break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,2),this.state=1425,this.an_id();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}pure_column_or_named_list(){let e,s=new nY(this.context,this.state);this.enterRule(s,118,t.RULE_pure_column_or_named_list);try{for(this.enterOuterAlt(s,1),this.state=1428,this.match(t.LPAREN),this.state=1429,this.pure_column_or_named(),this.state=1434,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=1430,this.match(t.COMMA),this.state=1431,this.pure_column_or_named(),this.state=1436,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1437,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}column_name(){let e=new hY(this.context,this.state);this.enterRule(e,120,t.RULE_column_name);try{this.enterOuterAlt(e,1),this.state=1439,this.opt_id_prefix(),this.state=1440,this.an_id()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}without_column_name(){let e=new EY(this.context,this.state);this.enterRule(e,122,t.RULE_without_column_name);try{switch(this.state=1447,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,90,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1442,this.an_id(),this.state=1443,this.match(t.DOT),this.state=1444,this.an_id();break;case 2:this.enterOuterAlt(e,2),this.state=1446,this.an_id_without()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}column_list(){let e,s=new TY(this.context,this.state);this.enterRule(s,124,t.RULE_column_list);try{let a;for(this.enterOuterAlt(s,1),this.state=1449,this.column_name(),this.state=1454,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,91,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=1450,this.match(t.COMMA),this.state=1451,this.column_name()),this.state=1456,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,91,this.context);this.state=1458,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1457,this.match(t.COMMA))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}without_column_list(){let e,s=new oY(this.context,this.state);this.enterRule(s,126,t.RULE_without_column_list);try{let a;for(this.enterOuterAlt(s,1),this.state=1460,this.without_column_name(),this.state=1465,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,93,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=1461,this.match(t.COMMA),this.state=1462,this.without_column_name()),this.state=1467,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,93,this.context);this.state=1469,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1468,this.match(t.COMMA))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}named_expr(){let e,s=new RY(this.context,this.state);this.enterRule(s,128,t.RULE_named_expr);try{this.enterOuterAlt(s,1),this.state=1471,this.expr(),this.state=1474,this.errorHandler.sync(this),e=this.tokenStream.LA(1),55===e&&(this.state=1472,this.match(t.AS),this.state=1473,this.an_id_or_type())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}named_expr_list(){let e=new AY(this.context,this.state);this.enterRule(e,130,t.RULE_named_expr_list);try{let s;for(this.enterOuterAlt(e,1),this.state=1476,this.named_expr(),this.state=1481,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,96,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=1477,this.match(t.COMMA),this.state=1478,this.named_expr()),this.state=1483,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,96,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}invoke_expr(){let e,s=new SY(this.context,this.state);this.enterRule(s,132,t.RULE_invoke_expr);try{switch(this.enterOuterAlt(s,1),this.state=1484,this.match(t.LPAREN),this.state=1491,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.STRUCT_OPEN:case t.PLUS:case t.MINUS:case t.TILDA:case t.LPAREN:case t.DOLLAR:case t.LBRACE_CURLY:case t.LBRACE_SQUARE:case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CALLABLE:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DICT:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ENUM:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FALSE:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FLOW:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LIST:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OPTIONAL:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESOURCE:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SET:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.STRUCT:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TAGGED:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TRUE:case t.TUPLE:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VARIANT:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:case t.DIGITS:case t.INTEGER_VALUE:case t.REAL:case t.BLOB:this.state=1485,this.opt_set_quantifier(),this.state=1486,this.named_expr_list(),this.state=1488,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1487,this.match(t.COMMA));break;case t.ASTERISK:this.state=1490,this.match(t.ASTERISK);case t.RPAREN:}this.state=1493,this.match(t.RPAREN),this.state=1494,this.invoke_expr_tail()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}invoke_expr_tail(){let e,s=new lY(this.context,this.state);this.enterRule(s,134,t.RULE_invoke_expr_tail);try{switch(this.enterOuterAlt(s,1),this.state=1498,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.IGNORE:case t.RESPECT:this.state=1496,this.null_treatment();break;case t.FILTER:this.state=1497,this.filter_clause();case t.EOF:case t.EQUALS:case t.EQUALS2:case t.NOT_EQUALS:case t.NOT_EQUALS2:case t.LESS:case t.LESS_OR_EQ:case t.GREATER:case t.GREATER_OR_EQ:case t.SHIFT_LEFT:case t.ROT_LEFT:case t.AMPERSAND:case t.PIPE:case t.DOUBLE_PIPE:case t.STRUCT_CLOSE:case t.PLUS:case t.MINUS:case t.ASTERISK:case t.SLASH:case t.PERCENT:case t.SEMICOLON:case t.DOT:case t.COMMA:case t.LPAREN:case t.RPAREN:case t.QUESTION:case t.COLON:case t.RBRACE_CURLY:case t.CARET:case t.RBRACE_SQUARE:case t.LBRACE_SQUARE:case t.AFTER:case t.ALL:case t.AND:case t.AS:case t.ASC:case t.ASSUME:case t.ATTRIBUTES:case t.BETWEEN:case t.COLLATE:case t.CONNECT:case t.CONSUMER:case t.CROSS:case t.DATA:case t.DESC:case t.DESCRIBE:case t.DIRECTORY:case t.DO:case t.ELSE:case t.END:case t.ESCAPE:case t.EXCEPT:case t.EXCLUSION:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FROM:case t.FULL:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPS:case t.HAVING:case t.ILIKE:case t.IN:case t.INITIAL:case t.INNER:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NOT:case t.NOTNULL:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.OPTION:case t.OR:case t.ORDER:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PRECEDING:case t.PRESORT:case t.PRIVILEGES:case t.QUEUE:case t.RANGE:case t.REGEXP:case t.REMOVE:case t.REPLICATION:case t.RETURNING:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROWS:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBSET:case t.TABLES:case t.THEN:case t.TOPIC:case t.TYPE:case t.UNION:case t.UNMATCHED:case t.USING:case t.VIEW:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:}this.state=1502,this.errorHandler.sync(this),e=this.tokenStream.LA(1),213===e&&(this.state=1500,this.match(t.OVER),this.state=1501,this.window_name_or_specification())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}using_call_expr(){let e=new OY(this.context,this.state);this.enterRule(e,136,t.RULE_using_call_expr);try{switch(this.enterOuterAlt(e,1),this.state=1512,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,101,this.context)){case 1:this.state=1504,this.an_id_or_type(),this.state=1505,this.match(t.NAMESPACE),this.state=1506,this.an_id_or_type();break;case 2:this.state=1508,this.an_id_expr();break;case 3:this.state=1509,this.bind_parameter();break;case 4:this.state=1510,this.match(t.EXTERNAL),this.state=1511,this.match(t.FUNCTION)}this.state=1514,this.invoke_expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}key_expr(){let e=new IY(this.context,this.state);this.enterRule(e,138,t.RULE_key_expr);try{this.enterOuterAlt(e,1),this.state=1516,this.match(t.LBRACE_SQUARE),this.state=1517,this.expr(),this.state=1518,this.match(t.RBRACE_SQUARE)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}when_expr(){let e=new uY(this.context,this.state);this.enterRule(e,140,t.RULE_when_expr);try{this.enterOuterAlt(e,1),this.state=1520,this.match(t.WHEN),this.state=1521,this.expr(),this.state=1522,this.match(t.THEN),this.state=1523,this.expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}literal_value(){let e=new NY(this.context,this.state);this.enterRule(e,142,t.RULE_literal_value);try{switch(this.state=1535,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DIGITS:case t.INTEGER_VALUE:this.enterOuterAlt(e,1),this.state=1525,this.integer();break;case t.REAL:this.enterOuterAlt(e,2),this.state=1526,this.real();break;case t.STRING_VALUE:this.enterOuterAlt(e,3),this.state=1527,this.match(t.STRING_VALUE);break;case t.BLOB:this.enterOuterAlt(e,4),this.state=1528,this.match(t.BLOB);break;case t.NULL:this.enterOuterAlt(e,5),this.state=1529,this.match(t.NULL);break;case t.CURRENT_TIME:this.enterOuterAlt(e,6),this.state=1530,this.match(t.CURRENT_TIME);break;case t.CURRENT_DATE:this.enterOuterAlt(e,7),this.state=1531,this.match(t.CURRENT_DATE);break;case t.CURRENT_TIMESTAMP:this.enterOuterAlt(e,8),this.state=1532,this.match(t.CURRENT_TIMESTAMP);break;case t.FALSE:case t.TRUE:this.enterOuterAlt(e,9),this.state=1533,this.bool_value();break;case t.EMPTY_ACTION:this.enterOuterAlt(e,10),this.state=1534,this.match(t.EMPTY_ACTION);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}bind_parameter(){let e=new LY(this.context,this.state);this.enterRule(e,144,t.RULE_bind_parameter);try{switch(this.enterOuterAlt(e,1),this.state=1537,this.match(t.DOLLAR),this.state=1541,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CALLABLE:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DICT:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ENUM:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FLOW:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LIST:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OPTIONAL:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESOURCE:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SET:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.STRUCT:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TAGGED:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TUPLE:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VARIANT:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.state=1538,this.an_id_or_type();break;case t.TRUE:this.state=1539,this.match(t.TRUE);break;case t.FALSE:this.state=1540,this.match(t.FALSE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}opt_bind_parameter(){let e,s=new CY(this.context,this.state);this.enterRule(s,146,t.RULE_opt_bind_parameter);try{this.enterOuterAlt(s,1),this.state=1543,this.bind_parameter(),this.state=1545,this.errorHandler.sync(this),e=this.tokenStream.LA(1),29===e&&(this.state=1544,this.match(t.QUESTION))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}bind_parameter_list(){let e,s=new _Y(this.context,this.state);this.enterRule(s,148,t.RULE_bind_parameter_list);try{for(this.enterOuterAlt(s,1),this.state=1547,this.bind_parameter(),this.state=1552,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=1548,this.match(t.COMMA),this.state=1549,this.bind_parameter(),this.state=1554,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}named_bind_parameter(){let e,s=new PY(this.context,this.state);this.enterRule(s,150,t.RULE_named_bind_parameter);try{this.enterOuterAlt(s,1),this.state=1555,this.bind_parameter(),this.state=1558,this.errorHandler.sync(this),e=this.tokenStream.LA(1),55===e&&(this.state=1556,this.match(t.AS),this.state=1557,this.bind_parameter())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}named_bind_parameter_list(){let e,s=new MY(this.context,this.state);this.enterRule(s,152,t.RULE_named_bind_parameter_list);try{for(this.enterOuterAlt(s,1),this.state=1560,this.named_bind_parameter(),this.state=1565,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=1561,this.match(t.COMMA),this.state=1562,this.named_bind_parameter(),this.state=1567,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}signed_number(){let e,s=new dY(this.context,this.state);this.enterRule(s,154,t.RULE_signed_number);try{switch(this.enterOuterAlt(s,1),this.state=1569,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(17===e||18===e)&&(this.state=1568,e=this.tokenStream.LA(1),17===e||18===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=1573,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DIGITS:case t.INTEGER_VALUE:this.state=1571,this.integer();break;case t.REAL:this.state=1572,this.real();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}type_name_simple(){let e=new UY(this.context,this.state);this.enterRule(e,156,t.RULE_type_name_simple);try{this.enterOuterAlt(e,1),this.state=1575,this.an_id_pure()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}integer_or_bind(){let e=new mY(this.context,this.state);this.enterRule(e,158,t.RULE_integer_or_bind);try{switch(this.state=1579,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DIGITS:case t.INTEGER_VALUE:this.enterOuterAlt(e,1),this.state=1577,this.integer();break;case t.DOLLAR:this.enterOuterAlt(e,2),this.state=1578,this.bind_parameter();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}type_name_tag(){let e=new DY(this.context,this.state);this.enterRule(e,160,t.RULE_type_name_tag);try{switch(this.state=1584,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=1581,this.id();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=1582,this.match(t.STRING_VALUE);break;case t.DOLLAR:this.enterOuterAlt(e,3),this.state=1583,this.bind_parameter();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}struct_arg(){let e=new pY(this.context,this.state);this.enterRule(e,162,t.RULE_struct_arg);try{this.enterOuterAlt(e,1),this.state=1586,this.type_name_tag(),this.state=1587,this.match(t.COLON),this.state=1588,this.type_name_or_bind()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}struct_arg_positional(){let e,s=new gY(this.context,this.state);this.enterRule(s,164,t.RULE_struct_arg_positional);try{switch(this.state=1602,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,114,this.context)){case 1:this.enterOuterAlt(s,1),this.state=1590,this.type_name_tag(),this.state=1591,this.type_name_or_bind(),this.state=1596,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(196===e||198===e)&&(this.state=1593,this.errorHandler.sync(this),e=this.tokenStream.LA(1),196===e&&(this.state=1592,this.match(t.NOT)),this.state=1595,this.match(t.NULL));break;case 2:this.enterOuterAlt(s,2),this.state=1598,this.type_name_or_bind(),this.state=1599,this.match(t.AS),this.state=1600,this.type_name_tag()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}variant_arg(){let e=new xY(this.context,this.state);this.enterRule(e,166,t.RULE_variant_arg);try{if(this.enterOuterAlt(e,1),1===(this.state=1607,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,115,this.context)))this.state=1604,this.type_name_tag(),this.state=1605,this.match(t.COLON);this.state=1609,this.type_name_or_bind()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}callable_arg(){let e,s=new kY(this.context,this.state);this.enterRule(s,168,t.RULE_callable_arg);try{this.enterOuterAlt(s,1),this.state=1611,this.variant_arg(),this.state=1615,this.errorHandler.sync(this),e=this.tokenStream.LA(1),37===e&&(this.state=1612,this.match(t.LBRACE_CURLY),this.state=1613,this.match(t.AUTOMAP),this.state=1614,this.match(t.RBRACE_CURLY))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}callable_arg_list(){let e=new HY(this.context,this.state);this.enterRule(e,170,t.RULE_callable_arg_list);try{let s;for(this.enterOuterAlt(e,1),this.state=1617,this.callable_arg(),this.state=1622,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,117,this.context);2!==s&&s!==ja.INVALID_ALT_NUMBER;)1===s&&(this.state=1618,this.match(t.COMMA),this.state=1619,this.callable_arg()),this.state=1624,this.errorHandler.sync(this),s=this.interpreter.adaptivePredict(this.tokenStream,117,this.context)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}type_name_decimal(){let e=new GY(this.context,this.state);this.enterRule(e,172,t.RULE_type_name_decimal);try{this.enterOuterAlt(e,1),this.state=1625,this.match(t.DECIMAL),this.state=1626,this.match(t.LPAREN),this.state=1627,this.integer_or_bind(),this.state=1628,this.match(t.COMMA),this.state=1629,this.integer_or_bind(),this.state=1630,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}type_name_optional(){let e=new FY(this.context,this.state);this.enterRule(e,174,t.RULE_type_name_optional);try{this.enterOuterAlt(e,1),this.state=1632,this.match(t.OPTIONAL),this.state=1633,this.match(t.LESS),this.state=1634,this.type_name_or_bind(),this.state=1635,this.match(t.GREATER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}type_name_tuple(){let e,s=new vY(this.context,this.state);this.enterRule(s,176,t.RULE_type_name_tuple);try{let a;switch(this.enterOuterAlt(s,1),this.state=1637,this.match(t.TUPLE),this.state=1654,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LESS:if(this.state=1638,this.match(t.LESS),this.state=1650,this.errorHandler.sync(this),e=this.tokenStream.LA(1),33===e||70===e||96===e||106===e||119===e||138===e||182===e||208===e||!(e-243&-32)&&1<<e-243&203423745||!(e-281&-32)&&1<<e-281&33555457||!(e-316&-32)&&1<<e-316&7){for(this.state=1639,this.type_name_or_bind(),this.state=1644,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,118,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=1640,this.match(t.COMMA),this.state=1641,this.type_name_or_bind()),this.state=1646,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,118,this.context);this.state=1648,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1647,this.match(t.COMMA))}this.state=1652,this.match(t.GREATER);break;case t.NOT_EQUALS2:this.state=1653,this.match(t.NOT_EQUALS2);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}type_name_struct(){let e,s=new BY(this.context,this.state);this.enterRule(s,178,t.RULE_type_name_struct);try{let a;switch(this.enterOuterAlt(s,1),this.state=1656,this.match(t.STRUCT),this.state=1673,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LESS:if(this.state=1657,this.match(t.LESS),this.state=1669,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-33&-32)&&1<<e-33&3221223425||!(e-65&-32)&&1<<e-65&4294967263||!(e-97&-32)&&1<<e-97&4290772479||!(e-129&-32)&&1<<e-129&4294835695||!(e-161&-32)&&1<<e-161&4292870143||!(e-193&-32)&&1<<e-193&4294934527||!(e-225&-32)&&1<<e-225&4294688767||!(e-257&-32)&&1<<e-257&4278181759||!(e-289&-32)&&1<<e-289&1073610745){for(this.state=1658,this.struct_arg(),this.state=1663,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,122,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=1659,this.match(t.COMMA),this.state=1660,this.struct_arg()),this.state=1665,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,122,this.context);this.state=1667,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1666,this.match(t.COMMA))}this.state=1671,this.match(t.GREATER);break;case t.NOT_EQUALS2:this.state=1672,this.match(t.NOT_EQUALS2);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}type_name_variant(){let e,s=new yY(this.context,this.state);this.enterRule(s,180,t.RULE_type_name_variant);try{let a;for(this.enterOuterAlt(s,1),this.state=1675,this.match(t.VARIANT),this.state=1676,this.match(t.LESS),this.state=1677,this.variant_arg(),this.state=1682,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,126,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=1678,this.match(t.COMMA),this.state=1679,this.variant_arg()),this.state=1684,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,126,this.context);this.state=1686,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1685,this.match(t.COMMA)),this.state=1688,this.match(t.GREATER)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}type_name_list(){let e=new fY(this.context,this.state);this.enterRule(e,182,t.RULE_type_name_list);try{this.enterOuterAlt(e,1),this.state=1690,this.match(t.LIST),this.state=1691,this.match(t.LESS),this.state=1692,this.type_name_or_bind(),this.state=1693,this.match(t.GREATER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}type_name_stream(){let e=new YY(this.context,this.state);this.enterRule(e,184,t.RULE_type_name_stream);try{this.enterOuterAlt(e,1),this.state=1695,this.match(t.STREAM),this.state=1696,this.match(t.LESS),this.state=1697,this.type_name_or_bind(),this.state=1698,this.match(t.GREATER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}type_name_flow(){let e=new wY(this.context,this.state);this.enterRule(e,186,t.RULE_type_name_flow);try{this.enterOuterAlt(e,1),this.state=1700,this.match(t.FLOW),this.state=1701,this.match(t.LESS),this.state=1702,this.type_name_or_bind(),this.state=1703,this.match(t.GREATER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}type_name_dict(){let e=new bY(this.context,this.state);this.enterRule(e,188,t.RULE_type_name_dict);try{this.enterOuterAlt(e,1),this.state=1705,this.match(t.DICT),this.state=1706,this.match(t.LESS),this.state=1707,this.type_name_or_bind(),this.state=1708,this.match(t.COMMA),this.state=1709,this.type_name_or_bind(),this.state=1710,this.match(t.GREATER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}type_name_set(){let e=new WY(this.context,this.state);this.enterRule(e,190,t.RULE_type_name_set);try{this.enterOuterAlt(e,1),this.state=1712,this.match(t.SET),this.state=1713,this.match(t.LESS),this.state=1714,this.type_name_or_bind(),this.state=1715,this.match(t.GREATER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}type_name_enum(){let e,s=new VY(this.context,this.state);this.enterRule(s,192,t.RULE_type_name_enum);try{let a;for(this.enterOuterAlt(s,1),this.state=1717,this.match(t.ENUM),this.state=1718,this.match(t.LESS),this.state=1719,this.type_name_tag(),this.state=1724,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,128,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=1720,this.match(t.COMMA),this.state=1721,this.type_name_tag()),this.state=1726,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,128,this.context);this.state=1728,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1727,this.match(t.COMMA)),this.state=1730,this.match(t.GREATER)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}type_name_resource(){let e=new XY(this.context,this.state);this.enterRule(e,194,t.RULE_type_name_resource);try{this.enterOuterAlt(e,1),this.state=1732,this.match(t.RESOURCE),this.state=1733,this.match(t.LESS),this.state=1734,this.type_name_tag(),this.state=1735,this.match(t.GREATER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}type_name_tagged(){let e=new KY(this.context,this.state);this.enterRule(e,196,t.RULE_type_name_tagged);try{this.enterOuterAlt(e,1),this.state=1737,this.match(t.TAGGED),this.state=1738,this.match(t.LESS),this.state=1739,this.type_name_or_bind(),this.state=1740,this.match(t.COMMA),this.state=1741,this.type_name_tag(),this.state=1742,this.match(t.GREATER)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}type_name_callable(){let e,s=new QY(this.context,this.state);this.enterRule(s,198,t.RULE_type_name_callable);try{this.enterOuterAlt(s,1),this.state=1744,this.match(t.CALLABLE),this.state=1745,this.match(t.LESS),this.state=1746,this.match(t.LPAREN),this.state=1748,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-33&-32)&&1<<e-33&3221223425||!(e-65&-32)&&1<<e-65&4294967295||!(e-97&-32)&&1<<e-97&4294967295||!(e-129&-32)&&1<<e-129&4294836207||!(e-161&-32)&&1<<e-161&4294967295||!(e-193&-32)&&1<<e-193&4294967295||!(e-225&-32)&&1<<e-225&4294950911||!(e-257&-32)&&1<<e-257&4294967295||!(e-289&-32)&&1<<e-289&1073741821)&&(this.state=1747,this.callable_arg_list()),this.state=1751,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=1750,this.match(t.COMMA)),this.state=1757,this.errorHandler.sync(this),e=this.tokenStream.LA(1),43===e&&(this.state=1753,this.match(t.LBRACE_SQUARE),this.state=1754,this.callable_arg_list(),this.state=1755,this.match(t.RBRACE_SQUARE)),this.state=1759,this.match(t.RPAREN),this.state=1760,this.match(t.ARROW),this.state=1761,this.type_name_or_bind(),this.state=1762,this.match(t.GREATER)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}type_name_composite(){let e,s=new JY(this.context,this.state);this.enterRule(s,200,t.RULE_type_name_composite);try{switch(this.enterOuterAlt(s,1),this.state=1777,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.OPTIONAL:this.state=1764,this.type_name_optional();break;case t.TUPLE:this.state=1765,this.type_name_tuple();break;case t.STRUCT:this.state=1766,this.type_name_struct();break;case t.VARIANT:this.state=1767,this.type_name_variant();break;case t.LIST:this.state=1768,this.type_name_list();break;case t.STREAM:this.state=1769,this.type_name_stream();break;case t.FLOW:this.state=1770,this.type_name_flow();break;case t.DICT:this.state=1771,this.type_name_dict();break;case t.SET:this.state=1772,this.type_name_set();break;case t.ENUM:this.state=1773,this.type_name_enum();break;case t.RESOURCE:this.state=1774,this.type_name_resource();break;case t.TAGGED:this.state=1775,this.type_name_tagged();break;case t.CALLABLE:this.state=1776,this.type_name_callable();break;default:throw new Ei(this)}for(this.state=1782,this.errorHandler.sync(this),e=this.tokenStream.LA(1);29===e;)this.state=1779,this.match(t.QUESTION),this.state=1784,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}type_name(){let e,s=new ZY(this.context,this.state);this.enterRule(s,202,t.RULE_type_name);try{switch(this.state=1796,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CALLABLE:case t.DICT:case t.ENUM:case t.FLOW:case t.LIST:case t.OPTIONAL:case t.RESOURCE:case t.SET:case t.STREAM:case t.STRUCT:case t.TAGGED:case t.TUPLE:case t.VARIANT:this.enterOuterAlt(s,1),this.state=1785,this.type_name_composite();break;case t.DECIMAL:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:switch(this.enterOuterAlt(s,2),this.state=1788,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DECIMAL:this.state=1786,this.type_name_decimal();break;case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.state=1787,this.type_name_simple();break;default:throw new Ei(this)}for(this.state=1793,this.errorHandler.sync(this),e=this.tokenStream.LA(1);29===e;)this.state=1790,this.match(t.QUESTION),this.state=1795,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}type_name_or_bind(){let e=new qY(this.context,this.state);this.enterRule(e,204,t.RULE_type_name_or_bind);try{switch(this.state=1800,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CALLABLE:case t.DECIMAL:case t.DICT:case t.ENUM:case t.FLOW:case t.LIST:case t.OPTIONAL:case t.RESOURCE:case t.SET:case t.STREAM:case t.STRUCT:case t.TAGGED:case t.TUPLE:case t.VARIANT:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=1798,this.type_name();break;case t.DOLLAR:this.enterOuterAlt(e,2),this.state=1799,this.bind_parameter();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}value_constructor_literal(){let e=new jY(this.context,this.state);this.enterRule(e,206,t.RULE_value_constructor_literal);try{this.enterOuterAlt(e,1),this.state=1802,this.match(t.STRING_VALUE)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}value_constructor(){let e=new zY(this.context,this.state);this.enterRule(e,208,t.RULE_value_constructor);try{switch(this.state=1827,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.VARIANT:this.enterOuterAlt(e,1),this.state=1804,this.match(t.VARIANT),this.state=1805,this.match(t.LPAREN),this.state=1806,this.expr(),this.state=1807,this.match(t.COMMA),this.state=1808,this.expr(),this.state=1809,this.match(t.COMMA),this.state=1810,this.expr(),this.state=1811,this.match(t.RPAREN);break;case t.ENUM:this.enterOuterAlt(e,2),this.state=1813,this.match(t.ENUM),this.state=1814,this.match(t.LPAREN),this.state=1815,this.expr(),this.state=1816,this.match(t.COMMA),this.state=1817,this.expr(),this.state=1818,this.match(t.RPAREN);break;case t.CALLABLE:this.enterOuterAlt(e,3),this.state=1820,this.match(t.CALLABLE),this.state=1821,this.match(t.LPAREN),this.state=1822,this.expr(),this.state=1823,this.match(t.COMMA),this.state=1824,this.expr(),this.state=1825,this.match(t.RPAREN);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}declare_stmt(){let e,s=new $Y(this.context,this.state);this.enterRule(s,210,t.RULE_declare_stmt);try{this.enterOuterAlt(s,1),this.state=1829,this.match(t.DECLARE),this.state=1830,this.bind_parameter(),this.state=1831,this.match(t.AS),this.state=1832,this.type_name(),this.state=1835,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=1833,this.match(t.EQUALS),this.state=1834,this.literal_value())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}module_path(){let e,s=new tw(this.context,this.state);this.enterRule(s,212,t.RULE_module_path);try{for(this.enterOuterAlt(s,1),this.state=1838,this.errorHandler.sync(this),e=this.tokenStream.LA(1),25===e&&(this.state=1837,this.match(t.DOT)),this.state=1840,this.an_id(),this.state=1845,this.errorHandler.sync(this),e=this.tokenStream.LA(1);25===e;)this.state=1841,this.match(t.DOT),this.state=1842,this.an_id(),this.state=1847,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}import_stmt(){let e=new ew(this.context,this.state);this.enterRule(e,214,t.RULE_import_stmt);try{this.enterOuterAlt(e,1),this.state=1848,this.match(t.IMPORT),this.state=1849,this.module_path(),this.state=1850,this.match(t.SYMBOLS),this.state=1851,this.named_bind_parameter_list()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}export_stmt(){let e=new sw(this.context,this.state);this.enterRule(e,216,t.RULE_export_stmt);try{this.enterOuterAlt(e,1),this.state=1853,this.match(t.EXPORT),this.state=1854,this.bind_parameter_list()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}call_action(){let e,s=new aw(this.context,this.state);this.enterRule(s,218,t.RULE_call_action);try{switch(this.enterOuterAlt(s,1),this.state=1858,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DOLLAR:this.state=1856,this.bind_parameter();break;case t.EMPTY_ACTION:this.state=1857,this.match(t.EMPTY_ACTION);break;default:throw new Ei(this)}this.state=1860,this.match(t.LPAREN),this.state=1862,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-15&-32)&&1<<e-15&4030992413||!(e-47&-32)&&1<<e-47&4294901759||!(e-79&-32)&&1<<e-79&4294967295||!(e-111&-32)&&1<<e-111&4294967295||!(e-143&-32)&&1<<e-143&4294967287||!(e-175&-32)&&1<<e-175&4294967295||!(e-207&-32)&&1<<e-207&4294967295||!(e-240&-32)&&1<<e-240&4294967295||!(e-272&-32)&&1<<e-272&4294967295||!(e-304&-32)&&1<<e-304&524287)&&(this.state=1861,this.expr_list()),this.state=1864,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}inline_action(){let e=new rw(this.context,this.state);this.enterRule(e,220,t.RULE_inline_action);try{this.enterOuterAlt(e,1),this.state=1866,this.match(t.BEGIN),this.state=1867,this.define_action_or_subquery_body(),this.state=1868,this.match(t.END),this.state=1869,this.match(t.DO)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}do_stmt(){let e=new iw(this.context,this.state);this.enterRule(e,222,t.RULE_do_stmt);try{switch(this.enterOuterAlt(e,1),this.state=1871,this.match(t.DO),this.state=1874,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DOLLAR:case t.EMPTY_ACTION:this.state=1872,this.call_action();break;case t.BEGIN:this.state=1873,this.inline_action();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}pragma_stmt(){let e,s=new cw(this.context,this.state);this.enterRule(s,224,t.RULE_pragma_stmt);try{switch(this.enterOuterAlt(s,1),this.state=1876,this.match(t.PRAGMA),this.state=1877,this.opt_id_prefix_or_type(),this.state=1878,this.an_id(),this.state=1892,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EQUALS:this.state=1879,this.match(t.EQUALS),this.state=1880,this.pragma_value();break;case t.LPAREN:for(this.state=1881,this.match(t.LPAREN),this.state=1882,this.pragma_value(),this.state=1887,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=1883,this.match(t.COMMA),this.state=1884,this.pragma_value(),this.state=1889,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=1890,this.match(t.RPAREN);case t.EOF:case t.SEMICOLON:case t.END:}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}pragma_value(){let e=new nw(this.context,this.state);this.enterRule(e,226,t.RULE_pragma_value);try{switch(this.state=1899,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PLUS:case t.MINUS:case t.DIGITS:case t.INTEGER_VALUE:case t.REAL:this.enterOuterAlt(e,1),this.state=1894,this.signed_number();break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,2),this.state=1895,this.id();break;case t.STRING_VALUE:this.enterOuterAlt(e,3),this.state=1896,this.match(t.STRING_VALUE);break;case t.FALSE:case t.TRUE:this.enterOuterAlt(e,4),this.state=1897,this.bool_value();break;case t.DOLLAR:this.enterOuterAlt(e,5),this.state=1898,this.bind_parameter();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sort_specification(){let e,s=new hw(this.context,this.state);this.enterRule(s,228,t.RULE_sort_specification);try{this.enterOuterAlt(s,1),this.state=1901,this.expr(),this.state=1903,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(56===e||103===e)&&(this.state=1902,e=this.tokenStream.LA(1),56===e||103===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sort_specification_list(){let e,s=new Ew(this.context,this.state);this.enterRule(s,230,t.RULE_sort_specification_list);try{for(this.enterOuterAlt(s,1),this.state=1905,this.sort_specification(),this.state=1910,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=1906,this.match(t.COMMA),this.state=1907,this.sort_specification(),this.state=1912,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}select_stmt(){let e,s=new Tw(this.context,this.state);this.enterRule(s,232,t.RULE_select_stmt);try{for(this.enterOuterAlt(s,1),this.state=1913,this.select_kind_parenthesis(),this.state=1919,this.errorHandler.sync(this),e=this.tokenStream.LA(1);124===e||168===e||295===e;)this.state=1914,this.select_op(),this.state=1915,this.select_kind_parenthesis(),this.state=1921,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}select_unparenthesized_stmt(){let e,s=new ow(this.context,this.state);this.enterRule(s,234,t.RULE_select_unparenthesized_stmt);try{for(this.enterOuterAlt(s,1),this.state=1922,this.select_kind_partial(),this.state=1928,this.errorHandler.sync(this),e=this.tokenStream.LA(1);124===e||168===e||295===e;)this.state=1923,this.select_op(),this.state=1924,this.select_kind_parenthesis(),this.state=1930,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}select_kind_parenthesis(){let e=new Rw(this.context,this.state);this.enterRule(e,236,t.RULE_select_kind_parenthesis);try{switch(this.state=1936,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DISCARD:case t.FROM:case t.PROCESS:case t.REDUCE:case t.SELECT:this.enterOuterAlt(e,1),this.state=1931,this.select_kind_partial();break;case t.LPAREN:this.enterOuterAlt(e,2),this.state=1932,this.match(t.LPAREN),this.state=1933,this.select_kind_partial(),this.state=1934,this.match(t.RPAREN);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}select_op(){let e,s=new Aw(this.context,this.state);this.enterRule(s,238,t.RULE_select_op);try{switch(this.state=1944,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.UNION:this.enterOuterAlt(s,1),this.state=1938,this.match(t.UNION),this.state=1940,this.errorHandler.sync(this),e=this.tokenStream.LA(1),48===e&&(this.state=1939,this.match(t.ALL));break;case t.INTERSECT:this.enterOuterAlt(s,2),this.state=1942,this.match(t.INTERSECT);break;case t.EXCEPT:this.enterOuterAlt(s,3),this.state=1943,this.match(t.EXCEPT);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}select_kind_partial(){let e,s=new Sw(this.context,this.state);this.enterRule(s,240,t.RULE_select_kind_partial);try{this.enterOuterAlt(s,1),this.state=1946,this.select_kind(),this.state=1953,this.errorHandler.sync(this),e=this.tokenStream.LA(1),181===e&&(this.state=1947,this.match(t.LIMIT),this.state=1948,this.expr(),this.state=1951,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(26===e||202===e)&&(this.state=1949,e=this.tokenStream.LA(1),26===e||202===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1950,this.expr()))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}select_kind(){let e,s=new lw(this.context,this.state);this.enterRule(s,242,t.RULE_select_kind);try{switch(this.enterOuterAlt(s,1),this.state=1956,this.errorHandler.sync(this),e=this.tokenStream.LA(1),109===e&&(this.state=1955,this.match(t.DISCARD)),this.state=1961,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PROCESS:this.state=1958,this.process_core();break;case t.REDUCE:this.state=1959,this.reduce_core();break;case t.FROM:case t.SELECT:this.state=1960,this.select_core();break;default:throw new Ei(this)}this.state=1966,this.errorHandler.sync(this),e=this.tokenStream.LA(1),169===e&&(this.state=1963,this.match(t.INTO),this.state=1964,this.match(t.RESULT),this.state=1965,this.pure_column_or_named())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}process_core(){let e,s=new Ow(this.context,this.state);this.enterRule(s,244,t.RULE_process_core);try{if(this.enterOuterAlt(s,1),1===(this.state=1968,this.match(t.PROCESS),this.state=1970,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,161,this.context)))this.state=1969,this.match(t.STREAM);for(this.state=1972,this.named_single_source(),this.state=1977,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=1973,this.match(t.COMMA),this.state=1974,this.named_single_source(),this.state=1979,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2001,this.errorHandler.sync(this),e=this.tokenStream.LA(1),303===e&&(this.state=1980,this.match(t.USING),this.state=1981,this.using_call_expr(),this.state=1984,this.errorHandler.sync(this),e=this.tokenStream.LA(1),55===e&&(this.state=1982,this.match(t.AS),this.state=1983,this.an_id()),this.state=1988,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=1986,this.match(t.WITH),this.state=1987,this.external_call_settings()),this.state=1991,this.errorHandler.sync(this),e=this.tokenStream.LA(1),310===e&&(this.state=1990,this.where_expr()),this.state=1995,this.errorHandler.sync(this),e=this.tokenStream.LA(1),152===e&&(this.state=1993,this.match(t.HAVING),this.state=1994,this.expr()),this.state=1999,this.errorHandler.sync(this),e=this.tokenStream.LA(1),57===e&&(this.state=1997,this.match(t.ASSUME),this.state=1998,this.order_by_clause()))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}external_call_param(){let e=new Iw(this.context,this.state);this.enterRule(e,246,t.RULE_external_call_param);try{this.enterOuterAlt(e,1),this.state=2003,this.an_id(),this.state=2004,this.match(t.EQUALS),this.state=2005,this.expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}external_call_settings(){let e,s=new uw(this.context,this.state);this.enterRule(s,248,t.RULE_external_call_settings);try{for(this.enterOuterAlt(s,1),this.state=2007,this.external_call_param(),this.state=2012,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2008,this.match(t.COMMA),this.state=2009,this.external_call_param(),this.state=2014,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}reduce_core(){let e,s=new Nw(this.context,this.state);this.enterRule(s,250,t.RULE_reduce_core);try{for(this.enterOuterAlt(s,1),this.state=2015,this.match(t.REDUCE),this.state=2016,this.named_single_source(),this.state=2021,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2017,this.match(t.COMMA),this.state=2018,this.named_single_source(),this.state=2023,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(1===(this.state=2026,this.errorHandler.sync(this),e=this.tokenStream.LA(1),225===e&&(this.state=2024,this.match(t.PRESORT),this.state=2025,this.sort_specification_list()),this.state=2028,this.match(t.ON),this.state=2029,this.column_list(),this.state=2030,this.match(t.USING),this.state=2032,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,172,this.context)))this.state=2031,this.match(t.ALL);this.state=2034,this.using_call_expr(),this.state=2037,this.errorHandler.sync(this),e=this.tokenStream.LA(1),55===e&&(this.state=2035,this.match(t.AS),this.state=2036,this.an_id()),this.state=2040,this.errorHandler.sync(this),e=this.tokenStream.LA(1),310===e&&(this.state=2039,this.where_expr()),this.state=2044,this.errorHandler.sync(this),e=this.tokenStream.LA(1),152===e&&(this.state=2042,this.match(t.HAVING),this.state=2043,this.expr()),this.state=2048,this.errorHandler.sync(this),e=this.tokenStream.LA(1),57===e&&(this.state=2046,this.match(t.ASSUME),this.state=2047,this.order_by_clause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}opt_set_quantifier(){let e,s=new Lw(this.context,this.state);this.enterRule(s,252,t.RULE_opt_set_quantifier);try{if(1===(this.enterOuterAlt(s,1),this.state=2051,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,177,this.context)))this.state=2050,e=this.tokenStream.LA(1),48===e||110===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}select_core(){let e,s=new Cw(this.context,this.state);this.enterRule(s,254,t.RULE_select_core);try{let a;if(this.enterOuterAlt(s,1),1===(this.state=2055,this.errorHandler.sync(this),e=this.tokenStream.LA(1),142===e&&(this.state=2053,this.match(t.FROM),this.state=2054,this.join_source()),this.state=2057,this.match(t.SELECT),this.state=2059,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,179,this.context)))this.state=2058,this.match(t.STREAM);for(this.state=2061,this.opt_set_quantifier(),this.state=2062,this.result_column(),this.state=2067,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,180,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=2063,this.match(t.COMMA),this.state=2064,this.result_column()),this.state=2069,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,180,this.context);this.state=2071,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=2070,this.match(t.COMMA)),this.state=2075,this.errorHandler.sync(this),e=this.tokenStream.LA(1),313===e&&(this.state=2073,this.match(t.WITHOUT),this.state=2074,this.without_column_list()),this.state=2079,this.errorHandler.sync(this),e=this.tokenStream.LA(1),142===e&&(this.state=2077,this.match(t.FROM),this.state=2078,this.join_source()),this.state=2082,this.errorHandler.sync(this),e=this.tokenStream.LA(1),310===e&&(this.state=2081,this.where_expr()),this.state=2085,this.errorHandler.sync(this),e=this.tokenStream.LA(1),148===e&&(this.state=2084,this.group_by_clause()),this.state=2089,this.errorHandler.sync(this),e=this.tokenStream.LA(1),152===e&&(this.state=2087,this.match(t.HAVING),this.state=2088,this.expr()),this.state=2092,this.errorHandler.sync(this),e=this.tokenStream.LA(1),311===e&&(this.state=2091,this.window_clause()),this.state=2095,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(57===e||210===e)&&(this.state=2094,this.ext_order_by_clause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_recognition_clause(){let e,s=new _w(this.context,this.state);this.enterRule(s,256,t.RULE_row_pattern_recognition_clause);try{this.enterOuterAlt(s,1),this.state=2097,this.match(t.MATCH_RECOGNIZE),this.state=2098,this.match(t.LPAREN),this.state=2100,this.errorHandler.sync(this),e=this.tokenStream.LA(1),215===e&&(this.state=2099,this.window_partition_clause()),this.state=2103,this.errorHandler.sync(this),e=this.tokenStream.LA(1),210===e&&(this.state=2102,this.order_by_clause()),this.state=2106,this.errorHandler.sync(this),e=this.tokenStream.LA(1),188===e&&(this.state=2105,this.row_pattern_measures()),this.state=2109,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(48===e||205===e)&&(this.state=2108,this.row_pattern_rows_per_match()),this.state=2111,this.row_pattern_common_syntax(),this.state=2112,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_rows_per_match(){let e,s=new Pw(this.context,this.state);this.enterRule(s,258,t.RULE_row_pattern_rows_per_match);try{switch(this.state=2125,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ONE:this.enterOuterAlt(s,1),this.state=2114,this.match(t.ONE),this.state=2115,this.match(t.ROW),this.state=2116,this.match(t.PER),this.state=2117,this.match(t.MATCH);break;case t.ALL:this.enterOuterAlt(s,2),this.state=2118,this.match(t.ALL),this.state=2119,this.match(t.ROWS),this.state=2120,this.match(t.PER),this.state=2121,this.match(t.MATCH),this.state=2123,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(203===e||266===e||312===e)&&(this.state=2122,this.row_pattern_empty_match_handling());break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_empty_match_handling(){let e=new Mw(this.context,this.state);this.enterRule(e,260,t.RULE_row_pattern_empty_match_handling);try{switch(this.state=2136,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SHOW:this.enterOuterAlt(e,1),this.state=2127,this.match(t.SHOW),this.state=2128,this.match(t.EMPTY),this.state=2129,this.match(t.MATCHES);break;case t.OMIT:this.enterOuterAlt(e,2),this.state=2130,this.match(t.OMIT),this.state=2131,this.match(t.EMPTY),this.state=2132,this.match(t.MATCHES);break;case t.WITH:this.enterOuterAlt(e,3),this.state=2133,this.match(t.WITH),this.state=2134,this.match(t.UNMATCHED),this.state=2135,this.match(t.ROWS);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_measures(){let e=new dw(this.context,this.state);this.enterRule(e,262,t.RULE_row_pattern_measures);try{this.enterOuterAlt(e,1),this.state=2138,this.match(t.MEASURES),this.state=2139,this.row_pattern_measure_list()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_measure_list(){let e,s=new Uw(this.context,this.state);this.enterRule(s,264,t.RULE_row_pattern_measure_list);try{for(this.enterOuterAlt(s,1),this.state=2141,this.row_pattern_measure_definition(),this.state=2146,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2142,this.match(t.COMMA),this.state=2143,this.row_pattern_measure_definition(),this.state=2148,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_measure_definition(){let e=new mw(this.context,this.state);this.enterRule(e,266,t.RULE_row_pattern_measure_definition);try{this.enterOuterAlt(e,1),this.state=2149,this.expr(),this.state=2150,this.match(t.AS),this.state=2151,this.an_id()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_common_syntax(){let e,s=new Dw(this.context,this.state);this.enterRule(s,268,t.RULE_row_pattern_common_syntax);try{this.enterOuterAlt(s,1),this.state=2156,this.errorHandler.sync(this),e=this.tokenStream.LA(1),47===e&&(this.state=2153,this.match(t.AFTER),this.state=2154,this.match(t.MATCH),this.state=2155,this.row_pattern_skip_to()),this.state=2159,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(163===e||261===e)&&(this.state=2158,this.row_pattern_initial_or_seek()),this.state=2161,this.match(t.PATTERN),this.state=2162,this.match(t.LPAREN),this.state=2163,this.row_pattern(),this.state=2164,this.match(t.RPAREN),this.state=2166,this.errorHandler.sync(this),e=this.tokenStream.LA(1),272===e&&(this.state=2165,this.row_pattern_subset_clause()),this.state=2168,this.match(t.DEFINE),this.state=2169,this.row_pattern_definition_list()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_skip_to(){let e=new pw(this.context,this.state);this.enterRule(e,270,t.RULE_row_pattern_skip_to);try{switch(this.state=2190,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,200,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2171,this.match(t.SKIP_RULE),this.state=2172,this.match(t.TO),this.state=2173,this.match(t.NEXT),this.state=2174,this.match(t.ROW);break;case 2:this.enterOuterAlt(e,2),this.state=2175,this.match(t.SKIP_RULE),this.state=2176,this.match(t.PAST),this.state=2177,this.match(t.LAST),this.state=2178,this.match(t.ROW);break;case 3:this.enterOuterAlt(e,3),this.state=2179,this.match(t.SKIP_RULE),this.state=2180,this.match(t.TO),this.state=2181,this.match(t.FIRST),this.state=2182,this.row_pattern_skip_to_variable_name();break;case 4:this.enterOuterAlt(e,4),this.state=2183,this.match(t.SKIP_RULE),this.state=2184,this.match(t.TO),this.state=2185,this.match(t.LAST),this.state=2186,this.row_pattern_skip_to_variable_name();break;case 5:this.enterOuterAlt(e,5),this.state=2187,this.match(t.SKIP_RULE),this.state=2188,this.match(t.TO),this.state=2189,this.row_pattern_skip_to_variable_name()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_skip_to_variable_name(){let e=new gw(this.context,this.state);this.enterRule(e,272,t.RULE_row_pattern_skip_to_variable_name);try{this.enterOuterAlt(e,1),this.state=2192,this.row_pattern_variable_name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_initial_or_seek(){let e,s=new xw(this.context,this.state);this.enterRule(s,274,t.RULE_row_pattern_initial_or_seek);try{this.enterOuterAlt(s,1),this.state=2194,e=this.tokenStream.LA(1),163===e||261===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern(){let e,s=new kw(this.context,this.state);this.enterRule(s,276,t.RULE_row_pattern);try{for(this.enterOuterAlt(s,1),this.state=2196,this.row_pattern_term(),this.state=2201,this.errorHandler.sync(this),e=this.tokenStream.LA(1);13===e;)this.state=2197,this.match(t.PIPE),this.state=2198,this.row_pattern_term(),this.state=2203,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_term(){let e,s=new Hw(this.context,this.state);this.enterRule(s,278,t.RULE_row_pattern_term);try{this.enterOuterAlt(s,1),this.state=2205,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=2204,this.row_pattern_factor(),this.state=2207,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(!(e-27&-32)&&1<<e-27&5185||221===e||317===e||318===e)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_factor(){let e=new Gw(this.context,this.state);this.enterRule(e,280,t.RULE_row_pattern_factor);try{if(1===(this.enterOuterAlt(e,1),this.state=2209,this.row_pattern_primary(),this.state=2211,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,203,this.context)))this.state=2210,this.row_pattern_quantifier()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_quantifier(){let e,s=new Fw(this.context,this.state);this.enterRule(s,282,t.RULE_row_pattern_quantifier);try{switch(this.state=2241,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,210,this.context)){case 1:this.enterOuterAlt(s,1),this.state=2213,this.match(t.ASTERISK),this.state=2215,this.errorHandler.sync(this),e=this.tokenStream.LA(1),29===e&&(this.state=2214,this.match(t.QUESTION));break;case 2:this.enterOuterAlt(s,2),this.state=2217,this.match(t.PLUS),this.state=2219,this.errorHandler.sync(this),e=this.tokenStream.LA(1),29===e&&(this.state=2218,this.match(t.QUESTION));break;case 3:this.enterOuterAlt(s,3),this.state=2221,this.match(t.QUESTION),this.state=2223,this.errorHandler.sync(this),e=this.tokenStream.LA(1),29===e&&(this.state=2222,this.match(t.QUESTION));break;case 4:this.enterOuterAlt(s,4),this.state=2225,this.match(t.LBRACE_CURLY),this.state=2227,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(319===e||320===e)&&(this.state=2226,this.integer()),this.state=2229,this.match(t.COMMA),this.state=2231,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(319===e||320===e)&&(this.state=2230,this.integer()),this.state=2233,this.match(t.RBRACE_CURLY),this.state=2235,this.errorHandler.sync(this),e=this.tokenStream.LA(1),29===e&&(this.state=2234,this.match(t.QUESTION));break;case 5:this.enterOuterAlt(s,5),this.state=2237,this.match(t.LBRACE_CURLY),this.state=2238,this.integer(),this.state=2239,this.match(t.RBRACE_CURLY)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_primary(){let e,s=new vw(this.context,this.state);this.enterRule(s,284,t.RULE_row_pattern_primary);try{switch(this.state=2258,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(s,1),this.state=2243,this.row_pattern_primary_variable_name();break;case t.DOLLAR:this.enterOuterAlt(s,2),this.state=2244,this.match(t.DOLLAR);break;case t.CARET:this.enterOuterAlt(s,3),this.state=2245,this.match(t.CARET);break;case t.LPAREN:this.enterOuterAlt(s,4),this.state=2246,this.match(t.LPAREN),this.state=2248,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-27&-32)&&1<<e-27&5185||221===e||317===e||318===e)&&(this.state=2247,this.row_pattern()),this.state=2250,this.match(t.RPAREN);break;case t.LBRACE_CURLY:this.enterOuterAlt(s,5),this.state=2251,this.match(t.LBRACE_CURLY),this.state=2252,this.match(t.MINUS),this.state=2253,this.row_pattern(),this.state=2254,this.match(t.MINUS),this.state=2255,this.match(t.RBRACE_CURLY);break;case t.PERMUTE:this.enterOuterAlt(s,6),this.state=2257,this.row_pattern_permute();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_primary_variable_name(){let e=new Bw(this.context,this.state);this.enterRule(e,286,t.RULE_row_pattern_primary_variable_name);try{this.enterOuterAlt(e,1),this.state=2260,this.row_pattern_variable_name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_permute(){let e,s=new yw(this.context,this.state);this.enterRule(s,288,t.RULE_row_pattern_permute);try{for(this.enterOuterAlt(s,1),this.state=2262,this.match(t.PERMUTE),this.state=2263,this.match(t.LPAREN),this.state=2264,this.row_pattern(),this.state=2269,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2265,this.match(t.COMMA),this.state=2266,this.row_pattern(),this.state=2271,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2272,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_subset_clause(){let e=new fw(this.context,this.state);this.enterRule(e,290,t.RULE_row_pattern_subset_clause);try{this.enterOuterAlt(e,1),this.state=2274,this.match(t.SUBSET),this.state=2275,this.row_pattern_subset_list()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_subset_list(){let e,s=new Yw(this.context,this.state);this.enterRule(s,292,t.RULE_row_pattern_subset_list);try{for(this.enterOuterAlt(s,1),this.state=2277,this.row_pattern_subset_item(),this.state=2282,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2278,this.match(t.COMMA),this.state=2279,this.row_pattern_subset_item(),this.state=2284,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_subset_item(){let e=new ww(this.context,this.state);this.enterRule(e,294,t.RULE_row_pattern_subset_item);try{this.enterOuterAlt(e,1),this.state=2285,this.row_pattern_subset_item_variable_name(),this.state=2286,this.match(t.EQUALS),this.state=2287,this.match(t.LPAREN),this.state=2288,this.row_pattern_subset_rhs(),this.state=2289,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_subset_item_variable_name(){let e=new bw(this.context,this.state);this.enterRule(e,296,t.RULE_row_pattern_subset_item_variable_name);try{this.enterOuterAlt(e,1),this.state=2291,this.row_pattern_variable_name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_subset_rhs(){let e,s=new Ww(this.context,this.state);this.enterRule(s,298,t.RULE_row_pattern_subset_rhs);try{for(this.enterOuterAlt(s,1),this.state=2293,this.row_pattern_subset_rhs_variable_name(),this.state=2298,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2294,this.match(t.COMMA),this.state=2295,this.row_pattern_subset_rhs_variable_name(),this.state=2300,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_subset_rhs_variable_name(){let e=new Vw(this.context,this.state);this.enterRule(e,300,t.RULE_row_pattern_subset_rhs_variable_name);try{this.enterOuterAlt(e,1),this.state=2301,this.row_pattern_variable_name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_definition_list(){let e,s=new Xw(this.context,this.state);this.enterRule(s,302,t.RULE_row_pattern_definition_list);try{for(this.enterOuterAlt(s,1),this.state=2303,this.row_pattern_definition(),this.state=2308,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2304,this.match(t.COMMA),this.state=2305,this.row_pattern_definition(),this.state=2310,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}row_pattern_definition(){let e=new Kw(this.context,this.state);this.enterRule(e,304,t.RULE_row_pattern_definition);try{this.enterOuterAlt(e,1),this.state=2311,this.row_pattern_definition_variable_name(),this.state=2312,this.match(t.AS),this.state=2313,this.row_pattern_definition_search_condition()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_definition_variable_name(){let e=new Qw(this.context,this.state);this.enterRule(e,306,t.RULE_row_pattern_definition_variable_name);try{this.enterOuterAlt(e,1),this.state=2315,this.row_pattern_variable_name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_definition_search_condition(){let e=new Jw(this.context,this.state);this.enterRule(e,308,t.RULE_row_pattern_definition_search_condition);try{this.enterOuterAlt(e,1),this.state=2317,this.search_condition()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}search_condition(){let e=new Zw(this.context,this.state);this.enterRule(e,310,t.RULE_search_condition);try{this.enterOuterAlt(e,1),this.state=2319,this.expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}row_pattern_variable_name(){let e=new qw(this.context,this.state);this.enterRule(e,312,t.RULE_row_pattern_variable_name);try{this.enterOuterAlt(e,1),this.state=2321,this.identifier()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}order_by_clause(){let e=new jw(this.context,this.state);this.enterRule(e,314,t.RULE_order_by_clause);try{this.enterOuterAlt(e,1),this.state=2323,this.match(t.ORDER),this.state=2324,this.match(t.BY),this.state=2325,this.sort_specification_list()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ext_order_by_clause(){let e,s=new zw(this.context,this.state);this.enterRule(s,316,t.RULE_ext_order_by_clause);try{this.enterOuterAlt(s,1),this.state=2328,this.errorHandler.sync(this),e=this.tokenStream.LA(1),57===e&&(this.state=2327,this.match(t.ASSUME)),this.state=2330,this.order_by_clause()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}group_by_clause(){let e,s=new $w(this.context,this.state);this.enterRule(s,318,t.RULE_group_by_clause);try{this.enterOuterAlt(s,1),this.state=2332,this.match(t.GROUP),this.state=2334,this.errorHandler.sync(this),e=this.tokenStream.LA(1),80===e&&(this.state=2333,this.match(t.COMPACT)),this.state=2336,this.match(t.BY),this.state=2337,this.opt_set_quantifier(),this.state=2338,this.grouping_element_list(),this.state=2341,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=2339,this.match(t.WITH),this.state=2340,this.an_id())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}grouping_element_list(){let e,s=new tb(this.context,this.state);this.enterRule(s,320,t.RULE_grouping_element_list);try{for(this.enterOuterAlt(s,1),this.state=2343,this.grouping_element(),this.state=2348,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2344,this.match(t.COMMA),this.state=2345,this.grouping_element(),this.state=2350,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}grouping_element(){let e=new eb(this.context,this.state);this.enterRule(e,322,t.RULE_grouping_element);try{switch(this.state=2356,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,221,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2351,this.ordinary_grouping_set();break;case 2:this.enterOuterAlt(e,2),this.state=2352,this.rollup_list();break;case 3:this.enterOuterAlt(e,3),this.state=2353,this.cube_list();break;case 4:this.enterOuterAlt(e,4),this.state=2354,this.grouping_sets_specification();break;case 5:this.enterOuterAlt(e,5),this.state=2355,this.hopping_window_specification()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ordinary_grouping_set(){let e=new sb(this.context,this.state);this.enterRule(e,324,t.RULE_ordinary_grouping_set);try{this.enterOuterAlt(e,1),this.state=2358,this.named_expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}ordinary_grouping_set_list(){let e,s=new ab(this.context,this.state);this.enterRule(s,326,t.RULE_ordinary_grouping_set_list);try{for(this.enterOuterAlt(s,1),this.state=2360,this.ordinary_grouping_set(),this.state=2365,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2361,this.match(t.COMMA),this.state=2362,this.ordinary_grouping_set(),this.state=2367,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}rollup_list(){let e=new rb(this.context,this.state);this.enterRule(e,328,t.RULE_rollup_list);try{this.enterOuterAlt(e,1),this.state=2368,this.match(t.ROLLUP),this.state=2369,this.match(t.LPAREN),this.state=2370,this.ordinary_grouping_set_list(),this.state=2371,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}cube_list(){let e=new ib(this.context,this.state);this.enterRule(e,330,t.RULE_cube_list);try{this.enterOuterAlt(e,1),this.state=2373,this.match(t.CUBE),this.state=2374,this.match(t.LPAREN),this.state=2375,this.ordinary_grouping_set_list(),this.state=2376,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}grouping_sets_specification(){let e=new cb(this.context,this.state);this.enterRule(e,332,t.RULE_grouping_sets_specification);try{this.enterOuterAlt(e,1),this.state=2378,this.match(t.GROUPING),this.state=2379,this.match(t.SETS),this.state=2380,this.match(t.LPAREN),this.state=2381,this.grouping_element_list(),this.state=2382,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}hopping_window_specification(){let e=new nb(this.context,this.state);this.enterRule(e,334,t.RULE_hopping_window_specification);try{this.enterOuterAlt(e,1),this.state=2384,this.match(t.HOP),this.state=2385,this.match(t.LPAREN),this.state=2386,this.expr(),this.state=2387,this.match(t.COMMA),this.state=2388,this.expr(),this.state=2389,this.match(t.COMMA),this.state=2390,this.expr(),this.state=2391,this.match(t.COMMA),this.state=2392,this.expr(),this.state=2393,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}result_column(){let e=new hb(this.context,this.state);this.enterRule(e,336,t.RULE_result_column);try{switch(this.state=2404,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,224,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2395,this.opt_id_prefix(),this.state=2396,this.match(t.ASTERISK);break;case 2:switch(this.enterOuterAlt(e,2),this.state=2398,this.expr(),this.state=2402,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AS:this.state=2399,this.match(t.AS),this.state=2400,this.an_id_or_type();break;case t.ATTRIBUTES:case t.CONNECT:case t.CONSUMER:case t.DATA:case t.DESCRIBE:case t.DIRECTORY:case t.FIRST:case t.GRANT:case t.INITIAL:case t.LAST:case t.LEGACY:case t.MANAGE:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NEXT:case t.OMIT:case t.ONE:case t.OPTION:case t.PARALLEL:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PRIVILEGES:case t.QUEUE:case t.REMOVE:case t.REPLICATION:case t.REVOKE:case t.SECONDS:case t.SEEK:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBSET:case t.TABLES:case t.TOPIC:case t.TYPE:case t.UNMATCHED:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.state=2401,this.an_id_as_compat();case t.EOF:case t.SEMICOLON:case t.COMMA:case t.RPAREN:case t.ASSUME:case t.END:case t.EXCEPT:case t.FROM:case t.GROUP:case t.HAVING:case t.INTERSECT:case t.INTO:case t.LIMIT:case t.ORDER:case t.RETURNING:case t.UNION:case t.WHERE:case t.WINDOW:case t.WITHOUT:}}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}join_source(){let e,s=new Eb(this.context,this.state);this.enterRule(s,338,t.RULE_join_source);try{if(this.enterOuterAlt(s,1),1===(this.state=2407,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,225,this.context)))this.state=2406,this.match(t.ANY);for(this.state=2409,this.flatten_source(),this.state=2420,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e||88===e||126===e||143===e||!(e-165&-32)&&1<<e-165&268443777||212===e||251===e;){if(1===(this.state=2410,this.join_op(),this.state=2412,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,226,this.context)))this.state=2411,this.match(t.ANY);this.state=2414,this.flatten_source(),this.state=2416,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(204===e||303===e)&&(this.state=2415,this.join_constraint()),this.state=2422,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}named_column(){let e,s=new Tb(this.context,this.state);this.enterRule(s,340,t.RULE_named_column);try{this.enterOuterAlt(s,1),this.state=2423,this.column_name(),this.state=2426,this.errorHandler.sync(this),e=this.tokenStream.LA(1),55===e&&(this.state=2424,this.match(t.AS),this.state=2425,this.an_id())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}flatten_by_arg(){let e,s=new ob(this.context,this.state);this.enterRule(s,342,t.RULE_flatten_by_arg);try{switch(this.state=2436,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(s,1),this.state=2428,this.named_column();break;case t.LPAREN:this.enterOuterAlt(s,2),this.state=2429,this.match(t.LPAREN),this.state=2430,this.named_expr_list(),this.state=2432,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=2431,this.match(t.COMMA)),this.state=2434,this.match(t.RPAREN);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}flatten_source(){let e,s=new Rb(this.context,this.state);this.enterRule(s,344,t.RULE_flatten_source);try{if(this.enterOuterAlt(s,1),this.state=2438,this.named_single_source(),this.state=2448,this.errorHandler.sync(this),e=this.tokenStream.LA(1),137===e)switch(this.state=2439,this.match(t.FLATTEN),this.state=2446,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.BY:case t.DICT:case t.LIST:case t.OPTIONAL:this.state=2441,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(106===e||182===e||208===e)&&(this.state=2440,e=this.tokenStream.LA(1),106===e||182===e||208===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2443,this.match(t.BY),this.state=2444,this.flatten_by_arg();break;case t.COLUMNS:this.state=2445,this.match(t.COLUMNS);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}named_single_source(){let e,s=new Ab(this.context,this.state);this.enterRule(s,346,t.RULE_named_single_source);try{if(this.enterOuterAlt(s,1),1===(this.state=2450,this.single_source(),this.state=2452,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,235,this.context)))this.state=2451,this.row_pattern_recognition_clause();if(this.state=2462,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-55&-32)&&1<<e-55&1342177345||!(e-94&-32)&&1<<e-94&9217||!(e-136&-32)&&1<<e-136&134219777||!(e-177&-32)&&1<<e-177&1409482373||!(e-214&-32)&&1<<e-214&142647537||!(e-250&-32)&&1<<e-250&273091585||!(e-287&-32)&&1<<e-287&3758098465){switch(this.state=2457,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.AS:this.state=2454,this.match(t.AS),this.state=2455,this.an_id();break;case t.ATTRIBUTES:case t.CONNECT:case t.CONSUMER:case t.DATA:case t.DESCRIBE:case t.DIRECTORY:case t.FIRST:case t.GRANT:case t.INITIAL:case t.LAST:case t.LEGACY:case t.MANAGE:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NEXT:case t.OMIT:case t.ONE:case t.OPTION:case t.PARALLEL:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PRIVILEGES:case t.QUEUE:case t.REMOVE:case t.REPLICATION:case t.REVOKE:case t.SECONDS:case t.SEEK:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBSET:case t.TABLES:case t.TOPIC:case t.TYPE:case t.UNMATCHED:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.state=2456,this.an_id_as_compat();break;default:throw new Ei(this)}this.state=2460,this.errorHandler.sync(this),e=this.tokenStream.LA(1),27===e&&(this.state=2459,this.pure_column_list())}switch(this.state=2466,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SAMPLE:this.state=2464,this.sample_clause();break;case t.TABLESAMPLE:this.state=2465,this.tablesample_clause();case t.EOF:case t.SEMICOLON:case t.COMMA:case t.RPAREN:case t.ASSUME:case t.CROSS:case t.END:case t.EXCEPT:case t.EXCLUSION:case t.FLATTEN:case t.FULL:case t.GROUP:case t.HAVING:case t.INNER:case t.INTERSECT:case t.INTO:case t.JOIN:case t.LEFT:case t.LIMIT:case t.NATURAL:case t.ON:case t.ORDER:case t.OUTER:case t.PRESORT:case t.RETURNING:case t.RIGHT:case t.SELECT:case t.UNION:case t.USING:case t.WHERE:case t.WINDOW:}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}single_source(){let e=new Sb(this.context,this.state);this.enterRule(e,348,t.RULE_single_source);try{switch(this.state=2477,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,240,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2468,this.table_ref();break;case 2:this.enterOuterAlt(e,2),this.state=2469,this.match(t.LPAREN),this.state=2470,this.select_stmt(),this.state=2471,this.match(t.RPAREN);break;case 3:this.enterOuterAlt(e,3),this.state=2473,this.match(t.LPAREN),this.state=2474,this.values_stmt(),this.state=2475,this.match(t.RPAREN)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sample_clause(){let e=new lb(this.context,this.state);this.enterRule(e,350,t.RULE_sample_clause);try{this.enterOuterAlt(e,1),this.state=2479,this.match(t.SAMPLE),this.state=2480,this.expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}tablesample_clause(){let e,s=new Ob(this.context,this.state);this.enterRule(s,352,t.RULE_tablesample_clause);try{this.enterOuterAlt(s,1),this.state=2482,this.match(t.TABLESAMPLE),this.state=2483,this.sampling_mode(),this.state=2484,this.match(t.LPAREN),this.state=2485,this.expr(),this.state=2486,this.match(t.RPAREN),this.state=2488,this.errorHandler.sync(this),e=this.tokenStream.LA(1),239===e&&(this.state=2487,this.repeatable_clause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sampling_mode(){let e,s=new Ib(this.context,this.state);this.enterRule(s,354,t.RULE_sampling_mode);try{this.enterOuterAlt(s,1),this.state=2490,e=this.tokenStream.LA(1),66===e||276===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}repeatable_clause(){let e=new ub(this.context,this.state);this.enterRule(e,356,t.RULE_repeatable_clause);try{this.enterOuterAlt(e,1),this.state=2492,this.match(t.REPEATABLE),this.state=2493,this.match(t.LPAREN),this.state=2494,this.expr(),this.state=2495,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}join_op(){let e,s=new Nb(this.context,this.state);this.enterRule(s,358,t.RULE_join_op);try{switch(this.state=2521,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.COMMA:this.enterOuterAlt(s,1),this.state=2497,this.match(t.COMMA);break;case t.CROSS:case t.EXCLUSION:case t.FULL:case t.INNER:case t.JOIN:case t.LEFT:case t.NATURAL:case t.OUTER:case t.RIGHT:switch(this.enterOuterAlt(s,2),this.state=2499,this.errorHandler.sync(this),e=this.tokenStream.LA(1),193===e&&(this.state=2498,this.match(t.NATURAL)),this.state=2518,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.EXCLUSION:case t.FULL:case t.JOIN:case t.LEFT:case t.OUTER:case t.RIGHT:switch(this.state=2511,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LEFT:this.state=2501,this.match(t.LEFT),this.state=2503,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(206===e||263===e)&&(this.state=2502,e=this.tokenStream.LA(1),206===e||263===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;case t.RIGHT:this.state=2505,this.match(t.RIGHT),this.state=2507,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(206===e||263===e)&&(this.state=2506,e=this.tokenStream.LA(1),206===e||263===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;case t.EXCLUSION:this.state=2509,this.match(t.EXCLUSION);break;case t.FULL:this.state=2510,this.match(t.FULL);case t.JOIN:case t.OUTER:}this.state=2514,this.errorHandler.sync(this),e=this.tokenStream.LA(1),212===e&&(this.state=2513,this.match(t.OUTER));break;case t.INNER:this.state=2516,this.match(t.INNER);break;case t.CROSS:this.state=2517,this.match(t.CROSS);break;default:throw new Ei(this)}this.state=2520,this.match(t.JOIN);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}join_constraint(){let e=new Lb(this.context,this.state);this.enterRule(e,360,t.RULE_join_constraint);try{switch(this.state=2527,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ON:this.enterOuterAlt(e,1),this.state=2523,this.match(t.ON),this.state=2524,this.expr();break;case t.USING:this.enterOuterAlt(e,2),this.state=2525,this.match(t.USING),this.state=2526,this.pure_column_or_named_list();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}returning_columns_list(){let e,s=new Cb(this.context,this.state);this.enterRule(s,362,t.RULE_returning_columns_list);try{switch(this.enterOuterAlt(s,1),this.state=2529,this.match(t.RETURNING),this.state=2539,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ASTERISK:this.state=2530,this.match(t.ASTERISK);break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:for(this.state=2531,this.an_id(),this.state=2536,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2532,this.match(t.COMMA),this.state=2533,this.an_id(),this.state=2538,this.errorHandler.sync(this),e=this.tokenStream.LA(1);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}into_table_stmt(){let e,s=new _b(this.context,this.state);this.enterRule(s,364,t.RULE_into_table_stmt);try{switch(this.enterOuterAlt(s,1),this.state=2553,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,252,this.context)){case 1:this.state=2541,this.match(t.INSERT);break;case 2:this.state=2542,this.match(t.INSERT),this.state=2543,this.match(t.OR),this.state=2544,this.match(t.ABORT);break;case 3:this.state=2545,this.match(t.INSERT),this.state=2546,this.match(t.OR),this.state=2547,this.match(t.REVERT);break;case 4:this.state=2548,this.match(t.INSERT),this.state=2549,this.match(t.OR),this.state=2550,this.match(t.IGNORE);break;case 5:this.state=2551,this.match(t.UPSERT);break;case 6:this.state=2552,this.match(t.REPLACE)}this.state=2555,this.match(t.INTO),this.state=2556,this.into_simple_table_ref(),this.state=2557,this.into_values_source(),this.state=2559,this.errorHandler.sync(this),e=this.tokenStream.LA(1),248===e&&(this.state=2558,this.returning_columns_list())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}into_table_stmt_yq(){let e=new Pb(this.context,this.state);this.enterRule(e,366,t.RULE_into_table_stmt_yq);try{switch(this.enterOuterAlt(e,1),this.state=2572,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,254,this.context)){case 1:this.state=2561,this.match(t.INSERT);break;case 2:this.state=2562,this.match(t.INSERT),this.state=2563,this.match(t.OR),this.state=2564,this.match(t.ABORT);break;case 3:this.state=2565,this.match(t.INSERT),this.state=2566,this.match(t.OR),this.state=2567,this.match(t.REVERT);break;case 4:this.state=2568,this.match(t.INSERT),this.state=2569,this.match(t.OR),this.state=2570,this.match(t.IGNORE);break;case 5:this.state=2571,this.match(t.REPLACE)}this.state=2574,this.match(t.INTO),this.state=2575,this.into_simple_table_ref(),this.state=2576,this.into_values_source()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}into_values_source(){let e=new Mb(this.context,this.state);this.enterRule(e,368,t.RULE_into_values_source);try{switch(this.state=2584,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LPAREN:case t.DISCARD:case t.FROM:case t.PROCESS:case t.REDUCE:case t.SELECT:case t.VALUES:if(this.enterOuterAlt(e,1),1===(this.state=2579,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,255,this.context)))this.state=2578,this.pure_column_list();this.state=2581,this.values_source();break;case t.DEFAULT:this.enterOuterAlt(e,2),this.state=2582,this.match(t.DEFAULT),this.state=2583,this.match(t.VALUES);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}values_stmt(){let e=new db(this.context,this.state);this.enterRule(e,370,t.RULE_values_stmt);try{this.enterOuterAlt(e,1),this.state=2586,this.match(t.VALUES),this.state=2587,this.values_source_row_list()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}values_source(){let e=new Ub(this.context,this.state);this.enterRule(e,372,t.RULE_values_source);try{switch(this.state=2591,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.VALUES:this.enterOuterAlt(e,1),this.state=2589,this.values_stmt();break;case t.LPAREN:case t.DISCARD:case t.FROM:case t.PROCESS:case t.REDUCE:case t.SELECT:this.enterOuterAlt(e,2),this.state=2590,this.select_stmt();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}values_source_row_list(){let e,s=new mb(this.context,this.state);this.enterRule(s,374,t.RULE_values_source_row_list);try{for(this.enterOuterAlt(s,1),this.state=2593,this.values_source_row(),this.state=2598,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2594,this.match(t.COMMA),this.state=2595,this.values_source_row(),this.state=2600,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}values_source_row(){let e=new Db(this.context,this.state);this.enterRule(e,376,t.RULE_values_source_row);try{this.enterOuterAlt(e,1),this.state=2601,this.match(t.LPAREN),this.state=2602,this.expr_list(),this.state=2603,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}simple_values_source(){let e=new pb(this.context,this.state);this.enterRule(e,378,t.RULE_simple_values_source);try{switch(this.state=2607,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,259,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2605,this.expr_list();break;case 2:this.enterOuterAlt(e,2),this.state=2606,this.select_stmt()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}create_external_data_source_stmt(){let e,s=new gb(this.context,this.state);this.enterRule(s,380,t.RULE_create_external_data_source_stmt);try{if(this.enterOuterAlt(s,1),1===(this.state=2609,this.match(t.CREATE),this.state=2612,this.errorHandler.sync(this),e=this.tokenStream.LA(1),209===e&&(this.state=2610,this.match(t.OR),this.state=2611,this.match(t.REPLACE)),this.state=2614,this.match(t.EXTERNAL),this.state=2615,this.match(t.DATA),this.state=2616,this.match(t.SOURCE),this.state=2620,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,261,this.context)))this.state=2617,this.match(t.IF),this.state=2618,this.match(t.NOT),this.state=2619,this.match(t.EXISTS);this.state=2622,this.object_ref(),this.state=2623,this.with_table_settings()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_external_data_source_stmt(){let e,s=new xb(this.context,this.state);this.enterRule(s,382,t.RULE_alter_external_data_source_stmt);try{for(this.enterOuterAlt(s,1),this.state=2625,this.match(t.ALTER),this.state=2626,this.match(t.EXTERNAL),this.state=2627,this.match(t.DATA),this.state=2628,this.match(t.SOURCE),this.state=2629,this.object_ref(),this.state=2630,this.alter_external_data_source_action(),this.state=2635,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2631,this.match(t.COMMA),this.state=2632,this.alter_external_data_source_action(),this.state=2637,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_external_data_source_action(){let e=new kb(this.context,this.state);this.enterRule(e,384,t.RULE_alter_external_data_source_action);try{switch(this.state=2641,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,263,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2638,this.alter_table_set_table_setting_uncompat();break;case 2:this.enterOuterAlt(e,2),this.state=2639,this.alter_table_set_table_setting_compat();break;case 3:this.enterOuterAlt(e,3),this.state=2640,this.alter_table_reset_table_setting()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}drop_external_data_source_stmt(){let e=new Hb(this.context,this.state);this.enterRule(e,386,t.RULE_drop_external_data_source_stmt);try{if(this.enterOuterAlt(e,1),1===(this.state=2643,this.match(t.DROP),this.state=2644,this.match(t.EXTERNAL),this.state=2645,this.match(t.DATA),this.state=2646,this.match(t.SOURCE),this.state=2649,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,264,this.context)))this.state=2647,this.match(t.IF),this.state=2648,this.match(t.EXISTS);this.state=2651,this.object_ref()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}create_view_stmt(){let e=new Gb(this.context,this.state);this.enterRule(e,388,t.RULE_create_view_stmt);try{this.enterOuterAlt(e,1),this.state=2653,this.match(t.CREATE),this.state=2654,this.match(t.VIEW),this.state=2655,this.object_ref(),this.state=2656,this.with_table_settings(),this.state=2657,this.match(t.AS),this.state=2658,this.select_stmt()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}drop_view_stmt(){let e=new Fb(this.context,this.state);this.enterRule(e,390,t.RULE_drop_view_stmt);try{this.enterOuterAlt(e,1),this.state=2660,this.match(t.DROP),this.state=2661,this.match(t.VIEW),this.state=2662,this.object_ref()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}upsert_object_stmt(){let e,s=new vb(this.context,this.state);this.enterRule(s,392,t.RULE_upsert_object_stmt);try{this.enterOuterAlt(s,1),this.state=2664,this.match(t.UPSERT),this.state=2665,this.match(t.OBJECT),this.state=2666,this.object_ref(),this.state=2667,this.match(t.LPAREN),this.state=2668,this.match(t.TYPE),this.state=2669,this.object_type_ref(),this.state=2670,this.match(t.RPAREN),this.state=2672,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=2671,this.create_object_features())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}create_object_stmt(){let e,s=new Bb(this.context,this.state);this.enterRule(s,394,t.RULE_create_object_stmt);try{if(this.enterOuterAlt(s,1),1===(this.state=2674,this.match(t.CREATE),this.state=2675,this.match(t.OBJECT),this.state=2679,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,266,this.context)))this.state=2676,this.match(t.IF),this.state=2677,this.match(t.NOT),this.state=2678,this.match(t.EXISTS);this.state=2681,this.object_ref(),this.state=2682,this.match(t.LPAREN),this.state=2683,this.match(t.TYPE),this.state=2684,this.object_type_ref(),this.state=2685,this.match(t.RPAREN),this.state=2687,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=2686,this.create_object_features())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}create_object_features(){let e=new yb(this.context,this.state);this.enterRule(e,396,t.RULE_create_object_features);try{this.enterOuterAlt(e,1),this.state=2689,this.match(t.WITH),this.state=2690,this.object_features()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_object_stmt(){let e=new fb(this.context,this.state);this.enterRule(e,398,t.RULE_alter_object_stmt);try{this.enterOuterAlt(e,1),this.state=2692,this.match(t.ALTER),this.state=2693,this.match(t.OBJECT),this.state=2694,this.object_ref(),this.state=2695,this.match(t.LPAREN),this.state=2696,this.match(t.TYPE),this.state=2697,this.object_type_ref(),this.state=2698,this.match(t.RPAREN),this.state=2699,this.alter_object_features()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_object_features(){let e=new Yb(this.context,this.state);this.enterRule(e,400,t.RULE_alter_object_features);try{this.enterOuterAlt(e,1),this.state=2701,this.match(t.SET),this.state=2702,this.object_features()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}drop_object_stmt(){let e,s=new wb(this.context,this.state);this.enterRule(s,402,t.RULE_drop_object_stmt);try{if(this.enterOuterAlt(s,1),1===(this.state=2704,this.match(t.DROP),this.state=2705,this.match(t.OBJECT),this.state=2708,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,268,this.context)))this.state=2706,this.match(t.IF),this.state=2707,this.match(t.EXISTS);this.state=2710,this.object_ref(),this.state=2711,this.match(t.LPAREN),this.state=2712,this.match(t.TYPE),this.state=2713,this.object_type_ref(),this.state=2714,this.match(t.RPAREN),this.state=2716,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=2715,this.drop_object_features())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}drop_object_features(){let e=new bb(this.context,this.state);this.enterRule(e,404,t.RULE_drop_object_features);try{this.enterOuterAlt(e,1),this.state=2718,this.match(t.WITH),this.state=2719,this.object_features()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}object_feature_value(){let e=new Wb(this.context,this.state);this.enterRule(e,406,t.RULE_object_feature_value);try{switch(this.state=2724,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CALLABLE:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DICT:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ENUM:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FLOW:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LIST:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OPTIONAL:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESOURCE:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SET:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.STRUCT:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TAGGED:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TUPLE:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VARIANT:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=2721,this.id_or_type();break;case t.DOLLAR:this.enterOuterAlt(e,2),this.state=2722,this.bind_parameter();break;case t.STRING_VALUE:this.enterOuterAlt(e,3),this.state=2723,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}object_feature_kv(){let e=new Vb(this.context,this.state);this.enterRule(e,408,t.RULE_object_feature_kv);try{this.enterOuterAlt(e,1),this.state=2726,this.an_id_or_type(),this.state=2727,this.match(t.EQUALS),this.state=2728,this.object_feature_value()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}object_feature_flag(){let e=new Xb(this.context,this.state);this.enterRule(e,410,t.RULE_object_feature_flag);try{this.enterOuterAlt(e,1),this.state=2730,this.an_id_or_type()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}object_feature(){let e=new Kb(this.context,this.state);this.enterRule(e,412,t.RULE_object_feature);try{switch(this.state=2734,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,271,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2732,this.object_feature_kv();break;case 2:this.enterOuterAlt(e,2),this.state=2733,this.object_feature_flag()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}object_features(){let e,s=new Qb(this.context,this.state);this.enterRule(s,414,t.RULE_object_features);try{switch(this.state=2748,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CALLABLE:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DICT:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ENUM:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FLOW:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LIST:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OPTIONAL:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESOURCE:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SET:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.STRUCT:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TAGGED:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TUPLE:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VARIANT:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(s,1),this.state=2736,this.object_feature();break;case t.LPAREN:for(this.enterOuterAlt(s,2),this.state=2737,this.match(t.LPAREN),this.state=2738,this.object_feature(),this.state=2743,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2739,this.match(t.COMMA),this.state=2740,this.object_feature(),this.state=2745,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2746,this.match(t.RPAREN);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}object_type_ref(){let e=new Jb(this.context,this.state);this.enterRule(e,416,t.RULE_object_type_ref);try{this.enterOuterAlt(e,1),this.state=2750,this.an_id_or_type()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}create_table_stmt(){let e,s=new Zb(this.context,this.state);this.enterRule(s,418,t.RULE_create_table_stmt);try{let a;switch(this.enterOuterAlt(s,1),this.state=2752,this.match(t.CREATE),this.state=2755,this.errorHandler.sync(this),e=this.tokenStream.LA(1),209===e&&(this.state=2753,this.match(t.OR),this.state=2754,this.match(t.REPLACE)),this.state=2765,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.TABLE:this.state=2757,this.match(t.TABLE);break;case t.TABLESTORE:this.state=2758,this.match(t.TABLESTORE);break;case t.EXTERNAL:this.state=2759,this.match(t.EXTERNAL),this.state=2760,this.match(t.TABLE);break;case t.TEMP:this.state=2761,this.match(t.TEMP),this.state=2762,this.match(t.TABLE);break;case t.TEMPORARY:this.state=2763,this.match(t.TEMPORARY),this.state=2764,this.match(t.TABLE);break;default:throw new Ei(this)}if(1===(this.state=2770,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,276,this.context)))this.state=2767,this.match(t.IF),this.state=2768,this.match(t.NOT),this.state=2769,this.match(t.EXISTS);for(this.state=2772,this.simple_table_ref(),this.state=2773,this.match(t.LPAREN),this.state=2774,this.create_table_entry(),this.state=2779,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,277,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=2775,this.match(t.COMMA),this.state=2776,this.create_table_entry()),this.state=2781,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,277,this.context);this.state=2783,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=2782,this.match(t.COMMA)),this.state=2785,this.match(t.RPAREN),this.state=2787,this.errorHandler.sync(this),e=this.tokenStream.LA(1),162===e&&(this.state=2786,this.table_inherits()),this.state=2790,this.errorHandler.sync(this),e=this.tokenStream.LA(1),215===e&&(this.state=2789,this.table_partition_by()),this.state=2793,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=2792,this.with_table_settings()),this.state=2796,this.errorHandler.sync(this),e=this.tokenStream.LA(1),280===e&&(this.state=2795,this.table_tablestore()),this.state=2799,this.errorHandler.sync(this),e=this.tokenStream.LA(1),55===e&&(this.state=2798,this.table_as_source())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}create_table_entry(){let e=new qb(this.context,this.state);this.enterRule(e,420,t.RULE_create_table_entry);try{switch(this.state=2807,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,284,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2801,this.column_schema();break;case 2:this.enterOuterAlt(e,2),this.state=2802,this.table_constraint();break;case 3:this.enterOuterAlt(e,3),this.state=2803,this.table_index();break;case 4:this.enterOuterAlt(e,4),this.state=2804,this.family_entry();break;case 5:this.enterOuterAlt(e,5),this.state=2805,this.changefeed();break;case 6:this.enterOuterAlt(e,6),this.state=2806,this.an_id_schema()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}table_inherits(){let e,s=new jb(this.context,this.state);this.enterRule(s,422,t.RULE_table_inherits);try{for(this.enterOuterAlt(s,1),this.state=2809,this.match(t.INHERITS),this.state=2810,this.match(t.LPAREN),this.state=2811,this.simple_table_ref_core(),this.state=2816,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2812,this.match(t.COMMA),this.state=2813,this.simple_table_ref_core(),this.state=2818,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2819,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}table_partition_by(){let e=new zb(this.context,this.state);this.enterRule(e,424,t.RULE_table_partition_by);try{this.enterOuterAlt(e,1),this.state=2821,this.match(t.PARTITION),this.state=2822,this.match(t.BY),this.state=2823,this.match(t.HASH),this.state=2824,this.pure_column_list()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}with_table_settings(){let e,s=new $b(this.context,this.state);this.enterRule(s,426,t.RULE_with_table_settings);try{for(this.enterOuterAlt(s,1),this.state=2826,this.match(t.WITH),this.state=2827,this.match(t.LPAREN),this.state=2828,this.table_settings_entry(),this.state=2833,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2829,this.match(t.COMMA),this.state=2830,this.table_settings_entry(),this.state=2835,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2836,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}table_tablestore(){let e=new tW(this.context,this.state);this.enterRule(e,428,t.RULE_table_tablestore);try{this.enterOuterAlt(e,1),this.state=2838,this.match(t.TABLESTORE),this.state=2839,this.simple_table_ref_core()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}table_settings_entry(){let e=new eW(this.context,this.state);this.enterRule(e,430,t.RULE_table_settings_entry);try{this.enterOuterAlt(e,1),this.state=2841,this.an_id(),this.state=2842,this.match(t.EQUALS),this.state=2843,this.table_setting_value()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}table_as_source(){let e=new sW(this.context,this.state);this.enterRule(e,432,t.RULE_table_as_source);try{this.enterOuterAlt(e,1),this.state=2845,this.match(t.AS),this.state=2846,this.values_source()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_stmt(){let e,s=new aW(this.context,this.state);this.enterRule(s,434,t.RULE_alter_table_stmt);try{for(this.enterOuterAlt(s,1),this.state=2848,this.match(t.ALTER),this.state=2849,this.match(t.TABLE),this.state=2850,this.simple_table_ref(),this.state=2851,this.alter_table_action(),this.state=2856,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2852,this.match(t.COMMA),this.state=2853,this.alter_table_action(),this.state=2858,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_table_action(){let e=new rW(this.context,this.state);this.enterRule(e,436,t.RULE_alter_table_action);try{switch(this.state=2874,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,288,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2859,this.alter_table_add_column();break;case 2:this.enterOuterAlt(e,2),this.state=2860,this.alter_table_drop_column();break;case 3:this.enterOuterAlt(e,3),this.state=2861,this.alter_table_alter_column();break;case 4:this.enterOuterAlt(e,4),this.state=2862,this.alter_table_add_column_family();break;case 5:this.enterOuterAlt(e,5),this.state=2863,this.alter_table_alter_column_family();break;case 6:this.enterOuterAlt(e,6),this.state=2864,this.alter_table_set_table_setting_uncompat();break;case 7:this.enterOuterAlt(e,7),this.state=2865,this.alter_table_set_table_setting_compat();break;case 8:this.enterOuterAlt(e,8),this.state=2866,this.alter_table_reset_table_setting();break;case 9:this.enterOuterAlt(e,9),this.state=2867,this.alter_table_add_index();break;case 10:this.enterOuterAlt(e,10),this.state=2868,this.alter_table_drop_index();break;case 11:this.enterOuterAlt(e,11),this.state=2869,this.alter_table_rename_to();break;case 12:this.enterOuterAlt(e,12),this.state=2870,this.alter_table_add_changefeed();break;case 13:this.enterOuterAlt(e,13),this.state=2871,this.alter_table_alter_changefeed();break;case 14:this.enterOuterAlt(e,14),this.state=2872,this.alter_table_drop_changefeed();break;case 15:this.enterOuterAlt(e,15),this.state=2873,this.alter_table_rename_index_to()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_external_table_stmt(){let e,s=new iW(this.context,this.state);this.enterRule(s,438,t.RULE_alter_external_table_stmt);try{for(this.enterOuterAlt(s,1),this.state=2876,this.match(t.ALTER),this.state=2877,this.match(t.EXTERNAL),this.state=2878,this.match(t.TABLE),this.state=2879,this.simple_table_ref(),this.state=2880,this.alter_external_table_action(),this.state=2885,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2881,this.match(t.COMMA),this.state=2882,this.alter_external_table_action(),this.state=2887,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_external_table_action(){let e=new cW(this.context,this.state);this.enterRule(e,440,t.RULE_alter_external_table_action);try{switch(this.state=2893,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,290,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2888,this.alter_table_add_column();break;case 2:this.enterOuterAlt(e,2),this.state=2889,this.alter_table_drop_column();break;case 3:this.enterOuterAlt(e,3),this.state=2890,this.alter_table_set_table_setting_uncompat();break;case 4:this.enterOuterAlt(e,4),this.state=2891,this.alter_table_set_table_setting_compat();break;case 5:this.enterOuterAlt(e,5),this.state=2892,this.alter_table_reset_table_setting()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_store_stmt(){let e,s=new nW(this.context,this.state);this.enterRule(s,442,t.RULE_alter_table_store_stmt);try{for(this.enterOuterAlt(s,1),this.state=2895,this.match(t.ALTER),this.state=2896,this.match(t.TABLESTORE),this.state=2897,this.object_ref(),this.state=2898,this.alter_table_store_action(),this.state=2903,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2899,this.match(t.COMMA),this.state=2900,this.alter_table_store_action(),this.state=2905,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_table_store_action(){let e=new hW(this.context,this.state);this.enterRule(e,444,t.RULE_alter_table_store_action);try{switch(this.state=2908,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ADD:this.enterOuterAlt(e,1),this.state=2906,this.alter_table_add_column();break;case t.DROP:this.enterOuterAlt(e,2),this.state=2907,this.alter_table_drop_column();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_add_column(){let e,s=new EW(this.context,this.state);this.enterRule(s,446,t.RULE_alter_table_add_column);try{this.enterOuterAlt(s,1),this.state=2910,this.match(t.ADD),this.state=2912,this.errorHandler.sync(this),e=this.tokenStream.LA(1),77===e&&(this.state=2911,this.match(t.COLUMN)),this.state=2914,this.column_schema()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_table_drop_column(){let e=new TW(this.context,this.state);this.enterRule(e,448,t.RULE_alter_table_drop_column);try{if(this.enterOuterAlt(e,1),1===(this.state=2916,this.match(t.DROP),this.state=2918,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,294,this.context)))this.state=2917,this.match(t.COLUMN);this.state=2920,this.an_id()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_alter_column(){let e=new oW(this.context,this.state);this.enterRule(e,450,t.RULE_alter_table_alter_column);try{this.enterOuterAlt(e,1),this.state=2922,this.match(t.ALTER),this.state=2923,this.match(t.COLUMN),this.state=2924,this.an_id(),this.state=2925,this.match(t.SET),this.state=2926,this.family_relation()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_add_column_family(){let e=new RW(this.context,this.state);this.enterRule(e,452,t.RULE_alter_table_add_column_family);try{this.enterOuterAlt(e,1),this.state=2928,this.match(t.ADD),this.state=2929,this.family_entry()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_alter_column_family(){let e=new AW(this.context,this.state);this.enterRule(e,454,t.RULE_alter_table_alter_column_family);try{this.enterOuterAlt(e,1),this.state=2931,this.match(t.ALTER),this.state=2932,this.match(t.FAMILY),this.state=2933,this.an_id(),this.state=2934,this.match(t.SET),this.state=2935,this.an_id(),this.state=2936,this.family_setting_value()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_set_table_setting_uncompat(){let e=new SW(this.context,this.state);this.enterRule(e,456,t.RULE_alter_table_set_table_setting_uncompat);try{this.enterOuterAlt(e,1),this.state=2938,this.match(t.SET),this.state=2939,this.an_id(),this.state=2940,this.table_setting_value()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_set_table_setting_compat(){let e,s=new lW(this.context,this.state);this.enterRule(s,458,t.RULE_alter_table_set_table_setting_compat);try{for(this.enterOuterAlt(s,1),this.state=2942,this.match(t.SET),this.state=2943,this.match(t.LPAREN),this.state=2944,this.alter_table_setting_entry(),this.state=2949,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2945,this.match(t.COMMA),this.state=2946,this.alter_table_setting_entry(),this.state=2951,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2952,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_table_reset_table_setting(){let e,s=new OW(this.context,this.state);this.enterRule(s,460,t.RULE_alter_table_reset_table_setting);try{for(this.enterOuterAlt(s,1),this.state=2954,this.match(t.RESET),this.state=2955,this.match(t.LPAREN),this.state=2956,this.an_id(),this.state=2961,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=2957,this.match(t.COMMA),this.state=2958,this.an_id(),this.state=2963,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=2964,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_table_add_index(){let e=new IW(this.context,this.state);this.enterRule(e,462,t.RULE_alter_table_add_index);try{this.enterOuterAlt(e,1),this.state=2966,this.match(t.ADD),this.state=2967,this.table_index()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_drop_index(){let e=new uW(this.context,this.state);this.enterRule(e,464,t.RULE_alter_table_drop_index);try{this.enterOuterAlt(e,1),this.state=2969,this.match(t.DROP),this.state=2970,this.match(t.INDEX),this.state=2971,this.an_id()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_rename_to(){let e=new NW(this.context,this.state);this.enterRule(e,466,t.RULE_alter_table_rename_to);try{this.enterOuterAlt(e,1),this.state=2973,this.match(t.RENAME),this.state=2974,this.match(t.TO),this.state=2975,this.an_id_table()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_rename_index_to(){let e=new LW(this.context,this.state);this.enterRule(e,468,t.RULE_alter_table_rename_index_to);try{this.enterOuterAlt(e,1),this.state=2977,this.match(t.RENAME),this.state=2978,this.match(t.INDEX),this.state=2979,this.an_id(),this.state=2980,this.match(t.TO),this.state=2981,this.an_id()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_add_changefeed(){let e=new CW(this.context,this.state);this.enterRule(e,470,t.RULE_alter_table_add_changefeed);try{this.enterOuterAlt(e,1),this.state=2983,this.match(t.ADD),this.state=2984,this.changefeed()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_alter_changefeed(){let e=new _W(this.context,this.state);this.enterRule(e,472,t.RULE_alter_table_alter_changefeed);try{this.enterOuterAlt(e,1),this.state=2986,this.match(t.ALTER),this.state=2987,this.match(t.CHANGEFEED),this.state=2988,this.an_id(),this.state=2989,this.changefeed_alter_settings()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_drop_changefeed(){let e=new PW(this.context,this.state);this.enterRule(e,474,t.RULE_alter_table_drop_changefeed);try{this.enterOuterAlt(e,1),this.state=2991,this.match(t.DROP),this.state=2992,this.match(t.CHANGEFEED),this.state=2993,this.an_id()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}column_schema(){let e,s=new MW(this.context,this.state);this.enterRule(s,476,t.RULE_column_schema);try{this.enterOuterAlt(s,1),this.state=2995,this.an_id_schema(),this.state=2996,this.type_name_or_bind(),this.state=2998,this.errorHandler.sync(this),e=this.tokenStream.LA(1),134===e&&(this.state=2997,this.family_relation()),this.state=3e3,this.opt_column_constraints()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}family_relation(){let e=new dW(this.context,this.state);this.enterRule(e,478,t.RULE_family_relation);try{this.enterOuterAlt(e,1),this.state=3002,this.match(t.FAMILY),this.state=3003,this.an_id()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}opt_column_constraints(){let e,s=new UW(this.context,this.state);this.enterRule(s,480,t.RULE_opt_column_constraints);try{this.enterOuterAlt(s,1),this.state=3009,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(196===e||198===e)&&(this.state=3006,this.errorHandler.sync(this),e=this.tokenStream.LA(1),196===e&&(this.state=3005,this.match(t.NOT)),this.state=3008,this.match(t.NULL)),this.state=3013,this.errorHandler.sync(this),e=this.tokenStream.LA(1),98===e&&(this.state=3011,this.match(t.DEFAULT),this.state=3012,this.expr())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}column_order_by_specification(){let e,s=new mW(this.context,this.state);this.enterRule(s,482,t.RULE_column_order_by_specification);try{this.enterOuterAlt(s,1),this.state=3015,this.an_id(),this.state=3017,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(56===e||103===e)&&(this.state=3016,e=this.tokenStream.LA(1),56===e||103===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}table_constraint(){let e,s=new DW(this.context,this.state);this.enterRule(s,484,t.RULE_table_constraint);try{switch(this.state=3058,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.PRIMARY:for(this.enterOuterAlt(s,1),this.state=3019,this.match(t.PRIMARY),this.state=3020,this.match(t.KEY),this.state=3021,this.match(t.LPAREN),this.state=3022,this.an_id(),this.state=3027,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3023,this.match(t.COMMA),this.state=3024,this.an_id(),this.state=3029,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3030,this.match(t.RPAREN);break;case t.PARTITION:for(this.enterOuterAlt(s,2),this.state=3032,this.match(t.PARTITION),this.state=3033,this.match(t.BY),this.state=3034,this.match(t.LPAREN),this.state=3035,this.an_id(),this.state=3040,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3036,this.match(t.COMMA),this.state=3037,this.an_id(),this.state=3042,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3043,this.match(t.RPAREN);break;case t.ORDER:for(this.enterOuterAlt(s,3),this.state=3045,this.match(t.ORDER),this.state=3046,this.match(t.BY),this.state=3047,this.match(t.LPAREN),this.state=3048,this.column_order_by_specification(),this.state=3053,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3049,this.match(t.COMMA),this.state=3050,this.column_order_by_specification(),this.state=3055,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3056,this.match(t.RPAREN);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}table_index(){let e,s=new pW(this.context,this.state);this.enterRule(s,486,t.RULE_table_index);try{let a;if(this.enterOuterAlt(s,1),this.state=3060,this.match(t.INDEX),this.state=3061,this.an_id(),this.state=3062,this.table_index_type(),this.state=3083,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e){for(this.state=3063,this.match(t.WITH),this.state=3064,this.match(t.LPAREN),this.state=3065,this.an_id(),this.state=3066,this.match(t.EQUALS),this.state=3067,this.an_id(),this.state=3075,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,306,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3068,this.match(t.COMMA),this.state=3069,this.an_id(),this.state=3070,this.match(t.EQUALS),this.state=3071,this.an_id()),this.state=3077,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,306,this.context);this.state=3079,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=3078,this.match(t.COMMA)),this.state=3081,this.match(t.RPAREN)}for(this.state=3085,this.match(t.ON),this.state=3086,this.match(t.LPAREN),this.state=3087,this.an_id_schema(),this.state=3092,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3088,this.match(t.COMMA),this.state=3089,this.an_id_schema(),this.state=3094,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(this.state=3095,this.match(t.RPAREN),this.state=3108,this.errorHandler.sync(this),e=this.tokenStream.LA(1),86===e){for(this.state=3096,this.match(t.COVER),this.state=3097,this.match(t.LPAREN),this.state=3098,this.an_id_schema(),this.state=3103,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3099,this.match(t.COMMA),this.state=3100,this.an_id_schema(),this.state=3105,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3106,this.match(t.RPAREN)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}table_index_type(){let e=new gW(this.context,this.state);this.enterRule(e,488,t.RULE_table_index_type);try{switch(this.state=3112,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.GLOBAL:this.enterOuterAlt(e,1),this.state=3110,this.global_index();break;case t.LOCAL:this.enterOuterAlt(e,2),this.state=3111,this.local_index();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}global_index(){let e,s=new xW(this.context,this.state);this.enterRule(s,490,t.RULE_global_index);try{this.enterOuterAlt(s,1),this.state=3114,this.match(t.GLOBAL),this.state=3116,this.errorHandler.sync(this),e=this.tokenStream.LA(1),296===e&&(this.state=3115,this.match(t.UNIQUE)),this.state=3119,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(59===e||275===e)&&(this.state=3118,e=this.tokenStream.LA(1),59===e||275===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}local_index(){let e=new kW(this.context,this.state);this.enterRule(e,492,t.RULE_local_index);try{this.enterOuterAlt(e,1),this.state=3121,this.match(t.LOCAL)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}changefeed(){let e=new HW(this.context,this.state);this.enterRule(e,494,t.RULE_changefeed);try{this.enterOuterAlt(e,1),this.state=3123,this.match(t.CHANGEFEED),this.state=3124,this.an_id(),this.state=3125,this.match(t.WITH),this.state=3126,this.match(t.LPAREN),this.state=3127,this.changefeed_settings(),this.state=3128,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}changefeed_settings(){let e,s=new GW(this.context,this.state);this.enterRule(s,496,t.RULE_changefeed_settings);try{for(this.enterOuterAlt(s,1),this.state=3130,this.changefeed_settings_entry(),this.state=3135,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3131,this.match(t.COMMA),this.state=3132,this.changefeed_settings_entry(),this.state=3137,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}changefeed_settings_entry(){let e=new FW(this.context,this.state);this.enterRule(e,498,t.RULE_changefeed_settings_entry);try{this.enterOuterAlt(e,1),this.state=3138,this.an_id(),this.state=3139,this.match(t.EQUALS),this.state=3140,this.changefeed_setting_value()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}changefeed_setting_value(){let e=new vW(this.context,this.state);this.enterRule(e,500,t.RULE_changefeed_setting_value);try{this.enterOuterAlt(e,1),this.state=3142,this.expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}changefeed_alter_settings(){let e=new BW(this.context,this.state);this.enterRule(e,502,t.RULE_changefeed_alter_settings);try{switch(this.state=3150,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DISABLE:this.enterOuterAlt(e,1),this.state=3144,this.match(t.DISABLE);break;case t.SET:this.enterOuterAlt(e,2),this.state=3145,this.match(t.SET),this.state=3146,this.match(t.LPAREN),this.state=3147,this.changefeed_settings(),this.state=3148,this.match(t.RPAREN);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_setting_entry(){let e=new yW(this.context,this.state);this.enterRule(e,504,t.RULE_alter_table_setting_entry);try{this.enterOuterAlt(e,1),this.state=3152,this.an_id(),this.state=3153,this.match(t.EQUALS),this.state=3154,this.table_setting_value()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}table_setting_value(){let e,s=new fW(this.context,this.state);this.enterRule(s,506,t.RULE_table_setting_value);try{switch(this.state=3168,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,318,this.context)){case 1:this.enterOuterAlt(s,1),this.state=3156,this.id();break;case 2:this.enterOuterAlt(s,2),this.state=3157,this.match(t.STRING_VALUE);break;case 3:this.enterOuterAlt(s,3),this.state=3158,this.integer();break;case 4:this.enterOuterAlt(s,4),this.state=3159,this.split_boundaries();break;case 5:this.enterOuterAlt(s,5),this.state=3160,this.expr(),this.state=3161,this.match(t.ON),this.state=3162,this.an_id(),this.state=3165,this.errorHandler.sync(this),e=this.tokenStream.LA(1),55===e&&(this.state=3163,this.match(t.AS),this.state=3164,e=this.tokenStream.LA(1),!(e-189&-32)&&1<<e-189&11||260===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;case 6:this.enterOuterAlt(s,6),this.state=3167,this.bool_value()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}family_entry(){let e=new YW(this.context,this.state);this.enterRule(e,508,t.RULE_family_entry);try{this.enterOuterAlt(e,1),this.state=3170,this.match(t.FAMILY),this.state=3171,this.an_id(),this.state=3172,this.family_settings()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}family_settings(){let e,s=new wW(this.context,this.state);this.enterRule(s,510,t.RULE_family_settings);try{if(this.enterOuterAlt(s,1),this.state=3174,this.match(t.LPAREN),this.state=3183,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-44&-32)&&1<<e-44&4227334143||!(e-76&-32)&&1<<e-76&3221225471||!(e-108&-32)&&1<<e-108&3187668991||!(e-140&-32)&&1<<e-140&4294967231||!(e-172&-32)&&1<<e-172&4294966271||!(e-204&-32)&&1<<e-204&4294967279||!(e-236&-32)&&1<<e-236&4026531703||!(e-268&-32)&&1<<e-268&4282376187||!(e-300&-32)&&1<<e-300&524223)for(this.state=3175,this.family_settings_entry(),this.state=3180,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3176,this.match(t.COMMA),this.state=3177,this.family_settings_entry(),this.state=3182,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3185,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}family_settings_entry(){let e=new bW(this.context,this.state);this.enterRule(e,512,t.RULE_family_settings_entry);try{this.enterOuterAlt(e,1),this.state=3187,this.an_id(),this.state=3188,this.match(t.EQUALS),this.state=3189,this.family_setting_value()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}family_setting_value(){let e=new WW(this.context,this.state);this.enterRule(e,514,t.RULE_family_setting_value);try{this.enterOuterAlt(e,1),this.state=3191,this.match(t.STRING_VALUE)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}split_boundaries(){let e,s=new VW(this.context,this.state);this.enterRule(s,516,t.RULE_split_boundaries);try{switch(this.state=3205,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,322,this.context)){case 1:for(this.enterOuterAlt(s,1),this.state=3193,this.match(t.LPAREN),this.state=3194,this.literal_value_list(),this.state=3199,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3195,this.match(t.COMMA),this.state=3196,this.literal_value_list(),this.state=3201,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3202,this.match(t.RPAREN);break;case 2:this.enterOuterAlt(s,2),this.state=3204,this.literal_value_list()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}literal_value_list(){let e,s=new XW(this.context,this.state);this.enterRule(s,518,t.RULE_literal_value_list);try{for(this.enterOuterAlt(s,1),this.state=3207,this.match(t.LPAREN),this.state=3208,this.literal_value(),this.state=3213,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3209,this.match(t.COMMA),this.state=3210,this.literal_value(),this.state=3215,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3216,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}drop_table_stmt(){let e=new KW(this.context,this.state);this.enterRule(e,520,t.RULE_drop_table_stmt);try{switch(this.enterOuterAlt(e,1),this.state=3218,this.match(t.DROP),this.state=3223,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.TABLE:this.state=3219,this.match(t.TABLE);break;case t.TABLESTORE:this.state=3220,this.match(t.TABLESTORE);break;case t.EXTERNAL:this.state=3221,this.match(t.EXTERNAL),this.state=3222,this.match(t.TABLE);break;default:throw new Ei(this)}if(1===(this.state=3227,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,325,this.context)))this.state=3225,this.match(t.IF),this.state=3226,this.match(t.EXISTS);this.state=3229,this.simple_table_ref()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}create_user_stmt(){let e,s=new QW(this.context,this.state);this.enterRule(s,522,t.RULE_create_user_stmt);try{this.enterOuterAlt(s,1),this.state=3231,this.match(t.CREATE),this.state=3232,this.match(t.USER),this.state=3233,this.role_name(),this.state=3235,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(117===e||217===e)&&(this.state=3234,this.create_user_option())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_user_stmt(){let e,s=new JW(this.context,this.state);this.enterRule(s,524,t.RULE_alter_user_stmt);try{switch(this.enterOuterAlt(s,1),this.state=3237,this.match(t.ALTER),this.state=3238,this.match(t.USER),this.state=3239,this.role_name(),this.state=3247,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ENCRYPTED:case t.PASSWORD:case t.WITH:this.state=3241,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=3240,this.match(t.WITH)),this.state=3243,this.create_user_option();break;case t.RENAME:this.state=3244,this.match(t.RENAME),this.state=3245,this.match(t.TO),this.state=3246,this.role_name();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}create_group_stmt(){let e,s=new ZW(this.context,this.state);this.enterRule(s,526,t.RULE_create_group_stmt);try{let a;if(this.enterOuterAlt(s,1),this.state=3249,this.match(t.CREATE),this.state=3250,this.match(t.GROUP),this.state=3251,this.role_name(),this.state=3265,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e){for(this.state=3252,this.match(t.WITH),this.state=3253,this.match(t.USER),this.state=3254,this.role_name(),this.state=3259,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,329,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3255,this.match(t.COMMA),this.state=3256,this.role_name()),this.state=3261,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,329,this.context);this.state=3263,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=3262,this.match(t.COMMA))}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_group_stmt(){let e,s=new qW(this.context,this.state);this.enterRule(s,528,t.RULE_alter_group_stmt);try{let a;switch(this.enterOuterAlt(s,1),this.state=3267,this.match(t.ALTER),this.state=3268,this.match(t.GROUP),this.state=3269,this.role_name(),this.state=3286,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ADD:case t.DROP:for(this.state=3270,e=this.tokenStream.LA(1),46===e||112===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3271,this.match(t.USER),this.state=3272,this.role_name(),this.state=3277,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,332,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3273,this.match(t.COMMA),this.state=3274,this.role_name()),this.state=3279,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,332,this.context);this.state=3281,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=3280,this.match(t.COMMA));break;case t.RENAME:this.state=3283,this.match(t.RENAME),this.state=3284,this.match(t.TO),this.state=3285,this.role_name();break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}drop_role_stmt(){let e,s=new jW(this.context,this.state);this.enterRule(s,530,t.RULE_drop_role_stmt);try{let a;if(this.enterOuterAlt(s,1),1===(this.state=3288,this.match(t.DROP),this.state=3289,e=this.tokenStream.LA(1),148===e||302===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3292,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,335,this.context)))this.state=3290,this.match(t.IF),this.state=3291,this.match(t.EXISTS);for(this.state=3294,this.role_name(),this.state=3299,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,336,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3295,this.match(t.COMMA),this.state=3296,this.role_name()),this.state=3301,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,336,this.context);this.state=3303,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=3302,this.match(t.COMMA))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}role_name(){let e=new zW(this.context,this.state);this.enterRule(e,532,t.RULE_role_name);try{switch(this.state=3307,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CALLABLE:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DICT:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ENUM:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FLOW:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LIST:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OPTIONAL:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESOURCE:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SET:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.STRUCT:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TAGGED:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TUPLE:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VARIANT:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=3305,this.an_id_or_type();break;case t.DOLLAR:this.enterOuterAlt(e,2),this.state=3306,this.bind_parameter();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}create_user_option(){let e,s=new $W(this.context,this.state);this.enterRule(s,534,t.RULE_create_user_option);try{this.enterOuterAlt(s,1),this.state=3310,this.errorHandler.sync(this),e=this.tokenStream.LA(1),117===e&&(this.state=3309,this.match(t.ENCRYPTED)),this.state=3312,this.match(t.PASSWORD),this.state=3313,this.expr()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}grant_permissions_stmt(){let e,s=new tV(this.context,this.state);this.enterRule(s,536,t.RULE_grant_permissions_stmt);try{let a;for(this.enterOuterAlt(s,1),this.state=3315,this.match(t.GRANT),this.state=3316,this.permission_name_target(),this.state=3317,this.match(t.ON),this.state=3318,this.an_id_schema(),this.state=3323,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3319,this.match(t.COMMA),this.state=3320,this.an_id_schema(),this.state=3325,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=3326,this.match(t.TO),this.state=3327,this.role_name(),this.state=3332,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,341,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3328,this.match(t.COMMA),this.state=3329,this.role_name()),this.state=3334,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,341,this.context);this.state=3336,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=3335,this.match(t.COMMA)),this.state=3341,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=3338,this.match(t.WITH),this.state=3339,this.match(t.GRANT),this.state=3340,this.match(t.OPTION))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}revoke_permissions_stmt(){let e,s=new eV(this.context,this.state);this.enterRule(s,538,t.RULE_revoke_permissions_stmt);try{if(this.enterOuterAlt(s,1),1===(this.state=3343,this.match(t.REVOKE),this.state=3347,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,344,this.context)))this.state=3344,this.match(t.GRANT),this.state=3345,this.match(t.OPTION),this.state=3346,this.match(t.FOR);for(this.state=3349,this.permission_name_target(),this.state=3350,this.match(t.ON),this.state=3351,this.an_id_schema(),this.state=3356,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3352,this.match(t.COMMA),this.state=3353,this.an_id_schema(),this.state=3358,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=3359,this.match(t.FROM),this.state=3360,this.role_name(),this.state=3365,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3361,this.match(t.COMMA),this.state=3362,this.role_name(),this.state=3367,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}permission_id(){let e,s=new sV(this.context,this.state);this.enterRule(s,540,t.RULE_permission_id);try{switch(this.state=3392,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.CONNECT:this.enterOuterAlt(s,1),this.state=3368,this.match(t.CONNECT);break;case t.LIST:this.enterOuterAlt(s,2),this.state=3369,this.match(t.LIST);break;case t.INSERT:this.enterOuterAlt(s,3),this.state=3370,this.match(t.INSERT);break;case t.MANAGE:this.enterOuterAlt(s,4),this.state=3371,this.match(t.MANAGE);break;case t.DROP:this.enterOuterAlt(s,5),this.state=3372,this.match(t.DROP);break;case t.GRANT:this.enterOuterAlt(s,6),this.state=3373,this.match(t.GRANT);break;case t.MODIFY:this.enterOuterAlt(s,7),this.state=3374,this.match(t.MODIFY),this.state=3375,e=this.tokenStream.LA(1),61===e||278===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case t.ERASE:case t.UPDATE:this.enterOuterAlt(s,8),this.state=3376,e=this.tokenStream.LA(1),120===e||299===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3377,this.match(t.ROW);break;case t.ALTER:case t.DESCRIBE:case t.REMOVE:this.enterOuterAlt(s,9),this.state=3378,e=this.tokenStream.LA(1),49===e||104===e||237===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3379,this.match(t.SCHEMA);break;case t.SELECT:this.enterOuterAlt(s,10),this.state=3380,this.match(t.SELECT),this.state=3382,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(61===e||255===e||278===e)&&(this.state=3381,e=this.tokenStream.LA(1),61===e||255===e||278===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;case t.FULL:case t.USE:this.enterOuterAlt(s,11),this.state=3384,e=this.tokenStream.LA(1),143===e||301===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3386,this.errorHandler.sync(this),e=this.tokenStream.LA(1),179===e&&(this.state=3385,this.match(t.LEGACY));break;case t.CREATE:this.enterOuterAlt(s,12),this.state=3388,this.match(t.CREATE),this.state=3390,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(107===e||229===e||277===e)&&(this.state=3389,e=this.tokenStream.LA(1),107===e||229===e||277===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}permission_name(){let e=new aV(this.context,this.state);this.enterRule(e,542,t.RULE_permission_name);try{switch(this.state=3396,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALTER:case t.CONNECT:case t.CREATE:case t.DESCRIBE:case t.DROP:case t.ERASE:case t.FULL:case t.GRANT:case t.INSERT:case t.LIST:case t.MANAGE:case t.MODIFY:case t.REMOVE:case t.SELECT:case t.UPDATE:case t.USE:this.enterOuterAlt(e,1),this.state=3394,this.permission_id();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=3395,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}permission_name_target(){let e,s=new rV(this.context,this.state);this.enterRule(s,544,t.RULE_permission_name_target);try{let a;switch(this.state=3413,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ALTER:case t.CONNECT:case t.CREATE:case t.DESCRIBE:case t.DROP:case t.ERASE:case t.FULL:case t.GRANT:case t.INSERT:case t.LIST:case t.MANAGE:case t.MODIFY:case t.REMOVE:case t.SELECT:case t.UPDATE:case t.USE:case t.STRING_VALUE:for(this.enterOuterAlt(s,1),this.state=3398,this.permission_name(),this.state=3403,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,352,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3399,this.match(t.COMMA),this.state=3400,this.permission_name()),this.state=3405,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,352,this.context);this.state=3407,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=3406,this.match(t.COMMA));break;case t.ALL:this.enterOuterAlt(s,2),this.state=3409,this.match(t.ALL),this.state=3411,this.errorHandler.sync(this),e=this.tokenStream.LA(1),227===e&&(this.state=3410,this.match(t.PRIVILEGES));break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}create_replication_stmt(){let e,s=new iV(this.context,this.state);this.enterRule(s,546,t.RULE_create_replication_stmt);try{for(this.enterOuterAlt(s,1),this.state=3415,this.match(t.CREATE),this.state=3416,this.match(t.ASYNC),this.state=3417,this.match(t.REPLICATION),this.state=3418,this.object_ref(),this.state=3419,this.match(t.FOR),this.state=3420,this.replication_target(),this.state=3425,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3421,this.match(t.COMMA),this.state=3422,this.replication_target(),this.state=3427,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3428,this.match(t.WITH),this.state=3429,this.match(t.LPAREN),this.state=3430,this.replication_settings(),this.state=3431,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}replication_target(){let e=new cV(this.context,this.state);this.enterRule(e,548,t.RULE_replication_target);try{this.enterOuterAlt(e,1),this.state=3433,this.object_ref(),this.state=3434,this.replication_name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}replication_settings(){let e,s=new nV(this.context,this.state);this.enterRule(s,550,t.RULE_replication_settings);try{for(this.enterOuterAlt(s,1),this.state=3436,this.replication_settings_entry(),this.state=3441,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3437,this.match(t.COMMA),this.state=3438,this.replication_settings_entry(),this.state=3443,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}replication_settings_entry(){let e=new hV(this.context,this.state);this.enterRule(e,552,t.RULE_replication_settings_entry);try{this.enterOuterAlt(e,1),this.state=3444,this.an_id(),this.state=3445,this.match(t.EQUALS),this.state=3446,this.match(t.STRING_VALUE)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_replication_stmt(){let e,s=new EV(this.context,this.state);this.enterRule(s,554,t.RULE_alter_replication_stmt);try{for(this.enterOuterAlt(s,1),this.state=3448,this.match(t.ALTER),this.state=3449,this.match(t.ASYNC),this.state=3450,this.match(t.REPLICATION),this.state=3451,this.object_ref(),this.state=3452,this.alter_replication_action(),this.state=3457,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3453,this.match(t.COMMA),this.state=3454,this.alter_replication_action(),this.state=3459,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_replication_action(){let e=new TV(this.context,this.state);this.enterRule(e,556,t.RULE_alter_replication_action);try{this.enterOuterAlt(e,1),this.state=3460,this.alter_replication_set_setting()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_replication_set_setting(){let e=new oV(this.context,this.state);this.enterRule(e,558,t.RULE_alter_replication_set_setting);try{this.enterOuterAlt(e,1),this.state=3462,this.match(t.SET),this.state=3463,this.match(t.LPAREN),this.state=3464,this.replication_settings(),this.state=3465,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}drop_replication_stmt(){let e,s=new RV(this.context,this.state);this.enterRule(s,560,t.RULE_drop_replication_stmt);try{this.enterOuterAlt(s,1),this.state=3467,this.match(t.DROP),this.state=3468,this.match(t.ASYNC),this.state=3469,this.match(t.REPLICATION),this.state=3470,this.object_ref(),this.state=3472,this.errorHandler.sync(this),e=this.tokenStream.LA(1),71===e&&(this.state=3471,this.match(t.CASCADE))}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}action_or_subquery_args(){let e,s=new AV(this.context,this.state);this.enterRule(s,562,t.RULE_action_or_subquery_args);try{for(this.enterOuterAlt(s,1),this.state=3474,this.opt_bind_parameter(),this.state=3479,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3475,this.match(t.COMMA),this.state=3476,this.opt_bind_parameter(),this.state=3481,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}define_action_or_subquery_stmt(){let e,s=new SV(this.context,this.state);this.enterRule(s,564,t.RULE_define_action_or_subquery_stmt);try{this.enterOuterAlt(s,1),this.state=3482,this.match(t.DEFINE),this.state=3483,e=this.tokenStream.LA(1),45===e||271===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3484,this.bind_parameter(),this.state=3485,this.match(t.LPAREN),this.state=3487,this.errorHandler.sync(this),e=this.tokenStream.LA(1),33===e&&(this.state=3486,this.action_or_subquery_args()),this.state=3489,this.match(t.RPAREN),this.state=3490,this.match(t.AS),this.state=3491,this.define_action_or_subquery_body(),this.state=3492,this.match(t.END),this.state=3493,this.match(t.DEFINE)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}define_action_or_subquery_body(){let e,s=new lV(this.context,this.state);this.enterRule(s,566,t.RULE_define_action_or_subquery_body);try{let a;for(this.enterOuterAlt(s,1),this.state=3498,this.errorHandler.sync(this),e=this.tokenStream.LA(1);24===e;)this.state=3495,this.match(t.SEMICOLON),this.state=3500,this.errorHandler.sync(this),e=this.tokenStream.LA(1);if(this.state=3519,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-27&-32)&&1<<e-27&4194369||!(e-79&-32)&&1<<e-79&1086587137||!(e-111&-32)&&1<<e-111&2684882947||!(e-147&-32)&&1<<e-147&526465||!(e-214&-32)&&1<<e-214&67387905||!(e-250&-32)&&1<<e-250&4105||!(e-299&-32)&&1<<e-299&71){for(this.state=3501,this.sql_stmt_core(),this.state=3510,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,364,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;){if(1===a){this.state=3503,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=3502,this.match(t.SEMICOLON),this.state=3505,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(24===e);this.state=3507,this.sql_stmt_core()}this.state=3512,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,364,this.context)}for(this.state=3516,this.errorHandler.sync(this),e=this.tokenStream.LA(1);24===e;)this.state=3513,this.match(t.SEMICOLON),this.state=3518,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}if_stmt(){let e,s=new OV(this.context,this.state);this.enterRule(s,568,t.RULE_if_stmt);try{this.enterOuterAlt(s,1),this.state=3522,this.errorHandler.sync(this),e=this.tokenStream.LA(1),123===e&&(this.state=3521,this.match(t.EVALUATE)),this.state=3524,this.match(t.IF),this.state=3525,this.expr(),this.state=3526,this.do_stmt(),this.state=3529,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=3527,this.match(t.ELSE),this.state=3528,this.do_stmt())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}for_stmt(){let e,s=new IV(this.context,this.state);this.enterRule(s,570,t.RULE_for_stmt);try{this.enterOuterAlt(s,1),this.state=3532,this.errorHandler.sync(this),e=this.tokenStream.LA(1),123===e&&(this.state=3531,this.match(t.EVALUATE)),this.state=3535,this.errorHandler.sync(this),e=this.tokenStream.LA(1),214===e&&(this.state=3534,this.match(t.PARALLEL)),this.state=3537,this.match(t.FOR),this.state=3538,this.bind_parameter(),this.state=3539,this.match(t.IN),this.state=3540,this.expr(),this.state=3541,this.do_stmt(),this.state=3544,this.errorHandler.sync(this),e=this.tokenStream.LA(1),114===e&&(this.state=3542,this.match(t.ELSE),this.state=3543,this.do_stmt())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}table_ref(){let e,s=new uV(this.context,this.state);this.enterRule(s,572,t.RULE_table_ref);try{let a;if(this.enterOuterAlt(s,1),1===(this.state=3549,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,372,this.context)))this.state=3546,this.cluster_expr(),this.state=3547,this.match(t.DOT);switch(this.state=3552,this.errorHandler.sync(this),e=this.tokenStream.LA(1),31===e&&(this.state=3551,this.match(t.AT)),this.state=3584,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,380,this.context)){case 1:this.state=3554,this.table_key();break;case 2:if(this.state=3555,this.an_id_expr(),this.state=3556,this.match(t.LPAREN),this.state=3568,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-15&-32)&&1<<e-15&4031057949||!(e-47&-32)&&1<<e-47&4294901759||!(e-79&-32)&&1<<e-79&4294967295||!(e-111&-32)&&1<<e-111&4294967295||!(e-143&-32)&&1<<e-143&4294967287||!(e-175&-32)&&1<<e-175&4294967295||!(e-207&-32)&&1<<e-207&4294967295||!(e-240&-32)&&1<<e-240&4294967295||!(e-272&-32)&&1<<e-272&4294967295||!(e-304&-32)&&1<<e-304&524287){for(this.state=3557,this.table_arg(),this.state=3562,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,374,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3558,this.match(t.COMMA),this.state=3559,this.table_arg()),this.state=3564,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,374,this.context);this.state=3566,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=3565,this.match(t.COMMA))}this.state=3570,this.match(t.RPAREN);break;case 3:this.state=3572,this.bind_parameter(),this.state=3578,this.errorHandler.sync(this),e=this.tokenStream.LA(1),27===e&&(this.state=3573,this.match(t.LPAREN),this.state=3575,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(!(e-15&-32)&&1<<e-15&4030992413||!(e-47&-32)&&1<<e-47&4294901759||!(e-79&-32)&&1<<e-79&4294967295||!(e-111&-32)&&1<<e-111&4294967295||!(e-143&-32)&&1<<e-143&4294967287||!(e-175&-32)&&1<<e-175&4294967295||!(e-207&-32)&&1<<e-207&4294967295||!(e-240&-32)&&1<<e-240&4294967295||!(e-272&-32)&&1<<e-272&4294967295||!(e-304&-32)&&1<<e-304&524287)&&(this.state=3574,this.expr_list()),this.state=3577,this.match(t.RPAREN)),this.state=3582,this.errorHandler.sync(this),e=this.tokenStream.LA(1),307===e&&(this.state=3580,this.match(t.VIEW),this.state=3581,this.view_name())}this.state=3587,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=3586,this.table_hints())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}table_key(){let e,s=new NV(this.context,this.state);this.enterRule(s,574,t.RULE_table_key);try{this.enterOuterAlt(s,1),this.state=3589,this.id_table_or_type(),this.state=3592,this.errorHandler.sync(this),e=this.tokenStream.LA(1),307===e&&(this.state=3590,this.match(t.VIEW),this.state=3591,this.view_name())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}table_arg(){let e,s=new LV(this.context,this.state);this.enterRule(s,576,t.RULE_table_arg);try{this.enterOuterAlt(s,1),this.state=3595,this.errorHandler.sync(this),e=this.tokenStream.LA(1),31===e&&(this.state=3594,this.match(t.AT)),this.state=3597,this.named_expr(),this.state=3600,this.errorHandler.sync(this),e=this.tokenStream.LA(1),307===e&&(this.state=3598,this.match(t.VIEW),this.state=3599,this.view_name())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}table_hints(){let e,s=new CV(this.context,this.state);this.enterRule(s,578,t.RULE_table_hints);try{switch(this.enterOuterAlt(s,1),this.state=3602,this.match(t.WITH),this.state=3615,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.state=3603,this.table_hint();break;case t.LPAREN:for(this.state=3604,this.match(t.LPAREN),this.state=3605,this.table_hint(),this.state=3610,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3606,this.match(t.COMMA),this.state=3607,this.table_hint(),this.state=3612,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3613,this.match(t.RPAREN);break;default:throw new Ei(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}table_hint(){let e,s=new _V(this.context,this.state);this.enterRule(s,580,t.RULE_table_hint);try{let a;switch(this.state=3662,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,396,this.context)){case 1:if(this.enterOuterAlt(s,1),this.state=3617,this.an_id_hint(),this.state=3636,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e)switch(this.state=3618,this.match(t.EQUALS),this.state=3634,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DOLLAR:case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.state=3619,this.type_name_tag();break;case t.LPAREN:for(this.state=3620,this.match(t.LPAREN),this.state=3621,this.type_name_tag(),this.state=3626,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,387,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3622,this.match(t.COMMA),this.state=3623,this.type_name_tag()),this.state=3628,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,387,this.context);this.state=3630,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=3629,this.match(t.COMMA)),this.state=3632,this.match(t.RPAREN);break;default:throw new Ei(this)}break;case 2:this.enterOuterAlt(s,2),this.state=3638,e=this.tokenStream.LA(1),78===e||259===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3640,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=3639,this.match(t.EQUALS)),this.state=3642,this.type_name_or_bind();break;case 3:if(this.enterOuterAlt(s,3),this.state=3643,this.match(t.SCHEMA),this.state=3645,this.errorHandler.sync(this),e=this.tokenStream.LA(1),2===e&&(this.state=3644,this.match(t.EQUALS)),this.state=3647,this.match(t.LPAREN),this.state=3656,this.errorHandler.sync(this),e=this.tokenStream.LA(1),!(e-33&-32)&&1<<e-33&3221223425||!(e-65&-32)&&1<<e-65&4294967295||!(e-97&-32)&&1<<e-97&4294967295||!(e-129&-32)&&1<<e-129&4294836207||!(e-161&-32)&&1<<e-161&4294967295||!(e-193&-32)&&1<<e-193&4294967295||!(e-225&-32)&&1<<e-225&4294950911||!(e-257&-32)&&1<<e-257&4294967295||!(e-289&-32)&&1<<e-289&1073741821)for(this.state=3648,this.struct_arg_positional(),this.state=3653,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,393,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;)1===a&&(this.state=3649,this.match(t.COMMA),this.state=3650,this.struct_arg_positional()),this.state=3655,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,393,this.context);this.state=3659,this.errorHandler.sync(this),e=this.tokenStream.LA(1),26===e&&(this.state=3658,this.match(t.COMMA)),this.state=3661,this.match(t.RPAREN)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}object_ref(){let e=new PV(this.context,this.state);this.enterRule(e,582,t.RULE_object_ref);try{if(this.enterOuterAlt(e,1),1===(this.state=3667,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,397,this.context)))this.state=3664,this.cluster_expr(),this.state=3665,this.match(t.DOT);this.state=3669,this.id_or_at()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}simple_table_ref_core(){let e,s=new MV(this.context,this.state);this.enterRule(s,584,t.RULE_simple_table_ref_core);try{switch(this.state=3676,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,399,this.context)){case 1:this.enterOuterAlt(s,1),this.state=3671,this.object_ref();break;case 2:this.enterOuterAlt(s,2),this.state=3673,this.errorHandler.sync(this),e=this.tokenStream.LA(1),31===e&&(this.state=3672,this.match(t.AT)),this.state=3675,this.bind_parameter()}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}simple_table_ref(){let e,s=new dV(this.context,this.state);this.enterRule(s,586,t.RULE_simple_table_ref);try{this.enterOuterAlt(s,1),this.state=3678,this.simple_table_ref_core(),this.state=3680,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=3679,this.table_hints())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}into_simple_table_ref(){let e,s=new UV(this.context,this.state);this.enterRule(s,588,t.RULE_into_simple_table_ref);try{this.enterOuterAlt(s,1),this.state=3682,this.simple_table_ref(),this.state=3686,this.errorHandler.sync(this),e=this.tokenStream.LA(1),120===e&&(this.state=3683,this.match(t.ERASE),this.state=3684,this.match(t.BY),this.state=3685,this.pure_column_list())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}delete_stmt(){let e,s=new mV(this.context,this.state);this.enterRule(s,590,t.RULE_delete_stmt);try{switch(this.enterOuterAlt(s,1),this.state=3688,this.match(t.DELETE),this.state=3689,this.match(t.FROM),this.state=3690,this.simple_table_ref(),this.state=3694,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.WHERE:this.state=3691,this.where_expr();break;case t.ON:this.state=3692,this.match(t.ON),this.state=3693,this.into_values_source();case t.EOF:case t.SEMICOLON:case t.END:case t.RETURNING:}this.state=3697,this.errorHandler.sync(this),e=this.tokenStream.LA(1),248===e&&(this.state=3696,this.returning_columns_list())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}update_stmt(){let e,s=new DV(this.context,this.state);this.enterRule(s,592,t.RULE_update_stmt);try{switch(this.enterOuterAlt(s,1),this.state=3699,this.match(t.UPDATE),this.state=3700,this.simple_table_ref(),this.state=3708,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SET:this.state=3701,this.match(t.SET),this.state=3702,this.set_clause_choice(),this.state=3704,this.errorHandler.sync(this),e=this.tokenStream.LA(1),310===e&&(this.state=3703,this.where_expr());break;case t.ON:this.state=3706,this.match(t.ON),this.state=3707,this.into_values_source();break;default:throw new Ei(this)}this.state=3711,this.errorHandler.sync(this),e=this.tokenStream.LA(1),248===e&&(this.state=3710,this.returning_columns_list())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}set_clause_choice(){let e=new pV(this.context,this.state);this.enterRule(e,594,t.RULE_set_clause_choice);try{switch(this.state=3715,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=3713,this.set_clause_list();break;case t.LPAREN:this.enterOuterAlt(e,2),this.state=3714,this.multiple_column_assignment();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}set_clause_list(){let e,s=new gV(this.context,this.state);this.enterRule(s,596,t.RULE_set_clause_list);try{for(this.enterOuterAlt(s,1),this.state=3717,this.set_clause(),this.state=3722,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3718,this.match(t.COMMA),this.state=3719,this.set_clause(),this.state=3724,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}set_clause(){let e=new xV(this.context,this.state);this.enterRule(e,598,t.RULE_set_clause);try{this.enterOuterAlt(e,1),this.state=3725,this.set_target(),this.state=3726,this.match(t.EQUALS),this.state=3727,this.expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}set_target(){let e=new kV(this.context,this.state);this.enterRule(e,600,t.RULE_set_target);try{this.enterOuterAlt(e,1),this.state=3729,this.column_name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}multiple_column_assignment(){let e=new HV(this.context,this.state);this.enterRule(e,602,t.RULE_multiple_column_assignment);try{this.enterOuterAlt(e,1),this.state=3731,this.set_target_list(),this.state=3732,this.match(t.EQUALS),this.state=3733,this.match(t.LPAREN),this.state=3734,this.simple_values_source(),this.state=3735,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}set_target_list(){let e,s=new GV(this.context,this.state);this.enterRule(s,604,t.RULE_set_target_list);try{for(this.enterOuterAlt(s,1),this.state=3737,this.match(t.LPAREN),this.state=3738,this.set_target(),this.state=3743,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3739,this.match(t.COMMA),this.state=3740,this.set_target(),this.state=3745,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3746,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}create_topic_stmt(){let e,s=new FV(this.context,this.state);this.enterRule(s,606,t.RULE_create_topic_stmt);try{this.enterOuterAlt(s,1),this.state=3748,this.match(t.CREATE),this.state=3749,this.match(t.TOPIC),this.state=3750,this.topic_ref(),this.state=3752,this.errorHandler.sync(this),e=this.tokenStream.LA(1),27===e&&(this.state=3751,this.create_topic_entries()),this.state=3755,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=3754,this.with_topic_settings())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}create_topic_entries(){let e,s=new vV(this.context,this.state);this.enterRule(s,608,t.RULE_create_topic_entries);try{for(this.enterOuterAlt(s,1),this.state=3757,this.match(t.LPAREN),this.state=3758,this.create_topic_entry(),this.state=3763,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3759,this.match(t.COMMA),this.state=3760,this.create_topic_entry(),this.state=3765,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3766,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}create_topic_entry(){let e=new BV(this.context,this.state);this.enterRule(e,610,t.RULE_create_topic_entry);try{this.enterOuterAlt(e,1),this.state=3768,this.topic_create_consumer_entry()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}with_topic_settings(){let e=new yV(this.context,this.state);this.enterRule(e,612,t.RULE_with_topic_settings);try{this.enterOuterAlt(e,1),this.state=3770,this.match(t.WITH),this.state=3771,this.match(t.LPAREN),this.state=3772,this.topic_settings(),this.state=3773,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_topic_stmt(){let e,s=new fV(this.context,this.state);this.enterRule(s,614,t.RULE_alter_topic_stmt);try{for(this.enterOuterAlt(s,1),this.state=3775,this.match(t.ALTER),this.state=3776,this.match(t.TOPIC),this.state=3777,this.topic_ref(),this.state=3778,this.alter_topic_action(),this.state=3783,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3779,this.match(t.COMMA),this.state=3780,this.alter_topic_action(),this.state=3785,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_topic_action(){let e=new YV(this.context,this.state);this.enterRule(e,616,t.RULE_alter_topic_action);try{switch(this.state=3791,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ADD:this.enterOuterAlt(e,1),this.state=3786,this.alter_topic_add_consumer();break;case t.ALTER:this.enterOuterAlt(e,2),this.state=3787,this.alter_topic_alter_consumer();break;case t.DROP:this.enterOuterAlt(e,3),this.state=3788,this.alter_topic_drop_consumer();break;case t.SET:this.enterOuterAlt(e,4),this.state=3789,this.alter_topic_set_settings();break;case t.RESET:this.enterOuterAlt(e,5),this.state=3790,this.alter_topic_reset_settings();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_topic_add_consumer(){let e=new wV(this.context,this.state);this.enterRule(e,618,t.RULE_alter_topic_add_consumer);try{this.enterOuterAlt(e,1),this.state=3793,this.match(t.ADD),this.state=3794,this.topic_create_consumer_entry()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}topic_create_consumer_entry(){let e,s=new bV(this.context,this.state);this.enterRule(s,620,t.RULE_topic_create_consumer_entry);try{this.enterOuterAlt(s,1),this.state=3796,this.match(t.CONSUMER),this.state=3797,this.an_id(),this.state=3799,this.errorHandler.sync(this),e=this.tokenStream.LA(1),312===e&&(this.state=3798,this.topic_consumer_with_settings())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_topic_alter_consumer(){let e=new WV(this.context,this.state);this.enterRule(e,622,t.RULE_alter_topic_alter_consumer);try{this.enterOuterAlt(e,1),this.state=3801,this.match(t.ALTER),this.state=3802,this.match(t.CONSUMER),this.state=3803,this.topic_consumer_ref(),this.state=3804,this.alter_topic_alter_consumer_entry()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_topic_alter_consumer_entry(){let e=new VV(this.context,this.state);this.enterRule(e,624,t.RULE_alter_topic_alter_consumer_entry);try{switch(this.state=3808,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.SET:this.enterOuterAlt(e,1),this.state=3806,this.topic_alter_consumer_set();break;case t.RESET:this.enterOuterAlt(e,2),this.state=3807,this.topic_alter_consumer_reset();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_topic_drop_consumer(){let e=new XV(this.context,this.state);this.enterRule(e,626,t.RULE_alter_topic_drop_consumer);try{this.enterOuterAlt(e,1),this.state=3810,this.match(t.DROP),this.state=3811,this.match(t.CONSUMER),this.state=3812,this.topic_consumer_ref()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}topic_alter_consumer_set(){let e=new KV(this.context,this.state);this.enterRule(e,628,t.RULE_topic_alter_consumer_set);try{this.enterOuterAlt(e,1),this.state=3814,this.match(t.SET),this.state=3815,this.match(t.LPAREN),this.state=3816,this.topic_consumer_settings(),this.state=3817,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}topic_alter_consumer_reset(){let e,s=new QV(this.context,this.state);this.enterRule(s,630,t.RULE_topic_alter_consumer_reset);try{for(this.enterOuterAlt(s,1),this.state=3819,this.match(t.RESET),this.state=3820,this.match(t.LPAREN),this.state=3821,this.an_id(),this.state=3826,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3822,this.match(t.COMMA),this.state=3823,this.an_id(),this.state=3828,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3829,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}alter_topic_set_settings(){let e=new JV(this.context,this.state);this.enterRule(e,632,t.RULE_alter_topic_set_settings);try{this.enterOuterAlt(e,1),this.state=3831,this.match(t.SET),this.state=3832,this.match(t.LPAREN),this.state=3833,this.topic_settings(),this.state=3834,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_topic_reset_settings(){let e,s=new ZV(this.context,this.state);this.enterRule(s,634,t.RULE_alter_topic_reset_settings);try{for(this.enterOuterAlt(s,1),this.state=3836,this.match(t.RESET),this.state=3837,this.match(t.LPAREN),this.state=3838,this.an_id(),this.state=3843,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3839,this.match(t.COMMA),this.state=3840,this.an_id_pure(),this.state=3845,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=3846,this.match(t.RPAREN)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}drop_topic_stmt(){let e=new qV(this.context,this.state);this.enterRule(e,636,t.RULE_drop_topic_stmt);try{this.enterOuterAlt(e,1),this.state=3848,this.match(t.DROP),this.state=3849,this.match(t.TOPIC),this.state=3850,this.topic_ref()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}topic_settings(){let e,s=new jV(this.context,this.state);this.enterRule(s,638,t.RULE_topic_settings);try{for(this.enterOuterAlt(s,1),this.state=3852,this.topic_settings_entry(),this.state=3857,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3853,this.match(t.COMMA),this.state=3854,this.topic_settings_entry(),this.state=3859,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}topic_settings_entry(){let e=new zV(this.context,this.state);this.enterRule(e,640,t.RULE_topic_settings_entry);try{this.enterOuterAlt(e,1),this.state=3860,this.an_id(),this.state=3861,this.match(t.EQUALS),this.state=3862,this.topic_setting_value()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}topic_setting_value(){let e=new $V(this.context,this.state);this.enterRule(e,642,t.RULE_topic_setting_value);try{this.enterOuterAlt(e,1),this.state=3864,this.expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}topic_consumer_with_settings(){let e=new tX(this.context,this.state);this.enterRule(e,644,t.RULE_topic_consumer_with_settings);try{this.enterOuterAlt(e,1),this.state=3866,this.match(t.WITH),this.state=3867,this.match(t.LPAREN),this.state=3868,this.topic_consumer_settings(),this.state=3869,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}topic_consumer_settings(){let e,s=new eX(this.context,this.state);this.enterRule(s,646,t.RULE_topic_consumer_settings);try{for(this.enterOuterAlt(s,1),this.state=3871,this.topic_consumer_settings_entry(),this.state=3876,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3872,this.match(t.COMMA),this.state=3873,this.topic_consumer_settings_entry(),this.state=3878,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}topic_consumer_settings_entry(){let e=new sX(this.context,this.state);this.enterRule(e,648,t.RULE_topic_consumer_settings_entry);try{this.enterOuterAlt(e,1),this.state=3879,this.an_id(),this.state=3880,this.match(t.EQUALS),this.state=3881,this.topic_consumer_setting_value()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}topic_consumer_setting_value(){let e=new aX(this.context,this.state);this.enterRule(e,650,t.RULE_topic_consumer_setting_value);try{this.enterOuterAlt(e,1),this.state=3883,this.expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}topic_ref(){let e=new rX(this.context,this.state);this.enterRule(e,652,t.RULE_topic_ref);try{if(this.enterOuterAlt(e,1),1===(this.state=3888,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,421,this.context)))this.state=3885,this.cluster_expr(),this.state=3886,this.match(t.DOT);this.state=3890,this.an_id()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}topic_consumer_ref(){let e=new iX(this.context,this.state);this.enterRule(e,654,t.RULE_topic_consumer_ref);try{this.enterOuterAlt(e,1),this.state=3892,this.an_id_pure()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}null_treatment(){let e=new cX(this.context,this.state);this.enterRule(e,656,t.RULE_null_treatment);try{switch(this.state=3898,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.RESPECT:this.enterOuterAlt(e,1),this.state=3894,this.match(t.RESPECT),this.state=3895,this.match(t.NULLS);break;case t.IGNORE:this.enterOuterAlt(e,2),this.state=3896,this.match(t.IGNORE),this.state=3897,this.match(t.NULLS);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}filter_clause(){let e=new nX(this.context,this.state);this.enterRule(e,658,t.RULE_filter_clause);try{this.enterOuterAlt(e,1),this.state=3900,this.match(t.FILTER),this.state=3901,this.match(t.LPAREN),this.state=3902,this.where_expr(),this.state=3903,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}window_name_or_specification(){let e=new hX(this.context,this.state);this.enterRule(e,660,t.RULE_window_name_or_specification);try{switch(this.state=3907,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=3905,this.window_name();break;case t.LPAREN:this.enterOuterAlt(e,2),this.state=3906,this.window_specification();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}window_name(){let e=new EX(this.context,this.state);this.enterRule(e,662,t.RULE_window_name);try{this.enterOuterAlt(e,1),this.state=3909,this.an_id_window()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}window_clause(){let e=new TX(this.context,this.state);this.enterRule(e,664,t.RULE_window_clause);try{this.enterOuterAlt(e,1),this.state=3911,this.match(t.WINDOW),this.state=3912,this.window_definition_list()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}window_definition_list(){let e,s=new oX(this.context,this.state);this.enterRule(s,666,t.RULE_window_definition_list);try{for(this.enterOuterAlt(s,1),this.state=3914,this.window_definition(),this.state=3919,this.errorHandler.sync(this),e=this.tokenStream.LA(1);26===e;)this.state=3915,this.match(t.COMMA),this.state=3916,this.window_definition(),this.state=3921,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}window_definition(){let e=new RX(this.context,this.state);this.enterRule(e,668,t.RULE_window_definition);try{this.enterOuterAlt(e,1),this.state=3922,this.new_window_name(),this.state=3923,this.match(t.AS),this.state=3924,this.window_specification()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}new_window_name(){let e=new AX(this.context,this.state);this.enterRule(e,670,t.RULE_new_window_name);try{this.enterOuterAlt(e,1),this.state=3926,this.window_name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}window_specification(){let e=new SX(this.context,this.state);this.enterRule(e,672,t.RULE_window_specification);try{this.enterOuterAlt(e,1),this.state=3928,this.match(t.LPAREN),this.state=3929,this.window_specification_details(),this.state=3930,this.match(t.RPAREN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}window_specification_details(){let e,s=new lX(this.context,this.state);this.enterRule(s,674,t.RULE_window_specification_details);try{if(this.enterOuterAlt(s,1),1===(this.state=3933,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,425,this.context)))this.state=3932,this.existing_window_name();this.state=3936,this.errorHandler.sync(this),e=this.tokenStream.LA(1),215===e&&(this.state=3935,this.window_partition_clause()),this.state=3939,this.errorHandler.sync(this),e=this.tokenStream.LA(1),210===e&&(this.state=3938,this.window_order_clause()),this.state=3942,this.errorHandler.sync(this),e=this.tokenStream.LA(1),(150===e||231===e||256===e)&&(this.state=3941,this.window_frame_clause())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}existing_window_name(){let e=new OX(this.context,this.state);this.enterRule(e,676,t.RULE_existing_window_name);try{this.enterOuterAlt(e,1),this.state=3944,this.window_name()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}window_partition_clause(){let e,s=new IX(this.context,this.state);this.enterRule(s,678,t.RULE_window_partition_clause);try{this.enterOuterAlt(s,1),this.state=3946,this.match(t.PARTITION),this.state=3948,this.errorHandler.sync(this),e=this.tokenStream.LA(1),80===e&&(this.state=3947,this.match(t.COMPACT)),this.state=3950,this.match(t.BY),this.state=3951,this.named_expr_list()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}window_order_clause(){let e=new uX(this.context,this.state);this.enterRule(e,680,t.RULE_window_order_clause);try{this.enterOuterAlt(e,1),this.state=3953,this.order_by_clause()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}window_frame_clause(){let e,s=new NX(this.context,this.state);this.enterRule(s,682,t.RULE_window_frame_clause);try{this.enterOuterAlt(s,1),this.state=3955,this.window_frame_units(),this.state=3956,this.window_frame_extent(),this.state=3958,this.errorHandler.sync(this),e=this.tokenStream.LA(1),125===e&&(this.state=3957,this.window_frame_exclusion())}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}window_frame_units(){let e,s=new LX(this.context,this.state);this.enterRule(s,684,t.RULE_window_frame_units);try{this.enterOuterAlt(s,1),this.state=3960,e=this.tokenStream.LA(1),150===e||231===e||256===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}window_frame_extent(){let e=new CX(this.context,this.state);this.enterRule(e,686,t.RULE_window_frame_extent);try{switch(this.state=3964,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,431,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3962,this.window_frame_bound();break;case 2:this.enterOuterAlt(e,2),this.state=3963,this.window_frame_between()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}window_frame_between(){let e=new _X(this.context,this.state);this.enterRule(e,688,t.RULE_window_frame_between);try{this.enterOuterAlt(e,1),this.state=3966,this.match(t.BETWEEN),this.state=3967,this.window_frame_bound(),this.state=3968,this.match(t.AND),this.state=3969,this.window_frame_bound()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}window_frame_bound(){let e,s=new PX(this.context,this.state);this.enterRule(s,690,t.RULE_window_frame_bound);try{switch(this.state=3978,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,433,this.context)){case 1:this.enterOuterAlt(s,1),this.state=3971,this.match(t.CURRENT),this.state=3972,this.match(t.ROW);break;case 2:switch(this.enterOuterAlt(s,2),this.state=3975,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,432,this.context)){case 1:this.state=3973,this.expr();break;case 2:this.state=3974,this.match(t.UNBOUNDED)}this.state=3977,e=this.tokenStream.LA(1),139===e||224===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}window_frame_exclusion(){let e=new MX(this.context,this.state);this.enterRule(e,692,t.RULE_window_frame_exclusion);try{switch(this.state=3990,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,434,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3980,this.match(t.EXCLUDE),this.state=3981,this.match(t.CURRENT),this.state=3982,this.match(t.ROW);break;case 2:this.enterOuterAlt(e,2),this.state=3983,this.match(t.EXCLUDE),this.state=3984,this.match(t.GROUP);break;case 3:this.enterOuterAlt(e,3),this.state=3985,this.match(t.EXCLUDE),this.state=3986,this.match(t.TIES);break;case 4:this.enterOuterAlt(e,4),this.state=3987,this.match(t.EXCLUDE),this.state=3988,this.match(t.NO),this.state=3989,this.match(t.OTHERS)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}use_stmt(){let e=new dX(this.context,this.state);this.enterRule(e,694,t.RULE_use_stmt);try{this.enterOuterAlt(e,1),this.state=3992,this.match(t.USE),this.state=3993,this.cluster_expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}subselect_stmt(){let e=new UX(this.context,this.state);this.enterRule(e,696,t.RULE_subselect_stmt);try{switch(this.enterOuterAlt(e,1),this.state=4e3,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.LPAREN:this.state=3995,this.match(t.LPAREN),this.state=3996,this.select_stmt(),this.state=3997,this.match(t.RPAREN);break;case t.DISCARD:case t.FROM:case t.PROCESS:case t.REDUCE:case t.SELECT:this.state=3999,this.select_unparenthesized_stmt();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}named_nodes_stmt(){let e=new mX(this.context,this.state);this.enterRule(e,698,t.RULE_named_nodes_stmt);try{switch(this.enterOuterAlt(e,1),this.state=4002,this.bind_parameter_list(),this.state=4003,this.match(t.EQUALS),this.state=4006,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,436,this.context)){case 1:this.state=4004,this.expr();break;case 2:this.state=4005,this.subselect_stmt()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}commit_stmt(){let e=new DX(this.context,this.state);this.enterRule(e,700,t.RULE_commit_stmt);try{this.enterOuterAlt(e,1),this.state=4008,this.match(t.COMMIT)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}rollback_stmt(){let e=new pX(this.context,this.state);this.enterRule(e,702,t.RULE_rollback_stmt);try{this.enterOuterAlt(e,1),this.state=4010,this.match(t.ROLLBACK)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}identifier(){let e,s=new gX(this.context,this.state);this.enterRule(s,704,t.RULE_identifier);try{this.enterOuterAlt(s,1),this.state=4012,e=this.tokenStream.LA(1),317===e||318===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}id(){let e=new xX(this.context,this.state);this.enterRule(e,706,t.RULE_id);try{switch(this.state=4016,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4014,this.identifier();break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:this.enterOuterAlt(e,2),this.state=4015,this.keyword();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}id_schema(){let e=new kX(this.context,this.state);this.enterRule(e,708,t.RULE_id_schema);try{switch(this.state=4025,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4018,this.identifier();break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COMMIT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.SAMPLE:case t.SAVEPOINT:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:this.enterOuterAlt(e,2),this.state=4019,this.keyword_compat();break;case t.ASYMMETRIC:case t.BETWEEN:case t.BITCAST:case t.CASE:case t.CAST:case t.CUBE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.EMPTY_ACTION:case t.EXISTS:case t.FROM:case t.FULL:case t.HOP:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.LOCAL:case t.NOT:case t.NULL:case t.PROCESS:case t.REDUCE:case t.RETURN:case t.RETURNING:case t.ROLLUP:case t.SELECT:case t.SYMMETRIC:case t.UNBOUNDED:case t.WHEN:case t.WHERE:this.enterOuterAlt(e,3),this.state=4020,this.keyword_expr_uncompat();break;case t.ALL:case t.AS:case t.ASSUME:case t.DISTINCT:case t.EXCEPT:case t.HAVING:case t.INTERSECT:case t.LIMIT:case t.UNION:case t.WINDOW:case t.WITHOUT:this.enterOuterAlt(e,4),this.state=4021,this.keyword_select_uncompat();break;case t.COMPACT:this.enterOuterAlt(e,5),this.state=4022,this.keyword_in_uncompat();break;case t.GROUPS:case t.RANGE:case t.ROWS:this.enterOuterAlt(e,6),this.state=4023,this.keyword_window_uncompat();break;case t.COLUMNS:case t.SCHEMA:this.enterOuterAlt(e,7),this.state=4024,this.keyword_hint_uncompat();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}id_expr(){let e=new HX(this.context,this.state);this.enterRule(e,710,t.RULE_id_expr);try{switch(this.state=4033,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4027,this.identifier();break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COMMIT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.SAMPLE:case t.SAVEPOINT:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:this.enterOuterAlt(e,2),this.state=4028,this.keyword_compat();break;case t.COLUMN:this.enterOuterAlt(e,3),this.state=4029,this.keyword_alter_uncompat();break;case t.COMPACT:this.enterOuterAlt(e,4),this.state=4030,this.keyword_in_uncompat();break;case t.GROUPS:case t.RANGE:case t.ROWS:this.enterOuterAlt(e,5),this.state=4031,this.keyword_window_uncompat();break;case t.COLUMNS:case t.SCHEMA:this.enterOuterAlt(e,6),this.state=4032,this.keyword_hint_uncompat();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}id_expr_in(){let e=new GX(this.context,this.state);this.enterRule(e,712,t.RULE_id_expr_in);try{switch(this.state=4040,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4035,this.identifier();break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COMMIT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.SAMPLE:case t.SAVEPOINT:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:this.enterOuterAlt(e,2),this.state=4036,this.keyword_compat();break;case t.COLUMN:this.enterOuterAlt(e,3),this.state=4037,this.keyword_alter_uncompat();break;case t.GROUPS:case t.RANGE:case t.ROWS:this.enterOuterAlt(e,4),this.state=4038,this.keyword_window_uncompat();break;case t.COLUMNS:case t.SCHEMA:this.enterOuterAlt(e,5),this.state=4039,this.keyword_hint_uncompat();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}id_window(){let e=new FX(this.context,this.state);this.enterRule(e,714,t.RULE_id_window);try{switch(this.state=4050,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4042,this.identifier();break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COMMIT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.SAMPLE:case t.SAVEPOINT:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:this.enterOuterAlt(e,2),this.state=4043,this.keyword_compat();break;case t.ASYMMETRIC:case t.BETWEEN:case t.BITCAST:case t.CASE:case t.CAST:case t.CUBE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.EMPTY_ACTION:case t.EXISTS:case t.FROM:case t.FULL:case t.HOP:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.LOCAL:case t.NOT:case t.NULL:case t.PROCESS:case t.REDUCE:case t.RETURN:case t.RETURNING:case t.ROLLUP:case t.SELECT:case t.SYMMETRIC:case t.UNBOUNDED:case t.WHEN:case t.WHERE:this.enterOuterAlt(e,3),this.state=4044,this.keyword_expr_uncompat();break;case t.ANY:case t.ERASE:case t.STREAM:this.enterOuterAlt(e,4),this.state=4045,this.keyword_table_uncompat();break;case t.ALL:case t.AS:case t.ASSUME:case t.DISTINCT:case t.EXCEPT:case t.HAVING:case t.INTERSECT:case t.LIMIT:case t.UNION:case t.WINDOW:case t.WITHOUT:this.enterOuterAlt(e,5),this.state=4046,this.keyword_select_uncompat();break;case t.COLUMN:this.enterOuterAlt(e,6),this.state=4047,this.keyword_alter_uncompat();break;case t.COMPACT:this.enterOuterAlt(e,7),this.state=4048,this.keyword_in_uncompat();break;case t.COLUMNS:case t.SCHEMA:this.enterOuterAlt(e,8),this.state=4049,this.keyword_hint_uncompat();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}id_table(){let e=new vX(this.context,this.state);this.enterRule(e,716,t.RULE_id_table);try{switch(this.state=4059,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4052,this.identifier();break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COMMIT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.SAMPLE:case t.SAVEPOINT:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:this.enterOuterAlt(e,2),this.state=4053,this.keyword_compat();break;case t.ASYMMETRIC:case t.BETWEEN:case t.BITCAST:case t.CASE:case t.CAST:case t.CUBE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.EMPTY_ACTION:case t.EXISTS:case t.FROM:case t.FULL:case t.HOP:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.LOCAL:case t.NOT:case t.NULL:case t.PROCESS:case t.REDUCE:case t.RETURN:case t.RETURNING:case t.ROLLUP:case t.SELECT:case t.SYMMETRIC:case t.UNBOUNDED:case t.WHEN:case t.WHERE:this.enterOuterAlt(e,3),this.state=4054,this.keyword_expr_uncompat();break;case t.ALL:case t.AS:case t.ASSUME:case t.DISTINCT:case t.EXCEPT:case t.HAVING:case t.INTERSECT:case t.LIMIT:case t.UNION:case t.WINDOW:case t.WITHOUT:this.enterOuterAlt(e,4),this.state=4055,this.keyword_select_uncompat();break;case t.COMPACT:this.enterOuterAlt(e,5),this.state=4056,this.keyword_in_uncompat();break;case t.GROUPS:case t.RANGE:case t.ROWS:this.enterOuterAlt(e,6),this.state=4057,this.keyword_window_uncompat();break;case t.COLUMNS:case t.SCHEMA:this.enterOuterAlt(e,7),this.state=4058,this.keyword_hint_uncompat();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}id_without(){let e=new BX(this.context,this.state);this.enterRule(e,718,t.RULE_id_without);try{switch(this.state=4068,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4061,this.identifier();break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COMMIT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.SAMPLE:case t.SAVEPOINT:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:this.enterOuterAlt(e,2),this.state=4062,this.keyword_compat();break;case t.ANY:case t.ERASE:case t.STREAM:this.enterOuterAlt(e,3),this.state=4063,this.keyword_table_uncompat();break;case t.COLUMN:this.enterOuterAlt(e,4),this.state=4064,this.keyword_alter_uncompat();break;case t.COMPACT:this.enterOuterAlt(e,5),this.state=4065,this.keyword_in_uncompat();break;case t.GROUPS:case t.RANGE:case t.ROWS:this.enterOuterAlt(e,6),this.state=4066,this.keyword_window_uncompat();break;case t.COLUMNS:case t.SCHEMA:this.enterOuterAlt(e,7),this.state=4067,this.keyword_hint_uncompat();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}id_hint(){let e=new yX(this.context,this.state);this.enterRule(e,720,t.RULE_id_hint);try{switch(this.state=4078,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4070,this.identifier();break;case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COMMIT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.SAMPLE:case t.SAVEPOINT:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:this.enterOuterAlt(e,2),this.state=4071,this.keyword_compat();break;case t.ASYMMETRIC:case t.BETWEEN:case t.BITCAST:case t.CASE:case t.CAST:case t.CUBE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.EMPTY_ACTION:case t.EXISTS:case t.FROM:case t.FULL:case t.HOP:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.LOCAL:case t.NOT:case t.NULL:case t.PROCESS:case t.REDUCE:case t.RETURN:case t.RETURNING:case t.ROLLUP:case t.SELECT:case t.SYMMETRIC:case t.UNBOUNDED:case t.WHEN:case t.WHERE:this.enterOuterAlt(e,3),this.state=4072,this.keyword_expr_uncompat();break;case t.ANY:case t.ERASE:case t.STREAM:this.enterOuterAlt(e,4),this.state=4073,this.keyword_table_uncompat();break;case t.ALL:case t.AS:case t.ASSUME:case t.DISTINCT:case t.EXCEPT:case t.HAVING:case t.INTERSECT:case t.LIMIT:case t.UNION:case t.WINDOW:case t.WITHOUT:this.enterOuterAlt(e,5),this.state=4074,this.keyword_select_uncompat();break;case t.COLUMN:this.enterOuterAlt(e,6),this.state=4075,this.keyword_alter_uncompat();break;case t.COMPACT:this.enterOuterAlt(e,7),this.state=4076,this.keyword_in_uncompat();break;case t.GROUPS:case t.RANGE:case t.ROWS:this.enterOuterAlt(e,8),this.state=4077,this.keyword_window_uncompat();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}id_as_compat(){let e=new fX(this.context,this.state);this.enterRule(e,722,t.RULE_id_as_compat);try{switch(this.state=4082,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4080,this.identifier();break;case t.ATTRIBUTES:case t.CONNECT:case t.CONSUMER:case t.DATA:case t.DESCRIBE:case t.DIRECTORY:case t.FIRST:case t.GRANT:case t.INITIAL:case t.LAST:case t.LEGACY:case t.MANAGE:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NEXT:case t.OMIT:case t.ONE:case t.OPTION:case t.PARALLEL:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PRIVILEGES:case t.QUEUE:case t.REMOVE:case t.REPLICATION:case t.REVOKE:case t.SECONDS:case t.SEEK:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBSET:case t.TABLES:case t.TOPIC:case t.TYPE:case t.UNMATCHED:this.enterOuterAlt(e,2),this.state=4081,this.keyword_as_compat();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}an_id(){let e=new YX(this.context,this.state);this.enterRule(e,724,t.RULE_an_id);try{switch(this.state=4086,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4084,this.id();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=4085,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}an_id_or_type(){let e=new wX(this.context,this.state);this.enterRule(e,726,t.RULE_an_id_or_type);try{switch(this.state=4090,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CALLABLE:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DICT:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ENUM:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FLOW:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LIST:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OPTIONAL:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESOURCE:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SET:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.STRUCT:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TAGGED:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TUPLE:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VARIANT:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4088,this.id_or_type();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=4089,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}an_id_schema(){let e=new bX(this.context,this.state);this.enterRule(e,728,t.RULE_an_id_schema);try{switch(this.state=4094,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4092,this.id_schema();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=4093,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}an_id_expr(){let e=new WX(this.context,this.state);this.enterRule(e,730,t.RULE_an_id_expr);try{switch(this.state=4098,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4096,this.id_expr();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=4097,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}an_id_expr_in(){let e=new VX(this.context,this.state);this.enterRule(e,732,t.RULE_an_id_expr_in);try{switch(this.state=4102,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4100,this.id_expr_in();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=4101,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}an_id_window(){let e=new XX(this.context,this.state);this.enterRule(e,734,t.RULE_an_id_window);try{switch(this.state=4106,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4104,this.id_window();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=4105,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}an_id_table(){let e=new KX(this.context,this.state);this.enterRule(e,736,t.RULE_an_id_table);try{switch(this.state=4110,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4108,this.id_table();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=4109,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}an_id_without(){let e=new QX(this.context,this.state);this.enterRule(e,738,t.RULE_an_id_without);try{switch(this.state=4114,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4112,this.id_without();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=4113,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}an_id_hint(){let e=new JX(this.context,this.state);this.enterRule(e,740,t.RULE_an_id_hint);try{switch(this.state=4118,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4116,this.id_hint();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=4117,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}an_id_pure(){let e=new ZX(this.context,this.state);this.enterRule(e,742,t.RULE_an_id_pure);try{switch(this.state=4122,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4120,this.identifier();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=4121,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}an_id_as_compat(){let e=new qX(this.context,this.state);this.enterRule(e,744,t.RULE_an_id_as_compat);try{switch(this.state=4126,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ATTRIBUTES:case t.CONNECT:case t.CONSUMER:case t.DATA:case t.DESCRIBE:case t.DIRECTORY:case t.FIRST:case t.GRANT:case t.INITIAL:case t.LAST:case t.LEGACY:case t.MANAGE:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NEXT:case t.OMIT:case t.ONE:case t.OPTION:case t.PARALLEL:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PRIVILEGES:case t.QUEUE:case t.REMOVE:case t.REPLICATION:case t.REVOKE:case t.SECONDS:case t.SEEK:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBSET:case t.TABLES:case t.TOPIC:case t.TYPE:case t.UNMATCHED:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4124,this.id_as_compat();break;case t.STRING_VALUE:this.enterOuterAlt(e,2),this.state=4125,this.match(t.STRING_VALUE);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}view_name(){let e=new jX(this.context,this.state);this.enterRule(e,746,t.RULE_view_name);try{switch(this.state=4131,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,457,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4128,this.an_id();break;case 2:this.enterOuterAlt(e,2),this.state=4129,this.match(t.PRIMARY),this.state=4130,this.match(t.KEY)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}opt_id_prefix(){let e=new zX(this.context,this.state);this.enterRule(e,748,t.RULE_opt_id_prefix);try{if(1===(this.enterOuterAlt(e,1),this.state=4136,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,458,this.context)))this.state=4133,this.an_id(),this.state=4134,this.match(t.DOT)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}cluster_expr(){let e=new $X(this.context,this.state);this.enterRule(e,750,t.RULE_cluster_expr);try{if(this.enterOuterAlt(e,1),1===(this.state=4141,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,459,this.context)))this.state=4138,this.an_id(),this.state=4139,this.match(t.COLON);switch(this.state=4145,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.DOLLAR:case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.state=4143,this.pure_column_or_named();break;case t.ASTERISK:this.state=4144,this.match(t.ASTERISK);break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}id_or_type(){let e=new tK(this.context,this.state);this.enterRule(e,752,t.RULE_id_or_type);try{switch(this.state=4149,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ANY:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMN:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERASE:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.STREAM:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4147,this.id();break;case t.CALLABLE:case t.DICT:case t.ENUM:case t.FLOW:case t.LIST:case t.OPTIONAL:case t.RESOURCE:case t.SET:case t.STRUCT:case t.TAGGED:case t.TUPLE:case t.VARIANT:this.enterOuterAlt(e,2),this.state=4148,this.type_id();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}opt_id_prefix_or_type(){let e=new eK(this.context,this.state);this.enterRule(e,754,t.RULE_opt_id_prefix_or_type);try{if(1===(this.enterOuterAlt(e,1),this.state=4154,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,462,this.context)))this.state=4151,this.an_id_or_type(),this.state=4152,this.match(t.DOT)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}id_or_at(){let e,s=new sK(this.context,this.state);this.enterRule(s,756,t.RULE_id_or_at);try{this.enterOuterAlt(s,1),this.state=4157,this.errorHandler.sync(this),e=this.tokenStream.LA(1),31===e&&(this.state=4156,this.match(t.AT)),this.state=4159,this.an_id_or_type()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}id_table_or_type(){let e=new aK(this.context,this.state);this.enterRule(e,758,t.RULE_id_table_or_type);try{switch(this.state=4163,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALL:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.AS:case t.ASC:case t.ASSUME:case t.ASYMMETRIC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BETWEEN:case t.BITCAST:case t.BY:case t.CASCADE:case t.CASE:case t.CAST:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COLUMNS:case t.COMMIT:case t.COMPACT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CUBE:case t.CURRENT:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DISTINCT:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.EMPTY_ACTION:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCEPT:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXISTS:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FROM:case t.FULL:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.GROUPS:case t.HASH:case t.HAVING:case t.HOP:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTERSECT:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.LIMIT:case t.LOCAL:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOT:case t.NOTNULL:case t.NULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.PROCESS:case t.QUEUE:case t.RAISE:case t.RANGE:case t.REDUCE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.RETURN:case t.RETURNING:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROLLUP:case t.ROW:case t.ROWS:case t.SAMPLE:case t.SAVEPOINT:case t.SCHEMA:case t.SECONDS:case t.SEEK:case t.SELECT:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYMMETRIC:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNBOUNDED:case t.UNCONDITIONAL:case t.UNION:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WHEN:case t.WHERE:case t.WINDOW:case t.WITH:case t.WITHOUT:case t.WRAPPER:case t.XOR:case t.STRING_VALUE:case t.ID_PLAIN:case t.ID_QUOTED:this.enterOuterAlt(e,1),this.state=4161,this.an_id_table();break;case t.CALLABLE:case t.DICT:case t.ENUM:case t.FLOW:case t.LIST:case t.OPTIONAL:case t.RESOURCE:case t.SET:case t.STRUCT:case t.TAGGED:case t.TUPLE:case t.VARIANT:this.enterOuterAlt(e,2),this.state=4162,this.type_id();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}id_table_or_at(){let e,s=new rK(this.context,this.state);this.enterRule(s,760,t.RULE_id_table_or_at);try{this.enterOuterAlt(s,1),this.state=4166,this.errorHandler.sync(this),e=this.tokenStream.LA(1),31===e&&(this.state=4165,this.match(t.AT)),this.state=4168,this.id_table_or_type()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}keyword(){let e=new iK(this.context,this.state);this.enterRule(e,762,t.RULE_keyword);try{switch(this.state=4178,this.errorHandler.sync(this),this.tokenStream.LA(1)){case t.ABORT:case t.ACTION:case t.ADD:case t.AFTER:case t.ALTER:case t.ANALYZE:case t.AND:case t.ANSI:case t.ARRAY:case t.ASC:case t.ASYNC:case t.ATTACH:case t.ATTRIBUTES:case t.AUTOINCREMENT:case t.BEFORE:case t.BEGIN:case t.BERNOULLI:case t.BY:case t.CASCADE:case t.CHANGEFEED:case t.CHECK:case t.COLLATE:case t.COMMIT:case t.CONDITIONAL:case t.CONFLICT:case t.CONNECT:case t.CONSTRAINT:case t.CONSUMER:case t.COVER:case t.CREATE:case t.CROSS:case t.CURRENT:case t.DATA:case t.DATABASE:case t.DECIMAL:case t.DECLARE:case t.DEFAULT:case t.DEFERRABLE:case t.DEFERRED:case t.DEFINE:case t.DELETE:case t.DESC:case t.DESCRIBE:case t.DETACH:case t.DIRECTORY:case t.DISABLE:case t.DISCARD:case t.DO:case t.DROP:case t.EACH:case t.ELSE:case t.EMPTY:case t.ENCRYPTED:case t.END:case t.ERROR:case t.ESCAPE:case t.EVALUATE:case t.EXCLUDE:case t.EXCLUSION:case t.EXCLUSIVE:case t.EXPLAIN:case t.EXPORT:case t.EXTERNAL:case t.FAIL:case t.FAMILY:case t.FILTER:case t.FIRST:case t.FLATTEN:case t.FOLLOWING:case t.FOR:case t.FOREIGN:case t.FUNCTION:case t.GLOB:case t.GRANT:case t.GROUP:case t.GROUPING:case t.HASH:case t.IF:case t.IGNORE:case t.ILIKE:case t.IMMEDIATE:case t.IMPORT:case t.IN:case t.INDEX:case t.INDEXED:case t.INHERITS:case t.INITIAL:case t.INITIALLY:case t.INNER:case t.INSERT:case t.INSTEAD:case t.INTO:case t.IS:case t.ISNULL:case t.JOIN:case t.KEY:case t.LAST:case t.LEFT:case t.LEGACY:case t.LIKE:case t.MANAGE:case t.MATCH:case t.MATCHES:case t.MATCH_RECOGNIZE:case t.MEASURES:case t.MICROSECONDS:case t.MILLISECONDS:case t.MODIFY:case t.NANOSECONDS:case t.NATURAL:case t.NEXT:case t.NO:case t.NOTNULL:case t.NULLS:case t.OBJECT:case t.OF:case t.OFFSET:case t.OMIT:case t.ON:case t.ONE:case t.ONLY:case t.OPTION:case t.OR:case t.ORDER:case t.OTHERS:case t.OUTER:case t.OVER:case t.PARALLEL:case t.PARTITION:case t.PASSING:case t.PASSWORD:case t.PAST:case t.PATTERN:case t.PER:case t.PERMUTE:case t.PLAN:case t.PRAGMA:case t.PRECEDING:case t.PRESORT:case t.PRIMARY:case t.PRIVILEGES:case t.QUEUE:case t.RAISE:case t.REFERENCES:case t.REGEXP:case t.REINDEX:case t.RELEASE:case t.REMOVE:case t.RENAME:case t.REPLACE:case t.REPLICATION:case t.RESET:case t.RESPECT:case t.RESTRICT:case t.RESULT:case t.REVERT:case t.REVOKE:case t.RIGHT:case t.RLIKE:case t.ROLLBACK:case t.ROW:case t.SAMPLE:case t.SAVEPOINT:case t.SECONDS:case t.SEEK:case t.SEMI:case t.SETS:case t.SHOW:case t.SKIP_RULE:case t.SOURCE:case t.SUBQUERY:case t.SUBSET:case t.SYMBOLS:case t.SYNC:case t.SYSTEM:case t.TABLE:case t.TABLES:case t.TABLESAMPLE:case t.TABLESTORE:case t.TEMP:case t.TEMPORARY:case t.THEN:case t.TIES:case t.TO:case t.TOPIC:case t.TRANSACTION:case t.TRIGGER:case t.TYPE:case t.UNCONDITIONAL:case t.UNIQUE:case t.UNKNOWN:case t.UNMATCHED:case t.UPDATE:case t.UPSERT:case t.USE:case t.USER:case t.USING:case t.VACUUM:case t.VALUES:case t.VIEW:case t.VIRTUAL:case t.WITH:case t.WRAPPER:case t.XOR:this.enterOuterAlt(e,1),this.state=4170,this.keyword_compat();break;case t.ASYMMETRIC:case t.BETWEEN:case t.BITCAST:case t.CASE:case t.CAST:case t.CUBE:case t.CURRENT_DATE:case t.CURRENT_TIME:case t.CURRENT_TIMESTAMP:case t.EMPTY_ACTION:case t.EXISTS:case t.FROM:case t.FULL:case t.HOP:case t.JSON_EXISTS:case t.JSON_QUERY:case t.JSON_VALUE:case t.LOCAL:case t.NOT:case t.NULL:case t.PROCESS:case t.REDUCE:case t.RETURN:case t.RETURNING:case t.ROLLUP:case t.SELECT:case t.SYMMETRIC:case t.UNBOUNDED:case t.WHEN:case t.WHERE:this.enterOuterAlt(e,2),this.state=4171,this.keyword_expr_uncompat();break;case t.ANY:case t.ERASE:case t.STREAM:this.enterOuterAlt(e,3),this.state=4172,this.keyword_table_uncompat();break;case t.ALL:case t.AS:case t.ASSUME:case t.DISTINCT:case t.EXCEPT:case t.HAVING:case t.INTERSECT:case t.LIMIT:case t.UNION:case t.WINDOW:case t.WITHOUT:this.enterOuterAlt(e,4),this.state=4173,this.keyword_select_uncompat();break;case t.COLUMN:this.enterOuterAlt(e,5),this.state=4174,this.keyword_alter_uncompat();break;case t.COMPACT:this.enterOuterAlt(e,6),this.state=4175,this.keyword_in_uncompat();break;case t.GROUPS:case t.RANGE:case t.ROWS:this.enterOuterAlt(e,7),this.state=4176,this.keyword_window_uncompat();break;case t.COLUMNS:case t.SCHEMA:this.enterOuterAlt(e,8),this.state=4177,this.keyword_hint_uncompat();break;default:throw new Ei(this)}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}keyword_expr_uncompat(){let e,s=new cK(this.context,this.state);this.enterRule(s,764,t.RULE_keyword_expr_uncompat);try{this.enterOuterAlt(s,1),this.state=4180,e=this.tokenStream.LA(1),!(e-58&-32)&&1<<e-58&2147534337||!(e-91&-32)&&1<<e-91&33554439||!(e-128&-32)&&1<<e-128&33603585||!(e-173&-32)&&1<<e-173&41944071||!(e-228&-32)&&1<<e-228&68681745||!(e-262&-32)&&1<<e-262&2147487745||309===e||310===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}keyword_table_uncompat(){let e,s=new nK(this.context,this.state);this.enterRule(s,766,t.RULE_keyword_table_uncompat);try{this.enterOuterAlt(s,1),this.state=4182,e=this.tokenStream.LA(1),53===e||120===e||269===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}keyword_select_uncompat(){let e,s=new hK(this.context,this.state);this.enterRule(s,768,t.RULE_keyword_select_uncompat);try{this.enterOuterAlt(s,1),this.state=4184,e=this.tokenStream.LA(1),!(e-48&-32)&&1<<e-48&641||110===e||124===e||!(e-152&-32)&&1<<e-152&536936449||!(e-295&-32)&&1<<e-295&327681?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}keyword_alter_uncompat(){let e=new EK(this.context,this.state);this.enterRule(e,770,t.RULE_keyword_alter_uncompat);try{this.enterOuterAlt(e,1),this.state=4186,this.match(t.COLUMN)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}keyword_in_uncompat(){let e=new TK(this.context,this.state);this.enterRule(e,772,t.RULE_keyword_in_uncompat);try{this.enterOuterAlt(e,1),this.state=4188,this.match(t.COMPACT)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}keyword_window_uncompat(){let e,s=new oK(this.context,this.state);this.enterRule(s,774,t.RULE_keyword_window_uncompat);try{this.enterOuterAlt(s,1),this.state=4190,e=this.tokenStream.LA(1),150===e||231===e||256===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}keyword_hint_uncompat(){let e,s=new RK(this.context,this.state);this.enterRule(s,776,t.RULE_keyword_hint_uncompat);try{this.enterOuterAlt(s,1),this.state=4192,e=this.tokenStream.LA(1),78===e||259===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}keyword_as_compat(){let e,s=new AK(this.context,this.state);this.enterRule(s,778,t.RULE_keyword_as_compat);try{this.enterOuterAlt(s,1),this.state=4194,e=this.tokenStream.LA(1),!(e-61&-32)&&1<<e-61&20971521||!(e-94&-32)&&1<<e-94&9217||!(e-136&-32)&&1<<e-136&134219777||!(e-177&-32)&&1<<e-177&1409482373||!(e-214&-32)&&1<<e-214&142647537||!(e-250&-32)&&1<<e-250&273091585||!(e-287&-32)&&1<<e-287&2081?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}keyword_compat(){let e,s=new SK(this.context,this.state);this.enterRule(s,780,t.RULE_keyword_compat);try{this.enterOuterAlt(s,1),this.state=4196,e=this.tokenStream.LA(1),!(e-44&-32)&&1<<e-44&3396834799||!(e-76&-32)&&1<<e-76&3220987881||!(e-108&-32)&&1<<e-108&3186550523||!(e-140&-32)&&1<<e-140&4026518451||!(e-172&-32)&&1<<e-172&4211077617||!(e-204&-32)&&1<<e-204&3875536879||!(e-236&-32)&&1<<e-236&3949717367||!(e-268&-32)&&1<<e-268&4114603961||!(e-300&-32)&&1<<e-300&53695?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}type_id(){let e,s=new lK(this.context,this.state);this.enterRule(s,782,t.RULE_type_id);try{this.enterOuterAlt(s,1),this.state=4198,e=this.tokenStream.LA(1),70===e||106===e||119===e||138===e||182===e||208===e||!(e-243&-32)&&1<<e-243&136314881||!(e-281&-32)&&1<<e-281&33555457?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}bool_value(){let e,s=new OK(this.context,this.state);this.enterRule(s,784,t.RULE_bool_value);try{this.enterOuterAlt(s,1),this.state=4200,e=this.tokenStream.LA(1),133===e||290===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}real(){let e=new IK(this.context,this.state);this.enterRule(e,786,t.RULE_real);try{this.enterOuterAlt(e,1),this.state=4202,this.match(t.REAL)}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}integer(){let e,s=new uK(this.context,this.state);this.enterRule(s,788,t.RULE_integer);try{this.enterOuterAlt(s,1),this.state=4204,e=this.tokenStream.LA(1),319===e||320===e?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sql_query_yq(){let e=new NK(this.context,this.state);this.enterRule(e,790,t.RULE_sql_query_yq);try{switch(this.state=4211,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,467,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4206,this.sql_stmt_list_yq();break;case 2:this.enterOuterAlt(e,2),this.state=4207,this.match(t.PRAGMA),this.state=4208,this.match(t.ANSI),this.state=4209,this.match(t.DIGITS),this.state=4210,this.ansi_sql_stmt_list()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}sql_stmt_list_yq(){let e,s=new LK(this.context,this.state);this.enterRule(s,792,t.RULE_sql_stmt_list_yq);try{let a;for(this.enterOuterAlt(s,1),this.state=4216,this.errorHandler.sync(this),e=this.tokenStream.LA(1);24===e;)this.state=4213,this.match(t.SEMICOLON),this.state=4218,this.errorHandler.sync(this),e=this.tokenStream.LA(1);for(this.state=4219,this.sql_stmt_yq(),this.state=4228,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,470,this.context);2!==a&&a!==ja.INVALID_ALT_NUMBER;){if(1===a){this.state=4221,this.errorHandler.sync(this),e=this.tokenStream.LA(1);do{this.state=4220,this.match(t.SEMICOLON),this.state=4223,this.errorHandler.sync(this),e=this.tokenStream.LA(1)}while(24===e);this.state=4225,this.sql_stmt_yq()}this.state=4230,this.errorHandler.sync(this),a=this.interpreter.adaptivePredict(this.tokenStream,470,this.context)}for(this.state=4234,this.errorHandler.sync(this),e=this.tokenStream.LA(1);24===e;)this.state=4231,this.match(t.SEMICOLON),this.state=4236,this.errorHandler.sync(this),e=this.tokenStream.LA(1);this.state=4237,this.match(t.EOF)}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sql_stmt_yq(){let e,s=new CK(this.context,this.state);this.enterRule(s,794,t.RULE_sql_stmt_yq);try{this.enterOuterAlt(s,1),this.state=4244,this.errorHandler.sync(this),e=this.tokenStream.LA(1),129===e&&(this.state=4239,this.match(t.EXPLAIN),this.state=4242,this.errorHandler.sync(this),e=this.tokenStream.LA(1),1===e&&(this.state=4240,this.match(t.QUERY),this.state=4241,this.match(t.PLAN))),this.state=4246,this.sql_stmt_core_yq()}catch($c){if(!($c instanceof jr))throw $c;this.errorHandler.reportError(this,$c),this.errorHandler.recover(this,$c)}finally{this.exitRule()}return s}sql_stmt_core_yq(){let e=new _K(this.context,this.state);this.enterRule(e,796,t.RULE_sql_stmt_core_yq);try{switch(this.state=4261,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,474,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4248,this.pragma_stmt();break;case 2:this.enterOuterAlt(e,2),this.state=4249,this.select_stmt();break;case 3:this.enterOuterAlt(e,3),this.state=4250,this.named_nodes_stmt();break;case 4:this.enterOuterAlt(e,4),this.state=4251,this.use_stmt();break;case 5:this.enterOuterAlt(e,5),this.state=4252,this.into_table_stmt_yq();break;case 6:this.enterOuterAlt(e,6),this.state=4253,this.declare_stmt();break;case 7:this.enterOuterAlt(e,7),this.state=4254,this.import_stmt();break;case 8:this.enterOuterAlt(e,8),this.state=4255,this.export_stmt();break;case 9:this.enterOuterAlt(e,9),this.state=4256,this.do_stmt();break;case 10:this.enterOuterAlt(e,10),this.state=4257,this.define_action_or_subquery_stmt();break;case 11:this.enterOuterAlt(e,11),this.state=4258,this.if_stmt();break;case 12:this.enterOuterAlt(e,12),this.state=4259,this.for_stmt();break;case 13:this.enterOuterAlt(e,13),this.state=4260,this.values_stmt()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}replication_name(){let e=new PK(this.context,this.state);this.enterRule(e,798,t.RULE_replication_name);try{this.enterOuterAlt(e,1),this.state=4263,this.match(t.AS),this.state=4264,this.object_ref()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}where_expr(){let e=new MK(this.context,this.state);this.enterRule(e,800,t.RULE_where_expr);try{this.enterOuterAlt(e,1),this.state=4266,this.match(t.WHERE),this.state=4267,this.expr()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}from_stmt(){let e=new dK(this.context,this.state);this.enterRule(e,802,t.RULE_from_stmt);try{this.enterOuterAlt(e,1),this.state=4269,this.match(t.FROM),this.state=4270,this.join_source()}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}alter_table_for_autocomplete(){let e=new UK(this.context,this.state);this.enterRule(e,804,t.RULE_alter_table_for_autocomplete);try{switch(this.state=4274,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,475,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4272,this.alter_table_stmt();break;case 2:this.enterOuterAlt(e,2),this.state=4273,this.alter_table_store_stmt()}}catch(s){if(!(s instanceof jr))throw s;this.errorHandler.reportError(this,s),this.errorHandler.recover(this,s)}finally{this.exitRule()}return e}static get _ATN(){return t.__ATN||(t.__ATN=(new fr).deserialize(t._serializedATN)),t.__ATN}get vocabulary(){return t.vocabulary}},ji.QUERY=1,ji.EQUALS=2,ji.EQUALS2=3,ji.NOT_EQUALS=4,ji.NOT_EQUALS2=5,ji.LESS=6,ji.LESS_OR_EQ=7,ji.GREATER=8,ji.GREATER_OR_EQ=9,ji.SHIFT_LEFT=10,ji.ROT_LEFT=11,ji.AMPERSAND=12,ji.PIPE=13,ji.DOUBLE_PIPE=14,ji.STRUCT_OPEN=15,ji.STRUCT_CLOSE=16,ji.PLUS=17,ji.MINUS=18,ji.TILDA=19,ji.ASTERISK=20,ji.SLASH=21,ji.BACKSLASH=22,ji.PERCENT=23,ji.SEMICOLON=24,ji.DOT=25,ji.COMMA=26,ji.LPAREN=27,ji.RPAREN=28,ji.QUESTION=29,ji.COLON=30,ji.AT=31,ji.DOUBLE_AT=32,ji.DOLLAR=33,ji.QUOTE_DOUBLE=34,ji.QUOTE_SINGLE=35,ji.BACKTICK=36,ji.LBRACE_CURLY=37,ji.RBRACE_CURLY=38,ji.CARET=39,ji.NAMESPACE=40,ji.ARROW=41,ji.RBRACE_SQUARE=42,ji.LBRACE_SQUARE=43,ji.ABORT=44,ji.ACTION=45,ji.ADD=46,ji.AFTER=47,ji.ALL=48,ji.ALTER=49,ji.ANALYZE=50,ji.AND=51,ji.ANSI=52,ji.ANY=53,ji.ARRAY=54,ji.AS=55,ji.ASC=56,ji.ASSUME=57,ji.ASYMMETRIC=58,ji.ASYNC=59,ji.ATTACH=60,ji.ATTRIBUTES=61,ji.AUTOINCREMENT=62,ji.AUTOMAP=63,ji.BEFORE=64,ji.BEGIN=65,ji.BERNOULLI=66,ji.BETWEEN=67,ji.BITCAST=68,ji.BY=69,ji.CALLABLE=70,ji.CASCADE=71,ji.CASE=72,ji.CAST=73,ji.CHANGEFEED=74,ji.CHECK=75,ji.COLLATE=76,ji.COLUMN=77,ji.COLUMNS=78,ji.COMMIT=79,ji.COMPACT=80,ji.CONDITIONAL=81,ji.CONFLICT=82,ji.CONNECT=83,ji.CONSTRAINT=84,ji.CONSUMER=85,ji.COVER=86,ji.CREATE=87,ji.CROSS=88,ji.CUBE=89,ji.CURRENT=90,ji.CURRENT_DATE=91,ji.CURRENT_TIME=92,ji.CURRENT_TIMESTAMP=93,ji.DATA=94,ji.DATABASE=95,ji.DECIMAL=96,ji.DECLARE=97,ji.DEFAULT=98,ji.DEFERRABLE=99,ji.DEFERRED=100,ji.DEFINE=101,ji.DELETE=102,ji.DESC=103,ji.DESCRIBE=104,ji.DETACH=105,ji.DICT=106,ji.DIRECTORY=107,ji.DISABLE=108,ji.DISCARD=109,ji.DISTINCT=110,ji.DO=111,ji.DROP=112,ji.EACH=113,ji.ELSE=114,ji.EMPTY=115,ji.EMPTY_ACTION=116,ji.ENCRYPTED=117,ji.END=118,ji.ENUM=119,ji.ERASE=120,ji.ERROR=121,ji.ESCAPE=122,ji.EVALUATE=123,ji.EXCEPT=124,ji.EXCLUDE=125,ji.EXCLUSION=126,ji.EXCLUSIVE=127,ji.EXISTS=128,ji.EXPLAIN=129,ji.EXPORT=130,ji.EXTERNAL=131,ji.FAIL=132,ji.FALSE=133,ji.FAMILY=134,ji.FILTER=135,ji.FIRST=136,ji.FLATTEN=137,ji.FLOW=138,ji.FOLLOWING=139,ji.FOR=140,ji.FOREIGN=141,ji.FROM=142,ji.FULL=143,ji.FUNCTION=144,ji.GLOB=145,ji.GLOBAL=146,ji.GRANT=147,ji.GROUP=148,ji.GROUPING=149,ji.GROUPS=150,ji.HASH=151,ji.HAVING=152,ji.HOP=153,ji.IF=154,ji.IGNORE=155,ji.ILIKE=156,ji.IMMEDIATE=157,ji.IMPORT=158,ji.IN=159,ji.INDEX=160,ji.INDEXED=161,ji.INHERITS=162,ji.INITIAL=163,ji.INITIALLY=164,ji.INNER=165,ji.INSERT=166,ji.INSTEAD=167,ji.INTERSECT=168,ji.INTO=169,ji.IS=170,ji.ISNULL=171,ji.JOIN=172,ji.JSON_EXISTS=173,ji.JSON_QUERY=174,ji.JSON_VALUE=175,ji.KEY=176,ji.LAST=177,ji.LEFT=178,ji.LEGACY=179,ji.LIKE=180,ji.LIMIT=181,ji.LIST=182,ji.LOCAL=183,ji.MANAGE=184,ji.MATCH=185,ji.MATCHES=186,ji.MATCH_RECOGNIZE=187,ji.MEASURES=188,ji.MICROSECONDS=189,ji.MILLISECONDS=190,ji.MODIFY=191,ji.NANOSECONDS=192,ji.NATURAL=193,ji.NEXT=194,ji.NO=195,ji.NOT=196,ji.NOTNULL=197,ji.NULL=198,ji.NULLS=199,ji.OBJECT=200,ji.OF=201,ji.OFFSET=202,ji.OMIT=203,ji.ON=204,ji.ONE=205,ji.ONLY=206,ji.OPTION=207,ji.OPTIONAL=208,ji.OR=209,ji.ORDER=210,ji.OTHERS=211,ji.OUTER=212,ji.OVER=213,ji.PARALLEL=214,ji.PARTITION=215,ji.PASSING=216,ji.PASSWORD=217,ji.PAST=218,ji.PATTERN=219,ji.PER=220,ji.PERMUTE=221,ji.PLAN=222,ji.PRAGMA=223,ji.PRECEDING=224,ji.PRESORT=225,ji.PRIMARY=226,ji.PRIVILEGES=227,ji.PROCESS=228,ji.QUEUE=229,ji.RAISE=230,ji.RANGE=231,ji.REDUCE=232,ji.REFERENCES=233,ji.REGEXP=234,ji.REINDEX=235,ji.RELEASE=236,ji.REMOVE=237,ji.RENAME=238,ji.REPEATABLE=239,ji.REPLACE=240,ji.REPLICATION=241,ji.RESET=242,ji.RESOURCE=243,ji.RESPECT=244,ji.RESTRICT=245,ji.RESULT=246,ji.RETURN=247,ji.RETURNING=248,ji.REVERT=249,ji.REVOKE=250,ji.RIGHT=251,ji.RLIKE=252,ji.ROLLBACK=253,ji.ROLLUP=254,ji.ROW=255,ji.ROWS=256,ji.SAMPLE=257,ji.SAVEPOINT=258,ji.SCHEMA=259,ji.SECONDS=260,ji.SEEK=261,ji.SELECT=262,ji.SEMI=263,ji.SET=264,ji.SETS=265,ji.SHOW=266,ji.SKIP_RULE=267,ji.SOURCE=268,ji.STREAM=269,ji.STRUCT=270,ji.SUBQUERY=271,ji.SUBSET=272,ji.SYMBOLS=273,ji.SYMMETRIC=274,ji.SYNC=275,ji.SYSTEM=276,ji.TABLE=277,ji.TABLES=278,ji.TABLESAMPLE=279,ji.TABLESTORE=280,ji.TAGGED=281,ji.TEMP=282,ji.TEMPORARY=283,ji.THEN=284,ji.TIES=285,ji.TO=286,ji.TOPIC=287,ji.TRANSACTION=288,ji.TRIGGER=289,ji.TRUE=290,ji.TUPLE=291,ji.TYPE=292,ji.UNBOUNDED=293,ji.UNCONDITIONAL=294,ji.UNION=295,ji.UNIQUE=296,ji.UNKNOWN=297,ji.UNMATCHED=298,ji.UPDATE=299,ji.UPSERT=300,ji.USE=301,ji.USER=302,ji.USING=303,ji.VACUUM=304,ji.VALUES=305,ji.VARIANT=306,ji.VIEW=307,ji.VIRTUAL=308,ji.WHEN=309,ji.WHERE=310,ji.WINDOW=311,ji.WITH=312,ji.WITHOUT=313,ji.WRAPPER=314,ji.XOR=315,ji.STRING_VALUE=316,ji.ID_PLAIN=317,ji.ID_QUOTED=318,ji.DIGITS=319,ji.INTEGER_VALUE=320,ji.REAL=321,ji.BLOB=322,ji.WS=323,ji.COMMENT=324,ji.RULE_sql_query=0,ji.RULE_sql_stmt_list=1,ji.RULE_ansi_sql_stmt_list=2,ji.RULE_lambda_body=3,ji.RULE_lambda_stmt=4,ji.RULE_sql_stmt=5,ji.RULE_sql_stmt_core=6,ji.RULE_expr=7,ji.RULE_or_subexpr=8,ji.RULE_and_subexpr=9,ji.RULE_xor_subexpr=10,ji.RULE_distinct_from_op=11,ji.RULE_cond_expr=12,ji.RULE_match_op=13,ji.RULE_eq_subexpr=14,ji.RULE_shift_right=15,ji.RULE_rot_right=16,ji.RULE_double_question=17,ji.RULE_neq_subexpr=18,ji.RULE_bit_subexpr=19,ji.RULE_add_subexpr=20,ji.RULE_mul_subexpr=21,ji.RULE_con_subexpr=22,ji.RULE_unary_op=23,ji.RULE_unary_subexpr_suffix=24,ji.RULE_unary_casual_subexpr=25,ji.RULE_in_unary_casual_subexpr=26,ji.RULE_unary_subexpr=27,ji.RULE_in_unary_subexpr=28,ji.RULE_list_literal=29,ji.RULE_expr_dict_list=30,ji.RULE_dict_literal=31,ji.RULE_expr_struct_list=32,ji.RULE_struct_literal=33,ji.RULE_atom_expr=34,ji.RULE_in_atom_expr=35,ji.RULE_cast_expr=36,ji.RULE_bitcast_expr=37,ji.RULE_exists_expr=38,ji.RULE_case_expr=39,ji.RULE_lambda=40,ji.RULE_in_expr=41,ji.RULE_json_api_expr=42,ji.RULE_jsonpath_spec=43,ji.RULE_json_variable_name=44,ji.RULE_json_variable=45,ji.RULE_json_variables=46,ji.RULE_json_common_args=47,ji.RULE_json_case_handler=48,ji.RULE_json_value=49,ji.RULE_json_exists_handler=50,ji.RULE_json_exists=51,ji.RULE_json_query_wrapper=52,ji.RULE_json_query_handler=53,ji.RULE_json_query=54,ji.RULE_smart_parenthesis=55,ji.RULE_expr_list=56,ji.RULE_pure_column_list=57,ji.RULE_pure_column_or_named=58,ji.RULE_pure_column_or_named_list=59,ji.RULE_column_name=60,ji.RULE_without_column_name=61,ji.RULE_column_list=62,ji.RULE_without_column_list=63,ji.RULE_named_expr=64,ji.RULE_named_expr_list=65,ji.RULE_invoke_expr=66,ji.RULE_invoke_expr_tail=67,ji.RULE_using_call_expr=68,ji.RULE_key_expr=69,ji.RULE_when_expr=70,ji.RULE_literal_value=71,ji.RULE_bind_parameter=72,ji.RULE_opt_bind_parameter=73,ji.RULE_bind_parameter_list=74,ji.RULE_named_bind_parameter=75,ji.RULE_named_bind_parameter_list=76,ji.RULE_signed_number=77,ji.RULE_type_name_simple=78,ji.RULE_integer_or_bind=79,ji.RULE_type_name_tag=80,ji.RULE_struct_arg=81,ji.RULE_struct_arg_positional=82,ji.RULE_variant_arg=83,ji.RULE_callable_arg=84,ji.RULE_callable_arg_list=85,ji.RULE_type_name_decimal=86,ji.RULE_type_name_optional=87,ji.RULE_type_name_tuple=88,ji.RULE_type_name_struct=89,ji.RULE_type_name_variant=90,ji.RULE_type_name_list=91,ji.RULE_type_name_stream=92,ji.RULE_type_name_flow=93,ji.RULE_type_name_dict=94,ji.RULE_type_name_set=95,ji.RULE_type_name_enum=96,ji.RULE_type_name_resource=97,ji.RULE_type_name_tagged=98,ji.RULE_type_name_callable=99,ji.RULE_type_name_composite=100,ji.RULE_type_name=101,ji.RULE_type_name_or_bind=102,ji.RULE_value_constructor_literal=103,ji.RULE_value_constructor=104,ji.RULE_declare_stmt=105,ji.RULE_module_path=106,ji.RULE_import_stmt=107,ji.RULE_export_stmt=108,ji.RULE_call_action=109,ji.RULE_inline_action=110,ji.RULE_do_stmt=111,ji.RULE_pragma_stmt=112,ji.RULE_pragma_value=113,ji.RULE_sort_specification=114,ji.RULE_sort_specification_list=115,ji.RULE_select_stmt=116,ji.RULE_select_unparenthesized_stmt=117,ji.RULE_select_kind_parenthesis=118,ji.RULE_select_op=119,ji.RULE_select_kind_partial=120,ji.RULE_select_kind=121,ji.RULE_process_core=122,ji.RULE_external_call_param=123,ji.RULE_external_call_settings=124,ji.RULE_reduce_core=125,ji.RULE_opt_set_quantifier=126,ji.RULE_select_core=127,ji.RULE_row_pattern_recognition_clause=128,ji.RULE_row_pattern_rows_per_match=129,ji.RULE_row_pattern_empty_match_handling=130,ji.RULE_row_pattern_measures=131,ji.RULE_row_pattern_measure_list=132,ji.RULE_row_pattern_measure_definition=133,ji.RULE_row_pattern_common_syntax=134,ji.RULE_row_pattern_skip_to=135,ji.RULE_row_pattern_skip_to_variable_name=136,ji.RULE_row_pattern_initial_or_seek=137,ji.RULE_row_pattern=138,ji.RULE_row_pattern_term=139,ji.RULE_row_pattern_factor=140,ji.RULE_row_pattern_quantifier=141,ji.RULE_row_pattern_primary=142,ji.RULE_row_pattern_primary_variable_name=143,ji.RULE_row_pattern_permute=144,ji.RULE_row_pattern_subset_clause=145,ji.RULE_row_pattern_subset_list=146,ji.RULE_row_pattern_subset_item=147,ji.RULE_row_pattern_subset_item_variable_name=148,ji.RULE_row_pattern_subset_rhs=149,ji.RULE_row_pattern_subset_rhs_variable_name=150,ji.RULE_row_pattern_definition_list=151,ji.RULE_row_pattern_definition=152,ji.RULE_row_pattern_definition_variable_name=153,ji.RULE_row_pattern_definition_search_condition=154,ji.RULE_search_condition=155,ji.RULE_row_pattern_variable_name=156,ji.RULE_order_by_clause=157,ji.RULE_ext_order_by_clause=158,ji.RULE_group_by_clause=159,ji.RULE_grouping_element_list=160,ji.RULE_grouping_element=161,ji.RULE_ordinary_grouping_set=162,ji.RULE_ordinary_grouping_set_list=163,ji.RULE_rollup_list=164,ji.RULE_cube_list=165,ji.RULE_grouping_sets_specification=166,ji.RULE_hopping_window_specification=167,ji.RULE_result_column=168,ji.RULE_join_source=169,ji.RULE_named_column=170,ji.RULE_flatten_by_arg=171,ji.RULE_flatten_source=172,ji.RULE_named_single_source=173,ji.RULE_single_source=174,ji.RULE_sample_clause=175,ji.RULE_tablesample_clause=176,ji.RULE_sampling_mode=177,ji.RULE_repeatable_clause=178,ji.RULE_join_op=179,ji.RULE_join_constraint=180,ji.RULE_returning_columns_list=181,ji.RULE_into_table_stmt=182,ji.RULE_into_table_stmt_yq=183,ji.RULE_into_values_source=184,ji.RULE_values_stmt=185,ji.RULE_values_source=186,ji.RULE_values_source_row_list=187,ji.RULE_values_source_row=188,ji.RULE_simple_values_source=189,ji.RULE_create_external_data_source_stmt=190,ji.RULE_alter_external_data_source_stmt=191,ji.RULE_alter_external_data_source_action=192,ji.RULE_drop_external_data_source_stmt=193,ji.RULE_create_view_stmt=194,ji.RULE_drop_view_stmt=195,ji.RULE_upsert_object_stmt=196,ji.RULE_create_object_stmt=197,ji.RULE_create_object_features=198,ji.RULE_alter_object_stmt=199,ji.RULE_alter_object_features=200,ji.RULE_drop_object_stmt=201,ji.RULE_drop_object_features=202,ji.RULE_object_feature_value=203,ji.RULE_object_feature_kv=204,ji.RULE_object_feature_flag=205,ji.RULE_object_feature=206,ji.RULE_object_features=207,ji.RULE_object_type_ref=208,ji.RULE_create_table_stmt=209,ji.RULE_create_table_entry=210,ji.RULE_table_inherits=211,ji.RULE_table_partition_by=212,ji.RULE_with_table_settings=213,ji.RULE_table_tablestore=214,ji.RULE_table_settings_entry=215,ji.RULE_table_as_source=216,ji.RULE_alter_table_stmt=217,ji.RULE_alter_table_action=218,ji.RULE_alter_external_table_stmt=219,ji.RULE_alter_external_table_action=220,ji.RULE_alter_table_store_stmt=221,ji.RULE_alter_table_store_action=222,ji.RULE_alter_table_add_column=223,ji.RULE_alter_table_drop_column=224,ji.RULE_alter_table_alter_column=225,ji.RULE_alter_table_add_column_family=226,ji.RULE_alter_table_alter_column_family=227,ji.RULE_alter_table_set_table_setting_uncompat=228,ji.RULE_alter_table_set_table_setting_compat=229,ji.RULE_alter_table_reset_table_setting=230,ji.RULE_alter_table_add_index=231,ji.RULE_alter_table_drop_index=232,ji.RULE_alter_table_rename_to=233,ji.RULE_alter_table_rename_index_to=234,ji.RULE_alter_table_add_changefeed=235,ji.RULE_alter_table_alter_changefeed=236,ji.RULE_alter_table_drop_changefeed=237,ji.RULE_column_schema=238,ji.RULE_family_relation=239,ji.RULE_opt_column_constraints=240,ji.RULE_column_order_by_specification=241,ji.RULE_table_constraint=242,ji.RULE_table_index=243,ji.RULE_table_index_type=244,ji.RULE_global_index=245,ji.RULE_local_index=246,ji.RULE_changefeed=247,ji.RULE_changefeed_settings=248,ji.RULE_changefeed_settings_entry=249,ji.RULE_changefeed_setting_value=250,ji.RULE_changefeed_alter_settings=251,ji.RULE_alter_table_setting_entry=252,ji.RULE_table_setting_value=253,ji.RULE_family_entry=254,ji.RULE_family_settings=255,ji.RULE_family_settings_entry=256,ji.RULE_family_setting_value=257,ji.RULE_split_boundaries=258,ji.RULE_literal_value_list=259,ji.RULE_drop_table_stmt=260,ji.RULE_create_user_stmt=261,ji.RULE_alter_user_stmt=262,ji.RULE_create_group_stmt=263,ji.RULE_alter_group_stmt=264,ji.RULE_drop_role_stmt=265,ji.RULE_role_name=266,ji.RULE_create_user_option=267,ji.RULE_grant_permissions_stmt=268,ji.RULE_revoke_permissions_stmt=269,ji.RULE_permission_id=270,ji.RULE_permission_name=271,ji.RULE_permission_name_target=272,ji.RULE_create_replication_stmt=273,ji.RULE_replication_target=274,ji.RULE_replication_settings=275,ji.RULE_replication_settings_entry=276,ji.RULE_alter_replication_stmt=277,ji.RULE_alter_replication_action=278,ji.RULE_alter_replication_set_setting=279,ji.RULE_drop_replication_stmt=280,ji.RULE_action_or_subquery_args=281,ji.RULE_define_action_or_subquery_stmt=282,ji.RULE_define_action_or_subquery_body=283,ji.RULE_if_stmt=284,ji.RULE_for_stmt=285,ji.RULE_table_ref=286,ji.RULE_table_key=287,ji.RULE_table_arg=288,ji.RULE_table_hints=289,ji.RULE_table_hint=290,ji.RULE_object_ref=291,ji.RULE_simple_table_ref_core=292,ji.RULE_simple_table_ref=293,ji.RULE_into_simple_table_ref=294,ji.RULE_delete_stmt=295,ji.RULE_update_stmt=296,ji.RULE_set_clause_choice=297,ji.RULE_set_clause_list=298,ji.RULE_set_clause=299,ji.RULE_set_target=300,ji.RULE_multiple_column_assignment=301,ji.RULE_set_target_list=302,ji.RULE_create_topic_stmt=303,ji.RULE_create_topic_entries=304,ji.RULE_create_topic_entry=305,ji.RULE_with_topic_settings=306,ji.RULE_alter_topic_stmt=307,ji.RULE_alter_topic_action=308,ji.RULE_alter_topic_add_consumer=309,ji.RULE_topic_create_consumer_entry=310,ji.RULE_alter_topic_alter_consumer=311,ji.RULE_alter_topic_alter_consumer_entry=312,ji.RULE_alter_topic_drop_consumer=313,ji.RULE_topic_alter_consumer_set=314,ji.RULE_topic_alter_consumer_reset=315,ji.RULE_alter_topic_set_settings=316,ji.RULE_alter_topic_reset_settings=317,ji.RULE_drop_topic_stmt=318,ji.RULE_topic_settings=319,ji.RULE_topic_settings_entry=320,ji.RULE_topic_setting_value=321,ji.RULE_topic_consumer_with_settings=322,ji.RULE_topic_consumer_settings=323,ji.RULE_topic_consumer_settings_entry=324,ji.RULE_topic_consumer_setting_value=325,ji.RULE_topic_ref=326,ji.RULE_topic_consumer_ref=327,ji.RULE_null_treatment=328,ji.RULE_filter_clause=329,ji.RULE_window_name_or_specification=330,ji.RULE_window_name=331,ji.RULE_window_clause=332,ji.RULE_window_definition_list=333,ji.RULE_window_definition=334,ji.RULE_new_window_name=335,ji.RULE_window_specification=336,ji.RULE_window_specification_details=337,ji.RULE_existing_window_name=338,ji.RULE_window_partition_clause=339,ji.RULE_window_order_clause=340,ji.RULE_window_frame_clause=341,ji.RULE_window_frame_units=342,ji.RULE_window_frame_extent=343,ji.RULE_window_frame_between=344,ji.RULE_window_frame_bound=345,ji.RULE_window_frame_exclusion=346,ji.RULE_use_stmt=347,ji.RULE_subselect_stmt=348,ji.RULE_named_nodes_stmt=349,ji.RULE_commit_stmt=350,ji.RULE_rollback_stmt=351,ji.RULE_identifier=352,ji.RULE_id=353,ji.RULE_id_schema=354,ji.RULE_id_expr=355,ji.RULE_id_expr_in=356,ji.RULE_id_window=357,ji.RULE_id_table=358,ji.RULE_id_without=359,ji.RULE_id_hint=360,ji.RULE_id_as_compat=361,ji.RULE_an_id=362,ji.RULE_an_id_or_type=363,ji.RULE_an_id_schema=364,ji.RULE_an_id_expr=365,ji.RULE_an_id_expr_in=366,ji.RULE_an_id_window=367,ji.RULE_an_id_table=368,ji.RULE_an_id_without=369,ji.RULE_an_id_hint=370,ji.RULE_an_id_pure=371,ji.RULE_an_id_as_compat=372,ji.RULE_view_name=373,ji.RULE_opt_id_prefix=374,ji.RULE_cluster_expr=375,ji.RULE_id_or_type=376,ji.RULE_opt_id_prefix_or_type=377,ji.RULE_id_or_at=378,ji.RULE_id_table_or_type=379,ji.RULE_id_table_or_at=380,ji.RULE_keyword=381,ji.RULE_keyword_expr_uncompat=382,ji.RULE_keyword_table_uncompat=383,ji.RULE_keyword_select_uncompat=384,ji.RULE_keyword_alter_uncompat=385,ji.RULE_keyword_in_uncompat=386,ji.RULE_keyword_window_uncompat=387,ji.RULE_keyword_hint_uncompat=388,ji.RULE_keyword_as_compat=389,ji.RULE_keyword_compat=390,ji.RULE_type_id=391,ji.RULE_bool_value=392,ji.RULE_real=393,ji.RULE_integer=394,ji.RULE_sql_query_yq=395,ji.RULE_sql_stmt_list_yq=396,ji.RULE_sql_stmt_yq=397,ji.RULE_sql_stmt_core_yq=398,ji.RULE_replication_name=399,ji.RULE_where_expr=400,ji.RULE_from_stmt=401,ji.RULE_alter_table_for_autocomplete=402,ji.literalNames=[null,null,"'='","'=='","'!='","'<>'","'<'","'<='","'>'","'>='","'<<'","'|<<'","'&'","'|'","'||'","'<|'","'|>'","'+'","'-'","'~'","'*'","'/'","''","'%'","';'","'.'","','","'('","')'","'?'","':'","'@'","'@@'","'$'","'\"'","'''","'`'","'{'","'}'","'^'","'::'","'->'","']'","'['"],ji.symbolicNames=[null,"QUERY","EQUALS","EQUALS2","NOT_EQUALS","NOT_EQUALS2","LESS","LESS_OR_EQ","GREATER","GREATER_OR_EQ","SHIFT_LEFT","ROT_LEFT","AMPERSAND","PIPE","DOUBLE_PIPE","STRUCT_OPEN","STRUCT_CLOSE","PLUS","MINUS","TILDA","ASTERISK","SLASH","BACKSLASH","PERCENT","SEMICOLON","DOT","COMMA","LPAREN","RPAREN","QUESTION","COLON","AT","DOUBLE_AT","DOLLAR","QUOTE_DOUBLE","QUOTE_SINGLE","BACKTICK","LBRACE_CURLY","RBRACE_CURLY","CARET","NAMESPACE","ARROW","RBRACE_SQUARE","LBRACE_SQUARE","ABORT","ACTION","ADD","AFTER","ALL","ALTER","ANALYZE","AND","ANSI","ANY","ARRAY","AS","ASC","ASSUME","ASYMMETRIC","ASYNC","ATTACH","ATTRIBUTES","AUTOINCREMENT","AUTOMAP","BEFORE","BEGIN","BERNOULLI","BETWEEN","BITCAST","BY","CALLABLE","CASCADE","CASE","CAST","CHANGEFEED","CHECK","COLLATE","COLUMN","COLUMNS","COMMIT","COMPACT","CONDITIONAL","CONFLICT","CONNECT","CONSTRAINT","CONSUMER","COVER","CREATE","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATA","DATABASE","DECIMAL","DECLARE","DEFAULT","DEFERRABLE","DEFERRED","DEFINE","DELETE","DESC","DESCRIBE","DETACH","DICT","DIRECTORY","DISABLE","DISCARD","DISTINCT","DO","DROP","EACH","ELSE","EMPTY","EMPTY_ACTION","ENCRYPTED","END","ENUM","ERASE","ERROR","ESCAPE","EVALUATE","EXCEPT","EXCLUDE","EXCLUSION","EXCLUSIVE","EXISTS","EXPLAIN","EXPORT","EXTERNAL","FAIL","FALSE","FAMILY","FILTER","FIRST","FLATTEN","FLOW","FOLLOWING","FOR","FOREIGN","FROM","FULL","FUNCTION","GLOB","GLOBAL","GRANT","GROUP","GROUPING","GROUPS","HASH","HAVING","HOP","IF","IGNORE","ILIKE","IMMEDIATE","IMPORT","IN","INDEX","INDEXED","INHERITS","INITIAL","INITIALLY","INNER","INSERT","INSTEAD","INTERSECT","INTO","IS","ISNULL","JOIN","JSON_EXISTS","JSON_QUERY","JSON_VALUE","KEY","LAST","LEFT","LEGACY","LIKE","LIMIT","LIST","LOCAL","MANAGE","MATCH","MATCHES","MATCH_RECOGNIZE","MEASURES","MICROSECONDS","MILLISECONDS","MODIFY","NANOSECONDS","NATURAL","NEXT","NO","NOT","NOTNULL","NULL","NULLS","OBJECT","OF","OFFSET","OMIT","ON","ONE","ONLY","OPTION","OPTIONAL","OR","ORDER","OTHERS","OUTER","OVER","PARALLEL","PARTITION","PASSING","PASSWORD","PAST","PATTERN","PER","PERMUTE","PLAN","PRAGMA","PRECEDING","PRESORT","PRIMARY","PRIVILEGES","PROCESS","QUEUE","RAISE","RANGE","REDUCE","REFERENCES","REGEXP","REINDEX","RELEASE","REMOVE","RENAME","REPEATABLE","REPLACE","REPLICATION","RESET","RESOURCE","RESPECT","RESTRICT","RESULT","RETURN","RETURNING","REVERT","REVOKE","RIGHT","RLIKE","ROLLBACK","ROLLUP","ROW","ROWS","SAMPLE","SAVEPOINT","SCHEMA","SECONDS","SEEK","SELECT","SEMI","SET","SETS","SHOW","SKIP_RULE","SOURCE","STREAM","STRUCT","SUBQUERY","SUBSET","SYMBOLS","SYMMETRIC","SYNC","SYSTEM","TABLE","TABLES","TABLESAMPLE","TABLESTORE","TAGGED","TEMP","TEMPORARY","THEN","TIES","TO","TOPIC","TRANSACTION","TRIGGER","TRUE","TUPLE","TYPE","UNBOUNDED","UNCONDITIONAL","UNION","UNIQUE","UNKNOWN","UNMATCHED","UPDATE","UPSERT","USE","USER","USING","VACUUM","VALUES","VARIANT","VIEW","VIRTUAL","WHEN","WHERE","WINDOW","WITH","WITHOUT","WRAPPER","XOR","STRING_VALUE","ID_PLAIN","ID_QUOTED","DIGITS","INTEGER_VALUE","REAL","BLOB","WS","COMMENT"],ji.ruleNames=["sql_query","sql_stmt_list","ansi_sql_stmt_list","lambda_body","lambda_stmt","sql_stmt","sql_stmt_core","expr","or_subexpr","and_subexpr","xor_subexpr","distinct_from_op","cond_expr","match_op","eq_subexpr","shift_right","rot_right","double_question","neq_subexpr","bit_subexpr","add_subexpr","mul_subexpr","con_subexpr","unary_op","unary_subexpr_suffix","unary_casual_subexpr","in_unary_casual_subexpr","unary_subexpr","in_unary_subexpr","list_literal","expr_dict_list","dict_literal","expr_struct_list","struct_literal","atom_expr","in_atom_expr","cast_expr","bitcast_expr","exists_expr","case_expr","lambda","in_expr","json_api_expr","jsonpath_spec","json_variable_name","json_variable","json_variables","json_common_args","json_case_handler","json_value","json_exists_handler","json_exists","json_query_wrapper","json_query_handler","json_query","smart_parenthesis","expr_list","pure_column_list","pure_column_or_named","pure_column_or_named_list","column_name","without_column_name","column_list","without_column_list","named_expr","named_expr_list","invoke_expr","invoke_expr_tail","using_call_expr","key_expr","when_expr","literal_value","bind_parameter","opt_bind_parameter","bind_parameter_list","named_bind_parameter","named_bind_parameter_list","signed_number","type_name_simple","integer_or_bind","type_name_tag","struct_arg","struct_arg_positional","variant_arg","callable_arg","callable_arg_list","type_name_decimal","type_name_optional","type_name_tuple","type_name_struct","type_name_variant","type_name_list","type_name_stream","type_name_flow","type_name_dict","type_name_set","type_name_enum","type_name_resource","type_name_tagged","type_name_callable","type_name_composite","type_name","type_name_or_bind","value_constructor_literal","value_constructor","declare_stmt","module_path","import_stmt","export_stmt","call_action","inline_action","do_stmt","pragma_stmt","pragma_value","sort_specification","sort_specification_list","select_stmt","select_unparenthesized_stmt","select_kind_parenthesis","select_op","select_kind_partial","select_kind","process_core","external_call_param","external_call_settings","reduce_core","opt_set_quantifier","select_core","row_pattern_recognition_clause","row_pattern_rows_per_match","row_pattern_empty_match_handling","row_pattern_measures","row_pattern_measure_list","row_pattern_measure_definition","row_pattern_common_syntax","row_pattern_skip_to","row_pattern_skip_to_variable_name","row_pattern_initial_or_seek","row_pattern","row_pattern_term","row_pattern_factor","row_pattern_quantifier","row_pattern_primary","row_pattern_primary_variable_name","row_pattern_permute","row_pattern_subset_clause","row_pattern_subset_list","row_pattern_subset_item","row_pattern_subset_item_variable_name","row_pattern_subset_rhs","row_pattern_subset_rhs_variable_name","row_pattern_definition_list","row_pattern_definition","row_pattern_definition_variable_name","row_pattern_definition_search_condition","search_condition","row_pattern_variable_name","order_by_clause","ext_order_by_clause","group_by_clause","grouping_element_list","grouping_element","ordinary_grouping_set","ordinary_grouping_set_list","rollup_list","cube_list","grouping_sets_specification","hopping_window_specification","result_column","join_source","named_column","flatten_by_arg","flatten_source","named_single_source","single_source","sample_clause","tablesample_clause","sampling_mode","repeatable_clause","join_op","join_constraint","returning_columns_list","into_table_stmt","into_table_stmt_yq","into_values_source","values_stmt","values_source","values_source_row_list","values_source_row","simple_values_source","create_external_data_source_stmt","alter_external_data_source_stmt","alter_external_data_source_action","drop_external_data_source_stmt","create_view_stmt","drop_view_stmt","upsert_object_stmt","create_object_stmt","create_object_features","alter_object_stmt","alter_object_features","drop_object_stmt","drop_object_features","object_feature_value","object_feature_kv","object_feature_flag","object_feature","object_features","object_type_ref","create_table_stmt","create_table_entry","table_inherits","table_partition_by","with_table_settings","table_tablestore","table_settings_entry","table_as_source","alter_table_stmt","alter_table_action","alter_external_table_stmt","alter_external_table_action","alter_table_store_stmt","alter_table_store_action","alter_table_add_column","alter_table_drop_column","alter_table_alter_column","alter_table_add_column_family","alter_table_alter_column_family","alter_table_set_table_setting_uncompat","alter_table_set_table_setting_compat","alter_table_reset_table_setting","alter_table_add_index","alter_table_drop_index","alter_table_rename_to","alter_table_rename_index_to","alter_table_add_changefeed","alter_table_alter_changefeed","alter_table_drop_changefeed","column_schema","family_relation","opt_column_constraints","column_order_by_specification","table_constraint","table_index","table_index_type","global_index","local_index","changefeed","changefeed_settings","changefeed_settings_entry","changefeed_setting_value","changefeed_alter_settings","alter_table_setting_entry","table_setting_value","family_entry","family_settings","family_settings_entry","family_setting_value","split_boundaries","literal_value_list","drop_table_stmt","create_user_stmt","alter_user_stmt","create_group_stmt","alter_group_stmt","drop_role_stmt","role_name","create_user_option","grant_permissions_stmt","revoke_permissions_stmt","permission_id","permission_name","permission_name_target","create_replication_stmt","replication_target","replication_settings","replication_settings_entry","alter_replication_stmt","alter_replication_action","alter_replication_set_setting","drop_replication_stmt","action_or_subquery_args","define_action_or_subquery_stmt","define_action_or_subquery_body","if_stmt","for_stmt","table_ref","table_key","table_arg","table_hints","table_hint","object_ref","simple_table_ref_core","simple_table_ref","into_simple_table_ref","delete_stmt","update_stmt","set_clause_choice","set_clause_list","set_clause","set_target","multiple_column_assignment","set_target_list","create_topic_stmt","create_topic_entries","create_topic_entry","with_topic_settings","alter_topic_stmt","alter_topic_action","alter_topic_add_consumer","topic_create_consumer_entry","alter_topic_alter_consumer","alter_topic_alter_consumer_entry","alter_topic_drop_consumer","topic_alter_consumer_set","topic_alter_consumer_reset","alter_topic_set_settings","alter_topic_reset_settings","drop_topic_stmt","topic_settings","topic_settings_entry","topic_setting_value","topic_consumer_with_settings","topic_consumer_settings","topic_consumer_settings_entry","topic_consumer_setting_value","topic_ref","topic_consumer_ref","null_treatment","filter_clause","window_name_or_specification","window_name","window_clause","window_definition_list","window_definition","new_window_name","window_specification","window_specification_details","existing_window_name","window_partition_clause","window_order_clause","window_frame_clause","window_frame_units","window_frame_extent","window_frame_between","window_frame_bound","window_frame_exclusion","use_stmt","subselect_stmt","named_nodes_stmt","commit_stmt","rollback_stmt","identifier","id","id_schema","id_expr","id_expr_in","id_window","id_table","id_without","id_hint","id_as_compat","an_id","an_id_or_type","an_id_schema","an_id_expr","an_id_expr_in","an_id_window","an_id_table","an_id_without","an_id_hint","an_id_pure","an_id_as_compat","view_name","opt_id_prefix","cluster_expr","id_or_type","opt_id_prefix_or_type","id_or_at","id_table_or_type","id_table_or_at","keyword","keyword_expr_uncompat","keyword_table_uncompat","keyword_select_uncompat","keyword_alter_uncompat","keyword_in_uncompat","keyword_window_uncompat","keyword_hint_uncompat","keyword_as_compat","keyword_compat","type_id","bool_value","real","integer","sql_query_yq","sql_stmt_list_yq","sql_stmt_yq","sql_stmt_core_yq","replication_name","where_expr","from_stmt","alter_table_for_autocomplete"],ji._serializedATN=[4,1,324,4277,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350,2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356,7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361,2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367,7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372,2,373,7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378,7,378,2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383,2,384,7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389,7,389,2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394,2,395,7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400,7,400,2,401,7,401,2,402,7,402,1,0,1,0,1,0,1,0,1,0,3,0,812,8,0,1,1,5,1,815,8,1,10,1,12,1,818,9,1,1,1,1,1,4,1,822,8,1,11,1,12,1,823,1,1,5,1,827,8,1,10,1,12,1,830,9,1,1,1,5,1,833,8,1,10,1,12,1,836,9,1,1,1,1,1,1,2,5,2,841,8,2,10,2,12,2,844,9,2,1,2,1,2,1,3,5,3,849,8,3,10,3,12,3,852,9,3,1,3,1,3,4,3,856,8,3,11,3,12,3,857,5,3,860,8,3,10,3,12,3,863,9,3,1,3,1,3,1,3,5,3,868,8,3,10,3,12,3,871,9,3,1,4,1,4,3,4,875,8,4,1,5,1,5,1,5,3,5,880,8,5,3,5,882,8,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,930,8,6,1,7,1,7,1,7,5,7,935,8,7,10,7,12,7,938,9,7,1,7,3,7,941,8,7,1,8,1,8,1,8,5,8,946,8,8,10,8,12,8,949,9,8,1,9,1,9,1,9,5,9,954,8,9,10,9,12,9,957,9,9,1,10,1,10,3,10,961,8,10,1,11,1,11,3,11,965,8,11,1,11,1,11,1,11,1,12,3,12,971,8,12,1,12,1,12,1,12,1,12,3,12,977,8,12,1,12,3,12,980,8,12,1,12,1,12,3,12,984,8,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,992,8,12,1,12,1,12,3,12,996,8,12,1,12,3,12,999,8,12,1,12,1,12,3,12,1003,8,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1014,8,12,1,12,4,12,1017,8,12,11,12,12,12,1018,3,12,1021,8,12,1,13,1,13,1,14,1,14,1,14,5,14,1028,8,14,10,14,12,14,1031,9,14,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,3,18,1051,8,18,1,18,5,18,1054,8,18,10,18,12,18,1057,9,18,1,18,1,18,1,18,1,18,4,18,1063,8,18,11,18,12,18,1064,3,18,1067,8,18,1,19,1,19,1,19,5,19,1072,8,19,10,19,12,19,1075,9,19,1,20,1,20,1,20,5,20,1080,8,20,10,20,12,20,1083,9,20,1,21,1,21,1,21,5,21,1088,8,21,10,21,12,21,1091,9,21,1,22,1,22,1,22,1,22,3,22,1097,8,22,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,3,24,1107,8,24,5,24,1109,8,24,10,24,12,24,1112,9,24,1,24,1,24,3,24,1116,8,24,1,25,1,25,3,25,1120,8,25,1,25,1,25,1,26,1,26,3,26,1126,8,26,1,26,1,26,1,27,1,27,3,27,1132,8,27,1,28,1,28,3,28,1136,8,28,1,29,1,29,3,29,1140,8,29,1,29,3,29,1143,8,29,1,29,1,29,1,30,1,30,1,30,3,30,1150,8,30,1,30,1,30,1,30,1,30,3,30,1156,8,30,5,30,1158,8,30,10,30,12,30,1161,9,30,1,31,1,31,3,31,1165,8,31,1,31,3,31,1168,8,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,5,32,1180,8,32,10,32,12,32,1183,9,32,1,33,1,33,3,33,1187,8,33,1,33,3,33,1190,8,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,3,34,1204,8,34,1,34,1,34,1,34,1,34,1,34,3,34,1211,8,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,3,35,1222,8,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,3,35,1233,8,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,3,38,1253,8,38,1,38,1,38,1,39,1,39,3,39,1259,8,39,1,39,4,39,1262,8,39,11,39,12,39,1263,1,39,1,39,3,39,1268,8,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,3,40,1282,8,40,3,40,1284,8,40,1,41,1,41,1,42,1,42,1,42,3,42,1291,8,42,1,43,1,43,1,44,1,44,3,44,1297,8,44,1,45,1,45,1,45,1,45,1,46,1,46,1,46,5,46,1306,8,46,10,46,12,46,1309,9,46,1,47,1,47,1,47,1,47,1,47,3,47,1316,8,47,1,48,1,48,1,48,1,48,3,48,1322,8,48,1,49,1,49,1,49,1,49,1,49,3,49,1329,8,49,1,49,1,49,1,49,1,49,5,49,1335,8,49,10,49,12,49,1338,9,49,1,49,1,49,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,3,51,1350,8,51,1,51,1,51,1,52,1,52,3,52,1356,8,52,1,52,1,52,3,52,1360,8,52,1,52,3,52,1363,8,52,3,52,1365,8,52,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1373,8,53,1,54,1,54,1,54,1,54,1,54,1,54,3,54,1381,8,54,1,54,1,54,1,54,1,54,3,54,1387,8,54,1,54,1,54,1,54,1,54,3,54,1393,8,54,1,54,1,54,1,55,1,55,3,55,1399,8,55,1,55,3,55,1402,8,55,1,55,1,55,1,56,1,56,1,56,5,56,1409,8,56,10,56,12,56,1412,9,56,1,57,1,57,1,57,1,57,5,57,1418,8,57,10,57,12,57,1421,9,57,1,57,1,57,1,58,1,58,3,58,1427,8,58,1,59,1,59,1,59,1,59,5,59,1433,8,59,10,59,12,59,1436,9,59,1,59,1,59,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,3,61,1448,8,61,1,62,1,62,1,62,5,62,1453,8,62,10,62,12,62,1456,9,62,1,62,3,62,1459,8,62,1,63,1,63,1,63,5,63,1464,8,63,10,63,12,63,1467,9,63,1,63,3,63,1470,8,63,1,64,1,64,1,64,3,64,1475,8,64,1,65,1,65,1,65,5,65,1480,8,65,10,65,12,65,1483,9,65,1,66,1,66,1,66,1,66,3,66,1489,8,66,1,66,3,66,1492,8,66,1,66,1,66,1,66,1,67,1,67,3,67,1499,8,67,1,67,1,67,3,67,1503,8,67,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,1513,8,68,1,68,1,68,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,3,71,1536,8,71,1,72,1,72,1,72,1,72,3,72,1542,8,72,1,73,1,73,3,73,1546,8,73,1,74,1,74,1,74,5,74,1551,8,74,10,74,12,74,1554,9,74,1,75,1,75,1,75,3,75,1559,8,75,1,76,1,76,1,76,5,76,1564,8,76,10,76,12,76,1567,9,76,1,77,3,77,1570,8,77,1,77,1,77,3,77,1574,8,77,1,78,1,78,1,79,1,79,3,79,1580,8,79,1,80,1,80,1,80,3,80,1585,8,80,1,81,1,81,1,81,1,81,1,82,1,82,1,82,3,82,1594,8,82,1,82,3,82,1597,8,82,1,82,1,82,1,82,1,82,3,82,1603,8,82,1,83,1,83,1,83,3,83,1608,8,83,1,83,1,83,1,84,1,84,1,84,1,84,3,84,1616,8,84,1,85,1,85,1,85,5,85,1621,8,85,10,85,12,85,1624,9,85,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,5,88,1643,8,88,10,88,12,88,1646,9,88,1,88,3,88,1649,8,88,3,88,1651,8,88,1,88,1,88,3,88,1655,8,88,1,89,1,89,1,89,1,89,1,89,5,89,1662,8,89,10,89,12,89,1665,9,89,1,89,3,89,1668,8,89,3,89,1670,8,89,1,89,1,89,3,89,1674,8,89,1,90,1,90,1,90,1,90,1,90,5,90,1681,8,90,10,90,12,90,1684,9,90,1,90,3,90,1687,8,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,5,96,1723,8,96,10,96,12,96,1726,9,96,1,96,3,96,1729,8,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,3,99,1749,8,99,1,99,3,99,1752,8,99,1,99,1,99,1,99,1,99,3,99,1758,8,99,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,3,100,1778,8,100,1,100,5,100,1781,8,100,10,100,12,100,1784,9,100,1,101,1,101,1,101,3,101,1789,8,101,1,101,5,101,1792,8,101,10,101,12,101,1795,9,101,3,101,1797,8,101,1,102,1,102,3,102,1801,8,102,1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,3,104,1828,8,104,1,105,1,105,1,105,1,105,1,105,1,105,3,105,1836,8,105,1,106,3,106,1839,8,106,1,106,1,106,1,106,5,106,1844,8,106,10,106,12,106,1847,9,106,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,109,1,109,3,109,1859,8,109,1,109,1,109,3,109,1863,8,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111,3,111,1875,8,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,5,112,1886,8,112,10,112,12,112,1889,9,112,1,112,1,112,3,112,1893,8,112,1,113,1,113,1,113,1,113,1,113,3,113,1900,8,113,1,114,1,114,3,114,1904,8,114,1,115,1,115,1,115,5,115,1909,8,115,10,115,12,115,1912,9,115,1,116,1,116,1,116,1,116,5,116,1918,8,116,10,116,12,116,1921,9,116,1,117,1,117,1,117,1,117,5,117,1927,8,117,10,117,12,117,1930,9,117,1,118,1,118,1,118,1,118,1,118,3,118,1937,8,118,1,119,1,119,3,119,1941,8,119,1,119,1,119,3,119,1945,8,119,1,120,1,120,1,120,1,120,1,120,3,120,1952,8,120,3,120,1954,8,120,1,121,3,121,1957,8,121,1,121,1,121,1,121,3,121,1962,8,121,1,121,1,121,1,121,3,121,1967,8,121,1,122,1,122,3,122,1971,8,122,1,122,1,122,1,122,5,122,1976,8,122,10,122,12,122,1979,9,122,1,122,1,122,1,122,1,122,3,122,1985,8,122,1,122,1,122,3,122,1989,8,122,1,122,3,122,1992,8,122,1,122,1,122,3,122,1996,8,122,1,122,1,122,3,122,2e3,8,122,3,122,2002,8,122,1,123,1,123,1,123,1,123,1,124,1,124,1,124,5,124,2011,8,124,10,124,12,124,2014,9,124,1,125,1,125,1,125,1,125,5,125,2020,8,125,10,125,12,125,2023,9,125,1,125,1,125,3,125,2027,8,125,1,125,1,125,1,125,1,125,3,125,2033,8,125,1,125,1,125,1,125,3,125,2038,8,125,1,125,3,125,2041,8,125,1,125,1,125,3,125,2045,8,125,1,125,1,125,3,125,2049,8,125,1,126,3,126,2052,8,126,1,127,1,127,3,127,2056,8,127,1,127,1,127,3,127,2060,8,127,1,127,1,127,1,127,1,127,5,127,2066,8,127,10,127,12,127,2069,9,127,1,127,3,127,2072,8,127,1,127,1,127,3,127,2076,8,127,1,127,1,127,3,127,2080,8,127,1,127,3,127,2083,8,127,1,127,3,127,2086,8,127,1,127,1,127,3,127,2090,8,127,1,127,3,127,2093,8,127,1,127,3,127,2096,8,127,1,128,1,128,1,128,3,128,2101,8,128,1,128,3,128,2104,8,128,1,128,3,128,2107,8,128,1,128,3,128,2110,8,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,3,129,2124,8,129,3,129,2126,8,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,3,130,2137,8,130,1,131,1,131,1,131,1,132,1,132,1,132,5,132,2145,8,132,10,132,12,132,2148,9,132,1,133,1,133,1,133,1,133,1,134,1,134,1,134,3,134,2157,8,134,1,134,3,134,2160,8,134,1,134,1,134,1,134,1,134,1,134,3,134,2167,8,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,3,135,2191,8,135,1,136,1,136,1,137,1,137,1,138,1,138,1,138,5,138,2200,8,138,10,138,12,138,2203,9,138,1,139,4,139,2206,8,139,11,139,12,139,2207,1,140,1,140,3,140,2212,8,140,1,141,1,141,3,141,2216,8,141,1,141,1,141,3,141,2220,8,141,1,141,1,141,3,141,2224,8,141,1,141,1,141,3,141,2228,8,141,1,141,1,141,3,141,2232,8,141,1,141,1,141,3,141,2236,8,141,1,141,1,141,1,141,1,141,3,141,2242,8,141,1,142,1,142,1,142,1,142,1,142,3,142,2249,8,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,3,142,2259,8,142,1,143,1,143,1,144,1,144,1,144,1,144,1,144,5,144,2268,8,144,10,144,12,144,2271,9,144,1,144,1,144,1,145,1,145,1,145,1,146,1,146,1,146,5,146,2281,8,146,10,146,12,146,2284,9,146,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,149,1,149,1,149,5,149,2297,8,149,10,149,12,149,2300,9,149,1,150,1,150,1,151,1,151,1,151,5,151,2307,8,151,10,151,12,151,2310,9,151,1,152,1,152,1,152,1,152,1,153,1,153,1,154,1,154,1,155,1,155,1,156,1,156,1,157,1,157,1,157,1,157,1,158,3,158,2329,8,158,1,158,1,158,1,159,1,159,3,159,2335,8,159,1,159,1,159,1,159,1,159,1,159,3,159,2342,8,159,1,160,1,160,1,160,5,160,2347,8,160,10,160,12,160,2350,9,160,1,161,1,161,1,161,1,161,1,161,3,161,2357,8,161,1,162,1,162,1,163,1,163,1,163,5,163,2364,8,163,10,163,12,163,2367,9,163,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,168,3,168,2403,8,168,3,168,2405,8,168,1,169,3,169,2408,8,169,1,169,1,169,1,169,3,169,2413,8,169,1,169,1,169,3,169,2417,8,169,5,169,2419,8,169,10,169,12,169,2422,9,169,1,170,1,170,1,170,3,170,2427,8,170,1,171,1,171,1,171,1,171,3,171,2433,8,171,1,171,1,171,3,171,2437,8,171,1,172,1,172,1,172,3,172,2442,8,172,1,172,1,172,1,172,3,172,2447,8,172,3,172,2449,8,172,1,173,1,173,3,173,2453,8,173,1,173,1,173,1,173,3,173,2458,8,173,1,173,3,173,2461,8,173,3,173,2463,8,173,1,173,1,173,3,173,2467,8,173,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,3,174,2478,8,174,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176,1,176,3,176,2489,8,176,1,177,1,177,1,178,1,178,1,178,1,178,1,178,1,179,1,179,3,179,2500,8,179,1,179,1,179,3,179,2504,8,179,1,179,1,179,3,179,2508,8,179,1,179,1,179,3,179,2512,8,179,1,179,3,179,2515,8,179,1,179,1,179,3,179,2519,8,179,1,179,3,179,2522,8,179,1,180,1,180,1,180,1,180,3,180,2528,8,180,1,181,1,181,1,181,1,181,1,181,5,181,2535,8,181,10,181,12,181,2538,9,181,3,181,2540,8,181,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,3,182,2554,8,182,1,182,1,182,1,182,1,182,3,182,2560,8,182,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,3,183,2573,8,183,1,183,1,183,1,183,1,183,1,184,3,184,2580,8,184,1,184,1,184,1,184,3,184,2585,8,184,1,185,1,185,1,185,1,186,1,186,3,186,2592,8,186,1,187,1,187,1,187,5,187,2597,8,187,10,187,12,187,2600,9,187,1,188,1,188,1,188,1,188,1,189,1,189,3,189,2608,8,189,1,190,1,190,1,190,3,190,2613,8,190,1,190,1,190,1,190,1,190,1,190,1,190,3,190,2621,8,190,1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,5,191,2634,8,191,10,191,12,191,2637,9,191,1,192,1,192,1,192,3,192,2642,8,192,1,193,1,193,1,193,1,193,1,193,1,193,3,193,2650,8,193,1,193,1,193,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,3,196,2673,8,196,1,197,1,197,1,197,1,197,1,197,3,197,2680,8,197,1,197,1,197,1,197,1,197,1,197,1,197,3,197,2688,8,197,1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,200,1,200,1,200,1,201,1,201,1,201,1,201,3,201,2709,8,201,1,201,1,201,1,201,1,201,1,201,1,201,3,201,2717,8,201,1,202,1,202,1,202,1,203,1,203,1,203,3,203,2725,8,203,1,204,1,204,1,204,1,204,1,205,1,205,1,206,1,206,3,206,2735,8,206,1,207,1,207,1,207,1,207,1,207,5,207,2742,8,207,10,207,12,207,2745,9,207,1,207,1,207,3,207,2749,8,207,1,208,1,208,1,209,1,209,1,209,3,209,2756,8,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,3,209,2766,8,209,1,209,1,209,1,209,3,209,2771,8,209,1,209,1,209,1,209,1,209,1,209,5,209,2778,8,209,10,209,12,209,2781,9,209,1,209,3,209,2784,8,209,1,209,1,209,3,209,2788,8,209,1,209,3,209,2791,8,209,1,209,3,209,2794,8,209,1,209,3,209,2797,8,209,1,209,3,209,2800,8,209,1,210,1,210,1,210,1,210,1,210,1,210,3,210,2808,8,210,1,211,1,211,1,211,1,211,1,211,5,211,2815,8,211,10,211,12,211,2818,9,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,213,1,213,1,213,1,213,1,213,5,213,2832,8,213,10,213,12,213,2835,9,213,1,213,1,213,1,214,1,214,1,214,1,215,1,215,1,215,1,215,1,216,1,216,1,216,1,217,1,217,1,217,1,217,1,217,1,217,5,217,2855,8,217,10,217,12,217,2858,9,217,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,3,218,2875,8,218,1,219,1,219,1,219,1,219,1,219,1,219,1,219,5,219,2884,8,219,10,219,12,219,2887,9,219,1,220,1,220,1,220,1,220,1,220,3,220,2894,8,220,1,221,1,221,1,221,1,221,1,221,1,221,5,221,2902,8,221,10,221,12,221,2905,9,221,1,222,1,222,3,222,2909,8,222,1,223,1,223,3,223,2913,8,223,1,223,1,223,1,224,1,224,3,224,2919,8,224,1,224,1,224,1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,228,1,228,1,228,1,228,1,229,1,229,1,229,1,229,1,229,5,229,2948,8,229,10,229,12,229,2951,9,229,1,229,1,229,1,230,1,230,1,230,1,230,1,230,5,230,2960,8,230,10,230,12,230,2963,9,230,1,230,1,230,1,231,1,231,1,231,1,232,1,232,1,232,1,232,1,233,1,233,1,233,1,233,1,234,1,234,1,234,1,234,1,234,1,234,1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,237,1,237,1,237,1,237,1,238,1,238,1,238,3,238,2999,8,238,1,238,1,238,1,239,1,239,1,239,1,240,3,240,3007,8,240,1,240,3,240,3010,8,240,1,240,1,240,3,240,3014,8,240,1,241,1,241,3,241,3018,8,241,1,242,1,242,1,242,1,242,1,242,1,242,5,242,3026,8,242,10,242,12,242,3029,9,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,5,242,3039,8,242,10,242,12,242,3042,9,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,5,242,3052,8,242,10,242,12,242,3055,9,242,1,242,1,242,3,242,3059,8,242,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,5,243,3074,8,243,10,243,12,243,3077,9,243,1,243,3,243,3080,8,243,1,243,1,243,3,243,3084,8,243,1,243,1,243,1,243,1,243,1,243,5,243,3091,8,243,10,243,12,243,3094,9,243,1,243,1,243,1,243,1,243,1,243,1,243,5,243,3102,8,243,10,243,12,243,3105,9,243,1,243,1,243,3,243,3109,8,243,1,244,1,244,3,244,3113,8,244,1,245,1,245,3,245,3117,8,245,1,245,3,245,3120,8,245,1,246,1,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,248,1,248,1,248,5,248,3134,8,248,10,248,12,248,3137,9,248,1,249,1,249,1,249,1,249,1,250,1,250,1,251,1,251,1,251,1,251,1,251,1,251,3,251,3151,8,251,1,252,1,252,1,252,1,252,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,3,253,3166,8,253,1,253,3,253,3169,8,253,1,254,1,254,1,254,1,254,1,255,1,255,1,255,1,255,5,255,3179,8,255,10,255,12,255,3182,9,255,3,255,3184,8,255,1,255,1,255,1,256,1,256,1,256,1,256,1,257,1,257,1,258,1,258,1,258,1,258,5,258,3198,8,258,10,258,12,258,3201,9,258,1,258,1,258,1,258,3,258,3206,8,258,1,259,1,259,1,259,1,259,5,259,3212,8,259,10,259,12,259,3215,9,259,1,259,1,259,1,260,1,260,1,260,1,260,1,260,3,260,3224,8,260,1,260,1,260,3,260,3228,8,260,1,260,1,260,1,261,1,261,1,261,1,261,3,261,3236,8,261,1,262,1,262,1,262,1,262,3,262,3242,8,262,1,262,1,262,1,262,1,262,3,262,3248,8,262,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,5,263,3258,8,263,10,263,12,263,3261,9,263,1,263,3,263,3264,8,263,3,263,3266,8,263,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,5,264,3276,8,264,10,264,12,264,3279,9,264,1,264,3,264,3282,8,264,1,264,1,264,1,264,3,264,3287,8,264,1,265,1,265,1,265,1,265,3,265,3293,8,265,1,265,1,265,1,265,5,265,3298,8,265,10,265,12,265,3301,9,265,1,265,3,265,3304,8,265,1,266,1,266,3,266,3308,8,266,1,267,3,267,3311,8,267,1,267,1,267,1,267,1,268,1,268,1,268,1,268,1,268,1,268,5,268,3322,8,268,10,268,12,268,3325,9,268,1,268,1,268,1,268,1,268,5,268,3331,8,268,10,268,12,268,3334,9,268,1,268,3,268,3337,8,268,1,268,1,268,1,268,3,268,3342,8,268,1,269,1,269,1,269,1,269,3,269,3348,8,269,1,269,1,269,1,269,1,269,1,269,5,269,3355,8,269,10,269,12,269,3358,9,269,1,269,1,269,1,269,1,269,5,269,3364,8,269,10,269,12,269,3367,9,269,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,3,270,3383,8,270,1,270,1,270,3,270,3387,8,270,1,270,1,270,3,270,3391,8,270,3,270,3393,8,270,1,271,1,271,3,271,3397,8,271,1,272,1,272,1,272,5,272,3402,8,272,10,272,12,272,3405,9,272,1,272,3,272,3408,8,272,1,272,1,272,3,272,3412,8,272,3,272,3414,8,272,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,5,273,3424,8,273,10,273,12,273,3427,9,273,1,273,1,273,1,273,1,273,1,273,1,274,1,274,1,274,1,275,1,275,1,275,5,275,3440,8,275,10,275,12,275,3443,9,275,1,276,1,276,1,276,1,276,1,277,1,277,1,277,1,277,1,277,1,277,1,277,5,277,3456,8,277,10,277,12,277,3459,9,277,1,278,1,278,1,279,1,279,1,279,1,279,1,279,1,280,1,280,1,280,1,280,1,280,3,280,3473,8,280,1,281,1,281,1,281,5,281,3478,8,281,10,281,12,281,3481,9,281,1,282,1,282,1,282,1,282,1,282,3,282,3488,8,282,1,282,1,282,1,282,1,282,1,282,1,282,1,283,5,283,3497,8,283,10,283,12,283,3500,9,283,1,283,1,283,4,283,3504,8,283,11,283,12,283,3505,1,283,5,283,3509,8,283,10,283,12,283,3512,9,283,1,283,5,283,3515,8,283,10,283,12,283,3518,9,283,3,283,3520,8,283,1,284,3,284,3523,8,284,1,284,1,284,1,284,1,284,1,284,3,284,3530,8,284,1,285,3,285,3533,8,285,1,285,3,285,3536,8,285,1,285,1,285,1,285,1,285,1,285,1,285,1,285,3,285,3545,8,285,1,286,1,286,1,286,3,286,3550,8,286,1,286,3,286,3553,8,286,1,286,1,286,1,286,1,286,1,286,1,286,5,286,3561,8,286,10,286,12,286,3564,9,286,1,286,3,286,3567,8,286,3,286,3569,8,286,1,286,1,286,1,286,1,286,1,286,3,286,3576,8,286,1,286,3,286,3579,8,286,1,286,1,286,3,286,3583,8,286,3,286,3585,8,286,1,286,3,286,3588,8,286,1,287,1,287,1,287,3,287,3593,8,287,1,288,3,288,3596,8,288,1,288,1,288,1,288,3,288,3601,8,288,1,289,1,289,1,289,1,289,1,289,1,289,5,289,3609,8,289,10,289,12,289,3612,9,289,1,289,1,289,3,289,3616,8,289,1,290,1,290,1,290,1,290,1,290,1,290,1,290,5,290,3625,8,290,10,290,12,290,3628,9,290,1,290,3,290,3631,8,290,1,290,1,290,3,290,3635,8,290,3,290,3637,8,290,1,290,1,290,3,290,3641,8,290,1,290,1,290,1,290,3,290,3646,8,290,1,290,1,290,1,290,1,290,5,290,3652,8,290,10,290,12,290,3655,9,290,3,290,3657,8,290,1,290,3,290,3660,8,290,1,290,3,290,3663,8,290,1,291,1,291,1,291,3,291,3668,8,291,1,291,1,291,1,292,1,292,3,292,3674,8,292,1,292,3,292,3677,8,292,1,293,1,293,3,293,3681,8,293,1,294,1,294,1,294,1,294,3,294,3687,8,294,1,295,1,295,1,295,1,295,1,295,1,295,3,295,3695,8,295,1,295,3,295,3698,8,295,1,296,1,296,1,296,1,296,1,296,3,296,3705,8,296,1,296,1,296,3,296,3709,8,296,1,296,3,296,3712,8,296,1,297,1,297,3,297,3716,8,297,1,298,1,298,1,298,5,298,3721,8,298,10,298,12,298,3724,9,298,1,299,1,299,1,299,1,299,1,300,1,300,1,301,1,301,1,301,1,301,1,301,1,301,1,302,1,302,1,302,1,302,5,302,3742,8,302,10,302,12,302,3745,9,302,1,302,1,302,1,303,1,303,1,303,1,303,3,303,3753,8,303,1,303,3,303,3756,8,303,1,304,1,304,1,304,1,304,5,304,3762,8,304,10,304,12,304,3765,9,304,1,304,1,304,1,305,1,305,1,306,1,306,1,306,1,306,1,306,1,307,1,307,1,307,1,307,1,307,1,307,5,307,3782,8,307,10,307,12,307,3785,9,307,1,308,1,308,1,308,1,308,1,308,3,308,3792,8,308,1,309,1,309,1,309,1,310,1,310,1,310,3,310,3800,8,310,1,311,1,311,1,311,1,311,1,311,1,312,1,312,3,312,3809,8,312,1,313,1,313,1,313,1,313,1,314,1,314,1,314,1,314,1,314,1,315,1,315,1,315,1,315,1,315,5,315,3825,8,315,10,315,12,315,3828,9,315,1,315,1,315,1,316,1,316,1,316,1,316,1,316,1,317,1,317,1,317,1,317,1,317,5,317,3842,8,317,10,317,12,317,3845,9,317,1,317,1,317,1,318,1,318,1,318,1,318,1,319,1,319,1,319,5,319,3856,8,319,10,319,12,319,3859,9,319,1,320,1,320,1,320,1,320,1,321,1,321,1,322,1,322,1,322,1,322,1,322,1,323,1,323,1,323,5,323,3875,8,323,10,323,12,323,3878,9,323,1,324,1,324,1,324,1,324,1,325,1,325,1,326,1,326,1,326,3,326,3889,8,326,1,326,1,326,1,327,1,327,1,328,1,328,1,328,1,328,3,328,3899,8,328,1,329,1,329,1,329,1,329,1,329,1,330,1,330,3,330,3908,8,330,1,331,1,331,1,332,1,332,1,332,1,333,1,333,1,333,5,333,3918,8,333,10,333,12,333,3921,9,333,1,334,1,334,1,334,1,334,1,335,1,335,1,336,1,336,1,336,1,336,1,337,3,337,3934,8,337,1,337,3,337,3937,8,337,1,337,3,337,3940,8,337,1,337,3,337,3943,8,337,1,338,1,338,1,339,1,339,3,339,3949,8,339,1,339,1,339,1,339,1,340,1,340,1,341,1,341,1,341,3,341,3959,8,341,1,342,1,342,1,343,1,343,3,343,3965,8,343,1,344,1,344,1,344,1,344,1,344,1,345,1,345,1,345,1,345,3,345,3976,8,345,1,345,3,345,3979,8,345,1,346,1,346,1,346,1,346,1,346,1,346,1,346,1,346,1,346,1,346,3,346,3991,8,346,1,347,1,347,1,347,1,348,1,348,1,348,1,348,1,348,3,348,4001,8,348,1,349,1,349,1,349,1,349,3,349,4007,8,349,1,350,1,350,1,351,1,351,1,352,1,352,1,353,1,353,3,353,4017,8,353,1,354,1,354,1,354,1,354,1,354,1,354,1,354,3,354,4026,8,354,1,355,1,355,1,355,1,355,1,355,1,355,3,355,4034,8,355,1,356,1,356,1,356,1,356,1,356,3,356,4041,8,356,1,357,1,357,1,357,1,357,1,357,1,357,1,357,1,357,3,357,4051,8,357,1,358,1,358,1,358,1,358,1,358,1,358,1,358,3,358,4060,8,358,1,359,1,359,1,359,1,359,1,359,1,359,1,359,3,359,4069,8,359,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,3,360,4079,8,360,1,361,1,361,3,361,4083,8,361,1,362,1,362,3,362,4087,8,362,1,363,1,363,3,363,4091,8,363,1,364,1,364,3,364,4095,8,364,1,365,1,365,3,365,4099,8,365,1,366,1,366,3,366,4103,8,366,1,367,1,367,3,367,4107,8,367,1,368,1,368,3,368,4111,8,368,1,369,1,369,3,369,4115,8,369,1,370,1,370,3,370,4119,8,370,1,371,1,371,3,371,4123,8,371,1,372,1,372,3,372,4127,8,372,1,373,1,373,1,373,3,373,4132,8,373,1,374,1,374,1,374,3,374,4137,8,374,1,375,1,375,1,375,3,375,4142,8,375,1,375,1,375,3,375,4146,8,375,1,376,1,376,3,376,4150,8,376,1,377,1,377,1,377,3,377,4155,8,377,1,378,3,378,4158,8,378,1,378,1,378,1,379,1,379,3,379,4164,8,379,1,380,3,380,4167,8,380,1,380,1,380,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381,4179,8,381,1,382,1,382,1,383,1,383,1,384,1,384,1,385,1,385,1,386,1,386,1,387,1,387,1,388,1,388,1,389,1,389,1,390,1,390,1,391,1,391,1,392,1,392,1,393,1,393,1,394,1,394,1,395,1,395,1,395,1,395,1,395,3,395,4212,8,395,1,396,5,396,4215,8,396,10,396,12,396,4218,9,396,1,396,1,396,4,396,4222,8,396,11,396,12,396,4223,1,396,5,396,4227,8,396,10,396,12,396,4230,9,396,1,396,5,396,4233,8,396,10,396,12,396,4236,9,396,1,396,1,396,1,397,1,397,1,397,3,397,4243,8,397,3,397,4245,8,397,1,397,1,397,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,3,398,4262,8,398,1,399,1,399,1,399,1,400,1,400,1,400,1,401,1,401,1,401,1,402,1,402,3,402,4275,8,402,1,402,0,0,403,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798,800,802,804,0,39,2,0,58,58,274,274,6,0,145,145,156,156,180,180,185,185,234,234,252,252,1,0,6,9,1,0,17,18,2,0,20,21,23,23,2,0,17,19,196,196,2,0,115,115,121,121,4,0,121,121,133,133,290,290,297,297,2,0,81,81,294,294,2,0,56,56,103,103,2,0,26,26,202,202,2,0,48,48,110,110,2,0,163,163,261,261,3,0,106,106,182,182,208,208,2,0,66,66,276,276,2,0,206,206,263,263,2,0,59,59,275,275,3,0,189,190,192,192,260,260,2,0,46,46,112,112,2,0,148,148,302,302,2,0,61,61,278,278,2,0,120,120,299,299,3,0,49,49,104,104,237,237,3,0,61,61,255,255,278,278,2,0,143,143,301,301,3,0,107,107,229,229,277,277,2,0,45,45,271,271,2,0,78,78,259,259,3,0,150,150,231,231,256,256,2,0,139,139,224,224,1,0,317,318,21,0,58,58,67,68,72,73,89,89,91,93,116,116,128,128,142,143,153,153,173,175,183,183,196,196,198,198,228,228,232,232,247,248,254,254,262,262,274,274,293,293,309,310,3,0,53,53,120,120,269,269,11,0,48,48,55,55,57,57,110,110,124,124,152,152,168,168,181,181,295,295,311,311,313,313,31,0,61,61,83,83,85,85,94,94,104,104,107,107,136,136,147,147,163,163,177,177,179,179,184,184,186,192,194,194,203,203,205,205,207,207,214,214,218,221,227,227,229,229,237,237,241,241,250,250,260,261,266,268,272,272,278,278,287,287,292,292,298,298,50,0,44,47,49,52,54,54,56,56,59,62,64,66,69,69,71,71,74,76,79,79,81,88,90,90,94,105,107,109,111,115,117,118,121,123,125,127,129,132,134,137,139,141,144,145,147,149,151,151,154,167,169,172,176,180,184,195,197,197,199,207,209,227,229,230,233,238,240,242,244,246,249,253,255,255,257,258,260,261,263,263,265,268,271,273,275,280,282,289,292,292,294,294,296,305,307,308,312,312,314,315,12,0,70,70,106,106,119,119,138,138,182,182,208,208,243,243,264,264,270,270,281,281,291,291,306,306,2,0,133,133,290,290,1,0,319,320,4591,0,811,1,0,0,0,2,816,1,0,0,0,4,842,1,0,0,0,6,850,1,0,0,0,8,874,1,0,0,0,10,881,1,0,0,0,12,929,1,0,0,0,14,940,1,0,0,0,16,942,1,0,0,0,18,950,1,0,0,0,20,958,1,0,0,0,22,962,1,0,0,0,24,1020,1,0,0,0,26,1022,1,0,0,0,28,1024,1,0,0,0,30,1032,1,0,0,0,32,1035,1,0,0,0,34,1039,1,0,0,0,36,1042,1,0,0,0,38,1068,1,0,0,0,40,1076,1,0,0,0,42,1084,1,0,0,0,44,1096,1,0,0,0,46,1098,1,0,0,0,48,1110,1,0,0,0,50,1119,1,0,0,0,52,1125,1,0,0,0,54,1131,1,0,0,0,56,1135,1,0,0,0,58,1137,1,0,0,0,60,1146,1,0,0,0,62,1162,1,0,0,0,64,1171,1,0,0,0,66,1184,1,0,0,0,68,1210,1,0,0,0,70,1232,1,0,0,0,72,1234,1,0,0,0,74,1241,1,0,0,0,76,1248,1,0,0,0,78,1256,1,0,0,0,80,1271,1,0,0,0,82,1285,1,0,0,0,84,1290,1,0,0,0,86,1292,1,0,0,0,88,1296,1,0,0,0,90,1298,1,0,0,0,92,1302,1,0,0,0,94,1310,1,0,0,0,96,1321,1,0,0,0,98,1323,1,0,0,0,100,1341,1,0,0,0,102,1345,1,0,0,0,104,1364,1,0,0,0,106,1372,1,0,0,0,108,1374,1,0,0,0,110,1396,1,0,0,0,112,1405,1,0,0,0,114,1413,1,0,0,0,116,1426,1,0,0,0,118,1428,1,0,0,0,120,1439,1,0,0,0,122,1447,1,0,0,0,124,1449,1,0,0,0,126,1460,1,0,0,0,128,1471,1,0,0,0,130,1476,1,0,0,0,132,1484,1,0,0,0,134,1498,1,0,0,0,136,1512,1,0,0,0,138,1516,1,0,0,0,140,1520,1,0,0,0,142,1535,1,0,0,0,144,1537,1,0,0,0,146,1543,1,0,0,0,148,1547,1,0,0,0,150,1555,1,0,0,0,152,1560,1,0,0,0,154,1569,1,0,0,0,156,1575,1,0,0,0,158,1579,1,0,0,0,160,1584,1,0,0,0,162,1586,1,0,0,0,164,1602,1,0,0,0,166,1607,1,0,0,0,168,1611,1,0,0,0,170,1617,1,0,0,0,172,1625,1,0,0,0,174,1632,1,0,0,0,176,1637,1,0,0,0,178,1656,1,0,0,0,180,1675,1,0,0,0,182,1690,1,0,0,0,184,1695,1,0,0,0,186,1700,1,0,0,0,188,1705,1,0,0,0,190,1712,1,0,0,0,192,1717,1,0,0,0,194,1732,1,0,0,0,196,1737,1,0,0,0,198,1744,1,0,0,0,200,1777,1,0,0,0,202,1796,1,0,0,0,204,1800,1,0,0,0,206,1802,1,0,0,0,208,1827,1,0,0,0,210,1829,1,0,0,0,212,1838,1,0,0,0,214,1848,1,0,0,0,216,1853,1,0,0,0,218,1858,1,0,0,0,220,1866,1,0,0,0,222,1871,1,0,0,0,224,1876,1,0,0,0,226,1899,1,0,0,0,228,1901,1,0,0,0,230,1905,1,0,0,0,232,1913,1,0,0,0,234,1922,1,0,0,0,236,1936,1,0,0,0,238,1944,1,0,0,0,240,1946,1,0,0,0,242,1956,1,0,0,0,244,1968,1,0,0,0,246,2003,1,0,0,0,248,2007,1,0,0,0,250,2015,1,0,0,0,252,2051,1,0,0,0,254,2055,1,0,0,0,256,2097,1,0,0,0,258,2125,1,0,0,0,260,2136,1,0,0,0,262,2138,1,0,0,0,264,2141,1,0,0,0,266,2149,1,0,0,0,268,2156,1,0,0,0,270,2190,1,0,0,0,272,2192,1,0,0,0,274,2194,1,0,0,0,276,2196,1,0,0,0,278,2205,1,0,0,0,280,2209,1,0,0,0,282,2241,1,0,0,0,284,2258,1,0,0,0,286,2260,1,0,0,0,288,2262,1,0,0,0,290,2274,1,0,0,0,292,2277,1,0,0,0,294,2285,1,0,0,0,296,2291,1,0,0,0,298,2293,1,0,0,0,300,2301,1,0,0,0,302,2303,1,0,0,0,304,2311,1,0,0,0,306,2315,1,0,0,0,308,2317,1,0,0,0,310,2319,1,0,0,0,312,2321,1,0,0,0,314,2323,1,0,0,0,316,2328,1,0,0,0,318,2332,1,0,0,0,320,2343,1,0,0,0,322,2356,1,0,0,0,324,2358,1,0,0,0,326,2360,1,0,0,0,328,2368,1,0,0,0,330,2373,1,0,0,0,332,2378,1,0,0,0,334,2384,1,0,0,0,336,2404,1,0,0,0,338,2407,1,0,0,0,340,2423,1,0,0,0,342,2436,1,0,0,0,344,2438,1,0,0,0,346,2450,1,0,0,0,348,2477,1,0,0,0,350,2479,1,0,0,0,352,2482,1,0,0,0,354,2490,1,0,0,0,356,2492,1,0,0,0,358,2521,1,0,0,0,360,2527,1,0,0,0,362,2529,1,0,0,0,364,2553,1,0,0,0,366,2572,1,0,0,0,368,2584,1,0,0,0,370,2586,1,0,0,0,372,2591,1,0,0,0,374,2593,1,0,0,0,376,2601,1,0,0,0,378,2607,1,0,0,0,380,2609,1,0,0,0,382,2625,1,0,0,0,384,2641,1,0,0,0,386,2643,1,0,0,0,388,2653,1,0,0,0,390,2660,1,0,0,0,392,2664,1,0,0,0,394,2674,1,0,0,0,396,2689,1,0,0,0,398,2692,1,0,0,0,400,2701,1,0,0,0,402,2704,1,0,0,0,404,2718,1,0,0,0,406,2724,1,0,0,0,408,2726,1,0,0,0,410,2730,1,0,0,0,412,2734,1,0,0,0,414,2748,1,0,0,0,416,2750,1,0,0,0,418,2752,1,0,0,0,420,2807,1,0,0,0,422,2809,1,0,0,0,424,2821,1,0,0,0,426,2826,1,0,0,0,428,2838,1,0,0,0,430,2841,1,0,0,0,432,2845,1,0,0,0,434,2848,1,0,0,0,436,2874,1,0,0,0,438,2876,1,0,0,0,440,2893,1,0,0,0,442,2895,1,0,0,0,444,2908,1,0,0,0,446,2910,1,0,0,0,448,2916,1,0,0,0,450,2922,1,0,0,0,452,2928,1,0,0,0,454,2931,1,0,0,0,456,2938,1,0,0,0,458,2942,1,0,0,0,460,2954,1,0,0,0,462,2966,1,0,0,0,464,2969,1,0,0,0,466,2973,1,0,0,0,468,2977,1,0,0,0,470,2983,1,0,0,0,472,2986,1,0,0,0,474,2991,1,0,0,0,476,2995,1,0,0,0,478,3002,1,0,0,0,480,3009,1,0,0,0,482,3015,1,0,0,0,484,3058,1,0,0,0,486,3060,1,0,0,0,488,3112,1,0,0,0,490,3114,1,0,0,0,492,3121,1,0,0,0,494,3123,1,0,0,0,496,3130,1,0,0,0,498,3138,1,0,0,0,500,3142,1,0,0,0,502,3150,1,0,0,0,504,3152,1,0,0,0,506,3168,1,0,0,0,508,3170,1,0,0,0,510,3174,1,0,0,0,512,3187,1,0,0,0,514,3191,1,0,0,0,516,3205,1,0,0,0,518,3207,1,0,0,0,520,3218,1,0,0,0,522,3231,1,0,0,0,524,3237,1,0,0,0,526,3249,1,0,0,0,528,3267,1,0,0,0,530,3288,1,0,0,0,532,3307,1,0,0,0,534,3310,1,0,0,0,536,3315,1,0,0,0,538,3343,1,0,0,0,540,3392,1,0,0,0,542,3396,1,0,0,0,544,3413,1,0,0,0,546,3415,1,0,0,0,548,3433,1,0,0,0,550,3436,1,0,0,0,552,3444,1,0,0,0,554,3448,1,0,0,0,556,3460,1,0,0,0,558,3462,1,0,0,0,560,3467,1,0,0,0,562,3474,1,0,0,0,564,3482,1,0,0,0,566,3498,1,0,0,0,568,3522,1,0,0,0,570,3532,1,0,0,0,572,3549,1,0,0,0,574,3589,1,0,0,0,576,3595,1,0,0,0,578,3602,1,0,0,0,580,3662,1,0,0,0,582,3667,1,0,0,0,584,3676,1,0,0,0,586,3678,1,0,0,0,588,3682,1,0,0,0,590,3688,1,0,0,0,592,3699,1,0,0,0,594,3715,1,0,0,0,596,3717,1,0,0,0,598,3725,1,0,0,0,600,3729,1,0,0,0,602,3731,1,0,0,0,604,3737,1,0,0,0,606,3748,1,0,0,0,608,3757,1,0,0,0,610,3768,1,0,0,0,612,3770,1,0,0,0,614,3775,1,0,0,0,616,3791,1,0,0,0,618,3793,1,0,0,0,620,3796,1,0,0,0,622,3801,1,0,0,0,624,3808,1,0,0,0,626,3810,1,0,0,0,628,3814,1,0,0,0,630,3819,1,0,0,0,632,3831,1,0,0,0,634,3836,1,0,0,0,636,3848,1,0,0,0,638,3852,1,0,0,0,640,3860,1,0,0,0,642,3864,1,0,0,0,644,3866,1,0,0,0,646,3871,1,0,0,0,648,3879,1,0,0,0,650,3883,1,0,0,0,652,3888,1,0,0,0,654,3892,1,0,0,0,656,3898,1,0,0,0,658,3900,1,0,0,0,660,3907,1,0,0,0,662,3909,1,0,0,0,664,3911,1,0,0,0,666,3914,1,0,0,0,668,3922,1,0,0,0,670,3926,1,0,0,0,672,3928,1,0,0,0,674,3933,1,0,0,0,676,3944,1,0,0,0,678,3946,1,0,0,0,680,3953,1,0,0,0,682,3955,1,0,0,0,684,3960,1,0,0,0,686,3964,1,0,0,0,688,3966,1,0,0,0,690,3978,1,0,0,0,692,3990,1,0,0,0,694,3992,1,0,0,0,696,4e3,1,0,0,0,698,4002,1,0,0,0,700,4008,1,0,0,0,702,4010,1,0,0,0,704,4012,1,0,0,0,706,4016,1,0,0,0,708,4025,1,0,0,0,710,4033,1,0,0,0,712,4040,1,0,0,0,714,4050,1,0,0,0,716,4059,1,0,0,0,718,4068,1,0,0,0,720,4078,1,0,0,0,722,4082,1,0,0,0,724,4086,1,0,0,0,726,4090,1,0,0,0,728,4094,1,0,0,0,730,4098,1,0,0,0,732,4102,1,0,0,0,734,4106,1,0,0,0,736,4110,1,0,0,0,738,4114,1,0,0,0,740,4118,1,0,0,0,742,4122,1,0,0,0,744,4126,1,0,0,0,746,4131,1,0,0,0,748,4136,1,0,0,0,750,4141,1,0,0,0,752,4149,1,0,0,0,754,4154,1,0,0,0,756,4157,1,0,0,0,758,4163,1,0,0,0,760,4166,1,0,0,0,762,4178,1,0,0,0,764,4180,1,0,0,0,766,4182,1,0,0,0,768,4184,1,0,0,0,770,4186,1,0,0,0,772,4188,1,0,0,0,774,4190,1,0,0,0,776,4192,1,0,0,0,778,4194,1,0,0,0,780,4196,1,0,0,0,782,4198,1,0,0,0,784,4200,1,0,0,0,786,4202,1,0,0,0,788,4204,1,0,0,0,790,4211,1,0,0,0,792,4216,1,0,0,0,794,4244,1,0,0,0,796,4261,1,0,0,0,798,4263,1,0,0,0,800,4266,1,0,0,0,802,4269,1,0,0,0,804,4274,1,0,0,0,806,812,3,2,1,0,807,808,5,223,0,0,808,809,5,52,0,0,809,810,5,319,0,0,810,812,3,4,2,0,811,806,1,0,0,0,811,807,1,0,0,0,812,1,1,0,0,0,813,815,5,24,0,0,814,813,1,0,0,0,815,818,1,0,0,0,816,814,1,0,0,0,816,817,1,0,0,0,817,819,1,0,0,0,818,816,1,0,0,0,819,828,3,10,5,0,820,822,5,24,0,0,821,820,1,0,0,0,822,823,1,0,0,0,823,821,1,0,0,0,823,824,1,0,0,0,824,825,1,0,0,0,825,827,3,10,5,0,826,821,1,0,0,0,827,830,1,0,0,0,828,826,1,0,0,0,828,829,1,0,0,0,829,834,1,0,0,0,830,828,1,0,0,0,831,833,5,24,0,0,832,831,1,0,0,0,833,836,1,0,0,0,834,832,1,0,0,0,834,835,1,0,0,0,835,837,1,0,0,0,836,834,1,0,0,0,837,838,5,0,0,1,838,3,1,0,0,0,839,841,5,24,0,0,840,839,1,0,0,0,841,844,1,0,0,0,842,840,1,0,0,0,842,843,1,0,0,0,843,845,1,0,0,0,844,842,1,0,0,0,845,846,5,0,0,1,846,5,1,0,0,0,847,849,5,24,0,0,848,847,1,0,0,0,849,852,1,0,0,0,850,848,1,0,0,0,850,851,1,0,0,0,851,861,1,0,0,0,852,850,1,0,0,0,853,855,3,8,4,0,854,856,5,24,0,0,855,854,1,0,0,0,856,857,1,0,0,0,857,855,1,0,0,0,857,858,1,0,0,0,858,860,1,0,0,0,859,853,1,0,0,0,860,863,1,0,0,0,861,859,1,0,0,0,861,862,1,0,0,0,862,864,1,0,0,0,863,861,1,0,0,0,864,865,5,247,0,0,865,869,3,14,7,0,866,868,5,24,0,0,867,866,1,0,0,0,868,871,1,0,0,0,869,867,1,0,0,0,869,870,1,0,0,0,870,7,1,0,0,0,871,869,1,0,0,0,872,875,3,698,349,0,873,875,3,214,107,0,874,872,1,0,0,0,874,873,1,0,0,0,875,9,1,0,0,0,876,879,5,129,0,0,877,878,5,1,0,0,878,880,5,222,0,0,879,877,1,0,0,0,879,880,1,0,0,0,880,882,1,0,0,0,881,876,1,0,0,0,881,882,1,0,0,0,882,883,1,0,0,0,883,884,3,12,6,0,884,11,1,0,0,0,885,930,3,224,112,0,886,930,3,232,116,0,887,930,3,698,349,0,888,930,3,418,209,0,889,930,3,520,260,0,890,930,3,694,347,0,891,930,3,364,182,0,892,930,3,700,350,0,893,930,3,592,296,0,894,930,3,590,295,0,895,930,3,702,351,0,896,930,3,210,105,0,897,930,3,214,107,0,898,930,3,216,108,0,899,930,3,434,217,0,900,930,3,438,219,0,901,930,3,222,111,0,902,930,3,564,282,0,903,930,3,568,284,0,904,930,3,570,285,0,905,930,3,370,185,0,906,930,3,522,261,0,907,930,3,524,262,0,908,930,3,526,263,0,909,930,3,528,264,0,910,930,3,530,265,0,911,930,3,394,197,0,912,930,3,398,199,0,913,930,3,402,201,0,914,930,3,380,190,0,915,930,3,382,191,0,916,930,3,386,193,0,917,930,3,546,273,0,918,930,3,560,280,0,919,930,3,606,303,0,920,930,3,614,307,0,921,930,3,636,318,0,922,930,3,536,268,0,923,930,3,538,269,0,924,930,3,442,221,0,925,930,3,392,196,0,926,930,3,388,194,0,927,930,3,390,195,0,928,930,3,554,277,0,929,885,1,0,0,0,929,886,1,0,0,0,929,887,1,0,0,0,929,888,1,0,0,0,929,889,1,0,0,0,929,890,1,0,0,0,929,891,1,0,0,0,929,892,1,0,0,0,929,893,1,0,0,0,929,894,1,0,0,0,929,895,1,0,0,0,929,896,1,0,0,0,929,897,1,0,0,0,929,898,1,0,0,0,929,899,1,0,0,0,929,900,1,0,0,0,929,901,1,0,0,0,929,902,1,0,0,0,929,903,1,0,0,0,929,904,1,0,0,0,929,905,1,0,0,0,929,906,1,0,0,0,929,907,1,0,0,0,929,908,1,0,0,0,929,909,1,0,0,0,929,910,1,0,0,0,929,911,1,0,0,0,929,912,1,0,0,0,929,913,1,0,0,0,929,914,1,0,0,0,929,915,1,0,0,0,929,916,1,0,0,0,929,917,1,0,0,0,929,918,1,0,0,0,929,919,1,0,0,0,929,920,1,0,0,0,929,921,1,0,0,0,929,922,1,0,0,0,929,923,1,0,0,0,929,924,1,0,0,0,929,925,1,0,0,0,929,926,1,0,0,0,929,927,1,0,0,0,929,928,1,0,0,0,930,13,1,0,0,0,931,936,3,16,8,0,932,933,5,209,0,0,933,935,3,16,8,0,934,932,1,0,0,0,935,938,1,0,0,0,936,934,1,0,0,0,936,937,1,0,0,0,937,941,1,0,0,0,938,936,1,0,0,0,939,941,3,200,100,0,940,931,1,0,0,0,940,939,1,0,0,0,941,15,1,0,0,0,942,947,3,18,9,0,943,944,5,51,0,0,944,946,3,18,9,0,945,943,1,0,0,0,946,949,1,0,0,0,947,945,1,0,0,0,947,948,1,0,0,0,948,17,1,0,0,0,949,947,1,0,0,0,950,955,3,20,10,0,951,952,5,315,0,0,952,954,3,20,10,0,953,951,1,0,0,0,954,957,1,0,0,0,955,953,1,0,0,0,955,956,1,0,0,0,956,19,1,0,0,0,957,955,1,0,0,0,958,960,3,28,14,0,959,961,3,24,12,0,960,959,1,0,0,0,960,961,1,0,0,0,961,21,1,0,0,0,962,964,5,170,0,0,963,965,5,196,0,0,964,963,1,0,0,0,964,965,1,0,0,0,965,966,1,0,0,0,966,967,5,110,0,0,967,968,5,142,0,0,968,23,1,0,0,0,969,971,5,196,0,0,970,969,1,0,0,0,970,971,1,0,0,0,971,972,1,0,0,0,972,973,3,26,13,0,973,976,3,28,14,0,974,975,5,122,0,0,975,977,3,28,14,0,976,974,1,0,0,0,976,977,1,0,0,0,977,1021,1,0,0,0,978,980,5,196,0,0,979,978,1,0,0,0,979,980,1,0,0,0,980,981,1,0,0,0,981,983,5,159,0,0,982,984,5,80,0,0,983,982,1,0,0,0,983,984,1,0,0,0,984,985,1,0,0,0,985,1021,3,82,41,0,986,996,5,171,0,0,987,996,5,197,0,0,988,989,5,170,0,0,989,996,5,198,0,0,990,992,5,170,0,0,991,990,1,0,0,0,991,992,1,0,0,0,992,993,1,0,0,0,993,994,5,196,0,0,994,996,5,198,0,0,995,986,1,0,0,0,995,987,1,0,0,0,995,988,1,0,0,0,995,991,1,0,0,0,996,1021,1,0,0,0,997,999,5,196,0,0,998,997,1,0,0,0,998,999,1,0,0,0,999,1e3,1,0,0,0,1e3,1002,5,67,0,0,1001,1003,7,0,0,0,1002,1001,1,0,0,0,1002,1003,1,0,0,0,1003,1004,1,0,0,0,1004,1005,3,28,14,0,1005,1006,5,51,0,0,1006,1007,3,28,14,0,1007,1021,1,0,0,0,1008,1014,5,2,0,0,1009,1014,5,3,0,0,1010,1014,5,4,0,0,1011,1014,5,5,0,0,1012,1014,3,22,11,0,1013,1008,1,0,0,0,1013,1009,1,0,0,0,1013,1010,1,0,0,0,1013,1011,1,0,0,0,1013,1012,1,0,0,0,1014,1015,1,0,0,0,1015,1017,3,28,14,0,1016,1013,1,0,0,0,1017,1018,1,0,0,0,1018,1016,1,0,0,0,1018,1019,1,0,0,0,1019,1021,1,0,0,0,1020,970,1,0,0,0,1020,979,1,0,0,0,1020,995,1,0,0,0,1020,998,1,0,0,0,1020,1016,1,0,0,0,1021,25,1,0,0,0,1022,1023,7,1,0,0,1023,27,1,0,0,0,1024,1029,3,36,18,0,1025,1026,7,2,0,0,1026,1028,3,36,18,0,1027,1025,1,0,0,0,1028,1031,1,0,0,0,1029,1027,1,0,0,0,1029,1030,1,0,0,0,1030,29,1,0,0,0,1031,1029,1,0,0,0,1032,1033,5,8,0,0,1033,1034,5,8,0,0,1034,31,1,0,0,0,1035,1036,5,8,0,0,1036,1037,5,8,0,0,1037,1038,5,13,0,0,1038,33,1,0,0,0,1039,1040,5,29,0,0,1040,1041,5,29,0,0,1041,35,1,0,0,0,1042,1055,3,38,19,0,1043,1051,5,10,0,0,1044,1051,3,30,15,0,1045,1051,5,11,0,0,1046,1051,3,32,16,0,1047,1051,5,12,0,0,1048,1051,5,13,0,0,1049,1051,5,39,0,0,1050,1043,1,0,0,0,1050,1044,1,0,0,0,1050,1045,1,0,0,0,1050,1046,1,0,0,0,1050,1047,1,0,0,0,1050,1048,1,0,0,0,1050,1049,1,0,0,0,1051,1052,1,0,0,0,1052,1054,3,38,19,0,1053,1050,1,0,0,0,1054,1057,1,0,0,0,1055,1053,1,0,0,0,1055,1056,1,0,0,0,1056,1066,1,0,0,0,1057,1055,1,0,0,0,1058,1059,3,34,17,0,1059,1060,3,36,18,0,1060,1067,1,0,0,0,1061,1063,5,29,0,0,1062,1061,1,0,0,0,1063,1064,1,0,0,0,1064,1062,1,0,0,0,1064,1065,1,0,0,0,1065,1067,1,0,0,0,1066,1058,1,0,0,0,1066,1062,1,0,0,0,1066,1067,1,0,0,0,1067,37,1,0,0,0,1068,1073,3,40,20,0,1069,1070,7,3,0,0,1070,1072,3,40,20,0,1071,1069,1,0,0,0,1072,1075,1,0,0,0,1073,1071,1,0,0,0,1073,1074,1,0,0,0,1074,39,1,0,0,0,1075,1073,1,0,0,0,1076,1081,3,42,21,0,1077,1078,7,4,0,0,1078,1080,3,42,21,0,1079,1077,1,0,0,0,1080,1083,1,0,0,0,1081,1079,1,0,0,0,1081,1082,1,0,0,0,1082,41,1,0,0,0,1083,1081,1,0,0,0,1084,1089,3,44,22,0,1085,1086,5,14,0,0,1086,1088,3,44,22,0,1087,1085,1,0,0,0,1088,1091,1,0,0,0,1089,1087,1,0,0,0,1089,1090,1,0,0,0,1090,43,1,0,0,0,1091,1089,1,0,0,0,1092,1097,3,54,27,0,1093,1094,3,46,23,0,1094,1095,3,54,27,0,1095,1097,1,0,0,0,1096,1092,1,0,0,0,1096,1093,1,0,0,0,1097,45,1,0,0,0,1098,1099,7,5,0,0,1099,47,1,0,0,0,1100,1109,3,138,69,0,1101,1109,3,132,66,0,1102,1106,5,25,0,0,1103,1107,3,144,72,0,1104,1107,5,319,0,0,1105,1107,3,726,363,0,1106,1103,1,0,0,0,1106,1104,1,0,0,0,1106,1105,1,0,0,0,1107,1109,1,0,0,0,1108,1100,1,0,0,0,1108,1101,1,0,0,0,1108,1102,1,0,0,0,1109,1112,1,0,0,0,1110,1108,1,0,0,0,1110,1111,1,0,0,0,1111,1115,1,0,0,0,1112,1110,1,0,0,0,1113,1114,5,76,0,0,1114,1116,3,724,362,0,1115,1113,1,0,0,0,1115,1116,1,0,0,0,1116,49,1,0,0,0,1117,1120,3,710,355,0,1118,1120,3,68,34,0,1119,1117,1,0,0,0,1119,1118,1,0,0,0,1120,1121,1,0,0,0,1121,1122,3,48,24,0,1122,51,1,0,0,0,1123,1126,3,712,356,0,1124,1126,3,70,35,0,1125,1123,1,0,0,0,1125,1124,1,0,0,0,1126,1127,1,0,0,0,1127,1128,3,48,24,0,1128,53,1,0,0,0,1129,1132,3,50,25,0,1130,1132,3,84,42,0,1131,1129,1,0,0,0,1131,1130,1,0,0,0,1132,55,1,0,0,0,1133,1136,3,52,26,0,1134,1136,3,84,42,0,1135,1133,1,0,0,0,1135,1134,1,0,0,0,1136,57,1,0,0,0,1137,1139,5,43,0,0,1138,1140,3,112,56,0,1139,1138,1,0,0,0,1139,1140,1,0,0,0,1140,1142,1,0,0,0,1141,1143,5,26,0,0,1142,1141,1,0,0,0,1142,1143,1,0,0,0,1143,1144,1,0,0,0,1144,1145,5,42,0,0,1145,59,1,0,0,0,1146,1149,3,14,7,0,1147,1148,5,30,0,0,1148,1150,3,14,7,0,1149,1147,1,0,0,0,1149,1150,1,0,0,0,1150,1159,1,0,0,0,1151,1152,5,26,0,0,1152,1155,3,14,7,0,1153,1154,5,30,0,0,1154,1156,3,14,7,0,1155,1153,1,0,0,0,1155,1156,1,0,0,0,1156,1158,1,0,0,0,1157,1151,1,0,0,0,1158,1161,1,0,0,0,1159,1157,1,0,0,0,1159,1160,1,0,0,0,1160,61,1,0,0,0,1161,1159,1,0,0,0,1162,1164,5,37,0,0,1163,1165,3,60,30,0,1164,1163,1,0,0,0,1164,1165,1,0,0,0,1165,1167,1,0,0,0,1166,1168,5,26,0,0,1167,1166,1,0,0,0,1167,1168,1,0,0,0,1168,1169,1,0,0,0,1169,1170,5,38,0,0,1170,63,1,0,0,0,1171,1172,3,14,7,0,1172,1173,5,30,0,0,1173,1181,3,14,7,0,1174,1175,5,26,0,0,1175,1176,3,14,7,0,1176,1177,5,30,0,0,1177,1178,3,14,7,0,1178,1180,1,0,0,0,1179,1174,1,0,0,0,1180,1183,1,0,0,0,1181,1179,1,0,0,0,1181,1182,1,0,0,0,1182,65,1,0,0,0,1183,1181,1,0,0,0,1184,1186,5,15,0,0,1185,1187,3,64,32,0,1186,1185,1,0,0,0,1186,1187,1,0,0,0,1187,1189,1,0,0,0,1188,1190,5,26,0,0,1189,1188,1,0,0,0,1189,1190,1,0,0,0,1190,1191,1,0,0,0,1191,1192,5,16,0,0,1192,67,1,0,0,0,1193,1211,3,142,71,0,1194,1211,3,144,72,0,1195,1211,3,80,40,0,1196,1211,3,72,36,0,1197,1211,3,76,38,0,1198,1211,3,78,39,0,1199,1200,3,726,363,0,1200,1203,5,40,0,0,1201,1204,3,752,376,0,1202,1204,5,316,0,0,1203,1201,1,0,0,0,1203,1202,1,0,0,0,1204,1211,1,0,0,0,1205,1211,3,208,104,0,1206,1211,3,74,37,0,1207,1211,3,58,29,0,1208,1211,3,62,31,0,1209,1211,3,66,33,0,1210,1193,1,0,0,0,1210,1194,1,0,0,0,1210,1195,1,0,0,0,1210,1196,1,0,0,0,1210,1197,1,0,0,0,1210,1198,1,0,0,0,1210,1199,1,0,0,0,1210,1205,1,0,0,0,1210,1206,1,0,0,0,1210,1207,1,0,0,0,1210,1208,1,0,0,0,1210,1209,1,0,0,0,1211,69,1,0,0,0,1212,1233,3,142,71,0,1213,1233,3,144,72,0,1214,1233,3,80,40,0,1215,1233,3,72,36,0,1216,1233,3,78,39,0,1217,1218,3,726,363,0,1218,1221,5,40,0,0,1219,1222,3,752,376,0,1220,1222,5,316,0,0,1221,1219,1,0,0,0,1221,1220,1,0,0,0,1222,1233,1,0,0,0,1223,1224,5,27,0,0,1224,1225,3,232,116,0,1225,1226,5,28,0,0,1226,1233,1,0,0,0,1227,1233,3,208,104,0,1228,1233,3,74,37,0,1229,1233,3,58,29,0,1230,1233,3,62,31,0,1231,1233,3,66,33,0,1232,1212,1,0,0,0,1232,1213,1,0,0,0,1232,1214,1,0,0,0,1232,1215,1,0,0,0,1232,1216,1,0,0,0,1232,1217,1,0,0,0,1232,1223,1,0,0,0,1232,1227,1,0,0,0,1232,1228,1,0,0,0,1232,1229,1,0,0,0,1232,1230,1,0,0,0,1232,1231,1,0,0,0,1233,71,1,0,0,0,1234,1235,5,73,0,0,1235,1236,5,27,0,0,1236,1237,3,14,7,0,1237,1238,5,55,0,0,1238,1239,3,204,102,0,1239,1240,5,28,0,0,1240,73,1,0,0,0,1241,1242,5,68,0,0,1242,1243,5,27,0,0,1243,1244,3,14,7,0,1244,1245,5,55,0,0,1245,1246,3,156,78,0,1246,1247,5,28,0,0,1247,75,1,0,0,0,1248,1249,5,128,0,0,1249,1252,5,27,0,0,1250,1253,3,232,116,0,1251,1253,3,370,185,0,1252,1250,1,0,0,0,1252,1251,1,0,0,0,1253,1254,1,0,0,0,1254,1255,5,28,0,0,1255,77,1,0,0,0,1256,1258,5,72,0,0,1257,1259,3,14,7,0,1258,1257,1,0,0,0,1258,1259,1,0,0,0,1259,1261,1,0,0,0,1260,1262,3,140,70,0,1261,1260,1,0,0,0,1262,1263,1,0,0,0,1263,1261,1,0,0,0,1263,1264,1,0,0,0,1264,1267,1,0,0,0,1265,1266,5,114,0,0,1266,1268,3,14,7,0,1267,1265,1,0,0,0,1267,1268,1,0,0,0,1268,1269,1,0,0,0,1269,1270,5,118,0,0,1270,79,1,0,0,0,1271,1283,3,110,55,0,1272,1281,5,41,0,0,1273,1274,5,27,0,0,1274,1275,3,14,7,0,1275,1276,5,28,0,0,1276,1282,1,0,0,0,1277,1278,5,37,0,0,1278,1279,3,6,3,0,1279,1280,5,38,0,0,1280,1282,1,0,0,0,1281,1273,1,0,0,0,1281,1277,1,0,0,0,1282,1284,1,0,0,0,1283,1272,1,0,0,0,1283,1284,1,0,0,0,1284,81,1,0,0,0,1285,1286,3,56,28,0,1286,83,1,0,0,0,1287,1291,3,98,49,0,1288,1291,3,102,51,0,1289,1291,3,108,54,0,1290,1287,1,0,0,0,1290,1288,1,0,0,0,1290,1289,1,0,0,0,1291,85,1,0,0,0,1292,1293,5,316,0,0,1293,87,1,0,0,0,1294,1297,3,710,355,0,1295,1297,5,316,0,0,1296,1294,1,0,0,0,1296,1295,1,0,0,0,1297,89,1,0,0,0,1298,1299,3,14,7,0,1299,1300,5,55,0,0,1300,1301,3,88,44,0,1301,91,1,0,0,0,1302,1307,3,90,45,0,1303,1304,5,26,0,0,1304,1306,3,90,45,0,1305,1303,1,0,0,0,1306,1309,1,0,0,0,1307,1305,1,0,0,0,1307,1308,1,0,0,0,1308,93,1,0,0,0,1309,1307,1,0,0,0,1310,1311,3,14,7,0,1311,1312,5,26,0,0,1312,1315,3,86,43,0,1313,1314,5,216,0,0,1314,1316,3,92,46,0,1315,1313,1,0,0,0,1315,1316,1,0,0,0,1316,95,1,0,0,0,1317,1322,5,121,0,0,1318,1322,5,198,0,0,1319,1320,5,98,0,0,1320,1322,3,14,7,0,1321,1317,1,0,0,0,1321,1318,1,0,0,0,1321,1319,1,0,0,0,1322,97,1,0,0,0,1323,1324,5,175,0,0,1324,1325,5,27,0,0,1325,1328,3,94,47,0,1326,1327,5,248,0,0,1327,1329,3,156,78,0,1328,1326,1,0,0,0,1328,1329,1,0,0,0,1329,1336,1,0,0,0,1330,1331,3,96,48,0,1331,1332,5,204,0,0,1332,1333,7,6,0,0,1333,1335,1,0,0,0,1334,1330,1,0,0,0,1335,1338,1,0,0,0,1336,1334,1,0,0,0,1336,1337,1,0,0,0,1337,1339,1,0,0,0,1338,1336,1,0,0,0,1339,1340,5,28,0,0,1340,99,1,0,0,0,1341,1342,7,7,0,0,1342,1343,5,204,0,0,1343,1344,5,121,0,0,1344,101,1,0,0,0,1345,1346,5,173,0,0,1346,1347,5,27,0,0,1347,1349,3,94,47,0,1348,1350,3,100,50,0,1349,1348,1,0,0,0,1349,1350,1,0,0,0,1350,1351,1,0,0,0,1351,1352,5,28,0,0,1352,103,1,0,0,0,1353,1355,5,313,0,0,1354,1356,5,54,0,0,1355,1354,1,0,0,0,1355,1356,1,0,0,0,1356,1365,1,0,0,0,1357,1359,5,312,0,0,1358,1360,7,8,0,0,1359,1358,1,0,0,0,1359,1360,1,0,0,0,1360,1362,1,0,0,0,1361,1363,5,54,0,0,1362,1361,1,0,0,0,1362,1363,1,0,0,0,1363,1365,1,0,0,0,1364,1353,1,0,0,0,1364,1357,1,0,0,0,1365,105,1,0,0,0,1366,1373,5,121,0,0,1367,1373,5,198,0,0,1368,1369,5,115,0,0,1369,1373,5,54,0,0,1370,1371,5,115,0,0,1371,1373,5,200,0,0,1372,1366,1,0,0,0,1372,1367,1,0,0,0,1372,1368,1,0,0,0,1372,1370,1,0,0,0,1373,107,1,0,0,0,1374,1375,5,174,0,0,1375,1376,5,27,0,0,1376,1380,3,94,47,0,1377,1378,3,104,52,0,1378,1379,5,314,0,0,1379,1381,1,0,0,0,1380,1377,1,0,0,0,1380,1381,1,0,0,0,1381,1386,1,0,0,0,1382,1383,3,106,53,0,1383,1384,5,204,0,0,1384,1385,5,115,0,0,1385,1387,1,0,0,0,1386,1382,1,0,0,0,1386,1387,1,0,0,0,1387,1392,1,0,0,0,1388,1389,3,106,53,0,1389,1390,5,204,0,0,1390,1391,5,121,0,0,1391,1393,1,0,0,0,1392,1388,1,0,0,0,1392,1393,1,0,0,0,1393,1394,1,0,0,0,1394,1395,5,28,0,0,1395,109,1,0,0,0,1396,1398,5,27,0,0,1397,1399,3,130,65,0,1398,1397,1,0,0,0,1398,1399,1,0,0,0,1399,1401,1,0,0,0,1400,1402,5,26,0,0,1401,1400,1,0,0,0,1401,1402,1,0,0,0,1402,1403,1,0,0,0,1403,1404,5,28,0,0,1404,111,1,0,0,0,1405,1410,3,14,7,0,1406,1407,5,26,0,0,1407,1409,3,14,7,0,1408,1406,1,0,0,0,1409,1412,1,0,0,0,1410,1408,1,0,0,0,1410,1411,1,0,0,0,1411,113,1,0,0,0,1412,1410,1,0,0,0,1413,1414,5,27,0,0,1414,1419,3,724,362,0,1415,1416,5,26,0,0,1416,1418,3,724,362,0,1417,1415,1,0,0,0,1418,1421,1,0,0,0,1419,1417,1,0,0,0,1419,1420,1,0,0,0,1420,1422,1,0,0,0,1421,1419,1,0,0,0,1422,1423,5,28,0,0,1423,115,1,0,0,0,1424,1427,3,144,72,0,1425,1427,3,724,362,0,1426,1424,1,0,0,0,1426,1425,1,0,0,0,1427,117,1,0,0,0,1428,1429,5,27,0,0,1429,1434,3,116,58,0,1430,1431,5,26,0,0,1431,1433,3,116,58,0,1432,1430,1,0,0,0,1433,1436,1,0,0,0,1434,1432,1,0,0,0,1434,1435,1,0,0,0,1435,1437,1,0,0,0,1436,1434,1,0,0,0,1437,1438,5,28,0,0,1438,119,1,0,0,0,1439,1440,3,748,374,0,1440,1441,3,724,362,0,1441,121,1,0,0,0,1442,1443,3,724,362,0,1443,1444,5,25,0,0,1444,1445,3,724,362,0,1445,1448,1,0,0,0,1446,1448,3,738,369,0,1447,1442,1,0,0,0,1447,1446,1,0,0,0,1448,123,1,0,0,0,1449,1454,3,120,60,0,1450,1451,5,26,0,0,1451,1453,3,120,60,0,1452,1450,1,0,0,0,1453,1456,1,0,0,0,1454,1452,1,0,0,0,1454,1455,1,0,0,0,1455,1458,1,0,0,0,1456,1454,1,0,0,0,1457,1459,5,26,0,0,1458,1457,1,0,0,0,1458,1459,1,0,0,0,1459,125,1,0,0,0,1460,1465,3,122,61,0,1461,1462,5,26,0,0,1462,1464,3,122,61,0,1463,1461,1,0,0,0,1464,1467,1,0,0,0,1465,1463,1,0,0,0,1465,1466,1,0,0,0,1466,1469,1,0,0,0,1467,1465,1,0,0,0,1468,1470,5,26,0,0,1469,1468,1,0,0,0,1469,1470,1,0,0,0,1470,127,1,0,0,0,1471,1474,3,14,7,0,1472,1473,5,55,0,0,1473,1475,3,726,363,0,1474,1472,1,0,0,0,1474,1475,1,0,0,0,1475,129,1,0,0,0,1476,1481,3,128,64,0,1477,1478,5,26,0,0,1478,1480,3,128,64,0,1479,1477,1,0,0,0,1480,1483,1,0,0,0,1481,1479,1,0,0,0,1481,1482,1,0,0,0,1482,131,1,0,0,0,1483,1481,1,0,0,0,1484,1491,5,27,0,0,1485,1486,3,252,126,0,1486,1488,3,130,65,0,1487,1489,5,26,0,0,1488,1487,1,0,0,0,1488,1489,1,0,0,0,1489,1492,1,0,0,0,1490,1492,5,20,0,0,1491,1485,1,0,0,0,1491,1490,1,0,0,0,1491,1492,1,0,0,0,1492,1493,1,0,0,0,1493,1494,5,28,0,0,1494,1495,3,134,67,0,1495,133,1,0,0,0,1496,1499,3,656,328,0,1497,1499,3,658,329,0,1498,1496,1,0,0,0,1498,1497,1,0,0,0,1498,1499,1,0,0,0,1499,1502,1,0,0,0,1500,1501,5,213,0,0,1501,1503,3,660,330,0,1502,1500,1,0,0,0,1502,1503,1,0,0,0,1503,135,1,0,0,0,1504,1505,3,726,363,0,1505,1506,5,40,0,0,1506,1507,3,726,363,0,1507,1513,1,0,0,0,1508,1513,3,730,365,0,1509,1513,3,144,72,0,1510,1511,5,131,0,0,1511,1513,5,144,0,0,1512,1504,1,0,0,0,1512,1508,1,0,0,0,1512,1509,1,0,0,0,1512,1510,1,0,0,0,1513,1514,1,0,0,0,1514,1515,3,132,66,0,1515,137,1,0,0,0,1516,1517,5,43,0,0,1517,1518,3,14,7,0,1518,1519,5,42,0,0,1519,139,1,0,0,0,1520,1521,5,309,0,0,1521,1522,3,14,7,0,1522,1523,5,284,0,0,1523,1524,3,14,7,0,1524,141,1,0,0,0,1525,1536,3,788,394,0,1526,1536,3,786,393,0,1527,1536,5,316,0,0,1528,1536,5,322,0,0,1529,1536,5,198,0,0,1530,1536,5,92,0,0,1531,1536,5,91,0,0,1532,1536,5,93,0,0,1533,1536,3,784,392,0,1534,1536,5,116,0,0,1535,1525,1,0,0,0,1535,1526,1,0,0,0,1535,1527,1,0,0,0,1535,1528,1,0,0,0,1535,1529,1,0,0,0,1535,1530,1,0,0,0,1535,1531,1,0,0,0,1535,1532,1,0,0,0,1535,1533,1,0,0,0,1535,1534,1,0,0,0,1536,143,1,0,0,0,1537,1541,5,33,0,0,1538,1542,3,726,363,0,1539,1542,5,290,0,0,1540,1542,5,133,0,0,1541,1538,1,0,0,0,1541,1539,1,0,0,0,1541,1540,1,0,0,0,1542,145,1,0,0,0,1543,1545,3,144,72,0,1544,1546,5,29,0,0,1545,1544,1,0,0,0,1545,1546,1,0,0,0,1546,147,1,0,0,0,1547,1552,3,144,72,0,1548,1549,5,26,0,0,1549,1551,3,144,72,0,1550,1548,1,0,0,0,1551,1554,1,0,0,0,1552,1550,1,0,0,0,1552,1553,1,0,0,0,1553,149,1,0,0,0,1554,1552,1,0,0,0,1555,1558,3,144,72,0,1556,1557,5,55,0,0,1557,1559,3,144,72,0,1558,1556,1,0,0,0,1558,1559,1,0,0,0,1559,151,1,0,0,0,1560,1565,3,150,75,0,1561,1562,5,26,0,0,1562,1564,3,150,75,0,1563,1561,1,0,0,0,1564,1567,1,0,0,0,1565,1563,1,0,0,0,1565,1566,1,0,0,0,1566,153,1,0,0,0,1567,1565,1,0,0,0,1568,1570,7,3,0,0,1569,1568,1,0,0,0,1569,1570,1,0,0,0,1570,1573,1,0,0,0,1571,1574,3,788,394,0,1572,1574,3,786,393,0,1573,1571,1,0,0,0,1573,1572,1,0,0,0,1574,155,1,0,0,0,1575,1576,3,742,371,0,1576,157,1,0,0,0,1577,1580,3,788,394,0,1578,1580,3,144,72,0,1579,1577,1,0,0,0,1579,1578,1,0,0,0,1580,159,1,0,0,0,1581,1585,3,706,353,0,1582,1585,5,316,0,0,1583,1585,3,144,72,0,1584,1581,1,0,0,0,1584,1582,1,0,0,0,1584,1583,1,0,0,0,1585,161,1,0,0,0,1586,1587,3,160,80,0,1587,1588,5,30,0,0,1588,1589,3,204,102,0,1589,163,1,0,0,0,1590,1591,3,160,80,0,1591,1596,3,204,102,0,1592,1594,5,196,0,0,1593,1592,1,0,0,0,1593,1594,1,0,0,0,1594,1595,1,0,0,0,1595,1597,5,198,0,0,1596,1593,1,0,0,0,1596,1597,1,0,0,0,1597,1603,1,0,0,0,1598,1599,3,204,102,0,1599,1600,5,55,0,0,1600,1601,3,160,80,0,1601,1603,1,0,0,0,1602,1590,1,0,0,0,1602,1598,1,0,0,0,1603,165,1,0,0,0,1604,1605,3,160,80,0,1605,1606,5,30,0,0,1606,1608,1,0,0,0,1607,1604,1,0,0,0,1607,1608,1,0,0,0,1608,1609,1,0,0,0,1609,1610,3,204,102,0,1610,167,1,0,0,0,1611,1615,3,166,83,0,1612,1613,5,37,0,0,1613,1614,5,63,0,0,1614,1616,5,38,0,0,1615,1612,1,0,0,0,1615,1616,1,0,0,0,1616,169,1,0,0,0,1617,1622,3,168,84,0,1618,1619,5,26,0,0,1619,1621,3,168,84,0,1620,1618,1,0,0,0,1621,1624,1,0,0,0,1622,1620,1,0,0,0,1622,1623,1,0,0,0,1623,171,1,0,0,0,1624,1622,1,0,0,0,1625,1626,5,96,0,0,1626,1627,5,27,0,0,1627,1628,3,158,79,0,1628,1629,5,26,0,0,1629,1630,3,158,79,0,1630,1631,5,28,0,0,1631,173,1,0,0,0,1632,1633,5,208,0,0,1633,1634,5,6,0,0,1634,1635,3,204,102,0,1635,1636,5,8,0,0,1636,175,1,0,0,0,1637,1654,5,291,0,0,1638,1650,5,6,0,0,1639,1644,3,204,102,0,1640,1641,5,26,0,0,1641,1643,3,204,102,0,1642,1640,1,0,0,0,1643,1646,1,0,0,0,1644,1642,1,0,0,0,1644,1645,1,0,0,0,1645,1648,1,0,0,0,1646,1644,1,0,0,0,1647,1649,5,26,0,0,1648,1647,1,0,0,0,1648,1649,1,0,0,0,1649,1651,1,0,0,0,1650,1639,1,0,0,0,1650,1651,1,0,0,0,1651,1652,1,0,0,0,1652,1655,5,8,0,0,1653,1655,5,5,0,0,1654,1638,1,0,0,0,1654,1653,1,0,0,0,1655,177,1,0,0,0,1656,1673,5,270,0,0,1657,1669,5,6,0,0,1658,1663,3,162,81,0,1659,1660,5,26,0,0,1660,1662,3,162,81,0,1661,1659,1,0,0,0,1662,1665,1,0,0,0,1663,1661,1,0,0,0,1663,1664,1,0,0,0,1664,1667,1,0,0,0,1665,1663,1,0,0,0,1666,1668,5,26,0,0,1667,1666,1,0,0,0,1667,1668,1,0,0,0,1668,1670,1,0,0,0,1669,1658,1,0,0,0,1669,1670,1,0,0,0,1670,1671,1,0,0,0,1671,1674,5,8,0,0,1672,1674,5,5,0,0,1673,1657,1,0,0,0,1673,1672,1,0,0,0,1674,179,1,0,0,0,1675,1676,5,306,0,0,1676,1677,5,6,0,0,1677,1682,3,166,83,0,1678,1679,5,26,0,0,1679,1681,3,166,83,0,1680,1678,1,0,0,0,1681,1684,1,0,0,0,1682,1680,1,0,0,0,1682,1683,1,0,0,0,1683,1686,1,0,0,0,1684,1682,1,0,0,0,1685,1687,5,26,0,0,1686,1685,1,0,0,0,1686,1687,1,0,0,0,1687,1688,1,0,0,0,1688,1689,5,8,0,0,1689,181,1,0,0,0,1690,1691,5,182,0,0,1691,1692,5,6,0,0,1692,1693,3,204,102,0,1693,1694,5,8,0,0,1694,183,1,0,0,0,1695,1696,5,269,0,0,1696,1697,5,6,0,0,1697,1698,3,204,102,0,1698,1699,5,8,0,0,1699,185,1,0,0,0,1700,1701,5,138,0,0,1701,1702,5,6,0,0,1702,1703,3,204,102,0,1703,1704,5,8,0,0,1704,187,1,0,0,0,1705,1706,5,106,0,0,1706,1707,5,6,0,0,1707,1708,3,204,102,0,1708,1709,5,26,0,0,1709,1710,3,204,102,0,1710,1711,5,8,0,0,1711,189,1,0,0,0,1712,1713,5,264,0,0,1713,1714,5,6,0,0,1714,1715,3,204,102,0,1715,1716,5,8,0,0,1716,191,1,0,0,0,1717,1718,5,119,0,0,1718,1719,5,6,0,0,1719,1724,3,160,80,0,1720,1721,5,26,0,0,1721,1723,3,160,80,0,1722,1720,1,0,0,0,1723,1726,1,0,0,0,1724,1722,1,0,0,0,1724,1725,1,0,0,0,1725,1728,1,0,0,0,1726,1724,1,0,0,0,1727,1729,5,26,0,0,1728,1727,1,0,0,0,1728,1729,1,0,0,0,1729,1730,1,0,0,0,1730,1731,5,8,0,0,1731,193,1,0,0,0,1732,1733,5,243,0,0,1733,1734,5,6,0,0,1734,1735,3,160,80,0,1735,1736,5,8,0,0,1736,195,1,0,0,0,1737,1738,5,281,0,0,1738,1739,5,6,0,0,1739,1740,3,204,102,0,1740,1741,5,26,0,0,1741,1742,3,160,80,0,1742,1743,5,8,0,0,1743,197,1,0,0,0,1744,1745,5,70,0,0,1745,1746,5,6,0,0,1746,1748,5,27,0,0,1747,1749,3,170,85,0,1748,1747,1,0,0,0,1748,1749,1,0,0,0,1749,1751,1,0,0,0,1750,1752,5,26,0,0,1751,1750,1,0,0,0,1751,1752,1,0,0,0,1752,1757,1,0,0,0,1753,1754,5,43,0,0,1754,1755,3,170,85,0,1755,1756,5,42,0,0,1756,1758,1,0,0,0,1757,1753,1,0,0,0,1757,1758,1,0,0,0,1758,1759,1,0,0,0,1759,1760,5,28,0,0,1760,1761,5,41,0,0,1761,1762,3,204,102,0,1762,1763,5,8,0,0,1763,199,1,0,0,0,1764,1778,3,174,87,0,1765,1778,3,176,88,0,1766,1778,3,178,89,0,1767,1778,3,180,90,0,1768,1778,3,182,91,0,1769,1778,3,184,92,0,1770,1778,3,186,93,0,1771,1778,3,188,94,0,1772,1778,3,190,95,0,1773,1778,3,192,96,0,1774,1778,3,194,97,0,1775,1778,3,196,98,0,1776,1778,3,198,99,0,1777,1764,1,0,0,0,1777,1765,1,0,0,0,1777,1766,1,0,0,0,1777,1767,1,0,0,0,1777,1768,1,0,0,0,1777,1769,1,0,0,0,1777,1770,1,0,0,0,1777,1771,1,0,0,0,1777,1772,1,0,0,0,1777,1773,1,0,0,0,1777,1774,1,0,0,0,1777,1775,1,0,0,0,1777,1776,1,0,0,0,1778,1782,1,0,0,0,1779,1781,5,29,0,0,1780,1779,1,0,0,0,1781,1784,1,0,0,0,1782,1780,1,0,0,0,1782,1783,1,0,0,0,1783,201,1,0,0,0,1784,1782,1,0,0,0,1785,1797,3,200,100,0,1786,1789,3,172,86,0,1787,1789,3,156,78,0,1788,1786,1,0,0,0,1788,1787,1,0,0,0,1789,1793,1,0,0,0,1790,1792,5,29,0,0,1791,1790,1,0,0,0,1792,1795,1,0,0,0,1793,1791,1,0,0,0,1793,1794,1,0,0,0,1794,1797,1,0,0,0,1795,1793,1,0,0,0,1796,1785,1,0,0,0,1796,1788,1,0,0,0,1797,203,1,0,0,0,1798,1801,3,202,101,0,1799,1801,3,144,72,0,1800,1798,1,0,0,0,1800,1799,1,0,0,0,1801,205,1,0,0,0,1802,1803,5,316,0,0,1803,207,1,0,0,0,1804,1805,5,306,0,0,1805,1806,5,27,0,0,1806,1807,3,14,7,0,1807,1808,5,26,0,0,1808,1809,3,14,7,0,1809,1810,5,26,0,0,1810,1811,3,14,7,0,1811,1812,5,28,0,0,1812,1828,1,0,0,0,1813,1814,5,119,0,0,1814,1815,5,27,0,0,1815,1816,3,14,7,0,1816,1817,5,26,0,0,1817,1818,3,14,7,0,1818,1819,5,28,0,0,1819,1828,1,0,0,0,1820,1821,5,70,0,0,1821,1822,5,27,0,0,1822,1823,3,14,7,0,1823,1824,5,26,0,0,1824,1825,3,14,7,0,1825,1826,5,28,0,0,1826,1828,1,0,0,0,1827,1804,1,0,0,0,1827,1813,1,0,0,0,1827,1820,1,0,0,0,1828,209,1,0,0,0,1829,1830,5,97,0,0,1830,1831,3,144,72,0,1831,1832,5,55,0,0,1832,1835,3,202,101,0,1833,1834,5,2,0,0,1834,1836,3,142,71,0,1835,1833,1,0,0,0,1835,1836,1,0,0,0,1836,211,1,0,0,0,1837,1839,5,25,0,0,1838,1837,1,0,0,0,1838,1839,1,0,0,0,1839,1840,1,0,0,0,1840,1845,3,724,362,0,1841,1842,5,25,0,0,1842,1844,3,724,362,0,1843,1841,1,0,0,0,1844,1847,1,0,0,0,1845,1843,1,0,0,0,1845,1846,1,0,0,0,1846,213,1,0,0,0,1847,1845,1,0,0,0,1848,1849,5,158,0,0,1849,1850,3,212,106,0,1850,1851,5,273,0,0,1851,1852,3,152,76,0,1852,215,1,0,0,0,1853,1854,5,130,0,0,1854,1855,3,148,74,0,1855,217,1,0,0,0,1856,1859,3,144,72,0,1857,1859,5,116,0,0,1858,1856,1,0,0,0,1858,1857,1,0,0,0,1859,1860,1,0,0,0,1860,1862,5,27,0,0,1861,1863,3,112,56,0,1862,1861,1,0,0,0,1862,1863,1,0,0,0,1863,1864,1,0,0,0,1864,1865,5,28,0,0,1865,219,1,0,0,0,1866,1867,5,65,0,0,1867,1868,3,566,283,0,1868,1869,5,118,0,0,1869,1870,5,111,0,0,1870,221,1,0,0,0,1871,1874,5,111,0,0,1872,1875,3,218,109,0,1873,1875,3,220,110,0,1874,1872,1,0,0,0,1874,1873,1,0,0,0,1875,223,1,0,0,0,1876,1877,5,223,0,0,1877,1878,3,754,377,0,1878,1892,3,724,362,0,1879,1880,5,2,0,0,1880,1893,3,226,113,0,1881,1882,5,27,0,0,1882,1887,3,226,113,0,1883,1884,5,26,0,0,1884,1886,3,226,113,0,1885,1883,1,0,0,0,1886,1889,1,0,0,0,1887,1885,1,0,0,0,1887,1888,1,0,0,0,1888,1890,1,0,0,0,1889,1887,1,0,0,0,1890,1891,5,28,0,0,1891,1893,1,0,0,0,1892,1879,1,0,0,0,1892,1881,1,0,0,0,1892,1893,1,0,0,0,1893,225,1,0,0,0,1894,1900,3,154,77,0,1895,1900,3,706,353,0,1896,1900,5,316,0,0,1897,1900,3,784,392,0,1898,1900,3,144,72,0,1899,1894,1,0,0,0,1899,1895,1,0,0,0,1899,1896,1,0,0,0,1899,1897,1,0,0,0,1899,1898,1,0,0,0,1900,227,1,0,0,0,1901,1903,3,14,7,0,1902,1904,7,9,0,0,1903,1902,1,0,0,0,1903,1904,1,0,0,0,1904,229,1,0,0,0,1905,1910,3,228,114,0,1906,1907,5,26,0,0,1907,1909,3,228,114,0,1908,1906,1,0,0,0,1909,1912,1,0,0,0,1910,1908,1,0,0,0,1910,1911,1,0,0,0,1911,231,1,0,0,0,1912,1910,1,0,0,0,1913,1919,3,236,118,0,1914,1915,3,238,119,0,1915,1916,3,236,118,0,1916,1918,1,0,0,0,1917,1914,1,0,0,0,1918,1921,1,0,0,0,1919,1917,1,0,0,0,1919,1920,1,0,0,0,1920,233,1,0,0,0,1921,1919,1,0,0,0,1922,1928,3,240,120,0,1923,1924,3,238,119,0,1924,1925,3,236,118,0,1925,1927,1,0,0,0,1926,1923,1,0,0,0,1927,1930,1,0,0,0,1928,1926,1,0,0,0,1928,1929,1,0,0,0,1929,235,1,0,0,0,1930,1928,1,0,0,0,1931,1937,3,240,120,0,1932,1933,5,27,0,0,1933,1934,3,240,120,0,1934,1935,5,28,0,0,1935,1937,1,0,0,0,1936,1931,1,0,0,0,1936,1932,1,0,0,0,1937,237,1,0,0,0,1938,1940,5,295,0,0,1939,1941,5,48,0,0,1940,1939,1,0,0,0,1940,1941,1,0,0,0,1941,1945,1,0,0,0,1942,1945,5,168,0,0,1943,1945,5,124,0,0,1944,1938,1,0,0,0,1944,1942,1,0,0,0,1944,1943,1,0,0,0,1945,239,1,0,0,0,1946,1953,3,242,121,0,1947,1948,5,181,0,0,1948,1951,3,14,7,0,1949,1950,7,10,0,0,1950,1952,3,14,7,0,1951,1949,1,0,0,0,1951,1952,1,0,0,0,1952,1954,1,0,0,0,1953,1947,1,0,0,0,1953,1954,1,0,0,0,1954,241,1,0,0,0,1955,1957,5,109,0,0,1956,1955,1,0,0,0,1956,1957,1,0,0,0,1957,1961,1,0,0,0,1958,1962,3,244,122,0,1959,1962,3,250,125,0,1960,1962,3,254,127,0,1961,1958,1,0,0,0,1961,1959,1,0,0,0,1961,1960,1,0,0,0,1962,1966,1,0,0,0,1963,1964,5,169,0,0,1964,1965,5,246,0,0,1965,1967,3,116,58,0,1966,1963,1,0,0,0,1966,1967,1,0,0,0,1967,243,1,0,0,0,1968,1970,5,228,0,0,1969,1971,5,269,0,0,1970,1969,1,0,0,0,1970,1971,1,0,0,0,1971,1972,1,0,0,0,1972,1977,3,346,173,0,1973,1974,5,26,0,0,1974,1976,3,346,173,0,1975,1973,1,0,0,0,1976,1979,1,0,0,0,1977,1975,1,0,0,0,1977,1978,1,0,0,0,1978,2001,1,0,0,0,1979,1977,1,0,0,0,1980,1981,5,303,0,0,1981,1984,3,136,68,0,1982,1983,5,55,0,0,1983,1985,3,724,362,0,1984,1982,1,0,0,0,1984,1985,1,0,0,0,1985,1988,1,0,0,0,1986,1987,5,312,0,0,1987,1989,3,248,124,0,1988,1986,1,0,0,0,1988,1989,1,0,0,0,1989,1991,1,0,0,0,1990,1992,3,800,400,0,1991,1990,1,0,0,0,1991,1992,1,0,0,0,1992,1995,1,0,0,0,1993,1994,5,152,0,0,1994,1996,3,14,7,0,1995,1993,1,0,0,0,1995,1996,1,0,0,0,1996,1999,1,0,0,0,1997,1998,5,57,0,0,1998,2e3,3,314,157,0,1999,1997,1,0,0,0,1999,2e3,1,0,0,0,2e3,2002,1,0,0,0,2001,1980,1,0,0,0,2001,2002,1,0,0,0,2002,245,1,0,0,0,2003,2004,3,724,362,0,2004,2005,5,2,0,0,2005,2006,3,14,7,0,2006,247,1,0,0,0,2007,2012,3,246,123,0,2008,2009,5,26,0,0,2009,2011,3,246,123,0,2010,2008,1,0,0,0,2011,2014,1,0,0,0,2012,2010,1,0,0,0,2012,2013,1,0,0,0,2013,249,1,0,0,0,2014,2012,1,0,0,0,2015,2016,5,232,0,0,2016,2021,3,346,173,0,2017,2018,5,26,0,0,2018,2020,3,346,173,0,2019,2017,1,0,0,0,2020,2023,1,0,0,0,2021,2019,1,0,0,0,2021,2022,1,0,0,0,2022,2026,1,0,0,0,2023,2021,1,0,0,0,2024,2025,5,225,0,0,2025,2027,3,230,115,0,2026,2024,1,0,0,0,2026,2027,1,0,0,0,2027,2028,1,0,0,0,2028,2029,5,204,0,0,2029,2030,3,124,62,0,2030,2032,5,303,0,0,2031,2033,5,48,0,0,2032,2031,1,0,0,0,2032,2033,1,0,0,0,2033,2034,1,0,0,0,2034,2037,3,136,68,0,2035,2036,5,55,0,0,2036,2038,3,724,362,0,2037,2035,1,0,0,0,2037,2038,1,0,0,0,2038,2040,1,0,0,0,2039,2041,3,800,400,0,2040,2039,1,0,0,0,2040,2041,1,0,0,0,2041,2044,1,0,0,0,2042,2043,5,152,0,0,2043,2045,3,14,7,0,2044,2042,1,0,0,0,2044,2045,1,0,0,0,2045,2048,1,0,0,0,2046,2047,5,57,0,0,2047,2049,3,314,157,0,2048,2046,1,0,0,0,2048,2049,1,0,0,0,2049,251,1,0,0,0,2050,2052,7,11,0,0,2051,2050,1,0,0,0,2051,2052,1,0,0,0,2052,253,1,0,0,0,2053,2054,5,142,0,0,2054,2056,3,338,169,0,2055,2053,1,0,0,0,2055,2056,1,0,0,0,2056,2057,1,0,0,0,2057,2059,5,262,0,0,2058,2060,5,269,0,0,2059,2058,1,0,0,0,2059,2060,1,0,0,0,2060,2061,1,0,0,0,2061,2062,3,252,126,0,2062,2067,3,336,168,0,2063,2064,5,26,0,0,2064,2066,3,336,168,0,2065,2063,1,0,0,0,2066,2069,1,0,0,0,2067,2065,1,0,0,0,2067,2068,1,0,0,0,2068,2071,1,0,0,0,2069,2067,1,0,0,0,2070,2072,5,26,0,0,2071,2070,1,0,0,0,2071,2072,1,0,0,0,2072,2075,1,0,0,0,2073,2074,5,313,0,0,2074,2076,3,126,63,0,2075,2073,1,0,0,0,2075,2076,1,0,0,0,2076,2079,1,0,0,0,2077,2078,5,142,0,0,2078,2080,3,338,169,0,2079,2077,1,0,0,0,2079,2080,1,0,0,0,2080,2082,1,0,0,0,2081,2083,3,800,400,0,2082,2081,1,0,0,0,2082,2083,1,0,0,0,2083,2085,1,0,0,0,2084,2086,3,318,159,0,2085,2084,1,0,0,0,2085,2086,1,0,0,0,2086,2089,1,0,0,0,2087,2088,5,152,0,0,2088,2090,3,14,7,0,2089,2087,1,0,0,0,2089,2090,1,0,0,0,2090,2092,1,0,0,0,2091,2093,3,664,332,0,2092,2091,1,0,0,0,2092,2093,1,0,0,0,2093,2095,1,0,0,0,2094,2096,3,316,158,0,2095,2094,1,0,0,0,2095,2096,1,0,0,0,2096,255,1,0,0,0,2097,2098,5,187,0,0,2098,2100,5,27,0,0,2099,2101,3,678,339,0,2100,2099,1,0,0,0,2100,2101,1,0,0,0,2101,2103,1,0,0,0,2102,2104,3,314,157,0,2103,2102,1,0,0,0,2103,2104,1,0,0,0,2104,2106,1,0,0,0,2105,2107,3,262,131,0,2106,2105,1,0,0,0,2106,2107,1,0,0,0,2107,2109,1,0,0,0,2108,2110,3,258,129,0,2109,2108,1,0,0,0,2109,2110,1,0,0,0,2110,2111,1,0,0,0,2111,2112,3,268,134,0,2112,2113,5,28,0,0,2113,257,1,0,0,0,2114,2115,5,205,0,0,2115,2116,5,255,0,0,2116,2117,5,220,0,0,2117,2126,5,185,0,0,2118,2119,5,48,0,0,2119,2120,5,256,0,0,2120,2121,5,220,0,0,2121,2123,5,185,0,0,2122,2124,3,260,130,0,2123,2122,1,0,0,0,2123,2124,1,0,0,0,2124,2126,1,0,0,0,2125,2114,1,0,0,0,2125,2118,1,0,0,0,2126,259,1,0,0,0,2127,2128,5,266,0,0,2128,2129,5,115,0,0,2129,2137,5,186,0,0,2130,2131,5,203,0,0,2131,2132,5,115,0,0,2132,2137,5,186,0,0,2133,2134,5,312,0,0,2134,2135,5,298,0,0,2135,2137,5,256,0,0,2136,2127,1,0,0,0,2136,2130,1,0,0,0,2136,2133,1,0,0,0,2137,261,1,0,0,0,2138,2139,5,188,0,0,2139,2140,3,264,132,0,2140,263,1,0,0,0,2141,2146,3,266,133,0,2142,2143,5,26,0,0,2143,2145,3,266,133,0,2144,2142,1,0,0,0,2145,2148,1,0,0,0,2146,2144,1,0,0,0,2146,2147,1,0,0,0,2147,265,1,0,0,0,2148,2146,1,0,0,0,2149,2150,3,14,7,0,2150,2151,5,55,0,0,2151,2152,3,724,362,0,2152,267,1,0,0,0,2153,2154,5,47,0,0,2154,2155,5,185,0,0,2155,2157,3,270,135,0,2156,2153,1,0,0,0,2156,2157,1,0,0,0,2157,2159,1,0,0,0,2158,2160,3,274,137,0,2159,2158,1,0,0,0,2159,2160,1,0,0,0,2160,2161,1,0,0,0,2161,2162,5,219,0,0,2162,2163,5,27,0,0,2163,2164,3,276,138,0,2164,2166,5,28,0,0,2165,2167,3,290,145,0,2166,2165,1,0,0,0,2166,2167,1,0,0,0,2167,2168,1,0,0,0,2168,2169,5,101,0,0,2169,2170,3,302,151,0,2170,269,1,0,0,0,2171,2172,5,267,0,0,2172,2173,5,286,0,0,2173,2174,5,194,0,0,2174,2191,5,255,0,0,2175,2176,5,267,0,0,2176,2177,5,218,0,0,2177,2178,5,177,0,0,2178,2191,5,255,0,0,2179,2180,5,267,0,0,2180,2181,5,286,0,0,2181,2182,5,136,0,0,2182,2191,3,272,136,0,2183,2184,5,267,0,0,2184,2185,5,286,0,0,2185,2186,5,177,0,0,2186,2191,3,272,136,0,2187,2188,5,267,0,0,2188,2189,5,286,0,0,2189,2191,3,272,136,0,2190,2171,1,0,0,0,2190,2175,1,0,0,0,2190,2179,1,0,0,0,2190,2183,1,0,0,0,2190,2187,1,0,0,0,2191,271,1,0,0,0,2192,2193,3,312,156,0,2193,273,1,0,0,0,2194,2195,7,12,0,0,2195,275,1,0,0,0,2196,2201,3,278,139,0,2197,2198,5,13,0,0,2198,2200,3,278,139,0,2199,2197,1,0,0,0,2200,2203,1,0,0,0,2201,2199,1,0,0,0,2201,2202,1,0,0,0,2202,277,1,0,0,0,2203,2201,1,0,0,0,2204,2206,3,280,140,0,2205,2204,1,0,0,0,2206,2207,1,0,0,0,2207,2205,1,0,0,0,2207,2208,1,0,0,0,2208,279,1,0,0,0,2209,2211,3,284,142,0,2210,2212,3,282,141,0,2211,2210,1,0,0,0,2211,2212,1,0,0,0,2212,281,1,0,0,0,2213,2215,5,20,0,0,2214,2216,5,29,0,0,2215,2214,1,0,0,0,2215,2216,1,0,0,0,2216,2242,1,0,0,0,2217,2219,5,17,0,0,2218,2220,5,29,0,0,2219,2218,1,0,0,0,2219,2220,1,0,0,0,2220,2242,1,0,0,0,2221,2223,5,29,0,0,2222,2224,5,29,0,0,2223,2222,1,0,0,0,2223,2224,1,0,0,0,2224,2242,1,0,0,0,2225,2227,5,37,0,0,2226,2228,3,788,394,0,2227,2226,1,0,0,0,2227,2228,1,0,0,0,2228,2229,1,0,0,0,2229,2231,5,26,0,0,2230,2232,3,788,394,0,2231,2230,1,0,0,0,2231,2232,1,0,0,0,2232,2233,1,0,0,0,2233,2235,5,38,0,0,2234,2236,5,29,0,0,2235,2234,1,0,0,0,2235,2236,1,0,0,0,2236,2242,1,0,0,0,2237,2238,5,37,0,0,2238,2239,3,788,394,0,2239,2240,5,38,0,0,2240,2242,1,0,0,0,2241,2213,1,0,0,0,2241,2217,1,0,0,0,2241,2221,1,0,0,0,2241,2225,1,0,0,0,2241,2237,1,0,0,0,2242,283,1,0,0,0,2243,2259,3,286,143,0,2244,2259,5,33,0,0,2245,2259,5,39,0,0,2246,2248,5,27,0,0,2247,2249,3,276,138,0,2248,2247,1,0,0,0,2248,2249,1,0,0,0,2249,2250,1,0,0,0,2250,2259,5,28,0,0,2251,2252,5,37,0,0,2252,2253,5,18,0,0,2253,2254,3,276,138,0,2254,2255,5,18,0,0,2255,2256,5,38,0,0,2256,2259,1,0,0,0,2257,2259,3,288,144,0,2258,2243,1,0,0,0,2258,2244,1,0,0,0,2258,2245,1,0,0,0,2258,2246,1,0,0,0,2258,2251,1,0,0,0,2258,2257,1,0,0,0,2259,285,1,0,0,0,2260,2261,3,312,156,0,2261,287,1,0,0,0,2262,2263,5,221,0,0,2263,2264,5,27,0,0,2264,2269,3,276,138,0,2265,2266,5,26,0,0,2266,2268,3,276,138,0,2267,2265,1,0,0,0,2268,2271,1,0,0,0,2269,2267,1,0,0,0,2269,2270,1,0,0,0,2270,2272,1,0,0,0,2271,2269,1,0,0,0,2272,2273,5,28,0,0,2273,289,1,0,0,0,2274,2275,5,272,0,0,2275,2276,3,292,146,0,2276,291,1,0,0,0,2277,2282,3,294,147,0,2278,2279,5,26,0,0,2279,2281,3,294,147,0,2280,2278,1,0,0,0,2281,2284,1,0,0,0,2282,2280,1,0,0,0,2282,2283,1,0,0,0,2283,293,1,0,0,0,2284,2282,1,0,0,0,2285,2286,3,296,148,0,2286,2287,5,2,0,0,2287,2288,5,27,0,0,2288,2289,3,298,149,0,2289,2290,5,28,0,0,2290,295,1,0,0,0,2291,2292,3,312,156,0,2292,297,1,0,0,0,2293,2298,3,300,150,0,2294,2295,5,26,0,0,2295,2297,3,300,150,0,2296,2294,1,0,0,0,2297,2300,1,0,0,0,2298,2296,1,0,0,0,2298,2299,1,0,0,0,2299,299,1,0,0,0,2300,2298,1,0,0,0,2301,2302,3,312,156,0,2302,301,1,0,0,0,2303,2308,3,304,152,0,2304,2305,5,26,0,0,2305,2307,3,304,152,0,2306,2304,1,0,0,0,2307,2310,1,0,0,0,2308,2306,1,0,0,0,2308,2309,1,0,0,0,2309,303,1,0,0,0,2310,2308,1,0,0,0,2311,2312,3,306,153,0,2312,2313,5,55,0,0,2313,2314,3,308,154,0,2314,305,1,0,0,0,2315,2316,3,312,156,0,2316,307,1,0,0,0,2317,2318,3,310,155,0,2318,309,1,0,0,0,2319,2320,3,14,7,0,2320,311,1,0,0,0,2321,2322,3,704,352,0,2322,313,1,0,0,0,2323,2324,5,210,0,0,2324,2325,5,69,0,0,2325,2326,3,230,115,0,2326,315,1,0,0,0,2327,2329,5,57,0,0,2328,2327,1,0,0,0,2328,2329,1,0,0,0,2329,2330,1,0,0,0,2330,2331,3,314,157,0,2331,317,1,0,0,0,2332,2334,5,148,0,0,2333,2335,5,80,0,0,2334,2333,1,0,0,0,2334,2335,1,0,0,0,2335,2336,1,0,0,0,2336,2337,5,69,0,0,2337,2338,3,252,126,0,2338,2341,3,320,160,0,2339,2340,5,312,0,0,2340,2342,3,724,362,0,2341,2339,1,0,0,0,2341,2342,1,0,0,0,2342,319,1,0,0,0,2343,2348,3,322,161,0,2344,2345,5,26,0,0,2345,2347,3,322,161,0,2346,2344,1,0,0,0,2347,2350,1,0,0,0,2348,2346,1,0,0,0,2348,2349,1,0,0,0,2349,321,1,0,0,0,2350,2348,1,0,0,0,2351,2357,3,324,162,0,2352,2357,3,328,164,0,2353,2357,3,330,165,0,2354,2357,3,332,166,0,2355,2357,3,334,167,0,2356,2351,1,0,0,0,2356,2352,1,0,0,0,2356,2353,1,0,0,0,2356,2354,1,0,0,0,2356,2355,1,0,0,0,2357,323,1,0,0,0,2358,2359,3,128,64,0,2359,325,1,0,0,0,2360,2365,3,324,162,0,2361,2362,5,26,0,0,2362,2364,3,324,162,0,2363,2361,1,0,0,0,2364,2367,1,0,0,0,2365,2363,1,0,0,0,2365,2366,1,0,0,0,2366,327,1,0,0,0,2367,2365,1,0,0,0,2368,2369,5,254,0,0,2369,2370,5,27,0,0,2370,2371,3,326,163,0,2371,2372,5,28,0,0,2372,329,1,0,0,0,2373,2374,5,89,0,0,2374,2375,5,27,0,0,2375,2376,3,326,163,0,2376,2377,5,28,0,0,2377,331,1,0,0,0,2378,2379,5,149,0,0,2379,2380,5,265,0,0,2380,2381,5,27,0,0,2381,2382,3,320,160,0,2382,2383,5,28,0,0,2383,333,1,0,0,0,2384,2385,5,153,0,0,2385,2386,5,27,0,0,2386,2387,3,14,7,0,2387,2388,5,26,0,0,2388,2389,3,14,7,0,2389,2390,5,26,0,0,2390,2391,3,14,7,0,2391,2392,5,26,0,0,2392,2393,3,14,7,0,2393,2394,5,28,0,0,2394,335,1,0,0,0,2395,2396,3,748,374,0,2396,2397,5,20,0,0,2397,2405,1,0,0,0,2398,2402,3,14,7,0,2399,2400,5,55,0,0,2400,2403,3,726,363,0,2401,2403,3,744,372,0,2402,2399,1,0,0,0,2402,2401,1,0,0,0,2402,2403,1,0,0,0,2403,2405,1,0,0,0,2404,2395,1,0,0,0,2404,2398,1,0,0,0,2405,337,1,0,0,0,2406,2408,5,53,0,0,2407,2406,1,0,0,0,2407,2408,1,0,0,0,2408,2409,1,0,0,0,2409,2420,3,344,172,0,2410,2412,3,358,179,0,2411,2413,5,53,0,0,2412,2411,1,0,0,0,2412,2413,1,0,0,0,2413,2414,1,0,0,0,2414,2416,3,344,172,0,2415,2417,3,360,180,0,2416,2415,1,0,0,0,2416,2417,1,0,0,0,2417,2419,1,0,0,0,2418,2410,1,0,0,0,2419,2422,1,0,0,0,2420,2418,1,0,0,0,2420,2421,1,0,0,0,2421,339,1,0,0,0,2422,2420,1,0,0,0,2423,2426,3,120,60,0,2424,2425,5,55,0,0,2425,2427,3,724,362,0,2426,2424,1,0,0,0,2426,2427,1,0,0,0,2427,341,1,0,0,0,2428,2437,3,340,170,0,2429,2430,5,27,0,0,2430,2432,3,130,65,0,2431,2433,5,26,0,0,2432,2431,1,0,0,0,2432,2433,1,0,0,0,2433,2434,1,0,0,0,2434,2435,5,28,0,0,2435,2437,1,0,0,0,2436,2428,1,0,0,0,2436,2429,1,0,0,0,2437,343,1,0,0,0,2438,2448,3,346,173,0,2439,2446,5,137,0,0,2440,2442,7,13,0,0,2441,2440,1,0,0,0,2441,2442,1,0,0,0,2442,2443,1,0,0,0,2443,2444,5,69,0,0,2444,2447,3,342,171,0,2445,2447,5,78,0,0,2446,2441,1,0,0,0,2446,2445,1,0,0,0,2447,2449,1,0,0,0,2448,2439,1,0,0,0,2448,2449,1,0,0,0,2449,345,1,0,0,0,2450,2452,3,348,174,0,2451,2453,3,256,128,0,2452,2451,1,0,0,0,2452,2453,1,0,0,0,2453,2462,1,0,0,0,2454,2455,5,55,0,0,2455,2458,3,724,362,0,2456,2458,3,744,372,0,2457,2454,1,0,0,0,2457,2456,1,0,0,0,2458,2460,1,0,0,0,2459,2461,3,114,57,0,2460,2459,1,0,0,0,2460,2461,1,0,0,0,2461,2463,1,0,0,0,2462,2457,1,0,0,0,2462,2463,1,0,0,0,2463,2466,1,0,0,0,2464,2467,3,350,175,0,2465,2467,3,352,176,0,2466,2464,1,0,0,0,2466,2465,1,0,0,0,2466,2467,1,0,0,0,2467,347,1,0,0,0,2468,2478,3,572,286,0,2469,2470,5,27,0,0,2470,2471,3,232,116,0,2471,2472,5,28,0,0,2472,2478,1,0,0,0,2473,2474,5,27,0,0,2474,2475,3,370,185,0,2475,2476,5,28,0,0,2476,2478,1,0,0,0,2477,2468,1,0,0,0,2477,2469,1,0,0,0,2477,2473,1,0,0,0,2478,349,1,0,0,0,2479,2480,5,257,0,0,2480,2481,3,14,7,0,2481,351,1,0,0,0,2482,2483,5,279,0,0,2483,2484,3,354,177,0,2484,2485,5,27,0,0,2485,2486,3,14,7,0,2486,2488,5,28,0,0,2487,2489,3,356,178,0,2488,2487,1,0,0,0,2488,2489,1,0,0,0,2489,353,1,0,0,0,2490,2491,7,14,0,0,2491,355,1,0,0,0,2492,2493,5,239,0,0,2493,2494,5,27,0,0,2494,2495,3,14,7,0,2495,2496,5,28,0,0,2496,357,1,0,0,0,2497,2522,5,26,0,0,2498,2500,5,193,0,0,2499,2498,1,0,0,0,2499,2500,1,0,0,0,2500,2518,1,0,0,0,2501,2503,5,178,0,0,2502,2504,7,15,0,0,2503,2502,1,0,0,0,2503,2504,1,0,0,0,2504,2512,1,0,0,0,2505,2507,5,251,0,0,2506,2508,7,15,0,0,2507,2506,1,0,0,0,2507,2508,1,0,0,0,2508,2512,1,0,0,0,2509,2512,5,126,0,0,2510,2512,5,143,0,0,2511,2501,1,0,0,0,2511,2505,1,0,0,0,2511,2509,1,0,0,0,2511,2510,1,0,0,0,2511,2512,1,0,0,0,2512,2514,1,0,0,0,2513,2515,5,212,0,0,2514,2513,1,0,0,0,2514,2515,1,0,0,0,2515,2519,1,0,0,0,2516,2519,5,165,0,0,2517,2519,5,88,0,0,2518,2511,1,0,0,0,2518,2516,1,0,0,0,2518,2517,1,0,0,0,2519,2520,1,0,0,0,2520,2522,5,172,0,0,2521,2497,1,0,0,0,2521,2499,1,0,0,0,2522,359,1,0,0,0,2523,2524,5,204,0,0,2524,2528,3,14,7,0,2525,2526,5,303,0,0,2526,2528,3,118,59,0,2527,2523,1,0,0,0,2527,2525,1,0,0,0,2528,361,1,0,0,0,2529,2539,5,248,0,0,2530,2540,5,20,0,0,2531,2536,3,724,362,0,2532,2533,5,26,0,0,2533,2535,3,724,362,0,2534,2532,1,0,0,0,2535,2538,1,0,0,0,2536,2534,1,0,0,0,2536,2537,1,0,0,0,2537,2540,1,0,0,0,2538,2536,1,0,0,0,2539,2530,1,0,0,0,2539,2531,1,0,0,0,2540,363,1,0,0,0,2541,2554,5,166,0,0,2542,2543,5,166,0,0,2543,2544,5,209,0,0,2544,2554,5,44,0,0,2545,2546,5,166,0,0,2546,2547,5,209,0,0,2547,2554,5,249,0,0,2548,2549,5,166,0,0,2549,2550,5,209,0,0,2550,2554,5,155,0,0,2551,2554,5,300,0,0,2552,2554,5,240,0,0,2553,2541,1,0,0,0,2553,2542,1,0,0,0,2553,2545,1,0,0,0,2553,2548,1,0,0,0,2553,2551,1,0,0,0,2553,2552,1,0,0,0,2554,2555,1,0,0,0,2555,2556,5,169,0,0,2556,2557,3,588,294,0,2557,2559,3,368,184,0,2558,2560,3,362,181,0,2559,2558,1,0,0,0,2559,2560,1,0,0,0,2560,365,1,0,0,0,2561,2573,5,166,0,0,2562,2563,5,166,0,0,2563,2564,5,209,0,0,2564,2573,5,44,0,0,2565,2566,5,166,0,0,2566,2567,5,209,0,0,2567,2573,5,249,0,0,2568,2569,5,166,0,0,2569,2570,5,209,0,0,2570,2573,5,155,0,0,2571,2573,5,240,0,0,2572,2561,1,0,0,0,2572,2562,1,0,0,0,2572,2565,1,0,0,0,2572,2568,1,0,0,0,2572,2571,1,0,0,0,2573,2574,1,0,0,0,2574,2575,5,169,0,0,2575,2576,3,588,294,0,2576,2577,3,368,184,0,2577,367,1,0,0,0,2578,2580,3,114,57,0,2579,2578,1,0,0,0,2579,2580,1,0,0,0,2580,2581,1,0,0,0,2581,2585,3,372,186,0,2582,2583,5,98,0,0,2583,2585,5,305,0,0,2584,2579,1,0,0,0,2584,2582,1,0,0,0,2585,369,1,0,0,0,2586,2587,5,305,0,0,2587,2588,3,374,187,0,2588,371,1,0,0,0,2589,2592,3,370,185,0,2590,2592,3,232,116,0,2591,2589,1,0,0,0,2591,2590,1,0,0,0,2592,373,1,0,0,0,2593,2598,3,376,188,0,2594,2595,5,26,0,0,2595,2597,3,376,188,0,2596,2594,1,0,0,0,2597,2600,1,0,0,0,2598,2596,1,0,0,0,2598,2599,1,0,0,0,2599,375,1,0,0,0,2600,2598,1,0,0,0,2601,2602,5,27,0,0,2602,2603,3,112,56,0,2603,2604,5,28,0,0,2604,377,1,0,0,0,2605,2608,3,112,56,0,2606,2608,3,232,116,0,2607,2605,1,0,0,0,2607,2606,1,0,0,0,2608,379,1,0,0,0,2609,2612,5,87,0,0,2610,2611,5,209,0,0,2611,2613,5,240,0,0,2612,2610,1,0,0,0,2612,2613,1,0,0,0,2613,2614,1,0,0,0,2614,2615,5,131,0,0,2615,2616,5,94,0,0,2616,2620,5,268,0,0,2617,2618,5,154,0,0,2618,2619,5,196,0,0,2619,2621,5,128,0,0,2620,2617,1,0,0,0,2620,2621,1,0,0,0,2621,2622,1,0,0,0,2622,2623,3,582,291,0,2623,2624,3,426,213,0,2624,381,1,0,0,0,2625,2626,5,49,0,0,2626,2627,5,131,0,0,2627,2628,5,94,0,0,2628,2629,5,268,0,0,2629,2630,3,582,291,0,2630,2635,3,384,192,0,2631,2632,5,26,0,0,2632,2634,3,384,192,0,2633,2631,1,0,0,0,2634,2637,1,0,0,0,2635,2633,1,0,0,0,2635,2636,1,0,0,0,2636,383,1,0,0,0,2637,2635,1,0,0,0,2638,2642,3,456,228,0,2639,2642,3,458,229,0,2640,2642,3,460,230,0,2641,2638,1,0,0,0,2641,2639,1,0,0,0,2641,2640,1,0,0,0,2642,385,1,0,0,0,2643,2644,5,112,0,0,2644,2645,5,131,0,0,2645,2646,5,94,0,0,2646,2649,5,268,0,0,2647,2648,5,154,0,0,2648,2650,5,128,0,0,2649,2647,1,0,0,0,2649,2650,1,0,0,0,2650,2651,1,0,0,0,2651,2652,3,582,291,0,2652,387,1,0,0,0,2653,2654,5,87,0,0,2654,2655,5,307,0,0,2655,2656,3,582,291,0,2656,2657,3,426,213,0,2657,2658,5,55,0,0,2658,2659,3,232,116,0,2659,389,1,0,0,0,2660,2661,5,112,0,0,2661,2662,5,307,0,0,2662,2663,3,582,291,0,2663,391,1,0,0,0,2664,2665,5,300,0,0,2665,2666,5,200,0,0,2666,2667,3,582,291,0,2667,2668,5,27,0,0,2668,2669,5,292,0,0,2669,2670,3,416,208,0,2670,2672,5,28,0,0,2671,2673,3,396,198,0,2672,2671,1,0,0,0,2672,2673,1,0,0,0,2673,393,1,0,0,0,2674,2675,5,87,0,0,2675,2679,5,200,0,0,2676,2677,5,154,0,0,2677,2678,5,196,0,0,2678,2680,5,128,0,0,2679,2676,1,0,0,0,2679,2680,1,0,0,0,2680,2681,1,0,0,0,2681,2682,3,582,291,0,2682,2683,5,27,0,0,2683,2684,5,292,0,0,2684,2685,3,416,208,0,2685,2687,5,28,0,0,2686,2688,3,396,198,0,2687,2686,1,0,0,0,2687,2688,1,0,0,0,2688,395,1,0,0,0,2689,2690,5,312,0,0,2690,2691,3,414,207,0,2691,397,1,0,0,0,2692,2693,5,49,0,0,2693,2694,5,200,0,0,2694,2695,3,582,291,0,2695,2696,5,27,0,0,2696,2697,5,292,0,0,2697,2698,3,416,208,0,2698,2699,5,28,0,0,2699,2700,3,400,200,0,2700,399,1,0,0,0,2701,2702,5,264,0,0,2702,2703,3,414,207,0,2703,401,1,0,0,0,2704,2705,5,112,0,0,2705,2708,5,200,0,0,2706,2707,5,154,0,0,2707,2709,5,128,0,0,2708,2706,1,0,0,0,2708,2709,1,0,0,0,2709,2710,1,0,0,0,2710,2711,3,582,291,0,2711,2712,5,27,0,0,2712,2713,5,292,0,0,2713,2714,3,416,208,0,2714,2716,5,28,0,0,2715,2717,3,404,202,0,2716,2715,1,0,0,0,2716,2717,1,0,0,0,2717,403,1,0,0,0,2718,2719,5,312,0,0,2719,2720,3,414,207,0,2720,405,1,0,0,0,2721,2725,3,752,376,0,2722,2725,3,144,72,0,2723,2725,5,316,0,0,2724,2721,1,0,0,0,2724,2722,1,0,0,0,2724,2723,1,0,0,0,2725,407,1,0,0,0,2726,2727,3,726,363,0,2727,2728,5,2,0,0,2728,2729,3,406,203,0,2729,409,1,0,0,0,2730,2731,3,726,363,0,2731,411,1,0,0,0,2732,2735,3,408,204,0,2733,2735,3,410,205,0,2734,2732,1,0,0,0,2734,2733,1,0,0,0,2735,413,1,0,0,0,2736,2749,3,412,206,0,2737,2738,5,27,0,0,2738,2743,3,412,206,0,2739,2740,5,26,0,0,2740,2742,3,412,206,0,2741,2739,1,0,0,0,2742,2745,1,0,0,0,2743,2741,1,0,0,0,2743,2744,1,0,0,0,2744,2746,1,0,0,0,2745,2743,1,0,0,0,2746,2747,5,28,0,0,2747,2749,1,0,0,0,2748,2736,1,0,0,0,2748,2737,1,0,0,0,2749,415,1,0,0,0,2750,2751,3,726,363,0,2751,417,1,0,0,0,2752,2755,5,87,0,0,2753,2754,5,209,0,0,2754,2756,5,240,0,0,2755,2753,1,0,0,0,2755,2756,1,0,0,0,2756,2765,1,0,0,0,2757,2766,5,277,0,0,2758,2766,5,280,0,0,2759,2760,5,131,0,0,2760,2766,5,277,0,0,2761,2762,5,282,0,0,2762,2766,5,277,0,0,2763,2764,5,283,0,0,2764,2766,5,277,0,0,2765,2757,1,0,0,0,2765,2758,1,0,0,0,2765,2759,1,0,0,0,2765,2761,1,0,0,0,2765,2763,1,0,0,0,2766,2770,1,0,0,0,2767,2768,5,154,0,0,2768,2769,5,196,0,0,2769,2771,5,128,0,0,2770,2767,1,0,0,0,2770,2771,1,0,0,0,2771,2772,1,0,0,0,2772,2773,3,586,293,0,2773,2774,5,27,0,0,2774,2779,3,420,210,0,2775,2776,5,26,0,0,2776,2778,3,420,210,0,2777,2775,1,0,0,0,2778,2781,1,0,0,0,2779,2777,1,0,0,0,2779,2780,1,0,0,0,2780,2783,1,0,0,0,2781,2779,1,0,0,0,2782,2784,5,26,0,0,2783,2782,1,0,0,0,2783,2784,1,0,0,0,2784,2785,1,0,0,0,2785,2787,5,28,0,0,2786,2788,3,422,211,0,2787,2786,1,0,0,0,2787,2788,1,0,0,0,2788,2790,1,0,0,0,2789,2791,3,424,212,0,2790,2789,1,0,0,0,2790,2791,1,0,0,0,2791,2793,1,0,0,0,2792,2794,3,426,213,0,2793,2792,1,0,0,0,2793,2794,1,0,0,0,2794,2796,1,0,0,0,2795,2797,3,428,214,0,2796,2795,1,0,0,0,2796,2797,1,0,0,0,2797,2799,1,0,0,0,2798,2800,3,432,216,0,2799,2798,1,0,0,0,2799,2800,1,0,0,0,2800,419,1,0,0,0,2801,2808,3,476,238,0,2802,2808,3,484,242,0,2803,2808,3,486,243,0,2804,2808,3,508,254,0,2805,2808,3,494,247,0,2806,2808,3,728,364,0,2807,2801,1,0,0,0,2807,2802,1,0,0,0,2807,2803,1,0,0,0,2807,2804,1,0,0,0,2807,2805,1,0,0,0,2807,2806,1,0,0,0,2808,421,1,0,0,0,2809,2810,5,162,0,0,2810,2811,5,27,0,0,2811,2816,3,584,292,0,2812,2813,5,26,0,0,2813,2815,3,584,292,0,2814,2812,1,0,0,0,2815,2818,1,0,0,0,2816,2814,1,0,0,0,2816,2817,1,0,0,0,2817,2819,1,0,0,0,2818,2816,1,0,0,0,2819,2820,5,28,0,0,2820,423,1,0,0,0,2821,2822,5,215,0,0,2822,2823,5,69,0,0,2823,2824,5,151,0,0,2824,2825,3,114,57,0,2825,425,1,0,0,0,2826,2827,5,312,0,0,2827,2828,5,27,0,0,2828,2833,3,430,215,0,2829,2830,5,26,0,0,2830,2832,3,430,215,0,2831,2829,1,0,0,0,2832,2835,1,0,0,0,2833,2831,1,0,0,0,2833,2834,1,0,0,0,2834,2836,1,0,0,0,2835,2833,1,0,0,0,2836,2837,5,28,0,0,2837,427,1,0,0,0,2838,2839,5,280,0,0,2839,2840,3,584,292,0,2840,429,1,0,0,0,2841,2842,3,724,362,0,2842,2843,5,2,0,0,2843,2844,3,506,253,0,2844,431,1,0,0,0,2845,2846,5,55,0,0,2846,2847,3,372,186,0,2847,433,1,0,0,0,2848,2849,5,49,0,0,2849,2850,5,277,0,0,2850,2851,3,586,293,0,2851,2856,3,436,218,0,2852,2853,5,26,0,0,2853,2855,3,436,218,0,2854,2852,1,0,0,0,2855,2858,1,0,0,0,2856,2854,1,0,0,0,2856,2857,1,0,0,0,2857,435,1,0,0,0,2858,2856,1,0,0,0,2859,2875,3,446,223,0,2860,2875,3,448,224,0,2861,2875,3,450,225,0,2862,2875,3,452,226,0,2863,2875,3,454,227,0,2864,2875,3,456,228,0,2865,2875,3,458,229,0,2866,2875,3,460,230,0,2867,2875,3,462,231,0,2868,2875,3,464,232,0,2869,2875,3,466,233,0,2870,2875,3,470,235,0,2871,2875,3,472,236,0,2872,2875,3,474,237,0,2873,2875,3,468,234,0,2874,2859,1,0,0,0,2874,2860,1,0,0,0,2874,2861,1,0,0,0,2874,2862,1,0,0,0,2874,2863,1,0,0,0,2874,2864,1,0,0,0,2874,2865,1,0,0,0,2874,2866,1,0,0,0,2874,2867,1,0,0,0,2874,2868,1,0,0,0,2874,2869,1,0,0,0,2874,2870,1,0,0,0,2874,2871,1,0,0,0,2874,2872,1,0,0,0,2874,2873,1,0,0,0,2875,437,1,0,0,0,2876,2877,5,49,0,0,2877,2878,5,131,0,0,2878,2879,5,277,0,0,2879,2880,3,586,293,0,2880,2885,3,440,220,0,2881,2882,5,26,0,0,2882,2884,3,440,220,0,2883,2881,1,0,0,0,2884,2887,1,0,0,0,2885,2883,1,0,0,0,2885,2886,1,0,0,0,2886,439,1,0,0,0,2887,2885,1,0,0,0,2888,2894,3,446,223,0,2889,2894,3,448,224,0,2890,2894,3,456,228,0,2891,2894,3,458,229,0,2892,2894,3,460,230,0,2893,2888,1,0,0,0,2893,2889,1,0,0,0,2893,2890,1,0,0,0,2893,2891,1,0,0,0,2893,2892,1,0,0,0,2894,441,1,0,0,0,2895,2896,5,49,0,0,2896,2897,5,280,0,0,2897,2898,3,582,291,0,2898,2903,3,444,222,0,2899,2900,5,26,0,0,2900,2902,3,444,222,0,2901,2899,1,0,0,0,2902,2905,1,0,0,0,2903,2901,1,0,0,0,2903,2904,1,0,0,0,2904,443,1,0,0,0,2905,2903,1,0,0,0,2906,2909,3,446,223,0,2907,2909,3,448,224,0,2908,2906,1,0,0,0,2908,2907,1,0,0,0,2909,445,1,0,0,0,2910,2912,5,46,0,0,2911,2913,5,77,0,0,2912,2911,1,0,0,0,2912,2913,1,0,0,0,2913,2914,1,0,0,0,2914,2915,3,476,238,0,2915,447,1,0,0,0,2916,2918,5,112,0,0,2917,2919,5,77,0,0,2918,2917,1,0,0,0,2918,2919,1,0,0,0,2919,2920,1,0,0,0,2920,2921,3,724,362,0,2921,449,1,0,0,0,2922,2923,5,49,0,0,2923,2924,5,77,0,0,2924,2925,3,724,362,0,2925,2926,5,264,0,0,2926,2927,3,478,239,0,2927,451,1,0,0,0,2928,2929,5,46,0,0,2929,2930,3,508,254,0,2930,453,1,0,0,0,2931,2932,5,49,0,0,2932,2933,5,134,0,0,2933,2934,3,724,362,0,2934,2935,5,264,0,0,2935,2936,3,724,362,0,2936,2937,3,514,257,0,2937,455,1,0,0,0,2938,2939,5,264,0,0,2939,2940,3,724,362,0,2940,2941,3,506,253,0,2941,457,1,0,0,0,2942,2943,5,264,0,0,2943,2944,5,27,0,0,2944,2949,3,504,252,0,2945,2946,5,26,0,0,2946,2948,3,504,252,0,2947,2945,1,0,0,0,2948,2951,1,0,0,0,2949,2947,1,0,0,0,2949,2950,1,0,0,0,2950,2952,1,0,0,0,2951,2949,1,0,0,0,2952,2953,5,28,0,0,2953,459,1,0,0,0,2954,2955,5,242,0,0,2955,2956,5,27,0,0,2956,2961,3,724,362,0,2957,2958,5,26,0,0,2958,2960,3,724,362,0,2959,2957,1,0,0,0,2960,2963,1,0,0,0,2961,2959,1,0,0,0,2961,2962,1,0,0,0,2962,2964,1,0,0,0,2963,2961,1,0,0,0,2964,2965,5,28,0,0,2965,461,1,0,0,0,2966,2967,5,46,0,0,2967,2968,3,486,243,0,2968,463,1,0,0,0,2969,2970,5,112,0,0,2970,2971,5,160,0,0,2971,2972,3,724,362,0,2972,465,1,0,0,0,2973,2974,5,238,0,0,2974,2975,5,286,0,0,2975,2976,3,736,368,0,2976,467,1,0,0,0,2977,2978,5,238,0,0,2978,2979,5,160,0,0,2979,2980,3,724,362,0,2980,2981,5,286,0,0,2981,2982,3,724,362,0,2982,469,1,0,0,0,2983,2984,5,46,0,0,2984,2985,3,494,247,0,2985,471,1,0,0,0,2986,2987,5,49,0,0,2987,2988,5,74,0,0,2988,2989,3,724,362,0,2989,2990,3,502,251,0,2990,473,1,0,0,0,2991,2992,5,112,0,0,2992,2993,5,74,0,0,2993,2994,3,724,362,0,2994,475,1,0,0,0,2995,2996,3,728,364,0,2996,2998,3,204,102,0,2997,2999,3,478,239,0,2998,2997,1,0,0,0,2998,2999,1,0,0,0,2999,3e3,1,0,0,0,3e3,3001,3,480,240,0,3001,477,1,0,0,0,3002,3003,5,134,0,0,3003,3004,3,724,362,0,3004,479,1,0,0,0,3005,3007,5,196,0,0,3006,3005,1,0,0,0,3006,3007,1,0,0,0,3007,3008,1,0,0,0,3008,3010,5,198,0,0,3009,3006,1,0,0,0,3009,3010,1,0,0,0,3010,3013,1,0,0,0,3011,3012,5,98,0,0,3012,3014,3,14,7,0,3013,3011,1,0,0,0,3013,3014,1,0,0,0,3014,481,1,0,0,0,3015,3017,3,724,362,0,3016,3018,7,9,0,0,3017,3016,1,0,0,0,3017,3018,1,0,0,0,3018,483,1,0,0,0,3019,3020,5,226,0,0,3020,3021,5,176,0,0,3021,3022,5,27,0,0,3022,3027,3,724,362,0,3023,3024,5,26,0,0,3024,3026,3,724,362,0,3025,3023,1,0,0,0,3026,3029,1,0,0,0,3027,3025,1,0,0,0,3027,3028,1,0,0,0,3028,3030,1,0,0,0,3029,3027,1,0,0,0,3030,3031,5,28,0,0,3031,3059,1,0,0,0,3032,3033,5,215,0,0,3033,3034,5,69,0,0,3034,3035,5,27,0,0,3035,3040,3,724,362,0,3036,3037,5,26,0,0,3037,3039,3,724,362,0,3038,3036,1,0,0,0,3039,3042,1,0,0,0,3040,3038,1,0,0,0,3040,3041,1,0,0,0,3041,3043,1,0,0,0,3042,3040,1,0,0,0,3043,3044,5,28,0,0,3044,3059,1,0,0,0,3045,3046,5,210,0,0,3046,3047,5,69,0,0,3047,3048,5,27,0,0,3048,3053,3,482,241,0,3049,3050,5,26,0,0,3050,3052,3,482,241,0,3051,3049,1,0,0,0,3052,3055,1,0,0,0,3053,3051,1,0,0,0,3053,3054,1,0,0,0,3054,3056,1,0,0,0,3055,3053,1,0,0,0,3056,3057,5,28,0,0,3057,3059,1,0,0,0,3058,3019,1,0,0,0,3058,3032,1,0,0,0,3058,3045,1,0,0,0,3059,485,1,0,0,0,3060,3061,5,160,0,0,3061,3062,3,724,362,0,3062,3083,3,488,244,0,3063,3064,5,312,0,0,3064,3065,5,27,0,0,3065,3066,3,724,362,0,3066,3067,5,2,0,0,3067,3075,3,724,362,0,3068,3069,5,26,0,0,3069,3070,3,724,362,0,3070,3071,5,2,0,0,3071,3072,3,724,362,0,3072,3074,1,0,0,0,3073,3068,1,0,0,0,3074,3077,1,0,0,0,3075,3073,1,0,0,0,3075,3076,1,0,0,0,3076,3079,1,0,0,0,3077,3075,1,0,0,0,3078,3080,5,26,0,0,3079,3078,1,0,0,0,3079,3080,1,0,0,0,3080,3081,1,0,0,0,3081,3082,5,28,0,0,3082,3084,1,0,0,0,3083,3063,1,0,0,0,3083,3084,1,0,0,0,3084,3085,1,0,0,0,3085,3086,5,204,0,0,3086,3087,5,27,0,0,3087,3092,3,728,364,0,3088,3089,5,26,0,0,3089,3091,3,728,364,0,3090,3088,1,0,0,0,3091,3094,1,0,0,0,3092,3090,1,0,0,0,3092,3093,1,0,0,0,3093,3095,1,0,0,0,3094,3092,1,0,0,0,3095,3108,5,28,0,0,3096,3097,5,86,0,0,3097,3098,5,27,0,0,3098,3103,3,728,364,0,3099,3100,5,26,0,0,3100,3102,3,728,364,0,3101,3099,1,0,0,0,3102,3105,1,0,0,0,3103,3101,1,0,0,0,3103,3104,1,0,0,0,3104,3106,1,0,0,0,3105,3103,1,0,0,0,3106,3107,5,28,0,0,3107,3109,1,0,0,0,3108,3096,1,0,0,0,3108,3109,1,0,0,0,3109,487,1,0,0,0,3110,3113,3,490,245,0,3111,3113,3,492,246,0,3112,3110,1,0,0,0,3112,3111,1,0,0,0,3113,489,1,0,0,0,3114,3116,5,146,0,0,3115,3117,5,296,0,0,3116,3115,1,0,0,0,3116,3117,1,0,0,0,3117,3119,1,0,0,0,3118,3120,7,16,0,0,3119,3118,1,0,0,0,3119,3120,1,0,0,0,3120,491,1,0,0,0,3121,3122,5,183,0,0,3122,493,1,0,0,0,3123,3124,5,74,0,0,3124,3125,3,724,362,0,3125,3126,5,312,0,0,3126,3127,5,27,0,0,3127,3128,3,496,248,0,3128,3129,5,28,0,0,3129,495,1,0,0,0,3130,3135,3,498,249,0,3131,3132,5,26,0,0,3132,3134,3,498,249,0,3133,3131,1,0,0,0,3134,3137,1,0,0,0,3135,3133,1,0,0,0,3135,3136,1,0,0,0,3136,497,1,0,0,0,3137,3135,1,0,0,0,3138,3139,3,724,362,0,3139,3140,5,2,0,0,3140,3141,3,500,250,0,3141,499,1,0,0,0,3142,3143,3,14,7,0,3143,501,1,0,0,0,3144,3151,5,108,0,0,3145,3146,5,264,0,0,3146,3147,5,27,0,0,3147,3148,3,496,248,0,3148,3149,5,28,0,0,3149,3151,1,0,0,0,3150,3144,1,0,0,0,3150,3145,1,0,0,0,3151,503,1,0,0,0,3152,3153,3,724,362,0,3153,3154,5,2,0,0,3154,3155,3,506,253,0,3155,505,1,0,0,0,3156,3169,3,706,353,0,3157,3169,5,316,0,0,3158,3169,3,788,394,0,3159,3169,3,516,258,0,3160,3161,3,14,7,0,3161,3162,5,204,0,0,3162,3165,3,724,362,0,3163,3164,5,55,0,0,3164,3166,7,17,0,0,3165,3163,1,0,0,0,3165,3166,1,0,0,0,3166,3169,1,0,0,0,3167,3169,3,784,392,0,3168,3156,1,0,0,0,3168,3157,1,0,0,0,3168,3158,1,0,0,0,3168,3159,1,0,0,0,3168,3160,1,0,0,0,3168,3167,1,0,0,0,3169,507,1,0,0,0,3170,3171,5,134,0,0,3171,3172,3,724,362,0,3172,3173,3,510,255,0,3173,509,1,0,0,0,3174,3183,5,27,0,0,3175,3180,3,512,256,0,3176,3177,5,26,0,0,3177,3179,3,512,256,0,3178,3176,1,0,0,0,3179,3182,1,0,0,0,3180,3178,1,0,0,0,3180,3181,1,0,0,0,3181,3184,1,0,0,0,3182,3180,1,0,0,0,3183,3175,1,0,0,0,3183,3184,1,0,0,0,3184,3185,1,0,0,0,3185,3186,5,28,0,0,3186,511,1,0,0,0,3187,3188,3,724,362,0,3188,3189,5,2,0,0,3189,3190,3,514,257,0,3190,513,1,0,0,0,3191,3192,5,316,0,0,3192,515,1,0,0,0,3193,3194,5,27,0,0,3194,3199,3,518,259,0,3195,3196,5,26,0,0,3196,3198,3,518,259,0,3197,3195,1,0,0,0,3198,3201,1,0,0,0,3199,3197,1,0,0,0,3199,3200,1,0,0,0,3200,3202,1,0,0,0,3201,3199,1,0,0,0,3202,3203,5,28,0,0,3203,3206,1,0,0,0,3204,3206,3,518,259,0,3205,3193,1,0,0,0,3205,3204,1,0,0,0,3206,517,1,0,0,0,3207,3208,5,27,0,0,3208,3213,3,142,71,0,3209,3210,5,26,0,0,3210,3212,3,142,71,0,3211,3209,1,0,0,0,3212,3215,1,0,0,0,3213,3211,1,0,0,0,3213,3214,1,0,0,0,3214,3216,1,0,0,0,3215,3213,1,0,0,0,3216,3217,5,28,0,0,3217,519,1,0,0,0,3218,3223,5,112,0,0,3219,3224,5,277,0,0,3220,3224,5,280,0,0,3221,3222,5,131,0,0,3222,3224,5,277,0,0,3223,3219,1,0,0,0,3223,3220,1,0,0,0,3223,3221,1,0,0,0,3224,3227,1,0,0,0,3225,3226,5,154,0,0,3226,3228,5,128,0,0,3227,3225,1,0,0,0,3227,3228,1,0,0,0,3228,3229,1,0,0,0,3229,3230,3,586,293,0,3230,521,1,0,0,0,3231,3232,5,87,0,0,3232,3233,5,302,0,0,3233,3235,3,532,266,0,3234,3236,3,534,267,0,3235,3234,1,0,0,0,3235,3236,1,0,0,0,3236,523,1,0,0,0,3237,3238,5,49,0,0,3238,3239,5,302,0,0,3239,3247,3,532,266,0,3240,3242,5,312,0,0,3241,3240,1,0,0,0,3241,3242,1,0,0,0,3242,3243,1,0,0,0,3243,3248,3,534,267,0,3244,3245,5,238,0,0,3245,3246,5,286,0,0,3246,3248,3,532,266,0,3247,3241,1,0,0,0,3247,3244,1,0,0,0,3248,525,1,0,0,0,3249,3250,5,87,0,0,3250,3251,5,148,0,0,3251,3265,3,532,266,0,3252,3253,5,312,0,0,3253,3254,5,302,0,0,3254,3259,3,532,266,0,3255,3256,5,26,0,0,3256,3258,3,532,266,0,3257,3255,1,0,0,0,3258,3261,1,0,0,0,3259,3257,1,0,0,0,3259,3260,1,0,0,0,3260,3263,1,0,0,0,3261,3259,1,0,0,0,3262,3264,5,26,0,0,3263,3262,1,0,0,0,3263,3264,1,0,0,0,3264,3266,1,0,0,0,3265,3252,1,0,0,0,3265,3266,1,0,0,0,3266,527,1,0,0,0,3267,3268,5,49,0,0,3268,3269,5,148,0,0,3269,3286,3,532,266,0,3270,3271,7,18,0,0,3271,3272,5,302,0,0,3272,3277,3,532,266,0,3273,3274,5,26,0,0,3274,3276,3,532,266,0,3275,3273,1,0,0,0,3276,3279,1,0,0,0,3277,3275,1,0,0,0,3277,3278,1,0,0,0,3278,3281,1,0,0,0,3279,3277,1,0,0,0,3280,3282,5,26,0,0,3281,3280,1,0,0,0,3281,3282,1,0,0,0,3282,3287,1,0,0,0,3283,3284,5,238,0,0,3284,3285,5,286,0,0,3285,3287,3,532,266,0,3286,3270,1,0,0,0,3286,3283,1,0,0,0,3287,529,1,0,0,0,3288,3289,5,112,0,0,3289,3292,7,19,0,0,3290,3291,5,154,0,0,3291,3293,5,128,0,0,3292,3290,1,0,0,0,3292,3293,1,0,0,0,3293,3294,1,0,0,0,3294,3299,3,532,266,0,3295,3296,5,26,0,0,3296,3298,3,532,266,0,3297,3295,1,0,0,0,3298,3301,1,0,0,0,3299,3297,1,0,0,0,3299,3300,1,0,0,0,3300,3303,1,0,0,0,3301,3299,1,0,0,0,3302,3304,5,26,0,0,3303,3302,1,0,0,0,3303,3304,1,0,0,0,3304,531,1,0,0,0,3305,3308,3,726,363,0,3306,3308,3,144,72,0,3307,3305,1,0,0,0,3307,3306,1,0,0,0,3308,533,1,0,0,0,3309,3311,5,117,0,0,3310,3309,1,0,0,0,3310,3311,1,0,0,0,3311,3312,1,0,0,0,3312,3313,5,217,0,0,3313,3314,3,14,7,0,3314,535,1,0,0,0,3315,3316,5,147,0,0,3316,3317,3,544,272,0,3317,3318,5,204,0,0,3318,3323,3,728,364,0,3319,3320,5,26,0,0,3320,3322,3,728,364,0,3321,3319,1,0,0,0,3322,3325,1,0,0,0,3323,3321,1,0,0,0,3323,3324,1,0,0,0,3324,3326,1,0,0,0,3325,3323,1,0,0,0,3326,3327,5,286,0,0,3327,3332,3,532,266,0,3328,3329,5,26,0,0,3329,3331,3,532,266,0,3330,3328,1,0,0,0,3331,3334,1,0,0,0,3332,3330,1,0,0,0,3332,3333,1,0,0,0,3333,3336,1,0,0,0,3334,3332,1,0,0,0,3335,3337,5,26,0,0,3336,3335,1,0,0,0,3336,3337,1,0,0,0,3337,3341,1,0,0,0,3338,3339,5,312,0,0,3339,3340,5,147,0,0,3340,3342,5,207,0,0,3341,3338,1,0,0,0,3341,3342,1,0,0,0,3342,537,1,0,0,0,3343,3347,5,250,0,0,3344,3345,5,147,0,0,3345,3346,5,207,0,0,3346,3348,5,140,0,0,3347,3344,1,0,0,0,3347,3348,1,0,0,0,3348,3349,1,0,0,0,3349,3350,3,544,272,0,3350,3351,5,204,0,0,3351,3356,3,728,364,0,3352,3353,5,26,0,0,3353,3355,3,728,364,0,3354,3352,1,0,0,0,3355,3358,1,0,0,0,3356,3354,1,0,0,0,3356,3357,1,0,0,0,3357,3359,1,0,0,0,3358,3356,1,0,0,0,3359,3360,5,142,0,0,3360,3365,3,532,266,0,3361,3362,5,26,0,0,3362,3364,3,532,266,0,3363,3361,1,0,0,0,3364,3367,1,0,0,0,3365,3363,1,0,0,0,3365,3366,1,0,0,0,3366,539,1,0,0,0,3367,3365,1,0,0,0,3368,3393,5,83,0,0,3369,3393,5,182,0,0,3370,3393,5,166,0,0,3371,3393,5,184,0,0,3372,3393,5,112,0,0,3373,3393,5,147,0,0,3374,3375,5,191,0,0,3375,3393,7,20,0,0,3376,3377,7,21,0,0,3377,3393,5,255,0,0,3378,3379,7,22,0,0,3379,3393,5,259,0,0,3380,3382,5,262,0,0,3381,3383,7,23,0,0,3382,3381,1,0,0,0,3382,3383,1,0,0,0,3383,3393,1,0,0,0,3384,3386,7,24,0,0,3385,3387,5,179,0,0,3386,3385,1,0,0,0,3386,3387,1,0,0,0,3387,3393,1,0,0,0,3388,3390,5,87,0,0,3389,3391,7,25,0,0,3390,3389,1,0,0,0,3390,3391,1,0,0,0,3391,3393,1,0,0,0,3392,3368,1,0,0,0,3392,3369,1,0,0,0,3392,3370,1,0,0,0,3392,3371,1,0,0,0,3392,3372,1,0,0,0,3392,3373,1,0,0,0,3392,3374,1,0,0,0,3392,3376,1,0,0,0,3392,3378,1,0,0,0,3392,3380,1,0,0,0,3392,3384,1,0,0,0,3392,3388,1,0,0,0,3393,541,1,0,0,0,3394,3397,3,540,270,0,3395,3397,5,316,0,0,3396,3394,1,0,0,0,3396,3395,1,0,0,0,3397,543,1,0,0,0,3398,3403,3,542,271,0,3399,3400,5,26,0,0,3400,3402,3,542,271,0,3401,3399,1,0,0,0,3402,3405,1,0,0,0,3403,3401,1,0,0,0,3403,3404,1,0,0,0,3404,3407,1,0,0,0,3405,3403,1,0,0,0,3406,3408,5,26,0,0,3407,3406,1,0,0,0,3407,3408,1,0,0,0,3408,3414,1,0,0,0,3409,3411,5,48,0,0,3410,3412,5,227,0,0,3411,3410,1,0,0,0,3411,3412,1,0,0,0,3412,3414,1,0,0,0,3413,3398,1,0,0,0,3413,3409,1,0,0,0,3414,545,1,0,0,0,3415,3416,5,87,0,0,3416,3417,5,59,0,0,3417,3418,5,241,0,0,3418,3419,3,582,291,0,3419,3420,5,140,0,0,3420,3425,3,548,274,0,3421,3422,5,26,0,0,3422,3424,3,548,274,0,3423,3421,1,0,0,0,3424,3427,1,0,0,0,3425,3423,1,0,0,0,3425,3426,1,0,0,0,3426,3428,1,0,0,0,3427,3425,1,0,0,0,3428,3429,5,312,0,0,3429,3430,5,27,0,0,3430,3431,3,550,275,0,3431,3432,5,28,0,0,3432,547,1,0,0,0,3433,3434,3,582,291,0,3434,3435,3,798,399,0,3435,549,1,0,0,0,3436,3441,3,552,276,0,3437,3438,5,26,0,0,3438,3440,3,552,276,0,3439,3437,1,0,0,0,3440,3443,1,0,0,0,3441,3439,1,0,0,0,3441,3442,1,0,0,0,3442,551,1,0,0,0,3443,3441,1,0,0,0,3444,3445,3,724,362,0,3445,3446,5,2,0,0,3446,3447,5,316,0,0,3447,553,1,0,0,0,3448,3449,5,49,0,0,3449,3450,5,59,0,0,3450,3451,5,241,0,0,3451,3452,3,582,291,0,3452,3457,3,556,278,0,3453,3454,5,26,0,0,3454,3456,3,556,278,0,3455,3453,1,0,0,0,3456,3459,1,0,0,0,3457,3455,1,0,0,0,3457,3458,1,0,0,0,3458,555,1,0,0,0,3459,3457,1,0,0,0,3460,3461,3,558,279,0,3461,557,1,0,0,0,3462,3463,5,264,0,0,3463,3464,5,27,0,0,3464,3465,3,550,275,0,3465,3466,5,28,0,0,3466,559,1,0,0,0,3467,3468,5,112,0,0,3468,3469,5,59,0,0,3469,3470,5,241,0,0,3470,3472,3,582,291,0,3471,3473,5,71,0,0,3472,3471,1,0,0,0,3472,3473,1,0,0,0,3473,561,1,0,0,0,3474,3479,3,146,73,0,3475,3476,5,26,0,0,3476,3478,3,146,73,0,3477,3475,1,0,0,0,3478,3481,1,0,0,0,3479,3477,1,0,0,0,3479,3480,1,0,0,0,3480,563,1,0,0,0,3481,3479,1,0,0,0,3482,3483,5,101,0,0,3483,3484,7,26,0,0,3484,3485,3,144,72,0,3485,3487,5,27,0,0,3486,3488,3,562,281,0,3487,3486,1,0,0,0,3487,3488,1,0,0,0,3488,3489,1,0,0,0,3489,3490,5,28,0,0,3490,3491,5,55,0,0,3491,3492,3,566,283,0,3492,3493,5,118,0,0,3493,3494,5,101,0,0,3494,565,1,0,0,0,3495,3497,5,24,0,0,3496,3495,1,0,0,0,3497,3500,1,0,0,0,3498,3496,1,0,0,0,3498,3499,1,0,0,0,3499,3519,1,0,0,0,3500,3498,1,0,0,0,3501,3510,3,12,6,0,3502,3504,5,24,0,0,3503,3502,1,0,0,0,3504,3505,1,0,0,0,3505,3503,1,0,0,0,3505,3506,1,0,0,0,3506,3507,1,0,0,0,3507,3509,3,12,6,0,3508,3503,1,0,0,0,3509,3512,1,0,0,0,3510,3508,1,0,0,0,3510,3511,1,0,0,0,3511,3516,1,0,0,0,3512,3510,1,0,0,0,3513,3515,5,24,0,0,3514,3513,1,0,0,0,3515,3518,1,0,0,0,3516,3514,1,0,0,0,3516,3517,1,0,0,0,3517,3520,1,0,0,0,3518,3516,1,0,0,0,3519,3501,1,0,0,0,3519,3520,1,0,0,0,3520,567,1,0,0,0,3521,3523,5,123,0,0,3522,3521,1,0,0,0,3522,3523,1,0,0,0,3523,3524,1,0,0,0,3524,3525,5,154,0,0,3525,3526,3,14,7,0,3526,3529,3,222,111,0,3527,3528,5,114,0,0,3528,3530,3,222,111,0,3529,3527,1,0,0,0,3529,3530,1,0,0,0,3530,569,1,0,0,0,3531,3533,5,123,0,0,3532,3531,1,0,0,0,3532,3533,1,0,0,0,3533,3535,1,0,0,0,3534,3536,5,214,0,0,3535,3534,1,0,0,0,3535,3536,1,0,0,0,3536,3537,1,0,0,0,3537,3538,5,140,0,0,3538,3539,3,144,72,0,3539,3540,5,159,0,0,3540,3541,3,14,7,0,3541,3544,3,222,111,0,3542,3543,5,114,0,0,3543,3545,3,222,111,0,3544,3542,1,0,0,0,3544,3545,1,0,0,0,3545,571,1,0,0,0,3546,3547,3,750,375,0,3547,3548,5,25,0,0,3548,3550,1,0,0,0,3549,3546,1,0,0,0,3549,3550,1,0,0,0,3550,3552,1,0,0,0,3551,3553,5,31,0,0,3552,3551,1,0,0,0,3552,3553,1,0,0,0,3553,3584,1,0,0,0,3554,3585,3,574,287,0,3555,3556,3,730,365,0,3556,3568,5,27,0,0,3557,3562,3,576,288,0,3558,3559,5,26,0,0,3559,3561,3,576,288,0,3560,3558,1,0,0,0,3561,3564,1,0,0,0,3562,3560,1,0,0,0,3562,3563,1,0,0,0,3563,3566,1,0,0,0,3564,3562,1,0,0,0,3565,3567,5,26,0,0,3566,3565,1,0,0,0,3566,3567,1,0,0,0,3567,3569,1,0,0,0,3568,3557,1,0,0,0,3568,3569,1,0,0,0,3569,3570,1,0,0,0,3570,3571,5,28,0,0,3571,3585,1,0,0,0,3572,3578,3,144,72,0,3573,3575,5,27,0,0,3574,3576,3,112,56,0,3575,3574,1,0,0,0,3575,3576,1,0,0,0,3576,3577,1,0,0,0,3577,3579,5,28,0,0,3578,3573,1,0,0,0,3578,3579,1,0,0,0,3579,3582,1,0,0,0,3580,3581,5,307,0,0,3581,3583,3,746,373,0,3582,3580,1,0,0,0,3582,3583,1,0,0,0,3583,3585,1,0,0,0,3584,3554,1,0,0,0,3584,3555,1,0,0,0,3584,3572,1,0,0,0,3585,3587,1,0,0,0,3586,3588,3,578,289,0,3587,3586,1,0,0,0,3587,3588,1,0,0,0,3588,573,1,0,0,0,3589,3592,3,758,379,0,3590,3591,5,307,0,0,3591,3593,3,746,373,0,3592,3590,1,0,0,0,3592,3593,1,0,0,0,3593,575,1,0,0,0,3594,3596,5,31,0,0,3595,3594,1,0,0,0,3595,3596,1,0,0,0,3596,3597,1,0,0,0,3597,3600,3,128,64,0,3598,3599,5,307,0,0,3599,3601,3,746,373,0,3600,3598,1,0,0,0,3600,3601,1,0,0,0,3601,577,1,0,0,0,3602,3615,5,312,0,0,3603,3616,3,580,290,0,3604,3605,5,27,0,0,3605,3610,3,580,290,0,3606,3607,5,26,0,0,3607,3609,3,580,290,0,3608,3606,1,0,0,0,3609,3612,1,0,0,0,3610,3608,1,0,0,0,3610,3611,1,0,0,0,3611,3613,1,0,0,0,3612,3610,1,0,0,0,3613,3614,5,28,0,0,3614,3616,1,0,0,0,3615,3603,1,0,0,0,3615,3604,1,0,0,0,3616,579,1,0,0,0,3617,3636,3,740,370,0,3618,3634,5,2,0,0,3619,3635,3,160,80,0,3620,3621,5,27,0,0,3621,3626,3,160,80,0,3622,3623,5,26,0,0,3623,3625,3,160,80,0,3624,3622,1,0,0,0,3625,3628,1,0,0,0,3626,3624,1,0,0,0,3626,3627,1,0,0,0,3627,3630,1,0,0,0,3628,3626,1,0,0,0,3629,3631,5,26,0,0,3630,3629,1,0,0,0,3630,3631,1,0,0,0,3631,3632,1,0,0,0,3632,3633,5,28,0,0,3633,3635,1,0,0,0,3634,3619,1,0,0,0,3634,3620,1,0,0,0,3635,3637,1,0,0,0,3636,3618,1,0,0,0,3636,3637,1,0,0,0,3637,3663,1,0,0,0,3638,3640,7,27,0,0,3639,3641,5,2,0,0,3640,3639,1,0,0,0,3640,3641,1,0,0,0,3641,3642,1,0,0,0,3642,3663,3,204,102,0,3643,3645,5,259,0,0,3644,3646,5,2,0,0,3645,3644,1,0,0,0,3645,3646,1,0,0,0,3646,3647,1,0,0,0,3647,3656,5,27,0,0,3648,3653,3,164,82,0,3649,3650,5,26,0,0,3650,3652,3,164,82,0,3651,3649,1,0,0,0,3652,3655,1,0,0,0,3653,3651,1,0,0,0,3653,3654,1,0,0,0,3654,3657,1,0,0,0,3655,3653,1,0,0,0,3656,3648,1,0,0,0,3656,3657,1,0,0,0,3657,3659,1,0,0,0,3658,3660,5,26,0,0,3659,3658,1,0,0,0,3659,3660,1,0,0,0,3660,3661,1,0,0,0,3661,3663,5,28,0,0,3662,3617,1,0,0,0,3662,3638,1,0,0,0,3662,3643,1,0,0,0,3663,581,1,0,0,0,3664,3665,3,750,375,0,3665,3666,5,25,0,0,3666,3668,1,0,0,0,3667,3664,1,0,0,0,3667,3668,1,0,0,0,3668,3669,1,0,0,0,3669,3670,3,756,378,0,3670,583,1,0,0,0,3671,3677,3,582,291,0,3672,3674,5,31,0,0,3673,3672,1,0,0,0,3673,3674,1,0,0,0,3674,3675,1,0,0,0,3675,3677,3,144,72,0,3676,3671,1,0,0,0,3676,3673,1,0,0,0,3677,585,1,0,0,0,3678,3680,3,584,292,0,3679,3681,3,578,289,0,3680,3679,1,0,0,0,3680,3681,1,0,0,0,3681,587,1,0,0,0,3682,3686,3,586,293,0,3683,3684,5,120,0,0,3684,3685,5,69,0,0,3685,3687,3,114,57,0,3686,3683,1,0,0,0,3686,3687,1,0,0,0,3687,589,1,0,0,0,3688,3689,5,102,0,0,3689,3690,5,142,0,0,3690,3694,3,586,293,0,3691,3695,3,800,400,0,3692,3693,5,204,0,0,3693,3695,3,368,184,0,3694,3691,1,0,0,0,3694,3692,1,0,0,0,3694,3695,1,0,0,0,3695,3697,1,0,0,0,3696,3698,3,362,181,0,3697,3696,1,0,0,0,3697,3698,1,0,0,0,3698,591,1,0,0,0,3699,3700,5,299,0,0,3700,3708,3,586,293,0,3701,3702,5,264,0,0,3702,3704,3,594,297,0,3703,3705,3,800,400,0,3704,3703,1,0,0,0,3704,3705,1,0,0,0,3705,3709,1,0,0,0,3706,3707,5,204,0,0,3707,3709,3,368,184,0,3708,3701,1,0,0,0,3708,3706,1,0,0,0,3709,3711,1,0,0,0,3710,3712,3,362,181,0,3711,3710,1,0,0,0,3711,3712,1,0,0,0,3712,593,1,0,0,0,3713,3716,3,596,298,0,3714,3716,3,602,301,0,3715,3713,1,0,0,0,3715,3714,1,0,0,0,3716,595,1,0,0,0,3717,3722,3,598,299,0,3718,3719,5,26,0,0,3719,3721,3,598,299,0,3720,3718,1,0,0,0,3721,3724,1,0,0,0,3722,3720,1,0,0,0,3722,3723,1,0,0,0,3723,597,1,0,0,0,3724,3722,1,0,0,0,3725,3726,3,600,300,0,3726,3727,5,2,0,0,3727,3728,3,14,7,0,3728,599,1,0,0,0,3729,3730,3,120,60,0,3730,601,1,0,0,0,3731,3732,3,604,302,0,3732,3733,5,2,0,0,3733,3734,5,27,0,0,3734,3735,3,378,189,0,3735,3736,5,28,0,0,3736,603,1,0,0,0,3737,3738,5,27,0,0,3738,3743,3,600,300,0,3739,3740,5,26,0,0,3740,3742,3,600,300,0,3741,3739,1,0,0,0,3742,3745,1,0,0,0,3743,3741,1,0,0,0,3743,3744,1,0,0,0,3744,3746,1,0,0,0,3745,3743,1,0,0,0,3746,3747,5,28,0,0,3747,605,1,0,0,0,3748,3749,5,87,0,0,3749,3750,5,287,0,0,3750,3752,3,652,326,0,3751,3753,3,608,304,0,3752,3751,1,0,0,0,3752,3753,1,0,0,0,3753,3755,1,0,0,0,3754,3756,3,612,306,0,3755,3754,1,0,0,0,3755,3756,1,0,0,0,3756,607,1,0,0,0,3757,3758,5,27,0,0,3758,3763,3,610,305,0,3759,3760,5,26,0,0,3760,3762,3,610,305,0,3761,3759,1,0,0,0,3762,3765,1,0,0,0,3763,3761,1,0,0,0,3763,3764,1,0,0,0,3764,3766,1,0,0,0,3765,3763,1,0,0,0,3766,3767,5,28,0,0,3767,609,1,0,0,0,3768,3769,3,620,310,0,3769,611,1,0,0,0,3770,3771,5,312,0,0,3771,3772,5,27,0,0,3772,3773,3,638,319,0,3773,3774,5,28,0,0,3774,613,1,0,0,0,3775,3776,5,49,0,0,3776,3777,5,287,0,0,3777,3778,3,652,326,0,3778,3783,3,616,308,0,3779,3780,5,26,0,0,3780,3782,3,616,308,0,3781,3779,1,0,0,0,3782,3785,1,0,0,0,3783,3781,1,0,0,0,3783,3784,1,0,0,0,3784,615,1,0,0,0,3785,3783,1,0,0,0,3786,3792,3,618,309,0,3787,3792,3,622,311,0,3788,3792,3,626,313,0,3789,3792,3,632,316,0,3790,3792,3,634,317,0,3791,3786,1,0,0,0,3791,3787,1,0,0,0,3791,3788,1,0,0,0,3791,3789,1,0,0,0,3791,3790,1,0,0,0,3792,617,1,0,0,0,3793,3794,5,46,0,0,3794,3795,3,620,310,0,3795,619,1,0,0,0,3796,3797,5,85,0,0,3797,3799,3,724,362,0,3798,3800,3,644,322,0,3799,3798,1,0,0,0,3799,3800,1,0,0,0,3800,621,1,0,0,0,3801,3802,5,49,0,0,3802,3803,5,85,0,0,3803,3804,3,654,327,0,3804,3805,3,624,312,0,3805,623,1,0,0,0,3806,3809,3,628,314,0,3807,3809,3,630,315,0,3808,3806,1,0,0,0,3808,3807,1,0,0,0,3809,625,1,0,0,0,3810,3811,5,112,0,0,3811,3812,5,85,0,0,3812,3813,3,654,327,0,3813,627,1,0,0,0,3814,3815,5,264,0,0,3815,3816,5,27,0,0,3816,3817,3,646,323,0,3817,3818,5,28,0,0,3818,629,1,0,0,0,3819,3820,5,242,0,0,3820,3821,5,27,0,0,3821,3826,3,724,362,0,3822,3823,5,26,0,0,3823,3825,3,724,362,0,3824,3822,1,0,0,0,3825,3828,1,0,0,0,3826,3824,1,0,0,0,3826,3827,1,0,0,0,3827,3829,1,0,0,0,3828,3826,1,0,0,0,3829,3830,5,28,0,0,3830,631,1,0,0,0,3831,3832,5,264,0,0,3832,3833,5,27,0,0,3833,3834,3,638,319,0,3834,3835,5,28,0,0,3835,633,1,0,0,0,3836,3837,5,242,0,0,3837,3838,5,27,0,0,3838,3843,3,724,362,0,3839,3840,5,26,0,0,3840,3842,3,742,371,0,3841,3839,1,0,0,0,3842,3845,1,0,0,0,3843,3841,1,0,0,0,3843,3844,1,0,0,0,3844,3846,1,0,0,0,3845,3843,1,0,0,0,3846,3847,5,28,0,0,3847,635,1,0,0,0,3848,3849,5,112,0,0,3849,3850,5,287,0,0,3850,3851,3,652,326,0,3851,637,1,0,0,0,3852,3857,3,640,320,0,3853,3854,5,26,0,0,3854,3856,3,640,320,0,3855,3853,1,0,0,0,3856,3859,1,0,0,0,3857,3855,1,0,0,0,3857,3858,1,0,0,0,3858,639,1,0,0,0,3859,3857,1,0,0,0,3860,3861,3,724,362,0,3861,3862,5,2,0,0,3862,3863,3,642,321,0,3863,641,1,0,0,0,3864,3865,3,14,7,0,3865,643,1,0,0,0,3866,3867,5,312,0,0,3867,3868,5,27,0,0,3868,3869,3,646,323,0,3869,3870,5,28,0,0,3870,645,1,0,0,0,3871,3876,3,648,324,0,3872,3873,5,26,0,0,3873,3875,3,648,324,0,3874,3872,1,0,0,0,3875,3878,1,0,0,0,3876,3874,1,0,0,0,3876,3877,1,0,0,0,3877,647,1,0,0,0,3878,3876,1,0,0,0,3879,3880,3,724,362,0,3880,3881,5,2,0,0,3881,3882,3,650,325,0,3882,649,1,0,0,0,3883,3884,3,14,7,0,3884,651,1,0,0,0,3885,3886,3,750,375,0,3886,3887,5,25,0,0,3887,3889,1,0,0,0,3888,3885,1,0,0,0,3888,3889,1,0,0,0,3889,3890,1,0,0,0,3890,3891,3,724,362,0,3891,653,1,0,0,0,3892,3893,3,742,371,0,3893,655,1,0,0,0,3894,3895,5,244,0,0,3895,3899,5,199,0,0,3896,3897,5,155,0,0,3897,3899,5,199,0,0,3898,3894,1,0,0,0,3898,3896,1,0,0,0,3899,657,1,0,0,0,3900,3901,5,135,0,0,3901,3902,5,27,0,0,3902,3903,3,800,400,0,3903,3904,5,28,0,0,3904,659,1,0,0,0,3905,3908,3,662,331,0,3906,3908,3,672,336,0,3907,3905,1,0,0,0,3907,3906,1,0,0,0,3908,661,1,0,0,0,3909,3910,3,734,367,0,3910,663,1,0,0,0,3911,3912,5,311,0,0,3912,3913,3,666,333,0,3913,665,1,0,0,0,3914,3919,3,668,334,0,3915,3916,5,26,0,0,3916,3918,3,668,334,0,3917,3915,1,0,0,0,3918,3921,1,0,0,0,3919,3917,1,0,0,0,3919,3920,1,0,0,0,3920,667,1,0,0,0,3921,3919,1,0,0,0,3922,3923,3,670,335,0,3923,3924,5,55,0,0,3924,3925,3,672,336,0,3925,669,1,0,0,0,3926,3927,3,662,331,0,3927,671,1,0,0,0,3928,3929,5,27,0,0,3929,3930,3,674,337,0,3930,3931,5,28,0,0,3931,673,1,0,0,0,3932,3934,3,676,338,0,3933,3932,1,0,0,0,3933,3934,1,0,0,0,3934,3936,1,0,0,0,3935,3937,3,678,339,0,3936,3935,1,0,0,0,3936,3937,1,0,0,0,3937,3939,1,0,0,0,3938,3940,3,680,340,0,3939,3938,1,0,0,0,3939,3940,1,0,0,0,3940,3942,1,0,0,0,3941,3943,3,682,341,0,3942,3941,1,0,0,0,3942,3943,1,0,0,0,3943,675,1,0,0,0,3944,3945,3,662,331,0,3945,677,1,0,0,0,3946,3948,5,215,0,0,3947,3949,5,80,0,0,3948,3947,1,0,0,0,3948,3949,1,0,0,0,3949,3950,1,0,0,0,3950,3951,5,69,0,0,3951,3952,3,130,65,0,3952,679,1,0,0,0,3953,3954,3,314,157,0,3954,681,1,0,0,0,3955,3956,3,684,342,0,3956,3958,3,686,343,0,3957,3959,3,692,346,0,3958,3957,1,0,0,0,3958,3959,1,0,0,0,3959,683,1,0,0,0,3960,3961,7,28,0,0,3961,685,1,0,0,0,3962,3965,3,690,345,0,3963,3965,3,688,344,0,3964,3962,1,0,0,0,3964,3963,1,0,0,0,3965,687,1,0,0,0,3966,3967,5,67,0,0,3967,3968,3,690,345,0,3968,3969,5,51,0,0,3969,3970,3,690,345,0,3970,689,1,0,0,0,3971,3972,5,90,0,0,3972,3979,5,255,0,0,3973,3976,3,14,7,0,3974,3976,5,293,0,0,3975,3973,1,0,0,0,3975,3974,1,0,0,0,3976,3977,1,0,0,0,3977,3979,7,29,0,0,3978,3971,1,0,0,0,3978,3975,1,0,0,0,3979,691,1,0,0,0,3980,3981,5,125,0,0,3981,3982,5,90,0,0,3982,3991,5,255,0,0,3983,3984,5,125,0,0,3984,3991,5,148,0,0,3985,3986,5,125,0,0,3986,3991,5,285,0,0,3987,3988,5,125,0,0,3988,3989,5,195,0,0,3989,3991,5,211,0,0,3990,3980,1,0,0,0,3990,3983,1,0,0,0,3990,3985,1,0,0,0,3990,3987,1,0,0,0,3991,693,1,0,0,0,3992,3993,5,301,0,0,3993,3994,3,750,375,0,3994,695,1,0,0,0,3995,3996,5,27,0,0,3996,3997,3,232,116,0,3997,3998,5,28,0,0,3998,4001,1,0,0,0,3999,4001,3,234,117,0,4e3,3995,1,0,0,0,4e3,3999,1,0,0,0,4001,697,1,0,0,0,4002,4003,3,148,74,0,4003,4006,5,2,0,0,4004,4007,3,14,7,0,4005,4007,3,696,348,0,4006,4004,1,0,0,0,4006,4005,1,0,0,0,4007,699,1,0,0,0,4008,4009,5,79,0,0,4009,701,1,0,0,0,4010,4011,5,253,0,0,4011,703,1,0,0,0,4012,4013,7,30,0,0,4013,705,1,0,0,0,4014,4017,3,704,352,0,4015,4017,3,762,381,0,4016,4014,1,0,0,0,4016,4015,1,0,0,0,4017,707,1,0,0,0,4018,4026,3,704,352,0,4019,4026,3,780,390,0,4020,4026,3,764,382,0,4021,4026,3,768,384,0,4022,4026,3,772,386,0,4023,4026,3,774,387,0,4024,4026,3,776,388,0,4025,4018,1,0,0,0,4025,4019,1,0,0,0,4025,4020,1,0,0,0,4025,4021,1,0,0,0,4025,4022,1,0,0,0,4025,4023,1,0,0,0,4025,4024,1,0,0,0,4026,709,1,0,0,0,4027,4034,3,704,352,0,4028,4034,3,780,390,0,4029,4034,3,770,385,0,4030,4034,3,772,386,0,4031,4034,3,774,387,0,4032,4034,3,776,388,0,4033,4027,1,0,0,0,4033,4028,1,0,0,0,4033,4029,1,0,0,0,4033,4030,1,0,0,0,4033,4031,1,0,0,0,4033,4032,1,0,0,0,4034,711,1,0,0,0,4035,4041,3,704,352,0,4036,4041,3,780,390,0,4037,4041,3,770,385,0,4038,4041,3,774,387,0,4039,4041,3,776,388,0,4040,4035,1,0,0,0,4040,4036,1,0,0,0,4040,4037,1,0,0,0,4040,4038,1,0,0,0,4040,4039,1,0,0,0,4041,713,1,0,0,0,4042,4051,3,704,352,0,4043,4051,3,780,390,0,4044,4051,3,764,382,0,4045,4051,3,766,383,0,4046,4051,3,768,384,0,4047,4051,3,770,385,0,4048,4051,3,772,386,0,4049,4051,3,776,388,0,4050,4042,1,0,0,0,4050,4043,1,0,0,0,4050,4044,1,0,0,0,4050,4045,1,0,0,0,4050,4046,1,0,0,0,4050,4047,1,0,0,0,4050,4048,1,0,0,0,4050,4049,1,0,0,0,4051,715,1,0,0,0,4052,4060,3,704,352,0,4053,4060,3,780,390,0,4054,4060,3,764,382,0,4055,4060,3,768,384,0,4056,4060,3,772,386,0,4057,4060,3,774,387,0,4058,4060,3,776,388,0,4059,4052,1,0,0,0,4059,4053,1,0,0,0,4059,4054,1,0,0,0,4059,4055,1,0,0,0,4059,4056,1,0,0,0,4059,4057,1,0,0,0,4059,4058,1,0,0,0,4060,717,1,0,0,0,4061,4069,3,704,352,0,4062,4069,3,780,390,0,4063,4069,3,766,383,0,4064,4069,3,770,385,0,4065,4069,3,772,386,0,4066,4069,3,774,387,0,4067,4069,3,776,388,0,4068,4061,1,0,0,0,4068,4062,1,0,0,0,4068,4063,1,0,0,0,4068,4064,1,0,0,0,4068,4065,1,0,0,0,4068,4066,1,0,0,0,4068,4067,1,0,0,0,4069,719,1,0,0,0,4070,4079,3,704,352,0,4071,4079,3,780,390,0,4072,4079,3,764,382,0,4073,4079,3,766,383,0,4074,4079,3,768,384,0,4075,4079,3,770,385,0,4076,4079,3,772,386,0,4077,4079,3,774,387,0,4078,4070,1,0,0,0,4078,4071,1,0,0,0,4078,4072,1,0,0,0,4078,4073,1,0,0,0,4078,4074,1,0,0,0,4078,4075,1,0,0,0,4078,4076,1,0,0,0,4078,4077,1,0,0,0,4079,721,1,0,0,0,4080,4083,3,704,352,0,4081,4083,3,778,389,0,4082,4080,1,0,0,0,4082,4081,1,0,0,0,4083,723,1,0,0,0,4084,4087,3,706,353,0,4085,4087,5,316,0,0,4086,4084,1,0,0,0,4086,4085,1,0,0,0,4087,725,1,0,0,0,4088,4091,3,752,376,0,4089,4091,5,316,0,0,4090,4088,1,0,0,0,4090,4089,1,0,0,0,4091,727,1,0,0,0,4092,4095,3,708,354,0,4093,4095,5,316,0,0,4094,4092,1,0,0,0,4094,4093,1,0,0,0,4095,729,1,0,0,0,4096,4099,3,710,355,0,4097,4099,5,316,0,0,4098,4096,1,0,0,0,4098,4097,1,0,0,0,4099,731,1,0,0,0,4100,4103,3,712,356,0,4101,4103,5,316,0,0,4102,4100,1,0,0,0,4102,4101,1,0,0,0,4103,733,1,0,0,0,4104,4107,3,714,357,0,4105,4107,5,316,0,0,4106,4104,1,0,0,0,4106,4105,1,0,0,0,4107,735,1,0,0,0,4108,4111,3,716,358,0,4109,4111,5,316,0,0,4110,4108,1,0,0,0,4110,4109,1,0,0,0,4111,737,1,0,0,0,4112,4115,3,718,359,0,4113,4115,5,316,0,0,4114,4112,1,0,0,0,4114,4113,1,0,0,0,4115,739,1,0,0,0,4116,4119,3,720,360,0,4117,4119,5,316,0,0,4118,4116,1,0,0,0,4118,4117,1,0,0,0,4119,741,1,0,0,0,4120,4123,3,704,352,0,4121,4123,5,316,0,0,4122,4120,1,0,0,0,4122,4121,1,0,0,0,4123,743,1,0,0,0,4124,4127,3,722,361,0,4125,4127,5,316,0,0,4126,4124,1,0,0,0,4126,4125,1,0,0,0,4127,745,1,0,0,0,4128,4132,3,724,362,0,4129,4130,5,226,0,0,4130,4132,5,176,0,0,4131,4128,1,0,0,0,4131,4129,1,0,0,0,4132,747,1,0,0,0,4133,4134,3,724,362,0,4134,4135,5,25,0,0,4135,4137,1,0,0,0,4136,4133,1,0,0,0,4136,4137,1,0,0,0,4137,749,1,0,0,0,4138,4139,3,724,362,0,4139,4140,5,30,0,0,4140,4142,1,0,0,0,4141,4138,1,0,0,0,4141,4142,1,0,0,0,4142,4145,1,0,0,0,4143,4146,3,116,58,0,4144,4146,5,20,0,0,4145,4143,1,0,0,0,4145,4144,1,0,0,0,4146,751,1,0,0,0,4147,4150,3,706,353,0,4148,4150,3,782,391,0,4149,4147,1,0,0,0,4149,4148,1,0,0,0,4150,753,1,0,0,0,4151,4152,3,726,363,0,4152,4153,5,25,0,0,4153,4155,1,0,0,0,4154,4151,1,0,0,0,4154,4155,1,0,0,0,4155,755,1,0,0,0,4156,4158,5,31,0,0,4157,4156,1,0,0,0,4157,4158,1,0,0,0,4158,4159,1,0,0,0,4159,4160,3,726,363,0,4160,757,1,0,0,0,4161,4164,3,736,368,0,4162,4164,3,782,391,0,4163,4161,1,0,0,0,4163,4162,1,0,0,0,4164,759,1,0,0,0,4165,4167,5,31,0,0,4166,4165,1,0,0,0,4166,4167,1,0,0,0,4167,4168,1,0,0,0,4168,4169,3,758,379,0,4169,761,1,0,0,0,4170,4179,3,780,390,0,4171,4179,3,764,382,0,4172,4179,3,766,383,0,4173,4179,3,768,384,0,4174,4179,3,770,385,0,4175,4179,3,772,386,0,4176,4179,3,774,387,0,4177,4179,3,776,388,0,4178,4170,1,0,0,0,4178,4171,1,0,0,0,4178,4172,1,0,0,0,4178,4173,1,0,0,0,4178,4174,1,0,0,0,4178,4175,1,0,0,0,4178,4176,1,0,0,0,4178,4177,1,0,0,0,4179,763,1,0,0,0,4180,4181,7,31,0,0,4181,765,1,0,0,0,4182,4183,7,32,0,0,4183,767,1,0,0,0,4184,4185,7,33,0,0,4185,769,1,0,0,0,4186,4187,5,77,0,0,4187,771,1,0,0,0,4188,4189,5,80,0,0,4189,773,1,0,0,0,4190,4191,7,28,0,0,4191,775,1,0,0,0,4192,4193,7,27,0,0,4193,777,1,0,0,0,4194,4195,7,34,0,0,4195,779,1,0,0,0,4196,4197,7,35,0,0,4197,781,1,0,0,0,4198,4199,7,36,0,0,4199,783,1,0,0,0,4200,4201,7,37,0,0,4201,785,1,0,0,0,4202,4203,5,321,0,0,4203,787,1,0,0,0,4204,4205,7,38,0,0,4205,789,1,0,0,0,4206,4212,3,792,396,0,4207,4208,5,223,0,0,4208,4209,5,52,0,0,4209,4210,5,319,0,0,4210,4212,3,4,2,0,4211,4206,1,0,0,0,4211,4207,1,0,0,0,4212,791,1,0,0,0,4213,4215,5,24,0,0,4214,4213,1,0,0,0,4215,4218,1,0,0,0,4216,4214,1,0,0,0,4216,4217,1,0,0,0,4217,4219,1,0,0,0,4218,4216,1,0,0,0,4219,4228,3,794,397,0,4220,4222,5,24,0,0,4221,4220,1,0,0,0,4222,4223,1,0,0,0,4223,4221,1,0,0,0,4223,4224,1,0,0,0,4224,4225,1,0,0,0,4225,4227,3,794,397,0,4226,4221,1,0,0,0,4227,4230,1,0,0,0,4228,4226,1,0,0,0,4228,4229,1,0,0,0,4229,4234,1,0,0,0,4230,4228,1,0,0,0,4231,4233,5,24,0,0,4232,4231,1,0,0,0,4233,4236,1,0,0,0,4234,4232,1,0,0,0,4234,4235,1,0,0,0,4235,4237,1,0,0,0,4236,4234,1,0,0,0,4237,4238,5,0,0,1,4238,793,1,0,0,0,4239,4242,5,129,0,0,4240,4241,5,1,0,0,4241,4243,5,222,0,0,4242,4240,1,0,0,0,4242,4243,1,0,0,0,4243,4245,1,0,0,0,4244,4239,1,0,0,0,4244,4245,1,0,0,0,4245,4246,1,0,0,0,4246,4247,3,796,398,0,4247,795,1,0,0,0,4248,4262,3,224,112,0,4249,4262,3,232,116,0,4250,4262,3,698,349,0,4251,4262,3,694,347,0,4252,4262,3,366,183,0,4253,4262,3,210,105,0,4254,4262,3,214,107,0,4255,4262,3,216,108,0,4256,4262,3,222,111,0,4257,4262,3,564,282,0,4258,4262,3,568,284,0,4259,4262,3,570,285,0,4260,4262,3,370,185,0,4261,4248,1,0,0,0,4261,4249,1,0,0,0,4261,4250,1,0,0,0,4261,4251,1,0,0,0,4261,4252,1,0,0,0,4261,4253,1,0,0,0,4261,4254,1,0,0,0,4261,4255,1,0,0,0,4261,4256,1,0,0,0,4261,4257,1,0,0,0,4261,4258,1,0,0,0,4261,4259,1,0,0,0,4261,4260,1,0,0,0,4262,797,1,0,0,0,4263,4264,5,55,0,0,4264,4265,3,582,291,0,4265,799,1,0,0,0,4266,4267,5,310,0,0,4267,4268,3,14,7,0,4268,801,1,0,0,0,4269,4270,5,142,0,0,4270,4271,3,338,169,0,4271,803,1,0,0,0,4272,4275,3,434,217,0,4273,4275,3,442,221,0,4274,4272,1,0,0,0,4274,4273,1,0,0,0,4275,805,1,0,0,0,476,811,816,823,828,834,842,850,857,861,869,874,879,881,929,936,940,947,955,960,964,970,976,979,983,991,995,998,1002,1013,1018,1020,1029,1050,1055,1064,1066,1073,1081,1089,1096,1106,1108,1110,1115,1119,1125,1131,1135,1139,1142,1149,1155,1159,1164,1167,1181,1186,1189,1203,1210,1221,1232,1252,1258,1263,1267,1281,1283,1290,1296,1307,1315,1321,1328,1336,1349,1355,1359,1362,1364,1372,1380,1386,1392,1398,1401,1410,1419,1426,1434,1447,1454,1458,1465,1469,1474,1481,1488,1491,1498,1502,1512,1535,1541,1545,1552,1558,1565,1569,1573,1579,1584,1593,1596,1602,1607,1615,1622,1644,1648,1650,1654,1663,1667,1669,1673,1682,1686,1724,1728,1748,1751,1757,1777,1782,1788,1793,1796,1800,1827,1835,1838,1845,1858,1862,1874,1887,1892,1899,1903,1910,1919,1928,1936,1940,1944,1951,1953,1956,1961,1966,1970,1977,1984,1988,1991,1995,1999,2001,2012,2021,2026,2032,2037,2040,2044,2048,2051,2055,2059,2067,2071,2075,2079,2082,2085,2089,2092,2095,2100,2103,2106,2109,2123,2125,2136,2146,2156,2159,2166,2190,2201,2207,2211,2215,2219,2223,2227,2231,2235,2241,2248,2258,2269,2282,2298,2308,2328,2334,2341,2348,2356,2365,2402,2404,2407,2412,2416,2420,2426,2432,2436,2441,2446,2448,2452,2457,2460,2462,2466,2477,2488,2499,2503,2507,2511,2514,2518,2521,2527,2536,2539,2553,2559,2572,2579,2584,2591,2598,2607,2612,2620,2635,2641,2649,2672,2679,2687,2708,2716,2724,2734,2743,2748,2755,2765,2770,2779,2783,2787,2790,2793,2796,2799,2807,2816,2833,2856,2874,2885,2893,2903,2908,2912,2918,2949,2961,2998,3006,3009,3013,3017,3027,3040,3053,3058,3075,3079,3083,3092,3103,3108,3112,3116,3119,3135,3150,3165,3168,3180,3183,3199,3205,3213,3223,3227,3235,3241,3247,3259,3263,3265,3277,3281,3286,3292,3299,3303,3307,3310,3323,3332,3336,3341,3347,3356,3365,3382,3386,3390,3392,3396,3403,3407,3411,3413,3425,3441,3457,3472,3479,3487,3498,3505,3510,3516,3519,3522,3529,3532,3535,3544,3549,3552,3562,3566,3568,3575,3578,3582,3584,3587,3592,3595,3600,3610,3615,3626,3630,3634,3636,3640,3645,3653,3656,3659,3662,3667,3673,3676,3680,3686,3694,3697,3704,3708,3711,3715,3722,3743,3752,3755,3763,3783,3791,3799,3808,3826,3843,3857,3876,3888,3898,3907,3919,3933,3936,3939,3942,3948,3958,3964,3975,3978,3990,4e3,4006,4016,4025,4033,4040,4050,4059,4068,4078,4082,4086,4090,4094,4098,4102,4106,4110,4114,4118,4122,4126,4131,4136,4141,4145,4149,4154,4157,4163,4166,4178,4211,4216,4223,4228,4234,4242,4244,4261,4274],ji.vocabulary=new Ra(ji.literalNames,ji.symbolicNames,[]),ji.decisionsToDFA=ji._ATN.decisionToState.map(((t,e)=>new ni(t,e))),ji),ef=class extends ga{constructor(t,e){super(t,e)}sql_stmt_list(){return this.getRuleContext(0,sf)}PRAGMA(){return this.getToken(tf.PRAGMA,0)}ANSI(){return this.getToken(tf.ANSI,0)}DIGITS(){return this.getToken(tf.DIGITS,0)}ansi_sql_stmt_list(){return this.getRuleContext(0,af)}get ruleIndex(){return tf.RULE_sql_query}accept(t){return t.visitSql_query?t.visitSql_query(this):t.visitChildren(this)}},sf=class extends ga{constructor(t,e){super(t,e)}sql_stmt(t){return void 0===t?this.getRuleContexts(nf):this.getRuleContext(t,nf)}EOF(){return this.getToken(tf.EOF,0)}SEMICOLON(t){return void 0===t?this.getTokens(tf.SEMICOLON):this.getToken(tf.SEMICOLON,t)}get ruleIndex(){return tf.RULE_sql_stmt_list}accept(t){return t.visitSql_stmt_list?t.visitSql_stmt_list(this):t.visitChildren(this)}},af=class extends ga{constructor(t,e){super(t,e)}EOF(){return this.getToken(tf.EOF,0)}SEMICOLON(t){return void 0===t?this.getTokens(tf.SEMICOLON):this.getToken(tf.SEMICOLON,t)}get ruleIndex(){return tf.RULE_ansi_sql_stmt_list}accept(t){return t.visitAnsi_sql_stmt_list?t.visitAnsi_sql_stmt_list(this):t.visitChildren(this)}},rf=class extends ga{constructor(t,e){super(t,e)}RETURN(){return this.getToken(tf.RETURN,0)}expr(){return this.getRuleContext(0,Ef)}SEMICOLON(t){return void 0===t?this.getTokens(tf.SEMICOLON):this.getToken(tf.SEMICOLON,t)}lambda_stmt(t){return void 0===t?this.getRuleContexts(cf):this.getRuleContext(t,cf)}get ruleIndex(){return tf.RULE_lambda_body}accept(t){return t.visitLambda_body?t.visitLambda_body(this):t.visitChildren(this)}},cf=class extends ga{constructor(t,e){super(t,e)}named_nodes_stmt(){return this.getRuleContext(0,mX)}import_stmt(){return this.getRuleContext(0,ew)}get ruleIndex(){return tf.RULE_lambda_stmt}accept(t){return t.visitLambda_stmt?t.visitLambda_stmt(this):t.visitChildren(this)}},nf=class extends ga{constructor(t,e){super(t,e)}sql_stmt_core(){return this.getRuleContext(0,hf)}EXPLAIN(){return this.getToken(tf.EXPLAIN,0)}QUERY(){return this.getToken(tf.QUERY,0)}PLAN(){return this.getToken(tf.PLAN,0)}get ruleIndex(){return tf.RULE_sql_stmt}accept(t){return t.visitSql_stmt?t.visitSql_stmt(this):t.visitChildren(this)}},hf=class extends ga{constructor(t,e){super(t,e)}pragma_stmt(){return this.getRuleContext(0,cw)}select_stmt(){return this.getRuleContext(0,Tw)}named_nodes_stmt(){return this.getRuleContext(0,mX)}create_table_stmt(){return this.getRuleContext(0,Zb)}drop_table_stmt(){return this.getRuleContext(0,KW)}use_stmt(){return this.getRuleContext(0,dX)}into_table_stmt(){return this.getRuleContext(0,_b)}commit_stmt(){return this.getRuleContext(0,DX)}update_stmt(){return this.getRuleContext(0,DV)}delete_stmt(){return this.getRuleContext(0,mV)}rollback_stmt(){return this.getRuleContext(0,pX)}declare_stmt(){return this.getRuleContext(0,$Y)}import_stmt(){return this.getRuleContext(0,ew)}export_stmt(){return this.getRuleContext(0,sw)}alter_table_stmt(){return this.getRuleContext(0,aW)}alter_external_table_stmt(){return this.getRuleContext(0,iW)}do_stmt(){return this.getRuleContext(0,iw)}define_action_or_subquery_stmt(){return this.getRuleContext(0,SV)}if_stmt(){return this.getRuleContext(0,OV)}for_stmt(){return this.getRuleContext(0,IV)}values_stmt(){return this.getRuleContext(0,db)}create_user_stmt(){return this.getRuleContext(0,QW)}alter_user_stmt(){return this.getRuleContext(0,JW)}create_group_stmt(){return this.getRuleContext(0,ZW)}alter_group_stmt(){return this.getRuleContext(0,qW)}drop_role_stmt(){return this.getRuleContext(0,jW)}create_object_stmt(){return this.getRuleContext(0,Bb)}alter_object_stmt(){return this.getRuleContext(0,fb)}drop_object_stmt(){return this.getRuleContext(0,wb)}create_external_data_source_stmt(){return this.getRuleContext(0,gb)}alter_external_data_source_stmt(){return this.getRuleContext(0,xb)}drop_external_data_source_stmt(){return this.getRuleContext(0,Hb)}create_replication_stmt(){return this.getRuleContext(0,iV)}drop_replication_stmt(){return this.getRuleContext(0,RV)}create_topic_stmt(){return this.getRuleContext(0,FV)}alter_topic_stmt(){return this.getRuleContext(0,fV)}drop_topic_stmt(){return this.getRuleContext(0,qV)}grant_permissions_stmt(){return this.getRuleContext(0,tV)}revoke_permissions_stmt(){return this.getRuleContext(0,eV)}alter_table_store_stmt(){return this.getRuleContext(0,nW)}upsert_object_stmt(){return this.getRuleContext(0,vb)}create_view_stmt(){return this.getRuleContext(0,Gb)}drop_view_stmt(){return this.getRuleContext(0,Fb)}alter_replication_stmt(){return this.getRuleContext(0,EV)}get ruleIndex(){return tf.RULE_sql_stmt_core}accept(t){return t.visitSql_stmt_core?t.visitSql_stmt_core(this):t.visitChildren(this)}},Ef=class extends ga{constructor(t,e){super(t,e)}or_subexpr(t){return void 0===t?this.getRuleContexts(Tf):this.getRuleContext(t,Tf)}OR(t){return void 0===t?this.getTokens(tf.OR):this.getToken(tf.OR,t)}type_name_composite(){return this.getRuleContext(0,JY)}get ruleIndex(){return tf.RULE_expr}accept(t){return t.visitExpr?t.visitExpr(this):t.visitChildren(this)}},Tf=class extends ga{constructor(t,e){super(t,e)}and_subexpr(t){return void 0===t?this.getRuleContexts(of):this.getRuleContext(t,of)}AND(t){return void 0===t?this.getTokens(tf.AND):this.getToken(tf.AND,t)}get ruleIndex(){return tf.RULE_or_subexpr}accept(t){return t.visitOr_subexpr?t.visitOr_subexpr(this):t.visitChildren(this)}},of=class extends ga{constructor(t,e){super(t,e)}xor_subexpr(t){return void 0===t?this.getRuleContexts(Rf):this.getRuleContext(t,Rf)}XOR(t){return void 0===t?this.getTokens(tf.XOR):this.getToken(tf.XOR,t)}get ruleIndex(){return tf.RULE_and_subexpr}accept(t){return t.visitAnd_subexpr?t.visitAnd_subexpr(this):t.visitChildren(this)}},Rf=class extends ga{constructor(t,e){super(t,e)}eq_subexpr(){return this.getRuleContext(0,Of)}cond_expr(){return this.getRuleContext(0,Sf)}get ruleIndex(){return tf.RULE_xor_subexpr}accept(t){return t.visitXor_subexpr?t.visitXor_subexpr(this):t.visitChildren(this)}},Af=class extends ga{constructor(t,e){super(t,e)}IS(){return this.getToken(tf.IS,0)}DISTINCT(){return this.getToken(tf.DISTINCT,0)}FROM(){return this.getToken(tf.FROM,0)}NOT(){return this.getToken(tf.NOT,0)}get ruleIndex(){return tf.RULE_distinct_from_op}accept(t){return t.visitDistinct_from_op?t.visitDistinct_from_op(this):t.visitChildren(this)}},Sf=class extends ga{constructor(t,e){super(t,e)}match_op(){return this.getRuleContext(0,lf)}eq_subexpr(t){return void 0===t?this.getRuleContexts(Of):this.getRuleContext(t,Of)}NOT(){return this.getToken(tf.NOT,0)}ESCAPE(){return this.getToken(tf.ESCAPE,0)}IN(){return this.getToken(tf.IN,0)}in_expr(){return this.getRuleContext(0,Wf)}COMPACT(){return this.getToken(tf.COMPACT,0)}ISNULL(){return this.getToken(tf.ISNULL,0)}NOTNULL(){return this.getToken(tf.NOTNULL,0)}IS(){return this.getToken(tf.IS,0)}NULL(){return this.getToken(tf.NULL,0)}BETWEEN(){return this.getToken(tf.BETWEEN,0)}AND(){return this.getToken(tf.AND,0)}SYMMETRIC(){return this.getToken(tf.SYMMETRIC,0)}ASYMMETRIC(){return this.getToken(tf.ASYMMETRIC,0)}EQUALS(t){return void 0===t?this.getTokens(tf.EQUALS):this.getToken(tf.EQUALS,t)}EQUALS2(t){return void 0===t?this.getTokens(tf.EQUALS2):this.getToken(tf.EQUALS2,t)}NOT_EQUALS(t){return void 0===t?this.getTokens(tf.NOT_EQUALS):this.getToken(tf.NOT_EQUALS,t)}NOT_EQUALS2(t){return void 0===t?this.getTokens(tf.NOT_EQUALS2):this.getToken(tf.NOT_EQUALS2,t)}distinct_from_op(t){return void 0===t?this.getRuleContexts(Af):this.getRuleContext(t,Af)}get ruleIndex(){return tf.RULE_cond_expr}accept(t){return t.visitCond_expr?t.visitCond_expr(this):t.visitChildren(this)}},lf=class extends ga{constructor(t,e){super(t,e)}LIKE(){return this.getToken(tf.LIKE,0)}ILIKE(){return this.getToken(tf.ILIKE,0)}GLOB(){return this.getToken(tf.GLOB,0)}REGEXP(){return this.getToken(tf.REGEXP,0)}RLIKE(){return this.getToken(tf.RLIKE,0)}MATCH(){return this.getToken(tf.MATCH,0)}get ruleIndex(){return tf.RULE_match_op}accept(t){return t.visitMatch_op?t.visitMatch_op(this):t.visitChildren(this)}},Of=class extends ga{constructor(t,e){super(t,e)}neq_subexpr(t){return void 0===t?this.getRuleContexts(Lf):this.getRuleContext(t,Lf)}LESS(t){return void 0===t?this.getTokens(tf.LESS):this.getToken(tf.LESS,t)}LESS_OR_EQ(t){return void 0===t?this.getTokens(tf.LESS_OR_EQ):this.getToken(tf.LESS_OR_EQ,t)}GREATER(t){return void 0===t?this.getTokens(tf.GREATER):this.getToken(tf.GREATER,t)}GREATER_OR_EQ(t){return void 0===t?this.getTokens(tf.GREATER_OR_EQ):this.getToken(tf.GREATER_OR_EQ,t)}get ruleIndex(){return tf.RULE_eq_subexpr}accept(t){return t.visitEq_subexpr?t.visitEq_subexpr(this):t.visitChildren(this)}},If=class extends ga{constructor(t,e){super(t,e)}GREATER(t){return void 0===t?this.getTokens(tf.GREATER):this.getToken(tf.GREATER,t)}get ruleIndex(){return tf.RULE_shift_right}accept(t){return t.visitShift_right?t.visitShift_right(this):t.visitChildren(this)}},uf=class extends ga{constructor(t,e){super(t,e)}GREATER(t){return void 0===t?this.getTokens(tf.GREATER):this.getToken(tf.GREATER,t)}PIPE(){return this.getToken(tf.PIPE,0)}get ruleIndex(){return tf.RULE_rot_right}accept(t){return t.visitRot_right?t.visitRot_right(this):t.visitChildren(this)}},Nf=class extends ga{constructor(t,e){super(t,e)}QUESTION(t){return void 0===t?this.getTokens(tf.QUESTION):this.getToken(tf.QUESTION,t)}get ruleIndex(){return tf.RULE_double_question}accept(t){return t.visitDouble_question?t.visitDouble_question(this):t.visitChildren(this)}},Lf=class t extends ga{constructor(t,e){super(t,e)}bit_subexpr(t){return void 0===t?this.getRuleContexts(Cf):this.getRuleContext(t,Cf)}SHIFT_LEFT(t){return void 0===t?this.getTokens(tf.SHIFT_LEFT):this.getToken(tf.SHIFT_LEFT,t)}shift_right(t){return void 0===t?this.getRuleContexts(If):this.getRuleContext(t,If)}ROT_LEFT(t){return void 0===t?this.getTokens(tf.ROT_LEFT):this.getToken(tf.ROT_LEFT,t)}rot_right(t){return void 0===t?this.getRuleContexts(uf):this.getRuleContext(t,uf)}AMPERSAND(t){return void 0===t?this.getTokens(tf.AMPERSAND):this.getToken(tf.AMPERSAND,t)}PIPE(t){return void 0===t?this.getTokens(tf.PIPE):this.getToken(tf.PIPE,t)}CARET(t){return void 0===t?this.getTokens(tf.CARET):this.getToken(tf.CARET,t)}double_question(){return this.getRuleContext(0,Nf)}neq_subexpr(){return this.getRuleContext(0,t)}QUESTION(t){return void 0===t?this.getTokens(tf.QUESTION):this.getToken(tf.QUESTION,t)}get ruleIndex(){return tf.RULE_neq_subexpr}accept(t){return t.visitNeq_subexpr?t.visitNeq_subexpr(this):t.visitChildren(this)}},Cf=class extends ga{constructor(t,e){super(t,e)}add_subexpr(t){return void 0===t?this.getRuleContexts(_f):this.getRuleContext(t,_f)}PLUS(t){return void 0===t?this.getTokens(tf.PLUS):this.getToken(tf.PLUS,t)}MINUS(t){return void 0===t?this.getTokens(tf.MINUS):this.getToken(tf.MINUS,t)}get ruleIndex(){return tf.RULE_bit_subexpr}accept(t){return t.visitBit_subexpr?t.visitBit_subexpr(this):t.visitChildren(this)}},_f=class extends ga{constructor(t,e){super(t,e)}mul_subexpr(t){return void 0===t?this.getRuleContexts(Pf):this.getRuleContext(t,Pf)}ASTERISK(t){return void 0===t?this.getTokens(tf.ASTERISK):this.getToken(tf.ASTERISK,t)}SLASH(t){return void 0===t?this.getTokens(tf.SLASH):this.getToken(tf.SLASH,t)}PERCENT(t){return void 0===t?this.getTokens(tf.PERCENT):this.getToken(tf.PERCENT,t)}get ruleIndex(){return tf.RULE_add_subexpr}accept(t){return t.visitAdd_subexpr?t.visitAdd_subexpr(this):t.visitChildren(this)}},Pf=class extends ga{constructor(t,e){super(t,e)}con_subexpr(t){return void 0===t?this.getRuleContexts(Mf):this.getRuleContext(t,Mf)}DOUBLE_PIPE(t){return void 0===t?this.getTokens(tf.DOUBLE_PIPE):this.getToken(tf.DOUBLE_PIPE,t)}get ruleIndex(){return tf.RULE_mul_subexpr}accept(t){return t.visitMul_subexpr?t.visitMul_subexpr(this):t.visitChildren(this)}},Mf=class extends ga{constructor(t,e){super(t,e)}unary_subexpr(){return this.getRuleContext(0,pf)}unary_op(){return this.getRuleContext(0,df)}get ruleIndex(){return tf.RULE_con_subexpr}accept(t){return t.visitCon_subexpr?t.visitCon_subexpr(this):t.visitChildren(this)}},df=class extends ga{constructor(t,e){super(t,e)}PLUS(){return this.getToken(tf.PLUS,0)}MINUS(){return this.getToken(tf.MINUS,0)}TILDA(){return this.getToken(tf.TILDA,0)}NOT(){return this.getToken(tf.NOT,0)}get ruleIndex(){return tf.RULE_unary_op}accept(t){return t.visitUnary_op?t.visitUnary_op(this):t.visitChildren(this)}},Uf=class extends ga{constructor(t,e){super(t,e)}key_expr(t){return void 0===t?this.getRuleContexts(IY):this.getRuleContext(t,IY)}invoke_expr(t){return void 0===t?this.getRuleContexts(SY):this.getRuleContext(t,SY)}COLLATE(){return this.getToken(tf.COLLATE,0)}an_id(){return this.getRuleContext(0,YX)}DOT(t){return void 0===t?this.getTokens(tf.DOT):this.getToken(tf.DOT,t)}bind_parameter(t){return void 0===t?this.getRuleContexts(LY):this.getRuleContext(t,LY)}DIGITS(t){return void 0===t?this.getTokens(tf.DIGITS):this.getToken(tf.DIGITS,t)}an_id_or_type(t){return void 0===t?this.getRuleContexts(wX):this.getRuleContext(t,wX)}get ruleIndex(){return tf.RULE_unary_subexpr_suffix}accept(t){return t.visitUnary_subexpr_suffix?t.visitUnary_subexpr_suffix(this):t.visitChildren(this)}},mf=class extends ga{constructor(t,e){super(t,e)}unary_subexpr_suffix(){return this.getRuleContext(0,Uf)}id_expr(){return this.getRuleContext(0,HX)}atom_expr(){return this.getRuleContext(0,vf)}get ruleIndex(){return tf.RULE_unary_casual_subexpr}accept(t){return t.visitUnary_casual_subexpr?t.visitUnary_casual_subexpr(this):t.visitChildren(this)}},Df=class extends ga{constructor(t,e){super(t,e)}unary_subexpr_suffix(){return this.getRuleContext(0,Uf)}id_expr_in(){return this.getRuleContext(0,GX)}in_atom_expr(){return this.getRuleContext(0,Bf)}get ruleIndex(){return tf.RULE_in_unary_casual_subexpr}accept(t){return t.visitIn_unary_casual_subexpr?t.visitIn_unary_casual_subexpr(this):t.visitChildren(this)}},pf=class extends ga{constructor(t,e){super(t,e)}unary_casual_subexpr(){return this.getRuleContext(0,mf)}json_api_expr(){return this.getRuleContext(0,Vf)}get ruleIndex(){return tf.RULE_unary_subexpr}accept(t){return t.visitUnary_subexpr?t.visitUnary_subexpr(this):t.visitChildren(this)}},gf=class extends ga{constructor(t,e){super(t,e)}in_unary_casual_subexpr(){return this.getRuleContext(0,Df)}json_api_expr(){return this.getRuleContext(0,Vf)}get ruleIndex(){return tf.RULE_in_unary_subexpr}accept(t){return t.visitIn_unary_subexpr?t.visitIn_unary_subexpr(this):t.visitChildren(this)}},xf=class extends ga{constructor(t,e){super(t,e)}LBRACE_SQUARE(){return this.getToken(tf.LBRACE_SQUARE,0)}RBRACE_SQUARE(){return this.getToken(tf.RBRACE_SQUARE,0)}expr_list(){return this.getRuleContext(0,rY)}COMMA(){return this.getToken(tf.COMMA,0)}get ruleIndex(){return tf.RULE_list_literal}accept(t){return t.visitList_literal?t.visitList_literal(this):t.visitChildren(this)}},kf=class extends ga{constructor(t,e){super(t,e)}expr(t){return void 0===t?this.getRuleContexts(Ef):this.getRuleContext(t,Ef)}COLON(t){return void 0===t?this.getTokens(tf.COLON):this.getToken(tf.COLON,t)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_expr_dict_list}accept(t){return t.visitExpr_dict_list?t.visitExpr_dict_list(this):t.visitChildren(this)}},Hf=class extends ga{constructor(t,e){super(t,e)}LBRACE_CURLY(){return this.getToken(tf.LBRACE_CURLY,0)}RBRACE_CURLY(){return this.getToken(tf.RBRACE_CURLY,0)}expr_dict_list(){return this.getRuleContext(0,kf)}COMMA(){return this.getToken(tf.COMMA,0)}get ruleIndex(){return tf.RULE_dict_literal}accept(t){return t.visitDict_literal?t.visitDict_literal(this):t.visitChildren(this)}},Gf=class extends ga{constructor(t,e){super(t,e)}expr(t){return void 0===t?this.getRuleContexts(Ef):this.getRuleContext(t,Ef)}COLON(t){return void 0===t?this.getTokens(tf.COLON):this.getToken(tf.COLON,t)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_expr_struct_list}accept(t){return t.visitExpr_struct_list?t.visitExpr_struct_list(this):t.visitChildren(this)}},Ff=class extends ga{constructor(t,e){super(t,e)}STRUCT_OPEN(){return this.getToken(tf.STRUCT_OPEN,0)}STRUCT_CLOSE(){return this.getToken(tf.STRUCT_CLOSE,0)}expr_struct_list(){return this.getRuleContext(0,Gf)}COMMA(){return this.getToken(tf.COMMA,0)}get ruleIndex(){return tf.RULE_struct_literal}accept(t){return t.visitStruct_literal?t.visitStruct_literal(this):t.visitChildren(this)}},vf=class extends ga{constructor(t,e){super(t,e)}literal_value(){return this.getRuleContext(0,NY)}bind_parameter(){return this.getRuleContext(0,LY)}lambda(){return this.getRuleContext(0,bf)}cast_expr(){return this.getRuleContext(0,yf)}exists_expr(){return this.getRuleContext(0,Yf)}case_expr(){return this.getRuleContext(0,wf)}an_id_or_type(){return this.getRuleContext(0,wX)}NAMESPACE(){return this.getToken(tf.NAMESPACE,0)}id_or_type(){return this.getRuleContext(0,tK)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}value_constructor(){return this.getRuleContext(0,zY)}bitcast_expr(){return this.getRuleContext(0,ff)}list_literal(){return this.getRuleContext(0,xf)}dict_literal(){return this.getRuleContext(0,Hf)}struct_literal(){return this.getRuleContext(0,Ff)}get ruleIndex(){return tf.RULE_atom_expr}accept(t){return t.visitAtom_expr?t.visitAtom_expr(this):t.visitChildren(this)}},Bf=class extends ga{constructor(t,e){super(t,e)}literal_value(){return this.getRuleContext(0,NY)}bind_parameter(){return this.getRuleContext(0,LY)}lambda(){return this.getRuleContext(0,bf)}cast_expr(){return this.getRuleContext(0,yf)}case_expr(){return this.getRuleContext(0,wf)}an_id_or_type(){return this.getRuleContext(0,wX)}NAMESPACE(){return this.getToken(tf.NAMESPACE,0)}id_or_type(){return this.getRuleContext(0,tK)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}select_stmt(){return this.getRuleContext(0,Tw)}RPAREN(){return this.getToken(tf.RPAREN,0)}value_constructor(){return this.getRuleContext(0,zY)}bitcast_expr(){return this.getRuleContext(0,ff)}list_literal(){return this.getRuleContext(0,xf)}dict_literal(){return this.getRuleContext(0,Hf)}struct_literal(){return this.getRuleContext(0,Ff)}get ruleIndex(){return tf.RULE_in_atom_expr}accept(t){return t.visitIn_atom_expr?t.visitIn_atom_expr(this):t.visitChildren(this)}},yf=class extends ga{constructor(t,e){super(t,e)}CAST(){return this.getToken(tf.CAST,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}expr(){return this.getRuleContext(0,Ef)}AS(){return this.getToken(tf.AS,0)}type_name_or_bind(){return this.getRuleContext(0,qY)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_cast_expr}accept(t){return t.visitCast_expr?t.visitCast_expr(this):t.visitChildren(this)}},ff=class extends ga{constructor(t,e){super(t,e)}BITCAST(){return this.getToken(tf.BITCAST,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}expr(){return this.getRuleContext(0,Ef)}AS(){return this.getToken(tf.AS,0)}type_name_simple(){return this.getRuleContext(0,UY)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_bitcast_expr}accept(t){return t.visitBitcast_expr?t.visitBitcast_expr(this):t.visitChildren(this)}},Yf=class extends ga{constructor(t,e){super(t,e)}EXISTS(){return this.getToken(tf.EXISTS,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}select_stmt(){return this.getRuleContext(0,Tw)}values_stmt(){return this.getRuleContext(0,db)}get ruleIndex(){return tf.RULE_exists_expr}accept(t){return t.visitExists_expr?t.visitExists_expr(this):t.visitChildren(this)}},wf=class extends ga{constructor(t,e){super(t,e)}CASE(){return this.getToken(tf.CASE,0)}END(){return this.getToken(tf.END,0)}expr(t){return void 0===t?this.getRuleContexts(Ef):this.getRuleContext(t,Ef)}when_expr(t){return void 0===t?this.getRuleContexts(uY):this.getRuleContext(t,uY)}ELSE(){return this.getToken(tf.ELSE,0)}get ruleIndex(){return tf.RULE_case_expr}accept(t){return t.visitCase_expr?t.visitCase_expr(this):t.visitChildren(this)}},bf=class extends ga{constructor(t,e){super(t,e)}smart_parenthesis(){return this.getRuleContext(0,aY)}ARROW(){return this.getToken(tf.ARROW,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}expr(){return this.getRuleContext(0,Ef)}RPAREN(){return this.getToken(tf.RPAREN,0)}LBRACE_CURLY(){return this.getToken(tf.LBRACE_CURLY,0)}lambda_body(){return this.getRuleContext(0,rf)}RBRACE_CURLY(){return this.getToken(tf.RBRACE_CURLY,0)}get ruleIndex(){return tf.RULE_lambda}accept(t){return t.visitLambda?t.visitLambda(this):t.visitChildren(this)}},Wf=class extends ga{constructor(t,e){super(t,e)}in_unary_subexpr(){return this.getRuleContext(0,gf)}get ruleIndex(){return tf.RULE_in_expr}accept(t){return t.visitIn_expr?t.visitIn_expr(this):t.visitChildren(this)}},Vf=class extends ga{constructor(t,e){super(t,e)}json_value(){return this.getRuleContext(0,jf)}json_exists(){return this.getRuleContext(0,$f)}json_query(){return this.getRuleContext(0,sY)}get ruleIndex(){return tf.RULE_json_api_expr}accept(t){return t.visitJson_api_expr?t.visitJson_api_expr(this):t.visitChildren(this)}},Xf=class extends ga{constructor(t,e){super(t,e)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_jsonpath_spec}accept(t){return t.visitJsonpath_spec?t.visitJsonpath_spec(this):t.visitChildren(this)}},Kf=class extends ga{constructor(t,e){super(t,e)}id_expr(){return this.getRuleContext(0,HX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_json_variable_name}accept(t){return t.visitJson_variable_name?t.visitJson_variable_name(this):t.visitChildren(this)}},Qf=class extends ga{constructor(t,e){super(t,e)}expr(){return this.getRuleContext(0,Ef)}AS(){return this.getToken(tf.AS,0)}json_variable_name(){return this.getRuleContext(0,Kf)}get ruleIndex(){return tf.RULE_json_variable}accept(t){return t.visitJson_variable?t.visitJson_variable(this):t.visitChildren(this)}},Jf=class extends ga{constructor(t,e){super(t,e)}json_variable(t){return void 0===t?this.getRuleContexts(Qf):this.getRuleContext(t,Qf)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_json_variables}accept(t){return t.visitJson_variables?t.visitJson_variables(this):t.visitChildren(this)}},Zf=class extends ga{constructor(t,e){super(t,e)}expr(){return this.getRuleContext(0,Ef)}COMMA(){return this.getToken(tf.COMMA,0)}jsonpath_spec(){return this.getRuleContext(0,Xf)}PASSING(){return this.getToken(tf.PASSING,0)}json_variables(){return this.getRuleContext(0,Jf)}get ruleIndex(){return tf.RULE_json_common_args}accept(t){return t.visitJson_common_args?t.visitJson_common_args(this):t.visitChildren(this)}},qf=class extends ga{constructor(t,e){super(t,e)}ERROR(){return this.getToken(tf.ERROR,0)}NULL(){return this.getToken(tf.NULL,0)}DEFAULT(){return this.getToken(tf.DEFAULT,0)}expr(){return this.getRuleContext(0,Ef)}get ruleIndex(){return tf.RULE_json_case_handler}accept(t){return t.visitJson_case_handler?t.visitJson_case_handler(this):t.visitChildren(this)}},jf=class extends ga{constructor(t,e){super(t,e)}JSON_VALUE(){return this.getToken(tf.JSON_VALUE,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}json_common_args(){return this.getRuleContext(0,Zf)}RPAREN(){return this.getToken(tf.RPAREN,0)}RETURNING(){return this.getToken(tf.RETURNING,0)}type_name_simple(){return this.getRuleContext(0,UY)}json_case_handler(t){return void 0===t?this.getRuleContexts(qf):this.getRuleContext(t,qf)}ON(t){return void 0===t?this.getTokens(tf.ON):this.getToken(tf.ON,t)}EMPTY(t){return void 0===t?this.getTokens(tf.EMPTY):this.getToken(tf.EMPTY,t)}ERROR(t){return void 0===t?this.getTokens(tf.ERROR):this.getToken(tf.ERROR,t)}get ruleIndex(){return tf.RULE_json_value}accept(t){return t.visitJson_value?t.visitJson_value(this):t.visitChildren(this)}},zf=class extends ga{constructor(t,e){super(t,e)}ON(){return this.getToken(tf.ON,0)}ERROR(t){return void 0===t?this.getTokens(tf.ERROR):this.getToken(tf.ERROR,t)}TRUE(){return this.getToken(tf.TRUE,0)}FALSE(){return this.getToken(tf.FALSE,0)}UNKNOWN(){return this.getToken(tf.UNKNOWN,0)}get ruleIndex(){return tf.RULE_json_exists_handler}accept(t){return t.visitJson_exists_handler?t.visitJson_exists_handler(this):t.visitChildren(this)}},$f=class extends ga{constructor(t,e){super(t,e)}JSON_EXISTS(){return this.getToken(tf.JSON_EXISTS,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}json_common_args(){return this.getRuleContext(0,Zf)}RPAREN(){return this.getToken(tf.RPAREN,0)}json_exists_handler(){return this.getRuleContext(0,zf)}get ruleIndex(){return tf.RULE_json_exists}accept(t){return t.visitJson_exists?t.visitJson_exists(this):t.visitChildren(this)}},tY=class extends ga{constructor(t,e){super(t,e)}WITHOUT(){return this.getToken(tf.WITHOUT,0)}ARRAY(){return this.getToken(tf.ARRAY,0)}WITH(){return this.getToken(tf.WITH,0)}CONDITIONAL(){return this.getToken(tf.CONDITIONAL,0)}UNCONDITIONAL(){return this.getToken(tf.UNCONDITIONAL,0)}get ruleIndex(){return tf.RULE_json_query_wrapper}accept(t){return t.visitJson_query_wrapper?t.visitJson_query_wrapper(this):t.visitChildren(this)}},eY=class extends ga{constructor(t,e){super(t,e)}ERROR(){return this.getToken(tf.ERROR,0)}NULL(){return this.getToken(tf.NULL,0)}EMPTY(){return this.getToken(tf.EMPTY,0)}ARRAY(){return this.getToken(tf.ARRAY,0)}OBJECT(){return this.getToken(tf.OBJECT,0)}get ruleIndex(){return tf.RULE_json_query_handler}accept(t){return t.visitJson_query_handler?t.visitJson_query_handler(this):t.visitChildren(this)}},sY=class extends ga{constructor(t,e){super(t,e)}JSON_QUERY(){return this.getToken(tf.JSON_QUERY,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}json_common_args(){return this.getRuleContext(0,Zf)}RPAREN(){return this.getToken(tf.RPAREN,0)}json_query_wrapper(){return this.getRuleContext(0,tY)}WRAPPER(){return this.getToken(tf.WRAPPER,0)}json_query_handler(t){return void 0===t?this.getRuleContexts(eY):this.getRuleContext(t,eY)}ON(t){return void 0===t?this.getTokens(tf.ON):this.getToken(tf.ON,t)}EMPTY(){return this.getToken(tf.EMPTY,0)}ERROR(){return this.getToken(tf.ERROR,0)}get ruleIndex(){return tf.RULE_json_query}accept(t){return t.visitJson_query?t.visitJson_query(this):t.visitChildren(this)}},aY=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}named_expr_list(){return this.getRuleContext(0,AY)}COMMA(){return this.getToken(tf.COMMA,0)}get ruleIndex(){return tf.RULE_smart_parenthesis}accept(t){return t.visitSmart_parenthesis?t.visitSmart_parenthesis(this):t.visitChildren(this)}},rY=class extends ga{constructor(t,e){super(t,e)}expr(t){return void 0===t?this.getRuleContexts(Ef):this.getRuleContext(t,Ef)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_expr_list}accept(t){return t.visitExpr_list?t.visitExpr_list(this):t.visitChildren(this)}},iY=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}an_id(t){return void 0===t?this.getRuleContexts(YX):this.getRuleContext(t,YX)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_pure_column_list}accept(t){return t.visitPure_column_list?t.visitPure_column_list(this):t.visitChildren(this)}},cY=class extends ga{constructor(t,e){super(t,e)}bind_parameter(){return this.getRuleContext(0,LY)}an_id(){return this.getRuleContext(0,YX)}get ruleIndex(){return tf.RULE_pure_column_or_named}accept(t){return t.visitPure_column_or_named?t.visitPure_column_or_named(this):t.visitChildren(this)}},nY=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}pure_column_or_named(t){return void 0===t?this.getRuleContexts(cY):this.getRuleContext(t,cY)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_pure_column_or_named_list}accept(t){return t.visitPure_column_or_named_list?t.visitPure_column_or_named_list(this):t.visitChildren(this)}},hY=class extends ga{constructor(t,e){super(t,e)}opt_id_prefix(){return this.getRuleContext(0,zX)}an_id(){return this.getRuleContext(0,YX)}get ruleIndex(){return tf.RULE_column_name}accept(t){return t.visitColumn_name?t.visitColumn_name(this):t.visitChildren(this)}},EY=class extends ga{constructor(t,e){super(t,e)}an_id(t){return void 0===t?this.getRuleContexts(YX):this.getRuleContext(t,YX)}DOT(){return this.getToken(tf.DOT,0)}an_id_without(){return this.getRuleContext(0,QX)}get ruleIndex(){return tf.RULE_without_column_name}accept(t){return t.visitWithout_column_name?t.visitWithout_column_name(this):t.visitChildren(this)}},TY=class extends ga{constructor(t,e){super(t,e)}column_name(t){return void 0===t?this.getRuleContexts(hY):this.getRuleContext(t,hY)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_column_list}accept(t){return t.visitColumn_list?t.visitColumn_list(this):t.visitChildren(this)}},oY=class extends ga{constructor(t,e){super(t,e)}without_column_name(t){return void 0===t?this.getRuleContexts(EY):this.getRuleContext(t,EY)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_without_column_list}accept(t){return t.visitWithout_column_list?t.visitWithout_column_list(this):t.visitChildren(this)}},RY=class extends ga{constructor(t,e){super(t,e)}expr(){return this.getRuleContext(0,Ef)}AS(){return this.getToken(tf.AS,0)}an_id_or_type(){return this.getRuleContext(0,wX)}get ruleIndex(){return tf.RULE_named_expr}accept(t){return t.visitNamed_expr?t.visitNamed_expr(this):t.visitChildren(this)}},AY=class extends ga{constructor(t,e){super(t,e)}named_expr(t){return void 0===t?this.getRuleContexts(RY):this.getRuleContext(t,RY)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_named_expr_list}accept(t){return t.visitNamed_expr_list?t.visitNamed_expr_list(this):t.visitChildren(this)}},SY=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}invoke_expr_tail(){return this.getRuleContext(0,lY)}opt_set_quantifier(){return this.getRuleContext(0,Lw)}named_expr_list(){return this.getRuleContext(0,AY)}ASTERISK(){return this.getToken(tf.ASTERISK,0)}COMMA(){return this.getToken(tf.COMMA,0)}get ruleIndex(){return tf.RULE_invoke_expr}accept(t){return t.visitInvoke_expr?t.visitInvoke_expr(this):t.visitChildren(this)}},lY=class extends ga{constructor(t,e){super(t,e)}null_treatment(){return this.getRuleContext(0,cX)}filter_clause(){return this.getRuleContext(0,nX)}OVER(){return this.getToken(tf.OVER,0)}window_name_or_specification(){return this.getRuleContext(0,hX)}get ruleIndex(){return tf.RULE_invoke_expr_tail}accept(t){return t.visitInvoke_expr_tail?t.visitInvoke_expr_tail(this):t.visitChildren(this)}},OY=class extends ga{constructor(t,e){super(t,e)}invoke_expr(){return this.getRuleContext(0,SY)}an_id_expr(){return this.getRuleContext(0,WX)}bind_parameter(){return this.getRuleContext(0,LY)}an_id_or_type(t){return void 0===t?this.getRuleContexts(wX):this.getRuleContext(t,wX)}NAMESPACE(){return this.getToken(tf.NAMESPACE,0)}EXTERNAL(){return this.getToken(tf.EXTERNAL,0)}FUNCTION(){return this.getToken(tf.FUNCTION,0)}get ruleIndex(){return tf.RULE_using_call_expr}accept(t){return t.visitUsing_call_expr?t.visitUsing_call_expr(this):t.visitChildren(this)}},IY=class extends ga{constructor(t,e){super(t,e)}LBRACE_SQUARE(){return this.getToken(tf.LBRACE_SQUARE,0)}expr(){return this.getRuleContext(0,Ef)}RBRACE_SQUARE(){return this.getToken(tf.RBRACE_SQUARE,0)}get ruleIndex(){return tf.RULE_key_expr}accept(t){return t.visitKey_expr?t.visitKey_expr(this):t.visitChildren(this)}},uY=class extends ga{constructor(t,e){super(t,e)}WHEN(){return this.getToken(tf.WHEN,0)}expr(t){return void 0===t?this.getRuleContexts(Ef):this.getRuleContext(t,Ef)}THEN(){return this.getToken(tf.THEN,0)}get ruleIndex(){return tf.RULE_when_expr}accept(t){return t.visitWhen_expr?t.visitWhen_expr(this):t.visitChildren(this)}},NY=class extends ga{constructor(t,e){super(t,e)}integer(){return this.getRuleContext(0,uK)}real(){return this.getRuleContext(0,IK)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}BLOB(){return this.getToken(tf.BLOB,0)}NULL(){return this.getToken(tf.NULL,0)}CURRENT_TIME(){return this.getToken(tf.CURRENT_TIME,0)}CURRENT_DATE(){return this.getToken(tf.CURRENT_DATE,0)}CURRENT_TIMESTAMP(){return this.getToken(tf.CURRENT_TIMESTAMP,0)}bool_value(){return this.getRuleContext(0,OK)}EMPTY_ACTION(){return this.getToken(tf.EMPTY_ACTION,0)}get ruleIndex(){return tf.RULE_literal_value}accept(t){return t.visitLiteral_value?t.visitLiteral_value(this):t.visitChildren(this)}},LY=class extends ga{constructor(t,e){super(t,e)}DOLLAR(){return this.getToken(tf.DOLLAR,0)}an_id_or_type(){return this.getRuleContext(0,wX)}TRUE(){return this.getToken(tf.TRUE,0)}FALSE(){return this.getToken(tf.FALSE,0)}get ruleIndex(){return tf.RULE_bind_parameter}accept(t){return t.visitBind_parameter?t.visitBind_parameter(this):t.visitChildren(this)}},CY=class extends ga{constructor(t,e){super(t,e)}bind_parameter(){return this.getRuleContext(0,LY)}QUESTION(){return this.getToken(tf.QUESTION,0)}get ruleIndex(){return tf.RULE_opt_bind_parameter}accept(t){return t.visitOpt_bind_parameter?t.visitOpt_bind_parameter(this):t.visitChildren(this)}},_Y=class extends ga{constructor(t,e){super(t,e)}bind_parameter(t){return void 0===t?this.getRuleContexts(LY):this.getRuleContext(t,LY)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_bind_parameter_list}accept(t){return t.visitBind_parameter_list?t.visitBind_parameter_list(this):t.visitChildren(this)}},PY=class extends ga{constructor(t,e){super(t,e)}bind_parameter(t){return void 0===t?this.getRuleContexts(LY):this.getRuleContext(t,LY)}AS(){return this.getToken(tf.AS,0)}get ruleIndex(){return tf.RULE_named_bind_parameter}accept(t){return t.visitNamed_bind_parameter?t.visitNamed_bind_parameter(this):t.visitChildren(this)}},MY=class extends ga{constructor(t,e){super(t,e)}named_bind_parameter(t){return void 0===t?this.getRuleContexts(PY):this.getRuleContext(t,PY)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_named_bind_parameter_list}accept(t){return t.visitNamed_bind_parameter_list?t.visitNamed_bind_parameter_list(this):t.visitChildren(this)}},dY=class extends ga{constructor(t,e){super(t,e)}integer(){return this.getRuleContext(0,uK)}real(){return this.getRuleContext(0,IK)}PLUS(){return this.getToken(tf.PLUS,0)}MINUS(){return this.getToken(tf.MINUS,0)}get ruleIndex(){return tf.RULE_signed_number}accept(t){return t.visitSigned_number?t.visitSigned_number(this):t.visitChildren(this)}},UY=class extends ga{constructor(t,e){super(t,e)}an_id_pure(){return this.getRuleContext(0,ZX)}get ruleIndex(){return tf.RULE_type_name_simple}accept(t){return t.visitType_name_simple?t.visitType_name_simple(this):t.visitChildren(this)}},mY=class extends ga{constructor(t,e){super(t,e)}integer(){return this.getRuleContext(0,uK)}bind_parameter(){return this.getRuleContext(0,LY)}get ruleIndex(){return tf.RULE_integer_or_bind}accept(t){return t.visitInteger_or_bind?t.visitInteger_or_bind(this):t.visitChildren(this)}},DY=class extends ga{constructor(t,e){super(t,e)}id(){return this.getRuleContext(0,xX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}bind_parameter(){return this.getRuleContext(0,LY)}get ruleIndex(){return tf.RULE_type_name_tag}accept(t){return t.visitType_name_tag?t.visitType_name_tag(this):t.visitChildren(this)}},pY=class extends ga{constructor(t,e){super(t,e)}type_name_tag(){return this.getRuleContext(0,DY)}COLON(){return this.getToken(tf.COLON,0)}type_name_or_bind(){return this.getRuleContext(0,qY)}get ruleIndex(){return tf.RULE_struct_arg}accept(t){return t.visitStruct_arg?t.visitStruct_arg(this):t.visitChildren(this)}},gY=class extends ga{constructor(t,e){super(t,e)}type_name_tag(){return this.getRuleContext(0,DY)}type_name_or_bind(){return this.getRuleContext(0,qY)}NULL(){return this.getToken(tf.NULL,0)}NOT(){return this.getToken(tf.NOT,0)}AS(){return this.getToken(tf.AS,0)}get ruleIndex(){return tf.RULE_struct_arg_positional}accept(t){return t.visitStruct_arg_positional?t.visitStruct_arg_positional(this):t.visitChildren(this)}},xY=class extends ga{constructor(t,e){super(t,e)}type_name_or_bind(){return this.getRuleContext(0,qY)}type_name_tag(){return this.getRuleContext(0,DY)}COLON(){return this.getToken(tf.COLON,0)}get ruleIndex(){return tf.RULE_variant_arg}accept(t){return t.visitVariant_arg?t.visitVariant_arg(this):t.visitChildren(this)}},kY=class extends ga{constructor(t,e){super(t,e)}variant_arg(){return this.getRuleContext(0,xY)}LBRACE_CURLY(){return this.getToken(tf.LBRACE_CURLY,0)}AUTOMAP(){return this.getToken(tf.AUTOMAP,0)}RBRACE_CURLY(){return this.getToken(tf.RBRACE_CURLY,0)}get ruleIndex(){return tf.RULE_callable_arg}accept(t){return t.visitCallable_arg?t.visitCallable_arg(this):t.visitChildren(this)}},HY=class extends ga{constructor(t,e){super(t,e)}callable_arg(t){return void 0===t?this.getRuleContexts(kY):this.getRuleContext(t,kY)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_callable_arg_list}accept(t){return t.visitCallable_arg_list?t.visitCallable_arg_list(this):t.visitChildren(this)}},GY=class extends ga{constructor(t,e){super(t,e)}DECIMAL(){return this.getToken(tf.DECIMAL,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}integer_or_bind(t){return void 0===t?this.getRuleContexts(mY):this.getRuleContext(t,mY)}COMMA(){return this.getToken(tf.COMMA,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_type_name_decimal}accept(t){return t.visitType_name_decimal?t.visitType_name_decimal(this):t.visitChildren(this)}},FY=class extends ga{constructor(t,e){super(t,e)}OPTIONAL(){return this.getToken(tf.OPTIONAL,0)}LESS(){return this.getToken(tf.LESS,0)}type_name_or_bind(){return this.getRuleContext(0,qY)}GREATER(){return this.getToken(tf.GREATER,0)}get ruleIndex(){return tf.RULE_type_name_optional}accept(t){return t.visitType_name_optional?t.visitType_name_optional(this):t.visitChildren(this)}},vY=class extends ga{constructor(t,e){super(t,e)}TUPLE(){return this.getToken(tf.TUPLE,0)}LESS(){return this.getToken(tf.LESS,0)}GREATER(){return this.getToken(tf.GREATER,0)}NOT_EQUALS2(){return this.getToken(tf.NOT_EQUALS2,0)}type_name_or_bind(t){return void 0===t?this.getRuleContexts(qY):this.getRuleContext(t,qY)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_type_name_tuple}accept(t){return t.visitType_name_tuple?t.visitType_name_tuple(this):t.visitChildren(this)}},BY=class extends ga{constructor(t,e){super(t,e)}STRUCT(){return this.getToken(tf.STRUCT,0)}LESS(){return this.getToken(tf.LESS,0)}GREATER(){return this.getToken(tf.GREATER,0)}NOT_EQUALS2(){return this.getToken(tf.NOT_EQUALS2,0)}struct_arg(t){return void 0===t?this.getRuleContexts(pY):this.getRuleContext(t,pY)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_type_name_struct}accept(t){return t.visitType_name_struct?t.visitType_name_struct(this):t.visitChildren(this)}},yY=class extends ga{constructor(t,e){super(t,e)}VARIANT(){return this.getToken(tf.VARIANT,0)}LESS(){return this.getToken(tf.LESS,0)}variant_arg(t){return void 0===t?this.getRuleContexts(xY):this.getRuleContext(t,xY)}GREATER(){return this.getToken(tf.GREATER,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_type_name_variant}accept(t){return t.visitType_name_variant?t.visitType_name_variant(this):t.visitChildren(this)}},fY=class extends ga{constructor(t,e){super(t,e)}LIST(){return this.getToken(tf.LIST,0)}LESS(){return this.getToken(tf.LESS,0)}type_name_or_bind(){return this.getRuleContext(0,qY)}GREATER(){return this.getToken(tf.GREATER,0)}get ruleIndex(){return tf.RULE_type_name_list}accept(t){return t.visitType_name_list?t.visitType_name_list(this):t.visitChildren(this)}},YY=class extends ga{constructor(t,e){super(t,e)}STREAM(){return this.getToken(tf.STREAM,0)}LESS(){return this.getToken(tf.LESS,0)}type_name_or_bind(){return this.getRuleContext(0,qY)}GREATER(){return this.getToken(tf.GREATER,0)}get ruleIndex(){return tf.RULE_type_name_stream}accept(t){return t.visitType_name_stream?t.visitType_name_stream(this):t.visitChildren(this)}},wY=class extends ga{constructor(t,e){super(t,e)}FLOW(){return this.getToken(tf.FLOW,0)}LESS(){return this.getToken(tf.LESS,0)}type_name_or_bind(){return this.getRuleContext(0,qY)}GREATER(){return this.getToken(tf.GREATER,0)}get ruleIndex(){return tf.RULE_type_name_flow}accept(t){return t.visitType_name_flow?t.visitType_name_flow(this):t.visitChildren(this)}},bY=class extends ga{constructor(t,e){super(t,e)}DICT(){return this.getToken(tf.DICT,0)}LESS(){return this.getToken(tf.LESS,0)}type_name_or_bind(t){return void 0===t?this.getRuleContexts(qY):this.getRuleContext(t,qY)}COMMA(){return this.getToken(tf.COMMA,0)}GREATER(){return this.getToken(tf.GREATER,0)}get ruleIndex(){return tf.RULE_type_name_dict}accept(t){return t.visitType_name_dict?t.visitType_name_dict(this):t.visitChildren(this)}},WY=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(tf.SET,0)}LESS(){return this.getToken(tf.LESS,0)}type_name_or_bind(){return this.getRuleContext(0,qY)}GREATER(){return this.getToken(tf.GREATER,0)}get ruleIndex(){return tf.RULE_type_name_set}accept(t){return t.visitType_name_set?t.visitType_name_set(this):t.visitChildren(this)}},VY=class extends ga{constructor(t,e){super(t,e)}ENUM(){return this.getToken(tf.ENUM,0)}LESS(){return this.getToken(tf.LESS,0)}type_name_tag(t){return void 0===t?this.getRuleContexts(DY):this.getRuleContext(t,DY)}GREATER(){return this.getToken(tf.GREATER,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_type_name_enum}accept(t){return t.visitType_name_enum?t.visitType_name_enum(this):t.visitChildren(this)}},XY=class extends ga{constructor(t,e){super(t,e)}RESOURCE(){return this.getToken(tf.RESOURCE,0)}LESS(){return this.getToken(tf.LESS,0)}type_name_tag(){return this.getRuleContext(0,DY)}GREATER(){return this.getToken(tf.GREATER,0)}get ruleIndex(){return tf.RULE_type_name_resource}accept(t){return t.visitType_name_resource?t.visitType_name_resource(this):t.visitChildren(this)}},KY=class extends ga{constructor(t,e){super(t,e)}TAGGED(){return this.getToken(tf.TAGGED,0)}LESS(){return this.getToken(tf.LESS,0)}type_name_or_bind(){return this.getRuleContext(0,qY)}COMMA(){return this.getToken(tf.COMMA,0)}type_name_tag(){return this.getRuleContext(0,DY)}GREATER(){return this.getToken(tf.GREATER,0)}get ruleIndex(){return tf.RULE_type_name_tagged}accept(t){return t.visitType_name_tagged?t.visitType_name_tagged(this):t.visitChildren(this)}},QY=class extends ga{constructor(t,e){super(t,e)}CALLABLE(){return this.getToken(tf.CALLABLE,0)}LESS(){return this.getToken(tf.LESS,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}ARROW(){return this.getToken(tf.ARROW,0)}type_name_or_bind(){return this.getRuleContext(0,qY)}GREATER(){return this.getToken(tf.GREATER,0)}callable_arg_list(t){return void 0===t?this.getRuleContexts(HY):this.getRuleContext(t,HY)}COMMA(){return this.getToken(tf.COMMA,0)}LBRACE_SQUARE(){return this.getToken(tf.LBRACE_SQUARE,0)}RBRACE_SQUARE(){return this.getToken(tf.RBRACE_SQUARE,0)}get ruleIndex(){return tf.RULE_type_name_callable}accept(t){return t.visitType_name_callable?t.visitType_name_callable(this):t.visitChildren(this)}},JY=class extends ga{constructor(t,e){super(t,e)}type_name_optional(){return this.getRuleContext(0,FY)}type_name_tuple(){return this.getRuleContext(0,vY)}type_name_struct(){return this.getRuleContext(0,BY)}type_name_variant(){return this.getRuleContext(0,yY)}type_name_list(){return this.getRuleContext(0,fY)}type_name_stream(){return this.getRuleContext(0,YY)}type_name_flow(){return this.getRuleContext(0,wY)}type_name_dict(){return this.getRuleContext(0,bY)}type_name_set(){return this.getRuleContext(0,WY)}type_name_enum(){return this.getRuleContext(0,VY)}type_name_resource(){return this.getRuleContext(0,XY)}type_name_tagged(){return this.getRuleContext(0,KY)}type_name_callable(){return this.getRuleContext(0,QY)}QUESTION(t){return void 0===t?this.getTokens(tf.QUESTION):this.getToken(tf.QUESTION,t)}get ruleIndex(){return tf.RULE_type_name_composite}accept(t){return t.visitType_name_composite?t.visitType_name_composite(this):t.visitChildren(this)}},ZY=class extends ga{constructor(t,e){super(t,e)}type_name_composite(){return this.getRuleContext(0,JY)}type_name_decimal(){return this.getRuleContext(0,GY)}type_name_simple(){return this.getRuleContext(0,UY)}QUESTION(t){return void 0===t?this.getTokens(tf.QUESTION):this.getToken(tf.QUESTION,t)}get ruleIndex(){return tf.RULE_type_name}accept(t){return t.visitType_name?t.visitType_name(this):t.visitChildren(this)}},qY=class extends ga{constructor(t,e){super(t,e)}type_name(){return this.getRuleContext(0,ZY)}bind_parameter(){return this.getRuleContext(0,LY)}get ruleIndex(){return tf.RULE_type_name_or_bind}accept(t){return t.visitType_name_or_bind?t.visitType_name_or_bind(this):t.visitChildren(this)}},jY=class extends ga{constructor(t,e){super(t,e)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_value_constructor_literal}accept(t){return t.visitValue_constructor_literal?t.visitValue_constructor_literal(this):t.visitChildren(this)}},zY=class extends ga{constructor(t,e){super(t,e)}VARIANT(){return this.getToken(tf.VARIANT,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}expr(t){return void 0===t?this.getRuleContexts(Ef):this.getRuleContext(t,Ef)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}RPAREN(){return this.getToken(tf.RPAREN,0)}ENUM(){return this.getToken(tf.ENUM,0)}CALLABLE(){return this.getToken(tf.CALLABLE,0)}get ruleIndex(){return tf.RULE_value_constructor}accept(t){return t.visitValue_constructor?t.visitValue_constructor(this):t.visitChildren(this)}},$Y=class extends ga{constructor(t,e){super(t,e)}DECLARE(){return this.getToken(tf.DECLARE,0)}bind_parameter(){return this.getRuleContext(0,LY)}AS(){return this.getToken(tf.AS,0)}type_name(){return this.getRuleContext(0,ZY)}EQUALS(){return this.getToken(tf.EQUALS,0)}literal_value(){return this.getRuleContext(0,NY)}get ruleIndex(){return tf.RULE_declare_stmt}accept(t){return t.visitDeclare_stmt?t.visitDeclare_stmt(this):t.visitChildren(this)}},tw=class extends ga{constructor(t,e){super(t,e)}an_id(t){return void 0===t?this.getRuleContexts(YX):this.getRuleContext(t,YX)}DOT(t){return void 0===t?this.getTokens(tf.DOT):this.getToken(tf.DOT,t)}get ruleIndex(){return tf.RULE_module_path}accept(t){return t.visitModule_path?t.visitModule_path(this):t.visitChildren(this)}},ew=class extends ga{constructor(t,e){super(t,e)}IMPORT(){return this.getToken(tf.IMPORT,0)}module_path(){return this.getRuleContext(0,tw)}SYMBOLS(){return this.getToken(tf.SYMBOLS,0)}named_bind_parameter_list(){return this.getRuleContext(0,MY)}get ruleIndex(){return tf.RULE_import_stmt}accept(t){return t.visitImport_stmt?t.visitImport_stmt(this):t.visitChildren(this)}},sw=class extends ga{constructor(t,e){super(t,e)}EXPORT(){return this.getToken(tf.EXPORT,0)}bind_parameter_list(){return this.getRuleContext(0,_Y)}get ruleIndex(){return tf.RULE_export_stmt}accept(t){return t.visitExport_stmt?t.visitExport_stmt(this):t.visitChildren(this)}},aw=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}bind_parameter(){return this.getRuleContext(0,LY)}EMPTY_ACTION(){return this.getToken(tf.EMPTY_ACTION,0)}expr_list(){return this.getRuleContext(0,rY)}get ruleIndex(){return tf.RULE_call_action}accept(t){return t.visitCall_action?t.visitCall_action(this):t.visitChildren(this)}},rw=class extends ga{constructor(t,e){super(t,e)}BEGIN(){return this.getToken(tf.BEGIN,0)}define_action_or_subquery_body(){return this.getRuleContext(0,lV)}END(){return this.getToken(tf.END,0)}DO(){return this.getToken(tf.DO,0)}get ruleIndex(){return tf.RULE_inline_action}accept(t){return t.visitInline_action?t.visitInline_action(this):t.visitChildren(this)}},iw=class extends ga{constructor(t,e){super(t,e)}DO(){return this.getToken(tf.DO,0)}call_action(){return this.getRuleContext(0,aw)}inline_action(){return this.getRuleContext(0,rw)}get ruleIndex(){return tf.RULE_do_stmt}accept(t){return t.visitDo_stmt?t.visitDo_stmt(this):t.visitChildren(this)}},cw=class extends ga{constructor(t,e){super(t,e)}PRAGMA(){return this.getToken(tf.PRAGMA,0)}opt_id_prefix_or_type(){return this.getRuleContext(0,eK)}an_id(){return this.getRuleContext(0,YX)}EQUALS(){return this.getToken(tf.EQUALS,0)}pragma_value(t){return void 0===t?this.getRuleContexts(nw):this.getRuleContext(t,nw)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_pragma_stmt}accept(t){return t.visitPragma_stmt?t.visitPragma_stmt(this):t.visitChildren(this)}},nw=class extends ga{constructor(t,e){super(t,e)}signed_number(){return this.getRuleContext(0,dY)}id(){return this.getRuleContext(0,xX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}bool_value(){return this.getRuleContext(0,OK)}bind_parameter(){return this.getRuleContext(0,LY)}get ruleIndex(){return tf.RULE_pragma_value}accept(t){return t.visitPragma_value?t.visitPragma_value(this):t.visitChildren(this)}},hw=class extends ga{constructor(t,e){super(t,e)}expr(){return this.getRuleContext(0,Ef)}ASC(){return this.getToken(tf.ASC,0)}DESC(){return this.getToken(tf.DESC,0)}get ruleIndex(){return tf.RULE_sort_specification}accept(t){return t.visitSort_specification?t.visitSort_specification(this):t.visitChildren(this)}},Ew=class extends ga{constructor(t,e){super(t,e)}sort_specification(t){return void 0===t?this.getRuleContexts(hw):this.getRuleContext(t,hw)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_sort_specification_list}accept(t){return t.visitSort_specification_list?t.visitSort_specification_list(this):t.visitChildren(this)}},Tw=class extends ga{constructor(t,e){super(t,e)}select_kind_parenthesis(t){return void 0===t?this.getRuleContexts(Rw):this.getRuleContext(t,Rw)}select_op(t){return void 0===t?this.getRuleContexts(Aw):this.getRuleContext(t,Aw)}get ruleIndex(){return tf.RULE_select_stmt}accept(t){return t.visitSelect_stmt?t.visitSelect_stmt(this):t.visitChildren(this)}},ow=class extends ga{constructor(t,e){super(t,e)}select_kind_partial(){return this.getRuleContext(0,Sw)}select_op(t){return void 0===t?this.getRuleContexts(Aw):this.getRuleContext(t,Aw)}select_kind_parenthesis(t){return void 0===t?this.getRuleContexts(Rw):this.getRuleContext(t,Rw)}get ruleIndex(){return tf.RULE_select_unparenthesized_stmt}accept(t){return t.visitSelect_unparenthesized_stmt?t.visitSelect_unparenthesized_stmt(this):t.visitChildren(this)}},Rw=class extends ga{constructor(t,e){super(t,e)}select_kind_partial(){return this.getRuleContext(0,Sw)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_select_kind_parenthesis}accept(t){return t.visitSelect_kind_parenthesis?t.visitSelect_kind_parenthesis(this):t.visitChildren(this)}},Aw=class extends ga{constructor(t,e){super(t,e)}UNION(){return this.getToken(tf.UNION,0)}ALL(){return this.getToken(tf.ALL,0)}INTERSECT(){return this.getToken(tf.INTERSECT,0)}EXCEPT(){return this.getToken(tf.EXCEPT,0)}get ruleIndex(){return tf.RULE_select_op}accept(t){return t.visitSelect_op?t.visitSelect_op(this):t.visitChildren(this)}},Sw=class extends ga{constructor(t,e){super(t,e)}select_kind(){return this.getRuleContext(0,lw)}LIMIT(){return this.getToken(tf.LIMIT,0)}expr(t){return void 0===t?this.getRuleContexts(Ef):this.getRuleContext(t,Ef)}OFFSET(){return this.getToken(tf.OFFSET,0)}COMMA(){return this.getToken(tf.COMMA,0)}get ruleIndex(){return tf.RULE_select_kind_partial}accept(t){return t.visitSelect_kind_partial?t.visitSelect_kind_partial(this):t.visitChildren(this)}},lw=class extends ga{constructor(t,e){super(t,e)}process_core(){return this.getRuleContext(0,Ow)}reduce_core(){return this.getRuleContext(0,Nw)}select_core(){return this.getRuleContext(0,Cw)}DISCARD(){return this.getToken(tf.DISCARD,0)}INTO(){return this.getToken(tf.INTO,0)}RESULT(){return this.getToken(tf.RESULT,0)}pure_column_or_named(){return this.getRuleContext(0,cY)}get ruleIndex(){return tf.RULE_select_kind}accept(t){return t.visitSelect_kind?t.visitSelect_kind(this):t.visitChildren(this)}},Ow=class extends ga{constructor(t,e){super(t,e)}PROCESS(){return this.getToken(tf.PROCESS,0)}named_single_source(t){return void 0===t?this.getRuleContexts(Ab):this.getRuleContext(t,Ab)}STREAM(){return this.getToken(tf.STREAM,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}USING(){return this.getToken(tf.USING,0)}using_call_expr(){return this.getRuleContext(0,OY)}AS(){return this.getToken(tf.AS,0)}an_id(){return this.getRuleContext(0,YX)}WITH(){return this.getToken(tf.WITH,0)}external_call_settings(){return this.getRuleContext(0,uw)}where_expr(){return this.getRuleContext(0,MK)}HAVING(){return this.getToken(tf.HAVING,0)}expr(){return this.getRuleContext(0,Ef)}ASSUME(){return this.getToken(tf.ASSUME,0)}order_by_clause(){return this.getRuleContext(0,jw)}get ruleIndex(){return tf.RULE_process_core}accept(t){return t.visitProcess_core?t.visitProcess_core(this):t.visitChildren(this)}},Iw=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}EQUALS(){return this.getToken(tf.EQUALS,0)}expr(){return this.getRuleContext(0,Ef)}get ruleIndex(){return tf.RULE_external_call_param}accept(t){return t.visitExternal_call_param?t.visitExternal_call_param(this):t.visitChildren(this)}},uw=class extends ga{constructor(t,e){super(t,e)}external_call_param(t){return void 0===t?this.getRuleContexts(Iw):this.getRuleContext(t,Iw)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_external_call_settings}accept(t){return t.visitExternal_call_settings?t.visitExternal_call_settings(this):t.visitChildren(this)}},Nw=class extends ga{constructor(t,e){super(t,e)}REDUCE(){return this.getToken(tf.REDUCE,0)}named_single_source(t){return void 0===t?this.getRuleContexts(Ab):this.getRuleContext(t,Ab)}ON(){return this.getToken(tf.ON,0)}column_list(){return this.getRuleContext(0,TY)}USING(){return this.getToken(tf.USING,0)}using_call_expr(){return this.getRuleContext(0,OY)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}PRESORT(){return this.getToken(tf.PRESORT,0)}sort_specification_list(){return this.getRuleContext(0,Ew)}ALL(){return this.getToken(tf.ALL,0)}AS(){return this.getToken(tf.AS,0)}an_id(){return this.getRuleContext(0,YX)}where_expr(){return this.getRuleContext(0,MK)}HAVING(){return this.getToken(tf.HAVING,0)}expr(){return this.getRuleContext(0,Ef)}ASSUME(){return this.getToken(tf.ASSUME,0)}order_by_clause(){return this.getRuleContext(0,jw)}get ruleIndex(){return tf.RULE_reduce_core}accept(t){return t.visitReduce_core?t.visitReduce_core(this):t.visitChildren(this)}},Lw=class extends ga{constructor(t,e){super(t,e)}ALL(){return this.getToken(tf.ALL,0)}DISTINCT(){return this.getToken(tf.DISTINCT,0)}get ruleIndex(){return tf.RULE_opt_set_quantifier}accept(t){return t.visitOpt_set_quantifier?t.visitOpt_set_quantifier(this):t.visitChildren(this)}},Cw=class extends ga{constructor(t,e){super(t,e)}SELECT(){return this.getToken(tf.SELECT,0)}opt_set_quantifier(){return this.getRuleContext(0,Lw)}result_column(t){return void 0===t?this.getRuleContexts(hb):this.getRuleContext(t,hb)}FROM(t){return void 0===t?this.getTokens(tf.FROM):this.getToken(tf.FROM,t)}join_source(t){return void 0===t?this.getRuleContexts(Eb):this.getRuleContext(t,Eb)}STREAM(){return this.getToken(tf.STREAM,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}WITHOUT(){return this.getToken(tf.WITHOUT,0)}without_column_list(){return this.getRuleContext(0,oY)}where_expr(){return this.getRuleContext(0,MK)}group_by_clause(){return this.getRuleContext(0,$w)}HAVING(){return this.getToken(tf.HAVING,0)}expr(){return this.getRuleContext(0,Ef)}window_clause(){return this.getRuleContext(0,TX)}ext_order_by_clause(){return this.getRuleContext(0,zw)}get ruleIndex(){return tf.RULE_select_core}accept(t){return t.visitSelect_core?t.visitSelect_core(this):t.visitChildren(this)}},_w=class extends ga{constructor(t,e){super(t,e)}MATCH_RECOGNIZE(){return this.getToken(tf.MATCH_RECOGNIZE,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}row_pattern_common_syntax(){return this.getRuleContext(0,Dw)}RPAREN(){return this.getToken(tf.RPAREN,0)}window_partition_clause(){return this.getRuleContext(0,IX)}order_by_clause(){return this.getRuleContext(0,jw)}row_pattern_measures(){return this.getRuleContext(0,dw)}row_pattern_rows_per_match(){return this.getRuleContext(0,Pw)}get ruleIndex(){return tf.RULE_row_pattern_recognition_clause}accept(t){return t.visitRow_pattern_recognition_clause?t.visitRow_pattern_recognition_clause(this):t.visitChildren(this)}},Pw=class extends ga{constructor(t,e){super(t,e)}ONE(){return this.getToken(tf.ONE,0)}ROW(){return this.getToken(tf.ROW,0)}PER(){return this.getToken(tf.PER,0)}MATCH(){return this.getToken(tf.MATCH,0)}ALL(){return this.getToken(tf.ALL,0)}ROWS(){return this.getToken(tf.ROWS,0)}row_pattern_empty_match_handling(){return this.getRuleContext(0,Mw)}get ruleIndex(){return tf.RULE_row_pattern_rows_per_match}accept(t){return t.visitRow_pattern_rows_per_match?t.visitRow_pattern_rows_per_match(this):t.visitChildren(this)}},Mw=class extends ga{constructor(t,e){super(t,e)}SHOW(){return this.getToken(tf.SHOW,0)}EMPTY(){return this.getToken(tf.EMPTY,0)}MATCHES(){return this.getToken(tf.MATCHES,0)}OMIT(){return this.getToken(tf.OMIT,0)}WITH(){return this.getToken(tf.WITH,0)}UNMATCHED(){return this.getToken(tf.UNMATCHED,0)}ROWS(){return this.getToken(tf.ROWS,0)}get ruleIndex(){return tf.RULE_row_pattern_empty_match_handling}accept(t){return t.visitRow_pattern_empty_match_handling?t.visitRow_pattern_empty_match_handling(this):t.visitChildren(this)}},dw=class extends ga{constructor(t,e){super(t,e)}MEASURES(){return this.getToken(tf.MEASURES,0)}row_pattern_measure_list(){return this.getRuleContext(0,Uw)}get ruleIndex(){return tf.RULE_row_pattern_measures}accept(t){return t.visitRow_pattern_measures?t.visitRow_pattern_measures(this):t.visitChildren(this)}},Uw=class extends ga{constructor(t,e){super(t,e)}row_pattern_measure_definition(t){return void 0===t?this.getRuleContexts(mw):this.getRuleContext(t,mw)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_row_pattern_measure_list}accept(t){return t.visitRow_pattern_measure_list?t.visitRow_pattern_measure_list(this):t.visitChildren(this)}},mw=class extends ga{constructor(t,e){super(t,e)}expr(){return this.getRuleContext(0,Ef)}AS(){return this.getToken(tf.AS,0)}an_id(){return this.getRuleContext(0,YX)}get ruleIndex(){return tf.RULE_row_pattern_measure_definition}accept(t){return t.visitRow_pattern_measure_definition?t.visitRow_pattern_measure_definition(this):t.visitChildren(this)}},Dw=class extends ga{constructor(t,e){super(t,e)}PATTERN(){return this.getToken(tf.PATTERN,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}row_pattern(){return this.getRuleContext(0,kw)}RPAREN(){return this.getToken(tf.RPAREN,0)}DEFINE(){return this.getToken(tf.DEFINE,0)}row_pattern_definition_list(){return this.getRuleContext(0,Xw)}AFTER(){return this.getToken(tf.AFTER,0)}MATCH(){return this.getToken(tf.MATCH,0)}row_pattern_skip_to(){return this.getRuleContext(0,pw)}row_pattern_initial_or_seek(){return this.getRuleContext(0,xw)}row_pattern_subset_clause(){return this.getRuleContext(0,fw)}get ruleIndex(){return tf.RULE_row_pattern_common_syntax}accept(t){return t.visitRow_pattern_common_syntax?t.visitRow_pattern_common_syntax(this):t.visitChildren(this)}},pw=class extends ga{constructor(t,e){super(t,e)}SKIP_RULE(){return this.getToken(tf.SKIP_RULE,0)}TO(){return this.getToken(tf.TO,0)}NEXT(){return this.getToken(tf.NEXT,0)}ROW(){return this.getToken(tf.ROW,0)}PAST(){return this.getToken(tf.PAST,0)}LAST(){return this.getToken(tf.LAST,0)}FIRST(){return this.getToken(tf.FIRST,0)}row_pattern_skip_to_variable_name(){return this.getRuleContext(0,gw)}get ruleIndex(){return tf.RULE_row_pattern_skip_to}accept(t){return t.visitRow_pattern_skip_to?t.visitRow_pattern_skip_to(this):t.visitChildren(this)}},gw=class extends ga{constructor(t,e){super(t,e)}row_pattern_variable_name(){return this.getRuleContext(0,qw)}get ruleIndex(){return tf.RULE_row_pattern_skip_to_variable_name}accept(t){return t.visitRow_pattern_skip_to_variable_name?t.visitRow_pattern_skip_to_variable_name(this):t.visitChildren(this)}},xw=class extends ga{constructor(t,e){super(t,e)}INITIAL(){return this.getToken(tf.INITIAL,0)}SEEK(){return this.getToken(tf.SEEK,0)}get ruleIndex(){return tf.RULE_row_pattern_initial_or_seek}accept(t){return t.visitRow_pattern_initial_or_seek?t.visitRow_pattern_initial_or_seek(this):t.visitChildren(this)}},kw=class extends ga{constructor(t,e){super(t,e)}row_pattern_term(t){return void 0===t?this.getRuleContexts(Hw):this.getRuleContext(t,Hw)}PIPE(t){return void 0===t?this.getTokens(tf.PIPE):this.getToken(tf.PIPE,t)}get ruleIndex(){return tf.RULE_row_pattern}accept(t){return t.visitRow_pattern?t.visitRow_pattern(this):t.visitChildren(this)}},Hw=class extends ga{constructor(t,e){super(t,e)}row_pattern_factor(t){return void 0===t?this.getRuleContexts(Gw):this.getRuleContext(t,Gw)}get ruleIndex(){return tf.RULE_row_pattern_term}accept(t){return t.visitRow_pattern_term?t.visitRow_pattern_term(this):t.visitChildren(this)}},Gw=class extends ga{constructor(t,e){super(t,e)}row_pattern_primary(){return this.getRuleContext(0,vw)}row_pattern_quantifier(){return this.getRuleContext(0,Fw)}get ruleIndex(){return tf.RULE_row_pattern_factor}accept(t){return t.visitRow_pattern_factor?t.visitRow_pattern_factor(this):t.visitChildren(this)}},Fw=class extends ga{constructor(t,e){super(t,e)}ASTERISK(){return this.getToken(tf.ASTERISK,0)}QUESTION(t){return void 0===t?this.getTokens(tf.QUESTION):this.getToken(tf.QUESTION,t)}PLUS(){return this.getToken(tf.PLUS,0)}LBRACE_CURLY(){return this.getToken(tf.LBRACE_CURLY,0)}COMMA(){return this.getToken(tf.COMMA,0)}RBRACE_CURLY(){return this.getToken(tf.RBRACE_CURLY,0)}integer(t){return void 0===t?this.getRuleContexts(uK):this.getRuleContext(t,uK)}get ruleIndex(){return tf.RULE_row_pattern_quantifier}accept(t){return t.visitRow_pattern_quantifier?t.visitRow_pattern_quantifier(this):t.visitChildren(this)}},vw=class extends ga{constructor(t,e){super(t,e)}row_pattern_primary_variable_name(){return this.getRuleContext(0,Bw)}DOLLAR(){return this.getToken(tf.DOLLAR,0)}CARET(){return this.getToken(tf.CARET,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}row_pattern(){return this.getRuleContext(0,kw)}LBRACE_CURLY(){return this.getToken(tf.LBRACE_CURLY,0)}MINUS(t){return void 0===t?this.getTokens(tf.MINUS):this.getToken(tf.MINUS,t)}RBRACE_CURLY(){return this.getToken(tf.RBRACE_CURLY,0)}row_pattern_permute(){return this.getRuleContext(0,yw)}get ruleIndex(){return tf.RULE_row_pattern_primary}accept(t){return t.visitRow_pattern_primary?t.visitRow_pattern_primary(this):t.visitChildren(this)}},Bw=class extends ga{constructor(t,e){super(t,e)}row_pattern_variable_name(){return this.getRuleContext(0,qw)}get ruleIndex(){return tf.RULE_row_pattern_primary_variable_name}accept(t){return t.visitRow_pattern_primary_variable_name?t.visitRow_pattern_primary_variable_name(this):t.visitChildren(this)}},yw=class extends ga{constructor(t,e){super(t,e)}PERMUTE(){return this.getToken(tf.PERMUTE,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}row_pattern(t){return void 0===t?this.getRuleContexts(kw):this.getRuleContext(t,kw)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_row_pattern_permute}accept(t){return t.visitRow_pattern_permute?t.visitRow_pattern_permute(this):t.visitChildren(this)}},fw=class extends ga{constructor(t,e){super(t,e)}SUBSET(){return this.getToken(tf.SUBSET,0)}row_pattern_subset_list(){return this.getRuleContext(0,Yw)}get ruleIndex(){return tf.RULE_row_pattern_subset_clause}accept(t){return t.visitRow_pattern_subset_clause?t.visitRow_pattern_subset_clause(this):t.visitChildren(this)}},Yw=class extends ga{constructor(t,e){super(t,e)}row_pattern_subset_item(t){return void 0===t?this.getRuleContexts(ww):this.getRuleContext(t,ww)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_row_pattern_subset_list}accept(t){return t.visitRow_pattern_subset_list?t.visitRow_pattern_subset_list(this):t.visitChildren(this)}},ww=class extends ga{constructor(t,e){super(t,e)}row_pattern_subset_item_variable_name(){return this.getRuleContext(0,bw)}EQUALS(){return this.getToken(tf.EQUALS,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}row_pattern_subset_rhs(){return this.getRuleContext(0,Ww)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_row_pattern_subset_item}accept(t){return t.visitRow_pattern_subset_item?t.visitRow_pattern_subset_item(this):t.visitChildren(this)}},bw=class extends ga{constructor(t,e){super(t,e)}row_pattern_variable_name(){return this.getRuleContext(0,qw)}get ruleIndex(){return tf.RULE_row_pattern_subset_item_variable_name}accept(t){return t.visitRow_pattern_subset_item_variable_name?t.visitRow_pattern_subset_item_variable_name(this):t.visitChildren(this)}},Ww=class extends ga{constructor(t,e){super(t,e)}row_pattern_subset_rhs_variable_name(t){return void 0===t?this.getRuleContexts(Vw):this.getRuleContext(t,Vw)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_row_pattern_subset_rhs}accept(t){return t.visitRow_pattern_subset_rhs?t.visitRow_pattern_subset_rhs(this):t.visitChildren(this)}},Vw=class extends ga{constructor(t,e){super(t,e)}row_pattern_variable_name(){return this.getRuleContext(0,qw)}get ruleIndex(){return tf.RULE_row_pattern_subset_rhs_variable_name}accept(t){return t.visitRow_pattern_subset_rhs_variable_name?t.visitRow_pattern_subset_rhs_variable_name(this):t.visitChildren(this)}},Xw=class extends ga{constructor(t,e){super(t,e)}row_pattern_definition(t){return void 0===t?this.getRuleContexts(Kw):this.getRuleContext(t,Kw)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_row_pattern_definition_list}accept(t){return t.visitRow_pattern_definition_list?t.visitRow_pattern_definition_list(this):t.visitChildren(this)}},Kw=class extends ga{constructor(t,e){super(t,e)}row_pattern_definition_variable_name(){return this.getRuleContext(0,Qw)}AS(){return this.getToken(tf.AS,0)}row_pattern_definition_search_condition(){return this.getRuleContext(0,Jw)}get ruleIndex(){return tf.RULE_row_pattern_definition}accept(t){return t.visitRow_pattern_definition?t.visitRow_pattern_definition(this):t.visitChildren(this)}},Qw=class extends ga{constructor(t,e){super(t,e)}row_pattern_variable_name(){return this.getRuleContext(0,qw)}get ruleIndex(){return tf.RULE_row_pattern_definition_variable_name}accept(t){return t.visitRow_pattern_definition_variable_name?t.visitRow_pattern_definition_variable_name(this):t.visitChildren(this)}},Jw=class extends ga{constructor(t,e){super(t,e)}search_condition(){return this.getRuleContext(0,Zw)}get ruleIndex(){return tf.RULE_row_pattern_definition_search_condition}accept(t){return t.visitRow_pattern_definition_search_condition?t.visitRow_pattern_definition_search_condition(this):t.visitChildren(this)}},Zw=class extends ga{constructor(t,e){super(t,e)}expr(){return this.getRuleContext(0,Ef)}get ruleIndex(){return tf.RULE_search_condition}accept(t){return t.visitSearch_condition?t.visitSearch_condition(this):t.visitChildren(this)}},qw=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,gX)}get ruleIndex(){return tf.RULE_row_pattern_variable_name}accept(t){return t.visitRow_pattern_variable_name?t.visitRow_pattern_variable_name(this):t.visitChildren(this)}},jw=class extends ga{constructor(t,e){super(t,e)}ORDER(){return this.getToken(tf.ORDER,0)}BY(){return this.getToken(tf.BY,0)}sort_specification_list(){return this.getRuleContext(0,Ew)}get ruleIndex(){return tf.RULE_order_by_clause}accept(t){return t.visitOrder_by_clause?t.visitOrder_by_clause(this):t.visitChildren(this)}},zw=class extends ga{constructor(t,e){super(t,e)}order_by_clause(){return this.getRuleContext(0,jw)}ASSUME(){return this.getToken(tf.ASSUME,0)}get ruleIndex(){return tf.RULE_ext_order_by_clause}accept(t){return t.visitExt_order_by_clause?t.visitExt_order_by_clause(this):t.visitChildren(this)}},$w=class extends ga{constructor(t,e){super(t,e)}GROUP(){return this.getToken(tf.GROUP,0)}BY(){return this.getToken(tf.BY,0)}opt_set_quantifier(){return this.getRuleContext(0,Lw)}grouping_element_list(){return this.getRuleContext(0,tb)}COMPACT(){return this.getToken(tf.COMPACT,0)}WITH(){return this.getToken(tf.WITH,0)}an_id(){return this.getRuleContext(0,YX)}get ruleIndex(){return tf.RULE_group_by_clause}accept(t){return t.visitGroup_by_clause?t.visitGroup_by_clause(this):t.visitChildren(this)}},tb=class extends ga{constructor(t,e){super(t,e)}grouping_element(t){return void 0===t?this.getRuleContexts(eb):this.getRuleContext(t,eb)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_grouping_element_list}accept(t){return t.visitGrouping_element_list?t.visitGrouping_element_list(this):t.visitChildren(this)}},eb=class extends ga{constructor(t,e){super(t,e)}ordinary_grouping_set(){return this.getRuleContext(0,sb)}rollup_list(){return this.getRuleContext(0,rb)}cube_list(){return this.getRuleContext(0,ib)}grouping_sets_specification(){return this.getRuleContext(0,cb)}hopping_window_specification(){return this.getRuleContext(0,nb)}get ruleIndex(){return tf.RULE_grouping_element}accept(t){return t.visitGrouping_element?t.visitGrouping_element(this):t.visitChildren(this)}},sb=class extends ga{constructor(t,e){super(t,e)}named_expr(){return this.getRuleContext(0,RY)}get ruleIndex(){return tf.RULE_ordinary_grouping_set}accept(t){return t.visitOrdinary_grouping_set?t.visitOrdinary_grouping_set(this):t.visitChildren(this)}},ab=class extends ga{constructor(t,e){super(t,e)}ordinary_grouping_set(t){return void 0===t?this.getRuleContexts(sb):this.getRuleContext(t,sb)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_ordinary_grouping_set_list}accept(t){return t.visitOrdinary_grouping_set_list?t.visitOrdinary_grouping_set_list(this):t.visitChildren(this)}},rb=class extends ga{constructor(t,e){super(t,e)}ROLLUP(){return this.getToken(tf.ROLLUP,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}ordinary_grouping_set_list(){return this.getRuleContext(0,ab)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_rollup_list}accept(t){return t.visitRollup_list?t.visitRollup_list(this):t.visitChildren(this)}},ib=class extends ga{constructor(t,e){super(t,e)}CUBE(){return this.getToken(tf.CUBE,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}ordinary_grouping_set_list(){return this.getRuleContext(0,ab)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_cube_list}accept(t){return t.visitCube_list?t.visitCube_list(this):t.visitChildren(this)}},cb=class extends ga{constructor(t,e){super(t,e)}GROUPING(){return this.getToken(tf.GROUPING,0)}SETS(){return this.getToken(tf.SETS,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}grouping_element_list(){return this.getRuleContext(0,tb)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_grouping_sets_specification}accept(t){return t.visitGrouping_sets_specification?t.visitGrouping_sets_specification(this):t.visitChildren(this)}},nb=class extends ga{constructor(t,e){super(t,e)}HOP(){return this.getToken(tf.HOP,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}expr(t){return void 0===t?this.getRuleContexts(Ef):this.getRuleContext(t,Ef)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_hopping_window_specification}accept(t){return t.visitHopping_window_specification?t.visitHopping_window_specification(this):t.visitChildren(this)}},hb=class extends ga{constructor(t,e){super(t,e)}opt_id_prefix(){return this.getRuleContext(0,zX)}ASTERISK(){return this.getToken(tf.ASTERISK,0)}expr(){return this.getRuleContext(0,Ef)}an_id_as_compat(){return this.getRuleContext(0,qX)}AS(){return this.getToken(tf.AS,0)}an_id_or_type(){return this.getRuleContext(0,wX)}get ruleIndex(){return tf.RULE_result_column}accept(t){return t.visitResult_column?t.visitResult_column(this):t.visitChildren(this)}},Eb=class extends ga{constructor(t,e){super(t,e)}flatten_source(t){return void 0===t?this.getRuleContexts(Rb):this.getRuleContext(t,Rb)}ANY(t){return void 0===t?this.getTokens(tf.ANY):this.getToken(tf.ANY,t)}join_op(t){return void 0===t?this.getRuleContexts(Nb):this.getRuleContext(t,Nb)}join_constraint(t){return void 0===t?this.getRuleContexts(Lb):this.getRuleContext(t,Lb)}get ruleIndex(){return tf.RULE_join_source}accept(t){return t.visitJoin_source?t.visitJoin_source(this):t.visitChildren(this)}},Tb=class extends ga{constructor(t,e){super(t,e)}column_name(){return this.getRuleContext(0,hY)}AS(){return this.getToken(tf.AS,0)}an_id(){return this.getRuleContext(0,YX)}get ruleIndex(){return tf.RULE_named_column}accept(t){return t.visitNamed_column?t.visitNamed_column(this):t.visitChildren(this)}},ob=class extends ga{constructor(t,e){super(t,e)}named_column(){return this.getRuleContext(0,Tb)}LPAREN(){return this.getToken(tf.LPAREN,0)}named_expr_list(){return this.getRuleContext(0,AY)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(){return this.getToken(tf.COMMA,0)}get ruleIndex(){return tf.RULE_flatten_by_arg}accept(t){return t.visitFlatten_by_arg?t.visitFlatten_by_arg(this):t.visitChildren(this)}},Rb=class extends ga{constructor(t,e){super(t,e)}named_single_source(){return this.getRuleContext(0,Ab)}FLATTEN(){return this.getToken(tf.FLATTEN,0)}BY(){return this.getToken(tf.BY,0)}flatten_by_arg(){return this.getRuleContext(0,ob)}COLUMNS(){return this.getToken(tf.COLUMNS,0)}OPTIONAL(){return this.getToken(tf.OPTIONAL,0)}LIST(){return this.getToken(tf.LIST,0)}DICT(){return this.getToken(tf.DICT,0)}get ruleIndex(){return tf.RULE_flatten_source}accept(t){return t.visitFlatten_source?t.visitFlatten_source(this):t.visitChildren(this)}},Ab=class extends ga{constructor(t,e){super(t,e)}single_source(){return this.getRuleContext(0,Sb)}row_pattern_recognition_clause(){return this.getRuleContext(0,_w)}sample_clause(){return this.getRuleContext(0,lb)}tablesample_clause(){return this.getRuleContext(0,Ob)}an_id_as_compat(){return this.getRuleContext(0,qX)}pure_column_list(){return this.getRuleContext(0,iY)}AS(){return this.getToken(tf.AS,0)}an_id(){return this.getRuleContext(0,YX)}get ruleIndex(){return tf.RULE_named_single_source}accept(t){return t.visitNamed_single_source?t.visitNamed_single_source(this):t.visitChildren(this)}},Sb=class extends ga{constructor(t,e){super(t,e)}table_ref(){return this.getRuleContext(0,uV)}LPAREN(){return this.getToken(tf.LPAREN,0)}select_stmt(){return this.getRuleContext(0,Tw)}RPAREN(){return this.getToken(tf.RPAREN,0)}values_stmt(){return this.getRuleContext(0,db)}get ruleIndex(){return tf.RULE_single_source}accept(t){return t.visitSingle_source?t.visitSingle_source(this):t.visitChildren(this)}},lb=class extends ga{constructor(t,e){super(t,e)}SAMPLE(){return this.getToken(tf.SAMPLE,0)}expr(){return this.getRuleContext(0,Ef)}get ruleIndex(){return tf.RULE_sample_clause}accept(t){return t.visitSample_clause?t.visitSample_clause(this):t.visitChildren(this)}},Ob=class extends ga{constructor(t,e){super(t,e)}TABLESAMPLE(){return this.getToken(tf.TABLESAMPLE,0)}sampling_mode(){return this.getRuleContext(0,Ib)}LPAREN(){return this.getToken(tf.LPAREN,0)}expr(){return this.getRuleContext(0,Ef)}RPAREN(){return this.getToken(tf.RPAREN,0)}repeatable_clause(){return this.getRuleContext(0,ub)}get ruleIndex(){return tf.RULE_tablesample_clause}accept(t){return t.visitTablesample_clause?t.visitTablesample_clause(this):t.visitChildren(this)}},Ib=class extends ga{constructor(t,e){super(t,e)}BERNOULLI(){return this.getToken(tf.BERNOULLI,0)}SYSTEM(){return this.getToken(tf.SYSTEM,0)}get ruleIndex(){return tf.RULE_sampling_mode}accept(t){return t.visitSampling_mode?t.visitSampling_mode(this):t.visitChildren(this)}},ub=class extends ga{constructor(t,e){super(t,e)}REPEATABLE(){return this.getToken(tf.REPEATABLE,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}expr(){return this.getRuleContext(0,Ef)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_repeatable_clause}accept(t){return t.visitRepeatable_clause?t.visitRepeatable_clause(this):t.visitChildren(this)}},Nb=class extends ga{constructor(t,e){super(t,e)}COMMA(){return this.getToken(tf.COMMA,0)}JOIN(){return this.getToken(tf.JOIN,0)}INNER(){return this.getToken(tf.INNER,0)}CROSS(){return this.getToken(tf.CROSS,0)}NATURAL(){return this.getToken(tf.NATURAL,0)}LEFT(){return this.getToken(tf.LEFT,0)}RIGHT(){return this.getToken(tf.RIGHT,0)}EXCLUSION(){return this.getToken(tf.EXCLUSION,0)}FULL(){return this.getToken(tf.FULL,0)}OUTER(){return this.getToken(tf.OUTER,0)}ONLY(){return this.getToken(tf.ONLY,0)}SEMI(){return this.getToken(tf.SEMI,0)}get ruleIndex(){return tf.RULE_join_op}accept(t){return t.visitJoin_op?t.visitJoin_op(this):t.visitChildren(this)}},Lb=class extends ga{constructor(t,e){super(t,e)}ON(){return this.getToken(tf.ON,0)}expr(){return this.getRuleContext(0,Ef)}USING(){return this.getToken(tf.USING,0)}pure_column_or_named_list(){return this.getRuleContext(0,nY)}get ruleIndex(){return tf.RULE_join_constraint}accept(t){return t.visitJoin_constraint?t.visitJoin_constraint(this):t.visitChildren(this)}},Cb=class extends ga{constructor(t,e){super(t,e)}RETURNING(){return this.getToken(tf.RETURNING,0)}ASTERISK(){return this.getToken(tf.ASTERISK,0)}an_id(t){return void 0===t?this.getRuleContexts(YX):this.getRuleContext(t,YX)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_returning_columns_list}accept(t){return t.visitReturning_columns_list?t.visitReturning_columns_list(this):t.visitChildren(this)}},_b=class extends ga{constructor(t,e){super(t,e)}INTO(){return this.getToken(tf.INTO,0)}into_simple_table_ref(){return this.getRuleContext(0,UV)}into_values_source(){return this.getRuleContext(0,Mb)}INSERT(){return this.getToken(tf.INSERT,0)}OR(){return this.getToken(tf.OR,0)}ABORT(){return this.getToken(tf.ABORT,0)}REVERT(){return this.getToken(tf.REVERT,0)}IGNORE(){return this.getToken(tf.IGNORE,0)}UPSERT(){return this.getToken(tf.UPSERT,0)}REPLACE(){return this.getToken(tf.REPLACE,0)}returning_columns_list(){return this.getRuleContext(0,Cb)}get ruleIndex(){return tf.RULE_into_table_stmt}accept(t){return t.visitInto_table_stmt?t.visitInto_table_stmt(this):t.visitChildren(this)}},Pb=class extends ga{constructor(t,e){super(t,e)}INTO(){return this.getToken(tf.INTO,0)}into_simple_table_ref(){return this.getRuleContext(0,UV)}into_values_source(){return this.getRuleContext(0,Mb)}INSERT(){return this.getToken(tf.INSERT,0)}OR(){return this.getToken(tf.OR,0)}ABORT(){return this.getToken(tf.ABORT,0)}REVERT(){return this.getToken(tf.REVERT,0)}IGNORE(){return this.getToken(tf.IGNORE,0)}REPLACE(){return this.getToken(tf.REPLACE,0)}get ruleIndex(){return tf.RULE_into_table_stmt_yq}accept(t){return t.visitInto_table_stmt_yq?t.visitInto_table_stmt_yq(this):t.visitChildren(this)}},Mb=class extends ga{constructor(t,e){super(t,e)}values_source(){return this.getRuleContext(0,Ub)}pure_column_list(){return this.getRuleContext(0,iY)}DEFAULT(){return this.getToken(tf.DEFAULT,0)}VALUES(){return this.getToken(tf.VALUES,0)}get ruleIndex(){return tf.RULE_into_values_source}accept(t){return t.visitInto_values_source?t.visitInto_values_source(this):t.visitChildren(this)}},db=class extends ga{constructor(t,e){super(t,e)}VALUES(){return this.getToken(tf.VALUES,0)}values_source_row_list(){return this.getRuleContext(0,mb)}get ruleIndex(){return tf.RULE_values_stmt}accept(t){return t.visitValues_stmt?t.visitValues_stmt(this):t.visitChildren(this)}},Ub=class extends ga{constructor(t,e){super(t,e)}values_stmt(){return this.getRuleContext(0,db)}select_stmt(){return this.getRuleContext(0,Tw)}get ruleIndex(){return tf.RULE_values_source}accept(t){return t.visitValues_source?t.visitValues_source(this):t.visitChildren(this)}},mb=class extends ga{constructor(t,e){super(t,e)}values_source_row(t){return void 0===t?this.getRuleContexts(Db):this.getRuleContext(t,Db)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_values_source_row_list}accept(t){return t.visitValues_source_row_list?t.visitValues_source_row_list(this):t.visitChildren(this)}},Db=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}expr_list(){return this.getRuleContext(0,rY)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_values_source_row}accept(t){return t.visitValues_source_row?t.visitValues_source_row(this):t.visitChildren(this)}},pb=class extends ga{constructor(t,e){super(t,e)}expr_list(){return this.getRuleContext(0,rY)}select_stmt(){return this.getRuleContext(0,Tw)}get ruleIndex(){return tf.RULE_simple_values_source}accept(t){return t.visitSimple_values_source?t.visitSimple_values_source(this):t.visitChildren(this)}},gb=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(tf.CREATE,0)}EXTERNAL(){return this.getToken(tf.EXTERNAL,0)}DATA(){return this.getToken(tf.DATA,0)}SOURCE(){return this.getToken(tf.SOURCE,0)}object_ref(){return this.getRuleContext(0,PV)}with_table_settings(){return this.getRuleContext(0,$b)}OR(){return this.getToken(tf.OR,0)}REPLACE(){return this.getToken(tf.REPLACE,0)}IF(){return this.getToken(tf.IF,0)}NOT(){return this.getToken(tf.NOT,0)}EXISTS(){return this.getToken(tf.EXISTS,0)}get ruleIndex(){return tf.RULE_create_external_data_source_stmt}accept(t){return t.visitCreate_external_data_source_stmt?t.visitCreate_external_data_source_stmt(this):t.visitChildren(this)}},xb=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}EXTERNAL(){return this.getToken(tf.EXTERNAL,0)}DATA(){return this.getToken(tf.DATA,0)}SOURCE(){return this.getToken(tf.SOURCE,0)}object_ref(){return this.getRuleContext(0,PV)}alter_external_data_source_action(t){return void 0===t?this.getRuleContexts(kb):this.getRuleContext(t,kb)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_alter_external_data_source_stmt}accept(t){return t.visitAlter_external_data_source_stmt?t.visitAlter_external_data_source_stmt(this):t.visitChildren(this)}},kb=class extends ga{constructor(t,e){super(t,e)}alter_table_set_table_setting_uncompat(){return this.getRuleContext(0,SW)}alter_table_set_table_setting_compat(){return this.getRuleContext(0,lW)}alter_table_reset_table_setting(){return this.getRuleContext(0,OW)}get ruleIndex(){return tf.RULE_alter_external_data_source_action}accept(t){return t.visitAlter_external_data_source_action?t.visitAlter_external_data_source_action(this):t.visitChildren(this)}},Hb=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(tf.DROP,0)}EXTERNAL(){return this.getToken(tf.EXTERNAL,0)}DATA(){return this.getToken(tf.DATA,0)}SOURCE(){return this.getToken(tf.SOURCE,0)}object_ref(){return this.getRuleContext(0,PV)}IF(){return this.getToken(tf.IF,0)}EXISTS(){return this.getToken(tf.EXISTS,0)}get ruleIndex(){return tf.RULE_drop_external_data_source_stmt}accept(t){return t.visitDrop_external_data_source_stmt?t.visitDrop_external_data_source_stmt(this):t.visitChildren(this)}},Gb=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(tf.CREATE,0)}VIEW(){return this.getToken(tf.VIEW,0)}object_ref(){return this.getRuleContext(0,PV)}with_table_settings(){return this.getRuleContext(0,$b)}AS(){return this.getToken(tf.AS,0)}select_stmt(){return this.getRuleContext(0,Tw)}get ruleIndex(){return tf.RULE_create_view_stmt}accept(t){return t.visitCreate_view_stmt?t.visitCreate_view_stmt(this):t.visitChildren(this)}},Fb=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(tf.DROP,0)}VIEW(){return this.getToken(tf.VIEW,0)}object_ref(){return this.getRuleContext(0,PV)}get ruleIndex(){return tf.RULE_drop_view_stmt}accept(t){return t.visitDrop_view_stmt?t.visitDrop_view_stmt(this):t.visitChildren(this)}},vb=class extends ga{constructor(t,e){super(t,e)}UPSERT(){return this.getToken(tf.UPSERT,0)}OBJECT(){return this.getToken(tf.OBJECT,0)}object_ref(){return this.getRuleContext(0,PV)}LPAREN(){return this.getToken(tf.LPAREN,0)}TYPE(){return this.getToken(tf.TYPE,0)}object_type_ref(){return this.getRuleContext(0,Jb)}RPAREN(){return this.getToken(tf.RPAREN,0)}create_object_features(){return this.getRuleContext(0,yb)}get ruleIndex(){return tf.RULE_upsert_object_stmt}accept(t){return t.visitUpsert_object_stmt?t.visitUpsert_object_stmt(this):t.visitChildren(this)}},Bb=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(tf.CREATE,0)}OBJECT(){return this.getToken(tf.OBJECT,0)}object_ref(){return this.getRuleContext(0,PV)}LPAREN(){return this.getToken(tf.LPAREN,0)}TYPE(){return this.getToken(tf.TYPE,0)}object_type_ref(){return this.getRuleContext(0,Jb)}RPAREN(){return this.getToken(tf.RPAREN,0)}IF(){return this.getToken(tf.IF,0)}NOT(){return this.getToken(tf.NOT,0)}EXISTS(){return this.getToken(tf.EXISTS,0)}create_object_features(){return this.getRuleContext(0,yb)}get ruleIndex(){return tf.RULE_create_object_stmt}accept(t){return t.visitCreate_object_stmt?t.visitCreate_object_stmt(this):t.visitChildren(this)}},yb=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(tf.WITH,0)}object_features(){return this.getRuleContext(0,Qb)}get ruleIndex(){return tf.RULE_create_object_features}accept(t){return t.visitCreate_object_features?t.visitCreate_object_features(this):t.visitChildren(this)}},fb=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}OBJECT(){return this.getToken(tf.OBJECT,0)}object_ref(){return this.getRuleContext(0,PV)}LPAREN(){return this.getToken(tf.LPAREN,0)}TYPE(){return this.getToken(tf.TYPE,0)}object_type_ref(){return this.getRuleContext(0,Jb)}RPAREN(){return this.getToken(tf.RPAREN,0)}alter_object_features(){return this.getRuleContext(0,Yb)}get ruleIndex(){return tf.RULE_alter_object_stmt}accept(t){return t.visitAlter_object_stmt?t.visitAlter_object_stmt(this):t.visitChildren(this)}},Yb=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(tf.SET,0)}object_features(){return this.getRuleContext(0,Qb)}get ruleIndex(){return tf.RULE_alter_object_features}accept(t){return t.visitAlter_object_features?t.visitAlter_object_features(this):t.visitChildren(this)}},wb=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(tf.DROP,0)}OBJECT(){return this.getToken(tf.OBJECT,0)}object_ref(){return this.getRuleContext(0,PV)}LPAREN(){return this.getToken(tf.LPAREN,0)}TYPE(){return this.getToken(tf.TYPE,0)}object_type_ref(){return this.getRuleContext(0,Jb)}RPAREN(){return this.getToken(tf.RPAREN,0)}IF(){return this.getToken(tf.IF,0)}EXISTS(){return this.getToken(tf.EXISTS,0)}drop_object_features(){return this.getRuleContext(0,bb)}get ruleIndex(){return tf.RULE_drop_object_stmt}accept(t){return t.visitDrop_object_stmt?t.visitDrop_object_stmt(this):t.visitChildren(this)}},bb=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(tf.WITH,0)}object_features(){return this.getRuleContext(0,Qb)}get ruleIndex(){return tf.RULE_drop_object_features}accept(t){return t.visitDrop_object_features?t.visitDrop_object_features(this):t.visitChildren(this)}},Wb=class extends ga{constructor(t,e){super(t,e)}id_or_type(){return this.getRuleContext(0,tK)}bind_parameter(){return this.getRuleContext(0,LY)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_object_feature_value}accept(t){return t.visitObject_feature_value?t.visitObject_feature_value(this):t.visitChildren(this)}},Vb=class extends ga{constructor(t,e){super(t,e)}an_id_or_type(){return this.getRuleContext(0,wX)}EQUALS(){return this.getToken(tf.EQUALS,0)}object_feature_value(){return this.getRuleContext(0,Wb)}get ruleIndex(){return tf.RULE_object_feature_kv}accept(t){return t.visitObject_feature_kv?t.visitObject_feature_kv(this):t.visitChildren(this)}},Xb=class extends ga{constructor(t,e){super(t,e)}an_id_or_type(){return this.getRuleContext(0,wX)}get ruleIndex(){return tf.RULE_object_feature_flag}accept(t){return t.visitObject_feature_flag?t.visitObject_feature_flag(this):t.visitChildren(this)}},Kb=class extends ga{constructor(t,e){super(t,e)}object_feature_kv(){return this.getRuleContext(0,Vb)}object_feature_flag(){return this.getRuleContext(0,Xb)}get ruleIndex(){return tf.RULE_object_feature}accept(t){return t.visitObject_feature?t.visitObject_feature(this):t.visitChildren(this)}},Qb=class extends ga{constructor(t,e){super(t,e)}object_feature(t){return void 0===t?this.getRuleContexts(Kb):this.getRuleContext(t,Kb)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_object_features}accept(t){return t.visitObject_features?t.visitObject_features(this):t.visitChildren(this)}},Jb=class extends ga{constructor(t,e){super(t,e)}an_id_or_type(){return this.getRuleContext(0,wX)}get ruleIndex(){return tf.RULE_object_type_ref}accept(t){return t.visitObject_type_ref?t.visitObject_type_ref(this):t.visitChildren(this)}},Zb=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(tf.CREATE,0)}simple_table_ref(){return this.getRuleContext(0,dV)}LPAREN(){return this.getToken(tf.LPAREN,0)}create_table_entry(t){return void 0===t?this.getRuleContexts(qb):this.getRuleContext(t,qb)}RPAREN(){return this.getToken(tf.RPAREN,0)}TABLE(){return this.getToken(tf.TABLE,0)}TABLESTORE(){return this.getToken(tf.TABLESTORE,0)}EXTERNAL(){return this.getToken(tf.EXTERNAL,0)}TEMP(){return this.getToken(tf.TEMP,0)}TEMPORARY(){return this.getToken(tf.TEMPORARY,0)}OR(){return this.getToken(tf.OR,0)}REPLACE(){return this.getToken(tf.REPLACE,0)}IF(){return this.getToken(tf.IF,0)}NOT(){return this.getToken(tf.NOT,0)}EXISTS(){return this.getToken(tf.EXISTS,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}table_inherits(){return this.getRuleContext(0,jb)}table_partition_by(){return this.getRuleContext(0,zb)}with_table_settings(){return this.getRuleContext(0,$b)}table_tablestore(){return this.getRuleContext(0,tW)}table_as_source(){return this.getRuleContext(0,sW)}get ruleIndex(){return tf.RULE_create_table_stmt}accept(t){return t.visitCreate_table_stmt?t.visitCreate_table_stmt(this):t.visitChildren(this)}},qb=class extends ga{constructor(t,e){super(t,e)}column_schema(){return this.getRuleContext(0,MW)}table_constraint(){return this.getRuleContext(0,DW)}table_index(){return this.getRuleContext(0,pW)}family_entry(){return this.getRuleContext(0,YW)}changefeed(){return this.getRuleContext(0,HW)}an_id_schema(){return this.getRuleContext(0,bX)}get ruleIndex(){return tf.RULE_create_table_entry}accept(t){return t.visitCreate_table_entry?t.visitCreate_table_entry(this):t.visitChildren(this)}},jb=class extends ga{constructor(t,e){super(t,e)}INHERITS(){return this.getToken(tf.INHERITS,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}simple_table_ref_core(t){return void 0===t?this.getRuleContexts(MV):this.getRuleContext(t,MV)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_table_inherits}accept(t){return t.visitTable_inherits?t.visitTable_inherits(this):t.visitChildren(this)}},zb=class extends ga{constructor(t,e){super(t,e)}PARTITION(){return this.getToken(tf.PARTITION,0)}BY(){return this.getToken(tf.BY,0)}HASH(){return this.getToken(tf.HASH,0)}pure_column_list(){return this.getRuleContext(0,iY)}get ruleIndex(){return tf.RULE_table_partition_by}accept(t){return t.visitTable_partition_by?t.visitTable_partition_by(this):t.visitChildren(this)}},$b=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(tf.WITH,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}table_settings_entry(t){return void 0===t?this.getRuleContexts(eW):this.getRuleContext(t,eW)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_with_table_settings}accept(t){return t.visitWith_table_settings?t.visitWith_table_settings(this):t.visitChildren(this)}},tW=class extends ga{constructor(t,e){super(t,e)}TABLESTORE(){return this.getToken(tf.TABLESTORE,0)}simple_table_ref_core(){return this.getRuleContext(0,MV)}get ruleIndex(){return tf.RULE_table_tablestore}accept(t){return t.visitTable_tablestore?t.visitTable_tablestore(this):t.visitChildren(this)}},eW=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}EQUALS(){return this.getToken(tf.EQUALS,0)}table_setting_value(){return this.getRuleContext(0,fW)}get ruleIndex(){return tf.RULE_table_settings_entry}accept(t){return t.visitTable_settings_entry?t.visitTable_settings_entry(this):t.visitChildren(this)}},sW=class extends ga{constructor(t,e){super(t,e)}AS(){return this.getToken(tf.AS,0)}values_source(){return this.getRuleContext(0,Ub)}get ruleIndex(){return tf.RULE_table_as_source}accept(t){return t.visitTable_as_source?t.visitTable_as_source(this):t.visitChildren(this)}},aW=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}TABLE(){return this.getToken(tf.TABLE,0)}simple_table_ref(){return this.getRuleContext(0,dV)}alter_table_action(t){return void 0===t?this.getRuleContexts(rW):this.getRuleContext(t,rW)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_alter_table_stmt}accept(t){return t.visitAlter_table_stmt?t.visitAlter_table_stmt(this):t.visitChildren(this)}},rW=class extends ga{constructor(t,e){super(t,e)}alter_table_add_column(){return this.getRuleContext(0,EW)}alter_table_drop_column(){return this.getRuleContext(0,TW)}alter_table_alter_column(){return this.getRuleContext(0,oW)}alter_table_add_column_family(){return this.getRuleContext(0,RW)}alter_table_alter_column_family(){return this.getRuleContext(0,AW)}alter_table_set_table_setting_uncompat(){return this.getRuleContext(0,SW)}alter_table_set_table_setting_compat(){return this.getRuleContext(0,lW)}alter_table_reset_table_setting(){return this.getRuleContext(0,OW)}alter_table_add_index(){return this.getRuleContext(0,IW)}alter_table_drop_index(){return this.getRuleContext(0,uW)}alter_table_rename_to(){return this.getRuleContext(0,NW)}alter_table_add_changefeed(){return this.getRuleContext(0,CW)}alter_table_alter_changefeed(){return this.getRuleContext(0,_W)}alter_table_drop_changefeed(){return this.getRuleContext(0,PW)}alter_table_rename_index_to(){return this.getRuleContext(0,LW)}get ruleIndex(){return tf.RULE_alter_table_action}accept(t){return t.visitAlter_table_action?t.visitAlter_table_action(this):t.visitChildren(this)}},iW=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}EXTERNAL(){return this.getToken(tf.EXTERNAL,0)}TABLE(){return this.getToken(tf.TABLE,0)}simple_table_ref(){return this.getRuleContext(0,dV)}alter_external_table_action(t){return void 0===t?this.getRuleContexts(cW):this.getRuleContext(t,cW)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_alter_external_table_stmt}accept(t){return t.visitAlter_external_table_stmt?t.visitAlter_external_table_stmt(this):t.visitChildren(this)}},cW=class extends ga{constructor(t,e){super(t,e)}alter_table_add_column(){return this.getRuleContext(0,EW)}alter_table_drop_column(){return this.getRuleContext(0,TW)}alter_table_set_table_setting_uncompat(){return this.getRuleContext(0,SW)}alter_table_set_table_setting_compat(){return this.getRuleContext(0,lW)}alter_table_reset_table_setting(){return this.getRuleContext(0,OW)}get ruleIndex(){return tf.RULE_alter_external_table_action}accept(t){return t.visitAlter_external_table_action?t.visitAlter_external_table_action(this):t.visitChildren(this)}},nW=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}TABLESTORE(){return this.getToken(tf.TABLESTORE,0)}object_ref(){return this.getRuleContext(0,PV)}alter_table_store_action(t){return void 0===t?this.getRuleContexts(hW):this.getRuleContext(t,hW)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_alter_table_store_stmt}accept(t){return t.visitAlter_table_store_stmt?t.visitAlter_table_store_stmt(this):t.visitChildren(this)}},hW=class extends ga{constructor(t,e){super(t,e)}alter_table_add_column(){return this.getRuleContext(0,EW)}alter_table_drop_column(){return this.getRuleContext(0,TW)}get ruleIndex(){return tf.RULE_alter_table_store_action}accept(t){return t.visitAlter_table_store_action?t.visitAlter_table_store_action(this):t.visitChildren(this)}},EW=class extends ga{constructor(t,e){super(t,e)}ADD(){return this.getToken(tf.ADD,0)}column_schema(){return this.getRuleContext(0,MW)}COLUMN(){return this.getToken(tf.COLUMN,0)}get ruleIndex(){return tf.RULE_alter_table_add_column}accept(t){return t.visitAlter_table_add_column?t.visitAlter_table_add_column(this):t.visitChildren(this)}},TW=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(tf.DROP,0)}an_id(){return this.getRuleContext(0,YX)}COLUMN(){return this.getToken(tf.COLUMN,0)}get ruleIndex(){return tf.RULE_alter_table_drop_column}accept(t){return t.visitAlter_table_drop_column?t.visitAlter_table_drop_column(this):t.visitChildren(this)}},oW=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}COLUMN(){return this.getToken(tf.COLUMN,0)}an_id(){return this.getRuleContext(0,YX)}SET(){return this.getToken(tf.SET,0)}family_relation(){return this.getRuleContext(0,dW)}get ruleIndex(){return tf.RULE_alter_table_alter_column}accept(t){return t.visitAlter_table_alter_column?t.visitAlter_table_alter_column(this):t.visitChildren(this)}},RW=class extends ga{constructor(t,e){super(t,e)}ADD(){return this.getToken(tf.ADD,0)}family_entry(){return this.getRuleContext(0,YW)}get ruleIndex(){return tf.RULE_alter_table_add_column_family}accept(t){return t.visitAlter_table_add_column_family?t.visitAlter_table_add_column_family(this):t.visitChildren(this)}},AW=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}FAMILY(){return this.getToken(tf.FAMILY,0)}an_id(t){return void 0===t?this.getRuleContexts(YX):this.getRuleContext(t,YX)}SET(){return this.getToken(tf.SET,0)}family_setting_value(){return this.getRuleContext(0,WW)}get ruleIndex(){return tf.RULE_alter_table_alter_column_family}accept(t){return t.visitAlter_table_alter_column_family?t.visitAlter_table_alter_column_family(this):t.visitChildren(this)}},SW=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(tf.SET,0)}an_id(){return this.getRuleContext(0,YX)}table_setting_value(){return this.getRuleContext(0,fW)}get ruleIndex(){return tf.RULE_alter_table_set_table_setting_uncompat}accept(t){return t.visitAlter_table_set_table_setting_uncompat?t.visitAlter_table_set_table_setting_uncompat(this):t.visitChildren(this)}},lW=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(tf.SET,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}alter_table_setting_entry(t){return void 0===t?this.getRuleContexts(yW):this.getRuleContext(t,yW)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_alter_table_set_table_setting_compat}accept(t){return t.visitAlter_table_set_table_setting_compat?t.visitAlter_table_set_table_setting_compat(this):t.visitChildren(this)}},OW=class extends ga{constructor(t,e){super(t,e)}RESET(){return this.getToken(tf.RESET,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}an_id(t){return void 0===t?this.getRuleContexts(YX):this.getRuleContext(t,YX)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_alter_table_reset_table_setting}accept(t){return t.visitAlter_table_reset_table_setting?t.visitAlter_table_reset_table_setting(this):t.visitChildren(this)}},IW=class extends ga{constructor(t,e){super(t,e)}ADD(){return this.getToken(tf.ADD,0)}table_index(){return this.getRuleContext(0,pW)}get ruleIndex(){return tf.RULE_alter_table_add_index}accept(t){return t.visitAlter_table_add_index?t.visitAlter_table_add_index(this):t.visitChildren(this)}},uW=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(tf.DROP,0)}INDEX(){return this.getToken(tf.INDEX,0)}an_id(){return this.getRuleContext(0,YX)}get ruleIndex(){return tf.RULE_alter_table_drop_index}accept(t){return t.visitAlter_table_drop_index?t.visitAlter_table_drop_index(this):t.visitChildren(this)}},NW=class extends ga{constructor(t,e){super(t,e)}RENAME(){return this.getToken(tf.RENAME,0)}TO(){return this.getToken(tf.TO,0)}an_id_table(){return this.getRuleContext(0,KX)}get ruleIndex(){return tf.RULE_alter_table_rename_to}accept(t){return t.visitAlter_table_rename_to?t.visitAlter_table_rename_to(this):t.visitChildren(this)}},LW=class extends ga{constructor(t,e){super(t,e)}RENAME(){return this.getToken(tf.RENAME,0)}INDEX(){return this.getToken(tf.INDEX,0)}an_id(t){return void 0===t?this.getRuleContexts(YX):this.getRuleContext(t,YX)}TO(){return this.getToken(tf.TO,0)}get ruleIndex(){return tf.RULE_alter_table_rename_index_to}accept(t){return t.visitAlter_table_rename_index_to?t.visitAlter_table_rename_index_to(this):t.visitChildren(this)}},CW=class extends ga{constructor(t,e){super(t,e)}ADD(){return this.getToken(tf.ADD,0)}changefeed(){return this.getRuleContext(0,HW)}get ruleIndex(){return tf.RULE_alter_table_add_changefeed}accept(t){return t.visitAlter_table_add_changefeed?t.visitAlter_table_add_changefeed(this):t.visitChildren(this)}},_W=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}CHANGEFEED(){return this.getToken(tf.CHANGEFEED,0)}an_id(){return this.getRuleContext(0,YX)}changefeed_alter_settings(){return this.getRuleContext(0,BW)}get ruleIndex(){return tf.RULE_alter_table_alter_changefeed}accept(t){return t.visitAlter_table_alter_changefeed?t.visitAlter_table_alter_changefeed(this):t.visitChildren(this)}},PW=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(tf.DROP,0)}CHANGEFEED(){return this.getToken(tf.CHANGEFEED,0)}an_id(){return this.getRuleContext(0,YX)}get ruleIndex(){return tf.RULE_alter_table_drop_changefeed}accept(t){return t.visitAlter_table_drop_changefeed?t.visitAlter_table_drop_changefeed(this):t.visitChildren(this)}},MW=class extends ga{constructor(t,e){super(t,e)}an_id_schema(){return this.getRuleContext(0,bX)}type_name_or_bind(){return this.getRuleContext(0,qY)}opt_column_constraints(){return this.getRuleContext(0,UW)}family_relation(){return this.getRuleContext(0,dW)}get ruleIndex(){return tf.RULE_column_schema}accept(t){return t.visitColumn_schema?t.visitColumn_schema(this):t.visitChildren(this)}},dW=class extends ga{constructor(t,e){super(t,e)}FAMILY(){return this.getToken(tf.FAMILY,0)}an_id(){return this.getRuleContext(0,YX)}get ruleIndex(){return tf.RULE_family_relation}accept(t){return t.visitFamily_relation?t.visitFamily_relation(this):t.visitChildren(this)}},UW=class extends ga{constructor(t,e){super(t,e)}NULL(){return this.getToken(tf.NULL,0)}DEFAULT(){return this.getToken(tf.DEFAULT,0)}expr(){return this.getRuleContext(0,Ef)}NOT(){return this.getToken(tf.NOT,0)}get ruleIndex(){return tf.RULE_opt_column_constraints}accept(t){return t.visitOpt_column_constraints?t.visitOpt_column_constraints(this):t.visitChildren(this)}},mW=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}ASC(){return this.getToken(tf.ASC,0)}DESC(){return this.getToken(tf.DESC,0)}get ruleIndex(){return tf.RULE_column_order_by_specification}accept(t){return t.visitColumn_order_by_specification?t.visitColumn_order_by_specification(this):t.visitChildren(this)}},DW=class extends ga{constructor(t,e){super(t,e)}PRIMARY(){return this.getToken(tf.PRIMARY,0)}KEY(){return this.getToken(tf.KEY,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}an_id(t){return void 0===t?this.getRuleContexts(YX):this.getRuleContext(t,YX)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}PARTITION(){return this.getToken(tf.PARTITION,0)}BY(){return this.getToken(tf.BY,0)}ORDER(){return this.getToken(tf.ORDER,0)}column_order_by_specification(t){return void 0===t?this.getRuleContexts(mW):this.getRuleContext(t,mW)}get ruleIndex(){return tf.RULE_table_constraint}accept(t){return t.visitTable_constraint?t.visitTable_constraint(this):t.visitChildren(this)}},pW=class extends ga{constructor(t,e){super(t,e)}INDEX(){return this.getToken(tf.INDEX,0)}an_id(t){return void 0===t?this.getRuleContexts(YX):this.getRuleContext(t,YX)}table_index_type(){return this.getRuleContext(0,gW)}ON(){return this.getToken(tf.ON,0)}LPAREN(t){return void 0===t?this.getTokens(tf.LPAREN):this.getToken(tf.LPAREN,t)}an_id_schema(t){return void 0===t?this.getRuleContexts(bX):this.getRuleContext(t,bX)}RPAREN(t){return void 0===t?this.getTokens(tf.RPAREN):this.getToken(tf.RPAREN,t)}WITH(){return this.getToken(tf.WITH,0)}EQUALS(t){return void 0===t?this.getTokens(tf.EQUALS):this.getToken(tf.EQUALS,t)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}COVER(){return this.getToken(tf.COVER,0)}get ruleIndex(){return tf.RULE_table_index}accept(t){return t.visitTable_index?t.visitTable_index(this):t.visitChildren(this)}},gW=class extends ga{constructor(t,e){super(t,e)}global_index(){return this.getRuleContext(0,xW)}local_index(){return this.getRuleContext(0,kW)}get ruleIndex(){return tf.RULE_table_index_type}accept(t){return t.visitTable_index_type?t.visitTable_index_type(this):t.visitChildren(this)}},xW=class extends ga{constructor(t,e){super(t,e)}GLOBAL(){return this.getToken(tf.GLOBAL,0)}UNIQUE(){return this.getToken(tf.UNIQUE,0)}SYNC(){return this.getToken(tf.SYNC,0)}ASYNC(){return this.getToken(tf.ASYNC,0)}get ruleIndex(){return tf.RULE_global_index}accept(t){return t.visitGlobal_index?t.visitGlobal_index(this):t.visitChildren(this)}},kW=class extends ga{constructor(t,e){super(t,e)}LOCAL(){return this.getToken(tf.LOCAL,0)}get ruleIndex(){return tf.RULE_local_index}accept(t){return t.visitLocal_index?t.visitLocal_index(this):t.visitChildren(this)}},HW=class extends ga{constructor(t,e){super(t,e)}CHANGEFEED(){return this.getToken(tf.CHANGEFEED,0)}an_id(){return this.getRuleContext(0,YX)}WITH(){return this.getToken(tf.WITH,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}changefeed_settings(){return this.getRuleContext(0,GW)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_changefeed}accept(t){return t.visitChangefeed?t.visitChangefeed(this):t.visitChildren(this)}},GW=class extends ga{constructor(t,e){super(t,e)}changefeed_settings_entry(t){return void 0===t?this.getRuleContexts(FW):this.getRuleContext(t,FW)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_changefeed_settings}accept(t){return t.visitChangefeed_settings?t.visitChangefeed_settings(this):t.visitChildren(this)}},FW=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}EQUALS(){return this.getToken(tf.EQUALS,0)}changefeed_setting_value(){return this.getRuleContext(0,vW)}get ruleIndex(){return tf.RULE_changefeed_settings_entry}accept(t){return t.visitChangefeed_settings_entry?t.visitChangefeed_settings_entry(this):t.visitChildren(this)}},vW=class extends ga{constructor(t,e){super(t,e)}expr(){return this.getRuleContext(0,Ef)}get ruleIndex(){return tf.RULE_changefeed_setting_value}accept(t){return t.visitChangefeed_setting_value?t.visitChangefeed_setting_value(this):t.visitChildren(this)}},BW=class extends ga{constructor(t,e){super(t,e)}DISABLE(){return this.getToken(tf.DISABLE,0)}SET(){return this.getToken(tf.SET,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}changefeed_settings(){return this.getRuleContext(0,GW)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_changefeed_alter_settings}accept(t){return t.visitChangefeed_alter_settings?t.visitChangefeed_alter_settings(this):t.visitChildren(this)}},yW=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}EQUALS(){return this.getToken(tf.EQUALS,0)}table_setting_value(){return this.getRuleContext(0,fW)}get ruleIndex(){return tf.RULE_alter_table_setting_entry}accept(t){return t.visitAlter_table_setting_entry?t.visitAlter_table_setting_entry(this):t.visitChildren(this)}},fW=class extends ga{constructor(t,e){super(t,e)}id(){return this.getRuleContext(0,xX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}integer(){return this.getRuleContext(0,uK)}split_boundaries(){return this.getRuleContext(0,VW)}expr(){return this.getRuleContext(0,Ef)}ON(){return this.getToken(tf.ON,0)}an_id(){return this.getRuleContext(0,YX)}AS(){return this.getToken(tf.AS,0)}SECONDS(){return this.getToken(tf.SECONDS,0)}MILLISECONDS(){return this.getToken(tf.MILLISECONDS,0)}MICROSECONDS(){return this.getToken(tf.MICROSECONDS,0)}NANOSECONDS(){return this.getToken(tf.NANOSECONDS,0)}bool_value(){return this.getRuleContext(0,OK)}get ruleIndex(){return tf.RULE_table_setting_value}accept(t){return t.visitTable_setting_value?t.visitTable_setting_value(this):t.visitChildren(this)}},YW=class extends ga{constructor(t,e){super(t,e)}FAMILY(){return this.getToken(tf.FAMILY,0)}an_id(){return this.getRuleContext(0,YX)}family_settings(){return this.getRuleContext(0,wW)}get ruleIndex(){return tf.RULE_family_entry}accept(t){return t.visitFamily_entry?t.visitFamily_entry(this):t.visitChildren(this)}},wW=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}family_settings_entry(t){return void 0===t?this.getRuleContexts(bW):this.getRuleContext(t,bW)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_family_settings}accept(t){return t.visitFamily_settings?t.visitFamily_settings(this):t.visitChildren(this)}},bW=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}EQUALS(){return this.getToken(tf.EQUALS,0)}family_setting_value(){return this.getRuleContext(0,WW)}get ruleIndex(){return tf.RULE_family_settings_entry}accept(t){return t.visitFamily_settings_entry?t.visitFamily_settings_entry(this):t.visitChildren(this)}},WW=class extends ga{constructor(t,e){super(t,e)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_family_setting_value}accept(t){return t.visitFamily_setting_value?t.visitFamily_setting_value(this):t.visitChildren(this)}},VW=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}literal_value_list(t){return void 0===t?this.getRuleContexts(XW):this.getRuleContext(t,XW)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_split_boundaries}accept(t){return t.visitSplit_boundaries?t.visitSplit_boundaries(this):t.visitChildren(this)}},XW=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}literal_value(t){return void 0===t?this.getRuleContexts(NY):this.getRuleContext(t,NY)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_literal_value_list}accept(t){return t.visitLiteral_value_list?t.visitLiteral_value_list(this):t.visitChildren(this)}},KW=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(tf.DROP,0)}simple_table_ref(){return this.getRuleContext(0,dV)}TABLE(){return this.getToken(tf.TABLE,0)}TABLESTORE(){return this.getToken(tf.TABLESTORE,0)}EXTERNAL(){return this.getToken(tf.EXTERNAL,0)}IF(){return this.getToken(tf.IF,0)}EXISTS(){return this.getToken(tf.EXISTS,0)}get ruleIndex(){return tf.RULE_drop_table_stmt}accept(t){return t.visitDrop_table_stmt?t.visitDrop_table_stmt(this):t.visitChildren(this)}},QW=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(tf.CREATE,0)}USER(){return this.getToken(tf.USER,0)}role_name(){return this.getRuleContext(0,zW)}create_user_option(){return this.getRuleContext(0,$W)}get ruleIndex(){return tf.RULE_create_user_stmt}accept(t){return t.visitCreate_user_stmt?t.visitCreate_user_stmt(this):t.visitChildren(this)}},JW=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}USER(){return this.getToken(tf.USER,0)}role_name(t){return void 0===t?this.getRuleContexts(zW):this.getRuleContext(t,zW)}create_user_option(){return this.getRuleContext(0,$W)}RENAME(){return this.getToken(tf.RENAME,0)}TO(){return this.getToken(tf.TO,0)}WITH(){return this.getToken(tf.WITH,0)}get ruleIndex(){return tf.RULE_alter_user_stmt}accept(t){return t.visitAlter_user_stmt?t.visitAlter_user_stmt(this):t.visitChildren(this)}},ZW=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(tf.CREATE,0)}GROUP(){return this.getToken(tf.GROUP,0)}role_name(t){return void 0===t?this.getRuleContexts(zW):this.getRuleContext(t,zW)}WITH(){return this.getToken(tf.WITH,0)}USER(){return this.getToken(tf.USER,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_create_group_stmt}accept(t){return t.visitCreate_group_stmt?t.visitCreate_group_stmt(this):t.visitChildren(this)}},qW=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}GROUP(){return this.getToken(tf.GROUP,0)}role_name(t){return void 0===t?this.getRuleContexts(zW):this.getRuleContext(t,zW)}USER(){return this.getToken(tf.USER,0)}RENAME(){return this.getToken(tf.RENAME,0)}TO(){return this.getToken(tf.TO,0)}ADD(){return this.getToken(tf.ADD,0)}DROP(){return this.getToken(tf.DROP,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_alter_group_stmt}accept(t){return t.visitAlter_group_stmt?t.visitAlter_group_stmt(this):t.visitChildren(this)}},jW=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(tf.DROP,0)}role_name(t){return void 0===t?this.getRuleContexts(zW):this.getRuleContext(t,zW)}USER(){return this.getToken(tf.USER,0)}GROUP(){return this.getToken(tf.GROUP,0)}IF(){return this.getToken(tf.IF,0)}EXISTS(){return this.getToken(tf.EXISTS,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_drop_role_stmt}accept(t){return t.visitDrop_role_stmt?t.visitDrop_role_stmt(this):t.visitChildren(this)}},zW=class extends ga{constructor(t,e){super(t,e)}an_id_or_type(){return this.getRuleContext(0,wX)}bind_parameter(){return this.getRuleContext(0,LY)}get ruleIndex(){return tf.RULE_role_name}accept(t){return t.visitRole_name?t.visitRole_name(this):t.visitChildren(this)}},$W=class extends ga{constructor(t,e){super(t,e)}PASSWORD(){return this.getToken(tf.PASSWORD,0)}expr(){return this.getRuleContext(0,Ef)}ENCRYPTED(){return this.getToken(tf.ENCRYPTED,0)}get ruleIndex(){return tf.RULE_create_user_option}accept(t){return t.visitCreate_user_option?t.visitCreate_user_option(this):t.visitChildren(this)}},tV=class extends ga{constructor(t,e){super(t,e)}GRANT(t){return void 0===t?this.getTokens(tf.GRANT):this.getToken(tf.GRANT,t)}permission_name_target(){return this.getRuleContext(0,rV)}ON(){return this.getToken(tf.ON,0)}an_id_schema(t){return void 0===t?this.getRuleContexts(bX):this.getRuleContext(t,bX)}TO(){return this.getToken(tf.TO,0)}role_name(t){return void 0===t?this.getRuleContexts(zW):this.getRuleContext(t,zW)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}WITH(){return this.getToken(tf.WITH,0)}OPTION(){return this.getToken(tf.OPTION,0)}get ruleIndex(){return tf.RULE_grant_permissions_stmt}accept(t){return t.visitGrant_permissions_stmt?t.visitGrant_permissions_stmt(this):t.visitChildren(this)}},eV=class extends ga{constructor(t,e){super(t,e)}REVOKE(){return this.getToken(tf.REVOKE,0)}permission_name_target(){return this.getRuleContext(0,rV)}ON(){return this.getToken(tf.ON,0)}an_id_schema(t){return void 0===t?this.getRuleContexts(bX):this.getRuleContext(t,bX)}FROM(){return this.getToken(tf.FROM,0)}role_name(t){return void 0===t?this.getRuleContexts(zW):this.getRuleContext(t,zW)}GRANT(){return this.getToken(tf.GRANT,0)}OPTION(){return this.getToken(tf.OPTION,0)}FOR(){return this.getToken(tf.FOR,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_revoke_permissions_stmt}accept(t){return t.visitRevoke_permissions_stmt?t.visitRevoke_permissions_stmt(this):t.visitChildren(this)}},sV=class extends ga{constructor(t,e){super(t,e)}CONNECT(){return this.getToken(tf.CONNECT,0)}LIST(){return this.getToken(tf.LIST,0)}INSERT(){return this.getToken(tf.INSERT,0)}MANAGE(){return this.getToken(tf.MANAGE,0)}DROP(){return this.getToken(tf.DROP,0)}GRANT(){return this.getToken(tf.GRANT,0)}MODIFY(){return this.getToken(tf.MODIFY,0)}TABLES(){return this.getToken(tf.TABLES,0)}ATTRIBUTES(){return this.getToken(tf.ATTRIBUTES,0)}ROW(){return this.getToken(tf.ROW,0)}UPDATE(){return this.getToken(tf.UPDATE,0)}ERASE(){return this.getToken(tf.ERASE,0)}SCHEMA(){return this.getToken(tf.SCHEMA,0)}REMOVE(){return this.getToken(tf.REMOVE,0)}DESCRIBE(){return this.getToken(tf.DESCRIBE,0)}ALTER(){return this.getToken(tf.ALTER,0)}SELECT(){return this.getToken(tf.SELECT,0)}USE(){return this.getToken(tf.USE,0)}FULL(){return this.getToken(tf.FULL,0)}LEGACY(){return this.getToken(tf.LEGACY,0)}CREATE(){return this.getToken(tf.CREATE,0)}DIRECTORY(){return this.getToken(tf.DIRECTORY,0)}TABLE(){return this.getToken(tf.TABLE,0)}QUEUE(){return this.getToken(tf.QUEUE,0)}get ruleIndex(){return tf.RULE_permission_id}accept(t){return t.visitPermission_id?t.visitPermission_id(this):t.visitChildren(this)}},aV=class extends ga{constructor(t,e){super(t,e)}permission_id(){return this.getRuleContext(0,sV)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_permission_name}accept(t){return t.visitPermission_name?t.visitPermission_name(this):t.visitChildren(this)}},rV=class extends ga{constructor(t,e){super(t,e)}permission_name(t){return void 0===t?this.getRuleContexts(aV):this.getRuleContext(t,aV)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}ALL(){return this.getToken(tf.ALL,0)}PRIVILEGES(){return this.getToken(tf.PRIVILEGES,0)}get ruleIndex(){return tf.RULE_permission_name_target}accept(t){return t.visitPermission_name_target?t.visitPermission_name_target(this):t.visitChildren(this)}},iV=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(tf.CREATE,0)}ASYNC(){return this.getToken(tf.ASYNC,0)}REPLICATION(){return this.getToken(tf.REPLICATION,0)}object_ref(){return this.getRuleContext(0,PV)}FOR(){return this.getToken(tf.FOR,0)}replication_target(t){return void 0===t?this.getRuleContexts(cV):this.getRuleContext(t,cV)}WITH(){return this.getToken(tf.WITH,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}replication_settings(){return this.getRuleContext(0,nV)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_create_replication_stmt}accept(t){return t.visitCreate_replication_stmt?t.visitCreate_replication_stmt(this):t.visitChildren(this)}},cV=class extends ga{constructor(t,e){super(t,e)}object_ref(){return this.getRuleContext(0,PV)}replication_name(){return this.getRuleContext(0,PK)}get ruleIndex(){return tf.RULE_replication_target}accept(t){return t.visitReplication_target?t.visitReplication_target(this):t.visitChildren(this)}},nV=class extends ga{constructor(t,e){super(t,e)}replication_settings_entry(t){return void 0===t?this.getRuleContexts(hV):this.getRuleContext(t,hV)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_replication_settings}accept(t){return t.visitReplication_settings?t.visitReplication_settings(this):t.visitChildren(this)}},hV=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}EQUALS(){return this.getToken(tf.EQUALS,0)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_replication_settings_entry}accept(t){return t.visitReplication_settings_entry?t.visitReplication_settings_entry(this):t.visitChildren(this)}},EV=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}ASYNC(){return this.getToken(tf.ASYNC,0)}REPLICATION(){return this.getToken(tf.REPLICATION,0)}object_ref(){return this.getRuleContext(0,PV)}alter_replication_action(t){return void 0===t?this.getRuleContexts(TV):this.getRuleContext(t,TV)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_alter_replication_stmt}accept(t){return t.visitAlter_replication_stmt?t.visitAlter_replication_stmt(this):t.visitChildren(this)}},TV=class extends ga{constructor(t,e){super(t,e)}alter_replication_set_setting(){return this.getRuleContext(0,oV)}get ruleIndex(){return tf.RULE_alter_replication_action}accept(t){return t.visitAlter_replication_action?t.visitAlter_replication_action(this):t.visitChildren(this)}},oV=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(tf.SET,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}replication_settings(){return this.getRuleContext(0,nV)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_alter_replication_set_setting}accept(t){return t.visitAlter_replication_set_setting?t.visitAlter_replication_set_setting(this):t.visitChildren(this)}},RV=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(tf.DROP,0)}ASYNC(){return this.getToken(tf.ASYNC,0)}REPLICATION(){return this.getToken(tf.REPLICATION,0)}object_ref(){return this.getRuleContext(0,PV)}CASCADE(){return this.getToken(tf.CASCADE,0)}get ruleIndex(){return tf.RULE_drop_replication_stmt}accept(t){return t.visitDrop_replication_stmt?t.visitDrop_replication_stmt(this):t.visitChildren(this)}},AV=class extends ga{constructor(t,e){super(t,e)}opt_bind_parameter(t){return void 0===t?this.getRuleContexts(CY):this.getRuleContext(t,CY)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_action_or_subquery_args}accept(t){return t.visitAction_or_subquery_args?t.visitAction_or_subquery_args(this):t.visitChildren(this)}},SV=class extends ga{constructor(t,e){super(t,e)}DEFINE(t){return void 0===t?this.getTokens(tf.DEFINE):this.getToken(tf.DEFINE,t)}bind_parameter(){return this.getRuleContext(0,LY)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}AS(){return this.getToken(tf.AS,0)}define_action_or_subquery_body(){return this.getRuleContext(0,lV)}END(){return this.getToken(tf.END,0)}ACTION(){return this.getToken(tf.ACTION,0)}SUBQUERY(){return this.getToken(tf.SUBQUERY,0)}action_or_subquery_args(){return this.getRuleContext(0,AV)}get ruleIndex(){return tf.RULE_define_action_or_subquery_stmt}accept(t){return t.visitDefine_action_or_subquery_stmt?t.visitDefine_action_or_subquery_stmt(this):t.visitChildren(this)}},lV=class extends ga{constructor(t,e){super(t,e)}SEMICOLON(t){return void 0===t?this.getTokens(tf.SEMICOLON):this.getToken(tf.SEMICOLON,t)}sql_stmt_core(t){return void 0===t?this.getRuleContexts(hf):this.getRuleContext(t,hf)}get ruleIndex(){return tf.RULE_define_action_or_subquery_body}accept(t){return t.visitDefine_action_or_subquery_body?t.visitDefine_action_or_subquery_body(this):t.visitChildren(this)}},OV=class extends ga{constructor(t,e){super(t,e)}IF(){return this.getToken(tf.IF,0)}expr(){return this.getRuleContext(0,Ef)}do_stmt(t){return void 0===t?this.getRuleContexts(iw):this.getRuleContext(t,iw)}EVALUATE(){return this.getToken(tf.EVALUATE,0)}ELSE(){return this.getToken(tf.ELSE,0)}get ruleIndex(){return tf.RULE_if_stmt}accept(t){return t.visitIf_stmt?t.visitIf_stmt(this):t.visitChildren(this)}},IV=class extends ga{constructor(t,e){super(t,e)}FOR(){return this.getToken(tf.FOR,0)}bind_parameter(){return this.getRuleContext(0,LY)}IN(){return this.getToken(tf.IN,0)}expr(){return this.getRuleContext(0,Ef)}do_stmt(t){return void 0===t?this.getRuleContexts(iw):this.getRuleContext(t,iw)}EVALUATE(){return this.getToken(tf.EVALUATE,0)}PARALLEL(){return this.getToken(tf.PARALLEL,0)}ELSE(){return this.getToken(tf.ELSE,0)}get ruleIndex(){return tf.RULE_for_stmt}accept(t){return t.visitFor_stmt?t.visitFor_stmt(this):t.visitChildren(this)}},uV=class extends ga{constructor(t,e){super(t,e)}table_key(){return this.getRuleContext(0,NV)}an_id_expr(){return this.getRuleContext(0,WX)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}bind_parameter(){return this.getRuleContext(0,LY)}cluster_expr(){return this.getRuleContext(0,$X)}DOT(){return this.getToken(tf.DOT,0)}AT(){return this.getToken(tf.AT,0)}table_hints(){return this.getRuleContext(0,CV)}table_arg(t){return void 0===t?this.getRuleContexts(LV):this.getRuleContext(t,LV)}VIEW(){return this.getToken(tf.VIEW,0)}view_name(){return this.getRuleContext(0,jX)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}expr_list(){return this.getRuleContext(0,rY)}get ruleIndex(){return tf.RULE_table_ref}accept(t){return t.visitTable_ref?t.visitTable_ref(this):t.visitChildren(this)}},NV=class extends ga{constructor(t,e){super(t,e)}id_table_or_type(){return this.getRuleContext(0,aK)}VIEW(){return this.getToken(tf.VIEW,0)}view_name(){return this.getRuleContext(0,jX)}get ruleIndex(){return tf.RULE_table_key}accept(t){return t.visitTable_key?t.visitTable_key(this):t.visitChildren(this)}},LV=class extends ga{constructor(t,e){super(t,e)}named_expr(){return this.getRuleContext(0,RY)}AT(){return this.getToken(tf.AT,0)}VIEW(){return this.getToken(tf.VIEW,0)}view_name(){return this.getRuleContext(0,jX)}get ruleIndex(){return tf.RULE_table_arg}accept(t){return t.visitTable_arg?t.visitTable_arg(this):t.visitChildren(this)}},CV=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(tf.WITH,0)}table_hint(t){return void 0===t?this.getRuleContexts(_V):this.getRuleContext(t,_V)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_table_hints}accept(t){return t.visitTable_hints?t.visitTable_hints(this):t.visitChildren(this)}},_V=class extends ga{constructor(t,e){super(t,e)}an_id_hint(){return this.getRuleContext(0,JX)}EQUALS(){return this.getToken(tf.EQUALS,0)}type_name_tag(t){return void 0===t?this.getRuleContexts(DY):this.getRuleContext(t,DY)}LPAREN(){return this.getToken(tf.LPAREN,0)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}type_name_or_bind(){return this.getRuleContext(0,qY)}SCHEMA(){return this.getToken(tf.SCHEMA,0)}COLUMNS(){return this.getToken(tf.COLUMNS,0)}struct_arg_positional(t){return void 0===t?this.getRuleContexts(gY):this.getRuleContext(t,gY)}get ruleIndex(){return tf.RULE_table_hint}accept(t){return t.visitTable_hint?t.visitTable_hint(this):t.visitChildren(this)}},PV=class extends ga{constructor(t,e){super(t,e)}id_or_at(){return this.getRuleContext(0,sK)}cluster_expr(){return this.getRuleContext(0,$X)}DOT(){return this.getToken(tf.DOT,0)}get ruleIndex(){return tf.RULE_object_ref}accept(t){return t.visitObject_ref?t.visitObject_ref(this):t.visitChildren(this)}},MV=class extends ga{constructor(t,e){super(t,e)}object_ref(){return this.getRuleContext(0,PV)}bind_parameter(){return this.getRuleContext(0,LY)}AT(){return this.getToken(tf.AT,0)}get ruleIndex(){return tf.RULE_simple_table_ref_core}accept(t){return t.visitSimple_table_ref_core?t.visitSimple_table_ref_core(this):t.visitChildren(this)}},dV=class extends ga{constructor(t,e){super(t,e)}simple_table_ref_core(){return this.getRuleContext(0,MV)}table_hints(){return this.getRuleContext(0,CV)}get ruleIndex(){return tf.RULE_simple_table_ref}accept(t){return t.visitSimple_table_ref?t.visitSimple_table_ref(this):t.visitChildren(this)}},UV=class extends ga{constructor(t,e){super(t,e)}simple_table_ref(){return this.getRuleContext(0,dV)}ERASE(){return this.getToken(tf.ERASE,0)}BY(){return this.getToken(tf.BY,0)}pure_column_list(){return this.getRuleContext(0,iY)}get ruleIndex(){return tf.RULE_into_simple_table_ref}accept(t){return t.visitInto_simple_table_ref?t.visitInto_simple_table_ref(this):t.visitChildren(this)}},mV=class extends ga{constructor(t,e){super(t,e)}DELETE(){return this.getToken(tf.DELETE,0)}FROM(){return this.getToken(tf.FROM,0)}simple_table_ref(){return this.getRuleContext(0,dV)}where_expr(){return this.getRuleContext(0,MK)}ON(){return this.getToken(tf.ON,0)}into_values_source(){return this.getRuleContext(0,Mb)}returning_columns_list(){return this.getRuleContext(0,Cb)}get ruleIndex(){return tf.RULE_delete_stmt}accept(t){return t.visitDelete_stmt?t.visitDelete_stmt(this):t.visitChildren(this)}},DV=class extends ga{constructor(t,e){super(t,e)}UPDATE(){return this.getToken(tf.UPDATE,0)}simple_table_ref(){return this.getRuleContext(0,dV)}SET(){return this.getToken(tf.SET,0)}set_clause_choice(){return this.getRuleContext(0,pV)}ON(){return this.getToken(tf.ON,0)}into_values_source(){return this.getRuleContext(0,Mb)}returning_columns_list(){return this.getRuleContext(0,Cb)}where_expr(){return this.getRuleContext(0,MK)}get ruleIndex(){return tf.RULE_update_stmt}accept(t){return t.visitUpdate_stmt?t.visitUpdate_stmt(this):t.visitChildren(this)}},pV=class extends ga{constructor(t,e){super(t,e)}set_clause_list(){return this.getRuleContext(0,gV)}multiple_column_assignment(){return this.getRuleContext(0,HV)}get ruleIndex(){return tf.RULE_set_clause_choice}accept(t){return t.visitSet_clause_choice?t.visitSet_clause_choice(this):t.visitChildren(this)}},gV=class extends ga{constructor(t,e){super(t,e)}set_clause(t){return void 0===t?this.getRuleContexts(xV):this.getRuleContext(t,xV)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_set_clause_list}accept(t){return t.visitSet_clause_list?t.visitSet_clause_list(this):t.visitChildren(this)}},xV=class extends ga{constructor(t,e){super(t,e)}set_target(){return this.getRuleContext(0,kV)}EQUALS(){return this.getToken(tf.EQUALS,0)}expr(){return this.getRuleContext(0,Ef)}get ruleIndex(){return tf.RULE_set_clause}accept(t){return t.visitSet_clause?t.visitSet_clause(this):t.visitChildren(this)}},kV=class extends ga{constructor(t,e){super(t,e)}column_name(){return this.getRuleContext(0,hY)}get ruleIndex(){return tf.RULE_set_target}accept(t){return t.visitSet_target?t.visitSet_target(this):t.visitChildren(this)}},HV=class extends ga{constructor(t,e){super(t,e)}set_target_list(){return this.getRuleContext(0,GV)}EQUALS(){return this.getToken(tf.EQUALS,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}simple_values_source(){return this.getRuleContext(0,pb)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_multiple_column_assignment}accept(t){return t.visitMultiple_column_assignment?t.visitMultiple_column_assignment(this):t.visitChildren(this)}},GV=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}set_target(t){return void 0===t?this.getRuleContexts(kV):this.getRuleContext(t,kV)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_set_target_list}accept(t){return t.visitSet_target_list?t.visitSet_target_list(this):t.visitChildren(this)}},FV=class extends ga{constructor(t,e){super(t,e)}CREATE(){return this.getToken(tf.CREATE,0)}TOPIC(){return this.getToken(tf.TOPIC,0)}topic_ref(){return this.getRuleContext(0,rX)}create_topic_entries(){return this.getRuleContext(0,vV)}with_topic_settings(){return this.getRuleContext(0,yV)}get ruleIndex(){return tf.RULE_create_topic_stmt}accept(t){return t.visitCreate_topic_stmt?t.visitCreate_topic_stmt(this):t.visitChildren(this)}},vV=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}create_topic_entry(t){return void 0===t?this.getRuleContexts(BV):this.getRuleContext(t,BV)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_create_topic_entries}accept(t){return t.visitCreate_topic_entries?t.visitCreate_topic_entries(this):t.visitChildren(this)}},BV=class extends ga{constructor(t,e){super(t,e)}topic_create_consumer_entry(){return this.getRuleContext(0,bV)}get ruleIndex(){return tf.RULE_create_topic_entry}accept(t){return t.visitCreate_topic_entry?t.visitCreate_topic_entry(this):t.visitChildren(this)}},yV=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(tf.WITH,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}topic_settings(){return this.getRuleContext(0,jV)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_with_topic_settings}accept(t){return t.visitWith_topic_settings?t.visitWith_topic_settings(this):t.visitChildren(this)}},fV=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}TOPIC(){return this.getToken(tf.TOPIC,0)}topic_ref(){return this.getRuleContext(0,rX)}alter_topic_action(t){return void 0===t?this.getRuleContexts(YV):this.getRuleContext(t,YV)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_alter_topic_stmt}accept(t){return t.visitAlter_topic_stmt?t.visitAlter_topic_stmt(this):t.visitChildren(this)}},YV=class extends ga{constructor(t,e){super(t,e)}alter_topic_add_consumer(){return this.getRuleContext(0,wV)}alter_topic_alter_consumer(){return this.getRuleContext(0,WV)}alter_topic_drop_consumer(){return this.getRuleContext(0,XV)}alter_topic_set_settings(){return this.getRuleContext(0,JV)}alter_topic_reset_settings(){return this.getRuleContext(0,ZV)}get ruleIndex(){return tf.RULE_alter_topic_action}accept(t){return t.visitAlter_topic_action?t.visitAlter_topic_action(this):t.visitChildren(this)}},wV=class extends ga{constructor(t,e){super(t,e)}ADD(){return this.getToken(tf.ADD,0)}topic_create_consumer_entry(){return this.getRuleContext(0,bV)}get ruleIndex(){return tf.RULE_alter_topic_add_consumer}accept(t){return t.visitAlter_topic_add_consumer?t.visitAlter_topic_add_consumer(this):t.visitChildren(this)}},bV=class extends ga{constructor(t,e){super(t,e)}CONSUMER(){return this.getToken(tf.CONSUMER,0)}an_id(){return this.getRuleContext(0,YX)}topic_consumer_with_settings(){return this.getRuleContext(0,tX)}get ruleIndex(){return tf.RULE_topic_create_consumer_entry}accept(t){return t.visitTopic_create_consumer_entry?t.visitTopic_create_consumer_entry(this):t.visitChildren(this)}},WV=class extends ga{constructor(t,e){super(t,e)}ALTER(){return this.getToken(tf.ALTER,0)}CONSUMER(){return this.getToken(tf.CONSUMER,0)}topic_consumer_ref(){return this.getRuleContext(0,iX)}alter_topic_alter_consumer_entry(){return this.getRuleContext(0,VV)}get ruleIndex(){return tf.RULE_alter_topic_alter_consumer}accept(t){return t.visitAlter_topic_alter_consumer?t.visitAlter_topic_alter_consumer(this):t.visitChildren(this)}},VV=class extends ga{constructor(t,e){super(t,e)}topic_alter_consumer_set(){return this.getRuleContext(0,KV)}topic_alter_consumer_reset(){return this.getRuleContext(0,QV)}get ruleIndex(){return tf.RULE_alter_topic_alter_consumer_entry}accept(t){return t.visitAlter_topic_alter_consumer_entry?t.visitAlter_topic_alter_consumer_entry(this):t.visitChildren(this)}},XV=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(tf.DROP,0)}CONSUMER(){return this.getToken(tf.CONSUMER,0)}topic_consumer_ref(){return this.getRuleContext(0,iX)}get ruleIndex(){return tf.RULE_alter_topic_drop_consumer}accept(t){return t.visitAlter_topic_drop_consumer?t.visitAlter_topic_drop_consumer(this):t.visitChildren(this)}},KV=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(tf.SET,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}topic_consumer_settings(){return this.getRuleContext(0,eX)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_topic_alter_consumer_set}accept(t){return t.visitTopic_alter_consumer_set?t.visitTopic_alter_consumer_set(this):t.visitChildren(this)}},QV=class extends ga{constructor(t,e){super(t,e)}RESET(){return this.getToken(tf.RESET,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}an_id(t){return void 0===t?this.getRuleContexts(YX):this.getRuleContext(t,YX)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_topic_alter_consumer_reset}accept(t){return t.visitTopic_alter_consumer_reset?t.visitTopic_alter_consumer_reset(this):t.visitChildren(this)}},JV=class extends ga{constructor(t,e){super(t,e)}SET(){return this.getToken(tf.SET,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}topic_settings(){return this.getRuleContext(0,jV)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_alter_topic_set_settings}accept(t){return t.visitAlter_topic_set_settings?t.visitAlter_topic_set_settings(this):t.visitChildren(this)}},ZV=class extends ga{constructor(t,e){super(t,e)}RESET(){return this.getToken(tf.RESET,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}an_id(){return this.getRuleContext(0,YX)}RPAREN(){return this.getToken(tf.RPAREN,0)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}an_id_pure(t){return void 0===t?this.getRuleContexts(ZX):this.getRuleContext(t,ZX)}get ruleIndex(){return tf.RULE_alter_topic_reset_settings}accept(t){return t.visitAlter_topic_reset_settings?t.visitAlter_topic_reset_settings(this):t.visitChildren(this)}},qV=class extends ga{constructor(t,e){super(t,e)}DROP(){return this.getToken(tf.DROP,0)}TOPIC(){return this.getToken(tf.TOPIC,0)}topic_ref(){return this.getRuleContext(0,rX)}get ruleIndex(){return tf.RULE_drop_topic_stmt}accept(t){return t.visitDrop_topic_stmt?t.visitDrop_topic_stmt(this):t.visitChildren(this)}},jV=class extends ga{constructor(t,e){super(t,e)}topic_settings_entry(t){return void 0===t?this.getRuleContexts(zV):this.getRuleContext(t,zV)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_topic_settings}accept(t){return t.visitTopic_settings?t.visitTopic_settings(this):t.visitChildren(this)}},zV=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}EQUALS(){return this.getToken(tf.EQUALS,0)}topic_setting_value(){return this.getRuleContext(0,$V)}get ruleIndex(){return tf.RULE_topic_settings_entry}accept(t){return t.visitTopic_settings_entry?t.visitTopic_settings_entry(this):t.visitChildren(this)}},$V=class extends ga{constructor(t,e){super(t,e)}expr(){return this.getRuleContext(0,Ef)}get ruleIndex(){return tf.RULE_topic_setting_value}accept(t){return t.visitTopic_setting_value?t.visitTopic_setting_value(this):t.visitChildren(this)}},tX=class extends ga{constructor(t,e){super(t,e)}WITH(){return this.getToken(tf.WITH,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}topic_consumer_settings(){return this.getRuleContext(0,eX)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_topic_consumer_with_settings}accept(t){return t.visitTopic_consumer_with_settings?t.visitTopic_consumer_with_settings(this):t.visitChildren(this)}},eX=class extends ga{constructor(t,e){super(t,e)}topic_consumer_settings_entry(t){return void 0===t?this.getRuleContexts(sX):this.getRuleContext(t,sX)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_topic_consumer_settings}accept(t){return t.visitTopic_consumer_settings?t.visitTopic_consumer_settings(this):t.visitChildren(this)}},sX=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}EQUALS(){return this.getToken(tf.EQUALS,0)}topic_consumer_setting_value(){return this.getRuleContext(0,aX)}get ruleIndex(){return tf.RULE_topic_consumer_settings_entry}accept(t){return t.visitTopic_consumer_settings_entry?t.visitTopic_consumer_settings_entry(this):t.visitChildren(this)}},aX=class extends ga{constructor(t,e){super(t,e)}expr(){return this.getRuleContext(0,Ef)}get ruleIndex(){return tf.RULE_topic_consumer_setting_value}accept(t){return t.visitTopic_consumer_setting_value?t.visitTopic_consumer_setting_value(this):t.visitChildren(this)}},rX=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}cluster_expr(){return this.getRuleContext(0,$X)}DOT(){return this.getToken(tf.DOT,0)}get ruleIndex(){return tf.RULE_topic_ref}accept(t){return t.visitTopic_ref?t.visitTopic_ref(this):t.visitChildren(this)}},iX=class extends ga{constructor(t,e){super(t,e)}an_id_pure(){return this.getRuleContext(0,ZX)}get ruleIndex(){return tf.RULE_topic_consumer_ref}accept(t){return t.visitTopic_consumer_ref?t.visitTopic_consumer_ref(this):t.visitChildren(this)}},cX=class extends ga{constructor(t,e){super(t,e)}RESPECT(){return this.getToken(tf.RESPECT,0)}NULLS(){return this.getToken(tf.NULLS,0)}IGNORE(){return this.getToken(tf.IGNORE,0)}get ruleIndex(){return tf.RULE_null_treatment}accept(t){return t.visitNull_treatment?t.visitNull_treatment(this):t.visitChildren(this)}},nX=class extends ga{constructor(t,e){super(t,e)}FILTER(){return this.getToken(tf.FILTER,0)}LPAREN(){return this.getToken(tf.LPAREN,0)}where_expr(){return this.getRuleContext(0,MK)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_filter_clause}accept(t){return t.visitFilter_clause?t.visitFilter_clause(this):t.visitChildren(this)}},hX=class extends ga{constructor(t,e){super(t,e)}window_name(){return this.getRuleContext(0,EX)}window_specification(){return this.getRuleContext(0,SX)}get ruleIndex(){return tf.RULE_window_name_or_specification}accept(t){return t.visitWindow_name_or_specification?t.visitWindow_name_or_specification(this):t.visitChildren(this)}},EX=class extends ga{constructor(t,e){super(t,e)}an_id_window(){return this.getRuleContext(0,XX)}get ruleIndex(){return tf.RULE_window_name}accept(t){return t.visitWindow_name?t.visitWindow_name(this):t.visitChildren(this)}},TX=class extends ga{constructor(t,e){super(t,e)}WINDOW(){return this.getToken(tf.WINDOW,0)}window_definition_list(){return this.getRuleContext(0,oX)}get ruleIndex(){return tf.RULE_window_clause}accept(t){return t.visitWindow_clause?t.visitWindow_clause(this):t.visitChildren(this)}},oX=class extends ga{constructor(t,e){super(t,e)}window_definition(t){return void 0===t?this.getRuleContexts(RX):this.getRuleContext(t,RX)}COMMA(t){return void 0===t?this.getTokens(tf.COMMA):this.getToken(tf.COMMA,t)}get ruleIndex(){return tf.RULE_window_definition_list}accept(t){return t.visitWindow_definition_list?t.visitWindow_definition_list(this):t.visitChildren(this)}},RX=class extends ga{constructor(t,e){super(t,e)}new_window_name(){return this.getRuleContext(0,AX)}AS(){return this.getToken(tf.AS,0)}window_specification(){return this.getRuleContext(0,SX)}get ruleIndex(){return tf.RULE_window_definition}accept(t){return t.visitWindow_definition?t.visitWindow_definition(this):t.visitChildren(this)}},AX=class extends ga{constructor(t,e){super(t,e)}window_name(){return this.getRuleContext(0,EX)}get ruleIndex(){return tf.RULE_new_window_name}accept(t){return t.visitNew_window_name?t.visitNew_window_name(this):t.visitChildren(this)}},SX=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}window_specification_details(){return this.getRuleContext(0,lX)}RPAREN(){return this.getToken(tf.RPAREN,0)}get ruleIndex(){return tf.RULE_window_specification}accept(t){return t.visitWindow_specification?t.visitWindow_specification(this):t.visitChildren(this)}},lX=class extends ga{constructor(t,e){super(t,e)}existing_window_name(){return this.getRuleContext(0,OX)}window_partition_clause(){return this.getRuleContext(0,IX)}window_order_clause(){return this.getRuleContext(0,uX)}window_frame_clause(){return this.getRuleContext(0,NX)}get ruleIndex(){return tf.RULE_window_specification_details}accept(t){return t.visitWindow_specification_details?t.visitWindow_specification_details(this):t.visitChildren(this)}},OX=class extends ga{constructor(t,e){super(t,e)}window_name(){return this.getRuleContext(0,EX)}get ruleIndex(){return tf.RULE_existing_window_name}accept(t){return t.visitExisting_window_name?t.visitExisting_window_name(this):t.visitChildren(this)}},IX=class extends ga{constructor(t,e){super(t,e)}PARTITION(){return this.getToken(tf.PARTITION,0)}BY(){return this.getToken(tf.BY,0)}named_expr_list(){return this.getRuleContext(0,AY)}COMPACT(){return this.getToken(tf.COMPACT,0)}get ruleIndex(){return tf.RULE_window_partition_clause}accept(t){return t.visitWindow_partition_clause?t.visitWindow_partition_clause(this):t.visitChildren(this)}},uX=class extends ga{constructor(t,e){super(t,e)}order_by_clause(){return this.getRuleContext(0,jw)}get ruleIndex(){return tf.RULE_window_order_clause}accept(t){return t.visitWindow_order_clause?t.visitWindow_order_clause(this):t.visitChildren(this)}},NX=class extends ga{constructor(t,e){super(t,e)}window_frame_units(){return this.getRuleContext(0,LX)}window_frame_extent(){return this.getRuleContext(0,CX)}window_frame_exclusion(){return this.getRuleContext(0,MX)}get ruleIndex(){return tf.RULE_window_frame_clause}accept(t){return t.visitWindow_frame_clause?t.visitWindow_frame_clause(this):t.visitChildren(this)}},LX=class extends ga{constructor(t,e){super(t,e)}ROWS(){return this.getToken(tf.ROWS,0)}RANGE(){return this.getToken(tf.RANGE,0)}GROUPS(){return this.getToken(tf.GROUPS,0)}get ruleIndex(){return tf.RULE_window_frame_units}accept(t){return t.visitWindow_frame_units?t.visitWindow_frame_units(this):t.visitChildren(this)}},CX=class extends ga{constructor(t,e){super(t,e)}window_frame_bound(){return this.getRuleContext(0,PX)}window_frame_between(){return this.getRuleContext(0,_X)}get ruleIndex(){return tf.RULE_window_frame_extent}accept(t){return t.visitWindow_frame_extent?t.visitWindow_frame_extent(this):t.visitChildren(this)}},_X=class extends ga{constructor(t,e){super(t,e)}BETWEEN(){return this.getToken(tf.BETWEEN,0)}window_frame_bound(t){return void 0===t?this.getRuleContexts(PX):this.getRuleContext(t,PX)}AND(){return this.getToken(tf.AND,0)}get ruleIndex(){return tf.RULE_window_frame_between}accept(t){return t.visitWindow_frame_between?t.visitWindow_frame_between(this):t.visitChildren(this)}},PX=class extends ga{constructor(t,e){super(t,e)}CURRENT(){return this.getToken(tf.CURRENT,0)}ROW(){return this.getToken(tf.ROW,0)}PRECEDING(){return this.getToken(tf.PRECEDING,0)}FOLLOWING(){return this.getToken(tf.FOLLOWING,0)}expr(){return this.getRuleContext(0,Ef)}UNBOUNDED(){return this.getToken(tf.UNBOUNDED,0)}get ruleIndex(){return tf.RULE_window_frame_bound}accept(t){return t.visitWindow_frame_bound?t.visitWindow_frame_bound(this):t.visitChildren(this)}},MX=class extends ga{constructor(t,e){super(t,e)}EXCLUDE(){return this.getToken(tf.EXCLUDE,0)}CURRENT(){return this.getToken(tf.CURRENT,0)}ROW(){return this.getToken(tf.ROW,0)}GROUP(){return this.getToken(tf.GROUP,0)}TIES(){return this.getToken(tf.TIES,0)}NO(){return this.getToken(tf.NO,0)}OTHERS(){return this.getToken(tf.OTHERS,0)}get ruleIndex(){return tf.RULE_window_frame_exclusion}accept(t){return t.visitWindow_frame_exclusion?t.visitWindow_frame_exclusion(this):t.visitChildren(this)}},dX=class extends ga{constructor(t,e){super(t,e)}USE(){return this.getToken(tf.USE,0)}cluster_expr(){return this.getRuleContext(0,$X)}get ruleIndex(){return tf.RULE_use_stmt}accept(t){return t.visitUse_stmt?t.visitUse_stmt(this):t.visitChildren(this)}},UX=class extends ga{constructor(t,e){super(t,e)}LPAREN(){return this.getToken(tf.LPAREN,0)}select_stmt(){return this.getRuleContext(0,Tw)}RPAREN(){return this.getToken(tf.RPAREN,0)}select_unparenthesized_stmt(){return this.getRuleContext(0,ow)}get ruleIndex(){return tf.RULE_subselect_stmt}accept(t){return t.visitSubselect_stmt?t.visitSubselect_stmt(this):t.visitChildren(this)}},mX=class extends ga{constructor(t,e){super(t,e)}bind_parameter_list(){return this.getRuleContext(0,_Y)}EQUALS(){return this.getToken(tf.EQUALS,0)}expr(){return this.getRuleContext(0,Ef)}subselect_stmt(){return this.getRuleContext(0,UX)}get ruleIndex(){return tf.RULE_named_nodes_stmt}accept(t){return t.visitNamed_nodes_stmt?t.visitNamed_nodes_stmt(this):t.visitChildren(this)}},DX=class extends ga{constructor(t,e){super(t,e)}COMMIT(){return this.getToken(tf.COMMIT,0)}get ruleIndex(){return tf.RULE_commit_stmt}accept(t){return t.visitCommit_stmt?t.visitCommit_stmt(this):t.visitChildren(this)}},pX=class extends ga{constructor(t,e){super(t,e)}ROLLBACK(){return this.getToken(tf.ROLLBACK,0)}get ruleIndex(){return tf.RULE_rollback_stmt}accept(t){return t.visitRollback_stmt?t.visitRollback_stmt(this):t.visitChildren(this)}},gX=class extends ga{constructor(t,e){super(t,e)}ID_PLAIN(){return this.getToken(tf.ID_PLAIN,0)}ID_QUOTED(){return this.getToken(tf.ID_QUOTED,0)}get ruleIndex(){return tf.RULE_identifier}accept(t){return t.visitIdentifier?t.visitIdentifier(this):t.visitChildren(this)}},xX=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,gX)}keyword(){return this.getRuleContext(0,iK)}get ruleIndex(){return tf.RULE_id}accept(t){return t.visitId?t.visitId(this):t.visitChildren(this)}},kX=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,gX)}keyword_compat(){return this.getRuleContext(0,SK)}keyword_expr_uncompat(){return this.getRuleContext(0,cK)}keyword_select_uncompat(){return this.getRuleContext(0,hK)}keyword_in_uncompat(){return this.getRuleContext(0,TK)}keyword_window_uncompat(){return this.getRuleContext(0,oK)}keyword_hint_uncompat(){return this.getRuleContext(0,RK)}get ruleIndex(){return tf.RULE_id_schema}accept(t){return t.visitId_schema?t.visitId_schema(this):t.visitChildren(this)}},HX=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,gX)}keyword_compat(){return this.getRuleContext(0,SK)}keyword_alter_uncompat(){return this.getRuleContext(0,EK)}keyword_in_uncompat(){return this.getRuleContext(0,TK)}keyword_window_uncompat(){return this.getRuleContext(0,oK)}keyword_hint_uncompat(){return this.getRuleContext(0,RK)}get ruleIndex(){return tf.RULE_id_expr}accept(t){return t.visitId_expr?t.visitId_expr(this):t.visitChildren(this)}},GX=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,gX)}keyword_compat(){return this.getRuleContext(0,SK)}keyword_alter_uncompat(){return this.getRuleContext(0,EK)}keyword_window_uncompat(){return this.getRuleContext(0,oK)}keyword_hint_uncompat(){return this.getRuleContext(0,RK)}get ruleIndex(){return tf.RULE_id_expr_in}accept(t){return t.visitId_expr_in?t.visitId_expr_in(this):t.visitChildren(this)}},FX=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,gX)}keyword_compat(){return this.getRuleContext(0,SK)}keyword_expr_uncompat(){return this.getRuleContext(0,cK)}keyword_table_uncompat(){return this.getRuleContext(0,nK)}keyword_select_uncompat(){return this.getRuleContext(0,hK)}keyword_alter_uncompat(){return this.getRuleContext(0,EK)}keyword_in_uncompat(){return this.getRuleContext(0,TK)}keyword_hint_uncompat(){return this.getRuleContext(0,RK)}get ruleIndex(){return tf.RULE_id_window}accept(t){return t.visitId_window?t.visitId_window(this):t.visitChildren(this)}},vX=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,gX)}keyword_compat(){return this.getRuleContext(0,SK)}keyword_expr_uncompat(){return this.getRuleContext(0,cK)}keyword_select_uncompat(){return this.getRuleContext(0,hK)}keyword_in_uncompat(){return this.getRuleContext(0,TK)}keyword_window_uncompat(){return this.getRuleContext(0,oK)}keyword_hint_uncompat(){return this.getRuleContext(0,RK)}get ruleIndex(){return tf.RULE_id_table}accept(t){return t.visitId_table?t.visitId_table(this):t.visitChildren(this)}},BX=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,gX)}keyword_compat(){return this.getRuleContext(0,SK)}keyword_table_uncompat(){return this.getRuleContext(0,nK)}keyword_alter_uncompat(){return this.getRuleContext(0,EK)}keyword_in_uncompat(){return this.getRuleContext(0,TK)}keyword_window_uncompat(){return this.getRuleContext(0,oK)}keyword_hint_uncompat(){return this.getRuleContext(0,RK)}get ruleIndex(){return tf.RULE_id_without}accept(t){return t.visitId_without?t.visitId_without(this):t.visitChildren(this)}},yX=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,gX)}keyword_compat(){return this.getRuleContext(0,SK)}keyword_expr_uncompat(){return this.getRuleContext(0,cK)}keyword_table_uncompat(){return this.getRuleContext(0,nK)}keyword_select_uncompat(){return this.getRuleContext(0,hK)}keyword_alter_uncompat(){return this.getRuleContext(0,EK)}keyword_in_uncompat(){return this.getRuleContext(0,TK)}keyword_window_uncompat(){return this.getRuleContext(0,oK)}get ruleIndex(){return tf.RULE_id_hint}accept(t){return t.visitId_hint?t.visitId_hint(this):t.visitChildren(this)}},fX=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,gX)}keyword_as_compat(){return this.getRuleContext(0,AK)}get ruleIndex(){return tf.RULE_id_as_compat}accept(t){return t.visitId_as_compat?t.visitId_as_compat(this):t.visitChildren(this)}},YX=class extends ga{constructor(t,e){super(t,e)}id(){return this.getRuleContext(0,xX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_an_id}accept(t){return t.visitAn_id?t.visitAn_id(this):t.visitChildren(this)}},wX=class extends ga{constructor(t,e){super(t,e)}id_or_type(){return this.getRuleContext(0,tK)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_an_id_or_type}accept(t){return t.visitAn_id_or_type?t.visitAn_id_or_type(this):t.visitChildren(this)}},bX=class extends ga{constructor(t,e){super(t,e)}id_schema(){return this.getRuleContext(0,kX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_an_id_schema}accept(t){return t.visitAn_id_schema?t.visitAn_id_schema(this):t.visitChildren(this)}},WX=class extends ga{constructor(t,e){super(t,e)}id_expr(){return this.getRuleContext(0,HX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_an_id_expr}accept(t){return t.visitAn_id_expr?t.visitAn_id_expr(this):t.visitChildren(this)}},VX=class extends ga{constructor(t,e){super(t,e)}id_expr_in(){return this.getRuleContext(0,GX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_an_id_expr_in}accept(t){return t.visitAn_id_expr_in?t.visitAn_id_expr_in(this):t.visitChildren(this)}},XX=class extends ga{constructor(t,e){super(t,e)}id_window(){return this.getRuleContext(0,FX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_an_id_window}accept(t){return t.visitAn_id_window?t.visitAn_id_window(this):t.visitChildren(this)}},KX=class extends ga{constructor(t,e){super(t,e)}id_table(){return this.getRuleContext(0,vX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_an_id_table}accept(t){return t.visitAn_id_table?t.visitAn_id_table(this):t.visitChildren(this)}},QX=class extends ga{constructor(t,e){super(t,e)}id_without(){return this.getRuleContext(0,BX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_an_id_without}accept(t){return t.visitAn_id_without?t.visitAn_id_without(this):t.visitChildren(this)}},JX=class extends ga{constructor(t,e){super(t,e)}id_hint(){return this.getRuleContext(0,yX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_an_id_hint}accept(t){return t.visitAn_id_hint?t.visitAn_id_hint(this):t.visitChildren(this)}},ZX=class extends ga{constructor(t,e){super(t,e)}identifier(){return this.getRuleContext(0,gX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_an_id_pure}accept(t){return t.visitAn_id_pure?t.visitAn_id_pure(this):t.visitChildren(this)}},qX=class extends ga{constructor(t,e){super(t,e)}id_as_compat(){return this.getRuleContext(0,fX)}STRING_VALUE(){return this.getToken(tf.STRING_VALUE,0)}get ruleIndex(){return tf.RULE_an_id_as_compat}accept(t){return t.visitAn_id_as_compat?t.visitAn_id_as_compat(this):t.visitChildren(this)}},jX=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}PRIMARY(){return this.getToken(tf.PRIMARY,0)}KEY(){return this.getToken(tf.KEY,0)}get ruleIndex(){return tf.RULE_view_name}accept(t){return t.visitView_name?t.visitView_name(this):t.visitChildren(this)}},zX=class extends ga{constructor(t,e){super(t,e)}an_id(){return this.getRuleContext(0,YX)}DOT(){return this.getToken(tf.DOT,0)}get ruleIndex(){return tf.RULE_opt_id_prefix}accept(t){return t.visitOpt_id_prefix?t.visitOpt_id_prefix(this):t.visitChildren(this)}},$X=class extends ga{constructor(t,e){super(t,e)}pure_column_or_named(){return this.getRuleContext(0,cY)}ASTERISK(){return this.getToken(tf.ASTERISK,0)}an_id(){return this.getRuleContext(0,YX)}COLON(){return this.getToken(tf.COLON,0)}get ruleIndex(){return tf.RULE_cluster_expr}accept(t){return t.visitCluster_expr?t.visitCluster_expr(this):t.visitChildren(this)}},tK=class extends ga{constructor(t,e){super(t,e)}id(){return this.getRuleContext(0,xX)}type_id(){return this.getRuleContext(0,lK)}get ruleIndex(){return tf.RULE_id_or_type}accept(t){return t.visitId_or_type?t.visitId_or_type(this):t.visitChildren(this)}},eK=class extends ga{constructor(t,e){super(t,e)}an_id_or_type(){return this.getRuleContext(0,wX)}DOT(){return this.getToken(tf.DOT,0)}get ruleIndex(){return tf.RULE_opt_id_prefix_or_type}accept(t){return t.visitOpt_id_prefix_or_type?t.visitOpt_id_prefix_or_type(this):t.visitChildren(this)}},sK=class extends ga{constructor(t,e){super(t,e)}an_id_or_type(){return this.getRuleContext(0,wX)}AT(){return this.getToken(tf.AT,0)}get ruleIndex(){return tf.RULE_id_or_at}accept(t){return t.visitId_or_at?t.visitId_or_at(this):t.visitChildren(this)}},aK=class extends ga{constructor(t,e){super(t,e)}an_id_table(){return this.getRuleContext(0,KX)}type_id(){return this.getRuleContext(0,lK)}get ruleIndex(){return tf.RULE_id_table_or_type}accept(t){return t.visitId_table_or_type?t.visitId_table_or_type(this):t.visitChildren(this)}},rK=class extends ga{constructor(t,e){super(t,e)}id_table_or_type(){return this.getRuleContext(0,aK)}AT(){return this.getToken(tf.AT,0)}get ruleIndex(){return tf.RULE_id_table_or_at}accept(t){return t.visitId_table_or_at?t.visitId_table_or_at(this):t.visitChildren(this)}},iK=class extends ga{constructor(t,e){super(t,e)}keyword_compat(){return this.getRuleContext(0,SK)}keyword_expr_uncompat(){return this.getRuleContext(0,cK)}keyword_table_uncompat(){return this.getRuleContext(0,nK)}keyword_select_uncompat(){return this.getRuleContext(0,hK)}keyword_alter_uncompat(){return this.getRuleContext(0,EK)}keyword_in_uncompat(){return this.getRuleContext(0,TK)}keyword_window_uncompat(){return this.getRuleContext(0,oK)}keyword_hint_uncompat(){return this.getRuleContext(0,RK)}get ruleIndex(){return tf.RULE_keyword}accept(t){return t.visitKeyword?t.visitKeyword(this):t.visitChildren(this)}},cK=class extends ga{constructor(t,e){super(t,e)}ASYMMETRIC(){return this.getToken(tf.ASYMMETRIC,0)}BETWEEN(){return this.getToken(tf.BETWEEN,0)}BITCAST(){return this.getToken(tf.BITCAST,0)}CASE(){return this.getToken(tf.CASE,0)}CAST(){return this.getToken(tf.CAST,0)}CUBE(){return this.getToken(tf.CUBE,0)}CURRENT_DATE(){return this.getToken(tf.CURRENT_DATE,0)}CURRENT_TIME(){return this.getToken(tf.CURRENT_TIME,0)}CURRENT_TIMESTAMP(){return this.getToken(tf.CURRENT_TIMESTAMP,0)}EMPTY_ACTION(){return this.getToken(tf.EMPTY_ACTION,0)}EXISTS(){return this.getToken(tf.EXISTS,0)}FROM(){return this.getToken(tf.FROM,0)}FULL(){return this.getToken(tf.FULL,0)}HOP(){return this.getToken(tf.HOP,0)}JSON_EXISTS(){return this.getToken(tf.JSON_EXISTS,0)}JSON_VALUE(){return this.getToken(tf.JSON_VALUE,0)}JSON_QUERY(){return this.getToken(tf.JSON_QUERY,0)}LOCAL(){return this.getToken(tf.LOCAL,0)}NOT(){return this.getToken(tf.NOT,0)}NULL(){return this.getToken(tf.NULL,0)}PROCESS(){return this.getToken(tf.PROCESS,0)}REDUCE(){return this.getToken(tf.REDUCE,0)}RETURN(){return this.getToken(tf.RETURN,0)}RETURNING(){return this.getToken(tf.RETURNING,0)}ROLLUP(){return this.getToken(tf.ROLLUP,0)}SELECT(){return this.getToken(tf.SELECT,0)}SYMMETRIC(){return this.getToken(tf.SYMMETRIC,0)}UNBOUNDED(){return this.getToken(tf.UNBOUNDED,0)}WHEN(){return this.getToken(tf.WHEN,0)}WHERE(){return this.getToken(tf.WHERE,0)}get ruleIndex(){return tf.RULE_keyword_expr_uncompat}accept(t){return t.visitKeyword_expr_uncompat?t.visitKeyword_expr_uncompat(this):t.visitChildren(this)}},nK=class extends ga{constructor(t,e){super(t,e)}ANY(){return this.getToken(tf.ANY,0)}ERASE(){return this.getToken(tf.ERASE,0)}STREAM(){return this.getToken(tf.STREAM,0)}get ruleIndex(){return tf.RULE_keyword_table_uncompat}accept(t){return t.visitKeyword_table_uncompat?t.visitKeyword_table_uncompat(this):t.visitChildren(this)}},hK=class extends ga{constructor(t,e){super(t,e)}ALL(){return this.getToken(tf.ALL,0)}AS(){return this.getToken(tf.AS,0)}ASSUME(){return this.getToken(tf.ASSUME,0)}DISTINCT(){return this.getToken(tf.DISTINCT,0)}EXCEPT(){return this.getToken(tf.EXCEPT,0)}HAVING(){return this.getToken(tf.HAVING,0)}INTERSECT(){return this.getToken(tf.INTERSECT,0)}LIMIT(){return this.getToken(tf.LIMIT,0)}UNION(){return this.getToken(tf.UNION,0)}WINDOW(){return this.getToken(tf.WINDOW,0)}WITHOUT(){return this.getToken(tf.WITHOUT,0)}get ruleIndex(){return tf.RULE_keyword_select_uncompat}accept(t){return t.visitKeyword_select_uncompat?t.visitKeyword_select_uncompat(this):t.visitChildren(this)}},EK=class extends ga{constructor(t,e){super(t,e)}COLUMN(){return this.getToken(tf.COLUMN,0)}get ruleIndex(){return tf.RULE_keyword_alter_uncompat}accept(t){return t.visitKeyword_alter_uncompat?t.visitKeyword_alter_uncompat(this):t.visitChildren(this)}},TK=class extends ga{constructor(t,e){super(t,e)}COMPACT(){return this.getToken(tf.COMPACT,0)}get ruleIndex(){return tf.RULE_keyword_in_uncompat}accept(t){return t.visitKeyword_in_uncompat?t.visitKeyword_in_uncompat(this):t.visitChildren(this)}},oK=class extends ga{constructor(t,e){super(t,e)}GROUPS(){return this.getToken(tf.GROUPS,0)}RANGE(){return this.getToken(tf.RANGE,0)}ROWS(){return this.getToken(tf.ROWS,0)}get ruleIndex(){return tf.RULE_keyword_window_uncompat}accept(t){return t.visitKeyword_window_uncompat?t.visitKeyword_window_uncompat(this):t.visitChildren(this)}},RK=class extends ga{constructor(t,e){super(t,e)}SCHEMA(){return this.getToken(tf.SCHEMA,0)}COLUMNS(){return this.getToken(tf.COLUMNS,0)}get ruleIndex(){return tf.RULE_keyword_hint_uncompat}accept(t){return t.visitKeyword_hint_uncompat?t.visitKeyword_hint_uncompat(this):t.visitChildren(this)}},AK=class extends ga{constructor(t,e){super(t,e)}ATTRIBUTES(){return this.getToken(tf.ATTRIBUTES,0)}CONNECT(){return this.getToken(tf.CONNECT,0)}CONSUMER(){return this.getToken(tf.CONSUMER,0)}DATA(){return this.getToken(tf.DATA,0)}DESCRIBE(){return this.getToken(tf.DESCRIBE,0)}DIRECTORY(){return this.getToken(tf.DIRECTORY,0)}FIRST(){return this.getToken(tf.FIRST,0)}GRANT(){return this.getToken(tf.GRANT,0)}INITIAL(){return this.getToken(tf.INITIAL,0)}LAST(){return this.getToken(tf.LAST,0)}LEGACY(){return this.getToken(tf.LEGACY,0)}MANAGE(){return this.getToken(tf.MANAGE,0)}MATCHES(){return this.getToken(tf.MATCHES,0)}MATCH_RECOGNIZE(){return this.getToken(tf.MATCH_RECOGNIZE,0)}MEASURES(){return this.getToken(tf.MEASURES,0)}MICROSECONDS(){return this.getToken(tf.MICROSECONDS,0)}MILLISECONDS(){return this.getToken(tf.MILLISECONDS,0)}MODIFY(){return this.getToken(tf.MODIFY,0)}NANOSECONDS(){return this.getToken(tf.NANOSECONDS,0)}NEXT(){return this.getToken(tf.NEXT,0)}OMIT(){return this.getToken(tf.OMIT,0)}ONE(){return this.getToken(tf.ONE,0)}OPTION(){return this.getToken(tf.OPTION,0)}PARALLEL(){return this.getToken(tf.PARALLEL,0)}PAST(){return this.getToken(tf.PAST,0)}PATTERN(){return this.getToken(tf.PATTERN,0)}PER(){return this.getToken(tf.PER,0)}PERMUTE(){return this.getToken(tf.PERMUTE,0)}PRIVILEGES(){return this.getToken(tf.PRIVILEGES,0)}QUEUE(){return this.getToken(tf.QUEUE,0)}REMOVE(){return this.getToken(tf.REMOVE,0)}REPLICATION(){return this.getToken(tf.REPLICATION,0)}REVOKE(){return this.getToken(tf.REVOKE,0)}SECONDS(){return this.getToken(tf.SECONDS,0)}SEEK(){return this.getToken(tf.SEEK,0)}SHOW(){return this.getToken(tf.SHOW,0)}SKIP_RULE(){return this.getToken(tf.SKIP_RULE,0)}SOURCE(){return this.getToken(tf.SOURCE,0)}SUBSET(){return this.getToken(tf.SUBSET,0)}TABLES(){return this.getToken(tf.TABLES,0)}TOPIC(){return this.getToken(tf.TOPIC,0)}TYPE(){return this.getToken(tf.TYPE,0)}UNMATCHED(){return this.getToken(tf.UNMATCHED,0)}get ruleIndex(){return tf.RULE_keyword_as_compat}accept(t){return t.visitKeyword_as_compat?t.visitKeyword_as_compat(this):t.visitChildren(this)}},SK=class extends ga{constructor(t,e){super(t,e)}ABORT(){return this.getToken(tf.ABORT,0)}ACTION(){return this.getToken(tf.ACTION,0)}ADD(){return this.getToken(tf.ADD,0)}AFTER(){return this.getToken(tf.AFTER,0)}ALTER(){return this.getToken(tf.ALTER,0)}ANALYZE(){return this.getToken(tf.ANALYZE,0)}AND(){return this.getToken(tf.AND,0)}ANSI(){return this.getToken(tf.ANSI,0)}ARRAY(){return this.getToken(tf.ARRAY,0)}ASC(){return this.getToken(tf.ASC,0)}ASYNC(){return this.getToken(tf.ASYNC,0)}ATTACH(){return this.getToken(tf.ATTACH,0)}ATTRIBUTES(){return this.getToken(tf.ATTRIBUTES,0)}AUTOINCREMENT(){return this.getToken(tf.AUTOINCREMENT,0)}BEFORE(){return this.getToken(tf.BEFORE,0)}BEGIN(){return this.getToken(tf.BEGIN,0)}BERNOULLI(){return this.getToken(tf.BERNOULLI,0)}BY(){return this.getToken(tf.BY,0)}CASCADE(){return this.getToken(tf.CASCADE,0)}CHANGEFEED(){return this.getToken(tf.CHANGEFEED,0)}CHECK(){return this.getToken(tf.CHECK,0)}COLLATE(){return this.getToken(tf.COLLATE,0)}COMMIT(){return this.getToken(tf.COMMIT,0)}CONDITIONAL(){return this.getToken(tf.CONDITIONAL,0)}CONFLICT(){return this.getToken(tf.CONFLICT,0)}CONNECT(){return this.getToken(tf.CONNECT,0)}CONSTRAINT(){return this.getToken(tf.CONSTRAINT,0)}CONSUMER(){return this.getToken(tf.CONSUMER,0)}COVER(){return this.getToken(tf.COVER,0)}CREATE(){return this.getToken(tf.CREATE,0)}CROSS(){return this.getToken(tf.CROSS,0)}CURRENT(){return this.getToken(tf.CURRENT,0)}DATA(){return this.getToken(tf.DATA,0)}DATABASE(){return this.getToken(tf.DATABASE,0)}DECIMAL(){return this.getToken(tf.DECIMAL,0)}DECLARE(){return this.getToken(tf.DECLARE,0)}DEFAULT(){return this.getToken(tf.DEFAULT,0)}DEFERRABLE(){return this.getToken(tf.DEFERRABLE,0)}DEFERRED(){return this.getToken(tf.DEFERRED,0)}DEFINE(){return this.getToken(tf.DEFINE,0)}DELETE(){return this.getToken(tf.DELETE,0)}DESC(){return this.getToken(tf.DESC,0)}DESCRIBE(){return this.getToken(tf.DESCRIBE,0)}DETACH(){return this.getToken(tf.DETACH,0)}DIRECTORY(){return this.getToken(tf.DIRECTORY,0)}DISABLE(){return this.getToken(tf.DISABLE,0)}DISCARD(){return this.getToken(tf.DISCARD,0)}DO(){return this.getToken(tf.DO,0)}DROP(){return this.getToken(tf.DROP,0)}EACH(){return this.getToken(tf.EACH,0)}ELSE(){return this.getToken(tf.ELSE,0)}EMPTY(){return this.getToken(tf.EMPTY,0)}ENCRYPTED(){return this.getToken(tf.ENCRYPTED,0)}END(){return this.getToken(tf.END,0)}ERROR(){return this.getToken(tf.ERROR,0)}ESCAPE(){return this.getToken(tf.ESCAPE,0)}EVALUATE(){return this.getToken(tf.EVALUATE,0)}EXCLUDE(){return this.getToken(tf.EXCLUDE,0)}EXCLUSION(){return this.getToken(tf.EXCLUSION,0)}EXCLUSIVE(){return this.getToken(tf.EXCLUSIVE,0)}EXPLAIN(){return this.getToken(tf.EXPLAIN,0)}EXPORT(){return this.getToken(tf.EXPORT,0)}EXTERNAL(){return this.getToken(tf.EXTERNAL,0)}FAIL(){return this.getToken(tf.FAIL,0)}FAMILY(){return this.getToken(tf.FAMILY,0)}FILTER(){return this.getToken(tf.FILTER,0)}FIRST(){return this.getToken(tf.FIRST,0)}FLATTEN(){return this.getToken(tf.FLATTEN,0)}FOLLOWING(){return this.getToken(tf.FOLLOWING,0)}FOR(){return this.getToken(tf.FOR,0)}FOREIGN(){return this.getToken(tf.FOREIGN,0)}FUNCTION(){return this.getToken(tf.FUNCTION,0)}GLOB(){return this.getToken(tf.GLOB,0)}GRANT(){return this.getToken(tf.GRANT,0)}GROUP(){return this.getToken(tf.GROUP,0)}GROUPING(){return this.getToken(tf.GROUPING,0)}HASH(){return this.getToken(tf.HASH,0)}IF(){return this.getToken(tf.IF,0)}IGNORE(){return this.getToken(tf.IGNORE,0)}ILIKE(){return this.getToken(tf.ILIKE,0)}IMMEDIATE(){return this.getToken(tf.IMMEDIATE,0)}IMPORT(){return this.getToken(tf.IMPORT,0)}IN(){return this.getToken(tf.IN,0)}INDEX(){return this.getToken(tf.INDEX,0)}INDEXED(){return this.getToken(tf.INDEXED,0)}INHERITS(){return this.getToken(tf.INHERITS,0)}INITIAL(){return this.getToken(tf.INITIAL,0)}INITIALLY(){return this.getToken(tf.INITIALLY,0)}INNER(){return this.getToken(tf.INNER,0)}INSERT(){return this.getToken(tf.INSERT,0)}INSTEAD(){return this.getToken(tf.INSTEAD,0)}INTO(){return this.getToken(tf.INTO,0)}IS(){return this.getToken(tf.IS,0)}ISNULL(){return this.getToken(tf.ISNULL,0)}JOIN(){return this.getToken(tf.JOIN,0)}KEY(){return this.getToken(tf.KEY,0)}LAST(){return this.getToken(tf.LAST,0)}LEFT(){return this.getToken(tf.LEFT,0)}LEGACY(){return this.getToken(tf.LEGACY,0)}LIKE(){return this.getToken(tf.LIKE,0)}MANAGE(){return this.getToken(tf.MANAGE,0)}MATCH(){return this.getToken(tf.MATCH,0)}MATCHES(){return this.getToken(tf.MATCHES,0)}MATCH_RECOGNIZE(){return this.getToken(tf.MATCH_RECOGNIZE,0)}MEASURES(){return this.getToken(tf.MEASURES,0)}MICROSECONDS(){return this.getToken(tf.MICROSECONDS,0)}MILLISECONDS(){return this.getToken(tf.MILLISECONDS,0)}MODIFY(){return this.getToken(tf.MODIFY,0)}NANOSECONDS(){return this.getToken(tf.NANOSECONDS,0)}NATURAL(){return this.getToken(tf.NATURAL,0)}NEXT(){return this.getToken(tf.NEXT,0)}NO(){return this.getToken(tf.NO,0)}NOTNULL(){return this.getToken(tf.NOTNULL,0)}NULLS(){return this.getToken(tf.NULLS,0)}OBJECT(){return this.getToken(tf.OBJECT,0)}OF(){return this.getToken(tf.OF,0)}OFFSET(){return this.getToken(tf.OFFSET,0)}OMIT(){return this.getToken(tf.OMIT,0)}ON(){return this.getToken(tf.ON,0)}ONE(){return this.getToken(tf.ONE,0)}ONLY(){return this.getToken(tf.ONLY,0)}OPTION(){return this.getToken(tf.OPTION,0)}OR(){return this.getToken(tf.OR,0)}ORDER(){return this.getToken(tf.ORDER,0)}OTHERS(){return this.getToken(tf.OTHERS,0)}OUTER(){return this.getToken(tf.OUTER,0)}OVER(){return this.getToken(tf.OVER,0)}PARALLEL(){return this.getToken(tf.PARALLEL,0)}PARTITION(){return this.getToken(tf.PARTITION,0)}PASSING(){return this.getToken(tf.PASSING,0)}PASSWORD(){return this.getToken(tf.PASSWORD,0)}PAST(){return this.getToken(tf.PAST,0)}PATTERN(){return this.getToken(tf.PATTERN,0)}PER(){return this.getToken(tf.PER,0)}PERMUTE(){return this.getToken(tf.PERMUTE,0)}PLAN(){return this.getToken(tf.PLAN,0)}PRAGMA(){return this.getToken(tf.PRAGMA,0)}PRECEDING(){return this.getToken(tf.PRECEDING,0)}PRESORT(){return this.getToken(tf.PRESORT,0)}PRIMARY(){return this.getToken(tf.PRIMARY,0)}PRIVILEGES(){return this.getToken(tf.PRIVILEGES,0)}QUEUE(){return this.getToken(tf.QUEUE,0)}RAISE(){return this.getToken(tf.RAISE,0)}REFERENCES(){return this.getToken(tf.REFERENCES,0)}REGEXP(){return this.getToken(tf.REGEXP,0)}REINDEX(){return this.getToken(tf.REINDEX,0)}RELEASE(){return this.getToken(tf.RELEASE,0)}REMOVE(){return this.getToken(tf.REMOVE,0)}RENAME(){return this.getToken(tf.RENAME,0)}REPLACE(){return this.getToken(tf.REPLACE,0)}REPLICATION(){return this.getToken(tf.REPLICATION,0)}RESET(){return this.getToken(tf.RESET,0)}RESPECT(){return this.getToken(tf.RESPECT,0)}RESTRICT(){return this.getToken(tf.RESTRICT,0)}RESULT(){return this.getToken(tf.RESULT,0)}REVERT(){return this.getToken(tf.REVERT,0)}REVOKE(){return this.getToken(tf.REVOKE,0)}RIGHT(){return this.getToken(tf.RIGHT,0)}RLIKE(){return this.getToken(tf.RLIKE,0)}ROLLBACK(){return this.getToken(tf.ROLLBACK,0)}ROW(){return this.getToken(tf.ROW,0)}SAMPLE(){return this.getToken(tf.SAMPLE,0)}SAVEPOINT(){return this.getToken(tf.SAVEPOINT,0)}SECONDS(){return this.getToken(tf.SECONDS,0)}SEEK(){return this.getToken(tf.SEEK,0)}SEMI(){return this.getToken(tf.SEMI,0)}SETS(){return this.getToken(tf.SETS,0)}SHOW(){return this.getToken(tf.SHOW,0)}SKIP_RULE(){return this.getToken(tf.SKIP_RULE,0)}SOURCE(){return this.getToken(tf.SOURCE,0)}SUBQUERY(){return this.getToken(tf.SUBQUERY,0)}SUBSET(){return this.getToken(tf.SUBSET,0)}SYMBOLS(){return this.getToken(tf.SYMBOLS,0)}SYNC(){return this.getToken(tf.SYNC,0)}SYSTEM(){return this.getToken(tf.SYSTEM,0)}TABLE(){return this.getToken(tf.TABLE,0)}TABLES(){return this.getToken(tf.TABLES,0)}TABLESAMPLE(){return this.getToken(tf.TABLESAMPLE,0)}TABLESTORE(){return this.getToken(tf.TABLESTORE,0)}TEMP(){return this.getToken(tf.TEMP,0)}TEMPORARY(){return this.getToken(tf.TEMPORARY,0)}THEN(){return this.getToken(tf.THEN,0)}TIES(){return this.getToken(tf.TIES,0)}TO(){return this.getToken(tf.TO,0)}TOPIC(){return this.getToken(tf.TOPIC,0)}TRANSACTION(){return this.getToken(tf.TRANSACTION,0)}TRIGGER(){return this.getToken(tf.TRIGGER,0)}TYPE(){return this.getToken(tf.TYPE,0)}UNCONDITIONAL(){return this.getToken(tf.UNCONDITIONAL,0)}UNIQUE(){return this.getToken(tf.UNIQUE,0)}UNKNOWN(){return this.getToken(tf.UNKNOWN,0)}UNMATCHED(){return this.getToken(tf.UNMATCHED,0)}UPDATE(){return this.getToken(tf.UPDATE,0)}UPSERT(){return this.getToken(tf.UPSERT,0)}USE(){return this.getToken(tf.USE,0)}USER(){return this.getToken(tf.USER,0)}USING(){return this.getToken(tf.USING,0)}VACUUM(){return this.getToken(tf.VACUUM,0)}VALUES(){return this.getToken(tf.VALUES,0)}VIEW(){return this.getToken(tf.VIEW,0)}VIRTUAL(){return this.getToken(tf.VIRTUAL,0)}WITH(){return this.getToken(tf.WITH,0)}WRAPPER(){return this.getToken(tf.WRAPPER,0)}XOR(){return this.getToken(tf.XOR,0)}get ruleIndex(){return tf.RULE_keyword_compat}accept(t){return t.visitKeyword_compat?t.visitKeyword_compat(this):t.visitChildren(this)}},lK=class extends ga{constructor(t,e){super(t,e)}OPTIONAL(){return this.getToken(tf.OPTIONAL,0)}TUPLE(){return this.getToken(tf.TUPLE,0)}STRUCT(){return this.getToken(tf.STRUCT,0)}VARIANT(){return this.getToken(tf.VARIANT,0)}LIST(){return this.getToken(tf.LIST,0)}FLOW(){return this.getToken(tf.FLOW,0)}DICT(){return this.getToken(tf.DICT,0)}SET(){return this.getToken(tf.SET,0)}ENUM(){return this.getToken(tf.ENUM,0)}RESOURCE(){return this.getToken(tf.RESOURCE,0)}TAGGED(){return this.getToken(tf.TAGGED,0)}CALLABLE(){return this.getToken(tf.CALLABLE,0)}get ruleIndex(){return tf.RULE_type_id}accept(t){return t.visitType_id?t.visitType_id(this):t.visitChildren(this)}},OK=class extends ga{constructor(t,e){super(t,e)}TRUE(){return this.getToken(tf.TRUE,0)}FALSE(){return this.getToken(tf.FALSE,0)}get ruleIndex(){return tf.RULE_bool_value}accept(t){return t.visitBool_value?t.visitBool_value(this):t.visitChildren(this)}},IK=class extends ga{constructor(t,e){super(t,e)}REAL(){return this.getToken(tf.REAL,0)}get ruleIndex(){return tf.RULE_real}accept(t){return t.visitReal?t.visitReal(this):t.visitChildren(this)}},uK=class extends ga{constructor(t,e){super(t,e)}DIGITS(){return this.getToken(tf.DIGITS,0)}INTEGER_VALUE(){return this.getToken(tf.INTEGER_VALUE,0)}get ruleIndex(){return tf.RULE_integer}accept(t){return t.visitInteger?t.visitInteger(this):t.visitChildren(this)}},NK=class extends ga{constructor(t,e){super(t,e)}sql_stmt_list_yq(){return this.getRuleContext(0,LK)}PRAGMA(){return this.getToken(tf.PRAGMA,0)}ANSI(){return this.getToken(tf.ANSI,0)}DIGITS(){return this.getToken(tf.DIGITS,0)}ansi_sql_stmt_list(){return this.getRuleContext(0,af)}get ruleIndex(){return tf.RULE_sql_query_yq}accept(t){return t.visitSql_query_yq?t.visitSql_query_yq(this):t.visitChildren(this)}},LK=class extends ga{constructor(t,e){super(t,e)}sql_stmt_yq(t){return void 0===t?this.getRuleContexts(CK):this.getRuleContext(t,CK)}EOF(){return this.getToken(tf.EOF,0)}SEMICOLON(t){return void 0===t?this.getTokens(tf.SEMICOLON):this.getToken(tf.SEMICOLON,t)}get ruleIndex(){return tf.RULE_sql_stmt_list_yq}accept(t){return t.visitSql_stmt_list_yq?t.visitSql_stmt_list_yq(this):t.visitChildren(this)}},CK=class extends ga{constructor(t,e){super(t,e)}sql_stmt_core_yq(){return this.getRuleContext(0,_K)}EXPLAIN(){return this.getToken(tf.EXPLAIN,0)}QUERY(){return this.getToken(tf.QUERY,0)}PLAN(){return this.getToken(tf.PLAN,0)}get ruleIndex(){return tf.RULE_sql_stmt_yq}accept(t){return t.visitSql_stmt_yq?t.visitSql_stmt_yq(this):t.visitChildren(this)}},_K=class extends ga{constructor(t,e){super(t,e)}pragma_stmt(){return this.getRuleContext(0,cw)}select_stmt(){return this.getRuleContext(0,Tw)}named_nodes_stmt(){return this.getRuleContext(0,mX)}use_stmt(){return this.getRuleContext(0,dX)}into_table_stmt_yq(){return this.getRuleContext(0,Pb)}declare_stmt(){return this.getRuleContext(0,$Y)}import_stmt(){return this.getRuleContext(0,ew)}export_stmt(){return this.getRuleContext(0,sw)}do_stmt(){return this.getRuleContext(0,iw)}define_action_or_subquery_stmt(){return this.getRuleContext(0,SV)}if_stmt(){return this.getRuleContext(0,OV)}for_stmt(){return this.getRuleContext(0,IV)}values_stmt(){return this.getRuleContext(0,db)}get ruleIndex(){return tf.RULE_sql_stmt_core_yq}accept(t){return t.visitSql_stmt_core_yq?t.visitSql_stmt_core_yq(this):t.visitChildren(this)}},PK=class extends ga{constructor(t,e){super(t,e)}AS(){return this.getToken(tf.AS,0)}object_ref(){return this.getRuleContext(0,PV)}get ruleIndex(){return tf.RULE_replication_name}accept(t){return t.visitReplication_name?t.visitReplication_name(this):t.visitChildren(this)}},MK=class extends ga{constructor(t,e){super(t,e)}WHERE(){return this.getToken(tf.WHERE,0)}expr(){return this.getRuleContext(0,Ef)}get ruleIndex(){return tf.RULE_where_expr}accept(t){return t.visitWhere_expr?t.visitWhere_expr(this):t.visitChildren(this)}},dK=class extends ga{constructor(t,e){super(t,e)}FROM(){return this.getToken(tf.FROM,0)}join_source(){return this.getRuleContext(0,Eb)}get ruleIndex(){return tf.RULE_from_stmt}accept(t){return t.visitFrom_stmt?t.visitFrom_stmt(this):t.visitChildren(this)}},UK=class extends ga{constructor(t,e){super(t,e)}alter_table_stmt(){return this.getRuleContext(0,aW)}alter_table_store_stmt(){return this.getRuleContext(0,nW)}get ruleIndex(){return tf.RULE_alter_table_for_autocomplete}accept(t){return t.visitAlter_table_for_autocomplete?t.visitAlter_table_for_autocomplete(this):t.visitChildren(this)}},mK=class extends Ii{},DK={SPACE:tf.WS,FROM:tf.FROM,OPENING_BRACKET:tf.LPAREN,CLOSING_BRACKET:tf.RPAREN,ALTER:tf.ALTER,INSERT:tf.INSERT,UPDATE:tf.UPDATE,JOIN:tf.JOIN,SEMICOLON:tf.SEMICOLON,SELECT:tf.SELECT};function pK(t){let e=new Map(t.map((t=>[t,!0])));return{anyRuleInList:t=>(Array.isArray(t)?t:[t]).some((t=>e.has(t))),allRulesInList:t=>!t.some((t=>!e.has(t)))}}var gK=tf.ruleNames;function xK(t){let e=t.findIndex((t=>t===tf.RULE_sql_stmt_core||t===tf.RULE_sql_stmt_core_yq));if(-1===e)return;let s=t[e+1];return s?gK[s]:void 0}var kK={suggestObject:"object",suggestTableStore:"tableStore",suggestTable:"table",suggestExternalTable:"externalTable",suggestExternalDatasource:"externalDataSource",suggestTopic:"topic",suggestView:"view",suggestReplication:"replication",suggestGroup:"group",suggestUser:"user"};function HK(t,e,s){let a={...pK(t),cursorTokenIndex:e,tokenStream:s},r=function(t){let{anyRuleInList:e,allRulesInList:s}=t;if(s([tf.RULE_select_stmt,tf.RULE_id_expr]))return!e([tf.RULE_window_specification_details,tf.RULE_group_by_clause,tf.RULE_table_ref,tf.RULE_where_expr])||void 0}(a),i=function(t){let{anyRuleInList:e}=t;return e([tf.RULE_alter_object_stmt,tf.RULE_drop_object_stmt])&&e(tf.RULE_id_or_at)}(a),c=function(t){let{anyRuleInList:e,tokenStream:s,cursorTokenIndex:a}=t;if(!e(tf.RULE_id_or_at))return;let r=e(tf.RULE_drop_table_stmt)&&!!UC(s,DK,a,tf.TABLESTORE);return e(tf.RULE_alter_table_store_stmt)||r}(a),n=function(t){let{anyRuleInList:e,allRulesInList:s,tokenStream:a,cursorTokenIndex:r}=t;if(!e([tf.RULE_id_or_at,tf.RULE_id_table_or_type]))return;let i=e(tf.RULE_replication_target)&&!e(tf.RULE_replication_name),c=s([tf.RULE_simple_table_ref])&&!UC(a,DK,r,tf.CREATE)&&!UC(a,DK,r,tf.EXTERNAL);return e([tf.RULE_table_ref,tf.RULE_table_inherits])||c||i}(a),h=function(t){let{anyRuleInList:e,tokenStream:s,cursorTokenIndex:a}=t;if(!e(tf.RULE_role_name))return;let r=!!UC(s,DK,a,tf.USER),i=!!UC(s,DK,a,tf.RENAME),c=e(tf.RULE_revoke_permissions_stmt),n=e(tf.RULE_alter_group_stmt)&&!i&&r,h=e(tf.RULE_create_group_stmt)&&r,E=e(tf.RULE_alter_user_stmt)&&!i;return e(tf.RULE_drop_role_stmt)&&r||E||h||n||c}(a),E=function(t){let{anyRuleInList:e,tokenStream:s,cursorTokenIndex:a}=t;if(!e(tf.RULE_role_name))return;let r=!!UC(s,DK,a,tf.GROUP),i=!!UC(s,DK,a,tf.USER),c=!!UC(s,DK,a,tf.RENAME),n=e(tf.RULE_drop_role_stmt)&&r,h=e(tf.RULE_alter_group_stmt)&&!c&&!i;return e(tf.RULE_revoke_permissions_stmt)||h||n}(a),T=function(t){let{anyRuleInList:e}=t;if(e([tf.RULE_an_id,tf.RULE_topic_ref]))return e([tf.RULE_drop_topic_stmt,tf.RULE_alter_topic_stmt])}(a),o=function(t){let{allRulesInList:e}=t;return e([tf.RULE_drop_view_stmt,tf.RULE_id_or_at])||e([tf.RULE_table_ref,tf.RULE_id_table_or_type])}(a),R=function(t){let{anyRuleInList:e}=t;if(e(tf.RULE_id_or_at))return e([tf.RULE_alter_replication_stmt,tf.RULE_drop_replication_stmt])}(a),A=function(t){let{allRulesInList:e,tokenStream:s,cursorTokenIndex:a}=t,r=!!UC(s,DK,a,tf.EXTERNAL);return e([tf.RULE_id_or_at,tf.RULE_drop_table_stmt])&&r||e([tf.RULE_table_ref,tf.RULE_id_table_or_type])}(a),S=function(t){let{anyRuleInList:e}=t;if(e(tf.RULE_id_or_at))return e([tf.RULE_drop_external_data_source_stmt,tf.RULE_alter_external_data_source_stmt])}(a),l=function(t){let{anyRuleInList:e}=t;if(e(tf.RULE_an_id))return e([tf.RULE_alter_table_drop_index,tf.RULE_alter_table_rename_index_to])}(a),O=function(t){let{anyRuleInList:e,tokenStream:s,cursorTokenIndex:a}=t;if(!e([tf.RULE_an_id,tf.RULE_id_expr])||e([tf.RULE_table_ref,tf.RULE_values_stmt,tf.RULE_alter_table_add_column,tf.RULE_lambda_stmt]))return;let r=e(tf.RULE_select_kind)&&!UC(s,DK,a,tf.LIMIT),i=e(tf.RULE_alter_table_alter_column)&&!UC(s,DK,a,tf.FAMILY);return e([tf.RULE_pure_column_list,tf.RULE_pure_column_or_named,tf.RULE_column_name,tf.RULE_without_column_name,tf.RULE_alter_table_drop_column,tf.RULE_delete_stmt])||i||r}(a),I=function(t){let{anyRuleInList:e}=t;return e(tf.RULE_type_name_simple)}(a),u=function(t){let{allRulesInList:e}=t;return e([tf.RULE_an_id,tf.RULE_pragma_stmt])}(a),N=function(t){let{anyRuleInList:e}=t;if(e([tf.RULE_atom_expr,tf.RULE_in_atom_expr])&&!e(tf.RULE_table_ref))return e(tf.RULE_select_stmt)}(a),L=function(t){let{allRulesInList:e}=t;return e([tf.RULE_id_expr,tf.RULE_table_ref])}(a),C=function(t){let{anyRuleInList:e}=t;if(e(tf.RULE_id_expr)&&!e(tf.RULE_table_ref))return e(tf.RULE_select_stmt)}(a),_=function(t){let{anyRuleInList:e,allRulesInList:s}=t;if(s([tf.RULE_select_stmt,tf.RULE_id_expr]))return!e([tf.RULE_group_by_clause,tf.RULE_table_ref,tf.RULE_where_expr])||void 0}(a),P=function(t){let{allRulesInList:e}=t;return e([tf.RULE_an_id_hint,tf.RULE_table_hint])}(a),M=function(t){let{allRulesInList:e,anyRuleInList:s}=t;if(!s([tf.RULE_table_setting_value,tf.RULE_topic_setting_value,tf.RULE_topic_consumer_setting_value])){if(e([tf.RULE_with_table_settings,tf.RULE_an_id]))return s(tf.RULE_create_external_data_source_stmt)?"externalDataSource":s(tf.RULE_create_view_stmt)?"view":s(tf.RULE_create_table_stmt)?"table":void 0;if(e([tf.RULE_with_topic_settings,tf.RULE_an_id]))return"topic";if(e([tf.RULE_topic_consumer_with_settings,tf.RULE_an_id]))return"topicConsumer";if(e([tf.RULE_replication_settings,tf.RULE_an_id]))return"replication"}}(a);return{suggestWindowFunctions:r,shouldSuggestTableIndexes:l,shouldSuggestColumns:O,shouldSuggestColumnAliases:O,suggestSimpleTypes:I,suggestPragmas:u,suggestUdfs:N,suggestTableFunctions:L,suggestFunctions:C,suggestAggregateFunctions:_,suggestTableHints:P?xK(t):void 0,suggestEntitySettings:M,suggestObject:i,suggestTableStore:c,suggestTable:n,suggestUser:h,suggestGroup:E,suggestTopic:T,suggestView:o,suggestReplication:R,suggestExternalTable:A,suggestExternalDatasource:S}}var GK=new Set(function(){let t=[],e=tf.EQUALS,s=tf.LBRACE_SQUARE;for(let a=e;a<=s;a++)a!==tf.ASTERISK&&t.push(a);return t.push(tf.STREAM),t.push(tf.STRING_VALUE),t.push(tf.REAL),t.push(tf.EOF),t.push(tf.DIGITS),t.push(tf.BLOB),t.push(tf.CURRENT_TIME),t.push(tf.CURRENT_DATE),t.push(tf.CURRENT_TIMESTAMP),t}()),FK=new Set([tf.RULE_id_or_type,tf.RULE_cluster_expr,tf.RULE_identifier,tf.RULE_id,tf.RULE_integer,tf.RULE_type_id,tf.RULE_keyword,tf.RULE_keyword_compat,tf.RULE_keyword_expr_uncompat,tf.RULE_keyword_table_uncompat,tf.RULE_keyword_select_uncompat,tf.RULE_keyword_alter_uncompat,tf.RULE_keyword_in_uncompat,tf.RULE_keyword_window_uncompat,tf.RULE_keyword_hint_uncompat,tf.RULE_id_schema,tf.RULE_id_expr_in,tf.RULE_id_window,tf.RULE_id_table,tf.RULE_id_without,tf.RULE_id_hint,tf.RULE_id_as_compat]),vK=class extends mK{constructor(){super(),this.visitSimple_table_ref_core=t=>{try{var e,s,a;let r=null===(e=t.object_ref())||void 0===e||null===(s=e.id_or_at())||void 0===s||null===(a=s.an_id_or_type())||void 0===a?void 0:a.getText();r&&this.symbolTable.addNewSymbolOfType(qc,this.scope,r)}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitAlter_table_store_stmt=t=>{try{var e,s;this.symbolTable.addNewSymbolOfType(qc,this.scope,null===(e=t.object_ref())||void 0===e||null===(s=e.id_or_at())||void 0===s?void 0:s.getText())}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitNamed_single_source=t=>{try{var e,s,a,r,i;this.symbolTable.addNewSymbolOfType(qc,this.scope,null!==(e=null===(s=t.single_source().table_ref())||void 0===s?void 0:s.getText())&&void 0!==e?e:"",null!==(a=null===(r=t.an_id())||void 0===r?void 0:r.getText())&&void 0!==a?a:null===(i=t.an_id_as_compat())||void 0===i?void 0:i.getText())}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitNamed_column=t=>{try{var e;let s=null===(e=t.an_id())||void 0===e?void 0:e.getText();s&&this.symbolTable.addNewSymbolOfType(zc,this.scope,s)}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitNamed_expr=t=>{try{var e;let s=null===(e=t.an_id_or_type())||void 0===e?void 0:e.getText();s&&this.symbolTable.addNewSymbolOfType(zc,this.scope,s)}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.visitResult_column=t=>{try{var e,s,a;let r=null!==(e=null===(s=t.an_id_or_type())||void 0===s?void 0:s.getText())&&void 0!==e?e:null===(a=t.an_id_as_compat())||void 0===a?void 0:a.getText();r&&this.symbolTable.addNewSymbolOfType(zc,this.scope,r)}catch($c){if(!($c instanceof vc))throw $c}return this.visitChildren(t)},this.symbolTable=new Zc("",{allowDuplicateSymbols:!0}),this.scope=this.symbolTable.addNewSymbolOfType(Bc,void 0)}};function BK(t,e){return e?fK(t,e):t.sql_query()}function yK(t,e){return e?fK(t,e):t.sql_query_yq()}function fK(t,e){switch(e){case"from":return t.from_stmt();case"alter":return t.alter_table_for_autocomplete();case"insert":return t.into_table_stmt();case"update":return t.update_stmt();case"select":return t.select_core()}}function YK(t){return(e,s,a,r,i,c)=>{let{shouldSuggestColumns:n,shouldSuggestColumnAliases:h,shouldSuggestTableIndexes:E,...T}=function(t,e,s){let a={};for(let[O,I]of t){if(!uC(e,I))break;switch(O){case tf.RULE_id_table:case tf.RULE_id_hint:case tf.RULE_identifier:case tf.RULE_id_or_type:case tf.RULE_id:{let t=HK(I.ruleList,e,s),r=Object.fromEntries(Object.entries(t).filter((t=>{let[e,s]=t;return s})));a={...a,...r}}}}let{suggestObject:r,suggestTableStore:i,suggestTable:c,suggestUser:n,suggestGroup:h,suggestTopic:E,suggestView:T,suggestReplication:o,suggestExternalTable:R,suggestExternalDatasource:A,...S}=a,l=Object.entries({suggestObject:r,suggestTableStore:i,suggestTable:c,suggestUser:n,suggestGroup:h,suggestTopic:E,suggestView:T,suggestReplication:o,suggestExternalTable:R,suggestExternalDatasource:A}).filter((t=>{let[e,s]=t;return s})).map((t=>{let[e]=t;return kK[e]}));return{suggestEntity:l.length?l:void 0,...S}}(s,r,a),o={...e,...T,suggestTemplates:_C(c,i)};if(n||h||E){let e=new vK,{tableContextSuggestion:s,suggestColumnAliases:r}=mC($y,tf,e,DK,t,a,i,c,!0);n&&s&&(o.suggestColumns={tables:s.tables}),E&&s&&(o.suggestTableIndexes={tables:s.tables}),h&&r&&(o.suggestColumnAliases=r)}return o}}var wK=new ef(null,-1),bK={Lexer:$y,Parser:tf,tokenDictionary:DK,ignoredTokens:GK,rulesToVisit:FK,getParseTree:BK,enrichAutocompleteResult:YK(BK),context:wK},WK=new NK(null,-1),VK={Lexer:$y,Parser:tf,tokenDictionary:DK,ignoredTokens:GK,rulesToVisit:FK,getParseTree:yK,enrichAutocompleteResult:YK(yK),context:WK};function XK(t,e,s,a,r){let i=PC(t,e,r),c=new NG(s.SPACE);return i.removeErrorListeners(),i.addErrorListener(c),a(i),{errors:c.errors}}var KK=/^'(.*)'$/;function QK(t,e,s,a,r,i,c,n,h,E){let T=PC(t,e,n),{tokenStream:o}=T,R=new NG(s.SPACE);T.removeErrorListeners(),T.addErrorListener(R),i(T);let A=new Jc(T);A.ignoredTokens=a,A.preferredRules=r;let S=IC(o,h,s.SPACE);if(void 0===S)throw new Error("Could not find cursor token index for line: ".concat(h.line,", column: ").concat(h.column));let l=[],{tokens:O,rules:I}=A.collectCandidates(S,E);return O.forEach(((t,e)=>{var s;let a=(null===(s=T.vocabulary.getLiteralName(e))||void 0===s?void 0:s.replace(KK,"$1"))||T.vocabulary.getSymbolicName(e);if(!a)throw new Error("Could not get name for token ".concat(e));l.push({value:a})})),c({errors:R.errors,suggestKeywords:l},I,o,S,h,n)}function JK(t){return XK(uG.Lexer,uG.Parser,uG.tokenDictionary,uG.getParseTree,t)}function ZK(t,e){return QK(uG.Lexer,uG.Parser,uG.tokenDictionary,uG.ignoredTokens,uG.rulesToVisit,uG.getParseTree,uG.enrichAutocompleteResult,t,e)}function qK(t){return XK(HC.Lexer,HC.Parser,HC.tokenDictionary,HC.getParseTree,t)}function jK(t,e){return QK(HC.Lexer,HC.Parser,HC.tokenDictionary,HC.ignoredTokens,HC.rulesToVisit,HC.getParseTree,HC.enrichAutocompleteResult,t,e)}function zK(t){return XK(zy.Lexer,zy.Parser,zy.tokenDictionary,zy.getParseTree,t)}function $K(t,e){return QK(zy.Lexer,zy.Parser,zy.tokenDictionary,zy.ignoredTokens,zy.rulesToVisit,zy.getParseTree,zy.enrichAutocompleteResult,t,e)}function tQ(t){return XK(bK.Lexer,bK.Parser,bK.tokenDictionary,bK.getParseTree,t)}function eQ(t,e){return QK(bK.Lexer,bK.Parser,bK.tokenDictionary,bK.ignoredTokens,bK.rulesToVisit,bK.getParseTree,bK.enrichAutocompleteResult,t,e,bK.context)}function sQ(t){return XK(VK.Lexer,VK.Parser,VK.tokenDictionary,VK.getParseTree,t)}function aQ(t,e){return QK(VK.Lexer,VK.Parser,VK.tokenDictionary,VK.ignoredTokens,VK.rulesToVisit,VK.getParseTree,VK.enrichAutocompleteResult,t,e,VK.context)}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8622.49f3054c.chunk.js b/ydb/core/viewer/monitoring/static/js/8622.49f3054c.chunk.js new file mode 100644 index 000000000000..e6f1c1b0eea3 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8622.49f3054c.chunk.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8622],{28622:(e,t,C)=>{C.r(t),C.d(t,{ReactComponent:()=>u,default:()=>E});var r,a,n,o,i,l,s,d,c,H,p,V,k,M=C(68963);function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var C=arguments[t];for(var r in C)Object.prototype.hasOwnProperty.call(C,r)&&(e[r]=C[r])}return e},h.apply(this,arguments)}function Z(e,t){let{title:C,titleId:Z,...u}=e;return M.createElement("svg",h({width:260,height:260,viewBox:"0 0 520 520",fill:"none",xmlns:"http://www.w3.org/2000/svg",ref:t,"aria-labelledby":Z},u),C?M.createElement("title",{id:Z},C):null,r||(r=M.createElement("path",{opacity:.1,d:"M228.637 445C217.178 445.049 206.065 441.074 197.233 433.768L28.4227 288.499C24.7711 285.319 22.4943 280.846 22.0715 276.02C21.6487 271.195 23.1128 266.393 26.1557 262.626L65.3512 214.612C66.9235 212.684 68.8667 211.091 71.0657 209.927C73.2646 208.764 75.6745 208.055 78.1525 207.841C80.6305 207.627 83.1263 207.913 85.4917 208.682C87.8572 209.452 90.0443 210.688 91.9234 212.319L223.682 326.793L435.516 94.088C438.811 90.4596 443.405 88.2807 448.298 88.0253C453.191 87.7699 457.987 89.4587 461.642 92.7243L507.824 134.205C509.647 135.841 511.129 137.821 512.184 140.032C513.24 142.243 513.849 144.64 513.975 147.087C514.102 149.534 513.744 151.982 512.922 154.29C512.101 156.598 510.831 158.721 509.187 160.536L265.553 428.549C260.881 433.709 255.185 437.838 248.829 440.671C242.472 443.503 235.595 444.978 228.637 445Z",fill:"#509CF5"})),a||(a=M.createElement("path",{d:"M412.933 102.332H294.933C289.433 102.332 284.933 106.832 284.933 112.332V315.432C284.933 320.932 289.433 325.432 294.933 325.432H446.433C451.933 325.432 456.433 320.932 456.433 315.432V133.732L429.933 107.332",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.01 10.02"})),n||(n=M.createElement("path",{d:"M425.033 102.332V104.332",stroke:"#00E6C5",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),o||(o=M.createElement("path",{d:"M425.033 115.031V126.331C425.033 130.431 428.333 133.731 432.433 133.731H449.033",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.27 10.68"})),i||(i=M.createElement("path",{d:"M454.333 133.73H456.333",stroke:"#00E6C5",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),l||(l=M.createElement("path",{d:"M77 397.052L89.1 409L110 388",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4.84211,strokeLinecap:"round",strokeLinejoin:"round"})),s||(s=M.createElement("path",{d:"M125 398C125 416.775 109.775 432 91 432C72.2252 432 57 416.775 57 398C57 379.225 72.2252 364 91 364C109.775 364 125 379.225 125 398Z",stroke:"#00E6C5",strokeOpacity:.8,strokeWidth:4.84211,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4.84 12.11"})),d||(d=M.createElement("path",{d:"M147.5 119C147.5 117.895 146.605 117 145.5 117C144.395 117 143.5 117.895 143.5 119H147.5ZM143.5 129.8C143.5 130.905 144.395 131.8 145.5 131.8C146.605 131.8 147.5 130.905 147.5 129.8H143.5ZM147.5 152.5C147.5 151.395 146.605 150.5 145.5 150.5C144.395 150.5 143.5 151.395 143.5 152.5H147.5ZM143.5 164.2C143.5 165.305 144.395 166.2 145.5 166.2C146.605 166.2 147.5 165.305 147.5 164.2H143.5ZM168.1 143.602C169.205 143.602 170.1 142.706 170.1 141.602C170.1 140.497 169.205 139.602 168.1 139.602V143.602ZM157.2 139.602C156.096 139.602 155.2 140.497 155.2 141.602C155.2 142.706 156.096 143.602 157.2 143.602V139.602ZM133.7 143.602C134.805 143.602 135.7 142.706 135.7 141.602C135.7 140.497 134.805 139.602 133.7 139.602V143.602ZM122.9 139.602C121.795 139.602 120.9 140.497 120.9 141.602C120.9 142.706 121.795 143.602 122.9 143.602V139.602ZM143.5 119V129.8H147.5V119H143.5ZM143.5 152.5V164.2H147.5V152.5H143.5ZM168.1 139.602H157.2V143.602H168.1V139.602ZM133.7 139.602H122.9V143.602H133.7V139.602Z",fill:"#2EE5C0",fillOpacity:.8})),c||(c=M.createElement("path",{d:"M406.3 397.5C406.3 396.395 405.405 395.5 404.3 395.5C403.195 395.5 402.3 396.395 402.3 397.5H406.3ZM402.3 403.1C402.3 404.205 403.195 405.1 404.3 405.1C405.405 405.1 406.3 404.205 406.3 403.1H402.3ZM406.3 414.898C406.3 413.794 405.405 412.898 404.3 412.898C403.195 412.898 402.3 413.794 402.3 414.898H406.3ZM402.3 420.998C402.3 422.103 403.195 422.998 404.3 422.998C405.405 422.998 406.3 422.103 406.3 420.998H402.3ZM416.1 411.2C417.205 411.2 418.1 410.305 418.1 409.2C418.1 408.095 417.205 407.2 416.1 407.2V411.2ZM410.4 407.2C409.295 407.2 408.4 408.095 408.4 409.2C408.4 410.305 409.295 411.2 410.4 411.2V407.2ZM398.2 411.2C399.305 411.2 400.2 410.305 400.2 409.2C400.2 408.095 399.305 407.2 398.2 407.2V411.2ZM392.5 407.2C391.395 407.2 390.5 408.095 390.5 409.2C390.5 410.305 391.395 411.2 392.5 411.2V407.2ZM402.3 397.5V403.1H406.3V397.5H402.3ZM402.3 414.898V420.998H406.3V414.898H402.3ZM416.1 407.2H410.4V411.2H416.1V407.2ZM398.2 407.2H392.5V411.2H398.2V407.2Z",fill:"#2EE5C0",fillOpacity:.8})),H||(H=M.createElement("path",{d:"M186 385.667V394.833C186 397.264 185.012 399.596 183.254 401.315C181.496 403.034 179.111 404 176.625 404H121C115.477 404 111 399.523 111 394V249C111 243.477 115.477 239 121 239H176.625C179.111 239 181.496 239.966 183.254 241.685C185.012 243.404 186 245.736 186 248.167V385.667Z",fill:"#0067C1"})),p||(p=M.createElement("path",{d:"M177.143 375.273V384.637C177.143 387.12 176.153 389.501 174.392 391.257C172.63 393.013 170.241 394 167.75 394H112C106.477 394 102 389.522 102 384V235.465C102 229.942 106.477 225.465 112 225.465H167.75C170.241 225.465 172.63 226.451 174.392 228.207C176.153 229.963 177.143 232.345 177.143 234.828V375.273Z",fill:"#007CE9"})),V||(V=M.createElement("path",{d:"M292.385 235.185C291.545 236.543 292.529 238.321 294.126 238.321H375.327C379.067 238.242 382.784 238.917 386.255 240.305C389.726 241.693 392.879 243.765 395.524 246.398C398.169 249.031 400.252 252.169 401.646 255.623C403.041 259.078 403.718 262.778 403.639 266.5C403.639 294.679 394.201 398 356.452 398H242.081C230.712 398 219.806 393.497 211.748 385.477L206.04 379.797C205.665 379.424 205.158 379.214 204.629 379.214H191.299H179.143C178.038 379.214 177.143 378.319 177.143 377.214V239.495C177.143 238.847 177.668 238.321 178.317 238.321C195.697 238.321 212.371 231.438 224.69 219.177L233.949 209.961C240.092 203.848 245.391 196.942 249.705 189.426L267.012 159.283C275.636 144.262 293.887 133.185 306.212 145.354C312.929 151.987 316.741 160.994 316.815 170.411C316.815 171.538 316.721 172.665 316.626 173.886C314.302 197.951 298.104 225.943 292.385 235.185Z",fill:"#FFCC00"})),k||(k=M.createElement("path",{d:"M356.457 369.801H237.651C229.12 369.801 220.937 366.421 214.893 360.401C208.849 354.381 200.666 351.001 192.135 351.001H177.143V379.2H192.135C200.666 379.2 208.849 382.58 214.893 388.6C220.937 394.62 229.12 398 237.651 398H356.457C394.207 398 403.645 294.601 403.645 266.402C403.645 263.723 403.328 261.054 402.701 258.449C399.568 298.831 387.743 369.801 356.457 369.801Z",fill:"#DEB700"})))}const u=M.forwardRef(Z),E=C.p+"static/media/thumbsUp.d4a03fbaa64ce85a0045bf8ba77f8e2b.svg"}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8695.f17f8853.chunk.js b/ydb/core/viewer/monitoring/static/js/8695.f17f8853.chunk.js new file mode 100644 index 000000000000..5992a9b85fc6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8695.f17f8853.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8695],{68695:function(a,e,i){a.exports=function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var i=e(a),_={name:"mi",weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),weekStart:1,weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"}};return i.default.locale(_,null,!0),_}(i(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8702.69a3e0d5.chunk.js b/ydb/core/viewer/monitoring/static/js/8702.69a3e0d5.chunk.js new file mode 100644 index 000000000000..6507fc7dcd69 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8702.69a3e0d5.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8702],{58702:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),t={name:"en-tt",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var _=["th","st","nd","rd"],a=e%100;return"["+e+(_[(a-20)%10]||_[a]||_[0])+"]"}};return a.default.locale(t,null,!0),t}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8747.baf63d86.chunk.js b/ydb/core/viewer/monitoring/static/js/8747.baf63d86.chunk.js new file mode 100644 index 000000000000..91d0893926a3 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8747.baf63d86.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8747],{38747:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={name:"be",weekdays:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),months:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),weekStart:1,weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"}};return t.default.locale(n,null,!0),n}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8791.b209de42.chunk.js b/ydb/core/viewer/monitoring/static/js/8791.b209de42.chunk.js new file mode 100644 index 000000000000..0fed58d59b35 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8791.b209de42.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 8791.b209de42.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8791],{98791:(e,n,t)=>{t.r(n),t.d(n,{conf:()=>o,language:()=>s});var o={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".go",keywords:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var","bool","true","false","uint8","uint16","uint32","uint64","int8","int16","int32","int64","float32","float64","complex64","complex128","byte","rune","uint","int","uintptr","string","nil"],operators:["+","-","*","/","%","&","|","^","<<",">>","&^","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>=","&^=","&&","||","<-","++","--","==","<",">","=","!","!=","<=",">=",":=","...","(",")","","]","{","}",",",";",".",":"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/\[\[.*\]\]/,"annotation"],[/^\s*#\w+/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex"],[/0[0-7']*[0-7]/,"number.octal"],[/0[bB][0-1']*[0-1]/,"number.binary"],[/\d[\d']*/,"number"],[/\d/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/`/,"string","@rawstring"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],rawstring:[[/[^\`]/,"string"],[/`/,"string","@pop"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8791.b209de42.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/8791.b209de42.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8791.b209de42.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/8794.5ad5fb7d.chunk.js b/ydb/core/viewer/monitoring/static/js/8794.5ad5fb7d.chunk.js deleted file mode 100644 index 674a35d3fcfb..000000000000 --- a/ydb/core/viewer/monitoring/static/js/8794.5ad5fb7d.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8794],{58794:function(e,t,n){n.r(t),n.d(t,{conf:function(){return m},language:function(){return i}});var a=n(37456),r=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],m={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["{{!--","--}}"]},brackets:[["\x3c!--","--\x3e"],["<",">"],["{{","}}"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:new RegExp("<(?!(?:"+r.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:a.Mj.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(?!(?:"+r.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:a.Mj.IndentAction.Indent}}]},i={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/\{\{!--/,"comment.block.start.handlebars","@commentBlock"],[/\{\{!/,"comment.start.handlebars","@comment"],[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.root"}],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@commentHtml"],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)(\w+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/\{/,"delimiter.html"],[/[^<{]+/]],doctype:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.comment"}],[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/\}\}/,"comment.end.handlebars","@pop"],[/./,"comment.content.handlebars"]],commentBlock:[[/--\}\}/,"comment.block.end.handlebars","@pop"],[/./,"comment.content.handlebars"]],commentHtml:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.comment"}],[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.script"}],[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptAfterType"}],[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInEmbeddedState.scriptEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],style:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.style"}],[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleAfterType"}],[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInEmbeddedState.styleEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],handlebarsInSimpleState:[[/\{\{\{?/,"delimiter.handlebars"],[/\}\}\}?/,{token:"delimiter.handlebars",switchTo:"@$S2.$S3"}],{include:"handlebarsRoot"}],handlebarsInEmbeddedState:[[/\{\{\{?/,"delimiter.handlebars"],[/\}\}\}?/,{token:"delimiter.handlebars",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}],{include:"handlebarsRoot"}],handlebarsRoot:[[/"[^"]*"/,"string.handlebars"],[/[#/][^\s}]+/,"keyword.helper.handlebars"],[/else\b/,"keyword.helper.handlebars"],[/[\s]+/],[/[^}]/,"variable.parameter.handlebars"]]}}}}]); -//# sourceMappingURL=8794.5ad5fb7d.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8797.f8f0ce13.chunk.js b/ydb/core/viewer/monitoring/static/js/8797.f8f0ce13.chunk.js new file mode 100644 index 000000000000..31da3559f005 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8797.f8f0ce13.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 8797.f8f0ce13.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8797],{98797:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>i,language:()=>o});var i={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"}],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string"]}],autoCloseBefore:".,=}])>' \n\t",indentationRules:{increaseIndentPattern:new RegExp("^((?!\\/\\/).)*(\\{[^}\"'`]*|\\([^)\"'`]*|\\[[^\\]\"'`]*)$"),decreaseIndentPattern:new RegExp("^((?!.*?\\/\\*).*\\*/)?\\s*[\\}\\]].*$")}},o={defaultToken:"",tokenPostfix:".proto",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],symbols:/[=><!~?:&|+\-*/^%]+/,keywords:["syntax","import","weak","public","package","option","repeated","oneof","map","reserved","to","max","enum","message","service","rpc","stream","returns","package","optional","true","false"],builtinTypes:["double","float","int32","int64","uint32","uint64","sint32","sint64","fixed32","fixed64","sfixed32","sfixed64","bool","string","bytes"],operators:["=","+","-"],namedLiterals:["true","false"],escapes:"\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\|'|\\${)",identifier:/[a-zA-Z]\w*/,fullIdentifier:/@identifier(?:\s*\.\s*@identifier)*/,optionName:/(?:@identifier|\(\s*@fullIdentifier\s*\))(?:\s*\.\s*@identifier)*/,messageName:/@identifier/,enumName:/@identifier/,messageType:/\.?\s*(?:@identifier\s*\.\s*)*@messageName/,enumType:/\.?\s*(?:@identifier\s*\.\s*)*@enumName/,floatLit:/[0-9]+\s*\.\s*[0-9]*(?:@exponent)?|[0-9]+@exponent|\.[0-9]+(?:@exponent)?/,exponent:/[eE]\s*[+-]?\s*[0-9]+/,boolLit:/true\b|false\b/,decimalLit:/[1-9][0-9]*/,octalLit:/0[0-7]*/,hexLit:/0[xX][0-9a-fA-F]+/,type:/double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes|@messageType|@enumType/,keyType:/int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string/,tokenizer:{root:[{include:"@whitespace"},[/syntax/,"keyword"],[/=/,"operators"],[/;/,"delimiter"],[/(")(proto3)(")/,["string.quote","string",{token:"string.quote",switchTo:"@topLevel.proto3"}]],[/(")(proto2)(")/,["string.quote","string",{token:"string.quote",switchTo:"@topLevel.proto2"}]],[/.*?/,{token:"",switchTo:"@topLevel.proto2"}]],topLevel:[{include:"@whitespace"},{include:"@constant"},[/=/,"operators"],[/[;.]/,"delimiter"],[/@fullIdentifier/,{cases:{option:{token:"keyword",next:"@option.$S2"},enum:{token:"keyword",next:"@enumDecl.$S2"},message:{token:"keyword",next:"@messageDecl.$S2"},service:{token:"keyword",next:"@serviceDecl.$S2"},extend:{cases:{"$S2==proto2":{token:"keyword",next:"@extendDecl.$S2"}}},"@keywords":"keyword","@default":"identifier"}}]],enumDecl:[{include:"@whitespace"},[/@identifier/,"type.identifier"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@enumBody.$S2"}]],enumBody:[{include:"@whitespace"},{include:"@constant"},[/=/,"operators"],[/;/,"delimiter"],[/option\b/,"keyword","@option.$S2"],[/@identifier/,"identifier"],[/\[/,{token:"@brackets",bracket:"@open",next:"@options.$S2"}],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],messageDecl:[{include:"@whitespace"},[/@identifier/,"type.identifier"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@messageBody.$S2"}]],messageBody:[{include:"@whitespace"},{include:"@constant"},[/=/,"operators"],[/;/,"delimiter"],["(map)(s*)(<)",["keyword","white",{token:"@brackets",bracket:"@open",next:"@map.$S2"}]],[/@identifier/,{cases:{option:{token:"keyword",next:"@option.$S2"},enum:{token:"keyword",next:"@enumDecl.$S2"},message:{token:"keyword",next:"@messageDecl.$S2"},oneof:{token:"keyword",next:"@oneofDecl.$S2"},extensions:{cases:{"$S2==proto2":{token:"keyword",next:"@reserved.$S2"}}},reserved:{token:"keyword",next:"@reserved.$S2"},"(?:repeated|optional)":{token:"keyword",next:"@field.$S2"},required:{cases:{"$S2==proto2":{token:"keyword",next:"@field.$S2"}}},"$S2==proto3":{token:"@rematch",next:"@field.$S2"}}}],[/\[/,{token:"@brackets",bracket:"@open",next:"@options.$S2"}],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],extendDecl:[{include:"@whitespace"},[/@identifier/,"type.identifier"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@extendBody.$S2"}]],extendBody:[{include:"@whitespace"},{include:"@constant"},[/;/,"delimiter"],[/(?:repeated|optional|required)/,"keyword","@field.$S2"],[/\[/,{token:"@brackets",bracket:"@open",next:"@options.$S2"}],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],options:[{include:"@whitespace"},{include:"@constant"},[/;/,"delimiter"],[/@optionName/,"annotation"],[/[()]/,"annotation.brackets"],[/=/,"operator"],[/\]/,{token:"@brackets",bracket:"@close",next:"@pop"}]],option:[{include:"@whitespace"},[/@optionName/,"annotation"],[/[()]/,"annotation.brackets"],[/=/,"operator","@pop"]],oneofDecl:[{include:"@whitespace"},[/@identifier/,"identifier"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@oneofBody.$S2"}]],oneofBody:[{include:"@whitespace"},{include:"@constant"},[/;/,"delimiter"],[/(@identifier)(\s*)(=)/,["identifier","white","delimiter"]],[/@fullIdentifier|\./,{cases:{"@builtinTypes":"keyword","@default":"type.identifier"}}],[/\[/,{token:"@brackets",bracket:"@open",next:"@options.$S2"}],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],reserved:[{include:"@whitespace"},[/,/,"delimiter"],[/;/,"delimiter","@pop"],{include:"@constant"},[/to\b|max\b/,"keyword"]],map:[{include:"@whitespace"},[/@fullIdentifier|\./,{cases:{"@builtinTypes":"keyword","@default":"type.identifier"}}],[/,/,"delimiter"],[/>/,{token:"@brackets",bracket:"@close",switchTo:"identifier"}]],field:[{include:"@whitespace"},["group",{cases:{"$S2==proto2":{token:"keyword",switchTo:"@groupDecl.$S2"}}}],[/(@identifier)(\s*)(=)/,["identifier","white",{token:"delimiter",next:"@pop"}]],[/@fullIdentifier|\./,{cases:{"@builtinTypes":"keyword","@default":"type.identifier"}}]],groupDecl:[{include:"@whitespace"},[/@identifier/,"identifier"],["=","operator"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@messageBody.$S2"}],{include:"@constant"}],type:[{include:"@whitespace"},[/@identifier/,"type.identifier","@pop"],[/./,"delimiter"]],identifier:[{include:"@whitespace"},[/@identifier/,"identifier","@pop"]],serviceDecl:[{include:"@whitespace"},[/@identifier/,"identifier"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@serviceBody.$S2"}]],serviceBody:[{include:"@whitespace"},{include:"@constant"},[/;/,"delimiter"],[/option\b/,"keyword","@option.$S2"],[/rpc\b/,"keyword","@rpc.$S2"],[/\[/,{token:"@brackets",bracket:"@open",next:"@options.$S2"}],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],rpc:[{include:"@whitespace"},[/@identifier/,"identifier"],[/\(/,{token:"@brackets",bracket:"@open",switchTo:"@request.$S2"}],[/{/,{token:"@brackets",bracket:"@open",next:"@methodOptions.$S2"}],[/;/,"delimiter","@pop"]],request:[{include:"@whitespace"},[/@messageType/,{cases:{stream:{token:"keyword",next:"@type.$S2"},"@default":"type.identifier"}}],[/\)/,{token:"@brackets",bracket:"@close",switchTo:"@returns.$S2"}]],returns:[{include:"@whitespace"},[/returns\b/,"keyword"],[/\(/,{token:"@brackets",bracket:"@open",switchTo:"@response.$S2"}]],response:[{include:"@whitespace"},[/@messageType/,{cases:{stream:{token:"keyword",next:"@type.$S2"},"@default":"type.identifier"}}],[/\)/,{token:"@brackets",bracket:"@close",switchTo:"@rpc.$S2"}]],methodOptions:[{include:"@whitespace"},{include:"@constant"},[/;/,"delimiter"],["option","keyword"],[/@optionName/,"annotation"],[/[()]/,"annotation.brackets"],[/=/,"operator"],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],stringSingle:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],constant:[["@boolLit","keyword.constant"],["@hexLit","number.hex"],["@octalLit","number.octal"],["@decimalLit","number"],["@floatLit","number.float"],[/("([^"\\]|\\.)*|'([^'\\]|\\.)*)$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],[/'/,{token:"string.quote",bracket:"@open",next:"@stringSingle"}],[/{/,{token:"@brackets",bracket:"@open",next:"@prototext"}],[/identifier/,"identifier"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],prototext:[{include:"@whitespace"},{include:"@constant"},[/@identifier/,"identifier"],[/[:;]/,"delimiter"],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8797.f8f0ce13.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/8797.f8f0ce13.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8797.f8f0ce13.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/8850.97635389.chunk.js b/ydb/core/viewer/monitoring/static/js/8850.97635389.chunk.js new file mode 100644 index 000000000000..619cac8e3024 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8850.97635389.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8850],{98850:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),u={name:"en-au",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return a.default.locale(u,null,!0),u}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8853.c8f9e9d6.chunk.js b/ydb/core/viewer/monitoring/static/js/8853.c8f9e9d6.chunk.js new file mode 100644 index 000000000000..6be8840f2919 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8853.c8f9e9d6.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8853],{8853:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"uz",weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),weekStart:1,weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"%s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8858.cd9d49a5.chunk.js b/ydb/core/viewer/monitoring/static/js/8858.cd9d49a5.chunk.js new file mode 100644 index 000000000000..da94c3eb4a11 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8858.cd9d49a5.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8858],{48858:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-kw",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8905.b8a9fd91.chunk.js b/ydb/core/viewer/monitoring/static/js/8905.b8a9fd91.chunk.js new file mode 100644 index 000000000000..4ad82ee5d44c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8905.b8a9fd91.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 8905.b8a9fd91.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[8905],{98905:(e,t,p)=>{p.r(t),p.d(t,{conf:()=>n,language:()=>i});var n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string"]},{open:"[",close:"]",notIn:["string"]},{open:"(",close:")",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],folding:{markers:{start:new RegExp("^\\s*(#|//)region\\b"),end:new RegExp("^\\s*(#|//)endregion\\b")}}},i={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.root"}],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@comment"],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)(\w+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/[^<]+/]],doctype:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.comment"}],[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.comment"}],[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.script"}],[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.scriptAfterType"}],[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.scriptAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.scriptWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInEmbeddedState.scriptEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],style:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.style"}],[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.styleAfterType"}],[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.styleAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.styleWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInEmbeddedState.styleEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],phpInSimpleState:[[/<\?((php)|=)?/,"metatag.php"],[/\?>/,{token:"metatag.php",switchTo:"@$S2.$S3"}],{include:"phpRoot"}],phpInEmbeddedState:[[/<\?((php)|=)?/,"metatag.php"],[/\?>/,{token:"metatag.php",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}],{include:"phpRoot"}],phpRoot:[[/[a-zA-Z_]\w*/,{cases:{"@phpKeywords":{token:"keyword.php"},"@phpCompileTimeConstants":{token:"constant.php"},"@default":"identifier.php"}}],[/[$a-zA-Z_]\w*/,{cases:{"@phpPreDefinedVariables":{token:"variable.predefined.php"},"@default":"variable.php"}}],[/[{}]/,"delimiter.bracket.php"],[/[\[\]]/,"delimiter.array.php"],[/[()]/,"delimiter.parenthesis.php"],[/[ \t\r\n]+/],[/(#|\/\/)$/,"comment.php"],[/(#|\/\/)/,"comment.php","@phpLineComment"],[/\/\*/,"comment.php","@phpComment"],[/"/,"string.php","@phpDoubleQuoteString"],[/'/,"string.php","@phpSingleQuoteString"],[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,\@]/,"delimiter.php"],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float.php"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float.php"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex.php"],[/0[0-7']*[0-7]/,"number.octal.php"],[/0[bB][0-1']*[0-1]/,"number.binary.php"],[/\d[\d']*/,"number.php"],[/\d/,"number.php"]],phpComment:[[/\*\//,"comment.php","@pop"],[/[^*]+/,"comment.php"],[/./,"comment.php"]],phpLineComment:[[/\?>/,{token:"@rematch",next:"@pop"}],[/.$/,"comment.php","@pop"],[/[^?]+$/,"comment.php","@pop"],[/[^?]+/,"comment.php"],[/./,"comment.php"]],phpDoubleQuoteString:[[/[^\\"]+/,"string.php"],[/@escapes/,"string.escape.php"],[/\\./,"string.escape.invalid.php"],[/"/,"string.php","@pop"]],phpSingleQuoteString:[[/[^\\']+/,"string.php"],[/@escapes/,"string.escape.php"],[/\\./,"string.escape.invalid.php"],[/'/,"string.php","@pop"]]},phpKeywords:["abstract","and","array","as","break","callable","case","catch","cfunction","class","clone","const","continue","declare","default","do","else","elseif","enddeclare","endfor","endforeach","endif","endswitch","endwhile","extends","false","final","for","foreach","function","global","goto","if","implements","interface","instanceof","insteadof","namespace","new","null","object","old_function","or","private","protected","public","resource","static","switch","throw","trait","try","true","use","var","while","xor","die","echo","empty","exit","eval","include","include_once","isset","list","require","require_once","return","print","unset","yield","__construct"],phpCompileTimeConstants:["__CLASS__","__DIR__","__FILE__","__LINE__","__NAMESPACE__","__METHOD__","__FUNCTION__","__TRAIT__"],phpPreDefinedVariables:["$GLOBALS","$_SERVER","$_GET","$_POST","$_FILES","$_REQUEST","$_SESSION","$_ENV","$_COOKIE","$php_errormsg","$HTTP_RAW_POST_DATA","$http_response_header","$argc","$argv"],escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/8905.b8a9fd91.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/8905.b8a9fd91.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/8905.b8a9fd91.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/9005.053ddf1a.chunk.js b/ydb/core/viewer/monitoring/static/js/9005.053ddf1a.chunk.js deleted file mode 100644 index 62dfb54698a8..000000000000 --- a/ydb/core/viewer/monitoring/static/js/9005.053ddf1a.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9005],{29005:function(e,n,o){o.r(n),o.d(n,{conf:function(){return t},language:function(){return s}});var t={comments:{lineComment:";",blockComment:["#|","|#"]},brackets:[["(",")"],["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},s={defaultToken:"",ignoreCase:!0,tokenPostfix:".scheme",brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],keywords:["case","do","let","loop","if","else","when","cons","car","cdr","cond","lambda","lambda*","syntax-rules","format","set!","quote","eval","append","list","list?","member?","load"],constants:["#t","#f"],operators:["eq?","eqv?","equal?","and","or","not","null?"],tokenizer:{root:[[/#[xXoObB][0-9a-fA-F]+/,"number.hex"],[/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/,"number.float"],[/(?:\b(?:(define|define-syntax|define-macro))\b)(\s+)((?:\w|\-|\!|\?)*)/,["keyword","white","variable"]],{include:"@whitespace"},{include:"@strings"},[/[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,{cases:{"@keywords":"keyword","@constants":"constant","@operators":"operators","@default":"identifier"}}]],comment:[[/[^\|#]+/,"comment"],[/#\|/,"comment","@push"],[/\|#/,"comment","@pop"],[/[\|#]/,"comment"]],whitespace:[[/[ \t\r\n]+/,"white"],[/#\|/,"comment","@comment"],[/;.*$/,"comment"]],strings:[[/"$/,"string","@popall"],[/"(?=.)/,"string","@multiLineString"]],multiLineString:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string.escape"],[/"/,"string","@popall"],[/\\$/,"string"]]}}}}]); -//# sourceMappingURL=9005.053ddf1a.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9011.f3cf1dfe.chunk.js b/ydb/core/viewer/monitoring/static/js/9011.f3cf1dfe.chunk.js deleted file mode 100644 index a07d92565b40..000000000000 --- a/ydb/core/viewer/monitoring/static/js/9011.f3cf1dfe.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9011],{69011:function(e,t,a){a.r(t),a.d(t,{conf:function(){return n},language:function(){return i}});var n={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["[","]"],["(",")"],["{","}"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment","identifier"]},{open:"[",close:"]",notIn:["string","comment","identifier"]},{open:"(",close:")",notIn:["string","comment","identifier"]},{open:"{",close:"}",notIn:["string","comment","identifier"]}]},i={defaultToken:"",tokenPostfix:".pq",ignoreCase:!1,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"{",close:"}",token:"delimiter.brackets"},{open:"(",close:")",token:"delimiter.parenthesis"}],operatorKeywords:["and","not","or"],keywords:["as","each","else","error","false","if","in","is","let","meta","otherwise","section","shared","then","true","try","type"],constructors:["#binary","#date","#datetime","#datetimezone","#duration","#table","#time"],constants:["#infinity","#nan","#sections","#shared"],typeKeywords:["action","any","anynonnull","none","null","logical","number","time","date","datetime","datetimezone","duration","text","binary","list","record","table","function"],builtinFunctions:["Access.Database","Action.Return","Action.Sequence","Action.Try","ActiveDirectory.Domains","AdoDotNet.DataSource","AdoDotNet.Query","AdobeAnalytics.Cubes","AnalysisServices.Database","AnalysisServices.Databases","AzureStorage.BlobContents","AzureStorage.Blobs","AzureStorage.Tables","Binary.Buffer","Binary.Combine","Binary.Compress","Binary.Decompress","Binary.End","Binary.From","Binary.FromList","Binary.FromText","Binary.InferContentType","Binary.Length","Binary.ToList","Binary.ToText","BinaryFormat.7BitEncodedSignedInteger","BinaryFormat.7BitEncodedUnsignedInteger","BinaryFormat.Binary","BinaryFormat.Byte","BinaryFormat.ByteOrder","BinaryFormat.Choice","BinaryFormat.Decimal","BinaryFormat.Double","BinaryFormat.Group","BinaryFormat.Length","BinaryFormat.List","BinaryFormat.Null","BinaryFormat.Record","BinaryFormat.SignedInteger16","BinaryFormat.SignedInteger32","BinaryFormat.SignedInteger64","BinaryFormat.Single","BinaryFormat.Text","BinaryFormat.Transform","BinaryFormat.UnsignedInteger16","BinaryFormat.UnsignedInteger32","BinaryFormat.UnsignedInteger64","Byte.From","Character.FromNumber","Character.ToNumber","Combiner.CombineTextByDelimiter","Combiner.CombineTextByEachDelimiter","Combiner.CombineTextByLengths","Combiner.CombineTextByPositions","Combiner.CombineTextByRanges","Comparer.Equals","Comparer.FromCulture","Comparer.Ordinal","Comparer.OrdinalIgnoreCase","Csv.Document","Cube.AddAndExpandDimensionColumn","Cube.AddMeasureColumn","Cube.ApplyParameter","Cube.AttributeMemberId","Cube.AttributeMemberProperty","Cube.CollapseAndRemoveColumns","Cube.Dimensions","Cube.DisplayFolders","Cube.Measures","Cube.Parameters","Cube.Properties","Cube.PropertyKey","Cube.ReplaceDimensions","Cube.Transform","Currency.From","DB2.Database","Date.AddDays","Date.AddMonths","Date.AddQuarters","Date.AddWeeks","Date.AddYears","Date.Day","Date.DayOfWeek","Date.DayOfWeekName","Date.DayOfYear","Date.DaysInMonth","Date.EndOfDay","Date.EndOfMonth","Date.EndOfQuarter","Date.EndOfWeek","Date.EndOfYear","Date.From","Date.FromText","Date.IsInCurrentDay","Date.IsInCurrentMonth","Date.IsInCurrentQuarter","Date.IsInCurrentWeek","Date.IsInCurrentYear","Date.IsInNextDay","Date.IsInNextMonth","Date.IsInNextNDays","Date.IsInNextNMonths","Date.IsInNextNQuarters","Date.IsInNextNWeeks","Date.IsInNextNYears","Date.IsInNextQuarter","Date.IsInNextWeek","Date.IsInNextYear","Date.IsInPreviousDay","Date.IsInPreviousMonth","Date.IsInPreviousNDays","Date.IsInPreviousNMonths","Date.IsInPreviousNQuarters","Date.IsInPreviousNWeeks","Date.IsInPreviousNYears","Date.IsInPreviousQuarter","Date.IsInPreviousWeek","Date.IsInPreviousYear","Date.IsInYearToDate","Date.IsLeapYear","Date.Month","Date.MonthName","Date.QuarterOfYear","Date.StartOfDay","Date.StartOfMonth","Date.StartOfQuarter","Date.StartOfWeek","Date.StartOfYear","Date.ToRecord","Date.ToText","Date.WeekOfMonth","Date.WeekOfYear","Date.Year","DateTime.AddZone","DateTime.Date","DateTime.FixedLocalNow","DateTime.From","DateTime.FromFileTime","DateTime.FromText","DateTime.IsInCurrentHour","DateTime.IsInCurrentMinute","DateTime.IsInCurrentSecond","DateTime.IsInNextHour","DateTime.IsInNextMinute","DateTime.IsInNextNHours","DateTime.IsInNextNMinutes","DateTime.IsInNextNSeconds","DateTime.IsInNextSecond","DateTime.IsInPreviousHour","DateTime.IsInPreviousMinute","DateTime.IsInPreviousNHours","DateTime.IsInPreviousNMinutes","DateTime.IsInPreviousNSeconds","DateTime.IsInPreviousSecond","DateTime.LocalNow","DateTime.Time","DateTime.ToRecord","DateTime.ToText","DateTimeZone.FixedLocalNow","DateTimeZone.FixedUtcNow","DateTimeZone.From","DateTimeZone.FromFileTime","DateTimeZone.FromText","DateTimeZone.LocalNow","DateTimeZone.RemoveZone","DateTimeZone.SwitchZone","DateTimeZone.ToLocal","DateTimeZone.ToRecord","DateTimeZone.ToText","DateTimeZone.ToUtc","DateTimeZone.UtcNow","DateTimeZone.ZoneHours","DateTimeZone.ZoneMinutes","Decimal.From","Diagnostics.ActivityId","Diagnostics.Trace","DirectQueryCapabilities.From","Double.From","Duration.Days","Duration.From","Duration.FromText","Duration.Hours","Duration.Minutes","Duration.Seconds","Duration.ToRecord","Duration.ToText","Duration.TotalDays","Duration.TotalHours","Duration.TotalMinutes","Duration.TotalSeconds","Embedded.Value","Error.Record","Excel.CurrentWorkbook","Excel.Workbook","Exchange.Contents","Expression.Constant","Expression.Evaluate","Expression.Identifier","Facebook.Graph","File.Contents","Folder.Contents","Folder.Files","Function.From","Function.Invoke","Function.InvokeAfter","Function.IsDataSource","GoogleAnalytics.Accounts","Guid.From","HdInsight.Containers","HdInsight.Contents","HdInsight.Files","Hdfs.Contents","Hdfs.Files","Informix.Database","Int16.From","Int32.From","Int64.From","Int8.From","ItemExpression.From","Json.Document","Json.FromValue","Lines.FromBinary","Lines.FromText","Lines.ToBinary","Lines.ToText","List.Accumulate","List.AllTrue","List.Alternate","List.AnyTrue","List.Average","List.Buffer","List.Combine","List.Contains","List.ContainsAll","List.ContainsAny","List.Count","List.Covariance","List.DateTimeZones","List.DateTimes","List.Dates","List.Difference","List.Distinct","List.Durations","List.FindText","List.First","List.FirstN","List.Generate","List.InsertRange","List.Intersect","List.IsDistinct","List.IsEmpty","List.Last","List.LastN","List.MatchesAll","List.MatchesAny","List.Max","List.MaxN","List.Median","List.Min","List.MinN","List.Mode","List.Modes","List.NonNullCount","List.Numbers","List.PositionOf","List.PositionOfAny","List.Positions","List.Product","List.Random","List.Range","List.RemoveFirstN","List.RemoveItems","List.RemoveLastN","List.RemoveMatchingItems","List.RemoveNulls","List.RemoveRange","List.Repeat","List.ReplaceMatchingItems","List.ReplaceRange","List.ReplaceValue","List.Reverse","List.Select","List.Single","List.SingleOrDefault","List.Skip","List.Sort","List.StandardDeviation","List.Sum","List.Times","List.Transform","List.TransformMany","List.Union","List.Zip","Logical.From","Logical.FromText","Logical.ToText","MQ.Queue","MySQL.Database","Number.Abs","Number.Acos","Number.Asin","Number.Atan","Number.Atan2","Number.BitwiseAnd","Number.BitwiseNot","Number.BitwiseOr","Number.BitwiseShiftLeft","Number.BitwiseShiftRight","Number.BitwiseXor","Number.Combinations","Number.Cos","Number.Cosh","Number.Exp","Number.Factorial","Number.From","Number.FromText","Number.IntegerDivide","Number.IsEven","Number.IsNaN","Number.IsOdd","Number.Ln","Number.Log","Number.Log10","Number.Mod","Number.Permutations","Number.Power","Number.Random","Number.RandomBetween","Number.Round","Number.RoundAwayFromZero","Number.RoundDown","Number.RoundTowardZero","Number.RoundUp","Number.Sign","Number.Sin","Number.Sinh","Number.Sqrt","Number.Tan","Number.Tanh","Number.ToText","OData.Feed","Odbc.DataSource","Odbc.Query","OleDb.DataSource","OleDb.Query","Oracle.Database","Percentage.From","PostgreSQL.Database","RData.FromBinary","Record.AddField","Record.Combine","Record.Field","Record.FieldCount","Record.FieldNames","Record.FieldOrDefault","Record.FieldValues","Record.FromList","Record.FromTable","Record.HasFields","Record.RemoveFields","Record.RenameFields","Record.ReorderFields","Record.SelectFields","Record.ToList","Record.ToTable","Record.TransformFields","Replacer.ReplaceText","Replacer.ReplaceValue","RowExpression.Column","RowExpression.From","Salesforce.Data","Salesforce.Reports","SapBusinessWarehouse.Cubes","SapHana.Database","SharePoint.Contents","SharePoint.Files","SharePoint.Tables","Single.From","Soda.Feed","Splitter.SplitByNothing","Splitter.SplitTextByAnyDelimiter","Splitter.SplitTextByDelimiter","Splitter.SplitTextByEachDelimiter","Splitter.SplitTextByLengths","Splitter.SplitTextByPositions","Splitter.SplitTextByRanges","Splitter.SplitTextByRepeatedLengths","Splitter.SplitTextByWhitespace","Sql.Database","Sql.Databases","SqlExpression.SchemaFrom","SqlExpression.ToExpression","Sybase.Database","Table.AddColumn","Table.AddIndexColumn","Table.AddJoinColumn","Table.AddKey","Table.AggregateTableColumn","Table.AlternateRows","Table.Buffer","Table.Column","Table.ColumnCount","Table.ColumnNames","Table.ColumnsOfType","Table.Combine","Table.CombineColumns","Table.Contains","Table.ContainsAll","Table.ContainsAny","Table.DemoteHeaders","Table.Distinct","Table.DuplicateColumn","Table.ExpandListColumn","Table.ExpandRecordColumn","Table.ExpandTableColumn","Table.FillDown","Table.FillUp","Table.FilterWithDataTable","Table.FindText","Table.First","Table.FirstN","Table.FirstValue","Table.FromColumns","Table.FromList","Table.FromPartitions","Table.FromRecords","Table.FromRows","Table.FromValue","Table.Group","Table.HasColumns","Table.InsertRows","Table.IsDistinct","Table.IsEmpty","Table.Join","Table.Keys","Table.Last","Table.LastN","Table.MatchesAllRows","Table.MatchesAnyRows","Table.Max","Table.MaxN","Table.Min","Table.MinN","Table.NestedJoin","Table.Partition","Table.PartitionValues","Table.Pivot","Table.PositionOf","Table.PositionOfAny","Table.PrefixColumns","Table.Profile","Table.PromoteHeaders","Table.Range","Table.RemoveColumns","Table.RemoveFirstN","Table.RemoveLastN","Table.RemoveMatchingRows","Table.RemoveRows","Table.RemoveRowsWithErrors","Table.RenameColumns","Table.ReorderColumns","Table.Repeat","Table.ReplaceErrorValues","Table.ReplaceKeys","Table.ReplaceMatchingRows","Table.ReplaceRelationshipIdentity","Table.ReplaceRows","Table.ReplaceValue","Table.ReverseRows","Table.RowCount","Table.Schema","Table.SelectColumns","Table.SelectRows","Table.SelectRowsWithErrors","Table.SingleRow","Table.Skip","Table.Sort","Table.SplitColumn","Table.ToColumns","Table.ToList","Table.ToRecords","Table.ToRows","Table.TransformColumnNames","Table.TransformColumnTypes","Table.TransformColumns","Table.TransformRows","Table.Transpose","Table.Unpivot","Table.UnpivotOtherColumns","Table.View","Table.ViewFunction","TableAction.DeleteRows","TableAction.InsertRows","TableAction.UpdateRows","Tables.GetRelationships","Teradata.Database","Text.AfterDelimiter","Text.At","Text.BeforeDelimiter","Text.BetweenDelimiters","Text.Clean","Text.Combine","Text.Contains","Text.End","Text.EndsWith","Text.Format","Text.From","Text.FromBinary","Text.Insert","Text.Length","Text.Lower","Text.Middle","Text.NewGuid","Text.PadEnd","Text.PadStart","Text.PositionOf","Text.PositionOfAny","Text.Proper","Text.Range","Text.Remove","Text.RemoveRange","Text.Repeat","Text.Replace","Text.ReplaceRange","Text.Select","Text.Split","Text.SplitAny","Text.Start","Text.StartsWith","Text.ToBinary","Text.ToList","Text.Trim","Text.TrimEnd","Text.TrimStart","Text.Upper","Time.EndOfHour","Time.From","Time.FromText","Time.Hour","Time.Minute","Time.Second","Time.StartOfHour","Time.ToRecord","Time.ToText","Type.AddTableKey","Type.ClosedRecord","Type.Facets","Type.ForFunction","Type.ForRecord","Type.FunctionParameters","Type.FunctionRequiredParameters","Type.FunctionReturn","Type.Is","Type.IsNullable","Type.IsOpenRecord","Type.ListItem","Type.NonNullable","Type.OpenRecord","Type.RecordFields","Type.ReplaceFacets","Type.ReplaceTableKeys","Type.TableColumn","Type.TableKeys","Type.TableRow","Type.TableSchema","Type.Union","Uri.BuildQueryString","Uri.Combine","Uri.EscapeDataString","Uri.Parts","Value.Add","Value.As","Value.Compare","Value.Divide","Value.Equals","Value.Firewall","Value.FromText","Value.Is","Value.Metadata","Value.Multiply","Value.NativeQuery","Value.NullableEquals","Value.RemoveMetadata","Value.ReplaceMetadata","Value.ReplaceType","Value.Subtract","Value.Type","ValueAction.NativeStatement","ValueAction.Replace","Variable.Value","Web.Contents","Web.Page","WebAction.Request","Xml.Document","Xml.Tables"],builtinConstants:["BinaryEncoding.Base64","BinaryEncoding.Hex","BinaryOccurrence.Optional","BinaryOccurrence.Repeating","BinaryOccurrence.Required","ByteOrder.BigEndian","ByteOrder.LittleEndian","Compression.Deflate","Compression.GZip","CsvStyle.QuoteAfterDelimiter","CsvStyle.QuoteAlways","Culture.Current","Day.Friday","Day.Monday","Day.Saturday","Day.Sunday","Day.Thursday","Day.Tuesday","Day.Wednesday","ExtraValues.Error","ExtraValues.Ignore","ExtraValues.List","GroupKind.Global","GroupKind.Local","JoinAlgorithm.Dynamic","JoinAlgorithm.LeftHash","JoinAlgorithm.LeftIndex","JoinAlgorithm.PairwiseHash","JoinAlgorithm.RightHash","JoinAlgorithm.RightIndex","JoinAlgorithm.SortMerge","JoinKind.FullOuter","JoinKind.Inner","JoinKind.LeftAnti","JoinKind.LeftOuter","JoinKind.RightAnti","JoinKind.RightOuter","JoinSide.Left","JoinSide.Right","MissingField.Error","MissingField.Ignore","MissingField.UseNull","Number.E","Number.Epsilon","Number.NaN","Number.NegativeInfinity","Number.PI","Number.PositiveInfinity","Occurrence.All","Occurrence.First","Occurrence.Last","Occurrence.Optional","Occurrence.Repeating","Occurrence.Required","Order.Ascending","Order.Descending","Precision.Decimal","Precision.Double","QuoteStyle.Csv","QuoteStyle.None","RelativePosition.FromEnd","RelativePosition.FromStart","RoundingMode.AwayFromZero","RoundingMode.Down","RoundingMode.ToEven","RoundingMode.TowardZero","RoundingMode.Up","SapHanaDistribution.All","SapHanaDistribution.Connection","SapHanaDistribution.Off","SapHanaDistribution.Statement","SapHanaRangeOperator.Equals","SapHanaRangeOperator.GreaterThan","SapHanaRangeOperator.GreaterThanOrEquals","SapHanaRangeOperator.LessThan","SapHanaRangeOperator.LessThanOrEquals","SapHanaRangeOperator.NotEquals","TextEncoding.Ascii","TextEncoding.BigEndianUnicode","TextEncoding.Unicode","TextEncoding.Utf16","TextEncoding.Utf8","TextEncoding.Windows","TraceLevel.Critical","TraceLevel.Error","TraceLevel.Information","TraceLevel.Verbose","TraceLevel.Warning","WebMethod.Delete","WebMethod.Get","WebMethod.Head","WebMethod.Patch","WebMethod.Post","WebMethod.Put"],builtinTypes:["Action.Type","Any.Type","Binary.Type","BinaryEncoding.Type","BinaryOccurrence.Type","Byte.Type","ByteOrder.Type","Character.Type","Compression.Type","CsvStyle.Type","Currency.Type","Date.Type","DateTime.Type","DateTimeZone.Type","Day.Type","Decimal.Type","Double.Type","Duration.Type","ExtraValues.Type","Function.Type","GroupKind.Type","Guid.Type","Int16.Type","Int32.Type","Int64.Type","Int8.Type","JoinAlgorithm.Type","JoinKind.Type","JoinSide.Type","List.Type","Logical.Type","MissingField.Type","None.Type","Null.Type","Number.Type","Occurrence.Type","Order.Type","Password.Type","Percentage.Type","Precision.Type","QuoteStyle.Type","Record.Type","RelativePosition.Type","RoundingMode.Type","SapHanaDistribution.Type","SapHanaRangeOperator.Type","Single.Type","Table.Type","Text.Type","TextEncoding.Type","Time.Type","TraceLevel.Type","Type.Type","Uri.Type","WebMethod.Type"],tokenizer:{root:[[/#"[\w \.]+"/,"identifier.quote"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/\d+([eE][\-+]?\d+)?/,"number"],[/(#?[a-z]+)\b/,{cases:{"@typeKeywords":"type","@keywords":"keyword","@constants":"constant","@constructors":"constructor","@operatorKeywords":"operators","@default":"identifier"}}],[/\b([A-Z][a-zA-Z0-9]+\.Type)\b/,{cases:{"@builtinTypes":"type","@default":"identifier"}}],[/\b([A-Z][a-zA-Z0-9]+\.[A-Z][a-zA-Z0-9]+)\b/,{cases:{"@builtinFunctions":"keyword.function","@builtinConstants":"constant","@default":"identifier"}}],[/\b([a-zA-Z_][\w\.]*)\b/,"identifier"],{include:"@whitespace"},{include:"@comments"},{include:"@strings"},[/[{}()\[\]]/,"@brackets"],[/([=\+<>\-\*&@\?\/!])|([<>]=)|(<>)|(=>)|(\.\.\.)|(\.\.)/,"operators"],[/[,;]/,"delimiter"]],whitespace:[[/\s+/,"white"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],strings:[['"',"string","@string"]],string:[['""',"string.escape"],['"',"string","@pop"],[".","string"]]}}}}]); -//# sourceMappingURL=9011.f3cf1dfe.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9101.ce051539.chunk.js b/ydb/core/viewer/monitoring/static/js/9101.ce051539.chunk.js new file mode 100644 index 000000000000..6b3b0d24b4b9 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9101.ce051539.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9101],{79101:function(_,d,t){_.exports=function(_){"use strict";function d(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=d(_),r={name:"x-pseudo",weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),weekStart:1,weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"}};return t.default.locale(r,null,!0),r}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9163.de992e19.chunk.js b/ydb/core/viewer/monitoring/static/js/9163.de992e19.chunk.js deleted file mode 100644 index 73805949f32c..000000000000 --- a/ydb/core/viewer/monitoring/static/js/9163.de992e19.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9163],{89163:function(e,n,t){t.r(n),t.d(n,{conf:function(){return r},language:function(){return i}});var o="\\b"+"[_a-zA-Z][_a-zA-Z0-9]*"+"\\b",r={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'"},{open:"'''",close:"'''"}],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:"'''",close:"'''",notIn:["string","comment"]}],autoCloseBefore:":.,=}])' \n\t",indentationRules:{increaseIndentPattern:new RegExp("^((?!\\/\\/).)*(\\{[^}\"'`]*|\\([^)\"'`]*|\\[[^\\]\"'`]*)$"),decreaseIndentPattern:new RegExp("^((?!.*?\\/\\*).*\\*/)?\\s*[\\}\\]].*$")}},i={defaultToken:"",tokenPostfix:".bicep",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],symbols:/[=><!~?:&|+\-*/^%]+/,keywords:["targetScope","resource","module","param","var","output","for","in","if","existing"],namedLiterals:["true","false","null"],escapes:"\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\|'|\\${)",tokenizer:{root:[{include:"@expression"},{include:"@whitespace"}],stringVerbatim:[{regex:"(|'|'')[^']",action:{token:"string"}},{regex:"'''",action:{token:"string.quote",next:"@pop"}}],stringLiteral:[{regex:"\\${",action:{token:"delimiter.bracket",next:"@bracketCounting"}},{regex:"[^\\\\'$]+",action:{token:"string"}},{regex:"@escapes",action:{token:"string.escape"}},{regex:"\\\\.",action:{token:"string.escape.invalid"}},{regex:"'",action:{token:"string",next:"@pop"}}],bracketCounting:[{regex:"{",action:{token:"delimiter.bracket",next:"@bracketCounting"}},{regex:"}",action:{token:"delimiter.bracket",next:"@pop"}},{include:"expression"}],comment:[{regex:"[^\\*]+",action:{token:"comment"}},{regex:"\\*\\/",action:{token:"comment",next:"@pop"}},{regex:"[\\/*]",action:{token:"comment"}}],whitespace:[{regex:"[ \\t\\r\\n]"},{regex:"\\/\\*",action:{token:"comment",next:"@comment"}},{regex:"\\/\\/.*$",action:{token:"comment"}}],expression:[{regex:"'''",action:{token:"string.quote",next:"@stringVerbatim"}},{regex:"'",action:{token:"string.quote",next:"@stringLiteral"}},{regex:"[0-9]+",action:{token:"number"}},{regex:o,action:{cases:{"@keywords":{token:"keyword"},"@namedLiterals":{token:"keyword"},"@default":{token:"identifier"}}}}]}}}}]); -//# sourceMappingURL=9163.de992e19.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9173.71d773f2.chunk.js b/ydb/core/viewer/monitoring/static/js/9173.71d773f2.chunk.js new file mode 100644 index 000000000000..e761067467e6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9173.71d773f2.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 9173.71d773f2.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9173],{39173:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>h,language:()=>b});var a,r,m=n(41551),l=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,d=Object.prototype.hasOwnProperty,s=(e,t,n,a)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let r of o(t))d.call(e,r)||r===n||l(e,r,{get:()=>t[r],enumerable:!(a=i(t,r))||a.enumerable});return e},c={};s(c,a=m,"default"),r&&s(r,a,"default");var p=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],h={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["{{!--","--}}"]},brackets:[["\x3c!--","--\x3e"],["<",">"],["{{","}}"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:new RegExp("<(?!(?:".concat(p.join("|"),"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$"),"i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:c.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(?!(?:".concat(p.join("|"),"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$"),"i"),action:{indentAction:c.languages.IndentAction.Indent}}]},b={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/\{\{!--/,"comment.block.start.handlebars","@commentBlock"],[/\{\{!/,"comment.start.handlebars","@comment"],[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.root"}],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@commentHtml"],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)(\w+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/\{/,"delimiter.html"],[/[^<{]+/]],doctype:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.comment"}],[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/\}\}/,"comment.end.handlebars","@pop"],[/./,"comment.content.handlebars"]],commentBlock:[[/--\}\}/,"comment.block.end.handlebars","@pop"],[/./,"comment.content.handlebars"]],commentHtml:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.comment"}],[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.script"}],[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptAfterType"}],[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInEmbeddedState.scriptEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],style:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.style"}],[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleAfterType"}],[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInEmbeddedState.styleEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],handlebarsInSimpleState:[[/\{\{\{?/,"delimiter.handlebars"],[/\}\}\}?/,{token:"delimiter.handlebars",switchTo:"@$S2.$S3"}],{include:"handlebarsRoot"}],handlebarsInEmbeddedState:[[/\{\{\{?/,"delimiter.handlebars"],[/\}\}\}?/,{token:"delimiter.handlebars",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}],{include:"handlebarsRoot"}],handlebarsRoot:[[/"[^"]*"/,"string.handlebars"],[/[#/][^\s}]+/,"keyword.helper.handlebars"],[/else\b/,"keyword.helper.handlebars"],[/[\s]+/],[/[^}]/,"variable.parameter.handlebars"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9173.71d773f2.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/9173.71d773f2.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9173.71d773f2.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/919.53e04507.chunk.js b/ydb/core/viewer/monitoring/static/js/919.53e04507.chunk.js new file mode 100644 index 000000000000..4a349ad1d412 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/919.53e04507.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 919.53e04507.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[919],{50919:(e,s,t)=>{t.r(s),t.d(s,{conf:()=>n,language:()=>i});var n={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"'",close:"'",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"}]},i={defaultToken:"",tokenPostfix:".rq",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["add","as","asc","ask","base","by","clear","construct","copy","create","data","delete","desc","describe","distinct","drop","false","filter","from","graph","group","having","in","insert","limit","load","minus","move","named","not","offset","optional","order","prefix","reduced","select","service","silent","to","true","undef","union","using","values","where","with"],builtinFunctions:["a","abs","avg","bind","bnode","bound","ceil","coalesce","concat","contains","count","datatype","day","encode_for_uri","exists","floor","group_concat","hours","if","iri","isblank","isiri","isliteral","isnumeric","isuri","lang","langmatches","lcase","max","md5","min","minutes","month","now","rand","regex","replace","round","sameterm","sample","seconds","sha1","sha256","sha384","sha512","str","strafter","strbefore","strdt","strends","strlang","strlen","strstarts","struuid","substr","sum","timezone","tz","ucase","uri","uuid","year"],ignoreCase:!0,tokenizer:{root:[[/<[^\s\u00a0>]*>?/,"tag"],{include:"@strings"},[/#.*/,"comment"],[/[{}()\[\]]/,"@brackets"],[/[;,.]/,"delimiter"],[/[_\w\d]+:(\.(?=[\w_\-\\%])|[:\w_-]|\\[-\\_~.!$&'()*+,;=/?#@%]|%[a-f\d][a-f\d])*/,"tag"],[/:(\.(?=[\w_\-\\%])|[:\w_-]|\\[-\\_~.!$&'()*+,;=/?#@%]|%[a-f\d][a-f\d])+/,"tag"],[/[$?]?[_\w\d]+/,{cases:{"@keywords":{token:"keyword"},"@builtinFunctions":{token:"predefined.sql"},"@default":"identifier"}}],[/\^\^/,"operator.sql"],[/\^[*+\-<>=&|^\/!?]*/,"operator.sql"],[/[*+\-<>=&|\/!?]/,"operator.sql"],[/@[a-z\d\-]*/,"metatag.html"],[/\s+/,"white"]],strings:[[/'([^'\\]|\\.)*$/,"string.invalid"],[/'$/,"string.sql","@pop"],[/'/,"string.sql","@stringBody"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"$/,"string.sql","@pop"],[/"/,"string.sql","@dblStringBody"]],stringBody:[[/[^\\']+/,"string.sql"],[/\\./,"string.escape"],[/'/,"string.sql","@pop"]],dblStringBody:[[/[^\\"]+/,"string.sql"],[/\\./,"string.escape"],[/"/,"string.sql","@pop"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/919.53e04507.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/919.53e04507.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/919.53e04507.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/9204.77418f94.chunk.js b/ydb/core/viewer/monitoring/static/js/9204.77418f94.chunk.js new file mode 100644 index 000000000000..ef0327f1535b --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9204.77418f94.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9204],{89204:function(e,t,_){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),n="\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),r={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},d={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},u={name:"ar",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),months:n,monthsShort:n,weekStart:6,meridiem:function(e){return e>12?"\u0645":"\u0635"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",m:"\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",yy:"%d \u0623\u0639\u0648\u0627\u0645"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,(function(e){return d[e]})).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return r[e]})).replace(/,/g,"\u060c")},ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return _.default.locale(u,null,!0),u}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9207.5881b206.chunk.js b/ydb/core/viewer/monitoring/static/js/9207.5881b206.chunk.js new file mode 100644 index 000000000000..59ecb7fc636e --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9207.5881b206.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9207],{89207:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"kn",weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9212.870f16f0.chunk.js b/ydb/core/viewer/monitoring/static/js/9212.870f16f0.chunk.js new file mode 100644 index 000000000000..ca03594510ca --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9212.870f16f0.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9212],{89212:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"th",weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"},ordinal:function(_){return _+"."}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9219.24a20881.chunk.js b/ydb/core/viewer/monitoring/static/js/9219.24a20881.chunk.js new file mode 100644 index 000000000000..0ce10a1f7878 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9219.24a20881.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9219],{29219:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"dv",weekdays:"\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8_\u0780\u07aa\u0786\u07aa\u0783\u07aa_\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa".split("_"),months:"\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9_\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9_\u0789\u07a7\u0783\u07a8\u0797\u07aa_\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa_\u0789\u07ad_\u0796\u07ab\u0782\u07b0_\u0796\u07aa\u078d\u07a6\u0787\u07a8_\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa_\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa_\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa_\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa_\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa".split("_"),weekStart:7,weekdaysShort:"\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8_\u0780\u07aa\u0786\u07aa\u0783\u07aa_\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa".split("_"),monthsShort:"\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9_\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9_\u0789\u07a7\u0783\u07a8\u0797\u07aa_\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa_\u0789\u07ad_\u0796\u07ab\u0782\u07b0_\u0796\u07aa\u078d\u07a6\u0787\u07a8_\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa_\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa_\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa_\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa_\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa".split("_"),weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/924.382f18b1.chunk.js b/ydb/core/viewer/monitoring/static/js/924.382f18b1.chunk.js new file mode 100644 index 000000000000..9218774950ad --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/924.382f18b1.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 924.382f18b1.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[924],{90924:(t,e,r)=>{r.r(e),r.d(e,{conf:()=>s,language:()=>o});var s={brackets:[],autoClosingPairs:[],surroundingPairs:[]},o={keywords:[],typeKeywords:[],tokenPostfix:".csp",operators:[],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/child-src/,"string.quote"],[/connect-src/,"string.quote"],[/default-src/,"string.quote"],[/font-src/,"string.quote"],[/frame-src/,"string.quote"],[/img-src/,"string.quote"],[/manifest-src/,"string.quote"],[/media-src/,"string.quote"],[/object-src/,"string.quote"],[/script-src/,"string.quote"],[/style-src/,"string.quote"],[/worker-src/,"string.quote"],[/base-uri/,"string.quote"],[/plugin-types/,"string.quote"],[/sandbox/,"string.quote"],[/disown-opener/,"string.quote"],[/form-action/,"string.quote"],[/frame-ancestors/,"string.quote"],[/report-uri/,"string.quote"],[/report-to/,"string.quote"],[/upgrade-insecure-requests/,"string.quote"],[/block-all-mixed-content/,"string.quote"],[/require-sri-for/,"string.quote"],[/reflected-xss/,"string.quote"],[/referrer/,"string.quote"],[/policy-uri/,"string.quote"],[/'self'/,"string.quote"],[/'unsafe-inline'/,"string.quote"],[/'unsafe-eval'/,"string.quote"],[/'strict-dynamic'/,"string.quote"],[/'unsafe-hashed-attributes'/,"string.quote"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/924.382f18b1.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/924.382f18b1.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/924.382f18b1.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/9280.40cff028.chunk.js b/ydb/core/viewer/monitoring/static/js/9280.40cff028.chunk.js new file mode 100644 index 000000000000..b813c4112507 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9280.40cff028.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9280],{9280:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},d={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},r={name:"bn",weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u0983_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),preparse:function(_){return _.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,(function(_){return d[_]}))},postformat:function(_){return _.replace(/\d/g,(function(_){return n[_]}))},ordinal:function(_){return _},formats:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"}};return t.default.locale(r,null,!0),r}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9292.3ccb6509.chunk.js b/ydb/core/viewer/monitoring/static/js/9292.3ccb6509.chunk.js deleted file mode 100644 index aa45e59783ea..000000000000 --- a/ydb/core/viewer/monitoring/static/js/9292.3ccb6509.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9292],{89292:function(e,t,n){n.r(t),n.d(t,{conf:function(){return o},language:function(){return s}});var o={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#pragma\\s+region\\b"),end:new RegExp("^\\s*#pragma\\s+endregion\\b")}}},s={tokenPostfix:".rust",defaultToken:"invalid",keywords:["as","async","await","box","break","const","continue","crate","dyn","else","enum","extern","false","fn","for","if","impl","in","let","loop","match","mod","move","mut","pub","ref","return","self","static","struct","super","trait","true","try","type","unsafe","use","where","while","catch","default","union","static","abstract","alignof","become","do","final","macro","offsetof","override","priv","proc","pure","sizeof","typeof","unsized","virtual","yield"],typeKeywords:["Self","m32","m64","m128","f80","f16","f128","int","uint","float","char","bool","u8","u16","u32","u64","f32","f64","i8","i16","i32","i64","str","Option","Either","c_float","c_double","c_void","FILE","fpos_t","DIR","dirent","c_char","c_schar","c_uchar","c_short","c_ushort","c_int","c_uint","c_long","c_ulong","size_t","ptrdiff_t","clock_t","time_t","c_longlong","c_ulonglong","intptr_t","uintptr_t","off_t","dev_t","ino_t","pid_t","mode_t","ssize_t"],constants:["true","false","Some","None","Left","Right","Ok","Err"],supportConstants:["EXIT_FAILURE","EXIT_SUCCESS","RAND_MAX","EOF","SEEK_SET","SEEK_CUR","SEEK_END","_IOFBF","_IONBF","_IOLBF","BUFSIZ","FOPEN_MAX","FILENAME_MAX","L_tmpnam","TMP_MAX","O_RDONLY","O_WRONLY","O_RDWR","O_APPEND","O_CREAT","O_EXCL","O_TRUNC","S_IFIFO","S_IFCHR","S_IFBLK","S_IFDIR","S_IFREG","S_IFMT","S_IEXEC","S_IWRITE","S_IREAD","S_IRWXU","S_IXUSR","S_IWUSR","S_IRUSR","F_OK","R_OK","W_OK","X_OK","STDIN_FILENO","STDOUT_FILENO","STDERR_FILENO"],supportMacros:["format!","print!","println!","panic!","format_args!","unreachable!","write!","writeln!"],operators:["!","!=","%","%=","&","&=","&&","*","*=","+","+=","-","-=","->",".","..","...","/","/=",":",";","<<","<<=","<","<=","=","==","=>",">",">=",">>",">>=","@","^","^=","|","|=","||","_","?","#"],escapes:/\\([nrt0\"''\\]|x\h{2}|u\{\h{1,6}\})/,delimiters:/[,]/,symbols:/[\#\!\%\&\*\+\-\.\/\:\;\<\=\>\@\^\|_\?]+/,intSuffixes:/[iu](8|16|32|64|128|size)/,floatSuffixes:/f(32|64)/,tokenizer:{root:[[/[a-zA-Z][a-zA-Z0-9_]*!?|_[a-zA-Z0-9_]+/,{cases:{"@typeKeywords":"keyword.type","@keywords":"keyword","@supportConstants":"keyword","@supportMacros":"keyword","@constants":"keyword","@default":"identifier"}}],[/\$/,"identifier"],[/'[a-zA-Z_][a-zA-Z0-9_]*(?=[^\'])/,"identifier"],[/'\S'/,"string.byteliteral"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],{include:"@numbers"},{include:"@whitespace"},[/@delimiters/,{cases:{"@keywords":"keyword","@default":"delimiter"}}],[/[{}()\[\]<>]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],numbers:[[/(0o[0-7_]+)(@intSuffixes)?/,{token:"number"}],[/(0b[0-1_]+)(@intSuffixes)?/,{token:"number"}],[/[\d][\d_]*(\.[\d][\d_]*)?[eE][+-][\d_]+(@floatSuffixes)?/,{token:"number"}],[/\b(\d\.?[\d_]*)(@floatSuffixes)?\b/,{token:"number"}],[/(0x[\da-fA-F]+)_?(@intSuffixes)?/,{token:"number"}],[/[\d][\d_]*(@intSuffixes?)?/,{token:"number"}]]}}}}]); -//# sourceMappingURL=9292.3ccb6509.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9292.91ed23f7.chunk.js b/ydb/core/viewer/monitoring/static/js/9292.91ed23f7.chunk.js new file mode 100644 index 000000000000..d9d0b64eeafe --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9292.91ed23f7.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9292],{49292:function(e,u,_){e.exports=function(e){"use strict";function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=u(e),a={name:"tet",weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),weekStart:1,weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"}};return _.default.locale(a,null,!0),a}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9297.eadc4dba.chunk.js b/ydb/core/viewer/monitoring/static/js/9297.eadc4dba.chunk.js new file mode 100644 index 000000000000..84fb0c4ea9d6 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9297.eadc4dba.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9297],{29297:function(e,_,a){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=_(e),u={name:"en-ca",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return a.default.locale(u,null,!0),u}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9308.c72b8585.chunk.js b/ydb/core/viewer/monitoring/static/js/9308.c72b8585.chunk.js new file mode 100644 index 000000000000..a100d0dd25c8 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9308.c72b8585.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9308],{69308:function(e,a,t){e.exports=function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),r={words:{m:["jedan minut","jednog minuta"],mm:["%d minut","%d minuta","%d minuta"],h:["jedan sat","jednog sata"],hh:["%d sat","%d sata","%d sati"],d:["jedan dan","jednog dana"],dd:["%d dan","%d dana","%d dana"],M:["jedan mesec","jednog meseca"],MM:["%d mesec","%d meseca","%d meseci"],y:["jednu godinu","jedne godine"],yy:["%d godinu","%d godine","%d godina"]},correctGrammarCase:function(e,a){return e%10>=1&&e%10<=4&&(e%100<10||e%100>=20)?e%10==1?a[0]:a[1]:a[2]},relativeTimeFormatter:function(e,a,t,d){var n=r.words[t];if(1===t.length)return"y"===t&&a?"jedna godina":d||a?n[0]:n[1];var i=r.correctGrammarCase(e,n);return"yy"===t&&a&&"%d godinu"===i?e+" godina":i.replace("%d",e)}},d={name:"sr",weekdays:"Nedelja_Ponedeljak_Utorak_Sreda_\u010cetvrtak_Petak_Subota".split("_"),weekdaysShort:"Ned._Pon._Uto._Sre._\u010cet._Pet._Sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),months:"Januar_Februar_Mart_April_Maj_Jun_Jul_Avgust_Septembar_Oktobar_Novembar_Decembar".split("_"),monthsShort:"Jan._Feb._Mar._Apr._Maj_Jun_Jul_Avg._Sep._Okt._Nov._Dec.".split("_"),weekStart:1,relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:r.relativeTimeFormatter,mm:r.relativeTimeFormatter,h:r.relativeTimeFormatter,hh:r.relativeTimeFormatter,d:r.relativeTimeFormatter,dd:r.relativeTimeFormatter,M:r.relativeTimeFormatter,MM:r.relativeTimeFormatter,y:r.relativeTimeFormatter,yy:r.relativeTimeFormatter},ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"}};return t.default.locale(d,null,!0),d}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9319.40f9e46a.chunk.js b/ydb/core/viewer/monitoring/static/js/9319.40f9e46a.chunk.js new file mode 100644 index 000000000000..a6cb82ee6af7 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9319.40f9e46a.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 9319.40f9e46a.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9319],{49319:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>s,language:()=>o});var s={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\$\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},o={defaultToken:"",tokenPostfix:".cs",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["extern","alias","using","bool","decimal","sbyte","byte","short","ushort","int","uint","long","ulong","char","float","double","object","dynamic","string","assembly","is","as","ref","out","this","base","new","typeof","void","checked","unchecked","default","delegate","var","const","if","else","switch","case","while","do","for","foreach","in","break","continue","goto","return","throw","try","catch","finally","lock","yield","from","let","where","join","on","equals","into","orderby","ascending","descending","select","group","by","namespace","partial","class","field","event","method","param","public","protected","internal","private","abstract","sealed","static","struct","readonly","volatile","virtual","override","params","get","set","add","remove","operator","true","false","implicit","explicit","interface","enum","null","async","await","fixed","sizeof","stackalloc","unsafe","nameof","when"],namespaceFollows:["namespace","using"],parenFollows:["if","for","while","switch","foreach","using","catch","when"],operators:["=","??","||","&&","|","^","&","==","!=","<=",">=","<<","+","-","*","/","%","!","~","++","--","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>=",">>","=>"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\@?[a-zA-Z_]\w*/,{cases:{"@namespaceFollows":{token:"keyword.$0",next:"@namespace"},"@keywords":{token:"keyword.$0",next:"@qualified"},"@default":{token:"identifier",next:"@qualified"}}}],{include:"@whitespace"},[/}/,{cases:{"$S2==interpolatedstring":{token:"string.quote",next:"@pop"},"$S2==litinterpstring":{token:"string.quote",next:"@pop"},"@default":"@brackets"}}],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/[0-9_]*\.[0-9_]+([eE][\-+]?\d+)?[fFdD]?/,"number.float"],[/0[xX][0-9a-fA-F_]+/,"number.hex"],[/0[bB][01_]+/,"number.hex"],[/[0-9_]+/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",next:"@string"}],[/\$\@"/,{token:"string.quote",next:"@litinterpstring"}],[/\@"/,{token:"string.quote",next:"@litstring"}],[/\$"/,{token:"string.quote",next:"@interpolatedstring"}],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],qualified:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],[/\./,"delimiter"],["","","@pop"]],namespace:[{include:"@whitespace"},[/[A-Z]\w*/,"namespace"],[/[\.=]/,"delimiter"],["","","@pop"]],comment:[[/[^\/*]+/,"comment"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",next:"@pop"}]],litstring:[[/[^"]+/,"string"],[/""/,"string.escape"],[/"/,{token:"string.quote",next:"@pop"}]],litinterpstring:[[/[^"{]+/,"string"],[/""/,"string.escape"],[/{{/,"string.escape"],[/}}/,"string.escape"],[/{/,{token:"string.quote",next:"root.litinterpstring"}],[/"/,{token:"string.quote",next:"@pop"}]],interpolatedstring:[[/[^\\"{]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/{{/,"string.escape"],[/}}/,"string.escape"],[/{/,{token:"string.quote",next:"root.interpolatedstring"}],[/"/,{token:"string.quote",next:"@pop"}]],whitespace:[[/^[ \t\v\f]*#((r)|(load))(?=\s)/,"directive.csx"],[/^[ \t\v\f]*#\w.*$/,"namespace.cpp"],[/[ \t\v\f\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9319.40f9e46a.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/9319.40f9e46a.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9319.40f9e46a.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/9371.b42befbc.chunk.js b/ydb/core/viewer/monitoring/static/js/9371.b42befbc.chunk.js new file mode 100644 index 000000000000..b7f20ffae45e --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9371.b42befbc.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 9371.b42befbc.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9371],{29371:(e,t,r)=>{r.r(t),r.d(t,{conf:()=>h,language:()=>u});var o,n,a=r(41551),i=Object.defineProperty,m=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,l=(e,t,r,o)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let n of c(t))s.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(o=m(t,n))||o.enumerable});return e},d={};l(d,o=a,"default"),n&&l(n,o,"default");var p=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],h={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["\x3c!--","--\x3e"],["<",">"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],onEnterRules:[{beforeText:new RegExp("<(?!(?:".concat(p.join("|"),"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$"),"i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:d.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(?!(?:".concat(p.join("|"),"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$"),"i"),action:{indentAction:d.languages.IndentAction.Indent}}]},u={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/@@@@/],[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.root"}],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@comment"],[/(<)([\w\-]+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)([:\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)([\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/[ \t\r\n]+/],[/[^<@]+/]],doctype:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.comment"}],[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.comment"}],[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.script"}],[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptAfterType"}],[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInEmbeddedState.scriptEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],style:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.style"}],[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleAfterType"}],[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInEmbeddedState.styleEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],razorInSimpleState:[[/@\*/,"comment.cs","@razorBlockCommentTopLevel"],[/@[{(]/,"metatag.cs","@razorRootTopLevel"],[/(@)(\s*[\w]+)/,["metatag.cs",{token:"identifier.cs",switchTo:"@$S2.$S3"}]],[/[})]/,{token:"metatag.cs",switchTo:"@$S2.$S3"}],[/\*@/,{token:"comment.cs",switchTo:"@$S2.$S3"}]],razorInEmbeddedState:[[/@\*/,"comment.cs","@razorBlockCommentTopLevel"],[/@[{(]/,"metatag.cs","@razorRootTopLevel"],[/(@)(\s*[\w]+)/,["metatag.cs",{token:"identifier.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}]],[/[})]/,{token:"metatag.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}],[/\*@/,{token:"comment.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}]],razorBlockCommentTopLevel:[[/\*@/,"@rematch","@pop"],[/[^*]+/,"comment.cs"],[/./,"comment.cs"]],razorBlockComment:[[/\*@/,"comment.cs","@pop"],[/[^*]+/,"comment.cs"],[/./,"comment.cs"]],razorRootTopLevel:[[/\{/,"delimiter.bracket.cs","@razorRoot"],[/\(/,"delimiter.parenthesis.cs","@razorRoot"],[/[})]/,"@rematch","@pop"],{include:"razorCommon"}],razorRoot:[[/\{/,"delimiter.bracket.cs","@razorRoot"],[/\(/,"delimiter.parenthesis.cs","@razorRoot"],[/\}/,"delimiter.bracket.cs","@pop"],[/\)/,"delimiter.parenthesis.cs","@pop"],{include:"razorCommon"}],razorCommon:[[/[a-zA-Z_]\w*/,{cases:{"@razorKeywords":{token:"keyword.cs"},"@default":"identifier.cs"}}],[/[\[\]]/,"delimiter.array.cs"],[/[ \t\r\n]+/],[/\/\/.*$/,"comment.cs"],[/@\*/,"comment.cs","@razorBlockComment"],[/"([^"]*)"/,"string.cs"],[/'([^']*)'/,"string.cs"],[/(<)([\w\-]+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)([\w\-]+)(>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<\/)([\w\-]+)(>)/,["delimiter.html","tag.html","delimiter.html"]],[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,]/,"delimiter.cs"],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float.cs"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float.cs"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex.cs"],[/0[0-7']*[0-7]/,"number.octal.cs"],[/0[bB][0-1']*[0-1]/,"number.binary.cs"],[/\d[\d']*/,"number.cs"],[/\d/,"number.cs"]]},razorKeywords:["abstract","as","async","await","base","bool","break","by","byte","case","catch","char","checked","class","const","continue","decimal","default","delegate","do","double","descending","explicit","event","extern","else","enum","false","finally","fixed","float","for","foreach","from","goto","group","if","implicit","in","int","interface","internal","into","is","lock","long","nameof","new","null","namespace","object","operator","out","override","orderby","params","private","protected","public","readonly","ref","return","switch","struct","sbyte","sealed","short","sizeof","stackalloc","static","string","select","this","throw","true","try","typeof","uint","ulong","unchecked","unsafe","ushort","using","var","virtual","volatile","void","when","while","where","yield","model","inject"],escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9371.b42befbc.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/9371.b42befbc.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9371.b42befbc.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/939.4c5d6b68.chunk.js b/ydb/core/viewer/monitoring/static/js/939.4c5d6b68.chunk.js deleted file mode 100644 index 5777aa2b8338..000000000000 --- a/ydb/core/viewer/monitoring/static/js/939.4c5d6b68.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[939],{50325:function(e,n,o){o.r(n),o.d(n,{conf:function(){return t},language:function(){return r}});var t={comments:{lineComment:"'"},brackets:[["(",")"],["[","]"],["If","EndIf"],["While","EndWhile"],["For","EndFor"],["Sub","EndSub"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]}]},r={defaultToken:"",tokenPostfix:".sb",ignoreCase:!0,brackets:[{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"keyword.tag-if",open:"If",close:"EndIf"},{token:"keyword.tag-while",open:"While",close:"EndWhile"},{token:"keyword.tag-for",open:"For",close:"EndFor"},{token:"keyword.tag-sub",open:"Sub",close:"EndSub"}],keywords:["Else","ElseIf","EndFor","EndIf","EndSub","EndWhile","For","Goto","If","Step","Sub","Then","To","While"],tagwords:["If","Sub","While","For"],operators:[">","<","<>","<=",">=","And","Or","+","-","*","/","="],identifier:/[a-zA-Z_][\w]*/,symbols:/[=><:+\-*\/%\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},[/(@identifier)(?=[.])/,"type"],[/@identifier/,{cases:{"@keywords":{token:"keyword.$0"},"@operators":"operator","@default":"variable.name"}}],[/([.])(@identifier)/,{cases:{$2:["delimiter","type.member"],"@default":""}}],[/\d*\.\d+/,"number.float"],[/\d+/,"number"],[/[()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":"delimiter"}}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],whitespace:[[/[ \t\r\n]+/,""],[/(\').*$/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"C?/,"string","@pop"]]}}}}]); -//# sourceMappingURL=939.4c5d6b68.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9411.96fb3e2f.chunk.js b/ydb/core/viewer/monitoring/static/js/9411.96fb3e2f.chunk.js new file mode 100644 index 000000000000..55dc3770bd4c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9411.96fb3e2f.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9411],{99411:function(e,n,a){e.exports=function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=n(e),_={name:"ss",weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),weekStart:1,weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"}};return a.default.locale(_,null,!0),_}(a(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9413.b2921c36.chunk.js b/ydb/core/viewer/monitoring/static/js/9413.b2921c36.chunk.js new file mode 100644 index 000000000000..34a3b613c665 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9413.b2921c36.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9413],{19413:function(e,_,o){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=_(e),s={name:"gl",weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),weekStart:1,weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),ordinal:function(e){return e+"\xba"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"fai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"}};return o.default.locale(s,null,!0),s}(o(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9433.7ce648d0.chunk.js b/ydb/core/viewer/monitoring/static/js/9433.7ce648d0.chunk.js new file mode 100644 index 000000000000..0006bbc7710c --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9433.7ce648d0.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 9433.7ce648d0.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9433],{49433:(E,T,A)=>{A.r(T),A.d(T,{conf:()=>N,language:()=>e});var N={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["[","]"],["(",")"],["{","}"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]}]},e={defaultToken:"",tokenPostfix:".msdax",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"{",close:"}",token:"delimiter.brackets"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["VAR","RETURN","NOT","EVALUATE","DATATABLE","ORDER","BY","START","AT","DEFINE","MEASURE","ASC","DESC","IN","BOOLEAN","DOUBLE","INTEGER","DATETIME","CURRENCY","STRING"],functions:["CLOSINGBALANCEMONTH","CLOSINGBALANCEQUARTER","CLOSINGBALANCEYEAR","DATEADD","DATESBETWEEN","DATESINPERIOD","DATESMTD","DATESQTD","DATESYTD","ENDOFMONTH","ENDOFQUARTER","ENDOFYEAR","FIRSTDATE","FIRSTNONBLANK","LASTDATE","LASTNONBLANK","NEXTDAY","NEXTMONTH","NEXTQUARTER","NEXTYEAR","OPENINGBALANCEMONTH","OPENINGBALANCEQUARTER","OPENINGBALANCEYEAR","PARALLELPERIOD","PREVIOUSDAY","PREVIOUSMONTH","PREVIOUSQUARTER","PREVIOUSYEAR","SAMEPERIODLASTYEAR","STARTOFMONTH","STARTOFQUARTER","STARTOFYEAR","TOTALMTD","TOTALQTD","TOTALYTD","ADDCOLUMNS","ADDMISSINGITEMS","ALL","ALLEXCEPT","ALLNOBLANKROW","ALLSELECTED","CALCULATE","CALCULATETABLE","CALENDAR","CALENDARAUTO","CROSSFILTER","CROSSJOIN","CURRENTGROUP","DATATABLE","DETAILROWS","DISTINCT","EARLIER","EARLIEST","EXCEPT","FILTER","FILTERS","GENERATE","GENERATEALL","GROUPBY","IGNORE","INTERSECT","ISONORAFTER","KEEPFILTERS","LOOKUPVALUE","NATURALINNERJOIN","NATURALLEFTOUTERJOIN","RELATED","RELATEDTABLE","ROLLUP","ROLLUPADDISSUBTOTAL","ROLLUPGROUP","ROLLUPISSUBTOTAL","ROW","SAMPLE","SELECTCOLUMNS","SUBSTITUTEWITHINDEX","SUMMARIZE","SUMMARIZECOLUMNS","TOPN","TREATAS","UNION","USERELATIONSHIP","VALUES","SUM","SUMX","PATH","PATHCONTAINS","PATHITEM","PATHITEMREVERSE","PATHLENGTH","AVERAGE","AVERAGEA","AVERAGEX","COUNT","COUNTA","COUNTAX","COUNTBLANK","COUNTROWS","COUNTX","DISTINCTCOUNT","DIVIDE","GEOMEAN","GEOMEANX","MAX","MAXA","MAXX","MEDIAN","MEDIANX","MIN","MINA","MINX","PERCENTILE.EXC","PERCENTILE.INC","PERCENTILEX.EXC","PERCENTILEX.INC","PRODUCT","PRODUCTX","RANK.EQ","RANKX","STDEV.P","STDEV.S","STDEVX.P","STDEVX.S","VAR.P","VAR.S","VARX.P","VARX.S","XIRR","XNPV","DATE","DATEDIFF","DATEVALUE","DAY","EDATE","EOMONTH","HOUR","MINUTE","MONTH","NOW","SECOND","TIME","TIMEVALUE","TODAY","WEEKDAY","WEEKNUM","YEAR","YEARFRAC","CONTAINS","CONTAINSROW","CUSTOMDATA","ERROR","HASONEFILTER","HASONEVALUE","ISBLANK","ISCROSSFILTERED","ISEMPTY","ISERROR","ISEVEN","ISFILTERED","ISLOGICAL","ISNONTEXT","ISNUMBER","ISODD","ISSUBTOTAL","ISTEXT","USERNAME","USERPRINCIPALNAME","AND","FALSE","IF","IFERROR","NOT","OR","SWITCH","TRUE","ABS","ACOS","ACOSH","ACOT","ACOTH","ASIN","ASINH","ATAN","ATANH","BETA.DIST","BETA.INV","CEILING","CHISQ.DIST","CHISQ.DIST.RT","CHISQ.INV","CHISQ.INV.RT","COMBIN","COMBINA","CONFIDENCE.NORM","CONFIDENCE.T","COS","COSH","COT","COTH","CURRENCY","DEGREES","EVEN","EXP","EXPON.DIST","FACT","FLOOR","GCD","INT","ISO.CEILING","LCM","LN","LOG","LOG10","MOD","MROUND","ODD","PERMUT","PI","POISSON.DIST","POWER","QUOTIENT","RADIANS","RAND","RANDBETWEEN","ROUND","ROUNDDOWN","ROUNDUP","SIGN","SIN","SINH","SQRT","SQRTPI","TAN","TANH","TRUNC","BLANK","CONCATENATE","CONCATENATEX","EXACT","FIND","FIXED","FORMAT","LEFT","LEN","LOWER","MID","REPLACE","REPT","RIGHT","SEARCH","SUBSTITUTE","TRIM","UNICHAR","UNICODE","UPPER","VALUE"],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},[/[;,.]/,"delimiter"],[/[({})]/,"@brackets"],[/[a-z_][a-zA-Z0-9_]*/,{cases:{"@keywords":"keyword","@functions":"keyword","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/\/\/+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/N"/,{token:"string",next:"@string"}],[/"/,{token:"string",next:"@string"}]],string:[[/[^"]+/,"string"],[/""/,"string"],[/"/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/\[/,{token:"identifier.quote",next:"@bracketedIdentifier"}],[/'/,{token:"identifier.quote",next:"@quotedIdentifier"}]],bracketedIdentifier:[[/[^\]]+/,"identifier"],[/]]/,"identifier"],[/]/,{token:"identifier.quote",next:"@pop"}]],quotedIdentifier:[[/[^']+/,"identifier"],[/''/,"identifier"],[/'/,{token:"identifier.quote",next:"@pop"}]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9433.7ce648d0.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/9433.7ce648d0.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9433.7ce648d0.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/9526.10bb1684.chunk.js b/ydb/core/viewer/monitoring/static/js/9526.10bb1684.chunk.js new file mode 100644 index 000000000000..be536b7d997e --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9526.10bb1684.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 9526.10bb1684.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9526],{29526:(e,t,s)=>{s.r(t),s.d(t,{conf:()=>r,language:()=>n});var r={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}]},n={defaultToken:"",tokenPostfix:".perl",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["__DATA__","else","lock","__END__","elsif","lt","__FILE__","eq","__LINE__","exp","ne","sub","__PACKAGE__","for","no","and","foreach","or","unless","cmp","ge","package","until","continue","gt","while","CORE","if","xor","do","le","__DIE__","__WARN__"],builtinFunctions:["-A","END","length","setpgrp","-B","endgrent","link","setpriority","-b","endhostent","listen","setprotoent","-C","endnetent","local","setpwent","-c","endprotoent","localtime","setservent","-d","endpwent","log","setsockopt","-e","endservent","lstat","shift","-f","eof","map","shmctl","-g","eval","mkdir","shmget","-k","exec","msgctl","shmread","-l","exists","msgget","shmwrite","-M","exit","msgrcv","shutdown","-O","fcntl","msgsnd","sin","-o","fileno","my","sleep","-p","flock","next","socket","-r","fork","not","socketpair","-R","format","oct","sort","-S","formline","open","splice","-s","getc","opendir","split","-T","getgrent","ord","sprintf","-t","getgrgid","our","sqrt","-u","getgrnam","pack","srand","-w","gethostbyaddr","pipe","stat","-W","gethostbyname","pop","state","-X","gethostent","pos","study","-x","getlogin","print","substr","-z","getnetbyaddr","printf","symlink","abs","getnetbyname","prototype","syscall","accept","getnetent","push","sysopen","alarm","getpeername","quotemeta","sysread","atan2","getpgrp","rand","sysseek","AUTOLOAD","getppid","read","system","BEGIN","getpriority","readdir","syswrite","bind","getprotobyname","readline","tell","binmode","getprotobynumber","readlink","telldir","bless","getprotoent","readpipe","tie","break","getpwent","recv","tied","caller","getpwnam","redo","time","chdir","getpwuid","ref","times","CHECK","getservbyname","rename","truncate","chmod","getservbyport","require","uc","chomp","getservent","reset","ucfirst","chop","getsockname","return","umask","chown","getsockopt","reverse","undef","chr","glob","rewinddir","UNITCHECK","chroot","gmtime","rindex","unlink","close","goto","rmdir","unpack","closedir","grep","say","unshift","connect","hex","scalar","untie","cos","index","seek","use","crypt","INIT","seekdir","utime","dbmclose","int","select","values","dbmopen","ioctl","semctl","vec","defined","join","semget","wait","delete","keys","semop","waitpid","DESTROY","kill","send","wantarray","die","last","setgrent","warn","dump","lc","sethostent","write","each","lcfirst","setnetent"],builtinFileHandlers:["ARGV","STDERR","STDOUT","ARGVOUT","STDIN","ENV"],builtinVariables:["$!","$^RE_TRIE_MAXBUF","$LAST_REGEXP_CODE_RESULT",'$"',"$^S","$LIST_SEPARATOR","$#","$^T","$MATCH","$$","$^TAINT","$MULTILINE_MATCHING","$%","$^UNICODE","$NR","$&","$^UTF8LOCALE","$OFMT","$'","$^V","$OFS","$(","$^W","$ORS","$)","$^WARNING_BITS","$OS_ERROR","$*","$^WIDE_SYSTEM_CALLS","$OSNAME","$+","$^X","$OUTPUT_AUTO_FLUSH","$,","$_","$OUTPUT_FIELD_SEPARATOR","$-","$`","$OUTPUT_RECORD_SEPARATOR","$.","$a","$PERL_VERSION","$/","$ACCUMULATOR","$PERLDB","$0","$ARG","$PID","$:","$ARGV","$POSTMATCH","$;","$b","$PREMATCH","$<","$BASETIME","$PROCESS_ID","$=","$CHILD_ERROR","$PROGRAM_NAME","$>","$COMPILING","$REAL_GROUP_ID","$?","$DEBUGGING","$REAL_USER_ID","$@","$EFFECTIVE_GROUP_ID","$RS","$[","$EFFECTIVE_USER_ID","$SUBSCRIPT_SEPARATOR","$\\","$EGID","$SUBSEP","$]","$ERRNO","$SYSTEM_FD_MAX","$^","$EUID","$UID","$^A","$EVAL_ERROR","$WARNING","$^C","$EXCEPTIONS_BEING_CAUGHT","$|","$^CHILD_ERROR_NATIVE","$EXECUTABLE_NAME","$~","$^D","$EXTENDED_OS_ERROR","%!","$^E","$FORMAT_FORMFEED","%^H","$^ENCODING","$FORMAT_LINE_BREAK_CHARACTERS","%ENV","$^F","$FORMAT_LINES_LEFT","%INC","$^H","$FORMAT_LINES_PER_PAGE","%OVERLOAD","$^I","$FORMAT_NAME","%SIG","$^L","$FORMAT_PAGE_NUMBER","@+","$^M","$FORMAT_TOP_NAME","@-","$^N","$GID","@_","$^O","$INPLACE_EDIT","@ARGV","$^OPEN","$INPUT_LINE_NUMBER","@INC","$^P","$INPUT_RECORD_SEPARATOR","@LAST_MATCH_START","$^R","$LAST_MATCH_END","$^RE_DEBUG_FLAGS","$LAST_PAREN_MATCH"],symbols:/[:+\-\^*$&%@=<>!?|\/~\.]/,quoteLikeOps:["qr","m","s","q","qq","qx","qw","tr","y"],escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},[/[a-zA-Z\-_][\w\-_]*/,{cases:{"@keywords":"keyword","@builtinFunctions":"type.identifier","@builtinFileHandlers":"variable.predefined","@quoteLikeOps":{token:"@rematch",next:"quotedConstructs"},"@default":""}}],[/[\$@%][*@#?\+\-\$!\w\\\^><~:;\.]+/,{cases:{"@builtinVariables":"variable.predefined","@default":"variable"}}],{include:"@strings"},{include:"@dblStrings"},{include:"@perldoc"},{include:"@heredoc"},[/[{}\[\]()]/,"@brackets"],[/[\/](?:(?:\[(?:\\]|[^\]])+\])|(?:\\\/|[^\]\/]))*[\/]\w*\s*(?=[).,;]|$)/,"regexp"],[/@symbols/,"operators"],{include:"@numbers"},[/[,;]/,"delimiter"]],whitespace:[[/\s+/,"white"],[/(^#!.*$)/,"metatag"],[/(^#.*$)/,"comment"]],numbers:[[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+/,"number"]],strings:[[/'/,"string","@stringBody"]],stringBody:[[/'/,"string","@popall"],[/\\'/,"string.escape"],[/./,"string"]],dblStrings:[[/"/,"string","@dblStringBody"]],dblStringBody:[[/"/,"string","@popall"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],{include:"@variables"},[/./,"string"]],quotedConstructs:[[/(q|qw|tr|y)\s*\(/,{token:"string.delim",switchTo:"@qstring.(.)"}],[/(q|qw|tr|y)\s*\[/,{token:"string.delim",switchTo:"@qstring.[.]"}],[/(q|qw|tr|y)\s*\{/,{token:"string.delim",switchTo:"@qstring.{.}"}],[/(q|qw|tr|y)\s*</,{token:"string.delim",switchTo:"@qstring.<.>"}],[/(q|qw|tr|y)#/,{token:"string.delim",switchTo:"@qstring.#.#"}],[/(q|qw|tr|y)\s*([^A-Za-z0-9#\s])/,{token:"string.delim",switchTo:"@qstring.$2.$2"}],[/(q|qw|tr|y)\s+(\w)/,{token:"string.delim",switchTo:"@qstring.$2.$2"}],[/(qr|m|s)\s*\(/,{token:"regexp.delim",switchTo:"@qregexp.(.)"}],[/(qr|m|s)\s*\[/,{token:"regexp.delim",switchTo:"@qregexp.[.]"}],[/(qr|m|s)\s*\{/,{token:"regexp.delim",switchTo:"@qregexp.{.}"}],[/(qr|m|s)\s*</,{token:"regexp.delim",switchTo:"@qregexp.<.>"}],[/(qr|m|s)#/,{token:"regexp.delim",switchTo:"@qregexp.#.#"}],[/(qr|m|s)\s*([^A-Za-z0-9_#\s])/,{token:"regexp.delim",switchTo:"@qregexp.$2.$2"}],[/(qr|m|s)\s+(\w)/,{token:"regexp.delim",switchTo:"@qregexp.$2.$2"}],[/(qq|qx)\s*\(/,{token:"string.delim",switchTo:"@qqstring.(.)"}],[/(qq|qx)\s*\[/,{token:"string.delim",switchTo:"@qqstring.[.]"}],[/(qq|qx)\s*\{/,{token:"string.delim",switchTo:"@qqstring.{.}"}],[/(qq|qx)\s*</,{token:"string.delim",switchTo:"@qqstring.<.>"}],[/(qq|qx)#/,{token:"string.delim",switchTo:"@qqstring.#.#"}],[/(qq|qx)\s*([^A-Za-z0-9#\s])/,{token:"string.delim",switchTo:"@qqstring.$2.$2"}],[/(qq|qx)\s+(\w)/,{token:"string.delim",switchTo:"@qqstring.$2.$2"}]],qstring:[[/\\./,"string.escape"],[/./,{cases:{"$#==$S3":{token:"string.delim",next:"@pop"},"$#==$S2":{token:"string.delim",next:"@push"},"@default":"string"}}]],qregexp:[{include:"@variables"},[/\\./,"regexp.escape"],[/./,{cases:{"$#==$S3":{token:"regexp.delim",next:"@regexpModifiers"},"$#==$S2":{token:"regexp.delim",next:"@push"},"@default":"regexp"}}]],regexpModifiers:[[/[msixpodualngcer]+/,{token:"regexp.modifier",next:"@popall"}]],qqstring:[{include:"@variables"},{include:"@qstring"}],heredoc:[[/<<\s*['"`]?([\w\-]+)['"`]?/,{token:"string.heredoc.delimiter",next:"@heredocBody.$1"}]],heredocBody:[[/^([\w\-]+)$/,{cases:{"$1==$S2":[{token:"string.heredoc.delimiter",next:"@popall"}],"@default":"string.heredoc"}}],[/./,"string.heredoc"]],perldoc:[[/^=\w/,"comment.doc","@perldocBody"]],perldocBody:[[/^=cut\b/,"type.identifier","@popall"],[/./,"comment.doc"]],variables:[[/\$\w+/,"variable"],[/@\w+/,"variable"],[/%\w+/,"variable"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9526.10bb1684.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/9526.10bb1684.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9526.10bb1684.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/9528.9991c023.chunk.js b/ydb/core/viewer/monitoring/static/js/9528.9991c023.chunk.js new file mode 100644 index 000000000000..b8543cbd17f9 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9528.9991c023.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9528],{99528:function(a,e,_){a.exports=function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var _=e(a),m={name:"sw",weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekStart:1,ordinal:function(a){return a},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return _.default.locale(m,null,!0),m}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9555.c9b5ee61.chunk.js b/ydb/core/viewer/monitoring/static/js/9555.c9b5ee61.chunk.js new file mode 100644 index 000000000000..7ab23f4a8bdd --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9555.c9b5ee61.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9555],{49555:function(a,n,e){a.exports=function(a){"use strict";function n(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var e=n(a),t={name:"se",weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),weekStart:1,weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"}};return e.default.locale(t,null,!0),t}(e(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9572.9f83f004.chunk.js b/ydb/core/viewer/monitoring/static/js/9572.9f83f004.chunk.js new file mode 100644 index 000000000000..f710dd04621a --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9572.9f83f004.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9572],{59572:function(_,e,t){_.exports=function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={name:"mr",weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"}};return t.default.locale(n,null,!0),n}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/96.6e1bf3f4.chunk.js b/ydb/core/viewer/monitoring/static/js/96.6e1bf3f4.chunk.js new file mode 100644 index 000000000000..8f49ccac2fa1 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/96.6e1bf3f4.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[96],{80096:function(e,_,t){e.exports=function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),r={name:"lb",weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),weekStart:1,weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"}};return t.default.locale(r,null,!0),r}(t(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9621.48073631.chunk.js b/ydb/core/viewer/monitoring/static/js/9621.48073631.chunk.js new file mode 100644 index 000000000000..2f2decae5534 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9621.48073631.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 9621.48073631.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9621],{19621:(e,o,n)=>{n.r(o),n.d(o,{conf:()=>t,language:()=>s});var t={comments:{lineComment:";",blockComment:["#|","|#"]},brackets:[["(",")"],["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},s={defaultToken:"",ignoreCase:!0,tokenPostfix:".scheme",brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],keywords:["case","do","let","loop","if","else","when","cons","car","cdr","cond","lambda","lambda*","syntax-rules","format","set!","quote","eval","append","list","list?","member?","load"],constants:["#t","#f"],operators:["eq?","eqv?","equal?","and","or","not","null?"],tokenizer:{root:[[/#[xXoObB][0-9a-fA-F]+/,"number.hex"],[/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/,"number.float"],[/(?:\b(?:(define|define-syntax|define-macro))\b)(\s+)((?:\w|\-|\!|\?)*)/,["keyword","white","variable"]],{include:"@whitespace"},{include:"@strings"},[/[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,{cases:{"@keywords":"keyword","@constants":"constant","@operators":"operators","@default":"identifier"}}]],comment:[[/[^\|#]+/,"comment"],[/#\|/,"comment","@push"],[/\|#/,"comment","@pop"],[/[\|#]/,"comment"]],whitespace:[[/[ \t\r\n]+/,"white"],[/#\|/,"comment","@comment"],[/;.*$/,"comment"]],strings:[[/"$/,"string","@popall"],[/"(?=.)/,"string","@multiLineString"]],multiLineString:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string.escape"],[/"/,"string","@popall"],[/\\$/,"string"]]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9621.48073631.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/9621.48073631.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9621.48073631.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/9803.e1567af5.chunk.js b/ydb/core/viewer/monitoring/static/js/9803.e1567af5.chunk.js deleted file mode 100644 index 5bd1c8e6ed23..000000000000 --- a/ydb/core/viewer/monitoring/static/js/9803.e1567af5.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9803],{79803:function(e,t,o){o.r(t),o.d(t,{conf:function(){return r},language:function(){return n}});var r={wordPattern:/(unary_[@~!#%^&*()\-=+\\|:<>\/?]+)|([a-zA-Z_$][\w$]*?_=)|(`[^`]+`)|([a-zA-Z_$][\w$]*)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))"),end:new RegExp("^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))")}}},n={tokenPostfix:".scala",keywords:["asInstanceOf","catch","class","classOf","def","do","else","extends","finally","for","foreach","forSome","if","import","isInstanceOf","macro","match","new","object","package","return","throw","trait","try","type","until","val","var","while","with","yield","given","enum","then"],softKeywords:["as","export","extension","end","derives","on"],constants:["true","false","null","this","super"],modifiers:["abstract","final","implicit","lazy","override","private","protected","sealed"],softModifiers:["inline","opaque","open","transparent","using"],name:/(?:[a-z_$][\w$]*|`[^`]+`)/,type:/(?:[A-Z][\w$]*)/,symbols:/[=><!~?:&|+\-*\/^\\%@#]+/,digits:/\d+(_+\d+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,escapes:/\\(?:[btnfr\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,fstring_conv:/[bBhHsScCdoxXeEfgGaAt]|[Tn](?:[HIklMSLNpzZsQ]|[BbhAaCYyjmde]|[RTrDFC])/,tokenizer:{root:[[/\braw"""/,{token:"string.quote",bracket:"@open",next:"@rawstringt"}],[/\braw"/,{token:"string.quote",bracket:"@open",next:"@rawstring"}],[/\bs"""/,{token:"string.quote",bracket:"@open",next:"@sstringt"}],[/\bs"/,{token:"string.quote",bracket:"@open",next:"@sstring"}],[/\bf""""/,{token:"string.quote",bracket:"@open",next:"@fstringt"}],[/\bf"/,{token:"string.quote",bracket:"@open",next:"@fstring"}],[/"""/,{token:"string.quote",bracket:"@open",next:"@stringt"}],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,"number.float","@allowMethod"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,"number.float","@allowMethod"],[/0[xX](@hexdigits)[Ll]?/,"number.hex","@allowMethod"],[/(@digits)[fFdD]/,"number.float","@allowMethod"],[/(@digits)[lL]?/,"number","@allowMethod"],[/\b_\*/,"key"],[/\b(_)\b/,"keyword","@allowMethod"],[/\bimport\b/,"keyword","@import"],[/\b(case)([ \t]+)(class)\b/,["keyword.modifier","white","keyword"]],[/\bcase\b/,"keyword","@case"],[/\bva[lr]\b/,"keyword","@vardef"],[/\b(def)([ \t]+)((?:unary_)?@symbols|@name(?:_=)|@name)/,["keyword","white","identifier"]],[/@name(?=[ \t]*:(?!:))/,"variable"],[/(\.)(@name|@symbols)/,["operator",{token:"@rematch",next:"@allowMethod"}]],[/([{(])(\s*)(@name(?=\s*=>))/,["@brackets","white","variable"]],[/@name/,{cases:{"@keywords":"keyword","@softKeywords":"keyword","@modifiers":"keyword.modifier","@softModifiers":"keyword.modifier","@constants":{token:"constant",next:"@allowMethod"},"@default":{token:"identifier",next:"@allowMethod"}}}],[/@type/,"type","@allowMethod"],{include:"@whitespace"},[/@[a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*/,"annotation"],[/[{(]/,"@brackets"],[/[})]/,"@brackets","@allowMethod"],[/\[/,"operator.square"],[/](?!\s*(?:va[rl]|def|type)\b)/,"operator.square","@allowMethod"],[/]/,"operator.square"],[/([=-]>|<-|>:|<:|:>|<%)(?=[\s\w()[\]{},\."'`])/,"keyword"],[/@symbols/,"operator"],[/[;,\.]/,"delimiter"],[/'[a-zA-Z$][\w$]*(?!')/,"attribute.name"],[/'[^\\']'/,"string","@allowMethod"],[/(')(@escapes)(')/,["string","string.escape",{token:"string",next:"@allowMethod"}]],[/'/,"string.invalid"]],import:[[/;/,"delimiter","@pop"],[/^|$/,"","@pop"],[/[ \t]+/,"white"],[/[\n\r]+/,"white","@pop"],[/\/\*/,"comment","@comment"],[/@name|@type/,"type"],[/[(){}]/,"@brackets"],[/[[\]]/,"operator.square"],[/[\.,]/,"delimiter"]],allowMethod:[[/^|$/,"","@pop"],[/[ \t]+/,"white"],[/[\n\r]+/,"white","@pop"],[/\/\*/,"comment","@comment"],[/(?==>[\s\w([{])/,"keyword","@pop"],[/(@name|@symbols)(?=[ \t]*[[({"'`]|[ \t]+(?:[+-]?\.?\d|\w))/,{cases:{"@keywords":{token:"keyword",next:"@pop"},"->|<-|>:|<:|<%":{token:"keyword",next:"@pop"},"@default":{token:"@rematch",next:"@pop"}}}],["","","@pop"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],case:[[/\b_\*/,"key"],[/\b(_|true|false|null|this|super)\b/,"keyword","@allowMethod"],[/\bif\b|=>/,"keyword","@pop"],[/`[^`]+`/,"identifier","@allowMethod"],[/@name/,"variable","@allowMethod"],[/:::?|\||@(?![a-z_$])/,"keyword"],{include:"@root"}],vardef:[[/\b_\*/,"key"],[/\b(_|true|false|null|this|super)\b/,"keyword"],[/@name/,"variable"],[/:::?|\||@(?![a-z_$])/,"keyword"],[/=|:(?!:)/,"operator","@pop"],[/$/,"white","@pop"],{include:"@root"}],string:[[/[^\\"\n\r]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}]],stringt:[[/[^\\"\n\r]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/"/,"string"]],fstring:[[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/%%/,"string"],[/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","keyword.modifier","number","metatag"]],[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","number","metatag"]],[/(%)([\-#+ 0,(])(@fstring_conv)/,["metatag","keyword.modifier","metatag"]],[/(%)(@fstring_conv)/,["metatag","metatag"]],[/./,"string"]],fstringt:[[/@escapes/,"string.escape"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/%%/,"string"],[/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","keyword.modifier","number","metatag"]],[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","number","metatag"]],[/(%)([\-#+ 0,(])(@fstring_conv)/,["metatag","keyword.modifier","metatag"]],[/(%)(@fstring_conv)/,["metatag","metatag"]],[/./,"string"]],sstring:[[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/./,"string"]],sstringt:[[/@escapes/,"string.escape"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/./,"string"]],interp:[[/{/,"operator","@push"],[/}/,"operator","@pop"],{include:"@root"}],rawstring:[[/[^"]/,"string"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}]],rawstringt:[[/[^"]/,"string"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/"/,"string"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); -//# sourceMappingURL=9803.e1567af5.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/983.18afe3d6.chunk.js b/ydb/core/viewer/monitoring/static/js/983.18afe3d6.chunk.js deleted file mode 100644 index 8b5d8752a03c..000000000000 --- a/ydb/core/viewer/monitoring/static/js/983.18afe3d6.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[983],{80983:function(e,t,i){i.r(t),i.d(t,{conf:function(){return r},language:function(){return l}});var n=i(37456),o=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],r={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,brackets:[["\x3c!--","--\x3e"],["<",">"],["{{","}}"],["{%","%}"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"%",close:"%"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:new RegExp("<(?!(?:"+o.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:n.Mj.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(?!(?:"+o.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:n.Mj.IndentAction.Indent}}]},l={defaultToken:"",tokenPostfix:"",builtinTags:["if","else","elseif","endif","render","assign","capture","endcapture","case","endcase","comment","endcomment","cycle","decrement","for","endfor","include","increment","layout","raw","endraw","render","tablerow","endtablerow","unless","endunless"],builtinFilters:["abs","append","at_least","at_most","capitalize","ceil","compact","date","default","divided_by","downcase","escape","escape_once","first","floor","join","json","last","lstrip","map","minus","modulo","newline_to_br","plus","prepend","remove","remove_first","replace","replace_first","reverse","round","rstrip","size","slice","sort","sort_natural","split","strip","strip_html","strip_newlines","times","truncate","truncatewords","uniq","upcase","url_decode","url_encode","where"],constants:["true","false"],operators:["==","!=",">","<",">=","<="],symbol:/[=><!]+/,identifier:/[a-zA-Z_][\w]*/,tokenizer:{root:[[/\{\%\s*comment\s*\%\}/,"comment.start.liquid","@comment"],[/\{\{/,{token:"@rematch",switchTo:"@liquidState.root"}],[/\{\%/,{token:"@rematch",switchTo:"@liquidState.root"}],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)(\w+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/\{/,"delimiter.html"],[/[^<{]+/]],comment:[[/\{\%\s*endcomment\s*\%\}/,"comment.end.liquid","@pop"],[/./,"comment.content.liquid"]],otherTag:[[/\{\{/,{token:"@rematch",switchTo:"@liquidState.otherTag"}],[/\{\%/,{token:"@rematch",switchTo:"@liquidState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],liquidState:[[/\{\{/,"delimiter.output.liquid"],[/\}\}/,{token:"delimiter.output.liquid",switchTo:"@$S2.$S3"}],[/\{\%/,"delimiter.tag.liquid"],[/raw\s*\%\}/,"delimiter.tag.liquid","@liquidRaw"],[/\%\}/,{token:"delimiter.tag.liquid",switchTo:"@$S2.$S3"}],{include:"liquidRoot"}],liquidRaw:[[/^(?!\{\%\s*endraw\s*\%\}).+/],[/\{\%/,"delimiter.tag.liquid"],[/@identifier/],[/\%\}/,{token:"delimiter.tag.liquid",next:"@root"}]],liquidRoot:[[/\d+(\.\d+)?/,"number.liquid"],[/"[^"]*"/,"string.liquid"],[/'[^']*'/,"string.liquid"],[/\s+/],[/@symbol/,{cases:{"@operators":"operator.liquid","@default":""}}],[/\./],[/@identifier/,{cases:{"@constants":"keyword.liquid","@builtinFilters":"predefined.liquid","@builtinTags":"predefined.liquid","@default":"variable.liquid"}}],[/[^}|%]/,"variable.liquid"]]}}}}]); -//# sourceMappingURL=983.18afe3d6.chunk.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9876.b336d1f5.chunk.js b/ydb/core/viewer/monitoring/static/js/9876.b336d1f5.chunk.js new file mode 100644 index 000000000000..bbe86e74984d --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9876.b336d1f5.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 9876.b336d1f5.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9876],{89876:(e,t,n)=>{n.r(t),n.d(t,{conf:()=>l,language:()=>m});var o,r,i=n(41551),s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,p=Object.prototype.hasOwnProperty,g=(e,t,n,o)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let r of a(t))p.call(e,r)||r===n||s(e,r,{get:()=>t[r],enumerable:!(o=c(t,r))||o.enumerable});return e},d={};g(d,o=i,"default"),r&&g(r,o,"default");var l={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],onEnterRules:[{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,afterText:/^\s*\*\/$/,action:{indentAction:d.languages.IndentAction.IndentOutdent,appendText:" * "}},{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,action:{indentAction:d.languages.IndentAction.None,appendText:" * "}},{beforeText:/^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,action:{indentAction:d.languages.IndentAction.None,appendText:"* "}},{beforeText:/^(\t|(\ \ ))*\ \*\/\s*$/,action:{indentAction:d.languages.IndentAction.None,removeText:1}}],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"`",close:"`",notIn:["string","comment"]},{open:"/**",close:" */",notIn:["string"]}],folding:{markers:{start:new RegExp("^\\s*//\\s*#?region\\b"),end:new RegExp("^\\s*//\\s*#?endregion\\b")}}},m={defaultToken:"invalid",tokenPostfix:".ts",keywords:["abstract","any","as","asserts","bigint","boolean","break","case","catch","class","continue","const","constructor","debugger","declare","default","delete","do","else","enum","export","extends","false","finally","for","from","function","get","if","implements","import","in","infer","instanceof","interface","is","keyof","let","module","namespace","never","new","null","number","object","out","package","private","protected","public","override","readonly","require","global","return","satisfies","set","static","string","super","switch","symbol","this","throw","true","try","type","typeof","undefined","unique","unknown","var","void","while","with","yield","async","await","of"],operators:["<=",">=","==","!=","===","!==","=>","+","-","**","*","/","%","++","--","<<","</",">>",">>>","&","|","^","!","~","&&","||","??","?",":","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=","@"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,"delimiter.bracket"],{include:"common"}],common:[[/#?[a-z_$][\w$]*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[A-Z][\w\$]*/,"type.identifier"],{include:"@whitespace"},[/\/(?=([^\\\/]|\\.)+\/([dgimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,{token:"regexp",bracket:"@open",next:"@regexp"}],[/[()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/!(?=([^=]|$))/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/(@digits)[eE]([\-+]?(@digits))?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,"number.float"],[/0[xX](@hexdigits)n?/,"number.hex"],[/0[oO]?(@octaldigits)n?/,"number.octal"],[/0[bB](@binarydigits)n?/,"number.binary"],[/(@digits)n?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"],[/`/,"string","@string_backtick"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@jsdoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],jsdoc:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,["regexp.escape.control","regexp.escape.control","regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,["regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?:|\?=|\?!)/,["regexp.escape.control","regexp.escape.control"]],[/[()]/,"regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/[^\\\/]/,"regexp"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/(\/)([dgimsuy]*)/,[{token:"regexp",bracket:"@close",next:"@pop"},"keyword.other"]]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,{token:"regexp.escape.control",next:"@pop",bracket:"@close"}]],string_double:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],string_single:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"]],string_backtick:[[/\$\{/,{token:"delimiter.bracket",next:"@bracketCounting"}],[/[^\\`$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/`/,"string","@pop"]],bracketCounting:[[/\{/,"delimiter.bracket","@bracketCounting"],[/\}/,"delimiter.bracket","@pop"],{include:"common"}]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9876.b336d1f5.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/9876.b336d1f5.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9876.b336d1f5.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/9917.67d792e3.chunk.js b/ydb/core/viewer/monitoring/static/js/9917.67d792e3.chunk.js new file mode 100644 index 000000000000..089a0f64b2e1 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9917.67d792e3.chunk.js @@ -0,0 +1 @@ +(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9917],{59917:function(e,t,_){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),a={name:"nn",weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_la".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eitt minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein m\xe5nad",MM:"%d m\xe5nadar",y:"eitt \xe5r",yy:"%d \xe5r"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"}};return _.default.locale(a,null,!0),a}(_(22877))}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9923.270f0a19.chunk.js b/ydb/core/viewer/monitoring/static/js/9923.270f0a19.chunk.js new file mode 100644 index 000000000000..4eaaa7ffa7b4 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9923.270f0a19.chunk.js @@ -0,0 +1,2 @@ +/*! For license information please see 9923.270f0a19.chunk.js.LICENSE.txt */ +"use strict";(self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[]).push([[9923],{39923:(E,S,e)=>{e.r(S),e.d(S,{conf:()=>T,language:()=>R});var T={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},R={defaultToken:"",tokenPostfix:".redis",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["APPEND","AUTH","BGREWRITEAOF","BGSAVE","BITCOUNT","BITFIELD","BITOP","BITPOS","BLPOP","BRPOP","BRPOPLPUSH","CLIENT","KILL","LIST","GETNAME","PAUSE","REPLY","SETNAME","CLUSTER","ADDSLOTS","COUNT-FAILURE-REPORTS","COUNTKEYSINSLOT","DELSLOTS","FAILOVER","FORGET","GETKEYSINSLOT","INFO","KEYSLOT","MEET","NODES","REPLICATE","RESET","SAVECONFIG","SET-CONFIG-EPOCH","SETSLOT","SLAVES","SLOTS","COMMAND","COUNT","GETKEYS","CONFIG","GET","REWRITE","SET","RESETSTAT","DBSIZE","DEBUG","OBJECT","SEGFAULT","DECR","DECRBY","DEL","DISCARD","DUMP","ECHO","EVAL","EVALSHA","EXEC","EXISTS","EXPIRE","EXPIREAT","FLUSHALL","FLUSHDB","GEOADD","GEOHASH","GEOPOS","GEODIST","GEORADIUS","GEORADIUSBYMEMBER","GETBIT","GETRANGE","GETSET","HDEL","HEXISTS","HGET","HGETALL","HINCRBY","HINCRBYFLOAT","HKEYS","HLEN","HMGET","HMSET","HSET","HSETNX","HSTRLEN","HVALS","INCR","INCRBY","INCRBYFLOAT","KEYS","LASTSAVE","LINDEX","LINSERT","LLEN","LPOP","LPUSH","LPUSHX","LRANGE","LREM","LSET","LTRIM","MGET","MIGRATE","MONITOR","MOVE","MSET","MSETNX","MULTI","PERSIST","PEXPIRE","PEXPIREAT","PFADD","PFCOUNT","PFMERGE","PING","PSETEX","PSUBSCRIBE","PUBSUB","PTTL","PUBLISH","PUNSUBSCRIBE","QUIT","RANDOMKEY","READONLY","READWRITE","RENAME","RENAMENX","RESTORE","ROLE","RPOP","RPOPLPUSH","RPUSH","RPUSHX","SADD","SAVE","SCARD","SCRIPT","FLUSH","LOAD","SDIFF","SDIFFSTORE","SELECT","SETBIT","SETEX","SETNX","SETRANGE","SHUTDOWN","SINTER","SINTERSTORE","SISMEMBER","SLAVEOF","SLOWLOG","SMEMBERS","SMOVE","SORT","SPOP","SRANDMEMBER","SREM","STRLEN","SUBSCRIBE","SUNION","SUNIONSTORE","SWAPDB","SYNC","TIME","TOUCH","TTL","TYPE","UNSUBSCRIBE","UNLINK","UNWATCH","WAIT","WATCH","ZADD","ZCARD","ZCOUNT","ZINCRBY","ZINTERSTORE","ZLEXCOUNT","ZRANGE","ZRANGEBYLEX","ZREVRANGEBYLEX","ZRANGEBYSCORE","ZRANK","ZREM","ZREMRANGEBYLEX","ZREMRANGEBYRANK","ZREMRANGEBYSCORE","ZREVRANGE","ZREVRANGEBYSCORE","ZREVRANK","ZSCORE","ZUNIONSTORE","SCAN","SSCAN","HSCAN","ZSCAN"],operators:[],builtinFunctions:[],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}],[/"/,{token:"string.double",next:"@stringDouble"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],stringDouble:[[/[^"]+/,"string.double"],[/""/,"string.double"],[/"/,{token:"string.double",next:"@pop"}]],scopes:[]}}}}]); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/9923.270f0a19.chunk.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/9923.270f0a19.chunk.js.LICENSE.txt new file mode 100644 index 000000000000..a62733317c00 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/9923.270f0a19.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.48.0(0037b13fb5d186fdf1e7df51a9416a2de2b8c670) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ diff --git a/ydb/core/viewer/monitoring/static/js/main.2c02e91d.js b/ydb/core/viewer/monitoring/static/js/main.2c02e91d.js deleted file mode 100644 index de3aeba78923..000000000000 --- a/ydb/core/viewer/monitoring/static/js/main.2c02e91d.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see main.2c02e91d.js.LICENSE.txt */ -!function(){var e={87757:function(e,t,n){e.exports=n(9780)},11231:function(e,t){"use strict";function n(e){function t(t,r,o,a){var s=r?n+t+e.e+r:n+t,u=s;if(o){var l=" "+u+e.m;for(var c in o)if(o.hasOwnProperty(c)){var d=o[c];!0===d?u+=l+c:d&&(u+=l+c+i+d)}}if(void 0!==a)for(var h=0,f=(a=Array.isArray(a)?a:[a]).length;h<f;h++){var p=a[h];if(p&&"string"==typeof p.valueOf())for(var g=p.valueOf().split(" "),v=0;v<g.length;v++){var m=g[v];m!==s&&(u+=" "+m)}}return u}var n=e.n||"",i=e.v||e.m;return function(e,n){return function(i,r,o){return"string"==typeof i?"string"==typeof r||Array.isArray(r)?t(e,i,void 0,r):t(e,i,r,o):t(e,n,i,r)}}}n({e:"-",m:"_"}),t.withNaming=n},50348:function(e,t,n){"use strict";e.exports=n(11231)},97851:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.STRICT=void 0,t.STRICT=!0},6438:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_SYSTEM_DATE_FORMAT=void 0,t.DEFAULT_SYSTEM_DATE_FORMAT="YYYY-MM-DD"},61819:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(97851),t),r(n(6438),t),r(n(46445),t),r(n(72132),t)},46445:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UtcTimeZone=void 0,t.UtcTimeZone="UTC"},72132:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollatorSensitivity=void 0,t.CollatorSensitivity={ACCENT:"accent",BASE:"base",CASE:"case",VARIANT:"variant"}},60052:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isDateTime=t.dateTime=t.createUTCDateTime=t.createDateTime=void 0;var r=i(n(8047)),o=n(61819),a=n(83671);t.createDateTime=function(e,t,n){var i=t?(0,r.default)(e,t,o.STRICT):(0,r.default)(e);return n?i.tz(n):i};t.createUTCDateTime=function(e,t){return t?r.default.utc(e,t,o.STRICT):r.default.utc(e)};t.dateTime=function(e){var n=e||{},i=n.input,s=n.format,u=n.timeZone,l=n.lang,c=r.default.locale(),d=l&&c!==l;d&&r.default.locale(l);var h=(0,a.compareStrings)(u,o.UtcTimeZone,{ignoreCase:!0})?(0,t.createUTCDateTime)(i,s):(0,t.createDateTime)(i,s,u);return d&&r.default.locale(c),h};t.isDateTime=function(e){return r.default.isDayjs(e)}},25079:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(60052),t)},77956:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseDateMath=t.parse=t.isValid=void 0;var i=n(32048),r=n(25079),o=["y","Q","M","w","d","h","m","s"];function a(e,t,n){if(e){if("string"===typeof e){var o=void 0,a="",u=void 0,l=void 0;return"now"===e.substring(0,3)?(o=(0,r.dateTime)({timeZone:n}),a=e.substring("now".length)):(-1===(u=e.indexOf("||"))?(l=e,a=""):(l=e.substring(0,u),a=e.substring(u+2)),o=(0,r.dateTime)({input:l})),a.length?s(a,o,t):o}return(0,r.isDateTime)(e)?e:(0,i.isDate)(e)?(0,r.dateTime)({input:e}):void 0}}function s(e,t,n){for(var r=e.replace(/\s/g,""),a=t,s=0,u=r.length;s<u;){var l=r.charAt(s++),c=void 0,d=void 0;if("/"===l)c=0;else if("+"===l)c=1;else{if("-"!==l)return;c=2}if(isNaN(parseInt(r.charAt(s),10)))d=1;else if(2===r.length)d=r.charAt(s);else{for(var h=s;!isNaN(parseInt(r.charAt(s),10));)if(++s>10)return;d=parseInt(r.substring(h,s),10)}if(0===c&&1!==d)return;var f=r.charAt(s++);if(!(0,i.includes)(o,f))return;0===c?a=n?a.endOf(f):a.startOf(f):1===c?a=a.add(d,f):2===c&&(a=a.subtract(d,f))}return a}t.isValid=function(e){var t=a(e);return!!t&&(!!(0,r.isDateTime)(t)&&t.isValid())},t.parse=a,t.parseDateMath=s},42259:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(77956),t)},8047:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},r=i(n(99517)),o=i(n(72547)),a=i(n(51235)),s=i(n(28699)),u=i(n(27369)),l=i(n(51277)),c=i(n(51714)),d=i(n(63540)),h=i(n(18272)),f=i(n(79748)),p=i(n(14230));r.default.extend(o.default),r.default.extend(a.default),r.default.extend(s.default),r.default.extend(l.default),r.default.extend(c.default),r.default.extend(d.default),r.default.extend(h.default),r.default.extend(f.default),r.default.extend(p.default),r.default.extend(u.default),e.exports=r.default},7406:function(e,t,n){"use strict";t.J=void 0;var i=n(25079);var r=n(42259);var o=n(10969);Object.defineProperty(t,"J",{enumerable:!0,get:function(){return o.dateTimeParse}});var a=n(23464);var s=n(6706)},10969:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(56729),t)},56729:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.dateTimeParse=void 0;var r=i(n(8047)),o=n(25079),a=n(42259);t.dateTimeParse=function(e,t){if(e){r.default.tz.setDefault(null===t||void 0===t?void 0:t.timeZone);var n=function(e,t){var n;if("string"===typeof e&&-1!==e.indexOf("now")){var i=null===(n=null===t||void 0===t?void 0:t.allowRelative)||void 0===n||n;if(!(0,a.isValid)(e)||!i)return;return(0,a.parse)(e,null===t||void 0===t?void 0:t.roundUp,null===t||void 0===t?void 0:t.timeZone)}var r=t||{},s=r.format,u=r.lang,l=(0,o.dateTime)({input:e,format:s,lang:u,timeZone:null===t||void 0===t?void 0:t.timeZone});return l.isValid()?l:void 0}(e,t);return r.default.tz.setDefault(),n}}},6706:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(28170),t)},28170:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},r=this&&this.__generator||function(e,t){var n,i,r,o,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"===typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(u){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(a=0)),a;)try{if(n=1,i&&(r=2&s[0]?i.return:s[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,s[1])).done)return r;switch(i=0,r&&(s=[2&s[0],r.value]),s[0]){case 0:case 1:r=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,i=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]<r[3])){a.label=s[1];break}if(6===s[0]&&a.label<r[1]){a.label=r[1],r=s;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(s);break}r[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(u){s=[6,u],i=0}finally{n=r=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,u])}}},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.settings=void 0;var a=o(n(8047)),s=function(){function e(){this.loadedLocales=new Set(["en"]),this.updateLocale({weekStart:1})}return e.prototype.loadLocale=function(e){return i(this,void 0,void 0,(function(){var t;return r(this,(function(i){switch(i.label){case 0:if(this.isLocaleLoaded(e))return[3,4];i.label=1;case 1:return i.trys.push([1,3,,4]),t=e.toLocaleLowerCase(),[4,n(36817)("./".concat(t,".js"))];case 2:return i.sent(),this.loadedLocales.add(t),[3,4];case 3:throw i.sent(),new Error("Can't load locale \"".concat(e,'". Either it does not exist, or there was a connection problem. Check the dayjs locations list: https://github.com/iamkun/dayjs/tree/dev/src/locale'));case 4:return[2]}}))}))},e.prototype.getLocale=function(){return a.default.locale()},e.prototype.setLocale=function(e){if(!this.isLocaleLoaded(e))throw new Error('Seems you are trying to set an unloaded locale "'.concat(e,"\". Load it first by calling settings.loadLocale('").concat(e,"'). Check the dayjs locations list: https://github.com/iamkun/dayjs/tree/dev/src/locale"));a.default.locale(e)},e.prototype.updateLocale=function(e){var t=this.getLocale();a.default.updateLocale(t,e)},e.prototype.isLocaleLoaded=function(e){var t=e.toLocaleLowerCase();return this.loadedLocales.has(t)},e}();t.settings=new s},23464:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(20425),t)},20425:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getTimeZonesList=t.guessUserTimeZone=t.getTimeZone=void 0;var r=i(n(8047)),o=n(61819);t.getTimeZone=function(e){var t;return null!==(t=null===e||void 0===e?void 0:e.timeZone)&&void 0!==t?t:o.UtcTimeZone};t.guessUserTimeZone=function(){return r.default.tz.guess()};t.getTimeZonesList=function(){var e;return(null===(e=Intl.supportedValuesOf)||void 0===e?void 0:e.call(Intl,"timeZone"))||[]}},83671:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(84078),t)},84078:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compareStrings=void 0;var i=n(61819);t.compareStrings=function(e,t,n){if(void 0===n&&(n={}),"string"!==typeof e||"string"!==typeof t)return!1;var r,o=n.ignoreCase;"boolean"===typeof o&&(r={sensitivity:o?i.CollatorSensitivity.BASE:i.CollatorSensitivity.CASE});return 0===e.localeCompare(t,void 0,r)}},96434:function(e,t,n){"use strict";var i=n(4519);t.Z=function(e){return i.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),i.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M13.5 8a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0Zm-3.9-1.55a.75.75 0 1 0-1.2-.9L7.419 8.858 6.03 7.47a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.13-.08l3-4Z",clipRule:"evenodd"}))}},72697:function(e,t,n){"use strict";var i=n(4519);t.Z=function(e){return i.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),i.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 13.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11ZM8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm-.25 3a.75.75 0 0 0-1.5 0V11a.75.75 0 0 0 1.5 0V8.5Z",clipRule:"evenodd"}))}},15557:function(e,t,n){"use strict";var i=n(4519);t.Z=function(e){return i.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),i.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"m7.835 6 .76-2.027L9.336 2H5.5a.716.716 0 0 0-.664.45L2.513 8.257a.177.177 0 0 0 .164.243h4.965l-.732 2.013-1.082 2.975a.382.382 0 0 0 .637.392l6.956-7.391A.29.29 0 0 0 13.21 6H7.835Zm1.558-4.154ZM10.563 3l.235-.627A1.386 1.386 0 0 0 9.5.5h-4c-.906 0-1.72.552-2.057 1.393L1.12 7.7A1.677 1.677 0 0 0 2.677 10H5.5l-.545 1.5-.537 1.475a1.882 1.882 0 0 0 3.14 1.933l6.956-7.391A1.79 1.79 0 0 0 13.21 4.5H10l.563-1.5Z",clipRule:"evenodd"}))}},82024:function(e,t,n){"use strict";var i=n(4519);t.Z=function(e){return i.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),i.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M7.134 2.994 2.217 11.5a1 1 0 0 0 .866 1.5h9.834a1 1 0 0 0 .866-1.5L8.866 2.993a1 1 0 0 0-1.732 0Zm3.03-.75c-.962-1.665-3.366-1.665-4.328 0L.919 10.749c-.964 1.666.239 3.751 2.164 3.751h9.834c1.925 0 3.128-2.085 2.164-3.751l-4.917-8.505ZM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2A.75.75 0 0 1 8 5Zm1 5.75a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z",clipRule:"evenodd"}))}},84480:function(e,t,n){"use strict";var i=n(4519);t.Z=function(e){return i.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),i.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M3.47 3.47a.75.75 0 0 1 1.06 0L8 6.94l3.47-3.47a.75.75 0 1 1 1.06 1.06L9.06 8l3.47 3.47a.75.75 0 1 1-1.06 1.06L8 9.06l-3.47 3.47a.75.75 0 0 1-1.06-1.06L6.94 8 3.47 4.53a.75.75 0 0 1 0-1.06Z",clipRule:"evenodd"}))}},31853:function(e,t,n){"use strict";n.d(t,{b:function(){return r}});var i=n(50348);(0,i.withNaming)({e:"__",m:"_"});var r=(0,i.withNaming)({n:"gn-",e:"__",m:"_"})},95234:function(e,t,n){"use strict";n.d(t,{d:function(){return V}});var i="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:"undefined"!==typeof self?self:{};var r=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},o="object"==typeof i&&i&&i.Object===Object&&i,a="object"==typeof self&&self&&self.Object===Object&&self,s=o||a||Function("return this")(),u=s,l=function(){return u.Date.now()},c=/\s/;var d=function(e){for(var t=e.length;t--&&c.test(e.charAt(t)););return t},h=/^\s+/;var f=function(e){return e?e.slice(0,d(e)+1).replace(h,""):e},p=s.Symbol,g=p,v=Object.prototype,m=v.hasOwnProperty,_=v.toString,y=g?g.toStringTag:void 0;var b=function(e){var t=m.call(e,y),n=e[y];try{e[y]=void 0;var i=!0}catch(o){}var r=_.call(e);return i&&(t?e[y]=n:delete e[y]),r},w=Object.prototype.toString;var C=b,k=function(e){return w.call(e)},S="[object Null]",x="[object Undefined]",L=p?p.toStringTag:void 0;var E=function(e){return null==e?void 0===e?x:S:L&&L in Object(e)?C(e):k(e)},D=function(e){return null!=e&&"object"==typeof e},N="[object Symbol]";var M=f,T=r,I=function(e){return"symbol"==typeof e||D(e)&&E(e)==N},O=NaN,A=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,P=/^0o[0-7]+$/i,Z=parseInt;var F=r,j=l,H=function(e){if("number"==typeof e)return e;if(I(e))return O;if(T(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=T(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=M(e);var n=R.test(e);return n||P.test(e)?Z(e.slice(2),n?2:8):A.test(e)?O:+e},B="Expected a function",z=Math.max,W=Math.min;var V=function(e,t,n){var i,r,o,a,s,u,l=0,c=!1,d=!1,h=!0;if("function"!=typeof e)throw new TypeError(B);function f(t){var n=i,o=r;return i=r=void 0,l=t,a=e.apply(o,n)}function p(e){var n=e-u;return void 0===u||n>=t||n<0||d&&e-l>=o}function g(){var e=j();if(p(e))return v(e);s=setTimeout(g,function(e){var n=t-(e-u);return d?W(n,o-(e-l)):n}(e))}function v(e){return s=void 0,h&&i?f(e):(i=r=void 0,a)}function m(){var e=j(),n=p(e);if(i=arguments,r=this,u=e,n){if(void 0===s)return function(e){return l=e,s=setTimeout(g,t),c?f(e):a}(u);if(d)return clearTimeout(s),s=setTimeout(g,t),f(u)}return void 0===s&&(s=setTimeout(g,t)),a}return t=H(t)||0,F(n)&&(c=!!n.leading,o=(d="maxWait"in n)?z(H(n.maxWait)||0,t):o,h="trailing"in n?!!n.trailing:h),m.cancel=function(){void 0!==s&&clearTimeout(s),l=0,i=u=r=s=void 0},m.flush=function(){return void 0===s?a:v(j())},m}},44591:function(e,t,n){"use strict";n.d(t,{b:function(){return i}});var i=(0,n(31853).b)("aside-header")},13649:function(e,t,n){"use strict";var i=n(22710),r={"text/plain":"Text","text/html":"Url",default:"Text"},o="Copy to clipboard: #{key}, Enter";e.exports=function(e,t){var n,a,s,u,l,c,d=!1;t||(t={}),n=t.debug||!1;try{if(s=i(),u=document.createRange(),l=document.getSelection(),(c=document.createElement("span")).textContent=e,c.style.all="unset",c.style.position="fixed",c.style.top=0,c.style.clip="rect(0, 0, 0, 0)",c.style.whiteSpace="pre",c.style.webkitUserSelect="text",c.style.MozUserSelect="text",c.style.msUserSelect="text",c.style.userSelect="text",c.addEventListener("copy",(function(i){if(i.stopPropagation(),t.format)if(i.preventDefault(),"undefined"===typeof i.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=r[t.format]||r.default;window.clipboardData.setData(o,e)}else i.clipboardData.clearData(),i.clipboardData.setData(t.format,e);t.onCopy&&(i.preventDefault(),t.onCopy(i.clipboardData))})),document.body.appendChild(c),u.selectNodeContents(c),l.addRange(u),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");d=!0}catch(h){n&&console.error("unable to copy using execCommand: ",h),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(h){n&&console.error("unable to copy using clipboardData: ",h),n&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:o),window.prompt(a,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(u):l.removeAllRanges()),c&&document.body.removeChild(c),s()}return d}},39779:function(e,t,n){var i,r,o;"undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self&&self,r=[n(91386),n(4519)],i=function(t,n){"use strict";var i,r;function o(){if("function"!==typeof WeakMap)return null;var e=new WeakMap;return o=function(){return e},e}function a(e){if(e&&e.__esModule)return e;if(null===e||"object"!==u(e)&&"function"!==typeof e)return{default:e};var t=o();if(t&&t.has(e))return t.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){var a=i?Object.getOwnPropertyDescriptor(e,r):null;a&&(a.get||a.set)?Object.defineProperty(n,r,a):n[r]=e[r]}return n.default=e,t&&t.set(e,n),n}function s(e){return e&&e.__esModule?e:{default:e}}function u(e){return u="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function d(e,t,n){return t&&c(e.prototype,t),n&&c(e,n),e}function h(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}function f(e,t){return f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},f(e,t)}function p(e){var t=m();return function(){var n,i=_(e);if(t){var r=_(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return g(this,n)}}function g(e,t){return!t||"object"!==u(t)&&"function"!==typeof t?v(e):t}function v(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function _(e){return _=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},_(e)}function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?y(Object(n),!0).forEach((function(t){w(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}t=s(t),n=a(n);var C={x:"clientWidth",y:"clientHeight"},k={x:"clientTop",y:"clientLeft"},S={x:"innerWidth",y:"innerHeight"},x={x:"offsetWidth",y:"offsetHeight"},L={x:"offsetLeft",y:"offsetTop"},E={x:"overflowX",y:"overflowY"},D={x:"scrollWidth",y:"scrollHeight"},N={x:"scrollLeft",y:"scrollTop"},M={x:"width",y:"height"},T=function(){},I=!!function(){if("undefined"===typeof window)return!1;var e=!1;try{document.createElement("div").addEventListener("test",T,{get passive(){return e=!0,!1}})}catch(t){}return e}()&&{passive:!0},O="ReactList failed to reach a stable state.",A=40,R=function(e,t){for(var n in t)if(e[n]!==t[n])return!1;return!0},P=function(e){for(var t=e.props.axis,n=e.getEl(),i=E[t];n=n.parentElement;)switch(window.getComputedStyle(n)[i]){case"auto":case"scroll":case"overlay":return n}return window},Z=function(e){var t=e.props.axis,n=e.scrollParent;return n===window?window[S[t]]:n[C[t]]},F=function(e,t){var n=e.length,i=e.minSize,r=e.type,o=t.from,a=t.size,s=t.itemsPerRow,u=(a=Math.max(a,i))%s;return u&&(a+=s-u),a>n&&(a=n),(u=(o="simple"!==r&&o?Math.max(Math.min(o,n-a),0):0)%s)&&(o-=u,a+=u),o===t.from&&a==t.size?t:b(b({},t),{},{from:o,size:a})};e.exports=(r=i=function(e){h(i,e);var t=p(i);function i(e){var n;return l(this,i),(n=t.call(this,e)).state=F(e,{itemsPerRow:1,from:e.initialIndex,size:0}),n.cache={},n.cachedScrollPosition=null,n.prevPrevState={},n.unstable=!1,n.updateCounter=0,n}return d(i,null,[{key:"getDerivedStateFromProps",value:function(e,t){var n=F(e,t);return n===t?null:n}}]),d(i,[{key:"componentDidMount",value:function(){this.updateFrameAndClearCache=this.updateFrameAndClearCache.bind(this),window.addEventListener("resize",this.updateFrameAndClearCache),this.updateFrame(this.scrollTo.bind(this,this.props.initialIndex))}},{key:"componentDidUpdate",value:function(e){var t=this;if(this.props.axis!==e.axis&&this.clearSizeCache(),!this.unstable){if(++this.updateCounter>A)return this.unstable=!0,console.error(O);this.updateCounterTimeoutId||(this.updateCounterTimeoutId=setTimeout((function(){t.updateCounter=0,delete t.updateCounterTimeoutId}),0)),this.updateFrame()}}},{key:"maybeSetState",value:function(e,t){if(R(this.state,e))return t();this.setState(e,t)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.updateFrameAndClearCache),this.scrollParent.removeEventListener("scroll",this.updateFrameAndClearCache,I),this.scrollParent.removeEventListener("mousewheel",T,I)}},{key:"getOffset",value:function(e){var t=this.props.axis,n=e[k[t]]||0,i=L[t];do{n+=e[i]||0}while(e=e.offsetParent);return n}},{key:"getEl",value:function(){return this.el||this.items}},{key:"getScrollPosition",value:function(){if("number"===typeof this.cachedScrollPosition)return this.cachedScrollPosition;var e=this.scrollParent,t=this.props.axis,n=N[t],i=e===window?document.body[n]||document.documentElement[n]:e[n],r=this.getScrollSize()-this.props.scrollParentViewportSizeGetter(this),o=Math.max(0,Math.min(i,r)),a=this.getEl();return this.cachedScrollPosition=this.getOffset(e)+o-this.getOffset(a),this.cachedScrollPosition}},{key:"setScroll",value:function(e){var t=this.scrollParent,n=this.props.axis;if(e+=this.getOffset(this.getEl()),t===window)return window.scrollTo(0,e);e-=this.getOffset(this.scrollParent),t[N[n]]=e}},{key:"getScrollSize",value:function(){var e=this.scrollParent,t=document,n=t.body,i=t.documentElement,r=D[this.props.axis];return e===window?Math.max(n[r],i[r]):e[r]}},{key:"hasDeterminateSize",value:function(){var e=this.props,t=e.itemSizeGetter;return"uniform"===e.type||t}},{key:"getStartAndEnd",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.threshold,t=this.getScrollPosition(),n=Math.max(0,t-e),i=t+this.props.scrollParentViewportSizeGetter(this)+e;return this.hasDeterminateSize()&&(i=Math.min(i,this.getSpaceBefore(this.props.length))),{start:n,end:i}}},{key:"getItemSizeAndItemsPerRow",value:function(){var e=this.props,t=e.axis,n=e.useStaticSize,i=this.state,r=i.itemSize,o=i.itemsPerRow;if(n&&r&&o)return{itemSize:r,itemsPerRow:o};var a=this.items.children;if(!a.length)return{};var s=a[0],u=s[x[t]],l=Math.abs(u-r);if((isNaN(l)||l>=1)&&(r=u),!r)return{};for(var c=L[t],d=s[c],h=a[o=1];h&&h[c]===d;h=a[o])++o;return{itemSize:r,itemsPerRow:o}}},{key:"clearSizeCache",value:function(){this.cachedScrollPosition=null}},{key:"updateFrameAndClearCache",value:function(e){return this.clearSizeCache(),this.updateFrame(e)}},{key:"updateFrame",value:function(e){switch(this.updateScrollParent(),"function"!=typeof e&&(e=T),this.props.type){case"simple":return this.updateSimpleFrame(e);case"variable":return this.updateVariableFrame(e);case"uniform":return this.updateUniformFrame(e)}}},{key:"updateScrollParent",value:function(){var e=this.scrollParent;this.scrollParent=this.props.scrollParentGetter(this),e!==this.scrollParent&&(e&&(e.removeEventListener("scroll",this.updateFrameAndClearCache),e.removeEventListener("mousewheel",T)),this.clearSizeCache(),this.scrollParent.addEventListener("scroll",this.updateFrameAndClearCache,I),this.scrollParent.addEventListener("mousewheel",T,I))}},{key:"updateSimpleFrame",value:function(e){var t=this.getStartAndEnd().end,n=this.items.children,i=0;if(n.length){var r=this.props.axis,o=n[0],a=n[n.length-1];i=this.getOffset(a)+a[x[r]]-this.getOffset(o)}if(i>t)return e();var s=this.props,u=s.pageSize,l=s.length,c=Math.min(this.state.size+u,l);this.maybeSetState({size:c},e)}},{key:"updateVariableFrame",value:function(e){this.props.itemSizeGetter||this.cacheSizes();for(var t=this.getStartAndEnd(),n=t.start,i=t.end,r=this.props,o=r.length,a=r.pageSize,s=0,u=0,l=0,c=o-1;u<c;){var d=this.getSizeOfItem(u);if(null==d||s+d>n)break;s+=d,++u}for(var h=o-u;l<h&&s<i;){var f=this.getSizeOfItem(u+l);if(null==f){l=Math.min(l+a,h);break}s+=f,++l}this.maybeSetState(F(this.props,{from:u,itemsPerRow:1,size:l}),e)}},{key:"updateUniformFrame",value:function(e){var t=this.getItemSizeAndItemsPerRow(),n=t.itemSize,i=t.itemsPerRow;if(!n||!i)return e();var r=this.getStartAndEnd(),o=r.start,a=r.end,s=F(this.props,{from:Math.floor(o/n)*i,size:(Math.ceil((a-o)/n)+1)*i,itemsPerRow:i}),u=s.from,l=s.size;return this.maybeSetState({itemsPerRow:i,from:u,itemSize:n,size:l},e)}},{key:"getSpaceBefore",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null!=t[e])return t[e];var n=this.state,i=n.itemSize,r=n.itemsPerRow;if(i)return t[e]=Math.floor(e/r)*i;for(var o=e;o>0&&null==t[--o];);for(var a=t[o]||0,s=o;s<e;++s){t[s]=a;var u=this.getSizeOfItem(s);if(null==u)break;a+=u}return t[e]=a}},{key:"cacheSizes",value:function(){for(var e=this.cache,t=this.state.from,n=this.items.children,i=x[this.props.axis],r=0,o=n.length;r<o;++r)e[t+r]=n[r][i]}},{key:"getSizeOfItem",value:function(e){var t=this.cache,n=this.items,i=this.props,r=i.axis,o=i.itemSizeGetter,a=i.itemSizeEstimator,s=i.type,u=this.state,l=u.from,c=u.itemSize,d=u.size;if(c)return c;if(o)return o(e);if(e in t)return t[e];if("simple"===s&&e>=l&&e<l+d&&n){var h=n.children[e-l];if(h)return h[x[r]]}return a?a(e,t):void 0}},{key:"scrollTo",value:function(e){null!=e&&this.setScroll(this.getSpaceBefore(e))}},{key:"scrollAround",value:function(e){var t=this.getScrollPosition(),n=this.getSpaceBefore(e),i=n-this.props.scrollParentViewportSizeGetter(this)+this.getSizeOfItem(e),r=Math.min(i,n),o=Math.max(i,n);return t<=r?this.setScroll(r):t>o?this.setScroll(o):void 0}},{key:"getVisibleRange",value:function(){for(var e,t,n=this.state,i=n.from,r=n.size,o=this.getStartAndEnd(0),a=o.start,s=o.end,u={},l=i;l<i+r;++l){var c=this.getSpaceBefore(l,u),d=c+this.getSizeOfItem(l);null==e&&d>a&&(e=l),null!=e&&c<s&&(t=l)}return[e,t]}},{key:"renderItems",value:function(){for(var e=this,t=this.props,n=t.itemRenderer,i=t.itemsRenderer,r=this.state,o=r.from,a=r.size,s=[],u=0;u<a;++u)s.push(n(o+u,u));return i(s,(function(t){return e.items=t}))}},{key:"render",value:function(){var e=this,t=this.props,i=t.axis,r=t.length,o=t.type,a=t.useTranslate3d,s=this.state,u=s.from,l=s.itemsPerRow,c=this.renderItems();if("simple"===o)return c;var d={position:"relative"},h={},f=Math.ceil(r/l)*l,p=this.getSpaceBefore(f,h);p&&(d[M[i]]=p,"x"===i&&(d.overflowX="hidden"));var g=this.getSpaceBefore(u,h),v="x"===i?g:0,m="y"===i?g:0,_=a?"translate3d(".concat(v,"px, ").concat(m,"px, 0)"):"translate(".concat(v,"px, ").concat(m,"px)"),y={msTransform:_,WebkitTransform:_,transform:_};return n.default.createElement("div",{style:d,ref:function(t){return e.el=t}},n.default.createElement("div",{style:y},c))}}]),i}(n.Component),w(i,"displayName","ReactList"),w(i,"propTypes",{axis:t.default.oneOf(["x","y"]),initialIndex:t.default.number,itemRenderer:t.default.func,itemSizeEstimator:t.default.func,itemSizeGetter:t.default.func,itemsRenderer:t.default.func,length:t.default.number,minSize:t.default.number,pageSize:t.default.number,scrollParentGetter:t.default.func,scrollParentViewportSizeGetter:t.default.func,threshold:t.default.number,type:t.default.oneOf(["simple","variable","uniform"]),useStaticSize:t.default.bool,useTranslate3d:t.default.bool}),w(i,"defaultProps",{axis:"y",itemRenderer:function(e,t){return n.default.createElement("div",{key:t},e)},itemsRenderer:function(e,t){return n.default.createElement("div",{ref:t},e)},length:0,minSize:1,pageSize:10,scrollParentGetter:P,scrollParentViewportSizeGetter:Z,threshold:100,type:"simple",useStaticSize:!1,useTranslate3d:!1}),r)},void 0===(o="function"===typeof i?i.apply(t,r):i)||(e.exports=o)},20970:function(e,t,n){"use strict";n.d(t,{z:function(){return f}});var i=n(37762),r=n(4519),o=n(67119),a=n(32711),s=n(24237),u=n(74601),l=(0,o.Ge)("button"),c=function(e){var t=e.side,n=e.className,i=e.children;return r.createElement("span",{className:l("icon",{side:t},n)},r.createElement("span",{className:l("icon-inner")},i))};c.displayName="Button.Icon";var d=(0,o.Ge)("button"),h=r.forwardRef((function(e,t){var n=e.view,i=void 0===n?"normal":n,o=e.size,a=void 0===o?"m":o,u=e.pin,l=void 0===u?"round-round":u,c=e.selected,h=e.disabled,f=void 0!==h&&h,p=e.loading,v=void 0!==p&&p,m=e.width,_=e.title,y=e.tabIndex,b=e.type,w=void 0===b?"button":b,C=e.component,k=e.href,S=e.target,x=e.rel,L=e.extraProps,E=e.onClick,D=e.onMouseEnter,N=e.onMouseLeave,M=e.onFocus,T=e.onBlur,I=e.children,O=e.id,A=e.style,R=e.className,P=e.qa,Z={title:_,tabIndex:y,onClick:E,onClickCapture:r.useCallback((function(e){s.P.publish({componentId:"Button",eventId:"click",domEvent:e,meta:{content:e.currentTarget.textContent,view:i}})}),[i]),onMouseEnter:D,onMouseLeave:N,onFocus:M,onBlur:T,id:O,style:A,className:d({view:i,size:a,pin:l,selected:c,disabled:f||v,loading:v,width:m},R),"data-qa":P};if("string"===typeof k||C){var F={href:k,target:S,rel:"_blank"!==S||x?x:"noopener noreferrer"};return r.createElement(C||"a",Object.assign(Object.assign(Object.assign(Object.assign({},L),Z),C?{}:F),{ref:t,"aria-disabled":f||v}),g(I))}return r.createElement("button",Object.assign({},L,Z,{ref:t,type:w,disabled:f||v,"aria-pressed":c}),g(I))}));h.displayName="Button";var f=Object.assign(h,{Icon:c}),p=(0,u.s)(c);function g(e){var t=r.Children.toArray(e);if(1===t.length){var n=t[0];return p(n)?n:(0,a.y)(n)?r.createElement(f.Icon,{key:"icon"},n):r.createElement("span",{key:"text",className:d("text")},n)}var o,s,u,l,c=[],h=(0,i.Z)(t);try{for(h.s();!(l=h.n()).done;){var g=l.value,v=(0,a.y)(g),m=p(g);if(v||m)if(o||0!==c.length){if(!s&&0!==c.length){var _="right";s=v?r.createElement(f.Icon,{key:"icon-right",side:_},g):r.cloneElement(g,{side:_})}}else{var y="left";o=v?r.createElement(f.Icon,{key:"icon-left",side:y},g):r.cloneElement(g,{side:y})}else c.push(g)}}catch(b){h.e(b)}finally{h.f()}return c.length>0&&(u=r.createElement("span",{key:"text",className:d("text")},c)),[o,s,u]}},88216:function(e,t,n){"use strict";n.d(t,{J:function(){return l}});var i=n(4519),r=n(67119),o=n(93453);function a(e){return"object"===typeof e}function s(e){return"string"===typeof e}var u=(0,r.Ge)("icon"),l=i.forwardRef((function(e,t){var n,r,c,d=e.data,h=e.width,f=e.height,p=e.size,g=e.className,v=e.fill,m=void 0===v?"currentColor":v,_=e.stroke,y=void 0===_?"none":_,b=e.qa;if(p&&(n=p,r=p),h&&(n=h),f&&(r=f),a(d))c=d.viewBox;else if(s(d))c=function(e){var t=e.match(/viewBox=(["']?)([\d\s,-]+)\1/);return t?t[2]:void 0}(d);else if(function(e){return"object"===typeof e&&"defaultProps"in e}(d))c=d.defaultProps.viewBox;else if(function(e){return"function"===typeof e&&(!e.prototype||!e.prototype.render)}(d)){var w=d({});w&&(c=w.props.viewBox)}if(c&&(!n||!r)){var C=c.split(/\s+|\s*,\s*/);n||(n=C[2]),r||(r=C[3])}var k=Object.assign({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:n,height:r,className:u(null,g),fill:m,stroke:y,"data-qa":b},o.i);if(s(d)){var S=function(e){return e.replace(/<svg[^>]*>/,(function(e){return e.replace(/(width|height)=(["']?)\d+\2/g,"").replace(/(\s){2,}\b/g,"$1").replace(/(\s)+>/g,">")}))}(d);return i.createElement("svg",Object.assign({},k,{ref:t,dangerouslySetInnerHTML:{__html:S}}))}if(a(d)){var x=l.prefix+(d.url||"#".concat(d.id));return i.createElement("svg",Object.assign({},k,{viewBox:c,ref:t}),i.createElement("use",{href:x,xlinkHref:x}))}var L=d;return L.defaultProps&&(L.defaultProps.width=L.defaultProps.height=void 0),i.createElement("svg",Object.assign({},k,{ref:t}),i.createElement(L,{width:void 0,height:void 0}))}));l.displayName="Icon",l.prefix=""},92673:function(e,t,n){"use strict";n.d(t,{x:function(){return u}});var i=n(59833),r=n(4519),o=n(12490),a=(0,n(67119).Ge)("text"),s=function(e,t){var n=e.variant,i=void 0===n?"body-1":n,r=e.ellipsis,o=e.whiteSpace,s=e.wordBreak;return a({variant:i,ellipsis:r,ws:o,wb:s},t)},u=r.forwardRef((function(e,t){var n=e.as,a=e.children,u=e.variant,l=e.className,c=e.ellipsis,d=e.color,h=e.whiteSpace,f=e.wordBreak,p=e.qa,g=(0,i._T)(e,["as","children","variant","className","ellipsis","color","whiteSpace","wordBreak","qa"]),v=n||"span";return r.createElement(v,Object.assign({ref:t,className:s({variant:u,ellipsis:c,whiteSpace:h,wordBreak:f},d?(0,o.V)({color:d},l):l),"data-qa":p},g),a)}));u.displayName="Text"},12490:function(e,t,n){"use strict";n.d(t,{V:function(){return r}});var i=(0,n(67119).Ge)("color-text"),r=function(e,t){var n=e.color;return i({color:n},t)}},11598:function(e,t,n){"use strict";n.d(t,{k:function(){return c}});var i=n(59833),r=n(4519),o=n(67119),a=n(52729),s=r.createContext({theme:a.A,activeMediaQuery:"s"}),u=n(4452),l=(0,o.Ge)("flex"),c=r.forwardRef((function(e,t){var n=e.as,o=void 0===n?"div":n,a=e.direction,c=e.width,d=e.grow,h=e.basis,f=e.children,p=e.style,g=e.alignContent,v=e.alignItems,m=e.alignSelf,_=e.justifyContent,y=e.justifyItems,b=e.justifySelf,w=e.shrink,C=e.wrap,k=e.inline,S=e.title,x=e.gap,L=e.gapRow,E=e.className,D=e.space,N=e.qa,M=(0,i._T)(e,["as","direction","width","grow","basis","children","style","alignContent","alignItems","alignSelf","justifyContent","justifyItems","justifySelf","shrink","wrap","inline","title","gap","gapRow","className","space","qa"]),T=function(){var e=r.useContext(s),t=e.activeMediaQuery,n=e.theme,i=r.useMemo((function(){return{isMediaActive:(0,u.ur)(t),getClosestMediaProps:(0,u.GD)(t)}}),[t]),o=i.isMediaActive,a=i.getClosestMediaProps;return{theme:n,activeMediaQuery:t,isMediaActive:o,getClosestMediaProps:a}}(),I=T.getClosestMediaProps,O=T.theme.spaceBaseSize,A=function(e){return"object"===typeof e&&null!==e?I(e):e},R=A(x),P=R?O*Number(R):void 0,Z=A(L)||R,F=Z?O*Number(Z):void 0,j=A(D),H=x||L||!j?void 0:(0,u.cA)(j);return r.createElement(o,Object.assign({className:l({inline:k,s:H},E),style:Object.assign({width:c,flexDirection:A(a),flexGrow:!0===d?1:d,flexWrap:!0===C?"wrap":C,flexBasis:h,flexShrink:w,columnGap:P,rowGap:F,alignContent:A(g),alignItems:A(v),alignSelf:A(m),justifyContent:A(_),justifyItems:A(y),justifySelf:A(b)},p),title:S,ref:t,"data-qa":N},M),D?r.Children.map(f,(function(e){return e?r.createElement("div",{className:l("wr")},e):e})):f)}))},52729:function(e,t,n){"use strict";n.d(t,{A:function(){return r},Q:function(){return i}});var i={.5:"half"},r={breakpoints:{s:576,m:768,l:1080,xl:1200,xxl:1400,xxxl:1920},spaceBaseSize:4,components:{container:{gutters:"3",media:{l:{gutters:"5"}}}}}},4452:function(e,t,n){"use strict";n.d(t,{GD:function(){return s},cA:function(){return u},ur:function(){return o}});var i=n(52729),r={s:0,m:1,l:2,xl:3,xxl:4,xxxl:5},o=function(e){return function(t){return e in r&&r[e]-r[t]>=0}},a=["s","m","l","xl","xxl","xxxl"],s=function(e){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e)for(var n=e;n;){if(t[n])return t[n];n=a[r[n]-1]}}},u=function(e){return e in i.Q?i.Q[e]:String(e)}},67119:function(e,t,n){"use strict";n.d(t,{A7:function(){return r},B_:function(){return s},Ge:function(){return a},Ui:function(){return u},bJ:function(){return o}});var i=n(50348),r="yc-",o="g-",a=((0,i.withNaming)({e:"__",m:"_"}),(0,i.withNaming)({n:r,e:"__",m:"_"})),s=(0,i.withNaming)({n:o,e:"__",m:"_"});function u(e){return e.split(/\s(.*)/)[1]}},32711:function(e,t,n){"use strict";n.d(t,{x:function(){return s},y:function(){return u}});var i=n(88216),r=n(67119),o=n(74601),a=1;function s(){return"".concat(r.A7,"uniq-").concat(a++)}var u=(0,o.s)(i.J)},24237:function(e,t,n){"use strict";n.d(t,{P:function(){return s}});var i=n(15671),r=n(43144),o=n(59833),a=n(67119),s=new(function(){function e(t){(0,i.Z)(this,e),this.subscriptions=[],this.componentPrefix=t}return(0,r.Z)(e,[{key:"subscribe",value:function(e){this.subscriptions.push(e)}},{key:"unsubscribe",value:function(e){var t=this.subscriptions.indexOf(e);t>-1&&this.subscriptions.splice(t,1)}},{key:"publish",value:function(e){var t=this,n=e.componentId,i=(0,o._T)(e,["componentId"]);this.subscriptions.forEach((function(e){return e(Object.assign(Object.assign({},i),{componentId:t.componentPrefix?"".concat(t.componentPrefix).concat(n):n}))}))}},{key:"withEventPublisher",value:function(e,t){var n=this;return function(i){n.publish(Object.assign(Object.assign({},i),{componentId:e,qa:t}))}}}]),e}())(a.A7)},74601:function(e,t,n){"use strict";n.d(t,{s:function(){return r}});var i=n(4519);function r(e){return function(t){if(!i.isValidElement(t))return!1;var n=t.type;return n===i.Component||n.displayName===e.displayName}}},93453:function(e,t,n){"use strict";n.d(t,{i:function(){return i}});var i={"aria-hidden":!0}},30590:function(e,t,n){"use strict";n.d(t,{V:function(){return i}});var i={BACKSPACE:"Backspace",ENTER:"Enter",TAB:"Tab",SPACEBAR:" ",SPACEBAR_OLD:"Spacebar",ESCAPE:"Escape",ARROW_UP:"ArrowUp",ARROW_DOWN:"ArrowDown"}},133:function(e,t,n){"use strict";n.d(t,{b:function(){return o}});var i=n(4519),r=n(30590);function o(e){return{onKeyDown:i.useCallback((function(t){e&&[r.V.ENTER,r.V.SPACEBAR,r.V.SPACEBAR_OLD].includes(t.key)&&e(t)}),[e])}}},7572:function(e,t,n){var i=n(46076)(n(3650),"DataView");e.exports=i},41895:function(e,t,n){var i=n(22426),r=n(5096),o=n(14190),a=n(5911),s=n(25570);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}u.prototype.clear=i,u.prototype.delete=r,u.prototype.get=o,u.prototype.has=a,u.prototype.set=s,e.exports=u},72953:function(e,t,n){var i=n(19792),r=n(38240),o=n(96033),a=n(87333),s=n(45460);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}u.prototype.clear=i,u.prototype.delete=r,u.prototype.get=o,u.prototype.has=a,u.prototype.set=s,e.exports=u},23301:function(e,t,n){var i=n(46076)(n(3650),"Map");e.exports=i},69121:function(e,t,n){var i=n(32388),r=n(2871),o=n(38006),a=n(98281),s=n(31831);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}u.prototype.clear=i,u.prototype.delete=r,u.prototype.get=o,u.prototype.has=a,u.prototype.set=s,e.exports=u},64407:function(e,t,n){var i=n(46076)(n(3650),"Promise");e.exports=i},95808:function(e,t,n){var i=n(46076)(n(3650),"Set");e.exports=i},46746:function(e,t,n){var i=n(69121),r=n(68908),o=n(73771);function a(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new i;++t<n;)this.add(e[t])}a.prototype.add=a.prototype.push=r,a.prototype.has=o,e.exports=a},91395:function(e,t,n){var i=n(72953),r=n(98971),o=n(60386),a=n(20600),s=n(12752),u=n(75130);function l(e){var t=this.__data__=new i(e);this.size=t.size}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=s,l.prototype.set=u,e.exports=l},125:function(e,t,n){var i=n(3650).Symbol;e.exports=i},67753:function(e,t,n){var i=n(3650).Uint8Array;e.exports=i},4665:function(e,t,n){var i=n(46076)(n(3650),"WeakMap");e.exports=i},47757:function(e){e.exports=function(e,t){for(var n=-1,i=null==e?0:e.length,r=0,o=[];++n<i;){var a=e[n];t(a,n,e)&&(o[r++]=a)}return o}},97233:function(e,t,n){var i=n(55412),r=n(10878),o=n(60508),a=n(47874),s=n(10026),u=n(52841),l=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),c=!n&&r(e),d=!n&&!c&&a(e),h=!n&&!c&&!d&&u(e),f=n||c||d||h,p=f?i(e.length,String):[],g=p.length;for(var v in e)!t&&!l.call(e,v)||f&&("length"==v||d&&("offset"==v||"parent"==v)||h&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||s(v,g))||p.push(v);return p}},19954:function(e){e.exports=function(e,t){for(var n=-1,i=null==e?0:e.length,r=Array(i);++n<i;)r[n]=t(e[n],n,e);return r}},95610:function(e){e.exports=function(e,t){for(var n=-1,i=t.length,r=e.length;++n<i;)e[r+n]=t[n];return e}},18503:function(e){e.exports=function(e,t){for(var n=-1,i=null==e?0:e.length;++n<i;)if(t(e[n],n,e))return!0;return!1}},77569:function(e,t,n){var i=n(20965);e.exports=function(e,t){for(var n=e.length;n--;)if(i(e[n][0],t))return n;return-1}},71369:function(e,t,n){var i=n(38697),r=n(64089);e.exports=function(e,t){for(var n=0,o=(t=i(t,e)).length;null!=e&&n<o;)e=e[r(t[n++])];return n&&n==o?e:void 0}},12200:function(e,t,n){var i=n(95610),r=n(60508);e.exports=function(e,t,n){var o=t(e);return r(e)?o:i(o,n(e))}},20161:function(e,t,n){var i=n(125),r=n(46937),o=n(4868),a="[object Null]",s="[object Undefined]",u=i?i.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?s:a:u&&u in Object(e)?r(e):o(e)}},27534:function(e){e.exports=function(e,t){return null!=e&&t in Object(e)}},94051:function(e,t,n){var i=n(20161),r=n(84341),o="[object Arguments]";e.exports=function(e){return r(e)&&i(e)==o}},22327:function(e,t,n){var i=n(40723),r=n(84341);e.exports=function e(t,n,o,a,s){return t===n||(null==t||null==n||!r(t)&&!r(n)?t!==t&&n!==n:i(t,n,o,a,e,s))}},40723:function(e,t,n){var i=n(91395),r=n(3704),o=n(57318),a=n(31223),s=n(81591),u=n(60508),l=n(47874),c=n(52841),d=1,h="[object Arguments]",f="[object Array]",p="[object Object]",g=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,v,m,_){var y=u(e),b=u(t),w=y?f:s(e),C=b?f:s(t),k=(w=w==h?p:w)==p,S=(C=C==h?p:C)==p,x=w==C;if(x&&l(e)){if(!l(t))return!1;y=!0,k=!1}if(x&&!k)return _||(_=new i),y||c(e)?r(e,t,n,v,m,_):o(e,t,w,n,v,m,_);if(!(n&d)){var L=k&&g.call(e,"__wrapped__"),E=S&&g.call(t,"__wrapped__");if(L||E){var D=L?e.value():e,N=E?t.value():t;return _||(_=new i),m(D,N,n,v,_)}}return!!x&&(_||(_=new i),a(e,t,n,v,m,_))}},26922:function(e,t,n){var i=n(91395),r=n(22327),o=1,a=2;e.exports=function(e,t,n,s){var u=n.length,l=u,c=!s;if(null==e)return!l;for(e=Object(e);u--;){var d=n[u];if(c&&d[2]?d[1]!==e[d[0]]:!(d[0]in e))return!1}for(;++u<l;){var h=(d=n[u])[0],f=e[h],p=d[1];if(c&&d[2]){if(void 0===f&&!(h in e))return!1}else{var g=new i;if(s)var v=s(f,p,h,e,t,g);if(!(void 0===v?r(p,f,o|a,s,g):v))return!1}}return!0}},3092:function(e,t,n){var i=n(57119),r=n(19705),o=n(82222),a=n(94552),s=/^\[object .+?Constructor\]$/,u=Function.prototype,l=Object.prototype,c=u.toString,d=l.hasOwnProperty,h=RegExp("^"+c.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||r(e))&&(i(e)?h:s).test(a(e))}},72533:function(e,t,n){var i=n(20161),r=n(60997),o=n(84341),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&r(e.length)&&!!a[i(e)]}},37823:function(e,t,n){var i=n(92774),r=n(85870),o=n(55308),a=n(60508),s=n(23364);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?a(e)?r(e[0],e[1]):i(e):s(e)}},72467:function(e,t,n){var i=n(9986),r=n(87682),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!i(e))return r(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},92774:function(e,t,n){var i=n(26922),r=n(94891),o=n(47e3);e.exports=function(e){var t=r(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||i(n,e,t)}}},85870:function(e,t,n){var i=n(22327),r=n(11141),o=n(8976),a=n(22498),s=n(79787),u=n(47e3),l=n(64089),c=1,d=2;e.exports=function(e,t){return a(e)&&s(t)?u(l(e),t):function(n){var a=r(n,e);return void 0===a&&a===t?o(n,e):i(t,a,c|d)}}},96067:function(e){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},87402:function(e,t,n){var i=n(71369);e.exports=function(e){return function(t){return i(t,e)}}},86013:function(e){var t=Math.ceil,n=Math.max;e.exports=function(e,i,r,o){for(var a=-1,s=n(t((i-e)/(r||1)),0),u=Array(s);s--;)u[o?s:++a]=e,e+=r;return u}},68317:function(e){e.exports=function(e,t){for(var n,i=-1,r=e.length;++i<r;){var o=t(e[i]);void 0!==o&&(n=void 0===n?o:n+o)}return n}},55412:function(e){e.exports=function(e,t){for(var n=-1,i=Array(e);++n<e;)i[n]=t(n);return i}},40252:function(e,t,n){var i=n(125),r=n(19954),o=n(60508),a=n(17189),s=1/0,u=i?i.prototype:void 0,l=u?u.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return r(t,e)+"";if(a(t))return l?l.call(t):"";var n=t+"";return"0"==n&&1/t==-s?"-0":n}},6893:function(e,t,n){var i=n(61855),r=/^\s+/;e.exports=function(e){return e?e.slice(0,i(e)+1).replace(r,""):e}},29937:function(e){e.exports=function(e){return function(t){return e(t)}}},61832:function(e){e.exports=function(e,t){return e.has(t)}},38697:function(e,t,n){var i=n(60508),r=n(22498),o=n(53200),a=n(5881);e.exports=function(e,t){return i(e)?e:r(e,t)?[e]:o(a(e))}},88517:function(e,t,n){var i=n(3650)["__core-js_shared__"];e.exports=i},10787:function(e,t,n){var i=n(86013),r=n(53323),o=n(11347);e.exports=function(e){return function(t,n,a){return a&&"number"!=typeof a&&r(t,n,a)&&(n=a=void 0),t=o(t),void 0===n?(n=t,t=0):n=o(n),a=void 0===a?t<n?1:-1:o(a),i(t,n,a,e)}}},97771:function(e,t,n){var i=n(3650),r=n(60389),o=n(1584),a=n(5881),s=i.isFinite,u=Math.min;e.exports=function(e){var t=Math[e];return function(e,n){if(e=o(e),(n=null==n?0:u(r(n),292))&&s(e)){var i=(a(e)+"e").split("e"),l=t(i[0]+"e"+(+i[1]+n));return+((i=(a(l)+"e").split("e"))[0]+"e"+(+i[1]-n))}return t(e)}}},3704:function(e,t,n){var i=n(46746),r=n(18503),o=n(61832),a=1,s=2;e.exports=function(e,t,n,u,l,c){var d=n&a,h=e.length,f=t.length;if(h!=f&&!(d&&f>h))return!1;var p=c.get(e),g=c.get(t);if(p&&g)return p==t&&g==e;var v=-1,m=!0,_=n&s?new i:void 0;for(c.set(e,t),c.set(t,e);++v<h;){var y=e[v],b=t[v];if(u)var w=d?u(b,y,v,t,e,c):u(y,b,v,e,t,c);if(void 0!==w){if(w)continue;m=!1;break}if(_){if(!r(t,(function(e,t){if(!o(_,t)&&(y===e||l(y,e,n,u,c)))return _.push(t)}))){m=!1;break}}else if(y!==b&&!l(y,b,n,u,c)){m=!1;break}}return c.delete(e),c.delete(t),m}},57318:function(e,t,n){var i=n(125),r=n(67753),o=n(20965),a=n(3704),s=n(77140),u=n(54258),l=1,c=2,d="[object Boolean]",h="[object Date]",f="[object Error]",p="[object Map]",g="[object Number]",v="[object RegExp]",m="[object Set]",_="[object String]",y="[object Symbol]",b="[object ArrayBuffer]",w="[object DataView]",C=i?i.prototype:void 0,k=C?C.valueOf:void 0;e.exports=function(e,t,n,i,C,S,x){switch(n){case w:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case b:return!(e.byteLength!=t.byteLength||!S(new r(e),new r(t)));case d:case h:case g:return o(+e,+t);case f:return e.name==t.name&&e.message==t.message;case v:case _:return e==t+"";case p:var L=s;case m:var E=i&l;if(L||(L=u),e.size!=t.size&&!E)return!1;var D=x.get(e);if(D)return D==t;i|=c,x.set(e,t);var N=a(L(e),L(t),i,C,S,x);return x.delete(e),N;case y:if(k)return k.call(e)==k.call(t)}return!1}},31223:function(e,t,n){var i=n(25534),r=1,o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,a,s,u){var l=n&r,c=i(e),d=c.length;if(d!=i(t).length&&!l)return!1;for(var h=d;h--;){var f=c[h];if(!(l?f in t:o.call(t,f)))return!1}var p=u.get(e),g=u.get(t);if(p&&g)return p==t&&g==e;var v=!0;u.set(e,t),u.set(t,e);for(var m=l;++h<d;){var _=e[f=c[h]],y=t[f];if(a)var b=l?a(y,_,f,t,e,u):a(_,y,f,e,t,u);if(!(void 0===b?_===y||s(_,y,n,a,u):b)){v=!1;break}m||(m="constructor"==f)}if(v&&!m){var w=e.constructor,C=t.constructor;w==C||!("constructor"in e)||!("constructor"in t)||"function"==typeof w&&w instanceof w&&"function"==typeof C&&C instanceof C||(v=!1)}return u.delete(e),u.delete(t),v}},9198:function(e,t,n){var i="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=i},25534:function(e,t,n){var i=n(12200),r=n(30958),o=n(21198);e.exports=function(e){return i(e,o,r)}},5669:function(e,t,n){var i=n(38688);e.exports=function(e,t){var n=e.__data__;return i(t)?n["string"==typeof t?"string":"hash"]:n.map}},94891:function(e,t,n){var i=n(79787),r=n(21198);e.exports=function(e){for(var t=r(e),n=t.length;n--;){var o=t[n],a=e[o];t[n]=[o,a,i(a)]}return t}},46076:function(e,t,n){var i=n(3092),r=n(51677);e.exports=function(e,t){var n=r(e,t);return i(n)?n:void 0}},46937:function(e,t,n){var i=n(125),r=Object.prototype,o=r.hasOwnProperty,a=r.toString,s=i?i.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),n=e[s];try{e[s]=void 0;var i=!0}catch(u){}var r=a.call(e);return i&&(t?e[s]=n:delete e[s]),r}},30958:function(e,t,n){var i=n(47757),r=n(99500),o=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(e){return null==e?[]:(e=Object(e),i(a(e),(function(t){return o.call(e,t)})))}:r;e.exports=s},81591:function(e,t,n){var i=n(7572),r=n(23301),o=n(64407),a=n(95808),s=n(4665),u=n(20161),l=n(94552),c="[object Map]",d="[object Promise]",h="[object Set]",f="[object WeakMap]",p="[object DataView]",g=l(i),v=l(r),m=l(o),_=l(a),y=l(s),b=u;(i&&b(new i(new ArrayBuffer(1)))!=p||r&&b(new r)!=c||o&&b(o.resolve())!=d||a&&b(new a)!=h||s&&b(new s)!=f)&&(b=function(e){var t=u(e),n="[object Object]"==t?e.constructor:void 0,i=n?l(n):"";if(i)switch(i){case g:return p;case v:return c;case m:return d;case _:return h;case y:return f}return t}),e.exports=b},51677:function(e){e.exports=function(e,t){return null==e?void 0:e[t]}},76341:function(e,t,n){var i=n(38697),r=n(10878),o=n(60508),a=n(10026),s=n(60997),u=n(64089);e.exports=function(e,t,n){for(var l=-1,c=(t=i(t,e)).length,d=!1;++l<c;){var h=u(t[l]);if(!(d=null!=e&&n(e,h)))break;e=e[h]}return d||++l!=c?d:!!(c=null==e?0:e.length)&&s(c)&&a(h,c)&&(o(e)||r(e))}},22426:function(e,t,n){var i=n(50662);e.exports=function(){this.__data__=i?i(null):{},this.size=0}},5096:function(e){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},14190:function(e,t,n){var i=n(50662),r="__lodash_hash_undefined__",o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(i){var n=t[e];return n===r?void 0:n}return o.call(t,e)?t[e]:void 0}},5911:function(e,t,n){var i=n(50662),r=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return i?void 0!==t[e]:r.call(t,e)}},25570:function(e,t,n){var i=n(50662),r="__lodash_hash_undefined__";e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=i&&void 0===t?r:t,this}},10026:function(e){var t=9007199254740991,n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,i){var r=typeof e;return!!(i=null==i?t:i)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e<i}},53323:function(e,t,n){var i=n(20965),r=n(75359),o=n(10026),a=n(82222);e.exports=function(e,t,n){if(!a(n))return!1;var s=typeof t;return!!("number"==s?r(n)&&o(t,n.length):"string"==s&&t in n)&&i(n[t],e)}},22498:function(e,t,n){var i=n(60508),r=n(17189),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(i(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!r(e))||(a.test(e)||!o.test(e)||null!=t&&e in Object(t))}},38688:function(e){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},19705:function(e,t,n){var i=n(88517),r=function(){var e=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();e.exports=function(e){return!!r&&r in e}},9986:function(e){var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},79787:function(e,t,n){var i=n(82222);e.exports=function(e){return e===e&&!i(e)}},19792:function(e){e.exports=function(){this.__data__=[],this.size=0}},38240:function(e,t,n){var i=n(77569),r=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=i(t,e);return!(n<0)&&(n==t.length-1?t.pop():r.call(t,n,1),--this.size,!0)}},96033:function(e,t,n){var i=n(77569);e.exports=function(e){var t=this.__data__,n=i(t,e);return n<0?void 0:t[n][1]}},87333:function(e,t,n){var i=n(77569);e.exports=function(e){return i(this.__data__,e)>-1}},45460:function(e,t,n){var i=n(77569);e.exports=function(e,t){var n=this.__data__,r=i(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}},32388:function(e,t,n){var i=n(41895),r=n(72953),o=n(23301);e.exports=function(){this.size=0,this.__data__={hash:new i,map:new(o||r),string:new i}}},2871:function(e,t,n){var i=n(5669);e.exports=function(e){var t=i(this,e).delete(e);return this.size-=t?1:0,t}},38006:function(e,t,n){var i=n(5669);e.exports=function(e){return i(this,e).get(e)}},98281:function(e,t,n){var i=n(5669);e.exports=function(e){return i(this,e).has(e)}},31831:function(e,t,n){var i=n(5669);e.exports=function(e,t){var n=i(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}},77140:function(e){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,i){n[++t]=[i,e]})),n}},47e3:function(e){e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},71244:function(e,t,n){var i=n(51761),r=500;e.exports=function(e){var t=i(e,(function(e){return n.size===r&&n.clear(),e})),n=t.cache;return t}},50662:function(e,t,n){var i=n(46076)(Object,"create");e.exports=i},87682:function(e,t,n){var i=n(97269)(Object.keys,Object);e.exports=i},56408:function(e,t,n){e=n.nmd(e);var i=n(9198),r=t&&!t.nodeType&&t,o=r&&e&&!e.nodeType&&e,a=o&&o.exports===r&&i.process,s=function(){try{var e=o&&o.require&&o.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(t){}}();e.exports=s},4868:function(e){var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},97269:function(e){e.exports=function(e,t){return function(n){return e(t(n))}}},3650:function(e,t,n){var i=n(9198),r="object"==typeof self&&self&&self.Object===Object&&self,o=i||r||Function("return this")();e.exports=o},68908:function(e){var t="__lodash_hash_undefined__";e.exports=function(e){return this.__data__.set(e,t),this}},73771:function(e){e.exports=function(e){return this.__data__.has(e)}},54258:function(e){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},98971:function(e,t,n){var i=n(72953);e.exports=function(){this.__data__=new i,this.size=0}},60386:function(e){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},20600:function(e){e.exports=function(e){return this.__data__.get(e)}},12752:function(e){e.exports=function(e){return this.__data__.has(e)}},75130:function(e,t,n){var i=n(72953),r=n(23301),o=n(69121),a=200;e.exports=function(e,t){var n=this.__data__;if(n instanceof i){var s=n.__data__;if(!r||s.length<a-1)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(s)}return n.set(e,t),this.size=n.size,this}},53200:function(e,t,n){var i=n(71244),r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,a=i((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(r,(function(e,n,i,r){t.push(i?r.replace(o,"$1"):n||e)})),t}));e.exports=a},64089:function(e,t,n){var i=n(17189),r=1/0;e.exports=function(e){if("string"==typeof e||i(e))return e;var t=e+"";return"0"==t&&1/e==-r?"-0":t}},94552:function(e){var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},61855:function(e){var t=/\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},14762:function(e,t,n){var i=n(82222),r=n(61135),o=n(1584),a="Expected a function",s=Math.max,u=Math.min;e.exports=function(e,t,n){var l,c,d,h,f,p,g=0,v=!1,m=!1,_=!0;if("function"!=typeof e)throw new TypeError(a);function y(t){var n=l,i=c;return l=c=void 0,g=t,h=e.apply(i,n)}function b(e){var n=e-p;return void 0===p||n>=t||n<0||m&&e-g>=d}function w(){var e=r();if(b(e))return C(e);f=setTimeout(w,function(e){var n=t-(e-p);return m?u(n,d-(e-g)):n}(e))}function C(e){return f=void 0,_&&l?y(e):(l=c=void 0,h)}function k(){var e=r(),n=b(e);if(l=arguments,c=this,p=e,n){if(void 0===f)return function(e){return g=e,f=setTimeout(w,t),v?y(e):h}(p);if(m)return clearTimeout(f),f=setTimeout(w,t),y(p)}return void 0===f&&(f=setTimeout(w,t)),h}return t=o(t)||0,i(n)&&(v=!!n.leading,d=(m="maxWait"in n)?s(o(n.maxWait)||0,t):d,_="trailing"in n?!!n.trailing:_),k.cancel=function(){void 0!==f&&clearTimeout(f),g=0,l=p=c=f=void 0},k.flush=function(){return void 0===f?h:C(r())},k}},20965:function(e){e.exports=function(e,t){return e===t||e!==e&&t!==t}},11141:function(e,t,n){var i=n(71369);e.exports=function(e,t,n){var r=null==e?void 0:i(e,t);return void 0===r?n:r}},8976:function(e,t,n){var i=n(27534),r=n(76341);e.exports=function(e,t){return null!=e&&r(e,t,i)}},55308:function(e){e.exports=function(e){return e}},10878:function(e,t,n){var i=n(94051),r=n(84341),o=Object.prototype,a=o.hasOwnProperty,s=o.propertyIsEnumerable,u=i(function(){return arguments}())?i:function(e){return r(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=u},60508:function(e){var t=Array.isArray;e.exports=t},75359:function(e,t,n){var i=n(57119),r=n(60997);e.exports=function(e){return null!=e&&r(e.length)&&!i(e)}},47874:function(e,t,n){e=n.nmd(e);var i=n(3650),r=n(79151),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,s=a&&a.exports===o?i.Buffer:void 0,u=(s?s.isBuffer:void 0)||r;e.exports=u},37750:function(e,t,n){var i=n(72467),r=n(81591),o=n(10878),a=n(60508),s=n(75359),u=n(47874),l=n(9986),c=n(52841),d="[object Map]",h="[object Set]",f=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(s(e)&&(a(e)||"string"==typeof e||"function"==typeof e.splice||u(e)||c(e)||o(e)))return!e.length;var t=r(e);if(t==d||t==h)return!e.size;if(l(e))return!i(e).length;for(var n in e)if(f.call(e,n))return!1;return!0}},62892:function(e,t,n){var i=n(22327);e.exports=function(e,t){return i(e,t)}},57119:function(e,t,n){var i=n(20161),r=n(82222),o="[object AsyncFunction]",a="[object Function]",s="[object GeneratorFunction]",u="[object Proxy]";e.exports=function(e){if(!r(e))return!1;var t=i(e);return t==a||t==s||t==o||t==u}},60997:function(e){var t=9007199254740991;e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=t}},82222:function(e){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},84341:function(e){e.exports=function(e){return null!=e&&"object"==typeof e}},17189:function(e,t,n){var i=n(20161),r=n(84341),o="[object Symbol]";e.exports=function(e){return"symbol"==typeof e||r(e)&&i(e)==o}},52841:function(e,t,n){var i=n(72533),r=n(29937),o=n(56408),a=o&&o.isTypedArray,s=a?r(a):i;e.exports=s},21198:function(e,t,n){var i=n(97233),r=n(72467),o=n(75359);e.exports=function(e){return o(e)?i(e):r(e)}},51761:function(e,t,n){var i=n(69121),r="Expected a function";function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError(r);var n=function n(){var i=arguments,r=t?t.apply(this,i):i[0],o=n.cache;if(o.has(r))return o.get(r);var a=e.apply(this,i);return n.cache=o.set(r,a)||o,a};return n.cache=new(o.Cache||i),n}o.Cache=i,e.exports=o},61135:function(e,t,n){var i=n(3650);e.exports=function(){return i.Date.now()}},23364:function(e,t,n){var i=n(96067),r=n(87402),o=n(22498),a=n(64089);e.exports=function(e){return o(e)?i(a(e)):r(e)}},61883:function(e,t,n){var i=n(10787)();e.exports=i},56430:function(e,t,n){var i=n(97771)("round");e.exports=i},99500:function(e){e.exports=function(){return[]}},79151:function(e){e.exports=function(){return!1}},780:function(e,t,n){var i=n(37823),r=n(68317);e.exports=function(e,t){return e&&e.length?r(e,i(t,2)):0}},17571:function(e,t,n){var i=n(14762),r=n(82222),o="Expected a function";e.exports=function(e,t,n){var a=!0,s=!0;if("function"!=typeof e)throw new TypeError(o);return r(n)&&(a="leading"in n?!!n.leading:a,s="trailing"in n?!!n.trailing:s),i(e,t,{leading:a,maxWait:t,trailing:s})}},11347:function(e,t,n){var i=n(1584),r=1/0,o=17976931348623157e292;e.exports=function(e){return e?(e=i(e))===r||e===-r?(e<0?-1:1)*o:e===e?e:0:0===e?e:0}},60389:function(e,t,n){var i=n(11347);e.exports=function(e){var t=i(e),n=t%1;return t===t?n?t-n:t:0}},1584:function(e,t,n){var i=n(6893),r=n(82222),o=n(17189),a=NaN,s=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return a;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=i(e);var n=u.test(e);return n||l.test(e)?c(e.slice(2),n?2:8):s.test(e)?a:+e}},5881:function(e,t,n){var i=n(40252);e.exports=function(e){return null==e?"":i(e)}},56787:function(e,t,n){e.exports=n(74034)},63866:function(e,t,n){"use strict";var i=n(32865),r=n(87520),o=n(95136),a=n(97387),s=n(11279),u=n(90660),l=n(97993);e.exports=function(e){return new Promise((function(t,c){var d=e.data,h=e.headers;i.isFormData(d)&&delete h["Content-Type"];var f=new XMLHttpRequest;if(e.auth){var p=e.auth.username||"",g=e.auth.password||"";h.Authorization="Basic "+btoa(p+":"+g)}var v=a(e.baseURL,e.url);if(f.open(e.method.toUpperCase(),o(v,e.params,e.paramsSerializer),!0),f.timeout=e.timeout,f.onreadystatechange=function(){if(f&&4===f.readyState&&(0!==f.status||f.responseURL&&0===f.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in f?s(f.getAllResponseHeaders()):null,i={data:e.responseType&&"text"!==e.responseType?f.response:f.responseText,status:f.status,statusText:f.statusText,headers:n,config:e,request:f};r(t,c,i),f=null}},f.onabort=function(){f&&(c(l("Request aborted",e,"ECONNABORTED",f)),f=null)},f.onerror=function(){c(l("Network Error",e,null,f)),f=null},f.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),c(l(t,e,"ECONNABORTED",f)),f=null},i.isStandardBrowserEnv()){var m=n(4915),_=(e.withCredentials||u(v))&&e.xsrfCookieName?m.read(e.xsrfCookieName):void 0;_&&(h[e.xsrfHeaderName]=_)}if("setRequestHeader"in f&&i.forEach(h,(function(e,t){"undefined"===typeof d&&"content-type"===t.toLowerCase()?delete h[t]:f.setRequestHeader(t,e)})),i.isUndefined(e.withCredentials)||(f.withCredentials=!!e.withCredentials),e.responseType)try{f.responseType=e.responseType}catch(y){if("json"!==e.responseType)throw y}"function"===typeof e.onDownloadProgress&&f.addEventListener("progress",e.onDownloadProgress),"function"===typeof e.onUploadProgress&&f.upload&&f.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){f&&(f.abort(),c(e),f=null)})),void 0===d&&(d=null),f.send(d)}))}},74034:function(e,t,n){"use strict";var i=n(32865),r=n(23198),o=n(19988),a=n(72889);function s(e){var t=new o(e),n=r(o.prototype.request,t);return i.extend(n,o.prototype,t),i.extend(n,t),n}var u=s(n(1488));u.Axios=o,u.create=function(e){return s(a(u.defaults,e))},u.Cancel=n(44011),u.CancelToken=n(2518),u.isCancel=n(66788),u.all=function(e){return Promise.all(e)},u.spread=n(27974),e.exports=u,e.exports.default=u},44011:function(e){"use strict";function t(e){this.message=e}t.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},t.prototype.__CANCEL__=!0,e.exports=t},2518:function(e,t,n){"use strict";var i=n(44011);function r(e){if("function"!==typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;e((function(e){n.reason||(n.reason=new i(e),t(n.reason))}))}r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e;return{token:new r((function(t){e=t})),cancel:e}},e.exports=r},66788:function(e){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},19988:function(e,t,n){"use strict";var i=n(32865),r=n(95136),o=n(66515),a=n(80812),s=n(72889);function u(e){this.defaults=e,this.interceptors={request:new o,response:new o}}u.prototype.request=function(e){"string"===typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=s(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){t.push(e.fulfilled,e.rejected)}));t.length;)n=n.then(t.shift(),t.shift());return n},u.prototype.getUri=function(e){return e=s(this.defaults,e),r(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},i.forEach(["delete","get","head","options"],(function(e){u.prototype[e]=function(t,n){return this.request(i.merge(n||{},{method:e,url:t}))}})),i.forEach(["post","put","patch"],(function(e){u.prototype[e]=function(t,n,r){return this.request(i.merge(r||{},{method:e,url:t,data:n}))}})),e.exports=u},66515:function(e,t,n){"use strict";var i=n(32865);function r(){this.handlers=[]}r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){i.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=r},97387:function(e,t,n){"use strict";var i=n(88817),r=n(79154);e.exports=function(e,t){return e&&!i(t)?r(e,t):t}},97993:function(e,t,n){"use strict";var i=n(13401);e.exports=function(e,t,n,r,o){var a=new Error(e);return i(a,t,n,r,o)}},80812:function(e,t,n){"use strict";var i=n(32865),r=n(55470),o=n(66788),a=n(1488);function s(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return s(e),e.headers=e.headers||{},e.data=r(e.data,e.headers,e.transformRequest),e.headers=i.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),i.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||a.adapter)(e).then((function(t){return s(e),t.data=r(t.data,t.headers,e.transformResponse),t}),(function(t){return o(t)||(s(e),t&&t.response&&(t.response.data=r(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},13401:function(e){"use strict";e.exports=function(e,t,n,i,r){return e.config=t,n&&(e.code=n),e.request=i,e.response=r,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},72889:function(e,t,n){"use strict";var i=n(32865);e.exports=function(e,t){t=t||{};var n={},r=["url","method","params","data"],o=["headers","auth","proxy"],a=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];i.forEach(r,(function(e){"undefined"!==typeof t[e]&&(n[e]=t[e])})),i.forEach(o,(function(r){i.isObject(t[r])?n[r]=i.deepMerge(e[r],t[r]):"undefined"!==typeof t[r]?n[r]=t[r]:i.isObject(e[r])?n[r]=i.deepMerge(e[r]):"undefined"!==typeof e[r]&&(n[r]=e[r])})),i.forEach(a,(function(i){"undefined"!==typeof t[i]?n[i]=t[i]:"undefined"!==typeof e[i]&&(n[i]=e[i])}));var s=r.concat(o).concat(a),u=Object.keys(t).filter((function(e){return-1===s.indexOf(e)}));return i.forEach(u,(function(i){"undefined"!==typeof t[i]?n[i]=t[i]:"undefined"!==typeof e[i]&&(n[i]=e[i])})),n}},87520:function(e,t,n){"use strict";var i=n(97993);e.exports=function(e,t,n){var r=n.config.validateStatus;!r||r(n.status)?e(n):t(i("Request failed with status code "+n.status,n.config,null,n.request,n))}},55470:function(e,t,n){"use strict";var i=n(32865);e.exports=function(e,t,n){return i.forEach(n,(function(n){e=n(e,t)})),e}},1488:function(e,t,n){"use strict";var i=n(32865),r=n(16118),o={"Content-Type":"application/x-www-form-urlencoded"};function a(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var s={adapter:function(){var e;return("undefined"!==typeof XMLHttpRequest||"undefined"!==typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(e=n(63866)),e}(),transformRequest:[function(e,t){return r(t,"Accept"),r(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(a(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)?(a(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"===typeof e)try{e=JSON.parse(e)}catch(t){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};i.forEach(["delete","get","head"],(function(e){s.headers[e]={}})),i.forEach(["post","put","patch"],(function(e){s.headers[e]=i.merge(o)})),e.exports=s},23198:function(e){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];return e.apply(t,n)}}},95136:function(e,t,n){"use strict";var i=n(32865);function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var o;if(n)o=n(t);else if(i.isURLSearchParams(t))o=t.toString();else{var a=[];i.forEach(t,(function(e,t){null!==e&&"undefined"!==typeof e&&(i.isArray(e)?t+="[]":e=[e],i.forEach(e,(function(e){i.isDate(e)?e=e.toISOString():i.isObject(e)&&(e=JSON.stringify(e)),a.push(r(t)+"="+r(e))})))})),o=a.join("&")}if(o){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}},79154:function(e){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},4915:function(e,t,n){"use strict";var i=n(32865);e.exports=i.isStandardBrowserEnv()?{write:function(e,t,n,r,o,a){var s=[];s.push(e+"="+encodeURIComponent(t)),i.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),i.isString(r)&&s.push("path="+r),i.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},88817:function(e){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},90660:function(e,t,n){"use strict";var i=n(32865);e.exports=i.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(e){var i=e;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=r(window.location.href),function(t){var n=i.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},16118:function(e,t,n){"use strict";var i=n(32865);e.exports=function(e,t){i.forEach(e,(function(n,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[i])}))}},11279:function(e,t,n){"use strict";var i=n(32865),r=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,o,a={};return e?(i.forEach(e.split("\n"),(function(e){if(o=e.indexOf(":"),t=i.trim(e.substr(0,o)).toLowerCase(),n=i.trim(e.substr(o+1)),t){if(a[t]&&r.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}})),a):a}},27974:function(e){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},32865:function(e,t,n){"use strict";var i=n(23198),r=Object.prototype.toString;function o(e){return"[object Array]"===r.call(e)}function a(e){return"undefined"===typeof e}function s(e){return null!==e&&"object"===typeof e}function u(e){return"[object Function]"===r.call(e)}function l(e,t){if(null!==e&&"undefined"!==typeof e)if("object"!==typeof e&&(e=[e]),o(e))for(var n=0,i=e.length;n<i;n++)t.call(null,e[n],n,e);else for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.call(null,e[r],r,e)}e.exports={isArray:o,isArrayBuffer:function(e){return"[object ArrayBuffer]"===r.call(e)},isBuffer:function(e){return null!==e&&!a(e)&&null!==e.constructor&&!a(e.constructor)&&"function"===typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!==typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"===typeof e},isNumber:function(e){return"number"===typeof e},isObject:s,isUndefined:a,isDate:function(e){return"[object Date]"===r.call(e)},isFile:function(e){return"[object File]"===r.call(e)},isBlob:function(e){return"[object Blob]"===r.call(e)},isFunction:u,isStream:function(e){return s(e)&&u(e.pipe)},isURLSearchParams:function(e){return"undefined"!==typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"===typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!==typeof window&&"undefined"!==typeof document)},forEach:l,merge:function e(){var t={};function n(n,i){"object"===typeof t[i]&&"object"===typeof n?t[i]=e(t[i],n):t[i]=n}for(var i=0,r=arguments.length;i<r;i++)l(arguments[i],n);return t},deepMerge:function e(){var t={};function n(n,i){"object"===typeof t[i]&&"object"===typeof n?t[i]=e(t[i],n):t[i]="object"===typeof n?e({},n):n}for(var i=0,r=arguments.length;i<r;i++)l(arguments[i],n);return t},extend:function(e,t,n){return l(t,(function(t,r){e[r]=n&&"function"===typeof t?i(t,n):t})),e},trim:function(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}}},78243:function(e,t,n){"use strict";var i=n(44763),r=i.setup();function o(e){var t=r(e);function n(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var i,r=e.shift(),o=e[0],a=e[1];return"string"===typeof r&&"string"!==typeof o||(a=o,o=null),i=t(r,o),a&&(i=i.mix(a)),i.toString()}return n.builder=function(){return t},n}o.setup=function(e){r=i.setup(e)},o.reset=function(){r=i.setup()},t.Z=o},44763:function(e){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(1);t.ERROR_BLOCK_NAME_TYPE="Block name should be a string",t.ERROR_BLOCK_NAME_EMPTY="Block name should be non-empty";var r={ns:"",el:"__",mod:"_",modValue:"_"},o=function(e){return"string"==typeof e},a=function(e){return"string"!=typeof e},s=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var o=i.assign({},t);return o.mixes=o.mixes.concat(n),d(o,e)},u=function(e,t,n){for(var r=[],o=3;o<arguments.length;o++)r[o-3]=arguments[o];var a=i.assign({},t),s=i.assign({},a.states||{});return s[n]=i.assign.apply(void 0,[{},s[n]||{}].concat(r)),a.states=s,d(a,e)},l=function(e,t,n,i){return String.prototype.split.call(c(e,t),n,i)},c=function(e,t){var n=t.name,i=t.mods,r=t.mixes,o=t.states,a=[n];if(i&&(a=a.concat(Object.keys(i).filter((function(e){return i[e]})).map((function(t){var r=i[t];return!0===r?n+e.mod+t:n+e.mod+t+e.modValue+r})))),o&&Object.keys(o).forEach((function(e){var t=o[e];a=a.concat(Object.keys(t).filter((function(e){return t[e]})).map((function(t){return e+t})))})),e.ns&&(a=a.map((function(t){return e.ns+t}))),r&&(a=a.concat(function(e){return void 0===e&&(e=[]),e.map((function(e){return Array.isArray(e)?e.join(" "):"object"==typeof e&&null!==e||"function"==typeof e?e.toString():"string"==typeof e?e:""})).filter((function(e){return!!e}))}(r))),e.classMap){var s=e.classMap;a=a.map((function(e){return s[e]||e}))}return a.join(" ")},d=function(e,t){return{mix:s.bind(null,t,e),split:l.bind(null,t,e),is:u.bind(null,t,e,"is-"),has:u.bind(null,t,e,"has-"),state:u.bind(null,t,e,"is-"),toString:c.bind(null,t,e)}},h=function(e,t){var n={name:e,mods:{},mixes:[],states:{"is-":{},"has-":{}}},r=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];if(!n.length)return c(e,t);var s=i.assign({},t),u=n.filter(o).reduce((function(t,n){return t+e.el+n}),"");u&&(s.name=s.name+u);var l=n.filter(a).reduce((function(e,t){return i.assign(e,t)}),{});return s.mods=i.assign({},s.mods,l),d(s,e)}.bind(null,t,n);return r.mix=s.bind(null,t,n),r.split=l.bind(null,t,n),r.is=u.bind(null,t,n,"is-"),r.has=u.bind(null,t,n,"has-"),r.state=u.bind(null,t,n,"is-"),r.toString=c.bind(null,t,n),r};t.setup=function(e){return void 0===e&&(e={}),function(n){if("string"!=typeof n)throw new Error(t.ERROR_BLOCK_NAME_TYPE);var o=n.trim();if(!o)throw new Error(t.ERROR_BLOCK_NAME_EMPTY);return h(o,i.assign({},r,e))}},t.block=t.setup(),t.default=t.block},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assign=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var i=0;i<t.length;i++){var r=t[i];for(var o in r)r.hasOwnProperty(o)&&(e[o]=r[o])}return e}}])},15017:function(e,t,n){"use strict";var i=n(11333),r=n(17448),o=r(i("String.prototype.indexOf"));e.exports=function(e,t){var n=i(e,!!t);return"function"===typeof n&&o(e,".prototype.")>-1?r(n):n}},17448:function(e,t,n){"use strict";var i=n(62018),r=n(11333),o=r("%Function.prototype.apply%"),a=r("%Function.prototype.call%"),s=r("%Reflect.apply%",!0)||i.call(a,o),u=r("%Object.getOwnPropertyDescriptor%",!0),l=r("%Object.defineProperty%",!0),c=r("%Math.max%");if(l)try{l({},"a",{value:1})}catch(h){l=null}e.exports=function(e){var t=s(i,a,arguments);u&&l&&(u(t,"length").configurable&&l(t,"length",{value:1+c(0,e.length-(arguments.length-1))}));return t};var d=function(){return s(i,o,arguments)};l?l(e.exports,"apply",{value:d}):e.exports.apply=d},80358:function(e,t,n){"use strict";var i=n(22710),r={"text/plain":"Text","text/html":"Url",default:"Text"},o="Copy to clipboard: #{key}, Enter";e.exports=function(e,t){var n,a,s,u,l,c,d=!1;t||(t={}),n=t.debug||!1;try{if(s=i(),u=document.createRange(),l=document.getSelection(),(c=document.createElement("span")).textContent=e,c.ariaHidden="true",c.style.all="unset",c.style.position="fixed",c.style.top=0,c.style.clip="rect(0, 0, 0, 0)",c.style.whiteSpace="pre",c.style.webkitUserSelect="text",c.style.MozUserSelect="text",c.style.msUserSelect="text",c.style.userSelect="text",c.addEventListener("copy",(function(i){if(i.stopPropagation(),t.format)if(i.preventDefault(),"undefined"===typeof i.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=r[t.format]||r.default;window.clipboardData.setData(o,e)}else i.clipboardData.clearData(),i.clipboardData.setData(t.format,e);t.onCopy&&(i.preventDefault(),t.onCopy(i.clipboardData))})),document.body.appendChild(c),u.selectNodeContents(c),l.addRange(u),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");d=!0}catch(h){n&&console.error("unable to copy using execCommand: ",h),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(h){n&&console.error("unable to copy using clipboardData: ",h),n&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:o),window.prompt(a,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(u):l.removeAllRanges()),c&&document.body.removeChild(c),s()}return d}},64603:function(e,t){var n;n=function(e){e.version="1.2.2";var t=function(){for(var e=0,t=new Array(256),n=0;256!=n;++n)e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=n)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1,t[n]=e;return"undefined"!==typeof Int32Array?new Int32Array(t):t}(),n=function(e){var t=0,n=0,i=0,r="undefined"!==typeof Int32Array?new Int32Array(4096):new Array(4096);for(i=0;256!=i;++i)r[i]=e[i];for(i=0;256!=i;++i)for(n=e[i],t=256+i;t<4096;t+=256)n=r[t]=n>>>8^e[255&n];var o=[];for(i=1;16!=i;++i)o[i-1]="undefined"!==typeof Int32Array?r.subarray(256*i,256*i+256):r.slice(256*i,256*i+256);return o}(t),i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],u=n[5],l=n[6],c=n[7],d=n[8],h=n[9],f=n[10],p=n[11],g=n[12],v=n[13],m=n[14];e.table=t,e.bstr=function(e,n){for(var i=-1^n,r=0,o=e.length;r<o;)i=i>>>8^t[255&(i^e.charCodeAt(r++))];return~i},e.buf=function(e,n){for(var _=-1^n,y=e.length-15,b=0;b<y;)_=m[e[b++]^255&_]^v[e[b++]^_>>8&255]^g[e[b++]^_>>16&255]^p[e[b++]^_>>>24]^f[e[b++]]^h[e[b++]]^d[e[b++]]^c[e[b++]]^l[e[b++]]^u[e[b++]]^s[e[b++]]^a[e[b++]]^o[e[b++]]^r[e[b++]]^i[e[b++]]^t[e[b++]];for(y+=15;b<y;)_=_>>>8^t[255&(_^e[b++])];return~_},e.str=function(e,n){for(var i=-1^n,r=0,o=e.length,a=0,s=0;r<o;)(a=e.charCodeAt(r++))<128?i=i>>>8^t[255&(i^a)]:a<2048?i=(i=i>>>8^t[255&(i^(192|a>>6&31))])>>>8^t[255&(i^(128|63&a))]:a>=55296&&a<57344?(a=64+(1023&a),s=1023&e.charCodeAt(r++),i=(i=(i=(i=i>>>8^t[255&(i^(240|a>>8&7))])>>>8^t[255&(i^(128|a>>2&63))])>>>8^t[255&(i^(128|s>>6&15|(3&a)<<4))])>>>8^t[255&(i^(128|63&s))]):i=(i=(i=i>>>8^t[255&(i^(224|a>>12&15))])>>>8^t[255&(i^(128|a>>6&63))])>>>8^t[255&(i^(128|63&a))];return~i}},"undefined"===typeof DO_NOT_EXPORT_CRC?n(t):n({})},5426:function(e,t,n){"use strict";var i=n(58105),r={};var o=function(e){};function a(e,t,n,i,r,a,s,u){if(o(t),!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,i,r,a,s,u],d=0;(l=new Error(t.replace(/%s/g,(function(){return c[d++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}var s="mixins";e.exports=function(e,t,n){var o=[],u={mixins:"DEFINE_MANY",statics:"DEFINE_MANY",propTypes:"DEFINE_MANY",contextTypes:"DEFINE_MANY",childContextTypes:"DEFINE_MANY",getDefaultProps:"DEFINE_MANY_MERGED",getInitialState:"DEFINE_MANY_MERGED",getChildContext:"DEFINE_MANY_MERGED",render:"DEFINE_ONCE",componentWillMount:"DEFINE_MANY",componentDidMount:"DEFINE_MANY",componentWillReceiveProps:"DEFINE_MANY",shouldComponentUpdate:"DEFINE_ONCE",componentWillUpdate:"DEFINE_MANY",componentDidUpdate:"DEFINE_MANY",componentWillUnmount:"DEFINE_MANY",UNSAFE_componentWillMount:"DEFINE_MANY",UNSAFE_componentWillReceiveProps:"DEFINE_MANY",UNSAFE_componentWillUpdate:"DEFINE_MANY",updateComponent:"OVERRIDE_BASE"},l={getDerivedStateFromProps:"DEFINE_MANY_MERGED"},c={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n<t.length;n++)h(e,t[n])},childContextTypes:function(e,t){e.childContextTypes=i({},e.childContextTypes,t)},contextTypes:function(e,t){e.contextTypes=i({},e.contextTypes,t)},getDefaultProps:function(e,t){e.getDefaultProps?e.getDefaultProps=p(e.getDefaultProps,t):e.getDefaultProps=t},propTypes:function(e,t){e.propTypes=i({},e.propTypes,t)},statics:function(e,t){!function(e,t){if(!t)return;for(var n in t){var i=t[n];if(t.hasOwnProperty(n)){if(a(!(n in c),'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n),n in e)return a("DEFINE_MANY_MERGED"===(l.hasOwnProperty(n)?l[n]:null),"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),void(e[n]=p(e[n],i));e[n]=i}}}(e,t)},autobind:function(){}};function d(e,t){var n=u.hasOwnProperty(t)?u[t]:null;y.hasOwnProperty(t)&&a("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",t),e&&a("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",t)}function h(e,n){if(n){a("function"!==typeof n,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),a(!t(n),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var i=e.prototype,r=i.__reactAutoBindPairs;for(var o in n.hasOwnProperty(s)&&c.mixins(e,n.mixins),n)if(n.hasOwnProperty(o)&&o!==s){var l=n[o],h=i.hasOwnProperty(o);if(d(h,o),c.hasOwnProperty(o))c[o](e,l);else{var f=u.hasOwnProperty(o);if("function"===typeof l&&!f&&!h&&!1!==n.autobind)r.push(o,l),i[o]=l;else if(h){var v=u[o];a(f&&("DEFINE_MANY_MERGED"===v||"DEFINE_MANY"===v),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",v,o),"DEFINE_MANY_MERGED"===v?i[o]=p(i[o],l):"DEFINE_MANY"===v&&(i[o]=g(i[o],l))}else i[o]=l}}}else;}function f(e,t){for(var n in a(e&&t&&"object"===typeof e&&"object"===typeof t,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects."),t)t.hasOwnProperty(n)&&(a(void 0===e[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),e[n]=t[n]);return e}function p(e,t){return function(){var n=e.apply(this,arguments),i=t.apply(this,arguments);if(null==n)return i;if(null==i)return n;var r={};return f(r,n),f(r,i),r}}function g(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function v(e,t){return t.bind(e)}var m={componentDidMount:function(){this.__isMounted=!0}},_={componentWillUnmount:function(){this.__isMounted=!1}},y={replaceState:function(e,t){this.updater.enqueueReplaceState(this,e,t)},isMounted:function(){return!!this.__isMounted}},b=function(){};return i(b.prototype,e.prototype,y),function(e){var t=function(e,i,o){this.__reactAutoBindPairs.length&&function(e){for(var t=e.__reactAutoBindPairs,n=0;n<t.length;n+=2){var i=t[n],r=t[n+1];e[i]=v(e,r)}}(this),this.props=e,this.context=i,this.refs=r,this.updater=o||n,this.state=null;var s=this.getInitialState?this.getInitialState():null;a("object"===typeof s&&!Array.isArray(s),"%s.getInitialState(): must return an object or null",t.displayName||"ReactCompositeComponent"),this.state=s};for(var i in t.prototype=new b,t.prototype.constructor=t,t.prototype.__reactAutoBindPairs=[],o.forEach(h.bind(null,t)),h(t,m),h(t,e),h(t,_),t.getDefaultProps&&(t.defaultProps=t.getDefaultProps()),a(t.prototype.render,"createClass(...): Class specification must implement a `render` method."),u)t.prototype[i]||(t.prototype[i]=null);return t}}},94278:function(e,t,n){"use strict";var i=n(4519),r=n(5426);if("undefined"===typeof i)throw Error("create-react-class could not find the React object. If you are using script tags, make sure that React is being loaded before create-react-class.");var o=(new i.Component).updater;e.exports=r(i.Component,i.isValidElement,o)},77801:function(e){e.exports=Date.now||function(){return(new Date).getTime()}},99517:function(e){e.exports=function(){"use strict";var e=1e3,t=6e4,n=36e5,i="millisecond",r="second",o="minute",a="hour",s="day",u="week",l="month",c="quarter",d="year",h="date",f="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},m=function(e,t,n){var i=String(e);return!i||i.length>=t?e:""+Array(t+1-i.length).join(n)+e},_={s:m,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),i=Math.floor(n/60),r=n%60;return(t<=0?"+":"-")+m(i,2,"0")+":"+m(r,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var i=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(i,l),o=n-r<0,a=t.clone().add(i+(o?-1:1),l);return+(-(i+(n-r)/(o?r-a:a-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:l,y:d,w:u,d:s,D:h,h:a,m:o,s:r,ms:i,Q:c}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},y="en",b={};b[y]=v;var w=function(e){return e instanceof x},C=function e(t,n,i){var r;if(!t)return y;if("string"==typeof t){var o=t.toLowerCase();b[o]&&(r=o),n&&(b[o]=n,r=o);var a=t.split("-");if(!r&&a.length>1)return e(a[0])}else{var s=t.name;b[s]=t,r=s}return!i&&r&&(y=r),r||!i&&y},k=function(e,t){if(w(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new x(n)},S=_;S.l=C,S.i=w,S.w=function(e,t){return k(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var x=function(){function v(e){this.$L=C(e.locale,null,!0),this.parse(e)}var m=v.prototype;return m.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(S.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var i=t.match(p);if(i){var r=i[2]-1||0,o=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],r,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)):new Date(i[1],r,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},m.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},m.$utils=function(){return S},m.isValid=function(){return!(this.$d.toString()===f)},m.isSame=function(e,t){var n=k(e);return this.startOf(t)<=n&&n<=this.endOf(t)},m.isAfter=function(e,t){return k(e)<this.startOf(t)},m.isBefore=function(e,t){return this.endOf(t)<k(e)},m.$g=function(e,t,n){return S.u(e)?this[t]:this.set(n,e)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(e,t){var n=this,i=!!S.u(t)||t,c=S.p(e),f=function(e,t){var r=S.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return i?r:r.endOf(s)},p=function(e,t){return S.w(n.toDate()[e].apply(n.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},g=this.$W,v=this.$M,m=this.$D,_="set"+(this.$u?"UTC":"");switch(c){case d:return i?f(1,0):f(31,11);case l:return i?f(1,v):f(0,v+1);case u:var y=this.$locale().weekStart||0,b=(g<y?g+7:g)-y;return f(i?m-b:m+(6-b),v);case s:case h:return p(_+"Hours",0);case a:return p(_+"Minutes",1);case o:return p(_+"Seconds",2);case r:return p(_+"Milliseconds",3);default:return this.clone()}},m.endOf=function(e){return this.startOf(e,!1)},m.$set=function(e,t){var n,u=S.p(e),c="set"+(this.$u?"UTC":""),f=(n={},n[s]=c+"Date",n[h]=c+"Date",n[l]=c+"Month",n[d]=c+"FullYear",n[a]=c+"Hours",n[o]=c+"Minutes",n[r]=c+"Seconds",n[i]=c+"Milliseconds",n)[u],p=u===s?this.$D+(t-this.$W):t;if(u===l||u===d){var g=this.clone().set(h,1);g.$d[f](p),g.init(),this.$d=g.set(h,Math.min(this.$D,g.daysInMonth())).$d}else f&&this.$d[f](p);return this.init(),this},m.set=function(e,t){return this.clone().$set(e,t)},m.get=function(e){return this[S.p(e)]()},m.add=function(i,c){var h,f=this;i=Number(i);var p=S.p(c),g=function(e){var t=k(f);return S.w(t.date(t.date()+Math.round(e*i)),f)};if(p===l)return this.set(l,this.$M+i);if(p===d)return this.set(d,this.$y+i);if(p===s)return g(1);if(p===u)return g(7);var v=(h={},h[o]=t,h[a]=n,h[r]=e,h)[p]||1,m=this.$d.getTime()+i*v;return S.w(m,this)},m.subtract=function(e,t){return this.add(-1*e,t)},m.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||f;var i=e||"YYYY-MM-DDTHH:mm:ssZ",r=S.z(this),o=this.$H,a=this.$m,s=this.$M,u=n.weekdays,l=n.months,c=function(e,n,r,o){return e&&(e[n]||e(t,i))||r[n].slice(0,o)},d=function(e){return S.s(o%12||12,e,"0")},h=n.meridiem||function(e,t,n){var i=e<12?"AM":"PM";return n?i.toLowerCase():i},p={YY:String(this.$y).slice(-2),YYYY:this.$y,M:s+1,MM:S.s(s+1,2,"0"),MMM:c(n.monthsShort,s,l,3),MMMM:c(l,s),D:this.$D,DD:S.s(this.$D,2,"0"),d:String(this.$W),dd:c(n.weekdaysMin,this.$W,u,2),ddd:c(n.weekdaysShort,this.$W,u,3),dddd:u[this.$W],H:String(o),HH:S.s(o,2,"0"),h:d(1),hh:d(2),a:h(o,a,!0),A:h(o,a,!1),m:String(a),mm:S.s(a,2,"0"),s:String(this.$s),ss:S.s(this.$s,2,"0"),SSS:S.s(this.$ms,3,"0"),Z:r};return i.replace(g,(function(e,t){return t||p[e]||r.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(i,h,f){var p,g=S.p(h),v=k(i),m=(v.utcOffset()-this.utcOffset())*t,_=this-v,y=S.m(this,v);return y=(p={},p[d]=y/12,p[l]=y,p[c]=y/3,p[u]=(_-m)/6048e5,p[s]=(_-m)/864e5,p[a]=_/n,p[o]=_/t,p[r]=_/e,p)[g]||_,f?y:S.a(y)},m.daysInMonth=function(){return this.endOf(l).$D},m.$locale=function(){return b[this.$L]},m.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),i=C(e,t,!0);return i&&(n.$L=i),n},m.clone=function(){return S.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},v}(),L=x.prototype;return k.prototype=L,[["$ms",i],["$s",r],["$m",o],["$H",a],["$W",s],["$M",l],["$y",d],["$D",h]].forEach((function(e){L[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),k.extend=function(e,t){return e.$i||(e(t,x,k),e.$i=!0),k},k.locale=C,k.isDayjs=w,k.unix=function(e){return k(1e3*e)},k.en=b[y],k.Ls=b,k.p={},k}()},20707:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"af",weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),weekStart:1,weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"}};return n.default.locale(i,null,!0),i}(n(99517))},28106:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"am",weekdays:"\u12a5\u1211\u12f5_\u1230\u129e_\u121b\u12ad\u1230\u129e_\u1228\u1261\u12d5_\u1210\u1219\u1235_\u12a0\u122d\u1265_\u1245\u12f3\u121c".split("_"),weekdaysShort:"\u12a5\u1211\u12f5_\u1230\u129e_\u121b\u12ad\u1230_\u1228\u1261\u12d5_\u1210\u1219\u1235_\u12a0\u122d\u1265_\u1245\u12f3\u121c".split("_"),weekdaysMin:"\u12a5\u1211_\u1230\u129e_\u121b\u12ad_\u1228\u1261_\u1210\u1219_\u12a0\u122d_\u1245\u12f3".split("_"),months:"\u1303\u1295\u12cb\u122a_\u134c\u1265\u122f\u122a_\u121b\u122d\u127d_\u12a4\u1355\u122a\u120d_\u121c\u12ed_\u1301\u1295_\u1301\u120b\u12ed_\u12a6\u1308\u1235\u1275_\u1234\u1355\u1274\u121d\u1260\u122d_\u12a6\u12ad\u1276\u1260\u122d_\u1296\u126c\u121d\u1260\u122d_\u12f2\u1234\u121d\u1260\u122d".split("_"),monthsShort:"\u1303\u1295\u12cb_\u134c\u1265\u122f_\u121b\u122d\u127d_\u12a4\u1355\u122a_\u121c\u12ed_\u1301\u1295_\u1301\u120b\u12ed_\u12a6\u1308\u1235_\u1234\u1355\u1274_\u12a6\u12ad\u1276_\u1296\u126c\u121d_\u12f2\u1234\u121d".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"\u1260%s",past:"%s \u1260\u134a\u1275",s:"\u1325\u1242\u1275 \u1230\u12a8\u1295\u12f6\u127d",m:"\u12a0\u1295\u12f5 \u12f0\u1242\u1243",mm:"%d \u12f0\u1242\u1243\u12ce\u127d",h:"\u12a0\u1295\u12f5 \u1230\u12d3\u1275",hh:"%d \u1230\u12d3\u1273\u1275",d:"\u12a0\u1295\u12f5 \u1240\u1295",dd:"%d \u1240\u1293\u1275",M:"\u12a0\u1295\u12f5 \u12c8\u122d",MM:"%d \u12c8\u122b\u1275",y:"\u12a0\u1295\u12f5 \u12d3\u1218\u1275",yy:"%d \u12d3\u1218\u1273\u1275"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM D \u1363 YYYY",LLL:"MMMM D \u1363 YYYY HH:mm",LLLL:"dddd \u1363 MMMM D \u1363 YYYY HH:mm"},ordinal:function(e){return e+"\u129b"}};return n.default.locale(i,null,!0),i}(n(99517))},28440:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ar-dz",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u0623\u062d_\u0625\u062b_\u062b\u0644\u0627_\u0623\u0631_\u062e\u0645_\u062c\u0645_\u0633\u0628".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return n.default.locale(i,null,!0),i}(n(99517))},32087:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ar-iq",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0634\u0628\u0627\u0637_\u0622\u0630\u0627\u0631_\u0646\u064a\u0633\u0627\u0646_\u0623\u064a\u0627\u0631_\u062d\u0632\u064a\u0631\u0627\u0646_\u062a\u0645\u0648\u0632_\u0622\u0628_\u0623\u064a\u0644\u0648\u0644_\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),weekStart:1,weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0634\u0628\u0627\u0637_\u0622\u0630\u0627\u0631_\u0646\u064a\u0633\u0627\u0646_\u0623\u064a\u0627\u0631_\u062d\u0632\u064a\u0631\u0627\u0646_\u062a\u0645\u0648\u0632_\u0622\u0628_\u0623\u064a\u0644\u0648\u0644_\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return n.default.locale(i,null,!0),i}(n(99517))},69545:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ar-kw",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return n.default.locale(i,null,!0),i}(n(99517))},28263:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ar-ly",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekStart:6,weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(e){return e},meridiem:function(e){return e>12?"\u0645":"\u0635"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},93205:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ar-ma",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekStart:6,weekdaysShort:"\u0627\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return n.default.locale(i,null,!0),i}(n(99517))},10681:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ar-sa",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return n.default.locale(i,null,!0),i}(n(99517))},58187:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ar-tn",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekStart:1,weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"\u0645":"\u0635"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"}};return n.default.locale(i,null,!0),i}(n(99517))},32871:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i="\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),r={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},o={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},a={name:"ar",weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),months:i,monthsShort:i,weekStart:6,relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",m:"\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",yy:"%d \u0623\u0639\u0648\u0627\u0645"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,(function(e){return o[e]})).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return r[e]})).replace(/,/g,"\u060c")},ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return n.default.locale(a,null,!0),a}(n(99517))},40885:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"az",weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"bir ne\xe7\u0259 saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},ordinal:function(e){return e}};return n.default.locale(i,null,!0),i}(n(99517))},56654:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"be",weekdays:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),months:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),weekStart:1,weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},77737:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"bg",weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekStart:1,ordinal:function(e){var t=e%100;if(t>10&&t<20)return e+"-\u0442\u0438";var n=e%10;return 1===n?e+"-\u0432\u0438":2===n?e+"-\u0440\u0438":7===n||8===n?e+"-\u043c\u0438":e+"-\u0442\u0438"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"}};return n.default.locale(i,null,!0),i}(n(99517))},69666:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"bi",weekdays:"Sande_Mande_Tusde_Wenesde_Tosde_Fraede_Sarade".split("_"),months:"Januari_Februari_Maj_Eprel_Mei_Jun_Julae_Okis_Septemba_Oktoba_Novemba_Disemba".split("_"),weekStart:1,weekdaysShort:"San_Man_Tus_Wen_Tos_Frae_Sar".split("_"),monthsShort:"Jan_Feb_Maj_Epr_Mai_Jun_Jul_Oki_Sep_Okt_Nov_Dis".split("_"),weekdaysMin:"San_Ma_Tu_We_To_Fr_Sar".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"lo %s",past:"%s bifo",s:"sam seken",m:"wan minit",mm:"%d minit",h:"wan haoa",hh:"%d haoa",d:"wan dei",dd:"%d dei",M:"wan manis",MM:"%d manis",y:"wan yia",yy:"%d yia"}};return n.default.locale(i,null,!0),i}(n(99517))},27308:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"bm",weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),weekStart:1,weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"}};return n.default.locale(i,null,!0),i}(n(99517))},13561:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},r={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},o={name:"bn-bd",weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u0983_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekStart:0,preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return i[e]}))},ordinal:function(e){var t=["\u0987","\u09b2\u09be","\u09b0\u09be","\u09a0\u09be","\u09b6\u09c7"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"},formats:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY \u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09be\u09ac\u09cd\u09a6",LL:"D MMMM YYYY \u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09be\u09ac\u09cd\u09a6",LLL:"D MMMM YYYY \u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09be\u09ac\u09cd\u09a6, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY \u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09be\u09ac\u09cd\u09a6, A h:mm \u09b8\u09ae\u09df"},meridiem:function(e){return e<4?"\u09b0\u09be\u09a4":e<6?"\u09ad\u09cb\u09b0":e<12?"\u09b8\u0995\u09be\u09b2":e<15?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<18?"\u09ac\u09bf\u0995\u09be\u09b2":e<20?"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be":"\u09b0\u09be\u09a4"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"}};return n.default.locale(o,null,!0),o}(n(99517))},95051:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},r={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},o={name:"bn",weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u0983_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return i[e]}))},ordinal:function(e){return e},formats:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"}};return n.default.locale(o,null,!0),o}(n(99517))},87409:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"bo",weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f7c\u0f53\u0f0b\u0f63\u0f0b",s:"\u0f4f\u0f7c\u0f42\u0f0b\u0f59\u0f58\u0f0b",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b",mm:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b %d",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b",hh:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b %d",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b",dd:"\u0f49\u0f72\u0f53\u0f0b %d",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b",MM:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b %d",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b",yy:"\u0f63\u0f7c\u0f0b %d"}};return n.default.locale(i,null,!0),i}(n(99517))},81149:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function i(e){return e>9?i(e%10):e}function r(e,t,n){return e+" "+function(e,t){return 2===t?function(e){return{m:"v",b:"v",d:"z"}[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}var o={name:"br",weekdays:"Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn".split("_"),months:"Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),weekStart:1,weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),monthsShort:"Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},relativeTime:{future:"a-benn %s",past:"%s \u02bczo",s:"un nebeud segondenno\xf9",m:"ur vunutenn",mm:r,h:"un eur",hh:"%d eur",d:"un devezh",dd:r,M:"ur miz",MM:r,y:"ur bloaz",yy:function(e){switch(i(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},meridiem:function(e){return e<12?"a.m.":"g.m."}};return n.default.locale(o,null,!0),o}(n(99517))},52362:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"bs",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},30242:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ca",weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),months:"Gener_Febrer_Mar\xe7_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Mar\xe7_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",ll:"D MMM YYYY",lll:"D MMM YYYY, H:mm",llll:"ddd D MMM YYYY, H:mm"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:function(e){return e+(1===e||3===e?"r":2===e?"n":4===e?"t":"\xe8")}};return n.default.locale(i,null,!0),i}(n(99517))},61822:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function i(e){return e>1&&e<5&&1!=~~(e/10)}function r(e,t,n,r){var o=e+" ";switch(n){case"s":return t||r?"p\xe1r sekund":"p\xe1r sekundami";case"m":return t?"minuta":r?"minutu":"minutou";case"mm":return t||r?o+(i(e)?"minuty":"minut"):o+"minutami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?o+(i(e)?"hodiny":"hodin"):o+"hodinami";case"d":return t||r?"den":"dnem";case"dd":return t||r?o+(i(e)?"dny":"dn\xed"):o+"dny";case"M":return t||r?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return t||r?o+(i(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):o+"m\u011bs\xedci";case"y":return t||r?"rok":"rokem";case"yy":return t||r?o+(i(e)?"roky":"let"):o+"lety"}}var o={name:"cs",weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),months:"leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),monthsShort:"led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r}};return n.default.locale(o,null,!0),o}(n(99517))},52289:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"cv",weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),weekStart:1,weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},65452:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"cy",weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),weekStart:1,weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"}};return n.default.locale(i,null,!0),i}(n(99517))},27498:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"da",weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n._man._tirs._ons._tors._fre._l\xf8r.".split("_"),weekdaysMin:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.".split("_"),weekStart:1,ordinal:function(e){return e+"."},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"}};return n.default.locale(i,null,!0),i}(n(99517))},13578:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function r(e,t,n){var r=i[n];return Array.isArray(r)&&(r=r[t?0:1]),r.replace("%d",e)}var o={name:"de-at",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r}};return n.default.locale(o,null,!0),o}(n(99517))},18534:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function r(e,t,n){var r=i[n];return Array.isArray(r)&&(r=r[t?0:1]),r.replace("%d",e)}var o={name:"de-ch",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r}};return n.default.locale(o,null,!0),o}(n(99517))},83467:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function r(e,t,n){var r=i[n];return Array.isArray(r)&&(r=r[t?0:1]),r.replace("%d",e)}var o={name:"de",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r}};return n.default.locale(o,null,!0),o}(n(99517))},69174:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"dv",weekdays:"\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8_\u0780\u07aa\u0786\u07aa\u0783\u07aa_\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa".split("_"),months:"\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9_\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9_\u0789\u07a7\u0783\u07a8\u0797\u07aa_\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa_\u0789\u07ad_\u0796\u07ab\u0782\u07b0_\u0796\u07aa\u078d\u07a6\u0787\u07a8_\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa_\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa_\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa_\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa_\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa".split("_"),weekStart:7,weekdaysShort:"\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8_\u0780\u07aa\u0786\u07aa\u0783\u07aa_\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa".split("_"),monthsShort:"\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9_\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9_\u0789\u07a7\u0783\u07a8\u0797\u07aa_\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa_\u0789\u07ad_\u0796\u07ab\u0782\u07b0_\u0796\u07aa\u078d\u07a6\u0787\u07a8_\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa_\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa_\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa_\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa_\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa".split("_"),weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"}};return n.default.locale(i,null,!0),i}(n(99517))},90049:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"el",weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),months:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03b9_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0\u03c4_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),ordinal:function(e){return e},weekStart:1,relativeTime:{future:"\u03c3\u03b5 %s",past:"\u03c0\u03c1\u03b9\u03bd %s",s:"\u03bc\u03b5\u03c1\u03b9\u03ba\u03ac \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1 \u03bc\u03ae\u03bd\u03b1",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1 \u03c7\u03c1\u03cc\u03bd\u03bf",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"}};return n.default.locale(i,null,!0),i}(n(99517))},52875:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"en-au",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return n.default.locale(i,null,!0),i}(n(99517))},42854:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"en-ca",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return n.default.locale(i,null,!0),i}(n(99517))},73200:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"en-gb",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}};return n.default.locale(i,null,!0),i}(n(99517))},69027:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"en-ie",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return n.default.locale(i,null,!0),i}(n(99517))},86886:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"en-il",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return n.default.locale(i,null,!0),i}(n(99517))},52882:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"en-in",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}};return n.default.locale(i,null,!0),i}(n(99517))},85822:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"en-nz",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return n.default.locale(i,null,!0),i}(n(99517))},47175:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"en-sg",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return n.default.locale(i,null,!0),i}(n(99517))},45611:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"en-tt",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}};return n.default.locale(i,null,!0),i}(n(99517))},22898:function(e){e.exports=function(){"use strict";return{name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}}}()},28486:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"eo",weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),weekStart:1,weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_a\u016dg_sep_okt_nov_dec".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"}};return n.default.locale(i,null,!0),i}(n(99517))},48402:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"es-do",weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekStart:1,relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:function(e){return e+"\xba"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return n.default.locale(i,null,!0),i}(n(99517))},70610:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"es-mx",weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:function(e){return e+"\xba"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},38309:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"es-pr",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:function(e){return e+"\xba"}};return n.default.locale(i,null,!0),i}(n(99517))},9842:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"es-us",weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:function(e){return e+"\xba"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return n.default.locale(i,null,!0),i}(n(99517))},59110:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"es",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:function(e){return e+"\xba"}};return n.default.locale(i,null,!0),i}(n(99517))},65104:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function i(e,t,n,i){var r={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],m:["\xfche minuti","\xfcks minut"],mm:["%d minuti","%d minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:["%d tunni","%d tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:["%d kuu","%d kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:["%d aasta","%d aastat"]};return t?(r[n][2]?r[n][2]:r[n][1]).replace("%d",e):(i?r[n][0]:r[n][1]).replace("%d",e)}var r={name:"et",weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:"%d p\xe4eva",M:i,MM:i,y:i,yy:i},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return n.default.locale(r,null,!0),r}(n(99517))},95386:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"eu",weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),weekStart:1,weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"}};return n.default.locale(i,null,!0),i}(n(99517))},26736:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"fa",weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c_\u062f\u0648_\u0633\u0647\u200c_\u0686\u0647_\u067e\u0646_\u062c\u0645_\u0634\u0646".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),weekStart:6,months:"\u0641\u0631\u0648\u0631\u062f\u06cc\u0646_\u0627\u0631\u062f\u06cc\u0628\u0647\u0634\u062a_\u062e\u0631\u062f\u0627\u062f_\u062a\u06cc\u0631_\u0645\u0631\u062f\u0627\u062f_\u0634\u0647\u0631\u06cc\u0648\u0631_\u0645\u0647\u0631_\u0622\u0628\u0627\u0646_\u0622\u0630\u0631_\u062f\u06cc_\u0628\u0647\u0645\u0646_\u0627\u0633\u0641\u0646\u062f".split("_"),monthsShort:"\u0641\u0631\u0648_\u0627\u0631\u062f_\u062e\u0631\u062f_\u062a\u06cc\u0631_\u0645\u0631\u062f_\u0634\u0647\u0631_\u0645\u0647\u0631_\u0622\u0628\u0627_\u0622\u0630\u0631_\u062f\u06cc_\u0628\u0647\u0645_\u0627\u0633\u0641".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"}};return n.default.locale(i,null,!0),i}(n(99517))},22614:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function i(e,t,n,i){var r={s:"muutama sekunti",m:"minuutti",mm:"%d minuuttia",h:"tunti",hh:"%d tuntia",d:"p\xe4iv\xe4",dd:"%d p\xe4iv\xe4\xe4",M:"kuukausi",MM:"%d kuukautta",y:"vuosi",yy:"%d vuotta",numbers:"nolla_yksi_kaksi_kolme_nelj\xe4_viisi_kuusi_seitsem\xe4n_kahdeksan_yhdeks\xe4n".split("_")},o={s:"muutaman sekunnin",m:"minuutin",mm:"%d minuutin",h:"tunnin",hh:"%d tunnin",d:"p\xe4iv\xe4n",dd:"%d p\xe4iv\xe4n",M:"kuukauden",MM:"%d kuukauden",y:"vuoden",yy:"%d vuoden",numbers:"nollan_yhden_kahden_kolmen_nelj\xe4n_viiden_kuuden_seitsem\xe4n_kahdeksan_yhdeks\xe4n".split("_")},a=i&&!t?o:r,s=a[n];return e<10?s.replace("%d",a.numbers[e]):s.replace("%d",e)}var r={name:"fi",weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM[ta] YYYY",LLL:"D. MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, D. MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"D. MMM YYYY",lll:"D. MMM YYYY, [klo] HH.mm",llll:"ddd, D. MMM YYYY, [klo] HH.mm"}};return n.default.locale(r,null,!0),r}(n(99517))},99022:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"fo",weekdays:"sunnudagur_m\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),months:"januar_februar_mars_apr\xedl_mai_juni_juli_august_september_oktober_november_desember".split("_"),weekStart:1,weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_fr_le".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"}};return n.default.locale(i,null,!0),i}(n(99517))},28983:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"fr-ca",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"}};return n.default.locale(i,null,!0),i}(n(99517))},49347:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"fr-ch",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),weekStart:1,weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"}};return n.default.locale(i,null,!0),i}(n(99517))},43344:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"fr",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")}};return n.default.locale(i,null,!0),i}(n(99517))},49007:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"fy",weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),weekStart:1,weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien min\xfat",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"}};return n.default.locale(i,null,!0),i}(n(99517))},54199:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ga",weekdays:"D\xe9 Domhnaigh_D\xe9 Luain_D\xe9 M\xe1irt_D\xe9 C\xe9adaoin_D\xe9ardaoin_D\xe9 hAoine_D\xe9 Satharn".split("_"),months:"Ean\xe1ir_Feabhra_M\xe1rta_Aibre\xe1n_Bealtaine_M\xe9itheamh_I\xfail_L\xfanasa_Me\xe1n F\xf3mhair_Deaireadh F\xf3mhair_Samhain_Nollaig".split("_"),weekStart:1,weekdaysShort:"Dom_Lua_M\xe1i_C\xe9a_D\xe9a_hAo_Sat".split("_"),monthsShort:"Ean\xe1_Feab_M\xe1rt_Aibr_Beal_M\xe9it_I\xfail_L\xfana_Me\xe1n_Deai_Samh_Noll".split("_"),weekdaysMin:"Do_Lu_M\xe1_Ce_D\xe9_hA_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xed",y:"bliain",yy:"%d bliain"}};return n.default.locale(i,null,!0),i}(n(99517))},97279:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"gd",weekdays:"Did\xf2mhnaich_Diluain_Dim\xe0irt_Diciadain_Diardaoin_Dihaoine_Disathairne".split("_"),months:"Am Faoilleach_An Gearran_Am M\xe0rt_An Giblean_An C\xe8itean_An t-\xd2gmhios_An t-Iuchar_An L\xf9nastal_An t-Sultain_An D\xe0mhair_An t-Samhain_An D\xf9bhlachd".split("_"),weekStart:1,weekdaysShort:"Did_Dil_Dim_Dic_Dia_Dih_Dis".split("_"),monthsShort:"Faoi_Gear_M\xe0rt_Gibl_C\xe8it_\xd2gmh_Iuch_L\xf9n_Sult_D\xe0mh_Samh_D\xf9bh".split("_"),weekdaysMin:"D\xf2_Lu_M\xe0_Ci_Ar_Ha_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"}};return n.default.locale(i,null,!0),i}(n(99517))},58326:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"gl",weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),weekStart:1,weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),ordinal:function(e){return e+"\xba"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"fai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"}};return n.default.locale(i,null,!0),i}(n(99517))},35618:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"gom-latn",weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),weekStart:1,weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"}};return n.default.locale(i,null,!0),i}(n(99517))},72741:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"gu",weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ac7\u0ab9\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"}};return n.default.locale(i,null,!0),i}(n(99517))},26006:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:"%d \u05e9\u05e2\u05d5\u05ea",hh2:"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd",d:"\u05d9\u05d5\u05dd",dd:"%d \u05d9\u05de\u05d9\u05dd",dd2:"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd",M:"\u05d7\u05d5\u05d3\u05e9",MM:"%d \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd",MM2:"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd",y:"\u05e9\u05e0\u05d4",yy:"%d \u05e9\u05e0\u05d9\u05dd",yy2:"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd"};function r(e,t,n){return(i[n+(2===e?"2":"")]||i[n]).replace("%d",e)}var o={name:"he",weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5_\u05e9\u05f3".split("_"),months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5_\u05e4\u05d1\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0_\u05d9\u05d5\u05dc_\u05d0\u05d5\u05d2_\u05e1\u05e4\u05d8_\u05d0\u05d5\u05e7_\u05e0\u05d5\u05d1_\u05d3\u05e6\u05de".split("_"),relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},ordinal:function(e){return e},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"}};return n.default.locale(o,null,!0),o}(n(99517))},95160:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"hi",weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"}};return n.default.locale(i,null,!0),i}(n(99517))},15417:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i="sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),r="sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),o=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/,a=function(e,t){return o.test(t)?i[e.month()]:r[e.month()]};a.s=r,a.f=i;var s={name:"hr",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),months:a,monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},relativeTime:{future:"za %s",past:"prije %s",s:"sekunda",m:"minuta",mm:"%d minuta",h:"sat",hh:"%d sati",d:"dan",dd:"%d dana",M:"mjesec",MM:"%d mjeseci",y:"godina",yy:"%d godine"},ordinal:function(e){return e+"."}};return n.default.locale(s,null,!0),s}(n(99517))},15123:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ht",weekdays:"dimanch_lendi_madi_m\xe8kredi_jedi_vandredi_samdi".split("_"),months:"janvye_fevriye_mas_avril_me_jen_jiy\xe8_out_septanm_okt\xf2b_novanm_desanm".split("_"),weekdaysShort:"dim._len._mad._m\xe8k._jed._van._sam.".split("_"),monthsShort:"jan._fev._mas_avr._me_jen_jiy\xe8._out_sept._okt._nov._des.".split("_"),weekdaysMin:"di_le_ma_m\xe8_je_va_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"nan %s",past:"sa gen %s",s:"k\xe8k segond",m:"yon minit",mm:"%d minit",h:"in\xe8dtan",hh:"%d z\xe8",d:"yon jou",dd:"%d jou",M:"yon mwa",MM:"%d mwa",y:"yon ane",yy:"%d ane"}};return n.default.locale(i,null,!0),i}(n(99517))},4802:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"hu",weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s m\xfalva",past:"%s",s:function(e,t,n,i){return"n\xe9h\xe1ny m\xe1sodperc"+(i||t?"":"e")},m:function(e,t,n,i){return"egy perc"+(i||t?"":"e")},mm:function(e,t,n,i){return e+" perc"+(i||t?"":"e")},h:function(e,t,n,i){return"egy "+(i||t?"\xf3ra":"\xf3r\xe1ja")},hh:function(e,t,n,i){return e+" "+(i||t?"\xf3ra":"\xf3r\xe1ja")},d:function(e,t,n,i){return"egy "+(i||t?"nap":"napja")},dd:function(e,t,n,i){return e+" "+(i||t?"nap":"napja")},M:function(e,t,n,i){return"egy "+(i||t?"h\xf3nap":"h\xf3napja")},MM:function(e,t,n,i){return e+" "+(i||t?"h\xf3nap":"h\xf3napja")},y:function(e,t,n,i){return"egy "+(i||t?"\xe9v":"\xe9ve")},yy:function(e,t,n,i){return e+" "+(i||t?"\xe9v":"\xe9ve")}},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},82474:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"hy-am",weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),months:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),weekStart:1,weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"}};return n.default.locale(i,null,!0),i}(n(99517))},59745:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"id",weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(e){return e+"."}};return n.default.locale(i,null,!0),i}(n(99517))},48139:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={s:["nokkrar sek\xfandur","nokkrar sek\xfandur","nokkrum sek\xfandum"],m:["m\xedn\xfata","m\xedn\xfatu","m\xedn\xfatu"],mm:["m\xedn\xfatur","m\xedn\xfatur","m\xedn\xfatum"],h:["klukkustund","klukkustund","klukkustund"],hh:["klukkustundir","klukkustundir","klukkustundum"],d:["dagur","dag","degi"],dd:["dagar","daga","d\xf6gum"],M:["m\xe1nu\xf0ur","m\xe1nu\xf0","m\xe1nu\xf0i"],MM:["m\xe1nu\xf0ir","m\xe1nu\xf0i","m\xe1nu\xf0um"],y:["\xe1r","\xe1r","\xe1ri"],yy:["\xe1r","\xe1r","\xe1rum"]};function r(e,t,n,r){var o=function(e,t,n,r){var o=r?0:n?1:2,a=2===e.length&&t%10==1?e[0]:e,s=i[a][o];return 1===e.length?s:"%d "+s}(n,e,r,t);return o.replace("%d",e)}var o={name:"is",weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),weekStart:1,weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r}};return n.default.locale(o,null,!0),o}(n(99517))},32436:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"it-ch",weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"}};return n.default.locale(i,null,!0),i}(n(99517))},46869:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"it",weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"qualche secondo",m:"un minuto",mm:"%d minuti",h:"un' ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:function(e){return e+"\xba"}};return n.default.locale(i,null,!0),i}(n(99517))},7942:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ja",weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),ordinal:function(e){return e+"\u65e5"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiem:function(e){return e<12?"\u5348\u524d":"\u5348\u5f8c"},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}};return n.default.locale(i,null,!0),i}(n(99517))},24512:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"jv",weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),weekStart:1,weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"}};return n.default.locale(i,null,!0),i}(n(99517))},11499:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ka",weekdays:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),months:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"%s \u10e8\u10d4\u10db\u10d3\u10d4\u10d2",past:"%s \u10ec\u10d8\u10dc",s:"\u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8\u10e1",d:"\u10d3\u10e6\u10d4\u10e1",dd:"%d \u10d3\u10e6\u10d8\u10e1 \u10d2\u10d0\u10dc\u10db\u10d0\u10d5\u10da\u10dd\u10d1\u10d0\u10e8\u10d8",M:"\u10d7\u10d5\u10d8\u10e1",MM:"%d \u10d7\u10d5\u10d8\u10e1",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10da\u10d8\u10e1"},ordinal:function(e){return e}};return n.default.locale(i,null,!0),i}(n(99517))},17700:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"kk",weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekStart:1,relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},42661:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"km",weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekStart:1,weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"}};return n.default.locale(i,null,!0),i}(n(99517))},4439:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"kn",weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"}};return n.default.locale(i,null,!0),i}(n(99517))},24989:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ko",weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},meridiem:function(e){return e<12?"\uc624\uc804":"\uc624\ud6c4"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"}};return n.default.locale(i,null,!0),i}(n(99517))},31316:function(e,t,n){!function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(t),r={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},o={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},a=["\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u062f\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"],s={name:"ku",months:a,monthsShort:a,weekdays:"\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5_\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5_\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5_\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5_\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5_\u0647\u06d5\u06cc\u0646\u06cc_\u0634\u06d5\u0645\u0645\u06d5".split("_"),weekdaysShort:"\u06cc\u06d5\u06a9\u0634\u06d5\u0645_\u062f\u0648\u0648\u0634\u06d5\u0645_\u0633\u06ce\u0634\u06d5\u0645_\u0686\u0648\u0627\u0631\u0634\u06d5\u0645_\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645_\u0647\u06d5\u06cc\u0646\u06cc_\u0634\u06d5\u0645\u0645\u06d5".split("_"),weekStart:6,weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647\u0640_\u0634".split("_"),preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,(function(e){return o[e]})).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return r[e]})).replace(/,/g,"\u060c")},ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiem:function(e){return e<12?"\u067e.\u0646":"\u062f.\u0646"},relativeTime:{future:"\u0644\u06d5 %s",past:"\u0644\u06d5\u0645\u06d5\u0648\u067e\u06ce\u0634 %s",s:"\u0686\u06d5\u0646\u062f \u0686\u0631\u06a9\u06d5\u06cc\u06d5\u06a9",m:"\u06cc\u06d5\u06a9 \u062e\u0648\u0644\u06d5\u06a9",mm:"%d \u062e\u0648\u0644\u06d5\u06a9",h:"\u06cc\u06d5\u06a9 \u06a9\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u06a9\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u06d5\u06a9 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u06d5\u06a9 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u06d5\u06a9 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"}};i.default.locale(s,null,!0),e.default=s,e.englishToArabicNumbersMap=r,Object.defineProperty(e,"__esModule",{value:!0})}(t,n(99517))},88412:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ky",weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),weekStart:1,weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"}};return n.default.locale(i,null,!0),i}(n(99517))},69139:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"lb",weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),weekStart:1,weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"}};return n.default.locale(i,null,!0),i}(n(99517))},69052:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"lo",weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"}};return n.default.locale(i,null,!0),i}(n(99517))},41244:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i="sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),r="sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),o=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,a=function(e,t){return o.test(t)?i[e.month()]:r[e.month()]};a.s=r,a.f=i;var s={name:"lt",weekdays:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),weekdaysShort:"sek_pir_ant_tre_ket_pen_\u0161e\u0161".split("_"),weekdaysMin:"s_p_a_t_k_pn_\u0161".split("_"),months:a,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"u\u017e %s",past:"prie\u0161 %s",s:"kelias sekundes",m:"minut\u0119",mm:"%d minutes",h:"valand\u0105",hh:"%d valandas",d:"dien\u0105",dd:"%d dienas",M:"m\u0117nes\u012f",MM:"%d m\u0117nesius",y:"metus",yy:"%d metus"},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"}};return n.default.locale(s,null,!0),s}(n(99517))},99648:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"lv",weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),weekStart:1,weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:"da\u017e\u0101m sekund\u0113m",m:"min\u016btes",mm:"%d min\u016bt\u0113m",h:"stundas",hh:"%d stund\u0101m",d:"dienas",dd:"%d dien\u0101m",M:"m\u0113ne\u0161a",MM:"%d m\u0113ne\u0161iem",y:"gada",yy:"%d gadiem"}};return n.default.locale(i,null,!0),i}(n(99517))},81888:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"me",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},87700:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"mi",weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),weekStart:1,weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"}};return n.default.locale(i,null,!0),i}(n(99517))},14880:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"mk",weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),weekStart:1,weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"\u043f\u043e\u0441\u043b\u0435 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"}};return n.default.locale(i,null,!0),i}(n(99517))},71405:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ml",weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"}};return n.default.locale(i,null,!0),i}(n(99517))},1792:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"mn",weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},relativeTime:{future:"%s",past:"%s",s:"\u0441\u0430\u044f\u0445\u0430\u043d",m:"\u043c",mm:"%d\u043c",h:"1\u0446",hh:"%d\u0446",d:"1\u04e9",dd:"%d\u04e9",M:"1\u0441",MM:"%d\u0441",y:"1\u0436",yy:"%d\u0436"}};return n.default.locale(i,null,!0),i}(n(99517))},62936:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"mr",weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"}};return n.default.locale(i,null,!0),i}(n(99517))},4967:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ms-my",weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),weekStart:1,weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"}};return n.default.locale(i,null,!0),i}(n(99517))},23603:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ms",weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH.mm",LLLL:"dddd, D MMMM YYYY HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(e){return e+"."}};return n.default.locale(i,null,!0),i}(n(99517))},76408:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"mt",weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),weekStart:1,weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"}};return n.default.locale(i,null,!0),i}(n(99517))},72460:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"my",weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),weekStart:1,weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"}};return n.default.locale(i,null,!0),i}(n(99517))},27680:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"nb",weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"}};return n.default.locale(i,null,!0),i}(n(99517))},23964:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ne",weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),relativeTime:{future:"%s \u092a\u091b\u093f",past:"%s \u0905\u0918\u093f",s:"\u0938\u0947\u0915\u0947\u0928\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u0918\u0928\u094d\u091f\u093e",hh:"%d \u0918\u0928\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},ordinal:function(e){return(""+e).replace(/\d/g,(function(e){return"\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f"[e]}))},formats:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"}};return n.default.locale(i,null,!0),i}(n(99517))},76803:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"nl-be",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),weekStart:1,weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"}};return n.default.locale(i,null,!0),i}(n(99517))},90792:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"nl",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),ordinal:function(e){return"["+e+(1===e||8===e||e>=20?"ste":"de")+"]"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"een minuut",mm:"%d minuten",h:"een uur",hh:"%d uur",d:"een dag",dd:"%d dagen",M:"een maand",MM:"%d maanden",y:"een jaar",yy:"%d jaar"}};return n.default.locale(i,null,!0),i}(n(99517))},23693:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"nn",weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_la".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eitt minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein m\xe5nad",MM:"%d m\xe5nadar",y:"eitt \xe5r",yy:"%d \xe5r"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},76136:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"oc-lnc",weekdays:"dimenge_diluns_dimars_dim\xe8cres_dij\xf2us_divendres_dissabte".split("_"),weekdaysShort:"Dg_Dl_Dm_Dc_Dj_Dv_Ds".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),months:"geni\xe8r_febri\xe8r_mar\xe7_abrial_mai_junh_julhet_agost_setembre_oct\xf2bre_novembre_decembre".split("_"),monthsShort:"gen_feb_mar\xe7_abr_mai_junh_julh_ago_set_oct_nov_dec".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"unas segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},ordinal:function(e){return e+"\xba"}};return n.default.locale(i,null,!0),i}(n(99517))},8565:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"pa-in",weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"}};return n.default.locale(i,null,!0),i}(n(99517))},86348:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function i(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function r(e,t,n){var r=e+" ";switch(n){case"m":return t?"minuta":"minut\u0119";case"mm":return r+(i(e)?"minuty":"minut");case"h":return t?"godzina":"godzin\u0119";case"hh":return r+(i(e)?"godziny":"godzin");case"MM":return r+(i(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return r+(i(e)?"lata":"lat")}}var o="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_"),a="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),s=/D MMMM/,u=function(e,t){return s.test(t)?o[e.month()]:a[e.month()]};u.s=a,u.f=o;var l={name:"pl",weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),months:u,monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:r,mm:r,h:r,hh:r,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:r,y:"rok",yy:r},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return n.default.locale(l,null,!0),l}(n(99517))},86064:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"pt-br",weekdays:"domingo_segunda-feira_ter\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_s\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),ordinal:function(e){return e+"\xba"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"}};return n.default.locale(i,null,!0),i}(n(99517))},68239:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"pt",weekdays:"domingo_segunda-feira_ter\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sab".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_Sa".split("_"),months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),ordinal:function(e){return e+"\xba"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"alguns segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"}};return n.default.locale(i,null,!0),i}(n(99517))},70233:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"rn",weekdays:"Ku wa Mungu_Ku wa Mbere_Ku wa Kabiri_Ku wa Gatatu_Ku wa Kane_Ku wa Gatanu_Ku wa Gatandatu".split("_"),weekdaysShort:"Kngu_Kmbr_Kbri_Ktat_Kkan_Ktan_Kdat".split("_"),weekdaysMin:"K7_K1_K2_K3_K4_K5_K6".split("_"),months:"Nzero_Ruhuhuma_Ntwarante_Ndamukiza_Rusama_Ruhenshi_Mukakaro_Myandagaro_Nyakanga_Gitugutu_Munyonyo_Kigarama".split("_"),monthsShort:"Nzer_Ruhuh_Ntwar_Ndam_Rus_Ruhen_Muk_Myand_Nyak_Git_Muny_Kig".split("_"),weekStart:1,ordinal:function(e){return e},relativeTime:{future:"mu %s",past:"%s",s:"amasegonda",m:"Umunota",mm:"%d iminota",h:"isaha",hh:"%d amasaha",d:"Umunsi",dd:"%d iminsi",M:"ukwezi",MM:"%d amezi",y:"umwaka",yy:"%d imyaka"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},9656:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ro",weekdays:"Duminic\u0103_Luni_Mar\u021bi_Miercuri_Joi_Vineri_S\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"peste %s",past:"acum %s",s:"c\xe2teva secunde",m:"un minut",mm:"%d minute",h:"o or\u0103",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lun\u0103",MM:"%d luni",y:"un an",yy:"%d ani"},ordinal:function(e){return e}};return n.default.locale(i,null,!0),i}(n(99517))},98848:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i="\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),r="\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),o="\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),a="\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),s=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function u(e,t,n){var i,r;return"m"===n?t?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+(i=+e,r={mm:t?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[n].split("_"),i%10==1&&i%100!=11?r[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?r[1]:r[2])}var l=function(e,t){return s.test(t)?i[e.month()]:r[e.month()]};l.s=r,l.f=i;var c=function(e,t){return s.test(t)?o[e.month()]:a[e.month()]};c.s=a,c.f=o;var d={name:"ru",weekdays:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u0432\u0441\u043a_\u043f\u043d\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043f\u0442\u043d_\u0441\u0431\u0442".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),months:l,monthsShort:c,weekStart:1,yearStart:4,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",m:u,mm:u,h:"\u0447\u0430\u0441",hh:u,d:"\u0434\u0435\u043d\u044c",dd:u,M:"\u043c\u0435\u0441\u044f\u0446",MM:u,y:"\u0433\u043e\u0434",yy:u},ordinal:function(e){return e},meridiem:function(e){return e<4?"\u043d\u043e\u0447\u0438":e<12?"\u0443\u0442\u0440\u0430":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"}};return n.default.locale(d,null,!0),d}(n(99517))},36411:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"rw",weekdays:"Ku Cyumweru_Kuwa Mbere_Kuwa Kabiri_Kuwa Gatatu_Kuwa Kane_Kuwa Gatanu_Kuwa Gatandatu".split("_"),months:"Mutarama_Gashyantare_Werurwe_Mata_Gicurasi_Kamena_Nyakanga_Kanama_Nzeri_Ukwakira_Ugushyingo_Ukuboza".split("_"),relativeTime:{future:"mu %s",past:"%s",s:"amasegonda",m:"Umunota",mm:"%d iminota",h:"isaha",hh:"%d amasaha",d:"Umunsi",dd:"%d iminsi",M:"ukwezi",MM:"%d amezi",y:"umwaka",yy:"%d imyaka"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){return e}};return n.default.locale(i,null,!0),i}(n(99517))},14166:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"sd",weekdays:"\u0622\u0686\u0631_\u0633\u0648\u0645\u0631_\u0627\u06b1\u0627\u0631\u0648_\u0627\u0631\u0628\u0639_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639_\u0687\u0646\u0687\u0631".split("_"),months:"\u062c\u0646\u0648\u0631\u064a_\u0641\u064a\u0628\u0631\u0648\u0631\u064a_\u0645\u0627\u0631\u0686_\u0627\u067e\u0631\u064a\u0644_\u0645\u0626\u064a_\u062c\u0648\u0646_\u062c\u0648\u0644\u0627\u0621\u0650_\u0622\u06af\u0633\u067d_\u0633\u064a\u067e\u067d\u0645\u0628\u0631_\u0622\u06aa\u067d\u0648\u0628\u0631_\u0646\u0648\u0645\u0628\u0631_\u068a\u0633\u0645\u0628\u0631".split("_"),weekStart:1,weekdaysShort:"\u0622\u0686\u0631_\u0633\u0648\u0645\u0631_\u0627\u06b1\u0627\u0631\u0648_\u0627\u0631\u0628\u0639_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639_\u0687\u0646\u0687\u0631".split("_"),monthsShort:"\u062c\u0646\u0648\u0631\u064a_\u0641\u064a\u0628\u0631\u0648\u0631\u064a_\u0645\u0627\u0631\u0686_\u0627\u067e\u0631\u064a\u0644_\u0645\u0626\u064a_\u062c\u0648\u0646_\u062c\u0648\u0644\u0627\u0621\u0650_\u0622\u06af\u0633\u067d_\u0633\u064a\u067e\u067d\u0645\u0628\u0631_\u0622\u06aa\u067d\u0648\u0628\u0631_\u0646\u0648\u0645\u0628\u0631_\u068a\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u0622\u0686\u0631_\u0633\u0648\u0645\u0631_\u0627\u06b1\u0627\u0631\u0648_\u0627\u0631\u0628\u0639_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639_\u0687\u0646\u0687\u0631".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"}};return n.default.locale(i,null,!0),i}(n(99517))},71400:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"se",weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),weekStart:1,weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"}};return n.default.locale(i,null,!0),i}(n(99517))},11545:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"si",weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),months:"\u0daf\u0dd4\u0dbb\u0dd4\u0dad\u0dd4_\u0db1\u0dc0\u0db8\u0dca_\u0db8\u0dd0\u0daf\u0dd2\u0db1\u0dca_\u0db6\u0d9a\u0dca_\u0dc0\u0dd9\u0dc3\u0d9a\u0dca_\u0db4\u0ddc\u0dc3\u0ddc\u0db1\u0dca_\u0d87\u0dc3\u0dc5_\u0db1\u0dd2\u0d9a\u0dd2\u0dab\u0dd2_\u0db6\u0dd2\u0db1\u0dbb_\u0dc0\u0db4\u0dca_\u0d89\u0dbd\u0dca_\u0d8b\u0db3\u0dd4\u0dc0\u0db4\u0dca".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),monthsShort:"\u0daf\u0dd4\u0dbb\u0dd4_\u0db1\u0dc0_\u0db8\u0dd0\u0daf\u0dd2_\u0db6\u0d9a\u0dca_\u0dc0\u0dd9\u0dc3_\u0db4\u0ddc\u0dc3\u0ddc_\u0d87\u0dc3_\u0db1\u0dd2\u0d9a\u0dd2_\u0db6\u0dd2\u0db1_\u0dc0\u0db4\u0dca_\u0d89\u0dbd\u0dca_\u0d8b\u0db3\u0dd4".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".split("_"),ordinal:function(e){return e},formats:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",m:"\u0dc0\u0dd2\u0db1\u0dcf\u0da9\u0dd2\u0dba",mm:"\u0dc0\u0dd2\u0db1\u0dcf\u0da9\u0dd2 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"}};return n.default.locale(i,null,!0),i}(n(99517))},71778:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function i(e){return e>1&&e<5&&1!=~~(e/10)}function r(e,t,n,r){var o=e+" ";switch(n){case"s":return t||r?"p\xe1r sek\xfand":"p\xe1r sekundami";case"m":return t?"min\xfata":r?"min\xfatu":"min\xfatou";case"mm":return t||r?o+(i(e)?"min\xfaty":"min\xfat"):o+"min\xfatami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?o+(i(e)?"hodiny":"hod\xedn"):o+"hodinami";case"d":return t||r?"de\u0148":"d\u0148om";case"dd":return t||r?o+(i(e)?"dni":"dn\xed"):o+"d\u0148ami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?o+(i(e)?"mesiace":"mesiacov"):o+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?o+(i(e)?"roky":"rokov"):o+"rokmi"}}var o={name:"sk",weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),months:"janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"pred %s",s:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r}};return n.default.locale(o,null,!0),o}(n(99517))},39552:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"sl",weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),weekStart:1,weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:"nekaj sekund",m:"minuta",mm:"%d minut",h:"ura",hh:"%d ur",d:"dan",dd:"%d dni",M:"mesec",MM:"%d mesecev",y:"leto",yy:"%d let"}};return n.default.locale(i,null,!0),i}(n(99517))},61622:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"sq",weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),weekStart:1,weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"}};return n.default.locale(i,null,!0),i}(n(99517))},64306:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={words:{m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0438\u043d\u0443\u0442\u0430"],mm:["%d \u043c\u0438\u043d\u0443\u0442","%d \u043c\u0438\u043d\u0443\u0442\u0430","%d \u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["%d \u0441\u0430\u0442","%d \u0441\u0430\u0442\u0430","%d \u0441\u0430\u0442\u0438"],d:["\u0458\u0435\u0434\u0430\u043d \u0434\u0430\u043d","\u0458\u0435\u0434\u043d\u043e\u0433 \u0434\u0430\u043d\u0430"],dd:["%d \u0434\u0430\u043d","%d \u0434\u0430\u043d\u0430","%d \u0434\u0430\u043d\u0430"],M:["\u0458\u0435\u0434\u0430\u043d \u043c\u0435\u0441\u0435\u0446","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0435\u0441\u0435\u0446\u0430"],MM:["%d \u043c\u0435\u0441\u0435\u0446","%d \u043c\u0435\u0441\u0435\u0446\u0430","%d \u043c\u0435\u0441\u0435\u0446\u0438"],y:["\u0458\u0435\u0434\u043d\u0443 \u0433\u043e\u0434\u0438\u043d\u0443","\u0458\u0435\u0434\u043d\u0435 \u0433\u043e\u0434\u0438\u043d\u0435"],yy:["%d \u0433\u043e\u0434\u0438\u043d\u0443","%d \u0433\u043e\u0434\u0438\u043d\u0435","%d \u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammarCase:function(e,t){return e%10>=1&&e%10<=4&&(e%100<10||e%100>=20)?e%10==1?t[0]:t[1]:t[2]},relativeTimeFormatter:function(e,t,n,r){var o=i.words[n];if(1===n.length)return"y"===n&&t?"\u0458\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430":r||t?o[0]:o[1];var a=i.correctGrammarCase(e,o);return"yy"===n&&t&&"%d \u0433\u043e\u0434\u0438\u043d\u0443"===a?e+" \u0433\u043e\u0434\u0438\u043d\u0430":a.replace("%d",e)}},r={name:"sr-cyrl",weekdays:"\u041d\u0435\u0434\u0435\u0459\u0430_\u041f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0423\u0442\u043e\u0440\u0430\u043a_\u0421\u0440\u0435\u0434\u0430_\u0427\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u041f\u0435\u0442\u0430\u043a_\u0421\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u041d\u0435\u0434._\u041f\u043e\u043d._\u0423\u0442\u043e._\u0421\u0440\u0435._\u0427\u0435\u0442._\u041f\u0435\u0442._\u0421\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),months:"\u0408\u0430\u043d\u0443\u0430\u0440_\u0424\u0435\u0431\u0440\u0443\u0430\u0440_\u041c\u0430\u0440\u0442_\u0410\u043f\u0440\u0438\u043b_\u041c\u0430\u0458_\u0408\u0443\u043d_\u0408\u0443\u043b_\u0410\u0432\u0433\u0443\u0441\u0442_\u0421\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u041e\u043a\u0442\u043e\u0431\u0430\u0440_\u041d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0414\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0408\u0430\u043d._\u0424\u0435\u0431._\u041c\u0430\u0440._\u0410\u043f\u0440._\u041c\u0430\u0458_\u0408\u0443\u043d_\u0408\u0443\u043b_\u0410\u0432\u0433._\u0421\u0435\u043f._\u041e\u043a\u0442._\u041d\u043e\u0432._\u0414\u0435\u0446.".split("_"),weekStart:1,relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:i.relativeTimeFormatter,mm:i.relativeTimeFormatter,h:i.relativeTimeFormatter,hh:i.relativeTimeFormatter,d:i.relativeTimeFormatter,dd:i.relativeTimeFormatter,M:i.relativeTimeFormatter,MM:i.relativeTimeFormatter,y:i.relativeTimeFormatter,yy:i.relativeTimeFormatter},ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"}};return n.default.locale(r,null,!0),r}(n(99517))},23139:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={words:{m:["jedan minut","jednog minuta"],mm:["%d minut","%d minuta","%d minuta"],h:["jedan sat","jednog sata"],hh:["%d sat","%d sata","%d sati"],d:["jedan dan","jednog dana"],dd:["%d dan","%d dana","%d dana"],M:["jedan mesec","jednog meseca"],MM:["%d mesec","%d meseca","%d meseci"],y:["jednu godinu","jedne godine"],yy:["%d godinu","%d godine","%d godina"]},correctGrammarCase:function(e,t){return e%10>=1&&e%10<=4&&(e%100<10||e%100>=20)?e%10==1?t[0]:t[1]:t[2]},relativeTimeFormatter:function(e,t,n,r){var o=i.words[n];if(1===n.length)return"y"===n&&t?"jedna godina":r||t?o[0]:o[1];var a=i.correctGrammarCase(e,o);return"yy"===n&&t&&"%d godinu"===a?e+" godina":a.replace("%d",e)}},r={name:"sr",weekdays:"Nedelja_Ponedeljak_Utorak_Sreda_\u010cetvrtak_Petak_Subota".split("_"),weekdaysShort:"Ned._Pon._Uto._Sre._\u010cet._Pet._Sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),months:"Januar_Februar_Mart_April_Maj_Jun_Jul_Avgust_Septembar_Oktobar_Novembar_Decembar".split("_"),monthsShort:"Jan._Feb._Mar._Apr._Maj_Jun_Jul_Avg._Sep._Okt._Nov._Dec.".split("_"),weekStart:1,relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:i.relativeTimeFormatter,mm:i.relativeTimeFormatter,h:i.relativeTimeFormatter,hh:i.relativeTimeFormatter,d:i.relativeTimeFormatter,dd:i.relativeTimeFormatter,M:i.relativeTimeFormatter,MM:i.relativeTimeFormatter,y:i.relativeTimeFormatter,yy:i.relativeTimeFormatter},ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"}};return n.default.locale(r,null,!0),r}(n(99517))},40359:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ss",weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),weekStart:1,weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"}};return n.default.locale(i,null,!0),i}(n(99517))},80357:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"sv-fi",weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){var t=e%10;return"["+e+(1===t||2===t?"a":"e")+"]"},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY, [kl.] HH.mm",LLLL:"dddd, D. MMMM YYYY, [kl.] HH.mm",l:"D.M.YYYY",ll:"D. MMM YYYY",lll:"D. MMM YYYY, [kl.] HH.mm",llll:"ddd, D. MMM YYYY, [kl.] HH.mm"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"}};return n.default.locale(i,null,!0),i}(n(99517))},73306:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"sv",weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){var t=e%10;return"["+e+(1===t||2===t?"a":"e")+"]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"}};return n.default.locale(i,null,!0),i}(n(99517))},73237:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"sw",weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekStart:1,ordinal:function(e){return e},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},77067:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ta",weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"}};return n.default.locale(i,null,!0),i}(n(99517))},15083:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"te",weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"}};return n.default.locale(i,null,!0),i}(n(99517))},6927:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"tet",weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),weekStart:1,weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"}};return n.default.locale(i,null,!0),i}(n(99517))},24567:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"tg",weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),weekStart:1,weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"}};return n.default.locale(i,null,!0),i}(n(99517))},34419:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"th",weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"},ordinal:function(e){return e+"."}};return n.default.locale(i,null,!0),i}(n(99517))},54216:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"tk",weekdays:"\xddek\u015fenbe_Du\u015fenbe_Si\u015fenbe_\xc7ar\u015fenbe_Pen\u015fenbe_Anna_\u015eenbe".split("_"),weekdaysShort:"\xddek_Du\u015f_Si\u015f_\xc7ar_Pen_Ann_\u015een".split("_"),weekdaysMin:"\xddk_D\u015f_S\u015f_\xc7r_Pn_An_\u015en".split("_"),months:"\xddanwar_Fewral_Mart_Aprel_Ma\xfd_I\xfdun_I\xfdul_Awgust_Sent\xfdabr_Okt\xfdabr_No\xfdabr_Dekabr".split("_"),monthsShort:"\xddan_Few_Mar_Apr_Ma\xfd_I\xfdn_I\xfdl_Awg_Sen_Okt_No\xfd_Dek".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s so\u0148",past:"%s \xf6\u0148",s:"birn\xe4\xe7e sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir a\xfd",MM:"%d a\xfd",y:"bir \xfdyl",yy:"%d \xfdyl"},ordinal:function(e){return e+"."}};return n.default.locale(i,null,!0),i}(n(99517))},91107:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"tl-ph",weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),weekStart:1,weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"}};return n.default.locale(i,null,!0),i}(n(99517))},25875:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"tlh",weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),weekStart:1,weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return n.default.locale(i,null,!0),i}(n(99517))},72145:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"tr",weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e){return e+"."}};return n.default.locale(i,null,!0),i}(n(99517))},92611:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"tzl",weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),weekStart:1,weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"}};return n.default.locale(i,null,!0),i}(n(99517))},17715:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"tzm-latn",weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekStart:6,weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"}};return n.default.locale(i,null,!0),i}(n(99517))},85408:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"tzm",weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekStart:6,weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"}};return n.default.locale(i,null,!0),i}(n(99517))},62948:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ug-cn",weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekStart:1,weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"}};return n.default.locale(i,null,!0),i}(n(99517))},42024:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i="\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),r="\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_"),o=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function a(e,t,n){var i,r;return"m"===n?t?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===n?t?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+(i=+e,r={ss:t?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:t?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:t?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[n].split("_"),i%10==1&&i%100!=11?r[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?r[1]:r[2])}var s=function(e,t){return o.test(t)?i[e.month()]:r[e.month()]};s.s=r,s.f=i;var u={name:"uk",weekdays:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0434\u043b_\u043f\u043d\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043f\u0442\u043d_\u0441\u0431\u0442".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),months:s,monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekStart:1,relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",m:a,mm:a,h:a,hh:a,d:"\u0434\u0435\u043d\u044c",dd:a,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:a,y:"\u0440\u0456\u043a",yy:a},ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"}};return n.default.locale(u,null,!0),u}(n(99517))},53008:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"ur",weekdays:"\u0627\u062a\u0648\u0627\u0631_\u067e\u06cc\u0631_\u0645\u0646\u06af\u0644_\u0628\u062f\u06be_\u062c\u0645\u0639\u0631\u0627\u062a_\u062c\u0645\u0639\u06c1_\u06c1\u0641\u062a\u06c1".split("_"),months:"\u062c\u0646\u0648\u0631\u06cc_\u0641\u0631\u0648\u0631\u06cc_\u0645\u0627\u0631\u0686_\u0627\u067e\u0631\u06cc\u0644_\u0645\u0626\u06cc_\u062c\u0648\u0646_\u062c\u0648\u0644\u0627\u0626\u06cc_\u0627\u06af\u0633\u062a_\u0633\u062a\u0645\u0628\u0631_\u0627\u06a9\u062a\u0648\u0628\u0631_\u0646\u0648\u0645\u0628\u0631_\u062f\u0633\u0645\u0628\u0631".split("_"),weekStart:1,weekdaysShort:"\u0627\u062a\u0648\u0627\u0631_\u067e\u06cc\u0631_\u0645\u0646\u06af\u0644_\u0628\u062f\u06be_\u062c\u0645\u0639\u0631\u0627\u062a_\u062c\u0645\u0639\u06c1_\u06c1\u0641\u062a\u06c1".split("_"),monthsShort:"\u062c\u0646\u0648\u0631\u06cc_\u0641\u0631\u0648\u0631\u06cc_\u0645\u0627\u0631\u0686_\u0627\u067e\u0631\u06cc\u0644_\u0645\u0626\u06cc_\u062c\u0648\u0646_\u062c\u0648\u0644\u0627\u0626\u06cc_\u0627\u06af\u0633\u062a_\u0633\u062a\u0645\u0628\u0631_\u0627\u06a9\u062a\u0648\u0628\u0631_\u0646\u0648\u0645\u0628\u0631_\u062f\u0633\u0645\u0628\u0631".split("_"),weekdaysMin:"\u0627\u062a\u0648\u0627\u0631_\u067e\u06cc\u0631_\u0645\u0646\u06af\u0644_\u0628\u062f\u06be_\u062c\u0645\u0639\u0631\u0627\u062a_\u062c\u0645\u0639\u06c1_\u06c1\u0641\u062a\u06c1".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"}};return n.default.locale(i,null,!0),i}(n(99517))},21413:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"uz-latn",weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),weekStart:1,weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"}};return n.default.locale(i,null,!0),i}(n(99517))},63609:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"uz",weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),weekStart:1,weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"}};return n.default.locale(i,null,!0),i}(n(99517))},2606:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"vi",weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".split("_"),months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),weekStart:1,weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"}};return n.default.locale(i,null,!0),i}(n(99517))},14953:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"x-pseudo",weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),weekStart:1,weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"}};return n.default.locale(i,null,!0),i}(n(99517))},57091:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"yo",weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekStart:1,weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"}};return n.default.locale(i,null,!0),i}(n(99517))},6432:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"zh-cn",weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),ordinal:function(e,t){return"W"===t?e+"\u5468":e+"\u65e5"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},meridiem:function(e,t){var n=100*e+t;return n<600?"\u51cc\u6668":n<900?"\u65e9\u4e0a":n<1100?"\u4e0a\u5348":n<1300?"\u4e2d\u5348":n<1800?"\u4e0b\u5348":"\u665a\u4e0a"}};return n.default.locale(i,null,!0),i}(n(99517))},35732:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"zh-hk",months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),ordinal:function(e,t){return"W"===t?e+"\u9031":e+"\u65e5"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",m:"\u4e00\u5206\u9418",mm:"%d \u5206\u9418",h:"\u4e00\u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"\u4e00\u5929",dd:"%d \u5929",M:"\u4e00\u500b\u6708",MM:"%d \u500b\u6708",y:"\u4e00\u5e74",yy:"%d \u5e74"}};return n.default.locale(i,null,!0),i}(n(99517))},30795:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"zh-tw",weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),ordinal:function(e,t){return"W"===t?e+"\u9031":e+"\u65e5"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"},meridiem:function(e,t){var n=100*e+t;return n<600?"\u51cc\u6668":n<900?"\u65e9\u4e0a":n<1100?"\u4e0a\u5348":n<1300?"\u4e2d\u5348":n<1800?"\u4e0b\u5348":"\u665a\u4e0a"}};return n.default.locale(i,null,!0),i}(n(99517))},73972:function(e,t,n){e.exports=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),i={name:"zh",weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),ordinal:function(e,t){return"W"===t?e+"\u5468":e+"\u65e5"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},relativeTime:{future:"%s\u540e",past:"%s\u524d",s:"\u51e0\u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},meridiem:function(e,t){var n=100*e+t;return n<600?"\u51cc\u6668":n<900?"\u65e9\u4e0a":n<1100?"\u4e0a\u5348":n<1300?"\u4e2d\u5348":n<1800?"\u4e0b\u5348":"\u665a\u4e0a"}};return n.default.locale(i,null,!0),i}(n(99517))},72547:function(e){e.exports=function(){"use strict";return function(e,t,n){var i=t.prototype,r=function(e){var t=e.date,i=e.utc;return Array.isArray(t)?i?t.length?new Date(Date.UTC.apply(null,t)):new Date:1===t.length?n(String(t[0])).toDate():new(Function.prototype.bind.apply(Date,[null].concat(t))):t},o=i.parse;i.parse=function(e){e.date=r.bind(this)(e),o.bind(this)(e)}}}()},51235:function(e){e.exports=function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d\d/,i=/\d\d?/,r=/\d*[^-_:/,()\s\d]+/,o={},a=function(e){return(e=+e)+(e>68?1900:2e3)},s=function(e){return function(t){this[e]=+t}},u=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:"+"===t[0]?-n:n}(e)}],l=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},c=function(e,t){var n,i=o.meridiem;if(i){for(var r=1;r<=24;r+=1)if(e.indexOf(i(r,0,t))>-1){n=r>12;break}}else n=e===(t?"pm":"PM");return n},d={A:[r,function(e){this.afternoon=c(e,!1)}],a:[r,function(e){this.afternoon=c(e,!0)}],S:[/\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[i,s("seconds")],ss:[i,s("seconds")],m:[i,s("minutes")],mm:[i,s("minutes")],H:[i,s("hours")],h:[i,s("hours")],HH:[i,s("hours")],hh:[i,s("hours")],D:[i,s("day")],DD:[n,s("day")],Do:[r,function(e){var t=o.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var i=1;i<=31;i+=1)t(i).replace(/\[|\]/g,"")===e&&(this.day=i)}],M:[i,s("month")],MM:[n,s("month")],MMM:[r,function(e){var t=l("months"),n=(l("monthsShort")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[r,function(e){var t=l("months").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\d+/,s("year")],YY:[n,function(e){this.year=a(e)}],YYYY:[/\d{4}/,s("year")],Z:u,ZZ:u};function h(n){var i,r;i=n,r=o&&o.formats;for(var a=(n=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,i){var o=i&&i.toUpperCase();return n||r[i]||e[i]||r[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),s=a.length,u=0;u<s;u+=1){var l=a[u],c=d[l],h=c&&c[0],f=c&&c[1];a[u]=f?{regex:h,parser:f}:l.replace(/^\[|\]$/g,"")}return function(e){for(var t={},n=0,i=0;n<s;n+=1){var r=a[n];if("string"==typeof r)i+=r.length;else{var o=r.regex,u=r.parser,l=e.slice(i),c=o.exec(l)[0];u.call(t,c),e=e.replace(c,"")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var i=t.prototype,r=i.parse;i.parse=function(e){var t=e.date,i=e.utc,a=e.args;this.$u=i;var s=a[1];if("string"==typeof s){var u=!0===a[2],l=!0===a[3],c=u||l,d=a[2];l&&(d=a[2]),o=this.$locale(),!u&&d&&(o=n.Ls[d]),this.$d=function(e,t,n){try{if(["x","X"].indexOf(t)>-1)return new Date(("X"===t?1e3:1)*e);var i=h(t)(e),r=i.year,o=i.month,a=i.day,s=i.hours,u=i.minutes,l=i.seconds,c=i.milliseconds,d=i.zone,f=new Date,p=a||(r||o?1:f.getDate()),g=r||f.getFullYear(),v=0;r&&!o||(v=o>0?o-1:f.getMonth());var m=s||0,_=u||0,y=l||0,b=c||0;return d?new Date(Date.UTC(g,v,p,m,_,y,b+60*d.offset*1e3)):n?new Date(Date.UTC(g,v,p,m,_,y,b)):new Date(g,v,p,m,_,y,b)}catch(e){return new Date("")}}(t,s,i),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),c&&t!=this.format(s)&&(this.$d=new Date("")),o={}}else if(s instanceof Array)for(var f=s.length,p=1;p<=f;p+=1){a[1]=s[p-1];var g=n.apply(this,a);if(g.isValid()){this.$d=g.$d,this.$L=g.$L,this.init();break}p===f&&(this.$d=new Date(""))}else r.call(this,e)}}}()},28699:function(e){e.exports=function(){"use strict";var e="day";return function(t,n,i){var r=function(t){return t.add(4-t.isoWeekday(),e)},o=n.prototype;o.isoWeekYear=function(){return r(this).year()},o.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var n,o,a,s=r(this),u=(n=this.isoWeekYear(),a=4-(o=(this.$u?i.utc:i)().year(n).startOf("year")).isoWeekday(),o.isoWeekday()>4&&(a+=7),o.add(a,e));return s.diff(u,"week")+1},o.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var a=o.startOf;o.startOf=function(e,t){var n=this.$utils(),i=!!n.u(t)||t;return"isoweek"===n.p(e)?i?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):a.bind(this)(e,t)}}}()},79748:function(e){e.exports=function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};return function(t,n,i){var r=n.prototype,o=r.format;i.en.formats=e,r.format=function(t){void 0===t&&(t="YYYY-MM-DDTHH:mm:ssZ");var n=this.$locale().formats,i=function(t,n){return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,i,r){var o=r&&r.toUpperCase();return i||n[r]||e[r]||n[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))}(t,void 0===n?{}:n);return o.call(this,i)}}}()},27369:function(e){e.exports=function(){"use strict";return function(e,t,n){var i=t.prototype,r=function(e){var t,r=e.date,o=e.utc,a={};if(!((t=r)instanceof Date||t instanceof Array||i.$utils().u(t)||"Object"!==t.constructor.name)){if(!Object.keys(r).length)return new Date;var s=o?n.utc():n();Object.keys(r).forEach((function(e){var t,n;a[(t=e,n=i.$utils().p(t),"date"===n?"day":n)]=r[e]}));var u=a.day||(a.year||a.month>=0?1:s.date()),l=a.year||s.year(),c=a.month>=0?a.month:a.year||a.day?0:s.month(),d=a.hour||0,h=a.minute||0,f=a.second||0,p=a.millisecond||0;return o?new Date(Date.UTC(l,c,u,d,h,f,p)):new Date(l,c,u,d,h,f,p)}return r},o=i.parse;i.parse=function(e){e.date=r.bind(this)(e),o.bind(this)(e)};var a=i.set,s=i.add,u=i.subtract,l=function(e,t,n,i){void 0===i&&(i=1);var r=Object.keys(t),o=this;return r.forEach((function(n){o=e.bind(o)(t[n]*i,n)})),o};i.set=function(e,t){return t=void 0===t?e:t,"Object"===e.constructor.name?l.bind(this)((function(e,t){return a.bind(this)(t,e)}),t,e):a.bind(this)(e,t)},i.add=function(e,t){return"Object"===e.constructor.name?l.bind(this)(s,e,t):s.bind(this)(e,t)},i.subtract=function(e,t){return"Object"===e.constructor.name?l.bind(this)(s,e,t,-1):u.bind(this)(e,t)}}}()},51277:function(e){e.exports=function(){"use strict";var e="month",t="quarter";return function(n,i){var r=i.prototype;r.quarter=function(e){return this.$utils().u(e)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(e-1))};var o=r.add;r.add=function(n,i){return n=Number(n),this.$utils().p(i)===t?this.add(3*n,e):o.bind(this)(n,i)};var a=r.startOf;r.startOf=function(n,i){var r=this.$utils(),o=!!r.u(i)||i;if(r.p(n)===t){var s=this.quarter()-1;return o?this.month(3*s).startOf(e).startOf("day"):this.month(3*s+2).endOf(e).endOf("day")}return a.bind(this)(n,i)}}}()},51714:function(e){e.exports=function(){"use strict";return function(e,t,n){e=e||{};var i=t.prototype,r={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function o(e,t,n,r){return i.fromToBase(e,t,n,r)}n.en.relativeTime=r,i.fromToBase=function(t,i,o,a,s){for(var u,l,c,d=o.$locale().relativeTime||r,h=e.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],f=h.length,p=0;p<f;p+=1){var g=h[p];g.d&&(u=a?n(t).diff(o,g.d,!0):o.diff(t,g.d,!0));var v=(e.rounding||Math.round)(Math.abs(u));if(c=u>0,v<=g.r||!g.r){v<=1&&p>0&&(g=h[p-1]);var m=d[g.l];s&&(v=s(""+v)),l="string"==typeof m?m.replace("%d",v):m(v,i,g.l,c);break}}if(i)return l;var _=c?d.future:d.past;return"function"==typeof _?_(l):_.replace("%s",l)},i.to=function(e,t){return o(e,t,this,!0)},i.from=function(e,t){return o(e,t,this)};var a=function(e){return e.$u?n.utc():n()};i.toNow=function(e){return this.to(a(this),e)},i.fromNow=function(e){return this.from(a(this),e)}}}()},63540:function(e){e.exports=function(){"use strict";var e={year:0,month:1,day:2,hour:3,minute:4,second:5},t={};return function(n,i,r){var o,a=function(e,n,i){void 0===i&&(i={});var r=new Date(e),o=function(e,n){void 0===n&&(n={});var i=n.timeZoneName||"short",r=e+"|"+i,o=t[r];return o||(o=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:i}),t[r]=o),o}(n,i);return o.formatToParts(r)},s=function(t,n){for(var i=a(t,n),o=[],s=0;s<i.length;s+=1){var u=i[s],l=u.type,c=u.value,d=e[l];d>=0&&(o[d]=parseInt(c,10))}var h=o[3],f=24===h?0:h,p=o[0]+"-"+o[1]+"-"+o[2]+" "+f+":"+o[4]+":"+o[5]+":000",g=+t;return(r.utc(p).valueOf()-(g-=g%1e3))/6e4},u=i.prototype;u.tz=function(e,t){void 0===e&&(e=o);var n=this.utcOffset(),i=this.toDate(),a=i.toLocaleString("en-US",{timeZone:e}),s=Math.round((i-new Date(a))/1e3/60),u=r(a).$set("millisecond",this.$ms).utcOffset(15*-Math.round(i.getTimezoneOffset()/15)-s,!0);if(t){var l=u.utcOffset();u=u.add(n-l,"minute")}return u.$x.$timezone=e,u},u.offsetName=function(e){var t=this.$x.$timezone||r.tz.guess(),n=a(this.valueOf(),t,{timeZoneName:e}).find((function(e){return"timezonename"===e.type.toLowerCase()}));return n&&n.value};var l=u.startOf;u.startOf=function(e,t){if(!this.$x||!this.$x.$timezone)return l.call(this,e,t);var n=r(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return l.call(n,e,t).tz(this.$x.$timezone,!0)},r.tz=function(e,t,n){var i=n&&t,a=n||t||o,u=s(+r(),a);if("string"!=typeof e)return r(e).tz(a);var l=function(e,t,n){var i=e-60*t*1e3,r=s(i,n);if(t===r)return[i,t];var o=s(i-=60*(r-t)*1e3,n);return r===o?[i,r]:[e-60*Math.min(r,o)*1e3,Math.max(r,o)]}(r.utc(e,i).valueOf(),u,a),c=l[0],d=l[1],h=r(c).utcOffset(d);return h.$x.$timezone=a,h},r.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},r.tz.setDefault=function(e){o=e}}}()},14230:function(e){e.exports=function(){"use strict";return function(e,t,n){n.updateLocale=function(e,t){var i=n.Ls[e];if(i)return(t?Object.keys(t):[]).forEach((function(e){i[e]=t[e]})),i}}}()},18272:function(e){e.exports=function(){"use strict";var e="minute",t=/[+-]\d\d(?::?\d\d)?/g,n=/([+-]|\d\d)/g;return function(i,r,o){var a=r.prototype;o.utc=function(e){return new r({date:e,utc:!0,args:arguments})},a.utc=function(t){var n=o(this.toDate(),{locale:this.$L,utc:!0});return t?n.add(this.utcOffset(),e):n},a.local=function(){return o(this.toDate(),{locale:this.$L,utc:!1})};var s=a.parse;a.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),s.call(this,e)};var u=a.init;a.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else u.call(this)};var l=a.utcOffset;a.utcOffset=function(i,r){var o=this.$utils().u;if(o(i))return this.$u?0:o(this.$offset)?l.call(this):this.$offset;if("string"==typeof i&&(i=function(e){void 0===e&&(e="");var i=e.match(t);if(!i)return null;var r=(""+i[0]).match(n)||["-",0,0],o=r[0],a=60*+r[1]+ +r[2];return 0===a?0:"+"===o?a:-a}(i),null===i))return this;var a=Math.abs(i)<=16?60*i:i,s=this;if(r)return s.$offset=a,s.$u=0===i,s;if(0!==i){var u=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(s=this.local().add(a+u,e)).$offset=a,s.$x.$localOffset=u}else s=this.utc();return s};var c=a.format;a.format=function(e){var t=e||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return c.call(this,t)},a.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},a.isUTC=function(){return!!this.$u},a.toISOString=function(){return this.toDate().toISOString()},a.toString=function(){return this.toDate().toUTCString()};var d=a.toDate;a.toDate=function(e){return"s"===e&&this.$offset?o(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():d.call(this)};var h=a.diff;a.diff=function(e,t,n){if(e&&this.$u===e.$u)return h.call(this,e,t,n);var i=this.local(),r=o(e).local();return h.call(i,r,t,n)}}}()},31870:function(e,t,n){var i=n(77801);e.exports=function(e,t,n){var r,o,a,s,u;function l(){var c=i()-s;c<t&&c>0?r=setTimeout(l,t-c):(r=null,n||(u=e.apply(a,o),r||(a=o=null)))}return null==t&&(t=100),function(){a=this,o=arguments,s=i();var c=n&&!r;return r||(r=setTimeout(l,t)),c&&(u=e.apply(a,o),a=o=null),u}}},59312:function(e,t,n){var i,r=r||{version:"4.2.0"};if(t.fabric=r,"undefined"!==typeof document&&"undefined"!==typeof window)document instanceof("undefined"!==typeof HTMLDocument?HTMLDocument:Document)?r.document=document:r.document=document.implementation.createHTMLDocument(""),r.window=window;else{var o=new(n(24960).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;r.document=o.document,r.jsdomImplForWrapper=n(26759).implForWrapper,r.nodeCanvas=n(56272).Canvas,r.window=o,DOMParser=r.window.DOMParser}function a(e,t){var n=e.canvas,i=t.targetCanvas,r=i.getContext("2d");r.translate(0,i.height),r.scale(1,-1);var o=n.height-i.height;r.drawImage(n,0,o,i.width,i.height,0,0,i.width,i.height)}function s(e,t){var n=t.targetCanvas.getContext("2d"),i=t.destinationWidth,r=t.destinationHeight,o=i*r*4,a=new Uint8Array(this.imageBuffer,0,o),s=new Uint8ClampedArray(this.imageBuffer,0,o);e.readPixels(0,0,i,r,e.RGBA,e.UNSIGNED_BYTE,a);var u=new ImageData(s,i,r);n.putImageData(u,0,0)}r.isTouchSupported="ontouchstart"in r.window||"ontouchstart"in r.document||r.window&&r.window.navigator&&r.window.navigator.maxTouchPoints>0,r.isLikelyNode="undefined"!==typeof Buffer&&"undefined"===typeof window,r.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],r.DPI=96,r.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",r.commaWsp="(?:\\s+,?\\s*|,\\s*)",r.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,r.reNonWord=/[ \n\.,;!\?\-]/,r.fontPaths={},r.iMatrix=[1,0,0,1,0,0],r.svgNS="http://www.w3.org/2000/svg",r.perfLimitSizeTotal=2097152,r.maxCacheSideLimit=4096,r.minCacheSideLimit=256,r.charWidthsCache={},r.textureSize=2048,r.disableStyleCopyPaste=!1,r.enableGLFiltering=!0,r.devicePixelRatio=r.window.devicePixelRatio||r.window.webkitDevicePixelRatio||r.window.mozDevicePixelRatio||1,r.browserShadowBlurConstant=1,r.arcToSegmentsCache={},r.boundsOfCurveCache={},r.cachesBoundsOfCurve=!0,r.forceGLPutImageData=!1,r.initFilterBackend=function(){return r.enableGLFiltering&&r.isWebglSupported&&r.isWebglSupported(r.textureSize)?(console.log("max texture size: "+r.maxTextureSize),new r.WebglFilterBackend({tileSize:r.textureSize})):r.Canvas2dFilterBackend?new r.Canvas2dFilterBackend:void 0},"undefined"!==typeof document&&"undefined"!==typeof window&&(window.fabric=r),function(){function e(e,t){if(this.__eventListeners[e]){var n=this.__eventListeners[e];t?n[n.indexOf(t)]=!1:r.util.array.fill(n,!1)}}r.Observable={fire:function(e,t){if(!this.__eventListeners)return this;var n=this.__eventListeners[e];if(!n)return this;for(var i=0,r=n.length;i<r;i++)n[i]&&n[i].call(this,t||{});return this.__eventListeners[e]=n.filter((function(e){return!1!==e})),this},on:function(e,t){if(this.__eventListeners||(this.__eventListeners={}),1===arguments.length)for(var n in e)this.on(n,e[n]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(t);return this},off:function(t,n){if(!this.__eventListeners)return this;if(0===arguments.length)for(t in this.__eventListeners)e.call(this,t);else if(1===arguments.length&&"object"===typeof arguments[0])for(var i in t)e.call(this,i,t[i]);else e.call(this,t,n);return this}}}(),r.Collection={_objects:[],add:function(){if(this._objects.push.apply(this._objects,arguments),this._onObjectAdded)for(var e=0,t=arguments.length;e<t;e++)this._onObjectAdded(arguments[e]);return this.renderOnAddRemove&&this.requestRenderAll(),this},insertAt:function(e,t,n){var i=this._objects;return n?i[t]=e:i.splice(t,0,e),this._onObjectAdded&&this._onObjectAdded(e),this.renderOnAddRemove&&this.requestRenderAll(),this},remove:function(){for(var e,t=this._objects,n=!1,i=0,r=arguments.length;i<r;i++)-1!==(e=t.indexOf(arguments[i]))&&(n=!0,t.splice(e,1),this._onObjectRemoved&&this._onObjectRemoved(arguments[i]));return this.renderOnAddRemove&&n&&this.requestRenderAll(),this},forEachObject:function(e,t){for(var n=this.getObjects(),i=0,r=n.length;i<r;i++)e.call(t,n[i],i,n);return this},getObjects:function(e){return"undefined"===typeof e?this._objects.concat():this._objects.filter((function(t){return t.type===e}))},item:function(e){return this._objects[e]},isEmpty:function(){return 0===this._objects.length},size:function(){return this._objects.length},contains:function(e){return this._objects.indexOf(e)>-1},complexity:function(){return this._objects.reduce((function(e,t){return e+=t.complexity?t.complexity():0}),0)}},r.CommonMethods={_setOptions:function(e){for(var t in e)this.set(t,e[t])},_initGradient:function(e,t){!e||!e.colorStops||e instanceof r.Gradient||this.set(t,new r.Gradient(e))},_initPattern:function(e,t,n){!e||!e.source||e instanceof r.Pattern?n&&n():this.set(t,new r.Pattern(e,n))},_setObject:function(e){for(var t in e)this._set(t,e[t])},set:function(e,t){return"object"===typeof e?this._setObject(e):this._set(e,t),this},_set:function(e,t){this[e]=t},toggle:function(e){var t=this.get(e);return"boolean"===typeof t&&this.set(e,!t),this},get:function(e){return this[e]}},function(e){var t=Math.sqrt,n=Math.atan2,i=Math.pow,o=Math.PI/180,a=Math.PI/2;r.util={cos:function(e){if(0===e)return 1;switch(e<0&&(e=-e),e/a){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},sin:function(e){if(0===e)return 0;var t=1;switch(e<0&&(t=-1),e/a){case 1:return t;case 2:return 0;case 3:return-t}return Math.sin(e)},removeFromArray:function(e,t){var n=e.indexOf(t);return-1!==n&&e.splice(n,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*o},radiansToDegrees:function(e){return e/o},rotatePoint:function(e,t,n){e.subtractEquals(t);var i=r.util.rotateVector(e,n);return new r.Point(i.x,i.y).addEquals(t)},rotateVector:function(e,t){var n=r.util.sin(t),i=r.util.cos(t);return{x:e.x*i-e.y*n,y:e.x*n+e.y*i}},transformPoint:function(e,t,n){return n?new r.Point(t[0]*e.x+t[2]*e.y,t[1]*e.x+t[3]*e.y):new r.Point(t[0]*e.x+t[2]*e.y+t[4],t[1]*e.x+t[3]*e.y+t[5])},makeBoundingBoxFromPoints:function(e,t){if(t)for(var n=0;n<e.length;n++)e[n]=r.util.transformPoint(e[n],t);var i=[e[0].x,e[1].x,e[2].x,e[3].x],o=r.util.array.min(i),a=r.util.array.max(i)-o,s=[e[0].y,e[1].y,e[2].y,e[3].y],u=r.util.array.min(s);return{left:o,top:u,width:a,height:r.util.array.max(s)-u}},invertTransform:function(e){var t=1/(e[0]*e[3]-e[1]*e[2]),n=[t*e[3],-t*e[1],-t*e[2],t*e[0]],i=r.util.transformPoint({x:e[4],y:e[5]},n,!0);return n[4]=-i.x,n[5]=-i.y,n},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},parseUnit:function(e,t){var n=/\D{0,2}$/.exec(e),i=parseFloat(e);switch(t||(t=r.Text.DEFAULT_SVG_FONT_SIZE),n[0]){case"mm":return i*r.DPI/25.4;case"cm":return i*r.DPI/2.54;case"in":return i*r.DPI;case"pt":return i*r.DPI/72;case"pc":return i*r.DPI/72*12;case"em":return i*t;default:return i}},falseFunction:function(){return!1},getKlass:function(e,t){return e=r.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),r.util.resolveNamespace(t)[e]},getSvgAttributes:function(e){var t=["instantiated_by_use","style","id","class"];switch(e){case"linearGradient":t=t.concat(["x1","y1","x2","y2","gradientUnits","gradientTransform"]);break;case"radialGradient":t=t.concat(["gradientUnits","gradientTransform","cx","cy","r","fx","fy","fr"]);break;case"stop":t=t.concat(["offset","stop-color","stop-opacity"])}return t},resolveNamespace:function(t){if(!t)return r;var n,i=t.split("."),o=i.length,a=e||r.window;for(n=0;n<o;++n)a=a[i[n]];return a},loadImage:function(e,t,n,i){if(e){var o=r.util.createImage(),a=function(){t&&t.call(n,o,!1),o=o.onload=o.onerror=null};o.onload=a,o.onerror=function(){r.log("Error loading "+o.src),t&&t.call(n,null,!0),o=o.onload=o.onerror=null},0!==e.indexOf("data")&&void 0!==i&&null!==i&&(o.crossOrigin=i),"data:image/svg"===e.substring(0,14)&&(o.onload=null,r.util.loadImageInDom(o,a)),o.src=e}else t&&t.call(n,e)},loadImageInDom:function(e,t){var n=r.document.createElement("div");n.style.width=n.style.height="1px",n.style.left=n.style.top="-100%",n.style.position="absolute",n.appendChild(e),r.document.querySelector("body").appendChild(n),e.onload=function(){t(),n.parentNode.removeChild(n),n=null}},enlivenObjects:function(e,t,n,i){var o=[],a=0,s=(e=e||[]).length;function u(){++a===s&&t&&t(o.filter((function(e){return e})))}s?e.forEach((function(e,t){e&&e.type?r.util.getKlass(e.type,n).fromObject(e,(function(n,r){r||(o[t]=n),i&&i(e,n,r),u()})):u()})):t&&t(o)},enlivenPatterns:function(e,t){function n(){++o===a&&t&&t(i)}var i=[],o=0,a=(e=e||[]).length;a?e.forEach((function(e,t){e&&e.source?new r.Pattern(e,(function(e){i[t]=e,n()})):(i[t]=e,n())})):t&&t(i)},groupSVGElements:function(e,t,n){var i;return e&&1===e.length?e[0]:(t&&(t.width&&t.height?t.centerPoint={x:t.width/2,y:t.height/2}:(delete t.width,delete t.height)),i=new r.Group(e,t),"undefined"!==typeof n&&(i.sourcePath=n),i)},populateWithProperties:function(e,t,n){if(n&&"[object Array]"===Object.prototype.toString.call(n))for(var i=0,r=n.length;i<r;i++)n[i]in e&&(t[n[i]]=e[n[i]])},drawDashedLine:function(e,i,r,o,a,s){var u=o-i,l=a-r,c=t(u*u+l*l),d=n(l,u),h=s.length,f=0,p=!0;for(e.save(),e.translate(i,r),e.moveTo(0,0),e.rotate(d),i=0;c>i;)(i+=s[f++%h])>c&&(i=c),e[p?"lineTo":"moveTo"](i,0),p=!p;e.restore()},createCanvasElement:function(){return r.document.createElement("canvas")},copyCanvasElement:function(e){var t=r.util.createCanvasElement();return t.width=e.width,t.height=e.height,t.getContext("2d").drawImage(e,0,0),t},toDataURL:function(e,t,n){return e.toDataURL("image/"+t,n)},createImage:function(){return r.document.createElement("img")},multiplyTransformMatrices:function(e,t,n){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],n?0:e[0]*t[4]+e[2]*t[5]+e[4],n?0:e[1]*t[4]+e[3]*t[5]+e[5]]},qrDecompose:function(e){var r=n(e[1],e[0]),a=i(e[0],2)+i(e[1],2),s=t(a),u=(e[0]*e[3]-e[2]*e[1])/s,l=n(e[0]*e[2]+e[1]*e[3],a);return{angle:r/o,scaleX:s,scaleY:u,skewX:l/o,skewY:0,translateX:e[4],translateY:e[5]}},calcRotateMatrix:function(e){if(!e.angle)return r.iMatrix.concat();var t=r.util.degreesToRadians(e.angle),n=r.util.cos(t),i=r.util.sin(t);return[n,i,-i,n,0,0]},calcDimensionsMatrix:function(e){var t="undefined"===typeof e.scaleX?1:e.scaleX,n="undefined"===typeof e.scaleY?1:e.scaleY,i=[e.flipX?-t:t,0,0,e.flipY?-n:n,0,0],o=r.util.multiplyTransformMatrices,a=r.util.degreesToRadians;return e.skewX&&(i=o(i,[1,0,Math.tan(a(e.skewX)),1],!0)),e.skewY&&(i=o(i,[1,Math.tan(a(e.skewY)),0,1],!0)),i},composeMatrix:function(e){var t=[1,0,0,1,e.translateX||0,e.translateY||0],n=r.util.multiplyTransformMatrices;return e.angle&&(t=n(t,r.util.calcRotateMatrix(e))),(1!==e.scaleX||1!==e.scaleY||e.skewX||e.skewY||e.flipX||e.flipY)&&(t=n(t,r.util.calcDimensionsMatrix(e))),t},resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.skewX=0,e.skewY=0,e.flipX=!1,e.flipY=!1,e.rotate(0)},saveObjectTransform:function(e){return{scaleX:e.scaleX,scaleY:e.scaleY,skewX:e.skewX,skewY:e.skewY,angle:e.angle,left:e.left,flipX:e.flipX,flipY:e.flipY,top:e.top}},isTransparent:function(e,t,n,i){i>0&&(t>i?t-=i:t=0,n>i?n-=i:n=0);var r,o=!0,a=e.getImageData(t,n,2*i||1,2*i||1),s=a.data.length;for(r=3;r<s&&!1!==(o=a.data[r]<=0);r+=4);return a=null,o},parsePreserveAspectRatioAttribute:function(e){var t,n="meet",i=e.split(" ");return i&&i.length&&("meet"!==(n=i.pop())&&"slice"!==n?(t=n,n="meet"):i.length&&(t=i.pop())),{meetOrSlice:n,alignX:"none"!==t?t.slice(1,4):"none",alignY:"none"!==t?t.slice(5,8):"none"}},clearFabricFontCache:function(e){(e=(e||"").toLowerCase())?r.charWidthsCache[e]&&delete r.charWidthsCache[e]:r.charWidthsCache={}},limitDimsByArea:function(e,t){var n=Math.sqrt(t*e),i=Math.floor(t/n);return{x:Math.floor(n),y:i}},capValue:function(e,t,n){return Math.max(e,Math.min(t,n))},findScaleToFit:function(e,t){return Math.min(t.width/e.width,t.height/e.height)},findScaleToCover:function(e,t){return Math.max(t.width/e.width,t.height/e.height)},matrixToSVG:function(e){return"matrix("+e.map((function(e){return r.util.toFixed(e,r.Object.NUM_FRACTION_DIGITS)})).join(" ")+")"},sizeAfterTransform:function(e,t,n){var i=e/2,o=t/2,a=[{x:-i,y:-o},{x:i,y:-o},{x:-i,y:o},{x:i,y:o}],s=r.util.calcDimensionsMatrix(n),u=r.util.makeBoundingBoxFromPoints(a,s);return{x:u.width,y:u.height}}}}(t),function(){var e=Array.prototype.join,t={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},n={m:"l",M:"L"};function i(e,t,n,i,o,a,s,u,l,c,d){var h=r.util.cos(e),f=r.util.sin(e),p=r.util.cos(t),g=r.util.sin(t),v=n*o*p-i*a*g+s,m=i*o*p+n*a*g+u;return["C",c+l*(-n*o*f-i*a*h),d+l*(-i*o*f+n*a*h),v+l*(n*o*g+i*a*p),m+l*(i*o*g-n*a*p),v,m]}function o(e,t,n,o,s,u,l){var c=Math.PI,d=l*c/180,h=r.util.sin(d),f=r.util.cos(d),p=0,g=0,v=-f*e*.5-h*t*.5,m=-f*t*.5+h*e*.5,_=(n=Math.abs(n))*n,y=(o=Math.abs(o))*o,b=m*m,w=v*v,C=_*y-_*b-y*w,k=0;if(C<0){var S=Math.sqrt(1-C/(_*y));n*=S,o*=S}else k=(s===u?-1:1)*Math.sqrt(C/(_*b+y*w));var x=k*n*m/o,L=-k*o*v/n,E=f*x-h*L+.5*e,D=h*x+f*L+.5*t,N=a(1,0,(v-x)/n,(m-L)/o),M=a((v-x)/n,(m-L)/o,(-v-x)/n,(-m-L)/o);0===u&&M>0?M-=2*c:1===u&&M<0&&(M+=2*c);for(var T=Math.ceil(Math.abs(M/c*2)),I=[],O=M/T,A=8/3*Math.sin(O/4)*Math.sin(O/4)/Math.sin(O/2),R=N+O,P=0;P<T;P++)I[P]=i(N,R,f,h,n,o,E,D,A,p,g),p=I[P][5],g=I[P][6],N=R,R+=O;return I}function a(e,t,n,i){var r=Math.atan2(t,e),o=Math.atan2(i,n);return o>=r?o-r:2*Math.PI-(r-o)}function s(t,n,i,o,a,s,u,l){var c;if(r.cachesBoundsOfCurve&&(c=e.call(arguments),r.boundsOfCurveCache[c]))return r.boundsOfCurveCache[c];var d,h,f,p,g,v,m,_,y=Math.sqrt,b=Math.min,w=Math.max,C=Math.abs,k=[],S=[[],[]];h=6*t-12*i+6*a,d=-3*t+9*i-9*a+3*u,f=3*i-3*t;for(var x=0;x<2;++x)if(x>0&&(h=6*n-12*o+6*s,d=-3*n+9*o-9*s+3*l,f=3*o-3*n),C(d)<1e-12){if(C(h)<1e-12)continue;0<(p=-f/h)&&p<1&&k.push(p)}else(m=h*h-4*f*d)<0||(0<(g=(-h+(_=y(m)))/(2*d))&&g<1&&k.push(g),0<(v=(-h-_)/(2*d))&&v<1&&k.push(v));for(var L,E,D,N=k.length,M=N;N--;)L=(D=1-(p=k[N]))*D*D*t+3*D*D*p*i+3*D*p*p*a+p*p*p*u,S[0][N]=L,E=D*D*D*n+3*D*D*p*o+3*D*p*p*s+p*p*p*l,S[1][N]=E;S[0][M]=t,S[1][M]=n,S[0][M+1]=u,S[1][M+1]=l;var T=[{x:b.apply(null,S[0]),y:b.apply(null,S[1])},{x:w.apply(null,S[0]),y:w.apply(null,S[1])}];return r.cachesBoundsOfCurve&&(r.boundsOfCurveCache[c]=T),T}function u(e,t,n){for(var i=n[1],r=n[2],a=n[3],s=n[4],u=n[5],l=o(n[6]-e,n[7]-t,i,r,s,u,a),c=0,d=l.length;c<d;c++)l[c][1]+=e,l[c][2]+=t,l[c][3]+=e,l[c][4]+=t,l[c][5]+=e,l[c][6]+=t;return l}function l(e,t,n,i){return Math.sqrt((n-e)*(n-e)+(i-t)*(i-t))}function c(e,t,n,i,r,o,a,s){return function(u){var l,c=(l=u)*l*l,d=function(e){return 3*e*e*(1-e)}(u),h=function(e){return 3*e*(1-e)*(1-e)}(u),f=function(e){return(1-e)*(1-e)*(1-e)}(u);return{x:a*c+r*d+n*h+e*f,y:s*c+o*d+i*h+t*f}}}function d(e,t,n,i,r,o){return function(a){var s,u=(s=a)*s,l=function(e){return 2*e*(1-e)}(a),c=function(e){return(1-e)*(1-e)}(a);return{x:r*u+n*l+e*c,y:o*u+i*l+t*c}}}function h(e,t,n){var i,r,o={x:t,y:n},a=0;for(r=.01;r<=1;r+=.01)i=e(r),a+=l(o.x,o.y,i.x,i.y),o=i;return a}function f(e){for(var t,n,i,r=0,o=e.length,a=0,s=0,u=0,f=0,p=[],g=0;g<o;g++){switch(i={x:a,y:s,command:(t=e[g])[0]},t[0]){case"M":i.length=0,u=a=t[1],f=s=t[2];break;case"L":i.length=l(a,s,t[1],t[2]),a=t[1],s=t[2];break;case"C":n=c(a,s,t[1],t[2],t[3],t[4],t[5],t[6]),i.length=h(n,a,s),a=t[5],s=t[6];break;case"Q":n=d(a,s,t[1],t[2],t[3],t[4]),i.length=h(n,a,s),a=t[3],s=t[4];break;case"Z":case"z":i.destX=u,i.destY=f,i.length=l(a,s,u,f),a=u,s=f}r+=i.length,p.push(i)}return p.push({length:r,x:a,y:s}),p}r.util.parsePath=function(e){var i,o,a,s,u,l=[],c=[],d=r.rePathCommand,h="[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?\\s*",f="("+h+")"+r.commaWsp,p="([01])"+r.commaWsp+"?",g=new RegExp(f+"?"+f+"?"+f+p+p+f+"?("+h+")","g");if(!e||!e.match)return l;for(var v,m=0,_=(u=e.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi)).length;m<_;m++){s=(i=u[m]).slice(1).trim(),c.length=0;var y=i.charAt(0);if(v=[y],"a"===y.toLowerCase())for(var b;b=g.exec(s);)for(var w=1;w<b.length;w++)c.push(b[w]);else for(;a=d.exec(s);)c.push(a[0]);w=0;for(var C=c.length;w<C;w++)o=parseFloat(c[w]),isNaN(o)||v.push(o);var k=t[y.toLowerCase()],S=n[y]||y;if(v.length-1>k)for(var x=1,L=v.length;x<L;x+=k)l.push([y].concat(v.slice(x,x+k))),y=S;else l.push(v)}return l},r.util.makePathSimpler=function(e){var t,n,i,r,o,a,s=0,l=0,c=e.length,d=0,h=0,f=[];for(n=0;n<c;++n){switch(i=!1,(t=e[n].slice(0))[0]){case"l":t[0]="L",t[1]+=s,t[2]+=l;case"L":s=t[1],l=t[2];break;case"h":t[1]+=s;case"H":t[0]="L",t[2]=l,s=t[1];break;case"v":t[1]+=l;case"V":t[0]="L",l=t[1],t[1]=s,t[2]=l;break;case"m":t[0]="M",t[1]+=s,t[2]+=l;case"M":s=t[1],l=t[2],d=t[1],h=t[2];break;case"c":t[0]="C",t[1]+=s,t[2]+=l,t[3]+=s,t[4]+=l,t[5]+=s,t[6]+=l;case"C":o=t[3],a=t[4],s=t[5],l=t[6];break;case"s":t[0]="S",t[1]+=s,t[2]+=l,t[3]+=s,t[4]+=l;case"S":"C"===r?(o=2*s-o,a=2*l-a):(o=s,a=l),s=t[3],l=t[4],t[0]="C",t[5]=t[3],t[6]=t[4],t[3]=t[1],t[4]=t[2],t[1]=o,t[2]=a,o=t[3],a=t[4];break;case"q":t[0]="Q",t[1]+=s,t[2]+=l,t[3]+=s,t[4]+=l;case"Q":o=t[1],a=t[2],s=t[3],l=t[4];break;case"t":t[0]="T",t[1]+=s,t[2]+=l;case"T":"Q"===r?(o=2*s-o,a=2*l-a):(o=s,a=l),t[0]="Q",s=t[1],l=t[2],t[1]=o,t[2]=a,t[3]=s,t[4]=l;break;case"a":t[0]="A",t[6]+=s,t[7]+=l;case"A":i=!0,f=f.concat(u(s,l,t)),s=t[6],l=t[7];break;case"z":case"Z":s=d,l=h}i||f.push(t),r=t[0]}return f},r.util.getPathSegmentsInfo=f,r.util.fromArcToBeizers=u,r.util.getBoundsOfCurve=s,r.util.getPointOnPath=function(e,t,n){n||(n=f(e));for(var i=n[n.length-1]*t,o=0;i-n[o]>0&&o<n.length;)i-=n[o],o++;var a=n[o],s=i/a.length,u=a.length,l=e[o];switch(u){case"Z":case"z":return new r.Point(a.x,a.y).lerp(new r.Point(a.destX,a.destY),s);case"L":return new r.Point(a.x,a.y).lerp(new r.Point(l[1],l[2]),s);case"C":return c(a.x,a.y,l[1],l[2],l[3],l[4],l[5],l[6])(s);case"Q":return d(a.x,a.y,l[1],l[2],l[3],l[4])(s)}},r.util.getBoundsOfArc=function(e,t,n,i,r,a,u,l,c){for(var d,h=0,f=0,p=[],g=o(l-e,c-t,n,i,a,u,r),v=0,m=g.length;v<m;v++)d=s(h,f,g[v][1],g[v][2],g[v][3],g[v][4],g[v][5],g[v][6]),p.push({x:d[0].x+e,y:d[0].y+t}),p.push({x:d[1].x+e,y:d[1].y+t}),h=g[v][5],f=g[v][6];return p},r.util.drawArc=function(e,t,n,i){u(t,n,i=i.slice(0).unshift("X")).forEach((function(t){e.bezierCurveTo.apply(e,t.slice(1))}))}}(),function(){var e=Array.prototype.slice;function t(e,t,n){if(e&&0!==e.length){var i=e.length-1,r=t?e[i][t]:e[i];if(t)for(;i--;)n(e[i][t],r)&&(r=e[i][t]);else for(;i--;)n(e[i],r)&&(r=e[i]);return r}}r.util.array={fill:function(e,t){for(var n=e.length;n--;)e[n]=t;return e},invoke:function(t,n){for(var i=e.call(arguments,2),r=[],o=0,a=t.length;o<a;o++)r[o]=i.length?t[o][n].apply(t[o],i):t[o][n].call(t[o]);return r},min:function(e,n){return t(e,n,(function(e,t){return e<t}))},max:function(e,n){return t(e,n,(function(e,t){return e>=t}))}}}(),function(){function e(t,n,i){if(i)if(!r.isLikelyNode&&n instanceof Element)t=n;else if(n instanceof Array){t=[];for(var o=0,a=n.length;o<a;o++)t[o]=e({},n[o],i)}else if(n&&"object"===typeof n)for(var s in n)"canvas"===s||"group"===s?t[s]=null:n.hasOwnProperty(s)&&(t[s]=e({},n[s],i));else t=n;else for(var s in n)t[s]=n[s];return t}r.util.object={extend:e,clone:function(t,n){return e({},t,n)}},r.util.object.extend(r.util,r.Observable)}(),function(){function e(e,t){var n=e.charCodeAt(t);if(isNaN(n))return"";if(n<55296||n>57343)return e.charAt(t);if(55296<=n&&n<=56319){if(e.length<=t+1)throw"High surrogate without following low surrogate";var i=e.charCodeAt(t+1);if(56320>i||i>57343)throw"High surrogate without following low surrogate";return e.charAt(t)+e.charAt(t+1)}if(0===t)throw"Low surrogate without preceding high surrogate";var r=e.charCodeAt(t-1);if(55296>r||r>56319)throw"Low surrogate without preceding high surrogate";return!1}r.util.string={camelize:function(e){return e.replace(/-+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))},capitalize:function(e,t){return e.charAt(0).toUpperCase()+(t?e.slice(1):e.slice(1).toLowerCase())},escapeXml:function(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")},graphemeSplit:function(t){var n,i=0,r=[];for(i=0;i<t.length;i++)!1!==(n=e(t,i))&&r.push(n);return r}}}(),function(){var e=Array.prototype.slice,t=function(){},n=function(){for(var e in{toString:1})if("toString"===e)return!1;return!0}(),i=function(e,t,i){for(var r in t)r in e.prototype&&"function"===typeof e.prototype[r]&&(t[r]+"").indexOf("callSuper")>-1?e.prototype[r]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=i;var r=t[e].apply(this,arguments);if(this.constructor.superclass=n,"initialize"!==e)return r}}(r):e.prototype[r]=t[r],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};function o(){}function a(t){for(var n=null,i=this;i.constructor.superclass;){var r=i.constructor.superclass.prototype[t];if(i[t]!==r){n=r;break}i=i.constructor.superclass.prototype}return n?arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this):console.log("tried to callSuper "+t+", method not found in prototype chain",this)}r.util.createClass=function(){var n=null,r=e.call(arguments,0);function s(){this.initialize.apply(this,arguments)}"function"===typeof r[0]&&(n=r.shift()),s.superclass=n,s.subclasses=[],n&&(o.prototype=n.prototype,s.prototype=new o,n.subclasses.push(s));for(var u=0,l=r.length;u<l;u++)i(s,r[u],n);return s.prototype.initialize||(s.prototype.initialize=t),s.prototype.constructor=s,s.prototype.callSuper=a,s}}(),function(){var e=!!r.document.createElement("div").attachEvent,t=["touchstart","touchmove","touchend"];r.util.addListener=function(t,n,i,r){t&&t.addEventListener(n,i,!e&&r)},r.util.removeListener=function(t,n,i,r){t&&t.removeEventListener(n,i,!e&&r)},r.util.getPointer=function(e){var t=e.target,n=r.util.getScrollLeftTop(t),i=function(e){var t=e.changedTouches;return t&&t[0]?t[0]:e}(e);return{x:i.clientX+n.left,y:i.clientY+n.top}},r.util.isTouchEvent=function(e){return t.indexOf(e.type)>-1||"touch"===e.pointerType}}(),function(){var e=r.document.createElement("div"),t="string"===typeof e.style.opacity,n="string"===typeof e.style.filter,i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,o=function(e){return e};t?o=function(e,t){return e.style.opacity=t,e}:n&&(o=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+100*t+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+100*t+")",e}),r.util.setStyle=function(e,t){var n=e.style;if(!n)return e;if("string"===typeof t)return e.style.cssText+=";"+t,t.indexOf("opacity")>-1?o(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var i in t){if("opacity"===i)o(e,t[i]);else n["float"===i||"cssFloat"===i?"undefined"===typeof n.styleFloat?"cssFloat":"styleFloat":i]=t[i]}return e}}(),function(){var e=Array.prototype.slice;var t,n,i=function(t){return e.call(t,0)};try{t=i(r.document.childNodes)instanceof Array}catch(s){}function o(e,t){var n=r.document.createElement(e);for(var i in t)"class"===i?n.className=t[i]:"for"===i?n.htmlFor=t[i]:n.setAttribute(i,t[i]);return n}function a(e){for(var t=0,n=0,i=r.document.documentElement,o=r.document.body||{scrollLeft:0,scrollTop:0};e&&(e.parentNode||e.host)&&((e=e.parentNode||e.host)===r.document?(t=o.scrollLeft||i.scrollLeft||0,n=o.scrollTop||i.scrollTop||0):(t+=e.scrollLeft||0,n+=e.scrollTop||0),1!==e.nodeType||"fixed"!==e.style.position););return{left:t,top:n}}t||(i=function(e){for(var t=new Array(e.length),n=e.length;n--;)t[n]=e[n];return t}),n=r.document.defaultView&&r.document.defaultView.getComputedStyle?function(e,t){var n=r.document.defaultView.getComputedStyle(e,null);return n?n[t]:void 0}:function(e,t){var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n},function(){var e=r.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";r.util.makeElementUnselectable=function(e){return"undefined"!==typeof e.onselectstart&&(e.onselectstart=r.util.falseFunction),t?e.style[t]="none":"string"===typeof e.unselectable&&(e.unselectable="on"),e},r.util.makeElementSelectable=function(e){return"undefined"!==typeof e.onselectstart&&(e.onselectstart=null),t?e.style[t]="":"string"===typeof e.unselectable&&(e.unselectable=""),e}}(),r.util.setImageSmoothing=function(e,t){e.imageSmoothingEnabled=e.imageSmoothingEnabled||e.webkitImageSmoothingEnabled||e.mozImageSmoothingEnabled||e.msImageSmoothingEnabled||e.oImageSmoothingEnabled,e.imageSmoothingEnabled=t},r.util.getById=function(e){return"string"===typeof e?r.document.getElementById(e):e},r.util.toArray=i,r.util.addClass=function(e,t){e&&-1===(" "+e.className+" ").indexOf(" "+t+" ")&&(e.className+=(e.className?" ":"")+t)},r.util.makeElement=o,r.util.wrapElement=function(e,t,n){return"string"===typeof t&&(t=o(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t},r.util.getScrollLeftTop=a,r.util.getElementOffset=function(e){var t,i,r=e&&e.ownerDocument,o={left:0,top:0},s={left:0,top:0},u={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return s;for(var l in u)s[u[l]]+=parseInt(n(e,l),10)||0;return t=r.documentElement,"undefined"!==typeof e.getBoundingClientRect&&(o=e.getBoundingClientRect()),i=a(e),{left:o.left+i.left-(t.clientLeft||0)+s.left,top:o.top+i.top-(t.clientTop||0)+s.top}},r.util.getNodeCanvas=function(e){var t=r.jsdomImplForWrapper(e);return t._canvas||t._image},r.util.cleanUpJsdomNode=function(e){if(r.isLikelyNode){var t=r.jsdomImplForWrapper(e);t&&(t._image=null,t._canvas=null,t._currentSrc=null,t._attributes=null,t._classList=null)}}}(),function(){function e(){}r.util.request=function(t,n){n||(n={});var i=n.method?n.method.toUpperCase():"GET",o=n.onComplete||function(){},a=new r.window.XMLHttpRequest,s=n.body||n.parameters;return a.onreadystatechange=function(){4===a.readyState&&(o(a),a.onreadystatechange=e)},"GET"===i&&(s=null,"string"===typeof n.parameters&&(t=function(e,t){return e+(/\?/.test(e)?"&":"?")+t}(t,n.parameters))),a.open(i,t,!0),"POST"!==i&&"PUT"!==i||a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.send(s),a}}(),r.log=console.log,r.warn=console.warn,function(){function e(){return!1}function t(e,t,n,i){return-n*Math.cos(e/i*(Math.PI/2))+n+t}var n=r.window.requestAnimationFrame||r.window.webkitRequestAnimationFrame||r.window.mozRequestAnimationFrame||r.window.oRequestAnimationFrame||r.window.msRequestAnimationFrame||function(e){return r.window.setTimeout(e,1e3/60)},i=r.window.cancelAnimationFrame||r.window.clearTimeout;function o(){return n.apply(r.window,arguments)}r.util.animate=function(n){o((function(i){n||(n={});var r,a=i||+new Date,s=n.duration||500,u=a+s,l=n.onChange||e,c=n.abort||e,d=n.onComplete||e,h=n.easing||t,f="startValue"in n?n.startValue:0,p="endValue"in n?n.endValue:100,g=n.byValue||p-f;n.onStart&&n.onStart(),function e(t){var n=(r=t||+new Date)>u?s:r-a,i=n/s,v=h(n,f,g,s),m=Math.abs((v-f)/g);if(!c())return r>u?(l(p,1,1),void d(p,1,1)):(l(v,m,i),void o(e));d(p,1,1)}(a)}))},r.util.requestAnimFrame=o,r.util.cancelAnimFrame=function(){return i.apply(r.window,arguments)}}(),function(){function e(e,t,n){var i="rgba("+parseInt(e[0]+n*(t[0]-e[0]),10)+","+parseInt(e[1]+n*(t[1]-e[1]),10)+","+parseInt(e[2]+n*(t[2]-e[2]),10);return i+=","+(e&&t?parseFloat(e[3]+n*(t[3]-e[3])):1),i+=")"}r.util.animateColor=function(t,n,i,o){var a=new r.Color(t).getSource(),s=new r.Color(n).getSource(),u=o.onComplete,l=o.onChange;o=o||{},r.util.animate(r.util.object.extend(o,{duration:i||500,startValue:a,endValue:s,byValue:s,easing:function(t,n,i,r){return e(n,i,o.colorEasing?o.colorEasing(t,r):1-Math.cos(t/r*(Math.PI/2)))},onComplete:function(t,n,i){if(u)return u(e(s,s,0),n,i)},onChange:function(t,n,i){if(l){if(Array.isArray(t))return l(e(t,t,0),n,i);l(t,n,i)}}}))}}(),function(){function e(e,t,n,i){return e<Math.abs(t)?(e=t,i=n/4):i=0===t&&0===e?n/(2*Math.PI)*Math.asin(1):n/(2*Math.PI)*Math.asin(t/e),{a:e,c:t,p:n,s:i}}function t(e,t,n){return e.a*Math.pow(2,10*(t-=1))*Math.sin((t*n-e.s)*(2*Math.PI)/e.p)}function n(e,t,n,r){return n-i(r-e,0,n,r)+t}function i(e,t,n,i){return(e/=i)<1/2.75?n*(7.5625*e*e)+t:e<2/2.75?n*(7.5625*(e-=1.5/2.75)*e+.75)+t:e<2.5/2.75?n*(7.5625*(e-=2.25/2.75)*e+.9375)+t:n*(7.5625*(e-=2.625/2.75)*e+.984375)+t}r.util.ease={easeInQuad:function(e,t,n,i){return n*(e/=i)*e+t},easeOutQuad:function(e,t,n,i){return-n*(e/=i)*(e-2)+t},easeInOutQuad:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t},easeInCubic:function(e,t,n,i){return n*(e/=i)*e*e+t},easeOutCubic:function(e,t,n,i){return n*((e=e/i-1)*e*e+1)+t},easeInOutCubic:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t},easeInQuart:function(e,t,n,i){return n*(e/=i)*e*e*e+t},easeOutQuart:function(e,t,n,i){return-n*((e=e/i-1)*e*e*e-1)+t},easeInOutQuart:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t},easeInQuint:function(e,t,n,i){return n*(e/=i)*e*e*e*e+t},easeOutQuint:function(e,t,n,i){return n*((e=e/i-1)*e*e*e*e+1)+t},easeInOutQuint:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t},easeInSine:function(e,t,n,i){return-n*Math.cos(e/i*(Math.PI/2))+n+t},easeOutSine:function(e,t,n,i){return n*Math.sin(e/i*(Math.PI/2))+t},easeInOutSine:function(e,t,n,i){return-n/2*(Math.cos(Math.PI*e/i)-1)+t},easeInExpo:function(e,t,n,i){return 0===e?t:n*Math.pow(2,10*(e/i-1))+t},easeOutExpo:function(e,t,n,i){return e===i?t+n:n*(1-Math.pow(2,-10*e/i))+t},easeInOutExpo:function(e,t,n,i){return 0===e?t:e===i?t+n:(e/=i/2)<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(2-Math.pow(2,-10*--e))+t},easeInCirc:function(e,t,n,i){return-n*(Math.sqrt(1-(e/=i)*e)-1)+t},easeOutCirc:function(e,t,n,i){return n*Math.sqrt(1-(e=e/i-1)*e)+t},easeInOutCirc:function(e,t,n,i){return(e/=i/2)<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t},easeInElastic:function(n,i,r,o){var a=0;return 0===n?i:1===(n/=o)?i+r:(a||(a=.3*o),-t(e(r,r,a,1.70158),n,o)+i)},easeOutElastic:function(t,n,i,r){var o=0;if(0===t)return n;if(1===(t/=r))return n+i;o||(o=.3*r);var a=e(i,i,o,1.70158);return a.a*Math.pow(2,-10*t)*Math.sin((t*r-a.s)*(2*Math.PI)/a.p)+a.c+n},easeInOutElastic:function(n,i,r,o){var a=0;if(0===n)return i;if(2===(n/=o/2))return i+r;a||(a=o*(.3*1.5));var s=e(r,r,a,1.70158);return n<1?-.5*t(s,n,o)+i:s.a*Math.pow(2,-10*(n-=1))*Math.sin((n*o-s.s)*(2*Math.PI)/s.p)*.5+s.c+i},easeInBack:function(e,t,n,i,r){return void 0===r&&(r=1.70158),n*(e/=i)*e*((r+1)*e-r)+t},easeOutBack:function(e,t,n,i,r){return void 0===r&&(r=1.70158),n*((e=e/i-1)*e*((r+1)*e+r)+1)+t},easeInOutBack:function(e,t,n,i,r){return void 0===r&&(r=1.70158),(e/=i/2)<1?n/2*(e*e*((1+(r*=1.525))*e-r))+t:n/2*((e-=2)*e*((1+(r*=1.525))*e+r)+2)+t},easeInBounce:n,easeOutBounce:i,easeInOutBounce:function(e,t,r,o){return e<o/2?.5*n(2*e,0,r,o)+t:.5*i(2*e-o,0,r,o)+.5*r+t}}}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,i=t.util.object.clone,r=t.util.toFixed,o=t.util.parseUnit,a=t.util.multiplyTransformMatrices,s={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","letter-spacing":"charSpacing","paint-order":"paintFirst","stroke-dasharray":"strokeDashArray","stroke-dashoffset":"strokeDashOffset","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"textAnchor",opacity:"opacity","clip-path":"clipPath","clip-rule":"clipRule","vector-effect":"strokeUniform","image-rendering":"imageSmoothing"},u={stroke:"strokeOpacity",fill:"fillOpacity"},l="font-size",c="clip-path";function d(e){return e in s?s[e]:e}function h(e,n,i,r){var s,u="[object Array]"===Object.prototype.toString.call(n);if("fill"!==e&&"stroke"!==e||"none"!==n){if("strokeUniform"===e)return"non-scaling-stroke"===n;if("strokeDashArray"===e)n="none"===n?null:n.replace(/,/g," ").split(/\s+/).map(parseFloat);else if("transformMatrix"===e)n=i&&i.transformMatrix?a(i.transformMatrix,t.parseTransformAttribute(n)):t.parseTransformAttribute(n);else if("visible"===e)n="none"!==n&&"hidden"!==n,i&&!1===i.visible&&(n=!1);else if("opacity"===e)n=parseFloat(n),i&&"undefined"!==typeof i.opacity&&(n*=i.opacity);else if("textAnchor"===e)n="start"===n?"left":"end"===n?"right":"center";else if("charSpacing"===e)s=o(n,r)/r*1e3;else if("paintFirst"===e){var l=n.indexOf("fill"),c=n.indexOf("stroke");n="fill";(l>-1&&c>-1&&c<l||-1===l&&c>-1)&&(n="stroke")}else{if("href"===e||"xlink:href"===e||"font"===e)return n;if("imageSmoothing"===e)return"optimizeQuality"===n;s=u?n.map(o):o(n,r)}}else n="";return!u&&isNaN(s)?n:s}function f(e){return new RegExp("^("+e.join("|")+")\\b","i")}function p(e,t){var n,i,r,o,a=[];for(r=0,o=t.length;r<o;r++)n=t[r],i=e.getElementsByTagName(n),a=a.concat(Array.prototype.slice.call(i));return a}function g(e,t){var n,i=!0;return(n=v(e,t.pop()))&&t.length&&(i=function(e,t){var n,i=!0;for(;e.parentNode&&1===e.parentNode.nodeType&&t.length;)i&&(n=t.pop()),i=v(e=e.parentNode,n);return 0===t.length}(e,t)),n&&i&&0===t.length}function v(e,t){var n,i,r=e.nodeName,o=e.getAttribute("class"),a=e.getAttribute("id");if(n=new RegExp("^"+r,"i"),t=t.replace(n,""),a&&t.length&&(n=new RegExp("#"+a+"(?![a-zA-Z\\-]+)","i"),t=t.replace(n,"")),o&&t.length)for(i=(o=o.split(" ")).length;i--;)n=new RegExp("\\."+o[i]+"(?![a-zA-Z\\-]+)","i"),t=t.replace(n,"");return 0===t.length}function m(e,t){var n;if(e.getElementById&&(n=e.getElementById(t)),n)return n;var i,r,o,a=e.getElementsByTagName("*");for(r=0,o=a.length;r<o;r++)if(t===(i=a[r]).getAttribute("id"))return i}t.svgValidTagNamesRegEx=f(["path","circle","polygon","polyline","ellipse","rect","line","image","text"]),t.svgViewBoxElementsRegEx=f(["symbol","image","marker","pattern","view","svg"]),t.svgInvalidAncestorsRegEx=f(["pattern","defs","symbol","metadata","clipPath","mask","desc"]),t.svgValidParentsRegEx=f(["symbol","g","a","svg","clipPath","defs"]),t.cssRules={},t.gradientDefs={},t.clipPaths={},t.parseTransformAttribute=function(){function e(e,n,i){e[i]=Math.tan(t.util.degreesToRadians(n[0]))}var n=t.iMatrix,i=t.reNum,r=t.commaWsp,o="(?:"+("(?:(matrix)\\s*\\(\\s*("+i+")"+r+"("+i+")"+r+"("+i+")"+r+"("+i+")"+r+"("+i+")"+r+"("+i+")\\s*\\))")+"|"+("(?:(translate)\\s*\\(\\s*("+i+")(?:"+r+"("+i+"))?\\s*\\))")+"|"+("(?:(scale)\\s*\\(\\s*("+i+")(?:"+r+"("+i+"))?\\s*\\))")+"|"+("(?:(rotate)\\s*\\(\\s*("+i+")(?:"+r+"("+i+")"+r+"("+i+"))?\\s*\\))")+"|"+("(?:(skewX)\\s*\\(\\s*("+i+")\\s*\\))")+"|"+("(?:(skewY)\\s*\\(\\s*("+i+")\\s*\\))")+")",a=new RegExp("^\\s*(?:"+("(?:"+o+"(?:"+r+"*"+o+")*)")+"?)\\s*$"),s=new RegExp(o,"g");return function(i){var r=n.concat(),u=[];if(!i||i&&!a.test(i))return r;i.replace(s,(function(i){var a=new RegExp(o).exec(i).filter((function(e){return!!e})),s=a[1],l=a.slice(2).map(parseFloat);switch(s){case"translate":!function(e,t){e[4]=t[0],2===t.length&&(e[5]=t[1])}(r,l);break;case"rotate":l[0]=t.util.degreesToRadians(l[0]),function(e,n){var i=t.util.cos(n[0]),r=t.util.sin(n[0]),o=0,a=0;3===n.length&&(o=n[1],a=n[2]),e[0]=i,e[1]=r,e[2]=-r,e[3]=i,e[4]=o-(i*o-r*a),e[5]=a-(r*o+i*a)}(r,l);break;case"scale":!function(e,t){var n=t[0],i=2===t.length?t[1]:t[0];e[0]=n,e[3]=i}(r,l);break;case"skewX":e(r,l,2);break;case"skewY":e(r,l,1);break;case"matrix":r=l}u.push(r.concat()),r=n.concat()}));for(var l=u[0];u.length>1;)u.shift(),l=t.util.multiplyTransformMatrices(l,u[0]);return l}}();var _=new RegExp("^\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*$");function y(e){if(t.svgViewBoxElementsRegEx.test(e.nodeName)){var n,i,r,a,s,u,l=e.getAttribute("viewBox"),c=1,d=1,h=e.getAttribute("width"),f=e.getAttribute("height"),p=e.getAttribute("x")||0,g=e.getAttribute("y")||0,v=e.getAttribute("preserveAspectRatio")||"",m=!l||!(l=l.match(_)),y=!h||!f||"100%"===h||"100%"===f,b=m&&y,w={},C="",k=0,S=0;if(w.width=0,w.height=0,w.toBeParsed=b,m&&(p||g)&&"#document"!==e.parentNode.nodeName&&(C=" translate("+o(p)+" "+o(g)+") ",s=(e.getAttribute("transform")||"")+C,e.setAttribute("transform",s),e.removeAttribute("x"),e.removeAttribute("y")),b)return w;if(m)return w.width=o(h),w.height=o(f),w;if(n=-parseFloat(l[1]),i=-parseFloat(l[2]),r=parseFloat(l[3]),a=parseFloat(l[4]),w.minX=n,w.minY=i,w.viewBoxWidth=r,w.viewBoxHeight=a,y?(w.width=r,w.height=a):(w.width=o(h),w.height=o(f),c=w.width/r,d=w.height/a),"none"!==(v=t.util.parsePreserveAspectRatioAttribute(v)).alignX&&("meet"===v.meetOrSlice&&(d=c=c>d?d:c),"slice"===v.meetOrSlice&&(d=c=c>d?c:d),k=w.width-r*c,S=w.height-a*c,"Mid"===v.alignX&&(k/=2),"Mid"===v.alignY&&(S/=2),"Min"===v.alignX&&(k=0),"Min"===v.alignY&&(S=0)),1===c&&1===d&&0===n&&0===i&&0===p&&0===g)return w;if((p||g)&&"#document"!==e.parentNode.nodeName&&(C=" translate("+o(p)+" "+o(g)+") "),s=C+" matrix("+c+" 0 0 "+d+" "+(n*c+k)+" "+(i*d+S)+") ","svg"===e.nodeName){for(u=e.ownerDocument.createElementNS(t.svgNS,"g");e.firstChild;)u.appendChild(e.firstChild);e.appendChild(u)}else(u=e).removeAttribute("x"),u.removeAttribute("y"),s=u.getAttribute("transform")+s;return u.setAttribute("transform",s),w}}function b(e,t){var n="xlink:href",i=m(e,t.getAttribute(n).substr(1));if(i&&i.getAttribute(n)&&b(e,i),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(e){i&&!t.hasAttribute(e)&&i.hasAttribute(e)&&t.setAttribute(e,i.getAttribute(e))})),!t.children.length)for(var r=i.cloneNode(!0);r.firstChild;)t.appendChild(r.firstChild);t.removeAttribute(n)}t.parseSVGDocument=function(e,n,r,o){if(e){!function(e){for(var n=p(e,["use","svg:use"]),i=0;n.length&&i<n.length;){var r,o,a,s,u=n[i],l=(u.getAttribute("xlink:href")||u.getAttribute("href")).substr(1),c=u.getAttribute("x")||0,d=u.getAttribute("y")||0,h=m(e,l).cloneNode(!0),f=(h.getAttribute("transform")||"")+" translate("+c+", "+d+")",g=n.length,v=t.svgNS;if(y(h),/^svg$/i.test(h.nodeName)){var _=h.ownerDocument.createElementNS(v,"g");for(o=0,s=(a=h.attributes).length;o<s;o++)r=a.item(o),_.setAttributeNS(v,r.nodeName,r.nodeValue);for(;h.firstChild;)_.appendChild(h.firstChild);h=_}for(o=0,s=(a=u.attributes).length;o<s;o++)"x"!==(r=a.item(o)).nodeName&&"y"!==r.nodeName&&"xlink:href"!==r.nodeName&&"href"!==r.nodeName&&("transform"===r.nodeName?f=r.nodeValue+" "+f:h.setAttribute(r.nodeName,r.nodeValue));h.setAttribute("transform",f),h.setAttribute("instantiated_by_use","1"),h.removeAttribute("id"),u.parentNode.replaceChild(h,u),n.length===g&&i++}}(e);var a,s,u=t.Object.__uid++,l=y(e),c=t.util.toArray(e.getElementsByTagName("*"));if(l.crossOrigin=o&&o.crossOrigin,l.svgUid=u,0===c.length&&t.isLikelyNode){var d=[];for(a=0,s=(c=e.selectNodes('//*[name(.)!="svg"]')).length;a<s;a++)d[a]=c[a];c=d}var h=c.filter((function(e){return y(e),t.svgValidTagNamesRegEx.test(e.nodeName.replace("svg:",""))&&!function(e,t){for(;e&&(e=e.parentNode);)if(e.nodeName&&t.test(e.nodeName.replace("svg:",""))&&!e.getAttribute("instantiated_by_use"))return!0;return!1}(e,t.svgInvalidAncestorsRegEx)}));if(!h||h&&!h.length)n&&n([],{});else{var f={};c.filter((function(e){return"clipPath"===e.nodeName.replace("svg:","")})).forEach((function(e){var n=e.getAttribute("id");f[n]=t.util.toArray(e.getElementsByTagName("*")).filter((function(e){return t.svgValidTagNamesRegEx.test(e.nodeName.replace("svg:",""))}))})),t.gradientDefs[u]=t.getGradientDefs(e),t.cssRules[u]=t.getCSSRules(e),t.clipPaths[u]=f,t.parseElements(h,(function(e,i){n&&(n(e,l,i,c),delete t.gradientDefs[u],delete t.cssRules[u],delete t.clipPaths[u])}),i(l),r,o)}}};var w=new RegExp("(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*("+t.reNum+"(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|"+t.reNum+"))?\\s+(.*)");n(t,{parseFontDeclaration:function(e,t){var n=e.match(w);if(n){var i=n[1],r=n[3],a=n[4],s=n[5],u=n[6];i&&(t.fontStyle=i),r&&(t.fontWeight=isNaN(parseFloat(r))?r:parseFloat(r)),a&&(t.fontSize=o(a)),u&&(t.fontFamily=u),s&&(t.lineHeight="normal"===s?1:s)}},getGradientDefs:function(e){var t,n=p(e,["linearGradient","radialGradient","svg:linearGradient","svg:radialGradient"]),i=0,r={};for(i=n.length;i--;)(t=n[i]).getAttribute("xlink:href")&&b(e,t),r[t.getAttribute("id")]=t;return r},parseAttributes:function(e,i,a){if(e){var s,f,p,v={};"undefined"===typeof a&&(a=e.getAttribute("svgUid")),e.parentNode&&t.svgValidParentsRegEx.test(e.parentNode.nodeName)&&(v=t.parseAttributes(e.parentNode,i,a));var m=i.reduce((function(t,n){return(s=e.getAttribute(n))&&(t[n]=s),t}),{}),_=n(function(e,n){var i={};for(var r in t.cssRules[n])if(g(e,r.split(" ")))for(var o in t.cssRules[n][r])i[o]=t.cssRules[n][r][o];return i}(e,a),t.parseStyleAttribute(e));m=n(m,_),_[c]&&e.setAttribute(c,_[c]),f=p=v.fontSize||t.Text.DEFAULT_SVG_FONT_SIZE,m[l]&&(m[l]=f=o(m[l],p));var y,b,w={};for(var C in m)b=h(y=d(C),m[C],v,f),w[y]=b;w&&w.font&&t.parseFontDeclaration(w.font,w);var k=n(v,w);return t.svgValidParentsRegEx.test(e.nodeName)?k:function(e){for(var n in u)if("undefined"!==typeof e[u[n]]&&""!==e[n]){if("undefined"===typeof e[n]){if(!t.Object.prototype[n])continue;e[n]=t.Object.prototype[n]}if(0!==e[n].indexOf("url(")){var i=new t.Color(e[n]);e[n]=i.setAlpha(r(i.getAlpha()*e[u[n]],2)).toRgba()}}return e}(k)}},parseElements:function(e,n,i,r,o){new t.ElementsParser(e,n,i,r,o).parse()},parseStyleAttribute:function(e){var t={},n=e.getAttribute("style");return n?("string"===typeof n?function(e,t){var n,i;e.replace(/;\s*$/,"").split(";").forEach((function(e){var r=e.split(":");n=r[0].trim().toLowerCase(),i=r[1].trim(),t[n]=i}))}(n,t):function(e,t){var n,i;for(var r in e)"undefined"!==typeof e[r]&&(n=r.toLowerCase(),i=e[r],t[n]=i)}(n,t),t):t},parsePointsAttribute:function(e){if(!e)return null;var t,n,i=[];for(t=0,n=(e=(e=e.replace(/,/g," ").trim()).split(/\s+/)).length;t<n;t+=2)i.push({x:parseFloat(e[t]),y:parseFloat(e[t+1])});return i},getCSSRules:function(e){var n,i,r=e.getElementsByTagName("style"),o={};for(n=0,i=r.length;n<i;n++){var a=r[n].textContent||"";""!==(a=a.replace(/\/\*[\s\S]*?\*\//g,"")).trim()&&a.match(/[^{]*\{[\s\S]*?\}/g).map((function(e){return e.trim()})).forEach((function(e){var r=e.match(/([\s\S]*?)\s*\{([^}]*)\}/),a={},s=r[2].trim().replace(/;$/,"").split(/\s*;\s*/);for(n=0,i=s.length;n<i;n++){var u=s[n].split(/\s*:\s*/),l=u[0],c=u[1];a[l]=c}(e=r[1]).split(",").forEach((function(e){""!==(e=e.replace(/^svg/i,"").trim())&&(o[e]?t.util.object.extend(o[e],a):o[e]=t.util.object.clone(a))}))}))}return o},loadSVGFromURL:function(e,n,i,r){e=e.replace(/^\n\s*/,"").trim(),new t.util.request(e,{method:"get",onComplete:function(e){var o=e.responseXML;if(!o||!o.documentElement)return n&&n(null),!1;t.parseSVGDocument(o.documentElement,(function(e,t,i,r){n&&n(e,t,i,r)}),i,r)}})},loadSVGFromString:function(e,n,i,r){var o=(new t.window.DOMParser).parseFromString(e.trim(),"text/xml");t.parseSVGDocument(o.documentElement,(function(e,t,i,r){n(e,t,i,r)}),i,r)}})}(t),r.ElementsParser=function(e,t,n,i,r,o){this.elements=e,this.callback=t,this.options=n,this.reviver=i,this.svgUid=n&&n.svgUid||0,this.parsingOptions=r,this.regexUrl=/^url\(['"]?#([^'"]+)['"]?\)/g,this.doc=o},(i=r.ElementsParser.prototype).parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},i.createObjects=function(){var e=this;this.elements.forEach((function(t,n){t.setAttribute("svgUid",e.svgUid),e.createObject(t,n)}))},i.findTag=function(e){return r[r.util.string.capitalize(e.tagName.replace("svg:",""))]},i.createObject=function(e,t){var n=this.findTag(e);if(n&&n.fromElement)try{n.fromElement(e,this.createCallback(t,e),this.options)}catch(i){r.log(i)}else this.checkIfDone()},i.createCallback=function(e,t){var n=this;return function(i){var o;n.resolveGradient(i,t,"fill"),n.resolveGradient(i,t,"stroke"),i instanceof r.Image&&i._originalElement&&(o=i.parsePreserveAspectRatioAttribute(t)),i._removeTransformMatrix(o),n.resolveClipPath(i,t),n.reviver&&n.reviver(t,i),n.instances[e]=i,n.checkIfDone()}},i.extractPropertyDefinition=function(e,t,n){var i=e[t],o=this.regexUrl;if(o.test(i)){o.lastIndex=0;var a=o.exec(i)[1];return o.lastIndex=0,r[n][this.svgUid][a]}},i.resolveGradient=function(e,t,n){var i=this.extractPropertyDefinition(e,n,"gradientDefs");if(i){var o=t.getAttribute(n+"-opacity"),a=r.Gradient.fromElement(i,e,o,this.options);e.set(n,a)}},i.createClipPathCallback=function(e,t){return function(e){e._removeTransformMatrix(),e.fillRule=e.clipRule,t.push(e)}},i.resolveClipPath=function(e,t){var n,i,o,a,s=this.extractPropertyDefinition(e,"clipPath","clipPaths");if(s){o=[],i=r.util.invertTransform(e.calcTransformMatrix());for(var u=s[0].parentNode,l=t;l.parentNode&&l.getAttribute("clip-path")!==e.clipPath;)l=l.parentNode;l.parentNode.appendChild(u);for(var c=0;c<s.length;c++)n=s[c],this.findTag(n).fromElement(n,this.createClipPathCallback(e,o),this.options);s=1===o.length?o[0]:new r.Group(o),a=r.util.multiplyTransformMatrices(i,s.calcTransformMatrix()),s.clipPath&&this.resolveClipPath(s,l);var d=r.util.qrDecompose(a);s.flipX=!1,s.flipY=!1,s.set("scaleX",d.scaleX),s.set("scaleY",d.scaleY),s.angle=d.angle,s.skewX=d.skewX,s.skewY=0,s.setPositionByOrigin({x:d.translateX,y:d.translateY},"center","center"),e.clipPath=s}else delete e.clipPath},i.checkIfDone=function(){0===--this.numElements&&(this.instances=this.instances.filter((function(e){return null!=e})),this.callback(this.instances,this.elements))},function(e){"use strict";var t=e.fabric||(e.fabric={});function n(e,t){this.x=e,this.y=t}t.Point?t.warn("fabric.Point is already defined"):(t.Point=n,n.prototype={type:"point",constructor:n,add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.x<e.x&&this.y<e.y},lte:function(e){return this.x<=e.x&&this.y<=e.y},gt:function(e){return this.x>e.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return"undefined"===typeof t&&(t=.5),t=Math.max(Math.min(1,t),0),new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return this.lerp(e)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){return this.x=e,this.y=t,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setFromPoint:function(e){return this.x=e.x,this.y=e.y,this},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n},clone:function(){return new n(this.x,this.y)}})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={});function n(e){this.status=e,this.points=[]}t.Intersection?t.warn("fabric.Intersection is already defined"):(t.Intersection=n,t.Intersection.prototype={constructor:n,appendPoint:function(e){return this.points.push(e),this},appendPoints:function(e){return this.points=this.points.concat(e),this}},t.Intersection.intersectLineLine=function(e,i,r,o){var a,s=(o.x-r.x)*(e.y-r.y)-(o.y-r.y)*(e.x-r.x),u=(i.x-e.x)*(e.y-r.y)-(i.y-e.y)*(e.x-r.x),l=(o.y-r.y)*(i.x-e.x)-(o.x-r.x)*(i.y-e.y);if(0!==l){var c=s/l,d=u/l;0<=c&&c<=1&&0<=d&&d<=1?(a=new n("Intersection")).appendPoint(new t.Point(e.x+c*(i.x-e.x),e.y+c*(i.y-e.y))):a=new n}else a=new n(0===s||0===u?"Coincident":"Parallel");return a},t.Intersection.intersectLinePolygon=function(e,t,i){var r,o,a,s,u=new n,l=i.length;for(s=0;s<l;s++)r=i[s],o=i[(s+1)%l],a=n.intersectLineLine(e,t,r,o),u.appendPoints(a.points);return u.points.length>0&&(u.status="Intersection"),u},t.Intersection.intersectPolygonPolygon=function(e,t){var i,r=new n,o=e.length;for(i=0;i<o;i++){var a=e[i],s=e[(i+1)%o],u=n.intersectLinePolygon(a,s,t);r.appendPoints(u.points)}return r.points.length>0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,i,r){var o=i.min(r),a=i.max(r),s=new t.Point(a.x,o.y),u=new t.Point(o.x,a.y),l=n.intersectLinePolygon(o,s,e),c=n.intersectLinePolygon(s,a,e),d=n.intersectLinePolygon(a,u,e),h=n.intersectLinePolygon(u,o,e),f=new n;return f.appendPoints(l.points),f.appendPoints(c.points),f.appendPoints(d.points),f.appendPoints(h.points),f.points.length>0&&(f.status="Intersection"),f})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={});function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function i(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}t.Color?t.warn("fabric.Color is already defined."):(t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),"transparent"===e&&(t=[255,255,255,0]),t||(t=n.sourceFromHex(e)),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t||(t=[0,0,0,1]),t&&this.setSource(t)},_rgbToHsl:function(e,n,i){e/=255,n/=255,i/=255;var r,o,a,s=t.util.array.max([e,n,i]),u=t.util.array.min([e,n,i]);if(a=(s+u)/2,s===u)r=o=0;else{var l=s-u;switch(o=a>.5?l/(2-s-u):l/(s+u),s){case e:r=(n-i)/l+(n<i?6:0);break;case n:r=(i-e)/l+2;break;case i:r=(e-n)/l+4}r/=6}return[Math.round(360*r),Math.round(100*o),Math.round(100*a)]},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHsl:function(){var e=this.getSource(),t=this._rgbToHsl(e[0],e[1],e[2]);return"hsl("+t[0]+","+t[1]+"%,"+t[2]+"%)"},toHsla:function(){var e=this.getSource(),t=this._rgbToHsl(e[0],e[1],e[2]);return"hsla("+t[0]+","+t[1]+"%,"+t[2]+"%,"+e[3]+")"},toHex:function(){var e,t,n,i=this.getSource();return e=1===(e=i[0].toString(16)).length?"0"+e:e,t=1===(t=i[1].toString(16)).length?"0"+t:t,n=1===(n=i[2].toString(16)).length?"0"+n:n,e.toUpperCase()+t.toUpperCase()+n.toUpperCase()},toHexa:function(){var e,t=this.getSource();return e=1===(e=(e=Math.round(255*t[3])).toString(16)).length?"0"+e:e,this.toHex()+e.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var t=this.getSource();return t[3]=e,this.setSource(t),this},toGrayscale:function(){var e=this.getSource(),t=parseInt((.3*e[0]+.59*e[1]+.11*e[2]).toFixed(0),10),n=e[3];return this.setSource([t,t,t,n]),this},toBlackWhite:function(e){var t=this.getSource(),n=(.3*t[0]+.59*t[1]+.11*t[2]).toFixed(0),i=t[3];return e=e||127,n=Number(n)<Number(e)?0:255,this.setSource([n,n,n,i]),this},overlayWith:function(e){e instanceof n||(e=new n(e));var t,i=[],r=this.getAlpha(),o=this.getSource(),a=e.getSource();for(t=0;t<3;t++)i.push(Math.round(.5*o[t]+.5*a[t]));return i[3]=r,this.setSource(i),this}},t.Color.reRGBa=/^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i,t.Color.reHSLa=/^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i,t.Color.reHex=/^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i,t.Color.colorNameMap={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",darkgreen:"#006400",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",lightgreen:"#90EE90",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"},t.Color.fromRgb=function(e){return n.fromSource(n.sourceFromRgb(e))},t.Color.sourceFromRgb=function(e){var t=e.match(n.reRGBa);if(t){var i=parseInt(t[1],10)/(/%$/.test(t[1])?100:1)*(/%$/.test(t[1])?255:1),r=parseInt(t[2],10)/(/%$/.test(t[2])?100:1)*(/%$/.test(t[2])?255:1),o=parseInt(t[3],10)/(/%$/.test(t[3])?100:1)*(/%$/.test(t[3])?255:1);return[parseInt(i,10),parseInt(r,10),parseInt(o,10),t[4]?parseFloat(t[4]):1]}},t.Color.fromRgba=n.fromRgb,t.Color.fromHsl=function(e){return n.fromSource(n.sourceFromHsl(e))},t.Color.sourceFromHsl=function(e){var t=e.match(n.reHSLa);if(t){var r,o,a,s=(parseFloat(t[1])%360+360)%360/360,u=parseFloat(t[2])/(/%$/.test(t[2])?100:1),l=parseFloat(t[3])/(/%$/.test(t[3])?100:1);if(0===u)r=o=a=l;else{var c=l<=.5?l*(u+1):l+u-l*u,d=2*l-c;r=i(d,c,s+1/3),o=i(d,c,s),a=i(d,c,s-1/3)}return[Math.round(255*r),Math.round(255*o),Math.round(255*a),t[4]?parseFloat(t[4]):1]}},t.Color.fromHsla=n.fromHsl,t.Color.fromHex=function(e){return n.fromSource(n.sourceFromHex(e))},t.Color.sourceFromHex=function(e){if(e.match(n.reHex)){var t=e.slice(e.indexOf("#")+1),i=3===t.length||4===t.length,r=8===t.length||4===t.length,o=i?t.charAt(0)+t.charAt(0):t.substring(0,2),a=i?t.charAt(1)+t.charAt(1):t.substring(2,4),s=i?t.charAt(2)+t.charAt(2):t.substring(4,6),u=r?i?t.charAt(3)+t.charAt(3):t.substring(6,8):"FF";return[parseInt(o,16),parseInt(a,16),parseInt(s,16),parseFloat((parseInt(u,16)/255).toFixed(2))]}},t.Color.fromSource=function(e){var t=new n;return t.setSource(e),t})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=["e","se","s","sw","w","nw","n","ne","e"],i=["ns","nesw","ew","nwse"],r={},o="left",a="top",s="right",u="bottom",l="center",c={top:u,bottom:a,left:s,right:o,center:l},d=t.util.radiansToDegrees,h=Math.sign||function(e){return(e>0)-(e<0)||+e};function f(e,t){var n=e.angle+d(Math.atan2(t.y,t.x))+360;return Math.round(n%360/45)}function p(e,n){var i=n.transform.target,r=i.canvas,o=t.util.object.clone(n);o.target=i,r&&r.fire("object:"+e,o),i.fire(e,n)}function g(e,t){var n=t.canvas,i=e[n.uniScaleKey];return n.uniformScaling&&!i||!n.uniformScaling&&i}function v(e){return e.originX===l&&e.originY===l}function m(e,t,n){var i=e.lockScalingX,r=e.lockScalingY;return!(!i||!r)||(!(t||!i&&!r||!n)||(!(!i||"x"!==t)||!(!r||"y"!==t)))}function _(e,t,n,i){return{e:e,transform:t,pointer:{x:n,y:i}}}function y(e){return function(t,n,i,r){var o=n.target,a=o.getCenterPoint(),s=o.translateToOriginPoint(a,n.originX,n.originY),u=e(t,n,i,r);return o.setPositionByOrigin(s,n.originX,n.originY),u}}function b(e,n,i,r,o){var a=e.target,s=a.controls[e.corner],u=a.canvas.getZoom(),l=a.padding/u,c=a.toLocalPoint(new t.Point(r,o),n,i);return c.x>=l&&(c.x-=l),c.x<=-l&&(c.x+=l),c.y>=l&&(c.y-=l),c.y<=l&&(c.y+=l),c.x-=s.offsetX,c.y-=s.offsetY,c}function w(e){return e.flipX&&!e.flipY||!e.flipX&&e.flipY}function C(e,t,n,i,r){if(0!==e[t]){var o=r/e._getTransformedDimensions()[i]*e[n];e.set(n,o)}}function k(e,t,n,i){var r,l=t.target,c=l._getTransformedDimensions(0,l.skewY),h=b(t,t.originX,t.originY,n,i),f=Math.abs(2*h.x)-c.x,g=l.skewX;f<2?r=0:(r=d(Math.atan2(f/l.scaleX,c.y/l.scaleY)),t.originX===o&&t.originY===u&&(r=-r),t.originX===s&&t.originY===a&&(r=-r),w(l)&&(r=-r));var v=g!==r;if(v){var m=l._getTransformedDimensions().y;l.set("skewX",r),C(l,"skewY","scaleY","y",m),p("skewing",_(e,t,n,i))}return v}function S(e,t,n,i){var r,l=t.target,c=l._getTransformedDimensions(l.skewX,0),h=b(t,t.originX,t.originY,n,i),f=Math.abs(2*h.y)-c.y,g=l.skewY;f<2?r=0:(r=d(Math.atan2(f/l.scaleY,c.x/l.scaleX)),t.originX===o&&t.originY===u&&(r=-r),t.originX===s&&t.originY===a&&(r=-r),w(l)&&(r=-r));var v=g!==r;if(v){var m=l._getTransformedDimensions().x;l.set("skewY",r),C(l,"skewX","scaleX","x",m),p("skewing",_(e,t,n,i))}return v}function x(e,t,n,i,r){r=r||{};var o,a,s,u,l,d,f=t.target,y=f.lockScalingX,w=f.lockScalingY,C=r.by,k=g(e,f),S=m(f,C,k),x=t.gestureScale;if(S)return!1;if(x)a=t.scaleX*x,s=t.scaleY*x;else{if(o=b(t,t.originX,t.originY,n,i),l="y"!==C?h(o.x):1,d="x"!==C?h(o.y):1,t.signX||(t.signX=l),t.signY||(t.signY=d),f.lockScalingFlip&&(t.signX!==l||t.signY!==d))return!1;if(u=f._getTransformedDimensions(),k&&!C){var L,E=Math.abs(o.x)+Math.abs(o.y),D=t.original,N=E/(Math.abs(u.x*D.scaleX/f.scaleX)+Math.abs(u.y*D.scaleY/f.scaleY));a=D.scaleX*N,s=D.scaleY*N}else a=Math.abs(o.x*f.scaleX/u.x),s=Math.abs(o.y*f.scaleY/u.y);v(t)&&(a*=2,s*=2),t.signX!==l&&"y"!==C&&(t.originX=c[t.originX],a*=-1,t.signX=l),t.signY!==d&&"x"!==C&&(t.originY=c[t.originY],s*=-1,t.signY=d)}var M=f.scaleX,T=f.scaleY;return C?("x"===C&&f.set("scaleX",a),"y"===C&&f.set("scaleY",s)):(!y&&f.set("scaleX",a),!w&&f.set("scaleY",s)),(L=M!==f.scaleX||T!==f.scaleY)&&p("scaling",_(e,t,n,i)),L}r.scaleCursorStyleHandler=function(e,t,i){var r=g(e,i),o="";if(0!==t.x&&0===t.y?o="x":0===t.x&&0!==t.y&&(o="y"),m(i,o,r))return"not-allowed";var a=f(i,t);return n[a]+"-resize"},r.skewCursorStyleHandler=function(e,t,n){var r="not-allowed";if(0!==t.x&&n.lockSkewingY)return r;if(0!==t.y&&n.lockSkewingX)return r;var o=f(n,t)%4;return i[o]+"-resize"},r.scaleSkewCursorStyleHandler=function(e,t,n){return e[n.canvas.altActionKey]?r.skewCursorStyleHandler(e,t,n):r.scaleCursorStyleHandler(e,t,n)},r.rotationWithSnapping=y((function(e,t,n,i){var r=t,o=r.target,a=o.translateToOriginPoint(o.getCenterPoint(),r.originX,r.originY);if(o.lockRotation)return!1;var s,u=Math.atan2(r.ey-a.y,r.ex-a.x),l=Math.atan2(i-a.y,n-a.x),c=d(l-u+r.theta);if(o.snapAngle>0){var h=o.snapAngle,f=o.snapThreshold||h,g=Math.ceil(c/h)*h,v=Math.floor(c/h)*h;Math.abs(c-v)<f?c=v:Math.abs(c-g)<f&&(c=g)}return c<0&&(c=360+c),c%=360,s=o.angle!==c,o.angle=c,s&&p("rotating",_(e,t,n,i)),s})),r.scalingEqually=y((function(e,t,n,i){return x(e,t,n,i)})),r.scalingX=y((function(e,t,n,i){return x(e,t,n,i,{by:"x"})})),r.scalingY=y((function(e,t,n,i){return x(e,t,n,i,{by:"y"})})),r.scalingYOrSkewingX=function(e,t,n,i){return e[t.target.canvas.altActionKey]?r.skewHandlerX(e,t,n,i):r.scalingY(e,t,n,i)},r.scalingXOrSkewingY=function(e,t,n,i){return e[t.target.canvas.altActionKey]?r.skewHandlerY(e,t,n,i):r.scalingX(e,t,n,i)},r.changeWidth=y((function(e,t,n,i){var r,o=t.target,a=b(t,t.originX,t.originY,n,i),s=o.strokeWidth/(o.strokeUniform?o.scaleX:1),u=v(t)?2:1,l=o.width,c=Math.abs(a.x*u/o.scaleX)-s;return o.set("width",Math.max(c,0)),(r=l!==c)&&p("resizing",_(e,t,n,i)),r})),r.skewHandlerX=function(e,t,n,i){var r,u=t.target,c=u.skewX,d=t.originY;return!u.lockSkewingX&&(0===c?r=b(t,l,l,n,i).x>0?o:s:(c>0&&(r=d===a?o:s),c<0&&(r=d===a?s:o),w(u)&&(r=r===o?s:o)),t.originX=r,y(k)(e,t,n,i))},r.skewHandlerY=function(e,t,n,i){var r,s=t.target,c=s.skewY,d=t.originX;return!s.lockSkewingY&&(0===c?r=b(t,l,l,n,i).y>0?a:u:(c>0&&(r=d===o?a:u),c<0&&(r=d===o?u:a),w(s)&&(r=r===a?u:a)),t.originY=r,y(S)(e,t,n,i))},r.dragHandler=function(e,t,n,i){var r=t.target,o=n-t.offsetX,a=i-t.offsetY,s=!r.get("lockMovementX")&&r.left!==o,u=!r.get("lockMovementY")&&r.top!==a;return s&&r.set("left",o),u&&r.set("top",a),(s||u)&&p("moving",_(e,t,n,i)),s||u},r.scaleOrSkewActionName=function(e,t,n){var i=e[n.canvas.altActionKey];return 0===t.x?i?"skewX":"scaleY":0===t.y?i?"skewY":"scaleX":void 0},r.rotationStyleHandler=function(e,t,n){return n.lockRotation?"not-allowed":t.cursorStyle},r.fireEvent=p,r.wrapWithFixedAnchor=y,r.getLocalPoint=b,t.controlsUtils=r}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.degreesToRadians,i=t.controlsUtils;i.renderCircleControl=function(e,t,n,i,r){var o=(i=i||{}).cornerSize||r.cornerSize,a="undefined"!==typeof i.transparentCorners?i.transparentCorners:this.transparentCorners,s=a?"stroke":"fill",u=!a&&(i.cornerStrokeColor||r.cornerStrokeColor);e.save(),e.fillStyle=i.cornerColor||r.cornerColor,e.strokeStyle=i.cornerStrokeColor||r.cornerStrokeColor,e.lineWidth=1,e.beginPath(),e.arc(t,n,o/2,0,2*Math.PI,!1),e[s](),u&&e.stroke(),e.restore()},i.renderSquareControl=function(e,t,i,r,o){var a=(r=r||{}).cornerSize||o.cornerSize,s="undefined"!==typeof r.transparentCorners?r.transparentCorners:o.transparentCorners,u=s?"stroke":"fill",l=!s&&(r.cornerStrokeColor||o.cornerStrokeColor),c=a/2;e.save(),e.fillStyle=r.cornerColor||o.cornerColor,e.strokeStyle=r.strokeCornerColor||o.strokeCornerColor,e.lineWidth=1,e.translate(t,i),e.rotate(n(o.angle)),e[u+"Rect"](-c,-c,a,a),l&&e.strokeRect(-c,-c,a,a),e.restore()}}(t),function(e){"use strict";var t=e.fabric||(e.fabric={});t.Control=function(e){for(var t in e)this[t]=e[t]},t.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(e,t){return t.cursorStyle},getActionName:function(e,t){return t.actionName},getVisibility:function(e,t){var n=e._controlsVisibility;return n&&"undefined"!==typeof n[t]?n[t]:this.visible},setVisibility:function(e){this.visible=e},positionHandler:function(e,n){return t.util.transformPoint({x:this.x*e.x+this.offsetX,y:this.y*e.y+this.offsetY},n)},render:function(e,n,i,r,o){if("circle"===((r=r||{}).cornerStyle||o.cornerStyle))t.controlsUtils.renderCircleControl.call(this,e,n,i,r,o);else t.controlsUtils.renderSquareControl.call(this,e,n,i,r,o)}}}(t),function(){function e(e,t){var n,i,o,a,s=e.getAttribute("style"),u=e.getAttribute("offset")||0;if(u=(u=parseFloat(u)/(/%$/.test(u)?100:1))<0?0:u>1?1:u,s){var l=s.split(/\s*;\s*/);for(""===l[l.length-1]&&l.pop(),a=l.length;a--;){var c=l[a].split(/\s*:\s*/),d=c[0].trim(),h=c[1].trim();"stop-color"===d?n=h:"stop-opacity"===d&&(o=h)}}return n||(n=e.getAttribute("stop-color")||"rgb(0,0,0)"),o||(o=e.getAttribute("stop-opacity")),i=(n=new r.Color(n)).getAlpha(),o=isNaN(parseFloat(o))?1:parseFloat(o),o*=i*t,{offset:u,color:n.toRgb(),opacity:o}}var t=r.util.object.clone;r.Gradient=r.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(e){e||(e={}),e.coords||(e.coords={});var t,n=this;Object.keys(e).forEach((function(t){n[t]=e[t]})),this.id?this.id+="_"+r.Object.__uid++:this.id=r.Object.__uid++,t={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},"radial"===this.type&&(t.r1=e.coords.r1||0,t.r2=e.coords.r2||0),this.coords=t,this.colorStops=e.colorStops.slice()},addColorStop:function(e){for(var t in e){var n=new r.Color(e[t]);this.colorStops.push({offset:parseFloat(t),color:n.toRgb(),opacity:n.getAlpha()})}return this},toObject:function(e){var t={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return r.util.populateWithProperties(this,t,e),t},toSVG:function(e,n){var i,o,a,s,u=t(this.coords,!0),l=(n=n||{},t(this.colorStops,!0)),c=u.r1>u.r2,d=this.gradientTransform?this.gradientTransform.concat():r.iMatrix.concat(),h=-this.offsetX,f=-this.offsetY,p=!!n.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(l.sort((function(e,t){return e.offset-t.offset})),"objectBoundingBox"===g?(h/=e.width,f/=e.height):(h+=e.width/2,f+=e.height/2),"path"===e.type&&(h-=e.pathOffset.x,f-=e.pathOffset.y),d[4]-=h,d[5]-=f,s='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',s+=' gradientTransform="'+(p?n.additionalTransform+" ":"")+r.util.matrixToSVG(d)+'" ',"linear"===this.type?a=["<linearGradient ",s,' x1="',u.x1,'" y1="',u.y1,'" x2="',u.x2,'" y2="',u.y2,'">\n']:"radial"===this.type&&(a=["<radialGradient ",s,' cx="',c?u.x1:u.x2,'" cy="',c?u.y1:u.y2,'" r="',c?u.r1:u.r2,'" fx="',c?u.x2:u.x1,'" fy="',c?u.y2:u.y1,'">\n']),"radial"===this.type){if(c)for((l=l.concat()).reverse(),i=0,o=l.length;i<o;i++)l[i].offset=1-l[i].offset;var v=Math.min(u.r1,u.r2);if(v>0){var m=v/Math.max(u.r1,u.r2);for(i=0,o=l.length;i<o;i++)l[i].offset+=m*(1-l[i].offset)}}for(i=0,o=l.length;i<o;i++){var _=l[i];a.push("<stop ",'offset="',100*_.offset+"%",'" style="stop-color:',_.color,"undefined"!==typeof _.opacity?";stop-opacity: "+_.opacity:";",'"/>\n')}return a.push("linear"===this.type?"</linearGradient>\n":"</radialGradient>\n"),a.join("")},toLive:function(e){var t,n,i,o=r.util.object.clone(this.coords);if(this.type){for("linear"===this.type?t=e.createLinearGradient(o.x1,o.y1,o.x2,o.y2):"radial"===this.type&&(t=e.createRadialGradient(o.x1,o.y1,o.r1,o.x2,o.y2,o.r2)),n=0,i=this.colorStops.length;n<i;n++){var a=this.colorStops[n].color,s=this.colorStops[n].opacity,u=this.colorStops[n].offset;"undefined"!==typeof s&&(a=new r.Color(a).setAlpha(s).toRgba()),t.addColorStop(u,a)}return t}}}),r.util.object.extend(r.Gradient,{fromElement:function(t,n,i,o){var a=parseFloat(i)/(/%$/.test(i)?100:1);a=a<0?0:a>1?1:a,isNaN(a)&&(a=1);var s,u,l,c,d=t.getElementsByTagName("stop"),h="userSpaceOnUse"===t.getAttribute("gradientUnits")?"pixels":"percentage",f=t.getAttribute("gradientTransform")||"",p=[],g=0,v=0;for("linearGradient"===t.nodeName||"LINEARGRADIENT"===t.nodeName?(s="linear",u=function(e){return{x1:e.getAttribute("x1")||0,y1:e.getAttribute("y1")||0,x2:e.getAttribute("x2")||"100%",y2:e.getAttribute("y2")||0}}(t)):(s="radial",u=function(e){return{x1:e.getAttribute("fx")||e.getAttribute("cx")||"50%",y1:e.getAttribute("fy")||e.getAttribute("cy")||"50%",r1:0,x2:e.getAttribute("cx")||"50%",y2:e.getAttribute("cy")||"50%",r2:e.getAttribute("r")||"50%"}}(t)),l=d.length;l--;)p.push(e(d[l],a));return c=r.parseTransformAttribute(f),function(e,t,n,i){var r,o;Object.keys(t).forEach((function(e){"Infinity"===(r=t[e])?o=1:"-Infinity"===r?o=0:(o=parseFloat(t[e],10),"string"===typeof r&&/^(\d+\.\d+)%|(\d+)%$/.test(r)&&(o*=.01,"pixels"===i&&("x1"!==e&&"x2"!==e&&"r2"!==e||(o*=n.viewBoxWidth||n.width),"y1"!==e&&"y2"!==e||(o*=n.viewBoxHeight||n.height)))),t[e]=o}))}(0,u,o,h),"pixels"===h&&(g=-n.left,v=-n.top),new r.Gradient({id:t.getAttribute("id"),type:s,coords:u,colorStops:p,gradientUnits:h,gradientTransform:c,offsetX:g,offsetY:v})}})}(),function(){"use strict";var e=r.util.toFixed;r.Pattern=r.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(e,t){if(e||(e={}),this.id=r.Object.__uid++,this.setOptions(e),!e.source||e.source&&"string"!==typeof e.source)t&&t(this);else{var n=this;this.source=r.util.createImage(),r.util.loadImage(e.source,(function(e,i){n.source=e,t&&t(n,i)}),null,this.crossOrigin)}},toObject:function(t){var n,i,o=r.Object.NUM_FRACTION_DIGITS;return"string"===typeof this.source.src?n=this.source.src:"object"===typeof this.source&&this.source.toDataURL&&(n=this.source.toDataURL()),i={type:"pattern",source:n,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:e(this.offsetX,o),offsetY:e(this.offsetY,o),patternTransform:this.patternTransform?this.patternTransform.concat():null},r.util.populateWithProperties(this,i,t),i},toSVG:function(e){var t="function"===typeof this.source?this.source():this.source,n=t.width/e.width,i=t.height/e.height,r=this.offsetX/e.width,o=this.offsetY/e.height,a="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,o&&(i+=Math.abs(o))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(n=1,r&&(n+=Math.abs(r))),t.src?a=t.src:t.toDataURL&&(a=t.toDataURL()),'<pattern id="SVGID_'+this.id+'" x="'+r+'" y="'+o+'" width="'+n+'" height="'+i+'">\n<image x="0" y="0" width="'+t.width+'" height="'+t.height+'" xlink:href="'+a+'"></image>\n</pattern>\n'},setOptions:function(e){for(var t in e)this[t]=e[t]},toLive:function(e){var t=this.source;if(!t)return"";if("undefined"!==typeof t.src){if(!t.complete)return"";if(0===t.naturalWidth||0===t.naturalHeight)return""}return e.createPattern(t,this.repeat)}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;t.Shadow?t.warn("fabric.Shadow is already defined."):(t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(e){for(var n in"string"===typeof e&&(e=this._parseShadow(e)),e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),i=t.Shadow.reOffsetsAndBlur.exec(n)||[];return{color:(n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseInt(i[1],10)||0,offsetY:parseInt(i[2],10)||0,blur:parseInt(i[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var i=40,r=40,o=t.Object.NUM_FRACTION_DIGITS,a=t.util.rotateVector({x:this.offsetX,y:this.offsetY},t.util.degreesToRadians(-e.angle)),s=new t.Color(this.color);return e.width&&e.height&&(i=100*n((Math.abs(a.x)+this.blur)/e.width,o)+20,r=100*n((Math.abs(a.y)+this.blur)/e.height,o)+20),e.flipX&&(a.x*=-1),e.flipY&&(a.y*=-1),'<filter id="SVGID_'+this.id+'" y="-'+r+'%" height="'+(100+2*r)+'%" x="-'+i+'%" width="'+(100+2*i)+'%" >\n\t<feGaussianBlur in="SourceAlpha" stdDeviation="'+n(this.blur?this.blur/2:0,o)+'"></feGaussianBlur>\n\t<feOffset dx="'+n(a.x,o)+'" dy="'+n(a.y,o)+'" result="oBlur" ></feOffset>\n\t<feFlood flood-color="'+s.toRgb()+'" flood-opacity="'+s.getAlpha()+'"/>\n\t<feComposite in2="oBlur" operator="in" />\n\t<feMerge>\n\t\t<feMergeNode></feMergeNode>\n\t\t<feMergeNode in="SourceGraphic"></feMergeNode>\n\t</feMerge>\n</filter>\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var e={},n=t.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(t){this[t]!==n[t]&&(e[t]=this[t])}),this),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/)}(t),function(){"use strict";if(r.StaticCanvas)r.warn("fabric.StaticCanvas is already defined.");else{var e=r.util.object.extend,t=r.util.getElementOffset,n=r.util.removeFromArray,i=r.util.toFixed,o=r.util.transformPoint,a=r.util.invertTransform,s=r.util.getNodeCanvas,u=r.util.createCanvasElement,l=new Error("Could not initialize `canvas` element");r.StaticCanvas=r.util.createClass(r.CommonMethods,{initialize:function(e,t){t||(t={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(e,t)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:r.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(e,t){var n=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(e),this._initOptions(t),this.interactive||this._initRetinaScaling(),t.overlayImage&&this.setOverlayImage(t.overlayImage,n),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,n),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,n),t.overlayColor&&this.setOverlayColor(t.overlayColor,n),this.calcOffset()},_isRetinaScaling:function(){return 1!==r.devicePixelRatio&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?r.devicePixelRatio:1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var e=r.devicePixelRatio;this.__initRetinaScaling(e,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(e,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(e,t,n){t.setAttribute("width",this.width*e),t.setAttribute("height",this.height*e),n.scale(e,e)},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,i){return"string"===typeof t?r.util.loadImage(t,(function(t,o){if(t){var a=new r.Image(t,i);this[e]=a,a.canvas=this}n&&n(t,o)}),this,i&&i.crossOrigin):(i&&t.setOptions(i),this[e]=t,t&&(t.canvas=this),n&&n(t,!1)),this},__setBgOverlayColor:function(e,t,n){return this[e]=t,this._initGradient(t,e),this._initPattern(t,e,n),this},_createCanvasElement:function(){var e=u();if(!e)throw l;if(e.style||(e.style={}),"undefined"===typeof e.getContext)throw l;return e},_initOptions:function(e){var t=this.lowerCanvasEl;this._setOptions(e),this.width=this.width||parseInt(t.width,10)||0,this.height=this.height||parseInt(t.height,10)||0,this.lowerCanvasEl.style&&(t.width=this.width,t.height=this.height,t.style.width=this.width+"px",t.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(e){e&&e.getContext?this.lowerCanvasEl=e:this.lowerCanvasEl=r.util.getById(e)||this._createCanvasElement(),r.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e,t){return this.setDimensions({width:e},t)},setHeight:function(e,t){return this.setDimensions({height:e},t)},setDimensions:function(e,t){var n;for(var i in t=t||{},e)n=e[i],t.cssOnly||(this._setBackstoreDimension(i,e[i]),n+="px",this.hasLostContext=!0),t.backstoreOnly||this._setCssDimension(i,n);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(),this._initRetinaScaling(),this.calcOffset(),t.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.upperCanvasEl&&(this.upperCanvasEl[e]=t),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this[e]=t,this},_setCssDimension:function(e,t){return this.lowerCanvasEl.style[e]=t,this.upperCanvasEl&&(this.upperCanvasEl.style[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(e){var t,n,i,r=this._activeObject;for(this.viewportTransform=e,n=0,i=this._objects.length;n<i;n++)(t=this._objects[n]).group||t.setCoords(!0);return r&&r.setCoords(),this.calcViewportBoundaries(),this.renderOnAddRemove&&this.requestRenderAll(),this},zoomToPoint:function(e,t){var n=e,i=this.viewportTransform.slice(0);e=o(e,a(this.viewportTransform)),i[0]=t,i[3]=t;var r=o(e,i);return i[4]+=n.x-r.x,i[5]+=n.y-r.y,this.setViewportTransform(i)},setZoom:function(e){return this.zoomToPoint(new r.Point(0,0),e),this},absolutePan:function(e){var t=this.viewportTransform.slice(0);return t[4]=-e.x,t[5]=-e.y,this.setViewportTransform(t)},relativePan:function(e){return this.absolutePan(new r.Point(-e.x-this.viewportTransform[4],-e.y-this.viewportTransform[5]))},getElement:function(){return this.lowerCanvasEl},_onObjectAdded:function(e){this.stateful&&e.setupState(),e._set("canvas",this),e.setCoords(),this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.fire("object:removed",{target:e}),e.fire("removed"),delete e.canvas},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.backgroundImage=null,this.overlayImage=null,this.backgroundColor="",this.overlayColor="",this._hasITextHandlers&&(this.off("mouse:up",this._mouseUpITextHandler),this._iTextInstances=null,this._hasITextHandlers=!1),this.clearContext(this.contextContainer),this.fire("canvas:cleared"),this.renderOnAddRemove&&this.requestRenderAll(),this},renderAll:function(){var e=this.contextContainer;return this.renderCanvas(e,this._objects),this},renderAndReset:function(){this.isRendering=0,this.renderAll()},requestRenderAll:function(){return this.isRendering||(this.isRendering=r.util.requestAnimFrame(this.renderAndResetBound)),this},calcViewportBoundaries:function(){var e={},t=this.width,n=this.height,i=a(this.viewportTransform);return e.tl=o({x:0,y:0},i),e.br=o({x:t,y:n},i),e.tr=new r.Point(e.br.x,e.tl.y),e.bl=new r.Point(e.tl.x,e.br.y),this.vptCoords=e,e},cancelRequestedRender:function(){this.isRendering&&(r.util.cancelAnimFrame(this.isRendering),this.isRendering=0)},renderCanvas:function(e,t){var n=this.viewportTransform,i=this.clipPath;this.cancelRequestedRender(),this.calcViewportBoundaries(),this.clearContext(e),r.util.setImageSmoothing(e,this.imageSmoothingEnabled),this.fire("before:render",{ctx:e}),this._renderBackground(e),e.save(),e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this._renderObjects(e,t),e.restore(),!this.controlsAboveOverlay&&this.interactive&&this.drawControls(e),i&&(i.canvas=this,i.shouldCache(),i._transformDone=!0,i.renderCache({forClipping:!0}),this.drawClipPathOnCanvas(e)),this._renderOverlay(e),this.controlsAboveOverlay&&this.interactive&&this.drawControls(e),this.fire("after:render",{ctx:e})},drawClipPathOnCanvas:function(e){var t=this.viewportTransform,n=this.clipPath;e.save(),e.transform(t[0],t[1],t[2],t[3],t[4],t[5]),e.globalCompositeOperation="destination-in",n.transform(e),e.scale(1/n.zoomX,1/n.zoomY),e.drawImage(n._cacheCanvas,-n.cacheTranslationX,-n.cacheTranslationY),e.restore()},_renderObjects:function(e,t){var n,i;for(n=0,i=t.length;n<i;++n)t[n]&&t[n].render(e)},_renderBackgroundOrOverlay:function(e,t){var n=this[t+"Color"],i=this[t+"Image"],r=this.viewportTransform,o=this[t+"Vpt"];if(n||i){if(n){e.save(),e.beginPath(),e.moveTo(0,0),e.lineTo(this.width,0),e.lineTo(this.width,this.height),e.lineTo(0,this.height),e.closePath(),e.fillStyle=n.toLive?n.toLive(e,this):n,o&&e.transform(r[0],r[1],r[2],r[3],r[4],r[5]),e.transform(1,0,0,1,n.offsetX||0,n.offsetY||0);var a=n.gradientTransform||n.patternTransform;a&&e.transform(a[0],a[1],a[2],a[3],a[4],a[5]),e.fill(),e.restore()}i&&(e.save(),o&&e.transform(r[0],r[1],r[2],r[3],r[4],r[5]),i.render(e),e.restore())}},_renderBackground:function(e){this._renderBackgroundOrOverlay(e,"background")},_renderOverlay:function(e){this._renderBackgroundOrOverlay(e,"overlay")},getCenter:function(){return{top:this.height/2,left:this.width/2}},centerObjectH:function(e){return this._centerObject(e,new r.Point(this.getCenter().left,e.getCenterPoint().y))},centerObjectV:function(e){return this._centerObject(e,new r.Point(e.getCenterPoint().x,this.getCenter().top))},centerObject:function(e){var t=this.getCenter();return this._centerObject(e,new r.Point(t.left,t.top))},viewportCenterObject:function(e){var t=this.getVpCenter();return this._centerObject(e,t)},viewportCenterObjectH:function(e){var t=this.getVpCenter();return this._centerObject(e,new r.Point(t.x,e.getCenterPoint().y)),this},viewportCenterObjectV:function(e){var t=this.getVpCenter();return this._centerObject(e,new r.Point(e.getCenterPoint().x,t.y))},getVpCenter:function(){var e=this.getCenter(),t=a(this.viewportTransform);return o({x:e.left,y:e.top},t)},_centerObject:function(e,t){return e.setPositionByOrigin(t,"center","center"),e.setCoords(),this.renderOnAddRemove&&this.requestRenderAll(),this},toDatalessJSON:function(e){return this.toDatalessObject(e)},toObject:function(e){return this._toObjectMethod("toObject",e)},toDatalessObject:function(e){return this._toObjectMethod("toDatalessObject",e)},_toObjectMethod:function(t,n){var i=this.clipPath,o={version:r.version,objects:this._toObjects(t,n)};return i&&(o.clipPath=this._toObject(this.clipPath,t,n)),e(o,this.__serializeBgOverlay(t,n)),r.util.populateWithProperties(this,o,n),o},_toObjects:function(e,t){return this._objects.filter((function(e){return!e.excludeFromExport})).map((function(n){return this._toObject(n,e,t)}),this)},_toObject:function(e,t,n){var i;this.includeDefaultValues||(i=e.includeDefaultValues,e.includeDefaultValues=!1);var r=e[t](n);return this.includeDefaultValues||(e.includeDefaultValues=i),r},__serializeBgOverlay:function(e,t){var n={},i=this.backgroundImage,r=this.overlayImage;return this.backgroundColor&&(n.background=this.backgroundColor.toObject?this.backgroundColor.toObject(t):this.backgroundColor),this.overlayColor&&(n.overlay=this.overlayColor.toObject?this.overlayColor.toObject(t):this.overlayColor),i&&!i.excludeFromExport&&(n.backgroundImage=this._toObject(i,e,t)),r&&!r.excludeFromExport&&(n.overlayImage=this._toObject(r,e,t)),n},svgViewportTransformation:!0,toSVG:function(e,t){e||(e={}),e.reviver=t;var n=[];return this._setSVGPreamble(n,e),this._setSVGHeader(n,e),this.clipPath&&n.push('<g clip-path="url(#'+this.clipPath.clipPathId+')" >\n'),this._setSVGBgOverlayColor(n,"background"),this._setSVGBgOverlayImage(n,"backgroundImage",t),this._setSVGObjects(n,t),this.clipPath&&n.push("</g>\n"),this._setSVGBgOverlayColor(n,"overlay"),this._setSVGBgOverlayImage(n,"overlayImage",t),n.push("</svg>"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('<?xml version="1.0" encoding="',t.encoding||"UTF-8",'" standalone="no" ?>\n','<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" ','"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')},_setSVGHeader:function(e,t){var n,o=t.width||this.width,a=t.height||this.height,s='viewBox="0 0 '+this.width+" "+this.height+'" ',u=r.Object.NUM_FRACTION_DIGITS;t.viewBox?s='viewBox="'+t.viewBox.x+" "+t.viewBox.y+" "+t.viewBox.width+" "+t.viewBox.height+'" ':this.svgViewportTransformation&&(n=this.viewportTransform,s='viewBox="'+i(-n[4]/n[0],u)+" "+i(-n[5]/n[3],u)+" "+i(this.width/n[0],u)+" "+i(this.height/n[3],u)+'" '),e.push("<svg ",'xmlns="http://www.w3.org/2000/svg" ','xmlns:xlink="http://www.w3.org/1999/xlink" ','version="1.1" ','width="',o,'" ','height="',a,'" ',s,'xml:space="preserve">\n',"<desc>Created with Fabric.js ",r.version,"</desc>\n","<defs>\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(t),"</defs>\n")},createSVGClipPathMarkup:function(e){var t=this.clipPath;return t?(t.clipPathId="CLIPPATH_"+r.Object.__uid++,'<clipPath id="'+t.clipPathId+'" >\n'+this.clipPath.toClipPathSVG(e.reviver)+"</clipPath>\n"):""},createSVGRefElementsMarkup:function(){var e=this;return["background","overlay"].map((function(t){var n=e[t+"Color"];if(n&&n.toLive){var i=e[t+"Vpt"],o=e.viewportTransform,a={width:e.width/(i?o[0]:1),height:e.height/(i?o[3]:1)};return n.toSVG(a,{additionalTransform:i?r.util.matrixToSVG(o):""})}})).join("")},createSVGFontFacesMarkup:function(){var e,t,n,i,o,a,s,u,l="",c={},d=r.fontPaths,h=[];for(this._objects.forEach((function e(t){h.push(t),t._objects&&t._objects.forEach(e)})),s=0,u=h.length;s<u;s++)if(t=(e=h[s]).fontFamily,-1!==e.type.indexOf("text")&&!c[t]&&d[t]&&(c[t]=!0,e.styles))for(o in n=e.styles)for(a in i=n[o])!c[t=i[a].fontFamily]&&d[t]&&(c[t]=!0);for(var f in c)l+=["\t\t@font-face {\n","\t\t\tfont-family: '",f,"';\n","\t\t\tsrc: url('",d[f],"');\n","\t\t}\n"].join("");return l&&(l=['\t<style type="text/css">',"<![CDATA[\n",l,"]]>","</style>\n"].join("")),l},_setSVGObjects:function(e,t){var n,i,r,o=this._objects;for(i=0,r=o.length;i<r;i++)(n=o[i]).excludeFromExport||this._setSVGObject(e,n,t)},_setSVGObject:function(e,t,n){e.push(t.toSVG(n))},_setSVGBgOverlayImage:function(e,t,n){this[t]&&!this[t].excludeFromExport&&this[t].toSVG&&e.push(this[t].toSVG(n))},_setSVGBgOverlayColor:function(e,t){var n=this[t+"Color"],i=this.viewportTransform,o=this.width,a=this.height;if(n)if(n.toLive){var s=n.repeat,u=r.util.invertTransform(i),l=this[t+"Vpt"]?r.util.matrixToSVG(u):"";e.push('<rect transform="'+l+" translate(",o/2,",",a/2,')"',' x="',n.offsetX-o/2,'" y="',n.offsetY-a/2,'" ','width="',"repeat-y"===s||"no-repeat"===s?n.source.width:o,'" height="',"repeat-x"===s||"no-repeat"===s?n.source.height:a,'" fill="url(#SVGID_'+n.id+')"',"></rect>\n")}else e.push('<rect x="0" y="0" width="100%" height="100%" ','fill="',n,'"',"></rect>\n")},sendToBack:function(e){if(!e)return this;var t,i,r,o=this._activeObject;if(e===o&&"activeSelection"===e.type)for(t=(r=o._objects).length;t--;)i=r[t],n(this._objects,i),this._objects.unshift(i);else n(this._objects,e),this._objects.unshift(e);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(e){if(!e)return this;var t,i,r,o=this._activeObject;if(e===o&&"activeSelection"===e.type)for(r=o._objects,t=0;t<r.length;t++)i=r[t],n(this._objects,i),this._objects.push(i);else n(this._objects,e),this._objects.push(e);return this.renderOnAddRemove&&this.requestRenderAll(),this},sendBackwards:function(e,t){if(!e)return this;var i,r,o,a,s,u=this._activeObject,l=0;if(e===u&&"activeSelection"===e.type)for(s=u._objects,i=0;i<s.length;i++)r=s[i],(o=this._objects.indexOf(r))>0+l&&(a=o-1,n(this._objects,r),this._objects.splice(a,0,r)),l++;else 0!==(o=this._objects.indexOf(e))&&(a=this._findNewLowerIndex(e,o,t),n(this._objects,e),this._objects.splice(a,0,e));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(e,t,n){var i,r;if(n)for(i=t,r=t-1;r>=0;--r){if(e.intersectsWithObject(this._objects[r])||e.isContainedWithinObject(this._objects[r])||this._objects[r].isContainedWithinObject(e)){i=r;break}}else i=t-1;return i},bringForward:function(e,t){if(!e)return this;var i,r,o,a,s,u=this._activeObject,l=0;if(e===u&&"activeSelection"===e.type)for(i=(s=u._objects).length;i--;)r=s[i],(o=this._objects.indexOf(r))<this._objects.length-1-l&&(a=o+1,n(this._objects,r),this._objects.splice(a,0,r)),l++;else(o=this._objects.indexOf(e))!==this._objects.length-1&&(a=this._findNewUpperIndex(e,o,t),n(this._objects,e),this._objects.splice(a,0,e));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewUpperIndex:function(e,t,n){var i,r,o;if(n)for(i=t,r=t+1,o=this._objects.length;r<o;++r){if(e.intersectsWithObject(this._objects[r])||e.isContainedWithinObject(this._objects[r])||this._objects[r].isContainedWithinObject(e)){i=r;break}}else i=t+1;return i},moveTo:function(e,t){return n(this._objects,e),this._objects.splice(t,0,e),this.renderOnAddRemove&&this.requestRenderAll()},dispose:function(){return this.isRendering&&(r.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(e){e.dispose&&e.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,r.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},toString:function(){return"#<fabric.Canvas ("+this.complexity()+"): { objects: "+this._objects.length+" }>"}}),e(r.StaticCanvas.prototype,r.Observable),e(r.StaticCanvas.prototype,r.Collection),e(r.StaticCanvas.prototype,r.DataURLExporter),e(r.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=u();if(!t||!t.getContext)return null;var n=t.getContext("2d");return n&&"setLineDash"===e?"undefined"!==typeof n.setLineDash:null}}),r.StaticCanvas.prototype.toJSON=r.StaticCanvas.prototype.toObject,r.isLikelyNode&&(r.StaticCanvas.prototype.createPNGStream=function(){var e=s(this.lowerCanvasEl);return e&&e.createPNGStream()},r.StaticCanvas.prototype.createJPEGStream=function(e){var t=s(this.lowerCanvasEl);return t&&t.createJPEGStream(e)})}}(),r.BaseBrush=r.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.miterLimit=this.strokeMiterLimit,e.lineJoin=this.strokeLineJoin,r.StaticCanvas.supports("setLineDash")&&e.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(e){var t=this.canvas.viewportTransform;e.save(),e.transform(t[0],t[1],t[2],t[3],t[4],t[5])},_setShadow:function(){if(this.shadow){var e=this.canvas,t=this.shadow,n=e.contextTop,i=e.getZoom();e&&e._isRetinaScaling()&&(i*=r.devicePixelRatio),n.shadowColor=t.color,n.shadowBlur=t.blur*i,n.shadowOffsetX=t.offsetX*i,n.shadowOffsetY=t.offsetY*i}},needsFullRender:function(){return new r.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),r.PencilBrush=r.util.createClass(r.BaseBrush,{decimate:.4,initialize:function(e){this.canvas=e,this._points=[]},_drawSegment:function(e,t,n){var i=t.midPointFrom(n);return e.quadraticCurveTo(t.x,t.y,i.x,i.y),i},onMouseDown:function(e,t){this.canvas._isMainEvent(t.e)&&(this._prepareForDrawing(e),this._captureDrawingPath(e),this._render())},onMouseMove:function(e,t){if(this.canvas._isMainEvent(t.e)&&this._captureDrawingPath(e)&&this._points.length>1)if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var n=this._points,i=n.length,r=this.canvas.contextTop;this._saveAndTransform(r),this.oldEnd&&(r.beginPath(),r.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(r,n[i-2],n[i-1],!0),r.stroke(),r.restore()}},onMouseUp:function(e){return!this.canvas._isMainEvent(e.e)||(this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(e){var t=new r.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){return!(this._points.length>1&&e.eq(this._points[this._points.length-1]))&&(this._points.push(e),!0)},_reset:function(){this._points=[],this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new r.Point(e.x,e.y);return this._addPoint(t)},_render:function(){var e,t,n=this.canvas.contextTop,i=this._points[0],o=this._points[1];if(this._saveAndTransform(n),n.beginPath(),2===this._points.length&&i.x===o.x&&i.y===o.y){var a=this.width/1e3;i=new r.Point(i.x,i.y),o=new r.Point(o.x,o.y),i.x-=a,o.x+=a}for(n.moveTo(i.x,i.y),e=1,t=this._points.length;e<t;e++)this._drawSegment(n,i,o),i=this._points[e],o=this._points[e+1];n.lineTo(i.x,i.y),n.stroke(),n.restore()},convertPointsToSVGPath:function(e){var t,n=[],i=this.width/1e3,o=new r.Point(e[0].x,e[0].y),a=new r.Point(e[1].x,e[1].y),s=e.length,u=1,l=0,c=s>2;for(c&&(u=e[2].x<a.x?-1:e[2].x===a.x?0:1,l=e[2].y<a.y?-1:e[2].y===a.y?0:1),n.push("M ",o.x-u*i," ",o.y-l*i," "),t=1;t<s;t++){if(!o.eq(a)){var d=o.midPointFrom(a);n.push("Q ",o.x," ",o.y," ",d.x," ",d.y," ")}o=e[t],t+1<e.length&&(a=e[t+1])}return c&&(u=o.x>e[t-2].x?1:o.x===e[t-2].x?0:-1,l=o.y>e[t-2].y?1:o.y===e[t-2].y?0:-1),n.push("L ",o.x+u*i," ",o.y+l*i),n},createPath:function(e){var t=new r.Path(e,{fill:null,stroke:this.color,strokeWidth:this.width,strokeLineCap:this.strokeLineCap,strokeMiterLimit:this.strokeMiterLimit,strokeLineJoin:this.strokeLineJoin,strokeDashArray:this.strokeDashArray});return this.shadow&&(this.shadow.affectStroke=!0,t.shadow=new r.Shadow(this.shadow)),t},decimatePoints:function(e,t){if(e.length<=2)return e;var n,i=this.canvas.getZoom(),o=Math.pow(t/i,2),a=e.length-1,s=e[0],u=[s];for(n=1;n<a;n++)Math.pow(s.x-e[n].x,2)+Math.pow(s.y-e[n].y,2)>=o&&(s=e[n],u.push(s));return 1===u.length&&u.push(new r.Point(u[0].x,u[0].y)),u},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var e=this.convertPointsToSVGPath(this._points).join("");if("M 0 0 Q 0 0 0 0 L 0 0"!==e){var t=this.createPath(e);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:t}),this.canvas.add(t),this.canvas.requestRenderAll(),t.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:t})}else this.canvas.requestRenderAll()}}),r.CircleBrush=r.util.createClass(r.BaseBrush,{width:10,initialize:function(e){this.canvas=e,this.points=[]},drawDot:function(e){var t=this.addPoint(e),n=this.canvas.contextTop;this._saveAndTransform(n),this.dot(n,t),n.restore()},dot:function(e,t){e.fillStyle=t.fill,e.beginPath(),e.arc(t.x,t.y,t.radius,0,2*Math.PI,!1),e.closePath(),e.fill()},onMouseDown:function(e){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(e)},_render:function(){var e,t,n=this.canvas.contextTop,i=this.points;for(this._saveAndTransform(n),e=0,t=i.length;e<t;e++)this.dot(n,i[e]);n.restore()},onMouseMove:function(e){this.needsFullRender()?(this.canvas.clearContext(this.canvas.contextTop),this.addPoint(e),this._render()):this.drawDot(e)},onMouseUp:function(){var e,t,n=this.canvas.renderOnAddRemove;this.canvas.renderOnAddRemove=!1;var i=[];for(e=0,t=this.points.length;e<t;e++){var o=this.points[e],a=new r.Circle({radius:o.radius,left:o.x,top:o.y,originX:"center",originY:"center",fill:o.fill});this.shadow&&(a.shadow=new r.Shadow(this.shadow)),i.push(a)}var s=new r.Group(i);s.canvas=this.canvas,this.canvas.fire("before:path:created",{path:s}),this.canvas.add(s),this.canvas.fire("path:created",{path:s}),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderOnAddRemove=n,this.canvas.requestRenderAll()},addPoint:function(e){var t=new r.Point(e.x,e.y),n=r.util.getRandomInt(Math.max(0,this.width-20),this.width+20)/2,i=new r.Color(this.color).setAlpha(r.util.getRandomInt(0,100)/100).toRgba();return t.radius=n,t.fill=i,this.points.push(t),t}}),r.SprayBrush=r.util.createClass(r.BaseBrush,{width:10,density:20,dotWidth:1,dotWidthVariance:1,randomOpacity:!1,optimizeOverlapping:!0,initialize:function(e){this.canvas=e,this.sprayChunks=[]},onMouseDown:function(e){this.sprayChunks.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.addSprayChunk(e),this.render(this.sprayChunkPoints)},onMouseMove:function(e){this.addSprayChunk(e),this.render(this.sprayChunkPoints)},onMouseUp:function(){var e=this.canvas.renderOnAddRemove;this.canvas.renderOnAddRemove=!1;for(var t=[],n=0,i=this.sprayChunks.length;n<i;n++)for(var o=this.sprayChunks[n],a=0,s=o.length;a<s;a++){var u=new r.Rect({width:o[a].width,height:o[a].width,left:o[a].x+1,top:o[a].y+1,originX:"center",originY:"center",fill:this.color});t.push(u)}this.optimizeOverlapping&&(t=this._getOptimizedRects(t));var l=new r.Group(t);this.shadow&&l.set("shadow",new r.Shadow(this.shadow)),this.canvas.fire("before:path:created",{path:l}),this.canvas.add(l),this.canvas.fire("path:created",{path:l}),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderOnAddRemove=e,this.canvas.requestRenderAll()},_getOptimizedRects:function(e){var t,n,i,r={};for(n=0,i=e.length;n<i;n++)r[t=e[n].left+""+e[n].top]||(r[t]=e[n]);var o=[];for(t in r)o.push(r[t]);return o},render:function(e){var t,n,i=this.canvas.contextTop;for(i.fillStyle=this.color,this._saveAndTransform(i),t=0,n=e.length;t<n;t++){var r=e[t];"undefined"!==typeof r.opacity&&(i.globalAlpha=r.opacity),i.fillRect(r.x,r.y,r.width,r.width)}i.restore()},_render:function(){var e,t,n=this.canvas.contextTop;for(n.fillStyle=this.color,this._saveAndTransform(n),e=0,t=this.sprayChunks.length;e<t;e++)this.render(this.sprayChunks[e]);n.restore()},addSprayChunk:function(e){this.sprayChunkPoints=[];var t,n,i,o,a=this.width/2;for(o=0;o<this.density;o++){t=r.util.getRandomInt(e.x-a,e.x+a),n=r.util.getRandomInt(e.y-a,e.y+a),i=this.dotWidthVariance?r.util.getRandomInt(Math.max(1,this.dotWidth-this.dotWidthVariance),this.dotWidth+this.dotWidthVariance):this.dotWidth;var s=new r.Point(t,n);s.width=i,this.randomOpacity&&(s.opacity=r.util.getRandomInt(0,100)/100),this.sprayChunkPoints.push(s)}this.sprayChunks.push(this.sprayChunkPoints)}}),r.PatternBrush=r.util.createClass(r.PencilBrush,{getPatternSrc:function(){var e=r.util.createCanvasElement(),t=e.getContext("2d");return e.width=e.height=25,t.fillStyle=this.color,t.beginPath(),t.arc(10,10,10,0,2*Math.PI,!1),t.closePath(),t.fill(),e},getPatternSrcFunction:function(){return String(this.getPatternSrc).replace("this.color",'"'+this.color+'"')},getPattern:function(){return this.canvas.contextTop.createPattern(this.source||this.getPatternSrc(),"repeat")},_setBrushStyles:function(){this.callSuper("_setBrushStyles"),this.canvas.contextTop.strokeStyle=this.getPattern()},createPath:function(e){var t=this.callSuper("createPath",e),n=t._getLeftTopCoords().scalarAdd(t.strokeWidth/2);return t.stroke=new r.Pattern({source:this.source||this.getPatternSrcFunction(),offsetX:-n.x,offsetY:-n.y}),t}}),function(){var e=r.util.getPointer,t=r.util.degreesToRadians,n=Math.abs,i=r.StaticCanvas.supports("setLineDash"),o=r.util.isTouchEvent,a=.5;for(var s in r.Canvas=r.util.createClass(r.StaticCanvas,{initialize:function(e,t){t||(t={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(e,t),this._initInteractive(),this._createCacheCanvas()},uniformScaling:!0,uniScaleKey:"shiftKey",centeredScaling:!1,centeredRotation:!1,centeredKey:"altKey",altActionKey:"shiftKey",interactive:!0,selection:!0,selectionKey:"shiftKey",altSelectionKey:null,selectionColor:"rgba(100, 100, 255, 0.3)",selectionDashArray:[],selectionBorderColor:"rgba(255, 255, 255, 0.3)",selectionLineWidth:1,selectionFullyContained:!1,hoverCursor:"move",moveCursor:"move",defaultCursor:"default",freeDrawingCursor:"crosshair",rotationCursor:"crosshair",notAllowedCursor:"not-allowed",containerClass:"canvas-container",perPixelTargetFind:!1,targetFindTolerance:0,skipTargetFind:!1,isDrawingMode:!1,preserveObjectStacking:!1,snapAngle:0,snapThreshold:null,stopContextMenu:!1,fireRightClick:!1,fireMiddleClick:!1,targets:[],_hoveredTarget:null,_hoveredTargets:[],_initInteractive:function(){this._currentTransform=null,this._groupSelector=null,this._initWrapperElement(),this._createUpperCanvas(),this._initEventListeners(),this._initRetinaScaling(),this.freeDrawingBrush=r.PencilBrush&&new r.PencilBrush(this),this.calcOffset()},_chooseObjectsToRender:function(){var e,t,n,i=this.getActiveObjects();if(i.length>0&&!this.preserveObjectStacking){t=[],n=[];for(var r=0,o=this._objects.length;r<o;r++)e=this._objects[r],-1===i.indexOf(e)?t.push(e):n.push(e);i.length>1&&(this._activeObject._objects=n),t.push.apply(t,n)}else t=this._objects;return t},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&this.renderTopLayer(this.contextTop);var e=this.contextContainer;return this.renderCanvas(e,this._chooseObjectsToRender()),this},renderTopLayer:function(e){e.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(e),this.contextTopDirty=!0),e.restore()},renderTop:function(){var e=this.contextTop;return this.clearContext(e),this.renderTopLayer(e),this.fire("after:render"),this},_normalizePointer:function(e,t){var n=e.calcTransformMatrix(),i=r.util.invertTransform(n),o=this.restorePointerVpt(t);return r.util.transformPoint(o,i)},isTargetTransparent:function(e,t,n){if(e.shouldCache()&&e._cacheCanvas&&e!==this._activeObject){var i=this._normalizePointer(e,{x:t,y:n}),o=Math.max(e.cacheTranslationX+i.x*e.zoomX,0),a=Math.max(e.cacheTranslationY+i.y*e.zoomY,0);return r.util.isTransparent(e._cacheContext,Math.round(o),Math.round(a),this.targetFindTolerance)}var s=this.contextCache,u=e.selectionBackgroundColor,l=this.viewportTransform;return e.selectionBackgroundColor="",this.clearContext(s),s.save(),s.transform(l[0],l[1],l[2],l[3],l[4],l[5]),e.render(s),s.restore(),e===this._activeObject&&e._renderControls(s,{hasBorders:!1,transparentCorners:!1},{hasBorders:!1}),e.selectionBackgroundColor=u,r.util.isTransparent(s,t,n,this.targetFindTolerance)},_isSelectionKeyPressed:function(e){return"[object Array]"===Object.prototype.toString.call(this.selectionKey)?!!this.selectionKey.find((function(t){return!0===e[t]})):e[this.selectionKey]},_shouldClearSelection:function(e,t){var n=this.getActiveObjects(),i=this._activeObject;return!t||t&&i&&n.length>1&&-1===n.indexOf(t)&&i!==t&&!this._isSelectionKeyPressed(e)||t&&!t.evented||t&&!t.selectable&&i&&i!==t},_shouldCenterTransform:function(e,t,n){var i;if(e)return"scale"===t||"scaleX"===t||"scaleY"===t||"resizing"===t?i=this.centeredScaling||e.centeredScaling:"rotate"===t&&(i=this.centeredRotation||e.centeredRotation),i?!n:n},_getOriginFromCorner:function(e,t){var n={x:e.originX,y:e.originY};return"ml"===t||"tl"===t||"bl"===t?n.x="right":"mr"!==t&&"tr"!==t&&"br"!==t||(n.x="left"),"tl"===t||"mt"===t||"tr"===t?n.y="bottom":"bl"===t||"mb"===t||"br"===t?n.y="top":"mtr"===t&&(n.x="center",n.y="center"),n},_getActionFromCorner:function(e,t,n,i){if(!t||!e)return"drag";var r=i.controls[t];return r.getActionName(n,r,i)},_setupCurrentTransform:function(e,n,i){if(n){var o=this.getPointer(e),a=n.__corner,s=i&&a?n.controls[a].getActionHandler():r.controlsUtils.dragHandler,u=this._getActionFromCorner(i,a,e,n),l=this._getOriginFromCorner(n,a),c=e[this.centeredKey],d={target:n,action:u,actionHandler:s,corner:a,scaleX:n.scaleX,scaleY:n.scaleY,skewX:n.skewX,skewY:n.skewY,offsetX:o.x-n.left,offsetY:o.y-n.top,originX:l.x,originY:l.y,ex:o.x,ey:o.y,lastX:o.x,lastY:o.y,theta:t(n.angle),width:n.width*n.scaleX,shiftKey:e.shiftKey,altKey:c,original:r.util.saveObjectTransform(n)};this._shouldCenterTransform(n,u,c)&&(d.originX="center",d.originY="center"),d.original.originX=l.x,d.original.originY=l.y,this._currentTransform=d,this._beforeTransform(e)}},setCursor:function(e){this.upperCanvasEl.style.cursor=e},_drawSelection:function(e){var t=this._groupSelector,o=t.left,s=t.top,u=n(o),l=n(s);if(this.selectionColor&&(e.fillStyle=this.selectionColor,e.fillRect(t.ex-(o>0?0:-o),t.ey-(s>0?0:-s),u,l)),this.selectionLineWidth&&this.selectionBorderColor)if(e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor,this.selectionDashArray.length>1&&!i){var c=t.ex+a-(o>0?0:u),d=t.ey+a-(s>0?0:l);e.beginPath(),r.util.drawDashedLine(e,c,d,c+u,d,this.selectionDashArray),r.util.drawDashedLine(e,c,d+l-1,c+u,d+l-1,this.selectionDashArray),r.util.drawDashedLine(e,c,d,c,d+l,this.selectionDashArray),r.util.drawDashedLine(e,c+u-1,d,c+u-1,d+l,this.selectionDashArray),e.closePath(),e.stroke()}else r.Object.prototype._setLineDash.call(this,e,this.selectionDashArray),e.strokeRect(t.ex+a-(o>0?0:u),t.ey+a-(s>0?0:l),u,l)},findTarget:function(e,t){if(!this.skipTargetFind){var n,i,r=this.getPointer(e,!0),a=this._activeObject,s=this.getActiveObjects(),u=o(e);if(this.targets=[],s.length>1&&!t&&a===this._searchPossibleTargets([a],r))return a;if(1===s.length&&a._findTargetCorner(r,u))return a;if(1===s.length&&a===this._searchPossibleTargets([a],r)){if(!this.preserveObjectStacking)return a;n=a,i=this.targets,this.targets=[]}var l=this._searchPossibleTargets(this._objects,r);return e[this.altSelectionKey]&&l&&n&&l!==n&&(l=n,this.targets=i),l}},_checkTarget:function(e,t,n){if(t&&t.visible&&t.evented&&(t.containsPoint(e)||t._findTargetCorner(e))){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||t.isEditing)return!0;if(!this.isTargetTransparent(t,n.x,n.y))return!0}},_searchPossibleTargets:function(e,t){for(var n,i,o=e.length;o--;){var a=e[o],s=a.group?this._normalizePointer(a.group,t):t;if(this._checkTarget(s,a,t)){(n=e[o]).subTargetCheck&&n instanceof r.Group&&(i=this._searchPossibleTargets(n._objects,t))&&this.targets.push(i);break}}return n},restorePointerVpt:function(e){return r.util.transformPoint(e,r.util.invertTransform(this.viewportTransform))},getPointer:function(t,n){if(this._absolutePointer&&!n)return this._absolutePointer;if(this._pointer&&n)return this._pointer;var i,r=e(t),o=this.upperCanvasEl,a=o.getBoundingClientRect(),s=a.width||0,u=a.height||0;s&&u||("top"in a&&"bottom"in a&&(u=Math.abs(a.top-a.bottom)),"right"in a&&"left"in a&&(s=Math.abs(a.right-a.left))),this.calcOffset(),r.x=r.x-this._offset.left,r.y=r.y-this._offset.top,n||(r=this.restorePointerVpt(r));var l=this.getRetinaScaling();return 1!==l&&(r.x/=l,r.y/=l),i=0===s||0===u?{width:1,height:1}:{width:o.width/s,height:o.height/u},{x:r.x*i.width,y:r.y*i.height}},_createUpperCanvas:function(){var e=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),t=this.lowerCanvasEl,n=this.upperCanvasEl;n?n.className="":(n=this._createCanvasElement(),this.upperCanvasEl=n),r.util.addClass(n,"upper-canvas "+e),this.wrapperEl.appendChild(n),this._copyCanvasStyle(t,n),this._applyCanvasStyle(n),this.contextTop=n.getContext("2d")},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=r.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),r.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),r.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(e){var t=this.width||e.width,n=this.height||e.height;r.util.setStyle(e,{position:"absolute",width:t+"px",height:n+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),e.width=t,e.height=n,r.util.makeElementUnselectable(e)},_copyCanvasStyle:function(e,t){t.style.cssText=e.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var e=this._activeObject;return e?"activeSelection"===e.type&&e._objects?e._objects.slice(0):[e]:[]},_onObjectRemoved:function(e){e===this._activeObject&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared",{target:e}),e.fire("deselected")),e===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",e)},_fireSelectionEvents:function(e,t){var n=!1,i=this.getActiveObjects(),r=[],o=[],a={e:t};e.forEach((function(e){-1===i.indexOf(e)&&(n=!0,e.fire("deselected",a),o.push(e))})),i.forEach((function(t){-1===e.indexOf(t)&&(n=!0,t.fire("selected",a),r.push(t))})),e.length>0&&i.length>0?(a.selected=r,a.deselected=o,a.updated=r[0]||o[0],a.target=this._activeObject,n&&this.fire("selection:updated",a)):i.length>0?(a.selected=r,a.target=this._activeObject,this.fire("selection:created",a)):e.length>0&&(a.deselected=o,this.fire("selection:cleared",a))},setActiveObject:function(e,t){var n=this.getActiveObjects();return this._setActiveObject(e,t),this._fireSelectionEvents(n,t),this},_setActiveObject:function(e,t){return this._activeObject!==e&&(!!this._discardActiveObject(t,e)&&(!e.onSelect({e:t})&&(this._activeObject=e,!0)))},_discardActiveObject:function(e,t){var n=this._activeObject;if(n){if(n.onDeselect({e:e,object:t}))return!1;this._activeObject=null}return!0},discardActiveObject:function(e){var t=this.getActiveObjects(),n=this.getActiveObject();return t.length&&this.fire("before:selection:cleared",{target:n,e:e}),this._discardActiveObject(e),this._fireSelectionEvents(t,e),this},dispose:function(){var e=this.wrapperEl;return this.removeListeners(),e.removeChild(this.upperCanvasEl),e.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(e){r.util.cleanUpJsdomNode(this[e]),this[e]=void 0}.bind(this)),e.parentNode&&e.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,r.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(e){var t=this._activeObject;t&&t._renderControls(e)},_toObject:function(e,t,n){var i=this._realizeGroupTransformOnObject(e),r=this.callSuper("_toObject",e,t,n);return this._unwindGroupTransformOnObject(e,i),r},_realizeGroupTransformOnObject:function(e){if(e.group&&"activeSelection"===e.group.type&&this._activeObject===e.group){var t={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(n){t[n]=e[n]})),this._activeObject.realizeTransform(e),t}return null},_unwindGroupTransformOnObject:function(e,t){t&&e.set(t)},_setSVGObject:function(e,t,n){var i=this._realizeGroupTransformOnObject(t);this.callSuper("_setSVGObject",e,t,n),this._unwindGroupTransformOnObject(t,i)},setViewportTransform:function(e){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),r.StaticCanvas.prototype.setViewportTransform.call(this,e)}}),r.StaticCanvas)"prototype"!==s&&(r.Canvas[s]=r.StaticCanvas[s])}(),function(){var e=r.util.addListener,t=r.util.removeListener,n={passive:!1};function i(e,t){return e.button&&e.button===t-1}r.util.object.extend(r.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(e,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(e,t){var i=this.upperCanvasEl,o=this._getEventPrefix();e(r.window,"resize",this._onResize),e(i,o+"down",this._onMouseDown),e(i,o+"move",this._onMouseMove,n),e(i,o+"out",this._onMouseOut),e(i,o+"enter",this._onMouseEnter),e(i,"wheel",this._onMouseWheel),e(i,"contextmenu",this._onContextMenu),e(i,"dblclick",this._onDoubleClick),e(i,"dragover",this._onDragOver),e(i,"dragenter",this._onDragEnter),e(i,"dragleave",this._onDragLeave),e(i,"drop",this._onDrop),this.enablePointerEvents||e(i,"touchstart",this._onTouchStart,n),"undefined"!==typeof eventjs&&t in eventjs&&(eventjs[t](i,"gesture",this._onGesture),eventjs[t](i,"drag",this._onDrag),eventjs[t](i,"orientation",this._onOrientationChange),eventjs[t](i,"shake",this._onShake),eventjs[t](i,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(t,"remove");var e=this._getEventPrefix();t(r.document,e+"up",this._onMouseUp),t(r.document,"touchend",this._onTouchEnd,n),t(r.document,e+"move",this._onMouseMove,n),t(r.document,"touchmove",this._onMouseMove,n)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._simpleEventHandler.bind(this,"drop"),this.eventsBound=!0)},_onGesture:function(e,t){this.__onTransformGesture&&this.__onTransformGesture(e,t)},_onDrag:function(e,t){this.__onDrag&&this.__onDrag(e,t)},_onMouseWheel:function(e){this.__onMouseWheel(e)},_onMouseOut:function(e){var t=this._hoveredTarget;this.fire("mouse:out",{target:t,e:e}),this._hoveredTarget=null,t&&t.fire("mouseout",{e:e});var n=this;this._hoveredTargets.forEach((function(i){n.fire("mouse:out",{target:t,e:e}),i&&t.fire("mouseout",{e:e})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(e){e.isEditing&&e.hiddenTextarea.focus()}))},_onMouseEnter:function(e){this._currentTransform||this.findTarget(e)||(this.fire("mouse:over",{target:null,e:e}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(e,t){this.__onOrientationChange&&this.__onOrientationChange(e,t)},_onShake:function(e,t){this.__onShake&&this.__onShake(e,t)},_onLongPress:function(e,t){this.__onLongPress&&this.__onLongPress(e,t)},_onDragOver:function(e){e.preventDefault();var t=this._simpleEventHandler("dragover",e);this._fireEnterLeaveEvents(t,e)},_onContextMenu:function(e){return this.stopContextMenu&&(e.stopPropagation(),e.preventDefault()),!1},_onDoubleClick:function(e){this._cacheTransformEventData(e),this._handleEvent(e,"dblclick"),this._resetTransformEventData(e)},getPointerId:function(e){var t=e.changedTouches;return t?t[0]&&t[0].identifier:this.enablePointerEvents?e.pointerId:-1},_isMainEvent:function(e){return!0===e.isPrimary||!1!==e.isPrimary&&("touchend"===e.type&&0===e.touches.length||(!e.changedTouches||e.changedTouches[0].identifier===this.mainTouchId))},_onTouchStart:function(i){i.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(i)),this.__onMouseDown(i),this._resetTransformEventData();var o=this.upperCanvasEl,a=this._getEventPrefix();e(r.document,"touchend",this._onTouchEnd,n),e(r.document,"touchmove",this._onMouseMove,n),t(o,a+"down",this._onMouseDown)},_onMouseDown:function(i){this.__onMouseDown(i),this._resetTransformEventData();var o=this.upperCanvasEl,a=this._getEventPrefix();t(o,a+"move",this._onMouseMove,n),e(r.document,a+"up",this._onMouseUp),e(r.document,a+"move",this._onMouseMove,n)},_onTouchEnd:function(i){if(!(i.touches.length>0)){this.__onMouseUp(i),this._resetTransformEventData(),this.mainTouchId=null;var o=this._getEventPrefix();t(r.document,"touchend",this._onTouchEnd,n),t(r.document,"touchmove",this._onMouseMove,n);var a=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){e(a.upperCanvasEl,o+"down",a._onMouseDown),a._willAddMouseDown=0}),400)}},_onMouseUp:function(i){this.__onMouseUp(i),this._resetTransformEventData();var o=this.upperCanvasEl,a=this._getEventPrefix();this._isMainEvent(i)&&(t(r.document,a+"up",this._onMouseUp),t(r.document,a+"move",this._onMouseMove,n),e(o,a+"move",this._onMouseMove,n))},_onMouseMove:function(e){!this.allowTouchScrolling&&e.preventDefault&&e.preventDefault(),this.__onMouseMove(e)},_onResize:function(){this.calcOffset()},_shouldRender:function(e){var t=this._activeObject;return!!(!!t!==!!e||t&&e&&t!==e)||(t&&t.isEditing,!1)},__onMouseUp:function(e){var t,n=this._currentTransform,o=this._groupSelector,a=!1,s=!o||0===o.left&&0===o.top;if(this._cacheTransformEventData(e),t=this._target,this._handleEvent(e,"up:before"),i(e,3))this.fireRightClick&&this._handleEvent(e,"up",3,s);else{if(i(e,2))return this.fireMiddleClick&&this._handleEvent(e,"up",2,s),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(e);else if(this._isMainEvent(e)){if(n&&(this._finalizeCurrentTransform(e),a=n.actionPerformed),!s){var u=t===this._activeObject;this._maybeGroupObjects(e),a||(a=this._shouldRender(t)||!u&&t===this._activeObject)}if(t){var l=t._findTargetCorner(this.getPointer(e,!0),r.util.isTouchEvent(e)),c=t.controls[l],d=c&&c.getMouseUpHandler(e,t,c);d&&d(e,t,c),t.isMoving=!1}this._setCursorFromEvent(e,t),this._handleEvent(e,"up",1,s),this._groupSelector=null,this._currentTransform=null,t&&(t.__corner=0),a?this.requestRenderAll():s||this.renderTop()}}},_simpleEventHandler:function(e,t){var n=this.findTarget(t),i=this.targets,r={e:t,target:n,subTargets:i};if(this.fire(e,r),n&&n.fire(e,r),!i)return n;for(var o=0;o<i.length;o++)i[o].fire(e,r);return n},_handleEvent:function(e,t,n,i){var r=this._target,o=this.targets||[],a={e:e,target:r,subTargets:o,button:n||1,isClick:i||!1,pointer:this._pointer,absolutePointer:this._absolutePointer,transform:this._currentTransform};"up"===t&&(a.currentTarget=this.findTarget(e),a.currentSubTargets=this.targets),this.fire("mouse:"+t,a),r&&r.fire("mouse"+t,a);for(var s=0;s<o.length;s++)o[s].fire("mouse"+t,a)},_finalizeCurrentTransform:function(e){var t,n=this._currentTransform,i=n.target,r={e:e,target:i,transform:n,action:n.action};i._scaling&&(i._scaling=!1),i.setCoords(),(n.actionPerformed||this.stateful&&i.hasStateChanged())&&(n.actionPerformed&&(t=this._addEventOptions(r,n),this._fire(t,r)),this._fire("modified",r))},_addEventOptions:function(e,t){var n,i;switch(t.action){case"scaleX":n="scaled",i="x";break;case"scaleY":n="scaled",i="y";break;case"skewX":n="skewed",i="x";break;case"skewY":n="skewed",i="y";break;case"scale":n="scaled",i="equally";break;case"rotate":n="rotated";break;case"drag":n="moved"}return e.by=i,n},_onMouseDownInDrawingMode:function(e){this._isCurrentlyDrawing=!0,this.getActiveObject()&&this.discardActiveObject(e).requestRenderAll();var t=this.getPointer(e);this.freeDrawingBrush.onMouseDown(t,{e:e,pointer:t}),this._handleEvent(e,"down")},_onMouseMoveInDrawingMode:function(e){if(this._isCurrentlyDrawing){var t=this.getPointer(e);this.freeDrawingBrush.onMouseMove(t,{e:e,pointer:t})}this.setCursor(this.freeDrawingCursor),this._handleEvent(e,"move")},_onMouseUpInDrawingMode:function(e){var t=this.getPointer(e);this._isCurrentlyDrawing=this.freeDrawingBrush.onMouseUp({e:e,pointer:t}),this._handleEvent(e,"up")},__onMouseDown:function(e){this._cacheTransformEventData(e),this._handleEvent(e,"down:before");var t=this._target;if(i(e,3))this.fireRightClick&&this._handleEvent(e,"down",3);else if(i(e,2))this.fireMiddleClick&&this._handleEvent(e,"down",2);else if(this.isDrawingMode)this._onMouseDownInDrawingMode(e);else if(this._isMainEvent(e)&&!this._currentTransform){var n=this._pointer;this._previousPointer=n;var o=this._shouldRender(t),a=this._shouldGroup(e,t);if(this._shouldClearSelection(e,t)?this.discardActiveObject(e):a&&(this._handleGrouping(e,t),t=this._activeObject),!this.selection||t&&(t.selectable||t.isEditing||t===this._activeObject)||(this._groupSelector={ex:n.x,ey:n.y,top:0,left:0}),t){var s=t===this._activeObject;t.selectable&&this.setActiveObject(t,e);var u=t._findTargetCorner(this.getPointer(e,!0),r.util.isTouchEvent(e));if(t.__corner=u,t===this._activeObject&&(u||!a)){var l=t.controls[u],c=l&&l.getMouseDownHandler(e,t,l);c&&c(e,t,l),this._setupCurrentTransform(e,t,s)}}this._handleEvent(e,"down"),(o||a)&&this.requestRenderAll()}},_resetTransformEventData:function(){this._target=null,this._pointer=null,this._absolutePointer=null},_cacheTransformEventData:function(e){this._resetTransformEventData(),this._pointer=this.getPointer(e,!0),this._absolutePointer=this.restorePointerVpt(this._pointer),this._target=this._currentTransform?this._currentTransform.target:this.findTarget(e)||null},_beforeTransform:function(e){var t=this._currentTransform;this.stateful&&t.target.saveState(),this.fire("before:transform",{e:e,transform:t})},__onMouseMove:function(e){var t,n;if(this._handleEvent(e,"move:before"),this._cacheTransformEventData(e),this.isDrawingMode)this._onMouseMoveInDrawingMode(e);else if(this._isMainEvent(e)){var i=this._groupSelector;i?(n=this._pointer,i.left=n.x-i.ex,i.top=n.y-i.ey,this.renderTop()):this._currentTransform?this._transformObject(e):(t=this.findTarget(e)||null,this._setCursorFromEvent(e,t),this._fireOverOutEvents(t,e)),this._handleEvent(e,"move"),this._resetTransformEventData()}},_fireOverOutEvents:function(e,t){var n=this._hoveredTarget,i=this._hoveredTargets,r=this.targets,o=Math.max(i.length,r.length);this.fireSyntheticInOutEvents(e,t,{oldTarget:n,evtOut:"mouseout",canvasEvtOut:"mouse:out",evtIn:"mouseover",canvasEvtIn:"mouse:over"});for(var a=0;a<o;a++)this.fireSyntheticInOutEvents(r[a],t,{oldTarget:i[a],evtOut:"mouseout",evtIn:"mouseover"});this._hoveredTarget=e,this._hoveredTargets=this.targets.concat()},_fireEnterLeaveEvents:function(e,t){var n=this._draggedoverTarget,i=this._hoveredTargets,r=this.targets,o=Math.max(i.length,r.length);this.fireSyntheticInOutEvents(e,t,{oldTarget:n,evtOut:"dragleave",evtIn:"dragenter"});for(var a=0;a<o;a++)this.fireSyntheticInOutEvents(r[a],t,{oldTarget:i[a],evtOut:"dragleave",evtIn:"dragenter"});this._draggedoverTarget=e},fireSyntheticInOutEvents:function(e,t,n){var i,r,o,a=n.oldTarget,s=a!==e,u=n.canvasEvtIn,l=n.canvasEvtOut;s&&(i={e:t,target:e,previousTarget:a},r={e:t,target:a,nextTarget:e}),o=e&&s,a&&s&&(l&&this.fire(l,r),a.fire(n.evtOut,r)),o&&(u&&this.fire(u,i),e.fire(n.evtIn,i))},__onMouseWheel:function(e){this._cacheTransformEventData(e),this._handleEvent(e,"wheel"),this._resetTransformEventData()},_transformObject:function(e){var t=this.getPointer(e),n=this._currentTransform;n.reset=!1,n.target.isMoving=!0,n.shiftKey=e.shiftKey,n.altKey=e[this.centeredKey],this._performTransformAction(e,n,t),n.actionPerformed&&this.requestRenderAll()},_performTransformAction:function(e,t,n){var i=n.x,r=n.y,o=t.action,a=!1,s=t.actionHandler;s&&(a=s(e,t,i,r)),"drag"===o&&a&&this.setCursor(t.target.moveCursor||this.moveCursor),t.actionPerformed=t.actionPerformed||a},_fire:r.controlsUtils.fireEvent,_setCursorFromEvent:function(e,t){if(!t)return this.setCursor(this.defaultCursor),!1;var n=t.hoverCursor||this.hoverCursor,i=this._activeObject&&"activeSelection"===this._activeObject.type?this._activeObject:null,r=(!i||!i.contains(t))&&t._findTargetCorner(this.getPointer(e,!0));r?this.setCursor(this.getCornerCursor(r,t,e)):(t.subTargetCheck&&this.targets.concat().reverse().map((function(e){n=e.hoverCursor||n})),this.setCursor(n))},getCornerCursor:function(e,t,n){var i=t.controls[e];return i.cursorStyleHandler(n,i,t)}})}(),function(){var e=Math.min,t=Math.max;r.util.object.extend(r.Canvas.prototype,{_shouldGroup:function(e,t){var n=this._activeObject;return n&&this._isSelectionKeyPressed(e)&&t&&t.selectable&&this.selection&&(n!==t||"activeSelection"===n.type)&&!t.onSelect({e:e})},_handleGrouping:function(e,t){var n=this._activeObject;n.__corner||(t!==n||(t=this.findTarget(e,!0))&&t.selectable)&&(n&&"activeSelection"===n.type?this._updateActiveSelection(t,e):this._createActiveSelection(t,e))},_updateActiveSelection:function(e,t){var n=this._activeObject,i=n._objects.slice(0);n.contains(e)?(n.removeWithUpdate(e),this._hoveredTarget=e,this._hoveredTargets=this.targets.concat(),1===n.size()&&this._setActiveObject(n.item(0),t)):(n.addWithUpdate(e),this._hoveredTarget=n,this._hoveredTargets=this.targets.concat()),this._fireSelectionEvents(i,t)},_createActiveSelection:function(e,t){var n=this.getActiveObjects(),i=this._createGroup(e);this._hoveredTarget=i,this._setActiveObject(i,t),this._fireSelectionEvents(n,t)},_createGroup:function(e){var t=this._objects,n=t.indexOf(this._activeObject)<t.indexOf(e)?[this._activeObject,e]:[e,this._activeObject];return this._activeObject.isEditing&&this._activeObject.exitEditing(),new r.ActiveSelection(n,{canvas:this})},_groupSelectedObjects:function(e){var t,n=this._collectObjects(e);1===n.length?this.setActiveObject(n[0],e):n.length>1&&(t=new r.ActiveSelection(n.reverse(),{canvas:this}),this.setActiveObject(t,e))},_collectObjects:function(n){for(var i,o=[],a=this._groupSelector.ex,s=this._groupSelector.ey,u=a+this._groupSelector.left,l=s+this._groupSelector.top,c=new r.Point(e(a,u),e(s,l)),d=new r.Point(t(a,u),t(s,l)),h=!this.selectionFullyContained,f=a===u&&s===l,p=this._objects.length;p--&&!((i=this._objects[p])&&i.selectable&&i.visible&&(h&&i.intersectsWithRect(c,d)||i.isContainedWithinRect(c,d)||h&&i.containsPoint(c)||h&&i.containsPoint(d))&&(o.push(i),f)););return o.length>1&&(o=o.filter((function(e){return!e.onSelect({e:n})}))),o},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e),this.setCursor(this.defaultCursor),this._groupSelector=null}})}(),r.util.object.extend(r.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",n=e.quality||1,i=(e.multiplier||1)*(e.enableRetinaScaling?this.getRetinaScaling():1),o=this.toCanvasElement(i,e);return r.util.toDataURL(o,t,n)},toCanvasElement:function(e,t){e=e||1;var n=((t=t||{}).width||this.width)*e,i=(t.height||this.height)*e,o=this.getZoom(),a=this.width,s=this.height,u=o*e,l=this.viewportTransform,c=(l[4]-(t.left||0))*e,d=(l[5]-(t.top||0))*e,h=this.interactive,f=[u,0,0,u,c,d],p=this.enableRetinaScaling,g=r.util.createCanvasElement(),v=this.contextTop;return g.width=n,g.height=i,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=f,this.width=n,this.height=i,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=l,this.width=a,this.height=s,this.calcViewportBoundaries(),this.interactive=h,this.enableRetinaScaling=p,this.contextTop=v,g}}),r.util.object.extend(r.StaticCanvas.prototype,{loadFromJSON:function(e,t,n){if(e){var i="string"===typeof e?JSON.parse(e):r.util.object.clone(e),o=this,a=i.clipPath,s=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete i.clipPath,this._enlivenObjects(i.objects,(function(e){o.clear(),o._setBgOverlay(i,(function(){a?o._enlivenObjects([a],(function(n){o.clipPath=n[0],o.__setupCanvas.call(o,i,e,s,t)})):o.__setupCanvas.call(o,i,e,s,t)}))}),n),this}},__setupCanvas:function(e,t,n,i){var r=this;t.forEach((function(e,t){r.insertAt(e,t)})),this.renderOnAddRemove=n,delete e.objects,delete e.backgroundImage,delete e.overlayImage,delete e.background,delete e.overlay,this._setOptions(e),this.renderAll(),i&&i()},_setBgOverlay:function(e,t){var n={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(e.backgroundImage||e.overlayImage||e.background||e.overlay){var i=function(){n.backgroundImage&&n.overlayImage&&n.backgroundColor&&n.overlayColor&&t&&t()};this.__setBgOverlay("backgroundImage",e.backgroundImage,n,i),this.__setBgOverlay("overlayImage",e.overlayImage,n,i),this.__setBgOverlay("backgroundColor",e.background,n,i),this.__setBgOverlay("overlayColor",e.overlay,n,i)}else t&&t()},__setBgOverlay:function(e,t,n,i){var o=this;if(!t)return n[e]=!0,void(i&&i());"backgroundImage"===e||"overlayImage"===e?r.util.enlivenObjects([t],(function(t){o[e]=t[0],n[e]=!0,i&&i()})):this["set"+r.util.string.capitalize(e,!0)](t,(function(){n[e]=!0,i&&i()}))},_enlivenObjects:function(e,t,n){e&&0!==e.length?r.util.enlivenObjects(e,(function(e){t&&t(e)}),null,n):t&&t([])},_toDataURL:function(e,t){this.clone((function(n){t(n.toDataURL(e))}))},_toDataURLWithMultiplier:function(e,t,n){this.clone((function(i){n(i.toDataURLWithMultiplier(e,t))}))},clone:function(e,t){var n=JSON.stringify(this.toJSON(t));this.cloneWithoutData((function(t){t.loadFromJSON(n,(function(){e&&e(t)}))}))},cloneWithoutData:function(e){var t=r.util.createCanvasElement();t.width=this.width,t.height=this.height;var n=new r.Canvas(t);this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,(function(){n.renderAll(),e&&e(n)})),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):e&&e(n)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,i=t.util.object.clone,r=t.util.toFixed,o=t.util.string.capitalize,a=t.util.degreesToRadians,s=t.StaticCanvas.supports("setLineDash"),u=!t.isLikelyNode;t.Object||(t.Object=t.util.createClass(t.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:u,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(e){e&&this.setOptions(e)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=t.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(e){var n=t.perfLimitSizeTotal,i=e.width,r=e.height,o=t.maxCacheSideLimit,a=t.minCacheSideLimit;if(i<=o&&r<=o&&i*r<=n)return i<a&&(e.width=a),r<a&&(e.height=a),e;var s=i/r,u=t.util.limitDimsByArea(s,n),l=t.util.capValue,c=l(a,u.x,o),d=l(a,u.y,o);return i>c&&(e.zoomX/=i/c,e.width=c,e.capped=!0),r>d&&(e.zoomY/=r/d,e.height=d,e.capped=!0),e},_getCacheCanvasDimensions:function(){var e=this.getTotalObjectScaling(),t=this._getTransformedDimensions(0,0),n=t.x*e.scaleX/this.scaleX,i=t.y*e.scaleY/this.scaleY;return{width:n+2,height:i+2,zoomX:e.scaleX,zoomY:e.scaleY,x:n,y:i}},_updateCacheCanvas:function(){var e=this.canvas;if(this.noScaleCache&&e&&e._currentTransform){var n=e._currentTransform.target,i=e._currentTransform.action;if(this===n&&i.slice&&"scale"===i.slice(0,5))return!1}var r,o,a=this._cacheCanvas,s=this._limitCacheSize(this._getCacheCanvasDimensions()),u=t.minCacheSideLimit,l=s.width,c=s.height,d=s.zoomX,h=s.zoomY,f=l!==this.cacheWidth||c!==this.cacheHeight,p=this.zoomX!==d||this.zoomY!==h,g=f||p,v=0,m=0,_=!1;if(f){var y=this._cacheCanvas.width,b=this._cacheCanvas.height,w=l>y||c>b;_=w||(l<.9*y||c<.9*b)&&y>u&&b>u,w&&!s.capped&&(l>u||c>u)&&(v=.1*l,m=.1*c)}return!!g&&(_?(a.width=Math.ceil(l+v),a.height=Math.ceil(c+m)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,a.width,a.height)),r=s.x/2,o=s.y/2,this.cacheTranslationX=Math.round(a.width/2-r)+r,this.cacheTranslationY=Math.round(a.height/2-o)+o,this.cacheWidth=l,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(d,h),this.zoomX=d,this.zoomY=h,!0)},setOptions:function(e){this._setOptions(e),this._initGradient(e.fill,"fill"),this._initGradient(e.stroke,"stroke"),this._initPattern(e.fill,"fill"),this._initPattern(e.stroke,"stroke")},transform:function(e){var t=this.group&&!this.group._transformDone||this.group&&this.canvas&&e===this.canvas.contextTop,n=this.calcTransformMatrix(!t);e.transform(n[0],n[1],n[2],n[3],n[4],n[5])},toObject:function(e){var n=t.Object.NUM_FRACTION_DIGITS,i={type:this.type,version:t.version,originX:this.originX,originY:this.originY,left:r(this.left,n),top:r(this.top,n),width:r(this.width,n),height:r(this.height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:r(this.strokeWidth,n),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:r(this.strokeMiterLimit,n),scaleX:r(this.scaleX,n),scaleY:r(this.scaleY,n),angle:r(this.angle,n),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,n),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:r(this.skewX,n),skewY:r(this.skewY,n)};return this.clipPath&&(i.clipPath=this.clipPath.toObject(e),i.clipPath.inverted=this.clipPath.inverted,i.clipPath.absolutePositioned=this.clipPath.absolutePositioned),t.util.populateWithProperties(this,i,e),this.includeDefaultValues||(i=this._removeDefaultValues(i)),i},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var n=t.util.getKlass(e.type).prototype;return n.stateProperties.forEach((function(t){"left"!==t&&"top"!==t&&(e[t]===n[t]&&delete e[t],"[object Array]"===Object.prototype.toString.call(e[t])&&"[object Array]"===Object.prototype.toString.call(n[t])&&0===e[t].length&&0===n[t].length&&delete e[t])})),e},toString:function(){return"#<fabric."+o(this.type)+">"},getObjectScaling:function(){var e=t.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(e.scaleX),scaleY:Math.abs(e.scaleY)}},getTotalObjectScaling:function(){var e=this.getObjectScaling(),t=e.scaleX,n=e.scaleY;if(this.canvas){var i=this.canvas.getZoom(),r=this.canvas.getRetinaScaling();t*=i*r,n*=i*r}return{scaleX:t,scaleY:n}},getObjectOpacity:function(){var e=this.opacity;return this.group&&(e*=this.group.getObjectOpacity()),e},_set:function(e,n){var i="scaleX"===e||"scaleY"===e,r=this[e]!==n,o=!1;return i&&(n=this._constrainScale(n)),"scaleX"===e&&n<0?(this.flipX=!this.flipX,n*=-1):"scaleY"===e&&n<0?(this.flipY=!this.flipY,n*=-1):"shadow"!==e||!n||n instanceof t.Shadow?"dirty"===e&&this.group&&this.group.set("dirty",n):n=new t.Shadow(n),this[e]=n,r&&(o=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(e)>-1?(this.dirty=!0,o&&this.group.set("dirty",!0)):o&&this.stateProperties.indexOf(e)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:t.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(e){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(e.save(),this._setupCompositeOperation(e),this.drawSelectionBackground(e),this.transform(e),this._setOpacity(e),this._setShadow(e,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(e)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(e),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),e.restore())},renderCache:function(e){e=e||{},this._cacheCanvas||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,e.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!==typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(e){var n=this.clipPath;if(e.save(),n.inverted?e.globalCompositeOperation="destination-out":e.globalCompositeOperation="destination-in",n.absolutePositioned){var i=t.util.invertTransform(this.calcTransformMatrix());e.transform(i[0],i[1],i[2],i[3],i[4],i[5])}n.transform(e),e.scale(1/n.zoomX,1/n.zoomY),e.drawImage(n._cacheCanvas,-n.cacheTranslationX,-n.cacheTranslationY),e.restore()},drawObject:function(e,t){var n=this.fill,i=this.stroke;t?(this.fill="black",this.stroke="",this._setClippingProperties(e)):(this._renderBackground(e),this._setStrokeStyles(e,this),this._setFillStyles(e,this)),this._render(e),this._drawClipPath(e),this.fill=n,this.stroke=i},_drawClipPath:function(e){var t=this.clipPath;t&&(t.canvas=this.canvas,t.shouldCache(),t._transformDone=!0,t.renderCache({forClipping:!0}),this.drawClipPathOnCache(e))},drawCacheOnCanvas:function(e){e.scale(1/this.zoomX,1/this.zoomY),e.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(e){if(this.isNotVisible())return!1;if(this._cacheCanvas&&!e&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&!e){var t=this.cacheWidth/this.zoomX,n=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-t/2,-n/2,t,n)}return!0}return!1},_renderBackground:function(e){if(this.backgroundColor){var t=this._getNonTransformedDimensions();e.fillStyle=this.backgroundColor,e.fillRect(-t.x/2,-t.y/2,t.x,t.y),this._removeShadow(e)}},_setOpacity:function(e){this.group&&!this.group._transformDone?e.globalAlpha=this.getObjectOpacity():e.globalAlpha*=this.opacity},_setStrokeStyles:function(e,t){t.stroke&&(e.lineWidth=t.strokeWidth,e.lineCap=t.strokeLineCap,e.lineDashOffset=t.strokeDashOffset,e.lineJoin=t.strokeLineJoin,e.miterLimit=t.strokeMiterLimit,e.strokeStyle=t.stroke.toLive?t.stroke.toLive(e,this):t.stroke)},_setFillStyles:function(e,t){t.fill&&(e.fillStyle=t.fill.toLive?t.fill.toLive(e,this):t.fill)},_setClippingProperties:function(e){e.globalAlpha=1,e.strokeStyle="transparent",e.fillStyle="#000000"},_setLineDash:function(e,t,n){t&&0!==t.length&&(1&t.length&&t.push.apply(t,t),s?e.setLineDash(t):n&&n(e))},_renderControls:function(e,n){var i,r,o,s=this.getViewportTransform(),u=this.calcTransformMatrix();r="undefined"!==typeof(n=n||{}).hasBorders?n.hasBorders:this.hasBorders,o="undefined"!==typeof n.hasControls?n.hasControls:this.hasControls,u=t.util.multiplyTransformMatrices(s,u),i=t.util.qrDecompose(u),e.save(),e.translate(i.translateX,i.translateY),e.lineWidth=1*this.borderScaleFactor,this.group||(e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),n.forActiveSelection?(e.rotate(a(i.angle)),r&&this.drawBordersInGroup(e,i,n)):(e.rotate(a(this.angle)),r&&this.drawBorders(e,n)),o&&this.drawControls(e,n),e.restore()},_setShadow:function(e){if(this.shadow){var n,i=this.shadow,r=this.canvas,o=r&&r.viewportTransform[0]||1,a=r&&r.viewportTransform[3]||1;n=i.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),r&&r._isRetinaScaling()&&(o*=t.devicePixelRatio,a*=t.devicePixelRatio),e.shadowColor=i.color,e.shadowBlur=i.blur*t.browserShadowBlurConstant*(o+a)*(n.scaleX+n.scaleY)/4,e.shadowOffsetX=i.offsetX*o*n.scaleX,e.shadowOffsetY=i.offsetY*a*n.scaleY}},_removeShadow:function(e){this.shadow&&(e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0)},_applyPatternGradientTransform:function(e,t){if(!t||!t.toLive)return{offsetX:0,offsetY:0};var n=t.gradientTransform||t.patternTransform,i=-this.width/2+t.offsetX||0,r=-this.height/2+t.offsetY||0;return"percentage"===t.gradientUnits?e.transform(this.width,0,0,this.height,i,r):e.transform(1,0,0,1,i,r),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),{offsetX:i,offsetY:r}},_renderPaintInOrder:function(e){"stroke"===this.paintFirst?(this._renderStroke(e),this._renderFill(e)):(this._renderFill(e),this._renderStroke(e))},_render:function(){},_renderFill:function(e){this.fill&&(e.save(),this._applyPatternGradientTransform(e,this.fill),"evenodd"===this.fillRule?e.fill("evenodd"):e.fill(),e.restore())},_renderStroke:function(e){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this.strokeUniform&&this.group){var t=this.getObjectScaling();e.scale(1/t.scaleX,1/t.scaleY)}else this.strokeUniform&&e.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(e,this.strokeDashArray,this._renderDashedStroke),this.stroke.toLive&&"percentage"===this.stroke.gradientUnits?this._applyPatternForTransformedGradient(e,this.stroke):this._applyPatternGradientTransform(e,this.stroke),e.stroke(),e.restore()}},_applyPatternForTransformedGradient:function(e,n){var i,r=this._limitCacheSize(this._getCacheCanvasDimensions()),o=t.util.createCanvasElement(),a=this.canvas.getRetinaScaling(),s=r.x/this.scaleX/a,u=r.y/this.scaleY/a;o.width=s,o.height=u,(i=o.getContext("2d")).beginPath(),i.moveTo(0,0),i.lineTo(s,0),i.lineTo(s,u),i.lineTo(0,u),i.closePath(),i.translate(s/2,u/2),i.scale(r.zoomX/this.scaleX/a,r.zoomY/this.scaleY/a),this._applyPatternGradientTransform(i,n),i.fillStyle=n.toLive(e),i.fill(),e.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),e.scale(a*this.scaleX/r.zoomX,a*this.scaleY/r.zoomY),e.strokeStyle=i.createPattern(o,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var e=t.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",e.scaleX),this.set("scaleY",e.scaleY),this.angle=e.angle,this.skewX=e.skewX,this.skewY=0}},_removeTransformMatrix:function(e){var n=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),n=t.util.transformPoint(n,this.transformMatrix)),this.transformMatrix=null,e&&(this.scaleX*=e.scaleX,this.scaleY*=e.scaleY,this.cropX=e.cropX,this.cropY=e.cropY,n.x+=e.offsetLeft,n.y+=e.offsetTop,this.width=e.width,this.height=e.height),this.setPositionByOrigin(n,"center","center")},clone:function(e,n){var i=this.toObject(n);this.constructor.fromObject?this.constructor.fromObject(i,e):t.Object._fromObject("Object",i,e)},cloneAsImage:function(e,n){var i=this.toCanvasElement(n);return e&&e(new t.Image(i)),this},toCanvasElement:function(e){e||(e={});var n=t.util,i=n.saveObjectTransform(this),r=this.group,o=this.shadow,a=Math.abs,s=(e.multiplier||1)*(e.enableRetinaScaling?t.devicePixelRatio:1);delete this.group,e.withoutTransform&&n.resetObjectTransform(this),e.withoutShadow&&(this.shadow=null);var u,l,c,d,h=t.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),p=this.shadow,g={x:0,y:0};p&&(l=p.blur,u=p.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),g.x=2*Math.round(a(p.offsetX)+l)*a(u.scaleX),g.y=2*Math.round(a(p.offsetY)+l)*a(u.scaleY)),c=f.width+g.x,d=f.height+g.y,h.width=Math.ceil(c),h.height=Math.ceil(d);var v=new t.StaticCanvas(h,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===e.format&&(v.backgroundColor="#fff"),this.setPositionByOrigin(new t.Point(v.width/2,v.height/2),"center","center");var m=this.canvas;v.add(this);var _=v.toCanvasElement(s||1,e);return this.shadow=o,this.set("canvas",m),r&&(this.group=r),this.set(i).setCoords(),v._objects=[],v.dispose(),v=null,_},toDataURL:function(e){return e||(e={}),t.util.toDataURL(this.toCanvasElement(e),e.format||"png",e.quality||1)},isType:function(e){return this.type===e},complexity:function(){return 1},toJSON:function(e){return this.toObject(e)},rotate:function(e){var t=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return t&&this._setOriginToCenter(),this.set("angle",e),t&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(e,n){n=n||this.canvas.getPointer(e);var i=new t.Point(n.x,n.y),r=this._getLeftTopCoords();return this.angle&&(i=t.util.rotatePoint(i,r,a(-this.angle))),{x:i.x-r.x,y:i.y-r.y}},_setupCompositeOperation:function(e){this.globalCompositeOperation&&(e.globalCompositeOperation=this.globalCompositeOperation)}}),t.util.createAccessors&&t.util.createAccessors(t.Object),n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object._fromObject=function(e,n,r,o){var a=t[e];n=i(n,!0),t.util.enlivenPatterns([n.fill,n.stroke],(function(e){"undefined"!==typeof e[0]&&(n.fill=e[0]),"undefined"!==typeof e[1]&&(n.stroke=e[1]),t.util.enlivenObjects([n.clipPath],(function(e){n.clipPath=e[0];var t=o?new a(n[o],n):new a(n);r&&r(t)}))}))},t.Object.__uid=0)}(t),function(){var e=r.util.degreesToRadians,t={left:-.5,center:0,right:.5},n={top:-.5,center:0,bottom:.5};r.util.object.extend(r.Object.prototype,{translateToGivenOrigin:function(e,i,o,a,s){var u,l,c,d=e.x,h=e.y;return"string"===typeof i?i=t[i]:i-=.5,"string"===typeof a?a=t[a]:a-=.5,"string"===typeof o?o=n[o]:o-=.5,"string"===typeof s?s=n[s]:s-=.5,l=s-o,((u=a-i)||l)&&(c=this._getTransformedDimensions(),d=e.x+u*c.x,h=e.y+l*c.y),new r.Point(d,h)},translateToCenterPoint:function(t,n,i){var o=this.translateToGivenOrigin(t,n,i,"center","center");return this.angle?r.util.rotatePoint(o,t,e(this.angle)):o},translateToOriginPoint:function(t,n,i){var o=this.translateToGivenOrigin(t,"center","center",n,i);return this.angle?r.util.rotatePoint(o,t,e(this.angle)):o},getCenterPoint:function(){var e=new r.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,i){var o,a,s=this.getCenterPoint();return o="undefined"!==typeof n&&"undefined"!==typeof i?this.translateToGivenOrigin(s,"center","center",n,i):new r.Point(this.left,this.top),a=new r.Point(t.x,t.y),this.angle&&(a=r.util.rotatePoint(a,s,-e(this.angle))),a.subtractEquals(o)},setPositionByOrigin:function(e,t,n){var i=this.translateToCenterPoint(e,t,n),r=this.translateToOriginPoint(i,this.originX,this.originY);this.set("left",r.x),this.set("top",r.y)},adjustPosition:function(n){var i,o,a=e(this.angle),s=this.getScaledWidth(),u=r.util.cos(a)*s,l=r.util.sin(a)*s;i="string"===typeof this.originX?t[this.originX]:this.originX-.5,o="string"===typeof n?t[n]:n-.5,this.left+=u*(o-i),this.top+=l*(o-i),this.setCoords(),this.originX=n},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var e=this.getCenterPoint();this.originX="center",this.originY="center",this.left=e.x,this.top=e.y},_resetOrigin:function(){var e=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=e.x,this.top=e.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}})}(),function(){var e=r.util,t=e.degreesToRadians,n=e.multiplyTransformMatrices,i=e.transformPoint;e.object.extend(r.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(e,t){return t?e?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),e?this.aCoords:this.lineCoords)},getCoords:function(e,t){return n=this._getCoords(e,t),[new r.Point(n.tl.x,n.tl.y),new r.Point(n.tr.x,n.tr.y),new r.Point(n.br.x,n.br.y),new r.Point(n.bl.x,n.bl.y)];var n},intersectsWithRect:function(e,t,n,i){var o=this.getCoords(n,i);return"Intersection"===r.Intersection.intersectPolygonRectangle(o,e,t).status},intersectsWithObject:function(e,t,n){return"Intersection"===r.Intersection.intersectPolygonPolygon(this.getCoords(t,n),e.getCoords(t,n)).status||e.isContainedWithinObject(this,t,n)||this.isContainedWithinObject(e,t,n)},isContainedWithinObject:function(e,t,n){for(var i=this.getCoords(t,n),r=t?e.aCoords:e.lineCoords,o=0,a=e._getImageLines(r);o<4;o++)if(!e.containsPoint(i[o],a))return!1;return!0},isContainedWithinRect:function(e,t,n,i){var r=this.getBoundingRect(n,i);return r.left>=e.x&&r.left+r.width<=t.x&&r.top>=e.y&&r.top+r.height<=t.y},containsPoint:function(e,t,n,i){var r=this._getCoords(n,i),o=(t=t||this._getImageLines(r),this._findCrossPoints(e,t));return 0!==o&&o%2===1},isOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,n=this.canvas.vptCoords.br;return!!this.getCoords(!0,e).some((function(e){return e.x<=n.x&&e.x>=t.x&&e.y<=n.y&&e.y>=t.y}))||(!!this.intersectsWithRect(t,n,!0,e)||this._containsCenterOfCanvas(t,n,e))},_containsCenterOfCanvas:function(e,t,n){var i={x:(e.x+t.x)/2,y:(e.y+t.y)/2};return!!this.containsPoint(i,null,!0,n)},isPartiallyOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,n=this.canvas.vptCoords.br;return!!this.intersectsWithRect(t,n,!0,e)||this.getCoords(!0,e).every((function(e){return(e.x>=n.x||e.x<=t.x)&&(e.y>=n.y||e.y<=t.y)}))&&this._containsCenterOfCanvas(t,n,e)},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_findCrossPoints:function(e,t){var n,i,r,o=0;for(var a in t)if(!((r=t[a]).o.y<e.y&&r.d.y<e.y)&&!(r.o.y>=e.y&&r.d.y>=e.y)&&(r.o.x===r.d.x&&r.o.x>=e.x?i=r.o.x:(0,n=(r.d.y-r.o.y)/(r.d.x-r.o.x),i=-(e.y-0*e.x-(r.o.y-n*r.o.x))/(0-n)),i>=e.x&&(o+=1),2===o))break;return o},getBoundingRect:function(t,n){var i=this.getCoords(t,n);return e.makeBoundingBoxFromPoints(i)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(e){return Math.abs(e)<this.minScaleLimit?e<0?-this.minScaleLimit:this.minScaleLimit:0===e?1e-4:e},scale:function(e){return this._set("scaleX",e),this._set("scaleY",e),this.setCoords()},scaleToWidth:function(e,t){var n=this.getBoundingRect(t).width/this.getScaledWidth();return this.scale(e/this.width/n)},scaleToHeight:function(e,t){var n=this.getBoundingRect(t).height/this.getScaledHeight();return this.scale(e/this.height/n)},calcCoords:function(e){return e?this.calcACoords():this.calcOCoords()},calcLineCoords:function(){var n=this.getViewportTransform(),r=this.padding,o=t(this.angle),a=e.cos(o)*r,s=e.sin(o)*r,u=a+s,l=a-s,c=this.calcACoords(),d={tl:i(c.tl,n),tr:i(c.tr,n),bl:i(c.bl,n),br:i(c.br,n)};return r&&(d.tl.x-=l,d.tl.y-=u,d.tr.x+=u,d.tr.y-=l,d.bl.x-=u,d.bl.y+=l,d.br.x+=l,d.br.y+=u),d},calcOCoords:function(){var e=this._calcRotateMatrix(),t=this._calcTranslateMatrix(),i=this.getViewportTransform(),r=n(i,t),o=n(r,e),a=(o=n(o,[1/i[0],0,0,1/i[3],0,0]),this._calculateCurrentDimensions()),s={};return this.forEachControl((function(e,t,n){s[t]=e.positionHandler(a,o,n)})),s},calcACoords:function(){var e=this._calcRotateMatrix(),t=this._calcTranslateMatrix(),r=n(t,e),o=this._getTransformedDimensions(),a=o.x/2,s=o.y/2;return{tl:i({x:-a,y:-s},r),tr:i({x:a,y:-s},r),bl:i({x:-a,y:s},r),br:i({x:a,y:s},r)}},setCoords:function(e){return this.aCoords=this.calcACoords(),this.lineCoords=this.group?this.aCoords:this.calcLineCoords(),e||(this.oCoords=this.calcOCoords(),this._setCornerCoords&&this._setCornerCoords()),this},_calcRotateMatrix:function(){return e.calcRotateMatrix(this)},_calcTranslateMatrix:function(){var e=this.getCenterPoint();return[1,0,0,1,e.x,e.y]},transformMatrixKey:function(e){var t="_",n="";return!e&&this.group&&(n=this.group.transformMatrixKey(e)+t),n+this.top+t+this.left+t+this.scaleX+t+this.scaleY+t+this.skewX+t+this.skewY+t+this.angle+t+this.originX+t+this.originY+t+this.width+t+this.height+t+this.strokeWidth+this.flipX+this.flipY},calcTransformMatrix:function(e){var t=this.calcOwnMatrix();if(e||!this.group)return t;var i=this.transformMatrixKey(e),r=this.matrixCache||(this.matrixCache={});return r.key===i?r.value:(this.group&&(t=n(this.group.calcTransformMatrix(!1),t)),r.key=i,r.value=t,t)},calcOwnMatrix:function(){var t=this.transformMatrixKey(!0),n=this.ownMatrixCache||(this.ownMatrixCache={});if(n.key===t)return n.value;var i=this._calcTranslateMatrix(),r={angle:this.angle,translateX:i[4],translateY:i[5],scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,flipX:this.flipX,flipY:this.flipY};return n.key=t,n.value=e.composeMatrix(r),n.value},_calcDimensionsTransformMatrix:function(t,n,i){return e.calcDimensionsMatrix({skewX:t,skewY:n,scaleX:this.scaleX*(i&&this.flipX?-1:1),scaleY:this.scaleY*(i&&this.flipY?-1:1)})},_getNonTransformedDimensions:function(){var e=this.strokeWidth;return{x:this.width+e,y:this.height+e}},_getTransformedDimensions:function(t,n){"undefined"===typeof t&&(t=this.skewX),"undefined"===typeof n&&(n=this.skewY);var i,r,o=this._getNonTransformedDimensions(),a=0===t&&0===n;if(this.strokeUniform?(i=this.width,r=this.height):(i=o.x,r=o.y),a)return this._finalizeDimensions(i*this.scaleX,r*this.scaleY);var s=e.sizeAfterTransform(i,r,{scaleX:this.scaleX,scaleY:this.scaleY,skewX:t,skewY:n});return this._finalizeDimensions(s.x,s.y)},_finalizeDimensions:function(e,t){return this.strokeUniform?{x:e+this.strokeWidth,y:t+this.strokeWidth}:{x:e,y:t}},_calculateCurrentDimensions:function(){var e=this.getViewportTransform(),t=this._getTransformedDimensions();return i(t,e,!0).scalarAdd(2*this.padding)}})}(),r.util.object.extend(r.Object.prototype,{sendToBack:function(){return this.group?r.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas&&this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?r.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas&&this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?r.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas&&this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?r.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas&&this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group&&"activeSelection"!==this.group.type?r.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas&&this.canvas.moveTo(this,e),this}}),function(){function e(e,t){if(t){if(t.toLive)return e+": url(#SVGID_"+t.id+"); ";var n=new r.Color(t),i=e+": "+n.toRgb()+"; ",o=n.getAlpha();return 1!==o&&(i+=e+"-opacity: "+o.toString()+"; "),i}return e+": none; "}var t=r.util.toFixed;r.util.object.extend(r.Object.prototype,{getSvgStyles:function(t){var n=this.fillRule?this.fillRule:"nonzero",i=this.strokeWidth?this.strokeWidth:"0",r=this.strokeDashArray?this.strokeDashArray.join(" "):"none",o=this.strokeDashOffset?this.strokeDashOffset:"0",a=this.strokeLineCap?this.strokeLineCap:"butt",s=this.strokeLineJoin?this.strokeLineJoin:"miter",u=this.strokeMiterLimit?this.strokeMiterLimit:"4",l="undefined"!==typeof this.opacity?this.opacity:"1",c=this.visible?"":" visibility: hidden;",d=t?"":this.getSvgFilter(),h=e("fill",this.fill);return[e("stroke",this.stroke),"stroke-width: ",i,"; ","stroke-dasharray: ",r,"; ","stroke-linecap: ",a,"; ","stroke-dashoffset: ",o,"; ","stroke-linejoin: ",s,"; ","stroke-miterlimit: ",u,"; ",h,"fill-rule: ",n,"; ","opacity: ",l,";",d,c].join("")},getSvgSpanStyles:function(t,n){var i="; ",r=t.fontFamily?"font-family: "+(-1===t.fontFamily.indexOf("'")&&-1===t.fontFamily.indexOf('"')?"'"+t.fontFamily+"'":t.fontFamily)+i:"",o=t.strokeWidth?"stroke-width: "+t.strokeWidth+i:"",a=(r=r,t.fontSize?"font-size: "+t.fontSize+"px"+i:""),s=t.fontStyle?"font-style: "+t.fontStyle+i:"",u=t.fontWeight?"font-weight: "+t.fontWeight+i:"",l=t.fill?e("fill",t.fill):"",c=t.stroke?e("stroke",t.stroke):"",d=this.getSvgTextDecoration(t);return d&&(d="text-decoration: "+d+i),[c,o,r,a,s,u,d,l,t.deltaY?"baseline-shift: "+-t.deltaY+"; ":"",n?"white-space: pre; ":""].join("")},getSvgTextDecoration:function(e){return["overline","underline","line-through"].filter((function(t){return e[t.replace("-","")]})).join(" ")},getSvgFilter:function(){return this.shadow?"filter: url(#SVGID_"+this.shadow.id+");":""},getSvgCommons:function(){return[this.id?'id="'+this.id+'" ':"",this.clipPath?'clip-path="url(#'+this.clipPath.clipPathId+')" ':""].join("")},getSvgTransform:function(e,t){var n=e?this.calcTransformMatrix():this.calcOwnMatrix();return'transform="'+r.util.matrixToSVG(n)+(t||"")+'" '},_setSVGBg:function(e){if(this.backgroundColor){var n=r.Object.NUM_FRACTION_DIGITS;e.push("\t\t<rect ",this._getFillAttributes(this.backgroundColor),' x="',t(-this.width/2,n),'" y="',t(-this.height/2,n),'" width="',t(this.width,n),'" height="',t(this.height,n),'"></rect>\n')}},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(e),{reviver:e})},toClipPathSVG:function(e){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(e),{reviver:e})},_createBaseClipPathSVGMarkup:function(e,t){var n=(t=t||{}).reviver,i=t.additionalTransform||"",r=[this.getSvgTransform(!0,i),this.getSvgCommons()].join(""),o=e.indexOf("COMMON_PARTS");return e[o]=r,n?n(e.join("")):e.join("")},_createBaseSVGMarkup:function(e,t){var n,i,o=(t=t||{}).noStyle,a=t.reviver,s=o?"":'style="'+this.getSvgStyles()+'" ',u=t.withShadow?'style="'+this.getSvgFilter()+'" ':"",l=this.clipPath,c=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",d=l&&l.absolutePositioned,h=this.stroke,f=this.fill,p=this.shadow,g=[],v=e.indexOf("COMMON_PARTS"),m=t.additionalTransform;return l&&(l.clipPathId="CLIPPATH_"+r.Object.__uid++,i='<clipPath id="'+l.clipPathId+'" >\n'+l.toClipPathSVG(a)+"</clipPath>\n"),d&&g.push("<g ",u,this.getSvgCommons()," >\n"),g.push("<g ",this.getSvgTransform(!1),d?"":u+this.getSvgCommons()," >\n"),n=[s,c,o?"":this.addPaintOrder()," ",m?'transform="'+m+'" ':""].join(""),e[v]=n,f&&f.toLive&&g.push(f.toSVG(this)),h&&h.toLive&&g.push(h.toSVG(this)),p&&g.push(p.toSVG(this)),l&&g.push(i),g.push(e.join("")),g.push("</g>\n"),d&&g.push("</g>\n"),a?a(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var e=r.util.object.extend,t="stateProperties";function n(t,n,i){var r={};i.forEach((function(e){r[e]=t[e]})),e(t[n],r,!0)}function i(e,t,n){if(e===t)return!0;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(var r=0,o=e.length;r<o;r++)if(!i(e[r],t[r]))return!1;return!0}if(e&&"object"===typeof e){var a,s=Object.keys(e);if(!t||"object"!==typeof t||!n&&s.length!==Object.keys(t).length)return!1;for(r=0,o=s.length;r<o;r++)if("canvas"!==(a=s[r])&&"group"!==a&&!i(e[a],t[a]))return!1;return!0}}r.util.object.extend(r.Object.prototype,{hasStateChanged:function(e){var n="_"+(e=e||t);return Object.keys(this[n]).length<this[e].length||!i(this[n],this,!0)},saveState:function(e){var i=e&&e.propertySet||t,r="_"+i;return this[r]?(n(this,r,this[i]),e&&e.stateProperties&&n(this,r,e.stateProperties),this):this.setupState(e)},setupState:function(e){var n=(e=e||{}).propertySet||t;return e.propertySet=n,this["_"+n]={},this.saveState(e),this}})}(),function(){var e=r.util.degreesToRadians;r.util.object.extend(r.Object.prototype,{_findTargetCorner:function(e,t){if(!this.hasControls||this.group||!this.canvas||this.canvas._activeObject!==this)return!1;var n,i,r,o=e.x,a=e.y,s=Object.keys(this.oCoords),u=s.length-1;for(this.__corner=0;u>=0;u--)if(r=s[u],this.isControlVisible(r)&&(i=this._getImageLines(t?this.oCoords[r].touchCorner:this.oCoords[r].corner),0!==(n=this._findCrossPoints({x:o,y:a},i))&&n%2===1))return this.__corner=r,r;return!1},forEachControl:function(e){for(var t in this.controls)e(this.controls[t],t,this)},_setCornerCoords:function(){var t,n,i=this.oCoords,o=e(45-this.angle),a=r.util.cos(o),s=r.util.sin(o),u=.707106*this.cornerSize,l=.707106*this.touchCornerSize,c=u*a,d=u*s,h=l*a,f=l*s;for(var p in i)t=i[p].x,n=i[p].y,i[p].corner={tl:{x:t-d,y:n-c},tr:{x:t+c,y:n-d},bl:{x:t-c,y:n+d},br:{x:t+d,y:n+c}},i[p].touchCorner={tl:{x:t-f,y:n-h},tr:{x:t+h,y:n-f},bl:{x:t-h,y:n+f},br:{x:t+f,y:n+h}}},drawSelectionBackground:function(t){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;t.save();var n=this.getCenterPoint(),i=this._calculateCurrentDimensions(),r=this.canvas.viewportTransform;return t.translate(n.x,n.y),t.scale(1/r[0],1/r[3]),t.rotate(e(this.angle)),t.fillStyle=this.selectionBackgroundColor,t.fillRect(-i.x/2,-i.y/2,i.x,i.y),t.restore(),this},drawBorders:function(e,t){t=t||{};var n=this._calculateCurrentDimensions(),i=this.borderScaleFactor,r=n.x+i,o=n.y+i,a="undefined"!==typeof t.hasControls?t.hasControls:this.hasControls,s=!1;return e.save(),e.strokeStyle=t.borderColor||this.borderColor,this._setLineDash(e,t.borderDashArray||this.borderDashArray,null),e.strokeRect(-r/2,-o/2,r,o),a&&(e.beginPath(),this.forEachControl((function(t,n,i){t.withConnection&&t.getVisibility(i,n)&&(s=!0,e.moveTo(t.x*r,t.y*o),e.lineTo(t.x*r+t.offsetX,t.y*o+t.offsetY))})),s&&e.stroke()),e.restore(),this},drawBordersInGroup:function(e,t,n){n=n||{};var i=r.util.sizeAfterTransform(this.width,this.height,t),o=this.strokeWidth,a=this.strokeUniform,s=this.borderScaleFactor,u=i.x+o*(a?this.canvas.getZoom():t.scaleX)+s,l=i.y+o*(a?this.canvas.getZoom():t.scaleY)+s;return e.save(),this._setLineDash(e,n.borderDashArray||this.borderDashArray,null),e.strokeStyle=n.borderColor||this.borderColor,e.strokeRect(-u/2,-l/2,u,l),e.restore(),this},drawControls:function(e,t){return t=t||{},e.save(),e.setTransform(this.canvas.getRetinaScaling(),0,0,this.canvas.getRetinaScaling(),0,0),e.strokeStyle=e.fillStyle=t.cornerColor||this.cornerColor,this.transparentCorners||(e.strokeStyle=t.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(e,t.cornerDashArray||this.cornerDashArray,null),this.setCoords(),this.forEachControl((function(n,i,r){n.getVisibility(r,i)&&n.render(e,r.oCoords[i].x,r.oCoords[i].y,t,r)})),e.restore(),this},isControlVisible:function(e){return this.controls[e]&&this.controls[e].getVisibility(this,e)},setControlVisible:function(e,t){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[e]=t,this},setControlsVisibility:function(e){for(var t in e||(e={}),e)this.setControlVisible(t,e[t]);return this},onDeselect:function(){},onSelect:function(){}})}(),r.util.object.extend(r.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){var n=function(){},i=(t=t||{}).onComplete||n,o=t.onChange||n,a=this;return r.util.animate({startValue:e.left,endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),a.requestRenderAll(),o()},onComplete:function(){e.setCoords(),i()}}),this},fxCenterObjectV:function(e,t){var n=function(){},i=(t=t||{}).onComplete||n,o=t.onChange||n,a=this;return r.util.animate({startValue:e.top,endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),a.requestRenderAll(),o()},onComplete:function(){e.setCoords(),i()}}),this},fxRemove:function(e,t){var n=function(){},i=(t=t||{}).onComplete||n,o=t.onChange||n,a=this;return r.util.animate({startValue:e.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(t){e.set("opacity",t),a.requestRenderAll(),o()},onComplete:function(){a.remove(e),i()}}),this}}),r.util.object.extend(r.Object.prototype,{animate:function(){if(arguments[0]&&"object"===typeof arguments[0]){var e,t,n=[];for(e in arguments[0])n.push(e);for(var i=0,r=n.length;i<r;i++)e=n[i],t=i!==r-1,this._animate(e,arguments[0][e],arguments[1],t)}else this._animate.apply(this,arguments);return this},_animate:function(e,t,n,i){var o,a=this;t=t.toString(),n=n?r.util.object.clone(n):{},~e.indexOf(".")&&(o=e.split("."));var s=a.colorProperties.indexOf(e)>-1||o&&a.colorProperties.indexOf(o[1])>-1,u=o?this.get(o[0])[o[1]]:this.get(e);"from"in n||(n.from=u),s||(t=~t.indexOf("=")?u+parseFloat(t.replace("=","")):parseFloat(t));var l={startValue:n.from,endValue:t,byValue:n.by,easing:n.easing,duration:n.duration,abort:n.abort&&function(){return n.abort.call(a)},onChange:function(t,r,s){o?a[o[0]][o[1]]=t:a.set(e,t),i||n.onChange&&n.onChange(t,r,s)},onComplete:function(e,t,r){i||(a.setCoords(),n.onComplete&&n.onComplete(e,t,r))}};s?r.util.animateColor(l.startValue,l.endValue,l.duration,l):r.util.animate(l)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,i=t.util.object.clone,r={x1:1,x2:1,y1:1,y2:1},o=t.StaticCanvas.supports("setLineDash");function a(e,t){var n=e.origin,i=e.axis1,r=e.axis2,o=e.dimension,a=t.nearest,s=t.center,u=t.farthest;return function(){switch(this.get(n)){case a:return Math.min(this.get(i),this.get(r));case s:return Math.min(this.get(i),this.get(r))+.5*this.get(o);case u:return Math.max(this.get(i),this.get(r))}}}t.Line?t.warn("fabric.Line is already defined"):(t.Line=t.util.createClass(t.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:t.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(e,t){e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in e?e.left:this._getLeftToOriginX(),this.top="top"in e?e.top:this._getTopToOriginY()},_set:function(e,t){return this.callSuper("_set",e,t),"undefined"!==typeof r[e]&&this._setWidthHeight(),this},_getLeftToOriginX:a({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:a({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(e){if(e.beginPath(),!this.strokeDashArray||this.strokeDashArray&&o){var t=this.calcLinePoints();e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2)}e.lineWidth=this.strokeWidth;var n=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this.stroke&&this._renderStroke(e),e.strokeStyle=n},_renderDashedStroke:function(e){var n=this.calcLinePoints();e.beginPath(),t.util.drawDashedLine(e,n.x1,n.y1,n.x2,n.y2,this.strokeDashArray),e.closePath()},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(e){return n(this.callSuper("toObject",e),this.calcLinePoints())},_getNonTransformedDimensions:function(){var e=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(e.y-=this.strokeWidth),0===this.height&&(e.x-=this.strokeWidth)),e},calcLinePoints:function(){var e=this.x1<=this.x2?-1:1,t=this.y1<=this.y2?-1:1,n=e*this.width*.5,i=t*this.height*.5;return{x1:n,x2:e*this.width*-.5,y1:i,y2:t*this.height*-.5}},_toSVG:function(){var e=this.calcLinePoints();return["<line ","COMMON_PARTS",'x1="',e.x1,'" y1="',e.y1,'" x2="',e.x2,'" y2="',e.y2,'" />\n']}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,i,r){r=r||{};var o=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),a=[o.x1||0,o.y1||0,o.x2||0,o.y2||0];i(new t.Line(a,n(o,r)))},t.Line.fromObject=function(e,n){var r=i(e,!0);r.points=[e.x1,e.y1,e.x2,e.y2],t.Object._fromObject("Line",r,(function(e){delete e.points,n&&n(e)}),"points")})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI;t.Circle?t.warn("fabric.Circle is already defined."):(t.Circle=t.util.createClass(t.Object,{type:"circle",radius:0,startAngle:0,endAngle:2*n,cacheProperties:t.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(e,t){return this.callSuper("_set",e,t),"radius"===e&&this.setRadius(t),this},toObject:function(e){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(e))},_toSVG:function(){var e,i=(this.endAngle-this.startAngle)%(2*n);if(0===i)e=["<circle ","COMMON_PARTS",'cx="0" cy="0" ','r="',this.radius,'" />\n'];else{var r=t.util.cos(this.startAngle)*this.radius,o=t.util.sin(this.startAngle)*this.radius,a=t.util.cos(this.endAngle)*this.radius,s=t.util.sin(this.endAngle)*this.radius,u=i>n?"1":"0";e=['<path d="M '+r+" "+o," A "+this.radius+" "+this.radius," 0 ",+u+" 1"," "+a+" "+s,'" ',"COMMON_PARTS"," />\n"]}return e},_render:function(e){e.beginPath(),e.arc(0,0,this.radius,this.startAngle,this.endAngle,!1),this._renderPaintInOrder(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){return this.radius=e,this.set("width",2*e).set("height",2*e)}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){var i,r=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!("radius"in(i=r)&&i.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");r.left=(r.left||0)-r.radius,r.top=(r.top||0)-r.radius,n(new t.Circle(r))},t.Circle.fromObject=function(e,n){return t.Object._fromObject("Circle",e,n)})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={});t.Triangle?t.warn("fabric.Triangle is already defined"):(t.Triangle=t.util.createClass(t.Object,{type:"triangle",width:100,height:100,_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderPaintInOrder(e)},_renderDashedStroke:function(e){var n=this.width/2,i=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,i,0,-i,this.strokeDashArray),t.util.drawDashedLine(e,0,-i,n,i,this.strokeDashArray),t.util.drawDashedLine(e,n,i,-n,i,this.strokeDashArray),e.closePath()},_toSVG:function(){var e=this.width/2,t=this.height/2;return["<polygon ","COMMON_PARTS",'points="',[-e+" "+t,"0 "+-t,e+" "+t].join(","),'" />']}}),t.Triangle.fromObject=function(e,n){return t.Object._fromObject("Triangle",e,n)})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=2*Math.PI;t.Ellipse?t.warn("fabric.Ellipse is already defined."):(t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this.set("rx",e&&e.rx||0),this.set("ry",e&&e.ry||0)},_set:function(e,t){switch(this.callSuper("_set",e,t),e){case"rx":this.rx=t,this.set("width",2*t);break;case"ry":this.ry=t,this.set("height",2*t)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["<ellipse ","COMMON_PARTS",'cx="0" cy="0" ','rx="',this.rx,'" ry="',this.ry,'" />\n']},_render:function(e){e.beginPath(),e.save(),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(0,0,this.rx,0,n,!1),e.restore(),this._renderPaintInOrder(e)}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES);i.left=(i.left||0)-i.rx,i.top=(i.top||0)-i.ry,n(new t.Ellipse(i))},t.Ellipse.fromObject=function(e,n){return t.Object._fromObject("Ellipse",e,n)})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Rect?t.warn("fabric.Rect is already defined"):(t.Rect=t.util.createClass(t.Object,{stateProperties:t.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx?Math.min(this.rx,this.width/2):0,n=this.ry?Math.min(this.ry,this.height/2):0,i=this.width,r=this.height,o=-this.width/2,a=-this.height/2,s=0!==t||0!==n,u=.4477152502;e.beginPath(),e.moveTo(o+t,a),e.lineTo(o+i-t,a),s&&e.bezierCurveTo(o+i-u*t,a,o+i,a+u*n,o+i,a+n),e.lineTo(o+i,a+r-n),s&&e.bezierCurveTo(o+i,a+r-u*n,o+i-u*t,a+r,o+i-t,a+r),e.lineTo(o+t,a+r),s&&e.bezierCurveTo(o+u*t,a+r,o,a+r-u*n,o,a+r-n),e.lineTo(o,a+n),s&&e.bezierCurveTo(o,a+u*n,o+u*t,a,o+t,a),e.closePath(),this._renderPaintInOrder(e)},_renderDashedStroke:function(e){var n=-this.width/2,i=-this.height/2,r=this.width,o=this.height;e.beginPath(),t.util.drawDashedLine(e,n,i,n+r,i,this.strokeDashArray),t.util.drawDashedLine(e,n+r,i,n+r,i+o,this.strokeDashArray),t.util.drawDashedLine(e,n+r,i+o,n,i+o,this.strokeDashArray),t.util.drawDashedLine(e,n,i+o,n,i,this.strokeDashArray),e.closePath()},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["<rect ","COMMON_PARTS",'x="',-this.width/2,'" y="',-this.height/2,'" rx="',this.rx,'" ry="',this.ry,'" width="',this.width,'" height="',this.height,'" />\n']}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i,r){if(!e)return i(null);r=r||{};var o=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);o.left=o.left||0,o.top=o.top||0,o.height=o.height||0,o.width=o.width||0;var a=new t.Rect(n(r?t.util.object.clone(r):{},o));a.visible=a.visible&&a.width>0&&a.height>0,i(a)},t.Rect.fromObject=function(e,n){return t.Object._fromObject("Rect",e,n)})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,i=t.util.array.min,r=t.util.array.max,o=t.util.toFixed;t.Polyline?t.warn("fabric.Polyline is already defined"):(t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,cacheProperties:t.Object.prototype.cacheProperties.concat("points"),initialize:function(e,t){t=t||{},this.points=e||[],this.callSuper("initialize",t),this._setPositionDimensions(t)},_setPositionDimensions:function(e){var t,n=this._calcDimensions(e);this.width=n.width,this.height=n.height,e.fromSVG||(t=this.translateToGivenOrigin({x:n.left-this.strokeWidth/2,y:n.top-this.strokeWidth/2},"left","top",this.originX,this.originY)),"undefined"===typeof e.left&&(this.left=e.fromSVG?n.left:t.x),"undefined"===typeof e.top&&(this.top=e.fromSVG?n.top:t.y),this.pathOffset={x:n.left+this.width/2,y:n.top+this.height/2}},_calcDimensions:function(){var e=this.points,t=i(e,"x")||0,n=i(e,"y")||0;return{left:t,top:n,width:(r(e,"x")||0)-t,height:(r(e,"y")||0)-n}},toObject:function(e){return n(this.callSuper("toObject",e),{points:this.points.concat()})},_toSVG:function(){for(var e=[],n=this.pathOffset.x,i=this.pathOffset.y,r=t.Object.NUM_FRACTION_DIGITS,a=0,s=this.points.length;a<s;a++)e.push(o(this.points[a].x-n,r),",",o(this.points[a].y-i,r)," ");return["<"+this.type+" ","COMMON_PARTS",'points="',e.join(""),'" />\n']},commonRender:function(e){var t,n=this.points.length,i=this.pathOffset.x,r=this.pathOffset.y;if(!n||isNaN(this.points[n-1].y))return!1;e.beginPath(),e.moveTo(this.points[0].x-i,this.points[0].y-r);for(var o=0;o<n;o++)t=this.points[o],e.lineTo(t.x-i,t.y-r);return!0},_render:function(e){this.commonRender(e)&&this._renderPaintInOrder(e)},_renderDashedStroke:function(e){var n,i;e.beginPath();for(var r=0,o=this.points.length;r<o;r++)n=this.points[r],i=this.points[r+1]||n,t.util.drawDashedLine(e,n.x,n.y,i.x,i.y,this.strokeDashArray)},complexity:function(){return this.get("points").length}}),t.Polyline.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(),t.Polyline.fromElementGenerator=function(e){return function(i,r,o){if(!i)return r(null);o||(o={});var a=t.parsePointsAttribute(i.getAttribute("points")),s=t.parseAttributes(i,t[e].ATTRIBUTE_NAMES);s.fromSVG=!0,r(new t[e](a,n(s,o)))}},t.Polyline.fromElement=t.Polyline.fromElementGenerator("Polyline"),t.Polyline.fromObject=function(e,n){return t.Object._fromObject("Polyline",e,n,"points")})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={});t.Polygon?t.warn("fabric.Polygon is already defined"):(t.Polygon=t.util.createClass(t.Polyline,{type:"polygon",_render:function(e){this.commonRender(e)&&(e.closePath(),this._renderPaintInOrder(e))},_renderDashedStroke:function(e){this.callSuper("_renderDashedStroke",e),e.closePath()}}),t.Polygon.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(),t.Polygon.fromElement=t.Polyline.fromElementGenerator("Polygon"),t.Polygon.fromObject=function(e,n){return t.Object._fromObject("Polygon",e,n,"points")})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.array.min,i=t.util.array.max,r=t.util.object.extend,o=Object.prototype.toString,a=t.util.toFixed;t.Path?t.warn("fabric.Path is already defined"):(t.Path=t.util.createClass(t.Object,{type:"path",path:null,cacheProperties:t.Object.prototype.cacheProperties.concat("path","fillRule"),stateProperties:t.Object.prototype.stateProperties.concat("path"),initialize:function(e,n){n=n||{},this.callSuper("initialize",n),e||(e=[]);var i="[object Array]"===o.call(e);this.path=i?t.util.makePathSimpler(e):t.util.makePathSimpler(t.util.parsePath(e)),this.path&&t.Polyline.prototype._setPositionDimensions.call(this,n)},_renderPathCommands:function(e){var t,n=0,i=0,r=0,o=0,a=0,s=0,u=-this.pathOffset.x,l=-this.pathOffset.y;e.beginPath();for(var c=0,d=this.path.length;c<d;++c)switch((t=this.path[c])[0]){case"L":r=t[1],o=t[2],e.lineTo(r+u,o+l);break;case"M":n=r=t[1],i=o=t[2],e.moveTo(r+u,o+l);break;case"C":r=t[5],o=t[6],a=t[3],s=t[4],e.bezierCurveTo(t[1]+u,t[2]+l,a+u,s+l,r+u,o+l);break;case"Q":e.quadraticCurveTo(t[1]+u,t[2]+l,t[3]+u,t[4]+l),r=t[3],o=t[4],a=t[1],s=t[2];break;case"z":case"Z":r=n,o=i,e.closePath()}},_render:function(e){this._renderPathCommands(e),this._renderPaintInOrder(e)},toString:function(){return"#<fabric.Path ("+this.complexity()+'): { "top": '+this.top+', "left": '+this.left+" }>"},toObject:function(e){return r(this.callSuper("toObject",e),{path:this.path.map((function(e){return e.slice()}))})},toDatalessObject:function(e){var t=this.toObject(["sourcePath"].concat(e));return t.sourcePath&&delete t.path,t},_toSVG:function(){return["<path ","COMMON_PARTS",'d="',this.path.map((function(e){return e.join(" ")})).join(" "),'" stroke-linecap="round" ',"/>\n"]},_getOffsetTransform:function(){var e=t.Object.NUM_FRACTION_DIGITS;return" translate("+a(-this.pathOffset.x,e)+", "+a(-this.pathOffset.y,e)+")"},toClipPathSVG:function(e){var t=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},toSVG:function(e){var t=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var e,r,o=[],a=[],s=0,u=0,l=0,c=0,d=0,h=this.path.length;d<h;++d){switch((e=this.path[d])[0]){case"L":l=e[1],c=e[2],r=[];break;case"M":s=l=e[1],u=c=e[2],r=[];break;case"C":r=t.util.getBoundsOfCurve(l,c,e[1],e[2],e[3],e[4],e[5],e[6]),l=e[5],c=e[6];break;case"Q":r=t.util.getBoundsOfCurve(l,c,e[1],e[2],e[1],e[2],e[3],e[4]),l=e[3],c=e[4];break;case"z":case"Z":l=s,c=u}r.forEach((function(e){o.push(e.x),a.push(e.y)})),o.push(l),a.push(c)}var f=n(o)||0,p=n(a)||0;return{left:f,top:p,width:(i(o)||0)-f,height:(i(a)||0)-p}}}),t.Path.fromObject=function(e,n){if("string"===typeof e.sourcePath){var i=e.sourcePath;t.loadSVGFromURL(i,(function(t){var i=t[0];i.setOptions(e),n&&n(i)}))}else t.Object._fromObject("Path",e,n,"path")},t.Path.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(["d"]),t.Path.fromElement=function(e,n,i){var o=t.parseAttributes(e,t.Path.ATTRIBUTE_NAMES);o.fromSVG=!0,n(new t.Path(o.d,r(o,i)))})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.array.min,i=t.util.array.max;t.Group||(t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",strokeWidth:0,subTargetCheck:!1,cacheProperties:[],useSetOnGroup:!1,initialize:function(e,t,n){t=t||{},this._objects=[],n&&this.callSuper("initialize",t),this._objects=e||[];for(var i=this._objects.length;i--;)this._objects[i].group=this;if(n)this._updateObjectsACoords();else{var r=t&&t.centerPoint;void 0!==t.originX&&(this.originX=t.originX),void 0!==t.originY&&(this.originY=t.originY),r||this._calcBounds(),this._updateObjectsCoords(r),delete t.centerPoint,this.callSuper("initialize",t)}this.setCoords()},_updateObjectsACoords:function(){for(var e=this._objects.length;e--;)this._objects[e].setCoords(true)},_updateObjectsCoords:function(e){e=e||this.getCenterPoint();for(var t=this._objects.length;t--;)this._updateObjectCoords(this._objects[t],e)},_updateObjectCoords:function(e,t){var n=e.left,i=e.top;e.set({left:n-t.x,top:i-t.y}),e.group=this,e.setCoords(!0)},toString:function(){return"#<fabric.Group: ("+this.complexity()+")>"},addWithUpdate:function(e){return this._restoreObjectsState(),t.util.resetObjectTransform(this),e&&(this._objects.push(e),e.group=this,e._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},removeWithUpdate:function(e){return this._restoreObjectsState(),t.util.resetObjectTransform(this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(e){this.dirty=!0,e.group=this,e._set("canvas",this.canvas)},_onObjectRemoved:function(e){this.dirty=!0,delete e.group},_set:function(e,n){var i=this._objects.length;if(this.useSetOnGroup)for(;i--;)this._objects[i].setOnGroup(e,n);if("canvas"===e)for(;i--;)this._objects[i]._set(e,n);t.Object.prototype._set.call(this,e,n)},toObject:function(e){var n=this.includeDefaultValues,i=this._objects.map((function(t){var i=t.includeDefaultValues;t.includeDefaultValues=n;var r=t.toObject(e);return t.includeDefaultValues=i,r})),r=t.Object.prototype.toObject.call(this,e);return r.objects=i,r},toDatalessObject:function(e){var n,i=this.sourcePath;if(i)n=i;else{var r=this.includeDefaultValues;n=this._objects.map((function(t){var n=t.includeDefaultValues;t.includeDefaultValues=r;var i=t.toDatalessObject(e);return t.includeDefaultValues=n,i}))}var o=t.Object.prototype.toDatalessObject.call(this,e);return o.objects=n,o},render:function(e){this._transformDone=!0,this.callSuper("render",e),this._transformDone=!1},shouldCache:function(){var e=t.Object.prototype.shouldCache.call(this);if(e)for(var n=0,i=this._objects.length;n<i;n++)if(this._objects[n].willDrawShadow())return this.ownCaching=!1,!1;return e},willDrawShadow:function(){if(t.Object.prototype.willDrawShadow.call(this))return!0;for(var e=0,n=this._objects.length;e<n;e++)if(this._objects[e].willDrawShadow())return!0;return!1},isOnACache:function(){return this.ownCaching||this.group&&this.group.isOnACache()},drawObject:function(e){for(var t=0,n=this._objects.length;t<n;t++)this._objects[t].render(e);this._drawClipPath(e)},isCacheDirty:function(e){if(this.callSuper("isCacheDirty",e))return!0;if(!this.statefullCache)return!1;for(var t=0,n=this._objects.length;t<n;t++)if(this._objects[t].isCacheDirty(!0)){if(this._cacheCanvas){var i=this.cacheWidth/this.zoomX,r=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-i/2,-r/2,i,r)}return!0}return!1},_restoreObjectsState:function(){return this._objects.forEach(this._restoreObjectState,this),this},realizeTransform:function(e){var n=e.calcTransformMatrix(),i=t.util.qrDecompose(n),r=new t.Point(i.translateX,i.translateY);return e.flipX=!1,e.flipY=!1,e.set("scaleX",i.scaleX),e.set("scaleY",i.scaleY),e.skewX=i.skewX,e.skewY=i.skewY,e.angle=i.angle,e.setPositionByOrigin(r,"center","center"),e},_restoreObjectState:function(e){return this.realizeTransform(e),delete e.group,e.setCoords(),this},destroy:function(){return this._objects.forEach((function(e){e.set("dirty",!0)})),this._restoreObjectsState()},toActiveSelection:function(){if(this.canvas){var e=this._objects,n=this.canvas;this._objects=[];var i=this.toObject();delete i.objects;var r=new t.ActiveSelection([]);return r.set(i),r.type="activeSelection",n.remove(this),e.forEach((function(e){e.group=r,e.dirty=!0,n.add(e)})),r.canvas=n,r._objects=e,n._activeObject=r,r.setCoords(),r}},ungroupOnCanvas:function(){return this._restoreObjectsState()},setObjectsCoords:function(){return this.forEachObject((function(e){e.setCoords(true)})),this},_calcBounds:function(e){for(var t,n,i,r=[],o=[],a=["tr","br","bl","tl"],s=0,u=this._objects.length,l=a.length;s<u;++s)for((t=this._objects[s]).aCoords=t.calcACoords(),i=0;i<l;i++)n=a[i],r.push(t.aCoords[n].x),o.push(t.aCoords[n].y);this._getBounds(r,o,e)},_getBounds:function(e,r,o){var a=new t.Point(n(e),n(r)),s=new t.Point(i(e),i(r)),u=a.y||0,l=a.x||0,c=s.x-a.x||0,d=s.y-a.y||0;this.width=c,this.height=d,o||this.setPositionByOrigin({x:l,y:u},"left","top")},_toSVG:function(e){for(var t=["<g ","COMMON_PARTS"," >\n"],n=0,i=this._objects.length;n<i;n++)t.push("\t\t",this._objects[n].toSVG(e));return t.push("</g>\n"),t},getSvgStyles:function(){var e="undefined"!==typeof this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",t=this.visible?"":" visibility: hidden;";return[e,this.getSvgFilter(),t].join("")},toClipPathSVG:function(e){for(var t=[],n=0,i=this._objects.length;n<i;n++)t.push("\t",this._objects[n].toClipPathSVG(e));return this._createBaseClipPathSVGMarkup(t,{reviver:e})}}),t.Group.fromObject=function(e,n){var i=e.objects,r=t.util.object.clone(e,!0);delete r.objects,"string"!==typeof i?t.util.enlivenObjects(i,(function(i){t.util.enlivenObjects([e.clipPath],(function(r){var o=t.util.object.clone(e,!0);o.clipPath=r[0],delete o.objects,n&&n(new t.Group(i,o,!0))}))})):t.loadSVGFromURL(i,(function(o){var a=t.util.groupSVGElements(o,e,i);a.set(r),n&&n(a)}))})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={});t.ActiveSelection||(t.ActiveSelection=t.util.createClass(t.Group,{type:"activeSelection",initialize:function(e,n){n=n||{},this._objects=e||[];for(var i=this._objects.length;i--;)this._objects[i].group=this;n.originX&&(this.originX=n.originX),n.originY&&(this.originY=n.originY),this._calcBounds(),this._updateObjectsCoords(),t.Object.prototype.initialize.call(this,n),this.setCoords()},toGroup:function(){var e=this._objects.concat();this._objects=[];var n=t.Object.prototype.toObject.call(this),i=new t.Group([]);if(delete n.type,i.set(n),e.forEach((function(e){e.canvas.remove(e),e.group=i})),i._objects=e,!this.canvas)return i;var r=this.canvas;return r.add(i),r._activeObject=i,i.setCoords(),i},onDeselect:function(){return this.destroy(),!1},toString:function(){return"#<fabric.ActiveSelection: ("+this.complexity()+")>"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(e,t,n){e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",e,t),"undefined"===typeof(n=n||{}).hasControls&&(n.hasControls=!1),n.forActiveSelection=!0;for(var i=0,r=this._objects.length;i<r;i++)this._objects[i]._renderControls(e,n);e.restore()}}),t.ActiveSelection.fromObject=function(e,n){t.util.enlivenObjects(e.objects,(function(i){delete e.objects,n&&n(new t.ActiveSelection(i,e,!0))}))})}(t),function(e){"use strict";var t=r.util.object.extend;e.fabric||(e.fabric={}),e.fabric.Image?r.warn("fabric.Image is already defined."):(r.Image=r.util.createClass(r.Object,{type:"image",strokeWidth:0,srcFromAttribute:!1,_lastScaleX:1,_lastScaleY:1,_filterScalingX:1,_filterScalingY:1,minimumScaleTrigger:.5,stateProperties:r.Object.prototype.stateProperties.concat("cropX","cropY"),cacheKey:"",cropX:0,cropY:0,imageSmoothing:!0,initialize:function(e,t){t||(t={}),this.filters=[],this.cacheKey="texture"+r.Object.__uid++,this.callSuper("initialize",t),this._initElement(e,t)},getElement:function(){return this._element||{}},setElement:function(e,t){return this.removeTexture(this.cacheKey),this.removeTexture(this.cacheKey+"_filtered"),this._element=e,this._originalElement=e,this._initConfig(t),0!==this.filters.length&&this.applyFilters(),this.resizeFilter&&this.applyResizeFilters(),this},removeTexture:function(e){var t=r.filterBackend;t&&t.evictCachesForKey&&t.evictCachesForKey(e)},dispose:function(){this.removeTexture(this.cacheKey),this.removeTexture(this.cacheKey+"_filtered"),this._cacheContext=void 0,["_originalElement","_element","_filteredEl","_cacheCanvas"].forEach(function(e){r.util.cleanUpJsdomNode(this[e]),this[e]=void 0}.bind(this))},getCrossOrigin:function(){return this._originalElement&&(this._originalElement.crossOrigin||null)},getOriginalSize:function(){var e=this.getElement();return{width:e.naturalWidth||e.width,height:e.naturalHeight||e.height}},_stroke:function(e){if(this.stroke&&0!==this.strokeWidth){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,-n),e.lineTo(t,-n),e.lineTo(t,n),e.lineTo(-t,n),e.lineTo(-t,-n),e.closePath()}},_renderDashedStroke:function(e){var t=-this.width/2,n=-this.height/2,i=this.width,o=this.height;e.save(),this._setStrokeStyles(e,this),e.beginPath(),r.util.drawDashedLine(e,t,n,t+i,n,this.strokeDashArray),r.util.drawDashedLine(e,t+i,n,t+i,n+o,this.strokeDashArray),r.util.drawDashedLine(e,t+i,n+o,t,n+o,this.strokeDashArray),r.util.drawDashedLine(e,t,n+o,t,n,this.strokeDashArray),e.closePath(),e.restore()},toObject:function(e){var n=[];this.filters.forEach((function(e){e&&n.push(e.toObject())}));var i=t(this.callSuper("toObject",["cropX","cropY"].concat(e)),{src:this.getSrc(),crossOrigin:this.getCrossOrigin(),filters:n});return this.resizeFilter&&(i.resizeFilter=this.resizeFilter.toObject()),i},hasCrop:function(){return this.cropX||this.cropY||this.width<this._element.width||this.height<this._element.height},_toSVG:function(){var e,t=[],n=[],i=this._element,o=-this.width/2,a=-this.height/2,s="",u="";if(!i)return[];if(this.hasCrop()){var l=r.Object.__uid++;t.push('<clipPath id="imageCrop_'+l+'">\n','\t<rect x="'+o+'" y="'+a+'" width="'+this.width+'" height="'+this.height+'" />\n',"</clipPath>\n"),s=' clip-path="url(#imageCrop_'+l+')" '}if(this.imageSmoothing||(u='" image-rendering="optimizeSpeed'),n.push("\t<image ","COMMON_PARTS",'xlink:href="',this.getSvgSrc(!0),'" x="',o-this.cropX,'" y="',a-this.cropY,'" width="',i.width||i.naturalWidth,'" height="',i.height||i.height,u,'"',s,"></image>\n"),this.stroke||this.strokeDashArray){var c=this.fill;this.fill=null,e=["\t<rect ",'x="',o,'" y="',a,'" width="',this.width,'" height="',this.height,'" style="',this.getSvgStyles(),'"/>\n'],this.fill=c}return t="fill"!==this.paintFirst?t.concat(e,n):t.concat(n,e)},getSrc:function(e){var t=e?this._element:this._originalElement;return t?t.toDataURL?t.toDataURL():this.srcFromAttribute?t.getAttribute("src"):t.src:this.src||""},setSrc:function(e,t,n){return r.util.loadImage(e,(function(e,i){this.setElement(e,n),this._setWidthHeight(),t&&t(this,i)}),this,n&&n.crossOrigin),this},toString:function(){return'#<fabric.Image: { src: "'+this.getSrc()+'" }>'},applyResizeFilters:function(){var e=this.resizeFilter,t=this.minimumScaleTrigger,n=this.getTotalObjectScaling(),i=n.scaleX,o=n.scaleY,a=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!e||i>t&&o>t)return this._element=a,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=i,void(this._lastScaleY=o);r.filterBackend||(r.filterBackend=r.initFilterBackend());var s=r.util.createCanvasElement(),u=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,l=a.width,c=a.height;s.width=l,s.height=c,this._element=s,this._lastScaleX=e.scaleX=i,this._lastScaleY=e.scaleY=o,r.filterBackend.applyFilters([e],a,l,c,this._element,u),this._filterScalingX=s.width/this._originalElement.width,this._filterScalingY=s.height/this._originalElement.height},applyFilters:function(e){if(e=(e=e||this.filters||[]).filter((function(e){return e&&!e.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===e.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var t=this._originalElement,n=t.naturalWidth||t.width,i=t.naturalHeight||t.height;if(this._element===this._originalElement){var o=r.util.createCanvasElement();o.width=n,o.height=i,this._element=o,this._filteredEl=o}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,n,i),this._lastScaleX=1,this._lastScaleY=1;return r.filterBackend||(r.filterBackend=r.initFilterBackend()),r.filterBackend.applyFilters(e,this._originalElement,n,i,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(e){r.util.setImageSmoothing(e,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(e),this._renderPaintInOrder(e)},drawCacheOnCanvas:function(e){r.util.setImageSmoothing(e,this.imageSmoothing),r.Object.prototype.drawCacheOnCanvas.call(this,e)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(e){var t=this._element;if(t){var n=this._filterScalingX,i=this._filterScalingY,r=this.width,o=this.height,a=Math.min,s=Math.max,u=s(this.cropX,0),l=s(this.cropY,0),c=t.naturalWidth||t.width,d=t.naturalHeight||t.height,h=u*n,f=l*i,p=a(r*n,c-h),g=a(o*i,d-f),v=-r/2,m=-o/2,_=a(r,c/n-u),y=a(o,d/n-l);t&&e.drawImage(t,h,f,p,g,v,m,_,y)}},_needsResize:function(){var e=this.getTotalObjectScaling();return e.scaleX!==this._lastScaleX||e.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(e,t){this.setElement(r.util.getById(e),t),r.util.addClass(this.getElement(),r.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e,t){e&&e.length?r.util.enlivenObjects(e,(function(e){t&&t(e)}),"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){e||(e={});var t=this.getElement();this.width=e.width||t.naturalWidth||t.width||0,this.height=e.height||t.naturalHeight||t.height||0},parsePreserveAspectRatioAttribute:function(){var e,t=r.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),n=this._element.width,i=this._element.height,o=1,a=1,s=0,u=0,l=0,c=0,d=this.width,h=this.height,f={width:d,height:h};return!t||"none"===t.alignX&&"none"===t.alignY?(o=d/n,a=h/i):("meet"===t.meetOrSlice&&(e=(d-n*(o=a=r.util.findScaleToFit(this._element,f)))/2,"Min"===t.alignX&&(s=-e),"Max"===t.alignX&&(s=e),e=(h-i*a)/2,"Min"===t.alignY&&(u=-e),"Max"===t.alignY&&(u=e)),"slice"===t.meetOrSlice&&(e=n-d/(o=a=r.util.findScaleToCover(this._element,f)),"Mid"===t.alignX&&(l=e/2),"Max"===t.alignX&&(l=e),e=i-h/a,"Mid"===t.alignY&&(c=e/2),"Max"===t.alignY&&(c=e),n=d/o,i=h/a)),{width:n,height:i,scaleX:o,scaleY:a,offsetLeft:s,offsetTop:u,cropX:l,cropY:c}}}),r.Image.CSS_CANVAS="canvas-img",r.Image.prototype.getSvgSrc=r.Image.prototype.getSrc,r.Image.fromObject=function(e,t){var n=r.util.object.clone(e);r.util.loadImage(n.src,(function(e,i){i?t&&t(null,!0):r.Image.prototype._initFilters.call(n,n.filters,(function(i){n.filters=i||[],r.Image.prototype._initFilters.call(n,[n.resizeFilter],(function(i){n.resizeFilter=i[0],r.util.enlivenObjects([n.clipPath],(function(i){n.clipPath=i[0];var o=new r.Image(e,n);t(o,!1)}))}))}))}),null,n.crossOrigin)},r.Image.fromURL=function(e,t,n){r.util.loadImage(e,(function(e,i){t&&t(new r.Image(e,n),i)}),null,n&&n.crossOrigin)},r.Image.ATTRIBUTE_NAMES=r.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),r.Image.fromElement=function(e,n,i){var o=r.parseAttributes(e,r.Image.ATTRIBUTE_NAMES);r.Image.fromURL(o["xlink:href"],n,t(i?r.util.object.clone(i):{},o))})}(t),r.util.object.extend(r.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.angle%360;return e>0?90*Math.round((e-1)/90):90*Math.round(e/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten()),this},fxStraighten:function(e){var t=function(){},n=(e=e||{}).onComplete||t,i=e.onChange||t,o=this;return r.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){o.rotate(e),i()},onComplete:function(){o.setCoords(),n()}}),this}}),r.util.object.extend(r.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.requestRenderAllBound}),this}}),function(){"use strict";function e(e,t){var n="precision "+t+" float;\nvoid main(){}",i=e.createShader(e.FRAGMENT_SHADER);return e.shaderSource(i,n),e.compileShader(i),!!e.getShaderParameter(i,e.COMPILE_STATUS)}function t(e){e&&e.tileSize&&(this.tileSize=e.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}r.isWebglSupported=function(t){if(r.isLikelyNode)return!1;t=t||r.WebglFilterBackend.prototype.tileSize;var n=document.createElement("canvas"),i=n.getContext("webgl")||n.getContext("experimental-webgl"),o=!1;if(i){r.maxTextureSize=i.getParameter(i.MAX_TEXTURE_SIZE),o=r.maxTextureSize>=t;for(var a=["highp","mediump","lowp"],s=0;s<3;s++)if(e(i,a[s])){r.webGlPrecision=a[s];break}}return this.isSupported=o,o},r.WebglFilterBackend=t,t.prototype={tileSize:2048,resources:{},setupGLContext:function(e,t){this.dispose(),this.createWebGLCanvas(e,t),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(e,t)},chooseFastestCopyGLTo2DMethod:function(e,t){var n,i="undefined"!==typeof window.performance;try{new ImageData(1,1),n=!0}catch(p){n=!1}var o="undefined"!==typeof ArrayBuffer,u="undefined"!==typeof Uint8ClampedArray;if(i&&n&&o&&u){var l=r.util.createCanvasElement(),c=new ArrayBuffer(e*t*4);if(r.forceGLPutImageData)return this.imageBuffer=c,void(this.copyGLTo2D=s);var d,h,f={imageBuffer:c,destinationWidth:e,destinationHeight:t,targetCanvas:l};l.width=e,l.height=t,d=window.performance.now(),a.call(f,this.gl,f),h=window.performance.now()-d,d=window.performance.now(),s.call(f,this.gl,f),h>window.performance.now()-d?(this.imageBuffer=c,this.copyGLTo2D=s):this.copyGLTo2D=a}},createWebGLCanvas:function(e,t){var n=r.util.createCanvasElement();n.width=e,n.height=t;var i={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},o=n.getContext("webgl",i);o||(o=n.getContext("experimental-webgl",i)),o&&(o.clearColor(0,0,0,0),this.canvas=n,this.gl=o)},applyFilters:function(e,t,n,i,r,o){var a,s=this.gl;o&&(a=this.getCachedTexture(o,t));var u={originalWidth:t.width||t.originalWidth,originalHeight:t.height||t.originalHeight,sourceWidth:n,sourceHeight:i,destinationWidth:n,destinationHeight:i,context:s,sourceTexture:this.createTexture(s,n,i,!a&&t),targetTexture:this.createTexture(s,n,i),originalTexture:a||this.createTexture(s,n,i,!a&&t),passes:e.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:r},l=s.createFramebuffer();return s.bindFramebuffer(s.FRAMEBUFFER,l),e.forEach((function(e){e&&e.applyTo(u)})),function(e){var t=e.targetCanvas,n=t.width,i=t.height,r=e.destinationWidth,o=e.destinationHeight;n===r&&i===o||(t.width=r,t.height=o)}(u),this.copyGLTo2D(s,u),s.bindTexture(s.TEXTURE_2D,null),s.deleteTexture(u.sourceTexture),s.deleteTexture(u.targetTexture),s.deleteFramebuffer(l),r.getContext("2d").setTransform(1,0,0,1,0,0),u},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(e,t,n,i){var r=e.createTexture();return e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),i?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,i):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,t,n,0,e.RGBA,e.UNSIGNED_BYTE,null),r},getCachedTexture:function(e,t){if(this.textureCache[e])return this.textureCache[e];var n=this.createTexture(this.gl,t.width,t.height,t);return this.textureCache[e]=n,n},evictCachesForKey:function(e){this.textureCache[e]&&(this.gl.deleteTexture(this.textureCache[e]),delete this.textureCache[e])},copyGLTo2D:a,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var e=this.gl,t={renderer:"",vendor:""};if(!e)return t;var n=e.getExtension("WEBGL_debug_renderer_info");if(n){var i=e.getParameter(n.UNMASKED_RENDERER_WEBGL),r=e.getParameter(n.UNMASKED_VENDOR_WEBGL);i&&(t.renderer=i.toLowerCase()),r&&(t.vendor=r.toLowerCase())}return this.gpuInfo=t,t}}}(),function(){"use strict";var e=function(){};function t(){}r.Canvas2dFilterBackend=t,t.prototype={evictCachesForKey:e,dispose:e,clearWebGLCaches:e,resources:{},applyFilters:function(e,t,n,i,r){var o=r.getContext("2d");o.drawImage(t,0,0,n,i);var a={sourceWidth:n,sourceHeight:i,imageData:o.getImageData(0,0,n,i),originalEl:t,originalImageData:o.getImageData(0,0,n,i),canvasEl:r,ctx:o,filterBackend:this};return e.forEach((function(e){e.applyTo(a)})),a.imageData.width===n&&a.imageData.height===i||(r.width=a.imageData.width,r.height=a.imageData.height),o.putImageData(a.imageData,0,0),a}}}(),r.Image=r.Image||{},r.Image.filters=r.Image.filters||{},r.Image.filters.BaseFilter=r.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(e){e&&this.setOptions(e)},setOptions:function(e){for(var t in e)this[t]=e[t]},createProgram:function(e,t,n){t=t||this.fragmentSource,n=n||this.vertexSource,"highp"!==r.webGlPrecision&&(t=t.replace(/precision highp float/g,"precision "+r.webGlPrecision+" float"));var i=e.createShader(e.VERTEX_SHADER);if(e.shaderSource(i,n),e.compileShader(i),!e.getShaderParameter(i,e.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+e.getShaderInfoLog(i));var o=e.createShader(e.FRAGMENT_SHADER);if(e.shaderSource(o,t),e.compileShader(o),!e.getShaderParameter(o,e.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+e.getShaderInfoLog(o));var a=e.createProgram();if(e.attachShader(a,i),e.attachShader(a,o),e.linkProgram(a),!e.getProgramParameter(a,e.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+e.getProgramInfoLog(a));var s=this.getAttributeLocations(e,a),u=this.getUniformLocations(e,a)||{};return u.uStepW=e.getUniformLocation(a,"uStepW"),u.uStepH=e.getUniformLocation(a,"uStepH"),{program:a,attributeLocations:s,uniformLocations:u}},getAttributeLocations:function(e,t){return{aPosition:e.getAttribLocation(t,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(e,t,n){var i=t.aPosition,r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.enableVertexAttribArray(i),e.vertexAttribPointer(i,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,n,e.STATIC_DRAW)},_setupFrameBuffer:function(e){var t,n,i=e.context;e.passes>1?(t=e.destinationWidth,n=e.destinationHeight,e.sourceWidth===t&&e.sourceHeight===n||(i.deleteTexture(e.targetTexture),e.targetTexture=e.filterBackend.createTexture(i,t,n)),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,e.targetTexture,0)):(i.bindFramebuffer(i.FRAMEBUFFER,null),i.finish())},_swapTextures:function(e){e.passes--,e.pass++;var t=e.targetTexture;e.targetTexture=e.sourceTexture,e.sourceTexture=t},isNeutralState:function(){var e=this.mainParameter,t=r.Image.filters[this.type].prototype;if(e){if(Array.isArray(t[e])){for(var n=t[e].length;n--;)if(this[e][n]!==t[e][n])return!1;return!0}return t[e]===this[e]}return!1},applyTo:function(e){e.webgl?(this._setupFrameBuffer(e),this.applyToWebGL(e),this._swapTextures(e)):this.applyTo2d(e)},retrieveShader:function(e){return e.programCache.hasOwnProperty(this.type)||(e.programCache[this.type]=this.createProgram(e.context)),e.programCache[this.type]},applyToWebGL:function(e){var t=e.context,n=this.retrieveShader(e);0===e.pass&&e.originalTexture?t.bindTexture(t.TEXTURE_2D,e.originalTexture):t.bindTexture(t.TEXTURE_2D,e.sourceTexture),t.useProgram(n.program),this.sendAttributeData(t,n.attributeLocations,e.aPosition),t.uniform1f(n.uniformLocations.uStepW,1/e.sourceWidth),t.uniform1f(n.uniformLocations.uStepH,1/e.sourceHeight),this.sendUniformData(t,n.uniformLocations),t.viewport(0,0,e.destinationWidth,e.destinationHeight),t.drawArrays(t.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(e,t,n){e.activeTexture(n),e.bindTexture(e.TEXTURE_2D,t),e.activeTexture(e.TEXTURE0)},unbindAdditionalTexture:function(e,t){e.activeTexture(t),e.bindTexture(e.TEXTURE_2D,null),e.activeTexture(e.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(e){this[this.mainParameter]=e},sendUniformData:function(){},createHelpLayer:function(e){if(!e.helpLayer){var t=document.createElement("canvas");t.width=e.sourceWidth,t.height=e.sourceHeight,e.helpLayer=t}},toObject:function(){var e={type:this.type},t=this.mainParameter;return t&&(e[t]=this[t]),e},toJSON:function(){return this.toObject()}}),r.Image.filters.BaseFilter.fromObject=function(e,t){var n=new r.Image.filters[e.type](e);return t&&t(n),n},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass;n.ColorMatrix=i(n.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(e){this.callSuper("initialize",e),this.matrix=this.matrix.slice(0)},applyTo2d:function(e){var t,n,i,r,o,a=e.imageData.data,s=a.length,u=this.matrix,l=this.colorsOnly;for(o=0;o<s;o+=4)t=a[o],n=a[o+1],i=a[o+2],l?(a[o]=t*u[0]+n*u[1]+i*u[2]+255*u[4],a[o+1]=t*u[5]+n*u[6]+i*u[7]+255*u[9],a[o+2]=t*u[10]+n*u[11]+i*u[12]+255*u[14]):(r=a[o+3],a[o]=t*u[0]+n*u[1]+i*u[2]+r*u[3]+255*u[4],a[o+1]=t*u[5]+n*u[6]+i*u[7]+r*u[8]+255*u[9],a[o+2]=t*u[10]+n*u[11]+i*u[12]+r*u[13]+255*u[14],a[o+3]=t*u[15]+n*u[16]+i*u[17]+r*u[18]+255*u[19])},getUniformLocations:function(e,t){return{uColorMatrix:e.getUniformLocation(t,"uColorMatrix"),uConstants:e.getUniformLocation(t,"uConstants")}},sendUniformData:function(e,t){var n=this.matrix,i=[n[0],n[1],n[2],n[3],n[5],n[6],n[7],n[8],n[10],n[11],n[12],n[13],n[15],n[16],n[17],n[18]],r=[n[4],n[9],n[14],n[19]];e.uniformMatrix4fv(t.uColorMatrix,!1,i),e.uniform4fv(t.uConstants,r)}}),t.Image.filters.ColorMatrix.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass;n.Brightness=i(n.BaseFilter,{type:"Brightness",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uBrightness;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor.rgb += uBrightness;\ngl_FragColor = color;\n}",brightness:0,mainParameter:"brightness",applyTo2d:function(e){if(0!==this.brightness){var t,n=e.imageData.data,i=n.length,r=Math.round(255*this.brightness);for(t=0;t<i;t+=4)n[t]=n[t]+r,n[t+1]=n[t+1]+r,n[t+2]=n[t+2]+r}},getUniformLocations:function(e,t){return{uBrightness:e.getUniformLocation(t,"uBrightness")}},sendUniformData:function(e,t){e.uniform1f(t.uBrightness,this.brightness)}}),t.Image.filters.Brightness.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,i=t.Image.filters,r=t.util.createClass;i.Convolute=r(i.BaseFilter,{type:"Convolute",opaque:!1,matrix:[0,0,0,0,1,0,0,0,0],fragmentSource:{Convolute_3_1:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[9];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 3.0; h+=1.0) {\nfor (float w = 0.0; w < 3.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\n}\n}\ngl_FragColor = color;\n}",Convolute_3_0:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[9];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 3.0; h+=1.0) {\nfor (float w = 0.0; w < 3.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",Convolute_5_1:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[25];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 5.0; h+=1.0) {\nfor (float w = 0.0; w < 5.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\n}\n}\ngl_FragColor = color;\n}",Convolute_5_0:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[25];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 5.0; h+=1.0) {\nfor (float w = 0.0; w < 5.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",Convolute_7_1:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[49];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 7.0; h+=1.0) {\nfor (float w = 0.0; w < 7.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\n}\n}\ngl_FragColor = color;\n}",Convolute_7_0:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[49];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 7.0; h+=1.0) {\nfor (float w = 0.0; w < 7.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",Convolute_9_1:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[81];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 9.0; h+=1.0) {\nfor (float w = 0.0; w < 9.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\n}\n}\ngl_FragColor = color;\n}",Convolute_9_0:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[81];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 9.0; h+=1.0) {\nfor (float w = 0.0; w < 9.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}"},retrieveShader:function(e){var t=Math.sqrt(this.matrix.length),n=this.type+"_"+t+"_"+(this.opaque?1:0),i=this.fragmentSource[n];return e.programCache.hasOwnProperty(n)||(e.programCache[n]=this.createProgram(e.context,i)),e.programCache[n]},applyTo2d:function(e){var t,n,i,r,o,a,s,u,l,c,d,h,f,p=e.imageData,g=p.data,v=this.matrix,m=Math.round(Math.sqrt(v.length)),_=Math.floor(m/2),y=p.width,b=p.height,w=e.ctx.createImageData(y,b),C=w.data,k=this.opaque?1:0;for(d=0;d<b;d++)for(c=0;c<y;c++){for(o=4*(d*y+c),t=0,n=0,i=0,r=0,f=0;f<m;f++)for(h=0;h<m;h++)a=c+h-_,(s=d+f-_)<0||s>=b||a<0||a>=y||(u=4*(s*y+a),l=v[f*m+h],t+=g[u]*l,n+=g[u+1]*l,i+=g[u+2]*l,k||(r+=g[u+3]*l));C[o]=t,C[o+1]=n,C[o+2]=i,C[o+3]=k?g[o+3]:r}e.imageData=w},getUniformLocations:function(e,t){return{uMatrix:e.getUniformLocation(t,"uMatrix"),uOpaque:e.getUniformLocation(t,"uOpaque"),uHalfSize:e.getUniformLocation(t,"uHalfSize"),uSize:e.getUniformLocation(t,"uSize")}},sendUniformData:function(e,t){e.uniform1fv(t.uMatrix,this.matrix)},toObject:function(){return n(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass;n.Grayscale=i(n.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(e){var t,n,i=e.imageData.data,r=i.length,o=this.mode;for(t=0;t<r;t+=4)"average"===o?n=(i[t]+i[t+1]+i[t+2])/3:"lightness"===o?n=(Math.min(i[t],i[t+1],i[t+2])+Math.max(i[t],i[t+1],i[t+2]))/2:"luminosity"===o&&(n=.21*i[t]+.72*i[t+1]+.07*i[t+2]),i[t]=n,i[t+1]=n,i[t+2]=n},retrieveShader:function(e){var t=this.type+"_"+this.mode;if(!e.programCache.hasOwnProperty(t)){var n=this.fragmentSource[this.mode];e.programCache[t]=this.createProgram(e.context,n)}return e.programCache[t]},getUniformLocations:function(e,t){return{uMode:e.getUniformLocation(t,"uMode")}},sendUniformData:function(e,t){e.uniform1i(t.uMode,1)},isNeutralState:function(){return!1}}),t.Image.filters.Grayscale.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass;n.Invert=i(n.BaseFilter,{type:"Invert",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uInvert;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nif (uInvert == 1) {\ngl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\n} else {\ngl_FragColor = color;\n}\n}",invert:!0,mainParameter:"invert",applyTo2d:function(e){var t,n=e.imageData.data,i=n.length;for(t=0;t<i;t+=4)n[t]=255-n[t],n[t+1]=255-n[t+1],n[t+2]=255-n[t+2]},isNeutralState:function(){return!this.invert},getUniformLocations:function(e,t){return{uInvert:e.getUniformLocation(t,"uInvert")}},sendUniformData:function(e,t){e.uniform1i(t.uInvert,this.invert)}}),t.Image.filters.Invert.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,i=t.Image.filters,r=t.util.createClass;i.Noise=r(i.BaseFilter,{type:"Noise",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uStepH;\nuniform float uNoise;\nuniform float uSeed;\nvarying vec2 vTexCoord;\nfloat rand(vec2 co, float seed, float vScale) {\nreturn fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\n}\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\ngl_FragColor = color;\n}",mainParameter:"noise",noise:0,applyTo2d:function(e){if(0!==this.noise){var t,n,i=e.imageData.data,r=i.length,o=this.noise;for(t=0,r=i.length;t<r;t+=4)n=(.5-Math.random())*o,i[t]+=n,i[t+1]+=n,i[t+2]+=n}},getUniformLocations:function(e,t){return{uNoise:e.getUniformLocation(t,"uNoise"),uSeed:e.getUniformLocation(t,"uSeed")}},sendUniformData:function(e,t){e.uniform1f(t.uNoise,this.noise/255),e.uniform1f(t.uSeed,Math.random())},toObject:function(){return n(this.callSuper("toObject"),{noise:this.noise})}}),t.Image.filters.Noise.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass;n.Pixelate=i(n.BaseFilter,{type:"Pixelate",blocksize:4,mainParameter:"blocksize",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uBlocksize;\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nfloat blockW = uBlocksize * uStepW;\nfloat blockH = uBlocksize * uStepW;\nint posX = int(vTexCoord.x / blockW);\nint posY = int(vTexCoord.y / blockH);\nfloat fposX = float(posX);\nfloat fposY = float(posY);\nvec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\nvec4 color = texture2D(uTexture, squareCoords);\ngl_FragColor = color;\n}",applyTo2d:function(e){var t,n,i,r,o,a,s,u,l,c,d,h=e.imageData,f=h.data,p=h.height,g=h.width;for(n=0;n<p;n+=this.blocksize)for(i=0;i<g;i+=this.blocksize)for(r=f[t=4*n*g+4*i],o=f[t+1],a=f[t+2],s=f[t+3],c=Math.min(n+this.blocksize,p),d=Math.min(i+this.blocksize,g),u=n;u<c;u++)for(l=i;l<d;l++)f[t=4*u*g+4*l]=r,f[t+1]=o,f[t+2]=a,f[t+3]=s},isNeutralState:function(){return 1===this.blocksize},getUniformLocations:function(e,t){return{uBlocksize:e.getUniformLocation(t,"uBlocksize"),uStepW:e.getUniformLocation(t,"uStepW"),uStepH:e.getUniformLocation(t,"uStepH")}},sendUniformData:function(e,t){e.uniform1f(t.uBlocksize,this.blocksize)}}),t.Image.filters.Pixelate.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,i=t.Image.filters,r=t.util.createClass;i.RemoveColor=r(i.BaseFilter,{type:"RemoveColor",color:"#FFFFFF",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec4 uLow;\nuniform vec4 uHigh;\nvarying vec2 vTexCoord;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\nif(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\ngl_FragColor.a = 0.0;\n}\n}",distance:.02,useAlpha:!1,applyTo2d:function(e){var n,i,r,o,a=e.imageData.data,s=255*this.distance,u=new t.Color(this.color).getSource(),l=[u[0]-s,u[1]-s,u[2]-s],c=[u[0]+s,u[1]+s,u[2]+s];for(n=0;n<a.length;n+=4)i=a[n],r=a[n+1],o=a[n+2],i>l[0]&&r>l[1]&&o>l[2]&&i<c[0]&&r<c[1]&&o<c[2]&&(a[n+3]=0)},getUniformLocations:function(e,t){return{uLow:e.getUniformLocation(t,"uLow"),uHigh:e.getUniformLocation(t,"uHigh")}},sendUniformData:function(e,n){var i=new t.Color(this.color).getSource(),r=parseFloat(this.distance),o=[0+i[0]/255-r,0+i[1]/255-r,0+i[2]/255-r,1],a=[i[0]/255+r,i[1]/255+r,i[2]/255+r,1];e.uniform4fv(n.uLow,o),e.uniform4fv(n.uHigh,a)},toObject:function(){return n(this.callSuper("toObject"),{color:this.color,distance:this.distance})}}),t.Image.filters.RemoveColor.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass,r={Brownie:[.5997,.34553,-.27082,0,.186,-.0377,.86095,.15059,0,-.1449,.24113,-.07441,.44972,0,-.02965,0,0,0,1,0],Vintage:[.62793,.32021,-.03965,0,.03784,.02578,.64411,.03259,0,.02926,.0466,-.08512,.52416,0,.02023,0,0,0,1,0],Kodachrome:[1.12855,-.39673,-.03992,0,.24991,-.16404,1.08352,-.05498,0,.09698,-.16786,-.56034,1.60148,0,.13972,0,0,0,1,0],Technicolor:[1.91252,-.85453,-.09155,0,.04624,-.30878,1.76589,-.10601,0,-.27589,-.2311,-.75018,1.84759,0,.12137,0,0,0,1,0],Polaroid:[1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0],Sepia:[.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0],BlackWhite:[1.5,1.5,1.5,0,-1,1.5,1.5,1.5,0,-1,1.5,1.5,1.5,0,-1,0,0,0,1,0]};for(var o in r)n[o]=i(n.ColorMatrix,{type:o,matrix:r[o],mainParameter:!1,colorsOnly:!0}),t.Image.filters[o].fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric,n=t.Image.filters,i=t.util.createClass;n.BlendColor=i(n.BaseFilter,{type:"BlendColor",color:"#F95C63",mode:"multiply",alpha:1,fragmentSource:{multiply:"gl_FragColor.rgb *= uColor.rgb;\n",screen:"gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\n",add:"gl_FragColor.rgb += uColor.rgb;\n",diff:"gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\n",subtract:"gl_FragColor.rgb -= uColor.rgb;\n",lighten:"gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\n",darken:"gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\n",exclusion:"gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\n",overlay:"if (uColor.r < 0.5) {\ngl_FragColor.r *= 2.0 * uColor.r;\n} else {\ngl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\n}\nif (uColor.g < 0.5) {\ngl_FragColor.g *= 2.0 * uColor.g;\n} else {\ngl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\n}\nif (uColor.b < 0.5) {\ngl_FragColor.b *= 2.0 * uColor.b;\n} else {\ngl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\n}\n",tint:"gl_FragColor.rgb *= (1.0 - uColor.a);\ngl_FragColor.rgb += uColor.rgb;\n"},buildSource:function(e){return"precision highp float;\nuniform sampler2D uTexture;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ngl_FragColor = color;\nif (color.a > 0.0) {\n"+this.fragmentSource[e]+"}\n}"},retrieveShader:function(e){var t,n=this.type+"_"+this.mode;return e.programCache.hasOwnProperty(n)||(t=this.buildSource(this.mode),e.programCache[n]=this.createProgram(e.context,t)),e.programCache[n]},applyTo2d:function(e){var n,i,r,o,a,s,u,l=e.imageData.data,c=l.length,d=1-this.alpha;n=(u=new t.Color(this.color).getSource())[0]*this.alpha,i=u[1]*this.alpha,r=u[2]*this.alpha;for(var h=0;h<c;h+=4)switch(o=l[h],a=l[h+1],s=l[h+2],this.mode){case"multiply":l[h]=o*n/255,l[h+1]=a*i/255,l[h+2]=s*r/255;break;case"screen":l[h]=255-(255-o)*(255-n)/255,l[h+1]=255-(255-a)*(255-i)/255,l[h+2]=255-(255-s)*(255-r)/255;break;case"add":l[h]=o+n,l[h+1]=a+i,l[h+2]=s+r;break;case"diff":case"difference":l[h]=Math.abs(o-n),l[h+1]=Math.abs(a-i),l[h+2]=Math.abs(s-r);break;case"subtract":l[h]=o-n,l[h+1]=a-i,l[h+2]=s-r;break;case"darken":l[h]=Math.min(o,n),l[h+1]=Math.min(a,i),l[h+2]=Math.min(s,r);break;case"lighten":l[h]=Math.max(o,n),l[h+1]=Math.max(a,i),l[h+2]=Math.max(s,r);break;case"overlay":l[h]=n<128?2*o*n/255:255-2*(255-o)*(255-n)/255,l[h+1]=i<128?2*a*i/255:255-2*(255-a)*(255-i)/255,l[h+2]=r<128?2*s*r/255:255-2*(255-s)*(255-r)/255;break;case"exclusion":l[h]=n+o-2*n*o/255,l[h+1]=i+a-2*i*a/255,l[h+2]=r+s-2*r*s/255;break;case"tint":l[h]=n+o*d,l[h+1]=i+a*d,l[h+2]=r+s*d}},getUniformLocations:function(e,t){return{uColor:e.getUniformLocation(t,"uColor")}},sendUniformData:function(e,n){var i=new t.Color(this.color).getSource();i[0]=this.alpha*i[0]/255,i[1]=this.alpha*i[1]/255,i[2]=this.alpha*i[2]/255,i[3]=this.alpha,e.uniform4fv(n.uColor,i)},toObject:function(){return{type:this.type,color:this.color,mode:this.mode,alpha:this.alpha}}}),t.Image.filters.BlendColor.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric,n=t.Image.filters,i=t.util.createClass;n.BlendImage=i(n.BaseFilter,{type:"BlendImage",image:null,mode:"multiply",alpha:1,vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nuniform mat3 uTransformMatrix;\nvoid main() {\nvTexCoord = aPosition;\nvTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:{multiply:"precision highp float;\nuniform sampler2D uTexture;\nuniform sampler2D uImage;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec4 color2 = texture2D(uImage, vTexCoord2);\ncolor.rgba *= color2.rgba;\ngl_FragColor = color;\n}",mask:"precision highp float;\nuniform sampler2D uTexture;\nuniform sampler2D uImage;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec4 color2 = texture2D(uImage, vTexCoord2);\ncolor.a = color2.a;\ngl_FragColor = color;\n}"},retrieveShader:function(e){var t=this.type+"_"+this.mode,n=this.fragmentSource[this.mode];return e.programCache.hasOwnProperty(t)||(e.programCache[t]=this.createProgram(e.context,n)),e.programCache[t]},applyToWebGL:function(e){var t=e.context,n=this.createTexture(e.filterBackend,this.image);this.bindAdditionalTexture(t,n,t.TEXTURE1),this.callSuper("applyToWebGL",e),this.unbindAdditionalTexture(t,t.TEXTURE1)},createTexture:function(e,t){return e.getCachedTexture(t.cacheKey,t._element)},calculateMatrix:function(){var e=this.image,t=e._element.width,n=e._element.height;return[1/e.scaleX,0,0,0,1/e.scaleY,0,-e.left/t,-e.top/n,1]},applyTo2d:function(e){var n,i,r,o,a,s,u,l,c,d,h,f=e.imageData,p=e.filterBackend.resources,g=f.data,v=g.length,m=f.width,_=f.height,y=this.image;p.blendImage||(p.blendImage=t.util.createCanvasElement()),d=(c=p.blendImage).getContext("2d"),c.width!==m||c.height!==_?(c.width=m,c.height=_):d.clearRect(0,0,m,_),d.setTransform(y.scaleX,0,0,y.scaleY,y.left,y.top),d.drawImage(y._element,0,0,m,_),h=d.getImageData(0,0,m,_).data;for(var b=0;b<v;b+=4)switch(a=g[b],s=g[b+1],u=g[b+2],l=g[b+3],n=h[b],i=h[b+1],r=h[b+2],o=h[b+3],this.mode){case"multiply":g[b]=a*n/255,g[b+1]=s*i/255,g[b+2]=u*r/255,g[b+3]=l*o/255;break;case"mask":g[b+3]=o}},getUniformLocations:function(e,t){return{uTransformMatrix:e.getUniformLocation(t,"uTransformMatrix"),uImage:e.getUniformLocation(t,"uImage")}},sendUniformData:function(e,t){var n=this.calculateMatrix();e.uniform1i(t.uImage,1),e.uniformMatrix3fv(t.uTransformMatrix,!1,n)},toObject:function(){return{type:this.type,image:this.image&&this.image.toObject(),mode:this.mode,alpha:this.alpha}}}),t.Image.filters.BlendImage.fromObject=function(e,n){t.Image.fromObject(e.image,(function(i){var r=t.util.object.clone(e);r.image=i,n(new t.Image.filters.BlendImage(r))}))}}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.pow,i=Math.floor,r=Math.sqrt,o=Math.abs,a=Math.round,s=Math.sin,u=Math.ceil,l=t.Image.filters,c=t.util.createClass;l.Resize=c(l.BaseFilter,{type:"Resize",resizeType:"hermite",scaleX:1,scaleY:1,lanczosLobes:3,getUniformLocations:function(e,t){return{uDelta:e.getUniformLocation(t,"uDelta"),uTaps:e.getUniformLocation(t,"uTaps")}},sendUniformData:function(e,t){e.uniform2fv(t.uDelta,this.horizontal?[1/this.width,0]:[0,1/this.height]),e.uniform1fv(t.uTaps,this.taps)},retrieveShader:function(e){var t=this.getFilterWindow(),n=this.type+"_"+t;if(!e.programCache.hasOwnProperty(n)){var i=this.generateShader(t);e.programCache[n]=this.createProgram(e.context,i)}return e.programCache[n]},getFilterWindow:function(){var e=this.tempScale;return Math.ceil(this.lanczosLobes/e)},getTaps:function(){for(var e=this.lanczosCreate(this.lanczosLobes),t=this.tempScale,n=this.getFilterWindow(),i=new Array(n),r=1;r<=n;r++)i[r-1]=e(r*t);return i},generateShader:function(e){for(var t=new Array(e),n=this.fragmentSourceTOP,i=1;i<=e;i++)t[i-1]=i+".0 * uDelta";return n+="uniform float uTaps["+e+"];\n",n+="void main() {\n",n+=" vec4 color = texture2D(uTexture, vTexCoord);\n",n+=" float sum = 1.0;\n",t.forEach((function(e,t){n+=" color += texture2D(uTexture, vTexCoord + "+e+") * uTaps["+t+"];\n",n+=" color += texture2D(uTexture, vTexCoord - "+e+") * uTaps["+t+"];\n",n+=" sum += 2.0 * uTaps["+t+"];\n"})),n+=" gl_FragColor = color / sum;\n",n+="}"},fragmentSourceTOP:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec2 uDelta;\nvarying vec2 vTexCoord;\n",applyTo:function(e){e.webgl?(e.passes++,this.width=e.sourceWidth,this.horizontal=!0,this.dW=Math.round(this.width*this.scaleX),this.dH=e.sourceHeight,this.tempScale=this.dW/this.width,this.taps=this.getTaps(),e.destinationWidth=this.dW,this._setupFrameBuffer(e),this.applyToWebGL(e),this._swapTextures(e),e.sourceWidth=e.destinationWidth,this.height=e.sourceHeight,this.horizontal=!1,this.dH=Math.round(this.height*this.scaleY),this.tempScale=this.dH/this.height,this.taps=this.getTaps(),e.destinationHeight=this.dH,this._setupFrameBuffer(e),this.applyToWebGL(e),this._swapTextures(e),e.sourceHeight=e.destinationHeight):this.applyTo2d(e)},isNeutralState:function(){return 1===this.scaleX&&1===this.scaleY},lanczosCreate:function(e){return function(t){if(t>=e||t<=-e)return 0;if(t<1.1920929e-7&&t>-1.1920929e-7)return 1;var n=(t*=Math.PI)/e;return s(t)/t*s(n)/n}},applyTo2d:function(e){var t=e.imageData,n=this.scaleX,i=this.scaleY;this.rcpScaleX=1/n,this.rcpScaleY=1/i;var r,o=t.width,s=t.height,u=a(o*n),l=a(s*i);"sliceHack"===this.resizeType?r=this.sliceByTwo(e,o,s,u,l):"hermite"===this.resizeType?r=this.hermiteFastResize(e,o,s,u,l):"bilinear"===this.resizeType?r=this.bilinearFiltering(e,o,s,u,l):"lanczos"===this.resizeType&&(r=this.lanczosResize(e,o,s,u,l)),e.imageData=r},sliceByTwo:function(e,n,r,o,a){var s,u,l=e.imageData,c=.5,d=!1,h=!1,f=n*c,p=r*c,g=t.filterBackend.resources,v=0,m=0,_=n,y=0;for(g.sliceByTwo||(g.sliceByTwo=document.createElement("canvas")),((s=g.sliceByTwo).width<1.5*n||s.height<r)&&(s.width=1.5*n,s.height=r),(u=s.getContext("2d")).clearRect(0,0,1.5*n,r),u.putImageData(l,0,0),o=i(o),a=i(a);!d||!h;)n=f,r=p,o<i(f*c)?f=i(f*c):(f=o,d=!0),a<i(p*c)?p=i(p*c):(p=a,h=!0),u.drawImage(s,v,m,n,r,_,y,f,p),v=_,m=y,y+=p;return u.getImageData(v,m,o,a)},lanczosResize:function(e,t,a,s,l){var c=e.imageData.data,d=e.ctx.createImageData(s,l),h=d.data,f=this.lanczosCreate(this.lanczosLobes),p=this.rcpScaleX,g=this.rcpScaleY,v=2/this.rcpScaleX,m=2/this.rcpScaleY,_=u(p*this.lanczosLobes/2),y=u(g*this.lanczosLobes/2),b={},w={},C={};return function e(u){var k,S,x,L,E,D,N,M,T,I,O;for(w.x=(u+.5)*p,C.x=i(w.x),k=0;k<l;k++){for(w.y=(k+.5)*g,C.y=i(w.y),E=0,D=0,N=0,M=0,T=0,S=C.x-_;S<=C.x+_;S++)if(!(S<0||S>=t)){I=i(1e3*o(S-w.x)),b[I]||(b[I]={});for(var A=C.y-y;A<=C.y+y;A++)A<0||A>=a||(O=i(1e3*o(A-w.y)),b[I][O]||(b[I][O]=f(r(n(I*v,2)+n(O*m,2))/1e3)),(x=b[I][O])>0&&(E+=x,D+=x*c[L=4*(A*t+S)],N+=x*c[L+1],M+=x*c[L+2],T+=x*c[L+3]))}h[L=4*(k*s+u)]=D/E,h[L+1]=N/E,h[L+2]=M/E,h[L+3]=T/E}return++u<s?e(u):d}(0)},bilinearFiltering:function(e,t,n,r,o){var a,s,u,l,c,d,h,f,p,g=0,v=this.rcpScaleX,m=this.rcpScaleY,_=4*(t-1),y=e.imageData.data,b=e.ctx.createImageData(r,o),w=b.data;for(u=0;u<o;u++)for(l=0;l<r;l++)for(c=v*l-(a=i(v*l)),d=m*u-(s=i(m*u)),p=4*(s*t+a),h=0;h<4;h++)f=y[p+h]*(1-c)*(1-d)+y[p+4+h]*c*(1-d)+y[p+_+h]*d*(1-c)+y[p+_+4+h]*c*d,w[g++]=f;return b},hermiteFastResize:function(e,t,n,a,s){for(var l=this.rcpScaleX,c=this.rcpScaleY,d=u(l/2),h=u(c/2),f=e.imageData.data,p=e.ctx.createImageData(a,s),g=p.data,v=0;v<s;v++)for(var m=0;m<a;m++){for(var _=4*(m+v*a),y=0,b=0,w=0,C=0,k=0,S=0,x=0,L=(v+.5)*c,E=i(v*c);E<(v+1)*c;E++)for(var D=o(L-(E+.5))/h,N=(m+.5)*l,M=D*D,T=i(m*l);T<(m+1)*l;T++){var I=o(N-(T+.5))/d,O=r(M+I*I);O>1&&O<-1||(y=2*O*O*O-3*O*O+1)>0&&(x+=y*f[(I=4*(T+E*t))+3],w+=y,f[I+3]<255&&(y=y*f[I+3]/250),C+=y*f[I],k+=y*f[I+1],S+=y*f[I+2],b+=y)}g[_]=C/b,g[_+1]=k/b,g[_+2]=S/b,g[_+3]=x/w}return p},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),t.Image.filters.Resize.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass;n.Contrast=i(n.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(e){if(0!==this.contrast){var t,n=e.imageData.data,i=n.length,r=Math.floor(255*this.contrast),o=259*(r+255)/(255*(259-r));for(t=0;t<i;t+=4)n[t]=o*(n[t]-128)+128,n[t+1]=o*(n[t+1]-128)+128,n[t+2]=o*(n[t+2]-128)+128}},getUniformLocations:function(e,t){return{uContrast:e.getUniformLocation(t,"uContrast")}},sendUniformData:function(e,t){e.uniform1f(t.uContrast,this.contrast)}}),t.Image.filters.Contrast.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass;n.Saturation=i(n.BaseFilter,{type:"Saturation",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uSaturation;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat rgMax = max(color.r, color.g);\nfloat rgbMax = max(rgMax, color.b);\ncolor.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\ncolor.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\ncolor.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\ngl_FragColor = color;\n}",saturation:0,mainParameter:"saturation",applyTo2d:function(e){if(0!==this.saturation){var t,n,i=e.imageData.data,r=i.length,o=-this.saturation;for(t=0;t<r;t+=4)n=Math.max(i[t],i[t+1],i[t+2]),i[t]+=n!==i[t]?(n-i[t])*o:0,i[t+1]+=n!==i[t+1]?(n-i[t+1])*o:0,i[t+2]+=n!==i[t+2]?(n-i[t+2])*o:0}},getUniformLocations:function(e,t){return{uSaturation:e.getUniformLocation(t,"uSaturation")}},sendUniformData:function(e,t){e.uniform1f(t.uSaturation,-this.saturation)}}),t.Image.filters.Saturation.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass;n.Blur=i(n.BaseFilter,{type:"Blur",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec2 uDelta;\nvarying vec2 vTexCoord;\nconst float nSamples = 15.0;\nvec3 v3offset = vec3(12.9898, 78.233, 151.7182);\nfloat random(vec3 scale) {\nreturn fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\n}\nvoid main() {\nvec4 color = vec4(0.0);\nfloat total = 0.0;\nfloat offset = random(v3offset);\nfor (float t = -nSamples; t <= nSamples; t++) {\nfloat percent = (t + offset - 0.5) / nSamples;\nfloat weight = 1.0 - abs(percent);\ncolor += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\ntotal += weight;\n}\ngl_FragColor = color / total;\n}",blur:0,mainParameter:"blur",applyTo:function(e){e.webgl?(this.aspectRatio=e.sourceWidth/e.sourceHeight,e.passes++,this._setupFrameBuffer(e),this.horizontal=!0,this.applyToWebGL(e),this._swapTextures(e),this._setupFrameBuffer(e),this.horizontal=!1,this.applyToWebGL(e),this._swapTextures(e)):this.applyTo2d(e)},applyTo2d:function(e){e.imageData=this.simpleBlur(e)},simpleBlur:function(e){var n,i,r=e.filterBackend.resources,o=e.imageData.width,a=e.imageData.height;r.blurLayer1||(r.blurLayer1=t.util.createCanvasElement(),r.blurLayer2=t.util.createCanvasElement()),n=r.blurLayer1,i=r.blurLayer2,n.width===o&&n.height===a||(i.width=n.width=o,i.height=n.height=a);var s,u,l,c,d=n.getContext("2d"),h=i.getContext("2d"),f=15,p=.06*this.blur*.5;for(d.putImageData(e.imageData,0,0),h.clearRect(0,0,o,a),c=-15;c<=f;c++)l=p*(u=c/f)*o+(s=(Math.random()-.5)/4),h.globalAlpha=1-Math.abs(u),h.drawImage(n,l,s),d.drawImage(i,0,0),h.globalAlpha=1,h.clearRect(0,0,i.width,i.height);for(c=-15;c<=f;c++)l=p*(u=c/f)*a+(s=(Math.random()-.5)/4),h.globalAlpha=1-Math.abs(u),h.drawImage(n,s,l),d.drawImage(i,0,0),h.globalAlpha=1,h.clearRect(0,0,i.width,i.height);e.ctx.drawImage(n,0,0);var g=e.ctx.getImageData(0,0,n.width,n.height);return d.globalAlpha=1,d.clearRect(0,0,n.width,n.height),g},getUniformLocations:function(e,t){return{delta:e.getUniformLocation(t,"uDelta")}},sendUniformData:function(e,t){var n=this.chooseRightDelta();e.uniform2fv(t.delta,n)},chooseRightDelta:function(){var e,t=1,n=[0,0];return this.horizontal?this.aspectRatio>1&&(t=1/this.aspectRatio):this.aspectRatio<1&&(t=this.aspectRatio),e=t*this.blur*.12,this.horizontal?n[0]=e:n[1]=e,n}}),n.Blur.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass;n.Gamma=i(n.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(e){this.gamma=[1,1,1],n.BaseFilter.prototype.initialize.call(this,e)},applyTo2d:function(e){var t,n=e.imageData.data,i=this.gamma,r=n.length,o=1/i[0],a=1/i[1],s=1/i[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),t=0,r=256;t<r;t++)this.rVals[t]=255*Math.pow(t/255,o),this.gVals[t]=255*Math.pow(t/255,a),this.bVals[t]=255*Math.pow(t/255,s);for(t=0,r=n.length;t<r;t+=4)n[t]=this.rVals[n[t]],n[t+1]=this.gVals[n[t+1]],n[t+2]=this.bVals[n[t+2]]},getUniformLocations:function(e,t){return{uGamma:e.getUniformLocation(t,"uGamma")}},sendUniformData:function(e,t){e.uniform3fv(t.uGamma,this.gamma)}}),t.Image.filters.Gamma.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass;n.Composed=i(n.BaseFilter,{type:"Composed",subFilters:[],initialize:function(e){this.callSuper("initialize",e),this.subFilters=this.subFilters.slice(0)},applyTo:function(e){e.passes+=this.subFilters.length-1,this.subFilters.forEach((function(t){t.applyTo(e)}))},toObject:function(){return t.util.object.extend(this.callSuper("toObject"),{subFilters:this.subFilters.map((function(e){return e.toObject()}))})},isNeutralState:function(){return!this.subFilters.some((function(e){return!e.isNeutralState()}))}}),t.Image.filters.Composed.fromObject=function(e,n){var i=(e.subFilters||[]).map((function(e){return new t.Image.filters[e.type](e)})),r=new t.Image.filters.Composed({subFilters:i});return n&&n(r),r}}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,i=t.util.createClass;n.HueRotation=i(n.ColorMatrix,{type:"HueRotation",rotation:0,mainParameter:"rotation",calculateMatrix:function(){var e=this.rotation*Math.PI,n=t.util.cos(e),i=t.util.sin(e),r=1/3,o=Math.sqrt(r)*i,a=1-n;this.matrix=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],this.matrix[0]=n+a/3,this.matrix[1]=r*a-o,this.matrix[2]=r*a+o,this.matrix[5]=r*a+o,this.matrix[6]=n+r*a,this.matrix[7]=r*a-o,this.matrix[10]=r*a-o,this.matrix[11]=r*a+o,this.matrix[12]=n+r*a},isNeutralState:function(e){return this.calculateMatrix(),n.BaseFilter.prototype.isNeutralState.call(this,e)},applyTo:function(e){this.calculateMatrix(),n.BaseFilter.prototype.applyTo.call(this,e)}}),t.Image.filters.HueRotation.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.clone;t.Text?t.warn("fabric.Text is already defined"):(t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:["fontSize","fontWeight","fontFamily","fontStyle","lineHeight","text","charSpacing","textAlign","styles"],_reNewline:/\r?\n/,_reSpacesAndTabs:/[ \t\r]/g,_reSpaceAndTab:/[ \t\r]/,_reWords:/\S+/g,type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",underline:!1,overline:!1,linethrough:!1,textAlign:"left",fontStyle:"normal",lineHeight:1.16,superscript:{size:.6,baseline:-.35},subscript:{size:.6,baseline:.11},textBackgroundColor:"",stateProperties:t.Object.prototype.stateProperties.concat("fontFamily","fontWeight","fontSize","text","underline","overline","linethrough","textAlign","fontStyle","lineHeight","textBackgroundColor","charSpacing","styles"),cacheProperties:t.Object.prototype.cacheProperties.concat("fontFamily","fontWeight","fontSize","text","underline","overline","linethrough","textAlign","fontStyle","lineHeight","textBackgroundColor","charSpacing","styles"),stroke:null,shadow:null,_fontSizeFraction:.222,offsets:{underline:.1,linethrough:-.315,overline:-.88},_fontSizeMult:1.13,charSpacing:0,styles:null,_measuringContext:null,deltaY:0,_styleProperties:["stroke","strokeWidth","fill","fontFamily","fontSize","fontWeight","fontStyle","underline","overline","linethrough","deltaY","textBackgroundColor"],__charBounds:[],CACHE_FONT_SIZE:400,MIN_TEXT_WIDTH:2,initialize:function(e,t){this.styles=t&&t.styles||{},this.text=e,this.__skipDimension=!0,this.callSuper("initialize",t),this.__skipDimension=!1,this.initDimensions(),this.setCoords(),this.setupState({propertySet:"_dimensionAffectingProps"})},getMeasuringContext:function(){return t._measuringContext||(t._measuringContext=this.canvas&&this.canvas.contextCache||t.util.createCanvasElement().getContext("2d")),t._measuringContext},_splitText:function(){var e=this._splitTextIntoLines(this.text);return this.textLines=e.lines,this._textLines=e.graphemeLines,this._unwrappedTextLines=e._unwrappedLines,this._text=e.graphemeText,e},initDimensions:function(){this.__skipDimension||(this._splitText(),this._clearCache(),this.width=this.calcTextWidth()||this.cursorWidth||this.MIN_TEXT_WIDTH,-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},enlargeSpaces:function(){for(var e,t,n,i,r,o,a,s=0,u=this._textLines.length;s<u;s++)if(("justify"===this.textAlign||s!==u-1&&!this.isEndOfWrapping(s))&&(i=0,r=this._textLines[s],(t=this.getLineWidth(s))<this.width&&(a=this.textLines[s].match(this._reSpacesAndTabs)))){n=a.length,e=(this.width-t)/n;for(var l=0,c=r.length;l<=c;l++)o=this.__charBounds[s][l],this._reSpaceAndTab.test(r[l])?(o.width+=e,o.kernedWidth+=e,o.left+=i,i+=e):o.left+=i}},isEndOfWrapping:function(e){return e===this._textLines.length-1},missingNewlineOffset:function(){return 1},toString:function(){return"#<fabric.Text ("+this.complexity()+'): { "text": "'+this.text+'", "fontFamily": "'+this.fontFamily+'" }>'},_getCacheCanvasDimensions:function(){var e=this.callSuper("_getCacheCanvasDimensions"),t=this.fontSize;return e.width+=t*e.zoomX,e.height+=t*e.zoomY,e},_render:function(e){this._setTextStyles(e),this._renderTextLinesBackground(e),this._renderTextDecoration(e,"underline"),this._renderText(e),this._renderTextDecoration(e,"overline"),this._renderTextDecoration(e,"linethrough")},_renderText:function(e){"stroke"===this.paintFirst?(this._renderTextStroke(e),this._renderTextFill(e)):(this._renderTextFill(e),this._renderTextStroke(e))},_setTextStyles:function(e,t,n){e.textBaseline="alphabetic",e.font=this._getFontDeclaration(t,n)},calcTextWidth:function(){for(var e=this.getLineWidth(0),t=1,n=this._textLines.length;t<n;t++){var i=this.getLineWidth(t);i>e&&(e=i)}return e},_renderTextLine:function(e,t,n,i,r,o){this._renderChars(e,t,n,i,r,o)},_renderTextLinesBackground:function(e){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var t,n,i,r,o,a,s=0,u=e.fillStyle,l=this._getLeftOffset(),c=this._getTopOffset(),d=0,h=0,f=0,p=this._textLines.length;f<p;f++)if(t=this.getHeightOfLine(f),this.textBackgroundColor||this.styleHas("textBackgroundColor",f)){i=this._textLines[f],n=this._getLineLeftOffset(f),h=0,d=0,r=this.getValueOfPropertyAt(f,0,"textBackgroundColor");for(var g=0,v=i.length;g<v;g++)o=this.__charBounds[f][g],(a=this.getValueOfPropertyAt(f,g,"textBackgroundColor"))!==r?(e.fillStyle=r,r&&e.fillRect(l+n+d,c+s,h,t/this.lineHeight),d=o.left,h=o.width,r=a):h+=o.kernedWidth;a&&(e.fillStyle=a,e.fillRect(l+n+d,c+s,h,t/this.lineHeight)),s+=t}else s+=t;e.fillStyle=u,this._removeShadow(e)}},getFontCache:function(e){var n=e.fontFamily.toLowerCase();t.charWidthsCache[n]||(t.charWidthsCache[n]={});var i=t.charWidthsCache[n],r=e.fontStyle.toLowerCase()+"_"+(e.fontWeight+"").toLowerCase();return i[r]||(i[r]={}),i[r]},_applyCharStyles:function(e,t,n,i,r){this._setFillStyles(t,r),this._setStrokeStyles(t,r),t.font=this._getFontDeclaration(r)},_measureChar:function(e,t,n,i){var r,o,a,s,u=this.getFontCache(t),l=n+e,c=this._getFontDeclaration(t)===this._getFontDeclaration(i),d=t.fontSize/this.CACHE_FONT_SIZE;if(n&&void 0!==u[n]&&(a=u[n]),void 0!==u[e]&&(s=r=u[e]),c&&void 0!==u[l]&&(s=(o=u[l])-a),void 0===r||void 0===a||void 0===o){var h=this.getMeasuringContext();this._setTextStyles(h,t,!0)}return void 0===r&&(s=r=h.measureText(e).width,u[e]=r),void 0===a&&c&&n&&(a=h.measureText(n).width,u[n]=a),c&&void 0===o&&(o=h.measureText(l).width,u[l]=o,s=o-a),{width:r*d,kernedWidth:s*d}},getHeightOfChar:function(e,t){return this.getValueOfPropertyAt(e,t,"fontSize")},measureLine:function(e){var t=this._measureLine(e);return 0!==this.charSpacing&&(t.width-=this._getWidthOfCharSpacing()),t.width<0&&(t.width=0),t},_measureLine:function(e){var t,n,i,r,o=0,a=this._textLines[e],s=new Array(a.length);for(this.__charBounds[e]=s,t=0;t<a.length;t++)n=a[t],r=this._getGraphemeBox(n,e,t,i),s[t]=r,o+=r.kernedWidth,i=n;return s[t]={left:r?r.left+r.width:0,width:0,kernedWidth:0,height:this.fontSize},{width:o,numOfSpaces:0}},_getGraphemeBox:function(e,t,n,i,r){var o,a=this.getCompleteStyleDeclaration(t,n),s=i?this.getCompleteStyleDeclaration(t,n-1):{},u=this._measureChar(e,a,i,s),l=u.kernedWidth,c=u.width;0!==this.charSpacing&&(c+=o=this._getWidthOfCharSpacing(),l+=o);var d={width:c,left:0,height:a.fontSize,kernedWidth:l,deltaY:a.deltaY};if(n>0&&!r){var h=this.__charBounds[t][n-1];d.left=h.left+h.width+u.kernedWidth-u.width}return d},getHeightOfLine:function(e){if(this.__lineHeights[e])return this.__lineHeights[e];for(var t=this._textLines[e],n=this.getHeightOfChar(e,0),i=1,r=t.length;i<r;i++)n=Math.max(this.getHeightOfChar(e,i),n);return this.__lineHeights[e]=n*this.lineHeight*this._fontSizeMult},calcTextHeight:function(){for(var e,t=0,n=0,i=this._textLines.length;n<i;n++)e=this.getHeightOfLine(n),t+=n===i-1?e/this.lineHeight:e;return t},_getLeftOffset:function(){return-this.width/2},_getTopOffset:function(){return-this.height/2},_renderTextCommon:function(e,t){e.save();for(var n=0,i=this._getLeftOffset(),r=this._getTopOffset(),o=this._applyPatternGradientTransform(e,"fillText"===t?this.fill:this.stroke),a=0,s=this._textLines.length;a<s;a++){var u=this.getHeightOfLine(a),l=u/this.lineHeight,c=this._getLineLeftOffset(a);this._renderTextLine(t,e,this._textLines[a],i+c-o.offsetX,r+n+l-o.offsetY,a),n+=u}e.restore()},_renderTextFill:function(e){(this.fill||this.styleHas("fill"))&&this._renderTextCommon(e,"fillText")},_renderTextStroke:function(e){(this.stroke&&0!==this.strokeWidth||!this.isEmptyStyles())&&(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this._setLineDash(e,this.strokeDashArray),e.beginPath(),this._renderTextCommon(e,"strokeText"),e.closePath(),e.restore())},_renderChars:function(e,t,n,i,r,o){var a,s,u,l,c=this.getHeightOfLine(o),d=-1!==this.textAlign.indexOf("justify"),h="",f=0,p=!d&&0===this.charSpacing&&this.isEmptyStyles(o);if(t.save(),r-=c*this._fontSizeFraction/this.lineHeight,p)return this._renderChar(e,t,o,0,n.join(""),i,r,c),void t.restore();for(var g=0,v=n.length-1;g<=v;g++)l=g===v||this.charSpacing,h+=n[g],u=this.__charBounds[o][g],0===f?(i+=u.kernedWidth-u.width,f+=u.width):f+=u.kernedWidth,d&&!l&&this._reSpaceAndTab.test(n[g])&&(l=!0),l||(a=a||this.getCompleteStyleDeclaration(o,g),s=this.getCompleteStyleDeclaration(o,g+1),l=this._hasStyleChanged(a,s)),l&&(this._renderChar(e,t,o,g,h,i,r,c),h="",a=s,i+=f,f=0);t.restore()},_renderChar:function(e,t,n,i,r,o,a){var s=this._getStyleDeclaration(n,i),u=this.getCompleteStyleDeclaration(n,i),l="fillText"===e&&u.fill,c="strokeText"===e&&u.stroke&&u.strokeWidth;(c||l)&&(s&&t.save(),this._applyCharStyles(e,t,n,i,u),s&&s.textBackgroundColor&&this._removeShadow(t),s&&s.deltaY&&(a+=s.deltaY),l&&t.fillText(r,o,a),c&&t.strokeText(r,o,a),s&&t.restore())},setSuperscript:function(e,t){return this._setScript(e,t,this.superscript)},setSubscript:function(e,t){return this._setScript(e,t,this.subscript)},_setScript:function(e,t,n){var i=this.get2DCursorLocation(e,!0),r=this.getValueOfPropertyAt(i.lineIndex,i.charIndex,"fontSize"),o=this.getValueOfPropertyAt(i.lineIndex,i.charIndex,"deltaY"),a={fontSize:r*n.size,deltaY:o+r*n.baseline};return this.setSelectionStyles(a,e,t),this},_hasStyleChanged:function(e,t){return e.fill!==t.fill||e.stroke!==t.stroke||e.strokeWidth!==t.strokeWidth||e.fontSize!==t.fontSize||e.fontFamily!==t.fontFamily||e.fontWeight!==t.fontWeight||e.fontStyle!==t.fontStyle||e.deltaY!==t.deltaY},_hasStyleChangedForSvg:function(e,t){return this._hasStyleChanged(e,t)||e.overline!==t.overline||e.underline!==t.underline||e.linethrough!==t.linethrough},_getLineLeftOffset:function(e){var t=this.getLineWidth(e);return"center"===this.textAlign?(this.width-t)/2:"right"===this.textAlign?this.width-t:"justify-center"===this.textAlign&&this.isEndOfWrapping(e)?(this.width-t)/2:"justify-right"===this.textAlign&&this.isEndOfWrapping(e)?this.width-t:0},_clearCache:function(){this.__lineWidths=[],this.__lineHeights=[],this.__charBounds=[]},_shouldClearDimensionCache:function(){var e=this._forceClearCache;return e||(e=this.hasStateChanged("_dimensionAffectingProps")),e&&(this.dirty=!0,this._forceClearCache=!1),e},getLineWidth:function(e){return this.__lineWidths[e]?this.__lineWidths[e]:(t=""===this._textLines[e]?0:this.measureLine(e).width,this.__lineWidths[e]=t,t);var t},_getWidthOfCharSpacing:function(){return 0!==this.charSpacing?this.fontSize*this.charSpacing/1e3:0},getValueOfPropertyAt:function(e,t,n){var i=this._getStyleDeclaration(e,t);return i&&"undefined"!==typeof i[n]?i[n]:this[n]},_renderTextDecoration:function(e,t){if(this[t]||this.styleHas(t)){for(var n,i,r,o,a,s,u,l,c,d,h,f,p,g,v,m,_=this._getLeftOffset(),y=this._getTopOffset(),b=this._getWidthOfCharSpacing(),w=0,C=this._textLines.length;w<C;w++)if(n=this.getHeightOfLine(w),this[t]||this.styleHas(t,w)){u=this._textLines[w],g=n/this.lineHeight,o=this._getLineLeftOffset(w),d=0,h=0,l=this.getValueOfPropertyAt(w,0,t),m=this.getValueOfPropertyAt(w,0,"fill"),c=y+g*(1-this._fontSizeFraction),i=this.getHeightOfChar(w,0),a=this.getValueOfPropertyAt(w,0,"deltaY");for(var k=0,S=u.length;k<S;k++)f=this.__charBounds[w][k],p=this.getValueOfPropertyAt(w,k,t),v=this.getValueOfPropertyAt(w,k,"fill"),r=this.getHeightOfChar(w,k),s=this.getValueOfPropertyAt(w,k,"deltaY"),(p!==l||v!==m||r!==i||s!==a)&&h>0?(e.fillStyle=m,l&&m&&e.fillRect(_+o+d,c+this.offsets[t]*i+a,h,this.fontSize/15),d=f.left,h=f.width,l=p,m=v,i=r,a=s):h+=f.kernedWidth;e.fillStyle=v,p&&v&&e.fillRect(_+o+d,c+this.offsets[t]*i+a,h-b,this.fontSize/15),y+=n}else y+=n;this._removeShadow(e)}},_getFontDeclaration:function(e,n){var i=e||this,r=this.fontFamily,o=t.Text.genericFonts.indexOf(r.toLowerCase())>-1,a=void 0===r||r.indexOf("'")>-1||r.indexOf(",")>-1||r.indexOf('"')>-1||o?i.fontFamily:'"'+i.fontFamily+'"';return[t.isLikelyNode?i.fontWeight:i.fontStyle,t.isLikelyNode?i.fontStyle:i.fontWeight,n?this.CACHE_FONT_SIZE+"px":i.fontSize+"px",a].join(" ")},render:function(e){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",e)))},_splitTextIntoLines:function(e){for(var n=e.split(this._reNewline),i=new Array(n.length),r=["\n"],o=[],a=0;a<n.length;a++)i[a]=t.util.string.graphemeSplit(n[a]),o=o.concat(i[a],r);return o.pop(),{_unwrappedLines:i,lines:n,graphemeText:o,graphemeLines:i}},toObject:function(e){var t=["text","fontSize","fontWeight","fontFamily","fontStyle","lineHeight","underline","overline","linethrough","textAlign","textBackgroundColor","charSpacing"].concat(e),i=this.callSuper("toObject",t);return i.styles=n(this.styles,!0),i},set:function(e,t){this.callSuper("set",e,t);var n=!1;if("object"===typeof e)for(var i in e)n=n||-1!==this._dimensionAffectingProps.indexOf(i);else n=-1!==this._dimensionAffectingProps.indexOf(e);return n&&(this.initDimensions(),this.setCoords()),this},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor".split(" ")),t.Text.DEFAULT_SVG_FONT_SIZE=16,t.Text.fromElement=function(e,i,r){if(!e)return i(null);var o=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES),a=o.textAnchor||"left";if((r=t.util.object.extend(r?n(r):{},o)).top=r.top||0,r.left=r.left||0,o.textDecoration){var s=o.textDecoration;-1!==s.indexOf("underline")&&(r.underline=!0),-1!==s.indexOf("overline")&&(r.overline=!0),-1!==s.indexOf("line-through")&&(r.linethrough=!0),delete r.textDecoration}"dx"in o&&(r.left+=o.dx),"dy"in o&&(r.top+=o.dy),"fontSize"in r||(r.fontSize=t.Text.DEFAULT_SVG_FONT_SIZE);var u="";"textContent"in e?u=e.textContent:"firstChild"in e&&null!==e.firstChild&&"data"in e.firstChild&&null!==e.firstChild.data&&(u=e.firstChild.data),u=u.replace(/^\s+|\s+$|\n+/g,"").replace(/\s+/g," ");var l=r.strokeWidth;r.strokeWidth=0;var c=new t.Text(u,r),d=c.getScaledHeight()/c.height,h=((c.height+c.strokeWidth)*c.lineHeight-c.height)*d,f=c.getScaledHeight()+h,p=0;"center"===a&&(p=c.getScaledWidth()/2),"right"===a&&(p=c.getScaledWidth()),c.set({left:c.left-p,top:c.top-(f-c.fontSize*(.07+c._fontSizeFraction))/c.lineHeight,strokeWidth:"undefined"!==typeof l?l:1}),i(c)},t.Text.fromObject=function(e,n){return t.Object._fromObject("Text",e,n,"text")},t.Text.genericFonts=["sans-serif","serif","cursive","fantasy","monospace"],t.util.createAccessors&&t.util.createAccessors(t.Text))}(t),r.util.object.extend(r.Text.prototype,{isEmptyStyles:function(e){if(!this.styles)return!0;if("undefined"!==typeof e&&!this.styles[e])return!0;var t="undefined"===typeof e?this.styles:{line:this.styles[e]};for(var n in t)for(var i in t[n])for(var r in t[n][i])return!1;return!0},styleHas:function(e,t){if(!this.styles||!e||""===e)return!1;if("undefined"!==typeof t&&!this.styles[t])return!1;var n="undefined"===typeof t?this.styles:{0:this.styles[t]};for(var i in n)for(var r in n[i])if("undefined"!==typeof n[i][r][e])return!0;return!1},cleanStyle:function(e){if(!this.styles||!e||""===e)return!1;var t,n,i=this.styles,r=0,o=!0,a=0;for(var s in i){for(var u in t=0,i[s]){var l;r++,(l=i[s][u]).hasOwnProperty(e)?(n?l[e]!==n&&(o=!1):n=l[e],l[e]===this[e]&&delete l[e]):o=!1,0!==Object.keys(l).length?t++:delete i[s][u]}0===t&&delete i[s]}for(var c=0;c<this._textLines.length;c++)a+=this._textLines[c].length;o&&r===a&&(this[e]=n,this.removeStyle(e))},removeStyle:function(e){if(this.styles&&e&&""!==e){var t,n,i,r=this.styles;for(n in r){for(i in t=r[n])delete t[i][e],0===Object.keys(t[i]).length&&delete t[i];0===Object.keys(t).length&&delete r[n]}}},_extendStyles:function(e,t){var n=this.get2DCursorLocation(e);this._getLineStyle(n.lineIndex)||this._setLineStyle(n.lineIndex),this._getStyleDeclaration(n.lineIndex,n.charIndex)||this._setStyleDeclaration(n.lineIndex,n.charIndex,{}),r.util.object.extend(this._getStyleDeclaration(n.lineIndex,n.charIndex),t)},get2DCursorLocation:function(e,t){"undefined"===typeof e&&(e=this.selectionStart);for(var n=t?this._unwrappedTextLines:this._textLines,i=n.length,r=0;r<i;r++){if(e<=n[r].length)return{lineIndex:r,charIndex:e};e-=n[r].length+this.missingNewlineOffset(r)}return{lineIndex:r-1,charIndex:n[r-1].length<e?n[r-1].length:e}},getSelectionStyles:function(e,t,n){"undefined"===typeof e&&(e=this.selectionStart||0),"undefined"===typeof t&&(t=this.selectionEnd||e);for(var i=[],r=e;r<t;r++)i.push(this.getStyleAtPosition(r,n));return i},getStyleAtPosition:function(e,t){var n=this.get2DCursorLocation(e);return(t?this.getCompleteStyleDeclaration(n.lineIndex,n.charIndex):this._getStyleDeclaration(n.lineIndex,n.charIndex))||{}},setSelectionStyles:function(e,t,n){"undefined"===typeof t&&(t=this.selectionStart||0),"undefined"===typeof n&&(n=this.selectionEnd||t);for(var i=t;i<n;i++)this._extendStyles(i,e);return this._forceClearCache=!0,this},_getStyleDeclaration:function(e,t){var n=this.styles&&this.styles[e];return n?n[t]:null},getCompleteStyleDeclaration:function(e,t){for(var n,i=this._getStyleDeclaration(e,t)||{},r={},o=0;o<this._styleProperties.length;o++)r[n=this._styleProperties[o]]="undefined"===typeof i[n]?this[n]:i[n];return r},_setStyleDeclaration:function(e,t,n){this.styles[e][t]=n},_deleteStyleDeclaration:function(e,t){delete this.styles[e][t]},_getLineStyle:function(e){return!!this.styles[e]},_setLineStyle:function(e){this.styles[e]={}},_deleteLineStyle:function(e){delete this.styles[e]}}),function(){function e(e){e.textDecoration&&(e.textDecoration.indexOf("underline")>-1&&(e.underline=!0),e.textDecoration.indexOf("line-through")>-1&&(e.linethrough=!0),e.textDecoration.indexOf("overline")>-1&&(e.overline=!0),delete e.textDecoration)}r.IText=r.util.createClass(r.Text,r.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(e,t){this.callSuper("initialize",e,t),this.initBehavior()},setSelectionStart:function(e){e=Math.max(e,0),this._updateAndFire("selectionStart",e)},setSelectionEnd:function(e){e=Math.min(e,this.text.length),this._updateAndFire("selectionEnd",e)},_updateAndFire:function(e,t){this[e]!==t&&(this._fireSelectionChanged(),this[e]=t),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(e){this.clearContextTop(),this.callSuper("render",e),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(e){this.callSuper("_render",e)},clearContextTop:function(e){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this.canvas.contextTop,n=this.canvas.viewportTransform;t.save(),t.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this.transform(t),this._clearTextArea(t),e||t.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this._getCursorBoundaries(),t=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(e,t):this.renderSelection(e,t),t.restore()}},_clearTextArea:function(e){var t=this.width+4,n=this.height+4;e.clearRect(-t/2,-n/2,t,n)},_getCursorBoundaries:function(e){"undefined"===typeof e&&(e=this.selectionStart);var t=this._getLeftOffset(),n=this._getTopOffset(),i=this._getCursorBoundariesOffsets(e);return{left:t,top:n,leftOffset:i.left,topOffset:i.top}},_getCursorBoundariesOffsets:function(e){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var t,n,i,r,o=0,a=0,s=this.get2DCursorLocation(e);i=s.charIndex,n=s.lineIndex;for(var u=0;u<n;u++)o+=this.getHeightOfLine(u);t=this._getLineLeftOffset(n);var l=this.__charBounds[n][i];return l&&(a=l.left),0!==this.charSpacing&&i===this._textLines[n].length&&(a-=this._getWidthOfCharSpacing()),r={top:o,left:t+(a>0?a:0)},this.cursorOffsetCache=r,this.cursorOffsetCache},renderCursor:function(e,t){var n=this.get2DCursorLocation(),i=n.lineIndex,r=n.charIndex>0?n.charIndex-1:0,o=this.getValueOfPropertyAt(i,r,"fontSize"),a=this.scaleX*this.canvas.getZoom(),s=this.cursorWidth/a,u=e.topOffset,l=this.getValueOfPropertyAt(i,r,"deltaY");u+=(1-this._fontSizeFraction)*this.getHeightOfLine(i)/this.lineHeight-o*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(e,t),t.fillStyle=this.cursorColor||this.getValueOfPropertyAt(i,r,"fill"),t.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,t.fillRect(e.left+e.leftOffset-s/2,u+e.top+l,s,o)},renderSelection:function(e,t){for(var n=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,i=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,r=-1!==this.textAlign.indexOf("justify"),o=this.get2DCursorLocation(n),a=this.get2DCursorLocation(i),s=o.lineIndex,u=a.lineIndex,l=o.charIndex<0?0:o.charIndex,c=a.charIndex<0?0:a.charIndex,d=s;d<=u;d++){var h,f=this._getLineLeftOffset(d)||0,p=this.getHeightOfLine(d),g=0,v=0;if(d===s&&(g=this.__charBounds[s][l].left),d>=s&&d<u)v=r&&!this.isEndOfWrapping(d)?this.width:this.getLineWidth(d)||5;else if(d===u)if(0===c)v=this.__charBounds[u][c].left;else{var m=this._getWidthOfCharSpacing();v=this.__charBounds[u][c-1].left+this.__charBounds[u][c-1].width-m}h=p,(this.lineHeight<1||d===u&&this.lineHeight>1)&&(p/=this.lineHeight),this.inCompositionMode?(t.fillStyle=this.compositionColor||"black",t.fillRect(e.left+f+g,e.top+e.topOffset+p,v-g,1)):(t.fillStyle=this.selectionColor,t.fillRect(e.left+f+g,e.top+e.topOffset,v-g,p)),e.topOffset+=h}},getCurrentCharFontSize:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fontSize")},getCurrentCharColor:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fill")},_getCurrentCharIndex:function(){var e=this.get2DCursorLocation(this.selectionStart,!0),t=e.charIndex>0?e.charIndex-1:0;return{l:e.lineIndex,c:t}}}),r.IText.fromObject=function(t,n){if(e(t),t.styles)for(var i in t.styles)for(var o in t.styles[i])e(t.styles[i][o]);r.Object._fromObject("IText",t,n,"text")}}(),function(){var e=r.util.object.clone;r.util.object.extend(r.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var e=this;this.on("added",(function(){var t=e.canvas;t&&(t._hasITextHandlers||(t._hasITextHandlers=!0,e._initCanvasHandlers(t)),t._iTextInstances=t._iTextInstances||[],t._iTextInstances.push(e))}))},initRemovedHandler:function(){var e=this;this.on("removed",(function(){var t=e.canvas;t&&(t._iTextInstances=t._iTextInstances||[],r.util.removeFromArray(t._iTextInstances,e),0===t._iTextInstances.length&&(t._hasITextHandlers=!1,e._removeCanvasHandlers(t)))}))},_initCanvasHandlers:function(e){e._mouseUpITextHandler=function(){e._iTextInstances&&e._iTextInstances.forEach((function(e){e.__isMousedown=!1}))},e.on("mouse:up",e._mouseUpITextHandler)},_removeCanvasHandlers:function(e){e.off("mouse:up",e._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(e,t,n,i){var r;return r={isAborted:!1,abort:function(){this.isAborted=!0}},e.animate("_currentCursorOpacity",t,{duration:n,onComplete:function(){r.isAborted||e[i]()},onChange:function(){e.canvas&&e.selectionStart===e.selectionEnd&&e.renderCursorOrSelection()},abort:function(){return r.isAborted}}),r},_onTickComplete:function(){var e=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){e._currentTickCompleteState=e._animateCursor(e,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(e){var t=this,n=e?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){t._tick()}),n)},abortCursorAnimation:function(){var e=this._currentTickState||this._currentTickCompleteState,t=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,e&&t&&t.clearContext(t.contextTop||t.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(e){var t=0,n=e-1;if(this._reSpace.test(this._text[n]))for(;this._reSpace.test(this._text[n]);)t++,n--;for(;/\S/.test(this._text[n])&&n>-1;)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this._text[n]))for(;this._reSpace.test(this._text[n]);)t++,n++;for(;/\S/.test(this._text[n])&&n<this._text.length;)t++,n++;return e+t},findLineBoundaryLeft:function(e){for(var t=0,n=e-1;!/\n/.test(this._text[n])&&n>-1;)t++,n--;return e-t},findLineBoundaryRight:function(e){for(var t=0,n=e;!/\n/.test(this._text[n])&&n<this._text.length;)t++,n++;return e+t},searchWordBoundary:function(e,t){for(var n=this._text,i=this._reSpace.test(n[e])?e-1:e,o=n[i],a=r.reNonWord;!a.test(o)&&i>0&&i<n.length;)o=n[i+=t];return a.test(o)&&(i+=1===t?0:1),i},selectWord:function(e){e=e||this.selectionStart;var t=this.searchWordBoundary(e,-1),n=this.searchWordBoundary(e,1);this.selectionStart=t,this.selectionEnd=n,this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()},selectLine:function(e){e=e||this.selectionStart;var t=this.findLineBoundaryLeft(e),n=this.findLineBoundaryRight(e);return this.selectionStart=t,this.selectionEnd=n,this._fireSelectionChanged(),this._updateTextarea(),this},enterEditing:function(e){if(!this.isEditing&&this.editable)return this.canvas&&(this.canvas.calcOffset(),this.exitEditingOnOthers(this.canvas)),this.isEditing=!0,this.initHiddenTextarea(e),this.hiddenTextarea.focus(),this.hiddenTextarea.value=this.text,this._updateTextarea(),this._saveEditingProps(),this._setEditingProps(),this._textBeforeEdit=this.text,this._tick(),this.fire("editing:entered"),this._fireSelectionChanged(),this.canvas?(this.canvas.fire("text:editing:entered",{target:this}),this.initMouseMoveHandler(),this.canvas.requestRenderAll(),this):this},exitEditingOnOthers:function(e){e._iTextInstances&&e._iTextInstances.forEach((function(e){e.selected=!1,e.isEditing&&e.exitEditing()}))},initMouseMoveHandler:function(){this.canvas.on("mouse:move",this.mouseMoveHandler)},mouseMoveHandler:function(e){if(this.__isMousedown&&this.isEditing){var t=this.getSelectionStartFromPointer(e.e),n=this.selectionStart,i=this.selectionEnd;(t===this.__selectionStartOnMouseDown&&n!==i||n!==t&&i!==t)&&(t>this.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=t):(this.selectionStart=t,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===n&&this.selectionEnd===i||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(e,t,n){var i=n.slice(0,e),o=r.util.string.graphemeSplit(i).length;if(e===t)return{selectionStart:o,selectionEnd:o};var a=n.slice(e,t);return{selectionStart:o,selectionEnd:o+r.util.string.graphemeSplit(a).length}},fromGraphemeToStringSelection:function(e,t,n){var i=n.slice(0,e).join("").length;return e===t?{selectionStart:i,selectionEnd:i}:{selectionStart:i,selectionEnd:i+n.slice(e,t).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var e=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=e.selectionStart,this.hiddenTextarea.selectionEnd=e.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var e=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=e.selectionEnd,this.inCompositionMode||(this.selectionStart=e.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var e=this._calcTextareaPosition();this.hiddenTextarea.style.left=e.left,this.hiddenTextarea.style.top=e.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var e=this.inCompositionMode?this.compositionStart:this.selectionStart,t=this._getCursorBoundaries(e),n=this.get2DCursorLocation(e),i=n.lineIndex,o=n.charIndex,a=this.getValueOfPropertyAt(i,o,"fontSize")*this.lineHeight,s=t.leftOffset,u=this.calcTransformMatrix(),l={x:t.left+s,y:t.top+t.topOffset+a},c=this.canvas.getRetinaScaling(),d=this.canvas.upperCanvasEl,h=d.width/c,f=d.height/c,p=h-a,g=f-a,v=d.clientWidth/h,m=d.clientHeight/f;return l=r.util.transformPoint(l,u),(l=r.util.transformPoint(l,this.canvas.viewportTransform)).x*=v,l.y*=m,l.x<0&&(l.x=0),l.x>p&&(l.x=p),l.y<0&&(l.y=0),l.y>g&&(l.y=g),l.x+=this.canvas._offset.left,l.y+=this.canvas._offset.top,{left:l.x+"px",top:l.y+"px",fontSize:a+"px",charHeight:a}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var e=this._textBeforeEdit!==this.text,t=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,t&&(t.blur&&t.blur(),t.parentNode&&t.parentNode.removeChild(t)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),e&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),e&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var e in this.styles)this._textLines[e]||delete this.styles[e]},removeStyleFromTo:function(e,t){var n,i,r=this.get2DCursorLocation(e,!0),o=this.get2DCursorLocation(t,!0),a=r.lineIndex,s=r.charIndex,u=o.lineIndex,l=o.charIndex;if(a!==u){if(this.styles[a])for(n=s;n<this._unwrappedTextLines[a].length;n++)delete this.styles[a][n];if(this.styles[u])for(n=l;n<this._unwrappedTextLines[u].length;n++)(i=this.styles[u][n])&&(this.styles[a]||(this.styles[a]={}),this.styles[a][s+n-l]=i);for(n=a+1;n<=u;n++)delete this.styles[n];this.shiftLineStyles(u,a-u)}else if(this.styles[a]){i=this.styles[a];var c,d,h=l-s;for(n=s;n<l;n++)delete i[n];for(d in this.styles[a])(c=parseInt(d,10))>=l&&(i[c-h]=i[d],delete i[d])}},shiftLineStyles:function(t,n){var i=e(this.styles);for(var r in this.styles){var o=parseInt(r,10);o>t&&(this.styles[o+n]=i[o],i[o-n]||delete this.styles[o])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(t,n,i,r){var o,a={},s=!1,u=this._unwrappedTextLines[t].length===n;for(var l in i||(i=1),this.shiftLineStyles(t,i),this.styles[t]&&(o=this.styles[t][0===n?n:n-1]),this.styles[t]){var c=parseInt(l,10);c>=n&&(s=!0,a[c-n]=this.styles[t][l],u&&0===n||delete this.styles[t][l])}var d=!1;for(s&&!u&&(this.styles[t+i]=a,d=!0),d&&i--;i>0;)r&&r[i-1]?this.styles[t+i]={0:e(r[i-1])}:o?this.styles[t+i]={0:e(o)}:delete this.styles[t+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(t,n,i,r){this.styles||(this.styles={});var o=this.styles[t],a=o?e(o):{};for(var s in i||(i=1),a){var u=parseInt(s,10);u>=n&&(o[u+i]=a[u],a[u-i]||delete o[u])}if(this._forceClearCache=!0,r)for(;i--;)Object.keys(r[i]).length&&(this.styles[t]||(this.styles[t]={}),this.styles[t][n+i]=e(r[i]));else if(o)for(var l=o[n?n-1:1];l&&i--;)this.styles[t][n+i]=e(l)},insertNewStyleBlock:function(e,t,n){for(var i=this.get2DCursorLocation(t,!0),r=[0],o=0,a=0;a<e.length;a++)"\n"===e[a]?r[++o]=0:r[o]++;r[0]>0&&(this.insertCharStyleObject(i.lineIndex,i.charIndex,r[0],n),n=n&&n.slice(r[0]+1)),o&&this.insertNewlineStyleObject(i.lineIndex,i.charIndex+r[0],o);for(a=1;a<o;a++)r[a]>0?this.insertCharStyleObject(i.lineIndex+a,0,r[a],n):n&&(this.styles[i.lineIndex+a][0]=n[0]),n=n&&n.slice(r[a]+1);r[a]>0&&this.insertCharStyleObject(i.lineIndex+a,0,r[a],n)},setSelectionStartEndWithShift:function(e,t,n){n<=e?(t===e?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=e),this.selectionStart=n):n>e&&n<t?"right"===this._selectionDirection?this.selectionEnd=n:this.selectionStart=n:(t===e?this._selectionDirection="right":"left"===this._selectionDirection&&(this._selectionDirection="right",this.selectionStart=t),this.selectionEnd=n)},setSelectionInBoundaries:function(){var e=this.text.length;this.selectionStart>e?this.selectionStart=e:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>e?this.selectionEnd=e:this.selectionEnd<0&&(this.selectionEnd=0)}})}(),r.util.object.extend(r.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(e){if(this.canvas){this.__newClickTime=+new Date;var t=e.pointer;this.isTripleClick(t)&&(this.fire("tripleclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(e){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(e.e))},tripleClickHandler:function(e){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(e.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(e.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(e){if(this.__isMousedown=!1,!(!this.editable||this.group||e.transform&&e.transform.actionPerformed||e.e.button&&1!==e.e.button)){if(this.canvas){var t=this.canvas._activeObject;if(t&&t!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(e.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e),n=this.selectionStart,i=this.selectionEnd;e.shiftKey?this.setSelectionStartEndWithShift(n,i,t):(this.selectionStart=t,this.selectionEnd=t),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(e){for(var t=this.getLocalPointer(e),n=0,i=0,r=0,o=0,a=0,s=0,u=this._textLines.length;s<u&&r<=t.y;s++)r+=this.getHeightOfLine(s)*this.scaleY,a=s,s>0&&(o+=this._textLines[s-1].length+this.missingNewlineOffset(s-1));i=this._getLineLeftOffset(a)*this.scaleX;for(var l=0,c=this._textLines[a].length;l<c&&(n=i,(i+=this.__charBounds[a][l].kernedWidth*this.scaleX)<=t.x);l++)o++;return this._getNewSelectionStartFromOffset(t,n,i,o,c)},_getNewSelectionStartFromOffset:function(e,t,n,i,r){var o=e.x-t,a=n-e.x,s=i+(a>o||a<0?0:1);return this.flipX&&(s=r-s),s>this._text.length&&(s=this._text.length),s}}),r.util.object.extend(r.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=r.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var e=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+e.top+"; left: "+e.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; padding\uff70top: "+e.fontSize+";",r.document.body.appendChild(this.hiddenTextarea),r.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),r.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),r.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),r.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),r.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),r.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),r.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),r.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),r.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(r.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(e){if(this.isEditing){if(e.keyCode in this.keysMap)this[this.keysMap[e.keyCode]](e);else{if(!(e.keyCode in this.ctrlKeysMapDown)||!e.ctrlKey&&!e.metaKey)return;this[this.ctrlKeysMapDown[e.keyCode]](e)}e.stopImmediatePropagation(),e.preventDefault(),e.keyCode>=33&&e.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(e){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:e.keyCode in this.ctrlKeysMapUp&&(e.ctrlKey||e.metaKey)&&(this[this.ctrlKeysMapUp[e.keyCode]](e),e.stopImmediatePropagation(),e.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(e){var t=this.fromPaste;if(this.fromPaste=!1,e&&e.stopPropagation(),this.isEditing){var n,i,o,a,s,u=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,l=this._text.length,c=u.length,d=c-l,h=this.selectionStart,f=this.selectionEnd,p=h!==f;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),v=h>g.selectionStart;p?(n=this._text.slice(h,f),d+=f-h):c<l&&(n=v?this._text.slice(f+d,f):this._text.slice(h,h-d)),i=u.slice(g.selectionEnd-d,g.selectionEnd),n&&n.length&&(i.length&&(o=this.getSelectionStyles(h,h+1,!1),o=i.map((function(){return o[0]}))),p?(a=h,s=f):v?(a=f-n.length,s=f):(a=f,s=f+n.length),this.removeStyleFromTo(a,s)),i.length&&(t&&i.join("")===r.copiedText&&!r.disableStyleCopyPaste&&(o=r.copiedTextStyle),this.insertNewStyleBlock(i,h,o)),this.updateFromTextArea(),this.fire("changed"),this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll())}},onCompositionStart:function(){this.inCompositionMode=!0},onCompositionEnd:function(){this.inCompositionMode=!1},onCompositionUpdate:function(e){this.compositionStart=e.target.selectionStart,this.compositionEnd=e.target.selectionEnd,this.updateTextareaPosition()},copy:function(){this.selectionStart!==this.selectionEnd&&(r.copiedText=this.getSelectedText(),r.disableStyleCopyPaste?r.copiedTextStyle=null:r.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd,!0),this._copyDone=!0)},paste:function(){this.fromPaste=!0},_getClipboardData:function(e){return e&&e.clipboardData||r.window.clipboardData},_getWidthBeforeCursor:function(e,t){var n,i=this._getLineLeftOffset(e);return t>0&&(i+=(n=this.__charBounds[e][t-1]).left+n.width),i},getDownCursorOffset:function(e,t){var n=this._getSelectionForOffset(e,t),i=this.get2DCursorLocation(n),r=i.lineIndex;if(r===this._textLines.length-1||e.metaKey||34===e.keyCode)return this._text.length-n;var o=i.charIndex,a=this._getWidthBeforeCursor(r,o),s=this._getIndexOnLine(r+1,a);return this._textLines[r].slice(o).length+s+1+this.missingNewlineOffset(r)},_getSelectionForOffset:function(e,t){return e.shiftKey&&this.selectionStart!==this.selectionEnd&&t?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(e,t){var n=this._getSelectionForOffset(e,t),i=this.get2DCursorLocation(n),r=i.lineIndex;if(0===r||e.metaKey||33===e.keyCode)return-n;var o=i.charIndex,a=this._getWidthBeforeCursor(r,o),s=this._getIndexOnLine(r-1,a),u=this._textLines[r].slice(0,o),l=this.missingNewlineOffset(r-1);return-this._textLines[r-1].length+s-u.length+(1-l)},_getIndexOnLine:function(e,t){for(var n,i,r=this._textLines[e],o=this._getLineLeftOffset(e),a=0,s=0,u=r.length;s<u;s++)if((o+=n=this.__charBounds[e][s].width)>t){i=!0;var l=o-n,c=o,d=Math.abs(l-t);a=Math.abs(c-t)<d?s:s-1;break}return i||(a=r.length-1),a},moveCursorDown:function(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",e)},moveCursorUp:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",e)},_moveCursorUpOrDown:function(e,t){var n=this["get"+e+"CursorOffset"](t,"right"===this._selectionDirection);t.shiftKey?this.moveCursorWithShift(n):this.moveCursorWithoutShift(n),0!==n&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(e){var t="left"===this._selectionDirection?this.selectionStart+e:this.selectionEnd+e;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,t),0!==e},moveCursorWithoutShift:function(e){return e<0?(this.selectionStart+=e,this.selectionEnd=this.selectionStart):(this.selectionEnd+=e,this.selectionStart=this.selectionEnd),0!==e},moveCursorLeft:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",e)},_move:function(e,t,n){var i;if(e.altKey)i=this["findWordBoundary"+n](this[t]);else{if(!e.metaKey&&35!==e.keyCode&&36!==e.keyCode)return this[t]+="Left"===n?-1:1,!0;i=this["findLineBoundary"+n](this[t])}if(void 0!==typeof i&&this[t]!==i)return this[t]=i,!0},_moveLeft:function(e,t){return this._move(e,t,"Left")},_moveRight:function(e,t){return this._move(e,t,"Right")},moveCursorLeftWithoutShift:function(e){var t=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(t=this._moveLeft(e,"selectionStart")),this.selectionEnd=this.selectionStart,t},moveCursorLeftWithShift:function(e){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(e,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(e,"selectionStart")):void 0},moveCursorRight:function(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",e)},_moveCursorLeftOrRight:function(e,t){var n="moveCursor"+e+"With";this._currentCursorOpacity=1,t.shiftKey?n+="Shift":n+="outShift",this[n](t)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(e){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(e,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(e){var t=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(t=this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,t},removeChars:function(e,t){"undefined"===typeof t&&(t=e+1),this.removeStyleFromTo(e,t),this._text.splice(e,t-e),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(e,t,n,i){"undefined"===typeof i&&(i=n),i>n&&this.removeStyleFromTo(n,i);var o=r.util.string.graphemeSplit(e);this.insertNewStyleBlock(o,n,t),this._text=[].concat(this._text.slice(0,n),o,this._text.slice(i)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var e=r.util.toFixed,t=/ +/g;r.util.object.extend(r.Text.prototype,{_toSVG:function(){var e=this._getSVGLeftTopOffsets(),t=this._getSVGTextAndBg(e.textTop,e.textLeft);return this._wrapSVGTextAndBg(t)},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(e){var t=this.getSvgTextDecoration(this);return[e.textBgRects.join(""),'\t\t<text xml:space="preserve" ',this.fontFamily?'font-family="'+this.fontFamily.replace(/"/g,"'")+'" ':"",this.fontSize?'font-size="'+this.fontSize+'" ':"",this.fontStyle?'font-style="'+this.fontStyle+'" ':"",this.fontWeight?'font-weight="'+this.fontWeight+'" ':"",t?'text-decoration="'+t+'" ':"",'style="',this.getSvgStyles(!0),'"',this.addPaintOrder()," >",e.textSpans.join(""),"</text>\n"]},_getSVGTextAndBg:function(e,t){var n,i=[],r=[],o=e;this._setSVGBg(r);for(var a=0,s=this._textLines.length;a<s;a++)n=this._getLineLeftOffset(a),(this.textBackgroundColor||this.styleHas("textBackgroundColor",a))&&this._setSVGTextLineBg(r,a,t+n,o),this._setSVGTextLineText(i,a,t+n,o),o+=this.getHeightOfLine(a);return{textSpans:i,textBgRects:r}},_createTextCharSpan:function(n,i,o,a){var s=n!==n.trim()||n.match(t),u=this.getSvgSpanStyles(i,s),l=u?'style="'+u+'"':"",c=i.deltaY,d="",h=r.Object.NUM_FRACTION_DIGITS;return c&&(d=' dy="'+e(c,h)+'" '),['<tspan x="',e(o,h),'" y="',e(a,h),'" ',d,l,">",r.util.string.escapeXml(n),"</tspan>"].join("")},_setSVGTextLineText:function(e,t,n,i){var r,o,a,s,u,l=this.getHeightOfLine(t),c=-1!==this.textAlign.indexOf("justify"),d="",h=0,f=this._textLines[t];i+=l*(1-this._fontSizeFraction)/this.lineHeight;for(var p=0,g=f.length-1;p<=g;p++)u=p===g||this.charSpacing,d+=f[p],a=this.__charBounds[t][p],0===h?(n+=a.kernedWidth-a.width,h+=a.width):h+=a.kernedWidth,c&&!u&&this._reSpaceAndTab.test(f[p])&&(u=!0),u||(r=r||this.getCompleteStyleDeclaration(t,p),o=this.getCompleteStyleDeclaration(t,p+1),u=this._hasStyleChangedForSvg(r,o)),u&&(s=this._getStyleDeclaration(t,p)||{},e.push(this._createTextCharSpan(d,s,n,i)),d="",r=o,n+=h,h=0)},_pushTextBgRect:function(t,n,i,o,a,s){var u=r.Object.NUM_FRACTION_DIGITS;t.push("\t\t<rect ",this._getFillAttributes(n),' x="',e(i,u),'" y="',e(o,u),'" width="',e(a,u),'" height="',e(s,u),'"></rect>\n')},_setSVGTextLineBg:function(e,t,n,i){for(var r,o,a=this._textLines[t],s=this.getHeightOfLine(t)/this.lineHeight,u=0,l=0,c=this.getValueOfPropertyAt(t,0,"textBackgroundColor"),d=0,h=a.length;d<h;d++)r=this.__charBounds[t][d],(o=this.getValueOfPropertyAt(t,d,"textBackgroundColor"))!==c?(c&&this._pushTextBgRect(e,c,n+l,i,u,s),l=r.left,u=r.width,c=o):u+=r.kernedWidth;o&&this._pushTextBgRect(e,o,n+l,i,u,s)},_getFillAttributes:function(e){var t=e&&"string"===typeof e?new r.Color(e):"";return t&&t.getSource()&&1!==t.getAlpha()?'opacity="'+t.getAlpha()+'" fill="'+t.setAlpha(1).toRgb()+'"':'fill="'+e+'"'},_getSVGLineTopOffset:function(e){for(var t,n=0,i=0;i<e;i++)n+=this.getHeightOfLine(i);return t=this.getHeightOfLine(i),{lineTop:n,offset:(this._fontSizeMult-this._fontSizeFraction)*t/(this.lineHeight*this._fontSizeMult)}},getSvgStyles:function(e){return r.Object.prototype.getSvgStyles.call(this,e)+" white-space: pre;"}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={});t.Textbox=t.util.createClass(t.IText,t.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:2,__cachedLines:null,lockScalingFlip:!0,noScaleCache:!1,_dimensionAffectingProps:t.Text.prototype._dimensionAffectingProps.concat("width"),_wordJoiners:/[ \t\r]/,splitByGrapheme:!1,initDimensions:function(){this.__skipDimension||(this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this._clearCache(),this.dynamicMinWidth=0,this._styleMap=this._generateStyleMap(this._splitText()),this.dynamicMinWidth>this.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(e){for(var t=0,n=0,i=0,r={},o=0;o<e.graphemeLines.length;o++)"\n"===e.graphemeText[i]&&o>0?(n=0,i++,t++):!this.splitByGrapheme&&this._reSpaceAndTab.test(e.graphemeText[i])&&o>0&&(n++,i++),r[o]={line:t,offset:n},i+=e.graphemeLines[o].length,n+=e.graphemeLines[o].length;return r},styleHas:function(e,n){if(this._styleMap&&!this.isWrapping){var i=this._styleMap[n];i&&(n=i.line)}return t.Text.prototype.styleHas.call(this,e,n)},isEmptyStyles:function(e){if(!this.styles)return!0;var t,n,i=0,r=!1,o=this._styleMap[e],a=this._styleMap[e+1];for(var s in o&&(e=o.line,i=o.offset),a&&(r=a.line===e,t=a.offset),n="undefined"===typeof e?this.styles:{line:this.styles[e]})for(var u in n[s])if(u>=i&&(!r||u<t))for(var l in n[s][u])return!1;return!0},_getStyleDeclaration:function(e,t){if(this._styleMap&&!this.isWrapping){var n=this._styleMap[e];if(!n)return null;e=n.line,t=n.offset+t}return this.callSuper("_getStyleDeclaration",e,t)},_setStyleDeclaration:function(e,t,n){var i=this._styleMap[e];e=i.line,t=i.offset+t,this.styles[e][t]=n},_deleteStyleDeclaration:function(e,t){var n=this._styleMap[e];e=n.line,t=n.offset+t,delete this.styles[e][t]},_getLineStyle:function(e){var t=this._styleMap[e];return!!this.styles[t.line]},_setLineStyle:function(e){var t=this._styleMap[e];this.styles[t.line]={}},_wrapText:function(e,t){var n,i=[];for(this.isWrapping=!0,n=0;n<e.length;n++)i=i.concat(this._wrapLine(e[n],n,t));return this.isWrapping=!1,i},_measureWord:function(e,t,n){var i,r=0;n=n||0;for(var o=0,a=e.length;o<a;o++){r+=this._getGraphemeBox(e[o],t,o+n,i,true).kernedWidth,i=e[o]}return r},_wrapLine:function(e,n,i,r){var o=0,a=this.splitByGrapheme,s=[],u=[],l=a?t.util.string.graphemeSplit(e):e.split(this._wordJoiners),c="",d=0,h=a?"":" ",f=0,p=0,g=0,v=!0,m=this._getWidthOfCharSpacing();r=r||0;0===l.length&&l.push([]),i-=r;for(var _=0;_<l.length;_++)c=a?l[_]:t.util.string.graphemeSplit(l[_]),f=this._measureWord(c,n,d),d+=c.length,(o+=p+f-m)>=i&&!v?(s.push(u),u=[],o=f,v=!0):o+=m,v||a||u.push(h),u=u.concat(c),p=a?0:this._measureWord([h],n,d),d++,v=!1,f>g&&(g=f);return _&&s.push(u),g+r>this.dynamicMinWidth&&(this.dynamicMinWidth=g-m+r),s},isEndOfWrapping:function(e){return!this._styleMap[e+1]||this._styleMap[e+1].line!==this._styleMap[e].line},missingNewlineOffset:function(e){return this.splitByGrapheme?this.isEndOfWrapping(e)?1:0:1},_splitTextIntoLines:function(e){for(var n=t.Text.prototype._splitTextIntoLines.call(this,e),i=this._wrapText(n.lines,this.width),r=new Array(i.length),o=0;o<i.length;o++)r[o]=i[o].join("");return n.lines=r,n.graphemeLines=i,n},getMinWidth:function(){return Math.max(this.minWidth,this.dynamicMinWidth)},_removeExtraneousStyles:function(){var e={};for(var t in this._styleMap)this._textLines[t]&&(e[this._styleMap[t].line]=1);for(var t in this.styles)e[t]||delete this.styles[t]},toObject:function(e){return this.callSuper("toObject",["minWidth","splitByGrapheme"].concat(e))}}),t.Textbox.fromObject=function(e,n){return t.Object._fromObject("Textbox",e,n,"text")}}(t),function(){var e=r.controlsUtils,t=e.scaleSkewCursorStyleHandler,n=e.scaleCursorStyleHandler,i=e.scalingEqually,o=e.scalingYOrSkewingX,a=e.scalingXOrSkewingY,s=e.scaleOrSkewActionName,u=r.Object.prototype.controls;if(u.ml=new r.Control({x:-.5,y:0,cursorStyleHandler:t,actionHandler:a,getActionName:s}),u.mr=new r.Control({x:.5,y:0,cursorStyleHandler:t,actionHandler:a,getActionName:s}),u.mb=new r.Control({x:0,y:.5,cursorStyleHandler:t,actionHandler:o,getActionName:s}),u.mt=new r.Control({x:0,y:-.5,cursorStyleHandler:t,actionHandler:o,getActionName:s}),u.tl=new r.Control({x:-.5,y:-.5,cursorStyleHandler:n,actionHandler:i}),u.tr=new r.Control({x:.5,y:-.5,cursorStyleHandler:n,actionHandler:i}),u.bl=new r.Control({x:-.5,y:.5,cursorStyleHandler:n,actionHandler:i}),u.br=new r.Control({x:.5,y:.5,cursorStyleHandler:n,actionHandler:i}),u.mtr=new r.Control({x:0,y:-.5,actionHandler:e.rotationWithSnapping,cursorStyleHandler:e.rotationStyleHandler,offsetY:-40,withConnection:!0,actionName:"rotate"}),r.Textbox){var l=r.Textbox.prototype.controls={};l.mtr=u.mtr,l.tr=u.tr,l.br=u.br,l.tl=u.tl,l.bl=u.bl,l.mt=u.mt,l.mb=u.mb,l.mr=new r.Control({x:.5,y:0,actionHandler:e.changeWidth,cursorStyleHandler:t,actionName:"resizing"}),l.ml=new r.Control({x:-.5,y:0,actionHandler:e.changeWidth,cursorStyleHandler:t,actionName:"resizing"})}}()},83872:function(e){"use strict";var t="Function.prototype.bind called on incompatible ",n=Array.prototype.slice,i=Object.prototype.toString,r="[object Function]";e.exports=function(e){var o=this;if("function"!==typeof o||i.call(o)!==r)throw new TypeError(t+o);for(var a,s=n.call(arguments,1),u=Math.max(0,o.length-s.length),l=[],c=0;c<u;c++)l.push("$"+c);if(a=Function("binder","return function ("+l.join(",")+"){ return binder.apply(this,arguments); }")((function(){if(this instanceof a){var t=o.apply(this,s.concat(n.call(arguments)));return Object(t)===t?t:this}return o.apply(e,s.concat(n.call(arguments)))})),o.prototype){var d=function(){};d.prototype=o.prototype,a.prototype=new d,d.prototype=null}return a}},62018:function(e,t,n){"use strict";var i=n(83872);e.exports=Function.prototype.bind||i},11333:function(e,t,n){"use strict";var i,r=SyntaxError,o=Function,a=TypeError,s=function(e){try{return o('"use strict"; return ('+e+").constructor;")()}catch(t){}},u=Object.getOwnPropertyDescriptor;if(u)try{u({},"")}catch(D){u=null}var l=function(){throw new a},c=u?function(){try{return l}catch(e){try{return u(arguments,"callee").get}catch(t){return l}}}():l,d=n(69718)(),h=Object.getPrototypeOf||function(e){return e.__proto__},f={},p="undefined"===typeof Uint8Array?i:h(Uint8Array),g={"%AggregateError%":"undefined"===typeof AggregateError?i:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"===typeof ArrayBuffer?i:ArrayBuffer,"%ArrayIteratorPrototype%":d?h([][Symbol.iterator]()):i,"%AsyncFromSyncIteratorPrototype%":i,"%AsyncFunction%":f,"%AsyncGenerator%":f,"%AsyncGeneratorFunction%":f,"%AsyncIteratorPrototype%":f,"%Atomics%":"undefined"===typeof Atomics?i:Atomics,"%BigInt%":"undefined"===typeof BigInt?i:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"===typeof DataView?i:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"===typeof Float32Array?i:Float32Array,"%Float64Array%":"undefined"===typeof Float64Array?i:Float64Array,"%FinalizationRegistry%":"undefined"===typeof FinalizationRegistry?i:FinalizationRegistry,"%Function%":o,"%GeneratorFunction%":f,"%Int8Array%":"undefined"===typeof Int8Array?i:Int8Array,"%Int16Array%":"undefined"===typeof Int16Array?i:Int16Array,"%Int32Array%":"undefined"===typeof Int32Array?i:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":d?h(h([][Symbol.iterator]())):i,"%JSON%":"object"===typeof JSON?JSON:i,"%Map%":"undefined"===typeof Map?i:Map,"%MapIteratorPrototype%":"undefined"!==typeof Map&&d?h((new Map)[Symbol.iterator]()):i,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"===typeof Promise?i:Promise,"%Proxy%":"undefined"===typeof Proxy?i:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"===typeof Reflect?i:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"===typeof Set?i:Set,"%SetIteratorPrototype%":"undefined"!==typeof Set&&d?h((new Set)[Symbol.iterator]()):i,"%SharedArrayBuffer%":"undefined"===typeof SharedArrayBuffer?i:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":d?h(""[Symbol.iterator]()):i,"%Symbol%":d?Symbol:i,"%SyntaxError%":r,"%ThrowTypeError%":c,"%TypedArray%":p,"%TypeError%":a,"%Uint8Array%":"undefined"===typeof Uint8Array?i:Uint8Array,"%Uint8ClampedArray%":"undefined"===typeof Uint8ClampedArray?i:Uint8ClampedArray,"%Uint16Array%":"undefined"===typeof Uint16Array?i:Uint16Array,"%Uint32Array%":"undefined"===typeof Uint32Array?i:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"===typeof WeakMap?i:WeakMap,"%WeakRef%":"undefined"===typeof WeakRef?i:WeakRef,"%WeakSet%":"undefined"===typeof WeakSet?i:WeakSet},v=function e(t){var n;if("%AsyncFunction%"===t)n=s("async function () {}");else if("%GeneratorFunction%"===t)n=s("function* () {}");else if("%AsyncGeneratorFunction%"===t)n=s("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(n=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var r=e("%AsyncGenerator%");r&&(n=h(r.prototype))}return g[t]=n,n},m={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},_=n(62018),y=n(13705),b=_.call(Function.call,Array.prototype.concat),w=_.call(Function.apply,Array.prototype.splice),C=_.call(Function.call,String.prototype.replace),k=_.call(Function.call,String.prototype.slice),S=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,x=/\\(\\)?/g,L=function(e){var t=k(e,0,1),n=k(e,-1);if("%"===t&&"%"!==n)throw new r("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new r("invalid intrinsic syntax, expected opening `%`");var i=[];return C(e,S,(function(e,t,n,r){i[i.length]=n?C(r,x,"$1"):t||e})),i},E=function(e,t){var n,i=e;if(y(m,i)&&(i="%"+(n=m[i])[0]+"%"),y(g,i)){var o=g[i];if(o===f&&(o=v(i)),"undefined"===typeof o&&!t)throw new a("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:n,name:i,value:o}}throw new r("intrinsic "+e+" does not exist!")};e.exports=function(e,t){if("string"!==typeof e||0===e.length)throw new a("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!==typeof t)throw new a('"allowMissing" argument must be a boolean');var n=L(e),i=n.length>0?n[0]:"",o=E("%"+i+"%",t),s=o.name,l=o.value,c=!1,d=o.alias;d&&(i=d[0],w(n,b([0,1],d)));for(var h=1,f=!0;h<n.length;h+=1){var p=n[h],v=k(p,0,1),m=k(p,-1);if(('"'===v||"'"===v||"`"===v||'"'===m||"'"===m||"`"===m)&&v!==m)throw new r("property names with quotes must have matching quotes");if("constructor"!==p&&f||(c=!0),y(g,s="%"+(i+="."+p)+"%"))l=g[s];else if(null!=l){if(!(p in l)){if(!t)throw new a("base intrinsic for "+e+" exists, but the property is not available.");return}if(u&&h+1>=n.length){var _=u(l,p);l=(f=!!_)&&"get"in _&&!("originalValue"in _.get)?_.get:l[p]}else f=y(l,p),l=l[p];f&&!c&&(g[s]=l)}}return l}},69718:function(e,t,n){"use strict";var i="undefined"!==typeof Symbol&&Symbol,r=n(30596);e.exports=function(){return"function"===typeof i&&("function"===typeof Symbol&&("symbol"===typeof i("foo")&&("symbol"===typeof Symbol("bar")&&r())))}},30596:function(e){"use strict";e.exports=function(){if("function"!==typeof Symbol||"function"!==typeof Object.getOwnPropertySymbols)return!1;if("symbol"===typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"===typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(t in e[t]=42,e)return!1;if("function"===typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"===typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"===typeof Object.getOwnPropertyDescriptor){var r=Object.getOwnPropertyDescriptor(e,t);if(42!==r.value||!0!==r.enumerable)return!1}return!0}},13705:function(e,t,n){"use strict";var i=n(62018);e.exports=i.call(Function.call,Object.prototype.hasOwnProperty)},63993:function(e,t,n){"use strict";var i=n(55775),r={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function u(e){return i.isMemo(e)?a:s[e.$$typeof]||r}s[i.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[i.Memo]=a;var l=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,h=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,p=Object.prototype;e.exports=function e(t,n,i){if("string"!==typeof n){if(p){var r=f(n);r&&r!==p&&e(t,r,i)}var a=c(n);d&&(a=a.concat(d(n)));for(var s=u(t),g=u(n),v=0;v<a.length;++v){var m=a[v];if(!o[m]&&(!i||!i[m])&&(!g||!g[m])&&(!s||!s[m])){var _=h(n,m);try{l(t,m,_)}catch(y){}}}}return t}},85496:function(e,t){"use strict";var n="function"===typeof Symbol&&Symbol.for,i=n?Symbol.for("react.element"):60103,r=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,a=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,u=n?Symbol.for("react.provider"):60109,l=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,h=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,p=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,v=n?Symbol.for("react.lazy"):60116,m=n?Symbol.for("react.block"):60121,_=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,b=n?Symbol.for("react.scope"):60119;function w(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case i:switch(e=e.type){case c:case d:case o:case s:case a:case f:return e;default:switch(e=e&&e.$$typeof){case l:case h:case v:case g:case u:return e;default:return t}}case r:return t}}}function C(e){return w(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=l,t.ContextProvider=u,t.Element=i,t.ForwardRef=h,t.Fragment=o,t.Lazy=v,t.Memo=g,t.Portal=r,t.Profiler=s,t.StrictMode=a,t.Suspense=f,t.isAsyncMode=function(e){return C(e)||w(e)===c},t.isConcurrentMode=C,t.isContextConsumer=function(e){return w(e)===l},t.isContextProvider=function(e){return w(e)===u},t.isElement=function(e){return"object"===typeof e&&null!==e&&e.$$typeof===i},t.isForwardRef=function(e){return w(e)===h},t.isFragment=function(e){return w(e)===o},t.isLazy=function(e){return w(e)===v},t.isMemo=function(e){return w(e)===g},t.isPortal=function(e){return w(e)===r},t.isProfiler=function(e){return w(e)===s},t.isStrictMode=function(e){return w(e)===a},t.isSuspense=function(e){return w(e)===f},t.isValidElementType=function(e){return"string"===typeof e||"function"===typeof e||e===o||e===d||e===s||e===a||e===f||e===p||"object"===typeof e&&null!==e&&(e.$$typeof===v||e.$$typeof===g||e.$$typeof===u||e.$$typeof===l||e.$$typeof===h||e.$$typeof===_||e.$$typeof===y||e.$$typeof===b||e.$$typeof===m)},t.typeOf=w},55775:function(e,t,n){"use strict";e.exports=n(85496)},60060:function(e){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},99383:function(e,t,n){var i=n(80651)(n(4210),"DataView");e.exports=i},11724:function(e,t,n){var i=n(73206),r=n(59288),o=n(20740),a=n(40900),s=n(99762);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}u.prototype.clear=i,u.prototype.delete=r,u.prototype.get=o,u.prototype.has=a,u.prototype.set=s,e.exports=u},87889:function(e,t,n){var i=n(89330),r=n(12671),o=n(15960),a=n(34508),s=n(56062);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}u.prototype.clear=i,u.prototype.delete=r,u.prototype.get=o,u.prototype.has=a,u.prototype.set=s,e.exports=u},10628:function(e,t,n){var i=n(80651)(n(4210),"Map");e.exports=i},50042:function(e,t,n){var i=n(78846),r=n(53799),o=n(15778),a=n(53032),s=n(70420);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}u.prototype.clear=i,u.prototype.delete=r,u.prototype.get=o,u.prototype.has=a,u.prototype.set=s,e.exports=u},89883:function(e,t,n){var i=n(80651)(n(4210),"Promise");e.exports=i},55092:function(e,t,n){var i=n(80651)(n(4210),"Set");e.exports=i},53530:function(e,t,n){var i=n(50042),r=n(18892),o=n(77750);function a(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new i;++t<n;)this.add(e[t])}a.prototype.add=a.prototype.push=r,a.prototype.has=o,e.exports=a},48368:function(e,t,n){var i=n(87889),r=n(68913),o=n(58444),a=n(7606),s=n(85993),u=n(11987);function l(e){var t=this.__data__=new i(e);this.size=t.size}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=s,l.prototype.set=u,e.exports=l},96298:function(e,t,n){var i=n(4210).Symbol;e.exports=i},64345:function(e,t,n){var i=n(4210).Uint8Array;e.exports=i},16479:function(e,t,n){var i=n(80651)(n(4210),"WeakMap");e.exports=i},75049:function(e){e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},50294:function(e){e.exports=function(e,t){for(var n=-1,i=null==e?0:e.length;++n<i&&!1!==t(e[n],n,e););return e}},42498:function(e){e.exports=function(e,t){for(var n=-1,i=null==e?0:e.length,r=0,o=[];++n<i;){var a=e[n];t(a,n,e)&&(o[r++]=a)}return o}},42311:function(e,t,n){var i=n(5813),r=n(43917),o=n(39262),a=n(76966),s=n(47247),u=n(57421),l=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),c=!n&&r(e),d=!n&&!c&&a(e),h=!n&&!c&&!d&&u(e),f=n||c||d||h,p=f?i(e.length,String):[],g=p.length;for(var v in e)!t&&!l.call(e,v)||f&&("length"==v||d&&("offset"==v||"parent"==v)||h&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||s(v,g))||p.push(v);return p}},79746:function(e){e.exports=function(e,t){for(var n=-1,i=null==e?0:e.length,r=Array(i);++n<i;)r[n]=t(e[n],n,e);return r}},96827:function(e){e.exports=function(e,t){for(var n=-1,i=t.length,r=e.length;++n<i;)e[r+n]=t[n];return e}},63102:function(e){e.exports=function(e,t){for(var n=-1,i=null==e?0:e.length;++n<i;)if(t(e[n],n,e))return!0;return!1}},49402:function(e,t,n){var i=n(34778),r=n(93841),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var a=e[t];o.call(e,t)&&r(a,n)&&(void 0!==n||t in e)||i(e,t,n)}},71394:function(e,t,n){var i=n(93841);e.exports=function(e,t){for(var n=e.length;n--;)if(i(e[n][0],t))return n;return-1}},68007:function(e,t,n){var i=n(77516),r=n(66005);e.exports=function(e,t){return e&&i(t,r(t),e)}},62029:function(e,t,n){var i=n(77516),r=n(94370);e.exports=function(e,t){return e&&i(t,r(t),e)}},34778:function(e,t,n){var i=n(53789);e.exports=function(e,t,n){"__proto__"==t&&i?i(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},60301:function(e,t,n){var i=n(48368),r=n(50294),o=n(49402),a=n(68007),s=n(62029),u=n(19130),l=n(91342),c=n(54801),d=n(88333),h=n(72038),f=n(73561),p=n(84047),g=n(50665),v=n(72280),m=n(59645),_=n(39262),y=n(76966),b=n(64818),w=n(13108),C=n(76095),k=n(66005),S=1,x=2,L=4,E="[object Arguments]",D="[object Function]",N="[object GeneratorFunction]",M="[object Object]",T={};T[E]=T["[object Array]"]=T["[object ArrayBuffer]"]=T["[object DataView]"]=T["[object Boolean]"]=T["[object Date]"]=T["[object Float32Array]"]=T["[object Float64Array]"]=T["[object Int8Array]"]=T["[object Int16Array]"]=T["[object Int32Array]"]=T["[object Map]"]=T["[object Number]"]=T[M]=T["[object RegExp]"]=T["[object Set]"]=T["[object String]"]=T["[object Symbol]"]=T["[object Uint8Array]"]=T["[object Uint8ClampedArray]"]=T["[object Uint16Array]"]=T["[object Uint32Array]"]=!0,T["[object Error]"]=T[D]=T["[object WeakMap]"]=!1,e.exports=function e(t,n,I,O,A,R){var P,Z=n&S,F=n&x,j=n&L;if(I&&(P=A?I(t,O,A,R):I(t)),void 0!==P)return P;if(!w(t))return t;var H=_(t);if(H){if(P=g(t),!Z)return l(t,P)}else{var B=p(t),z=B==D||B==N;if(y(t))return u(t,Z);if(B==M||B==E||z&&!A){if(P=F||z?{}:m(t),!Z)return F?d(t,s(P,t)):c(t,a(P,t))}else{if(!T[B])return A?t:{};P=v(t,B,Z)}}R||(R=new i);var W=R.get(t);if(W)return W;if(R.set(t,P),C(t))return t.forEach((function(i){P.add(e(i,n,I,i,t,R))})),P;if(b(t))return t.forEach((function(i,r){P.set(r,e(i,n,I,r,t,R))})),P;var V=j?F?f:h:F?keysIn:k,Y=H?void 0:V(t);return r(Y||t,(function(i,r){Y&&(i=t[r=i]),o(P,r,e(i,n,I,r,t,R))})),P}},46474:function(e,t,n){var i=n(13108),r=Object.create,o=function(){function e(){}return function(t){if(!i(t))return{};if(r)return r(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},31368:function(e,t,n){var i=n(96827),r=n(25812);e.exports=function e(t,n,o,a,s){var u=-1,l=t.length;for(o||(o=r),s||(s=[]);++u<l;){var c=t[u];n>0&&o(c)?n>1?e(c,n-1,o,a,s):i(s,c):a||(s[s.length]=c)}return s}},48661:function(e,t,n){var i=n(33576),r=n(55852);e.exports=function(e,t){for(var n=0,o=(t=i(t,e)).length;null!=e&&n<o;)e=e[r(t[n++])];return n&&n==o?e:void 0}},30014:function(e,t,n){var i=n(96827),r=n(39262);e.exports=function(e,t,n){var o=t(e);return r(e)?o:i(o,n(e))}},46316:function(e,t,n){var i=n(96298),r=n(30636),o=n(86861),a="[object Null]",s="[object Undefined]",u=i?i.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?s:a:u&&u in Object(e)?r(e):o(e)}},13175:function(e,t,n){var i=n(46316),r=n(71983),o="[object Arguments]";e.exports=function(e){return r(e)&&i(e)==o}},1831:function(e,t,n){var i=n(35986),r=n(71983);e.exports=function e(t,n,o,a,s){return t===n||(null==t||null==n||!r(t)&&!r(n)?t!==t&&n!==n:i(t,n,o,a,e,s))}},35986:function(e,t,n){var i=n(48368),r=n(29435),o=n(15893),a=n(12553),s=n(84047),u=n(39262),l=n(76966),c=n(57421),d=1,h="[object Arguments]",f="[object Array]",p="[object Object]",g=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,v,m,_){var y=u(e),b=u(t),w=y?f:s(e),C=b?f:s(t),k=(w=w==h?p:w)==p,S=(C=C==h?p:C)==p,x=w==C;if(x&&l(e)){if(!l(t))return!1;y=!0,k=!1}if(x&&!k)return _||(_=new i),y||c(e)?r(e,t,n,v,m,_):o(e,t,w,n,v,m,_);if(!(n&d)){var L=k&&g.call(e,"__wrapped__"),E=S&&g.call(t,"__wrapped__");if(L||E){var D=L?e.value():e,N=E?t.value():t;return _||(_=new i),m(D,N,n,v,_)}}return!!x&&(_||(_=new i),a(e,t,n,v,m,_))}},57535:function(e,t,n){var i=n(84047),r=n(71983),o="[object Map]";e.exports=function(e){return r(e)&&i(e)==o}},54437:function(e,t,n){var i=n(99539),r=n(73095),o=n(13108),a=n(69913),s=/^\[object .+?Constructor\]$/,u=Function.prototype,l=Object.prototype,c=u.toString,d=l.hasOwnProperty,h=RegExp("^"+c.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||r(e))&&(i(e)?h:s).test(a(e))}},19543:function(e,t,n){var i=n(84047),r=n(71983),o="[object Set]";e.exports=function(e){return r(e)&&i(e)==o}},65965:function(e,t,n){var i=n(46316),r=n(13392),o=n(71983),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&r(e.length)&&!!a[i(e)]}},30675:function(e,t,n){var i=n(965),r=n(96379),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!i(e))return r(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},76085:function(e,t,n){var i=n(13108),r=n(965),o=n(27732),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!i(e))return o(e);var t=r(e),n=[];for(var s in e)("constructor"!=s||!t&&a.call(e,s))&&n.push(s);return n}},32559:function(e,t,n){var i=n(49402),r=n(33576),o=n(47247),a=n(13108),s=n(55852);e.exports=function(e,t,n,u){if(!a(e))return e;for(var l=-1,c=(t=r(t,e)).length,d=c-1,h=e;null!=h&&++l<c;){var f=s(t[l]),p=n;if(l!=d){var g=h[f];void 0===(p=u?u(g,f,h):void 0)&&(p=a(g)?g:o(t[l+1])?[]:{})}i(h,f,p),h=h[f]}return e}},14360:function(e,t,n){var i=n(41853),r=n(53789),o=n(70396),a=r?function(e,t){return r(e,"toString",{configurable:!0,enumerable:!1,value:i(t),writable:!0})}:o;e.exports=a},80296:function(e){e.exports=function(e,t,n){var i=-1,r=e.length;t<0&&(t=-t>r?0:r+t),(n=n>r?r:n)<0&&(n+=r),r=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(r);++i<r;)o[i]=e[i+t];return o}},5813:function(e){e.exports=function(e,t){for(var n=-1,i=Array(e);++n<e;)i[n]=t(n);return i}},24714:function(e,t,n){var i=n(96298),r=n(79746),o=n(39262),a=n(89718),s=1/0,u=i?i.prototype:void 0,l=u?u.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return r(t,e)+"";if(a(t))return l?l.call(t):"";var n=t+"";return"0"==n&&1/t==-s?"-0":n}},35313:function(e){e.exports=function(e){return function(t){return e(t)}}},88343:function(e,t,n){var i=n(33576),r=n(51478),o=n(47728),a=n(55852);e.exports=function(e,t){return t=i(t,e),null==(e=o(e,t))||delete e[a(r(t))]}},15176:function(e){e.exports=function(e,t){return e.has(t)}},33576:function(e,t,n){var i=n(39262),r=n(24445),o=n(34786),a=n(20403);e.exports=function(e,t){return i(e)?e:r(e,t)?[e]:o(a(e))}},78370:function(e,t,n){var i=n(64345);e.exports=function(e){var t=new e.constructor(e.byteLength);return new i(t).set(new i(e)),t}},19130:function(e,t,n){e=n.nmd(e);var i=n(4210),r=t&&!t.nodeType&&t,o=r&&e&&!e.nodeType&&e,a=o&&o.exports===r?i.Buffer:void 0,s=a?a.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,i=s?s(n):new e.constructor(n);return e.copy(i),i}},45587:function(e,t,n){var i=n(78370);e.exports=function(e,t){var n=t?i(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},76327:function(e){var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},75036:function(e,t,n){var i=n(96298),r=i?i.prototype:void 0,o=r?r.valueOf:void 0;e.exports=function(e){return o?Object(o.call(e)):{}}},12528:function(e,t,n){var i=n(78370);e.exports=function(e,t){var n=t?i(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},91342:function(e){e.exports=function(e,t){var n=-1,i=e.length;for(t||(t=Array(i));++n<i;)t[n]=e[n];return t}},77516:function(e,t,n){var i=n(49402),r=n(34778);e.exports=function(e,t,n,o){var a=!n;n||(n={});for(var s=-1,u=t.length;++s<u;){var l=t[s],c=o?o(n[l],e[l],l,n,e):void 0;void 0===c&&(c=e[l]),a?r(n,l,c):i(n,l,c)}return n}},54801:function(e,t,n){var i=n(77516),r=n(76054);e.exports=function(e,t){return i(e,r(e),t)}},88333:function(e,t,n){var i=n(77516),r=n(5226);e.exports=function(e,t){return i(e,r(e),t)}},79695:function(e,t,n){var i=n(4210)["__core-js_shared__"];e.exports=i},1594:function(e,t,n){var i=n(267);e.exports=function(e){return i(e)?void 0:e}},53789:function(e,t,n){var i=n(80651),r=function(){try{var e=i(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();e.exports=r},29435:function(e,t,n){var i=n(53530),r=n(63102),o=n(15176),a=1,s=2;e.exports=function(e,t,n,u,l,c){var d=n&a,h=e.length,f=t.length;if(h!=f&&!(d&&f>h))return!1;var p=c.get(e);if(p&&c.get(t))return p==t;var g=-1,v=!0,m=n&s?new i:void 0;for(c.set(e,t),c.set(t,e);++g<h;){var _=e[g],y=t[g];if(u)var b=d?u(y,_,g,t,e,c):u(_,y,g,e,t,c);if(void 0!==b){if(b)continue;v=!1;break}if(m){if(!r(t,(function(e,t){if(!o(m,t)&&(_===e||l(_,e,n,u,c)))return m.push(t)}))){v=!1;break}}else if(_!==y&&!l(_,y,n,u,c)){v=!1;break}}return c.delete(e),c.delete(t),v}},15893:function(e,t,n){var i=n(96298),r=n(64345),o=n(93841),a=n(29435),s=n(30040),u=n(86483),l=1,c=2,d="[object Boolean]",h="[object Date]",f="[object Error]",p="[object Map]",g="[object Number]",v="[object RegExp]",m="[object Set]",_="[object String]",y="[object Symbol]",b="[object ArrayBuffer]",w="[object DataView]",C=i?i.prototype:void 0,k=C?C.valueOf:void 0;e.exports=function(e,t,n,i,C,S,x){switch(n){case w:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case b:return!(e.byteLength!=t.byteLength||!S(new r(e),new r(t)));case d:case h:case g:return o(+e,+t);case f:return e.name==t.name&&e.message==t.message;case v:case _:return e==t+"";case p:var L=s;case m:var E=i&l;if(L||(L=u),e.size!=t.size&&!E)return!1;var D=x.get(e);if(D)return D==t;i|=c,x.set(e,t);var N=a(L(e),L(t),i,C,S,x);return x.delete(e),N;case y:if(k)return k.call(e)==k.call(t)}return!1}},12553:function(e,t,n){var i=n(72038),r=1,o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,a,s,u){var l=n&r,c=i(e),d=c.length;if(d!=i(t).length&&!l)return!1;for(var h=d;h--;){var f=c[h];if(!(l?f in t:o.call(t,f)))return!1}var p=u.get(e);if(p&&u.get(t))return p==t;var g=!0;u.set(e,t),u.set(t,e);for(var v=l;++h<d;){var m=e[f=c[h]],_=t[f];if(a)var y=l?a(_,m,f,t,e,u):a(m,_,f,e,t,u);if(!(void 0===y?m===_||s(m,_,n,a,u):y)){g=!1;break}v||(v="constructor"==f)}if(g&&!v){var b=e.constructor,w=t.constructor;b==w||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof w&&w instanceof w||(g=!1)}return u.delete(e),u.delete(t),g}},95057:function(e,t,n){var i=n(68369),r=n(80780),o=n(21762);e.exports=function(e){return o(r(e,void 0,i),e+"")}},86876:function(e,t,n){var i="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=i},72038:function(e,t,n){var i=n(30014),r=n(76054),o=n(66005);e.exports=function(e){return i(e,o,r)}},73561:function(e,t,n){var i=n(30014),r=n(5226),o=n(94370);e.exports=function(e){return i(e,o,r)}},95680:function(e,t,n){var i=n(94030);e.exports=function(e,t){var n=e.__data__;return i(t)?n["string"==typeof t?"string":"hash"]:n.map}},80651:function(e,t,n){var i=n(54437),r=n(47722);e.exports=function(e,t){var n=r(e,t);return i(n)?n:void 0}},2629:function(e,t,n){var i=n(16648)(Object.getPrototypeOf,Object);e.exports=i},30636:function(e,t,n){var i=n(96298),r=Object.prototype,o=r.hasOwnProperty,a=r.toString,s=i?i.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),n=e[s];try{e[s]=void 0;var i=!0}catch(u){}var r=a.call(e);return i&&(t?e[s]=n:delete e[s]),r}},76054:function(e,t,n){var i=n(42498),r=n(8304),o=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(e){return null==e?[]:(e=Object(e),i(a(e),(function(t){return o.call(e,t)})))}:r;e.exports=s},5226:function(e,t,n){var i=n(96827),r=n(2629),o=n(76054),a=n(8304),s=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)i(t,o(e)),e=r(e);return t}:a;e.exports=s},84047:function(e,t,n){var i=n(99383),r=n(10628),o=n(89883),a=n(55092),s=n(16479),u=n(46316),l=n(69913),c="[object Map]",d="[object Promise]",h="[object Set]",f="[object WeakMap]",p="[object DataView]",g=l(i),v=l(r),m=l(o),_=l(a),y=l(s),b=u;(i&&b(new i(new ArrayBuffer(1)))!=p||r&&b(new r)!=c||o&&b(o.resolve())!=d||a&&b(new a)!=h||s&&b(new s)!=f)&&(b=function(e){var t=u(e),n="[object Object]"==t?e.constructor:void 0,i=n?l(n):"";if(i)switch(i){case g:return p;case v:return c;case m:return d;case _:return h;case y:return f}return t}),e.exports=b},47722:function(e){e.exports=function(e,t){return null==e?void 0:e[t]}},73206:function(e,t,n){var i=n(53788);e.exports=function(){this.__data__=i?i(null):{},this.size=0}},59288:function(e){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},20740:function(e,t,n){var i=n(53788),r="__lodash_hash_undefined__",o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(i){var n=t[e];return n===r?void 0:n}return o.call(t,e)?t[e]:void 0}},40900:function(e,t,n){var i=n(53788),r=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return i?void 0!==t[e]:r.call(t,e)}},99762:function(e,t,n){var i=n(53788),r="__lodash_hash_undefined__";e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=i&&void 0===t?r:t,this}},50665:function(e){var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,i=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(i.index=e.index,i.input=e.input),i}},72280:function(e,t,n){var i=n(78370),r=n(45587),o=n(76327),a=n(75036),s=n(12528),u="[object Boolean]",l="[object Date]",c="[object Map]",d="[object Number]",h="[object RegExp]",f="[object Set]",p="[object String]",g="[object Symbol]",v="[object ArrayBuffer]",m="[object DataView]",_="[object Float32Array]",y="[object Float64Array]",b="[object Int8Array]",w="[object Int16Array]",C="[object Int32Array]",k="[object Uint8Array]",S="[object Uint8ClampedArray]",x="[object Uint16Array]",L="[object Uint32Array]";e.exports=function(e,t,n){var E=e.constructor;switch(t){case v:return i(e);case u:case l:return new E(+e);case m:return r(e,n);case _:case y:case b:case w:case C:case k:case S:case x:case L:return s(e,n);case c:return new E;case d:case p:return new E(e);case h:return o(e);case f:return new E;case g:return a(e)}}},59645:function(e,t,n){var i=n(46474),r=n(2629),o=n(965);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:i(r(e))}},25812:function(e,t,n){var i=n(96298),r=n(43917),o=n(39262),a=i?i.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||r(e)||!!(a&&e&&e[a])}},47247:function(e){var t=9007199254740991,n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,i){var r=typeof e;return!!(i=null==i?t:i)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e<i}},24445:function(e,t,n){var i=n(39262),r=n(89718),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(i(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!r(e))||(a.test(e)||!o.test(e)||null!=t&&e in Object(t))}},94030:function(e){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},73095:function(e,t,n){var i=n(79695),r=function(){var e=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();e.exports=function(e){return!!r&&r in e}},965:function(e){var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},89330:function(e){e.exports=function(){this.__data__=[],this.size=0}},12671:function(e,t,n){var i=n(71394),r=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=i(t,e);return!(n<0)&&(n==t.length-1?t.pop():r.call(t,n,1),--this.size,!0)}},15960:function(e,t,n){var i=n(71394);e.exports=function(e){var t=this.__data__,n=i(t,e);return n<0?void 0:t[n][1]}},34508:function(e,t,n){var i=n(71394);e.exports=function(e){return i(this.__data__,e)>-1}},56062:function(e,t,n){var i=n(71394);e.exports=function(e,t){var n=this.__data__,r=i(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}},78846:function(e,t,n){var i=n(11724),r=n(87889),o=n(10628);e.exports=function(){this.size=0,this.__data__={hash:new i,map:new(o||r),string:new i}}},53799:function(e,t,n){var i=n(95680);e.exports=function(e){var t=i(this,e).delete(e);return this.size-=t?1:0,t}},15778:function(e,t,n){var i=n(95680);e.exports=function(e){return i(this,e).get(e)}},53032:function(e,t,n){var i=n(95680);e.exports=function(e){return i(this,e).has(e)}},70420:function(e,t,n){var i=n(95680);e.exports=function(e,t){var n=i(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}},30040:function(e){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,i){n[++t]=[i,e]})),n}},77751:function(e,t,n){var i=n(95130),r=500;e.exports=function(e){var t=i(e,(function(e){return n.size===r&&n.clear(),e})),n=t.cache;return t}},53788:function(e,t,n){var i=n(80651)(Object,"create");e.exports=i},96379:function(e,t,n){var i=n(16648)(Object.keys,Object);e.exports=i},27732:function(e){e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},63138:function(e,t,n){e=n.nmd(e);var i=n(86876),r=t&&!t.nodeType&&t,o=r&&e&&!e.nodeType&&e,a=o&&o.exports===r&&i.process,s=function(){try{var e=o&&o.require&&o.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(t){}}();e.exports=s},86861:function(e){var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},16648:function(e){e.exports=function(e,t){return function(n){return e(t(n))}}},80780:function(e,t,n){var i=n(75049),r=Math.max;e.exports=function(e,t,n){return t=r(void 0===t?e.length-1:t,0),function(){for(var o=arguments,a=-1,s=r(o.length-t,0),u=Array(s);++a<s;)u[a]=o[t+a];a=-1;for(var l=Array(t+1);++a<t;)l[a]=o[a];return l[t]=n(u),i(e,this,l)}}},47728:function(e,t,n){var i=n(48661),r=n(80296);e.exports=function(e,t){return t.length<2?e:i(e,r(t,0,-1))}},4210:function(e,t,n){var i=n(86876),r="object"==typeof self&&self&&self.Object===Object&&self,o=i||r||Function("return this")();e.exports=o},18892:function(e){var t="__lodash_hash_undefined__";e.exports=function(e){return this.__data__.set(e,t),this}},77750:function(e){e.exports=function(e){return this.__data__.has(e)}},86483:function(e){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},21762:function(e,t,n){var i=n(14360),r=n(87442)(i);e.exports=r},87442:function(e){var t=800,n=16,i=Date.now;e.exports=function(e){var r=0,o=0;return function(){var a=i(),s=n-(a-o);if(o=a,s>0){if(++r>=t)return arguments[0]}else r=0;return e.apply(void 0,arguments)}}},68913:function(e,t,n){var i=n(87889);e.exports=function(){this.__data__=new i,this.size=0}},58444:function(e){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},7606:function(e){e.exports=function(e){return this.__data__.get(e)}},85993:function(e){e.exports=function(e){return this.__data__.has(e)}},11987:function(e,t,n){var i=n(87889),r=n(10628),o=n(50042),a=200;e.exports=function(e,t){var n=this.__data__;if(n instanceof i){var s=n.__data__;if(!r||s.length<a-1)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(s)}return n.set(e,t),this.size=n.size,this}},34786:function(e,t,n){var i=n(77751),r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,a=i((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(r,(function(e,n,i,r){t.push(i?r.replace(o,"$1"):n||e)})),t}));e.exports=a},55852:function(e,t,n){var i=n(89718),r=1/0;e.exports=function(e){if("string"==typeof e||i(e))return e;var t=e+"";return"0"==t&&1/e==-r?"-0":t}},69913:function(e){var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},40794:function(e,t,n){var i=n(60301),r=1,o=4;e.exports=function(e){return i(e,r|o)}},41853:function(e){e.exports=function(e){return function(){return e}}},93841:function(e){e.exports=function(e,t){return e===t||e!==e&&t!==t}},68369:function(e,t,n){var i=n(31368);e.exports=function(e){return(null==e?0:e.length)?i(e,1):[]}},46553:function(e,t,n){var i=n(970).runInContext();e.exports=n(81089)(i,i)},81089:function(e,t,n){var i=n(21864),r=n(37421),o=Array.prototype.push;function a(e,t){return 2==t?function(t,n){return e(t,n)}:function(t){return e(t)}}function s(e){for(var t=e?e.length:0,n=Array(t);t--;)n[t]=e[t];return n}function u(e,t){return function(){var n=arguments.length;if(n){for(var i=Array(n);n--;)i[n]=arguments[n];var r=i[0]=t.apply(void 0,i);return e.apply(void 0,i),r}}}e.exports=function e(t,n,l,c){var d="function"==typeof n,h=n===Object(n);if(h&&(c=l,l=n,n=void 0),null==l)throw new TypeError;c||(c={});var f={cap:!("cap"in c)||c.cap,curry:!("curry"in c)||c.curry,fixed:!("fixed"in c)||c.fixed,immutable:!("immutable"in c)||c.immutable,rearg:!("rearg"in c)||c.rearg},p=d?l:r,g="curry"in c&&c.curry,v="fixed"in c&&c.fixed,m="rearg"in c&&c.rearg,_=d?l.runInContext():void 0,y=d?l:{ary:t.ary,assign:t.assign,clone:t.clone,curry:t.curry,forEach:t.forEach,isArray:t.isArray,isError:t.isError,isFunction:t.isFunction,isWeakMap:t.isWeakMap,iteratee:t.iteratee,keys:t.keys,rearg:t.rearg,toInteger:t.toInteger,toPath:t.toPath},b=y.ary,w=y.assign,C=y.clone,k=y.curry,S=y.forEach,x=y.isArray,L=y.isError,E=y.isFunction,D=y.isWeakMap,N=y.keys,M=y.rearg,T=y.toInteger,I=y.toPath,O=N(i.aryMethod),A={castArray:function(e){return function(){var t=arguments[0];return x(t)?e(s(t)):e.apply(void 0,arguments)}},iteratee:function(e){return function(){var t=arguments[1],n=e(arguments[0],t),i=n.length;return f.cap&&"number"==typeof t?(t=t>2?t-2:1,i&&i<=t?n:a(n,t)):n}},mixin:function(e){return function(t){var n=this;if(!E(n))return e(n,Object(t));var i=[];return S(N(t),(function(e){E(t[e])&&i.push([e,n.prototype[e]])})),e(n,Object(t)),S(i,(function(e){var t=e[1];E(t)?n.prototype[e[0]]=t:delete n.prototype[e[0]]})),n}},nthArg:function(e){return function(t){var n=t<0?1:T(t)+1;return k(e(t),n)}},rearg:function(e){return function(t,n){var i=n?n.length:0;return k(e(t,n),i)}},runInContext:function(n){return function(i){return e(t,n(i),c)}}};function R(e,t){if(f.cap){var n=i.iterateeRearg[e];if(n)return function(e,t){return H(e,(function(e){var n=t.length;return function(e,t){return 2==t?function(t,n){return e.apply(void 0,arguments)}:function(t){return e.apply(void 0,arguments)}}(M(a(e,n),t),n)}))}(t,n);var r=!d&&i.iterateeAry[e];if(r)return function(e,t){return H(e,(function(e){return"function"==typeof e?a(e,t):e}))}(t,r)}return t}function P(e,t,n){if(f.fixed&&(v||!i.skipFixed[e])){var r=i.methodSpread[e],a=r&&r.start;return void 0===a?b(t,n):function(e,t){return function(){for(var n=arguments.length,i=n-1,r=Array(n);n--;)r[n]=arguments[n];var a=r[t],s=r.slice(0,t);return a&&o.apply(s,a),t!=i&&o.apply(s,r.slice(t+1)),e.apply(this,s)}}(t,a)}return t}function Z(e,t,n){return f.rearg&&n>1&&(m||!i.skipRearg[e])?M(t,i.methodRearg[e]||i.aryRearg[n]):t}function F(e,t){for(var n=-1,i=(t=I(t)).length,r=i-1,o=C(Object(e)),a=o;null!=a&&++n<i;){var s=t[n],u=a[s];null==u||E(u)||L(u)||D(u)||(a[s]=C(n==r?u:Object(u))),a=a[s]}return o}function j(t,n){var r=i.aliasToReal[t]||t,o=i.remap[r]||r,a=c;return function(t){var i=d?_:y,s=d?_[o]:n,u=w(w({},a),t);return e(i,r,s,u)}}function H(e,t){return function(){var n=arguments.length;if(!n)return e();for(var i=Array(n);n--;)i[n]=arguments[n];var r=f.rearg?0:n-1;return i[r]=t(i[r]),e.apply(void 0,i)}}function B(e,t,n){var r,o=i.aliasToReal[e]||e,a=t,l=A[o];return l?a=l(t):f.immutable&&(i.mutate.array[o]?a=u(t,s):i.mutate.object[o]?a=u(t,function(e){return function(t){return e({},t)}}(t)):i.mutate.set[o]&&(a=u(t,F))),S(O,(function(e){return S(i.aryMethod[e],(function(t){if(o==t){var n=i.methodSpread[o],s=n&&n.afterRearg;return r=s?P(o,Z(o,a,e),e):Z(o,P(o,a,e),e),r=function(e,t,n){return g||f.curry&&n>1?k(t,n):t}(0,r=R(o,r),e),!1}})),!r})),r||(r=a),r==t&&(r=g?k(r,1):function(){return t.apply(this,arguments)}),r.convert=j(o,t),r.placeholder=t.placeholder=n,r}if(!h)return B(n,l,p);var z=l,W=[];return S(O,(function(e){S(i.aryMethod[e],(function(e){var t=z[i.remap[e]||e];t&&W.push([e,B(e,t,z)])}))})),S(N(z),(function(e){var t=z[e];if("function"==typeof t){for(var n=W.length;n--;)if(W[n][0]==e)return;t.convert=j(e,t),W.push([e,t])}})),S(W,(function(e){z[e[0]]=e[1]})),z.convert=function(e){return z.runInContext.convert(e)(void 0)},z.placeholder=z,S(N(z),(function(e){S(i.realToAlias[e]||[],(function(t){z[t]=z[e]}))})),z}},21864:function(e,t){t.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},t.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},t.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},t.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},t.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},t.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},t.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},t.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},t.realToAlias=function(){var e=Object.prototype.hasOwnProperty,n=t.aliasToReal,i={};for(var r in n){var o=n[r];e.call(i,o)?i[o].push(r):i[o]=[r]}return i}(),t.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},t.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},t.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},37421:function(e){e.exports={}},93128:function(e,t,n){var i=n(48661);e.exports=function(e,t,n){var r=null==e?void 0:i(e,t);return void 0===r?n:r}},70396:function(e){e.exports=function(e){return e}},43917:function(e,t,n){var i=n(13175),r=n(71983),o=Object.prototype,a=o.hasOwnProperty,s=o.propertyIsEnumerable,u=i(function(){return arguments}())?i:function(e){return r(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=u},39262:function(e){var t=Array.isArray;e.exports=t},14925:function(e,t,n){var i=n(99539),r=n(13392);e.exports=function(e){return null!=e&&r(e.length)&&!i(e)}},76966:function(e,t,n){e=n.nmd(e);var i=n(4210),r=n(54666),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,s=a&&a.exports===o?i.Buffer:void 0,u=(s?s.isBuffer:void 0)||r;e.exports=u},20061:function(e,t,n){var i=n(30675),r=n(84047),o=n(43917),a=n(39262),s=n(14925),u=n(76966),l=n(965),c=n(57421),d="[object Map]",h="[object Set]",f=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(s(e)&&(a(e)||"string"==typeof e||"function"==typeof e.splice||u(e)||c(e)||o(e)))return!e.length;var t=r(e);if(t==d||t==h)return!e.size;if(l(e))return!i(e).length;for(var n in e)if(f.call(e,n))return!1;return!0}},34495:function(e,t,n){var i=n(1831);e.exports=function(e,t){return i(e,t)}},99539:function(e,t,n){var i=n(46316),r=n(13108),o="[object AsyncFunction]",a="[object Function]",s="[object GeneratorFunction]",u="[object Proxy]";e.exports=function(e){if(!r(e))return!1;var t=i(e);return t==a||t==s||t==o||t==u}},13392:function(e){var t=9007199254740991;e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=t}},64818:function(e,t,n){var i=n(57535),r=n(35313),o=n(63138),a=o&&o.isMap,s=a?r(a):i;e.exports=s},13108:function(e){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},71983:function(e){e.exports=function(e){return null!=e&&"object"==typeof e}},267:function(e,t,n){var i=n(46316),r=n(2629),o=n(71983),a="[object Object]",s=Function.prototype,u=Object.prototype,l=s.toString,c=u.hasOwnProperty,d=l.call(Object);e.exports=function(e){if(!o(e)||i(e)!=a)return!1;var t=r(e);if(null===t)return!0;var n=c.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&l.call(n)==d}},76095:function(e,t,n){var i=n(19543),r=n(35313),o=n(63138),a=o&&o.isSet,s=a?r(a):i;e.exports=s},89718:function(e,t,n){var i=n(46316),r=n(71983),o="[object Symbol]";e.exports=function(e){return"symbol"==typeof e||r(e)&&i(e)==o}},57421:function(e,t,n){var i=n(65965),r=n(35313),o=n(63138),a=o&&o.isTypedArray,s=a?r(a):i;e.exports=s},66005:function(e,t,n){var i=n(42311),r=n(30675),o=n(14925);e.exports=function(e){return o(e)?i(e):r(e)}},94370:function(e,t,n){var i=n(42311),r=n(76085),o=n(14925);e.exports=function(e){return o(e)?i(e,!0):r(e)}},51478:function(e){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},32048:function(e,t,n){var i;e=n.nmd(e),function(){var r,o=200,a="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",s="Expected a function",u="__lodash_hash_undefined__",l=500,c="__lodash_placeholder__",d=1,h=2,f=4,p=1,g=2,v=1,m=2,_=4,y=8,b=16,w=32,C=64,k=128,S=256,x=512,L=30,E="...",D=800,N=16,M=1,T=2,I=1/0,O=9007199254740991,A=17976931348623157e292,R=NaN,P=4294967295,Z=P-1,F=P>>>1,j=[["ary",k],["bind",v],["bindKey",m],["curry",y],["curryRight",b],["flip",x],["partial",w],["partialRight",C],["rearg",S]],H="[object Arguments]",B="[object Array]",z="[object AsyncFunction]",W="[object Boolean]",V="[object Date]",Y="[object DOMException]",U="[object Error]",K="[object Function]",q="[object GeneratorFunction]",G="[object Map]",$="[object Number]",Q="[object Null]",X="[object Object]",J="[object Promise]",ee="[object Proxy]",te="[object RegExp]",ne="[object Set]",ie="[object String]",re="[object Symbol]",oe="[object Undefined]",ae="[object WeakMap]",se="[object WeakSet]",ue="[object ArrayBuffer]",le="[object DataView]",ce="[object Float32Array]",de="[object Float64Array]",he="[object Int8Array]",fe="[object Int16Array]",pe="[object Int32Array]",ge="[object Uint8Array]",ve="[object Uint8ClampedArray]",me="[object Uint16Array]",_e="[object Uint32Array]",ye=/\b__p \+= '';/g,be=/\b(__p \+=) '' \+/g,we=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ce=/&(?:amp|lt|gt|quot|#39);/g,ke=/[&<>"']/g,Se=RegExp(Ce.source),xe=RegExp(ke.source),Le=/<%-([\s\S]+?)%>/g,Ee=/<%([\s\S]+?)%>/g,De=/<%=([\s\S]+?)%>/g,Ne=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Me=/^\w*$/,Te=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ie=/[\\^$.*+?()[\]{}|]/g,Oe=RegExp(Ie.source),Ae=/^\s+|\s+$/g,Re=/^\s+/,Pe=/\s+$/,Ze=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Fe=/\{\n\/\* \[wrapped with (.+)\] \*/,je=/,? & /,He=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Be=/\\(\\)?/g,ze=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,We=/\w*$/,Ve=/^[-+]0x[0-9a-f]+$/i,Ye=/^0b[01]+$/i,Ue=/^\[object .+?Constructor\]$/,Ke=/^0o[0-7]+$/i,qe=/^(?:0|[1-9]\d*)$/,Ge=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,$e=/($^)/,Qe=/['\n\r\u2028\u2029\\]/g,Xe="\\ud800-\\udfff",Je="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",et="\\u2700-\\u27bf",tt="a-z\\xdf-\\xf6\\xf8-\\xff",nt="A-Z\\xc0-\\xd6\\xd8-\\xde",it="\\ufe0e\\ufe0f",rt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ot="['\u2019]",at="["+Xe+"]",st="["+rt+"]",ut="["+Je+"]",lt="\\d+",ct="["+et+"]",dt="["+tt+"]",ht="[^"+Xe+rt+lt+et+tt+nt+"]",ft="\\ud83c[\\udffb-\\udfff]",pt="[^"+Xe+"]",gt="(?:\\ud83c[\\udde6-\\uddff]){2}",vt="[\\ud800-\\udbff][\\udc00-\\udfff]",mt="["+nt+"]",_t="\\u200d",yt="(?:"+dt+"|"+ht+")",bt="(?:"+mt+"|"+ht+")",wt="(?:['\u2019](?:d|ll|m|re|s|t|ve))?",Ct="(?:['\u2019](?:D|LL|M|RE|S|T|VE))?",kt="(?:"+ut+"|"+ft+")"+"?",St="["+it+"]?",xt=St+kt+("(?:"+_t+"(?:"+[pt,gt,vt].join("|")+")"+St+kt+")*"),Lt="(?:"+[ct,gt,vt].join("|")+")"+xt,Et="(?:"+[pt+ut+"?",ut,gt,vt,at].join("|")+")",Dt=RegExp(ot,"g"),Nt=RegExp(ut,"g"),Mt=RegExp(ft+"(?="+ft+")|"+Et+xt,"g"),Tt=RegExp([mt+"?"+dt+"+"+wt+"(?="+[st,mt,"$"].join("|")+")",bt+"+"+Ct+"(?="+[st,mt+yt,"$"].join("|")+")",mt+"?"+yt+"+"+wt,mt+"+"+Ct,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",lt,Lt].join("|"),"g"),It=RegExp("["+_t+Xe+Je+it+"]"),Ot=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,At=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Rt=-1,Pt={};Pt[ce]=Pt[de]=Pt[he]=Pt[fe]=Pt[pe]=Pt[ge]=Pt[ve]=Pt[me]=Pt[_e]=!0,Pt[H]=Pt[B]=Pt[ue]=Pt[W]=Pt[le]=Pt[V]=Pt[U]=Pt[K]=Pt[G]=Pt[$]=Pt[X]=Pt[te]=Pt[ne]=Pt[ie]=Pt[ae]=!1;var Zt={};Zt[H]=Zt[B]=Zt[ue]=Zt[le]=Zt[W]=Zt[V]=Zt[ce]=Zt[de]=Zt[he]=Zt[fe]=Zt[pe]=Zt[G]=Zt[$]=Zt[X]=Zt[te]=Zt[ne]=Zt[ie]=Zt[re]=Zt[ge]=Zt[ve]=Zt[me]=Zt[_e]=!0,Zt[U]=Zt[K]=Zt[ae]=!1;var Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},jt=parseFloat,Ht=parseInt,Bt="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,zt="object"==typeof self&&self&&self.Object===Object&&self,Wt=Bt||zt||Function("return this")(),Vt=t&&!t.nodeType&&t,Yt=Vt&&e&&!e.nodeType&&e,Ut=Yt&&Yt.exports===Vt,Kt=Ut&&Bt.process,qt=function(){try{var e=Yt&&Yt.require&&Yt.require("util").types;return e||Kt&&Kt.binding&&Kt.binding("util")}catch(t){}}(),Gt=qt&&qt.isArrayBuffer,$t=qt&&qt.isDate,Qt=qt&&qt.isMap,Xt=qt&&qt.isRegExp,Jt=qt&&qt.isSet,en=qt&&qt.isTypedArray;function tn(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function nn(e,t,n,i){for(var r=-1,o=null==e?0:e.length;++r<o;){var a=e[r];t(i,a,n(a),e)}return i}function rn(e,t){for(var n=-1,i=null==e?0:e.length;++n<i&&!1!==t(e[n],n,e););return e}function on(e,t){for(var n=null==e?0:e.length;n--&&!1!==t(e[n],n,e););return e}function an(e,t){for(var n=-1,i=null==e?0:e.length;++n<i;)if(!t(e[n],n,e))return!1;return!0}function sn(e,t){for(var n=-1,i=null==e?0:e.length,r=0,o=[];++n<i;){var a=e[n];t(a,n,e)&&(o[r++]=a)}return o}function un(e,t){return!!(null==e?0:e.length)&&_n(e,t,0)>-1}function ln(e,t,n){for(var i=-1,r=null==e?0:e.length;++i<r;)if(n(t,e[i]))return!0;return!1}function cn(e,t){for(var n=-1,i=null==e?0:e.length,r=Array(i);++n<i;)r[n]=t(e[n],n,e);return r}function dn(e,t){for(var n=-1,i=t.length,r=e.length;++n<i;)e[r+n]=t[n];return e}function hn(e,t,n,i){var r=-1,o=null==e?0:e.length;for(i&&o&&(n=e[++r]);++r<o;)n=t(n,e[r],r,e);return n}function fn(e,t,n,i){var r=null==e?0:e.length;for(i&&r&&(n=e[--r]);r--;)n=t(n,e[r],r,e);return n}function pn(e,t){for(var n=-1,i=null==e?0:e.length;++n<i;)if(t(e[n],n,e))return!0;return!1}var gn=Cn("length");function vn(e,t,n){var i;return n(e,(function(e,n,r){if(t(e,n,r))return i=n,!1})),i}function mn(e,t,n,i){for(var r=e.length,o=n+(i?1:-1);i?o--:++o<r;)if(t(e[o],o,e))return o;return-1}function _n(e,t,n){return t===t?function(e,t,n){var i=n-1,r=e.length;for(;++i<r;)if(e[i]===t)return i;return-1}(e,t,n):mn(e,bn,n)}function yn(e,t,n,i){for(var r=n-1,o=e.length;++r<o;)if(i(e[r],t))return r;return-1}function bn(e){return e!==e}function wn(e,t){var n=null==e?0:e.length;return n?xn(e,t)/n:R}function Cn(e){return function(t){return null==t?r:t[e]}}function kn(e){return function(t){return null==e?r:e[t]}}function Sn(e,t,n,i,r){return r(e,(function(e,r,o){n=i?(i=!1,e):t(n,e,r,o)})),n}function xn(e,t){for(var n,i=-1,o=e.length;++i<o;){var a=t(e[i]);a!==r&&(n=n===r?a:n+a)}return n}function Ln(e,t){for(var n=-1,i=Array(e);++n<e;)i[n]=t(n);return i}function En(e){return function(t){return e(t)}}function Dn(e,t){return cn(t,(function(t){return e[t]}))}function Nn(e,t){return e.has(t)}function Mn(e,t){for(var n=-1,i=e.length;++n<i&&_n(t,e[n],0)>-1;);return n}function Tn(e,t){for(var n=e.length;n--&&_n(t,e[n],0)>-1;);return n}var In=kn({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),On=kn({"&":"&","<":"<",">":">",'"':""","'":"'"});function An(e){return"\\"+Ft[e]}function Rn(e){return It.test(e)}function Pn(e){var t=-1,n=Array(e.size);return e.forEach((function(e,i){n[++t]=[i,e]})),n}function Zn(e,t){return function(n){return e(t(n))}}function Fn(e,t){for(var n=-1,i=e.length,r=0,o=[];++n<i;){var a=e[n];a!==t&&a!==c||(e[n]=c,o[r++]=n)}return o}function jn(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}function Hn(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=[e,e]})),n}function Bn(e){return Rn(e)?function(e){var t=Mt.lastIndex=0;for(;Mt.test(e);)++t;return t}(e):gn(e)}function zn(e){return Rn(e)?function(e){return e.match(Mt)||[]}(e):function(e){return e.split("")}(e)}var Wn=kn({"&":"&","<":"<",">":">",""":'"',"'":"'"});var Vn=function e(t){var n=(t=null==t?Wt:Vn.defaults(Wt.Object(),t,Vn.pick(Wt,At))).Array,i=t.Date,Xe=t.Error,Je=t.Function,et=t.Math,tt=t.Object,nt=t.RegExp,it=t.String,rt=t.TypeError,ot=n.prototype,at=Je.prototype,st=tt.prototype,ut=t["__core-js_shared__"],lt=at.toString,ct=st.hasOwnProperty,dt=0,ht=function(){var e=/[^.]+$/.exec(ut&&ut.keys&&ut.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),ft=st.toString,pt=lt.call(tt),gt=Wt._,vt=nt("^"+lt.call(ct).replace(Ie,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),mt=Ut?t.Buffer:r,_t=t.Symbol,yt=t.Uint8Array,bt=mt?mt.allocUnsafe:r,wt=Zn(tt.getPrototypeOf,tt),Ct=tt.create,kt=st.propertyIsEnumerable,St=ot.splice,xt=_t?_t.isConcatSpreadable:r,Lt=_t?_t.iterator:r,Et=_t?_t.toStringTag:r,Mt=function(){try{var e=jo(tt,"defineProperty");return e({},"",{}),e}catch(t){}}(),It=t.clearTimeout!==Wt.clearTimeout&&t.clearTimeout,Ft=i&&i.now!==Wt.Date.now&&i.now,Bt=t.setTimeout!==Wt.setTimeout&&t.setTimeout,zt=et.ceil,Vt=et.floor,Yt=tt.getOwnPropertySymbols,Kt=mt?mt.isBuffer:r,qt=t.isFinite,gn=ot.join,kn=Zn(tt.keys,tt),Yn=et.max,Un=et.min,Kn=i.now,qn=t.parseInt,Gn=et.random,$n=ot.reverse,Qn=jo(t,"DataView"),Xn=jo(t,"Map"),Jn=jo(t,"Promise"),ei=jo(t,"Set"),ti=jo(t,"WeakMap"),ni=jo(tt,"create"),ii=ti&&new ti,ri={},oi=da(Qn),ai=da(Xn),si=da(Jn),ui=da(ei),li=da(ti),ci=_t?_t.prototype:r,di=ci?ci.valueOf:r,hi=ci?ci.toString:r;function fi(e){if(Ds(e)&&!ms(e)&&!(e instanceof mi)){if(e instanceof vi)return e;if(ct.call(e,"__wrapped__"))return ha(e)}return new vi(e)}var pi=function(){function e(){}return function(t){if(!Es(t))return{};if(Ct)return Ct(t);e.prototype=t;var n=new e;return e.prototype=r,n}}();function gi(){}function vi(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=r}function mi(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=P,this.__views__=[]}function _i(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}function yi(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}function bi(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}function wi(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new bi;++t<n;)this.add(e[t])}function Ci(e){var t=this.__data__=new yi(e);this.size=t.size}function ki(e,t){var n=ms(e),i=!n&&vs(e),r=!n&&!i&&ws(e),o=!n&&!i&&!r&&Ps(e),a=n||i||r||o,s=a?Ln(e.length,it):[],u=s.length;for(var l in e)!t&&!ct.call(e,l)||a&&("length"==l||r&&("offset"==l||"parent"==l)||o&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Uo(l,u))||s.push(l);return s}function Si(e){var t=e.length;return t?e[wr(0,t-1)]:r}function xi(e,t){return ua(no(e),Ai(t,0,e.length))}function Li(e){return ua(no(e))}function Ei(e,t,n){(n!==r&&!fs(e[t],n)||n===r&&!(t in e))&&Ii(e,t,n)}function Di(e,t,n){var i=e[t];ct.call(e,t)&&fs(i,n)&&(n!==r||t in e)||Ii(e,t,n)}function Ni(e,t){for(var n=e.length;n--;)if(fs(e[n][0],t))return n;return-1}function Mi(e,t,n,i){return ji(e,(function(e,r,o){t(i,e,n(e),o)})),i}function Ti(e,t){return e&&io(t,ru(t),e)}function Ii(e,t,n){"__proto__"==t&&Mt?Mt(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function Oi(e,t){for(var i=-1,o=t.length,a=n(o),s=null==e;++i<o;)a[i]=s?r:Js(e,t[i]);return a}function Ai(e,t,n){return e===e&&(n!==r&&(e=e<=n?e:n),t!==r&&(e=e>=t?e:t)),e}function Ri(e,t,n,i,o,a){var s,u=t&d,l=t&h,c=t&f;if(n&&(s=o?n(e,i,o,a):n(e)),s!==r)return s;if(!Es(e))return e;var p=ms(e);if(p){if(s=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&ct.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!u)return no(e,s)}else{var g=zo(e),v=g==K||g==q;if(ws(e))return $r(e,u);if(g==X||g==H||v&&!o){if(s=l||v?{}:Vo(e),!u)return l?function(e,t){return io(e,Bo(e),t)}(e,function(e,t){return e&&io(t,ou(t),e)}(s,e)):function(e,t){return io(e,Ho(e),t)}(e,Ti(s,e))}else{if(!Zt[g])return o?e:{};s=function(e,t,n){var i=e.constructor;switch(t){case ue:return Qr(e);case W:case V:return new i(+e);case le:return function(e,t){var n=t?Qr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case ce:case de:case he:case fe:case pe:case ge:case ve:case me:case _e:return Xr(e,n);case G:return new i;case $:case ie:return new i(e);case te:return function(e){var t=new e.constructor(e.source,We.exec(e));return t.lastIndex=e.lastIndex,t}(e);case ne:return new i;case re:return r=e,di?tt(di.call(r)):{}}var r}(e,g,u)}}a||(a=new Ci);var m=a.get(e);if(m)return m;if(a.set(e,s),Os(e))return e.forEach((function(i){s.add(Ri(i,t,n,i,e,a))})),s;if(Ns(e))return e.forEach((function(i,r){s.set(r,Ri(i,t,n,r,e,a))})),s;var _=p?r:(c?l?Io:To:l?ou:ru)(e);return rn(_||e,(function(i,r){_&&(i=e[r=i]),Di(s,r,Ri(i,t,n,r,e,a))})),s}function Pi(e,t,n){var i=n.length;if(null==e)return!i;for(e=tt(e);i--;){var o=n[i],a=t[o],s=e[o];if(s===r&&!(o in e)||!a(s))return!1}return!0}function Zi(e,t,n){if("function"!=typeof e)throw new rt(s);return ra((function(){e.apply(r,n)}),t)}function Fi(e,t,n,i){var r=-1,a=un,s=!0,u=e.length,l=[],c=t.length;if(!u)return l;n&&(t=cn(t,En(n))),i?(a=ln,s=!1):t.length>=o&&(a=Nn,s=!1,t=new wi(t));e:for(;++r<u;){var d=e[r],h=null==n?d:n(d);if(d=i||0!==d?d:0,s&&h===h){for(var f=c;f--;)if(t[f]===h)continue e;l.push(d)}else a(t,h,i)||l.push(d)}return l}fi.templateSettings={escape:Le,evaluate:Ee,interpolate:De,variable:"",imports:{_:fi}},fi.prototype=gi.prototype,fi.prototype.constructor=fi,vi.prototype=pi(gi.prototype),vi.prototype.constructor=vi,mi.prototype=pi(gi.prototype),mi.prototype.constructor=mi,_i.prototype.clear=function(){this.__data__=ni?ni(null):{},this.size=0},_i.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},_i.prototype.get=function(e){var t=this.__data__;if(ni){var n=t[e];return n===u?r:n}return ct.call(t,e)?t[e]:r},_i.prototype.has=function(e){var t=this.__data__;return ni?t[e]!==r:ct.call(t,e)},_i.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=ni&&t===r?u:t,this},yi.prototype.clear=function(){this.__data__=[],this.size=0},yi.prototype.delete=function(e){var t=this.__data__,n=Ni(t,e);return!(n<0)&&(n==t.length-1?t.pop():St.call(t,n,1),--this.size,!0)},yi.prototype.get=function(e){var t=this.__data__,n=Ni(t,e);return n<0?r:t[n][1]},yi.prototype.has=function(e){return Ni(this.__data__,e)>-1},yi.prototype.set=function(e,t){var n=this.__data__,i=Ni(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this},bi.prototype.clear=function(){this.size=0,this.__data__={hash:new _i,map:new(Xn||yi),string:new _i}},bi.prototype.delete=function(e){var t=Zo(this,e).delete(e);return this.size-=t?1:0,t},bi.prototype.get=function(e){return Zo(this,e).get(e)},bi.prototype.has=function(e){return Zo(this,e).has(e)},bi.prototype.set=function(e,t){var n=Zo(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this},wi.prototype.add=wi.prototype.push=function(e){return this.__data__.set(e,u),this},wi.prototype.has=function(e){return this.__data__.has(e)},Ci.prototype.clear=function(){this.__data__=new yi,this.size=0},Ci.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Ci.prototype.get=function(e){return this.__data__.get(e)},Ci.prototype.has=function(e){return this.__data__.has(e)},Ci.prototype.set=function(e,t){var n=this.__data__;if(n instanceof yi){var i=n.__data__;if(!Xn||i.length<o-1)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new bi(i)}return n.set(e,t),this.size=n.size,this};var ji=ao(Ki),Hi=ao(qi,!0);function Bi(e,t){var n=!0;return ji(e,(function(e,i,r){return n=!!t(e,i,r)})),n}function zi(e,t,n){for(var i=-1,o=e.length;++i<o;){var a=e[i],s=t(a);if(null!=s&&(u===r?s===s&&!Rs(s):n(s,u)))var u=s,l=a}return l}function Wi(e,t){var n=[];return ji(e,(function(e,i,r){t(e,i,r)&&n.push(e)})),n}function Vi(e,t,n,i,r){var o=-1,a=e.length;for(n||(n=Yo),r||(r=[]);++o<a;){var s=e[o];t>0&&n(s)?t>1?Vi(s,t-1,n,i,r):dn(r,s):i||(r[r.length]=s)}return r}var Yi=so(),Ui=so(!0);function Ki(e,t){return e&&Yi(e,t,ru)}function qi(e,t){return e&&Ui(e,t,ru)}function Gi(e,t){return sn(t,(function(t){return Ss(e[t])}))}function $i(e,t){for(var n=0,i=(t=Ur(t,e)).length;null!=e&&n<i;)e=e[ca(t[n++])];return n&&n==i?e:r}function Qi(e,t,n){var i=t(e);return ms(e)?i:dn(i,n(e))}function Xi(e){return null==e?e===r?oe:Q:Et&&Et in tt(e)?function(e){var t=ct.call(e,Et),n=e[Et];try{e[Et]=r;var i=!0}catch(a){}var o=ft.call(e);i&&(t?e[Et]=n:delete e[Et]);return o}(e):function(e){return ft.call(e)}(e)}function Ji(e,t){return e>t}function er(e,t){return null!=e&&ct.call(e,t)}function tr(e,t){return null!=e&&t in tt(e)}function nr(e,t,i){for(var o=i?ln:un,a=e[0].length,s=e.length,u=s,l=n(s),c=1/0,d=[];u--;){var h=e[u];u&&t&&(h=cn(h,En(t))),c=Un(h.length,c),l[u]=!i&&(t||a>=120&&h.length>=120)?new wi(u&&h):r}h=e[0];var f=-1,p=l[0];e:for(;++f<a&&d.length<c;){var g=h[f],v=t?t(g):g;if(g=i||0!==g?g:0,!(p?Nn(p,v):o(d,v,i))){for(u=s;--u;){var m=l[u];if(!(m?Nn(m,v):o(e[u],v,i)))continue e}p&&p.push(v),d.push(g)}}return d}function ir(e,t,n){var i=null==(e=ta(e,t=Ur(t,e)))?e:e[ca(ka(t))];return null==i?r:tn(i,e,n)}function rr(e){return Ds(e)&&Xi(e)==H}function or(e,t,n,i,o){return e===t||(null==e||null==t||!Ds(e)&&!Ds(t)?e!==e&&t!==t:function(e,t,n,i,o,a){var s=ms(e),u=ms(t),l=s?B:zo(e),c=u?B:zo(t),d=(l=l==H?X:l)==X,h=(c=c==H?X:c)==X,f=l==c;if(f&&ws(e)){if(!ws(t))return!1;s=!0,d=!1}if(f&&!d)return a||(a=new Ci),s||Ps(e)?No(e,t,n,i,o,a):function(e,t,n,i,r,o,a){switch(n){case le:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case ue:return!(e.byteLength!=t.byteLength||!o(new yt(e),new yt(t)));case W:case V:case $:return fs(+e,+t);case U:return e.name==t.name&&e.message==t.message;case te:case ie:return e==t+"";case G:var s=Pn;case ne:var u=i&p;if(s||(s=jn),e.size!=t.size&&!u)return!1;var l=a.get(e);if(l)return l==t;i|=g,a.set(e,t);var c=No(s(e),s(t),i,r,o,a);return a.delete(e),c;case re:if(di)return di.call(e)==di.call(t)}return!1}(e,t,l,n,i,o,a);if(!(n&p)){var v=d&&ct.call(e,"__wrapped__"),m=h&&ct.call(t,"__wrapped__");if(v||m){var _=v?e.value():e,y=m?t.value():t;return a||(a=new Ci),o(_,y,n,i,a)}}if(!f)return!1;return a||(a=new Ci),function(e,t,n,i,o,a){var s=n&p,u=To(e),l=u.length,c=To(t),d=c.length;if(l!=d&&!s)return!1;var h=l;for(;h--;){var f=u[h];if(!(s?f in t:ct.call(t,f)))return!1}var g=a.get(e);if(g&&a.get(t))return g==t;var v=!0;a.set(e,t),a.set(t,e);var m=s;for(;++h<l;){var _=e[f=u[h]],y=t[f];if(i)var b=s?i(y,_,f,t,e,a):i(_,y,f,e,t,a);if(!(b===r?_===y||o(_,y,n,i,a):b)){v=!1;break}m||(m="constructor"==f)}if(v&&!m){var w=e.constructor,C=t.constructor;w==C||!("constructor"in e)||!("constructor"in t)||"function"==typeof w&&w instanceof w&&"function"==typeof C&&C instanceof C||(v=!1)}return a.delete(e),a.delete(t),v}(e,t,n,i,o,a)}(e,t,n,i,or,o))}function ar(e,t,n,i){var o=n.length,a=o,s=!i;if(null==e)return!a;for(e=tt(e);o--;){var u=n[o];if(s&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++o<a;){var l=(u=n[o])[0],c=e[l],d=u[1];if(s&&u[2]){if(c===r&&!(l in e))return!1}else{var h=new Ci;if(i)var f=i(c,d,l,e,t,h);if(!(f===r?or(d,c,p|g,i,h):f))return!1}}return!0}function sr(e){return!(!Es(e)||(t=e,ht&&ht in t))&&(Ss(e)?vt:Ue).test(da(e));var t}function ur(e){return"function"==typeof e?e:null==e?Mu:"object"==typeof e?ms(e)?pr(e[0],e[1]):fr(e):ju(e)}function lr(e){if(!Qo(e))return kn(e);var t=[];for(var n in tt(e))ct.call(e,n)&&"constructor"!=n&&t.push(n);return t}function cr(e){if(!Es(e))return function(e){var t=[];if(null!=e)for(var n in tt(e))t.push(n);return t}(e);var t=Qo(e),n=[];for(var i in e)("constructor"!=i||!t&&ct.call(e,i))&&n.push(i);return n}function dr(e,t){return e<t}function hr(e,t){var i=-1,r=ys(e)?n(e.length):[];return ji(e,(function(e,n,o){r[++i]=t(e,n,o)})),r}function fr(e){var t=Fo(e);return 1==t.length&&t[0][2]?Jo(t[0][0],t[0][1]):function(n){return n===e||ar(n,e,t)}}function pr(e,t){return qo(e)&&Xo(t)?Jo(ca(e),t):function(n){var i=Js(n,e);return i===r&&i===t?eu(n,e):or(t,i,p|g)}}function gr(e,t,n,i,o){e!==t&&Yi(t,(function(a,s){if(Es(a))o||(o=new Ci),function(e,t,n,i,o,a,s){var u=na(e,n),l=na(t,n),c=s.get(l);if(c)return void Ei(e,n,c);var d=a?a(u,l,n+"",e,t,s):r,h=d===r;if(h){var f=ms(l),p=!f&&ws(l),g=!f&&!p&&Ps(l);d=l,f||p||g?ms(u)?d=u:bs(u)?d=no(u):p?(h=!1,d=$r(l,!0)):g?(h=!1,d=Xr(l,!0)):d=[]:Ts(l)||vs(l)?(d=u,vs(u)?d=Vs(u):Es(u)&&!Ss(u)||(d=Vo(l))):h=!1}h&&(s.set(l,d),o(d,l,i,a,s),s.delete(l));Ei(e,n,d)}(e,t,s,n,gr,i,o);else{var u=i?i(na(e,s),a,s+"",e,t,o):r;u===r&&(u=a),Ei(e,s,u)}}),ou)}function vr(e,t){var n=e.length;if(n)return Uo(t+=t<0?n:0,n)?e[t]:r}function mr(e,t,n){var i=-1;t=cn(t.length?t:[Mu],En(Po()));var r=hr(e,(function(e,n,r){var o=cn(t,(function(t){return t(e)}));return{criteria:o,index:++i,value:e}}));return function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}(r,(function(e,t){return function(e,t,n){var i=-1,r=e.criteria,o=t.criteria,a=r.length,s=n.length;for(;++i<a;){var u=Jr(r[i],o[i]);if(u)return i>=s?u:u*("desc"==n[i]?-1:1)}return e.index-t.index}(e,t,n)}))}function _r(e,t,n){for(var i=-1,r=t.length,o={};++i<r;){var a=t[i],s=$i(e,a);n(s,a)&&Lr(o,Ur(a,e),s)}return o}function yr(e,t,n,i){var r=i?yn:_n,o=-1,a=t.length,s=e;for(e===t&&(t=no(t)),n&&(s=cn(e,En(n)));++o<a;)for(var u=0,l=t[o],c=n?n(l):l;(u=r(s,c,u,i))>-1;)s!==e&&St.call(s,u,1),St.call(e,u,1);return e}function br(e,t){for(var n=e?t.length:0,i=n-1;n--;){var r=t[n];if(n==i||r!==o){var o=r;Uo(r)?St.call(e,r,1):Fr(e,r)}}return e}function wr(e,t){return e+Vt(Gn()*(t-e+1))}function Cr(e,t){var n="";if(!e||t<1||t>O)return n;do{t%2&&(n+=e),(t=Vt(t/2))&&(e+=e)}while(t);return n}function kr(e,t){return oa(ea(e,t,Mu),e+"")}function Sr(e){return Si(fu(e))}function xr(e,t){var n=fu(e);return ua(n,Ai(t,0,n.length))}function Lr(e,t,n,i){if(!Es(e))return e;for(var o=-1,a=(t=Ur(t,e)).length,s=a-1,u=e;null!=u&&++o<a;){var l=ca(t[o]),c=n;if(o!=s){var d=u[l];(c=i?i(d,l,u):r)===r&&(c=Es(d)?d:Uo(t[o+1])?[]:{})}Di(u,l,c),u=u[l]}return e}var Er=ii?function(e,t){return ii.set(e,t),e}:Mu,Dr=Mt?function(e,t){return Mt(e,"toString",{configurable:!0,enumerable:!1,value:Eu(t),writable:!0})}:Mu;function Nr(e){return ua(fu(e))}function Mr(e,t,i){var r=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(i=i>o?o:i)<0&&(i+=o),o=t>i?0:i-t>>>0,t>>>=0;for(var a=n(o);++r<o;)a[r]=e[r+t];return a}function Tr(e,t){var n;return ji(e,(function(e,i,r){return!(n=t(e,i,r))})),!!n}function Ir(e,t,n){var i=0,r=null==e?i:e.length;if("number"==typeof t&&t===t&&r<=F){for(;i<r;){var o=i+r>>>1,a=e[o];null!==a&&!Rs(a)&&(n?a<=t:a<t)?i=o+1:r=o}return r}return Or(e,t,Mu,n)}function Or(e,t,n,i){t=n(t);for(var o=0,a=null==e?0:e.length,s=t!==t,u=null===t,l=Rs(t),c=t===r;o<a;){var d=Vt((o+a)/2),h=n(e[d]),f=h!==r,p=null===h,g=h===h,v=Rs(h);if(s)var m=i||g;else m=c?g&&(i||f):u?g&&f&&(i||!p):l?g&&f&&!p&&(i||!v):!p&&!v&&(i?h<=t:h<t);m?o=d+1:a=d}return Un(a,Z)}function Ar(e,t){for(var n=-1,i=e.length,r=0,o=[];++n<i;){var a=e[n],s=t?t(a):a;if(!n||!fs(s,u)){var u=s;o[r++]=0===a?0:a}}return o}function Rr(e){return"number"==typeof e?e:Rs(e)?R:+e}function Pr(e){if("string"==typeof e)return e;if(ms(e))return cn(e,Pr)+"";if(Rs(e))return hi?hi.call(e):"";var t=e+"";return"0"==t&&1/e==-I?"-0":t}function Zr(e,t,n){var i=-1,r=un,a=e.length,s=!0,u=[],l=u;if(n)s=!1,r=ln;else if(a>=o){var c=t?null:ko(e);if(c)return jn(c);s=!1,r=Nn,l=new wi}else l=t?[]:u;e:for(;++i<a;){var d=e[i],h=t?t(d):d;if(d=n||0!==d?d:0,s&&h===h){for(var f=l.length;f--;)if(l[f]===h)continue e;t&&l.push(h),u.push(d)}else r(l,h,n)||(l!==u&&l.push(h),u.push(d))}return u}function Fr(e,t){return null==(e=ta(e,t=Ur(t,e)))||delete e[ca(ka(t))]}function jr(e,t,n,i){return Lr(e,t,n($i(e,t)),i)}function Hr(e,t,n,i){for(var r=e.length,o=i?r:-1;(i?o--:++o<r)&&t(e[o],o,e););return n?Mr(e,i?0:o,i?o+1:r):Mr(e,i?o+1:0,i?r:o)}function Br(e,t){var n=e;return n instanceof mi&&(n=n.value()),hn(t,(function(e,t){return t.func.apply(t.thisArg,dn([e],t.args))}),n)}function zr(e,t,i){var r=e.length;if(r<2)return r?Zr(e[0]):[];for(var o=-1,a=n(r);++o<r;)for(var s=e[o],u=-1;++u<r;)u!=o&&(a[o]=Fi(a[o]||s,e[u],t,i));return Zr(Vi(a,1),t,i)}function Wr(e,t,n){for(var i=-1,o=e.length,a=t.length,s={};++i<o;){var u=i<a?t[i]:r;n(s,e[i],u)}return s}function Vr(e){return bs(e)?e:[]}function Yr(e){return"function"==typeof e?e:Mu}function Ur(e,t){return ms(e)?e:qo(e,t)?[e]:la(Ys(e))}var Kr=kr;function qr(e,t,n){var i=e.length;return n=n===r?i:n,!t&&n>=i?e:Mr(e,t,n)}var Gr=It||function(e){return Wt.clearTimeout(e)};function $r(e,t){if(t)return e.slice();var n=e.length,i=bt?bt(n):new e.constructor(n);return e.copy(i),i}function Qr(e){var t=new e.constructor(e.byteLength);return new yt(t).set(new yt(e)),t}function Xr(e,t){var n=t?Qr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Jr(e,t){if(e!==t){var n=e!==r,i=null===e,o=e===e,a=Rs(e),s=t!==r,u=null===t,l=t===t,c=Rs(t);if(!u&&!c&&!a&&e>t||a&&s&&l&&!u&&!c||i&&s&&l||!n&&l||!o)return 1;if(!i&&!a&&!c&&e<t||c&&n&&o&&!i&&!a||u&&n&&o||!s&&o||!l)return-1}return 0}function eo(e,t,i,r){for(var o=-1,a=e.length,s=i.length,u=-1,l=t.length,c=Yn(a-s,0),d=n(l+c),h=!r;++u<l;)d[u]=t[u];for(;++o<s;)(h||o<a)&&(d[i[o]]=e[o]);for(;c--;)d[u++]=e[o++];return d}function to(e,t,i,r){for(var o=-1,a=e.length,s=-1,u=i.length,l=-1,c=t.length,d=Yn(a-u,0),h=n(d+c),f=!r;++o<d;)h[o]=e[o];for(var p=o;++l<c;)h[p+l]=t[l];for(;++s<u;)(f||o<a)&&(h[p+i[s]]=e[o++]);return h}function no(e,t){var i=-1,r=e.length;for(t||(t=n(r));++i<r;)t[i]=e[i];return t}function io(e,t,n,i){var o=!n;n||(n={});for(var a=-1,s=t.length;++a<s;){var u=t[a],l=i?i(n[u],e[u],u,n,e):r;l===r&&(l=e[u]),o?Ii(n,u,l):Di(n,u,l)}return n}function ro(e,t){return function(n,i){var r=ms(n)?nn:Mi,o=t?t():{};return r(n,e,Po(i,2),o)}}function oo(e){return kr((function(t,n){var i=-1,o=n.length,a=o>1?n[o-1]:r,s=o>2?n[2]:r;for(a=e.length>3&&"function"==typeof a?(o--,a):r,s&&Ko(n[0],n[1],s)&&(a=o<3?r:a,o=1),t=tt(t);++i<o;){var u=n[i];u&&e(t,u,i,a)}return t}))}function ao(e,t){return function(n,i){if(null==n)return n;if(!ys(n))return e(n,i);for(var r=n.length,o=t?r:-1,a=tt(n);(t?o--:++o<r)&&!1!==i(a[o],o,a););return n}}function so(e){return function(t,n,i){for(var r=-1,o=tt(t),a=i(t),s=a.length;s--;){var u=a[e?s:++r];if(!1===n(o[u],u,o))break}return t}}function uo(e){return function(t){var n=Rn(t=Ys(t))?zn(t):r,i=n?n[0]:t.charAt(0),o=n?qr(n,1).join(""):t.slice(1);return i[e]()+o}}function lo(e){return function(t){return hn(Su(vu(t).replace(Dt,"")),e,"")}}function co(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=pi(e.prototype),i=e.apply(n,t);return Es(i)?i:n}}function ho(e){return function(t,n,i){var o=tt(t);if(!ys(t)){var a=Po(n,3);t=ru(t),n=function(e){return a(o[e],e,o)}}var s=e(t,n,i);return s>-1?o[a?t[s]:s]:r}}function fo(e){return Mo((function(t){var n=t.length,i=n,o=vi.prototype.thru;for(e&&t.reverse();i--;){var a=t[i];if("function"!=typeof a)throw new rt(s);if(o&&!u&&"wrapper"==Ao(a))var u=new vi([],!0)}for(i=u?i:n;++i<n;){var l=Ao(a=t[i]),c="wrapper"==l?Oo(a):r;u=c&&Go(c[0])&&c[1]==(k|y|w|S)&&!c[4].length&&1==c[9]?u[Ao(c[0])].apply(u,c[3]):1==a.length&&Go(a)?u[l]():u.thru(a)}return function(){var e=arguments,i=e[0];if(u&&1==e.length&&ms(i))return u.plant(i).value();for(var r=0,o=n?t[r].apply(this,e):i;++r<n;)o=t[r].call(this,o);return o}}))}function po(e,t,i,o,a,s,u,l,c,d){var h=t&k,f=t&v,p=t&m,g=t&(y|b),_=t&x,w=p?r:co(e);return function v(){for(var m=arguments.length,y=n(m),b=m;b--;)y[b]=arguments[b];if(g)var C=Ro(v),k=function(e,t){for(var n=e.length,i=0;n--;)e[n]===t&&++i;return i}(y,C);if(o&&(y=eo(y,o,a,g)),s&&(y=to(y,s,u,g)),m-=k,g&&m<d){var S=Fn(y,C);return wo(e,t,po,v.placeholder,i,y,S,l,c,d-m)}var x=f?i:this,L=p?x[e]:e;return m=y.length,l?y=function(e,t){var n=e.length,i=Un(t.length,n),o=no(e);for(;i--;){var a=t[i];e[i]=Uo(a,n)?o[a]:r}return e}(y,l):_&&m>1&&y.reverse(),h&&c<m&&(y.length=c),this&&this!==Wt&&this instanceof v&&(L=w||co(L)),L.apply(x,y)}}function go(e,t){return function(n,i){return function(e,t,n,i){return Ki(e,(function(e,r,o){t(i,n(e),r,o)})),i}(n,e,t(i),{})}}function vo(e,t){return function(n,i){var o;if(n===r&&i===r)return t;if(n!==r&&(o=n),i!==r){if(o===r)return i;"string"==typeof n||"string"==typeof i?(n=Pr(n),i=Pr(i)):(n=Rr(n),i=Rr(i)),o=e(n,i)}return o}}function mo(e){return Mo((function(t){return t=cn(t,En(Po())),kr((function(n){var i=this;return e(t,(function(e){return tn(e,i,n)}))}))}))}function _o(e,t){var n=(t=t===r?" ":Pr(t)).length;if(n<2)return n?Cr(t,e):t;var i=Cr(t,zt(e/Bn(t)));return Rn(t)?qr(zn(i),0,e).join(""):i.slice(0,e)}function yo(e){return function(t,i,o){return o&&"number"!=typeof o&&Ko(t,i,o)&&(i=o=r),t=Hs(t),i===r?(i=t,t=0):i=Hs(i),function(e,t,i,r){for(var o=-1,a=Yn(zt((t-e)/(i||1)),0),s=n(a);a--;)s[r?a:++o]=e,e+=i;return s}(t,i,o=o===r?t<i?1:-1:Hs(o),e)}}function bo(e){return function(t,n){return"string"==typeof t&&"string"==typeof n||(t=Ws(t),n=Ws(n)),e(t,n)}}function wo(e,t,n,i,o,a,s,u,l,c){var d=t&y;t|=d?w:C,(t&=~(d?C:w))&_||(t&=~(v|m));var h=[e,t,o,d?a:r,d?s:r,d?r:a,d?r:s,u,l,c],f=n.apply(r,h);return Go(e)&&ia(f,h),f.placeholder=i,aa(f,e,t)}function Co(e){var t=et[e];return function(e,n){if(e=Ws(e),n=null==n?0:Un(Bs(n),292)){var i=(Ys(e)+"e").split("e");return+((i=(Ys(t(i[0]+"e"+(+i[1]+n)))+"e").split("e"))[0]+"e"+(+i[1]-n))}return t(e)}}var ko=ei&&1/jn(new ei([,-0]))[1]==I?function(e){return new ei(e)}:Ru;function So(e){return function(t){var n=zo(t);return n==G?Pn(t):n==ne?Hn(t):function(e,t){return cn(t,(function(t){return[t,e[t]]}))}(t,e(t))}}function xo(e,t,i,o,a,u,l,d){var h=t&m;if(!h&&"function"!=typeof e)throw new rt(s);var f=o?o.length:0;if(f||(t&=~(w|C),o=a=r),l=l===r?l:Yn(Bs(l),0),d=d===r?d:Bs(d),f-=a?a.length:0,t&C){var p=o,g=a;o=a=r}var x=h?r:Oo(e),L=[e,t,i,o,a,p,g,u,l,d];if(x&&function(e,t){var n=e[1],i=t[1],r=n|i,o=r<(v|m|k),a=i==k&&n==y||i==k&&n==S&&e[7].length<=t[8]||i==(k|S)&&t[7].length<=t[8]&&n==y;if(!o&&!a)return e;i&v&&(e[2]=t[2],r|=n&v?0:_);var s=t[3];if(s){var u=e[3];e[3]=u?eo(u,s,t[4]):s,e[4]=u?Fn(e[3],c):t[4]}(s=t[5])&&(u=e[5],e[5]=u?to(u,s,t[6]):s,e[6]=u?Fn(e[5],c):t[6]);(s=t[7])&&(e[7]=s);i&k&&(e[8]=null==e[8]?t[8]:Un(e[8],t[8]));null==e[9]&&(e[9]=t[9]);e[0]=t[0],e[1]=r}(L,x),e=L[0],t=L[1],i=L[2],o=L[3],a=L[4],!(d=L[9]=L[9]===r?h?0:e.length:Yn(L[9]-f,0))&&t&(y|b)&&(t&=~(y|b)),t&&t!=v)E=t==y||t==b?function(e,t,i){var o=co(e);return function a(){for(var s=arguments.length,u=n(s),l=s,c=Ro(a);l--;)u[l]=arguments[l];var d=s<3&&u[0]!==c&&u[s-1]!==c?[]:Fn(u,c);return(s-=d.length)<i?wo(e,t,po,a.placeholder,r,u,d,r,r,i-s):tn(this&&this!==Wt&&this instanceof a?o:e,this,u)}}(e,t,d):t!=w&&t!=(v|w)||a.length?po.apply(r,L):function(e,t,i,r){var o=t&v,a=co(e);return function t(){for(var s=-1,u=arguments.length,l=-1,c=r.length,d=n(c+u),h=this&&this!==Wt&&this instanceof t?a:e;++l<c;)d[l]=r[l];for(;u--;)d[l++]=arguments[++s];return tn(h,o?i:this,d)}}(e,t,i,o);else var E=function(e,t,n){var i=t&v,r=co(e);return function t(){return(this&&this!==Wt&&this instanceof t?r:e).apply(i?n:this,arguments)}}(e,t,i);return aa((x?Er:ia)(E,L),e,t)}function Lo(e,t,n,i){return e===r||fs(e,st[n])&&!ct.call(i,n)?t:e}function Eo(e,t,n,i,o,a){return Es(e)&&Es(t)&&(a.set(t,e),gr(e,t,r,Eo,a),a.delete(t)),e}function Do(e){return Ts(e)?r:e}function No(e,t,n,i,o,a){var s=n&p,u=e.length,l=t.length;if(u!=l&&!(s&&l>u))return!1;var c=a.get(e);if(c&&a.get(t))return c==t;var d=-1,h=!0,f=n&g?new wi:r;for(a.set(e,t),a.set(t,e);++d<u;){var v=e[d],m=t[d];if(i)var _=s?i(m,v,d,t,e,a):i(v,m,d,e,t,a);if(_!==r){if(_)continue;h=!1;break}if(f){if(!pn(t,(function(e,t){if(!Nn(f,t)&&(v===e||o(v,e,n,i,a)))return f.push(t)}))){h=!1;break}}else if(v!==m&&!o(v,m,n,i,a)){h=!1;break}}return a.delete(e),a.delete(t),h}function Mo(e){return oa(ea(e,r,_a),e+"")}function To(e){return Qi(e,ru,Ho)}function Io(e){return Qi(e,ou,Bo)}var Oo=ii?function(e){return ii.get(e)}:Ru;function Ao(e){for(var t=e.name+"",n=ri[t],i=ct.call(ri,t)?n.length:0;i--;){var r=n[i],o=r.func;if(null==o||o==e)return r.name}return t}function Ro(e){return(ct.call(fi,"placeholder")?fi:e).placeholder}function Po(){var e=fi.iteratee||Tu;return e=e===Tu?ur:e,arguments.length?e(arguments[0],arguments[1]):e}function Zo(e,t){var n=e.__data__;return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?n["string"==typeof t?"string":"hash"]:n.map}function Fo(e){for(var t=ru(e),n=t.length;n--;){var i=t[n],r=e[i];t[n]=[i,r,Xo(r)]}return t}function jo(e,t){var n=function(e,t){return null==e?r:e[t]}(e,t);return sr(n)?n:r}var Ho=Yt?function(e){return null==e?[]:(e=tt(e),sn(Yt(e),(function(t){return kt.call(e,t)})))}:zu,Bo=Yt?function(e){for(var t=[];e;)dn(t,Ho(e)),e=wt(e);return t}:zu,zo=Xi;function Wo(e,t,n){for(var i=-1,r=(t=Ur(t,e)).length,o=!1;++i<r;){var a=ca(t[i]);if(!(o=null!=e&&n(e,a)))break;e=e[a]}return o||++i!=r?o:!!(r=null==e?0:e.length)&&Ls(r)&&Uo(a,r)&&(ms(e)||vs(e))}function Vo(e){return"function"!=typeof e.constructor||Qo(e)?{}:pi(wt(e))}function Yo(e){return ms(e)||vs(e)||!!(xt&&e&&e[xt])}function Uo(e,t){var n=typeof e;return!!(t=null==t?O:t)&&("number"==n||"symbol"!=n&&qe.test(e))&&e>-1&&e%1==0&&e<t}function Ko(e,t,n){if(!Es(n))return!1;var i=typeof t;return!!("number"==i?ys(n)&&Uo(t,n.length):"string"==i&&t in n)&&fs(n[t],e)}function qo(e,t){if(ms(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!Rs(e))||(Me.test(e)||!Ne.test(e)||null!=t&&e in tt(t))}function Go(e){var t=Ao(e),n=fi[t];if("function"!=typeof n||!(t in mi.prototype))return!1;if(e===n)return!0;var i=Oo(n);return!!i&&e===i[0]}(Qn&&zo(new Qn(new ArrayBuffer(1)))!=le||Xn&&zo(new Xn)!=G||Jn&&zo(Jn.resolve())!=J||ei&&zo(new ei)!=ne||ti&&zo(new ti)!=ae)&&(zo=function(e){var t=Xi(e),n=t==X?e.constructor:r,i=n?da(n):"";if(i)switch(i){case oi:return le;case ai:return G;case si:return J;case ui:return ne;case li:return ae}return t});var $o=ut?Ss:Wu;function Qo(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||st)}function Xo(e){return e===e&&!Es(e)}function Jo(e,t){return function(n){return null!=n&&(n[e]===t&&(t!==r||e in tt(n)))}}function ea(e,t,i){return t=Yn(t===r?e.length-1:t,0),function(){for(var r=arguments,o=-1,a=Yn(r.length-t,0),s=n(a);++o<a;)s[o]=r[t+o];o=-1;for(var u=n(t+1);++o<t;)u[o]=r[o];return u[t]=i(s),tn(e,this,u)}}function ta(e,t){return t.length<2?e:$i(e,Mr(t,0,-1))}function na(e,t){if("__proto__"!=t)return e[t]}var ia=sa(Er),ra=Bt||function(e,t){return Wt.setTimeout(e,t)},oa=sa(Dr);function aa(e,t,n){var i=t+"";return oa(e,function(e,t){var n=t.length;if(!n)return e;var i=n-1;return t[i]=(n>1?"& ":"")+t[i],t=t.join(n>2?", ":" "),e.replace(Ze,"{\n/* [wrapped with "+t+"] */\n")}(i,function(e,t){return rn(j,(function(n){var i="_."+n[0];t&n[1]&&!un(e,i)&&e.push(i)})),e.sort()}(function(e){var t=e.match(Fe);return t?t[1].split(je):[]}(i),n)))}function sa(e){var t=0,n=0;return function(){var i=Kn(),o=N-(i-n);if(n=i,o>0){if(++t>=D)return arguments[0]}else t=0;return e.apply(r,arguments)}}function ua(e,t){var n=-1,i=e.length,o=i-1;for(t=t===r?i:t;++n<t;){var a=wr(n,o),s=e[a];e[a]=e[n],e[n]=s}return e.length=t,e}var la=function(e){var t=ss(e,(function(e){return n.size===l&&n.clear(),e})),n=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(Te,(function(e,n,i,r){t.push(i?r.replace(Be,"$1"):n||e)})),t}));function ca(e){if("string"==typeof e||Rs(e))return e;var t=e+"";return"0"==t&&1/e==-I?"-0":t}function da(e){if(null!=e){try{return lt.call(e)}catch(t){}try{return e+""}catch(t){}}return""}function ha(e){if(e instanceof mi)return e.clone();var t=new vi(e.__wrapped__,e.__chain__);return t.__actions__=no(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}var fa=kr((function(e,t){return bs(e)?Fi(e,Vi(t,1,bs,!0)):[]})),pa=kr((function(e,t){var n=ka(t);return bs(n)&&(n=r),bs(e)?Fi(e,Vi(t,1,bs,!0),Po(n,2)):[]})),ga=kr((function(e,t){var n=ka(t);return bs(n)&&(n=r),bs(e)?Fi(e,Vi(t,1,bs,!0),r,n):[]}));function va(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var r=null==n?0:Bs(n);return r<0&&(r=Yn(i+r,0)),mn(e,Po(t,3),r)}function ma(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var o=i-1;return n!==r&&(o=Bs(n),o=n<0?Yn(i+o,0):Un(o,i-1)),mn(e,Po(t,3),o,!0)}function _a(e){return(null==e?0:e.length)?Vi(e,1):[]}function ya(e){return e&&e.length?e[0]:r}var ba=kr((function(e){var t=cn(e,Vr);return t.length&&t[0]===e[0]?nr(t):[]})),wa=kr((function(e){var t=ka(e),n=cn(e,Vr);return t===ka(n)?t=r:n.pop(),n.length&&n[0]===e[0]?nr(n,Po(t,2)):[]})),Ca=kr((function(e){var t=ka(e),n=cn(e,Vr);return(t="function"==typeof t?t:r)&&n.pop(),n.length&&n[0]===e[0]?nr(n,r,t):[]}));function ka(e){var t=null==e?0:e.length;return t?e[t-1]:r}var Sa=kr(xa);function xa(e,t){return e&&e.length&&t&&t.length?yr(e,t):e}var La=Mo((function(e,t){var n=null==e?0:e.length,i=Oi(e,t);return br(e,cn(t,(function(e){return Uo(e,n)?+e:e})).sort(Jr)),i}));function Ea(e){return null==e?e:$n.call(e)}var Da=kr((function(e){return Zr(Vi(e,1,bs,!0))})),Na=kr((function(e){var t=ka(e);return bs(t)&&(t=r),Zr(Vi(e,1,bs,!0),Po(t,2))})),Ma=kr((function(e){var t=ka(e);return t="function"==typeof t?t:r,Zr(Vi(e,1,bs,!0),r,t)}));function Ta(e){if(!e||!e.length)return[];var t=0;return e=sn(e,(function(e){if(bs(e))return t=Yn(e.length,t),!0})),Ln(t,(function(t){return cn(e,Cn(t))}))}function Ia(e,t){if(!e||!e.length)return[];var n=Ta(e);return null==t?n:cn(n,(function(e){return tn(t,r,e)}))}var Oa=kr((function(e,t){return bs(e)?Fi(e,t):[]})),Aa=kr((function(e){return zr(sn(e,bs))})),Ra=kr((function(e){var t=ka(e);return bs(t)&&(t=r),zr(sn(e,bs),Po(t,2))})),Pa=kr((function(e){var t=ka(e);return t="function"==typeof t?t:r,zr(sn(e,bs),r,t)})),Za=kr(Ta);var Fa=kr((function(e){var t=e.length,n=t>1?e[t-1]:r;return n="function"==typeof n?(e.pop(),n):r,Ia(e,n)}));function ja(e){var t=fi(e);return t.__chain__=!0,t}function Ha(e,t){return t(e)}var Ba=Mo((function(e){var t=e.length,n=t?e[0]:0,i=this.__wrapped__,o=function(t){return Oi(t,e)};return!(t>1||this.__actions__.length)&&i instanceof mi&&Uo(n)?((i=i.slice(n,+n+(t?1:0))).__actions__.push({func:Ha,args:[o],thisArg:r}),new vi(i,this.__chain__).thru((function(e){return t&&!e.length&&e.push(r),e}))):this.thru(o)}));var za=ro((function(e,t,n){ct.call(e,n)?++e[n]:Ii(e,n,1)}));var Wa=ho(va),Va=ho(ma);function Ya(e,t){return(ms(e)?rn:ji)(e,Po(t,3))}function Ua(e,t){return(ms(e)?on:Hi)(e,Po(t,3))}var Ka=ro((function(e,t,n){ct.call(e,n)?e[n].push(t):Ii(e,n,[t])}));var qa=kr((function(e,t,i){var r=-1,o="function"==typeof t,a=ys(e)?n(e.length):[];return ji(e,(function(e){a[++r]=o?tn(t,e,i):ir(e,t,i)})),a})),Ga=ro((function(e,t,n){Ii(e,n,t)}));function $a(e,t){return(ms(e)?cn:hr)(e,Po(t,3))}var Qa=ro((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var Xa=kr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&Ko(e,t[0],t[1])?t=[]:n>2&&Ko(t[0],t[1],t[2])&&(t=[t[0]]),mr(e,Vi(t,1),[])})),Ja=Ft||function(){return Wt.Date.now()};function es(e,t,n){return t=n?r:t,t=e&&null==t?e.length:t,xo(e,k,r,r,r,r,t)}function ts(e,t){var n;if("function"!=typeof t)throw new rt(s);return e=Bs(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=r),n}}var ns=kr((function(e,t,n){var i=v;if(n.length){var r=Fn(n,Ro(ns));i|=w}return xo(e,i,t,n,r)})),is=kr((function(e,t,n){var i=v|m;if(n.length){var r=Fn(n,Ro(is));i|=w}return xo(t,i,e,n,r)}));function rs(e,t,n){var i,o,a,u,l,c,d=0,h=!1,f=!1,p=!0;if("function"!=typeof e)throw new rt(s);function g(t){var n=i,a=o;return i=o=r,d=t,u=e.apply(a,n)}function v(e){var n=e-c;return c===r||n>=t||n<0||f&&e-d>=a}function m(){var e=Ja();if(v(e))return _(e);l=ra(m,function(e){var n=t-(e-c);return f?Un(n,a-(e-d)):n}(e))}function _(e){return l=r,p&&i?g(e):(i=o=r,u)}function y(){var e=Ja(),n=v(e);if(i=arguments,o=this,c=e,n){if(l===r)return function(e){return d=e,l=ra(m,t),h?g(e):u}(c);if(f)return l=ra(m,t),g(c)}return l===r&&(l=ra(m,t)),u}return t=Ws(t)||0,Es(n)&&(h=!!n.leading,a=(f="maxWait"in n)?Yn(Ws(n.maxWait)||0,t):a,p="trailing"in n?!!n.trailing:p),y.cancel=function(){l!==r&&Gr(l),d=0,i=c=o=l=r},y.flush=function(){return l===r?u:_(Ja())},y}var os=kr((function(e,t){return Zi(e,1,t)})),as=kr((function(e,t,n){return Zi(e,Ws(t)||0,n)}));function ss(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new rt(s);var n=function n(){var i=arguments,r=t?t.apply(this,i):i[0],o=n.cache;if(o.has(r))return o.get(r);var a=e.apply(this,i);return n.cache=o.set(r,a)||o,a};return n.cache=new(ss.Cache||bi),n}function us(e){if("function"!=typeof e)throw new rt(s);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}ss.Cache=bi;var ls=Kr((function(e,t){var n=(t=1==t.length&&ms(t[0])?cn(t[0],En(Po())):cn(Vi(t,1),En(Po()))).length;return kr((function(i){for(var r=-1,o=Un(i.length,n);++r<o;)i[r]=t[r].call(this,i[r]);return tn(e,this,i)}))})),cs=kr((function(e,t){var n=Fn(t,Ro(cs));return xo(e,w,r,t,n)})),ds=kr((function(e,t){var n=Fn(t,Ro(ds));return xo(e,C,r,t,n)})),hs=Mo((function(e,t){return xo(e,S,r,r,r,t)}));function fs(e,t){return e===t||e!==e&&t!==t}var ps=bo(Ji),gs=bo((function(e,t){return e>=t})),vs=rr(function(){return arguments}())?rr:function(e){return Ds(e)&&ct.call(e,"callee")&&!kt.call(e,"callee")},ms=n.isArray,_s=Gt?En(Gt):function(e){return Ds(e)&&Xi(e)==ue};function ys(e){return null!=e&&Ls(e.length)&&!Ss(e)}function bs(e){return Ds(e)&&ys(e)}var ws=Kt||Wu,Cs=$t?En($t):function(e){return Ds(e)&&Xi(e)==V};function ks(e){if(!Ds(e))return!1;var t=Xi(e);return t==U||t==Y||"string"==typeof e.message&&"string"==typeof e.name&&!Ts(e)}function Ss(e){if(!Es(e))return!1;var t=Xi(e);return t==K||t==q||t==z||t==ee}function xs(e){return"number"==typeof e&&e==Bs(e)}function Ls(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=O}function Es(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Ds(e){return null!=e&&"object"==typeof e}var Ns=Qt?En(Qt):function(e){return Ds(e)&&zo(e)==G};function Ms(e){return"number"==typeof e||Ds(e)&&Xi(e)==$}function Ts(e){if(!Ds(e)||Xi(e)!=X)return!1;var t=wt(e);if(null===t)return!0;var n=ct.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&<.call(n)==pt}var Is=Xt?En(Xt):function(e){return Ds(e)&&Xi(e)==te};var Os=Jt?En(Jt):function(e){return Ds(e)&&zo(e)==ne};function As(e){return"string"==typeof e||!ms(e)&&Ds(e)&&Xi(e)==ie}function Rs(e){return"symbol"==typeof e||Ds(e)&&Xi(e)==re}var Ps=en?En(en):function(e){return Ds(e)&&Ls(e.length)&&!!Pt[Xi(e)]};var Zs=bo(dr),Fs=bo((function(e,t){return e<=t}));function js(e){if(!e)return[];if(ys(e))return As(e)?zn(e):no(e);if(Lt&&e[Lt])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Lt]());var t=zo(e);return(t==G?Pn:t==ne?jn:fu)(e)}function Hs(e){return e?(e=Ws(e))===I||e===-I?(e<0?-1:1)*A:e===e?e:0:0===e?e:0}function Bs(e){var t=Hs(e),n=t%1;return t===t?n?t-n:t:0}function zs(e){return e?Ai(Bs(e),0,P):0}function Ws(e){if("number"==typeof e)return e;if(Rs(e))return R;if(Es(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Es(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Ae,"");var n=Ye.test(e);return n||Ke.test(e)?Ht(e.slice(2),n?2:8):Ve.test(e)?R:+e}function Vs(e){return io(e,ou(e))}function Ys(e){return null==e?"":Pr(e)}var Us=oo((function(e,t){if(Qo(t)||ys(t))io(t,ru(t),e);else for(var n in t)ct.call(t,n)&&Di(e,n,t[n])})),Ks=oo((function(e,t){io(t,ou(t),e)})),qs=oo((function(e,t,n,i){io(t,ou(t),e,i)})),Gs=oo((function(e,t,n,i){io(t,ru(t),e,i)})),$s=Mo(Oi);var Qs=kr((function(e,t){e=tt(e);var n=-1,i=t.length,o=i>2?t[2]:r;for(o&&Ko(t[0],t[1],o)&&(i=1);++n<i;)for(var a=t[n],s=ou(a),u=-1,l=s.length;++u<l;){var c=s[u],d=e[c];(d===r||fs(d,st[c])&&!ct.call(e,c))&&(e[c]=a[c])}return e})),Xs=kr((function(e){return e.push(r,Eo),tn(su,r,e)}));function Js(e,t,n){var i=null==e?r:$i(e,t);return i===r?n:i}function eu(e,t){return null!=e&&Wo(e,t,tr)}var tu=go((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=ft.call(t)),e[t]=n}),Eu(Mu)),nu=go((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=ft.call(t)),ct.call(e,t)?e[t].push(n):e[t]=[n]}),Po),iu=kr(ir);function ru(e){return ys(e)?ki(e):lr(e)}function ou(e){return ys(e)?ki(e,!0):cr(e)}var au=oo((function(e,t,n){gr(e,t,n)})),su=oo((function(e,t,n,i){gr(e,t,n,i)})),uu=Mo((function(e,t){var n={};if(null==e)return n;var i=!1;t=cn(t,(function(t){return t=Ur(t,e),i||(i=t.length>1),t})),io(e,Io(e),n),i&&(n=Ri(n,d|h|f,Do));for(var r=t.length;r--;)Fr(n,t[r]);return n}));var lu=Mo((function(e,t){return null==e?{}:function(e,t){return _r(e,t,(function(t,n){return eu(e,n)}))}(e,t)}));function cu(e,t){if(null==e)return{};var n=cn(Io(e),(function(e){return[e]}));return t=Po(t),_r(e,n,(function(e,n){return t(e,n[0])}))}var du=So(ru),hu=So(ou);function fu(e){return null==e?[]:Dn(e,ru(e))}var pu=lo((function(e,t,n){return t=t.toLowerCase(),e+(n?gu(t):t)}));function gu(e){return ku(Ys(e).toLowerCase())}function vu(e){return(e=Ys(e))&&e.replace(Ge,In).replace(Nt,"")}var mu=lo((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),_u=lo((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),yu=uo("toLowerCase");var bu=lo((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var wu=lo((function(e,t,n){return e+(n?" ":"")+ku(t)}));var Cu=lo((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),ku=uo("toUpperCase");function Su(e,t,n){return e=Ys(e),(t=n?r:t)===r?function(e){return Ot.test(e)}(e)?function(e){return e.match(Tt)||[]}(e):function(e){return e.match(He)||[]}(e):e.match(t)||[]}var xu=kr((function(e,t){try{return tn(e,r,t)}catch(n){return ks(n)?n:new Xe(n)}})),Lu=Mo((function(e,t){return rn(t,(function(t){t=ca(t),Ii(e,t,ns(e[t],e))})),e}));function Eu(e){return function(){return e}}var Du=fo(),Nu=fo(!0);function Mu(e){return e}function Tu(e){return ur("function"==typeof e?e:Ri(e,d))}var Iu=kr((function(e,t){return function(n){return ir(n,e,t)}})),Ou=kr((function(e,t){return function(n){return ir(e,n,t)}}));function Au(e,t,n){var i=ru(t),r=Gi(t,i);null!=n||Es(t)&&(r.length||!i.length)||(n=t,t=e,e=this,r=Gi(t,ru(t)));var o=!(Es(n)&&"chain"in n)||!!n.chain,a=Ss(e);return rn(r,(function(n){var i=t[n];e[n]=i,a&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__);return(n.__actions__=no(this.__actions__)).push({func:i,args:arguments,thisArg:e}),n.__chain__=t,n}return i.apply(e,dn([this.value()],arguments))})})),e}function Ru(){}var Pu=mo(cn),Zu=mo(an),Fu=mo(pn);function ju(e){return qo(e)?Cn(ca(e)):function(e){return function(t){return $i(t,e)}}(e)}var Hu=yo(),Bu=yo(!0);function zu(){return[]}function Wu(){return!1}var Vu=vo((function(e,t){return e+t}),0),Yu=Co("ceil"),Uu=vo((function(e,t){return e/t}),1),Ku=Co("floor");var qu=vo((function(e,t){return e*t}),1),Gu=Co("round"),$u=vo((function(e,t){return e-t}),0);return fi.after=function(e,t){if("function"!=typeof t)throw new rt(s);return e=Bs(e),function(){if(--e<1)return t.apply(this,arguments)}},fi.ary=es,fi.assign=Us,fi.assignIn=Ks,fi.assignInWith=qs,fi.assignWith=Gs,fi.at=$s,fi.before=ts,fi.bind=ns,fi.bindAll=Lu,fi.bindKey=is,fi.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return ms(e)?e:[e]},fi.chain=ja,fi.chunk=function(e,t,i){t=(i?Ko(e,t,i):t===r)?1:Yn(Bs(t),0);var o=null==e?0:e.length;if(!o||t<1)return[];for(var a=0,s=0,u=n(zt(o/t));a<o;)u[s++]=Mr(e,a,a+=t);return u},fi.compact=function(e){for(var t=-1,n=null==e?0:e.length,i=0,r=[];++t<n;){var o=e[t];o&&(r[i++]=o)}return r},fi.concat=function(){var e=arguments.length;if(!e)return[];for(var t=n(e-1),i=arguments[0],r=e;r--;)t[r-1]=arguments[r];return dn(ms(i)?no(i):[i],Vi(t,1))},fi.cond=function(e){var t=null==e?0:e.length,n=Po();return e=t?cn(e,(function(e){if("function"!=typeof e[1])throw new rt(s);return[n(e[0]),e[1]]})):[],kr((function(n){for(var i=-1;++i<t;){var r=e[i];if(tn(r[0],this,n))return tn(r[1],this,n)}}))},fi.conforms=function(e){return function(e){var t=ru(e);return function(n){return Pi(n,e,t)}}(Ri(e,d))},fi.constant=Eu,fi.countBy=za,fi.create=function(e,t){var n=pi(e);return null==t?n:Ti(n,t)},fi.curry=function e(t,n,i){var o=xo(t,y,r,r,r,r,r,n=i?r:n);return o.placeholder=e.placeholder,o},fi.curryRight=function e(t,n,i){var o=xo(t,b,r,r,r,r,r,n=i?r:n);return o.placeholder=e.placeholder,o},fi.debounce=rs,fi.defaults=Qs,fi.defaultsDeep=Xs,fi.defer=os,fi.delay=as,fi.difference=fa,fi.differenceBy=pa,fi.differenceWith=ga,fi.drop=function(e,t,n){var i=null==e?0:e.length;return i?Mr(e,(t=n||t===r?1:Bs(t))<0?0:t,i):[]},fi.dropRight=function(e,t,n){var i=null==e?0:e.length;return i?Mr(e,0,(t=i-(t=n||t===r?1:Bs(t)))<0?0:t):[]},fi.dropRightWhile=function(e,t){return e&&e.length?Hr(e,Po(t,3),!0,!0):[]},fi.dropWhile=function(e,t){return e&&e.length?Hr(e,Po(t,3),!0):[]},fi.fill=function(e,t,n,i){var o=null==e?0:e.length;return o?(n&&"number"!=typeof n&&Ko(e,t,n)&&(n=0,i=o),function(e,t,n,i){var o=e.length;for((n=Bs(n))<0&&(n=-n>o?0:o+n),(i=i===r||i>o?o:Bs(i))<0&&(i+=o),i=n>i?0:zs(i);n<i;)e[n++]=t;return e}(e,t,n,i)):[]},fi.filter=function(e,t){return(ms(e)?sn:Wi)(e,Po(t,3))},fi.flatMap=function(e,t){return Vi($a(e,t),1)},fi.flatMapDeep=function(e,t){return Vi($a(e,t),I)},fi.flatMapDepth=function(e,t,n){return n=n===r?1:Bs(n),Vi($a(e,t),n)},fi.flatten=_a,fi.flattenDeep=function(e){return(null==e?0:e.length)?Vi(e,I):[]},fi.flattenDepth=function(e,t){return(null==e?0:e.length)?Vi(e,t=t===r?1:Bs(t)):[]},fi.flip=function(e){return xo(e,x)},fi.flow=Du,fi.flowRight=Nu,fi.fromPairs=function(e){for(var t=-1,n=null==e?0:e.length,i={};++t<n;){var r=e[t];i[r[0]]=r[1]}return i},fi.functions=function(e){return null==e?[]:Gi(e,ru(e))},fi.functionsIn=function(e){return null==e?[]:Gi(e,ou(e))},fi.groupBy=Ka,fi.initial=function(e){return(null==e?0:e.length)?Mr(e,0,-1):[]},fi.intersection=ba,fi.intersectionBy=wa,fi.intersectionWith=Ca,fi.invert=tu,fi.invertBy=nu,fi.invokeMap=qa,fi.iteratee=Tu,fi.keyBy=Ga,fi.keys=ru,fi.keysIn=ou,fi.map=$a,fi.mapKeys=function(e,t){var n={};return t=Po(t,3),Ki(e,(function(e,i,r){Ii(n,t(e,i,r),e)})),n},fi.mapValues=function(e,t){var n={};return t=Po(t,3),Ki(e,(function(e,i,r){Ii(n,i,t(e,i,r))})),n},fi.matches=function(e){return fr(Ri(e,d))},fi.matchesProperty=function(e,t){return pr(e,Ri(t,d))},fi.memoize=ss,fi.merge=au,fi.mergeWith=su,fi.method=Iu,fi.methodOf=Ou,fi.mixin=Au,fi.negate=us,fi.nthArg=function(e){return e=Bs(e),kr((function(t){return vr(t,e)}))},fi.omit=uu,fi.omitBy=function(e,t){return cu(e,us(Po(t)))},fi.once=function(e){return ts(2,e)},fi.orderBy=function(e,t,n,i){return null==e?[]:(ms(t)||(t=null==t?[]:[t]),ms(n=i?r:n)||(n=null==n?[]:[n]),mr(e,t,n))},fi.over=Pu,fi.overArgs=ls,fi.overEvery=Zu,fi.overSome=Fu,fi.partial=cs,fi.partialRight=ds,fi.partition=Qa,fi.pick=lu,fi.pickBy=cu,fi.property=ju,fi.propertyOf=function(e){return function(t){return null==e?r:$i(e,t)}},fi.pull=Sa,fi.pullAll=xa,fi.pullAllBy=function(e,t,n){return e&&e.length&&t&&t.length?yr(e,t,Po(n,2)):e},fi.pullAllWith=function(e,t,n){return e&&e.length&&t&&t.length?yr(e,t,r,n):e},fi.pullAt=La,fi.range=Hu,fi.rangeRight=Bu,fi.rearg=hs,fi.reject=function(e,t){return(ms(e)?sn:Wi)(e,us(Po(t,3)))},fi.remove=function(e,t){var n=[];if(!e||!e.length)return n;var i=-1,r=[],o=e.length;for(t=Po(t,3);++i<o;){var a=e[i];t(a,i,e)&&(n.push(a),r.push(i))}return br(e,r),n},fi.rest=function(e,t){if("function"!=typeof e)throw new rt(s);return kr(e,t=t===r?t:Bs(t))},fi.reverse=Ea,fi.sampleSize=function(e,t,n){return t=(n?Ko(e,t,n):t===r)?1:Bs(t),(ms(e)?xi:xr)(e,t)},fi.set=function(e,t,n){return null==e?e:Lr(e,t,n)},fi.setWith=function(e,t,n,i){return i="function"==typeof i?i:r,null==e?e:Lr(e,t,n,i)},fi.shuffle=function(e){return(ms(e)?Li:Nr)(e)},fi.slice=function(e,t,n){var i=null==e?0:e.length;return i?(n&&"number"!=typeof n&&Ko(e,t,n)?(t=0,n=i):(t=null==t?0:Bs(t),n=n===r?i:Bs(n)),Mr(e,t,n)):[]},fi.sortBy=Xa,fi.sortedUniq=function(e){return e&&e.length?Ar(e):[]},fi.sortedUniqBy=function(e,t){return e&&e.length?Ar(e,Po(t,2)):[]},fi.split=function(e,t,n){return n&&"number"!=typeof n&&Ko(e,t,n)&&(t=n=r),(n=n===r?P:n>>>0)?(e=Ys(e))&&("string"==typeof t||null!=t&&!Is(t))&&!(t=Pr(t))&&Rn(e)?qr(zn(e),0,n):e.split(t,n):[]},fi.spread=function(e,t){if("function"!=typeof e)throw new rt(s);return t=null==t?0:Yn(Bs(t),0),kr((function(n){var i=n[t],r=qr(n,0,t);return i&&dn(r,i),tn(e,this,r)}))},fi.tail=function(e){var t=null==e?0:e.length;return t?Mr(e,1,t):[]},fi.take=function(e,t,n){return e&&e.length?Mr(e,0,(t=n||t===r?1:Bs(t))<0?0:t):[]},fi.takeRight=function(e,t,n){var i=null==e?0:e.length;return i?Mr(e,(t=i-(t=n||t===r?1:Bs(t)))<0?0:t,i):[]},fi.takeRightWhile=function(e,t){return e&&e.length?Hr(e,Po(t,3),!1,!0):[]},fi.takeWhile=function(e,t){return e&&e.length?Hr(e,Po(t,3)):[]},fi.tap=function(e,t){return t(e),e},fi.throttle=function(e,t,n){var i=!0,r=!0;if("function"!=typeof e)throw new rt(s);return Es(n)&&(i="leading"in n?!!n.leading:i,r="trailing"in n?!!n.trailing:r),rs(e,t,{leading:i,maxWait:t,trailing:r})},fi.thru=Ha,fi.toArray=js,fi.toPairs=du,fi.toPairsIn=hu,fi.toPath=function(e){return ms(e)?cn(e,ca):Rs(e)?[e]:no(la(Ys(e)))},fi.toPlainObject=Vs,fi.transform=function(e,t,n){var i=ms(e),r=i||ws(e)||Ps(e);if(t=Po(t,4),null==n){var o=e&&e.constructor;n=r?i?new o:[]:Es(e)&&Ss(o)?pi(wt(e)):{}}return(r?rn:Ki)(e,(function(e,i,r){return t(n,e,i,r)})),n},fi.unary=function(e){return es(e,1)},fi.union=Da,fi.unionBy=Na,fi.unionWith=Ma,fi.uniq=function(e){return e&&e.length?Zr(e):[]},fi.uniqBy=function(e,t){return e&&e.length?Zr(e,Po(t,2)):[]},fi.uniqWith=function(e,t){return t="function"==typeof t?t:r,e&&e.length?Zr(e,r,t):[]},fi.unset=function(e,t){return null==e||Fr(e,t)},fi.unzip=Ta,fi.unzipWith=Ia,fi.update=function(e,t,n){return null==e?e:jr(e,t,Yr(n))},fi.updateWith=function(e,t,n,i){return i="function"==typeof i?i:r,null==e?e:jr(e,t,Yr(n),i)},fi.values=fu,fi.valuesIn=function(e){return null==e?[]:Dn(e,ou(e))},fi.without=Oa,fi.words=Su,fi.wrap=function(e,t){return cs(Yr(t),e)},fi.xor=Aa,fi.xorBy=Ra,fi.xorWith=Pa,fi.zip=Za,fi.zipObject=function(e,t){return Wr(e||[],t||[],Di)},fi.zipObjectDeep=function(e,t){return Wr(e||[],t||[],Lr)},fi.zipWith=Fa,fi.entries=du,fi.entriesIn=hu,fi.extend=Ks,fi.extendWith=qs,Au(fi,fi),fi.add=Vu,fi.attempt=xu,fi.camelCase=pu,fi.capitalize=gu,fi.ceil=Yu,fi.clamp=function(e,t,n){return n===r&&(n=t,t=r),n!==r&&(n=(n=Ws(n))===n?n:0),t!==r&&(t=(t=Ws(t))===t?t:0),Ai(Ws(e),t,n)},fi.clone=function(e){return Ri(e,f)},fi.cloneDeep=function(e){return Ri(e,d|f)},fi.cloneDeepWith=function(e,t){return Ri(e,d|f,t="function"==typeof t?t:r)},fi.cloneWith=function(e,t){return Ri(e,f,t="function"==typeof t?t:r)},fi.conformsTo=function(e,t){return null==t||Pi(e,t,ru(t))},fi.deburr=vu,fi.defaultTo=function(e,t){return null==e||e!==e?t:e},fi.divide=Uu,fi.endsWith=function(e,t,n){e=Ys(e),t=Pr(t);var i=e.length,o=n=n===r?i:Ai(Bs(n),0,i);return(n-=t.length)>=0&&e.slice(n,o)==t},fi.eq=fs,fi.escape=function(e){return(e=Ys(e))&&xe.test(e)?e.replace(ke,On):e},fi.escapeRegExp=function(e){return(e=Ys(e))&&Oe.test(e)?e.replace(Ie,"\\$&"):e},fi.every=function(e,t,n){var i=ms(e)?an:Bi;return n&&Ko(e,t,n)&&(t=r),i(e,Po(t,3))},fi.find=Wa,fi.findIndex=va,fi.findKey=function(e,t){return vn(e,Po(t,3),Ki)},fi.findLast=Va,fi.findLastIndex=ma,fi.findLastKey=function(e,t){return vn(e,Po(t,3),qi)},fi.floor=Ku,fi.forEach=Ya,fi.forEachRight=Ua,fi.forIn=function(e,t){return null==e?e:Yi(e,Po(t,3),ou)},fi.forInRight=function(e,t){return null==e?e:Ui(e,Po(t,3),ou)},fi.forOwn=function(e,t){return e&&Ki(e,Po(t,3))},fi.forOwnRight=function(e,t){return e&&qi(e,Po(t,3))},fi.get=Js,fi.gt=ps,fi.gte=gs,fi.has=function(e,t){return null!=e&&Wo(e,t,er)},fi.hasIn=eu,fi.head=ya,fi.identity=Mu,fi.includes=function(e,t,n,i){e=ys(e)?e:fu(e),n=n&&!i?Bs(n):0;var r=e.length;return n<0&&(n=Yn(r+n,0)),As(e)?n<=r&&e.indexOf(t,n)>-1:!!r&&_n(e,t,n)>-1},fi.indexOf=function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var r=null==n?0:Bs(n);return r<0&&(r=Yn(i+r,0)),_n(e,t,r)},fi.inRange=function(e,t,n){return t=Hs(t),n===r?(n=t,t=0):n=Hs(n),function(e,t,n){return e>=Un(t,n)&&e<Yn(t,n)}(e=Ws(e),t,n)},fi.invoke=iu,fi.isArguments=vs,fi.isArray=ms,fi.isArrayBuffer=_s,fi.isArrayLike=ys,fi.isArrayLikeObject=bs,fi.isBoolean=function(e){return!0===e||!1===e||Ds(e)&&Xi(e)==W},fi.isBuffer=ws,fi.isDate=Cs,fi.isElement=function(e){return Ds(e)&&1===e.nodeType&&!Ts(e)},fi.isEmpty=function(e){if(null==e)return!0;if(ys(e)&&(ms(e)||"string"==typeof e||"function"==typeof e.splice||ws(e)||Ps(e)||vs(e)))return!e.length;var t=zo(e);if(t==G||t==ne)return!e.size;if(Qo(e))return!lr(e).length;for(var n in e)if(ct.call(e,n))return!1;return!0},fi.isEqual=function(e,t){return or(e,t)},fi.isEqualWith=function(e,t,n){var i=(n="function"==typeof n?n:r)?n(e,t):r;return i===r?or(e,t,r,n):!!i},fi.isError=ks,fi.isFinite=function(e){return"number"==typeof e&&qt(e)},fi.isFunction=Ss,fi.isInteger=xs,fi.isLength=Ls,fi.isMap=Ns,fi.isMatch=function(e,t){return e===t||ar(e,t,Fo(t))},fi.isMatchWith=function(e,t,n){return n="function"==typeof n?n:r,ar(e,t,Fo(t),n)},fi.isNaN=function(e){return Ms(e)&&e!=+e},fi.isNative=function(e){if($o(e))throw new Xe(a);return sr(e)},fi.isNil=function(e){return null==e},fi.isNull=function(e){return null===e},fi.isNumber=Ms,fi.isObject=Es,fi.isObjectLike=Ds,fi.isPlainObject=Ts,fi.isRegExp=Is,fi.isSafeInteger=function(e){return xs(e)&&e>=-O&&e<=O},fi.isSet=Os,fi.isString=As,fi.isSymbol=Rs,fi.isTypedArray=Ps,fi.isUndefined=function(e){return e===r},fi.isWeakMap=function(e){return Ds(e)&&zo(e)==ae},fi.isWeakSet=function(e){return Ds(e)&&Xi(e)==se},fi.join=function(e,t){return null==e?"":gn.call(e,t)},fi.kebabCase=mu,fi.last=ka,fi.lastIndexOf=function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var o=i;return n!==r&&(o=(o=Bs(n))<0?Yn(i+o,0):Un(o,i-1)),t===t?function(e,t,n){for(var i=n+1;i--;)if(e[i]===t)return i;return i}(e,t,o):mn(e,bn,o,!0)},fi.lowerCase=_u,fi.lowerFirst=yu,fi.lt=Zs,fi.lte=Fs,fi.max=function(e){return e&&e.length?zi(e,Mu,Ji):r},fi.maxBy=function(e,t){return e&&e.length?zi(e,Po(t,2),Ji):r},fi.mean=function(e){return wn(e,Mu)},fi.meanBy=function(e,t){return wn(e,Po(t,2))},fi.min=function(e){return e&&e.length?zi(e,Mu,dr):r},fi.minBy=function(e,t){return e&&e.length?zi(e,Po(t,2),dr):r},fi.stubArray=zu,fi.stubFalse=Wu,fi.stubObject=function(){return{}},fi.stubString=function(){return""},fi.stubTrue=function(){return!0},fi.multiply=qu,fi.nth=function(e,t){return e&&e.length?vr(e,Bs(t)):r},fi.noConflict=function(){return Wt._===this&&(Wt._=gt),this},fi.noop=Ru,fi.now=Ja,fi.pad=function(e,t,n){e=Ys(e);var i=(t=Bs(t))?Bn(e):0;if(!t||i>=t)return e;var r=(t-i)/2;return _o(Vt(r),n)+e+_o(zt(r),n)},fi.padEnd=function(e,t,n){e=Ys(e);var i=(t=Bs(t))?Bn(e):0;return t&&i<t?e+_o(t-i,n):e},fi.padStart=function(e,t,n){e=Ys(e);var i=(t=Bs(t))?Bn(e):0;return t&&i<t?_o(t-i,n)+e:e},fi.parseInt=function(e,t,n){return n||null==t?t=0:t&&(t=+t),qn(Ys(e).replace(Re,""),t||0)},fi.random=function(e,t,n){if(n&&"boolean"!=typeof n&&Ko(e,t,n)&&(t=n=r),n===r&&("boolean"==typeof t?(n=t,t=r):"boolean"==typeof e&&(n=e,e=r)),e===r&&t===r?(e=0,t=1):(e=Hs(e),t===r?(t=e,e=0):t=Hs(t)),e>t){var i=e;e=t,t=i}if(n||e%1||t%1){var o=Gn();return Un(e+o*(t-e+jt("1e-"+((o+"").length-1))),t)}return wr(e,t)},fi.reduce=function(e,t,n){var i=ms(e)?hn:Sn,r=arguments.length<3;return i(e,Po(t,4),n,r,ji)},fi.reduceRight=function(e,t,n){var i=ms(e)?fn:Sn,r=arguments.length<3;return i(e,Po(t,4),n,r,Hi)},fi.repeat=function(e,t,n){return t=(n?Ko(e,t,n):t===r)?1:Bs(t),Cr(Ys(e),t)},fi.replace=function(){var e=arguments,t=Ys(e[0]);return e.length<3?t:t.replace(e[1],e[2])},fi.result=function(e,t,n){var i=-1,o=(t=Ur(t,e)).length;for(o||(o=1,e=r);++i<o;){var a=null==e?r:e[ca(t[i])];a===r&&(i=o,a=n),e=Ss(a)?a.call(e):a}return e},fi.round=Gu,fi.runInContext=e,fi.sample=function(e){return(ms(e)?Si:Sr)(e)},fi.size=function(e){if(null==e)return 0;if(ys(e))return As(e)?Bn(e):e.length;var t=zo(e);return t==G||t==ne?e.size:lr(e).length},fi.snakeCase=bu,fi.some=function(e,t,n){var i=ms(e)?pn:Tr;return n&&Ko(e,t,n)&&(t=r),i(e,Po(t,3))},fi.sortedIndex=function(e,t){return Ir(e,t)},fi.sortedIndexBy=function(e,t,n){return Or(e,t,Po(n,2))},fi.sortedIndexOf=function(e,t){var n=null==e?0:e.length;if(n){var i=Ir(e,t);if(i<n&&fs(e[i],t))return i}return-1},fi.sortedLastIndex=function(e,t){return Ir(e,t,!0)},fi.sortedLastIndexBy=function(e,t,n){return Or(e,t,Po(n,2),!0)},fi.sortedLastIndexOf=function(e,t){if(null==e?0:e.length){var n=Ir(e,t,!0)-1;if(fs(e[n],t))return n}return-1},fi.startCase=wu,fi.startsWith=function(e,t,n){return e=Ys(e),n=null==n?0:Ai(Bs(n),0,e.length),t=Pr(t),e.slice(n,n+t.length)==t},fi.subtract=$u,fi.sum=function(e){return e&&e.length?xn(e,Mu):0},fi.sumBy=function(e,t){return e&&e.length?xn(e,Po(t,2)):0},fi.template=function(e,t,n){var i=fi.templateSettings;n&&Ko(e,t,n)&&(t=r),e=Ys(e),t=qs({},t,i,Lo);var o,a,s=qs({},t.imports,i.imports,Lo),u=ru(s),l=Dn(s,u),c=0,d=t.interpolate||$e,h="__p += '",f=nt((t.escape||$e).source+"|"+d.source+"|"+(d===De?ze:$e).source+"|"+(t.evaluate||$e).source+"|$","g"),p="//# sourceURL="+("sourceURL"in t?t.sourceURL:"lodash.templateSources["+ ++Rt+"]")+"\n";e.replace(f,(function(t,n,i,r,s,u){return i||(i=r),h+=e.slice(c,u).replace(Qe,An),n&&(o=!0,h+="' +\n__e("+n+") +\n'"),s&&(a=!0,h+="';\n"+s+";\n__p += '"),i&&(h+="' +\n((__t = ("+i+")) == null ? '' : __t) +\n'"),c=u+t.length,t})),h+="';\n";var g=t.variable;g||(h="with (obj) {\n"+h+"\n}\n"),h=(a?h.replace(ye,""):h).replace(be,"$1").replace(we,"$1;"),h="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var v=xu((function(){return Je(u,p+"return "+h).apply(r,l)}));if(v.source=h,ks(v))throw v;return v},fi.times=function(e,t){if((e=Bs(e))<1||e>O)return[];var n=P,i=Un(e,P);t=Po(t),e-=P;for(var r=Ln(i,t);++n<e;)t(n);return r},fi.toFinite=Hs,fi.toInteger=Bs,fi.toLength=zs,fi.toLower=function(e){return Ys(e).toLowerCase()},fi.toNumber=Ws,fi.toSafeInteger=function(e){return e?Ai(Bs(e),-O,O):0===e?e:0},fi.toString=Ys,fi.toUpper=function(e){return Ys(e).toUpperCase()},fi.trim=function(e,t,n){if((e=Ys(e))&&(n||t===r))return e.replace(Ae,"");if(!e||!(t=Pr(t)))return e;var i=zn(e),o=zn(t);return qr(i,Mn(i,o),Tn(i,o)+1).join("")},fi.trimEnd=function(e,t,n){if((e=Ys(e))&&(n||t===r))return e.replace(Pe,"");if(!e||!(t=Pr(t)))return e;var i=zn(e);return qr(i,0,Tn(i,zn(t))+1).join("")},fi.trimStart=function(e,t,n){if((e=Ys(e))&&(n||t===r))return e.replace(Re,"");if(!e||!(t=Pr(t)))return e;var i=zn(e);return qr(i,Mn(i,zn(t))).join("")},fi.truncate=function(e,t){var n=L,i=E;if(Es(t)){var o="separator"in t?t.separator:o;n="length"in t?Bs(t.length):n,i="omission"in t?Pr(t.omission):i}var a=(e=Ys(e)).length;if(Rn(e)){var s=zn(e);a=s.length}if(n>=a)return e;var u=n-Bn(i);if(u<1)return i;var l=s?qr(s,0,u).join(""):e.slice(0,u);if(o===r)return l+i;if(s&&(u+=l.length-u),Is(o)){if(e.slice(u).search(o)){var c,d=l;for(o.global||(o=nt(o.source,Ys(We.exec(o))+"g")),o.lastIndex=0;c=o.exec(d);)var h=c.index;l=l.slice(0,h===r?u:h)}}else if(e.indexOf(Pr(o),u)!=u){var f=l.lastIndexOf(o);f>-1&&(l=l.slice(0,f))}return l+i},fi.unescape=function(e){return(e=Ys(e))&&Se.test(e)?e.replace(Ce,Wn):e},fi.uniqueId=function(e){var t=++dt;return Ys(e)+t},fi.upperCase=Cu,fi.upperFirst=ku,fi.each=Ya,fi.eachRight=Ua,fi.first=ya,Au(fi,function(){var e={};return Ki(fi,(function(t,n){ct.call(fi.prototype,n)||(e[n]=t)})),e}(),{chain:!1}),fi.VERSION="4.17.11",rn(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){fi[e].placeholder=fi})),rn(["drop","take"],(function(e,t){mi.prototype[e]=function(n){n=n===r?1:Yn(Bs(n),0);var i=this.__filtered__&&!t?new mi(this):this.clone();return i.__filtered__?i.__takeCount__=Un(n,i.__takeCount__):i.__views__.push({size:Un(n,P),type:e+(i.__dir__<0?"Right":"")}),i},mi.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),rn(["filter","map","takeWhile"],(function(e,t){var n=t+1,i=n==M||3==n;mi.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Po(e,3),type:n}),t.__filtered__=t.__filtered__||i,t}})),rn(["head","last"],(function(e,t){var n="take"+(t?"Right":"");mi.prototype[e]=function(){return this[n](1).value()[0]}})),rn(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");mi.prototype[e]=function(){return this.__filtered__?new mi(this):this[n](1)}})),mi.prototype.compact=function(){return this.filter(Mu)},mi.prototype.find=function(e){return this.filter(e).head()},mi.prototype.findLast=function(e){return this.reverse().find(e)},mi.prototype.invokeMap=kr((function(e,t){return"function"==typeof e?new mi(this):this.map((function(n){return ir(n,e,t)}))})),mi.prototype.reject=function(e){return this.filter(us(Po(e)))},mi.prototype.slice=function(e,t){e=Bs(e);var n=this;return n.__filtered__&&(e>0||t<0)?new mi(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==r&&(n=(t=Bs(t))<0?n.dropRight(-t):n.take(t-e)),n)},mi.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},mi.prototype.toArray=function(){return this.take(P)},Ki(mi.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),i=/^(?:head|last)$/.test(t),o=fi[i?"take"+("last"==t?"Right":""):t],a=i||/^find/.test(t);o&&(fi.prototype[t]=function(){var t=this.__wrapped__,s=i?[1]:arguments,u=t instanceof mi,l=s[0],c=u||ms(t),d=function(e){var t=o.apply(fi,dn([e],s));return i&&h?t[0]:t};c&&n&&"function"==typeof l&&1!=l.length&&(u=c=!1);var h=this.__chain__,f=!!this.__actions__.length,p=a&&!h,g=u&&!f;if(!a&&c){t=g?t:new mi(this);var v=e.apply(t,s);return v.__actions__.push({func:Ha,args:[d],thisArg:r}),new vi(v,h)}return p&&g?e.apply(this,s):(v=this.thru(d),p?i?v.value()[0]:v.value():v)})})),rn(["pop","push","shift","sort","splice","unshift"],(function(e){var t=ot[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",i=/^(?:pop|shift)$/.test(e);fi.prototype[e]=function(){var e=arguments;if(i&&!this.__chain__){var r=this.value();return t.apply(ms(r)?r:[],e)}return this[n]((function(n){return t.apply(ms(n)?n:[],e)}))}})),Ki(mi.prototype,(function(e,t){var n=fi[t];if(n){var i=n.name+"";(ri[i]||(ri[i]=[])).push({name:t,func:n})}})),ri[po(r,m).name]=[{name:"wrapper",func:r}],mi.prototype.clone=function(){var e=new mi(this.__wrapped__);return e.__actions__=no(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=no(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=no(this.__views__),e},mi.prototype.reverse=function(){if(this.__filtered__){var e=new mi(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},mi.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=ms(e),i=t<0,r=n?e.length:0,o=function(e,t,n){var i=-1,r=n.length;for(;++i<r;){var o=n[i],a=o.size;switch(o.type){case"drop":e+=a;break;case"dropRight":t-=a;break;case"take":t=Un(t,e+a);break;case"takeRight":e=Yn(e,t-a)}}return{start:e,end:t}}(0,r,this.__views__),a=o.start,s=o.end,u=s-a,l=i?s:a-1,c=this.__iteratees__,d=c.length,h=0,f=Un(u,this.__takeCount__);if(!n||!i&&r==u&&f==u)return Br(e,this.__actions__);var p=[];e:for(;u--&&h<f;){for(var g=-1,v=e[l+=t];++g<d;){var m=c[g],_=m.iteratee,y=m.type,b=_(v);if(y==T)v=b;else if(!b){if(y==M)continue e;break e}}p[h++]=v}return p},fi.prototype.at=Ba,fi.prototype.chain=function(){return ja(this)},fi.prototype.commit=function(){return new vi(this.value(),this.__chain__)},fi.prototype.next=function(){this.__values__===r&&(this.__values__=js(this.value()));var e=this.__index__>=this.__values__.length;return{done:e,value:e?r:this.__values__[this.__index__++]}},fi.prototype.plant=function(e){for(var t,n=this;n instanceof gi;){var i=ha(n);i.__index__=0,i.__values__=r,t?o.__wrapped__=i:t=i;var o=i;n=n.__wrapped__}return o.__wrapped__=e,t},fi.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof mi){var t=e;return this.__actions__.length&&(t=new mi(this)),(t=t.reverse()).__actions__.push({func:Ha,args:[Ea],thisArg:r}),new vi(t,this.__chain__)}return this.thru(Ea)},fi.prototype.toJSON=fi.prototype.valueOf=fi.prototype.value=function(){return Br(this.__wrapped__,this.__actions__)},fi.prototype.first=fi.prototype.head,Lt&&(fi.prototype[Lt]=function(){return this}),fi}();Wt._=Vn,(i=function(){return Vn}.call(t,n,t,e))===r||(e.exports=i)}.call(this)},970:function(e,t,n){var i;e=n.nmd(e),function(){function r(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function o(e,t,n,i){for(var r=-1,o=null==e?0:e.length;++r<o;){var a=e[r];t(i,a,n(a),e)}return i}function a(e,t){for(var n=-1,i=null==e?0:e.length;++n<i&&!1!==t(e[n],n,e););return e}function s(e,t){for(var n=null==e?0:e.length;n--&&!1!==t(e[n],n,e););return e}function u(e,t){for(var n=-1,i=null==e?0:e.length;++n<i;)if(!t(e[n],n,e))return!1;return!0}function l(e,t){for(var n=-1,i=null==e?0:e.length,r=0,o=[];++n<i;){var a=e[n];t(a,n,e)&&(o[r++]=a)}return o}function c(e,t){return!(null==e||!e.length)&&-1<y(e,t,0)}function d(e,t,n){for(var i=-1,r=null==e?0:e.length;++i<r;)if(n(t,e[i]))return!0;return!1}function h(e,t){for(var n=-1,i=null==e?0:e.length,r=Array(i);++n<i;)r[n]=t(e[n],n,e);return r}function f(e,t){for(var n=-1,i=t.length,r=e.length;++n<i;)e[r+n]=t[n];return e}function p(e,t,n,i){var r=-1,o=null==e?0:e.length;for(i&&o&&(n=e[++r]);++r<o;)n=t(n,e[r],r,e);return n}function g(e,t,n,i){var r=null==e?0:e.length;for(i&&r&&(n=e[--r]);r--;)n=t(n,e[r],r,e);return n}function v(e,t){for(var n=-1,i=null==e?0:e.length;++n<i;)if(t(e[n],n,e))return!0;return!1}function m(e,t,n){var i;return n(e,(function(e,n,r){if(t(e,n,r))return i=n,!1})),i}function _(e,t,n,i){var r=e.length;for(n+=i?1:-1;i?n--:++n<r;)if(t(e[n],n,e))return n;return-1}function y(e,t,n){if(t===t)e:{--n;for(var i=e.length;++n<i;)if(e[n]===t){e=n;break e}e=-1}else e=_(e,w,n);return e}function b(e,t,n,i){--n;for(var r=e.length;++n<r;)if(i(e[n],t))return n;return-1}function w(e){return e!==e}function C(e,t){var n=null==e?0:e.length;return n?L(e,t)/n:z}function k(e){return function(t){return null==t?H:t[e]}}function S(e){return function(t){return null==e?H:e[t]}}function x(e,t,n,i,r){return r(e,(function(e,r,o){n=i?(i=!1,e):t(n,e,r,o)})),n}function L(e,t){for(var n,i=-1,r=e.length;++i<r;){var o=t(e[i]);o!==H&&(n=n===H?o:n+o)}return n}function E(e,t){for(var n=-1,i=Array(e);++n<e;)i[n]=t(n);return i}function D(e){return function(t){return e(t)}}function N(e,t){return h(t,(function(t){return e[t]}))}function M(e,t){return e.has(t)}function T(e,t){for(var n=-1,i=e.length;++n<i&&-1<y(t,e[n],0););return n}function I(e,t){for(var n=e.length;n--&&-1<y(t,e[n],0););return n}function O(e){return"\\"+Ae[e]}function A(e){var t=-1,n=Array(e.size);return e.forEach((function(e,i){n[++t]=[i,e]})),n}function R(e,t){return function(n){return e(t(n))}}function P(e,t){for(var n=-1,i=e.length,r=0,o=[];++n<i;){var a=e[n];a!==t&&"__lodash_placeholder__"!==a||(e[n]="__lodash_placeholder__",o[r++]=n)}return o}function Z(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}function F(e){if(Ne.test(e)){for(var t=Ee.lastIndex=0;Ee.test(e);)++t;e=t}else e=Qe(e);return e}function j(e){return Ne.test(e)?e.match(Ee)||[]:e.split("")}var H,B=1/0,z=NaN,W=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],V=/\b__p\+='';/g,Y=/\b(__p\+=)''\+/g,U=/(__e\(.*?\)|\b__t\))\+'';/g,K=/&(?:amp|lt|gt|quot|#39);/g,q=/[&<>"']/g,G=RegExp(K.source),$=RegExp(q.source),Q=/<%-([\s\S]+?)%>/g,X=/<%([\s\S]+?)%>/g,J=/<%=([\s\S]+?)%>/g,ee=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,te=/^\w*$/,ne=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ie=/[\\^$.*+?()[\]{}|]/g,re=RegExp(ie.source),oe=/^\s+|\s+$/g,ae=/^\s+/,se=/\s+$/,ue=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,le=/\{\n\/\* \[wrapped with (.+)\] \*/,ce=/,? & /,de=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,he=/\\(\\)?/g,fe=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,pe=/\w*$/,ge=/^[-+]0x[0-9a-f]+$/i,ve=/^0b[01]+$/i,me=/^\[object .+?Constructor\]$/,_e=/^0o[0-7]+$/i,ye=/^(?:0|[1-9]\d*)$/,be=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,we=/($^)/,Ce=/['\n\r\u2028\u2029\\]/g,ke="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*",Se="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+ke,xe=RegExp("['\u2019]","g"),Le=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),Ee=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])"+ke,"g"),De=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+",Se].join("|"),"g"),Ne=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),Me=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Te="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Ie={};Ie["[object Float32Array]"]=Ie["[object Float64Array]"]=Ie["[object Int8Array]"]=Ie["[object Int16Array]"]=Ie["[object Int32Array]"]=Ie["[object Uint8Array]"]=Ie["[object Uint8ClampedArray]"]=Ie["[object Uint16Array]"]=Ie["[object Uint32Array]"]=!0,Ie["[object Arguments]"]=Ie["[object Array]"]=Ie["[object ArrayBuffer]"]=Ie["[object Boolean]"]=Ie["[object DataView]"]=Ie["[object Date]"]=Ie["[object Error]"]=Ie["[object Function]"]=Ie["[object Map]"]=Ie["[object Number]"]=Ie["[object Object]"]=Ie["[object RegExp]"]=Ie["[object Set]"]=Ie["[object String]"]=Ie["[object WeakMap]"]=!1;var Oe={};Oe["[object Arguments]"]=Oe["[object Array]"]=Oe["[object ArrayBuffer]"]=Oe["[object DataView]"]=Oe["[object Boolean]"]=Oe["[object Date]"]=Oe["[object Float32Array]"]=Oe["[object Float64Array]"]=Oe["[object Int8Array]"]=Oe["[object Int16Array]"]=Oe["[object Int32Array]"]=Oe["[object Map]"]=Oe["[object Number]"]=Oe["[object Object]"]=Oe["[object RegExp]"]=Oe["[object Set]"]=Oe["[object String]"]=Oe["[object Symbol]"]=Oe["[object Uint8Array]"]=Oe["[object Uint8ClampedArray]"]=Oe["[object Uint16Array]"]=Oe["[object Uint32Array]"]=!0,Oe["[object Error]"]=Oe["[object Function]"]=Oe["[object WeakMap]"]=!1;var Ae={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Re=parseFloat,Pe=parseInt,Ze="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,Fe="object"==typeof self&&self&&self.Object===Object&&self,je=Ze||Fe||Function("return this")(),He=t&&!t.nodeType&&t,Be=He&&e&&!e.nodeType&&e,ze=Be&&Be.exports===He,We=ze&&Ze.process,Ve=function(){try{var e=Be&&Be.require&&Be.require("util").types;return e||We&&We.binding&&We.binding("util")}catch(e){}}(),Ye=Ve&&Ve.isArrayBuffer,Ue=Ve&&Ve.isDate,Ke=Ve&&Ve.isMap,qe=Ve&&Ve.isRegExp,Ge=Ve&&Ve.isSet,$e=Ve&&Ve.isTypedArray,Qe=k("length"),Xe=S({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),Je=S({"&":"&","<":"<",">":">",'"':""","'":"'"}),et=S({"&":"&","<":"<",">":">",""":'"',"'":"'"}),tt=function e(t){function n(e){if(Gi(e)&&!Za(e)&&!(e instanceof ke)){if(e instanceof S)return e;if(Zr.call(e,"__wrapped__"))return wi(e)}return new S(e)}function i(){}function S(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=H}function ke(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Se(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}function Ee(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}function Ae(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}function Ze(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new Ae;++t<n;)this.add(e[t])}function Fe(e){this.size=(this.__data__=new Ee(e)).size}function He(e,t){var n,i=Za(e),r=!i&&Pa(e),o=!i&&!r&&ja(e),a=!i&&!r&&!o&&Va(e),s=(r=(i=i||r||o||a)?E(e.length,Tr):[]).length;for(n in e)!t&&!Zr.call(e,n)||i&&("length"==n||o&&("offset"==n||"parent"==n)||a&&("buffer"==n||"byteLength"==n||"byteOffset"==n)||si(n,s))||r.push(n);return r}function Be(e){var t=e.length;return t?e[Vt(0,t-1)]:H}function We(e,t){return mi(wn(e),ut(t,0,e.length))}function Ve(e){return mi(wn(e))}function Qe(e,t,n){(n===H||Bi(e[t],n))&&(n!==H||t in e)||at(e,t,n)}function nt(e,t,n){var i=e[t];Zr.call(e,t)&&Bi(i,n)&&(n!==H||t in e)||at(e,t,n)}function it(e,t){for(var n=e.length;n--;)if(Bi(e[n][0],t))return n;return-1}function rt(e,t,n,i){return Po(e,(function(e,r,o){t(i,e,n(e),o)})),i}function ot(e,t){return e&&Cn(t,lr(t),e)}function at(e,t,n){"__proto__"==t&&to?to(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function st(e,t){for(var n=-1,i=t.length,r=Sr(i),o=null==e;++n<i;)r[n]=o?H:sr(e,t[n]);return r}function ut(e,t,n){return e===e&&(n!==H&&(e=e<=n?e:n),t!==H&&(e=e>=t?e:t)),e}function lt(e,t,n,i,r,o){var s,u=1&t,l=2&t,c=4&t;if(n&&(s=r?n(e,i,r,o):n(e)),s!==H)return s;if(!qi(e))return e;if(i=Za(e)){if(s=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&Zr.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!u)return wn(e,s)}else{var d=Ko(e),h="[object Function]"==d||"[object GeneratorFunction]"==d;if(ja(e))return gn(e,u);if("[object Object]"==d||"[object Arguments]"==d||h&&!r){if(s=l||h?{}:oi(e),!u)return l?function(e,t){return Cn(e,Uo(e),t)}(e,function(e,t){return e&&Cn(t,cr(t),e)}(s,e)):function(e,t){return Cn(e,Yo(e),t)}(e,ot(s,e))}else{if(!Oe[d])return r?e:{};s=function(e,t,n){var i=e.constructor;switch(t){case"[object ArrayBuffer]":return vn(e);case"[object Boolean]":case"[object Date]":return new i(+e);case"[object DataView]":return t=n?vn(e.buffer):e.buffer,new e.constructor(t,e.byteOffset,e.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return mn(e,n);case"[object Map]":case"[object Set]":return new i;case"[object Number]":case"[object String]":return new i(e);case"[object RegExp]":return(t=new e.constructor(e.source,pe.exec(e))).lastIndex=e.lastIndex,t;case"[object Symbol]":return Oo?Nr(Oo.call(e)):{}}}(e,d,u)}}if(o||(o=new Fe),r=o.get(e))return r;if(o.set(e,s),Wa(e))return e.forEach((function(i){s.add(lt(i,t,n,i,e,o))})),s;if(Ba(e))return e.forEach((function(i,r){s.set(r,lt(i,t,n,r,e,o))})),s;l=c?l?Qn:$n:l?cr:lr;var f=i?H:l(e);return a(f||e,(function(i,r){f&&(i=e[r=i]),nt(s,r,lt(i,t,n,r,e,o))})),s}function ct(e,t,n){var i=n.length;if(null==e)return!i;for(e=Nr(e);i--;){var r=n[i],o=t[r],a=e[r];if(a===H&&!(r in e)||!o(a))return!1}return!0}function dt(e,t,n){if("function"!=typeof e)throw new Ir("Expected a function");return $o((function(){e.apply(H,n)}),t)}function ht(e,t,n,i){var r=-1,o=c,a=!0,s=e.length,u=[],l=t.length;if(!s)return u;n&&(t=h(t,D(n))),i?(o=d,a=!1):200<=t.length&&(o=M,a=!1,t=new Ze(t));e:for(;++r<s;){var f=e[r],p=null==n?f:n(f);f=i||0!==f?f:0;if(a&&p===p){for(var g=l;g--;)if(t[g]===p)continue e;u.push(f)}else o(t,p,i)||u.push(f)}return u}function ft(e,t){var n=!0;return Po(e,(function(e,i,r){return n=!!t(e,i,r)})),n}function pt(e,t,n){for(var i=-1,r=e.length;++i<r;){var o=e[i],a=t(o);if(null!=a&&(s===H?a===a&&!Ji(a):n(a,s)))var s=a,u=o}return u}function gt(e,t){var n=[];return Po(e,(function(e,i,r){t(e,i,r)&&n.push(e)})),n}function vt(e,t,n,i,r){var o=-1,a=e.length;for(n||(n=ai),r||(r=[]);++o<a;){var s=e[o];0<t&&n(s)?1<t?vt(s,t-1,n,i,r):f(r,s):i||(r[r.length]=s)}return r}function mt(e,t){return e&&Fo(e,t,lr)}function _t(e,t){return e&&jo(e,t,lr)}function yt(e,t){return l(t,(function(t){return Yi(e[t])}))}function bt(e,t){for(var n=0,i=(t=fn(t,e)).length;null!=e&&n<i;)e=e[_i(t[n++])];return n&&n==i?e:H}function wt(e,t,n){return t=t(e),Za(e)?t:f(t,n(e))}function Ct(e){if(null==e)return e===H?"[object Undefined]":"[object Null]";if(eo&&eo in Nr(e)){var t=Zr.call(e,eo),n=e[eo];try{e[eo]=H;var i=!0}catch(e){}var r=Hr.call(e);i&&(t?e[eo]=n:delete e[eo]),e=r}else e=Hr.call(e);return e}function kt(e,t){return e>t}function St(e,t){return null!=e&&Zr.call(e,t)}function xt(e,t){return null!=e&&t in Nr(e)}function Lt(e,t,n){for(var i=n?d:c,r=e[0].length,o=e.length,a=o,s=Sr(o),u=1/0,l=[];a--;){var f=e[a];a&&t&&(f=h(f,D(t))),u=po(f.length,u),s[a]=!n&&(t||120<=r&&120<=f.length)?new Ze(a&&f):H}f=e[0];var p=-1,g=s[0];e:for(;++p<r&&l.length<u;){var v=f[p],m=t?t(v):v;v=n||0!==v?v:0;if(g?!M(g,m):!i(l,m,n)){for(a=o;--a;){var _=s[a];if(_?!M(_,m):!i(e[a],m,n))continue e}g&&g.push(m),l.push(v)}}return l}function Et(e,t,n){return null==(t=null==(e=2>(t=fn(t,e)).length?e:bt(e,Qt(t,0,-1)))?e:e[_i(Li(t))])?H:r(t,e,n)}function Dt(e){return Gi(e)&&"[object Arguments]"==Ct(e)}function Nt(e,t,n,i,r){if(e===t)return!0;if(null==e||null==t||!Gi(e)&&!Gi(t))return e!==e&&t!==t;e:{var o,a,s=Za(e),u=Za(t),l="[object Object]"==(o="[object Arguments]"==(o=s?"[object Array]":Ko(e))?"[object Object]":o);u="[object Object]"==(a="[object Arguments]"==(a=u?"[object Array]":Ko(t))?"[object Object]":a);if((a=o==a)&&ja(e)){if(!ja(t)){t=!1;break e}s=!0,l=!1}if(a&&!l)r||(r=new Fe),t=s||Va(e)?qn(e,t,n,i,Nt,r):function(e,t,n,i,r,o,a){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)break;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":if(e.byteLength!=t.byteLength||!o(new Ur(e),new Ur(t)))break;return!0;case"[object Boolean]":case"[object Date]":case"[object Number]":return Bi(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var s=A;case"[object Set]":if(s||(s=Z),e.size!=t.size&&!(1&i))break;return(n=a.get(e))?n==t:(i|=2,a.set(e,t),t=qn(s(e),s(t),i,r,o,a),a.delete(e),t);case"[object Symbol]":if(Oo)return Oo.call(e)==Oo.call(t)}return!1}(e,t,o,n,i,Nt,r);else{if(!(1&n)&&(s=l&&Zr.call(e,"__wrapped__"),o=u&&Zr.call(t,"__wrapped__"),s||o)){e=s?e.value():e,t=o?t.value():t,r||(r=new Fe),t=Nt(e,t,n,i,r);break e}if(a)t:if(r||(r=new Fe),s=1&n,o=$n(e),u=o.length,a=$n(t).length,u==a||s){for(l=u;l--;){var c=o[l];if(!(s?c in t:Zr.call(t,c))){t=!1;break t}}if((a=r.get(e))&&r.get(t))t=a==t;else{a=!0,r.set(e,t),r.set(t,e);for(var d=s;++l<u;){var h=e[c=o[l]],f=t[c];if(i)var p=s?i(f,h,c,t,e,r):i(h,f,c,e,t,r);if(p===H?h!==f&&!Nt(h,f,n,i,r):!p){a=!1;break}d||(d="constructor"==c)}a&&!d&&((n=e.constructor)!=(i=t.constructor)&&"constructor"in e&&"constructor"in t&&!("function"==typeof n&&n instanceof n&&"function"==typeof i&&i instanceof i)&&(a=!1)),r.delete(e),r.delete(t),t=a}}else t=!1;else t=!1}}return t}function Mt(e,t,n,i){var r=n.length,o=r,a=!i;if(null==e)return!o;for(e=Nr(e);r--;){var s=n[r];if(a&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++r<o;){var u=(s=n[r])[0],l=e[u],c=s[1];if(a&&s[2]){if(l===H&&!(u in e))return!1}else{if(s=new Fe,i)var d=i(l,c,u,e,t,s);if(d===H?!Nt(c,l,3,i,s):!d)return!1}}return!0}function Tt(e){return!(!qi(e)||jr&&jr in e)&&(Yi(e)?Wr:me).test(yi(e))}function It(e){return"function"==typeof e?e:null==e?mr:"object"==typeof e?Za(e)?Zt(e[0],e[1]):Pt(e):wr(e)}function Ot(e){if(!di(e))return ho(e);var t,n=[];for(t in Nr(e))Zr.call(e,t)&&"constructor"!=t&&n.push(t);return n}function At(e,t){return e<t}function Rt(e,t){var n=-1,i=zi(e)?Sr(e.length):[];return Po(e,(function(e,r,o){i[++n]=t(e,r,o)})),i}function Pt(e){var t=ni(e);return 1==t.length&&t[0][2]?hi(t[0][0],t[0][1]):function(n){return n===e||Mt(n,e,t)}}function Zt(e,t){return li(e)&&t===t&&!qi(t)?hi(_i(e),t):function(n){var i=sr(n,e);return i===H&&i===t?ur(n,e):Nt(t,i,3)}}function Ft(e,t,n,i,r){e!==t&&Fo(t,(function(o,a){if(qi(o)){r||(r=new Fe);var s=r,u=pi(e,a),l=pi(t,a);if(!(p=s.get(l))){var c=(p=i?i(u,l,a+"",e,t,s):H)===H;if(c){var d=Za(l),h=!d&&ja(l),f=!d&&!h&&Va(l),p=l;d||h||f?Za(u)?p=u:Wi(u)?p=wn(u):h?(c=!1,p=gn(l,!0)):f?(c=!1,p=mn(l,!0)):p=[]:Qi(l)||Pa(l)?(p=u,Pa(u)?p=or(u):qi(u)&&!Yi(u)||(p=oi(l))):c=!1}c&&(s.set(l,p),Ft(p,l,n,i,s),s.delete(l))}Qe(e,a,p)}else(s=i?i(pi(e,a),o,a+"",e,t,r):H)===H&&(s=o),Qe(e,a,s)}),cr)}function jt(e,t){var n=e.length;if(n)return si(t+=0>t?n:0,n)?e[t]:H}function Ht(e,t,n){var i=-1;return t=h(t.length?t:[mr],D(ei())),e=Rt(e,(function(e,n,r){return{a:h(t,(function(t){return t(e)})),b:++i,c:e}})),function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].c;return e}(e,(function(e,t){var i;e:{i=-1;for(var r=e.a,o=t.a,a=r.length,s=n.length;++i<a;){var u=_n(r[i],o[i]);if(u){if(i>=s){i=u;break e}i=u*("desc"==n[i]?-1:1);break e}}i=e.b-t.b}return i}))}function Bt(e,t,n){for(var i=-1,r=t.length,o={};++i<r;){var a=t[i],s=bt(e,a);n(s,a)&&Gt(o,fn(a,e),s)}return o}function zt(e,t,n,i){var r=i?b:y,o=-1,a=t.length,s=e;for(e===t&&(t=wn(t)),n&&(s=h(e,D(n)));++o<a;){var u=0,l=t[o];for(l=n?n(l):l;-1<(u=r(s,l,u,i));)s!==e&&Qr.call(s,u,1),Qr.call(e,u,1)}return e}function Wt(e,t){for(var n=e?t.length:0,i=n-1;n--;){var r=t[n];if(n==i||r!==o){var o=r;si(r)?Qr.call(e,r,1):an(e,r)}}return e}function Vt(e,t){return e+ao(mo()*(t-e+1))}function Yt(e,t){var n="";if(!e||1>t||9007199254740991<t)return n;do{t%2&&(n+=e),(t=ao(t/2))&&(e+=e)}while(t);return n}function Ut(e,t){return Qo(fi(e,t,mr),e+"")}function Kt(e){return Be(hr(e))}function qt(e,t){var n=hr(e);return mi(n,ut(t,0,n.length))}function Gt(e,t,n,i){if(!qi(e))return e;for(var r=-1,o=(t=fn(t,e)).length,a=o-1,s=e;null!=s&&++r<o;){var u=_i(t[r]),l=n;if(r!=a){var c=s[u];(l=i?i(c,u,s):H)===H&&(l=qi(c)?c:si(t[r+1])?[]:{})}nt(s,u,l),s=s[u]}return e}function $t(e){return mi(hr(e))}function Qt(e,t,n){var i=-1,r=e.length;for(0>t&&(t=-t>r?0:r+t),0>(n=n>r?r:n)&&(n+=r),r=t>n?0:n-t>>>0,t>>>=0,n=Sr(r);++i<r;)n[i]=e[i+t];return n}function Xt(e,t){var n;return Po(e,(function(e,i,r){return!(n=t(e,i,r))})),!!n}function Jt(e,t,n){var i=0,r=null==e?i:e.length;if("number"==typeof t&&t===t&&2147483647>=r){for(;i<r;){var o=i+r>>>1,a=e[o];null!==a&&!Ji(a)&&(n?a<=t:a<t)?i=o+1:r=o}return r}return en(e,t,mr,n)}function en(e,t,n,i){t=n(t);for(var r=0,o=null==e?0:e.length,a=t!==t,s=null===t,u=Ji(t),l=t===H;r<o;){var c=ao((r+o)/2),d=n(e[c]),h=d!==H,f=null===d,p=d===d,g=Ji(d);(a?i||p:l?p&&(i||h):s?p&&h&&(i||!f):u?p&&h&&!f&&(i||!g):!f&&!g&&(i?d<=t:d<t))?r=c+1:o=c}return po(o,4294967294)}function tn(e,t){for(var n=-1,i=e.length,r=0,o=[];++n<i;){var a=e[n],s=t?t(a):a;if(!n||!Bi(s,u)){var u=s;o[r++]=0===a?0:a}}return o}function nn(e){return"number"==typeof e?e:Ji(e)?z:+e}function rn(e){if("string"==typeof e)return e;if(Za(e))return h(e,rn)+"";if(Ji(e))return Ao?Ao.call(e):"";var t=e+"";return"0"==t&&1/e==-B?"-0":t}function on(e,t,n){var i=-1,r=c,o=e.length,a=!0,s=[],u=s;if(n)a=!1,r=d;else if(200<=o){if(r=t?null:Wo(e))return Z(r);a=!1,r=M,u=new Ze}else u=t?[]:s;e:for(;++i<o;){var l=e[i],h=t?t(l):l;l=n||0!==l?l:0;if(a&&h===h){for(var f=u.length;f--;)if(u[f]===h)continue e;t&&u.push(h),s.push(l)}else r(u,h,n)||(u!==s&&u.push(h),s.push(l))}return s}function an(e,t){return null==(e=2>(t=fn(t,e)).length?e:bt(e,Qt(t,0,-1)))||delete e[_i(Li(t))]}function sn(e,t,n,i){for(var r=e.length,o=i?r:-1;(i?o--:++o<r)&&t(e[o],o,e););return n?Qt(e,i?0:o,i?o+1:r):Qt(e,i?o+1:0,i?r:o)}function un(e,t){var n=e;return n instanceof ke&&(n=n.value()),p(t,(function(e,t){return t.func.apply(t.thisArg,f([e],t.args))}),n)}function ln(e,t,n){var i=e.length;if(2>i)return i?on(e[0]):[];for(var r=-1,o=Sr(i);++r<i;)for(var a=e[r],s=-1;++s<i;)s!=r&&(o[r]=ht(o[r]||a,e[s],t,n));return on(vt(o,1),t,n)}function cn(e,t,n){for(var i=-1,r=e.length,o=t.length,a={};++i<r;)n(a,e[i],i<o?t[i]:H);return a}function dn(e){return Wi(e)?e:[]}function hn(e){return"function"==typeof e?e:mr}function fn(e,t){return Za(e)?e:li(e,t)?[e]:Xo(ar(e))}function pn(e,t,n){var i=e.length;return n=n===H?i:n,!t&&n>=i?e:Qt(e,t,n)}function gn(e,t){if(t)return e.slice();var n=e.length;n=Kr?Kr(n):new e.constructor(n);return e.copy(n),n}function vn(e){var t=new e.constructor(e.byteLength);return new Ur(t).set(new Ur(e)),t}function mn(e,t){return new e.constructor(t?vn(e.buffer):e.buffer,e.byteOffset,e.length)}function _n(e,t){if(e!==t){var n=e!==H,i=null===e,r=e===e,o=Ji(e),a=t!==H,s=null===t,u=t===t,l=Ji(t);if(!s&&!l&&!o&&e>t||o&&a&&u&&!s&&!l||i&&a&&u||!n&&u||!r)return 1;if(!i&&!o&&!l&&e<t||l&&n&&r&&!i&&!o||s&&n&&r||!a&&r||!u)return-1}return 0}function yn(e,t,n,i){var r=-1,o=e.length,a=n.length,s=-1,u=t.length,l=fo(o-a,0),c=Sr(u+l);for(i=!i;++s<u;)c[s]=t[s];for(;++r<a;)(i||r<o)&&(c[n[r]]=e[r]);for(;l--;)c[s++]=e[r++];return c}function bn(e,t,n,i){var r=-1,o=e.length,a=-1,s=n.length,u=-1,l=t.length,c=fo(o-s,0),d=Sr(c+l);for(i=!i;++r<c;)d[r]=e[r];for(c=r;++u<l;)d[c+u]=t[u];for(;++a<s;)(i||r<o)&&(d[c+n[a]]=e[r++]);return d}function wn(e,t){var n=-1,i=e.length;for(t||(t=Sr(i));++n<i;)t[n]=e[n];return t}function Cn(e,t,n,i){var r=!n;n||(n={});for(var o=-1,a=t.length;++o<a;){var s=t[o],u=i?i(n[s],e[s],s,n,e):H;u===H&&(u=e[s]),r?at(n,s,u):nt(n,s,u)}return n}function kn(e,t){return function(n,i){var r=Za(n)?o:rt,a=t?t():{};return r(n,e,ei(i,2),a)}}function Sn(e){return Ut((function(t,n){var i=-1,r=n.length,o=1<r?n[r-1]:H,a=2<r?n[2]:H;o=3<e.length&&"function"==typeof o?(r--,o):H;for(a&&ui(n[0],n[1],a)&&(o=3>r?H:o,r=1),t=Nr(t);++i<r;)(a=n[i])&&e(t,a,i,o);return t}))}function xn(e,t){return function(n,i){if(null==n)return n;if(!zi(n))return e(n,i);for(var r=n.length,o=t?r:-1,a=Nr(n);(t?o--:++o<r)&&!1!==i(a[o],o,a););return n}}function Ln(e){return function(t,n,i){for(var r=-1,o=Nr(t),a=(i=i(t)).length;a--;){var s=i[e?a:++r];if(!1===n(o[s],s,o))break}return t}}function En(e){return function(t){t=ar(t);var n=Ne.test(t)?j(t):H,i=n?n[0]:t.charAt(0);return t=n?pn(n,1).join(""):t.slice(1),i[e]()+t}}function Dn(e){return function(t){return p(gr(pr(t).replace(xe,"")),e,"")}}function Nn(e){return function(){switch((t=arguments).length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var t,n=Ro(e.prototype);return qi(t=e.apply(n,t))?t:n}}function Mn(e,t,n){var i=Nn(e);return function o(){for(var a=arguments.length,s=Sr(a),u=a,l=Jn(o);u--;)s[u]=arguments[u];return(a-=(u=3>a&&s[0]!==l&&s[a-1]!==l?[]:P(s,l)).length)<n?Bn(e,t,On,o.placeholder,H,s,u,H,H,n-a):r(this&&this!==je&&this instanceof o?i:e,this,s)}}function Tn(e){return function(t,n,i){var r=Nr(t);if(!zi(t)){var o=ei(n,3);t=lr(t),n=function(e){return o(r[e],e,r)}}return-1<(n=e(t,n,i))?r[o?t[n]:n]:H}}function In(e){return Gn((function(t){var n=t.length,i=n,r=S.prototype.thru;for(e&&t.reverse();i--;){if("function"!=typeof(a=t[i]))throw new Ir("Expected a function");if(r&&!o&&"wrapper"==Xn(a))var o=new S([],!0)}for(i=o?i:n;++i<n;){var a,s="wrapper"==(r=Xn(a=t[i]))?Vo(a):H;o=s&&ci(s[0])&&424==s[1]&&!s[4].length&&1==s[9]?o[Xn(s[0])].apply(o,s[3]):1==a.length&&ci(a)?o[r]():o.thru(a)}return function(){var e=(r=arguments)[0];if(o&&1==r.length&&Za(e))return o.plant(e).value();for(var i=0,r=n?t[i].apply(this,r):e;++i<n;)r=t[i].call(this,r);return r}}))}function On(e,t,n,i,r,o,a,s,u,l){var c=128&t,d=1&t,h=2&t,f=24&t,p=512&t,g=h?H:Nn(e);return function v(){for(var m=arguments.length,_=Sr(m),y=m;y--;)_[y]=arguments[y];if(f){var b,w=Jn(v);y=_.length;for(b=0;y--;)_[y]===w&&++b}if(i&&(_=yn(_,i,r,f)),o&&(_=bn(_,o,a,f)),m-=b,f&&m<l)return w=P(_,w),Bn(e,t,On,v.placeholder,n,_,w,s,u,l-m);if(w=d?n:this,y=h?w[e]:e,m=_.length,s){b=_.length;for(var C=po(s.length,b),k=wn(_);C--;){var S=s[C];_[C]=si(S,b)?k[S]:H}}else p&&1<m&&_.reverse();return c&&u<m&&(_.length=u),this&&this!==je&&this instanceof v&&(y=g||Nn(y)),y.apply(w,_)}}function An(e,t){return function(n,i){return function(e,t,n,i){return mt(e,(function(e,r,o){t(i,n(e),r,o)})),i}(n,e,t(i),{})}}function Rn(e,t){return function(n,i){var r;if(n===H&&i===H)return t;if(n!==H&&(r=n),i!==H){if(r===H)return i;"string"==typeof n||"string"==typeof i?(n=rn(n),i=rn(i)):(n=nn(n),i=nn(i)),r=e(n,i)}return r}}function Pn(e){return Gn((function(t){return t=h(t,D(ei())),Ut((function(n){var i=this;return e(t,(function(e){return r(e,i,n)}))}))}))}function Zn(e,t){var n=(t=t===H?" ":rn(t)).length;return 2>n?n?Yt(t,e):t:(n=Yt(t,oo(e/F(t))),Ne.test(t)?pn(j(n),0,e).join(""):n.slice(0,e))}function Fn(e,t,n,i){var o=1&t,a=Nn(e);return function t(){for(var s=-1,u=arguments.length,l=-1,c=i.length,d=Sr(c+u),h=this&&this!==je&&this instanceof t?a:e;++l<c;)d[l]=i[l];for(;u--;)d[l++]=arguments[++s];return r(h,o?n:this,d)}}function jn(e){return function(t,n,i){i&&"number"!=typeof i&&ui(t,n,i)&&(n=i=H),t=tr(t),n===H?(n=t,t=0):n=tr(n),i=i===H?t<n?1:-1:tr(i);var r=-1;n=fo(oo((n-t)/(i||1)),0);for(var o=Sr(n);n--;)o[e?n:++r]=t,t+=i;return o}}function Hn(e){return function(t,n){return"string"==typeof t&&"string"==typeof n||(t=rr(t),n=rr(n)),e(t,n)}}function Bn(e,t,n,i,r,o,a,s,u,l){var c=8&t;return 4&(t=(t|(c?32:64))&~(c?64:32))||(t&=-4),r=[e,t,r,c?o:H,c?a:H,o=c?H:o,a=c?H:a,s,u,l],n=n.apply(H,r),ci(e)&&Go(n,r),n.placeholder=i,gi(n,e,t)}function zn(e){var t=Dr[e];return function(e,n){if(e=rr(e),n=null==n?0:po(nr(n),292)){var i=(ar(e)+"e").split("e");return+((i=(ar(i=t(i[0]+"e"+(+i[1]+n)))+"e").split("e"))[0]+"e"+(+i[1]-n))}return t(e)}}function Wn(e){return function(t){var n=Ko(t);return"[object Map]"==n?A(t):"[object Set]"==n?function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=[e,e]})),n}(t):function(e,t){return h(t,(function(t){return[t,e[t]]}))}(t,e(t))}}function Vn(e,t,n,i,r,o,a,s){var u=2&t;if(!u&&"function"!=typeof e)throw new Ir("Expected a function");var l=i?i.length:0;if(l||(t&=-97,i=r=H),a=a===H?a:fo(nr(a),0),s=s===H?s:nr(s),l-=r?r.length:0,64&t){var c=i,d=r;i=r=H}var h=u?H:Vo(e);return o=[e,t,n,i,r,c,d,o,a,s],h&&(t=(n=o[1])|(e=h[1]),i=128==e&&8==n||128==e&&256==n&&o[7].length<=h[8]||384==e&&h[7].length<=h[8]&&8==n,131>t||i)&&(1&e&&(o[2]=h[2],t|=1&n?0:4),(n=h[3])&&(i=o[3],o[3]=i?yn(i,n,h[4]):n,o[4]=i?P(o[3],"__lodash_placeholder__"):h[4]),(n=h[5])&&(i=o[5],o[5]=i?bn(i,n,h[6]):n,o[6]=i?P(o[5],"__lodash_placeholder__"):h[6]),(n=h[7])&&(o[7]=n),128&e&&(o[8]=null==o[8]?h[8]:po(o[8],h[8])),null==o[9]&&(o[9]=h[9]),o[0]=h[0],o[1]=t),e=o[0],t=o[1],n=o[2],i=o[3],r=o[4],!(s=o[9]=o[9]===H?u?0:e.length:fo(o[9]-l,0))&&24&t&&(t&=-25),u=t&&1!=t?8==t||16==t?Mn(e,t,s):32!=t&&33!=t||r.length?On.apply(H,o):Fn(e,t,n,i):function(e,t,n){var i=1&t,r=Nn(e);return function t(){return(this&&this!==je&&this instanceof t?r:e).apply(i?n:this,arguments)}}(e,t,n),gi((h?Ho:Go)(u,o),e,t)}function Yn(e,t,n,i){return e===H||Bi(e,Ar[n])&&!Zr.call(i,n)?t:e}function Un(e,t,n,i,r,o){return qi(e)&&qi(t)&&(o.set(t,e),Ft(e,t,H,Un,o),o.delete(t)),e}function Kn(e){return Qi(e)?H:e}function qn(e,t,n,i,r,o){var a=1&n,s=e.length;if(s!=(u=t.length)&&!(a&&u>s))return!1;if((u=o.get(e))&&o.get(t))return u==t;var u=-1,l=!0,c=2&n?new Ze:H;for(o.set(e,t),o.set(t,e);++u<s;){var d=e[u],h=t[u];if(i)var f=a?i(h,d,u,t,e,o):i(d,h,u,e,t,o);if(f!==H){if(f)continue;l=!1;break}if(c){if(!v(t,(function(e,t){if(!M(c,t)&&(d===e||r(d,e,n,i,o)))return c.push(t)}))){l=!1;break}}else if(d!==h&&!r(d,h,n,i,o)){l=!1;break}}return o.delete(e),o.delete(t),l}function Gn(e){return Qo(fi(e,H,Si),e+"")}function $n(e){return wt(e,lr,Yo)}function Qn(e){return wt(e,cr,Uo)}function Xn(e){for(var t=e.name+"",n=Lo[t],i=Zr.call(Lo,t)?n.length:0;i--;){var r=n[i],o=r.func;if(null==o||o==e)return r.name}return t}function Jn(e){return(Zr.call(n,"placeholder")?n:e).placeholder}function ei(){var e=(e=n.iteratee||_r)===_r?It:e;return arguments.length?e(arguments[0],arguments[1]):e}function ti(e,t){var n=e.__data__,i=typeof t;return("string"==i||"number"==i||"symbol"==i||"boolean"==i?"__proto__"!==t:null===t)?n["string"==typeof t?"string":"hash"]:n.map}function ni(e){for(var t=lr(e),n=t.length;n--;){var i=t[n],r=e[i];t[n]=[i,r,r===r&&!qi(r)]}return t}function ii(e,t){var n=null==e?H:e[t];return Tt(n)?n:H}function ri(e,t,n){for(var i=-1,r=(t=fn(t,e)).length,o=!1;++i<r;){var a=_i(t[i]);if(!(o=null!=e&&n(e,a)))break;e=e[a]}return o||++i!=r?o:!!(r=null==e?0:e.length)&&Ki(r)&&si(a,r)&&(Za(e)||Pa(e))}function oi(e){return"function"!=typeof e.constructor||di(e)?{}:Ro(qr(e))}function ai(e){return Za(e)||Pa(e)||!!(Xr&&e&&e[Xr])}function si(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&ye.test(e))&&-1<e&&0==e%1&&e<t}function ui(e,t,n){if(!qi(n))return!1;var i=typeof t;return!!("number"==i?zi(n)&&si(t,n.length):"string"==i&&t in n)&&Bi(n[t],e)}function li(e,t){if(Za(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!Ji(e))||te.test(e)||!ee.test(e)||null!=t&&e in Nr(t)}function ci(e){var t=Xn(e),i=n[t];return"function"==typeof i&&t in ke.prototype&&(e===i||!!(t=Vo(i))&&e===t[0])}function di(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Ar)}function hi(e,t){return function(n){return null!=n&&n[e]===t&&(t!==H||e in Nr(n))}}function fi(e,t,n){return t=fo(t===H?e.length-1:t,0),function(){for(var i=arguments,o=-1,a=fo(i.length-t,0),s=Sr(a);++o<a;)s[o]=i[t+o];for(o=-1,a=Sr(t+1);++o<t;)a[o]=i[o];return a[t]=n(s),r(e,this,a)}}function pi(e,t){if("__proto__"!=t)return e[t]}function gi(e,t,n){var i=t+"";t=Qo;var r,o=bi;return n=o(r=(r=i.match(le))?r[1].split(ce):[],n),(o=n.length)&&(n[r=o-1]=(1<o?"& ":"")+n[r],n=n.join(2<o?", ":" "),i=i.replace(ue,"{\n/* [wrapped with "+n+"] */\n")),t(e,i)}function vi(e){var t=0,n=0;return function(){var i=go(),r=16-(i-n);if(n=i,0<r){if(800<=++t)return arguments[0]}else t=0;return e.apply(H,arguments)}}function mi(e,t){var n=-1,i=(r=e.length)-1;for(t=t===H?r:t;++n<t;){var r,o=e[r=Vt(n,i)];e[r]=e[n],e[n]=o}return e.length=t,e}function _i(e){if("string"==typeof e||Ji(e))return e;var t=e+"";return"0"==t&&1/e==-B?"-0":t}function yi(e){if(null!=e){try{return Pr.call(e)}catch(e){}return e+""}return""}function bi(e,t){return a(W,(function(n){var i="_."+n[0];t&n[1]&&!c(e,i)&&e.push(i)})),e.sort()}function wi(e){if(e instanceof ke)return e.clone();var t=new S(e.__wrapped__,e.__chain__);return t.__actions__=wn(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}function Ci(e,t,n){var i=null==e?0:e.length;return i?(0>(n=null==n?0:nr(n))&&(n=fo(i+n,0)),_(e,ei(t,3),n)):-1}function ki(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var r=i-1;return n!==H&&(r=nr(n),r=0>n?fo(i+r,0):po(r,i-1)),_(e,ei(t,3),r,!0)}function Si(e){return null!=e&&e.length?vt(e,1):[]}function xi(e){return e&&e.length?e[0]:H}function Li(e){var t=null==e?0:e.length;return t?e[t-1]:H}function Ei(e,t){return e&&e.length&&t&&t.length?zt(e,t):e}function Di(e){return null==e?e:_o.call(e)}function Ni(e){if(!e||!e.length)return[];var t=0;return e=l(e,(function(e){if(Wi(e))return t=fo(e.length,t),!0})),E(t,(function(t){return h(e,k(t))}))}function Mi(e,t){if(!e||!e.length)return[];var n=Ni(e);return null==t?n:h(n,(function(e){return r(t,H,e)}))}function Ti(e){return(e=n(e)).__chain__=!0,e}function Ii(e,t){return t(e)}function Oi(e,t){return(Za(e)?a:Po)(e,ei(t,3))}function Ai(e,t){return(Za(e)?s:Zo)(e,ei(t,3))}function Ri(e,t){return(Za(e)?h:Rt)(e,ei(t,3))}function Pi(e,t,n){return t=n?H:t,t=e&&null==t?e.length:t,Vn(e,128,H,H,H,H,t)}function Zi(e,t){var n;if("function"!=typeof t)throw new Ir("Expected a function");return e=nr(e),function(){return 0<--e&&(n=t.apply(this,arguments)),1>=e&&(t=H),n}}function Fi(e,t,n){function i(t){var n=u,i=l;return u=l=H,p=t,d=e.apply(i,n)}function r(e){var n=e-f;return e-=p,f===H||n>=t||0>n||v&&e>=c}function o(){var e=xa();if(r(e))return a(e);var n,i=$o;n=e-p,e=t-(e-f),n=v?po(e,c-n):e,h=i(o,n)}function a(e){return h=H,m&&u?i(e):(u=l=H,d)}function s(){var e=xa(),n=r(e);if(u=arguments,l=this,f=e,n){if(h===H)return p=e=f,h=$o(o,t),g?i(e):d;if(v)return h=$o(o,t),i(f)}return h===H&&(h=$o(o,t)),d}var u,l,c,d,h,f,p=0,g=!1,v=!1,m=!0;if("function"!=typeof e)throw new Ir("Expected a function");return t=rr(t)||0,qi(n)&&(g=!!n.leading,c=(v="maxWait"in n)?fo(rr(n.maxWait)||0,t):c,m="trailing"in n?!!n.trailing:m),s.cancel=function(){h!==H&&zo(h),p=0,u=f=l=h=H},s.flush=function(){return h===H?d:a(xa())},s}function ji(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new Ir("Expected a function");var n=function n(){var i=arguments,r=t?t.apply(this,i):i[0],o=n.cache;return o.has(r)?o.get(r):(i=e.apply(this,i),n.cache=o.set(r,i)||o,i)};return n.cache=new(ji.Cache||Ae),n}function Hi(e){if("function"!=typeof e)throw new Ir("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}function Bi(e,t){return e===t||e!==e&&t!==t}function zi(e){return null!=e&&Ki(e.length)&&!Yi(e)}function Wi(e){return Gi(e)&&zi(e)}function Vi(e){if(!Gi(e))return!1;var t=Ct(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Qi(e)}function Yi(e){return!!qi(e)&&("[object Function]"==(e=Ct(e))||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e)}function Ui(e){return"number"==typeof e&&e==nr(e)}function Ki(e){return"number"==typeof e&&-1<e&&0==e%1&&9007199254740991>=e}function qi(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Gi(e){return null!=e&&"object"==typeof e}function $i(e){return"number"==typeof e||Gi(e)&&"[object Number]"==Ct(e)}function Qi(e){return!(!Gi(e)||"[object Object]"!=Ct(e))&&(null===(e=qr(e))||"function"==typeof(e=Zr.call(e,"constructor")&&e.constructor)&&e instanceof e&&Pr.call(e)==Br)}function Xi(e){return"string"==typeof e||!Za(e)&&Gi(e)&&"[object String]"==Ct(e)}function Ji(e){return"symbol"==typeof e||Gi(e)&&"[object Symbol]"==Ct(e)}function er(e){if(!e)return[];if(zi(e))return Xi(e)?j(e):wn(e);if(Jr&&e[Jr]){e=e[Jr]();for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}return("[object Map]"==(t=Ko(e))?A:"[object Set]"==t?Z:hr)(e)}function tr(e){return e?(e=rr(e))===B||e===-B?17976931348623157e292*(0>e?-1:1):e===e?e:0:0===e?e:0}function nr(e){var t=(e=tr(e))%1;return e===e?t?e-t:e:0}function ir(e){return e?ut(nr(e),0,4294967295):0}function rr(e){if("number"==typeof e)return e;if(Ji(e))return z;if(qi(e)&&(e=qi(e="function"==typeof e.valueOf?e.valueOf():e)?e+"":e),"string"!=typeof e)return 0===e?e:+e;e=e.replace(oe,"");var t=ve.test(e);return t||_e.test(e)?Pe(e.slice(2),t?2:8):ge.test(e)?z:+e}function or(e){return Cn(e,cr(e))}function ar(e){return null==e?"":rn(e)}function sr(e,t,n){return(e=null==e?H:bt(e,t))===H?n:e}function ur(e,t){return null!=e&&ri(e,t,xt)}function lr(e){return zi(e)?He(e):Ot(e)}function cr(e){if(zi(e))e=He(e,!0);else if(qi(e)){var t,n=di(e),i=[];for(t in e)("constructor"!=t||!n&&Zr.call(e,t))&&i.push(t);e=i}else{if(t=[],null!=e)for(n in Nr(e))t.push(n);e=t}return e}function dr(e,t){if(null==e)return{};var n=h(Qn(e),(function(e){return[e]}));return t=ei(t),Bt(e,n,(function(e,n){return t(e,n[0])}))}function hr(e){return null==e?[]:N(e,lr(e))}function fr(e){return vs(ar(e).toLowerCase())}function pr(e){return(e=ar(e))&&e.replace(be,Xe).replace(Le,"")}function gr(e,t,n){return e=ar(e),(t=n?H:t)===H?Me.test(e)?e.match(De)||[]:e.match(de)||[]:e.match(t)||[]}function vr(e){return function(){return e}}function mr(e){return e}function _r(e){return It("function"==typeof e?e:lt(e,1))}function yr(e,t,n){var i=lr(t),r=yt(t,i);null!=n||qi(t)&&(r.length||!i.length)||(n=t,t=e,e=this,r=yt(t,lr(t)));var o=!(qi(n)&&"chain"in n&&!n.chain),s=Yi(e);return a(r,(function(n){var i=t[n];e[n]=i,s&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__);return(n.__actions__=wn(this.__actions__)).push({func:i,args:arguments,thisArg:e}),n.__chain__=t,n}return i.apply(e,f([this.value()],arguments))})})),e}function br(){}function wr(e){return li(e)?k(_i(e)):function(e){return function(t){return bt(t,e)}}(e)}function Cr(){return[]}function kr(){return!1}var Sr=(t=null==t?je:tt.defaults(je.Object(),t,tt.pick(je,Te))).Array,xr=t.Date,Lr=t.Error,Er=t.Function,Dr=t.Math,Nr=t.Object,Mr=t.RegExp,Tr=t.String,Ir=t.TypeError,Or=Sr.prototype,Ar=Nr.prototype,Rr=t["__core-js_shared__"],Pr=Er.prototype.toString,Zr=Ar.hasOwnProperty,Fr=0,jr=function(){var e=/[^.]+$/.exec(Rr&&Rr.keys&&Rr.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),Hr=Ar.toString,Br=Pr.call(Nr),zr=je._,Wr=Mr("^"+Pr.call(Zr).replace(ie,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Vr=ze?t.Buffer:H,Yr=t.Symbol,Ur=t.Uint8Array,Kr=Vr?Vr.allocUnsafe:H,qr=R(Nr.getPrototypeOf,Nr),Gr=Nr.create,$r=Ar.propertyIsEnumerable,Qr=Or.splice,Xr=Yr?Yr.isConcatSpreadable:H,Jr=Yr?Yr.iterator:H,eo=Yr?Yr.toStringTag:H,to=function(){try{var e=ii(Nr,"defineProperty");return e({},"",{}),e}catch(e){}}(),no=t.clearTimeout!==je.clearTimeout&&t.clearTimeout,io=xr&&xr.now!==je.Date.now&&xr.now,ro=t.setTimeout!==je.setTimeout&&t.setTimeout,oo=Dr.ceil,ao=Dr.floor,so=Nr.getOwnPropertySymbols,uo=Vr?Vr.isBuffer:H,lo=t.isFinite,co=Or.join,ho=R(Nr.keys,Nr),fo=Dr.max,po=Dr.min,go=xr.now,vo=t.parseInt,mo=Dr.random,_o=Or.reverse,yo=ii(t,"DataView"),bo=ii(t,"Map"),wo=ii(t,"Promise"),Co=ii(t,"Set"),ko=ii(t,"WeakMap"),So=ii(Nr,"create"),xo=ko&&new ko,Lo={},Eo=yi(yo),Do=yi(bo),No=yi(wo),Mo=yi(Co),To=yi(ko),Io=Yr?Yr.prototype:H,Oo=Io?Io.valueOf:H,Ao=Io?Io.toString:H,Ro=function(){function e(){}return function(t){return qi(t)?Gr?Gr(t):(e.prototype=t,t=new e,e.prototype=H,t):{}}}();n.templateSettings={escape:Q,evaluate:X,interpolate:J,variable:"",imports:{_:n}},n.prototype=i.prototype,n.prototype.constructor=n,S.prototype=Ro(i.prototype),S.prototype.constructor=S,ke.prototype=Ro(i.prototype),ke.prototype.constructor=ke,Se.prototype.clear=function(){this.__data__=So?So(null):{},this.size=0},Se.prototype.delete=function(e){return e=this.has(e)&&delete this.__data__[e],this.size-=e?1:0,e},Se.prototype.get=function(e){var t=this.__data__;return So?"__lodash_hash_undefined__"===(e=t[e])?H:e:Zr.call(t,e)?t[e]:H},Se.prototype.has=function(e){var t=this.__data__;return So?t[e]!==H:Zr.call(t,e)},Se.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=So&&t===H?"__lodash_hash_undefined__":t,this},Ee.prototype.clear=function(){this.__data__=[],this.size=0},Ee.prototype.delete=function(e){var t=this.__data__;return!(0>(e=it(t,e)))&&(e==t.length-1?t.pop():Qr.call(t,e,1),--this.size,!0)},Ee.prototype.get=function(e){var t=this.__data__;return 0>(e=it(t,e))?H:t[e][1]},Ee.prototype.has=function(e){return-1<it(this.__data__,e)},Ee.prototype.set=function(e,t){var n=this.__data__,i=it(n,e);return 0>i?(++this.size,n.push([e,t])):n[i][1]=t,this},Ae.prototype.clear=function(){this.size=0,this.__data__={hash:new Se,map:new(bo||Ee),string:new Se}},Ae.prototype.delete=function(e){return e=ti(this,e).delete(e),this.size-=e?1:0,e},Ae.prototype.get=function(e){return ti(this,e).get(e)},Ae.prototype.has=function(e){return ti(this,e).has(e)},Ae.prototype.set=function(e,t){var n=ti(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this},Ze.prototype.add=Ze.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Ze.prototype.has=function(e){return this.__data__.has(e)},Fe.prototype.clear=function(){this.__data__=new Ee,this.size=0},Fe.prototype.delete=function(e){var t=this.__data__;return e=t.delete(e),this.size=t.size,e},Fe.prototype.get=function(e){return this.__data__.get(e)},Fe.prototype.has=function(e){return this.__data__.has(e)},Fe.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Ee){var i=n.__data__;if(!bo||199>i.length)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new Ae(i)}return n.set(e,t),this.size=n.size,this};var Po=xn(mt),Zo=xn(_t,!0),Fo=Ln(),jo=Ln(!0),Ho=xo?function(e,t){return xo.set(e,t),e}:mr,Bo=to?function(e,t){return to(e,"toString",{configurable:!0,enumerable:!1,value:vr(t),writable:!0})}:mr,zo=no||function(e){return je.clearTimeout(e)},Wo=Co&&1/Z(new Co([,-0]))[1]==B?function(e){return new Co(e)}:br,Vo=xo?function(e){return xo.get(e)}:br,Yo=so?function(e){return null==e?[]:(e=Nr(e),l(so(e),(function(t){return $r.call(e,t)})))}:Cr,Uo=so?function(e){for(var t=[];e;)f(t,Yo(e)),e=qr(e);return t}:Cr,Ko=Ct;(yo&&"[object DataView]"!=Ko(new yo(new ArrayBuffer(1)))||bo&&"[object Map]"!=Ko(new bo)||wo&&"[object Promise]"!=Ko(wo.resolve())||Co&&"[object Set]"!=Ko(new Co)||ko&&"[object WeakMap]"!=Ko(new ko))&&(Ko=function(e){var t=Ct(e);if(e=(e="[object Object]"==t?e.constructor:H)?yi(e):"")switch(e){case Eo:return"[object DataView]";case Do:return"[object Map]";case No:return"[object Promise]";case Mo:return"[object Set]";case To:return"[object WeakMap]"}return t});var qo=Rr?Yi:kr,Go=vi(Ho),$o=ro||function(e,t){return je.setTimeout(e,t)},Qo=vi(Bo),Xo=function(e){var t=(e=ji(e,(function(e){return 500===t.size&&t.clear(),e}))).cache;return e}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(ne,(function(e,n,i,r){t.push(i?r.replace(he,"$1"):n||e)})),t})),Jo=Ut((function(e,t){return Wi(e)?ht(e,vt(t,1,Wi,!0)):[]})),ea=Ut((function(e,t){var n=Li(t);return Wi(n)&&(n=H),Wi(e)?ht(e,vt(t,1,Wi,!0),ei(n,2)):[]})),ta=Ut((function(e,t){var n=Li(t);return Wi(n)&&(n=H),Wi(e)?ht(e,vt(t,1,Wi,!0),H,n):[]})),na=Ut((function(e){var t=h(e,dn);return t.length&&t[0]===e[0]?Lt(t):[]})),ia=Ut((function(e){var t=Li(e),n=h(e,dn);return t===Li(n)?t=H:n.pop(),n.length&&n[0]===e[0]?Lt(n,ei(t,2)):[]})),ra=Ut((function(e){var t=Li(e),n=h(e,dn);return(t="function"==typeof t?t:H)&&n.pop(),n.length&&n[0]===e[0]?Lt(n,H,t):[]})),oa=Ut(Ei),aa=Gn((function(e,t){var n=null==e?0:e.length,i=st(e,t);return Wt(e,h(t,(function(e){return si(e,n)?+e:e})).sort(_n)),i})),sa=Ut((function(e){return on(vt(e,1,Wi,!0))})),ua=Ut((function(e){var t=Li(e);return Wi(t)&&(t=H),on(vt(e,1,Wi,!0),ei(t,2))})),la=Ut((function(e){var t="function"==typeof(t=Li(e))?t:H;return on(vt(e,1,Wi,!0),H,t)})),ca=Ut((function(e,t){return Wi(e)?ht(e,t):[]})),da=Ut((function(e){return ln(l(e,Wi))})),ha=Ut((function(e){var t=Li(e);return Wi(t)&&(t=H),ln(l(e,Wi),ei(t,2))})),fa=Ut((function(e){var t="function"==typeof(t=Li(e))?t:H;return ln(l(e,Wi),H,t)})),pa=Ut(Ni),ga=Ut((function(e){var t="function"==typeof(t=1<(t=e.length)?e[t-1]:H)?(e.pop(),t):H;return Mi(e,t)})),va=Gn((function(e){var t=e.length,n=t?e[0]:0,i=this.__wrapped__,r=function(t){return st(t,e)};return!(1<t||this.__actions__.length)&&i instanceof ke&&si(n)?((i=i.slice(n,+n+(t?1:0))).__actions__.push({func:Ii,args:[r],thisArg:H}),new S(i,this.__chain__).thru((function(e){return t&&!e.length&&e.push(H),e}))):this.thru(r)})),ma=kn((function(e,t,n){Zr.call(e,n)?++e[n]:at(e,n,1)})),_a=Tn(Ci),ya=Tn(ki),ba=kn((function(e,t,n){Zr.call(e,n)?e[n].push(t):at(e,n,[t])})),wa=Ut((function(e,t,n){var i=-1,o="function"==typeof t,a=zi(e)?Sr(e.length):[];return Po(e,(function(e){a[++i]=o?r(t,e,n):Et(e,t,n)})),a})),Ca=kn((function(e,t,n){at(e,n,t)})),ka=kn((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]})),Sa=Ut((function(e,t){if(null==e)return[];var n=t.length;return 1<n&&ui(e,t[0],t[1])?t=[]:2<n&&ui(t[0],t[1],t[2])&&(t=[t[0]]),Ht(e,vt(t,1),[])})),xa=io||function(){return je.Date.now()},La=Ut((function(e,t,n){var i=1;if(n.length){var r=P(n,Jn(La));i=32|i}return Vn(e,i,t,n,r)})),Ea=Ut((function(e,t,n){var i=3;if(n.length){var r=P(n,Jn(Ea));i=32|i}return Vn(t,i,e,n,r)})),Da=Ut((function(e,t){return dt(e,1,t)})),Na=Ut((function(e,t,n){return dt(e,rr(t)||0,n)}));ji.Cache=Ae;var Ma=Ut((function(e,t){var n=(t=1==t.length&&Za(t[0])?h(t[0],D(ei())):h(vt(t,1),D(ei()))).length;return Ut((function(i){for(var o=-1,a=po(i.length,n);++o<a;)i[o]=t[o].call(this,i[o]);return r(e,this,i)}))})),Ta=Ut((function(e,t){return Vn(e,32,H,t,P(t,Jn(Ta)))})),Ia=Ut((function(e,t){return Vn(e,64,H,t,P(t,Jn(Ia)))})),Oa=Gn((function(e,t){return Vn(e,256,H,H,H,t)})),Aa=Hn(kt),Ra=Hn((function(e,t){return e>=t})),Pa=Dt(function(){return arguments}())?Dt:function(e){return Gi(e)&&Zr.call(e,"callee")&&!$r.call(e,"callee")},Za=Sr.isArray,Fa=Ye?D(Ye):function(e){return Gi(e)&&"[object ArrayBuffer]"==Ct(e)},ja=uo||kr,Ha=Ue?D(Ue):function(e){return Gi(e)&&"[object Date]"==Ct(e)},Ba=Ke?D(Ke):function(e){return Gi(e)&&"[object Map]"==Ko(e)},za=qe?D(qe):function(e){return Gi(e)&&"[object RegExp]"==Ct(e)},Wa=Ge?D(Ge):function(e){return Gi(e)&&"[object Set]"==Ko(e)},Va=$e?D($e):function(e){return Gi(e)&&Ki(e.length)&&!!Ie[Ct(e)]},Ya=Hn(At),Ua=Hn((function(e,t){return e<=t})),Ka=Sn((function(e,t){if(di(t)||zi(t))Cn(t,lr(t),e);else for(var n in t)Zr.call(t,n)&&nt(e,n,t[n])})),qa=Sn((function(e,t){Cn(t,cr(t),e)})),Ga=Sn((function(e,t,n,i){Cn(t,cr(t),e,i)})),$a=Sn((function(e,t,n,i){Cn(t,lr(t),e,i)})),Qa=Gn(st),Xa=Ut((function(e,t){e=Nr(e);var n=-1,i=t.length;for((r=2<i?t[2]:H)&&ui(t[0],t[1],r)&&(i=1);++n<i;)for(var r,o=cr(r=t[n]),a=-1,s=o.length;++a<s;){var u=o[a],l=e[u];(l===H||Bi(l,Ar[u])&&!Zr.call(e,u))&&(e[u]=r[u])}return e})),Ja=Ut((function(e){return e.push(H,Un),r(rs,H,e)})),es=An((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=Hr.call(t)),e[t]=n}),vr(mr)),ts=An((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=Hr.call(t)),Zr.call(e,t)?e[t].push(n):e[t]=[n]}),ei),ns=Ut(Et),is=Sn((function(e,t,n){Ft(e,t,n)})),rs=Sn((function(e,t,n,i){Ft(e,t,n,i)})),os=Gn((function(e,t){var n={};if(null==e)return n;var i=!1;t=h(t,(function(t){return t=fn(t,e),i||(i=1<t.length),t})),Cn(e,Qn(e),n),i&&(n=lt(n,7,Kn));for(var r=t.length;r--;)an(n,t[r]);return n})),as=Gn((function(e,t){return null==e?{}:function(e,t){return Bt(e,t,(function(t,n){return ur(e,n)}))}(e,t)})),ss=Wn(lr),us=Wn(cr),ls=Dn((function(e,t,n){return t=t.toLowerCase(),e+(n?fr(t):t)})),cs=Dn((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),ds=Dn((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),hs=En("toLowerCase"),fs=Dn((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()})),ps=Dn((function(e,t,n){return e+(n?" ":"")+vs(t)})),gs=Dn((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),vs=En("toUpperCase"),ms=Ut((function(e,t){try{return r(e,H,t)}catch(r){return Vi(r)?r:new Lr(r)}})),_s=Gn((function(e,t){return a(t,(function(t){t=_i(t),at(e,t,La(e[t],e))})),e})),ys=In(),bs=In(!0),ws=Ut((function(e,t){return function(n){return Et(n,e,t)}})),Cs=Ut((function(e,t){return function(n){return Et(e,n,t)}})),ks=Pn(h),Ss=Pn(u),xs=Pn(v),Ls=jn(),Es=jn(!0),Ds=Rn((function(e,t){return e+t}),0),Ns=zn("ceil"),Ms=Rn((function(e,t){return e/t}),1),Ts=zn("floor"),Is=Rn((function(e,t){return e*t}),1),Os=zn("round"),As=Rn((function(e,t){return e-t}),0);return n.after=function(e,t){if("function"!=typeof t)throw new Ir("Expected a function");return e=nr(e),function(){if(1>--e)return t.apply(this,arguments)}},n.ary=Pi,n.assign=Ka,n.assignIn=qa,n.assignInWith=Ga,n.assignWith=$a,n.at=Qa,n.before=Zi,n.bind=La,n.bindAll=_s,n.bindKey=Ea,n.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Za(e)?e:[e]},n.chain=Ti,n.chunk=function(e,t,n){if(t=(n?ui(e,t,n):t===H)?1:fo(nr(t),0),!(n=null==e?0:e.length)||1>t)return[];for(var i=0,r=0,o=Sr(oo(n/t));i<n;)o[r++]=Qt(e,i,i+=t);return o},n.compact=function(e){for(var t=-1,n=null==e?0:e.length,i=0,r=[];++t<n;){var o=e[t];o&&(r[i++]=o)}return r},n.concat=function(){var e=arguments.length;if(!e)return[];for(var t=Sr(e-1),n=arguments[0];e--;)t[e-1]=arguments[e];return f(Za(n)?wn(n):[n],vt(t,1))},n.cond=function(e){var t=null==e?0:e.length,n=ei();return e=t?h(e,(function(e){if("function"!=typeof e[1])throw new Ir("Expected a function");return[n(e[0]),e[1]]})):[],Ut((function(n){for(var i=-1;++i<t;){var o=e[i];if(r(o[0],this,n))return r(o[1],this,n)}}))},n.conforms=function(e){return function(e){var t=lr(e);return function(n){return ct(n,e,t)}}(lt(e,1))},n.constant=vr,n.countBy=ma,n.create=function(e,t){var n=Ro(e);return null==t?n:ot(n,t)},n.curry=function e(t,n,i){return(t=Vn(t,8,H,H,H,H,H,n=i?H:n)).placeholder=e.placeholder,t},n.curryRight=function e(t,n,i){return(t=Vn(t,16,H,H,H,H,H,n=i?H:n)).placeholder=e.placeholder,t},n.debounce=Fi,n.defaults=Xa,n.defaultsDeep=Ja,n.defer=Da,n.delay=Na,n.difference=Jo,n.differenceBy=ea,n.differenceWith=ta,n.drop=function(e,t,n){var i=null==e?0:e.length;return i?Qt(e,0>(t=n||t===H?1:nr(t))?0:t,i):[]},n.dropRight=function(e,t,n){var i=null==e?0:e.length;return i?Qt(e,0,0>(t=i-(t=n||t===H?1:nr(t)))?0:t):[]},n.dropRightWhile=function(e,t){return e&&e.length?sn(e,ei(t,3),!0,!0):[]},n.dropWhile=function(e,t){return e&&e.length?sn(e,ei(t,3),!0):[]},n.fill=function(e,t,n,i){var r=null==e?0:e.length;if(!r)return[];for(n&&"number"!=typeof n&&ui(e,t,n)&&(n=0,i=r),r=e.length,0>(n=nr(n))&&(n=-n>r?0:r+n),0>(i=i===H||i>r?r:nr(i))&&(i+=r),i=n>i?0:ir(i);n<i;)e[n++]=t;return e},n.filter=function(e,t){return(Za(e)?l:gt)(e,ei(t,3))},n.flatMap=function(e,t){return vt(Ri(e,t),1)},n.flatMapDeep=function(e,t){return vt(Ri(e,t),B)},n.flatMapDepth=function(e,t,n){return n=n===H?1:nr(n),vt(Ri(e,t),n)},n.flatten=Si,n.flattenDeep=function(e){return null!=e&&e.length?vt(e,B):[]},n.flattenDepth=function(e,t){return null!=e&&e.length?vt(e,t=t===H?1:nr(t)):[]},n.flip=function(e){return Vn(e,512)},n.flow=ys,n.flowRight=bs,n.fromPairs=function(e){for(var t=-1,n=null==e?0:e.length,i={};++t<n;){var r=e[t];i[r[0]]=r[1]}return i},n.functions=function(e){return null==e?[]:yt(e,lr(e))},n.functionsIn=function(e){return null==e?[]:yt(e,cr(e))},n.groupBy=ba,n.initial=function(e){return null!=e&&e.length?Qt(e,0,-1):[]},n.intersection=na,n.intersectionBy=ia,n.intersectionWith=ra,n.invert=es,n.invertBy=ts,n.invokeMap=wa,n.iteratee=_r,n.keyBy=Ca,n.keys=lr,n.keysIn=cr,n.map=Ri,n.mapKeys=function(e,t){var n={};return t=ei(t,3),mt(e,(function(e,i,r){at(n,t(e,i,r),e)})),n},n.mapValues=function(e,t){var n={};return t=ei(t,3),mt(e,(function(e,i,r){at(n,i,t(e,i,r))})),n},n.matches=function(e){return Pt(lt(e,1))},n.matchesProperty=function(e,t){return Zt(e,lt(t,1))},n.memoize=ji,n.merge=is,n.mergeWith=rs,n.method=ws,n.methodOf=Cs,n.mixin=yr,n.negate=Hi,n.nthArg=function(e){return e=nr(e),Ut((function(t){return jt(t,e)}))},n.omit=os,n.omitBy=function(e,t){return dr(e,Hi(ei(t)))},n.once=function(e){return Zi(2,e)},n.orderBy=function(e,t,n,i){return null==e?[]:(Za(t)||(t=null==t?[]:[t]),Za(n=i?H:n)||(n=null==n?[]:[n]),Ht(e,t,n))},n.over=ks,n.overArgs=Ma,n.overEvery=Ss,n.overSome=xs,n.partial=Ta,n.partialRight=Ia,n.partition=ka,n.pick=as,n.pickBy=dr,n.property=wr,n.propertyOf=function(e){return function(t){return null==e?H:bt(e,t)}},n.pull=oa,n.pullAll=Ei,n.pullAllBy=function(e,t,n){return e&&e.length&&t&&t.length?zt(e,t,ei(n,2)):e},n.pullAllWith=function(e,t,n){return e&&e.length&&t&&t.length?zt(e,t,H,n):e},n.pullAt=aa,n.range=Ls,n.rangeRight=Es,n.rearg=Oa,n.reject=function(e,t){return(Za(e)?l:gt)(e,Hi(ei(t,3)))},n.remove=function(e,t){var n=[];if(!e||!e.length)return n;var i=-1,r=[],o=e.length;for(t=ei(t,3);++i<o;){var a=e[i];t(a,i,e)&&(n.push(a),r.push(i))}return Wt(e,r),n},n.rest=function(e,t){if("function"!=typeof e)throw new Ir("Expected a function");return Ut(e,t=t===H?t:nr(t))},n.reverse=Di,n.sampleSize=function(e,t,n){return t=(n?ui(e,t,n):t===H)?1:nr(t),(Za(e)?We:qt)(e,t)},n.set=function(e,t,n){return null==e?e:Gt(e,t,n)},n.setWith=function(e,t,n,i){return i="function"==typeof i?i:H,null==e?e:Gt(e,t,n,i)},n.shuffle=function(e){return(Za(e)?Ve:$t)(e)},n.slice=function(e,t,n){var i=null==e?0:e.length;return i?(n&&"number"!=typeof n&&ui(e,t,n)?(t=0,n=i):(t=null==t?0:nr(t),n=n===H?i:nr(n)),Qt(e,t,n)):[]},n.sortBy=Sa,n.sortedUniq=function(e){return e&&e.length?tn(e):[]},n.sortedUniqBy=function(e,t){return e&&e.length?tn(e,ei(t,2)):[]},n.split=function(e,t,n){return n&&"number"!=typeof n&&ui(e,t,n)&&(t=n=H),(n=n===H?4294967295:n>>>0)?(e=ar(e))&&("string"==typeof t||null!=t&&!za(t))&&(!(t=rn(t))&&Ne.test(e))?pn(j(e),0,n):e.split(t,n):[]},n.spread=function(e,t){if("function"!=typeof e)throw new Ir("Expected a function");return t=null==t?0:fo(nr(t),0),Ut((function(n){var i=n[t];return n=pn(n,0,t),i&&f(n,i),r(e,this,n)}))},n.tail=function(e){var t=null==e?0:e.length;return t?Qt(e,1,t):[]},n.take=function(e,t,n){return e&&e.length?Qt(e,0,0>(t=n||t===H?1:nr(t))?0:t):[]},n.takeRight=function(e,t,n){var i=null==e?0:e.length;return i?Qt(e,0>(t=i-(t=n||t===H?1:nr(t)))?0:t,i):[]},n.takeRightWhile=function(e,t){return e&&e.length?sn(e,ei(t,3),!1,!0):[]},n.takeWhile=function(e,t){return e&&e.length?sn(e,ei(t,3)):[]},n.tap=function(e,t){return t(e),e},n.throttle=function(e,t,n){var i=!0,r=!0;if("function"!=typeof e)throw new Ir("Expected a function");return qi(n)&&(i="leading"in n?!!n.leading:i,r="trailing"in n?!!n.trailing:r),Fi(e,t,{leading:i,maxWait:t,trailing:r})},n.thru=Ii,n.toArray=er,n.toPairs=ss,n.toPairsIn=us,n.toPath=function(e){return Za(e)?h(e,_i):Ji(e)?[e]:wn(Xo(ar(e)))},n.toPlainObject=or,n.transform=function(e,t,n){var i=Za(e),r=i||ja(e)||Va(e);if(t=ei(t,4),null==n){var o=e&&e.constructor;n=r?i?new o:[]:qi(e)&&Yi(o)?Ro(qr(e)):{}}return(r?a:mt)(e,(function(e,i,r){return t(n,e,i,r)})),n},n.unary=function(e){return Pi(e,1)},n.union=sa,n.unionBy=ua,n.unionWith=la,n.uniq=function(e){return e&&e.length?on(e):[]},n.uniqBy=function(e,t){return e&&e.length?on(e,ei(t,2)):[]},n.uniqWith=function(e,t){return t="function"==typeof t?t:H,e&&e.length?on(e,H,t):[]},n.unset=function(e,t){return null==e||an(e,t)},n.unzip=Ni,n.unzipWith=Mi,n.update=function(e,t,n){return null!=e&&(e=Gt(e,t,(n=hn(n))(bt(e,t)),void 0)),e},n.updateWith=function(e,t,n,i){return i="function"==typeof i?i:H,null!=e&&(e=Gt(e,t,(n=hn(n))(bt(e,t)),i)),e},n.values=hr,n.valuesIn=function(e){return null==e?[]:N(e,cr(e))},n.without=ca,n.words=gr,n.wrap=function(e,t){return Ta(hn(t),e)},n.xor=da,n.xorBy=ha,n.xorWith=fa,n.zip=pa,n.zipObject=function(e,t){return cn(e||[],t||[],nt)},n.zipObjectDeep=function(e,t){return cn(e||[],t||[],Gt)},n.zipWith=ga,n.entries=ss,n.entriesIn=us,n.extend=qa,n.extendWith=Ga,yr(n,n),n.add=Ds,n.attempt=ms,n.camelCase=ls,n.capitalize=fr,n.ceil=Ns,n.clamp=function(e,t,n){return n===H&&(n=t,t=H),n!==H&&(n=(n=rr(n))===n?n:0),t!==H&&(t=(t=rr(t))===t?t:0),ut(rr(e),t,n)},n.clone=function(e){return lt(e,4)},n.cloneDeep=function(e){return lt(e,5)},n.cloneDeepWith=function(e,t){return lt(e,5,t="function"==typeof t?t:H)},n.cloneWith=function(e,t){return lt(e,4,t="function"==typeof t?t:H)},n.conformsTo=function(e,t){return null==t||ct(e,t,lr(t))},n.deburr=pr,n.defaultTo=function(e,t){return null==e||e!==e?t:e},n.divide=Ms,n.endsWith=function(e,t,n){e=ar(e),t=rn(t);var i=e.length;i=n=n===H?i:ut(nr(n),0,i);return 0<=(n-=t.length)&&e.slice(n,i)==t},n.eq=Bi,n.escape=function(e){return(e=ar(e))&&$.test(e)?e.replace(q,Je):e},n.escapeRegExp=function(e){return(e=ar(e))&&re.test(e)?e.replace(ie,"\\$&"):e},n.every=function(e,t,n){var i=Za(e)?u:ft;return n&&ui(e,t,n)&&(t=H),i(e,ei(t,3))},n.find=_a,n.findIndex=Ci,n.findKey=function(e,t){return m(e,ei(t,3),mt)},n.findLast=ya,n.findLastIndex=ki,n.findLastKey=function(e,t){return m(e,ei(t,3),_t)},n.floor=Ts,n.forEach=Oi,n.forEachRight=Ai,n.forIn=function(e,t){return null==e?e:Fo(e,ei(t,3),cr)},n.forInRight=function(e,t){return null==e?e:jo(e,ei(t,3),cr)},n.forOwn=function(e,t){return e&&mt(e,ei(t,3))},n.forOwnRight=function(e,t){return e&&_t(e,ei(t,3))},n.get=sr,n.gt=Aa,n.gte=Ra,n.has=function(e,t){return null!=e&&ri(e,t,St)},n.hasIn=ur,n.head=xi,n.identity=mr,n.includes=function(e,t,n,i){return e=zi(e)?e:hr(e),n=n&&!i?nr(n):0,i=e.length,0>n&&(n=fo(i+n,0)),Xi(e)?n<=i&&-1<e.indexOf(t,n):!!i&&-1<y(e,t,n)},n.indexOf=function(e,t,n){var i=null==e?0:e.length;return i?(0>(n=null==n?0:nr(n))&&(n=fo(i+n,0)),y(e,t,n)):-1},n.inRange=function(e,t,n){return t=tr(t),n===H?(n=t,t=0):n=tr(n),(e=rr(e))>=po(t,n)&&e<fo(t,n)},n.invoke=ns,n.isArguments=Pa,n.isArray=Za,n.isArrayBuffer=Fa,n.isArrayLike=zi,n.isArrayLikeObject=Wi,n.isBoolean=function(e){return!0===e||!1===e||Gi(e)&&"[object Boolean]"==Ct(e)},n.isBuffer=ja,n.isDate=Ha,n.isElement=function(e){return Gi(e)&&1===e.nodeType&&!Qi(e)},n.isEmpty=function(e){if(null==e)return!0;if(zi(e)&&(Za(e)||"string"==typeof e||"function"==typeof e.splice||ja(e)||Va(e)||Pa(e)))return!e.length;var t=Ko(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(di(e))return!Ot(e).length;for(var n in e)if(Zr.call(e,n))return!1;return!0},n.isEqual=function(e,t){return Nt(e,t)},n.isEqualWith=function(e,t,n){var i=(n="function"==typeof n?n:H)?n(e,t):H;return i===H?Nt(e,t,H,n):!!i},n.isError=Vi,n.isFinite=function(e){return"number"==typeof e&&lo(e)},n.isFunction=Yi,n.isInteger=Ui,n.isLength=Ki,n.isMap=Ba,n.isMatch=function(e,t){return e===t||Mt(e,t,ni(t))},n.isMatchWith=function(e,t,n){return n="function"==typeof n?n:H,Mt(e,t,ni(t),n)},n.isNaN=function(e){return $i(e)&&e!=+e},n.isNative=function(e){if(qo(e))throw new Lr("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Tt(e)},n.isNil=function(e){return null==e},n.isNull=function(e){return null===e},n.isNumber=$i,n.isObject=qi,n.isObjectLike=Gi,n.isPlainObject=Qi,n.isRegExp=za,n.isSafeInteger=function(e){return Ui(e)&&-9007199254740991<=e&&9007199254740991>=e},n.isSet=Wa,n.isString=Xi,n.isSymbol=Ji,n.isTypedArray=Va,n.isUndefined=function(e){return e===H},n.isWeakMap=function(e){return Gi(e)&&"[object WeakMap]"==Ko(e)},n.isWeakSet=function(e){return Gi(e)&&"[object WeakSet]"==Ct(e)},n.join=function(e,t){return null==e?"":co.call(e,t)},n.kebabCase=cs,n.last=Li,n.lastIndexOf=function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var r=i;if(n!==H&&(r=0>(r=nr(n))?fo(i+r,0):po(r,i-1)),t===t)e:{for(n=r+1;n--;)if(e[n]===t){e=n;break e}e=n}else e=_(e,w,r,!0);return e},n.lowerCase=ds,n.lowerFirst=hs,n.lt=Ya,n.lte=Ua,n.max=function(e){return e&&e.length?pt(e,mr,kt):H},n.maxBy=function(e,t){return e&&e.length?pt(e,ei(t,2),kt):H},n.mean=function(e){return C(e,mr)},n.meanBy=function(e,t){return C(e,ei(t,2))},n.min=function(e){return e&&e.length?pt(e,mr,At):H},n.minBy=function(e,t){return e&&e.length?pt(e,ei(t,2),At):H},n.stubArray=Cr,n.stubFalse=kr,n.stubObject=function(){return{}},n.stubString=function(){return""},n.stubTrue=function(){return!0},n.multiply=Is,n.nth=function(e,t){return e&&e.length?jt(e,nr(t)):H},n.noConflict=function(){return je._===this&&(je._=zr),this},n.noop=br,n.now=xa,n.pad=function(e,t,n){e=ar(e);var i=(t=nr(t))?F(e):0;return!t||i>=t?e:Zn(ao(t=(t-i)/2),n)+e+Zn(oo(t),n)},n.padEnd=function(e,t,n){e=ar(e);var i=(t=nr(t))?F(e):0;return t&&i<t?e+Zn(t-i,n):e},n.padStart=function(e,t,n){e=ar(e);var i=(t=nr(t))?F(e):0;return t&&i<t?Zn(t-i,n)+e:e},n.parseInt=function(e,t,n){return n||null==t?t=0:t&&(t=+t),vo(ar(e).replace(ae,""),t||0)},n.random=function(e,t,n){if(n&&"boolean"!=typeof n&&ui(e,t,n)&&(t=n=H),n===H&&("boolean"==typeof t?(n=t,t=H):"boolean"==typeof e&&(n=e,e=H)),e===H&&t===H?(e=0,t=1):(e=tr(e),t===H?(t=e,e=0):t=tr(t)),e>t){var i=e;e=t,t=i}return n||e%1||t%1?(n=mo(),po(e+n*(t-e+Re("1e-"+((n+"").length-1))),t)):Vt(e,t)},n.reduce=function(e,t,n){var i=Za(e)?p:x,r=3>arguments.length;return i(e,ei(t,4),n,r,Po)},n.reduceRight=function(e,t,n){var i=Za(e)?g:x,r=3>arguments.length;return i(e,ei(t,4),n,r,Zo)},n.repeat=function(e,t,n){return t=(n?ui(e,t,n):t===H)?1:nr(t),Yt(ar(e),t)},n.replace=function(){var e=arguments,t=ar(e[0]);return 3>e.length?t:t.replace(e[1],e[2])},n.result=function(e,t,n){var i=-1,r=(t=fn(t,e)).length;for(r||(r=1,e=H);++i<r;){var o=null==e?H:e[_i(t[i])];o===H&&(i=r,o=n),e=Yi(o)?o.call(e):o}return e},n.round=Os,n.runInContext=e,n.sample=function(e){return(Za(e)?Be:Kt)(e)},n.size=function(e){if(null==e)return 0;if(zi(e))return Xi(e)?F(e):e.length;var t=Ko(e);return"[object Map]"==t||"[object Set]"==t?e.size:Ot(e).length},n.snakeCase=fs,n.some=function(e,t,n){var i=Za(e)?v:Xt;return n&&ui(e,t,n)&&(t=H),i(e,ei(t,3))},n.sortedIndex=function(e,t){return Jt(e,t)},n.sortedIndexBy=function(e,t,n){return en(e,t,ei(n,2))},n.sortedIndexOf=function(e,t){var n=null==e?0:e.length;if(n){var i=Jt(e,t);if(i<n&&Bi(e[i],t))return i}return-1},n.sortedLastIndex=function(e,t){return Jt(e,t,!0)},n.sortedLastIndexBy=function(e,t,n){return en(e,t,ei(n,2),!0)},n.sortedLastIndexOf=function(e,t){if(null!=e&&e.length){var n=Jt(e,t,!0)-1;if(Bi(e[n],t))return n}return-1},n.startCase=ps,n.startsWith=function(e,t,n){return e=ar(e),n=null==n?0:ut(nr(n),0,e.length),t=rn(t),e.slice(n,n+t.length)==t},n.subtract=As,n.sum=function(e){return e&&e.length?L(e,mr):0},n.sumBy=function(e,t){return e&&e.length?L(e,ei(t,2)):0},n.template=function(e,t,i){var r=n.templateSettings;i&&ui(e,t,i)&&(t=H),e=ar(e),t=Ga({},t,r,Yn);var o,a,s=lr(i=Ga({},t.imports,r.imports,Yn)),u=N(i,s),l=0;i=t.interpolate||we;var c="__p+='";i=Mr((t.escape||we).source+"|"+i.source+"|"+(i===J?fe:we).source+"|"+(t.evaluate||we).source+"|$","g");var d="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(e.replace(i,(function(t,n,i,r,s,u){return i||(i=r),c+=e.slice(l,u).replace(Ce,O),n&&(o=!0,c+="'+__e("+n+")+'"),s&&(a=!0,c+="';"+s+";\n__p+='"),i&&(c+="'+((__t=("+i+"))==null?'':__t)+'"),l=u+t.length,t})),c+="';",(t=t.variable)||(c="with(obj){"+c+"}"),c=(a?c.replace(V,""):c).replace(Y,"$1").replace(U,"$1;"),c="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(o?",__e=_.escape":"")+(a?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+c+"return __p}",(t=ms((function(){return Er(s,d+"return "+c).apply(H,u)}))).source=c,Vi(t))throw t;return t},n.times=function(e,t){if(1>(e=nr(e))||9007199254740991<e)return[];var n=4294967295,i=po(e,4294967295);for(e-=4294967295,i=E(i,t=ei(t));++n<e;)t(n);return i},n.toFinite=tr,n.toInteger=nr,n.toLength=ir,n.toLower=function(e){return ar(e).toLowerCase()},n.toNumber=rr,n.toSafeInteger=function(e){return e?ut(nr(e),-9007199254740991,9007199254740991):0===e?e:0},n.toString=ar,n.toUpper=function(e){return ar(e).toUpperCase()},n.trim=function(e,t,n){return(e=ar(e))&&(n||t===H)?e.replace(oe,""):e&&(t=rn(t))?pn(e=j(e),t=T(e,n=j(t)),n=I(e,n)+1).join(""):e},n.trimEnd=function(e,t,n){return(e=ar(e))&&(n||t===H)?e.replace(se,""):e&&(t=rn(t))?pn(e=j(e),0,t=I(e,j(t))+1).join(""):e},n.trimStart=function(e,t,n){return(e=ar(e))&&(n||t===H)?e.replace(ae,""):e&&(t=rn(t))?pn(e=j(e),t=T(e,j(t))).join(""):e},n.truncate=function(e,t){var n=30,i="...";if(qi(t)){var r="separator"in t?t.separator:r;n="length"in t?nr(t.length):n,i="omission"in t?rn(t.omission):i}var o=(e=ar(e)).length;if(Ne.test(e)){var a=j(e);o=a.length}if(n>=o)return e;if(1>(o=n-F(i)))return i;if(n=a?pn(a,0,o).join(""):e.slice(0,o),r===H)return n+i;if(a&&(o+=n.length-o),za(r)){if(e.slice(o).search(r)){var s=n;for(r.global||(r=Mr(r.source,ar(pe.exec(r))+"g")),r.lastIndex=0;a=r.exec(s);)var u=a.index;n=n.slice(0,u===H?o:u)}}else e.indexOf(rn(r),o)!=o&&(-1<(r=n.lastIndexOf(r))&&(n=n.slice(0,r)));return n+i},n.unescape=function(e){return(e=ar(e))&&G.test(e)?e.replace(K,et):e},n.uniqueId=function(e){var t=++Fr;return ar(e)+t},n.upperCase=gs,n.upperFirst=vs,n.each=Oi,n.eachRight=Ai,n.first=xi,yr(n,function(){var e={};return mt(n,(function(t,i){Zr.call(n.prototype,i)||(e[i]=t)})),e}(),{chain:!1}),n.VERSION="4.17.11",a("bind bindKey curry curryRight partial partialRight".split(" "),(function(e){n[e].placeholder=n})),a(["drop","take"],(function(e,t){ke.prototype[e]=function(n){n=n===H?1:fo(nr(n),0);var i=this.__filtered__&&!t?new ke(this):this.clone();return i.__filtered__?i.__takeCount__=po(n,i.__takeCount__):i.__views__.push({size:po(n,4294967295),type:e+(0>i.__dir__?"Right":"")}),i},ke.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),a(["filter","map","takeWhile"],(function(e,t){var n=t+1,i=1==n||3==n;ke.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:ei(e,3),type:n}),t.__filtered__=t.__filtered__||i,t}})),a(["head","last"],(function(e,t){var n="take"+(t?"Right":"");ke.prototype[e]=function(){return this[n](1).value()[0]}})),a(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");ke.prototype[e]=function(){return this.__filtered__?new ke(this):this[n](1)}})),ke.prototype.compact=function(){return this.filter(mr)},ke.prototype.find=function(e){return this.filter(e).head()},ke.prototype.findLast=function(e){return this.reverse().find(e)},ke.prototype.invokeMap=Ut((function(e,t){return"function"==typeof e?new ke(this):this.map((function(n){return Et(n,e,t)}))})),ke.prototype.reject=function(e){return this.filter(Hi(ei(e)))},ke.prototype.slice=function(e,t){e=nr(e);var n=this;return n.__filtered__&&(0<e||0>t)?new ke(n):(0>e?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==H&&(n=0>(t=nr(t))?n.dropRight(-t):n.take(t-e)),n)},ke.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},ke.prototype.toArray=function(){return this.take(4294967295)},mt(ke.prototype,(function(e,t){var i=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),o=n[r?"take"+("last"==t?"Right":""):t],a=r||/^find/.test(t);o&&(n.prototype[t]=function(){var t=this.__wrapped__,s=r?[1]:arguments,u=s[0],l=(p=t instanceof ke)||Za(t),c=function(e){return e=o.apply(n,f([e],s)),r&&d?e[0]:e};l&&i&&"function"==typeof u&&1!=u.length&&(p=l=!1);var d=this.__chain__,h=!!this.__actions__.length,p=(u=a&&!d,p&&!h);return!a&&l?(t=p?t:new ke(this),(t=e.apply(t,s)).__actions__.push({func:Ii,args:[c],thisArg:H}),new S(t,d)):u&&p?e.apply(this,s):(t=this.thru(c),u?r?t.value()[0]:t.value():t)})})),a("pop push shift sort splice unshift".split(" "),(function(e){var t=Or[e],i=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);n.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var n=this.value();return t.apply(Za(n)?n:[],e)}return this[i]((function(n){return t.apply(Za(n)?n:[],e)}))}})),mt(ke.prototype,(function(e,t){var i=n[t];if(i){var r=i.name+"";(Lo[r]||(Lo[r]=[])).push({name:t,func:i})}})),Lo[On(H,2).name]=[{name:"wrapper",func:H}],ke.prototype.clone=function(){var e=new ke(this.__wrapped__);return e.__actions__=wn(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=wn(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=wn(this.__views__),e},ke.prototype.reverse=function(){if(this.__filtered__){var e=new ke(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},ke.prototype.value=function(){var e,t=this.__wrapped__.value(),n=this.__dir__,i=Za(t),r=0>n,o=i?t.length:0;e=0;for(var a=o,s=this.__views__,u=-1,l=s.length;++u<l;){var c=s[u],d=c.size;switch(c.type){case"drop":e+=d;break;case"dropRight":a-=d;break;case"take":a=po(a,e+d);break;case"takeRight":e=fo(e,a-d)}}if(a=(e={start:e,end:a}).start,e=(s=e.end)-a,a=r?s:a-1,u=(s=this.__iteratees__).length,l=0,c=po(e,this.__takeCount__),!i||!r&&o==e&&c==e)return un(t,this.__actions__);i=[];e:for(;e--&&l<c;){for(r=-1,o=t[a+=n];++r<u;){d=(h=s[r]).type;var h=(0,h.iteratee)(o);if(2==d)o=h;else if(!h){if(1==d)continue e;break e}}i[l++]=o}return i},n.prototype.at=va,n.prototype.chain=function(){return Ti(this)},n.prototype.commit=function(){return new S(this.value(),this.__chain__)},n.prototype.next=function(){this.__values__===H&&(this.__values__=er(this.value()));var e=this.__index__>=this.__values__.length;return{done:e,value:e?H:this.__values__[this.__index__++]}},n.prototype.plant=function(e){for(var t,n=this;n instanceof i;){var r=wi(n);r.__index__=0,r.__values__=H,t?o.__wrapped__=r:t=r;var o=r;n=n.__wrapped__}return o.__wrapped__=e,t},n.prototype.reverse=function(){var e=this.__wrapped__;return e instanceof ke?(this.__actions__.length&&(e=new ke(this)),(e=e.reverse()).__actions__.push({func:Ii,args:[Di],thisArg:H}),new S(e,this.__chain__)):this.thru(Di)},n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=function(){return un(this.__wrapped__,this.__actions__)},n.prototype.first=n.prototype.head,Jr&&(n.prototype[Jr]=function(){return this}),n}();je._=tt,void 0===(i=function(){return tt}.call(t,n,t,e))||(e.exports=i)}.call(this)},95130:function(e,t,n){var i=n(50042),r="Expected a function";function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError(r);var n=function n(){var i=arguments,r=t?t.apply(this,i):i[0],o=n.cache;if(o.has(r))return o.get(r);var a=e.apply(this,i);return n.cache=o.set(r,a)||o,a};return n.cache=new(o.Cache||i),n}o.Cache=i,e.exports=o},66589:function(e,t,n){var i=n(79746),r=n(60301),o=n(88343),a=n(33576),s=n(77516),u=n(1594),l=n(95057),c=n(73561),d=l((function(e,t){var n={};if(null==e)return n;var l=!1;t=i(t,(function(t){return t=a(t,e),l||(l=t.length>1),t})),s(e,c(e),n),l&&(n=r(n,7,u));for(var d=t.length;d--;)o(n,t[d]);return n}));e.exports=d},59537:function(e,t,n){var i=n(32559);e.exports=function(e,t,n){return null==e?e:i(e,t,n)}},8304:function(e){e.exports=function(){return[]}},54666:function(e){e.exports=function(){return!1}},20403:function(e,t,n){var i=n(24714);e.exports=function(e){return null==e?"":i(e)}},43911:function(e){"use strict";e.exports=function(e){for(var t=function(e){var t,n=1+(e.length+8>>6),i=new Array(16*n);for(t=0;t<16*n;t++)i[t]=0;for(t=0;t<e.length;t++)i[t>>2]|=e.charCodeAt(t)<<(8*e.length+t)%4*8;i[t>>2]|=128<<(8*e.length+t)%4*8;var r=8*e.length;return i[16*n-2]=255&r,i[16*n-2]|=(r>>>8&255)<<8,i[16*n-2]|=(r>>>16&255)<<16,i[16*n-2]|=(r>>>24&255)<<24,i}(e),n=1732584193,i=-271733879,r=-1732584194,s=271733878,h=0;h<t.length;h+=16){var f=n,p=i,g=r,v=s;n=u(n,i,r,s,t[h+0],7,-680876936),s=u(s,n,i,r,t[h+1],12,-389564586),r=u(r,s,n,i,t[h+2],17,606105819),i=u(i,r,s,n,t[h+3],22,-1044525330),n=u(n,i,r,s,t[h+4],7,-176418897),s=u(s,n,i,r,t[h+5],12,1200080426),r=u(r,s,n,i,t[h+6],17,-1473231341),i=u(i,r,s,n,t[h+7],22,-45705983),n=u(n,i,r,s,t[h+8],7,1770035416),s=u(s,n,i,r,t[h+9],12,-1958414417),r=u(r,s,n,i,t[h+10],17,-42063),i=u(i,r,s,n,t[h+11],22,-1990404162),n=u(n,i,r,s,t[h+12],7,1804603682),s=u(s,n,i,r,t[h+13],12,-40341101),r=u(r,s,n,i,t[h+14],17,-1502002290),n=l(n,i=u(i,r,s,n,t[h+15],22,1236535329),r,s,t[h+1],5,-165796510),s=l(s,n,i,r,t[h+6],9,-1069501632),r=l(r,s,n,i,t[h+11],14,643717713),i=l(i,r,s,n,t[h+0],20,-373897302),n=l(n,i,r,s,t[h+5],5,-701558691),s=l(s,n,i,r,t[h+10],9,38016083),r=l(r,s,n,i,t[h+15],14,-660478335),i=l(i,r,s,n,t[h+4],20,-405537848),n=l(n,i,r,s,t[h+9],5,568446438),s=l(s,n,i,r,t[h+14],9,-1019803690),r=l(r,s,n,i,t[h+3],14,-187363961),i=l(i,r,s,n,t[h+8],20,1163531501),n=l(n,i,r,s,t[h+13],5,-1444681467),s=l(s,n,i,r,t[h+2],9,-51403784),r=l(r,s,n,i,t[h+7],14,1735328473),n=c(n,i=l(i,r,s,n,t[h+12],20,-1926607734),r,s,t[h+5],4,-378558),s=c(s,n,i,r,t[h+8],11,-2022574463),r=c(r,s,n,i,t[h+11],16,1839030562),i=c(i,r,s,n,t[h+14],23,-35309556),n=c(n,i,r,s,t[h+1],4,-1530992060),s=c(s,n,i,r,t[h+4],11,1272893353),r=c(r,s,n,i,t[h+7],16,-155497632),i=c(i,r,s,n,t[h+10],23,-1094730640),n=c(n,i,r,s,t[h+13],4,681279174),s=c(s,n,i,r,t[h+0],11,-358537222),r=c(r,s,n,i,t[h+3],16,-722521979),i=c(i,r,s,n,t[h+6],23,76029189),n=c(n,i,r,s,t[h+9],4,-640364487),s=c(s,n,i,r,t[h+12],11,-421815835),r=c(r,s,n,i,t[h+15],16,530742520),n=d(n,i=c(i,r,s,n,t[h+2],23,-995338651),r,s,t[h+0],6,-198630844),s=d(s,n,i,r,t[h+7],10,1126891415),r=d(r,s,n,i,t[h+14],15,-1416354905),i=d(i,r,s,n,t[h+5],21,-57434055),n=d(n,i,r,s,t[h+12],6,1700485571),s=d(s,n,i,r,t[h+3],10,-1894986606),r=d(r,s,n,i,t[h+10],15,-1051523),i=d(i,r,s,n,t[h+1],21,-2054922799),n=d(n,i,r,s,t[h+8],6,1873313359),s=d(s,n,i,r,t[h+15],10,-30611744),r=d(r,s,n,i,t[h+6],15,-1560198380),i=d(i,r,s,n,t[h+13],21,1309151649),n=d(n,i,r,s,t[h+4],6,-145523070),s=d(s,n,i,r,t[h+11],10,-1120210379),r=d(r,s,n,i,t[h+2],15,718787259),i=d(i,r,s,n,t[h+9],21,-343485551),n=o(n,f),i=o(i,p),r=o(r,g),s=o(s,v)}return a(n)+a(i)+a(r)+a(s)};var t="0123456789abcdef";function n(e,t){return(e>>>1|t>>>1)<<1|(1&e|1&t)}function i(e,t){return(e>>>1^t>>>1)<<1|1&e^1&t}function r(e,t){return(e>>>1&t>>>1)<<1|1&e&t}function o(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function a(e){var n,i="";for(n=0;n<=3;n++)i+=t.charAt(e>>8*n+4&15)+t.charAt(e>>8*n&15);return i}function s(e,t,n,i,r,a){return o((s=o(o(t,e),o(i,a)))<<(u=r)|s>>>32-u,n);var s,u}function u(e,t,i,o,a,u,l){return s(n(r(t,i),r(~t,o)),e,t,a,u,l)}function l(e,t,i,o,a,u,l){return s(n(r(t,o),r(i,~o)),e,t,a,u,l)}function c(e,t,n,r,o,a,u){return s(i(i(t,n),r),e,t,o,a,u)}function d(e,t,r,o,a,u,l){return s(i(r,n(t,~o)),e,t,a,u,l)}},84539:function(e,t,n){"use strict";n.d(t,{$W:function(){return b},Dt:function(){return y},G6:function(){return v},MG:function(){return m},Pf:function(){return p},WP:function(){return u},fX:function(){return l},i7:function(){return g},ie:function(){return c},mX:function(){return d},px:function(){return s},vU:function(){return f},zc:function(){return _}});var i=n(15671),r=n(43144),o=n(11732),a=function(){function e(){(0,i.Z)(this,e),this._zoomLevel=0,this._lastZoomLevelChangeTime=0,this._onDidChangeZoomLevel=new o.Q5,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event,this._zoomFactor=1}return(0,r.Z)(e,[{key:"getZoomLevel",value:function(){return this._zoomLevel}},{key:"getTimeSinceLastZoomLevelChanged",value:function(){return Date.now()-this._lastZoomLevelChangeTime}},{key:"getZoomFactor",value:function(){return this._zoomFactor}},{key:"getPixelRatio",value:function(){var e=document.createElement("canvas").getContext("2d");return(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)}}]),e}();function s(){return a.INSTANCE.getZoomLevel()}function u(){return a.INSTANCE.getTimeSinceLastZoomLevelChanged()}function l(e){return a.INSTANCE.onDidChangeZoomLevel(e)}function c(){return a.INSTANCE.getZoomFactor()}function d(){return a.INSTANCE.getPixelRatio()}a.INSTANCE=new a;var h=navigator.userAgent,f=h.indexOf("Firefox")>=0,p=h.indexOf("AppleWebKit")>=0,g=h.indexOf("Chrome")>=0,v=!g&&h.indexOf("Safari")>=0,m=!g&&!v&&p,_=h.indexOf("iPad")>=0||v&&navigator.maxTouchPoints>0,y=h.indexOf("Android")>=0,b=window.matchMedia&&window.matchMedia("(display-mode: standalone)").matches},32721:function(e,t,n){"use strict";n.d(t,{D:function(){return o}});var i=n(84539),r=n(30487),o={clipboard:{writeText:r.tY||document.queryCommandSupported&&document.queryCommandSupported("copy")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:r.tY||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText)},keyboard:r.tY||i.$W?0:navigator.keyboard||i.G6?1:2,touch:"ontouchstart"in window||navigator.maxTouchPoints>0||window.navigator.msMaxTouchPoints>0,pointerEvents:window.PointerEvent&&("ontouchstart"in window||window.navigator.maxTouchPoints>0||navigator.maxTouchPoints>0||window.navigator.msMaxTouchPoints>0)}},53042:function(e,t,n){"use strict";n.d(t,{P$:function(){return s},TN:function(){return a},go:function(){return o}});var i=n(15671),r=n(43144),o={RESOURCES:"ResourceURLs",DOWNLOAD_URL:"DownloadURL",FILES:"Files",TEXT:"text/plain"},a=function(){function e(t){(0,i.Z)(this,e),this.data=t}return(0,r.Z)(e,[{key:"update",value:function(){}},{key:"getData",value:function(){return this.data}}]),e}(),s={CurrentDragAndDropData:void 0}},84540:function(e,t,n){"use strict";n.r(t),n.d(t,{$:function(){return we},Dimension:function(){return z},EventHelper:function(){return de},EventType:function(){return ce},ModifierKeyEmitter:function(){return Me},Namespace:function(){return _e},StandardWindow:function(){return U},addDisposableGenericMouseDownListner:function(){return E},addDisposableGenericMouseUpListner:function(){return D},addDisposableListener:function(){return k},addDisposableNonBubblingMouseOutListener:function(){return N},addDisposableNonBubblingPointerOutListener:function(){return M},addDisposableThrottledListener:function(){return F},addMatchMediaChangeListener:function(){return Te},addStandardDisposableGenericMouseDownListner:function(){return L},addStandardDisposableListener:function(){return x},animate:function(){return Ee},append:function(){return ve},asCSSPropertyValue:function(){return Ne},asCSSUrl:function(){return De},clearNode:function(){return b},computeScreenAwareSize:function(){return xe},createCSSRule:function(){return se},createStyleSheet:function(){return re},findParentWithClass:function(){return X},getActiveElement:function(){return ie},getClientArea:function(){return H},getComputedStyle:function(){return j},getContentHeight:function(){return G},getContentWidth:function(){return q},getDomNodePagePosition:function(){return Y},getElementsByTagName:function(){return Se},getShadowRoot:function(){return ne},getTopLeftOffset:function(){return W},getTotalHeight:function(){return $},getTotalWidth:function(){return K},hasParentWithClass:function(){return J},hide:function(){return ke},isAncestor:function(){return Q},isHTMLElement:function(){return le},isInDOM:function(){return w},isInShadowDOM:function(){return te},isShadowRoot:function(){return ee},removeCSSRulesContainingSelector:function(){return ue},reset:function(){return me},restoreParentsScrollTop:function(){return fe},runAtThisOrScheduleAtNextAnimationFrame:function(){return T},saveParentsScrollTop:function(){return he},scheduleAtNextAnimationFrame:function(){return I},show:function(){return Ce},size:function(){return V},trackFocus:function(){return ge},windowOpenNoOpener:function(){return Le}});var i=n(11752),r=n(61120),o=n(60136),a=n(43668),s=n(15671),u=n(43144),l=n(84539),c=n(61680),d=n(31737),h=n(55076),f=n(27997),p=n(8729),g=n(11732),v=n(81626),m=n(30487),_=n(55585),y=n(32721);function b(e){for(;e.firstChild;)e.firstChild.remove()}function w(e){var t;return null!==(t=null===e||void 0===e?void 0:e.isConnected)&&void 0!==t&&t}var C=function(){function e(t,n,i,r){(0,s.Z)(this,e),this._node=t,this._type=n,this._handler=i,this._options=r||!1,this._node.addEventListener(this._type,this._handler,this._options)}return(0,u.Z)(e,[{key:"dispose",value:function(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}}]),e}();function k(e,t,n,i){return new C(e,t,n,i)}function S(e){return function(t){return e(new h.n(t))}}var x=function(e,t,n,i){var r=n;return"click"===t||"mousedown"===t?r=S(n):"keydown"!==t&&"keypress"!==t&&"keyup"!==t||(r=function(e){return function(t){return e(new d.y(t))}}(n)),k(e,t,r,i)},L=function(e,t,n){return E(e,S(t),n)};function E(e,t,n){return k(e,m.gn&&y.D.pointerEvents?ce.POINTER_DOWN:ce.MOUSE_DOWN,t,n)}function D(e,t,n){return k(e,m.gn&&y.D.pointerEvents?ce.POINTER_UP:ce.MOUSE_UP,t,n)}function N(e,t){return k(e,"mouseout",(function(n){for(var i=n.relatedTarget;i&&i!==e;)i=i.parentNode;i!==e&&t(n)}))}function M(e,t){return k(e,"pointerout",(function(n){for(var i=n.relatedTarget;i&&i!==e;)i=i.parentNode;i!==e&&t(n)}))}var T,I,O=null;var A=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;(0,s.Z)(this,e),this._runner=t,this.priority=n,this._canceled=!1}return(0,u.Z)(e,[{key:"dispose",value:function(){this._canceled=!0}},{key:"execute",value:function(){if(!this._canceled)try{this._runner()}catch(e){(0,p.dL)(e)}}}],[{key:"sort",value:function(e,t){return t.priority-e.priority}}]),e}();!function(){var e=[],t=null,n=!1,i=!1,r=function(){for(n=!1,t=e,e=[],i=!0;t.length>0;){t.sort(A.sort),t.shift().execute()}i=!1};I=function(t){var i=new A(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0);return e.push(i),n||(n=!0,function(e){O||(O=self.requestAnimationFrame||self.msRequestAnimationFrame||self.webkitRequestAnimationFrame||self.mozRequestAnimationFrame||self.oRequestAnimationFrame||function(e){return setTimeout((function(){return e((new Date).getTime())}),0)});O.call(self,e)}(r)),i},T=function(e,n){if(i){var r=new A(e,n);return t.push(r),r}return I(e,n)}}();var R=8,P=function(e,t){return t},Z=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i,r){var o,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:P,u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:R;(0,s.Z)(this,n),o=t.call(this);var l=null,c=0,d=o._register(new f._F),h=function(){c=(new Date).getTime(),r(l),l=null};return o._register(k(e,i,(function(e){l=a(l,e);var t=(new Date).getTime()-c;t>=u?(d.cancel(),h()):d.setIfNotSet(h,u-t)}))),o}return(0,u.Z)(n)}(v.JT);function F(e,t,n,i,r){return new Z(e,t,n,i,r)}function j(e){return document.defaultView.getComputedStyle(e,null)}function H(e){if(e!==document.body)return new z(e.clientWidth,e.clientHeight);if(m.gn&&window.visualViewport){var t=window.visualViewport.width,n=window.visualViewport.height-(l.$W?24:0);return new z(t,n)}if(window.innerWidth&&window.innerHeight)return new z(window.innerWidth,window.innerHeight);if(document.body&&document.body.clientWidth&&document.body.clientHeight)return new z(document.body.clientWidth,document.body.clientHeight);if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientHeight)return new z(document.documentElement.clientWidth,document.documentElement.clientHeight);throw new Error("Unable to figure out browser width and height")}var B=function(){function e(){(0,s.Z)(this,e)}return(0,u.Z)(e,null,[{key:"convertToPixels",value:function(e,t){return parseFloat(t)||0}},{key:"getDimension",value:function(t,n,i){var r=j(t),o="0";return r&&(o=r.getPropertyValue?r.getPropertyValue(n):r.getAttribute(i)),e.convertToPixels(t,o)}},{key:"getBorderLeftWidth",value:function(t){return e.getDimension(t,"border-left-width","borderLeftWidth")}},{key:"getBorderRightWidth",value:function(t){return e.getDimension(t,"border-right-width","borderRightWidth")}},{key:"getBorderTopWidth",value:function(t){return e.getDimension(t,"border-top-width","borderTopWidth")}},{key:"getBorderBottomWidth",value:function(t){return e.getDimension(t,"border-bottom-width","borderBottomWidth")}},{key:"getPaddingLeft",value:function(t){return e.getDimension(t,"padding-left","paddingLeft")}},{key:"getPaddingRight",value:function(t){return e.getDimension(t,"padding-right","paddingRight")}},{key:"getPaddingTop",value:function(t){return e.getDimension(t,"padding-top","paddingTop")}},{key:"getPaddingBottom",value:function(t){return e.getDimension(t,"padding-bottom","paddingBottom")}},{key:"getMarginLeft",value:function(t){return e.getDimension(t,"margin-left","marginLeft")}},{key:"getMarginTop",value:function(t){return e.getDimension(t,"margin-top","marginTop")}},{key:"getMarginRight",value:function(t){return e.getDimension(t,"margin-right","marginRight")}},{key:"getMarginBottom",value:function(t){return e.getDimension(t,"margin-bottom","marginBottom")}}]),e}(),z=function(){function e(t,n){(0,s.Z)(this,e),this.width=t,this.height=n}return(0,u.Z)(e,[{key:"with",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.width,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.height;return t!==this.width||n!==this.height?new e(t,n):this}}],[{key:"is",value:function(e){return"object"===typeof e&&"number"===typeof e.height&&"number"===typeof e.width}},{key:"lift",value:function(t){return t instanceof e?t:new e(t.width,t.height)}},{key:"equals",value:function(e,t){return e===t||!(!e||!t)&&(e.width===t.width&&e.height===t.height)}}]),e}();function W(e){for(var t=e.offsetParent,n=e.offsetTop,i=e.offsetLeft;null!==(e=e.parentNode)&&e!==document.body&&e!==document.documentElement;){n-=e.scrollTop;var r=ee(e)?null:j(e);r&&(i-="rtl"!==r.direction?e.scrollLeft:-e.scrollLeft),e===t&&(i+=B.getBorderLeftWidth(e),n+=B.getBorderTopWidth(e),n+=e.offsetTop,i+=e.offsetLeft,t=e.offsetParent)}return{left:i,top:n}}function V(e,t,n){"number"===typeof t&&(e.style.width="".concat(t,"px")),"number"===typeof n&&(e.style.height="".concat(n,"px"))}function Y(e){var t=e.getBoundingClientRect();return{left:t.left+U.scrollX,top:t.top+U.scrollY,width:t.width,height:t.height}}var U=new(function(){function e(){(0,s.Z)(this,e)}return(0,u.Z)(e,[{key:"scrollX",get:function(){return"number"===typeof window.scrollX?window.scrollX:document.body.scrollLeft+document.documentElement.scrollLeft}},{key:"scrollY",get:function(){return"number"===typeof window.scrollY?window.scrollY:document.body.scrollTop+document.documentElement.scrollTop}}]),e}());function K(e){var t=B.getMarginLeft(e)+B.getMarginRight(e);return e.offsetWidth+t}function q(e){var t=B.getBorderLeftWidth(e)+B.getBorderRightWidth(e),n=B.getPaddingLeft(e)+B.getPaddingRight(e);return e.offsetWidth-t-n}function G(e){var t=B.getBorderTopWidth(e)+B.getBorderBottomWidth(e),n=B.getPaddingTop(e)+B.getPaddingBottom(e);return e.offsetHeight-t-n}function $(e){var t=B.getMarginTop(e)+B.getMarginBottom(e);return e.offsetHeight+t}function Q(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function X(e,t,n){for(;e&&e.nodeType===e.ELEMENT_NODE;){if(e.classList.contains(t))return e;if(n)if("string"===typeof n){if(e.classList.contains(n))return null}else if(e===n)return null;e=e.parentNode}return null}function J(e,t,n){return!!X(e,t,n)}function ee(e){return e&&!!e.host&&!!e.mode}function te(e){return!!ne(e)}function ne(e){for(;e.parentNode;){if(e===document.body)return null;e=e.parentNode}return ee(e)?e:null}function ie(){for(var e=document.activeElement;null===e||void 0===e?void 0:e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function re(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.getElementsByTagName("head")[0],t=document.createElement("style");return t.type="text/css",t.media="screen",e.appendChild(t),t}var oe=null;function ae(){return oe||(oe=re()),oe}function se(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ae();n&&t&&n.sheet.insertRule(e+"{"+t+"}",0)}function ue(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ae();if(t){for(var n=function(e){var t,n;return(null===(t=null===e||void 0===e?void 0:e.sheet)||void 0===t?void 0:t.rules)?e.sheet.rules:(null===(n=null===e||void 0===e?void 0:e.sheet)||void 0===n?void 0:n.cssRules)?e.sheet.cssRules:[]}(t),i=[],r=0;r<n.length;r++){-1!==n[r].selectorText.indexOf(e)&&i.push(r)}for(var o=i.length-1;o>=0;o--)t.sheet.deleteRule(i[o])}}function le(e){return"object"===typeof HTMLElement?e instanceof HTMLElement:e&&"object"===typeof e&&1===e.nodeType&&"string"===typeof e.nodeName}var ce={CLICK:"click",AUXCLICK:"auxclick",DBLCLICK:"dblclick",MOUSE_UP:"mouseup",MOUSE_DOWN:"mousedown",MOUSE_OVER:"mouseover",MOUSE_MOVE:"mousemove",MOUSE_OUT:"mouseout",MOUSE_ENTER:"mouseenter",MOUSE_LEAVE:"mouseleave",MOUSE_WHEEL:"wheel",POINTER_UP:"pointerup",POINTER_DOWN:"pointerdown",POINTER_MOVE:"pointermove",CONTEXT_MENU:"contextmenu",WHEEL:"wheel",KEY_DOWN:"keydown",KEY_PRESS:"keypress",KEY_UP:"keyup",LOAD:"load",BEFORE_UNLOAD:"beforeunload",UNLOAD:"unload",ABORT:"abort",ERROR:"error",RESIZE:"resize",SCROLL:"scroll",FULLSCREEN_CHANGE:"fullscreenchange",WK_FULLSCREEN_CHANGE:"webkitfullscreenchange",SELECT:"select",CHANGE:"change",SUBMIT:"submit",RESET:"reset",FOCUS:"focus",FOCUS_IN:"focusin",FOCUS_OUT:"focusout",BLUR:"blur",INPUT:"input",STORAGE:"storage",DRAG_START:"dragstart",DRAG:"drag",DRAG_ENTER:"dragenter",DRAG_LEAVE:"dragleave",DRAG_OVER:"dragover",DROP:"drop",DRAG_END:"dragend",ANIMATION_START:l.Pf?"webkitAnimationStart":"animationstart",ANIMATION_END:l.Pf?"webkitAnimationEnd":"animationend",ANIMATION_ITERATION:l.Pf?"webkitAnimationIteration":"animationiteration"},de={stop:function(e,t){e.preventDefault?e.preventDefault():e.returnValue=!1,t&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)}};function he(e){for(var t=[],n=0;e&&e.nodeType===e.ELEMENT_NODE;n++)t[n]=e.scrollTop,e=e.parentNode;return t}function fe(e,t){for(var n=0;e&&e.nodeType===e.ELEMENT_NODE;n++)e.scrollTop!==t[n]&&(e.scrollTop=t[n]),e=e.parentNode}var pe=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e){var i;(0,s.Z)(this,n),(i=t.call(this))._onDidFocus=i._register(new g.Q5),i.onDidFocus=i._onDidFocus.event,i._onDidBlur=i._register(new g.Q5),i.onDidBlur=i._onDidBlur.event;var r=Q(document.activeElement,e),o=!1,a=function(){o=!1,r||(r=!0,i._onDidFocus.fire())},u=function(){r&&(o=!0,window.setTimeout((function(){o&&(o=!1,r=!1,i._onDidBlur.fire())}),0))};return i._refreshStateHandler=function(){Q(document.activeElement,e)!==r&&(r?u():a())},i._register((0,c.jt)(e,ce.FOCUS,!0)(a)),i._register((0,c.jt)(e,ce.BLUR,!0)(u)),i}return(0,u.Z)(n)}(v.JT);function ge(e){return new pe(e)}function ve(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];if(e.append.apply(e,n),1===n.length&&"string"!==typeof n[0])return n[0]}function me(e){e.innerText="";for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];ve.apply(void 0,[e].concat(n))}var _e,ye=/([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;function be(e,t,n){var i,r=ye.exec(t);if(!r)throw new Error("Bad use of emmet");n=Object.assign({},n||{});var o,a=r[1]||"div";o=e!==_e.HTML?document.createElementNS(e,a):document.createElement(a),r[3]&&(o.id=r[3]),r[4]&&(o.className=r[4].replace(/\./g," ").trim()),Object.keys(n).forEach((function(e){var t=n[e];"undefined"!==typeof t&&(/^on\w+$/.test(e)?o[e]=t:"selected"===e?t&&o.setAttribute(e,"true"):o.setAttribute(e,t))}));for(var s=arguments.length,u=new Array(s>3?s-3:0),l=3;l<s;l++)u[l-3]=arguments[l];return(i=o).append.apply(i,u),o}function we(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];return be.apply(void 0,[_e.HTML,e,t].concat(i))}function Ce(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++){var o=r[i];o.style.display="",o.removeAttribute("aria-hidden")}}function ke(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++){var o=r[i];o.style.display="none",o.setAttribute("aria-hidden","true")}}function Se(e){return Array.prototype.slice.call(document.getElementsByTagName(e),0)}function xe(e){var t=window.devicePixelRatio*e;return Math.max(1,Math.floor(t))/window.devicePixelRatio}function Le(e){window.open(e,"_blank","noopener")}function Ee(e){var t=I((function n(){e(),t=I(n)}));return(0,v.OF)((function(){return t.dispose()}))}function De(e){return e?"url('".concat(_.Gi.asBrowserUri(e).toString(!0).replace(/'/g,"%27"),"')"):"url('')"}function Ne(e){return"'".concat(e.replace(/'/g,"%27"),"'")}!function(e){e.HTML="http://www.w3.org/1999/xhtml",e.SVG="http://www.w3.org/2000/svg"}(_e||(_e={})),we.SVG=function(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];return be.apply(void 0,[_e.SVG,e,t].concat(i))},_.WX.setPreferredWebSchema(/^https:/.test(window.location.href)?"https":"http");var Me=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(){var e;return(0,s.Z)(this,n),(e=t.call(this))._subscriptions=new v.SL,e._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1},e._subscriptions.add((0,c.jt)(window,"keydown",!0)((function(t){var n=new d.y(t);if(6!==n.keyCode||!t.repeat){if(t.altKey&&!e._keyStatus.altKey)e._keyStatus.lastKeyPressed="alt";else if(t.ctrlKey&&!e._keyStatus.ctrlKey)e._keyStatus.lastKeyPressed="ctrl";else if(t.metaKey&&!e._keyStatus.metaKey)e._keyStatus.lastKeyPressed="meta";else if(t.shiftKey&&!e._keyStatus.shiftKey)e._keyStatus.lastKeyPressed="shift";else{if(6===n.keyCode)return;e._keyStatus.lastKeyPressed=void 0}e._keyStatus.altKey=t.altKey,e._keyStatus.ctrlKey=t.ctrlKey,e._keyStatus.metaKey=t.metaKey,e._keyStatus.shiftKey=t.shiftKey,e._keyStatus.lastKeyPressed&&(e._keyStatus.event=t,e.fire(e._keyStatus))}}))),e._subscriptions.add((0,c.jt)(window,"keyup",!0)((function(t){!t.altKey&&e._keyStatus.altKey?e._keyStatus.lastKeyReleased="alt":!t.ctrlKey&&e._keyStatus.ctrlKey?e._keyStatus.lastKeyReleased="ctrl":!t.metaKey&&e._keyStatus.metaKey?e._keyStatus.lastKeyReleased="meta":!t.shiftKey&&e._keyStatus.shiftKey?e._keyStatus.lastKeyReleased="shift":e._keyStatus.lastKeyReleased=void 0,e._keyStatus.lastKeyPressed!==e._keyStatus.lastKeyReleased&&(e._keyStatus.lastKeyPressed=void 0),e._keyStatus.altKey=t.altKey,e._keyStatus.ctrlKey=t.ctrlKey,e._keyStatus.metaKey=t.metaKey,e._keyStatus.shiftKey=t.shiftKey,e._keyStatus.lastKeyReleased&&(e._keyStatus.event=t,e.fire(e._keyStatus))}))),e._subscriptions.add((0,c.jt)(document.body,"mousedown",!0)((function(t){e._keyStatus.lastKeyPressed=void 0}))),e._subscriptions.add((0,c.jt)(document.body,"mouseup",!0)((function(t){e._keyStatus.lastKeyPressed=void 0}))),e._subscriptions.add((0,c.jt)(document.body,"mousemove",!0)((function(t){t.buttons&&(e._keyStatus.lastKeyPressed=void 0)}))),e._subscriptions.add((0,c.jt)(window,"blur")((function(t){e.resetKeyStatus()}))),e}return(0,u.Z)(n,[{key:"keyStatus",get:function(){return this._keyStatus}},{key:"resetKeyStatus",value:function(){this.doResetKeyStatus(),this.fire(this._keyStatus)}},{key:"doResetKeyStatus",value:function(){this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1}}},{key:"dispose",value:function(){(0,i.Z)((0,r.Z)(n.prototype),"dispose",this).call(this),this._subscriptions.dispose()}}],[{key:"getInstance",value:function(){return n.instance||(n.instance=new n),n.instance}}]),n}(g.Q5);function Te(e,t){var n=window.matchMedia(e);"function"===typeof n.addEventListener?n.addEventListener("change",t):n.addListener(t)}},61680:function(e,t,n){"use strict";n.d(t,{jt:function(){return r},p7:function(){return o},sT:function(){return a}});var i=n(11732),r=function(e,t,n){var r=function(e){return o.fire(e)},o=new i.Q5({onFirstListenerAdd:function(){e.addEventListener(t,r,n)},onLastListenerRemove:function(){e.removeEventListener(t,r,n)}});return o.event};function o(e){return e.preventDefault(),e.stopPropagation(),e}function a(e){return i.ju.map(e,o)}},41149:function(e,t,n){"use strict";n.d(t,{X:function(){return a},Z:function(){return o}});var i=n(15671),r=n(43144),o=function(){function e(t){(0,i.Z)(this,e),this.domNode=t,this._maxWidth=-1,this._width=-1,this._height=-1,this._top=-1,this._left=-1,this._bottom=-1,this._right=-1,this._fontFamily="",this._fontWeight="",this._fontSize=-1,this._fontFeatureSettings="",this._lineHeight=-1,this._letterSpacing=-100,this._className="",this._display="",this._position="",this._visibility="",this._backgroundColor="",this._layerHint=!1,this._contain="none",this._boxShadow=""}return(0,r.Z)(e,[{key:"setMaxWidth",value:function(e){this._maxWidth!==e&&(this._maxWidth=e,this.domNode.style.maxWidth=this._maxWidth+"px")}},{key:"setWidth",value:function(e){this._width!==e&&(this._width=e,this.domNode.style.width=this._width+"px")}},{key:"setHeight",value:function(e){this._height!==e&&(this._height=e,this.domNode.style.height=this._height+"px")}},{key:"setTop",value:function(e){this._top!==e&&(this._top=e,this.domNode.style.top=this._top+"px")}},{key:"unsetTop",value:function(){-1!==this._top&&(this._top=-1,this.domNode.style.top="")}},{key:"setLeft",value:function(e){this._left!==e&&(this._left=e,this.domNode.style.left=this._left+"px")}},{key:"setBottom",value:function(e){this._bottom!==e&&(this._bottom=e,this.domNode.style.bottom=this._bottom+"px")}},{key:"setRight",value:function(e){this._right!==e&&(this._right=e,this.domNode.style.right=this._right+"px")}},{key:"setFontFamily",value:function(e){this._fontFamily!==e&&(this._fontFamily=e,this.domNode.style.fontFamily=this._fontFamily)}},{key:"setFontWeight",value:function(e){this._fontWeight!==e&&(this._fontWeight=e,this.domNode.style.fontWeight=this._fontWeight)}},{key:"setFontSize",value:function(e){this._fontSize!==e&&(this._fontSize=e,this.domNode.style.fontSize=this._fontSize+"px")}},{key:"setFontFeatureSettings",value:function(e){this._fontFeatureSettings!==e&&(this._fontFeatureSettings=e,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}},{key:"setLineHeight",value:function(e){this._lineHeight!==e&&(this._lineHeight=e,this.domNode.style.lineHeight=this._lineHeight+"px")}},{key:"setLetterSpacing",value:function(e){this._letterSpacing!==e&&(this._letterSpacing=e,this.domNode.style.letterSpacing=this._letterSpacing+"px")}},{key:"setClassName",value:function(e){this._className!==e&&(this._className=e,this.domNode.className=this._className)}},{key:"toggleClassName",value:function(e,t){this.domNode.classList.toggle(e,t),this._className=this.domNode.className}},{key:"setDisplay",value:function(e){this._display!==e&&(this._display=e,this.domNode.style.display=this._display)}},{key:"setPosition",value:function(e){this._position!==e&&(this._position=e,this.domNode.style.position=this._position)}},{key:"setVisibility",value:function(e){this._visibility!==e&&(this._visibility=e,this.domNode.style.visibility=this._visibility)}},{key:"setBackgroundColor",value:function(e){this._backgroundColor!==e&&(this._backgroundColor=e,this.domNode.style.backgroundColor=this._backgroundColor)}},{key:"setLayerHinting",value:function(e){this._layerHint!==e&&(this._layerHint=e,this.domNode.style.transform=this._layerHint?"translate3d(0px, 0px, 0px)":"")}},{key:"setBoxShadow",value:function(e){this._boxShadow!==e&&(this._boxShadow=e,this.domNode.style.boxShadow=e)}},{key:"setContain",value:function(e){this._contain!==e&&(this._contain=e,this.domNode.style.contain=this._contain)}},{key:"setAttribute",value:function(e,t){this.domNode.setAttribute(e,t)}},{key:"removeAttribute",value:function(e){this.domNode.removeAttribute(e)}},{key:"appendChild",value:function(e){this.domNode.appendChild(e.domNode)}},{key:"removeChild",value:function(e){this.domNode.removeChild(e.domNode)}}]),e}();function a(e){return new o(e)}},83935:function(e,t,n){"use strict";n.d(t,{BO:function(){return s},IY:function(){return a},az:function(){return u}});var i=n(15671),r=n(43144),o=n(84540);function a(e){var t=u(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});return t.textContent=e,t}function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=u(t);return c(n,function(e,t){var n={type:1,children:[]},i=0,r=n,o=[],a=new l(e);for(;!a.eos();){var s=a.next(),u="\\"===s&&0!==h(a.peek(),t);if(u&&(s=a.next()),!u&&d(s,t)&&s===a.peek()){a.advance(),2===r.type&&(r=o.pop());var c=h(s,t);if(r.type===c||5===r.type&&6===c)r=o.pop();else{var f={type:c,children:[]};5===c&&(f.index=i,i++),r.children.push(f),o.push(r),r=f}}else if("\n"===s)2===r.type&&(r=o.pop()),r.children.push({type:8});else if(2!==r.type){var p={type:2,content:s};r.children.push(p),o.push(r),r=p}else r.content+=s}2===r.type&&(r=o.pop());o.length;return n}(e,!!t.renderCodeSegements),t.actionHandler,t.renderCodeSegements),n}function u(e){var t=e.inline?"span":"div",n=document.createElement(t);return e.className&&(n.className=e.className),n}var l=function(){function e(t){(0,i.Z)(this,e),this.source=t,this.index=0}return(0,r.Z)(e,[{key:"eos",value:function(){return this.index>=this.source.length}},{key:"next",value:function(){var e=this.peek();return this.advance(),e}},{key:"peek",value:function(){return this.source[this.index]}},{key:"advance",value:function(){this.index++}}]),e}();function c(e,t,n,i){var r;if(2===t.type)r=document.createTextNode(t.content||"");else if(3===t.type)r=document.createElement("b");else if(4===t.type)r=document.createElement("i");else if(7===t.type&&i)r=document.createElement("code");else if(5===t.type&&n){var a=document.createElement("a");a.href="#",n.disposeables.add(o.addStandardDisposableListener(a,"click",(function(e){n.callback(String(t.index),e)}))),r=a}else 8===t.type?r=document.createElement("br"):1===t.type&&(r=e);r&&e!==r&&e.appendChild(r),r&&Array.isArray(t.children)&&t.children.forEach((function(e){c(r,e,n,i)}))}function d(e,t){return 0!==h(e,t)}function h(e,t){switch(e){case"*":return 3;case"_":return 4;case"[":return 5;case"]":return 6;case"`":return t?7:0;default:return 0}}},78101:function(e,t,n){"use strict";n.d(t,{Z:function(){return d},e:function(){return c}});var i=n(37762),r=n(15671),o=n(43144),a=n(84540),s=n(83581),u=n(55076),l=n(81626);function c(e,t){var n=new u.n(t);return n.preventDefault(),{leftButton:n.leftButton,buttons:n.buttons,posx:n.posx,posy:n.posy}}var d=function(){function e(){(0,r.Z)(this,e),this._hooks=new l.SL,this._mouseMoveEventMerger=null,this._mouseMoveCallback=null,this._onStopCallback=null}return(0,o.Z)(e,[{key:"dispose",value:function(){this.stopMonitoring(!1),this._hooks.dispose()}},{key:"stopMonitoring",value:function(e,t){if(this.isMonitoring()){this._hooks.clear(),this._mouseMoveEventMerger=null,this._mouseMoveCallback=null;var n=this._onStopCallback;this._onStopCallback=null,e&&n&&n(t)}}},{key:"isMonitoring",value:function(){return!!this._mouseMoveEventMerger}},{key:"startMonitoring",value:function(e,t,n,r,o){var l=this;if(!this.isMonitoring()){this._mouseMoveEventMerger=n,this._mouseMoveCallback=r,this._onStopCallback=o;var c=s.E.getSameOriginWindowChain(),d=c.map((function(e){return e.window.document})),h=a.getShadowRoot(e);h&&d.unshift(h);var f,p=(0,i.Z)(d);try{for(p.s();!(f=p.n()).done;){var g=f.value;this._hooks.add(a.addDisposableThrottledListener(g,"mousemove",(function(e){e.buttons===t?l._mouseMoveCallback(e):l.stopMonitoring(!0)}),(function(e,t){return l._mouseMoveEventMerger(e,t)}))),this._hooks.add(a.addDisposableListener(g,"mouseup",(function(e){return l.stopMonitoring(!0)})))}}catch(m){p.e(m)}finally{p.f()}if(s.E.hasDifferentOriginAncestor()){var v=c[c.length-1];this._hooks.add(a.addDisposableListener(v.window.document,"mouseout",(function(e){"html"===new u.n(e).target.tagName.toLowerCase()&&l.stopMonitoring(!0)}))),this._hooks.add(a.addDisposableListener(v.window.document,"mouseover",(function(e){"html"===new u.n(e).target.tagName.toLowerCase()&&l.stopMonitoring(!0)}))),this._hooks.add(a.addDisposableListener(v.window.document.body,"mouseleave",(function(e){l.stopMonitoring(!0)})))}}}}]),e}()},83581:function(e,t,n){"use strict";n.d(t,{E:function(){return l}});var i=n(37762),r=n(15671),o=n(43144),a=!1,s=null;function u(e){if(!e.parent||e.parent===e)return null;try{var t=e.location,n=e.parent.location;if("null"!==t.origin&&"null"!==n.origin&&(t.protocol!==n.protocol||t.hostname!==n.hostname||t.port!==n.port))return a=!0,null}catch(i){return a=!0,null}return e.parent}var l=function(){function e(){(0,r.Z)(this,e)}return(0,o.Z)(e,null,[{key:"getSameOriginWindowChain",value:function(){if(!s){s=[];var e,t=window;do{(e=u(t))?s.push({window:t,iframeElement:t.frameElement||null}):s.push({window:t,iframeElement:null}),t=e}while(t)}return s.slice(0)}},{key:"hasDifferentOriginAncestor",value:function(){return s||this.getSameOriginWindowChain(),a}},{key:"getPositionOfChildWindowRelativeToAncestorWindow",value:function(e,t){if(!t||e===t)return{top:0,left:0};var n,r=0,o=0,a=this.getSameOriginWindowChain(),s=(0,i.Z)(a);try{for(s.s();!(n=s.n()).done;){var u=n.value;if(r+=u.window.scrollY,o+=u.window.scrollX,u.window===t)break;if(!u.iframeElement)break;var l=u.iframeElement.getBoundingClientRect();r+=l.top,o+=l.left}}catch(c){s.e(c)}finally{s.f()}return{top:r,left:o}}}]),e}()},31737:function(e,t,n){"use strict";n.d(t,{y:function(){return h}});var i=n(15671),r=n(43144),o=n(84539),a=n(38792),s=n(30487),u=new Array(230),l=new Array(112);!function(){for(var e=0;e<l.length;e++)l[e]=-1;function t(e,t){u[e]=t,l[t]=e}t(3,7),t(8,1),t(9,2),t(13,3),t(16,4),t(17,5),t(18,6),t(19,7),t(20,8),t(27,9),t(32,10),t(33,11),t(34,12),t(35,13),t(36,14),t(37,15),t(38,16),t(39,17),t(40,18),t(45,19),t(46,20),t(48,21),t(49,22),t(50,23),t(51,24),t(52,25),t(53,26),t(54,27),t(55,28),t(56,29),t(57,30),t(65,31),t(66,32),t(67,33),t(68,34),t(69,35),t(70,36),t(71,37),t(72,38),t(73,39),t(74,40),t(75,41),t(76,42),t(77,43),t(78,44),t(79,45),t(80,46),t(81,47),t(82,48),t(83,49),t(84,50),t(85,51),t(86,52),t(87,53),t(88,54),t(89,55),t(90,56),t(93,58),t(96,93),t(97,94),t(98,95),t(99,96),t(100,97),t(101,98),t(102,99),t(103,100),t(104,101),t(105,102),t(106,103),t(107,104),t(108,105),t(109,106),t(110,107),t(111,108),t(112,59),t(113,60),t(114,61),t(115,62),t(116,63),t(117,64),t(118,65),t(119,66),t(120,67),t(121,68),t(122,69),t(123,70),t(124,71),t(125,72),t(126,73),t(127,74),t(128,75),t(129,76),t(130,77),t(144,78),t(145,79),t(186,80),t(187,81),t(188,82),t(189,83),t(190,84),t(191,85),t(192,86),t(193,110),t(194,111),t(219,87),t(220,88),t(221,89),t(222,90),t(223,91),t(226,92),t(229,109),o.vU?(t(59,80),t(107,81),t(109,83),s.dz&&t(224,57)):o.Pf&&(t(91,57),s.dz?t(93,57):t(92,57))}();var c=s.dz?256:2048,d=s.dz?2048:256,h=function(){function e(t){(0,i.Z)(this,e),this._standardKeyboardEventBrand=!0;var n=t;this.browserEvent=n,this.target=n.target,this.ctrlKey=n.ctrlKey,this.shiftKey=n.shiftKey,this.altKey=n.altKey,this.metaKey=n.metaKey,this.keyCode=function(e){if(e.charCode){var t=String.fromCharCode(e.charCode).toUpperCase();return a.kL.fromString(t)}return u[e.keyCode]||0}(n),this.code=n.code,this.ctrlKey=this.ctrlKey||5===this.keyCode,this.altKey=this.altKey||6===this.keyCode,this.shiftKey=this.shiftKey||4===this.keyCode,this.metaKey=this.metaKey||57===this.keyCode,this._asKeybinding=this._computeKeybinding(),this._asRuntimeKeybinding=this._computeRuntimeKeybinding()}return(0,r.Z)(e,[{key:"preventDefault",value:function(){this.browserEvent&&this.browserEvent.preventDefault&&this.browserEvent.preventDefault()}},{key:"stopPropagation",value:function(){this.browserEvent&&this.browserEvent.stopPropagation&&this.browserEvent.stopPropagation()}},{key:"toKeybinding",value:function(){return this._asRuntimeKeybinding}},{key:"equals",value:function(e){return this._asKeybinding===e}},{key:"_computeKeybinding",value:function(){var e=0;5!==this.keyCode&&4!==this.keyCode&&6!==this.keyCode&&57!==this.keyCode&&(e=this.keyCode);var t=0;return this.ctrlKey&&(t|=c),this.altKey&&(t|=512),this.shiftKey&&(t|=1024),this.metaKey&&(t|=d),t|=e}},{key:"_computeRuntimeKeybinding",value:function(){var e=0;return 5!==this.keyCode&&4!==this.keyCode&&6!==this.keyCode&&57!==this.keyCode&&(e=this.keyCode),new a.QC(this.ctrlKey,this.shiftKey,this.altKey,this.metaKey,e)}}]),e}()},55076:function(e,t,n){"use strict";n.d(t,{n:function(){return u},q:function(){return l}});var i=n(15671),r=n(43144),o=n(84539),a=n(83581),s=n(30487),u=function(){function e(t){(0,i.Z)(this,e),this.timestamp=Date.now(),this.browserEvent=t,this.leftButton=0===t.button,this.middleButton=1===t.button,this.rightButton=2===t.button,this.buttons=t.buttons,this.target=t.target,this.detail=t.detail||1,"dblclick"===t.type&&(this.detail=2),this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,"number"===typeof t.pageX?(this.posx=t.pageX,this.posy=t.pageY):(this.posx=t.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,this.posy=t.clientY+document.body.scrollTop+document.documentElement.scrollTop);var n=a.E.getPositionOfChildWindowRelativeToAncestorWindow(self,t.view);this.posx-=n.left,this.posy-=n.top}return(0,r.Z)(e,[{key:"preventDefault",value:function(){this.browserEvent.preventDefault()}},{key:"stopPropagation",value:function(){this.browserEvent.stopPropagation()}}]),e}(),l=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if((0,i.Z)(this,e),this.browserEvent=t||null,this.target=t?t.target||t.targetNode||t.srcElement:null,this.deltaY=r,this.deltaX=n,t){var a=t,u=t;if("undefined"!==typeof a.wheelDeltaY)this.deltaY=a.wheelDeltaY/120;else if("undefined"!==typeof u.VERTICAL_AXIS&&u.axis===u.VERTICAL_AXIS)this.deltaY=-u.detail/3;else if("wheel"===t.type){var l=t;l.deltaMode===l.DOM_DELTA_LINE?o.vU&&!s.dz?this.deltaY=-t.deltaY/3:this.deltaY=-t.deltaY:this.deltaY=-t.deltaY/40}if("undefined"!==typeof a.wheelDeltaX)o.G6&&s.ED?this.deltaX=-a.wheelDeltaX/120:this.deltaX=a.wheelDeltaX/120;else if("undefined"!==typeof u.HORIZONTAL_AXIS&&u.axis===u.HORIZONTAL_AXIS)this.deltaX=-t.detail/3;else if("wheel"===t.type){var c=t;c.deltaMode===c.DOM_DELTA_LINE?o.vU&&!s.dz?this.deltaX=-t.deltaX/3:this.deltaX=-t.deltaX:this.deltaX=-t.deltaX/40}0===this.deltaY&&0===this.deltaX&&t.wheelDelta&&(this.deltaY=t.wheelDelta/120)}}return(0,r.Z)(e,[{key:"preventDefault",value:function(){this.browserEvent&&this.browserEvent.preventDefault()}},{key:"stopPropagation",value:function(){this.browserEvent&&this.browserEvent.stopPropagation()}}]),e}()},25044:function(e,t,n){"use strict";n.d(t,{o:function(){return g},t:function(){return i}});var i,r=n(15671),o=n(43144),a=n(11752),s=n(61120),u=n(60136),l=n(43668),c=n(49396),d=n(81626),h=n(84540),f=n(94995),p=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a};!function(e){e.Tap="-monaco-gesturetap",e.Change="-monaco-gesturechange",e.Start="-monaco-gesturestart",e.End="-monaco-gesturesend",e.Contextmenu="-monaco-gesturecontextmenu"}(i||(i={}));var g=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){var e;return(0,r.Z)(this,n),(e=t.call(this)).dispatched=!1,e.activeTouches={},e.handle=null,e.targets=[],e.ignoreTargets=[],e._lastSetTapCountTime=0,e._register(h.addDisposableListener(document,"touchstart",(function(t){return e.onTouchStart(t)}),{passive:!1})),e._register(h.addDisposableListener(document,"touchend",(function(t){return e.onTouchEnd(t)}))),e._register(h.addDisposableListener(document,"touchmove",(function(t){return e.onTouchMove(t)}),{passive:!1})),e}return(0,o.Z)(n,[{key:"dispose",value:function(){this.handle&&(this.handle.dispose(),this.handle=null),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"onTouchStart",value:function(e){var t=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(var n=0,r=e.targetTouches.length;n<r;n++){var o=e.targetTouches.item(n);this.activeTouches[o.identifier]={id:o.identifier,initialTarget:o.target,initialTimeStamp:t,initialPageX:o.pageX,initialPageY:o.pageY,rollingTimestamps:[t],rollingPageX:[o.pageX],rollingPageY:[o.pageY]};var a=this.newGestureEvent(i.Start,o.target);a.pageX=o.pageX,a.pageY=o.pageY,this.dispatchEvent(a)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}},{key:"onTouchEnd",value:function(e){for(var t=this,r=Date.now(),o=Object.keys(this.activeTouches).length,a=function(){var a=e.changedTouches.item(s);if(!t.activeTouches.hasOwnProperty(String(a.identifier)))return console.warn("move of an UNKNOWN touch",a),"continue";var u=t.activeTouches[a.identifier],l=Date.now()-u.initialTimeStamp;if(l<n.HOLD_DELAY&&Math.abs(u.initialPageX-c.Gb(u.rollingPageX))<30&&Math.abs(u.initialPageY-c.Gb(u.rollingPageY))<30){var d=t.newGestureEvent(i.Tap,u.initialTarget);d.pageX=c.Gb(u.rollingPageX),d.pageY=c.Gb(u.rollingPageY),t.dispatchEvent(d)}else if(l>=n.HOLD_DELAY&&Math.abs(u.initialPageX-c.Gb(u.rollingPageX))<30&&Math.abs(u.initialPageY-c.Gb(u.rollingPageY))<30){var h=t.newGestureEvent(i.Contextmenu,u.initialTarget);h.pageX=c.Gb(u.rollingPageX),h.pageY=c.Gb(u.rollingPageY),t.dispatchEvent(h)}else if(1===o){var f=c.Gb(u.rollingPageX),p=c.Gb(u.rollingPageY),g=c.Gb(u.rollingTimestamps)-u.rollingTimestamps[0],v=f-u.rollingPageX[0],m=p-u.rollingPageY[0],_=t.targets.filter((function(e){return u.initialTarget instanceof Node&&e.contains(u.initialTarget)}));t.inertia(_,r,Math.abs(v)/g,v>0?1:-1,f,Math.abs(m)/g,m>0?1:-1,p)}t.dispatchEvent(t.newGestureEvent(i.End,u.initialTarget)),delete t.activeTouches[a.identifier]},s=0,u=e.changedTouches.length;s<u;s++)a();this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}},{key:"newGestureEvent",value:function(e,t){var n=document.createEvent("CustomEvent");return n.initEvent(e,!1,!0),n.initialTarget=t,n.tapCount=0,n}},{key:"dispatchEvent",value:function(e){var t=this;if(e.type===i.Tap){var r=(new Date).getTime(),o=0;o=r-this._lastSetTapCountTime>n.CLEAR_TAP_COUNT_TIME?1:2,this._lastSetTapCountTime=r,e.tapCount=o}else e.type!==i.Change&&e.type!==i.Contextmenu||(this._lastSetTapCountTime=0);for(var a=0;a<this.ignoreTargets.length;a++)if(e.initialTarget instanceof Node&&this.ignoreTargets[a].contains(e.initialTarget))return;this.targets.forEach((function(n){e.initialTarget instanceof Node&&n.contains(e.initialTarget)&&(n.dispatchEvent(e),t.dispatched=!0)}))}},{key:"inertia",value:function(e,t,r,o,a,s,u,l){var c=this;this.handle=h.scheduleAtNextAnimationFrame((function(){var d=Date.now(),h=d-t,f=0,p=0,g=!0;r+=n.SCROLL_FRICTION*h,s+=n.SCROLL_FRICTION*h,r>0&&(g=!1,f=o*r*h),s>0&&(g=!1,p=u*s*h);var v=c.newGestureEvent(i.Change);v.translationX=f,v.translationY=p,e.forEach((function(e){return e.dispatchEvent(v)})),g||c.inertia(e,d,r,o,a+f,s,u,l+p)}))}},{key:"onTouchMove",value:function(e){for(var t=Date.now(),n=0,r=e.changedTouches.length;n<r;n++){var o=e.changedTouches.item(n);if(this.activeTouches.hasOwnProperty(String(o.identifier))){var a=this.activeTouches[o.identifier],s=this.newGestureEvent(i.Change,a.initialTarget);s.translationX=o.pageX-c.Gb(a.rollingPageX),s.translationY=o.pageY-c.Gb(a.rollingPageY),s.pageX=o.pageX,s.pageY=o.pageY,this.dispatchEvent(s),a.rollingPageX.length>3&&(a.rollingPageX.shift(),a.rollingPageY.shift(),a.rollingTimestamps.shift()),a.rollingPageX.push(o.pageX),a.rollingPageY.push(o.pageY),a.rollingTimestamps.push(t)}else console.warn("end of an UNKNOWN touch",o)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}}],[{key:"addTarget",value:function(e){return n.isTouchDevice()?(n.INSTANCE||(n.INSTANCE=new n),n.INSTANCE.targets.push(e),{dispose:function(){n.INSTANCE.targets=n.INSTANCE.targets.filter((function(t){return t!==e}))}}):d.JT.None}},{key:"ignoreTarget",value:function(e){return n.isTouchDevice()?(n.INSTANCE||(n.INSTANCE=new n),n.INSTANCE.ignoreTargets.push(e),{dispose:function(){n.INSTANCE.ignoreTargets=n.INSTANCE.ignoreTargets.filter((function(t){return t!==e}))}}):d.JT.None}},{key:"isTouchDevice",value:function(){return"ontouchstart"in window||navigator.maxTouchPoints>0||window.navigator.msMaxTouchPoints>0}}]),n}(d.JT);g.SCROLL_FRICTION=-.005,g.HOLD_DELAY=700,g.CLEAR_TAP_COUNT_TIME=400,p([f.H],g,"isTouchDevice",null)},84039:function(e,t,n){"use strict";n.d(t,{Y:function(){return b},g:function(){return w}});var i=n(93433),r=n(15671),o=n(43144),a=n(97326),s=n(11752),u=n(61120),l=n(60136),c=n(43668),d=(n(26116),n(30487)),h=n(56345),f=n(81626),p=n(29077),g=n(25941),v=n(25044),m=n(53042),_=n(84539),y=n(84540),b=function(e){(0,l.Z)(n,e);var t=(0,c.Z)(n);function n(e,i){var o,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return(0,r.Z)(this,n),(o=t.call(this)).options=s,o._context=e||(0,a.Z)(o),o._action=i,i instanceof p.aU&&o._register(i.onDidChange((function(e){o.element&&o.handleActionChangeEvent(e)}))),o}return(0,o.Z)(n,[{key:"handleActionChangeEvent",value:function(e){void 0!==e.enabled&&this.updateEnabled(),void 0!==e.checked&&this.updateChecked(),void 0!==e.class&&this.updateClass(),void 0!==e.label&&(this.updateLabel(),this.updateTooltip()),void 0!==e.tooltip&&this.updateTooltip()}},{key:"actionRunner",get:function(){return this._actionRunner||(this._actionRunner=this._register(new p.Wi)),this._actionRunner},set:function(e){this._actionRunner=e}},{key:"getAction",value:function(){return this._action}},{key:"isEnabled",value:function(){return this._action.enabled}},{key:"setActionContext",value:function(e){this._context=e}},{key:"render",value:function(e){var t=this,n=this.element=e;this._register(v.o.addTarget(e));var i=this.options&&this.options.draggable;i&&(e.draggable=!0,_.vU&&this._register((0,y.addDisposableListener)(e,y.EventType.DRAG_START,(function(e){var n;return null===(n=e.dataTransfer)||void 0===n?void 0:n.setData(m.go.TEXT,t._action.label)})))),this._register((0,y.addDisposableListener)(n,v.t.Tap,(function(e){return t.onClick(e)}))),this._register((0,y.addDisposableListener)(n,y.EventType.MOUSE_DOWN,(function(e){i||y.EventHelper.stop(e,!0),t._action.enabled&&0===e.button&&n.classList.add("active")}))),d.dz&&this._register((0,y.addDisposableListener)(n,y.EventType.CONTEXT_MENU,(function(e){0===e.button&&!0===e.ctrlKey&&t.onClick(e)}))),this._register((0,y.addDisposableListener)(n,y.EventType.CLICK,(function(e){y.EventHelper.stop(e,!0),t.options&&t.options.isMenu||d.xS((function(){return t.onClick(e)}))}))),this._register((0,y.addDisposableListener)(n,y.EventType.DBLCLICK,(function(e){y.EventHelper.stop(e,!0)}))),[y.EventType.MOUSE_UP,y.EventType.MOUSE_OUT].forEach((function(e){t._register((0,y.addDisposableListener)(n,e,(function(e){y.EventHelper.stop(e),n.classList.remove("active")})))}))}},{key:"onClick",value:function(e){var t;y.EventHelper.stop(e,!0);var n=g.Jp(this._context)?(null===(t=this.options)||void 0===t?void 0:t.useEventAsContext)?e:void 0:this._context;this.actionRunner.run(this._action,n)}},{key:"focus",value:function(){this.element&&(this.element.tabIndex=0,this.element.focus(),this.element.classList.add("focused"))}},{key:"blur",value:function(){this.element&&(this.element.blur(),this.element.tabIndex=-1,this.element.classList.remove("focused"))}},{key:"setFocusable",value:function(e){this.element&&(this.element.tabIndex=e?0:-1)}},{key:"trapsArrowNavigation",get:function(){return!1}},{key:"updateEnabled",value:function(){}},{key:"updateLabel",value:function(){}},{key:"updateTooltip",value:function(){}},{key:"updateClass",value:function(){}},{key:"updateChecked",value:function(){}},{key:"dispose",value:function(){this.element&&(this.element.remove(),this.element=void 0),(0,s.Z)((0,u.Z)(n.prototype),"dispose",this).call(this)}}]),n}(f.JT),w=function(e){(0,l.Z)(n,e);var t=(0,c.Z)(n);function n(e,i){var o,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return(0,r.Z)(this,n),(o=t.call(this,e,i,a)).options=a,o.options.icon=void 0!==a.icon&&a.icon,o.options.label=void 0===a.label||a.label,o.cssClass="",o}return(0,o.Z)(n,[{key:"render",value:function(e){(0,s.Z)((0,u.Z)(n.prototype),"render",this).call(this,e),this.element&&(this.label=(0,y.append)(this.element,(0,y.$)("a.action-label"))),this.label&&(this._action.id===p.Z0.ID?this.label.setAttribute("role","presentation"):this.options.isMenu?this.label.setAttribute("role","menuitem"):this.label.setAttribute("role","button")),this.options.label&&this.options.keybinding&&this.element&&((0,y.append)(this.element,(0,y.$)("span.keybinding")).textContent=this.options.keybinding),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked()}},{key:"focus",value:function(){this.label&&(this.label.tabIndex=0,this.label.focus())}},{key:"blur",value:function(){this.label&&(this.label.tabIndex=-1)}},{key:"setFocusable",value:function(e){this.label&&(this.label.tabIndex=e?0:-1)}},{key:"updateLabel",value:function(){this.options.label&&this.label&&(this.label.textContent=this.getAction().label)}},{key:"updateTooltip",value:function(){var e=null;this.getAction().tooltip?e=this.getAction().tooltip:!this.options.label&&this.getAction().label&&this.options.icon&&(e=this.getAction().label,this.options.keybinding&&(e=h.N({key:"titleLabel",comment:["action title","action keybinding"]},"{0} ({1})",e,this.options.keybinding))),e&&this.label&&(this.label.title=e)}},{key:"updateClass",value:function(){var e;this.cssClass&&this.label&&(e=this.label.classList).remove.apply(e,(0,i.Z)(this.cssClass.split(" ")));if(this.options.icon){var t;if(this.cssClass=this.getAction().class,this.label)if(this.label.classList.add("codicon"),this.cssClass)(t=this.label.classList).add.apply(t,(0,i.Z)(this.cssClass.split(" ")));this.updateEnabled()}else this.label&&this.label.classList.remove("codicon")}},{key:"updateEnabled",value:function(){this.getAction().enabled?(this.label&&(this.label.removeAttribute("aria-disabled"),this.label.classList.remove("disabled")),this.element&&this.element.classList.remove("disabled")):(this.label&&(this.label.setAttribute("aria-disabled","true"),this.label.classList.add("disabled")),this.element&&this.element.classList.add("disabled"))}},{key:"updateChecked",value:function(){this.label&&(this.getAction().checked?this.label.classList.add("checked"):this.label.classList.remove("checked"))}}]),n}(b)},67404:function(e,t,n){"use strict";n.d(t,{o:function(){return y}});var i=n(15671),r=n(43144),o=n(11752),a=n(61120),s=n(60136),u=n(43668),l=n(87757),c=n.n(l),d=(n(26116),n(81626)),h=n(29077),f=n(84540),p=n(25941),g=n(31737),v=n(11732),m=n(84039),_=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},y=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e){var r,o,a,s,u,l,c,d,p,_=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch((0,i.Z)(this,n),(r=t.call(this)).triggerKeyDown=!1,r.focusable=!0,r._onDidBlur=r._register(new v.Q5),r.onDidBlur=r._onDidBlur.event,r._onDidCancel=r._register(new v.Q5({onFirstListenerAdd:function(){return r.cancelHasListener=!0}})),r.onDidCancel=r._onDidCancel.event,r.cancelHasListener=!1,r._onDidRun=r._register(new v.Q5),r.onDidRun=r._onDidRun.event,r._onBeforeRun=r._register(new v.Q5),r.onBeforeRun=r._onBeforeRun.event,r.options=_,r._context=null!==(o=_.context)&&void 0!==o?o:null,r._orientation=null!==(a=r.options.orientation)&&void 0!==a?a:0,r._triggerKeys={keyDown:null!==(u=null===(s=r.options.triggerKeys)||void 0===s?void 0:s.keyDown)&&void 0!==u&&u,keys:null!==(c=null===(l=r.options.triggerKeys)||void 0===l?void 0:l.keys)&&void 0!==c?c:[3,10]},r.options.actionRunner?r._actionRunner=r.options.actionRunner:(r._actionRunner=new h.Wi,r._register(r._actionRunner)),r._register(r._actionRunner.onDidRun((function(e){return r._onDidRun.fire(e)}))),r._register(r._actionRunner.onBeforeRun((function(e){return r._onBeforeRun.fire(e)}))),r._actionIds=[],r.viewItems=[],r.focusedItem=void 0,r.domNode=document.createElement("div"),r.domNode.className="monaco-action-bar",!1!==_.animated&&r.domNode.classList.add("animated"),r._orientation){case 0:d=[15],p=[17];break;case 1:d=[16],p=[18],r.domNode.className+=" vertical"}return r._register(f.addDisposableListener(r.domNode,f.EventType.KEY_DOWN,(function(e){var t=new g.y(e),n=!0,i="number"===typeof r.focusedItem?r.viewItems[r.focusedItem]:void 0;d&&(t.equals(d[0])||t.equals(d[1]))?n=r.focusPrevious():p&&(t.equals(p[0])||t.equals(p[1]))?n=r.focusNext():t.equals(9)&&r.cancelHasListener?r._onDidCancel.fire():t.equals(14)?n=r.focusFirst():t.equals(13)?n=r.focusLast():t.equals(2)&&i instanceof m.Y&&i.trapsArrowNavigation?n=r.focusNext():r.isTriggerKeyEvent(t)?r._triggerKeys.keyDown?r.doTrigger(t):r.triggerKeyDown=!0:n=!1,n&&(t.preventDefault(),t.stopPropagation())}))),r._register(f.addDisposableListener(r.domNode,f.EventType.KEY_UP,(function(e){var t=new g.y(e);r.isTriggerKeyEvent(t)?(!r._triggerKeys.keyDown&&r.triggerKeyDown&&(r.triggerKeyDown=!1,r.doTrigger(t)),t.preventDefault(),t.stopPropagation()):(t.equals(2)||t.equals(1026))&&r.updateFocusedItem()}))),r.focusTracker=r._register(f.trackFocus(r.domNode)),r._register(r.focusTracker.onDidBlur((function(){f.getActiveElement()!==r.domNode&&f.isAncestor(f.getActiveElement(),r.domNode)||(r._onDidBlur.fire(),r.focusedItem=void 0,r.triggerKeyDown=!1)}))),r._register(r.focusTracker.onDidFocus((function(){return r.updateFocusedItem()}))),r.actionsList=document.createElement("ul"),r.actionsList.className="actions-container",r.actionsList.setAttribute("role","toolbar"),r.options.ariaLabel&&r.actionsList.setAttribute("aria-label",r.options.ariaLabel),r.domNode.appendChild(r.actionsList),e.appendChild(r.domNode),r}return(0,r.Z)(n,[{key:"isTriggerKeyEvent",value:function(e){var t=!1;return this._triggerKeys.keys.forEach((function(n){t=t||e.equals(n)})),t}},{key:"updateFocusedItem",value:function(){for(var e=0;e<this.actionsList.children.length;e++){var t=this.actionsList.children[e];if(f.isAncestor(f.getActiveElement(),t)){this.focusedItem=e;break}}}},{key:"context",get:function(){return this._context},set:function(e){this._context=e,this.viewItems.forEach((function(t){return t.setActionContext(e)}))}},{key:"actionRunner",get:function(){return this._actionRunner},set:function(e){e&&(this._actionRunner=e,this.viewItems.forEach((function(t){return t.actionRunner=e})))}},{key:"getContainer",value:function(){return this.domNode}},{key:"push",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=Array.isArray(e)?e:[e],r=p.hj(n.index)?n.index:null;i.forEach((function(e){var i,o=document.createElement("li");o.className="action-item",o.setAttribute("role","presentation"),t.options.allowContextMenu||t._register(f.addDisposableListener(o,f.EventType.CONTEXT_MENU,(function(e){f.EventHelper.stop(e,!0)}))),t.options.actionViewItemProvider&&(i=t.options.actionViewItemProvider(e)),i||(i=new m.g(t.context,e,n)),i.actionRunner=t._actionRunner,i.setActionContext(t.context),i.render(o),t.focusable&&i instanceof m.Y&&0===t.viewItems.length&&i.setFocusable(!0),null===r||r<0||r>=t.actionsList.children.length?(t.actionsList.appendChild(o),t.viewItems.push(i),t._actionIds.push(e.id)):(t.actionsList.insertBefore(o,t.actionsList.children[r]),t.viewItems.splice(r,0,i),t._actionIds.splice(r,0,e.id),r++)})),"number"===typeof this.focusedItem&&this.focus(this.focusedItem)}},{key:"clear",value:function(){(0,d.B9)(this.viewItems),this.viewItems=[],this._actionIds=[],f.clearNode(this.actionsList)}},{key:"length",value:function(){return this.viewItems.length}},{key:"focus",value:function(e){var t=!1,n=void 0;if(void 0===e?t=!0:"number"===typeof e?n=e:"boolean"===typeof e&&(t=e),t&&"undefined"===typeof this.focusedItem){var i=this.viewItems.findIndex((function(e){return e.isEnabled()}));this.focusedItem=-1===i?void 0:i,this.updateFocus()}else void 0!==n&&(this.focusedItem=n),this.updateFocus()}},{key:"focusFirst",value:function(){return this.focusedItem=this.length()>1?1:0,this.focusPrevious()}},{key:"focusLast",value:function(){return this.focusedItem=this.length()<2?0:this.length()-2,this.focusNext()}},{key:"focusNext",value:function(){if("undefined"===typeof this.focusedItem)this.focusedItem=this.viewItems.length-1;else if(this.viewItems.length<=1)return!1;var e,t=this.focusedItem;do{if(this.options.preventLoopNavigation&&this.focusedItem+1>=this.viewItems.length)return this.focusedItem=t,!1;this.focusedItem=(this.focusedItem+1)%this.viewItems.length,e=this.viewItems[this.focusedItem]}while(this.focusedItem!==t&&this.options.focusOnlyEnabledItems&&!e.isEnabled());return this.updateFocus(),!0}},{key:"focusPrevious",value:function(){if("undefined"===typeof this.focusedItem)this.focusedItem=0;else if(this.viewItems.length<=1)return!1;var e,t=this.focusedItem;do{if(this.focusedItem=this.focusedItem-1,this.focusedItem<0){if(this.options.preventLoopNavigation)return this.focusedItem=t,!1;this.focusedItem=this.viewItems.length-1}e=this.viewItems[this.focusedItem]}while(this.focusedItem!==t&&this.options.focusOnlyEnabledItems&&!e.isEnabled());return this.updateFocus(!0),!0}},{key:"updateFocus",value:function(e,t){"undefined"===typeof this.focusedItem&&this.actionsList.focus({preventScroll:t});for(var n=0;n<this.viewItems.length;n++){var i=this.viewItems[n],r=i;if(n===this.focusedItem){var o=!0;p.mf(r.focus)||(o=!1),this.options.focusOnlyEnabledItems&&p.mf(i.isEnabled)&&!i.isEnabled()&&(o=!1),o?r.focus(e):this.actionsList.focus({preventScroll:t})}else p.mf(r.blur)&&r.blur()}}},{key:"doTrigger",value:function(e){if("undefined"!==typeof this.focusedItem){var t=this.viewItems[this.focusedItem];if(t instanceof m.Y){var n=null===t._context||void 0===t._context?e:t._context;this.run(t._action,n)}}}},{key:"run",value:function(e,t){return _(this,void 0,void 0,c().mark((function n(){return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._actionRunner.run(e,t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"dispose",value:function(){(0,d.B9)(this.viewItems),this.viewItems=[],this._actionIds=[],this.getContainer().remove(),(0,o.Z)((0,a.Z)(n.prototype),"dispose",this).call(this)}}]),n}(d.JT)},52180:function(e,t,n){"use strict";n.d(t,{Z9:function(){return h},wW:function(){return d},i7:function(){return f}});var i,r,o,a,s,u=n(30487),l=n(84540),c=2e4;function d(e){(i=document.createElement("div")).className="monaco-aria-container";var t=function(){var e=document.createElement("div");return e.className="monaco-alert",e.setAttribute("role","alert"),e.setAttribute("aria-atomic","true"),i.appendChild(e),e};r=t(),o=t();var n=function(){var e=document.createElement("div");return e.className="monaco-status",e.setAttribute("role","complementary"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),i.appendChild(e),e};a=n(),s=n(),e.appendChild(i)}function h(e){i&&(r.textContent!==e?(l.clearNode(o),p(r,e)):(l.clearNode(r),p(o,e)))}function f(e){i&&(u.dz?h(e):a.textContent!==e?(l.clearNode(s),p(a,e)):(l.clearNode(a),p(s,e)))}function p(e,t){l.clearNode(e),t.length>c&&(t=t.substr(0,c)),e.textContent=t,e.style.visibility="hidden",e.style.visibility="visible"}},22410:function(e,t,n){"use strict";n.d(t,{a:function(){return r}});var i=n(4354);function r(e){for(var t=e.definition;t instanceof i.lA;)t=t.definition;return".codicon-".concat(e.id,":before { content: '").concat(t.fontCharacter,"'; }")}},57502:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var i=n(15671),r=n(43144),o=n(84540),a=n(51747),s=n(89938),u=n(10405),l={badgeBackground:s.Il.fromHex("#4D4D4D"),badgeForeground:s.Il.fromHex("#FFFFFF")},c=function(){function e(t,n){(0,i.Z)(this,e),this.count=0,this.options=n||Object.create(null),(0,u.jB)(this.options,l,!1),this.badgeBackground=this.options.badgeBackground,this.badgeForeground=this.options.badgeForeground,this.badgeBorder=this.options.badgeBorder,this.element=(0,o.append)(t,(0,o.$)(".monaco-count-badge")),this.countFormat=this.options.countFormat||"{0}",this.titleFormat=this.options.titleFormat||"",this.setCount(this.options.count||0)}return(0,r.Z)(e,[{key:"setCount",value:function(e){this.count=e,this.render()}},{key:"setTitleFormat",value:function(e){this.titleFormat=e,this.render()}},{key:"render",value:function(){this.element.textContent=(0,a.WU)(this.countFormat,this.count),this.element.title=(0,a.WU)(this.titleFormat,this.count),this.applyStyles()}},{key:"style",value:function(e){this.badgeBackground=e.badgeBackground,this.badgeForeground=e.badgeForeground,this.badgeBorder=e.badgeBorder,this.applyStyles()}},{key:"applyStyles",value:function(){if(this.element){var e=this.badgeBackground?this.badgeBackground.toString():"",t=this.badgeForeground?this.badgeForeground.toString():"",n=this.badgeBorder?this.badgeBorder.toString():"";this.element.style.backgroundColor=e,this.element.style.color=t,this.element.style.borderWidth=n?"1px":"",this.element.style.borderStyle=n?"solid":"",this.element.style.borderColor=n}}}]),e}()},61743:function(e,t,n){"use strict";n.d(t,{q:function(){return c}});var i=n(93433),r=n(37762),o=n(15671),a=n(43144),s=n(10405),u=n(84540),l=n(66404),c=function(){function e(t,n){(0,o.Z)(this,e),this.supportIcons=n,this.text="",this.title="",this.highlights=[],this.didEverRender=!1,this.domNode=document.createElement("span"),this.domNode.className="monaco-highlighted-label",t.appendChild(this.domNode)}return(0,a.Z)(e,[{key:"element",get:function(){return this.domNode}},{key:"set",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";t||(t=""),(arguments.length>3?arguments[3]:void 0)&&(t=e.escapeNewLines(t,n)),this.didEverRender&&this.text===t&&this.title===i&&s.fS(this.highlights,n)||(this.text=t,this.title=i,this.highlights=n,this.render())}},{key:"render",value:function(){var e,t=[],n=0,o=(0,r.Z)(this.highlights);try{for(o.s();!(e=o.n()).done;){var a=e.value;if(a.end!==a.start){if(n<a.start){var s=this.text.substring(n,a.start);t.push(u.$.apply(u,["span",void 0].concat((0,i.Z)(this.supportIcons?(0,l.T)(s):[s])))),n=a.end}var c=this.text.substring(a.start,a.end),d=u.$.apply(u,["span.highlight",void 0].concat((0,i.Z)(this.supportIcons?(0,l.T)(c):[c])));a.extraClasses&&d.classList.add(a.extraClasses),t.push(d),n=a.end}}}catch(f){o.e(f)}finally{o.f()}if(n<this.text.length){var h=this.text.substring(n);t.push(u.$.apply(u,["span",void 0].concat((0,i.Z)(this.supportIcons?(0,l.T)(h):[h]))))}u.reset.apply(u,[this.domNode].concat(t)),this.title?this.domNode.title=this.title:this.domNode.removeAttribute("title"),this.didEverRender=!0}}],[{key:"escapeNewLines",value:function(e,t){var n=0,i=0;return e.replace(/\r\n|\r|\n/g,(function(e,o){i="\r\n"===e?-1:0,o+=n;var a,s=(0,r.Z)(t);try{for(s.s();!(a=s.n()).done;){var u=a.value;u.end<=o||(u.start>=o&&(u.start+=i),u.end>=o&&(u.end+=i))}}catch(l){s.e(l)}finally{s.f()}return n+=i,"\u23ce"}))}}]),e}()},5677:function(e,t,n){"use strict";n.d(t,{g:function(){return w}});var i=n(93433),r=n(60136),o=n(43668),a=n(15671),s=n(43144),u=n(87757),l=n.n(u),c=n(84540),d=n(61743),h=n(81626),f=n(81629),p=n(10405),g=n(25941),v=n(61680),m=n(56345),_=n(66526),y=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},b=function(){function e(t){(0,a.Z)(this,e),this._element=t}return(0,s.Z)(e,[{key:"element",get:function(){return this._element}},{key:"textContent",set:function(e){this.disposed||e===this._textContent||(this._textContent=e,this._element.textContent=e)}},{key:"className",set:function(e){this.disposed||e===this._className||(this._className=e,this._element.className=e)}},{key:"empty",set:function(e){this.disposed||e===this._empty||(this._empty=e,this._element.style.marginLeft=e?"0":"")}},{key:"dispose",value:function(){this.disposed=!0}}]),e}(),w=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e,i){var r;(0,a.Z)(this,n),(r=t.call(this)).hoverDelegate=void 0,r.customHovers=new Map,r.domNode=r._register(new b(c.append(e,c.$(".monaco-icon-label")))),r.labelContainer=c.append(r.domNode.element,c.$(".monaco-icon-label-container"));var o=c.append(r.labelContainer,c.$("span.monaco-icon-name-container"));return r.descriptionContainer=r._register(new b(c.append(r.labelContainer,c.$("span.monaco-icon-description-container")))),(null===i||void 0===i?void 0:i.supportHighlights)?r.nameNode=new k(o,!!i.supportIcons):r.nameNode=new C(o),(null===i||void 0===i?void 0:i.supportDescriptionHighlights)?r.descriptionNodeFactory=function(){return new d.q(c.append(r.descriptionContainer.element,c.$("span.label-description")),!!i.supportIcons)}:r.descriptionNodeFactory=function(){return r._register(new b(c.append(r.descriptionContainer.element,c.$("span.label-description"))))},(null===i||void 0===i?void 0:i.hoverDelegate)&&(r.hoverDelegate=i.hoverDelegate),r}return(0,s.Z)(n,[{key:"setLabel",value:function(e,t,n){var r=["monaco-icon-label"];n&&(n.extraClasses&&r.push.apply(r,(0,i.Z)(n.extraClasses)),n.italic&&r.push("italic"),n.strikethrough&&r.push("strikethrough")),this.domNode.className=r.join(" "),this.setupHover(this.labelContainer,null===n||void 0===n?void 0:n.title),this.nameNode.setLabel(e,n),(t||this.descriptionNode)&&(this.descriptionNode||(this.descriptionNode=this.descriptionNodeFactory()),this.descriptionNode instanceof d.q?(this.descriptionNode.set(t||"",n?n.descriptionMatches:void 0),this.setupHover(this.descriptionNode.element,null===n||void 0===n?void 0:n.descriptionTitle)):(this.descriptionNode.textContent=t||"",this.setupHover(this.descriptionNode.element,(null===n||void 0===n?void 0:n.descriptionTitle)||""),this.descriptionNode.empty=!t))}},{key:"setupHover",value:function(e,t){var n=this.customHovers.get(e);if(n&&(n.dispose(),this.customHovers.delete(e)),t)return this.hoverDelegate?this.setupCustomHover(this.hoverDelegate,e,t):this.setupNativeHover(e,t);e.removeAttribute("title")}},{key:"getTooltipForCustom",value:function(e){var t=this;if((0,g.HD)(e))return function(){return y(t,void 0,void 0,l().mark((function t(){return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",e);case 1:case"end":return t.stop()}}),t)})))};if((0,g.mf)(e.markdown))return e.markdown;var n=e.markdown;return function(){return y(t,void 0,void 0,l().mark((function e(){return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",n);case 1:case"end":return e.stop()}}),e)})))}}},{key:"setupCustomHover",value:function(e,t,i){t.setAttribute("title",""),t.removeAttribute("title");var r,o,a,s,u=this.getTooltipForCustom(i),d=!1;var h=this._register((0,v.jt)(t,c.EventType.MOUSE_OVER,!0)(function(h){var f=this;if(!d){a=new _.A;var p=(0,v.jt)(t,c.EventType.MOUSE_LEAVE,!0)(C.bind(t)),b=(0,v.jt)(t,c.EventType.MOUSE_DOWN,!0)(C.bind(t));d=!0;var w=(0,v.jt)(t,c.EventType.MOUSE_MOVE,!0)(function(e){o=e.x}.bind(t));setTimeout((function(){return y(f,void 0,void 0,l().mark((function t(){var c,h,f;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!d||!u){t.next=18;break}if(r){t.next=18;break}return h={targetElements:[this],dispose:function(){}},r={text:(0,m.N)("iconLabel.loading","Loading..."),target:h,hoverPosition:2},s=n.adjustXAndShowCustomHover(r,o,e,d),t.next=7,u(a.token);case 7:if(t.t1=c=t.sent,t.t0=null!==t.t1,!t.t0){t.next=11;break}t.t0=void 0!==c;case 11:if(!t.t0){t.next=15;break}t.t2=c,t.next=16;break;case 15:t.t2=(0,g.HD)(i)?void 0:i.markdownNotSupportedFallback;case 16:(f=t.t2)?(r={text:f,target:h,hoverPosition:2},s=n.adjustXAndShowCustomHover(r,o,e,d)):s&&(s.dispose(),s=void 0);case 18:w.dispose();case 19:case"end":return t.stop()}}),t,this)})))}),e.delay)}function C(e){var n=e.type===c.EventType.MOUSE_DOWN;n&&(null===s||void 0===s||s.dispose(),s=void 0),(n||e.fromElement===t)&&(d=!1,r=void 0,a.dispose(!0),p.dispose(),b.dispose())}}.bind(t)));this.customHovers.set(t,h)}},{key:"setupNativeHover",value:function(e,t){var n="";(0,g.HD)(t)?n=t:(null===t||void 0===t?void 0:t.markdownNotSupportedFallback)&&(n=t.markdownNotSupportedFallback),e.title=n}}],[{key:"adjustXAndShowCustomHover",value:function(e,t,n,i){if(e&&i)return void 0!==t&&(e.target.x=t+10),n.showHover(e)}}]),n}(h.JT),C=function(){function e(t){(0,a.Z)(this,e),this.container=t,this.label=void 0,this.singleLabel=void 0}return(0,s.Z)(e,[{key:"setLabel",value:function(e,t){if(this.label!==e||!(0,p.fS)(this.options,t))if(this.label=e,this.options=t,"string"===typeof e)this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=c.append(this.container,c.$("a.label-name",{id:null===t||void 0===t?void 0:t.domId}))),this.singleLabel.textContent=e;else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;for(var n=0;n<e.length;n++){var i=e[n],r=(null===t||void 0===t?void 0:t.domId)&&"".concat(null===t||void 0===t?void 0:t.domId,"_").concat(n);c.append(this.container,c.$("a.label-name",{id:r,"data-icon-label-count":e.length,"data-icon-label-index":n,role:"treeitem"},i)),n<e.length-1&&c.append(this.container,c.$("span.label-separator",void 0,(null===t||void 0===t?void 0:t.separator)||"/"))}}}}]),e}();var k=function(){function e(t,n){(0,a.Z)(this,e),this.container=t,this.supportIcons=n,this.label=void 0,this.singleLabel=void 0}return(0,s.Z)(e,[{key:"setLabel",value:function(e,t){if(this.label!==e||!(0,p.fS)(this.options,t))if(this.label=e,this.options=t,"string"===typeof e)this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=new d.q(c.append(this.container,c.$("a.label-name",{id:null===t||void 0===t?void 0:t.domId})),this.supportIcons)),this.singleLabel.set(e,null===t||void 0===t?void 0:t.matches,void 0,null===t||void 0===t?void 0:t.labelEscapeNewLines);else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;for(var n=(null===t||void 0===t?void 0:t.separator)||"/",i=function(e,t,n){if(n){var i=0;return e.map((function(e){var r={start:i,end:i+e.length},o=n.map((function(e){return f.e.intersect(r,e)})).filter((function(e){return!f.e.isEmpty(e)})).map((function(e){var t=e.start,n=e.end;return{start:t-i,end:n-i}}));return i=r.end+t.length,o}))}}(e,n,null===t||void 0===t?void 0:t.matches),r=0;r<e.length;r++){var o=e[r],a=i?i[r]:void 0,s=(null===t||void 0===t?void 0:t.domId)&&"".concat(null===t||void 0===t?void 0:t.domId,"_").concat(r),u=c.$("a.label-name",{id:s,"data-icon-label-count":e.length,"data-icon-label-index":r,role:"treeitem"});new d.q(c.append(this.container,u),this.supportIcons).set(o,a,void 0,null===t||void 0===t?void 0:t.labelEscapeNewLines),r<e.length-1&&c.append(u,c.$("span.label-separator",void 0,n))}}}}]),e}()},66404:function(e,t,n){"use strict";n.d(t,{T:function(){return u}});var i=n(93433),r=n(29439),o=n(84540),a=n(4354),s=new RegExp("(\\\\)?\\$\\((".concat(a.dT.iconNameExpression,"(?:").concat(a.dT.iconModifierExpression,")?)\\)"),"g");function u(e){for(var t,n=new Array,i=0,o=0;null!==(t=s.exec(e));){o=t.index||0,n.push(e.substring(i,o)),i=(t.index||0)+t[0].length;var a=t,u=(0,r.Z)(a,3),c=u[1],d=u[2];n.push(c?"$(".concat(d,")"):l({id:d}))}return i<e.length&&n.push(e.substring(i)),n}function l(e){var t,n=o.$("span");return(t=n.classList).add.apply(t,(0,i.Z)(a.dT.asClassNameArray(e))),n}},68027:function(e,t,n){"use strict";n.d(t,{p:function(){return E},W:function(){return L}});var i=n(15671),r=n(43144),o=n(97326),a=n(11752),s=n(61120),u=n(60136),l=n(43668),c=n(56345),d=n(84540),h=n(83935),f=n(52180),p=n(67404),g=n(11732),v=n(43257),m=n(89938),_=n(10405),y=n(37762),b=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n-1;(0,i.Z)(this,e),this.items=t,this.start=n,this.end=r,this.index=o}return(0,r.Z)(e,[{key:"current",value:function(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]}},{key:"next",value:function(){return this.index=Math.min(this.index+1,this.end),this.current()}},{key:"previous",value:function(){return this.index=Math.max(this.index-1,this.start-1),this.current()}},{key:"first",value:function(){return this.index=this.start,this.current()}},{key:"last",value:function(){return this.index=this.end-1,this.current()}}]),e}(),w=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;(0,i.Z)(this,e),this._initialize(t),this._limit=n,this._onChange()}return(0,r.Z)(e,[{key:"add",value:function(e){this._history.delete(e),this._history.add(e),this._onChange()}},{key:"next",value:function(){return this._currentPosition()!==this._elements.length-1?this._navigator.next():null}},{key:"previous",value:function(){return 0!==this._currentPosition()?this._navigator.previous():null}},{key:"current",value:function(){return this._navigator.current()}},{key:"first",value:function(){return this._navigator.first()}},{key:"last",value:function(){return this._navigator.last()}},{key:"has",value:function(e){return this._history.has(e)}},{key:"_onChange",value:function(){this._reduceToLimit();var e=this._elements;this._navigator=new b(e,0,e.length,e.length)}},{key:"_reduceToLimit",value:function(){var e=this._elements;e.length>this._limit&&this._initialize(e.slice(e.length-this._limit))}},{key:"_currentPosition",value:function(){var e=this._navigator.current();return e?this._elements.indexOf(e):-1}},{key:"_initialize",value:function(e){this._history=new Set;var t,n=(0,y.Z)(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;this._history.add(i)}}catch(r){n.e(r)}finally{n.f()}}},{key:"_elements",get:function(){var e=[];return this._history.forEach((function(t){return e.push(t)})),e}}]),e}(),C=n(61727),k=n(61680),S=d.$,x={inputBackground:m.Il.fromHex("#3C3C3C"),inputForeground:m.Il.fromHex("#CCCCCC"),inputValidationInfoBorder:m.Il.fromHex("#55AAFF"),inputValidationInfoBackground:m.Il.fromHex("#063B49"),inputValidationWarningBorder:m.Il.fromHex("#B89500"),inputValidationWarningBackground:m.Il.fromHex("#352A05"),inputValidationErrorBorder:m.Il.fromHex("#BE1100"),inputValidationErrorBackground:m.Il.fromHex("#5A1D1D")},L=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,r,a){var s,u;(0,i.Z)(this,n),(s=t.call(this)).state="idle",s.maxHeight=Number.POSITIVE_INFINITY,s._onDidChange=s._register(new g.Q5),s.onDidChange=s._onDidChange.event,s._onDidHeightChange=s._register(new g.Q5),s.onDidHeightChange=s._onDidHeightChange.event,s.contextViewProvider=r,s.options=a||Object.create(null),(0,_.jB)(s.options,x,!1),s.message=null,s.placeholder=s.options.placeholder||"",s.tooltip=null!==(u=s.options.tooltip)&&void 0!==u?u:s.placeholder||"",s.ariaLabel=s.options.ariaLabel||"",s.inputBackground=s.options.inputBackground,s.inputForeground=s.options.inputForeground,s.inputBorder=s.options.inputBorder,s.inputValidationInfoBorder=s.options.inputValidationInfoBorder,s.inputValidationInfoBackground=s.options.inputValidationInfoBackground,s.inputValidationInfoForeground=s.options.inputValidationInfoForeground,s.inputValidationWarningBorder=s.options.inputValidationWarningBorder,s.inputValidationWarningBackground=s.options.inputValidationWarningBackground,s.inputValidationWarningForeground=s.options.inputValidationWarningForeground,s.inputValidationErrorBorder=s.options.inputValidationErrorBorder,s.inputValidationErrorBackground=s.options.inputValidationErrorBackground,s.inputValidationErrorForeground=s.options.inputValidationErrorForeground,s.options.validationOptions&&(s.validation=s.options.validationOptions.validation),s.element=d.append(e,S(".monaco-inputbox.idle"));var l=s.options.flexibleHeight?"textarea":"input",c=d.append(s.element,S(".ibwrapper"));if(s.input=d.append(c,S(l+".input.empty")),s.input.setAttribute("autocorrect","off"),s.input.setAttribute("autocapitalize","off"),s.input.setAttribute("spellcheck","false"),s.onfocus(s.input,(function(){return s.element.classList.add("synthetic-focus")})),s.onblur(s.input,(function(){return s.element.classList.remove("synthetic-focus")})),s.options.flexibleHeight){s.maxHeight="number"===typeof s.options.flexibleMaxHeight?s.options.flexibleMaxHeight:Number.POSITIVE_INFINITY,s.mirror=d.append(c,S("div.mirror")),s.mirror.innerText="\xa0",s.scrollableElement=new C.NB(s.element,{vertical:1}),s.options.flexibleWidth&&(s.input.setAttribute("wrap","off"),s.mirror.style.whiteSpace="pre",s.mirror.style.wordWrap="initial"),d.append(e,s.scrollableElement.getDomNode()),s._register(s.scrollableElement),s._register(s.scrollableElement.onScroll((function(e){return s.input.scrollTop=e.scrollTop})));var h=g.ju.filter((0,k.jt)(document,"selectionchange"),(function(){var e=document.getSelection();return(null===e||void 0===e?void 0:e.anchorNode)===c}));s._register(h(s.updateScrollDimensions,(0,o.Z)(s))),s._register(s.onDidHeightChange(s.updateScrollDimensions,(0,o.Z)(s)))}else s.input.type=s.options.type||"text",s.input.setAttribute("wrap","off");return s.ariaLabel&&s.input.setAttribute("aria-label",s.ariaLabel),s.placeholder&&s.setPlaceHolder(s.placeholder),s.tooltip&&s.setTooltip(s.tooltip),s.oninput(s.input,(function(){return s.onValueChange()})),s.onblur(s.input,(function(){return s.onBlur()})),s.onfocus(s.input,(function(){return s.onFocus()})),s.ignoreGesture(s.input),setTimeout((function(){return s.updateMirror()}),0),s.options.actions&&(s.actionbar=s._register(new p.o(s.element)),s.actionbar.push(s.options.actions,{icon:!0,label:!1})),s.applyStyles(),s}return(0,r.Z)(n,[{key:"onBlur",value:function(){this._hideMessage()}},{key:"onFocus",value:function(){this._showMessage()}},{key:"setPlaceHolder",value:function(e){this.placeholder=e,this.input.setAttribute("placeholder",e)}},{key:"setTooltip",value:function(e){this.tooltip=e,this.input.title=e}},{key:"setAriaLabel",value:function(e){this.ariaLabel=e,e?this.input.setAttribute("aria-label",this.ariaLabel):this.input.removeAttribute("aria-label")}},{key:"getAriaLabel",value:function(){return this.ariaLabel}},{key:"inputElement",get:function(){return this.input}},{key:"value",get:function(){return this.input.value},set:function(e){this.input.value!==e&&(this.input.value=e,this.onValueChange())}},{key:"height",get:function(){return"number"===typeof this.cachedHeight?this.cachedHeight:d.getTotalHeight(this.element)}},{key:"focus",value:function(){this.input.focus()}},{key:"blur",value:function(){this.input.blur()}},{key:"hasFocus",value:function(){return document.activeElement===this.input}},{key:"select",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.input.select(),e&&(this.input.setSelectionRange(e.start,e.end),e.end===this.input.value.length&&(this.input.scrollLeft=this.input.scrollWidth))}},{key:"isSelectionAtEnd",value:function(){return this.input.selectionEnd===this.input.value.length&&this.input.selectionStart===this.input.selectionEnd}},{key:"enable",value:function(){this.input.removeAttribute("disabled")}},{key:"disable",value:function(){this.blur(),this.input.disabled=!0,this._hideMessage()}},{key:"width",get:function(){return d.getTotalWidth(this.input)},set:function(e){if(this.options.flexibleHeight&&this.options.flexibleWidth){var t=0;if(this.mirror)t=(parseFloat(this.mirror.style.paddingLeft||"")||0)+(parseFloat(this.mirror.style.paddingRight||"")||0);this.input.style.width=e-t+"px"}else this.input.style.width=e+"px";this.mirror&&(this.mirror.style.width=e+"px")}},{key:"paddingRight",set:function(e){this.options.flexibleHeight&&this.options.flexibleWidth?this.input.style.width="calc(100% - ".concat(e,"px)"):this.input.style.paddingRight=e+"px",this.mirror&&(this.mirror.style.paddingRight=e+"px")}},{key:"updateScrollDimensions",value:function(){if("number"===typeof this.cachedContentHeight&&"number"===typeof this.cachedHeight&&this.scrollableElement){var e=this.cachedContentHeight,t=this.cachedHeight,n=this.input.scrollTop;this.scrollableElement.setScrollDimensions({scrollHeight:e,height:t}),this.scrollableElement.setScrollPosition({scrollTop:n})}}},{key:"showMessage",value:function(e,t){this.message=e,this.element.classList.remove("idle"),this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add(this.classForType(e.type));var n=this.stylesForType(this.message.type);this.element.style.border=n.border?"1px solid ".concat(n.border):"",(this.hasFocus()||t)&&this._showMessage()}},{key:"hideMessage",value:function(){this.message=null,this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add("idle"),this._hideMessage(),this.applyStyles()}},{key:"validate",value:function(){var e=null;return this.validation&&((e=this.validation(this.value))?(this.inputElement.setAttribute("aria-invalid","true"),this.showMessage(e)):this.inputElement.hasAttribute("aria-invalid")&&(this.inputElement.removeAttribute("aria-invalid"),this.hideMessage())),null===e||void 0===e?void 0:e.type}},{key:"stylesForType",value:function(e){switch(e){case 1:return{border:this.inputValidationInfoBorder,background:this.inputValidationInfoBackground,foreground:this.inputValidationInfoForeground};case 2:return{border:this.inputValidationWarningBorder,background:this.inputValidationWarningBackground,foreground:this.inputValidationWarningForeground};default:return{border:this.inputValidationErrorBorder,background:this.inputValidationErrorBackground,foreground:this.inputValidationErrorForeground}}}},{key:"classForType",value:function(e){switch(e){case 1:return"info";case 2:return"warning";default:return"error"}}},{key:"_showMessage",value:function(){var e=this;if(this.contextViewProvider&&this.message){var t,n,i=function(){return t.style.width=d.getTotalWidth(e.element)+"px"};this.contextViewProvider.showContextView({getAnchor:function(){return e.element},anchorAlignment:1,render:function(n){if(!e.message)return null;t=d.append(n,S(".monaco-inputbox-container")),i();var r={inline:!0,className:"monaco-inputbox-message"},o=e.message.formatContent?(0,h.BO)(e.message.content,r):(0,h.IY)(e.message.content,r);o.classList.add(e.classForType(e.message.type));var a=e.stylesForType(e.message.type);return o.style.backgroundColor=a.background?a.background.toString():"",o.style.color=a.foreground?a.foreground.toString():"",o.style.border=a.border?"1px solid ".concat(a.border):"",d.append(t,o),null},onHide:function(){e.state="closed"},layout:i}),n=3===this.message.type?c.N("alertErrorMessage","Error: {0}",this.message.content):2===this.message.type?c.N("alertWarningMessage","Warning: {0}",this.message.content):c.N("alertInfoMessage","Info: {0}",this.message.content),f.Z9(n),this.state="open"}}},{key:"_hideMessage",value:function(){this.contextViewProvider&&("open"===this.state&&this.contextViewProvider.hideContextView(),this.state="idle")}},{key:"onValueChange",value:function(){this._onDidChange.fire(this.value),this.validate(),this.updateMirror(),this.input.classList.toggle("empty",!this.value),"open"===this.state&&this.contextViewProvider&&this.contextViewProvider.layout()}},{key:"updateMirror",value:function(){if(this.mirror){var e=this.value,t=10===e.charCodeAt(e.length-1)?" ":"";e+t?this.mirror.textContent=e+t:this.mirror.innerText="\xa0",this.layout()}}},{key:"style",value:function(e){this.inputBackground=e.inputBackground,this.inputForeground=e.inputForeground,this.inputBorder=e.inputBorder,this.inputValidationInfoBackground=e.inputValidationInfoBackground,this.inputValidationInfoForeground=e.inputValidationInfoForeground,this.inputValidationInfoBorder=e.inputValidationInfoBorder,this.inputValidationWarningBackground=e.inputValidationWarningBackground,this.inputValidationWarningForeground=e.inputValidationWarningForeground,this.inputValidationWarningBorder=e.inputValidationWarningBorder,this.inputValidationErrorBackground=e.inputValidationErrorBackground,this.inputValidationErrorForeground=e.inputValidationErrorForeground,this.inputValidationErrorBorder=e.inputValidationErrorBorder,this.applyStyles()}},{key:"applyStyles",value:function(){var e=this.inputBackground?this.inputBackground.toString():"",t=this.inputForeground?this.inputForeground.toString():"",n=this.inputBorder?this.inputBorder.toString():"";this.element.style.backgroundColor=e,this.element.style.color=t,this.input.style.backgroundColor="inherit",this.input.style.color=t,this.element.style.borderWidth=n?"1px":"",this.element.style.borderStyle=n?"solid":"",this.element.style.borderColor=n}},{key:"layout",value:function(){if(this.mirror){var e=this.cachedContentHeight;this.cachedContentHeight=d.getTotalHeight(this.mirror),e!==this.cachedContentHeight&&(this.cachedHeight=Math.min(this.cachedContentHeight,this.maxHeight),this.input.style.height=this.cachedHeight+"px",this._onDidHeightChange.fire(this.cachedContentHeight))}}},{key:"insertAtCursor",value:function(e){var t=this.inputElement,n=t.selectionStart,i=t.selectionEnd,r=t.value;null!==n&&null!==i&&(this.value=r.substr(0,n)+e+r.substr(i),t.setSelectionRange(n+1,n+1),this.layout())}},{key:"dispose",value:function(){this._hideMessage(),this.message=null,this.actionbar&&this.actionbar.dispose(),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}}]),n}(v.$),E=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,r,o){var a;return(0,i.Z)(this,n),(a=t.call(this,e,r,o)).history=new w(o.history,100),a}return(0,r.Z)(n,[{key:"addToHistory",value:function(){this.value&&this.value!==this.getCurrentValue()&&this.history.add(this.value)}},{key:"showNextValue",value:function(){this.history.has(this.value)||this.addToHistory();var e=this.getNextValue();e&&(e=e===this.value?this.getNextValue():e),e&&(this.value=e,f.i7(this.value))}},{key:"showPreviousValue",value:function(){this.history.has(this.value)||this.addToHistory();var e=this.getPreviousValue();e&&(e=e===this.value?this.getPreviousValue():e),e&&(this.value=e,f.i7(this.value))}},{key:"getCurrentValue",value:function(){var e=this.history.current();return e||(e=this.history.last(),this.history.next()),e}},{key:"getPreviousValue",value:function(){return this.history.previous()||this.history.first()}},{key:"getNextValue",value:function(){return this.history.next()||this.history.last()}}]),n}(L)},6709:function(e,t,n){"use strict";n.d(t,{kX:function(){return D},Bv:function(){return I}});var i=n(37762),r=n(93433),o=n(15671),a=n(43144),s=n(10405),u=n(81626),l=n(25044),c=n(11732),d=n(61680),h=n(61727),f=n(58604),p=n(81629);function g(e,t){var n,r=[],o=(0,i.Z)(t);try{for(o.s();!(n=o.n()).done;){var a=n.value;if(!(e.start>=a.range.end)){if(e.end<a.range.start)break;var s=p.e.intersect(e,a.range);p.e.isEmpty(s)||r.push({range:s,size:a.size})}}}catch(u){o.e(u)}finally{o.f()}return r}function v(e,t){return{start:e.start+t,end:e.end+t}}function m(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){var t,n=[],r=null,o=(0,i.Z)(e);try{for(o.s();!(t=o.n()).done;){var a=t.value,s=a.range.start,u=a.range.end,l=a.size;r&&l===r.size?r.range.end=u:(r={range:{start:s,end:u},size:l},n.push(r))}}catch(c){o.e(c)}finally{o.f()}return n}(t.reduce((function(e,t){return e.concat(t)}),[]))}var _=function(){function e(){(0,o.Z)(this,e),this.groups=[],this._size=0}return(0,a.Z)(e,[{key:"splice",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i=n.length-t,r=g({start:0,end:e},this.groups),o=g({start:e+t,end:Number.POSITIVE_INFINITY},this.groups).map((function(e){return{range:v(e.range,i),size:e.size}})),a=n.map((function(t,n){return{range:{start:e+n,end:e+n+1},size:t.size}}));this.groups=m(r,a,o),this._size=this.groups.reduce((function(e,t){return e+t.size*(t.range.end-t.range.start)}),0)}},{key:"count",get:function(){var e=this.groups.length;return e?this.groups[e-1].range.end:0}},{key:"size",get:function(){return this._size}},{key:"indexAt",value:function(e){if(e<0)return-1;var t,n=0,r=0,o=(0,i.Z)(this.groups);try{for(o.s();!(t=o.n()).done;){var a=t.value,s=a.range.end-a.range.start,u=r+s*a.size;if(e<u)return n+Math.floor((e-r)/a.size);n+=s,r=u}}catch(l){o.e(l)}finally{o.f()}return n}},{key:"indexAfter",value:function(e){return Math.min(this.indexAt(e)+1,this.count)}},{key:"positionAt",value:function(e){if(e<0)return-1;var t,n=0,r=0,o=(0,i.Z)(this.groups);try{for(o.s();!(t=o.n()).done;){var a=t.value,s=a.range.end-a.range.start,u=r+s;if(e<u)return n+(e-r)*a.size;n+=s*a.size,r=u}}catch(l){o.e(l)}finally{o.f()}return-1}}]),e}(),y=n(84540);var b=function(){function e(t){(0,o.Z)(this,e),this.renderers=t,this.cache=new Map}return(0,a.Z)(e,[{key:"alloc",value:function(e){var t=this.getTemplateCache(e).pop();if(!t){var n=(0,y.$)(".monaco-list-row");t={domNode:n,templateId:e,templateData:this.getRenderer(e).renderTemplate(n)}}return t}},{key:"release",value:function(e){e&&this.releaseRow(e)}},{key:"releaseRow",value:function(e){var t=e.domNode,n=e.templateId;t&&(t.classList.remove("scrolling"),function(e){try{e.parentElement&&e.parentElement.removeChild(e)}catch(t){}}(t)),this.getTemplateCache(n).push(e)}},{key:"getTemplateCache",value:function(e){var t=this.cache.get(e);return t||(t=[],this.cache.set(e,t)),t}},{key:"dispose",value:function(){var e=this;this.cache.forEach((function(t,n){var r,o=(0,i.Z)(t);try{for(o.s();!(r=o.n()).done;){var a=r.value;e.getRenderer(n).disposeTemplate(a.templateData),a.templateData=null}}catch(s){o.e(s)}finally{o.f()}})),this.cache.clear()}},{key:"getRenderer",value:function(e){var t=this.renderers.get(e);if(!t)throw new Error("No renderer found for ".concat(e));return t}}]),e}(),w=n(94995),C=n(49396),k=n(53042),S=n(27997),x=n(84539),L=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},E={useShadows:!0,verticalScrollMode:1,setRowLineHeight:!0,setRowHeight:!0,supportDynamicHeights:!1,dnd:{getDragElements:function(e){return[e]},getDragURI:function(){return null},onDragStart:function(){},onDragOver:function(){return!1},drop:function(){}},horizontalScrolling:!1,transformOptimization:!0,alwaysConsumeMouseWheel:!0},D=function(){function e(t){(0,o.Z)(this,e),this.elements=t}return(0,a.Z)(e,[{key:"update",value:function(){}},{key:"getData",value:function(){return this.elements}}]),e}(),N=function(){function e(t){(0,o.Z)(this,e),this.elements=t}return(0,a.Z)(e,[{key:"update",value:function(){}},{key:"getData",value:function(){return this.elements}}]),e}(),M=function(){function e(){(0,o.Z)(this,e),this.types=[],this.files=[]}return(0,a.Z)(e,[{key:"update",value:function(e){var t;e.types&&(t=this.types).splice.apply(t,[0,this.types.length].concat((0,r.Z)(e.types)));if(e.files){this.files.splice(0,this.files.length);for(var n=0;n<e.files.length;n++){var i=e.files.item(n);i&&(i.size||i.type)&&this.files.push(i)}}}},{key:"getData",value:function(){return{types:this.types,files:this.files}}}]),e}();var T=(0,a.Z)((function e(t){(0,o.Z)(this,e),(null===t||void 0===t?void 0:t.getSetSize)?this.getSetSize=t.getSetSize.bind(t):this.getSetSize=function(e,t,n){return n},(null===t||void 0===t?void 0:t.getPosInSet)?this.getPosInSet=t.getPosInSet.bind(t):this.getPosInSet=function(e,t){return t+1},(null===t||void 0===t?void 0:t.getRole)?this.getRole=t.getRole.bind(t):this.getRole=function(e){return"listitem"},(null===t||void 0===t?void 0:t.isChecked)?this.isChecked=t.isChecked.bind(t):this.isChecked=function(e){}})),I=function(){function e(t,n,r){var a=this,p=arguments.length>3&&void 0!==arguments[3]?arguments[3]:E;if((0,o.Z)(this,e),this.virtualDelegate=n,this.domId="list_id_".concat(++e.InstanceCount),this.renderers=new Map,this.renderWidth=0,this._scrollHeight=0,this.scrollableElementUpdateDisposable=null,this.scrollableElementWidthDelayer=new S.vp(50),this.splicing=!1,this.dragOverAnimationStopDisposable=u.JT.None,this.dragOverMouseY=0,this.canDrop=!1,this.currentDragFeedbackDisposable=u.JT.None,this.onDragLeaveTimeout=u.JT.None,this.disposables=new u.SL,this._onDidChangeContentHeight=new c.Q5,this._horizontalScrolling=!1,p.horizontalScrolling&&p.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");this.items=[],this.itemId=0,this.rangeMap=new _;var g,v=(0,i.Z)(r);try{for(v.s();!(g=v.n()).done;){var m=g.value;this.renderers.set(m.templateId,m)}}catch(w){v.e(w)}finally{v.f()}this.cache=this.disposables.add(new b(this.renderers)),this.lastRenderTop=0,this.lastRenderHeight=0,this.domNode=document.createElement("div"),this.domNode.className="monaco-list",this.domNode.classList.add(this.domId),this.domNode.tabIndex=0,this.domNode.classList.toggle("mouse-support","boolean"!==typeof p.mouseSupport||p.mouseSupport),this._horizontalScrolling=(0,s.CJ)(p,(function(e){return e.horizontalScrolling}),E.horizontalScrolling),this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this.additionalScrollHeight="undefined"===typeof p.additionalScrollHeight?0:p.additionalScrollHeight,this.accessibilityProvider=new T(p.accessibilityProvider),this.rowsContainer=document.createElement("div"),this.rowsContainer.className="monaco-list-rows",(0,s.CJ)(p,(function(e){return e.transformOptimization}),E.transformOptimization)&&(this.rowsContainer.style.transform="translate3d(0px, 0px, 0px)"),this.disposables.add(l.o.addTarget(this.rowsContainer)),this.scrollable=new f.Rm((0,s.CJ)(p,(function(e){return e.smoothScrolling}),!1)?125:0,(function(e){return(0,y.scheduleAtNextAnimationFrame)(e)})),this.scrollableElement=this.disposables.add(new h.$Z(this.rowsContainer,{alwaysConsumeMouseWheel:(0,s.CJ)(p,(function(e){return e.alwaysConsumeMouseWheel}),E.alwaysConsumeMouseWheel),horizontal:1,vertical:(0,s.CJ)(p,(function(e){return e.verticalScrollMode}),E.verticalScrollMode),useShadows:(0,s.CJ)(p,(function(e){return e.useShadows}),E.useShadows)},this.scrollable)),this.domNode.appendChild(this.scrollableElement.getDomNode()),t.appendChild(this.domNode),this.scrollableElement.onScroll(this.onScroll,this,this.disposables),(0,d.jt)(this.rowsContainer,l.t.Change)((function(e){return a.onTouchChange(e)}),this,this.disposables),(0,d.jt)(this.scrollableElement.getDomNode(),"scroll")((function(e){return e.target.scrollTop=0}),null,this.disposables),c.ju.map((0,d.jt)(this.domNode,"dragover"),(function(e){return a.toDragEvent(e)}))(this.onDragOver,this,this.disposables),c.ju.map((0,d.jt)(this.domNode,"drop"),(function(e){return a.toDragEvent(e)}))(this.onDrop,this,this.disposables),(0,d.jt)(this.domNode,"dragleave")(this.onDragLeave,this,this.disposables),(0,d.jt)(window,"dragend")(this.onDragEnd,this,this.disposables),this.setRowLineHeight=(0,s.CJ)(p,(function(e){return e.setRowLineHeight}),E.setRowLineHeight),this.setRowHeight=(0,s.CJ)(p,(function(e){return e.setRowHeight}),E.setRowHeight),this.supportDynamicHeights=(0,s.CJ)(p,(function(e){return e.supportDynamicHeights}),E.supportDynamicHeights),this.dnd=(0,s.CJ)(p,(function(e){return e.dnd}),E.dnd),this.layout()}return(0,a.Z)(e,[{key:"contentHeight",get:function(){return this.rangeMap.size}},{key:"horizontalScrolling",get:function(){return this._horizontalScrolling},set:function(e){if(e!==this._horizontalScrolling){if(e&&this.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");if(this._horizontalScrolling=e,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this._horizontalScrolling){var t,n=(0,i.Z)(this.items);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.measureItemWidth(r)}}catch(o){n.e(o)}finally{n.f()}this.updateScrollWidth(),this.scrollableElement.setScrollDimensions({width:(0,y.getContentWidth)(this.domNode)}),this.rowsContainer.style.width="".concat(Math.max(this.scrollWidth||0,this.renderWidth),"px")}else this.scrollableElementWidthDelayer.cancel(),this.scrollableElement.setScrollDimensions({width:this.renderWidth,scrollWidth:this.renderWidth}),this.rowsContainer.style.width=""}}},{key:"updateOptions",value:function(e){void 0!==e.additionalScrollHeight&&(this.additionalScrollHeight=e.additionalScrollHeight,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),void 0!==e.smoothScrolling&&this.scrollable.setSmoothScrollDuration(e.smoothScrolling?125:0),void 0!==e.horizontalScrolling&&(this.horizontalScrolling=e.horizontalScrolling)}},{key:"splice",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(this.splicing)throw new Error("Can't run recursive splices.");this.splicing=!0;try{return this._splice(e,t,n)}finally{this.splicing=!1,this._onDidChangeContentHeight.fire(this.contentHeight)}}},{key:"_splice",value:function(e,t){for(var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),s={start:e,end:e+t},l=p.e.intersect(a,s),c=new Map,d=l.start;d<l.end;d++){var h=this.items[d];if(h.dragStartDisposable.dispose(),h.row){var f=c.get(h.templateId);f||(f=[],c.set(h.templateId,f));var g=this.renderers.get(h.templateId);g&&g.disposeElement&&g.disposeElement(h.element,d,h.row.templateData,h.size),f.push(h.row)}h.row=null}var m,y,b={start:e+t,end:this.items.length},w=p.e.intersect(b,a),C=p.e.relativeComplement(b,a),k=o.map((function(e){return{id:String(n.itemId++),element:e,templateId:n.virtualDelegate.getTemplateId(e),size:n.virtualDelegate.getHeight(e),width:void 0,hasDynamicHeight:!!n.virtualDelegate.hasDynamicHeight&&n.virtualDelegate.hasDynamicHeight(e),lastDynamicHeightWidth:void 0,row:null,uri:void 0,dropTarget:!1,dragStartDisposable:u.JT.None}}));0===e&&t>=this.items.length?(this.rangeMap=new _,this.rangeMap.splice(0,0,k),m=this.items,this.items=k):(this.rangeMap.splice(e,t,k),m=(y=this.items).splice.apply(y,[e,t].concat((0,r.Z)(k))));for(var S=o.length-t,x=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),L=v(w,S),E=p.e.intersect(x,L),D=E.start;D<E.end;D++)this.updateItemInDOM(this.items[D],D);var N,M=p.e.relativeComplement(L,x),T=(0,i.Z)(M);try{for(T.s();!(N=T.n()).done;)for(var I=N.value,O=I.start;O<I.end;O++)this.removeItemFromDOM(O)}catch($){T.e($)}finally{T.f()}var A,R=C.map((function(e){return v(e,S)})),P=[{start:e,end:e+o.length}].concat((0,r.Z)(R)).map((function(e){return p.e.intersect(x,e)})),Z=this.getNextToLastElement(P),F=(0,i.Z)(P);try{for(F.s();!(A=F.n()).done;)for(var j=A.value,H=j.start;H<j.end;H++){var B=this.items[H],z=c.get(B.templateId),W=null===z||void 0===z?void 0:z.pop();this.insertItemInDOM(H,Z,W)}}catch($){F.e($)}finally{F.f()}var V,Y=(0,i.Z)(c.values());try{for(Y.s();!(V=Y.n()).done;){var U,K=V.value,q=(0,i.Z)(K);try{for(q.s();!(U=q.n()).done;){var G=U.value;this.cache.release(G)}}catch($){q.e($)}finally{q.f()}}}catch($){Y.e($)}finally{Y.f()}return this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight),m.map((function(e){return e.element}))}},{key:"eventuallyUpdateScrollDimensions",value:function(){var e=this;this._scrollHeight=this.contentHeight,this.rowsContainer.style.height="".concat(this._scrollHeight,"px"),this.scrollableElementUpdateDisposable||(this.scrollableElementUpdateDisposable=(0,y.scheduleAtNextAnimationFrame)((function(){e.scrollableElement.setScrollDimensions({scrollHeight:e.scrollHeight}),e.updateScrollWidth(),e.scrollableElementUpdateDisposable=null})))}},{key:"eventuallyUpdateScrollWidth",value:function(){var e=this;this.horizontalScrolling?this.scrollableElementWidthDelayer.trigger((function(){return e.updateScrollWidth()})):this.scrollableElementWidthDelayer.cancel()}},{key:"updateScrollWidth",value:function(){if(this.horizontalScrolling){var e,t=0,n=(0,i.Z)(this.items);try{for(n.s();!(e=n.n()).done;){var r=e.value;"undefined"!==typeof r.width&&(t=Math.max(t,r.width))}}catch(o){n.e(o)}finally{n.f()}this.scrollWidth=t,this.scrollableElement.setScrollDimensions({scrollWidth:0===t?0:t+10})}}},{key:"rerender",value:function(){if(this.supportDynamicHeights){var e,t=(0,i.Z)(this.items);try{for(t.s();!(e=t.n()).done;){e.value.lastDynamicHeightWidth=void 0}}catch(n){t.e(n)}finally{t.f()}this._rerender(this.lastRenderTop,this.lastRenderHeight)}}},{key:"length",get:function(){return this.items.length}},{key:"renderHeight",get:function(){return this.scrollableElement.getScrollDimensions().height}},{key:"element",value:function(e){return this.items[e].element}},{key:"domElement",value:function(e){var t=this.items[e].row;return t&&t.domNode}},{key:"elementHeight",value:function(e){return this.items[e].size}},{key:"elementTop",value:function(e){return this.rangeMap.positionAt(e)}},{key:"indexAt",value:function(e){return this.rangeMap.indexAt(e)}},{key:"indexAfter",value:function(e){return this.rangeMap.indexAfter(e)}},{key:"layout",value:function(e,t){var n={height:"number"===typeof e?e:(0,y.getContentHeight)(this.domNode)};this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,n.scrollHeight=this.scrollHeight),this.scrollableElement.setScrollDimensions(n),"undefined"!==typeof t&&(this.renderWidth=t,this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight)),this.horizontalScrolling&&this.scrollableElement.setScrollDimensions({width:"number"===typeof t?t:(0,y.getContentWidth)(this.domNode)})}},{key:"render",value:function(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]&&arguments[5],s=this.getRenderRange(t,n),u=p.e.relativeComplement(s,e),l=p.e.relativeComplement(e,s),c=this.getNextToLastElement(u);if(a)for(var d=p.e.intersect(e,s),h=d.start;h<d.end;h++)this.updateItemInDOM(this.items[h],h);var f,g=(0,i.Z)(u);try{for(g.s();!(f=g.n()).done;)for(var v=f.value,m=v.start;m<v.end;m++)this.insertItemInDOM(m,c)}catch(C){g.e(C)}finally{g.f()}var _,y=(0,i.Z)(l);try{for(y.s();!(_=y.n()).done;)for(var b=_.value,w=b.start;w<b.end;w++)this.removeItemFromDOM(w)}catch(C){y.e(C)}finally{y.f()}void 0!==r&&(this.rowsContainer.style.left="-".concat(r,"px")),this.rowsContainer.style.top="-".concat(t,"px"),this.horizontalScrolling&&void 0!==o&&(this.rowsContainer.style.width="".concat(Math.max(o,this.renderWidth),"px")),this.lastRenderTop=t,this.lastRenderHeight=n}},{key:"insertItemInDOM",value:function(e,t,n){var i=this,r=this.items[e];r.row||(r.row=null!==n&&void 0!==n?n:this.cache.alloc(r.templateId));var o=this.accessibilityProvider.getRole(r.element)||"listitem";r.row.domNode.setAttribute("role",o);var a=this.accessibilityProvider.isChecked(r.element);"undefined"!==typeof a&&r.row.domNode.setAttribute("aria-checked",String(!!a)),r.row.domNode.parentElement||(t?this.rowsContainer.insertBefore(r.row.domNode,t):this.rowsContainer.appendChild(r.row.domNode)),this.updateItemInDOM(r,e);var s=this.renderers.get(r.templateId);if(!s)throw new Error("No renderer found for template id ".concat(r.templateId));s&&s.renderElement(r.element,e,r.row.templateData,r.size);var u=this.dnd.getDragURI(r.element);if(r.dragStartDisposable.dispose(),r.row.domNode.draggable=!!u,u){var l=(0,d.jt)(r.row.domNode,"dragstart");r.dragStartDisposable=l((function(e){return i.onDragStart(r.element,u,e)}))}this.horizontalScrolling&&(this.measureItemWidth(r),this.eventuallyUpdateScrollWidth())}},{key:"measureItemWidth",value:function(e){if(e.row&&e.row.domNode){e.row.domNode.style.width=x.vU?"-moz-fit-content":"fit-content",e.width=(0,y.getContentWidth)(e.row.domNode);var t=window.getComputedStyle(e.row.domNode);t.paddingLeft&&(e.width+=parseFloat(t.paddingLeft)),t.paddingRight&&(e.width+=parseFloat(t.paddingRight)),e.row.domNode.style.width=""}}},{key:"updateItemInDOM",value:function(e,t){e.row.domNode.style.top="".concat(this.elementTop(t),"px"),this.setRowHeight&&(e.row.domNode.style.height="".concat(e.size,"px")),this.setRowLineHeight&&(e.row.domNode.style.lineHeight="".concat(e.size,"px")),e.row.domNode.setAttribute("data-index","".concat(t)),e.row.domNode.setAttribute("data-last-element",t===this.length-1?"true":"false"),e.row.domNode.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(e.element,t,this.length))),e.row.domNode.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(e.element,t))),e.row.domNode.setAttribute("id",this.getElementDomId(t)),e.row.domNode.classList.toggle("drop-target",e.dropTarget)}},{key:"removeItemFromDOM",value:function(e){var t=this.items[e];if(t.dragStartDisposable.dispose(),t.row){var n=this.renderers.get(t.templateId);n&&n.disposeElement&&n.disposeElement(t.element,e,t.row.templateData,t.size),this.cache.release(t.row),t.row=null}this.horizontalScrolling&&this.eventuallyUpdateScrollWidth()}},{key:"getScrollTop",value:function(){return this.scrollableElement.getScrollPosition().scrollTop}},{key:"setScrollTop",value:function(e,t){this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),this.scrollableElement.setScrollPosition({scrollTop:e,reuseAnimation:t})}},{key:"scrollTop",get:function(){return this.getScrollTop()},set:function(e){this.setScrollTop(e)}},{key:"scrollHeight",get:function(){return this._scrollHeight+(this.horizontalScrolling?10:0)+this.additionalScrollHeight}},{key:"onMouseClick",get:function(){var e=this;return c.ju.map((0,d.jt)(this.domNode,"click"),(function(t){return e.toMouseEvent(t)}))}},{key:"onMouseDblClick",get:function(){var e=this;return c.ju.map((0,d.jt)(this.domNode,"dblclick"),(function(t){return e.toMouseEvent(t)}))}},{key:"onMouseMiddleClick",get:function(){var e=this;return c.ju.filter(c.ju.map((0,d.jt)(this.domNode,"auxclick"),(function(t){return e.toMouseEvent(t)})),(function(e){return 1===e.browserEvent.button}))}},{key:"onMouseDown",get:function(){var e=this;return c.ju.map((0,d.jt)(this.domNode,"mousedown"),(function(t){return e.toMouseEvent(t)}))}},{key:"onContextMenu",get:function(){var e=this;return c.ju.map((0,d.jt)(this.domNode,"contextmenu"),(function(t){return e.toMouseEvent(t)}))}},{key:"onTouchStart",get:function(){var e=this;return c.ju.map((0,d.jt)(this.domNode,"touchstart"),(function(t){return e.toTouchEvent(t)}))}},{key:"onTap",get:function(){var e=this;return c.ju.map((0,d.jt)(this.rowsContainer,l.t.Tap),(function(t){return e.toGestureEvent(t)}))}},{key:"toMouseEvent",value:function(e){var t=this.getItemIndexFromEventTarget(e.target||null),n="undefined"===typeof t?void 0:this.items[t];return{browserEvent:e,index:t,element:n&&n.element}}},{key:"toTouchEvent",value:function(e){var t=this.getItemIndexFromEventTarget(e.target||null),n="undefined"===typeof t?void 0:this.items[t];return{browserEvent:e,index:t,element:n&&n.element}}},{key:"toGestureEvent",value:function(e){var t=this.getItemIndexFromEventTarget(e.initialTarget||null),n="undefined"===typeof t?void 0:this.items[t];return{browserEvent:e,index:t,element:n&&n.element}}},{key:"toDragEvent",value:function(e){var t=this.getItemIndexFromEventTarget(e.target||null),n="undefined"===typeof t?void 0:this.items[t];return{browserEvent:e,index:t,element:n&&n.element}}},{key:"onScroll",value:function(e){try{var t=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight);this.render(t,e.scrollTop,e.height,e.scrollLeft,e.scrollWidth),this.supportDynamicHeights&&this._rerender(e.scrollTop,e.height,e.inSmoothScrolling)}catch(n){throw console.error("Got bad scroll event:",e),n}}},{key:"onTouchChange",value:function(e){e.preventDefault(),e.stopPropagation(),this.scrollTop-=e.translationY}},{key:"onDragStart",value:function(e,t,n){if(n.dataTransfer){var i=this.dnd.getDragElements(e);if(n.dataTransfer.effectAllowed="copyMove",n.dataTransfer.setData(k.go.RESOURCES,JSON.stringify([t])),n.dataTransfer.setDragImage){var r;this.dnd.getDragLabel&&(r=this.dnd.getDragLabel(i,n)),"undefined"===typeof r&&(r=String(i.length));var o=(0,y.$)(".monaco-drag-image");o.textContent=r,document.body.appendChild(o),n.dataTransfer.setDragImage(o,-10,-10),setTimeout((function(){return document.body.removeChild(o)}),0)}this.currentDragData=new D(i),k.P$.CurrentDragAndDropData=new N(i),this.dnd.onDragStart&&this.dnd.onDragStart(this.currentDragData,n)}}},{key:"onDragOver",value:function(e){var t=this;if(e.browserEvent.preventDefault(),this.onDragLeaveTimeout.dispose(),k.P$.CurrentDragAndDropData&&"vscode-ui"===k.P$.CurrentDragAndDropData.getData())return!1;if(this.setupDragAndDropScrollTopAnimation(e.browserEvent),!e.browserEvent.dataTransfer)return!1;if(!this.currentDragData)if(k.P$.CurrentDragAndDropData)this.currentDragData=k.P$.CurrentDragAndDropData;else{if(!e.browserEvent.dataTransfer.types)return!1;this.currentDragData=new M}var n,r,o,a=this.dnd.onDragOver(this.currentDragData,e.element,e.index,e.browserEvent);if(this.canDrop="boolean"===typeof a?a:a.accept,!this.canDrop)return this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),!1;if(e.browserEvent.dataTransfer.dropEffect="boolean"!==typeof a&&0===a.effect?"copy":"move",n="boolean"!==typeof a&&a.feedback?a.feedback:"undefined"===typeof e.index?[-1]:[e.index],n=-1===(n=(0,C.EB)(n).filter((function(e){return e>=-1&&e<t.length})).sort((function(e,t){return e-t})))[0]?[-1]:n,r=this.currentDragFeedback,o=n,Array.isArray(r)&&Array.isArray(o)?(0,C.fS)(r,o):r===o)return!0;if(this.currentDragFeedback=n,this.currentDragFeedbackDisposable.dispose(),-1===n[0])this.domNode.classList.add("drop-target"),this.rowsContainer.classList.add("drop-target"),this.currentDragFeedbackDisposable=(0,u.OF)((function(){t.domNode.classList.remove("drop-target"),t.rowsContainer.classList.remove("drop-target")}));else{var s,l=(0,i.Z)(n);try{for(l.s();!(s=l.n()).done;){var c=s.value,d=this.items[c];d.dropTarget=!0,d.row&&d.row.domNode.classList.add("drop-target")}}catch(h){l.e(h)}finally{l.f()}this.currentDragFeedbackDisposable=(0,u.OF)((function(){var e,r=(0,i.Z)(n);try{for(r.s();!(e=r.n()).done;){var o=e.value,a=t.items[o];a.dropTarget=!1,a.row&&a.row.domNode.classList.remove("drop-target")}}catch(h){r.e(h)}finally{r.f()}}))}return!0}},{key:"onDragLeave",value:function(){var e=this;this.onDragLeaveTimeout.dispose(),this.onDragLeaveTimeout=(0,S.Vg)((function(){return e.clearDragOverFeedback()}),100)}},{key:"onDrop",value:function(e){if(this.canDrop){var t=this.currentDragData;this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.currentDragData=void 0,k.P$.CurrentDragAndDropData=void 0,t&&e.browserEvent.dataTransfer&&(e.browserEvent.preventDefault(),t.update(e.browserEvent.dataTransfer),this.dnd.drop(t,e.element,e.index,e.browserEvent))}}},{key:"onDragEnd",value:function(e){this.canDrop=!1,this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.currentDragData=void 0,k.P$.CurrentDragAndDropData=void 0,this.dnd.onDragEnd&&this.dnd.onDragEnd(e)}},{key:"clearDragOverFeedback",value:function(){this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),this.currentDragFeedbackDisposable=u.JT.None}},{key:"setupDragAndDropScrollTopAnimation",value:function(e){var t=this;if(!this.dragOverAnimationDisposable){var n=(0,y.getTopLeftOffset)(this.domNode).top;this.dragOverAnimationDisposable=(0,y.animate)(this.animateDragAndDropScrollTop.bind(this,n))}this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationStopDisposable=(0,S.Vg)((function(){t.dragOverAnimationDisposable&&(t.dragOverAnimationDisposable.dispose(),t.dragOverAnimationDisposable=void 0)}),1e3),this.dragOverMouseY=e.pageY}},{key:"animateDragAndDropScrollTop",value:function(e){if(void 0!==this.dragOverMouseY){var t=this.dragOverMouseY-e,n=this.renderHeight-35;t<35?this.scrollTop+=Math.max(-14,Math.floor(.3*(t-35))):t>n&&(this.scrollTop+=Math.min(14,Math.floor(.3*(t-n))))}}},{key:"teardownDragAndDropScrollTopAnimation",value:function(){this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)}},{key:"getItemIndexFromEventTarget",value:function(e){for(var t=this.scrollableElement.getDomNode(),n=e;n instanceof HTMLElement&&n!==this.rowsContainer&&t.contains(n);){var i=n.getAttribute("data-index");if(i){var r=Number(i);if(!isNaN(r))return r}n=n.parentElement}}},{key:"getRenderRange",value:function(e,t){return{start:this.rangeMap.indexAt(e),end:this.rangeMap.indexAfter(e+t-1)}}},{key:"_rerender",value:function(e,t,n){var r,o,a=this.getRenderRange(e,t);e===this.elementTop(a.start)?(r=a.start,o=0):a.end-a.start>1&&(r=a.start+1,o=this.elementTop(r)-e);for(var s=0;;){for(var u=this.getRenderRange(e,t),l=!1,c=u.start;c<u.end;c++){var d=this.probeDynamicHeight(c);0!==d&&this.rangeMap.splice(c,1,[this.items[c]]),s+=d,l=l||0!==d}if(!l){0!==s&&this.eventuallyUpdateScrollDimensions();var h,f=p.e.relativeComplement(a,u),g=(0,i.Z)(f);try{for(g.s();!(h=g.n()).done;)for(var v=h.value,m=v.start;m<v.end;m++)this.items[m].row&&this.removeItemFromDOM(m)}catch(N){g.e(N)}finally{g.f()}var _,y=p.e.relativeComplement(u,a),b=(0,i.Z)(y);try{for(b.s();!(_=b.n()).done;)for(var w=_.value,C=w.start;C<w.end;C++){var k=C+1,S=k<this.items.length?this.items[k].row:null,x=S?S.domNode:null;this.insertItemInDOM(C,x)}}catch(N){b.e(N)}finally{b.f()}for(var L=u.start;L<u.end;L++)this.items[L].row&&this.updateItemInDOM(this.items[L],L);if("number"===typeof r){var E=this.scrollable.getFutureScrollPosition().scrollTop-e,D=this.elementTop(r)-o+E;this.setScrollTop(D,n)}return void this._onDidChangeContentHeight.fire(this.contentHeight)}}}},{key:"probeDynamicHeight",value:function(e){var t=this.items[e];if(!t.hasDynamicHeight||t.lastDynamicHeightWidth===this.renderWidth)return 0;if(this.virtualDelegate.hasDynamicHeight&&!this.virtualDelegate.hasDynamicHeight(t.element))return 0;var n=t.size;if(!this.setRowHeight&&t.row){var i=t.row.domNode.offsetHeight;return t.size=i,t.lastDynamicHeightWidth=this.renderWidth,i-n}var r=this.cache.alloc(t.templateId);r.domNode.style.height="",this.rowsContainer.appendChild(r.domNode);var o=this.renderers.get(t.templateId);return o&&(o.renderElement(t.element,e,r.templateData,void 0),o.disposeElement&&o.disposeElement(t.element,e,r.templateData,void 0)),t.size=r.domNode.offsetHeight,this.virtualDelegate.setDynamicHeight&&this.virtualDelegate.setDynamicHeight(t.element,t.size),t.lastDynamicHeightWidth=this.renderWidth,this.rowsContainer.removeChild(r.domNode),this.cache.release(r),t.size-n}},{key:"getNextToLastElement",value:function(e){var t=e[e.length-1];if(!t)return null;var n=this.items[t.end];return n&&n.row?n.row.domNode:null}},{key:"getElementDomId",value:function(e){return"".concat(this.domId,"_").concat(e)}},{key:"dispose",value:function(){if(this.items){var e,t=(0,i.Z)(this.items);try{for(t.s();!(e=t.n()).done;){var n=e.value;if(n.row){var r=this.renderers.get(n.row.templateId);r&&(r.disposeElement&&r.disposeElement(n.element,-1,n.row.templateData,void 0),r.disposeTemplate(n.row.templateData))}}}catch(o){t.e(o)}finally{t.f()}this.items=[]}this.domNode&&this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode),(0,u.B9)(this.disposables)}}]),e}();I.InstanceCount=0,L([w.H],I.prototype,"onMouseClick",null),L([w.H],I.prototype,"onMouseDblClick",null),L([w.H],I.prototype,"onMouseMiddleClick",null),L([w.H],I.prototype,"onMouseDown",null),L([w.H],I.prototype,"onContextMenu",null),L([w.H],I.prototype,"onTouchStart",null),L([w.H],I.prototype,"onTap",null)},92814:function(e,t,n){"use strict";n.d(t,{WK:function(){return z},wD:function(){return G},aV:function(){return ie},sx:function(){return q},cK:function(){return F},hD:function(){return j},wn:function(){return U},Zo:function(){return Y}});var i=n(11752),r=n(61120),o=n(60136),a=n(43668),s=n(93433),u=n(37762),l=n(15671),c=n(43144),d=n(87757),h=n.n(d),f=(n(43185),n(81626)),p=n(25941),g=n(49396),v=n(94995),m=n(30487),_=n(25044),y=n(31737),b=n(11732),w=n(61680),C=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i){return(0,l.Z)(this,n),t.call(this,"ListError [".concat(e,"] ").concat(i))}return(0,c.Z)(n)}((0,n(28664).Z)(Error)),k=n(6709),S=n(89938),x=n(10405),L=function(){function e(t){(0,l.Z)(this,e),this.spliceables=t}return(0,c.Z)(e,[{key:"splice",value:function(e,t,n){this.spliceables.forEach((function(i){return i.splice(e,t,n)}))}}]),e}(),E=n(5265),D=n(50482),N=n(52180),M=n(84540),T=n(27997),I=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},O=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},A=function(){function e(t){(0,l.Z)(this,e),this.trait=t,this.renderedElements=[]}return(0,c.Z)(e,[{key:"templateId",get:function(){return"template:".concat(this.trait.trait)}},{key:"renderTemplate",value:function(e){return e}},{key:"renderElement",value:function(e,t,n){var i=this.renderedElements.findIndex((function(e){return e.templateData===n}));if(i>=0){var r=this.renderedElements[i];this.trait.unrender(n),r.index=t}else{var o={index:t,templateData:n};this.renderedElements.push(o)}this.trait.renderIndex(t,n)}},{key:"splice",value:function(e,t,n){var i,r=[],o=(0,u.Z)(this.renderedElements);try{for(o.s();!(i=o.n()).done;){var a=i.value;a.index<e?r.push(a):a.index>=e+t&&r.push({index:a.index+n-t,templateData:a.templateData})}}catch(s){o.e(s)}finally{o.f()}this.renderedElements=r}},{key:"renderIndexes",value:function(e){var t,n=(0,u.Z)(this.renderedElements);try{for(n.s();!(t=n.n()).done;){var i=t.value,r=i.index,o=i.templateData;e.indexOf(r)>-1&&this.trait.renderIndex(r,o)}}catch(a){n.e(a)}finally{n.f()}}},{key:"disposeTemplate",value:function(e){var t=this.renderedElements.findIndex((function(t){return t.templateData===e}));t<0||this.renderedElements.splice(t,1)}}]),e}(),R=function(){function e(t){(0,l.Z)(this,e),this._trait=t,this.indexes=[],this.sortedIndexes=[],this._onChange=new b.Q5,this.onChange=this._onChange.event}return(0,c.Z)(e,[{key:"trait",get:function(){return this._trait}},{key:"renderer",get:function(){return new A(this)}},{key:"splice",value:function(e,t,n){var i=n.length-t,r=e+t,o=[].concat((0,s.Z)(this.sortedIndexes.filter((function(t){return t<e}))),(0,s.Z)(n.map((function(t,n){return t?n+e:-1})).filter((function(e){return-1!==e}))),(0,s.Z)(this.sortedIndexes.filter((function(e){return e>=r})).map((function(e){return e+i}))));this.renderer.splice(e,t,n.length),this._set(o,o)}},{key:"renderIndex",value:function(e,t){t.classList.toggle(this._trait,this.contains(e))}},{key:"unrender",value:function(e){e.classList.remove(this._trait)}},{key:"set",value:function(e,t){return this._set(e,(0,s.Z)(e).sort(J),t)}},{key:"_set",value:function(e,t,n){var i=this.indexes,r=this.sortedIndexes;this.indexes=e,this.sortedIndexes=t;var o=X(r,e);return this.renderer.renderIndexes(o),this._onChange.fire({indexes:e,browserEvent:n}),i}},{key:"get",value:function(){return this.indexes}},{key:"contains",value:function(e){return(0,g.ry)(this.sortedIndexes,e,J)>=0}},{key:"dispose",value:function(){(0,f.B9)(this._onChange)}}]),e}();I([v.H],R.prototype,"renderer",null);var P=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e){var i;return(0,l.Z)(this,n),(i=t.call(this,"selected")).setAriaSelected=e,i}return(0,c.Z)(n,[{key:"renderIndex",value:function(e,t){(0,i.Z)((0,r.Z)(n.prototype),"renderIndex",this).call(this,e,t),this.setAriaSelected&&(this.contains(e)?t.setAttribute("aria-selected","true"):t.setAttribute("aria-selected","false"))}}]),n}(R),Z=function(){function e(t,n,i){(0,l.Z)(this,e),this.trait=t,this.view=n,this.identityProvider=i}return(0,c.Z)(e,[{key:"splice",value:function(e,t,n){var i=this;if(!this.identityProvider)return this.trait.splice(e,t,n.map((function(){return!1})));var r=this.trait.get().map((function(e){return i.identityProvider.getId(i.view.element(e)).toString()})),o=n.map((function(e){return r.indexOf(i.identityProvider.getId(e).toString())>-1}));this.trait.splice(e,t,o)}}]),e}();function F(e){return"INPUT"===e.tagName||"TEXTAREA"===e.tagName}function j(e){return!!e.classList.contains("monaco-editor")||!e.classList.contains("monaco-list")&&(!!e.parentElement&&j(e.parentElement))}var H,B=function(){function e(t,n,i){(0,l.Z)(this,e),this.list=t,this.view=n,this.disposables=new f.SL;var r=!1!==i.multipleSelectionSupport,o=b.ju.chain((0,w.jt)(n.domNode,"keydown")).filter((function(e){return!F(e.target)})).map((function(e){return new y.y(e)}));o.filter((function(e){return 3===e.keyCode})).on(this.onEnter,this,this.disposables),o.filter((function(e){return 16===e.keyCode})).on(this.onUpArrow,this,this.disposables),o.filter((function(e){return 18===e.keyCode})).on(this.onDownArrow,this,this.disposables),o.filter((function(e){return 11===e.keyCode})).on(this.onPageUpArrow,this,this.disposables),o.filter((function(e){return 12===e.keyCode})).on(this.onPageDownArrow,this,this.disposables),o.filter((function(e){return 9===e.keyCode})).on(this.onEscape,this,this.disposables),r&&o.filter((function(e){return(m.dz?e.metaKey:e.ctrlKey)&&31===e.keyCode})).on(this.onCtrlA,this,this.disposables)}return(0,c.Z)(e,[{key:"onEnter",value:function(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection(this.list.getFocus(),e.browserEvent)}},{key:"onUpArrow",value:function(e){e.preventDefault(),e.stopPropagation(),this.list.focusPrevious(1,!1,e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()}},{key:"onDownArrow",value:function(e){e.preventDefault(),e.stopPropagation(),this.list.focusNext(1,!1,e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()}},{key:"onPageUpArrow",value:function(e){e.preventDefault(),e.stopPropagation(),this.list.focusPreviousPage(e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()}},{key:"onPageDownArrow",value:function(e){e.preventDefault(),e.stopPropagation(),this.list.focusNextPage(e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()}},{key:"onCtrlA",value:function(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection((0,g.w6)(this.list.length),e.browserEvent),this.view.domNode.focus()}},{key:"onEscape",value:function(e){this.list.getSelection().length&&(e.preventDefault(),e.stopPropagation(),this.list.setSelection([],e.browserEvent),this.view.domNode.focus())}},{key:"dispose",value:function(){this.disposables.dispose()}}]),e}();!function(e){e[e.Idle=0]="Idle",e[e.Typing=1]="Typing"}(H||(H={}));var z=new(function(){function e(){(0,l.Z)(this,e)}return(0,c.Z)(e,[{key:"mightProducePrintableCharacter",value:function(e){return!(e.ctrlKey||e.metaKey||e.altKey)&&(e.keyCode>=31&&e.keyCode<=56||e.keyCode>=21&&e.keyCode<=30||e.keyCode>=93&&e.keyCode<=102||e.keyCode>=80&&e.keyCode<=90)}}]),e}()),W=function(){function e(t,n,i,r){(0,l.Z)(this,e),this.list=t,this.view=n,this.keyboardNavigationLabelProvider=i,this.delegate=r,this.enabled=!1,this.state=H.Idle,this.automaticKeyboardNavigation=!0,this.triggered=!1,this.previouslyFocused=-1,this.enabledDisposables=new f.SL,this.disposables=new f.SL,this.updateOptions(t.options)}return(0,c.Z)(e,[{key:"updateOptions",value:function(e){"undefined"===typeof e.enableKeyboardNavigation||!!e.enableKeyboardNavigation?this.enable():this.disable(),"undefined"!==typeof e.automaticKeyboardNavigation&&(this.automaticKeyboardNavigation=e.automaticKeyboardNavigation)}},{key:"enable",value:function(){var e=this;if(!this.enabled){var t=b.ju.chain((0,w.jt)(this.view.domNode,"keydown")).filter((function(e){return!F(e.target)})).filter((function(){return e.automaticKeyboardNavigation||e.triggered})).map((function(e){return new y.y(e)})).filter((function(t){return e.delegate.mightProducePrintableCharacter(t)})).forEach((function(e){e.stopPropagation(),e.preventDefault()})).map((function(e){return e.browserEvent.key})).event,n=b.ju.debounce(t,(function(){return null}),800);b.ju.reduce(b.ju.any(t,n),(function(e,t){return null===t?null:(e||"")+t}))(this.onInput,this,this.enabledDisposables),n(this.onClear,this,this.enabledDisposables),this.enabled=!0,this.triggered=!1}}},{key:"disable",value:function(){this.enabled&&(this.enabledDisposables.clear(),this.enabled=!1,this.triggered=!1)}},{key:"onClear",value:function(){var e,t=this.list.getFocus();if(t.length>0&&t[0]===this.previouslyFocused){var n=null===(e=this.list.options.accessibilityProvider)||void 0===e?void 0:e.getAriaLabel(this.list.element(t[0]));n&&(0,N.Z9)(n)}this.previouslyFocused=-1}},{key:"onInput",value:function(e){if(!e)return this.state=H.Idle,void(this.triggered=!1);var t=this.list.getFocus(),n=t.length>0?t[0]:0,i=this.state===H.Idle?1:0;this.state=H.Typing;for(var r=0;r<this.list.length;r++){var o=(n+r+i)%this.list.length,a=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(this.view.element(o)),s=a&&a.toString();if("undefined"===typeof s||(0,D.Ji)(e,s))return this.previouslyFocused=n,this.list.setFocus([o]),void this.list.reveal(o)}}},{key:"dispose",value:function(){this.disable(),this.enabledDisposables.dispose(),this.disposables.dispose()}}]),e}(),V=function(){function e(t,n){(0,l.Z)(this,e),this.list=t,this.view=n,this.disposables=new f.SL,b.ju.chain((0,w.jt)(n.domNode,"keydown")).filter((function(e){return!F(e.target)})).map((function(e){return new y.y(e)})).filter((function(e){return 2===e.keyCode&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&!e.altKey})).on(this.onTab,this,this.disposables)}return(0,c.Z)(e,[{key:"onTab",value:function(e){if(e.target===this.view.domNode){var t=this.list.getFocus();if(0!==t.length){var n=this.view.domElement(t[0]);if(n){var i=n.querySelector("[tabIndex]");if(i&&i instanceof HTMLElement&&-1!==i.tabIndex){var r=window.getComputedStyle(i);"hidden"!==r.visibility&&"none"!==r.display&&(e.preventDefault(),e.stopPropagation(),i.focus())}}}}}},{key:"dispose",value:function(){this.disposables.dispose()}}]),e}();function Y(e){return m.dz?e.browserEvent.metaKey:e.browserEvent.ctrlKey}function U(e){return e.browserEvent.shiftKey}var K={isSelectionSingleChangeEvent:Y,isSelectionRangeChangeEvent:U},q=function(){function e(t){(0,l.Z)(this,e),this.list=t,this.disposables=new f.SL,this._onPointer=new b.Q5,this.onPointer=this._onPointer.event,this.multipleSelectionSupport=!(!1===t.options.multipleSelectionSupport),this.multipleSelectionSupport&&(this.multipleSelectionController=t.options.multipleSelectionController||K),this.mouseSupport="undefined"===typeof t.options.mouseSupport||!!t.options.mouseSupport,this.mouseSupport&&(t.onMouseDown(this.onMouseDown,this,this.disposables),t.onContextMenu(this.onContextMenu,this,this.disposables),t.onMouseDblClick(this.onDoubleClick,this,this.disposables),t.onTouchStart(this.onMouseDown,this,this.disposables),this.disposables.add(_.o.addTarget(t.getHTMLElement()))),b.ju.any(t.onMouseClick,t.onMouseMiddleClick,t.onTap)(this.onViewPointer,this,this.disposables)}return(0,c.Z)(e,[{key:"isSelectionSingleChangeEvent",value:function(e){return this.multipleSelectionController?this.multipleSelectionController.isSelectionSingleChangeEvent(e):m.dz?e.browserEvent.metaKey:e.browserEvent.ctrlKey}},{key:"isSelectionRangeChangeEvent",value:function(e){return this.multipleSelectionController?this.multipleSelectionController.isSelectionRangeChangeEvent(e):e.browserEvent.shiftKey}},{key:"isSelectionChangeEvent",value:function(e){return this.isSelectionSingleChangeEvent(e)||this.isSelectionRangeChangeEvent(e)}},{key:"onMouseDown",value:function(e){j(e.browserEvent.target)||document.activeElement!==e.browserEvent.target&&this.list.domFocus()}},{key:"onContextMenu",value:function(e){if(!j(e.browserEvent.target)){var t="undefined"===typeof e.index?[]:[e.index];this.list.setFocus(t,e.browserEvent)}}},{key:"onViewPointer",value:function(e){if(this.mouseSupport&&!F(e.browserEvent.target)&&!j(e.browserEvent.target)){var t,n=e.index;if("undefined"===typeof n)return this.list.setFocus([],e.browserEvent),this.list.setSelection([],e.browserEvent),void this.list.setAnchor(void 0);if(this.multipleSelectionSupport&&this.isSelectionRangeChangeEvent(e))return this.changeSelection(e);if(this.multipleSelectionSupport&&this.isSelectionChangeEvent(e))return this.changeSelection(e);this.list.setFocus([n],e.browserEvent),this.list.setAnchor(n),(t=e.browserEvent)instanceof MouseEvent&&2===t.button||this.list.setSelection([n],e.browserEvent),this._onPointer.fire(e)}}},{key:"onDoubleClick",value:function(e){if(!F(e.browserEvent.target)&&!j(e.browserEvent.target)&&(!this.multipleSelectionSupport||!this.isSelectionChangeEvent(e))){var t=this.list.getFocus();this.list.setSelection(t,e.browserEvent)}}},{key:"changeSelection",value:function(e){var t=e.index,n=this.list.getAnchor();if(this.isSelectionRangeChangeEvent(e)&&"number"===typeof n){var i=Math.min(n,t),r=Math.max(n,t),o=(0,g.w6)(i,r+1),a=this.list.getSelection(),u=function(e,t){var n=e.indexOf(t);if(-1===n)return[];var i=[],r=n-1;for(;r>=0&&e[r]===t-(n-r);)i.push(e[r--]);i.reverse(),r=n;for(;r<e.length&&e[r]===t+(r-n);)i.push(e[r++]);return i}(X(a,[n]),n);if(0===u.length)return;var l=X(o,function(e,t){var n=[],i=0,r=0;for(;i<e.length||r<t.length;)if(i>=e.length)n.push(t[r++]);else if(r>=t.length)n.push(e[i++]);else{if(e[i]===t[r]){i++,r++;continue}e[i]<t[r]?n.push(e[i++]):r++}return n}(a,u));this.list.setSelection(l,e.browserEvent),this.list.setFocus([t],e.browserEvent)}else if(this.isSelectionSingleChangeEvent(e)){var c=this.list.getSelection(),d=c.filter((function(e){return e!==t}));this.list.setFocus([t]),this.list.setAnchor(t),c.length===d.length?this.list.setSelection([].concat((0,s.Z)(d),[t]),e.browserEvent):this.list.setSelection(d,e.browserEvent)}}},{key:"dispose",value:function(){this.disposables.dispose()}}]),e}(),G=function(){function e(t,n){(0,l.Z)(this,e),this.styleElement=t,this.selectorSuffix=n}return(0,c.Z)(e,[{key:"style",value:function(e){var t=this.selectorSuffix&&".".concat(this.selectorSuffix),n=[];e.listBackground&&(e.listBackground.isOpaque()?n.push(".monaco-list".concat(t," .monaco-list-rows { background: ").concat(e.listBackground,"; }")):m.dz||console.warn("List with id '".concat(this.selectorSuffix,"' was styled with a non-opaque background color. This will break sub-pixel antialiasing."))),e.listFocusBackground&&(n.push(".monaco-list".concat(t,":focus .monaco-list-row.focused { background-color: ").concat(e.listFocusBackground,"; }")),n.push(".monaco-list".concat(t,":focus .monaco-list-row.focused:hover { background-color: ").concat(e.listFocusBackground,"; }"))),e.listFocusForeground&&n.push(".monaco-list".concat(t,":focus .monaco-list-row.focused { color: ").concat(e.listFocusForeground,"; }")),e.listActiveSelectionBackground&&(n.push(".monaco-list".concat(t,":focus .monaco-list-row.selected { background-color: ").concat(e.listActiveSelectionBackground,"; }")),n.push(".monaco-list".concat(t,":focus .monaco-list-row.selected:hover { background-color: ").concat(e.listActiveSelectionBackground,"; }"))),e.listActiveSelectionForeground&&n.push(".monaco-list".concat(t,":focus .monaco-list-row.selected { color: ").concat(e.listActiveSelectionForeground,"; }")),e.listFocusAndSelectionBackground&&n.push("\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list".concat(t,":focus .monaco-list-row.selected.focused { background-color: ").concat(e.listFocusAndSelectionBackground,"; }\n\t\t\t")),e.listFocusAndSelectionForeground&&n.push("\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list".concat(t,":focus .monaco-list-row.selected.focused { color: ").concat(e.listFocusAndSelectionForeground,"; }\n\t\t\t")),e.listInactiveFocusForeground&&(n.push(".monaco-list".concat(t," .monaco-list-row.focused { color: ").concat(e.listInactiveFocusForeground,"; }")),n.push(".monaco-list".concat(t," .monaco-list-row.focused:hover { color: ").concat(e.listInactiveFocusForeground,"; }"))),e.listInactiveFocusBackground&&(n.push(".monaco-list".concat(t," .monaco-list-row.focused { background-color: ").concat(e.listInactiveFocusBackground,"; }")),n.push(".monaco-list".concat(t," .monaco-list-row.focused:hover { background-color: ").concat(e.listInactiveFocusBackground,"; }"))),e.listInactiveSelectionBackground&&(n.push(".monaco-list".concat(t," .monaco-list-row.selected { background-color: ").concat(e.listInactiveSelectionBackground,"; }")),n.push(".monaco-list".concat(t," .monaco-list-row.selected:hover { background-color: ").concat(e.listInactiveSelectionBackground,"; }"))),e.listInactiveSelectionForeground&&n.push(".monaco-list".concat(t," .monaco-list-row.selected { color: ").concat(e.listInactiveSelectionForeground,"; }")),e.listHoverBackground&&n.push(".monaco-list".concat(t,":not(.drop-target) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ").concat(e.listHoverBackground,"; }")),e.listHoverForeground&&n.push(".monaco-list".concat(t," .monaco-list-row:hover:not(.selected):not(.focused) { color: ").concat(e.listHoverForeground,"; }")),e.listSelectionOutline&&n.push(".monaco-list".concat(t," .monaco-list-row.selected { outline: 1px dotted ").concat(e.listSelectionOutline,"; outline-offset: -1px; }")),e.listFocusOutline&&n.push("\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list".concat(t,":focus .monaco-list-row.focused { outline: 1px solid ").concat(e.listFocusOutline,"; outline-offset: -1px; }\n\t\t\t")),e.listInactiveFocusOutline&&n.push(".monaco-list".concat(t," .monaco-list-row.focused { outline: 1px dotted ").concat(e.listInactiveFocusOutline,"; outline-offset: -1px; }")),e.listHoverOutline&&n.push(".monaco-list".concat(t," .monaco-list-row:hover { outline: 1px dashed ").concat(e.listHoverOutline,"; outline-offset: -1px; }")),e.listDropBackground&&n.push("\n\t\t\t\t.monaco-list".concat(t,".drop-target,\n\t\t\t\t.monaco-list").concat(t," .monaco-list-rows.drop-target,\n\t\t\t\t.monaco-list").concat(t," .monaco-list-row.drop-target { background-color: ").concat(e.listDropBackground," !important; color: inherit !important; }\n\t\t\t")),e.listFilterWidgetBackground&&n.push(".monaco-list-type-filter { background-color: ".concat(e.listFilterWidgetBackground," }")),e.listFilterWidgetOutline&&n.push(".monaco-list-type-filter { border: 1px solid ".concat(e.listFilterWidgetOutline,"; }")),e.listFilterWidgetNoMatchesOutline&&n.push(".monaco-list-type-filter.no-matches { border: 1px solid ".concat(e.listFilterWidgetNoMatchesOutline,"; }")),e.listMatchesShadow&&n.push(".monaco-list-type-filter { box-shadow: 1px 1px 1px ".concat(e.listMatchesShadow,"; }")),e.tableColumnsBorder&&n.push("\n\t\t\t\t.monaco-table:hover > .monaco-split-view2,\n\t\t\t\t.monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\t\t\tborder-color: ".concat(e.tableColumnsBorder,";\n\t\t\t}")),this.styleElement.textContent=n.join("\n")}}]),e}(),$={listFocusBackground:S.Il.fromHex("#7FB0D0"),listActiveSelectionBackground:S.Il.fromHex("#0E639C"),listActiveSelectionForeground:S.Il.fromHex("#FFFFFF"),listFocusAndSelectionBackground:S.Il.fromHex("#094771"),listFocusAndSelectionForeground:S.Il.fromHex("#FFFFFF"),listInactiveSelectionBackground:S.Il.fromHex("#3F3F46"),listHoverBackground:S.Il.fromHex("#2A2D2E"),listDropBackground:S.Il.fromHex("#383B3D"),treeIndentGuidesStroke:S.Il.fromHex("#a9a9a9"),tableColumnsBorder:S.Il.fromHex("#cccccc").transparent(.2)},Q={keyboardSupport:!0,mouseSupport:!0,multipleSelectionSupport:!0,dnd:{getDragURI:function(){return null},onDragStart:function(){},onDragOver:function(){return!1},drop:function(){}}};function X(e,t){for(var n=[],i=0,r=0;i<e.length||r<t.length;)if(i>=e.length)n.push(t[r++]);else if(r>=t.length)n.push(e[i++]);else{if(e[i]===t[r]){n.push(e[i]),i++,r++;continue}e[i]<t[r]?n.push(e[i++]):n.push(t[r++])}return n}var J=function(e,t){return e-t},ee=function(){function e(t,n){(0,l.Z)(this,e),this._templateId=t,this.renderers=n}return(0,c.Z)(e,[{key:"templateId",get:function(){return this._templateId}},{key:"renderTemplate",value:function(e){return this.renderers.map((function(t){return t.renderTemplate(e)}))}},{key:"renderElement",value:function(e,t,n,i){var r,o=0,a=(0,u.Z)(this.renderers);try{for(a.s();!(r=a.n()).done;){r.value.renderElement(e,t,n[o++],i)}}catch(s){a.e(s)}finally{a.f()}}},{key:"disposeElement",value:function(e,t,n,i){var r,o=0,a=(0,u.Z)(this.renderers);try{for(a.s();!(r=a.n()).done;){var s=r.value;s.disposeElement&&s.disposeElement(e,t,n[o],i),o+=1}}catch(l){a.e(l)}finally{a.f()}}},{key:"disposeTemplate",value:function(e){var t,n=0,i=(0,u.Z)(this.renderers);try{for(i.s();!(t=i.n()).done;){t.value.disposeTemplate(e[n++])}}catch(r){i.e(r)}finally{i.f()}}}]),e}(),te=function(){function e(t){(0,l.Z)(this,e),this.accessibilityProvider=t,this.templateId="a18n"}return(0,c.Z)(e,[{key:"renderTemplate",value:function(e){return e}},{key:"renderElement",value:function(e,t,n){var i=this.accessibilityProvider.getAriaLabel(e);i?n.setAttribute("aria-label",i):n.removeAttribute("aria-label");var r=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(e);"number"===typeof r?n.setAttribute("aria-level","".concat(r)):n.removeAttribute("aria-level")}},{key:"disposeTemplate",value:function(e){}}]),e}(),ne=function(){function e(t,n){(0,l.Z)(this,e),this.list=t,this.dnd=n}return(0,c.Z)(e,[{key:"getDragElements",value:function(e){var t=this.list.getSelectedElements();return t.indexOf(e)>-1?t:[e]}},{key:"getDragURI",value:function(e){return this.dnd.getDragURI(e)}},{key:"getDragLabel",value:function(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e,t)}},{key:"onDragStart",value:function(e,t){this.dnd.onDragStart&&this.dnd.onDragStart(e,t)}},{key:"onDragOver",value:function(e,t,n,i){return this.dnd.onDragOver(e,t,n,i)}},{key:"onDragEnd",value:function(e){this.dnd.onDragEnd&&this.dnd.onDragEnd(e)}},{key:"drop",value:function(e,t,n,i){this.dnd.drop(e,t,n,i)}}]),e}(),ie=function(){function e(t,n,i,r){var o,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:Q;(0,l.Z)(this,e),this.user=t,this._options=a,this.focus=new R("focused"),this.anchor=new R("anchor"),this.eventBufferer=new b.E7,this._ariaLabel="",this.disposables=new f.SL,this._onDidDispose=new b.Q5,this.onDidDispose=this._onDidDispose.event;var s=this._options.accessibilityProvider&&this._options.accessibilityProvider.getWidgetRole?null===(o=this._options.accessibilityProvider)||void 0===o?void 0:o.getWidgetRole():"list";this.selection=new P("listbox"!==s),(0,x.jB)(a,$,!1);var u=[this.focus.renderer,this.selection.renderer];this.accessibilityProvider=a.accessibilityProvider,this.accessibilityProvider&&(u.push(new te(this.accessibilityProvider)),this.accessibilityProvider.onDidChangeActiveDescendant&&this.accessibilityProvider.onDidChangeActiveDescendant(this.onDidChangeActiveDescendant,this,this.disposables)),r=r.map((function(e){return new ee(e.templateId,[].concat(u,[e]))}));var c=Object.assign(Object.assign({},a),{dnd:a.dnd&&new ne(this,a.dnd)});if(this.view=new k.Bv(n,i,r,c),this.view.domNode.setAttribute("role",s),a.styleController)this.styleController=a.styleController(this.view.domId);else{var d=(0,M.createStyleSheet)(this.view.domNode);this.styleController=new G(d,this.view.domId)}if(this.spliceable=new L([new Z(this.focus,this.view,a.identityProvider),new Z(this.selection,this.view,a.identityProvider),new Z(this.anchor,this.view,a.identityProvider),this.view]),this.disposables.add(this.focus),this.disposables.add(this.selection),this.disposables.add(this.anchor),this.disposables.add(this.view),this.disposables.add(this._onDidDispose),this.onDidFocus=b.ju.map((0,w.jt)(this.view.domNode,"focus",!0),(function(){return null})),this.onDidBlur=b.ju.map((0,w.jt)(this.view.domNode,"blur",!0),(function(){return null})),this.disposables.add(new V(this,this.view)),"boolean"!==typeof a.keyboardSupport||a.keyboardSupport){var h=new B(this,this.view,a);this.disposables.add(h)}if(a.keyboardNavigationLabelProvider){var p=a.keyboardNavigationDelegate||z;this.typeLabelController=new W(this,this.view,a.keyboardNavigationLabelProvider,p),this.disposables.add(this.typeLabelController)}this.mouseController=this.createMouseController(a),this.disposables.add(this.mouseController),this.onDidChangeFocus(this._onFocusChange,this,this.disposables),this.onDidChangeSelection(this._onSelectionChange,this,this.disposables),this.accessibilityProvider&&(this.ariaLabel=this.accessibilityProvider.getWidgetAriaLabel()),a.multipleSelectionSupport&&this.view.domNode.setAttribute("aria-multiselectable","true")}return(0,c.Z)(e,[{key:"onDidChangeFocus",get:function(){var e=this;return b.ju.map(this.eventBufferer.wrapEvent(this.focus.onChange),(function(t){return e.toListEvent(t)}))}},{key:"onDidChangeSelection",get:function(){var e=this;return b.ju.map(this.eventBufferer.wrapEvent(this.selection.onChange),(function(t){return e.toListEvent(t)}))}},{key:"domId",get:function(){return this.view.domId}},{key:"onMouseClick",get:function(){return this.view.onMouseClick}},{key:"onMouseDblClick",get:function(){return this.view.onMouseDblClick}},{key:"onMouseMiddleClick",get:function(){return this.view.onMouseMiddleClick}},{key:"onPointer",get:function(){return this.mouseController.onPointer}},{key:"onMouseDown",get:function(){return this.view.onMouseDown}},{key:"onTouchStart",get:function(){return this.view.onTouchStart}},{key:"onTap",get:function(){return this.view.onTap}},{key:"onContextMenu",get:function(){var e=this,t=!1,n=b.ju.chain((0,w.jt)(this.view.domNode,"keydown")).map((function(e){return new y.y(e)})).filter((function(e){return t=58===e.keyCode||e.shiftKey&&68===e.keyCode})).map(w.p7).filter((function(){return!1})).event,i=b.ju.chain((0,w.jt)(this.view.domNode,"keyup")).forEach((function(){return t=!1})).map((function(e){return new y.y(e)})).filter((function(e){return 58===e.keyCode||e.shiftKey&&68===e.keyCode})).map(w.p7).map((function(t){var n=t.browserEvent,i=e.getFocus(),r=i.length?i[0]:void 0;return{index:r,element:"undefined"!==typeof r?e.view.element(r):void 0,anchor:"undefined"!==typeof r?e.view.domElement(r):e.view.domNode,browserEvent:n}})).event,r=b.ju.chain(this.view.onContextMenu).filter((function(e){return!t})).map((function(e){var t=e.element,n=e.index,i=e.browserEvent;return{element:t,index:n,anchor:{x:i.clientX+1,y:i.clientY},browserEvent:i}})).event;return b.ju.any(n,i,r)}},{key:"onKeyDown",get:function(){return(0,w.jt)(this.view.domNode,"keydown")}},{key:"createMouseController",value:function(e){return new q(this)}},{key:"updateOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._options=Object.assign(Object.assign({},this._options),e),this.typeLabelController&&this.typeLabelController.updateOptions(this._options),this.view.updateOptions(e)}},{key:"options",get:function(){return this._options}},{key:"splice",value:function(e,t){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(e<0||e>this.view.length)throw new C(this.user,"Invalid start index: ".concat(e));if(t<0)throw new C(this.user,"Invalid delete count: ".concat(t));0===t&&0===i.length||this.eventBufferer.bufferEvents((function(){return n.spliceable.splice(e,t,i)}))}},{key:"rerender",value:function(){this.view.rerender()}},{key:"element",value:function(e){return this.view.element(e)}},{key:"length",get:function(){return this.view.length}},{key:"contentHeight",get:function(){return this.view.contentHeight}},{key:"scrollTop",get:function(){return this.view.getScrollTop()},set:function(e){this.view.setScrollTop(e)}},{key:"ariaLabel",get:function(){return this._ariaLabel},set:function(e){this._ariaLabel=e,this.view.domNode.setAttribute("aria-label",e)}},{key:"domFocus",value:function(){this.view.domNode.focus({preventScroll:!0})}},{key:"layout",value:function(e,t){this.view.layout(e,t)}},{key:"setSelection",value:function(e,t){var n,i=(0,u.Z)(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;if(r<0||r>=this.length)throw new C(this.user,"Invalid index ".concat(r))}}catch(o){i.e(o)}finally{i.f()}this.selection.set(e,t)}},{key:"getSelection",value:function(){return this.selection.get()}},{key:"getSelectedElements",value:function(){var e=this;return this.getSelection().map((function(t){return e.view.element(t)}))}},{key:"setAnchor",value:function(e){if("undefined"!==typeof e){if(e<0||e>=this.length)throw new C(this.user,"Invalid index ".concat(e));this.anchor.set([e])}else this.anchor.set([])}},{key:"getAnchor",value:function(){return(0,g.Xh)(this.anchor.get(),void 0)}},{key:"setFocus",value:function(e,t){var n,i=(0,u.Z)(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;if(r<0||r>=this.length)throw new C(this.user,"Invalid index ".concat(r))}}catch(o){i.e(o)}finally{i.f()}this.focus.set(e,t)}},{key:"focusNext",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;if(0!==this.length){var r=this.focus.get(),o=this.findNextIndex(r.length>0?r[0]+e:0,t,i);o>-1&&this.setFocus([o],n)}}},{key:"focusPrevious",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;if(0!==this.length){var r=this.focus.get(),o=this.findPreviousIndex(r.length>0?r[0]-e:0,t,i);o>-1&&this.setFocus([o],n)}}},{key:"focusNextPage",value:function(e,t){return O(this,void 0,void 0,h().mark((function n(){var i,r,o,a,s;return h().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(i=0===(i=this.view.indexAt(this.view.getScrollTop()+this.view.renderHeight))?0:i-1,r=this.view.element(i),(o=this.getFocusedElements()[0])===r){n.next=9;break}(a=this.findPreviousIndex(i,!1,t))>-1&&o!==this.view.element(a)?this.setFocus([a],e):this.setFocus([i],e),n.next=17;break;case 9:if(s=this.view.getScrollTop(),this.view.setScrollTop(s+this.view.renderHeight-this.view.elementHeight(i)),this.view.getScrollTop()===s){n.next=17;break}return this.setFocus([]),n.next=15,(0,T.Vs)(0);case 15:return n.next=17,this.focusNextPage(e,t);case 17:case"end":return n.stop()}}),n,this)})))}},{key:"focusPreviousPage",value:function(e,t){return O(this,void 0,void 0,h().mark((function n(){var i,r,o,a,s,u;return h().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=this.view.getScrollTop(),i=0===r?this.view.indexAt(r):this.view.indexAfter(r-1),o=this.view.element(i),(a=this.getFocusedElements()[0])===o){n.next=9;break}(s=this.findNextIndex(i,!1,t))>-1&&a!==this.view.element(s)?this.setFocus([s],e):this.setFocus([i],e),n.next=17;break;case 9:if(u=r,this.view.setScrollTop(r-this.view.renderHeight),this.view.getScrollTop()===u){n.next=17;break}return this.setFocus([]),n.next=15,(0,T.Vs)(0);case 15:return n.next=17,this.focusPreviousPage(e,t);case 17:case"end":return n.stop()}}),n,this)})))}},{key:"focusLast",value:function(e,t){if(0!==this.length){var n=this.findPreviousIndex(this.length-1,!1,t);n>-1&&this.setFocus([n],e)}}},{key:"focusFirst",value:function(e,t){this.focusNth(0,e,t)}},{key:"focusNth",value:function(e,t,n){if(0!==this.length){var i=this.findNextIndex(e,!1,n);i>-1&&this.setFocus([i],t)}}},{key:"findNextIndex",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2?arguments[2]:void 0,i=0;i<this.length;i++){if(e>=this.length&&!t)return-1;if(e%=this.length,!n||n(this.element(e)))return e;e++}return-1}},{key:"findPreviousIndex",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2?arguments[2]:void 0,i=0;i<this.length;i++){if(e<0&&!t)return-1;if(e=(this.length+e%this.length)%this.length,!n||n(this.element(e)))return e;e--}return-1}},{key:"getFocus",value:function(){return this.focus.get()}},{key:"getFocusedElements",value:function(){var e=this;return this.getFocus().map((function(t){return e.view.element(t)}))}},{key:"reveal",value:function(e,t){if(e<0||e>=this.length)throw new C(this.user,"Invalid index ".concat(e));var n=this.view.getScrollTop(),i=this.view.elementTop(e),r=this.view.elementHeight(e);if((0,p.hj)(t)){var o=r-this.view.renderHeight;this.view.setScrollTop(o*(0,E.u)(t,0,1)+i)}else{var a=i+r,s=n+this.view.renderHeight;i<n&&a>=s||(i<n||a>=s&&r>=this.view.renderHeight?this.view.setScrollTop(i):a>=s&&this.view.setScrollTop(a-this.view.renderHeight))}}},{key:"getRelativeTop",value:function(e){if(e<0||e>=this.length)throw new C(this.user,"Invalid index ".concat(e));var t=this.view.getScrollTop(),n=this.view.elementTop(e),i=this.view.elementHeight(e);if(n<t||n+i>t+this.view.renderHeight)return null;var r=i-this.view.renderHeight;return Math.abs((t-n)/r)}},{key:"getHTMLElement",value:function(){return this.view.domNode}},{key:"style",value:function(e){this.styleController.style(e)}},{key:"toListEvent",value:function(e){var t=this,n=e.indexes,i=e.browserEvent;return{indexes:n,elements:n.map((function(e){return t.view.element(e)})),browserEvent:i}}},{key:"_onFocusChange",value:function(){var e=this.focus.get();this.view.domNode.classList.toggle("element-focused",e.length>0),this.onDidChangeActiveDescendant()}},{key:"onDidChangeActiveDescendant",value:function(){var e,t,n=this.focus.get();n.length>0?((null===(e=this.accessibilityProvider)||void 0===e?void 0:e.getActiveDescendantId)&&(t=this.accessibilityProvider.getActiveDescendantId(this.view.element(n[0]))),this.view.domNode.setAttribute("aria-activedescendant",t||this.view.getElementDomId(n[0]))):this.view.domNode.removeAttribute("aria-activedescendant")}},{key:"_onSelectionChange",value:function(){var e=this.selection.get();this.view.domNode.classList.toggle("selection-none",0===e.length),this.view.domNode.classList.toggle("selection-single",1===e.length),this.view.domNode.classList.toggle("selection-multiple",e.length>1)}},{key:"dispose",value:function(){this._onDidDispose.fire(),this.disposables.dispose(),this._onDidDispose.dispose()}}]),e}();I([v.H],ie.prototype,"onDidChangeFocus",null),I([v.H],ie.prototype,"onDidChangeSelection",null),I([v.H],ie.prototype,"onContextMenu",null)},79026:function(e,t,n){"use strict";n.d(t,{S:function(){return i}});var i="monaco-mouse-cursor-text"},2523:function(e,t,n){"use strict";n.d(t,{l:function(){return i},g:function(){return E}});var i,r=n(37762),o=n(93433),a=n(15671),s=n(43144),u=n(97326),l=n(11752),c=n(61120),d=n(60136),h=n(43668),f=n(81626),p=n(30487),g=n(25941),v=n(25044),m=n(55076),_=n(11732),y=n(84540),b=n(61680),w=n(27997),C=!1;!function(e){e.North="north",e.South="south",e.East="east",e.West="west"}(i||(i={}));var k=4,S=new _.Q5,x=300,L=new _.Q5,E=function(e){(0,d.Z)(n,e);var t=(0,h.Z)(n);function n(e,i,r){var o;return(0,a.Z)(this,n),(o=t.call(this)).hoverDelay=x,o.hoverDelayer=o._register(new w.vp(o.hoverDelay)),o._state=3,o._onDidEnablementChange=o._register(new _.Q5),o.onDidEnablementChange=o._onDidEnablementChange.event,o._onDidStart=o._register(new _.Q5),o.onDidStart=o._onDidStart.event,o._onDidChange=o._register(new _.Q5),o.onDidChange=o._onDidChange.event,o._onDidReset=o._register(new _.Q5),o.onDidReset=o._onDidReset.event,o._onDidEnd=o._register(new _.Q5),o.onDidEnd=o._onDidEnd.event,o.linkedSash=void 0,o.orthogonalStartSashDisposables=o._register(new f.SL),o.orthogonalStartDragHandleDisposables=o._register(new f.SL),o.orthogonalEndSashDisposables=o._register(new f.SL),o.orthogonalEndDragHandleDisposables=o._register(new f.SL),o.el=(0,y.append)(e,(0,y.$)(".monaco-sash")),r.orthogonalEdge&&o.el.classList.add("orthogonal-edge-".concat(r.orthogonalEdge)),p.dz&&o.el.classList.add("mac"),o._register((0,b.jt)(o.el,"mousedown")(o.onMouseDown,(0,u.Z)(o))),o._register((0,b.jt)(o.el,"dblclick")(o.onMouseDoubleClick,(0,u.Z)(o))),o._register((0,b.jt)(o.el,"mouseenter")((function(){return n.onMouseEnter((0,u.Z)(o))}))),o._register((0,b.jt)(o.el,"mouseleave")((function(){return n.onMouseLeave((0,u.Z)(o))}))),o._register(v.o.addTarget(o.el)),o._register((0,b.jt)(o.el,v.t.Start)((function(e){return o.onTouchStart(e)}),(0,u.Z)(o))),"number"===typeof r.size?(o.size=r.size,0===r.orientation?o.el.style.width="".concat(o.size,"px"):o.el.style.height="".concat(o.size,"px")):(o.size=k,o._register(S.event((function(e){o.size=e,o.layout()})))),o._register(L.event((function(e){return o.hoverDelay=e}))),o.hidden=!1,o.layoutProvider=i,o.orthogonalStartSash=r.orthogonalStartSash,o.orthogonalEndSash=r.orthogonalEndSash,o.orientation=r.orientation||0,1===o.orientation?(o.el.classList.add("horizontal"),o.el.classList.remove("vertical")):(o.el.classList.remove("horizontal"),o.el.classList.add("vertical")),o.el.classList.toggle("debug",C),o.layout(),o}return(0,s.Z)(n,[{key:"state",get:function(){return this._state},set:function(e){this._state!==e&&(this.el.classList.toggle("disabled",0===e),this.el.classList.toggle("minimum",1===e),this.el.classList.toggle("maximum",2===e),this._state=e,this._onDidEnablementChange.fire(e))}},{key:"orthogonalStartSash",get:function(){return this._orthogonalStartSash},set:function(e){var t=this;if(this.orthogonalStartDragHandleDisposables.clear(),this.orthogonalStartSashDisposables.clear(),e){var i=function(i){t.orthogonalStartDragHandleDisposables.clear(),0!==i&&(t._orthogonalStartDragHandle=(0,y.append)(t.el,(0,y.$)(".orthogonal-drag-handle.start")),t.orthogonalStartDragHandleDisposables.add((0,f.OF)((function(){return t._orthogonalStartDragHandle.remove()}))),(0,b.jt)(t._orthogonalStartDragHandle,"mouseenter")((function(){return n.onMouseEnter(e)}),void 0,t.orthogonalStartDragHandleDisposables),(0,b.jt)(t._orthogonalStartDragHandle,"mouseleave")((function(){return n.onMouseLeave(e)}),void 0,t.orthogonalStartDragHandleDisposables))};this.orthogonalStartSashDisposables.add(e.onDidEnablementChange(i,this)),i(e.state)}this._orthogonalStartSash=e}},{key:"orthogonalEndSash",get:function(){return this._orthogonalEndSash},set:function(e){var t=this;if(this.orthogonalEndDragHandleDisposables.clear(),this.orthogonalEndSashDisposables.clear(),e){var i=function(i){t.orthogonalEndDragHandleDisposables.clear(),0!==i&&(t._orthogonalEndDragHandle=(0,y.append)(t.el,(0,y.$)(".orthogonal-drag-handle.end")),t.orthogonalEndDragHandleDisposables.add((0,f.OF)((function(){return t._orthogonalEndDragHandle.remove()}))),(0,b.jt)(t._orthogonalEndDragHandle,"mouseenter")((function(){return n.onMouseEnter(e)}),void 0,t.orthogonalEndDragHandleDisposables),(0,b.jt)(t._orthogonalEndDragHandle,"mouseleave")((function(){return n.onMouseLeave(e)}),void 0,t.orthogonalEndDragHandleDisposables))};this.orthogonalEndSashDisposables.add(e.onDidEnablementChange(i,this)),i(e.state)}this._orthogonalEndSash=e}},{key:"onMouseDown",value:function(e){var t=this;y.EventHelper.stop(e,!1);var n=!1;if(!e.__orthogonalSashEvent){var i=this.getOrthogonalSash(e);i&&(n=!0,e.__orthogonalSashEvent=!0,i.onMouseDown(e))}if(this.linkedSash&&!e.__linkedSashEvent&&(e.__linkedSashEvent=!0,this.linkedSash.onMouseDown(e)),this.state){var a,s=[].concat((0,o.Z)((0,y.getElementsByTagName)("iframe")),(0,o.Z)((0,y.getElementsByTagName)("webview"))),u=(0,r.Z)(s);try{for(u.s();!(a=u.n()).done;){a.value.style.pointerEvents="none"}}catch(C){u.e(C)}finally{u.f()}var l=new m.n(e),c=l.posx,d=l.posy,h=l.altKey,g={startX:c,currentX:c,startY:d,currentY:d,altKey:h};this.el.classList.add("active"),this._onDidStart.fire(g);var v=(0,y.createStyleSheet)(this.el),_=function(){var e="";e=n?"all-scroll":1===t.orientation?1===t.state?"s-resize":2===t.state?"n-resize":p.dz?"row-resize":"ns-resize":1===t.state?"e-resize":2===t.state?"w-resize":p.dz?"col-resize":"ew-resize",v.textContent="* { cursor: ".concat(e," !important; }")},w=new f.SL;_(),n||this.onDidEnablementChange(_,null,w);(0,b.jt)(window,"mousemove")((function(e){y.EventHelper.stop(e,!1);var n=new m.n(e),i={startX:c,currentX:n.posx,startY:d,currentY:n.posy,altKey:h};t._onDidChange.fire(i)}),null,w),(0,b.jt)(window,"mouseup")((function(e){y.EventHelper.stop(e,!1),t.el.removeChild(v),t.el.classList.remove("active"),t._onDidEnd.fire(),w.dispose();var n,i=(0,r.Z)(s);try{for(i.s();!(n=i.n()).done;){n.value.style.pointerEvents="auto"}}catch(C){i.e(C)}finally{i.f()}}),null,w)}}},{key:"onMouseDoubleClick",value:function(e){var t=this.getOrthogonalSash(e);t&&t._onDidReset.fire(),this.linkedSash&&this.linkedSash._onDidReset.fire(),this._onDidReset.fire()}},{key:"onTouchStart",value:function(e){var t=this;y.EventHelper.stop(e);var n=[],i=e.pageX,r=e.pageY,o=e.altKey;this._onDidStart.fire({startX:i,currentX:i,startY:r,currentY:r,altKey:o}),n.push((0,y.addDisposableListener)(this.el,v.t.Change,(function(e){g.hj(e.pageX)&&g.hj(e.pageY)&&t._onDidChange.fire({startX:i,currentX:e.pageX,startY:r,currentY:e.pageY,altKey:o})}))),n.push((0,y.addDisposableListener)(this.el,v.t.End,(function(){t._onDidEnd.fire(),(0,f.B9)(n)})))}},{key:"clearSashHoverState",value:function(){n.onMouseLeave(this)}},{key:"layout",value:function(){if(0===this.orientation){var e=this.layoutProvider;this.el.style.left=e.getVerticalSashLeft(this)-this.size/2+"px",e.getVerticalSashTop&&(this.el.style.top=e.getVerticalSashTop(this)+"px"),e.getVerticalSashHeight&&(this.el.style.height=e.getVerticalSashHeight(this)+"px")}else{var t=this.layoutProvider;this.el.style.top=t.getHorizontalSashTop(this)-this.size/2+"px",t.getHorizontalSashLeft&&(this.el.style.left=t.getHorizontalSashLeft(this)+"px"),t.getHorizontalSashWidth&&(this.el.style.width=t.getHorizontalSashWidth(this)+"px")}}},{key:"hide",value:function(){this.hidden=!0,this.el.style.display="none",this.el.setAttribute("aria-hidden","true")}},{key:"getOrthogonalSash",value:function(e){if(e.target&&e.target instanceof HTMLElement)return e.target.classList.contains("orthogonal-drag-handle")?e.target.classList.contains("start")?this.orthogonalStartSash:this.orthogonalEndSash:void 0}},{key:"dispose",value:function(){(0,l.Z)((0,c.Z)(n.prototype),"dispose",this).call(this),this.el.remove()}}],[{key:"onMouseEnter",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.el.classList.contains("active")?(e.hoverDelayer.cancel(),e.el.classList.add("hover")):e.hoverDelayer.trigger((function(){return e.el.classList.add("hover")}),e.hoverDelay).then(void 0,(function(){})),!t&&e.linkedSash&&n.onMouseEnter(e.linkedSash,!0)}},{key:"onMouseLeave",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.hoverDelayer.cancel(),e.el.classList.remove("hover"),!t&&e.linkedSash&&n.onMouseLeave(e.linkedSash,!0)}}]),n}(f.JT)},61727:function(e,t,n){"use strict";n.d(t,{s$:function(){return F},NB:function(){return P},$Z:function(){return Z}});var i=n(11752),r=n(61120),o=n(60136),a=n(43668),s=n(43144),u=n(15671),l=n(84540),c=n(41149),d=n(55076),h=n(78101),f=n(93433),p=n(43257),g=n(27997),v=11,m=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e){var i,r;return(0,u.Z)(this,n),(r=t.call(this))._onActivate=e.onActivate,r.bgDomNode=document.createElement("div"),r.bgDomNode.className="arrow-background",r.bgDomNode.style.position="absolute",r.bgDomNode.style.width=e.bgWidth+"px",r.bgDomNode.style.height=e.bgHeight+"px","undefined"!==typeof e.top&&(r.bgDomNode.style.top="0px"),"undefined"!==typeof e.left&&(r.bgDomNode.style.left="0px"),"undefined"!==typeof e.bottom&&(r.bgDomNode.style.bottom="0px"),"undefined"!==typeof e.right&&(r.bgDomNode.style.right="0px"),r.domNode=document.createElement("div"),r.domNode.className=e.className,(i=r.domNode.classList).add.apply(i,(0,f.Z)(e.icon.classNamesArray)),r.domNode.style.position="absolute",r.domNode.style.width=v+"px",r.domNode.style.height=v+"px","undefined"!==typeof e.top&&(r.domNode.style.top=e.top+"px"),"undefined"!==typeof e.left&&(r.domNode.style.left=e.left+"px"),"undefined"!==typeof e.bottom&&(r.domNode.style.bottom=e.bottom+"px"),"undefined"!==typeof e.right&&(r.domNode.style.right=e.right+"px"),r._mouseMoveMonitor=r._register(new h.Z),r.onmousedown(r.bgDomNode,(function(e){return r._arrowMouseDown(e)})),r.onmousedown(r.domNode,(function(e){return r._arrowMouseDown(e)})),r._mousedownRepeatTimer=r._register(new g.zh),r._mousedownScheduleRepeatTimer=r._register(new g._F),r}return(0,s.Z)(n,[{key:"_arrowMouseDown",value:function(e){var t=this;this._onActivate(),this._mousedownRepeatTimer.cancel(),this._mousedownScheduleRepeatTimer.cancelAndSet((function(){t._mousedownRepeatTimer.cancelAndSet((function(){return t._onActivate()}),1e3/24)}),200),this._mouseMoveMonitor.startMonitoring(e.target,e.buttons,h.e,(function(e){}),(function(){t._mousedownRepeatTimer.cancel(),t._mousedownScheduleRepeatTimer.cancel()})),e.preventDefault()}}]),n}(p.$),_=n(81626),y=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i,r){var o;return(0,u.Z)(this,n),(o=t.call(this))._visibility=e,o._visibleClassName=i,o._invisibleClassName=r,o._domNode=null,o._isVisible=!1,o._isNeeded=!1,o._shouldBeVisible=!1,o._revealTimer=o._register(new g._F),o}return(0,s.Z)(n,[{key:"applyVisibilitySetting",value:function(e){return 2!==this._visibility&&(3===this._visibility||e)}},{key:"setShouldBeVisible",value:function(e){var t=this.applyVisibilitySetting(e);this._shouldBeVisible!==t&&(this._shouldBeVisible=t,this.ensureVisibility())}},{key:"setIsNeeded",value:function(e){this._isNeeded!==e&&(this._isNeeded=e,this.ensureVisibility())}},{key:"setDomNode",value:function(e){this._domNode=e,this._domNode.setClassName(this._invisibleClassName),this.setShouldBeVisible(!1)}},{key:"ensureVisibility",value:function(){this._isNeeded?this._shouldBeVisible?this._reveal():this._hide(!0):this._hide(!1)}},{key:"_reveal",value:function(){var e=this;this._isVisible||(this._isVisible=!0,this._revealTimer.setIfNotSet((function(){e._domNode&&e._domNode.setClassName(e._visibleClassName)}),0))}},{key:"_hide",value:function(e){this._revealTimer.cancel(),this._isVisible&&(this._isVisible=!1,this._domNode&&this._domNode.setClassName(this._invisibleClassName+(e?" fade":"")))}}]),n}(_.JT),b=n(30487),w=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e){var i;return(0,u.Z)(this,n),(i=t.call(this))._lazyRender=e.lazyRender,i._host=e.host,i._scrollable=e.scrollable,i._scrollByPage=e.scrollByPage,i._scrollbarState=e.scrollbarState,i._visibilityController=i._register(new y(e.visibility,"visible scrollbar "+e.extraScrollbarClassName,"invisible scrollbar "+e.extraScrollbarClassName)),i._visibilityController.setIsNeeded(i._scrollbarState.isNeeded()),i._mouseMoveMonitor=i._register(new h.Z),i._shouldRender=!0,i.domNode=(0,c.X)(document.createElement("div")),i.domNode.setAttribute("role","presentation"),i.domNode.setAttribute("aria-hidden","true"),i._visibilityController.setDomNode(i.domNode),i.domNode.setPosition("absolute"),i.onmousedown(i.domNode.domNode,(function(e){return i._domNodeMouseDown(e)})),i}return(0,s.Z)(n,[{key:"_createArrow",value:function(e){var t=this._register(new m(e));this.domNode.domNode.appendChild(t.bgDomNode),this.domNode.domNode.appendChild(t.domNode)}},{key:"_createSlider",value:function(e,t,n,i){var r=this;this.slider=(0,c.X)(document.createElement("div")),this.slider.setClassName("slider"),this.slider.setPosition("absolute"),this.slider.setTop(e),this.slider.setLeft(t),"number"===typeof n&&this.slider.setWidth(n),"number"===typeof i&&this.slider.setHeight(i),this.slider.setLayerHinting(!0),this.slider.setContain("strict"),this.domNode.domNode.appendChild(this.slider.domNode),this.onmousedown(this.slider.domNode,(function(e){e.leftButton&&(e.preventDefault(),r._sliderMouseDown(e,(function(){})))})),this.onclick(this.slider.domNode,(function(e){e.leftButton&&e.stopPropagation()}))}},{key:"_onElementSize",value:function(e){return this._scrollbarState.setVisibleSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}},{key:"_onElementScrollSize",value:function(e){return this._scrollbarState.setScrollSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}},{key:"_onElementScrollPosition",value:function(e){return this._scrollbarState.setScrollPosition(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}},{key:"beginReveal",value:function(){this._visibilityController.setShouldBeVisible(!0)}},{key:"beginHide",value:function(){this._visibilityController.setShouldBeVisible(!1)}},{key:"render",value:function(){this._shouldRender&&(this._shouldRender=!1,this._renderDomNode(this._scrollbarState.getRectangleLargeSize(),this._scrollbarState.getRectangleSmallSize()),this._updateSlider(this._scrollbarState.getSliderSize(),this._scrollbarState.getArrowSize()+this._scrollbarState.getSliderPosition()))}},{key:"_domNodeMouseDown",value:function(e){e.target===this.domNode.domNode&&this._onMouseDown(e)}},{key:"delegateMouseDown",value:function(e){var t=this.domNode.domNode.getClientRects()[0].top,n=t+this._scrollbarState.getSliderPosition(),i=t+this._scrollbarState.getSliderPosition()+this._scrollbarState.getSliderSize(),r=this._sliderMousePosition(e);n<=r&&r<=i?e.leftButton&&(e.preventDefault(),this._sliderMouseDown(e,(function(){}))):this._onMouseDown(e)}},{key:"_onMouseDown",value:function(e){var t,n;if(e.target===this.domNode.domNode&&"number"===typeof e.browserEvent.offsetX&&"number"===typeof e.browserEvent.offsetY)t=e.browserEvent.offsetX,n=e.browserEvent.offsetY;else{var i=l.getDomNodePagePosition(this.domNode.domNode);t=e.posx-i.left,n=e.posy-i.top}var r=this._mouseDownRelativePosition(t,n);this._setDesiredScrollPositionNow(this._scrollByPage?this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(r):this._scrollbarState.getDesiredScrollPositionFromOffset(r)),e.leftButton&&(e.preventDefault(),this._sliderMouseDown(e,(function(){})))}},{key:"_sliderMouseDown",value:function(e,t){var n=this,i=this._sliderMousePosition(e),r=this._sliderOrthogonalMousePosition(e),o=this._scrollbarState.clone();this.slider.toggleClassName("active",!0),this._mouseMoveMonitor.startMonitoring(e.target,e.buttons,h.e,(function(e){var t=n._sliderOrthogonalMousePosition(e),a=Math.abs(t-r);if(b.ED&&a>140)n._setDesiredScrollPositionNow(o.getScrollPosition());else{var s=n._sliderMousePosition(e)-i;n._setDesiredScrollPositionNow(o.getDesiredScrollPositionFromDelta(s))}}),(function(){n.slider.toggleClassName("active",!1),n._host.onDragEnd(),t()})),this._host.onDragStart()}},{key:"_setDesiredScrollPositionNow",value:function(e){var t={};this.writeScrollPosition(t,e),this._scrollable.setScrollPositionNow(t)}},{key:"updateScrollbarSize",value:function(e){this._updateScrollbarSize(e),this._scrollbarState.setScrollbarSize(e),this._shouldRender=!0,this._lazyRender||this.render()}},{key:"isNeeded",value:function(){return this._scrollbarState.isNeeded()}}]),n}(p.$),C=function(){function e(t,n,i,r,o,a){(0,u.Z)(this,e),this._scrollbarSize=Math.round(n),this._oppositeScrollbarSize=Math.round(i),this._arrowSize=Math.round(t),this._visibleSize=r,this._scrollSize=o,this._scrollPosition=a,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}return(0,s.Z)(e,[{key:"clone",value:function(){return new e(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize,this._visibleSize,this._scrollSize,this._scrollPosition)}},{key:"setVisibleSize",value:function(e){var t=Math.round(e);return this._visibleSize!==t&&(this._visibleSize=t,this._refreshComputedValues(),!0)}},{key:"setScrollSize",value:function(e){var t=Math.round(e);return this._scrollSize!==t&&(this._scrollSize=t,this._refreshComputedValues(),!0)}},{key:"setScrollPosition",value:function(e){var t=Math.round(e);return this._scrollPosition!==t&&(this._scrollPosition=t,this._refreshComputedValues(),!0)}},{key:"setScrollbarSize",value:function(e){this._scrollbarSize=e}},{key:"_refreshComputedValues",value:function(){var t=e._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=t.computedAvailableSize,this._computedIsNeeded=t.computedIsNeeded,this._computedSliderSize=t.computedSliderSize,this._computedSliderRatio=t.computedSliderRatio,this._computedSliderPosition=t.computedSliderPosition}},{key:"getArrowSize",value:function(){return this._arrowSize}},{key:"getScrollPosition",value:function(){return this._scrollPosition}},{key:"getRectangleLargeSize",value:function(){return this._computedAvailableSize}},{key:"getRectangleSmallSize",value:function(){return this._scrollbarSize}},{key:"isNeeded",value:function(){return this._computedIsNeeded}},{key:"getSliderSize",value:function(){return this._computedSliderSize}},{key:"getSliderPosition",value:function(){return this._computedSliderPosition}},{key:"getDesiredScrollPositionFromOffset",value:function(e){if(!this._computedIsNeeded)return 0;var t=e-this._arrowSize-this._computedSliderSize/2;return Math.round(t/this._computedSliderRatio)}},{key:"getDesiredScrollPositionFromOffsetPaged",value:function(e){if(!this._computedIsNeeded)return 0;var t=e-this._arrowSize,n=this._scrollPosition;return t<this._computedSliderPosition?n-=this._visibleSize:n+=this._visibleSize,n}},{key:"getDesiredScrollPositionFromDelta",value:function(e){if(!this._computedIsNeeded)return 0;var t=this._computedSliderPosition+e;return Math.round(t/this._computedSliderRatio)}}],[{key:"_computeValues",value:function(e,t,n,i,r){var o=Math.max(0,n-e),a=Math.max(0,o-2*t),s=i>0&&i>n;if(!s)return{computedAvailableSize:Math.round(o),computedIsNeeded:s,computedSliderSize:Math.round(a),computedSliderRatio:0,computedSliderPosition:0};var u=Math.round(Math.max(20,Math.floor(n*a/i))),l=(a-u)/(i-n),c=r*l;return{computedAvailableSize:Math.round(o),computedIsNeeded:s,computedSliderSize:Math.round(u),computedSliderRatio:l,computedSliderPosition:Math.round(c)}}}]),e}(),k=n(4354),S=(0,k.CM)("scrollbar-button-left",k.lA.triangleLeft),x=(0,k.CM)("scrollbar-button-right",k.lA.triangleRight),L=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i,r){var o;(0,u.Z)(this,n);var a=e.getScrollDimensions(),s=e.getCurrentScrollPosition();if(o=t.call(this,{lazyRender:i.lazyRender,host:r,scrollbarState:new C(i.horizontalHasArrows?i.arrowSize:0,2===i.horizontal?0:i.horizontalScrollbarSize,2===i.vertical?0:i.verticalScrollbarSize,a.width,a.scrollWidth,s.scrollLeft),visibility:i.horizontal,extraScrollbarClassName:"horizontal",scrollable:e,scrollByPage:i.scrollByPage}),i.horizontalHasArrows){var l=(i.arrowSize-v)/2,c=(i.horizontalScrollbarSize-v)/2;o._createArrow({className:"scra",icon:S,top:c,left:l,bottom:void 0,right:void 0,bgWidth:i.arrowSize,bgHeight:i.horizontalScrollbarSize,onActivate:function(){return o._host.onMouseWheel(new d.q(null,1,0))}}),o._createArrow({className:"scra",icon:x,top:c,left:void 0,bottom:void 0,right:l,bgWidth:i.arrowSize,bgHeight:i.horizontalScrollbarSize,onActivate:function(){return o._host.onMouseWheel(new d.q(null,-1,0))}})}return o._createSlider(Math.floor((i.horizontalScrollbarSize-i.horizontalSliderSize)/2),0,void 0,i.horizontalSliderSize),o}return(0,s.Z)(n,[{key:"_updateSlider",value:function(e,t){this.slider.setWidth(e),this.slider.setLeft(t)}},{key:"_renderDomNode",value:function(e,t){this.domNode.setWidth(e),this.domNode.setHeight(t),this.domNode.setLeft(0),this.domNode.setBottom(0)}},{key:"onDidScroll",value:function(e){return this._shouldRender=this._onElementScrollSize(e.scrollWidth)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollLeft)||this._shouldRender,this._shouldRender=this._onElementSize(e.width)||this._shouldRender,this._shouldRender}},{key:"_mouseDownRelativePosition",value:function(e,t){return e}},{key:"_sliderMousePosition",value:function(e){return e.posx}},{key:"_sliderOrthogonalMousePosition",value:function(e){return e.posy}},{key:"_updateScrollbarSize",value:function(e){this.slider.setHeight(e)}},{key:"writeScrollPosition",value:function(e,t){e.scrollLeft=t}}]),n}(w),E=(0,k.CM)("scrollbar-button-up",k.lA.triangleUp),D=(0,k.CM)("scrollbar-button-down",k.lA.triangleDown),N=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i,r){var o;(0,u.Z)(this,n);var a=e.getScrollDimensions(),s=e.getCurrentScrollPosition();if(o=t.call(this,{lazyRender:i.lazyRender,host:r,scrollbarState:new C(i.verticalHasArrows?i.arrowSize:0,2===i.vertical?0:i.verticalScrollbarSize,0,a.height,a.scrollHeight,s.scrollTop),visibility:i.vertical,extraScrollbarClassName:"vertical",scrollable:e,scrollByPage:i.scrollByPage}),i.verticalHasArrows){var l=(i.arrowSize-v)/2,c=(i.verticalScrollbarSize-v)/2;o._createArrow({className:"scra",icon:E,top:l,left:c,bottom:void 0,right:void 0,bgWidth:i.verticalScrollbarSize,bgHeight:i.arrowSize,onActivate:function(){return o._host.onMouseWheel(new d.q(null,0,1))}}),o._createArrow({className:"scra",icon:D,top:void 0,left:c,bottom:l,right:void 0,bgWidth:i.verticalScrollbarSize,bgHeight:i.arrowSize,onActivate:function(){return o._host.onMouseWheel(new d.q(null,0,-1))}})}return o._createSlider(0,Math.floor((i.verticalScrollbarSize-i.verticalSliderSize)/2),i.verticalSliderSize,void 0),o}return(0,s.Z)(n,[{key:"_updateSlider",value:function(e,t){this.slider.setHeight(e),this.slider.setTop(t)}},{key:"_renderDomNode",value:function(e,t){this.domNode.setWidth(t),this.domNode.setHeight(e),this.domNode.setRight(0),this.domNode.setTop(0)}},{key:"onDidScroll",value:function(e){return this._shouldRender=this._onElementScrollSize(e.scrollHeight)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollTop)||this._shouldRender,this._shouldRender=this._onElementSize(e.height)||this._shouldRender,this._shouldRender}},{key:"_mouseDownRelativePosition",value:function(e,t){return t}},{key:"_sliderMousePosition",value:function(e){return e.posy}},{key:"_sliderOrthogonalMousePosition",value:function(e){return e.posx}},{key:"_updateScrollbarSize",value:function(e){this.slider.setWidth(e)}},{key:"writeScrollPosition",value:function(e,t){e.scrollTop=t}}]),n}(w),M=n(11732),T=n(58604),I=n(84539),O=(0,s.Z)((function e(t,n,i){(0,u.Z)(this,e),this.timestamp=t,this.deltaX=n,this.deltaY=i,this.score=0})),A=function(){function e(){(0,u.Z)(this,e),this._capacity=5,this._memory=[],this._front=-1,this._rear=-1}return(0,s.Z)(e,[{key:"isPhysicalMouseWheel",value:function(){if(-1===this._front&&-1===this._rear)return!1;for(var e=1,t=0,n=1,i=this._rear;;){var r=i===this._front?e:Math.pow(2,-n);if(e-=r,t+=this._memory[i].score*r,i===this._front)break;i=(this._capacity+i-1)%this._capacity,n++}return t<=.5}},{key:"accept",value:function(e,t,n){var i=new O(e,t,n);i.score=this._computeScore(i),-1===this._front&&-1===this._rear?(this._memory[0]=i,this._front=0,this._rear=0):(this._rear=(this._rear+1)%this._capacity,this._rear===this._front&&(this._front=(this._front+1)%this._capacity),this._memory[this._rear]=i)}},{key:"_computeScore",value:function(e){if(Math.abs(e.deltaX)>0&&Math.abs(e.deltaY)>0)return 1;var t=.5;-1===this._front&&-1===this._rear||this._memory[this._rear];return this._isAlmostInt(e.deltaX)&&this._isAlmostInt(e.deltaY)||(t+=.25),Math.min(Math.max(t,0),1)}},{key:"_isAlmostInt",value:function(e){return Math.abs(Math.round(e)-e)<.01}}]),e}();A.INSTANCE=new A;var R=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i,r){var o;(0,u.Z)(this,n),(o=t.call(this))._onScroll=o._register(new M.Q5),o.onScroll=o._onScroll.event,o._onWillScroll=o._register(new M.Q5),e.style.overflow="hidden",o._options=function(e){var t={lazyRender:"undefined"!==typeof e.lazyRender&&e.lazyRender,className:"undefined"!==typeof e.className?e.className:"",useShadows:"undefined"===typeof e.useShadows||e.useShadows,handleMouseWheel:"undefined"===typeof e.handleMouseWheel||e.handleMouseWheel,flipAxes:"undefined"!==typeof e.flipAxes&&e.flipAxes,consumeMouseWheelIfScrollbarIsNeeded:"undefined"!==typeof e.consumeMouseWheelIfScrollbarIsNeeded&&e.consumeMouseWheelIfScrollbarIsNeeded,alwaysConsumeMouseWheel:"undefined"!==typeof e.alwaysConsumeMouseWheel&&e.alwaysConsumeMouseWheel,scrollYToX:"undefined"!==typeof e.scrollYToX&&e.scrollYToX,mouseWheelScrollSensitivity:"undefined"!==typeof e.mouseWheelScrollSensitivity?e.mouseWheelScrollSensitivity:1,fastScrollSensitivity:"undefined"!==typeof e.fastScrollSensitivity?e.fastScrollSensitivity:5,scrollPredominantAxis:"undefined"===typeof e.scrollPredominantAxis||e.scrollPredominantAxis,mouseWheelSmoothScroll:"undefined"===typeof e.mouseWheelSmoothScroll||e.mouseWheelSmoothScroll,arrowSize:"undefined"!==typeof e.arrowSize?e.arrowSize:11,listenOnDomNode:"undefined"!==typeof e.listenOnDomNode?e.listenOnDomNode:null,horizontal:"undefined"!==typeof e.horizontal?e.horizontal:1,horizontalScrollbarSize:"undefined"!==typeof e.horizontalScrollbarSize?e.horizontalScrollbarSize:10,horizontalSliderSize:"undefined"!==typeof e.horizontalSliderSize?e.horizontalSliderSize:0,horizontalHasArrows:"undefined"!==typeof e.horizontalHasArrows&&e.horizontalHasArrows,vertical:"undefined"!==typeof e.vertical?e.vertical:1,verticalScrollbarSize:"undefined"!==typeof e.verticalScrollbarSize?e.verticalScrollbarSize:10,verticalHasArrows:"undefined"!==typeof e.verticalHasArrows&&e.verticalHasArrows,verticalSliderSize:"undefined"!==typeof e.verticalSliderSize?e.verticalSliderSize:0,scrollByPage:"undefined"!==typeof e.scrollByPage&&e.scrollByPage};t.horizontalSliderSize="undefined"!==typeof e.horizontalSliderSize?e.horizontalSliderSize:t.horizontalScrollbarSize,t.verticalSliderSize="undefined"!==typeof e.verticalSliderSize?e.verticalSliderSize:t.verticalScrollbarSize,b.dz&&(t.className+=" mac");return t}(i),o._scrollable=r,o._register(o._scrollable.onScroll((function(e){o._onWillScroll.fire(e),o._onDidScroll(e),o._onScroll.fire(e)})));var a={onMouseWheel:function(e){return o._onMouseWheel(e)},onDragStart:function(){return o._onDragStart()},onDragEnd:function(){return o._onDragEnd()}};return o._verticalScrollbar=o._register(new N(o._scrollable,o._options,a)),o._horizontalScrollbar=o._register(new L(o._scrollable,o._options,a)),o._domNode=document.createElement("div"),o._domNode.className="monaco-scrollable-element "+o._options.className,o._domNode.setAttribute("role","presentation"),o._domNode.style.position="relative",o._domNode.style.overflow="hidden",o._domNode.appendChild(e),o._domNode.appendChild(o._horizontalScrollbar.domNode.domNode),o._domNode.appendChild(o._verticalScrollbar.domNode.domNode),o._options.useShadows?(o._leftShadowDomNode=(0,c.X)(document.createElement("div")),o._leftShadowDomNode.setClassName("shadow"),o._domNode.appendChild(o._leftShadowDomNode.domNode),o._topShadowDomNode=(0,c.X)(document.createElement("div")),o._topShadowDomNode.setClassName("shadow"),o._domNode.appendChild(o._topShadowDomNode.domNode),o._topLeftShadowDomNode=(0,c.X)(document.createElement("div")),o._topLeftShadowDomNode.setClassName("shadow"),o._domNode.appendChild(o._topLeftShadowDomNode.domNode)):(o._leftShadowDomNode=null,o._topShadowDomNode=null,o._topLeftShadowDomNode=null),o._listenOnDomNode=o._options.listenOnDomNode||o._domNode,o._mouseWheelToDispose=[],o._setListeningToMouseWheel(o._options.handleMouseWheel),o.onmouseover(o._listenOnDomNode,(function(e){return o._onMouseOver(e)})),o.onnonbubblingmouseout(o._listenOnDomNode,(function(e){return o._onMouseOut(e)})),o._hideTimeout=o._register(new g._F),o._isDragging=!1,o._mouseIsOver=!1,o._shouldRender=!0,o._revealOnScroll=!0,o}return(0,s.Z)(n,[{key:"dispose",value:function(){this._mouseWheelToDispose=(0,_.B9)(this._mouseWheelToDispose),(0,i.Z)((0,r.Z)(n.prototype),"dispose",this).call(this)}},{key:"getDomNode",value:function(){return this._domNode}},{key:"getOverviewRulerLayoutInfo",value:function(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}}},{key:"delegateVerticalScrollbarMouseDown",value:function(e){this._verticalScrollbar.delegateMouseDown(e)}},{key:"getScrollDimensions",value:function(){return this._scrollable.getScrollDimensions()}},{key:"setScrollDimensions",value:function(e){this._scrollable.setScrollDimensions(e,!1)}},{key:"updateClassName",value:function(e){this._options.className=e,b.dz&&(this._options.className+=" mac"),this._domNode.className="monaco-scrollable-element "+this._options.className}},{key:"updateOptions",value:function(e){"undefined"!==typeof e.handleMouseWheel&&(this._options.handleMouseWheel=e.handleMouseWheel,this._setListeningToMouseWheel(this._options.handleMouseWheel)),"undefined"!==typeof e.mouseWheelScrollSensitivity&&(this._options.mouseWheelScrollSensitivity=e.mouseWheelScrollSensitivity),"undefined"!==typeof e.fastScrollSensitivity&&(this._options.fastScrollSensitivity=e.fastScrollSensitivity),"undefined"!==typeof e.scrollPredominantAxis&&(this._options.scrollPredominantAxis=e.scrollPredominantAxis),"undefined"!==typeof e.horizontalScrollbarSize&&this._horizontalScrollbar.updateScrollbarSize(e.horizontalScrollbarSize),this._options.lazyRender||this._render()}},{key:"_setListeningToMouseWheel",value:function(e){var t=this;if(this._mouseWheelToDispose.length>0!==e&&(this._mouseWheelToDispose=(0,_.B9)(this._mouseWheelToDispose),e)){this._mouseWheelToDispose.push(l.addDisposableListener(this._listenOnDomNode,l.EventType.MOUSE_WHEEL,(function(e){t._onMouseWheel(new d.q(e))}),{passive:!1}))}}},{key:"_onMouseWheel",value:function(e){var t=A.INSTANCE,n=window.devicePixelRatio/(0,I.ie)();b.ED||b.IJ?t.accept(Date.now(),e.deltaX/n,e.deltaY/n):t.accept(Date.now(),e.deltaX,e.deltaY);var i=!1;if(e.deltaY||e.deltaX){var r=e.deltaY*this._options.mouseWheelScrollSensitivity,o=e.deltaX*this._options.mouseWheelScrollSensitivity;if(this._options.scrollPredominantAxis&&(Math.abs(r)>=Math.abs(o)?o=0:r=0),this._options.flipAxes){var a=[o,r];r=a[0],o=a[1]}var s=!b.dz&&e.browserEvent&&e.browserEvent.shiftKey;!this._options.scrollYToX&&!s||o||(o=r,r=0),e.browserEvent&&e.browserEvent.altKey&&(o*=this._options.fastScrollSensitivity,r*=this._options.fastScrollSensitivity);var u=this._scrollable.getFutureScrollPosition(),l={};if(r){var c=u.scrollTop-50*r;this._verticalScrollbar.writeScrollPosition(l,c)}if(o){var d=u.scrollLeft-50*o;this._horizontalScrollbar.writeScrollPosition(l,d)}if(l=this._scrollable.validateScrollPosition(l),u.scrollLeft!==l.scrollLeft||u.scrollTop!==l.scrollTop)this._options.mouseWheelSmoothScroll&&t.isPhysicalMouseWheel()?this._scrollable.setScrollPositionSmooth(l):this._scrollable.setScrollPositionNow(l),i=!0}var h=i;!h&&this._options.alwaysConsumeMouseWheel&&(h=!0),!h&&this._options.consumeMouseWheelIfScrollbarIsNeeded&&(this._verticalScrollbar.isNeeded()||this._horizontalScrollbar.isNeeded())&&(h=!0),h&&(e.preventDefault(),e.stopPropagation())}},{key:"_onDidScroll",value:function(e){this._shouldRender=this._horizontalScrollbar.onDidScroll(e)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(e)||this._shouldRender,this._options.useShadows&&(this._shouldRender=!0),this._revealOnScroll&&this._reveal(),this._options.lazyRender||this._render()}},{key:"renderNow",value:function(){if(!this._options.lazyRender)throw new Error("Please use `lazyRender` together with `renderNow`!");this._render()}},{key:"_render",value:function(){if(this._shouldRender&&(this._shouldRender=!1,this._horizontalScrollbar.render(),this._verticalScrollbar.render(),this._options.useShadows)){var e=this._scrollable.getCurrentScrollPosition(),t=e.scrollTop>0,n=e.scrollLeft>0,i=n?" left":"",r=t?" top":"",o=n||t?" top-left-corner":"";this._leftShadowDomNode.setClassName("shadow".concat(i)),this._topShadowDomNode.setClassName("shadow".concat(r)),this._topLeftShadowDomNode.setClassName("shadow".concat(o).concat(r).concat(i))}}},{key:"_onDragStart",value:function(){this._isDragging=!0,this._reveal()}},{key:"_onDragEnd",value:function(){this._isDragging=!1,this._hide()}},{key:"_onMouseOut",value:function(e){this._mouseIsOver=!1,this._hide()}},{key:"_onMouseOver",value:function(e){this._mouseIsOver=!0,this._reveal()}},{key:"_reveal",value:function(){this._verticalScrollbar.beginReveal(),this._horizontalScrollbar.beginReveal(),this._scheduleHide()}},{key:"_hide",value:function(){this._mouseIsOver||this._isDragging||(this._verticalScrollbar.beginHide(),this._horizontalScrollbar.beginHide())}},{key:"_scheduleHide",value:function(){var e=this;this._mouseIsOver||this._isDragging||this._hideTimeout.cancelAndSet((function(){return e._hide()}),500)}}]),n}(p.$),P=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i){var r;(0,u.Z)(this,n),(i=i||{}).mouseWheelSmoothScroll=!1;var o=new T.Rm(0,(function(e){return l.scheduleAtNextAnimationFrame(e)}));return(r=t.call(this,e,i,o))._register(o),r}return(0,s.Z)(n,[{key:"setScrollPosition",value:function(e){this._scrollable.setScrollPositionNow(e)}}]),n}(R),Z=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i,r){return(0,u.Z)(this,n),t.call(this,e,i,r)}return(0,s.Z)(n,[{key:"setScrollPosition",value:function(e){e.reuseAnimation?this._scrollable.setScrollPositionSmooth(e,e.reuseAnimation):this._scrollable.setScrollPositionNow(e)}},{key:"getScrollPosition",value:function(){return this._scrollable.getCurrentScrollPosition()}}]),n}(R),F=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i){var r;return(0,u.Z)(this,n),(r=t.call(this,e,i))._element=e,r.onScroll((function(e){e.scrollTopChanged&&(r._element.scrollTop=e.scrollTop),e.scrollLeftChanged&&(r._element.scrollLeft=e.scrollLeft)})),r.scanDomNode(),r}return(0,s.Z)(n,[{key:"scanDomNode",value:function(){this.setScrollDimensions({width:this._element.clientWidth,scrollWidth:this._element.scrollWidth,height:this._element.clientHeight,scrollHeight:this._element.scrollHeight}),this.setScrollPosition({scrollLeft:this._element.scrollLeft,scrollTop:this._element.scrollTop})}}]),n}(P)},44393:function(e,t,n){"use strict";n.d(t,{M:function(){return r},z:function(){return D}});var i,r,o=n(93433),a=n(37762),s=n(11752),u=n(61120),l=n(60136),c=n(43668),d=n(15671),h=n(43144),f=n(81626),p=n(11732),g=n(25941),v=n(5265),m=n(49396),_=n(2523),y=n(89938),b=n(61680),w=n(84540),C=n(61727),k=n(58604),S={separatorBorder:y.Il.transparent},x=function(){function e(t,n,i,r){(0,d.Z)(this,e),this.container=t,this.view=n,this.disposable=r,this._cachedVisibleSize=void 0,"number"===typeof i?(this._size=i,this._cachedVisibleSize=void 0,t.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}return(0,h.Z)(e,[{key:"size",get:function(){return this._size},set:function(e){this._size=e}},{key:"visible",get:function(){return"undefined"===typeof this._cachedVisibleSize}},{key:"setVisible",value:function(e,t){e!==this.visible&&(e?(this.size=(0,v.u)(this._cachedVisibleSize,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize="number"===typeof t?t:this.size,this.size=0),this.container.classList.toggle("visible",e),this.view.setVisible&&this.view.setVisible(e))}},{key:"minimumSize",get:function(){return this.visible?this.view.minimumSize:0}},{key:"viewMinimumSize",get:function(){return this.view.minimumSize}},{key:"maximumSize",get:function(){return this.visible?this.view.maximumSize:0}},{key:"viewMaximumSize",get:function(){return this.view.maximumSize}},{key:"priority",get:function(){return this.view.priority}},{key:"snap",get:function(){return!!this.view.snap}},{key:"enabled",set:function(e){this.container.style.pointerEvents=e?"":"none"}},{key:"layout",value:function(e,t){this.layoutContainer(e),this.view.layout(this.size,e,t)}},{key:"dispose",value:function(){return this.disposable.dispose(),this.view}}]),e}(),L=function(e){(0,l.Z)(n,e);var t=(0,c.Z)(n);function n(){return(0,d.Z)(this,n),t.apply(this,arguments)}return(0,h.Z)(n,[{key:"layoutContainer",value:function(e){this.container.style.top="".concat(e,"px"),this.container.style.height="".concat(this.size,"px")}}]),n}(x),E=function(e){(0,l.Z)(n,e);var t=(0,c.Z)(n);function n(){return(0,d.Z)(this,n),t.apply(this,arguments)}return(0,h.Z)(n,[{key:"layoutContainer",value:function(e){this.container.style.left="".concat(e,"px"),this.container.style.width="".concat(this.size,"px")}}]),n}(x);!function(e){e[e.Idle=0]="Idle",e[e.Busy=1]="Busy"}(i||(i={})),function(e){e.Distribute={type:"distribute"},e.Split=function(e){return{type:"split",index:e}},e.Invisible=function(e){return{type:"invisible",cachedVisibleSize:e}}}(r||(r={}));var D=function(e){(0,l.Z)(n,e);var t=(0,c.Z)(n);function n(e){var r,o,a,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,d.Z)(this,n),(r=t.call(this)).size=0,r.contentSize=0,r.proportions=void 0,r.viewItems=[],r.sashItems=[],r.state=i.Idle,r._onDidSashChange=r._register(new p.Q5),r.onDidSashChange=r._onDidSashChange.event,r._onDidSashReset=r._register(new p.Q5),r._startSnappingEnabled=!0,r._endSnappingEnabled=!0,r.orientation=g.o8(s.orientation)?0:s.orientation,r.inverseAltBehavior=!!s.inverseAltBehavior,r.proportionalLayout=!!g.o8(s.proportionalLayout)||!!s.proportionalLayout,r.getSashOrthogonalSize=s.getSashOrthogonalSize,r.el=document.createElement("div"),r.el.classList.add("monaco-split-view2"),r.el.classList.add(0===r.orientation?"vertical":"horizontal"),e.appendChild(r.el),r.sashContainer=(0,w.append)(r.el,(0,w.$)(".sash-container")),r.viewContainer=(0,w.$)(".split-view-container"),r.scrollable=new k.Rm(125,w.scheduleAtNextAnimationFrame),r.scrollableElement=r._register(new C.$Z(r.viewContainer,{vertical:0===r.orientation?null!==(o=s.scrollbarVisibility)&&void 0!==o?o:1:2,horizontal:1===r.orientation?null!==(a=s.scrollbarVisibility)&&void 0!==a?a:1:2},r.scrollable)),r._register(r.scrollableElement.onScroll((function(e){r.viewContainer.scrollTop=e.scrollTop,r.viewContainer.scrollLeft=e.scrollLeft}))),(0,w.append)(r.el,r.scrollableElement.getDomNode()),r.style(s.styles||S),s.descriptor&&(r.size=s.descriptor.size,s.descriptor.views.forEach((function(e,t){var n=g.o8(e.visible)||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},i=e.view;r.doAddView(i,n,t,!0)})),r.contentSize=r.viewItems.reduce((function(e,t){return e+t.size}),0),r.saveProportions()),r}return(0,h.Z)(n,[{key:"orthogonalStartSash",get:function(){return this._orthogonalStartSash},set:function(e){var t,n=(0,a.Z)(this.sashItems);try{for(n.s();!(t=n.n()).done;){t.value.sash.orthogonalStartSash=e}}catch(i){n.e(i)}finally{n.f()}this._orthogonalStartSash=e}},{key:"orthogonalEndSash",get:function(){return this._orthogonalEndSash},set:function(e){var t,n=(0,a.Z)(this.sashItems);try{for(n.s();!(t=n.n()).done;){t.value.sash.orthogonalEndSash=e}}catch(i){n.e(i)}finally{n.f()}this._orthogonalEndSash=e}},{key:"startSnappingEnabled",get:function(){return this._startSnappingEnabled},set:function(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}},{key:"endSnappingEnabled",get:function(){return this._endSnappingEnabled},set:function(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}},{key:"style",value:function(e){e.separatorBorder.isTransparent()?(this.el.classList.remove("separator-border"),this.el.style.removeProperty("--separator-border")):(this.el.classList.add("separator-border"),this.el.style.setProperty("--separator-border",e.separatorBorder.toString()))}},{key:"addView",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.viewItems.length,i=arguments.length>3?arguments[3]:void 0;this.doAddView(e,t,n,i)}},{key:"layout",value:function(e,t){var n=this,i=Math.max(this.size,this.contentSize);if(this.size=e,this.layoutContext=t,this.proportions)for(var r=0;r<this.viewItems.length;r++){var o=this.viewItems[r];o.size=(0,v.u)(Math.round(this.proportions[r]*e),o.minimumSize,o.maximumSize)}else{var a=(0,m.w6)(this.viewItems.length),s=a.filter((function(e){return 1===n.viewItems[e].priority})),u=a.filter((function(e){return 2===n.viewItems[e].priority}));this.resize(this.viewItems.length-1,e-i,void 0,s,u)}this.distributeEmptySpace(),this.layoutViews()}},{key:"saveProportions",value:function(){var e=this;this.proportionalLayout&&this.contentSize>0&&(this.proportions=this.viewItems.map((function(t){return t.size/e.contentSize})))}},{key:"onSashStart",value:function(e){var t,n=this,i=e.sash,r=e.start,o=e.alt,s=(0,a.Z)(this.viewItems);try{for(s.s();!(t=s.n()).done;){t.value.enabled=!1}}catch(d){s.e(d)}finally{s.f()}var u=this.sashItems.findIndex((function(e){return e.sash===i})),l=(0,f.F8)((0,b.jt)(document.body,"keydown")((function(e){return c(n.sashDragState.current,e.altKey)})),(0,b.jt)(document.body,"keyup")((function(){return c(n.sashDragState.current,!1)}))),c=function(e,t){var i,r,o=n.viewItems.map((function(e){return e.size})),a=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;if(n.inverseAltBehavior&&(t=!t),t)if(u===n.sashItems.length-1){var c=n.viewItems[u];a=(c.minimumSize-c.size)/2,s=(c.maximumSize-c.size)/2}else{var d=n.viewItems[u+1];a=(d.size-d.maximumSize)/2,s=(d.size-d.minimumSize)/2}if(!t){var h=(0,m.w6)(u,-1),f=(0,m.w6)(u+1,n.viewItems.length),p=h.reduce((function(e,t){return e+(n.viewItems[t].minimumSize-o[t])}),0),g=h.reduce((function(e,t){return e+(n.viewItems[t].viewMaximumSize-o[t])}),0),v=0===f.length?Number.POSITIVE_INFINITY:f.reduce((function(e,t){return e+(o[t]-n.viewItems[t].minimumSize)}),0),_=0===f.length?Number.NEGATIVE_INFINITY:f.reduce((function(e,t){return e+(o[t]-n.viewItems[t].viewMaximumSize)}),0),y=Math.max(p,_),b=Math.min(v,g),w=n.findFirstSnapIndex(h),C=n.findFirstSnapIndex(f);if("number"===typeof w){var k=n.viewItems[w],S=Math.floor(k.viewMinimumSize/2);i={index:w,limitDelta:k.visible?y-S:y+S,size:k.size}}if("number"===typeof C){var x=n.viewItems[C],L=Math.floor(x.viewMinimumSize/2);r={index:C,limitDelta:x.visible?b+L:b-L,size:x.size}}}n.sashDragState={start:e,current:e,index:u,sizes:o,minDelta:a,maxDelta:s,alt:t,snapBefore:i,snapAfter:r,disposable:l}};c(r,o)}},{key:"onSashChange",value:function(e){var t=e.current,n=this.sashDragState,i=n.index,r=n.start,o=n.sizes,a=n.alt,s=n.minDelta,u=n.maxDelta,l=n.snapBefore,c=n.snapAfter;this.sashDragState.current=t;var d=t-r,h=this.resize(i,d,o,void 0,void 0,s,u,l,c);if(a){var f=i===this.sashItems.length-1,p=this.viewItems.map((function(e){return e.size})),g=f?i:i+1,v=this.viewItems[g],m=v.size-v.maximumSize,_=v.size-v.minimumSize,y=f?i-1:i+1;this.resize(y,-h,p,void 0,void 0,m,_)}this.distributeEmptySpace(),this.layoutViews()}},{key:"onSashEnd",value:function(e){this._onDidSashChange.fire(e),this.sashDragState.disposable.dispose(),this.saveProportions();var t,n=(0,a.Z)(this.viewItems);try{for(n.s();!(t=n.n()).done;){t.value.enabled=!0}}catch(i){n.e(i)}finally{n.f()}}},{key:"onViewChange",value:function(e,t){var n=this.viewItems.indexOf(e);n<0||n>=this.viewItems.length||(t="number"===typeof t?t:e.size,t=(0,v.u)(t,e.minimumSize,e.maximumSize),this.inverseAltBehavior&&n>0?(this.resize(n-1,Math.floor((e.size-t)/2)),this.distributeEmptySpace(),this.layoutViews()):(e.size=t,this.relayout([n],void 0)))}},{key:"resizeView",value:function(e,t){var n=this;if(this.state!==i.Idle)throw new Error("Cant modify splitview");if(this.state=i.Busy,!(e<0||e>=this.viewItems.length)){var r=(0,m.w6)(this.viewItems.length).filter((function(t){return t!==e})),a=[].concat((0,o.Z)(r.filter((function(e){return 1===n.viewItems[e].priority}))),[e]),s=r.filter((function(e){return 2===n.viewItems[e].priority})),u=this.viewItems[e];t=Math.round(t),t=(0,v.u)(t,u.minimumSize,Math.min(u.maximumSize,this.size)),u.size=t,this.relayout(a,s),this.state=i.Idle}}},{key:"distributeViewSizes",value:function(){var e,t=this,n=[],i=0,r=(0,a.Z)(this.viewItems);try{for(r.s();!(e=r.n()).done;){var o=e.value;o.maximumSize-o.minimumSize>0&&(n.push(o),i+=o.size)}}catch(p){r.e(p)}finally{r.f()}for(var s=Math.floor(i/n.length),u=0,l=n;u<l.length;u++){var c=l[u];c.size=(0,v.u)(s,c.minimumSize,c.maximumSize)}var d=(0,m.w6)(this.viewItems.length),h=d.filter((function(e){return 1===t.viewItems[e].priority})),f=d.filter((function(e){return 2===t.viewItems[e].priority}));this.relayout(h,f)}},{key:"getViewSize",value:function(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}},{key:"doAddView",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.viewItems.length,o=arguments.length>3?arguments[3]:void 0;if(this.state!==i.Idle)throw new Error("Cant modify splitview");this.state=i.Busy;var a=(0,w.$)(".split-view-view");r===this.viewItems.length?this.viewContainer.appendChild(a):this.viewContainer.insertBefore(a,this.viewContainer.children.item(r));var s,u=e.onDidChange((function(e){return n.onViewChange(h,e)})),l=(0,f.OF)((function(){return n.viewContainer.removeChild(a)})),c=(0,f.F8)(u,l);s="number"===typeof t?t:"split"===t.type?this.getViewSize(t.index)/2:"invisible"===t.type?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize;var d,h=0===this.orientation?new L(a,e,s,c):new E(a,e,s,c);if(this.viewItems.splice(r,0,h),this.viewItems.length>1){var g={orthogonalStartSash:this.orthogonalStartSash,orthogonalEndSash:this.orthogonalEndSash},v=0===this.orientation?new _.g(this.sashContainer,{getHorizontalSashTop:function(e){return n.getSashPosition(e)},getHorizontalSashWidth:this.getSashOrthogonalSize},Object.assign(Object.assign({},g),{orientation:1})):new _.g(this.sashContainer,{getVerticalSashLeft:function(e){return n.getSashPosition(e)},getVerticalSashHeight:this.getSashOrthogonalSize},Object.assign(Object.assign({},g),{orientation:0})),y=0===this.orientation?function(e){return{sash:v,start:e.startY,current:e.currentY,alt:e.altKey}}:function(e){return{sash:v,start:e.startX,current:e.currentX,alt:e.altKey}},b=p.ju.map(v.onDidStart,y)(this.onSashStart,this),C=p.ju.map(v.onDidChange,y)(this.onSashChange,this),k=p.ju.map(v.onDidEnd,(function(){return n.sashItems.findIndex((function(e){return e.sash===v}))})),S=k(this.onSashEnd,this),x=v.onDidReset((function(){var e=n.sashItems.findIndex((function(e){return e.sash===v})),t=(0,m.w6)(e,-1),i=(0,m.w6)(e+1,n.viewItems.length),r=n.findFirstSnapIndex(t),o=n.findFirstSnapIndex(i);("number"!==typeof r||n.viewItems[r].visible)&&("number"!==typeof o||n.viewItems[o].visible)&&n._onDidSashReset.fire(e)})),D=(0,f.F8)(b,C,S,x,v),N={sash:v,disposable:D};this.sashItems.splice(r-1,0,N)}a.appendChild(e.element),"number"!==typeof t&&"split"===t.type&&(d=[t.index]),o||this.relayout([r],d),this.state=i.Idle,o||"number"===typeof t||"distribute"!==t.type||this.distributeViewSizes()}},{key:"relayout",value:function(e,t){var n=this.viewItems.reduce((function(e,t){return e+t.size}),0);this.resize(this.viewItems.length-1,this.size-n,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}},{key:"resize",value:function(e,t){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.viewItems.map((function(e){return e.size})),r=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:Number.NEGATIVE_INFINITY,u=arguments.length>6&&void 0!==arguments[6]?arguments[6]:Number.POSITIVE_INFINITY,l=arguments.length>7?arguments[7]:void 0,c=arguments.length>8?arguments[8]:void 0;if(e<0||e>=this.viewItems.length)return 0;var d=(0,m.w6)(e,-1),h=(0,m.w6)(e+1,this.viewItems.length);if(o){var f,p=(0,a.Z)(o);try{for(p.s();!(f=p.n()).done;){var g=f.value;(0,m.zI)(d,g),(0,m.zI)(h,g)}}catch(V){p.e(V)}finally{p.f()}}if(r){var _,y=(0,a.Z)(r);try{for(y.s();!(_=y.n()).done;){var b=_.value;(0,m.al)(d,b),(0,m.al)(h,b)}}catch(V){y.e(V)}finally{y.f()}}var w=d.map((function(e){return n.viewItems[e]})),C=d.map((function(e){return i[e]})),k=h.map((function(e){return n.viewItems[e]})),S=h.map((function(e){return i[e]})),x=d.reduce((function(e,t){return e+(n.viewItems[t].minimumSize-i[t])}),0),L=d.reduce((function(e,t){return e+(n.viewItems[t].maximumSize-i[t])}),0),E=0===h.length?Number.POSITIVE_INFINITY:h.reduce((function(e,t){return e+(i[t]-n.viewItems[t].minimumSize)}),0),D=0===h.length?Number.NEGATIVE_INFINITY:h.reduce((function(e,t){return e+(i[t]-n.viewItems[t].maximumSize)}),0),N=Math.max(x,D,s),M=Math.min(E,L,u),T=!1;if(l){var I=this.viewItems[l.index],O=t>=l.limitDelta;T=O!==I.visible,I.setVisible(O,l.size)}if(!T&&c){var A=this.viewItems[c.index],R=t<c.limitDelta;T=R!==A.visible,A.setVisible(R,c.size)}if(T)return this.resize(e,t,i,r,o,s,u);for(var P=0,Z=t=(0,v.u)(t,N,M);P<w.length;P++){var F=w[P],j=(0,v.u)(C[P]+Z,F.minimumSize,F.maximumSize);Z-=j-C[P],F.size=j}for(var H=0,B=t;H<k.length;H++){var z=k[H],W=(0,v.u)(S[H]-B,z.minimumSize,z.maximumSize);B+=W-S[H],z.size=W}return t}},{key:"distributeEmptySpace",value:function(e){var t,n=this,i=this.viewItems.reduce((function(e,t){return e+t.size}),0),r=this.size-i,o=(0,m.w6)(this.viewItems.length-1,-1),s=o.filter((function(e){return 1===n.viewItems[e].priority})),u=o.filter((function(e){return 2===n.viewItems[e].priority})),l=(0,a.Z)(u);try{for(l.s();!(t=l.n()).done;){var c=t.value;(0,m.zI)(o,c)}}catch(y){l.e(y)}finally{l.f()}var d,h=(0,a.Z)(s);try{for(h.s();!(d=h.n()).done;){var f=d.value;(0,m.al)(o,f)}}catch(y){h.e(y)}finally{h.f()}"number"===typeof e&&(0,m.al)(o,e);for(var p=0;0!==r&&p<o.length;p++){var g=this.viewItems[o[p]],_=(0,v.u)(g.size+r,g.minimumSize,g.maximumSize);r-=_-g.size,g.size=_}}},{key:"layoutViews",value:function(){this.contentSize=this.viewItems.reduce((function(e,t){return e+t.size}),0);var e,t=0,n=(0,a.Z)(this.viewItems);try{for(n.s();!(e=n.n()).done;){var i=e.value;i.layout(t,this.layoutContext),t+=i.size}}catch(r){n.e(r)}finally{n.f()}this.sashItems.forEach((function(e){return e.sash.layout()})),this.updateSashEnablement(),this.updateScrollableElement()}},{key:"updateScrollableElement",value:function(){0===this.orientation?this.scrollableElement.setScrollDimensions({height:this.size,scrollHeight:this.contentSize}):this.scrollableElement.setScrollDimensions({width:this.size,scrollWidth:this.contentSize})}},{key:"updateSashEnablement",value:function(){var e=!1,t=this.viewItems.map((function(t){return e=t.size-t.minimumSize>0||e}));e=!1;var n=this.viewItems.map((function(t){return e=t.maximumSize-t.size>0||e})),i=(0,o.Z)(this.viewItems).reverse();e=!1;var r=i.map((function(t){return e=t.size-t.minimumSize>0||e})).reverse();e=!1;for(var a=i.map((function(t){return e=t.maximumSize-t.size>0||e})).reverse(),s=0,u=0;u<this.sashItems.length;u++){var l=this.sashItems[u].sash;s+=this.viewItems[u].size;var c=!(t[u]&&a[u+1]),d=!(n[u]&&r[u+1]);if(c&&d){var h=(0,m.w6)(u,-1),f=(0,m.w6)(u+1,this.viewItems.length),p=this.findFirstSnapIndex(h),g=this.findFirstSnapIndex(f),v="number"===typeof p&&!this.viewItems[p].visible,_="number"===typeof g&&!this.viewItems[g].visible;v&&r[u]&&(s>0||this.startSnappingEnabled)?l.state=1:_&&t[u]&&(s<this.contentSize||this.endSnappingEnabled)?l.state=2:l.state=0}else l.state=c&&!d?1:!c&&d?2:3}}},{key:"getSashPosition",value:function(e){for(var t=0,n=0;n<this.sashItems.length;n++)if(t+=this.viewItems[n].size,this.sashItems[n].sash===e)return t;return 0}},{key:"findFirstSnapIndex",value:function(e){var t,n=(0,a.Z)(e);try{for(n.s();!(t=n.n()).done;){var i=t.value,r=this.viewItems[i];if(r.visible&&r.snap)return i}}catch(c){n.e(c)}finally{n.f()}var o,s=(0,a.Z)(e);try{for(s.s();!(o=s.n()).done;){var u=o.value,l=this.viewItems[u];if(l.visible&&l.maximumSize-l.minimumSize>0)return;if(!l.visible&&l.snap)return u}}catch(c){s.e(c)}finally{s.f()}}},{key:"dispose",value:function(){(0,s.Z)((0,u.Z)(n.prototype),"dispose",this).call(this),this.viewItems.forEach((function(e){return e.dispose()})),this.viewItems=[],this.sashItems.forEach((function(e){return e.disposable.dispose()})),this.sashItems=[]}}]),n}(f.JT)},43257:function(e,t,n){"use strict";n.d(t,{$:function(){return h}});var i=n(15671),r=n(43144),o=n(60136),a=n(43668),s=n(84540),u=n(31737),l=n(55076),c=n(81626),d=n(25044),h=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(){return(0,i.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"onclick",value:function(e,t){this._register(s.addDisposableListener(e,s.EventType.CLICK,(function(e){return t(new l.n(e))})))}},{key:"onmousedown",value:function(e,t){this._register(s.addDisposableListener(e,s.EventType.MOUSE_DOWN,(function(e){return t(new l.n(e))})))}},{key:"onmouseover",value:function(e,t){this._register(s.addDisposableListener(e,s.EventType.MOUSE_OVER,(function(e){return t(new l.n(e))})))}},{key:"onnonbubblingmouseout",value:function(e,t){this._register(s.addDisposableNonBubblingMouseOutListener(e,(function(e){return t(new l.n(e))})))}},{key:"onkeydown",value:function(e,t){this._register(s.addDisposableListener(e,s.EventType.KEY_DOWN,(function(e){return t(new u.y(e))})))}},{key:"onkeyup",value:function(e,t){this._register(s.addDisposableListener(e,s.EventType.KEY_UP,(function(e){return t(new u.y(e))})))}},{key:"oninput",value:function(e,t){this._register(s.addDisposableListener(e,s.EventType.INPUT,t))}},{key:"onblur",value:function(e,t){this._register(s.addDisposableListener(e,s.EventType.BLUR,t))}},{key:"onfocus",value:function(e,t){this._register(s.addDisposableListener(e,s.EventType.FOCUS,t))}},{key:"ignoreGesture",value:function(e){d.o.ignoreTarget(e)}}]),n}(c.JT)},29077:function(e,t,n){"use strict";n.d(t,{Wi:function(){return p},Z0:function(){return g},aU:function(){return f},eZ:function(){return m},wY:function(){return v}});var i=n(15671),r=n(43144),o=n(60136),a=n(43668),s=n(87757),u=n.n(s),l=n(56345),c=n(81626),d=n(11732),h=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},f=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e){var r,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],u=arguments.length>4?arguments[4]:void 0;return(0,i.Z)(this,n),(r=t.call(this))._onDidChange=r._register(new d.Q5),r.onDidChange=r._onDidChange.event,r._enabled=!0,r._checked=!1,r._id=e,r._label=o,r._cssClass=a,r._enabled=s,r._actionCallback=u,r}return(0,r.Z)(n,[{key:"id",get:function(){return this._id}},{key:"label",get:function(){return this._label},set:function(e){this._setLabel(e)}},{key:"_setLabel",value:function(e){this._label!==e&&(this._label=e,this._onDidChange.fire({label:e}))}},{key:"tooltip",get:function(){return this._tooltip||""},set:function(e){this._setTooltip(e)}},{key:"_setTooltip",value:function(e){this._tooltip!==e&&(this._tooltip=e,this._onDidChange.fire({tooltip:e}))}},{key:"class",get:function(){return this._cssClass},set:function(e){this._setClass(e)}},{key:"_setClass",value:function(e){this._cssClass!==e&&(this._cssClass=e,this._onDidChange.fire({class:e}))}},{key:"enabled",get:function(){return this._enabled},set:function(e){this._setEnabled(e)}},{key:"_setEnabled",value:function(e){this._enabled!==e&&(this._enabled=e,this._onDidChange.fire({enabled:e}))}},{key:"checked",get:function(){return this._checked},set:function(e){this._setChecked(e)}},{key:"_setChecked",value:function(e){this._checked!==e&&(this._checked=e,this._onDidChange.fire({checked:e}))}},{key:"run",value:function(e,t){return h(this,void 0,void 0,u().mark((function t(){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this._actionCallback){t.next=3;break}return t.next=3,this._actionCallback(e);case 3:case"end":return t.stop()}}),t,this)})))}}]),n}(c.JT),p=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(){var e;return(0,i.Z)(this,n),(e=t.apply(this,arguments))._onBeforeRun=e._register(new d.Q5),e.onBeforeRun=e._onBeforeRun.event,e._onDidRun=e._register(new d.Q5),e.onDidRun=e._onDidRun.event,e}return(0,r.Z)(n,[{key:"run",value:function(e,t){return h(this,void 0,void 0,u().mark((function n(){var i;return u().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e.enabled){n.next=2;break}return n.abrupt("return");case 2:return this._onBeforeRun.fire({action:e}),i=void 0,n.prev=4,n.next=7,this.runAction(e,t);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(4),i=n.t0;case 12:this._onDidRun.fire({action:e,error:i});case 13:case"end":return n.stop()}}),n,this,[[4,9]])})))}},{key:"runAction",value:function(e,t){return h(this,void 0,void 0,u().mark((function n(){return u().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e.run(t);case 2:case"end":return n.stop()}}),n)})))}}]),n}(c.JT),g=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e){var r;return(0,i.Z)(this,n),(r=t.call(this,n.ID,e,e?"separator text":"separator")).checked=!1,r.enabled=!1,r}return(0,r.Z)(n)}(f);g.ID="vs.actions.separator";var v=function(){function e(t,n,r,o){(0,i.Z)(this,e),this.tooltip="",this.enabled=!0,this.checked=!1,this.id=t,this.label=n,this.class=o,this._actions=r}return(0,r.Z)(e,[{key:"actions",get:function(){return this._actions}},{key:"dispose",value:function(){}},{key:"run",value:function(){return h(this,void 0,void 0,u().mark((function e(){return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)})))}}]),e}(),m=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(){return(0,i.Z)(this,n),t.call(this,n.ID,l.N("submenu.empty","(empty)"),void 0,!1)}return(0,r.Z)(n)}(f);m.ID="vs.actions.empty"},49396:function(e,t,n){"use strict";n.d(t,{EB:function(){return g},Gb:function(){return o},HW:function(){return c},JH:function(){return a},Of:function(){return p},XY:function(){return f},Xh:function(){return m},Zv:function(){return b},_2:function(){return k},al:function(){return C},cU:function(){return v},fS:function(){return s},kX:function(){return h},lG:function(){return l},ry:function(){return u},vM:function(){return d},w6:function(){return y},xH:function(){return _},zI:function(){return w}});var i=n(93433),r=n(37762);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e[e.length-(1+t)]}function a(e){if(0===e.length)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function s(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e,t){return e===t};if(e===t)return!0;if(!e||!t)return!1;if(e.length!==t.length)return!1;for(var i=0,r=e.length;i<r;i++)if(!n(e[i],t[i]))return!1;return!0}function u(e,t,n){for(var i=0,r=e.length-1;i<=r;){var o=(i+r)/2|0,a=n(e[o],t);if(a<0)i=o+1;else{if(!(a>0))return o;r=o-1}}return-(i+1)}function l(e,t){var n=0,i=e.length;if(0===i)return 0;for(;n<i;){var r=Math.floor((n+i)/2);t(e[r])?i=r:n=r+1}return n}function c(e,t,n){if((e|=0)>=t.length)throw new TypeError("invalid index");var i,o=t[Math.floor(t.length*Math.random())],a=[],s=[],u=[],l=(0,r.Z)(t);try{for(l.s();!(i=l.n()).done;){var d=i.value,h=n(d,o);h<0?a.push(d):h>0?s.push(d):u.push(d)}}catch(f){l.e(f)}finally{l.f()}return e<a.length?c(e,a,n):e<a.length+u.length?u[0]:c(e-(a.length+u.length),s,n)}function d(e,t){var n,i=[],o=void 0,a=(0,r.Z)(e.slice(0).sort(t));try{for(a.s();!(n=a.n()).done;){var s=n.value;o&&0===t(o[0],s)?o.push(s):(o=[s],i.push(o))}}catch(u){a.e(u)}finally{a.f()}return i}function h(e){return e.filter((function(e){return!!e}))}function f(e){return!Array.isArray(e)||0===e.length}function p(e){return Array.isArray(e)&&e.length>0}function g(e,t){if(!t)return e.filter((function(t,n){return e.indexOf(t)===n}));var n=Object.create(null);return e.filter((function(e){var i=t(e);return!n[i]&&(n[i]=!0,!0)}))}function v(e){var t=new Set;return e.filter((function(e){return!t.has(e)&&(t.add(e),!0)}))}function m(e,t){return e.length>0?e[0]:t}function _(e){var t;return(t=[]).concat.apply(t,(0,i.Z)(e))}function y(e,t){var n="number"===typeof t?e:0;"number"===typeof t?n=e:(n=0,t=e);var i=[];if(n<=t)for(var r=n;r<t;r++)i.push(r);else for(var o=n;o>t;o--)i.push(o);return i}function b(e,t,n){var i=e.slice(0,t),r=e.slice(t);return i.concat(n,r)}function w(e,t){var n=e.indexOf(t);n>-1&&(e.splice(n,1),e.unshift(t))}function C(e,t){var n=e.indexOf(t);n>-1&&(e.splice(n,1),e.push(t))}function k(e){return Array.isArray(e)?e:[e]}},96147:function(e,t,n){"use strict";function i(e,t){if(!e)throw new Error(t?"Assertion failed (".concat(t,")"):"Assertion Failed")}n.d(t,{ok:function(){return i}})},27997:function(e,t,n){"use strict";n.d(t,{J8:function(){return d},PG:function(){return h},Ps:function(){return y},To:function(){return b},Ue:function(){return x},Vg:function(){return _},Vs:function(){return m},_F:function(){return w},eP:function(){return f},jT:function(){return S},pY:function(){return k},rH:function(){return v},vp:function(){return g},zh:function(){return C}});var i=n(15671),r=n(43144),o=n(87757),a=n.n(o),s=n(66526),u=n(8729),l=n(81626),c=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};function d(e){return!!e&&"function"===typeof e.then}function h(e){var t=new s.A,n=e(t.token),o=new Promise((function(e,i){t.token.onCancellationRequested((function(){i((0,u.F0)())})),Promise.resolve(n).then((function(n){t.dispose(),e(n)}),(function(e){t.dispose(),i(e)}))}));return new(function(){function e(){(0,i.Z)(this,e)}return(0,r.Z)(e,[{key:"cancel",value:function(){t.cancel()}},{key:"then",value:function(e,t){return o.then(e,t)}},{key:"catch",value:function(e){return this.then(void 0,e)}},{key:"finally",value:function(e){return o.finally(e)}}]),e}())}function f(e,t,n){return Promise.race([e,new Promise((function(e){return t.onCancellationRequested((function(){return e(n)}))}))])}var p=function(){function e(){(0,i.Z)(this,e),this.activePromise=null,this.queuedPromise=null,this.queuedPromiseFactory=null}return(0,r.Z)(e,[{key:"queue",value:function(e){var t=this;if(this.activePromise){if(this.queuedPromiseFactory=e,!this.queuedPromise){var n=function(){t.queuedPromise=null;var e=t.queue(t.queuedPromiseFactory);return t.queuedPromiseFactory=null,e};this.queuedPromise=new Promise((function(e){t.activePromise.then(n,n).then(e)}))}return new Promise((function(e,n){t.queuedPromise.then(e,n)}))}return this.activePromise=e(),new Promise((function(e,n){t.activePromise.then((function(n){t.activePromise=null,e(n)}),(function(e){t.activePromise=null,n(e)}))}))}}]),e}(),g=function(){function e(t){(0,i.Z)(this,e),this.defaultDelay=t,this.timeout=null,this.completionPromise=null,this.doResolve=null,this.doReject=null,this.task=null}return(0,r.Z)(e,[{key:"trigger",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.defaultDelay;return this.task=e,this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise((function(e,n){t.doResolve=e,t.doReject=n})).then((function(){if(t.completionPromise=null,t.doResolve=null,t.task){var e=t.task;return t.task=null,e()}}))),this.timeout=setTimeout((function(){t.timeout=null,t.doResolve&&t.doResolve(null)}),n),this.completionPromise}},{key:"isTriggered",value:function(){return null!==this.timeout}},{key:"cancel",value:function(){this.cancelTimeout(),this.completionPromise&&(this.doReject&&this.doReject((0,u.F0)()),this.completionPromise=null)}},{key:"cancelTimeout",value:function(){null!==this.timeout&&(clearTimeout(this.timeout),this.timeout=null)}},{key:"dispose",value:function(){this.cancelTimeout()}}]),e}(),v=function(){function e(t){(0,i.Z)(this,e),this.delayer=new g(t),this.throttler=new p}return(0,r.Z)(e,[{key:"trigger",value:function(e,t){var n=this;return this.delayer.trigger((function(){return n.throttler.queue(e)}),t)}},{key:"cancel",value:function(){this.delayer.cancel()}},{key:"dispose",value:function(){this.delayer.dispose()}}]),e}();function m(e,t){return t?new Promise((function(n,i){var r=setTimeout(n,e);t.onCancellationRequested((function(){clearTimeout(r),i((0,u.F0)())}))})):h((function(t){return m(e,t)}))}function _(e){var t=setTimeout(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0);return(0,l.OF)((function(){return clearTimeout(t)}))}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return!!e},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=0,r=e.length;return function o(){if(i>=r)return Promise.resolve(n);var a=e[i++];return Promise.resolve(a()).then((function(e){return t(e)?Promise.resolve(e):o()}))}()}var b,w=function(){function e(t,n){(0,i.Z)(this,e),this._token=-1,"function"===typeof t&&"number"===typeof n&&this.setIfNotSet(t,n)}return(0,r.Z)(e,[{key:"dispose",value:function(){this.cancel()}},{key:"cancel",value:function(){-1!==this._token&&(clearTimeout(this._token),this._token=-1)}},{key:"cancelAndSet",value:function(e,t){var n=this;this.cancel(),this._token=setTimeout((function(){n._token=-1,e()}),t)}},{key:"setIfNotSet",value:function(e,t){var n=this;-1===this._token&&(this._token=setTimeout((function(){n._token=-1,e()}),t))}}]),e}(),C=function(){function e(){(0,i.Z)(this,e),this._token=-1}return(0,r.Z)(e,[{key:"dispose",value:function(){this.cancel()}},{key:"cancel",value:function(){-1!==this._token&&(clearInterval(this._token),this._token=-1)}},{key:"cancelAndSet",value:function(e,t){this.cancel(),this._token=setInterval((function(){e()}),t)}}]),e}(),k=function(){function e(t,n){(0,i.Z)(this,e),this.timeoutToken=-1,this.runner=t,this.timeout=n,this.timeoutHandler=this.onTimeout.bind(this)}return(0,r.Z)(e,[{key:"dispose",value:function(){this.cancel(),this.runner=null}},{key:"cancel",value:function(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=-1)}},{key:"schedule",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.timeout;this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,e)}},{key:"delay",get:function(){return this.timeout},set:function(e){this.timeout=e}},{key:"isScheduled",value:function(){return-1!==this.timeoutToken}},{key:"onTimeout",value:function(){this.timeoutToken=-1,this.runner&&this.doRun()}},{key:"doRun",value:function(){this.runner&&this.runner()}}]),e}();!function(){if("function"!==typeof requestIdleCallback||"function"!==typeof cancelIdleCallback){var e=Object.freeze({didTimeout:!0,timeRemaining:function(){return 15}});b=function(t){var n=setTimeout((function(){return t(e)})),i=!1;return{dispose:function(){i||(i=!0,clearTimeout(n))}}}}else b=function(e,t){var n=requestIdleCallback(e,"number"===typeof t?{timeout:t}:void 0),i=!1;return{dispose:function(){i||(i=!0,cancelIdleCallback(n))}}}}();var S,x=function(){function e(t){var n=this;(0,i.Z)(this,e),this._didRun=!1,this._executor=function(){try{n._value=t()}catch(e){n._error=e}finally{n._didRun=!0}},this._handle=b((function(){return n._executor()}))}return(0,r.Z)(e,[{key:"dispose",value:function(){this._handle.dispose()}},{key:"value",get:function(){if(this._didRun||(this._handle.dispose(),this._executor()),this._error)throw this._error;return this._value}}]),e}();!function(e){function t(e){return c(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",Promise.allSettled(e));case 1:case"end":return t.stop()}}),t)})))}function n(e){return c(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",Promise.all(e.map((function(e){return e.then((function(e){return{status:"fulfilled",value:e}}),(function(e){return{status:"rejected",reason:e}}))}))));case 1:case"end":return t.stop()}}),t)})))}e.allSettled=function(e){return c(this,void 0,void 0,a().mark((function i(){return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if("function"!==typeof Promise.allSettled){i.next=2;break}return i.abrupt("return",t(e));case 2:return i.abrupt("return",n(e));case 3:case"end":return i.stop()}}),i)})))},e.settled=function(e){return c(this,void 0,void 0,a().mark((function t(){var n,i;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=void 0,t.next=3,Promise.all(e.map((function(e){return e.then((function(e){return e}),(function(e){n||(n=e)}))})));case 3:if(i=t.sent,"undefined"===typeof n){t.next=6;break}throw n;case 6:return t.abrupt("return",i);case 7:case"end":return t.stop()}}),t)})))}}(S||(S={}))},27877:function(e,t,n){"use strict";n.d(t,{Ag:function(){return h},Cg:function(){return g},KN:function(){return l},Q$:function(){return p},T4:function(){return f},mP:function(){return c},oq:function(){return d}});var i,r=n(15671),o=n(43144),a=n(51747),s="undefined"!==typeof Buffer,u="undefined"!==typeof TextDecoder,l=function(){function e(t){(0,r.Z)(this,e),this.buffer=t,this.byteLength=this.buffer.byteLength}return(0,o.Z)(e,[{key:"toString",value:function(){return s?this.buffer.toString():u?(i||(i=new TextDecoder),i.decode(this.buffer)):a.CZ(this.buffer)}}],[{key:"wrap",value:function(t){return s&&!Buffer.isBuffer(t)&&(t=Buffer.from(t.buffer,t.byteOffset,t.byteLength)),new e(t)}}]),e}();function c(e,t){return e[t+0]<<0>>>0|e[t+1]<<8>>>0}function d(e,t,n){e[n+0]=255&t,t>>>=8,e[n+1]=255&t}function h(e,t){return e[t]*Math.pow(2,24)+e[t+1]*Math.pow(2,16)+e[t+2]*Math.pow(2,8)+e[t+3]}function f(e,t,n){e[n+3]=t,t>>>=8,e[n+2]=t,t>>>=8,e[n+1]=t,t>>>=8,e[n]=t}function p(e,t){return e[t]}function g(e,t,n){e[n]=t}},66526:function(e,t,n){"use strict";n.d(t,{A:function(){return l},T:function(){return i}});var i,r=n(15671),o=n(43144),a=n(11732),s=Object.freeze((function(e,t){var n=setTimeout(e.bind(t),0);return{dispose:function(){clearTimeout(n)}}}));!function(e){e.isCancellationToken=function(t){return t===e.None||t===e.Cancelled||(t instanceof u||!(!t||"object"!==typeof t)&&("boolean"===typeof t.isCancellationRequested&&"function"===typeof t.onCancellationRequested))},e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:a.ju.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:s})}(i||(i={}));var u=function(){function e(){(0,r.Z)(this,e),this._isCancelled=!1,this._emitter=null}return(0,o.Z)(e,[{key:"cancel",value:function(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}},{key:"isCancellationRequested",get:function(){return this._isCancelled}},{key:"onCancellationRequested",get:function(){return this._isCancelled?s:(this._emitter||(this._emitter=new a.Q5),this._emitter.event)}},{key:"dispose",value:function(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}]),e}(),l=function(){function e(t){(0,r.Z)(this,e),this._token=void 0,this._parentListener=void 0,this._parentListener=t&&t.onCancellationRequested(this.cancel,this)}return(0,o.Z)(e,[{key:"token",get:function(){return this._token||(this._token=new u),this._token}},{key:"cancel",value:function(){this._token?this._token instanceof u&&this._token.cancel():this._token=i.Cancelled}},{key:"dispose",value:function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&this.cancel(),this._parentListener&&this._parentListener.dispose(),this._token?this._token instanceof u&&this._token.dispose():this._token=i.None}}]),e}()},4354:function(e,t,n){"use strict";n.d(t,{CM:function(){return l},JL:function(){return c},dT:function(){return d},fK:function(){return u},lA:function(){return h}});var i=n(29439),r=n(15671),o=n(43144),a=n(11732),s=new(function(){function e(){(0,r.Z)(this,e),this._icons=new Map,this._onDidRegister=new a.Q5}return(0,o.Z)(e,[{key:"add",value:function(e){var t=this._icons.get(e.id);t?e.description?t.description=e.description:console.error("Duplicate registration of codicon ".concat(e.id)):(this._icons.set(e.id,e),this._onDidRegister.fire(e))}},{key:"get",value:function(e){return this._icons.get(e)}},{key:"all",get:function(){return this._icons.values()}},{key:"onDidRegister",get:function(){return this._onDidRegister.event}}]),e}()),u=s;function l(e,t){return new h(e,t)}function c(e){return e?e.replace(/\$\((.*?)\)/g,(function(e,t){return" ".concat(t," ")})).trim():""}var d,h=function(){function e(t,n,i){(0,r.Z)(this,e),this.id=t,this.definition=n,this.description=i,s.add(this)}return(0,o.Z)(e,[{key:"classNames",get:function(){return"codicon codicon-"+this.id}},{key:"classNamesArray",get:function(){return["codicon","codicon-"+this.id]}},{key:"cssSelector",get:function(){return".codicon.codicon-"+this.id}}]),e}();!function(e){e.iconNameSegment="[A-Za-z0-9]+",e.iconNameExpression="[A-Za-z0-9\\-]+",e.iconModifierExpression="~[A-Za-z]+";var t=new RegExp("^(".concat(e.iconNameExpression,")(").concat(e.iconModifierExpression,")?$"));function n(e){if(e instanceof h)return["codicon","codicon-"+e.id];var r=t.exec(e.id);if(!r)return n(h.error);var o=(0,i.Z)(r,3),a=o[1],s=o[2],u=["codicon","codicon-"+a];return s&&u.push("codicon-modifier-"+s.substr(1)),u}e.asClassNameArray=n,e.asClassName=function(e){return n(e).join(" ")},e.asCSSSelector=function(e){return"."+n(e).join(".")}}(d||(d={})),function(e){e.add=new e("add",{fontCharacter:"\\ea60"}),e.plus=new e("plus",{fontCharacter:"\\ea60"}),e.gistNew=new e("gist-new",{fontCharacter:"\\ea60"}),e.repoCreate=new e("repo-create",{fontCharacter:"\\ea60"}),e.lightbulb=new e("lightbulb",{fontCharacter:"\\ea61"}),e.lightBulb=new e("light-bulb",{fontCharacter:"\\ea61"}),e.repo=new e("repo",{fontCharacter:"\\ea62"}),e.repoDelete=new e("repo-delete",{fontCharacter:"\\ea62"}),e.gistFork=new e("gist-fork",{fontCharacter:"\\ea63"}),e.repoForked=new e("repo-forked",{fontCharacter:"\\ea63"}),e.gitPullRequest=new e("git-pull-request",{fontCharacter:"\\ea64"}),e.gitPullRequestAbandoned=new e("git-pull-request-abandoned",{fontCharacter:"\\ea64"}),e.recordKeys=new e("record-keys",{fontCharacter:"\\ea65"}),e.keyboard=new e("keyboard",{fontCharacter:"\\ea65"}),e.tag=new e("tag",{fontCharacter:"\\ea66"}),e.tagAdd=new e("tag-add",{fontCharacter:"\\ea66"}),e.tagRemove=new e("tag-remove",{fontCharacter:"\\ea66"}),e.person=new e("person",{fontCharacter:"\\ea67"}),e.personFollow=new e("person-follow",{fontCharacter:"\\ea67"}),e.personOutline=new e("person-outline",{fontCharacter:"\\ea67"}),e.personFilled=new e("person-filled",{fontCharacter:"\\ea67"}),e.gitBranch=new e("git-branch",{fontCharacter:"\\ea68"}),e.gitBranchCreate=new e("git-branch-create",{fontCharacter:"\\ea68"}),e.gitBranchDelete=new e("git-branch-delete",{fontCharacter:"\\ea68"}),e.sourceControl=new e("source-control",{fontCharacter:"\\ea68"}),e.mirror=new e("mirror",{fontCharacter:"\\ea69"}),e.mirrorPublic=new e("mirror-public",{fontCharacter:"\\ea69"}),e.star=new e("star",{fontCharacter:"\\ea6a"}),e.starAdd=new e("star-add",{fontCharacter:"\\ea6a"}),e.starDelete=new e("star-delete",{fontCharacter:"\\ea6a"}),e.starEmpty=new e("star-empty",{fontCharacter:"\\ea6a"}),e.comment=new e("comment",{fontCharacter:"\\ea6b"}),e.commentAdd=new e("comment-add",{fontCharacter:"\\ea6b"}),e.alert=new e("alert",{fontCharacter:"\\ea6c"}),e.warning=new e("warning",{fontCharacter:"\\ea6c"}),e.search=new e("search",{fontCharacter:"\\ea6d"}),e.searchSave=new e("search-save",{fontCharacter:"\\ea6d"}),e.logOut=new e("log-out",{fontCharacter:"\\ea6e"}),e.signOut=new e("sign-out",{fontCharacter:"\\ea6e"}),e.logIn=new e("log-in",{fontCharacter:"\\ea6f"}),e.signIn=new e("sign-in",{fontCharacter:"\\ea6f"}),e.eye=new e("eye",{fontCharacter:"\\ea70"}),e.eyeUnwatch=new e("eye-unwatch",{fontCharacter:"\\ea70"}),e.eyeWatch=new e("eye-watch",{fontCharacter:"\\ea70"}),e.circleFilled=new e("circle-filled",{fontCharacter:"\\ea71"}),e.primitiveDot=new e("primitive-dot",{fontCharacter:"\\ea71"}),e.closeDirty=new e("close-dirty",{fontCharacter:"\\ea71"}),e.debugBreakpoint=new e("debug-breakpoint",{fontCharacter:"\\ea71"}),e.debugBreakpointDisabled=new e("debug-breakpoint-disabled",{fontCharacter:"\\ea71"}),e.debugHint=new e("debug-hint",{fontCharacter:"\\ea71"}),e.primitiveSquare=new e("primitive-square",{fontCharacter:"\\ea72"}),e.edit=new e("edit",{fontCharacter:"\\ea73"}),e.pencil=new e("pencil",{fontCharacter:"\\ea73"}),e.info=new e("info",{fontCharacter:"\\ea74"}),e.issueOpened=new e("issue-opened",{fontCharacter:"\\ea74"}),e.gistPrivate=new e("gist-private",{fontCharacter:"\\ea75"}),e.gitForkPrivate=new e("git-fork-private",{fontCharacter:"\\ea75"}),e.lock=new e("lock",{fontCharacter:"\\ea75"}),e.mirrorPrivate=new e("mirror-private",{fontCharacter:"\\ea75"}),e.close=new e("close",{fontCharacter:"\\ea76"}),e.removeClose=new e("remove-close",{fontCharacter:"\\ea76"}),e.x=new e("x",{fontCharacter:"\\ea76"}),e.repoSync=new e("repo-sync",{fontCharacter:"\\ea77"}),e.sync=new e("sync",{fontCharacter:"\\ea77"}),e.clone=new e("clone",{fontCharacter:"\\ea78"}),e.desktopDownload=new e("desktop-download",{fontCharacter:"\\ea78"}),e.beaker=new e("beaker",{fontCharacter:"\\ea79"}),e.microscope=new e("microscope",{fontCharacter:"\\ea79"}),e.vm=new e("vm",{fontCharacter:"\\ea7a"}),e.deviceDesktop=new e("device-desktop",{fontCharacter:"\\ea7a"}),e.file=new e("file",{fontCharacter:"\\ea7b"}),e.fileText=new e("file-text",{fontCharacter:"\\ea7b"}),e.more=new e("more",{fontCharacter:"\\ea7c"}),e.ellipsis=new e("ellipsis",{fontCharacter:"\\ea7c"}),e.kebabHorizontal=new e("kebab-horizontal",{fontCharacter:"\\ea7c"}),e.mailReply=new e("mail-reply",{fontCharacter:"\\ea7d"}),e.reply=new e("reply",{fontCharacter:"\\ea7d"}),e.organization=new e("organization",{fontCharacter:"\\ea7e"}),e.organizationFilled=new e("organization-filled",{fontCharacter:"\\ea7e"}),e.organizationOutline=new e("organization-outline",{fontCharacter:"\\ea7e"}),e.newFile=new e("new-file",{fontCharacter:"\\ea7f"}),e.fileAdd=new e("file-add",{fontCharacter:"\\ea7f"}),e.newFolder=new e("new-folder",{fontCharacter:"\\ea80"}),e.fileDirectoryCreate=new e("file-directory-create",{fontCharacter:"\\ea80"}),e.trash=new e("trash",{fontCharacter:"\\ea81"}),e.trashcan=new e("trashcan",{fontCharacter:"\\ea81"}),e.history=new e("history",{fontCharacter:"\\ea82"}),e.clock=new e("clock",{fontCharacter:"\\ea82"}),e.folder=new e("folder",{fontCharacter:"\\ea83"}),e.fileDirectory=new e("file-directory",{fontCharacter:"\\ea83"}),e.symbolFolder=new e("symbol-folder",{fontCharacter:"\\ea83"}),e.logoGithub=new e("logo-github",{fontCharacter:"\\ea84"}),e.markGithub=new e("mark-github",{fontCharacter:"\\ea84"}),e.github=new e("github",{fontCharacter:"\\ea84"}),e.terminal=new e("terminal",{fontCharacter:"\\ea85"}),e.console=new e("console",{fontCharacter:"\\ea85"}),e.repl=new e("repl",{fontCharacter:"\\ea85"}),e.zap=new e("zap",{fontCharacter:"\\ea86"}),e.symbolEvent=new e("symbol-event",{fontCharacter:"\\ea86"}),e.error=new e("error",{fontCharacter:"\\ea87"}),e.stop=new e("stop",{fontCharacter:"\\ea87"}),e.variable=new e("variable",{fontCharacter:"\\ea88"}),e.symbolVariable=new e("symbol-variable",{fontCharacter:"\\ea88"}),e.array=new e("array",{fontCharacter:"\\ea8a"}),e.symbolArray=new e("symbol-array",{fontCharacter:"\\ea8a"}),e.symbolModule=new e("symbol-module",{fontCharacter:"\\ea8b"}),e.symbolPackage=new e("symbol-package",{fontCharacter:"\\ea8b"}),e.symbolNamespace=new e("symbol-namespace",{fontCharacter:"\\ea8b"}),e.symbolObject=new e("symbol-object",{fontCharacter:"\\ea8b"}),e.symbolMethod=new e("symbol-method",{fontCharacter:"\\ea8c"}),e.symbolFunction=new e("symbol-function",{fontCharacter:"\\ea8c"}),e.symbolConstructor=new e("symbol-constructor",{fontCharacter:"\\ea8c"}),e.symbolBoolean=new e("symbol-boolean",{fontCharacter:"\\ea8f"}),e.symbolNull=new e("symbol-null",{fontCharacter:"\\ea8f"}),e.symbolNumeric=new e("symbol-numeric",{fontCharacter:"\\ea90"}),e.symbolNumber=new e("symbol-number",{fontCharacter:"\\ea90"}),e.symbolStructure=new e("symbol-structure",{fontCharacter:"\\ea91"}),e.symbolStruct=new e("symbol-struct",{fontCharacter:"\\ea91"}),e.symbolParameter=new e("symbol-parameter",{fontCharacter:"\\ea92"}),e.symbolTypeParameter=new e("symbol-type-parameter",{fontCharacter:"\\ea92"}),e.symbolKey=new e("symbol-key",{fontCharacter:"\\ea93"}),e.symbolText=new e("symbol-text",{fontCharacter:"\\ea93"}),e.symbolReference=new e("symbol-reference",{fontCharacter:"\\ea94"}),e.goToFile=new e("go-to-file",{fontCharacter:"\\ea94"}),e.symbolEnum=new e("symbol-enum",{fontCharacter:"\\ea95"}),e.symbolValue=new e("symbol-value",{fontCharacter:"\\ea95"}),e.symbolRuler=new e("symbol-ruler",{fontCharacter:"\\ea96"}),e.symbolUnit=new e("symbol-unit",{fontCharacter:"\\ea96"}),e.activateBreakpoints=new e("activate-breakpoints",{fontCharacter:"\\ea97"}),e.archive=new e("archive",{fontCharacter:"\\ea98"}),e.arrowBoth=new e("arrow-both",{fontCharacter:"\\ea99"}),e.arrowDown=new e("arrow-down",{fontCharacter:"\\ea9a"}),e.arrowLeft=new e("arrow-left",{fontCharacter:"\\ea9b"}),e.arrowRight=new e("arrow-right",{fontCharacter:"\\ea9c"}),e.arrowSmallDown=new e("arrow-small-down",{fontCharacter:"\\ea9d"}),e.arrowSmallLeft=new e("arrow-small-left",{fontCharacter:"\\ea9e"}),e.arrowSmallRight=new e("arrow-small-right",{fontCharacter:"\\ea9f"}),e.arrowSmallUp=new e("arrow-small-up",{fontCharacter:"\\eaa0"}),e.arrowUp=new e("arrow-up",{fontCharacter:"\\eaa1"}),e.bell=new e("bell",{fontCharacter:"\\eaa2"}),e.bold=new e("bold",{fontCharacter:"\\eaa3"}),e.book=new e("book",{fontCharacter:"\\eaa4"}),e.bookmark=new e("bookmark",{fontCharacter:"\\eaa5"}),e.debugBreakpointConditionalUnverified=new e("debug-breakpoint-conditional-unverified",{fontCharacter:"\\eaa6"}),e.debugBreakpointConditional=new e("debug-breakpoint-conditional",{fontCharacter:"\\eaa7"}),e.debugBreakpointConditionalDisabled=new e("debug-breakpoint-conditional-disabled",{fontCharacter:"\\eaa7"}),e.debugBreakpointDataUnverified=new e("debug-breakpoint-data-unverified",{fontCharacter:"\\eaa8"}),e.debugBreakpointData=new e("debug-breakpoint-data",{fontCharacter:"\\eaa9"}),e.debugBreakpointDataDisabled=new e("debug-breakpoint-data-disabled",{fontCharacter:"\\eaa9"}),e.debugBreakpointLogUnverified=new e("debug-breakpoint-log-unverified",{fontCharacter:"\\eaaa"}),e.debugBreakpointLog=new e("debug-breakpoint-log",{fontCharacter:"\\eaab"}),e.debugBreakpointLogDisabled=new e("debug-breakpoint-log-disabled",{fontCharacter:"\\eaab"}),e.briefcase=new e("briefcase",{fontCharacter:"\\eaac"}),e.broadcast=new e("broadcast",{fontCharacter:"\\eaad"}),e.browser=new e("browser",{fontCharacter:"\\eaae"}),e.bug=new e("bug",{fontCharacter:"\\eaaf"}),e.calendar=new e("calendar",{fontCharacter:"\\eab0"}),e.caseSensitive=new e("case-sensitive",{fontCharacter:"\\eab1"}),e.check=new e("check",{fontCharacter:"\\eab2"}),e.checklist=new e("checklist",{fontCharacter:"\\eab3"}),e.chevronDown=new e("chevron-down",{fontCharacter:"\\eab4"}),e.chevronLeft=new e("chevron-left",{fontCharacter:"\\eab5"}),e.chevronRight=new e("chevron-right",{fontCharacter:"\\eab6"}),e.chevronUp=new e("chevron-up",{fontCharacter:"\\eab7"}),e.chromeClose=new e("chrome-close",{fontCharacter:"\\eab8"}),e.chromeMaximize=new e("chrome-maximize",{fontCharacter:"\\eab9"}),e.chromeMinimize=new e("chrome-minimize",{fontCharacter:"\\eaba"}),e.chromeRestore=new e("chrome-restore",{fontCharacter:"\\eabb"}),e.circleOutline=new e("circle-outline",{fontCharacter:"\\eabc"}),e.debugBreakpointUnverified=new e("debug-breakpoint-unverified",{fontCharacter:"\\eabc"}),e.circleSlash=new e("circle-slash",{fontCharacter:"\\eabd"}),e.circuitBoard=new e("circuit-board",{fontCharacter:"\\eabe"}),e.clearAll=new e("clear-all",{fontCharacter:"\\eabf"}),e.clippy=new e("clippy",{fontCharacter:"\\eac0"}),e.closeAll=new e("close-all",{fontCharacter:"\\eac1"}),e.cloudDownload=new e("cloud-download",{fontCharacter:"\\eac2"}),e.cloudUpload=new e("cloud-upload",{fontCharacter:"\\eac3"}),e.code=new e("code",{fontCharacter:"\\eac4"}),e.collapseAll=new e("collapse-all",{fontCharacter:"\\eac5"}),e.colorMode=new e("color-mode",{fontCharacter:"\\eac6"}),e.commentDiscussion=new e("comment-discussion",{fontCharacter:"\\eac7"}),e.compareChanges=new e("compare-changes",{fontCharacter:"\\eafd"}),e.creditCard=new e("credit-card",{fontCharacter:"\\eac9"}),e.dash=new e("dash",{fontCharacter:"\\eacc"}),e.dashboard=new e("dashboard",{fontCharacter:"\\eacd"}),e.database=new e("database",{fontCharacter:"\\eace"}),e.debugContinue=new e("debug-continue",{fontCharacter:"\\eacf"}),e.debugDisconnect=new e("debug-disconnect",{fontCharacter:"\\ead0"}),e.debugPause=new e("debug-pause",{fontCharacter:"\\ead1"}),e.debugRestart=new e("debug-restart",{fontCharacter:"\\ead2"}),e.debugStart=new e("debug-start",{fontCharacter:"\\ead3"}),e.debugStepInto=new e("debug-step-into",{fontCharacter:"\\ead4"}),e.debugStepOut=new e("debug-step-out",{fontCharacter:"\\ead5"}),e.debugStepOver=new e("debug-step-over",{fontCharacter:"\\ead6"}),e.debugStop=new e("debug-stop",{fontCharacter:"\\ead7"}),e.debug=new e("debug",{fontCharacter:"\\ead8"}),e.deviceCameraVideo=new e("device-camera-video",{fontCharacter:"\\ead9"}),e.deviceCamera=new e("device-camera",{fontCharacter:"\\eada"}),e.deviceMobile=new e("device-mobile",{fontCharacter:"\\eadb"}),e.diffAdded=new e("diff-added",{fontCharacter:"\\eadc"}),e.diffIgnored=new e("diff-ignored",{fontCharacter:"\\eadd"}),e.diffModified=new e("diff-modified",{fontCharacter:"\\eade"}),e.diffRemoved=new e("diff-removed",{fontCharacter:"\\eadf"}),e.diffRenamed=new e("diff-renamed",{fontCharacter:"\\eae0"}),e.diff=new e("diff",{fontCharacter:"\\eae1"}),e.discard=new e("discard",{fontCharacter:"\\eae2"}),e.editorLayout=new e("editor-layout",{fontCharacter:"\\eae3"}),e.emptyWindow=new e("empty-window",{fontCharacter:"\\eae4"}),e.exclude=new e("exclude",{fontCharacter:"\\eae5"}),e.extensions=new e("extensions",{fontCharacter:"\\eae6"}),e.eyeClosed=new e("eye-closed",{fontCharacter:"\\eae7"}),e.fileBinary=new e("file-binary",{fontCharacter:"\\eae8"}),e.fileCode=new e("file-code",{fontCharacter:"\\eae9"}),e.fileMedia=new e("file-media",{fontCharacter:"\\eaea"}),e.filePdf=new e("file-pdf",{fontCharacter:"\\eaeb"}),e.fileSubmodule=new e("file-submodule",{fontCharacter:"\\eaec"}),e.fileSymlinkDirectory=new e("file-symlink-directory",{fontCharacter:"\\eaed"}),e.fileSymlinkFile=new e("file-symlink-file",{fontCharacter:"\\eaee"}),e.fileZip=new e("file-zip",{fontCharacter:"\\eaef"}),e.files=new e("files",{fontCharacter:"\\eaf0"}),e.filter=new e("filter",{fontCharacter:"\\eaf1"}),e.flame=new e("flame",{fontCharacter:"\\eaf2"}),e.foldDown=new e("fold-down",{fontCharacter:"\\eaf3"}),e.foldUp=new e("fold-up",{fontCharacter:"\\eaf4"}),e.fold=new e("fold",{fontCharacter:"\\eaf5"}),e.folderActive=new e("folder-active",{fontCharacter:"\\eaf6"}),e.folderOpened=new e("folder-opened",{fontCharacter:"\\eaf7"}),e.gear=new e("gear",{fontCharacter:"\\eaf8"}),e.gift=new e("gift",{fontCharacter:"\\eaf9"}),e.gistSecret=new e("gist-secret",{fontCharacter:"\\eafa"}),e.gist=new e("gist",{fontCharacter:"\\eafb"}),e.gitCommit=new e("git-commit",{fontCharacter:"\\eafc"}),e.gitCompare=new e("git-compare",{fontCharacter:"\\eafd"}),e.gitMerge=new e("git-merge",{fontCharacter:"\\eafe"}),e.githubAction=new e("github-action",{fontCharacter:"\\eaff"}),e.githubAlt=new e("github-alt",{fontCharacter:"\\eb00"}),e.globe=new e("globe",{fontCharacter:"\\eb01"}),e.grabber=new e("grabber",{fontCharacter:"\\eb02"}),e.graph=new e("graph",{fontCharacter:"\\eb03"}),e.gripper=new e("gripper",{fontCharacter:"\\eb04"}),e.heart=new e("heart",{fontCharacter:"\\eb05"}),e.home=new e("home",{fontCharacter:"\\eb06"}),e.horizontalRule=new e("horizontal-rule",{fontCharacter:"\\eb07"}),e.hubot=new e("hubot",{fontCharacter:"\\eb08"}),e.inbox=new e("inbox",{fontCharacter:"\\eb09"}),e.issueClosed=new e("issue-closed",{fontCharacter:"\\eb0a"}),e.issueReopened=new e("issue-reopened",{fontCharacter:"\\eb0b"}),e.issues=new e("issues",{fontCharacter:"\\eb0c"}),e.italic=new e("italic",{fontCharacter:"\\eb0d"}),e.jersey=new e("jersey",{fontCharacter:"\\eb0e"}),e.json=new e("json",{fontCharacter:"\\eb0f"}),e.kebabVertical=new e("kebab-vertical",{fontCharacter:"\\eb10"}),e.key=new e("key",{fontCharacter:"\\eb11"}),e.law=new e("law",{fontCharacter:"\\eb12"}),e.lightbulbAutofix=new e("lightbulb-autofix",{fontCharacter:"\\eb13"}),e.linkExternal=new e("link-external",{fontCharacter:"\\eb14"}),e.link=new e("link",{fontCharacter:"\\eb15"}),e.listOrdered=new e("list-ordered",{fontCharacter:"\\eb16"}),e.listUnordered=new e("list-unordered",{fontCharacter:"\\eb17"}),e.liveShare=new e("live-share",{fontCharacter:"\\eb18"}),e.loading=new e("loading",{fontCharacter:"\\eb19"}),e.location=new e("location",{fontCharacter:"\\eb1a"}),e.mailRead=new e("mail-read",{fontCharacter:"\\eb1b"}),e.mail=new e("mail",{fontCharacter:"\\eb1c"}),e.markdown=new e("markdown",{fontCharacter:"\\eb1d"}),e.megaphone=new e("megaphone",{fontCharacter:"\\eb1e"}),e.mention=new e("mention",{fontCharacter:"\\eb1f"}),e.milestone=new e("milestone",{fontCharacter:"\\eb20"}),e.mortarBoard=new e("mortar-board",{fontCharacter:"\\eb21"}),e.move=new e("move",{fontCharacter:"\\eb22"}),e.multipleWindows=new e("multiple-windows",{fontCharacter:"\\eb23"}),e.mute=new e("mute",{fontCharacter:"\\eb24"}),e.noNewline=new e("no-newline",{fontCharacter:"\\eb25"}),e.note=new e("note",{fontCharacter:"\\eb26"}),e.octoface=new e("octoface",{fontCharacter:"\\eb27"}),e.openPreview=new e("open-preview",{fontCharacter:"\\eb28"}),e.package_=new e("package",{fontCharacter:"\\eb29"}),e.paintcan=new e("paintcan",{fontCharacter:"\\eb2a"}),e.pin=new e("pin",{fontCharacter:"\\eb2b"}),e.play=new e("play",{fontCharacter:"\\eb2c"}),e.run=new e("run",{fontCharacter:"\\eb2c"}),e.plug=new e("plug",{fontCharacter:"\\eb2d"}),e.preserveCase=new e("preserve-case",{fontCharacter:"\\eb2e"}),e.preview=new e("preview",{fontCharacter:"\\eb2f"}),e.project=new e("project",{fontCharacter:"\\eb30"}),e.pulse=new e("pulse",{fontCharacter:"\\eb31"}),e.question=new e("question",{fontCharacter:"\\eb32"}),e.quote=new e("quote",{fontCharacter:"\\eb33"}),e.radioTower=new e("radio-tower",{fontCharacter:"\\eb34"}),e.reactions=new e("reactions",{fontCharacter:"\\eb35"}),e.references=new e("references",{fontCharacter:"\\eb36"}),e.refresh=new e("refresh",{fontCharacter:"\\eb37"}),e.regex=new e("regex",{fontCharacter:"\\eb38"}),e.remoteExplorer=new e("remote-explorer",{fontCharacter:"\\eb39"}),e.remote=new e("remote",{fontCharacter:"\\eb3a"}),e.remove=new e("remove",{fontCharacter:"\\eb3b"}),e.replaceAll=new e("replace-all",{fontCharacter:"\\eb3c"}),e.replace=new e("replace",{fontCharacter:"\\eb3d"}),e.repoClone=new e("repo-clone",{fontCharacter:"\\eb3e"}),e.repoForcePush=new e("repo-force-push",{fontCharacter:"\\eb3f"}),e.repoPull=new e("repo-pull",{fontCharacter:"\\eb40"}),e.repoPush=new e("repo-push",{fontCharacter:"\\eb41"}),e.report=new e("report",{fontCharacter:"\\eb42"}),e.requestChanges=new e("request-changes",{fontCharacter:"\\eb43"}),e.rocket=new e("rocket",{fontCharacter:"\\eb44"}),e.rootFolderOpened=new e("root-folder-opened",{fontCharacter:"\\eb45"}),e.rootFolder=new e("root-folder",{fontCharacter:"\\eb46"}),e.rss=new e("rss",{fontCharacter:"\\eb47"}),e.ruby=new e("ruby",{fontCharacter:"\\eb48"}),e.saveAll=new e("save-all",{fontCharacter:"\\eb49"}),e.saveAs=new e("save-as",{fontCharacter:"\\eb4a"}),e.save=new e("save",{fontCharacter:"\\eb4b"}),e.screenFull=new e("screen-full",{fontCharacter:"\\eb4c"}),e.screenNormal=new e("screen-normal",{fontCharacter:"\\eb4d"}),e.searchStop=new e("search-stop",{fontCharacter:"\\eb4e"}),e.server=new e("server",{fontCharacter:"\\eb50"}),e.settingsGear=new e("settings-gear",{fontCharacter:"\\eb51"}),e.settings=new e("settings",{fontCharacter:"\\eb52"}),e.shield=new e("shield",{fontCharacter:"\\eb53"}),e.smiley=new e("smiley",{fontCharacter:"\\eb54"}),e.sortPrecedence=new e("sort-precedence",{fontCharacter:"\\eb55"}),e.splitHorizontal=new e("split-horizontal",{fontCharacter:"\\eb56"}),e.splitVertical=new e("split-vertical",{fontCharacter:"\\eb57"}),e.squirrel=new e("squirrel",{fontCharacter:"\\eb58"}),e.starFull=new e("star-full",{fontCharacter:"\\eb59"}),e.starHalf=new e("star-half",{fontCharacter:"\\eb5a"}),e.symbolClass=new e("symbol-class",{fontCharacter:"\\eb5b"}),e.symbolColor=new e("symbol-color",{fontCharacter:"\\eb5c"}),e.symbolConstant=new e("symbol-constant",{fontCharacter:"\\eb5d"}),e.symbolEnumMember=new e("symbol-enum-member",{fontCharacter:"\\eb5e"}),e.symbolField=new e("symbol-field",{fontCharacter:"\\eb5f"}),e.symbolFile=new e("symbol-file",{fontCharacter:"\\eb60"}),e.symbolInterface=new e("symbol-interface",{fontCharacter:"\\eb61"}),e.symbolKeyword=new e("symbol-keyword",{fontCharacter:"\\eb62"}),e.symbolMisc=new e("symbol-misc",{fontCharacter:"\\eb63"}),e.symbolOperator=new e("symbol-operator",{fontCharacter:"\\eb64"}),e.symbolProperty=new e("symbol-property",{fontCharacter:"\\eb65"}),e.wrench=new e("wrench",{fontCharacter:"\\eb65"}),e.wrenchSubaction=new e("wrench-subaction",{fontCharacter:"\\eb65"}),e.symbolSnippet=new e("symbol-snippet",{fontCharacter:"\\eb66"}),e.tasklist=new e("tasklist",{fontCharacter:"\\eb67"}),e.telescope=new e("telescope",{fontCharacter:"\\eb68"}),e.textSize=new e("text-size",{fontCharacter:"\\eb69"}),e.threeBars=new e("three-bars",{fontCharacter:"\\eb6a"}),e.thumbsdown=new e("thumbsdown",{fontCharacter:"\\eb6b"}),e.thumbsup=new e("thumbsup",{fontCharacter:"\\eb6c"}),e.tools=new e("tools",{fontCharacter:"\\eb6d"}),e.triangleDown=new e("triangle-down",{fontCharacter:"\\eb6e"}),e.triangleLeft=new e("triangle-left",{fontCharacter:"\\eb6f"}),e.triangleRight=new e("triangle-right",{fontCharacter:"\\eb70"}),e.triangleUp=new e("triangle-up",{fontCharacter:"\\eb71"}),e.twitter=new e("twitter",{fontCharacter:"\\eb72"}),e.unfold=new e("unfold",{fontCharacter:"\\eb73"}),e.unlock=new e("unlock",{fontCharacter:"\\eb74"}),e.unmute=new e("unmute",{fontCharacter:"\\eb75"}),e.unverified=new e("unverified",{fontCharacter:"\\eb76"}),e.verified=new e("verified",{fontCharacter:"\\eb77"}),e.versions=new e("versions",{fontCharacter:"\\eb78"}),e.vmActive=new e("vm-active",{fontCharacter:"\\eb79"}),e.vmOutline=new e("vm-outline",{fontCharacter:"\\eb7a"}),e.vmRunning=new e("vm-running",{fontCharacter:"\\eb7b"}),e.watch=new e("watch",{fontCharacter:"\\eb7c"}),e.whitespace=new e("whitespace",{fontCharacter:"\\eb7d"}),e.wholeWord=new e("whole-word",{fontCharacter:"\\eb7e"}),e.window=new e("window",{fontCharacter:"\\eb7f"}),e.wordWrap=new e("word-wrap",{fontCharacter:"\\eb80"}),e.zoomIn=new e("zoom-in",{fontCharacter:"\\eb81"}),e.zoomOut=new e("zoom-out",{fontCharacter:"\\eb82"}),e.listFilter=new e("list-filter",{fontCharacter:"\\eb83"}),e.listFlat=new e("list-flat",{fontCharacter:"\\eb84"}),e.listSelection=new e("list-selection",{fontCharacter:"\\eb85"}),e.selection=new e("selection",{fontCharacter:"\\eb85"}),e.listTree=new e("list-tree",{fontCharacter:"\\eb86"}),e.debugBreakpointFunctionUnverified=new e("debug-breakpoint-function-unverified",{fontCharacter:"\\eb87"}),e.debugBreakpointFunction=new e("debug-breakpoint-function",{fontCharacter:"\\eb88"}),e.debugBreakpointFunctionDisabled=new e("debug-breakpoint-function-disabled",{fontCharacter:"\\eb88"}),e.debugStackframeActive=new e("debug-stackframe-active",{fontCharacter:"\\eb89"}),e.debugStackframeDot=new e("debug-stackframe-dot",{fontCharacter:"\\eb8a"}),e.debugStackframe=new e("debug-stackframe",{fontCharacter:"\\eb8b"}),e.debugStackframeFocused=new e("debug-stackframe-focused",{fontCharacter:"\\eb8b"}),e.debugBreakpointUnsupported=new e("debug-breakpoint-unsupported",{fontCharacter:"\\eb8c"}),e.symbolString=new e("symbol-string",{fontCharacter:"\\eb8d"}),e.debugReverseContinue=new e("debug-reverse-continue",{fontCharacter:"\\eb8e"}),e.debugStepBack=new e("debug-step-back",{fontCharacter:"\\eb8f"}),e.debugRestartFrame=new e("debug-restart-frame",{fontCharacter:"\\eb90"}),e.callIncoming=new e("call-incoming",{fontCharacter:"\\eb92"}),e.callOutgoing=new e("call-outgoing",{fontCharacter:"\\eb93"}),e.menu=new e("menu",{fontCharacter:"\\eb94"}),e.expandAll=new e("expand-all",{fontCharacter:"\\eb95"}),e.feedback=new e("feedback",{fontCharacter:"\\eb96"}),e.groupByRefType=new e("group-by-ref-type",{fontCharacter:"\\eb97"}),e.ungroupByRefType=new e("ungroup-by-ref-type",{fontCharacter:"\\eb98"}),e.account=new e("account",{fontCharacter:"\\eb99"}),e.bellDot=new e("bell-dot",{fontCharacter:"\\eb9a"}),e.debugConsole=new e("debug-console",{fontCharacter:"\\eb9b"}),e.library=new e("library",{fontCharacter:"\\eb9c"}),e.output=new e("output",{fontCharacter:"\\eb9d"}),e.runAll=new e("run-all",{fontCharacter:"\\eb9e"}),e.syncIgnored=new e("sync-ignored",{fontCharacter:"\\eb9f"}),e.pinned=new e("pinned",{fontCharacter:"\\eba0"}),e.githubInverted=new e("github-inverted",{fontCharacter:"\\eba1"}),e.debugAlt=new e("debug-alt",{fontCharacter:"\\eb91"}),e.serverProcess=new e("server-process",{fontCharacter:"\\eba2"}),e.serverEnvironment=new e("server-environment",{fontCharacter:"\\eba3"}),e.pass=new e("pass",{fontCharacter:"\\eba4"}),e.stopCircle=new e("stop-circle",{fontCharacter:"\\eba5"}),e.playCircle=new e("play-circle",{fontCharacter:"\\eba6"}),e.record=new e("record",{fontCharacter:"\\eba7"}),e.debugAltSmall=new e("debug-alt-small",{fontCharacter:"\\eba8"}),e.vmConnect=new e("vm-connect",{fontCharacter:"\\eba9"}),e.cloud=new e("cloud",{fontCharacter:"\\ebaa"}),e.merge=new e("merge",{fontCharacter:"\\ebab"}),e.exportIcon=new e("export",{fontCharacter:"\\ebac"}),e.graphLeft=new e("graph-left",{fontCharacter:"\\ebad"}),e.magnet=new e("magnet",{fontCharacter:"\\ebae"}),e.notebook=new e("notebook",{fontCharacter:"\\ebaf"}),e.redo=new e("redo",{fontCharacter:"\\ebb0"}),e.checkAll=new e("check-all",{fontCharacter:"\\ebb1"}),e.pinnedDirty=new e("pinned-dirty",{fontCharacter:"\\ebb2"}),e.passFilled=new e("pass-filled",{fontCharacter:"\\ebb3"}),e.circleLargeFilled=new e("circle-large-filled",{fontCharacter:"\\ebb4"}),e.circleLargeOutline=new e("circle-large-outline",{fontCharacter:"\\ebb5"}),e.combine=new e("combine",{fontCharacter:"\\ebb6"}),e.gather=new e("gather",{fontCharacter:"\\ebb6"}),e.table=new e("table",{fontCharacter:"\\ebb7"}),e.variableGroup=new e("variable-group",{fontCharacter:"\\ebb8"}),e.typeHierarchy=new e("type-hierarchy",{fontCharacter:"\\ebb9"}),e.typeHierarchySub=new e("type-hierarchy-sub",{fontCharacter:"\\ebba"}),e.typeHierarchySuper=new e("type-hierarchy-super",{fontCharacter:"\\ebbb"}),e.gitPullRequestCreate=new e("git-pull-request-create",{fontCharacter:"\\ebbc"}),e.runAbove=new e("run-above",{fontCharacter:"\\ebbd"}),e.runBelow=new e("run-below",{fontCharacter:"\\ebbe"}),e.notebookTemplate=new e("notebook-template",{fontCharacter:"\\ebbf"}),e.debugRerun=new e("debug-rerun",{fontCharacter:"\\ebc0"}),e.workspaceTrusted=new e("workspace-trusted",{fontCharacter:"\\ebc1"}),e.workspaceUntrusted=new e("workspace-untrusted",{fontCharacter:"\\ebc2"}),e.workspaceUnspecified=new e("workspace-unspecified",{fontCharacter:"\\ebc3"}),e.terminalCmd=new e("terminal-cmd",{fontCharacter:"\\ebc4"}),e.terminalDebian=new e("terminal-debian",{fontCharacter:"\\ebc5"}),e.terminalLinux=new e("terminal-linux",{fontCharacter:"\\ebc6"}),e.terminalPowershell=new e("terminal-powershell",{fontCharacter:"\\ebc7"}),e.terminalTmux=new e("terminal-tmux",{fontCharacter:"\\ebc8"}),e.terminalUbuntu=new e("terminal-ubuntu",{fontCharacter:"\\ebc9"}),e.terminalBash=new e("terminal-bash",{fontCharacter:"\\ebca"}),e.arrowSwap=new e("arrow-swap",{fontCharacter:"\\ebcb"}),e.copy=new e("copy",{fontCharacter:"\\ebcc"}),e.personAdd=new e("person-add",{fontCharacter:"\\ebcd"}),e.filterFilled=new e("filter-filled",{fontCharacter:"\\ebce"}),e.wand=new e("wand",{fontCharacter:"\\ebcf"}),e.debugLineByLine=new e("debug-line-by-line",{fontCharacter:"\\ebd0"}),e.dropDownButton=new e("drop-down-button",e.chevronDown.definition)}(h||(h={}))},15723:function(e,t,n){"use strict";n.d(t,{E:function(){return a},r:function(){return s}});var i=n(15671),r=n(43144),o=Object.prototype.hasOwnProperty;function a(e,t){var n=function(n){if(o.call(e,n)&&!1===t({key:n,value:e[n]},(function(){delete e[n]})))return{v:void 0}};for(var i in e){var r=n(i);if("object"===typeof r)return r.v}}var s=function(){function e(){(0,i.Z)(this,e),this.map=new Map}return(0,r.Z)(e,[{key:"add",value:function(e,t){var n=this.map.get(e);n||(n=new Set,this.map.set(e,n)),n.add(t)}},{key:"delete",value:function(e,t){var n=this.map.get(e);n&&(n.delete(t),0===n.size&&this.map.delete(e))}},{key:"forEach",value:function(e,t){var n=this.map.get(e);n&&n.forEach(t)}}]),e}()},89938:function(e,t,n){"use strict";n.d(t,{Il:function(){return l},VS:function(){return a},tx:function(){return u}});var i=n(15671),r=n(43144);function o(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}var a=function(){function e(t,n,r){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;(0,i.Z)(this,e),this.r=0|Math.min(255,Math.max(0,t)),this.g=0|Math.min(255,Math.max(0,n)),this.b=0|Math.min(255,Math.max(0,r)),this.a=o(Math.max(Math.min(1,a),0),3)}return(0,r.Z)(e,null,[{key:"equals",value:function(e,t){return e.r===t.r&&e.g===t.g&&e.b===t.b&&e.a===t.a}}]),e}(),s=function(){function e(t,n,r,a){(0,i.Z)(this,e),this.h=0|Math.max(Math.min(360,t),0),this.s=o(Math.max(Math.min(1,n),0),3),this.l=o(Math.max(Math.min(1,r),0),3),this.a=o(Math.max(Math.min(1,a),0),3)}return(0,r.Z)(e,null,[{key:"equals",value:function(e,t){return e.h===t.h&&e.s===t.s&&e.l===t.l&&e.a===t.a}},{key:"fromRGBA",value:function(t){var n=t.r/255,i=t.g/255,r=t.b/255,o=t.a,a=Math.max(n,i,r),s=Math.min(n,i,r),u=0,l=0,c=(s+a)/2,d=a-s;if(d>0){switch(l=Math.min(c<=.5?d/(2*c):d/(2-2*c),1),a){case n:u=(i-r)/d+(i<r?6:0);break;case i:u=(r-n)/d+2;break;case r:u=(n-i)/d+4}u*=60,u=Math.round(u)}return new e(u,l,c,o)}},{key:"_hue2rgb",value:function(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}},{key:"toRGBA",value:function(t){var n,i,r,o=t.h/360,s=t.s,u=t.l,l=t.a;if(0===s)n=i=r=u;else{var c=u<.5?u*(1+s):u+s-u*s,d=2*u-c;n=e._hue2rgb(d,c,o+1/3),i=e._hue2rgb(d,c,o),r=e._hue2rgb(d,c,o-1/3)}return new a(Math.round(255*n),Math.round(255*i),Math.round(255*r),l)}}]),e}(),u=function(){function e(t,n,r,a){(0,i.Z)(this,e),this.h=0|Math.max(Math.min(360,t),0),this.s=o(Math.max(Math.min(1,n),0),3),this.v=o(Math.max(Math.min(1,r),0),3),this.a=o(Math.max(Math.min(1,a),0),3)}return(0,r.Z)(e,null,[{key:"equals",value:function(e,t){return e.h===t.h&&e.s===t.s&&e.v===t.v&&e.a===t.a}},{key:"fromRGBA",value:function(t){var n,i=t.r/255,r=t.g/255,o=t.b/255,a=Math.max(i,r,o),s=a-Math.min(i,r,o),u=0===a?0:s/a;return n=0===s?0:a===i?((r-o)/s%6+6)%6:a===r?(o-i)/s+2:(i-r)/s+4,new e(Math.round(60*n),u,a,t.a)}},{key:"toRGBA",value:function(e){var t=e.h,n=e.s,i=e.v,r=e.a,o=i*n,s=o*(1-Math.abs(t/60%2-1)),u=i-o,l=0,c=0,d=0;return t<60?(l=o,c=s):t<120?(l=s,c=o):t<180?(c=o,d=s):t<240?(c=s,d=o):t<300?(l=s,d=o):t<=360&&(l=o,d=s),l=Math.round(255*(l+u)),c=Math.round(255*(c+u)),d=Math.round(255*(d+u)),new a(l,c,d,r)}}]),e}(),l=function(){function e(t){if((0,i.Z)(this,e),!t)throw new Error("Color needs a value");if(t instanceof a)this.rgba=t;else if(t instanceof s)this._hsla=t,this.rgba=s.toRGBA(t);else{if(!(t instanceof u))throw new Error("Invalid color ctor argument");this._hsva=t,this.rgba=u.toRGBA(t)}}return(0,r.Z)(e,[{key:"hsla",get:function(){return this._hsla?this._hsla:s.fromRGBA(this.rgba)}},{key:"hsva",get:function(){return this._hsva?this._hsva:u.fromRGBA(this.rgba)}},{key:"equals",value:function(e){return!!e&&a.equals(this.rgba,e.rgba)&&s.equals(this.hsla,e.hsla)&&u.equals(this.hsva,e.hsva)}},{key:"getRelativeLuminance",value:function(){return o(.2126*e._relativeLuminanceForComponent(this.rgba.r)+.7152*e._relativeLuminanceForComponent(this.rgba.g)+.0722*e._relativeLuminanceForComponent(this.rgba.b),4)}},{key:"isLighter",value:function(){return(299*this.rgba.r+587*this.rgba.g+114*this.rgba.b)/1e3>=128}},{key:"isLighterThan",value:function(e){return this.getRelativeLuminance()>e.getRelativeLuminance()}},{key:"isDarkerThan",value:function(e){return this.getRelativeLuminance()<e.getRelativeLuminance()}},{key:"lighten",value:function(t){return new e(new s(this.hsla.h,this.hsla.s,this.hsla.l+this.hsla.l*t,this.hsla.a))}},{key:"darken",value:function(t){return new e(new s(this.hsla.h,this.hsla.s,this.hsla.l-this.hsla.l*t,this.hsla.a))}},{key:"transparent",value:function(t){var n=this.rgba,i=n.r,r=n.g,o=n.b,s=n.a;return new e(new a(i,r,o,s*t))}},{key:"isTransparent",value:function(){return 0===this.rgba.a}},{key:"isOpaque",value:function(){return 1===this.rgba.a}},{key:"opposite",value:function(){return new e(new a(255-this.rgba.r,255-this.rgba.g,255-this.rgba.b,this.rgba.a))}},{key:"toString",value:function(){return""+e.Format.CSS.format(this)}}],[{key:"fromHex",value:function(t){return e.Format.CSS.parseHex(t)||e.red}},{key:"_relativeLuminanceForComponent",value:function(e){var t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}},{key:"getLighterColor",value:function(e,t,n){if(e.isLighterThan(t))return e;n=n||.5;var i=e.getRelativeLuminance(),r=t.getRelativeLuminance();return n=n*(r-i)/r,e.lighten(n)}},{key:"getDarkerColor",value:function(e,t,n){if(e.isDarkerThan(t))return e;n=n||.5;var i=e.getRelativeLuminance();return n=n*(i-t.getRelativeLuminance())/i,e.darken(n)}}]),e}();l.white=new l(new a(255,255,255,1)),l.black=new l(new a(0,0,0,1)),l.red=new l(new a(255,0,0,1)),l.blue=new l(new a(0,0,255,1)),l.cyan=new l(new a(0,255,255,1)),l.lightgrey=new l(new a(211,211,211,1)),l.transparent=new l(new a(0,0,0,0)),function(e){!function(t){!function(t){function n(e){var t=e.toString(16);return 2!==t.length?"0"+t:t}function i(e){switch(e){case 48:return 0;case 49:return 1;case 50:return 2;case 51:return 3;case 52:return 4;case 53:return 5;case 54:return 6;case 55:return 7;case 56:return 8;case 57:return 9;case 97:case 65:return 10;case 98:case 66:return 11;case 99:case 67:return 12;case 100:case 68:return 13;case 101:case 69:return 14;case 102:case 70:return 15}return 0}t.formatRGB=function(t){return 1===t.rgba.a?"rgb(".concat(t.rgba.r,", ").concat(t.rgba.g,", ").concat(t.rgba.b,")"):e.Format.CSS.formatRGBA(t)},t.formatRGBA=function(e){return"rgba(".concat(e.rgba.r,", ").concat(e.rgba.g,", ").concat(e.rgba.b,", ").concat(+e.rgba.a.toFixed(2),")")},t.formatHSL=function(t){return 1===t.hsla.a?"hsl(".concat(t.hsla.h,", ").concat((100*t.hsla.s).toFixed(2),"%, ").concat((100*t.hsla.l).toFixed(2),"%)"):e.Format.CSS.formatHSLA(t)},t.formatHSLA=function(e){return"hsla(".concat(e.hsla.h,", ").concat((100*e.hsla.s).toFixed(2),"%, ").concat((100*e.hsla.l).toFixed(2),"%, ").concat(e.hsla.a.toFixed(2),")")},t.formatHex=function(e){return"#".concat(n(e.rgba.r)).concat(n(e.rgba.g)).concat(n(e.rgba.b))},t.formatHexA=function(t){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&1===t.rgba.a?e.Format.CSS.formatHex(t):"#".concat(n(t.rgba.r)).concat(n(t.rgba.g)).concat(n(t.rgba.b)).concat(n(Math.round(255*t.rgba.a)))},t.format=function(t){return t.isOpaque()?e.Format.CSS.formatHex(t):e.Format.CSS.formatRGBA(t)},t.parseHex=function(t){var n=t.length;if(0===n)return null;if(35!==t.charCodeAt(0))return null;if(7===n){var r=16*i(t.charCodeAt(1))+i(t.charCodeAt(2)),o=16*i(t.charCodeAt(3))+i(t.charCodeAt(4)),s=16*i(t.charCodeAt(5))+i(t.charCodeAt(6));return new e(new a(r,o,s,1))}if(9===n){var u=16*i(t.charCodeAt(1))+i(t.charCodeAt(2)),l=16*i(t.charCodeAt(3))+i(t.charCodeAt(4)),c=16*i(t.charCodeAt(5))+i(t.charCodeAt(6)),d=16*i(t.charCodeAt(7))+i(t.charCodeAt(8));return new e(new a(u,l,c,d/255))}if(4===n){var h=i(t.charCodeAt(1)),f=i(t.charCodeAt(2)),p=i(t.charCodeAt(3));return new e(new a(16*h+h,16*f+f,16*p+p))}if(5===n){var g=i(t.charCodeAt(1)),v=i(t.charCodeAt(2)),m=i(t.charCodeAt(3)),_=i(t.charCodeAt(4));return new e(new a(16*g+g,16*v+v,16*m+m,(16*_+_)/255))}return null}}(t.CSS||(t.CSS={}))}(e.Format||(e.Format={}))}(l||(l={}))},94995:function(e,t,n){"use strict";n.d(t,{H:function(){return r}});var i=0;function r(e,t,n){return function(){var e="$memoize".concat(i++),t=void 0,n=function(n,i,r){var o=null,a=null;if("function"===typeof r.value?(o="value",0!==(a=r.value).length&&console.warn("Memoize should only be used in functions with zero parameters")):"function"===typeof r.get&&(o="get",a=r.get),!a)throw new Error("not supported");var s="".concat(e,":").concat(i);r[o]=function(){if(t=this,!this.hasOwnProperty(s)){for(var e=arguments.length,n=new Array(e),i=0;i<e;i++)n[i]=arguments[i];Object.defineProperty(this,s,{configurable:!0,enumerable:!1,writable:!0,value:a.apply(this,n)})}return this[s]}};return n.clear=function(){"undefined"!==typeof t&&Object.getOwnPropertyNames(t).forEach((function(n){0===n.indexOf(e)&&delete t[n]}))},n}()(e,t,n)}},95676:function(e,t,n){"use strict";n.d(t,{Hs:function(){return f},a$:function(){return l}});var i=n(29439),r=n(15671),o=n(43144),a=function(){function e(t,n,i,o){(0,r.Z)(this,e),this.originalStart=t,this.originalLength=n,this.modifiedStart=i,this.modifiedLength=o}return(0,o.Z)(e,[{key:"getOriginalEnd",value:function(){return this.originalStart+this.originalLength}},{key:"getModifiedEnd",value:function(){return this.modifiedStart+this.modifiedLength}}]),e}(),s=n(25567),u=function(){function e(t){(0,r.Z)(this,e),this.source=t}return(0,o.Z)(e,[{key:"getElements",value:function(){for(var e=this.source,t=new Int32Array(e.length),n=0,i=e.length;n<i;n++)t[n]=e.charCodeAt(n);return t}}]),e}();function l(e,t,n){return new f(new u(e),new u(t)).ComputeDiff(n).changes}var c=function(){function e(){(0,r.Z)(this,e)}return(0,o.Z)(e,null,[{key:"Assert",value:function(e,t){if(!e)throw new Error(t)}}]),e}(),d=function(){function e(){(0,r.Z)(this,e)}return(0,o.Z)(e,null,[{key:"Copy",value:function(e,t,n,i,r){for(var o=0;o<r;o++)n[i+o]=e[t+o]}},{key:"Copy2",value:function(e,t,n,i,r){for(var o=0;o<r;o++)n[i+o]=e[t+o]}}]),e}(),h=function(){function e(){(0,r.Z)(this,e),this.m_changes=[],this.m_originalStart=1073741824,this.m_modifiedStart=1073741824,this.m_originalCount=0,this.m_modifiedCount=0}return(0,o.Z)(e,[{key:"MarkNextChange",value:function(){(this.m_originalCount>0||this.m_modifiedCount>0)&&this.m_changes.push(new a(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}},{key:"AddOriginalElement",value:function(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++}},{key:"AddModifiedElement",value:function(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++}},{key:"getChanges",value:function(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}},{key:"getReverseChanges",value:function(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}]),e}(),f=function(){function e(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;(0,r.Z)(this,e),this.ContinueProcessingPredicate=o;var a=e._getElements(t),s=(0,i.Z)(a,3),u=s[0],l=s[1],c=s[2],d=e._getElements(n),h=(0,i.Z)(d,3),f=h[0],p=h[1],g=h[2];this._hasStrings=c&&g,this._originalStringElements=u,this._originalElementsOrHash=l,this._modifiedStringElements=f,this._modifiedElementsOrHash=p,this.m_forwardHistory=[],this.m_reverseHistory=[]}return(0,o.Z)(e,[{key:"ElementsAreEqual",value:function(e,t){return this._originalElementsOrHash[e]===this._modifiedElementsOrHash[t]&&(!this._hasStrings||this._originalStringElements[e]===this._modifiedStringElements[t])}},{key:"OriginalElementsAreEqual",value:function(e,t){return this._originalElementsOrHash[e]===this._originalElementsOrHash[t]&&(!this._hasStrings||this._originalStringElements[e]===this._originalStringElements[t])}},{key:"ModifiedElementsAreEqual",value:function(e,t){return this._modifiedElementsOrHash[e]===this._modifiedElementsOrHash[t]&&(!this._hasStrings||this._modifiedStringElements[e]===this._modifiedStringElements[t])}},{key:"ComputeDiff",value:function(e){return this._ComputeDiff(0,this._originalElementsOrHash.length-1,0,this._modifiedElementsOrHash.length-1,e)}},{key:"_ComputeDiff",value:function(e,t,n,i,r){var o=[!1],a=this.ComputeDiffRecursive(e,t,n,i,o);return r&&(a=this.PrettifyChanges(a)),{quitEarly:o[0],changes:a}}},{key:"ComputeDiffRecursive",value:function(e,t,n,i,r){for(r[0]=!1;e<=t&&n<=i&&this.ElementsAreEqual(e,n);)e++,n++;for(;t>=e&&i>=n&&this.ElementsAreEqual(t,i);)t--,i--;var o;if(e>t||n>i)return n<=i?(c.Assert(e===t+1,"originalStart should only be one more than originalEnd"),o=[new a(e,0,n,i-n+1)]):e<=t?(c.Assert(n===i+1,"modifiedStart should only be one more than modifiedEnd"),o=[new a(e,t-e+1,n,0)]):(c.Assert(e===t+1,"originalStart should only be one more than originalEnd"),c.Assert(n===i+1,"modifiedStart should only be one more than modifiedEnd"),o=[]),o;var s=[0],u=[0],l=this.ComputeRecursionPoint(e,t,n,i,s,u,r),d=s[0],h=u[0];if(null!==l)return l;if(!r[0]){var f=this.ComputeDiffRecursive(e,d,n,h,r),p=[];return p=r[0]?[new a(d+1,t-(d+1)+1,h+1,i-(h+1)+1)]:this.ComputeDiffRecursive(d+1,t,h+1,i,r),this.ConcatenateChanges(f,p)}return[new a(e,t-e+1,n,i-n+1)]}},{key:"WALKTRACE",value:function(e,t,n,i,r,o,s,u,l,c,d,f,p,g,v,m,_,y){var b,w=null,C=new h,k=t,S=n,x=p[0]-m[0]-i,L=-1073741824,E=this.m_forwardHistory.length-1;do{var D=x+e;D===k||D<S&&l[D-1]<l[D+1]?(g=(d=l[D+1])-x-i,d<L&&C.MarkNextChange(),L=d,C.AddModifiedElement(d+1,g),x=D+1-e):(g=(d=l[D-1]+1)-x-i,d<L&&C.MarkNextChange(),L=d-1,C.AddOriginalElement(d,g+1),x=D-1-e),E>=0&&(e=(l=this.m_forwardHistory[E])[0],k=1,S=l.length-1)}while(--E>=-1);if(b=C.getReverseChanges(),y[0]){var N=p[0]+1,M=m[0]+1;if(null!==b&&b.length>0){var T=b[b.length-1];N=Math.max(N,T.getOriginalEnd()),M=Math.max(M,T.getModifiedEnd())}w=[new a(N,f-N+1,M,v-M+1)]}else{C=new h,k=o,S=s,x=p[0]-m[0]-u,L=1073741824,E=_?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{var I=x+r;I===k||I<S&&c[I-1]>=c[I+1]?(g=(d=c[I+1]-1)-x-u,d>L&&C.MarkNextChange(),L=d+1,C.AddOriginalElement(d+1,g+1),x=I+1-r):(g=(d=c[I-1])-x-u,d>L&&C.MarkNextChange(),L=d,C.AddModifiedElement(d+1,g+1),x=I-1-r),E>=0&&(r=(c=this.m_reverseHistory[E])[0],k=1,S=c.length-1)}while(--E>=-1);w=C.getChanges()}return this.ConcatenateChanges(b,w)}},{key:"ComputeRecursionPoint",value:function(e,t,n,i,r,o,s){var u=0,l=0,c=0,h=0,f=0,p=0;e--,n--,r[0]=0,o[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];var g=t-e+(i-n),v=g+1,m=new Int32Array(v),_=new Int32Array(v),y=i-n,b=t-e,w=e-n,C=t-i,k=(b-y)%2===0;m[y]=e,_[b]=t,s[0]=!1;for(var S=1;S<=g/2+1;S++){var x=0,L=0;c=this.ClipDiagonalBound(y-S,S,y,v),h=this.ClipDiagonalBound(y+S,S,y,v);for(var E=c;E<=h;E+=2){l=(u=E===c||E<h&&m[E-1]<m[E+1]?m[E+1]:m[E-1]+1)-(E-y)-w;for(var D=u;u<t&&l<i&&this.ElementsAreEqual(u+1,l+1);)u++,l++;if(m[E]=u,u+l>x+L&&(x=u,L=l),!k&&Math.abs(E-b)<=S-1&&u>=_[E])return r[0]=u,o[0]=l,D<=_[E]&&S<=1448?this.WALKTRACE(y,c,h,w,b,f,p,C,m,_,u,t,r,l,i,o,k,s):null}var N=(x-e+(L-n)-S)/2;if(null!==this.ContinueProcessingPredicate&&!this.ContinueProcessingPredicate(x,N))return s[0]=!0,r[0]=x,o[0]=L,N>0&&S<=1448?this.WALKTRACE(y,c,h,w,b,f,p,C,m,_,u,t,r,l,i,o,k,s):(e++,n++,[new a(e,t-e+1,n,i-n+1)]);f=this.ClipDiagonalBound(b-S,S,b,v),p=this.ClipDiagonalBound(b+S,S,b,v);for(var M=f;M<=p;M+=2){l=(u=M===f||M<p&&_[M-1]>=_[M+1]?_[M+1]-1:_[M-1])-(M-b)-C;for(var T=u;u>e&&l>n&&this.ElementsAreEqual(u,l);)u--,l--;if(_[M]=u,k&&Math.abs(M-y)<=S&&u<=m[M])return r[0]=u,o[0]=l,T>=m[M]&&S<=1448?this.WALKTRACE(y,c,h,w,b,f,p,C,m,_,u,t,r,l,i,o,k,s):null}if(S<=1447){var I=new Int32Array(h-c+2);I[0]=y-c+1,d.Copy2(m,c,I,1,h-c+1),this.m_forwardHistory.push(I),(I=new Int32Array(p-f+2))[0]=b-f+1,d.Copy2(_,f,I,1,p-f+1),this.m_reverseHistory.push(I)}}return this.WALKTRACE(y,c,h,w,b,f,p,C,m,_,u,t,r,l,i,o,k,s)}},{key:"PrettifyChanges",value:function(e){for(var t=0;t<e.length;t++){for(var n=e[t],r=t<e.length-1?e[t+1].originalStart:this._originalElementsOrHash.length,o=t<e.length-1?e[t+1].modifiedStart:this._modifiedElementsOrHash.length,a=n.originalLength>0,s=n.modifiedLength>0;n.originalStart+n.originalLength<r&&n.modifiedStart+n.modifiedLength<o&&(!a||this.OriginalElementsAreEqual(n.originalStart,n.originalStart+n.originalLength))&&(!s||this.ModifiedElementsAreEqual(n.modifiedStart,n.modifiedStart+n.modifiedLength));)n.originalStart++,n.modifiedStart++;var u=[null];t<e.length-1&&this.ChangesOverlap(e[t],e[t+1],u)&&(e[t]=u[0],e.splice(t+1,1),t--)}for(var l=e.length-1;l>=0;l--){var c=e[l],d=0,h=0;if(l>0){var f=e[l-1];d=f.originalStart+f.originalLength,h=f.modifiedStart+f.modifiedLength}for(var p=c.originalLength>0,g=c.modifiedLength>0,v=0,m=this._boundaryScore(c.originalStart,c.originalLength,c.modifiedStart,c.modifiedLength),_=1;;_++){var y=c.originalStart-_,b=c.modifiedStart-_;if(y<d||b<h)break;if(p&&!this.OriginalElementsAreEqual(y,y+c.originalLength))break;if(g&&!this.ModifiedElementsAreEqual(b,b+c.modifiedLength))break;var w=(y===d&&b===h?5:0)+this._boundaryScore(y,c.originalLength,b,c.modifiedLength);w>m&&(m=w,v=_)}c.originalStart-=v,c.modifiedStart-=v;var C=[null];l>0&&this.ChangesOverlap(e[l-1],e[l],C)&&(e[l-1]=C[0],e.splice(l,1),l++)}if(this._hasStrings)for(var k=1,S=e.length;k<S;k++){var x=e[k-1],L=e[k],E=L.originalStart-x.originalStart-x.originalLength,D=x.originalStart,N=L.originalStart+L.originalLength,M=N-D,T=x.modifiedStart,I=L.modifiedStart+L.modifiedLength,O=I-T;if(E<5&&M<20&&O<20){var A=this._findBetterContiguousSequence(D,M,T,O,E);if(A){var R=(0,i.Z)(A,2),P=R[0],Z=R[1];P===x.originalStart+x.originalLength&&Z===x.modifiedStart+x.modifiedLength||(x.originalLength=P-x.originalStart,x.modifiedLength=Z-x.modifiedStart,L.originalStart=P+E,L.modifiedStart=Z+E,L.originalLength=N-L.originalStart,L.modifiedLength=I-L.modifiedStart)}}}return e}},{key:"_findBetterContiguousSequence",value:function(e,t,n,i,r){if(t<r||i<r)return null;for(var o=e+t-r+1,a=n+i-r+1,s=0,u=0,l=0,c=e;c<o;c++)for(var d=n;d<a;d++){var h=this._contiguousSequenceScore(c,d,r);h>0&&h>s&&(s=h,u=c,l=d)}return s>0?[u,l]:null}},{key:"_contiguousSequenceScore",value:function(e,t,n){for(var i=0,r=0;r<n;r++){if(!this.ElementsAreEqual(e+r,t+r))return 0;i+=this._originalStringElements[e+r].length}return i}},{key:"_OriginalIsBoundary",value:function(e){return e<=0||e>=this._originalElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}},{key:"_OriginalRegionIsBoundary",value:function(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){var n=e+t;if(this._OriginalIsBoundary(n-1)||this._OriginalIsBoundary(n))return!0}return!1}},{key:"_ModifiedIsBoundary",value:function(e){return e<=0||e>=this._modifiedElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}},{key:"_ModifiedRegionIsBoundary",value:function(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){var n=e+t;if(this._ModifiedIsBoundary(n-1)||this._ModifiedIsBoundary(n))return!0}return!1}},{key:"_boundaryScore",value:function(e,t,n,i){return(this._OriginalRegionIsBoundary(e,t)?1:0)+(this._ModifiedRegionIsBoundary(n,i)?1:0)}},{key:"ConcatenateChanges",value:function(e,t){var n=[];if(0===e.length||0===t.length)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],n)){var i=new Array(e.length+t.length-1);return d.Copy(e,0,i,0,e.length-1),i[e.length-1]=n[0],d.Copy(t,1,i,e.length,t.length-1),i}var r=new Array(e.length+t.length);return d.Copy(e,0,r,0,e.length),d.Copy(t,0,r,e.length,t.length),r}},{key:"ChangesOverlap",value:function(e,t,n){if(c.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),c.Assert(e.modifiedStart<=t.modifiedStart,"Left change is not less than or equal to right change"),e.originalStart+e.originalLength>=t.originalStart||e.modifiedStart+e.modifiedLength>=t.modifiedStart){var i=e.originalStart,r=e.originalLength,o=e.modifiedStart,s=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(r=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(s=t.modifiedStart+t.modifiedLength-e.modifiedStart),n[0]=new a(i,r,o,s),!0}return n[0]=null,!1}},{key:"ClipDiagonalBound",value:function(e,t,n,i){if(e>=0&&e<i)return e;var r=t%2===0;return e<0?r===(n%2===0)?0:1:r===((i-n-1)%2===0)?i-1:i-2}}],[{key:"_isStringArray",value:function(e){return e.length>0&&"string"===typeof e[0]}},{key:"_getElements",value:function(t){var n=t.getElements();if(e._isStringArray(n)){for(var i=new Int32Array(n.length),r=0,o=n.length;r<o;r++)i[r]=(0,s.Cv)(n[r],0);return[n,i,!0]}return n instanceof Int32Array?[[],n,!1]:[[],new Int32Array(n),!1]}}]),e}()},8729:function(e,t,n){"use strict";n.d(t,{Cp:function(){return s},F0:function(){return d},L6:function(){return f},VV:function(){return c},b1:function(){return h},dL:function(){return a},ri:function(){return u}});var i=n(15671),r=n(43144),o=new(function(){function e(){(0,i.Z)(this,e),this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout((function(){if(e.stack)throw new Error(e.message+"\n\n"+e.stack);throw e}),0)}}return(0,r.Z)(e,[{key:"emit",value:function(e){this.listeners.forEach((function(t){t(e)}))}},{key:"onUnexpectedError",value:function(e){this.unexpectedErrorHandler(e),this.emit(e)}},{key:"onUnexpectedExternalError",value:function(e){this.unexpectedErrorHandler(e)}}]),e}());function a(e){c(e)||o.onUnexpectedError(e)}function s(e){c(e)||o.onUnexpectedExternalError(e)}function u(e){return e instanceof Error?{$isError:!0,name:e.name,message:e.message,stack:e.stacktrace||e.stack}:e}var l="Canceled";function c(e){return e instanceof Error&&e.name===l&&e.message===l}function d(){var e=new Error(l);return e.name=e.message,e}function h(e){return e?new Error("Illegal argument: ".concat(e)):new Error("Illegal argument")}function f(e){return e?new Error("Illegal state: ".concat(e)):new Error("Illegal state")}},11732:function(e,t,n){"use strict";n.d(t,{E7:function(){return C},K3:function(){return w},Q5:function(){return b},ZD:function(){return k},ju:function(){return i}});var i,r=n(11752),o=n(61120),a=n(60136),s=n(43668),u=n(29439),l=n(37762),c=n(15671),d=n(43144),h=n(93433),f=n(8729),p=n(81626),g=n(28214),v=n(96257);!function(e){function t(e){return function(t){var n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=!1;return n=e((function(e){if(!r)return n?n.dispose():r=!0,t.call(i,e)}),null,arguments.length>2?arguments[2]:void 0),r&&n.dispose(),n}}function n(e,t){return a((function(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e((function(e){return n.call(i,t(e))}),null,arguments.length>2?arguments[2]:void 0)}))}function i(e,t){return a((function(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e((function(e){t(e),n.call(i,e)}),null,arguments.length>2?arguments[2]:void 0)}))}function r(e,t){return a((function(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e((function(e){return t(e)&&n.call(i,e)}),null,arguments.length>2?arguments[2]:void 0)}))}function o(e,t,i){var r=i;return n(e,(function(e){return r=t(r,e)}))}function a(e){var t,n=new b({onFirstListenerAdd:function(){t=e(n.fire,n)},onLastListenerRemove:function(){t.dispose()}});return n.event}function s(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=void 0,a=void 0,s=0,u=new b({leakWarningThreshold:arguments.length>4?arguments[4]:void 0,onFirstListenerAdd:function(){n=e((function(e){s++,o=t(o,e),r&&!a&&(u.fire(o),o=void 0),clearTimeout(a),a=setTimeout((function(){var e=o;o=void 0,a=void 0,(!r||s>1)&&u.fire(e),s=0}),i)}))},onLastListenerRemove:function(){n.dispose()}});return u.event}function u(e){var t,n=!0;return r(e,(function(e){var i=n||e!==t;return n=!1,t=e,i}))}e.None=function(){return p.JT.None},e.once=t,e.map=n,e.forEach=i,e.filter=r,e.signal=function(e){return e},e.any=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2?arguments[2]:void 0;return p.F8.apply(void 0,(0,h.Z)(t.map((function(t){return t((function(t){return e.call(n,t)}),null,i)}))))}},e.reduce=o,e.snapshot=a,e.debounce=s,e.stopwatch=function(e){var i=(new Date).getTime();return n(t(e),(function(e){return(new Date).getTime()-i}))},e.latch=u,e.buffer=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:[]).slice(),i=e((function(e){n?n.push(e):o.fire(e)})),r=function(){n&&n.forEach((function(e){return o.fire(e)})),n=null},o=new b({onFirstListenerAdd:function(){i||(i=e((function(e){return o.fire(e)})))},onFirstListenerDidAdd:function(){n&&(t?setTimeout(r):r())},onLastListenerRemove:function(){i&&i.dispose(),i=null}});return o.event};var l=function(){function e(t){(0,c.Z)(this,e),this.event=t}return(0,d.Z)(e,[{key:"map",value:function(t){return new e(n(this.event,t))}},{key:"forEach",value:function(t){return new e(i(this.event,t))}},{key:"filter",value:function(t){return new e(r(this.event,t))}},{key:"reduce",value:function(t,n){return new e(o(this.event,t,n))}},{key:"latch",value:function(){return new e(u(this.event))}},{key:"debounce",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3?arguments[3]:void 0;return new e(s(this.event,t,n,i,r))}},{key:"on",value:function(e,t,n){return this.event(e,t,n)}},{key:"once",value:function(e,n,i){return t(this.event)(e,n,i)}}]),e}();e.chain=function(e){return new l(e)},e.fromNodeEventEmitter=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e){return e},i=function(){return r.fire(n.apply(void 0,arguments))},r=new b({onFirstListenerAdd:function(){return e.on(t,i)},onLastListenerRemove:function(){return e.removeListener(t,i)}});return r.event},e.fromDOMEventEmitter=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e){return e},i=function(){return r.fire(n.apply(void 0,arguments))},r=new b({onFirstListenerAdd:function(){return e.addEventListener(t,i)},onLastListenerRemove:function(){return e.removeEventListener(t,i)}});return r.event},e.fromPromise=function(e){var t=new b,n=!1;return e.then(void 0,(function(){return null})).then((function(){n?t.fire(void 0):setTimeout((function(){return t.fire(void 0)}),0)})),n=!0,t.event},e.toPromise=function(e){return new Promise((function(n){return t(e)(n)}))}}(i||(i={}));var m=function(){function e(t){(0,c.Z)(this,e),this._listenerCount=0,this._invocationCount=0,this._elapsedOverall=0,this._name="".concat(t,"_").concat(e._idPool++)}return(0,d.Z)(e,[{key:"start",value:function(e){this._stopWatch=new v.G(!0),this._listenerCount=e}},{key:"stop",value:function(){if(this._stopWatch){var e=this._stopWatch.elapsed();this._elapsedOverall+=e,this._invocationCount+=1,console.info("did FIRE ".concat(this._name,": elapsed_ms: ").concat(e.toFixed(5),", listener: ").concat(this._listenerCount," (elapsed_overall: ").concat(this._elapsedOverall.toFixed(2),", invocations: ").concat(this._invocationCount,")")),this._stopWatch=void 0}}}]),e}();m._idPool=0;var _=-1,y=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.random().toString(18).slice(2,5);(0,c.Z)(this,e),this.customThreshold=t,this.name=n,this._warnCountdown=0}return(0,d.Z)(e,[{key:"dispose",value:function(){this._stacks&&this._stacks.clear()}},{key:"check",value:function(e){var t=this,n=_;if("number"===typeof this.customThreshold&&(n=this.customThreshold),!(n<=0||e<n)){this._stacks||(this._stacks=new Map);var i=(new Error).stack.split("\n").slice(3).join("\n"),r=this._stacks.get(i)||0;if(this._stacks.set(i,r+1),this._warnCountdown-=1,this._warnCountdown<=0){var o;this._warnCountdown=.5*n;var a,s=0,c=(0,l.Z)(this._stacks);try{for(c.s();!(a=c.n()).done;){var d=(0,u.Z)(a.value,2),h=d[0],f=d[1];(!o||s<f)&&(o=h,s=f)}}catch(p){c.e(p)}finally{c.f()}console.warn("[".concat(this.name,"] potential listener LEAK detected, having ").concat(e," listeners already. MOST frequent listener (").concat(s,"):")),console.warn(o)}return function(){var e=t._stacks.get(i)||0;t._stacks.set(i,e-1)}}}}]),e}(),b=function(){function e(t){var n;(0,c.Z)(this,e),this._disposed=!1,this._options=t,this._leakageMon=_>0?new y(this._options&&this._options.leakWarningThreshold):void 0,this._perfMon=(null===(n=this._options)||void 0===n?void 0:n._profName)?new m(this._options._profName):void 0}return(0,d.Z)(e,[{key:"event",get:function(){var t=this;return this._event||(this._event=function(n,i,r){var o;t._listeners||(t._listeners=new g.S);var a=t._listeners.isEmpty();a&&t._options&&t._options.onFirstListenerAdd&&t._options.onFirstListenerAdd(t);var s=t._listeners.push(i?[n,i]:n);a&&t._options&&t._options.onFirstListenerDidAdd&&t._options.onFirstListenerDidAdd(t),t._options&&t._options.onListenerDidAdd&&t._options.onListenerDidAdd(t,n,i);var u,l=null===(o=t._leakageMon)||void 0===o?void 0:o.check(t._listeners.size);return u={dispose:function(){(l&&l(),u.dispose=e._noop,t._disposed)||(s(),t._options&&t._options.onLastListenerRemove&&(t._listeners&&!t._listeners.isEmpty()||t._options.onLastListenerRemove(t)))}},r instanceof p.SL?r.add(u):Array.isArray(r)&&r.push(u),u}),this._event}},{key:"fire",value:function(e){var t,n;if(this._listeners){this._deliveryQueue||(this._deliveryQueue=new g.S);var i,r=(0,l.Z)(this._listeners);try{for(r.s();!(i=r.n()).done;){var o=i.value;this._deliveryQueue.push([o,e])}}catch(h){r.e(h)}finally{r.f()}for(null===(t=this._perfMon)||void 0===t||t.start(this._deliveryQueue.size);this._deliveryQueue.size>0;){var a=this._deliveryQueue.shift(),s=(0,u.Z)(a,2),c=s[0],d=s[1];try{"function"===typeof c?c.call(void 0,d):c[0].call(c[1],d)}catch(p){(0,f.dL)(p)}}null===(n=this._perfMon)||void 0===n||n.stop()}}},{key:"dispose",value:function(){var e,t,n;null===(e=this._listeners)||void 0===e||e.clear(),null===(t=this._deliveryQueue)||void 0===t||t.clear(),null===(n=this._leakageMon)||void 0===n||n.dispose(),this._disposed=!0}}]),e}();b._noop=function(){};var w=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this,e))._isPaused=0,i._eventQueue=new g.S,i._mergeFn=null===e||void 0===e?void 0:e.merge,i}return(0,d.Z)(n,[{key:"pause",value:function(){this._isPaused++}},{key:"resume",value:function(){if(0!==this._isPaused&&0===--this._isPaused)if(this._mergeFn){var e=Array.from(this._eventQueue);this._eventQueue.clear(),(0,r.Z)((0,o.Z)(n.prototype),"fire",this).call(this,this._mergeFn(e))}else for(;!this._isPaused&&0!==this._eventQueue.size;)(0,r.Z)((0,o.Z)(n.prototype),"fire",this).call(this,this._eventQueue.shift())}},{key:"fire",value:function(e){this._listeners&&(0!==this._isPaused?this._eventQueue.push(e):(0,r.Z)((0,o.Z)(n.prototype),"fire",this).call(this,e))}}]),n}(b),C=function(){function e(){(0,c.Z)(this,e),this.buffers=[]}return(0,d.Z)(e,[{key:"wrapEvent",value:function(e){var t=this;return function(n,i,r){return e((function(e){var r=t.buffers[t.buffers.length-1];r?r.push((function(){return n.call(i,e)})):n.call(i,e)}),void 0,r)}}},{key:"bufferEvents",value:function(e){var t=[];this.buffers.push(t);var n=e();return this.buffers.pop(),t.forEach((function(e){return e()})),n}}]),e}(),k=function(){function e(){var t=this;(0,c.Z)(this,e),this.listening=!1,this.inputEvent=i.None,this.inputEventListener=p.JT.None,this.emitter=new b({onFirstListenerDidAdd:function(){t.listening=!0,t.inputEventListener=t.inputEvent(t.emitter.fire,t.emitter)},onLastListenerRemove:function(){t.listening=!1,t.inputEventListener.dispose()}}),this.event=this.emitter.event}return(0,d.Z)(e,[{key:"input",set:function(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))}},{key:"dispose",value:function(){this.inputEventListener.dispose(),this.emitter.dispose()}}]),e}()},67537:function(e,t,n){"use strict";n.d(t,{KM:function(){return s},ej:function(){return a},oP:function(){return l},vY:function(){return u}});var i=n(30487),r=n(51747),o=n(36912);function a(e){return e.replace(/[\\/]/g,o.KR.sep)}function s(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:o.ir;if(e===t)return!0;if(!e||!t)return!1;if(t.length>e.length)return!1;if(n){if(!(0,r.ok)(e,t))return!1;if(t.length===e.length)return!0;var a=t.length;return t.charAt(t.length-1)===i&&a--,e.charAt(a)===i}return t.charAt(t.length-1)!==i&&(t+=i),0===e.indexOf(t)}function u(e){var t=(0,o.Fv)(e);return i.ED?!(e.length>3)&&(l(t)&&(2===e.length||92===t.charCodeAt(2))):t===o.KR.sep}function l(e){return!!i.ED&&(((t=e.charCodeAt(0))>=65&&t<=90||t>=97&&t<=122)&&58===e.charCodeAt(1));var t}},50482:function(e,t,n){"use strict";n.d(t,{CL:function(){return I},EW:function(){return W},Ji:function(){return a},KZ:function(){return b},Oh:function(){return L},ir:function(){return s},jB:function(){return E},l7:function(){return Y},mB:function(){return D},or:function(){return o}});var i=n(15022),r=n(51747);function o(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e,n){for(var i=0,r=t.length;i<r;i++){var o=t[i](e,n);if(o)return o}return null}}var a=function(e,t,n){if(!n||n.length<t.length)return null;var i;i=e?r.ok(n,t):0===n.indexOf(t);if(!i)return null;return t.length>0?[{start:0,end:t.length}]:[]}.bind(void 0,!0);function s(e,t){var n=t.toLowerCase().indexOf(e.toLowerCase());return-1===n?null:[{start:n,end:n+e.length}]}function u(e,t,n,i){if(n===e.length)return[];if(i===t.length)return null;if(e[n]===t[i]){var r;return(r=u(e,t,n+1,i+1))?v({start:i,end:i+1},r):null}return u(e,t,n,i+1)}function l(e){return 97<=e&&e<=122}function c(e){return 65<=e&&e<=90}function d(e){return 48<=e&&e<=57}function h(e){return 32===e||9===e||10===e||13===e}var f=new Set;function p(e){return h(e)||f.has(e)}function g(e){return l(e)||c(e)||d(e)}function v(e,t){return 0===t.length?t=[e]:e.end===t[0].start?t[0].start=e.start:t.unshift(e),t}function m(e,t){for(var n=t;n<e.length;n++){var i=e.charCodeAt(n);if(c(i)||d(i)||n>0&&!g(e.charCodeAt(n-1)))return n}return e.length}function _(e,t,n,i){if(n===e.length)return[];if(i===t.length)return null;if(e[n]!==t[i].toLowerCase())return null;var r=null,o=i+1;for(r=_(e,t,n+1,i+1);!r&&(o=m(t,o))<t.length;)r=_(e,t,n+1,o),o++;return null===r?null:v({start:i,end:i+1},r)}function y(e,t){if(!t)return null;if(0===(t=t.trim()).length)return null;if(!function(e){for(var t=0,n=0,i=0,r=0,o=0;o<e.length;o++)c(i=e.charCodeAt(o))&&t++,l(i)&&n++,h(i)&&r++;return 0!==t&&0!==n||0!==r?t<=5:e.length<=30}(e))return null;if(t.length>60)return null;var n=function(e){for(var t=0,n=0,i=0,r=0,o=0,a=0;a<e.length;a++)c(o=e.charCodeAt(a))&&t++,l(o)&&n++,g(o)&&i++,d(o)&&r++;return{upperPercent:t/e.length,lowerPercent:n/e.length,alphaPercent:i/e.length,numericPercent:r/e.length}}(t);if(!function(e){var t=e.upperPercent,n=e.lowerPercent,i=e.alphaPercent,r=e.numericPercent;return n>.2&&t<.8&&i>.6&&r<.2}(n)){if(!function(e){var t=e.upperPercent;return 0===e.lowerPercent&&t>.6}(n))return null;t=t.toLowerCase()}var i=null,r=0;for(e=e.toLowerCase();r<t.length&&null===(i=_(e,t,0,r));)r=m(t,r+1);return i}function b(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!t||0===t.length)return null;var i=null,r=0;for(e=e.toLowerCase(),t=t.toLowerCase();r<t.length&&null===(i=w(e,t,0,r,n));)r=C(t,r+1);return i}function w(e,t,n,i,r){if(n===e.length)return[];if(i===t.length)return null;if(s=e.charCodeAt(n),u=t.charCodeAt(i),s===u||p(s)&&p(u)){var o=null,a=i+1;if(o=w(e,t,n+1,i+1,r),!r)for(;!o&&(a=C(t,a))<t.length;)o=w(e,t,n+1,a,r),a++;return null===o?null:v({start:i,end:i+1},o)}return null;var s,u}function C(e,t){for(var n=t;n<e.length;n++)if(p(e.charCodeAt(n))||n>0&&p(e.charCodeAt(n-1)))return n;return e.length}"`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?".split("").forEach((function(e){return f.add(e.charCodeAt(0))}));var k=o(a,y,s),S=o(a,y,(function(e,t){return u(e.toLowerCase(),t.toLowerCase(),0,0)})),x=new i.z6(1e4);function L(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"!==typeof e||"string"!==typeof t)return null;var i=x.get(e);i||(i=new RegExp(r.un(e),"i"),x.set(e,i));var o=i.exec(t);return o?[{start:o.index,end:o.index+o[0].length}]:n?S(e,t):k(e,t)}function E(e,t,n,i,r,o){for(var a=Math.min(13,e.length);n<a;n++){var s=W(e,t,n,i,r,o,!1);if(s)return s}return[0,o]}function D(e){if("undefined"===typeof e)return[];for(var t=[],n=e[1],i=e.length-1;i>1;i--){var r=e[i]+n,o=t[t.length-1];o&&o.end===r?o.end=r+1:t.push({start:r,end:r+1})}return t}var N=128;function M(){for(var e=[],t=[],n=0;n<=N;n++)t[n]=0;for(var i=0;i<=N;i++)e.push(t.slice(0));return e}function T(e){for(var t=[],n=0;n<=e;n++)t[n]=0;return t}var I,O=T(2*N),A=T(2*N),R=M(),P=M(),Z=M(),F=!1;function j(e,t,n,i,r){function o(e,t){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:" ";e.length<t;)e=n+e;return e}for(var a=" | |".concat(i.split("").map((function(e){return o(e,3)})).join("|"),"\n"),s=0;s<=n;s++)a+=0===s?" |":"".concat(t[s-1],"|"),a+=e[s].slice(0,r+1).map((function(e){return o(e.toString(),3)})).join("|")+"\n";return a}function H(e,t){if(t<0||t>=e.length)return!1;var n=e.codePointAt(t);switch(n){case 95:case 45:case 46:case 32:case 47:case 92:case 39:case 34:case 58:case 36:case 60:case 40:case 91:return!0;case void 0:return!1;default:return!!r.C8(n)}}function B(e,t){if(t<0||t>=e.length)return!1;switch(e.charCodeAt(t)){case 32:case 9:return!0;default:return!1}}function z(e,t,n){return t[e]!==n[e]}function W(e,t,n,i,r,o,a){var s=e.length>N?N:e.length,u=i.length>N?N:i.length;if(!(n>=s||o>=u||s-n>u-o)&&function(e,t,n,i,r,o){for(var a=arguments.length>6&&void 0!==arguments[6]&&arguments[6];t<n&&r<o;)e[t]===i[r]&&(a&&(O[t]=r),t+=1),r+=1;return t===n}(t,n,s,r,o,u,!0)){!function(e,t,n,i,r,o){var a=e-1,s=t-1;for(;a>=n&&s>=i;)r[a]===o[s]&&(A[a]=s,a--),s--}(s,u,n,o,t,r);var l=1,c=1,d=n,h=o,f=[!1];for(l=1,d=n;d<s;l++,d++){var p=O[d],g=A[d],v=d+1<s?A[d+1]:u;for(c=p-o+1,h=p;h<v;c++,h++){var m=Number.MIN_SAFE_INTEGER,_=!1;h<=g&&(m=V(e,t,d,n,i,r,h,u,o,0===R[l-1][c-1],f));var y=0;m!==Number.MAX_SAFE_INTEGER&&(_=!0,y=m+P[l-1][c-1]);var b=h>p,w=b?P[l][c-1]+(R[l][c-1]>0?-5:0):0,C=h>p+1&&R[l][c-1]>0,k=C?P[l][c-2]+(R[l][c-2]>0?-5:0):0;if(C&&(!b||k>=w)&&(!_||k>=y))P[l][c]=k,Z[l][c]=3,R[l][c]=0;else if(b&&(!_||w>=y))P[l][c]=w,Z[l][c]=2,R[l][c]=0;else{if(!_)throw new Error("not possible");P[l][c]=y,Z[l][c]=1,R[l][c]=R[l-1][c-1]+1}}}if(F&&function(e,t,n,i){e=e.substr(t),n=n.substr(i),console.log(j(P,e,e.length,n,n.length)),console.log(j(Z,e,e.length,n,n.length)),console.log(j(R,e,e.length,n,n.length))}(e,n,i,o),f[0]||a){l--,c--;for(var S=[P[l][c],o],x=0,L=0;l>=1;){var E=c;do{var D=Z[l][E];if(3===D)E-=2;else{if(2!==D)break;E-=1}}while(E>=1);x>1&&t[n+l-1]===r[o+c-1]&&!z(E+o-1,i,r)&&x+1>R[l][E]&&(E=c),E===c?x++:x=1,L||(L=E),l--,c=E-1,S.push(c)}u===s&&(S[0]+=2);var M=L-s;return S[0]-=M,S}}}function V(e,t,n,i,r,o,a,s,u,l,c){if(t[n]!==o[a])return Number.MIN_SAFE_INTEGER;var d=1,h=!1;return a===n-i?d=e[n]===r[a]?7:5:!z(a,r,o)||0!==a&&z(a-1,r,o)?!H(o,a)||0!==a&&H(o,a-1)?(H(o,a-1)||B(o,a-1))&&(d=5,h=!0):d=5:(d=e[n]===r[a]?7:5,h=!0),d>1&&n===i&&(c[0]=!0),h||(h=z(a,r,o)||H(o,a-1)||B(o,a-1)),n===i?a>u&&(d-=h?3:5):d+=l?h?2:0:h?0:1,a+1===s&&(d-=h?3:5),d}function Y(e,t,n,i,r,o,a){return function(e,t,n,i,r,o,a,s){var u=W(e,t,n,i,r,o,s);if(u&&!a)return u;if(e.length>=3)for(var l=Math.min(7,e.length-1),c=n+1;c<l;c++){var d=U(e,c);if(d){var h=W(d,d.toLowerCase(),n,i,r,o,s);h&&(h[0]-=3,(!u||h[0]>u[0])&&(u=h))}}return u}(e,t,n,i,r,o,!0,a)}function U(e,t){if(!(t+1>=e.length)){var n=e[t],i=e[t+1];if(n!==i)return e.slice(0,t)+i+n+e.slice(t+2)}}!function(e){e.Default=[-100,0],e.isDefault=function(e){return!e||2===e.length&&-100===e[0]&&0===e[1]}}(I||(I={}))},60106:function(e,t,n){"use strict";function i(e){var t,n=this,i=!1;return function(){return i?t:(i=!0,t=e.apply(n,arguments))}}n.d(t,{I:function(){return i}})},79612:function(e,t,n){"use strict";n.d(t,{EQ:function(){return M}});var i=n(37762),r=n(51747),o=n(67537),a=n(36912),s=n(15022),u=n(27997),l="**",c="/",d="[/\\\\]",h="[^/\\\\]",f=/\//g;function p(e){switch(e){case 0:return"";case 1:return"".concat(h,"*?");default:return"(?:".concat(d,"|").concat(h,"+").concat(d,"|").concat(d).concat(h,"+)*?")}}function g(e,t){if(!e)return[];var n,r=[],o=!1,a=!1,s="",u=(0,i.Z)(e);try{for(u.s();!(n=u.n()).done;){var l=n.value;switch(l){case t:if(!o&&!a){r.push(s),s="";continue}break;case"{":o=!0;break;case"}":o=!1;break;case"[":a=!0;break;case"]":a=!1}s+=l}}catch(c){u.e(c)}finally{u.f()}return s&&r.push(s),r}function v(e){if(!e)return"";var t="",n=g(e,c);if(n.every((function(e){return e===l})))t=".*";else{var o=!1;n.forEach((function(e,a){if(e!==l){var s,u=!1,f="",m=!1,_="",y=(0,i.Z)(e);try{for(y.s();!(s=y.n()).done;){var b=s.value;if("}"!==b&&u)f+=b;else if(!m||"]"===b&&_)switch(b){case"{":u=!0;continue;case"[":m=!0;continue;case"}":var w=g(f,","),C="(?:".concat(w.map((function(e){return v(e)})).join("|"),")");t+=C,u=!1,f="";break;case"]":t+="["+_+"]",m=!1,_="";break;case"?":t+=h;continue;case"*":t+=p(1);continue;default:t+=r.ec(b)}else{_+="-"===b?b:"^"!==b&&"!"!==b||_?b===c?"":r.ec(b):"^"}}}catch(k){y.e(k)}finally{y.f()}a<n.length-1&&(n[a+1]!==l||a+2<n.length)&&(t+=d),o=!1}else o||(t+=p(2),o=!0)}))}return t}var m=/^\*\*\/\*\.[\w\.-]+$/,_=/^\*\*\/([\w\.-]+)\/?$/,y=/^{\*\*\/[\*\.]?[\w\.-]+\/?(,\*\*\/[\*\.]?[\w\.-]+\/?)*}$/,b=/^{\*\*\/[\*\.]?[\w\.-]+(\/(\*\*)?)?(,\*\*\/[\*\.]?[\w\.-]+(\/(\*\*)?)?)*}$/,w=/^\*\*((\/[\w\.-]+)+)\/?$/,C=/^([\w\.-]+(\/[\w\.-]+)*)\/?$/,k=new s.z6(1e4),S=function(){return!1},x=function(){return null};function L(e,t){if(!e)return x;var n;n=(n="string"!==typeof e?e.pattern:e).trim();var i,r="".concat(n,"_").concat(!!t.trimForExclusions),o=k.get(r);if(o)return E(o,e);if(m.test(n)){var a=n.substr(4);o=function(e,t){return"string"===typeof e&&e.endsWith(a)?n:null}}else o=(i=_.exec(D(n,t)))?function(e,t){var n="/".concat(e),i="\\".concat(e),r=function(r,o){return"string"!==typeof r?null:o?o===e?t:null:r===e||r.endsWith(n)||r.endsWith(i)?t:null},o=[e];return r.basenames=o,r.patterns=[t],r.allBasenames=o,r}(i[1],n):(t.trimForExclusions?b:y).test(n)?function(e,t){var n=T(e.slice(1,-1).split(",").map((function(e){return L(e,t)})).filter((function(e){return e!==x})),e),i=n.length;if(!i)return x;if(1===i)return n[0];var r=function(t,i){for(var r=0,o=n.length;r<o;r++)if(n[r](t,i))return e;return null},o=n.find((function(e){return!!e.allBasenames}));o&&(r.allBasenames=o.allBasenames);var a=n.reduce((function(e,t){return t.allPaths?e.concat(t.allPaths):e}),[]);a.length&&(r.allPaths=a);return r}(n,t):(i=w.exec(D(n,t)))?N(i[1].substr(1),n,!0):(i=C.exec(D(n,t)))?N(i[1],n,!1):function(e){try{var t=new RegExp("^".concat(v(e),"$"));return function(n){return t.lastIndex=0,"string"===typeof n&&t.test(n)?e:null}}catch(n){return x}}(n);return k.set(r,o),E(o,e)}function E(e,t){return"string"===typeof t?e:function(n,i){return o.KM(n,t.base)?e(a.Gf(t.base,n),i):null}}function D(e,t){return t.trimForExclusions&&e.endsWith("/**")?e.substr(0,e.length-2):e}function N(e,t,n){var i=a.ir===a.KR.sep,r=i?e:e.replace(f,a.ir),o=a.ir+r,s=a.KR.sep+e,u=n?function(n,a){return"string"!==typeof n||n!==r&&!n.endsWith(o)&&(i||n!==e&&!n.endsWith(s))?null:t}:function(n,o){return"string"!==typeof n||n!==r&&(i||n!==e)?null:t};return u.allPaths=[(n?"*/":"./")+e],u}function M(e,t,n){return!(!e||"string"!==typeof t)&&function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return S;if("string"===typeof e||function(e){var t=e;return t&&"string"===typeof t.base&&"string"===typeof t.pattern}(e)){var n=L(e,t);if(n===x)return S;var i=function(e,t){return!!n(e,t)};return n.allBasenames&&(i.allBasenames=n.allBasenames),n.allPaths&&(i.allPaths=n.allPaths),i}return function(e,t){var n=T(Object.getOwnPropertyNames(e).map((function(n){return function(e,t,n){if(!1===t)return x;var i=L(e,n);if(i===x)return x;if("boolean"===typeof t)return i;if(t){var r=t.when;if("string"===typeof r){var o=function(t,n,o,a){if(!a||!i(t,n))return null;var s=a(r.replace("$(basename)",o));return(0,u.J8)(s)?s.then((function(t){return t?e:null})):s?e:null};return o.requiresSiblings=!0,o}}return i}(n,e[n],t)})).filter((function(e){return e!==x}))),i=n.length;if(!i)return x;if(!n.some((function(e){return!!e.requiresSiblings}))){if(1===i)return n[0];var r=function(e,t){for(var i=0,r=n.length;i<r;i++){var o=n[i](e,t);if(o)return o}return null},o=n.find((function(e){return!!e.allBasenames}));o&&(r.allBasenames=o.allBasenames);var s=n.reduce((function(e,t){return t.allPaths?e.concat(t.allPaths):e}),[]);return s.length&&(r.allPaths=s),r}var l=function(e,t,i){for(var r=void 0,o=0,s=n.length;o<s;o++){var u=n[o];u.requiresSiblings&&i&&(t||(t=a.EZ(e)),r||(r=t.substr(0,t.length-a.DZ(e).length)));var l=u(e,t,r,i);if(l)return l}return null},c=n.find((function(e){return!!e.allBasenames}));c&&(l.allBasenames=c.allBasenames);var d=n.reduce((function(e,t){return t.allPaths?e.concat(t.allPaths):e}),[]);d.length&&(l.allPaths=d);return l}(e,t)}(e)(t,void 0,n)}function T(e,t){var n=e.filter((function(e){return!!e.basenames}));if(n.length<2)return e;var i,r=n.reduce((function(e,t){var n=t.basenames;return n?e.concat(n):e}),[]);if(t){i=[];for(var o=0,a=r.length;o<a;o++)i.push(t)}else i=n.reduce((function(e,t){var n=t.patterns;return n?e.concat(n):e}),[]);var s=function(e,t){if("string"!==typeof e)return null;if(!t){var n;for(n=e.length;n>0;n--){var o=e.charCodeAt(n-1);if(47===o||92===o)break}t=e.substr(n)}var a=r.indexOf(t);return-1!==a?i[a]:null};s.basenames=r,s.patterns=i,s.allBasenames=r;var u=e.filter((function(e){return!e.basenames}));return u.push(s),u}},25567:function(e,t,n){"use strict";n.d(t,{Cv:function(){return l},vp:function(){return a},yP:function(){return f}});var i=n(15671),r=n(43144),o=n(51747);function a(e){return s(e,0)}function s(e,t){switch(typeof e){case"object":return null===e?u(349,t):Array.isArray(e)?(n=e,i=u(104579,i=t),n.reduce((function(e,t){return s(t,e)}),i)):function(e,t){return t=u(181387,t),Object.keys(e).sort().reduce((function(t,n){return t=l(n,t),s(e[n],t)}),t)}(e,t);case"string":return l(e,t);case"boolean":return function(e,t){return u(e?433:863,t)}(e,t);case"number":return u(e,t);case"undefined":return u(937,t);default:return u(617,t)}var n,i}function u(e,t){return(t<<5)-t+e|0}function l(e,t){t=u(149417,t);for(var n=0,i=e.length;n<i;n++)t=u(e.charCodeAt(n),t);return t}function c(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:32)-t;return(e<<t|(~((1<<n)-1)&e)>>>n)>>>0}function d(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.byteLength,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,r=0;r<n;r++)e[t+r]=i}function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:32;return e instanceof ArrayBuffer?Array.from(new Uint8Array(e)).map((function(e){return e.toString(16).padStart(2,"0")})).join(""):function(e,t){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"0";e.length<t;)e=n+e;return e}((e>>>0).toString(16),t/4)}var f=function(){function e(){(0,i.Z)(this,e),this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(67),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}return(0,r.Z)(e,[{key:"update",value:function(e){var t=e.length;if(0!==t){var n,i,r=this._buff,a=this._buffLen,s=this._leftoverHighSurrogate;for(0!==s?(n=s,i=-1,s=0):(n=e.charCodeAt(0),i=0);;){var u=n;if(o.ZG(n)){if(!(i+1<t)){s=n;break}var l=e.charCodeAt(i+1);o.YK(l)?(i++,u=o.rL(n,l)):u=65533}else o.YK(n)&&(u=65533);if(a=this._push(r,a,u),!(++i<t))break;n=e.charCodeAt(i)}this._buffLen=a,this._leftoverHighSurrogate=s}}},{key:"_push",value:function(e,t,n){return n<128?e[t++]=n:n<2048?(e[t++]=192|(1984&n)>>>6,e[t++]=128|(63&n)>>>0):n<65536?(e[t++]=224|(61440&n)>>>12,e[t++]=128|(4032&n)>>>6,e[t++]=128|(63&n)>>>0):(e[t++]=240|(1835008&n)>>>18,e[t++]=128|(258048&n)>>>12,e[t++]=128|(4032&n)>>>6,e[t++]=128|(63&n)>>>0),t>=64&&(this._step(),t-=64,this._totalLen+=64,e[0]=e[64],e[1]=e[65],e[2]=e[66]),t}},{key:"digest",value:function(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),h(this._h0)+h(this._h1)+h(this._h2)+h(this._h3)+h(this._h4)}},{key:"_wrapUp",value:function(){this._buff[this._buffLen++]=128,d(this._buff,this._buffLen),this._buffLen>56&&(this._step(),d(this._buff));var e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}},{key:"_step",value:function(){for(var t=e._bigBlock32,n=this._buffDV,i=0;i<64;i+=4)t.setUint32(i,n.getUint32(i,!1),!1);for(var r=64;r<320;r+=4)t.setUint32(r,c(t.getUint32(r-12,!1)^t.getUint32(r-32,!1)^t.getUint32(r-56,!1)^t.getUint32(r-64,!1),1),!1);for(var o,a,s,u=this._h0,l=this._h1,d=this._h2,h=this._h3,f=this._h4,p=0;p<80;p++)p<20?(o=l&d|~l&h,a=1518500249):p<40?(o=l^d^h,a=1859775393):p<60?(o=l&d|l&h|d&h,a=2400959708):(o=l^d^h,a=3395469782),s=c(u,5)+o+f+a+t.getUint32(4*p,!1)&4294967295,f=h,h=d,d=c(l,30),l=u,u=s;this._h0=this._h0+u&4294967295,this._h1=this._h1+l&4294967295,this._h2=this._h2+d&4294967295,this._h3=this._h3+h&4294967295,this._h4=this._h4+f&4294967295}}]),e}();f._bigBlock32=new DataView(new ArrayBuffer(320))},10939:function(e,t,n){"use strict";n.d(t,{Gt:function(){return v},Ho:function(){return g},Qo:function(){return c},f$:function(){return h},x$:function(){return p}});var i=n(37762),r=n(4354),o=n(50482),a=n(51747),s="$(",u=new RegExp("\\$\\(".concat(r.dT.iconNameExpression,"(?:").concat(r.dT.iconModifierExpression,")?\\)"),"g"),l=new RegExp("(\\\\)?".concat(u.source),"g");function c(e){return e.replace(l,(function(e,t){return t?e:"\\".concat(e)}))}var d=new RegExp("\\\\".concat(u.source),"g");function h(e){return e.replace(d,(function(e){return"\\".concat(e)}))}var f=new RegExp("(\\s)?(\\\\)?".concat(u.source,"(\\s)?"),"g");function p(e){return-1===e.indexOf(s)?e:e.replace(f,(function(e,t,n,i){return n?e:t||i||""}))}function g(e){var t=e.indexOf(s);return-1===t?{text:e}:function(e,t){var n=[],r="";function o(e){if(e){r+=e;var t,o=(0,i.Z)(e);try{for(o.s();!(t=o.n()).done;){t.value;n.push(d)}}catch(a){o.e(a)}finally{o.f()}}}var a,u,l=-1,c="",d=0,h=t,f=e.length;o(e.substr(0,t));for(;h<f;){if(a=e[h],u=e[h+1],a===s[0]&&u===s[1])l=h,o(c),c=s,h++;else if(")"===a&&-1!==l){d+=h-l+1,l=-1,c=""}else-1!==l?/^[a-z0-9\-]$/i.test(a)?c+=a:(o(c),l=-1,c=""):o(a);h++}return o(c),{text:r,iconOffsets:n}}(e,t)}function v(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=t.text,s=t.iconOffsets;if(!s||0===s.length)return(0,o.Oh)(e,r,n);var u=(0,a.j3)(r," "),l=r.length-u.length,c=(0,o.Oh)(e,u,n);if(c){var d,h=(0,i.Z)(c);try{for(h.s();!(d=h.n()).done;){var f=d.value,p=s[f.start+l]+l;f.start+=p,f.end+=p}}catch(g){h.e(g)}finally{h.f()}}return c}},12394:function(e,t,n){"use strict";n.d(t,{R:function(){return o},a:function(){return a}});var i=n(15671),r=n(43144),o=function(){function e(t){(0,i.Z)(this,e),this._prefix=t,this._lastId=0}return(0,r.Z)(e,[{key:"nextId",value:function(){return this._prefix+ ++this._lastId}}]),e}(),a=new o("id#")},98900:function(e,t,n){"use strict";n.d(t,{$:function(){return i}});var i,r=n(4942),o=n(37762),a=n(87757),s=n.n(a);!function(e){var t=s().mark(c),n=s().mark(d),i=s().mark(h),a=s().mark(f),u=s().mark(p);e.is=function(e){return e&&"object"===typeof e&&"function"===typeof e[Symbol.iterator]};var l=Object.freeze([]);function c(e){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e;case 2:case"end":return t.stop()}}),t)}function d(e,t){var i,r,a;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:i=(0,o.Z)(e),n.prev=1,i.s();case 3:if((r=i.n()).done){n.next=10;break}if(a=r.value,!t(a)){n.next=8;break}return n.next=8,a;case 8:n.next=3;break;case 10:n.next=15;break;case 12:n.prev=12,n.t0=n.catch(1),i.e(n.t0);case 15:return n.prev=15,i.f(),n.finish(15);case 18:case"end":return n.stop()}}),n,null,[[1,12,15,18]])}function h(e,t){var n,r,a;return s().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:n=(0,o.Z)(e),i.prev=1,n.s();case 3:if((r=n.n()).done){i.next=9;break}return a=r.value,i.next=7,t(a);case 7:i.next=3;break;case 9:i.next=14;break;case 11:i.prev=11,i.t0=i.catch(1),n.e(i.t0);case 14:return i.prev=14,n.f(),i.finish(14);case 17:case"end":return i.stop()}}),i,null,[[1,11,14,17]])}function f(){var e,t,n,i,r,u,l,c,d,h=arguments;return s().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:for(e=h.length,t=new Array(e),n=0;n<e;n++)t[n]=h[n];i=0,r=t;case 2:if(!(i<r.length)){a.next=24;break}u=r[i],l=(0,o.Z)(u),a.prev=5,l.s();case 7:if((c=l.n()).done){a.next=13;break}return d=c.value,a.next=11,d;case 11:a.next=7;break;case 13:a.next=18;break;case 15:a.prev=15,a.t0=a.catch(5),l.e(a.t0);case 18:return a.prev=18,l.f(),a.finish(18);case 21:i++,a.next=2;break;case 24:case"end":return a.stop()}}),a,null,[[5,15,18,21]])}function p(e){var t,n,i,r,a,l;return s().wrap((function(s){for(;;)switch(s.prev=s.next){case 0:t=(0,o.Z)(e),s.prev=1,t.s();case 3:if((n=t.n()).done){s.next=24;break}i=n.value,r=(0,o.Z)(i),s.prev=6,r.s();case 8:if((a=r.n()).done){s.next=14;break}return l=a.value,s.next=12,l;case 12:s.next=8;break;case 14:s.next=19;break;case 16:s.prev=16,s.t0=s.catch(6),r.e(s.t0);case 19:return s.prev=19,r.f(),s.finish(19);case 22:s.next=3;break;case 24:s.next=29;break;case 26:s.prev=26,s.t1=s.catch(1),t.e(s.t1);case 29:return s.prev=29,t.f(),s.finish(29);case 32:case"end":return s.stop()}}),u,null,[[1,26,29,32],[6,16,19,22]])}e.empty=function(){return l},e.single=c,e.from=function(e){return e||l},e.isEmpty=function(e){return!e||!0===e[Symbol.iterator]().next().done},e.first=function(e){return e[Symbol.iterator]().next().value},e.some=function(e,t){var n,i=(0,o.Z)(e);try{for(i.s();!(n=i.n()).done;){if(t(n.value))return!0}}catch(r){i.e(r)}finally{i.f()}return!1},e.find=function(e,t){var n,i=(0,o.Z)(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;if(t(r))return r}}catch(a){i.e(a)}finally{i.f()}},e.filter=d,e.map=h,e.concat=f,e.concatNested=p,e.reduce=function(e,t,n){var i,r=n,a=(0,o.Z)(e);try{for(a.s();!(i=a.n()).done;){r=t(r,i.value)}}catch(s){a.e(s)}finally{a.f()}return r},e.slice=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length;return s().mark((function i(){return s().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:t<0&&(t+=e.length),n<0?n+=e.length:n>e.length&&(n=e.length);case 2:if(!(t<n)){i.next=8;break}return i.next=5,e[t];case 5:t++,i.next=2;break;case 8:case"end":return i.stop()}}),i)}))()},e.consume=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.POSITIVE_INFINITY,i=[];if(0===n)return[i,t];for(var o=t[Symbol.iterator](),a=0;a<n;a++){var s=o.next();if(s.done)return[i,e.empty()];i.push(s.value)}return[i,(0,r.Z)({},Symbol.iterator,(function(){return o}))]},e.equals=function(e,t){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e,t){return e===t},i=e[Symbol.iterator](),r=t[Symbol.iterator]();;){var o=i.next(),a=r.next();if(o.done!==a.done)return!1;if(o.done)return!0;if(!n(o.value,a.value))return!1}}}(i||(i={}))},38792:function(e,t,n){"use strict";n.d(t,{BQ:function(){return v},QC:function(){return p},f1:function(){return m},gm:function(){return h},gx:function(){return d},kL:function(){return i}});var i,r=n(15671),o=n(43144),a=n(8729),s=function(){function e(){(0,r.Z)(this,e),this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}return(0,o.Z)(e,[{key:"define",value:function(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}},{key:"keyCodeToStr",value:function(e){return this._keyCodeToStr[e]}},{key:"strToKeyCode",value:function(e){return this._strToKeyCode[e.toLowerCase()]||0}}]),e}(),u=new s,l=new s,c=new s;function d(e,t){return(e|(65535&t)<<16>>>0)>>>0}function h(e,t){if(0===e)return null;var n=(65535&e)>>>0,i=(4294901760&e)>>>16;return new g(0!==i?[f(n,t),f(i,t)]:[f(n,t)])}function f(e,t){var n=!!(2048&e),i=!!(256&e);return new p(2===t?i:n,!!(1024&e),!!(512&e),2===t?n:i,255&e)}!function(){function e(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n;u.define(e,t),l.define(e,n),c.define(e,i)}e(0,"unknown"),e(1,"Backspace"),e(2,"Tab"),e(3,"Enter"),e(4,"Shift"),e(5,"Ctrl"),e(6,"Alt"),e(7,"PauseBreak"),e(8,"CapsLock"),e(9,"Escape"),e(10,"Space"),e(11,"PageUp"),e(12,"PageDown"),e(13,"End"),e(14,"Home"),e(15,"LeftArrow","Left"),e(16,"UpArrow","Up"),e(17,"RightArrow","Right"),e(18,"DownArrow","Down"),e(19,"Insert"),e(20,"Delete"),e(21,"0"),e(22,"1"),e(23,"2"),e(24,"3"),e(25,"4"),e(26,"5"),e(27,"6"),e(28,"7"),e(29,"8"),e(30,"9"),e(31,"A"),e(32,"B"),e(33,"C"),e(34,"D"),e(35,"E"),e(36,"F"),e(37,"G"),e(38,"H"),e(39,"I"),e(40,"J"),e(41,"K"),e(42,"L"),e(43,"M"),e(44,"N"),e(45,"O"),e(46,"P"),e(47,"Q"),e(48,"R"),e(49,"S"),e(50,"T"),e(51,"U"),e(52,"V"),e(53,"W"),e(54,"X"),e(55,"Y"),e(56,"Z"),e(57,"Meta"),e(58,"ContextMenu"),e(59,"F1"),e(60,"F2"),e(61,"F3"),e(62,"F4"),e(63,"F5"),e(64,"F6"),e(65,"F7"),e(66,"F8"),e(67,"F9"),e(68,"F10"),e(69,"F11"),e(70,"F12"),e(71,"F13"),e(72,"F14"),e(73,"F15"),e(74,"F16"),e(75,"F17"),e(76,"F18"),e(77,"F19"),e(78,"NumLock"),e(79,"ScrollLock"),e(80,";",";","OEM_1"),e(81,"=","=","OEM_PLUS"),e(82,",",",","OEM_COMMA"),e(83,"-","-","OEM_MINUS"),e(84,".",".","OEM_PERIOD"),e(85,"/","/","OEM_2"),e(86,"`","`","OEM_3"),e(110,"ABNT_C1"),e(111,"ABNT_C2"),e(87,"[","[","OEM_4"),e(88,"\\","\\","OEM_5"),e(89,"]","]","OEM_6"),e(90,"'","'","OEM_7"),e(91,"OEM_8"),e(92,"OEM_102"),e(93,"NumPad0"),e(94,"NumPad1"),e(95,"NumPad2"),e(96,"NumPad3"),e(97,"NumPad4"),e(98,"NumPad5"),e(99,"NumPad6"),e(100,"NumPad7"),e(101,"NumPad8"),e(102,"NumPad9"),e(103,"NumPad_Multiply"),e(104,"NumPad_Add"),e(105,"NumPad_Separator"),e(106,"NumPad_Subtract"),e(107,"NumPad_Decimal"),e(108,"NumPad_Divide")}(),function(e){e.toString=function(e){return u.keyCodeToStr(e)},e.fromString=function(e){return u.strToKeyCode(e)},e.toUserSettingsUS=function(e){return l.keyCodeToStr(e)},e.toUserSettingsGeneral=function(e){return c.keyCodeToStr(e)},e.fromUserSettings=function(e){return l.strToKeyCode(e)||c.strToKeyCode(e)}}(i||(i={}));var p=function(){function e(t,n,i,o,a){(0,r.Z)(this,e),this.ctrlKey=t,this.shiftKey=n,this.altKey=i,this.metaKey=o,this.keyCode=a}return(0,o.Z)(e,[{key:"equals",value:function(e){return this.ctrlKey===e.ctrlKey&&this.shiftKey===e.shiftKey&&this.altKey===e.altKey&&this.metaKey===e.metaKey&&this.keyCode===e.keyCode}},{key:"isModifierKey",value:function(){return 0===this.keyCode||5===this.keyCode||57===this.keyCode||6===this.keyCode||4===this.keyCode}},{key:"toChord",value:function(){return new g([this])}},{key:"isDuplicateModifierCase",value:function(){return this.ctrlKey&&5===this.keyCode||this.shiftKey&&4===this.keyCode||this.altKey&&6===this.keyCode||this.metaKey&&57===this.keyCode}}]),e}(),g=(0,o.Z)((function e(t){if((0,r.Z)(this,e),0===t.length)throw(0,a.b1)("parts");this.parts=t})),v=(0,o.Z)((function e(t,n,i,o,a,s){(0,r.Z)(this,e),this.ctrlKey=t,this.shiftKey=n,this.altKey=i,this.metaKey=o,this.keyLabel=a,this.keyAriaLabel=s})),m=(0,o.Z)((function e(){(0,r.Z)(this,e)}))},85733:function(e,t,n){"use strict";n.d(t,{X4:function(){return u},xo:function(){return s}});var i=n(15671),r=n(43144),o=n(56345),a=function(){function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n;(0,i.Z)(this,e),this.modifierLabels=[null],this.modifierLabels[2]=t,this.modifierLabels[1]=n,this.modifierLabels[3]=r}return(0,r.Z)(e,[{key:"toLabel",value:function(e,t,n){if(0===t.length)return null;for(var i=[],r=0,o=t.length;r<o;r++){var a=t[r],s=n(a);if(null===s)return null;i[r]=l(a,s,this.modifierLabels[e])}return i.join(" ")}}]),e}(),s=new a({ctrlKey:"\u2303",shiftKey:"\u21e7",altKey:"\u2325",metaKey:"\u2318",separator:""},{ctrlKey:o.N({key:"ctrlKey",comment:["This is the short form for the Control key on the keyboard"]},"Ctrl"),shiftKey:o.N({key:"shiftKey",comment:["This is the short form for the Shift key on the keyboard"]},"Shift"),altKey:o.N({key:"altKey",comment:["This is the short form for the Alt key on the keyboard"]},"Alt"),metaKey:o.N({key:"windowsKey",comment:["This is the short form for the Windows key on the keyboard"]},"Windows"),separator:"+"},{ctrlKey:o.N({key:"ctrlKey",comment:["This is the short form for the Control key on the keyboard"]},"Ctrl"),shiftKey:o.N({key:"shiftKey",comment:["This is the short form for the Shift key on the keyboard"]},"Shift"),altKey:o.N({key:"altKey",comment:["This is the short form for the Alt key on the keyboard"]},"Alt"),metaKey:o.N({key:"superKey",comment:["This is the short form for the Super key on the keyboard"]},"Super"),separator:"+"}),u=new a({ctrlKey:o.N({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:o.N({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:o.N({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:o.N({key:"cmdKey.long",comment:["This is the long form for the Command key on the keyboard"]},"Command"),separator:"+"},{ctrlKey:o.N({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:o.N({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:o.N({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:o.N({key:"windowsKey.long",comment:["This is the long form for the Windows key on the keyboard"]},"Windows"),separator:"+"},{ctrlKey:o.N({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:o.N({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:o.N({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:o.N({key:"superKey.long",comment:["This is the long form for the Super key on the keyboard"]},"Super"),separator:"+"});function l(e,t,n){if(null===t)return"";var i=[];return e.ctrlKey&&i.push(n.ctrlKey),e.shiftKey&&i.push(n.shiftKey),e.altKey&&i.push(n.altKey),e.metaKey&&i.push(n.metaKey),""!==t&&i.push(t),i.join(n.separator)}},81626:function(e,t,n){"use strict";n.d(t,{B9:function(){return g},F8:function(){return v},JT:function(){return y},Jz:function(){return w},OF:function(){return m},SL:function(){return _},Wf:function(){return p},XK:function(){return b}});var i=n(37762),r=n(60136),o=n(43668),a=n(28664),s=n(15671),u=n(43144),l=n(98900),c=null;function d(e){c&&c.markTracked(e)}function h(e){return c?(c.trackDisposable(e),e):e}var f=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e){var i;return(0,s.Z)(this,n),(i=t.call(this,"Encountered errors while disposing of store. Errors: [".concat(e.join(", "),"]"))).errors=e,i}return(0,u.Z)(n)}((0,a.Z)(Error));function p(e){return"function"===typeof e.dispose&&0===e.dispose.length}function g(e){if(l.$.is(e)){var t,n=[],r=(0,i.Z)(e);try{for(r.s();!(t=r.n()).done;){var o=t.value;if(o){d(o);try{o.dispose()}catch(a){n.push(a)}}}}catch(s){r.e(s)}finally{r.f()}if(1===n.length)throw n[0];if(n.length>1)throw new f(n);return Array.isArray(e)?[]:e}if(e)return d(e),e.dispose(),e}function v(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.forEach(d),m((function(){return g(t)}))}function m(e){var t=h({dispose:function(){d(t),e()}});return t}var _=function(){function e(){(0,s.Z)(this,e),this._toDispose=new Set,this._isDisposed=!1}return(0,u.Z)(e,[{key:"dispose",value:function(){this._isDisposed||(d(this),this._isDisposed=!0,this.clear())}},{key:"clear",value:function(){try{g(this._toDispose.values())}finally{this._toDispose.clear()}}},{key:"add",value:function(t){if(!t)return t;if(t===this)throw new Error("Cannot register a disposable on itself!");return d(t),this._isDisposed?e.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(t),t}}]),e}();_.DISABLE_DISPOSED_WARNING=!1;var y=function(){function e(){(0,s.Z)(this,e),this._store=new _,h(this)}return(0,u.Z)(e,[{key:"dispose",value:function(){d(this),this._store.dispose()}},{key:"_register",value:function(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}}]),e}();y.None=Object.freeze({dispose:function(){}});var b=function(){function e(){(0,s.Z)(this,e),this._isDisposed=!1,h(this)}return(0,u.Z)(e,[{key:"value",get:function(){return this._isDisposed?void 0:this._value},set:function(e){var t;this._isDisposed||e===this._value||(null===(t=this._value)||void 0===t||t.dispose(),e&&d(e),this._value=e)}},{key:"clear",value:function(){this.value=void 0}},{key:"dispose",value:function(){var e;this._isDisposed=!0,d(this),null===(e=this._value)||void 0===e||e.dispose(),this._value=void 0}}]),e}(),w=function(){function e(t){(0,s.Z)(this,e),this.object=t}return(0,u.Z)(e,[{key:"dispose",value:function(){}}]),e}()},28214:function(e,t,n){"use strict";n.d(t,{S:function(){return u}});var i=n(43144),r=n(15671),o=n(87757),a=n.n(o),s=(0,i.Z)((function e(t){(0,r.Z)(this,e),this.element=t,this.next=e.Undefined,this.prev=e.Undefined}));s.Undefined=new s(void 0);var u=function(e){function t(){(0,r.Z)(this,t),this._first=s.Undefined,this._last=s.Undefined,this._size=0}return(0,i.Z)(t,[{key:"size",get:function(){return this._size}},{key:"isEmpty",value:function(){return this._first===s.Undefined}},{key:"clear",value:function(){this._first=s.Undefined,this._last=s.Undefined,this._size=0}},{key:"unshift",value:function(e){return this._insert(e,!1)}},{key:"push",value:function(e){return this._insert(e,!0)}},{key:"_insert",value:function(e,t){var n=this,i=new s(e);if(this._first===s.Undefined)this._first=i,this._last=i;else if(t){var r=this._last;this._last=i,i.prev=r,r.next=i}else{var o=this._first;this._first=i,i.next=o,o.prev=i}this._size+=1;var a=!1;return function(){a||(a=!0,n._remove(i))}}},{key:"shift",value:function(){if(this._first!==s.Undefined){var e=this._first.element;return this._remove(this._first),e}}},{key:"pop",value:function(){if(this._last!==s.Undefined){var e=this._last.element;return this._remove(this._last),e}}},{key:"_remove",value:function(e){if(e.prev!==s.Undefined&&e.next!==s.Undefined){var t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===s.Undefined&&e.next===s.Undefined?(this._first=s.Undefined,this._last=s.Undefined):e.next===s.Undefined?(this._last=this._last.prev,this._last.next=s.Undefined):e.prev===s.Undefined&&(this._first=this._first.next,this._first.prev=s.Undefined);this._size-=1}},{key:e,value:a().mark((function e(){var t;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=this._first;case 1:if(t===s.Undefined){e.next=7;break}return e.next=4,t.element;case 4:t=t.next,e.next=1;break;case 7:case"end":return e.stop()}}),e,this)}))}]),t}(Symbol.iterator)},15022:function(e,t,n){"use strict";n.d(t,{Id:function(){return k},Y9:function(){return S},z6:function(){return L}});var i,r,o=n(11752),a=n(61120),s=n(60136),u=n(43668),l=n(4942),c=n(37762),d=n(29439),h=n(15671),f=n(43144),p=n(87757),g=n.n(p),v=n(67775),m=n(51747),_=function(){function e(){(0,h.Z)(this,e),this._value="",this._pos=0}return(0,f.Z)(e,[{key:"reset",value:function(e){return this._value=e,this._pos=0,this}},{key:"next",value:function(){return this._pos+=1,this}},{key:"hasNext",value:function(){return this._pos<this._value.length-1}},{key:"cmp",value:function(e){return e.charCodeAt(0)-this._value.charCodeAt(this._pos)}},{key:"value",value:function(){return this._value[this._pos]}}]),e}(),y=function(){function e(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];(0,h.Z)(this,e),this._caseSensitive=t}return(0,f.Z)(e,[{key:"reset",value:function(e){return this._value=e,this._from=0,this._to=0,this.next()}},{key:"hasNext",value:function(){return this._to<this._value.length}},{key:"next",value:function(){this._from=this._to;for(var e=!0;this._to<this._value.length;this._to++){if(46===this._value.charCodeAt(this._to)){if(!e)break;this._from++}else e=!1}return this}},{key:"cmp",value:function(e){return this._caseSensitive?(0,m.TT)(e,this._value,0,e.length,this._from,this._to):(0,m.j_)(e,this._value,0,e.length,this._from,this._to)}},{key:"value",value:function(){return this._value.substring(this._from,this._to)}}]),e}(),b=function(){function e(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];(0,h.Z)(this,e),this._splitOnBackslash=t,this._caseSensitive=n}return(0,f.Z)(e,[{key:"reset",value:function(e){return this._value=e.replace(/\\$|\/$/,""),this._from=0,this._to=0,this.next()}},{key:"hasNext",value:function(){return this._to<this._value.length}},{key:"next",value:function(){this._from=this._to;for(var e=!0;this._to<this._value.length;this._to++){var t=this._value.charCodeAt(this._to);if(47===t||this._splitOnBackslash&&92===t){if(!e)break;this._from++}else e=!1}return this}},{key:"cmp",value:function(e){return this._caseSensitive?(0,m.TT)(e,this._value,0,e.length,this._from,this._to):(0,m.j_)(e,this._value,0,e.length,this._from,this._to)}},{key:"value",value:function(){return this._value.substring(this._from,this._to)}}]),e}(),w=function(){function e(t){(0,h.Z)(this,e),this._ignorePathCasing=t,this._states=[],this._stateIdx=0}return(0,f.Z)(e,[{key:"reset",value:function(e){return this._value=e,this._states=[],this._value.scheme&&this._states.push(1),this._value.authority&&this._states.push(2),this._value.path&&(this._pathIterator=new b(!1,!this._ignorePathCasing(e)),this._pathIterator.reset(e.path),this._pathIterator.value()&&this._states.push(3)),this._value.query&&this._states.push(4),this._value.fragment&&this._states.push(5),this._stateIdx=0,this}},{key:"next",value:function(){return 3===this._states[this._stateIdx]&&this._pathIterator.hasNext()?this._pathIterator.next():this._stateIdx+=1,this}},{key:"hasNext",value:function(){return 3===this._states[this._stateIdx]&&this._pathIterator.hasNext()||this._stateIdx<this._states.length-1}},{key:"cmp",value:function(e){if(1===this._states[this._stateIdx])return(0,m.zY)(e,this._value.scheme);if(2===this._states[this._stateIdx])return(0,m.zY)(e,this._value.authority);if(3===this._states[this._stateIdx])return this._pathIterator.cmp(e);if(4===this._states[this._stateIdx])return(0,m.qu)(e,this._value.query);if(5===this._states[this._stateIdx])return(0,m.qu)(e,this._value.fragment);throw new Error}},{key:"value",value:function(){if(1===this._states[this._stateIdx])return this._value.scheme;if(2===this._states[this._stateIdx])return this._value.authority;if(3===this._states[this._stateIdx])return this._pathIterator.value();if(4===this._states[this._stateIdx])return this._value.query;if(5===this._states[this._stateIdx])return this._value.fragment;throw new Error}}]),e}(),C=function(){function e(){(0,h.Z)(this,e)}return(0,f.Z)(e,[{key:"isEmpty",value:function(){return!this.left&&!this.mid&&!this.right&&!this.value}}]),e}(),k=function(e){function t(e){(0,h.Z)(this,t),this._iter=e}return(0,f.Z)(t,[{key:"clear",value:function(){this._root=void 0}},{key:"set",value:function(e,t){var n,i=this._iter.reset(e);for(this._root||(this._root=new C,this._root.segment=i.value()),n=this._root;;){var r=i.cmp(n.segment);if(r>0)n.left||(n.left=new C,n.left.segment=i.value()),n=n.left;else if(r<0)n.right||(n.right=new C,n.right.segment=i.value()),n=n.right;else{if(!i.hasNext())break;i.next(),n.mid||(n.mid=new C,n.mid.segment=i.value()),n=n.mid}}var o=n.value;return n.value=t,n.key=e,o}},{key:"get",value:function(e){var t;return null===(t=this._getNode(e))||void 0===t?void 0:t.value}},{key:"_getNode",value:function(e){for(var t=this._iter.reset(e),n=this._root;n;){var i=t.cmp(n.segment);if(i>0)n=n.left;else if(i<0)n=n.right;else{if(!t.hasNext())break;t.next(),n=n.mid}}return n}},{key:"has",value:function(e){var t=this._getNode(e);return!(void 0===(null===t||void 0===t?void 0:t.value)&&void 0===(null===t||void 0===t?void 0:t.mid))}},{key:"delete",value:function(e){return this._delete(e,!1)}},{key:"deleteSuperstr",value:function(e){return this._delete(e,!0)}},{key:"_delete",value:function(e,t){for(var n=this._iter.reset(e),i=[],r=this._root;r;){var o=n.cmp(r.segment);if(o>0)i.push([1,r]),r=r.left;else if(o<0)i.push([-1,r]),r=r.right;else{if(!n.hasNext()){for(t?(r.left=void 0,r.mid=void 0,r.right=void 0):r.value=void 0;i.length>0&&r.isEmpty();){var a=i.pop(),s=(0,d.Z)(a,2),u=s[0],l=s[1];switch(u){case 1:l.left=void 0;break;case 0:l.mid=void 0;break;case-1:l.right=void 0}r=l}break}n.next(),i.push([0,r]),r=r.mid}}}},{key:"findSubstr",value:function(e){for(var t=this._iter.reset(e),n=this._root,i=void 0;n;){var r=t.cmp(n.segment);if(r>0)n=n.left;else if(r<0)n=n.right;else{if(!t.hasNext())break;t.next(),i=n.value||i,n=n.mid}}return n&&n.value||i}},{key:"findSuperstr",value:function(e){for(var t=this._iter.reset(e),n=this._root;n;){var i=t.cmp(n.segment);if(i>0)n=n.left;else if(i<0)n=n.right;else{if(!t.hasNext())return n.mid?this._entries(n.mid):void 0;t.next(),n=n.mid}}}},{key:"forEach",value:function(e){var t,n=(0,c.Z)(this);try{for(n.s();!(t=n.n()).done;){var i=(0,d.Z)(t.value,2),r=i[0];e(i[1],r)}}catch(o){n.e(o)}finally{n.f()}}},{key:e,value:g().mark((function e(){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this._entries(this._root),"t0",1);case 1:case"end":return e.stop()}}),e,this)}))},{key:"_entries",value:g().mark((function e(t){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=7;break}return e.delegateYield(this._entries(t.left),"t0",2);case 2:if(!t.value){e.next=5;break}return e.next=5,[t.key,t.value];case 5:return e.delegateYield(this._entries(t.mid),"t1",6);case 6:return e.delegateYield(this._entries(t.right),"t2",7);case 7:case"end":return e.stop()}}),e,this)}))}],[{key:"forUris",value:function(){return new t(new w(arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1}))}},{key:"forStrings",value:function(){return new t(new _)}},{key:"forConfigKeys",value:function(){return new t(new y)}}]),t}(Symbol.iterator),S=function(e){function t(e,n){(0,h.Z)(this,t),this[i]="ResourceMap",e instanceof t?(this.map=new Map(e.map),this.toKey=null!==n&&void 0!==n?n:t.defaultToKey):(this.map=new Map,this.toKey=null!==e&&void 0!==e?e:t.defaultToKey)}return(0,f.Z)(t,[{key:"set",value:function(e,t){return this.map.set(this.toKey(e),t),this}},{key:"get",value:function(e){return this.map.get(this.toKey(e))}},{key:"has",value:function(e){return this.map.has(this.toKey(e))}},{key:"size",get:function(){return this.map.size}},{key:"clear",value:function(){this.map.clear()}},{key:"delete",value:function(e){return this.map.delete(this.toKey(e))}},{key:"forEach",value:function(e,t){"undefined"!==typeof t&&(e=e.bind(t));var n,i=(0,c.Z)(this.map);try{for(i.s();!(n=i.n()).done;){var r=(0,d.Z)(n.value,2),o=r[0];e(r[1],v.o.parse(o),this)}}catch(a){i.e(a)}finally{i.f()}}},{key:"values",value:function(){return this.map.values()}},{key:"keys",value:g().mark((function e(){var t,n,i;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=(0,c.Z)(this.map.keys()),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=9;break}return i=n.value,e.next=7,v.o.parse(i);case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),t.e(e.t0);case 14:return e.prev=14,t.f(),e.finish(14);case 17:case"end":return e.stop()}}),e,this,[[1,11,14,17]])}))},{key:"entries",value:g().mark((function e(){var t,n,i;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=(0,c.Z)(this.map.entries()),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=9;break}return i=n.value,e.next=7,[v.o.parse(i[0]),i[1]];case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),t.e(e.t0);case 14:return e.prev=14,t.f(),e.finish(14);case 17:case"end":return e.stop()}}),e,this,[[1,11,14,17]])}))},{key:e,value:g().mark((function e(){var t,n,i;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=(0,c.Z)(this.map),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=9;break}return i=n.value,e.next=7,[v.o.parse(i[0]),i[1]];case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),t.e(e.t0);case 14:return e.prev=14,t.f(),e.finish(14);case 17:case"end":return e.stop()}}),e,this,[[1,11,14,17]])}))}]),t}((i=Symbol.toStringTag,Symbol.iterator));S.defaultToKey=function(e){return e.toString()};var x=function(e){function t(){(0,h.Z)(this,t),this[r]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}return(0,f.Z)(t,[{key:"clear",value:function(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}},{key:"isEmpty",value:function(){return!this._head&&!this._tail}},{key:"size",get:function(){return this._size}},{key:"first",get:function(){var e;return null===(e=this._head)||void 0===e?void 0:e.value}},{key:"last",get:function(){var e;return null===(e=this._tail)||void 0===e?void 0:e.value}},{key:"has",value:function(e){return this._map.has(e)}},{key:"get",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this._map.get(e);if(n)return 0!==t&&this.touch(n,t),n.value}},{key:"set",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=this._map.get(e);if(i)i.value=t,0!==n&&this.touch(i,n);else{switch(i={key:e,value:t,next:void 0,previous:void 0},n){case 0:case 2:default:this.addItemLast(i);break;case 1:this.addItemFirst(i)}this._map.set(e,i),this._size++}return this}},{key:"delete",value:function(e){return!!this.remove(e)}},{key:"remove",value:function(e){var t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}},{key:"shift",value:function(){if(this._head||this._tail){if(!this._head||!this._tail)throw new Error("Invalid list");var e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}}},{key:"forEach",value:function(e,t){for(var n=this._state,i=this._head;i;){if(t?e.bind(t)(i.value,i.key,this):e(i.value,i.key,this),this._state!==n)throw new Error("LinkedMap got modified during iteration.");i=i.next}}},{key:"keys",value:function(){var e,t=this,n=this._state,i=this._head,r=(e={},(0,l.Z)(e,Symbol.iterator,(function(){return r})),(0,l.Z)(e,"next",(function(){if(t._state!==n)throw new Error("LinkedMap got modified during iteration.");if(i){var e={value:i.key,done:!1};return i=i.next,e}return{value:void 0,done:!0}})),e);return r}},{key:"values",value:function(){var e,t=this,n=this._state,i=this._head,r=(e={},(0,l.Z)(e,Symbol.iterator,(function(){return r})),(0,l.Z)(e,"next",(function(){if(t._state!==n)throw new Error("LinkedMap got modified during iteration.");if(i){var e={value:i.value,done:!1};return i=i.next,e}return{value:void 0,done:!0}})),e);return r}},{key:"entries",value:function(){var e,t=this,n=this._state,i=this._head,r=(e={},(0,l.Z)(e,Symbol.iterator,(function(){return r})),(0,l.Z)(e,"next",(function(){if(t._state!==n)throw new Error("LinkedMap got modified during iteration.");if(i){var e={value:[i.key,i.value],done:!1};return i=i.next,e}return{value:void 0,done:!0}})),e);return r}},{key:e,value:function(){return this.entries()}},{key:"trimOld",value:function(e){if(!(e>=this.size))if(0!==e){for(var t=this._head,n=this.size;t&&n>e;)this._map.delete(t.key),t=t.next,n--;this._head=t,this._size=n,t&&(t.previous=void 0),this._state++}else this.clear()}},{key:"addItemFirst",value:function(e){if(this._head||this._tail){if(!this._head)throw new Error("Invalid list");e.next=this._head,this._head.previous=e}else this._tail=e;this._head=e,this._state++}},{key:"addItemLast",value:function(e){if(this._head||this._tail){if(!this._tail)throw new Error("Invalid list");e.previous=this._tail,this._tail.next=e}else this._head=e;this._tail=e,this._state++}},{key:"removeItem",value:function(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{var t=e.next,n=e.previous;if(!t||!n)throw new Error("Invalid list");t.previous=n,n.next=t}e.next=void 0,e.previous=void 0,this._state++}},{key:"touch",value:function(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(1===t||2===t)if(1===t){if(e===this._head)return;var n=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(n.previous=i,i.next=n),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(2===t){if(e===this._tail)return;var r=e.next,o=e.previous;e===this._head?(r.previous=void 0,this._head=r):(r.previous=o,o.next=r),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}},{key:"toJSON",value:function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),e}},{key:"fromJSON",value:function(e){this.clear();var t,n=(0,c.Z)(e);try{for(n.s();!(t=n.n()).done;){var i=(0,d.Z)(t.value,2),r=i[0],o=i[1];this.set(r,o)}}catch(a){n.e(a)}finally{n.f()}}}]),t}((r=Symbol.toStringTag,Symbol.iterator)),L=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e){var i,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return(0,h.Z)(this,n),(i=t.call(this))._limit=e,i._ratio=Math.min(Math.max(0,r),1),i}return(0,f.Z)(n,[{key:"limit",get:function(){return this._limit},set:function(e){this._limit=e,this.checkTrim()}},{key:"get",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return(0,o.Z)((0,a.Z)(n.prototype),"get",this).call(this,e,t)}},{key:"peek",value:function(e){return(0,o.Z)((0,a.Z)(n.prototype),"get",this).call(this,e,0)}},{key:"set",value:function(e,t){return(0,o.Z)((0,a.Z)(n.prototype),"set",this).call(this,e,t,2),this.checkTrim(),this}},{key:"checkTrim",value:function(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}}]),n}(x)},61329:function(e){e.exports=function(){"use strict";function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function t(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}function n(e,t){if(e){if("string"===typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function r(e,t){var i;if("undefined"===typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(i=n(e))||t&&e&&"number"===typeof e.length){i&&(e=i);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(i=e[Symbol.iterator]()).next.bind(i)}function o(e){var t={exports:{}};return e(t,t.exports),t.exports}var a=o((function(e){function t(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}function n(t){e.exports.defaults=t}e.exports={defaults:t(),getDefaults:t,changeDefaults:n}})),s=/[&<>"']/,u=/[&<>"']/g,l=/[<>"']|&(?!#?\w+;)/,c=/[<>"']|&(?!#?\w+;)/g,d={"&":"&","<":"<",">":">",'"':""","'":"'"},h=function(e){return d[e]};function f(e,t){if(t){if(s.test(e))return e.replace(u,h)}else if(l.test(e))return e.replace(c,h);return e}var p=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function g(e){return e.replace(p,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var v=/(^|[^\[])\^/g;function m(e,t){e=e.source||e,t=t||"";var n={replace:function(t,i){return i=(i=i.source||i).replace(v,"$1"),e=e.replace(t,i),n},getRegex:function(){return new RegExp(e,t)}};return n}var _=/[^\w:]/g,y=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function b(e,t,n){if(e){var i;try{i=decodeURIComponent(g(n)).replace(_,"").toLowerCase()}catch(r){return null}if(0===i.indexOf("javascript:")||0===i.indexOf("vbscript:")||0===i.indexOf("data:"))return null}t&&!y.test(n)&&(n=x(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(r){return null}return n}var w={},C=/^[^:]+:\/*[^/]*$/,k=/^([^:]+:)[\s\S]*$/,S=/^([^:]+:\/*[^/]*)[\s\S]*$/;function x(e,t){w[" "+e]||(C.test(e)?w[" "+e]=e+"/":w[" "+e]=D(e,"/",!0));var n=-1===(e=w[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(k,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(S,"$1")+t:e+t}function L(e){for(var t,n,i=1;i<arguments.length;i++)for(n in t=arguments[i])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}function E(e,t){var n=e.replace(/\|/g,(function(e,t,n){for(var i=!1,r=t;--r>=0&&"\\"===n[r];)i=!i;return i?"|":" |"})).split(/ \|/),i=0;if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;i<n.length;i++)n[i]=n[i].trim().replace(/\\\|/g,"|");return n}function D(e,t,n){var i=e.length;if(0===i)return"";for(var r=0;r<i;){var o=e.charAt(i-r-1);if(o!==t||n){if(o===t||!n)break;r++}else r++}return e.substr(0,i-r)}function N(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=e.length,i=0,r=0;r<n;r++)if("\\"===e[r])r++;else if(e[r]===t[0])i++;else if(e[r]===t[1]&&--i<0)return r;return-1}function M(e){e&&e.sanitize&&!e.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")}function T(e,t){if(t<1)return"";for(var n="";t>1;)1&t&&(n+=e),t>>=1,e+=e;return n+e}var I={escape:f,unescape:g,edit:m,cleanUrl:b,resolveUrl:x,noopTest:{exec:function(){}},merge:L,splitCells:E,rtrim:D,findClosingBracket:N,checkSanitizeDeprecation:M,repeatString:T},O=a.defaults,A=I.rtrim,R=I.splitCells,P=I.escape,Z=I.findClosingBracket;function F(e,t,n){var i=t.href,r=t.title?P(t.title):null,o=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:n,href:i,title:r,text:o}:{type:"image",raw:n,href:i,title:r,text:P(o)}}function j(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var i=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=i.length?e.slice(i.length):e})).join("\n")}var H=function(){function e(e){this.options=e||O}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e){var t=this.rules.block.code.exec(e);if(t){var n=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:A(n,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],i=j(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:i}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var i=A(n,"#");this.options.pedantic?n=i.trim():i&&!/ $/.test(i)||(n=i.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n}}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var n={type:"table",header:R(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(n.header.length===n.align.length){var i,r=n.align.length;for(i=0;i<r;i++)/^ *-+: *$/.test(n.align[i])?n.align[i]="right":/^ *:-+: *$/.test(n.align[i])?n.align[i]="center":/^ *:-+ *$/.test(n.align[i])?n.align[i]="left":n.align[i]=null;for(r=n.cells.length,i=0;i<r;i++)n.cells[i]=R(n.cells[i],n.header.length);return n}}},t.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},t.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var n=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],text:n}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var n,i,r,o,a,s,u,l,c=t[0],d=t[2],h=d.length>1,f={type:"list",raw:c,ordered:h,start:h?+d.slice(0,-1):"",loose:!1,items:[]},p=t[0].match(this.rules.block.item),g=!1,v=p.length;r=this.rules.block.listItemStart.exec(p[0]);for(var m=0;m<v;m++){if(c=n=p[m],m!==v-1){if(o=this.rules.block.listItemStart.exec(p[m+1]),this.options.pedantic?o[1].length>r[1].length:o[1].length>r[0].length||o[1].length>3){p.splice(m,2,p[m]+"\n"+p[m+1]),m--,v--;continue}(!this.options.pedantic||this.options.smartLists?o[2][o[2].length-1]!==d[d.length-1]:h===(1===o[2].length))&&(a=p.slice(m+1).join("\n"),f.raw=f.raw.substring(0,f.raw.length-a.length),m=v-1),r=o}i=n.length,~(n=n.replace(/^ *([*+-]|\d+[.)]) ?/,"")).indexOf("\n ")&&(i-=n.length,n=this.options.pedantic?n.replace(/^ {1,4}/gm,""):n.replace(new RegExp("^ {1,"+i+"}","gm"),"")),s=g||/\n\n(?!\s*$)/.test(n),m!==v-1&&(g="\n"===n.charAt(n.length-1),s||(s=g)),s&&(f.loose=!0),this.options.gfm&&(l=void 0,(u=/^\[[ xX]\] /.test(n))&&(l=" "!==n[1],n=n.replace(/^\[[ xX]\] +/,""))),f.items.push({type:"list_item",raw:c,task:u,checked:l,loose:s,text:n})}return f}},t.html=function(e){var t=this.rules.block.html.exec(e);if(t)return{type:this.options.sanitize?"paragraph":"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):P(t[0]):t[0]}},t.def=function(e){var t=this.rules.block.def.exec(e);if(t)return t[3]&&(t[3]=t[3].substring(1,t[3].length-1)),{tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}},t.table=function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:R(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var i,r=n.align.length;for(i=0;i<r;i++)/^ *-+: *$/.test(n.align[i])?n.align[i]="right":/^ *:-+: *$/.test(n.align[i])?n.align[i]="center":/^ *:-+ *$/.test(n.align[i])?n.align[i]="left":n.align[i]=null;for(r=n.cells.length,i=0;i<r;i++)n.cells[i]=R(n.cells[i].replace(/^ *\| *| *\| *$/g,""),n.header.length);return n}}},t.lheading=function(e){var t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1]}},t.paragraph=function(e){var t=this.rules.block.paragraph.exec(e);if(t)return{type:"paragraph",raw:t[0],text:"\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1]}},t.text=function(e){var t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0]}},t.escape=function(e){var t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:P(t[1])}},t.tag=function(e,t,n){var i=this.rules.inline.tag.exec(e);if(i)return!t&&/^<a /i.test(i[0])?t=!0:t&&/^<\/a>/i.test(i[0])&&(t=!1),!n&&/^<(pre|code|kbd|script)(\s|>)/i.test(i[0])?n=!0:n&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(i[0])&&(n=!1),{type:this.options.sanitize?"text":"html",raw:i[0],inLink:t,inRawBlock:n,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):P(i[0]):i[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^</.test(n)){if(!/>$/.test(n))return;var i=A(n.slice(0,-1),"\\");if((n.length-i.length)%2===0)return}else{var r=Z(t[2],"()");if(r>-1){var o=(0===t[0].indexOf("!")?5:4)+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,o).trim(),t[3]=""}}var a=t[2],s="";if(this.options.pedantic){var u=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);u&&(a=u[1],s=u[3])}else s=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^</.test(a)&&(a=this.options.pedantic&&!/>$/.test(n)?a.slice(1):a.slice(1,-1)),F(t,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:s?s.replace(this.rules.inline._escapes,"$1"):s},t[0])}},t.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var i=(n[2]||n[1]).replace(/\s+/g," ");if(!(i=t[i.toLowerCase()])||!i.href){var r=n[0].charAt(0);return{type:"text",raw:r,text:r}}return F(n,i,n[0])}},t.emStrong=function(e,t,n){void 0===n&&(n="");var i=this.rules.inline.emStrong.lDelim.exec(e);if(i&&(!i[3]||!n.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=i[1]||i[2]||"";if(!r||r&&(""===n||this.rules.inline.punctuation.exec(n))){var o,a,s=i[0].length-1,u=s,l=0,c="*"===i[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);null!=(i=c.exec(t));)if(o=i[1]||i[2]||i[3]||i[4]||i[5]||i[6])if(a=o.length,i[3]||i[4])u+=a;else if(!((i[5]||i[6])&&s%3)||(s+a)%3){if(!((u-=a)>0)){if(u+l-a<=0&&!t.slice(c.lastIndex).match(c)&&(a=Math.min(a,a+u+l)),Math.min(s,a)%2)return{type:"em",raw:e.slice(0,s+i.index+a+1),text:e.slice(1,s+i.index+a)};if(Math.min(s,a)%2===0)return{type:"strong",raw:e.slice(0,s+i.index+a+1),text:e.slice(2,s+i.index+a-1)}}}else l+=a}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),i=/[^ ]/.test(n),r=/^ /.test(n)&&/ $/.test(n);return i&&r&&(n=n.substring(1,n.length-1)),n=P(n,!0),{type:"codespan",raw:t[0],text:n}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2]}},t.autolink=function(e,t){var n,i,r=this.rules.inline.autolink.exec(e);if(r)return i="@"===r[2]?"mailto:"+(n=P(this.options.mangle?t(r[1]):r[1])):n=P(r[1]),{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}},t.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var i,r;if("@"===n[2])r="mailto:"+(i=P(this.options.mangle?t(n[0]):n[0]));else{var o;do{o=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(o!==n[0]);i=P(n[0]),r="www."===n[1]?"http://"+i:i}return{type:"link",raw:n[0],text:i,href:r,tokens:[{type:"text",raw:i,text:i}]}}},t.inlineText=function(e,t,n){var i,r=this.rules.inline.text.exec(e);if(r)return i=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):P(r[0]):r[0]:P(this.options.smartypants?n(r[0]):r[0]),{type:"text",raw:r[0],text:i}},e}(),B=I.noopTest,z=I.edit,W=I.merge,V={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?! {0,3}bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:B,table:B,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};V.def=z(V.def).replace("label",V._label).replace("title",V._title).getRegex(),V.bullet=/(?:[*+-]|\d{1,9}[.)])/,V.item=/^( *)(bull) ?[^\n]*(?:\n(?! *bull ?)[^\n]*)*/,V.item=z(V.item,"gm").replace(/bull/g,V.bullet).getRegex(),V.listItemStart=z(/^( *)(bull)/).replace("bull",V.bullet).getRegex(),V.list=z(V.list).replace(/bull/g,V.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+V.def.source+")").getRegex(),V._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",V._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,V.html=z(V.html,"i").replace("comment",V._comment).replace("tag",V._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),V.paragraph=z(V._paragraph).replace("hr",V.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",V._tag).getRegex(),V.blockquote=z(V.blockquote).replace("paragraph",V.paragraph).getRegex(),V.normal=W({},V),V.gfm=W({},V.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n {0,3}([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n {0,3}\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),V.gfm.nptable=z(V.gfm.nptable).replace("hr",V.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",V._tag).getRegex(),V.gfm.table=z(V.gfm.table).replace("hr",V.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",V._tag).getRegex(),V.pedantic=W({},V.normal,{html:z("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",V._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:B,paragraph:z(V.normal._paragraph).replace("hr",V.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",V.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var Y={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:B,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/\_\_[^_]*?\*[^_]*?\_\_|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/\*\*[^*]*?\_[^*]*?\*\*|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:B,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/,_punctuation:"!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~"};Y.punctuation=z(Y.punctuation).replace(/punctuation/g,Y._punctuation).getRegex(),Y.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,Y.escapedEmSt=/\\\*|\\_/g,Y._comment=z(V._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),Y.emStrong.lDelim=z(Y.emStrong.lDelim).replace(/punct/g,Y._punctuation).getRegex(),Y.emStrong.rDelimAst=z(Y.emStrong.rDelimAst,"g").replace(/punct/g,Y._punctuation).getRegex(),Y.emStrong.rDelimUnd=z(Y.emStrong.rDelimUnd,"g").replace(/punct/g,Y._punctuation).getRegex(),Y._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,Y._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,Y._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,Y.autolink=z(Y.autolink).replace("scheme",Y._scheme).replace("email",Y._email).getRegex(),Y._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,Y.tag=z(Y.tag).replace("comment",Y._comment).replace("attribute",Y._attribute).getRegex(),Y._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Y._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,Y._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,Y.link=z(Y.link).replace("label",Y._label).replace("href",Y._href).replace("title",Y._title).getRegex(),Y.reflink=z(Y.reflink).replace("label",Y._label).getRegex(),Y.reflinkSearch=z(Y.reflinkSearch,"g").replace("reflink",Y.reflink).replace("nolink",Y.nolink).getRegex(),Y.normal=W({},Y),Y.pedantic=W({},Y.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:z(/^!?\[(label)\]\((.*?)\)/).replace("label",Y._label).getRegex(),reflink:z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Y._label).getRegex()}),Y.gfm=W({},Y.normal,{escape:z(Y.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/}),Y.gfm.url=z(Y.gfm.url,"i").replace("email",Y.gfm._extended_email).getRegex(),Y.breaks=W({},Y.gfm,{br:z(Y.br).replace("{2,}","*").getRegex(),text:z(Y.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var U={block:V,inline:Y},K=a.defaults,q=U.block,G=U.inline,$=I.repeatString;function Q(e){return e.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201c").replace(/"/g,"\u201d").replace(/\.{3}/g,"\u2026")}function X(e){var t,n,i="",r=e.length;for(t=0;t<r;t++)n=e.charCodeAt(t),Math.random()>.5&&(n="x"+n.toString(16)),i+="&#"+n+";";return i}var J=function(){function e(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||K,this.options.tokenizer=this.options.tokenizer||new H,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:q.normal,inline:G.normal};this.options.pedantic?(t.block=q.pedantic,t.inline=G.pedantic):this.options.gfm&&(t.block=q.gfm,this.options.breaks?t.inline=G.breaks:t.inline=G.gfm),this.tokenizer.rules=t}e.lex=function(t,n){return new e(n).lex(t)},e.lexInline=function(t,n){return new e(n).inlineTokens(t)};var n=e.prototype;return n.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},n.blockTokens=function(e,t,n){var i,r,o,a;for(void 0===t&&(t=[]),void 0===n&&(n=!0),this.options.pedantic&&(e=e.replace(/^ +$/gm,""));e;)if(i=this.tokenizer.space(e))e=e.substring(i.raw.length),i.type&&t.push(i);else if(i=this.tokenizer.code(e))e=e.substring(i.raw.length),(a=t[t.length-1])&&"paragraph"===a.type?(a.raw+="\n"+i.raw,a.text+="\n"+i.text):t.push(i);else if(i=this.tokenizer.fences(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.heading(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.nptable(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.hr(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.blockquote(e))e=e.substring(i.raw.length),i.tokens=this.blockTokens(i.text,[],n),t.push(i);else if(i=this.tokenizer.list(e)){for(e=e.substring(i.raw.length),o=i.items.length,r=0;r<o;r++)i.items[r].tokens=this.blockTokens(i.items[r].text,[],!1);t.push(i)}else if(i=this.tokenizer.html(e))e=e.substring(i.raw.length),t.push(i);else if(n&&(i=this.tokenizer.def(e)))e=e.substring(i.raw.length),this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title});else if(i=this.tokenizer.table(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.lheading(e))e=e.substring(i.raw.length),t.push(i);else if(n&&(i=this.tokenizer.paragraph(e)))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.text(e))e=e.substring(i.raw.length),(a=t[t.length-1])&&"text"===a.type?(a.raw+="\n"+i.raw,a.text+="\n"+i.text):t.push(i);else if(e){var s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}throw new Error(s)}return t},n.inline=function(e){var t,n,i,r,o,a,s=e.length;for(t=0;t<s;t++)switch((a=e[t]).type){case"paragraph":case"text":case"heading":a.tokens=[],this.inlineTokens(a.text,a.tokens);break;case"table":for(a.tokens={header:[],cells:[]},r=a.header.length,n=0;n<r;n++)a.tokens.header[n]=[],this.inlineTokens(a.header[n],a.tokens.header[n]);for(r=a.cells.length,n=0;n<r;n++)for(o=a.cells[n],a.tokens.cells[n]=[],i=0;i<o.length;i++)a.tokens.cells[n][i]=[],this.inlineTokens(o[i],a.tokens.cells[n][i]);break;case"blockquote":this.inline(a.tokens);break;case"list":for(r=a.items.length,n=0;n<r;n++)this.inline(a.items[n].tokens)}return e},n.inlineTokens=function(e,t,n,i){var r,o;void 0===t&&(t=[]),void 0===n&&(n=!1),void 0===i&&(i=!1);var a,s,u,l=e;if(this.tokens.links){var c=Object.keys(this.tokens.links);if(c.length>0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(l));)c.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,a.index)+"["+$("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(l));)l=l.slice(0,a.index)+"["+$("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(a=this.tokenizer.rules.inline.escapedEmSt.exec(l));)l=l.slice(0,a.index)+"++"+l.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;e;)if(s||(u=""),s=!1,r=this.tokenizer.escape(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.tag(e,n,i)){e=e.substring(r.raw.length),n=r.inLink,i=r.inRawBlock;var d=t[t.length-1];d&&"text"===r.type&&"text"===d.type?(d.raw+=r.raw,d.text+=r.text):t.push(r)}else if(r=this.tokenizer.link(e))e=e.substring(r.raw.length),"link"===r.type&&(r.tokens=this.inlineTokens(r.text,[],!0,i)),t.push(r);else if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);var h=t[t.length-1];"link"===r.type?(r.tokens=this.inlineTokens(r.text,[],!0,i),t.push(r)):h&&"text"===r.type&&"text"===h.type?(h.raw+=r.raw,h.text+=r.text):t.push(r)}else if(r=this.tokenizer.emStrong(e,l,u))e=e.substring(r.raw.length),r.tokens=this.inlineTokens(r.text,[],n,i),t.push(r);else if(r=this.tokenizer.codespan(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.br(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.del(e))e=e.substring(r.raw.length),r.tokens=this.inlineTokens(r.text,[],n,i),t.push(r);else if(r=this.tokenizer.autolink(e,X))e=e.substring(r.raw.length),t.push(r);else if(n||!(r=this.tokenizer.url(e,X))){if(r=this.tokenizer.inlineText(e,i,Q))e=e.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(u=r.raw.slice(-1)),s=!0,(o=t[t.length-1])&&"text"===o.type?(o.raw+=r.raw,o.text+=r.text):t.push(r);else if(e){var f="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(f);break}throw new Error(f)}}else e=e.substring(r.raw.length),t.push(r);return t},t(e,null,[{key:"rules",get:function(){return{block:q,inline:G}}}]),e}(),ee=a.defaults,te=I.cleanUrl,ne=I.escape,ie=function(){function e(e){this.options=e||ee}var t=e.prototype;return t.code=function(e,t,n){var i=(t||"").match(/\S*/)[0];if(this.options.highlight){var r=this.options.highlight(e,i);null!=r&&r!==e&&(n=!0,e=r)}return e=e.replace(/\n$/,"")+"\n",i?'<pre><code class="'+this.options.langPrefix+ne(i,!0)+'">'+(n?e:ne(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:ne(e,!0))+"</code></pre>\n"},t.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},t.html=function(e){return e},t.heading=function(e,t,n,i){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+i.slug(n)+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},t.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},t.list=function(e,t,n){var i=t?"ol":"ul";return"<"+i+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+i+">\n"},t.listitem=function(e){return"<li>"+e+"</li>\n"},t.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},t.paragraph=function(e){return"<p>"+e+"</p>\n"},t.table=function(e,t){return t&&(t="<tbody>"+t+"</tbody>"),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"},t.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},t.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"</"+n+">\n"},t.strong=function(e){return"<strong>"+e+"</strong>"},t.em=function(e){return"<em>"+e+"</em>"},t.codespan=function(e){return"<code>"+e+"</code>"},t.br=function(){return this.options.xhtml?"<br/>":"<br>"},t.del=function(e){return"<del>"+e+"</del>"},t.link=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var i='<a href="'+ne(e)+'"';return t&&(i+=' title="'+t+'"'),i+=">"+n+"</a>"},t.image=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var i='<img src="'+e+'" alt="'+n+'"';return t&&(i+=' title="'+t+'"'),i+=this.options.xhtml?"/>":">"},t.text=function(e){return e},e}(),re=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),oe=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var n=e,i=0;if(this.seen.hasOwnProperty(n)){i=this.seen[e];do{n=e+"-"+ ++i}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=i,this.seen[n]=0),n},t.slug=function(e,t){void 0===t&&(t={});var n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)},e}(),ae=a.defaults,se=I.unescape,ue=function(){function e(e){this.options=e||ae,this.options.renderer=this.options.renderer||new ie,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new re,this.slugger=new oe}e.parse=function(t,n){return new e(n).parse(t)},e.parseInline=function(t,n){return new e(n).parseInline(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var n,i,r,o,a,s,u,l,c,d,h,f,p,g,v,m,_,y,b="",w=e.length;for(n=0;n<w;n++)switch((d=e[n]).type){case"space":continue;case"hr":b+=this.renderer.hr();continue;case"heading":b+=this.renderer.heading(this.parseInline(d.tokens),d.depth,se(this.parseInline(d.tokens,this.textRenderer)),this.slugger);continue;case"code":b+=this.renderer.code(d.text,d.lang,d.escaped);continue;case"table":for(l="",u="",o=d.header.length,i=0;i<o;i++)u+=this.renderer.tablecell(this.parseInline(d.tokens.header[i]),{header:!0,align:d.align[i]});for(l+=this.renderer.tablerow(u),c="",o=d.cells.length,i=0;i<o;i++){for(u="",a=(s=d.tokens.cells[i]).length,r=0;r<a;r++)u+=this.renderer.tablecell(this.parseInline(s[r]),{header:!1,align:d.align[r]});c+=this.renderer.tablerow(u)}b+=this.renderer.table(l,c);continue;case"blockquote":c=this.parse(d.tokens),b+=this.renderer.blockquote(c);continue;case"list":for(h=d.ordered,f=d.start,p=d.loose,o=d.items.length,c="",i=0;i<o;i++)m=(v=d.items[i]).checked,_=v.task,g="",v.task&&(y=this.renderer.checkbox(m),p?v.tokens.length>0&&"text"===v.tokens[0].type?(v.tokens[0].text=y+" "+v.tokens[0].text,v.tokens[0].tokens&&v.tokens[0].tokens.length>0&&"text"===v.tokens[0].tokens[0].type&&(v.tokens[0].tokens[0].text=y+" "+v.tokens[0].tokens[0].text)):v.tokens.unshift({type:"text",text:y}):g+=y),g+=this.parse(v.tokens,p),c+=this.renderer.listitem(g,_,m);b+=this.renderer.list(c,h,f);continue;case"html":b+=this.renderer.html(d.text);continue;case"paragraph":b+=this.renderer.paragraph(this.parseInline(d.tokens));continue;case"text":for(c=d.tokens?this.parseInline(d.tokens):d.text;n+1<w&&"text"===e[n+1].type;)c+="\n"+((d=e[++n]).tokens?this.parseInline(d.tokens):d.text);b+=t?this.renderer.paragraph(c):c;continue;default:var C='Token with "'+d.type+'" type was not found.';if(this.options.silent)return void console.error(C);throw new Error(C)}return b},t.parseInline=function(e,t){t=t||this.renderer;var n,i,r="",o=e.length;for(n=0;n<o;n++)switch((i=e[n]).type){case"escape":case"text":r+=t.text(i.text);break;case"html":r+=t.html(i.text);break;case"link":r+=t.link(i.href,i.title,this.parseInline(i.tokens,t));break;case"image":r+=t.image(i.href,i.title,i.text);break;case"strong":r+=t.strong(this.parseInline(i.tokens,t));break;case"em":r+=t.em(this.parseInline(i.tokens,t));break;case"codespan":r+=t.codespan(i.text);break;case"br":r+=t.br();break;case"del":r+=t.del(this.parseInline(i.tokens,t));break;default:var a='Token with "'+i.type+'" type was not found.';if(this.options.silent)return void console.error(a);throw new Error(a)}return r},e}(),le=I.merge,ce=I.checkSanitizeDeprecation,de=I.escape,he=a.getDefaults,fe=a.changeDefaults,pe=a.defaults;function ge(e,t,n){if("undefined"===typeof e||null===e)throw new Error("marked(): input parameter is undefined or null");if("string"!==typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if("function"===typeof t&&(n=t,t=null),t=le({},ge.defaults,t||{}),ce(t),n){var i,r=t.highlight;try{i=J.lex(e,t)}catch(u){return n(u)}var o=function(e){var o;if(!e)try{o=ue.parse(i,t)}catch(u){e=u}return t.highlight=r,e?n(e):n(null,o)};if(!r||r.length<3)return o();if(delete t.highlight,!i.length)return o();var a=0;return ge.walkTokens(i,(function(e){"code"===e.type&&(a++,setTimeout((function(){r(e.text,e.lang,(function(t,n){if(t)return o(t);null!=n&&n!==e.text&&(e.text=n,e.escaped=!0),0===--a&&o()}))}),0))})),void(0===a&&o())}try{var s=J.lex(e,t);return t.walkTokens&&ge.walkTokens(s,t.walkTokens),ue.parse(s,t)}catch(u){if(u.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+de(u.message+"",!0)+"</pre>";throw u}}return ge.options=ge.setOptions=function(e){return le(ge.defaults,e),fe(ge.defaults),ge},ge.getDefaults=he,ge.defaults=pe,ge.use=function(e){var t=le({},e);if(e.renderer&&function(){var n=ge.defaults.renderer||new ie,i=function(t){var i=n[t];n[t]=function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];var s=e.renderer[t].apply(n,o);return!1===s&&(s=i.apply(n,o)),s}};for(var r in e.renderer)i(r);t.renderer=n}(),e.tokenizer&&function(){var n=ge.defaults.tokenizer||new H,i=function(t){var i=n[t];n[t]=function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];var s=e.tokenizer[t].apply(n,o);return!1===s&&(s=i.apply(n,o)),s}};for(var r in e.tokenizer)i(r);t.tokenizer=n}(),e.walkTokens){var n=ge.defaults.walkTokens;t.walkTokens=function(t){e.walkTokens(t),n&&n(t)}}ge.setOptions(t)},ge.walkTokens=function(e,t){for(var n,i=r(e);!(n=i()).done;){var o=n.value;switch(t(o),o.type){case"table":for(var a,s=r(o.tokens.header);!(a=s()).done;){var u=a.value;ge.walkTokens(u,t)}for(var l,c=r(o.tokens.cells);!(l=c()).done;)for(var d,h=r(l.value);!(d=h()).done;){var f=d.value;ge.walkTokens(f,t)}break;case"list":ge.walkTokens(o.items,t);break;default:o.tokens&&ge.walkTokens(o.tokens,t)}}},ge.parseInline=function(e,t){if("undefined"===typeof e||null===e)throw new Error("marked.parseInline(): input parameter is undefined or null");if("string"!==typeof e)throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");t=le({},ge.defaults,t||{}),ce(t);try{var n=J.lexInline(e,t);return t.walkTokens&&ge.walkTokens(n,t.walkTokens),ue.parseInline(n,t)}catch(i){if(i.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+de(i.message+"",!0)+"</pre>";throw i}},ge.Parser=ue,ge.parser=ue.parse,ge.Renderer=ie,ge.TextRenderer=re,ge.Lexer=J,ge.lexer=J.lex,ge.Tokenizer=H,ge.Slugger=oe,ge.parse=ge,ge}()},83312:function(e,t,n){"use strict";n.d(t,{Q:function(){return o}});var i=n(27877),r=n(67775);function o(e){var t=JSON.parse(e);return t=a(t)}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!e||t>200)return e;if("object"===typeof e){switch(e.$mid){case 1:return r.o.revive(e);case 2:return new RegExp(e.source,e.flags)}if(e instanceof i.KN||e instanceof Uint8Array)return e;if(Array.isArray(e))for(var n=0;n<e.length;++n)e[n]=a(e[n],t+1);else for(var o in e)Object.hasOwnProperty.call(e,o)&&(e[o]=a(e[o],t+1))}return e}},55585:function(e,t,n){"use strict";n.d(t,{Gi:function(){return l},WX:function(){return u},lg:function(){return i}});var i,r=n(15671),o=n(43144),a=n(67775),s=n(30487);!function(e){e.inMemory="inmemory",e.vscode="vscode",e.internal="private",e.walkThrough="walkThrough",e.walkThroughSnippet="walkThroughSnippet",e.http="http",e.https="https",e.file="file",e.mailto="mailto",e.untitled="untitled",e.data="data",e.command="command",e.vscodeRemote="vscode-remote",e.vscodeRemoteResource="vscode-remote-resource",e.userData="vscode-userdata",e.vscodeCustomEditor="vscode-custom-editor",e.vscodeNotebook="vscode-notebook",e.vscodeNotebookCell="vscode-notebook-cell",e.vscodeNotebookCellMetadata="vscode-notebook-cell-metadata",e.vscodeSettings="vscode-settings",e.vscodeWorkspaceTrust="vscode-workspace-trust",e.vscodeTerminal="vscode-terminal",e.webviewPanel="webview-panel",e.vscodeWebview="vscode-webview",e.extension="extension",e.vscodeFileResource="vscode-file",e.tmp="tmp"}(i||(i={}));var u=new(function(){function e(){(0,r.Z)(this,e),this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema="http",this._delegate=null}return(0,o.Z)(e,[{key:"setPreferredWebSchema",value:function(e){this._preferredWebSchema=e}},{key:"rewrite",value:function(e){if(this._delegate)return this._delegate(e);var t=e.authority,n=this._hosts[t];n&&-1!==n.indexOf(":")&&(n="[".concat(n,"]"));var r=this._ports[t],o=this._connectionTokens[t],u="path=".concat(encodeURIComponent(e.path));return"string"===typeof o&&(u+="&tkn=".concat(encodeURIComponent(o))),a.o.from({scheme:s.$L?this._preferredWebSchema:i.vscodeRemoteResource,authority:"".concat(n,":").concat(r),path:"/vscode-remote-resource",query:u})}}]),e}()),l=new(function(){function e(){(0,r.Z)(this,e),this.FALLBACK_AUTHORITY="vscode-app"}return(0,o.Z)(e,[{key:"asBrowserUri",value:function(e,t,n){var r=this.toUri(e,t);return r.scheme===i.vscodeRemote?u.rewrite(r):s.tY&&(n||s.MM)&&r.scheme===i.file?r.with({scheme:i.vscodeFileResource,authority:r.authority||this.FALLBACK_AUTHORITY,query:null,fragment:null}):r}},{key:"toUri",value:function(e,t){return a.o.isUri(e)?e:a.o.parse(t.toUrl(e))}}]),e}())},5265:function(e,t,n){"use strict";n.d(t,{n:function(){return a},u:function(){return o}});var i=n(15671),r=n(43144);function o(e,t,n){return Math.min(Math.max(e,t),n)}var a=function(){function e(){(0,i.Z)(this,e),this._n=1,this._val=0}return(0,r.Z)(e,[{key:"update",value:function(e){return this._val=this._val+(e-this._val)/this._n,this._n+=1,this}},{key:"value",get:function(){return this._val}}]),e}()},10405:function(e,t,n){"use strict";n.d(t,{CJ:function(){return h},I8:function(){return o},_A:function(){return a},fS:function(){return d},jB:function(){return c},rs:function(){return u}});var i=n(37762),r=n(25941);function o(e){if(!e||"object"!==typeof e)return e;if(e instanceof RegExp)return e;var t=Array.isArray(e)?[]:{};return Object.keys(e).forEach((function(n){e[n]&&"object"===typeof e[n]?t[n]=o(e[n]):t[n]=e[n]})),t}function a(e){if(!e||"object"!==typeof e)return e;for(var t=[e];t.length>0;){var n=t.shift();for(var i in Object.freeze(n),n)if(s.call(n,i)){var r=n[i];"object"!==typeof r||Object.isFrozen(r)||t.push(r)}}return e}var s=Object.prototype.hasOwnProperty;function u(e,t){return l(e,t,new Set)}function l(e,t,n){if((0,r.Jp)(e))return e;var o=t(e);if("undefined"!==typeof o)return o;if((0,r.kJ)(e)){var a,u=[],c=(0,i.Z)(e);try{for(c.s();!(a=c.n()).done;){var d=a.value;u.push(l(d,t,n))}}catch(p){c.e(p)}finally{c.f()}return u}if((0,r.Kn)(e)){if(n.has(e))throw new Error("Cannot clone recursive data-structure");n.add(e);var h={};for(var f in e)s.call(e,f)&&(h[f]=l(e[f],t,n));return n.delete(e),h}return e}function c(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return(0,r.Kn)(e)?((0,r.Kn)(t)&&Object.keys(t).forEach((function(i){i in e?n&&((0,r.Kn)(e[i])&&(0,r.Kn)(t[i])?c(e[i],t[i],n):e[i]=t[i]):e[i]=t[i]})),e):t}function d(e,t){if(e===t)return!0;if(null===e||void 0===e||null===t||void 0===t)return!1;if(typeof e!==typeof t)return!1;if("object"!==typeof e)return!1;if(Array.isArray(e)!==Array.isArray(t))return!1;var n,i;if(Array.isArray(e)){if(e.length!==t.length)return!1;for(n=0;n<e.length;n++)if(!d(e[n],t[n]))return!1}else{var r=[];for(i in e)r.push(i);r.sort();var o=[];for(i in t)o.push(i);if(o.sort(),!d(r,o))return!1;for(n=0;n<r.length;n++)if(!d(e[r[n]],t[r[n]]))return!1}return!0}function h(e,t,n){var i=t(e);return"undefined"===typeof i?n:i}},36912:function(e,t,n){"use strict";n.d(t,{EZ:function(){return A},XX:function(){return O},DZ:function(){return R},Fv:function(){return M},KR:function(){return N},Gf:function(){return I},DB:function(){return T},ir:function(){return P},Ku:function(){return D}});var i,r=n(43144),o=n(15671),a=n(60136),s=n(43668),u=n(28664),l=n(30487);if("undefined"!==typeof l.li.vscode&&"undefined"!==typeof l.li.vscode.process){var c=l.li.vscode.process;i={get platform(){return c.platform},get env(){return c.env},cwd:function(){return c.cwd()},nextTick:function(e){return(0,l.xS)(e)}}}else i="undefined"!==typeof process?{get platform(){return process.platform},get env(){return{NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0,REACT_APP_BACKEND:"http://localhost:8765"}},cwd:function(){return{NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0,REACT_APP_BACKEND:"http://localhost:8765"}.VSCODE_CWD||process.cwd()},nextTick:function(e){return process.nextTick(e)}}:{get platform(){return l.ED?"win32":l.dz?"darwin":"linux"},nextTick:function(e){return(0,l.xS)(e)},get env(){return Object.create(null)},cwd:function(){return"/"}};var d=i.cwd,h=(i.env,i.platform),f=65,p=97,g=90,v=122,m=46,_=47,y=92,b=58,w=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(e,i,r){var a,s;(0,o.Z)(this,n),"string"===typeof i&&0===i.indexOf("not ")?(s="must not be",i=i.replace(/^not /,"")):s="must be";var u=-1!==e.indexOf(".")?"property":"argument",l='The "'.concat(e,'" ').concat(u," ").concat(s," of type ").concat(i);return l+=". Received type ".concat(typeof r),(a=t.call(this,l)).code="ERR_INVALID_ARG_TYPE",a}return(0,r.Z)(n)}((0,u.Z)(Error));function C(e,t){if("string"!==typeof e)throw new w(t,"string",e)}function k(e){return e===_||e===y}function S(e){return e===_}function x(e){return e>=f&&e<=g||e>=p&&e<=v}function L(e,t,n,i){for(var r="",o=0,a=-1,s=0,u=0,l=0;l<=e.length;++l){if(l<e.length)u=e.charCodeAt(l);else{if(i(u))break;u=_}if(i(u)){if(a===l-1||1===s);else if(2===s){if(r.length<2||2!==o||r.charCodeAt(r.length-1)!==m||r.charCodeAt(r.length-2)!==m){if(r.length>2){var c=r.lastIndexOf(n);-1===c?(r="",o=0):o=(r=r.slice(0,c)).length-1-r.lastIndexOf(n),a=l,s=0;continue}if(0!==r.length){r="",o=0,a=l,s=0;continue}}t&&(r+=r.length>0?"".concat(n,".."):"..",o=2)}else r.length>0?r+="".concat(n).concat(e.slice(a+1,l)):r=e.slice(a+1,l),o=l-a-1;a=l,s=0}else u===m&&-1!==s?++s:s=-1}return r}function E(e,t){if(null===t||"object"!==typeof t)throw new w("pathObject","Object",t);var n=t.dir||t.root,i=t.base||"".concat(t.name||"").concat(t.ext||"");return n?n===t.root?"".concat(n).concat(i):"".concat(n).concat(e).concat(i):i}var D={resolve:function(){for(var e="",t="",n=!1,i=arguments.length-1;i>=-1;i--){var r=void 0;if(i>=0){if(C(r=i<0||arguments.length<=i?void 0:arguments[i],"path"),0===r.length)continue}else 0===e.length?r=d():(void 0===(r={NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0,REACT_APP_BACKEND:"http://localhost:8765"}["=".concat(e)]||d())||r.slice(0,2).toLowerCase()!==e.toLowerCase()&&r.charCodeAt(2)===y)&&(r="".concat(e,"\\"));var o=r.length,a=0,s="",u=!1,l=r.charCodeAt(0);if(1===o)k(l)&&(a=1,u=!0);else if(k(l))if(u=!0,k(r.charCodeAt(1))){for(var c=2,h=c;c<o&&!k(r.charCodeAt(c));)c++;if(c<o&&c!==h){var f=r.slice(h,c);for(h=c;c<o&&k(r.charCodeAt(c));)c++;if(c<o&&c!==h){for(h=c;c<o&&!k(r.charCodeAt(c));)c++;c!==o&&c===h||(s="\\\\".concat(f,"\\").concat(r.slice(h,c)),a=c)}}}else a=1;else x(l)&&r.charCodeAt(1)===b&&(s=r.slice(0,2),a=2,o>2&&k(r.charCodeAt(2))&&(u=!0,a=3));if(s.length>0)if(e.length>0){if(s.toLowerCase()!==e.toLowerCase())continue}else e=s;if(n){if(e.length>0)break}else if(t="".concat(r.slice(a),"\\").concat(t),n=u,u&&e.length>0)break}return t=L(t,!n,"\\",k),n?"".concat(e,"\\").concat(t):"".concat(e).concat(t)||"."},normalize:function(e){C(e,"path");var t=e.length;if(0===t)return".";var n,i=0,r=!1,o=e.charCodeAt(0);if(1===t)return S(o)?"\\":e;if(k(o))if(r=!0,k(e.charCodeAt(1))){for(var a=2,s=a;a<t&&!k(e.charCodeAt(a));)a++;if(a<t&&a!==s){var u=e.slice(s,a);for(s=a;a<t&&k(e.charCodeAt(a));)a++;if(a<t&&a!==s){for(s=a;a<t&&!k(e.charCodeAt(a));)a++;if(a===t)return"\\\\".concat(u,"\\").concat(e.slice(s),"\\");a!==s&&(n="\\\\".concat(u,"\\").concat(e.slice(s,a)),i=a)}}}else i=1;else x(o)&&e.charCodeAt(1)===b&&(n=e.slice(0,2),i=2,t>2&&k(e.charCodeAt(2))&&(r=!0,i=3));var l=i<t?L(e.slice(i),!r,"\\",k):"";return 0!==l.length||r||(l="."),l.length>0&&k(e.charCodeAt(t-1))&&(l+="\\"),void 0===n?r?"\\".concat(l):l:r?"".concat(n,"\\").concat(l):"".concat(n).concat(l)},isAbsolute:function(e){C(e,"path");var t=e.length;if(0===t)return!1;var n=e.charCodeAt(0);return k(n)||t>2&&x(n)&&e.charCodeAt(1)===b&&k(e.charCodeAt(2))},join:function(){if(0===arguments.length)return".";for(var e,t,n=0;n<arguments.length;++n){var i=n<0||arguments.length<=n?void 0:arguments[n];C(i,"path"),i.length>0&&(void 0===e?e=t=i:e+="\\".concat(i))}if(void 0===e)return".";var r=!0,o=0;if("string"===typeof t&&k(t.charCodeAt(0))){++o;var a=t.length;a>1&&k(t.charCodeAt(1))&&(++o,a>2&&(k(t.charCodeAt(2))?++o:r=!1))}if(r){for(;o<e.length&&k(e.charCodeAt(o));)o++;o>=2&&(e="\\".concat(e.slice(o)))}return D.normalize(e)},relative:function(e,t){if(C(e,"from"),C(t,"to"),e===t)return"";var n=D.resolve(e),i=D.resolve(t);if(n===i)return"";if((e=n.toLowerCase())===(t=i.toLowerCase()))return"";for(var r=0;r<e.length&&e.charCodeAt(r)===y;)r++;for(var o=e.length;o-1>r&&e.charCodeAt(o-1)===y;)o--;for(var a=o-r,s=0;s<t.length&&t.charCodeAt(s)===y;)s++;for(var u=t.length;u-1>s&&t.charCodeAt(u-1)===y;)u--;for(var l=u-s,c=a<l?a:l,d=-1,h=0;h<c;h++){var f=e.charCodeAt(r+h);if(f!==t.charCodeAt(s+h))break;f===y&&(d=h)}if(h!==c){if(-1===d)return i}else{if(l>c){if(t.charCodeAt(s+h)===y)return i.slice(s+h+1);if(2===h)return i.slice(s+h)}a>c&&(e.charCodeAt(r+h)===y?d=h:2===h&&(d=3)),-1===d&&(d=0)}var p="";for(h=r+d+1;h<=o;++h)h!==o&&e.charCodeAt(h)!==y||(p+=0===p.length?"..":"\\..");return s+=d,p.length>0?"".concat(p).concat(i.slice(s,u)):(i.charCodeAt(s)===y&&++s,i.slice(s,u))},toNamespacedPath:function(e){if("string"!==typeof e)return e;if(0===e.length)return"";var t=D.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===y){if(t.charCodeAt(1)===y){var n=t.charCodeAt(2);if(63!==n&&n!==m)return"\\\\?\\UNC\\".concat(t.slice(2))}}else if(x(t.charCodeAt(0))&&t.charCodeAt(1)===b&&t.charCodeAt(2)===y)return"\\\\?\\".concat(t);return e},dirname:function(e){C(e,"path");var t=e.length;if(0===t)return".";var n=-1,i=0,r=e.charCodeAt(0);if(1===t)return k(r)?e:".";if(k(r)){if(n=i=1,k(e.charCodeAt(1))){for(var o=2,a=o;o<t&&!k(e.charCodeAt(o));)o++;if(o<t&&o!==a){for(a=o;o<t&&k(e.charCodeAt(o));)o++;if(o<t&&o!==a){for(a=o;o<t&&!k(e.charCodeAt(o));)o++;if(o===t)return e;o!==a&&(n=i=o+1)}}}}else x(r)&&e.charCodeAt(1)===b&&(i=n=t>2&&k(e.charCodeAt(2))?3:2);for(var s=-1,u=!0,l=t-1;l>=i;--l)if(k(e.charCodeAt(l))){if(!u){s=l;break}}else u=!1;if(-1===s){if(-1===n)return".";s=n}return e.slice(0,s)},basename:function(e,t){void 0!==t&&C(t,"ext"),C(e,"path");var n,i=0,r=-1,o=!0;if(e.length>=2&&x(e.charCodeAt(0))&&e.charCodeAt(1)===b&&(i=2),void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";var a=t.length-1,s=-1;for(n=e.length-1;n>=i;--n){var u=e.charCodeAt(n);if(k(u)){if(!o){i=n+1;break}}else-1===s&&(o=!1,s=n+1),a>=0&&(u===t.charCodeAt(a)?-1===--a&&(r=n):(a=-1,r=s))}return i===r?r=s:-1===r&&(r=e.length),e.slice(i,r)}for(n=e.length-1;n>=i;--n)if(k(e.charCodeAt(n))){if(!o){i=n+1;break}}else-1===r&&(o=!1,r=n+1);return-1===r?"":e.slice(i,r)},extname:function(e){C(e,"path");var t=0,n=-1,i=0,r=-1,o=!0,a=0;e.length>=2&&e.charCodeAt(1)===b&&x(e.charCodeAt(0))&&(t=i=2);for(var s=e.length-1;s>=t;--s){var u=e.charCodeAt(s);if(k(u)){if(!o){i=s+1;break}}else-1===r&&(o=!1,r=s+1),u===m?-1===n?n=s:1!==a&&(a=1):-1!==n&&(a=-1)}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===i+1?"":e.slice(n,r)},format:E.bind(null,"\\"),parse:function(e){C(e,"path");var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var n=e.length,i=0,r=e.charCodeAt(0);if(1===n)return k(r)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(k(r)){if(i=1,k(e.charCodeAt(1))){for(var o=2,a=o;o<n&&!k(e.charCodeAt(o));)o++;if(o<n&&o!==a){for(a=o;o<n&&k(e.charCodeAt(o));)o++;if(o<n&&o!==a){for(a=o;o<n&&!k(e.charCodeAt(o));)o++;o===n?i=o:o!==a&&(i=o+1)}}}}else if(x(r)&&e.charCodeAt(1)===b){if(n<=2)return t.root=t.dir=e,t;if(i=2,k(e.charCodeAt(2))){if(3===n)return t.root=t.dir=e,t;i=3}}i>0&&(t.root=e.slice(0,i));for(var s=-1,u=i,l=-1,c=!0,d=e.length-1,h=0;d>=i;--d)if(k(r=e.charCodeAt(d))){if(!c){u=d+1;break}}else-1===l&&(c=!1,l=d+1),r===m?-1===s?s=d:1!==h&&(h=1):-1!==s&&(h=-1);return-1!==l&&(-1===s||0===h||1===h&&s===l-1&&s===u+1?t.base=t.name=e.slice(u,l):(t.name=e.slice(u,s),t.base=e.slice(u,l),t.ext=e.slice(s,l))),t.dir=u>0&&u!==i?e.slice(0,u-1):t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},N={resolve:function(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var i=n>=0?n<0||arguments.length<=n?void 0:arguments[n]:d();C(i,"path"),0!==i.length&&(e="".concat(i,"/").concat(e),t=i.charCodeAt(0)===_)}return e=L(e,!t,"/",S),t?"/".concat(e):e.length>0?e:"."},normalize:function(e){if(C(e,"path"),0===e.length)return".";var t=e.charCodeAt(0)===_,n=e.charCodeAt(e.length-1)===_;return 0===(e=L(e,!t,"/",S)).length?t?"/":n?"./":".":(n&&(e+="/"),t?"/".concat(e):e)},isAbsolute:function(e){return C(e,"path"),e.length>0&&e.charCodeAt(0)===_},join:function(){if(0===arguments.length)return".";for(var e,t=0;t<arguments.length;++t){var n=t<0||arguments.length<=t?void 0:arguments[t];C(n,"path"),n.length>0&&(void 0===e?e=n:e+="/".concat(n))}return void 0===e?".":N.normalize(e)},relative:function(e,t){if(C(e,"from"),C(t,"to"),e===t)return"";if((e=N.resolve(e))===(t=N.resolve(t)))return"";for(var n=e.length,i=n-1,r=t.length-1,o=i<r?i:r,a=-1,s=0;s<o;s++){var u=e.charCodeAt(1+s);if(u!==t.charCodeAt(1+s))break;u===_&&(a=s)}if(s===o)if(r>o){if(t.charCodeAt(1+s)===_)return t.slice(1+s+1);if(0===s)return t.slice(1+s)}else i>o&&(e.charCodeAt(1+s)===_?a=s:0===s&&(a=0));var l="";for(s=1+a+1;s<=n;++s)s!==n&&e.charCodeAt(s)!==_||(l+=0===l.length?"..":"/..");return"".concat(l).concat(t.slice(1+a))},toNamespacedPath:function(e){return e},dirname:function(e){if(C(e,"path"),0===e.length)return".";for(var t=e.charCodeAt(0)===_,n=-1,i=!0,r=e.length-1;r>=1;--r)if(e.charCodeAt(r)===_){if(!i){n=r;break}}else i=!1;return-1===n?t?"/":".":t&&1===n?"//":e.slice(0,n)},basename:function(e,t){void 0!==t&&C(t,"ext"),C(e,"path");var n,i=0,r=-1,o=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";var a=t.length-1,s=-1;for(n=e.length-1;n>=0;--n){var u=e.charCodeAt(n);if(u===_){if(!o){i=n+1;break}}else-1===s&&(o=!1,s=n+1),a>=0&&(u===t.charCodeAt(a)?-1===--a&&(r=n):(a=-1,r=s))}return i===r?r=s:-1===r&&(r=e.length),e.slice(i,r)}for(n=e.length-1;n>=0;--n)if(e.charCodeAt(n)===_){if(!o){i=n+1;break}}else-1===r&&(o=!1,r=n+1);return-1===r?"":e.slice(i,r)},extname:function(e){C(e,"path");for(var t=-1,n=0,i=-1,r=!0,o=0,a=e.length-1;a>=0;--a){var s=e.charCodeAt(a);if(s!==_)-1===i&&(r=!1,i=a+1),s===m?-1===t?t=a:1!==o&&(o=1):-1!==t&&(o=-1);else if(!r){n=a+1;break}}return-1===t||-1===i||0===o||1===o&&t===i-1&&t===n+1?"":e.slice(t,i)},format:E.bind(null,"/"),parse:function(e){C(e,"path");var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var n,i=e.charCodeAt(0)===_;i?(t.root="/",n=1):n=0;for(var r=-1,o=0,a=-1,s=!0,u=e.length-1,l=0;u>=n;--u){var c=e.charCodeAt(u);if(c!==_)-1===a&&(s=!1,a=u+1),c===m?-1===r?r=u:1!==l&&(l=1):-1!==r&&(l=-1);else if(!s){o=u+1;break}}if(-1!==a){var d=0===o&&i?1:o;-1===r||0===l||1===l&&r===a-1&&r===o+1?t.base=t.name=e.slice(d,a):(t.name=e.slice(d,r),t.base=e.slice(d,a),t.ext=e.slice(r,a))}return o>0?t.dir=e.slice(0,o-1):i&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};N.win32=D.win32=D,N.posix=D.posix=N;var M="win32"===h?D.normalize:N.normalize,T="win32"===h?D.resolve:N.resolve,I="win32"===h?D.relative:N.relative,O="win32"===h?D.dirname:N.dirname,A="win32"===h?D.basename:N.basename,R="win32"===h?D.extname:N.extname,P="win32"===h?D.sep:N.sep},30487:function(e,t,n){"use strict";var i;n.d(t,{$L:function(){return S},ED:function(){return b},IJ:function(){return C},MM:function(){return v},OS:function(){return D},WE:function(){return L},dz:function(){return w},gn:function(){return x},li:function(){return h},r:function(){return T},tY:function(){return k},xS:function(){return E}});var r="en",o=!1,a=!1,s=!1,u=!1,l=!1,c=!1,d=void 0,h="object"===typeof self?self:"object"===typeof n.g?n.g:{},f=void 0;"undefined"!==typeof h.vscode&&"undefined"!==typeof h.vscode.process?f=h.vscode.process:"undefined"!==typeof process&&(f=process);var p="string"===typeof(null===(i=null===f||void 0===f?void 0:f.versions)||void 0===i?void 0:i.electron)&&"renderer"===f.type,g=p&&(null===f||void 0===f?void 0:f.sandboxed),v="string"===typeof function(){if(g)return"bypassHeatCheck";var e=null===f||void 0===f?void 0:f.env.VSCODE_BROWSER_CODE_LOADING;return"string"===typeof e?"none"===e||"code"===e||"bypassHeatCheck"===e||"bypassHeatCheckAndEagerCompile"===e?e:"bypassHeatCheck":void 0}();if("object"!==typeof navigator||p)if("object"===typeof f){o="win32"===f.platform,a="darwin"===f.platform,(s="linux"===f.platform)&&!!f.env.SNAP&&!!f.env.SNAP_REVISION,r,r;var m=f.env.VSCODE_NLS_CONFIG;if(m)try{var _=JSON.parse(m),y=_.availableLanguages["*"];_.locale,y||r,_._translationsConfigFile}catch(I){}u=!0}else console.error("Unable to resolve platform.");else o=(d=navigator.userAgent).indexOf("Windows")>=0,a=d.indexOf("Macintosh")>=0,c=(d.indexOf("Macintosh")>=0||d.indexOf("iPad")>=0||d.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,s=d.indexOf("Linux")>=0,l=!0,navigator.language;var b=o,w=a,C=s,k=u,S=l,x=c,L=d,E=function(){if(h.setImmediate)return h.setImmediate.bind(h);if("function"===typeof h.postMessage&&!h.importScripts){var e=[];h.addEventListener("message",(function(t){if(t.data&&t.data.vscodeSetImmediateId)for(var n=0,i=e.length;n<i;n++){var r=e[n];if(r.id===t.data.vscodeSetImmediateId)return e.splice(n,1),void r.callback()}}));var t=0;return function(n){var i=++t;e.push({id:i,callback:n}),h.postMessage({vscodeSetImmediateId:i},"*")}}if("function"===typeof(null===f||void 0===f?void 0:f.nextTick))return f.nextTick.bind(f);var n=Promise.resolve();return function(e){return n.then(e)}}(),D=a||c?2:o?1:3,N=!0,M=!1;function T(){if(!M){M=!0;var e=new Uint8Array(2);e[0]=1,e[1]=2;var t=new Uint16Array(e.buffer);N=513===t[0]}return N}},81629:function(e,t,n){"use strict";var i;n.d(t,{e:function(){return i}}),function(e){function t(e,t){if(e.start>=t.end||t.start>=e.end)return{start:0,end:0};var n=Math.max(e.start,t.start),i=Math.min(e.end,t.end);return i-n<=0?{start:0,end:0}:{start:n,end:i}}function n(e){return e.end-e.start<=0}e.intersect=t,e.isEmpty=n,e.intersects=function(e,i){return!n(t(e,i))},e.relativeComplement=function(e,t){var i=[],r={start:e.start,end:Math.min(t.start,e.end)},o={start:Math.max(t.end,e.start),end:e.end};return n(r)||i.push(r),n(o)||i.push(o),i}}(i||(i={}))},51334:function(e,t,n){"use strict";n.d(t,{AH:function(){return b},EZ:function(){return m},Hx:function(){return v},SF:function(){return p},Vb:function(){return h},Vo:function(){return y},XX:function(){return _},Xy:function(){return g},i3:function(){return w},z_:function(){return d}});var i=n(29439),r=n(15671),o=n(43144),a=n(67537),s=n(36912),u=n(67775),l=n(51747),c=n(55585);function d(e){return(0,u.q)(e,!0)}var h,f=function(){function e(t){(0,r.Z)(this,e),this._ignorePathCasing=t}return(0,o.Z)(e,[{key:"compare",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e===t?0:(0,l.qu)(this.getComparisonKey(e,n),this.getComparisonKey(t,n))}},{key:"isEqual",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e===t||!(!e||!t)&&this.getComparisonKey(e,n)===this.getComparisonKey(t,n)}},{key:"getComparisonKey",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e.with({path:this._ignorePathCasing(e)?e.path.toLowerCase():void 0,fragment:t?null:void 0}).toString()}},{key:"joinPath",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return u.o.joinPath.apply(u.o,[e].concat(n))}},{key:"basenameOrAuthority",value:function(e){return m(e)||e.authority}},{key:"basename",value:function(e){return s.KR.basename(e.path)}},{key:"dirname",value:function(e){return 0===e.path.length?e:(e.scheme===c.lg.file?t=u.o.file(s.XX(d(e))).path:(t=s.KR.dirname(e.path),e.authority&&t.length&&47!==t.charCodeAt(0)&&(console.error('dirname("'.concat(e.toString,")) resulted in a relative path")),t="/")),e.with({path:t}));var t}},{key:"normalizePath",value:function(e){return e.path.length?(t=e.scheme===c.lg.file?u.o.file(s.Fv(d(e))).path:s.KR.normalize(e.path),e.with({path:t})):e;var t}},{key:"resolvePath",value:function(e,t){if(e.scheme===c.lg.file){var n=u.o.file(s.DB(d(e),t));return e.with({authority:n.authority,path:n.path})}return-1===t.indexOf("/")&&(t=a.ej(t),/^[a-zA-Z]:(\/|$)/.test(t)&&(t="/"+t)),e.with({path:s.KR.resolve(e.path,t)})}}]),e}(),p=new f((function(){return!1})),g=p.isEqual.bind(p),v=p.basenameOrAuthority.bind(p),m=p.basename.bind(p),_=p.dirname.bind(p),y=p.joinPath.bind(p),b=p.normalizePath.bind(p),w=p.resolvePath.bind(p);!function(e){e.META_DATA_LABEL="label",e.META_DATA_DESCRIPTION="description",e.META_DATA_SIZE="size",e.META_DATA_MIME="mime",e.parseMetaData=function(t){var n=new Map;t.path.substring(t.path.indexOf(";")+1,t.path.lastIndexOf(";")).split(";").forEach((function(e){var t=e.split(":"),r=(0,i.Z)(t,2),o=r[0],a=r[1];o&&a&&n.set(o,a)}));var r=t.path.substring(0,t.path.indexOf(";"));return r&&n.set(e.META_DATA_MIME,r),n}}(h||(h={}))},58604:function(e,t,n){"use strict";n.d(t,{Rm:function(){return h}});var i=n(11752),r=n(61120),o=n(60136),a=n(43668),s=n(15671),u=n(43144),l=n(11732),c=n(81626),d=function(){function e(t,n,i,r,o,a){(0,s.Z)(this,e),t|=0,n|=0,i|=0,r|=0,o|=0,a|=0,this.rawScrollLeft=i,this.rawScrollTop=a,t<0&&(t=0),i+t>n&&(i=n-t),i<0&&(i=0),r<0&&(r=0),a+r>o&&(a=o-r),a<0&&(a=0),this.width=t,this.scrollWidth=n,this.scrollLeft=i,this.height=r,this.scrollHeight=o,this.scrollTop=a}return(0,u.Z)(e,[{key:"equals",value:function(e){return this.rawScrollLeft===e.rawScrollLeft&&this.rawScrollTop===e.rawScrollTop&&this.width===e.width&&this.scrollWidth===e.scrollWidth&&this.scrollLeft===e.scrollLeft&&this.height===e.height&&this.scrollHeight===e.scrollHeight&&this.scrollTop===e.scrollTop}},{key:"withScrollDimensions",value:function(t,n){return new e("undefined"!==typeof t.width?t.width:this.width,"undefined"!==typeof t.scrollWidth?t.scrollWidth:this.scrollWidth,n?this.rawScrollLeft:this.scrollLeft,"undefined"!==typeof t.height?t.height:this.height,"undefined"!==typeof t.scrollHeight?t.scrollHeight:this.scrollHeight,n?this.rawScrollTop:this.scrollTop)}},{key:"withScrollPosition",value:function(t){return new e(this.width,this.scrollWidth,"undefined"!==typeof t.scrollLeft?t.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,"undefined"!==typeof t.scrollTop?t.scrollTop:this.rawScrollTop)}},{key:"createScrollEvent",value:function(e,t){var n=this.width!==e.width,i=this.scrollWidth!==e.scrollWidth,r=this.scrollLeft!==e.scrollLeft,o=this.height!==e.height,a=this.scrollHeight!==e.scrollHeight,s=this.scrollTop!==e.scrollTop;return{inSmoothScrolling:t,oldWidth:e.width,oldScrollWidth:e.scrollWidth,oldScrollLeft:e.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:e.height,oldScrollHeight:e.scrollHeight,oldScrollTop:e.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:n,scrollWidthChanged:i,scrollLeftChanged:r,heightChanged:o,scrollHeightChanged:a,scrollTopChanged:s}}}]),e}(),h=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i){var r;return(0,s.Z)(this,n),(r=t.call(this))._onScroll=r._register(new l.Q5),r.onScroll=r._onScroll.event,r._smoothScrollDuration=e,r._scheduleAtNextAnimationFrame=i,r._state=new d(0,0,0,0,0,0),r._smoothScrolling=null,r}return(0,u.Z)(n,[{key:"dispose",value:function(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),(0,i.Z)((0,r.Z)(n.prototype),"dispose",this).call(this)}},{key:"setSmoothScrollDuration",value:function(e){this._smoothScrollDuration=e}},{key:"validateScrollPosition",value:function(e){return this._state.withScrollPosition(e)}},{key:"getScrollDimensions",value:function(){return this._state}},{key:"setScrollDimensions",value:function(e,t){var n=this._state.withScrollDimensions(e,t);this._setState(n,Boolean(this._smoothScrolling)),this._smoothScrolling&&this._smoothScrolling.acceptScrollDimensions(this._state)}},{key:"getFutureScrollPosition",value:function(){return this._smoothScrolling?this._smoothScrolling.to:this._state}},{key:"getCurrentScrollPosition",value:function(){return this._state}},{key:"setScrollPositionNow",value:function(e){var t=this._state.withScrollPosition(e);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(t,!1)}},{key:"setScrollPositionSmooth",value:function(e,t){var n=this;if(0===this._smoothScrollDuration)return this.setScrollPositionNow(e);if(this._smoothScrolling){e={scrollLeft:"undefined"===typeof e.scrollLeft?this._smoothScrolling.to.scrollLeft:e.scrollLeft,scrollTop:"undefined"===typeof e.scrollTop?this._smoothScrolling.to.scrollTop:e.scrollTop};var i,r=this._state.withScrollPosition(e);if(this._smoothScrolling.to.scrollLeft===r.scrollLeft&&this._smoothScrolling.to.scrollTop===r.scrollTop)return;i=t?new g(this._smoothScrolling.from,r,this._smoothScrolling.startTime,this._smoothScrolling.duration):this._smoothScrolling.combine(this._state,r,this._smoothScrollDuration),this._smoothScrolling.dispose(),this._smoothScrolling=i}else{var o=this._state.withScrollPosition(e);this._smoothScrolling=g.start(this._state,o,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame((function(){n._smoothScrolling&&(n._smoothScrolling.animationFrameDisposable=null,n._performSmoothScrolling())}))}},{key:"_performSmoothScrolling",value:function(){var e=this;if(this._smoothScrolling){var t=this._smoothScrolling.tick(),n=this._state.withScrollPosition(t);if(this._setState(n,!0),this._smoothScrolling)return t.isDone?(this._smoothScrolling.dispose(),void(this._smoothScrolling=null)):void(this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame((function(){e._smoothScrolling&&(e._smoothScrolling.animationFrameDisposable=null,e._performSmoothScrolling())})))}}},{key:"_setState",value:function(e,t){var n=this._state;n.equals(e)||(this._state=e,this._onScroll.fire(this._state.createScrollEvent(n,t)))}}]),n}(c.JT),f=(0,u.Z)((function e(t,n,i){(0,s.Z)(this,e),this.scrollLeft=t,this.scrollTop=n,this.isDone=i}));function p(e,t){var n=t-e;return function(t){return e+n*(1-function(e){return Math.pow(e,3)}(1-t))}}var g=function(){function e(t,n,i,r){(0,s.Z)(this,e),this.from=t,this.to=n,this.duration=r,this.startTime=i,this.animationFrameDisposable=null,this._initAnimations()}return(0,u.Z)(e,[{key:"_initAnimations",value:function(){this.scrollLeft=this._initAnimation(this.from.scrollLeft,this.to.scrollLeft,this.to.width),this.scrollTop=this._initAnimation(this.from.scrollTop,this.to.scrollTop,this.to.height)}},{key:"_initAnimation",value:function(e,t,n){var i,r,o,a,s;return Math.abs(e-t)>2.5*n?(e<t?(i=e+.75*n,r=t-.75*n):(i=e-.75*n,r=t+.75*n),o=p(e,i),a=p(r,t),s=.33,function(e){return e<s?o(e/s):a((e-s)/(1-s))}):p(e,t)}},{key:"dispose",value:function(){null!==this.animationFrameDisposable&&(this.animationFrameDisposable.dispose(),this.animationFrameDisposable=null)}},{key:"acceptScrollDimensions",value:function(e){this.to=e.withScrollPosition(this.to),this._initAnimations()}},{key:"tick",value:function(){return this._tick(Date.now())}},{key:"_tick",value:function(e){var t=(e-this.startTime)/this.duration;if(t<1){var n=this.scrollLeft(t),i=this.scrollTop(t);return new f(n,i,!1)}return new f(this.to.scrollLeft,this.to.scrollTop,!0)}},{key:"combine",value:function(t,n,i){return e.start(t,n,i)}}],[{key:"start",value:function(t,n,i){return i+=10,new e(t,n,Date.now()-10,i)}}]),e}()},55046:function(e,t,n){"use strict";var i,r=n(51747);!function(e){e[e.Ignore=0]="Ignore",e[e.Info=1]="Info",e[e.Warning=2]="Warning",e[e.Error=3]="Error"}(i||(i={})),function(e){var t="error",n="warning",i="warn",o="info",a="ignore";e.fromValue=function(a){return a?r.qq(t,a)?e.Error:r.qq(n,a)||r.qq(i,a)?e.Warning:r.qq(o,a)?e.Info:e.Ignore:e.Ignore},e.toString=function(i){switch(i){case e.Error:return t;case e.Warning:return n;case e.Info:return o;default:return a}}}(i||(i={})),t.Z=i},96257:function(e,t,n){"use strict";n.d(t,{G:function(){return s}});var i=n(15671),r=n(43144),o=n(30487),a=o.li.performance&&"function"===typeof o.li.performance.now,s=function(){function e(t){(0,i.Z)(this,e),this._highResolution=a&&t,this._startTime=this._now(),this._stopTime=-1}return(0,r.Z)(e,[{key:"stop",value:function(){this._stopTime=this._now()}},{key:"elapsed",value:function(){return-1!==this._stopTime?this._stopTime-this._startTime:this._now()-this._startTime}},{key:"_now",value:function(){return this._highResolution?o.li.performance.now():Date.now()}}],[{key:"create",value:function(){return new e(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])}}]),e}()},51747:function(e,t,n){"use strict";n.d(t,{$i:function(){return K},C8:function(){return X},CZ:function(){return B},GF:function(){return g},HO:function(){return H},IO:function(){return v},K7:function(){return Q},Kw:function(){return te},LC:function(){return y},Mh:function(){return I},P1:function(){return O},PJ:function(){return ne},Qe:function(){return q},R1:function(){return p},RP:function(){return Y},S6:function(){return ie},TT:function(){return k},Ut:function(){return W},V8:function(){return b},WU:function(){return s},YK:function(){return R},YU:function(){return u},ZG:function(){return A},ZH:function(){return Z},ab:function(){return G},c1:function(){return J},df:function(){return E},ec:function(){return l},fi:function(){return re},fy:function(){return c},j3:function(){return d},j_:function(){return x},m5:function(){return o},mK:function(){return L},mr:function(){return m},oL:function(){return h},ok:function(){return T},ow:function(){return w},qq:function(){return N},qu:function(){return C},rL:function(){return P},uS:function(){return ee},un:function(){return f},uq:function(){return _},vH:function(){return j},xe:function(){return $},zY:function(){return S}});var i=n(15671),r=n(43144);function o(e){return!e||"string"!==typeof e||0===e.trim().length}var a=/{(\d+)}/g;function s(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return 0===n.length?e:e.replace(a,(function(e,t){var i=parseInt(t,10);return isNaN(i)||i<0||i>=n.length?e:n[i]}))}function u(e){return e.replace(/[<>&]/g,(function(e){switch(e){case"<":return"<";case">":return">";case"&":return"&";default:return e}}))}function l(e){return e.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";return h(d(e,t),t)}function d(e,t){if(!e||!t)return e;var n=t.length;if(0===n||0===e.length)return e;for(var i=0;e.indexOf(t,i)===i;)i+=n;return e.substring(i)}function h(e,t){if(!e||!t)return e;var n=t.length,i=e.length;if(0===n||0===i)return e;for(var r=i,o=-1;-1!==(o=e.lastIndexOf(t,r-1))&&o+n===r;){if(0===o)return"";r=o}return e.substring(0,r)}function f(e){return e.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}function p(e){return e.replace(/\*/g,"")}function g(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e)throw new Error("Cannot create regex from empty string");t||(e=l(e)),n.wholeWord&&(/\B/.test(e.charAt(0))||(e="\\b"+e),/\B/.test(e.charAt(e.length-1))||(e+="\\b"));var i="";return n.global&&(i+="g"),n.matchCase||(i+="i"),n.multiline&&(i+="m"),n.unicode&&(i+="u"),new RegExp(e,i)}function v(e){return"^"!==e.source&&"^$"!==e.source&&"$"!==e.source&&"^\\s*$"!==e.source&&!(!e.exec("")||0!==e.lastIndex)}function m(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")}function _(e){return e.split(/\r\n|\r|\n/)}function y(e){for(var t=0,n=e.length;t<n;t++){var i=e.charCodeAt(t);if(32!==i&&9!==i)return t}return-1}function b(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,i=t;i<n;i++){var r=e.charCodeAt(i);if(32!==r&&9!==r)return e.substring(t,i)}return e.substring(t,n)}function w(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.length-1;t>=0;t--){var n=e.charCodeAt(t);if(32!==n&&9!==n)return t}return-1}function C(e,t){return e<t?-1:e>t?1:0}function k(e,t){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:t.length;n<i&&r<o;n++,r++){var a=e.charCodeAt(n),s=t.charCodeAt(r);if(a<s)return-1;if(a>s)return 1}var u=i-n,l=o-r;return u<l?-1:u>l?1:0}function S(e,t){return x(e,t,0,e.length,0,t.length)}function x(e,t){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:t.length;n<i&&r<o;n++,r++){var a=e.charCodeAt(n),s=t.charCodeAt(r);if(a!==s){var u=a-s;if((32!==u||!E(s))&&(-32!==u||!E(a)))return L(a)&&L(s)?u:k(e.toLowerCase(),t.toLowerCase(),n,i,r,o)}}var l=i-n,c=o-r;return l<c?-1:l>c?1:0}function L(e){return e>=97&&e<=122}function E(e){return e>=65&&e<=90}function D(e){return L(e)||E(e)}function N(e,t){return e.length===t.length&&M(e,t)}function M(e,t){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,i=0;i<n;i++){var r=e.charCodeAt(i),o=t.charCodeAt(i);if(r!==o)if(D(r)&&D(o)){var a=Math.abs(r-o);if(0!==a&&32!==a)return!1}else if(String.fromCharCode(r).toLowerCase()!==String.fromCharCode(o).toLowerCase())return!1}return!0}function T(e,t){var n=t.length;return!(t.length>e.length)&&M(e,t,n)}function I(e,t){var n,i=Math.min(e.length,t.length);for(n=0;n<i;n++)if(e.charCodeAt(n)!==t.charCodeAt(n))return n;return i}function O(e,t){var n,i=Math.min(e.length,t.length),r=e.length-1,o=t.length-1;for(n=0;n<i;n++)if(e.charCodeAt(r-n)!==t.charCodeAt(o-n))return n;return i}function A(e){return 55296<=e&&e<=56319}function R(e){return 56320<=e&&e<=57343}function P(e,t){return t-56320+(e-55296<<10)+65536}function Z(e,t,n){var i=e.charCodeAt(n);if(A(i)&&n+1<t){var r=e.charCodeAt(n+1);if(R(r))return P(i,r)}return i}function F(e,t){var n=e.charCodeAt(t-1);if(R(n)&&t>1){var i=e.charCodeAt(t-2);if(A(i))return P(i,n)}return n}function j(e,t){var n=oe.getInstance(),i=t,r=e.length,o=Z(e,r,t);t+=o>=65536?2:1;for(var a=n.getGraphemeBreakType(o);t<r;){var s=Z(e,r,t),u=n.getGraphemeBreakType(s);if(re(a,u))break;t+=s>=65536?2:1,a=u}return t-i}function H(e,t){var n=oe.getInstance(),i=t,r=F(e,t);t-=r>=65536?2:1;for(var o=n.getGraphemeBreakType(r);t>0;){var a=F(e,t),s=n.getGraphemeBreakType(a);if(re(s,o))break;t-=a>=65536?2:1,o=s}return i-t}function B(e){for(var t=e.byteLength,n=[],i=0;i<t;){var r=e[i],o=void 0;if((o=r>=240&&i+3<t?(7&e[i++])<<18>>>0|(63&e[i++])<<12>>>0|(63&e[i++])<<6>>>0|(63&e[i++])<<0>>>0:r>=224&&i+2<t?(15&e[i++])<<12>>>0|(63&e[i++])<<6>>>0|(63&e[i++])<<0>>>0:r>=192&&i+1<t?(31&e[i++])<<6>>>0|(63&e[i++])<<0>>>0:e[i++])>=0&&o<=55295||o>=57344&&o<=65535)n.push(String.fromCharCode(o));else if(o>=65536&&o<=1114111){var a=o-65536,s=55296+((1047552&a)>>>10),u=56320+((1023&a)>>>0);n.push(String.fromCharCode(s)),n.push(String.fromCharCode(u))}else n.push(String.fromCharCode(65533))}return n.join("")}var z=/(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u08BD\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE33\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDCFF]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD50-\uDFFF]|\uD83B[\uDC00-\uDEBB])/;function W(e){return z.test(e)}var V=/(?:[\u231A\u231B\u23F0\u23F3\u2600-\u27BF\u2B50\u2B55]|\uD83C[\uDDE6-\uDDFF\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F\uDE80-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD00-\uDDFF\uDE70-\uDED6])/;function Y(e){return V.test(e)}var U=/^[\t\n\r\x20-\x7E]*$/;function K(e){return U.test(e)}var q=/[\u2028\u2029]/;function G(e){return q.test(e)}function $(e){for(var t=0,n=e.length;t<n;t++)if(Q(e.charCodeAt(t)))return!0;return!1}function Q(e){return(e=+e)>=11904&&e<=55215||e>=63744&&e<=64255||e>=65281&&e<=65374}function X(e){return e>=127462&&e<=127487||8986===e||8987===e||9200===e||9203===e||e>=9728&&e<=10175||11088===e||11093===e||e>=127744&&e<=128591||e>=128640&&e<=128764||e>=128992&&e<=129003||e>=129280&&e<=129535||e>=129648&&e<=129750}var J=String.fromCharCode(65279);function ee(e){return!!(e&&e.length>0&&65279===e.charCodeAt(0))}function te(e){return!!e&&(arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&(e=e.replace(/\\./g,"")),e.toLowerCase()!==e)}function ne(e){return(e%=52)<26?String.fromCharCode(97+e):String.fromCharCode(65+e-26)}function ie(e){return oe.getInstance().getGraphemeBreakType(e)}function re(e,t){return 0===e?5!==t&&7!==t:(2!==e||3!==t)&&(4===e||2===e||3===e||(4===t||2===t||3===t||(8!==e||8!==t&&9!==t&&11!==t&&12!==t)&&((11!==e&&9!==e||9!==t&&10!==t)&&((12!==e&&10!==e||10!==t)&&(5!==t&&13!==t&&(7!==t&&(1!==e&&((13!==e||14!==t)&&(6!==e||6!==t)))))))))}var oe=function(){function e(){(0,i.Z)(this,e),this._data=JSON.parse("[0,0,0,51592,51592,11,44424,44424,11,72251,72254,5,7150,7150,7,48008,48008,11,55176,55176,11,128420,128420,14,3276,3277,5,9979,9980,14,46216,46216,11,49800,49800,11,53384,53384,11,70726,70726,5,122915,122916,5,129320,129327,14,2558,2558,5,5906,5908,5,9762,9763,14,43360,43388,8,45320,45320,11,47112,47112,11,48904,48904,11,50696,50696,11,52488,52488,11,54280,54280,11,70082,70083,1,71350,71350,7,73111,73111,5,127892,127893,14,128726,128727,14,129473,129474,14,2027,2035,5,2901,2902,5,3784,3789,5,6754,6754,5,8418,8420,5,9877,9877,14,11088,11088,14,44008,44008,5,44872,44872,11,45768,45768,11,46664,46664,11,47560,47560,11,48456,48456,11,49352,49352,11,50248,50248,11,51144,51144,11,52040,52040,11,52936,52936,11,53832,53832,11,54728,54728,11,69811,69814,5,70459,70460,5,71096,71099,7,71998,71998,5,72874,72880,5,119149,119149,7,127374,127374,14,128335,128335,14,128482,128482,14,128765,128767,14,129399,129400,14,129680,129685,14,1476,1477,5,2377,2380,7,2759,2760,5,3137,3140,7,3458,3459,7,4153,4154,5,6432,6434,5,6978,6978,5,7675,7679,5,9723,9726,14,9823,9823,14,9919,9923,14,10035,10036,14,42736,42737,5,43596,43596,5,44200,44200,11,44648,44648,11,45096,45096,11,45544,45544,11,45992,45992,11,46440,46440,11,46888,46888,11,47336,47336,11,47784,47784,11,48232,48232,11,48680,48680,11,49128,49128,11,49576,49576,11,50024,50024,11,50472,50472,11,50920,50920,11,51368,51368,11,51816,51816,11,52264,52264,11,52712,52712,11,53160,53160,11,53608,53608,11,54056,54056,11,54504,54504,11,54952,54952,11,68108,68111,5,69933,69940,5,70197,70197,7,70498,70499,7,70845,70845,5,71229,71229,5,71727,71735,5,72154,72155,5,72344,72345,5,73023,73029,5,94095,94098,5,121403,121452,5,126981,127182,14,127538,127546,14,127990,127990,14,128391,128391,14,128445,128449,14,128500,128505,14,128752,128752,14,129160,129167,14,129356,129356,14,129432,129442,14,129648,129651,14,129751,131069,14,173,173,4,1757,1757,1,2274,2274,1,2494,2494,5,2641,2641,5,2876,2876,5,3014,3016,7,3262,3262,7,3393,3396,5,3570,3571,7,3968,3972,5,4228,4228,7,6086,6086,5,6679,6680,5,6912,6915,5,7080,7081,5,7380,7392,5,8252,8252,14,9096,9096,14,9748,9749,14,9784,9786,14,9833,9850,14,9890,9894,14,9938,9938,14,9999,9999,14,10085,10087,14,12349,12349,14,43136,43137,7,43454,43456,7,43755,43755,7,44088,44088,11,44312,44312,11,44536,44536,11,44760,44760,11,44984,44984,11,45208,45208,11,45432,45432,11,45656,45656,11,45880,45880,11,46104,46104,11,46328,46328,11,46552,46552,11,46776,46776,11,47000,47000,11,47224,47224,11,47448,47448,11,47672,47672,11,47896,47896,11,48120,48120,11,48344,48344,11,48568,48568,11,48792,48792,11,49016,49016,11,49240,49240,11,49464,49464,11,49688,49688,11,49912,49912,11,50136,50136,11,50360,50360,11,50584,50584,11,50808,50808,11,51032,51032,11,51256,51256,11,51480,51480,11,51704,51704,11,51928,51928,11,52152,52152,11,52376,52376,11,52600,52600,11,52824,52824,11,53048,53048,11,53272,53272,11,53496,53496,11,53720,53720,11,53944,53944,11,54168,54168,11,54392,54392,11,54616,54616,11,54840,54840,11,55064,55064,11,65438,65439,5,69633,69633,5,69837,69837,1,70018,70018,7,70188,70190,7,70368,70370,7,70465,70468,7,70712,70719,5,70835,70840,5,70850,70851,5,71132,71133,5,71340,71340,7,71458,71461,5,71985,71989,7,72002,72002,7,72193,72202,5,72281,72283,5,72766,72766,7,72885,72886,5,73104,73105,5,92912,92916,5,113824,113827,4,119173,119179,5,121505,121519,5,125136,125142,5,127279,127279,14,127489,127490,14,127570,127743,14,127900,127901,14,128254,128254,14,128369,128370,14,128400,128400,14,128425,128432,14,128468,128475,14,128489,128494,14,128715,128720,14,128745,128745,14,128759,128760,14,129004,129023,14,129296,129304,14,129340,129342,14,129388,129392,14,129404,129407,14,129454,129455,14,129485,129487,14,129659,129663,14,129719,129727,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2363,2363,7,2402,2403,5,2507,2508,7,2622,2624,7,2691,2691,7,2786,2787,5,2881,2884,5,3006,3006,5,3072,3072,5,3170,3171,5,3267,3268,7,3330,3331,7,3406,3406,1,3538,3540,5,3655,3662,5,3897,3897,5,4038,4038,5,4184,4185,5,4352,4447,8,6068,6069,5,6155,6157,5,6448,6449,7,6742,6742,5,6783,6783,5,6966,6970,5,7042,7042,7,7143,7143,7,7212,7219,5,7412,7412,5,8206,8207,4,8294,8303,4,8596,8601,14,9410,9410,14,9742,9742,14,9757,9757,14,9770,9770,14,9794,9794,14,9828,9828,14,9855,9855,14,9882,9882,14,9900,9903,14,9929,9933,14,9963,9967,14,9987,9988,14,10006,10006,14,10062,10062,14,10175,10175,14,11744,11775,5,42607,42607,5,43043,43044,7,43263,43263,5,43444,43445,7,43569,43570,5,43698,43700,5,43766,43766,5,44032,44032,11,44144,44144,11,44256,44256,11,44368,44368,11,44480,44480,11,44592,44592,11,44704,44704,11,44816,44816,11,44928,44928,11,45040,45040,11,45152,45152,11,45264,45264,11,45376,45376,11,45488,45488,11,45600,45600,11,45712,45712,11,45824,45824,11,45936,45936,11,46048,46048,11,46160,46160,11,46272,46272,11,46384,46384,11,46496,46496,11,46608,46608,11,46720,46720,11,46832,46832,11,46944,46944,11,47056,47056,11,47168,47168,11,47280,47280,11,47392,47392,11,47504,47504,11,47616,47616,11,47728,47728,11,47840,47840,11,47952,47952,11,48064,48064,11,48176,48176,11,48288,48288,11,48400,48400,11,48512,48512,11,48624,48624,11,48736,48736,11,48848,48848,11,48960,48960,11,49072,49072,11,49184,49184,11,49296,49296,11,49408,49408,11,49520,49520,11,49632,49632,11,49744,49744,11,49856,49856,11,49968,49968,11,50080,50080,11,50192,50192,11,50304,50304,11,50416,50416,11,50528,50528,11,50640,50640,11,50752,50752,11,50864,50864,11,50976,50976,11,51088,51088,11,51200,51200,11,51312,51312,11,51424,51424,11,51536,51536,11,51648,51648,11,51760,51760,11,51872,51872,11,51984,51984,11,52096,52096,11,52208,52208,11,52320,52320,11,52432,52432,11,52544,52544,11,52656,52656,11,52768,52768,11,52880,52880,11,52992,52992,11,53104,53104,11,53216,53216,11,53328,53328,11,53440,53440,11,53552,53552,11,53664,53664,11,53776,53776,11,53888,53888,11,54000,54000,11,54112,54112,11,54224,54224,11,54336,54336,11,54448,54448,11,54560,54560,11,54672,54672,11,54784,54784,11,54896,54896,11,55008,55008,11,55120,55120,11,64286,64286,5,66272,66272,5,68900,68903,5,69762,69762,7,69817,69818,5,69927,69931,5,70003,70003,5,70070,70078,5,70094,70094,7,70194,70195,7,70206,70206,5,70400,70401,5,70463,70463,7,70475,70477,7,70512,70516,5,70722,70724,5,70832,70832,5,70842,70842,5,70847,70848,5,71088,71089,7,71102,71102,7,71219,71226,5,71231,71232,5,71342,71343,7,71453,71455,5,71463,71467,5,71737,71738,5,71995,71996,5,72000,72000,7,72145,72147,7,72160,72160,5,72249,72249,7,72273,72278,5,72330,72342,5,72752,72758,5,72850,72871,5,72882,72883,5,73018,73018,5,73031,73031,5,73109,73109,5,73461,73462,7,94031,94031,5,94192,94193,7,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,126976,126979,14,127184,127231,14,127344,127345,14,127405,127461,14,127514,127514,14,127561,127567,14,127778,127779,14,127896,127896,14,127985,127986,14,127995,127999,5,128326,128328,14,128360,128366,14,128378,128378,14,128394,128397,14,128405,128406,14,128422,128423,14,128435,128443,14,128453,128464,14,128479,128480,14,128484,128487,14,128496,128498,14,128640,128709,14,128723,128724,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129096,129103,14,129292,129292,14,129311,129311,14,129329,129330,14,129344,129349,14,129360,129374,14,129394,129394,14,129402,129402,14,129413,129425,14,129445,129450,14,129466,129471,14,129483,129483,14,129511,129535,14,129653,129655,14,129667,129670,14,129705,129711,14,129731,129743,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2307,2307,7,2366,2368,7,2382,2383,7,2434,2435,7,2497,2500,5,2519,2519,5,2563,2563,7,2631,2632,5,2677,2677,5,2750,2752,7,2763,2764,7,2817,2817,5,2879,2879,5,2891,2892,7,2914,2915,5,3008,3008,5,3021,3021,5,3076,3076,5,3146,3149,5,3202,3203,7,3264,3265,7,3271,3272,7,3298,3299,5,3390,3390,5,3402,3404,7,3426,3427,5,3535,3535,5,3544,3550,7,3635,3635,7,3763,3763,7,3893,3893,5,3953,3966,5,3981,3991,5,4145,4145,7,4157,4158,5,4209,4212,5,4237,4237,5,4520,4607,10,5970,5971,5,6071,6077,5,6089,6099,5,6277,6278,5,6439,6440,5,6451,6456,7,6683,6683,5,6744,6750,5,6765,6770,7,6846,6846,5,6964,6964,5,6972,6972,5,7019,7027,5,7074,7077,5,7083,7085,5,7146,7148,7,7154,7155,7,7222,7223,5,7394,7400,5,7416,7417,5,8204,8204,5,8233,8233,4,8288,8292,4,8413,8416,5,8482,8482,14,8986,8987,14,9193,9203,14,9654,9654,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9775,14,9792,9792,14,9800,9811,14,9825,9826,14,9831,9831,14,9852,9853,14,9872,9873,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9936,9936,14,9941,9960,14,9974,9974,14,9982,9985,14,9992,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10145,10145,14,11013,11015,14,11503,11505,5,12334,12335,5,12951,12951,14,42612,42621,5,43014,43014,5,43047,43047,7,43204,43205,5,43335,43345,5,43395,43395,7,43450,43451,7,43561,43566,5,43573,43574,5,43644,43644,5,43710,43711,5,43758,43759,7,44005,44005,5,44012,44012,7,44060,44060,11,44116,44116,11,44172,44172,11,44228,44228,11,44284,44284,11,44340,44340,11,44396,44396,11,44452,44452,11,44508,44508,11,44564,44564,11,44620,44620,11,44676,44676,11,44732,44732,11,44788,44788,11,44844,44844,11,44900,44900,11,44956,44956,11,45012,45012,11,45068,45068,11,45124,45124,11,45180,45180,11,45236,45236,11,45292,45292,11,45348,45348,11,45404,45404,11,45460,45460,11,45516,45516,11,45572,45572,11,45628,45628,11,45684,45684,11,45740,45740,11,45796,45796,11,45852,45852,11,45908,45908,11,45964,45964,11,46020,46020,11,46076,46076,11,46132,46132,11,46188,46188,11,46244,46244,11,46300,46300,11,46356,46356,11,46412,46412,11,46468,46468,11,46524,46524,11,46580,46580,11,46636,46636,11,46692,46692,11,46748,46748,11,46804,46804,11,46860,46860,11,46916,46916,11,46972,46972,11,47028,47028,11,47084,47084,11,47140,47140,11,47196,47196,11,47252,47252,11,47308,47308,11,47364,47364,11,47420,47420,11,47476,47476,11,47532,47532,11,47588,47588,11,47644,47644,11,47700,47700,11,47756,47756,11,47812,47812,11,47868,47868,11,47924,47924,11,47980,47980,11,48036,48036,11,48092,48092,11,48148,48148,11,48204,48204,11,48260,48260,11,48316,48316,11,48372,48372,11,48428,48428,11,48484,48484,11,48540,48540,11,48596,48596,11,48652,48652,11,48708,48708,11,48764,48764,11,48820,48820,11,48876,48876,11,48932,48932,11,48988,48988,11,49044,49044,11,49100,49100,11,49156,49156,11,49212,49212,11,49268,49268,11,49324,49324,11,49380,49380,11,49436,49436,11,49492,49492,11,49548,49548,11,49604,49604,11,49660,49660,11,49716,49716,11,49772,49772,11,49828,49828,11,49884,49884,11,49940,49940,11,49996,49996,11,50052,50052,11,50108,50108,11,50164,50164,11,50220,50220,11,50276,50276,11,50332,50332,11,50388,50388,11,50444,50444,11,50500,50500,11,50556,50556,11,50612,50612,11,50668,50668,11,50724,50724,11,50780,50780,11,50836,50836,11,50892,50892,11,50948,50948,11,51004,51004,11,51060,51060,11,51116,51116,11,51172,51172,11,51228,51228,11,51284,51284,11,51340,51340,11,51396,51396,11,51452,51452,11,51508,51508,11,51564,51564,11,51620,51620,11,51676,51676,11,51732,51732,11,51788,51788,11,51844,51844,11,51900,51900,11,51956,51956,11,52012,52012,11,52068,52068,11,52124,52124,11,52180,52180,11,52236,52236,11,52292,52292,11,52348,52348,11,52404,52404,11,52460,52460,11,52516,52516,11,52572,52572,11,52628,52628,11,52684,52684,11,52740,52740,11,52796,52796,11,52852,52852,11,52908,52908,11,52964,52964,11,53020,53020,11,53076,53076,11,53132,53132,11,53188,53188,11,53244,53244,11,53300,53300,11,53356,53356,11,53412,53412,11,53468,53468,11,53524,53524,11,53580,53580,11,53636,53636,11,53692,53692,11,53748,53748,11,53804,53804,11,53860,53860,11,53916,53916,11,53972,53972,11,54028,54028,11,54084,54084,11,54140,54140,11,54196,54196,11,54252,54252,11,54308,54308,11,54364,54364,11,54420,54420,11,54476,54476,11,54532,54532,11,54588,54588,11,54644,54644,11,54700,54700,11,54756,54756,11,54812,54812,11,54868,54868,11,54924,54924,11,54980,54980,11,55036,55036,11,55092,55092,11,55148,55148,11,55216,55238,9,65056,65071,5,65529,65531,4,68097,68099,5,68159,68159,5,69446,69456,5,69688,69702,5,69808,69810,7,69815,69816,7,69821,69821,1,69888,69890,5,69932,69932,7,69957,69958,7,70016,70017,5,70067,70069,7,70079,70080,7,70089,70092,5,70095,70095,5,70191,70193,5,70196,70196,5,70198,70199,5,70367,70367,5,70371,70378,5,70402,70403,7,70462,70462,5,70464,70464,5,70471,70472,7,70487,70487,5,70502,70508,5,70709,70711,7,70720,70721,7,70725,70725,7,70750,70750,5,70833,70834,7,70841,70841,7,70843,70844,7,70846,70846,7,70849,70849,7,71087,71087,5,71090,71093,5,71100,71101,5,71103,71104,5,71216,71218,7,71227,71228,7,71230,71230,7,71339,71339,5,71341,71341,5,71344,71349,5,71351,71351,5,71456,71457,7,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123628,123631,5,125252,125258,5,126980,126980,14,127183,127183,14,127245,127247,14,127340,127343,14,127358,127359,14,127377,127386,14,127462,127487,6,127491,127503,14,127535,127535,14,127548,127551,14,127568,127569,14,127744,127777,14,127780,127891,14,127894,127895,14,127897,127899,14,127902,127984,14,127987,127989,14,127991,127994,14,128000,128253,14,128255,128317,14,128329,128334,14,128336,128359,14,128367,128368,14,128371,128377,14,128379,128390,14,128392,128393,14,128398,128399,14,128401,128404,14,128407,128419,14,128421,128421,14,128424,128424,14,128433,128434,14,128444,128444,14,128450,128452,14,128465,128467,14,128476,128478,14,128481,128481,14,128483,128483,14,128488,128488,14,128495,128495,14,128499,128499,14,128506,128591,14,128710,128714,14,128721,128722,14,128725,128725,14,128728,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129664,129666,14,129671,129679,14,129686,129704,14,129712,129718,14,129728,129730,14,129744,129750,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2259,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3134,3136,5,3142,3144,5,3157,3158,5,3201,3201,5,3260,3260,5,3263,3263,5,3266,3266,5,3270,3270,5,3274,3275,7,3285,3286,5,3328,3329,5,3387,3388,5,3391,3392,7,3398,3400,7,3405,3405,5,3415,3415,5,3457,3457,5,3530,3530,5,3536,3537,7,3542,3542,5,3551,3551,5,3633,3633,5,3636,3642,5,3761,3761,5,3764,3772,5,3864,3865,5,3895,3895,5,3902,3903,7,3967,3967,7,3974,3975,5,3993,4028,5,4141,4144,5,4146,4151,5,4155,4156,7,4182,4183,7,4190,4192,5,4226,4226,5,4229,4230,5,4253,4253,5,4448,4519,9,4957,4959,5,5938,5940,5,6002,6003,5,6070,6070,7,6078,6085,7,6087,6088,7,6109,6109,5,6158,6158,4,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6848,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7673,5,8203,8203,4,8205,8205,13,8232,8232,4,8234,8238,4,8265,8265,14,8293,8293,4,8400,8412,5,8417,8417,5,8421,8432,5,8505,8505,14,8617,8618,14,9000,9000,14,9167,9167,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9776,9783,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9935,14,9937,9937,14,9939,9940,14,9961,9962,14,9968,9973,14,9975,9978,14,9981,9981,14,9986,9986,14,9989,9989,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10084,14,10133,10135,14,10160,10160,14,10548,10549,14,11035,11036,14,11093,11093,14,11647,11647,5,12330,12333,5,12336,12336,14,12441,12442,5,12953,12953,14,42608,42610,5,42654,42655,5,43010,43010,5,43019,43019,5,43045,43046,5,43052,43052,5,43188,43203,7,43232,43249,5,43302,43309,5,43346,43347,7,43392,43394,5,43443,43443,5,43446,43449,5,43452,43453,5,43493,43493,5,43567,43568,7,43571,43572,7,43587,43587,5,43597,43597,7,43696,43696,5,43703,43704,5,43713,43713,5,43756,43757,5,43765,43765,7,44003,44004,7,44006,44007,7,44009,44010,7,44013,44013,5,44033,44059,12,44061,44087,12,44089,44115,12,44117,44143,12,44145,44171,12,44173,44199,12,44201,44227,12,44229,44255,12,44257,44283,12,44285,44311,12,44313,44339,12,44341,44367,12,44369,44395,12,44397,44423,12,44425,44451,12,44453,44479,12,44481,44507,12,44509,44535,12,44537,44563,12,44565,44591,12,44593,44619,12,44621,44647,12,44649,44675,12,44677,44703,12,44705,44731,12,44733,44759,12,44761,44787,12,44789,44815,12,44817,44843,12,44845,44871,12,44873,44899,12,44901,44927,12,44929,44955,12,44957,44983,12,44985,45011,12,45013,45039,12,45041,45067,12,45069,45095,12,45097,45123,12,45125,45151,12,45153,45179,12,45181,45207,12,45209,45235,12,45237,45263,12,45265,45291,12,45293,45319,12,45321,45347,12,45349,45375,12,45377,45403,12,45405,45431,12,45433,45459,12,45461,45487,12,45489,45515,12,45517,45543,12,45545,45571,12,45573,45599,12,45601,45627,12,45629,45655,12,45657,45683,12,45685,45711,12,45713,45739,12,45741,45767,12,45769,45795,12,45797,45823,12,45825,45851,12,45853,45879,12,45881,45907,12,45909,45935,12,45937,45963,12,45965,45991,12,45993,46019,12,46021,46047,12,46049,46075,12,46077,46103,12,46105,46131,12,46133,46159,12,46161,46187,12,46189,46215,12,46217,46243,12,46245,46271,12,46273,46299,12,46301,46327,12,46329,46355,12,46357,46383,12,46385,46411,12,46413,46439,12,46441,46467,12,46469,46495,12,46497,46523,12,46525,46551,12,46553,46579,12,46581,46607,12,46609,46635,12,46637,46663,12,46665,46691,12,46693,46719,12,46721,46747,12,46749,46775,12,46777,46803,12,46805,46831,12,46833,46859,12,46861,46887,12,46889,46915,12,46917,46943,12,46945,46971,12,46973,46999,12,47001,47027,12,47029,47055,12,47057,47083,12,47085,47111,12,47113,47139,12,47141,47167,12,47169,47195,12,47197,47223,12,47225,47251,12,47253,47279,12,47281,47307,12,47309,47335,12,47337,47363,12,47365,47391,12,47393,47419,12,47421,47447,12,47449,47475,12,47477,47503,12,47505,47531,12,47533,47559,12,47561,47587,12,47589,47615,12,47617,47643,12,47645,47671,12,47673,47699,12,47701,47727,12,47729,47755,12,47757,47783,12,47785,47811,12,47813,47839,12,47841,47867,12,47869,47895,12,47897,47923,12,47925,47951,12,47953,47979,12,47981,48007,12,48009,48035,12,48037,48063,12,48065,48091,12,48093,48119,12,48121,48147,12,48149,48175,12,48177,48203,12,48205,48231,12,48233,48259,12,48261,48287,12,48289,48315,12,48317,48343,12,48345,48371,12,48373,48399,12,48401,48427,12,48429,48455,12,48457,48483,12,48485,48511,12,48513,48539,12,48541,48567,12,48569,48595,12,48597,48623,12,48625,48651,12,48653,48679,12,48681,48707,12,48709,48735,12,48737,48763,12,48765,48791,12,48793,48819,12,48821,48847,12,48849,48875,12,48877,48903,12,48905,48931,12,48933,48959,12,48961,48987,12,48989,49015,12,49017,49043,12,49045,49071,12,49073,49099,12,49101,49127,12,49129,49155,12,49157,49183,12,49185,49211,12,49213,49239,12,49241,49267,12,49269,49295,12,49297,49323,12,49325,49351,12,49353,49379,12,49381,49407,12,49409,49435,12,49437,49463,12,49465,49491,12,49493,49519,12,49521,49547,12,49549,49575,12,49577,49603,12,49605,49631,12,49633,49659,12,49661,49687,12,49689,49715,12,49717,49743,12,49745,49771,12,49773,49799,12,49801,49827,12,49829,49855,12,49857,49883,12,49885,49911,12,49913,49939,12,49941,49967,12,49969,49995,12,49997,50023,12,50025,50051,12,50053,50079,12,50081,50107,12,50109,50135,12,50137,50163,12,50165,50191,12,50193,50219,12,50221,50247,12,50249,50275,12,50277,50303,12,50305,50331,12,50333,50359,12,50361,50387,12,50389,50415,12,50417,50443,12,50445,50471,12,50473,50499,12,50501,50527,12,50529,50555,12,50557,50583,12,50585,50611,12,50613,50639,12,50641,50667,12,50669,50695,12,50697,50723,12,50725,50751,12,50753,50779,12,50781,50807,12,50809,50835,12,50837,50863,12,50865,50891,12,50893,50919,12,50921,50947,12,50949,50975,12,50977,51003,12,51005,51031,12,51033,51059,12,51061,51087,12,51089,51115,12,51117,51143,12,51145,51171,12,51173,51199,12,51201,51227,12,51229,51255,12,51257,51283,12,51285,51311,12,51313,51339,12,51341,51367,12,51369,51395,12,51397,51423,12,51425,51451,12,51453,51479,12,51481,51507,12,51509,51535,12,51537,51563,12,51565,51591,12,51593,51619,12,51621,51647,12,51649,51675,12,51677,51703,12,51705,51731,12,51733,51759,12,51761,51787,12,51789,51815,12,51817,51843,12,51845,51871,12,51873,51899,12,51901,51927,12,51929,51955,12,51957,51983,12,51985,52011,12,52013,52039,12,52041,52067,12,52069,52095,12,52097,52123,12,52125,52151,12,52153,52179,12,52181,52207,12,52209,52235,12,52237,52263,12,52265,52291,12,52293,52319,12,52321,52347,12,52349,52375,12,52377,52403,12,52405,52431,12,52433,52459,12,52461,52487,12,52489,52515,12,52517,52543,12,52545,52571,12,52573,52599,12,52601,52627,12,52629,52655,12,52657,52683,12,52685,52711,12,52713,52739,12,52741,52767,12,52769,52795,12,52797,52823,12,52825,52851,12,52853,52879,12,52881,52907,12,52909,52935,12,52937,52963,12,52965,52991,12,52993,53019,12,53021,53047,12,53049,53075,12,53077,53103,12,53105,53131,12,53133,53159,12,53161,53187,12,53189,53215,12,53217,53243,12,53245,53271,12,53273,53299,12,53301,53327,12,53329,53355,12,53357,53383,12,53385,53411,12,53413,53439,12,53441,53467,12,53469,53495,12,53497,53523,12,53525,53551,12,53553,53579,12,53581,53607,12,53609,53635,12,53637,53663,12,53665,53691,12,53693,53719,12,53721,53747,12,53749,53775,12,53777,53803,12,53805,53831,12,53833,53859,12,53861,53887,12,53889,53915,12,53917,53943,12,53945,53971,12,53973,53999,12,54001,54027,12,54029,54055,12,54057,54083,12,54085,54111,12,54113,54139,12,54141,54167,12,54169,54195,12,54197,54223,12,54225,54251,12,54253,54279,12,54281,54307,12,54309,54335,12,54337,54363,12,54365,54391,12,54393,54419,12,54421,54447,12,54449,54475,12,54477,54503,12,54505,54531,12,54533,54559,12,54561,54587,12,54589,54615,12,54617,54643,12,54645,54671,12,54673,54699,12,54701,54727,12,54729,54755,12,54757,54783,12,54785,54811,12,54813,54839,12,54841,54867,12,54869,54895,12,54897,54923,12,54925,54951,12,54953,54979,12,54981,55007,12,55009,55035,12,55037,55063,12,55065,55091,12,55093,55119,12,55121,55147,12,55149,55175,12,55177,55203,12,55243,55291,10,65024,65039,5,65279,65279,4,65520,65528,4,66045,66045,5,66422,66426,5,68101,68102,5,68152,68154,5,68325,68326,5,69291,69292,5,69632,69632,7,69634,69634,7,69759,69761,5]")}return(0,r.Z)(e,[{key:"getGraphemeBreakType",value:function(e){if(e<32)return 10===e?3:13===e?2:4;if(e<127)return 0;for(var t=this._data,n=t.length/3,i=1;i<=n;)if(e<t[3*i])i*=2;else{if(!(e>t[3*i+1]))return t[3*i+2];i=2*i+1}return 0}}],[{key:"getInstance",value:function(){return e._INSTANCE||(e._INSTANCE=new e),e._INSTANCE}}]),e}();oe._INSTANCE=null},25941:function(e,t,n){"use strict";n.d(t,{$E:function(){return v},D8:function(){return p},HD:function(){return o},IU:function(){return m},Jp:function(){return c},Kn:function(){return a},cW:function(){return h},f6:function(){return _},hj:function(){return s},jn:function(){return u},kJ:function(){return r},mf:function(){return f},o8:function(){return l},p_:function(){return d}});var i=n(37762);function r(e){return Array.isArray(e)}function o(e){return"string"===typeof e}function a(e){return"object"===typeof e&&null!==e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function s(e){return"number"===typeof e&&!isNaN(e)}function u(e){return!0===e||!1===e}function l(e){return"undefined"===typeof e}function c(e){return l(e)||null===e}function d(e,t){if(!e)throw new Error(t?"Unexpected type, expected '".concat(t,"'"):"Unexpected type")}function h(e){if(c(e))throw new Error("Assertion Failed: argument is undefined or null");return e}function f(e){return"function"===typeof e}function p(e,t){for(var n=Math.min(e.length,t.length),i=0;i<n;i++)g(e[i],t[i])}function g(e,t){if(o(t)){if(typeof e!==t)throw new Error("argument does not match constraint: typeof ".concat(t))}else if(f(t)){try{if(e instanceof t)return}catch(n){}if(!c(e)&&e.constructor===t)return;if(1===t.length&&!0===t.call(void 0,e))return;throw new Error("argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")}}function v(e){var t,n=[],r=(0,i.Z)(function(e){for(var t=[],n=Object.getPrototypeOf(e);Object.prototype!==n;)t=t.concat(Object.getOwnPropertyNames(n)),n=Object.getPrototypeOf(n);return t}(e));try{for(r.s();!(t=r.n()).done;){var o=t.value;"function"===typeof e[o]&&n.push(o)}}catch(a){r.e(a)}finally{r.f()}return n}function m(e,t){var n,r=function(e){return function(){var n=Array.prototype.slice.call(arguments,0);return t(e,n)}},o={},a=(0,i.Z)(e);try{for(a.s();!(n=a.n()).done;){var s=n.value;o[s]=r(s)}}catch(u){a.e(u)}finally{a.f()}return o}function _(e){return null===e?void 0:e}},38820:function(e,t,n){"use strict";function i(e){return e<0?0:e>255?255:0|e}function r(e){return e<0?0:e>4294967295?4294967295:0|e}n.d(t,{A:function(){return r},K:function(){return i}})},67775:function(e,t,n){"use strict";n.d(t,{o:function(){return m},q:function(){return k}});var i,r=n(4942),o=n(60136),a=n(43668),s=n(15671),u=n(43144),l=n(30487),c=n(36912),d=/^\w[\w\d+.-]*$/,h=/^\//,f=/^\/\//;var p="",g="/",v=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,m=function(){function e(t,n,i,r,o){var a=arguments.length>5&&void 0!==arguments[5]&&arguments[5];(0,s.Z)(this,e),"object"===typeof t?(this.scheme=t.scheme||p,this.authority=t.authority||p,this.path=t.path||p,this.query=t.query||p,this.fragment=t.fragment||p):(this.scheme=function(e,t){return e||t?e:"file"}(t,a),this.authority=n||p,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==g&&(t=g+t):t=g}return t}(this.scheme,i||p),this.query=r||p,this.fragment=o||p,function(e,t){if(!e.scheme&&t)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'.concat(e.authority,'", path: "').concat(e.path,'", query: "').concat(e.query,'", fragment: "').concat(e.fragment,'"}'));if(e.scheme&&!d.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!h.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(f.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,a))}return(0,u.Z)(e,[{key:"fsPath",get:function(){return k(this,!1)}},{key:"with",value:function(e){if(!e)return this;var t=e.scheme,n=e.authority,i=e.path,r=e.query,o=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=p),void 0===n?n=this.authority:null===n&&(n=p),void 0===i?i=this.path:null===i&&(i=p),void 0===r?r=this.query:null===r&&(r=p),void 0===o?o=this.fragment:null===o&&(o=p),t===this.scheme&&n===this.authority&&i===this.path&&r===this.query&&o===this.fragment?this:new y(t,n,i,r,o)}},{key:"toString",value:function(){return S(this,arguments.length>0&&void 0!==arguments[0]&&arguments[0])}},{key:"toJSON",value:function(){return this}}],[{key:"isUri",value:function(t){return t instanceof e||!!t&&("string"===typeof t.authority&&"string"===typeof t.fragment&&"string"===typeof t.path&&"string"===typeof t.query&&"string"===typeof t.scheme&&"string"===typeof t.fsPath&&"function"===typeof t.with&&"function"===typeof t.toString)}},{key:"parse",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=v.exec(e);return n?new y(n[2]||p,E(n[4]||p),E(n[5]||p),E(n[7]||p),E(n[9]||p),t):new y(p,p,p,p,p)}},{key:"file",value:function(e){var t=p;if(l.ED&&(e=e.replace(/\\/g,g)),e[0]===g&&e[1]===g){var n=e.indexOf(g,2);-1===n?(t=e.substring(2),e=g):(t=e.substring(2,n),e=e.substring(n)||g)}return new y("file",t,e,p,p)}},{key:"from",value:function(e){return new y(e.scheme,e.authority,e.path,e.query,e.fragment)}},{key:"joinPath",value:function(t){if(!t.path)throw new Error("[UriError]: cannot call joinPath on URI without path");for(var n,i,r,o=arguments.length,a=new Array(o>1?o-1:0),s=1;s<o;s++)a[s-1]=arguments[s];l.ED&&"file"===t.scheme?n=e.file((i=c.Ku).join.apply(i,[k(t,!0)].concat(a))).path:n=(r=c.KR).join.apply(r,[t.path].concat(a));return t.with({path:n})}},{key:"revive",value:function(t){if(t){if(t instanceof e)return t;var n=new y(t);return n._formatted=t.external,n._fsPath=t._sep===_?t.fsPath:null,n}return t}}]),e}(),_=l.ED?1:void 0,y=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(){var e;return(0,s.Z)(this,n),(e=t.apply(this,arguments))._formatted=null,e._fsPath=null,e}return(0,u.Z)(n,[{key:"fsPath",get:function(){return this._fsPath||(this._fsPath=k(this,!1)),this._fsPath}},{key:"toString",value:function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?S(this,!0):(this._formatted||(this._formatted=S(this,!1)),this._formatted)}},{key:"toJSON",value:function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=_),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}]),n}(m),b=(i={},(0,r.Z)(i,58,"%3A"),(0,r.Z)(i,47,"%2F"),(0,r.Z)(i,63,"%3F"),(0,r.Z)(i,35,"%23"),(0,r.Z)(i,91,"%5B"),(0,r.Z)(i,93,"%5D"),(0,r.Z)(i,64,"%40"),(0,r.Z)(i,33,"%21"),(0,r.Z)(i,36,"%24"),(0,r.Z)(i,38,"%26"),(0,r.Z)(i,39,"%27"),(0,r.Z)(i,40,"%28"),(0,r.Z)(i,41,"%29"),(0,r.Z)(i,42,"%2A"),(0,r.Z)(i,43,"%2B"),(0,r.Z)(i,44,"%2C"),(0,r.Z)(i,59,"%3B"),(0,r.Z)(i,61,"%3D"),(0,r.Z)(i,32,"%20"),i);function w(e,t){for(var n=void 0,i=-1,r=0;r<e.length;r++){var o=e.charCodeAt(r);if(o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o)-1!==i&&(n+=encodeURIComponent(e.substring(i,r)),i=-1),void 0!==n&&(n+=e.charAt(r));else{void 0===n&&(n=e.substr(0,r));var a=b[o];void 0!==a?(-1!==i&&(n+=encodeURIComponent(e.substring(i,r)),i=-1),n+=a):-1===i&&(i=r)}}return-1!==i&&(n+=encodeURIComponent(e.substring(i))),void 0!==n?n:e}function C(e){for(var t=void 0,n=0;n<e.length;n++){var i=e.charCodeAt(n);35===i||63===i?(void 0===t&&(t=e.substr(0,n)),t+=b[i]):void 0!==t&&(t+=e[n])}return void 0!==t?t:e}function k(e,t){var n;return n=e.authority&&e.path.length>1&&"file"===e.scheme?"//".concat(e.authority).concat(e.path):47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,l.ED&&(n=n.replace(/\//g,"\\")),n}function S(e,t){var n=t?C:w,i="",r=e.scheme,o=e.authority,a=e.path,s=e.query,u=e.fragment;if(r&&(i+=r,i+=":"),(o||"file"===r)&&(i+=g,i+=g),o){var l=o.indexOf("@");if(-1!==l){var c=o.substr(0,l);o=o.substr(l+1),-1===(l=c.indexOf(":"))?i+=n(c,!1):(i+=n(c.substr(0,l),!1),i+=":",i+=n(c.substr(l+1),!1)),i+="@"}-1===(l=(o=o.toLowerCase()).indexOf(":"))?i+=n(o,!1):(i+=n(o.substr(0,l),!1),i+=o.substr(l))}if(a){if(a.length>=3&&47===a.charCodeAt(0)&&58===a.charCodeAt(2)){var d=a.charCodeAt(1);d>=65&&d<=90&&(a="/".concat(String.fromCharCode(d+32),":").concat(a.substr(3)))}else if(a.length>=2&&58===a.charCodeAt(1)){var h=a.charCodeAt(0);h>=65&&h<=90&&(a="".concat(String.fromCharCode(h+32),":").concat(a.substr(2)))}i+=n(a,!0)}return s&&(i+="?",i+=n(s,!1)),u&&(i+="#",i+=t?u:w(u,!1)),i}function x(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+x(e.substr(3)):e}}var L=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function E(e){return e.match(L)?e.replace(L,(function(e){return x(e)})):e}},42659:function(e,t,n){"use strict";n.d(t,{Jq:function(){return i},X5:function(){return o},jG:function(){return r}});var i,r,o={ctrlCmd:!1,alt:!1};!function(e){e[e.Blur=1]="Blur",e[e.Gesture=2]="Gesture",e[e.Other=3]="Other"}(i||(i={})),function(e){e[e.NONE=0]="NONE",e[e.FIRST=1]="FIRST",e[e.SECOND=2]="SECOND",e[e.LAST=3]="LAST"}(r||(r={}))},37456:function(e,t,n){"use strict";n.d(t,{Mj:function(){return i.languages}});var i=n(14717)},47014:function(e,t,n){"use strict";n.d(t,{V:function(){return k},P:function(){return w}});var i=n(37762),r=n(11752),o=n(61120),a=n(60136),s=n(43668),u=n(15671),l=n(43144),c=n(84539),d=n(11732),h=n(81626),f=n(30487),p=function(){function e(t,n){(0,u.Z)(this,e),this.chr=t,this.type=n,this.width=0}return(0,l.Z)(e,[{key:"fulfill",value:function(e){this.width=e}}]),e}(),g=function(){function e(t,n){(0,u.Z)(this,e),this._bareFontInfo=t,this._requests=n,this._container=null,this._testElements=null}return(0,l.Z)(e,[{key:"read",value:function(){this._createDomElements(),document.body.appendChild(this._container),this._readFromDomElements(),document.body.removeChild(this._container),this._container=null,this._testElements=null}},{key:"_createDomElements",value:function(){var t=document.createElement("div");t.style.position="absolute",t.style.top="-50000px",t.style.width="50000px";var n=document.createElement("div");n.style.fontFamily=this._bareFontInfo.getMassagedFontFamily(),n.style.fontWeight=this._bareFontInfo.fontWeight,n.style.fontSize=this._bareFontInfo.fontSize+"px",n.style.fontFeatureSettings=this._bareFontInfo.fontFeatureSettings,n.style.lineHeight=this._bareFontInfo.lineHeight+"px",n.style.letterSpacing=this._bareFontInfo.letterSpacing+"px",t.appendChild(n);var r=document.createElement("div");r.style.fontFamily=this._bareFontInfo.getMassagedFontFamily(),r.style.fontWeight="bold",r.style.fontSize=this._bareFontInfo.fontSize+"px",r.style.fontFeatureSettings=this._bareFontInfo.fontFeatureSettings,r.style.lineHeight=this._bareFontInfo.lineHeight+"px",r.style.letterSpacing=this._bareFontInfo.letterSpacing+"px",t.appendChild(r);var o=document.createElement("div");o.style.fontFamily=this._bareFontInfo.getMassagedFontFamily(),o.style.fontWeight=this._bareFontInfo.fontWeight,o.style.fontSize=this._bareFontInfo.fontSize+"px",o.style.fontFeatureSettings=this._bareFontInfo.fontFeatureSettings,o.style.lineHeight=this._bareFontInfo.lineHeight+"px",o.style.letterSpacing=this._bareFontInfo.letterSpacing+"px",o.style.fontStyle="italic",t.appendChild(o);var a,s=[],u=(0,i.Z)(this._requests);try{for(u.s();!(a=u.n()).done;){var l=a.value,c=void 0;0===l.type&&(c=n),2===l.type&&(c=r),1===l.type&&(c=o),c.appendChild(document.createElement("br"));var d=document.createElement("span");e._render(d,l),c.appendChild(d),s.push(d)}}catch(h){u.e(h)}finally{u.f()}this._container=t,this._testElements=s}},{key:"_readFromDomElements",value:function(){for(var e=0,t=this._requests.length;e<t;e++){var n=this._requests[e],i=this._testElements[e];n.fulfill(i.offsetWidth/256)}}}],[{key:"_render",value:function(e,t){if(" "===t.chr){for(var n="\xa0",i=0;i<8;i++)n+=n;e.innerText=n}else{for(var r=t.chr,o=0;o<8;o++)r+=r;e.textContent=r}}}]),e}();var v=n(75949),m=n(32995),_=n(76556),y=n(28702),b=function(){function e(){(0,u.Z)(this,e),this._keys=Object.create(null),this._values=Object.create(null)}return(0,l.Z)(e,[{key:"has",value:function(e){var t=e.getId();return!!this._values[t]}},{key:"get",value:function(e){var t=e.getId();return this._values[t]}},{key:"put",value:function(e,t){var n=e.getId();this._keys[n]=e,this._values[n]=t}},{key:"remove",value:function(e){var t=e.getId();delete this._keys[t],delete this._values[t]}},{key:"getValues",value:function(){var e=this;return Object.keys(this._keys).map((function(t){return e._values[t]}))}}]),e}();function w(){C.INSTANCE.clearCache()}var C=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(){var e;return(0,u.Z)(this,n),(e=t.call(this))._onDidChange=e._register(new d.Q5),e.onDidChange=e._onDidChange.event,e._cache=new b,e._evictUntrustedReadingsTimeout=-1,e}return(0,l.Z)(n,[{key:"dispose",value:function(){-1!==this._evictUntrustedReadingsTimeout&&(clearTimeout(this._evictUntrustedReadingsTimeout),this._evictUntrustedReadingsTimeout=-1),(0,r.Z)((0,o.Z)(n.prototype),"dispose",this).call(this)}},{key:"clearCache",value:function(){this._cache=new b,this._onDidChange.fire()}},{key:"_writeToCache",value:function(e,t){var n=this;this._cache.put(e,t),t.isTrusted||-1!==this._evictUntrustedReadingsTimeout||(this._evictUntrustedReadingsTimeout=setTimeout((function(){n._evictUntrustedReadingsTimeout=-1,n._evictUntrustedReadings()}),5e3))}},{key:"_evictUntrustedReadings",value:function(){var e,t=this._cache.getValues(),n=!1,r=(0,i.Z)(t);try{for(r.s();!(e=r.n()).done;){var o=e.value;o.isTrusted||(n=!0,this._cache.remove(o))}}catch(a){r.e(a)}finally{r.f()}n&&this._onDidChange.fire()}},{key:"readConfiguration",value:function(e){if(!this._cache.has(e)){var t=n._actualReadConfiguration(e);(t.typicalHalfwidthCharacterWidth<=2||t.typicalFullwidthCharacterWidth<=2||t.spaceWidth<=2||t.maxDigitWidth<=2)&&(t=new y.pR({zoomLevel:c.px(),pixelRatio:c.mX(),fontFamily:t.fontFamily,fontWeight:t.fontWeight,fontSize:t.fontSize,fontFeatureSettings:t.fontFeatureSettings,lineHeight:t.lineHeight,letterSpacing:t.letterSpacing,isMonospace:t.isMonospace,typicalHalfwidthCharacterWidth:Math.max(t.typicalHalfwidthCharacterWidth,5),typicalFullwidthCharacterWidth:Math.max(t.typicalFullwidthCharacterWidth,5),canUseHalfwidthRightwardsArrow:t.canUseHalfwidthRightwardsArrow,spaceWidth:Math.max(t.spaceWidth,5),middotWidth:Math.max(t.middotWidth,5),wsmiddotWidth:Math.max(t.wsmiddotWidth,5),maxDigitWidth:Math.max(t.maxDigitWidth,5)},!1)),this._writeToCache(e,t)}return this._cache.get(e)}}],[{key:"createRequest",value:function(e,t,n,i){var r=new p(e,t);return n.push(r),i&&i.push(r),r}},{key:"_actualReadConfiguration",value:function(e){var t=[],n=[],i=this.createRequest("n",0,t,n),r=this.createRequest("\uff4d",0,t,null),o=this.createRequest(" ",0,t,n),a=this.createRequest("0",0,t,n),s=this.createRequest("1",0,t,n),u=this.createRequest("2",0,t,n),l=this.createRequest("3",0,t,n),d=this.createRequest("4",0,t,n),h=this.createRequest("5",0,t,n),f=this.createRequest("6",0,t,n),p=this.createRequest("7",0,t,n),v=this.createRequest("8",0,t,n),m=this.createRequest("9",0,t,n),b=this.createRequest("\u2192",0,t,n),w=this.createRequest("\uffeb",0,t,null),C=this.createRequest("\xb7",0,t,n),k=this.createRequest(String.fromCharCode(11825),0,t,null);this.createRequest("|",0,t,n),this.createRequest("/",0,t,n),this.createRequest("-",0,t,n),this.createRequest("_",0,t,n),this.createRequest("i",0,t,n),this.createRequest("l",0,t,n),this.createRequest("m",0,t,n),this.createRequest("|",1,t,n),this.createRequest("_",1,t,n),this.createRequest("i",1,t,n),this.createRequest("l",1,t,n),this.createRequest("m",1,t,n),this.createRequest("n",1,t,n),this.createRequest("|",2,t,n),this.createRequest("_",2,t,n),this.createRequest("i",2,t,n),this.createRequest("l",2,t,n),this.createRequest("m",2,t,n),this.createRequest("n",2,t,n),function(e,t){new g(e,t).read()}(e,t);for(var S=Math.max(a.width,s.width,u.width,l.width,d.width,h.width,f.width,p.width,v.width,m.width),x=e.fontFeatureSettings===_.n0.OFF,L=n[0].width,E=1,D=n.length;x&&E<D;E++){var N=L-n[E].width;if(N<-.001||N>.001){x=!1;break}}var M=!0;x&&w.width!==L&&(M=!1),w.width>b.width&&(M=!1);var T=c.WP()>2e3;return new y.pR({zoomLevel:c.px(),pixelRatio:c.mX(),fontFamily:e.fontFamily,fontWeight:e.fontWeight,fontSize:e.fontSize,fontFeatureSettings:e.fontFeatureSettings,lineHeight:e.lineHeight,letterSpacing:e.letterSpacing,isMonospace:x,typicalHalfwidthCharacterWidth:i.width,typicalFullwidthCharacterWidth:r.width,canUseHalfwidthRightwardsArrow:M,spaceWidth:o.width,middotWidth:C.width,wsmiddotWidth:k.width,maxDigitWidth:S},T)}}]),n}(h.JT);C.INSTANCE=new C;var k=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(e,i){var r,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3?arguments[3]:void 0;return(0,u.Z)(this,n),(r=t.call(this,e,i)).accessibilityService=a,r._elementSizeObserver=r._register(new v.I(o,i.dimension,(function(){return r._recomputeOptions()}))),r._register(C.INSTANCE.onDidChange((function(){return r._recomputeOptions()}))),r._validatedOptions.get(10)&&r._elementSizeObserver.startObserving(),r._register(c.fX((function(e){return r._recomputeOptions()}))),r._register(r.accessibilityService.onDidChangeScreenReaderOptimized((function(){return r._recomputeOptions()}))),r._recomputeOptions(),r}return(0,l.Z)(n,[{key:"observeReferenceElement",value:function(e){this._elementSizeObserver.observe(e)}},{key:"updatePixelRatio",value:function(){this._recomputeOptions()}},{key:"_getEnvConfiguration",value:function(){return{extraEditorClassName:n._getExtraEditorClassName(),outerWidth:this._elementSizeObserver.getWidth(),outerHeight:this._elementSizeObserver.getHeight(),emptySelectionClipboard:c.Pf||c.vU,pixelRatio:c.mX(),zoomLevel:c.px(),accessibilitySupport:this.accessibilityService.isScreenReaderOptimized()?2:this.accessibilityService.getAccessibilitySupport()}}},{key:"readConfiguration",value:function(e){return C.INSTANCE.readConfiguration(e)}}],[{key:"applyFontInfoSlow",value:function(e,t){e.style.fontFamily=t.getMassagedFontFamily(),e.style.fontWeight=t.fontWeight,e.style.fontSize=t.fontSize+"px",e.style.fontFeatureSettings=t.fontFeatureSettings,e.style.lineHeight=t.lineHeight+"px",e.style.letterSpacing=t.letterSpacing+"px"}},{key:"applyFontInfo",value:function(e,t){e.setFontFamily(t.getMassagedFontFamily()),e.setFontWeight(t.fontWeight),e.setFontSize(t.fontSize),e.setFontFeatureSettings(t.fontFeatureSettings),e.setLineHeight(t.lineHeight),e.setLetterSpacing(t.letterSpacing)}},{key:"_getExtraEditorClassName",value:function(){var e="";return c.G6||c.MG||(e+="no-user-select "),c.G6&&(e+="no-minimap-shadow "),f.dz&&(e+="mac "),e}}]),n}(m.fv)},75949:function(e,t,n){"use strict";n.d(t,{I:function(){return l}});var i=n(15671),r=n(43144),o=n(11752),a=n(61120),s=n(60136),u=n(43668),l=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,r,o){var a;return(0,i.Z)(this,n),(a=t.call(this)).referenceDomElement=e,a.changeCallback=o,a.width=-1,a.height=-1,a.resizeObserver=null,a.measureReferenceDomElementToken=-1,a.measureReferenceDomElement(!1,r),a}return(0,r.Z)(n,[{key:"dispose",value:function(){this.stopObserving(),(0,o.Z)((0,a.Z)(n.prototype),"dispose",this).call(this)}},{key:"getWidth",value:function(){return this.width}},{key:"getHeight",value:function(){return this.height}},{key:"startObserving",value:function(){var e=this;"undefined"!==typeof ResizeObserver?!this.resizeObserver&&this.referenceDomElement&&(this.resizeObserver=new ResizeObserver((function(t){t&&t[0]&&t[0].contentRect?e.observe({width:t[0].contentRect.width,height:t[0].contentRect.height}):e.observe()})),this.resizeObserver.observe(this.referenceDomElement)):-1===this.measureReferenceDomElementToken&&(this.measureReferenceDomElementToken=setInterval((function(){return e.observe()}),100))}},{key:"stopObserving",value:function(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),-1!==this.measureReferenceDomElementToken&&(clearInterval(this.measureReferenceDomElementToken),this.measureReferenceDomElementToken=-1)}},{key:"observe",value:function(e){this.measureReferenceDomElement(!0,e)}},{key:"measureReferenceDomElement",value:function(e,t){var n=0,i=0;t?(n=t.width,i=t.height):this.referenceDomElement&&(n=this.referenceDomElement.clientWidth,i=this.referenceDomElement.clientHeight),n=Math.max(5,n),i=Math.max(5,i),this.width===n&&this.height===i||(this.width=n,this.height=i,e&&this.changeCallback())}}]),n}(n(81626).JT)},8518:function(e,t,n){"use strict";n.d(t,{wk:function(){return M},Ox:function(){return D}});var i,r,o=n(29439),a=n(15671),s=n(43144),u=n(60136),l=n(43668),c=n(56345),d=n(84539),h=n(25941),f=n(52180),p=n(33399),g=n(8295),v=n(16274),m=n(67297),_=n(67033),y=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,null,[{key:"columnSelect",value:function(e,t,n,i,r,o){for(var a=Math.abs(r-n)+1,s=n>r,u=i>o,l=i<o,c=[],d=0;d<a;d++){var h=n+(s?-d:d),f=v.io.columnFromVisibleColumn2(e,t,h,i),p=v.io.columnFromVisibleColumn2(e,t,h,o),g=v.io.visibleColumnFromColumn2(e,t,new m.L(h,f)),y=v.io.visibleColumnFromColumn2(e,t,new m.L(h,p));if(l){if(g>o)continue;if(y<i)continue}if(u){if(y>i)continue;if(g<o)continue}c.push(new v.rS(new _.e(h,f,h,f),0,new m.L(h,p),0))}if(0===c.length)for(var b=0;b<a;b++){var w=n+(s?-b:b),C=t.getLineMaxColumn(w);c.push(new v.rS(new _.e(w,C,w,C),0,new m.L(w,C),0))}return{viewStates:c,reversed:s,fromLineNumber:n,fromVisualColumn:i,toLineNumber:r,toVisualColumn:o}}},{key:"columnSelectLeft",value:function(t,n,i){var r=i.toViewVisualColumn;return r>0&&r--,e.columnSelect(t,n,i.fromViewLineNumber,i.fromViewVisualColumn,i.toViewLineNumber,r)}},{key:"columnSelectRight",value:function(e,t,n){for(var i=0,r=Math.min(n.fromViewLineNumber,n.toViewLineNumber),o=Math.max(n.fromViewLineNumber,n.toViewLineNumber),a=r;a<=o;a++){var s=t.getLineMaxColumn(a),u=v.io.visibleColumnFromColumn2(e,t,new m.L(a,s));i=Math.max(i,u)}var l=n.toViewVisualColumn;return l<i&&l++,this.columnSelect(e,t,n.fromViewLineNumber,n.fromViewVisualColumn,n.toViewLineNumber,l)}},{key:"columnSelectUp",value:function(e,t,n,i){var r=i?e.pageSize:1,o=Math.max(1,n.toViewLineNumber-r);return this.columnSelect(e,t,n.fromViewLineNumber,n.fromViewVisualColumn,o,n.toViewVisualColumn)}},{key:"columnSelectDown",value:function(e,t,n,i){var r=i?e.pageSize:1,o=Math.min(t.getLineCount(),n.toViewLineNumber+r);return this.columnSelect(e,t,n.fromViewLineNumber,n.fromViewVisualColumn,o,n.toViewVisualColumn)}}]),e}(),b=n(39765),w=n(55561),C=n(22268),k=n(21204),S=n(18948),x=n(51519),L=0,E=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"runEditorCommand",value:function(e,t,n){var i=t._getViewModel();i&&this.runCoreEditorCommand(i,n||{})}}]),n}(p._l);!function(e){e.description={description:"Scroll editor in the given direction",args:[{name:"Editor scroll argument object",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'to': A mandatory direction value.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'up', 'down'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'line', 'wrappedLine', 'page', 'halfPage'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\n\t\t\t\t\t* 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n\t\t\t\t",constraint:function(e){if(!h.Kn(e))return!1;var t=e;return!!h.HD(t.to)&&(!(!h.o8(t.by)&&!h.HD(t.by))&&(!(!h.o8(t.value)&&!h.hj(t.value))&&!(!h.o8(t.revealCursor)&&!h.jn(t.revealCursor))))},schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["up","down"]},by:{type:"string",enum:["line","wrappedLine","page","halfPage"]},value:{type:"number",default:1},revealCursor:{type:"boolean"}}}}]},e.RawDirection={Up:"up",Down:"down"},e.RawUnit={Line:"line",WrappedLine:"wrappedLine",Page:"page",HalfPage:"halfPage"},e.parse=function(t){var n,i;switch(t.to){case e.RawDirection.Up:n=1;break;case e.RawDirection.Down:n=2;break;default:return null}switch(t.by){case e.RawUnit.Line:i=1;break;case e.RawUnit.WrappedLine:i=2;break;case e.RawUnit.Page:i=3;break;case e.RawUnit.HalfPage:i=4;break;default:i=2}return{direction:n,unit:i,value:Math.floor(t.value||1),revealCursor:!!t.revealCursor,select:!!t.select}}}(i||(i={})),function(e){e.description={description:"Reveal the given line at the given logical position",args:[{name:"Reveal line argument object",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'lineNumber': A mandatory line number value.\n\t\t\t\t\t* 'at': Logical position at which line has to be revealed.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'top', 'center', 'bottom'\n\t\t\t\t\t\t```\n\t\t\t\t",constraint:function(e){if(!h.Kn(e))return!1;var t=e;return!(!h.hj(t.lineNumber)&&!h.HD(t.lineNumber))&&!(!h.o8(t.at)&&!h.HD(t.at))},schema:{type:"object",required:["lineNumber"],properties:{lineNumber:{type:["number","string"]},at:{type:"string",enum:["top","center","bottom"]}}}}]},e.RawAtArgument={Top:"top",Center:"center",Bottom:"bottom"}}(r||(r={}));var D,N=function(){function e(t){var n=this;(0,a.Z)(this,e),t.addImplementation(1e4,"code-editor",(function(e,t){var i=e.get(g.$).getFocusedCodeEditor();return!(!i||!i.hasTextFocus())&&n._runEditorCommand(e,i,t)})),t.addImplementation(1e3,"generic-dom-input-textarea",(function(e,t){var i=document.activeElement;return!!(i&&["input","textarea"].indexOf(i.tagName.toLowerCase())>=0)&&(n.runDOMCommand(),!0)})),t.addImplementation(0,"generic-dom",(function(e,t){var i=e.get(g.$).getActiveCodeEditor();return!!i&&(i.focus(),n._runEditorCommand(e,i,t))}))}return(0,s.Z)(e,[{key:"_runEditorCommand",value:function(e,t,n){var i=this.runEditorCommand(e,t,n);return i||!0}}]),e}();!function(e){var t=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._inSelectionMode=e.inSelectionMode,i}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[w.P.moveTo(e,e.getPrimaryCursorState(),this._inSelectionMode,t.position,t.viewPosition)]),e.revealPrimaryCursor(t.source,!0)}}]),n}(E);e.MoveTo=(0,p.fK)(new t({id:"_moveTo",inSelectionMode:!1,precondition:void 0})),e.MoveToSelect=(0,p.fK)(new t({id:"_moveToSelect",inSelectionMode:!0,precondition:void 0}));var n=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement();var n=this._getColumnSelectResult(e,e.getPrimaryCursorState(),e.getCursorColumnSelectData(),t);e.setCursorStates(t.source,3,n.viewStates.map((function(e){return v.Vi.fromViewState(e)}))),e.setCursorColumnSelectData({isReal:!0,fromViewLineNumber:n.fromLineNumber,fromViewVisualColumn:n.fromVisualColumn,toViewLineNumber:n.toLineNumber,toViewVisualColumn:n.toVisualColumn}),n.reversed?e.revealTopMostCursor(t.source):e.revealBottomMostCursor(t.source)}}]),n}(E);e.ColumnSelect=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"columnSelect",precondition:void 0})}return(0,s.Z)(n,[{key:"_getColumnSelectResult",value:function(e,t,n,i){var r=e.model.validatePosition(i.position),o=e.coordinatesConverter.validateViewPosition(new m.L(i.viewPosition.lineNumber,i.viewPosition.column),r),a=i.doColumnSelect?n.fromViewLineNumber:o.lineNumber,s=i.doColumnSelect?n.fromViewVisualColumn:i.mouseColumn-1;return y.columnSelect(e.cursorConfig,e,a,s,o.lineNumber,i.mouseColumn-1)}}]),n}(n))),e.CursorColumnSelectLeft=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"cursorColumnSelectLeft",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:3599,linux:{primary:0}}})}return(0,s.Z)(n,[{key:"_getColumnSelectResult",value:function(e,t,n,i){return y.columnSelectLeft(e.cursorConfig,e,n)}}]),n}(n))),e.CursorColumnSelectRight=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"cursorColumnSelectRight",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:3601,linux:{primary:0}}})}return(0,s.Z)(n,[{key:"_getColumnSelectResult",value:function(e,t,n,i){return y.columnSelectRight(e.cursorConfig,e,n)}}]),n}(n)));var o=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._isPaged=e.isPaged,i}return(0,s.Z)(n,[{key:"_getColumnSelectResult",value:function(e,t,n,i){return y.columnSelectUp(e.cursorConfig,e,n,this._isPaged)}}]),n}(n);e.CursorColumnSelectUp=(0,p.fK)(new o({isPaged:!1,id:"cursorColumnSelectUp",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:3600,linux:{primary:0}}})),e.CursorColumnSelectPageUp=(0,p.fK)(new o({isPaged:!0,id:"cursorColumnSelectPageUp",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:3595,linux:{primary:0}}}));var h=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._isPaged=e.isPaged,i}return(0,s.Z)(n,[{key:"_getColumnSelectResult",value:function(e,t,n,i){return y.columnSelectDown(e.cursorConfig,e,n,this._isPaged)}}]),n}(n);e.CursorColumnSelectDown=(0,p.fK)(new h({isPaged:!1,id:"cursorColumnSelectDown",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:3602,linux:{primary:0}}})),e.CursorColumnSelectPageDown=(0,p.fK)(new h({isPaged:!0,id:"cursorColumnSelectPageDown",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:3596,linux:{primary:0}}}));var g=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"cursorMove",precondition:void 0,description:w.N.description})}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){var n=w.N.parse(t);n&&this._runCursorMove(e,t.source,n)}},{key:"_runCursorMove",value:function(e,t,i){e.model.pushStackElement(),e.setCursorStates(t,3,n._move(e,e.getCursorStates(),i)),e.revealPrimaryCursor(t,!0)}}],[{key:"_move",value:function(e,t,n){var i=n.select,r=n.value;switch(n.direction){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:return w.P.simpleMove(e,t,n.direction,i,r,n.unit);case 11:case 13:case 12:case 14:return w.P.viewportMove(e,t,n.direction,i,r);default:return null}}}]),n}(E);e.CursorMoveImpl=g,e.CursorMove=(0,p.fK)(new g);var b=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._staticArgs=e.args,i}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){var n=this._staticArgs;-1===this._staticArgs.value&&(n={direction:this._staticArgs.direction,unit:this._staticArgs.unit,select:this._staticArgs.select,value:e.cursorConfig.pageSize}),e.model.pushStackElement(),e.setCursorStates(t.source,3,w.P.simpleMove(e,e.getCursorStates(),n.direction,n.select,n.value,n.unit)),e.revealPrimaryCursor(t.source,!0)}}]),n}(E);e.CursorLeft=(0,p.fK)(new b({args:{direction:0,unit:0,select:!1,value:1},id:"cursorLeft",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:15,mac:{primary:15,secondary:[288]}}})),e.CursorLeftSelect=(0,p.fK)(new b({args:{direction:0,unit:0,select:!0,value:1},id:"cursorLeftSelect",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:1039}})),e.CursorRight=(0,p.fK)(new b({args:{direction:1,unit:0,select:!1,value:1},id:"cursorRight",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:17,mac:{primary:17,secondary:[292]}}})),e.CursorRightSelect=(0,p.fK)(new b({args:{direction:1,unit:0,select:!0,value:1},id:"cursorRightSelect",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:1041}})),e.CursorUp=(0,p.fK)(new b({args:{direction:2,unit:2,select:!1,value:1},id:"cursorUp",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:16,mac:{primary:16,secondary:[302]}}})),e.CursorUpSelect=(0,p.fK)(new b({args:{direction:2,unit:2,select:!0,value:1},id:"cursorUpSelect",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:1040,secondary:[3088],mac:{primary:1040},linux:{primary:1040}}})),e.CursorPageUp=(0,p.fK)(new b({args:{direction:2,unit:2,select:!1,value:-1},id:"cursorPageUp",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:11}})),e.CursorPageUpSelect=(0,p.fK)(new b({args:{direction:2,unit:2,select:!0,value:-1},id:"cursorPageUpSelect",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:1035}})),e.CursorDown=(0,p.fK)(new b({args:{direction:3,unit:2,select:!1,value:1},id:"cursorDown",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:18,mac:{primary:18,secondary:[300]}}})),e.CursorDownSelect=(0,p.fK)(new b({args:{direction:3,unit:2,select:!0,value:1},id:"cursorDownSelect",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:1042,secondary:[3090],mac:{primary:1042},linux:{primary:1042}}})),e.CursorPageDown=(0,p.fK)(new b({args:{direction:3,unit:2,select:!1,value:-1},id:"cursorPageDown",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:12}})),e.CursorPageDownSelect=(0,p.fK)(new b({args:{direction:3,unit:2,select:!0,value:-1},id:"cursorPageDownSelect",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:1036}})),e.CreateCursor=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"createCursor",precondition:void 0})}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){var n;n=t.wholeLine?w.P.line(e,e.getPrimaryCursorState(),!1,t.position,t.viewPosition):w.P.moveTo(e,e.getPrimaryCursorState(),!1,t.position,t.viewPosition);var i=e.getCursorStates();if(i.length>1)for(var r=n.modelState?n.modelState.position:null,o=n.viewState?n.viewState.position:null,a=0,s=i.length;a<s;a++){var u=i[a];if((!r||u.modelState.selection.containsPosition(r))&&(!o||u.viewState.selection.containsPosition(o)))return i.splice(a,1),e.model.pushStackElement(),void e.setCursorStates(t.source,3,i)}i.push(n),e.model.pushStackElement(),e.setCursorStates(t.source,3,i)}}]),n}(E))),e.LastCursorMoveToSelect=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"_lastCursorMoveToSelect",precondition:void 0})}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){var n=e.getLastAddedCursorIndex(),i=e.getCursorStates(),r=i.slice(0);r[n]=w.P.moveTo(e,i[n],!0,t.position,t.viewPosition),e.model.pushStackElement(),e.setCursorStates(t.source,3,r)}}]),n}(E)));var C=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._inSelectionMode=e.inSelectionMode,i}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,w.P.moveToBeginningOfLine(e,e.getCursorStates(),this._inSelectionMode)),e.revealPrimaryCursor(t.source,!0)}}]),n}(E);e.CursorHome=(0,p.fK)(new C({inSelectionMode:!1,id:"cursorHome",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:14,mac:{primary:14,secondary:[2063]}}})),e.CursorHomeSelect=(0,p.fK)(new C({inSelectionMode:!0,id:"cursorHomeSelect",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:1038,mac:{primary:1038,secondary:[3087]}}}));var S=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._inSelectionMode=e.inSelectionMode,i}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,this._exec(e.getCursorStates())),e.revealPrimaryCursor(t.source,!0)}},{key:"_exec",value:function(e){for(var t=[],n=0,i=e.length;n<i;n++){var r=e[n],o=r.modelState.position.lineNumber;t[n]=v.Vi.fromModelState(r.modelState.move(this._inSelectionMode,o,1,0))}return t}}]),n}(E);e.CursorLineStart=(0,p.fK)(new S({inSelectionMode:!1,id:"cursorLineStart",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:0,mac:{primary:287}}})),e.CursorLineStartSelect=(0,p.fK)(new S({inSelectionMode:!0,id:"cursorLineStartSelect",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:0,mac:{primary:1311}}}));var x=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._inSelectionMode=e.inSelectionMode,i}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,w.P.moveToEndOfLine(e,e.getCursorStates(),this._inSelectionMode,t.sticky||!1)),e.revealPrimaryCursor(t.source,!0)}}]),n}(E);e.CursorEnd=(0,p.fK)(new x({inSelectionMode:!1,id:"cursorEnd",precondition:void 0,kbOpts:{args:{sticky:!1},weight:L,kbExpr:k.u.textInputFocus,primary:13,mac:{primary:13,secondary:[2065]}},description:{description:"Go to End",args:[{name:"args",schema:{type:"object",properties:{sticky:{description:c.N("stickydesc","Stick to the end even when going to longer lines"),type:"boolean",default:!1}}}}]}})),e.CursorEndSelect=(0,p.fK)(new x({inSelectionMode:!0,id:"cursorEndSelect",precondition:void 0,kbOpts:{args:{sticky:!1},weight:L,kbExpr:k.u.textInputFocus,primary:1037,mac:{primary:1037,secondary:[3089]}},description:{description:"Select to End",args:[{name:"args",schema:{type:"object",properties:{sticky:{description:c.N("stickydesc","Stick to the end even when going to longer lines"),type:"boolean",default:!1}}}}]}}));var D=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._inSelectionMode=e.inSelectionMode,i}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,this._exec(e,e.getCursorStates())),e.revealPrimaryCursor(t.source,!0)}},{key:"_exec",value:function(e,t){for(var n=[],i=0,r=t.length;i<r;i++){var o=t[i],a=o.modelState.position.lineNumber,s=e.model.getLineMaxColumn(a);n[i]=v.Vi.fromModelState(o.modelState.move(this._inSelectionMode,a,s,0))}return n}}]),n}(E);e.CursorLineEnd=(0,p.fK)(new D({inSelectionMode:!1,id:"cursorLineEnd",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:0,mac:{primary:291}}})),e.CursorLineEndSelect=(0,p.fK)(new D({inSelectionMode:!0,id:"cursorLineEndSelect",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:0,mac:{primary:1315}}}));var M=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._inSelectionMode=e.inSelectionMode,i}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,w.P.moveToBeginningOfBuffer(e,e.getCursorStates(),this._inSelectionMode)),e.revealPrimaryCursor(t.source,!0)}}]),n}(E);e.CursorTop=(0,p.fK)(new M({inSelectionMode:!1,id:"cursorTop",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:2062,mac:{primary:2064}}})),e.CursorTopSelect=(0,p.fK)(new M({inSelectionMode:!0,id:"cursorTopSelect",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:3086,mac:{primary:3088}}}));var T=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._inSelectionMode=e.inSelectionMode,i}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,w.P.moveToEndOfBuffer(e,e.getCursorStates(),this._inSelectionMode)),e.revealPrimaryCursor(t.source,!0)}}]),n}(E);e.CursorBottom=(0,p.fK)(new T({inSelectionMode:!1,id:"cursorBottom",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:2061,mac:{primary:2066}}})),e.CursorBottomSelect=(0,p.fK)(new T({inSelectionMode:!0,id:"cursorBottomSelect",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:3085,mac:{primary:3090}}}));var I=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"editorScroll",precondition:void 0,description:i.description})}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){var n=i.parse(t);n&&this._runEditorScroll(e,t.source,n)}},{key:"_runEditorScroll",value:function(e,t,n){var i=this._computeDesiredScrollTop(e,n);if(n.revealCursor){var r=e.getCompletelyVisibleViewRangeAtScrollTop(i);e.setCursorStates(t,3,[w.P.findPositionInViewportIfOutside(e,e.getPrimaryCursorState(),r,n.select)])}e.setScrollTop(i,0)}},{key:"_computeDesiredScrollTop",value:function(e,t){if(1===t.unit){var n,i=e.getCompletelyVisibleViewRange(),r=e.coordinatesConverter.convertViewRangeToModelRange(i);n=1===t.direction?Math.max(1,r.startLineNumber-t.value):Math.min(e.model.getLineCount(),r.startLineNumber+t.value);var o=e.coordinatesConverter.convertModelPositionToViewPosition(new m.L(n,1));return e.getVerticalOffsetForLineNumber(o.lineNumber)}var a;a=3===t.unit?e.cursorConfig.pageSize*t.value:4===t.unit?Math.round(e.cursorConfig.pageSize/2)*t.value:t.value;var s=(1===t.direction?-1:1)*a;return e.getScrollTop()+s*e.cursorConfig.lineHeight}}]),n}(E);e.EditorScrollImpl=I,e.EditorScroll=(0,p.fK)(new I),e.ScrollLineUp=(0,p.fK)(new(function(t){(0,u.Z)(i,t);var n=(0,l.Z)(i);function i(){return(0,a.Z)(this,i),n.call(this,{id:"scrollLineUp",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:2064,mac:{primary:267}}})}return(0,s.Z)(i,[{key:"runCoreEditorCommand",value:function(t,n){e.EditorScroll._runEditorScroll(t,n.source,{direction:1,unit:2,value:1,revealCursor:!1,select:!1})}}]),i}(E))),e.ScrollPageUp=(0,p.fK)(new(function(t){(0,u.Z)(i,t);var n=(0,l.Z)(i);function i(){return(0,a.Z)(this,i),n.call(this,{id:"scrollPageUp",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:2059,win:{primary:523},linux:{primary:523}}})}return(0,s.Z)(i,[{key:"runCoreEditorCommand",value:function(t,n){e.EditorScroll._runEditorScroll(t,n.source,{direction:1,unit:3,value:1,revealCursor:!1,select:!1})}}]),i}(E))),e.ScrollLineDown=(0,p.fK)(new(function(t){(0,u.Z)(i,t);var n=(0,l.Z)(i);function i(){return(0,a.Z)(this,i),n.call(this,{id:"scrollLineDown",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:2066,mac:{primary:268}}})}return(0,s.Z)(i,[{key:"runCoreEditorCommand",value:function(t,n){e.EditorScroll._runEditorScroll(t,n.source,{direction:2,unit:2,value:1,revealCursor:!1,select:!1})}}]),i}(E))),e.ScrollPageDown=(0,p.fK)(new(function(t){(0,u.Z)(i,t);var n=(0,l.Z)(i);function i(){return(0,a.Z)(this,i),n.call(this,{id:"scrollPageDown",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:2060,win:{primary:524},linux:{primary:524}}})}return(0,s.Z)(i,[{key:"runCoreEditorCommand",value:function(t,n){e.EditorScroll._runEditorScroll(t,n.source,{direction:2,unit:3,value:1,revealCursor:!1,select:!1})}}]),i}(E)));var O=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._inSelectionMode=e.inSelectionMode,i}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[w.P.word(e,e.getPrimaryCursorState(),this._inSelectionMode,t.position)]),e.revealPrimaryCursor(t.source,!0)}}]),n}(E);e.WordSelect=(0,p.fK)(new O({inSelectionMode:!1,id:"_wordSelect",precondition:void 0})),e.WordSelectDrag=(0,p.fK)(new O({inSelectionMode:!0,id:"_wordSelectDrag",precondition:void 0})),e.LastCursorWordSelect=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"lastCursorWordSelect",precondition:void 0})}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){var n=e.getLastAddedCursorIndex(),i=e.getCursorStates(),r=i.slice(0),o=i[n];r[n]=w.P.word(e,o,o.modelState.hasSelection(),t.position),e.model.pushStackElement(),e.setCursorStates(t.source,3,r)}}]),n}(E)));var A=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._inSelectionMode=e.inSelectionMode,i}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[w.P.line(e,e.getPrimaryCursorState(),this._inSelectionMode,t.position,t.viewPosition)]),e.revealPrimaryCursor(t.source,!1)}}]),n}(E);e.LineSelect=(0,p.fK)(new A({inSelectionMode:!1,id:"_lineSelect",precondition:void 0})),e.LineSelectDrag=(0,p.fK)(new A({inSelectionMode:!0,id:"_lineSelectDrag",precondition:void 0}));var R=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,a.Z)(this,n),(i=t.call(this,e))._inSelectionMode=e.inSelectionMode,i}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){var n=e.getLastAddedCursorIndex(),i=e.getCursorStates(),r=i.slice(0);r[n]=w.P.line(e,i[n],this._inSelectionMode,t.position,t.viewPosition),e.model.pushStackElement(),e.setCursorStates(t.source,3,r)}}]),n}(E);e.LastCursorLineSelect=(0,p.fK)(new R({inSelectionMode:!1,id:"lastCursorLineSelect",precondition:void 0})),e.LastCursorLineSelectDrag=(0,p.fK)(new R({inSelectionMode:!0,id:"lastCursorLineSelectDrag",precondition:void 0})),e.ExpandLineSelection=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"expandLineSelection",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:2090}})}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,w.P.expandLineSelection(e,e.getCursorStates())),e.revealPrimaryCursor(t.source,!0)}}]),n}(E))),e.CancelSelection=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"cancelSelection",precondition:k.u.hasNonEmptySelection,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:9,secondary:[1033]}})}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[w.P.cancelSelection(e,e.getPrimaryCursorState())]),e.revealPrimaryCursor(t.source,!0)}}]),n}(E))),e.RemoveSecondaryCursors=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"removeSecondaryCursors",precondition:k.u.hasMultipleSelections,kbOpts:{weight:L+1,kbExpr:k.u.textInputFocus,primary:9,secondary:[1033]}})}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[e.getPrimaryCursorState()]),e.revealPrimaryCursor(t.source,!0),(0,f.i7)(c.N("removedCursor","Removed secondary cursors"))}}]),n}(E))),e.RevealLine=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"revealLine",precondition:void 0,description:r.description})}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){var n=t,i=n.lineNumber||0,o="number"===typeof i?i+1:parseInt(i)+1;o<1&&(o=1);var a=e.model.getLineCount();o>a&&(o=a);var s=new _.e(o,1,o,e.model.getLineMaxColumn(o)),u=0;if(n.at)switch(n.at){case r.RawAtArgument.Top:u=3;break;case r.RawAtArgument.Center:u=1;break;case r.RawAtArgument.Bottom:u=4}var l=e.coordinatesConverter.convertModelRangeToViewRange(s);e.revealRange(t.source,!1,l,u,0)}}]),n}(E))),e.SelectAll=new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,p.Sq)}return(0,s.Z)(n,[{key:"runDOMCommand",value:function(){d.vU&&(document.activeElement.focus(),document.activeElement.select()),document.execCommand("selectAll")}},{key:"runEditorCommand",value:function(e,t,n){var i=t._getViewModel();i&&this.runCoreEditorCommand(i,n)}},{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates("keyboard",3,[w.P.selectAll(e,e.getPrimaryCursorState())])}}]),n}(N)),e.SetSelection=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"setSelection",precondition:void 0})}return(0,s.Z)(n,[{key:"runCoreEditorCommand",value:function(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[v.Vi.fromModelSelection(t.selection)])}}]),n}(E)))}(D||(D={}));var M,T=S.Ao.and(k.u.textInputFocus,k.u.columnSelection);function I(e,t){x.W.registerKeybindingRule({id:e,primary:t,when:T,weight:L+1})}function O(e){return e.register(),e}I(D.CursorColumnSelectLeft.id,1039),I(D.CursorColumnSelectRight.id,1041),I(D.CursorColumnSelectUp.id,1040),I(D.CursorColumnSelectPageUp.id,1035),I(D.CursorColumnSelectDown.id,1042),I(D.CursorColumnSelectPageDown.id,1036),function(e){var t=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.apply(this,arguments)}return(0,s.Z)(n,[{key:"runEditorCommand",value:function(e,t,n){var i=t._getViewModel();i&&this.runCoreEditingCommand(t,i,n||{})}}]),n}(p._l);e.CoreEditingCommand=t,e.LineBreakInsert=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"lineBreakInsert",precondition:k.u.writable,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:0,mac:{primary:301}}})}return(0,s.Z)(n,[{key:"runCoreEditingCommand",value:function(e,t,n){e.pushUndoStop(),e.executeCommands(this.id,C.u.lineBreakInsert(t.cursorConfig,t.model,t.getCursorStates().map((function(e){return e.modelState.selection}))))}}]),n}(t))),e.Outdent=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"outdent",precondition:k.u.writable,kbOpts:{weight:L,kbExpr:S.Ao.and(k.u.editorTextFocus,k.u.tabDoesNotMoveFocus),primary:1026}})}return(0,s.Z)(n,[{key:"runCoreEditingCommand",value:function(e,t,n){e.pushUndoStop(),e.executeCommands(this.id,C.u.outdent(t.cursorConfig,t.model,t.getCursorStates().map((function(e){return e.modelState.selection})))),e.pushUndoStop()}}]),n}(t))),e.Tab=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"tab",precondition:k.u.writable,kbOpts:{weight:L,kbExpr:S.Ao.and(k.u.editorTextFocus,k.u.tabDoesNotMoveFocus),primary:2}})}return(0,s.Z)(n,[{key:"runCoreEditingCommand",value:function(e,t,n){e.pushUndoStop(),e.executeCommands(this.id,C.u.tab(t.cursorConfig,t.model,t.getCursorStates().map((function(e){return e.modelState.selection})))),e.pushUndoStop()}}]),n}(t))),e.DeleteLeft=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"deleteLeft",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:1,secondary:[1025],mac:{primary:1,secondary:[1025,294,257]}}})}return(0,s.Z)(n,[{key:"runCoreEditingCommand",value:function(e,t,n){var i=b.A.deleteLeft(t.getPrevEditOperationType(),t.cursorConfig,t.model,t.getCursorStates().map((function(e){return e.modelState.selection})),t.getCursorAutoClosedCharacters()),r=(0,o.Z)(i,2),a=r[0],s=r[1];a&&e.pushUndoStop(),e.executeCommands(this.id,s),t.setPrevEditOperationType(2)}}]),n}(t))),e.DeleteRight=(0,p.fK)(new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,{id:"deleteRight",precondition:void 0,kbOpts:{weight:L,kbExpr:k.u.textInputFocus,primary:20,mac:{primary:20,secondary:[290,276]}}})}return(0,s.Z)(n,[{key:"runCoreEditingCommand",value:function(e,t,n){var i=b.A.deleteRight(t.getPrevEditOperationType(),t.cursorConfig,t.model,t.getCursorStates().map((function(e){return e.modelState.selection}))),r=(0,o.Z)(i,2),a=r[0],s=r[1];a&&e.pushUndoStop(),e.executeCommands(this.id,s),t.setPrevEditOperationType(3)}}]),n}(t))),e.Undo=new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,p.n_)}return(0,s.Z)(n,[{key:"runDOMCommand",value:function(){document.execCommand("undo")}},{key:"runEditorCommand",value:function(e,t,n){if(t.hasModel()&&!0!==t.getOption(77))return t.getModel().undo()}}]),n}(N)),e.Redo=new(function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,p.kz)}return(0,s.Z)(n,[{key:"runDOMCommand",value:function(){document.execCommand("redo")}},{key:"runEditorCommand",value:function(e,t,n){if(t.hasModel()&&!0!==t.getOption(77))return t.getModel().redo()}}]),n}(N))}(M||(M={}));var A=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r){var o;return(0,a.Z)(this,n),(o=t.call(this,{id:e,precondition:void 0,description:r}))._handlerId=i,o}return(0,s.Z)(n,[{key:"runCommand",value:function(e,t){var n=e.get(g.$).getFocusedCodeEditor();n&&n.trigger("keyboard",this._handlerId,t)}}]),n}(p.mY);function R(e,t){O(new A("default:"+e,e)),O(new A(e,e,t))}R("type",{description:"Type",args:[{name:"args",schema:{type:"object",required:["text"],properties:{text:{type:"string"}}}}]}),R("replacePreviousChar"),R("compositionType"),R("compositionStart"),R("compositionEnd"),R("paste"),R("cut")},83106:function(e,t,n){"use strict";n.d(t,{Fz:function(){return k},Nl:function(){return C},RA:function(){return w},pd:function(){return i}});var i,r=n(29439),o=n(11752),a=n(61120),s=n(60136),u=n(43668),l=n(15671),c=n(43144),d=n(84539),h=n(84540),f=n(27997),p=n(11732),g=n(81626),v=n(30487),m=n(51747),_=n(90224),y=n(67297),b=n(74964);!function(e){e.Tap="-monaco-textarea-synthetic-tap"}(i||(i={}));var w={forceCopyWithSyntaxHighlighting:!1},C=function(){function e(){(0,l.Z)(this,e),this._lastState=null}return(0,c.Z)(e,[{key:"set",value:function(e,t){this._lastState={lastCopiedValue:e,data:t}}},{key:"get",value:function(e){return this._lastState&&this._lastState.lastCopiedValue===e?this._lastState.data:(this._lastState=null,null)}}]),e}();C.INSTANCE=new C;var k=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,o){var a;(0,l.Z)(this,n),(a=t.call(this)).textArea=o,a._onFocus=a._register(new p.Q5),a.onFocus=a._onFocus.event,a._onBlur=a._register(new p.Q5),a.onBlur=a._onBlur.event,a._onKeyDown=a._register(new p.Q5),a.onKeyDown=a._onKeyDown.event,a._onKeyUp=a._register(new p.Q5),a.onKeyUp=a._onKeyUp.event,a._onCut=a._register(new p.Q5),a.onCut=a._onCut.event,a._onPaste=a._register(new p.Q5),a.onPaste=a._onPaste.event,a._onType=a._register(new p.Q5),a.onType=a._onType.event,a._onCompositionStart=a._register(new p.Q5),a.onCompositionStart=a._onCompositionStart.event,a._onCompositionUpdate=a._register(new p.Q5),a.onCompositionUpdate=a._onCompositionUpdate.event,a._onCompositionEnd=a._register(new p.Q5),a.onCompositionEnd=a._onCompositionEnd.event,a._onSelectionChangeRequest=a._register(new p.Q5),a.onSelectionChangeRequest=a._onSelectionChangeRequest.event,a._host=e,a._textArea=a._register(new x(o)),a._asyncTriggerCut=a._register(new f.pY((function(){return a._onCut.fire()}),0)),a._asyncFocusGainWriteScreenReaderContent=a._register(new f.pY((function(){return a.writeScreenReaderContent("asyncFocusGain")}),0)),a._textAreaState=_.un.EMPTY,a._selectionChangeListener=null,a.writeScreenReaderContent("ctor"),a._hasFocus=!1,a._isDoingComposition=!1,a._nextCommand=0;var s=null;a._register(h.addStandardDisposableListener(o.domNode,"keydown",(function(e){(109===e.keyCode||a._isDoingComposition&&1===e.keyCode)&&e.stopPropagation(),e.equals(9)&&e.preventDefault(),s=e,a._onKeyDown.fire(e)}))),a._register(h.addStandardDisposableListener(o.domNode,"keyup",(function(e){a._onKeyUp.fire(e)}))),a._register(h.addDisposableListener(o.domNode,"compositionstart",(function(e){if(_.al&&console.log("[compositionstart]",e),!a._isDoingComposition){if(a._isDoingComposition=!0,v.dz&&a._textAreaState.selectionStart===a._textAreaState.selectionEnd&&a._textAreaState.selectionStart>0&&a._textAreaState.value.substr(a._textAreaState.selectionStart-1,1)===e.data)if(s&&s.equals(109)&&("ArrowRight"===s.code||"ArrowLeft"===s.code)||d.vU)return _.al&&console.log("[compositionstart] Handling long press case on macOS + arrow key or Firefox",e),a._textAreaState=new _.un(a._textAreaState.value,a._textAreaState.selectionStart-1,a._textAreaState.selectionEnd,a._textAreaState.selectionStartPosition?new y.L(a._textAreaState.selectionStartPosition.lineNumber,a._textAreaState.selectionStartPosition.column-1):null,a._textAreaState.selectionEndPosition),void a._onCompositionStart.fire({revealDeltaColumns:-1});d.Dt?a._onCompositionStart.fire({revealDeltaColumns:-a._textAreaState.selectionStart}):(a._setAndWriteTextAreaState("compositionstart",_.un.EMPTY),a._onCompositionStart.fire({revealDeltaColumns:0}))}})));var u=function(){var e=a._textAreaState,t=_.un.readFromTextArea(a._textArea);return[t,_.un.deduceAndroidCompositionInput(e,t)]},c=function(e){var t=a._textAreaState,n=_.un.selectedText(e);return[n,{text:n.value,replacePrevCharCnt:t.selectionEnd-t.selectionStart,replaceNextCharCnt:0,positionDelta:0}]};return a._register(h.addDisposableListener(o.domNode,"compositionupdate",(function(e){if(_.al&&console.log("[compositionupdate]",e),d.Dt){var t=u(),n=(0,r.Z)(t,2),i=n[0],o=n[1];return a._textAreaState=i,a._onType.fire(o),void a._onCompositionUpdate.fire(e)}var s=c(e.data||""),l=(0,r.Z)(s,2),h=l[0],f=l[1];a._textAreaState=h,a._onType.fire(f),a._onCompositionUpdate.fire(e)}))),a._register(h.addDisposableListener(o.domNode,"compositionend",(function(e){if(_.al&&console.log("[compositionend]",e),a._isDoingComposition){if(a._isDoingComposition=!1,d.Dt){var t=u(),n=(0,r.Z)(t,2),i=n[0],o=n[1];return a._textAreaState=i,a._onType.fire(o),void a._onCompositionEnd.fire()}var s=c(e.data||""),l=(0,r.Z)(s,2),h=l[0],f=l[1];a._textAreaState=h,a._onType.fire(f),(d.i7||d.vU)&&(a._textAreaState=_.un.readFromTextArea(a._textArea)),a._onCompositionEnd.fire()}}))),a._register(h.addDisposableListener(o.domNode,"input",(function(){if(a._textArea.setIgnoreSelectionChangeTime("received input event"),!a._isDoingComposition){var e=function(e){var t=a._textAreaState,n=_.un.readFromTextArea(a._textArea);return[n,_.un.deduceInput(t,n,e)]}(v.dz),t=(0,r.Z)(e,2),n=t[0],i=t[1];0===i.replacePrevCharCnt&&1===i.text.length&&m.ZG(i.text.charCodeAt(0))||(a._textAreaState=n,0===a._nextCommand?""===i.text&&0===i.replacePrevCharCnt||a._onType.fire(i):(""===i.text&&0===i.replacePrevCharCnt||a._firePaste(i.text,null),a._nextCommand=0))}}))),a._register(h.addDisposableListener(o.domNode,"cut",(function(e){a._textArea.setIgnoreSelectionChangeTime("received cut event"),a._ensureClipboardGetsEditorSelection(e),a._asyncTriggerCut.schedule()}))),a._register(h.addDisposableListener(o.domNode,"copy",(function(e){a._ensureClipboardGetsEditorSelection(e)}))),a._register(h.addDisposableListener(o.domNode,"paste",(function(e){if(a._textArea.setIgnoreSelectionChangeTime("received paste event"),S.canUseTextData(e)){var t=S.getTextData(e),n=(0,r.Z)(t,2),i=n[0],o=n[1];""!==i&&a._firePaste(i,o)}else a._textArea.getSelectionStart()!==a._textArea.getSelectionEnd()&&a._setAndWriteTextAreaState("paste",_.un.EMPTY),a._nextCommand=1}))),a._register(h.addDisposableListener(o.domNode,"focus",(function(){var e=a._hasFocus;a._setHasFocus(!0),d.G6&&!e&&a._hasFocus&&a._asyncFocusGainWriteScreenReaderContent.schedule()}))),a._register(h.addDisposableListener(o.domNode,"blur",(function(){a._isDoingComposition&&(a._isDoingComposition=!1,a.writeScreenReaderContent("blurWithoutCompositionEnd"),a._onCompositionEnd.fire()),a._setHasFocus(!1)}))),a._register(h.addDisposableListener(o.domNode,i.Tap,(function(){d.Dt&&a._isDoingComposition&&(a._isDoingComposition=!1,a.writeScreenReaderContent("tapWithoutCompositionEnd"),a._onCompositionEnd.fire())}))),a}return(0,c.Z)(n,[{key:"_installSelectionChangeListener",value:function(){var e=this,t=0;return h.addDisposableListener(document,"selectionchange",(function(n){if(e._hasFocus&&!e._isDoingComposition&&d.i7){var i=Date.now(),r=i-t;if(t=i,!(r<5)){var o=i-e._textArea.getIgnoreSelectionChangeTime();if(e._textArea.resetSelectionChangeTime(),!(o<100)&&e._textAreaState.selectionStartPosition&&e._textAreaState.selectionEndPosition){var a=e._textArea.getValue();if(e._textAreaState.value===a){var s=e._textArea.getSelectionStart(),u=e._textArea.getSelectionEnd();if(e._textAreaState.selectionStart!==s||e._textAreaState.selectionEnd!==u){var l=e._textAreaState.deduceEditorPosition(s),c=e._host.deduceModelPosition(l[0],l[1],l[2]),h=e._textAreaState.deduceEditorPosition(u),f=e._host.deduceModelPosition(h[0],h[1],h[2]),p=new b.Y(c.lineNumber,c.column,f.lineNumber,f.column);e._onSelectionChangeRequest.fire(p)}}}}}}))}},{key:"dispose",value:function(){(0,o.Z)((0,a.Z)(n.prototype),"dispose",this).call(this),this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null)}},{key:"focusTextArea",value:function(){this._setHasFocus(!0),this.refreshFocusState()}},{key:"isFocused",value:function(){return this._hasFocus}},{key:"refreshFocusState",value:function(){var e=h.getShadowRoot(this.textArea.domNode);e?this._setHasFocus(e.activeElement===this.textArea.domNode):h.isInDOM(this.textArea.domNode)?this._setHasFocus(document.activeElement===this.textArea.domNode):this._setHasFocus(!1)}},{key:"_setHasFocus",value:function(e){this._hasFocus!==e&&(this._hasFocus=e,this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null),this._hasFocus&&(this._selectionChangeListener=this._installSelectionChangeListener()),this._hasFocus&&this.writeScreenReaderContent("focusgain"),this._hasFocus?this._onFocus.fire():this._onBlur.fire())}},{key:"_setAndWriteTextAreaState",value:function(e,t){this._hasFocus||(t=t.collapseSelection()),t.writeToTextArea(e,this._textArea,this._hasFocus),this._textAreaState=t}},{key:"writeScreenReaderContent",value:function(e){this._isDoingComposition||this._setAndWriteTextAreaState(e,this._host.getScreenReaderContent(this._textAreaState))}},{key:"_ensureClipboardGetsEditorSelection",value:function(e){var t=this._host.getDataToCopy(S.canUseTextData(e)),n={version:1,isFromEmptySelection:t.isFromEmptySelection,multicursorText:t.multicursorText,mode:t.mode};C.INSTANCE.set(d.vU?t.text.replace(/\r\n/g,"\n"):t.text,n),S.canUseTextData(e)?S.setTextData(e,t.text,t.html,n):this._setAndWriteTextAreaState("copy or cut",_.un.selectedText(t.text))}},{key:"_firePaste",value:function(e,t){t||(t=C.INSTANCE.get(e)),this._onPaste.fire({text:e,metadata:t})}}]),n}(g.JT),S=function(){function e(){(0,l.Z)(this,e)}return(0,c.Z)(e,null,[{key:"canUseTextData",value:function(e){return!!e.clipboardData||!!window.clipboardData}},{key:"getTextData",value:function(e){if(e.clipboardData){e.preventDefault();var t=e.clipboardData.getData("text/plain"),n=null,i=e.clipboardData.getData("vscode-editor-data");if("string"===typeof i)try{1!==(n=JSON.parse(i)).version&&(n=null)}catch(r){}return[t,n]}if(window.clipboardData)return e.preventDefault(),[window.clipboardData.getData("Text"),null];throw new Error("ClipboardEventUtils.getTextData: Cannot use text data!")}},{key:"setTextData",value:function(e,t,n,i){if(e.clipboardData)return e.clipboardData.setData("text/plain",t),"string"===typeof n&&e.clipboardData.setData("text/html",n),e.clipboardData.setData("vscode-editor-data",JSON.stringify(i)),void e.preventDefault();if(window.clipboardData)return window.clipboardData.setData("Text",t),void e.preventDefault();throw new Error("ClipboardEventUtils.setTextData: Cannot use text data!")}}]),e}(),x=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e){var i;return(0,l.Z)(this,n),(i=t.call(this))._actual=e,i._ignoreSelectionChangeTime=0,i}return(0,c.Z)(n,[{key:"setIgnoreSelectionChangeTime",value:function(e){this._ignoreSelectionChangeTime=Date.now()}},{key:"getIgnoreSelectionChangeTime",value:function(){return this._ignoreSelectionChangeTime}},{key:"resetSelectionChangeTime",value:function(){this._ignoreSelectionChangeTime=0}},{key:"getValue",value:function(){return this._actual.domNode.value}},{key:"setValue",value:function(e,t){var n=this._actual.domNode;n.value!==t&&(this.setIgnoreSelectionChangeTime("setValue"),n.value=t)}},{key:"getSelectionStart",value:function(){return"backward"===this._actual.domNode.selectionDirection?this._actual.domNode.selectionEnd:this._actual.domNode.selectionStart}},{key:"getSelectionEnd",value:function(){return"backward"===this._actual.domNode.selectionDirection?this._actual.domNode.selectionStart:this._actual.domNode.selectionEnd}},{key:"setSelectionRange",value:function(e,t,n){var i=this._actual.domNode,r=h.getShadowRoot(i),o=(r?r.activeElement:document.activeElement)===i,a=i.selectionStart,s=i.selectionEnd;if(o&&a===t&&s===n)d.vU&&window.parent!==window&&i.focus();else{if(o)return this.setIgnoreSelectionChangeTime("setSelectionRange"),i.setSelectionRange(t,n),void(d.vU&&window.parent!==window&&i.focus());try{var u=h.saveParentsScrollTop(i);this.setIgnoreSelectionChangeTime("setSelectionRange"),i.focus(),i.setSelectionRange(t,n),h.restoreParentsScrollTop(i,u)}catch(l){}}}}]),n}(g.JT)},90224:function(e,t,n){"use strict";n.d(t,{al:function(){return u},ee:function(){return c},un:function(){return l}});var i=n(15671),r=n(43144),o=n(51747),a=n(67297),s=n(67033),u=!1,l=function(){function e(t,n,r,o,a){(0,i.Z)(this,e),this.value=t,this.selectionStart=n,this.selectionEnd=r,this.selectionStartPosition=o,this.selectionEndPosition=a}return(0,r.Z)(e,[{key:"toString",value:function(){return"[ <"+this.value+">, selectionStart: "+this.selectionStart+", selectionEnd: "+this.selectionEnd+"]"}},{key:"collapseSelection",value:function(){return new e(this.value,this.value.length,this.value.length,null,null)}},{key:"writeToTextArea",value:function(e,t,n){u&&console.log("writeToTextArea "+e+": "+this.toString()),t.setValue(e,this.value),n&&t.setSelectionRange(e,this.selectionStart,this.selectionEnd)}},{key:"deduceEditorPosition",value:function(e){if(e<=this.selectionStart){var t=this.value.substring(e,this.selectionStart);return this._finishDeduceEditorPosition(this.selectionStartPosition,t,-1)}if(e>=this.selectionEnd){var n=this.value.substring(this.selectionEnd,e);return this._finishDeduceEditorPosition(this.selectionEndPosition,n,1)}var i=this.value.substring(this.selectionStart,e);if(-1===i.indexOf(String.fromCharCode(8230)))return this._finishDeduceEditorPosition(this.selectionStartPosition,i,1);var r=this.value.substring(e,this.selectionEnd);return this._finishDeduceEditorPosition(this.selectionEndPosition,r,-1)}},{key:"_finishDeduceEditorPosition",value:function(e,t,n){for(var i=0,r=-1;-1!==(r=t.indexOf("\n",r+1));)i++;return[e,n*t.length,i]}}],[{key:"readFromTextArea",value:function(t){return new e(t.getValue(),t.getSelectionStart(),t.getSelectionEnd(),null,null)}},{key:"selectedText",value:function(t){return new e(t,0,t.length,null,null)}},{key:"deduceInput",value:function(e,t,n){if(!e)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};u&&(console.log("------------------------deduceInput"),console.log("PREVIOUS STATE: "+e.toString()),console.log("CURRENT STATE: "+t.toString()));var i=e.value,r=e.selectionStart,a=e.selectionEnd,s=t.value,l=t.selectionStart,c=t.selectionEnd,d=i.substring(a),h=s.substring(c),f=o.P1(d,h);s=s.substring(0,s.length-f);var p=(i=i.substring(0,i.length-f)).substring(0,r),g=s.substring(0,l),v=o.Mh(p,g);if(s=s.substring(v),i=i.substring(v),l-=v,r-=v,c-=v,a-=v,u&&(console.log("AFTER DIFFING PREVIOUS STATE: <"+i+">, selectionStart: "+r+", selectionEnd: "+a),console.log("AFTER DIFFING CURRENT STATE: <"+s+">, selectionStart: "+l+", selectionEnd: "+c)),n&&l===c&&i.length>0){var m=null;if(l===s.length?s.startsWith(i)&&(m=s.substring(i.length)):s.endsWith(i)&&(m=s.substring(0,s.length-i.length)),null!==m&&m.length>0&&(/\uFE0F/.test(m)||o.RP(m)))return{text:m,replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0}}if(l===c){if(i===s&&0===r&&a===i.length&&l===s.length&&-1===s.indexOf("\n")&&o.xe(s))return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};var _=p.length-v;return u&&console.log("REMOVE PREVIOUS: "+(p.length-v)+" chars"),{text:s,replacePrevCharCnt:_,replaceNextCharCnt:0,positionDelta:0}}return{text:s,replacePrevCharCnt:a-r,replaceNextCharCnt:0,positionDelta:0}}},{key:"deduceAndroidCompositionInput",value:function(e,t){if(!e)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};if(u&&(console.log("------------------------deduceAndroidCompositionInput"),console.log("PREVIOUS STATE: "+e.toString()),console.log("CURRENT STATE: "+t.toString())),e.value===t.value)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:t.selectionEnd-e.selectionEnd};var n=Math.min(o.Mh(e.value,t.value),e.selectionEnd),i=Math.min(o.P1(e.value,t.value),e.value.length-e.selectionEnd),r=e.value.substring(n,e.value.length-i),a=t.value.substring(n,t.value.length-i),s=e.selectionStart-n,l=e.selectionEnd-n,c=t.selectionStart-n,d=t.selectionEnd-n;return u&&(console.log("AFTER DIFFING PREVIOUS STATE: <"+r+">, selectionStart: "+s+", selectionEnd: "+l),console.log("AFTER DIFFING CURRENT STATE: <"+a+">, selectionStart: "+c+", selectionEnd: "+d)),{text:a,replacePrevCharCnt:l,replaceNextCharCnt:r.length-l,positionDelta:d-a.length}}}]),e}();l.EMPTY=new l("",0,0,null,null);var c=function(){function e(){(0,i.Z)(this,e)}return(0,r.Z)(e,null,[{key:"_getPageOfLine",value:function(e,t){return Math.floor((e-1)/t)}},{key:"_getRangeForPage",value:function(e,t){var n=e*t,i=n+1,r=n+t;return new s.e(i,1,r+1,1)}},{key:"fromEditorSelection",value:function(t,n,i,r,o){var u,c=e._getPageOfLine(i.startLineNumber,r),d=e._getRangeForPage(c,r),h=e._getPageOfLine(i.endLineNumber,r),f=e._getRangeForPage(h,r),p=d.intersectRanges(new s.e(1,1,i.startLineNumber,i.startColumn)),g=n.getValueInRange(p,1),v=n.getLineCount(),m=n.getLineMaxColumn(v),_=f.intersectRanges(new s.e(i.endLineNumber,i.endColumn,v,m)),y=n.getValueInRange(_,1);if(c===h||c+1===h)u=n.getValueInRange(i,1);else{var b=d.intersectRanges(i),w=f.intersectRanges(i);u=n.getValueInRange(b,1)+String.fromCharCode(8230)+n.getValueInRange(w,1)}if(o){var C=500;g.length>C&&(g=g.substring(g.length-C,g.length)),y.length>C&&(y=y.substring(0,C)),u.length>1e3&&(u=u.substring(0,C)+String.fromCharCode(8230)+u.substring(u.length-C,u.length))}return new l(g+u+y,g.length,g.length+u.length,new a.L(i.startLineNumber,i.startColumn),new a.L(i.endLineNumber,i.endColumn))}}]),e}()},47908:function(e,t,n){"use strict";n.d(t,{yy:function(){return k},Dl:function(){return S},ZF:function(){return L},YQ:function(){return x}});var i=n(11752),r=n(61120),o=n(60136),a=n(43668),s=n(15671),u=n(43144),l=n(51747),c=n(67033),d=n(66526),h=n(81626),f=n(97326),p=n(33399),g=n(18948),v=n(28214),m=n(84596),_=n(77863),y=n(56345),b=(0,m.yh)("IEditorCancelService"),w=new g.uy("cancellableOperation",!1,(0,y.N)("cancellableOperation","Whether the editor runs a cancellable operation, e.g. like 'Peek References'"));(0,_.z)(b,function(){function e(){(0,s.Z)(this,e),this._tokens=new WeakMap}return(0,u.Z)(e,[{key:"add",value:function(e,t){var n,i=this._tokens.get(e);return i||(i=e.invokeWithinContext((function(e){return{key:w.bindTo(e.get(g.i6)),tokens:new v.S}})),this._tokens.set(e,i)),i.key.set(!0),n=i.tokens.push(t),function(){n&&(n(),i.key.set(!i.tokens.isEmpty()),n=void 0)}}},{key:"cancel",value:function(e){var t=this._tokens.get(e);if(t){var n=t.tokens.pop();n&&(n.cancel(),t.key.set(!t.tokens.isEmpty()))}}}]),e}(),!0);var C=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i){var r;return(0,s.Z)(this,n),(r=t.call(this,i)).editor=e,r._unregister=e.invokeWithinContext((function(t){return t.get(b).add(e,(0,f.Z)(r))})),r}return(0,u.Z)(n,[{key:"dispose",value:function(){this._unregister(),(0,i.Z)((0,r.Z)(n.prototype),"dispose",this).call(this)}}]),n}(d.A);(0,p.fK)(new(function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(){return(0,s.Z)(this,n),t.call(this,{id:"editor.cancelOperation",kbOpts:{weight:100,primary:9},precondition:w})}return(0,u.Z)(n,[{key:"runEditorCommand",value:function(e,t){e.get(b).cancel(t)}}]),n}(p._l)));var k=function(){function e(t,n){if((0,s.Z)(this,e),this.flags=n,0!==(1&this.flags)){var i=t.getModel();this.modelVersionId=i?l.WU("{0}#{1}",i.uri.toString(),i.getVersionId()):null}else this.modelVersionId=null;0!==(4&this.flags)?this.position=t.getPosition():this.position=null,0!==(2&this.flags)?this.selection=t.getSelection():this.selection=null,0!==(8&this.flags)?(this.scrollLeft=t.getScrollLeft(),this.scrollTop=t.getScrollTop()):(this.scrollLeft=-1,this.scrollTop=-1)}return(0,u.Z)(e,[{key:"_equals",value:function(t){if(!(t instanceof e))return!1;var n=t;return this.modelVersionId===n.modelVersionId&&(this.scrollLeft===n.scrollLeft&&this.scrollTop===n.scrollTop&&(!(!this.position&&n.position||this.position&&!n.position||this.position&&n.position&&!this.position.equals(n.position))&&!(!this.selection&&n.selection||this.selection&&!n.selection||this.selection&&n.selection&&!this.selection.equalsRange(n.selection))))}},{key:"validate",value:function(t){return this._equals(new e(t,this.flags))}}]),e}(),S=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i,r,o){var a;return(0,s.Z)(this,n),(a=t.call(this,e,o))._listener=new h.SL,4&i&&a._listener.add(e.onDidChangeCursorPosition((function(e){r&&c.e.containsPosition(r,e.position)||a.cancel()}))),2&i&&a._listener.add(e.onDidChangeCursorSelection((function(e){r&&c.e.containsRange(r,e.selection)||a.cancel()}))),8&i&&a._listener.add(e.onDidScrollChange((function(e){return a.cancel()}))),1&i&&(a._listener.add(e.onDidChangeModel((function(e){return a.cancel()}))),a._listener.add(e.onDidChangeModelContent((function(e){return a.cancel()})))),a}return(0,u.Z)(n,[{key:"dispose",value:function(){this._listener.dispose(),(0,i.Z)((0,r.Z)(n.prototype),"dispose",this).call(this)}}]),n}(C),x=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i){var r;return(0,s.Z)(this,n),(r=t.call(this,i))._listener=e.onDidChangeContent((function(){return r.cancel()})),r}return(0,u.Z)(n,[{key:"dispose",value:function(){this._listener.dispose(),(0,i.Z)((0,r.Z)(n.prototype),"dispose",this).call(this)}}]),n}(d.A),L=function(){function e(t,n,i){(0,s.Z)(this,e),this._visiblePosition=t,this._visiblePositionScrollDelta=n,this._cursorPosition=i}return(0,u.Z)(e,[{key:"restore",value:function(e){if(this._visiblePosition){var t=e.getTopForPosition(this._visiblePosition.lineNumber,this._visiblePosition.column);e.setScrollTop(t+this._visiblePositionScrollDelta)}}},{key:"restoreRelativeVerticalPositionOfCursor",value:function(e){var t=e.getPosition();if(this._cursorPosition&&t){var n=e.getTopForLineNumber(t.lineNumber)-e.getTopForLineNumber(this._cursorPosition.lineNumber);e.setScrollTop(e.getScrollTop()+n)}}}],[{key:"capture",value:function(t){var n=null,i=0;if(0!==t.getScrollTop()){var r=t.getVisibleRanges();if(r.length>0){n=r[0].getStartPosition();var o=t.getTopForPosition(n.lineNumber,n.column);i=t.getScrollTop()-o}}return new e(n,i,t.getPosition())}}]),e}()},76191:function(e,t,n){"use strict";n.d(t,{CL:function(){return r},Pi:function(){return a},QI:function(){return o}});var i=n(30062);function r(e){return!(!e||"function"!==typeof e.getEditorType)&&e.getEditorType()===i.g.ICodeEditor}function o(e){return!(!e||"function"!==typeof e.getEditorType)&&e.getEditorType()===i.g.IDiffEditor}function a(e){return r(e)?e:o(e)?e.getModifiedEditor():null}},33399:function(e,t,n){"use strict";n.d(t,{AJ:function(){return x},QG:function(){return R},Qr:function(){return O},R6:function(){return D},Sq:function(){return B},Uc:function(){return i},_K:function(){return P},_l:function(){return E},f:function(){return T},fK:function(){return I},jY:function(){return N},kz:function(){return H},mY:function(){return S},n_:function(){return j},rn:function(){return A},sb:function(){return M}});var i,r=n(93433),o=n(37762),a=n(60136),s=n(43668),u=n(15671),l=n(43144),c=n(56345),d=n(67775),h=n(8295),f=n(67297),p=n(49076),g=n(44148),v=n(31585),m=n(72611),_=n(18948),y=n(51519),b=n(38774),w=n(45014),C=n(25941),k=n(19974),S=function(){function e(t){(0,u.Z)(this,e),this.id=t.id,this.precondition=t.precondition,this._kbOpts=t.kbOpts,this._menuOpts=t.menuOpts,this._description=t.description}return(0,l.Z)(e,[{key:"register",value:function(){var e=this;if(Array.isArray(this._menuOpts)?this._menuOpts.forEach(this._registerMenuItem,this):this._menuOpts&&this._registerMenuItem(this._menuOpts),this._kbOpts){var t=this._kbOpts.kbExpr;this.precondition&&(t=t?_.Ao.and(t,this.precondition):this.precondition),y.W.registerCommandAndKeybindingRule({id:this.id,handler:function(t,n){return e.runCommand(t,n)},weight:this._kbOpts.weight,args:this._kbOpts.args,when:t,primary:this._kbOpts.primary,secondary:this._kbOpts.secondary,win:this._kbOpts.win,linux:this._kbOpts.linux,mac:this._kbOpts.mac,description:this._description})}else m.P.registerCommand({id:this.id,handler:function(t,n){return e.runCommand(t,n)},description:this._description})}},{key:"_registerMenuItem",value:function(e){v.BH.appendMenuItem(e.menuId,{group:e.group,command:{id:this.id,title:e.title,icon:e.icon,precondition:this.precondition},when:e.when,order:e.order})}}]),e}(),x=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(){var e;return(0,u.Z)(this,n),(e=t.apply(this,arguments))._implementations=[],e}return(0,l.Z)(n,[{key:"addImplementation",value:function(e,t,n){var i=this;return this._implementations.push({priority:e,name:t,implementation:n}),this._implementations.sort((function(e,t){return t.priority-e.priority})),{dispose:function(){for(var e=0;e<i._implementations.length;e++)if(i._implementations[e].implementation===n)return void i._implementations.splice(e,1)}}}},{key:"runCommand",value:function(e,t){var n,i=e.get(k.VZ),r=(0,o.Z)(this._implementations);try{for(r.s();!(n=r.n()).done;){var a=n.value,s=a.implementation(e,t);if(s){if(i.trace("Command '".concat(this.id,"' was handled by '").concat(a.name,"'.")),"boolean"===typeof s)return;return s}}}catch(u){r.e(u)}finally{r.f()}}}]),n}(S),L=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(e,i){var r;return(0,u.Z)(this,n),(r=t.call(this,i)).command=e,r}return(0,l.Z)(n,[{key:"runCommand",value:function(e,t){return this.command.runCommand(e,t)}}]),n}(S),E=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(){return(0,u.Z)(this,n),t.apply(this,arguments)}return(0,l.Z)(n,[{key:"runCommand",value:function(e,t){var n=this,i=e.get(h.$),r=i.getFocusedCodeEditor()||i.getActiveCodeEditor();if(r)return r.invokeWithinContext((function(e){if(e.get(_.i6).contextMatchesRules((0,C.f6)(n.precondition)))return n.runEditorCommand(e,r,t)}))}}],[{key:"bindToContribution",value:function(e){return function(t){(0,a.Z)(i,t);var n=(0,s.Z)(i);function i(e){var t;return(0,u.Z)(this,i),(t=n.call(this,e))._callback=e.handler,t}return(0,l.Z)(i,[{key:"runEditorCommand",value:function(t,n,i){e(n)&&this._callback(e(n),i)}}]),i}(n)}}]),n}(S),D=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(e){var i;return(0,u.Z)(this,n),(i=t.call(this,n.convertOptions(e))).label=e.label,i.alias=e.alias,i}return(0,l.Z)(n,[{key:"runEditorCommand",value:function(e,t,n){return this.reportTelemetry(e,t),this.run(e,t,n||{})}},{key:"reportTelemetry",value:function(e,t){e.get(w.b).publicLog2("editorActionInvoked",{name:this.label,id:this.id})}}],[{key:"convertOptions",value:function(e){var t,n;function i(t){return t.menuId||(t.menuId=v.eH.EditorContext),t.title||(t.title=e.label),t.when=_.Ao.and(e.precondition,t.when),t}(t=Array.isArray(e.menuOpts)?e.menuOpts:e.menuOpts?[e.menuOpts]:[],Array.isArray(e.contextMenuOpts))?(n=t).push.apply(n,(0,r.Z)(e.contextMenuOpts.map(i))):e.contextMenuOpts&&t.push(i(e.contextMenuOpts));return e.menuOpts=t,e}}]),n}(E),N=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(){var e;return(0,u.Z)(this,n),(e=t.apply(this,arguments))._implementations=[],e}return(0,l.Z)(n,[{key:"addImplementation",value:function(e,t){var n=this;return this._implementations.push([e,t]),this._implementations.sort((function(e,t){return t[0]-e[0]})),{dispose:function(){for(var e=0;e<n._implementations.length;e++)if(n._implementations[e][1]===t)return void n._implementations.splice(e,1)}}}},{key:"run",value:function(e,t,n){var i,r=(0,o.Z)(this._implementations);try{for(r.s();!(i=r.n()).done;){var a=i.value[1](e,t,n);if(a){if("boolean"===typeof a)return;return a}}}catch(s){r.e(s)}finally{r.f()}}}]),n}(D);function M(e,t){m.P.registerCommand(e,(function(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];var a=i[0],s=i[1];(0,C.p_)(d.o.isUri(a)),(0,C.p_)(f.L.isIPosition(s));var u=e.get(p.q).getModel(a);if(u){var l=f.L.lift(s);return t.apply(void 0,[u,l].concat((0,r.Z)(i.slice(2))))}return e.get(g.S).createModelReference(a).then((function(e){return new Promise((function(n,r){try{n(t(e.object.textEditorModel,f.L.lift(s),i.slice(2)))}catch(o){r(o)}})).finally((function(){e.dispose()}))}))}))}function T(e,t){m.P.registerCommand(e,(function(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];var a=i[0];(0,C.p_)(d.o.isUri(a));var s=e.get(p.q).getModel(a);return s?t.apply(void 0,[s].concat((0,r.Z)(i.slice(1)))):e.get(g.S).createModelReference(a).then((function(e){return new Promise((function(n,r){try{n(t(e.object.textEditorModel,i.slice(1)))}catch(o){r(o)}})).finally((function(){e.dispose()}))}))}))}function I(e){return Z.INSTANCE.registerEditorCommand(e),e}function O(e){var t=new e;return Z.INSTANCE.registerEditorAction(t),t}function A(e){return Z.INSTANCE.registerEditorAction(e),e}function R(e){Z.INSTANCE.registerEditorAction(e)}function P(e,t){Z.INSTANCE.registerEditorContribution(e,t)}!function(e){e.getEditorCommand=function(e){return Z.INSTANCE.getEditorCommand(e)},e.getEditorActions=function(){return Z.INSTANCE.getEditorActions()},e.getEditorContributions=function(){return Z.INSTANCE.getEditorContributions()},e.getSomeEditorContributions=function(e){return Z.INSTANCE.getEditorContributions().filter((function(t){return e.indexOf(t.id)>=0}))},e.getDiffEditorContributions=function(){return Z.INSTANCE.getDiffEditorContributions()}}(i||(i={}));var Z=function(){function e(){(0,u.Z)(this,e),this.editorContributions=[],this.diffEditorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}return(0,l.Z)(e,[{key:"registerEditorContribution",value:function(e,t){this.editorContributions.push({id:e,ctor:t})}},{key:"getEditorContributions",value:function(){return this.editorContributions.slice(0)}},{key:"getDiffEditorContributions",value:function(){return this.diffEditorContributions.slice(0)}},{key:"registerEditorAction",value:function(e){e.register(),this.editorActions.push(e)}},{key:"getEditorActions",value:function(){return this.editorActions.slice(0)}},{key:"registerEditorCommand",value:function(e){e.register(),this.editorCommands[e.id]=e}},{key:"getEditorCommand",value:function(e){return this.editorCommands[e]||null}}]),e}();function F(e){return e.register(),e}Z.INSTANCE=new Z,b.B.add("editor.contributions",Z.INSTANCE);var j=F(new x({id:"undo",precondition:void 0,kbOpts:{weight:0,primary:2104},menuOpts:[{menuId:v.eH.MenubarEditMenu,group:"1_do",title:c.N({key:"miUndo",comment:["&& denotes a mnemonic"]},"&&Undo"),order:1},{menuId:v.eH.CommandPalette,group:"",title:c.N("undo","Undo"),order:1}]}));F(new L(j,{id:"default:undo",precondition:void 0}));var H=F(new x({id:"redo",precondition:void 0,kbOpts:{weight:0,primary:2103,secondary:[3128],mac:{primary:3128}},menuOpts:[{menuId:v.eH.MenubarEditMenu,group:"1_do",title:c.N({key:"miRedo",comment:["&& denotes a mnemonic"]},"&&Redo"),order:2},{menuId:v.eH.CommandPalette,group:"",title:c.N("redo","Redo"),order:1}]}));F(new L(H,{id:"default:redo",precondition:void 0}));var B=F(new x({id:"editor.action.selectAll",precondition:void 0,kbOpts:{weight:0,kbExpr:null,primary:2079},menuOpts:[{menuId:v.eH.MenubarSelectionMenu,group:"1_basic",title:c.N({key:"miSelectAll",comment:["&& denotes a mnemonic"]},"&&Select All"),order:1},{menuId:v.eH.CommandPalette,group:"",title:c.N("selectAll","Select All"),order:1}]}))},49803:function(e,t,n){"use strict";n.d(t,{Gl:function(){return h},fo:function(){return d},vu:function(){return c}});var i=n(60136),r=n(43668),o=n(15671),a=n(43144),s=n(84596),u=n(67775),l=n(25941),c=(0,s.yh)("IWorkspaceEditService");var d=function(){function e(t){(0,o.Z)(this,e),this.metadata=t}return(0,a.Z)(e,null,[{key:"convert",value:function(e){return e.edits.map((function(e){if(t=e,(0,l.Kn)(t)&&u.o.isUri(t.resource)&&(0,l.Kn)(t.edit))return new h(e.resource,e.edit,e.modelVersionId,e.metadata);var t;if(function(e){return(0,l.Kn)(e)&&(Boolean(e.newUri)||Boolean(e.oldUri))}(e))return new f(e.oldUri,e.newUri,e.options,e.metadata);throw new Error("Unsupported edit")}))}}]),e}(),h=function(e){(0,i.Z)(n,e);var t=(0,r.Z)(n);function n(e,i,r,a){var s;return(0,o.Z)(this,n),(s=t.call(this,a)).resource=e,s.textEdit=i,s.versionId=r,s}return(0,a.Z)(n)}(d),f=function(e){(0,i.Z)(n,e);var t=(0,r.Z)(n);function n(e,i,r,a){var s;return(0,o.Z)(this,n),(s=t.call(this,a)).oldResource=e,s.newResource=i,s.options=r,s}return(0,a.Z)(n)}(d)},8295:function(e,t,n){"use strict";n.d(t,{$:function(){return i}});var i=(0,n(84596).yh)("codeEditorService")},95079:function(e,t,n){"use strict";n.d(t,{Gm:function(){return rr}});var i=n(29439),r=n(37762),o=n(97326),a=n(11752),s=n(61120),u=n(60136),l=n(43668),c=n(15671),d=n(43144),h=n(50816),f=n(33399),p=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},g=function(e,t){return function(n,i){t(n,i,e)}},v=function(){function e(t,n){(0,c.Z)(this,e)}return(0,d.Z)(e,[{key:"dispose",value:function(){}}]),e}();v.ID="editor.contrib.markerDecorations",v=p([g(1,h.i)],v),(0,f._K)(v.ID,v);var m=n(56345),_=n(84540),y=n(8729),b=n(11732),w=n(81626),C=n(55585),k=n(47014),S=n(8295),x=n(84539),L=n(74964),E=n(41149),D=n(30487),N=n(25044),M=n(55076),T=n(27997),I=n(78101),O=function(){function e(t,n){(0,c.Z)(this,e),this.x=t,this.y=n}return(0,d.Z)(e,[{key:"toClientCoordinates",value:function(){return new A(this.x-_.StandardWindow.scrollX,this.y-_.StandardWindow.scrollY)}}]),e}(),A=function(){function e(t,n){(0,c.Z)(this,e),this.clientX=t,this.clientY=n}return(0,d.Z)(e,[{key:"toPageCoordinates",value:function(){return new O(this.clientX+_.StandardWindow.scrollX,this.clientY+_.StandardWindow.scrollY)}}]),e}(),R=(0,d.Z)((function e(t,n,i,r){(0,c.Z)(this,e),this.x=t,this.y=n,this.width=i,this.height=r}));function P(e){var t=_.getDomNodePagePosition(e);return new R(t.left,t.top,t.width,t.height)}var Z=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r;return(0,c.Z)(this,n),(r=t.call(this,e)).pos=new O(r.posx,r.posy),r.editorPos=P(i),r}return(0,d.Z)(n)}(M.n),F=function(){function e(t){(0,c.Z)(this,e),this._editorViewDomNode=t}return(0,d.Z)(e,[{key:"_create",value:function(e){return new Z(e,this._editorViewDomNode)}},{key:"onContextMenu",value:function(e,t){var n=this;return _.addDisposableListener(e,"contextmenu",(function(e){t(n._create(e))}))}},{key:"onMouseUp",value:function(e,t){var n=this;return _.addDisposableListener(e,"mouseup",(function(e){t(n._create(e))}))}},{key:"onMouseDown",value:function(e,t){var n=this;return _.addDisposableListener(e,"mousedown",(function(e){t(n._create(e))}))}},{key:"onMouseLeave",value:function(e,t){var n=this;return _.addDisposableNonBubblingMouseOutListener(e,(function(e){t(n._create(e))}))}},{key:"onMouseMoveThrottled",value:function(e,t,n,i){var r=this;return _.addDisposableThrottledListener(e,"mousemove",t,(function(e,t){return n(e,r._create(t))}),i)}}]),e}(),j=function(){function e(t){(0,c.Z)(this,e),this._editorViewDomNode=t}return(0,d.Z)(e,[{key:"_create",value:function(e){return new Z(e,this._editorViewDomNode)}},{key:"onPointerUp",value:function(e,t){var n=this;return _.addDisposableListener(e,"pointerup",(function(e){t(n._create(e))}))}},{key:"onPointerDown",value:function(e,t){var n=this;return _.addDisposableListener(e,"pointerdown",(function(e){t(n._create(e))}))}},{key:"onPointerLeave",value:function(e,t){var n=this;return _.addDisposableNonBubblingPointerOutListener(e,(function(e){t(n._create(e))}))}},{key:"onPointerMoveThrottled",value:function(e,t,n,i){var r=this;return _.addDisposableThrottledListener(e,"pointermove",t,(function(e,t){return n(e,r._create(t))}),i)}}]),e}(),H=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this))._editorViewDomNode=e,i._globalMouseMoveMonitor=i._register(new I.Z),i._keydownListener=null,i}return(0,d.Z)(n,[{key:"startMonitoring",value:function(e,t,n,i,r){var o=this;this._keydownListener=_.addStandardDisposableListener(document,"keydown",(function(e){e.toKeybinding().isModifierKey()||o._globalMouseMoveMonitor.stopMonitoring(!0,e.browserEvent)}),!0);this._globalMouseMoveMonitor.startMonitoring(e,t,(function(e,t){return n(e,new Z(t,o._editorViewDomNode))}),i,(function(e){o._keydownListener.dispose(),r(e)}))}},{key:"stopMonitoring",value:function(){this._globalMouseMoveMonitor.stopMonitoring(!0)}}]),n}(w.JT),B=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){var e;return(0,c.Z)(this,n),(e=t.call(this))._shouldRender=!0,e}return(0,d.Z)(n,[{key:"shouldRender",value:function(){return this._shouldRender}},{key:"forceShouldRender",value:function(){this._shouldRender=!0}},{key:"setShouldRender",value:function(){this._shouldRender=!0}},{key:"onDidRender",value:function(){this._shouldRender=!1}},{key:"onCompositionStart",value:function(e){return!1}},{key:"onCompositionEnd",value:function(e){return!1}},{key:"onConfigurationChanged",value:function(e){return!1}},{key:"onCursorStateChanged",value:function(e){return!1}},{key:"onDecorationsChanged",value:function(e){return!1}},{key:"onFlushed",value:function(e){return!1}},{key:"onFocusChanged",value:function(e){return!1}},{key:"onLanguageConfigurationChanged",value:function(e){return!1}},{key:"onLineMappingChanged",value:function(e){return!1}},{key:"onLinesChanged",value:function(e){return!1}},{key:"onLinesDeleted",value:function(e){return!1}},{key:"onLinesInserted",value:function(e){return!1}},{key:"onRevealRangeRequest",value:function(e){return!1}},{key:"onScrollChanged",value:function(e){return!1}},{key:"onThemeChanged",value:function(e){return!1}},{key:"onTokensChanged",value:function(e){return!1}},{key:"onTokensColorsChanged",value:function(e){return!1}},{key:"onZonesChanged",value:function(e){return!1}},{key:"handleEvents",value:function(e){for(var t=!1,n=0,i=e.length;n<i;n++){var r=e[n];switch(r.type){case 0:this.onCompositionStart(r)&&(t=!0);break;case 1:this.onCompositionEnd(r)&&(t=!0);break;case 2:this.onConfigurationChanged(r)&&(t=!0);break;case 3:this.onCursorStateChanged(r)&&(t=!0);break;case 4:this.onDecorationsChanged(r)&&(t=!0);break;case 5:this.onFlushed(r)&&(t=!0);break;case 6:this.onFocusChanged(r)&&(t=!0);break;case 7:this.onLanguageConfigurationChanged(r)&&(t=!0);break;case 8:this.onLineMappingChanged(r)&&(t=!0);break;case 9:this.onLinesChanged(r)&&(t=!0);break;case 10:this.onLinesDeleted(r)&&(t=!0);break;case 11:this.onLinesInserted(r)&&(t=!0);break;case 12:this.onRevealRangeRequest(r)&&(t=!0);break;case 13:this.onScrollChanged(r)&&(t=!0);break;case 15:this.onTokensChanged(r)&&(t=!0);break;case 14:this.onThemeChanged(r)&&(t=!0);break;case 16:this.onTokensColorsChanged(r)&&(t=!0);break;case 17:this.onZonesChanged(r)&&(t=!0);break;default:console.info("View received unknown event: "),console.info(r)}}t&&(this._shouldRender=!0)}}]),n}(w.JT),z=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this))._context=e,i._context.addEventHandler((0,o.Z)(i)),i}return(0,d.Z)(n,[{key:"dispose",value:function(){this._context.removeEventHandler(this),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}}]),n}(B),W=function(){function e(){(0,c.Z)(this,e)}return(0,d.Z)(e,null,[{key:"write",value:function(e,t){E.Z,e.setAttribute("data-mprt",String(t))}},{key:"read",value:function(e){var t=e.getAttribute("data-mprt");return null===t?0:parseInt(t,10)}},{key:"collect",value:function(e,t){for(var n=[],i=0;e&&e!==document.body&&e!==t;)e.nodeType===e.ELEMENT_NODE&&(n[i++]=this.read(e)),e=e.parentElement;for(var r=new Uint8Array(i),o=0;o<i;o++)r[o]=n[i-o-1];return r}}]),e}(),V=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r){var o;return(0,c.Z)(this,n),(o=t.call(this,e,i))._viewLines=r,o}return(0,d.Z)(n,[{key:"linesVisibleRangesForRange",value:function(e,t){return this._viewLines.linesVisibleRangesForRange(e,t)}},{key:"visibleRangeForPosition",value:function(e){return this._viewLines.visibleRangeForPosition(e)}}]),n}(function(){function e(t,n){(0,c.Z)(this,e),this._viewLayout=t,this.viewportData=n,this.scrollWidth=this._viewLayout.getScrollWidth(),this.scrollHeight=this._viewLayout.getScrollHeight(),this.visibleRange=this.viewportData.visibleRange,this.bigNumbersDelta=this.viewportData.bigNumbersDelta;var i=this._viewLayout.getCurrentViewport();this.scrollTop=i.top,this.scrollLeft=i.left,this.viewportWidth=i.width,this.viewportHeight=i.height}return(0,d.Z)(e,[{key:"getScrolledTopFromAbsoluteTop",value:function(e){return e-this.scrollTop}},{key:"getVerticalOffsetForLineNumber",value:function(e){return this._viewLayout.getVerticalOffsetForLineNumber(e)}},{key:"getDecorationsInViewport",value:function(){return this.viewportData.getDecorationsInViewport()}}]),e}()),Y=(0,d.Z)((function e(t,n,i){(0,c.Z)(this,e),this.outsideRenderedLine=t,this.lineNumber=n,this.ranges=i})),U=function(){function e(t,n){(0,c.Z)(this,e),this.left=Math.round(t),this.width=Math.round(n)}return(0,d.Z)(e,[{key:"toString",value:function(){return"[".concat(this.left,",").concat(this.width,"]")}}]),e}(),K=(0,d.Z)((function e(t,n){(0,c.Z)(this,e),this.outsideRenderedLine=t,this.left=Math.round(n)})),q=(0,d.Z)((function e(t,n){(0,c.Z)(this,e),this.outsideRenderedLine=t,this.ranges=n})),G=function(){function e(t,n){(0,c.Z)(this,e),this.left=t,this.width=n}return(0,d.Z)(e,[{key:"toString",value:function(){return"[".concat(this.left,",").concat(this.width,"]")}}],[{key:"compare",value:function(e,t){return e.left-t.left}}]),e}(),$=function(){function e(){(0,c.Z)(this,e)}return(0,d.Z)(e,null,[{key:"_createRange",value:function(){return this._handyReadyRange||(this._handyReadyRange=document.createRange()),this._handyReadyRange}},{key:"_detachRange",value:function(e,t){e.selectNodeContents(t)}},{key:"_readClientRects",value:function(e,t,n,i,r){var o=this._createRange();try{return o.setStart(e,t),o.setEnd(n,i),o.getClientRects()}catch(a){return null}finally{this._detachRange(o,r)}}},{key:"_mergeAdjacentRanges",value:function(e){if(1===e.length)return[new U(e[0].left,e[0].width)];e.sort(G.compare);for(var t=[],n=0,i=e[0].left,r=e[0].width,o=1,a=e.length;o<a;o++){var s=e[o],u=s.left,l=s.width;i+r+.9>=u?r=Math.max(r,u+l-i):(t[n++]=new U(i,r),i=u,r=l)}return t[n++]=new U(i,r),t}},{key:"_createHorizontalRangesFromClientRects",value:function(e,t){if(!e||0===e.length)return null;for(var n=[],i=0,r=e.length;i<r;i++){var o=e[i];n[i]=new G(Math.max(0,o.left-t),o.width)}return this._mergeAdjacentRanges(n)}},{key:"readHorizontalRanges",value:function(e,t,n,i,r,o,a){var s=e.children.length-1;if(0>s)return null;if((t=Math.min(s,Math.max(0,t)))===(i=Math.min(s,Math.max(0,i)))&&n===r&&0===n&&!e.children[t].firstChild){var u=e.children[t].getClientRects();return this._createHorizontalRangesFromClientRects(u,o)}t!==i&&i>0&&0===r&&(i--,r=1073741824);var l=e.children[t].firstChild,c=e.children[i].firstChild;if(l&&c||(!l&&0===n&&t>0&&(l=e.children[t-1].firstChild,n=1073741824),!c&&0===r&&i>0&&(c=e.children[i-1].firstChild,r=1073741824)),!l||!c)return null;n=Math.min(l.textContent.length,Math.max(0,n)),r=Math.min(c.textContent.length,Math.max(0,r));var d=this._readClientRects(l,n,c,r,a);return this._createHorizontalRangesFromClientRects(d,o)}}]),e}(),Q=n(29805),X=n(70632),J=n(7644),ee=n(76556),te=!!D.tY||!(D.IJ||x.vU||x.G6),ne=!0,ie=function(){function e(t,n){(0,c.Z)(this,e),this._domNode=t,this._clientRectDeltaLeft=0,this._clientRectDeltaLeftRead=!1,this.endNode=n}return(0,d.Z)(e,[{key:"clientRectDeltaLeft",get:function(){return this._clientRectDeltaLeftRead||(this._clientRectDeltaLeftRead=!0,this._clientRectDeltaLeft=this._domNode.getBoundingClientRect().left),this._clientRectDeltaLeft}}]),e}(),re=function(){function e(t,n){(0,c.Z)(this,e),this.themeType=n;var i=t.options,r=i.get(40);this.renderWhitespace=i.get(85),this.renderControlCharacters=i.get(79),this.spaceWidth=r.spaceWidth,this.middotWidth=r.middotWidth,this.wsmiddotWidth=r.wsmiddotWidth,this.useMonospaceOptimizations=r.isMonospace&&!i.get(27),this.canUseHalfwidthRightwardsArrow=r.canUseHalfwidthRightwardsArrow,this.lineHeight=i.get(55),this.stopRenderingLineAfter=i.get(102),this.fontLigatures=i.get(41)}return(0,d.Z)(e,[{key:"equals",value:function(e){return this.themeType===e.themeType&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineHeight===e.lineHeight&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.fontLigatures===e.fontLigatures}}]),e}(),oe=function(){function e(t){(0,c.Z)(this,e),this._options=t,this._isMaybeInvalid=!0,this._renderedViewLine=null}return(0,d.Z)(e,[{key:"getDomNode",value:function(){return this._renderedViewLine&&this._renderedViewLine.domNode?this._renderedViewLine.domNode.domNode:null}},{key:"setDomNode",value:function(e){if(!this._renderedViewLine)throw new Error("I have no rendered view line to set the dom node to...");this._renderedViewLine.domNode=(0,E.X)(e)}},{key:"onContentChanged",value:function(){this._isMaybeInvalid=!0}},{key:"onTokensChanged",value:function(){this._isMaybeInvalid=!0}},{key:"onDecorationsChanged",value:function(){this._isMaybeInvalid=!0}},{key:"onOptionsChanged",value:function(e){this._isMaybeInvalid=!0,this._options=e}},{key:"onSelectionChanged",value:function(){return(this._options.themeType===J.e.HIGH_CONTRAST||"selection"===this._options.renderWhitespace)&&(this._isMaybeInvalid=!0,!0)}},{key:"renderLine",value:function(t,n,i,o){if(!1===this._isMaybeInvalid)return!1;this._isMaybeInvalid=!1;var a=i.getViewLineRenderingData(t),s=this._options,u=Q.Kp.filter(a.inlineDecorations,t,a.minColumn,a.maxColumn),l=null;if(s.themeType===J.e.HIGH_CONTRAST||"selection"===this._options.renderWhitespace){var c,d=i.selections,h=(0,r.Z)(d);try{for(h.s();!(c=h.n()).done;){var f=c.value;if(!(f.endLineNumber<t||f.startLineNumber>t)){var p=f.startLineNumber===t?f.startColumn:a.minColumn,g=f.endLineNumber===t?f.endColumn:a.maxColumn;p<g&&(s.themeType===J.e.HIGH_CONTRAST||"selection"!==this._options.renderWhitespace?u.push(new Q.Kp(p,g,"inline-selected-text",0)):(l||(l=[]),l.push(new X.zG(p-1,g-1))))}}}catch(y){h.e(y)}finally{h.f()}}var v=new X.IJ(s.useMonospaceOptimizations,s.canUseHalfwidthRightwardsArrow,a.content,a.continuesWithWrappedLine,a.isBasicASCII,a.containsRTL,a.minColumn-1,a.tokens,u,a.tabSize,a.startVisibleColumn,s.spaceWidth,s.middotWidth,s.wsmiddotWidth,s.stopRenderingLineAfter,s.renderWhitespace,s.renderControlCharacters,s.fontLigatures!==ee.n0.OFF,l);if(this._renderedViewLine&&this._renderedViewLine.input.equals(v))return!1;o.appendASCIIString('<div style="top:'),o.appendASCIIString(String(n)),o.appendASCIIString("px;height:"),o.appendASCIIString(String(this._options.lineHeight)),o.appendASCIIString('px;" class="'),o.appendASCIIString(e.CLASS_NAME),o.appendASCIIString('">');var m=(0,X.d1)(v,o);o.appendASCIIString("</div>");var _=null;return ne&&te&&a.isBasicASCII&&s.useMonospaceOptimizations&&0===m.containsForeignElements&&a.content.length<300&&v.lineTokens.getCount()<100&&(_=new ae(this._renderedViewLine?this._renderedViewLine.domNode:null,v,m.characterMapping)),_||(_=le(this._renderedViewLine?this._renderedViewLine.domNode:null,v,m.characterMapping,m.containsRTL,m.containsForeignElements)),this._renderedViewLine=_,!0}},{key:"layoutLine",value:function(e,t){this._renderedViewLine&&this._renderedViewLine.domNode&&(this._renderedViewLine.domNode.setTop(t),this._renderedViewLine.domNode.setHeight(this._options.lineHeight))}},{key:"getWidth",value:function(){return this._renderedViewLine?this._renderedViewLine.getWidth():0}},{key:"getWidthIsFast",value:function(){return!this._renderedViewLine||this._renderedViewLine.getWidthIsFast()}},{key:"needsMonospaceFontCheck",value:function(){return!!this._renderedViewLine&&this._renderedViewLine instanceof ae}},{key:"monospaceAssumptionsAreValid",value:function(){return this._renderedViewLine&&this._renderedViewLine instanceof ae?this._renderedViewLine.monospaceAssumptionsAreValid():ne}},{key:"onMonospaceAssumptionsInvalidated",value:function(){this._renderedViewLine&&this._renderedViewLine instanceof ae&&(this._renderedViewLine=this._renderedViewLine.toSlowRenderedLine())}},{key:"getVisibleRangesForRange",value:function(e,t,n){if(!this._renderedViewLine)return null;e|=0,t|=0,e=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,e)),t=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,t));var i=0|this._renderedViewLine.input.stopRenderingLineAfter,r=!1;-1!==i&&e>i+1&&t>i+1&&(r=!0),-1!==i&&e>i+1&&(e=i+1),-1!==i&&t>i+1&&(t=i+1);var o=this._renderedViewLine.getVisibleRangesForRange(e,t,n);return o&&o.length>0?new q(r,o):null}},{key:"getColumnOfNodeOffset",value:function(e,t,n){return this._renderedViewLine?this._renderedViewLine.getColumnOfNodeOffset(e,t,n):1}}]),e}();oe.CLASS_NAME="view-line";var ae=function(){function e(t,n,i){(0,c.Z)(this,e),this.domNode=t,this.input=n,this._characterMapping=i,this._charWidth=n.spaceWidth}return(0,d.Z)(e,[{key:"getWidth",value:function(){return this._getCharPosition(this._characterMapping.length)}},{key:"getWidthIsFast",value:function(){return!0}},{key:"monospaceAssumptionsAreValid",value:function(){if(!this.domNode)return ne;var e=this.getWidth(),t=this.domNode.domNode.firstChild.offsetWidth;return Math.abs(e-t)>=2&&(console.warn("monospace assumptions have been violated, therefore disabling monospace optimizations!"),ne=!1),ne}},{key:"toSlowRenderedLine",value:function(){return le(this.domNode,this.input,this._characterMapping,!1,0)}},{key:"getVisibleRangesForRange",value:function(e,t,n){var i=this._getCharPosition(e),r=this._getCharPosition(t);return[new U(i,r-i)]}},{key:"_getCharPosition",value:function(e){var t=this._characterMapping.getAbsoluteOffsets();return 0===t.length?0:Math.round(this._charWidth*t[e-1])}},{key:"getColumnOfNodeOffset",value:function(e,t,n){for(var i=t.textContent.length,r=-1;t;)t=t.previousSibling,r++;return this._characterMapping.partDataToCharOffset(r,i,n)+1}}]),e}(),se=function(){function e(t,n,i,r,o){if((0,c.Z)(this,e),this.domNode=t,this.input=n,this._characterMapping=i,this._isWhitespaceOnly=/^\s*$/.test(n.lineContent),this._containsForeignElements=o,this._cachedWidth=-1,this._pixelOffsetCache=null,!r||0===this._characterMapping.length){this._pixelOffsetCache=new Int32Array(Math.max(2,this._characterMapping.length+1));for(var a=0,s=this._characterMapping.length;a<=s;a++)this._pixelOffsetCache[a]=-1}}return(0,d.Z)(e,[{key:"_getReadingTarget",value:function(e){return e.domNode.firstChild}},{key:"getWidth",value:function(){return this.domNode?(-1===this._cachedWidth&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth),this._cachedWidth):0}},{key:"getWidthIsFast",value:function(){return-1!==this._cachedWidth}},{key:"getVisibleRangesForRange",value:function(e,t,n){if(!this.domNode)return null;if(null!==this._pixelOffsetCache){var i=this._readPixelOffset(this.domNode,e,n);if(-1===i)return null;var r=this._readPixelOffset(this.domNode,t,n);return-1===r?null:[new U(i,r-i)]}return this._readVisibleRangesForRange(this.domNode,e,t,n)}},{key:"_readVisibleRangesForRange",value:function(e,t,n,i){if(t===n){var r=this._readPixelOffset(e,t,i);return-1===r?null:[new U(r,0)]}return this._readRawVisibleRangesForRange(e,t,n,i)}},{key:"_readPixelOffset",value:function(e,t,n){if(0===this._characterMapping.length){if(0===this._containsForeignElements)return 0;if(2===this._containsForeignElements)return 0;if(1===this._containsForeignElements)return this.getWidth();var i=this._getReadingTarget(e);return i.firstChild?i.firstChild.offsetWidth:0}if(null!==this._pixelOffsetCache){var r=this._pixelOffsetCache[t];if(-1!==r)return r;var o=this._actualReadPixelOffset(e,t,n);return this._pixelOffsetCache[t]=o,o}return this._actualReadPixelOffset(e,t,n)}},{key:"_actualReadPixelOffset",value:function(e,t,n){if(0===this._characterMapping.length){var i=$.readHorizontalRanges(this._getReadingTarget(e),0,0,0,0,n.clientRectDeltaLeft,n.endNode);return i&&0!==i.length?i[0].left:-1}if(t===this._characterMapping.length&&this._isWhitespaceOnly&&0===this._containsForeignElements)return this.getWidth();var r=this._characterMapping.charOffsetToPartData(t-1),o=X.fH.getPartIndex(r),a=X.fH.getCharIndex(r),s=$.readHorizontalRanges(this._getReadingTarget(e),o,a,o,a,n.clientRectDeltaLeft,n.endNode);if(!s||0===s.length)return-1;var u=s[0].left;if(this.input.isBasicASCII){var l=this._characterMapping.getAbsoluteOffsets(),c=Math.round(this.input.spaceWidth*l[t-1]);if(Math.abs(c-u)<=1)return c}return u}},{key:"_readRawVisibleRangesForRange",value:function(e,t,n,i){if(1===t&&n===this._characterMapping.length)return[new U(0,this.getWidth())];var r=this._characterMapping.charOffsetToPartData(t-1),o=X.fH.getPartIndex(r),a=X.fH.getCharIndex(r),s=this._characterMapping.charOffsetToPartData(n-1),u=X.fH.getPartIndex(s),l=X.fH.getCharIndex(s);return $.readHorizontalRanges(this._getReadingTarget(e),o,a,u,l,i.clientRectDeltaLeft,i.endNode)}},{key:"getColumnOfNodeOffset",value:function(e,t,n){for(var i=t.textContent.length,r=-1;t;)t=t.previousSibling,r++;return this._characterMapping.partDataToCharOffset(r,i,n)+1}}]),e}(),ue=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,c.Z)(this,n),t.apply(this,arguments)}return(0,d.Z)(n,[{key:"_readVisibleRangesForRange",value:function(e,t,i,r){var o=(0,a.Z)((0,s.Z)(n.prototype),"_readVisibleRangesForRange",this).call(this,e,t,i,r);if(!o||0===o.length||t===i||1===t&&i===this._characterMapping.length)return o;if(!this.input.containsRTL){var u=this._readPixelOffset(e,i,r);if(-1!==u){var l=o[o.length-1];l.left<u&&(l.width=u-l.left)}}return o}}]),n}(se),le=x.Pf?ce:de;function ce(e,t,n,i,r){return new ue(e,t,n,i,r)}function de(e,t,n,i,r){return new se(e,t,n,i,r)}var he=n(67297),fe=n(67033),pe=n(16274),ge=n(86036),ve=(0,d.Z)((function e(t,n){(0,c.Z)(this,e),this.lastViewCursorsRenderData=t,this.lastTextareaPosition=n})),me=function(){function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null;(0,c.Z)(this,e),this.element=t,this.type=n,this.mouseColumn=i,this.position=r,!o&&r&&(o=new fe.e(r.lineNumber,r.column,r.lineNumber,r.column)),this.range=o,this.detail=a}return(0,d.Z)(e,[{key:"toString",value:function(){return e.toString(this)}}],[{key:"_typeToString",value:function(e){return 1===e?"TEXTAREA":2===e?"GUTTER_GLYPH_MARGIN":3===e?"GUTTER_LINE_NUMBERS":4===e?"GUTTER_LINE_DECORATIONS":5===e?"GUTTER_VIEW_ZONE":6===e?"CONTENT_TEXT":7===e?"CONTENT_EMPTY":8===e?"CONTENT_VIEW_ZONE":9===e?"CONTENT_WIDGET":10===e?"OVERVIEW_RULER":11===e?"SCROLLBAR":12===e?"OVERLAY_WIDGET":"UNKNOWN"}},{key:"toString",value:function(e){return this._typeToString(e.type)+": "+e.position+" - "+e.range+" - "+e.detail}}]),e}(),_e=function(){function e(){(0,c.Z)(this,e)}return(0,d.Z)(e,null,[{key:"isTextArea",value:function(e){return 2===e.length&&3===e[0]&&6===e[1]}},{key:"isChildOfViewLines",value:function(e){return e.length>=4&&3===e[0]&&7===e[3]}},{key:"isStrictChildOfViewLines",value:function(e){return e.length>4&&3===e[0]&&7===e[3]}},{key:"isChildOfScrollableElement",value:function(e){return e.length>=2&&3===e[0]&&5===e[1]}},{key:"isChildOfMinimap",value:function(e){return e.length>=2&&3===e[0]&&8===e[1]}},{key:"isChildOfContentWidgets",value:function(e){return e.length>=4&&3===e[0]&&1===e[3]}},{key:"isChildOfOverflowingContentWidgets",value:function(e){return e.length>=1&&2===e[0]}},{key:"isChildOfOverlayWidgets",value:function(e){return e.length>=2&&3===e[0]&&4===e[1]}}]),e}(),ye=function(){function e(t,n,i){(0,c.Z)(this,e),this.model=t.model;var r=t.configuration.options;this.layoutInfo=r.get(127),this.viewDomNode=n.viewDomNode,this.lineHeight=r.get(55),this.stickyTabStops=r.get(101),this.typicalHalfwidthCharacterWidth=r.get(40).typicalHalfwidthCharacterWidth,this.lastRenderData=i,this._context=t,this._viewHelper=n}return(0,d.Z)(e,[{key:"getZoneAtCoord",value:function(t){return e.getZoneAtCoord(this._context,t)}},{key:"getFullLineRangeAtCoord",value:function(e){if(this._context.viewLayout.isAfterLines(e)){var t=this._context.model.getLineCount(),n=this._context.model.getLineMaxColumn(t);return{range:new fe.e(t,n,t,n),isAfterLines:!0}}var i=this._context.viewLayout.getLineNumberAtVerticalOffset(e),r=this._context.model.getLineMaxColumn(i);return{range:new fe.e(i,1,i,r),isAfterLines:!1}}},{key:"getLineNumberAtVerticalOffset",value:function(e){return this._context.viewLayout.getLineNumberAtVerticalOffset(e)}},{key:"isAfterLines",value:function(e){return this._context.viewLayout.isAfterLines(e)}},{key:"isInTopPadding",value:function(e){return this._context.viewLayout.isInTopPadding(e)}},{key:"isInBottomPadding",value:function(e){return this._context.viewLayout.isInBottomPadding(e)}},{key:"getVerticalOffsetForLineNumber",value:function(e){return this._context.viewLayout.getVerticalOffsetForLineNumber(e)}},{key:"findAttribute",value:function(t,n){return e._findAttribute(t,n,this._viewHelper.viewDomNode)}},{key:"getLineWidth",value:function(e){return this._viewHelper.getLineWidth(e)}},{key:"visibleRangeForPosition",value:function(e,t){return this._viewHelper.visibleRangeForPosition(e,t)}},{key:"getPositionFromDOMInfo",value:function(e,t){return this._viewHelper.getPositionFromDOMInfo(e,t)}},{key:"getCurrentScrollTop",value:function(){return this._context.viewLayout.getCurrentScrollTop()}},{key:"getCurrentScrollLeft",value:function(){return this._context.viewLayout.getCurrentScrollLeft()}}],[{key:"getZoneAtCoord",value:function(e,t){var n=e.viewLayout.getWhitespaceAtVerticalOffset(t);if(n){var i,r=n.verticalOffset+n.height/2,o=e.model.getLineCount(),a=null,s=null;return n.afterLineNumber!==o&&(s=new he.L(n.afterLineNumber+1,1)),n.afterLineNumber>0&&(a=new he.L(n.afterLineNumber,e.model.getLineMaxColumn(n.afterLineNumber))),i=null===s?a:null===a?s:t<r?a:s,{viewZoneId:n.id,afterLineNumber:n.afterLineNumber,positionBefore:a,positionAfter:s,position:i}}return null}},{key:"_findAttribute",value:function(e,t,n){for(;e&&e!==document.body;){if(e.hasAttribute&&e.hasAttribute(t))return e.getAttribute(t);if(e===n)return null;e=e.parentNode}return null}}]),e}(),be=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,o){var a;return(0,c.Z)(this,n),(a=t.call(this,e,i,r))._ctx=e,o?(a.target=o,a.targetPath=W.collect(o,e.viewDomNode)):(a.target=null,a.targetPath=new Uint8Array(0)),a}return(0,d.Z)(n,[{key:"toString",value:function(){return"pos(".concat(this.pos.x,",").concat(this.pos.y,"), editorPos(").concat(this.editorPos.x,",").concat(this.editorPos.y,"), mouseVerticalOffset: ").concat(this.mouseVerticalOffset,", mouseContentHorizontalOffset: ").concat(this.mouseContentHorizontalOffset,"\n\ttarget: ").concat(this.target?this.target.outerHTML:null)}},{key:"fulfill",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=this.mouseColumn;return t&&t.column<this._ctx.model.getLineMaxColumn(t.lineNumber)&&(r=pe.io.visibleColumnFromColumn(this._ctx.model.getLineContent(t.lineNumber),t.column,this._ctx.model.getTextModelOptions().tabSize)+1),new me(this.target,e,r,t,n,i)}},{key:"withTarget",value:function(e){return new n(this._ctx,this.editorPos,this.pos,e)}}]),n}((0,d.Z)((function e(t,n,i){(0,c.Z)(this,e),this.editorPos=n,this.pos=i,this.mouseVerticalOffset=Math.max(0,t.getCurrentScrollTop()+i.y-n.y),this.mouseContentHorizontalOffset=t.getCurrentScrollLeft()+i.x-n.x-t.layoutInfo.contentLeft,this.isInMarginArea=i.x-n.x<t.layoutInfo.contentLeft&&i.x-n.x>=t.layoutInfo.glyphMarginLeft,this.isInContentArea=!this.isInMarginArea,this.mouseColumn=Math.max(0,ke._getMouseColumn(this.mouseContentHorizontalOffset,t.typicalHalfwidthCharacterWidth))}))),we={isAfterLines:!0};function Ce(e){return{isAfterLines:!1,horizontalDistanceToText:e}}var ke=function(){function e(t,n){(0,c.Z)(this,e),this._context=t,this._viewHelper=n}return(0,d.Z)(e,[{key:"mouseTargetIsWidget",value:function(e){var t=e.target,n=W.collect(t,this._viewHelper.viewDomNode);return!(!_e.isChildOfContentWidgets(n)&&!_e.isChildOfOverflowingContentWidgets(n))||!!_e.isChildOfOverlayWidgets(n)}},{key:"createMouseTarget",value:function(t,n,i,r){var o=new ye(this._context,this._viewHelper,t),a=new be(o,n,i,r);try{return e._createMouseTarget(o,a,!1)}catch(s){return a.fulfill(0)}}},{key:"getMouseColumn",value:function(t,n){var i=this._context.configuration.options,r=i.get(127),o=this._context.viewLayout.getCurrentScrollLeft()+n.x-t.x-r.contentLeft;return e._getMouseColumn(o,i.get(40).typicalHalfwidthCharacterWidth)}}],[{key:"_createMouseTarget",value:function(t,n,i){if(null===n.target){if(i)return n.fulfill(0);var r=e._doHitTest(t,n);return r.position?e.createMouseTargetFromHitTestPosition(t,n,r.position.lineNumber,r.position.column):this._createMouseTarget(t,n.withTarget(r.hitTarget),!0)}var o=n,a=null;return(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=a||e._hitTestContentWidget(t,o))||e._hitTestOverlayWidget(t,o))||e._hitTestMinimap(t,o))||e._hitTestScrollbarSlider(t,o))||e._hitTestViewZone(t,o))||e._hitTestMargin(t,o))||e._hitTestViewCursor(t,o))||e._hitTestTextArea(t,o))||e._hitTestViewLines(t,o,i))||e._hitTestScrollbar(t,o))||n.fulfill(0)}},{key:"_hitTestContentWidget",value:function(e,t){if(_e.isChildOfContentWidgets(t.targetPath)||_e.isChildOfOverflowingContentWidgets(t.targetPath)){var n=e.findAttribute(t.target,"widgetId");return n?t.fulfill(9,null,null,n):t.fulfill(0)}return null}},{key:"_hitTestOverlayWidget",value:function(e,t){if(_e.isChildOfOverlayWidgets(t.targetPath)){var n=e.findAttribute(t.target,"widgetId");return n?t.fulfill(12,null,null,n):t.fulfill(0)}return null}},{key:"_hitTestViewCursor",value:function(e,t){if(t.target){var n,i=e.lastRenderData.lastViewCursorsRenderData,o=(0,r.Z)(i);try{for(o.s();!(n=o.n()).done;){var a=n.value;if(t.target===a.domNode)return t.fulfill(6,a.position)}}catch(p){o.e(p)}finally{o.f()}}if(t.isInContentArea){var s,u=e.lastRenderData.lastViewCursorsRenderData,l=t.mouseContentHorizontalOffset,c=t.mouseVerticalOffset,d=(0,r.Z)(u);try{for(d.s();!(s=d.n()).done;){var h=s.value;if(!(l<h.contentLeft)&&!(l>h.contentLeft+h.width)){var f=e.getVerticalOffsetForLineNumber(h.position.lineNumber);if(f<=c&&c<=f+h.height)return t.fulfill(6,h.position)}}}catch(p){d.e(p)}finally{d.f()}}return null}},{key:"_hitTestViewZone",value:function(e,t){var n=e.getZoneAtCoord(t.mouseVerticalOffset);if(n){var i=t.isInContentArea?8:5;return t.fulfill(i,n.position,null,n)}return null}},{key:"_hitTestTextArea",value:function(e,t){return _e.isTextArea(t.targetPath)?e.lastRenderData.lastTextareaPosition?t.fulfill(6,e.lastRenderData.lastTextareaPosition):t.fulfill(1,e.lastRenderData.lastTextareaPosition):null}},{key:"_hitTestMargin",value:function(e,t){if(t.isInMarginArea){var n=e.getFullLineRangeAtCoord(t.mouseVerticalOffset),i=n.range.getStartPosition(),r=Math.abs(t.pos.x-t.editorPos.x),o={isAfterLines:n.isAfterLines,glyphMarginLeft:e.layoutInfo.glyphMarginLeft,glyphMarginWidth:e.layoutInfo.glyphMarginWidth,lineNumbersWidth:e.layoutInfo.lineNumbersWidth,offsetX:r};return(r-=e.layoutInfo.glyphMarginLeft)<=e.layoutInfo.glyphMarginWidth?t.fulfill(2,i,n.range,o):(r-=e.layoutInfo.glyphMarginWidth)<=e.layoutInfo.lineNumbersWidth?t.fulfill(3,i,n.range,o):(r-=e.layoutInfo.lineNumbersWidth,t.fulfill(4,i,n.range,o))}return null}},{key:"_hitTestViewLines",value:function(t,n,i){if(!_e.isChildOfViewLines(n.targetPath))return null;if(t.isInTopPadding(n.mouseVerticalOffset))return n.fulfill(7,new he.L(1,1),void 0,we);if(t.isAfterLines(n.mouseVerticalOffset)||t.isInBottomPadding(n.mouseVerticalOffset)){var r=t.model.getLineCount(),o=t.model.getLineMaxColumn(r);return n.fulfill(7,new he.L(r,o),void 0,we)}if(i){if(_e.isStrictChildOfViewLines(n.targetPath)){var a=t.getLineNumberAtVerticalOffset(n.mouseVerticalOffset);if(0===t.model.getLineLength(a)){var s=t.getLineWidth(a),u=Ce(n.mouseContentHorizontalOffset-s);return n.fulfill(7,new he.L(a,1),void 0,u)}var l=t.getLineWidth(a);if(n.mouseContentHorizontalOffset>=l){var c=Ce(n.mouseContentHorizontalOffset-l),d=new he.L(a,t.model.getLineMaxColumn(a));return n.fulfill(7,d,void 0,c)}}return n.fulfill(0)}var h=e._doHitTest(t,n);return h.position?e.createMouseTargetFromHitTestPosition(t,n,h.position.lineNumber,h.position.column):this._createMouseTarget(t,n.withTarget(h.hitTarget),!0)}},{key:"_hitTestMinimap",value:function(e,t){if(_e.isChildOfMinimap(t.targetPath)){var n=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),i=e.model.getLineMaxColumn(n);return t.fulfill(11,new he.L(n,i))}return null}},{key:"_hitTestScrollbarSlider",value:function(e,t){if(_e.isChildOfScrollableElement(t.targetPath)&&t.target&&1===t.target.nodeType){var n=t.target.className;if(n&&/\b(slider|scrollbar)\b/.test(n)){var i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),r=e.model.getLineMaxColumn(i);return t.fulfill(11,new he.L(i,r))}}return null}},{key:"_hitTestScrollbar",value:function(e,t){if(_e.isChildOfScrollableElement(t.targetPath)){var n=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),i=e.model.getLineMaxColumn(n);return t.fulfill(11,new he.L(n,i))}return null}},{key:"_getMouseColumn",value:function(e,t){return e<0?1:Math.round(e/t)+1}},{key:"createMouseTargetFromHitTestPosition",value:function(e,t,n,i){var r=new he.L(n,i),o=e.getLineWidth(n);if(t.mouseContentHorizontalOffset>o){var a=Ce(t.mouseContentHorizontalOffset-o);return t.fulfill(7,r,void 0,a)}var s=e.visibleRangeForPosition(n,i);if(!s)return t.fulfill(0,r);var u=s.left;if(t.mouseContentHorizontalOffset===u)return t.fulfill(6,r);var l=[];if(l.push({offset:s.left,column:i}),i>1){var c=e.visibleRangeForPosition(n,i-1);c&&l.push({offset:c.left,column:i-1})}if(i<e.model.getLineMaxColumn(n)){var d=e.visibleRangeForPosition(n,i+1);d&&l.push({offset:d.left,column:i+1})}l.sort((function(e,t){return e.offset-t.offset}));for(var h=1;h<l.length;h++){var f=l[h-1],p=l[h];if(f.offset<=t.mouseContentHorizontalOffset&&t.mouseContentHorizontalOffset<=p.offset){var g=new fe.e(n,f.column,n,p.column);return t.fulfill(6,r,g)}}return t.fulfill(6,r)}},{key:"_doHitTestWithCaretRangeFromPoint",value:function(e,t){var n=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),i=e.getVerticalOffsetForLineNumber(n)+Math.floor(e.lineHeight/2),r=t.pos.y+(i-t.mouseVerticalOffset);r<=t.editorPos.y&&(r=t.editorPos.y+1),r>=t.editorPos.y+e.layoutInfo.height&&(r=t.editorPos.y+e.layoutInfo.height-1);var o=new O(t.pos.x,r),a=this._actualDoHitTestWithCaretRangeFromPoint(e,o.toClientCoordinates());return a.position?a:this._actualDoHitTestWithCaretRangeFromPoint(e,t.pos.toClientCoordinates())}},{key:"_actualDoHitTestWithCaretRangeFromPoint",value:function(e,t){var n,i=_.getShadowRoot(e.viewDomNode);if(n=i?"undefined"===typeof i.caretRangeFromPoint?function(e,t,n){var i=document.createRange(),r=e.elementFromPoint(t,n);if(null!==r){for(;r&&r.firstChild&&r.firstChild.nodeType!==r.firstChild.TEXT_NODE&&r.lastChild&&r.lastChild.firstChild;)r=r.lastChild;var o,a=r.getBoundingClientRect(),s=window.getComputedStyle(r,null).getPropertyValue("font"),u=r.innerText,l=a.left,c=0;if(t>a.left+a.width)c=u.length;else for(var d=Se.getInstance(),h=0;h<u.length+1;h++){if(t<(l+=o=d.getCharWidth(u.charAt(h),s)/2)){c=h;break}l+=o}i.setStart(r.firstChild,c),i.setEnd(r.firstChild,c)}return i}(i,t.clientX,t.clientY):i.caretRangeFromPoint(t.clientX,t.clientY):document.caretRangeFromPoint(t.clientX,t.clientY),!n||!n.startContainer)return{position:null,hitTarget:null};var r=n.startContainer,o=null;if(r.nodeType===r.TEXT_NODE){var a=r.parentNode,s=a?a.parentNode:null,u=s?s.parentNode:null;if((u&&u.nodeType===u.ELEMENT_NODE?u.className:null)===oe.CLASS_NAME)return{position:e.getPositionFromDOMInfo(a,n.startOffset),hitTarget:null};o=r.parentNode}else if(r.nodeType===r.ELEMENT_NODE){var l=r.parentNode,c=l?l.parentNode:null;if((c&&c.nodeType===c.ELEMENT_NODE?c.className:null)===oe.CLASS_NAME)return{position:e.getPositionFromDOMInfo(r,r.textContent.length),hitTarget:null};o=r}return{position:null,hitTarget:o}}},{key:"_doHitTestWithCaretPositionFromPoint",value:function(e,t){var n=document.caretPositionFromPoint(t.clientX,t.clientY);if(n.offsetNode.nodeType===n.offsetNode.TEXT_NODE){var i=n.offsetNode.parentNode,r=i?i.parentNode:null,o=r?r.parentNode:null;return(o&&o.nodeType===o.ELEMENT_NODE?o.className:null)===oe.CLASS_NAME?{position:e.getPositionFromDOMInfo(n.offsetNode.parentNode,n.offset),hitTarget:null}:{position:null,hitTarget:n.offsetNode.parentNode}}if(n.offsetNode.nodeType===n.offsetNode.ELEMENT_NODE){var a=n.offsetNode.parentNode,s=a&&a.nodeType===a.ELEMENT_NODE?a.className:null,u=a?a.parentNode:null,l=u&&u.nodeType===u.ELEMENT_NODE?u.className:null;if(s===oe.CLASS_NAME){var c=n.offsetNode.childNodes[Math.min(n.offset,n.offsetNode.childNodes.length-1)];if(c)return{position:e.getPositionFromDOMInfo(c,0),hitTarget:null}}else if(l===oe.CLASS_NAME){return{position:e.getPositionFromDOMInfo(n.offsetNode,0),hitTarget:null}}}return{position:null,hitTarget:n.offsetNode}}},{key:"_snapToSoftTabBoundary",value:function(e,t){var n=t.getLineContent(e.lineNumber),i=t.getTextModelOptions().tabSize,r=ge.l.atomicPosition(n,e.column-1,i,2);return-1!==r?new he.L(e.lineNumber,r+1):e}},{key:"_doHitTest",value:function(e,t){var n;return(n="function"===typeof document.caretRangeFromPoint?this._doHitTestWithCaretRangeFromPoint(e,t):document.caretPositionFromPoint?this._doHitTestWithCaretPositionFromPoint(e,t.pos.toClientCoordinates()):{position:null,hitTarget:null}).position&&e.stickyTabStops&&(n.position=this._snapToSoftTabBoundary(n.position,e.model)),n}}]),e}();var Se=function(){function e(){(0,c.Z)(this,e),this._cache={},this._canvas=document.createElement("canvas")}return(0,d.Z)(e,[{key:"getCharWidth",value:function(e,t){var n=e+t;if(this._cache[n])return this._cache[n];var i=this._canvas.getContext("2d");i.font=t;var r=i.measureText(e).width;return this._cache[n]=r,r}}],[{key:"getInstance",value:function(){return e._INSTANCE||(e._INSTANCE=new e),e._INSTANCE}}]),e}();Se._INSTANCE=null;var xe=n(51164);function Le(e){return function(t,n){var i=!1;return e&&(i=e.mouseTargetIsWidget(n)),i||n.preventDefault(),n}}var Ee=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r){var a;(0,c.Z)(this,n),(a=t.call(this))._context=e,a.viewController=i,a.viewHelper=r,a.mouseTargetFactory=new ke(a._context,r),a._mouseDownOperation=a._register(new De(a._context,a.viewController,a.viewHelper,(function(e,t){return a._createMouseTarget(e,t)}),(function(e){return a._getMouseColumn(e)}))),a.lastMouseLeaveTime=-1,a._height=a._context.configuration.options.get(127).height;var s=new F(a.viewHelper.viewDomNode);a._register(s.onContextMenu(a.viewHelper.viewDomNode,(function(e){return a._onContextMenu(e,!0)}))),a._register(s.onMouseMoveThrottled(a.viewHelper.viewDomNode,(function(e){return a._onMouseMove(e)}),Le(a.mouseTargetFactory),n.MOUSE_MOVE_MINIMUM_TIME)),a._register(s.onMouseUp(a.viewHelper.viewDomNode,(function(e){return a._onMouseUp(e)}))),a._register(s.onMouseLeave(a.viewHelper.viewDomNode,(function(e){return a._onMouseLeave(e)}))),a._register(s.onMouseDown(a.viewHelper.viewDomNode,(function(e){return a._onMouseDown(e)})));return a._register(_.addDisposableListener(a.viewHelper.viewDomNode,_.EventType.MOUSE_WHEEL,(function(e){if(a.viewController.emitMouseWheel(e),a._context.configuration.options.get(64)){var t=new M.q(e);if(D.dz?(e.metaKey||e.ctrlKey)&&!e.shiftKey&&!e.altKey:e.ctrlKey&&!e.metaKey&&!e.shiftKey&&!e.altKey){var n=xe.C.getZoomLevel(),i=t.deltaY>0?1:-1;xe.C.setZoomLevel(n+i),t.preventDefault(),t.stopPropagation()}}}),{capture:!0,passive:!1})),a._context.addEventHandler((0,o.Z)(a)),a}return(0,d.Z)(n,[{key:"dispose",value:function(){this._context.removeEventHandler(this),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"onConfigurationChanged",value:function(e){if(e.hasChanged(127)){var t=this._context.configuration.options.get(127).height;this._height!==t&&(this._height=t,this._mouseDownOperation.onHeightChanged())}return!1}},{key:"onCursorStateChanged",value:function(e){return this._mouseDownOperation.onCursorStateChanged(e),!1}},{key:"onFocusChanged",value:function(e){return!1}},{key:"onScrollChanged",value:function(e){return this._mouseDownOperation.onScrollChanged(),!1}},{key:"getTargetAtClientPoint",value:function(e,t){var n=new A(e,t).toPageCoordinates(),i=P(this.viewHelper.viewDomNode);return n.y<i.y||n.y>i.y+i.height||n.x<i.x||n.x>i.x+i.width?null:this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),i,n,null)}},{key:"_createMouseTarget",value:function(e,t){return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),e.editorPos,e.pos,t?e.target:null)}},{key:"_getMouseColumn",value:function(e){return this.mouseTargetFactory.getMouseColumn(e.editorPos,e.pos)}},{key:"_onContextMenu",value:function(e,t){this.viewController.emitContextMenu({event:e,target:this._createMouseTarget(e,t)})}},{key:"_onMouseMove",value:function(e){this._mouseDownOperation.isActive()||(e.timestamp<this.lastMouseLeaveTime||this.viewController.emitMouseMove({event:e,target:this._createMouseTarget(e,!0)}))}},{key:"_onMouseLeave",value:function(e){this.lastMouseLeaveTime=(new Date).getTime(),this.viewController.emitMouseLeave({event:e,target:null})}},{key:"_onMouseUp",value:function(e){this.viewController.emitMouseUp({event:e,target:this._createMouseTarget(e,!0)})}},{key:"_onMouseDown",value:function(e){var t=this,n=this._createMouseTarget(e,!0),i=6===n.type||7===n.type,r=2===n.type||3===n.type||4===n.type,o=3===n.type,a=this._context.configuration.options.get(95),s=8===n.type||5===n.type,u=9===n.type,l=e.leftButton||e.middleButton;D.dz&&e.leftButton&&e.ctrlKey&&(l=!1);var c=function(){e.preventDefault(),t.viewHelper.focusTextArea()};if(l&&(i||o&&a))c(),this._mouseDownOperation.start(n.type,e);else if(r)e.preventDefault();else if(s){var d=n.detail;this.viewHelper.shouldSuppressMouseDownOnViewZone(d.viewZoneId)&&(c(),this._mouseDownOperation.start(n.type,e),e.preventDefault())}else u&&this.viewHelper.shouldSuppressMouseDownOnWidget(n.detail)&&(c(),e.preventDefault());this.viewController.emitMouseDown({event:e,target:n})}}]),n}(B);Ee.MOUSE_MOVE_MINIMUM_TIME=100;var De=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,o,a){var s;return(0,c.Z)(this,n),(s=t.call(this))._context=e,s._viewController=i,s._viewHelper=r,s._createMouseTarget=o,s._getMouseColumn=a,s._mouseMoveMonitor=s._register(new H(s._viewHelper.viewDomNode)),s._onScrollTimeout=s._register(new T._F),s._mouseState=new Ne,s._currentSelection=new L.Y(1,1,1,1),s._isActive=!1,s._lastMouseEvent=null,s}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"isActive",value:function(){return this._isActive}},{key:"_onMouseDownThenMove",value:function(e){this._lastMouseEvent=e,this._mouseState.setModifiers(e);var t=this._findMousePosition(e,!0);t&&(this._mouseState.isDragAndDrop?this._viewController.emitMouseDrag({event:e,target:t}):this._dispatchMouse(t,!0))}},{key:"start",value:function(e,t){var n=this;this._lastMouseEvent=t,this._mouseState.setStartedOnLineNumbers(3===e),this._mouseState.setStartButtons(t),this._mouseState.setModifiers(t);var i=this._findMousePosition(t,!0);if(i&&i.position){this._mouseState.trySetCount(t.detail,i.position),t.detail=this._mouseState.count;var r=this._context.configuration.options;if(!r.get(77)&&r.get(29)&&!r.get(16)&&!this._mouseState.altKey&&t.detail<2&&!this._isActive&&!this._currentSelection.isEmpty()&&6===i.type&&i.position&&this._currentSelection.containsPosition(i.position))return this._mouseState.isDragAndDrop=!0,this._isActive=!0,void this._mouseMoveMonitor.startMonitoring(t.target,t.buttons,Le(null),(function(e){return n._onMouseDownThenMove(e)}),(function(e){var t=n._findMousePosition(n._lastMouseEvent,!0);e&&e instanceof KeyboardEvent?n._viewController.emitMouseDropCanceled():n._viewController.emitMouseDrop({event:n._lastMouseEvent,target:t?n._createMouseTarget(n._lastMouseEvent,!0):null}),n._stop()}));this._mouseState.isDragAndDrop=!1,this._dispatchMouse(i,t.shiftKey),this._isActive||(this._isActive=!0,this._mouseMoveMonitor.startMonitoring(t.target,t.buttons,Le(null),(function(e){return n._onMouseDownThenMove(e)}),(function(){return n._stop()})))}}},{key:"_stop",value:function(){this._isActive=!1,this._onScrollTimeout.cancel()}},{key:"onHeightChanged",value:function(){this._mouseMoveMonitor.stopMonitoring()}},{key:"onScrollChanged",value:function(){var e=this;this._isActive&&this._onScrollTimeout.setIfNotSet((function(){if(e._lastMouseEvent){var t=e._findMousePosition(e._lastMouseEvent,!1);t&&(e._mouseState.isDragAndDrop||e._dispatchMouse(t,!0))}}),10)}},{key:"onCursorStateChanged",value:function(e){this._currentSelection=e.selections[0]}},{key:"_getPositionOutsideEditor",value:function(e){var t=e.editorPos,n=this._context.model,i=this._context.viewLayout,r=this._getMouseColumn(e);if(e.posy<t.y){var o=Math.max(i.getCurrentScrollTop()-(t.y-e.posy),0),a=ye.getZoneAtCoord(this._context,o);if(a){var s=this._helpPositionJumpOverViewZone(a);if(s)return new me(null,13,r,s)}var u=i.getLineNumberAtVerticalOffset(o);return new me(null,13,r,new he.L(u,1))}if(e.posy>t.y+t.height){var l=i.getCurrentScrollTop()+(e.posy-t.y),c=ye.getZoneAtCoord(this._context,l);if(c){var d=this._helpPositionJumpOverViewZone(c);if(d)return new me(null,13,r,d)}var h=i.getLineNumberAtVerticalOffset(l);return new me(null,13,r,new he.L(h,n.getLineMaxColumn(h)))}var f=i.getLineNumberAtVerticalOffset(i.getCurrentScrollTop()+(e.posy-t.y));return e.posx<t.x?new me(null,13,r,new he.L(f,1)):e.posx>t.x+t.width?new me(null,13,r,new he.L(f,n.getLineMaxColumn(f))):null}},{key:"_findMousePosition",value:function(e,t){var n=this._getPositionOutsideEditor(e);if(n)return n;var i=this._createMouseTarget(e,t);if(!i.position)return null;if(8===i.type||5===i.type){var r=this._helpPositionJumpOverViewZone(i.detail);if(r)return new me(i.element,i.type,i.mouseColumn,r,null,i.detail)}return i}},{key:"_helpPositionJumpOverViewZone",value:function(e){var t=new he.L(this._currentSelection.selectionStartLineNumber,this._currentSelection.selectionStartColumn),n=e.positionBefore,i=e.positionAfter;return n&&i?n.isBefore(t)?n:i:null}},{key:"_dispatchMouse",value:function(e,t){e.position&&this._viewController.dispatchMouse({position:e.position,mouseColumn:e.mouseColumn,startedOnLineNumbers:this._mouseState.startedOnLineNumbers,inSelectionMode:t,mouseDownCount:this._mouseState.count,altKey:this._mouseState.altKey,ctrlKey:this._mouseState.ctrlKey,metaKey:this._mouseState.metaKey,shiftKey:this._mouseState.shiftKey,leftButton:this._mouseState.leftButton,middleButton:this._mouseState.middleButton})}}]),n}(w.JT),Ne=function(){function e(){(0,c.Z)(this,e),this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._leftButton=!1,this._middleButton=!1,this._startedOnLineNumbers=!1,this._lastMouseDownPosition=null,this._lastMouseDownPositionEqualCount=0,this._lastMouseDownCount=0,this._lastSetMouseDownCountTime=0,this.isDragAndDrop=!1}return(0,d.Z)(e,[{key:"altKey",get:function(){return this._altKey}},{key:"ctrlKey",get:function(){return this._ctrlKey}},{key:"metaKey",get:function(){return this._metaKey}},{key:"shiftKey",get:function(){return this._shiftKey}},{key:"leftButton",get:function(){return this._leftButton}},{key:"middleButton",get:function(){return this._middleButton}},{key:"startedOnLineNumbers",get:function(){return this._startedOnLineNumbers}},{key:"count",get:function(){return this._lastMouseDownCount}},{key:"setModifiers",value:function(e){this._altKey=e.altKey,this._ctrlKey=e.ctrlKey,this._metaKey=e.metaKey,this._shiftKey=e.shiftKey}},{key:"setStartButtons",value:function(e){this._leftButton=e.leftButton,this._middleButton=e.middleButton}},{key:"setStartedOnLineNumbers",value:function(e){this._startedOnLineNumbers=e}},{key:"trySetCount",value:function(t,n){var i=(new Date).getTime();i-this._lastSetMouseDownCountTime>e.CLEAR_MOUSE_DOWN_COUNT_TIME&&(t=1),this._lastSetMouseDownCountTime=i,t>this._lastMouseDownCount+1&&(t=this._lastMouseDownCount+1),this._lastMouseDownPosition&&this._lastMouseDownPosition.equals(n)?this._lastMouseDownPositionEqualCount++:this._lastMouseDownPositionEqualCount=1,this._lastMouseDownPosition=n,this._lastMouseDownCount=Math.min(t,this._lastMouseDownPositionEqualCount)}}]),e}();Ne.CLEAR_MOUSE_DOWN_COUNT_TIME=400;var Me=n(32721),Te=n(83106),Ie=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r){var o;(0,c.Z)(this,n),(o=t.call(this,e,i,r))._register(N.o.addTarget(o.viewHelper.linesContentDomNode)),o._register(_.addDisposableListener(o.viewHelper.linesContentDomNode,N.t.Tap,(function(e){return o.onTap(e)}))),o._register(_.addDisposableListener(o.viewHelper.linesContentDomNode,N.t.Change,(function(e){return o.onChange(e)}))),o._register(_.addDisposableListener(o.viewHelper.linesContentDomNode,N.t.Contextmenu,(function(e){return o._onContextMenu(new Z(e,o.viewHelper.viewDomNode),!1)}))),o._lastPointerType="mouse",o._register(_.addDisposableListener(o.viewHelper.linesContentDomNode,"pointerdown",(function(e){var t=e.pointerType;o._lastPointerType="mouse"!==t?"touch"===t?"touch":"pen":"mouse"})));var a=new j(o.viewHelper.viewDomNode);return o._register(a.onPointerMoveThrottled(o.viewHelper.viewDomNode,(function(e){return o._onMouseMove(e)}),Le(o.mouseTargetFactory),Ee.MOUSE_MOVE_MINIMUM_TIME)),o._register(a.onPointerUp(o.viewHelper.viewDomNode,(function(e){return o._onMouseUp(e)}))),o._register(a.onPointerLeave(o.viewHelper.viewDomNode,(function(e){return o._onMouseLeave(e)}))),o._register(a.onPointerDown(o.viewHelper.viewDomNode,(function(e){return o._onMouseDown(e)}))),o}return(0,d.Z)(n,[{key:"onTap",value:function(e){if(e.initialTarget&&this.viewHelper.linesContentDomNode.contains(e.initialTarget)){e.preventDefault(),this.viewHelper.focusTextArea();var t=this._createMouseTarget(new Z(e,this.viewHelper.viewDomNode),!1);t.position&&this.viewController.dispatchMouse({position:t.position,mouseColumn:t.position.column,startedOnLineNumbers:!1,mouseDownCount:e.tapCount,inSelectionMode:!1,altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,leftButton:!1,middleButton:!1})}}},{key:"onChange",value:function(e){"touch"===this._lastPointerType&&this._context.model.deltaScrollNow(-e.translationX,-e.translationY)}},{key:"_onMouseDown",value:function(e){"touch"!==e.browserEvent.pointerType&&(0,a.Z)((0,s.Z)(n.prototype),"_onMouseDown",this).call(this,e)}}]),n}(Ee),Oe=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r){var o;return(0,c.Z)(this,n),(o=t.call(this,e,i,r))._register(N.o.addTarget(o.viewHelper.linesContentDomNode)),o._register(_.addDisposableListener(o.viewHelper.linesContentDomNode,N.t.Tap,(function(e){return o.onTap(e)}))),o._register(_.addDisposableListener(o.viewHelper.linesContentDomNode,N.t.Change,(function(e){return o.onChange(e)}))),o._register(_.addDisposableListener(o.viewHelper.linesContentDomNode,N.t.Contextmenu,(function(e){return o._onContextMenu(new Z(e,o.viewHelper.viewDomNode),!1)}))),o}return(0,d.Z)(n,[{key:"onTap",value:function(e){e.preventDefault(),this.viewHelper.focusTextArea();var t=this._createMouseTarget(new Z(e,this.viewHelper.viewDomNode),!1);if(t.position){var n=document.createEvent("CustomEvent");n.initEvent(Te.pd.Tap,!1,!0),this.viewHelper.dispatchTextAreaEvent(n),this.viewController.moveTo(t.position)}}},{key:"onChange",value:function(e){this._context.model.deltaScrollNow(-e.translationX,-e.translationY)}}]),n}(Ee),Ae=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r){var o;return(0,c.Z)(this,n),o=t.call(this),D.gn&&Me.D.pointerEvents?o.handler=o._register(new Ie(e,i,r)):window.TouchEvent?o.handler=o._register(new Oe(e,i,r)):o.handler=o._register(new Ee(e,i,r)),o}return(0,d.Z)(n,[{key:"getTargetAtClientPoint",value:function(e,t){return this.handler.getTargetAtClientPoint(e,t)}}]),n}(w.JT),Re=n(51747),Pe=n(90224),Ze=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,c.Z)(this,n),t.apply(this,arguments)}return(0,d.Z)(n)}(B),Fe=n(80449),je=n(70182),He=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this))._context=e,i._readConfig(),i._lastCursorModelPosition=new he.L(1,1),i._renderResult=null,i._activeLineNumber=1,i._context.addEventHandler((0,o.Z)(i)),i}return(0,d.Z)(n,[{key:"_readConfig",value:function(){var e=this._context.configuration.options;this._lineHeight=e.get(55);var t=e.get(56);this._renderLineNumbers=t.renderType,this._renderCustomLineNumbers=t.renderFn,this._renderFinalNewline=e.get(81);var n=e.get(127);this._lineNumbersLeft=n.lineNumbersLeft,this._lineNumbersWidth=n.lineNumbersWidth}},{key:"dispose",value:function(){this._context.removeEventHandler(this),this._renderResult=null,(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"onConfigurationChanged",value:function(e){return this._readConfig(),!0}},{key:"onCursorStateChanged",value:function(e){var t=e.selections[0].getPosition();this._lastCursorModelPosition=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(t);var n=!1;return this._activeLineNumber!==t.lineNumber&&(this._activeLineNumber=t.lineNumber,n=!0),2!==this._renderLineNumbers&&3!==this._renderLineNumbers||(n=!0),n}},{key:"onFlushed",value:function(e){return!0}},{key:"onLinesChanged",value:function(e){return!0}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return e.scrollTopChanged}},{key:"onZonesChanged",value:function(e){return!0}},{key:"_getLineRenderLineNumber",value:function(e){var t=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new he.L(e,1));if(1!==t.column)return"";var n=t.lineNumber;if(this._renderCustomLineNumbers)return this._renderCustomLineNumbers(n);if(2===this._renderLineNumbers){var i=Math.abs(this._lastCursorModelPosition.lineNumber-n);return 0===i?'<span class="relative-current-line-number">'+n+"</span>":String(i)}return 3===this._renderLineNumbers?this._lastCursorModelPosition.lineNumber===n||n%10===0?String(n):"":String(n)}},{key:"prepareRender",value:function(e){if(0!==this._renderLineNumbers){for(var t=D.IJ?this._lineHeight%2===0?" lh-even":" lh-odd":"",i=e.visibleRange.startLineNumber,r=e.visibleRange.endLineNumber,o='<div class="'+n.CLASS_NAME+t+'" style="left:'+this._lineNumbersLeft+"px;width:"+this._lineNumbersWidth+'px;">',a=this._context.model.getLineCount(),s=[],u=i;u<=r;u++){var l=u-i;if(this._renderFinalNewline||u!==a||0!==this._context.model.getLineLength(u)){var c=this._getLineRenderLineNumber(u);c?u===this._activeLineNumber?s[l]='<div class="active-line-number '+n.CLASS_NAME+t+'" style="left:'+this._lineNumbersLeft+"px;width:"+this._lineNumbersWidth+'px;">'+c+"</div>":s[l]=o+c+"</div>":s[l]=""}else s[l]=""}this._renderResult=s}else this._renderResult=null}},{key:"render",value:function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]}}]),n}(Ze);He.CLASS_NAME="line-numbers",(0,je.Ic)((function(e,t){var n=e.getColor(Fe.hw);n&&t.addRule(".monaco-editor .line-numbers { color: ".concat(n,"; }"));var i=e.getColor(Fe.DD);i&&t.addRule(".monaco-editor .line-numbers.active-line-number { color: ".concat(i,"; }"))}));var Be=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n);var r=(i=t.call(this,e))._context.configuration.options,o=r.get(127);return i._canUseLayerHinting=!r.get(26),i._contentLeft=o.contentLeft,i._glyphMarginLeft=o.glyphMarginLeft,i._glyphMarginWidth=o.glyphMarginWidth,i._domNode=(0,E.X)(document.createElement("div")),i._domNode.setClassName(n.OUTER_CLASS_NAME),i._domNode.setPosition("absolute"),i._domNode.setAttribute("role","presentation"),i._domNode.setAttribute("aria-hidden","true"),i._glyphMarginBackgroundDomNode=(0,E.X)(document.createElement("div")),i._glyphMarginBackgroundDomNode.setClassName(n.CLASS_NAME),i._domNode.appendChild(i._glyphMarginBackgroundDomNode),i}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"getDomNode",value:function(){return this._domNode}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options,n=t.get(127);return this._canUseLayerHinting=!t.get(26),this._contentLeft=n.contentLeft,this._glyphMarginLeft=n.glyphMarginLeft,this._glyphMarginWidth=n.glyphMarginWidth,!0}},{key:"onScrollChanged",value:function(e){return(0,a.Z)((0,s.Z)(n.prototype),"onScrollChanged",this).call(this,e)||e.scrollTopChanged}},{key:"prepareRender",value:function(e){}},{key:"render",value:function(e){this._domNode.setLayerHinting(this._canUseLayerHinting),this._domNode.setContain("strict");var t=e.scrollTop-e.bigNumbersDelta;this._domNode.setTop(-t);var n=Math.min(e.scrollHeight,1e6);this._domNode.setHeight(n),this._domNode.setWidth(this._contentLeft),this._glyphMarginBackgroundDomNode.setLeft(this._glyphMarginLeft),this._glyphMarginBackgroundDomNode.setWidth(this._glyphMarginWidth),this._glyphMarginBackgroundDomNode.setHeight(n)}}]),n}(z);Be.CLASS_NAME="glyph-margin",Be.OUTER_CLASS_NAME="margin";var ze=n(20937),We=n(79026),Ve=function(){function e(t,n,i){(0,c.Z)(this,e),this.top=t,this.left=n,this.width=i}return(0,d.Z)(e,[{key:"setWidth",value:function(t){return new e(this.top,this.left,t)}}]),e}(),Ye=x.vU,Ue=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,r,o){var a;(0,c.Z)(this,n),(a=t.call(this,e))._primaryCursorPosition=new he.L(1,1),a._primaryCursorVisibleRange=null,a._viewController=r,a._viewHelper=o,a._scrollLeft=0,a._scrollTop=0;var s=a._context.configuration.options,u=s.get(127);a._setAccessibilityOptions(s),a._contentLeft=u.contentLeft,a._contentWidth=u.contentWidth,a._contentHeight=u.height,a._fontInfo=s.get(40),a._lineHeight=s.get(55),a._emptySelectionClipboard=s.get(30),a._copyWithSyntaxHighlighting=s.get(19),a._visibleTextArea=null,a._selections=[new L.Y(1,1,1,1)],a._modelSelections=[new L.Y(1,1,1,1)],a._lastRenderPosition=null,a.textArea=(0,E.X)(document.createElement("textarea")),W.write(a.textArea,6),a.textArea.setClassName("inputarea ".concat(We.S)),a.textArea.setAttribute("wrap","off"),a.textArea.setAttribute("autocorrect","off"),a.textArea.setAttribute("autocapitalize","off"),a.textArea.setAttribute("autocomplete","off"),a.textArea.setAttribute("spellcheck","false"),a.textArea.setAttribute("aria-label",a._getAriaLabel(s)),a.textArea.setAttribute("tabindex",String(s.get(109))),a.textArea.setAttribute("role","textbox"),a.textArea.setAttribute("aria-roledescription",m.N("editor","editor")),a.textArea.setAttribute("aria-multiline","true"),a.textArea.setAttribute("aria-haspopup","false"),a.textArea.setAttribute("aria-autocomplete","both"),s.get(28)&&s.get(77)&&a.textArea.setAttribute("readonly","true"),a.textAreaCover=(0,E.X)(document.createElement("div")),a.textAreaCover.setPosition("absolute");var l={getLineCount:function(){return a._context.model.getLineCount()},getLineMaxColumn:function(e){return a._context.model.getLineMaxColumn(e)},getValueInRange:function(e,t){return a._context.model.getValueInRange(e,t)}},d={getDataToCopy:function(e){var t=a._context.model.getPlainTextToCopy(a._modelSelections,a._emptySelectionClipboard,D.ED),n=a._context.model.getEOL(),i=a._emptySelectionClipboard&&1===a._modelSelections.length&&a._modelSelections[0].isEmpty(),r=Array.isArray(t)?t:null,o=Array.isArray(t)?t.join(n):t,s=void 0,u=null;if(e&&(Te.RA.forceCopyWithSyntaxHighlighting||a._copyWithSyntaxHighlighting&&o.length<65536)){var l=a._context.model.getRichTextToCopy(a._modelSelections,a._emptySelectionClipboard);l&&(s=l.html,u=l.mode)}return{isFromEmptySelection:i,multicursorText:r,text:o,html:s,mode:u}},getScreenReaderContent:function(e){if(1===a._accessibilitySupport){if(D.dz){var t=a._selections[0];if(t.isEmpty()){var n=t.getStartPosition(),r=a._getWordBeforePosition(n);if(0===r.length&&(r=a._getCharacterBeforePosition(n)),r.length>0)return new Pe.un(r,r.length,r.length,n,n)}}return Pe.un.EMPTY}if(x.Dt){var o=a._selections[0];if(o.isEmpty()){var s=o.getStartPosition(),u=a._getAndroidWordAtPosition(s),c=(0,i.Z)(u,2),d=c[0],h=c[1];if(d.length>0)return new Pe.un(d,h,h,s,s)}return Pe.un.EMPTY}return Pe.ee.fromEditorSelection(e,l,a._selections[0],a._accessibilityPageSize,0===a._accessibilitySupport)},deduceModelPosition:function(e,t,n){return a._context.model.deduceModelPositionRelativeToViewPosition(e,t,n)}};return a._textAreaInput=a._register(new Te.Fz(d,a.textArea)),a._register(a._textAreaInput.onKeyDown((function(e){a._viewController.emitKeyDown(e)}))),a._register(a._textAreaInput.onKeyUp((function(e){a._viewController.emitKeyUp(e)}))),a._register(a._textAreaInput.onPaste((function(e){var t=!1,n=null,i=null;e.metadata&&(t=a._emptySelectionClipboard&&!!e.metadata.isFromEmptySelection,n="undefined"!==typeof e.metadata.multicursorText?e.metadata.multicursorText:null,i=e.metadata.mode),a._viewController.paste(e.text,t,n,i)}))),a._register(a._textAreaInput.onCut((function(){a._viewController.cut()}))),a._register(a._textAreaInput.onType((function(e){e.replacePrevCharCnt||e.replaceNextCharCnt||e.positionDelta?(Pe.al&&console.log(" => compositionType: <<".concat(e.text,">>, ").concat(e.replacePrevCharCnt,", ").concat(e.replaceNextCharCnt,", ").concat(e.positionDelta)),a._viewController.compositionType(e.text,e.replacePrevCharCnt,e.replaceNextCharCnt,e.positionDelta)):(Pe.al&&console.log(" => type: <<".concat(e.text,">>")),a._viewController.type(e.text))}))),a._register(a._textAreaInput.onSelectionChangeRequest((function(e){a._viewController.setSelection(e)}))),a._register(a._textAreaInput.onCompositionStart((function(e){var t=a._selections[0].startLineNumber,n=a._selections[0].startColumn+e.revealDeltaColumns;a._context.model.revealRange("keyboard",!0,new fe.e(t,n,t,n),0,1);var i=a._viewHelper.visibleRangeForPositionRelativeToEditor(t,n);i&&(a._visibleTextArea=new Ve(a._context.viewLayout.getVerticalOffsetForLineNumber(t),i.left,Ye?0:1),a._render()),a.textArea.setClassName("inputarea ".concat(We.S," ime-input")),a._viewController.compositionStart(),a._context.model.onCompositionStart()}))),a._register(a._textAreaInput.onCompositionUpdate((function(e){a._visibleTextArea&&(a._visibleTextArea=a._visibleTextArea.setWidth(function(e,t){var n=document.createElement("canvas").getContext("2d");n.font=function(e){return t="normal",n=e.fontWeight,i=e.fontSize,r=e.lineHeight,o=e.fontFamily,"".concat(t," normal ").concat(n," ").concat(i,"px / ").concat(r,"px ").concat(o);var t,n,i,r,o}(t);var i=n.measureText(e);return x.vU?i.width+2:i.width}(e.data,a._fontInfo)),a._render())}))),a._register(a._textAreaInput.onCompositionEnd((function(){a._visibleTextArea=null,a._render(),a.textArea.setClassName("inputarea ".concat(We.S)),a._viewController.compositionEnd(),a._context.model.onCompositionEnd()}))),a._register(a._textAreaInput.onFocus((function(){a._context.model.setHasFocus(!0)}))),a._register(a._textAreaInput.onBlur((function(){a._context.model.setHasFocus(!1)}))),a}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"_getAndroidWordAtPosition",value:function(e){for(var t=this._context.model.getLineContent(e.lineNumber),n=(0,ze.u)('`~!@#$%^&*()-=+[{]}\\|;:",.<>/?'),i=!0,r=e.column,o=!0,a=e.column,s=0;s<50&&(i||o);){if(i&&r<=1&&(i=!1),i){var u=t.charCodeAt(r-2);0!==n.get(u)?i=!1:r--}if(o&&a>t.length&&(o=!1),o){var l=t.charCodeAt(a-1);0!==n.get(l)?o=!1:a++}s++}return[t.substring(r-1,a-1),e.column-r]}},{key:"_getWordBeforePosition",value:function(e){for(var t=this._context.model.getLineContent(e.lineNumber),n=(0,ze.u)(this._context.configuration.options.get(113)),i=e.column,r=0;i>1;){var o=t.charCodeAt(i-2);if(0!==n.get(o)||r>50)return t.substring(i-1,e.column-1);r++,i--}return t.substring(0,e.column-1)}},{key:"_getCharacterBeforePosition",value:function(e){if(e.column>1){var t=this._context.model.getLineContent(e.lineNumber).charAt(e.column-2);if(!Re.ZG(t.charCodeAt(0)))return t}return""}},{key:"_getAriaLabel",value:function(e){return 1===e.get(2)?m.N("accessibilityOffAriaLabel","The editor is not accessible at this time. Press {0} for options.",D.IJ?"Shift+Alt+F1":"Alt+F1"):e.get(4)}},{key:"_setAccessibilityOptions",value:function(e){this._accessibilitySupport=e.get(2);var t=e.get(3);2===this._accessibilitySupport&&t===ee.BH.accessibilityPageSize.defaultValue?this._accessibilityPageSize=500:this._accessibilityPageSize=t}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options,n=t.get(127);return this._setAccessibilityOptions(t),this._contentLeft=n.contentLeft,this._contentWidth=n.contentWidth,this._contentHeight=n.height,this._fontInfo=t.get(40),this._lineHeight=t.get(55),this._emptySelectionClipboard=t.get(30),this._copyWithSyntaxHighlighting=t.get(19),this.textArea.setAttribute("aria-label",this._getAriaLabel(t)),this.textArea.setAttribute("tabindex",String(t.get(109))),(e.hasChanged(28)||e.hasChanged(77))&&(t.get(28)&&t.get(77)?this.textArea.setAttribute("readonly","true"):this.textArea.removeAttribute("readonly")),e.hasChanged(2)&&this._textAreaInput.writeScreenReaderContent("strategy changed"),!0}},{key:"onCursorStateChanged",value:function(e){return this._selections=e.selections.slice(0),this._modelSelections=e.modelSelections.slice(0),this._textAreaInput.writeScreenReaderContent("selection changed"),!0}},{key:"onDecorationsChanged",value:function(e){return!0}},{key:"onFlushed",value:function(e){return!0}},{key:"onLinesChanged",value:function(e){return!0}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return this._scrollLeft=e.scrollLeft,this._scrollTop=e.scrollTop,!0}},{key:"onZonesChanged",value:function(e){return!0}},{key:"isFocused",value:function(){return this._textAreaInput.isFocused()}},{key:"focusTextArea",value:function(){this._textAreaInput.focusTextArea()}},{key:"getLastRenderData",value:function(){return this._lastRenderPosition}},{key:"setAriaOptions",value:function(e){e.activeDescendant?(this.textArea.setAttribute("aria-haspopup","true"),this.textArea.setAttribute("aria-autocomplete","list"),this.textArea.setAttribute("aria-activedescendant",e.activeDescendant)):(this.textArea.setAttribute("aria-haspopup","false"),this.textArea.setAttribute("aria-autocomplete","both"),this.textArea.removeAttribute("aria-activedescendant")),e.role&&this.textArea.setAttribute("role",e.role)}},{key:"prepareRender",value:function(e){this._primaryCursorPosition=new he.L(this._selections[0].positionLineNumber,this._selections[0].positionColumn),this._primaryCursorVisibleRange=e.visibleRangeForPosition(this._primaryCursorPosition)}},{key:"render",value:function(e){this._textAreaInput.writeScreenReaderContent("render"),this._render()}},{key:"_render",value:function(){if(this._visibleTextArea)this._renderInsideEditor(null,this._visibleTextArea.top-this._scrollTop,this._contentLeft+this._visibleTextArea.left-this._scrollLeft,this._visibleTextArea.width,this._lineHeight);else if(this._primaryCursorVisibleRange){var e=this._contentLeft+this._primaryCursorVisibleRange.left-this._scrollLeft;if(e<this._contentLeft||e>this._contentLeft+this._contentWidth)this._renderAtTopLeft();else{var t=this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber)-this._scrollTop;t<0||t>this._contentHeight?this._renderAtTopLeft():D.dz?this._renderInsideEditor(this._primaryCursorPosition,t,e,Ye?0:1,this._lineHeight):this._renderInsideEditor(this._primaryCursorPosition,t,e,Ye?0:1,Ye?0:1)}}else this._renderAtTopLeft()}},{key:"_renderInsideEditor",value:function(e,t,n,i,r){this._lastRenderPosition=e;var o=this.textArea,a=this.textAreaCover;k.V.applyFontInfo(o,this._fontInfo),o.setTop(t),o.setLeft(n),o.setWidth(i),o.setHeight(r),a.setTop(0),a.setLeft(0),a.setWidth(0),a.setHeight(0)}},{key:"_renderAtTopLeft",value:function(){this._lastRenderPosition=null;var e=this.textArea,t=this.textAreaCover;if(k.V.applyFontInfo(e,this._fontInfo),e.setTop(0),e.setLeft(0),t.setTop(0),t.setLeft(0),Ye)return e.setWidth(0),e.setHeight(0),t.setWidth(0),void t.setHeight(0);e.setWidth(1),e.setHeight(1),t.setWidth(1),t.setHeight(1);var n=this._context.configuration.options;n.get(46)?t.setClassName("monaco-editor-background textAreaCover "+Be.OUTER_CLASS_NAME):0!==n.get(56).renderType?t.setClassName("monaco-editor-background textAreaCover "+He.CLASS_NAME):t.setClassName("monaco-editor-background textAreaCover")}}]),n}(z);var Ke,qe=n(8518),Ge=function(){function e(t,n,i,r){(0,c.Z)(this,e),this.configuration=t,this.viewModel=n,this.userInputEvents=i,this.commandDelegate=r}return(0,d.Z)(e,[{key:"paste",value:function(e,t,n,i){this.commandDelegate.paste(e,t,n,i)}},{key:"type",value:function(e){this.commandDelegate.type(e)}},{key:"compositionType",value:function(e,t,n,i){this.commandDelegate.compositionType(e,t,n,i)}},{key:"compositionStart",value:function(){this.commandDelegate.startComposition()}},{key:"compositionEnd",value:function(){this.commandDelegate.endComposition()}},{key:"cut",value:function(){this.commandDelegate.cut()}},{key:"setSelection",value:function(e){qe.Ox.SetSelection.runCoreEditorCommand(this.viewModel,{source:"keyboard",selection:e})}},{key:"_validateViewColumn",value:function(e){var t=this.viewModel.getLineMinColumn(e.lineNumber);return e.column<t?new he.L(e.lineNumber,t):e}},{key:"_hasMulticursorModifier",value:function(e){switch(this.configuration.options.get(66)){case"altKey":return e.altKey;case"ctrlKey":return e.ctrlKey;case"metaKey":return e.metaKey;default:return!1}}},{key:"_hasNonMulticursorModifier",value:function(e){switch(this.configuration.options.get(66)){case"altKey":return e.ctrlKey||e.metaKey;case"ctrlKey":return e.altKey||e.metaKey;case"metaKey":return e.ctrlKey||e.altKey;default:return!1}}},{key:"dispatchMouse",value:function(e){var t=this.configuration.options,n=D.IJ&&t.get(93),i=t.get(16);e.middleButton&&!n?this._columnSelect(e.position,e.mouseColumn,e.inSelectionMode):e.startedOnLineNumbers?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelect(e.position):this._createCursor(e.position,!0):e.inSelectionMode?this._lineSelectDrag(e.position):this._lineSelect(e.position):e.mouseDownCount>=4?this._selectAll():3===e.mouseDownCount?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelectDrag(e.position):this._lastCursorLineSelect(e.position):e.inSelectionMode?this._lineSelectDrag(e.position):this._lineSelect(e.position):2===e.mouseDownCount?this._hasMulticursorModifier(e)?this._lastCursorWordSelect(e.position):e.inSelectionMode?this._wordSelectDrag(e.position):this._wordSelect(e.position):this._hasMulticursorModifier(e)?this._hasNonMulticursorModifier(e)||(e.shiftKey?this._columnSelect(e.position,e.mouseColumn,!0):e.inSelectionMode?this._lastCursorMoveToSelect(e.position):this._createCursor(e.position,!1)):e.inSelectionMode?e.altKey||i?this._columnSelect(e.position,e.mouseColumn,!0):this._moveToSelect(e.position):this.moveTo(e.position)}},{key:"_usualArgs",value:function(e){return e=this._validateViewColumn(e),{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e}}},{key:"moveTo",value:function(e){qe.Ox.MoveTo.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}},{key:"_moveToSelect",value:function(e){qe.Ox.MoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}},{key:"_columnSelect",value:function(e,t,n){e=this._validateViewColumn(e),qe.Ox.ColumnSelect.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,mouseColumn:t,doColumnSelect:n})}},{key:"_createCursor",value:function(e,t){e=this._validateViewColumn(e),qe.Ox.CreateCursor.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,wholeLine:t})}},{key:"_lastCursorMoveToSelect",value:function(e){qe.Ox.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}},{key:"_wordSelect",value:function(e){qe.Ox.WordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}},{key:"_wordSelectDrag",value:function(e){qe.Ox.WordSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}},{key:"_lastCursorWordSelect",value:function(e){qe.Ox.LastCursorWordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}},{key:"_lineSelect",value:function(e){qe.Ox.LineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}},{key:"_lineSelectDrag",value:function(e){qe.Ox.LineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}},{key:"_lastCursorLineSelect",value:function(e){qe.Ox.LastCursorLineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}},{key:"_lastCursorLineSelectDrag",value:function(e){qe.Ox.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}},{key:"_selectAll",value:function(){qe.Ox.SelectAll.runCoreEditorCommand(this.viewModel,{source:"mouse"})}},{key:"_convertViewToModelPosition",value:function(e){return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(e)}},{key:"emitKeyDown",value:function(e){this.userInputEvents.emitKeyDown(e)}},{key:"emitKeyUp",value:function(e){this.userInputEvents.emitKeyUp(e)}},{key:"emitContextMenu",value:function(e){this.userInputEvents.emitContextMenu(e)}},{key:"emitMouseMove",value:function(e){this.userInputEvents.emitMouseMove(e)}},{key:"emitMouseLeave",value:function(e){this.userInputEvents.emitMouseLeave(e)}},{key:"emitMouseUp",value:function(e){this.userInputEvents.emitMouseUp(e)}},{key:"emitMouseDown",value:function(e){this.userInputEvents.emitMouseDown(e)}},{key:"emitMouseDrag",value:function(e){this.userInputEvents.emitMouseDrag(e)}},{key:"emitMouseDrop",value:function(e){this.userInputEvents.emitMouseDrop(e)}},{key:"emitMouseDropCanceled",value:function(){this.userInputEvents.emitMouseDropCanceled()}},{key:"emitMouseWheel",value:function(e){this.userInputEvents.emitMouseWheel(e)}}]),e}(),$e=function(){function e(t){(0,c.Z)(this,e),this.onKeyDown=null,this.onKeyUp=null,this.onContextMenu=null,this.onMouseMove=null,this.onMouseLeave=null,this.onMouseDown=null,this.onMouseUp=null,this.onMouseDrag=null,this.onMouseDrop=null,this.onMouseDropCanceled=null,this.onMouseWheel=null,this._coordinatesConverter=t}return(0,d.Z)(e,[{key:"emitKeyDown",value:function(e){this.onKeyDown&&this.onKeyDown(e)}},{key:"emitKeyUp",value:function(e){this.onKeyUp&&this.onKeyUp(e)}},{key:"emitContextMenu",value:function(e){this.onContextMenu&&this.onContextMenu(this._convertViewToModelMouseEvent(e))}},{key:"emitMouseMove",value:function(e){this.onMouseMove&&this.onMouseMove(this._convertViewToModelMouseEvent(e))}},{key:"emitMouseLeave",value:function(e){this.onMouseLeave&&this.onMouseLeave(this._convertViewToModelMouseEvent(e))}},{key:"emitMouseDown",value:function(e){this.onMouseDown&&this.onMouseDown(this._convertViewToModelMouseEvent(e))}},{key:"emitMouseUp",value:function(e){this.onMouseUp&&this.onMouseUp(this._convertViewToModelMouseEvent(e))}},{key:"emitMouseDrag",value:function(e){this.onMouseDrag&&this.onMouseDrag(this._convertViewToModelMouseEvent(e))}},{key:"emitMouseDrop",value:function(e){this.onMouseDrop&&this.onMouseDrop(this._convertViewToModelMouseEvent(e))}},{key:"emitMouseDropCanceled",value:function(){this.onMouseDropCanceled&&this.onMouseDropCanceled()}},{key:"emitMouseWheel",value:function(e){this.onMouseWheel&&this.onMouseWheel(e)}},{key:"_convertViewToModelMouseEvent",value:function(e){return e.target?{event:e.event,target:this._convertViewToModelMouseTarget(e.target)}:e}},{key:"_convertViewToModelMouseTarget",value:function(t){return e.convertViewToModelMouseTarget(t,this._coordinatesConverter)}}],[{key:"convertViewToModelMouseTarget",value:function(e,t){return new Qe(e.element,e.type,e.mouseColumn,e.position?t.convertViewPositionToModelPosition(e.position):null,e.range?t.convertViewRangeToModelRange(e.range):null,e.detail)}}]),e}(),Qe=function(){function e(t,n,i,r,o,a){(0,c.Z)(this,e),this.element=t,this.type=n,this.mouseColumn=i,this.position=r,this.range=o,this.detail=a}return(0,d.Z)(e,[{key:"toString",value:function(){return me.toString(this)}}]),e}(),Xe=n(85500),Je=function(){function e(t){(0,c.Z)(this,e),this._createLine=t,this._set(1,[])}return(0,d.Z)(e,[{key:"flush",value:function(){this._set(1,[])}},{key:"_set",value:function(e,t){this._lines=t,this._rendLineNumberStart=e}},{key:"_get",value:function(){return{rendLineNumberStart:this._rendLineNumberStart,lines:this._lines}}},{key:"getStartLineNumber",value:function(){return this._rendLineNumberStart}},{key:"getEndLineNumber",value:function(){return this._rendLineNumberStart+this._lines.length-1}},{key:"getCount",value:function(){return this._lines.length}},{key:"getLine",value:function(e){var t=e-this._rendLineNumberStart;if(t<0||t>=this._lines.length)throw new Error("Illegal value for lineNumber");return this._lines[t]}},{key:"onLinesDeleted",value:function(e,t){if(0===this.getCount())return null;var n=this.getStartLineNumber(),i=this.getEndLineNumber();if(t<n){var r=t-e+1;return this._rendLineNumberStart-=r,null}if(e>i)return null;for(var o=0,a=0,s=n;s<=i;s++){var u=s-this._rendLineNumberStart;e<=s&&s<=t&&(0===a?(o=u,a=1):a++)}if(e<n){var l=0;l=t<n?t-e+1:n-e,this._rendLineNumberStart-=l}return this._lines.splice(o,a)}},{key:"onLinesChanged",value:function(e,t){if(0===this.getCount())return!1;for(var n=this.getStartLineNumber(),i=this.getEndLineNumber(),r=!1,o=e;o<=t;o++)o>=n&&o<=i&&(this._lines[o-this._rendLineNumberStart].onContentChanged(),r=!0);return r}},{key:"onLinesInserted",value:function(e,t){if(0===this.getCount())return null;var n=t-e+1,i=this.getStartLineNumber(),r=this.getEndLineNumber();if(e<=i)return this._rendLineNumberStart+=n,null;if(e>r)return null;if(n+e>r)return this._lines.splice(e-this._rendLineNumberStart,r-e+1);for(var o=[],a=0;a<n;a++)o[a]=this._createLine();var s=e-this._rendLineNumberStart,u=this._lines.slice(0,s),l=this._lines.slice(s,this._lines.length-n),c=this._lines.slice(this._lines.length-n,this._lines.length);return this._lines=u.concat(o).concat(l),c}},{key:"onTokensChanged",value:function(e){if(0===this.getCount())return!1;for(var t=this.getStartLineNumber(),n=this.getEndLineNumber(),i=!1,r=0,o=e.length;r<o;r++){var a=e[r];if(!(a.toLineNumber<t||a.fromLineNumber>n))for(var s=Math.max(t,a.fromLineNumber),u=Math.min(n,a.toLineNumber),l=s;l<=u;l++){var c=l-this._rendLineNumberStart;this._lines[c].onTokensChanged(),i=!0}}return i}}]),e}(),et=function(){function e(t){var n=this;(0,c.Z)(this,e),this._host=t,this.domNode=this._createDomNode(),this._linesCollection=new Je((function(){return n._host.createVisibleLine()}))}return(0,d.Z)(e,[{key:"_createDomNode",value:function(){var e=(0,E.X)(document.createElement("div"));return e.setClassName("view-layer"),e.setPosition("absolute"),e.domNode.setAttribute("role","presentation"),e.domNode.setAttribute("aria-hidden","true"),e}},{key:"onConfigurationChanged",value:function(e){return!!e.hasChanged(127)}},{key:"onFlushed",value:function(e){return this._linesCollection.flush(),!0}},{key:"onLinesChanged",value:function(e){return this._linesCollection.onLinesChanged(e.fromLineNumber,e.toLineNumber)}},{key:"onLinesDeleted",value:function(e){var t=this._linesCollection.onLinesDeleted(e.fromLineNumber,e.toLineNumber);if(t)for(var n=0,i=t.length;n<i;n++){var r=t[n].getDomNode();r&&this.domNode.domNode.removeChild(r)}return!0}},{key:"onLinesInserted",value:function(e){var t=this._linesCollection.onLinesInserted(e.fromLineNumber,e.toLineNumber);if(t)for(var n=0,i=t.length;n<i;n++){var r=t[n].getDomNode();r&&this.domNode.domNode.removeChild(r)}return!0}},{key:"onScrollChanged",value:function(e){return e.scrollTopChanged}},{key:"onTokensChanged",value:function(e){return this._linesCollection.onTokensChanged(e.ranges)}},{key:"onZonesChanged",value:function(e){return!0}},{key:"getStartLineNumber",value:function(){return this._linesCollection.getStartLineNumber()}},{key:"getEndLineNumber",value:function(){return this._linesCollection.getEndLineNumber()}},{key:"getVisibleLine",value:function(e){return this._linesCollection.getLine(e)}},{key:"renderLines",value:function(e){var t=this._linesCollection._get(),n=new tt(this.domNode.domNode,this._host,e),i={rendLineNumberStart:t.rendLineNumberStart,lines:t.lines,linesLength:t.lines.length},r=n.render(i,e.startLineNumber,e.endLineNumber,e.relativeVerticalOffset);this._linesCollection._set(r.rendLineNumberStart,r.lines)}}]),e}(),tt=function(){function e(t,n,i){(0,c.Z)(this,e),this.domNode=t,this.host=n,this.viewportData=i}return(0,d.Z)(e,[{key:"render",value:function(e,t,n,i){var r={rendLineNumberStart:e.rendLineNumberStart,lines:e.lines.slice(0),linesLength:e.linesLength};if(r.rendLineNumberStart+r.linesLength-1<t||n<r.rendLineNumberStart){r.rendLineNumberStart=t,r.linesLength=n-t+1,r.lines=[];for(var o=t;o<=n;o++)r.lines[o-t]=this.host.createVisibleLine();return this._finishRendering(r,!0,i),r}if(this._renderUntouchedLines(r,Math.max(t-r.rendLineNumberStart,0),Math.min(n-r.rendLineNumberStart,r.linesLength-1),i,t),r.rendLineNumberStart>t){var a=t,s=Math.min(n,r.rendLineNumberStart-1);a<=s&&(this._insertLinesBefore(r,a,s,i,t),r.linesLength+=s-a+1)}else if(r.rendLineNumberStart<t){var u=Math.min(r.linesLength,t-r.rendLineNumberStart);u>0&&(this._removeLinesBefore(r,u),r.linesLength-=u)}if(r.rendLineNumberStart=t,r.rendLineNumberStart+r.linesLength-1<n){var l=r.rendLineNumberStart+r.linesLength,c=n;l<=c&&(this._insertLinesAfter(r,l,c,i,t),r.linesLength+=c-l+1)}else if(r.rendLineNumberStart+r.linesLength-1>n){var d=Math.max(0,n-r.rendLineNumberStart+1),h=r.linesLength-1-d+1;h>0&&(this._removeLinesAfter(r,h),r.linesLength-=h)}return this._finishRendering(r,!1,i),r}},{key:"_renderUntouchedLines",value:function(e,t,n,i,r){for(var o=e.rendLineNumberStart,a=e.lines,s=t;s<=n;s++){var u=o+s;a[s].layoutLine(u,i[u-r])}}},{key:"_insertLinesBefore",value:function(e,t,n,i,r){for(var o=[],a=0,s=t;s<=n;s++)o[a++]=this.host.createVisibleLine();e.lines=o.concat(e.lines)}},{key:"_removeLinesBefore",value:function(e,t){for(var n=0;n<t;n++){var i=e.lines[n].getDomNode();i&&this.domNode.removeChild(i)}e.lines.splice(0,t)}},{key:"_insertLinesAfter",value:function(e,t,n,i,r){for(var o=[],a=0,s=t;s<=n;s++)o[a++]=this.host.createVisibleLine();e.lines=e.lines.concat(o)}},{key:"_removeLinesAfter",value:function(e,t){for(var n=e.linesLength-t,i=0;i<t;i++){var r=e.lines[n+i].getDomNode();r&&this.domNode.removeChild(r)}e.lines.splice(n,t)}},{key:"_finishRenderingNewLines",value:function(t,n,i,r){e._ttPolicy&&(i=e._ttPolicy.createHTML(i));var o=this.domNode.lastChild;n||!o?this.domNode.innerHTML=i:o.insertAdjacentHTML("afterend",i);for(var a=this.domNode.lastChild,s=t.linesLength-1;s>=0;s--){var u=t.lines[s];r[s]&&(u.setDomNode(a),a=a.previousSibling)}}},{key:"_finishRenderingInvalidLines",value:function(t,n,i){var r=document.createElement("div");e._ttPolicy&&(n=e._ttPolicy.createHTML(n)),r.innerHTML=n;for(var o=0;o<t.linesLength;o++){var a=t.lines[o];if(i[o]){var s=r.firstChild,u=a.getDomNode();u.parentNode.replaceChild(s,u),a.setDomNode(s)}}}},{key:"_finishRendering",value:function(t,n,i){var r=e._sb,o=t.linesLength,a=t.lines,s=t.rendLineNumberStart,u=[];r.reset();for(var l=!1,c=0;c<o;c++){var d=a[c];if(u[c]=!1,!d.getDomNode())d.renderLine(c+s,i[c],this.viewportData,r)&&(u[c]=!0,l=!0)}l&&this._finishRenderingNewLines(t,n,r.build(),u),r.reset();for(var h=!1,f=[],p=0;p<o;p++){var g=a[p];if(f[p]=!1,!u[p])g.renderLine(p+s,i[p],this.viewportData,r)&&(f[p]=!0,h=!0)}h&&this._finishRenderingInvalidLines(t,r.build(),f)}}]),e}();tt._ttPolicy=null===(Ke=window.trustedTypes)||void 0===Ke?void 0:Ke.createPolicy("editorViewLayer",{createHTML:function(e){return e}}),tt._sb=(0,Xe.l$)(1e5);var nt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this,e))._visibleLines=new et((0,o.Z)(i)),i.domNode=i._visibleLines.domNode,i._dynamicOverlays=[],i._isFocused=!1,i.domNode.setClassName("view-overlays"),i}return(0,d.Z)(n,[{key:"shouldRender",value:function(){if((0,a.Z)((0,s.Z)(n.prototype),"shouldRender",this).call(this))return!0;for(var e=0,t=this._dynamicOverlays.length;e<t;e++){if(this._dynamicOverlays[e].shouldRender())return!0}return!1}},{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this);for(var e=0,t=this._dynamicOverlays.length;e<t;e++){this._dynamicOverlays[e].dispose()}this._dynamicOverlays=[]}},{key:"getDomNode",value:function(){return this.domNode}},{key:"createVisibleLine",value:function(){return new it(this._context.configuration,this._dynamicOverlays)}},{key:"addDynamicOverlay",value:function(e){this._dynamicOverlays.push(e)}},{key:"onConfigurationChanged",value:function(e){this._visibleLines.onConfigurationChanged(e);for(var t=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber(),i=t;i<=n;i++){this._visibleLines.getVisibleLine(i).onConfigurationChanged(e)}return!0}},{key:"onFlushed",value:function(e){return this._visibleLines.onFlushed(e)}},{key:"onFocusChanged",value:function(e){return this._isFocused=e.isFocused,!0}},{key:"onLinesChanged",value:function(e){return this._visibleLines.onLinesChanged(e)}},{key:"onLinesDeleted",value:function(e){return this._visibleLines.onLinesDeleted(e)}},{key:"onLinesInserted",value:function(e){return this._visibleLines.onLinesInserted(e)}},{key:"onScrollChanged",value:function(e){return this._visibleLines.onScrollChanged(e)||!0}},{key:"onTokensChanged",value:function(e){return this._visibleLines.onTokensChanged(e)}},{key:"onZonesChanged",value:function(e){return this._visibleLines.onZonesChanged(e)}},{key:"prepareRender",value:function(e){for(var t=this._dynamicOverlays.filter((function(e){return e.shouldRender()})),n=0,i=t.length;n<i;n++){var r=t[n];r.prepareRender(e),r.onDidRender()}}},{key:"render",value:function(e){this._viewOverlaysRender(e),this.domNode.toggleClassName("focused",this._isFocused)}},{key:"_viewOverlaysRender",value:function(e){this._visibleLines.renderLines(e.viewportData)}}]),n}(z),it=function(){function e(t,n){(0,c.Z)(this,e),this._configuration=t,this._lineHeight=this._configuration.options.get(55),this._dynamicOverlays=n,this._domNode=null,this._renderedContent=null}return(0,d.Z)(e,[{key:"getDomNode",value:function(){return this._domNode?this._domNode.domNode:null}},{key:"setDomNode",value:function(e){this._domNode=(0,E.X)(e)}},{key:"onContentChanged",value:function(){}},{key:"onTokensChanged",value:function(){}},{key:"onConfigurationChanged",value:function(e){this._lineHeight=this._configuration.options.get(55)}},{key:"renderLine",value:function(e,t,n,i){for(var r="",o=0,a=this._dynamicOverlays.length;o<a;o++){r+=this._dynamicOverlays[o].render(n.startLineNumber,e)}return this._renderedContent!==r&&(this._renderedContent=r,i.appendASCIIString('<div style="position:absolute;top:'),i.appendASCIIString(String(t)),i.appendASCIIString("px;width:100%;height:"),i.appendASCIIString(String(this._lineHeight)),i.appendASCIIString('px;">'),i.appendASCIIString(r),i.appendASCIIString("</div>"),!0)}},{key:"layoutLine",value:function(e,t){this._domNode&&(this._domNode.setTop(t),this._domNode.setHeight(this._lineHeight))}}]),e}(),rt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n);var r=(i=t.call(this,e))._context.configuration.options.get(127);return i._contentWidth=r.contentWidth,i.domNode.setHeight(0),i}return(0,d.Z)(n,[{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options.get(127);return this._contentWidth=t.contentWidth,(0,a.Z)((0,s.Z)(n.prototype),"onConfigurationChanged",this).call(this,e)||!0}},{key:"onScrollChanged",value:function(e){return(0,a.Z)((0,s.Z)(n.prototype),"onScrollChanged",this).call(this,e)||e.scrollWidthChanged}},{key:"_viewOverlaysRender",value:function(e){(0,a.Z)((0,s.Z)(n.prototype),"_viewOverlaysRender",this).call(this,e),this.domNode.setWidth(Math.max(e.scrollWidth,this._contentWidth))}}]),n}(nt),ot=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n);var r=(i=t.call(this,e))._context.configuration.options,o=r.get(127);return i._contentLeft=o.contentLeft,i.domNode.setClassName("margin-view-overlays"),i.domNode.setWidth(1),k.V.applyFontInfo(i.domNode,r.get(40)),i}return(0,d.Z)(n,[{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options;k.V.applyFontInfo(this.domNode,t.get(40));var i=t.get(127);return this._contentLeft=i.contentLeft,(0,a.Z)((0,s.Z)(n.prototype),"onConfigurationChanged",this).call(this,e)||!0}},{key:"onScrollChanged",value:function(e){return(0,a.Z)((0,s.Z)(n.prototype),"onScrollChanged",this).call(this,e)||e.scrollHeightChanged}},{key:"_viewOverlaysRender",value:function(e){(0,a.Z)((0,s.Z)(n.prototype),"_viewOverlaysRender",this).call(this,e);var t=Math.min(e.scrollHeight,1e6);this.domNode.setHeight(t),this.domNode.setWidth(this._contentLeft)}}]),n}(nt),at=(0,d.Z)((function e(t,n){(0,c.Z)(this,e),this.top=t,this.left=n})),st=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r;return(0,c.Z)(this,n),(r=t.call(this,e))._viewDomNode=i,r._widgets={},r.domNode=(0,E.X)(document.createElement("div")),W.write(r.domNode,1),r.domNode.setClassName("contentWidgets"),r.domNode.setPosition("absolute"),r.domNode.setTop(0),r.overflowingContentWidgetsDomNode=(0,E.X)(document.createElement("div")),W.write(r.overflowingContentWidgetsDomNode,2),r.overflowingContentWidgetsDomNode.setClassName("overflowingContentWidgets"),r}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this),this._widgets={}}},{key:"onConfigurationChanged",value:function(e){for(var t=0,n=Object.keys(this._widgets);t<n.length;t++){var i=n[t];this._widgets[i].onConfigurationChanged(e)}return!0}},{key:"onDecorationsChanged",value:function(e){return!0}},{key:"onFlushed",value:function(e){return!0}},{key:"onLineMappingChanged",value:function(e){for(var t=0,n=Object.keys(this._widgets);t<n.length;t++){var i=n[t];this._widgets[i].onLineMappingChanged(e)}return!0}},{key:"onLinesChanged",value:function(e){return!0}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return!0}},{key:"onZonesChanged",value:function(e){return!0}},{key:"addWidget",value:function(e){var t=new ut(this._context,this._viewDomNode,e);this._widgets[t.id]=t,t.allowEditorOverflow?this.overflowingContentWidgetsDomNode.appendChild(t.domNode):this.domNode.appendChild(t.domNode),this.setShouldRender()}},{key:"setWidgetPosition",value:function(e,t,n){this._widgets[e.getId()].setPosition(t,n),this.setShouldRender()}},{key:"removeWidget",value:function(e){var t=e.getId();if(this._widgets.hasOwnProperty(t)){var n=this._widgets[t];delete this._widgets[t];var i=n.domNode.domNode;i.parentNode.removeChild(i),i.removeAttribute("monaco-visible-content-widget"),this.setShouldRender()}}},{key:"shouldSuppressMouseDownOnWidget",value:function(e){return!!this._widgets.hasOwnProperty(e)&&this._widgets[e].suppressMouseDown}},{key:"onBeforeRender",value:function(e){for(var t=0,n=Object.keys(this._widgets);t<n.length;t++){var i=n[t];this._widgets[i].onBeforeRender(e)}}},{key:"prepareRender",value:function(e){for(var t=0,n=Object.keys(this._widgets);t<n.length;t++){var i=n[t];this._widgets[i].prepareRender(e)}}},{key:"render",value:function(e){for(var t=0,n=Object.keys(this._widgets);t<n.length;t++){var i=n[t];this._widgets[i].render(e)}}}]),n}(z),ut=function(){function e(t,n,i){(0,c.Z)(this,e),this._context=t,this._viewDomNode=n,this._actual=i,this.domNode=(0,E.X)(this._actual.getDomNode()),this.id=this._actual.getId(),this.allowEditorOverflow=this._actual.allowEditorOverflow||!1,this.suppressMouseDown=this._actual.suppressMouseDown||!1;var r=this._context.configuration.options,o=r.get(127);this._fixedOverflowWidgets=r.get(34),this._contentWidth=o.contentWidth,this._contentLeft=o.contentLeft,this._lineHeight=r.get(55),this._range=null,this._viewRange=null,this._preference=[],this._cachedDomNodeClientWidth=-1,this._cachedDomNodeClientHeight=-1,this._maxWidth=this._getMaxWidth(),this._isVisible=!1,this._renderData=null,this.domNode.setPosition(this._fixedOverflowWidgets&&this.allowEditorOverflow?"fixed":"absolute"),this.domNode.setVisibility("hidden"),this.domNode.setAttribute("widgetId",this.id),this.domNode.setMaxWidth(this._maxWidth)}return(0,d.Z)(e,[{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options;if(this._lineHeight=t.get(55),e.hasChanged(127)){var n=t.get(127);this._contentLeft=n.contentLeft,this._contentWidth=n.contentWidth,this._maxWidth=this._getMaxWidth()}}},{key:"onLineMappingChanged",value:function(e){this._setPosition(this._range)}},{key:"_setPosition",value:function(e){if(this._range=e,this._viewRange=null,this._range){var t=this._context.model.validateModelRange(this._range);(this._context.model.coordinatesConverter.modelPositionIsVisible(t.getStartPosition())||this._context.model.coordinatesConverter.modelPositionIsVisible(t.getEndPosition()))&&(this._viewRange=this._context.model.coordinatesConverter.convertModelRangeToViewRange(t))}}},{key:"_getMaxWidth",value:function(){return this.allowEditorOverflow?window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth:this._contentWidth}},{key:"setPosition",value:function(e,t){this._setPosition(e),this._preference=t,this._cachedDomNodeClientWidth=-1,this._cachedDomNodeClientHeight=-1}},{key:"_layoutBoxInViewport",value:function(e,t,n,i,r){var o=e.top,a=o,s=t.top+this._lineHeight,u=o-i,l=a>=i,c=s,d=r.viewportHeight-s>=i,h=e.left,f=t.left;return h+n>r.scrollLeft+r.viewportWidth&&(h=r.scrollLeft+r.viewportWidth-n),f+n>r.scrollLeft+r.viewportWidth&&(f=r.scrollLeft+r.viewportWidth-n),h<r.scrollLeft&&(h=r.scrollLeft),f<r.scrollLeft&&(f=r.scrollLeft),{fitsAbove:l,aboveTop:u,aboveLeft:h,fitsBelow:d,belowTop:c,belowLeft:f}}},{key:"_layoutHorizontalSegmentInPage",value:function(e,t,n,i){var r=Math.max(0,t.left-i),o=Math.min(t.left+t.width+i,e.width),a=t.left+n-_.StandardWindow.scrollX;if(a+i>o){var s=a-(o-i);a-=s,n-=s}if(a<r){var u=a-r;a-=u,n-=u}return[n,a]}},{key:"_layoutBoxInPage",value:function(e,t,n,r,o){var a=e.top-r,s=t.top+this._lineHeight,u=_.getDomNodePagePosition(this._viewDomNode.domNode),l=u.top+a-_.StandardWindow.scrollY,c=u.top+s-_.StandardWindow.scrollY,d=_.getClientArea(document.body),h=this._layoutHorizontalSegmentInPage(d,u,e.left-o.scrollLeft+this._contentLeft,n),f=(0,i.Z)(h,2),p=f[0],g=f[1],v=this._layoutHorizontalSegmentInPage(d,u,t.left-o.scrollLeft+this._contentLeft,n),m=(0,i.Z)(v,2),y=m[0],b=m[1],w=l>=22,C=c+r<=d.height-22;return this._fixedOverflowWidgets?{fitsAbove:w,aboveTop:Math.max(l,22),aboveLeft:g,fitsBelow:C,belowTop:c,belowLeft:b}:{fitsAbove:w,aboveTop:a,aboveLeft:p,fitsBelow:C,belowTop:s,belowLeft:y}}},{key:"_prepareRenderWidgetAtExactPositionOverflowing",value:function(e){return new at(e.top,e.left+this._contentLeft)}},{key:"_getTopAndBottomLeft",value:function(e){if(!this._viewRange)return[null,null];var t=e.linesVisibleRangesForRange(this._viewRange,!1);if(!t||0===t.length)return[null,null];var n,i=t[0],o=t[0],a=(0,r.Z)(t);try{for(a.s();!(n=a.n()).done;){var s=n.value;s.lineNumber<i.lineNumber&&(i=s),s.lineNumber>o.lineNumber&&(o=s)}}catch(y){a.e(y)}finally{a.f()}var u,l=1073741824,c=(0,r.Z)(i.ranges);try{for(c.s();!(u=c.n()).done;){var d=u.value;d.left<l&&(l=d.left)}}catch(y){c.e(y)}finally{c.f()}var h,f=1073741824,p=(0,r.Z)(o.ranges);try{for(p.s();!(h=p.n()).done;){var g=h.value;g.left<f&&(f=g.left)}}catch(y){p.e(y)}finally{p.f()}var v=e.getVerticalOffsetForLineNumber(i.lineNumber)-e.scrollTop,m=new at(v,l),_=e.getVerticalOffsetForLineNumber(o.lineNumber)-e.scrollTop;return[m,new at(_,f)]}},{key:"_prepareRenderWidget",value:function(e){var t,n=this._getTopAndBottomLeft(e),o=(0,i.Z)(n,2),a=o[0],s=o[1];if(!a||!s)return null;if(-1===this._cachedDomNodeClientWidth||-1===this._cachedDomNodeClientHeight){var u=null;if("function"===typeof this._actual.beforeRender&&(u=lt(this._actual.beforeRender,this._actual)),u)this._cachedDomNodeClientWidth=u.width,this._cachedDomNodeClientHeight=u.height;else{var l=this.domNode.domNode;this._cachedDomNodeClientWidth=l.clientWidth,this._cachedDomNodeClientHeight=l.clientHeight}}if(t=this.allowEditorOverflow?this._layoutBoxInPage(a,s,this._cachedDomNodeClientWidth,this._cachedDomNodeClientHeight,e):this._layoutBoxInViewport(a,s,this._cachedDomNodeClientWidth,this._cachedDomNodeClientHeight,e),this._preference)for(var c=1;c<=2;c++){var d,h=(0,r.Z)(this._preference);try{for(h.s();!(d=h.n()).done;){var f=d.value;if(1===f){if(!t)return null;if(2===c||t.fitsAbove)return{coordinate:new at(t.aboveTop,t.aboveLeft),position:1}}else{if(2!==f)return this.allowEditorOverflow?{coordinate:this._prepareRenderWidgetAtExactPositionOverflowing(a),position:0}:{coordinate:a,position:0};if(!t)return null;if(2===c||t.fitsBelow)return{coordinate:new at(t.belowTop,t.belowLeft),position:2}}}}catch(p){h.e(p)}finally{h.f()}}return null}},{key:"onBeforeRender",value:function(e){this._viewRange&&this._preference&&(this._viewRange.endLineNumber<e.startLineNumber||this._viewRange.startLineNumber>e.endLineNumber||this.domNode.setMaxWidth(this._maxWidth))}},{key:"prepareRender",value:function(e){this._renderData=this._prepareRenderWidget(e)}},{key:"render",value:function(e){if(!this._renderData)return this._isVisible&&(this.domNode.removeAttribute("monaco-visible-content-widget"),this._isVisible=!1,this.domNode.setVisibility("hidden")),void("function"===typeof this._actual.afterRender&<(this._actual.afterRender,this._actual,null));this.allowEditorOverflow?(this.domNode.setTop(this._renderData.coordinate.top),this.domNode.setLeft(this._renderData.coordinate.left)):(this.domNode.setTop(this._renderData.coordinate.top+e.scrollTop-e.bigNumbersDelta),this.domNode.setLeft(this._renderData.coordinate.left)),this._isVisible||(this.domNode.setVisibility("inherit"),this.domNode.setAttribute("monaco-visible-content-widget","true"),this._isVisible=!0),"function"===typeof this._actual.afterRender&<(this._actual.afterRender,this._actual,this._renderData.position)}}]),e}();function lt(e,t){try{for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];return e.call.apply(e,[t].concat(i))}catch(Ke){return null}}var ct=n(49396),dt=!0,ht=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n),(i=t.call(this))._context=e;var r=i._context.configuration.options,a=r.get(127);return i._lineHeight=r.get(55),i._renderLineHighlight=r.get(82),i._renderLineHighlightOnlyWhenFocus=r.get(83),i._contentLeft=a.contentLeft,i._contentWidth=a.contentWidth,i._selectionIsEmpty=!0,i._focused=!1,i._cursorLineNumbers=[1],i._selections=[new L.Y(1,1,1,1)],i._renderData=null,i._context.addEventHandler((0,o.Z)(i)),i}return(0,d.Z)(n,[{key:"dispose",value:function(){this._context.removeEventHandler(this),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"_readFromSelections",value:function(){var e=!1,t=dt?this._selections.slice(0,1):this._selections,n=t.map((function(e){return e.positionLineNumber}));n.sort((function(e,t){return e-t})),ct.fS(this._cursorLineNumbers,n)||(this._cursorLineNumbers=n,e=!0);var i=t.every((function(e){return e.isEmpty()}));return this._selectionIsEmpty!==i&&(this._selectionIsEmpty=i,e=!0),e}},{key:"onThemeChanged",value:function(e){return this._readFromSelections()}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options,n=t.get(127);return this._lineHeight=t.get(55),this._renderLineHighlight=t.get(82),this._renderLineHighlightOnlyWhenFocus=t.get(83),this._contentLeft=n.contentLeft,this._contentWidth=n.contentWidth,!0}},{key:"onCursorStateChanged",value:function(e){return this._selections=e.selections,this._readFromSelections()}},{key:"onFlushed",value:function(e){return!0}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return e.scrollWidthChanged||e.scrollTopChanged}},{key:"onZonesChanged",value:function(e){return!0}},{key:"onFocusChanged",value:function(e){return!!this._renderLineHighlightOnlyWhenFocus&&(this._focused=e.isFocused,!0)}},{key:"prepareRender",value:function(e){if(this._shouldRenderThis()){for(var t=this._renderOne(e),n=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,r=this._cursorLineNumbers.length,o=0,a=[],s=n;s<=i;s++){for(var u=s-n;o<r&&this._cursorLineNumbers[o]<s;)o++;o<r&&this._cursorLineNumbers[o]===s?a[u]=t:a[u]=""}this._renderData=a}else this._renderData=null}},{key:"render",value:function(e,t){if(!this._renderData)return"";var n=t-e;return n>=this._renderData.length?"":this._renderData[n]}}]),n}(Ze),ft=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,c.Z)(this,n),t.apply(this,arguments)}return(0,d.Z)(n,[{key:"_renderOne",value:function(e){var t="current-line"+(this._shouldRenderOther()?" current-line-both":"");return'<div class="'.concat(t,'" style="width:').concat(Math.max(e.scrollWidth,this._contentWidth),"px; height:").concat(this._lineHeight,'px;"></div>')}},{key:"_shouldRenderThis",value:function(){return("line"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&this._selectionIsEmpty&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}},{key:"_shouldRenderOther",value:function(){return("gutter"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}}]),n}(ht),pt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,c.Z)(this,n),t.apply(this,arguments)}return(0,d.Z)(n,[{key:"_renderOne",value:function(e){var t="current-line"+(this._shouldRenderMargin()?" current-line-margin":"")+(this._shouldRenderOther()?" current-line-margin-both":"");return'<div class="'.concat(t,'" style="width:').concat(this._contentLeft,"px; height:").concat(this._lineHeight,'px;"></div>')}},{key:"_shouldRenderMargin",value:function(){return("gutter"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}},{key:"_shouldRenderThis",value:function(){return!0}},{key:"_shouldRenderOther",value:function(){return("line"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&this._selectionIsEmpty&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}}]),n}(ht);(0,je.Ic)((function(e,t){dt=!1;var n=e.getColor(Fe.Kh);if(n&&(t.addRule(".monaco-editor .view-overlays .current-line { background-color: ".concat(n,"; }")),t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { background-color: ".concat(n,"; border: none; }"))),!n||n.isTransparent()||e.defines(Fe.Mm)){var i=e.getColor(Fe.Mm);i&&(dt=!0,t.addRule(".monaco-editor .view-overlays .current-line { border: 2px solid ".concat(i,"; }")),t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { border: 2px solid ".concat(i,"; }")),"hc"===e.type&&(t.addRule(".monaco-editor .view-overlays .current-line { border-width: 1px; }"),t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { border-width: 1px; }")))}}));var gt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n),(i=t.call(this))._context=e;var r=i._context.configuration.options;return i._lineHeight=r.get(55),i._typicalHalfwidthCharacterWidth=r.get(40).typicalHalfwidthCharacterWidth,i._renderResult=null,i._context.addEventHandler((0,o.Z)(i)),i}return(0,d.Z)(n,[{key:"dispose",value:function(){this._context.removeEventHandler(this),this._renderResult=null,(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options;return this._lineHeight=t.get(55),this._typicalHalfwidthCharacterWidth=t.get(40).typicalHalfwidthCharacterWidth,!0}},{key:"onDecorationsChanged",value:function(e){return!0}},{key:"onFlushed",value:function(e){return!0}},{key:"onLinesChanged",value:function(e){return!0}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return e.scrollTopChanged||e.scrollWidthChanged}},{key:"onZonesChanged",value:function(e){return!0}},{key:"prepareRender",value:function(e){for(var t=e.getDecorationsInViewport(),n=[],i=0,r=0,o=t.length;r<o;r++){var a=t[r];a.options.className&&(n[i++]=a)}n=n.sort((function(e,t){if(e.options.zIndex<t.options.zIndex)return-1;if(e.options.zIndex>t.options.zIndex)return 1;var n=e.options.className,i=t.options.className;return n<i?-1:n>i?1:fe.e.compareRangesUsingStarts(e.range,t.range)}));for(var s=e.visibleRange.startLineNumber,u=e.visibleRange.endLineNumber,l=[],c=s;c<=u;c++){l[c-s]=""}this._renderWholeLineDecorations(e,n,l),this._renderNormalDecorations(e,n,l),this._renderResult=l}},{key:"_renderWholeLineDecorations",value:function(e,t,n){for(var i=String(this._lineHeight),r=e.visibleRange.startLineNumber,o=e.visibleRange.endLineNumber,a=0,s=t.length;a<s;a++){var u=t[a];if(u.options.isWholeLine)for(var l='<div class="cdr '+u.options.className+'" style="left:0;width:100%;height:'+i+'px;"></div>',c=Math.max(u.range.startLineNumber,r),d=Math.min(u.range.endLineNumber,o),h=c;h<=d;h++){n[h-r]+=l}}}},{key:"_renderNormalDecorations",value:function(e,t,n){for(var i=String(this._lineHeight),r=e.visibleRange.startLineNumber,o=null,a=!1,s=null,u=0,l=t.length;u<l;u++){var c=t[u];if(!c.options.isWholeLine){var d=c.options.className,h=Boolean(c.options.showIfCollapsed),f=c.range;h&&1===f.endColumn&&f.endLineNumber!==f.startLineNumber&&(f=new fe.e(f.startLineNumber,f.startColumn,f.endLineNumber-1,this._context.model.getLineMaxColumn(f.endLineNumber-1))),o===d&&a===h&&fe.e.areIntersectingOrTouching(s,f)?s=fe.e.plusRange(s,f):(null!==o&&this._renderNormalDecoration(e,s,o,a,i,r,n),o=d,a=h,s=f)}}null!==o&&this._renderNormalDecoration(e,s,o,a,i,r,n)}},{key:"_renderNormalDecoration",value:function(e,t,n,i,r,o,a){var s=e.linesVisibleRangesForRange(t,"findMatch"===n);if(s)for(var u=0,l=s.length;u<l;u++){var c=s[u];if(!c.outsideRenderedLine){var d=c.lineNumber-o;if(i&&1===c.ranges.length){var h=c.ranges[0];0===h.width&&(c.ranges[0]=new U(h.left,this._typicalHalfwidthCharacterWidth))}for(var f=0,p=c.ranges.length;f<p;f++){var g=c.ranges[f],v='<div class="cdr '+n+'" style="left:'+String(g.left)+"px;width:"+String(g.width)+"px;height:"+r+'px;"></div>';a[d]+=v}}}}},{key:"render",value:function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]}}]),n}(Ze),vt=n(61727),mt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,o){var a;(0,c.Z)(this,n);var s=(a=t.call(this,e))._context.configuration.options,u=s.get(89),l=s.get(63),d=s.get(32),h=s.get(92),f={listenOnDomNode:r.domNode,className:"editor-scrollable "+(0,je.m6)(e.theme.type),useShadows:!1,lazyRender:!0,vertical:u.vertical,horizontal:u.horizontal,verticalHasArrows:u.verticalHasArrows,horizontalHasArrows:u.horizontalHasArrows,verticalScrollbarSize:u.verticalScrollbarSize,verticalSliderSize:u.verticalSliderSize,horizontalScrollbarSize:u.horizontalScrollbarSize,horizontalSliderSize:u.horizontalSliderSize,handleMouseWheel:u.handleMouseWheel,alwaysConsumeMouseWheel:u.alwaysConsumeMouseWheel,arrowSize:u.arrowSize,mouseWheelScrollSensitivity:l,fastScrollSensitivity:d,scrollPredominantAxis:h,scrollByPage:u.scrollByPage};a.scrollbar=a._register(new vt.$Z(i.domNode,f,a._context.viewLayout.getScrollable())),W.write(a.scrollbar.getDomNode(),5),a.scrollbarDomNode=(0,E.X)(a.scrollbar.getDomNode()),a.scrollbarDomNode.setPosition("absolute"),a._setLayout();var p=function(e,t,n){var i={};if(t){var r=e.scrollTop;r&&(i.scrollTop=a._context.viewLayout.getCurrentScrollTop()+r,e.scrollTop=0)}if(n){var o=e.scrollLeft;o&&(i.scrollLeft=a._context.viewLayout.getCurrentScrollLeft()+o,e.scrollLeft=0)}a._context.model.setScrollPosition(i,1)};return a._register(_.addDisposableListener(r.domNode,"scroll",(function(e){return p(r.domNode,!0,!0)}))),a._register(_.addDisposableListener(i.domNode,"scroll",(function(e){return p(i.domNode,!0,!1)}))),a._register(_.addDisposableListener(o.domNode,"scroll",(function(e){return p(o.domNode,!0,!1)}))),a._register(_.addDisposableListener(a.scrollbarDomNode.domNode,"scroll",(function(e){return p(a.scrollbarDomNode.domNode,!0,!1)}))),a}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"_setLayout",value:function(){var e=this._context.configuration.options,t=e.get(127);this.scrollbarDomNode.setLeft(t.contentLeft),"right"===e.get(61).side?this.scrollbarDomNode.setWidth(t.contentWidth+t.minimap.minimapWidth):this.scrollbarDomNode.setWidth(t.contentWidth),this.scrollbarDomNode.setHeight(t.height)}},{key:"getOverviewRulerLayoutInfo",value:function(){return this.scrollbar.getOverviewRulerLayoutInfo()}},{key:"getDomNode",value:function(){return this.scrollbarDomNode}},{key:"delegateVerticalScrollbarMouseDown",value:function(e){this.scrollbar.delegateVerticalScrollbarMouseDown(e)}},{key:"onConfigurationChanged",value:function(e){if(e.hasChanged(89)||e.hasChanged(63)||e.hasChanged(32)){var t=this._context.configuration.options,n=t.get(89),i=t.get(63),r=t.get(32),o=t.get(92),a={handleMouseWheel:n.handleMouseWheel,mouseWheelScrollSensitivity:i,fastScrollSensitivity:r,scrollPredominantAxis:o};this.scrollbar.updateOptions(a)}return e.hasChanged(127)&&this._setLayout(),!0}},{key:"onScrollChanged",value:function(e){return!0}},{key:"onThemeChanged",value:function(e){return this.scrollbar.updateClassName("editor-scrollable "+(0,je.m6)(this._context.theme.type)),!0}},{key:"prepareRender",value:function(e){}},{key:"render",value:function(e){this.scrollbar.renderNow()}}]),n}(z),_t=(0,d.Z)((function e(t,n,i){(0,c.Z)(this,e),this.startLineNumber=+t,this.endLineNumber=+n,this.className=String(i)})),yt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){return(0,c.Z)(this,n),t.apply(this,arguments)}return(0,d.Z)(n,[{key:"_render",value:function(e,t,n){for(var i=[],r=e;r<=t;r++){i[r-e]=[]}if(0===n.length)return i;n.sort((function(e,t){return e.className===t.className?e.startLineNumber===t.startLineNumber?e.endLineNumber-t.endLineNumber:e.startLineNumber-t.startLineNumber:e.className<t.className?-1:1}));for(var o=null,a=0,s=0,u=n.length;s<u;s++){var l=n[s],c=l.className,d=Math.max(l.startLineNumber,e)-e,h=Math.min(l.endLineNumber,t)-e;o===c?(d=Math.max(a+1,d),a=Math.max(a,h)):(o=c,a=h);for(var f=d;f<=a;f++)i[f].push(o)}return i}}]),n}(Ze),bt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n),(i=t.call(this))._context=e;var r=i._context.configuration.options,a=r.get(127);return i._lineHeight=r.get(55),i._glyphMargin=r.get(46),i._glyphMarginLeft=a.glyphMarginLeft,i._glyphMarginWidth=a.glyphMarginWidth,i._renderResult=null,i._context.addEventHandler((0,o.Z)(i)),i}return(0,d.Z)(n,[{key:"dispose",value:function(){this._context.removeEventHandler(this),this._renderResult=null,(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options,n=t.get(127);return this._lineHeight=t.get(55),this._glyphMargin=t.get(46),this._glyphMarginLeft=n.glyphMarginLeft,this._glyphMarginWidth=n.glyphMarginWidth,!0}},{key:"onDecorationsChanged",value:function(e){return!0}},{key:"onFlushed",value:function(e){return!0}},{key:"onLinesChanged",value:function(e){return!0}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return e.scrollTopChanged}},{key:"onZonesChanged",value:function(e){return!0}},{key:"_getDecorations",value:function(e){for(var t=e.getDecorationsInViewport(),n=[],i=0,r=0,o=t.length;r<o;r++){var a=t[r],s=a.options.glyphMarginClassName;s&&(n[i++]=new _t(a.range.startLineNumber,a.range.endLineNumber,s))}return n}},{key:"prepareRender",value:function(e){if(this._glyphMargin){for(var t=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,i=this._render(t,n,this._getDecorations(e)),r=this._lineHeight.toString(),o='" style="left:'+this._glyphMarginLeft.toString()+"px;width:"+this._glyphMarginWidth.toString()+"px;height:"+r+'px;"></div>',a=[],s=t;s<=n;s++){var u=s-t,l=i[u];0===l.length?a[u]="":a[u]='<div class="cgmr codicon '+l.join(" ")+o}this._renderResult=a}else this._renderResult=null}},{key:"render",value:function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]}}]),n}(yt),wt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n),(i=t.call(this))._context=e,i._primaryLineNumber=0;var r=i._context.configuration.options,a=r.get(128),s=r.get(40);return i._lineHeight=r.get(55),i._spaceWidth=s.spaceWidth,i._enabled=r.get(80),i._activeIndentEnabled=r.get(49),i._maxIndentLeft=-1===a.wrappingColumn?-1:a.wrappingColumn*s.typicalHalfwidthCharacterWidth,i._renderResult=null,i._context.addEventHandler((0,o.Z)(i)),i}return(0,d.Z)(n,[{key:"dispose",value:function(){this._context.removeEventHandler(this),this._renderResult=null,(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options,n=t.get(128),i=t.get(40);return this._lineHeight=t.get(55),this._spaceWidth=i.spaceWidth,this._enabled=t.get(80),this._activeIndentEnabled=t.get(49),this._maxIndentLeft=-1===n.wrappingColumn?-1:n.wrappingColumn*i.typicalHalfwidthCharacterWidth,!0}},{key:"onCursorStateChanged",value:function(e){var t=e.selections[0],n=t.isEmpty()?t.positionLineNumber:0;return this._primaryLineNumber!==n&&(this._primaryLineNumber=n,!0)}},{key:"onDecorationsChanged",value:function(e){return!0}},{key:"onFlushed",value:function(e){return!0}},{key:"onLinesChanged",value:function(e){return!0}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return e.scrollTopChanged}},{key:"onZonesChanged",value:function(e){return!0}},{key:"onLanguageConfigurationChanged",value:function(e){return!0}},{key:"prepareRender",value:function(e){if(this._enabled){var t=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,i=this._context.model.getTextModelOptions().indentSize*this._spaceWidth,r=e.scrollWidth,o=this._lineHeight,a=this._context.model.getLinesIndentGuides(t,n),s=0,u=0,l=0;if(this._activeIndentEnabled&&this._primaryLineNumber){var c=this._context.model.getActiveIndentGuide(this._primaryLineNumber,t,n);s=c.startLineNumber,u=c.endLineNumber,l=c.indent}for(var d=[],h=t;h<=n;h++){var f=s<=h&&h<=u,p=h-t,g=a[p],v="";if(g>=1)for(var m=e.visibleRangeForPosition(new he.L(h,1)),_=m?m.left:0,y=1;y<=g;y++){if(v+='<div class="'.concat(f&&y===l?"cigra":"cigr",'" style="left:').concat(_,"px;height:").concat(o,"px;width:").concat(i,'px"></div>'),(_+=i)>r||this._maxIndentLeft>0&&_>this._maxIndentLeft)break}d[p]=v}this._renderResult=d}else this._renderResult=null}},{key:"render",value:function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]}}]),n}(Ze);(0,je.Ic)((function(e,t){var n=e.getColor(Fe.tR);n&&t.addRule(".monaco-editor .lines-content .cigr { box-shadow: 1px 0 0 0 ".concat(n," inset; }"));var i=e.getColor(Fe.Ym)||n;i&&t.addRule(".monaco-editor .lines-content .cigra { box-shadow: 1px 0 0 0 ".concat(i," inset; }"))}));var Ct=function(){function e(){(0,c.Z)(this,e),this._currentVisibleRange=new fe.e(1,1,1,1)}return(0,d.Z)(e,[{key:"getCurrentVisibleRange",value:function(){return this._currentVisibleRange}},{key:"setCurrentVisibleRange",value:function(e){this._currentVisibleRange=e}}]),e}(),kt=(0,d.Z)((function e(t,n,i,r,o,a){(0,c.Z)(this,e),this.lineNumber=t,this.startColumn=n,this.endColumn=i,this.startScrollTop=r,this.stopScrollTop=o,this.scrollType=a,this.type="range",this.minLineNumber=t,this.maxLineNumber=t})),St=(0,d.Z)((function e(t,n,i,r){(0,c.Z)(this,e),this.selections=t,this.startScrollTop=n,this.stopScrollTop=i,this.scrollType=r,this.type="selections";for(var o=t[0].startLineNumber,a=t[0].endLineNumber,s=1,u=t.length;s<u;s++){var l=t[s];o=Math.min(o,l.startLineNumber),a=Math.max(a,l.endLineNumber)}this.minLineNumber=o,this.maxLineNumber=a})),xt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r;(0,c.Z)(this,n),(r=t.call(this,e))._linesContent=i,r._textRangeRestingSpot=document.createElement("div"),r._visibleLines=new et((0,o.Z)(r)),r.domNode=r._visibleLines.domNode;var a=r._context.configuration,s=r._context.configuration.options,u=s.get(40),l=s.get(128);return r._lineHeight=s.get(55),r._typicalHalfwidthCharacterWidth=u.typicalHalfwidthCharacterWidth,r._isViewportWrapping=l.isViewportWrapping,r._revealHorizontalRightPadding=s.get(86),r._cursorSurroundingLines=s.get(23),r._cursorSurroundingLinesStyle=s.get(24),r._canUseLayerHinting=!s.get(26),r._viewLineOptions=new re(a,r._context.theme.type),W.write(r.domNode,7),r.domNode.setClassName("view-lines ".concat(We.S)),k.V.applyFontInfo(r.domNode,u),r._maxLineWidth=0,r._asyncUpdateLineWidths=new T.pY((function(){r._updateLineWidthsSlow()}),200),r._asyncCheckMonospaceFontAssumptions=new T.pY((function(){r._checkMonospaceFontAssumptions()}),2e3),r._lastRenderedData=new Ct,r._horizontalRevealRequest=null,r}return(0,d.Z)(n,[{key:"dispose",value:function(){this._asyncUpdateLineWidths.dispose(),this._asyncCheckMonospaceFontAssumptions.dispose(),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"getDomNode",value:function(){return this.domNode}},{key:"createVisibleLine",value:function(){return new oe(this._viewLineOptions)}},{key:"onConfigurationChanged",value:function(e){this._visibleLines.onConfigurationChanged(e),e.hasChanged(128)&&(this._maxLineWidth=0);var t=this._context.configuration.options,n=t.get(40),i=t.get(128);return this._lineHeight=t.get(55),this._typicalHalfwidthCharacterWidth=n.typicalHalfwidthCharacterWidth,this._isViewportWrapping=i.isViewportWrapping,this._revealHorizontalRightPadding=t.get(86),this._cursorSurroundingLines=t.get(23),this._cursorSurroundingLinesStyle=t.get(24),this._canUseLayerHinting=!t.get(26),k.V.applyFontInfo(this.domNode,n),this._onOptionsMaybeChanged(),e.hasChanged(127)&&(this._maxLineWidth=0),!0}},{key:"_onOptionsMaybeChanged",value:function(){var e=this._context.configuration,t=new re(e,this._context.theme.type);if(!this._viewLineOptions.equals(t)){this._viewLineOptions=t;for(var n=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber(),r=n;r<=i;r++){this._visibleLines.getVisibleLine(r).onOptionsChanged(this._viewLineOptions)}return!0}return!1}},{key:"onCursorStateChanged",value:function(e){for(var t=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber(),i=!1,r=t;r<=n;r++)i=this._visibleLines.getVisibleLine(r).onSelectionChanged()||i;return i}},{key:"onDecorationsChanged",value:function(e){for(var t=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber(),i=t;i<=n;i++)this._visibleLines.getVisibleLine(i).onDecorationsChanged();return!0}},{key:"onFlushed",value:function(e){var t=this._visibleLines.onFlushed(e);return this._maxLineWidth=0,t}},{key:"onLinesChanged",value:function(e){return this._visibleLines.onLinesChanged(e)}},{key:"onLinesDeleted",value:function(e){return this._visibleLines.onLinesDeleted(e)}},{key:"onLinesInserted",value:function(e){return this._visibleLines.onLinesInserted(e)}},{key:"onRevealRangeRequest",value:function(e){var t=this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(),e.source,e.range,e.selections,e.verticalType);if(-1===t)return!1;var n=this._context.viewLayout.validateScrollPosition({scrollTop:t});e.revealHorizontal?e.range&&e.range.startLineNumber!==e.range.endLineNumber?n={scrollTop:n.scrollTop,scrollLeft:0}:e.range?this._horizontalRevealRequest=new kt(e.range.startLineNumber,e.range.startColumn,e.range.endColumn,this._context.viewLayout.getCurrentScrollTop(),n.scrollTop,e.scrollType):e.selections&&e.selections.length>0&&(this._horizontalRevealRequest=new St(e.selections,this._context.viewLayout.getCurrentScrollTop(),n.scrollTop,e.scrollType)):this._horizontalRevealRequest=null;var i=Math.abs(this._context.viewLayout.getCurrentScrollTop()-n.scrollTop)<=this._lineHeight?1:e.scrollType;return this._context.model.setScrollPosition(n,i),!0}},{key:"onScrollChanged",value:function(e){if(this._horizontalRevealRequest&&e.scrollLeftChanged&&(this._horizontalRevealRequest=null),this._horizontalRevealRequest&&e.scrollTopChanged){var t=Math.min(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop),n=Math.max(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop);(e.scrollTop<t||e.scrollTop>n)&&(this._horizontalRevealRequest=null)}return this.domNode.setWidth(e.scrollWidth),this._visibleLines.onScrollChanged(e)||!0}},{key:"onTokensChanged",value:function(e){return this._visibleLines.onTokensChanged(e)}},{key:"onZonesChanged",value:function(e){return this._context.model.setMaxLineWidth(this._maxLineWidth),this._visibleLines.onZonesChanged(e)}},{key:"onThemeChanged",value:function(e){return this._onOptionsMaybeChanged()}},{key:"getPositionFromDOMInfo",value:function(e,t){var n=this._getViewLineDomNode(e);if(null===n)return null;var i=this._getLineNumberFor(n);if(-1===i)return null;if(i<1||i>this._context.model.getLineCount())return null;if(1===this._context.model.getLineMaxColumn(i))return new he.L(i,1);var r=this._visibleLines.getStartLineNumber(),o=this._visibleLines.getEndLineNumber();if(i<r||i>o)return null;var a=this._visibleLines.getVisibleLine(i).getColumnOfNodeOffset(i,e,t),s=this._context.model.getLineMinColumn(i);return a<s&&(a=s),new he.L(i,a)}},{key:"_getViewLineDomNode",value:function(e){for(;e&&1===e.nodeType;){if(e.className===oe.CLASS_NAME)return e;e=e.parentElement}return null}},{key:"_getLineNumberFor",value:function(e){for(var t=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber(),i=t;i<=n;i++){if(e===this._visibleLines.getVisibleLine(i).getDomNode())return i}return-1}},{key:"getLineWidth",value:function(e){var t=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber();return e<t||e>n?-1:this._visibleLines.getVisibleLine(e).getWidth()}},{key:"linesVisibleRangesForRange",value:function(e,t){if(this.shouldRender())return null;var n=e.endLineNumber,i=fe.e.intersectRanges(e,this._lastRenderedData.getCurrentVisibleRange());if(!i)return null;var r=[],o=0,a=new ie(this.domNode.domNode,this._textRangeRestingSpot),s=0;t&&(s=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new he.L(i.startLineNumber,1)).lineNumber);for(var u=this._visibleLines.getStartLineNumber(),l=this._visibleLines.getEndLineNumber(),c=i.startLineNumber;c<=i.endLineNumber;c++)if(!(c<u||c>l)){var d=c===i.startLineNumber?i.startColumn:1,h=c===i.endLineNumber?i.endColumn:this._context.model.getLineMaxColumn(c),f=this._visibleLines.getVisibleLine(c).getVisibleRangesForRange(d,h,a);if(f){if(t&&c<n)s!==(s=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new he.L(c+1,1)).lineNumber)&&(f.ranges[f.ranges.length-1].width+=this._typicalHalfwidthCharacterWidth);r[o++]=new Y(f.outsideRenderedLine,c,f.ranges)}}return 0===o?null:r}},{key:"_visibleRangesForLineRange",value:function(e,t,n){return this.shouldRender()||e<this._visibleLines.getStartLineNumber()||e>this._visibleLines.getEndLineNumber()?null:this._visibleLines.getVisibleLine(e).getVisibleRangesForRange(t,n,new ie(this.domNode.domNode,this._textRangeRestingSpot))}},{key:"visibleRangeForPosition",value:function(e){var t=this._visibleRangesForLineRange(e.lineNumber,e.column,e.column);return t?new K(t.outsideRenderedLine,t.ranges[0].left):null}},{key:"updateLineWidths",value:function(){this._updateLineWidths(!1)}},{key:"_updateLineWidthsFast",value:function(){return this._updateLineWidths(!0)}},{key:"_updateLineWidthsSlow",value:function(){this._updateLineWidths(!1)}},{key:"_updateLineWidths",value:function(e){for(var t=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber(),i=1,r=!0,o=t;o<=n;o++){var a=this._visibleLines.getVisibleLine(o);!e||a.getWidthIsFast()?i=Math.max(i,a.getWidth()):r=!1}return r&&1===t&&n===this._context.model.getLineCount()&&(this._maxLineWidth=0),this._ensureMaxLineWidth(i),r}},{key:"_checkMonospaceFontAssumptions",value:function(){for(var e=-1,t=-1,n=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber(),r=n;r<=i;r++){var o=this._visibleLines.getVisibleLine(r);if(o.needsMonospaceFontCheck()){var a=o.getWidth();a>t&&(t=a,e=r)}}if(-1!==e&&!this._visibleLines.getVisibleLine(e).monospaceAssumptionsAreValid())for(var s=n;s<=i;s++){this._visibleLines.getVisibleLine(s).onMonospaceAssumptionsInvalidated()}}},{key:"prepareRender",value:function(){throw new Error("Not supported")}},{key:"render",value:function(){throw new Error("Not supported")}},{key:"renderText",value:function(e){if(this._visibleLines.renderLines(e),this._lastRenderedData.setCurrentVisibleRange(e.visibleRange),this.domNode.setWidth(this._context.viewLayout.getScrollWidth()),this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(),1e6)),this._horizontalRevealRequest){var t=this._horizontalRevealRequest;if(e.startLineNumber<=t.minLineNumber&&t.maxLineNumber<=e.endLineNumber){this._horizontalRevealRequest=null,this.onDidRender();var n=this._computeScrollLeftToReveal(t);n&&(this._isViewportWrapping||this._ensureMaxLineWidth(n.maxHorizontalOffset),this._context.model.setScrollPosition({scrollLeft:n.scrollLeft},t.scrollType))}}if(this._updateLineWidthsFast()||this._asyncUpdateLineWidths.schedule(),D.IJ&&!this._asyncCheckMonospaceFontAssumptions.isScheduled())for(var i=this._visibleLines.getStartLineNumber(),r=this._visibleLines.getEndLineNumber(),o=i;o<=r;o++){if(this._visibleLines.getVisibleLine(o).needsMonospaceFontCheck()){this._asyncCheckMonospaceFontAssumptions.schedule();break}}this._linesContent.setLayerHinting(this._canUseLayerHinting),this._linesContent.setContain("strict");var a=this._context.viewLayout.getCurrentScrollTop()-e.bigNumbersDelta;this._linesContent.setTop(-a),this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft())}},{key:"_ensureMaxLineWidth",value:function(e){var t=Math.ceil(e);this._maxLineWidth<t&&(this._maxLineWidth=t,this._context.model.setMaxLineWidth(this._maxLineWidth))}},{key:"_computeScrollTopToRevealRange",value:function(e,t,n,i,r){var o,a,s,u,l=e.top,c=e.height,d=l+c;if(i&&i.length>0){for(var h=i[0].startLineNumber,f=i[0].endLineNumber,p=1,g=i.length;p<g;p++){var v=i[p];h=Math.min(h,v.startLineNumber),f=Math.max(f,v.endLineNumber)}o=!1,a=this._context.viewLayout.getVerticalOffsetForLineNumber(h),s=this._context.viewLayout.getVerticalOffsetForLineNumber(f)+this._lineHeight}else{if(!n)return-1;o=!0,a=this._context.viewLayout.getVerticalOffsetForLineNumber(n.startLineNumber),s=this._context.viewLayout.getVerticalOffsetForLineNumber(n.endLineNumber)+this._lineHeight}if(!("mouse"===t&&"default"===this._cursorSurroundingLinesStyle)){var m=Math.min(c/this._lineHeight/2,this._cursorSurroundingLines);a-=m*this._lineHeight,s+=Math.max(0,m-1)*this._lineHeight}if(0!==r&&4!==r||(s+=this._lineHeight),s-a>c){if(!o)return-1;u=a}else if(5===r||6===r)if(6===r&&l<=a&&s<=d)u=l;else{var _=a-Math.max(5*this._lineHeight,.2*c),y=s-c;u=Math.max(y,_)}else if(1===r||2===r)if(2===r&&l<=a&&s<=d)u=l;else{var b=(a+s)/2;u=Math.max(0,b-c/2)}else u=this._computeMinimumScrolling(l,d,a,s,3===r,4===r);return u}},{key:"_computeScrollLeftToReveal",value:function(e){var t=this._context.viewLayout.getCurrentViewport(),i=t.left,o=i+t.width,a=1073741824,s=0;if("range"===e.type){var u=this._visibleRangesForLineRange(e.lineNumber,e.startColumn,e.endColumn);if(!u)return null;var l,c=(0,r.Z)(u.ranges);try{for(c.s();!(l=c.n()).done;){var d=l.value;a=Math.min(a,d.left),s=Math.max(s,d.left+d.width)}}catch(y){c.e(y)}finally{c.f()}}else{var h,f=(0,r.Z)(e.selections);try{for(f.s();!(h=f.n()).done;){var p=h.value;if(p.startLineNumber!==p.endLineNumber)return null;var g=this._visibleRangesForLineRange(p.startLineNumber,p.startColumn,p.endColumn);if(!g)return null;var v,m=(0,r.Z)(g.ranges);try{for(m.s();!(v=m.n()).done;){var _=v.value;a=Math.min(a,_.left),s=Math.max(s,_.left+_.width)}}catch(y){m.e(y)}finally{m.f()}}}catch(y){f.e(y)}finally{f.f()}}return a=Math.max(0,a-n.HORIZONTAL_EXTRA_PX),s+=this._revealHorizontalRightPadding,"selections"===e.type&&s-a>t.width?null:{scrollLeft:this._computeMinimumScrolling(i,o,a,s),maxHorizontalOffset:s}}},{key:"_computeMinimumScrolling",value:function(e,t,n,i,r,o){r=!!r,o=!!o;var a=(t|=0)-(e|=0);return(i|=0)-(n|=0)<a?r?n:o?Math.max(0,i-a):n<e?n:i>t?Math.max(0,i-a):e:n}}]),n}(z);xt.HORIZONTAL_EXTRA_PX=30;var Lt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n),(i=t.call(this))._context=e;var r=i._context.configuration.options.get(127);return i._decorationsLeft=r.decorationsLeft,i._decorationsWidth=r.decorationsWidth,i._renderResult=null,i._context.addEventHandler((0,o.Z)(i)),i}return(0,d.Z)(n,[{key:"dispose",value:function(){this._context.removeEventHandler(this),this._renderResult=null,(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options.get(127);return this._decorationsLeft=t.decorationsLeft,this._decorationsWidth=t.decorationsWidth,!0}},{key:"onDecorationsChanged",value:function(e){return!0}},{key:"onFlushed",value:function(e){return!0}},{key:"onLinesChanged",value:function(e){return!0}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return e.scrollTopChanged}},{key:"onZonesChanged",value:function(e){return!0}},{key:"_getDecorations",value:function(e){for(var t=e.getDecorationsInViewport(),n=[],i=0,r=0,o=t.length;r<o;r++){var a=t[r],s=a.options.linesDecorationsClassName;s&&(n[i++]=new _t(a.range.startLineNumber,a.range.endLineNumber,s));var u=a.options.firstLineDecorationClassName;u&&(n[i++]=new _t(a.range.startLineNumber,a.range.startLineNumber,u))}return n}},{key:"prepareRender",value:function(e){for(var t=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,i=this._render(t,n,this._getDecorations(e)),r='" style="left:'+this._decorationsLeft.toString()+"px;width:"+this._decorationsWidth.toString()+'px;"></div>',o=[],a=t;a<=n;a++){for(var s=a-t,u=i[s],l="",c=0,d=u.length;c<d;c++)l+='<div class="cldr '+u[c]+r;o[s]=l}this._renderResult=o}},{key:"render",value:function(e,t){return this._renderResult?this._renderResult[t-e]:""}}]),n}(yt),Et=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this))._context=e,i._renderResult=null,i._context.addEventHandler((0,o.Z)(i)),i}return(0,d.Z)(n,[{key:"dispose",value:function(){this._context.removeEventHandler(this),this._renderResult=null,(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"onConfigurationChanged",value:function(e){return!0}},{key:"onDecorationsChanged",value:function(e){return!0}},{key:"onFlushed",value:function(e){return!0}},{key:"onLinesChanged",value:function(e){return!0}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return e.scrollTopChanged}},{key:"onZonesChanged",value:function(e){return!0}},{key:"_getDecorations",value:function(e){for(var t=e.getDecorationsInViewport(),n=[],i=0,r=0,o=t.length;r<o;r++){var a=t[r],s=a.options.marginClassName;s&&(n[i++]=new _t(a.range.startLineNumber,a.range.endLineNumber,s))}return n}},{key:"prepareRender",value:function(e){for(var t=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,i=this._render(t,n,this._getDecorations(e)),r=[],o=t;o<=n;o++){for(var a=o-t,s=i[a],u="",l=0,c=s.length;l<c;l++)u+='<div class="cmdr '+s[l]+'" style=""></div>';r[a]=u}this._renderResult=r}},{key:"render",value:function(e,t){return this._renderResult?this._renderResult[t-e]:""}}]),n}(yt),Dt=function(){function e(t,n,i,r){(0,c.Z)(this,e),this.r=e._clamp(t),this.g=e._clamp(n),this.b=e._clamp(i),this.a=e._clamp(r)}return(0,d.Z)(e,[{key:"equals",value:function(e){return this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}}],[{key:"_clamp",value:function(e){return e<0?0:e>255?255:0|e}}]),e}();Dt.Empty=new Dt(0,0,0,0);var Nt=n(99404),Mt=function(){function e(){var t=this;(0,c.Z)(this,e),this._onDidChange=new b.Q5,this.onDidChange=this._onDidChange.event,this._updateColorMap(),Nt.RW.onDidChange((function(e){e.changedColorMap&&t._updateColorMap()}))}return(0,d.Z)(e,[{key:"_updateColorMap",value:function(){var e=Nt.RW.getColorMap();if(!e)return this._colors=[Dt.Empty],void(this._backgroundIsLight=!0);this._colors=[Dt.Empty];for(var t=1;t<e.length;t++){var n=e[t].rgba;this._colors[t]=new Dt(n.r,n.g,n.b,Math.round(255*n.a))}var i=e[2].getRelativeLuminance();this._backgroundIsLight=i>=.5,this._onDidChange.fire(void 0)}},{key:"getColor",value:function(e){return(e<1||e>=this._colors.length)&&(e=2),this._colors[e]}},{key:"backgroundIsLight",value:function(){return this._backgroundIsLight}}],[{key:"getInstance",value:function(){return this._INSTANCE||(this._INSTANCE=new e),this._INSTANCE}}]),e}();Mt._INSTANCE=null;var Tt=n(4587),It=n(92992),Ot=function(){for(var e=[],t=32;t<=126;t++)e.push(t);return e.push(65533),e}(),At=n(38820),Rt=function(){function e(t,n){(0,c.Z)(this,e),this.scale=n,this.charDataNormal=e.soften(t,.8),this.charDataLight=e.soften(t,50/60)}return(0,d.Z)(e,[{key:"renderChar",value:function(e,t,n,i,r,o,a,s,u){var l=1*this.scale,c=2*this.scale,d=u?1:c;if(t+l>e.width||n+d>e.height)console.warn("bad render request outside image data");else for(var h=s?this.charDataLight:this.charDataNormal,f=function(e,t){return(e-=32)<0||e>96?t<=2?(e+96)%96:95:e}(i,a),p=4*e.width,g=o.r,v=o.g,m=o.b,_=r.r-g,y=r.g-v,b=r.b-m,w=e.data,C=f*l*c,k=n*p+4*t,S=0;S<d;S++){for(var x=k,L=0;L<l;L++){var E=h[C++]/255;w[x++]=g+_*E,w[x++]=v+y*E,w[x++]=m+b*E,x++}k+=p}}},{key:"blockRenderChar",value:function(e,t,n,i,r,o,a){var s=1*this.scale,u=2*this.scale,l=a?1:u;if(t+s>e.width||n+l>e.height)console.warn("bad render request outside image data");else for(var c=4*e.width,d=r.r,h=r.g,f=r.b,p=d+.5*(i.r-d),g=h+.5*(i.g-h),v=f+.5*(i.b-f),m=e.data,_=n*c+4*t,y=0;y<l;y++){for(var b=_,w=0;w<s;w++)m[b++]=p,m[b++]=g,m[b++]=v,b++;_+=c}}}],[{key:"soften",value:function(e,t){for(var n=new Uint8ClampedArray(e.length),i=0,r=e.length;i<r;i++)n[i]=(0,At.K)(e[i]*t);return n}}]),e}(),Pt=n(60106),Zt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15},Ft=function(e){for(var t=new Uint8ClampedArray(e.length/2),n=0;n<e.length;n+=2)t[n>>1]=Zt[e[n]]<<4|15&Zt[e[n+1]];return t},jt={1:(0,Pt.I)((function(){return Ft("0000511D6300CF609C709645A78432005642574171487021003C451900274D35D762755E8B629C5BA856AF57BA649530C167D1512A272A3F6038604460398526BCA2A968DB6F8957C768BE5FBE2FB467CF5D8D5B795DC7625B5DFF50DE64C466DB2FC47CD860A65E9A2EB96CB54CE06DA763AB2EA26860524D3763536601005116008177A8705E53AB738E6A982F88BAA35B5F5B626D9C636B449B737E5B7B678598869A662F6B5B8542706C704C80736A607578685B70594A49715A4522E792")})),2:(0,Pt.I)((function(){return Ft("000000000000000055394F383D2800008B8B1F210002000081B1CBCBCC820000847AAF6B9AAF2119BE08B8881AD60000A44FD07DCCF107015338130C00000000385972265F390B406E2437634B4B48031B12B8A0847000001E15B29A402F0000000000004B33460B00007A752C2A0000000000004D3900000084394B82013400ABA5CFC7AD9C0302A45A3E5A98AB000089A43382D97900008BA54AA087A70A0248A6A7AE6DBE0000BF6F94987EA40A01A06DCFA7A7A9030496C32F77891D0000A99FB1A0AFA80603B29AB9CA75930D010C0948354D3900000C0948354F37460D0028BE673D8400000000AF9D7B6E00002B007AA8933400007AA642675C2700007984CFB9C3985B768772A8A6B7B20000CAAECAAFC4B700009F94A6009F840009D09F9BA4CA9C0000CC8FC76DC87F0000C991C472A2000000A894A48CA7B501079BA2C9C69BA20000B19A5D3FA89000005CA6009DA2960901B0A7F0669FB200009D009E00B7890000DAD0F5D092820000D294D4C48BD10000B5A7A4A3B1A50402CAB6CBA6A2000000B5A7A4A3B1A8044FCDADD19D9CB00000B7778F7B8AAE0803C9AB5D3F5D3F00009EA09EA0BAB006039EA0989A8C7900009B9EF4D6B7C00000A9A7816CACA80000ABAC84705D3F000096DA635CDC8C00006F486F266F263D4784006124097B00374F6D2D6D2D6D4A3A95872322000000030000000000008D8939130000000000002E22A5C9CBC70600AB25C0B5C9B400061A2DB04CA67001082AA6BEBEBFC606002321DACBC19E03087AA08B6768380000282FBAC0B8CA7A88AD25BBA5A29900004C396C5894A6000040485A6E356E9442A32CD17EADA70000B4237923628600003E2DE9C1D7B500002F25BBA5A2990000231DB6AFB4A804023025C0B5CAB588062B2CBDBEC0C706882435A75CA20000002326BD6A82A908048B4B9A5A668000002423A09CB4BB060025259C9D8A7900001C1FCAB2C7C700002A2A9387ABA200002626A4A47D6E9D14333163A0C87500004B6F9C2D643A257049364936493647358A34438355497F1A0000A24C1D590000D38DFFBDD4CD3126")}))},Ht=function(){function e(){(0,c.Z)(this,e)}return(0,d.Z)(e,null,[{key:"create",value:function(t,n){return this.lastCreated&&t===this.lastCreated.scale&&n===this.lastFontFamily?this.lastCreated:(i=jt[t]?new Rt(jt[t](),t):e.createFromSampleData(e.createSampleData(n).data,t),this.lastFontFamily=n,this.lastCreated=i,i);var i}},{key:"createSampleData",value:function(e){var t=document.createElement("canvas"),n=t.getContext("2d");t.style.height="".concat(16,"px"),t.height=16,t.width=960,t.style.width="960px",n.fillStyle="#ffffff",n.font="bold ".concat(16,"px ",e),n.textBaseline="middle";var i,o=0,a=(0,r.Z)(Ot);try{for(a.s();!(i=a.n()).done;){var s=i.value;n.fillText(String.fromCharCode(s),o,8),o+=10}}catch(u){a.e(u)}finally{a.f()}return n.getImageData(0,0,960,16)}},{key:"createFromSampleData",value:function(t,n){if(61440!==t.length)throw new Error("Unexpected source in MinimapCharRenderer");var i=e._downsample(t,n);return new Rt(i,n)}},{key:"_downsampleChar",value:function(e,t,n,i,r){for(var o=1*r,a=2*r,s=i,u=0,l=0;l<a;l++)for(var c=l/a*16,d=(l+1)/a*16,h=0;h<o;h++){for(var f=h/o*10,p=(h+1)/o*10,g=0,v=0,m=c;m<d;m++)for(var _=t+3840*Math.floor(m),y=1-(m-Math.floor(m)),b=f;b<p;b++){var w=1-(b-Math.floor(b)),C=_+4*Math.floor(b),k=w*y;v+=k,g+=e[C]*e[C+3]/255*k}var S=g/v;u=Math.max(u,S),n[s++]=(0,At.K)(S)}return u}},{key:"_downsample",value:function(e,t){for(var n=2*t*1*t,i=96*n,r=new Uint8ClampedArray(i),o=0,a=0,s=0,u=0;u<96;u++)s=Math.max(s,this._downsampleChar(e,a,r,o,t)),o+=n,a+=40;if(s>0)for(var l=255/s,c=0;c<i;c++)r[c]*=l;return r}}]),e}(),Bt=n(46502),zt=function(){function e(t,n,i){var r=this;(0,c.Z)(this,e);var o=t.options,a=o.get(125),s=o.get(127),u=s.minimap,l=o.get(40),d=o.get(61);this.renderMinimap=u.renderMinimap,this.size=d.size,this.minimapHeightIsEditorHeight=u.minimapHeightIsEditorHeight,this.scrollBeyondLastLine=o.get(91),this.showSlider=d.showSlider,this.pixelRatio=a,this.typicalHalfwidthCharacterWidth=l.typicalHalfwidthCharacterWidth,this.lineHeight=o.get(55),this.minimapLeft=u.minimapLeft,this.minimapWidth=u.minimapWidth,this.minimapHeight=s.height,this.canvasInnerWidth=u.minimapCanvasInnerWidth,this.canvasInnerHeight=u.minimapCanvasInnerHeight,this.canvasOuterWidth=u.minimapCanvasOuterWidth,this.canvasOuterHeight=u.minimapCanvasOuterHeight,this.isSampling=u.minimapIsSampling,this.editorHeight=s.height,this.fontScale=u.minimapScale,this.minimapLineHeight=u.minimapLineHeight,this.minimapCharWidth=1*this.fontScale,this.charRenderer=(0,Pt.I)((function(){return Ht.create(r.fontScale,l.fontFamily)})),this.backgroundColor=e._getMinimapBackground(n,i)}return(0,d.Z)(e,[{key:"equals",value:function(e){return this.renderMinimap===e.renderMinimap&&this.size===e.size&&this.minimapHeightIsEditorHeight===e.minimapHeightIsEditorHeight&&this.scrollBeyondLastLine===e.scrollBeyondLastLine&&this.showSlider===e.showSlider&&this.pixelRatio===e.pixelRatio&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.lineHeight===e.lineHeight&&this.minimapLeft===e.minimapLeft&&this.minimapWidth===e.minimapWidth&&this.minimapHeight===e.minimapHeight&&this.canvasInnerWidth===e.canvasInnerWidth&&this.canvasInnerHeight===e.canvasInnerHeight&&this.canvasOuterWidth===e.canvasOuterWidth&&this.canvasOuterHeight===e.canvasOuterHeight&&this.isSampling===e.isSampling&&this.editorHeight===e.editorHeight&&this.fontScale===e.fontScale&&this.minimapLineHeight===e.minimapLineHeight&&this.minimapCharWidth===e.minimapCharWidth&&this.backgroundColor&&this.backgroundColor.equals(e.backgroundColor)}}],[{key:"_getMinimapBackground",value:function(e,t){var n=e.getColor(It.kV);return n?new Dt(n.rgba.r,n.rgba.g,n.rgba.b,n.rgba.a):t.getColor(2)}}]),e}(),Wt=function(){function e(t,n,i,r,o,a,s,u){(0,c.Z)(this,e),this.scrollTop=t,this.scrollHeight=n,this.sliderNeeded=i,this._computedSliderRatio=r,this.sliderTop=o,this.sliderHeight=a,this.startLineNumber=s,this.endLineNumber=u}return(0,d.Z)(e,[{key:"getDesiredScrollTopFromDelta",value:function(e){return Math.round(this.scrollTop+e/this._computedSliderRatio)}},{key:"getDesiredScrollTopFromTouchLocation",value:function(e){return Math.round((e-this.sliderHeight/2)/this._computedSliderRatio)}}],[{key:"create",value:function(t,n,i,r,o,a,s,u,l,c,d){var h,f,p=t.pixelRatio,g=t.minimapLineHeight,v=Math.floor(t.canvasInnerHeight/g),m=t.lineHeight;if(t.minimapHeightIsEditorHeight){var _=u*t.lineHeight+(t.scrollBeyondLastLine?o-t.lineHeight:0),y=Math.max(1,Math.floor(o*o/_)),b=Math.max(0,t.minimapHeight-y),w=b/(c-o),C=l*w,k=b>0,S=Math.floor(t.canvasInnerHeight/t.minimapLineHeight);return new e(l,c,k,w,C,y,1,Math.min(s,S))}if(a&&i!==s){var x=i-n+1;h=Math.floor(x*g/p)}else{var L=o/m;h=Math.floor(L*g/p)}f=t.scrollBeyondLastLine?(s-1)*g/p:Math.max(0,s*g/p-h);var E=(f=Math.min(t.minimapHeight-h,f))/(c-o),D=l*E,N=0;t.scrollBeyondLastLine&&(N=o/m-1);if(v>=s+N){return new e(l,c,f>0,E,D,h,1,s)}var M=Math.max(1,Math.floor(n-D*p/g));return d&&d.scrollHeight===c&&(d.scrollTop>l&&(M=Math.min(M,d.startLineNumber)),d.scrollTop<l&&(M=Math.max(M,d.startLineNumber))),new e(l,c,!0,E,(n-M+(l-r)/m)*g/p,h,M,Math.min(s,M+v-1))}}]),e}(),Vt=function(){function e(t){(0,c.Z)(this,e),this.dy=t}return(0,d.Z)(e,[{key:"onContentChanged",value:function(){this.dy=-1}},{key:"onTokensChanged",value:function(){this.dy=-1}}]),e}();Vt.INVALID=new Vt(-1);var Yt=function(){function e(t,n,i){(0,c.Z)(this,e),this.renderedLayout=t,this._imageData=n,this._renderedLines=new Je((function(){return Vt.INVALID})),this._renderedLines._set(t.startLineNumber,i)}return(0,d.Z)(e,[{key:"linesEquals",value:function(e){if(!this.scrollEquals(e))return!1;for(var t=this._renderedLines._get().lines,n=0,i=t.length;n<i;n++)if(-1===t[n].dy)return!1;return!0}},{key:"scrollEquals",value:function(e){return this.renderedLayout.startLineNumber===e.startLineNumber&&this.renderedLayout.endLineNumber===e.endLineNumber}},{key:"_get",value:function(){var e=this._renderedLines._get();return{imageData:this._imageData,rendLineNumberStart:e.rendLineNumberStart,lines:e.lines}}},{key:"onLinesChanged",value:function(e,t){return this._renderedLines.onLinesChanged(e,t)}},{key:"onLinesDeleted",value:function(e,t){this._renderedLines.onLinesDeleted(e,t)}},{key:"onLinesInserted",value:function(e,t){this._renderedLines.onLinesInserted(e,t)}},{key:"onTokensChanged",value:function(e){return this._renderedLines.onTokensChanged(e)}}]),e}(),Ut=function(){function e(t,n,i,r){(0,c.Z)(this,e),this._backgroundFillData=e._createBackgroundFillData(n,i,r),this._buffers=[t.createImageData(n,i),t.createImageData(n,i)],this._lastUsedBuffer=0}return(0,d.Z)(e,[{key:"getBuffer",value:function(){this._lastUsedBuffer=1-this._lastUsedBuffer;var e=this._buffers[this._lastUsedBuffer];return e.data.set(this._backgroundFillData),e}}],[{key:"_createBackgroundFillData",value:function(e,t,n){for(var i=n.r,r=n.g,o=n.b,a=new Uint8ClampedArray(e*t*4),s=0,u=0;u<t;u++)for(var l=0;l<e;l++)a[s]=i,a[s+1]=r,a[s+2]=o,a[s+3]=255,s+=4;return a}}]),e}(),Kt=function(){function e(t,n){(0,c.Z)(this,e),this.samplingRatio=t,this.minimapLines=n}return(0,d.Z)(e,[{key:"modelLineToMinimapLine",value:function(e){return Math.min(this.minimapLines.length,Math.max(1,Math.round(e/this.samplingRatio)))}},{key:"modelLineRangeToMinimapLineRange",value:function(e,t){for(var n=this.modelLineToMinimapLine(e)-1;n>0&&this.minimapLines[n-1]>=e;)n--;for(var i=this.modelLineToMinimapLine(t)-1;i+1<this.minimapLines.length&&this.minimapLines[i+1]<=t;)i++;if(n===i){var r=this.minimapLines[n];if(r<e||r>t)return null}return[n+1,i+1]}},{key:"decorationLineRangeToMinimapLineRange",value:function(e,t){var n=this.modelLineToMinimapLine(e),i=this.modelLineToMinimapLine(t);return e!==t&&i===n&&(i===this.minimapLines.length?n>1&&n--:i++),[n,i]}},{key:"onLinesDeleted",value:function(e){for(var t=e.toLineNumber-e.fromLineNumber+1,n=this.minimapLines.length,i=0,r=this.minimapLines.length-1;r>=0&&!(this.minimapLines[r]<e.fromLineNumber);r--)this.minimapLines[r]<=e.toLineNumber?(this.minimapLines[r]=Math.max(1,e.fromLineNumber-1),n=Math.min(n,r),i=Math.max(i,r)):this.minimapLines[r]-=t;return[n,i]}},{key:"onLinesInserted",value:function(e){for(var t=e.toLineNumber-e.fromLineNumber+1,n=this.minimapLines.length-1;n>=0&&!(this.minimapLines[n]<e.fromLineNumber);n--)this.minimapLines[n]+=t}}],[{key:"compute",value:function(t,n,i){if(0===t.renderMinimap||!t.isSampling)return[null,[]];var r=t.pixelRatio,o=t.lineHeight,a=t.scrollBeyondLastLine,s=ee.gk.computeContainedMinimapLineCount({viewLineCount:n,scrollBeyondLastLine:a,height:t.editorHeight,lineHeight:o,pixelRatio:r}).minimapLineCount,u=n/s,l=u/2;if(!i||0===i.minimapLines.length){var c=[];if(c[0]=1,s>1){for(var d=0,h=s-1;d<h;d++)c[d]=Math.round(d*u+l);c[s-1]=n}return[new e(u,c),[]]}for(var f=i.minimapLines,p=f.length,g=[],v=0,m=0,_=1,y=[],b=null,w=0;w<s;w++){for(var C=Math.max(_,Math.round(w*u)),k=Math.max(C,Math.round((w+1)*u));v<p&&f[v]<C;){if(y.length<10){var S=v+1+m;b&&"deleted"===b.type&&b._oldIndex===v-1?b.deleteToLineNumber++:(b={type:"deleted",_oldIndex:v,deleteFromLineNumber:S,deleteToLineNumber:S},y.push(b)),m--}v++}var x=void 0;if(v<p&&f[v]<=k)x=f[v],v++;else if(x=0===w?1:w+1===s?n:Math.round(w*u+l),y.length<10){var L=v+1+m;b&&"inserted"===b.type&&b._i===w-1?b.insertToLineNumber++:(b={type:"inserted",_i:w,insertFromLineNumber:L,insertToLineNumber:L},y.push(b)),m++}g[w]=x,_=x}if(y.length<10)for(;v<p;){var E=v+1+m;b&&"deleted"===b.type&&b._oldIndex===v-1?b.deleteToLineNumber++:(b={type:"deleted",_oldIndex:v,deleteFromLineNumber:E,deleteToLineNumber:E},y.push(b)),m--,v++}else y=[{type:"flush"}];return[new e(u,g),y]}}]),e}(),qt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var r;(0,c.Z)(this,n),(r=t.call(this,e)).tokensColorTracker=Mt.getInstance(),r._selections=[],r._minimapSelections=null,r.options=new zt(r._context.configuration,r._context.theme,r.tokensColorTracker);var a=Kt.compute(r.options,r._context.model.getLineCount(),null),s=(0,i.Z)(a,1)[0];return r._samplingState=s,r._shouldCheckSampling=!1,r._actual=new Gt(e.theme,(0,o.Z)(r)),r}return(0,d.Z)(n,[{key:"dispose",value:function(){this._actual.dispose(),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"getDomNode",value:function(){return this._actual.getDomNode()}},{key:"_onOptionsMaybeChanged",value:function(){var e=new zt(this._context.configuration,this._context.theme,this.tokensColorTracker);return!this.options.equals(e)&&(this.options=e,this._recreateLineSampling(),this._actual.onDidChangeOptions(),!0)}},{key:"onConfigurationChanged",value:function(e){return this._onOptionsMaybeChanged()}},{key:"onCursorStateChanged",value:function(e){return this._selections=e.selections,this._minimapSelections=null,this._actual.onSelectionChanged()}},{key:"onDecorationsChanged",value:function(e){return!!e.affectsMinimap&&this._actual.onDecorationsChanged()}},{key:"onFlushed",value:function(e){return this._samplingState&&(this._shouldCheckSampling=!0),this._actual.onFlushed()}},{key:"onLinesChanged",value:function(e){if(this._samplingState){var t=this._samplingState.modelLineRangeToMinimapLineRange(e.fromLineNumber,e.toLineNumber);return!!t&&this._actual.onLinesChanged(t[0],t[1])}return this._actual.onLinesChanged(e.fromLineNumber,e.toLineNumber)}},{key:"onLinesDeleted",value:function(e){if(this._samplingState){var t=this._samplingState.onLinesDeleted(e),n=(0,i.Z)(t,2),r=n[0],o=n[1];return r<=o&&this._actual.onLinesChanged(r+1,o+1),this._shouldCheckSampling=!0,!0}return this._actual.onLinesDeleted(e.fromLineNumber,e.toLineNumber)}},{key:"onLinesInserted",value:function(e){return this._samplingState?(this._samplingState.onLinesInserted(e),this._shouldCheckSampling=!0,!0):this._actual.onLinesInserted(e.fromLineNumber,e.toLineNumber)}},{key:"onScrollChanged",value:function(e){return this._actual.onScrollChanged()}},{key:"onThemeChanged",value:function(e){return this._context.model.invalidateMinimapColorCache(),this._actual.onThemeChanged(),this._onOptionsMaybeChanged(),!0}},{key:"onTokensChanged",value:function(e){if(this._samplingState){var t,n=[],i=(0,r.Z)(e.ranges);try{for(i.s();!(t=i.n()).done;){var o=t.value,a=this._samplingState.modelLineRangeToMinimapLineRange(o.fromLineNumber,o.toLineNumber);a&&n.push({fromLineNumber:a[0],toLineNumber:a[1]})}}catch(s){i.e(s)}finally{i.f()}return!!n.length&&this._actual.onTokensChanged(n)}return this._actual.onTokensChanged(e.ranges)}},{key:"onTokensColorsChanged",value:function(e){return this._onOptionsMaybeChanged(),this._actual.onTokensColorsChanged()}},{key:"onZonesChanged",value:function(e){return this._actual.onZonesChanged()}},{key:"prepareRender",value:function(e){this._shouldCheckSampling&&(this._shouldCheckSampling=!1,this._recreateLineSampling())}},{key:"render",value:function(e){var t=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber;this._samplingState&&(t=this._samplingState.modelLineToMinimapLine(t),n=this._samplingState.modelLineToMinimapLine(n));var i={viewportContainsWhitespaceGaps:e.viewportData.whitespaceViewportData.length>0,scrollWidth:e.scrollWidth,scrollHeight:e.scrollHeight,viewportStartLineNumber:t,viewportEndLineNumber:n,viewportStartLineNumberVerticalOffset:e.getVerticalOffsetForLineNumber(t),scrollTop:e.scrollTop,scrollLeft:e.scrollLeft,viewportWidth:e.viewportWidth,viewportHeight:e.viewportHeight};this._actual.render(i)}},{key:"_recreateLineSampling",value:function(){this._minimapSelections=null;var e=Boolean(this._samplingState),t=Kt.compute(this.options,this._context.model.getLineCount(),this._samplingState),n=(0,i.Z)(t,2),o=n[0],a=n[1];if(this._samplingState=o,e&&this._samplingState){var s,u=(0,r.Z)(a);try{for(u.s();!(s=u.n()).done;){var l=s.value;switch(l.type){case"deleted":this._actual.onLinesDeleted(l.deleteFromLineNumber,l.deleteToLineNumber);break;case"inserted":this._actual.onLinesInserted(l.insertFromLineNumber,l.insertToLineNumber);break;case"flush":this._actual.onFlushed()}}}catch(c){u.e(c)}finally{u.f()}}}},{key:"getLineCount",value:function(){return this._samplingState?this._samplingState.minimapLines.length:this._context.model.getLineCount()}},{key:"getRealLineCount",value:function(){return this._context.model.getLineCount()}},{key:"getLineContent",value:function(e){return this._samplingState?this._context.model.getLineContent(this._samplingState.minimapLines[e-1]):this._context.model.getLineContent(e)}},{key:"getMinimapLinesRenderingData",value:function(e,t,n){if(this._samplingState){for(var i=[],r=0,o=t-e+1;r<o;r++)n[r]?i[r]=this._context.model.getViewLineData(this._samplingState.minimapLines[e+r-1]):i[r]=null;return i}return this._context.model.getMinimapLinesRenderingData(e,t,n).data}},{key:"getSelections",value:function(){if(null===this._minimapSelections)if(this._samplingState){this._minimapSelections=[];var e,t=(0,r.Z)(this._selections);try{for(t.s();!(e=t.n()).done;){var n=e.value,o=this._samplingState.decorationLineRangeToMinimapLineRange(n.startLineNumber,n.endLineNumber),a=(0,i.Z)(o,2),s=a[0],u=a[1];this._minimapSelections.push(new L.Y(s,n.startColumn,u,n.endColumn))}}catch(l){t.e(l)}finally{t.f()}}else this._minimapSelections=this._selections;return this._minimapSelections}},{key:"getMinimapDecorationsInViewport",value:function(e,t){var n;if(this._samplingState){var i=this._samplingState.minimapLines[e-1],o=this._samplingState.minimapLines[t-1];n=new fe.e(i,1,o,this._context.model.getLineMaxColumn(o))}else n=new fe.e(e,1,t,this._context.model.getLineMaxColumn(t));var a=this._context.model.getDecorationsInViewport(n);if(this._samplingState){var s,u=[],l=(0,r.Z)(a);try{for(l.s();!(s=l.n()).done;){var c=s.value;if(c.options.minimap){var d=c.range,h=this._samplingState.modelLineToMinimapLine(d.startLineNumber),f=this._samplingState.modelLineToMinimapLine(d.endLineNumber);u.push(new Tt.$l(new fe.e(h,d.startColumn,f,d.endColumn),c.options))}}}catch(p){l.e(p)}finally{l.f()}return u}return a}},{key:"getOptions",value:function(){return this._context.model.getTextModelOptions()}},{key:"revealLineNumber",value:function(e){this._samplingState&&(e=this._samplingState.minimapLines[e-1]),this._context.model.revealRange("mouse",!1,new fe.e(e,1,e,1),1,0)}},{key:"setScrollTop",value:function(e){this._context.model.setScrollPosition({scrollTop:e},1)}}]),n}(z),Gt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r;return(0,c.Z)(this,n),(r=t.call(this))._renderDecorations=!1,r._gestureInProgress=!1,r._theme=e,r._model=i,r._lastRenderData=null,r._buffers=null,r._selectionColor=r._theme.getColor(It.ov),r._domNode=(0,E.X)(document.createElement("div")),W.write(r._domNode,8),r._domNode.setClassName(r._getMinimapDomNodeClassName()),r._domNode.setPosition("absolute"),r._domNode.setAttribute("role","presentation"),r._domNode.setAttribute("aria-hidden","true"),r._shadow=(0,E.X)(document.createElement("div")),r._shadow.setClassName("minimap-shadow-hidden"),r._domNode.appendChild(r._shadow),r._canvas=(0,E.X)(document.createElement("canvas")),r._canvas.setPosition("absolute"),r._canvas.setLeft(0),r._domNode.appendChild(r._canvas),r._decorationsCanvas=(0,E.X)(document.createElement("canvas")),r._decorationsCanvas.setPosition("absolute"),r._decorationsCanvas.setClassName("minimap-decorations-layer"),r._decorationsCanvas.setLeft(0),r._domNode.appendChild(r._decorationsCanvas),r._slider=(0,E.X)(document.createElement("div")),r._slider.setPosition("absolute"),r._slider.setClassName("minimap-slider"),r._slider.setLayerHinting(!0),r._slider.setContain("strict"),r._domNode.appendChild(r._slider),r._sliderHorizontal=(0,E.X)(document.createElement("div")),r._sliderHorizontal.setPosition("absolute"),r._sliderHorizontal.setClassName("minimap-slider-horizontal"),r._slider.appendChild(r._sliderHorizontal),r._applyLayout(),r._mouseDownListener=_.addStandardDisposableListener(r._domNode.domNode,"mousedown",(function(e){if(e.preventDefault(),0!==r._model.options.renderMinimap&&r._lastRenderData)if("proportional"===r._model.options.size){var t=r._model.options.minimapLineHeight,n=r._model.options.canvasInnerHeight/r._model.options.canvasOuterHeight*e.browserEvent.offsetY,i=Math.floor(n/t)+r._lastRenderData.renderedLayout.startLineNumber;i=Math.min(i,r._model.getLineCount()),r._model.revealLineNumber(i)}else if(e.leftButton&&r._lastRenderData){var o=_.getDomNodePagePosition(r._slider.domNode),a=o.top+o.height/2;r._startSliderDragging(e.buttons,e.posx,a,e.posy,r._lastRenderData.renderedLayout)}})),r._sliderMouseMoveMonitor=new I.Z,r._sliderMouseDownListener=_.addStandardDisposableListener(r._slider.domNode,"mousedown",(function(e){e.preventDefault(),e.stopPropagation(),e.leftButton&&r._lastRenderData&&r._startSliderDragging(e.buttons,e.posx,e.posy,e.posy,r._lastRenderData.renderedLayout)})),r._gestureDisposable=N.o.addTarget(r._domNode.domNode),r._sliderTouchStartListener=_.addDisposableListener(r._domNode.domNode,N.t.Start,(function(e){e.preventDefault(),e.stopPropagation(),r._lastRenderData&&(r._slider.toggleClassName("active",!0),r._gestureInProgress=!0,r.scrollDueToTouchEvent(e))}),{passive:!1}),r._sliderTouchMoveListener=_.addDisposableListener(r._domNode.domNode,N.t.Change,(function(e){e.preventDefault(),e.stopPropagation(),r._lastRenderData&&r._gestureInProgress&&r.scrollDueToTouchEvent(e)}),{passive:!1}),r._sliderTouchEndListener=_.addStandardDisposableListener(r._domNode.domNode,N.t.End,(function(e){e.preventDefault(),e.stopPropagation(),r._gestureInProgress=!1,r._slider.toggleClassName("active",!1)})),r}return(0,d.Z)(n,[{key:"_startSliderDragging",value:function(e,t,n,i,r){var o=this;this._slider.toggleClassName("active",!0);var a=function(e,i){var a=Math.abs(i-t);if(D.ED&&a>140)o._model.setScrollTop(r.scrollTop);else{var s=e-n;o._model.setScrollTop(r.getDesiredScrollTopFromDelta(s))}};i!==n&&a(i,t),this._sliderMouseMoveMonitor.startMonitoring(this._slider.domNode,e,I.e,(function(e){return a(e.posy,e.posx)}),(function(){o._slider.toggleClassName("active",!1)}))}},{key:"scrollDueToTouchEvent",value:function(e){var t=this._domNode.domNode.getBoundingClientRect().top,n=this._lastRenderData.renderedLayout.getDesiredScrollTopFromTouchLocation(e.pageY-t);this._model.setScrollTop(n)}},{key:"dispose",value:function(){this._mouseDownListener.dispose(),this._sliderMouseMoveMonitor.dispose(),this._sliderMouseDownListener.dispose(),this._gestureDisposable.dispose(),this._sliderTouchStartListener.dispose(),this._sliderTouchMoveListener.dispose(),this._sliderTouchEndListener.dispose(),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"_getMinimapDomNodeClassName",value:function(){return"always"===this._model.options.showSlider?"minimap slider-always":"minimap slider-mouseover"}},{key:"getDomNode",value:function(){return this._domNode}},{key:"_applyLayout",value:function(){this._domNode.setLeft(this._model.options.minimapLeft),this._domNode.setWidth(this._model.options.minimapWidth),this._domNode.setHeight(this._model.options.minimapHeight),this._shadow.setHeight(this._model.options.minimapHeight),this._canvas.setWidth(this._model.options.canvasOuterWidth),this._canvas.setHeight(this._model.options.canvasOuterHeight),this._canvas.domNode.width=this._model.options.canvasInnerWidth,this._canvas.domNode.height=this._model.options.canvasInnerHeight,this._decorationsCanvas.setWidth(this._model.options.canvasOuterWidth),this._decorationsCanvas.setHeight(this._model.options.canvasOuterHeight),this._decorationsCanvas.domNode.width=this._model.options.canvasInnerWidth,this._decorationsCanvas.domNode.height=this._model.options.canvasInnerHeight,this._slider.setWidth(this._model.options.minimapWidth)}},{key:"_getBuffer",value:function(){return this._buffers||this._model.options.canvasInnerWidth>0&&this._model.options.canvasInnerHeight>0&&(this._buffers=new Ut(this._canvas.domNode.getContext("2d"),this._model.options.canvasInnerWidth,this._model.options.canvasInnerHeight,this._model.options.backgroundColor)),this._buffers?this._buffers.getBuffer():null}},{key:"onDidChangeOptions",value:function(){this._lastRenderData=null,this._buffers=null,this._applyLayout(),this._domNode.setClassName(this._getMinimapDomNodeClassName())}},{key:"onSelectionChanged",value:function(){return this._renderDecorations=!0,!0}},{key:"onDecorationsChanged",value:function(){return this._renderDecorations=!0,!0}},{key:"onFlushed",value:function(){return this._lastRenderData=null,!0}},{key:"onLinesChanged",value:function(e,t){return!!this._lastRenderData&&this._lastRenderData.onLinesChanged(e,t)}},{key:"onLinesDeleted",value:function(e,t){return this._lastRenderData&&this._lastRenderData.onLinesDeleted(e,t),!0}},{key:"onLinesInserted",value:function(e,t){return this._lastRenderData&&this._lastRenderData.onLinesInserted(e,t),!0}},{key:"onScrollChanged",value:function(){return this._renderDecorations=!0,!0}},{key:"onThemeChanged",value:function(){return this._selectionColor=this._theme.getColor(It.ov),this._renderDecorations=!0,!0}},{key:"onTokensChanged",value:function(e){return!!this._lastRenderData&&this._lastRenderData.onTokensChanged(e)}},{key:"onTokensColorsChanged",value:function(){return this._lastRenderData=null,this._buffers=null,!0}},{key:"onZonesChanged",value:function(){return this._lastRenderData=null,!0}},{key:"render",value:function(e){if(0===this._model.options.renderMinimap)return this._shadow.setClassName("minimap-shadow-hidden"),this._sliderHorizontal.setWidth(0),void this._sliderHorizontal.setHeight(0);e.scrollLeft+e.viewportWidth>=e.scrollWidth?this._shadow.setClassName("minimap-shadow-hidden"):this._shadow.setClassName("minimap-shadow-visible");var t=Wt.create(this._model.options,e.viewportStartLineNumber,e.viewportEndLineNumber,e.viewportStartLineNumberVerticalOffset,e.viewportHeight,e.viewportContainsWhitespaceGaps,this._model.getLineCount(),this._model.getRealLineCount(),e.scrollTop,e.scrollHeight,this._lastRenderData?this._lastRenderData.renderedLayout:null);this._slider.setDisplay(t.sliderNeeded?"block":"none"),this._slider.setTop(t.sliderTop),this._slider.setHeight(t.sliderHeight);var n=e.scrollLeft/this._model.options.typicalHalfwidthCharacterWidth,i=Math.min(this._model.options.minimapWidth,Math.round(n*this._model.options.minimapCharWidth/this._model.options.pixelRatio));this._sliderHorizontal.setLeft(i),this._sliderHorizontal.setWidth(this._model.options.minimapWidth-i),this._sliderHorizontal.setTop(0),this._sliderHorizontal.setHeight(t.sliderHeight),this.renderDecorations(t),this._lastRenderData=this.renderLines(t)}},{key:"renderDecorations",value:function(e){if(this._renderDecorations){this._renderDecorations=!1;var t=this._model.getSelections(),n=this._model.getMinimapDecorationsInViewport(e.startLineNumber,e.endLineNumber),i=this._model.options,r=i.canvasInnerWidth,o=i.canvasInnerHeight,a=this._model.options.minimapLineHeight,s=this._model.options.minimapCharWidth,u=this._model.getOptions().tabSize,l=this._decorationsCanvas.domNode.getContext("2d");l.clearRect(0,0,r,o);for(var c=new Map,d=0;d<t.length;d++)for(var h=t[d],f=h.startLineNumber;f<=h.endLineNumber;f++)this.renderDecorationOnLine(l,c,h,this._selectionColor,e,f,a,a,u,s);for(var p=0;p<n.length;p++){var g=n[p];if(g.options.minimap)for(var v=g.options.minimap.getColor(this._theme),m=g.range.startLineNumber;m<=g.range.endLineNumber;m++)switch(g.options.minimap.position){case Bt.F5.Inline:this.renderDecorationOnLine(l,c,g.range,v,e,m,a,a,u,s);continue;case Bt.F5.Gutter:var _=(m-e.startLineNumber)*a;this.renderDecoration(l,v,2,_,2,a);continue}}}}},{key:"renderDecorationOnLine",value:function(e,t,n,i,r,o,a,s,u,l){var c=(o-r.startLineNumber)*s;if(!(c+a<0||c>this._model.options.canvasInnerHeight)){var d=t.get(o),h=!d;if(!d){var f=this._model.getLineContent(o);d=[ee.y0];for(var p=1;p<f.length+1;p++){var g=f.charCodeAt(p-1),v=9===g?u*l:Re.K7(g)?2*l:l;d[p]=d[p-1]+v}t.set(o,d)}var m=n.startColumn,_=n.endColumn,y=n.startLineNumber,b=n.endLineNumber,w=y===o?d[m-1]:ee.y0,C=b>o?d.length-1:_-1;if(C>0){var k=d[C]-w||2;this.renderDecoration(e,i,w,c,k,a)}h&&this.renderLineHighlight(e,i,c,a)}}},{key:"renderLineHighlight",value:function(e,t,n,i){e.fillStyle=t&&t.transparent(.5).toString()||"",e.fillRect(ee.y0,n,e.canvas.width,i)}},{key:"renderDecoration",value:function(e,t,n,i,r,o){e.fillStyle=t&&t.toString()||"",e.fillRect(n,i,r,o)}},{key:"renderLines",value:function(e){var t=e.startLineNumber,r=e.endLineNumber,o=this._model.options.minimapLineHeight;if(this._lastRenderData&&this._lastRenderData.linesEquals(e)){var a=this._lastRenderData._get();return new Yt(e,a.imageData,a.lines)}var s=this._getBuffer();if(!s)return null;for(var u=n._renderUntouchedLines(s,t,r,o,this._lastRenderData),l=(0,i.Z)(u,3),c=l[0],d=l[1],h=l[2],f=this._model.getMinimapLinesRenderingData(t,r,h),p=this._model.getOptions().tabSize,g=this._model.options.backgroundColor,v=this._model.tokensColorTracker,m=v.backgroundIsLight(),_=this._model.options.renderMinimap,y=this._model.options.charRenderer(),b=this._model.options.fontScale,w=this._model.options.minimapCharWidth,C=(1===_?2:3)*b,k=o>C?Math.floor((o-C)/2):0,S=0,x=[],L=0,E=r-t+1;L<E;L++)h[L]&&n._renderLine(s,g,m,_,w,v,y,S,k,p,f[L],b,o),x[L]=new Vt(S),S+=o;var D=-1===c?0:c,N=(-1===d?s.height:d)-D;return this._canvas.domNode.getContext("2d").putImageData(s,0,0,0,D,s.width,N),new Yt(e,s,x)}}],[{key:"_renderUntouchedLines",value:function(e,t,n,i,r){var o=[];if(!r){for(var a=0,s=n-t+1;a<s;a++)o[a]=!0;return[-1,-1,o]}for(var u=r._get(),l=u.imageData.data,c=u.rendLineNumberStart,d=u.lines,h=d.length,f=e.width,p=e.data,g=(n-t+1)*i*f*4,v=-1,m=-1,_=-1,y=-1,b=-1,w=-1,C=0,k=t;k<=n;k++){var S=k-t,x=k-c,L=x>=0&&x<h?d[x].dy:-1;if(-1!==L){var E=L*f*4,D=(L+i)*f*4,N=C*f*4,M=(C+i)*f*4;y===E&&w===N?(y=D,w=M):(-1!==_&&(p.set(l.subarray(_,y),b),-1===v&&0===_&&_===b&&(v=y),-1===m&&y===g&&_===b&&(m=_)),_=E,y=D,b=N,w=M),o[S]=!1,C+=i}else o[S]=!0,C+=i}return-1!==_&&(p.set(l.subarray(_,y),b),-1===v&&0===_&&_===b&&(v=y),-1===m&&y===g&&_===b&&(m=_)),[-1===v?-1:v/(4*f),-1===m?-1:m/(4*f),o]}},{key:"_renderLine",value:function(e,t,n,i,r,o,a,s,u,l,c,d,h){for(var f=c.content,p=c.tokens,g=e.width-r,v=1===h,m=ee.y0,_=0,y=0,b=0,w=p.getCount();b<w;b++)for(var C=p.getEndOffset(b),k=p.getForeground(b),S=o.getColor(k);_<C;_++){if(m>g)return;var x=f.charCodeAt(_);if(9===x){var L=l-(_+y)%l;y+=L-1,m+=L*r}else if(32===x)m+=r;else for(var E=Re.K7(x)?2:1,D=0;D<E;D++)if(2===i?a.blockRenderChar(e,m,s+u,S,t,n,v):a.renderChar(e,m,s+u,x,S,t,d,n,v),(m+=r)>g)return}}}]),n}(w.JT);(0,je.Ic)((function(e,t){var n=e.getColor(It.kV);n&&t.addRule(".monaco-editor .minimap > canvas { opacity: ".concat(n.rgba.a,"; will-change: opacity; }"));var i=e.getColor(It.CA);i&&t.addRule(".monaco-editor .minimap-slider .minimap-slider-horizontal { background: ".concat(i,"; }"));var r=e.getColor(It.Xy);r&&t.addRule(".monaco-editor .minimap-slider:hover .minimap-slider-horizontal { background: ".concat(r,"; }"));var o=e.getColor(It.br);o&&t.addRule(".monaco-editor .minimap-slider.active .minimap-slider-horizontal { background: ".concat(o,"; }"));var a=e.getColor(It._w);a&&t.addRule(".monaco-editor .minimap-shadow-visible { box-shadow: ".concat(a," -6px 0 6px -6px inset; }"))}));var $t=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n);var r=(i=t.call(this,e))._context.configuration.options.get(127);return i._widgets={},i._verticalScrollbarWidth=r.verticalScrollbarWidth,i._minimapWidth=r.minimap.minimapWidth,i._horizontalScrollbarHeight=r.horizontalScrollbarHeight,i._editorHeight=r.height,i._editorWidth=r.width,i._domNode=(0,E.X)(document.createElement("div")),W.write(i._domNode,4),i._domNode.setClassName("overlayWidgets"),i}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this),this._widgets={}}},{key:"getDomNode",value:function(){return this._domNode}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options.get(127);return this._verticalScrollbarWidth=t.verticalScrollbarWidth,this._minimapWidth=t.minimap.minimapWidth,this._horizontalScrollbarHeight=t.horizontalScrollbarHeight,this._editorHeight=t.height,this._editorWidth=t.width,!0}},{key:"addWidget",value:function(e){var t=(0,E.X)(e.getDomNode());this._widgets[e.getId()]={widget:e,preference:null,domNode:t},t.setPosition("absolute"),t.setAttribute("widgetId",e.getId()),this._domNode.appendChild(t),this.setShouldRender()}},{key:"setWidgetPosition",value:function(e,t){var n=this._widgets[e.getId()];return n.preference!==t&&(n.preference=t,this.setShouldRender(),!0)}},{key:"removeWidget",value:function(e){var t=e.getId();if(this._widgets.hasOwnProperty(t)){var n=this._widgets[t].domNode.domNode;delete this._widgets[t],n.parentNode.removeChild(n),this.setShouldRender()}}},{key:"_renderWidget",value:function(e){var t=e.domNode;if(null!==e.preference)if(0===e.preference)t.setTop(0),t.setRight(2*this._verticalScrollbarWidth+this._minimapWidth);else if(1===e.preference){var n=t.domNode.clientHeight;t.setTop(this._editorHeight-n-2*this._horizontalScrollbarHeight),t.setRight(2*this._verticalScrollbarWidth+this._minimapWidth)}else 2===e.preference&&(t.setTop(0),t.domNode.style.right="50%");else t.unsetTop()}},{key:"prepareRender",value:function(e){}},{key:"render",value:function(e){this._domNode.setWidth(this._editorWidth);for(var t=Object.keys(this._widgets),n=0,i=t.length;n<i;n++){var r=t[n];this._renderWidget(this._widgets[r])}}}]),n}(z),Qt=n(89938),Xt=function(){function e(t,n){(0,c.Z)(this,e);var r=t.options;this.lineHeight=r.get(55),this.pixelRatio=r.get(125),this.overviewRulerLanes=r.get(70),this.renderBorder=r.get(69);var o=n.getColor(Fe.zw);this.borderColor=o?o.toString():null,this.hideCursor=r.get(48);var a=n.getColor(Fe.n0);this.cursorColor=a?a.transparent(.7).toString():null,this.themeType=n.type;var s=r.get(61),u=s.enabled,l=s.side,d=u?n.getColor(Fe.e_)||Nt.RW.getDefaultBackground():null;this.backgroundColor=null===d||"left"===l?null:Qt.Il.Format.CSS.formatHex(d);var h=r.get(127).overviewRuler;this.top=h.top,this.right=h.right,this.domWidth=h.width,this.domHeight=h.height,0===this.overviewRulerLanes?(this.canvasWidth=0,this.canvasHeight=0):(this.canvasWidth=this.domWidth*this.pixelRatio|0,this.canvasHeight=this.domHeight*this.pixelRatio|0);var f=this._initLanes(1,this.canvasWidth,this.overviewRulerLanes),p=(0,i.Z)(f,2),g=p[0],v=p[1];this.x=g,this.w=v}return(0,d.Z)(e,[{key:"_initLanes",value:function(e,t,n){var i=t-e;if(n>=3){var r=Math.floor(i/3),o=Math.floor(i/3),a=i-r-o,s=e+r;return[[0,e,s,e,e+r+a,e,s,e],[0,r,a,r+a,o,r+a+o,a+o,r+a+o]]}if(2===n){var u=Math.floor(i/2),l=i-u;return[[0,e,e,e,e+u,e,e,e],[0,u,u,u,l,u+l,u+l,u+l]]}return[[0,e,e,e,e,e,e,e],[0,i,i,i,i,i,i,i]]}},{key:"equals",value:function(e){return this.lineHeight===e.lineHeight&&this.pixelRatio===e.pixelRatio&&this.overviewRulerLanes===e.overviewRulerLanes&&this.renderBorder===e.renderBorder&&this.borderColor===e.borderColor&&this.hideCursor===e.hideCursor&&this.cursorColor===e.cursorColor&&this.themeType===e.themeType&&this.backgroundColor===e.backgroundColor&&this.top===e.top&&this.right===e.right&&this.domWidth===e.domWidth&&this.domHeight===e.domHeight&&this.canvasWidth===e.canvasWidth&&this.canvasHeight===e.canvasHeight}}]),e}(),Jt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this,e))._domNode=(0,E.X)(document.createElement("canvas")),i._domNode.setClassName("decorationsOverviewRuler"),i._domNode.setPosition("absolute"),i._domNode.setLayerHinting(!0),i._domNode.setContain("strict"),i._domNode.setAttribute("aria-hidden","true"),i._updateSettings(!1),i._tokensColorTrackerListener=Nt.RW.onDidChange((function(e){e.changedColorMap&&i._updateSettings(!0)})),i._cursorPositions=[],i}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this),this._tokensColorTrackerListener.dispose()}},{key:"_updateSettings",value:function(e){var t=new Xt(this._context.configuration,this._context.theme);return(!this._settings||!this._settings.equals(t))&&(this._settings=t,this._domNode.setTop(this._settings.top),this._domNode.setRight(this._settings.right),this._domNode.setWidth(this._settings.domWidth),this._domNode.setHeight(this._settings.domHeight),this._domNode.domNode.width=this._settings.canvasWidth,this._domNode.domNode.height=this._settings.canvasHeight,e&&this._render(),!0)}},{key:"onConfigurationChanged",value:function(e){return this._updateSettings(!1)}},{key:"onCursorStateChanged",value:function(e){this._cursorPositions=[];for(var t=0,n=e.selections.length;t<n;t++)this._cursorPositions[t]=e.selections[t].getPosition();return this._cursorPositions.sort(he.L.compare),!0}},{key:"onDecorationsChanged",value:function(e){return!!e.affectsOverviewRuler}},{key:"onFlushed",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return e.scrollHeightChanged}},{key:"onZonesChanged",value:function(e){return!0}},{key:"onThemeChanged",value:function(e){return this._context.model.invalidateOverviewRulerColorCache(),this._updateSettings(!1)}},{key:"getDomNode",value:function(){return this._domNode.domNode}},{key:"prepareRender",value:function(e){}},{key:"render",value:function(e){this._render()}},{key:"_render",value:function(){if(0!==this._settings.overviewRulerLanes){var e=this._settings.canvasWidth,t=this._settings.canvasHeight,n=this._settings.lineHeight,i=this._context.viewLayout,r=t/this._context.viewLayout.getScrollHeight(),o=this._context.model.getAllOverviewRulerDecorations(this._context.theme),a=6*this._settings.pixelRatio|0,s=a/2|0,u=this._domNode.domNode.getContext("2d");null===this._settings.backgroundColor?u.clearRect(0,0,e,t):(u.fillStyle=this._settings.backgroundColor,u.fillRect(0,0,e,t));var l=this._settings.x,c=this._settings.w,d=Object.keys(o);d.sort();for(var h=0,f=d.length;h<f;h++){var p=d[h],g=o[p];u.fillStyle=p;for(var v=0,m=0,_=0,y=0,b=g.length;y<b;y++){var w=g[3*y],C=g[3*y+1],k=g[3*y+2],S=i.getVerticalOffsetForLineNumber(C)*r|0,x=(i.getVerticalOffsetForLineNumber(k)+n)*r|0;if(x-S<a){var L=(S+x)/2|0;L<s?L=s:L+s>t&&(L=t-s),S=L-s,x=L+s}S>_+1||w!==v?(0!==y&&u.fillRect(l[v],m,c[v],_-m),v=w,m=S,_=x):x>_&&(_=x)}u.fillRect(l[v],m,c[v],_-m)}if(!this._settings.hideCursor&&this._settings.cursorColor){var E=2*this._settings.pixelRatio|0,D=E/2|0,N=this._settings.x[7],M=this._settings.w[7];u.fillStyle=this._settings.cursorColor;for(var T=-100,I=-100,O=0,A=this._cursorPositions.length;O<A;O++){var R=this._cursorPositions[O],P=i.getVerticalOffsetForLineNumber(R.lineNumber)*r|0;P<D?P=D:P+D>t&&(P=t-D);var Z=P-D,F=Z+E;Z>I+1?(0!==O&&u.fillRect(N,T,M,I-T),T=Z,I=F):F>I&&(I=F)}u.fillRect(N,T,M,I-T)}this._settings.renderBorder&&this._settings.borderColor&&this._settings.overviewRulerLanes>0&&(u.beginPath(),u.lineWidth=1,u.strokeStyle=this._settings.borderColor,u.moveTo(0,0),u.lineTo(0,t),u.stroke(),u.moveTo(0,0),u.lineTo(e,0),u.stroke())}else this._domNode.setBackgroundColor(this._settings.backgroundColor?this._settings.backgroundColor:"")}}]),n}(z),en=n(32110),tn=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r;(0,c.Z)(this,n),(r=t.call(this))._context=e;var a=r._context.configuration.options;return r._domNode=(0,E.X)(document.createElement("canvas")),r._domNode.setClassName(i),r._domNode.setPosition("absolute"),r._domNode.setLayerHinting(!0),r._domNode.setContain("strict"),r._zoneManager=new en.Tj((function(e){return r._context.viewLayout.getVerticalOffsetForLineNumber(e)})),r._zoneManager.setDOMWidth(0),r._zoneManager.setDOMHeight(0),r._zoneManager.setOuterHeight(r._context.viewLayout.getScrollHeight()),r._zoneManager.setLineHeight(a.get(55)),r._zoneManager.setPixelRatio(a.get(125)),r._context.addEventHandler((0,o.Z)(r)),r}return(0,d.Z)(n,[{key:"dispose",value:function(){this._context.removeEventHandler(this),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options;return e.hasChanged(55)&&(this._zoneManager.setLineHeight(t.get(55)),this._render()),e.hasChanged(125)&&(this._zoneManager.setPixelRatio(t.get(125)),this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render()),!0}},{key:"onFlushed",value:function(e){return this._render(),!0}},{key:"onScrollChanged",value:function(e){return e.scrollHeightChanged&&(this._zoneManager.setOuterHeight(e.scrollHeight),this._render()),!0}},{key:"onZonesChanged",value:function(e){return this._render(),!0}},{key:"getDomNode",value:function(){return this._domNode.domNode}},{key:"setLayout",value:function(e){this._domNode.setTop(e.top),this._domNode.setRight(e.right);var t=!1;t=this._zoneManager.setDOMWidth(e.width)||t,(t=this._zoneManager.setDOMHeight(e.height)||t)&&(this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render())}},{key:"setZones",value:function(e){this._zoneManager.setZones(e),this._render()}},{key:"_render",value:function(){if(0===this._zoneManager.getOuterHeight())return!1;var e=this._zoneManager.getCanvasWidth(),t=this._zoneManager.getCanvasHeight(),n=this._zoneManager.resolveColorZones(),i=this._zoneManager.getId2Color(),r=this._domNode.domNode.getContext("2d");return r.clearRect(0,0,e,t),n.length>0&&this._renderOneLane(r,n,i,e),!0}},{key:"_renderOneLane",value:function(e,t,n,i){var o,a=0,s=0,u=0,l=(0,r.Z)(t);try{for(l.s();!(o=l.n()).done;){var c=o.value,d=c.colorId,h=c.from,f=c.to;d!==a?(e.fillRect(0,s,i,u-s),a=d,e.fillStyle=n[a],s=h,u=f):u>=h?u=Math.max(u,f):(e.fillRect(0,s,i,u-s),s=h,u=f)}}catch(p){l.e(p)}finally{l.f()}e.fillRect(0,s,i,u-s)}}]),n}(B),nn=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n),(i=t.call(this,e)).domNode=(0,E.X)(document.createElement("div")),i.domNode.setAttribute("role","presentation"),i.domNode.setAttribute("aria-hidden","true"),i.domNode.setClassName("view-rulers"),i._renderedRulers=[];var r=i._context.configuration.options;return i._rulers=r.get(88),i._typicalHalfwidthCharacterWidth=r.get(40).typicalHalfwidthCharacterWidth,i}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options;return this._rulers=t.get(88),this._typicalHalfwidthCharacterWidth=t.get(40).typicalHalfwidthCharacterWidth,!0}},{key:"onScrollChanged",value:function(e){return e.scrollHeightChanged}},{key:"prepareRender",value:function(e){}},{key:"_ensureRulersCount",value:function(){var e=this._renderedRulers.length,t=this._rulers.length;if(e!==t)if(e<t)for(var n=this._context.model.getTextModelOptions().tabSize,i=t-e;i>0;){var r=(0,E.X)(document.createElement("div"));r.setClassName("view-ruler"),r.setWidth(n),this.domNode.appendChild(r),this._renderedRulers.push(r),i--}else for(var o=e-t;o>0;){var a=this._renderedRulers.pop();this.domNode.removeChild(a),o--}}},{key:"render",value:function(e){this._ensureRulersCount();for(var t=0,n=this._rulers.length;t<n;t++){var i=this._renderedRulers[t],r=this._rulers[t];i.setBoxShadow(r.color?"1px 0 0 0 ".concat(r.color," inset"):""),i.setHeight(Math.min(e.scrollHeight,1e6)),i.setLeft(r.column*this._typicalHalfwidthCharacterWidth)}}}]),n}(z);(0,je.Ic)((function(e,t){var n=e.getColor(Fe.zk);n&&t.addRule(".monaco-editor .view-ruler { box-shadow: 1px 0 0 0 ".concat(n," inset; }"))}));var rn=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n),(i=t.call(this,e))._scrollTop=0,i._width=0,i._updateWidth(),i._shouldShow=!1;var r=i._context.configuration.options.get(89);return i._useShadows=r.useShadows,i._domNode=(0,E.X)(document.createElement("div")),i._domNode.setAttribute("role","presentation"),i._domNode.setAttribute("aria-hidden","true"),i}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"_updateShouldShow",value:function(){var e=this._useShadows&&this._scrollTop>0;return this._shouldShow!==e&&(this._shouldShow=e,!0)}},{key:"getDomNode",value:function(){return this._domNode}},{key:"_updateWidth",value:function(){var e=this._context.configuration.options.get(127);0===e.minimap.renderMinimap||e.minimap.minimapWidth>0&&0===e.minimap.minimapLeft?this._width=e.width:this._width=e.width-e.minimap.minimapWidth-e.verticalScrollbarWidth}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options.get(89);return this._useShadows=t.useShadows,this._updateWidth(),this._updateShouldShow(),!0}},{key:"onScrollChanged",value:function(e){return this._scrollTop=e.scrollTop,this._updateShouldShow()}},{key:"prepareRender",value:function(e){}},{key:"render",value:function(e){this._domNode.setWidth(this._width),this._domNode.setClassName(this._shouldShow?"scroll-decoration":"")}}]),n}(z);(0,je.Ic)((function(e,t){var n=e.getColor(It._w);n&&t.addRule(".monaco-editor .scroll-decoration { box-shadow: ".concat(n," 0 6px 6px -6px inset; }"))}));var on=(0,d.Z)((function e(t){(0,c.Z)(this,e),this.left=t.left,this.width=t.width,this.startStyle=null,this.endStyle=null})),an=(0,d.Z)((function e(t,n){(0,c.Z)(this,e),this.lineNumber=t,this.ranges=n}));function sn(e){return new on(e)}function un(e){return new an(e.lineNumber,e.ranges.map(sn))}var ln=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n),(i=t.call(this))._previousFrameVisibleRangesWithStyle=[],i._context=e;var r=i._context.configuration.options;return i._lineHeight=r.get(55),i._roundedSelection=r.get(87),i._typicalHalfwidthCharacterWidth=r.get(40).typicalHalfwidthCharacterWidth,i._selections=[],i._renderResult=null,i._context.addEventHandler((0,o.Z)(i)),i}return(0,d.Z)(n,[{key:"dispose",value:function(){this._context.removeEventHandler(this),this._renderResult=null,(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options;return this._lineHeight=t.get(55),this._roundedSelection=t.get(87),this._typicalHalfwidthCharacterWidth=t.get(40).typicalHalfwidthCharacterWidth,!0}},{key:"onCursorStateChanged",value:function(e){return this._selections=e.selections.slice(0),!0}},{key:"onDecorationsChanged",value:function(e){return!0}},{key:"onFlushed",value:function(e){return!0}},{key:"onLinesChanged",value:function(e){return!0}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return e.scrollTopChanged}},{key:"onZonesChanged",value:function(e){return!0}},{key:"_visibleRangesHaveGaps",value:function(e){for(var t=0,n=e.length;t<n;t++){if(e[t].ranges.length>1)return!0}return!1}},{key:"_enrichVisibleRangesWithStyle",value:function(e,t,n){var i=this._typicalHalfwidthCharacterWidth/4,r=null,o=null;if(n&&n.length>0&&t.length>0){var a=t[0].lineNumber;if(a===e.startLineNumber)for(var s=0;!r&&s<n.length;s++)n[s].lineNumber===a&&(r=n[s].ranges[0]);var u=t[t.length-1].lineNumber;if(u===e.endLineNumber)for(var l=n.length-1;!o&&l>=0;l--)n[l].lineNumber===u&&(o=n[l].ranges[0]);r&&!r.startStyle&&(r=null),o&&!o.startStyle&&(o=null)}for(var c=0,d=t.length;c<d;c++){var h=t[c].ranges[0],f=h.left,p=h.left+h.width,g={top:0,bottom:0},v={top:0,bottom:0};if(c>0){var m=t[c-1].ranges[0].left,_=t[c-1].ranges[0].left+t[c-1].ranges[0].width;cn(f-m)<i?g.top=2:f>m&&(g.top=1),cn(p-_)<i?v.top=2:m<p&&p<_&&(v.top=1)}else r&&(g.top=r.startStyle.top,v.top=r.endStyle.top);if(c+1<d){var y=t[c+1].ranges[0].left,b=t[c+1].ranges[0].left+t[c+1].ranges[0].width;cn(f-y)<i?g.bottom=2:y<f&&f<b&&(g.bottom=1),cn(p-b)<i?v.bottom=2:p<b&&(v.bottom=1)}else o&&(g.bottom=o.startStyle.bottom,v.bottom=o.endStyle.bottom);h.startStyle=g,h.endStyle=v}}},{key:"_getVisibleRangesWithStyle",value:function(e,t,n){var i=(t.linesVisibleRangesForRange(e,!0)||[]).map(un);return!this._visibleRangesHaveGaps(i)&&this._roundedSelection&&this._enrichVisibleRangesWithStyle(t.visibleRange,i,n),i}},{key:"_createSelectionPiece",value:function(e,t,n,i,r){return'<div class="cslr '+n+'" style="top:'+e.toString()+"px;left:"+i.toString()+"px;width:"+r.toString()+"px;height:"+t+'px;"></div>'}},{key:"_actualRenderOneSelection",value:function(e,t,i,r){if(0!==r.length)for(var o=!!r[0].ranges[0].startStyle,a=this._lineHeight.toString(),s=(this._lineHeight-1).toString(),u=r[0].lineNumber,l=r[r.length-1].lineNumber,c=0,d=r.length;c<d;c++){for(var h=r[c],f=h.lineNumber,p=f-t,g=i&&(f===l||f===u)?s:a,v=i&&f===u?1:0,m="",_="",y=0,b=h.ranges.length;y<b;y++){var w=h.ranges[y];if(o){var C=w.startStyle,k=w.endStyle;if(1===C.top||1===C.bottom){m+=this._createSelectionPiece(v,g,n.SELECTION_CLASS_NAME,w.left-n.ROUNDED_PIECE_WIDTH,n.ROUNDED_PIECE_WIDTH);var S=n.EDITOR_BACKGROUND_CLASS_NAME;1===C.top&&(S+=" "+n.SELECTION_TOP_RIGHT),1===C.bottom&&(S+=" "+n.SELECTION_BOTTOM_RIGHT),m+=this._createSelectionPiece(v,g,S,w.left-n.ROUNDED_PIECE_WIDTH,n.ROUNDED_PIECE_WIDTH)}if(1===k.top||1===k.bottom){m+=this._createSelectionPiece(v,g,n.SELECTION_CLASS_NAME,w.left+w.width,n.ROUNDED_PIECE_WIDTH);var x=n.EDITOR_BACKGROUND_CLASS_NAME;1===k.top&&(x+=" "+n.SELECTION_TOP_LEFT),1===k.bottom&&(x+=" "+n.SELECTION_BOTTOM_LEFT),m+=this._createSelectionPiece(v,g,x,w.left+w.width,n.ROUNDED_PIECE_WIDTH)}}var L=n.SELECTION_CLASS_NAME;if(o){var E=w.startStyle,D=w.endStyle;0===E.top&&(L+=" "+n.SELECTION_TOP_LEFT),0===E.bottom&&(L+=" "+n.SELECTION_BOTTOM_LEFT),0===D.top&&(L+=" "+n.SELECTION_TOP_RIGHT),0===D.bottom&&(L+=" "+n.SELECTION_BOTTOM_RIGHT)}_+=this._createSelectionPiece(v,g,L,w.left,w.width)}e[p][0]+=m,e[p][1]+=_}}},{key:"prepareRender",value:function(e){for(var t=[],n=e.visibleRange.startLineNumber,r=e.visibleRange.endLineNumber,o=n;o<=r;o++){t[o-n]=["",""]}for(var a=[],s=0,u=this._selections.length;s<u;s++){var l=this._selections[s];if(l.isEmpty())a[s]=null;else{var c=this._getVisibleRangesWithStyle(l,e,this._previousFrameVisibleRangesWithStyle[s]);a[s]=c,this._actualRenderOneSelection(t,n,this._selections.length>1,c)}}this._previousFrameVisibleRangesWithStyle=a,this._renderResult=t.map((function(e){var t=(0,i.Z)(e,2);return t[0]+t[1]}))}},{key:"render",value:function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]}}]),n}(Ze);function cn(e){return e<0?-e:e}ln.SELECTION_CLASS_NAME="selected-text",ln.SELECTION_TOP_LEFT="top-left-radius",ln.SELECTION_BOTTOM_LEFT="bottom-left-radius",ln.SELECTION_TOP_RIGHT="top-right-radius",ln.SELECTION_BOTTOM_RIGHT="bottom-right-radius",ln.EDITOR_BACKGROUND_CLASS_NAME="monaco-editor-background",ln.ROUNDED_PIECE_WIDTH=10,(0,je.Ic)((function(e,t){var n=e.getColor(It.hE);n&&t.addRule(".monaco-editor .focused .selected-text { background-color: ".concat(n,"; }"));var i=e.getColor(It.ES);i&&t.addRule(".monaco-editor .selected-text { background-color: ".concat(i,"; }"));var r=e.getColor(It.yb);r&&!r.isTransparent()&&t.addRule(".monaco-editor .view-line span.inline-selected-text { color: ".concat(r,"; }"))}));var dn=(0,d.Z)((function e(t,n,i,r,o,a){(0,c.Z)(this,e),this.top=t,this.left=n,this.width=i,this.height=r,this.textContent=o,this.textContentClassName=a})),hn=function(){function e(t){(0,c.Z)(this,e),this._context=t;var n=this._context.configuration.options,i=n.get(40);this._cursorStyle=n.get(22),this._lineHeight=n.get(55),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(n.get(25),this._typicalHalfwidthCharacterWidth),this._isVisible=!0,this._domNode=(0,E.X)(document.createElement("div")),this._domNode.setClassName("cursor ".concat(We.S)),this._domNode.setHeight(this._lineHeight),this._domNode.setTop(0),this._domNode.setLeft(0),k.V.applyFontInfo(this._domNode,i),this._domNode.setDisplay("none"),this._position=new he.L(1,1),this._lastRenderedContent="",this._renderData=null}return(0,d.Z)(e,[{key:"getDomNode",value:function(){return this._domNode}},{key:"getPosition",value:function(){return this._position}},{key:"show",value:function(){this._isVisible||(this._domNode.setVisibility("inherit"),this._isVisible=!0)}},{key:"hide",value:function(){this._isVisible&&(this._domNode.setVisibility("hidden"),this._isVisible=!1)}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options,n=t.get(40);return this._cursorStyle=t.get(22),this._lineHeight=t.get(55),this._typicalHalfwidthCharacterWidth=n.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(25),this._typicalHalfwidthCharacterWidth),k.V.applyFontInfo(this._domNode,n),!0}},{key:"onCursorPositionChanged",value:function(e){return this._position=e,!0}},{key:"_prepareRender",value:function(e){var t="";if(this._cursorStyle===ee.d2.Line||this._cursorStyle===ee.d2.LineThin){var n,i=e.visibleRangeForPosition(this._position);if(!i||i.outsideRenderedLine)return null;if(this._cursorStyle===ee.d2.Line){if((n=_.computeScreenAwareSize(this._lineCursorWidth>0?this._lineCursorWidth:2))>2){var r=this._context.model.getLineContent(this._position.lineNumber),o=Re.vH(r,this._position.column-1);t=r.substr(this._position.column-1,o)}}else n=_.computeScreenAwareSize(1);var a=i.left;n>=2&&a>=1&&(a-=1);var s=e.getVerticalOffsetForLineNumber(this._position.lineNumber)-e.bigNumbersDelta;return new dn(s,a,n,this._lineHeight,t,"")}var u=this._context.model.getLineContent(this._position.lineNumber),l=Re.vH(u,this._position.column-1),c=e.linesVisibleRangesForRange(new fe.e(this._position.lineNumber,this._position.column,this._position.lineNumber,this._position.column+l),!1);if(!c||0===c.length)return null;var d=c[0];if(d.outsideRenderedLine||0===d.ranges.length)return null;var h=d.ranges[0],f=h.width<1?this._typicalHalfwidthCharacterWidth:h.width,p="";if(this._cursorStyle===ee.d2.Block){var g=this._context.model.getViewLineData(this._position.lineNumber);t=u.substr(this._position.column-1,l);var v=g.tokens.findTokenIndexAtOffset(this._position.column-1);p=g.tokens.getClassName(v)}var m=e.getVerticalOffsetForLineNumber(this._position.lineNumber)-e.bigNumbersDelta,y=this._lineHeight;return this._cursorStyle!==ee.d2.Underline&&this._cursorStyle!==ee.d2.UnderlineThin||(m+=this._lineHeight-2,y=2),new dn(m,h.left,f,y,t,p)}},{key:"prepareRender",value:function(e){this._renderData=this._prepareRender(e)}},{key:"render",value:function(e){return this._renderData?(this._lastRenderedContent!==this._renderData.textContent&&(this._lastRenderedContent=this._renderData.textContent,this._domNode.domNode.textContent=this._lastRenderedContent),this._domNode.setClassName("cursor ".concat(We.S," ").concat(this._renderData.textContentClassName)),this._domNode.setDisplay("block"),this._domNode.setTop(this._renderData.top),this._domNode.setLeft(this._renderData.left),this._domNode.setWidth(this._renderData.width),this._domNode.setLineHeight(this._renderData.height),this._domNode.setHeight(this._renderData.height),{domNode:this._domNode.domNode,position:this._position,contentLeft:this._renderData.left,height:this._renderData.height,width:2}):(this._domNode.setDisplay("none"),null)}}]),e}(),fn=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n);var r=(i=t.call(this,e))._context.configuration.options;return i._readOnly=r.get(77),i._cursorBlinking=r.get(20),i._cursorStyle=r.get(22),i._cursorSmoothCaretAnimation=r.get(21),i._selectionIsEmpty=!0,i._isComposingInput=!1,i._isVisible=!1,i._primaryCursor=new hn(i._context),i._secondaryCursors=[],i._renderData=[],i._domNode=(0,E.X)(document.createElement("div")),i._domNode.setAttribute("role","presentation"),i._domNode.setAttribute("aria-hidden","true"),i._updateDomClassName(),i._domNode.appendChild(i._primaryCursor.getDomNode()),i._startCursorBlinkAnimation=new T._F,i._cursorFlatBlinkInterval=new T.zh,i._blinkingEnabled=!1,i._editorHasFocus=!1,i._updateBlinking(),i}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this),this._startCursorBlinkAnimation.dispose(),this._cursorFlatBlinkInterval.dispose()}},{key:"getDomNode",value:function(){return this._domNode}},{key:"onCompositionStart",value:function(e){return this._isComposingInput=!0,this._updateBlinking(),!0}},{key:"onCompositionEnd",value:function(e){return this._isComposingInput=!1,this._updateBlinking(),!0}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options;this._readOnly=t.get(77),this._cursorBlinking=t.get(20),this._cursorStyle=t.get(22),this._cursorSmoothCaretAnimation=t.get(21),this._updateBlinking(),this._updateDomClassName(),this._primaryCursor.onConfigurationChanged(e);for(var n=0,i=this._secondaryCursors.length;n<i;n++)this._secondaryCursors[n].onConfigurationChanged(e);return!0}},{key:"_onCursorPositionChanged",value:function(e,t){if(this._primaryCursor.onCursorPositionChanged(e),this._updateBlinking(),this._secondaryCursors.length<t.length)for(var n=t.length-this._secondaryCursors.length,i=0;i<n;i++){var r=new hn(this._context);this._domNode.domNode.insertBefore(r.getDomNode().domNode,this._primaryCursor.getDomNode().domNode.nextSibling),this._secondaryCursors.push(r)}else if(this._secondaryCursors.length>t.length)for(var o=this._secondaryCursors.length-t.length,a=0;a<o;a++)this._domNode.removeChild(this._secondaryCursors[0].getDomNode()),this._secondaryCursors.splice(0,1);for(var s=0;s<t.length;s++)this._secondaryCursors[s].onCursorPositionChanged(t[s])}},{key:"onCursorStateChanged",value:function(e){for(var t=[],n=0,i=e.selections.length;n<i;n++)t[n]=e.selections[n].getPosition();this._onCursorPositionChanged(t[0],t.slice(1));var r=e.selections[0].isEmpty();return this._selectionIsEmpty!==r&&(this._selectionIsEmpty=r,this._updateDomClassName()),!0}},{key:"onDecorationsChanged",value:function(e){return!0}},{key:"onFlushed",value:function(e){return!0}},{key:"onFocusChanged",value:function(e){return this._editorHasFocus=e.isFocused,this._updateBlinking(),!1}},{key:"onLinesChanged",value:function(e){return!0}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return!0}},{key:"onTokensChanged",value:function(e){var t=function(t){for(var n=0,i=e.ranges.length;n<i;n++)if(e.ranges[n].fromLineNumber<=t.lineNumber&&t.lineNumber<=e.ranges[n].toLineNumber)return!0;return!1};if(t(this._primaryCursor.getPosition()))return!0;var n,i=(0,r.Z)(this._secondaryCursors);try{for(i.s();!(n=i.n()).done;){if(t(n.value.getPosition()))return!0}}catch(o){i.e(o)}finally{i.f()}return!1}},{key:"onZonesChanged",value:function(e){return!0}},{key:"_getCursorBlinking",value:function(){return this._isComposingInput?0:this._editorHasFocus?this._readOnly?5:this._cursorBlinking:0}},{key:"_updateBlinking",value:function(){var e=this;this._startCursorBlinkAnimation.cancel(),this._cursorFlatBlinkInterval.cancel();var t=this._getCursorBlinking(),i=0===t,r=5===t;i?this._hide():this._show(),this._blinkingEnabled=!1,this._updateDomClassName(),i||r||(1===t?this._cursorFlatBlinkInterval.cancelAndSet((function(){e._isVisible?e._hide():e._show()}),n.BLINK_INTERVAL):this._startCursorBlinkAnimation.setIfNotSet((function(){e._blinkingEnabled=!0,e._updateDomClassName()}),n.BLINK_INTERVAL))}},{key:"_updateDomClassName",value:function(){this._domNode.setClassName(this._getClassName())}},{key:"_getClassName",value:function(){var e="cursors-layer";switch(this._selectionIsEmpty||(e+=" has-selection"),this._cursorStyle){case ee.d2.Line:e+=" cursor-line-style";break;case ee.d2.Block:e+=" cursor-block-style";break;case ee.d2.Underline:e+=" cursor-underline-style";break;case ee.d2.LineThin:e+=" cursor-line-thin-style";break;case ee.d2.BlockOutline:e+=" cursor-block-outline-style";break;case ee.d2.UnderlineThin:e+=" cursor-underline-thin-style";break;default:e+=" cursor-line-style"}if(this._blinkingEnabled)switch(this._getCursorBlinking()){case 1:e+=" cursor-blink";break;case 2:e+=" cursor-smooth";break;case 3:e+=" cursor-phase";break;case 4:e+=" cursor-expand";break;default:e+=" cursor-solid"}else e+=" cursor-solid";return this._cursorSmoothCaretAnimation&&(e+=" cursor-smooth-caret-animation"),e}},{key:"_show",value:function(){this._primaryCursor.show();for(var e=0,t=this._secondaryCursors.length;e<t;e++)this._secondaryCursors[e].show();this._isVisible=!0}},{key:"_hide",value:function(){this._primaryCursor.hide();for(var e=0,t=this._secondaryCursors.length;e<t;e++)this._secondaryCursors[e].hide();this._isVisible=!1}},{key:"prepareRender",value:function(e){this._primaryCursor.prepareRender(e);for(var t=0,n=this._secondaryCursors.length;t<n;t++)this._secondaryCursors[t].prepareRender(e)}},{key:"render",value:function(e){var t=[],n=0,i=this._primaryCursor.render(e);i&&(t[n++]=i);for(var r=0,o=this._secondaryCursors.length;r<o;r++){var a=this._secondaryCursors[r].render(e);a&&(t[n++]=a)}this._renderData=t}},{key:"getLastRenderData",value:function(){return this._renderData}}]),n}(z);fn.BLINK_INTERVAL=500,(0,je.Ic)((function(e,t){var n=e.getColor(Fe.n0);if(n){var i=e.getColor(Fe.fY);i||(i=n.opposite()),t.addRule(".monaco-editor .cursors-layer .cursor { background-color: ".concat(n,"; border-color: ").concat(n,"; color: ").concat(i,"; }")),"hc"===e.type&&t.addRule(".monaco-editor .cursors-layer.has-selection .cursor { border-left: 1px solid ".concat(i,"; border-right: 1px solid ").concat(i,"; }"))}}));var pn=function(){throw new Error("Invalid change accessor")},gn=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;(0,c.Z)(this,n);var r=(i=t.call(this,e))._context.configuration.options,o=r.get(127);return i._lineHeight=r.get(55),i._contentWidth=o.contentWidth,i._contentLeft=o.contentLeft,i.domNode=(0,E.X)(document.createElement("div")),i.domNode.setClassName("view-zones"),i.domNode.setPosition("absolute"),i.domNode.setAttribute("role","presentation"),i.domNode.setAttribute("aria-hidden","true"),i.marginDomNode=(0,E.X)(document.createElement("div")),i.marginDomNode.setClassName("margin-view-zones"),i.marginDomNode.setPosition("absolute"),i.marginDomNode.setAttribute("role","presentation"),i.marginDomNode.setAttribute("aria-hidden","true"),i._zones={},i}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this),this._zones={}}},{key:"_recomputeWhitespacesProps",value:function(){var e,t=this,n=this._context.viewLayout.getWhitespaces(),i=new Map,o=(0,r.Z)(n);try{for(o.s();!(e=o.n()).done;){var a=e.value;i.set(a.id,a)}}catch(u){o.e(u)}finally{o.f()}var s=!1;return this._context.model.changeWhitespace((function(e){for(var n=Object.keys(t._zones),r=0,o=n.length;r<o;r++){var a=n[r],u=t._zones[a],l=t._computeWhitespaceProps(u.delegate),c=i.get(a);!c||c.afterLineNumber===l.afterViewLineNumber&&c.height===l.heightInPx||(e.changeOneWhitespace(a,l.afterViewLineNumber,l.heightInPx),t._safeCallOnComputedHeight(u.delegate,l.heightInPx),s=!0)}})),s}},{key:"onConfigurationChanged",value:function(e){var t=this._context.configuration.options,n=t.get(127);return this._lineHeight=t.get(55),this._contentWidth=n.contentWidth,this._contentLeft=n.contentLeft,e.hasChanged(55)&&this._recomputeWhitespacesProps(),!0}},{key:"onLineMappingChanged",value:function(e){return this._recomputeWhitespacesProps()}},{key:"onLinesDeleted",value:function(e){return!0}},{key:"onScrollChanged",value:function(e){return e.scrollTopChanged||e.scrollWidthChanged}},{key:"onZonesChanged",value:function(e){return!0}},{key:"onLinesInserted",value:function(e){return!0}},{key:"_getZoneOrdinal",value:function(e){return"undefined"!==typeof e.afterColumn?e.afterColumn:1e4}},{key:"_computeWhitespaceProps",value:function(e){if(0===e.afterLineNumber)return{afterViewLineNumber:0,heightInPx:this._heightInPixels(e),minWidthInPx:this._minWidthInPixels(e)};var t,n;if("undefined"!==typeof e.afterColumn)t=this._context.model.validateModelPosition({lineNumber:e.afterLineNumber,column:e.afterColumn});else{var i=this._context.model.validateModelPosition({lineNumber:e.afterLineNumber,column:1}).lineNumber;t=new he.L(i,this._context.model.getModelLineMaxColumn(i))}n=t.column===this._context.model.getModelLineMaxColumn(t.lineNumber)?this._context.model.validateModelPosition({lineNumber:t.lineNumber+1,column:1}):this._context.model.validateModelPosition({lineNumber:t.lineNumber,column:t.column+1});var r=this._context.model.coordinatesConverter.convertModelPositionToViewPosition(t),o=this._context.model.coordinatesConverter.modelPositionIsVisible(n);return{afterViewLineNumber:r.lineNumber,heightInPx:o?this._heightInPixels(e):0,minWidthInPx:this._minWidthInPixels(e)}}},{key:"changeViewZones",value:function(e){var t=this,n=!1;return this._context.model.changeWhitespace((function(i){var r={addZone:function(e){return n=!0,t._addZone(i,e)},removeZone:function(e){e&&(n=t._removeZone(i,e)||n)},layoutZone:function(e){e&&(n=t._layoutZone(i,e)||n)}};!function(e,t){try{return e(t)}catch(n){(0,y.dL)(n)}}(e,r),r.addZone=pn,r.removeZone=pn,r.layoutZone=pn})),n}},{key:"_addZone",value:function(e,t){var n=this._computeWhitespaceProps(t),i={whitespaceId:e.insertWhitespace(n.afterViewLineNumber,this._getZoneOrdinal(t),n.heightInPx,n.minWidthInPx),delegate:t,isVisible:!1,domNode:(0,E.X)(t.domNode),marginDomNode:t.marginDomNode?(0,E.X)(t.marginDomNode):null};return this._safeCallOnComputedHeight(i.delegate,n.heightInPx),i.domNode.setPosition("absolute"),i.domNode.domNode.style.width="100%",i.domNode.setDisplay("none"),i.domNode.setAttribute("monaco-view-zone",i.whitespaceId),this.domNode.appendChild(i.domNode),i.marginDomNode&&(i.marginDomNode.setPosition("absolute"),i.marginDomNode.domNode.style.width="100%",i.marginDomNode.setDisplay("none"),i.marginDomNode.setAttribute("monaco-view-zone",i.whitespaceId),this.marginDomNode.appendChild(i.marginDomNode)),this._zones[i.whitespaceId]=i,this.setShouldRender(),i.whitespaceId}},{key:"_removeZone",value:function(e,t){if(this._zones.hasOwnProperty(t)){var n=this._zones[t];return delete this._zones[t],e.removeWhitespace(n.whitespaceId),n.domNode.removeAttribute("monaco-visible-view-zone"),n.domNode.removeAttribute("monaco-view-zone"),n.domNode.domNode.parentNode.removeChild(n.domNode.domNode),n.marginDomNode&&(n.marginDomNode.removeAttribute("monaco-visible-view-zone"),n.marginDomNode.removeAttribute("monaco-view-zone"),n.marginDomNode.domNode.parentNode.removeChild(n.marginDomNode.domNode)),this.setShouldRender(),!0}return!1}},{key:"_layoutZone",value:function(e,t){if(this._zones.hasOwnProperty(t)){var n=this._zones[t],i=this._computeWhitespaceProps(n.delegate);return e.changeOneWhitespace(n.whitespaceId,i.afterViewLineNumber,i.heightInPx),this._safeCallOnComputedHeight(n.delegate,i.heightInPx),this.setShouldRender(),!0}return!1}},{key:"shouldSuppressMouseDownOnViewZone",value:function(e){if(this._zones.hasOwnProperty(e)){var t=this._zones[e];return Boolean(t.delegate.suppressMouseDown)}return!1}},{key:"_heightInPixels",value:function(e){return"number"===typeof e.heightInPx?e.heightInPx:"number"===typeof e.heightInLines?this._lineHeight*e.heightInLines:this._lineHeight}},{key:"_minWidthInPixels",value:function(e){return"number"===typeof e.minWidthInPx?e.minWidthInPx:0}},{key:"_safeCallOnComputedHeight",value:function(e,t){if("function"===typeof e.onComputedHeight)try{e.onComputedHeight(t)}catch(n){(0,y.dL)(n)}}},{key:"_safeCallOnDomNodeTop",value:function(e,t){if("function"===typeof e.onDomNodeTop)try{e.onDomNodeTop(t)}catch(n){(0,y.dL)(n)}}},{key:"prepareRender",value:function(e){}},{key:"render",value:function(e){for(var t=e.viewportData.whitespaceViewportData,n={},i=!1,r=0,o=t.length;r<o;r++)n[t[r].id]=t[r],i=!0;for(var a=Object.keys(this._zones),s=0,u=a.length;s<u;s++){var l=a[s],c=this._zones[l],d=0,h=0,f="none";n.hasOwnProperty(l)?(d=n[l].verticalOffset-e.bigNumbersDelta,h=n[l].height,f="block",c.isVisible||(c.domNode.setAttribute("monaco-visible-view-zone","true"),c.isVisible=!0),this._safeCallOnDomNodeTop(c.delegate,e.getScrolledTopFromAbsoluteTop(n[l].verticalOffset))):(c.isVisible&&(c.domNode.removeAttribute("monaco-visible-view-zone"),c.isVisible=!1),this._safeCallOnDomNodeTop(c.delegate,e.getScrolledTopFromAbsoluteTop(-1e6))),c.domNode.setTop(d),c.domNode.setHeight(h),c.domNode.setDisplay(f),c.marginDomNode&&(c.marginDomNode.setTop(d),c.marginDomNode.setHeight(h),c.marginDomNode.setDisplay(f))}i&&(this.domNode.setWidth(Math.max(e.scrollWidth,this._contentWidth)),this.marginDomNode.setWidth(this._contentLeft))}}]),n}(z);var vn=function(){function e(t){(0,c.Z)(this,e),this._theme=t}return(0,d.Z)(e,[{key:"type",get:function(){return this._theme.type}},{key:"update",value:function(e){this._theme=e}},{key:"getColor",value:function(e){return this._theme.getColor(e)}}]),e}(),mn=function(){function e(t,n,i){(0,c.Z)(this,e),this.configuration=t,this.theme=new vn(n),this.model=i,this.viewLayout=i.viewLayout}return(0,d.Z)(e,[{key:"addEventHandler",value:function(e){this.model.addViewEventHandler(e)}},{key:"removeEventHandler",value:function(e){this.model.removeViewEventHandler(e)}}]),e}(),_n=function(){function e(t,n,i,r){(0,c.Z)(this,e),this.selections=t,this.startLineNumber=0|n.startLineNumber,this.endLineNumber=0|n.endLineNumber,this.relativeVerticalOffset=n.relativeVerticalOffset,this.bigNumbersDelta=0|n.bigNumbersDelta,this.whitespaceViewportData=i,this._model=r,this.visibleRange=new fe.e(n.startLineNumber,this._model.getLineMinColumn(n.startLineNumber),n.endLineNumber,this._model.getLineMaxColumn(n.endLineNumber))}return(0,d.Z)(e,[{key:"getViewLineRenderingData",value:function(e){return this._model.getViewLineRenderingData(this.visibleRange,e)}},{key:"getDecorationsInViewport",value:function(){return this._model.getDecorationsInViewport(this.visibleRange)}}]),e}(),yn=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,a,s,u){var l;(0,c.Z)(this,n),(l=t.call(this))._selections=[new L.Y(1,1,1,1)],l._renderAnimationFrame=null;var d=new Ge(i,a,s,e);l._context=new mn(i,r.getColorTheme(),a),l._configPixelRatio=l._context.configuration.options.get(125),l._context.addEventHandler((0,o.Z)(l)),l._register(r.onDidColorThemeChange((function(e){l._context.theme.update(e),l._context.model.onDidColorThemeChange(),l.render(!0,!1)}))),l._viewParts=[],l._textAreaHandler=new Ue(l._context,d,l._createTextAreaHandlerHelper()),l._viewParts.push(l._textAreaHandler),l._linesContent=(0,E.X)(document.createElement("div")),l._linesContent.setClassName("lines-content monaco-editor-background"),l._linesContent.setPosition("absolute"),l.domNode=(0,E.X)(document.createElement("div")),l.domNode.setClassName(l._getEditorClassName()),l.domNode.setAttribute("role","code"),l._overflowGuardContainer=(0,E.X)(document.createElement("div")),W.write(l._overflowGuardContainer,3),l._overflowGuardContainer.setClassName("overflow-guard"),l._scrollbar=new mt(l._context,l._linesContent,l.domNode,l._overflowGuardContainer),l._viewParts.push(l._scrollbar),l._viewLines=new xt(l._context,l._linesContent),l._viewZones=new gn(l._context),l._viewParts.push(l._viewZones);var h=new Jt(l._context);l._viewParts.push(h);var f=new rn(l._context);l._viewParts.push(f);var p=new rt(l._context);l._viewParts.push(p),p.addDynamicOverlay(new ft(l._context)),p.addDynamicOverlay(new ln(l._context)),p.addDynamicOverlay(new wt(l._context)),p.addDynamicOverlay(new gt(l._context));var g=new ot(l._context);l._viewParts.push(g),g.addDynamicOverlay(new pt(l._context)),g.addDynamicOverlay(new bt(l._context)),g.addDynamicOverlay(new Et(l._context)),g.addDynamicOverlay(new Lt(l._context)),g.addDynamicOverlay(new He(l._context));var v=new Be(l._context);v.getDomNode().appendChild(l._viewZones.marginDomNode),v.getDomNode().appendChild(g.getDomNode()),l._viewParts.push(v),l._contentWidgets=new st(l._context,l.domNode),l._viewParts.push(l._contentWidgets),l._viewCursors=new fn(l._context),l._viewParts.push(l._viewCursors),l._overlayWidgets=new $t(l._context),l._viewParts.push(l._overlayWidgets);var m=new nn(l._context);l._viewParts.push(m);var _=new qt(l._context);if(l._viewParts.push(_),h){var y=l._scrollbar.getOverviewRulerLayoutInfo();y.parent.insertBefore(h.getDomNode(),y.insertBefore)}return l._linesContent.appendChild(p.getDomNode()),l._linesContent.appendChild(m.domNode),l._linesContent.appendChild(l._viewZones.domNode),l._linesContent.appendChild(l._viewLines.getDomNode()),l._linesContent.appendChild(l._contentWidgets.domNode),l._linesContent.appendChild(l._viewCursors.getDomNode()),l._overflowGuardContainer.appendChild(v.getDomNode()),l._overflowGuardContainer.appendChild(l._scrollbar.getDomNode()),l._overflowGuardContainer.appendChild(f.getDomNode()),l._overflowGuardContainer.appendChild(l._textAreaHandler.textArea),l._overflowGuardContainer.appendChild(l._textAreaHandler.textAreaCover),l._overflowGuardContainer.appendChild(l._overlayWidgets.getDomNode()),l._overflowGuardContainer.appendChild(_.getDomNode()),l.domNode.appendChild(l._overflowGuardContainer),u?u.appendChild(l._contentWidgets.overflowingContentWidgetsDomNode.domNode):l.domNode.appendChild(l._contentWidgets.overflowingContentWidgetsDomNode),l._applyLayout(),l._pointerHandler=l._register(new Ae(l._context,d,l._createPointerHandlerHelper())),l}return(0,d.Z)(n,[{key:"_flushAccumulatedAndRenderNow",value:function(){this._renderNow()}},{key:"_createPointerHandlerHelper",value:function(){var e=this;return{viewDomNode:this.domNode.domNode,linesContentDomNode:this._linesContent.domNode,focusTextArea:function(){e.focus()},dispatchTextAreaEvent:function(t){e._textAreaHandler.textArea.domNode.dispatchEvent(t)},getLastRenderData:function(){var t=e._viewCursors.getLastRenderData()||[],n=e._textAreaHandler.getLastRenderData();return new ve(t,n)},shouldSuppressMouseDownOnViewZone:function(t){return e._viewZones.shouldSuppressMouseDownOnViewZone(t)},shouldSuppressMouseDownOnWidget:function(t){return e._contentWidgets.shouldSuppressMouseDownOnWidget(t)},getPositionFromDOMInfo:function(t,n){return e._flushAccumulatedAndRenderNow(),e._viewLines.getPositionFromDOMInfo(t,n)},visibleRangeForPosition:function(t,n){return e._flushAccumulatedAndRenderNow(),e._viewLines.visibleRangeForPosition(new he.L(t,n))},getLineWidth:function(t){return e._flushAccumulatedAndRenderNow(),e._viewLines.getLineWidth(t)}}}},{key:"_createTextAreaHandlerHelper",value:function(){var e=this;return{visibleRangeForPositionRelativeToEditor:function(t,n){return e._flushAccumulatedAndRenderNow(),e._viewLines.visibleRangeForPosition(new he.L(t,n))}}}},{key:"_applyLayout",value:function(){var e=this._context.configuration.options.get(127);this.domNode.setWidth(e.width),this.domNode.setHeight(e.height),this._overflowGuardContainer.setWidth(e.width),this._overflowGuardContainer.setHeight(e.height),this._linesContent.setWidth(1e6),this._linesContent.setHeight(1e6)}},{key:"_getEditorClassName",value:function(){var e=this._textAreaHandler.isFocused()?" focused":"";return this._context.configuration.options.get(124)+" "+(0,je.m6)(this._context.theme.type)+e}},{key:"handleEvents",value:function(e){(0,a.Z)((0,s.Z)(n.prototype),"handleEvents",this).call(this,e),this._scheduleRender()}},{key:"onConfigurationChanged",value:function(e){return this._configPixelRatio=this._context.configuration.options.get(125),this.domNode.setClassName(this._getEditorClassName()),this._applyLayout(),!1}},{key:"onCursorStateChanged",value:function(e){return this._selections=e.selections,!1}},{key:"onFocusChanged",value:function(e){return this.domNode.setClassName(this._getEditorClassName()),!1}},{key:"onThemeChanged",value:function(e){return this.domNode.setClassName(this._getEditorClassName()),!1}},{key:"dispose",value:function(){null!==this._renderAnimationFrame&&(this._renderAnimationFrame.dispose(),this._renderAnimationFrame=null),this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove(),this._context.removeEventHandler(this),this._viewLines.dispose();var e,t=(0,r.Z)(this._viewParts);try{for(t.s();!(e=t.n()).done;){e.value.dispose()}}catch(i){t.e(i)}finally{t.f()}(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"_scheduleRender",value:function(){null===this._renderAnimationFrame&&(this._renderAnimationFrame=_.runAtThisOrScheduleAtNextAnimationFrame(this._onRenderScheduled.bind(this),100))}},{key:"_onRenderScheduled",value:function(){this._renderAnimationFrame=null,this._flushAccumulatedAndRenderNow()}},{key:"_renderNow",value:function(){var e=this;!function(e){try{return e()}catch(t){(0,y.dL)(t)}}((function(){return e._actualRender()}))}},{key:"_getViewPartsToRender",value:function(){var e,t=[],n=0,i=(0,r.Z)(this._viewParts);try{for(i.s();!(e=i.n()).done;){var o=e.value;o.shouldRender()&&(t[n++]=o)}}catch(a){i.e(a)}finally{i.f()}return t}},{key:"_actualRender",value:function(){if(_.isInDOM(this.domNode.domNode)){var e=this._getViewPartsToRender();if(this._viewLines.shouldRender()||0!==e.length){var t=this._context.viewLayout.getLinesViewportData();this._context.model.setViewport(t.startLineNumber,t.endLineNumber,t.centeredLineNumber);var n=new _n(this._selections,t,this._context.viewLayout.getWhitespaceViewportData(),this._context.model);this._contentWidgets.shouldRender()&&this._contentWidgets.onBeforeRender(n),this._viewLines.shouldRender()&&(this._viewLines.renderText(n),this._viewLines.onDidRender(),e=this._getViewPartsToRender());var i,o=new V(this._context.viewLayout,n,this._viewLines),a=(0,r.Z)(e);try{for(a.s();!(i=a.n()).done;){i.value.prepareRender(o)}}catch(c){a.e(c)}finally{a.f()}var s,u=(0,r.Z)(e);try{for(u.s();!(s=u.n()).done;){var l=s.value;l.render(o),l.onDidRender()}}catch(c){u.e(c)}finally{u.f()}Math.abs(x.mX()-this._configPixelRatio)>.001&&this._context.configuration.updatePixelRatio()}}}},{key:"delegateVerticalScrollbarMouseDown",value:function(e){this._scrollbar.delegateVerticalScrollbarMouseDown(e)}},{key:"restoreState",value:function(e){this._context.model.setScrollPosition({scrollTop:e.scrollTop},1),this._context.model.tokenizeViewport(),this._renderNow(),this._viewLines.updateLineWidths(),this._context.model.setScrollPosition({scrollLeft:e.scrollLeft},1)}},{key:"getOffsetForColumn",value:function(e,t){var n=this._context.model.validateModelPosition({lineNumber:e,column:t}),i=this._context.model.coordinatesConverter.convertModelPositionToViewPosition(n);this._flushAccumulatedAndRenderNow();var r=this._viewLines.visibleRangeForPosition(new he.L(i.lineNumber,i.column));return r?r.left:-1}},{key:"getTargetAtClientPoint",value:function(e,t){var n=this._pointerHandler.getTargetAtClientPoint(e,t);return n?$e.convertViewToModelMouseTarget(n,this._context.model.coordinatesConverter):null}},{key:"createOverviewRuler",value:function(e){return new tn(this._context,e)}},{key:"change",value:function(e){this._viewZones.changeViewZones(e),this._scheduleRender()}},{key:"render",value:function(e,t){if(t){this._viewLines.forceShouldRender();var n,i=(0,r.Z)(this._viewParts);try{for(i.s();!(n=i.n()).done;){n.value.forceShouldRender()}}catch(o){i.e(o)}finally{i.f()}}e?this._flushAccumulatedAndRenderNow():this._scheduleRender()}},{key:"focus",value:function(){this._textAreaHandler.focusTextArea()}},{key:"isFocused",value:function(){return this._textAreaHandler.isFocused()}},{key:"setAriaOptions",value:function(e){this._textAreaHandler.setAriaOptions(e)}},{key:"addContentWidget",value:function(e){this._contentWidgets.addWidget(e.widget),this.layoutContentWidget(e),this._scheduleRender()}},{key:"layoutContentWidget",value:function(e){var t=e.position&&e.position.range||null;if(null===t){var n=e.position?e.position.position:null;null!==n&&(t=new fe.e(n.lineNumber,n.column,n.lineNumber,n.column))}var i=e.position?e.position.preference:null;this._contentWidgets.setWidgetPosition(e.widget,t,i),this._scheduleRender()}},{key:"removeContentWidget",value:function(e){this._contentWidgets.removeWidget(e.widget),this._scheduleRender()}},{key:"addOverlayWidget",value:function(e){this._overlayWidgets.addWidget(e.widget),this.layoutOverlayWidget(e),this._scheduleRender()}},{key:"layoutOverlayWidget",value:function(e){var t=e.position?e.position.preference:null;this._overlayWidgets.setWidgetPosition(e.widget,t)&&this._scheduleRender()}},{key:"removeOverlayWidget",value:function(e){this._overlayWidgets.removeWidget(e.widget),this._scheduleRender()}}]),n}(B);var bn=function(){function e(t){(0,c.Z)(this,e),this._selTrackedRange=null,this._trackSelection=!0,this._setState(t,new pe.rS(new fe.e(1,1,1,1),0,new he.L(1,1),0),new pe.rS(new fe.e(1,1,1,1),0,new he.L(1,1),0))}return(0,d.Z)(e,[{key:"dispose",value:function(e){this._removeTrackedRange(e)}},{key:"startTrackingSelection",value:function(e){this._trackSelection=!0,this._updateTrackedRange(e)}},{key:"stopTrackingSelection",value:function(e){this._trackSelection=!1,this._removeTrackedRange(e)}},{key:"_updateTrackedRange",value:function(e){this._trackSelection&&(this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,this.modelState.selection,0))}},{key:"_removeTrackedRange",value:function(e){this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,null,0)}},{key:"asCursorState",value:function(){return new pe.Vi(this.modelState,this.viewState)}},{key:"readSelectionFromMarkers",value:function(e){var t=e.model._getTrackedRange(this._selTrackedRange);return 0===this.modelState.selection.getDirection()?new L.Y(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn):new L.Y(t.endLineNumber,t.endColumn,t.startLineNumber,t.startColumn)}},{key:"ensureValidState",value:function(e){this._setState(e,this.modelState,this.viewState)}},{key:"setState",value:function(e,t,n){this._setState(e,t,n)}},{key:"_setState",value:function(e,t,n){if(t){var i=e.model.validateRange(t.selectionStart),r=t.selectionStart.equalsRange(i)?t.selectionStartLeftoverVisibleColumns:0,o=e.model.validatePosition(t.position),a=t.position.equals(o)?t.leftoverVisibleColumns:0;t=new pe.rS(i,r,o,a)}else{if(!n)return;var s=e.model.validateRange(e.coordinatesConverter.convertViewRangeToModelRange(n.selectionStart)),u=e.model.validatePosition(e.coordinatesConverter.convertViewPositionToModelPosition(n.position));t=new pe.rS(s,n.selectionStartLeftoverVisibleColumns,u,n.leftoverVisibleColumns)}if(n){var l=e.coordinatesConverter.validateViewRange(n.selectionStart,t.selectionStart),c=e.coordinatesConverter.validateViewPosition(n.position,t.position);n=new pe.rS(l,t.selectionStartLeftoverVisibleColumns,c,t.leftoverVisibleColumns)}else{var d=e.coordinatesConverter.convertModelPositionToViewPosition(new he.L(t.selectionStart.startLineNumber,t.selectionStart.startColumn)),h=e.coordinatesConverter.convertModelPositionToViewPosition(new he.L(t.selectionStart.endLineNumber,t.selectionStart.endColumn)),f=new fe.e(d.lineNumber,d.column,h.lineNumber,h.column),p=e.coordinatesConverter.convertModelPositionToViewPosition(t.position);n=new pe.rS(f,t.selectionStartLeftoverVisibleColumns,p,t.leftoverVisibleColumns)}this.modelState=t,this.viewState=n,this._updateTrackedRange(e)}}]),e}(),wn=function(){function e(t){(0,c.Z)(this,e),this.context=t,this.primaryCursor=new bn(t),this.secondaryCursors=[],this.lastAddedCursorIndex=0}return(0,d.Z)(e,[{key:"dispose",value:function(){this.primaryCursor.dispose(this.context),this.killSecondaryCursors()}},{key:"startTrackingSelections",value:function(){this.primaryCursor.startTrackingSelection(this.context);for(var e=0,t=this.secondaryCursors.length;e<t;e++)this.secondaryCursors[e].startTrackingSelection(this.context)}},{key:"stopTrackingSelections",value:function(){this.primaryCursor.stopTrackingSelection(this.context);for(var e=0,t=this.secondaryCursors.length;e<t;e++)this.secondaryCursors[e].stopTrackingSelection(this.context)}},{key:"updateContext",value:function(e){this.context=e}},{key:"ensureValidState",value:function(){this.primaryCursor.ensureValidState(this.context);for(var e=0,t=this.secondaryCursors.length;e<t;e++)this.secondaryCursors[e].ensureValidState(this.context)}},{key:"readSelectionFromMarkers",value:function(){var e=[];e[0]=this.primaryCursor.readSelectionFromMarkers(this.context);for(var t=0,n=this.secondaryCursors.length;t<n;t++)e[t+1]=this.secondaryCursors[t].readSelectionFromMarkers(this.context);return e}},{key:"getAll",value:function(){var e=[];e[0]=this.primaryCursor.asCursorState();for(var t=0,n=this.secondaryCursors.length;t<n;t++)e[t+1]=this.secondaryCursors[t].asCursorState();return e}},{key:"getViewPositions",value:function(){var e=[];e[0]=this.primaryCursor.viewState.position;for(var t=0,n=this.secondaryCursors.length;t<n;t++)e[t+1]=this.secondaryCursors[t].viewState.position;return e}},{key:"getTopMostViewPosition",value:function(){for(var e=this.primaryCursor.viewState.position,t=0,n=this.secondaryCursors.length;t<n;t++){var i=this.secondaryCursors[t].viewState.position;i.isBefore(e)&&(e=i)}return e}},{key:"getBottomMostViewPosition",value:function(){for(var e=this.primaryCursor.viewState.position,t=0,n=this.secondaryCursors.length;t<n;t++){var i=this.secondaryCursors[t].viewState.position;e.isBeforeOrEqual(i)&&(e=i)}return e}},{key:"getSelections",value:function(){var e=[];e[0]=this.primaryCursor.modelState.selection;for(var t=0,n=this.secondaryCursors.length;t<n;t++)e[t+1]=this.secondaryCursors[t].modelState.selection;return e}},{key:"getViewSelections",value:function(){var e=[];e[0]=this.primaryCursor.viewState.selection;for(var t=0,n=this.secondaryCursors.length;t<n;t++)e[t+1]=this.secondaryCursors[t].viewState.selection;return e}},{key:"setSelections",value:function(e){this.setStates(pe.Vi.fromModelSelections(e))}},{key:"getPrimaryCursor",value:function(){return this.primaryCursor.asCursorState()}},{key:"setStates",value:function(e){null!==e&&(this.primaryCursor.setState(this.context,e[0].modelState,e[0].viewState),this._setSecondaryStates(e.slice(1)))}},{key:"_setSecondaryStates",value:function(e){var t=this.secondaryCursors.length,n=e.length;if(t<n)for(var i=n-t,r=0;r<i;r++)this._addSecondaryCursor();else if(t>n)for(var o=t-n,a=0;a<o;a++)this._removeSecondaryCursor(this.secondaryCursors.length-1);for(var s=0;s<n;s++)this.secondaryCursors[s].setState(this.context,e[s].modelState,e[s].viewState)}},{key:"killSecondaryCursors",value:function(){this._setSecondaryStates([])}},{key:"_addSecondaryCursor",value:function(){this.secondaryCursors.push(new bn(this.context)),this.lastAddedCursorIndex=this.secondaryCursors.length}},{key:"getLastAddedCursorIndex",value:function(){return 0===this.secondaryCursors.length||0===this.lastAddedCursorIndex?0:this.lastAddedCursorIndex}},{key:"_removeSecondaryCursor",value:function(e){this.lastAddedCursorIndex>=e+1&&this.lastAddedCursorIndex--,this.secondaryCursors[e].dispose(this.context),this.secondaryCursors.splice(e,1)}},{key:"_getAll",value:function(){var e=[];e[0]=this.primaryCursor;for(var t=0,n=this.secondaryCursors.length;t<n;t++)e[t+1]=this.secondaryCursors[t];return e}},{key:"normalize",value:function(){if(0!==this.secondaryCursors.length){for(var e=this._getAll(),t=[],n=0,i=e.length;n<i;n++)t.push({index:n,selection:e[n].modelState.selection});t.sort((function(e,t){return e.selection.startLineNumber===t.selection.startLineNumber?e.selection.startColumn-t.selection.startColumn:e.selection.startLineNumber-t.selection.startLineNumber}));for(var o=0;o<t.length-1;o++){var a=t[o],s=t[o+1],u=a.selection,l=s.selection;if(this.context.cursorConfig.multiCursorMergeOverlapping){if(l.isEmpty()||u.isEmpty()?l.getStartPosition().isBeforeOrEqual(u.getEndPosition()):l.getStartPosition().isBefore(u.getEndPosition())){var c=a.index<s.index?o:o+1,d=a.index<s.index?o+1:o,h=t[d].index,f=t[c].index,p=t[d].selection,g=t[c].selection;if(!p.equalsSelection(g)){var v=p.plusRange(g),m=p.selectionStartLineNumber===p.startLineNumber&&p.selectionStartColumn===p.startColumn,_=g.selectionStartLineNumber===g.startLineNumber&&g.selectionStartColumn===g.startColumn,y=void 0;h===this.lastAddedCursorIndex?(y=m,this.lastAddedCursorIndex=f):y=_;var b=void 0;b=y?new L.Y(v.startLineNumber,v.startColumn,v.endLineNumber,v.endColumn):new L.Y(v.endLineNumber,v.endColumn,v.startLineNumber,v.startColumn),t[c].selection=b;var w=pe.Vi.fromModelSelection(b);e[f].setState(this.context,w.modelState,w.viewState)}var C,k=(0,r.Z)(t);try{for(k.s();!(C=k.n()).done;){var S=C.value;S.index>h&&S.index--}}catch(x){k.e(x)}finally{k.f()}e.splice(h,1),t.splice(d,1),this._removeSecondaryCursor(h-1),o--}}}}}}]),e}(),Cn=n(39765),kn=n(22268),Sn=(0,d.Z)((function e(){(0,c.Z)(this,e),this.type=0})),xn=(0,d.Z)((function e(){(0,c.Z)(this,e),this.type=1})),Ln=function(){function e(t){(0,c.Z)(this,e),this.type=2,this._source=t}return(0,d.Z)(e,[{key:"hasChanged",value:function(e){return this._source.hasChanged(e)}}]),e}(),En=(0,d.Z)((function e(t,n){(0,c.Z)(this,e),this.type=3,this.selections=t,this.modelSelections=n})),Dn=(0,d.Z)((function e(t){(0,c.Z)(this,e),this.type=4,t?(this.affectsMinimap=t.affectsMinimap,this.affectsOverviewRuler=t.affectsOverviewRuler):(this.affectsMinimap=!0,this.affectsOverviewRuler=!0)})),Nn=(0,d.Z)((function e(){(0,c.Z)(this,e),this.type=5})),Mn=(0,d.Z)((function e(t){(0,c.Z)(this,e),this.type=6,this.isFocused=t})),Tn=(0,d.Z)((function e(){(0,c.Z)(this,e),this.type=7})),In=(0,d.Z)((function e(){(0,c.Z)(this,e),this.type=8})),On=(0,d.Z)((function e(t,n){(0,c.Z)(this,e),this.type=9,this.fromLineNumber=t,this.toLineNumber=n})),An=(0,d.Z)((function e(t,n){(0,c.Z)(this,e),this.type=10,this.fromLineNumber=t,this.toLineNumber=n})),Rn=(0,d.Z)((function e(t,n){(0,c.Z)(this,e),this.type=11,this.fromLineNumber=t,this.toLineNumber=n})),Pn=(0,d.Z)((function e(t,n,i,r,o,a){(0,c.Z)(this,e),this.type=12,this.source=t,this.range=n,this.selections=i,this.verticalType=r,this.revealHorizontal=o,this.scrollType=a})),Zn=(0,d.Z)((function e(t){(0,c.Z)(this,e),this.type=13,this.scrollWidth=t.scrollWidth,this.scrollLeft=t.scrollLeft,this.scrollHeight=t.scrollHeight,this.scrollTop=t.scrollTop,this.scrollWidthChanged=t.scrollWidthChanged,this.scrollLeftChanged=t.scrollLeftChanged,this.scrollHeightChanged=t.scrollHeightChanged,this.scrollTopChanged=t.scrollTopChanged})),Fn=(0,d.Z)((function e(){(0,c.Z)(this,e),this.type=14})),jn=(0,d.Z)((function e(t){(0,c.Z)(this,e),this.type=15,this.ranges=t})),Hn=(0,d.Z)((function e(){(0,c.Z)(this,e),this.type=16})),Bn=(0,d.Z)((function e(){(0,c.Z)(this,e),this.type=17})),zn=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){var e;return(0,c.Z)(this,n),(e=t.call(this))._onEvent=e._register(new b.Q5),e.onEvent=e._onEvent.event,e._eventHandlers=[],e._viewEventQueue=null,e._isConsumingViewEventQueue=!1,e._collector=null,e._collectorCnt=0,e._outgoingEvents=[],e}return(0,d.Z)(n,[{key:"emitOutgoingEvent",value:function(e){this._addOutgoingEvent(e),this._emitOugoingEvents()}},{key:"_addOutgoingEvent",value:function(e){for(var t=0,n=this._outgoingEvents.length;t<n;t++)if(this._outgoingEvents[t].kind===e.kind)return void(this._outgoingEvents[t]=this._outgoingEvents[t].merge(e));this._outgoingEvents.push(e)}},{key:"_emitOugoingEvents",value:function(){for(;this._outgoingEvents.length>0;){if(this._collector||this._isConsumingViewEventQueue)return;var e=this._outgoingEvents.shift();e.isNoOp()||this._onEvent.fire(e)}}},{key:"addViewEventHandler",value:function(e){for(var t=0,n=this._eventHandlers.length;t<n;t++)this._eventHandlers[t]===e&&console.warn("Detected duplicate listener in ViewEventDispatcher",e);this._eventHandlers.push(e)}},{key:"removeViewEventHandler",value:function(e){for(var t=0;t<this._eventHandlers.length;t++)if(this._eventHandlers[t]===e){this._eventHandlers.splice(t,1);break}}},{key:"beginEmitViewEvents",value:function(){return this._collectorCnt++,1===this._collectorCnt&&(this._collector=new Wn),this._collector}},{key:"endEmitViewEvents",value:function(){if(this._collectorCnt--,0===this._collectorCnt){var e=this._collector.outgoingEvents,t=this._collector.viewEvents;this._collector=null;var n,i=(0,r.Z)(e);try{for(i.s();!(n=i.n()).done;){var o=n.value;this._addOutgoingEvent(o)}}catch(a){i.e(a)}finally{i.f()}t.length>0&&this._emitMany(t)}this._emitOugoingEvents()}},{key:"emitSingleViewEvent",value:function(e){try{this.beginEmitViewEvents().emitViewEvent(e)}finally{this.endEmitViewEvents()}}},{key:"_emitMany",value:function(e){this._viewEventQueue?this._viewEventQueue=this._viewEventQueue.concat(e):this._viewEventQueue=e,this._isConsumingViewEventQueue||this._consumeViewEventQueue()}},{key:"_consumeViewEventQueue",value:function(){try{this._isConsumingViewEventQueue=!0,this._doConsumeQueue()}finally{this._isConsumingViewEventQueue=!1}}},{key:"_doConsumeQueue",value:function(){for(;this._viewEventQueue;){var e=this._viewEventQueue;this._viewEventQueue=null;var t,n=this._eventHandlers.slice(0),i=(0,r.Z)(n);try{for(i.s();!(t=i.n()).done;){t.value.handleEvents(e)}}catch(o){i.e(o)}finally{i.f()}}}}]),n}(w.JT),Wn=function(){function e(){(0,c.Z)(this,e),this.viewEvents=[],this.outgoingEvents=[]}return(0,d.Z)(e,[{key:"emitViewEvent",value:function(e){this.viewEvents.push(e)}},{key:"emitOutgoingEvent",value:function(e){this.outgoingEvents.push(e)}}]),e}(),Vn=function(){function e(t,n,i,r){(0,c.Z)(this,e),this.kind=0,this._oldContentWidth=t,this._oldContentHeight=n,this.contentWidth=i,this.contentHeight=r,this.contentWidthChanged=this._oldContentWidth!==this.contentWidth,this.contentHeightChanged=this._oldContentHeight!==this.contentHeight}return(0,d.Z)(e,[{key:"isNoOp",value:function(){return!this.contentWidthChanged&&!this.contentHeightChanged}},{key:"merge",value:function(t){return 0!==t.kind?this:new e(this._oldContentWidth,this._oldContentHeight,t.contentWidth,t.contentHeight)}}]),e}(),Yn=function(){function e(t,n){(0,c.Z)(this,e),this.kind=1,this.oldHasFocus=t,this.hasFocus=n}return(0,d.Z)(e,[{key:"isNoOp",value:function(){return this.oldHasFocus===this.hasFocus}},{key:"merge",value:function(t){return 1!==t.kind?this:new e(this.oldHasFocus,t.hasFocus)}}]),e}(),Un=function(){function e(t,n,i,r,o,a,s,u){(0,c.Z)(this,e),this.kind=2,this._oldScrollWidth=t,this._oldScrollLeft=n,this._oldScrollHeight=i,this._oldScrollTop=r,this.scrollWidth=o,this.scrollLeft=a,this.scrollHeight=s,this.scrollTop=u,this.scrollWidthChanged=this._oldScrollWidth!==this.scrollWidth,this.scrollLeftChanged=this._oldScrollLeft!==this.scrollLeft,this.scrollHeightChanged=this._oldScrollHeight!==this.scrollHeight,this.scrollTopChanged=this._oldScrollTop!==this.scrollTop}return(0,d.Z)(e,[{key:"isNoOp",value:function(){return!this.scrollWidthChanged&&!this.scrollLeftChanged&&!this.scrollHeightChanged&&!this.scrollTopChanged}},{key:"merge",value:function(t){return 2!==t.kind?this:new e(this._oldScrollWidth,this._oldScrollLeft,this._oldScrollHeight,this._oldScrollTop,t.scrollWidth,t.scrollLeft,t.scrollHeight,t.scrollTop)}}]),e}(),Kn=function(){function e(){(0,c.Z)(this,e),this.kind=3}return(0,d.Z)(e,[{key:"isNoOp",value:function(){return!1}},{key:"merge",value:function(e){return this}}]),e}(),qn=function(){function e(t,n,i,r,o,a,s){(0,c.Z)(this,e),this.kind=5,this.oldSelections=t,this.selections=n,this.oldModelVersionId=i,this.modelVersionId=r,this.source=o,this.reason=a,this.reachedMaxCursorCount=s}return(0,d.Z)(e,[{key:"isNoOp",value:function(){return e._selectionsAreEqual(this.oldSelections,this.selections)&&this.oldModelVersionId===this.modelVersionId}},{key:"merge",value:function(t){return 5!==t.kind?this:new e(this.oldSelections,t.selections,this.oldModelVersionId,t.modelVersionId,t.source,t.reason,this.reachedMaxCursorCount||t.reachedMaxCursorCount)}}],[{key:"_selectionsAreEqual",value:function(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;var n=e.length;if(n!==t.length)return!1;for(var i=0;i<n;i++)if(!e[i].equalsSelection(t[i]))return!1;return!0}}]),e}(),Gn=function(){function e(){(0,c.Z)(this,e),this.kind=4}return(0,d.Z)(e,[{key:"isNoOp",value:function(){return!1}},{key:"merge",value:function(e){return this}}]),e}(),$n=function(){function e(t,n){(0,c.Z)(this,e),this.modelVersionId=t.getVersionId(),this.cursorState=n.getCursorStates()}return(0,d.Z)(e,[{key:"equals",value:function(e){if(!e)return!1;if(this.modelVersionId!==e.modelVersionId)return!1;if(this.cursorState.length!==e.cursorState.length)return!1;for(var t=0,n=this.cursorState.length;t<n;t++)if(!this.cursorState[t].equals(e.cursorState[t]))return!1;return!0}}]),e}(),Qn=function(){function e(t,n,i){(0,c.Z)(this,e),this._model=t,this._autoClosedCharactersDecorations=n,this._autoClosedEnclosingDecorations=i}return(0,d.Z)(e,[{key:"dispose",value:function(){this._autoClosedCharactersDecorations=this._model.deltaDecorations(this._autoClosedCharactersDecorations,[]),this._autoClosedEnclosingDecorations=this._model.deltaDecorations(this._autoClosedEnclosingDecorations,[])}},{key:"getAutoClosedCharactersRanges",value:function(){for(var e=[],t=0;t<this._autoClosedCharactersDecorations.length;t++){var n=this._model.getDecorationRange(this._autoClosedCharactersDecorations[t]);n&&e.push(n)}return e}},{key:"isValid",value:function(e){for(var t=[],n=0;n<this._autoClosedEnclosingDecorations.length;n++){var i=this._model.getDecorationRange(this._autoClosedEnclosingDecorations[n]);if(i&&(t.push(i),i.startLineNumber!==i.endLineNumber))return!1}t.sort(fe.e.compareRangesUsingStarts),e.sort(fe.e.compareRangesUsingStarts);for(var r=0;r<e.length;r++){if(r>=t.length)return!1;if(!t[r].strictContainsRange(e[r]))return!1}return!0}}],[{key:"getAllAutoClosedCharacters",value:function(e){var t,n=[],i=(0,r.Z)(e);try{for(i.s();!(t=i.n()).done;){var o=t.value;n=n.concat(o.getAutoClosedCharactersRanges())}}catch(a){i.e(a)}finally{i.f()}return n}}]),e}(),Xn=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,o){var a;return(0,c.Z)(this,n),(a=t.call(this))._model=e,a._knownModelVersionId=a._model.getVersionId(),a._viewModel=i,a._coordinatesConverter=r,a.context=new pe.zp(a._model,a._coordinatesConverter,o),a._cursors=new wn(a.context),a._hasFocus=!1,a._isHandling=!1,a._isDoingComposition=!1,a._selectionsWhenCompositionStarted=null,a._columnSelectData=null,a._autoClosedActions=[],a._prevEditOperationType=0,a}return(0,d.Z)(n,[{key:"dispose",value:function(){this._cursors.dispose(),this._autoClosedActions=(0,w.B9)(this._autoClosedActions),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"updateConfiguration",value:function(e){this.context=new pe.zp(this._model,this._coordinatesConverter,e),this._cursors.updateContext(this.context)}},{key:"onLineMappingChanged",value:function(e){this._knownModelVersionId===this._model.getVersionId()&&this.setStates(e,"viewModel",0,this.getCursorStates())}},{key:"setHasFocus",value:function(e){this._hasFocus=e}},{key:"_validateAutoClosedActions",value:function(){if(this._autoClosedActions.length>0)for(var e=this._cursors.getSelections(),t=0;t<this._autoClosedActions.length;t++){var n=this._autoClosedActions[t];n.isValid(e)||(n.dispose(),this._autoClosedActions.splice(t,1),t--)}}},{key:"getPrimaryCursorState",value:function(){return this._cursors.getPrimaryCursor()}},{key:"getLastAddedCursorIndex",value:function(){return this._cursors.getLastAddedCursorIndex()}},{key:"getCursorStates",value:function(){return this._cursors.getAll()}},{key:"setStates",value:function(e,t,i,r){var o=!1;null!==r&&r.length>n.MAX_CURSOR_COUNT&&(r=r.slice(0,n.MAX_CURSOR_COUNT),o=!0);var a=new $n(this._model,this);return this._cursors.setStates(r),this._cursors.normalize(),this._columnSelectData=null,this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,t,i,a,o)}},{key:"setCursorColumnSelectData",value:function(e){this._columnSelectData=e}},{key:"revealPrimary",value:function(e,t,n,i){var r=this._cursors.getViewPositions();if(r.length>1)this._emitCursorRevealRange(e,t,null,this._cursors.getViewSelections(),0,n,i);else{var o=r[0],a=new fe.e(o.lineNumber,o.column,o.lineNumber,o.column);this._emitCursorRevealRange(e,t,a,null,0,n,i)}}},{key:"_revealPrimaryCursor",value:function(e,t,n,i,r){var o=this._cursors.getViewPositions();if(o.length>1)this._emitCursorRevealRange(e,t,null,this._cursors.getViewSelections(),n,i,r);else{var a=o[0],s=new fe.e(a.lineNumber,a.column,a.lineNumber,a.column);this._emitCursorRevealRange(e,t,s,null,n,i,r)}}},{key:"_emitCursorRevealRange",value:function(e,t,n,i,r,o,a){e.emitViewEvent(new Pn(t,n,i,r,o,a))}},{key:"saveState",value:function(){for(var e=[],t=this._cursors.getSelections(),n=0,i=t.length;n<i;n++){var r=t[n];e.push({inSelectionMode:!r.isEmpty(),selectionStart:{lineNumber:r.selectionStartLineNumber,column:r.selectionStartColumn},position:{lineNumber:r.positionLineNumber,column:r.positionColumn}})}return e}},{key:"restoreState",value:function(e,t){for(var n=[],i=0,r=t.length;i<r;i++){var o=t[i],a=1,s=1;o.position&&o.position.lineNumber&&(a=o.position.lineNumber),o.position&&o.position.column&&(s=o.position.column);var u=a,l=s;o.selectionStart&&o.selectionStart.lineNumber&&(u=o.selectionStart.lineNumber),o.selectionStart&&o.selectionStart.column&&(l=o.selectionStart.column),n.push({selectionStartLineNumber:u,selectionStartColumn:l,positionLineNumber:a,positionColumn:s})}this.setStates(e,"restoreState",0,pe.Vi.fromModelSelections(n)),this.revealPrimary(e,"restoreState",!0,1)}},{key:"onModelContentChanged",value:function(e,t){if(this._knownModelVersionId=t.versionId,!this._isHandling){var n=t.containsEvent(1);if(this._prevEditOperationType=0,n)this._cursors.dispose(),this._cursors=new wn(this.context),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,"model",1,null,!1);else if(this._hasFocus&&t.resultingSelection&&t.resultingSelection.length>0){var i=pe.Vi.fromModelSelections(t.resultingSelection);this.setStates(e,"modelChange",t.isUndoing?5:t.isRedoing?6:2,i)&&this._revealPrimaryCursor(e,"modelChange",0,!0,0)}else{var r=this._cursors.readSelectionFromMarkers();this.setStates(e,"modelChange",2,pe.Vi.fromModelSelections(r))}}}},{key:"getSelection",value:function(){return this._cursors.getPrimaryCursor().modelState.selection}},{key:"getTopMostViewPosition",value:function(){return this._cursors.getTopMostViewPosition()}},{key:"getBottomMostViewPosition",value:function(){return this._cursors.getBottomMostViewPosition()}},{key:"getCursorColumnSelectData",value:function(){if(this._columnSelectData)return this._columnSelectData;var e=this._cursors.getPrimaryCursor(),t=e.viewState.selectionStart.getStartPosition(),n=e.viewState.position;return{isReal:!1,fromViewLineNumber:t.lineNumber,fromViewVisualColumn:pe.io.visibleColumnFromColumn2(this.context.cursorConfig,this._viewModel,t),toViewLineNumber:n.lineNumber,toViewVisualColumn:pe.io.visibleColumnFromColumn2(this.context.cursorConfig,this._viewModel,n)}}},{key:"getSelections",value:function(){return this._cursors.getSelections()}},{key:"setSelections",value:function(e,t,n,i){this.setStates(e,t,i,pe.Vi.fromModelSelections(n))}},{key:"getPrevEditOperationType",value:function(){return this._prevEditOperationType}},{key:"setPrevEditOperationType",value:function(e){this._prevEditOperationType=e}},{key:"_pushAutoClosedAction",value:function(e,t){for(var n=[],i=[],r=0,o=e.length;r<o;r++)n.push({range:e[r],options:{inlineClassName:"auto-closed-character",stickiness:1}}),i.push({range:t[r],options:{stickiness:1}});var a=this._model.deltaDecorations([],n),s=this._model.deltaDecorations([],i);this._autoClosedActions.push(new Qn(this._model,a,s))}},{key:"_executeEditOperation",value:function(e){if(e){e.shouldPushStackElementBefore&&this._model.pushStackElement();var t=Jn.executeCommands(this._model,this._cursors.getSelections(),e.commands);if(t){this._interpretCommandResult(t);for(var n=[],i=[],r=0;r<e.commands.length;r++){var o=e.commands[r];o instanceof kn.g&&o.enclosingRange&&o.closeCharacterRange&&(n.push(o.closeCharacterRange),i.push(o.enclosingRange))}n.length>0&&this._pushAutoClosedAction(n,i),this._prevEditOperationType=e.type}e.shouldPushStackElementAfter&&this._model.pushStackElement()}}},{key:"_interpretCommandResult",value:function(e){e&&0!==e.length||(e=this._cursors.readSelectionFromMarkers()),this._columnSelectData=null,this._cursors.setSelections(e),this._cursors.normalize()}},{key:"_emitStateChangedIfNecessary",value:function(e,t,n,i,r){var o=new $n(this._model,this);if(o.equals(i))return!1;var a=this._cursors.getSelections(),s=this._cursors.getViewSelections();if(e.emitViewEvent(new En(s,a)),!i||i.cursorState.length!==o.cursorState.length||o.cursorState.some((function(e,t){return!e.modelState.equals(i.cursorState[t].modelState)}))){var u=i?i.cursorState.map((function(e){return e.modelState.selection})):null,l=i?i.modelVersionId:0;e.emitOutgoingEvent(new qn(u,a,l,o.modelVersionId,t||"keyboard",n,r))}return!0}},{key:"_findAutoClosingPairs",value:function(e){if(!e.length)return null;for(var t=[],n=0,i=e.length;n<i;n++){var r=e[n];if(!r.text||r.text.indexOf("\n")>=0)return null;var o=r.text.match(/([)\]}>'"`])([^)\]}>'"`]*)$/);if(!o)return null;var a=o[1],s=this.context.cursorConfig.autoClosingPairs.autoClosingPairsCloseSingleChar.get(a);if(!s||1!==s.length)return null;var u=s[0].open,l=r.text.length-o[2].length-1,c=r.text.lastIndexOf(u,l-1);if(-1===c)return null;t.push([c,l])}return t}},{key:"executeEdits",value:function(e,t,n,r){var o=this,a=null;"snippet"===t&&(a=this._findAutoClosingPairs(n)),a&&(n[0]._isTracked=!0);var s=[],u=[],l=this._model.pushEditOperations(this.getSelections(),n,(function(e){if(a)for(var t=0,n=a.length;t<n;t++){var l=(0,i.Z)(a[t],2),c=l[0],d=l[1],h=e[t],f=h.range.startLineNumber,p=h.range.startColumn-1+c,g=h.range.startColumn-1+d;s.push(new fe.e(f,g+1,f,g+2)),u.push(new fe.e(f,p+1,f,g+2))}var v=r(e);return v&&(o._isHandling=!0),v}));l&&(this._isHandling=!1,this.setSelections(e,t,l,0)),s.length>0&&this._pushAutoClosedAction(s,u)}},{key:"_executeEdit",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(!this.context.cursorConfig.readOnly){var r=new $n(this._model,this);this._cursors.stopTrackingSelections(),this._isHandling=!0;try{this._cursors.ensureValidState(),e()}catch(o){(0,y.dL)(o)}this._isHandling=!1,this._cursors.startTrackingSelections(),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(t,n,i,r,!1)&&this._revealPrimaryCursor(t,n,0,!0,0)}}},{key:"setIsDoingComposition",value:function(e){this._isDoingComposition=e}},{key:"getAutoClosedCharacters",value:function(){return Qn.getAllAutoClosedCharacters(this._autoClosedActions)}},{key:"startComposition",value:function(e){this._selectionsWhenCompositionStarted=this.getSelections().slice(0)}},{key:"endComposition",value:function(e,t){var n=this;this._executeEdit((function(){"keyboard"===t&&(n._executeEditOperation(kn.u.compositionEndWithInterceptors(n._prevEditOperationType,n.context.cursorConfig,n._model,n._selectionsWhenCompositionStarted,n.getSelections(),n.getAutoClosedCharacters())),n._selectionsWhenCompositionStarted=null)}),e,t)}},{key:"type",value:function(e,t,n){var i=this;this._executeEdit((function(){if("keyboard"===n)for(var e=t.length,r=0;r<e;){var o=Re.vH(t,r),a=t.substr(r,o);i._executeEditOperation(kn.u.typeWithInterceptors(i._isDoingComposition,i._prevEditOperationType,i.context.cursorConfig,i._model,i.getSelections(),i.getAutoClosedCharacters(),a)),r+=o}else i._executeEditOperation(kn.u.typeWithoutInterceptors(i._prevEditOperationType,i.context.cursorConfig,i._model,i.getSelections(),t))}),e,n)}},{key:"compositionType",value:function(e,t,n,i,r,o){var a=this;if(0!==t.length||0!==n||0!==i)this._executeEdit((function(){a._executeEditOperation(kn.u.compositionType(a._prevEditOperationType,a.context.cursorConfig,a._model,a.getSelections(),t,n,i,r))}),e,o);else if(0!==r){var s=this.getSelections().map((function(e){var t=e.getPosition();return new L.Y(t.lineNumber,t.column+r,t.lineNumber,t.column+r)}));this.setSelections(e,o,s,0)}}},{key:"paste",value:function(e,t,n,i,r){var o=this;this._executeEdit((function(){o._executeEditOperation(kn.u.paste(o.context.cursorConfig,o._model,o.getSelections(),t,n,i||[]))}),e,r,4)}},{key:"cut",value:function(e,t){var n=this;this._executeEdit((function(){n._executeEditOperation(Cn.A.cut(n.context.cursorConfig,n._model,n.getSelections()))}),e,t)}},{key:"executeCommand",value:function(e,t,n){var i=this;this._executeEdit((function(){i._cursors.killSecondaryCursors(),i._executeEditOperation(new pe.Tp(0,[t],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))}),e,n)}},{key:"executeCommands",value:function(e,t,n){var i=this;this._executeEdit((function(){i._executeEditOperation(new pe.Tp(0,t,{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))}),e,n)}}]),n}(w.JT);Xn.MAX_CURSOR_COUNT=1e4;var Jn=function(){function e(){(0,c.Z)(this,e)}return(0,d.Z)(e,null,[{key:"executeCommands",value:function(e,t,n){for(var i={model:e,selectionsBefore:t,trackedRanges:[],trackedRangesDirection:[]},r=this._innerExecuteCommands(i,n),o=0,a=i.trackedRanges.length;o<a;o++)i.model._setTrackedRange(i.trackedRanges[o],null,0);return r}},{key:"_innerExecuteCommands",value:function(e,t){if(this._arrayIsEmpty(t))return null;var n=this._getEditOperations(e,t);if(0===n.operations.length)return null;var i=n.operations,o=this._getLoserCursorMap(i);if(o.hasOwnProperty("0"))return console.warn("Ignoring commands"),null;for(var a=[],s=0,u=i.length;s<u;s++)o.hasOwnProperty(i[s].identifier.major.toString())||a.push(i[s]);n.hadTrackedEditOperation&&a.length>0&&(a[0]._isTracked=!0);var l=e.model.pushEditOperations(e.selectionsBefore,a,(function(n){for(var i=[],o=0;o<e.selectionsBefore.length;o++)i[o]=[];var a,s=(0,r.Z)(n);try{for(s.s();!(a=s.n()).done;){var u=a.value;u.identifier&&i[u.identifier.major].push(u)}}catch(f){s.e(f)}finally{s.f()}for(var l=function(e,t){return e.identifier.minor-t.identifier.minor},c=[],d=function(n){i[n].length>0?(i[n].sort(l),c[n]=t[n].computeCursorState(e.model,{getInverseEditOperations:function(){return i[n]},getTrackedSelection:function(t){var n=parseInt(t,10),i=e.model._getTrackedRange(e.trackedRanges[n]);return 0===e.trackedRangesDirection[n]?new L.Y(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn):new L.Y(i.endLineNumber,i.endColumn,i.startLineNumber,i.startColumn)}})):c[n]=e.selectionsBefore[n]},h=0;h<e.selectionsBefore.length;h++)d(h);return c}));l||(l=e.selectionsBefore);var c=[];for(var d in o)o.hasOwnProperty(d)&&c.push(parseInt(d,10));c.sort((function(e,t){return t-e}));for(var h=0,f=c;h<f.length;h++){var p=f[h];l.splice(p,1)}return l}},{key:"_arrayIsEmpty",value:function(e){for(var t=0,n=e.length;t<n;t++)if(e[t])return!1;return!0}},{key:"_getEditOperations",value:function(e,t){for(var n=[],i=!1,r=0,o=t.length;r<o;r++){var a=t[r];if(a){var s=this._getEditOperationsFromCommand(e,r,a);n=n.concat(s.operations),i=i||s.hadTrackedEditOperation}}return{operations:n,hadTrackedEditOperation:i}}},{key:"_getEditOperationsFromCommand",value:function(e,t,n){var i=[],r=0,o=function(e,o){var a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];fe.e.isEmpty(e)&&""===o||i.push({identifier:{major:t,minor:r++},range:e,text:o,forceMoveMarkers:a,isAutoWhitespaceEdit:n.insertsAutoWhitespace})},a=!1,s={addEditOperation:o,addTrackedEditOperation:function(e,t,n){a=!0,o(e,t,n)},trackSelection:function(t,n){var i,r=L.Y.liftSelection(t);if(r.isEmpty())if("boolean"===typeof n)i=n?2:3;else{var o=e.model.getLineMaxColumn(r.startLineNumber);i=r.startColumn===o?2:3}else i=1;var a=e.trackedRanges.length,s=e.model._setTrackedRange(null,r,i);return e.trackedRanges[a]=s,e.trackedRangesDirection[a]=r.getDirection(),a.toString()}};try{n.getEditOperations(e.model,s)}catch(u){return(0,y.dL)(u),{operations:[],hadTrackedEditOperation:!1}}return{operations:i,hadTrackedEditOperation:a}}},{key:"_getLoserCursorMap",value:function(e){(e=e.slice(0)).sort((function(e,t){return-fe.e.compareRangesUsingEnds(e.range,t.range)}));for(var t={},n=1;n<e.length;n++){var i=e[n-1],r=e[n];if(fe.e.getStartPosition(i.range).isBefore(fe.e.getEndPosition(r.range))){var o=void 0;t[(o=i.identifier.major>r.identifier.major?i.identifier.major:r.identifier.major).toString()]=!0;for(var a=0;a<e.length;a++)e[a].identifier.major===o&&(e.splice(a,1),a<n&&n--,a--);n>0&&n--}}return t}}]),e}(),ei=n(30633),ti=n(30062),ni=n(21204),ii=n(54821),ri=n(58604),oi=function(){function e(){(0,c.Z)(this,e),this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[]}return(0,d.Z)(e,[{key:"insert",value:function(e){this._hasPending=!0,this._inserts.push(e)}},{key:"change",value:function(e){this._hasPending=!0,this._changes.push(e)}},{key:"remove",value:function(e){this._hasPending=!0,this._removes.push(e)}},{key:"mustCommit",value:function(){return this._hasPending}},{key:"commit",value:function(e){if(this._hasPending){var t=this._inserts,n=this._changes,i=this._removes;this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[],e._commitPendingChanges(t,n,i)}}}]),e}(),ai=(0,d.Z)((function e(t,n,i,r,o){(0,c.Z)(this,e),this.id=t,this.afterLineNumber=n,this.ordinal=i,this.height=r,this.minWidth=o,this.prefixSum=0})),si=function(){function e(t,n,i,r){(0,c.Z)(this,e),this._instanceId=Re.PJ(++e.INSTANCE_COUNT),this._pendingChanges=new oi,this._lastWhitespaceId=0,this._arr=[],this._prefixSumValidIndex=-1,this._minWidth=-1,this._lineCount=t,this._lineHeight=n,this._paddingTop=i,this._paddingBottom=r}return(0,d.Z)(e,[{key:"setLineHeight",value:function(e){this._checkPendingChanges(),this._lineHeight=e}},{key:"setPadding",value:function(e,t){this._paddingTop=e,this._paddingBottom=t}},{key:"onFlushed",value:function(e){this._checkPendingChanges(),this._lineCount=e}},{key:"changeWhitespace",value:function(e){var t=this,n=!1;try{e({insertWhitespace:function(e,i,r,o){n=!0,e|=0,i|=0,r|=0,o|=0;var a=t._instanceId+ ++t._lastWhitespaceId;return t._pendingChanges.insert(new ai(a,e,i,r,o)),a},changeOneWhitespace:function(e,i,r){n=!0,i|=0,r|=0,t._pendingChanges.change({id:e,newAfterLineNumber:i,newHeight:r})},removeWhitespace:function(e){n=!0,t._pendingChanges.remove({id:e})}})}finally{this._pendingChanges.commit(this)}return n}},{key:"_commitPendingChanges",value:function(e,t,n){if((e.length>0||n.length>0)&&(this._minWidth=-1),e.length+t.length+n.length<=1){var i,o=(0,r.Z)(e);try{for(o.s();!(i=o.n()).done;){var a=i.value;this._insertWhitespace(a)}}catch(S){o.e(S)}finally{o.f()}var s,u=(0,r.Z)(t);try{for(u.s();!(s=u.n()).done;){var l=s.value;this._changeOneWhitespace(l.id,l.newAfterLineNumber,l.newHeight)}}catch(S){u.e(S)}finally{u.f()}var c,d=(0,r.Z)(n);try{for(d.s();!(c=d.n()).done;){var h=c.value,f=this._findWhitespaceIndex(h.id);-1!==f&&this._removeWhitespace(f)}}catch(S){d.e(S)}finally{d.f()}}else{var p,g=new Set,v=(0,r.Z)(n);try{for(v.s();!(p=v.n()).done;){var m=p.value;g.add(m.id)}}catch(S){v.e(S)}finally{v.f()}var _,y=new Map,b=(0,r.Z)(t);try{for(b.s();!(_=b.n()).done;){var w=_.value;y.set(w.id,w)}}catch(S){b.e(S)}finally{b.f()}var C=function(e){var t,n=[],i=(0,r.Z)(e);try{for(i.s();!(t=i.n()).done;){var o=t.value;if(!g.has(o.id)){if(y.has(o.id)){var a=y.get(o.id);o.afterLineNumber=a.newAfterLineNumber,o.height=a.newHeight}n.push(o)}}}catch(S){i.e(S)}finally{i.f()}return n},k=C(this._arr).concat(C(e));k.sort((function(e,t){return e.afterLineNumber===t.afterLineNumber?e.ordinal-t.ordinal:e.afterLineNumber-t.afterLineNumber})),this._arr=k,this._prefixSumValidIndex=-1}}},{key:"_checkPendingChanges",value:function(){this._pendingChanges.mustCommit()&&this._pendingChanges.commit(this)}},{key:"_insertWhitespace",value:function(t){var n=e.findInsertionIndex(this._arr,t.afterLineNumber,t.ordinal);this._arr.splice(n,0,t),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,n-1)}},{key:"_findWhitespaceIndex",value:function(e){for(var t=this._arr,n=0,i=t.length;n<i;n++)if(t[n].id===e)return n;return-1}},{key:"_changeOneWhitespace",value:function(e,t,n){var i=this._findWhitespaceIndex(e);if(-1!==i&&(this._arr[i].height!==n&&(this._arr[i].height=n,this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,i-1)),this._arr[i].afterLineNumber!==t)){var r=this._arr[i];this._removeWhitespace(i),r.afterLineNumber=t,this._insertWhitespace(r)}}},{key:"_removeWhitespace",value:function(e){this._arr.splice(e,1),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,e-1)}},{key:"onLinesDeleted",value:function(e,t){this._checkPendingChanges(),e|=0,t|=0,this._lineCount-=t-e+1;for(var n=0,i=this._arr.length;n<i;n++){var r=this._arr[n].afterLineNumber;e<=r&&r<=t?this._arr[n].afterLineNumber=e-1:r>t&&(this._arr[n].afterLineNumber-=t-e+1)}}},{key:"onLinesInserted",value:function(e,t){this._checkPendingChanges(),e|=0,t|=0,this._lineCount+=t-e+1;for(var n=0,i=this._arr.length;n<i;n++){e<=this._arr[n].afterLineNumber&&(this._arr[n].afterLineNumber+=t-e+1)}}},{key:"getWhitespacesTotalHeight",value:function(){return this._checkPendingChanges(),0===this._arr.length?0:this.getWhitespacesAccumulatedHeight(this._arr.length-1)}},{key:"getWhitespacesAccumulatedHeight",value:function(e){this._checkPendingChanges(),e|=0;var t=Math.max(0,this._prefixSumValidIndex+1);0===t&&(this._arr[0].prefixSum=this._arr[0].height,t++);for(var n=t;n<=e;n++)this._arr[n].prefixSum=this._arr[n-1].prefixSum+this._arr[n].height;return this._prefixSumValidIndex=Math.max(this._prefixSumValidIndex,e),this._arr[e].prefixSum}},{key:"getLinesTotalHeight",value:function(){return this._checkPendingChanges(),this._lineHeight*this._lineCount+this.getWhitespacesTotalHeight()+this._paddingTop+this._paddingBottom}},{key:"getWhitespaceAccumulatedHeightBeforeLineNumber",value:function(e){this._checkPendingChanges(),e|=0;var t=this._findLastWhitespaceBeforeLineNumber(e);return-1===t?0:this.getWhitespacesAccumulatedHeight(t)}},{key:"_findLastWhitespaceBeforeLineNumber",value:function(e){e|=0;for(var t=this._arr,n=0,i=t.length-1;n<=i;){var r=n+((i-n|0)/2|0)|0;if(t[r].afterLineNumber<e){if(r+1>=t.length||t[r+1].afterLineNumber>=e)return r;n=r+1|0}else i=r-1|0}return-1}},{key:"_findFirstWhitespaceAfterLineNumber",value:function(e){e|=0;var t=this._findLastWhitespaceBeforeLineNumber(e)+1;return t<this._arr.length?t:-1}},{key:"getFirstWhitespaceIndexAfterLineNumber",value:function(e){return this._checkPendingChanges(),e|=0,this._findFirstWhitespaceAfterLineNumber(e)}},{key:"getVerticalOffsetForLineNumber",value:function(e){return this._checkPendingChanges(),((e|=0)>1?this._lineHeight*(e-1):0)+this.getWhitespaceAccumulatedHeightBeforeLineNumber(e)+this._paddingTop}},{key:"getWhitespaceMinWidth",value:function(){if(this._checkPendingChanges(),-1===this._minWidth){for(var e=0,t=0,n=this._arr.length;t<n;t++)e=Math.max(e,this._arr[t].minWidth);this._minWidth=e}return this._minWidth}},{key:"isAfterLines",value:function(e){return this._checkPendingChanges(),e>this.getLinesTotalHeight()}},{key:"isInTopPadding",value:function(e){return 0!==this._paddingTop&&(this._checkPendingChanges(),e<this._paddingTop)}},{key:"isInBottomPadding",value:function(e){return 0!==this._paddingBottom&&(this._checkPendingChanges(),e>=this.getLinesTotalHeight()-this._paddingBottom)}},{key:"getLineNumberAtOrAfterVerticalOffset",value:function(e){if(this._checkPendingChanges(),(e|=0)<0)return 1;for(var t=0|this._lineCount,n=this._lineHeight,i=1,r=t;i<r;){var o=(i+r)/2|0,a=0|this.getVerticalOffsetForLineNumber(o);if(e>=a+n)i=o+1;else{if(e>=a)return o;r=o}}return i>t?t:i}},{key:"getLinesViewportData",value:function(e,t){this._checkPendingChanges(),e|=0,t|=0;var n,i,r=this._lineHeight,o=0|this.getLineNumberAtOrAfterVerticalOffset(e),a=0|this.getVerticalOffsetForLineNumber(o),s=0|this._lineCount,u=0|this.getFirstWhitespaceIndexAfterLineNumber(o),l=0|this.getWhitespacesCount();-1===u?(u=l,i=s+1,n=0):(i=0|this.getAfterLineNumberForWhitespaceIndex(u),n=0|this.getHeightForWhitespaceIndex(u));var c=a,d=c,h=5e5,f=0;a>=h&&(f=Math.floor(a/h)*h,d-=f=Math.floor(f/r)*r);for(var p=[],g=e+(t-e)/2,v=-1,m=o;m<=s;m++){if(-1===v){(c<=g&&g<c+r||c>g)&&(v=m)}for(c+=r,p[m-o]=d,d+=r;i===m;)d+=n,c+=n,++u>=l?i=s+1:(i=0|this.getAfterLineNumberForWhitespaceIndex(u),n=0|this.getHeightForWhitespaceIndex(u));if(c>=t){s=m;break}}-1===v&&(v=s);var _=0|this.getVerticalOffsetForLineNumber(s),y=o,b=s;return y<b&&a<e&&y++,y<b&&_+r>t&&b--,{bigNumbersDelta:f,startLineNumber:o,endLineNumber:s,relativeVerticalOffset:p,centeredLineNumber:v,completelyVisibleStartLineNumber:y,completelyVisibleEndLineNumber:b}}},{key:"getVerticalOffsetForWhitespaceIndex",value:function(e){this._checkPendingChanges(),e|=0;var t=this.getAfterLineNumberForWhitespaceIndex(e);return(t>=1?this._lineHeight*t:0)+(e>0?this.getWhitespacesAccumulatedHeight(e-1):0)+this._paddingTop}},{key:"getWhitespaceIndexAtOrAfterVerticallOffset",value:function(e){this._checkPendingChanges(),e|=0;var t=0,n=this.getWhitespacesCount()-1;if(n<0)return-1;if(e>=this.getVerticalOffsetForWhitespaceIndex(n)+this.getHeightForWhitespaceIndex(n))return-1;for(;t<n;){var i=Math.floor((t+n)/2),r=this.getVerticalOffsetForWhitespaceIndex(i);if(e>=r+this.getHeightForWhitespaceIndex(i))t=i+1;else{if(e>=r)return i;n=i}}return t}},{key:"getWhitespaceAtVerticalOffset",value:function(e){this._checkPendingChanges(),e|=0;var t=this.getWhitespaceIndexAtOrAfterVerticallOffset(e);if(t<0)return null;if(t>=this.getWhitespacesCount())return null;var n=this.getVerticalOffsetForWhitespaceIndex(t);if(n>e)return null;var i=this.getHeightForWhitespaceIndex(t);return{id:this.getIdForWhitespaceIndex(t),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(t),verticalOffset:n,height:i}}},{key:"getWhitespaceViewportData",value:function(e,t){this._checkPendingChanges(),e|=0,t|=0;var n=this.getWhitespaceIndexAtOrAfterVerticallOffset(e),i=this.getWhitespacesCount()-1;if(n<0)return[];for(var r=[],o=n;o<=i;o++){var a=this.getVerticalOffsetForWhitespaceIndex(o),s=this.getHeightForWhitespaceIndex(o);if(a>=t)break;r.push({id:this.getIdForWhitespaceIndex(o),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(o),verticalOffset:a,height:s})}return r}},{key:"getWhitespaces",value:function(){return this._checkPendingChanges(),this._arr.slice(0)}},{key:"getWhitespacesCount",value:function(){return this._checkPendingChanges(),this._arr.length}},{key:"getIdForWhitespaceIndex",value:function(e){return this._checkPendingChanges(),e|=0,this._arr[e].id}},{key:"getAfterLineNumberForWhitespaceIndex",value:function(e){return this._checkPendingChanges(),e|=0,this._arr[e].afterLineNumber}},{key:"getHeightForWhitespaceIndex",value:function(e){return this._checkPendingChanges(),e|=0,this._arr[e].height}}],[{key:"findInsertionIndex",value:function(e,t,n){for(var i=0,r=e.length;i<r;){var o=i+r>>>1;t===e[o].afterLineNumber?n<e[o].ordinal?r=o:i=o+1:t<e[o].afterLineNumber?r=o:i=o+1}return i}}]),e}();si.INSTANCE_COUNT=0;var ui=function(){function e(t,n,i,r){(0,c.Z)(this,e),(t|=0)<0&&(t=0),(n|=0)<0&&(n=0),(i|=0)<0&&(i=0),(r|=0)<0&&(r=0),this.width=t,this.contentWidth=n,this.scrollWidth=Math.max(t,n),this.height=i,this.contentHeight=r,this.scrollHeight=Math.max(i,r)}return(0,d.Z)(e,[{key:"equals",value:function(e){return this.width===e.width&&this.contentWidth===e.contentWidth&&this.height===e.height&&this.contentHeight===e.contentHeight}}]),e}(),li=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r;return(0,c.Z)(this,n),(r=t.call(this))._onDidContentSizeChange=r._register(new b.Q5),r.onDidContentSizeChange=r._onDidContentSizeChange.event,r._dimensions=new ui(0,0,0,0),r._scrollable=r._register(new ri.Rm(e,i)),r.onDidScroll=r._scrollable.onScroll,r}return(0,d.Z)(n,[{key:"getScrollable",value:function(){return this._scrollable}},{key:"setSmoothScrollDuration",value:function(e){this._scrollable.setSmoothScrollDuration(e)}},{key:"validateScrollPosition",value:function(e){return this._scrollable.validateScrollPosition(e)}},{key:"getScrollDimensions",value:function(){return this._dimensions}},{key:"setScrollDimensions",value:function(e){if(!this._dimensions.equals(e)){var t=this._dimensions;this._dimensions=e,this._scrollable.setScrollDimensions({width:e.width,scrollWidth:e.scrollWidth,height:e.height,scrollHeight:e.scrollHeight},!0);var n=t.contentWidth!==e.contentWidth,i=t.contentHeight!==e.contentHeight;(n||i)&&this._onDidContentSizeChange.fire(new Vn(t.contentWidth,t.contentHeight,e.contentWidth,e.contentHeight))}}},{key:"getFutureScrollPosition",value:function(){return this._scrollable.getFutureScrollPosition()}},{key:"getCurrentScrollPosition",value:function(){return this._scrollable.getCurrentScrollPosition()}},{key:"setScrollPositionNow",value:function(e){this._scrollable.setScrollPositionNow(e)}},{key:"setScrollPositionSmooth",value:function(e){this._scrollable.setScrollPositionSmooth(e)}}]),n}(w.JT),ci=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r){var o;(0,c.Z)(this,n),(o=t.call(this))._configuration=e;var a=o._configuration.options,s=a.get(127),u=a.get(71);return o._linesLayout=new si(i,a.get(55),u.top,u.bottom),o._scrollable=o._register(new li(0,r)),o._configureSmoothScrollDuration(),o._scrollable.setScrollDimensions(new ui(s.contentWidth,0,s.height,0)),o.onDidScroll=o._scrollable.onDidScroll,o.onDidContentSizeChange=o._scrollable.onDidContentSizeChange,o._updateHeight(),o}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"getScrollable",value:function(){return this._scrollable.getScrollable()}},{key:"onHeightMaybeChanged",value:function(){this._updateHeight()}},{key:"_configureSmoothScrollDuration",value:function(){this._scrollable.setSmoothScrollDuration(this._configuration.options.get(100)?125:0)}},{key:"onConfigurationChanged",value:function(e){var t=this._configuration.options;if(e.hasChanged(55)&&this._linesLayout.setLineHeight(t.get(55)),e.hasChanged(71)){var n=t.get(71);this._linesLayout.setPadding(n.top,n.bottom)}if(e.hasChanged(127)){var i=t.get(127),r=i.contentWidth,o=i.height,a=this._scrollable.getScrollDimensions(),s=a.contentWidth;this._scrollable.setScrollDimensions(new ui(r,a.contentWidth,o,this._getContentHeight(r,o,s)))}else this._updateHeight();e.hasChanged(100)&&this._configureSmoothScrollDuration()}},{key:"onFlushed",value:function(e){this._linesLayout.onFlushed(e)}},{key:"onLinesDeleted",value:function(e,t){this._linesLayout.onLinesDeleted(e,t)}},{key:"onLinesInserted",value:function(e,t){this._linesLayout.onLinesInserted(e,t)}},{key:"_getHorizontalScrollbarHeight",value:function(e,t){var n=this._configuration.options.get(89);return 2===n.horizontal||e>=t?0:n.horizontalScrollbarSize}},{key:"_getContentHeight",value:function(e,t,n){var i=this._configuration.options,r=this._linesLayout.getLinesTotalHeight();return i.get(91)?r+=Math.max(0,t-i.get(55)-i.get(71).bottom):r+=this._getHorizontalScrollbarHeight(e,n),r}},{key:"_updateHeight",value:function(){var e=this._scrollable.getScrollDimensions(),t=e.width,n=e.height,i=e.contentWidth;this._scrollable.setScrollDimensions(new ui(t,e.contentWidth,n,this._getContentHeight(t,n,i)))}},{key:"getCurrentViewport",value:function(){var e=this._scrollable.getScrollDimensions(),t=this._scrollable.getCurrentScrollPosition();return new Tt.l_(t.scrollTop,t.scrollLeft,e.width,e.height)}},{key:"getFutureViewport",value:function(){var e=this._scrollable.getScrollDimensions(),t=this._scrollable.getFutureScrollPosition();return new Tt.l_(t.scrollTop,t.scrollLeft,e.width,e.height)}},{key:"_computeContentWidth",value:function(e){var t=this._configuration.options,n=t.get(128),i=t.get(40);if(n.isViewportWrapping){var r=t.get(127),o=t.get(61);return e>r.contentWidth+i.typicalHalfwidthCharacterWidth&&o.enabled&&"right"===o.side?e+r.verticalScrollbarWidth:e}var a=t.get(90)*i.typicalHalfwidthCharacterWidth,s=this._linesLayout.getWhitespaceMinWidth();return Math.max(e+a,s)}},{key:"setMaxLineWidth",value:function(e){var t=this._scrollable.getScrollDimensions();this._scrollable.setScrollDimensions(new ui(t.width,this._computeContentWidth(e),t.height,t.contentHeight)),this._updateHeight()}},{key:"saveState",value:function(){var e=this._scrollable.getFutureScrollPosition(),t=e.scrollTop,n=this._linesLayout.getLineNumberAtOrAfterVerticalOffset(t);return{scrollTop:t,scrollTopWithoutViewZones:t-this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(n),scrollLeft:e.scrollLeft}}},{key:"changeWhitespace",value:function(e){var t=this._linesLayout.changeWhitespace(e);return t&&this.onHeightMaybeChanged(),t}},{key:"getVerticalOffsetForLineNumber",value:function(e){return this._linesLayout.getVerticalOffsetForLineNumber(e)}},{key:"isAfterLines",value:function(e){return this._linesLayout.isAfterLines(e)}},{key:"isInTopPadding",value:function(e){return this._linesLayout.isInTopPadding(e)}},{key:"isInBottomPadding",value:function(e){return this._linesLayout.isInBottomPadding(e)}},{key:"getLineNumberAtVerticalOffset",value:function(e){return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(e)}},{key:"getWhitespaceAtVerticalOffset",value:function(e){return this._linesLayout.getWhitespaceAtVerticalOffset(e)}},{key:"getLinesViewportData",value:function(){var e=this.getCurrentViewport();return this._linesLayout.getLinesViewportData(e.top,e.top+e.height)}},{key:"getLinesViewportDataAtScrollTop",value:function(e){var t=this._scrollable.getScrollDimensions();return e+t.height>t.scrollHeight&&(e=t.scrollHeight-t.height),e<0&&(e=0),this._linesLayout.getLinesViewportData(e,e+t.height)}},{key:"getWhitespaceViewportData",value:function(){var e=this.getCurrentViewport();return this._linesLayout.getWhitespaceViewportData(e.top,e.top+e.height)}},{key:"getWhitespaces",value:function(){return this._linesLayout.getWhitespaces()}},{key:"getContentWidth",value:function(){return this._scrollable.getScrollDimensions().contentWidth}},{key:"getScrollWidth",value:function(){return this._scrollable.getScrollDimensions().scrollWidth}},{key:"getContentHeight",value:function(){return this._scrollable.getScrollDimensions().contentHeight}},{key:"getScrollHeight",value:function(){return this._scrollable.getScrollDimensions().scrollHeight}},{key:"getCurrentScrollLeft",value:function(){return this._scrollable.getCurrentScrollPosition().scrollLeft}},{key:"getCurrentScrollTop",value:function(){return this._scrollable.getCurrentScrollPosition().scrollTop}},{key:"validateScrollPosition",value:function(e){return this._scrollable.validateScrollPosition(e)}},{key:"setScrollPosition",value:function(e,t){1===t?this._scrollable.setScrollPositionNow(e):this._scrollable.setScrollPositionSmooth(e)}},{key:"deltaScrollNow",value:function(e,t){var n=this._scrollable.getCurrentScrollPosition();this._scrollable.setScrollPositionNow({scrollLeft:n.scrollLeft+e,scrollTop:n.scrollTop+t})}}]),n}(w.JT),di=n(28893),hi=n(21043),fi=function(){function e(t){(0,c.Z)(this,e),this._lines=t}return(0,d.Z)(e,[{key:"convertViewPositionToModelPosition",value:function(e){return this._lines.convertViewPositionToModelPosition(e.lineNumber,e.column)}},{key:"convertViewRangeToModelRange",value:function(e){return this._lines.convertViewRangeToModelRange(e)}},{key:"validateViewPosition",value:function(e,t){return this._lines.validateViewPosition(e.lineNumber,e.column,t)}},{key:"validateViewRange",value:function(e,t){return this._lines.validateViewRange(e,t)}},{key:"convertModelPositionToViewPosition",value:function(e){return this._lines.convertModelPositionToViewPosition(e.lineNumber,e.column)}},{key:"convertModelRangeToViewRange",value:function(e){return this._lines.convertModelRangeToViewRange(e)}},{key:"modelPositionIsVisible",value:function(e){return this._lines.modelPositionIsVisible(e.lineNumber,e.column)}},{key:"getModelLineViewLineCount",value:function(e){return this._lines.getModelLineViewLineCount(e)}}]),e}(),pi=function(){function e(t){(0,c.Z)(this,e),this._counts=t,this._isValid=!1,this._validEndIndex=-1,this._modelToView=[],this._viewToModel=[]}return(0,d.Z)(e,[{key:"_invalidate",value:function(e){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,e-1)}},{key:"_ensureValid",value:function(){if(!this._isValid){for(var e=this._validEndIndex+1,t=this._counts.length;e<t;e++){var n=this._counts[e],i=e>0?this._modelToView[e-1]:0;this._modelToView[e]=i+n;for(var r=0;r<n;r++)this._viewToModel[i+r]=e}this._modelToView.length=this._counts.length,this._viewToModel.length=this._modelToView[this._modelToView.length-1],this._isValid=!0,this._validEndIndex=this._counts.length-1}}},{key:"changeValue",value:function(e,t){this._counts[e]!==t&&(this._counts[e]=t,this._invalidate(e))}},{key:"removeValues",value:function(e,t){this._counts.splice(e,t),this._invalidate(e)}},{key:"insertValues",value:function(e,t){this._counts=ct.Zv(this._counts,e,t),this._invalidate(e)}},{key:"getTotalValue",value:function(){return this._ensureValid(),this._viewToModel.length}},{key:"getAccumulatedValue",value:function(e){return this._ensureValid(),this._modelToView[e]}},{key:"getIndexOf",value:function(e){this._ensureValid();var t=this._viewToModel[e],n=t>0?this._modelToView[t-1]:0;return new hi.T(t,e-n)}}]),e}(),gi=function(){function e(t,n,i,r,o,a,s,u){(0,c.Z)(this,e),this.model=t,this._validModelVersionId=-1,this._domLineBreaksComputerFactory=n,this._monospaceLineBreaksComputerFactory=i,this.fontInfo=r,this.tabSize=o,this.wrappingStrategy=a,this.wrappingColumn=s,this.wrappingIndent=u,this._constructLines(!0,null)}return(0,d.Z)(e,[{key:"dispose",value:function(){this.hiddenAreasIds=this.model.deltaDecorations(this.hiddenAreasIds,[])}},{key:"createCoordinatesConverter",value:function(){return new fi(this)}},{key:"_constructLines",value:function(e,t){var n=this;this.lines=[],e&&(this.hiddenAreasIds=[]);for(var i=this.model.getLinesContent(),r=i.length,o=this.createLineBreaksComputer(),a=0;a<r;a++)o.addRequest(i[a],t?t[a]:null);for(var s=o.finalize(),u=[],l=this.hiddenAreasIds.map((function(e){return n.model.getDecorationRange(e)})).sort(fe.e.compareRangesUsingStarts),c=1,d=0,h=-1,f=h+1<l.length?d+1:r+2,p=0;p<r;p++){var g=p+1;g===f&&(c=l[++h].startLineNumber,d=l[h].endLineNumber,f=h+1<l.length?d+1:r+2);var v=g>=c&&g<=d,m=Ci(s[p],!v);u[p]=m.getViewLineCount(),this.lines[p]=m}this._validModelVersionId=this.model.getVersionId(),this.prefixSumComputer=new pi(u)}},{key:"getHiddenAreas",value:function(){var e=this;return this.hiddenAreasIds.map((function(t){return e.model.getDecorationRange(t)}))}},{key:"_reduceRanges",value:function(e){var t=this;if(0===e.length)return[];for(var n=e.map((function(e){return t.model.validateRange(e)})).sort(fe.e.compareRangesUsingStarts),i=[],r=n[0].startLineNumber,o=n[0].endLineNumber,a=1,s=n.length;a<s;a++){var u=n[a];u.startLineNumber>o+1?(i.push(new fe.e(r,1,o,1)),r=u.startLineNumber,o=u.endLineNumber):u.endLineNumber>o&&(o=u.endLineNumber)}return i.push(new fe.e(r,1,o,1)),i}},{key:"setHiddenAreas",value:function(e){var t=this,n=this._reduceRanges(e),i=this.hiddenAreasIds.map((function(e){return t.model.getDecorationRange(e)})).sort(fe.e.compareRangesUsingStarts);if(n.length===i.length){for(var o=!1,a=0;a<n.length;a++)if(!n[a].equalsRange(i[a])){o=!0;break}if(!o)return!1}var s,u=[],l=(0,r.Z)(n);try{for(l.s();!(s=l.n()).done;){var c=s.value;u.push({range:c,options:di.qx.EMPTY})}}catch(w){l.e(w)}finally{l.f()}this.hiddenAreasIds=this.model.deltaDecorations(this.hiddenAreasIds,u);for(var d=n,h=1,f=0,p=-1,g=p+1<d.length?f+1:this.lines.length+2,v=!1,m=0;m<this.lines.length;m++){var _=m+1;_===g&&(h=d[++p].startLineNumber,f=d[p].endLineNumber,g=p+1<d.length?f+1:this.lines.length+2);var y=!1;if(_>=h&&_<=f?this.lines[m].isVisible()&&(this.lines[m]=this.lines[m].setVisible(!1),y=!0):(v=!0,this.lines[m].isVisible()||(this.lines[m]=this.lines[m].setVisible(!0),y=!0)),y){var b=this.lines[m].getViewLineCount();this.prefixSumComputer.changeValue(m,b)}}return v||this.setHiddenAreas([]),!0}},{key:"modelPositionIsVisible",value:function(e,t){return!(e<1||e>this.lines.length)&&this.lines[e-1].isVisible()}},{key:"getModelLineViewLineCount",value:function(e){return e<1||e>this.lines.length?1:this.lines[e-1].getViewLineCount()}},{key:"setTabSize",value:function(e){return this.tabSize!==e&&(this.tabSize=e,this._constructLines(!1,null),!0)}},{key:"setWrappingSettings",value:function(e,t,n,i){var r=this.fontInfo.equals(e),o=this.wrappingStrategy===t,a=this.wrappingColumn===n,s=this.wrappingIndent===i;if(r&&o&&a&&s)return!1;var u=r&&o&&!a&&s;this.fontInfo=e,this.wrappingStrategy=t,this.wrappingColumn=n,this.wrappingIndent=i;var l=null;if(u){l=[];for(var c=0,d=this.lines.length;c<d;c++)l[c]=this.lines[c].getLineBreakData()}return this._constructLines(!1,l),!0}},{key:"createLineBreaksComputer",value:function(){return("advanced"===this.wrappingStrategy?this._domLineBreaksComputerFactory:this._monospaceLineBreaksComputerFactory).createLineBreaksComputer(this.fontInfo,this.tabSize,this.wrappingColumn,this.wrappingIndent)}},{key:"onModelFlushed",value:function(){this._constructLines(!0,null)}},{key:"onModelLinesDeleted",value:function(e,t,n){if(e<=this._validModelVersionId)return null;var i=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1,r=this.prefixSumComputer.getAccumulatedValue(n-1);return this.lines.splice(t-1,n-t+1),this.prefixSumComputer.removeValues(t-1,n-t+1),new An(i,r)}},{key:"onModelLinesInserted",value:function(e,t,n,i){if(e<=this._validModelVersionId)return null;for(var r=t>2&&!this.lines[t-2].isVisible(),o=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1,a=0,s=[],u=[],l=0,c=i.length;l<c;l++){var d=Ci(i[l],!r);s.push(d);var h=d.getViewLineCount();a+=h,u[l]=h}return this.lines=this.lines.slice(0,t-1).concat(s).concat(this.lines.slice(t-1)),this.prefixSumComputer.insertValues(t-1,u),new Rn(o,o+a-1)}},{key:"onModelLineChanged",value:function(e,t,n){if(e<=this._validModelVersionId)return[!1,null,null,null];var i=t-1,r=this.lines[i].getViewLineCount(),o=Ci(n,this.lines[i].isVisible());this.lines[i]=o;var a=this.lines[i].getViewLineCount(),s=!1,u=0,l=-1,c=0,d=-1,h=0,f=-1;return r>a?(f=(h=(l=(u=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1)+a-1)+1)+(r-a)-1,s=!0):r<a?(d=(c=(l=(u=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1)+r-1)+1)+(a-r)-1,s=!0):l=(u=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1)+a-1,this.prefixSumComputer.changeValue(i,a),[s,u<=l?new On(u,l):null,c<=d?new Rn(c,d):null,h<=f?new An(h,f):null]}},{key:"acceptVersionId",value:function(e){this._validModelVersionId=e,1!==this.lines.length||this.lines[0].isVisible()||this.setHiddenAreas([])}},{key:"getViewLineCount",value:function(){return this.prefixSumComputer.getTotalValue()}},{key:"_toValidViewLineNumber",value:function(e){if(e<1)return 1;var t=this.getViewLineCount();return e>t?t:0|e}},{key:"getActiveIndentGuide",value:function(e,t,n){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t),n=this._toValidViewLineNumber(n);var i=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),r=this.convertViewPositionToModelPosition(t,this.getViewLineMinColumn(t)),o=this.convertViewPositionToModelPosition(n,this.getViewLineMinColumn(n)),a=this.model.getActiveIndentGuide(i.lineNumber,r.lineNumber,o.lineNumber),s=this.convertModelPositionToViewPosition(a.startLineNumber,1),u=this.convertModelPositionToViewPosition(a.endLineNumber,this.model.getLineMaxColumn(a.endLineNumber));return{startLineNumber:s.lineNumber,endLineNumber:u.lineNumber,indent:a.indent}}},{key:"getViewLinesIndentGuides",value:function(e,t){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);for(var n=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),i=this.convertViewPositionToModelPosition(t,this.getViewLineMaxColumn(t)),r=[],o=[],a=[],s=n.lineNumber-1,u=i.lineNumber-1,l=null,c=s;c<=u;c++){var d=this.lines[c];if(d.isVisible()){var h=d.getViewLineNumberOfModelPosition(0,c===s?n.column:1),f=d.getViewLineNumberOfModelPosition(0,this.model.getLineMaxColumn(c+1)),p=f-h+1,g=0;p>1&&1===d.getViewLineMinColumn(this.model,c+1,f)&&(g=0===h?1:2),o.push(p),a.push(g),null===l&&(l=new he.L(c+1,0))}else null!==l&&(r=r.concat(this.model.getLinesIndentGuides(l.lineNumber,c)),l=null)}null!==l&&(r=r.concat(this.model.getLinesIndentGuides(l.lineNumber,i.lineNumber)),l=null);for(var v=t-e+1,m=new Array(v),_=0,y=0,b=r.length;y<b;y++){var w=r[y],C=Math.min(v-_,o[y]),k=a[y],S=void 0;S=2===k?0:1===k?1:C;for(var x=0;x<C;x++)x===S&&(w=0),m[_++]=w}return m}},{key:"getViewLineContent",value:function(e){e=this._toValidViewLineNumber(e);var t=this.prefixSumComputer.getIndexOf(e-1),n=t.index,i=t.remainder;return this.lines[n].getViewLineContent(this.model,n+1,i)}},{key:"getViewLineLength",value:function(e){e=this._toValidViewLineNumber(e);var t=this.prefixSumComputer.getIndexOf(e-1),n=t.index,i=t.remainder;return this.lines[n].getViewLineLength(this.model,n+1,i)}},{key:"getViewLineMinColumn",value:function(e){e=this._toValidViewLineNumber(e);var t=this.prefixSumComputer.getIndexOf(e-1),n=t.index,i=t.remainder;return this.lines[n].getViewLineMinColumn(this.model,n+1,i)}},{key:"getViewLineMaxColumn",value:function(e){e=this._toValidViewLineNumber(e);var t=this.prefixSumComputer.getIndexOf(e-1),n=t.index,i=t.remainder;return this.lines[n].getViewLineMaxColumn(this.model,n+1,i)}},{key:"getViewLineData",value:function(e){e=this._toValidViewLineNumber(e);var t=this.prefixSumComputer.getIndexOf(e-1),n=t.index,i=t.remainder;return this.lines[n].getViewLineData(this.model,n+1,i)}},{key:"getViewLinesData",value:function(e,t,n){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);for(var i=this.prefixSumComputer.getIndexOf(e-1),r=e,o=i.index,a=i.remainder,s=[],u=o,l=this.model.getLineCount();u<l;u++){var c=this.lines[u];if(c.isVisible()){var d=u===o?a:0,h=c.getViewLineCount()-d,f=!1;r+h>t&&(f=!0,h=t-r+1);var p=d+h;if(c.getViewLinesData(this.model,u+1,d,p,r-e,n,s),r+=h,f)break}}return s}},{key:"validateViewPosition",value:function(e,t,n){e=this._toValidViewLineNumber(e);var i=this.prefixSumComputer.getIndexOf(e-1),r=i.index,o=i.remainder,a=this.lines[r],s=a.getViewLineMinColumn(this.model,r+1,o),u=a.getViewLineMaxColumn(this.model,r+1,o);t<s&&(t=s),t>u&&(t=u);var l=a.getModelColumnOfViewPosition(o,t);return this.model.validatePosition(new he.L(r+1,l)).equals(n)?new he.L(e,t):this.convertModelPositionToViewPosition(n.lineNumber,n.column)}},{key:"validateViewRange",value:function(e,t){var n=this.validateViewPosition(e.startLineNumber,e.startColumn,t.getStartPosition()),i=this.validateViewPosition(e.endLineNumber,e.endColumn,t.getEndPosition());return new fe.e(n.lineNumber,n.column,i.lineNumber,i.column)}},{key:"convertViewPositionToModelPosition",value:function(e,t){e=this._toValidViewLineNumber(e);var n=this.prefixSumComputer.getIndexOf(e-1),i=n.index,r=n.remainder,o=this.lines[i].getModelColumnOfViewPosition(r,t);return this.model.validatePosition(new he.L(i+1,o))}},{key:"convertViewRangeToModelRange",value:function(e){var t=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),n=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);return new fe.e(t.lineNumber,t.column,n.lineNumber,n.column)}},{key:"convertModelPositionToViewPosition",value:function(e,t){for(var n=this.model.validatePosition(new he.L(e,t)),i=n.lineNumber,r=n.column,o=i-1,a=!1;o>0&&!this.lines[o].isVisible();)o--,a=!0;if(0===o&&!this.lines[o].isVisible())return new he.L(1,1);var s=1+(0===o?0:this.prefixSumComputer.getAccumulatedValue(o-1));return a?this.lines[o].getViewPositionOfModelPosition(s,this.model.getLineMaxColumn(o+1)):this.lines[i-1].getViewPositionOfModelPosition(s,r)}},{key:"convertModelRangeToViewRange",value:function(e){var t=this.convertModelPositionToViewPosition(e.startLineNumber,e.startColumn),n=this.convertModelPositionToViewPosition(e.endLineNumber,e.endColumn);return e.startLineNumber===e.endLineNumber&&t.lineNumber!==n.lineNumber&&n.column===this.getViewLineMinColumn(n.lineNumber)?new fe.e(t.lineNumber,t.column,n.lineNumber-1,this.getViewLineMaxColumn(n.lineNumber-1)):new fe.e(t.lineNumber,t.column,n.lineNumber,n.column)}},{key:"_getViewLineNumberForModelPosition",value:function(e,t){var n=e-1;if(this.lines[n].isVisible()){var i=1+(0===n?0:this.prefixSumComputer.getAccumulatedValue(n-1));return this.lines[n].getViewLineNumberOfModelPosition(i,t)}for(;n>0&&!this.lines[n].isVisible();)n--;if(0===n&&!this.lines[n].isVisible())return 1;var r=1+(0===n?0:this.prefixSumComputer.getAccumulatedValue(n-1));return this.lines[n].getViewLineNumberOfModelPosition(r,this.model.getLineMaxColumn(n+1))}},{key:"getAllOverviewRulerDecorations",value:function(e,t,n){var i,o=this.model.getOverviewRulerDecorations(e,t),a=new Li,s=(0,r.Z)(o);try{for(s.s();!(i=s.n()).done;){var u=i.value,l=u.options.overviewRuler,c=l?l.position:0;if(0!==c){var d=l.getColor(n),h=this._getViewLineNumberForModelPosition(u.range.startLineNumber,u.range.startColumn),f=this._getViewLineNumberForModelPosition(u.range.endLineNumber,u.range.endColumn);a.accept(d,h,f,c)}}}catch(p){s.e(p)}finally{s.f()}return a.result}},{key:"getDecorationsInRange",value:function(e,t,n){var i=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),o=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);if(o.lineNumber-i.lineNumber<=e.endLineNumber-e.startLineNumber)return this.model.getDecorationsInRange(new fe.e(i.lineNumber,1,o.lineNumber,o.column),t,n);for(var a=[],s=i.lineNumber-1,u=o.lineNumber-1,l=null,c=s;c<=u;c++){if(this.lines[c].isVisible())null===l&&(l=new he.L(c+1,c===s?i.column:1));else if(null!==l){var d=this.model.getLineMaxColumn(c);a=a.concat(this.model.getDecorationsInRange(new fe.e(l.lineNumber,l.column,c,d),t,n)),l=null}}null!==l&&(a=a.concat(this.model.getDecorationsInRange(new fe.e(l.lineNumber,l.column,o.lineNumber,o.column),t,n)),l=null),a.sort((function(e,t){var n=fe.e.compareRangesUsingStarts(e.range,t.range);return 0===n?e.id<t.id?-1:e.id>t.id?1:0:n}));var h,f=[],p=0,g=null,v=(0,r.Z)(a);try{for(v.s();!(h=v.n()).done;){var m=h.value,_=m.id;g!==_&&(g=_,f[p++]=m)}}catch(y){v.e(y)}finally{v.f()}return f}}]),e}(),vi=function(){function e(){(0,c.Z)(this,e)}return(0,d.Z)(e,[{key:"isVisible",value:function(){return!0}},{key:"setVisible",value:function(e){return e?this:mi.INSTANCE}},{key:"getLineBreakData",value:function(){return null}},{key:"getViewLineCount",value:function(){return 1}},{key:"getViewLineContent",value:function(e,t,n){return e.getLineContent(t)}},{key:"getViewLineLength",value:function(e,t,n){return e.getLineLength(t)}},{key:"getViewLineMinColumn",value:function(e,t,n){return e.getLineMinColumn(t)}},{key:"getViewLineMaxColumn",value:function(e,t,n){return e.getLineMaxColumn(t)}},{key:"getViewLineData",value:function(e,t,n){var i=e.getLineTokens(t),r=i.getLineContent();return new Tt.IP(r,!1,1,r.length+1,0,i.inflate())}},{key:"getViewLinesData",value:function(e,t,n,i,r,o,a){o[r]?a[r]=this.getViewLineData(e,t,0):a[r]=null}},{key:"getModelColumnOfViewPosition",value:function(e,t){return t}},{key:"getViewPositionOfModelPosition",value:function(e,t){return new he.L(e,t)}},{key:"getViewLineNumberOfModelPosition",value:function(e,t){return e}}]),e}();vi.INSTANCE=new vi;var mi=function(){function e(){(0,c.Z)(this,e)}return(0,d.Z)(e,[{key:"isVisible",value:function(){return!1}},{key:"setVisible",value:function(e){return e?vi.INSTANCE:this}},{key:"getLineBreakData",value:function(){return null}},{key:"getViewLineCount",value:function(){return 0}},{key:"getViewLineContent",value:function(e,t,n){throw new Error("Not supported")}},{key:"getViewLineLength",value:function(e,t,n){throw new Error("Not supported")}},{key:"getViewLineMinColumn",value:function(e,t,n){throw new Error("Not supported")}},{key:"getViewLineMaxColumn",value:function(e,t,n){throw new Error("Not supported")}},{key:"getViewLineData",value:function(e,t,n){throw new Error("Not supported")}},{key:"getViewLinesData",value:function(e,t,n,i,r,o,a){throw new Error("Not supported")}},{key:"getModelColumnOfViewPosition",value:function(e,t){throw new Error("Not supported")}},{key:"getViewPositionOfModelPosition",value:function(e,t){throw new Error("Not supported")}},{key:"getViewLineNumberOfModelPosition",value:function(e,t){throw new Error("Not supported")}}]),e}();mi.INSTANCE=new mi;var _i=function(){function e(t,n){(0,c.Z)(this,e),this._lineBreakData=t,this._isVisible=n}return(0,d.Z)(e,[{key:"isVisible",value:function(){return this._isVisible}},{key:"setVisible",value:function(e){return this._isVisible=e,this}},{key:"getLineBreakData",value:function(){return this._lineBreakData}},{key:"getViewLineCount",value:function(){return this._isVisible?this._lineBreakData.breakOffsets.length:0}},{key:"getInputStartOffsetOfOutputLineIndex",value:function(e){return Tt.le.getInputOffsetOfOutputPosition(this._lineBreakData.breakOffsets,e,0)}},{key:"getInputEndOffsetOfOutputLineIndex",value:function(e,t,n){return n+1===this._lineBreakData.breakOffsets.length?e.getLineMaxColumn(t)-1:Tt.le.getInputOffsetOfOutputPosition(this._lineBreakData.breakOffsets,n+1,0)}},{key:"getViewLineContent",value:function(e,t,n){if(!this._isVisible)throw new Error("Not supported");var i=this.getInputStartOffsetOfOutputLineIndex(n),r=this.getInputEndOffsetOfOutputLineIndex(e,t,n),o=e.getValueInRange({startLineNumber:t,startColumn:i+1,endLineNumber:t,endColumn:r+1});return n>0&&(o=bi(this._lineBreakData.wrappedTextIndentLength)+o),o}},{key:"getViewLineLength",value:function(e,t,n){if(!this._isVisible)throw new Error("Not supported");var i=this.getInputStartOffsetOfOutputLineIndex(n),r=this.getInputEndOffsetOfOutputLineIndex(e,t,n)-i;return n>0&&(r=this._lineBreakData.wrappedTextIndentLength+r),r}},{key:"getViewLineMinColumn",value:function(e,t,n){if(!this._isVisible)throw new Error("Not supported");return n>0?this._lineBreakData.wrappedTextIndentLength+1:1}},{key:"getViewLineMaxColumn",value:function(e,t,n){if(!this._isVisible)throw new Error("Not supported");return this.getViewLineContent(e,t,n).length+1}},{key:"getViewLineData",value:function(e,t,n){if(!this._isVisible)throw new Error("Not supported");var i=this.getInputStartOffsetOfOutputLineIndex(n),r=this.getInputEndOffsetOfOutputLineIndex(e,t,n),o=e.getValueInRange({startLineNumber:t,startColumn:i+1,endLineNumber:t,endColumn:r+1});n>0&&(o=bi(this._lineBreakData.wrappedTextIndentLength)+o);var a=n>0?this._lineBreakData.wrappedTextIndentLength+1:1,s=o.length+1,u=n+1<this.getViewLineCount(),l=0;n>0&&(l=this._lineBreakData.wrappedTextIndentLength);var c=e.getLineTokens(t),d=0===n?0:this._lineBreakData.breakOffsetsVisibleColumn[n-1];return new Tt.IP(o,u,a,s,d,c.sliceAndInflate(i,r,l))}},{key:"getViewLinesData",value:function(e,t,n,i,r,o,a){if(!this._isVisible)throw new Error("Not supported");for(var s=n;s<i;s++){var u=r+s-n;o[u]?a[u]=this.getViewLineData(e,t,s):a[u]=null}}},{key:"getModelColumnOfViewPosition",value:function(e,t){if(!this._isVisible)throw new Error("Not supported");var n=t-1;return e>0&&(n<this._lineBreakData.wrappedTextIndentLength?n=0:n-=this._lineBreakData.wrappedTextIndentLength),Tt.le.getInputOffsetOfOutputPosition(this._lineBreakData.breakOffsets,e,n)+1}},{key:"getViewPositionOfModelPosition",value:function(e,t){if(!this._isVisible)throw new Error("Not supported");var n=Tt.le.getOutputPositionOfInputOffset(this._lineBreakData.breakOffsets,t-1),i=n.outputLineIndex,r=n.outputOffset+1;return i>0&&(r+=this._lineBreakData.wrappedTextIndentLength),new he.L(e+i,r)}},{key:"getViewLineNumberOfModelPosition",value:function(e,t){if(!this._isVisible)throw new Error("Not supported");return e+Tt.le.getOutputPositionOfInputOffset(this._lineBreakData.breakOffsets,t-1).outputLineIndex}}]),e}(),yi=[""];function bi(e){if(e>=yi.length)for(var t=1;t<=e;t++)yi[t]=wi(t);return yi[e]}function wi(e){return new Array(e+1).join(" ")}function Ci(e,t){return null===e?t?vi.INSTANCE:mi.INSTANCE:new _i(e,t)}var ki,Si=function(){function e(t){(0,c.Z)(this,e),this._lines=t}return(0,d.Z)(e,[{key:"_validPosition",value:function(e){return this._lines.model.validatePosition(e)}},{key:"_validRange",value:function(e){return this._lines.model.validateRange(e)}},{key:"convertViewPositionToModelPosition",value:function(e){return this._validPosition(e)}},{key:"convertViewRangeToModelRange",value:function(e){return this._validRange(e)}},{key:"validateViewPosition",value:function(e,t){return this._validPosition(t)}},{key:"validateViewRange",value:function(e,t){return this._validRange(t)}},{key:"convertModelPositionToViewPosition",value:function(e){return this._validPosition(e)}},{key:"convertModelRangeToViewRange",value:function(e){return this._validRange(e)}},{key:"modelPositionIsVisible",value:function(e){var t=this._lines.model.getLineCount();return!(e.lineNumber<1||e.lineNumber>t)}},{key:"getModelLineViewLineCount",value:function(e){return 1}}]),e}(),xi=function(){function e(t){(0,c.Z)(this,e),this.model=t}return(0,d.Z)(e,[{key:"dispose",value:function(){}},{key:"createCoordinatesConverter",value:function(){return new Si(this)}},{key:"getHiddenAreas",value:function(){return[]}},{key:"setHiddenAreas",value:function(e){return!1}},{key:"setTabSize",value:function(e){return!1}},{key:"setWrappingSettings",value:function(e,t,n,i){return!1}},{key:"createLineBreaksComputer",value:function(){var e=[];return{addRequest:function(t,n){e.push(null)},finalize:function(){return e}}}},{key:"onModelFlushed",value:function(){}},{key:"onModelLinesDeleted",value:function(e,t,n){return new An(t,n)}},{key:"onModelLinesInserted",value:function(e,t,n,i){return new Rn(t,n)}},{key:"onModelLineChanged",value:function(e,t,n){return[!1,new On(t,t),null,null]}},{key:"acceptVersionId",value:function(e){}},{key:"getViewLineCount",value:function(){return this.model.getLineCount()}},{key:"getActiveIndentGuide",value:function(e,t,n){return{startLineNumber:e,endLineNumber:e,indent:0}}},{key:"getViewLinesIndentGuides",value:function(e,t){for(var n=t-e+1,i=new Array(n),r=0;r<n;r++)i[r]=0;return i}},{key:"getViewLineContent",value:function(e){return this.model.getLineContent(e)}},{key:"getViewLineLength",value:function(e){return this.model.getLineLength(e)}},{key:"getViewLineMinColumn",value:function(e){return this.model.getLineMinColumn(e)}},{key:"getViewLineMaxColumn",value:function(e){return this.model.getLineMaxColumn(e)}},{key:"getViewLineData",value:function(e){var t=this.model.getLineTokens(e),n=t.getLineContent();return new Tt.IP(n,!1,1,n.length+1,0,t.inflate())}},{key:"getViewLinesData",value:function(e,t,n){var i=this.model.getLineCount();e=Math.min(Math.max(1,e),i),t=Math.min(Math.max(1,t),i);for(var r=[],o=e;o<=t;o++){var a=o-e;n[a]||(r[a]=null),r[a]=this.getViewLineData(o)}return r}},{key:"getAllOverviewRulerDecorations",value:function(e,t,n){var i,o=this.model.getOverviewRulerDecorations(e,t),a=new Li,s=(0,r.Z)(o);try{for(s.s();!(i=s.n()).done;){var u=i.value,l=u.options.overviewRuler,c=l?l.position:0;if(0!==c){var d=l.getColor(n),h=u.range.startLineNumber,f=u.range.endLineNumber;a.accept(d,h,f,c)}}}catch(p){s.e(p)}finally{s.f()}return a.result}},{key:"getDecorationsInRange",value:function(e,t,n){return this.model.getDecorationsInRange(e,t,n)}}]),e}(),Li=function(){function e(){(0,c.Z)(this,e),this.result=Object.create(null)}return(0,d.Z)(e,[{key:"accept",value:function(e,t,n,i){var r=this.result[e];if(r){var o=r[r.length-3],a=r[r.length-1];if(o===i&&a+1>=t)return void(n>a&&(r[r.length-1]=n));r.push(i,t,n)}else this.result[e]=[i,t,n]}}]),e}(),Ei=function(){function e(t,n,i,r,o){(0,c.Z)(this,e),this.editorId=t,this.model=n,this.configuration=i,this._linesCollection=r,this._coordinatesConverter=o,this._decorationsCache=Object.create(null),this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}return(0,d.Z)(e,[{key:"_clearCachedModelDecorationsResolver",value:function(){this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}},{key:"dispose",value:function(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}},{key:"reset",value:function(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}},{key:"onModelDecorationsChanged",value:function(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}},{key:"onLineMappingChanged",value:function(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}},{key:"_getOrCreateViewModelDecoration",value:function(e){var t=e.id,n=this._decorationsCache[t];if(!n){var i,r=e.range,o=e.options;if(o.isWholeLine){var a=this._coordinatesConverter.convertModelPositionToViewPosition(new he.L(r.startLineNumber,1)),s=this._coordinatesConverter.convertModelPositionToViewPosition(new he.L(r.endLineNumber,this.model.getLineMaxColumn(r.endLineNumber)));i=new fe.e(a.lineNumber,a.column,s.lineNumber,s.column)}else i=this._coordinatesConverter.convertModelRangeToViewRange(r);n=new Tt.$l(i,o),this._decorationsCache[t]=n}return n}},{key:"getDecorationsViewportData",value:function(e){var t=null!==this._cachedModelDecorationsResolver;return(t=t&&e.equalsRange(this._cachedModelDecorationsResolverViewRange))||(this._cachedModelDecorationsResolver=this._getDecorationsViewportData(e),this._cachedModelDecorationsResolverViewRange=e),this._cachedModelDecorationsResolver}},{key:"_getDecorationsViewportData",value:function(e){for(var t=this._linesCollection.getDecorationsInRange(e,this.editorId,(0,ee.$J)(this.configuration.options)),n=e.startLineNumber,i=e.endLineNumber,r=[],o=0,a=[],s=n;s<=i;s++)a[s-n]=[];for(var u=0,l=t.length;u<l;u++){var c=t[u],d=c.options,h=this._getOrCreateViewModelDecoration(c),f=h.range;if(r[o++]=h,d.inlineClassName)for(var p=new Tt.$t(f,d.inlineClassName,d.inlineClassNameAffectsLetterSpacing?3:0),g=Math.max(n,f.startLineNumber),v=Math.min(i,f.endLineNumber),m=g;m<=v;m++)a[m-n].push(p);if(d.beforeContentClassName&&n<=f.startLineNumber&&f.startLineNumber<=i){var _=new Tt.$t(new fe.e(f.startLineNumber,f.startColumn,f.startLineNumber,f.startColumn),d.beforeContentClassName,1);a[f.startLineNumber-n].push(_)}if(d.afterContentClassName&&n<=f.endLineNumber&&f.endLineNumber<=i){var y=new Tt.$t(new fe.e(f.endLineNumber,f.endColumn,f.endLineNumber,f.endColumn),d.afterContentClassName,2);a[f.endLineNumber-n].push(y)}}return{decorations:r,inlineDecorations:a}}}]),e}(),Di=!0,Ni=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,a,s,u){var l;if((0,c.Z)(this,n),(l=t.call(this))._editorId=e,l._configuration=i,l.model=r,l._eventDispatcher=new zn,l.onEvent=l._eventDispatcher.onEvent,l.cursorConfig=new pe.LM(l.model.getLanguageIdentifier(),l.model.getOptions(),l._configuration),l._tokenizeViewportSoon=l._register(new T.pY((function(){return l.tokenizeViewport()}),50)),l._updateConfigurationViewLineCount=l._register(new T.pY((function(){return l._updateConfigurationViewLineCountNow()}),0)),l._hasFocus=!1,l._viewportStartLine=-1,l._viewportStartLineTrackedRange=null,l._viewportStartLineDelta=0,Di&&l.model.isTooLargeForTokenization())l._lines=new xi(l.model);else{var d=l._configuration.options,h=d.get(40),f=d.get(121),p=d.get(128),g=d.get(120);l._lines=new gi(l.model,a,s,h,l.model.getOptions().tabSize,f,p.wrappingColumn,g)}return l.coordinatesConverter=l._lines.createCoordinatesConverter(),l._cursor=l._register(new Xn(r,(0,o.Z)(l),l.coordinatesConverter,l.cursorConfig)),l.viewLayout=l._register(new ci(l._configuration,l.getLineCount(),u)),l._register(l.viewLayout.onDidScroll((function(e){e.scrollTopChanged&&l._tokenizeViewportSoon.schedule(),l._eventDispatcher.emitSingleViewEvent(new Zn(e)),l._eventDispatcher.emitOutgoingEvent(new Un(e.oldScrollWidth,e.oldScrollLeft,e.oldScrollHeight,e.oldScrollTop,e.scrollWidth,e.scrollLeft,e.scrollHeight,e.scrollTop))}))),l._register(l.viewLayout.onDidContentSizeChange((function(e){l._eventDispatcher.emitOutgoingEvent(e)}))),l._decorations=new Ei(l._editorId,l.model,l._configuration,l._lines,l.coordinatesConverter),l._registerModelEvents(),l._register(l._configuration.onDidChangeFast((function(e){try{var t=l._eventDispatcher.beginEmitViewEvents();l._onConfigurationChanged(t,e)}finally{l._eventDispatcher.endEmitViewEvents()}}))),l._register(Mt.getInstance().onDidChange((function(){l._eventDispatcher.emitSingleViewEvent(new Hn)}))),l._updateConfigurationViewLineCountNow(),l}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this),this._decorations.dispose(),this._lines.dispose(),this.invalidateMinimapColorCache(),this._viewportStartLineTrackedRange=this.model._setTrackedRange(this._viewportStartLineTrackedRange,null,1),this._eventDispatcher.dispose()}},{key:"createLineBreaksComputer",value:function(){return this._lines.createLineBreaksComputer()}},{key:"addViewEventHandler",value:function(e){this._eventDispatcher.addViewEventHandler(e)}},{key:"removeViewEventHandler",value:function(e){this._eventDispatcher.removeViewEventHandler(e)}},{key:"_updateConfigurationViewLineCountNow",value:function(){this._configuration.setViewLineCount(this._lines.getViewLineCount())}},{key:"tokenizeViewport",value:function(){var e=this.viewLayout.getLinesViewportData(),t=this.coordinatesConverter.convertViewPositionToModelPosition(new he.L(e.startLineNumber,1)),n=this.coordinatesConverter.convertViewPositionToModelPosition(new he.L(e.endLineNumber,1));this.model.tokenizeViewport(t.lineNumber,n.lineNumber)}},{key:"setHasFocus",value:function(e){this._hasFocus=e,this._cursor.setHasFocus(e),this._eventDispatcher.emitSingleViewEvent(new Mn(e)),this._eventDispatcher.emitOutgoingEvent(new Yn(!e,e))}},{key:"onCompositionStart",value:function(){this._eventDispatcher.emitSingleViewEvent(new Sn)}},{key:"onCompositionEnd",value:function(){this._eventDispatcher.emitSingleViewEvent(new xn)}},{key:"onDidColorThemeChange",value:function(){this._eventDispatcher.emitSingleViewEvent(new Fn)}},{key:"_onConfigurationChanged",value:function(e,t){var n=null;if(-1!==this._viewportStartLine){var i=new he.L(this._viewportStartLine,this.getLineMinColumn(this._viewportStartLine));n=this.coordinatesConverter.convertViewPositionToModelPosition(i)}var r=!1,o=this._configuration.options,a=o.get(40),s=o.get(121),u=o.get(128),l=o.get(120);if(this._lines.setWrappingSettings(a,s,u.wrappingColumn,l)&&(e.emitViewEvent(new Nn),e.emitViewEvent(new In),e.emitViewEvent(new Dn(null)),this._cursor.onLineMappingChanged(e),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),0!==this.viewLayout.getCurrentScrollTop()&&(r=!0),this._updateConfigurationViewLineCount.schedule()),t.hasChanged(77)&&(this._decorations.reset(),e.emitViewEvent(new Dn(null))),e.emitViewEvent(new Ln(t)),this.viewLayout.onConfigurationChanged(t),r&&n){var c=this.coordinatesConverter.convertModelPositionToViewPosition(n),d=this.viewLayout.getVerticalOffsetForLineNumber(c.lineNumber);this.viewLayout.setScrollPosition({scrollTop:d+this._viewportStartLineDelta},1)}pe.LM.shouldRecreate(t)&&(this.cursorConfig=new pe.LM(this.model.getLanguageIdentifier(),this.model.getOptions(),this._configuration),this._cursor.updateConfiguration(this.cursorConfig))}},{key:"_registerModelEvents",value:function(){var e=this;this._register(this.model.onDidChangeRawContentFast((function(t){try{var n,o=e._eventDispatcher.beginEmitViewEvents(),a=!1,s=!1,u=t.changes,l=t.versionId,c=e._lines.createLineBreaksComputer(),d=(0,r.Z)(u);try{for(d.s();!(n=d.n()).done;){var h=n.value;switch(h.changeType){case 4:var f,p=(0,r.Z)(h.detail);try{for(p.s();!(f=p.n()).done;){var g=f.value;c.addRequest(g,null)}}catch(R){p.e(R)}finally{p.f()}break;case 2:c.addRequest(h.detail,null)}}}catch(R){d.e(R)}finally{d.f()}var v,m=c.finalize(),_=0,y=(0,r.Z)(u);try{for(y.s();!(v=y.n()).done;){var b=v.value;switch(b.changeType){case 1:e._lines.onModelFlushed(),o.emitViewEvent(new Nn),e._decorations.reset(),e.viewLayout.onFlushed(e.getLineCount()),a=!0;break;case 3:var w=e._lines.onModelLinesDeleted(l,b.fromLineNumber,b.toLineNumber);null!==w&&(o.emitViewEvent(w),e.viewLayout.onLinesDeleted(w.fromLineNumber,w.toLineNumber)),a=!0;break;case 4:var C=m.slice(_,_+b.detail.length);_+=b.detail.length;var k=e._lines.onModelLinesInserted(l,b.fromLineNumber,b.toLineNumber,C);null!==k&&(o.emitViewEvent(k),e.viewLayout.onLinesInserted(k.fromLineNumber,k.toLineNumber)),a=!0;break;case 2:var S=m[_];_++;var x=e._lines.onModelLineChanged(l,b.lineNumber,S),L=(0,i.Z)(x,4),E=L[0],D=L[1],N=L[2],M=L[3];s=E,D&&o.emitViewEvent(D),N&&(o.emitViewEvent(N),e.viewLayout.onLinesInserted(N.fromLineNumber,N.toLineNumber)),M&&(o.emitViewEvent(M),e.viewLayout.onLinesDeleted(M.fromLineNumber,M.toLineNumber))}}}catch(R){y.e(R)}finally{y.f()}e._lines.acceptVersionId(l),e.viewLayout.onHeightMaybeChanged(),!a&&s&&(o.emitViewEvent(new In),o.emitViewEvent(new Dn(null)),e._cursor.onLineMappingChanged(o),e._decorations.onLineMappingChanged())}finally{e._eventDispatcher.endEmitViewEvents()}if(e._viewportStartLine=-1,e._configuration.setMaxLineNumber(e.model.getLineCount()),e._updateConfigurationViewLineCountNow(),!e._hasFocus&&e.model.getAttachedEditorCount()>=2&&e._viewportStartLineTrackedRange){var T=e.model._getTrackedRange(e._viewportStartLineTrackedRange);if(T){var I=e.coordinatesConverter.convertModelPositionToViewPosition(T.getStartPosition()),O=e.viewLayout.getVerticalOffsetForLineNumber(I.lineNumber);e.viewLayout.setScrollPosition({scrollTop:O+e._viewportStartLineDelta},1)}}try{var A=e._eventDispatcher.beginEmitViewEvents();e._cursor.onModelContentChanged(A,t)}finally{e._eventDispatcher.endEmitViewEvents()}}))),this._register(this.model.onDidChangeTokens((function(t){for(var n=[],i=0,r=t.ranges.length;i<r;i++){var o=t.ranges[i],a=e.coordinatesConverter.convertModelPositionToViewPosition(new he.L(o.fromLineNumber,1)).lineNumber,s=e.coordinatesConverter.convertModelPositionToViewPosition(new he.L(o.toLineNumber,e.model.getLineMaxColumn(o.toLineNumber))).lineNumber;n[i]={fromLineNumber:a,toLineNumber:s}}e._eventDispatcher.emitSingleViewEvent(new jn(n)),t.tokenizationSupportChanged&&e._tokenizeViewportSoon.schedule()}))),this._register(this.model.onDidChangeLanguageConfiguration((function(t){e._eventDispatcher.emitSingleViewEvent(new Tn),e.cursorConfig=new pe.LM(e.model.getLanguageIdentifier(),e.model.getOptions(),e._configuration),e._cursor.updateConfiguration(e.cursorConfig)}))),this._register(this.model.onDidChangeLanguage((function(t){e.cursorConfig=new pe.LM(e.model.getLanguageIdentifier(),e.model.getOptions(),e._configuration),e._cursor.updateConfiguration(e.cursorConfig)}))),this._register(this.model.onDidChangeOptions((function(t){if(e._lines.setTabSize(e.model.getOptions().tabSize)){try{var n=e._eventDispatcher.beginEmitViewEvents();n.emitViewEvent(new Nn),n.emitViewEvent(new In),n.emitViewEvent(new Dn(null)),e._cursor.onLineMappingChanged(n),e._decorations.onLineMappingChanged(),e.viewLayout.onFlushed(e.getLineCount())}finally{e._eventDispatcher.endEmitViewEvents()}e._updateConfigurationViewLineCount.schedule()}e.cursorConfig=new pe.LM(e.model.getLanguageIdentifier(),e.model.getOptions(),e._configuration),e._cursor.updateConfiguration(e.cursorConfig)}))),this._register(this.model.onDidChangeDecorations((function(t){e._decorations.onModelDecorationsChanged(),e._eventDispatcher.emitSingleViewEvent(new Dn(t))})))}},{key:"setHiddenAreas",value:function(e){try{var t=this._eventDispatcher.beginEmitViewEvents();this._lines.setHiddenAreas(e)&&(t.emitViewEvent(new Nn),t.emitViewEvent(new In),t.emitViewEvent(new Dn(null)),this._cursor.onLineMappingChanged(t),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this.viewLayout.onHeightMaybeChanged())}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule()}},{key:"getVisibleRangesPlusViewportAboveBelow",value:function(){var e=this._configuration.options.get(127),t=this._configuration.options.get(55),n=Math.max(20,Math.round(e.height/t)),i=this.viewLayout.getLinesViewportData(),r=Math.max(1,i.completelyVisibleStartLineNumber-n),o=Math.min(this.getLineCount(),i.completelyVisibleEndLineNumber+n);return this._toModelVisibleRanges(new fe.e(r,this.getLineMinColumn(r),o,this.getLineMaxColumn(o)))}},{key:"getVisibleRanges",value:function(){var e=this.getCompletelyVisibleViewRange();return this._toModelVisibleRanges(e)}},{key:"_toModelVisibleRanges",value:function(e){var t=this.coordinatesConverter.convertViewRangeToModelRange(e),n=this._lines.getHiddenAreas();if(0===n.length)return[t];for(var i=[],r=0,o=t.startLineNumber,a=t.startColumn,s=t.endLineNumber,u=t.endColumn,l=0,c=n.length;l<c;l++){var d=n[l].startLineNumber,h=n[l].endLineNumber;h<o||(d>s||(o<d&&(i[r++]=new fe.e(o,a,d-1,this.model.getLineMaxColumn(d-1))),o=h+1,a=1))}return(o<s||o===s&&a<u)&&(i[r++]=new fe.e(o,a,s,u)),i}},{key:"getCompletelyVisibleViewRange",value:function(){var e=this.viewLayout.getLinesViewportData(),t=e.completelyVisibleStartLineNumber,n=e.completelyVisibleEndLineNumber;return new fe.e(t,this.getLineMinColumn(t),n,this.getLineMaxColumn(n))}},{key:"getCompletelyVisibleViewRangeAtScrollTop",value:function(e){var t=this.viewLayout.getLinesViewportDataAtScrollTop(e),n=t.completelyVisibleStartLineNumber,i=t.completelyVisibleEndLineNumber;return new fe.e(n,this.getLineMinColumn(n),i,this.getLineMaxColumn(i))}},{key:"saveState",value:function(){var e=this.viewLayout.saveState(),t=e.scrollTop,n=this.viewLayout.getLineNumberAtVerticalOffset(t),i=this.coordinatesConverter.convertViewPositionToModelPosition(new he.L(n,this.getLineMinColumn(n))),r=this.viewLayout.getVerticalOffsetForLineNumber(n)-t;return{scrollLeft:e.scrollLeft,firstPosition:i,firstPositionDeltaTop:r}}},{key:"reduceRestoreState",value:function(e){if("undefined"===typeof e.firstPosition)return this._reduceRestoreStateCompatibility(e);var t=this.model.validatePosition(e.firstPosition),n=this.coordinatesConverter.convertModelPositionToViewPosition(t),i=this.viewLayout.getVerticalOffsetForLineNumber(n.lineNumber)-e.firstPositionDeltaTop;return{scrollLeft:e.scrollLeft,scrollTop:i}}},{key:"_reduceRestoreStateCompatibility",value:function(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTopWithoutViewZones}}},{key:"getTabSize",value:function(){return this.model.getOptions().tabSize}},{key:"getTextModelOptions",value:function(){return this.model.getOptions()}},{key:"getLineCount",value:function(){return this._lines.getViewLineCount()}},{key:"setViewport",value:function(e,t,n){this._viewportStartLine=e;var i=this.coordinatesConverter.convertViewPositionToModelPosition(new he.L(e,this.getLineMinColumn(e)));this._viewportStartLineTrackedRange=this.model._setTrackedRange(this._viewportStartLineTrackedRange,new fe.e(i.lineNumber,i.column,i.lineNumber,i.column),1);var r=this.viewLayout.getVerticalOffsetForLineNumber(e),o=this.viewLayout.getCurrentScrollTop();this._viewportStartLineDelta=o-r}},{key:"getActiveIndentGuide",value:function(e,t,n){return this._lines.getActiveIndentGuide(e,t,n)}},{key:"getLinesIndentGuides",value:function(e,t){return this._lines.getViewLinesIndentGuides(e,t)}},{key:"getLineContent",value:function(e){return this._lines.getViewLineContent(e)}},{key:"getLineLength",value:function(e){return this._lines.getViewLineLength(e)}},{key:"getLineMinColumn",value:function(e){return this._lines.getViewLineMinColumn(e)}},{key:"getLineMaxColumn",value:function(e){return this._lines.getViewLineMaxColumn(e)}},{key:"getLineFirstNonWhitespaceColumn",value:function(e){var t=Re.LC(this.getLineContent(e));return-1===t?0:t+1}},{key:"getLineLastNonWhitespaceColumn",value:function(e){var t=Re.ow(this.getLineContent(e));return-1===t?0:t+2}},{key:"getDecorationsInViewport",value:function(e){return this._decorations.getDecorationsViewportData(e).decorations}},{key:"getViewLineRenderingData",value:function(e,t){var n=this.model.mightContainRTL(),i=this.model.mightContainNonBasicASCII(),r=this.getTabSize(),o=this._lines.getViewLineData(t),a=this._decorations.getDecorationsViewportData(e).inlineDecorations[t-e.startLineNumber];return new Tt.wA(o.minColumn,o.maxColumn,o.content,o.continuesWithWrappedLine,n,i,o.tokens,a,r,o.startVisibleColumn)}},{key:"getViewLineData",value:function(e){return this._lines.getViewLineData(e)}},{key:"getMinimapLinesRenderingData",value:function(e,t,n){var i=this._lines.getViewLinesData(e,t,n);return new Tt.ud(this.getTabSize(),i)}},{key:"getAllOverviewRulerDecorations",value:function(e){return this._lines.getAllOverviewRulerDecorations(this._editorId,(0,ee.$J)(this._configuration.options),e)}},{key:"invalidateOverviewRulerColorCache",value:function(){var e,t=this.model.getOverviewRulerDecorations(),n=(0,r.Z)(t);try{for(n.s();!(e=n.n()).done;){var i=e.value.options.overviewRuler;i&&i.invalidateCachedColor()}}catch(o){n.e(o)}finally{n.f()}}},{key:"invalidateMinimapColorCache",value:function(){var e,t=this.model.getAllDecorations(),n=(0,r.Z)(t);try{for(n.s();!(e=n.n()).done;){var i=e.value.options.minimap;i&&i.invalidateCachedColor()}}catch(o){n.e(o)}finally{n.f()}}},{key:"getValueInRange",value:function(e,t){var n=this.coordinatesConverter.convertViewRangeToModelRange(e);return this.model.getValueInRange(n,t)}},{key:"getModelLineMaxColumn",value:function(e){return this.model.getLineMaxColumn(e)}},{key:"validateModelPosition",value:function(e){return this.model.validatePosition(e)}},{key:"validateModelRange",value:function(e){return this.model.validateRange(e)}},{key:"deduceModelPositionRelativeToViewPosition",value:function(e,t,n){var i=this.coordinatesConverter.convertViewPositionToModelPosition(e);2===this.model.getEOL().length&&(t<0?t-=n:t+=n);var r=this.model.getOffsetAt(i)+t;return this.model.getPositionAt(r)}},{key:"getEOL",value:function(){return this.model.getEOL()}},{key:"getPlainTextToCopy",value:function(e,t,n){var i=n?"\r\n":this.model.getEOL();(e=e.slice(0)).sort(fe.e.compareRangesUsingStarts);var o,a=!1,s=!1,u=(0,r.Z)(e);try{for(u.s();!(o=u.n()).done;){o.value.isEmpty()?a=!0:s=!0}}catch(C){u.e(C)}finally{u.f()}if(!s){if(!t)return"";for(var l=e.map((function(e){return e.startLineNumber})),c="",d=0;d<l.length;d++)d>0&&l[d-1]===l[d]||(c+=this.model.getLineContent(l[d])+i);return c}if(a&&t){var h,f=[],p=0,g=(0,r.Z)(e);try{for(g.s();!(h=g.n()).done;){var v=h.value,m=v.startLineNumber;v.isEmpty()?m!==p&&f.push(this.model.getLineContent(m)):f.push(this.model.getValueInRange(v,n?2:0)),p=m}}catch(C){g.e(C)}finally{g.f()}return 1===f.length?f[0]:f}var _,y=[],b=(0,r.Z)(e);try{for(b.s();!(_=b.n()).done;){var w=_.value;w.isEmpty()||y.push(this.model.getValueInRange(w,n?2:0))}}catch(C){b.e(C)}finally{b.f()}return 1===y.length?y[0]:y}},{key:"getRichTextToCopy",value:function(e,t){var n=this.model.getLanguageIdentifier();if(1===n.id)return null;if(1!==e.length)return null;var i=e[0];if(i.isEmpty()){if(!t)return null;var r=i.startLineNumber;i=new fe.e(r,this.model.getLineMinColumn(r),r,this.model.getLineMaxColumn(r))}var o,a=this._configuration.options.get(40),s=this._getColorMap();if(/[:;\\\/<>]/.test(a.fontFamily)||a.fontFamily===ee.hL.fontFamily)o=ee.hL.fontFamily;else{if(o=(o=a.fontFamily).replace(/"/g,"'"),!/[,']/.test(o))/[+ ]/.test(o)&&(o="'".concat(o,"'"));o="".concat(o,", ").concat(ee.hL.fontFamily)}return{mode:n.language,html:'<div style="'+"color: ".concat(s[1],";")+"background-color: ".concat(s[2],";")+"font-family: ".concat(o,";")+"font-weight: ".concat(a.fontWeight,";")+"font-size: ".concat(a.fontSize,"px;")+"line-height: ".concat(a.lineHeight,"px;")+'white-space: pre;">'+this._getHTMLToCopy(i,s)+"</div>"}}},{key:"_getHTMLToCopy",value:function(e,t){for(var n=e.startLineNumber,i=e.startColumn,r=e.endLineNumber,o=e.endColumn,a=this.getTabSize(),s="",u=n;u<=r;u++){var l=this.model.getLineTokens(u),c=l.getLineContent(),d=u===n?i-1:0,h=u===r?o-1:c.length;s+=""===c?"<br>":(0,ii.F)(c,l.inflate(),t,d,h,a,D.ED)}return s}},{key:"_getColorMap",value:function(){var e=Nt.RW.getColorMap(),t=["#000000"];if(e)for(var n=1,i=e.length;n<i;n++)t[n]=Qt.Il.Format.CSS.formatHex(e[n]);return t}},{key:"pushStackElement",value:function(){this.model.pushStackElement()}},{key:"getPrimaryCursorState",value:function(){return this._cursor.getPrimaryCursorState()}},{key:"getLastAddedCursorIndex",value:function(){return this._cursor.getLastAddedCursorIndex()}},{key:"getCursorStates",value:function(){return this._cursor.getCursorStates()}},{key:"setCursorStates",value:function(e,t,n){var i=this;this._withViewEventsCollector((function(r){return i._cursor.setStates(r,e,t,n)}))}},{key:"getCursorColumnSelectData",value:function(){return this._cursor.getCursorColumnSelectData()}},{key:"getCursorAutoClosedCharacters",value:function(){return this._cursor.getAutoClosedCharacters()}},{key:"setCursorColumnSelectData",value:function(e){this._cursor.setCursorColumnSelectData(e)}},{key:"getPrevEditOperationType",value:function(){return this._cursor.getPrevEditOperationType()}},{key:"setPrevEditOperationType",value:function(e){this._cursor.setPrevEditOperationType(e)}},{key:"getSelection",value:function(){return this._cursor.getSelection()}},{key:"getSelections",value:function(){return this._cursor.getSelections()}},{key:"getPosition",value:function(){return this._cursor.getPrimaryCursorState().modelState.position}},{key:"setSelections",value:function(e,t){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._withViewEventsCollector((function(r){return n._cursor.setSelections(r,e,t,i)}))}},{key:"saveCursorState",value:function(){return this._cursor.saveState()}},{key:"restoreCursorState",value:function(e){var t=this;this._withViewEventsCollector((function(n){return t._cursor.restoreState(n,e)}))}},{key:"_executeCursorEdit",value:function(e){this._cursor.context.cursorConfig.readOnly?this._eventDispatcher.emitOutgoingEvent(new Gn):this._withViewEventsCollector(e)}},{key:"executeEdits",value:function(e,t,n){var i=this;this._executeCursorEdit((function(r){return i._cursor.executeEdits(r,e,t,n)}))}},{key:"startComposition",value:function(){var e=this;this._cursor.setIsDoingComposition(!0),this._executeCursorEdit((function(t){return e._cursor.startComposition(t)}))}},{key:"endComposition",value:function(e){var t=this;this._cursor.setIsDoingComposition(!1),this._executeCursorEdit((function(n){return t._cursor.endComposition(n,e)}))}},{key:"type",value:function(e,t){var n=this;this._executeCursorEdit((function(i){return n._cursor.type(i,e,t)}))}},{key:"compositionType",value:function(e,t,n,i,r){var o=this;this._executeCursorEdit((function(a){return o._cursor.compositionType(a,e,t,n,i,r)}))}},{key:"paste",value:function(e,t,n,i){var r=this;this._executeCursorEdit((function(o){return r._cursor.paste(o,e,t,n,i)}))}},{key:"cut",value:function(e){var t=this;this._executeCursorEdit((function(n){return t._cursor.cut(n,e)}))}},{key:"executeCommand",value:function(e,t){var n=this;this._executeCursorEdit((function(i){return n._cursor.executeCommand(i,e,t)}))}},{key:"executeCommands",value:function(e,t){var n=this;this._executeCursorEdit((function(i){return n._cursor.executeCommands(i,e,t)}))}},{key:"revealPrimaryCursor",value:function(e,t){var n=this;this._withViewEventsCollector((function(i){return n._cursor.revealPrimary(i,e,t,0)}))}},{key:"revealTopMostCursor",value:function(e){var t=this._cursor.getTopMostViewPosition(),n=new fe.e(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector((function(t){return t.emitViewEvent(new Pn(e,n,null,0,!0,0))}))}},{key:"revealBottomMostCursor",value:function(e){var t=this._cursor.getBottomMostViewPosition(),n=new fe.e(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector((function(t){return t.emitViewEvent(new Pn(e,n,null,0,!0,0))}))}},{key:"revealRange",value:function(e,t,n,i,r){this._withViewEventsCollector((function(o){return o.emitViewEvent(new Pn(e,n,null,i,t,r))}))}},{key:"getVerticalOffsetForLineNumber",value:function(e){return this.viewLayout.getVerticalOffsetForLineNumber(e)}},{key:"getScrollTop",value:function(){return this.viewLayout.getCurrentScrollTop()}},{key:"setScrollTop",value:function(e,t){this.viewLayout.setScrollPosition({scrollTop:e},t)}},{key:"setScrollPosition",value:function(e,t){this.viewLayout.setScrollPosition(e,t)}},{key:"deltaScrollNow",value:function(e,t){this.viewLayout.deltaScrollNow(e,t)}},{key:"changeWhitespace",value:function(e){this.viewLayout.changeWhitespace(e)&&(this._eventDispatcher.emitSingleViewEvent(new Bn),this._eventDispatcher.emitOutgoingEvent(new Kn))}},{key:"setMaxLineWidth",value:function(e){this.viewLayout.setMaxLineWidth(e)}},{key:"_withViewEventsCollector",value:function(e){try{e(this._eventDispatcher.beginEmitViewEvents())}finally{this._eventDispatcher.endEmitViewEvents()}}}]),n}(w.JT),Mi=n(72611),Ti=n(18948),Ii=n(84596),Oi=n(41001),Ai=n(71574),Ri=n(40782),Pi=n(25941),Zi=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r;(0,c.Z)(this,n),r=t.call(this,0);for(var o=0;o<e.length;o++)r.set(e.charCodeAt(o),1);for(var a=0;a<i.length;a++)r.set(i.charCodeAt(a),2);return r}return(0,d.Z)(n,[{key:"get",value:function(e){return e>=0&&e<256?this._asciiMap[e]:e>=12352&&e<=12543||e>=13312&&e<=19903||e>=19968&&e<=40959?3:this._map.get(e)||this._defaultValue}}]),n}(n(84516).N),Fi=[],ji=[],Hi=function(){function e(t,n){(0,c.Z)(this,e),this.classifier=new Zi(t,n)}return(0,d.Z)(e,[{key:"createLineBreaksComputer",value:function(e,t,n,i){var r=this;t|=0,n=+n;var o=[],a=[];return{addRequest:function(e,t){o.push(e),a.push(t)},finalize:function(){for(var s=e.typicalFullwidthCharacterWidth/e.typicalHalfwidthCharacterWidth,u=[],l=0,c=o.length;l<c;l++){var d=a[l];u[l]=d?Bi(r.classifier,d,o[l],t,n,s,i):zi(r.classifier,o[l],t,n,s,i)}return Fi.length=0,ji.length=0,u}}}}],[{key:"create",value:function(t){return new e(t.get(116),t.get(115))}}]),e}();function Bi(e,t,n,i,r,o,a){if(-1===r)return null;var s=n.length;if(s<=1)return null;var u=t.breakOffsets,l=t.breakOffsetsVisibleColumn,c=Ui(n,i,r,o,a),d=r-c,h=Fi,f=ji,p=0,g=0,v=0,m=r,_=u.length,y=0;if(y>=0)for(var b=Math.abs(l[y]-m);y+1<_;){var w=Math.abs(l[y+1]-m);if(w>=b)break;b=w,y++}for(;y<_;){var C=y<0?0:u[y],k=y<0?0:l[y];g>C&&(C=g,k=v);var S=0,x=0,L=0,E=0;if(k<=m){for(var D=k,N=0===C?0:n.charCodeAt(C-1),M=0===C?0:e.get(N),T=!0,I=C;I<s;I++){var O=I,A=n.charCodeAt(I),R=void 0,P=void 0;if(Re.ZG(A)?(I++,R=0,P=2):(R=e.get(A),P=Wi(A,D,i,o)),O>g&&Yi(N,M,A,R)&&(S=O,x=D),(D+=P)>m){O>g?(L=O,E=D-P):(L=I+1,E=D),D-x>d&&(S=0),T=!1;break}N=A,M=R}if(T){p>0&&(h[p]=u[u.length-1],f[p]=l[u.length-1],p++);break}}if(0===S){for(var Z=k,F=n.charCodeAt(C),j=e.get(F),H=!1,B=C-1;B>=g;B--){var z=B+1,W=n.charCodeAt(B);if(9===W){H=!0;break}var V=void 0,Y=void 0;if(Re.YK(W)?(B--,V=0,Y=2):(V=e.get(W),Y=Re.K7(W)?o:1),Z<=m){if(0===L&&(L=z,E=Z),Z<=m-d)break;if(Yi(W,V,F,j)){S=z,x=Z;break}}Z-=Y,F=W,j=V}if(0!==S){var U=d-(E-x);if(U<=i){var K=n.charCodeAt(L);U-(Re.ZG(K)?2:Wi(K,E,i,o))<0&&(S=0)}}if(H){y--;continue}}if(0===S&&(S=L,x=E),S<=g){var q=n.charCodeAt(g);Re.ZG(q)?(S=g+2,x=v+2):(S=g+1,x=v+Wi(q,v,i,o))}for(g=S,h[p]=S,v=x,f[p]=x,p++,m=x+d;y<0||y<_&&l[y]<x;)y++;for(var G=Math.abs(l[y]-m);y+1<_;){var $=Math.abs(l[y+1]-m);if($>=G)break;G=$,y++}}return 0===p?null:(h.length=p,f.length=p,Fi=t.breakOffsets,ji=t.breakOffsetsVisibleColumn,t.breakOffsets=h,t.breakOffsetsVisibleColumn=f,t.wrappedTextIndentLength=c,t)}function zi(e,t,n,i,r,o){if(-1===i)return null;var a=t.length;if(a<=1)return null;var s=Ui(t,n,i,r,o),u=i-s,l=[],c=[],d=0,h=0,f=0,p=i,g=t.charCodeAt(0),v=e.get(g),m=Wi(g,0,n,r),_=1;Re.ZG(g)&&(m+=1,g=t.charCodeAt(1),v=e.get(g),_++);for(var y=_;y<a;y++){var b=y,w=t.charCodeAt(y),C=void 0,k=void 0;Re.ZG(w)?(y++,C=0,k=2):(C=e.get(w),k=Wi(w,m,n,r)),Yi(g,v,w,C)&&(h=b,f=m),(m+=k)>p&&((0===h||m-f>u)&&(h=b,f=m-k),l[d]=h,c[d]=f,d++,p=f+u,h=0),g=w,v=C}return 0===d?null:(l[d]=a,c[d]=m,new Tt.le(l,c,s))}function Wi(e,t,n,i){return 9===e?n-t%n:Re.K7(e)||e<32?i:1}function Vi(e,t){return t-e%t}function Yi(e,t,n,i){return 32!==n&&(2===t||3===t&&2!==i||1===i||3===i&&1!==t)}function Ui(e,t,n,i,r){var o=0;if(0!==r){var a=Re.LC(e);if(-1!==a){for(var s=0;s<a;s++){o+=9===e.charCodeAt(s)?Vi(o,t):1}for(var u=3===r?2:2===r?1:0,l=0;l<u;l++){o+=Vi(o,t)}o+i>n&&(o=0)}}return o}var Ki=null===(ki=window.trustedTypes)||void 0===ki?void 0:ki.createPolicy("domLineBreaksComputer",{createHTML:function(e){return e}}),qi=function(){function e(){(0,c.Z)(this,e)}return(0,d.Z)(e,[{key:"createLineBreaksComputer",value:function(e,t,n,i){t|=0,n=+n;var r=[];return{addRequest:function(e,t){r.push(e)},finalize:function(){return function(e,t,n,i,r){var o;if(-1===i){for(var a=[],s=0,u=e.length;s<u;s++)a[s]=null;return a}var l=Math.round(i*t.typicalHalfwidthCharacterWidth);2!==r&&3!==r||(r=1);var c=document.createElement("div");k.V.applyFontInfoSlow(c,t);for(var d=(0,Xe.l$)(1e4),h=[],f=[],p=[],g=[],v=[],m=0;m<e.length;m++){var _=e[m],y=0,b=0,w=l;if(0!==r)if(-1===(y=Re.LC(_)))y=0;else{for(var C=0;C<y;C++){b+=9===_.charCodeAt(C)?n-b%n:1}var S=Math.ceil(t.spaceWidth*b);S+t.typicalFullwidthCharacterWidth>l?(y=0,b=0):w=l-S}var x=_.substr(y),L=Gi(x,b,n,w,d);h[m]=y,f[m]=b,p[m]=x,g[m]=L[0],v[m]=L[1]}var E=d.build(),D=null!==(o=null===Ki||void 0===Ki?void 0:Ki.createHTML(E))&&void 0!==o?o:E;c.innerHTML=D,c.style.position="absolute",c.style.top="10000",c.style.wordWrap="break-word",document.body.appendChild(c);for(var N=document.createRange(),M=Array.prototype.slice.call(c.children,0),T=[],I=0;I<e.length;I++){var O=$i(N,M[I],p[I],g[I]);if(null!==O){for(var A=h[I],R=f[I],P=v[I],Z=[],F=0,j=O.length;F<j;F++)Z[F]=P[O[F]];if(0!==A)for(var H=0,B=O.length;H<B;H++)O[H]+=A;T[I]=new Tt.le(O,Z,R)}else T[I]=null}return document.body.removeChild(c),T}(r,e,t,n,i)}}}}],[{key:"create",value:function(){return new e}}]),e}();function Gi(e,t,n,i,r){r.appendASCIIString('<div style="width:'),r.appendASCIIString(String(i)),r.appendASCIIString('px;">');var o=e.length,a=t,s=0,u=[],l=[],c=0<o?e.charCodeAt(0):0;r.appendASCIIString("<span>");for(var d=0;d<o;d++){0!==d&&d%16384===0&&r.appendASCIIString("</span><span>"),u[d]=s,l[d]=a;var h=c;c=d+1<o?e.charCodeAt(d+1):0;var f=1,p=1;switch(h){case 9:p=f=n-a%n;for(var g=1;g<=f;g++)g<f?r.write1(160):r.appendASCII(32);break;case 32:32===c?r.write1(160):r.appendASCII(32);break;case 60:r.appendASCIIString("<");break;case 62:r.appendASCIIString(">");break;case 38:r.appendASCIIString("&");break;case 0:r.appendASCIIString("�");break;case 65279:case 8232:case 8233:case 133:r.write1(65533);break;default:Re.K7(h)&&p++,h<32?r.write1(9216+h):r.write1(h)}s+=f,a+=p}return r.appendASCIIString("</span>"),u[e.length]=s,l[e.length]=a,r.appendASCIIString("</div>"),[u,l]}function $i(e,t,n,i){if(n.length<=1)return null;var r=Array.prototype.slice.call(t.children,0),o=[];try{Qi(e,r,i,0,null,n.length-1,null,o)}catch(a){return console.log(a),null}return 0===o.length?null:(o.push(n.length),o)}function Qi(e,t,n,i,r,o,a,s){if(i!==o&&(r=r||Xi(e,t,n[i],n[i+1]),a=a||Xi(e,t,n[o],n[o+1]),!(Math.abs(r[0].top-a[0].top)<=.1)))if(i+1!==o){var u=i+(o-i)/2|0,l=Xi(e,t,n[u],n[u+1]);Qi(e,t,n,i,r,u,l,s),Qi(e,t,n,u,l,o,a,s)}else s.push(o)}function Xi(e,t,n,i){return e.setStart(t[n/16384|0].firstChild,n%16384),e.setEnd(t[i/16384|0].firstChild,i%16384),e.getClientRects()}var Ji=n(86441),er=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},tr=function(e,t){return function(n,i){t(n,i,e)}},nr=0,ir=function(){function e(t,n,i,r,o){(0,c.Z)(this,e),this.model=t,this.viewModel=n,this.view=i,this.hasRealView=r,this.listenersToRemove=o}return(0,d.Z)(e,[{key:"dispose",value:function(){(0,w.B9)(this.listenersToRemove),this.model.onBeforeDetached(),this.hasRealView&&this.view.dispose(),this.viewModel.dispose()}}]),e}(),rr=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,a,s,u,l,d,h,p,g){var v;(0,c.Z)(this,n),(v=t.call(this))._onDidDispose=v._register(new b.Q5),v.onDidDispose=v._onDidDispose.event,v._onDidChangeModelContent=v._register(new b.Q5),v.onDidChangeModelContent=v._onDidChangeModelContent.event,v._onDidChangeModelLanguage=v._register(new b.Q5),v.onDidChangeModelLanguage=v._onDidChangeModelLanguage.event,v._onDidChangeModelLanguageConfiguration=v._register(new b.Q5),v.onDidChangeModelLanguageConfiguration=v._onDidChangeModelLanguageConfiguration.event,v._onDidChangeModelOptions=v._register(new b.Q5),v.onDidChangeModelOptions=v._onDidChangeModelOptions.event,v._onDidChangeModelDecorations=v._register(new b.Q5),v.onDidChangeModelDecorations=v._onDidChangeModelDecorations.event,v._onDidChangeConfiguration=v._register(new b.Q5),v.onDidChangeConfiguration=v._onDidChangeConfiguration.event,v._onDidChangeModel=v._register(new b.Q5),v.onDidChangeModel=v._onDidChangeModel.event,v._onDidChangeCursorPosition=v._register(new b.Q5),v.onDidChangeCursorPosition=v._onDidChangeCursorPosition.event,v._onDidChangeCursorSelection=v._register(new b.Q5),v.onDidChangeCursorSelection=v._onDidChangeCursorSelection.event,v._onDidAttemptReadOnlyEdit=v._register(new b.Q5),v.onDidAttemptReadOnlyEdit=v._onDidAttemptReadOnlyEdit.event,v._onDidLayoutChange=v._register(new b.Q5),v.onDidLayoutChange=v._onDidLayoutChange.event,v._editorTextFocus=v._register(new or),v.onDidFocusEditorText=v._editorTextFocus.onDidChangeToTrue,v.onDidBlurEditorText=v._editorTextFocus.onDidChangeToFalse,v._editorWidgetFocus=v._register(new or),v.onDidFocusEditorWidget=v._editorWidgetFocus.onDidChangeToTrue,v.onDidBlurEditorWidget=v._editorWidgetFocus.onDidChangeToFalse,v._onWillType=v._register(new b.Q5),v.onWillType=v._onWillType.event,v._onDidType=v._register(new b.Q5),v.onDidType=v._onDidType.event,v._onDidCompositionStart=v._register(new b.Q5),v.onDidCompositionStart=v._onDidCompositionStart.event,v._onDidCompositionEnd=v._register(new b.Q5),v.onDidCompositionEnd=v._onDidCompositionEnd.event,v._onDidPaste=v._register(new b.Q5),v.onDidPaste=v._onDidPaste.event,v._onMouseUp=v._register(new b.Q5),v.onMouseUp=v._onMouseUp.event,v._onMouseDown=v._register(new b.Q5),v.onMouseDown=v._onMouseDown.event,v._onMouseDrag=v._register(new b.Q5),v.onMouseDrag=v._onMouseDrag.event,v._onMouseDrop=v._register(new b.Q5),v.onMouseDrop=v._onMouseDrop.event,v._onMouseDropCanceled=v._register(new b.Q5),v.onMouseDropCanceled=v._onMouseDropCanceled.event,v._onContextMenu=v._register(new b.Q5),v.onContextMenu=v._onContextMenu.event,v._onMouseMove=v._register(new b.Q5),v.onMouseMove=v._onMouseMove.event,v._onMouseLeave=v._register(new b.Q5),v.onMouseLeave=v._onMouseLeave.event,v._onMouseWheel=v._register(new b.Q5),v.onMouseWheel=v._onMouseWheel.event,v._onKeyUp=v._register(new b.Q5),v.onKeyUp=v._onKeyUp.event,v._onKeyDown=v._register(new b.Q5),v.onKeyDown=v._onKeyDown.event,v._onDidContentSizeChange=v._register(new b.Q5),v.onDidContentSizeChange=v._onDidContentSizeChange.event,v._onDidScrollChange=v._register(new b.Q5),v.onDidScrollChange=v._onDidScrollChange.event,v._onDidChangeViewZones=v._register(new b.Q5),v.onDidChangeViewZones=v._onDidChangeViewZones.event;var m,_=Object.assign({},i);v._domElement=e,v._overflowWidgetsDomNode=_.overflowWidgetsDomNode,delete _.overflowWidgetsDomNode,v._id=++nr,v._decorationTypeKeysToIds={},v._decorationTypeSubtypes={},v.isSimpleWidget=a.isSimpleWidget||!1,v._telemetryData=a.telemetryData,v._configuration=v._register(v._createConfiguration(_,g)),v._register(v._configuration.onDidChange((function(e){v._onDidChangeConfiguration.fire(e);var t=v._configuration.options;if(e.hasChanged(127)){var n=t.get(127);v._onDidLayoutChange.fire(n)}}))),v._contextKeyService=v._register(d.createScoped(v._domElement)),v._notificationService=p,v._codeEditorService=u,v._commandService=l,v._themeService=h,v._register(new ar((0,o.Z)(v),v._contextKeyService)),v._register(new sr((0,o.Z)(v),v._contextKeyService)),v._instantiationService=s.createChild(new Oi.y([Ti.i6,v._contextKeyService])),v._modelData=null,v._contributions={},v._actions={},v._focusTracker=new ur(e),v._focusTracker.onChange((function(){v._editorWidgetFocus.setValue(v._focusTracker.hasFocus())})),v._contentWidgets={},v._overlayWidgets={},m=Array.isArray(a.contributions)?a.contributions:f.Uc.getEditorContributions();var w,C=(0,r.Z)(m);try{for(C.s();!(w=C.n()).done;){var k=w.value;try{var S=v._instantiationService.createInstance(k.ctor,(0,o.Z)(v));v._contributions[k.id]=S}catch(x){(0,y.dL)(x)}}}catch(x){C.e(x)}finally{C.f()}return f.Uc.getEditorActions().forEach((function(e){var t=new ei.p(e.id,e.label,e.alias,(0,Pi.f6)(e.precondition),(function(){return v._instantiationService.invokeFunction((function(t){return Promise.resolve(e.runEditorCommand(t,(0,o.Z)(v),null))}))}),v._contextKeyService);v._actions[t.id]=t})),v._codeEditorService.addCodeEditor((0,o.Z)(v)),v}return(0,d.Z)(n,[{key:"_createConfiguration",value:function(e,t){return new k.V(this.isSimpleWidget,e,this._domElement,t)}},{key:"getId",value:function(){return this.getEditorType()+":"+this._id}},{key:"getEditorType",value:function(){return ti.g.ICodeEditor}},{key:"dispose",value:function(){this._codeEditorService.removeCodeEditor(this),this._focusTracker.dispose();for(var e=Object.keys(this._contributions),t=0,i=e.length;t<i;t++){var r=e[t];this._contributions[r].dispose()}this._removeDecorationTypes(),this._postDetachModelCleanup(this._detachModel()),this._onDidDispose.fire(),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"invokeWithinContext",value:function(e){return this._instantiationService.invokeFunction(e)}},{key:"updateOptions",value:function(e){this._configuration.updateOptions(e)}},{key:"getOptions",value:function(){return this._configuration.options}},{key:"getOption",value:function(e){return this._configuration.options.get(e)}},{key:"getRawOptions",value:function(){return this._configuration.getRawOptions()}},{key:"getOverflowWidgetsDomNode",value:function(){return this._overflowWidgetsDomNode}},{key:"getConfiguredWordAtPosition",value:function(e){return this._modelData?Ji.w.getWordAtPosition(this._modelData.model,this._configuration.options.get(113),e):null}},{key:"getValue",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!this._modelData)return"";var t=!(!e||!e.preserveBOM),n=0;return e&&e.lineEnding&&"\n"===e.lineEnding?n=1:e&&e.lineEnding&&"\r\n"===e.lineEnding&&(n=2),this._modelData.model.getValue(n,t)}},{key:"setValue",value:function(e){this._modelData&&this._modelData.model.setValue(e)}},{key:"getModel",value:function(){return this._modelData?this._modelData.model:null}},{key:"setModel",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if((null!==this._modelData||null!==e)&&(!this._modelData||this._modelData.model!==e)){var t=this.hasTextFocus(),n=this._detachModel();this._attachModel(e),t&&this.hasModel()&&this.focus();var i={oldModelUrl:n?n.uri:null,newModelUrl:e?e.uri:null};this._removeDecorationTypes(),this._onDidChangeModel.fire(i),this._postDetachModelCleanup(n)}}},{key:"_removeDecorationTypes",value:function(){if(this._decorationTypeKeysToIds={},this._decorationTypeSubtypes){for(var e in this._decorationTypeSubtypes){var t=this._decorationTypeSubtypes[e];for(var n in t)this._removeDecorationType(e+"-"+n)}this._decorationTypeSubtypes={}}}},{key:"getVisibleRanges",value:function(){return this._modelData?this._modelData.viewModel.getVisibleRanges():[]}},{key:"getVisibleRangesPlusViewportAboveBelow",value:function(){return this._modelData?this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow():[]}},{key:"getWhitespaces",value:function(){return this._modelData?this._modelData.viewModel.viewLayout.getWhitespaces():[]}},{key:"getTopForLineNumber",value:function(e){return this._modelData?n._getVerticalOffsetForPosition(this._modelData,e,1):-1}},{key:"getTopForPosition",value:function(e,t){return this._modelData?n._getVerticalOffsetForPosition(this._modelData,e,t):-1}},{key:"setHiddenAreas",value:function(e){this._modelData&&this._modelData.viewModel.setHiddenAreas(e.map((function(e){return fe.e.lift(e)})))}},{key:"getVisibleColumnFromPosition",value:function(e){if(!this._modelData)return e.column;var t=this._modelData.model.validatePosition(e),n=this._modelData.model.getOptions().tabSize;return pe.io.visibleColumnFromColumn(this._modelData.model.getLineContent(t.lineNumber),t.column,n)+1}},{key:"getPosition",value:function(){return this._modelData?this._modelData.viewModel.getPosition():null}},{key:"setPosition",value:function(e){if(this._modelData){if(!he.L.isIPosition(e))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections("api",[{selectionStartLineNumber:e.lineNumber,selectionStartColumn:e.column,positionLineNumber:e.lineNumber,positionColumn:e.column}])}}},{key:"_sendRevealRange",value:function(e,t,n,i){if(this._modelData){if(!fe.e.isIRange(e))throw new Error("Invalid arguments");var r=this._modelData.model.validateRange(e),o=this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(r);this._modelData.viewModel.revealRange("api",n,o,t,i)}}},{key:"revealLine",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealLine(e,0,t)}},{key:"revealLineInCenter",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealLine(e,1,t)}},{key:"revealLineInCenterIfOutsideViewport",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealLine(e,2,t)}},{key:"revealLineNearTop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealLine(e,5,t)}},{key:"_revealLine",value:function(e,t,n){if("number"!==typeof e)throw new Error("Invalid arguments");this._sendRevealRange(new fe.e(e,1,e,1),t,!1,n)}},{key:"revealPosition",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealPosition(e,0,!0,t)}},{key:"revealPositionInCenter",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealPosition(e,1,!0,t)}},{key:"revealPositionInCenterIfOutsideViewport",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealPosition(e,2,!0,t)}},{key:"revealPositionNearTop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealPosition(e,5,!0,t)}},{key:"_revealPosition",value:function(e,t,n,i){if(!he.L.isIPosition(e))throw new Error("Invalid arguments");this._sendRevealRange(new fe.e(e.lineNumber,e.column,e.lineNumber,e.column),t,n,i)}},{key:"getSelection",value:function(){return this._modelData?this._modelData.viewModel.getSelection():null}},{key:"getSelections",value:function(){return this._modelData?this._modelData.viewModel.getSelections():null}},{key:"setSelection",value:function(e){var t=L.Y.isISelection(e),n=fe.e.isIRange(e);if(!t&&!n)throw new Error("Invalid arguments");if(t)this._setSelectionImpl(e);else if(n){var i={selectionStartLineNumber:e.startLineNumber,selectionStartColumn:e.startColumn,positionLineNumber:e.endLineNumber,positionColumn:e.endColumn};this._setSelectionImpl(i)}}},{key:"_setSelectionImpl",value:function(e){if(this._modelData){var t=new L.Y(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn);this._modelData.viewModel.setSelections("api",[t])}}},{key:"revealLines",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._revealLines(e,t,0,n)}},{key:"revealLinesInCenter",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._revealLines(e,t,1,n)}},{key:"revealLinesInCenterIfOutsideViewport",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._revealLines(e,t,2,n)}},{key:"revealLinesNearTop",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._revealLines(e,t,5,n)}},{key:"_revealLines",value:function(e,t,n,i){if("number"!==typeof e||"number"!==typeof t)throw new Error("Invalid arguments");this._sendRevealRange(new fe.e(e,1,t,1),n,!1,i)}},{key:"revealRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];this._revealRange(e,n?1:0,i,t)}},{key:"revealRangeInCenter",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealRange(e,1,!0,t)}},{key:"revealRangeInCenterIfOutsideViewport",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealRange(e,2,!0,t)}},{key:"revealRangeNearTop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealRange(e,5,!0,t)}},{key:"revealRangeNearTopIfOutsideViewport",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealRange(e,6,!0,t)}},{key:"revealRangeAtTop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._revealRange(e,3,!0,t)}},{key:"_revealRange",value:function(e,t,n,i){if(!fe.e.isIRange(e))throw new Error("Invalid arguments");this._sendRevealRange(fe.e.lift(e),t,n,i)}},{key:"setSelections",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"api",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(this._modelData){if(!e||0===e.length)throw new Error("Invalid arguments");for(var i=0,r=e.length;i<r;i++)if(!L.Y.isISelection(e[i]))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(t,e,n)}}},{key:"getContentWidth",value:function(){return this._modelData?this._modelData.viewModel.viewLayout.getContentWidth():-1}},{key:"getScrollWidth",value:function(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollWidth():-1}},{key:"getScrollLeft",value:function(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollLeft():-1}},{key:"getContentHeight",value:function(){return this._modelData?this._modelData.viewModel.viewLayout.getContentHeight():-1}},{key:"getScrollHeight",value:function(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollHeight():-1}},{key:"getScrollTop",value:function(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollTop():-1}},{key:"setScrollLeft",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(this._modelData){if("number"!==typeof e)throw new Error("Invalid arguments");this._modelData.viewModel.setScrollPosition({scrollLeft:e},t)}}},{key:"setScrollTop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(this._modelData){if("number"!==typeof e)throw new Error("Invalid arguments");this._modelData.viewModel.setScrollPosition({scrollTop:e},t)}}},{key:"setScrollPosition",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this._modelData&&this._modelData.viewModel.setScrollPosition(e,t)}},{key:"saveViewState",value:function(){if(!this._modelData)return null;for(var e={},t=0,n=Object.keys(this._contributions);t<n.length;t++){var i=n[t],r=this._contributions[i];"function"===typeof r.saveViewState&&(e[i]=r.saveViewState())}return{cursorState:this._modelData.viewModel.saveCursorState(),viewState:this._modelData.viewModel.saveState(),contributionsState:e}}},{key:"restoreViewState",value:function(e){if(this._modelData&&this._modelData.hasRealView){var t=e;if(t&&t.cursorState&&t.viewState){var n=t.cursorState;Array.isArray(n)?this._modelData.viewModel.restoreCursorState(n):this._modelData.viewModel.restoreCursorState([n]);for(var i=t.contributionsState||{},r=Object.keys(this._contributions),o=0,a=r.length;o<a;o++){var s=r[o],u=this._contributions[s];"function"===typeof u.restoreViewState&&u.restoreViewState(i[s])}var l=this._modelData.viewModel.reduceRestoreState(t.viewState);this._modelData.view.restoreState(l)}}}},{key:"getContribution",value:function(e){return this._contributions[e]||null}},{key:"getActions",value:function(){for(var e=[],t=Object.keys(this._actions),n=0,i=t.length;n<i;n++){var r=t[n];e.push(this._actions[r])}return e}},{key:"getSupportedActions",value:function(){var e=this.getActions();return e=e.filter((function(e){return e.isSupported()}))}},{key:"getAction",value:function(e){return this._actions[e]||null}},{key:"trigger",value:function(e,t,n){switch(n=n||{},t){case"compositionStart":return void this._startComposition();case"compositionEnd":return void this._endComposition(e);case"type":var i=n;return void this._type(e,i.text||"");case"replacePreviousChar":var r=n;return void this._compositionType(e,r.text||"",r.replaceCharCnt||0,0,0);case"compositionType":var o=n;return void this._compositionType(e,o.text||"",o.replacePrevCharCnt||0,o.replaceNextCharCnt||0,o.positionDelta||0);case"paste":var a=n;return void this._paste(e,a.text||"",a.pasteOnNewLine||!1,a.multicursorText||null,a.mode||null);case"cut":return void this._cut(e)}var s=this.getAction(t);s?Promise.resolve(s.run()).then(void 0,y.dL):this._modelData&&(this._triggerEditorCommand(e,t,n)||this._triggerCommand(t,n))}},{key:"_triggerCommand",value:function(e,t){this._commandService.executeCommand(e,t)}},{key:"_startComposition",value:function(){this._modelData&&(this._modelData.viewModel.startComposition(),this._onDidCompositionStart.fire())}},{key:"_endComposition",value:function(e){this._modelData&&(this._modelData.viewModel.endComposition(e),this._onDidCompositionEnd.fire())}},{key:"_type",value:function(e,t){this._modelData&&0!==t.length&&("keyboard"===e&&this._onWillType.fire(t),this._modelData.viewModel.type(t,e),"keyboard"===e&&this._onDidType.fire(t))}},{key:"_compositionType",value:function(e,t,n,i,r){this._modelData&&this._modelData.viewModel.compositionType(t,n,i,r,e)}},{key:"_paste",value:function(e,t,n,i,r){if(this._modelData&&0!==t.length){var o=this._modelData.viewModel.getSelection().getStartPosition();this._modelData.viewModel.paste(t,n,i,e);var a=this._modelData.viewModel.getSelection().getStartPosition();"keyboard"===e&&this._onDidPaste.fire({range:new fe.e(o.lineNumber,o.column,a.lineNumber,a.column),mode:r})}}},{key:"_cut",value:function(e){this._modelData&&this._modelData.viewModel.cut(e)}},{key:"_triggerEditorCommand",value:function(e,t,n){var i=this,r=f.Uc.getEditorCommand(t);return!!r&&((n=n||{}).source=e,this._instantiationService.invokeFunction((function(e){Promise.resolve(r.runEditorCommand(e,i,n)).then(void 0,y.dL)})),!0)}},{key:"_getViewModel",value:function(){return this._modelData?this._modelData.viewModel:null}},{key:"pushUndoStop",value:function(){return!!this._modelData&&(!this._configuration.options.get(77)&&(this._modelData.model.pushStackElement(),!0))}},{key:"popUndoStop",value:function(){return!!this._modelData&&(!this._configuration.options.get(77)&&(this._modelData.model.popStackElement(),!0))}},{key:"executeEdits",value:function(e,t,n){return!!this._modelData&&(!this._configuration.options.get(77)&&(i=n?Array.isArray(n)?function(){return n}:n:function(){return null},this._modelData.viewModel.executeEdits(e,t,i),!0));var i}},{key:"executeCommand",value:function(e,t){this._modelData&&this._modelData.viewModel.executeCommand(t,e)}},{key:"executeCommands",value:function(e,t){this._modelData&&this._modelData.viewModel.executeCommands(t,e)}},{key:"changeDecorations",value:function(e){return this._modelData?this._modelData.model.changeDecorations(e,this._id):null}},{key:"getLineDecorations",value:function(e){return this._modelData?this._modelData.model.getLineDecorations(e,this._id,(0,ee.$J)(this._configuration.options)):null}},{key:"deltaDecorations",value:function(e,t){return this._modelData?0===e.length&&0===t.length?e:this._modelData.model.deltaDecorations(e,t,this._id):[]}},{key:"removeDecorations",value:function(e){var t=this._decorationTypeKeysToIds[e];t&&this.deltaDecorations(t,[]),this._decorationTypeKeysToIds.hasOwnProperty(e)&&delete this._decorationTypeKeysToIds[e],this._decorationTypeSubtypes.hasOwnProperty(e)&&delete this._decorationTypeSubtypes[e]}},{key:"getLayoutInfo",value:function(){return this._configuration.options.get(127)}},{key:"createOverviewRuler",value:function(e){return this._modelData&&this._modelData.hasRealView?this._modelData.view.createOverviewRuler(e):null}},{key:"getContainerDomNode",value:function(){return this._domElement}},{key:"getDomNode",value:function(){return this._modelData&&this._modelData.hasRealView?this._modelData.view.domNode.domNode:null}},{key:"delegateVerticalScrollbarMouseDown",value:function(e){this._modelData&&this._modelData.hasRealView&&this._modelData.view.delegateVerticalScrollbarMouseDown(e)}},{key:"layout",value:function(e){this._configuration.observeReferenceElement(e),this.render()}},{key:"focus",value:function(){this._modelData&&this._modelData.hasRealView&&this._modelData.view.focus()}},{key:"hasTextFocus",value:function(){return!(!this._modelData||!this._modelData.hasRealView)&&this._modelData.view.isFocused()}},{key:"hasWidgetFocus",value:function(){return this._focusTracker&&this._focusTracker.hasFocus()}},{key:"addContentWidget",value:function(e){var t={widget:e,position:e.getPosition()};this._contentWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting a content widget with the same id."),this._contentWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addContentWidget(t)}},{key:"layoutContentWidget",value:function(e){var t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){var n=this._contentWidgets[t];n.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutContentWidget(n)}}},{key:"removeContentWidget",value:function(e){var t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){var n=this._contentWidgets[t];delete this._contentWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeContentWidget(n)}}},{key:"addOverlayWidget",value:function(e){var t={widget:e,position:e.getPosition()};this._overlayWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting an overlay widget with the same id."),this._overlayWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addOverlayWidget(t)}},{key:"layoutOverlayWidget",value:function(e){var t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){var n=this._overlayWidgets[t];n.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutOverlayWidget(n)}}},{key:"removeOverlayWidget",value:function(e){var t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){var n=this._overlayWidgets[t];delete this._overlayWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeOverlayWidget(n)}}},{key:"changeViewZones",value:function(e){this._modelData&&this._modelData.hasRealView&&this._modelData.view.change(e)}},{key:"getTargetAtClientPoint",value:function(e,t){return this._modelData&&this._modelData.hasRealView?this._modelData.view.getTargetAtClientPoint(e,t):null}},{key:"getScrolledVisiblePosition",value:function(e){if(!this._modelData||!this._modelData.hasRealView)return null;var t=this._modelData.model.validatePosition(e),i=this._configuration.options,r=i.get(127);return{top:n._getVerticalOffsetForPosition(this._modelData,t.lineNumber,t.column)-this.getScrollTop(),left:this._modelData.view.getOffsetForColumn(t.lineNumber,t.column)+r.glyphMarginWidth+r.lineNumbersWidth+r.decorationsWidth-this.getScrollLeft(),height:i.get(55)}}},{key:"getOffsetForColumn",value:function(e,t){return this._modelData&&this._modelData.hasRealView?this._modelData.view.getOffsetForColumn(e,t):-1}},{key:"render",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._modelData&&this._modelData.hasRealView&&this._modelData.view.render(!0,e)}},{key:"setAriaOptions",value:function(e){this._modelData&&this._modelData.hasRealView&&this._modelData.view.setAriaOptions(e)}},{key:"applyFontInfo",value:function(e){k.V.applyFontInfoSlow(e,this._configuration.options.get(40))}},{key:"_attachModel",value:function(e){var t=this;if(e){var n=[];this._domElement.setAttribute("data-mode-id",e.getLanguageIdentifier().language),this._configuration.setIsDominatedByLongLines(e.isDominatedByLongLines()),this._configuration.setMaxLineNumber(e.getLineCount()),e.onBeforeAttached();var r=new Ni(this._id,this._configuration,e,qi.create(),Hi.create(this._configuration.options),(function(e){return _.scheduleAtNextAnimationFrame(e)}));n.push(e.onDidChangeDecorations((function(e){return t._onDidChangeModelDecorations.fire(e)}))),n.push(e.onDidChangeLanguage((function(n){t._domElement.setAttribute("data-mode-id",e.getLanguageIdentifier().language),t._onDidChangeModelLanguage.fire(n)}))),n.push(e.onDidChangeLanguageConfiguration((function(e){return t._onDidChangeModelLanguageConfiguration.fire(e)}))),n.push(e.onDidChangeContent((function(e){return t._onDidChangeModelContent.fire(e)}))),n.push(e.onDidChangeOptions((function(e){return t._onDidChangeModelOptions.fire(e)}))),n.push(e.onWillDispose((function(){return t.setModel(null)}))),n.push(r.onEvent((function(e){switch(e.kind){case 0:t._onDidContentSizeChange.fire(e);break;case 1:t._editorTextFocus.setValue(e.hasFocus);break;case 2:t._onDidScrollChange.fire(e);break;case 3:t._onDidChangeViewZones.fire();break;case 4:t._onDidAttemptReadOnlyEdit.fire();break;case 5:e.reachedMaxCursorCount&&t._notificationService.warn(m.N("cursors.maximum","The number of cursors has been limited to {0}.",Xn.MAX_CURSOR_COUNT));for(var n=[],i=0,r=e.selections.length;i<r;i++)n[i]=e.selections[i].getPosition();var o={position:n[0],secondaryPositions:n.slice(1),reason:e.reason,source:e.source};t._onDidChangeCursorPosition.fire(o);var a={selection:e.selections[0],secondarySelections:e.selections.slice(1),modelVersionId:e.modelVersionId,oldSelections:e.oldSelections,oldModelVersionId:e.oldModelVersionId,source:e.source,reason:e.reason};t._onDidChangeCursorSelection.fire(a)}})));var o=this._createView(r),a=(0,i.Z)(o,2),s=a[0],u=a[1];if(u){this._domElement.appendChild(s.domNode.domNode);for(var l=Object.keys(this._contentWidgets),c=0,d=l.length;c<d;c++){var h=l[c];s.addContentWidget(this._contentWidgets[h])}for(var f=0,p=(l=Object.keys(this._overlayWidgets)).length;f<p;f++){var g=l[f];s.addOverlayWidget(this._overlayWidgets[g])}s.render(!1,!0),s.domNode.domNode.setAttribute("data-uri",e.uri.toString())}this._modelData=new ir(e,r,s,u,n)}else this._modelData=null}},{key:"_createView",value:function(e){var t,n=this;t=this.isSimpleWidget?{paste:function(e,t,i,r){n._paste("keyboard",e,t,i,r)},type:function(e){n._type("keyboard",e)},compositionType:function(e,t,i,r){n._compositionType("keyboard",e,t,i,r)},startComposition:function(){n._startComposition()},endComposition:function(){n._endComposition("keyboard")},cut:function(){n._cut("keyboard")}}:{paste:function(e,t,i,r){var o={text:e,pasteOnNewLine:t,multicursorText:i,mode:r};n._commandService.executeCommand("paste",o)},type:function(e){var t={text:e};n._commandService.executeCommand("type",t)},compositionType:function(e,t,i,r){if(i||r){var o={text:e,replacePrevCharCnt:t,replaceNextCharCnt:i,positionDelta:r};n._commandService.executeCommand("compositionType",o)}else{var a={text:e,replaceCharCnt:t};n._commandService.executeCommand("replacePreviousChar",a)}},startComposition:function(){n._commandService.executeCommand("compositionStart",{})},endComposition:function(){n._commandService.executeCommand("compositionEnd",{})},cut:function(){n._commandService.executeCommand("cut",{})}};var i=new $e(e.coordinatesConverter);return i.onKeyDown=function(e){return n._onKeyDown.fire(e)},i.onKeyUp=function(e){return n._onKeyUp.fire(e)},i.onContextMenu=function(e){return n._onContextMenu.fire(e)},i.onMouseMove=function(e){return n._onMouseMove.fire(e)},i.onMouseLeave=function(e){return n._onMouseLeave.fire(e)},i.onMouseDown=function(e){return n._onMouseDown.fire(e)},i.onMouseUp=function(e){return n._onMouseUp.fire(e)},i.onMouseDrag=function(e){return n._onMouseDrag.fire(e)},i.onMouseDrop=function(e){return n._onMouseDrop.fire(e)},i.onMouseDropCanceled=function(e){return n._onMouseDropCanceled.fire(e)},i.onMouseWheel=function(e){return n._onMouseWheel.fire(e)},[new yn(t,this._configuration,this._themeService,e,i,this._overflowWidgetsDomNode),!0]}},{key:"_postDetachModelCleanup",value:function(e){e&&e.removeAllDecorationsWithOwnerId(this._id)}},{key:"_detachModel",value:function(){if(!this._modelData)return null;var e=this._modelData.model,t=this._modelData.hasRealView?this._modelData.view.domNode.domNode:null;return this._modelData.dispose(),this._modelData=null,this._domElement.removeAttribute("data-mode-id"),t&&this._domElement.contains(t)&&this._domElement.removeChild(t),e}},{key:"_removeDecorationType",value:function(e){this._codeEditorService.removeDecorationType(e)}},{key:"hasModel",value:function(){return null!==this._modelData}}],[{key:"_getVerticalOffsetForPosition",value:function(e,t,n){var i=e.model.validatePosition({lineNumber:t,column:n}),r=e.viewModel.coordinatesConverter.convertModelPositionToViewPosition(i);return e.viewModel.viewLayout.getVerticalOffsetForLineNumber(r.lineNumber)}}]),n}(w.JT);rr=er([tr(3,Ii.TG),tr(4,S.$),tr(5,Mi.H),tr(6,Ti.i6),tr(7,je.XE),tr(8,Ai.lT),tr(9,Ri.F)],rr);var or=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(){var e;return(0,c.Z)(this,n),(e=t.call(this))._onDidChangeToTrue=e._register(new b.Q5),e.onDidChangeToTrue=e._onDidChangeToTrue.event,e._onDidChangeToFalse=e._register(new b.Q5),e.onDidChangeToFalse=e._onDidChangeToFalse.event,e._value=0,e}return(0,d.Z)(n,[{key:"setValue",value:function(e){var t=e?2:1;this._value!==t&&(this._value=t,2===this._value?this._onDidChangeToTrue.fire():1===this._value&&this._onDidChangeToFalse.fire())}}]),n}(w.JT),ar=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r;return(0,c.Z)(this,n),(r=t.call(this))._editor=e,i.createKey("editorId",e.getId()),r._editorSimpleInput=ni.u.editorSimpleInput.bindTo(i),r._editorFocus=ni.u.focus.bindTo(i),r._textInputFocus=ni.u.textInputFocus.bindTo(i),r._editorTextFocus=ni.u.editorTextFocus.bindTo(i),r._editorTabMovesFocus=ni.u.tabMovesFocus.bindTo(i),r._editorReadonly=ni.u.readOnly.bindTo(i),r._inDiffEditor=ni.u.inDiffEditor.bindTo(i),r._editorColumnSelection=ni.u.columnSelection.bindTo(i),r._hasMultipleSelections=ni.u.hasMultipleSelections.bindTo(i),r._hasNonEmptySelection=ni.u.hasNonEmptySelection.bindTo(i),r._canUndo=ni.u.canUndo.bindTo(i),r._canRedo=ni.u.canRedo.bindTo(i),r._register(r._editor.onDidChangeConfiguration((function(){return r._updateFromConfig()}))),r._register(r._editor.onDidChangeCursorSelection((function(){return r._updateFromSelection()}))),r._register(r._editor.onDidFocusEditorWidget((function(){return r._updateFromFocus()}))),r._register(r._editor.onDidBlurEditorWidget((function(){return r._updateFromFocus()}))),r._register(r._editor.onDidFocusEditorText((function(){return r._updateFromFocus()}))),r._register(r._editor.onDidBlurEditorText((function(){return r._updateFromFocus()}))),r._register(r._editor.onDidChangeModel((function(){return r._updateFromModel()}))),r._register(r._editor.onDidChangeConfiguration((function(){return r._updateFromModel()}))),r._updateFromConfig(),r._updateFromSelection(),r._updateFromFocus(),r._updateFromModel(),r._editorSimpleInput.set(r._editor.isSimpleWidget),r}return(0,d.Z)(n,[{key:"_updateFromConfig",value:function(){var e=this._editor.getOptions();this._editorTabMovesFocus.set(e.get(126)),this._editorReadonly.set(e.get(77)),this._inDiffEditor.set(e.get(51)),this._editorColumnSelection.set(e.get(16))}},{key:"_updateFromSelection",value:function(){var e=this._editor.getSelections();e?(this._hasMultipleSelections.set(e.length>1),this._hasNonEmptySelection.set(e.some((function(e){return!e.isEmpty()})))):(this._hasMultipleSelections.reset(),this._hasNonEmptySelection.reset())}},{key:"_updateFromFocus",value:function(){this._editorFocus.set(this._editor.hasWidgetFocus()&&!this._editor.isSimpleWidget),this._editorTextFocus.set(this._editor.hasTextFocus()&&!this._editor.isSimpleWidget),this._textInputFocus.set(this._editor.hasTextFocus())}},{key:"_updateFromModel",value:function(){var e=this._editor.getModel();this._canUndo.set(Boolean(e&&e.canUndo())),this._canRedo.set(Boolean(e&&e.canRedo()))}}]),n}(w.JT),sr=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r;(0,c.Z)(this,n),(r=t.call(this))._editor=e,r._contextKeyService=i,r._langId=ni.u.languageId.bindTo(i),r._hasCompletionItemProvider=ni.u.hasCompletionItemProvider.bindTo(i),r._hasCodeActionsProvider=ni.u.hasCodeActionsProvider.bindTo(i),r._hasCodeLensProvider=ni.u.hasCodeLensProvider.bindTo(i),r._hasDefinitionProvider=ni.u.hasDefinitionProvider.bindTo(i),r._hasDeclarationProvider=ni.u.hasDeclarationProvider.bindTo(i),r._hasImplementationProvider=ni.u.hasImplementationProvider.bindTo(i),r._hasTypeDefinitionProvider=ni.u.hasTypeDefinitionProvider.bindTo(i),r._hasHoverProvider=ni.u.hasHoverProvider.bindTo(i),r._hasDocumentHighlightProvider=ni.u.hasDocumentHighlightProvider.bindTo(i),r._hasDocumentSymbolProvider=ni.u.hasDocumentSymbolProvider.bindTo(i),r._hasReferenceProvider=ni.u.hasReferenceProvider.bindTo(i),r._hasRenameProvider=ni.u.hasRenameProvider.bindTo(i),r._hasSignatureHelpProvider=ni.u.hasSignatureHelpProvider.bindTo(i),r._hasInlineHintsProvider=ni.u.hasInlineHintsProvider.bindTo(i),r._hasDocumentFormattingProvider=ni.u.hasDocumentFormattingProvider.bindTo(i),r._hasDocumentSelectionFormattingProvider=ni.u.hasDocumentSelectionFormattingProvider.bindTo(i),r._hasMultipleDocumentFormattingProvider=ni.u.hasMultipleDocumentFormattingProvider.bindTo(i),r._hasMultipleDocumentSelectionFormattingProvider=ni.u.hasMultipleDocumentSelectionFormattingProvider.bindTo(i),r._isInWalkThrough=ni.u.isInWalkThroughSnippet.bindTo(i);var o=function(){return r._update()};return r._register(e.onDidChangeModel(o)),r._register(e.onDidChangeModelLanguage(o)),r._register(Nt.KZ.onDidChange(o)),r._register(Nt.H9.onDidChange(o)),r._register(Nt.He.onDidChange(o)),r._register(Nt.Ct.onDidChange(o)),r._register(Nt.RN.onDidChange(o)),r._register(Nt.vI.onDidChange(o)),r._register(Nt.tA.onDidChange(o)),r._register(Nt.xp.onDidChange(o)),r._register(Nt.vH.onDidChange(o)),r._register(Nt.vJ.onDidChange(o)),r._register(Nt.FL.onDidChange(o)),r._register(Nt.G0.onDidChange(o)),r._register(Nt.Az.onDidChange(o)),r._register(Nt.vN.onDidChange(o)),r._register(Nt.nD.onDidChange(o)),r._register(Nt.wo.onDidChange(o)),o(),r}return(0,d.Z)(n,[{key:"dispose",value:function(){(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}},{key:"reset",value:function(){var e=this;this._contextKeyService.bufferChangeEvents((function(){e._langId.reset(),e._hasCompletionItemProvider.reset(),e._hasCodeActionsProvider.reset(),e._hasCodeLensProvider.reset(),e._hasDefinitionProvider.reset(),e._hasDeclarationProvider.reset(),e._hasImplementationProvider.reset(),e._hasTypeDefinitionProvider.reset(),e._hasHoverProvider.reset(),e._hasDocumentHighlightProvider.reset(),e._hasDocumentSymbolProvider.reset(),e._hasReferenceProvider.reset(),e._hasRenameProvider.reset(),e._hasDocumentFormattingProvider.reset(),e._hasDocumentSelectionFormattingProvider.reset(),e._hasSignatureHelpProvider.reset(),e._isInWalkThrough.reset()}))}},{key:"_update",value:function(){var e=this,t=this._editor.getModel();t?this._contextKeyService.bufferChangeEvents((function(){e._langId.set(t.getLanguageIdentifier().language),e._hasCompletionItemProvider.set(Nt.KZ.has(t)),e._hasCodeActionsProvider.set(Nt.H9.has(t)),e._hasCodeLensProvider.set(Nt.He.has(t)),e._hasDefinitionProvider.set(Nt.Ct.has(t)),e._hasDeclarationProvider.set(Nt.RN.has(t)),e._hasImplementationProvider.set(Nt.vI.has(t)),e._hasTypeDefinitionProvider.set(Nt.tA.has(t)),e._hasHoverProvider.set(Nt.xp.has(t)),e._hasDocumentHighlightProvider.set(Nt.vH.has(t)),e._hasDocumentSymbolProvider.set(Nt.vJ.has(t)),e._hasReferenceProvider.set(Nt.FL.has(t)),e._hasRenameProvider.set(Nt.G0.has(t)),e._hasSignatureHelpProvider.set(Nt.nD.has(t)),e._hasInlineHintsProvider.set(Nt.wo.has(t)),e._hasDocumentFormattingProvider.set(Nt.Az.has(t)||Nt.vN.has(t)),e._hasDocumentSelectionFormattingProvider.set(Nt.vN.has(t)),e._hasMultipleDocumentFormattingProvider.set(Nt.Az.all(t).length+Nt.vN.all(t).length>1),e._hasMultipleDocumentSelectionFormattingProvider.set(Nt.vN.all(t).length>1),e._isInWalkThrough.set(t.uri.scheme===C.lg.walkThroughSnippet)})):this.reset()}}]),n}(w.JT),ur=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this))._onChange=i._register(new b.Q5),i.onChange=i._onChange.event,i._hasFocus=!1,i._domFocusTracker=i._register(_.trackFocus(e)),i._register(i._domFocusTracker.onDidFocus((function(){i._hasFocus=!0,i._onChange.fire(void 0)}))),i._register(i._domFocusTracker.onDidBlur((function(){i._hasFocus=!1,i._onChange.fire(void 0)}))),i}return(0,d.Z)(n,[{key:"hasFocus",value:function(){return this._hasFocus}}]),n}(w.JT),lr=encodeURIComponent("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='"),cr=encodeURIComponent("'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>");function dr(e){return lr+encodeURIComponent(e.toString())+cr}var hr=encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" height="3" width="12"><g fill="'),fr=encodeURIComponent('"><circle cx="1" cy="1" r="1"/><circle cx="5" cy="1" r="1"/><circle cx="9" cy="1" r="1"/></g></svg>');(0,je.Ic)((function(e,t){var n=e.getColor(It.b6);n&&t.addRule(".monaco-editor .".concat("squiggly-error"," { border-bottom: 4px double ",n,"; }"));var i=e.getColor(It.lX);i&&t.addRule(".monaco-editor .".concat("squiggly-error",' { background: url("data:image/svg+xml,',dr(i),'") repeat-x bottom left; }'));var r=e.getColor(It.A2);r&&t.addRule(".monaco-editor .".concat("squiggly-error","::before { display: block; content: ''; width: 100%; height: 100%; background: ",r,"; }"));var o=e.getColor(It.pW);o&&t.addRule(".monaco-editor .".concat("squiggly-warning"," { border-bottom: 4px double ",o,"; }"));var a=e.getColor(It.uo);a&&t.addRule(".monaco-editor .".concat("squiggly-warning",' { background: url("data:image/svg+xml,',dr(a),'") repeat-x bottom left; }'));var s=e.getColor(It.gp);s&&t.addRule(".monaco-editor .".concat("squiggly-warning","::before { display: block; content: ''; width: 100%; height: 100%; background: ",s,"; }"));var u=e.getColor(It.T8);u&&t.addRule(".monaco-editor .".concat("squiggly-info"," { border-bottom: 4px double ",u,"; }"));var l=e.getColor(It.c6);l&&t.addRule(".monaco-editor .".concat("squiggly-info",' { background: url("data:image/svg+xml,',dr(l),'") repeat-x bottom left; }'));var c=e.getColor(It.fe);c&&t.addRule(".monaco-editor .".concat("squiggly-info","::before { display: block; content: ''; width: 100%; height: 100%; background: ",c,"; }"));var d=e.getColor(It.fE);d&&t.addRule(".monaco-editor .".concat("squiggly-hint"," { border-bottom: 2px dotted ",d,"; }"));var h=e.getColor(It.Du);h&&t.addRule(".monaco-editor .".concat("squiggly-hint",' { background: url("data:image/svg+xml,',function(e){return hr+encodeURIComponent(e.toString())+fr}(h),'") no-repeat bottom left; }'));var f=e.getColor(Fe.zu);f&&t.addRule(".monaco-editor.showUnused .".concat("squiggly-inline-unnecessary"," { opacity: ",f.rgba.a,"; }"));var p=e.getColor(Fe.kp);p&&t.addRule(".monaco-editor.showUnused .".concat("squiggly-unnecessary"," { border-bottom: 2px dashed ",p,"; }"));var g=e.getColor(It.NO)||"inherit";t.addRule(".monaco-editor.showDeprecated .".concat("squiggly-inline-deprecated"," { text-decoration: line-through; text-decoration-color: ",g,"}"))}))},20224:function(e,t,n){"use strict";n.d(t,{p:function(){return Ce}});var i,r=n(97326),o=n(11752),a=n(61120),s=n(60136),u=n(43668),l=n(37762),c=n(15671),d=n(43144),h=n(56345),f=n(84540),p=n(41149),g=n(2523),v=n(27997),m=n(11732),_=n(81626),y=n(47014),b=n(47908),w=n(8295),C=n(95079),k=n(87757),S=n.n(k),x=n(67404),L=n(61727),E=n(29077),D=n(33399),N=n(76556),M=n(34763),T=n(67297),I=n(80449),O=n(70632),A=n(4587),R=n(18948),P=n(92992),Z=n(70182),F=n(4354),j=n(62239),H=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},B=function(){function e(t,n,i,r){(0,c.Z)(this,e),this.originalLineStart=t,this.originalLineEnd=n,this.modifiedLineStart=i,this.modifiedLineEnd=r}return(0,d.Z)(e,[{key:"getType",value:function(){return 0===this.originalLineStart?1:0===this.modifiedLineStart?2:0}}]),e}(),z=(0,d.Z)((function e(t){(0,c.Z)(this,e),this.entries=t})),W=(0,j.q5)("diff-review-insert",F.lA.add,h.N("diffReviewInsertIcon","Icon for 'Insert' in diff review.")),V=(0,j.q5)("diff-review-remove",F.lA.remove,h.N("diffReviewRemoveIcon","Icon for 'Remove' in diff review.")),Y=(0,j.q5)("diff-review-close",F.lA.close,h.N("diffReviewCloseIcon","Icon for 'Close' in diff review.")),U=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this))._width=0,i._diffEditor=e,i._isVisible=!1,i.shadow=(0,p.X)(document.createElement("div")),i.shadow.setClassName("diff-review-shadow"),i.actionBarContainer=(0,p.X)(document.createElement("div")),i.actionBarContainer.setClassName("diff-review-actions"),i._actionBar=i._register(new x.o(i.actionBarContainer.domNode)),i._actionBar.push(new E.aU("diffreview.close",h.N("label.close","Close"),"close-diff-review "+Z.kS.asClassName(Y),!0,(function(){return H((0,r.Z)(i),void 0,void 0,S().mark((function e(){return S().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.hide());case 1:case"end":return e.stop()}}),e,this)})))})),{label:!1,icon:!0}),i.domNode=(0,p.X)(document.createElement("div")),i.domNode.setClassName("diff-review monaco-editor-background"),i._content=(0,p.X)(document.createElement("div")),i._content.setClassName("diff-review-content"),i._content.setAttribute("role","code"),i.scrollbar=i._register(new L.s$(i._content.domNode,{})),i.domNode.domNode.appendChild(i.scrollbar.getDomNode()),i._register(e.onDidUpdateDiff((function(){i._isVisible&&(i._diffs=i._compute(),i._render())}))),i._register(e.getModifiedEditor().onDidChangeCursorPosition((function(){i._isVisible&&i._render()}))),i._register(f.addStandardDisposableListener(i.domNode.domNode,"click",(function(e){e.preventDefault();var t=f.findParentWithClass(e.target,"diff-review-row");t&&i._goToRow(t)}))),i._register(f.addStandardDisposableListener(i.domNode.domNode,"keydown",(function(e){(e.equals(18)||e.equals(2066)||e.equals(530))&&(e.preventDefault(),i._goToRow(i._getNextRow())),(e.equals(16)||e.equals(2064)||e.equals(528))&&(e.preventDefault(),i._goToRow(i._getPrevRow())),(e.equals(9)||e.equals(2057)||e.equals(521)||e.equals(1033))&&(e.preventDefault(),i.hide()),(e.equals(10)||e.equals(3))&&(e.preventDefault(),i.accept())}))),i._diffs=[],i._currentDiff=null,i}return(0,d.Z)(n,[{key:"prev",value:function(){var e=0;if(this._isVisible||(this._diffs=this._compute()),this._isVisible){for(var t=-1,n=0,i=this._diffs.length;n<i;n++)if(this._diffs[n]===this._currentDiff){t=n;break}e=this._diffs.length+t-1}else e=this._findDiffIndex(this._diffEditor.getPosition());if(0!==this._diffs.length){e%=this._diffs.length;var r=this._diffs[e].entries;this._diffEditor.setPosition(new T.L(r[0].modifiedLineStart,1)),this._diffEditor.setSelection({startColumn:1,startLineNumber:r[0].modifiedLineStart,endColumn:1073741824,endLineNumber:r[r.length-1].modifiedLineEnd}),this._isVisible=!0,this._diffEditor.doLayout(),this._render(),this._goToRow(this._getNextRow())}}},{key:"next",value:function(){var e=0;if(this._isVisible||(this._diffs=this._compute()),this._isVisible){for(var t=-1,n=0,i=this._diffs.length;n<i;n++)if(this._diffs[n]===this._currentDiff){t=n;break}e=t+1}else e=this._findDiffIndex(this._diffEditor.getPosition());if(0!==this._diffs.length){e%=this._diffs.length;var r=this._diffs[e].entries;this._diffEditor.setPosition(new T.L(r[0].modifiedLineStart,1)),this._diffEditor.setSelection({startColumn:1,startLineNumber:r[0].modifiedLineStart,endColumn:1073741824,endLineNumber:r[r.length-1].modifiedLineEnd}),this._isVisible=!0,this._diffEditor.doLayout(),this._render(),this._goToRow(this._getNextRow())}}},{key:"accept",value:function(){var e=-1,t=this._getCurrentFocusedRow();if(t){var n=parseInt(t.getAttribute("data-line"),10);isNaN(n)||(e=n)}this.hide(),-1!==e&&(this._diffEditor.setPosition(new T.L(e,1)),this._diffEditor.revealPosition(new T.L(e,1),1))}},{key:"hide",value:function(){this._isVisible=!1,this._diffEditor.updateOptions({readOnly:!1}),this._diffEditor.focus(),this._diffEditor.doLayout(),this._render()}},{key:"_getPrevRow",value:function(){var e=this._getCurrentFocusedRow();return e?e.previousElementSibling?e.previousElementSibling:e:this._getFirstRow()}},{key:"_getNextRow",value:function(){var e=this._getCurrentFocusedRow();return e?e.nextElementSibling?e.nextElementSibling:e:this._getFirstRow()}},{key:"_getFirstRow",value:function(){return this.domNode.domNode.querySelector(".diff-review-row")}},{key:"_getCurrentFocusedRow",value:function(){var e=document.activeElement;return e&&/diff-review-row/.test(e.className)?e:null}},{key:"_goToRow",value:function(e){var t=this._getCurrentFocusedRow();e.tabIndex=0,e.focus(),t&&t!==e&&(t.tabIndex=-1),this.scrollbar.scanDomNode()}},{key:"isVisible",value:function(){return this._isVisible}},{key:"layout",value:function(e,t,n){this._width=t,this.shadow.setTop(e-6),this.shadow.setWidth(t),this.shadow.setHeight(this._isVisible?6:0),this.domNode.setTop(e),this.domNode.setWidth(t),this.domNode.setHeight(n),this._content.setHeight(n),this._content.setWidth(t),this._isVisible?(this.actionBarContainer.setAttribute("aria-hidden","false"),this.actionBarContainer.setDisplay("block")):(this.actionBarContainer.setAttribute("aria-hidden","true"),this.actionBarContainer.setDisplay("none"))}},{key:"_compute",value:function(){var e=this._diffEditor.getLineChanges();if(!e||0===e.length)return[];var t=this._diffEditor.getOriginalEditor().getModel(),i=this._diffEditor.getModifiedEditor().getModel();return t&&i?n._mergeAdjacent(e,t.getLineCount(),i.getLineCount()):[]}},{key:"_findDiffIndex",value:function(e){for(var t=e.lineNumber,n=0,i=this._diffs.length;n<i;n++){var r=this._diffs[n].entries;if(t<=r[r.length-1].modifiedLineEnd)return n}return 0}},{key:"_render",value:function(){var e=this._diffEditor.getOriginalEditor().getOptions(),t=this._diffEditor.getModifiedEditor().getOptions(),i=this._diffEditor.getOriginalEditor().getModel(),r=this._diffEditor.getModifiedEditor().getModel(),o=i.getOptions(),a=r.getOptions();if(!this._isVisible||!i||!r)return f.clearNode(this._content.domNode),this._currentDiff=null,void this.scrollbar.scanDomNode();this._diffEditor.updateOptions({readOnly:!0});var s=this._findDiffIndex(this._diffEditor.getPosition());if(this._diffs[s]!==this._currentDiff){this._currentDiff=this._diffs[s];var u=this._diffs[s].entries,l=document.createElement("div");l.className="diff-review-table",l.setAttribute("role","list"),l.setAttribute("aria-label",'Difference review. Use "Stage | Unstage | Revert Selected Ranges" commands'),y.V.applyFontInfoSlow(l,t.get(40));for(var c=0,d=0,p=0,g=0,v=0,m=u.length;v<m;v++){var _=u[v],b=_.originalLineStart,w=_.originalLineEnd,C=_.modifiedLineStart,k=_.modifiedLineEnd;0!==b&&(0===c||b<c)&&(c=b),0!==w&&(0===d||w>d)&&(d=w),0!==C&&(0===p||C<p)&&(p=C),0!==k&&(0===g||k>g)&&(g=k)}var S=document.createElement("div");S.className="diff-review-row";var x=document.createElement("div");x.className="diff-review-cell diff-review-summary";var L=d-c+1,E=g-p+1;x.appendChild(document.createTextNode("".concat(s+1,"/").concat(this._diffs.length,": @@ -").concat(c,",").concat(L," +").concat(p,",").concat(E," @@"))),S.setAttribute("data-line",String(p));var D=function(e){return 0===e?h.N("no_lines_changed","no lines changed"):1===e?h.N("one_line_changed","1 line changed"):h.N("more_lines_changed","{0} lines changed",e)},N=D(L),M=D(E);S.setAttribute("aria-label",h.N({key:"header",comment:["This is the ARIA label for a git diff header.","A git diff header looks like this: @@ -154,12 +159,39 @@.","That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.","Variables 0 and 1 refer to the diff index out of total number of diffs.","Variables 2 and 4 will be numbers (a line number).",'Variables 3 and 5 will be "no lines changed", "1 line changed" or "X lines changed", localized separately.']},"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}",s+1,this._diffs.length,c,N,p,M)),S.appendChild(x),S.setAttribute("role","listitem"),l.appendChild(S);for(var T=t.get(55),I=p,O=0,A=u.length;O<A;O++){var R=u[O];n._renderSection(l,R,I,T,this._width,e,i,o,t,r,a),0!==R.modifiedLineStart&&(I=R.modifiedLineEnd)}f.clearNode(this._content.domNode),this._content.domNode.appendChild(l),this.scrollbar.scanDomNode()}}}],[{key:"_mergeAdjacent",value:function(e,t,n){if(!e||0===e.length)return[];for(var i=[],r=0,o=0,a=e.length;o<a;o++){var s=e[o],u=s.originalStartLineNumber,l=s.originalEndLineNumber,c=s.modifiedStartLineNumber,d=s.modifiedEndLineNumber,h=[],f=0,p=0===l?u:u-1,g=0===d?c:c-1,v=1,m=1;if(o>0){var _=e[o-1];v=0===_.originalEndLineNumber?_.originalStartLineNumber+1:_.originalEndLineNumber+1,m=0===_.modifiedEndLineNumber?_.modifiedStartLineNumber+1:_.modifiedEndLineNumber+1}var y=p-3+1,b=g-3+1;if(y<v){var w=v-y;y+=w,b+=w}if(b<m){var C=m-b;y+=C,b+=C}h[f++]=new B(y,p,b,g),0!==l&&(h[f++]=new B(u,l,0,0)),0!==d&&(h[f++]=new B(0,0,c,d));var k=0===l?u+1:l+1,S=0===d?c+1:d+1,x=t,L=n;if(o+1<a){var E=e[o+1];x=0===E.originalEndLineNumber?E.originalStartLineNumber:E.originalStartLineNumber-1,L=0===E.modifiedEndLineNumber?E.modifiedStartLineNumber:E.modifiedStartLineNumber-1}var D=k+3-1,N=S+3-1;if(D>x){var M=x-D;D+=M,N+=M}if(N>L){var T=L-N;D+=T,N+=T}h[f++]=new B(k,D,S,N),i[r++]=new z(h)}for(var I=i[0].entries,O=[],A=0,R=1,P=i.length;R<P;R++){var Z=i[R].entries,F=I[I.length-1],j=Z[0];0===F.getType()&&0===j.getType()&&j.originalLineStart<=F.originalLineEnd?(I[I.length-1]=new B(F.originalLineStart,j.originalLineEnd,F.modifiedLineStart,j.modifiedLineEnd),I=I.concat(Z.slice(1))):(O[A++]=new z(I),I=Z)}return O[A++]=new z(I),O}},{key:"_renderSection",value:function(e,t,i,r,o,a,s,u,l,c,d){var f=t.getType(),p="diff-review-row",g="",v=null;switch(f){case 1:p="diff-review-row line-insert",g=" char-insert",v=W;break;case 2:p="diff-review-row line-delete",g=" char-delete",v=V}for(var m=t.originalLineStart,_=t.originalLineEnd,y=t.modifiedLineStart,b=t.modifiedLineEnd,w=Math.max(b-y,_-m),C=a.get(127),k=C.glyphMarginWidth+C.lineNumbersWidth,S=l.get(127),x=10+S.glyphMarginWidth+S.lineNumbersWidth,L=0;L<=w;L++){var E=0===m?0:m+L,D=0===y?0:y+L,N=document.createElement("div");N.style.minWidth=o+"px",N.className=p,N.setAttribute("role","listitem"),0!==D&&(i=D),N.setAttribute("data-line",String(i));var M=document.createElement("div");M.className="diff-review-cell",M.style.height="".concat(r,"px"),N.appendChild(M);var T=document.createElement("span");T.style.width=k+"px",T.style.minWidth=k+"px",T.className="diff-review-line-number"+g,0!==E?T.appendChild(document.createTextNode(String(E))):T.innerText="\xa0",M.appendChild(T);var I=document.createElement("span");I.style.width=x+"px",I.style.minWidth=x+"px",I.style.paddingRight="10px",I.className="diff-review-line-number"+g,0!==D?I.appendChild(document.createTextNode(String(D))):I.innerText="\xa0",M.appendChild(I);var O=document.createElement("span");if(O.className="diff-review-spacer",v){var A=document.createElement("span");A.className=Z.kS.asClassName(v),A.innerText="\xa0\xa0",O.appendChild(A)}else O.innerText="\xa0\xa0";M.appendChild(O);var R=void 0;if(0!==D){var P=this._renderLine(c,l,d.tabSize,D);n._ttPolicy&&(P=n._ttPolicy.createHTML(P)),M.insertAdjacentHTML("beforeend",P),R=c.getLineContent(D)}else{var F=this._renderLine(s,a,u.tabSize,E);n._ttPolicy&&(F=n._ttPolicy.createHTML(F)),M.insertAdjacentHTML("beforeend",F),R=s.getLineContent(E)}0===R.length&&(R=h.N("blankLine","blank"));var j="";switch(f){case 0:j=E===D?h.N({key:"unchangedLine",comment:["The placeholders are contents of the line and should not be translated."]},"{0} unchanged line {1}",R,E):h.N("equalLine","{0} original line {1} modified line {2}",R,E,D);break;case 1:j=h.N("insertLine","+ {0} modified line {1}",R,D);break;case 2:j=h.N("deleteLine","- {0} original line {1}",R,E)}N.setAttribute("aria-label",j),e.appendChild(N)}}},{key:"_renderLine",value:function(e,t,n,i){var r=e.getLineContent(i),o=t.get(40),a=new Uint32Array(2);a[0]=r.length,a[1]=16793600;var s=new M.A(a,r),u=A.wA.isBasicASCII(r,e.mightContainNonBasicASCII()),l=A.wA.containsRTL(r,u,e.mightContainRTL());return(0,O.tF)(new O.IJ(o.isMonospace&&!t.get(27),o.canUseHalfwidthRightwardsArrow,r,!1,u,l,0,s,[],n,0,o.spaceWidth,o.middotWidth,o.wsmiddotWidth,t.get(102),t.get(85),t.get(79),t.get(41)!==N.n0.OFF,null)).html}}]),n}(_.JT);U._ttPolicy=null===(i=window.trustedTypes)||void 0===i?void 0:i.createPolicy("diffReview",{createHTML:function(e){return e}}),(0,Z.Ic)((function(e,t){var n=e.getColor(I.hw);n&&t.addRule(".monaco-diff-editor .diff-review-line-number { color: ".concat(n,"; }"));var i=e.getColor(P._w);i&&t.addRule(".monaco-diff-editor .diff-review-shadow { box-shadow: ".concat(i," 0 -6px 6px -6px inset; }"))}));var K=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(){return(0,c.Z)(this,n),t.call(this,{id:"editor.action.diffReview.next",label:h.N("editor.action.diffReview.next","Go to Next Difference"),alias:"Go to Next Difference",precondition:R.Ao.has("isInDiffEditor"),kbOpts:{kbExpr:null,primary:65,weight:100}})}return(0,d.Z)(n,[{key:"run",value:function(e,t){var n=G(e);n&&n.diffReviewNext()}}]),n}(D.R6),q=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(){return(0,c.Z)(this,n),t.call(this,{id:"editor.action.diffReview.prev",label:h.N("editor.action.diffReview.prev","Go to Previous Difference"),alias:"Go to Previous Difference",precondition:R.Ao.has("isInDiffEditor"),kbOpts:{kbExpr:null,primary:1089,weight:100}})}return(0,d.Z)(n,[{key:"run",value:function(e,t){var n=G(e);n&&n.diffReviewPrev()}}]),n}(D.R6);function G(e){var t=e.get(w.$),n=t.listDiffEditors(),i=t.getActiveCodeEditor();if(!i)return null;for(var r=0,o=n.length;r<o;r++){var a=n[r];if(a.getModifiedEditor().getId()===i.getId()||a.getOriginalEditor().getId()===i.getId())return a}return null}(0,D.Qr)(K),(0,D.Qr)(q);var $,Q=n(67033),X=n(85500),J=n(30062),ee=n(28893),te=n(333),ne=n(32110),ie=n(29805),re=n(84596),oe=n(41001),ae=n(71574),se=n(98989),ue=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},le=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i,o,a,s,u){var l;(0,c.Z)(this,n),(l=t.call(this))._viewZoneId=e,l._marginDomNode=i,l.editor=o,l.diff=a,l._contextMenuService=s,l._clipboardService=u,l._visibility=!1,l._marginDomNode.style.zIndex="10",l._diffActions=document.createElement("div"),l._diffActions.className=F.lA.lightBulb.classNames+" lightbulb-glyph",l._diffActions.style.position="absolute";var d=o.getOption(55),p=o.getModel().getEOL();l._diffActions.style.right="0px",l._diffActions.style.visibility="hidden",l._diffActions.style.height="".concat(d,"px"),l._diffActions.style.lineHeight="".concat(d,"px"),l._marginDomNode.appendChild(l._diffActions);var g=[];g.push(new E.aU("diff.clipboard.copyDeletedContent",a.originalEndLineNumber>a.modifiedStartLineNumber?h.N("diff.clipboard.copyDeletedLinesContent.label","Copy deleted lines"):h.N("diff.clipboard.copyDeletedLinesContent.single.label","Copy deleted line"),void 0,!0,(function(){return ue((0,r.Z)(l),void 0,void 0,S().mark((function e(){var t,n;return S().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=new Q.e(a.originalStartLineNumber,1,a.originalEndLineNumber+1,1),n=a.originalModel.getValueInRange(t),e.next=4,this._clipboardService.writeText(n);case 4:case"end":return e.stop()}}),e,this)})))})));var v=0,m=void 0;a.originalEndLineNumber>a.modifiedStartLineNumber&&(m=new E.aU("diff.clipboard.copyDeletedLineContent",h.N("diff.clipboard.copyDeletedLineContent.label","Copy deleted line ({0})",a.originalStartLineNumber),void 0,!0,(function(){return ue((0,r.Z)(l),void 0,void 0,S().mark((function e(){var t;return S().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=a.originalModel.getLineContent(a.originalStartLineNumber+v),e.next=3,this._clipboardService.writeText(t);case 3:case"end":return e.stop()}}),e,this)})))})),g.push(m)),o.getOption(77)||g.push(new E.aU("diff.inline.revertChange",h.N("diff.inline.revertChange.label","Revert this change"),void 0,!0,(function(){return ue((0,r.Z)(l),void 0,void 0,S().mark((function e(){var t,n,i,r;return S().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=new Q.e(a.originalStartLineNumber,1,a.originalEndLineNumber,a.originalModel.getLineMaxColumn(a.originalEndLineNumber)),n=a.originalModel.getValueInRange(t),0===a.modifiedEndLineNumber?(i=o.getModel().getLineMaxColumn(a.modifiedStartLineNumber),o.executeEdits("diffEditor",[{range:new Q.e(a.modifiedStartLineNumber,i,a.modifiedStartLineNumber,i),text:p+n}])):(r=o.getModel().getLineMaxColumn(a.modifiedEndLineNumber),o.executeEdits("diffEditor",[{range:new Q.e(a.modifiedStartLineNumber,1,a.modifiedEndLineNumber,r),text:n}]));case 3:case"end":return e.stop()}}),e)})))})));var _=function(e,t){l._contextMenuService.showContextMenu({getAnchor:function(){return{x:e,y:t}},getActions:function(){return m&&(m.label=h.N("diff.clipboard.copyDeletedLineContent.label","Copy deleted line ({0})",a.originalStartLineNumber+v)),g},autoSelectFirstItem:!0})};return l._register(f.addStandardDisposableListener(l._diffActions,"mousedown",(function(e){var t=f.getDomNodePagePosition(l._diffActions),n=t.top,i=t.height,r=Math.floor(d/3);e.preventDefault(),_(e.posx,n+i+r)}))),l._register(o.onMouseMove((function(e){8===e.target.type||5===e.target.type?e.target.detail.viewZoneId===l._viewZoneId?(l.visibility=!0,v=l._updateLightBulbPosition(l._marginDomNode,e.event.browserEvent.y,d)):l.visibility=!1:l.visibility=!1}))),l._register(o.onMouseDown((function(e){e.event.rightButton&&(8!==e.target.type&&5!==e.target.type||e.target.detail.viewZoneId===l._viewZoneId&&(e.event.preventDefault(),v=l._updateLightBulbPosition(l._marginDomNode,e.event.browserEvent.y,d),_(e.event.posx,e.event.posy+d)))}))),l}return(0,d.Z)(n,[{key:"visibility",get:function(){return this._visibility},set:function(e){this._visibility!==e&&(this._visibility=e,this._diffActions.style.visibility=e?"visible":"hidden")}},{key:"_updateLightBulbPosition",value:function(e,t,n){var i=t-f.getDomNodePagePosition(e).top,r=Math.floor(i/n),o=r*n;if(this._diffActions.style.top="".concat(o,"px"),this.diff.viewLineCounts)for(var a=0,s=0;s<this.diff.viewLineCounts.length;s++)if(r<(a+=this.diff.viewLineCounts[s]))return s;return r}}]),n}(_.JT),ce=n(38794),de=n(8729),he=n(18085),fe=n(75949),pe=n(79026),ge=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},ve=function(e,t){return function(n,i){t(n,i,e)}},me=function(){function e(t,n){(0,c.Z)(this,e),this._contextMenuService=t,this._clipboardService=n,this._zones=[],this._inlineDiffMargins=[],this._zonesMap={},this._decorations=[]}return(0,d.Z)(e,[{key:"getForeignViewZones",value:function(e){var t=this;return e.filter((function(e){return!t._zonesMap[String(e.id)]}))}},{key:"clean",value:function(e){var t=this;this._zones.length>0&&e.changeViewZones((function(e){var n,i=(0,l.Z)(t._zones);try{for(i.s();!(n=i.n()).done;){var r=n.value;e.removeZone(r)}}catch(o){i.e(o)}finally{i.f()}})),this._zones=[],this._zonesMap={},this._decorations=e.deltaDecorations(this._decorations,[])}},{key:"apply",value:function(e,t,n,i){var r=this,o=i?b.ZF.capture(e):null;e.changeViewZones((function(t){var i,o=(0,l.Z)(r._zones);try{for(o.s();!(i=o.n()).done;){var a=i.value;t.removeZone(a)}}catch(p){o.e(p)}finally{o.f()}var s,u=(0,l.Z)(r._inlineDiffMargins);try{for(u.s();!(s=u.n()).done;){s.value.dispose()}}catch(p){u.e(p)}finally{u.f()}r._zones=[],r._zonesMap={},r._inlineDiffMargins=[];for(var c=0,d=n.zones.length;c<d;c++){var h=n.zones[c];h.suppressMouseDown=!0;var f=t.addZone(h);r._zones.push(f),r._zonesMap[String(f)]=!0,n.zones[c].diff&&h.marginDomNode&&(h.suppressMouseDown=!1,r._inlineDiffMargins.push(new le(f,h.marginDomNode,e,n.zones[c].diff,r._contextMenuService,r._clipboardService)))}})),o&&o.restore(e),this._decorations=e.deltaDecorations(this._decorations,n.decorations),t&&t.setZones(n.overviewZones)}}]),e}(),_e=0,ye=(0,j.q5)("diff-insert",F.lA.add,h.N("diffInsertIcon","Line decoration for inserts in the diff editor.")),be=(0,j.q5)("diff-remove",F.lA.remove,h.N("diffRemoveIcon","Line decoration for removals in the diff editor.")),we=null===($=window.trustedTypes)||void 0===$?void 0:$.createPolicy("diffEditorWidget",{createHTML:function(e){return e}}),Ce=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i,o,a,s,u,d,h,g,_,y,b){var w;(0,c.Z)(this,n),(w=t.call(this))._editorProgressService=b,w._onDidDispose=w._register(new m.Q5),w.onDidDispose=w._onDidDispose.event,w._onDidUpdateDiff=w._register(new m.Q5),w.onDidUpdateDiff=w._onDidUpdateDiff.event,w._onDidContentSizeChange=w._register(new m.Q5),w._lastOriginalWarning=null,w._lastModifiedWarning=null,w._editorWorkerService=s,w._codeEditorService=h,w._contextKeyService=w._register(u.createScoped(e)),w._instantiationService=d.createChild(new oe.y([R.i6,w._contextKeyService])),w._contextKeyService.createKey("isInDiffEditor",!0),w._themeService=g,w._notificationService=_,w._id=++_e,w._state=0,w._updatingDiffProgress=null,w._domElement=e,i=i||{},w._renderSideBySide=!0,"undefined"!==typeof i.renderSideBySide&&(w._renderSideBySide=i.renderSideBySide),w._maxComputationTime=5e3,"undefined"!==typeof i.maxComputationTime&&(w._maxComputationTime=i.maxComputationTime),w._ignoreTrimWhitespace=!0,"undefined"!==typeof i.ignoreTrimWhitespace&&(w._ignoreTrimWhitespace=i.ignoreTrimWhitespace),w._renderIndicators=!0,"undefined"!==typeof i.renderIndicators&&(w._renderIndicators=i.renderIndicators),w._originalIsEditable=(0,N.O7)(i.originalEditable,!1),w._diffCodeLens=(0,N.O7)(i.diffCodeLens,!1),w._diffWordWrap=Ie(i.diffWordWrap,"inherit"),"undefined"!==typeof i.isInEmbeddedEditor?w._contextKeyService.createKey("isInEmbeddedDiffEditor",i.isInEmbeddedEditor):w._contextKeyService.createKey("isInEmbeddedDiffEditor",!1),w._renderOverviewRuler=!0,"undefined"!==typeof i.renderOverviewRuler&&(w._renderOverviewRuler=Boolean(i.renderOverviewRuler)),w._updateDecorationsRunner=w._register(new v.pY((function(){return w._updateDecorations()}),0)),w._containerDomElement=document.createElement("div"),w._containerDomElement.className=n._getClassName(w._themeService.getColorTheme(),w._renderSideBySide),w._containerDomElement.style.position="relative",w._containerDomElement.style.height="100%",w._domElement.appendChild(w._containerDomElement),w._overviewViewportDomElement=(0,p.X)(document.createElement("div")),w._overviewViewportDomElement.setClassName("diffViewport"),w._overviewViewportDomElement.setPosition("absolute"),w._overviewDomElement=document.createElement("div"),w._overviewDomElement.className="diffOverview",w._overviewDomElement.style.position="absolute",w._overviewDomElement.appendChild(w._overviewViewportDomElement.domNode),w._register(f.addStandardDisposableListener(w._overviewDomElement,"mousedown",(function(e){w._modifiedEditor.delegateVerticalScrollbarMouseDown(e)}))),w._renderOverviewRuler&&w._containerDomElement.appendChild(w._overviewDomElement),w._originalDomNode=document.createElement("div"),w._originalDomNode.className="editor original",w._originalDomNode.style.position="absolute",w._originalDomNode.style.height="100%",w._containerDomElement.appendChild(w._originalDomNode),w._modifiedDomNode=document.createElement("div"),w._modifiedDomNode.className="editor modified",w._modifiedDomNode.style.position="absolute",w._modifiedDomNode.style.height="100%",w._containerDomElement.appendChild(w._modifiedDomNode),w._beginUpdateDecorationsTimeout=-1,w._currentlyChangingViewZones=!1,w._diffComputationToken=0,w._originalEditorState=new me(y,a),w._modifiedEditorState=new me(y,a),w._isVisible=!0,w._isHandlingScrollEvent=!1,w._elementSizeObserver=w._register(new fe.I(w._containerDomElement,i.dimension,(function(){return w._onDidContainerSizeChanged()}))),i.automaticLayout&&w._elementSizeObserver.startObserving(),w._diffComputationResult=null,w._originalEditor=w._createLeftHandSideEditor(i,o.originalEditor||{}),w._modifiedEditor=w._createRightHandSideEditor(i,o.modifiedEditor||{}),w._originalOverviewRuler=null,w._modifiedOverviewRuler=null,w._reviewPane=new U((0,r.Z)(w)),w._containerDomElement.appendChild(w._reviewPane.domNode.domNode),w._containerDomElement.appendChild(w._reviewPane.shadow.domNode),w._containerDomElement.appendChild(w._reviewPane.actionBarContainer.domNode),w._enableSplitViewResizing=!0,"undefined"!==typeof i.enableSplitViewResizing&&(w._enableSplitViewResizing=i.enableSplitViewResizing),w._renderSideBySide?w._setStrategy(new De(w._createDataSource(),w._enableSplitViewResizing)):w._setStrategy(new Me(w._createDataSource(),w._enableSplitViewResizing)),w._register(g.onDidColorThemeChange((function(e){w._strategy&&w._strategy.applyColors(e)&&w._updateDecorationsRunner.schedule(),w._containerDomElement.className=n._getClassName(w._themeService.getColorTheme(),w._renderSideBySide)})));var C,k=D.Uc.getDiffEditorContributions(),S=(0,l.Z)(k);try{for(S.s();!(C=S.n()).done;){var x=C.value;try{w._register(d.createInstance(x.ctor,(0,r.Z)(w)))}catch(L){(0,de.dL)(L)}}}catch(L){S.e(L)}finally{S.f()}return w._codeEditorService.addDiffEditor((0,r.Z)(w)),w}return(0,d.Z)(n,[{key:"_setState",value:function(e){this._state!==e&&(this._state=e,this._updatingDiffProgress&&(this._updatingDiffProgress.done(),this._updatingDiffProgress=null),1===this._state&&(this._updatingDiffProgress=this._editorProgressService.show(!0,1e3)))}},{key:"diffReviewNext",value:function(){this._reviewPane.next()}},{key:"diffReviewPrev",value:function(){this._reviewPane.prev()}},{key:"_recreateOverviewRulers",value:function(){this._renderOverviewRuler&&(this._originalOverviewRuler&&(this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode()),this._originalOverviewRuler.dispose()),this._originalEditor.hasModel()&&(this._originalOverviewRuler=this._originalEditor.createOverviewRuler("original diffOverviewRuler"),this._overviewDomElement.appendChild(this._originalOverviewRuler.getDomNode())),this._modifiedOverviewRuler&&(this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode()),this._modifiedOverviewRuler.dispose()),this._modifiedEditor.hasModel()&&(this._modifiedOverviewRuler=this._modifiedEditor.createOverviewRuler("modified diffOverviewRuler"),this._overviewDomElement.appendChild(this._modifiedOverviewRuler.getDomNode())),this._layoutOverviewRulers())}},{key:"_createLeftHandSideEditor",value:function(e,t){var i=this,r=this._createInnerEditor(this._instantiationService,this._originalDomNode,this._adjustOptionsForLeftHandSide(e),t);this._register(r.onDidScrollChange((function(e){i._isHandlingScrollEvent||(e.scrollTopChanged||e.scrollLeftChanged||e.scrollHeightChanged)&&(i._isHandlingScrollEvent=!0,i._modifiedEditor.setScrollPosition({scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}),i._isHandlingScrollEvent=!1,i._layoutOverviewViewport())}))),this._register(r.onDidChangeViewZones((function(){i._onViewZonesChanged()}))),this._register(r.onDidChangeConfiguration((function(e){r.getModel()&&(e.hasChanged(40)&&i._updateDecorationsRunner.schedule(),e.hasChanged(128)&&(i._updateDecorationsRunner.cancel(),i._updateDecorations()))}))),this._register(r.onDidChangeModelContent((function(){i._isVisible&&i._beginUpdateDecorationsSoon()})));var o=this._contextKeyService.createKey("isInDiffLeftEditor",r.hasWidgetFocus());return this._register(r.onDidFocusEditorWidget((function(){return o.set(!0)}))),this._register(r.onDidBlurEditorWidget((function(){return o.set(!1)}))),this._register(r.onDidContentSizeChange((function(e){var t=i._originalEditor.getContentWidth()+i._modifiedEditor.getContentWidth()+n.ONE_OVERVIEW_WIDTH,r=Math.max(i._modifiedEditor.getContentHeight(),i._originalEditor.getContentHeight());i._onDidContentSizeChange.fire({contentHeight:r,contentWidth:t,contentHeightChanged:e.contentHeightChanged,contentWidthChanged:e.contentWidthChanged})}))),r}},{key:"_createRightHandSideEditor",value:function(e,t){var i=this,r=this._createInnerEditor(this._instantiationService,this._modifiedDomNode,this._adjustOptionsForRightHandSide(e),t);this._register(r.onDidScrollChange((function(e){i._isHandlingScrollEvent||(e.scrollTopChanged||e.scrollLeftChanged||e.scrollHeightChanged)&&(i._isHandlingScrollEvent=!0,i._originalEditor.setScrollPosition({scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}),i._isHandlingScrollEvent=!1,i._layoutOverviewViewport())}))),this._register(r.onDidChangeViewZones((function(){i._onViewZonesChanged()}))),this._register(r.onDidChangeConfiguration((function(e){r.getModel()&&(e.hasChanged(40)&&i._updateDecorationsRunner.schedule(),e.hasChanged(128)&&(i._updateDecorationsRunner.cancel(),i._updateDecorations()))}))),this._register(r.onDidChangeModelContent((function(){i._isVisible&&i._beginUpdateDecorationsSoon()}))),this._register(r.onDidChangeModelOptions((function(e){e.tabSize&&i._updateDecorationsRunner.schedule()})));var o=this._contextKeyService.createKey("isInDiffRightEditor",r.hasWidgetFocus());return this._register(r.onDidFocusEditorWidget((function(){return o.set(!0)}))),this._register(r.onDidBlurEditorWidget((function(){return o.set(!1)}))),this._register(r.onDidContentSizeChange((function(e){var t=i._originalEditor.getContentWidth()+i._modifiedEditor.getContentWidth()+n.ONE_OVERVIEW_WIDTH,r=Math.max(i._modifiedEditor.getContentHeight(),i._originalEditor.getContentHeight());i._onDidContentSizeChange.fire({contentHeight:r,contentWidth:t,contentHeightChanged:e.contentHeightChanged,contentWidthChanged:e.contentWidthChanged})}))),r}},{key:"_createInnerEditor",value:function(e,t,n,i){return e.createInstance(C.Gm,t,n,i)}},{key:"dispose",value:function(){this._codeEditorService.removeDiffEditor(this),-1!==this._beginUpdateDecorationsTimeout&&(window.clearTimeout(this._beginUpdateDecorationsTimeout),this._beginUpdateDecorationsTimeout=-1),this._cleanViewZonesAndDecorations(),this._originalOverviewRuler&&(this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode()),this._originalOverviewRuler.dispose()),this._modifiedOverviewRuler&&(this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode()),this._modifiedOverviewRuler.dispose()),this._overviewDomElement.removeChild(this._overviewViewportDomElement.domNode),this._renderOverviewRuler&&this._containerDomElement.removeChild(this._overviewDomElement),this._containerDomElement.removeChild(this._originalDomNode),this._originalEditor.dispose(),this._containerDomElement.removeChild(this._modifiedDomNode),this._modifiedEditor.dispose(),this._strategy.dispose(),this._containerDomElement.removeChild(this._reviewPane.domNode.domNode),this._containerDomElement.removeChild(this._reviewPane.shadow.domNode),this._containerDomElement.removeChild(this._reviewPane.actionBarContainer.domNode),this._reviewPane.dispose(),this._domElement.removeChild(this._containerDomElement),this._onDidDispose.fire(),(0,o.Z)((0,a.Z)(n.prototype),"dispose",this).call(this)}},{key:"getId",value:function(){return this.getEditorType()+":"+this._id}},{key:"getEditorType",value:function(){return J.g.IDiffEditor}},{key:"getLineChanges",value:function(){return this._diffComputationResult?this._diffComputationResult.changes:null}},{key:"getOriginalEditor",value:function(){return this._originalEditor}},{key:"getModifiedEditor",value:function(){return this._modifiedEditor}},{key:"updateOptions",value:function(e){var t=!1;"undefined"!==typeof e.renderSideBySide&&this._renderSideBySide!==e.renderSideBySide&&(this._renderSideBySide=e.renderSideBySide,t=!0),"undefined"!==typeof e.maxComputationTime&&(this._maxComputationTime=e.maxComputationTime,this._isVisible&&this._beginUpdateDecorationsSoon());var i=!1;"undefined"!==typeof e.ignoreTrimWhitespace&&this._ignoreTrimWhitespace!==e.ignoreTrimWhitespace&&(this._ignoreTrimWhitespace=e.ignoreTrimWhitespace,i=!0),"undefined"!==typeof e.renderIndicators&&this._renderIndicators!==e.renderIndicators&&(this._renderIndicators=e.renderIndicators,i=!0),i&&this._beginUpdateDecorations(),this._originalIsEditable=(0,N.O7)(e.originalEditable,this._originalIsEditable),this._diffCodeLens=(0,N.O7)(e.diffCodeLens,this._diffCodeLens),this._diffWordWrap=Ie(e.diffWordWrap,this._diffWordWrap),this._modifiedEditor.updateOptions(this._adjustOptionsForRightHandSide(e)),this._originalEditor.updateOptions(this._adjustOptionsForLeftHandSide(e)),"undefined"!==typeof e.enableSplitViewResizing&&(this._enableSplitViewResizing=e.enableSplitViewResizing),this._strategy.setEnableSplitViewResizing(this._enableSplitViewResizing),t&&(this._renderSideBySide?this._setStrategy(new De(this._createDataSource(),this._enableSplitViewResizing)):this._setStrategy(new Me(this._createDataSource(),this._enableSplitViewResizing)),this._containerDomElement.className=n._getClassName(this._themeService.getColorTheme(),this._renderSideBySide)),"undefined"!==typeof e.renderOverviewRuler&&this._renderOverviewRuler!==e.renderOverviewRuler&&(this._renderOverviewRuler=e.renderOverviewRuler,this._renderOverviewRuler?this._containerDomElement.appendChild(this._overviewDomElement):this._containerDomElement.removeChild(this._overviewDomElement))}},{key:"getModel",value:function(){return{original:this._originalEditor.getModel(),modified:this._modifiedEditor.getModel()}}},{key:"setModel",value:function(e){if(e&&(!e.original||!e.modified))throw new Error(e.original?"DiffEditorWidget.setModel: Modified model is null":"DiffEditorWidget.setModel: Original model is null");this._cleanViewZonesAndDecorations(),this._originalEditor.setModel(e?e.original:null),this._modifiedEditor.setModel(e?e.modified:null),this._updateDecorationsRunner.cancel(),e&&(this._originalEditor.setScrollTop(0),this._modifiedEditor.setScrollTop(0)),this._diffComputationResult=null,this._diffComputationToken++,this._setState(0),e&&(this._recreateOverviewRulers(),this._beginUpdateDecorations()),this._layoutOverviewViewport()}},{key:"getDomNode",value:function(){return this._domElement}},{key:"getVisibleColumnFromPosition",value:function(e){return this._modifiedEditor.getVisibleColumnFromPosition(e)}},{key:"getPosition",value:function(){return this._modifiedEditor.getPosition()}},{key:"setPosition",value:function(e){this._modifiedEditor.setPosition(e)}},{key:"revealLine",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealLine(e,t)}},{key:"revealLineInCenter",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealLineInCenter(e,t)}},{key:"revealLineInCenterIfOutsideViewport",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealLineInCenterIfOutsideViewport(e,t)}},{key:"revealLineNearTop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealLineNearTop(e,t)}},{key:"revealPosition",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealPosition(e,t)}},{key:"revealPositionInCenter",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealPositionInCenter(e,t)}},{key:"revealPositionInCenterIfOutsideViewport",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealPositionInCenterIfOutsideViewport(e,t)}},{key:"revealPositionNearTop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealPositionNearTop(e,t)}},{key:"getSelection",value:function(){return this._modifiedEditor.getSelection()}},{key:"getSelections",value:function(){return this._modifiedEditor.getSelections()}},{key:"setSelection",value:function(e){this._modifiedEditor.setSelection(e)}},{key:"setSelections",value:function(e){this._modifiedEditor.setSelections(e)}},{key:"revealLines",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._modifiedEditor.revealLines(e,t,n)}},{key:"revealLinesInCenter",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._modifiedEditor.revealLinesInCenter(e,t,n)}},{key:"revealLinesInCenterIfOutsideViewport",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._modifiedEditor.revealLinesInCenterIfOutsideViewport(e,t,n)}},{key:"revealLinesNearTop",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this._modifiedEditor.revealLinesNearTop(e,t,n)}},{key:"revealRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];this._modifiedEditor.revealRange(e,t,n,i)}},{key:"revealRangeInCenter",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealRangeInCenter(e,t)}},{key:"revealRangeInCenterIfOutsideViewport",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealRangeInCenterIfOutsideViewport(e,t)}},{key:"revealRangeNearTop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealRangeNearTop(e,t)}},{key:"revealRangeNearTopIfOutsideViewport",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealRangeNearTopIfOutsideViewport(e,t)}},{key:"revealRangeAtTop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._modifiedEditor.revealRangeAtTop(e,t)}},{key:"getSupportedActions",value:function(){return this._modifiedEditor.getSupportedActions()}},{key:"saveViewState",value:function(){return{original:this._originalEditor.saveViewState(),modified:this._modifiedEditor.saveViewState()}}},{key:"restoreViewState",value:function(e){if(e&&e.original&&e.modified){var t=e;this._originalEditor.restoreViewState(t.original),this._modifiedEditor.restoreViewState(t.modified)}}},{key:"layout",value:function(e){this._elementSizeObserver.observe(e)}},{key:"focus",value:function(){this._modifiedEditor.focus()}},{key:"hasTextFocus",value:function(){return this._originalEditor.hasTextFocus()||this._modifiedEditor.hasTextFocus()}},{key:"trigger",value:function(e,t,n){this._modifiedEditor.trigger(e,t,n)}},{key:"changeDecorations",value:function(e){return this._modifiedEditor.changeDecorations(e)}},{key:"_onDidContainerSizeChanged",value:function(){this._doLayout()}},{key:"_getReviewHeight",value:function(){return this._reviewPane.isVisible()?this._elementSizeObserver.getHeight():0}},{key:"_layoutOverviewRulers",value:function(){if(this._renderOverviewRuler&&this._originalOverviewRuler&&this._modifiedOverviewRuler){var e=this._elementSizeObserver.getHeight(),t=this._getReviewHeight(),i=n.ENTIRE_DIFF_OVERVIEW_WIDTH-2*n.ONE_OVERVIEW_WIDTH;this._modifiedEditor.getLayoutInfo()&&(this._originalOverviewRuler.setLayout({top:0,width:n.ONE_OVERVIEW_WIDTH,right:i+n.ONE_OVERVIEW_WIDTH,height:e-t}),this._modifiedOverviewRuler.setLayout({top:0,right:0,width:n.ONE_OVERVIEW_WIDTH,height:e-t}))}}},{key:"_onViewZonesChanged",value:function(){this._currentlyChangingViewZones||this._updateDecorationsRunner.schedule()}},{key:"_beginUpdateDecorationsSoon",value:function(){var e=this;-1!==this._beginUpdateDecorationsTimeout&&(window.clearTimeout(this._beginUpdateDecorationsTimeout),this._beginUpdateDecorationsTimeout=-1),this._beginUpdateDecorationsTimeout=window.setTimeout((function(){return e._beginUpdateDecorations()}),n.UPDATE_DIFF_DECORATIONS_DELAY)}},{key:"_beginUpdateDecorations",value:function(){var e=this;this._beginUpdateDecorationsTimeout=-1;var t=this._originalEditor.getModel(),i=this._modifiedEditor.getModel();if(t&&i){this._diffComputationToken++;var r=this._diffComputationToken;this._setState(1),this._editorWorkerService.canComputeDiff(t.uri,i.uri)?this._editorWorkerService.computeDiff(t.uri,i.uri,this._ignoreTrimWhitespace,this._maxComputationTime).then((function(n){r===e._diffComputationToken&&t===e._originalEditor.getModel()&&i===e._modifiedEditor.getModel()&&(e._setState(2),e._diffComputationResult=n,e._updateDecorationsRunner.schedule(),e._onDidUpdateDiff.fire())}),(function(n){r===e._diffComputationToken&&t===e._originalEditor.getModel()&&i===e._modifiedEditor.getModel()&&(e._setState(2),e._diffComputationResult=null,e._updateDecorationsRunner.schedule())})):n._equals(t.uri,this._lastOriginalWarning)&&n._equals(i.uri,this._lastModifiedWarning)||(this._lastOriginalWarning=t.uri,this._lastModifiedWarning=i.uri,this._notificationService.warn(h.N("diff.tooLarge","Cannot compare files because one file is too large.")))}}},{key:"_cleanViewZonesAndDecorations",value:function(){this._originalEditorState.clean(this._originalEditor),this._modifiedEditorState.clean(this._modifiedEditor)}},{key:"_updateDecorations",value:function(){if(this._originalEditor.getModel()&&this._modifiedEditor.getModel()){var e=this._diffComputationResult?this._diffComputationResult.changes:[],t=this._originalEditorState.getForeignViewZones(this._originalEditor.getWhitespaces()),n=this._modifiedEditorState.getForeignViewZones(this._modifiedEditor.getWhitespaces()),i=this._strategy.getEditorsDiffDecorations(e,this._ignoreTrimWhitespace,this._renderIndicators,t,n);try{this._currentlyChangingViewZones=!0,this._originalEditorState.apply(this._originalEditor,this._originalOverviewRuler,i.original,!1),this._modifiedEditorState.apply(this._modifiedEditor,this._modifiedOverviewRuler,i.modified,!0)}finally{this._currentlyChangingViewZones=!1}}}},{key:"_adjustOptionsForSubEditor",value:function(e){var t=Object.assign({},e);return t.inDiffEditor=!0,t.automaticLayout=!1,t.scrollbar=Object.assign({},t.scrollbar||{}),t.scrollbar.vertical="visible",t.folding=!1,t.codeLens=this._diffCodeLens,t.fixedOverflowWidgets=!0,t.minimap=Object.assign({},t.minimap||{}),t.minimap.enabled=!1,t}},{key:"_adjustOptionsForLeftHandSide",value:function(e){var t=this._adjustOptionsForSubEditor(e);return this._renderSideBySide?t.wordWrapOverride1=this._diffWordWrap:t.wordWrapOverride1="off",e.originalAriaLabel&&(t.ariaLabel=e.originalAriaLabel),t.readOnly=!this._originalIsEditable,t.extraEditorClassName="original-in-monaco-diff-editor",Object.assign(Object.assign({},t),{dimension:{height:0,width:0}})}},{key:"_adjustOptionsForRightHandSide",value:function(e){var t=this._adjustOptionsForSubEditor(e);return e.modifiedAriaLabel&&(t.ariaLabel=e.modifiedAriaLabel),t.wordWrapOverride1=this._diffWordWrap,t.revealHorizontalRightPadding=N.BH.revealHorizontalRightPadding.defaultValue+n.ENTIRE_DIFF_OVERVIEW_WIDTH,t.scrollbar.verticalHasArrows=!1,t.extraEditorClassName="modified-in-monaco-diff-editor",Object.assign(Object.assign({},t),{dimension:{height:0,width:0}})}},{key:"doLayout",value:function(){this._elementSizeObserver.observe(),this._doLayout()}},{key:"_doLayout",value:function(){var e=this._elementSizeObserver.getWidth(),t=this._elementSizeObserver.getHeight(),i=this._getReviewHeight(),r=this._strategy.layout();this._originalDomNode.style.width=r+"px",this._originalDomNode.style.left="0px",this._modifiedDomNode.style.width=e-r+"px",this._modifiedDomNode.style.left=r+"px",this._overviewDomElement.style.top="0px",this._overviewDomElement.style.height=t-i+"px",this._overviewDomElement.style.width=n.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",this._overviewDomElement.style.left=e-n.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",this._overviewViewportDomElement.setWidth(n.ENTIRE_DIFF_OVERVIEW_WIDTH),this._overviewViewportDomElement.setHeight(30),this._originalEditor.layout({width:r,height:t-i}),this._modifiedEditor.layout({width:e-r-(this._renderOverviewRuler?n.ENTIRE_DIFF_OVERVIEW_WIDTH:0),height:t-i}),(this._originalOverviewRuler||this._modifiedOverviewRuler)&&this._layoutOverviewRulers(),this._reviewPane.layout(t-i,e,i),this._layoutOverviewViewport()}},{key:"_layoutOverviewViewport",value:function(){var e=this._computeOverviewViewport();e?(this._overviewViewportDomElement.setTop(e.top),this._overviewViewportDomElement.setHeight(e.height)):(this._overviewViewportDomElement.setTop(0),this._overviewViewportDomElement.setHeight(0))}},{key:"_computeOverviewViewport",value:function(){var e=this._modifiedEditor.getLayoutInfo();if(!e)return null;var t=this._modifiedEditor.getScrollTop(),n=this._modifiedEditor.getScrollHeight(),i=Math.max(0,e.height),r=Math.max(0,i-0),o=n>0?r/n:0;return{height:Math.max(0,Math.floor(e.height*o)),top:Math.floor(t*o)}}},{key:"_createDataSource",value:function(){var e=this;return{getWidth:function(){return e._elementSizeObserver.getWidth()},getHeight:function(){return e._elementSizeObserver.getHeight()-e._getReviewHeight()},getOptions:function(){return{renderOverviewRuler:e._renderOverviewRuler}},getContainerDomNode:function(){return e._containerDomElement},relayoutEditors:function(){e._doLayout()},getOriginalEditor:function(){return e._originalEditor},getModifiedEditor:function(){return e._modifiedEditor}}}},{key:"_setStrategy",value:function(e){this._strategy&&this._strategy.dispose(),this._strategy=e,e.applyColors(this._themeService.getColorTheme()),this._diffComputationResult&&this._updateDecorations(),this._doLayout()}},{key:"_getLineChangeAtOrBeforeLineNumber",value:function(e,t){var n=this._diffComputationResult?this._diffComputationResult.changes:[];if(0===n.length||e<t(n[0]))return null;for(var i=0,r=n.length-1;i<r;){var o=Math.floor((i+r)/2),a=t(n[o]),s=o+1<=r?t(n[o+1]):1073741824;e<a?r=o-1:e>=s?i=o+1:(i=o,r=o)}return n[i]}},{key:"_getEquivalentLineForOriginalLineNumber",value:function(e){var t=this._getLineChangeAtOrBeforeLineNumber(e,(function(e){return e.originalStartLineNumber}));if(!t)return e;var n=t.originalStartLineNumber+(t.originalEndLineNumber>0?-1:0),i=t.modifiedStartLineNumber+(t.modifiedEndLineNumber>0?-1:0),r=t.originalEndLineNumber>0?t.originalEndLineNumber-t.originalStartLineNumber+1:0,o=t.modifiedEndLineNumber>0?t.modifiedEndLineNumber-t.modifiedStartLineNumber+1:0,a=e-n;return a<=r?i+Math.min(a,o):i+o-r+a}},{key:"_getEquivalentLineForModifiedLineNumber",value:function(e){var t=this._getLineChangeAtOrBeforeLineNumber(e,(function(e){return e.modifiedStartLineNumber}));if(!t)return e;var n=t.originalStartLineNumber+(t.originalEndLineNumber>0?-1:0),i=t.modifiedStartLineNumber+(t.modifiedEndLineNumber>0?-1:0),r=t.originalEndLineNumber>0?t.originalEndLineNumber-t.originalStartLineNumber+1:0,o=t.modifiedEndLineNumber>0?t.modifiedEndLineNumber-t.modifiedStartLineNumber+1:0,a=e-i;return a<=o?n+Math.min(a,r):n+r-o+a}},{key:"getDiffLineInformationForOriginal",value:function(e){return this._diffComputationResult?{equivalentLineNumber:this._getEquivalentLineForOriginalLineNumber(e)}:null}},{key:"getDiffLineInformationForModified",value:function(e){return this._diffComputationResult?{equivalentLineNumber:this._getEquivalentLineForModifiedLineNumber(e)}:null}}],[{key:"_getClassName",value:function(e,t){var n="monaco-diff-editor monaco-editor-background ";return t&&(n+="side-by-side "),n+=(0,Z.m6)(e.type)}},{key:"_equals",value:function(e,t){return!e&&!t||!(!e||!t)&&e.toString()===t.toString()}}]),n}(_.JT);Ce.ONE_OVERVIEW_WIDTH=15,Ce.ENTIRE_DIFF_OVERVIEW_WIDTH=30,Ce.UPDATE_DIFF_DECORATIONS_DELAY=200,Ce=ge([ve(3,ce.p),ve(4,te.p),ve(5,R.i6),ve(6,re.TG),ve(7,w.$),ve(8,Z.XE),ve(9,ae.lT),ve(10,se.i),ve(11,he.e)],Ce);var ke=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this))._dataSource=e,i._insertColor=null,i._removeColor=null,i}return(0,d.Z)(n,[{key:"applyColors",value:function(e){var t=(e.getColor(P.yp)||P.Cz).transparent(2),n=(e.getColor(P.P4)||P.ke).transparent(2),i=!t.equals(this._insertColor)||!n.equals(this._removeColor);return this._insertColor=t,this._removeColor=n,i}},{key:"getEditorsDiffDecorations",value:function(e,t,n,i,r){r=r.sort((function(e,t){return e.afterLineNumber-t.afterLineNumber})),i=i.sort((function(e,t){return e.afterLineNumber-t.afterLineNumber}));var o=this._getViewZones(e,i,r,n),a=this._getOriginalEditorDecorations(e,t,n),s=this._getModifiedEditorDecorations(e,t,n);return{original:{decorations:a.decorations,overviewZones:a.overviewZones,zones:o.original},modified:{decorations:s.decorations,overviewZones:s.overviewZones,zones:o.modified}}}}]),n}(_.JT),Se=function(){function e(t){(0,c.Z)(this,e),this._source=t,this._index=-1,this.current=null,this.advance()}return(0,d.Z)(e,[{key:"advance",value:function(){this._index++,this._index<this._source.length?this.current=this._source[this._index]:this.current=null}}]),e}(),xe=function(){function e(t,n,i,r,o){(0,c.Z)(this,e),this._lineChanges=t,this._originalForeignVZ=n,this._modifiedForeignVZ=i,this._originalEditor=r,this._modifiedEditor=o}return(0,d.Z)(e,[{key:"getViewZones",value:function(){for(var t=this._originalEditor.getOption(55),n=this._modifiedEditor.getOption(55),i=-1!==this._originalEditor.getOption(128).wrappingColumn,r=-1!==this._modifiedEditor.getOption(128).wrappingColumn,o=i||r,a=this._originalEditor.getModel(),s=this._originalEditor._getViewModel().coordinatesConverter,u=this._modifiedEditor._getViewModel().coordinatesConverter,l=[],c=[],d=0,h=0,f=0,p=0,g=0,v=0,m=function(e,t){return e.afterLineNumber-t.afterLineNumber},_=function(e,t){if(null===t.domNode&&e.length>0){var n=e[e.length-1];if(n.afterLineNumber===t.afterLineNumber&&null===n.domNode)return void(n.heightInLines+=t.heightInLines)}e.push(t)},y=new Se(this._modifiedForeignVZ),b=new Se(this._originalForeignVZ),w=1,C=1,k=0,S=this._lineChanges.length;k<=S;k++){var x=k<S?this._lineChanges[k]:null;null!==x?(f=x.originalStartLineNumber+(x.originalEndLineNumber>0?-1:0),p=x.modifiedStartLineNumber+(x.modifiedEndLineNumber>0?-1:0),h=x.originalEndLineNumber>0?e._getViewLineCount(this._originalEditor,x.originalStartLineNumber,x.originalEndLineNumber):0,d=x.modifiedEndLineNumber>0?e._getViewLineCount(this._modifiedEditor,x.modifiedStartLineNumber,x.modifiedEndLineNumber):0,g=Math.max(x.originalStartLineNumber,x.originalEndLineNumber),v=Math.max(x.modifiedStartLineNumber,x.modifiedEndLineNumber)):(g=f+=1e7+h,v=p+=1e7+d);var L=[],E=[];if(o){var D=void 0;D=x?x.originalEndLineNumber>0?x.originalStartLineNumber-w:x.modifiedStartLineNumber-C:a.getLineCount()-w;for(var N=0;N<D;N++){var M=w+N,T=C+N,I=s.getModelLineViewLineCount(M),O=u.getModelLineViewLineCount(T);I<O?L.push({afterLineNumber:M,heightInLines:O-I,domNode:null,marginDomNode:null}):I>O&&E.push({afterLineNumber:T,heightInLines:I-O,domNode:null,marginDomNode:null})}x&&(w=(x.originalEndLineNumber>0?x.originalEndLineNumber:x.originalStartLineNumber)+1,C=(x.modifiedEndLineNumber>0?x.modifiedEndLineNumber:x.modifiedStartLineNumber)+1)}for(;y.current&&y.current.afterLineNumber<=v;){var A=void 0;A=y.current.afterLineNumber<=p?f-p+y.current.afterLineNumber:g;var R=null;x&&x.modifiedStartLineNumber<=y.current.afterLineNumber&&y.current.afterLineNumber<=x.modifiedEndLineNumber&&(R=this._createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion()),L.push({afterLineNumber:A,heightInLines:y.current.height/n,domNode:null,marginDomNode:R}),y.advance()}for(;b.current&&b.current.afterLineNumber<=g;){var P=void 0;P=b.current.afterLineNumber<=f?p-f+b.current.afterLineNumber:v,E.push({afterLineNumber:P,heightInLines:b.current.height/t,domNode:null}),b.advance()}if(null!==x&&Oe(x)){var Z=this._produceOriginalFromDiff(x,h,d);Z&&L.push(Z)}if(null!==x&&Ae(x)){var F=this._produceModifiedFromDiff(x,h,d);F&&E.push(F)}var j=0,H=0;for(L=L.sort(m),E=E.sort(m);j<L.length&&H<E.length;){var B=L[j],z=E[H],W=B.afterLineNumber-f,V=z.afterLineNumber-p;W<V?(_(l,B),j++):V<W?(_(c,z),H++):B.shouldNotShrink?(_(l,B),j++):z.shouldNotShrink?(_(c,z),H++):B.heightInLines>=z.heightInLines?(B.heightInLines-=z.heightInLines,H++):(z.heightInLines-=B.heightInLines,j++)}for(;j<L.length;)_(l,L[j]),j++;for(;H<E.length;)_(c,E[H]),H++}return{original:e._ensureDomNodes(l),modified:e._ensureDomNodes(c)}}}],[{key:"_getViewLineCount",value:function(e,t,n){var i=e.getModel(),r=e._getViewModel();if(i&&r){var o=Pe(i,r,t,n);return o.endLineNumber-o.startLineNumber+1}return n-t+1}},{key:"_ensureDomNodes",value:function(e){return e.map((function(e){return e.domNode||(e.domNode=Re()),e}))}}]),e}();function Le(e,t,n,i,r){return{range:new Q.e(e,t,n,i),options:r}}var Ee={charDelete:ee.qx.register({className:"char-delete"}),charDeleteWholeLine:ee.qx.register({className:"char-delete",isWholeLine:!0}),charInsert:ee.qx.register({className:"char-insert"}),charInsertWholeLine:ee.qx.register({className:"char-insert",isWholeLine:!0}),lineInsert:ee.qx.register({className:"line-insert",marginClassName:"line-insert",isWholeLine:!0}),lineInsertWithSign:ee.qx.register({className:"line-insert",linesDecorationsClassName:"insert-sign "+Z.kS.asClassName(ye),marginClassName:"line-insert",isWholeLine:!0}),lineDelete:ee.qx.register({className:"line-delete",marginClassName:"line-delete",isWholeLine:!0}),lineDeleteWithSign:ee.qx.register({className:"line-delete",linesDecorationsClassName:"delete-sign "+Z.kS.asClassName(be),marginClassName:"line-delete",isWholeLine:!0}),lineDeleteMargin:ee.qx.register({marginClassName:"line-delete"})},De=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i){var o;return(0,c.Z)(this,n),(o=t.call(this,e))._disableSash=!1===i,o._sashRatio=null,o._sashPosition=null,o._startSashPosition=null,o._sash=o._register(new g.g(o._dataSource.getContainerDomNode(),(0,r.Z)(o),{orientation:0})),o._disableSash&&(o._sash.state=0),o._sash.onDidStart((function(){return o._onSashDragStart()})),o._sash.onDidChange((function(e){return o._onSashDrag(e)})),o._sash.onDidEnd((function(){return o._onSashDragEnd()})),o._sash.onDidReset((function(){return o._onSashReset()})),o}return(0,d.Z)(n,[{key:"setEnableSplitViewResizing",value:function(e){var t=!1===e;this._disableSash!==t&&(this._disableSash=t,this._sash.state=this._disableSash?0:3)}},{key:"layout",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._sashRatio,t=this._dataSource.getWidth()-(this._dataSource.getOptions().renderOverviewRuler?Ce.ENTIRE_DIFF_OVERVIEW_WIDTH:0),i=Math.floor((e||.5)*t),r=Math.floor(.5*t);return i=this._disableSash?r:i||r,t>2*n.MINIMUM_EDITOR_WIDTH?(i<n.MINIMUM_EDITOR_WIDTH&&(i=n.MINIMUM_EDITOR_WIDTH),i>t-n.MINIMUM_EDITOR_WIDTH&&(i=t-n.MINIMUM_EDITOR_WIDTH)):i=r,this._sashPosition!==i&&(this._sashPosition=i,this._sash.layout()),this._sashPosition}},{key:"_onSashDragStart",value:function(){this._startSashPosition=this._sashPosition}},{key:"_onSashDrag",value:function(e){var t=this._dataSource.getWidth()-(this._dataSource.getOptions().renderOverviewRuler?Ce.ENTIRE_DIFF_OVERVIEW_WIDTH:0),n=this.layout((this._startSashPosition+(e.currentX-e.startX))/t);this._sashRatio=n/t,this._dataSource.relayoutEditors()}},{key:"_onSashDragEnd",value:function(){this._sash.layout()}},{key:"_onSashReset",value:function(){this._sashRatio=.5,this._dataSource.relayoutEditors(),this._sash.layout()}},{key:"getVerticalSashTop",value:function(e){return 0}},{key:"getVerticalSashLeft",value:function(e){return this._sashPosition}},{key:"getVerticalSashHeight",value:function(e){return this._dataSource.getHeight()}},{key:"_getViewZones",value:function(e,t,n){var i=this._dataSource.getOriginalEditor(),r=this._dataSource.getModifiedEditor();return new Ne(e,t,n,i,r).getViewZones()}},{key:"_getOriginalEditorDecorations",value:function(e,t,n){var i,r=this._dataSource.getOriginalEditor(),o=String(this._removeColor),a={decorations:[],overviewZones:[]},s=r.getModel(),u=r._getViewModel(),c=(0,l.Z)(e);try{for(c.s();!(i=c.n()).done;){var d=i.value;if(Ae(d)){a.decorations.push({range:new Q.e(d.originalStartLineNumber,1,d.originalEndLineNumber,1073741824),options:n?Ee.lineDeleteWithSign:Ee.lineDelete}),Oe(d)&&d.charChanges||a.decorations.push(Le(d.originalStartLineNumber,1,d.originalEndLineNumber,1073741824,Ee.charDeleteWholeLine));var h=Pe(s,u,d.originalStartLineNumber,d.originalEndLineNumber);if(a.overviewZones.push(new ne.EY(h.startLineNumber,h.endLineNumber,o)),d.charChanges){var f,p=(0,l.Z)(d.charChanges);try{for(p.s();!(f=p.n()).done;){var g=f.value;if(Ae(g))if(t)for(var v=g.originalStartLineNumber;v<=g.originalEndLineNumber;v++){var m=void 0,_=void 0;m=v===g.originalStartLineNumber?g.originalStartColumn:s.getLineFirstNonWhitespaceColumn(v),_=v===g.originalEndLineNumber?g.originalEndColumn:s.getLineLastNonWhitespaceColumn(v),a.decorations.push(Le(v,m,v,_,Ee.charDelete))}else a.decorations.push(Le(g.originalStartLineNumber,g.originalStartColumn,g.originalEndLineNumber,g.originalEndColumn,Ee.charDelete))}}catch(y){p.e(y)}finally{p.f()}}}}}catch(y){c.e(y)}finally{c.f()}return a}},{key:"_getModifiedEditorDecorations",value:function(e,t,n){var i,r=this._dataSource.getModifiedEditor(),o=String(this._insertColor),a={decorations:[],overviewZones:[]},s=r.getModel(),u=r._getViewModel(),c=(0,l.Z)(e);try{for(c.s();!(i=c.n()).done;){var d=i.value;if(Oe(d)){a.decorations.push({range:new Q.e(d.modifiedStartLineNumber,1,d.modifiedEndLineNumber,1073741824),options:n?Ee.lineInsertWithSign:Ee.lineInsert}),Ae(d)&&d.charChanges||a.decorations.push(Le(d.modifiedStartLineNumber,1,d.modifiedEndLineNumber,1073741824,Ee.charInsertWholeLine));var h=Pe(s,u,d.modifiedStartLineNumber,d.modifiedEndLineNumber);if(a.overviewZones.push(new ne.EY(h.startLineNumber,h.endLineNumber,o)),d.charChanges){var f,p=(0,l.Z)(d.charChanges);try{for(p.s();!(f=p.n()).done;){var g=f.value;if(Oe(g))if(t)for(var v=g.modifiedStartLineNumber;v<=g.modifiedEndLineNumber;v++){var m=void 0,_=void 0;m=v===g.modifiedStartLineNumber?g.modifiedStartColumn:s.getLineFirstNonWhitespaceColumn(v),_=v===g.modifiedEndLineNumber?g.modifiedEndColumn:s.getLineLastNonWhitespaceColumn(v),a.decorations.push(Le(v,m,v,_,Ee.charInsert))}else a.decorations.push(Le(g.modifiedStartLineNumber,g.modifiedStartColumn,g.modifiedEndLineNumber,g.modifiedEndColumn,Ee.charInsert))}}catch(y){p.e(y)}finally{p.f()}}}}}catch(y){c.e(y)}finally{c.f()}return a}}]),n}(ke);De.MINIMUM_EDITOR_WIDTH=100;var Ne=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i,r,o,a){return(0,c.Z)(this,n),t.call(this,e,i,r,o,a)}return(0,d.Z)(n,[{key:"_createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion",value:function(){return null}},{key:"_produceOriginalFromDiff",value:function(e,t,n){return n>t?{afterLineNumber:Math.max(e.originalStartLineNumber,e.originalEndLineNumber),heightInLines:n-t,domNode:null}:null}},{key:"_produceModifiedFromDiff",value:function(e,t,n){return t>n?{afterLineNumber:Math.max(e.modifiedStartLineNumber,e.modifiedEndLineNumber),heightInLines:t-n,domNode:null}:null}}]),n}(xe),Me=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i){var r;return(0,c.Z)(this,n),(r=t.call(this,e))._decorationsLeft=e.getOriginalEditor().getLayoutInfo().decorationsLeft,r._register(e.getOriginalEditor().onDidLayoutChange((function(t){r._decorationsLeft!==t.decorationsLeft&&(r._decorationsLeft=t.decorationsLeft,e.relayoutEditors())}))),r}return(0,d.Z)(n,[{key:"setEnableSplitViewResizing",value:function(e){}},{key:"_getViewZones",value:function(e,t,n,i){var r=this._dataSource.getOriginalEditor(),o=this._dataSource.getModifiedEditor();return new Te(e,t,n,r,o,i).getViewZones()}},{key:"_getOriginalEditorDecorations",value:function(e,t,n){var i,r=String(this._removeColor),o={decorations:[],overviewZones:[]},a=this._dataSource.getOriginalEditor(),s=a.getModel(),u=a._getViewModel(),c=(0,l.Z)(e);try{for(c.s();!(i=c.n()).done;){var d=i.value;if(Ae(d)){o.decorations.push({range:new Q.e(d.originalStartLineNumber,1,d.originalEndLineNumber,1073741824),options:Ee.lineDeleteMargin});var h=Pe(s,u,d.originalStartLineNumber,d.originalEndLineNumber);o.overviewZones.push(new ne.EY(h.startLineNumber,h.endLineNumber,r))}}}catch(f){c.e(f)}finally{c.f()}return o}},{key:"_getModifiedEditorDecorations",value:function(e,t,n){var i,r=this._dataSource.getModifiedEditor(),o=String(this._insertColor),a={decorations:[],overviewZones:[]},s=r.getModel(),u=r._getViewModel(),c=(0,l.Z)(e);try{for(c.s();!(i=c.n()).done;){var d=i.value;if(Oe(d)){a.decorations.push({range:new Q.e(d.modifiedStartLineNumber,1,d.modifiedEndLineNumber,1073741824),options:n?Ee.lineInsertWithSign:Ee.lineInsert});var h=Pe(s,u,d.modifiedStartLineNumber,d.modifiedEndLineNumber);if(a.overviewZones.push(new ne.EY(h.startLineNumber,h.endLineNumber,o)),d.charChanges){var f,p=(0,l.Z)(d.charChanges);try{for(p.s();!(f=p.n()).done;){var g=f.value;if(Oe(g))if(t)for(var v=g.modifiedStartLineNumber;v<=g.modifiedEndLineNumber;v++){var m=void 0,_=void 0;m=v===g.modifiedStartLineNumber?g.modifiedStartColumn:s.getLineFirstNonWhitespaceColumn(v),_=v===g.modifiedEndLineNumber?g.modifiedEndColumn:s.getLineLastNonWhitespaceColumn(v),a.decorations.push(Le(v,m,v,_,Ee.charInsert))}else a.decorations.push(Le(g.modifiedStartLineNumber,g.modifiedStartColumn,g.modifiedEndLineNumber,g.modifiedEndColumn,Ee.charInsert))}}catch(y){p.e(y)}finally{p.f()}}else a.decorations.push(Le(d.modifiedStartLineNumber,1,d.modifiedEndLineNumber,1073741824,Ee.charInsertWholeLine))}}}catch(y){c.e(y)}finally{c.f()}return a}},{key:"layout",value:function(){return Math.max(5,this._decorationsLeft)}}]),n}(ke),Te=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i,r,o,a,s){var u;return(0,c.Z)(this,n),(u=t.call(this,e,i,r,o,a))._originalModel=o.getModel(),u._renderIndicators=s,u._pendingLineChange=[],u._pendingViewZones=[],u._lineBreaksComputer=u._modifiedEditor._getViewModel().createLineBreaksComputer(),u}return(0,d.Z)(n,[{key:"getViewZones",value:function(){var e=(0,o.Z)((0,a.Z)(n.prototype),"getViewZones",this).call(this);return this._finalize(e),e}},{key:"_createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion",value:function(){var e=document.createElement("div");return e.className="inline-added-margin-view-zone",e}},{key:"_produceOriginalFromDiff",value:function(e,t,n){var i=document.createElement("div");return i.className="inline-added-margin-view-zone",{afterLineNumber:Math.max(e.originalStartLineNumber,e.originalEndLineNumber),heightInLines:n,domNode:document.createElement("div"),marginDomNode:i}}},{key:"_produceModifiedFromDiff",value:function(e,t,n){var i=document.createElement("div");i.className="view-lines line-delete ".concat(pe.S);var r=document.createElement("div");r.className="inline-deleted-margin-view-zone";for(var o={shouldNotShrink:!0,afterLineNumber:0===e.modifiedEndLineNumber?e.modifiedStartLineNumber:e.modifiedStartLineNumber-1,heightInLines:t,minWidthInPx:0,domNode:i,marginDomNode:r,diff:{originalStartLineNumber:e.originalStartLineNumber,originalEndLineNumber:e.originalEndLineNumber,modifiedStartLineNumber:e.modifiedStartLineNumber,modifiedEndLineNumber:e.modifiedEndLineNumber,originalModel:this._originalModel,viewLineCounts:null}},a=e.originalStartLineNumber;a<=e.originalEndLineNumber;a++)this._lineBreaksComputer.addRequest(this._originalModel.getLineContent(a),null);return this._pendingLineChange.push(e),this._pendingViewZones.push(o),o}},{key:"_finalize",value:function(e){for(var t=this._modifiedEditor.getOptions(),n=this._modifiedEditor.getModel().getOptions().tabSize,i=t.get(40),r=t.get(27),o=i.typicalHalfwidthCharacterWidth,a=t.get(90),s=this._originalModel.mightContainNonBasicASCII(),u=this._originalModel.mightContainRTL(),c=t.get(55),d=t.get(127).decorationsWidth,h=t.get(102),f=t.get(85),p=t.get(79),g=t.get(41),v=this._lineBreaksComputer.finalize(),m=0,_=0;_<this._pendingLineChange.length;_++){var b=this._pendingLineChange[_],w=this._pendingViewZones[_],C=w.domNode;y.V.applyFontInfoSlow(C,i);var k=w.marginDomNode;y.V.applyFontInfoSlow(k,i);var S=[];if(b.charChanges){var x,L=(0,l.Z)(b.charChanges);try{for(L.s();!(x=L.n()).done;){var E=x.value;Ae(E)&&S.push(new A.$t(new Q.e(E.originalStartLineNumber,E.originalStartColumn,E.originalEndLineNumber,E.originalEndColumn),"char-delete",0))}}catch($){L.e($)}finally{L.f()}}for(var D=S.length>0,N=(0,X.l$)(1e4),M=0,T=0,I=null,O=b.originalStartLineNumber;O<=b.originalEndLineNumber;O++){var R=O-b.originalStartLineNumber,P=this._originalModel.getLineTokens(O),Z=P.getLineContent(),F=v[m++],j=ie.Kp.filter(S,O,1,Z.length+1);if(F){var H,B=0,z=(0,l.Z)(F.breakOffsets);try{for(z.s();!(H=z.n()).done;){var W=H.value,V=P.sliceAndInflate(B,W,0),Y=Z.substring(B,W);M=Math.max(M,this._renderOriginalLine(T++,Y,V,ie.Kp.extractWrapped(j,B,W),D,s,u,i,r,c,d,h,f,p,g,n,N,k)),B=W}}catch($){z.e($)}finally{z.f()}for(I||(I=[]);I.length<R;)I[I.length]=1;I[R]=F.breakOffsets.length,w.heightInLines+=F.breakOffsets.length-1;var U=document.createElement("div");U.className="line-delete",e.original.push({afterLineNumber:O,afterColumn:0,heightInLines:F.breakOffsets.length-1,domNode:Re(),marginDomNode:U})}else M=Math.max(M,this._renderOriginalLine(T++,Z,P,j,D,s,u,i,r,c,d,h,f,p,g,n,N,k))}M+=a;var K=N.build(),q=we?we.createHTML(K):K;if(C.innerHTML=q,w.minWidthInPx=M*o,I)for(var G=b.originalEndLineNumber-b.originalStartLineNumber;I.length<=G;)I[I.length]=1;w.diff.viewLineCounts=I}e.original.sort((function(e,t){return e.afterLineNumber-t.afterLineNumber}))}},{key:"_renderOriginalLine",value:function(e,t,n,i,r,o,a,s,u,l,c,d,h,f,p,g,v,m){v.appendASCIIString('<div class="view-line'),r||v.appendASCIIString(" char-delete"),v.appendASCIIString('" style="top:'),v.appendASCIIString(String(e*l)),v.appendASCIIString('px;width:1000000px;">');var _=A.wA.isBasicASCII(t,o),y=A.wA.containsRTL(t,_,a),b=(0,O.d1)(new O.IJ(s.isMonospace&&!u,s.canUseHalfwidthRightwardsArrow,t,!1,_,y,0,n,i,g,0,s.spaceWidth,s.middotWidth,s.wsmiddotWidth,d,h,f,p!==N.n0.OFF,null),v);if(v.appendASCIIString("</div>"),this._renderIndicators){var w=document.createElement("div");w.className="delete-sign ".concat(Z.kS.asClassName(be)),w.setAttribute("style","position:absolute;top:".concat(e*l,"px;width:").concat(c,"px;height:").concat(l,"px;right:0;")),m.appendChild(w)}var C=b.characterMapping.getAbsoluteOffsets();return C.length>0?C[C.length-1]:0}}]),n}(xe);function Ie(e,t){return(0,N.NY)(e,t,["off","on","inherit"])}function Oe(e){return e.modifiedEndLineNumber>0}function Ae(e){return e.originalEndLineNumber>0}function Re(){var e=document.createElement("div");return e.className="diagonal-fill",e}function Pe(e,t,n,i){var r=e.getLineCount();return n=Math.min(r,Math.max(1,n)),i=Math.min(r,Math.max(1,i)),t.coordinatesConverter.convertModelRangeToViewRange(new Q.e(n,e.getLineMinColumn(n),i,e.getLineMaxColumn(i)))}(0,Z.Ic)((function(e,t){var n=e.getColor(P.yp);n&&(t.addRule(".monaco-editor .line-insert, .monaco-editor .char-insert { background-color: ".concat(n,"; }")),t.addRule(".monaco-diff-editor .line-insert, .monaco-diff-editor .char-insert { background-color: ".concat(n,"; }")),t.addRule(".monaco-editor .inline-added-margin-view-zone { background-color: ".concat(n,"; }")));var i=e.getColor(P.P4);i&&(t.addRule(".monaco-editor .line-delete, .monaco-editor .char-delete { background-color: ".concat(i,"; }")),t.addRule(".monaco-diff-editor .line-delete, .monaco-diff-editor .char-delete { background-color: ".concat(i,"; }")),t.addRule(".monaco-editor .inline-deleted-margin-view-zone { background-color: ".concat(i,"; }")));var r=e.getColor(P.XL);r&&t.addRule(".monaco-editor .line-insert, .monaco-editor .char-insert { border: 1px ".concat("hc"===e.type?"dashed":"solid"," ").concat(r,"; }"));var o=e.getColor(P.mH);o&&t.addRule(".monaco-editor .line-delete, .monaco-editor .char-delete { border: 1px ".concat("hc"===e.type?"dashed":"solid"," ").concat(o,"; }"));var a=e.getColor(P._w);a&&t.addRule(".monaco-diff-editor.side-by-side .editor.modified { box-shadow: -6px 0 5px -5px ".concat(a,"; }"));var s=e.getColor(P.LL);s&&t.addRule(".monaco-diff-editor.side-by-side .editor.modified { border-left: 1px solid ".concat(s,"; }"));var u=e.getColor(P.et);u&&t.addRule("\n\t\t\t.monaco-diff-editor .diffViewport {\n\t\t\t\tbackground: ".concat(u,";\n\t\t\t}\n\t\t"));var l=e.getColor(P.AB);l&&t.addRule("\n\t\t\t.monaco-diff-editor .diffViewport:hover {\n\t\t\t\tbackground: ".concat(l,";\n\t\t\t}\n\t\t"));var c=e.getColor(P.yn);c&&t.addRule("\n\t\t\t.monaco-diff-editor .diffViewport:active {\n\t\t\t\tbackground: ".concat(c,";\n\t\t\t}\n\t\t"));var d=e.getColor(P.L_);t.addRule("\n\t.monaco-editor .diagonal-fill {\n\t\tbackground-image: linear-gradient(\n\t\t\t-45deg,\n\t\t\t".concat(d," 12.5%,\n\t\t\t#0000 12.5%, #0000 50%,\n\t\t\t").concat(d," 50%, ").concat(d," 62.5%,\n\t\t\t#0000 62.5%, #0000 100%\n\t\t);\n\t\tbackground-size: 8px 8px;\n\t}\n\t"))}))},59180:function(e,t,n){"use strict";n.d(t,{F:function(){return g}});var i=n(15671),r=n(43144),o=n(11752),a=n(61120),s=n(60136),u=n(43668),l=n(96147),c=n(11732),d=n(81626),h=n(10405),f=n(67033),p={followsCaret:!0,ignoreCharChanges:!0,alwaysRevealFirst:!0},g=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e){var r,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,i.Z)(this,n),(r=t.call(this))._onDidUpdate=r._register(new c.Q5),r._editor=e,r._options=h.jB(o,p,!1),r.disposed=!1,r.nextIdx=-1,r.ranges=[],r.ignoreSelectionChange=!1,r.revealFirst=Boolean(r._options.alwaysRevealFirst),r._register(r._editor.onDidDispose((function(){return r.dispose()}))),r._register(r._editor.onDidUpdateDiff((function(){return r._onDiffUpdated()}))),r._options.followsCaret&&r._register(r._editor.getModifiedEditor().onDidChangeCursorPosition((function(e){r.ignoreSelectionChange||(r.nextIdx=-1)}))),r._options.alwaysRevealFirst&&r._register(r._editor.getModifiedEditor().onDidChangeModel((function(e){r.revealFirst=!0}))),r._init(),r}return(0,r.Z)(n,[{key:"_init",value:function(){this._editor.getLineChanges()}},{key:"_onDiffUpdated",value:function(){this._init(),this._compute(this._editor.getLineChanges()),this.revealFirst&&null!==this._editor.getLineChanges()&&(this.revealFirst=!1,this.nextIdx=-1,this.next(1))}},{key:"_compute",value:function(e){var t=this;this.ranges=[],e&&e.forEach((function(e){!t._options.ignoreCharChanges&&e.charChanges?e.charChanges.forEach((function(e){t.ranges.push({rhs:!0,range:new f.e(e.modifiedStartLineNumber,e.modifiedStartColumn,e.modifiedEndLineNumber,e.modifiedEndColumn)})})):t.ranges.push({rhs:!0,range:new f.e(e.modifiedStartLineNumber,1,e.modifiedStartLineNumber,1)})})),this.ranges.sort((function(e,t){return e.range.getStartPosition().isBeforeOrEqual(t.range.getStartPosition())?-1:t.range.getStartPosition().isBeforeOrEqual(e.range.getStartPosition())?1:0})),this._onDidUpdate.fire(this)}},{key:"_initIdx",value:function(e){var t=!1,n=this._editor.getPosition();if(n){for(var i=0,r=this.ranges.length;i<r&&!t;i++){var o=this.ranges[i].range;n.isBeforeOrEqual(o.getStartPosition())&&(this.nextIdx=i+(e?0:-1),t=!0)}t||(this.nextIdx=e?0:this.ranges.length-1),this.nextIdx<0&&(this.nextIdx=this.ranges.length-1)}else this.nextIdx=0}},{key:"_move",value:function(e,t){if(l.ok(!this.disposed,"Illegal State - diff navigator has been disposed"),this.canNavigate()){-1===this.nextIdx?this._initIdx(e):e?(this.nextIdx+=1,this.nextIdx>=this.ranges.length&&(this.nextIdx=0)):(this.nextIdx-=1,this.nextIdx<0&&(this.nextIdx=this.ranges.length-1));var n=this.ranges[this.nextIdx];this.ignoreSelectionChange=!0;try{var i=n.range.getStartPosition();this._editor.setPosition(i),this._editor.revealPositionInCenter(i,t)}finally{this.ignoreSelectionChange=!1}}}},{key:"canNavigate",value:function(){return this.ranges&&this.ranges.length>0}},{key:"next",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this._move(!0,e)}},{key:"previous",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this._move(!1,e)}},{key:"dispose",value:function(){(0,o.Z)((0,a.Z)(n.prototype),"dispose",this).call(this),this.ranges=[],this.disposed=!0}}]),n}(d.JT)},97033:function(e,t,n){"use strict";n.d(t,{OY:function(){return s},Sj:function(){return u},T4:function(){return a},Uo:function(){return l},hP:function(){return c}});var i=n(15671),r=n(43144),o=n(74964),a=function(){function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,i.Z)(this,e),this._range=t,this._text=n,this.insertsAutoWhitespace=r}return(0,r.Z)(e,[{key:"getEditOperations",value:function(e,t){t.addTrackedEditOperation(this._range,this._text)}},{key:"computeCursorState",value:function(e,t){var n=t.getInverseEditOperations()[0].range;return new o.Y(n.endLineNumber,n.endColumn,n.endLineNumber,n.endColumn)}}]),e}(),s=function(){function e(t,n){(0,i.Z)(this,e),this._range=t,this._text=n}return(0,r.Z)(e,[{key:"getEditOperations",value:function(e,t){t.addTrackedEditOperation(this._range,this._text)}},{key:"computeCursorState",value:function(e,t){var n=t.getInverseEditOperations()[0].range;return new o.Y(n.startLineNumber,n.startColumn,n.endLineNumber,n.endColumn)}}]),e}(),u=function(){function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,i.Z)(this,e),this._range=t,this._text=n,this.insertsAutoWhitespace=r}return(0,r.Z)(e,[{key:"getEditOperations",value:function(e,t){t.addTrackedEditOperation(this._range,this._text)}},{key:"computeCursorState",value:function(e,t){var n=t.getInverseEditOperations()[0].range;return new o.Y(n.startLineNumber,n.startColumn,n.startLineNumber,n.startColumn)}}]),e}(),l=function(){function e(t,n,r,o){var a=arguments.length>4&&void 0!==arguments[4]&&arguments[4];(0,i.Z)(this,e),this._range=t,this._text=n,this._columnDeltaOffset=o,this._lineNumberDeltaOffset=r,this.insertsAutoWhitespace=a}return(0,r.Z)(e,[{key:"getEditOperations",value:function(e,t){t.addTrackedEditOperation(this._range,this._text)}},{key:"computeCursorState",value:function(e,t){var n=t.getInverseEditOperations()[0].range;return new o.Y(n.endLineNumber+this._lineNumberDeltaOffset,n.endColumn+this._columnDeltaOffset,n.endLineNumber+this._lineNumberDeltaOffset,n.endColumn+this._columnDeltaOffset)}}]),e}(),c=function(){function e(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];(0,i.Z)(this,e),this._range=t,this._text=n,this._initialSelection=r,this._forceMoveMarkers=o,this._selectionId=null}return(0,r.Z)(e,[{key:"getEditOperations",value:function(e,t){t.addTrackedEditOperation(this._range,this._text,this._forceMoveMarkers),this._selectionId=t.trackSelection(this._initialSelection)}},{key:"computeCursorState",value:function(e,t){return t.getTrackedSelection(this._selectionId)}}]),e}()},83:function(e,t,n){"use strict";n.d(t,{U:function(){return h}});var i=n(15671),r=n(43144),o=n(51747),a=n(16274),s=n(67033),u=n(74964),l=n(65262),c=Object.create(null);function d(e,t){if(t<=0)return"";c[e]||(c[e]=["",e]);for(var n=c[e],i=n.length;i<=t;i++)n[i]=n[i-1]+e;return n[t]}var h=function(){function e(t,n){(0,i.Z)(this,e),this._opts=n,this._selection=t,this._selectionId=null,this._useLastEditRangeForCursorEndPosition=!1,this._selectionStartColumnStaysPut=!1}return(0,r.Z)(e,[{key:"_addEditOperation",value:function(e,t,n){this._useLastEditRangeForCursorEndPosition?e.addTrackedEditOperation(t,n):e.addEditOperation(t,n)}},{key:"getEditOperations",value:function(t,n){var i=this._selection.startLineNumber,r=this._selection.endLineNumber;1===this._selection.endColumn&&i!==r&&(r-=1);var u=this._opts,c=u.tabSize,h=u.indentSize,f=u.insertSpaces,p=i===r;if(this._opts.useTabStops){this._selection.isEmpty()&&/^\s*$/.test(t.getLineContent(i))&&(this._useLastEditRangeForCursorEndPosition=!0);for(var g=0,v=0,m=i;m<=r;m++,g=v){v=0;var _=t.getLineContent(m),y=o.LC(_);if((!this._opts.isUnshift||0!==_.length&&0!==y)&&(p||this._opts.isUnshift||0!==_.length)){if(-1===y&&(y=_.length),m>1)if(a.io.visibleColumnFromColumn(_,y+1,c)%h!==0&&t.isCheapToTokenize(m-1)){var b=l.zu.getEnterAction(this._opts.autoIndent,t,new s.e(m-1,t.getLineMaxColumn(m-1),m-1,t.getLineMaxColumn(m-1)));if(b){if(v=g,b.appendText)for(var w=0,C=b.appendText.length;w<C&&v<h&&32===b.appendText.charCodeAt(w);w++)v++;b.removeText&&(v=Math.max(0,v-b.removeText));for(var k=0;k<v&&(0!==y&&32===_.charCodeAt(y-1));k++)y--}}if(!this._opts.isUnshift||0!==y){var S=void 0;S=this._opts.isUnshift?e.unshiftIndent(_,y+1,c,h,f):e.shiftIndent(_,y+1,c,h,f),this._addEditOperation(n,new s.e(m,1,m,y+1),S),m!==i||this._selection.isEmpty()||(this._selectionStartColumnStaysPut=this._selection.startColumn<=y+1)}}}}else{!this._opts.isUnshift&&this._selection.isEmpty()&&0===t.getLineLength(i)&&(this._useLastEditRangeForCursorEndPosition=!0);for(var x=f?d(" ",h):"\t",L=i;L<=r;L++){var E=t.getLineContent(L),D=o.LC(E);if((!this._opts.isUnshift||0!==E.length&&0!==D)&&((p||this._opts.isUnshift||0!==E.length)&&(-1===D&&(D=E.length),!this._opts.isUnshift||0!==D)))if(this._opts.isUnshift){D=Math.min(D,h);for(var N=0;N<D;N++){if(9===E.charCodeAt(N)){D=N+1;break}}this._addEditOperation(n,new s.e(L,1,L,D+1),"")}else this._addEditOperation(n,new s.e(L,1,L,1),x),L!==i||this._selection.isEmpty()||(this._selectionStartColumnStaysPut=1===this._selection.startColumn)}}this._selectionId=n.trackSelection(this._selection)}},{key:"computeCursorState",value:function(e,t){if(this._useLastEditRangeForCursorEndPosition){var n=t.getInverseEditOperations()[0];return new u.Y(n.range.endLineNumber,n.range.endColumn,n.range.endLineNumber,n.range.endColumn)}var i=t.getTrackedSelection(this._selectionId);if(this._selectionStartColumnStaysPut){var r=this._selection.startColumn;return i.startColumn<=r?i:0===i.getDirection()?new u.Y(i.startLineNumber,r,i.endLineNumber,i.endColumn):new u.Y(i.endLineNumber,i.endColumn,i.startLineNumber,r)}return i}}],[{key:"unshiftIndent",value:function(e,t,n,i,r){var o=a.io.visibleColumnFromColumn(e,t,n);if(r){var s=d(" ",i);return d(s,a.io.prevIndentTabStop(o,i)/i)}return d("\t",a.io.prevRenderTabStop(o,n)/n)}},{key:"shiftIndent",value:function(e,t,n,i,r){var o=a.io.visibleColumnFromColumn(e,t,n);if(r){var s=d(" ",i);return d(s,a.io.nextIndentTabStop(o,i)/i)}return d("\t",a.io.nextRenderTabStop(o,n)/n)}}]),e}()},32995:function(e,t,n){"use strict";n.d(t,{Pe:function(){return F},ei:function(){return Z},fv:function(){return x},nG:function(){return y}});var i=n(60136),r=n(43668),o=n(37762),a=n(15671),s=n(43144),u=n(56345),l=n(11732),c=n(81626),d=n(10405),h=n(49396),f=n(76556),p=n(51164),g=n(28702),v=n(72885),m=n(38774),_=n(15723),y=new(function(){function e(){(0,a.Z)(this,e),this._tabFocus=!1,this._onDidChangeTabFocus=new l.Q5,this.onDidChangeTabFocus=this._onDidChangeTabFocus.event}return(0,s.Z)(e,[{key:"getTabFocusMode",value:function(){return this._tabFocus}},{key:"setTabFocusMode",value:function(e){this._tabFocus!==e&&(this._tabFocus=e,this._onDidChangeTabFocus.fire(this._tabFocus))}}]),e}()),b=Object.hasOwnProperty,w=function(){function e(){(0,a.Z)(this,e),this._values=[]}return(0,s.Z)(e,[{key:"_read",value:function(e){return this._values[e]}},{key:"get",value:function(e){return this._values[e]}},{key:"_write",value:function(e,t){this._values[e]=t}}]),e}(),C=function(){function e(){(0,a.Z)(this,e),this._values=[]}return(0,s.Z)(e,[{key:"_read",value:function(e){return this._values[e]}},{key:"_write",value:function(e,t){this._values[e]=t}}]),e}(),k=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,null,[{key:"readOptions",value:function(e){var t,n=e,i=new C,r=(0,o.Z)(f.Bc);try{for(r.s();!(t=r.n()).done;){var a=t.value,s="_never_"===a.name?void 0:n[a.name];i._write(a.id,s)}}catch(u){r.e(u)}finally{r.f()}return i}},{key:"validateOptions",value:function(e){var t,n=new f.hu,i=(0,o.Z)(f.Bc);try{for(i.s();!(t=i.n()).done;){var r=t.value;n._write(r.id,r.validate(e._read(r.id)))}}catch(a){i.e(a)}finally{i.f()}return n}},{key:"computeOptions",value:function(e,t){var n,i=new w,r=(0,o.Z)(f.Bc);try{for(r.s();!(n=r.n()).done;){var a=n.value;i._write(a.id,a.compute(t,i,e._read(a.id)))}}catch(s){r.e(s)}finally{r.f()}return i}},{key:"_deepEquals",value:function(t,n){if("object"!==typeof t||"object"!==typeof n)return t===n;if(Array.isArray(t)||Array.isArray(n))return!(!Array.isArray(t)||!Array.isArray(n))&&h.fS(t,n);for(var i in t)if(!e._deepEquals(t[i],n[i]))return!1;return!0}},{key:"checkEquals",value:function(t,n){var i,r=[],a=!1,s=(0,o.Z)(f.Bc);try{for(s.s();!(i=s.n()).done;){var u=i.value,l=!e._deepEquals(t._read(u.id),n._read(u.id));r[u.id]=l,l&&(a=!0)}}catch(c){s.e(c)}finally{s.f()}return a?new f.Bb(r):null}}]),e}();function S(e){var t=d.I8(e);return function(e){var t=e.wordWrap;!0===t?e.wordWrap="on":!1===t&&(e.wordWrap="off");var n=e.lineNumbers;!0===n?e.lineNumbers="on":!1===n&&(e.lineNumbers="off"),!1===e.autoClosingBrackets&&(e.autoClosingBrackets="never",e.autoClosingQuotes="never",e.autoSurround="never"),"visible"===e.cursorBlinking&&(e.cursorBlinking="solid");var i=e.renderWhitespace;!0===i?e.renderWhitespace="boundary":!1===i&&(e.renderWhitespace="none");var r=e.renderLineHighlight;!0===r?e.renderLineHighlight="line":!1===r&&(e.renderLineHighlight="none");var o=e.acceptSuggestionOnEnter;!0===o?e.acceptSuggestionOnEnter="on":!1===o&&(e.acceptSuggestionOnEnter="off");var a=e.tabCompletion;!1===a?e.tabCompletion="off":!0===a&&(e.tabCompletion="onlySnippets");var s=e.suggest;if(s&&"object"===typeof s.filteredTypes&&s.filteredTypes){var u={method:"showMethods",function:"showFunctions",constructor:"showConstructors",field:"showFields",variable:"showVariables",class:"showClasses",struct:"showStructs",interface:"showInterfaces",module:"showModules",property:"showProperties",event:"showEvents",operator:"showOperators",unit:"showUnits",value:"showValues",constant:"showConstants",enum:"showEnums",enumMember:"showEnumMembers",keyword:"showKeywords",text:"showWords",color:"showColors",file:"showFiles",reference:"showReferences",folder:"showFolders",typeParameter:"showTypeParameters",snippet:"showSnippets"};(0,_.E)(u,(function(e){var t=s.filteredTypes[e.key];!1===t&&(s[e.value]=t)}))}var l=e.hover;!0===l?e.hover={enabled:!0}:!1===l&&(e.hover={enabled:!1});var c=e.parameterHints;!0===c?e.parameterHints={enabled:!0}:!1===c&&(e.parameterHints={enabled:!1});var d=e.autoIndent;!0===d?e.autoIndent="full":!1===d&&(e.autoIndent="advanced");var h=e.matchBrackets;!0===h?e.matchBrackets="always":!1===h&&(e.matchBrackets="never")}(t),t}var x=function(e){(0,i.Z)(n,e);var t=(0,r.Z)(n);function n(e,i){var r;return(0,a.Z)(this,n),(r=t.call(this))._onDidChange=r._register(new l.Q5),r.onDidChange=r._onDidChange.event,r._onDidChangeFast=r._register(new l.Q5),r.onDidChangeFast=r._onDidChangeFast.event,r.isSimpleWidget=e,r._isDominatedByLongLines=!1,r._computeOptionsMemory=new f.LJ,r._viewLineCount=1,r._lineNumbersDigitCount=1,r._rawOptions=S(i),r._readOptions=k.readOptions(r._rawOptions),r._validatedOptions=k.validateOptions(r._readOptions),r._register(p.C.onDidChangeZoomLevel((function(e){return r._recomputeOptions()}))),r._register(y.onDidChangeTabFocus((function(e){return r._recomputeOptions()}))),r}return(0,s.Z)(n,[{key:"observeReferenceElement",value:function(e){}},{key:"updatePixelRatio",value:function(){}},{key:"_recomputeOptions",value:function(){var e=this.options,t=this._computeInternalOptions();if(e){var n=k.checkEquals(e,t);if(null===n)return;this.options=t,this._onDidChangeFast.fire(n),this._onDidChange.fire(n)}else this.options=t}},{key:"getRawOptions",value:function(){return this._rawOptions}},{key:"_computeInternalOptions",value:function(){var e=this._getEnvConfiguration(),t=g.E4.createFromValidatedSettings(this._validatedOptions,e.zoomLevel,e.pixelRatio,this.isSimpleWidget),n={memory:this._computeOptionsMemory,outerWidth:e.outerWidth,outerHeight:e.outerHeight,fontInfo:this.readConfiguration(t),extraEditorClassName:e.extraEditorClassName,isDominatedByLongLines:this._isDominatedByLongLines,viewLineCount:this._viewLineCount,lineNumbersDigitCount:this._lineNumbersDigitCount,emptySelectionClipboard:e.emptySelectionClipboard,pixelRatio:e.pixelRatio,tabFocusMode:y.getTabFocusMode(),accessibilitySupport:e.accessibilitySupport};return k.computeOptions(this._validatedOptions,n)}},{key:"updateOptions",value:function(e){if("undefined"!==typeof e){var t=S(e);n._subsetEquals(this._rawOptions,t)||(this._rawOptions=d.jB(this._rawOptions,t||{}),this._readOptions=k.readOptions(this._rawOptions),this._validatedOptions=k.validateOptions(this._readOptions),this._recomputeOptions())}}},{key:"setIsDominatedByLongLines",value:function(e){this._isDominatedByLongLines=e,this._recomputeOptions()}},{key:"setMaxLineNumber",value:function(e){var t=n._digitCount(e);this._lineNumbersDigitCount!==t&&(this._lineNumbersDigitCount=t,this._recomputeOptions())}},{key:"setViewLineCount",value:function(e){this._viewLineCount!==e&&(this._viewLineCount=e,this._recomputeOptions())}}],[{key:"_subsetEquals",value:function(e,t){for(var n in t)if(b.call(t,n)){var i=t[n],r=e[n];if(r===i)continue;if(Array.isArray(r)&&Array.isArray(i)){if(!h.fS(r,i))return!1;continue}if(r&&"object"===typeof r&&i&&"object"===typeof i){if(!this._subsetEquals(r,i))return!1;continue}return!1}return!0}},{key:"_digitCount",value:function(e){for(var t=0;e;)e=Math.floor(e/10),t++;return t||1}}]),n}(c.JT),L=Object.freeze({id:"editor",order:5,type:"object",title:u.N("editorConfigurationTitle","Editor"),scope:5}),E=m.B.as(v.IP.Configuration),D=Object.assign(Object.assign({},L),{properties:{"editor.tabSize":{type:"number",default:f.DB.tabSize,minimum:1,markdownDescription:u.N("tabSize","The number of spaces a tab is equal to. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.")},"editor.insertSpaces":{type:"boolean",default:f.DB.insertSpaces,markdownDescription:u.N("insertSpaces","Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.")},"editor.detectIndentation":{type:"boolean",default:f.DB.detectIndentation,markdownDescription:u.N("detectIndentation","Controls whether `#editor.tabSize#` and `#editor.insertSpaces#` will be automatically detected when a file is opened based on the file contents.")},"editor.trimAutoWhitespace":{type:"boolean",default:f.DB.trimAutoWhitespace,description:u.N("trimAutoWhitespace","Remove trailing auto inserted whitespace.")},"editor.largeFileOptimizations":{type:"boolean",default:f.DB.largeFileOptimizations,description:u.N("largeFileOptimizations","Special handling for large files to disable certain memory intensive features.")},"editor.wordBasedSuggestions":{type:"boolean",default:!0,description:u.N("wordBasedSuggestions","Controls whether completions should be computed based on words in the document.")},"editor.wordBasedSuggestionsMode":{enum:["currentDocument","matchingDocuments","allDocuments"],default:"matchingDocuments",enumDescriptions:[u.N("wordBasedSuggestionsMode.currentDocument","Only suggest words from the active document."),u.N("wordBasedSuggestionsMode.matchingDocuments","Suggest words from all open documents of the same language."),u.N("wordBasedSuggestionsMode.allDocuments","Suggest words from all open documents.")],description:u.N("wordBasedSuggestionsMode","Controls from which documents word based completions are computed.")},"editor.semanticHighlighting.enabled":{enum:[!0,!1,"configuredByTheme"],enumDescriptions:[u.N("semanticHighlighting.true","Semantic highlighting enabled for all color themes."),u.N("semanticHighlighting.false","Semantic highlighting disabled for all color themes."),u.N("semanticHighlighting.configuredByTheme","Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.")],default:"configuredByTheme",description:u.N("semanticHighlighting.enabled","Controls whether the semanticHighlighting is shown for the languages that support it.")},"editor.stablePeek":{type:"boolean",default:!1,markdownDescription:u.N("stablePeek","Keep peek editors open even when double clicking their content or when hitting `Escape`.")},"editor.maxTokenizationLineLength":{type:"integer",default:2e4,description:u.N("maxTokenizationLineLength","Lines above this length will not be tokenized for performance reasons")},"diffEditor.maxComputationTime":{type:"number",default:5e3,description:u.N("maxComputationTime","Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.")},"diffEditor.renderSideBySide":{type:"boolean",default:!0,description:u.N("sideBySide","Controls whether the diff editor shows the diff side by side or inline.")},"diffEditor.ignoreTrimWhitespace":{type:"boolean",default:!0,description:u.N("ignoreTrimWhitespace","When enabled, the diff editor ignores changes in leading or trailing whitespace.")},"diffEditor.renderIndicators":{type:"boolean",default:!0,description:u.N("renderIndicators","Controls whether the diff editor shows +/- indicators for added/removed changes.")},"diffEditor.codeLens":{type:"boolean",default:!1,description:u.N("codeLens","Controls whether the editor shows CodeLens.")},"diffEditor.wordWrap":{type:"string",enum:["off","on","inherit"],default:"inherit",markdownEnumDescriptions:[u.N("wordWrap.off","Lines will never wrap."),u.N("wordWrap.on","Lines will wrap at the viewport width."),u.N("wordWrap.inherit","Lines will wrap according to the `#editor.wordWrap#` setting.")]}}});var N,M,T=(0,o.Z)(f.Bc);try{for(T.s();!(N=T.n()).done;){var I=N.value,O=I.schema;if("undefined"!==typeof O)if("undefined"!==typeof(M=O).type||"undefined"!==typeof M.anyOf)D.properties["editor.".concat(I.name)]=O;else for(var A in O)b.call(O,A)&&(D.properties[A]=O[A])}}catch(j){T.e(j)}finally{T.f()}var R=null;function P(){return null===R&&(R=Object.create(null),Object.keys(D.properties).forEach((function(e){R[e]=!0}))),R}function Z(e){return P()["editor.".concat(e)]||!1}function F(e){return P()["diffEditor.".concat(e)]||!1}E.registerConfiguration(D)},76556:function(e,t,n){"use strict";n.d(t,{$J:function(){return q},BH:function(){return ae},Bb:function(){return h},Bc:function(){return re},DB:function(){return ie},LJ:function(){return p},NY:function(){return k},O7:function(){return _},d2:function(){return L},gk:function(){return F},hL:function(){return ne},hu:function(){return f},n0:function(){return I},y0:function(){return d}});var i=n(37762),r=n(60136),o=n(43668),a=n(15671),s=n(43144),u=n(56345),l=n(30487),c=n(43717),d=8,h=function(){function e(t){(0,a.Z)(this,e),this._values=t}return(0,s.Z)(e,[{key:"hasChanged",value:function(e){return this._values[e]}}]),e}(),f=function(){function e(){(0,a.Z)(this,e),this._values=[]}return(0,s.Z)(e,[{key:"_read",value:function(e){return this._values[e]}},{key:"get",value:function(e){return this._values[e]}},{key:"_write",value:function(e,t){this._values[e]=t}}]),e}(),p=(0,s.Z)((function e(){(0,a.Z)(this,e),this.stableMinimapLayoutInput=null,this.stableFitMaxMinimapScale=0,this.stableFitRemainingWidth=0})),g=function(){function e(t,n,i,r){(0,a.Z)(this,e),this.id=t,this.name=n,this.defaultValue=i,this.schema=r}return(0,s.Z)(e,[{key:"compute",value:function(e,t,n){return n}}]),e}(),v=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;(0,a.Z)(this,e),this.schema=void 0,this.id=t,this.name="_never_",this.defaultValue=void 0,this.deps=n}return(0,s.Z)(e,[{key:"validate",value:function(e){return this.defaultValue}}]),e}(),m=function(){function e(t,n,i,r){(0,a.Z)(this,e),this.id=t,this.name=n,this.defaultValue=i,this.schema=r}return(0,s.Z)(e,[{key:"validate",value:function(e){return"undefined"===typeof e?this.defaultValue:e}},{key:"compute",value:function(e,t,n){return n}}]),e}();function _(e,t){return"undefined"===typeof e?t:"false"!==e&&Boolean(e)}var y=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e,i,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;return(0,a.Z)(this,n),"undefined"!==typeof o&&(o.type="boolean",o.default=r),t.call(this,e,i,r,o)}return(0,s.Z)(n,[{key:"validate",value:function(e){return _(e,this.defaultValue)}}]),n}(m),b=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e,i,r,o,s){var u,l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:void 0;return(0,a.Z)(this,n),"undefined"!==typeof l&&(l.type="integer",l.default=r,l.minimum=o,l.maximum=s),(u=t.call(this,e,i,r,l)).minimum=o,u.maximum=s,u}return(0,s.Z)(n,[{key:"validate",value:function(e){return n.clampedInt(e,this.defaultValue,this.minimum,this.maximum)}}],[{key:"clampedInt",value:function(e,t,n,i){if("undefined"===typeof e)return t;var r=parseInt(e,10);return isNaN(r)?t:(r=Math.max(n,r),0|(r=Math.min(i,r)))}}]),n}(m),w=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e,i,r,o,s){var u;return(0,a.Z)(this,n),"undefined"!==typeof s&&(s.type="number",s.default=r),(u=t.call(this,e,i,r,s)).validationFn=o,u}return(0,s.Z)(n,[{key:"validate",value:function(e){return this.validationFn(n.float(e,this.defaultValue))}}],[{key:"clamp",value:function(e,t,n){return e<t?t:e>n?n:e}},{key:"float",value:function(e,t){if("number"===typeof e)return e;if("undefined"===typeof e)return t;var n=parseFloat(e);return isNaN(n)?t:n}}]),n}(m),C=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e,i,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;return(0,a.Z)(this,n),"undefined"!==typeof o&&(o.type="string",o.default=r),t.call(this,e,i,r,o)}return(0,s.Z)(n,[{key:"validate",value:function(e){return n.string(e,this.defaultValue)}}],[{key:"string",value:function(e,t){return"string"!==typeof e?t:e}}]),n}(m);function k(e,t,n){return"string"!==typeof e||-1===n.indexOf(e)?t:e}var S=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e,i,r,o){var s,u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0;return(0,a.Z)(this,n),"undefined"!==typeof u&&(u.type="string",u.enum=o,u.default=r),(s=t.call(this,e,i,r,u))._allowedValues=o,s}return(0,s.Z)(n,[{key:"validate",value:function(e){return k(e,this.defaultValue,this._allowedValues)}}]),n}(m),x=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e,i,r,o,s,u){var l,c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:void 0;return(0,a.Z)(this,n),"undefined"!==typeof c&&(c.type="string",c.enum=s,c.default=o),(l=t.call(this,e,i,r,c))._allowedValues=s,l._convert=u,l}return(0,s.Z)(n,[{key:"validate",value:function(e){return"string"!==typeof e||-1===this._allowedValues.indexOf(e)?this.defaultValue:this._convert(e)}}]),n}(g);var L,E=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,2,"accessibilitySupport",0,{type:"string",enum:["auto","on","off"],enumDescriptions:[u.N("accessibilitySupport.auto","The editor will use platform APIs to detect when a Screen Reader is attached."),u.N("accessibilitySupport.on","The editor will be permanently optimized for usage with a Screen Reader. Word wrapping will be disabled."),u.N("accessibilitySupport.off","The editor will never be optimized for usage with a Screen Reader.")],default:"auto",description:u.N("accessibilitySupport","Controls whether the editor should run in a mode where it is optimized for screen readers. Setting to on will disable word wrapping.")})}return(0,s.Z)(n,[{key:"validate",value:function(e){switch(e){case"auto":return 0;case"off":return 1;case"on":return 2}return this.defaultValue}},{key:"compute",value:function(e,t,n){return 0===n?e.accessibilitySupport:n}}]),n}(g),D=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){(0,a.Z)(this,n);var e={insertSpace:!0,ignoreEmptyLines:!0};return t.call(this,17,"comments",e,{"editor.comments.insertSpace":{type:"boolean",default:e.insertSpace,description:u.N("comments.insertSpace","Controls whether a space character is inserted when commenting.")},"editor.comments.ignoreEmptyLines":{type:"boolean",default:e.ignoreEmptyLines,description:u.N("comments.ignoreEmptyLines","Controls if empty lines should be ignored with toggle, add or remove actions for line comments.")}})}return(0,s.Z)(n,[{key:"validate",value:function(e){if(!e||"object"!==typeof e)return this.defaultValue;var t=e;return{insertSpace:_(t.insertSpace,this.defaultValue.insertSpace),ignoreEmptyLines:_(t.ignoreEmptyLines,this.defaultValue.ignoreEmptyLines)}}}]),n}(g);!function(e){e[e.Line=1]="Line",e[e.Block=2]="Block",e[e.Underline=3]="Underline",e[e.LineThin=4]="LineThin",e[e.BlockOutline=5]="BlockOutline",e[e.UnderlineThin=6]="UnderlineThin"}(L||(L={}));var N=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,124,[62,31])}return(0,s.Z)(n,[{key:"compute",value:function(e,t,n){var i=["monaco-editor"];return t.get(31)&&i.push(t.get(31)),e.extraEditorClassName&&i.push(e.extraEditorClassName),"default"===t.get(62)?i.push("mouse-default"):"copy"===t.get(62)&&i.push("mouse-copy"),t.get(97)&&i.push("showUnused"),t.get(122)&&i.push("showDeprecated"),i.join(" ")}}]),n}(v),M=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,30,"emptySelectionClipboard",!0,{description:u.N("emptySelectionClipboard","Controls whether copying without a selection copies the current line.")})}return(0,s.Z)(n,[{key:"compute",value:function(e,t,n){return n&&e.emptySelectionClipboard}}]),n}(y),T=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){(0,a.Z)(this,n);var e={cursorMoveOnType:!0,seedSearchStringFromSelection:!0,autoFindInSelection:"never",globalFindClipboard:!1,addExtraSpaceOnTop:!0,loop:!0};return t.call(this,33,"find",e,{"editor.find.cursorMoveOnType":{type:"boolean",default:e.cursorMoveOnType,description:u.N("find.cursorMoveOnType","Controls whether the cursor should jump to find matches while typing.")},"editor.find.seedSearchStringFromSelection":{type:"boolean",default:e.seedSearchStringFromSelection,description:u.N("find.seedSearchStringFromSelection","Controls whether the search string in the Find Widget is seeded from the editor selection.")},"editor.find.autoFindInSelection":{type:"string",enum:["never","always","multiline"],default:e.autoFindInSelection,enumDescriptions:[u.N("editor.find.autoFindInSelection.never","Never turn on Find in selection automatically (default)."),u.N("editor.find.autoFindInSelection.always","Always turn on Find in selection automatically."),u.N("editor.find.autoFindInSelection.multiline","Turn on Find in selection automatically when multiple lines of content are selected.")],description:u.N("find.autoFindInSelection","Controls the condition for turning on find in selection automatically.")},"editor.find.globalFindClipboard":{type:"boolean",default:e.globalFindClipboard,description:u.N("find.globalFindClipboard","Controls whether the Find Widget should read or modify the shared find clipboard on macOS."),included:l.dz},"editor.find.addExtraSpaceOnTop":{type:"boolean",default:e.addExtraSpaceOnTop,description:u.N("find.addExtraSpaceOnTop","Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.")},"editor.find.loop":{type:"boolean",default:e.loop,description:u.N("find.loop","Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.")}})}return(0,s.Z)(n,[{key:"validate",value:function(e){if(!e||"object"!==typeof e)return this.defaultValue;var t=e;return{cursorMoveOnType:_(t.cursorMoveOnType,this.defaultValue.cursorMoveOnType),seedSearchStringFromSelection:_(t.seedSearchStringFromSelection,this.defaultValue.seedSearchStringFromSelection),autoFindInSelection:"boolean"===typeof e.autoFindInSelection?e.autoFindInSelection?"always":"never":k(t.autoFindInSelection,this.defaultValue.autoFindInSelection,["never","always","multiline"]),globalFindClipboard:_(t.globalFindClipboard,this.defaultValue.globalFindClipboard),addExtraSpaceOnTop:_(t.addExtraSpaceOnTop,this.defaultValue.addExtraSpaceOnTop),loop:_(t.loop,this.defaultValue.loop)}}}]),n}(g),I=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,41,"fontLigatures",n.OFF,{anyOf:[{type:"boolean",description:u.N("fontLigatures","Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.")},{type:"string",description:u.N("fontFeatureSettings","Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.")}],description:u.N("fontLigaturesGeneral","Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property."),default:!1})}return(0,s.Z)(n,[{key:"validate",value:function(e){return"undefined"===typeof e?this.defaultValue:"string"===typeof e?"false"===e?n.OFF:"true"===e?n.ON:e:Boolean(e)?n.ON:n.OFF}}]),n}(g);I.OFF='"liga" off, "calt" off',I.ON='"liga" on, "calt" on';var O=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,40)}return(0,s.Z)(n,[{key:"compute",value:function(e,t,n){return e.fontInfo}}]),n}(v),A=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,42,"fontSize",ne.fontSize,{type:"number",minimum:6,maximum:100,default:ne.fontSize,description:u.N("fontSize","Controls the font size in pixels.")})}return(0,s.Z)(n,[{key:"validate",value:function(e){var t=w.float(e,this.defaultValue);return 0===t?ne.fontSize:w.clamp(t,6,100)}},{key:"compute",value:function(e,t,n){return e.fontInfo.fontSize}}]),n}(m),R=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,43,"fontWeight",ne.fontWeight,{anyOf:[{type:"number",minimum:n.MINIMUM_VALUE,maximum:n.MAXIMUM_VALUE,errorMessage:u.N("fontWeightErrorMessage",'Only "normal" and "bold" keywords or numbers between 1 and 1000 are allowed.')},{type:"string",pattern:"^(normal|bold|1000|[1-9][0-9]{0,2})$"},{enum:n.SUGGESTION_VALUES}],default:ne.fontWeight,description:u.N("fontWeight",'Controls the font weight. Accepts "normal" and "bold" keywords or numbers between 1 and 1000.')})}return(0,s.Z)(n,[{key:"validate",value:function(e){return"normal"===e||"bold"===e?e:String(b.clampedInt(e,ne.fontWeight,n.MINIMUM_VALUE,n.MAXIMUM_VALUE))}}]),n}(g);R.SUGGESTION_VALUES=["normal","bold","100","200","300","400","500","600","700","800","900"],R.MINIMUM_VALUE=1,R.MAXIMUM_VALUE=1e3;var P=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){(0,a.Z)(this,n);var e={multiple:"peek",multipleDefinitions:"peek",multipleTypeDefinitions:"peek",multipleDeclarations:"peek",multipleImplementations:"peek",multipleReferences:"peek",alternativeDefinitionCommand:"editor.action.goToReferences",alternativeTypeDefinitionCommand:"editor.action.goToReferences",alternativeDeclarationCommand:"editor.action.goToReferences",alternativeImplementationCommand:"",alternativeReferenceCommand:""},i={type:"string",enum:["peek","gotoAndPeek","goto"],default:e.multiple,enumDescriptions:[u.N("editor.gotoLocation.multiple.peek","Show peek view of the results (default)"),u.N("editor.gotoLocation.multiple.gotoAndPeek","Go to the primary result and show a peek view"),u.N("editor.gotoLocation.multiple.goto","Go to the primary result and enable peek-less navigation to others")]},r=["","editor.action.referenceSearch.trigger","editor.action.goToReferences","editor.action.peekImplementation","editor.action.goToImplementation","editor.action.peekTypeDefinition","editor.action.goToTypeDefinition","editor.action.peekDeclaration","editor.action.revealDeclaration","editor.action.peekDefinition","editor.action.revealDefinitionAside","editor.action.revealDefinition"];return t.call(this,47,"gotoLocation",e,{"editor.gotoLocation.multiple":{deprecationMessage:u.N("editor.gotoLocation.multiple.deprecated","This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.")},"editor.gotoLocation.multipleDefinitions":Object.assign({description:u.N("editor.editor.gotoLocation.multipleDefinitions","Controls the behavior the 'Go to Definition'-command when multiple target locations exist.")},i),"editor.gotoLocation.multipleTypeDefinitions":Object.assign({description:u.N("editor.editor.gotoLocation.multipleTypeDefinitions","Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.")},i),"editor.gotoLocation.multipleDeclarations":Object.assign({description:u.N("editor.editor.gotoLocation.multipleDeclarations","Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.")},i),"editor.gotoLocation.multipleImplementations":Object.assign({description:u.N("editor.editor.gotoLocation.multipleImplemenattions","Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.")},i),"editor.gotoLocation.multipleReferences":Object.assign({description:u.N("editor.editor.gotoLocation.multipleReferences","Controls the behavior the 'Go to References'-command when multiple target locations exist.")},i),"editor.gotoLocation.alternativeDefinitionCommand":{type:"string",default:e.alternativeDefinitionCommand,enum:r,description:u.N("alternativeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Definition' is the current location.")},"editor.gotoLocation.alternativeTypeDefinitionCommand":{type:"string",default:e.alternativeTypeDefinitionCommand,enum:r,description:u.N("alternativeTypeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.")},"editor.gotoLocation.alternativeDeclarationCommand":{type:"string",default:e.alternativeDeclarationCommand,enum:r,description:u.N("alternativeDeclarationCommand","Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.")},"editor.gotoLocation.alternativeImplementationCommand":{type:"string",default:e.alternativeImplementationCommand,enum:r,description:u.N("alternativeImplementationCommand","Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.")},"editor.gotoLocation.alternativeReferenceCommand":{type:"string",default:e.alternativeReferenceCommand,enum:r,description:u.N("alternativeReferenceCommand","Alternative command id that is being executed when the result of 'Go to Reference' is the current location.")}})}return(0,s.Z)(n,[{key:"validate",value:function(e){var t,n,i,r,o;if(!e||"object"!==typeof e)return this.defaultValue;var a=e;return{multiple:k(a.multiple,this.defaultValue.multiple,["peek","gotoAndPeek","goto"]),multipleDefinitions:null!==(t=a.multipleDefinitions)&&void 0!==t?t:k(a.multipleDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleTypeDefinitions:null!==(n=a.multipleTypeDefinitions)&&void 0!==n?n:k(a.multipleTypeDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleDeclarations:null!==(i=a.multipleDeclarations)&&void 0!==i?i:k(a.multipleDeclarations,"peek",["peek","gotoAndPeek","goto"]),multipleImplementations:null!==(r=a.multipleImplementations)&&void 0!==r?r:k(a.multipleImplementations,"peek",["peek","gotoAndPeek","goto"]),multipleReferences:null!==(o=a.multipleReferences)&&void 0!==o?o:k(a.multipleReferences,"peek",["peek","gotoAndPeek","goto"]),alternativeDefinitionCommand:C.string(a.alternativeDefinitionCommand,this.defaultValue.alternativeDefinitionCommand),alternativeTypeDefinitionCommand:C.string(a.alternativeTypeDefinitionCommand,this.defaultValue.alternativeTypeDefinitionCommand),alternativeDeclarationCommand:C.string(a.alternativeDeclarationCommand,this.defaultValue.alternativeDeclarationCommand),alternativeImplementationCommand:C.string(a.alternativeImplementationCommand,this.defaultValue.alternativeImplementationCommand),alternativeReferenceCommand:C.string(a.alternativeReferenceCommand,this.defaultValue.alternativeReferenceCommand)}}}]),n}(g),Z=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){(0,a.Z)(this,n);var e={enabled:!0,delay:300,sticky:!0};return t.call(this,50,"hover",e,{"editor.hover.enabled":{type:"boolean",default:e.enabled,description:u.N("hover.enabled","Controls whether the hover is shown.")},"editor.hover.delay":{type:"number",default:e.delay,description:u.N("hover.delay","Controls the delay in milliseconds after which the hover is shown.")},"editor.hover.sticky":{type:"boolean",default:e.sticky,description:u.N("hover.sticky","Controls whether the hover should remain visible when mouse is moved over it.")}})}return(0,s.Z)(n,[{key:"validate",value:function(e){if(!e||"object"!==typeof e)return this.defaultValue;var t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),delay:b.clampedInt(t.delay,this.defaultValue.delay,0,1e4),sticky:_(t.sticky,this.defaultValue.sticky)}}}]),n}(g),F=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,127,[46,54,35,61,89,56,57,91,114,117,118,119,2])}return(0,s.Z)(n,[{key:"compute",value:function(e,t,i){return n.computeLayout(t,{memory:e.memory,outerWidth:e.outerWidth,outerHeight:e.outerHeight,isDominatedByLongLines:e.isDominatedByLongLines,lineHeight:e.fontInfo.lineHeight,viewLineCount:e.viewLineCount,lineNumbersDigitCount:e.lineNumbersDigitCount,typicalHalfwidthCharacterWidth:e.fontInfo.typicalHalfwidthCharacterWidth,maxDigitWidth:e.fontInfo.maxDigitWidth,pixelRatio:e.pixelRatio})}}],[{key:"computeContainedMinimapLineCount",value:function(e){var t=e.height/e.lineHeight,n=e.scrollBeyondLastLine?t-1:0,i=(e.viewLineCount+n)/(e.pixelRatio*e.height);return{typicalViewportLineCount:t,extraLinesBeyondLastLine:n,desiredRatio:i,minimapLineCount:Math.floor(e.viewLineCount/i)}}},{key:"_computeMinimapLayout",value:function(e,t){var i=e.outerWidth,r=e.outerHeight,o=e.pixelRatio;if(!e.minimap.enabled)return{renderMinimap:0,minimapLeft:0,minimapWidth:0,minimapHeightIsEditorHeight:!1,minimapIsSampling:!1,minimapScale:1,minimapLineHeight:1,minimapCanvasInnerWidth:0,minimapCanvasInnerHeight:Math.floor(o*r),minimapCanvasOuterWidth:0,minimapCanvasOuterHeight:r};var a=t.stableMinimapLayoutInput,s=a&&e.outerHeight===a.outerHeight&&e.lineHeight===a.lineHeight&&e.typicalHalfwidthCharacterWidth===a.typicalHalfwidthCharacterWidth&&e.pixelRatio===a.pixelRatio&&e.scrollBeyondLastLine===a.scrollBeyondLastLine&&e.minimap.enabled===a.minimap.enabled&&e.minimap.side===a.minimap.side&&e.minimap.size===a.minimap.size&&e.minimap.showSlider===a.minimap.showSlider&&e.minimap.renderCharacters===a.minimap.renderCharacters&&e.minimap.maxColumn===a.minimap.maxColumn&&e.minimap.scale===a.minimap.scale&&e.verticalScrollbarWidth===a.verticalScrollbarWidth&&e.isViewportWrapping===a.isViewportWrapping,u=e.lineHeight,l=e.typicalHalfwidthCharacterWidth,c=e.scrollBeyondLastLine,h=e.minimap.renderCharacters,f=o>=2?Math.round(2*e.minimap.scale):e.minimap.scale,p=e.minimap.maxColumn,g=e.minimap.size,v=e.minimap.side,m=e.verticalScrollbarWidth,_=e.viewLineCount,y=e.remainingWidth,b=e.isViewportWrapping,w=h?2:3,C=Math.floor(o*r),k=C/o,S=!1,x=!1,L=w*f,E=f/o,D=1;if("fill"===g||"fit"===g){var N=n.computeContainedMinimapLineCount({viewLineCount:_,scrollBeyondLastLine:c,height:r,lineHeight:u,pixelRatio:o}),M=N.typicalViewportLineCount,T=N.extraLinesBeyondLastLine,I=N.desiredRatio;if(_/N.minimapLineCount>1)S=!0,x=!0,L=1,E=(f=1)/o;else{var O=!1,A=f+1;if("fit"===g){var R=Math.ceil((_+T)*L);b&&s&&y<=t.stableFitRemainingWidth?(O=!0,A=t.stableFitMaxMinimapScale):(O=R>C,b&&O?(t.stableMinimapLayoutInput=e,t.stableFitRemainingWidth=y):(t.stableMinimapLayoutInput=null,t.stableFitRemainingWidth=0))}if("fill"===g||O){S=!0;var P=f;L=Math.min(u*o,Math.max(1,Math.floor(1/I))),(f=Math.min(A,Math.max(1,Math.floor(L/w))))>P&&(D=Math.min(2,f/P)),E=f/o/D,C=Math.ceil(Math.max(M,_+T)*L),b&&O&&(t.stableFitMaxMinimapScale=f)}}}var Z=Math.floor(p*E),F=Math.min(Z,Math.max(0,Math.floor((y-m-2)*E/(l+E)))+d),j=Math.floor(o*F),H=j/o;return{renderMinimap:h?1:2,minimapLeft:"left"===v?0:i-F-m,minimapWidth:F,minimapHeightIsEditorHeight:S,minimapIsSampling:x,minimapScale:f,minimapLineHeight:L,minimapCanvasInnerWidth:j=Math.floor(j*D),minimapCanvasInnerHeight:C,minimapCanvasOuterWidth:H,minimapCanvasOuterHeight:k}}},{key:"computeLayout",value:function(e,t){var i,r=0|t.outerWidth,o=0|t.outerHeight,a=0|t.lineHeight,s=0|t.lineNumbersDigitCount,u=t.typicalHalfwidthCharacterWidth,l=t.maxDigitWidth,c=t.pixelRatio,d=t.viewLineCount,h=e.get(119),f="inherit"===h?e.get(118):h,g="inherit"===f?e.get(114):f,v=e.get(117),m=e.get(2),_=t.isDominatedByLongLines,y=e.get(46),w=0!==e.get(56).renderType,C=e.get(57),k=e.get(91),S=e.get(61),x=e.get(89),L=x.verticalScrollbarSize,E=x.verticalHasArrows,D=x.arrowSize,N=x.horizontalScrollbarSize,M=e.get(54),T=e.get(35);if("string"===typeof M&&/^\d+(\.\d+)?ch$/.test(M)){var I=parseFloat(M.substr(0,M.length-2));i=b.clampedInt(I*u,0,0,1e3)}else i=b.clampedInt(M,0,0,1e3);T&&(i+=16);var O=0;if(w){var A=Math.max(s,C);O=Math.round(A*l)}var R=0;y&&(R=a);var P=0,Z=P+R,F=Z+O,j=F+i,H=r-R-O-i,B=!1,z=!1,W=-1;2!==m&&("inherit"===f&&_?(B=!0,z=!0):"on"===g||"bounded"===g?z=!0:"wordWrapColumn"===g&&(W=v));var V=n._computeMinimapLayout({outerWidth:r,outerHeight:o,lineHeight:a,typicalHalfwidthCharacterWidth:u,pixelRatio:c,scrollBeyondLastLine:k,minimap:S,verticalScrollbarWidth:L,viewLineCount:d,remainingWidth:H,isViewportWrapping:z},t.memory||new p);0!==V.renderMinimap&&0===V.minimapLeft&&(P+=V.minimapWidth,Z+=V.minimapWidth,F+=V.minimapWidth,j+=V.minimapWidth);var Y=H-V.minimapWidth,U=Math.max(1,Math.floor((Y-L-2)/u)),K=E?D:0;return z&&(W=Math.max(1,U),"bounded"===g&&(W=Math.min(W,v))),{width:r,height:o,glyphMarginLeft:P,glyphMarginWidth:R,lineNumbersLeft:Z,lineNumbersWidth:O,decorationsLeft:F,decorationsWidth:i,contentLeft:j,contentWidth:Y,minimap:V,viewportColumn:U,isWordWrapMinified:B,isViewportWrapping:z,wrappingColumn:W,verticalScrollbarWidth:L,horizontalScrollbarHeight:N,overviewRuler:{top:K,width:L,height:o-2*K,right:0}}}}]),n}(v),j=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){(0,a.Z)(this,n);var e={enabled:!0};return t.call(this,53,"lightbulb",e,{"editor.lightbulb.enabled":{type:"boolean",default:e.enabled,description:u.N("codeActions","Enables the code action lightbulb in the editor.")}})}return(0,s.Z)(n,[{key:"validate",value:function(e){return e&&"object"===typeof e?{enabled:_(e.enabled,this.defaultValue.enabled)}:this.defaultValue}}]),n}(g),H=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){(0,a.Z)(this,n);var e={enabled:!0,fontSize:0,fontFamily:ne.fontFamily};return t.call(this,123,"inlineHints",e,{"editor.inlineHints.enabled":{type:"boolean",default:e.enabled,description:u.N("inlineHints.enable","Enables the inline hints in the editor.")},"editor.inlineHints.fontSize":{type:"number",default:e.fontSize,description:u.N("inlineHints.fontSize","Controls font size of inline hints in the editor. When set to `0`, the 90% of `#editor.fontSize#` is used.")},"editor.inlineHints.fontFamily":{type:"string",default:e.fontFamily,description:u.N("inlineHints.fontFamily","Controls font family of inline hints in the editor.")}})}return(0,s.Z)(n,[{key:"validate",value:function(e){if(!e||"object"!==typeof e)return this.defaultValue;var t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),fontSize:b.clampedInt(t.fontSize,this.defaultValue.fontSize,0,100),fontFamily:C.string(t.fontFamily,this.defaultValue.fontFamily)}}}]),n}(g),B=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,55,"lineHeight",ne.lineHeight,0,150,{description:u.N("lineHeight","Controls the line height. Use 0 to compute the line height from the font size.")})}return(0,s.Z)(n,[{key:"compute",value:function(e,t,n){return e.fontInfo.lineHeight}}]),n}(b),z=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){(0,a.Z)(this,n);var e={enabled:!0,size:"proportional",side:"right",showSlider:"mouseover",renderCharacters:!0,maxColumn:120,scale:1};return t.call(this,61,"minimap",e,{"editor.minimap.enabled":{type:"boolean",default:e.enabled,description:u.N("minimap.enabled","Controls whether the minimap is shown.")},"editor.minimap.size":{type:"string",enum:["proportional","fill","fit"],enumDescriptions:[u.N("minimap.size.proportional","The minimap has the same size as the editor contents (and might scroll)."),u.N("minimap.size.fill","The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling)."),u.N("minimap.size.fit","The minimap will shrink as necessary to never be larger than the editor (no scrolling).")],default:e.size,description:u.N("minimap.size","Controls the size of the minimap.")},"editor.minimap.side":{type:"string",enum:["left","right"],default:e.side,description:u.N("minimap.side","Controls the side where to render the minimap.")},"editor.minimap.showSlider":{type:"string",enum:["always","mouseover"],default:e.showSlider,description:u.N("minimap.showSlider","Controls when the minimap slider is shown.")},"editor.minimap.scale":{type:"number",default:e.scale,minimum:1,maximum:3,enum:[1,2,3],description:u.N("minimap.scale","Scale of content drawn in the minimap: 1, 2 or 3.")},"editor.minimap.renderCharacters":{type:"boolean",default:e.renderCharacters,description:u.N("minimap.renderCharacters","Render the actual characters on a line as opposed to color blocks.")},"editor.minimap.maxColumn":{type:"number",default:e.maxColumn,description:u.N("minimap.maxColumn","Limit the width of the minimap to render at most a certain number of columns.")}})}return(0,s.Z)(n,[{key:"validate",value:function(e){if(!e||"object"!==typeof e)return this.defaultValue;var t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),size:k(t.size,this.defaultValue.size,["proportional","fill","fit"]),side:k(t.side,this.defaultValue.side,["right","left"]),showSlider:k(t.showSlider,this.defaultValue.showSlider,["always","mouseover"]),renderCharacters:_(t.renderCharacters,this.defaultValue.renderCharacters),scale:b.clampedInt(t.scale,1,1,3),maxColumn:b.clampedInt(t.maxColumn,this.defaultValue.maxColumn,1,1e4)}}}]),n}(g);var W=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,71,"padding",{top:0,bottom:0},{"editor.padding.top":{type:"number",default:0,minimum:0,maximum:1e3,description:u.N("padding.top","Controls the amount of space between the top edge of the editor and the first line.")},"editor.padding.bottom":{type:"number",default:0,minimum:0,maximum:1e3,description:u.N("padding.bottom","Controls the amount of space between the bottom edge of the editor and the last line.")}})}return(0,s.Z)(n,[{key:"validate",value:function(e){if(!e||"object"!==typeof e)return this.defaultValue;var t=e;return{top:b.clampedInt(t.top,0,0,1e3),bottom:b.clampedInt(t.bottom,0,0,1e3)}}}]),n}(g),V=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){(0,a.Z)(this,n);var e={enabled:!0,cycle:!1};return t.call(this,72,"parameterHints",e,{"editor.parameterHints.enabled":{type:"boolean",default:e.enabled,description:u.N("parameterHints.enabled","Enables a pop-up that shows parameter documentation and type information as you type.")},"editor.parameterHints.cycle":{type:"boolean",default:e.cycle,description:u.N("parameterHints.cycle","Controls whether the parameter hints menu cycles or closes when reaching the end of the list.")}})}return(0,s.Z)(n,[{key:"validate",value:function(e){if(!e||"object"!==typeof e)return this.defaultValue;var t=e;return{enabled:_(t.enabled,this.defaultValue.enabled),cycle:_(t.cycle,this.defaultValue.cycle)}}}]),n}(g),Y=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,125)}return(0,s.Z)(n,[{key:"compute",value:function(e,t,n){return e.pixelRatio}}]),n}(v),U=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){var e;(0,a.Z)(this,n);var i={other:!0,comments:!1,strings:!1};return(e=t.call(this,75,"quickSuggestions",i,{anyOf:[{type:"boolean"},{type:"object",properties:{strings:{type:"boolean",default:i.strings,description:u.N("quickSuggestions.strings","Enable quick suggestions inside strings.")},comments:{type:"boolean",default:i.comments,description:u.N("quickSuggestions.comments","Enable quick suggestions inside comments.")},other:{type:"boolean",default:i.other,description:u.N("quickSuggestions.other","Enable quick suggestions outside of strings and comments.")}}}],default:i,description:u.N("quickSuggestions","Controls whether suggestions should automatically show up while typing.")})).defaultValue=i,e}return(0,s.Z)(n,[{key:"validate",value:function(e){if("boolean"===typeof e)return e;if(e&&"object"===typeof e){var t=e,n={other:_(t.other,this.defaultValue.other),comments:_(t.comments,this.defaultValue.comments),strings:_(t.strings,this.defaultValue.strings)};return!!(n.other&&n.comments&&n.strings)||!!(n.other||n.comments||n.strings)&&n}return this.defaultValue}}]),n}(g),K=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,56,"lineNumbers",{renderType:1,renderFn:null},{type:"string",enum:["off","on","relative","interval"],enumDescriptions:[u.N("lineNumbers.off","Line numbers are not rendered."),u.N("lineNumbers.on","Line numbers are rendered as absolute number."),u.N("lineNumbers.relative","Line numbers are rendered as distance in lines to cursor position."),u.N("lineNumbers.interval","Line numbers are rendered every 10 lines.")],default:"on",description:u.N("lineNumbers","Controls the display of line numbers.")})}return(0,s.Z)(n,[{key:"validate",value:function(e){var t=this.defaultValue.renderType,n=this.defaultValue.renderFn;return"undefined"!==typeof e&&("function"===typeof e?(t=4,n=e):t="interval"===e?3:"relative"===e?2:"on"===e?1:0),{renderType:t,renderFn:n}}}]),n}(g);function q(e){var t=e.get(84);return"editable"===t?e.get(77):"on"!==t}var G=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){(0,a.Z)(this,n);var e=[],i={type:"number",description:u.N("rulers.size","Number of monospace characters at which this editor ruler will render.")};return t.call(this,88,"rulers",e,{type:"array",items:{anyOf:[i,{type:["object"],properties:{column:i,color:{type:"string",description:u.N("rulers.color","Color of this editor ruler."),format:"color-hex"}}}]},default:e,description:u.N("rulers","Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.")})}return(0,s.Z)(n,[{key:"validate",value:function(e){if(Array.isArray(e)){var t,n=[],r=(0,i.Z)(e);try{for(r.s();!(t=r.n()).done;){var o=t.value;if("number"===typeof o)n.push({column:b.clampedInt(o,0,0,1e4),color:null});else if(o&&"object"===typeof o){var a=o;n.push({column:b.clampedInt(a.column,0,0,1e4),color:a.color})}}}catch(s){r.e(s)}finally{r.f()}return n.sort((function(e,t){return e.column-t.column})),n}return this.defaultValue}}]),n}(g);function $(e,t){if("string"!==typeof e)return t;switch(e){case"hidden":return 2;case"visible":return 3;default:return 1}}var Q=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,89,"scrollbar",{vertical:1,horizontal:1,arrowSize:11,useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,horizontalScrollbarSize:12,horizontalSliderSize:12,verticalScrollbarSize:14,verticalSliderSize:14,handleMouseWheel:!0,alwaysConsumeMouseWheel:!0,scrollByPage:!1})}return(0,s.Z)(n,[{key:"validate",value:function(e){if(!e||"object"!==typeof e)return this.defaultValue;var t=e,n=b.clampedInt(t.horizontalScrollbarSize,this.defaultValue.horizontalScrollbarSize,0,1e3),i=b.clampedInt(t.verticalScrollbarSize,this.defaultValue.verticalScrollbarSize,0,1e3);return{arrowSize:b.clampedInt(t.arrowSize,this.defaultValue.arrowSize,0,1e3),vertical:$(t.vertical,this.defaultValue.vertical),horizontal:$(t.horizontal,this.defaultValue.horizontal),useShadows:_(t.useShadows,this.defaultValue.useShadows),verticalHasArrows:_(t.verticalHasArrows,this.defaultValue.verticalHasArrows),horizontalHasArrows:_(t.horizontalHasArrows,this.defaultValue.horizontalHasArrows),handleMouseWheel:_(t.handleMouseWheel,this.defaultValue.handleMouseWheel),alwaysConsumeMouseWheel:_(t.alwaysConsumeMouseWheel,this.defaultValue.alwaysConsumeMouseWheel),horizontalScrollbarSize:n,horizontalSliderSize:b.clampedInt(t.horizontalSliderSize,n,0,1e3),verticalScrollbarSize:i,verticalSliderSize:b.clampedInt(t.verticalSliderSize,i,0,1e3),scrollByPage:_(t.scrollByPage,this.defaultValue.scrollByPage)}}}]),n}(g),X=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){(0,a.Z)(this,n);var e={insertMode:"insert",filterGraceful:!0,snippetsPreventQuickSuggestions:!0,localityBonus:!1,shareSuggestSelections:!1,showIcons:!0,showStatusBar:!1,showInlineDetails:!0,showMethods:!0,showFunctions:!0,showConstructors:!0,showFields:!0,showVariables:!0,showClasses:!0,showStructs:!0,showInterfaces:!0,showModules:!0,showProperties:!0,showEvents:!0,showOperators:!0,showUnits:!0,showValues:!0,showConstants:!0,showEnums:!0,showEnumMembers:!0,showKeywords:!0,showWords:!0,showColors:!0,showFiles:!0,showReferences:!0,showFolders:!0,showTypeParameters:!0,showSnippets:!0,showUsers:!0,showIssues:!0};return t.call(this,103,"suggest",e,{"editor.suggest.insertMode":{type:"string",enum:["insert","replace"],enumDescriptions:[u.N("suggest.insertMode.insert","Insert suggestion without overwriting text right of the cursor."),u.N("suggest.insertMode.replace","Insert suggestion and overwrite text right of the cursor.")],default:e.insertMode,description:u.N("suggest.insertMode","Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.")},"editor.suggest.filterGraceful":{type:"boolean",default:e.filterGraceful,description:u.N("suggest.filterGraceful","Controls whether filtering and sorting suggestions accounts for small typos.")},"editor.suggest.localityBonus":{type:"boolean",default:e.localityBonus,description:u.N("suggest.localityBonus","Controls whether sorting favors words that appear close to the cursor.")},"editor.suggest.shareSuggestSelections":{type:"boolean",default:e.shareSuggestSelections,markdownDescription:u.N("suggest.shareSuggestSelections","Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).")},"editor.suggest.snippetsPreventQuickSuggestions":{type:"boolean",default:e.snippetsPreventQuickSuggestions,description:u.N("suggest.snippetsPreventQuickSuggestions","Controls whether an active snippet prevents quick suggestions.")},"editor.suggest.showIcons":{type:"boolean",default:e.showIcons,description:u.N("suggest.showIcons","Controls whether to show or hide icons in suggestions.")},"editor.suggest.showStatusBar":{type:"boolean",default:e.showStatusBar,description:u.N("suggest.showStatusBar","Controls the visibility of the status bar at the bottom of the suggest widget.")},"editor.suggest.showInlineDetails":{type:"boolean",default:e.showInlineDetails,description:u.N("suggest.showInlineDetails","Controls whether suggest details show inline with the label or only in the details widget")},"editor.suggest.maxVisibleSuggestions":{type:"number",deprecationMessage:u.N("suggest.maxVisibleSuggestions.dep","This setting is deprecated. The suggest widget can now be resized.")},"editor.suggest.filteredTypes":{type:"object",deprecationMessage:u.N("deprecated","This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.")},"editor.suggest.showMethods":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showMethods","When enabled IntelliSense shows `method`-suggestions.")},"editor.suggest.showFunctions":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showFunctions","When enabled IntelliSense shows `function`-suggestions.")},"editor.suggest.showConstructors":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showConstructors","When enabled IntelliSense shows `constructor`-suggestions.")},"editor.suggest.showFields":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showFields","When enabled IntelliSense shows `field`-suggestions.")},"editor.suggest.showVariables":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showVariables","When enabled IntelliSense shows `variable`-suggestions.")},"editor.suggest.showClasses":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showClasss","When enabled IntelliSense shows `class`-suggestions.")},"editor.suggest.showStructs":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showStructs","When enabled IntelliSense shows `struct`-suggestions.")},"editor.suggest.showInterfaces":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showInterfaces","When enabled IntelliSense shows `interface`-suggestions.")},"editor.suggest.showModules":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showModules","When enabled IntelliSense shows `module`-suggestions.")},"editor.suggest.showProperties":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showPropertys","When enabled IntelliSense shows `property`-suggestions.")},"editor.suggest.showEvents":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showEvents","When enabled IntelliSense shows `event`-suggestions.")},"editor.suggest.showOperators":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showOperators","When enabled IntelliSense shows `operator`-suggestions.")},"editor.suggest.showUnits":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showUnits","When enabled IntelliSense shows `unit`-suggestions.")},"editor.suggest.showValues":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showValues","When enabled IntelliSense shows `value`-suggestions.")},"editor.suggest.showConstants":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showConstants","When enabled IntelliSense shows `constant`-suggestions.")},"editor.suggest.showEnums":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showEnums","When enabled IntelliSense shows `enum`-suggestions.")},"editor.suggest.showEnumMembers":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showEnumMembers","When enabled IntelliSense shows `enumMember`-suggestions.")},"editor.suggest.showKeywords":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showKeywords","When enabled IntelliSense shows `keyword`-suggestions.")},"editor.suggest.showWords":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showTexts","When enabled IntelliSense shows `text`-suggestions.")},"editor.suggest.showColors":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showColors","When enabled IntelliSense shows `color`-suggestions.")},"editor.suggest.showFiles":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showFiles","When enabled IntelliSense shows `file`-suggestions.")},"editor.suggest.showReferences":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showReferences","When enabled IntelliSense shows `reference`-suggestions.")},"editor.suggest.showCustomcolors":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showCustomcolors","When enabled IntelliSense shows `customcolor`-suggestions.")},"editor.suggest.showFolders":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showFolders","When enabled IntelliSense shows `folder`-suggestions.")},"editor.suggest.showTypeParameters":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showTypeParameters","When enabled IntelliSense shows `typeParameter`-suggestions.")},"editor.suggest.showSnippets":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showSnippets","When enabled IntelliSense shows `snippet`-suggestions.")},"editor.suggest.showUsers":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showUsers","When enabled IntelliSense shows `user`-suggestions.")},"editor.suggest.showIssues":{type:"boolean",default:!0,markdownDescription:u.N("editor.suggest.showIssues","When enabled IntelliSense shows `issues`-suggestions.")}})}return(0,s.Z)(n,[{key:"validate",value:function(e){if(!e||"object"!==typeof e)return this.defaultValue;var t=e;return{insertMode:k(t.insertMode,this.defaultValue.insertMode,["insert","replace"]),filterGraceful:_(t.filterGraceful,this.defaultValue.filterGraceful),snippetsPreventQuickSuggestions:_(t.snippetsPreventQuickSuggestions,this.defaultValue.filterGraceful),localityBonus:_(t.localityBonus,this.defaultValue.localityBonus),shareSuggestSelections:_(t.shareSuggestSelections,this.defaultValue.shareSuggestSelections),showIcons:_(t.showIcons,this.defaultValue.showIcons),showStatusBar:_(t.showStatusBar,this.defaultValue.showStatusBar),showInlineDetails:_(t.showInlineDetails,this.defaultValue.showInlineDetails),showMethods:_(t.showMethods,this.defaultValue.showMethods),showFunctions:_(t.showFunctions,this.defaultValue.showFunctions),showConstructors:_(t.showConstructors,this.defaultValue.showConstructors),showFields:_(t.showFields,this.defaultValue.showFields),showVariables:_(t.showVariables,this.defaultValue.showVariables),showClasses:_(t.showClasses,this.defaultValue.showClasses),showStructs:_(t.showStructs,this.defaultValue.showStructs),showInterfaces:_(t.showInterfaces,this.defaultValue.showInterfaces),showModules:_(t.showModules,this.defaultValue.showModules),showProperties:_(t.showProperties,this.defaultValue.showProperties),showEvents:_(t.showEvents,this.defaultValue.showEvents),showOperators:_(t.showOperators,this.defaultValue.showOperators),showUnits:_(t.showUnits,this.defaultValue.showUnits),showValues:_(t.showValues,this.defaultValue.showValues),showConstants:_(t.showConstants,this.defaultValue.showConstants),showEnums:_(t.showEnums,this.defaultValue.showEnums),showEnumMembers:_(t.showEnumMembers,this.defaultValue.showEnumMembers),showKeywords:_(t.showKeywords,this.defaultValue.showKeywords),showWords:_(t.showWords,this.defaultValue.showWords),showColors:_(t.showColors,this.defaultValue.showColors),showFiles:_(t.showFiles,this.defaultValue.showFiles),showReferences:_(t.showReferences,this.defaultValue.showReferences),showFolders:_(t.showFolders,this.defaultValue.showFolders),showTypeParameters:_(t.showTypeParameters,this.defaultValue.showTypeParameters),showSnippets:_(t.showSnippets,this.defaultValue.showSnippets),showUsers:_(t.showUsers,this.defaultValue.showUsers),showIssues:_(t.showIssues,this.defaultValue.showIssues)}}}]),n}(g),J=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,99,"smartSelect",{selectLeadingAndTrailingWhitespace:!0},{"editor.smartSelect.selectLeadingAndTrailingWhitespace":{description:u.N("selectLeadingAndTrailingWhitespace","Whether leading and trailing whitespace should always be selected."),default:!0,type:"boolean"}})}return(0,s.Z)(n,[{key:"validate",value:function(e){return e&&"object"===typeof e?{selectLeadingAndTrailingWhitespace:_(e.selectLeadingAndTrailingWhitespace,this.defaultValue.selectLeadingAndTrailingWhitespace)}:this.defaultValue}}]),n}(g),ee=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,126,[77])}return(0,s.Z)(n,[{key:"compute",value:function(e,t,n){return!!t.get(77)||e.tabFocusMode}}]),n}(v);var te=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(){return(0,a.Z)(this,n),t.call(this,128,[127])}return(0,s.Z)(n,[{key:"compute",value:function(e,t,n){var i=t.get(127);return{isDominatedByLongLines:e.isDominatedByLongLines,isWordWrapMinified:i.isWordWrapMinified,isViewportWrapping:i.isViewportWrapping,wrappingColumn:i.wrappingColumn}}}]),n}(v),ne={fontFamily:l.dz?"Menlo, Monaco, 'Courier New', monospace":l.IJ?"'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback'":"Consolas, 'Courier New', monospace",fontWeight:"normal",fontSize:l.dz?12:14,lineHeight:0,letterSpacing:0},ie={tabSize:4,indentSize:4,insertSpaces:!0,detectIndentation:!0,trimAutoWhitespace:!0,largeFileOptimizations:!0},re=[];function oe(e){return re[e.id]=e,e}var ae={acceptSuggestionOnCommitCharacter:oe(new y(0,"acceptSuggestionOnCommitCharacter",!0,{markdownDescription:u.N("acceptSuggestionOnCommitCharacter","Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.")})),acceptSuggestionOnEnter:oe(new S(1,"acceptSuggestionOnEnter","on",["on","smart","off"],{markdownEnumDescriptions:["",u.N("acceptSuggestionOnEnterSmart","Only accept a suggestion with `Enter` when it makes a textual change."),""],markdownDescription:u.N("acceptSuggestionOnEnter","Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.")})),accessibilitySupport:oe(new E),accessibilityPageSize:oe(new b(3,"accessibilityPageSize",10,1,1073741824,{description:u.N("accessibilityPageSize","Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default.")})),ariaLabel:oe(new C(4,"ariaLabel",u.N("editorViewAccessibleLabel","Editor content"))),autoClosingBrackets:oe(new S(5,"autoClosingBrackets","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",u.N("editor.autoClosingBrackets.languageDefined","Use language configurations to determine when to autoclose brackets."),u.N("editor.autoClosingBrackets.beforeWhitespace","Autoclose brackets only when the cursor is to the left of whitespace."),""],description:u.N("autoClosingBrackets","Controls whether the editor should automatically close brackets after the user adds an opening bracket.")})),autoClosingDelete:oe(new S(6,"autoClosingDelete","auto",["always","auto","never"],{enumDescriptions:["",u.N("editor.autoClosingDelete.auto","Remove adjacent closing quotes or brackets only if they were automatically inserted."),""],description:u.N("autoClosingDelete","Controls whether the editor should remove adjacent closing quotes or brackets when deleting.")})),autoClosingOvertype:oe(new S(7,"autoClosingOvertype","auto",["always","auto","never"],{enumDescriptions:["",u.N("editor.autoClosingOvertype.auto","Type over closing quotes or brackets only if they were automatically inserted."),""],description:u.N("autoClosingOvertype","Controls whether the editor should type over closing quotes or brackets.")})),autoClosingQuotes:oe(new S(8,"autoClosingQuotes","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",u.N("editor.autoClosingQuotes.languageDefined","Use language configurations to determine when to autoclose quotes."),u.N("editor.autoClosingQuotes.beforeWhitespace","Autoclose quotes only when the cursor is to the left of whitespace."),""],description:u.N("autoClosingQuotes","Controls whether the editor should automatically close quotes after the user adds an opening quote.")})),autoIndent:oe(new x(9,"autoIndent",4,"full",["none","keep","brackets","advanced","full"],(function(e){switch(e){case"none":return 0;case"keep":return 1;case"brackets":return 2;case"advanced":return 3;case"full":return 4}}),{enumDescriptions:[u.N("editor.autoIndent.none","The editor will not insert indentation automatically."),u.N("editor.autoIndent.keep","The editor will keep the current line's indentation."),u.N("editor.autoIndent.brackets","The editor will keep the current line's indentation and honor language defined brackets."),u.N("editor.autoIndent.advanced","The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages."),u.N("editor.autoIndent.full","The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.")],description:u.N("autoIndent","Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.")})),automaticLayout:oe(new y(10,"automaticLayout",!1)),autoSurround:oe(new S(11,"autoSurround","languageDefined",["languageDefined","quotes","brackets","never"],{enumDescriptions:[u.N("editor.autoSurround.languageDefined","Use language configurations to determine when to automatically surround selections."),u.N("editor.autoSurround.quotes","Surround with quotes but not brackets."),u.N("editor.autoSurround.brackets","Surround with brackets but not quotes."),""],description:u.N("autoSurround","Controls whether the editor should automatically surround selections when typing quotes or brackets.")})),stickyTabStops:oe(new y(101,"stickyTabStops",!1,{description:u.N("stickyTabStops","Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.")})),codeLens:oe(new y(12,"codeLens",!0,{description:u.N("codeLens","Controls whether the editor shows CodeLens.")})),codeLensFontFamily:oe(new C(13,"codeLensFontFamily","",{description:u.N("codeLensFontFamily","Controls the font family for CodeLens.")})),codeLensFontSize:oe(new b(14,"codeLensFontSize",0,0,100,{type:"number",default:0,minimum:0,maximum:100,description:u.N("codeLensFontSize","Controls the font size in pixels for CodeLens. When set to `0`, the 90% of `#editor.fontSize#` is used.")})),colorDecorators:oe(new y(15,"colorDecorators",!0,{description:u.N("colorDecorators","Controls whether the editor should render the inline color decorators and color picker.")})),columnSelection:oe(new y(16,"columnSelection",!1,{description:u.N("columnSelection","Enable that the selection with the mouse and keys is doing column selection.")})),comments:oe(new D),contextmenu:oe(new y(18,"contextmenu",!0)),copyWithSyntaxHighlighting:oe(new y(19,"copyWithSyntaxHighlighting",!0,{description:u.N("copyWithSyntaxHighlighting","Controls whether syntax highlighting should be copied into the clipboard.")})),cursorBlinking:oe(new x(20,"cursorBlinking",1,"blink",["blink","smooth","phase","expand","solid"],(function(e){switch(e){case"blink":return 1;case"smooth":return 2;case"phase":return 3;case"expand":return 4;case"solid":return 5}}),{description:u.N("cursorBlinking","Control the cursor animation style.")})),cursorSmoothCaretAnimation:oe(new y(21,"cursorSmoothCaretAnimation",!1,{description:u.N("cursorSmoothCaretAnimation","Controls whether the smooth caret animation should be enabled.")})),cursorStyle:oe(new x(22,"cursorStyle",L.Line,"line",["line","block","underline","line-thin","block-outline","underline-thin"],(function(e){switch(e){case"line":return L.Line;case"block":return L.Block;case"underline":return L.Underline;case"line-thin":return L.LineThin;case"block-outline":return L.BlockOutline;case"underline-thin":return L.UnderlineThin}}),{description:u.N("cursorStyle","Controls the cursor style.")})),cursorSurroundingLines:oe(new b(23,"cursorSurroundingLines",0,0,1073741824,{description:u.N("cursorSurroundingLines","Controls the minimal number of visible leading and trailing lines surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.")})),cursorSurroundingLinesStyle:oe(new S(24,"cursorSurroundingLinesStyle","default",["default","all"],{enumDescriptions:[u.N("cursorSurroundingLinesStyle.default","`cursorSurroundingLines` is enforced only when triggered via the keyboard or API."),u.N("cursorSurroundingLinesStyle.all","`cursorSurroundingLines` is enforced always.")],description:u.N("cursorSurroundingLinesStyle","Controls when `cursorSurroundingLines` should be enforced.")})),cursorWidth:oe(new b(25,"cursorWidth",0,0,1073741824,{markdownDescription:u.N("cursorWidth","Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.")})),disableLayerHinting:oe(new y(26,"disableLayerHinting",!1)),disableMonospaceOptimizations:oe(new y(27,"disableMonospaceOptimizations",!1)),domReadOnly:oe(new y(28,"domReadOnly",!1)),dragAndDrop:oe(new y(29,"dragAndDrop",!0,{description:u.N("dragAndDrop","Controls whether the editor should allow moving selections via drag and drop.")})),emptySelectionClipboard:oe(new M),extraEditorClassName:oe(new C(31,"extraEditorClassName","")),fastScrollSensitivity:oe(new w(32,"fastScrollSensitivity",5,(function(e){return e<=0?5:e}),{markdownDescription:u.N("fastScrollSensitivity","Scrolling speed multiplier when pressing `Alt`.")})),find:oe(new T),fixedOverflowWidgets:oe(new y(34,"fixedOverflowWidgets",!1)),folding:oe(new y(35,"folding",!0,{description:u.N("folding","Controls whether the editor has code folding enabled.")})),foldingStrategy:oe(new S(36,"foldingStrategy","auto",["auto","indentation"],{enumDescriptions:[u.N("foldingStrategy.auto","Use a language-specific folding strategy if available, else the indentation-based one."),u.N("foldingStrategy.indentation","Use the indentation-based folding strategy.")],description:u.N("foldingStrategy","Controls the strategy for computing folding ranges.")})),foldingHighlight:oe(new y(37,"foldingHighlight",!0,{description:u.N("foldingHighlight","Controls whether the editor should highlight folded ranges.")})),unfoldOnClickAfterEndOfLine:oe(new y(38,"unfoldOnClickAfterEndOfLine",!1,{description:u.N("unfoldOnClickAfterEndOfLine","Controls whether clicking on the empty content after a folded line will unfold the line.")})),fontFamily:oe(new C(39,"fontFamily",ne.fontFamily,{description:u.N("fontFamily","Controls the font family.")})),fontInfo:oe(new O),fontLigatures2:oe(new I),fontSize:oe(new A),fontWeight:oe(new R),formatOnPaste:oe(new y(44,"formatOnPaste",!1,{description:u.N("formatOnPaste","Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.")})),formatOnType:oe(new y(45,"formatOnType",!1,{description:u.N("formatOnType","Controls whether the editor should automatically format the line after typing.")})),glyphMargin:oe(new y(46,"glyphMargin",!0,{description:u.N("glyphMargin","Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.")})),gotoLocation:oe(new P),hideCursorInOverviewRuler:oe(new y(48,"hideCursorInOverviewRuler",!1,{description:u.N("hideCursorInOverviewRuler","Controls whether the cursor should be hidden in the overview ruler.")})),highlightActiveIndentGuide:oe(new y(49,"highlightActiveIndentGuide",!0,{description:u.N("highlightActiveIndentGuide","Controls whether the editor should highlight the active indent guide.")})),hover:oe(new Z),inDiffEditor:oe(new y(51,"inDiffEditor",!1)),letterSpacing:oe(new w(52,"letterSpacing",ne.letterSpacing,(function(e){return w.clamp(e,-5,20)}),{description:u.N("letterSpacing","Controls the letter spacing in pixels.")})),lightbulb:oe(new j),lineDecorationsWidth:oe(new m(54,"lineDecorationsWidth",10)),lineHeight:oe(new B),lineNumbers:oe(new K),lineNumbersMinChars:oe(new b(57,"lineNumbersMinChars",5,1,300)),linkedEditing:oe(new y(58,"linkedEditing",!1,{description:u.N("linkedEditing","Controls whether the editor has linked editing enabled. Depending on the language, related symbols, e.g. HTML tags, are updated while editing.")})),links:oe(new y(59,"links",!0,{description:u.N("links","Controls whether the editor should detect links and make them clickable.")})),matchBrackets:oe(new S(60,"matchBrackets","always",["always","near","never"],{description:u.N("matchBrackets","Highlight matching brackets.")})),minimap:oe(new z),mouseStyle:oe(new S(62,"mouseStyle","text",["text","default","copy"])),mouseWheelScrollSensitivity:oe(new w(63,"mouseWheelScrollSensitivity",1,(function(e){return 0===e?1:e}),{markdownDescription:u.N("mouseWheelScrollSensitivity","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")})),mouseWheelZoom:oe(new y(64,"mouseWheelZoom",!1,{markdownDescription:u.N("mouseWheelZoom","Zoom the font of the editor when using mouse wheel and holding `Ctrl`.")})),multiCursorMergeOverlapping:oe(new y(65,"multiCursorMergeOverlapping",!0,{description:u.N("multiCursorMergeOverlapping","Merge multiple cursors when they are overlapping.")})),multiCursorModifier:oe(new x(66,"multiCursorModifier","altKey","alt",["ctrlCmd","alt"],(function(e){return"ctrlCmd"===e?l.dz?"metaKey":"ctrlKey":"altKey"}),{markdownEnumDescriptions:[u.N("multiCursorModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),u.N("multiCursorModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],markdownDescription:u.N({key:"multiCursorModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add multiple cursors with the mouse. The Go To Definition and Open Link mouse gestures will adapt such that they do not conflict with the multicursor modifier. [Read more](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).")})),multiCursorPaste:oe(new S(67,"multiCursorPaste","spread",["spread","full"],{markdownEnumDescriptions:[u.N("multiCursorPaste.spread","Each cursor pastes a single line of the text."),u.N("multiCursorPaste.full","Each cursor pastes the full text.")],markdownDescription:u.N("multiCursorPaste","Controls pasting when the line count of the pasted text matches the cursor count.")})),occurrencesHighlight:oe(new y(68,"occurrencesHighlight",!0,{description:u.N("occurrencesHighlight","Controls whether the editor should highlight semantic symbol occurrences.")})),overviewRulerBorder:oe(new y(69,"overviewRulerBorder",!0,{description:u.N("overviewRulerBorder","Controls whether a border should be drawn around the overview ruler.")})),overviewRulerLanes:oe(new b(70,"overviewRulerLanes",3,0,3)),padding:oe(new W),parameterHints:oe(new V),peekWidgetDefaultFocus:oe(new S(73,"peekWidgetDefaultFocus","tree",["tree","editor"],{enumDescriptions:[u.N("peekWidgetDefaultFocus.tree","Focus the tree when opening peek"),u.N("peekWidgetDefaultFocus.editor","Focus the editor when opening peek")],description:u.N("peekWidgetDefaultFocus","Controls whether to focus the inline editor or the tree in the peek widget.")})),definitionLinkOpensInPeek:oe(new y(74,"definitionLinkOpensInPeek",!1,{description:u.N("definitionLinkOpensInPeek","Controls whether the Go to Definition mouse gesture always opens the peek widget.")})),quickSuggestions:oe(new U),quickSuggestionsDelay:oe(new b(76,"quickSuggestionsDelay",10,0,1073741824,{description:u.N("quickSuggestionsDelay","Controls the delay in milliseconds after which quick suggestions will show up.")})),readOnly:oe(new y(77,"readOnly",!1)),renameOnType:oe(new y(78,"renameOnType",!1,{description:u.N("renameOnType","Controls whether the editor auto renames on type."),markdownDeprecationMessage:u.N("renameOnTypeDeprecate","Deprecated, use `editor.linkedEditing` instead.")})),renderControlCharacters:oe(new y(79,"renderControlCharacters",!1,{description:u.N("renderControlCharacters","Controls whether the editor should render control characters.")})),renderIndentGuides:oe(new y(80,"renderIndentGuides",!0,{description:u.N("renderIndentGuides","Controls whether the editor should render indent guides.")})),renderFinalNewline:oe(new y(81,"renderFinalNewline",!0,{description:u.N("renderFinalNewline","Render last line number when the file ends with a newline.")})),renderLineHighlight:oe(new S(82,"renderLineHighlight","line",["none","gutter","line","all"],{enumDescriptions:["","","",u.N("renderLineHighlight.all","Highlights both the gutter and the current line.")],description:u.N("renderLineHighlight","Controls how the editor should render the current line highlight.")})),renderLineHighlightOnlyWhenFocus:oe(new y(83,"renderLineHighlightOnlyWhenFocus",!1,{description:u.N("renderLineHighlightOnlyWhenFocus","Controls if the editor should render the current line highlight only when the editor is focused.")})),renderValidationDecorations:oe(new S(84,"renderValidationDecorations","editable",["editable","on","off"])),renderWhitespace:oe(new S(85,"renderWhitespace","selection",["none","boundary","selection","trailing","all"],{enumDescriptions:["",u.N("renderWhitespace.boundary","Render whitespace characters except for single spaces between words."),u.N("renderWhitespace.selection","Render whitespace characters only on selected text."),u.N("renderWhitespace.trailing","Render only trailing whitespace characters."),""],description:u.N("renderWhitespace","Controls how the editor should render whitespace characters.")})),revealHorizontalRightPadding:oe(new b(86,"revealHorizontalRightPadding",30,0,1e3)),roundedSelection:oe(new y(87,"roundedSelection",!0,{description:u.N("roundedSelection","Controls whether selections should have rounded corners.")})),rulers:oe(new G),scrollbar:oe(new Q),scrollBeyondLastColumn:oe(new b(90,"scrollBeyondLastColumn",5,0,1073741824,{description:u.N("scrollBeyondLastColumn","Controls the number of extra characters beyond which the editor will scroll horizontally.")})),scrollBeyondLastLine:oe(new y(91,"scrollBeyondLastLine",!0,{description:u.N("scrollBeyondLastLine","Controls whether the editor will scroll beyond the last line.")})),scrollPredominantAxis:oe(new y(92,"scrollPredominantAxis",!0,{description:u.N("scrollPredominantAxis","Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.")})),selectionClipboard:oe(new y(93,"selectionClipboard",!0,{description:u.N("selectionClipboard","Controls whether the Linux primary clipboard should be supported."),included:l.IJ})),selectionHighlight:oe(new y(94,"selectionHighlight",!0,{description:u.N("selectionHighlight","Controls whether the editor should highlight matches similar to the selection.")})),selectOnLineNumbers:oe(new y(95,"selectOnLineNumbers",!0)),showFoldingControls:oe(new S(96,"showFoldingControls","mouseover",["always","mouseover"],{enumDescriptions:[u.N("showFoldingControls.always","Always show the folding controls."),u.N("showFoldingControls.mouseover","Only show the folding controls when the mouse is over the gutter.")],description:u.N("showFoldingControls","Controls when the folding controls on the gutter are shown.")})),showUnused:oe(new y(97,"showUnused",!0,{description:u.N("showUnused","Controls fading out of unused code.")})),showDeprecated:oe(new y(122,"showDeprecated",!0,{description:u.N("showDeprecated","Controls strikethrough deprecated variables.")})),inlineHints:oe(new H),snippetSuggestions:oe(new S(98,"snippetSuggestions","inline",["top","bottom","inline","none"],{enumDescriptions:[u.N("snippetSuggestions.top","Show snippet suggestions on top of other suggestions."),u.N("snippetSuggestions.bottom","Show snippet suggestions below other suggestions."),u.N("snippetSuggestions.inline","Show snippets suggestions with other suggestions."),u.N("snippetSuggestions.none","Do not show snippet suggestions.")],description:u.N("snippetSuggestions","Controls whether snippets are shown with other suggestions and how they are sorted.")})),smartSelect:oe(new J),smoothScrolling:oe(new y(100,"smoothScrolling",!1,{description:u.N("smoothScrolling","Controls whether the editor will scroll using an animation.")})),stopRenderingLineAfter:oe(new b(102,"stopRenderingLineAfter",1e4,-1,1073741824)),suggest:oe(new X),suggestFontSize:oe(new b(104,"suggestFontSize",0,0,1e3,{markdownDescription:u.N("suggestFontSize","Font size for the suggest widget. When set to `0`, the value of `#editor.fontSize#` is used.")})),suggestLineHeight:oe(new b(105,"suggestLineHeight",0,0,1e3,{markdownDescription:u.N("suggestLineHeight","Line height for the suggest widget. When set to `0`, the value of `#editor.lineHeight#` is used. The minimum value is 8.")})),suggestOnTriggerCharacters:oe(new y(106,"suggestOnTriggerCharacters",!0,{description:u.N("suggestOnTriggerCharacters","Controls whether suggestions should automatically show up when typing trigger characters.")})),suggestSelection:oe(new S(107,"suggestSelection","recentlyUsed",["first","recentlyUsed","recentlyUsedByPrefix"],{markdownEnumDescriptions:[u.N("suggestSelection.first","Always select the first suggestion."),u.N("suggestSelection.recentlyUsed","Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently."),u.N("suggestSelection.recentlyUsedByPrefix","Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.")],description:u.N("suggestSelection","Controls how suggestions are pre-selected when showing the suggest list.")})),tabCompletion:oe(new S(108,"tabCompletion","off",["on","off","onlySnippets"],{enumDescriptions:[u.N("tabCompletion.on","Tab complete will insert the best matching suggestion when pressing tab."),u.N("tabCompletion.off","Disable tab completions."),u.N("tabCompletion.onlySnippets","Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.")],description:u.N("tabCompletion","Enables tab completions.")})),tabIndex:oe(new b(109,"tabIndex",0,-1,1073741824)),unusualLineTerminators:oe(new S(110,"unusualLineTerminators","prompt",["auto","off","prompt"],{enumDescriptions:[u.N("unusualLineTerminators.auto","Unusual line terminators are automatically removed."),u.N("unusualLineTerminators.off","Unusual line terminators are ignored."),u.N("unusualLineTerminators.prompt","Unusual line terminators prompt to be removed.")],description:u.N("unusualLineTerminators","Remove unusual line terminators that might cause problems.")})),useShadowDOM:oe(new y(111,"useShadowDOM",!0)),useTabStops:oe(new y(112,"useTabStops",!0,{description:u.N("useTabStops","Inserting and deleting whitespace follows tab stops.")})),wordSeparators:oe(new C(113,"wordSeparators",c.vu,{description:u.N("wordSeparators","Characters that will be used as word separators when doing word related navigations or operations.")})),wordWrap:oe(new S(114,"wordWrap","off",["off","on","wordWrapColumn","bounded"],{markdownEnumDescriptions:[u.N("wordWrap.off","Lines will never wrap."),u.N("wordWrap.on","Lines will wrap at the viewport width."),u.N({key:"wordWrap.wordWrapColumn",comment:["- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at `#editor.wordWrapColumn#`."),u.N({key:"wordWrap.bounded",comment:["- viewport means the edge of the visible window size.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.")],description:u.N({key:"wordWrap",comment:["- 'off', 'on', 'wordWrapColumn' and 'bounded' refer to values the setting can take and should not be localized.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Controls how lines should wrap.")})),wordWrapBreakAfterCharacters:oe(new C(115,"wordWrapBreakAfterCharacters"," \t})]?|/&.,;\xa2\xb0\u2032\u2033\u2030\u2103\u3001\u3002\uff61\uff64\uffe0\uff0c\uff0e\uff1a\uff1b\uff1f\uff01\uff05\u30fb\uff65\u309d\u309e\u30fd\u30fe\u30fc\u30a1\u30a3\u30a5\u30a7\u30a9\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u3041\u3043\u3045\u3047\u3049\u3063\u3083\u3085\u3087\u308e\u3095\u3096\u31f0\u31f1\u31f2\u31f3\u31f4\u31f5\u31f6\u31f7\u31f8\u31f9\u31fa\u31fb\u31fc\u31fd\u31fe\u31ff\u3005\u303b\uff67\uff68\uff69\uff6a\uff6b\uff6c\uff6d\uff6e\uff6f\uff70\u201d\u3009\u300b\u300d\u300f\u3011\u3015\uff09\uff3d\uff5d\uff63")),wordWrapBreakBeforeCharacters:oe(new C(116,"wordWrapBreakBeforeCharacters","([{\u2018\u201c\u3008\u300a\u300c\u300e\u3010\u3014\uff08\uff3b\uff5b\uff62\xa3\xa5\uff04\uffe1\uffe5+\uff0b")),wordWrapColumn:oe(new b(117,"wordWrapColumn",80,1,1073741824,{markdownDescription:u.N({key:"wordWrapColumn",comment:["- `editor.wordWrap` refers to a different setting and should not be localized.","- 'wordWrapColumn' and 'bounded' refer to values the different setting can take and should not be localized."]},"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.")})),wordWrapOverride1:oe(new S(118,"wordWrapOverride1","inherit",["off","on","inherit"])),wordWrapOverride2:oe(new S(119,"wordWrapOverride2","inherit",["off","on","inherit"])),wrappingIndent:oe(new x(120,"wrappingIndent",1,"same",["none","same","indent","deepIndent"],(function(e){switch(e){case"none":return 0;case"same":return 1;case"indent":return 2;case"deepIndent":return 3}}),{enumDescriptions:[u.N("wrappingIndent.none","No indentation. Wrapped lines begin at column 1."),u.N("wrappingIndent.same","Wrapped lines get the same indentation as the parent."),u.N("wrappingIndent.indent","Wrapped lines get +1 indentation toward the parent."),u.N("wrappingIndent.deepIndent","Wrapped lines get +2 indentation toward the parent.")],description:u.N("wrappingIndent","Controls the indentation of wrapped lines.")})),wrappingStrategy:oe(new S(121,"wrappingStrategy","simple",["simple","advanced"],{enumDescriptions:[u.N("wrappingStrategy.simple","Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width."),u.N("wrappingStrategy.advanced","Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.")],description:u.N("wrappingStrategy","Controls the algorithm that computes wrapping points.")})),editorClassName:oe(new N),pixelRatio:oe(new Y),tabFocusMode:oe(new ee),layoutInfo:oe(new F),wrappingInfo:oe(new te)}},51164:function(e,t,n){"use strict";n.d(t,{C:function(){return a}});var i=n(15671),r=n(43144),o=n(11732),a=new(function(){function e(){(0,i.Z)(this,e),this._zoomLevel=0,this._onDidChangeZoomLevel=new o.Q5,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event}return(0,r.Z)(e,[{key:"getZoomLevel",value:function(){return this._zoomLevel}},{key:"setZoomLevel",value:function(e){e=Math.min(Math.max(-5,e),20),this._zoomLevel!==e&&(this._zoomLevel=e,this._onDidChangeZoomLevel.fire(this._zoomLevel))}}]),e}())},28702:function(e,t,n){"use strict";n.d(t,{E4:function(){return c},pR:function(){return h}});var i=n(60136),r=n(43668),o=n(15671),a=n(43144),s=n(30487),u=n(51164),l=s.dz?1.5:1.35,c=function(){function e(t){(0,o.Z)(this,e),this.zoomLevel=t.zoomLevel,this.pixelRatio=t.pixelRatio,this.fontFamily=String(t.fontFamily),this.fontWeight=String(t.fontWeight),this.fontSize=t.fontSize,this.fontFeatureSettings=t.fontFeatureSettings,this.lineHeight=0|t.lineHeight,this.letterSpacing=t.letterSpacing}return(0,a.Z)(e,[{key:"getId",value:function(){return this.zoomLevel+"-"+this.pixelRatio+"-"+this.fontFamily+"-"+this.fontWeight+"-"+this.fontSize+"-"+this.fontFeatureSettings+"-"+this.lineHeight+"-"+this.letterSpacing}},{key:"getMassagedFontFamily",value:function(){return/[,"']/.test(this.fontFamily)?this.fontFamily:/[+ ]/.test(this.fontFamily)?'"'.concat(this.fontFamily,'"'):this.fontFamily}}],[{key:"createFromValidatedSettings",value:function(t,n,i,r){var o=t.get(39),a=t.get(43),s=t.get(42),u=t.get(41),l=t.get(55),c=t.get(52);return e._create(o,a,s,u,l,c,n,i,r)}},{key:"_create",value:function(t,n,i,r,o,a,s,c,d){0===o?o=Math.round(l*i):o<8&&(o=8);var h=1+(d?0:.1*u.C.getZoomLevel());return new e({zoomLevel:s,pixelRatio:c,fontFamily:t,fontWeight:n,fontSize:i*=h,fontFeatureSettings:r,lineHeight:o*=h,letterSpacing:a})}}]),e}(),d=1,h=function(e){(0,i.Z)(n,e);var t=(0,r.Z)(n);function n(e,i){var r;return(0,o.Z)(this,n),(r=t.call(this,e)).version=d,r.isTrusted=i,r.isMonospace=e.isMonospace,r.typicalHalfwidthCharacterWidth=e.typicalHalfwidthCharacterWidth,r.typicalFullwidthCharacterWidth=e.typicalFullwidthCharacterWidth,r.canUseHalfwidthRightwardsArrow=e.canUseHalfwidthRightwardsArrow,r.spaceWidth=e.spaceWidth,r.middotWidth=e.middotWidth,r.wsmiddotWidth=e.wsmiddotWidth,r.maxDigitWidth=e.maxDigitWidth,r}return(0,a.Z)(n,[{key:"equals",value:function(e){return this.fontFamily===e.fontFamily&&this.fontWeight===e.fontWeight&&this.fontSize===e.fontSize&&this.fontFeatureSettings===e.fontFeatureSettings&&this.lineHeight===e.lineHeight&&this.letterSpacing===e.letterSpacing&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.typicalFullwidthCharacterWidth===e.typicalFullwidthCharacterWidth&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.maxDigitWidth===e.maxDigitWidth}}]),n}(c)},86036:function(e,t,n){"use strict";n.d(t,{l:function(){return s}});var i=n(29439),r=n(15671),o=n(43144),a=n(16274),s=function(){function e(){(0,r.Z)(this,e)}return(0,o.Z)(e,null,[{key:"whitespaceVisibleColumn",value:function(e,t,n){for(var i=e.length,r=0,o=-1,s=-1,u=0;u<i;u++){if(u===t)return[o,s,r];switch(r%n===0&&(o=u,s=r),e.charCodeAt(u)){case 32:r+=1;break;case 9:r=a.io.nextRenderTabStop(r,n);break;default:return[-1,-1,-1]}}return t===i?[o,s,r]:[-1,-1,-1]}},{key:"atomicPosition",value:function(t,n,r,o){var s,u=t.length,l=e.whitespaceVisibleColumn(t,n,r),c=(0,i.Z)(l,3),d=c[0],h=c[1],f=c[2];if(-1===f)return-1;switch(o){case 0:s=!0;break;case 1:s=!1;break;case 2:if(f%r===0)return n;s=f%r<=r/2}if(s){if(-1===d)return-1;for(var p=h,g=d;g<u;++g){if(p===h+r)return d;switch(t.charCodeAt(g)){case 32:p+=1;break;case 9:p=a.io.nextRenderTabStop(p,r);break;default:return-1}}return p===h+r?d:-1}for(var v=a.io.nextRenderTabStop(f,r),m=f,_=n;_<u;_++){if(m===v)return _;switch(t.charCodeAt(_)){case 32:m+=1;break;case 9:m=a.io.nextRenderTabStop(m,r);break;default:return-1}}return m===v?u:-1}}]),e}()},16274:function(e,t,n){"use strict";n.d(t,{LM:function(){return v},LN:function(){return S},Tp:function(){return C},Vi:function(){return w},io:function(){return k},rS:function(){return m},zp:function(){return _}});var i=n(37762),r=n(15671),o=n(43144),a=n(8729),s=n(51747),u=n(67297),l=n(67033),c=n(74964),d=n(28893),h=n(65262),f=function(){return!0},p=function(){return!1},g=function(e){return" "===e||"\t"===e},v=function(){function e(t,n,o){(0,r.Z)(this,e),this._languageIdentifier=t;var a=o.options,s=a.get(127);this.readOnly=a.get(77),this.tabSize=n.tabSize,this.indentSize=n.indentSize,this.insertSpaces=n.insertSpaces,this.stickyTabStops=a.get(101),this.lineHeight=a.get(55),this.pageSize=Math.max(1,Math.floor(s.height/this.lineHeight)-2),this.useTabStops=a.get(112),this.wordSeparators=a.get(113),this.emptySelectionClipboard=a.get(30),this.copyWithSyntaxHighlighting=a.get(19),this.multiCursorMergeOverlapping=a.get(65),this.multiCursorPaste=a.get(67),this.autoClosingBrackets=a.get(5),this.autoClosingQuotes=a.get(8),this.autoClosingDelete=a.get(6),this.autoClosingOvertype=a.get(7),this.autoSurround=a.get(11),this.autoIndent=a.get(9),this.surroundingPairs={},this._electricChars=null,this.shouldAutoCloseBefore={quote:e._getShouldAutoClose(t,this.autoClosingQuotes),bracket:e._getShouldAutoClose(t,this.autoClosingBrackets)},this.autoClosingPairs=h.zu.getAutoClosingPairs(t.id);var u=e._getSurroundingPairs(t);if(u){var l,c=(0,i.Z)(u);try{for(c.s();!(l=c.n()).done;){var d=l.value;this.surroundingPairs[d.open]=d.close}}catch(f){c.e(f)}finally{c.f()}}}return(0,o.Z)(e,[{key:"electricChars",get:function(){if(!this._electricChars){this._electricChars={};var t=e._getElectricCharacters(this._languageIdentifier);if(t){var n,r=(0,i.Z)(t);try{for(r.s();!(n=r.n()).done;){var o=n.value;this._electricChars[o]=!0}}catch(a){r.e(a)}finally{r.f()}}}return this._electricChars}},{key:"normalizeIndentation",value:function(e){return d.yO.normalizeIndentation(e,this.indentSize,this.insertSpaces)}}],[{key:"shouldRecreate",value:function(e){return e.hasChanged(127)||e.hasChanged(113)||e.hasChanged(30)||e.hasChanged(65)||e.hasChanged(67)||e.hasChanged(5)||e.hasChanged(8)||e.hasChanged(6)||e.hasChanged(7)||e.hasChanged(11)||e.hasChanged(112)||e.hasChanged(55)||e.hasChanged(77)}},{key:"_getElectricCharacters",value:function(e){try{return h.zu.getElectricCharacters(e.id)}catch(t){return(0,a.dL)(t),null}}},{key:"_getShouldAutoClose",value:function(t,n){switch(n){case"beforeWhitespace":return g;case"languageDefined":return e._getLanguageDefinedShouldAutoClose(t);case"always":return f;case"never":return p}}},{key:"_getLanguageDefinedShouldAutoClose",value:function(e){try{var t=h.zu.getAutoCloseBeforeSet(e.id);return function(e){return-1!==t.indexOf(e)}}catch(n){return(0,a.dL)(n),p}}},{key:"_getSurroundingPairs",value:function(e){try{return h.zu.getSurroundingPairs(e.id)}catch(t){return(0,a.dL)(t),null}}}]),e}(),m=function(){function e(t,n,i,o){(0,r.Z)(this,e),this.selectionStart=t,this.selectionStartLeftoverVisibleColumns=n,this.position=i,this.leftoverVisibleColumns=o,this.selection=e._computeSelection(this.selectionStart,this.position)}return(0,o.Z)(e,[{key:"equals",value:function(e){return this.selectionStartLeftoverVisibleColumns===e.selectionStartLeftoverVisibleColumns&&this.leftoverVisibleColumns===e.leftoverVisibleColumns&&this.position.equals(e.position)&&this.selectionStart.equalsRange(e.selectionStart)}},{key:"hasSelection",value:function(){return!this.selection.isEmpty()||!this.selectionStart.isEmpty()}},{key:"move",value:function(t,n,i,r){return t?new e(this.selectionStart,this.selectionStartLeftoverVisibleColumns,new u.L(n,i),r):new e(new l.e(n,i,n,i),r,new u.L(n,i),r)}}],[{key:"_computeSelection",value:function(e,t){var n,i,r,o;return e.isEmpty()?(n=e.startLineNumber,i=e.startColumn,r=t.lineNumber,o=t.column):t.isBeforeOrEqual(e.getStartPosition())?(n=e.endLineNumber,i=e.endColumn,r=t.lineNumber,o=t.column):(n=e.startLineNumber,i=e.startColumn,r=t.lineNumber,o=t.column),new c.Y(n,i,r,o)}}]),e}(),_=(0,o.Z)((function e(t,n,i){(0,r.Z)(this,e),this.model=t,this.coordinatesConverter=n,this.cursorConfig=i})),y=(0,o.Z)((function e(t){(0,r.Z)(this,e),this.modelState=t,this.viewState=null})),b=(0,o.Z)((function e(t){(0,r.Z)(this,e),this.modelState=null,this.viewState=t})),w=function(){function e(t,n){(0,r.Z)(this,e),this.modelState=t,this.viewState=n}return(0,o.Z)(e,[{key:"equals",value:function(e){return this.viewState.equals(e.viewState)&&this.modelState.equals(e.modelState)}}],[{key:"fromModelState",value:function(e){return new y(e)}},{key:"fromViewState",value:function(e){return new b(e)}},{key:"fromModelSelection",value:function(t){var n=t.selectionStartLineNumber,i=t.selectionStartColumn,r=t.positionLineNumber,o=t.positionColumn,a=new m(new l.e(n,i,n,i),0,new u.L(r,o),0);return e.fromModelState(a)}},{key:"fromModelSelections",value:function(e){for(var t=[],n=0,i=e.length;n<i;n++)t[n]=this.fromModelSelection(e[n]);return t}}]),e}(),C=(0,o.Z)((function e(t,n,i){(0,r.Z)(this,e),this.type=t,this.commands=n,this.shouldPushStackElementBefore=i.shouldPushStackElementBefore,this.shouldPushStackElementAfter=i.shouldPushStackElementAfter})),k=function(){function e(){(0,r.Z)(this,e)}return(0,o.Z)(e,null,[{key:"visibleColumnFromColumn",value:function(t,n,i){for(var r=t.length,o=n-1<r?n-1:r,a=0,u=0;u<o;){var l=s.ZH(t,o,u);if(u+=l>=65536?2:1,9===l)a=e.nextRenderTabStop(a,i);else{for(var c=s.S6(l);u<o;){var d=s.ZH(t,o,u),h=s.S6(d);if(s.fi(c,h))break;u+=d>=65536?2:1,c=h}s.K7(l)||s.C8(l)?a+=2:a+=1}}return a}},{key:"visibleColumnFromColumn2",value:function(e,t,n){return this.visibleColumnFromColumn(t.getLineContent(n.lineNumber),n.column,e.tabSize)}},{key:"columnFromVisibleColumn",value:function(t,n,i){if(n<=0)return 1;for(var r=t.length,o=0,a=1,u=0;u<r;){var l=s.ZH(t,r,u);u+=l>=65536?2:1;var c=void 0;if(9===l)c=e.nextRenderTabStop(o,i);else{for(var d=s.S6(l);u<r;){var h=s.ZH(t,r,u),f=s.S6(h);if(s.fi(d,f))break;u+=h>=65536?2:1,d=f}c=s.K7(l)||s.C8(l)?o+2:o+1}var p=u+1;if(c>=n)return c-n<n-o?p:a;o=c,a=p}return r+1}},{key:"columnFromVisibleColumn2",value:function(e,t,n,i){var r=this.columnFromVisibleColumn(t.getLineContent(n),i,e.tabSize),o=t.getLineMinColumn(n);if(r<o)return o;var a=t.getLineMaxColumn(n);return r>a?a:r}},{key:"nextRenderTabStop",value:function(e,t){return e+t-e%t}},{key:"nextIndentTabStop",value:function(e,t){return e+t-e%t}},{key:"prevRenderTabStop",value:function(e,t){return Math.max(0,e-1-(e-1)%t)}},{key:"prevIndentTabStop",value:function(e,t){return Math.max(0,e-1-(e-1)%t)}}]),e}();function S(e){return"'"===e||'"'===e||"`"===e}},39765:function(e,t,n){"use strict";n.d(t,{A:function(){return d}});var i=n(37762),r=n(15671),o=n(43144),a=n(51747),s=n(97033),u=n(16274),l=n(15432),c=n(67033),d=function(){function e(){(0,r.Z)(this,e)}return(0,o.Z)(e,null,[{key:"deleteRight",value:function(e,t,n,i){for(var r=[],o=3!==e,a=0,u=i.length;a<u;a++){var d=i[a],h=d;if(h.isEmpty()){var f=d.getPosition(),p=l.o.right(t,n,f.lineNumber,f.column);h=new c.e(p.lineNumber,p.column,f.lineNumber,f.column)}h.isEmpty()?r[a]=null:(h.startLineNumber!==h.endLineNumber&&(o=!0),r[a]=new s.T4(h,""))}return[o,r]}},{key:"isAutoClosingPairDelete",value:function(e,t,n,r,o,a,s){if("never"===t&&"never"===n)return!1;if("never"===e)return!1;for(var l=0,c=a.length;l<c;l++){var d=a[l],h=d.getPosition();if(!d.isEmpty())return!1;var f=o.getLineContent(h.lineNumber);if(h.column<2||h.column>=f.length+1)return!1;var p=f.charAt(h.column-2),g=r.get(p);if(!g)return!1;if((0,u.LN)(p)){if("never"===n)return!1}else if("never"===t)return!1;var v,m=f.charAt(h.column-1),_=!1,y=(0,i.Z)(g);try{for(y.s();!(v=y.n()).done;){var b=v.value;b.open===p&&b.close===m&&(_=!0)}}catch(x){y.e(x)}finally{y.f()}if(!_)return!1;if("auto"===e){for(var w=!1,C=0,k=s.length;C<k;C++){var S=s[C];if(h.lineNumber===S.startLineNumber&&h.column===S.startColumn){w=!0;break}}if(!w)return!1}}return!0}},{key:"_runAutoClosingPairDelete",value:function(e,t,n){for(var i=[],r=0,o=n.length;r<o;r++){var a=n[r].getPosition(),u=new c.e(a.lineNumber,a.column-1,a.lineNumber,a.column+1);i[r]=new s.T4(u,"")}return[!0,i]}},{key:"deleteLeft",value:function(e,t,n,i,r){if(this.isAutoClosingPairDelete(t.autoClosingDelete,t.autoClosingBrackets,t.autoClosingQuotes,t.autoClosingPairs.autoClosingPairsOpenByEnd,n,i,r))return this._runAutoClosingPairDelete(t,n,i);for(var o=[],d=2!==e,h=0,f=i.length;h<f;h++){var p=i[h],g=p;if(g.isEmpty()){var v=p.getPosition();if(t.useTabStops&&v.column>1){var m=n.getLineContent(v.lineNumber),_=a.LC(m),y=-1===_?m.length+1:_+1;if(v.column<=y){var b=u.io.visibleColumnFromColumn2(t,n,v),w=u.io.prevIndentTabStop(b,t.indentSize),C=u.io.columnFromVisibleColumn2(t,n,v.lineNumber,w);g=new c.e(v.lineNumber,C,v.lineNumber,v.column)}else g=new c.e(v.lineNumber,v.column-1,v.lineNumber,v.column)}else{var k=l.o.left(t,n,v.lineNumber,v.column);g=new c.e(k.lineNumber,k.column,v.lineNumber,v.column)}}g.isEmpty()?o[h]=null:(g.startLineNumber!==g.endLineNumber&&(d=!0),o[h]=new s.T4(g,""))}return[d,o]}},{key:"cut",value:function(e,t,n){for(var i=[],r=0,o=n.length;r<o;r++){var a=n[r];if(a.isEmpty())if(e.emptySelectionClipboard){var l=a.getPosition(),d=void 0,h=void 0,f=void 0,p=void 0;l.lineNumber<t.getLineCount()?(d=l.lineNumber,h=1,f=l.lineNumber+1,p=1):l.lineNumber>1?(d=l.lineNumber-1,h=t.getLineMaxColumn(l.lineNumber-1),f=l.lineNumber,p=t.getLineMaxColumn(l.lineNumber)):(d=l.lineNumber,h=1,f=l.lineNumber,p=t.getLineMaxColumn(l.lineNumber));var g=new c.e(d,h,f,p);g.isEmpty()?i[r]=null:i[r]=new s.T4(g,"")}else i[r]=null;else i[r]=new s.T4(a,"")}return new u.Tp(0,i,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}]),e}()},55561:function(e,t,n){"use strict";n.d(t,{N:function(){return i},P:function(){return h}});var i,r=n(15671),o=n(43144),a=n(25941),s=n(16274),u=n(15432),l=n(86441),c=n(67297),d=n(67033),h=function(){function e(){(0,r.Z)(this,e)}return(0,o.Z)(e,null,[{key:"addCursorDown",value:function(e,t,n){for(var i=[],r=0,o=0,a=t.length;o<a;o++){var l=t[o];i[r++]=new s.Vi(l.modelState,l.viewState),i[r++]=n?s.Vi.fromModelState(u.o.translateDown(e.cursorConfig,e.model,l.modelState)):s.Vi.fromViewState(u.o.translateDown(e.cursorConfig,e,l.viewState))}return i}},{key:"addCursorUp",value:function(e,t,n){for(var i=[],r=0,o=0,a=t.length;o<a;o++){var l=t[o];i[r++]=new s.Vi(l.modelState,l.viewState),i[r++]=n?s.Vi.fromModelState(u.o.translateUp(e.cursorConfig,e.model,l.modelState)):s.Vi.fromViewState(u.o.translateUp(e.cursorConfig,e,l.viewState))}return i}},{key:"moveToBeginningOfLine",value:function(e,t,n){for(var i=[],r=0,o=t.length;r<o;r++){var a=t[r];i[r]=this._moveToLineStart(e,a,n)}return i}},{key:"_moveToLineStart",value:function(e,t,n){var i=t.viewState.position.column,r=i===t.modelState.position.column,o=t.viewState.position.lineNumber,a=e.getLineFirstNonWhitespaceColumn(o);return r||i===a?this._moveToLineStartByModel(e,t,n):this._moveToLineStartByView(e,t,n)}},{key:"_moveToLineStartByView",value:function(e,t,n){return s.Vi.fromViewState(u.o.moveToBeginningOfLine(e.cursorConfig,e,t.viewState,n))}},{key:"_moveToLineStartByModel",value:function(e,t,n){return s.Vi.fromModelState(u.o.moveToBeginningOfLine(e.cursorConfig,e.model,t.modelState,n))}},{key:"moveToEndOfLine",value:function(e,t,n,i){for(var r=[],o=0,a=t.length;o<a;o++){var s=t[o];r[o]=this._moveToLineEnd(e,s,n,i)}return r}},{key:"_moveToLineEnd",value:function(e,t,n,i){var r=t.viewState.position,o=e.getLineMaxColumn(r.lineNumber),a=r.column===o,s=t.modelState.position,u=e.model.getLineMaxColumn(s.lineNumber),l=o-r.column===u-s.column;return a||l?this._moveToLineEndByModel(e,t,n,i):this._moveToLineEndByView(e,t,n,i)}},{key:"_moveToLineEndByView",value:function(e,t,n,i){return s.Vi.fromViewState(u.o.moveToEndOfLine(e.cursorConfig,e,t.viewState,n,i))}},{key:"_moveToLineEndByModel",value:function(e,t,n,i){return s.Vi.fromModelState(u.o.moveToEndOfLine(e.cursorConfig,e.model,t.modelState,n,i))}},{key:"expandLineSelection",value:function(e,t){for(var n=[],i=0,r=t.length;i<r;i++){var o=t[i],a=o.modelState.selection.startLineNumber,u=e.model.getLineCount(),l=o.modelState.selection.endLineNumber,h=void 0;l===u?h=e.model.getLineMaxColumn(u):(l++,h=1),n[i]=s.Vi.fromModelState(new s.rS(new d.e(a,1,a,1),0,new c.L(l,h),0))}return n}},{key:"moveToBeginningOfBuffer",value:function(e,t,n){for(var i=[],r=0,o=t.length;r<o;r++){var a=t[r];i[r]=s.Vi.fromModelState(u.o.moveToBeginningOfBuffer(e.cursorConfig,e.model,a.modelState,n))}return i}},{key:"moveToEndOfBuffer",value:function(e,t,n){for(var i=[],r=0,o=t.length;r<o;r++){var a=t[r];i[r]=s.Vi.fromModelState(u.o.moveToEndOfBuffer(e.cursorConfig,e.model,a.modelState,n))}return i}},{key:"selectAll",value:function(e,t){var n=e.model.getLineCount(),i=e.model.getLineMaxColumn(n);return s.Vi.fromModelState(new s.rS(new d.e(1,1,1,1),0,new c.L(n,i),0))}},{key:"line",value:function(e,t,n,i,r){var o=e.model.validatePosition(i),a=r?e.coordinatesConverter.validateViewPosition(new c.L(r.lineNumber,r.column),o):e.coordinatesConverter.convertModelPositionToViewPosition(o);if(!n||!t.modelState.hasSelection()){var u=e.model.getLineCount(),l=o.lineNumber+1,h=1;return l>u&&(l=u,h=e.model.getLineMaxColumn(l)),s.Vi.fromModelState(new s.rS(new d.e(o.lineNumber,1,l,h),0,new c.L(l,h),0))}var f=t.modelState.selectionStart.getStartPosition().lineNumber;if(o.lineNumber<f)return s.Vi.fromViewState(t.viewState.move(t.modelState.hasSelection(),a.lineNumber,1,0));if(o.lineNumber>f){var p=e.getLineCount(),g=a.lineNumber+1,v=1;return g>p&&(g=p,v=e.getLineMaxColumn(g)),s.Vi.fromViewState(t.viewState.move(t.modelState.hasSelection(),g,v,0))}var m=t.modelState.selectionStart.getEndPosition();return s.Vi.fromModelState(t.modelState.move(t.modelState.hasSelection(),m.lineNumber,m.column,0))}},{key:"word",value:function(e,t,n,i){var r=e.model.validatePosition(i);return s.Vi.fromModelState(l.w.word(e.cursorConfig,e.model,t.modelState,n,r))}},{key:"cancelSelection",value:function(e,t){if(!t.modelState.hasSelection())return new s.Vi(t.modelState,t.viewState);var n=t.viewState.position.lineNumber,i=t.viewState.position.column;return s.Vi.fromViewState(new s.rS(new d.e(n,i,n,i),0,new c.L(n,i),0))}},{key:"moveTo",value:function(e,t,n,i,r){var o=e.model.validatePosition(i),a=r?e.coordinatesConverter.validateViewPosition(new c.L(r.lineNumber,r.column),o):e.coordinatesConverter.convertModelPositionToViewPosition(o);return s.Vi.fromViewState(t.viewState.move(n,a.lineNumber,a.column,0))}},{key:"simpleMove",value:function(e,t,n,i,r,o){switch(n){case 0:return 4===o?this._moveHalfLineLeft(e,t,i):this._moveLeft(e,t,i,r);case 1:return 4===o?this._moveHalfLineRight(e,t,i):this._moveRight(e,t,i,r);case 2:return 2===o?this._moveUpByViewLines(e,t,i,r):this._moveUpByModelLines(e,t,i,r);case 3:return 2===o?this._moveDownByViewLines(e,t,i,r):this._moveDownByModelLines(e,t,i,r);case 4:return 2===o?t.map((function(t){return s.Vi.fromViewState(u.o.moveToPrevBlankLine(e.cursorConfig,e,t.viewState,i))})):t.map((function(t){return s.Vi.fromModelState(u.o.moveToPrevBlankLine(e.cursorConfig,e.model,t.modelState,i))}));case 5:return 2===o?t.map((function(t){return s.Vi.fromViewState(u.o.moveToNextBlankLine(e.cursorConfig,e,t.viewState,i))})):t.map((function(t){return s.Vi.fromModelState(u.o.moveToNextBlankLine(e.cursorConfig,e.model,t.modelState,i))}));case 6:return this._moveToViewMinColumn(e,t,i);case 7:return this._moveToViewFirstNonWhitespaceColumn(e,t,i);case 8:return this._moveToViewCenterColumn(e,t,i);case 9:return this._moveToViewMaxColumn(e,t,i);case 10:return this._moveToViewLastNonWhitespaceColumn(e,t,i);default:return null}}},{key:"viewportMove",value:function(e,t,n,i,r){var o=e.getCompletelyVisibleViewRange(),a=e.coordinatesConverter.convertViewRangeToModelRange(o);switch(n){case 11:var s=this._firstLineNumberInRange(e.model,a,r),u=e.model.getLineFirstNonWhitespaceColumn(s);return[this._moveToModelPosition(e,t[0],i,s,u)];case 13:var l=this._lastLineNumberInRange(e.model,a,r),c=e.model.getLineFirstNonWhitespaceColumn(l);return[this._moveToModelPosition(e,t[0],i,l,c)];case 12:var d=Math.round((a.startLineNumber+a.endLineNumber)/2),h=e.model.getLineFirstNonWhitespaceColumn(d);return[this._moveToModelPosition(e,t[0],i,d,h)];case 14:for(var f=[],p=0,g=t.length;p<g;p++){var v=t[p];f[p]=this.findPositionInViewportIfOutside(e,v,o,i)}return f;default:return null}}},{key:"findPositionInViewportIfOutside",value:function(e,t,n,i){var r=t.viewState.position.lineNumber;if(n.startLineNumber<=r&&r<=n.endLineNumber-1)return new s.Vi(t.modelState,t.viewState);r>n.endLineNumber-1&&(r=n.endLineNumber-1),r<n.startLineNumber&&(r=n.startLineNumber);var o=e.getLineFirstNonWhitespaceColumn(r);return this._moveToViewPosition(e,t,i,r,o)}},{key:"_firstLineNumberInRange",value:function(e,t,n){var i=t.startLineNumber;return t.startColumn!==e.getLineMinColumn(i)&&i++,Math.min(t.endLineNumber,i+n-1)}},{key:"_lastLineNumberInRange",value:function(e,t,n){var i=t.startLineNumber;return t.startColumn!==e.getLineMinColumn(i)&&i++,Math.max(i,t.endLineNumber-n+1)}},{key:"_moveLeft",value:function(e,t,n,i){for(var r=t.length>1,o=[],a=0,l=t.length;a<l;a++){var c=t[a],d=r||!c.viewState.hasSelection(),h=u.o.moveLeft(e.cursorConfig,e,c.viewState,n,i);if(d&&1===i&&c.viewState.position.column===e.getLineMinColumn(c.viewState.position.lineNumber)&&h.position.lineNumber!==c.viewState.position.lineNumber)e.coordinatesConverter.convertViewPositionToModelPosition(h.position).lineNumber===c.modelState.position.lineNumber&&(h=u.o.moveLeft(e.cursorConfig,e,h,n,1));o[a]=s.Vi.fromViewState(h)}return o}},{key:"_moveHalfLineLeft",value:function(e,t,n){for(var i=[],r=0,o=t.length;r<o;r++){var a=t[r],l=a.viewState.position.lineNumber,c=Math.round(e.getLineContent(l).length/2);i[r]=s.Vi.fromViewState(u.o.moveLeft(e.cursorConfig,e,a.viewState,n,c))}return i}},{key:"_moveRight",value:function(e,t,n,i){for(var r=t.length>1,o=[],a=0,l=t.length;a<l;a++){var c=t[a],d=r||!c.viewState.hasSelection(),h=u.o.moveRight(e.cursorConfig,e,c.viewState,n,i);if(d&&1===i&&c.viewState.position.column===e.getLineMaxColumn(c.viewState.position.lineNumber)&&h.position.lineNumber!==c.viewState.position.lineNumber)e.coordinatesConverter.convertViewPositionToModelPosition(h.position).lineNumber===c.modelState.position.lineNumber&&(h=u.o.moveRight(e.cursorConfig,e,h,n,1));o[a]=s.Vi.fromViewState(h)}return o}},{key:"_moveHalfLineRight",value:function(e,t,n){for(var i=[],r=0,o=t.length;r<o;r++){var a=t[r],l=a.viewState.position.lineNumber,c=Math.round(e.getLineContent(l).length/2);i[r]=s.Vi.fromViewState(u.o.moveRight(e.cursorConfig,e,a.viewState,n,c))}return i}},{key:"_moveDownByViewLines",value:function(e,t,n,i){for(var r=[],o=0,a=t.length;o<a;o++){var l=t[o];r[o]=s.Vi.fromViewState(u.o.moveDown(e.cursorConfig,e,l.viewState,n,i))}return r}},{key:"_moveDownByModelLines",value:function(e,t,n,i){for(var r=[],o=0,a=t.length;o<a;o++){var l=t[o];r[o]=s.Vi.fromModelState(u.o.moveDown(e.cursorConfig,e.model,l.modelState,n,i))}return r}},{key:"_moveUpByViewLines",value:function(e,t,n,i){for(var r=[],o=0,a=t.length;o<a;o++){var l=t[o];r[o]=s.Vi.fromViewState(u.o.moveUp(e.cursorConfig,e,l.viewState,n,i))}return r}},{key:"_moveUpByModelLines",value:function(e,t,n,i){for(var r=[],o=0,a=t.length;o<a;o++){var l=t[o];r[o]=s.Vi.fromModelState(u.o.moveUp(e.cursorConfig,e.model,l.modelState,n,i))}return r}},{key:"_moveToViewPosition",value:function(e,t,n,i,r){return s.Vi.fromViewState(t.viewState.move(n,i,r,0))}},{key:"_moveToModelPosition",value:function(e,t,n,i,r){return s.Vi.fromModelState(t.modelState.move(n,i,r,0))}},{key:"_moveToViewMinColumn",value:function(e,t,n){for(var i=[],r=0,o=t.length;r<o;r++){var a=t[r],s=a.viewState.position.lineNumber,u=e.getLineMinColumn(s);i[r]=this._moveToViewPosition(e,a,n,s,u)}return i}},{key:"_moveToViewFirstNonWhitespaceColumn",value:function(e,t,n){for(var i=[],r=0,o=t.length;r<o;r++){var a=t[r],s=a.viewState.position.lineNumber,u=e.getLineFirstNonWhitespaceColumn(s);i[r]=this._moveToViewPosition(e,a,n,s,u)}return i}},{key:"_moveToViewCenterColumn",value:function(e,t,n){for(var i=[],r=0,o=t.length;r<o;r++){var a=t[r],s=a.viewState.position.lineNumber,u=Math.round((e.getLineMaxColumn(s)+e.getLineMinColumn(s))/2);i[r]=this._moveToViewPosition(e,a,n,s,u)}return i}},{key:"_moveToViewMaxColumn",value:function(e,t,n){for(var i=[],r=0,o=t.length;r<o;r++){var a=t[r],s=a.viewState.position.lineNumber,u=e.getLineMaxColumn(s);i[r]=this._moveToViewPosition(e,a,n,s,u)}return i}},{key:"_moveToViewLastNonWhitespaceColumn",value:function(e,t,n){for(var i=[],r=0,o=t.length;r<o;r++){var a=t[r],s=a.viewState.position.lineNumber,u=e.getLineLastNonWhitespaceColumn(s);i[r]=this._moveToViewPosition(e,a,n,s,u)}return i}}]),e}();!function(e){e.description={description:"Move cursor to a logical position in the view",args:[{name:"Cursor move argument object",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'to': A mandatory logical position value providing where to move the cursor.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'left', 'right', 'up', 'down', 'prevBlankLine', 'nextBlankLine',\n\t\t\t\t\t\t'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter'\n\t\t\t\t\t\t'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter'\n\t\t\t\t\t\t'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'line', 'wrappedLine', 'character', 'halfLine'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\n\t\t\t\t\t* 'select': If 'true' makes the selection. Default is 'false'.\n\t\t\t\t",constraint:function(e){if(!a.Kn(e))return!1;var t=e;return!!a.HD(t.to)&&(!(!a.o8(t.select)&&!a.jn(t.select))&&(!(!a.o8(t.by)&&!a.HD(t.by))&&!(!a.o8(t.value)&&!a.hj(t.value))))},schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["left","right","up","down","prevBlankLine","nextBlankLine","wrappedLineStart","wrappedLineEnd","wrappedLineColumnCenter","wrappedLineFirstNonWhitespaceCharacter","wrappedLineLastNonWhitespaceCharacter","viewPortTop","viewPortCenter","viewPortBottom","viewPortIfOutside"]},by:{type:"string",enum:["line","wrappedLine","character","halfLine"]},value:{type:"number",default:1},select:{type:"boolean",default:!1}}}}]},e.RawDirection={Left:"left",Right:"right",Up:"up",Down:"down",PrevBlankLine:"prevBlankLine",NextBlankLine:"nextBlankLine",WrappedLineStart:"wrappedLineStart",WrappedLineFirstNonWhitespaceCharacter:"wrappedLineFirstNonWhitespaceCharacter",WrappedLineColumnCenter:"wrappedLineColumnCenter",WrappedLineEnd:"wrappedLineEnd",WrappedLineLastNonWhitespaceCharacter:"wrappedLineLastNonWhitespaceCharacter",ViewPortTop:"viewPortTop",ViewPortCenter:"viewPortCenter",ViewPortBottom:"viewPortBottom",ViewPortIfOutside:"viewPortIfOutside"},e.RawUnit={Line:"line",WrappedLine:"wrappedLine",Character:"character",HalfLine:"halfLine"},e.parse=function(t){if(!t.to)return null;var n;switch(t.to){case e.RawDirection.Left:n=0;break;case e.RawDirection.Right:n=1;break;case e.RawDirection.Up:n=2;break;case e.RawDirection.Down:n=3;break;case e.RawDirection.PrevBlankLine:n=4;break;case e.RawDirection.NextBlankLine:n=5;break;case e.RawDirection.WrappedLineStart:n=6;break;case e.RawDirection.WrappedLineFirstNonWhitespaceCharacter:n=7;break;case e.RawDirection.WrappedLineColumnCenter:n=8;break;case e.RawDirection.WrappedLineEnd:n=9;break;case e.RawDirection.WrappedLineLastNonWhitespaceCharacter:n=10;break;case e.RawDirection.ViewPortTop:n=11;break;case e.RawDirection.ViewPortBottom:n=13;break;case e.RawDirection.ViewPortCenter:n=12;break;case e.RawDirection.ViewPortIfOutside:n=14;break;default:return null}var i=0;switch(t.by){case e.RawUnit.Line:i=1;break;case e.RawUnit.WrappedLine:i=2;break;case e.RawUnit.Character:i=3;break;case e.RawUnit.HalfLine:i=4}return{direction:n,unit:i,select:!!t.select,value:t.value||1}}}(i||(i={}))},15432:function(e,t,n){"use strict";n.d(t,{o:function(){return d}});var i=n(43144),r=n(15671),o=n(16274),a=n(67297),s=n(67033),u=n(51747),l=n(86036),c=(0,i.Z)((function e(t,n,i){(0,r.Z)(this,e),this.lineNumber=t,this.column=n,this.leftoverVisibleColumns=i})),d=function(){function e(){(0,r.Z)(this,e)}return(0,i.Z)(e,null,[{key:"leftPosition",value:function(e,t,n){return n>e.getLineMinColumn(t)?n-=u.HO(e.getLineContent(t),n-1):t>1&&(t-=1,n=e.getLineMaxColumn(t)),new a.L(t,n)}},{key:"leftPositionAtomicSoftTabs",value:function(e,t,n,i){var r=e.getLineMinColumn(t),o=e.getLineContent(t),s=l.l.atomicPosition(o,n-1,i,0);return-1===s||s+1<r?this.leftPosition(e,t,n):new a.L(t,s+1)}},{key:"left",value:function(t,n,i,r){var o=t.stickyTabStops?e.leftPositionAtomicSoftTabs(n,i,r,t.tabSize):e.leftPosition(n,i,r);return new c(o.lineNumber,o.column,0)}},{key:"moveLeft",value:function(t,n,i,r,o){var a,s;if(i.hasSelection()&&!r)a=i.selection.startLineNumber,s=i.selection.startColumn;else{var u=e.left(t,n,i.position.lineNumber,i.position.column-(o-1));a=u.lineNumber,s=u.column}return i.move(r,a,s,0)}},{key:"rightPosition",value:function(e,t,n){return n<e.getLineMaxColumn(t)?n+=u.vH(e.getLineContent(t),n-1):t<e.getLineCount()&&(t+=1,n=e.getLineMinColumn(t)),new a.L(t,n)}},{key:"rightPositionAtomicSoftTabs",value:function(e,t,n,i,r){var o=e.getLineContent(t),s=l.l.atomicPosition(o,n-1,i,1);return-1===s?this.rightPosition(e,t,n):new a.L(t,s+1)}},{key:"right",value:function(t,n,i,r){var o=t.stickyTabStops?e.rightPositionAtomicSoftTabs(n,i,r,t.tabSize,t.indentSize):e.rightPosition(n,i,r);return new c(o.lineNumber,o.column,0)}},{key:"moveRight",value:function(t,n,i,r,o){var a,s;if(i.hasSelection()&&!r)a=i.selection.endLineNumber,s=i.selection.endColumn;else{var u=e.right(t,n,i.position.lineNumber,i.position.column+(o-1));a=u.lineNumber,s=u.column}return i.move(r,a,s,0)}},{key:"down",value:function(e,t,n,i,r,a,s){var u=o.io.visibleColumnFromColumn(t.getLineContent(n),i,e.tabSize)+r,l=t.getLineCount(),d=n===l&&i===t.getLineMaxColumn(n);return(n+=a)>l?(n=l,i=s?t.getLineMaxColumn(n):Math.min(t.getLineMaxColumn(n),i)):i=o.io.columnFromVisibleColumn2(e,t,n,u),r=d?0:u-o.io.visibleColumnFromColumn(t.getLineContent(n),i,e.tabSize),new c(n,i,r)}},{key:"moveDown",value:function(t,n,i,r,o){var a,s;i.hasSelection()&&!r?(a=i.selection.endLineNumber,s=i.selection.endColumn):(a=i.position.lineNumber,s=i.position.column);var u=e.down(t,n,a,s,i.leftoverVisibleColumns,o,!0);return i.move(r,u.lineNumber,u.column,u.leftoverVisibleColumns)}},{key:"translateDown",value:function(t,n,i){var r=i.selection,u=e.down(t,n,r.selectionStartLineNumber,r.selectionStartColumn,i.selectionStartLeftoverVisibleColumns,1,!1),l=e.down(t,n,r.positionLineNumber,r.positionColumn,i.leftoverVisibleColumns,1,!1);return new o.rS(new s.e(u.lineNumber,u.column,u.lineNumber,u.column),u.leftoverVisibleColumns,new a.L(l.lineNumber,l.column),l.leftoverVisibleColumns)}},{key:"up",value:function(e,t,n,i,r,a,s){var u=o.io.visibleColumnFromColumn(t.getLineContent(n),i,e.tabSize)+r,l=1===n&&1===i;return(n-=a)<1?(n=1,i=s?t.getLineMinColumn(n):Math.min(t.getLineMaxColumn(n),i)):i=o.io.columnFromVisibleColumn2(e,t,n,u),r=l?0:u-o.io.visibleColumnFromColumn(t.getLineContent(n),i,e.tabSize),new c(n,i,r)}},{key:"moveUp",value:function(t,n,i,r,o){var a,s;i.hasSelection()&&!r?(a=i.selection.startLineNumber,s=i.selection.startColumn):(a=i.position.lineNumber,s=i.position.column);var u=e.up(t,n,a,s,i.leftoverVisibleColumns,o,!0);return i.move(r,u.lineNumber,u.column,u.leftoverVisibleColumns)}},{key:"translateUp",value:function(t,n,i){var r=i.selection,u=e.up(t,n,r.selectionStartLineNumber,r.selectionStartColumn,i.selectionStartLeftoverVisibleColumns,1,!1),l=e.up(t,n,r.positionLineNumber,r.positionColumn,i.leftoverVisibleColumns,1,!1);return new o.rS(new s.e(u.lineNumber,u.column,u.lineNumber,u.column),u.leftoverVisibleColumns,new a.L(l.lineNumber,l.column),l.leftoverVisibleColumns)}},{key:"_isBlankLine",value:function(e,t){return 0===e.getLineFirstNonWhitespaceColumn(t)}},{key:"moveToPrevBlankLine",value:function(e,t,n,i){for(var r=n.position.lineNumber;r>1&&this._isBlankLine(t,r);)r--;for(;r>1&&!this._isBlankLine(t,r);)r--;return n.move(i,r,t.getLineMinColumn(r),0)}},{key:"moveToNextBlankLine",value:function(e,t,n,i){for(var r=t.getLineCount(),o=n.position.lineNumber;o<r&&this._isBlankLine(t,o);)o++;for(;o<r&&!this._isBlankLine(t,o);)o++;return n.move(i,o,t.getLineMinColumn(o),0)}},{key:"moveToBeginningOfLine",value:function(e,t,n,i){var r,o=n.position.lineNumber,a=t.getLineMinColumn(o),s=t.getLineFirstNonWhitespaceColumn(o)||a;return r=n.position.column===s?a:s,n.move(i,o,r,0)}},{key:"moveToEndOfLine",value:function(e,t,n,i,r){var o=n.position.lineNumber,a=t.getLineMaxColumn(o);return n.move(i,o,a,r?1073741824-a:0)}},{key:"moveToBeginningOfBuffer",value:function(e,t,n,i){return n.move(i,1,1,0)}},{key:"moveToEndOfBuffer",value:function(e,t,n,i){var r=t.getLineCount(),o=t.getLineMaxColumn(r);return n.move(i,r,o,0)}}]),e}()},22268:function(e,t,n){"use strict";n.d(t,{u:function(){return w},g:function(){return C}});var i=n(11752),r=n(61120),o=n(60136),a=n(43668),s=n(37762),u=n(15671),l=n(43144),c=n(8729),d=n(51747),h=n(97033),f=n(83),p=n(67033),g=n(74964),v=function(){function e(t,n,i){(0,u.Z)(this,e),this._range=t,this._charBeforeSelection=n,this._charAfterSelection=i}return(0,l.Z)(e,[{key:"getEditOperations",value:function(e,t){t.addTrackedEditOperation(new p.e(this._range.startLineNumber,this._range.startColumn,this._range.startLineNumber,this._range.startColumn),this._charBeforeSelection),t.addTrackedEditOperation(new p.e(this._range.endLineNumber,this._range.endColumn,this._range.endLineNumber,this._range.endColumn),this._charAfterSelection)}},{key:"computeCursorState",value:function(e,t){var n=t.getInverseEditOperations(),i=n[0].range,r=n[1].range;return new g.Y(i.endLineNumber,i.endColumn,r.endLineNumber,r.endColumn-this._charAfterSelection.length)}}]),e}(),m=n(16274),_=n(20937),y=n(7273),b=n(65262),w=function(){function e(){(0,u.Z)(this,e)}return(0,l.Z)(e,null,[{key:"indent",value:function(e,t,n){if(null===t||null===n)return[];for(var i=[],r=0,o=n.length;r<o;r++)i[r]=new f.U(n[r],{isUnshift:!1,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent});return i}},{key:"outdent",value:function(e,t,n){for(var i=[],r=0,o=n.length;r<o;r++)i[r]=new f.U(n[r],{isUnshift:!0,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent});return i}},{key:"shiftIndent",value:function(e,t,n){return n=n||1,f.U.shiftIndent(t,t.length+n,e.tabSize,e.indentSize,e.insertSpaces)}},{key:"unshiftIndent",value:function(e,t,n){return n=n||1,f.U.unshiftIndent(t,t.length+n,e.tabSize,e.indentSize,e.insertSpaces)}},{key:"_distributedPaste",value:function(e,t,n,i){for(var r=[],o=0,a=n.length;o<a;o++)r[o]=new h.T4(n[o],i[o]);return new m.Tp(0,r,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}},{key:"_simplePaste",value:function(e,t,n,i,r){for(var o=[],a=0,s=n.length;a<s;a++){var u=n[a],l=u.getPosition();if(r&&!u.isEmpty()&&(r=!1),r&&i.indexOf("\n")!==i.length-1&&(r=!1),r){var c=new p.e(l.lineNumber,1,l.lineNumber,1);o[a]=new h.hP(c,i,u,!0)}else o[a]=new h.T4(u,i)}return new m.Tp(0,o,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}},{key:"_distributePasteToCursors",value:function(e,t,n,i,r){if(i)return null;if(1===t.length)return null;if(r&&r.length===t.length)return r;if("spread"===e.multiCursorPaste){10===n.charCodeAt(n.length-1)&&(n=n.substr(0,n.length-1)),13===n.charCodeAt(n.length-1)&&(n=n.substr(0,n.length-1));var o=d.uq(n);if(o.length===t.length)return o}return null}},{key:"paste",value:function(e,t,n,i,r,o){var a=this._distributePasteToCursors(e,n,i,r,o);return a?(n=n.sort(p.e.compareRangesUsingStarts),this._distributedPaste(e,t,n,a)):this._simplePaste(e,t,n,i,r)}},{key:"_goodIndentForLine",value:function(t,n,i){var r=null,o="",a=b.zu.getInheritIndentForLine(t.autoIndent,n,i,!1);if(a)r=a.action,o=a.indentation;else if(i>1){var s;for(s=i-1;s>=1;s--){var u=n.getLineContent(s);if(d.ow(u)>=0)break}if(s<1)return null;var l=n.getLineMaxColumn(s),c=b.zu.getEnterAction(t.autoIndent,n,new p.e(s,l,s,l));c&&(o=c.indentation+c.appendText)}return r&&(r===y.wU.Indent&&(o=e.shiftIndent(t,o)),r===y.wU.Outdent&&(o=e.unshiftIndent(t,o)),o=t.normalizeIndentation(o)),o||null}},{key:"_replaceJumpToNextIndent",value:function(e,t,n,i){var r="",o=n.getStartPosition();if(e.insertSpaces)for(var a=m.io.visibleColumnFromColumn2(e,t,o),s=e.indentSize,u=s-a%s,l=0;l<u;l++)r+=" ";else r="\t";return new h.T4(n,r,i)}},{key:"tab",value:function(e,t,n){for(var i=[],r=0,o=n.length;r<o;r++){var a=n[r];if(a.isEmpty()){var s=t.getLineContent(a.startLineNumber);if(/^\s*$/.test(s)&&t.isCheapToTokenize(a.startLineNumber)){var u=this._goodIndentForLine(e,t,a.startLineNumber);u=u||"\t";var l=e.normalizeIndentation(u);if(!s.startsWith(l)){i[r]=new h.T4(new p.e(a.startLineNumber,1,a.startLineNumber,s.length+1),l,!0);continue}}i[r]=this._replaceJumpToNextIndent(e,t,a,!0)}else{if(a.startLineNumber===a.endLineNumber){var c=t.getLineMaxColumn(a.startLineNumber);if(1!==a.startColumn||a.endColumn!==c){i[r]=this._replaceJumpToNextIndent(e,t,a,!1);continue}}i[r]=new f.U(a,{isUnshift:!1,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent})}}return i}},{key:"compositionType",value:function(e,t,n,i,r,o,a,s){var u=this,l=i.map((function(e){return u._compositionType(n,e,r,o,a,s)}));return new m.Tp(1,l,{shouldPushStackElementBefore:1!==e,shouldPushStackElementAfter:!1})}},{key:"_compositionType",value:function(e,t,n,i,r,o){if(!t.isEmpty())return null;var a=t.getPosition(),s=Math.max(1,a.column-i),u=Math.min(e.getLineMaxColumn(a.lineNumber),a.column+r),l=new p.e(a.lineNumber,s,a.lineNumber,u);return e.getValueInRange(l)===n&&0===o?null:new h.Uo(l,n,0,o)}},{key:"_typeCommand",value:function(e,t,n){return n?new h.Sj(e,t,!0):new h.T4(e,t,!0)}},{key:"_enter",value:function(t,n,i,r){if(0===t.autoIndent)return e._typeCommand(r,"\n",i);if(!n.isCheapToTokenize(r.getStartPosition().lineNumber)||1===t.autoIndent){var o=n.getLineContent(r.startLineNumber),a=d.V8(o).substring(0,r.startColumn-1);return e._typeCommand(r,"\n"+t.normalizeIndentation(a),i)}var s=b.zu.getEnterAction(t.autoIndent,n,r);if(s){if(s.indentAction===y.wU.None)return e._typeCommand(r,"\n"+t.normalizeIndentation(s.indentation+s.appendText),i);if(s.indentAction===y.wU.Indent)return e._typeCommand(r,"\n"+t.normalizeIndentation(s.indentation+s.appendText),i);if(s.indentAction===y.wU.IndentOutdent){var u=t.normalizeIndentation(s.indentation),l=t.normalizeIndentation(s.indentation+s.appendText),c="\n"+l+"\n"+u;return i?new h.Sj(r,c,!0):new h.Uo(r,c,-1,l.length-u.length,!0)}if(s.indentAction===y.wU.Outdent){var f=e.unshiftIndent(t,s.indentation);return e._typeCommand(r,"\n"+t.normalizeIndentation(f+s.appendText),i)}}var p=n.getLineContent(r.startLineNumber),g=d.V8(p).substring(0,r.startColumn-1);if(t.autoIndent>=4){var v=b.zu.getIndentForEnter(t.autoIndent,n,r,{unshiftIndent:function(n){return e.unshiftIndent(t,n)},shiftIndent:function(n){return e.shiftIndent(t,n)},normalizeIndentation:function(e){return t.normalizeIndentation(e)}});if(v){var _=m.io.visibleColumnFromColumn2(t,n,r.getEndPosition()),w=r.endColumn,C=n.getLineContent(r.endLineNumber),k=d.LC(C);if(r=k>=0?r.setEndPosition(r.endLineNumber,Math.max(r.endColumn,k+1)):r.setEndPosition(r.endLineNumber,n.getLineMaxColumn(r.endLineNumber)),i)return new h.Sj(r,"\n"+t.normalizeIndentation(v.afterEnter),!0);var S=0;return w<=k+1&&(t.insertSpaces||(_=Math.ceil(_/t.indentSize)),S=Math.min(_+1-t.normalizeIndentation(v.afterEnter).length-1,0)),new h.Uo(r,"\n"+t.normalizeIndentation(v.afterEnter),0,S,!0)}}return e._typeCommand(r,"\n"+t.normalizeIndentation(g),i)}},{key:"_isAutoIndentType",value:function(e,t,n){if(e.autoIndent<4)return!1;for(var i=0,r=n.length;i<r;i++)if(!t.isCheapToTokenize(n[i].getEndPosition().lineNumber))return!1;return!0}},{key:"_runAutoIndentType",value:function(t,n,i,r){var o=b.zu.getIndentationAtPosition(n,i.startLineNumber,i.startColumn),a=b.zu.getIndentActionForType(t.autoIndent,n,i,r,{shiftIndent:function(n){return e.shiftIndent(t,n)},unshiftIndent:function(n){return e.unshiftIndent(t,n)}});if(null===a)return null;if(a!==t.normalizeIndentation(o)){var s=n.getLineFirstNonWhitespaceColumn(i.startLineNumber);return 0===s?e._typeCommand(new p.e(i.startLineNumber,1,i.endLineNumber,i.endColumn),t.normalizeIndentation(a)+r,!1):e._typeCommand(new p.e(i.startLineNumber,1,i.endLineNumber,i.endColumn),t.normalizeIndentation(a)+n.getLineContent(i.startLineNumber).substring(s-1,i.startColumn-1)+r,!1)}return null}},{key:"_isAutoClosingOvertype",value:function(e,t,n,i,r){if("never"===e.autoClosingOvertype)return!1;if(!e.autoClosingPairs.autoClosingPairsCloseSingleChar.has(r))return!1;for(var o=0,a=n.length;o<a;o++){var s=n[o];if(!s.isEmpty())return!1;var u=s.getPosition(),l=t.getLineContent(u.lineNumber);if(l.charAt(u.column-1)!==r)return!1;var c=(0,m.LN)(r);if(92===(u.column>2?l.charCodeAt(u.column-2):0)&&c)return!1;if("auto"===e.autoClosingOvertype){for(var d=!1,h=0,f=i.length;h<f;h++){var p=i[h];if(u.lineNumber===p.startLineNumber&&u.column===p.startColumn){d=!0;break}}if(!d)return!1}}return!0}},{key:"_runAutoClosingOvertype",value:function(e,t,n,i,r){for(var o=[],a=0,s=i.length;a<s;a++){var u=i[a].getPosition(),l=new p.e(u.lineNumber,u.column,u.lineNumber,u.column+1);o[a]=new h.T4(l,r)}return new m.Tp(1,o,{shouldPushStackElementBefore:1!==e,shouldPushStackElementAfter:!1})}},{key:"_isBeforeClosingBrace",value:function(e,t){var n=t.charAt(0),i=e.autoClosingPairs.autoClosingPairsOpenByStart.get(n)||[],r=e.autoClosingPairs.autoClosingPairsCloseByStart.get(n)||[],o=i.some((function(e){return t.startsWith(e.open)})),a=r.some((function(e){return t.startsWith(e.close)}));return!o&&a}},{key:"_findAutoClosingPairOpen",value:function(e,t,n,i){var r=e.autoClosingPairs.autoClosingPairsOpenByEnd.get(i);if(!r)return null;var o,a=null,u=(0,s.Z)(r);try{for(u.s();!(o=u.n()).done;){var l=o.value;if(null===a||l.open.length>a.open.length){var c,d=!0,h=(0,s.Z)(n);try{for(h.s();!(c=h.n()).done;){var f=c.value;if(t.getValueInRange(new p.e(f.lineNumber,f.column-l.open.length+1,f.lineNumber,f.column))+i!==l.open){d=!1;break}}}catch(g){h.e(g)}finally{h.f()}d&&(a=l)}}}catch(g){u.e(g)}finally{u.f()}return a}},{key:"_findSubAutoClosingPairClose",value:function(e,t){if(t.open.length<=1)return"";var n,i=t.close.charAt(t.close.length-1),r=e.autoClosingPairs.autoClosingPairsCloseByEnd.get(i)||[],o=null,a=(0,s.Z)(r);try{for(a.s();!(n=a.n()).done;){var u=n.value;u.open!==t.open&&t.open.includes(u.open)&&t.close.endsWith(u.close)&&(!o||u.open.length>o.open.length)&&(o=u)}}catch(l){a.e(l)}finally{a.f()}return o?o.close:""}},{key:"_getAutoClosingPairClose",value:function(t,n,i,r,o){var a=(0,m.LN)(r),s=a?t.autoClosingQuotes:t.autoClosingBrackets;if("never"===s)return null;var u=this._findAutoClosingPairOpen(t,n,i.map((function(e){return e.getPosition()})),r);if(!u)return null;for(var l=this._findSubAutoClosingPairClose(t,u),d=!0,h=a?t.shouldAutoCloseBefore.quote:t.shouldAutoCloseBefore.bracket,f=0,p=i.length;f<p;f++){var g=i[f];if(!g.isEmpty())return null;var v=g.getPosition(),y=n.getLineContent(v.lineNumber),w=y.substring(v.column-1);if(w.startsWith(l)||(d=!1),y.length>v.column-1){var C=y.charAt(v.column-1);if(!e._isBeforeClosingBrace(t,w)&&!h(C))return null}if(!n.isCheapToTokenize(v.lineNumber))return null;if(1===u.open.length&&a&&"always"!==s){var k=(0,_.u)(t.wordSeparators);if(o&&v.column>1&&0===k.get(y.charCodeAt(v.column-2)))return null;if(!o&&v.column>2&&0===k.get(y.charCodeAt(v.column-3)))return null}n.forceTokenization(v.lineNumber);var S=n.getLineTokens(v.lineNumber),x=!1;try{x=b.zu.shouldAutoClosePair(u,S,o?v.column:v.column-1)}catch(L){(0,c.dL)(L)}if(!x)return null}return d?u.close.substring(0,u.close.length-l.length):u.close}},{key:"_runAutoClosingOpenCharType",value:function(e,t,n,i,r,o,a){for(var s=[],u=0,l=i.length;u<l;u++){var c=i[u];s[u]=new C(c,r,o,a)}return new m.Tp(1,s,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}},{key:"_shouldSurroundChar",value:function(e,t){return(0,m.LN)(t)?"quotes"===e.autoSurround||"languageDefined"===e.autoSurround:"brackets"===e.autoSurround||"languageDefined"===e.autoSurround}},{key:"_isSurroundSelectionType",value:function(t,n,i,r){if(!e._shouldSurroundChar(t,r)||!t.surroundingPairs.hasOwnProperty(r))return!1;for(var o=(0,m.LN)(r),a=0,s=i.length;a<s;a++){var u=i[a];if(u.isEmpty())return!1;for(var l=!0,c=u.startLineNumber;c<=u.endLineNumber;c++){var d=n.getLineContent(c),h=c===u.startLineNumber?u.startColumn-1:0,f=c===u.endLineNumber?u.endColumn-1:d.length,p=d.substring(h,f);if(/[^ \t]/.test(p)){l=!1;break}}if(l)return!1;if(o&&u.startLineNumber===u.endLineNumber&&u.startColumn+1===u.endColumn){var g=n.getValueInRange(u);if((0,m.LN)(g))return!1}}return!0}},{key:"_runSurroundSelectionType",value:function(e,t,n,i,r){for(var o=[],a=0,s=i.length;a<s;a++){var u=i[a],l=t.surroundingPairs[r];o[a]=new v(u,r,l)}return new m.Tp(0,o,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}},{key:"_isTypeInterceptorElectricChar",value:function(e,t,n){return!(1!==n.length||!t.isCheapToTokenize(n[0].getEndPosition().lineNumber))}},{key:"_typeInterceptorElectricChar",value:function(e,t,n,i,r){if(!t.electricChars.hasOwnProperty(r)||!i.isEmpty())return null;var o=i.getPosition();n.forceTokenization(o.lineNumber);var a,s=n.getLineTokens(o.lineNumber);try{a=b.zu.onElectricCharacter(r,s,o.column)}catch(S){return(0,c.dL)(S),null}if(!a)return null;if(a.matchOpenBracket){var u=(s.getLineContent()+r).lastIndexOf(a.matchOpenBracket)+1,l=n.findMatchingBracketUp(a.matchOpenBracket,{lineNumber:o.lineNumber,column:u});if(l){if(l.startLineNumber===o.lineNumber)return null;var f=n.getLineContent(l.startLineNumber),g=d.V8(f),v=t.normalizeIndentation(g),_=n.getLineContent(o.lineNumber),y=n.getLineFirstNonWhitespaceColumn(o.lineNumber)||o.column,w=v+_.substring(y-1,o.column-1)+r,C=new p.e(o.lineNumber,1,o.lineNumber,o.column),k=new h.T4(C,w);return new m.Tp(1,[k],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!0})}}return null}},{key:"compositionEndWithInterceptors",value:function(e,t,n,i,r,o){if(!i||g.Y.selectionsArrEqual(i,r))return null;var a,u=null,l=(0,s.Z)(r);try{for(l.s();!(a=l.n()).done;){var c=a.value;if(!c.isEmpty())return null;var d=c.getPosition(),f=n.getValueInRange(new p.e(d.lineNumber,d.column-1,d.lineNumber,d.column));if(null===u)u=f;else if(u!==f)return null}}catch(y){l.e(y)}finally{l.f()}if(!u)return null;if(this._isAutoClosingOvertype(t,n,r,o,u)){var v=r.map((function(e){return new h.T4(new p.e(e.positionLineNumber,e.positionColumn,e.positionLineNumber,e.positionColumn+1),"",!1)}));return new m.Tp(1,v,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}var _=this._getAutoClosingPairClose(t,n,r,u,!1);return null!==_?this._runAutoClosingOpenCharType(e,t,n,r,u,!1,_):null}},{key:"typeWithInterceptors",value:function(t,n,i,r,o,a,s){if(!t&&"\n"===s){for(var u=[],l=0,c=o.length;l<c;l++)u[l]=e._enter(i,r,!1,o[l]);return new m.Tp(1,u,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}if(!t&&this._isAutoIndentType(i,r,o)){for(var d=[],f=!1,p=0,g=o.length;p<g;p++)if(d[p]=this._runAutoIndentType(i,r,o[p],s),!d[p]){f=!0;break}if(!f)return new m.Tp(1,d,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}if(!t&&this._isAutoClosingOvertype(i,r,o,a,s))return this._runAutoClosingOvertype(n,i,r,o,s);if(!t){var v=this._getAutoClosingPairClose(i,r,o,s,!0);if(v)return this._runAutoClosingOpenCharType(n,i,r,o,s,!0,v)}if(this._isSurroundSelectionType(i,r,o,s))return this._runSurroundSelectionType(n,i,r,o,s);if(!t&&this._isTypeInterceptorElectricChar(i,r,o)){var _=this._typeInterceptorElectricChar(n,i,r,o[0],s);if(_)return _}for(var y=[],b=0,w=o.length;b<w;b++)y[b]=new h.T4(o[b],s);var C=1!==n;return" "===s&&(C=!0),new m.Tp(1,y,{shouldPushStackElementBefore:C,shouldPushStackElementAfter:!1})}},{key:"typeWithoutInterceptors",value:function(e,t,n,i,r){for(var o=[],a=0,s=i.length;a<s;a++)o[a]=new h.T4(i[a],r);return new m.Tp(1,o,{shouldPushStackElementBefore:1!==e,shouldPushStackElementAfter:!1})}},{key:"lineInsertBefore",value:function(e,t,n){if(null===t||null===n)return[];for(var i=[],r=0,o=n.length;r<o;r++){var a=n[r].positionLineNumber;if(1===a)i[r]=new h.Sj(new p.e(1,1,1,1),"\n");else{a--;var s=t.getLineMaxColumn(a);i[r]=this._enter(e,t,!1,new p.e(a,s,a,s))}}return i}},{key:"lineInsertAfter",value:function(e,t,n){if(null===t||null===n)return[];for(var i=[],r=0,o=n.length;r<o;r++){var a=n[r].positionLineNumber,s=t.getLineMaxColumn(a);i[r]=this._enter(e,t,!1,new p.e(a,s,a,s))}return i}},{key:"lineBreakInsert",value:function(e,t,n){for(var i=[],r=0,o=n.length;r<o;r++)i[r]=this._enter(e,t,!0,n[r]);return i}}]),e}(),C=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,i,r,o){var a;return(0,u.Z)(this,n),(a=t.call(this,e,(r?i:"")+o,0,-o.length))._openCharacter=i,a._closeCharacter=o,a.closeCharacterRange=null,a.enclosingRange=null,a}return(0,l.Z)(n,[{key:"computeCursorState",value:function(e,t){var o=t.getInverseEditOperations()[0].range;return this.closeCharacterRange=new p.e(o.startLineNumber,o.endColumn-this._closeCharacter.length,o.endLineNumber,o.endColumn),this.enclosingRange=new p.e(o.startLineNumber,o.endColumn-this._openCharacter.length-this._closeCharacter.length,o.endLineNumber,o.endColumn),(0,i.Z)((0,r.Z)(n.prototype),"computeCursorState",this).call(this,e,t)}}]),n}(h.Uo)},86441:function(e,t,n){"use strict";n.d(t,{L:function(){return p},w:function(){return f}});var i=n(60136),r=n(43668),o=n(15671),a=n(43144),s=n(51747),u=n(16274),l=n(39765),c=n(20937),d=n(67297),h=n(67033),f=function(){function e(){(0,o.Z)(this,e)}return(0,a.Z)(e,null,[{key:"_createWord",value:function(e,t,n,i,r){return{start:i,end:r,wordType:t,nextCharClass:n}}},{key:"_findPreviousWordOnLine",value:function(e,t,n){var i=t.getLineContent(n.lineNumber);return this._doFindPreviousWordOnLine(i,e,n)}},{key:"_doFindPreviousWordOnLine",value:function(e,t,n){for(var i=0,r=n.column-2;r>=0;r--){var o=e.charCodeAt(r),a=t.get(o);if(0===a){if(2===i)return this._createWord(e,i,a,r+1,this._findEndOfWord(e,t,i,r+1));i=1}else if(2===a){if(1===i)return this._createWord(e,i,a,r+1,this._findEndOfWord(e,t,i,r+1));i=2}else if(1===a&&0!==i)return this._createWord(e,i,a,r+1,this._findEndOfWord(e,t,i,r+1))}return 0!==i?this._createWord(e,i,1,0,this._findEndOfWord(e,t,i,0)):null}},{key:"_findEndOfWord",value:function(e,t,n,i){for(var r=e.length,o=i;o<r;o++){var a=e.charCodeAt(o),s=t.get(a);if(1===s)return o;if(1===n&&2===s)return o;if(2===n&&0===s)return o}return r}},{key:"_findNextWordOnLine",value:function(e,t,n){var i=t.getLineContent(n.lineNumber);return this._doFindNextWordOnLine(i,e,n)}},{key:"_doFindNextWordOnLine",value:function(e,t,n){for(var i=0,r=e.length,o=n.column-1;o<r;o++){var a=e.charCodeAt(o),s=t.get(a);if(0===s){if(2===i)return this._createWord(e,i,s,this._findStartOfWord(e,t,i,o-1),o);i=1}else if(2===s){if(1===i)return this._createWord(e,i,s,this._findStartOfWord(e,t,i,o-1),o);i=2}else if(1===s&&0!==i)return this._createWord(e,i,s,this._findStartOfWord(e,t,i,o-1),o)}return 0!==i?this._createWord(e,i,1,this._findStartOfWord(e,t,i,r-1),r):null}},{key:"_findStartOfWord",value:function(e,t,n,i){for(var r=i;r>=0;r--){var o=e.charCodeAt(r),a=t.get(o);if(1===a)return r+1;if(1===n&&2===a)return r+1;if(2===n&&0===a)return r+1}return 0}},{key:"moveWordLeft",value:function(t,n,i,r){var o=i.lineNumber,a=i.column;1===a&&o>1&&(o-=1,a=n.getLineMaxColumn(o));var s=e._findPreviousWordOnLine(t,n,new d.L(o,a));if(0===r)return new d.L(o,s?s.start+1:1);if(1===r)return s&&2===s.wordType&&s.end-s.start===1&&0===s.nextCharClass&&(s=e._findPreviousWordOnLine(t,n,new d.L(o,s.start+1))),new d.L(o,s?s.start+1:1);if(3===r){for(;s&&2===s.wordType;)s=e._findPreviousWordOnLine(t,n,new d.L(o,s.start+1));return new d.L(o,s?s.start+1:1)}return s&&a<=s.end+1&&(s=e._findPreviousWordOnLine(t,n,new d.L(o,s.start+1))),new d.L(o,s?s.end+1:1)}},{key:"_moveWordPartLeft",value:function(e,t){var n=t.lineNumber,i=e.getLineMaxColumn(n);if(1===t.column)return n>1?new d.L(n-1,e.getLineMaxColumn(n-1)):t;for(var r=e.getLineContent(n),o=t.column-1;o>1;o--){var a=r.charCodeAt(o-2),u=r.charCodeAt(o-1);if(95===a&&95!==u)return new d.L(n,o);if(s.mK(a)&&s.df(u))return new d.L(n,o);if(s.df(a)&&s.df(u)&&o+1<i){var l=r.charCodeAt(o);if(s.mK(l))return new d.L(n,o)}}return new d.L(n,1)}},{key:"moveWordRight",value:function(t,n,i,r){var o=i.lineNumber,a=i.column,s=!1;a===n.getLineMaxColumn(o)&&o<n.getLineCount()&&(s=!0,o+=1,a=1);var u=e._findNextWordOnLine(t,n,new d.L(o,a));if(2===r)u&&2===u.wordType&&u.end-u.start===1&&0===u.nextCharClass&&(u=e._findNextWordOnLine(t,n,new d.L(o,u.end+1))),a=u?u.end+1:n.getLineMaxColumn(o);else if(3===r){for(s&&(a=0);u&&(2===u.wordType||u.start+1<=a);)u=e._findNextWordOnLine(t,n,new d.L(o,u.end+1));a=u?u.start+1:n.getLineMaxColumn(o)}else u&&!s&&a>=u.start+1&&(u=e._findNextWordOnLine(t,n,new d.L(o,u.end+1))),a=u?u.start+1:n.getLineMaxColumn(o);return new d.L(o,a)}},{key:"_moveWordPartRight",value:function(e,t){var n=t.lineNumber,i=e.getLineMaxColumn(n);if(t.column===i)return n<e.getLineCount()?new d.L(n+1,1):t;for(var r=e.getLineContent(n),o=t.column+1;o<i;o++){var a=r.charCodeAt(o-2),u=r.charCodeAt(o-1);if(95!==a&&95===u)return new d.L(n,o);if(s.mK(a)&&s.df(u))return new d.L(n,o);if(s.df(a)&&s.df(u)&&o+1<i){var l=r.charCodeAt(o);if(s.mK(l))return new d.L(n,o)}}return new d.L(n,i)}},{key:"_deleteWordLeftWhitespace",value:function(e,t){var n=e.getLineContent(t.lineNumber),i=t.column-2,r=s.ow(n,i);return r+1<i?new h.e(t.lineNumber,r+2,t.lineNumber,t.column):null}},{key:"deleteWordLeft",value:function(t,n){var i=t.wordSeparators,r=t.model,o=t.selection,a=t.whitespaceHeuristics;if(!o.isEmpty())return o;if(l.A.isAutoClosingPairDelete(t.autoClosingDelete,t.autoClosingBrackets,t.autoClosingQuotes,t.autoClosingPairs.autoClosingPairsOpenByEnd,t.model,[t.selection],t.autoClosedCharacters)){var s=t.selection.getPosition();return new h.e(s.lineNumber,s.column-1,s.lineNumber,s.column+1)}var u=new d.L(o.positionLineNumber,o.positionColumn),c=u.lineNumber,f=u.column;if(1===c&&1===f)return null;if(a){var p=this._deleteWordLeftWhitespace(r,u);if(p)return p}var g=e._findPreviousWordOnLine(i,r,u);return 0===n?g?f=g.start+1:f>1?f=1:(c--,f=r.getLineMaxColumn(c)):(g&&f<=g.end+1&&(g=e._findPreviousWordOnLine(i,r,new d.L(c,g.start+1))),g?f=g.end+1:f>1?f=1:(c--,f=r.getLineMaxColumn(c))),new h.e(c,f,u.lineNumber,u.column)}},{key:"deleteInsideWord",value:function(e,t,n){if(!n.isEmpty())return n;var i=new d.L(n.positionLineNumber,n.positionColumn),r=this._deleteInsideWordWhitespace(t,i);return r||this._deleteInsideWordDetermineDeleteRange(e,t,i)}},{key:"_charAtIsWhitespace",value:function(e,t){var n=e.charCodeAt(t);return 32===n||9===n}},{key:"_deleteInsideWordWhitespace",value:function(e,t){var n=e.getLineContent(t.lineNumber),i=n.length;if(0===i)return null;var r=Math.max(t.column-2,0);if(!this._charAtIsWhitespace(n,r))return null;var o=Math.min(t.column-1,i-1);if(!this._charAtIsWhitespace(n,o))return null;for(;r>0&&this._charAtIsWhitespace(n,r-1);)r--;for(;o+1<i&&this._charAtIsWhitespace(n,o+1);)o++;return new h.e(t.lineNumber,r+1,t.lineNumber,o+2)}},{key:"_deleteInsideWordDetermineDeleteRange",value:function(t,n,i){var r=this,o=n.getLineContent(i.lineNumber),a=o.length;if(0===a)return i.lineNumber>1?new h.e(i.lineNumber-1,n.getLineMaxColumn(i.lineNumber-1),i.lineNumber,1):i.lineNumber<n.getLineCount()?new h.e(i.lineNumber,1,i.lineNumber+1,1):new h.e(i.lineNumber,1,i.lineNumber,1);var s=function(e){return e.start+1<=i.column&&i.column<=e.end+1},u=function(e,t){return e=Math.min(e,i.column),t=Math.max(t,i.column),new h.e(i.lineNumber,e,i.lineNumber,t)},l=function(e){for(var t=e.start+1,n=e.end+1,i=!1;n-1<a&&r._charAtIsWhitespace(o,n-1);)i=!0,n++;if(!i)for(;t>1&&r._charAtIsWhitespace(o,t-2);)t--;return u(t,n)},c=e._findPreviousWordOnLine(t,n,i);if(c&&s(c))return l(c);var d=e._findNextWordOnLine(t,n,i);return d&&s(d)?l(d):c&&d?u(c.end+1,d.start+1):c?u(c.start+1,c.end+1):d?u(d.start+1,d.end+1):u(1,a+1)}},{key:"_deleteWordPartLeft",value:function(t,n){if(!n.isEmpty())return n;var i=n.getPosition(),r=e._moveWordPartLeft(t,i);return new h.e(i.lineNumber,i.column,r.lineNumber,r.column)}},{key:"_findFirstNonWhitespaceChar",value:function(e,t){for(var n=e.length,i=t;i<n;i++){var r=e.charAt(i);if(" "!==r&&"\t"!==r)return i}return n}},{key:"_deleteWordRightWhitespace",value:function(e,t){var n=e.getLineContent(t.lineNumber),i=t.column-1,r=this._findFirstNonWhitespaceChar(n,i);return i+1<r?new h.e(t.lineNumber,t.column,t.lineNumber,r+1):null}},{key:"deleteWordRight",value:function(t,n){var i=t.wordSeparators,r=t.model,o=t.selection,a=t.whitespaceHeuristics;if(!o.isEmpty())return o;var s=new d.L(o.positionLineNumber,o.positionColumn),u=s.lineNumber,l=s.column,c=r.getLineCount(),f=r.getLineMaxColumn(u);if(u===c&&l===f)return null;if(a){var p=this._deleteWordRightWhitespace(r,s);if(p)return p}var g=e._findNextWordOnLine(i,r,s);return 2===n?g?l=g.end+1:l<f||u===c?l=f:(u++,l=(g=e._findNextWordOnLine(i,r,new d.L(u,1)))?g.start+1:r.getLineMaxColumn(u)):(g&&l>=g.start+1&&(g=e._findNextWordOnLine(i,r,new d.L(u,g.end+1))),g?l=g.start+1:l<f||u===c?l=f:(u++,l=(g=e._findNextWordOnLine(i,r,new d.L(u,1)))?g.start+1:r.getLineMaxColumn(u))),new h.e(u,l,s.lineNumber,s.column)}},{key:"_deleteWordPartRight",value:function(t,n){if(!n.isEmpty())return n;var i=n.getPosition(),r=e._moveWordPartRight(t,i);return new h.e(i.lineNumber,i.column,r.lineNumber,r.column)}},{key:"_createWordAtPosition",value:function(e,t,n){var i=new h.e(t,n.start+1,t,n.end+1);return{word:e.getValueInRange(i),startColumn:i.startColumn,endColumn:i.endColumn}}},{key:"getWordAtPosition",value:function(t,n,i){var r=(0,c.u)(n),o=e._findPreviousWordOnLine(r,t,i);if(o&&1===o.wordType&&o.start<=i.column-1&&i.column-1<=o.end)return e._createWordAtPosition(t,i.lineNumber,o);var a=e._findNextWordOnLine(r,t,i);return a&&1===a.wordType&&a.start<=i.column-1&&i.column-1<=a.end?e._createWordAtPosition(t,i.lineNumber,a):null}},{key:"word",value:function(t,n,i,r,o){var a,s,l,f,p=(0,c.u)(t.wordSeparators),g=e._findPreviousWordOnLine(p,n,o),v=e._findNextWordOnLine(p,n,o);if(!r)return g&&1===g.wordType&&g.start<=o.column-1&&o.column-1<=g.end?(a=g.start+1,s=g.end+1):v&&1===v.wordType&&v.start<=o.column-1&&o.column-1<=v.end?(a=v.start+1,s=v.end+1):(a=g?g.end+1:1,s=v?v.start+1:n.getLineMaxColumn(o.lineNumber)),new u.rS(new h.e(o.lineNumber,a,o.lineNumber,s),0,new d.L(o.lineNumber,s),0);g&&1===g.wordType&&g.start<o.column-1&&o.column-1<g.end?(l=g.start+1,f=g.end+1):v&&1===v.wordType&&v.start<o.column-1&&o.column-1<v.end?(l=v.start+1,f=v.end+1):(l=o.column,f=o.column);var m,_=o.lineNumber;if(i.selectionStart.containsPosition(o))m=i.selectionStart.endColumn;else if(o.isBeforeOrEqual(i.selectionStart.getStartPosition())){m=l;var y=new d.L(_,m);i.selectionStart.containsPosition(y)&&(m=i.selectionStart.endColumn)}else{m=f;var b=new d.L(_,m);i.selectionStart.containsPosition(b)&&(m=i.selectionStart.startColumn)}return i.move(!0,_,m,0)}}]),e}(),p=function(e){(0,i.Z)(n,e);var t=(0,r.Z)(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,a.Z)(n,null,[{key:"deleteWordPartLeft",value:function(e){var t=g([f.deleteWordLeft(e,0),f.deleteWordLeft(e,2),f._deleteWordPartLeft(e.model,e.selection)]);return t.sort(h.e.compareRangesUsingEnds),t[2]}},{key:"deleteWordPartRight",value:function(e){var t=g([f.deleteWordRight(e,0),f.deleteWordRight(e,2),f._deleteWordPartRight(e.model,e.selection)]);return t.sort(h.e.compareRangesUsingStarts),t[0]}},{key:"moveWordPartLeft",value:function(e,t,n){var i=g([f.moveWordLeft(e,t,n,0),f.moveWordLeft(e,t,n,2),f._moveWordPartLeft(t,n)]);return i.sort(d.L.compare),i[2]}},{key:"moveWordPartRight",value:function(e,t,n){var i=g([f.moveWordRight(e,t,n,0),f.moveWordRight(e,t,n,2),f._moveWordPartRight(t,n)]);return i.sort(d.L.compare),i[0]}}]),n}(f);function g(e){return e.filter((function(e){return Boolean(e)}))}},20937:function(e,t,n){"use strict";n.d(t,{u:function(){return u}});var i=n(43144),r=n(15671),o=n(60136),a=n(43668),s=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e){var i;(0,r.Z)(this,n),i=t.call(this,0);for(var o=0,a=e.length;o<a;o++)i.set(e.charCodeAt(o),2);return i.set(32,1),i.set(9,1),i}return(0,i.Z)(n)}(n(84516).N);var u=function(e){var t={};return function(n){return t.hasOwnProperty(n)||(t[n]=e(n)),t[n]}}((function(e){return new s(e)}))},84516:function(e,t,n){"use strict";n.d(t,{N:function(){return a},q:function(){return s}});var i=n(15671),r=n(43144),o=n(38820),a=function(){function e(t){(0,i.Z)(this,e);var n=(0,o.K)(t);this._defaultValue=n,this._asciiMap=e._createAsciiMap(n),this._map=new Map}return(0,r.Z)(e,[{key:"set",value:function(e,t){var n=(0,o.K)(t);e>=0&&e<256?this._asciiMap[e]=n:this._map.set(e,n)}},{key:"get",value:function(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue}}],[{key:"_createAsciiMap",value:function(e){for(var t=new Uint8Array(256),n=0;n<256;n++)t[n]=e;return t}}]),e}(),s=function(){function e(){(0,i.Z)(this,e),this._actual=new a(0)}return(0,r.Z)(e,[{key:"add",value:function(e){this._actual.set(e,1)}},{key:"has",value:function(e){return 1===this._actual.get(e)}}]),e}()},85025:function(e,t,n){"use strict";n.d(t,{h:function(){return a}});var i=n(15671),r=n(43144),o=n(67033),a=function(){function e(){(0,i.Z)(this,e)}return(0,r.Z)(e,null,[{key:"insert",value:function(e,t){return{range:new o.e(e.lineNumber,e.column,e.lineNumber,e.column),text:t,forceMoveMarkers:!0}}},{key:"delete",value:function(e){return{range:e,text:null}}},{key:"replace",value:function(e,t){return{range:e,text:t}}},{key:"replaceMove",value:function(e,t){return{range:e,text:t,forceMoveMarkers:!0}}}]),e}()},34763:function(e,t,n){"use strict";n.d(t,{A:function(){return a}});var i=n(15671),r=n(43144),o=n(99404),a=function(){function e(t,n){(0,i.Z)(this,e),this._tokens=t,this._tokensCount=this._tokens.length>>>1,this._text=n}return(0,r.Z)(e,[{key:"equals",value:function(t){return t instanceof e&&this.slicedEquals(t,0,this._tokensCount)}},{key:"slicedEquals",value:function(e,t,n){if(this._text!==e._text)return!1;if(this._tokensCount!==e._tokensCount)return!1;for(var i=t<<1,r=i+(n<<1),o=i;o<r;o++)if(this._tokens[o]!==e._tokens[o])return!1;return!0}},{key:"getLineContent",value:function(){return this._text}},{key:"getCount",value:function(){return this._tokensCount}},{key:"getStartOffset",value:function(e){return e>0?this._tokens[e-1<<1]:0}},{key:"getMetadata",value:function(e){return this._tokens[1+(e<<1)]}},{key:"getLanguageId",value:function(e){var t=this._tokens[1+(e<<1)];return o.NX.getLanguageId(t)}},{key:"getStandardTokenType",value:function(e){var t=this._tokens[1+(e<<1)];return o.NX.getTokenType(t)}},{key:"getForeground",value:function(e){var t=this._tokens[1+(e<<1)];return o.NX.getForeground(t)}},{key:"getClassName",value:function(e){var t=this._tokens[1+(e<<1)];return o.NX.getClassNameFromMetadata(t)}},{key:"getInlineStyle",value:function(e,t){var n=this._tokens[1+(e<<1)];return o.NX.getInlineStyleFromMetadata(n,t)}},{key:"getEndOffset",value:function(e){return this._tokens[e<<1]}},{key:"findTokenIndexAtOffset",value:function(t){return e.findIndexInTokensArray(this._tokens,t)}},{key:"inflate",value:function(){return this}},{key:"sliceAndInflate",value:function(e,t,n){return new s(this,e,t,n)}}],[{key:"convertToEndOffset",value:function(e,t){for(var n=(e.length>>>1)-1,i=0;i<n;i++)e[i<<1]=e[i+1<<1];e[n<<1]=t}},{key:"findIndexInTokensArray",value:function(e,t){if(e.length<=2)return 0;for(var n=0,i=(e.length>>>1)-1;n<i;){var r=n+Math.floor((i-n)/2),o=e[r<<1];if(o===t)return r+1;o<t?n=r+1:o>t&&(i=r)}return n}}]),e}(),s=function(){function e(t,n,r,o){(0,i.Z)(this,e),this._source=t,this._startOffset=n,this._endOffset=r,this._deltaOffset=o,this._firstTokenIndex=t.findTokenIndexAtOffset(n),this._tokensCount=0;for(var a=this._firstTokenIndex,s=t.getCount();a<s;a++){if(t.getStartOffset(a)>=r)break;this._tokensCount++}}return(0,r.Z)(e,[{key:"equals",value:function(t){return t instanceof e&&(this._startOffset===t._startOffset&&this._endOffset===t._endOffset&&this._deltaOffset===t._deltaOffset&&this._source.slicedEquals(t._source,this._firstTokenIndex,this._tokensCount))}},{key:"getCount",value:function(){return this._tokensCount}},{key:"getForeground",value:function(e){return this._source.getForeground(this._firstTokenIndex+e)}},{key:"getEndOffset",value:function(e){var t=this._source.getEndOffset(this._firstTokenIndex+e);return Math.min(this._endOffset,t)-this._startOffset+this._deltaOffset}},{key:"getClassName",value:function(e){return this._source.getClassName(this._firstTokenIndex+e)}},{key:"getInlineStyle",value:function(e,t){return this._source.getInlineStyle(this._firstTokenIndex+e,t)}},{key:"findTokenIndexAtOffset",value:function(e){return this._source.findTokenIndexAtOffset(e+this._startOffset-this._deltaOffset)-this._firstTokenIndex}}]),e}()},67297:function(e,t,n){"use strict";n.d(t,{L:function(){return o}});var i=n(15671),r=n(43144),o=function(){function e(t,n){(0,i.Z)(this,e),this.lineNumber=t,this.column=n}return(0,r.Z)(e,[{key:"with",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.lineNumber,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.column;return t===this.lineNumber&&n===this.column?this:new e(t,n)}},{key:"delta",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.with(this.lineNumber+e,this.column+t)}},{key:"equals",value:function(t){return e.equals(this,t)}},{key:"isBefore",value:function(t){return e.isBefore(this,t)}},{key:"isBeforeOrEqual",value:function(t){return e.isBeforeOrEqual(this,t)}},{key:"clone",value:function(){return new e(this.lineNumber,this.column)}},{key:"toString",value:function(){return"("+this.lineNumber+","+this.column+")"}}],[{key:"equals",value:function(e,t){return!e&&!t||!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column}},{key:"isBefore",value:function(e,t){return e.lineNumber<t.lineNumber||!(t.lineNumber<e.lineNumber)&&e.column<t.column}},{key:"isBeforeOrEqual",value:function(e,t){return e.lineNumber<t.lineNumber||!(t.lineNumber<e.lineNumber)&&e.column<=t.column}},{key:"compare",value:function(e,t){var n=0|e.lineNumber,i=0|t.lineNumber;return n===i?(0|e.column)-(0|t.column):n-i}},{key:"lift",value:function(t){return new e(t.lineNumber,t.column)}},{key:"isIPosition",value:function(e){return e&&"number"===typeof e.lineNumber&&"number"===typeof e.column}}]),e}()},67033:function(e,t,n){"use strict";n.d(t,{e:function(){return a}});var i=n(15671),r=n(43144),o=n(67297),a=function(){function e(t,n,r,o){(0,i.Z)(this,e),t>r||t===r&&n>o?(this.startLineNumber=r,this.startColumn=o,this.endLineNumber=t,this.endColumn=n):(this.startLineNumber=t,this.startColumn=n,this.endLineNumber=r,this.endColumn=o)}return(0,r.Z)(e,[{key:"isEmpty",value:function(){return e.isEmpty(this)}},{key:"containsPosition",value:function(t){return e.containsPosition(this,t)}},{key:"containsRange",value:function(t){return e.containsRange(this,t)}},{key:"strictContainsRange",value:function(t){return e.strictContainsRange(this,t)}},{key:"plusRange",value:function(t){return e.plusRange(this,t)}},{key:"intersectRanges",value:function(t){return e.intersectRanges(this,t)}},{key:"equalsRange",value:function(t){return e.equalsRange(this,t)}},{key:"getEndPosition",value:function(){return e.getEndPosition(this)}},{key:"getStartPosition",value:function(){return e.getStartPosition(this)}},{key:"toString",value:function(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}},{key:"setEndPosition",value:function(t,n){return new e(this.startLineNumber,this.startColumn,t,n)}},{key:"setStartPosition",value:function(t,n){return new e(t,n,this.endLineNumber,this.endColumn)}},{key:"collapseToStart",value:function(){return e.collapseToStart(this)}}],[{key:"isEmpty",value:function(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}},{key:"containsPosition",value:function(e,t){return!(t.lineNumber<e.startLineNumber||t.lineNumber>e.endLineNumber)&&(!(t.lineNumber===e.startLineNumber&&t.column<e.startColumn)&&!(t.lineNumber===e.endLineNumber&&t.column>e.endColumn))}},{key:"containsRange",value:function(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber)&&(!(t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber)&&(!(t.startLineNumber===e.startLineNumber&&t.startColumn<e.startColumn)&&!(t.endLineNumber===e.endLineNumber&&t.endColumn>e.endColumn)))}},{key:"strictContainsRange",value:function(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber)&&(!(t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber)&&(!(t.startLineNumber===e.startLineNumber&&t.startColumn<=e.startColumn)&&!(t.endLineNumber===e.endLineNumber&&t.endColumn>=e.endColumn)))}},{key:"plusRange",value:function(t,n){var i,r,o,a;return n.startLineNumber<t.startLineNumber?(i=n.startLineNumber,r=n.startColumn):n.startLineNumber===t.startLineNumber?(i=n.startLineNumber,r=Math.min(n.startColumn,t.startColumn)):(i=t.startLineNumber,r=t.startColumn),n.endLineNumber>t.endLineNumber?(o=n.endLineNumber,a=n.endColumn):n.endLineNumber===t.endLineNumber?(o=n.endLineNumber,a=Math.max(n.endColumn,t.endColumn)):(o=t.endLineNumber,a=t.endColumn),new e(i,r,o,a)}},{key:"intersectRanges",value:function(t,n){var i=t.startLineNumber,r=t.startColumn,o=t.endLineNumber,a=t.endColumn,s=n.startLineNumber,u=n.startColumn,l=n.endLineNumber,c=n.endColumn;return i<s?(i=s,r=u):i===s&&(r=Math.max(r,u)),o>l?(o=l,a=c):o===l&&(a=Math.min(a,c)),i>o||i===o&&r>a?null:new e(i,r,o,a)}},{key:"equalsRange",value:function(e,t){return!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn}},{key:"getEndPosition",value:function(e){return new o.L(e.endLineNumber,e.endColumn)}},{key:"getStartPosition",value:function(e){return new o.L(e.startLineNumber,e.startColumn)}},{key:"collapseToStart",value:function(t){return new e(t.startLineNumber,t.startColumn,t.startLineNumber,t.startColumn)}},{key:"fromPositions",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;return new e(t.lineNumber,t.column,n.lineNumber,n.column)}},{key:"lift",value:function(t){return t?new e(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn):null}},{key:"isIRange",value:function(e){return e&&"number"===typeof e.startLineNumber&&"number"===typeof e.startColumn&&"number"===typeof e.endLineNumber&&"number"===typeof e.endColumn}},{key:"areIntersectingOrTouching",value:function(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<t.startColumn)&&!(t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<e.startColumn)}},{key:"areIntersecting",value:function(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<=t.startColumn)&&!(t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<=e.startColumn)}},{key:"compareRangesUsingStarts",value:function(e,t){if(e&&t){var n=0|e.startLineNumber,i=0|t.startLineNumber;if(n===i){var r=0|e.startColumn,o=0|t.startColumn;if(r===o){var a=0|e.endLineNumber,s=0|t.endLineNumber;return a===s?(0|e.endColumn)-(0|t.endColumn):a-s}return r-o}return n-i}return(e?1:0)-(t?1:0)}},{key:"compareRangesUsingEnds",value:function(e,t){return e.endLineNumber===t.endLineNumber?e.endColumn===t.endColumn?e.startLineNumber===t.startLineNumber?e.startColumn-t.startColumn:e.startLineNumber-t.startLineNumber:e.endColumn-t.endColumn:e.endLineNumber-t.endLineNumber}},{key:"spansMultipleLines",value:function(e){return e.endLineNumber>e.startLineNumber}}]),e}()},74964:function(e,t,n){"use strict";n.d(t,{Y:function(){return u}});var i=n(15671),r=n(43144),o=n(60136),a=n(43668),s=n(67297),u=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e,r,o,a){var s;return(0,i.Z)(this,n),(s=t.call(this,e,r,o,a)).selectionStartLineNumber=e,s.selectionStartColumn=r,s.positionLineNumber=o,s.positionColumn=a,s}return(0,r.Z)(n,[{key:"toString",value:function(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}},{key:"equalsSelection",value:function(e){return n.selectionsEqual(this,e)}},{key:"getDirection",value:function(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}},{key:"setEndPosition",value:function(e,t){return 0===this.getDirection()?new n(this.startLineNumber,this.startColumn,e,t):new n(e,t,this.startLineNumber,this.startColumn)}},{key:"getPosition",value:function(){return new s.L(this.positionLineNumber,this.positionColumn)}},{key:"setStartPosition",value:function(e,t){return 0===this.getDirection()?new n(e,t,this.endLineNumber,this.endColumn):new n(this.endLineNumber,this.endColumn,e,t)}}],[{key:"selectionsEqual",value:function(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn}},{key:"fromPositions",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return new n(e.lineNumber,e.column,t.lineNumber,t.column)}},{key:"liftSelection",value:function(e){return new n(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}},{key:"selectionsArrEqual",value:function(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(var n=0,i=e.length;n<i;n++)if(!this.selectionsEqual(e[n],t[n]))return!1;return!0}},{key:"isISelection",value:function(e){return e&&"number"===typeof e.selectionStartLineNumber&&"number"===typeof e.selectionStartColumn&&"number"===typeof e.positionLineNumber&&"number"===typeof e.positionColumn}},{key:"createWithDirection",value:function(e,t,i,r,o){return 0===o?new n(e,t,i,r):new n(i,r,e,t)}}]),n}(n(67033).e)},85500:function(e,t,n){"use strict";n.d(t,{kH:function(){return p},l$:function(){return f},lZ:function(){return g},oe:function(){return h}});var i,r,o,a=n(15671),s=n(43144),u=n(51747),l=n(30487),c=n(27877);function d(){return i||(i=new TextDecoder("UTF-16LE")),i}function h(){return o||(o=l.r()?d():(r||(r=new TextDecoder("UTF-16BE")),r)),o}var f,p,g="undefined"!==typeof TextDecoder;function v(e,t,n){for(var i=[],r=0,o=0;o<n;o++){var a=c.mP(e,t);t+=2,i[r++]=String.fromCharCode(a)}return i.join("")}g?(f=function(e){return new m(e)},p=function(e,t,n){var i=new Uint16Array(e.buffer,t,n);if(n>0&&(65279===i[0]||65534===i[0]))return v(e,t,n);return d().decode(i)}):(f=function(e){return new _},p=v);var m=function(){function e(t){(0,a.Z)(this,e),this._capacity=0|t,this._buffer=new Uint16Array(this._capacity),this._completedStrings=null,this._bufferLength=0}return(0,s.Z)(e,[{key:"reset",value:function(){this._completedStrings=null,this._bufferLength=0}},{key:"build",value:function(){return null!==this._completedStrings?(this._flushBuffer(),this._completedStrings.join("")):this._buildBuffer()}},{key:"_buildBuffer",value:function(){if(0===this._bufferLength)return"";var e=new Uint16Array(this._buffer.buffer,0,this._bufferLength);return h().decode(e)}},{key:"_flushBuffer",value:function(){var e=this._buildBuffer();this._bufferLength=0,null===this._completedStrings?this._completedStrings=[e]:this._completedStrings[this._completedStrings.length]=e}},{key:"write1",value:function(e){var t=this._capacity-this._bufferLength;t<=1&&(0===t||u.ZG(e))&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}},{key:"appendASCII",value:function(e){this._bufferLength===this._capacity&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}},{key:"appendASCIIString",value:function(e){var t=e.length;if(this._bufferLength+t>=this._capacity)return this._flushBuffer(),void(this._completedStrings[this._completedStrings.length]=e);for(var n=0;n<t;n++)this._buffer[this._bufferLength++]=e.charCodeAt(n)}}]),e}(),_=function(){function e(){(0,a.Z)(this,e),this._pieces=[],this._piecesLen=0}return(0,s.Z)(e,[{key:"reset",value:function(){this._pieces=[],this._piecesLen=0}},{key:"build",value:function(){return this._pieces.join("")}},{key:"write1",value:function(e){this._pieces[this._piecesLen++]=String.fromCharCode(e)}},{key:"appendASCII",value:function(e){this._pieces[this._piecesLen++]=String.fromCharCode(e)}},{key:"appendASCIIString",value:function(e){this._pieces[this._piecesLen++]=e}}]),e}()},98154:function(e,t,n){"use strict";n.d(t,{Hi:function(){return s},WU:function(){return o},hG:function(){return a}});var i=n(15671),r=n(43144),o=function(){function e(t,n,r){(0,i.Z)(this,e),this.offset=0|t,this.type=n,this.language=r}return(0,r.Z)(e,[{key:"toString",value:function(){return"("+this.offset+", "+this.type+")"}}]),e}(),a=(0,r.Z)((function e(t,n){(0,i.Z)(this,e),this.tokens=t,this.endState=n})),s=(0,r.Z)((function e(t,n){(0,i.Z)(this,e),this.tokens=t,this.endState=n}))},30633:function(e,t,n){"use strict";n.d(t,{p:function(){return o}});var i=n(15671),r=n(43144),o=function(){function e(t,n,r,o,a,s){(0,i.Z)(this,e),this.id=t,this.label=n,this.alias=r,this._precondition=o,this._run=a,this._contextKeyService=s}return(0,r.Z)(e,[{key:"isSupported",value:function(){return this._contextKeyService.contextMatchesRules(this._precondition)}},{key:"run",value:function(){return this.isSupported()?this._run():Promise.resolve(void 0)}}]),e}()},30062:function(e,t,n){"use strict";function i(e){return e&&"string"===typeof e.id}n.d(t,{I:function(){return i},g:function(){return r}});var r={ICodeEditor:"vs.editor.ICodeEditor",IDiffEditor:"vs.editor.IDiffEditor"}},21204:function(e,t,n){"use strict";n.d(t,{u:function(){return i}});var i,r=n(56345),o=n(18948);!function(e){e.editorSimpleInput=new o.uy("editorSimpleInput",!1,!0),e.editorTextFocus=new o.uy("editorTextFocus",!1,r.N("editorTextFocus","Whether the editor text has focus (cursor is blinking)")),e.focus=new o.uy("editorFocus",!1,r.N("editorFocus","Whether the editor or an editor widget has focus (e.g. focus is in the find widget)")),e.textInputFocus=new o.uy("textInputFocus",!1,r.N("textInputFocus","Whether an editor or a rich text input has focus (cursor is blinking)")),e.readOnly=new o.uy("editorReadonly",!1,r.N("editorReadonly","Whether the editor is read only")),e.inDiffEditor=new o.uy("inDiffEditor",!1,r.N("inDiffEditor","Whether the context is a diff editor")),e.columnSelection=new o.uy("editorColumnSelection",!1,r.N("editorColumnSelection","Whether `editor.columnSelection` is enabled")),e.writable=e.readOnly.toNegated(),e.hasNonEmptySelection=new o.uy("editorHasSelection",!1,r.N("editorHasSelection","Whether the editor has text selected")),e.hasOnlyEmptySelection=e.hasNonEmptySelection.toNegated(),e.hasMultipleSelections=new o.uy("editorHasMultipleSelections",!1,r.N("editorHasMultipleSelections","Whether the editor has multiple selections")),e.hasSingleSelection=e.hasMultipleSelections.toNegated(),e.tabMovesFocus=new o.uy("editorTabMovesFocus",!1,r.N("editorTabMovesFocus","Whether `Tab` will move focus out of the editor")),e.tabDoesNotMoveFocus=e.tabMovesFocus.toNegated(),e.isInWalkThroughSnippet=new o.uy("isInEmbeddedEditor",!1,!0),e.canUndo=new o.uy("canUndo",!1,!0),e.canRedo=new o.uy("canRedo",!1,!0),e.hoverVisible=new o.uy("editorHoverVisible",!1,r.N("editorHoverVisible","Whether the editor hover is visible")),e.inCompositeEditor=new o.uy("inCompositeEditor",void 0,r.N("inCompositeEditor","Whether the editor is part of a larger editor (e.g. notebooks)")),e.notInCompositeEditor=e.inCompositeEditor.toNegated(),e.languageId=new o.uy("editorLangId","",r.N("editorLangId","The language identifier of the editor")),e.hasCompletionItemProvider=new o.uy("editorHasCompletionItemProvider",!1,r.N("editorHasCompletionItemProvider","Whether the editor has a completion item provider")),e.hasCodeActionsProvider=new o.uy("editorHasCodeActionsProvider",!1,r.N("editorHasCodeActionsProvider","Whether the editor has a code actions provider")),e.hasCodeLensProvider=new o.uy("editorHasCodeLensProvider",!1,r.N("editorHasCodeLensProvider","Whether the editor has a code lens provider")),e.hasDefinitionProvider=new o.uy("editorHasDefinitionProvider",!1,r.N("editorHasDefinitionProvider","Whether the editor has a definition provider")),e.hasDeclarationProvider=new o.uy("editorHasDeclarationProvider",!1,r.N("editorHasDeclarationProvider","Whether the editor has a declaration provider")),e.hasImplementationProvider=new o.uy("editorHasImplementationProvider",!1,r.N("editorHasImplementationProvider","Whether the editor has an implementation provider")),e.hasTypeDefinitionProvider=new o.uy("editorHasTypeDefinitionProvider",!1,r.N("editorHasTypeDefinitionProvider","Whether the editor has a type definition provider")),e.hasHoverProvider=new o.uy("editorHasHoverProvider",!1,r.N("editorHasHoverProvider","Whether the editor has a hover provider")),e.hasDocumentHighlightProvider=new o.uy("editorHasDocumentHighlightProvider",!1,r.N("editorHasDocumentHighlightProvider","Whether the editor has a document highlight provider")),e.hasDocumentSymbolProvider=new o.uy("editorHasDocumentSymbolProvider",!1,r.N("editorHasDocumentSymbolProvider","Whether the editor has a document symbol provider")),e.hasReferenceProvider=new o.uy("editorHasReferenceProvider",!1,r.N("editorHasReferenceProvider","Whether the editor has a reference provider")),e.hasRenameProvider=new o.uy("editorHasRenameProvider",!1,r.N("editorHasRenameProvider","Whether the editor has a rename provider")),e.hasSignatureHelpProvider=new o.uy("editorHasSignatureHelpProvider",!1,r.N("editorHasSignatureHelpProvider","Whether the editor has a signature help provider")),e.hasInlineHintsProvider=new o.uy("editorHasInlineHintsProvider",!1,r.N("editorHasInlineHintsProvider","Whether the editor has an inline hints provider")),e.hasDocumentFormattingProvider=new o.uy("editorHasDocumentFormattingProvider",!1,r.N("editorHasDocumentFormattingProvider","Whether the editor has a document formatting provider")),e.hasDocumentSelectionFormattingProvider=new o.uy("editorHasDocumentSelectionFormattingProvider",!1,r.N("editorHasDocumentSelectionFormattingProvider","Whether the editor has a document selection formatting provider")),e.hasMultipleDocumentFormattingProvider=new o.uy("editorHasMultipleDocumentFormattingProvider",!1,r.N("editorHasMultipleDocumentFormattingProvider","Whether the editor has multiple document formatting providers")),e.hasMultipleDocumentSelectionFormattingProvider=new o.uy("editorHasMultipleDocumentSelectionFormattingProvider",!1,r.N("editorHasMultipleDocumentSelectionFormattingProvider","Whether the editor has multiple document selection formatting providers"))}(i||(i={}))},46502:function(e,t,n){"use strict";n.d(t,{F5:function(){return r},Qi:function(){return l},dJ:function(){return s},je:function(){return c},sh:function(){return i},tk:function(){return u}});var i,r,o=n(15671),a=n(43144);!function(e){e[e.Left=1]="Left",e[e.Center=2]="Center",e[e.Right=4]="Right",e[e.Full=7]="Full"}(i||(i={})),function(e){e[e.Inline=1]="Inline",e[e.Gutter=2]="Gutter"}(r||(r={}));var s=function(){function e(t){(0,o.Z)(this,e),this.tabSize=Math.max(1,0|t.tabSize),this.indentSize=0|t.tabSize,this.insertSpaces=Boolean(t.insertSpaces),this.defaultEOL=0|t.defaultEOL,this.trimAutoWhitespace=Boolean(t.trimAutoWhitespace)}return(0,a.Z)(e,[{key:"equals",value:function(e){return this.tabSize===e.tabSize&&this.indentSize===e.indentSize&&this.insertSpaces===e.insertSpaces&&this.defaultEOL===e.defaultEOL&&this.trimAutoWhitespace===e.trimAutoWhitespace}},{key:"createChangeEvent",value:function(e){return{tabSize:this.tabSize!==e.tabSize,indentSize:this.indentSize!==e.indentSize,insertSpaces:this.insertSpaces!==e.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==e.trimAutoWhitespace}}}]),e}(),u=(0,a.Z)((function e(t,n){(0,o.Z)(this,e),this.range=t,this.matches=n})),l=(0,a.Z)((function e(t,n,i,r,a,s){(0,o.Z)(this,e),this.identifier=t,this.range=n,this.text=i,this.forceMoveMarkers=r,this.isAutoWhitespaceEdit=a,this._isTracked=s})),c=(0,a.Z)((function e(t,n,i){(0,o.Z)(this,e),this.reverseEdits=t,this.changes=n,this.trimAutoWhitespaceLineNumbers=i}))},57179:function(e,t,n){"use strict";n.d(t,{NL:function(){return y},e9:function(){return _}});var i=n(37762),r=n(15671),o=n(43144),a=n(56345),s=n(8729),u=n(74964),l=n(67775),c=n(51006),d=n(27877),h=n(51334);function f(e){return e.toString()}var p=function(){function e(t,n,i,o,a,s,u){(0,r.Z)(this,e),this.beforeVersionId=t,this.afterVersionId=n,this.beforeEOL=i,this.afterEOL=o,this.beforeCursorState=a,this.afterCursorState=s,this.changes=u}return(0,o.Z)(e,[{key:"append",value:function(e,t,n,i,r){t.length>0&&(this.changes=(0,c.b)(this.changes,t)),this.afterEOL=n,this.afterVersionId=i,this.afterCursorState=r}},{key:"serialize",value:function(){var t,n=10+e._writeSelectionsSize(this.beforeCursorState)+e._writeSelectionsSize(this.afterCursorState)+4,r=(0,i.Z)(this.changes);try{for(r.s();!(t=r.n()).done;){n+=t.value.writeSize()}}catch(l){r.e(l)}finally{r.f()}var o=new Uint8Array(n),a=0;d.T4(o,this.beforeVersionId,a),a+=4,d.T4(o,this.afterVersionId,a),a+=4,d.Cg(o,this.beforeEOL,a),a+=1,d.Cg(o,this.afterEOL,a),a+=1,a=e._writeSelections(o,this.beforeCursorState,a),a=e._writeSelections(o,this.afterCursorState,a),d.T4(o,this.changes.length,a),a+=4;var s,u=(0,i.Z)(this.changes);try{for(u.s();!(s=u.n()).done;){a=s.value.write(o,a)}}catch(l){u.e(l)}finally{u.f()}return o.buffer}}],[{key:"create",value:function(t,n){var i=t.getAlternativeVersionId(),r=m(t);return new e(i,i,r,r,n,n,[])}},{key:"_writeSelectionsSize",value:function(e){return 4+16*(e?e.length:0)}},{key:"_writeSelections",value:function(e,t,n){if(d.T4(e,t?t.length:0,n),n+=4,t){var r,o=(0,i.Z)(t);try{for(o.s();!(r=o.n()).done;){var a=r.value;d.T4(e,a.selectionStartLineNumber,n),n+=4,d.T4(e,a.selectionStartColumn,n),n+=4,d.T4(e,a.positionLineNumber,n),n+=4,d.T4(e,a.positionColumn,n),n+=4}}catch(s){o.e(s)}finally{o.f()}}return n}},{key:"_readSelections",value:function(e,t,n){var i=d.Ag(e,t);t+=4;for(var r=0;r<i;r++){var o=d.Ag(e,t);t+=4;var a=d.Ag(e,t);t+=4;var s=d.Ag(e,t);t+=4;var l=d.Ag(e,t);t+=4,n.push(new u.Y(o,a,s,l))}return t}},{key:"deserialize",value:function(t){var n=new Uint8Array(t),i=0,r=d.Ag(n,i);i+=4;var o=d.Ag(n,i);i+=4;var a=d.Q$(n,i);i+=1;var s=d.Q$(n,i);i+=1;var u=[];i=e._readSelections(n,i,u);var l=[];i=e._readSelections(n,i,l);var h=d.Ag(n,i);i+=4;for(var f=[],p=0;p<h;p++)i=c.q.read(n,i,f);return new e(r,o,a,s,u,l,f)}}]),e}(),g=function(){function e(t,n){(0,r.Z)(this,e),this.model=t,this._data=p.create(t,n)}return(0,o.Z)(e,[{key:"type",get:function(){return 0}},{key:"resource",get:function(){return l.o.isUri(this.model)?this.model:this.model.uri}},{key:"label",get:function(){return a.N("edit","Typing")}},{key:"toString",value:function(){return(this._data instanceof p?this._data:p.deserialize(this._data)).changes.map((function(e){return e.toString()})).join(", ")}},{key:"matchesResource",value:function(e){return(l.o.isUri(this.model)?this.model:this.model.uri).toString()===e.toString()}},{key:"setModel",value:function(e){this.model=e}},{key:"canAppend",value:function(e){return this.model===e&&this._data instanceof p}},{key:"append",value:function(e,t,n,i,r){this._data instanceof p&&this._data.append(e,t,n,i,r)}},{key:"close",value:function(){this._data instanceof p&&(this._data=this._data.serialize())}},{key:"open",value:function(){this._data instanceof p||(this._data=p.deserialize(this._data))}},{key:"undo",value:function(){if(l.o.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof p&&(this._data=this._data.serialize());var e=p.deserialize(this._data);this.model._applyUndo(e.changes,e.beforeEOL,e.beforeVersionId,e.beforeCursorState)}},{key:"redo",value:function(){if(l.o.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof p&&(this._data=this._data.serialize());var e=p.deserialize(this._data);this.model._applyRedo(e.changes,e.afterEOL,e.afterVersionId,e.afterCursorState)}},{key:"heapSize",value:function(){return this._data instanceof p&&(this._data=this._data.serialize()),this._data.byteLength+168}}]),e}(),v=function(){function e(t,n){(0,r.Z)(this,e),this.type=1,this.label=t,this._isOpen=!0,this._editStackElementsArr=n.slice(0),this._editStackElementsMap=new Map;var o,a=(0,i.Z)(this._editStackElementsArr);try{for(a.s();!(o=a.n()).done;){var s=o.value,u=f(s.resource);this._editStackElementsMap.set(u,s)}}catch(l){a.e(l)}finally{a.f()}this._delegate=null}return(0,o.Z)(e,[{key:"resources",get:function(){return this._editStackElementsArr.map((function(e){return e.resource}))}},{key:"prepareUndoRedo",value:function(){if(this._delegate)return this._delegate.prepareUndoRedo(this)}},{key:"matchesResource",value:function(e){var t=f(e);return this._editStackElementsMap.has(t)}},{key:"setModel",value:function(e){var t=f(l.o.isUri(e)?e:e.uri);this._editStackElementsMap.has(t)&&this._editStackElementsMap.get(t).setModel(e)}},{key:"canAppend",value:function(e){if(!this._isOpen)return!1;var t=f(e.uri);return!!this._editStackElementsMap.has(t)&&this._editStackElementsMap.get(t).canAppend(e)}},{key:"append",value:function(e,t,n,i,r){var o=f(e.uri);this._editStackElementsMap.get(o).append(e,t,n,i,r)}},{key:"close",value:function(){this._isOpen=!1}},{key:"open",value:function(){}},{key:"undo",value:function(){this._isOpen=!1;var e,t=(0,i.Z)(this._editStackElementsArr);try{for(t.s();!(e=t.n()).done;){e.value.undo()}}catch(n){t.e(n)}finally{t.f()}}},{key:"redo",value:function(){var e,t=(0,i.Z)(this._editStackElementsArr);try{for(t.s();!(e=t.n()).done;){e.value.redo()}}catch(n){t.e(n)}finally{t.f()}}},{key:"heapSize",value:function(e){var t=f(e);return this._editStackElementsMap.has(t)?this._editStackElementsMap.get(t).heapSize():0}},{key:"split",value:function(){return this._editStackElementsArr}},{key:"toString",value:function(){var e,t=[],n=(0,i.Z)(this._editStackElementsArr);try{for(n.s();!(e=n.n()).done;){var r=e.value;t.push("".concat((0,h.EZ)(r.resource),": ").concat(r))}}catch(o){n.e(o)}finally{n.f()}return"{".concat(t.join(", "),"}")}}]),e}();function m(e){return"\n"===e.getEOL()?0:1}function _(e){return!!e&&(e instanceof g||e instanceof v)}var y=function(){function e(t,n){(0,r.Z)(this,e),this._model=t,this._undoRedoService=n}return(0,o.Z)(e,[{key:"pushStackElement",value:function(){var e=this._undoRedoService.getLastElement(this._model.uri);_(e)&&e.close()}},{key:"popStackElement",value:function(){var e=this._undoRedoService.getLastElement(this._model.uri);_(e)&&e.open()}},{key:"clear",value:function(){this._undoRedoService.removeElements(this._model.uri)}},{key:"_getOrCreateEditStackElement",value:function(e){var t=this._undoRedoService.getLastElement(this._model.uri);if(_(t)&&t.canAppend(this._model))return t;var n=new g(this._model,e);return this._undoRedoService.pushElement(n),n}},{key:"pushEOL",value:function(e){var t=this._getOrCreateEditStackElement(null);this._model.setEOL(e),t.append(this._model,[],m(this._model),this._model.getAlternativeVersionId(),null)}},{key:"pushEditOperation",value:function(t,n,i){var r=this._getOrCreateEditStackElement(t),o=this._model.applyEdits(n,!0),a=e._computeCursorState(i,o),s=o.map((function(e,t){return{index:t,textChange:e.textChange}}));return s.sort((function(e,t){return e.textChange.oldPosition===t.textChange.oldPosition?e.index-t.index:e.textChange.oldPosition-t.textChange.oldPosition})),r.append(this._model,s.map((function(e){return e.textChange})),m(this._model),this._model.getAlternativeVersionId(),a),a}}],[{key:"_computeCursorState",value:function(e,t){try{return e?e(t):null}catch(n){return(0,s.dL)(n),null}}}]),e}()},51006:function(e,t,n){"use strict";n.d(t,{b:function(){return c},q:function(){return l}});var i=n(29439),r=n(15671),o=n(43144),a=n(27877),s=n(85500);function u(e){return e.replace(/\n/g,"\\n").replace(/\r/g,"\\r")}var l=function(){function e(t,n,i,o){(0,r.Z)(this,e),this.oldPosition=t,this.oldText=n,this.newPosition=i,this.newText=o}return(0,o.Z)(e,[{key:"oldLength",get:function(){return this.oldText.length}},{key:"oldEnd",get:function(){return this.oldPosition+this.oldText.length}},{key:"newLength",get:function(){return this.newText.length}},{key:"newEnd",get:function(){return this.newPosition+this.newText.length}},{key:"toString",value:function(){return 0===this.oldText.length?"(insert@".concat(this.oldPosition,' "').concat(u(this.newText),'")'):0===this.newText.length?"(delete@".concat(this.oldPosition,' "').concat(u(this.oldText),'")'):"(replace@".concat(this.oldPosition,' "').concat(u(this.oldText),'" with "').concat(u(this.newText),'")')}},{key:"writeSize",value:function(){return 8+e._writeStringSize(this.oldText)+e._writeStringSize(this.newText)}},{key:"write",value:function(t,n){return a.T4(t,this.oldPosition,n),n+=4,a.T4(t,this.newPosition,n),n+=4,n=e._writeString(t,this.oldText,n),n=e._writeString(t,this.newText,n)}}],[{key:"_writeStringSize",value:function(e){return 4+2*e.length}},{key:"_writeString",value:function(e,t,n){var i=t.length;a.T4(e,i,n),n+=4;for(var r=0;r<i;r++)a.oq(e,t.charCodeAt(r),n),n+=2;return n}},{key:"_readString",value:function(e,t){var n=a.Ag(e,t);return t+=4,(0,s.kH)(e,t,n)}},{key:"read",value:function(t,n,i){var r=a.Ag(t,n);n+=4;var o=a.Ag(t,n);n+=4;var s=e._readString(t,n);n+=e._writeStringSize(s);var u=e._readString(t,n);return n+=e._writeStringSize(u),i.push(new e(r,s,o,u)),n}}]),e}();function c(e,t){return null===e||0===e.length?t:new d(e,t).compress()}var d=function(){function e(t,n){(0,r.Z)(this,e),this._prevEdits=t,this._currEdits=n,this._result=[],this._resultLen=0,this._prevLen=this._prevEdits.length,this._prevDeltaOffset=0,this._currLen=this._currEdits.length,this._currDeltaOffset=0}return(0,o.Z)(e,[{key:"compress",value:function(){for(var t=0,n=0,r=this._getPrev(t),o=this._getCurr(n);t<this._prevLen||n<this._currLen;)if(null!==r)if(null!==o)if(o.oldEnd<=r.newPosition)this._acceptCurr(o),o=this._getCurr(++n);else if(r.newEnd<=o.oldPosition)this._acceptPrev(r),r=this._getPrev(++t);else if(o.oldPosition<r.newPosition){var a=e._splitCurr(o,r.newPosition-o.oldPosition),s=(0,i.Z)(a,2),u=s[0],c=s[1];this._acceptCurr(u),o=c}else if(r.newPosition<o.oldPosition){var d=e._splitPrev(r,o.oldPosition-r.newPosition),h=(0,i.Z)(d,2),f=h[0],p=h[1];this._acceptPrev(f),r=p}else{var g=void 0,v=void 0;if(o.oldEnd===r.newEnd)g=r,v=o,r=this._getPrev(++t),o=this._getCurr(++n);else if(o.oldEnd<r.newEnd){var m=e._splitPrev(r,o.oldLength),_=(0,i.Z)(m,2);g=_[0],v=o,r=_[1],o=this._getCurr(++n)}else{var y=e._splitCurr(o,r.newLength),b=(0,i.Z)(y,2),w=b[0],C=b[1];g=r,v=w,r=this._getPrev(++t),o=C}this._result[this._resultLen++]=new l(g.oldPosition,g.oldText,v.newPosition,v.newText),this._prevDeltaOffset+=g.newLength-g.oldLength,this._currDeltaOffset+=v.newLength-v.oldLength}else this._acceptPrev(r),r=this._getPrev(++t);else this._acceptCurr(o),o=this._getCurr(++n);var k=e._merge(this._result);return e._removeNoOps(k)}},{key:"_acceptCurr",value:function(t){this._result[this._resultLen++]=e._rebaseCurr(this._prevDeltaOffset,t),this._currDeltaOffset+=t.newLength-t.oldLength}},{key:"_getCurr",value:function(e){return e<this._currLen?this._currEdits[e]:null}},{key:"_acceptPrev",value:function(t){this._result[this._resultLen++]=e._rebasePrev(this._currDeltaOffset,t),this._prevDeltaOffset+=t.newLength-t.oldLength}},{key:"_getPrev",value:function(e){return e<this._prevLen?this._prevEdits[e]:null}}],[{key:"_rebaseCurr",value:function(e,t){return new l(t.oldPosition-e,t.oldText,t.newPosition,t.newText)}},{key:"_rebasePrev",value:function(e,t){return new l(t.oldPosition,t.oldText,t.newPosition+e,t.newText)}},{key:"_splitPrev",value:function(e,t){var n=e.newText.substr(0,t),i=e.newText.substr(t);return[new l(e.oldPosition,e.oldText,e.newPosition,n),new l(e.oldEnd,"",e.newPosition+t,i)]}},{key:"_splitCurr",value:function(e,t){var n=e.oldText.substr(0,t),i=e.oldText.substr(t);return[new l(e.oldPosition,n,e.newPosition,e.newText),new l(e.oldPosition+t,i,e.newEnd,"")]}},{key:"_merge",value:function(e){if(0===e.length)return e;for(var t=[],n=0,i=e[0],r=1;r<e.length;r++){var o=e[r];i.oldEnd===o.oldPosition?i=new l(i.oldPosition,i.oldText+o.oldText,i.newPosition,i.newText+o.newText):(t[n++]=i,i=o)}return t[n++]=i,t}},{key:"_removeNoOps",value:function(e){if(0===e.length)return e;for(var t=[],n=0,i=0;i<e.length;i++){var r=e[i];r.oldText!==r.newText&&(t[n++]=r)}return t}}]),e}()},28893:function(e,t,n){"use strict";n.d(t,{qx:function(){return ot},yO:function(){return Je}});var i=n(29439),r=n(97326),o=n(11752),a=n(61120),s=n(60136),u=n(43668),l=n(15671),c=n(43144),d=n(8729),h=n(11732),f=n(81626),p=n(51747),g=n(67775),v=n(76556),m=n(67297),_=n(67033),y=n(74964),b=n(46502),w=n(57179),C=(0,c.Z)((function e(){(0,l.Z)(this,e),this.spacesDiff=0,this.looksLikeAlignment=!1}));function k(e,t,n,i,r){var o;for(r.spacesDiff=0,r.looksLikeAlignment=!1,o=0;o<t&&o<i;o++){if(e.charCodeAt(o)!==n.charCodeAt(o))break}for(var a=0,s=0,u=o;u<t;u++){32===e.charCodeAt(u)?a++:s++}for(var l=0,c=0,d=o;d<i;d++){32===n.charCodeAt(d)?l++:c++}if(!(a>0&&s>0)&&!(l>0&&c>0)){var h=Math.abs(s-c),f=Math.abs(a-l);if(0===h)return r.spacesDiff=f,void(f>0&&0<=l-1&&l-1<e.length&&l<n.length&&32!==n.charCodeAt(l)&&32===e.charCodeAt(l-1)&&44===e.charCodeAt(e.length-1)&&(r.looksLikeAlignment=!0));f%h!==0||(r.spacesDiff=f/h)}}function S(e,t,n){for(var i=Math.min(e.getLineCount(),1e4),r=0,o=0,a="",s=0,u=[0,0,0,0,0,0,0,0,0],l=new C,c=1;c<=i;c++){for(var d=e.getLineLength(c),h=e.getLineContent(c),f=d<=65536,p=!1,g=0,v=0,m=0,_=0,y=d;_<y;_++){var b=f?h.charCodeAt(_):e.getLineCharCode(c,_);if(9===b)m++;else{if(32!==b){p=!0,g=_;break}v++}}if(p&&(m>0?r++:v>1&&o++,k(a,s,h,g,l),!l.looksLikeAlignment||n&&t===l.spacesDiff)){var w=l.spacesDiff;w<=8&&u[w]++,a=h,s=g}}var S=n;r!==o&&(S=r<o);var x=t;if(S){var L=S?0:.1*i;[2,4,6,8,3,5,7].forEach((function(e){var t=u[e];t>L&&(L=t,x=e)})),4===x&&u[4]>0&&u[2]>0&&u[2]>=u[4]/2&&(x=2)}return{insertSpaces:S,tabSize:x}}function x(e){return(1&e.metadata)>>>0}function L(e,t){e.metadata=254&e.metadata|t<<0}function E(e){return(2&e.metadata)>>>1===1}function D(e,t){e.metadata=253&e.metadata|(t?1:0)<<1}function N(e){return(4&e.metadata)>>>2===1}function M(e,t){e.metadata=251&e.metadata|(t?1:0)<<2}function T(e){return(8&e.metadata)>>>3===1}function I(e,t){e.metadata=247&e.metadata|(t?1:0)<<3}function O(e,t){e.metadata=207&e.metadata|t<<4}function A(e,t){e.metadata=191&e.metadata|(t?1:0)<<6}var R=function(){function e(t,n,i){(0,l.Z)(this,e),this.metadata=0,this.parent=this,this.left=this,this.right=this,L(this,1),this.start=n,this.end=i,this.delta=0,this.maxEnd=i,this.id=t,this.ownerId=0,this.options=null,M(this,!1),O(this,1),I(this,!1),A(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=n,this.cachedAbsoluteEnd=i,this.range=null,D(this,!1)}return(0,c.Z)(e,[{key:"reset",value:function(e,t,n,i){this.start=t,this.end=n,this.maxEnd=n,this.cachedVersionId=e,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=n,this.range=i}},{key:"setOptions",value:function(e){this.options=e;var t=this.options.className;M(this,"squiggly-error"===t||"squiggly-warning"===t||"squiggly-info"===t),O(this,this.options.stickiness),I(this,!(!this.options.overviewRuler||!this.options.overviewRuler.color)),A(this,this.options.collapseOnReplaceEdit)}},{key:"setCachedOffsets",value:function(e,t,n){this.cachedVersionId!==n&&(this.range=null),this.cachedVersionId=n,this.cachedAbsoluteStart=e,this.cachedAbsoluteEnd=t}},{key:"detach",value:function(){this.parent=null,this.left=null,this.right=null}}]),e}(),P=new R(null,0,0);P.parent=P,P.left=P,P.right=P,L(P,0);var Z=function(){function e(){(0,l.Z)(this,e),this.root=P,this.requestNormalizeDelta=!1}return(0,c.Z)(e,[{key:"intervalSearch",value:function(e,t,n,i,r){return this.root===P?[]:function(e,t,n,i,r,o){var a=e.root,s=0,u=0,l=0,c=[],d=0;for(;a!==P;)if(E(a))D(a.left,!1),D(a.right,!1),a===a.parent.right&&(s-=a.parent.delta),a=a.parent;else{if(!E(a.left)){if(s+a.maxEnd<t){D(a,!0);continue}if(a.left!==P){a=a.left;continue}}if((u=s+a.start)>n)D(a,!0);else{if((l=s+a.end)>=t){a.setCachedOffsets(u,l,o);var h=!0;i&&a.ownerId&&a.ownerId!==i&&(h=!1),r&&N(a)&&(h=!1),h&&(c[d++]=a)}D(a,!0),a.right===P||E(a.right)||(s+=a.delta,a=a.right)}}return D(e.root,!1),c}(this,e,t,n,i,r)}},{key:"search",value:function(e,t,n){return this.root===P?[]:function(e,t,n,i){var r=e.root,o=0,a=0,s=0,u=[],l=0;for(;r!==P;)if(E(r))D(r.left,!1),D(r.right,!1),r===r.parent.right&&(o-=r.parent.delta),r=r.parent;else if(r.left===P||E(r.left)){a=o+r.start,s=o+r.end,r.setCachedOffsets(a,s,i);var c=!0;t&&r.ownerId&&r.ownerId!==t&&(c=!1),n&&N(r)&&(c=!1),c&&(u[l++]=r),D(r,!0),r.right===P||E(r.right)||(o+=r.delta,r=r.right)}else r=r.left;return D(e.root,!1),u}(this,e,t,n)}},{key:"collectNodesFromOwner",value:function(e){return function(e,t){var n=e.root,i=[],r=0;for(;n!==P;)E(n)?(D(n.left,!1),D(n.right,!1),n=n.parent):n.left===P||E(n.left)?(n.ownerId===t&&(i[r++]=n),D(n,!0),n.right===P||E(n.right)||(n=n.right)):n=n.left;return D(e.root,!1),i}(this,e)}},{key:"collectNodesPostOrder",value:function(){return function(e){var t=e.root,n=[],i=0;for(;t!==P;)E(t)?(D(t.left,!1),D(t.right,!1),t=t.parent):t.left===P||E(t.left)?t.right===P||E(t.right)?(n[i++]=t,D(t,!0)):t=t.right:t=t.left;return D(e.root,!1),n}(this)}},{key:"insert",value:function(e){H(this,e),this._normalizeDeltaIfNecessary()}},{key:"delete",value:function(e){B(this,e),this._normalizeDeltaIfNecessary()}},{key:"resolveNode",value:function(e,t){for(var n=e,i=0;e!==this.root;)e===e.parent.right&&(i+=e.parent.delta),e=e.parent;var r=n.start+i,o=n.end+i;n.setCachedOffsets(r,o,t)}},{key:"acceptReplace",value:function(e,t,n,i){for(var r=function(e,t,n){var i=e.root,r=0,o=0,a=0,s=[],u=0;for(;i!==P;)if(E(i))D(i.left,!1),D(i.right,!1),i===i.parent.right&&(r-=i.parent.delta),i=i.parent;else{if(!E(i.left)){if(r+i.maxEnd<t){D(i,!0);continue}if(i.left!==P){i=i.left;continue}}(o=r+i.start)>n?D(i,!0):((a=r+i.end)>=t&&(i.setCachedOffsets(o,a,0),s[u++]=i),D(i,!0),i.right===P||E(i.right)||(r+=i.delta,i=i.right))}return D(e.root,!1),s}(this,e,e+t),o=0,a=r.length;o<a;o++){B(this,r[o])}this._normalizeDeltaIfNecessary(),function(e,t,n,i){var r=e.root,o=0,a=i-(n-t);for(;r!==P;)if(E(r))D(r.left,!1),D(r.right,!1),r===r.parent.right&&(o-=r.parent.delta),U(r),r=r.parent;else{if(!E(r.left)){if(o+r.maxEnd<t){D(r,!0);continue}if(r.left!==P){r=r.left;continue}}o+r.start>n?(r.start+=a,r.end+=a,r.delta+=a,(r.delta<-1073741824||r.delta>1073741824)&&(e.requestNormalizeDelta=!0),D(r,!0)):(D(r,!0),r.right===P||E(r.right)||(o+=r.delta,r=r.right))}D(e.root,!1)}(this,e,e+t,n),this._normalizeDeltaIfNecessary();for(var s=0,u=r.length;s<u;s++){var l=r[s];l.start=l.cachedAbsoluteStart,l.end=l.cachedAbsoluteEnd,j(l,e,e+t,n,i),l.maxEnd=l.end,H(this,l)}this._normalizeDeltaIfNecessary()}},{key:"_normalizeDeltaIfNecessary",value:function(){this.requestNormalizeDelta&&(this.requestNormalizeDelta=!1,function(e){var t=e.root,n=0;for(;t!==P;)t.left===P||E(t.left)?t.right===P||E(t.right)?(t.start=n+t.start,t.end=n+t.end,t.delta=0,U(t),D(t,!0),D(t.left,!1),D(t.right,!1),t===t.parent.right&&(n-=t.parent.delta),t=t.parent):(n+=t.delta,t=t.right):t=t.left;D(e.root,!1)}(this))}}]),e}();function F(e,t,n,i){return e<n||!(e>n)&&(1!==i&&(2===i||t))}function j(e,t,n,i,r){var o=function(e){return(48&e.metadata)>>>4}(e),a=0===o||2===o,s=1===o||2===o,u=n-t,l=i,c=Math.min(u,l),d=e.start,h=!1,f=e.end,p=!1;t<=d&&f<=n&&function(e){return(64&e.metadata)>>>6===1}(e)&&(e.start=t,h=!0,e.end=t,p=!0);var g=r?1:u>0?2:0;if(!h&&F(d,a,t,g)&&(h=!0),!p&&F(f,s,t,g)&&(p=!0),c>0&&!r){var v=u>l?2:0;!h&&F(d,a,t+c,v)&&(h=!0),!p&&F(f,s,t+c,v)&&(p=!0)}var m=r?1:0;!h&&F(d,a,n,m)&&(e.start=t+l,h=!0),!p&&F(f,s,n,m)&&(e.end=t+l,p=!0);var _=l-u;h||(e.start=Math.max(0,d+_)),p||(e.end=Math.max(0,f+_)),e.start>e.end&&(e.end=e.start)}function H(e,t){if(e.root===P)return t.parent=P,t.left=P,t.right=P,L(t,0),e.root=t,e.root;!function(e,t){var n=0,i=e.root,r=t.start,o=t.end;for(;;){if(q(r,o,i.start+n,i.end+n)<0){if(i.left===P){t.start-=n,t.end-=n,t.maxEnd-=n,i.left=t;break}i=i.left}else{if(i.right===P){t.start-=n+i.delta,t.end-=n+i.delta,t.maxEnd-=n+i.delta,i.right=t;break}n+=i.delta,i=i.right}}t.parent=i,t.left=P,t.right=P,L(t,1)}(e,t),K(t.parent);for(var n=t;n!==e.root&&1===x(n.parent);)if(n.parent===n.parent.parent.left){var i=n.parent.parent.right;1===x(i)?(L(n.parent,0),L(i,0),L(n.parent.parent,1),n=n.parent.parent):(n===n.parent.right&&W(e,n=n.parent),L(n.parent,0),L(n.parent.parent,1),V(e,n.parent.parent))}else{var r=n.parent.parent.left;1===x(r)?(L(n.parent,0),L(r,0),L(n.parent.parent,1),n=n.parent.parent):(n===n.parent.left&&V(e,n=n.parent),L(n.parent,0),L(n.parent.parent,1),W(e,n.parent.parent))}return L(e.root,0),t}function B(e,t){var n,i;if(t.left===P?(i=t,(n=t.right).delta+=t.delta,(n.delta<-1073741824||n.delta>1073741824)&&(e.requestNormalizeDelta=!0),n.start+=t.delta,n.end+=t.delta):t.right===P?(n=t.left,i=t):((n=(i=function(e){for(;e.left!==P;)e=e.left;return e}(t.right)).right).start+=i.delta,n.end+=i.delta,n.delta+=i.delta,(n.delta<-1073741824||n.delta>1073741824)&&(e.requestNormalizeDelta=!0),i.start+=t.delta,i.end+=t.delta,i.delta=t.delta,(i.delta<-1073741824||i.delta>1073741824)&&(e.requestNormalizeDelta=!0)),i===e.root)return e.root=n,L(n,0),t.detach(),z(),U(n),void(e.root.parent=P);var r,o=1===x(i);if(i===i.parent.left?i.parent.left=n:i.parent.right=n,i===t?n.parent=i.parent:(i.parent===t?n.parent=i:n.parent=i.parent,i.left=t.left,i.right=t.right,i.parent=t.parent,L(i,x(t)),t===e.root?e.root=i:t===t.parent.left?t.parent.left=i:t.parent.right=i,i.left!==P&&(i.left.parent=i),i.right!==P&&(i.right.parent=i)),t.detach(),o)return K(n.parent),i!==t&&(K(i),K(i.parent)),void z();for(K(n),K(n.parent),i!==t&&(K(i),K(i.parent));n!==e.root&&0===x(n);)n===n.parent.left?(1===x(r=n.parent.right)&&(L(r,0),L(n.parent,1),W(e,n.parent),r=n.parent.right),0===x(r.left)&&0===x(r.right)?(L(r,1),n=n.parent):(0===x(r.right)&&(L(r.left,0),L(r,1),V(e,r),r=n.parent.right),L(r,x(n.parent)),L(n.parent,0),L(r.right,0),W(e,n.parent),n=e.root)):(1===x(r=n.parent.left)&&(L(r,0),L(n.parent,1),V(e,n.parent),r=n.parent.left),0===x(r.left)&&0===x(r.right)?(L(r,1),n=n.parent):(0===x(r.left)&&(L(r.right,0),L(r,1),W(e,r),r=n.parent.left),L(r,x(n.parent)),L(n.parent,0),L(r.left,0),V(e,n.parent),n=e.root));L(n,0),z()}function z(){P.parent=P,P.delta=0,P.start=0,P.end=0}function W(e,t){var n=t.right;n.delta+=t.delta,(n.delta<-1073741824||n.delta>1073741824)&&(e.requestNormalizeDelta=!0),n.start+=t.delta,n.end+=t.delta,t.right=n.left,n.left!==P&&(n.left.parent=t),n.parent=t.parent,t.parent===P?e.root=n:t===t.parent.left?t.parent.left=n:t.parent.right=n,n.left=t,t.parent=n,U(t),U(n)}function V(e,t){var n=t.left;t.delta-=n.delta,(t.delta<-1073741824||t.delta>1073741824)&&(e.requestNormalizeDelta=!0),t.start-=n.delta,t.end-=n.delta,t.left=n.right,n.right!==P&&(n.right.parent=t),n.parent=t.parent,t.parent===P?e.root=n:t===t.parent.right?t.parent.right=n:t.parent.left=n,n.right=t,t.parent=n,U(t),U(n)}function Y(e){var t=e.end;if(e.left!==P){var n=e.left.maxEnd;n>t&&(t=n)}if(e.right!==P){var i=e.right.maxEnd+e.delta;i>t&&(t=i)}return t}function U(e){e.maxEnd=Y(e)}function K(e){for(;e!==P;){var t=Y(e);if(e.maxEnd===t)return;e.maxEnd=t,e=e.parent}}function q(e,t,n,i){return e===n?t-i:e-n}var G=n(37762),$=function(){function e(t,n){(0,l.Z)(this,e),this.piece=t,this.color=n,this.size_left=0,this.lf_left=0,this.parent=this,this.left=this,this.right=this}return(0,c.Z)(e,[{key:"next",value:function(){if(this.right!==Q)return X(this.right);for(var e=this;e.parent!==Q&&e.parent.left!==e;)e=e.parent;return e.parent===Q?Q:e.parent}},{key:"prev",value:function(){if(this.left!==Q)return J(this.left);for(var e=this;e.parent!==Q&&e.parent.right!==e;)e=e.parent;return e.parent===Q?Q:e.parent}},{key:"detach",value:function(){this.parent=null,this.left=null,this.right=null}}]),e}(),Q=new $(null,0);function X(e){for(;e.left!==Q;)e=e.left;return e}function J(e){for(;e.right!==Q;)e=e.right;return e}function ee(e){return e===Q?0:e.size_left+e.piece.length+ee(e.right)}function te(e){return e===Q?0:e.lf_left+e.piece.lineFeedCnt+te(e.right)}function ne(){Q.parent=Q}function ie(e,t){var n=t.right;n.size_left+=t.size_left+(t.piece?t.piece.length:0),n.lf_left+=t.lf_left+(t.piece?t.piece.lineFeedCnt:0),t.right=n.left,n.left!==Q&&(n.left.parent=t),n.parent=t.parent,t.parent===Q?e.root=n:t.parent.left===t?t.parent.left=n:t.parent.right=n,n.left=t,t.parent=n}function re(e,t){var n=t.left;t.left=n.right,n.right!==Q&&(n.right.parent=t),n.parent=t.parent,t.size_left-=n.size_left+(n.piece?n.piece.length:0),t.lf_left-=n.lf_left+(n.piece?n.piece.lineFeedCnt:0),t.parent===Q?e.root=n:t===t.parent.right?t.parent.right=n:t.parent.left=n,n.right=t,t.parent=n}function oe(e,t){var n,i;if(n=t.left===Q?(i=t).right:t.right===Q?(i=t).left:(i=X(t.right)).right,i===e.root)return e.root=n,n.color=0,t.detach(),ne(),void(e.root.parent=Q);var r=1===i.color;if(i===i.parent.left?i.parent.left=n:i.parent.right=n,i===t?(n.parent=i.parent,ue(e,n)):(i.parent===t?n.parent=i:n.parent=i.parent,ue(e,n),i.left=t.left,i.right=t.right,i.parent=t.parent,i.color=t.color,t===e.root?e.root=i:t===t.parent.left?t.parent.left=i:t.parent.right=i,i.left!==Q&&(i.left.parent=i),i.right!==Q&&(i.right.parent=i),i.size_left=t.size_left,i.lf_left=t.lf_left,ue(e,i)),t.detach(),n.parent.left===n){var o=ee(n),a=te(n);if(o!==n.parent.size_left||a!==n.parent.lf_left){var s=o-n.parent.size_left,u=a-n.parent.lf_left;n.parent.size_left=o,n.parent.lf_left=a,se(e,n.parent,s,u)}}if(ue(e,n.parent),r)ne();else{for(var l;n!==e.root&&0===n.color;)n===n.parent.left?(1===(l=n.parent.right).color&&(l.color=0,n.parent.color=1,ie(e,n.parent),l=n.parent.right),0===l.left.color&&0===l.right.color?(l.color=1,n=n.parent):(0===l.right.color&&(l.left.color=0,l.color=1,re(e,l),l=n.parent.right),l.color=n.parent.color,n.parent.color=0,l.right.color=0,ie(e,n.parent),n=e.root)):(1===(l=n.parent.left).color&&(l.color=0,n.parent.color=1,re(e,n.parent),l=n.parent.left),0===l.left.color&&0===l.right.color?(l.color=1,n=n.parent):(0===l.left.color&&(l.right.color=0,l.color=1,ie(e,l),l=n.parent.left),l.color=n.parent.color,n.parent.color=0,l.left.color=0,re(e,n.parent),n=e.root));n.color=0,ne()}}function ae(e,t){for(ue(e,t);t!==e.root&&1===t.parent.color;)if(t.parent===t.parent.parent.left){var n=t.parent.parent.right;1===n.color?(t.parent.color=0,n.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.right&&ie(e,t=t.parent),t.parent.color=0,t.parent.parent.color=1,re(e,t.parent.parent))}else{var i=t.parent.parent.left;1===i.color?(t.parent.color=0,i.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.left&&re(e,t=t.parent),t.parent.color=0,t.parent.parent.color=1,ie(e,t.parent.parent))}e.root.color=0}function se(e,t,n,i){for(;t!==e.root&&t!==Q;)t.parent.left===t&&(t.parent.size_left+=n,t.parent.lf_left+=i),t=t.parent}function ue(e,t){var n=0,i=0;if(t!==e.root){if(0===n){for(;t!==e.root&&t===t.parent.right;)t=t.parent;if(t===e.root)return;n=ee((t=t.parent).left)-t.size_left,i=te(t.left)-t.lf_left,t.size_left+=n,t.lf_left+=i}for(;t!==e.root&&(0!==n||0!==i);)t.parent.left===t&&(t.parent.size_left+=n,t.parent.lf_left+=i),t=t.parent}}Q.parent=Q,Q.left=Q,Q.right=Q,Q.color=0;var le=n(44322),ce=65535;function de(e){var t;return(t=e[e.length-1]<65536?new Uint16Array(e.length):new Uint32Array(e.length)).set(e,0),t}var he=(0,c.Z)((function e(t,n,i,r,o){(0,l.Z)(this,e),this.lineStarts=t,this.cr=n,this.lf=i,this.crlf=r,this.isBasicASCII=o}));function fe(e){for(var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=[0],i=1,r=0,o=e.length;r<o;r++){var a=e.charCodeAt(r);13===a?r+1<o&&10===e.charCodeAt(r+1)?(n[i++]=r+2,r++):n[i++]=r+1:10===a&&(n[i++]=r+1)}return t?de(n):n}var pe=(0,c.Z)((function e(t,n,i,r,o){(0,l.Z)(this,e),this.bufferIndex=t,this.start=n,this.end=i,this.lineFeedCnt=r,this.length=o})),ge=(0,c.Z)((function e(t,n){(0,l.Z)(this,e),this.buffer=t,this.lineStarts=n})),ve=function(){function e(t,n){var i=this;(0,l.Z)(this,e),this._pieces=[],this._tree=t,this._BOM=n,this._index=0,t.root!==Q&&t.iterate(t.root,(function(e){return e!==Q&&i._pieces.push(e.piece),!0}))}return(0,c.Z)(e,[{key:"read",value:function(){return 0===this._pieces.length?0===this._index?(this._index++,this._BOM):null:this._index>this._pieces.length-1?null:0===this._index?this._BOM+this._tree.getPieceContent(this._pieces[this._index++]):this._tree.getPieceContent(this._pieces[this._index++])}}]),e}(),me=function(){function e(t){(0,l.Z)(this,e),this._limit=t,this._cache=[]}return(0,c.Z)(e,[{key:"get",value:function(e){for(var t=this._cache.length-1;t>=0;t--){var n=this._cache[t];if(n.nodeStartOffset<=e&&n.nodeStartOffset+n.node.piece.length>=e)return n}return null}},{key:"get2",value:function(e){for(var t=this._cache.length-1;t>=0;t--){var n=this._cache[t];if(n.nodeStartLineNumber&&n.nodeStartLineNumber<e&&n.nodeStartLineNumber+n.node.piece.lineFeedCnt>=e)return n}return null}},{key:"set",value:function(e){this._cache.length>=this._limit&&this._cache.shift(),this._cache.push(e)}},{key:"validate",value:function(e){for(var t=!1,n=this._cache,i=0;i<n.length;i++){var r=n[i];(null===r.node.parent||r.nodeStartOffset>=e)&&(n[i]=null,t=!0)}if(t){var o,a=[],s=(0,G.Z)(n);try{for(s.s();!(o=s.n()).done;){var u=o.value;null!==u&&a.push(u)}}catch(l){s.e(l)}finally{s.f()}this._cache=a}}}]),e}(),_e=function(){function e(t,n,i){(0,l.Z)(this,e),this.create(t,n,i)}return(0,c.Z)(e,[{key:"create",value:function(e,t,n){this._buffers=[new ge("",[0])],this._lastChangeBufferPos={line:0,column:0},this.root=Q,this._lineCnt=1,this._length=0,this._EOL=t,this._EOLLength=t.length,this._EOLNormalized=n;for(var i=null,r=0,o=e.length;r<o;r++)if(e[r].buffer.length>0){e[r].lineStarts||(e[r].lineStarts=fe(e[r].buffer));var a=new pe(r+1,{line:0,column:0},{line:e[r].lineStarts.length-1,column:e[r].buffer.length-e[r].lineStarts[e[r].lineStarts.length-1]},e[r].lineStarts.length-1,e[r].buffer.length);this._buffers.push(e[r]),i=this.rbInsertRight(i,a)}this._searchCache=new me(1),this._lastVisitedLine={lineNumber:0,value:""},this.computeBufferMetadata()}},{key:"normalizeEOL",value:function(e){var t=this,n=ce,i=n-Math.floor(n/3),r=2*i,o="",a=0,s=[];if(this.iterate(this.root,(function(n){var u=t.getNodeContent(n),l=u.length;if(a<=i||a+l<r)return o+=u,a+=l,!0;var c=o.replace(/\r\n|\r|\n/g,e);return s.push(new ge(c,fe(c))),o=u,a=l,!0})),a>0){var u=o.replace(/\r\n|\r|\n/g,e);s.push(new ge(u,fe(u)))}this.create(s,e,!0)}},{key:"getEOL",value:function(){return this._EOL}},{key:"setEOL",value:function(e){this._EOL=e,this._EOLLength=this._EOL.length,this.normalizeEOL(e)}},{key:"createSnapshot",value:function(e){return new ve(this,e)}},{key:"getOffsetAt",value:function(e,t){for(var n=0,i=this.root;i!==Q;)if(i.left!==Q&&i.lf_left+1>=e)i=i.left;else{if(i.lf_left+i.piece.lineFeedCnt+1>=e)return(n+=i.size_left)+(this.getAccumulatedValue(i,e-i.lf_left-2)+t-1);e-=i.lf_left+i.piece.lineFeedCnt,n+=i.size_left+i.piece.length,i=i.right}return n}},{key:"getPositionAt",value:function(e){e=Math.floor(e),e=Math.max(0,e);for(var t=this.root,n=0,i=e;t!==Q;)if(0!==t.size_left&&t.size_left>=e)t=t.left;else{if(t.size_left+t.piece.length>=e){var r=this.getIndexOf(t,e-t.size_left);if(n+=t.lf_left+r.index,0===r.index){var o=i-this.getOffsetAt(n+1,1);return new m.L(n+1,o+1)}return new m.L(n+1,r.remainder+1)}if(e-=t.size_left+t.piece.length,n+=t.lf_left+t.piece.lineFeedCnt,t.right===Q){var a=i-e-this.getOffsetAt(n+1,1);return new m.L(n+1,a+1)}t=t.right}return new m.L(1,1)}},{key:"getValueInRange",value:function(e,t){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return"";var n=this.nodeAt2(e.startLineNumber,e.startColumn),i=this.nodeAt2(e.endLineNumber,e.endColumn),r=this.getValueInRange2(n,i);return t?t===this._EOL&&this._EOLNormalized&&t===this.getEOL()&&this._EOLNormalized?r:r.replace(/\r\n|\r|\n/g,t):r}},{key:"getValueInRange2",value:function(e,t){if(e.node===t.node){var n=e.node,i=this._buffers[n.piece.bufferIndex].buffer,r=this.offsetInBuffer(n.piece.bufferIndex,n.piece.start);return i.substring(r+e.remainder,r+t.remainder)}var o=e.node,a=this._buffers[o.piece.bufferIndex].buffer,s=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start),u=a.substring(s+e.remainder,s+o.piece.length);for(o=o.next();o!==Q;){var l=this._buffers[o.piece.bufferIndex].buffer,c=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);if(o===t.node){u+=l.substring(c,c+t.remainder);break}u+=l.substr(c,o.piece.length),o=o.next()}return u}},{key:"getLinesContent",value:function(){var e=this,t=[],n=0,i="",r=!1;return this.iterate(this.root,(function(o){if(o===Q)return!0;var a=o.piece,s=a.length;if(0===s)return!0;var u=e._buffers[a.bufferIndex].buffer,l=e._buffers[a.bufferIndex].lineStarts,c=a.start.line,d=a.end.line,h=l[c]+a.start.column;if(r&&(10===u.charCodeAt(h)&&(h++,s--),t[n++]=i,i="",r=!1,0===s))return!0;if(c===d)return e._EOLNormalized||13!==u.charCodeAt(h+s-1)?i+=u.substr(h,s):(r=!0,i+=u.substr(h,s-1)),!0;i+=e._EOLNormalized?u.substring(h,Math.max(h,l[c+1]-e._EOLLength)):u.substring(h,l[c+1]).replace(/(\r\n|\r|\n)$/,""),t[n++]=i;for(var f=c+1;f<d;f++)i=e._EOLNormalized?u.substring(l[f],l[f+1]-e._EOLLength):u.substring(l[f],l[f+1]).replace(/(\r\n|\r|\n)$/,""),t[n++]=i;return e._EOLNormalized||13!==u.charCodeAt(l[d]+a.end.column-1)?i=u.substr(l[d],a.end.column):(r=!0,0===a.end.column?n--:i=u.substr(l[d],a.end.column-1)),!0})),r&&(t[n++]=i,i=""),t[n++]=i,t}},{key:"getLength",value:function(){return this._length}},{key:"getLineCount",value:function(){return this._lineCnt}},{key:"getLineContent",value:function(e){return this._lastVisitedLine.lineNumber===e||(this._lastVisitedLine.lineNumber=e,e===this._lineCnt?this._lastVisitedLine.value=this.getLineRawContent(e):this._EOLNormalized?this._lastVisitedLine.value=this.getLineRawContent(e,this._EOLLength):this._lastVisitedLine.value=this.getLineRawContent(e).replace(/(\r\n|\r|\n)$/,"")),this._lastVisitedLine.value}},{key:"_getCharCode",value:function(e){if(e.remainder===e.node.piece.length){var t=e.node.next();if(!t)return 0;var n=this._buffers[t.piece.bufferIndex],i=this.offsetInBuffer(t.piece.bufferIndex,t.piece.start);return n.buffer.charCodeAt(i)}var r=this._buffers[e.node.piece.bufferIndex],o=this.offsetInBuffer(e.node.piece.bufferIndex,e.node.piece.start)+e.remainder;return r.buffer.charCodeAt(o)}},{key:"getLineCharCode",value:function(e,t){var n=this.nodeAt2(e,t+1);return this._getCharCode(n)}},{key:"getLineLength",value:function(e){if(e===this.getLineCount()){var t=this.getOffsetAt(e,1);return this.getLength()-t}return this.getOffsetAt(e+1,1)-this.getOffsetAt(e,1)-this._EOLLength}},{key:"findMatchesInNode",value:function(e,t,n,i,r,o,a,s,u,l,c){var d,h,f,p=this._buffers[e.piece.bufferIndex],g=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start),v=this.offsetInBuffer(e.piece.bufferIndex,r),m=this.offsetInBuffer(e.piece.bufferIndex,o),y={line:0,column:0};t._wordSeparators?(h=p.buffer.substring(v,m),f=function(e){return e+v},t.reset(0)):(h=p.buffer,f=function(e){return e},t.reset(v));do{if(d=t.next(h)){if(f(d.index)>=m)return l;this.positionInBuffer(e,f(d.index)-g,y);var b=this.getLineFeedCnt(e.piece.bufferIndex,r,y),w=y.line===r.line?y.column-r.column+i:y.column+1,C=w+d[0].length;if(c[l++]=(0,le.iE)(new _.e(n+b,w,n+b,C),d,s),f(d.index)+d[0].length>=m)return l;if(l>=u)return l}}while(d);return l}},{key:"findMatchesLineByLine",value:function(e,t,n,i){var r=[],o=0,a=new le.sz(t.wordSeparators,t.regex),s=this.nodeAt2(e.startLineNumber,e.startColumn);if(null===s)return[];var u=this.nodeAt2(e.endLineNumber,e.endColumn);if(null===u)return[];var l=this.positionInBuffer(s.node,s.remainder),c=this.positionInBuffer(u.node,u.remainder);if(s.node===u.node)return this.findMatchesInNode(s.node,a,e.startLineNumber,e.startColumn,l,c,t,n,i,o,r),r;for(var d=e.startLineNumber,h=s.node;h!==u.node;){var f=this.getLineFeedCnt(h.piece.bufferIndex,l,h.piece.end);if(f>=1){var p=this._buffers[h.piece.bufferIndex].lineStarts,g=this.offsetInBuffer(h.piece.bufferIndex,h.piece.start),v=p[l.line+f],m=d===e.startLineNumber?e.startColumn:1;if((o=this.findMatchesInNode(h,a,d,m,l,this.positionInBuffer(h,v-g),t,n,i,o,r))>=i)return r;d+=f}var _=d===e.startLineNumber?e.startColumn-1:0;if(d===e.endLineNumber){var y=this.getLineContent(d).substring(_,e.endColumn-1);return o=this._findMatchesInLine(t,a,y,e.endLineNumber,_,o,r,n,i),r}if((o=this._findMatchesInLine(t,a,this.getLineContent(d).substr(_),d,_,o,r,n,i))>=i)return r;d++,h=(s=this.nodeAt2(d,1)).node,l=this.positionInBuffer(s.node,s.remainder)}if(d===e.endLineNumber){var b=d===e.startLineNumber?e.startColumn-1:0,w=this.getLineContent(d).substring(b,e.endColumn-1);return o=this._findMatchesInLine(t,a,w,e.endLineNumber,b,o,r,n,i),r}var C=d===e.startLineNumber?e.startColumn:1;return o=this.findMatchesInNode(u.node,a,d,C,l,c,t,n,i,o,r),r}},{key:"_findMatchesInLine",value:function(e,t,n,i,r,o,a,s,u){var l,c=e.wordSeparators;if(!s&&e.simpleSearch){for(var d=e.simpleSearch,h=d.length,f=n.length,p=-h;-1!==(p=n.indexOf(d,p+h));)if((!c||(0,le.cM)(c,n,f,p,h))&&(a[o++]=new b.tk(new _.e(i,p+1+r,i,p+1+h+r),null),o>=u))return o;return o}t.reset(0);do{if((l=t.next(n))&&(a[o++]=(0,le.iE)(new _.e(i,l.index+1+r,i,l.index+1+l[0].length+r),l,s),o>=u))return o}while(l);return o}},{key:"insert",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this._EOLNormalized=this._EOLNormalized&&n,this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",this.root!==Q){var i=this.nodeAt(e),r=i.node,o=i.remainder,a=i.nodeStartOffset,s=r.piece,u=s.bufferIndex,l=this.positionInBuffer(r,o);if(0===r.piece.bufferIndex&&s.end.line===this._lastChangeBufferPos.line&&s.end.column===this._lastChangeBufferPos.column&&a+s.length===e&&t.length<ce)return this.appendToNode(r,t),void this.computeBufferMetadata();if(a===e)this.insertContentToNodeLeft(t,r),this._searchCache.validate(e);else if(a+r.piece.length>e){var c=[],d=new pe(s.bufferIndex,l,s.end,this.getLineFeedCnt(s.bufferIndex,l,s.end),this.offsetInBuffer(u,s.end)-this.offsetInBuffer(u,l));if(this.shouldCheckCRLF()&&this.endWithCR(t))if(10===this.nodeCharCodeAt(r,o)){var h={line:d.start.line+1,column:0};d=new pe(d.bufferIndex,h,d.end,this.getLineFeedCnt(d.bufferIndex,h,d.end),d.length-1),t+="\n"}if(this.shouldCheckCRLF()&&this.startWithLF(t))if(13===this.nodeCharCodeAt(r,o-1)){var f=this.positionInBuffer(r,o-1);this.deleteNodeTail(r,f),t="\r"+t,0===r.piece.length&&c.push(r)}else this.deleteNodeTail(r,l);else this.deleteNodeTail(r,l);var p=this.createNewPieces(t);d.length>0&&this.rbInsertRight(r,d);for(var g=r,v=0;v<p.length;v++)g=this.rbInsertRight(g,p[v]);this.deleteNodes(c)}else this.insertContentToNodeRight(t,r)}else for(var m=this.createNewPieces(t),_=this.rbInsertLeft(null,m[0]),y=1;y<m.length;y++)_=this.rbInsertRight(_,m[y]);this.computeBufferMetadata()}},{key:"delete",value:function(e,t){if(this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",!(t<=0||this.root===Q)){var n=this.nodeAt(e),i=this.nodeAt(e+t),r=n.node,o=i.node;if(r===o){var a=this.positionInBuffer(r,n.remainder),s=this.positionInBuffer(r,i.remainder);if(n.nodeStartOffset===e){if(t===r.piece.length){var u=r.next();return oe(this,r),this.validateCRLFWithPrevNode(u),void this.computeBufferMetadata()}return this.deleteNodeHead(r,s),this._searchCache.validate(e),this.validateCRLFWithPrevNode(r),void this.computeBufferMetadata()}return n.nodeStartOffset+r.piece.length===e+t?(this.deleteNodeTail(r,a),this.validateCRLFWithNextNode(r),void this.computeBufferMetadata()):(this.shrinkNode(r,a,s),void this.computeBufferMetadata())}var l=[],c=this.positionInBuffer(r,n.remainder);this.deleteNodeTail(r,c),this._searchCache.validate(e),0===r.piece.length&&l.push(r);var d=this.positionInBuffer(o,i.remainder);this.deleteNodeHead(o,d),0===o.piece.length&&l.push(o);for(var h=r.next();h!==Q&&h!==o;h=h.next())l.push(h);var f=0===r.piece.length?r.prev():r;this.deleteNodes(l),this.validateCRLFWithNextNode(f),this.computeBufferMetadata()}}},{key:"insertContentToNodeLeft",value:function(e,t){var n=[];if(this.shouldCheckCRLF()&&this.endWithCR(e)&&this.startWithLF(t)){var i=t.piece,r={line:i.start.line+1,column:0},o=new pe(i.bufferIndex,r,i.end,this.getLineFeedCnt(i.bufferIndex,r,i.end),i.length-1);t.piece=o,e+="\n",se(this,t,-1,-1),0===t.piece.length&&n.push(t)}for(var a=this.createNewPieces(e),s=this.rbInsertLeft(t,a[a.length-1]),u=a.length-2;u>=0;u--)s=this.rbInsertLeft(s,a[u]);this.validateCRLFWithPrevNode(s),this.deleteNodes(n)}},{key:"insertContentToNodeRight",value:function(e,t){this.adjustCarriageReturnFromNext(e,t)&&(e+="\n");for(var n=this.createNewPieces(e),i=this.rbInsertRight(t,n[0]),r=i,o=1;o<n.length;o++)r=this.rbInsertRight(r,n[o]);this.validateCRLFWithPrevNode(i)}},{key:"positionInBuffer",value:function(e,t,n){for(var i=e.piece,r=e.piece.bufferIndex,o=this._buffers[r].lineStarts,a=o[i.start.line]+i.start.column+t,s=i.start.line,u=i.end.line,l=0,c=0,d=0;s<=u&&(d=o[l=s+(u-s)/2|0],l!==u);)if(c=o[l+1],a<d)u=l-1;else{if(!(a>=c))break;s=l+1}return n?(n.line=l,n.column=a-d,null):{line:l,column:a-d}}},{key:"getLineFeedCnt",value:function(e,t,n){if(0===n.column)return n.line-t.line;var i=this._buffers[e].lineStarts;if(n.line===i.length-1)return n.line-t.line;var r=i[n.line+1],o=i[n.line]+n.column;if(r>o+1)return n.line-t.line;var a=o-1;return 13===this._buffers[e].buffer.charCodeAt(a)?n.line-t.line+1:n.line-t.line}},{key:"offsetInBuffer",value:function(e,t){return this._buffers[e].lineStarts[t.line]+t.column}},{key:"deleteNodes",value:function(e){for(var t=0;t<e.length;t++)oe(this,e[t])}},{key:"createNewPieces",value:function(e){if(e.length>ce){for(var t=[];e.length>ce;){var n=e.charCodeAt(ce-1),i=void 0;13===n||n>=55296&&n<=56319?(i=e.substring(0,ce-1),e=e.substring(ce-1)):(i=e.substring(0,ce),e=e.substring(ce));var r=fe(i);t.push(new pe(this._buffers.length,{line:0,column:0},{line:r.length-1,column:i.length-r[r.length-1]},r.length-1,i.length)),this._buffers.push(new ge(i,r))}var o=fe(e);return t.push(new pe(this._buffers.length,{line:0,column:0},{line:o.length-1,column:e.length-o[o.length-1]},o.length-1,e.length)),this._buffers.push(new ge(e,o)),t}var a=this._buffers[0].buffer.length,s=fe(e,!1),u=this._lastChangeBufferPos;if(this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-1]===a&&0!==a&&this.startWithLF(e)&&this.endWithCR(this._buffers[0].buffer)){this._lastChangeBufferPos={line:this._lastChangeBufferPos.line,column:this._lastChangeBufferPos.column+1},u=this._lastChangeBufferPos;for(var l=0;l<s.length;l++)s[l]+=a+1;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(s.slice(1)),this._buffers[0].buffer+="_"+e,a+=1}else{if(0!==a)for(var c=0;c<s.length;c++)s[c]+=a;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(s.slice(1)),this._buffers[0].buffer+=e}var d=this._buffers[0].buffer.length,h=this._buffers[0].lineStarts.length-1,f={line:h,column:d-this._buffers[0].lineStarts[h]},p=new pe(0,u,f,this.getLineFeedCnt(0,u,f),d-a);return this._lastChangeBufferPos=f,[p]}},{key:"getLineRawContent",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.root,i="",r=this._searchCache.get2(e);if(r){n=r.node;var o=this.getAccumulatedValue(n,e-r.nodeStartLineNumber-1),a=this._buffers[n.piece.bufferIndex].buffer,s=this.offsetInBuffer(n.piece.bufferIndex,n.piece.start);if(r.nodeStartLineNumber+n.piece.lineFeedCnt!==e){var u=this.getAccumulatedValue(n,e-r.nodeStartLineNumber);return a.substring(s+o,s+u-t)}i=a.substring(s+o,s+n.piece.length)}else for(var l=0,c=e;n!==Q;)if(n.left!==Q&&n.lf_left>=e-1)n=n.left;else{if(n.lf_left+n.piece.lineFeedCnt>e-1){var d=this.getAccumulatedValue(n,e-n.lf_left-2),h=this.getAccumulatedValue(n,e-n.lf_left-1),f=this._buffers[n.piece.bufferIndex].buffer,p=this.offsetInBuffer(n.piece.bufferIndex,n.piece.start);return l+=n.size_left,this._searchCache.set({node:n,nodeStartOffset:l,nodeStartLineNumber:c-(e-1-n.lf_left)}),f.substring(p+d,p+h-t)}if(n.lf_left+n.piece.lineFeedCnt===e-1){var g=this.getAccumulatedValue(n,e-n.lf_left-2),v=this._buffers[n.piece.bufferIndex].buffer,m=this.offsetInBuffer(n.piece.bufferIndex,n.piece.start);i=v.substring(m+g,m+n.piece.length);break}e-=n.lf_left+n.piece.lineFeedCnt,l+=n.size_left+n.piece.length,n=n.right}for(n=n.next();n!==Q;){var _=this._buffers[n.piece.bufferIndex].buffer;if(n.piece.lineFeedCnt>0){var y=this.getAccumulatedValue(n,0),b=this.offsetInBuffer(n.piece.bufferIndex,n.piece.start);return i+=_.substring(b,b+y-t)}var w=this.offsetInBuffer(n.piece.bufferIndex,n.piece.start);i+=_.substr(w,n.piece.length),n=n.next()}return i}},{key:"computeBufferMetadata",value:function(){for(var e=this.root,t=1,n=0;e!==Q;)t+=e.lf_left+e.piece.lineFeedCnt,n+=e.size_left+e.piece.length,e=e.right;this._lineCnt=t,this._length=n,this._searchCache.validate(this._length)}},{key:"getIndexOf",value:function(e,t){var n=e.piece,i=this.positionInBuffer(e,t),r=i.line-n.start.line;if(this.offsetInBuffer(n.bufferIndex,n.end)-this.offsetInBuffer(n.bufferIndex,n.start)===t){var o=this.getLineFeedCnt(e.piece.bufferIndex,n.start,i);if(o!==r)return{index:o,remainder:0}}return{index:r,remainder:i.column}}},{key:"getAccumulatedValue",value:function(e,t){if(t<0)return 0;var n=e.piece,i=this._buffers[n.bufferIndex].lineStarts,r=n.start.line+t+1;return r>n.end.line?i[n.end.line]+n.end.column-i[n.start.line]-n.start.column:i[r]-i[n.start.line]-n.start.column}},{key:"deleteNodeTail",value:function(e,t){var n=e.piece,i=n.lineFeedCnt,r=this.offsetInBuffer(n.bufferIndex,n.end),o=t,a=this.offsetInBuffer(n.bufferIndex,o),s=this.getLineFeedCnt(n.bufferIndex,n.start,o),u=s-i,l=a-r,c=n.length+l;e.piece=new pe(n.bufferIndex,n.start,o,s,c),se(this,e,l,u)}},{key:"deleteNodeHead",value:function(e,t){var n=e.piece,i=n.lineFeedCnt,r=this.offsetInBuffer(n.bufferIndex,n.start),o=t,a=this.getLineFeedCnt(n.bufferIndex,o,n.end),s=a-i,u=r-this.offsetInBuffer(n.bufferIndex,o),l=n.length+u;e.piece=new pe(n.bufferIndex,o,n.end,a,l),se(this,e,u,s)}},{key:"shrinkNode",value:function(e,t,n){var i=e.piece,r=i.start,o=i.end,a=i.length,s=i.lineFeedCnt,u=t,l=this.getLineFeedCnt(i.bufferIndex,i.start,u),c=this.offsetInBuffer(i.bufferIndex,t)-this.offsetInBuffer(i.bufferIndex,r);e.piece=new pe(i.bufferIndex,i.start,u,l,c),se(this,e,c-a,l-s);var d=new pe(i.bufferIndex,n,o,this.getLineFeedCnt(i.bufferIndex,n,o),this.offsetInBuffer(i.bufferIndex,o)-this.offsetInBuffer(i.bufferIndex,n)),h=this.rbInsertRight(e,d);this.validateCRLFWithPrevNode(h)}},{key:"appendToNode",value:function(e,t){this.adjustCarriageReturnFromNext(t,e)&&(t+="\n");var n=this.shouldCheckCRLF()&&this.startWithLF(t)&&this.endWithCR(e),i=this._buffers[0].buffer.length;this._buffers[0].buffer+=t;for(var r=fe(t,!1),o=0;o<r.length;o++)r[o]+=i;if(n){var a=this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-2];this._buffers[0].lineStarts.pop(),this._lastChangeBufferPos={line:this._lastChangeBufferPos.line-1,column:i-a}}this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(r.slice(1));var s=this._buffers[0].lineStarts.length-1,u={line:s,column:this._buffers[0].buffer.length-this._buffers[0].lineStarts[s]},l=e.piece.length+t.length,c=e.piece.lineFeedCnt,d=this.getLineFeedCnt(0,e.piece.start,u),h=d-c;e.piece=new pe(e.piece.bufferIndex,e.piece.start,u,d,l),this._lastChangeBufferPos=u,se(this,e,t.length,h)}},{key:"nodeAt",value:function(e){var t=this.root,n=this._searchCache.get(e);if(n)return{node:n.node,nodeStartOffset:n.nodeStartOffset,remainder:e-n.nodeStartOffset};for(var i=0;t!==Q;)if(t.size_left>e)t=t.left;else{if(t.size_left+t.piece.length>=e){i+=t.size_left;var r={node:t,remainder:e-t.size_left,nodeStartOffset:i};return this._searchCache.set(r),r}e-=t.size_left+t.piece.length,i+=t.size_left+t.piece.length,t=t.right}return null}},{key:"nodeAt2",value:function(e,t){for(var n=this.root,i=0;n!==Q;)if(n.left!==Q&&n.lf_left>=e-1)n=n.left;else{if(n.lf_left+n.piece.lineFeedCnt>e-1){var r=this.getAccumulatedValue(n,e-n.lf_left-2),o=this.getAccumulatedValue(n,e-n.lf_left-1);return i+=n.size_left,{node:n,remainder:Math.min(r+t-1,o),nodeStartOffset:i}}if(n.lf_left+n.piece.lineFeedCnt===e-1){var a=this.getAccumulatedValue(n,e-n.lf_left-2);if(a+t-1<=n.piece.length)return{node:n,remainder:a+t-1,nodeStartOffset:i};t-=n.piece.length-a;break}e-=n.lf_left+n.piece.lineFeedCnt,i+=n.size_left+n.piece.length,n=n.right}for(n=n.next();n!==Q;){if(n.piece.lineFeedCnt>0){var s=this.getAccumulatedValue(n,0),u=this.offsetOfNode(n);return{node:n,remainder:Math.min(t-1,s),nodeStartOffset:u}}if(n.piece.length>=t-1)return{node:n,remainder:t-1,nodeStartOffset:this.offsetOfNode(n)};t-=n.piece.length,n=n.next()}return null}},{key:"nodeCharCodeAt",value:function(e,t){if(e.piece.lineFeedCnt<1)return-1;var n=this._buffers[e.piece.bufferIndex],i=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start)+t;return n.buffer.charCodeAt(i)}},{key:"offsetOfNode",value:function(e){if(!e)return 0;for(var t=e.size_left;e!==this.root;)e.parent.right===e&&(t+=e.parent.size_left+e.parent.piece.length),e=e.parent;return t}},{key:"shouldCheckCRLF",value:function(){return!(this._EOLNormalized&&"\n"===this._EOL)}},{key:"startWithLF",value:function(e){if("string"===typeof e)return 10===e.charCodeAt(0);if(e===Q||0===e.piece.lineFeedCnt)return!1;var t=e.piece,n=this._buffers[t.bufferIndex].lineStarts,i=t.start.line,r=n[i]+t.start.column;return i!==n.length-1&&(!(n[i+1]>r+1)&&10===this._buffers[t.bufferIndex].buffer.charCodeAt(r))}},{key:"endWithCR",value:function(e){return"string"===typeof e?13===e.charCodeAt(e.length-1):e!==Q&&0!==e.piece.lineFeedCnt&&13===this.nodeCharCodeAt(e,e.piece.length-1)}},{key:"validateCRLFWithPrevNode",value:function(e){if(this.shouldCheckCRLF()&&this.startWithLF(e)){var t=e.prev();this.endWithCR(t)&&this.fixCRLF(t,e)}}},{key:"validateCRLFWithNextNode",value:function(e){if(this.shouldCheckCRLF()&&this.endWithCR(e)){var t=e.next();this.startWithLF(t)&&this.fixCRLF(e,t)}}},{key:"fixCRLF",value:function(e,t){var n,i=[],r=this._buffers[e.piece.bufferIndex].lineStarts;n=0===e.piece.end.column?{line:e.piece.end.line-1,column:r[e.piece.end.line]-r[e.piece.end.line-1]-1}:{line:e.piece.end.line,column:e.piece.end.column-1};var o=e.piece.length-1,a=e.piece.lineFeedCnt-1;e.piece=new pe(e.piece.bufferIndex,e.piece.start,n,a,o),se(this,e,-1,-1),0===e.piece.length&&i.push(e);var s={line:t.piece.start.line+1,column:0},u=t.piece.length-1,l=this.getLineFeedCnt(t.piece.bufferIndex,s,t.piece.end);t.piece=new pe(t.piece.bufferIndex,s,t.piece.end,l,u),se(this,t,-1,-1),0===t.piece.length&&i.push(t);var c=this.createNewPieces("\r\n");this.rbInsertRight(e,c[0]);for(var d=0;d<i.length;d++)oe(this,i[d])}},{key:"adjustCarriageReturnFromNext",value:function(e,t){if(this.shouldCheckCRLF()&&this.endWithCR(e)){var n=t.next();if(this.startWithLF(n)){if(e+="\n",1===n.piece.length)oe(this,n);else{var i=n.piece,r={line:i.start.line+1,column:0},o=i.length-1,a=this.getLineFeedCnt(i.bufferIndex,r,i.end);n.piece=new pe(i.bufferIndex,r,i.end,a,o),se(this,n,-1,-1)}return!0}}return!1}},{key:"iterate",value:function(e,t){if(e===Q)return t(Q);var n=this.iterate(e.left,t);return n?t(e)&&this.iterate(e.right,t):n}},{key:"getNodeContent",value:function(e){if(e===Q)return"";var t=this._buffers[e.piece.bufferIndex],n=e.piece,i=this.offsetInBuffer(n.bufferIndex,n.start),r=this.offsetInBuffer(n.bufferIndex,n.end);return t.buffer.substring(i,r)}},{key:"getPieceContent",value:function(e){var t=this._buffers[e.bufferIndex],n=this.offsetInBuffer(e.bufferIndex,e.start),i=this.offsetInBuffer(e.bufferIndex,e.end);return t.buffer.substring(n,i)}},{key:"rbInsertRight",value:function(e,t){var n=new $(t,1);if(n.left=Q,n.right=Q,n.parent=Q,n.size_left=0,n.lf_left=0,this.root===Q)this.root=n,n.color=0;else if(e.right===Q)e.right=n,n.parent=e;else{var i=X(e.right);i.left=n,n.parent=i}return ae(this,n),n}},{key:"rbInsertLeft",value:function(e,t){var n=new $(t,1);if(n.left=Q,n.right=Q,n.parent=Q,n.size_left=0,n.lf_left=0,this.root===Q)this.root=n,n.color=0;else if(e.left===Q)e.left=n,n.parent=e;else{var i=J(e.left);i.right=n,n.parent=i}return ae(this,n),n}}]),e}(),ye=n(98623),be=n(51006),we=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i,r,o,a,s,u){var c;return(0,l.Z)(this,n),(c=t.call(this))._onDidChangeContent=c._register(new h.Q5),c._BOM=i,c._mightContainNonBasicASCII=!s,c._mightContainRTL=o,c._mightContainUnusualLineTerminators=a,c._pieceTree=new _e(e,r,u),c}return(0,c.Z)(n,[{key:"mightContainRTL",value:function(){return this._mightContainRTL}},{key:"mightContainUnusualLineTerminators",value:function(){return this._mightContainUnusualLineTerminators}},{key:"resetMightContainUnusualLineTerminators",value:function(){this._mightContainUnusualLineTerminators=!1}},{key:"mightContainNonBasicASCII",value:function(){return this._mightContainNonBasicASCII}},{key:"getBOM",value:function(){return this._BOM}},{key:"getEOL",value:function(){return this._pieceTree.getEOL()}},{key:"createSnapshot",value:function(e){return this._pieceTree.createSnapshot(e?this._BOM:"")}},{key:"getOffsetAt",value:function(e,t){return this._pieceTree.getOffsetAt(e,t)}},{key:"getPositionAt",value:function(e){return this._pieceTree.getPositionAt(e)}},{key:"getRangeAt",value:function(e,t){var n=e+t,i=this.getPositionAt(e),r=this.getPositionAt(n);return new _.e(i.lineNumber,i.column,r.lineNumber,r.column)}},{key:"getValueInRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e.isEmpty())return"";var n=this._getEndOfLine(t);return this._pieceTree.getValueInRange(e,n)}},{key:"getValueLengthInRange",value:function(e){if(e.isEmpty())return 0;if(e.startLineNumber===e.endLineNumber)return e.endColumn-e.startColumn;var t=this.getOffsetAt(e.startLineNumber,e.startColumn);return this.getOffsetAt(e.endLineNumber,e.endColumn)-t}},{key:"getCharacterCountInRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(this._mightContainNonBasicASCII){for(var n=0,i=e.startLineNumber,r=e.endLineNumber,o=i;o<=r;o++)for(var a=this.getLineContent(o),s=o===i?e.startColumn-1:0,u=o===r?e.endColumn-1:a.length,l=s;l<u;l++)p.ZG(a.charCodeAt(l))?(n+=1,l+=1):n+=1;return n+=this._getEndOfLine(t).length*(r-i)}return this.getValueLengthInRange(e,t)}},{key:"getLength",value:function(){return this._pieceTree.getLength()}},{key:"getLineCount",value:function(){return this._pieceTree.getLineCount()}},{key:"getLinesContent",value:function(){return this._pieceTree.getLinesContent()}},{key:"getLineContent",value:function(e){return this._pieceTree.getLineContent(e)}},{key:"getLineCharCode",value:function(e,t){return this._pieceTree.getLineCharCode(e,t)}},{key:"getLineLength",value:function(e){return this._pieceTree.getLineLength(e)}},{key:"getLineFirstNonWhitespaceColumn",value:function(e){var t=p.LC(this.getLineContent(e));return-1===t?0:t+1}},{key:"getLineLastNonWhitespaceColumn",value:function(e){var t=p.ow(this.getLineContent(e));return-1===t?0:t+2}},{key:"_getEndOfLine",value:function(e){switch(e){case 1:return"\n";case 2:return"\r\n";case 0:return this.getEOL();default:throw new Error("Unknown EOL preference")}}},{key:"setEOL",value:function(e){this._pieceTree.setEOL(e)}},{key:"applyEdits",value:function(e,t,r){for(var o=this._mightContainRTL,a=this._mightContainUnusualLineTerminators,s=this._mightContainNonBasicASCII,u=!0,l=[],c=0;c<e.length;c++){var d=e[c];u&&d._isTracked&&(u=!1);var h=d.range;if(d.text){var f=!0;s||(s=f=!p.$i(d.text)),!o&&f&&(o=p.Ut(d.text)),!a&&f&&(a=p.ab(d.text))}var g="",v=0,m=0,_=0;if(d.text){var y,w=(0,ye.QZ)(d.text),C=(0,i.Z)(w,4);v=C[0],m=C[1],_=C[2],y=C[3];var k=this.getEOL();g=0===y||y===("\r\n"===k?2:1)?d.text:d.text.replace(/\r\n|\r|\n/g,k)}l[c]={sortIndex:c,identifier:d.identifier||null,range:h,rangeOffset:this.getOffsetAt(h.startLineNumber,h.startColumn),rangeLength:this.getValueLengthInRange(h),text:g,eolCount:v,firstLineLength:m,lastLineLength:_,forceMoveMarkers:Boolean(d.forceMoveMarkers),isAutoWhitespaceEdit:d.isAutoWhitespaceEdit||!1}}l.sort(n._sortOpsAscending);for(var S=!1,x=0,L=l.length-1;x<L;x++){var E=l[x].range.getEndPosition(),D=l[x+1].range.getStartPosition();if(D.isBeforeOrEqual(E)){if(D.isBefore(E))throw new Error("Overlapping ranges are not allowed!");S=!0}}u&&(l=this._reduceOperations(l));var N=r||t?n._getInverseEditRanges(l):[],M=[];if(t)for(var T=0;T<l.length;T++){var I=l[T],O=N[T];if(I.isAutoWhitespaceEdit&&I.range.isEmpty())for(var A=O.startLineNumber;A<=O.endLineNumber;A++){var R="";A===O.startLineNumber&&(R=this.getLineContent(I.range.startLineNumber),-1!==p.LC(R))||M.push({lineNumber:A,oldContent:R})}}var P=null;if(r){var Z=0;P=[];for(var F=0;F<l.length;F++){var j=l[F],H=N[F],B=this.getValueInRange(j.range),z=j.rangeOffset+Z;Z+=j.text.length-B.length,P[F]={sortIndex:j.sortIndex,identifier:j.identifier,range:H,text:B,textChange:new be.q(j.rangeOffset,B,z,j.text)}}S||P.sort((function(e,t){return e.sortIndex-t.sortIndex}))}this._mightContainRTL=o,this._mightContainUnusualLineTerminators=a,this._mightContainNonBasicASCII=s;var W=this._doApplyEdits(l),V=null;if(t&&M.length>0){M.sort((function(e,t){return t.lineNumber-e.lineNumber})),V=[];for(var Y=0,U=M.length;Y<U;Y++){var K=M[Y].lineNumber;if(!(Y>0&&M[Y-1].lineNumber===K)){var q=M[Y].oldContent,G=this.getLineContent(K);0!==G.length&&G!==q&&-1===p.LC(G)&&V.push(K)}}}return this._onDidChangeContent.fire(),new b.je(P,W,V)}},{key:"_reduceOperations",value:function(e){return e.length<1e3?e:[this._toSingleEditOperation(e)]}},{key:"_toSingleEditOperation",value:function(e){for(var t=!1,n=e[0].range,r=e[e.length-1].range,o=new _.e(n.startLineNumber,n.startColumn,r.endLineNumber,r.endColumn),a=n.startLineNumber,s=n.startColumn,u=[],l=0,c=e.length;l<c;l++){var d=e[l],h=d.range;t=t||d.forceMoveMarkers,u.push(this.getValueInRange(new _.e(a,s,h.startLineNumber,h.startColumn))),d.text.length>0&&u.push(d.text),a=h.endLineNumber,s=h.endColumn}var f=u.join(""),p=(0,ye.QZ)(f),g=(0,i.Z)(p,3),v=g[0],m=g[1],y=g[2];return{sortIndex:0,identifier:e[0].identifier,range:o,rangeOffset:this.getOffsetAt(o.startLineNumber,o.startColumn),rangeLength:this.getValueLengthInRange(o,0),text:f,eolCount:v,firstLineLength:m,lastLineLength:y,forceMoveMarkers:t,isAutoWhitespaceEdit:!1}}},{key:"_doApplyEdits",value:function(e){e.sort(n._sortOpsDescending);for(var t=[],i=0;i<e.length;i++){var r=e[i],o=r.range.startLineNumber,a=r.range.startColumn,s=r.range.endLineNumber,u=r.range.endColumn;if(o!==s||a!==u||0!==r.text.length){r.text?(this._pieceTree.delete(r.rangeOffset,r.rangeLength),this._pieceTree.insert(r.rangeOffset,r.text,!0)):this._pieceTree.delete(r.rangeOffset,r.rangeLength);var l=new _.e(o,a,s,u);t.push({range:l,rangeLength:r.rangeLength,text:r.text,rangeOffset:r.rangeOffset,forceMoveMarkers:r.forceMoveMarkers})}}return t}},{key:"findMatchesLineByLine",value:function(e,t,n,i){return this._pieceTree.findMatchesLineByLine(e,t,n,i)}}],[{key:"_getInverseEditRanges",value:function(e){for(var t=[],n=0,i=0,r=null,o=0,a=e.length;o<a;o++){var s=e[o],u=void 0,l=void 0;r?r.range.endLineNumber===s.range.startLineNumber?(u=n,l=i+(s.range.startColumn-r.range.endColumn)):(u=n+(s.range.startLineNumber-r.range.endLineNumber),l=s.range.startColumn):(u=s.range.startLineNumber,l=s.range.startColumn);var c=void 0;if(s.text.length>0){var d=s.eolCount+1;c=1===d?new _.e(u,l,u,l+s.firstLineLength):new _.e(u,l,u+d-1,s.lastLineLength+1)}else c=new _.e(u,l,u,l);n=c.endLineNumber,i=c.endColumn,t.push(c),r=s}return t}},{key:"_sortOpsAscending",value:function(e,t){var n=_.e.compareRangesUsingEnds(e.range,t.range);return 0===n?e.sortIndex-t.sortIndex:n}},{key:"_sortOpsDescending",value:function(e,t){var n=_.e.compareRangesUsingEnds(e.range,t.range);return 0===n?t.sortIndex-e.sortIndex:-n}}]),n}(f.JT),Ce=function(){function e(t,n,i,r,o,a,s,u,c){(0,l.Z)(this,e),this._chunks=t,this._bom=n,this._cr=i,this._lf=r,this._crlf=o,this._containsRTL=a,this._containsUnusualLineTerminators=s,this._isBasicASCII=u,this._normalizeEOL=c}return(0,c.Z)(e,[{key:"_getEOL",value:function(e){var t=this._cr+this._lf+this._crlf,n=this._cr+this._crlf;return 0===t?1===e?"\n":"\r\n":n>t/2?"\r\n":"\n"}},{key:"create",value:function(e){var t=this._getEOL(e),n=this._chunks;if(this._normalizeEOL&&("\r\n"===t&&(this._cr>0||this._lf>0)||"\n"===t&&(this._cr>0||this._crlf>0)))for(var i=0,r=n.length;i<r;i++){var o=n[i].buffer.replace(/\r\n|\r|\n/g,t),a=fe(o);n[i]=new ge(o,a)}var s=new we(n,this._bom,t,this._containsRTL,this._containsUnusualLineTerminators,this._isBasicASCII,this._normalizeEOL);return{textBuffer:s,disposable:s}}}]),e}(),ke=function(){function e(){(0,l.Z)(this,e),this.chunks=[],this.BOM="",this._hasPreviousChar=!1,this._previousChar=0,this._tmpLineStarts=[],this.cr=0,this.lf=0,this.crlf=0,this.containsRTL=!1,this.containsUnusualLineTerminators=!1,this.isBasicASCII=!0}return(0,c.Z)(e,[{key:"acceptChunk",value:function(e){if(0!==e.length){0===this.chunks.length&&p.uS(e)&&(this.BOM=p.c1,e=e.substr(1));var t=e.charCodeAt(e.length-1);13===t||t>=55296&&t<=56319?(this._acceptChunk1(e.substr(0,e.length-1),!1),this._hasPreviousChar=!0,this._previousChar=t):(this._acceptChunk1(e,!1),this._hasPreviousChar=!1,this._previousChar=t)}}},{key:"_acceptChunk1",value:function(e,t){(t||0!==e.length)&&(this._hasPreviousChar?this._acceptChunk2(String.fromCharCode(this._previousChar)+e):this._acceptChunk2(e))}},{key:"_acceptChunk2",value:function(e){var t=function(e,t){e.length=0,e[0]=0;for(var n=1,i=0,r=0,o=0,a=!0,s=0,u=t.length;s<u;s++){var l=t.charCodeAt(s);13===l?s+1<u&&10===t.charCodeAt(s+1)?(o++,e[n++]=s+2,s++):(i++,e[n++]=s+1):10===l?(r++,e[n++]=s+1):a&&9!==l&&(l<32||l>126)&&(a=!1)}var c=new he(de(e),i,r,o,a);return e.length=0,c}(this._tmpLineStarts,e);this.chunks.push(new ge(e,t.lineStarts)),this.cr+=t.cr,this.lf+=t.lf,this.crlf+=t.crlf,this.isBasicASCII&&(this.isBasicASCII=t.isBasicASCII),this.isBasicASCII||this.containsRTL||(this.containsRTL=p.Ut(e)),this.isBasicASCII||this.containsUnusualLineTerminators||(this.containsUnusualLineTerminators=p.ab(e))}},{key:"finish",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._finish(),new Ce(this.chunks,this.BOM,this.cr,this.lf,this.crlf,this.containsRTL,this.containsUnusualLineTerminators,this.isBasicASCII,e)}},{key:"_finish",value:function(){if(0===this.chunks.length&&this._acceptChunk1("",!0),this._hasPreviousChar){this._hasPreviousChar=!1;var e=this.chunks[this.chunks.length-1];e.buffer+=String.fromCharCode(this._previousChar);var t=fe(e.buffer);e.lineStarts=t,13===this._previousChar&&this.cr++}}}]),e}(),Se=(0,c.Z)((function e(){(0,l.Z)(this,e),this.changeType=1})),xe=(0,c.Z)((function e(t,n){(0,l.Z)(this,e),this.changeType=2,this.lineNumber=t,this.detail=n})),Le=(0,c.Z)((function e(t,n){(0,l.Z)(this,e),this.changeType=3,this.fromLineNumber=t,this.toLineNumber=n})),Ee=(0,c.Z)((function e(t,n,i){(0,l.Z)(this,e),this.changeType=4,this.fromLineNumber=t,this.toLineNumber=n,this.detail=i})),De=(0,c.Z)((function e(){(0,l.Z)(this,e),this.changeType=5})),Ne=function(){function e(t,n,i,r){(0,l.Z)(this,e),this.changes=t,this.versionId=n,this.isUndoing=i,this.isRedoing=r,this.resultingSelection=null}return(0,c.Z)(e,[{key:"containsEvent",value:function(e){for(var t=0,n=this.changes.length;t<n;t++){if(this.changes[t].changeType===e)return!0}return!1}}],[{key:"merge",value:function(t,n){return new e([].concat(t.changes).concat(n.changes),n.versionId,t.isUndoing||n.isUndoing,t.isRedoing||n.isRedoing)}}]),e}(),Me=function(){function e(t,n){(0,l.Z)(this,e),this.rawContentChangedEvent=t,this.contentChangedEvent=n}return(0,c.Z)(e,[{key:"merge",value:function(t){var n=Ne.merge(this.rawContentChangedEvent,t.rawContentChangedEvent),i=e._mergeChangeEvents(this.contentChangedEvent,t.contentChangedEvent);return new e(n,i)}}],[{key:"_mergeChangeEvents",value:function(e,t){return{changes:[].concat(e.changes).concat(t.changes),eol:t.eol,versionId:t.versionId,isUndoing:e.isUndoing||t.isUndoing,isRedoing:e.isRedoing||t.isRedoing,isFlush:e.isFlush||t.isFlush}}}]),e}(),Te=n(49396),Ie=n(34763),Oe=n(99404),Ae=n(59401),Re=n(96257),Pe=n(30487),Ze=function(){function e(){(0,l.Z)(this,e),this._beginState=[],this._valid=[],this._len=0,this._invalidLineStartIndex=0}return(0,c.Z)(e,[{key:"_reset",value:function(e){this._beginState=[],this._valid=[],this._len=0,this._invalidLineStartIndex=0,e&&this._setBeginState(0,e)}},{key:"flush",value:function(e){this._reset(e)}},{key:"invalidLineStartIndex",get:function(){return this._invalidLineStartIndex}},{key:"_invalidateLine",value:function(e){e<this._len&&(this._valid[e]=!1),e<this._invalidLineStartIndex&&(this._invalidLineStartIndex=e)}},{key:"_isValid",value:function(e){return e<this._len&&this._valid[e]}},{key:"getBeginState",value:function(e){return e<this._len?this._beginState[e]:null}},{key:"_ensureLine",value:function(e){for(;e>=this._len;)this._beginState[this._len]=null,this._valid[this._len]=!1,this._len++}},{key:"_deleteLines",value:function(e,t){0!==t&&(e+t>this._len&&(t=this._len-e),this._beginState.splice(e,t),this._valid.splice(e,t),this._len-=t)}},{key:"_insertLines",value:function(e,t){if(0!==t){for(var n=[],i=[],r=0;r<t;r++)n[r]=null,i[r]=!1;this._beginState=Te.Zv(this._beginState,e,n),this._valid=Te.Zv(this._valid,e,i),this._len+=t}}},{key:"_setValid",value:function(e,t){this._ensureLine(e),this._valid[e]=t}},{key:"_setBeginState",value:function(e,t){this._ensureLine(e),this._beginState[e]=t}},{key:"setEndState",value:function(e,t,n){if(this._setValid(t,!0),this._invalidLineStartIndex=t+1,t!==e-1){var i=this.getBeginState(t+1);if(null===i||!n.equals(i))return this._setBeginState(t+1,n),void this._invalidateLine(t+1);for(var r=t+1;r<e&&this._isValid(r);)r++;this._invalidLineStartIndex=r}}},{key:"setFakeTokens",value:function(e){this._setValid(e,!1)}},{key:"applyEdits",value:function(e,t){for(var n=e.endLineNumber-e.startLineNumber,i=t,r=Math.min(n,i);r>=0;r--)this._invalidateLine(e.startLineNumber+r-1);this._acceptDeleteRange(e),this._acceptInsertText(new m.L(e.startLineNumber,e.startColumn),t)}},{key:"_acceptDeleteRange",value:function(e){e.startLineNumber-1>=this._len||this._deleteLines(e.startLineNumber,e.endLineNumber-e.startLineNumber)}},{key:"_acceptInsertText",value:function(e,t){e.lineNumber-1>=this._len||this._insertLines(e.lineNumber,t)}}]),e}(),Fe=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e){var r;return(0,l.Z)(this,n),(r=t.call(this))._isDisposed=!1,r._textModel=e,r._tokenizationStateStore=new Ze,r._tokenizationSupport=null,r._register(Oe.RW.onDidChange((function(e){var t=r._textModel.getLanguageIdentifier();-1!==e.changedLanguages.indexOf(t.language)&&(r._resetTokenizationState(),r._textModel.clearTokens())}))),r._register(r._textModel.onDidChangeRawContentFast((function(e){e.containsEvent(1)&&r._resetTokenizationState()}))),r._register(r._textModel.onDidChangeContentFast((function(e){for(var t=0,n=e.changes.length;t<n;t++){var o=e.changes[t],a=(0,ye.QZ)(o.text),s=(0,i.Z)(a,1)[0];r._tokenizationStateStore.applyEdits(o.range,s)}r._beginBackgroundTokenization()}))),r._register(r._textModel.onDidChangeAttached((function(){r._beginBackgroundTokenization()}))),r._register(r._textModel.onDidChangeLanguage((function(){r._resetTokenizationState(),r._textModel.clearTokens()}))),r._resetTokenizationState(),r}return(0,c.Z)(n,[{key:"dispose",value:function(){this._isDisposed=!0,(0,o.Z)((0,a.Z)(n.prototype),"dispose",this).call(this)}},{key:"_resetTokenizationState",value:function(){var e=function(e){var t=e.getLanguageIdentifier(),n=e.isTooLargeForTokenization()?null:Oe.RW.get(t.language),i=null;if(n)try{i=n.getInitialState()}catch(r){(0,d.dL)(r),n=null}return[n,i]}(this._textModel),t=(0,i.Z)(e,2),n=t[0],r=t[1];this._tokenizationSupport=n,this._tokenizationStateStore.flush(r),this._beginBackgroundTokenization()}},{key:"_beginBackgroundTokenization",value:function(){var e=this;this._textModel.isAttachedToEditor()&&this._hasLinesToTokenize()&&Pe.xS((function(){e._isDisposed||e._revalidateTokensNow()}))}},{key:"_revalidateTokensNow",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._textModel.getLineCount(),t=new ye.DA,n=Re.G.create(!1);this._hasLinesToTokenize()&&!(n.elapsed()>1);){if(this._tokenizeOneInvalidLine(t)>=e)break}this._beginBackgroundTokenization(),this._textModel.setTokens(t.tokens)}},{key:"tokenizeViewport",value:function(e,t){var n=new ye.DA;this._tokenizeViewport(n,e,t),this._textModel.setTokens(n.tokens)}},{key:"reset",value:function(){this._resetTokenizationState(),this._textModel.clearTokens()}},{key:"forceTokenization",value:function(e){var t=new ye.DA;this._updateTokensUntilLine(t,e),this._textModel.setTokens(t.tokens)}},{key:"isCheapToTokenize",value:function(e){if(!this._tokenizationSupport)return!0;var t=this._tokenizationStateStore.invalidLineStartIndex+1;return!(e>t)&&(e<t||this._textModel.getLineLength(e)<2048)}},{key:"_hasLinesToTokenize",value:function(){return!!this._tokenizationSupport&&this._tokenizationStateStore.invalidLineStartIndex<this._textModel.getLineCount()}},{key:"_tokenizeOneInvalidLine",value:function(e){if(!this._hasLinesToTokenize())return this._textModel.getLineCount()+1;var t=this._tokenizationStateStore.invalidLineStartIndex+1;return this._updateTokensUntilLine(e,t),t}},{key:"_updateTokensUntilLine",value:function(e,t){if(this._tokenizationSupport)for(var n=this._textModel.getLanguageIdentifier(),i=this._textModel.getLineCount(),r=t-1,o=this._tokenizationStateStore.invalidLineStartIndex;o<=r;o++){var a=this._textModel.getLineContent(o+1),s=this._tokenizationStateStore.getBeginState(o),u=je(n,this._tokenizationSupport,a,!0,s);e.add(o+1,u.tokens),this._tokenizationStateStore.setEndState(i,o,u.endState),o=this._tokenizationStateStore.invalidLineStartIndex-1}}},{key:"_tokenizeViewport",value:function(e,t,n){if(this._tokenizationSupport&&!(n<=this._tokenizationStateStore.invalidLineStartIndex))if(t<=this._tokenizationStateStore.invalidLineStartIndex)this._updateTokensUntilLine(e,n);else{for(var i=this._textModel.getLineFirstNonWhitespaceColumn(t),r=[],o=null,a=t-1;i>0&&a>=1;a--){var s=this._textModel.getLineFirstNonWhitespaceColumn(a);if(0!==s&&s<i){if(o=this._tokenizationStateStore.getBeginState(a-1))break;r.push(this._textModel.getLineContent(a)),i=s}}o||(o=this._tokenizationSupport.getInitialState());for(var u=this._textModel.getLanguageIdentifier(),l=o,c=r.length-1;c>=0;c--){l=je(u,this._tokenizationSupport,r[c],!1,l).endState}for(var d=t;d<=n;d++){var h=this._textModel.getLineContent(d),f=je(u,this._tokenizationSupport,h,!0,l);e.add(d,f.tokens),this._tokenizationStateStore.setFakeTokens(d-1),l=f.endState}}}}]),n}(f.JT);function je(e,t,n,i,r){var o=null;if(t)try{o=t.tokenize2(n,i,r.clone(),0)}catch(a){(0,d.dL)(a)}return o||(o=(0,Ae.mh)(e.id,n,r,0)),Ie.A.convertToEndOffset(o.tokens,n.length),o}var He=n(43717),Be=n(65262),ze=n(57429),We=n(8102),Ve=n(89938);function Ye(e){var t=new ke;return t.acceptChunk(e),t.finish()}function Ue(e,t){return("string"===typeof e?Ye(e):e).create(t)}var Ke=0,qe=999,Ge=function(){function e(t){(0,l.Z)(this,e),this._source=t,this._eos=!1}return(0,c.Z)(e,[{key:"read",value:function(){if(this._eos)return null;for(var e=[],t=0,n=0;;){var i=this._source.read();if(null===i)return this._eos=!0,0===t?null:e.join("");if(i.length>0&&(e[t++]=i,n+=i.length),n>=65536)return e.join("")}}}]),e}(),$e=function(){throw new Error("Invalid change accessor")},Qe=(0,c.Z)((function e(){(0,l.Z)(this,e),this._searchCanceledBrand=void 0}));function Xe(e){return e instanceof Qe?null:e}Qe.INSTANCE=new Qe;var Je=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i,o){var a,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,u=arguments.length>4?arguments[4]:void 0;(0,l.Z)(this,n),(a=t.call(this))._onWillDispose=a._register(new h.Q5),a.onWillDispose=a._onWillDispose.event,a._onDidChangeDecorations=a._register(new ut),a.onDidChangeDecorations=a._onDidChangeDecorations.event,a._onDidChangeLanguage=a._register(new h.Q5),a.onDidChangeLanguage=a._onDidChangeLanguage.event,a._onDidChangeLanguageConfiguration=a._register(new h.Q5),a.onDidChangeLanguageConfiguration=a._onDidChangeLanguageConfiguration.event,a._onDidChangeTokens=a._register(new h.Q5),a.onDidChangeTokens=a._onDidChangeTokens.event,a._onDidChangeOptions=a._register(new h.Q5),a.onDidChangeOptions=a._onDidChangeOptions.event,a._onDidChangeAttached=a._register(new h.Q5),a.onDidChangeAttached=a._onDidChangeAttached.event,a._eventEmitter=a._register(new lt),Ke++,a.id="$model"+Ke,a.isForSimpleWidget=i.isForSimpleWidget,a._associatedResource="undefined"===typeof s||null===s?g.o.parse("inmemory://model/"+Ke):s,a._undoRedoService=u,a._attachedEditorCount=0;var c=Ue(e,i.defaultEOL),d=c.textBuffer,f=c.disposable;a._buffer=d,a._bufferDisposable=f,a._options=n.resolveOptions(a._buffer,i);var v=a._buffer.getLineCount(),m=a._buffer.getValueLengthInRange(new _.e(1,1,v,a._buffer.getLineLength(v)+1),0);return i.largeFileOptimizations?a._isTooLargeForTokenization=m>n.LARGE_FILE_SIZE_THRESHOLD||v>n.LARGE_FILE_LINE_COUNT_THRESHOLD:a._isTooLargeForTokenization=!1,a._isTooLargeForSyncing=m>n.MODEL_SYNC_LIMIT,a._versionId=1,a._alternativeVersionId=1,a._initialUndoRedoSnapshot=null,a._isDisposed=!1,a._isDisposing=!1,a._languageIdentifier=o||Ae.pA,a._languageRegistryListener=Be.zu.onDidChange((function(e){e.languageIdentifier.id===a._languageIdentifier.id&&a._onDidChangeLanguageConfiguration.fire({})})),a._instanceId=p.PJ(Ke),a._lastDecorationId=0,a._decorations=Object.create(null),a._decorationsTree=new et,a._commandManager=new w.NL((0,r.Z)(a),u),a._isUndoing=!1,a._isRedoing=!1,a._trimAutoWhitespaceLines=null,a._tokens=new ye.Rl,a._tokens2=new ye.cx,a._tokenization=new Fe((0,r.Z)(a)),a}return(0,c.Z)(n,[{key:"onDidChangeRawContentFast",value:function(e){return this._eventEmitter.fastEvent((function(t){return e(t.rawContentChangedEvent)}))}},{key:"onDidChangeContentFast",value:function(e){return this._eventEmitter.fastEvent((function(t){return e(t.contentChangedEvent)}))}},{key:"onDidChangeContent",value:function(e){return this._eventEmitter.slowEvent((function(t){return e(t.contentChangedEvent)}))}},{key:"dispose",value:function(){this._isDisposing=!0,this._onWillDispose.fire(),this._languageRegistryListener.dispose(),this._tokenization.dispose(),this._isDisposed=!0,(0,o.Z)((0,a.Z)(n.prototype),"dispose",this).call(this),this._bufferDisposable.dispose(),this._isDisposing=!1;var e=new we([],"","\n",!1,!1,!0,!0);e.dispose(),this._buffer=e}},{key:"_assertNotDisposed",value:function(){if(this._isDisposed)throw new Error("Model is disposed!")}},{key:"_emitContentChangedEvent",value:function(e,t){this._isDisposing||this._eventEmitter.fire(new Me(e,t))}},{key:"setValue",value:function(e){if(this._assertNotDisposed(),null!==e){var t=Ue(e,this._options.defaultEOL),n=t.textBuffer,i=t.disposable;this._setValueFromTextBuffer(n,i)}}},{key:"_createContentChanged2",value:function(e,t,n,i,r,o,a){return{changes:[{range:e,rangeOffset:t,rangeLength:n,text:i}],eol:this._buffer.getEOL(),versionId:this.getVersionId(),isUndoing:r,isRedoing:o,isFlush:a}}},{key:"_setValueFromTextBuffer",value:function(e,t){this._assertNotDisposed();var n=this.getFullModelRange(),i=this.getValueLengthInRange(n),r=this.getLineCount(),o=this.getLineMaxColumn(r);this._buffer=e,this._bufferDisposable.dispose(),this._bufferDisposable=t,this._increaseVersionId(),this._tokens.flush(),this._tokens2.flush(),this._decorations=Object.create(null),this._decorationsTree=new et,this._commandManager.clear(),this._trimAutoWhitespaceLines=null,this._emitContentChangedEvent(new Ne([new Se],this._versionId,!1,!1),this._createContentChanged2(new _.e(1,1,r,o),0,i,this.getValue(),!1,!1,!0))}},{key:"setEOL",value:function(e){this._assertNotDisposed();var t=1===e?"\r\n":"\n";if(this._buffer.getEOL()!==t){var n=this.getFullModelRange(),i=this.getValueLengthInRange(n),r=this.getLineCount(),o=this.getLineMaxColumn(r);this._onBeforeEOLChange(),this._buffer.setEOL(t),this._increaseVersionId(),this._onAfterEOLChange(),this._emitContentChangedEvent(new Ne([new De],this._versionId,!1,!1),this._createContentChanged2(new _.e(1,1,r,o),0,i,this.getValue(),!1,!1,!1))}}},{key:"_onBeforeEOLChange",value:function(){var e=this.getVersionId(),t=this._decorationsTree.search(0,!1,!1,e);this._ensureNodesHaveRanges(t)}},{key:"_onAfterEOLChange",value:function(){for(var e=this.getVersionId(),t=this._decorationsTree.collectNodesPostOrder(),n=0,i=t.length;n<i;n++){var r=t[n],o=r.cachedAbsoluteStart-r.start,a=this._buffer.getOffsetAt(r.range.startLineNumber,r.range.startColumn),s=this._buffer.getOffsetAt(r.range.endLineNumber,r.range.endColumn);r.cachedAbsoluteStart=a,r.cachedAbsoluteEnd=s,r.cachedVersionId=e,r.start=a-o,r.end=s-o,U(r)}}},{key:"onBeforeAttached",value:function(){this._attachedEditorCount++,1===this._attachedEditorCount&&this._onDidChangeAttached.fire(void 0)}},{key:"onBeforeDetached",value:function(){this._attachedEditorCount--,0===this._attachedEditorCount&&this._onDidChangeAttached.fire(void 0)}},{key:"isAttachedToEditor",value:function(){return this._attachedEditorCount>0}},{key:"getAttachedEditorCount",value:function(){return this._attachedEditorCount}},{key:"isTooLargeForSyncing",value:function(){return this._isTooLargeForSyncing}},{key:"isTooLargeForTokenization",value:function(){return this._isTooLargeForTokenization}},{key:"isDisposed",value:function(){return this._isDisposed}},{key:"isDominatedByLongLines",value:function(){if(this._assertNotDisposed(),this.isTooLargeForTokenization())return!1;for(var e=0,t=0,n=this._buffer.getLineCount(),i=1;i<=n;i++){var r=this._buffer.getLineLength(i);r>=1e4?t+=r:e+=r}return t>e}},{key:"uri",get:function(){return this._associatedResource}},{key:"getOptions",value:function(){return this._assertNotDisposed(),this._options}},{key:"getFormattingOptions",value:function(){return{tabSize:this._options.indentSize,insertSpaces:this._options.insertSpaces}}},{key:"updateOptions",value:function(e){this._assertNotDisposed();var t="undefined"!==typeof e.tabSize?e.tabSize:this._options.tabSize,n="undefined"!==typeof e.indentSize?e.indentSize:this._options.indentSize,i="undefined"!==typeof e.insertSpaces?e.insertSpaces:this._options.insertSpaces,r="undefined"!==typeof e.trimAutoWhitespace?e.trimAutoWhitespace:this._options.trimAutoWhitespace,o=new b.dJ({tabSize:t,indentSize:n,insertSpaces:i,defaultEOL:this._options.defaultEOL,trimAutoWhitespace:r});if(!this._options.equals(o)){var a=this._options.createChangeEvent(o);this._options=o,this._onDidChangeOptions.fire(a)}}},{key:"detectIndentation",value:function(e,t){this._assertNotDisposed();var n=S(this._buffer,t,e);this.updateOptions({insertSpaces:n.insertSpaces,tabSize:n.tabSize,indentSize:n.tabSize})}},{key:"normalizeIndentation",value:function(e){return this._assertNotDisposed(),n.normalizeIndentation(e,this._options.indentSize,this._options.insertSpaces)}},{key:"getVersionId",value:function(){return this._assertNotDisposed(),this._versionId}},{key:"mightContainRTL",value:function(){return this._buffer.mightContainRTL()}},{key:"mightContainUnusualLineTerminators",value:function(){return this._buffer.mightContainUnusualLineTerminators()}},{key:"removeUnusualLineTerminators",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this.findMatches(p.Qe.source,!1,!0,!1,null,!1,1073741824);this._buffer.resetMightContainUnusualLineTerminators(),this.pushEditOperations(e,t.map((function(e){return{range:e.range,text:null}})),(function(){return null}))}},{key:"mightContainNonBasicASCII",value:function(){return this._buffer.mightContainNonBasicASCII()}},{key:"getAlternativeVersionId",value:function(){return this._assertNotDisposed(),this._alternativeVersionId}},{key:"getInitialUndoRedoSnapshot",value:function(){return this._assertNotDisposed(),this._initialUndoRedoSnapshot}},{key:"getOffsetAt",value:function(e){this._assertNotDisposed();var t=this._validatePosition(e.lineNumber,e.column,0);return this._buffer.getOffsetAt(t.lineNumber,t.column)}},{key:"getPositionAt",value:function(e){this._assertNotDisposed();var t=Math.min(this._buffer.getLength(),Math.max(0,e));return this._buffer.getPositionAt(t)}},{key:"_increaseVersionId",value:function(){this._versionId=this._versionId+1,this._alternativeVersionId=this._versionId}},{key:"_overwriteVersionId",value:function(e){this._versionId=e}},{key:"_overwriteAlternativeVersionId",value:function(e){this._alternativeVersionId=e}},{key:"_overwriteInitialUndoRedoSnapshot",value:function(e){this._initialUndoRedoSnapshot=e}},{key:"getValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._assertNotDisposed();var n=this.getFullModelRange(),i=this.getValueInRange(n,e);return t?this._buffer.getBOM()+i:i}},{key:"createSnapshot",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Ge(this._buffer.createSnapshot(e))}},{key:"getValueLength",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._assertNotDisposed();var n=this.getFullModelRange(),i=this.getValueLengthInRange(n,e);return t?this._buffer.getBOM().length+i:i}},{key:"getValueInRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._assertNotDisposed(),this._buffer.getValueInRange(this.validateRange(e),t)}},{key:"getValueLengthInRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._assertNotDisposed(),this._buffer.getValueLengthInRange(this.validateRange(e),t)}},{key:"getCharacterCountInRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._assertNotDisposed(),this._buffer.getCharacterCountInRange(this.validateRange(e),t)}},{key:"getLineCount",value:function(){return this._assertNotDisposed(),this._buffer.getLineCount()}},{key:"getLineContent",value:function(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineContent(e)}},{key:"getLineLength",value:function(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineLength(e)}},{key:"getLinesContent",value:function(){return this._assertNotDisposed(),this._buffer.getLinesContent()}},{key:"getEOL",value:function(){return this._assertNotDisposed(),this._buffer.getEOL()}},{key:"getEndOfLineSequence",value:function(){return this._assertNotDisposed(),"\n"===this._buffer.getEOL()?0:1}},{key:"getLineMinColumn",value:function(e){return this._assertNotDisposed(),1}},{key:"getLineMaxColumn",value:function(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineLength(e)+1}},{key:"getLineFirstNonWhitespaceColumn",value:function(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineFirstNonWhitespaceColumn(e)}},{key:"getLineLastNonWhitespaceColumn",value:function(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineLastNonWhitespaceColumn(e)}},{key:"_validateRangeRelaxedNoAllocations",value:function(e){var t=this._buffer.getLineCount(),n=e.startLineNumber,i=e.startColumn,r=Math.floor("number"!==typeof n||isNaN(n)?1:n),o=Math.floor("number"!==typeof i||isNaN(i)?1:i);if(r<1)r=1,o=1;else if(r>t)r=t,o=this.getLineMaxColumn(r);else if(o<=1)o=1;else{var a=this.getLineMaxColumn(r);o>=a&&(o=a)}var s=e.endLineNumber,u=e.endColumn,l=Math.floor("number"!==typeof s||isNaN(s)?1:s),c=Math.floor("number"!==typeof u||isNaN(u)?1:u);if(l<1)l=1,c=1;else if(l>t)l=t,c=this.getLineMaxColumn(l);else if(c<=1)c=1;else{var d=this.getLineMaxColumn(l);c>=d&&(c=d)}return n===r&&i===o&&s===l&&u===c&&e instanceof _.e&&!(e instanceof y.Y)?e:new _.e(r,o,l,c)}},{key:"_isValidPosition",value:function(e,t,n){if("number"!==typeof e||"number"!==typeof t)return!1;if(isNaN(e)||isNaN(t))return!1;if(e<1||t<1)return!1;if((0|e)!==e||(0|t)!==t)return!1;if(e>this._buffer.getLineCount())return!1;if(1===t)return!0;if(t>this.getLineMaxColumn(e))return!1;if(1===n){var i=this._buffer.getLineCharCode(e,t-2);if(p.ZG(i))return!1}return!0}},{key:"_validatePosition",value:function(e,t,n){var i=Math.floor("number"!==typeof e||isNaN(e)?1:e),r=Math.floor("number"!==typeof t||isNaN(t)?1:t),o=this._buffer.getLineCount();if(i<1)return new m.L(1,1);if(i>o)return new m.L(o,this.getLineMaxColumn(o));if(r<=1)return new m.L(i,1);var a=this.getLineMaxColumn(i);if(r>=a)return new m.L(i,a);if(1===n){var s=this._buffer.getLineCharCode(i,r-2);if(p.ZG(s))return new m.L(i,r-1)}return new m.L(i,r)}},{key:"validatePosition",value:function(e){return this._assertNotDisposed(),e instanceof m.L&&this._isValidPosition(e.lineNumber,e.column,1)?e:this._validatePosition(e.lineNumber,e.column,1)}},{key:"_isValidRange",value:function(e,t){var n=e.startLineNumber,i=e.startColumn,r=e.endLineNumber,o=e.endColumn;if(!this._isValidPosition(n,i,0))return!1;if(!this._isValidPosition(r,o,0))return!1;if(1===t){var a=i>1?this._buffer.getLineCharCode(n,i-2):0,s=o>1&&o<=this._buffer.getLineLength(r)?this._buffer.getLineCharCode(r,o-2):0,u=p.ZG(a),l=p.ZG(s);return!u&&!l}return!0}},{key:"validateRange",value:function(e){if(this._assertNotDisposed(),e instanceof _.e&&!(e instanceof y.Y)&&this._isValidRange(e,1))return e;var t=this._validatePosition(e.startLineNumber,e.startColumn,0),n=this._validatePosition(e.endLineNumber,e.endColumn,0),i=t.lineNumber,r=t.column,o=n.lineNumber,a=n.column,s=r>1?this._buffer.getLineCharCode(i,r-2):0,u=a>1&&a<=this._buffer.getLineLength(o)?this._buffer.getLineCharCode(o,a-2):0,l=p.ZG(s),c=p.ZG(u);return l||c?i===o&&r===a?new _.e(i,r-1,o,a-1):l&&c?new _.e(i,r-1,o,a+1):l?new _.e(i,r-1,o,a):new _.e(i,r,o,a+1):new _.e(i,r,o,a)}},{key:"modifyPosition",value:function(e,t){this._assertNotDisposed();var n=this.getOffsetAt(e)+t;return this.getPositionAt(Math.min(this._buffer.getLength(),Math.max(0,n)))}},{key:"getFullModelRange",value:function(){this._assertNotDisposed();var e=this.getLineCount();return new _.e(1,1,e,this.getLineMaxColumn(e))}},{key:"findMatchesLineByLine",value:function(e,t,n,i){return this._buffer.findMatchesLineByLine(e,t,n,i)}},{key:"findMatches",value:function(e,t,n,i,r,o){var a=this,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:qe;this._assertNotDisposed();var u=null;null!==t&&(Array.isArray(t)||(t=[t]),t.every((function(e){return _.e.isIRange(e)}))&&(u=t.map((function(e){return a.validateRange(e)})))),null===u&&(u=[this.getFullModelRange()]),u=u.sort((function(e,t){return e.startLineNumber-t.startLineNumber||e.startColumn-t.startColumn}));var l,c=[];if(c.push(u.reduce((function(e,t){return _.e.areIntersecting(e,t)?e.plusRange(t):(c.push(e),t)}))),!n&&e.indexOf("\n")<0){var d=new le.bc(e,n,i,r).parseSearchRequest();if(!d)return[];l=function(e){return a.findMatchesLineByLine(e,d,o,s)}}else l=function(t){return le.pM.findMatches(a,new le.bc(e,n,i,r),t,o,s)};return c.map(l).reduce((function(e,t){return e.concat(t)}),[])}},{key:"findNextMatch",value:function(e,t,n,i,r,o){this._assertNotDisposed();var a=this.validatePosition(t);if(!n&&e.indexOf("\n")<0){var s=new le.bc(e,n,i,r).parseSearchRequest();if(!s)return null;var u=this.getLineCount(),l=new _.e(a.lineNumber,a.column,u,this.getLineMaxColumn(u)),c=this.findMatchesLineByLine(l,s,o,1);return le.pM.findNextMatch(this,new le.bc(e,n,i,r),a,o),c.length>0?c[0]:(l=new _.e(1,1,a.lineNumber,this.getLineMaxColumn(a.lineNumber)),(c=this.findMatchesLineByLine(l,s,o,1)).length>0?c[0]:null)}return le.pM.findNextMatch(this,new le.bc(e,n,i,r),a,o)}},{key:"findPreviousMatch",value:function(e,t,n,i,r,o){this._assertNotDisposed();var a=this.validatePosition(t);return le.pM.findPreviousMatch(this,new le.bc(e,n,i,r),a,o)}},{key:"pushStackElement",value:function(){this._commandManager.pushStackElement()}},{key:"popStackElement",value:function(){this._commandManager.popStackElement()}},{key:"pushEOL",value:function(e){if(("\n"===this.getEOL()?0:1)!==e)try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),null===this._initialUndoRedoSnapshot&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEOL(e)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}},{key:"_validateEditOperation",value:function(e){return e instanceof b.Qi?e:new b.Qi(e.identifier||null,this.validateRange(e.range),e.text,e.forceMoveMarkers||!1,e.isAutoWhitespaceEdit||!1,e._isTracked||!1)}},{key:"_validateEditOperations",value:function(e){for(var t=[],n=0,i=e.length;n<i;n++)t[n]=this._validateEditOperation(e[n]);return t}},{key:"pushEditOperations",value:function(e,t,n){try{return this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._pushEditOperations(e,this._validateEditOperations(t),n)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}},{key:"_pushEditOperations",value:function(e,t,n){var i=this;if(this._options.trimAutoWhitespace&&this._trimAutoWhitespaceLines){var r=t.map((function(e){return{range:i.validateRange(e.range),text:e.text}})),o=!0;if(e)for(var a=0,s=e.length;a<s;a++){for(var u=e[a],l=!1,c=0,d=r.length;c<d;c++){var h=r[c].range,f=h.startLineNumber>u.endLineNumber,p=u.startLineNumber>h.endLineNumber;if(!f&&!p){l=!0;break}}if(!l){o=!1;break}}if(o)for(var g=0,v=this._trimAutoWhitespaceLines.length;g<v;g++){for(var m=this._trimAutoWhitespaceLines[g],y=this.getLineMaxColumn(m),w=!0,C=0,k=r.length;C<k;C++){var S=r[C].range,x=r[C].text;if(!(m<S.startLineNumber||m>S.endLineNumber)&&(!(m===S.startLineNumber&&S.startColumn===y&&S.isEmpty()&&x&&x.length>0&&"\n"===x.charAt(0))&&!(m===S.startLineNumber&&1===S.startColumn&&S.isEmpty()&&x&&x.length>0&&"\n"===x.charAt(x.length-1)))){w=!1;break}}if(w){var L=new _.e(m,1,m,y);t.push(new b.Qi(null,L,null,!1,!1,!1))}}this._trimAutoWhitespaceLines=null}return null===this._initialUndoRedoSnapshot&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEditOperation(e,t,n)}},{key:"_applyUndo",value:function(e,t,n,i){var r=this,o=e.map((function(e){var t=r.getPositionAt(e.newPosition),n=r.getPositionAt(e.newEnd);return{range:new _.e(t.lineNumber,t.column,n.lineNumber,n.column),text:e.oldText}}));this._applyUndoRedoEdits(o,t,!0,!1,n,i)}},{key:"_applyRedo",value:function(e,t,n,i){var r=this,o=e.map((function(e){var t=r.getPositionAt(e.oldPosition),n=r.getPositionAt(e.oldEnd);return{range:new _.e(t.lineNumber,t.column,n.lineNumber,n.column),text:e.newText}}));this._applyUndoRedoEdits(o,t,!1,!0,n,i)}},{key:"_applyUndoRedoEdits",value:function(e,t,n,i,r,o){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._isUndoing=n,this._isRedoing=i,this.applyEdits(e,!1),this.setEOL(t),this._overwriteAlternativeVersionId(r)}finally{this._isUndoing=!1,this._isRedoing=!1,this._eventEmitter.endDeferredEmit(o),this._onDidChangeDecorations.endDeferredEmit()}}},{key:"applyEdits",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit();var n=this._validateEditOperations(e);return this._doApplyEdits(n,t)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}},{key:"_doApplyEdits",value:function(e,t){var n=this._buffer.getLineCount(),r=this._buffer.applyEdits(e,this._options.trimAutoWhitespace,t),o=this._buffer.getLineCount(),a=r.changes;if(this._trimAutoWhitespaceLines=r.trimAutoWhitespaceLineNumbers,0!==a.length){for(var s=[],u=n,l=0,c=a.length;l<c;l++){var d=a[l],h=(0,ye.QZ)(d.text),f=(0,i.Z)(h,3),p=f[0],g=f[1],v=f[2];this._tokens.acceptEdit(d.range,p,g),this._tokens2.acceptEdit(d.range,p,g,v,d.text.length>0?d.text.charCodeAt(0):0),this._onDidChangeDecorations.fire(),this._decorationsTree.acceptReplace(d.rangeOffset,d.rangeLength,d.text.length,d.forceMoveMarkers);for(var m=d.range.startLineNumber,_=d.range.endLineNumber,y=_-m,b=p,w=Math.min(y,b),C=b-y,k=w;k>=0;k--){var S=m+k,x=o-u-C+S;s.push(new xe(S,this.getLineContent(x)))}if(w<y){var L=m+w;s.push(new Le(L+1,_))}if(w<b){for(var E=m+w,D=b-w,N=o-u-D+E+1,M=[],T=0;T<D;T++){var I=N+T;M[I-N]=this.getLineContent(I)}s.push(new Ee(E+1,m+b,M))}u+=C}this._increaseVersionId(),this._emitContentChangedEvent(new Ne(s,this.getVersionId(),this._isUndoing,this._isRedoing),{changes:a,eol:this._buffer.getEOL(),versionId:this.getVersionId(),isUndoing:this._isUndoing,isRedoing:this._isRedoing,isFlush:!1})}return null===r.reverseEdits?void 0:r.reverseEdits}},{key:"undo",value:function(){return this._undoRedoService.undo(this.uri)}},{key:"canUndo",value:function(){return this._undoRedoService.canUndo(this.uri)}},{key:"redo",value:function(){return this._undoRedoService.redo(this.uri)}},{key:"canRedo",value:function(){return this._undoRedoService.canRedo(this.uri)}},{key:"changeDecorations",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._assertNotDisposed();try{return this._onDidChangeDecorations.beginDeferredEmit(),this._changeDecorations(t,e)}finally{this._onDidChangeDecorations.endDeferredEmit()}}},{key:"_changeDecorations",value:function(e,t){var n=this,i={addDecoration:function(t,i){return n._deltaDecorationsImpl(e,[],[{range:t,options:i}])[0]},changeDecoration:function(e,t){n._changeDecorationImpl(e,t)},changeDecorationOptions:function(e,t){n._changeDecorationOptionsImpl(e,st(t))},removeDecoration:function(t){n._deltaDecorationsImpl(e,[t],[])},deltaDecorations:function(t,i){return 0===t.length&&0===i.length?[]:n._deltaDecorationsImpl(e,t,i)}},r=null;try{r=t(i)}catch(o){(0,d.dL)(o)}return i.addDecoration=$e,i.changeDecoration=$e,i.changeDecorationOptions=$e,i.removeDecoration=$e,i.deltaDecorations=$e,r}},{key:"deltaDecorations",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(this._assertNotDisposed(),e||(e=[]),0===e.length&&0===t.length)return[];try{return this._onDidChangeDecorations.beginDeferredEmit(),this._deltaDecorationsImpl(n,e,t)}finally{this._onDidChangeDecorations.endDeferredEmit()}}},{key:"_getTrackedRange",value:function(e){return this.getDecorationRange(e)}},{key:"_setTrackedRange",value:function(e,t,n){var i=e?this._decorations[e]:null;if(!i)return t?this._deltaDecorationsImpl(0,[],[{range:t,options:at[n]}])[0]:null;if(!t)return this._decorationsTree.delete(i),delete this._decorations[i.id],null;var r=this._validateRangeRelaxedNoAllocations(t),o=this._buffer.getOffsetAt(r.startLineNumber,r.startColumn),a=this._buffer.getOffsetAt(r.endLineNumber,r.endColumn);return this._decorationsTree.delete(i),i.reset(this.getVersionId(),o,a,r),i.setOptions(at[n]),this._decorationsTree.insert(i),i.id}},{key:"removeAllDecorationsWithOwnerId",value:function(e){if(!this._isDisposed)for(var t=this._decorationsTree.collectNodesFromOwner(e),n=0,i=t.length;n<i;n++){var r=t[n];this._decorationsTree.delete(r),delete this._decorations[r.id]}}},{key:"getDecorationOptions",value:function(e){var t=this._decorations[e];return t?t.options:null}},{key:"getDecorationRange",value:function(e){var t=this._decorations[e];if(!t)return null;var n=this.getVersionId();return t.cachedVersionId!==n&&this._decorationsTree.resolveNode(t,n),null===t.range&&(t.range=this._getRangeAt(t.cachedAbsoluteStart,t.cachedAbsoluteEnd)),t.range}},{key:"getLineDecorations",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e<1||e>this.getLineCount()?[]:this.getLinesDecorations(e,e,t,n)}},{key:"getLinesDecorations",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=this.getLineCount(),o=Math.min(r,Math.max(1,e)),a=Math.min(r,Math.max(1,t)),s=this.getLineMaxColumn(a);return this._getDecorationsInRange(new _.e(o,1,a,s),n,i)}},{key:"getDecorationsInRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=this.validateRange(e);return this._getDecorationsInRange(i,t,n)}},{key:"getOverviewRulerDecorations",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.getVersionId(),i=this._decorationsTree.search(e,t,!0,n);return this._ensureNodesHaveRanges(i)}},{key:"getAllDecorations",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.getVersionId(),i=this._decorationsTree.search(e,t,!1,n);return this._ensureNodesHaveRanges(i)}},{key:"_getDecorationsInRange",value:function(e,t,n){var i=this._buffer.getOffsetAt(e.startLineNumber,e.startColumn),r=this._buffer.getOffsetAt(e.endLineNumber,e.endColumn),o=this.getVersionId(),a=this._decorationsTree.intervalSearch(i,r,t,n,o);return this._ensureNodesHaveRanges(a)}},{key:"_ensureNodesHaveRanges",value:function(e){for(var t=0,n=e.length;t<n;t++){var i=e[t];null===i.range&&(i.range=this._getRangeAt(i.cachedAbsoluteStart,i.cachedAbsoluteEnd))}return e}},{key:"_getRangeAt",value:function(e,t){return this._buffer.getRangeAt(e,t-e)}},{key:"_changeDecorationImpl",value:function(e,t){var n=this._decorations[e];if(n){var i=this._validateRangeRelaxedNoAllocations(t),r=this._buffer.getOffsetAt(i.startLineNumber,i.startColumn),o=this._buffer.getOffsetAt(i.endLineNumber,i.endColumn);this._decorationsTree.delete(n),n.reset(this.getVersionId(),r,o,i),this._decorationsTree.insert(n),this._onDidChangeDecorations.checkAffectedAndFire(n.options)}}},{key:"_changeDecorationOptionsImpl",value:function(e,t){var n=this._decorations[e];if(n){var i=!(!n.options.overviewRuler||!n.options.overviewRuler.color),r=!(!t.overviewRuler||!t.overviewRuler.color);this._onDidChangeDecorations.checkAffectedAndFire(n.options),this._onDidChangeDecorations.checkAffectedAndFire(t),i!==r?(this._decorationsTree.delete(n),n.setOptions(t),this._decorationsTree.insert(n)):n.setOptions(t)}}},{key:"_deltaDecorationsImpl",value:function(e,t,n){for(var i=this.getVersionId(),r=t.length,o=0,a=n.length,s=0,u=new Array(a);o<r||s<a;){var l=null;if(o<r){do{l=this._decorations[t[o++]]}while(!l&&o<r);l&&(this._decorationsTree.delete(l),this._onDidChangeDecorations.checkAffectedAndFire(l.options))}if(s<a){if(!l){var c=++this._lastDecorationId,d="".concat(this._instanceId,";").concat(c);l=new R(d,0,0),this._decorations[d]=l}var h=n[s],f=this._validateRangeRelaxedNoAllocations(h.range),p=st(h.options),g=this._buffer.getOffsetAt(f.startLineNumber,f.startColumn),v=this._buffer.getOffsetAt(f.endLineNumber,f.endColumn);l.ownerId=e,l.reset(i,g,v,f),l.setOptions(p),this._onDidChangeDecorations.checkAffectedAndFire(p),this._decorationsTree.insert(l),u[s]=l.id,s++}else l&&delete this._decorations[l.id]}return u}},{key:"setTokens",value:function(e){if(0!==e.length){for(var t=[],n=0,i=e.length;n<i;n++){for(var r=e[n],o=0,a=0,s=!1,u=0,l=r.tokens.length;u<l;u++){var c=r.startLineNumber+u;if(s)this._tokens.setTokens(this._languageIdentifier.id,c-1,this._buffer.getLineLength(c),r.tokens[u],!1),a=c;else this._tokens.setTokens(this._languageIdentifier.id,c-1,this._buffer.getLineLength(c),r.tokens[u],!0)&&(s=!0,o=c,a=c)}s&&t.push({fromLineNumber:o,toLineNumber:a})}t.length>0&&this._emitModelTokensChangedEvent({tokenizationSupportChanged:!1,semanticTokensApplied:!1,ranges:t})}}},{key:"setSemanticTokens",value:function(e,t){this._tokens2.set(e,t),this._emitModelTokensChangedEvent({tokenizationSupportChanged:!1,semanticTokensApplied:null!==e,ranges:[{fromLineNumber:1,toLineNumber:this.getLineCount()}]})}},{key:"hasCompleteSemanticTokens",value:function(){return this._tokens2.isComplete()}},{key:"hasSomeSemanticTokens",value:function(){return!this._tokens2.isEmpty()}},{key:"setPartialSemanticTokens",value:function(e,t){if(!this.hasCompleteSemanticTokens()){var n=this._tokens2.setPartial(e,t);this._emitModelTokensChangedEvent({tokenizationSupportChanged:!1,semanticTokensApplied:!0,ranges:[{fromLineNumber:n.startLineNumber,toLineNumber:n.endLineNumber}]})}}},{key:"tokenizeViewport",value:function(e,t){e=Math.max(1,e),t=Math.min(this._buffer.getLineCount(),t),this._tokenization.tokenizeViewport(e,t)}},{key:"clearTokens",value:function(){this._tokens.flush(),this._emitModelTokensChangedEvent({tokenizationSupportChanged:!0,semanticTokensApplied:!1,ranges:[{fromLineNumber:1,toLineNumber:this._buffer.getLineCount()}]})}},{key:"_emitModelTokensChangedEvent",value:function(e){this._isDisposing||this._onDidChangeTokens.fire(e)}},{key:"resetTokenization",value:function(){this._tokenization.reset()}},{key:"forceTokenization",value:function(e){if(e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");this._tokenization.forceTokenization(e)}},{key:"isCheapToTokenize",value:function(e){return this._tokenization.isCheapToTokenize(e)}},{key:"tokenizeIfCheap",value:function(e){this.isCheapToTokenize(e)&&this.forceTokenization(e)}},{key:"getLineTokens",value:function(e){if(e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._getLineTokens(e)}},{key:"_getLineTokens",value:function(e){var t=this.getLineContent(e),n=this._tokens.getTokens(this._languageIdentifier.id,e-1,t);return this._tokens2.addSemanticTokens(e,n)}},{key:"getLanguageIdentifier",value:function(){return this._languageIdentifier}},{key:"getModeId",value:function(){return this._languageIdentifier.language}},{key:"setMode",value:function(e){if(this._languageIdentifier.id!==e.id){var t={oldLanguage:this._languageIdentifier.language,newLanguage:e.language};this._languageIdentifier=e,this._onDidChangeLanguage.fire(t),this._onDidChangeLanguageConfiguration.fire({})}}},{key:"getLanguageIdAtPosition",value:function(e,t){var n=this.validatePosition(new m.L(e,t)),i=this.getLineTokens(n.lineNumber);return i.getLanguageId(i.findTokenIndexAtOffset(n.column-1))}},{key:"getWordAtPosition",value:function(e){this._assertNotDisposed();var t=this.validatePosition(e),r=this.getLineContent(t.lineNumber),o=this._getLineTokens(t.lineNumber),a=o.findTokenIndexAtOffset(t.column-1),s=n._findLanguageBoundaries(o,a),u=(0,i.Z)(s,2),l=u[0],c=u[1],d=(0,He.t2)(t.column,Be.zu.getWordDefinition(o.getLanguageId(a)),r.substring(l,c),l);if(d&&d.startColumn<=e.column&&e.column<=d.endColumn)return d;if(a>0&&l===t.column-1){var h=n._findLanguageBoundaries(o,a-1),f=(0,i.Z)(h,2),p=f[0],g=f[1],v=(0,He.t2)(t.column,Be.zu.getWordDefinition(o.getLanguageId(a-1)),r.substring(p,g),p);if(v&&v.startColumn<=e.column&&e.column<=v.endColumn)return v}return null}},{key:"getWordUntilPosition",value:function(e){var t=this.getWordAtPosition(e);return t?{word:t.word.substr(0,e.column-t.startColumn),startColumn:t.startColumn,endColumn:e.column}:{word:"",startColumn:e.column,endColumn:e.column}}},{key:"findMatchingBracketUp",value:function(e,t){var n=e.toLowerCase(),i=this.validatePosition(t),r=this._getLineTokens(i.lineNumber),o=r.getLanguageId(r.findTokenIndexAtOffset(i.column-1)),a=Be.zu.getBracketsSupport(o);if(!a)return null;var s=a.textIsBracket[n];return s?Xe(this._findMatchingBracketUp(s,i,null)):null}},{key:"matchBracket",value:function(e){return this._matchBracket(this.validatePosition(e))}},{key:"_establishBracketSearchOffsets",value:function(e,t,n,i){for(var r=t.getCount(),o=t.getLanguageId(i),a=Math.max(0,e.column-1-n.maxBracketLength),s=i-1;s>=0;s--){var u=t.getEndOffset(s);if(u<=a)break;if((0,ze.Bu)(t.getStandardTokenType(s))||t.getLanguageId(s)!==o){a=u;break}}for(var l=Math.min(t.getLineContent().length,e.column-1+n.maxBracketLength),c=i+1;c<r;c++){var d=t.getStartOffset(c);if(d>=l)break;if((0,ze.Bu)(t.getStandardTokenType(c))||t.getLanguageId(c)!==o){l=d;break}}return{searchStartOffset:a,searchEndOffset:l}}},{key:"_matchBracket",value:function(e){var t=e.lineNumber,n=this._getLineTokens(t),i=this._buffer.getLineContent(t),r=n.findTokenIndexAtOffset(e.column-1);if(r<0)return null;var o=Be.zu.getBracketsSupport(n.getLanguageId(r));if(o&&!(0,ze.Bu)(n.getStandardTokenType(r))){for(var a=this._establishBracketSearchOffsets(e,n,o,r),s=a.searchStartOffset,u=a.searchEndOffset,l=null;;){var c=We.Vr.findNextBracketInRange(o.forwardRegex,t,i,s,u);if(!c)break;if(c.startColumn<=e.column&&e.column<=c.endColumn){var d=i.substring(c.startColumn-1,c.endColumn-1).toLowerCase(),h=this._matchFoundBracket(c,o.textIsBracket[d],o.textIsOpenBracket[d],null);if(h){if(h instanceof Qe)return null;l=h}}s=c.endColumn-1}if(l)return l}if(r>0&&n.getStartOffset(r)===e.column-1){var f=r-1,p=Be.zu.getBracketsSupport(n.getLanguageId(f));if(p&&!(0,ze.Bu)(n.getStandardTokenType(f))){var g=this._establishBracketSearchOffsets(e,n,p,f),v=g.searchStartOffset,m=g.searchEndOffset,_=We.Vr.findPrevBracketInRange(p.reversedRegex,t,i,v,m);if(_&&_.startColumn<=e.column&&e.column<=_.endColumn){var y=i.substring(_.startColumn-1,_.endColumn-1).toLowerCase(),b=this._matchFoundBracket(_,p.textIsBracket[y],p.textIsOpenBracket[y],null);if(b)return b instanceof Qe?null:b}}}return null}},{key:"_matchFoundBracket",value:function(e,t,n,i){if(!t)return null;var r=n?this._findMatchingBracketDown(t,e.getEndPosition(),i):this._findMatchingBracketUp(t,e.getStartPosition(),i);return r?r instanceof Qe?r:[e,r]:null}},{key:"_findMatchingBracketUp",value:function(e,t,n){for(var i=e.languageIdentifier.id,r=e.reversedRegex,o=-1,a=0,s=function(t,i,s,u){for(;;){if(n&&++a%100===0&&!n())return Qe.INSTANCE;var l=We.Vr.findPrevBracketInRange(r,t,i,s,u);if(!l)break;var c=i.substring(l.startColumn-1,l.endColumn-1).toLowerCase();if(e.isOpen(c)?o++:e.isClose(c)&&o--,0===o)return l;u=l.startColumn-1}return null},u=t.lineNumber;u>=1;u--){var l=this._getLineTokens(u),c=l.getCount(),d=this._buffer.getLineContent(u),h=c-1,f=d.length,p=d.length;u===t.lineNumber&&(h=l.findTokenIndexAtOffset(t.column-1),f=t.column-1,p=t.column-1);for(var g=!0;h>=0;h--){var v=l.getLanguageId(h)===i&&!(0,ze.Bu)(l.getStandardTokenType(h));if(v)g?f=l.getStartOffset(h):(f=l.getStartOffset(h),p=l.getEndOffset(h));else if(g&&f!==p){var m=s(u,d,f,p);if(m)return m}g=v}if(g&&f!==p){var _=s(u,d,f,p);if(_)return _}}return null}},{key:"_findMatchingBracketDown",value:function(e,t,n){for(var i=e.languageIdentifier.id,r=e.forwardRegex,o=1,a=0,s=function(t,i,s,u){for(;;){if(n&&++a%100===0&&!n())return Qe.INSTANCE;var l=We.Vr.findNextBracketInRange(r,t,i,s,u);if(!l)break;var c=i.substring(l.startColumn-1,l.endColumn-1).toLowerCase();if(e.isOpen(c)?o++:e.isClose(c)&&o--,0===o)return l;s=l.endColumn-1}return null},u=this.getLineCount(),l=t.lineNumber;l<=u;l++){var c=this._getLineTokens(l),d=c.getCount(),h=this._buffer.getLineContent(l),f=0,p=0,g=0;l===t.lineNumber&&(f=c.findTokenIndexAtOffset(t.column-1),p=t.column-1,g=t.column-1);for(var v=!0;f<d;f++){var m=c.getLanguageId(f)===i&&!(0,ze.Bu)(c.getStandardTokenType(f));if(m)v||(p=c.getStartOffset(f)),g=c.getEndOffset(f);else if(v&&p!==g){var _=s(l,h,p,g);if(_)return _}v=m}if(v&&p!==g){var y=s(l,h,p,g);if(y)return y}}return null}},{key:"findPrevBracket",value:function(e){for(var t=this.validatePosition(e),n=-1,i=null,r=t.lineNumber;r>=1;r--){var o=this._getLineTokens(r),a=o.getCount(),s=this._buffer.getLineContent(r),u=a-1,l=s.length,c=s.length;if(r===t.lineNumber){u=o.findTokenIndexAtOffset(t.column-1),l=t.column-1,c=t.column-1;var d=o.getLanguageId(u);n!==d&&(n=d,i=Be.zu.getBracketsSupport(n))}for(var h=!0;u>=0;u--){var f=o.getLanguageId(u);if(n!==f){if(i&&h&&l!==c){var p=We.Vr.findPrevBracketInRange(i.reversedRegex,r,s,l,c);if(p)return this._toFoundBracket(i,p);h=!1}n=f,i=Be.zu.getBracketsSupport(n)}var g=!!i&&!(0,ze.Bu)(o.getStandardTokenType(u));if(g)h?l=o.getStartOffset(u):(l=o.getStartOffset(u),c=o.getEndOffset(u));else if(i&&h&&l!==c){var v=We.Vr.findPrevBracketInRange(i.reversedRegex,r,s,l,c);if(v)return this._toFoundBracket(i,v)}h=g}if(i&&h&&l!==c){var m=We.Vr.findPrevBracketInRange(i.reversedRegex,r,s,l,c);if(m)return this._toFoundBracket(i,m)}}return null}},{key:"findNextBracket",value:function(e){for(var t=this.validatePosition(e),n=this.getLineCount(),i=-1,r=null,o=t.lineNumber;o<=n;o++){var a=this._getLineTokens(o),s=a.getCount(),u=this._buffer.getLineContent(o),l=0,c=0,d=0;if(o===t.lineNumber){l=a.findTokenIndexAtOffset(t.column-1),c=t.column-1,d=t.column-1;var h=a.getLanguageId(l);i!==h&&(i=h,r=Be.zu.getBracketsSupport(i))}for(var f=!0;l<s;l++){var p=a.getLanguageId(l);if(i!==p){if(r&&f&&c!==d){var g=We.Vr.findNextBracketInRange(r.forwardRegex,o,u,c,d);if(g)return this._toFoundBracket(r,g);f=!1}i=p,r=Be.zu.getBracketsSupport(i)}var v=!!r&&!(0,ze.Bu)(a.getStandardTokenType(l));if(v)f||(c=a.getStartOffset(l)),d=a.getEndOffset(l);else if(r&&f&&c!==d){var m=We.Vr.findNextBracketInRange(r.forwardRegex,o,u,c,d);if(m)return this._toFoundBracket(r,m)}f=v}if(r&&f&&c!==d){var _=We.Vr.findNextBracketInRange(r.forwardRegex,o,u,c,d);if(_)return this._toFoundBracket(r,_)}}return null}},{key:"findEnclosingBrackets",value:function(e,t){var n,i=this;if("undefined"===typeof t)n=null;else{var r=Date.now();n=function(){return Date.now()-r<=t}}for(var o=this.validatePosition(e),a=this.getLineCount(),s=new Map,u=[],l=function(e,t){if(!s.has(e)){for(var n=[],i=0,r=t?t.brackets.length:0;i<r;i++)n[i]=0;s.set(e,n)}u=s.get(e)},c=0,d=function(e,t,r,o,a){for(;;){if(n&&++c%100===0&&!n())return Qe.INSTANCE;var s=We.Vr.findNextBracketInRange(e.forwardRegex,t,r,o,a);if(!s)break;var l=r.substring(s.startColumn-1,s.endColumn-1).toLowerCase(),d=e.textIsBracket[l];if(d&&(d.isOpen(l)?u[d.index]++:d.isClose(l)&&u[d.index]--,-1===u[d.index]))return i._matchFoundBracket(s,d,!1,n);o=s.endColumn-1}return null},h=-1,f=null,p=o.lineNumber;p<=a;p++){var g=this._getLineTokens(p),v=g.getCount(),m=this._buffer.getLineContent(p),_=0,y=0,b=0;if(p===o.lineNumber){_=g.findTokenIndexAtOffset(o.column-1),y=o.column-1,b=o.column-1;var w=g.getLanguageId(_);h!==w&&l(h=w,f=Be.zu.getBracketsSupport(h))}for(var C=!0;_<v;_++){var k=g.getLanguageId(_);if(h!==k){if(f&&C&&y!==b){var S=d(f,p,m,y,b);if(S)return Xe(S);C=!1}l(h=k,f=Be.zu.getBracketsSupport(h))}var x=!!f&&!(0,ze.Bu)(g.getStandardTokenType(_));if(x)C||(y=g.getStartOffset(_)),b=g.getEndOffset(_);else if(f&&C&&y!==b){var L=d(f,p,m,y,b);if(L)return Xe(L)}C=x}if(f&&C&&y!==b){var E=d(f,p,m,y,b);if(E)return Xe(E)}}return null}},{key:"_toFoundBracket",value:function(e,t){if(!t)return null;var n=this.getValueInRange(t);n=n.toLowerCase();var i=e.textIsBracket[n];return i?{range:t,open:i.open,close:i.close,isOpen:e.textIsOpenBracket[n]}:null}},{key:"_computeIndentLevel",value:function(e){return n.computeIndentLevel(this._buffer.getLineContent(e+1),this._options.tabSize)}},{key:"getActiveIndentGuide",value:function(e,t,n){var i=this;this._assertNotDisposed();var r=this.getLineCount();if(e<1||e>r)throw new Error("Illegal value for lineNumber");for(var o=Be.zu.getFoldingRules(this._languageIdentifier.id),a=Boolean(o&&o.offSide),s=-2,u=-1,l=-2,c=-1,d=function(e){if(-1!==s&&(-2===s||s>e-1)){s=-1,u=-1;for(var t=e-2;t>=0;t--){var n=i._computeIndentLevel(t);if(n>=0){s=t,u=n;break}}}if(-2===l){l=-1,c=-1;for(var o=e;o<r;o++){var a=i._computeIndentLevel(o);if(a>=0){l=o,c=a;break}}}},h=-2,f=-1,p=-2,g=-1,v=function(e){if(-2===h){h=-1,f=-1;for(var t=e-2;t>=0;t--){var n=i._computeIndentLevel(t);if(n>=0){h=t,f=n;break}}}if(-1!==p&&(-2===p||p<e-1)){p=-1,g=-1;for(var o=e;o<r;o++){var a=i._computeIndentLevel(o);if(a>=0){p=o,g=a;break}}}},m=0,_=!0,y=0,b=!0,w=0,C=0,k=0;_||b;k++){var S=e-k,x=e+k;k>1&&(S<1||S<t)&&(_=!1),k>1&&(x>r||x>n)&&(b=!1),k>5e4&&(_=!1,b=!1);var L=-1;if(_){var E=this._computeIndentLevel(S-1);E>=0?(l=S-1,c=E,L=Math.ceil(E/this._options.indentSize)):(d(S),L=this._getIndentLevelForWhitespaceLine(a,u,c))}var D=-1;if(b){var N=this._computeIndentLevel(x-1);N>=0?(h=x-1,f=N,D=Math.ceil(N/this._options.indentSize)):(v(x),D=this._getIndentLevelForWhitespaceLine(a,f,g))}if(0!==k){if(1===k){if(x<=r&&D>=0&&C+1===D){_=!1,m=x,y=x,w=D;continue}if(S>=1&&L>=0&&L-1===C){b=!1,m=S,y=S,w=L;continue}if(m=e,y=e,0===(w=C))return{startLineNumber:m,endLineNumber:y,indent:w}}_&&(L>=w?m=S:_=!1),b&&(D>=w?y=x:b=!1)}else C=L}return{startLineNumber:m,endLineNumber:y,indent:w}}},{key:"getLinesIndentGuides",value:function(e,t){this._assertNotDisposed();var n=this.getLineCount();if(e<1||e>n)throw new Error("Illegal value for startLineNumber");if(t<1||t>n)throw new Error("Illegal value for endLineNumber");for(var i=Be.zu.getFoldingRules(this._languageIdentifier.id),r=Boolean(i&&i.offSide),o=new Array(t-e+1),a=-2,s=-1,u=-2,l=-1,c=e;c<=t;c++){var d=c-e,h=this._computeIndentLevel(c-1);if(h>=0)a=c-1,s=h,o[d]=Math.ceil(h/this._options.indentSize);else{if(-2===a){a=-1,s=-1;for(var f=c-2;f>=0;f--){var p=this._computeIndentLevel(f);if(p>=0){a=f,s=p;break}}}if(-1!==u&&(-2===u||u<c-1)){u=-1,l=-1;for(var g=c;g<n;g++){var v=this._computeIndentLevel(g);if(v>=0){u=g,l=v;break}}}o[d]=this._getIndentLevelForWhitespaceLine(r,s,l)}}return o}},{key:"_getIndentLevelForWhitespaceLine",value:function(e,t,n){return-1===t||-1===n?0:t<n?1+Math.floor(t/this._options.indentSize):t===n||e?Math.ceil(n/this._options.indentSize):1+Math.floor(n/this._options.indentSize)}}],[{key:"resolveOptions",value:function(e,t){if(t.detectIndentation){var n=S(e,t.tabSize,t.insertSpaces);return new b.dJ({tabSize:n.tabSize,indentSize:n.tabSize,insertSpaces:n.insertSpaces,trimAutoWhitespace:t.trimAutoWhitespace,defaultEOL:t.defaultEOL})}return new b.dJ({tabSize:t.tabSize,indentSize:t.indentSize,insertSpaces:t.insertSpaces,trimAutoWhitespace:t.trimAutoWhitespace,defaultEOL:t.defaultEOL})}},{key:"_normalizeIndentationFromWhitespace",value:function(e,t,n){for(var i=0,r=0;r<e.length;r++)"\t"===e.charAt(r)?i+=t:i++;var o="";if(!n){var a=Math.floor(i/t);i%=t;for(var s=0;s<a;s++)o+="\t"}for(var u=0;u<i;u++)o+=" ";return o}},{key:"normalizeIndentation",value:function(e,t,i){var r=p.LC(e);return-1===r&&(r=e.length),n._normalizeIndentationFromWhitespace(e.substring(0,r),t,i)+e.substring(r)}},{key:"_findLanguageBoundaries",value:function(e,t){for(var n=e.getLanguageId(t),i=0,r=t;r>=0&&e.getLanguageId(r)===n;r--)i=e.getStartOffset(r);for(var o=e.getLineContent().length,a=t,s=e.getCount();a<s&&e.getLanguageId(a)===n;a++)o=e.getEndOffset(a);return[i,o]}},{key:"computeIndentLevel",value:function(e,t){for(var n=0,i=0,r=e.length;i<r;){var o=e.charCodeAt(i);if(32===o)n++;else{if(9!==o)break;n=n-n%t+t}i++}return i===r?-1:n}}]),n}(f.JT);Je.MODEL_SYNC_LIMIT=52428800,Je.LARGE_FILE_SIZE_THRESHOLD=20971520,Je.LARGE_FILE_LINE_COUNT_THRESHOLD=3e5,Je.DEFAULT_CREATION_OPTIONS={isForSimpleWidget:!1,tabSize:v.DB.tabSize,indentSize:v.DB.indentSize,insertSpaces:v.DB.insertSpaces,detectIndentation:!1,defaultEOL:1,trimAutoWhitespace:v.DB.trimAutoWhitespace,largeFileOptimizations:v.DB.largeFileOptimizations};var et=function(){function e(){(0,l.Z)(this,e),this._decorationsTree0=new Z,this._decorationsTree1=new Z}return(0,c.Z)(e,[{key:"intervalSearch",value:function(e,t,n,i,r){var o=this._decorationsTree0.intervalSearch(e,t,n,i,r),a=this._decorationsTree1.intervalSearch(e,t,n,i,r);return o.concat(a)}},{key:"search",value:function(e,t,n,i){if(n)return this._decorationsTree1.search(e,t,i);var r=this._decorationsTree0.search(e,t,i),o=this._decorationsTree1.search(e,t,i);return r.concat(o)}},{key:"collectNodesFromOwner",value:function(e){var t=this._decorationsTree0.collectNodesFromOwner(e),n=this._decorationsTree1.collectNodesFromOwner(e);return t.concat(n)}},{key:"collectNodesPostOrder",value:function(){var e=this._decorationsTree0.collectNodesPostOrder(),t=this._decorationsTree1.collectNodesPostOrder();return e.concat(t)}},{key:"insert",value:function(e){T(e)?this._decorationsTree1.insert(e):this._decorationsTree0.insert(e)}},{key:"delete",value:function(e){T(e)?this._decorationsTree1.delete(e):this._decorationsTree0.delete(e)}},{key:"resolveNode",value:function(e,t){T(e)?this._decorationsTree1.resolveNode(e,t):this._decorationsTree0.resolveNode(e,t)}},{key:"acceptReplace",value:function(e,t,n,i){this._decorationsTree0.acceptReplace(e,t,n,i),this._decorationsTree1.acceptReplace(e,t,n,i)}}]),e}();function tt(e){return e.replace(/[^a-z0-9\-_]/gi," ")}var nt=(0,c.Z)((function e(t){(0,l.Z)(this,e),this.color=t.color||"",this.darkColor=t.darkColor||""})),it=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e){var i;return(0,l.Z)(this,n),(i=t.call(this,e))._resolvedColor=null,i.position="number"===typeof e.position?e.position:b.sh.Center,i}return(0,c.Z)(n,[{key:"getColor",value:function(e){return this._resolvedColor||("light"!==e.type&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}},{key:"invalidateCachedColor",value:function(){this._resolvedColor=null}},{key:"_resolveColor",value:function(e,t){if("string"===typeof e)return e;var n=e?t.getColor(e.id):null;return n?n.toString():""}}]),n}(nt),rt=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e){var i;return(0,l.Z)(this,n),(i=t.call(this,e)).position=e.position,i}return(0,c.Z)(n,[{key:"getColor",value:function(e){return this._resolvedColor||("light"!==e.type&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}},{key:"invalidateCachedColor",value:function(){this._resolvedColor=void 0}},{key:"_resolveColor",value:function(e,t){return"string"===typeof e?Ve.Il.fromHex(e):t.getColor(e.id)}}]),n}(nt),ot=function(){function e(t){(0,l.Z)(this,e),this.stickiness=t.stickiness||0,this.zIndex=t.zIndex||0,this.className=t.className?tt(t.className):null,this.hoverMessage=t.hoverMessage||null,this.glyphMarginHoverMessage=t.glyphMarginHoverMessage||null,this.isWholeLine=t.isWholeLine||!1,this.showIfCollapsed=t.showIfCollapsed||!1,this.collapseOnReplaceEdit=t.collapseOnReplaceEdit||!1,this.overviewRuler=t.overviewRuler?new it(t.overviewRuler):null,this.minimap=t.minimap?new rt(t.minimap):null,this.glyphMarginClassName=t.glyphMarginClassName?tt(t.glyphMarginClassName):null,this.linesDecorationsClassName=t.linesDecorationsClassName?tt(t.linesDecorationsClassName):null,this.firstLineDecorationClassName=t.firstLineDecorationClassName?tt(t.firstLineDecorationClassName):null,this.marginClassName=t.marginClassName?tt(t.marginClassName):null,this.inlineClassName=t.inlineClassName?tt(t.inlineClassName):null,this.inlineClassNameAffectsLetterSpacing=t.inlineClassNameAffectsLetterSpacing||!1,this.beforeContentClassName=t.beforeContentClassName?tt(t.beforeContentClassName):null,this.afterContentClassName=t.afterContentClassName?tt(t.afterContentClassName):null}return(0,c.Z)(e,null,[{key:"register",value:function(t){return new e(t)}},{key:"createDynamic",value:function(t){return new e(t)}}]),e}();ot.EMPTY=ot.register({});var at=[ot.register({stickiness:0}),ot.register({stickiness:1}),ot.register({stickiness:2}),ot.register({stickiness:3})];function st(e){return e instanceof ot?e:ot.createDynamic(e)}var ut=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(){var e;return(0,l.Z)(this,n),(e=t.call(this))._actual=e._register(new h.Q5),e.event=e._actual.event,e._deferredCnt=0,e._shouldFire=!1,e._affectsMinimap=!1,e._affectsOverviewRuler=!1,e}return(0,c.Z)(n,[{key:"beginDeferredEmit",value:function(){this._deferredCnt++}},{key:"endDeferredEmit",value:function(){if(this._deferredCnt--,0===this._deferredCnt&&this._shouldFire){var e={affectsMinimap:this._affectsMinimap,affectsOverviewRuler:this._affectsOverviewRuler};this._shouldFire=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._actual.fire(e)}}},{key:"checkAffectedAndFire",value:function(e){this._affectsMinimap||(this._affectsMinimap=!(!e.minimap||!e.minimap.position)),this._affectsOverviewRuler||(this._affectsOverviewRuler=!(!e.overviewRuler||!e.overviewRuler.color)),this._shouldFire=!0}},{key:"fire",value:function(){this._affectsMinimap=!0,this._affectsOverviewRuler=!0,this._shouldFire=!0}}]),n}(f.JT),lt=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(){var e;return(0,l.Z)(this,n),(e=t.call(this))._fastEmitter=e._register(new h.Q5),e.fastEvent=e._fastEmitter.event,e._slowEmitter=e._register(new h.Q5),e.slowEvent=e._slowEmitter.event,e._deferredCnt=0,e._deferredEvent=null,e}return(0,c.Z)(n,[{key:"beginDeferredEmit",value:function(){this._deferredCnt++}},{key:"endDeferredEmit",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(this._deferredCnt--,0===this._deferredCnt&&null!==this._deferredEvent){this._deferredEvent.rawContentChangedEvent.resultingSelection=e;var t=this._deferredEvent;this._deferredEvent=null,this._fastEmitter.fire(t),this._slowEmitter.fire(t)}}},{key:"fire",value:function(e){this._deferredCnt>0?this._deferredEvent?this._deferredEvent=this._deferredEvent.merge(e):this._deferredEvent=e:(this._fastEmitter.fire(e),this._slowEmitter.fire(e))}}]),n}(f.JT)},44322:function(e,t,n){"use strict";n.d(t,{bc:function(){return c},cM:function(){return g},iE:function(){return h},pM:function(){return p},sz:function(){return v}});var i=n(15671),r=n(43144),o=n(51747),a=n(20937),s=n(67297),u=n(67033),l=n(46502),c=function(){function e(t,n,r,o){(0,i.Z)(this,e),this.searchString=t,this.isRegex=n,this.matchCase=r,this.wordSeparators=o}return(0,r.Z)(e,[{key:"parseSearchRequest",value:function(){if(""===this.searchString)return null;var e;e=this.isRegex?function(e){if(!e||0===e.length)return!1;for(var t=0,n=e.length;t<n;t++){if(92===e.charCodeAt(t)){if(++t>=n)break;var i=e.charCodeAt(t);if(110===i||114===i||87===i||119===i)return!0}}return!1}(this.searchString):this.searchString.indexOf("\n")>=0;var t=null;try{t=o.GF(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:e,global:!0,unicode:!0})}catch(i){return null}if(!t)return null;var n=!this.isRegex&&!e;return n&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(n=this.matchCase),new d(t,this.wordSeparators?(0,a.u)(this.wordSeparators):null,n?this.searchString:null)}}]),e}();var d=(0,r.Z)((function e(t,n,r){(0,i.Z)(this,e),this.regex=t,this.wordSeparators=n,this.simpleSearch=r}));function h(e,t,n){if(!n)return new l.tk(e,null);for(var i=[],r=0,o=t.length;r<o;r++)i[r]=t[r];return new l.tk(e,i)}var f=function(){function e(t){(0,i.Z)(this,e);for(var n=[],r=0,o=0,a=t.length;o<a;o++)10===t.charCodeAt(o)&&(n[r++]=o);this._lineFeedsOffsets=n}return(0,r.Z)(e,[{key:"findLineFeedCountBeforeOffset",value:function(e){var t=this._lineFeedsOffsets,n=0,i=t.length-1;if(-1===i)return 0;if(e<=t[0])return 0;for(;n<i;){var r=n+((i-n)/2>>0);t[r]>=e?i=r-1:t[r+1]>=e?(n=r,i=r):n=r+1}return n+1}}]),e}(),p=function(){function e(){(0,i.Z)(this,e)}return(0,r.Z)(e,null,[{key:"findMatches",value:function(e,t,n,i,r){var o=t.parseSearchRequest();return o?o.regex.multiline?this._doFindMatchesMultiline(e,n,new v(o.wordSeparators,o.regex),i,r):this._doFindMatchesLineByLine(e,n,o,i,r):[]}},{key:"_getMultilineMatchRange",value:function(e,t,n,i,r,o){var a,s,l=0;if(a=i?t+r+(l=i.findLineFeedCountBeforeOffset(r)):t+r,i){var c=i.findLineFeedCountBeforeOffset(r+o.length)-l;s=a+o.length+c}else s=a+o.length;var d=e.getPositionAt(a),h=e.getPositionAt(s);return new u.e(d.lineNumber,d.column,h.lineNumber,h.column)}},{key:"_doFindMatchesMultiline",value:function(e,t,n,i,r){var o,a=e.getOffsetAt(t.getStartPosition()),s=e.getValueInRange(t,1),u="\r\n"===e.getEOL()?new f(s):null,l=[],c=0;for(n.reset(0);o=n.next(s);)if(l[c++]=h(this._getMultilineMatchRange(e,a,s,u,o.index,o[0]),o,i),c>=r)return l;return l}},{key:"_doFindMatchesLineByLine",value:function(e,t,n,i,r){var o=[],a=0;if(t.startLineNumber===t.endLineNumber){var s=e.getLineContent(t.startLineNumber).substring(t.startColumn-1,t.endColumn-1);return a=this._findMatchesInLine(n,s,t.startLineNumber,t.startColumn-1,a,o,i,r),o}var u=e.getLineContent(t.startLineNumber).substring(t.startColumn-1);a=this._findMatchesInLine(n,u,t.startLineNumber,t.startColumn-1,a,o,i,r);for(var l=t.startLineNumber+1;l<t.endLineNumber&&a<r;l++)a=this._findMatchesInLine(n,e.getLineContent(l),l,0,a,o,i,r);if(a<r){var c=e.getLineContent(t.endLineNumber).substring(0,t.endColumn-1);a=this._findMatchesInLine(n,c,t.endLineNumber,0,a,o,i,r)}return o}},{key:"_findMatchesInLine",value:function(e,t,n,i,r,o,a,s){var c=e.wordSeparators;if(!a&&e.simpleSearch){for(var d=e.simpleSearch,f=d.length,p=t.length,m=-f;-1!==(m=t.indexOf(d,m+f));)if((!c||g(c,t,p,m,f))&&(o[r++]=new l.tk(new u.e(n,m+1+i,n,m+1+f+i),null),r>=s))return r;return r}var _,y=new v(e.wordSeparators,e.regex);y.reset(0);do{if((_=y.next(t))&&(o[r++]=h(new u.e(n,_.index+1+i,n,_.index+1+_[0].length+i),_,a),r>=s))return r}while(_);return r}},{key:"findNextMatch",value:function(e,t,n,i){var r=t.parseSearchRequest();if(!r)return null;var o=new v(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindNextMatchMultiline(e,n,o,i):this._doFindNextMatchLineByLine(e,n,o,i)}},{key:"_doFindNextMatchMultiline",value:function(e,t,n,i){var r=new s.L(t.lineNumber,1),o=e.getOffsetAt(r),a=e.getLineCount(),l=e.getValueInRange(new u.e(r.lineNumber,r.column,a,e.getLineMaxColumn(a)),1),c="\r\n"===e.getEOL()?new f(l):null;n.reset(t.column-1);var d=n.next(l);return d?h(this._getMultilineMatchRange(e,o,l,c,d.index,d[0]),d,i):1!==t.lineNumber||1!==t.column?this._doFindNextMatchMultiline(e,new s.L(1,1),n,i):null}},{key:"_doFindNextMatchLineByLine",value:function(e,t,n,i){var r=e.getLineCount(),o=t.lineNumber,a=e.getLineContent(o),s=this._findFirstMatchInLine(n,a,o,t.column,i);if(s)return s;for(var u=1;u<=r;u++){var l=(o+u-1)%r,c=e.getLineContent(l+1),d=this._findFirstMatchInLine(n,c,l+1,1,i);if(d)return d}return null}},{key:"_findFirstMatchInLine",value:function(e,t,n,i,r){e.reset(i-1);var o=e.next(t);return o?h(new u.e(n,o.index+1,n,o.index+1+o[0].length),o,r):null}},{key:"findPreviousMatch",value:function(e,t,n,i){var r=t.parseSearchRequest();if(!r)return null;var o=new v(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindPreviousMatchMultiline(e,n,o,i):this._doFindPreviousMatchLineByLine(e,n,o,i)}},{key:"_doFindPreviousMatchMultiline",value:function(e,t,n,i){var r=this._doFindMatchesMultiline(e,new u.e(1,1,t.lineNumber,t.column),n,i,9990);if(r.length>0)return r[r.length-1];var o=e.getLineCount();return t.lineNumber!==o||t.column!==e.getLineMaxColumn(o)?this._doFindPreviousMatchMultiline(e,new s.L(o,e.getLineMaxColumn(o)),n,i):null}},{key:"_doFindPreviousMatchLineByLine",value:function(e,t,n,i){var r=e.getLineCount(),o=t.lineNumber,a=e.getLineContent(o).substring(0,t.column-1),s=this._findLastMatchInLine(n,a,o,i);if(s)return s;for(var u=1;u<=r;u++){var l=(r+o-u-1)%r,c=e.getLineContent(l+1),d=this._findLastMatchInLine(n,c,l+1,i);if(d)return d}return null}},{key:"_findLastMatchInLine",value:function(e,t,n,i){var r,o=null;for(e.reset(0);r=e.next(t);)o=h(new u.e(n,r.index+1,n,r.index+1+r[0].length),r,i);return o}}]),e}();function g(e,t,n,i,r){return function(e,t,n,i,r){if(0===i)return!0;var o=t.charCodeAt(i-1);if(0!==e.get(o))return!0;if(13===o||10===o)return!0;if(r>0){var a=t.charCodeAt(i);if(0!==e.get(a))return!0}return!1}(e,t,0,i,r)&&function(e,t,n,i,r){if(i+r===n)return!0;var o=t.charCodeAt(i+r);if(0!==e.get(o))return!0;if(13===o||10===o)return!0;if(r>0){var a=t.charCodeAt(i+r-1);if(0!==e.get(a))return!0}return!1}(e,t,n,i,r)}var v=function(){function e(t,n){(0,i.Z)(this,e),this._wordSeparators=t,this._searchRegex=n,this._prevMatchStartIndex=-1,this._prevMatchLength=0}return(0,r.Z)(e,[{key:"reset",value:function(e){this._searchRegex.lastIndex=e,this._prevMatchStartIndex=-1,this._prevMatchLength=0}},{key:"next",value:function(e){var t,n=e.length;do{if(this._prevMatchStartIndex+this._prevMatchLength===n)return null;if(!(t=this._searchRegex.exec(e)))return null;var i=t.index,r=t[0].length;if(i===this._prevMatchStartIndex&&r===this._prevMatchLength){if(0===r){o.ZH(e,n,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=i,this._prevMatchLength=r,!this._wordSeparators||g(this._wordSeparators,e,n,i,r))return t}while(t);return null}}]),e}()},98623:function(e,t,n){"use strict";n.d(t,{DA:function(){return g},OU:function(){return v},QZ:function(){return h},Rl:function(){return C},Wz:function(){return _},cx:function(){return w}});var i=n(37762),r=n(29439),o=n(15671),a=n(43144),s=n(49396),u=n(34763),l=n(67297),c=n(67033),d=n(99404);function h(e){for(var t=0,n=0,i=0,r=0,o=0,a=e.length;o<a;o++){var s=e.charCodeAt(o);13===s?(0===t&&(n=o),t++,o+1<a&&10===e.charCodeAt(o+1)?(r|=2,o++):r|=3,i=o+1):10===s&&(r|=1,0===t&&(n=o),t++,i=o+1)}return 0===t&&(n=e.length),[t,n,e.length-i,r]}function f(e){return(16384|e<<0|2<<23)>>>0}var p=new Uint32Array(0).buffer,g=function(){function e(){(0,o.Z)(this,e),this.tokens=[]}return(0,a.Z)(e,[{key:"add",value:function(e,t){if(this.tokens.length>0){var n=this.tokens[this.tokens.length-1];if(n.startLineNumber+n.tokens.length-1+1===e)return void n.tokens.push(t)}this.tokens.push(new y(e,[t]))}}]),e}(),v=function(){function e(t){(0,o.Z)(this,e),this._tokens=t,this._tokenCount=t.length/4}return(0,a.Z)(e,[{key:"toString",value:function(e){for(var t=[],n=0;n<this._tokenCount;n++)t.push("(".concat(this._getDeltaLine(n)+e,",").concat(this._getStartCharacter(n),"-").concat(this._getEndCharacter(n),")"));return"[".concat(t.join(","),"]")}},{key:"getMaxDeltaLine",value:function(){var e=this._getTokenCount();return 0===e?-1:this._getDeltaLine(e-1)}},{key:"getRange",value:function(){var e=this._getTokenCount();if(0===e)return null;var t=this._getStartCharacter(0),n=this._getDeltaLine(e-1),i=this._getEndCharacter(e-1);return new c.e(0,t+1,n,i+1)}},{key:"_getTokenCount",value:function(){return this._tokenCount}},{key:"_getDeltaLine",value:function(e){return this._tokens[4*e]}},{key:"_getStartCharacter",value:function(e){return this._tokens[4*e+1]}},{key:"_getEndCharacter",value:function(e){return this._tokens[4*e+2]}},{key:"isEmpty",value:function(){return 0===this._getTokenCount()}},{key:"getLineTokens",value:function(e){for(var t=0,n=this._getTokenCount()-1;t<n;){var i=t+Math.floor((n-t)/2),r=this._getDeltaLine(i);if(r<e)t=i+1;else{if(!(r>e)){for(var o=i;o>t&&this._getDeltaLine(o-1)===e;)o--;for(var a=i;a<n&&this._getDeltaLine(a+1)===e;)a++;return new m(this._tokens.subarray(4*o,4*a+4))}n=i-1}}return this._getDeltaLine(t)===e?new m(this._tokens.subarray(4*t,4*t+4)):null}},{key:"clear",value:function(){this._tokenCount=0}},{key:"removeTokens",value:function(e,t,n,i){for(var r=this._tokens,o=this._tokenCount,a=0,s=!1,u=0,l=0;l<o;l++){var c=4*l,d=r[c],h=r[c+1],f=r[c+2],p=r[c+3];if((d>e||d===e&&f>=t)&&(d<n||d===n&&h<=i))s=!0;else{if(0===a&&(u=d),s){var g=4*a;r[g]=d-u,r[g+1]=h,r[g+2]=f,r[g+3]=p}a++}}return this._tokenCount=a,u}},{key:"split",value:function(t,n,i,r){for(var o=this._tokens,a=this._tokenCount,s=[],u=[],l=s,c=0,d=0,h=0;h<a;h++){var f=4*h,p=o[f],g=o[f+1],v=o[f+2],m=o[f+3];if(p>t||p===t&&v>=n){if(p<i||p===i&&g<=r)continue;l!==u&&(l=u,c=0,d=p)}l[c++]=p-d,l[c++]=g,l[c++]=v,l[c++]=m}return[new e(new Uint32Array(s)),new e(new Uint32Array(u)),d]}},{key:"acceptDeleteRange",value:function(e,t,n,i,r){for(var o=this._tokens,a=this._tokenCount,s=i-t,u=0,l=!1,c=0;c<a;c++){var d=4*c,h=o[d],f=o[d+1],p=o[d+2],g=o[d+3];if(h<t||h===t&&p<=n)u++;else{if(h===t&&f<n)h===i&&p>r?p-=r-n:p=n;else if(h===t&&f===n){if(!(h===i&&p>r)){l=!0;continue}p-=r-n}else if(h<i||h===i&&f<r){if(!(h===i&&p>r)){l=!0;continue}p=h===t?(f=n)+(p-r):(f=0)+(p-r)}else if(h>i){if(0===s&&!l){u=a;break}h-=s}else{if(!(h===i&&f>=r))throw new Error("Not possible!");e&&0===h&&(f+=e,p+=e),h-=s,f-=r-n,p-=r-n}var v=4*u;o[v]=h,o[v+1]=f,o[v+2]=p,o[v+3]=g,u++}}this._tokenCount=u}},{key:"acceptInsertText",value:function(e,t,n,i,r,o){for(var a=0===n&&1===i&&(o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122),s=this._tokens,u=this._tokenCount,l=0;l<u;l++){var c=4*l,d=s[c],h=s[c+1],f=s[c+2];if(!(d<e||d===e&&f<t)){if(d===e&&f===t){if(!a)continue;f+=1}else if(d===e&&h<t&&t<f)0===n?f+=i:f=t;else{if(d===e&&h===t&&a)continue;if(d===e)if(d+=n,0===n)h+=i,f+=i;else{var p=f-h;f=(h=r+(h-t))+p}else d+=n}s[c]=d,s[c+1]=h,s[c+2]=f}}}}]),e}(),m=function(){function e(t){(0,o.Z)(this,e),this._tokens=t}return(0,a.Z)(e,[{key:"getCount",value:function(){return this._tokens.length/4}},{key:"getStartCharacter",value:function(e){return this._tokens[4*e+1]}},{key:"getEndCharacter",value:function(e){return this._tokens[4*e+2]}},{key:"getMetadata",value:function(e){return this._tokens[4*e+3]}}]),e}(),_=function(){function e(t,n){(0,o.Z)(this,e),this.startLineNumber=t,this.tokens=n,this.endLineNumber=this.startLineNumber+this.tokens.getMaxDeltaLine()}return(0,a.Z)(e,[{key:"toString",value:function(){return this.tokens.toString(this.startLineNumber)}},{key:"_updateEndLineNumber",value:function(){this.endLineNumber=this.startLineNumber+this.tokens.getMaxDeltaLine()}},{key:"isEmpty",value:function(){return this.tokens.isEmpty()}},{key:"getLineTokens",value:function(e){return this.startLineNumber<=e&&e<=this.endLineNumber?this.tokens.getLineTokens(e-this.startLineNumber):null}},{key:"getRange",value:function(){var e=this.tokens.getRange();return e?new c.e(this.startLineNumber+e.startLineNumber,e.startColumn,this.startLineNumber+e.endLineNumber,e.endColumn):e}},{key:"removeTokens",value:function(e){var t=e.startLineNumber-this.startLineNumber,n=e.endLineNumber-this.startLineNumber;this.startLineNumber+=this.tokens.removeTokens(t,e.startColumn-1,n,e.endColumn-1),this._updateEndLineNumber()}},{key:"split",value:function(t){var n=t.startLineNumber-this.startLineNumber,i=t.endLineNumber-this.startLineNumber,o=this.tokens.split(n,t.startColumn-1,i,t.endColumn-1),a=(0,r.Z)(o,3),s=a[0],u=a[1],l=a[2];return[new e(this.startLineNumber,s),new e(this.startLineNumber+l,u)]}},{key:"applyEdit",value:function(e,t){var n=h(t),i=(0,r.Z)(n,3),o=i[0],a=i[1],s=i[2];this.acceptEdit(e,o,a,s,t.length>0?t.charCodeAt(0):0)}},{key:"acceptEdit",value:function(e,t,n,i,r){this._acceptDeleteRange(e),this._acceptInsertText(new l.L(e.startLineNumber,e.startColumn),t,n,i,r),this._updateEndLineNumber()}},{key:"_acceptDeleteRange",value:function(e){if(e.startLineNumber!==e.endLineNumber||e.startColumn!==e.endColumn){var t=e.startLineNumber-this.startLineNumber,n=e.endLineNumber-this.startLineNumber;if(n<0){var i=n-t;this.startLineNumber-=i}else{var r=this.tokens.getMaxDeltaLine();if(!(t>=r+1)){if(t<0&&n>=r+1)return this.startLineNumber=0,void this.tokens.clear();if(t<0){var o=-t;this.startLineNumber-=o,this.tokens.acceptDeleteRange(e.startColumn-1,0,0,n,e.endColumn-1)}else this.tokens.acceptDeleteRange(0,t,e.startColumn-1,n,e.endColumn-1)}}}}},{key:"_acceptInsertText",value:function(e,t,n,i,r){if(0!==t||0!==n){var o=e.lineNumber-this.startLineNumber;if(o<0)this.startLineNumber+=t;else o>=this.tokens.getMaxDeltaLine()+1||this.tokens.acceptInsertText(o,e.column-1,t,n,i,r)}}}]),e}(),y=(0,a.Z)((function e(t,n){(0,o.Z)(this,e),this.startLineNumber=t,this.tokens=n}));function b(e){return e instanceof Uint32Array?e:new Uint32Array(e)}var w=function(){function e(){(0,o.Z)(this,e),this._pieces=[],this._isComplete=!1}return(0,a.Z)(e,[{key:"flush",value:function(){this._pieces=[],this._isComplete=!1}},{key:"isEmpty",value:function(){return 0===this._pieces.length}},{key:"set",value:function(e,t){this._pieces=e||[],this._isComplete=t}},{key:"setPartial",value:function(e,t){var n=e;if(t.length>0){var i=t[0].getRange(),o=t[t.length-1].getRange();if(!i||!o)return e;n=e.plusRange(i).plusRange(o)}for(var a=null,u=0,l=this._pieces.length;u<l;u++){var c=this._pieces[u];if(!(c.endLineNumber<n.startLineNumber)){if(c.startLineNumber>n.endLineNumber){a=a||{index:u};break}if(c.removeTokens(n),c.isEmpty())this._pieces.splice(u,1),u--,l--;else if(!(c.endLineNumber<n.startLineNumber))if(c.startLineNumber>n.endLineNumber)a=a||{index:u};else{var d=c.split(n),h=(0,r.Z)(d,2),f=h[0],p=h[1];f.isEmpty()?a=a||{index:u}:p.isEmpty()||(this._pieces.splice(u,1,f,p),u++,l++,a=a||{index:u})}}}return a=a||{index:this._pieces.length},t.length>0&&(this._pieces=s.Zv(this._pieces,a.index,t)),n}},{key:"isComplete",value:function(){return this._isComplete}},{key:"addSemanticTokens",value:function(t,n){var i=this._pieces;if(0===i.length)return n;var r=i[e._findFirstPieceWithLine(i,t)].getLineTokens(t);if(!r)return n;for(var o=n.getCount(),a=r.getCount(),s=0,l=[],c=0,d=0,h=function(e,t){e!==d&&(d=e,l[c++]=e,l[c++]=t)},f=0;f<a;f++){for(var p=r.getStartCharacter(f),g=r.getEndCharacter(f),v=r.getMetadata(f),m=((1&v?2048:0)|(2&v?4096:0)|(4&v?8192:0)|(8&v?8372224:0)|(16&v?4286578688:0))>>>0,_=~m>>>0;s<o&&n.getEndOffset(s)<=p;)h(n.getEndOffset(s),n.getMetadata(s)),s++;for(s<o&&n.getStartOffset(s)<p&&h(p,n.getMetadata(s));s<o&&n.getEndOffset(s)<g;)h(n.getEndOffset(s),n.getMetadata(s)&_|v&m),s++;if(s<o)h(g,n.getMetadata(s)&_|v&m),n.getEndOffset(s)===g&&s++;else{var y=Math.min(Math.max(0,s-1),o-1);h(g,n.getMetadata(y)&_|v&m)}}for(;s<o;)h(n.getEndOffset(s),n.getMetadata(s)),s++;return new u.A(new Uint32Array(l),n.getLineContent())}},{key:"acceptEdit",value:function(e,t,n,r,o){var a,s=(0,i.Z)(this._pieces);try{for(s.s();!(a=s.n()).done;){a.value.acceptEdit(e,t,n,r,o)}}catch(u){s.e(u)}finally{s.f()}}}],[{key:"_findFirstPieceWithLine",value:function(e,t){for(var n=0,i=e.length-1;n<i;){var r=n+Math.floor((i-n)/2);if(e[r].endLineNumber<t)n=r+1;else{if(!(e[r].startLineNumber>t)){for(;r>n&&e[r-1].startLineNumber<=t&&t<=e[r-1].endLineNumber;)r--;return r}i=r-1}}return n}}]),e}(),C=function(){function e(){(0,o.Z)(this,e),this._lineTokens=[],this._len=0}return(0,a.Z)(e,[{key:"flush",value:function(){this._lineTokens=[],this._len=0}},{key:"getTokens",value:function(e,t,n){var i=null;if(t<this._len&&(i=this._lineTokens[t]),null!==i&&i!==p)return new u.A(b(i),n);var r=new Uint32Array(2);return r[0]=n.length,r[1]=f(e),new u.A(r,n)}},{key:"_ensureLine",value:function(e){for(;e>=this._len;)this._lineTokens[this._len]=null,this._len++}},{key:"_deleteLines",value:function(e,t){0!==t&&(e+t>this._len&&(t=this._len-e),this._lineTokens.splice(e,t),this._len-=t)}},{key:"_insertLines",value:function(e,t){if(0!==t){for(var n=[],i=0;i<t;i++)n[i]=null;this._lineTokens=s.Zv(this._lineTokens,e,n),this._len+=t}}},{key:"setTokens",value:function(t,n,i,r,o){var a=e._massageTokens(t,i,r);this._ensureLine(n);var s=this._lineTokens[n];return this._lineTokens[n]=a,!!o&&!e._equals(s,a)}},{key:"acceptEdit",value:function(e,t,n){this._acceptDeleteRange(e),this._acceptInsertText(new l.L(e.startLineNumber,e.startColumn),t,n)}},{key:"_acceptDeleteRange",value:function(t){var n=t.startLineNumber-1;if(!(n>=this._len))if(t.startLineNumber!==t.endLineNumber){this._lineTokens[n]=e._deleteEnding(this._lineTokens[n],t.startColumn-1);var i=t.endLineNumber-1,r=null;i<this._len&&(r=e._deleteBeginning(this._lineTokens[i],t.endColumn-1)),this._lineTokens[n]=e._append(this._lineTokens[n],r),this._deleteLines(t.startLineNumber,t.endLineNumber-t.startLineNumber)}else{if(t.startColumn===t.endColumn)return;this._lineTokens[n]=e._delete(this._lineTokens[n],t.startColumn-1,t.endColumn-1)}}},{key:"_acceptInsertText",value:function(t,n,i){if(0!==n||0!==i){var r=t.lineNumber-1;r>=this._len||(0!==n?(this._lineTokens[r]=e._deleteEnding(this._lineTokens[r],t.column-1),this._lineTokens[r]=e._insert(this._lineTokens[r],t.column-1,i),this._insertLines(t.lineNumber,n)):this._lineTokens[r]=e._insert(this._lineTokens[r],t.column-1,i))}}}],[{key:"_massageTokens",value:function(e,t,n){var i=n?b(n):null;if(0===t){var r=!1;if(i&&i.length>1&&(r=d.NX.getLanguageId(i[1])!==e),!r)return p}if(!i||0===i.length){var o=new Uint32Array(2);return o[0]=t,o[1]=f(e),o.buffer}return i[i.length-2]=t,0===i.byteOffset&&i.byteLength===i.buffer.byteLength?i.buffer:i}},{key:"_equals",value:function(e,t){if(!e||!t)return!e&&!t;var n=b(e),i=b(t);if(n.length!==i.length)return!1;for(var r=0,o=n.length;r<o;r++)if(n[r]!==i[r])return!1;return!0}},{key:"_deleteBeginning",value:function(t,n){return null===t||t===p?t:e._delete(t,0,n)}},{key:"_deleteEnding",value:function(t,n){if(null===t||t===p)return t;var i=b(t),r=i[i.length-2];return e._delete(t,n,r)}},{key:"_delete",value:function(e,t,n){if(null===e||e===p||t===n)return e;var i=b(e),r=i.length>>>1;if(0===t&&i[i.length-2]===n)return p;var o,a,s=u.A.findIndexInTokensArray(i,t),l=s>0?i[s-1<<1]:0;if(n<i[s<<1]){for(var c=n-t,d=s;d<r;d++)i[d<<1]-=c;return e}l!==t?(i[s<<1]=t,o=s+1<<1,a=t):(o=s<<1,a=l);for(var h=n-t,f=s+1;f<r;f++){var g=i[f<<1]-h;g>a&&(i[o++]=g,i[o++]=i[1+(f<<1)],a=g)}if(o===i.length)return e;var v=new Uint32Array(o);return v.set(i.subarray(0,o),0),v.buffer}},{key:"_append",value:function(e,t){if(t===p)return e;if(e===p)return t;if(null===e)return e;if(null===t)return null;var n=b(e),i=b(t),r=i.length>>>1,o=new Uint32Array(n.length+i.length);o.set(n,0);for(var a=n.length,s=n[n.length-2],u=0;u<r;u++)o[a++]=i[u<<1]+s,o[a++]=i[1+(u<<1)];return o.buffer}},{key:"_insert",value:function(e,t,n){if(null===e||e===p)return e;var i=b(e),r=i.length>>>1,o=u.A.findIndexInTokensArray(i,t);o>0&&(i[o-1<<1]===t&&o--);for(var a=o;a<r;a++)i[a<<1]+=n;return e}}]),e}()},43717:function(e,t,n){"use strict";n.d(t,{Af:function(){return o},eq:function(){return a},t2:function(){return u},vu:function(){return r}});var i=n(37762),r="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";var o=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n="(-?\\d*\\.\\d\\w*)|([^",o=(0,i.Z)(r);try{for(o.s();!(e=o.n()).done;){var a=e.value;t.indexOf(a)>=0||(n+="\\"+a)}}catch(s){o.e(s)}finally{o.f()}return n+="\\s]+)",new RegExp(n,"g")}();function a(e){var t=o;if(e&&e instanceof RegExp)if(e.global)t=e;else{var n="g";e.ignoreCase&&(n+="i"),e.multiline&&(n+="m"),e.unicode&&(n+="u"),t=new RegExp(e.source,n)}return t.lastIndex=0,t}var s={maxLen:1e3,windowSize:15,timeBudget:150};function u(e,t,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:s;if(n.length>r.maxLen){var o=e-r.maxLen/2;return o<0?o=0:i+=o,u(e,t,n=n.substring(o,e+r.maxLen/2),i,r)}for(var a=Date.now(),c=e-1-i,d=-1,h=null,f=1;!(Date.now()-a>=r.timeBudget);f++){var p=c-r.windowSize*f;t.lastIndex=Math.max(0,p);var g=l(t,n,c,d);if(!g&&h)break;if(h=g,p<=0)break;d=p}if(h){var v={word:h[0],startColumn:i+1+h.index,endColumn:i+1+h.index+h[0].length};return t.lastIndex=0,v}return null}function l(e,t,n,i){for(var r;r=e.exec(t);){var o=r.index||0;if(o<=n&&e.lastIndex>=n)return r;if(i>0&&o>i)return null}return null}},99404:function(e,t,n){"use strict";n.d(t,{H9:function(){return P},He:function(){return A},OH:function(){return B},KZ:function(){return S},RN:function(){return T},Ct:function(){return M},Az:function(){return Z},MY:function(){return r},vH:function(){return D},vN:function(){return F},K7:function(){return Y},wT:function(){return V},vJ:function(){return E},AD:function(){return w},aC:function(){return W},xp:function(){return L},vI:function(){return I},wo:function(){return R},rl:function(){return g},pM:function(){return H},id:function(){return N},ln:function(){return j},FL:function(){return C},G0:function(){return k},AC:function(){return z},nD:function(){return x},WW:function(){return i},uZ:function(){return o},NX:function(){return v},RW:function(){return U},tA:function(){return O},jr:function(){return _},Sy:function(){return m},vx:function(){return y}});var i,r,o,a=n(43144),s=n(15671),u=n(67775),l=n(67033),c=n(66748),d=n(11732),h=n(81626),f=function(){function e(){(0,s.Z)(this,e),this._map=new Map,this._promises=new Map,this._onDidChange=new d.Q5,this.onDidChange=this._onDidChange.event,this._colorMap=null}return(0,a.Z)(e,[{key:"fire",value:function(e){this._onDidChange.fire({changedLanguages:e,changedColorMap:!1})}},{key:"register",value:function(e,t){var n=this;return this._map.set(e,t),this.fire([e]),(0,h.OF)((function(){n._map.get(e)===t&&(n._map.delete(e),n.fire([e]))}))}},{key:"registerPromise",value:function(e,t){var n=this,i=null,r=!1;return this._promises.set(e,t.then((function(t){n._promises.delete(e),!r&&t&&(i=n.register(e,t))}))),(0,h.OF)((function(){r=!0,i&&i.dispose()}))}},{key:"getPromise",value:function(e){var t=this,n=this.get(e);if(n)return Promise.resolve(n);var i=this._promises.get(e);return i?i.then((function(n){return t.get(e)})):null}},{key:"get",value:function(e){return this._map.get(e)||null}},{key:"setColorMap",value:function(e){this._colorMap=e,this._onDidChange.fire({changedLanguages:Array.from(this._map.keys()),changedColorMap:!0})}},{key:"getColorMap",value:function(){return this._colorMap}},{key:"getDefaultBackground",value:function(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}}]),e}(),p=n(4354),g=(0,a.Z)((function e(t,n){(0,s.Z)(this,e),this.language=t,this.id=n})),v=function(){function e(){(0,s.Z)(this,e)}return(0,a.Z)(e,null,[{key:"getLanguageId",value:function(e){return(255&e)>>>0}},{key:"getTokenType",value:function(e){return(1792&e)>>>8}},{key:"getFontStyle",value:function(e){return(14336&e)>>>11}},{key:"getForeground",value:function(e){return(8372224&e)>>>14}},{key:"getBackground",value:function(e){return(4286578688&e)>>>23}},{key:"getClassNameFromMetadata",value:function(e){var t="mtk"+this.getForeground(e),n=this.getFontStyle(e);return 1&n&&(t+=" mtki"),2&n&&(t+=" mtkb"),4&n&&(t+=" mtku"),t}},{key:"getInlineStyleFromMetadata",value:function(e,t){var n=this.getForeground(e),i=this.getFontStyle(e),r="color: ".concat(t[n],";");return 1&i&&(r+="font-style: italic;"),2&i&&(r+="font-weight: bold;"),4&i&&(r+="text-decoration: underline;"),r}}]),e}(),m=function(){var e=Object.create(null);return e[0]="symbol-method",e[1]="symbol-function",e[2]="symbol-constructor",e[3]="symbol-field",e[4]="symbol-variable",e[5]="symbol-class",e[6]="symbol-struct",e[7]="symbol-interface",e[8]="symbol-module",e[9]="symbol-property",e[10]="symbol-event",e[11]="symbol-operator",e[12]="symbol-unit",e[13]="symbol-value",e[14]="symbol-constant",e[15]="symbol-enum",e[16]="symbol-enum-member",e[17]="symbol-keyword",e[27]="symbol-snippet",e[18]="symbol-text",e[19]="symbol-color",e[20]="symbol-file",e[21]="symbol-reference",e[22]="symbol-customcolor",e[23]="symbol-folder",e[24]="symbol-type-parameter",e[25]="account",e[26]="issues",function(t){var n=e[t],i=n&&p.fK.get(n);return i||(console.info("No codicon found for CompletionItemKind "+t),i=p.lA.symbolProperty),i.classNames}}(),_=function(){var e=Object.create(null);return e.method=0,e.function=1,e.constructor=2,e.field=3,e.variable=4,e.class=5,e.struct=6,e.interface=7,e.module=8,e.property=9,e.event=10,e.operator=11,e.unit=12,e.value=13,e.constant=14,e.enum=15,e["enum-member"]=16,e.enumMember=16,e.keyword=17,e.snippet=27,e.text=18,e.color=19,e.file=20,e.reference=21,e.customcolor=22,e.folder=23,e["type-parameter"]=24,e.typeParameter=24,e.account=25,e.issue=26,function(t,n){var i=e[t];return"undefined"!==typeof i||n||(i=9),i}}();function y(e){return e&&u.o.isUri(e.uri)&&l.e.isIRange(e.range)&&(l.e.isIRange(e.originSelectionRange)||l.e.isIRange(e.targetSelectionRange))}!function(e){e[e.Invoke=1]="Invoke",e[e.TriggerCharacter=2]="TriggerCharacter",e[e.ContentChange=3]="ContentChange"}(i||(i={})),function(e){e[e.Text=0]="Text",e[e.Read=1]="Read",e[e.Write=2]="Write"}(r||(r={})),function(e){var t=new Map;t.set("file",0),t.set("module",1),t.set("namespace",2),t.set("package",3),t.set("class",4),t.set("method",5),t.set("property",6),t.set("field",7),t.set("constructor",8),t.set("enum",9),t.set("interface",10),t.set("function",11),t.set("variable",12),t.set("constant",13),t.set("string",14),t.set("number",15),t.set("boolean",16),t.set("array",17),t.set("object",18),t.set("key",19),t.set("null",20),t.set("enum-member",21),t.set("struct",22),t.set("event",23),t.set("operator",24),t.set("type-parameter",25);var n=new Map;n.set(0,"file"),n.set(1,"module"),n.set(2,"namespace"),n.set(3,"package"),n.set(4,"class"),n.set(5,"method"),n.set(6,"property"),n.set(7,"field"),n.set(8,"constructor"),n.set(9,"enum"),n.set(10,"interface"),n.set(11,"function"),n.set(12,"variable"),n.set(13,"constant"),n.set(14,"string"),n.set(15,"number"),n.set(16,"boolean"),n.set(17,"array"),n.set(18,"object"),n.set(19,"key"),n.set(20,"null"),n.set(21,"enum-member"),n.set(22,"struct"),n.set(23,"event"),n.set(24,"operator"),n.set(25,"type-parameter"),e.fromString=function(e){return t.get(e)},e.toString=function(e){return n.get(e)},e.toCssClassName=function(e,t){var i=n.get(e),r=i&&p.fK.get("symbol-"+i);return r||(console.info("No codicon found for SymbolKind "+e),r=p.lA.symbolProperty),"".concat(t?"inline":"block"," ").concat(r.classNames)}}(o||(o={}));var b,w=(0,a.Z)((function e(t){(0,s.Z)(this,e),this.value=t}));w.Comment=new w("comment"),w.Imports=new w("imports"),w.Region=new w("region"),function(e){e[e.Other=0]="Other",e[e.Type=1]="Type",e[e.Parameter=2]="Parameter"}(b||(b={}));var C=new c.c,k=new c.c,S=new c.c,x=new c.c,L=new c.c,E=new c.c,D=new c.c,N=new c.c,M=new c.c,T=new c.c,I=new c.c,O=new c.c,A=new c.c,R=new c.c,P=new c.c,Z=new c.c,F=new c.c,j=new c.c,H=new c.c,B=new c.c,z=new c.c,W=new c.c,V=new c.c,Y=new c.c,U=new f},7273:function(e,t,n){"use strict";n.d(t,{V6:function(){return s},c$:function(){return u},wU:function(){return i}});var i,r=n(37762),o=n(15671),a=n(43144);!function(e){e[e.None=0]="None",e[e.Indent=1]="Indent",e[e.IndentOutdent=2]="IndentOutdent",e[e.Outdent=3]="Outdent"}(i||(i={}));var s=function(){function e(t){if((0,o.Z)(this,e),this.open=t.open,this.close=t.close,this._standardTokenMask=0,Array.isArray(t.notIn))for(var n=0,i=t.notIn.length;n<i;n++){switch(t.notIn[n]){case"string":this._standardTokenMask|=2;break;case"comment":this._standardTokenMask|=1;break;case"regex":this._standardTokenMask|=4}}}return(0,a.Z)(e,[{key:"isOK",value:function(e){return 0===(this._standardTokenMask&e)}}]),e}(),u=(0,a.Z)((function e(t){(0,o.Z)(this,e),this.autoClosingPairsOpenByStart=new Map,this.autoClosingPairsOpenByEnd=new Map,this.autoClosingPairsCloseByStart=new Map,this.autoClosingPairsCloseByEnd=new Map,this.autoClosingPairsCloseSingleChar=new Map;var n,i=(0,r.Z)(t);try{for(i.s();!(n=i.n()).done;){var a=n.value;l(this.autoClosingPairsOpenByStart,a.open.charAt(0),a),l(this.autoClosingPairsOpenByEnd,a.open.charAt(a.open.length-1),a),l(this.autoClosingPairsCloseByStart,a.close.charAt(0),a),l(this.autoClosingPairsCloseByEnd,a.close.charAt(a.close.length-1),a),1===a.close.length&&1===a.open.length&&l(this.autoClosingPairsCloseSingleChar,a.close,a)}}catch(s){i.e(s)}finally{i.f()}}));function l(e,t,n){e.has(t)?e.get(t).push(n):e.set(t,[n])}},65262:function(e,t,n){"use strict";n.d(t,{zu:function(){return x}});var i=n(37762),r=n(29439),o=n(15671),a=n(43144),s=n(11732),u=n(81626),l=n(51747),c=n(43717),d=n(7273),h=n(57429),f=function(){function e(t){if((0,o.Z)(this,e),t.autoClosingPairs?this._autoClosingPairs=t.autoClosingPairs.map((function(e){return new d.V6(e)})):t.brackets?this._autoClosingPairs=t.brackets.map((function(e){return new d.V6({open:e[0],close:e[1]})})):this._autoClosingPairs=[],t.__electricCharacterSupport&&t.__electricCharacterSupport.docComment){var n=t.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new d.V6({open:n.open,close:n.close||""}))}this._autoCloseBefore="string"===typeof t.autoCloseBefore?t.autoCloseBefore:e.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED,this._surroundingPairs=t.surroundingPairs||this._autoClosingPairs}return(0,a.Z)(e,[{key:"getAutoClosingPairs",value:function(){return this._autoClosingPairs}},{key:"getAutoCloseBeforeSet",value:function(){return this._autoCloseBefore}},{key:"getSurroundingPairs",value:function(){return this._surroundingPairs}}],[{key:"shouldAutoClosePair",value:function(e,t,n){if(0===t.getTokenCount())return!0;var i=t.findTokenIndexAtOffset(n-2),r=t.getStandardTokenType(i);return e.isOK(r)}}]),e}();f.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED=";:.,=}])> \n\t";var p=n(8102),g=function(){function e(t){(0,o.Z)(this,e),this._richEditBrackets=t}return(0,a.Z)(e,[{key:"getElectricCharacters",value:function(){var e=[];if(this._richEditBrackets){var t,n=(0,i.Z)(this._richEditBrackets.brackets);try{for(n.s();!(t=n.n()).done;){var r,o=t.value,a=(0,i.Z)(o.close);try{for(a.s();!(r=a.n()).done;){var s=r.value,u=s.charAt(s.length-1);e.push(u)}}catch(l){a.e(l)}finally{a.f()}}}catch(l){n.e(l)}finally{n.f()}}return e=e.filter((function(e,t,n){return n.indexOf(e)===t}))}},{key:"onElectricCharacter",value:function(e,t,n){if(!this._richEditBrackets||0===this._richEditBrackets.brackets.length)return null;var i=t.findTokenIndexAtOffset(n-1);if((0,h.Bu)(t.getStandardTokenType(i)))return null;var r=this._richEditBrackets.reversedRegex,o=t.getLineContent().substring(0,n-1)+e,a=p.Vr.findPrevBracketInRange(r,1,o,0,o.length);if(!a)return null;var s=o.substring(a.startColumn-1,a.endColumn-1).toLowerCase();if(this._richEditBrackets.textIsOpenBracket[s])return null;var u=t.getActualLineContentBefore(a.startColumn-1);return/^\s*$/.test(u)?{matchOpenBracket:s}:null}}]),e}();function v(e){return e.global&&(e.lastIndex=0),!0}var m=function(){function e(t){(0,o.Z)(this,e),this._indentationRules=t}return(0,a.Z)(e,[{key:"shouldIncrease",value:function(e){return!!(this._indentationRules&&this._indentationRules.increaseIndentPattern&&v(this._indentationRules.increaseIndentPattern)&&this._indentationRules.increaseIndentPattern.test(e))}},{key:"shouldDecrease",value:function(e){return!!(this._indentationRules&&this._indentationRules.decreaseIndentPattern&&v(this._indentationRules.decreaseIndentPattern)&&this._indentationRules.decreaseIndentPattern.test(e))}},{key:"shouldIndentNextLine",value:function(e){return!!(this._indentationRules&&this._indentationRules.indentNextLinePattern&&v(this._indentationRules.indentNextLinePattern)&&this._indentationRules.indentNextLinePattern.test(e))}},{key:"shouldIgnore",value:function(e){return!!(this._indentationRules&&this._indentationRules.unIndentedLinePattern&&v(this._indentationRules.unIndentedLinePattern)&&this._indentationRules.unIndentedLinePattern.test(e))}},{key:"getIndentMetadata",value:function(e){var t=0;return this.shouldIncrease(e)&&(t+=1),this.shouldDecrease(e)&&(t+=2),this.shouldIndentNextLine(e)&&(t+=4),this.shouldIgnore(e)&&(t+=8),t}}]),e}(),_=n(8729),y=function(){function e(t){var n=this;(0,o.Z)(this,e),(t=t||{}).brackets=t.brackets||[["(",")"],["{","}"],["[","]"]],this._brackets=[],t.brackets.forEach((function(t){var i=e._createOpenBracketRegExp(t[0]),r=e._createCloseBracketRegExp(t[1]);i&&r&&n._brackets.push({open:t[0],openRegExp:i,close:t[1],closeRegExp:r})})),this._regExpRules=t.onEnterRules||[]}return(0,a.Z)(e,[{key:"onEnter",value:function(e,t,n,i){if(e>=3)for(var r=0,o=this._regExpRules.length;r<o;r++){var a=this._regExpRules[r];if([{reg:a.beforeText,text:n},{reg:a.afterText,text:i},{reg:a.previousLineText,text:t}].every((function(e){return!e.reg||e.reg.test(e.text)})))return a.action}if(e>=2&&n.length>0&&i.length>0)for(var s=0,u=this._brackets.length;s<u;s++){var l=this._brackets[s];if(l.openRegExp.test(n)&&l.closeRegExp.test(i))return{indentAction:d.wU.IndentOutdent}}if(e>=2&&n.length>0)for(var c=0,h=this._brackets.length;c<h;c++){if(this._brackets[c].openRegExp.test(n))return{indentAction:d.wU.Indent}}return null}}],[{key:"_createOpenBracketRegExp",value:function(t){var n=l.ec(t);return/\B/.test(n.charAt(0))||(n="\\b"+n),n+="\\s*$",e._safeRegExp(n)}},{key:"_createCloseBracketRegExp",value:function(t){var n=l.ec(t);return/\B/.test(n.charAt(n.length-1))||(n+="\\b"),n="^\\s*"+n,e._safeRegExp(n)}},{key:"_safeRegExp",value:function(e){try{return new RegExp(e)}catch(t){return(0,_.dL)(t),null}}}]),e}(),b=function(){function e(t,n){(0,o.Z)(this,e),this._languageIdentifier=t,this._brackets=null,this._electricCharacter=null,this._conf=n,this._onEnterSupport=this._conf.brackets||this._conf.indentationRules||this._conf.onEnterRules?new y(this._conf):null,this.comments=e._handleComments(this._conf),this.characterPair=new f(this._conf),this.wordDefinition=this._conf.wordPattern||c.Af,this.indentationRules=this._conf.indentationRules,this._conf.indentationRules?this.indentRulesSupport=new m(this._conf.indentationRules):this.indentRulesSupport=null,this.foldingRules=this._conf.folding||{}}return(0,a.Z)(e,[{key:"brackets",get:function(){return!this._brackets&&this._conf.brackets&&(this._brackets=new p.EA(this._languageIdentifier,this._conf.brackets)),this._brackets}},{key:"electricCharacter",get:function(){return this._electricCharacter||(this._electricCharacter=new g(this.brackets)),this._electricCharacter}},{key:"onEnter",value:function(e,t,n,i){return this._onEnterSupport?this._onEnterSupport.onEnter(e,t,n,i):null}}],[{key:"_handleComments",value:function(e){var t=e.comments;if(!t)return null;var n={};if(t.lineComment&&(n.lineCommentToken=t.lineComment),t.blockComment){var i=(0,r.Z)(t.blockComment,2),o=i[0],a=i[1];n.blockCommentStartToken=o,n.blockCommentEndToken=a}return n}}]),e}(),w=(0,a.Z)((function e(t){(0,o.Z)(this,e),this.languageIdentifier=t})),C=function(){function e(t,n,i){(0,o.Z)(this,e),this.configuration=t,this.priority=n,this.order=i}return(0,a.Z)(e,null,[{key:"cmp",value:function(e,t){return e.priority===t.priority?e.order-t.order:e.priority-t.priority}}]),e}(),k=function(){function e(t){(0,o.Z)(this,e),this.languageIdentifier=t,this._resolved=null,this._entries=[],this._order=0,this._resolved=null}return(0,a.Z)(e,[{key:"register",value:function(e,t){var n=this,i=new C(e,t,++this._order);return this._entries.push(i),this._resolved=null,(0,u.OF)((function(){for(var e=0;e<n._entries.length;e++)if(n._entries[e]===i){n._entries.splice(e,1),n._resolved=null;break}}))}},{key:"getRichEditSupport",value:function(){if(!this._resolved){var e=this._resolve();e&&(this._resolved=new b(this.languageIdentifier,e))}return this._resolved}},{key:"_resolve",value:function(){if(0===this._entries.length)return null;this._entries.sort(C.cmp);var e,t={},n=(0,i.Z)(this._entries);try{for(n.s();!(e=n.n()).done;){var r=e.value.configuration;t.comments=r.comments||t.comments,t.brackets=r.brackets||t.brackets,t.wordPattern=r.wordPattern||t.wordPattern,t.indentationRules=r.indentationRules||t.indentationRules,t.onEnterRules=r.onEnterRules||t.onEnterRules,t.autoClosingPairs=r.autoClosingPairs||t.autoClosingPairs,t.surroundingPairs=r.surroundingPairs||t.surroundingPairs,t.autoCloseBefore=r.autoCloseBefore||t.autoCloseBefore,t.folding=r.folding||t.folding,t.__electricCharacterSupport=r.__electricCharacterSupport||t.__electricCharacterSupport}}catch(o){n.e(o)}finally{n.f()}return t}}]),e}(),S=function(){function e(){(0,o.Z)(this,e),this._entries2=new Map,this._onDidChange=new s.Q5,this.onDidChange=this._onDidChange.event}return(0,a.Z)(e,[{key:"register",value:function(e,t){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this._entries2.get(e.id);r||(r=new k(e),this._entries2.set(e.id,r));var o=r.register(t,i);return this._onDidChange.fire(new w(e)),(0,u.OF)((function(){o.dispose(),n._onDidChange.fire(new w(e))}))}},{key:"_getRichEditSupport",value:function(e){var t=this._entries2.get(e);return t?t.getRichEditSupport():null}},{key:"getIndentationRules",value:function(e){var t=this._getRichEditSupport(e);return t&&t.indentationRules||null}},{key:"_getElectricCharacterSupport",value:function(e){var t=this._getRichEditSupport(e);return t&&t.electricCharacter||null}},{key:"getElectricCharacters",value:function(e){var t=this._getElectricCharacterSupport(e);return t?t.getElectricCharacters():[]}},{key:"onElectricCharacter",value:function(e,t,n){var i=(0,h.wH)(t,n-1),r=this._getElectricCharacterSupport(i.languageId);return r?r.onElectricCharacter(e,i,n-i.firstCharOffset):null}},{key:"getComments",value:function(e){var t=this._getRichEditSupport(e);return t&&t.comments||null}},{key:"_getCharacterPairSupport",value:function(e){var t=this._getRichEditSupport(e);return t&&t.characterPair||null}},{key:"getAutoClosingPairs",value:function(e){var t=this._getCharacterPairSupport(e);return new d.c$(t?t.getAutoClosingPairs():[])}},{key:"getAutoCloseBeforeSet",value:function(e){var t=this._getCharacterPairSupport(e);return t?t.getAutoCloseBeforeSet():f.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED}},{key:"getSurroundingPairs",value:function(e){var t=this._getCharacterPairSupport(e);return t?t.getSurroundingPairs():[]}},{key:"shouldAutoClosePair",value:function(e,t,n){var i=(0,h.wH)(t,n-1);return f.shouldAutoClosePair(e,i,n-i.firstCharOffset)}},{key:"getWordDefinition",value:function(e){var t=this._getRichEditSupport(e);return t?(0,c.eq)(t.wordDefinition||null):(0,c.eq)(null)}},{key:"getFoldingRules",value:function(e){var t=this._getRichEditSupport(e);return t?t.foldingRules:{}}},{key:"getIndentRulesSupport",value:function(e){var t=this._getRichEditSupport(e);return t&&t.indentRulesSupport||null}},{key:"getPrecedingValidLine",value:function(e,t,n){var i=e.getLanguageIdAtPosition(t,0);if(t>1){var r,o=-1;for(r=t-1;r>=1;r--){if(e.getLanguageIdAtPosition(r,0)!==i)return o;var a=e.getLineContent(r);if(!n.shouldIgnore(a)&&!/^\s+$/.test(a)&&""!==a)return r;o=r}}return-1}},{key:"getInheritIndentForLine",value:function(e,t,n){var i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(e<4)return null;var r=this.getIndentRulesSupport(t.getLanguageIdentifier().id);if(!r)return null;if(n<=1)return{indentation:"",action:null};var o=this.getPrecedingValidLine(t,n,r);if(o<0)return null;if(o<1)return{indentation:"",action:null};var a=t.getLineContent(o);if(r.shouldIncrease(a)||r.shouldIndentNextLine(a))return{indentation:l.V8(a),action:d.wU.Indent,line:o};if(r.shouldDecrease(a))return{indentation:l.V8(a),action:null,line:o};if(1===o)return{indentation:l.V8(t.getLineContent(o)),action:null,line:o};var s=o-1,u=r.getIndentMetadata(t.getLineContent(s));if(!(3&u)&&4&u){for(var c=0,h=s-1;h>0;h--)if(!r.shouldIndentNextLine(t.getLineContent(h))){c=h;break}return{indentation:l.V8(t.getLineContent(c+1)),action:null,line:c+1}}if(i)return{indentation:l.V8(t.getLineContent(o)),action:null,line:o};for(var f=o;f>0;f--){var p=t.getLineContent(f);if(r.shouldIncrease(p))return{indentation:l.V8(p),action:d.wU.Indent,line:f};if(r.shouldIndentNextLine(p)){for(var g=0,v=f-1;v>0;v--)if(!r.shouldIndentNextLine(t.getLineContent(f))){g=v;break}return{indentation:l.V8(t.getLineContent(g+1)),action:null,line:g+1}}if(r.shouldDecrease(p))return{indentation:l.V8(p),action:null,line:f}}return{indentation:l.V8(t.getLineContent(1)),action:null,line:1}}},{key:"getGoodIndentForLine",value:function(e,t,n,i,r){if(e<4)return null;var o=this._getRichEditSupport(n);if(!o)return null;var a=this.getIndentRulesSupport(n);if(!a)return null;var s=this.getInheritIndentForLine(e,t,i),u=t.getLineContent(i);if(s){var c=s.line;if(void 0!==c){var h=o.onEnter(e,"",t.getLineContent(c),"");if(h){var f=l.V8(t.getLineContent(c));return h.removeText&&(f=f.substring(0,f.length-h.removeText)),h.indentAction===d.wU.Indent||h.indentAction===d.wU.IndentOutdent?f=r.shiftIndent(f):h.indentAction===d.wU.Outdent&&(f=r.unshiftIndent(f)),a.shouldDecrease(u)&&(f=r.unshiftIndent(f)),h.appendText&&(f+=h.appendText),l.V8(f)}}return a.shouldDecrease(u)?s.action===d.wU.Indent?s.indentation:r.unshiftIndent(s.indentation):s.action===d.wU.Indent?r.shiftIndent(s.indentation):s.indentation}return null}},{key:"getIndentForEnter",value:function(e,t,n,i){if(e<4)return null;t.forceTokenization(n.startLineNumber);var r,o,a=t.getLineTokens(n.startLineNumber),s=(0,h.wH)(a,n.startColumn-1),u=s.getLineContent(),c=!1;(s.firstCharOffset>0&&a.getLanguageId(0)!==s.languageId?(c=!0,r=u.substr(0,n.startColumn-1-s.firstCharOffset)):r=a.getLineContent().substring(0,n.startColumn-1),n.isEmpty())?o=u.substr(n.startColumn-1-s.firstCharOffset):o=this.getScopedLineTokens(t,n.endLineNumber,n.endColumn).getLineContent().substr(n.endColumn-1-s.firstCharOffset);var f=this.getIndentRulesSupport(s.languageId);if(!f)return null;var p=r,g=l.V8(r),v={getLineTokens:function(e){return t.getLineTokens(e)},getLanguageIdentifier:function(){return t.getLanguageIdentifier()},getLanguageIdAtPosition:function(e,n){return t.getLanguageIdAtPosition(e,n)},getLineContent:function(e){return e===n.startLineNumber?p:t.getLineContent(e)}},m=l.V8(a.getLineContent()),_=this.getInheritIndentForLine(e,v,n.startLineNumber+1);if(!_){var y=c?m:g;return{beforeEnter:y,afterEnter:y}}var b=c?m:_.indentation;return _.action===d.wU.Indent&&(b=i.shiftIndent(b)),f.shouldDecrease(o)&&(b=i.unshiftIndent(b)),{beforeEnter:c?m:g,afterEnter:b}}},{key:"getIndentActionForType",value:function(e,t,n,i,r){if(e<4)return null;var o=this.getScopedLineTokens(t,n.startLineNumber,n.startColumn);if(o.firstCharOffset)return null;var a=this.getIndentRulesSupport(o.languageId);if(!a)return null;var s,u=o.getLineContent(),l=u.substr(0,n.startColumn-1-o.firstCharOffset);n.isEmpty()?s=u.substr(n.startColumn-1-o.firstCharOffset):s=this.getScopedLineTokens(t,n.endLineNumber,n.endColumn).getLineContent().substr(n.endColumn-1-o.firstCharOffset);if(!a.shouldDecrease(l+s)&&a.shouldDecrease(l+i+s)){var c=this.getInheritIndentForLine(e,t,n.startLineNumber,!1);if(!c)return null;var h=c.indentation;return c.action!==d.wU.Indent&&(h=r.unshiftIndent(h)),h}return null}},{key:"getIndentMetadata",value:function(e,t){var n=this.getIndentRulesSupport(e.getLanguageIdentifier().id);return n?t<1||t>e.getLineCount()?null:n.getIndentMetadata(e.getLineContent(t)):null}},{key:"getEnterAction",value:function(e,t,n){var i=this.getScopedLineTokens(t,n.startLineNumber,n.startColumn),r=this._getRichEditSupport(i.languageId);if(!r)return null;var o,a=i.getLineContent(),s=a.substr(0,n.startColumn-1-i.firstCharOffset);n.isEmpty()?o=a.substr(n.startColumn-1-i.firstCharOffset):o=this.getScopedLineTokens(t,n.endLineNumber,n.endColumn).getLineContent().substr(n.endColumn-1-i.firstCharOffset);var u="";if(n.startLineNumber>1&&0===i.firstCharOffset){var l=this.getScopedLineTokens(t,n.startLineNumber-1);l.languageId===i.languageId&&(u=l.getLineContent())}var c=r.onEnter(e,u,s,o);if(!c)return null;var h=c.indentAction,f=c.appendText,p=c.removeText||0;f?h===d.wU.Indent&&(f="\t"+f):f=h===d.wU.Indent||h===d.wU.IndentOutdent?"\t":"";var g=this.getIndentationAtPosition(t,n.startLineNumber,n.startColumn);return p&&(g=g.substring(0,g.length-p)),{indentAction:h,appendText:f,removeText:p,indentation:g}}},{key:"getIndentationAtPosition",value:function(e,t,n){var i=e.getLineContent(t),r=l.V8(i);return r.length>n-1&&(r=r.substring(0,n-1)),r}},{key:"getScopedLineTokens",value:function(e,t,n){e.forceTokenization(t);var i=e.getLineTokens(t),r="undefined"===typeof n?e.getLineMaxColumn(t)-1:n-1;return(0,h.wH)(i,r)}},{key:"getBracketsSupport",value:function(e){var t=this._getRichEditSupport(e);return t&&t.brackets||null}}]),e}(),x=new S},66748:function(e,t,n){"use strict";n.d(t,{c:function(){return v},Y:function(){return m}});var i=n(37762),r=n(15671),o=n(43144),a=n(11732),s=n(25567),u=n(81626),l=n(15022),c=n(5265),d=n(79612),h=n(36912);function f(e,t,n,r){if(Array.isArray(e)){var o,a=0,s=(0,i.Z)(e);try{for(s.s();!(o=s.n()).done;){var u=f(o.value,t,n,r);if(10===u)return u;u>a&&(a=u)}}catch(_){s.e(_)}finally{s.f()}return a}if("string"===typeof e)return r?"*"===e?5:e===n?10:0:0;if(e){var l=e.language,c=e.pattern,p=e.scheme,g=e.hasAccessToAllModels;if(!r&&!g)return 0;var v=0;if(p)if(p===t.scheme)v=10;else{if("*"!==p)return 0;v=5}if(l)if(l===n)v=10;else{if("*"!==l)return 0;v=Math.max(v,5)}if(c){var m;if((m="string"===typeof c?c:Object.assign(Object.assign({},c),{base:(0,h.Fv)(c.base)}))!==t.fsPath&&!(0,d.EQ)(m,t.fsPath))return 0;v=10}return v}return 0}var p=n(49076);function g(e){return"string"!==typeof e&&(Array.isArray(e)?e.every(g):!!e.exclusive)}var v=function(){function e(){(0,r.Z)(this,e),this._clock=0,this._entries=[],this._onDidChange=new a.Q5}return(0,o.Z)(e,[{key:"onDidChange",get:function(){return this._onDidChange.event}},{key:"register",value:function(e,t){var n=this,i={selector:e,provider:t,_score:-1,_time:this._clock++};return this._entries.push(i),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),(0,u.OF)((function(){if(i){var e=n._entries.indexOf(i);e>=0&&(n._entries.splice(e,1),n._lastCandidate=void 0,n._onDidChange.fire(n._entries.length),i=void 0)}}))}},{key:"has",value:function(e){return this.all(e).length>0}},{key:"all",value:function(e){if(!e)return[];this._updateScores(e);var t,n=[],r=(0,i.Z)(this._entries);try{for(r.s();!(t=r.n()).done;){var o=t.value;o._score>0&&n.push(o.provider)}}catch(a){r.e(a)}finally{r.f()}return n}},{key:"ordered",value:function(e){var t=[];return this._orderedForEach(e,(function(e){return t.push(e.provider)})),t}},{key:"orderedGroups",value:function(e){var t,n,i=[];return this._orderedForEach(e,(function(e){t&&n===e._score?t.push(e.provider):(n=e._score,t=[e.provider],i.push(t))})),i}},{key:"_orderedForEach",value:function(e,t){if(e){this._updateScores(e);var n,r=(0,i.Z)(this._entries);try{for(r.s();!(n=r.n()).done;){var o=n.value;o._score>0&&t(o)}}catch(a){r.e(a)}finally{r.f()}}}},{key:"_updateScores",value:function(t){var n={uri:t.uri.toString(),language:t.getLanguageIdentifier().language};if(!this._lastCandidate||this._lastCandidate.language!==n.language||this._lastCandidate.uri!==n.uri){this._lastCandidate=n;var r,o=(0,i.Z)(this._entries);try{for(o.s();!(r=o.n()).done;){var a=r.value;if(a._score=f(a.selector,t.uri,t.getLanguageIdentifier().language,(0,p.p)(t)),g(a.selector)&&a._score>0){var s,u=(0,i.Z)(this._entries);try{for(u.s();!(s=u.n()).done;){s.value._score=0}}catch(l){u.e(l)}finally{u.f()}a._score=1e3;break}}}catch(l){o.e(l)}finally{o.f()}this._entries.sort(e._compareByScoreAndTime)}}}],[{key:"_compareByScoreAndTime",value:function(e,t){return e._score<t._score?1:e._score>t._score?-1:e._time<t._time?1:e._time>t._time?-1:0}}]),e}(),m=function(){function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.MAX_SAFE_INTEGER;(0,r.Z)(this,e),this._registry=t,this.min=n,this.max=i,this._cache=new l.z6(50,.7)}return(0,o.Z)(e,[{key:"_key",value:function(e){return e.id+(0,s.vp)(this._registry.all(e))}},{key:"_clamp",value:function(e){return void 0===e?this.min:Math.min(this.max,Math.max(this.min,Math.floor(1.3*e)))}},{key:"get",value:function(e){var t=this._key(e),n=this._cache.get(t);return this._clamp(null===n||void 0===n?void 0:n.value)}},{key:"update",value:function(e,t){var n=this._key(e),i=this._cache.get(n);return i||(i=new c.n,this._cache.set(n,i)),i.update(t),this.get(e)}}]),e}()},54970:function(e,t,n){"use strict";n.d(t,{Tb:function(){return h},XT:function(){return d},dQ:function(){return c}});var i=n(15671),r=n(43144),o=n(56345),a=n(11732),s=n(99404),u=n(65262),l=n(38774),c=new(function(){function e(){(0,i.Z)(this,e),this._onDidChangeLanguages=new a.Q5,this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[],this._dynamicLanguages=[]}return(0,r.Z)(e,[{key:"registerLanguage",value:function(e){var t=this;return this._languages.push(e),this._onDidChangeLanguages.fire(void 0),{dispose:function(){for(var n=0,i=t._languages.length;n<i;n++)if(t._languages[n]===e)return void t._languages.splice(n,1)}}}},{key:"getLanguages",value:function(){return[].concat(this._languages).concat(this._dynamicLanguages)}}]),e}());l.B.add("editor.modesRegistry",c);var d="plaintext",h=new s.rl(d,1);c.registerLanguage({id:d,extensions:[".txt"],aliases:[o.N("plainText.alias","Plain Text"),"text"],mimetypes:["text/plain"]}),u.zu.register(h,{brackets:[["(",")"],["[","]"],["{","}"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],folding:{offSide:!0}},0)},59401:function(e,t,n){"use strict";n.d(t,{Ri:function(){return c},TG:function(){return u},mh:function(){return d},nO:function(){return s},pA:function(){return l}});var i=n(15671),r=n(43144),o=n(98154),a=n(99404),s=new(function(){function e(){(0,i.Z)(this,e)}return(0,r.Z)(e,[{key:"clone",value:function(){return this}},{key:"equals",value:function(e){return this===e}}]),e}()),u="vs.editor.nullMode",l=new a.rl(u,0);function c(e,t,n,i){return new o.hG([new o.WU(i,"",e)],n)}function d(e,t,n,i){var r=new Uint32Array(2);return r[0]=i,r[1]=(16384|e<<0|2<<23)>>>0,new o.Hi(r,null===n?s:n)}},57429:function(e,t,n){"use strict";n.d(t,{Bu:function(){return s},wH:function(){return o}});var i=n(15671),r=n(43144);function o(e,t){for(var n=e.getCount(),i=e.findTokenIndexAtOffset(t),r=e.getLanguageId(i),o=i;o+1<n&&e.getLanguageId(o+1)===r;)o++;for(var s=i;s>0&&e.getLanguageId(s-1)===r;)s--;return new a(e,r,s,o+1,e.getStartOffset(s),e.getEndOffset(o))}var a=function(){function e(t,n,r,o,a,s){(0,i.Z)(this,e),this._actual=t,this.languageId=n,this._firstTokenIndex=r,this._lastTokenIndex=o,this.firstCharOffset=a,this._lastCharOffset=s}return(0,r.Z)(e,[{key:"getLineContent",value:function(){return this._actual.getLineContent().substring(this.firstCharOffset,this._lastCharOffset)}},{key:"getActualLineContentBefore",value:function(e){return this._actual.getLineContent().substring(0,this.firstCharOffset+e)}},{key:"getTokenCount",value:function(){return this._lastTokenIndex-this._firstTokenIndex}},{key:"findTokenIndexAtOffset",value:function(e){return this._actual.findTokenIndexAtOffset(e+this.firstCharOffset)-this._firstTokenIndex}},{key:"getStandardTokenType",value:function(e){return this._actual.getStandardTokenType(e+this._firstTokenIndex)}}]),e}();function s(e){return 0!==(7&e)}},8102:function(e,t,n){"use strict";n.d(t,{EA:function(){return d},Vr:function(){return _}});var i=n(29439),r=n(37762),o=n(15671),a=n(43144),s=n(51747),u=n(85500),l=n(67033),c=function(){function e(t,n,i,r,a,s){(0,o.Z)(this,e),this.languageIdentifier=t,this.index=n,this.open=i,this.close=r,this.forwardRegex=a,this.reversedRegex=s,this._openSet=e._toSet(this.open),this._closeSet=e._toSet(this.close)}return(0,a.Z)(e,[{key:"isOpen",value:function(e){return this._openSet.has(e)}},{key:"isClose",value:function(e){return this._closeSet.has(e)}}],[{key:"_toSet",value:function(e){var t,n=new Set,i=(0,r.Z)(e);try{for(i.s();!(t=i.n()).done;){var o=t.value;n.add(o)}}catch(a){i.e(a)}finally{i.f()}return n}}]),e}();var d=(0,a.Z)((function e(t,n){(0,o.Z)(this,e);var a=function(e){var t=e.length;e=e.map((function(e){return[e[0].toLowerCase(),e[1].toLowerCase()]}));for(var n=[],r=0;r<t;r++)n[r]=r;for(var o=function(e,t){var n=(0,i.Z)(e,2),r=n[0],o=n[1],a=(0,i.Z)(t,2),s=a[0],u=a[1];return r===s||r===u||o===s||o===u},a=function(e,i){for(var r=Math.min(e,i),o=Math.max(e,i),a=0;a<t;a++)n[a]===o&&(n[a]=r)},s=0;s<t;s++)for(var u=e[s],l=s+1;l<t;l++)o(u,e[l])&&a(n[s],n[l]);for(var c=[],d=0;d<t;d++){for(var h=[],f=[],p=0;p<t;p++)if(n[p]===d){var g=(0,i.Z)(e[p],2),v=g[0],m=g[1];h.push(v),f.push(m)}h.length>0&&c.push({open:h,close:f})}return c}(n);this.brackets=a.map((function(e,n){return new c(t,n,e.open,e.close,function(e,t,n,i){var r=[];r=r.concat(e),r=r.concat(t);for(var o=0,a=r.length;o<a;o++)h(r[o],n,i,r);return(r=p(r)).sort(f),r.reverse(),v(r)}(e.open,e.close,a,n),function(e,t,n,i){var r=[];r=r.concat(e),r=r.concat(t);for(var o=0,a=r.length;o<a;o++)h(r[o],n,i,r);return(r=p(r)).sort(f),r.reverse(),v(r.map(m))}(e.open,e.close,a,n))})),this.forwardRegex=function(e){var t,n=[],i=(0,r.Z)(e);try{for(i.s();!(t=i.n()).done;){var o,a=t.value,s=(0,r.Z)(a.open);try{for(s.s();!(o=s.n()).done;){var u=o.value;n.push(u)}}catch(h){s.e(h)}finally{s.f()}var l,c=(0,r.Z)(a.close);try{for(c.s();!(l=c.n()).done;){var d=l.value;n.push(d)}}catch(h){c.e(h)}finally{c.f()}}}catch(h){i.e(h)}finally{i.f()}return v(n=p(n))}(this.brackets),this.reversedRegex=function(e){var t,n=[],i=(0,r.Z)(e);try{for(i.s();!(t=i.n()).done;){var o,a=t.value,s=(0,r.Z)(a.open);try{for(s.s();!(o=s.n()).done;){var u=o.value;n.push(u)}}catch(h){s.e(h)}finally{s.f()}var l,c=(0,r.Z)(a.close);try{for(c.s();!(l=c.n()).done;){var d=l.value;n.push(d)}}catch(h){c.e(h)}finally{c.f()}}}catch(h){i.e(h)}finally{i.f()}return v((n=p(n)).map(m))}(this.brackets),this.textIsBracket={},this.textIsOpenBracket={},this.maxBracketLength=0;var s,u=(0,r.Z)(this.brackets);try{for(u.s();!(s=u.n()).done;){var l,d=s.value,g=(0,r.Z)(d.open);try{for(g.s();!(l=g.n()).done;){var _=l.value;this.textIsBracket[_]=d,this.textIsOpenBracket[_]=!0,this.maxBracketLength=Math.max(this.maxBracketLength,_.length)}}catch(C){g.e(C)}finally{g.f()}var y,b=(0,r.Z)(d.close);try{for(b.s();!(y=b.n()).done;){var w=y.value;this.textIsBracket[w]=d,this.textIsOpenBracket[w]=!1,this.maxBracketLength=Math.max(this.maxBracketLength,w.length)}}catch(C){b.e(C)}finally{b.f()}}}catch(C){u.e(C)}finally{u.f()}}));function h(e,t,n,i){for(var o=0,a=t.length;o<a;o++)if(o!==n){var s,u=t[o],l=(0,r.Z)(u.open);try{for(l.s();!(s=l.n()).done;){var c=s.value;c.indexOf(e)>=0&&i.push(c)}}catch(p){l.e(p)}finally{l.f()}var d,h=(0,r.Z)(u.close);try{for(h.s();!(d=h.n()).done;){var f=d.value;f.indexOf(e)>=0&&i.push(f)}}catch(p){h.e(p)}finally{h.f()}}}function f(e,t){return e.length-t.length}function p(e){if(e.length<=1)return e;var t,n=[],i=new Set,o=(0,r.Z)(e);try{for(o.s();!(t=o.n()).done;){var a=t.value;i.has(a)||(n.push(a),i.add(a))}}catch(s){o.e(s)}finally{o.f()}return n}function g(e){var t=/^[\w ]+$/.test(e);return e=s.ec(e),t?"\\b".concat(e,"\\b"):e}function v(e){var t="(".concat(e.map(g).join(")|("),")");return s.GF(t,!0)}var m=function(){var e=null,t=null;return function(n){return e!==n&&(t=function(e){if(u.lZ){for(var t=new Uint16Array(e.length),n=0,i=e.length-1;i>=0;i--)t[n++]=e.charCodeAt(i);return u.oe().decode(t)}for(var r=[],o=0,a=e.length-1;a>=0;a--)r[o++]=e.charAt(a);return r.join("")}(e=n)),t}}(),_=function(){function e(){(0,o.Z)(this,e)}return(0,a.Z)(e,null,[{key:"_findPrevBracketInText",value:function(e,t,n,i){var r=n.match(e);if(!r)return null;var o=n.length-(r.index||0),a=r[0].length,s=i+o;return new l.e(t,s-a+1,t,s+1)}},{key:"findPrevBracketInRange",value:function(e,t,n,i,r){var o=m(n).substring(n.length-r,n.length-i);return this._findPrevBracketInText(e,t,o,i)}},{key:"findNextBracketInText",value:function(e,t,n,i){var r=n.match(e);if(!r)return null;var o=r.index||0,a=r[0].length;if(0===a)return null;var s=i+o;return new l.e(t,s+1,t,s+1+a)}},{key:"findNextBracketInRange",value:function(e,t,n,i,r){var o=n.substring(i,r);return this.findNextBracketInText(e,t,o,i)}}]),e}()},54821:function(e,t,n){"use strict";n.d(t,{C:function(){return s},F:function(){return u}});var i=n(51747),r=n(34763),o=n(59401),a={getInitialState:function(){return o.nO},tokenize2:function(e,t,n,i){return(0,o.mh)(0,e,n,i)}};function s(e){return function(e,t){for(var n='<div class="monaco-tokenized-source">',o=i.uq(e),a=t.getInitialState(),s=0,u=o.length;s<u;s++){var l=o[s];s>0&&(n+="<br/>");var c=t.tokenize2(l,!0,a,0);r.A.convertToEndOffset(c.tokens,l.length);for(var d=new r.A(c.tokens,l).inflate(),h=0,f=0,p=d.getCount();f<p;f++){var g=d.getClassName(f),v=d.getEndOffset(f);n+='<span class="'.concat(g,'">').concat(i.YU(l.substring(h,v)),"</span>"),h=v}a=c.endState}return n+="</div>"}(e,(arguments.length>1&&void 0!==arguments[1]?arguments[1]:a)||a)}function u(e,t,n,i,r,o,a){for(var s="<div>",u=i,l=0,c=0,d=t.getCount();c<d;c++){var h=t.getEndOffset(c);if(!(h<=i)){for(var f="";u<h&&u<r;u++){var p=e.charCodeAt(u);switch(p){case 9:var g=o-(u+l)%o;for(l+=g-1;g>0;)f+=a?" ":" ",g--;break;case 60:f+="<";break;case 62:f+=">";break;case 38:f+="&";break;case 0:f+="�";break;case 65279:case 8232:case 8233:case 133:f+="\ufffd";break;case 13:f+="​";break;case 32:f+=a?" ":" ";break;default:f+=String.fromCharCode(p)}}if(s+='<span style="'.concat(t.getInlineStyle(c,n),'">').concat(f,"</span>"),h>r||u>=r)break}}return s+="</div>"}},333:function(e,t,n){"use strict";n.d(t,{p:function(){return i}});var i=(0,n(84596).yh)("editorWorkerService")},7845:function(e,t,n){"use strict";n.d(t,{St:function(){return C},ML:function(){return b},Vl:function(){return _},Vj:function(){return y}});var i=n(87757),r=n.n(i),o=n(66526),a=n(8729),s=n(67775),u=n(99404),l=n(49076),c=n(72611),d=n(25941),h=n(37762),f=n(27877),p=n(30487);function g(e){var t=new Uint32Array(function(e){var t=0;if(t+=2,"full"===e.type)t+=1+e.data.length;else{t+=1,t+=3*e.deltas.length;var n,i=(0,h.Z)(e.deltas);try{for(i.s();!(n=i.n()).done;){var r=n.value;r.data&&(t+=r.data.length)}}catch(o){i.e(o)}finally{i.f()}}return t}(e)),n=0;if(t[n++]=e.id,"full"===e.type)t[n++]=1,t[n++]=e.data.length,t.set(e.data,n),n+=e.data.length;else{t[n++]=2,t[n++]=e.deltas.length;var i,r=(0,h.Z)(e.deltas);try{for(r.s();!(i=r.n()).done;){var o=i.value;t[n++]=o.start,t[n++]=o.deleteCount,o.data?(t[n++]=o.data.length,t.set(o.data,n),n+=o.data.length):t[n++]=0}}catch(a){r.e(a)}finally{r.f()}}return function(e){var t=new Uint8Array(e.buffer,e.byteOffset,4*e.length);return p.r()||function(e){for(var t=0,n=e.length;t<n;t+=4){var i=e[t+0],r=e[t+1],o=e[t+2],a=e[t+3];e[t+0]=a,e[t+1]=o,e[t+2]=r,e[t+3]=i}}(t),f.KN.wrap(t)}(t)}var v=n(67033),m=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};function _(e){return e&&!!e.data}function y(e){return e&&Array.isArray(e.edits)}function b(e,t,n){var i=w(e);return i?{provider:i,request:Promise.resolve(i.provideDocumentSemanticTokens(e,t,n))}:null}function w(e){var t=u.wT.ordered(e);return t.length>0?t[0]:null}function C(e){var t=u.K7.ordered(e);return t.length>0?t[0]:null}c.P.registerCommand("_provideDocumentSemanticTokensLegend",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return m(void 0,void 0,void 0,r().mark((function t(){var i,o,a;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=n[0],(0,d.p_)(i instanceof s.o),o=e.get(l.q).getModel(i)){t.next=5;break}return t.abrupt("return",void 0);case 5:if(a=w(o)){t.next=8;break}return t.abrupt("return",e.get(c.H).executeCommand("_provideDocumentRangeSemanticTokensLegend",i));case 8:return t.abrupt("return",a.getLegend());case 9:case"end":return t.stop()}}),t)})))})),c.P.registerCommand("_provideDocumentSemanticTokens",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return m(void 0,void 0,void 0,r().mark((function t(){var i,u,h,f,p,v,m;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=n[0],(0,d.p_)(i instanceof s.o),u=e.get(l.q).getModel(i)){t.next=5;break}return t.abrupt("return",void 0);case 5:if(h=b(u,null,o.T.None)){t.next=8;break}return t.abrupt("return",e.get(c.H).executeCommand("_provideDocumentRangeSemanticTokens",i,u.getFullModelRange()));case 8:return f=h.provider,p=h.request,t.prev=9,t.next=12,p;case 12:v=t.sent,t.next=19;break;case 15:return t.prev=15,t.t0=t.catch(9),(0,a.Cp)(t.t0),t.abrupt("return",void 0);case 19:if(v&&_(v)){t.next=21;break}return t.abrupt("return",void 0);case 21:return m=g({id:0,type:"full",data:v.data}),v.resultId&&f.releaseDocumentSemanticTokens(v.resultId),t.abrupt("return",m);case 24:case"end":return t.stop()}}),t,null,[[9,15]])})))})),c.P.registerCommand("_provideDocumentRangeSemanticTokensLegend",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return m(void 0,void 0,void 0,r().mark((function t(){var i,o,a;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=n[0],(0,d.p_)(i instanceof s.o),o=e.get(l.q).getModel(i)){t.next=5;break}return t.abrupt("return",void 0);case 5:if(a=C(o)){t.next=8;break}return t.abrupt("return",void 0);case 8:return t.abrupt("return",a.getLegend());case 9:case"end":return t.stop()}}),t)})))})),c.P.registerCommand("_provideDocumentRangeSemanticTokens",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return m(void 0,void 0,void 0,r().mark((function t(){var i,u,c,h,f;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=n[0],u=n[1],(0,d.p_)(i instanceof s.o),(0,d.p_)(v.e.isIRange(u)),c=e.get(l.q).getModel(i)){t.next=6;break}return t.abrupt("return",void 0);case 6:if(h=C(c)){t.next=9;break}return t.abrupt("return",void 0);case 9:return t.prev=9,t.next=12,h.provideDocumentRangeSemanticTokens(c,v.e.lift(u),o.T.None);case 12:f=t.sent,t.next=19;break;case 15:return t.prev=15,t.t0=t.catch(9),(0,a.Cp)(t.t0),t.abrupt("return",void 0);case 19:if(f&&_(f)){t.next=21;break}return t.abrupt("return",void 0);case 21:return t.abrupt("return",g({id:0,type:"full",data:f.data}));case 22:case"end":return t.stop()}}),t,null,[[9,15]])})))}))},50816:function(e,t,n){"use strict";n.d(t,{i:function(){return i}});var i=(0,n(84596).yh)("markerDecorationsService")},49829:function(e,t,n){"use strict";n.d(t,{h:function(){return i}});var i=(0,n(84596).yh)("modeService")},49076:function(e,t,n){"use strict";n.d(t,{p:function(){return r},q:function(){return i}});var i=(0,n(84596).yh)("modelService");function r(e){return!e.isTooLargeForSyncing()&&!e.isForSimpleWidget}},77993:function(e,t,n){"use strict";n.d(t,{BR:function(){return F},e3:function(){return j},tw:function(){return H}});var i=n(11752),r=n(61120),o=n(37762),a=n(97326),s=n(60136),u=n(43668),l=n(15671),c=n(43144),d=n(11732),h=n(81626),f=n(30487),p=n(8729),g=n(76556),v=n(28893),m=n(99404),_=n(54970),y=n(45862),b=n(98921),w=n(27997),C=n(66526),k=n(70182),S=n(19974),x=n(45822),L=n(25567),E=n(57179),D=n(55585),N=n(93445),M=n(7845),T=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},I=function(e,t){return function(n,i){t(n,i,e)}};function O(e){return e.toString()}function A(e){for(var t,n=new L.yP,i=e.createSnapshot();t=i.read();)n.update(t);return n.digest()}var R=function(){function e(t,n,i){(0,l.Z)(this,e),this._modelEventListeners=new h.SL,this.model=t,this._languageSelection=null,this._languageSelectionListener=null,this._modelEventListeners.add(t.onWillDispose((function(){return n(t)}))),this._modelEventListeners.add(t.onDidChangeLanguage((function(e){return i(t,e)})))}return(0,c.Z)(e,[{key:"_disposeLanguageSelection",value:function(){this._languageSelectionListener&&(this._languageSelectionListener.dispose(),this._languageSelectionListener=null)}},{key:"dispose",value:function(){this._modelEventListeners.dispose(),this._disposeLanguageSelection()}},{key:"setLanguage",value:function(e){var t=this;this._disposeLanguageSelection(),this._languageSelection=e,this._languageSelectionListener=this._languageSelection.onDidChange((function(){return t.model.setMode(e.languageIdentifier)})),this.model.setMode(e.languageIdentifier)}}]),e}(),P=f.IJ||f.dz?1:2,Z=(0,c.Z)((function e(t,n,i,r,o,a,s,u){(0,l.Z)(this,e),this.uri=t,this.initialUndoRedoSnapshot=n,this.time=i,this.sharesUndoRedoStack=r,this.heapSize=o,this.sha1=a,this.versionId=s,this.alternativeVersionId=u}));var F=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i,r,o,s){var u;return(0,l.Z)(this,n),(u=t.call(this))._configurationService=e,u._resourcePropertiesService=i,u._themeService=r,u._logService=o,u._undoRedoService=s,u._onModelAdded=u._register(new d.Q5),u.onModelAdded=u._onModelAdded.event,u._onModelRemoved=u._register(new d.Q5),u.onModelRemoved=u._onModelRemoved.event,u._onModelModeChanged=u._register(new d.Q5),u.onModelModeChanged=u._onModelModeChanged.event,u._modelCreationOptionsByLanguageAndResource=Object.create(null),u._models={},u._disposedModels=new Map,u._disposedModelsHeapSize=0,u._semanticStyling=u._register(new z(u._themeService,u._logService)),u._register(u._configurationService.onDidChangeConfiguration((function(){return u._updateModelOptions()}))),u._updateModelOptions(),u._register(new B((0,a.Z)(u),u._themeService,u._configurationService,u._semanticStyling)),u}return(0,c.Z)(n,[{key:"_getEOL",value:function(e,t){if(e)return this._resourcePropertiesService.getEOL(e,t);var n=this._configurationService.getValue("files.eol",{overrideIdentifier:t});return n&&"auto"!==n?n:3===f.OS||2===f.OS?"\n":"\r\n"}},{key:"_shouldRestoreUndoStack",value:function(){var e=this._configurationService.getValue("files.restoreUndoStack");return"boolean"!==typeof e||e}},{key:"getCreationOptions",value:function(e,t,i){var r=this._modelCreationOptionsByLanguageAndResource[e+t];if(!r){var o=this._configurationService.getValue("editor",{overrideIdentifier:e,resource:t}),a=this._getEOL(t,e);r=n._readModelOptions({editor:o,eol:a},i),this._modelCreationOptionsByLanguageAndResource[e+t]=r}return r}},{key:"_updateModelOptions",value:function(){var e=this._modelCreationOptionsByLanguageAndResource;this._modelCreationOptionsByLanguageAndResource=Object.create(null);for(var t=Object.keys(this._models),i=0,r=t.length;i<r;i++){var o=t[i],a=this._models[o],s=a.model.getLanguageIdentifier().language,u=a.model.uri,l=e[s+u],c=this.getCreationOptions(s,u,a.model.isForSimpleWidget);n._setModelOptionsForModel(a.model,c,l)}}},{key:"_insertDisposedModel",value:function(e){this._disposedModels.set(O(e.uri),e),this._disposedModelsHeapSize+=e.heapSize}},{key:"_removeDisposedModel",value:function(e){var t=this._disposedModels.get(O(e));return t&&(this._disposedModelsHeapSize-=t.heapSize),this._disposedModels.delete(O(e)),t}},{key:"_ensureDisposedModelsHeapSize",value:function(e){if(this._disposedModelsHeapSize>e){var t=[];for(this._disposedModels.forEach((function(e){e.sharesUndoRedoStack||t.push(e)})),t.sort((function(e,t){return e.time-t.time}));t.length>0&&this._disposedModelsHeapSize>e;){var n=t.shift();this._removeDisposedModel(n.uri),null!==n.initialUndoRedoSnapshot&&this._undoRedoService.restoreSnapshot(n.initialUndoRedoSnapshot)}}}},{key:"_createModelData",value:function(e,t,n,i){var r=this,a=this.getCreationOptions(t.language,n,i),s=new v.yO(e,a,t,n,this._undoRedoService);if(n&&this._disposedModels.has(O(n))){var u=this._removeDisposedModel(n),l=this._undoRedoService.getElements(n),c=A(s)===u.sha1;if(c||u.sharesUndoRedoStack){var d,h=(0,o.Z)(l.past);try{for(h.s();!(d=h.n()).done;){var f=d.value;(0,E.e9)(f)&&f.matchesResource(n)&&f.setModel(s)}}catch(b){h.e(b)}finally{h.f()}var p,g=(0,o.Z)(l.future);try{for(g.s();!(p=g.n()).done;){var m=p.value;(0,E.e9)(m)&&m.matchesResource(n)&&m.setModel(s)}}catch(b){g.e(b)}finally{g.f()}this._undoRedoService.setElementsValidFlag(n,!0,(function(e){return(0,E.e9)(e)&&e.matchesResource(n)})),c&&(s._overwriteVersionId(u.versionId),s._overwriteAlternativeVersionId(u.alternativeVersionId),s._overwriteInitialUndoRedoSnapshot(u.initialUndoRedoSnapshot))}else null!==u.initialUndoRedoSnapshot&&this._undoRedoService.restoreSnapshot(u.initialUndoRedoSnapshot)}var _=O(s.uri);if(this._models[_])throw new Error("ModelService: Cannot add model because it already exists!");var y=new R(s,(function(e){return r._onWillDispose(e)}),(function(e,t){return r._onDidChangeLanguage(e,t)}));return this._models[_]=y,y}},{key:"createModel",value:function(e,t,n){var i,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return t?(i=this._createModelData(e,t.languageIdentifier,n,r),this.setMode(i.model,t)):i=this._createModelData(e,_.Tb,n,r),this._onModelAdded.fire(i.model),i.model}},{key:"setMode",value:function(e,t){if(t){var n=this._models[O(e.uri)];n&&n.setLanguage(t)}}},{key:"getModels",value:function(){for(var e=[],t=Object.keys(this._models),n=0,i=t.length;n<i;n++){var r=t[n];e.push(this._models[r].model)}return e}},{key:"getModel",value:function(e){var t=O(e),n=this._models[t];return n?n.model:null}},{key:"getSemanticTokensProviderStyling",value:function(e){return this._semanticStyling.get(e)}},{key:"_onWillDispose",value:function(e){var t,i=O(e.uri),r=this._models[i],a=this._undoRedoService.getUriComparisonKey(e.uri)!==e.uri.toString(),s=!1,u=0;if(a||this._shouldRestoreUndoStack()&&((t=e.uri).scheme===D.lg.file||t.scheme===D.lg.vscodeRemote||t.scheme===D.lg.userData||"fake-fs"===t.scheme)){var l=this._undoRedoService.getElements(e.uri);if(l.past.length>0||l.future.length>0){var c,d=(0,o.Z)(l.past);try{for(d.s();!(c=d.n()).done;){var h=c.value;(0,E.e9)(h)&&h.matchesResource(e.uri)&&(s=!0,u+=h.heapSize(e.uri),h.setModel(e.uri))}}catch(y){d.e(y)}finally{d.f()}var f,p=(0,o.Z)(l.future);try{for(p.s();!(f=p.n()).done;){var g=f.value;(0,E.e9)(g)&&g.matchesResource(e.uri)&&(s=!0,u+=g.heapSize(e.uri),g.setModel(e.uri))}}catch(y){p.e(y)}finally{p.f()}}}var v=n.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK;if(s)if(!a&&u>v){var m=r.model.getInitialUndoRedoSnapshot();null!==m&&this._undoRedoService.restoreSnapshot(m)}else this._ensureDisposedModelsHeapSize(v-u),this._undoRedoService.setElementsValidFlag(e.uri,!1,(function(t){return(0,E.e9)(t)&&t.matchesResource(e.uri)})),this._insertDisposedModel(new Z(e.uri,r.model.getInitialUndoRedoSnapshot(),Date.now(),a,u,A(e),e.getVersionId(),e.getAlternativeVersionId()));else if(!a){var _=r.model.getInitialUndoRedoSnapshot();null!==_&&this._undoRedoService.restoreSnapshot(_)}delete this._models[i],r.dispose(),delete this._modelCreationOptionsByLanguageAndResource[e.getLanguageIdentifier().language+e.uri],this._onModelRemoved.fire(e)}},{key:"_onDidChangeLanguage",value:function(e,t){var i=t.oldLanguage,r=e.getLanguageIdentifier().language,o=this.getCreationOptions(i,e.uri,e.isForSimpleWidget),a=this.getCreationOptions(r,e.uri,e.isForSimpleWidget);n._setModelOptionsForModel(e,a,o),this._onModelModeChanged.fire({model:e,oldModeId:i})}}],[{key:"_readModelOptions",value:function(e,t){var n=g.DB.tabSize;if(e.editor&&"undefined"!==typeof e.editor.tabSize){var i=parseInt(e.editor.tabSize,10);isNaN(i)||(n=i),n<1&&(n=1)}var r=n;if(e.editor&&"undefined"!==typeof e.editor.indentSize&&"tabSize"!==e.editor.indentSize){var o=parseInt(e.editor.indentSize,10);isNaN(o)||(r=o),r<1&&(r=1)}var a=g.DB.insertSpaces;e.editor&&"undefined"!==typeof e.editor.insertSpaces&&(a="false"!==e.editor.insertSpaces&&Boolean(e.editor.insertSpaces));var s=P,u=e.eol;"\r\n"===u?s=2:"\n"===u&&(s=1);var l=g.DB.trimAutoWhitespace;e.editor&&"undefined"!==typeof e.editor.trimAutoWhitespace&&(l="false"!==e.editor.trimAutoWhitespace&&Boolean(e.editor.trimAutoWhitespace));var c=g.DB.detectIndentation;e.editor&&"undefined"!==typeof e.editor.detectIndentation&&(c="false"!==e.editor.detectIndentation&&Boolean(e.editor.detectIndentation));var d=g.DB.largeFileOptimizations;return e.editor&&"undefined"!==typeof e.editor.largeFileOptimizations&&(d="false"!==e.editor.largeFileOptimizations&&Boolean(e.editor.largeFileOptimizations)),{isForSimpleWidget:t,tabSize:n,indentSize:r,insertSpaces:a,detectIndentation:c,defaultEOL:s,trimAutoWhitespace:l,largeFileOptimizations:d}}},{key:"_setModelOptionsForModel",value:function(e,t,n){n&&n.defaultEOL!==t.defaultEOL&&1===e.getLineCount()&&e.setEOL(1===t.defaultEOL?0:1),n&&n.detectIndentation===t.detectIndentation&&n.insertSpaces===t.insertSpaces&&n.tabSize===t.tabSize&&n.indentSize===t.indentSize&&n.trimAutoWhitespace===t.trimAutoWhitespace||(t.detectIndentation?(e.detectIndentation(t.insertSpaces,t.tabSize),e.updateOptions({trimAutoWhitespace:t.trimAutoWhitespace})):e.updateOptions({insertSpaces:t.insertSpaces,tabSize:t.tabSize,indentSize:t.indentSize,trimAutoWhitespace:t.trimAutoWhitespace}))}}]),n}(h.JT);F.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK=20971520,F=T([I(0,b.Ui),I(1,y.y),I(2,k.XE),I(3,S.VZ),I(4,x.tJ)],F);var j="editor.semanticHighlighting";function H(e,t,n){var i,r=null===(i=n.getValue(j,{overrideIdentifier:e.getLanguageIdentifier().language,resource:e.uri}))||void 0===i?void 0:i.enabled;return"boolean"===typeof r?r:t.getColorTheme().semanticHighlighting}var B=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i,r,a){var s;(0,l.Z)(this,n),(s=t.call(this))._watchers=Object.create(null),s._semanticStyling=a;var u=function(e){s._watchers[e.uri.toString()]=new V(e,i,s._semanticStyling)},c=function(e,t){t.dispose(),delete s._watchers[e.uri.toString()]},d=function(){var t,n=(0,o.Z)(e.getModels());try{for(n.s();!(t=n.n()).done;){var a=t.value,l=s._watchers[a.uri.toString()];H(a,i,r)?l||u(a):l&&c(a,l)}}catch(d){n.e(d)}finally{n.f()}};return s._register(e.onModelAdded((function(e){H(e,i,r)&&u(e)}))),s._register(e.onModelRemoved((function(e){var t=s._watchers[e.uri.toString()];t&&c(e,t)}))),s._register(r.onDidChangeConfiguration((function(e){e.affectsConfiguration(j)&&d()}))),s._register(i.onDidColorThemeChange(d)),s}return(0,c.Z)(n)}(h.JT),z=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i){var r;return(0,l.Z)(this,n),(r=t.call(this))._themeService=e,r._logService=i,r._caches=new WeakMap,r._register(r._themeService.onDidColorThemeChange((function(){r._caches=new WeakMap}))),r}return(0,c.Z)(n,[{key:"get",value:function(e){return this._caches.has(e)||this._caches.set(e,new N.$(e.getLegend(),this._themeService,this._logService)),this._caches.get(e)}}]),n}(h.JT),W=function(){function e(t,n,i){(0,l.Z)(this,e),this._provider=t,this.resultId=n,this.data=i}return(0,c.Z)(e,[{key:"dispose",value:function(){this._provider.releaseDocumentSemanticTokens(this.resultId)}}]),e}(),V=function(e){(0,s.Z)(n,e);var t=(0,u.Z)(n);function n(e,i,r){var a;(0,l.Z)(this,n),(a=t.call(this))._isDisposed=!1,a._model=e,a._semanticStyling=r,a._fetchDocumentSemanticTokens=a._register(new w.pY((function(){return a._fetchDocumentSemanticTokensNow()}),n.FETCH_DOCUMENT_SEMANTIC_TOKENS_DELAY)),a._currentDocumentResponse=null,a._currentDocumentRequestCancellationTokenSource=null,a._documentProvidersChangeListeners=[],a._register(a._model.onDidChangeContent((function(){a._fetchDocumentSemanticTokens.isScheduled()||a._fetchDocumentSemanticTokens.schedule()}))),a._register(a._model.onDidChangeLanguage((function(){a._currentDocumentResponse&&(a._currentDocumentResponse.dispose(),a._currentDocumentResponse=null),a._currentDocumentRequestCancellationTokenSource&&(a._currentDocumentRequestCancellationTokenSource.cancel(),a._currentDocumentRequestCancellationTokenSource=null),a._setDocumentSemanticTokens(null,null,null,[]),a._fetchDocumentSemanticTokens.schedule(0)})));var s=function(){(0,h.B9)(a._documentProvidersChangeListeners),a._documentProvidersChangeListeners=[];var t,n=(0,o.Z)(m.wT.all(e));try{for(n.s();!(t=n.n()).done;){var i=t.value;"function"===typeof i.onDidChange&&a._documentProvidersChangeListeners.push(i.onDidChange((function(){return a._fetchDocumentSemanticTokens.schedule(0)})))}}catch(r){n.e(r)}finally{n.f()}};return s(),a._register(m.wT.onDidChange((function(){s(),a._fetchDocumentSemanticTokens.schedule()}))),a._register(i.onDidColorThemeChange((function(e){a._setDocumentSemanticTokens(null,null,null,[]),a._fetchDocumentSemanticTokens.schedule()}))),a._fetchDocumentSemanticTokens.schedule(0),a}return(0,c.Z)(n,[{key:"dispose",value:function(){this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,(0,i.Z)((0,r.Z)(n.prototype),"dispose",this).call(this)}},{key:"_fetchDocumentSemanticTokensNow",value:function(){var e=this;if(!this._currentDocumentRequestCancellationTokenSource){var t=new C.A,n=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,i=(0,M.ML)(this._model,n,t.token);if(i){var r=i.provider,o=i.request;this._currentDocumentRequestCancellationTokenSource=t;var a=[],s=this._model.onDidChangeContent((function(e){a.push(e)})),u=this._semanticStyling.get(r);o.then((function(t){e._currentDocumentRequestCancellationTokenSource=null,s.dispose(),e._setDocumentSemanticTokens(r,t||null,u,a)}),(function(t){t&&(p.VV(t)||"string"===typeof t.message&&-1!==t.message.indexOf("busy"))||p.dL(t),e._currentDocumentRequestCancellationTokenSource=null,s.dispose(),a.length>0&&(e._fetchDocumentSemanticTokens.isScheduled()||e._fetchDocumentSemanticTokens.schedule())}))}else this._currentDocumentResponse&&this._model.setSemanticTokens(null,!1)}}},{key:"_setDocumentSemanticTokens",value:function(e,t,i,r){var a=this,s=this._currentDocumentResponse,u=function(){r.length>0&&!a._fetchDocumentSemanticTokens.isScheduled()&&a._fetchDocumentSemanticTokens.schedule()};if(this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._isDisposed)e&&t&&e.releaseDocumentSemanticTokens(t.resultId);else if(e&&i){if(!t)return this._model.setSemanticTokens(null,!0),void u();if((0,M.Vj)(t)){if(!s)return void this._model.setSemanticTokens(null,!0);if(0===t.edits.length)t={resultId:t.resultId,data:s.data};else{var l,c=0,d=(0,o.Z)(t.edits);try{for(d.s();!(l=d.n()).done;){var h=l.value;c+=(h.data?h.data.length:0)-h.deleteCount}}catch(I){d.e(I)}finally{d.f()}for(var f=s.data,p=new Uint32Array(f.length+c),g=f.length,v=p.length,m=t.edits.length-1;m>=0;m--){var _=t.edits[m],y=g-(_.start+_.deleteCount);y>0&&(n._copy(f,g-y,p,v-y,y),v-=y),_.data&&(n._copy(_.data,0,p,v-_.data.length,_.data.length),v-=_.data.length),g=_.start}g>0&&n._copy(f,0,p,0,g),t={resultId:t.resultId,data:p}}}if((0,M.Vl)(t)){this._currentDocumentResponse=new W(e,t.resultId,t.data);var b=(0,N.h)(t,i,this._model.getLanguageIdentifier());if(r.length>0){var w,C=(0,o.Z)(r);try{for(C.s();!(w=C.n()).done;){var k,S=w.value,x=(0,o.Z)(b);try{for(x.s();!(k=x.n()).done;){var L,E=k.value,D=(0,o.Z)(S.changes);try{for(D.s();!(L=D.n()).done;){var T=L.value;E.applyEdit(T.range,T.text)}}catch(I){D.e(I)}finally{D.f()}}}catch(I){x.e(I)}finally{x.f()}}}catch(I){C.e(I)}finally{C.f()}}this._model.setSemanticTokens(b,!0)}else this._model.setSemanticTokens(null,!0);u()}else this._model.setSemanticTokens(null,!1)}}],[{key:"_copy",value:function(e,t,n,i,r){for(var o=0;o<r;o++)n[i+o]=e[t+o]}}]),n}(h.JT);V.FETCH_DOCUMENT_SEMANTIC_TOKENS_DELAY=300},44148:function(e,t,n){"use strict";n.d(t,{S:function(){return i}});var i=(0,n(84596).yh)("textModelService")},93445:function(e,t,n){"use strict";n.d(t,{$:function(){return l},h:function(){return c}});var i=n(37762),r=n(15671),o=n(43144),a=n(99404),s=n(19974),u=n(98623),l=function(){function e(t,n,i){(0,r.Z)(this,e),this._legend=t,this._themeService=n,this._logService=i,this._hashTable=new h,this._hasWarnedOverlappingTokens=!1}return(0,o.Z)(e,[{key:"getMetadata",value:function(e,t,n){var i,r=this._hashTable.get(e,t,n.id);if(r)i=r.metadata,this._logService.getLevel()===s.in.Trace&&this._logService.trace("SemanticTokensProviderStyling [CACHED] ".concat(e," / ").concat(t,": foreground ").concat(a.NX.getForeground(i),", fontStyle ").concat(a.NX.getFontStyle(i).toString(2)));else{var o=this._legend.tokenTypes[e],u=[];if(o){for(var l=t,c=0;l>0&&c<this._legend.tokenModifiers.length;c++)1&l&&u.push(this._legend.tokenModifiers[c]),l>>=1;l>0&&this._logService.getLevel()===s.in.Trace&&(this._logService.trace("SemanticTokensProviderStyling: unknown token modifier index: ".concat(t.toString(2)," for legend: ").concat(JSON.stringify(this._legend.tokenModifiers))),u.push("not-in-legend"));var d=this._themeService.getColorTheme().getTokenStyleMetadata(o,u,n.language);if("undefined"===typeof d)i=2147483647;else{if(i=0,"undefined"!==typeof d.italic)i|=1|(d.italic?1:0)<<11;if("undefined"!==typeof d.bold)i|=2|(d.bold?2:0)<<11;if("undefined"!==typeof d.underline)i|=4|(d.underline?4:0)<<11;if(d.foreground)i|=8|d.foreground<<14;0===i&&(i=2147483647)}}else this._logService.getLevel()===s.in.Trace&&this._logService.trace("SemanticTokensProviderStyling: unknown token type index: ".concat(e," for legend: ").concat(JSON.stringify(this._legend.tokenTypes))),i=2147483647,o="not-in-legend";this._hashTable.add(e,t,n.id,i),this._logService.getLevel()===s.in.Trace&&this._logService.trace("SemanticTokensProviderStyling ".concat(e," (").concat(o,") / ").concat(t," (").concat(u.join(" "),"): foreground ").concat(a.NX.getForeground(i),", fontStyle ").concat(a.NX.getFontStyle(i).toString(2)))}return i}},{key:"warnOverlappingSemanticTokens",value:function(e,t){this._hasWarnedOverlappingTokens||(this._hasWarnedOverlappingTokens=!0,console.warn("Overlapping semantic tokens detected at lineNumber ".concat(e,", column ").concat(t)))}}]),e}();function c(e,t,n){for(var i=e.data,r=e.data.length/5|0,o=Math.max(Math.ceil(r/1024),400),a=[],s=0,l=1,c=0;s<r;){var d=s,h=Math.min(d+o,r);if(h<r){for(var f=h;f-1>d&&0===i[5*f];)f--;if(f-1===d){for(var p=h;p+1<r&&0===i[5*p];)p++;h=p}else h=f}for(var g=new Uint32Array(4*(h-d)),v=0,m=0,_=0,y=0,b=0;s<h;){var w=5*s,C=i[w],k=i[w+1],S=l+C,x=0===C?c+k:k,L=i[w+2],E=i[w+3],D=i[w+4],N=t.getMetadata(E,D,n);2147483647!==N&&(0===m&&(m=S),_===S&&b>x&&(t.warnOverlappingSemanticTokens(S,x+1),y<x?g[v-4+2]=x:v-=4),g[v]=S-m,g[v+1]=x,g[v+2]=x+L,g[v+3]=N,v+=4,_=S,y=x,b=x+L),l=S,c=x,s++}v!==g.length&&(g=g.subarray(0,v));var M=new u.Wz(m,new u.OU(g));a.push(M)}return a}var d=(0,o.Z)((function e(t,n,i,o){(0,r.Z)(this,e),this.tokenTypeIndex=t,this.tokenModifierSet=n,this.languageId=i,this.metadata=o,this.next=null})),h=function(){function e(){(0,r.Z)(this,e),this._elementsCount=0,this._currentLengthIndex=0,this._currentLength=e._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<e._SIZES.length?2/3*this._currentLength:0),this._elements=[],e._nullOutEntries(this._elements,this._currentLength)}return(0,o.Z)(e,[{key:"_hash2",value:function(e,t){return(e<<5)-e+t|0}},{key:"_hashFunc",value:function(e,t,n){return this._hash2(this._hash2(e,t),n)%this._currentLength}},{key:"get",value:function(e,t,n){for(var i=this._hashFunc(e,t,n),r=this._elements[i];r;){if(r.tokenTypeIndex===e&&r.tokenModifierSet===t&&r.languageId===n)return r;r=r.next}return null}},{key:"add",value:function(t,n,r,o){if(this._elementsCount++,0!==this._growCount&&this._elementsCount>=this._growCount){var a=this._elements;this._currentLengthIndex++,this._currentLength=e._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<e._SIZES.length?2/3*this._currentLength:0),this._elements=[],e._nullOutEntries(this._elements,this._currentLength);var s,u=(0,i.Z)(a);try{for(u.s();!(s=u.n()).done;)for(var l=s.value;l;){var c=l.next;l.next=null,this._add(l),l=c}}catch(h){u.e(h)}finally{u.f()}}this._add(new d(t,n,r,o))}},{key:"_add",value:function(e){var t=this._hashFunc(e.tokenTypeIndex,e.tokenModifierSet,e.languageId);e.next=this._elements[t],this._elements[t]=e}}],[{key:"_nullOutEntries",value:function(e,t){for(var n=0;n<t;n++)e[n]=null}}]),e}();h._SIZES=[3,7,13,31,61,127,251,509,1021,2039,4093,8191,16381,32749,65521,131071,262139,524287,1048573,2097143]},45862:function(e,t,n){"use strict";n.d(t,{V:function(){return r},y:function(){return o}});var i=n(84596),r=(0,i.yh)("textResourceConfigurationService"),o=(0,i.yh)("textResourcePropertiesService")},25741:function(e,t,n){"use strict";n.d(t,{B8:function(){return l},Oe:function(){return i},UL:function(){return d},UX:function(){return s},aq:function(){return u},ld:function(){return a},qq:function(){return o},ug:function(){return r},xi:function(){return c}});var i,r,o,a,s,u,l,c,d,h=n(56345);!function(e){e.noSelection=h.N("noSelection","No selection"),e.singleSelectionRange=h.N("singleSelectionRange","Line {0}, Column {1} ({2} selected)"),e.singleSelection=h.N("singleSelection","Line {0}, Column {1}"),e.multiSelectionRange=h.N("multiSelectionRange","{0} selections ({1} characters selected)"),e.multiSelection=h.N("multiSelection","{0} selections"),e.emergencyConfOn=h.N("emergencyConfOn","Now changing the setting `accessibilitySupport` to 'on'."),e.openingDocs=h.N("openingDocs","Now opening the Editor Accessibility documentation page."),e.readonlyDiffEditor=h.N("readonlyDiffEditor"," in a read-only pane of a diff editor."),e.editableDiffEditor=h.N("editableDiffEditor"," in a pane of a diff editor."),e.readonlyEditor=h.N("readonlyEditor"," in a read-only code editor"),e.editableEditor=h.N("editableEditor"," in a code editor"),e.changeConfigToOnMac=h.N("changeConfigToOnMac","To configure the editor to be optimized for usage with a Screen Reader press Command+E now."),e.changeConfigToOnWinLinux=h.N("changeConfigToOnWinLinux","To configure the editor to be optimized for usage with a Screen Reader press Control+E now."),e.auto_on=h.N("auto_on","The editor is configured to be optimized for usage with a Screen Reader."),e.auto_off=h.N("auto_off","The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time."),e.tabFocusModeOnMsg=h.N("tabFocusModeOnMsg","Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}."),e.tabFocusModeOnMsgNoKb=h.N("tabFocusModeOnMsgNoKb","Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding."),e.tabFocusModeOffMsg=h.N("tabFocusModeOffMsg","Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}."),e.tabFocusModeOffMsgNoKb=h.N("tabFocusModeOffMsgNoKb","Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding."),e.openDocMac=h.N("openDocMac","Press Command+H now to open a browser window with more information related to editor accessibility."),e.openDocWinLinux=h.N("openDocWinLinux","Press Control+H now to open a browser window with more information related to editor accessibility."),e.outroMsg=h.N("outroMsg","You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape."),e.showAccessibilityHelpAction=h.N("showAccessibilityHelpAction","Show Accessibility Help")}(i||(i={})),function(e){e.inspectTokensAction=h.N("inspectTokens","Developer: Inspect Tokens")}(r||(r={})),function(e){e.gotoLineActionLabel=h.N("gotoLineActionLabel","Go to Line/Column...")}(o||(o={})),function(e){e.helpQuickAccessActionLabel=h.N("helpQuickAccess","Show all Quick Access Providers")}(a||(a={})),function(e){e.quickCommandActionLabel=h.N("quickCommandActionLabel","Command Palette"),e.quickCommandHelp=h.N("quickCommandActionHelp","Show And Run Commands")}(s||(s={})),function(e){e.quickOutlineActionLabel=h.N("quickOutlineActionLabel","Go to Symbol..."),e.quickOutlineByCategoryActionLabel=h.N("quickOutlineByCategoryActionLabel","Go to Symbol by Category...")}(u||(u={})),function(e){e.editorViewAccessibleLabel=h.N("editorViewAccessibleLabel","Editor content"),e.accessibilityHelpMessage=h.N("accessibilityHelpMessage","Press Alt+F1 for Accessibility Options.")}(l||(l={})),function(e){e.toggleHighContrast=h.N("toggleHighContrast","Toggle High Contrast Theme")}(c||(c={})),function(e){e.bulkEditServiceSummary=h.N("bulkEditServiceSummary","Made {0} edits in {1} files")}(d||(d={}))},80449:function(e,t,n){"use strict";n.d(t,{DD:function(){return b},Dl:function(){return S},Kh:function(){return s},Mm:function(){return u},Re:function(){return O},TC:function(){return k},Ym:function(){return m},Yp:function(){return C},eS:function(){return A},e_:function(){return L},fY:function(){return p},hw:function(){return _},kp:function(){return D},lK:function(){return I},m9:function(){return T},n0:function(){return f},tR:function(){return v},zk:function(){return w},zu:function(){return N},zw:function(){return x}});var i=n(56345),r=n(89938),o=n(92992),a=n(70182),s=(0,o.P6)("editor.lineHighlightBackground",{dark:null,light:null,hc:null},i.N("lineHighlight","Background color for the highlight of line at the cursor position.")),u=(0,o.P6)("editor.lineHighlightBorder",{dark:"#282828",light:"#eeeeee",hc:"#f38518"},i.N("lineHighlightBorderBox","Background color for the border around the line at the cursor position.")),l=(0,o.P6)("editor.rangeHighlightBackground",{dark:"#ffffff0b",light:"#fdff0033",hc:null},i.N("rangeHighlight","Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations."),!0),c=(0,o.P6)("editor.rangeHighlightBorder",{dark:null,light:null,hc:o.xL},i.N("rangeHighlightBorder","Background color of the border around highlighted ranges."),!0),d=(0,o.P6)("editor.symbolHighlightBackground",{dark:o.MU,light:o.MU,hc:null},i.N("symbolHighlight","Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations."),!0),h=(0,o.P6)("editor.symbolHighlightBorder",{dark:null,light:null,hc:o.xL},i.N("symbolHighlightBorder","Background color of the border around highlighted symbols."),!0),f=(0,o.P6)("editorCursor.foreground",{dark:"#AEAFAD",light:r.Il.black,hc:r.Il.white},i.N("caret","Color of the editor cursor.")),p=(0,o.P6)("editorCursor.background",null,i.N("editorCursorBackground","The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.")),g=(0,o.P6)("editorWhitespace.foreground",{dark:"#e3e4e229",light:"#33333333",hc:"#e3e4e229"},i.N("editorWhitespaces","Color of whitespace characters in the editor.")),v=(0,o.P6)("editorIndentGuide.background",{dark:g,light:g,hc:g},i.N("editorIndentGuides","Color of the editor indentation guides.")),m=(0,o.P6)("editorIndentGuide.activeBackground",{dark:g,light:g,hc:g},i.N("editorActiveIndentGuide","Color of the active editor indentation guides.")),_=(0,o.P6)("editorLineNumber.foreground",{dark:"#858585",light:"#237893",hc:r.Il.white},i.N("editorLineNumbers","Color of editor line numbers.")),y=(0,o.P6)("editorActiveLineNumber.foreground",{dark:"#c6c6c6",light:"#0B216F",hc:o.xL},i.N("editorActiveLineNumber","Color of editor active line number"),!1,i.N("deprecatedEditorActiveLineNumber","Id is deprecated. Use 'editorLineNumber.activeForeground' instead.")),b=(0,o.P6)("editorLineNumber.activeForeground",{dark:y,light:y,hc:y},i.N("editorActiveLineNumber","Color of editor active line number")),w=(0,o.P6)("editorRuler.foreground",{dark:"#5A5A5A",light:r.Il.lightgrey,hc:r.Il.white},i.N("editorRuler","Color of the editor rulers.")),C=(0,o.P6)("editorCodeLens.foreground",{dark:"#999999",light:"#999999",hc:"#999999"},i.N("editorCodeLensForeground","Foreground color of editor CodeLens")),k=(0,o.P6)("editorBracketMatch.background",{dark:"#0064001a",light:"#0064001a",hc:"#0064001a"},i.N("editorBracketMatchBackground","Background color behind matching brackets")),S=(0,o.P6)("editorBracketMatch.border",{dark:"#888",light:"#B9B9B9",hc:o.lR},i.N("editorBracketMatchBorder","Color for matching brackets boxes")),x=(0,o.P6)("editorOverviewRuler.border",{dark:"#7f7f7f4d",light:"#7f7f7f4d",hc:"#7f7f7f4d"},i.N("editorOverviewRulerBorder","Color of the overview ruler border.")),L=(0,o.P6)("editorOverviewRuler.background",null,i.N("editorOverviewRulerBackground","Background color of the editor overview ruler. Only used when the minimap is enabled and placed on the right side of the editor.")),E=(0,o.P6)("editorGutter.background",{dark:o.cv,light:o.cv,hc:o.cv},i.N("editorGutter","Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.")),D=(0,o.P6)("editorUnnecessaryCode.border",{dark:null,light:null,hc:r.Il.fromHex("#fff").transparent(.8)},i.N("unnecessaryCodeBorder","Border color of unnecessary (unused) source code in the editor.")),N=(0,o.P6)("editorUnnecessaryCode.opacity",{dark:r.Il.fromHex("#000a"),light:r.Il.fromHex("#0007"),hc:null},i.N("unnecessaryCodeOpacity","Opacity of unnecessary (unused) source code in the editor. For example, \"#000000c0\" will render the code with 75% opacity. For high contrast themes, use the 'editorUnnecessaryCode.border' theme color to underline unnecessary code instead of fading it out.")),M=new r.Il(new r.VS(0,122,204,.6)),T=(0,o.P6)("editorOverviewRuler.rangeHighlightForeground",{dark:M,light:M,hc:M},i.N("overviewRulerRangeHighlight","Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations."),!0),I=(0,o.P6)("editorOverviewRuler.errorForeground",{dark:new r.Il(new r.VS(255,18,18,.7)),light:new r.Il(new r.VS(255,18,18,.7)),hc:new r.Il(new r.VS(255,50,50,1))},i.N("overviewRuleError","Overview ruler marker color for errors.")),O=(0,o.P6)("editorOverviewRuler.warningForeground",{dark:o.uo,light:o.uo,hc:o.pW},i.N("overviewRuleWarning","Overview ruler marker color for warnings.")),A=(0,o.P6)("editorOverviewRuler.infoForeground",{dark:o.c6,light:o.c6,hc:o.T8},i.N("overviewRuleInfo","Overview ruler marker color for infos."));(0,a.Ic)((function(e,t){var n=e.getColor(o.cv);n&&t.addRule(".monaco-editor, .monaco-editor-background, .monaco-editor .inputarea.ime-input { background-color: ".concat(n,"; }"));var i=e.getColor(o.NO);i&&t.addRule(".monaco-editor, .monaco-editor .inputarea.ime-input { color: ".concat(i,"; }"));var r=e.getColor(E);r&&t.addRule(".monaco-editor .margin { background-color: ".concat(r,"; }"));var a=e.getColor(l);a&&t.addRule(".monaco-editor .rangeHighlight { background-color: ".concat(a,"; }"));var s=e.getColor(c);s&&t.addRule(".monaco-editor .rangeHighlight { border: 1px ".concat("hc"===e.type?"dotted":"solid"," ").concat(s,"; }"));var u=e.getColor(d);u&&t.addRule(".monaco-editor .symbolHighlight { background-color: ".concat(u,"; }"));var f=e.getColor(h);f&&t.addRule(".monaco-editor .symbolHighlight { border: 1px ".concat("hc"===e.type?"dotted":"solid"," ").concat(f,"; }"));var p=e.getColor(g);p&&(t.addRule(".monaco-editor .mtkw { color: ".concat(p," !important; }")),t.addRule(".monaco-editor .mtkz { color: ".concat(p," !important; }")))}))},32110:function(e,t,n){"use strict";n.d(t,{EY:function(){return a},Tj:function(){return s}});var i=n(15671),r=n(43144),o=function(){function e(t,n,r){(0,i.Z)(this,e),this.from=0|t,this.to=0|n,this.colorId=0|r}return(0,r.Z)(e,null,[{key:"compare",value:function(e,t){return e.colorId===t.colorId?e.from===t.from?e.to-t.to:e.from-t.from:e.colorId-t.colorId}}]),e}(),a=function(){function e(t,n,r){(0,i.Z)(this,e),this.startLineNumber=t,this.endLineNumber=n,this.color=r,this._colorZone=null}return(0,r.Z)(e,[{key:"setColorZone",value:function(e){this._colorZone=e}},{key:"getColorZones",value:function(){return this._colorZone}}],[{key:"compare",value:function(e,t){return e.color===t.color?e.startLineNumber===t.startLineNumber?e.endLineNumber-t.endLineNumber:e.startLineNumber-t.startLineNumber:e.color<t.color?-1:1}}]),e}(),s=function(){function e(t){(0,i.Z)(this,e),this._getVerticalOffsetForLine=t,this._zones=[],this._colorZonesInvalid=!1,this._lineHeight=0,this._domWidth=0,this._domHeight=0,this._outerHeight=0,this._pixelRatio=1,this._lastAssignedId=0,this._color2Id=Object.create(null),this._id2Color=[]}return(0,r.Z)(e,[{key:"getId2Color",value:function(){return this._id2Color}},{key:"setZones",value:function(e){this._zones=e,this._zones.sort(a.compare)}},{key:"setLineHeight",value:function(e){return this._lineHeight!==e&&(this._lineHeight=e,this._colorZonesInvalid=!0,!0)}},{key:"setPixelRatio",value:function(e){this._pixelRatio=e,this._colorZonesInvalid=!0}},{key:"getDOMWidth",value:function(){return this._domWidth}},{key:"getCanvasWidth",value:function(){return this._domWidth*this._pixelRatio}},{key:"setDOMWidth",value:function(e){return this._domWidth!==e&&(this._domWidth=e,this._colorZonesInvalid=!0,!0)}},{key:"getDOMHeight",value:function(){return this._domHeight}},{key:"getCanvasHeight",value:function(){return this._domHeight*this._pixelRatio}},{key:"setDOMHeight",value:function(e){return this._domHeight!==e&&(this._domHeight=e,this._colorZonesInvalid=!0,!0)}},{key:"getOuterHeight",value:function(){return this._outerHeight}},{key:"setOuterHeight",value:function(e){return this._outerHeight!==e&&(this._outerHeight=e,this._colorZonesInvalid=!0,!0)}},{key:"resolveColorZones",value:function(){for(var e=this._colorZonesInvalid,t=Math.floor(this._lineHeight),n=Math.floor(this.getCanvasHeight()),i=n/Math.floor(this._outerHeight),r=Math.floor(4*this._pixelRatio/2),a=[],s=0,u=this._zones.length;s<u;s++){var l=this._zones[s];if(!e){var c=l.getColorZones();if(c){a.push(c);continue}}var d=Math.floor(i*this._getVerticalOffsetForLine(l.startLineNumber)),h=Math.floor(i*(this._getVerticalOffsetForLine(l.endLineNumber)+t)),f=Math.floor((d+h)/2),p=h-f;p<r&&(p=r),f-p<0&&(f=p),f+p>n&&(f=n-p);var g=l.color,v=this._color2Id[g];v||(v=++this._lastAssignedId,this._color2Id[g]=v,this._id2Color[v]=g);var m=new o(f-p,f+p,v);l.setColorZone(m),a.push(m)}return this._colorZonesInvalid=!1,a.sort(o.compare),a}}]),e}()},29805:function(e,t,n){"use strict";n.d(t,{Kp:function(){return s},k:function(){return c}});var i=n(37762),r=n(15671),o=n(43144),a=n(51747),s=function(){function e(t,n,i,o){(0,r.Z)(this,e),this.startColumn=t,this.endColumn=n,this.className=i,this.type=o}return(0,o.Z)(e,null,[{key:"_equals",value:function(e,t){return e.startColumn===t.startColumn&&e.endColumn===t.endColumn&&e.className===t.className&&e.type===t.type}},{key:"equalsArr",value:function(t,n){var i=t.length;if(i!==n.length)return!1;for(var r=0;r<i;r++)if(!e._equals(t[r],n[r]))return!1;return!0}},{key:"extractWrapped",value:function(t,n,r){if(0===t.length)return t;var o,a=n+1,s=r+1,u=r-n,l=[],c=0,d=(0,i.Z)(t);try{for(d.s();!(o=d.n()).done;){var h=o.value;h.endColumn<=a||h.startColumn>=s||(l[c++]=new e(Math.max(1,h.startColumn-a+1),Math.min(u+1,h.endColumn-a+1),h.className,h.type))}}catch(f){d.e(f)}finally{d.f()}return l}},{key:"filter",value:function(t,n,i,r){if(0===t.length)return[];for(var o=[],a=0,s=0,u=t.length;s<u;s++){var l=t[s],c=l.range;if(!(c.endLineNumber<n||c.startLineNumber>n)&&(!c.isEmpty()||0!==l.type&&3!==l.type)){var d=c.startLineNumber===n?c.startColumn:i,h=c.endLineNumber===n?c.endColumn:r;o[a++]=new e(d,h,l.inlineClassName,l.type)}}return o}},{key:"_typeCompare",value:function(e,t){var n=[2,0,1,3];return n[e]-n[t]}},{key:"compare",value:function(t,n){if(t.startColumn===n.startColumn){if(t.endColumn===n.endColumn){var i=e._typeCompare(t.type,n.type);return 0===i?t.className<n.className?-1:t.className>n.className?1:0:i}return t.endColumn-n.endColumn}return t.startColumn-n.startColumn}}]),e}(),u=(0,o.Z)((function e(t,n,i,o){(0,r.Z)(this,e),this.startOffset=t,this.endOffset=n,this.className=i,this.metadata=o})),l=function(){function e(){(0,r.Z)(this,e),this.stopOffsets=[],this.classNames=[],this.metadata=[],this.count=0}return(0,o.Z)(e,[{key:"consumeLowerThan",value:function(t,n,i){for(;this.count>0&&this.stopOffsets[0]<t;){for(var r=0;r+1<this.count&&this.stopOffsets[r]===this.stopOffsets[r+1];)r++;i.push(new u(n,this.stopOffsets[r],this.classNames.join(" "),e._metadata(this.metadata))),n=this.stopOffsets[r]+1,this.stopOffsets.splice(0,r+1),this.classNames.splice(0,r+1),this.metadata.splice(0,r+1),this.count-=r+1}return this.count>0&&n<t&&(i.push(new u(n,t-1,this.classNames.join(" "),e._metadata(this.metadata))),n=t),n}},{key:"insert",value:function(e,t,n){if(0===this.count||this.stopOffsets[this.count-1]<=e)this.stopOffsets.push(e),this.classNames.push(t),this.metadata.push(n);else for(var i=0;i<this.count;i++)if(this.stopOffsets[i]>=e){this.stopOffsets.splice(i,0,e),this.classNames.splice(i,0,t),this.metadata.splice(i,0,n);break}this.count++}}],[{key:"_metadata",value:function(e){for(var t=0,n=0,i=e.length;n<i;n++)t|=e[n];return t}}]),e}(),c=function(){function e(){(0,r.Z)(this,e)}return(0,o.Z)(e,null,[{key:"normalize",value:function(e,t){if(0===t.length)return[];for(var n=[],i=new l,r=0,o=0,s=t.length;o<s;o++){var u=t[o],c=u.startColumn,d=u.endColumn,h=u.className,f=1===u.type?2:2===u.type?4:0;if(c>1){var p=e.charCodeAt(c-2);a.ZG(p)&&c--}if(d>1){var g=e.charCodeAt(d-2);a.ZG(g)&&d--}var v=c-1,m=d-2;r=i.consumeLowerThan(v,r,n),0===i.count&&(r=v),i.insert(m,h,f)}return i.consumeLowerThan(1073741824,r,n),n}}]),e}()},70632:function(e,t,n){"use strict";n.d(t,{IJ:function(){return d},d1:function(){return p},fH:function(){return h},tF:function(){return v},zG:function(){return c}});var i=n(37762),r=n(15671),o=n(43144),a=n(51747),s=n(85500),u=n(29805),l=function(){function e(t,n,i){(0,r.Z)(this,e),this.endIndex=t,this.type=n,this.metadata=i}return(0,o.Z)(e,[{key:"isWhitespace",value:function(){return!!(1&this.metadata)}}]),e}(),c=function(){function e(t,n){(0,r.Z)(this,e),this.startOffset=t,this.endOffset=n}return(0,o.Z)(e,[{key:"equals",value:function(e){return this.startOffset===e.startOffset&&this.endOffset===e.endOffset}}]),e}(),d=function(){function e(t,n,i,o,a,s,l,c,d,h,f,p,g,v,m,_,y,b,w){(0,r.Z)(this,e),this.useMonospaceOptimizations=t,this.canUseHalfwidthRightwardsArrow=n,this.lineContent=i,this.continuesWithWrappedLine=o,this.isBasicASCII=a,this.containsRTL=s,this.fauxIndentLength=l,this.lineTokens=c,this.lineDecorations=d.sort(u.Kp.compare),this.tabSize=h,this.startVisibleColumn=f,this.spaceWidth=p,this.stopRenderingLineAfter=m,this.renderWhitespace="all"===_?4:"boundary"===_?1:"selection"===_?2:"trailing"===_?3:0,this.renderControlCharacters=y,this.fontLigatures=b,this.selectionsOnLine=w&&w.sort((function(e,t){return e.startOffset<t.startOffset?-1:1})),Math.abs(v-p)<Math.abs(g-p)?(this.renderSpaceWidth=v,this.renderSpaceCharCode=11825):(this.renderSpaceWidth=g,this.renderSpaceCharCode=183)}return(0,o.Z)(e,[{key:"sameSelection",value:function(e){if(null===this.selectionsOnLine)return null===e;if(null===e)return!1;if(e.length!==this.selectionsOnLine.length)return!1;for(var t=0;t<this.selectionsOnLine.length;t++)if(!this.selectionsOnLine[t].equals(e[t]))return!1;return!0}},{key:"equals",value:function(e){return this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineContent===e.lineContent&&this.continuesWithWrappedLine===e.continuesWithWrappedLine&&this.isBasicASCII===e.isBasicASCII&&this.containsRTL===e.containsRTL&&this.fauxIndentLength===e.fauxIndentLength&&this.tabSize===e.tabSize&&this.startVisibleColumn===e.startVisibleColumn&&this.spaceWidth===e.spaceWidth&&this.renderSpaceWidth===e.renderSpaceWidth&&this.renderSpaceCharCode===e.renderSpaceCharCode&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.fontLigatures===e.fontLigatures&&u.Kp.equalsArr(this.lineDecorations,e.lineDecorations)&&this.lineTokens.equals(e.lineTokens)&&this.sameSelection(e.selectionsOnLine)}}]),e}(),h=function(){function e(t,n){(0,r.Z)(this,e),this.length=t,this._data=new Uint32Array(this.length),this._absoluteOffsets=new Uint32Array(this.length)}return(0,o.Z)(e,[{key:"setPartData",value:function(e,t,n,i){var r=(t<<16|n<<0)>>>0;this._data[e]=r,this._absoluteOffsets[e]=i+n}},{key:"getAbsoluteOffsets",value:function(){return this._absoluteOffsets}},{key:"charOffsetToPartData",value:function(e){return 0===this.length?0:e<0?this._data[0]:e>=this.length?this._data[this.length-1]:this._data[e]}},{key:"partDataToCharOffset",value:function(t,n,i){if(0===this.length)return 0;for(var r=(t<<16|i<<0)>>>0,o=0,a=this.length-1;o+1<a;){var s=o+a>>>1,u=this._data[s];if(u===r)return s;u>r?a=s:o=s}if(o===a)return o;var l=this._data[o],c=this._data[a];if(l===r)return o;if(c===r)return a;var d=e.getPartIndex(l);return i-e.getCharIndex(l)<=(d!==e.getPartIndex(c)?n:e.getCharIndex(c))-i?o:a}}],[{key:"getPartIndex",value:function(e){return(4294901760&e)>>>16}},{key:"getCharIndex",value:function(e){return(65535&e)>>>0}}]),e}(),f=(0,o.Z)((function e(t,n,i){(0,r.Z)(this,e),this.characterMapping=t,this.containsRTL=n,this.containsForeignElements=i}));function p(e,t){if(0===e.lineContent.length){if(e.lineDecorations.length>0){t.appendASCIIString("<span>");var n,r=0,o=0,s=0,c=(0,i.Z)(e.lineDecorations);try{for(c.s();!(n=c.n()).done;){var d=n.value;1!==d.type&&2!==d.type||(t.appendASCIIString('<span class="'),t.appendASCIIString(d.className),t.appendASCIIString('"></span>'),1===d.type&&(s|=1,r++),2===d.type&&(s|=2,o++))}}catch(g){c.e(g)}finally{c.f()}t.appendASCIIString("</span>");var p=new h(1,r+o);return p.setPartData(0,r,0,0),new f(p,!1,s)}return t.appendASCIIString("<span><span></span></span>"),new f(new h(0,0),!1,0)}return function(e,t){var n=e.fontIsMonospace,i=e.canUseHalfwidthRightwardsArrow,r=e.containsForeignElements,o=e.lineContent,s=e.len,u=e.isOverflowing,l=e.parts,c=e.fauxIndentLength,d=e.tabSize,p=e.startVisibleColumn,g=e.containsRTL,v=e.spaceWidth,m=e.renderSpaceCharCode,_=e.renderWhitespace,y=e.renderControlCharacters,b=new h(s+1,l.length),w=0,C=p,k=0,S=0,x=0,L=0;g?t.appendASCIIString('<span dir="ltr">'):t.appendASCIIString("<span>");for(var E=0,D=l.length;E<D;E++){L+=x;var N=l[E],M=N.endIndex,T=N.type,I=0!==_&&N.isWhitespace(),O=I&&!n&&("mtkw"===T||!r),A=w===M&&4===N.metadata;if(k=0,t.appendASCIIString('<span class="'),t.appendASCIIString(O?"mtkz":T),t.appendASCII(34),I){for(var R=0,P=w,Z=C;P<M;P++){var F=0|(9===o.charCodeAt(P)?d-Z%d:1);R+=F,P>=c&&(Z+=F)}for(O&&(t.appendASCIIString(' style="width:'),t.appendASCIIString(String(v*R)),t.appendASCIIString('px"')),t.appendASCII(62);w<M;w++){b.setPartData(w,E-S,k,L),S=0;var j=void 0;if(9===o.charCodeAt(w)){j=d-C%d|0,!i||j>1?t.write1(8594):t.write1(65515);for(var H=2;H<=j;H++)t.write1(160)}else j=1,t.write1(m);k+=j,w>=c&&(C+=j)}x=R}else{var B=0;for(t.appendASCII(62);w<M;w++){b.setPartData(w,E-S,k,L),S=0;var z=o.charCodeAt(w),W=1,V=1;switch(z){case 9:V=W=d-C%d;for(var Y=1;Y<=W;Y++)t.write1(160);break;case 32:t.write1(160);break;case 60:t.appendASCIIString("<");break;case 62:t.appendASCIIString(">");break;case 38:t.appendASCIIString("&");break;case 0:y?t.write1(9216):t.appendASCIIString("�");break;case 65279:case 8232:case 8233:case 133:t.write1(65533);break;default:a.K7(z)&&V++,y&&z<32?t.write1(9216+z):y&&127===z?t.write1(9249):t.write1(z)}k+=W,B+=W,w>=c&&(C+=V)}x=B}A?S++:S=0,t.appendASCIIString("</span>")}b.setPartData(s,l.length-1,k,L),u&&t.appendASCIIString("<span>…</span>");return t.appendASCIIString("</span>"),new f(b,g,r)}(function(e){var t,n,i=e.lineContent;-1!==e.stopRenderingLineAfter&&e.stopRenderingLineAfter<i.length?(t=!0,n=e.stopRenderingLineAfter):(t=!1,n=i.length);var r=function(e,t,n){var i=[],r=0;t>0&&(i[r++]=new l(t,"",0));for(var o=0,a=e.getCount();o<a;o++){var s=e.getEndOffset(o);if(!(s<=t)){var u=e.getClassName(o);if(s>=n){i[r++]=new l(n,u,0);break}i[r++]=new l(s,u,0)}}return i}(e.lineTokens,e.fauxIndentLength,n);(4===e.renderWhitespace||1===e.renderWhitespace||2===e.renderWhitespace&&e.selectionsOnLine||3===e.renderWhitespace)&&(r=function(e,t,n,i){var r,o=e.continuesWithWrappedLine,s=e.fauxIndentLength,u=e.tabSize,c=e.startVisibleColumn,d=e.useMonospaceOptimizations,h=e.selectionsOnLine,f=1===e.renderWhitespace,p=3===e.renderWhitespace,g=e.renderSpaceWidth!==e.spaceWidth,v=[],m=0,_=0,y=i[_].type,b=i[_].endIndex,w=i.length,C=!1,k=a.LC(t);-1===k?(C=!0,k=n,r=n):r=a.ow(t);for(var S=!1,x=0,L=h&&h[x],E=c%u,D=s;D<n;D++){var N=t.charCodeAt(D);L&&D>=L.endOffset&&(x++,L=h&&h[x]);var M=void 0;if(D<k||D>r)M=!0;else if(9===N)M=!0;else if(32===N)if(f)if(S)M=!0;else{var T=D+1<n?t.charCodeAt(D+1):0;M=32===T||9===T}else M=!0;else M=!1;if(M&&h&&(M=!!L&&L.startOffset<=D&&L.endOffset>D),M&&p&&(M=C||D>r),S){if(!M||!d&&E>=u){if(g)for(var I=(m>0?v[m-1].endIndex:s)+1;I<=D;I++)v[m++]=new l(I,"mtkw",1);else v[m++]=new l(D,"mtkw",1);E%=u}}else(D===b||M&&D>s)&&(v[m++]=new l(D,y,0),E%=u);for(9===N?E=u:a.K7(N)?E+=2:E++,S=M;D===b;)++_<w&&(y=i[_].type,b=i[_].endIndex)}var O=!1;if(S)if(o&&f){var A=n>0?t.charCodeAt(n-1):0,R=n>1?t.charCodeAt(n-2):0;32===A&&32!==R&&9!==R||(O=!0)}else O=!0;if(O)if(g)for(var P=(m>0?v[m-1].endIndex:s)+1;P<=n;P++)v[m++]=new l(P,"mtkw",1);else v[m++]=new l(n,"mtkw",1);else v[m++]=new l(n,y,0);return v}(e,i,n,r));var o=0;if(e.lineDecorations.length>0){for(var s=0,c=e.lineDecorations.length;s<c;s++){var d=e.lineDecorations[s];3===d.type||1===d.type?o|=1:2===d.type&&(o|=2)}r=function(e,t,n,i){i.sort(u.Kp.compare);for(var r=u.k.normalize(e,i),o=r.length,a=0,s=[],c=0,d=0,h=0,f=n.length;h<f;h++){for(var p=n[h],g=p.endIndex,v=p.type,m=p.metadata;a<o&&r[a].startOffset<g;){var _=r[a];if(_.startOffset>d&&(d=_.startOffset,s[c++]=new l(d,v,m)),!(_.endOffset+1<=g)){d=g,s[c++]=new l(d,v+" "+_.className,m|_.metadata);break}d=_.endOffset+1,s[c++]=new l(d,v+" "+_.className,m|_.metadata),a++}g>d&&(d=g,s[c++]=new l(d,v,m))}var y=n[n.length-1].endIndex;if(a<o&&r[a].startOffset===y){for(var b=[],w=0;a<o&&r[a].startOffset===y;)b.push(r[a].className),w|=r[a].metadata,a++;s[c++]=new l(d,b.join(" "),w)}return s}(i,0,r,e.lineDecorations)}e.containsRTL||(r=function(e,t,n){var i=0,r=[],o=0;if(n)for(var a=0,s=t.length;a<s;a++){var u=t[a],c=u.endIndex;if(i+50<c){for(var d=u.type,h=u.metadata,f=-1,p=i,g=i;g<c;g++)32===e.charCodeAt(g)&&(f=g),-1!==f&&g-p>=50&&(r[o++]=new l(f+1,d,h),p=f+1,f=-1);p!==c&&(r[o++]=new l(c,d,h))}else r[o++]=u;i=c}else for(var v=0,m=t.length;v<m;v++){var _=t[v],y=_.endIndex,b=y-i;if(b>50){for(var w=_.type,C=_.metadata,k=Math.ceil(b/50),S=1;S<k;S++){var x=i+50*S;r[o++]=new l(x,w,C)}r[o++]=new l(y,w,C)}else r[o++]=_;i=y}return r}(i,r,!e.isBasicASCII||e.fontLigatures));return new m(e.useMonospaceOptimizations,e.canUseHalfwidthRightwardsArrow,i,n,t,r,o,e.fauxIndentLength,e.tabSize,e.startVisibleColumn,e.containsRTL,e.spaceWidth,e.renderSpaceCharCode,e.renderWhitespace,e.renderControlCharacters)}(e),t)}var g=(0,o.Z)((function e(t,n,i,o){(0,r.Z)(this,e),this.characterMapping=t,this.html=n,this.containsRTL=i,this.containsForeignElements=o}));function v(e){var t=(0,s.l$)(1e4),n=p(e,t);return new g(n.characterMapping,t.build(),n.containsRTL,n.containsForeignElements)}var m=(0,o.Z)((function e(t,n,i,o,a,s,u,l,c,d,h,f,p,g,v){(0,r.Z)(this,e),this.fontIsMonospace=t,this.canUseHalfwidthRightwardsArrow=n,this.lineContent=i,this.len=o,this.isOverflowing=a,this.parts=s,this.containsForeignElements=u,this.fauxIndentLength=l,this.tabSize=c,this.startVisibleColumn=d,this.containsRTL=h,this.spaceWidth=f,this.renderSpaceCharCode=p,this.renderWhitespace=g,this.renderControlCharacters=v}))},21043:function(e,t,n){"use strict";n.d(t,{T:function(){return a},o:function(){return s}});var i=n(43144),r=n(15671),o=n(38820),a=(0,i.Z)((function e(t,n){(0,r.Z)(this,e),this.index=t,this.remainder=n})),s=function(){function e(t){(0,r.Z)(this,e),this.values=t,this.prefixSum=new Uint32Array(t.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}return(0,i.Z)(e,[{key:"insertValues",value:function(e,t){e=(0,o.A)(e);var n=this.values,i=this.prefixSum,r=t.length;return 0!==r&&(this.values=new Uint32Array(n.length+r),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e),e+r),this.values.set(t,e),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSum=new Uint32Array(this.values.length),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(i.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}},{key:"changeValue",value:function(e,t){return e=(0,o.A)(e),t=(0,o.A)(t),this.values[e]!==t&&(this.values[e]=t,e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),!0)}},{key:"removeValues",value:function(e,t){e=(0,o.A)(e),t=(0,o.A)(t);var n=this.values,i=this.prefixSum;if(e>=n.length)return!1;var r=n.length-e;return t>=r&&(t=r),0!==t&&(this.values=new Uint32Array(n.length-t),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(i.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}},{key:"getTotalValue",value:function(){return 0===this.values.length?0:this._getAccumulatedValue(this.values.length-1)}},{key:"getAccumulatedValue",value:function(e){return e<0?0:(e=(0,o.A)(e),this._getAccumulatedValue(e))}},{key:"_getAccumulatedValue",value:function(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];var t=this.prefixSumValidIndex[0]+1;0===t&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(var n=t;n<=e;n++)this.prefixSum[n]=this.prefixSum[n-1]+this.values[n];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]}},{key:"getIndexOf",value:function(e){e=Math.floor(e),this.getTotalValue();for(var t=0,n=this.values.length-1,i=0,r=0,o=0;t<=n;)if(i=t+(n-t)/2|0,e<(o=(r=this.prefixSum[i])-this.values[i]))n=i-1;else{if(!(e>=r))break;t=i+1}return new a(i,e-o)}}]),e}()},4587:function(e,t,n){"use strict";n.d(t,{$l:function(){return f},$t:function(){return h},IP:function(){return c},l_:function(){return a},le:function(){return u},ud:function(){return l},wA:function(){return d}});var i=n(43144),r=n(15671),o=n(51747),a=(0,i.Z)((function e(t,n,i,o){(0,r.Z)(this,e),this.top=0|t,this.left=0|n,this.width=0|i,this.height=0|o})),s=(0,i.Z)((function e(t,n){(0,r.Z)(this,e),this.outputLineIndex=t,this.outputOffset=n})),u=function(){function e(t,n,i){(0,r.Z)(this,e),this.breakOffsets=t,this.breakOffsetsVisibleColumn=n,this.wrappedTextIndentLength=i}return(0,i.Z)(e,null,[{key:"getInputOffsetOfOutputPosition",value:function(e,t,n){return 0===t?n:e[t-1]+n}},{key:"getOutputPositionOfInputOffset",value:function(e,t){for(var n=0,i=e.length-1,r=0,o=0;n<=i;){var a=e[r=n+(i-n)/2|0];if(t<(o=r>0?e[r-1]:0))i=r-1;else{if(!(t>=a))break;n=r+1}}return new s(r,t-o)}}]),e}(),l=(0,i.Z)((function e(t,n){(0,r.Z)(this,e),this.tabSize=t,this.data=n})),c=(0,i.Z)((function e(t,n,i,o,a,s){(0,r.Z)(this,e),this.content=t,this.continuesWithWrappedLine=n,this.minColumn=i,this.maxColumn=o,this.startVisibleColumn=a,this.tokens=s})),d=function(){function e(t,n,i,o,a,s,u,l,c,d){(0,r.Z)(this,e),this.minColumn=t,this.maxColumn=n,this.content=i,this.continuesWithWrappedLine=o,this.isBasicASCII=e.isBasicASCII(i,s),this.containsRTL=e.containsRTL(i,this.isBasicASCII,a),this.tokens=u,this.inlineDecorations=l,this.tabSize=c,this.startVisibleColumn=d}return(0,i.Z)(e,null,[{key:"isBasicASCII",value:function(e,t){return!t||o.$i(e)}},{key:"containsRTL",value:function(e,t,n){return!(t||!n)&&o.Ut(e)}}]),e}(),h=(0,i.Z)((function e(t,n,i){(0,r.Z)(this,e),this.range=t,this.inlineClassName=n,this.type=i})),f=(0,i.Z)((function e(t,n){(0,r.Z)(this,e),this.range=t,this.options=n}))},61335:function(e,t,n){"use strict";n.d(t,{xC:function(){return A},Zg:function(){return I},x$:function(){return R},Qq:function(){return Z},Qs:function(){return j}});var i=n(29439),r=n(93433),o=n(15671),a=n(43144),s=n(37762),u=n(87757),l=n.n(u),c=n(52180),d=n(49396),h=n(66526),f=n(8729),p=n(67775),g=n(47908),v=n(76191),m=n(67297),_=n(67033),y=n(74964),b=n(99404),w=n(333),C=n(49076),k=n(71481),S=n(56345),x=function(){function e(t){(0,o.Z)(this,e),this.value=t,this._lower=t.toLowerCase()}return(0,a.Z)(e,null,[{key:"toKey",value:function(e){return"string"===typeof e?e.toLowerCase():e._lower}}]),e}(),L=n(84596),E=n(28214),D=n(72611),N=n(25941),M=n(98900),T=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};function I(e){if((e=e.filter((function(e){return e.range}))).length){for(var t=e[0].range,n=1;n<e.length;n++)t=_.e.plusRange(t,e[n].range);var i=t,r=i.startLineNumber,o=i.endLineNumber;r===o?1===e.length?(0,c.Z9)(S.N("hint11","Made 1 formatting edit on line {0}",r)):(0,c.Z9)(S.N("hintn1","Made {0} formatting edits on line {1}",e.length,r)):1===e.length?(0,c.Z9)(S.N("hint1n","Made 1 formatting edit between lines {0} and {1}",r,o)):(0,c.Z9)(S.N("hintnn","Made {0} formatting edits between lines {1} and {2}",e.length,r,o))}}function O(e){var t,n=[],i=new Set,r=b.Az.ordered(e),o=(0,s.Z)(r);try{for(o.s();!(t=o.n()).done;){var a=t.value;n.push(a),a.extensionId&&i.add(x.toKey(a.extensionId))}}catch(h){o.e(h)}finally{o.f()}var u,l=b.vN.ordered(e),c=(0,s.Z)(l);try{var d=function(){var e=u.value;if(e.extensionId){if(i.has(x.toKey(e.extensionId)))return"continue";i.add(x.toKey(e.extensionId))}n.push({displayName:e.displayName,extensionId:e.extensionId,provideDocumentFormattingEdits:function(t,n,i){return e.provideDocumentRangeFormattingEdits(t,t.getFullModelRange(),n,i)}})};for(c.s();!(u=c.n()).done;)d()}catch(h){c.e(h)}finally{c.f()}return n}var A=function(){function e(){(0,o.Z)(this,e)}return(0,a.Z)(e,null,[{key:"setFormatterSelector",value:function(t){return{dispose:e._selectors.unshift(t)}}},{key:"select",value:function(t,n,i){return T(this,void 0,void 0,l().mark((function r(){var o;return l().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(0!==t.length){r.next=2;break}return r.abrupt("return",void 0);case 2:if(!(o=M.$.first(e._selectors))){r.next=7;break}return r.next=6,o(t,n,i);case 6:return r.abrupt("return",r.sent);case 7:return r.abrupt("return",void 0);case 8:case"end":return r.stop()}}),r)})))}}]),e}();function R(e,t,n,i,r,o){return T(this,void 0,void 0,l().mark((function a(){var s,u,c,d;return l().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return s=e.get(L.TG),u=(0,v.CL)(t)?t.getModel():t,c=b.vN.ordered(u),a.next=5,A.select(c,u,i);case 5:if(!(d=a.sent)){a.next=10;break}return r.report(d),a.next=10,s.invokeFunction(P,d,t,n,o);case 10:case"end":return a.stop()}}),a)})))}function P(e,t,n,i,o){return T(this,void 0,void 0,l().mark((function a(){var u,c,h,f,p,m,b,C,S,x,L,E,D,N,M,T;return l().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:u=e.get(w.p),(0,v.CL)(n)?(c=n.getModel(),h=new g.Dl(n,5,void 0,o)):(c=n,h=new g.YQ(n,o)),f=[],p=0,m=(0,s.Z)((0,d._2)(i).sort(_.e.compareRangesUsingStarts));try{for(m.s();!(b=m.n()).done;)C=b.value,p>0&&_.e.areIntersectingOrTouching(f[p-1],C)?f[p-1]=_.e.fromPositions(f[p-1].getStartPosition(),C.getEndPosition()):p=f.push(C)}catch(l){m.e(l)}finally{m.f()}S=[],x=0,L=f;case 8:if(!(x<L.length)){a.next=26;break}return E=L[x],a.prev=10,a.next=13,t.provideDocumentRangeFormattingEdits(c,E,c.getFormattingOptions(),h.token);case 13:return D=a.sent,a.next=16,u.computeMoreMinimalEdits(c.uri,D);case 16:if((N=a.sent)&&S.push.apply(S,(0,r.Z)(N)),!h.token.isCancellationRequested){a.next=20;break}return a.abrupt("return",!0);case 20:return a.prev=20,h.dispose(),a.finish(20);case 23:x++,a.next=8;break;case 26:if(0!==S.length){a.next=28;break}return a.abrupt("return",!1);case 28:return(0,v.CL)(n)?(k.V.execute(n,S,!0),I(S),n.revealPositionInCenterIfOutsideViewport(n.getPosition(),1)):(M=S[0].range,T=new y.Y(M.startLineNumber,M.startColumn,M.endLineNumber,M.endColumn),c.pushEditOperations([T],S.map((function(e){return{text:e.text,range:_.e.lift(e.range),forceMoveMarkers:!0}})),(function(e){var t,n=(0,s.Z)(e);try{for(n.s();!(t=n.n()).done;){var i=t.value.range;if(_.e.areIntersectingOrTouching(i,T))return[new y.Y(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn)]}}catch(l){n.e(l)}finally{n.f()}return null}))),a.abrupt("return",!0);case 30:case"end":return a.stop()}}),a,null,[[10,,20,23]])})))}function Z(e,t,n,i,r){return T(this,void 0,void 0,l().mark((function o(){var a,s,u,c;return l().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return a=e.get(L.TG),s=(0,v.CL)(t)?t.getModel():t,u=O(s),o.next=5,A.select(u,s,n);case 5:if(!(c=o.sent)){o.next=10;break}return i.report(c),o.next=10,a.invokeFunction(F,c,t,n,r);case 10:case"end":return o.stop()}}),o)})))}function F(e,t,n,r,o){return T(this,void 0,void 0,l().mark((function a(){var u,c,d,h,f,p,m,b,C;return l().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return u=e.get(w.p),(0,v.CL)(n)?(c=n.getModel(),d=new g.Dl(n,5,void 0,o)):(c=n,d=new g.YQ(n,o)),a.prev=2,a.next=5,t.provideDocumentFormattingEdits(c,c.getFormattingOptions(),d.token);case 5:return f=a.sent,a.next=8,u.computeMoreMinimalEdits(c.uri,f);case 8:if(h=a.sent,!d.token.isCancellationRequested){a.next=11;break}return a.abrupt("return",!0);case 11:return a.prev=11,d.dispose(),a.finish(11);case 14:if(h&&0!==h.length){a.next=16;break}return a.abrupt("return",!1);case 16:return(0,v.CL)(n)?(k.V.execute(n,h,2!==r),2!==r&&(I(h),n.revealPositionInCenterIfOutsideViewport(n.getPosition(),1))):(p=h,m=(0,i.Z)(p,1),b=m[0].range,C=new y.Y(b.startLineNumber,b.startColumn,b.endLineNumber,b.endColumn),c.pushEditOperations([C],h.map((function(e){return{text:e.text,range:_.e.lift(e.range),forceMoveMarkers:!0}})),(function(e){var t,n=(0,s.Z)(e);try{for(n.s();!(t=n.n()).done;){var i=t.value.range;if(_.e.areIntersectingOrTouching(i,C))return[new y.Y(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn)]}}catch(r){n.e(r)}finally{n.f()}return null}))),a.abrupt("return",!0);case 18:case"end":return a.stop()}}),a,null,[[2,,11,14]])})))}function j(e,t,n,i,r){var o=b.ln.ordered(t);return 0===o.length||o[0].autoFormatTriggerCharacters.indexOf(i)<0?Promise.resolve(void 0):Promise.resolve(o[0].provideOnTypeFormattingEdits(t,n,i,r,h.T.None)).catch(f.Cp).then((function(n){return e.computeMoreMinimalEdits(t.uri,n)}))}A._selectors=new E.S,D.P.registerCommand("_executeFormatRangeProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var r=n[0],o=n[1],a=n[2];(0,N.p_)(p.o.isUri(r)),(0,N.p_)(_.e.isIRange(o));var u=e.get(C.q).getModel(r);if(!u)throw(0,f.b1)("resource");return function(e,t,n,i,r){return T(this,void 0,void 0,l().mark((function o(){var a,u,c,h,p;return l().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:a=b.vN.ordered(t),u=(0,s.Z)(a),o.prev=2,u.s();case 4:if((c=u.n()).done){o.next=15;break}return h=c.value,o.next=8,Promise.resolve(h.provideDocumentRangeFormattingEdits(t,n,i,r)).catch(f.Cp);case 8:if(p=o.sent,!(0,d.Of)(p)){o.next=13;break}return o.next=12,e.computeMoreMinimalEdits(t.uri,p);case 12:return o.abrupt("return",o.sent);case 13:o.next=4;break;case 15:o.next=20;break;case 17:o.prev=17,o.t0=o.catch(2),u.e(o.t0);case 20:return o.prev=20,u.f(),o.finish(20);case 23:return o.abrupt("return",void 0);case 24:case"end":return o.stop()}}),o,null,[[2,17,20,23]])})))}(e.get(w.p),u,_.e.lift(o),a,h.T.None)})),D.P.registerCommand("_executeFormatDocumentProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var r=n[0],o=n[1];(0,N.p_)(p.o.isUri(r));var a=e.get(C.q).getModel(r);if(!a)throw(0,f.b1)("resource");return function(e,t,n,i){return T(this,void 0,void 0,l().mark((function r(){var o,a,u,c,h;return l().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:o=O(t),a=(0,s.Z)(o),r.prev=2,a.s();case 4:if((u=a.n()).done){r.next=15;break}return c=u.value,r.next=8,Promise.resolve(c.provideDocumentFormattingEdits(t,n,i)).catch(f.Cp);case 8:if(h=r.sent,!(0,d.Of)(h)){r.next=13;break}return r.next=12,e.computeMoreMinimalEdits(t.uri,h);case 12:return r.abrupt("return",r.sent);case 13:r.next=4;break;case 15:r.next=20;break;case 17:r.prev=17,r.t0=r.catch(2),a.e(r.t0);case 20:return r.prev=20,a.f(),r.finish(20);case 23:return r.abrupt("return",void 0);case 24:case"end":return r.stop()}}),r,null,[[2,17,20,23]])})))}(e.get(w.p),a,o,h.T.None)})),D.P.registerCommand("_executeFormatOnTypeProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var r=n[0],o=n[1],a=n[2],s=n[3];(0,N.p_)(p.o.isUri(r)),(0,N.p_)(m.L.isIPosition(o)),(0,N.p_)("string"===typeof a);var u=e.get(C.q).getModel(r);if(!u)throw(0,f.b1)("resource");return j(e.get(w.p),u,m.L.lift(o),a,s)}))},71481:function(e,t,n){"use strict";n.d(t,{V:function(){return u}});var i=n(37762),r=n(15671),o=n(43144),a=n(85025),s=n(67033),u=function(){function e(){(0,r.Z)(this,e)}return(0,o.Z)(e,null,[{key:"_handleEolEdits",value:function(e,t){var n,r=void 0,o=[],a=(0,i.Z)(t);try{for(a.s();!(n=a.n()).done;){var s=n.value;"number"===typeof s.eol&&(r=s.eol),s.range&&"string"===typeof s.text&&o.push(s)}}catch(u){a.e(u)}finally{a.f()}return"number"===typeof r&&e.hasModel()&&e.getModel().pushEOL(r),o}},{key:"_isFullModelReplaceEdit",value:function(e,t){if(!e.hasModel())return!1;var n=e.getModel(),i=n.validateRange(t.range);return n.getFullModelRange().equalsRange(i)}},{key:"execute",value:function(t,n,i){i&&t.pushUndoStop();var r=e._handleEolEdits(t,n);1===r.length&&e._isFullModelReplaceEdit(t,r[0])?t.executeEdits("formatEditsCommand",r.map((function(e){return a.h.replace(s.e.lift(e.range),e.text)}))):t.executeEdits("formatEditsCommand",r.map((function(e){return a.h.replaceMove(s.e.lift(e.range),e.text)}))),i&&t.pushUndoStop()}}]),e}()},14717:function(e,t,n){"use strict";n.r(t),n.d(t,{CancellationTokenSource:function(){return Uu},Emitter:function(){return Ku},KeyCode:function(){return qu},KeyMod:function(){return Gu},MarkerSeverity:function(){return el},MarkerTag:function(){return tl},Position:function(){return $u},Range:function(){return Qu},Selection:function(){return Xu},SelectionDirection:function(){return Ju},Token:function(){return il},Uri:function(){return nl},editor:function(){return rl},languages:function(){return ol}});var i,r,o,a,s,u,l,c,d,h,f,p,g,v,m,_,y,b,w,C,k,S,x,L,E,D,N,M,T,I,O,A,R,P,Z=n(76556),F=n(15671),j=n(43144),H=n(66526),B=n(11732),z=n(38792),W=n(67775),V=n(67297),Y=n(67033),U=n(74964),K=n(98154);!function(e){e[e.Unknown=0]="Unknown",e[e.Disabled=1]="Disabled",e[e.Enabled=2]="Enabled"}(i||(i={})),function(e){e[e.KeepWhitespace=1]="KeepWhitespace",e[e.InsertAsSnippet=4]="InsertAsSnippet"}(r||(r={})),function(e){e[e.Method=0]="Method",e[e.Function=1]="Function",e[e.Constructor=2]="Constructor",e[e.Field=3]="Field",e[e.Variable=4]="Variable",e[e.Class=5]="Class",e[e.Struct=6]="Struct",e[e.Interface=7]="Interface",e[e.Module=8]="Module",e[e.Property=9]="Property",e[e.Event=10]="Event",e[e.Operator=11]="Operator",e[e.Unit=12]="Unit",e[e.Value=13]="Value",e[e.Constant=14]="Constant",e[e.Enum=15]="Enum",e[e.EnumMember=16]="EnumMember",e[e.Keyword=17]="Keyword",e[e.Text=18]="Text",e[e.Color=19]="Color",e[e.File=20]="File",e[e.Reference=21]="Reference",e[e.Customcolor=22]="Customcolor",e[e.Folder=23]="Folder",e[e.TypeParameter=24]="TypeParameter",e[e.User=25]="User",e[e.Issue=26]="Issue",e[e.Snippet=27]="Snippet"}(o||(o={})),function(e){e[e.Deprecated=1]="Deprecated"}(a||(a={})),function(e){e[e.Invoke=0]="Invoke",e[e.TriggerCharacter=1]="TriggerCharacter",e[e.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"}(s||(s={})),function(e){e[e.EXACT=0]="EXACT",e[e.ABOVE=1]="ABOVE",e[e.BELOW=2]="BELOW"}(u||(u={})),function(e){e[e.NotSet=0]="NotSet",e[e.ContentFlush=1]="ContentFlush",e[e.RecoverFromMarkers=2]="RecoverFromMarkers",e[e.Explicit=3]="Explicit",e[e.Paste=4]="Paste",e[e.Undo=5]="Undo",e[e.Redo=6]="Redo"}(l||(l={})),function(e){e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"}(c||(c={})),function(e){e[e.Text=0]="Text",e[e.Read=1]="Read",e[e.Write=2]="Write"}(d||(d={})),function(e){e[e.None=0]="None",e[e.Keep=1]="Keep",e[e.Brackets=2]="Brackets",e[e.Advanced=3]="Advanced",e[e.Full=4]="Full"}(h||(h={})),function(e){e[e.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",e[e.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",e[e.accessibilitySupport=2]="accessibilitySupport",e[e.accessibilityPageSize=3]="accessibilityPageSize",e[e.ariaLabel=4]="ariaLabel",e[e.autoClosingBrackets=5]="autoClosingBrackets",e[e.autoClosingDelete=6]="autoClosingDelete",e[e.autoClosingOvertype=7]="autoClosingOvertype",e[e.autoClosingQuotes=8]="autoClosingQuotes",e[e.autoIndent=9]="autoIndent",e[e.automaticLayout=10]="automaticLayout",e[e.autoSurround=11]="autoSurround",e[e.codeLens=12]="codeLens",e[e.codeLensFontFamily=13]="codeLensFontFamily",e[e.codeLensFontSize=14]="codeLensFontSize",e[e.colorDecorators=15]="colorDecorators",e[e.columnSelection=16]="columnSelection",e[e.comments=17]="comments",e[e.contextmenu=18]="contextmenu",e[e.copyWithSyntaxHighlighting=19]="copyWithSyntaxHighlighting",e[e.cursorBlinking=20]="cursorBlinking",e[e.cursorSmoothCaretAnimation=21]="cursorSmoothCaretAnimation",e[e.cursorStyle=22]="cursorStyle",e[e.cursorSurroundingLines=23]="cursorSurroundingLines",e[e.cursorSurroundingLinesStyle=24]="cursorSurroundingLinesStyle",e[e.cursorWidth=25]="cursorWidth",e[e.disableLayerHinting=26]="disableLayerHinting",e[e.disableMonospaceOptimizations=27]="disableMonospaceOptimizations",e[e.domReadOnly=28]="domReadOnly",e[e.dragAndDrop=29]="dragAndDrop",e[e.emptySelectionClipboard=30]="emptySelectionClipboard",e[e.extraEditorClassName=31]="extraEditorClassName",e[e.fastScrollSensitivity=32]="fastScrollSensitivity",e[e.find=33]="find",e[e.fixedOverflowWidgets=34]="fixedOverflowWidgets",e[e.folding=35]="folding",e[e.foldingStrategy=36]="foldingStrategy",e[e.foldingHighlight=37]="foldingHighlight",e[e.unfoldOnClickAfterEndOfLine=38]="unfoldOnClickAfterEndOfLine",e[e.fontFamily=39]="fontFamily",e[e.fontInfo=40]="fontInfo",e[e.fontLigatures=41]="fontLigatures",e[e.fontSize=42]="fontSize",e[e.fontWeight=43]="fontWeight",e[e.formatOnPaste=44]="formatOnPaste",e[e.formatOnType=45]="formatOnType",e[e.glyphMargin=46]="glyphMargin",e[e.gotoLocation=47]="gotoLocation",e[e.hideCursorInOverviewRuler=48]="hideCursorInOverviewRuler",e[e.highlightActiveIndentGuide=49]="highlightActiveIndentGuide",e[e.hover=50]="hover",e[e.inDiffEditor=51]="inDiffEditor",e[e.letterSpacing=52]="letterSpacing",e[e.lightbulb=53]="lightbulb",e[e.lineDecorationsWidth=54]="lineDecorationsWidth",e[e.lineHeight=55]="lineHeight",e[e.lineNumbers=56]="lineNumbers",e[e.lineNumbersMinChars=57]="lineNumbersMinChars",e[e.linkedEditing=58]="linkedEditing",e[e.links=59]="links",e[e.matchBrackets=60]="matchBrackets",e[e.minimap=61]="minimap",e[e.mouseStyle=62]="mouseStyle",e[e.mouseWheelScrollSensitivity=63]="mouseWheelScrollSensitivity",e[e.mouseWheelZoom=64]="mouseWheelZoom",e[e.multiCursorMergeOverlapping=65]="multiCursorMergeOverlapping",e[e.multiCursorModifier=66]="multiCursorModifier",e[e.multiCursorPaste=67]="multiCursorPaste",e[e.occurrencesHighlight=68]="occurrencesHighlight",e[e.overviewRulerBorder=69]="overviewRulerBorder",e[e.overviewRulerLanes=70]="overviewRulerLanes",e[e.padding=71]="padding",e[e.parameterHints=72]="parameterHints",e[e.peekWidgetDefaultFocus=73]="peekWidgetDefaultFocus",e[e.definitionLinkOpensInPeek=74]="definitionLinkOpensInPeek",e[e.quickSuggestions=75]="quickSuggestions",e[e.quickSuggestionsDelay=76]="quickSuggestionsDelay",e[e.readOnly=77]="readOnly",e[e.renameOnType=78]="renameOnType",e[e.renderControlCharacters=79]="renderControlCharacters",e[e.renderIndentGuides=80]="renderIndentGuides",e[e.renderFinalNewline=81]="renderFinalNewline",e[e.renderLineHighlight=82]="renderLineHighlight",e[e.renderLineHighlightOnlyWhenFocus=83]="renderLineHighlightOnlyWhenFocus",e[e.renderValidationDecorations=84]="renderValidationDecorations",e[e.renderWhitespace=85]="renderWhitespace",e[e.revealHorizontalRightPadding=86]="revealHorizontalRightPadding",e[e.roundedSelection=87]="roundedSelection",e[e.rulers=88]="rulers",e[e.scrollbar=89]="scrollbar",e[e.scrollBeyondLastColumn=90]="scrollBeyondLastColumn",e[e.scrollBeyondLastLine=91]="scrollBeyondLastLine",e[e.scrollPredominantAxis=92]="scrollPredominantAxis",e[e.selectionClipboard=93]="selectionClipboard",e[e.selectionHighlight=94]="selectionHighlight",e[e.selectOnLineNumbers=95]="selectOnLineNumbers",e[e.showFoldingControls=96]="showFoldingControls",e[e.showUnused=97]="showUnused",e[e.snippetSuggestions=98]="snippetSuggestions",e[e.smartSelect=99]="smartSelect",e[e.smoothScrolling=100]="smoothScrolling",e[e.stickyTabStops=101]="stickyTabStops",e[e.stopRenderingLineAfter=102]="stopRenderingLineAfter",e[e.suggest=103]="suggest",e[e.suggestFontSize=104]="suggestFontSize",e[e.suggestLineHeight=105]="suggestLineHeight",e[e.suggestOnTriggerCharacters=106]="suggestOnTriggerCharacters",e[e.suggestSelection=107]="suggestSelection",e[e.tabCompletion=108]="tabCompletion",e[e.tabIndex=109]="tabIndex",e[e.unusualLineTerminators=110]="unusualLineTerminators",e[e.useShadowDOM=111]="useShadowDOM",e[e.useTabStops=112]="useTabStops",e[e.wordSeparators=113]="wordSeparators",e[e.wordWrap=114]="wordWrap",e[e.wordWrapBreakAfterCharacters=115]="wordWrapBreakAfterCharacters",e[e.wordWrapBreakBeforeCharacters=116]="wordWrapBreakBeforeCharacters",e[e.wordWrapColumn=117]="wordWrapColumn",e[e.wordWrapOverride1=118]="wordWrapOverride1",e[e.wordWrapOverride2=119]="wordWrapOverride2",e[e.wrappingIndent=120]="wrappingIndent",e[e.wrappingStrategy=121]="wrappingStrategy",e[e.showDeprecated=122]="showDeprecated",e[e.inlineHints=123]="inlineHints",e[e.editorClassName=124]="editorClassName",e[e.pixelRatio=125]="pixelRatio",e[e.tabFocusMode=126]="tabFocusMode",e[e.layoutInfo=127]="layoutInfo",e[e.wrappingInfo=128]="wrappingInfo"}(f||(f={})),function(e){e[e.TextDefined=0]="TextDefined",e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"}(p||(p={})),function(e){e[e.LF=0]="LF",e[e.CRLF=1]="CRLF"}(g||(g={})),function(e){e[e.None=0]="None",e[e.Indent=1]="Indent",e[e.IndentOutdent=2]="IndentOutdent",e[e.Outdent=3]="Outdent"}(v||(v={})),function(e){e[e.Other=0]="Other",e[e.Type=1]="Type",e[e.Parameter=2]="Parameter"}(m||(m={})),function(e){e[e.DependsOnKbLayout=-1]="DependsOnKbLayout",e[e.Unknown=0]="Unknown",e[e.Backspace=1]="Backspace",e[e.Tab=2]="Tab",e[e.Enter=3]="Enter",e[e.Shift=4]="Shift",e[e.Ctrl=5]="Ctrl",e[e.Alt=6]="Alt",e[e.PauseBreak=7]="PauseBreak",e[e.CapsLock=8]="CapsLock",e[e.Escape=9]="Escape",e[e.Space=10]="Space",e[e.PageUp=11]="PageUp",e[e.PageDown=12]="PageDown",e[e.End=13]="End",e[e.Home=14]="Home",e[e.LeftArrow=15]="LeftArrow",e[e.UpArrow=16]="UpArrow",e[e.RightArrow=17]="RightArrow",e[e.DownArrow=18]="DownArrow",e[e.Insert=19]="Insert",e[e.Delete=20]="Delete",e[e.KEY_0=21]="KEY_0",e[e.KEY_1=22]="KEY_1",e[e.KEY_2=23]="KEY_2",e[e.KEY_3=24]="KEY_3",e[e.KEY_4=25]="KEY_4",e[e.KEY_5=26]="KEY_5",e[e.KEY_6=27]="KEY_6",e[e.KEY_7=28]="KEY_7",e[e.KEY_8=29]="KEY_8",e[e.KEY_9=30]="KEY_9",e[e.KEY_A=31]="KEY_A",e[e.KEY_B=32]="KEY_B",e[e.KEY_C=33]="KEY_C",e[e.KEY_D=34]="KEY_D",e[e.KEY_E=35]="KEY_E",e[e.KEY_F=36]="KEY_F",e[e.KEY_G=37]="KEY_G",e[e.KEY_H=38]="KEY_H",e[e.KEY_I=39]="KEY_I",e[e.KEY_J=40]="KEY_J",e[e.KEY_K=41]="KEY_K",e[e.KEY_L=42]="KEY_L",e[e.KEY_M=43]="KEY_M",e[e.KEY_N=44]="KEY_N",e[e.KEY_O=45]="KEY_O",e[e.KEY_P=46]="KEY_P",e[e.KEY_Q=47]="KEY_Q",e[e.KEY_R=48]="KEY_R",e[e.KEY_S=49]="KEY_S",e[e.KEY_T=50]="KEY_T",e[e.KEY_U=51]="KEY_U",e[e.KEY_V=52]="KEY_V",e[e.KEY_W=53]="KEY_W",e[e.KEY_X=54]="KEY_X",e[e.KEY_Y=55]="KEY_Y",e[e.KEY_Z=56]="KEY_Z",e[e.Meta=57]="Meta",e[e.ContextMenu=58]="ContextMenu",e[e.F1=59]="F1",e[e.F2=60]="F2",e[e.F3=61]="F3",e[e.F4=62]="F4",e[e.F5=63]="F5",e[e.F6=64]="F6",e[e.F7=65]="F7",e[e.F8=66]="F8",e[e.F9=67]="F9",e[e.F10=68]="F10",e[e.F11=69]="F11",e[e.F12=70]="F12",e[e.F13=71]="F13",e[e.F14=72]="F14",e[e.F15=73]="F15",e[e.F16=74]="F16",e[e.F17=75]="F17",e[e.F18=76]="F18",e[e.F19=77]="F19",e[e.NumLock=78]="NumLock",e[e.ScrollLock=79]="ScrollLock",e[e.US_SEMICOLON=80]="US_SEMICOLON",e[e.US_EQUAL=81]="US_EQUAL",e[e.US_COMMA=82]="US_COMMA",e[e.US_MINUS=83]="US_MINUS",e[e.US_DOT=84]="US_DOT",e[e.US_SLASH=85]="US_SLASH",e[e.US_BACKTICK=86]="US_BACKTICK",e[e.US_OPEN_SQUARE_BRACKET=87]="US_OPEN_SQUARE_BRACKET",e[e.US_BACKSLASH=88]="US_BACKSLASH",e[e.US_CLOSE_SQUARE_BRACKET=89]="US_CLOSE_SQUARE_BRACKET",e[e.US_QUOTE=90]="US_QUOTE",e[e.OEM_8=91]="OEM_8",e[e.OEM_102=92]="OEM_102",e[e.NUMPAD_0=93]="NUMPAD_0",e[e.NUMPAD_1=94]="NUMPAD_1",e[e.NUMPAD_2=95]="NUMPAD_2",e[e.NUMPAD_3=96]="NUMPAD_3",e[e.NUMPAD_4=97]="NUMPAD_4",e[e.NUMPAD_5=98]="NUMPAD_5",e[e.NUMPAD_6=99]="NUMPAD_6",e[e.NUMPAD_7=100]="NUMPAD_7",e[e.NUMPAD_8=101]="NUMPAD_8",e[e.NUMPAD_9=102]="NUMPAD_9",e[e.NUMPAD_MULTIPLY=103]="NUMPAD_MULTIPLY",e[e.NUMPAD_ADD=104]="NUMPAD_ADD",e[e.NUMPAD_SEPARATOR=105]="NUMPAD_SEPARATOR",e[e.NUMPAD_SUBTRACT=106]="NUMPAD_SUBTRACT",e[e.NUMPAD_DECIMAL=107]="NUMPAD_DECIMAL",e[e.NUMPAD_DIVIDE=108]="NUMPAD_DIVIDE",e[e.KEY_IN_COMPOSITION=109]="KEY_IN_COMPOSITION",e[e.ABNT_C1=110]="ABNT_C1",e[e.ABNT_C2=111]="ABNT_C2",e[e.MAX_VALUE=112]="MAX_VALUE"}(_||(_={})),function(e){e[e.Hint=1]="Hint",e[e.Info=2]="Info",e[e.Warning=4]="Warning",e[e.Error=8]="Error"}(y||(y={})),function(e){e[e.Unnecessary=1]="Unnecessary",e[e.Deprecated=2]="Deprecated"}(b||(b={})),function(e){e[e.Inline=1]="Inline",e[e.Gutter=2]="Gutter"}(w||(w={})),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TEXTAREA=1]="TEXTAREA",e[e.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",e[e.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",e[e.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",e[e.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",e[e.CONTENT_TEXT=6]="CONTENT_TEXT",e[e.CONTENT_EMPTY=7]="CONTENT_EMPTY",e[e.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",e[e.CONTENT_WIDGET=9]="CONTENT_WIDGET",e[e.OVERVIEW_RULER=10]="OVERVIEW_RULER",e[e.SCROLLBAR=11]="SCROLLBAR",e[e.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",e[e.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"}(C||(C={})),function(e){e[e.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",e[e.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",e[e.TOP_CENTER=2]="TOP_CENTER"}(k||(k={})),function(e){e[e.Left=1]="Left",e[e.Center=2]="Center",e[e.Right=4]="Right",e[e.Full=7]="Full"}(S||(S={})),function(e){e[e.Off=0]="Off",e[e.On=1]="On",e[e.Relative=2]="Relative",e[e.Interval=3]="Interval",e[e.Custom=4]="Custom"}(x||(x={})),function(e){e[e.None=0]="None",e[e.Text=1]="Text",e[e.Blocks=2]="Blocks"}(L||(L={})),function(e){e[e.Smooth=0]="Smooth",e[e.Immediate=1]="Immediate"}(E||(E={})),function(e){e[e.Auto=1]="Auto",e[e.Hidden=2]="Hidden",e[e.Visible=3]="Visible"}(D||(D={})),function(e){e[e.LTR=0]="LTR",e[e.RTL=1]="RTL"}(N||(N={})),function(e){e[e.Invoke=1]="Invoke",e[e.TriggerCharacter=2]="TriggerCharacter",e[e.ContentChange=3]="ContentChange"}(M||(M={})),function(e){e[e.File=0]="File",e[e.Module=1]="Module",e[e.Namespace=2]="Namespace",e[e.Package=3]="Package",e[e.Class=4]="Class",e[e.Method=5]="Method",e[e.Property=6]="Property",e[e.Field=7]="Field",e[e.Constructor=8]="Constructor",e[e.Enum=9]="Enum",e[e.Interface=10]="Interface",e[e.Function=11]="Function",e[e.Variable=12]="Variable",e[e.Constant=13]="Constant",e[e.String=14]="String",e[e.Number=15]="Number",e[e.Boolean=16]="Boolean",e[e.Array=17]="Array",e[e.Object=18]="Object",e[e.Key=19]="Key",e[e.Null=20]="Null",e[e.EnumMember=21]="EnumMember",e[e.Struct=22]="Struct",e[e.Event=23]="Event",e[e.Operator=24]="Operator",e[e.TypeParameter=25]="TypeParameter"}(T||(T={})),function(e){e[e.Deprecated=1]="Deprecated"}(I||(I={})),function(e){e[e.Hidden=0]="Hidden",e[e.Blink=1]="Blink",e[e.Smooth=2]="Smooth",e[e.Phase=3]="Phase",e[e.Expand=4]="Expand",e[e.Solid=5]="Solid"}(O||(O={})),function(e){e[e.Line=1]="Line",e[e.Block=2]="Block",e[e.Underline=3]="Underline",e[e.LineThin=4]="LineThin",e[e.BlockOutline=5]="BlockOutline",e[e.UnderlineThin=6]="UnderlineThin"}(A||(A={})),function(e){e[e.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",e[e.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",e[e.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",e[e.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"}(R||(R={})),function(e){e[e.None=0]="None",e[e.Same=1]="Same",e[e.Indent=2]="Indent",e[e.DeepIndent=3]="DeepIndent"}(P||(P={}));var q=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,null,[{key:"chord",value:function(e,t){return(0,z.gx)(e,t)}}]),e}();function G(){return{editor:void 0,languages:void 0,CancellationTokenSource:H.A,Emitter:B.Q5,KeyCode:_,KeyMod:q,Position:V.L,Range:Y.e,Selection:U.Y,SelectionDirection:N,MarkerSeverity:y,MarkerTag:b,Uri:W.o,Token:K.WU}}q.CtrlCmd=2048,q.Shift=1024,q.Alt=512,q.WinCtrl=256;var $,Q=n(8295),X=n(37762),J=n(93433),ee=n(87757),te=n.n(ee),ne=n(84540),ie=n(28214),re=n(15022),oe=n(83312),ae=n(55585),se=n(51334),ue=n(72611);!function(e){e[e.API=0]="API",e[e.USER=1]="USER"}($||($={}));var le=n(9696),ce=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},de=function(e,t){return function(n,i){t(n,i,e)}},he=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},fe=function(){function e(t){(0,F.Z)(this,e),this._commandService=t}return(0,j.Z)(e,[{key:"open",value:function(e,t){return he(this,void 0,void 0,te().mark((function n(){var i,r;return te().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((0,le.xn)(e,ae.lg.command)){n.next=2;break}return n.abrupt("return",!1);case 2:if(null===t||void 0===t?void 0:t.allowCommands){n.next=4;break}return n.abrupt("return",!0);case 4:"string"===typeof e&&(e=W.o.parse(e)),r=[];try{r=(0,oe.Q)(decodeURIComponent(e.query))}catch(Ze){try{r=(0,oe.Q)(e.query)}catch(o){}}return Array.isArray(r)||(r=[r]),n.next=10,(i=this._commandService).executeCommand.apply(i,[e.path].concat((0,J.Z)(r)));case 10:return n.abrupt("return",!0);case 11:case"end":return n.stop()}}),n,this)})))}}]),e}();fe=ce([de(0,ue.H)],fe);var pe=function(){function e(t){(0,F.Z)(this,e),this._editorService=t}return(0,j.Z)(e,[{key:"open",value:function(e,t){return he(this,void 0,void 0,te().mark((function n(){var i,r;return te().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return"string"===typeof e&&(e=W.o.parse(e)),i=void 0,(r=/^L?(\d+)(?:,(\d+))?/.exec(e.fragment))&&(i={startLineNumber:parseInt(r[1]),startColumn:r[2]?parseInt(r[2]):1},e=e.with({fragment:""})),e.scheme===ae.lg.file&&(e=(0,se.AH)(e)),n.next=7,this._editorService.openCodeEditor({resource:e,options:Object.assign({selection:i,context:(null===t||void 0===t?void 0:t.fromUserGesture)?$.USER:$.API},null===t||void 0===t?void 0:t.editorOptions)},this._editorService.getFocusedCodeEditor(),null===t||void 0===t?void 0:t.openToSide);case 7:return n.abrupt("return",!0);case 8:case"end":return n.stop()}}),n,this)})))}}]),e}();pe=ce([de(0,Q.$)],pe);var ge=function(){function e(t,n){var i=this;(0,F.Z)(this,e),this._openers=new ie.S,this._validators=new ie.S,this._resolvers=new ie.S,this._resolvedUriTargets=new re.Y9((function(e){return e.with({path:null,fragment:null,query:null}).toString()})),this._externalOpeners=new ie.S,this._defaultExternalOpener={openExternal:function(e){return he(i,void 0,void 0,te().mark((function t(){return te().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(0,le.xn)(e,ae.lg.http)||(0,le.xn)(e,ae.lg.https)?ne.windowOpenNoOpener(e):window.location.href=e,t.abrupt("return",!0);case 2:case"end":return t.stop()}}),t)})))}},this._openers.push({open:function(e,t){return he(i,void 0,void 0,te().mark((function n(){return te().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!((null===t||void 0===t?void 0:t.openExternal)||(0,le.xn)(e,ae.lg.mailto)||(0,le.xn)(e,ae.lg.http)||(0,le.xn)(e,ae.lg.https))){n.next=4;break}return n.next=3,this._doOpenExternal(e,t);case 3:return n.abrupt("return",!0);case 4:return n.abrupt("return",!1);case 5:case"end":return n.stop()}}),n,this)})))}}),this._openers.push(new fe(n)),this._openers.push(new pe(t))}return(0,j.Z)(e,[{key:"registerOpener",value:function(e){return{dispose:this._openers.unshift(e)}}},{key:"registerValidator",value:function(e){return{dispose:this._validators.push(e)}}},{key:"registerExternalUriResolver",value:function(e){return{dispose:this._resolvers.push(e)}}},{key:"setDefaultExternalOpener",value:function(e){this._defaultExternalOpener=e}},{key:"registerExternalOpener",value:function(e){return{dispose:this._externalOpeners.push(e)}}},{key:"open",value:function(e,t){var n;return he(this,void 0,void 0,te().mark((function i(){var r,o,a,s,u,l,c,d;return te().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:r="string"===typeof e?W.o.parse(e):e,o=null!==(n=this._resolvedUriTargets.get(r))&&void 0!==n?n:e,a=(0,X.Z)(this._validators),i.prev=3,a.s();case 5:if((s=a.n()).done){i.next=13;break}return u=s.value,i.next=9,u.shouldOpen(o);case 9:if(i.sent){i.next=11;break}return i.abrupt("return",!1);case 11:i.next=5;break;case 13:i.next=18;break;case 15:i.prev=15,i.t0=i.catch(3),a.e(i.t0);case 18:return i.prev=18,a.f(),i.finish(18);case 21:l=(0,X.Z)(this._openers),i.prev=22,l.s();case 24:if((c=l.n()).done){i.next=33;break}return d=c.value,i.next=28,d.open(e,t);case 28:if(!i.sent){i.next=31;break}return i.abrupt("return",!0);case 31:i.next=24;break;case 33:i.next=38;break;case 35:i.prev=35,i.t1=i.catch(22),l.e(i.t1);case 38:return i.prev=38,l.f(),i.finish(38);case 41:return i.abrupt("return",!1);case 42:case"end":return i.stop()}}),i,this,[[3,15,18,21],[22,35,38,41]])})))}},{key:"resolveExternalUri",value:function(e,t){return he(this,void 0,void 0,te().mark((function n(){var i,r,o,a;return te().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:i=(0,X.Z)(this._resolvers),n.prev=1,i.s();case 3:if((r=i.n()).done){n.next=13;break}return o=r.value,n.next=7,o.resolveExternalUri(e,t);case 7:if(!(a=n.sent)){n.next=11;break}return this._resolvedUriTargets.has(a.resolved)||this._resolvedUriTargets.set(a.resolved,e),n.abrupt("return",a);case 11:n.next=3;break;case 13:n.next=18;break;case 15:n.prev=15,n.t0=n.catch(1),i.e(n.t0);case 18:return n.prev=18,i.f(),n.finish(18);case 21:return n.abrupt("return",{resolved:e,dispose:function(){}});case 22:case"end":return n.stop()}}),n,this,[[1,15,18,21]])})))}},{key:"_doOpenExternal",value:function(e,t){return he(this,void 0,void 0,te().mark((function n(){var i,r,o,a,s,u,l,c;return te().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i="string"===typeof e?W.o.parse(e):e,n.next=3,this.resolveExternalUri(i,t);case 3:if(r=n.sent,o=r.resolved,a="string"===typeof e&&i.toString()===o.toString()?e:encodeURI(o.toString(!0)),!(null===t||void 0===t?void 0:t.allowContributedOpeners)){n.next=28;break}s="string"===typeof(null===t||void 0===t?void 0:t.allowContributedOpeners)?null===t||void 0===t?void 0:t.allowContributedOpeners:void 0,u=(0,X.Z)(this._externalOpeners),n.prev=9,u.s();case 11:if((l=u.n()).done){n.next=20;break}return c=l.value,n.next=15,c.openExternal(a,{sourceUri:i,preferredOpenerId:s},H.T.None);case 15:if(!n.sent){n.next=18;break}return n.abrupt("return",!0);case 18:n.next=11;break;case 20:n.next=25;break;case 22:n.prev=22,n.t0=n.catch(9),u.e(n.t0);case 25:return n.prev=25,u.f(),n.finish(25);case 28:return n.abrupt("return",this._defaultExternalOpener.openExternal(a,{sourceUri:i},H.T.None));case 29:case"end":return n.stop()}}),n,this,[[9,22,25,28]])})))}},{key:"dispose",value:function(){this._validators.clear()}}]),e}();ge=ce([de(0,Q.$),de(1,ue.H)],ge);var ve=n(59180),me=n(28702),_e=n(30062),ye=n(46502),be=n(99404),we=n(59401),Ce=n(333),ke=n(49829),Se=n(44148),xe=n(60136),Le=n(43668),Ee=n(11752),De=n(61120),Ne=n(27997),Me=n(81626),Te=n(8729),Ie=n(30487),Oe=n(25941),Ae="$initialize",Re=!1;function Pe(e){Ie.$L&&(Re||(Re=!0,console.warn("Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq")),console.warn(e.message))}var Ze,Fe=function(){function e(t){(0,F.Z)(this,e),this._workerId=-1,this._handler=t,this._lastSentReq=0,this._pendingReplies=Object.create(null)}return(0,j.Z)(e,[{key:"setWorkerId",value:function(e){this._workerId=e}},{key:"sendMessage",value:function(e,t){var n=this,i=String(++this._lastSentReq);return new Promise((function(r,o){n._pendingReplies[i]={resolve:r,reject:o},n._send({vsWorker:n._workerId,req:i,method:e,args:t})}))}},{key:"handleMessage",value:function(e){e&&e.vsWorker&&(-1!==this._workerId&&e.vsWorker!==this._workerId||this._handleMessage(e))}},{key:"_handleMessage",value:function(e){var t=this;if(e.seq){var n=e;if(!this._pendingReplies[n.seq])return void console.warn("Got reply to unknown seq");var i=this._pendingReplies[n.seq];if(delete this._pendingReplies[n.seq],n.err){var r=n.err;return n.err.$isError&&((r=new Error).name=n.err.name,r.message=n.err.message,r.stack=n.err.stack),void i.reject(r)}i.resolve(n.res)}else{var o=e,a=o.req;this._handler.handleMessage(o.method,o.args).then((function(e){t._send({vsWorker:t._workerId,seq:a,res:e,err:void 0})}),(function(e){e.detail instanceof Error&&(e.detail=(0,Te.ri)(e.detail)),t._send({vsWorker:t._workerId,seq:a,res:void 0,err:(0,Te.ri)(e)})}))}}},{key:"_send",value:function(e){var t=[];if(e.req)for(var n=e,i=0;i<n.args.length;i++)n.args[i]instanceof ArrayBuffer&&t.push(n.args[i]);else{var r=e;r.res instanceof ArrayBuffer&&t.push(r.res)}this._handler.sendMessage(e,t)}}]),e}(),je=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r){var o;(0,F.Z)(this,n),o=t.call(this);var a=null;o._worker=o._register(e.create("vs/base/common/worker/simpleWorker",(function(e){o._protocol.handleMessage(e)}),(function(e){a&&a(e)}))),o._protocol=new Fe({sendMessage:function(e,t){o._worker.postMessage(e,t)},handleMessage:function(e,t){if("function"!==typeof r[e])return Promise.reject(new Error("Missing method "+e+" on main thread host."));try{return Promise.resolve(r[e].apply(r,t))}catch(n){return Promise.reject(n)}}}),o._protocol.setWorkerId(o._worker.getId());var s=null;"undefined"!==typeof self.require&&"function"===typeof self.require.getConfig?s=self.require.getConfig():"undefined"!==typeof self.requirejs&&(s=self.requirejs.s.contexts._.config);var u=Oe.$E(r);o._onModuleLoaded=o._protocol.sendMessage(Ae,[o._worker.getId(),JSON.parse(JSON.stringify(s)),i,u]);var l=function(e,t){return o._request(e,t)};return o._lazyProxy=new Promise((function(e,t){a=t,o._onModuleLoaded.then((function(t){e(Oe.IU(t,l))}),(function(e){t(e),o._onError("Worker failed to load "+i,e)}))})),o}return(0,j.Z)(n,[{key:"getProxyObject",value:function(){return this._lazyProxy}},{key:"_request",value:function(e,t){var n=this;return new Promise((function(i,r){n._onModuleLoaded.then((function(){n._protocol.sendMessage(e,t).then(i,r)}),r)}))}},{key:"_onError",value:function(e,t){console.error(e),console.info(t)}}]),n}(Me.JT);var He=null===(Ze=window.trustedTypes)||void 0===Ze?void 0:Ze.createPolicy("defaultWorkerFactory",{createScriptURL:function(e){return e}});var Be=function(){function e(t,n,i,r,o){(0,F.Z)(this,e),this.id=n;var a=function(e,t){if(Ie.li.MonacoEnvironment){if("function"===typeof Ie.li.MonacoEnvironment.getWorker)return Ie.li.MonacoEnvironment.getWorker(e,t);if("function"===typeof Ie.li.MonacoEnvironment.getWorkerUrl){var n=Ie.li.MonacoEnvironment.getWorkerUrl(e,t);return new Worker(He?He.createScriptURL(n):n,{name:t})}}throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}("workerMain.js",i);"function"===typeof a.then?this.worker=a:this.worker=Promise.resolve(a),this.postMessage(t,[]),this.worker.then((function(e){e.onmessage=function(e){r(e.data)},e.onmessageerror=o,"function"===typeof e.addEventListener&&e.addEventListener("error",o)}))}return(0,j.Z)(e,[{key:"getId",value:function(){return this.id}},{key:"postMessage",value:function(e,t){this.worker&&this.worker.then((function(n){return n.postMessage(e,t)}))}},{key:"dispose",value:function(){this.worker&&this.worker.then((function(e){return e.terminate()})),this.worker=null}}]),e}(),ze=function(){function e(t){(0,F.Z)(this,e),this._label=t,this._webWorkerFailedBeforeError=!1}return(0,j.Z)(e,[{key:"create",value:function(t,n,i){var r=this,o=++e.LAST_WORKER_ID;if(this._webWorkerFailedBeforeError)throw this._webWorkerFailedBeforeError;return new Be(t,o,this._label||"anonymous"+o,n,(function(e){Pe(e),r._webWorkerFailedBeforeError=e,i(e)}))}}]),e}();ze.LAST_WORKER_ID=0;var We=n(65262),Ve=n(4942),Ye=n(95676),Ue=n(51747),Ke=3;function qe(e,t,n,i){return new Ye.Hs(e,t,n).ComputeDiff(i)}var Ge=function(){function e(t){(0,F.Z)(this,e);for(var n=[],i=[],r=0,o=t.length;r<o;r++)n[r]=et(t[r],1),i[r]=tt(t[r],1);this.lines=t,this._startColumns=n,this._endColumns=i}return(0,j.Z)(e,[{key:"getElements",value:function(){for(var e=[],t=0,n=this.lines.length;t<n;t++)e[t]=this.lines[t].substring(this._startColumns[t]-1,this._endColumns[t]-1);return e}},{key:"getStartLineNumber",value:function(e){return e+1}},{key:"getEndLineNumber",value:function(e){return e+1}},{key:"createCharSequence",value:function(e,t,n){for(var i=[],r=[],o=[],a=0,s=t;s<=n;s++)for(var u=this.lines[s],l=e?this._startColumns[s]:1,c=e?this._endColumns[s]:u.length+1,d=l;d<c;d++)i[a]=u.charCodeAt(d-1),r[a]=s+1,o[a]=d,a++;return new $e(i,r,o)}}]),e}(),$e=function(){function e(t,n,i){(0,F.Z)(this,e),this._charCodes=t,this._lineNumbers=n,this._columns=i}return(0,j.Z)(e,[{key:"getElements",value:function(){return this._charCodes}},{key:"getStartLineNumber",value:function(e){return this._lineNumbers[e]}},{key:"getStartColumn",value:function(e){return this._columns[e]}},{key:"getEndLineNumber",value:function(e){return this._lineNumbers[e]}},{key:"getEndColumn",value:function(e){return this._columns[e]+1}}]),e}(),Qe=function(){function e(t,n,i,r,o,a,s,u){(0,F.Z)(this,e),this.originalStartLineNumber=t,this.originalStartColumn=n,this.originalEndLineNumber=i,this.originalEndColumn=r,this.modifiedStartLineNumber=o,this.modifiedStartColumn=a,this.modifiedEndLineNumber=s,this.modifiedEndColumn=u}return(0,j.Z)(e,null,[{key:"createFromDiffChange",value:function(t,n,i){var r,o,a,s,u,l,c,d;return 0===t.originalLength?(r=0,o=0,a=0,s=0):(r=n.getStartLineNumber(t.originalStart),o=n.getStartColumn(t.originalStart),a=n.getEndLineNumber(t.originalStart+t.originalLength-1),s=n.getEndColumn(t.originalStart+t.originalLength-1)),0===t.modifiedLength?(u=0,l=0,c=0,d=0):(u=i.getStartLineNumber(t.modifiedStart),l=i.getStartColumn(t.modifiedStart),c=i.getEndLineNumber(t.modifiedStart+t.modifiedLength-1),d=i.getEndColumn(t.modifiedStart+t.modifiedLength-1)),new e(r,o,a,s,u,l,c,d)}}]),e}();var Xe=function(){function e(t,n,i,r,o){(0,F.Z)(this,e),this.originalStartLineNumber=t,this.originalEndLineNumber=n,this.modifiedStartLineNumber=i,this.modifiedEndLineNumber=r,this.charChanges=o}return(0,j.Z)(e,null,[{key:"createFromDiffResult",value:function(t,n,i,r,o,a,s){var u,l,c,d,h=void 0;if(0===n.originalLength?(u=i.getStartLineNumber(n.originalStart)-1,l=0):(u=i.getStartLineNumber(n.originalStart),l=i.getEndLineNumber(n.originalStart+n.originalLength-1)),0===n.modifiedLength?(c=r.getStartLineNumber(n.modifiedStart)-1,d=0):(c=r.getStartLineNumber(n.modifiedStart),d=r.getEndLineNumber(n.modifiedStart+n.modifiedLength-1)),a&&n.originalLength>0&&n.originalLength<20&&n.modifiedLength>0&&n.modifiedLength<20&&o()){var f=i.createCharSequence(t,n.originalStart,n.originalStart+n.originalLength-1),p=r.createCharSequence(t,n.modifiedStart,n.modifiedStart+n.modifiedLength-1),g=qe(f,p,o,!0).changes;s&&(g=function(e){if(e.length<=1)return e;for(var t=[e[0]],n=t[0],i=1,r=e.length;i<r;i++){var o=e[i],a=o.originalStart-(n.originalStart+n.originalLength),s=o.modifiedStart-(n.modifiedStart+n.modifiedLength);Math.min(a,s)<Ke?(n.originalLength=o.originalStart+o.originalLength-n.originalStart,n.modifiedLength=o.modifiedStart+o.modifiedLength-n.modifiedStart):(t.push(o),n=o)}return t}(g)),h=[];for(var v=0,m=g.length;v<m;v++)h.push(Qe.createFromDiffChange(g[v],f,p))}return new e(u,l,c,d,h)}}]),e}(),Je=function(){function e(t,n,i){(0,F.Z)(this,e),this.shouldComputeCharChanges=i.shouldComputeCharChanges,this.shouldPostProcessCharChanges=i.shouldPostProcessCharChanges,this.shouldIgnoreTrimWhitespace=i.shouldIgnoreTrimWhitespace,this.shouldMakePrettyDiff=i.shouldMakePrettyDiff,this.originalLines=t,this.modifiedLines=n,this.original=new Ge(t),this.modified=new Ge(n),this.continueLineDiff=nt(i.maxComputationTime),this.continueCharDiff=nt(0===i.maxComputationTime?0:Math.min(i.maxComputationTime,5e3))}return(0,j.Z)(e,[{key:"computeDiff",value:function(){if(1===this.original.lines.length&&0===this.original.lines[0].length)return 1===this.modified.lines.length&&0===this.modified.lines[0].length?{quitEarly:!1,changes:[]}:{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:1,modifiedStartLineNumber:1,modifiedEndLineNumber:this.modified.lines.length,charChanges:[{modifiedEndColumn:0,modifiedEndLineNumber:0,modifiedStartColumn:0,modifiedStartLineNumber:0,originalEndColumn:0,originalEndLineNumber:0,originalStartColumn:0,originalStartLineNumber:0}]}]};if(1===this.modified.lines.length&&0===this.modified.lines[0].length)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:this.original.lines.length,modifiedStartLineNumber:1,modifiedEndLineNumber:1,charChanges:[{modifiedEndColumn:0,modifiedEndLineNumber:0,modifiedStartColumn:0,modifiedStartLineNumber:0,originalEndColumn:0,originalEndLineNumber:0,originalStartColumn:0,originalStartLineNumber:0}]}]};var e=qe(this.original,this.modified,this.continueLineDiff,this.shouldMakePrettyDiff),t=e.changes,n=e.quitEarly;if(this.shouldIgnoreTrimWhitespace){for(var i=[],r=0,o=t.length;r<o;r++)i.push(Xe.createFromDiffResult(this.shouldIgnoreTrimWhitespace,t[r],this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges));return{quitEarly:n,changes:i}}for(var a=[],s=0,u=0,l=-1,c=t.length;l<c;l++){for(var d=l+1<c?t[l+1]:null,h=d?d.originalStart:this.originalLines.length,f=d?d.modifiedStart:this.modifiedLines.length;s<h&&u<f;){var p=this.originalLines[s],g=this.modifiedLines[u];if(p!==g){for(var v=et(p,1),m=et(g,1);v>1&&m>1;){if(p.charCodeAt(v-2)!==g.charCodeAt(m-2))break;v--,m--}(v>1||m>1)&&this._pushTrimWhitespaceCharChange(a,s+1,1,v,u+1,1,m);for(var _=tt(p,1),y=tt(g,1),b=p.length+1,w=g.length+1;_<b&&y<w;){if(p.charCodeAt(_-1)!==p.charCodeAt(y-1))break;_++,y++}(_<b||y<w)&&this._pushTrimWhitespaceCharChange(a,s+1,_,b,u+1,y,w)}s++,u++}d&&(a.push(Xe.createFromDiffResult(this.shouldIgnoreTrimWhitespace,d,this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges)),s+=d.originalLength,u+=d.modifiedLength)}return{quitEarly:n,changes:a}}},{key:"_pushTrimWhitespaceCharChange",value:function(e,t,n,i,r,o,a){if(!this._mergeTrimWhitespaceCharChange(e,t,n,i,r,o,a)){var s=void 0;this.shouldComputeCharChanges&&(s=[new Qe(t,n,t,i,r,o,r,a)]),e.push(new Xe(t,t,r,r,s))}}},{key:"_mergeTrimWhitespaceCharChange",value:function(e,t,n,i,r,o,a){var s=e.length;if(0===s)return!1;var u=e[s-1];return 0!==u.originalEndLineNumber&&0!==u.modifiedEndLineNumber&&(u.originalEndLineNumber+1===t&&u.modifiedEndLineNumber+1===r&&(u.originalEndLineNumber=t,u.modifiedEndLineNumber=r,this.shouldComputeCharChanges&&u.charChanges&&u.charChanges.push(new Qe(t,n,t,i,r,o,r,a)),!0))}}]),e}();function et(e,t){var n=Ue.LC(e);return-1===n?t:n+1}function tt(e,t){var n=Ue.ow(e);return-1===n?t:n+2}function nt(e){if(0===e)return function(){return!0};var t=Date.now();return function(){return Date.now()-t<e}}var it=n(21043),rt=function(){function e(t,n,i,r){(0,F.Z)(this,e),this._uri=t,this._lines=n,this._eol=i,this._versionId=r,this._lineStarts=null,this._cachedTextValue=null}return(0,j.Z)(e,[{key:"dispose",value:function(){this._lines.length=0}},{key:"version",get:function(){return this._versionId}},{key:"getText",value:function(){return null===this._cachedTextValue&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}},{key:"onEvents",value:function(e){e.eol&&e.eol!==this._eol&&(this._eol=e.eol,this._lineStarts=null);var t,n=e.changes,i=(0,X.Z)(n);try{for(i.s();!(t=i.n()).done;){var r=t.value;this._acceptDeleteRange(r.range),this._acceptInsertText(new V.L(r.range.startLineNumber,r.range.startColumn),r.text)}}catch(o){i.e(o)}finally{i.f()}this._versionId=e.versionId,this._cachedTextValue=null}},{key:"_ensureLineStarts",value:function(){if(!this._lineStarts){for(var e=this._eol.length,t=this._lines.length,n=new Uint32Array(t),i=0;i<t;i++)n[i]=this._lines[i].length+e;this._lineStarts=new it.o(n)}}},{key:"_setLineText",value:function(e,t){this._lines[e]=t,this._lineStarts&&this._lineStarts.changeValue(e,this._lines[e].length+this._eol.length)}},{key:"_acceptDeleteRange",value:function(e){if(e.startLineNumber!==e.endLineNumber)this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.endLineNumber-1].substring(e.endColumn-1)),this._lines.splice(e.startLineNumber,e.endLineNumber-e.startLineNumber),this._lineStarts&&this._lineStarts.removeValues(e.startLineNumber,e.endLineNumber-e.startLineNumber);else{if(e.startColumn===e.endColumn)return;this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.startLineNumber-1].substring(e.endColumn-1))}}},{key:"_acceptInsertText",value:function(e,t){if(0!==t.length){var n=(0,Ue.uq)(t);if(1!==n.length){n[n.length-1]+=this._lines[e.lineNumber-1].substring(e.column-1),this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+n[0]);for(var i=new Uint32Array(n.length-1),r=1;r<n.length;r++)this._lines.splice(e.lineNumber+r-1,0,n[r]),i[r-1]=n[r].length+this._eol.length;this._lineStarts&&this._lineStarts.insertValues(e.lineNumber,i)}else this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+n[0]+this._lines[e.lineNumber-1].substring(e.column-1))}}}]),e}(),ot=n(43717),at=n(29439),st=n(84516),ut=function(){function e(t,n,i){(0,F.Z)(this,e);for(var r=new Uint8Array(t*n),o=0,a=t*n;o<a;o++)r[o]=i;this._data=r,this.rows=t,this.cols=n}return(0,j.Z)(e,[{key:"get",value:function(e,t){return this._data[e*this.cols+t]}},{key:"set",value:function(e,t,n){this._data[e*this.cols+t]=n}}]),e}(),lt=function(){function e(t){(0,F.Z)(this,e);for(var n=0,i=0,r=0,o=t.length;r<o;r++){var a=(0,at.Z)(t[r],3),s=a[0],u=a[1],l=a[2];u>n&&(n=u),s>i&&(i=s),l>i&&(i=l)}n++,i++;for(var c=new ut(i,n,0),d=0,h=t.length;d<h;d++){var f=(0,at.Z)(t[d],3),p=f[0],g=f[1],v=f[2];c.set(p,g,v)}this._states=c,this._maxCharCode=n}return(0,j.Z)(e,[{key:"nextState",value:function(e,t){return t<0||t>=this._maxCharCode?0:this._states.get(e,t)}}]),e}(),ct=null;var dt=null;var ht=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,null,[{key:"_createLink",value:function(e,t,n,i,r){var o=r-1;do{var a=t.charCodeAt(o);if(2!==e.get(a))break;o--}while(o>i);if(i>0){var s=t.charCodeAt(i-1),u=t.charCodeAt(o);(40===s&&41===u||91===s&&93===u||123===s&&125===u)&&o--}return{range:{startLineNumber:n,startColumn:i+1,endLineNumber:n,endColumn:o+2},url:t.substring(i,o+1)}}},{key:"computeLinks",value:function(t){for(var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(null===ct&&(ct=new lt([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),ct),i=function(){if(null===dt){dt=new st.N(0);for(var e=" \t<>'\"\u3001\u3002\uff61\uff64\uff0c\uff0e\uff1a\uff1b\u2018\u201c\u3008\u300a\u300c\u300e\u3010\u3014\uff08\uff3b\uff5b\uff62\uff63\uff5d\uff3d\uff09\u3015\u3011\u300f\u300d\u300b\u3009\u201d\u2019\uff40\uff5e\u2026",t=0;t<e.length;t++)dt.set(e.charCodeAt(t),1);for(var n=0;n<".,;".length;n++)dt.set(".,;".charCodeAt(n),2)}return dt}(),r=[],o=1,a=t.getLineCount();o<=a;o++){for(var s=t.getLineContent(o),u=s.length,l=0,c=0,d=0,h=1,f=!1,p=!1,g=!1,v=!1;l<u;){var m=!1,_=s.charCodeAt(l);if(13===h){var y=void 0;switch(_){case 40:f=!0,y=0;break;case 41:y=f?0:1;break;case 91:g=!0,p=!0,y=0;break;case 93:g=!1,y=p?0:1;break;case 123:v=!0,y=0;break;case 125:y=v?0:1;break;case 39:y=34===d||96===d?0:1;break;case 34:y=39===d||96===d?0:1;break;case 96:y=39===d||34===d?0:1;break;case 42:y=42===d?1:0;break;case 124:y=124===d?1:0;break;case 32:y=g?0:1;break;default:y=i.get(_)}1===y&&(r.push(e._createLink(i,s,o,c,l)),m=!0)}else if(12===h){var b=void 0;91===_?(p=!0,b=0):b=i.get(_),1===b?m=!0:h=13}else 0===(h=n.nextState(h,_))&&(m=!0);m&&(h=1,f=!1,p=!1,v=!1,c=l+1,d=_),l++}13===h&&r.push(e._createLink(i,s,o,c,u))}return r}}]),e}();function ft(e){return e&&"function"===typeof e.getLineCount&&"function"===typeof e.getLineContent?ht.computeLinks(e):[]}var pt=function(){function e(){(0,F.Z)(this,e),this._defaultValueSet=[["true","false"],["True","False"],["Private","Public","Friend","ReadOnly","Partial","Protected","WriteOnly"],["public","protected","private"]]}return(0,j.Z)(e,[{key:"navigateValueSet",value:function(e,t,n,i,r){if(e&&t){var o=this.doNavigateValueSet(t,r);if(o)return{range:e,value:o}}if(n&&i){var a=this.doNavigateValueSet(i,r);if(a)return{range:n,value:a}}return null}},{key:"doNavigateValueSet",value:function(e,t){var n=this.numberReplace(e,t);return null!==n?n:this.textReplace(e,t)}},{key:"numberReplace",value:function(e,t){var n=Math.pow(10,e.length-(e.lastIndexOf(".")+1)),i=Number(e),r=parseFloat(e);return isNaN(i)||isNaN(r)||i!==r?null:0!==i||t?(i=Math.floor(i*n),i+=t?n:-n,String(i/n)):null}},{key:"textReplace",value:function(e,t){return this.valueSetsReplace(this._defaultValueSet,e,t)}},{key:"valueSetsReplace",value:function(e,t,n){for(var i=null,r=0,o=e.length;null===i&&r<o;r++)i=this.valueSetReplace(e[r],t,n);return i}},{key:"valueSetReplace",value:function(e,t,n){var i=e.indexOf(t);return i>=0?((i+=n?1:-1)<0?i=e.length-1:i%=e.length,e[i]):null}}]),e}();pt.INSTANCE=new pt;var gt=n(96257),vt=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},mt=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(){return(0,F.Z)(this,n),t.apply(this,arguments)}return(0,j.Z)(n,[{key:"uri",get:function(){return this._uri}},{key:"eol",get:function(){return this._eol}},{key:"getValue",value:function(){return this.getText()}},{key:"getLinesContent",value:function(){return this._lines.slice(0)}},{key:"getLineCount",value:function(){return this._lines.length}},{key:"getLineContent",value:function(e){return this._lines[e-1]}},{key:"getWordAtPosition",value:function(e,t){var n=(0,ot.t2)(e.column,(0,ot.eq)(t),this._lines[e.lineNumber-1],0);return n?new Y.e(e.lineNumber,n.startColumn,e.lineNumber,n.endColumn):null}},{key:"words",value:function(e){var t=this._lines,n=this._wordenize.bind(this),i=0,r="",o=0,a=[];return(0,Ve.Z)({},Symbol.iterator,te().mark((function s(){var u;return te().wrap((function(s){for(;;)switch(s.prev=s.next){case 0:if(!(o<a.length)){s.next=8;break}return u=r.substring(a[o].start,a[o].end),o+=1,s.next=6,u;case 6:s.next=16;break;case 8:if(!(i<t.length)){s.next=15;break}r=t[i],a=n(r,e),o=0,i+=1,s.next=16;break;case 15:return s.abrupt("break",18);case 16:s.next=0;break;case 18:case"end":return s.stop()}}),s)})))}},{key:"getLineWords",value:function(e,t){var n,i=this._lines[e-1],r=this._wordenize(i,t),o=[],a=(0,X.Z)(r);try{for(a.s();!(n=a.n()).done;){var s=n.value;o.push({word:i.substring(s.start,s.end),startColumn:s.start+1,endColumn:s.end+1})}}catch(u){a.e(u)}finally{a.f()}return o}},{key:"_wordenize",value:function(e,t){var n,i=[];for(t.lastIndex=0;(n=t.exec(e))&&0!==n[0].length;)i.push({start:n.index,end:n.index+n[0].length});return i}},{key:"getValueInRange",value:function(e){if((e=this._validateRange(e)).startLineNumber===e.endLineNumber)return this._lines[e.startLineNumber-1].substring(e.startColumn-1,e.endColumn-1);var t=this._eol,n=e.startLineNumber-1,i=e.endLineNumber-1,r=[];r.push(this._lines[n].substring(e.startColumn-1));for(var o=n+1;o<i;o++)r.push(this._lines[o]);return r.push(this._lines[i].substring(0,e.endColumn-1)),r.join(t)}},{key:"offsetAt",value:function(e){return e=this._validatePosition(e),this._ensureLineStarts(),this._lineStarts.getAccumulatedValue(e.lineNumber-2)+(e.column-1)}},{key:"positionAt",value:function(e){e=Math.floor(e),e=Math.max(0,e),this._ensureLineStarts();var t=this._lineStarts.getIndexOf(e),n=this._lines[t.index].length;return{lineNumber:1+t.index,column:1+Math.min(t.remainder,n)}}},{key:"_validateRange",value:function(e){var t=this._validatePosition({lineNumber:e.startLineNumber,column:e.startColumn}),n=this._validatePosition({lineNumber:e.endLineNumber,column:e.endColumn});return t.lineNumber!==e.startLineNumber||t.column!==e.startColumn||n.lineNumber!==e.endLineNumber||n.column!==e.endColumn?{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:n.lineNumber,endColumn:n.column}:e}},{key:"_validatePosition",value:function(e){if(!V.L.isIPosition(e))throw new Error("bad position");var t=e.lineNumber,n=e.column,i=!1;if(t<1)t=1,n=1,i=!0;else if(t>this._lines.length)t=this._lines.length,n=this._lines[t-1].length+1,i=!0;else{var r=this._lines[t-1].length+1;n<1?(n=1,i=!0):n>r&&(n=r,i=!0)}return i?{lineNumber:t,column:n}:e}}]),n}(rt),_t=function(){function e(t,n){(0,F.Z)(this,e),this._host=t,this._models=Object.create(null),this._foreignModuleFactory=n,this._foreignModule=null}return(0,j.Z)(e,[{key:"dispose",value:function(){this._models=Object.create(null)}},{key:"_getModel",value:function(e){return this._models[e]}},{key:"_getModels",value:function(){var e=this,t=[];return Object.keys(this._models).forEach((function(n){return t.push(e._models[n])})),t}},{key:"acceptNewModel",value:function(e){this._models[e.url]=new mt(W.o.parse(e.url),e.lines,e.EOL,e.versionId)}},{key:"acceptModelChanged",value:function(e,t){this._models[e]&&this._models[e].onEvents(t)}},{key:"acceptRemovedModel",value:function(e){this._models[e]&&delete this._models[e]}},{key:"computeDiff",value:function(e,t,n,i){return vt(this,void 0,void 0,te().mark((function r(){var o,a,s,u,l,c,d;return te().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(o=this._getModel(e),a=this._getModel(t),o&&a){r.next=4;break}return r.abrupt("return",null);case 4:return s=o.getLinesContent(),u=a.getLinesContent(),l=new Je(s,u,{shouldComputeCharChanges:!0,shouldPostProcessCharChanges:!0,shouldIgnoreTrimWhitespace:n,shouldMakePrettyDiff:!0,maxComputationTime:i}),c=l.computeDiff(),d=!(c.changes.length>0)&&this._modelsAreIdentical(o,a),r.abrupt("return",{quitEarly:c.quitEarly,identical:d,changes:c.changes});case 10:case"end":return r.stop()}}),r,this)})))}},{key:"_modelsAreIdentical",value:function(e,t){var n=e.getLineCount();if(n!==t.getLineCount())return!1;for(var i=1;i<=n;i++){if(e.getLineContent(i)!==t.getLineContent(i))return!1}return!0}},{key:"computeMoreMinimalEdits",value:function(t,n){return vt(this,void 0,void 0,te().mark((function i(){var r,o,a,s,u,l,c,d,h,f,p,g,v,m,_,y,b,w;return te().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(r=this._getModel(t)){i.next=3;break}return i.abrupt("return",n);case 3:o=[],a=void 0,n=n.slice(0).sort((function(e,t){return e.range&&t.range?Y.e.compareRangesUsingStarts(e.range,t.range):(e.range?0:1)-(t.range?0:1)})),s=(0,X.Z)(n),i.prev=7,s.s();case 9:if((u=s.n()).done){i.next=27;break}if(l=u.value,c=l.range,d=l.text,"number"===typeof(h=l.eol)&&(a=h),!Y.e.isEmpty(c)||d){i.next=14;break}return i.abrupt("continue",25);case 14:if(f=r.getValueInRange(c),d=d.replace(/\r\n|\n|\r/g,r.eol),f!==d){i.next=18;break}return i.abrupt("continue",25);case 18:if(!(Math.max(d.length,f.length)>e._diffLimit)){i.next=21;break}return o.push({range:c,text:d}),i.abrupt("continue",25);case 21:p=(0,Ye.a$)(f,d,!1),g=r.offsetAt(Y.e.lift(c).getStartPosition()),v=(0,X.Z)(p);try{for(v.s();!(m=v.n()).done;)_=m.value,y=r.positionAt(g+_.originalStart),b=r.positionAt(g+_.originalStart+_.originalLength),w={text:d.substr(_.modifiedStart,_.modifiedLength),range:{startLineNumber:y.lineNumber,startColumn:y.column,endLineNumber:b.lineNumber,endColumn:b.column}},r.getValueInRange(w.range)!==w.text&&o.push(w)}catch(C){v.e(C)}finally{v.f()}case 25:i.next=9;break;case 27:i.next=32;break;case 29:i.prev=29,i.t0=i.catch(7),s.e(i.t0);case 32:return i.prev=32,s.f(),i.finish(32);case 35:return"number"===typeof a&&o.push({eol:a,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),i.abrupt("return",o);case 37:case"end":return i.stop()}}),i,this,[[7,29,32,35]])})))}},{key:"computeLinks",value:function(e){return vt(this,void 0,void 0,te().mark((function t(){var n;return te().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=this._getModel(e)){t.next=3;break}return t.abrupt("return",null);case 3:return t.abrupt("return",ft(n));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"textualSuggest",value:function(t,n,i,r){return vt(this,void 0,void 0,te().mark((function o(){var a,s,u,l,c,d,h,f,p,g;return te().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:a=new gt.G(!0),s=new RegExp(i,r),u=new Set,l=(0,X.Z)(t),o.prev=4,l.s();case 6:if((c=l.n()).done){o.next=33;break}if(d=c.value,h=this._getModel(d)){o.next=11;break}return o.abrupt("continue",31);case 11:f=(0,X.Z)(h.words(s)),o.prev=12,f.s();case 14:if((p=f.n()).done){o.next=23;break}if((g=p.value)!==n&&isNaN(Number(g))){o.next=18;break}return o.abrupt("continue",21);case 18:if(u.add(g),!(u.size>e._suggestionsLimit)){o.next=21;break}return o.abrupt("break",33);case 21:o.next=14;break;case 23:o.next=28;break;case 25:o.prev=25,o.t0=o.catch(12),f.e(o.t0);case 28:return o.prev=28,f.f(),o.finish(28);case 31:o.next=6;break;case 33:o.next=38;break;case 35:o.prev=35,o.t1=o.catch(4),l.e(o.t1);case 38:return o.prev=38,l.f(),o.finish(38);case 41:return o.abrupt("return",{words:Array.from(u),duration:a.elapsed()});case 42:case"end":return o.stop()}}),o,this,[[4,35,38,41],[12,25,28,31]])})))}},{key:"computeWordRanges",value:function(e,t,n,i){return vt(this,void 0,void 0,te().mark((function r(){var o,a,s,u,l,c,d,h,f;return te().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(o=this._getModel(e)){r.next=3;break}return r.abrupt("return",Object.create(null));case 3:a=new RegExp(n,i),s=Object.create(null),u=t.startLineNumber;case 6:if(!(u<t.endLineNumber)){r.next=31;break}l=o.getLineWords(u,a),c=(0,X.Z)(l),r.prev=9,c.s();case 11:if((d=c.n()).done){r.next=20;break}if(h=d.value,isNaN(Number(h.word))){r.next=15;break}return r.abrupt("continue",18);case 15:(f=s[h.word])||(f=[],s[h.word]=f),f.push({startLineNumber:u,startColumn:h.startColumn,endLineNumber:u,endColumn:h.endColumn});case 18:r.next=11;break;case 20:r.next=25;break;case 22:r.prev=22,r.t0=r.catch(9),c.e(r.t0);case 25:return r.prev=25,c.f(),r.finish(25);case 28:u++,r.next=6;break;case 31:return r.abrupt("return",s);case 32:case"end":return r.stop()}}),r,this,[[9,22,25,28]])})))}},{key:"navigateValueSet",value:function(e,t,n,i,r){return vt(this,void 0,void 0,te().mark((function o(){var a,s,u,l,c,d;return te().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(a=this._getModel(e)){o.next=3;break}return o.abrupt("return",null);case 3:if(s=new RegExp(i,r),t.startColumn===t.endColumn&&(t={startLineNumber:t.startLineNumber,startColumn:t.startColumn,endLineNumber:t.endLineNumber,endColumn:t.endColumn+1}),u=a.getValueInRange(t),l=a.getWordAtPosition({lineNumber:t.startLineNumber,column:t.startColumn},s)){o.next=9;break}return o.abrupt("return",null);case 9:return c=a.getValueInRange(l),d=pt.INSTANCE.navigateValueSet(t,u,l,c,n),o.abrupt("return",d);case 12:case"end":return o.stop()}}),o,this)})))}},{key:"loadForeignModule",value:function(e,t,n){var i=this,r={host:Oe.IU(n,(function(e,t){return i._host.fhr(e,t)})),getMirrorModels:function(){return i._getModels()}};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(r,t),Promise.resolve(Oe.$E(this._foreignModule))):Promise.reject(new Error("Unexpected usage"))}},{key:"fmr",value:function(e,t){if(!this._foreignModule||"function"!==typeof this._foreignModule[e])return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._foreignModule[e].apply(this._foreignModule,t))}catch(n){return Promise.reject(n)}}}]),e}();_t._diffLimit=1e5,_t._suggestionsLimit=1e4,"function"===typeof importScripts&&(Ie.li.monaco=G());var yt=n(49076),bt=n(45862),wt=n(49396),Ct=n(19974),kt=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},St=function(e,t){return function(n,i){t(n,i,e)}},xt=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},Lt=6e4,Et=3e5;function Dt(e,t){var n=e.getModel(t);return!!n&&!n.isTooLargeForSyncing()}var Nt=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r){var o;return(0,F.Z)(this,n),(o=t.call(this))._modelService=e,o._workerManager=o._register(new Tt(o._modelService)),o._logService=r,o._register(be.pM.register("*",{provideLinks:function(e,t){return Dt(o._modelService,e.uri)?o._workerManager.withWorker().then((function(t){return t.computeLinks(e.uri)})).then((function(e){return e&&{links:e}})):Promise.resolve({links:[]})}})),o._register(be.KZ.register("*",new Mt(o._workerManager,i,o._modelService))),o}return(0,j.Z)(n,[{key:"dispose",value:function(){(0,Ee.Z)((0,De.Z)(n.prototype),"dispose",this).call(this)}},{key:"canComputeDiff",value:function(e,t){return Dt(this._modelService,e)&&Dt(this._modelService,t)}},{key:"computeDiff",value:function(e,t,n,i){return this._workerManager.withWorker().then((function(r){return r.computeDiff(e,t,n,i)}))}},{key:"computeMoreMinimalEdits",value:function(e,t){var n=this;if((0,wt.Of)(t)){if(!Dt(this._modelService,e))return Promise.resolve(t);var i=gt.G.create(!0),r=this._workerManager.withWorker().then((function(n){return n.computeMoreMinimalEdits(e,t)}));return r.finally((function(){return n._logService.trace("FORMAT#computeMoreMinimalEdits",e.toString(!0),i.elapsed())})),Promise.race([r,(0,Ne.Vs)(1e3).then((function(){return t}))])}return Promise.resolve(void 0)}},{key:"canNavigateValueSet",value:function(e){return Dt(this._modelService,e)}},{key:"navigateValueSet",value:function(e,t,n){return this._workerManager.withWorker().then((function(i){return i.navigateValueSet(e,t,n)}))}},{key:"canComputeWordRanges",value:function(e){return Dt(this._modelService,e)}},{key:"computeWordRanges",value:function(e,t){return this._workerManager.withWorker().then((function(n){return n.computeWordRanges(e,t)}))}}]),n}(Me.JT);Nt=kt([St(0,yt.q),St(1,bt.V),St(2,Ct.VZ)],Nt);var Mt=function(){function e(t,n,i){(0,F.Z)(this,e),this._debugDisplayName="wordbasedCompletions",this._workerManager=t,this._configurationService=n,this._modelService=i}return(0,j.Z)(e,[{key:"provideCompletionItems",value:function(e,t){return xt(this,void 0,void 0,te().mark((function n(){var i,r,o,a,s,u,l,c,d,h,f;return te().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((i=this._configurationService.getValue(e.uri,t,"editor")).wordBasedSuggestions){n.next=3;break}return n.abrupt("return",void 0);case 3:if(r=[],"currentDocument"!==i.wordBasedSuggestionsMode){n.next=8;break}Dt(this._modelService,e.uri)&&r.push(e.uri),n.next=26;break;case 8:o=(0,X.Z)(this._modelService.getModels()),n.prev=9,o.s();case 11:if((a=o.n()).done){n.next=18;break}if(s=a.value,Dt(this._modelService,s.uri)){n.next=15;break}return n.abrupt("continue",16);case 15:s===e?r.unshift(s.uri):"allDocuments"!==i.wordBasedSuggestionsMode&&s.getLanguageIdentifier().id!==e.getLanguageIdentifier().id||r.push(s.uri);case 16:n.next=11;break;case 18:n.next=23;break;case 20:n.prev=20,n.t0=n.catch(9),o.e(n.t0);case 23:return n.prev=23,o.f(),n.finish(23);case 26:if(0!==r.length){n.next=28;break}return n.abrupt("return",void 0);case 28:return u=We.zu.getWordDefinition(e.getLanguageIdentifier().id),l=e.getWordAtPosition(t),c=l?new Y.e(t.lineNumber,l.startColumn,t.lineNumber,l.endColumn):Y.e.fromPositions(t),d=c.setEndPosition(t.lineNumber,t.column),n.next=34,this._workerManager.withWorker();case 34:return h=n.sent,n.next=37,h.textualSuggest(r,null===l||void 0===l?void 0:l.word,u);case 37:if(f=n.sent){n.next=40;break}return n.abrupt("return",void 0);case 40:return n.abrupt("return",{duration:f.duration,suggestions:f.words.map((function(e){return{kind:18,label:e,insertText:e,range:{insert:d,replace:c}}}))});case 41:case"end":return n.stop()}}),n,this,[[9,20,23,26]])})))}}]),e}(),Tt=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e){var i;return(0,F.Z)(this,n),(i=t.call(this))._modelService=e,i._editorWorkerClient=null,i._lastWorkerUsedTime=(new Date).getTime(),i._register(new Ne.zh).cancelAndSet((function(){return i._checkStopIdleWorker()}),Math.round(Et/2)),i._register(i._modelService.onModelRemoved((function(e){return i._checkStopEmptyWorker()}))),i}return(0,j.Z)(n,[{key:"dispose",value:function(){this._editorWorkerClient&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null),(0,Ee.Z)((0,De.Z)(n.prototype),"dispose",this).call(this)}},{key:"_checkStopEmptyWorker",value:function(){this._editorWorkerClient&&(0===this._modelService.getModels().length&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null))}},{key:"_checkStopIdleWorker",value:function(){this._editorWorkerClient&&((new Date).getTime()-this._lastWorkerUsedTime>Et&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null))}},{key:"withWorker",value:function(){return this._lastWorkerUsedTime=(new Date).getTime(),this._editorWorkerClient||(this._editorWorkerClient=new Rt(this._modelService,!1,"editorWorkerService")),Promise.resolve(this._editorWorkerClient)}}]),n}(Me.JT),It=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r){var o;if((0,F.Z)(this,n),(o=t.call(this))._syncedModels=Object.create(null),o._syncedModelsLastUsedTime=Object.create(null),o._proxy=e,o._modelService=i,!r){var a=new Ne.zh;a.cancelAndSet((function(){return o._checkStopModelSync()}),Math.round(Lt/2)),o._register(a)}return o}return(0,j.Z)(n,[{key:"dispose",value:function(){for(var e in this._syncedModels)(0,Me.B9)(this._syncedModels[e]);this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),(0,Ee.Z)((0,De.Z)(n.prototype),"dispose",this).call(this)}},{key:"ensureSyncedResources",value:function(e){var t,n=(0,X.Z)(e);try{for(n.s();!(t=n.n()).done;){var i=t.value,r=i.toString();this._syncedModels[r]||this._beginModelSync(i),this._syncedModels[r]&&(this._syncedModelsLastUsedTime[r]=(new Date).getTime())}}catch(o){n.e(o)}finally{n.f()}}},{key:"_checkStopModelSync",value:function(){var e=(new Date).getTime(),t=[];for(var n in this._syncedModelsLastUsedTime){e-this._syncedModelsLastUsedTime[n]>Lt&&t.push(n)}for(var i=0,r=t;i<r.length;i++){var o=r[i];this._stopModelSync(o)}}},{key:"_beginModelSync",value:function(e){var t=this,n=this._modelService.getModel(e);if(n&&!n.isTooLargeForSyncing()){var i=e.toString();this._proxy.acceptNewModel({url:n.uri.toString(),lines:n.getLinesContent(),EOL:n.getEOL(),versionId:n.getVersionId()});var r=new Me.SL;r.add(n.onDidChangeContent((function(e){t._proxy.acceptModelChanged(i.toString(),e)}))),r.add(n.onWillDispose((function(){t._stopModelSync(i)}))),r.add((0,Me.OF)((function(){t._proxy.acceptRemovedModel(i)}))),this._syncedModels[i]=r}}},{key:"_stopModelSync",value:function(e){var t=this._syncedModels[e];delete this._syncedModels[e],delete this._syncedModelsLastUsedTime[e],(0,Me.B9)(t)}}]),n}(Me.JT),Ot=function(){function e(t){(0,F.Z)(this,e),this._instance=t,this._proxyObj=Promise.resolve(this._instance)}return(0,j.Z)(e,[{key:"dispose",value:function(){this._instance.dispose()}},{key:"getProxyObject",value:function(){return this._proxyObj}}]),e}(),At=function(){function e(t){(0,F.Z)(this,e),this._workerClient=t}return(0,j.Z)(e,[{key:"fhr",value:function(e,t){return this._workerClient.fhr(e,t)}}]),e}(),Rt=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r){var o;return(0,F.Z)(this,n),(o=t.call(this))._disposed=!1,o._modelService=e,o._keepIdleModels=i,o._workerFactory=new ze(r),o._worker=null,o._modelManager=null,o}return(0,j.Z)(n,[{key:"fhr",value:function(e,t){throw new Error("Not implemented!")}},{key:"_getOrCreateWorker",value:function(){if(!this._worker)try{this._worker=this._register(new je(this._workerFactory,"vs/editor/common/services/editorSimpleWorker",new At(this)))}catch(e){Pe(e),this._worker=new Ot(new _t(new At(this),null))}return this._worker}},{key:"_getProxy",value:function(){var e=this;return this._getOrCreateWorker().getProxyObject().then(void 0,(function(t){return Pe(t),e._worker=new Ot(new _t(new At(e),null)),e._getOrCreateWorker().getProxyObject()}))}},{key:"_getOrCreateModelManager",value:function(e){return this._modelManager||(this._modelManager=this._register(new It(e,this._modelService,this._keepIdleModels))),this._modelManager}},{key:"_withSyncedResources",value:function(e){var t=this;return this._disposed?Promise.reject((0,Te.F0)()):this._getProxy().then((function(n){return t._getOrCreateModelManager(n).ensureSyncedResources(e),n}))}},{key:"computeDiff",value:function(e,t,n,i){return this._withSyncedResources([e,t]).then((function(r){return r.computeDiff(e.toString(),t.toString(),n,i)}))}},{key:"computeMoreMinimalEdits",value:function(e,t){return this._withSyncedResources([e]).then((function(n){return n.computeMoreMinimalEdits(e.toString(),t)}))}},{key:"computeLinks",value:function(e){return this._withSyncedResources([e]).then((function(t){return t.computeLinks(e.toString())}))}},{key:"textualSuggest",value:function(e,t,n){return xt(this,void 0,void 0,te().mark((function i(){var r,o,a;return te().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._withSyncedResources(e);case 2:return r=i.sent,o=n.source,a=(0,Ue.mr)(n),i.abrupt("return",r.textualSuggest(e.map((function(e){return e.toString()})),t,o,a));case 6:case"end":return i.stop()}}),i,this)})))}},{key:"computeWordRanges",value:function(e,t){var n=this;return this._withSyncedResources([e]).then((function(i){var r=n._modelService.getModel(e);if(!r)return Promise.resolve(null);var o=We.zu.getWordDefinition(r.getLanguageIdentifier().id),a=o.source,s=(0,Ue.mr)(o);return i.computeWordRanges(e.toString(),t,a,s)}))}},{key:"navigateValueSet",value:function(e,t,n){var i=this;return this._withSyncedResources([e]).then((function(r){var o=i._modelService.getModel(e);if(!o)return null;var a=We.zu.getWordDefinition(o.getLanguageIdentifier().id),s=a.source,u=(0,Ue.mr)(a);return r.navigateValueSet(e.toString(),t,n,s,u)}))}},{key:"dispose",value:function(){(0,Ee.Z)((0,De.Z)(n.prototype),"dispose",this).call(this),this._disposed=!0}}]),n}(Me.JT);var Pt=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r;return(0,F.Z)(this,n),(r=t.call(this,e,i.keepIdleModels||!1,i.label))._foreignModuleId=i.moduleId,r._foreignModuleCreateData=i.createData||null,r._foreignModuleHost=i.host||null,r._foreignProxy=null,r}return(0,j.Z)(n,[{key:"fhr",value:function(e,t){if(!this._foreignModuleHost||"function"!==typeof this._foreignModuleHost[e])return Promise.reject(new Error("Missing method "+e+" or missing main thread foreign host."));try{return Promise.resolve(this._foreignModuleHost[e].apply(this._foreignModuleHost,t))}catch(n){return Promise.reject(n)}}},{key:"_getForeignProxy",value:function(){var e=this;return this._foreignProxy||(this._foreignProxy=this._getProxy().then((function(t){var n=e._foreignModuleHost?Oe.$E(e._foreignModuleHost):[];return t.loadForeignModule(e._foreignModuleId,e._foreignModuleCreateData,n).then((function(n){e._foreignModuleCreateData=null;var i,r=function(e,n){return t.fmr(e,n)},o=function(e,t){return function(){var n=Array.prototype.slice.call(arguments,0);return t(e,n)}},a={},s=(0,X.Z)(n);try{for(s.s();!(i=s.n()).done;){var u=i.value;a[u]=o(u,r)}}catch(l){s.e(l)}finally{s.f()}return a}))}))),this._foreignProxy}},{key:"getProxy",value:function(){return this._getForeignProxy()}},{key:"withSyncedResources",value:function(e){var t=this;return this._withSyncedResources(e).then((function(e){return t.getProxy()}))}}]),n}(Rt),Zt=n(34763),Ft=n(70632),jt=n(4587);function Ht(e){return!function(e){return Array.isArray(e)}(e)}function Bt(e){return"string"===typeof e}function zt(e){return!Bt(e)}function Wt(e){return!e}function Vt(e,t){return e.ignoreCase&&t?t.toLowerCase():t}function Yt(e){return e.replace(/[&<>'"_]/g,"-")}function Ut(e,t){return new Error("".concat(e.languageId,": ").concat(t))}function Kt(e,t,n,i,r){var o=null;return t.replace(/\$((\$)|(#)|(\d\d?)|[sS](\d\d?)|@(\w+))/g,(function(t,a,s,u,l,c,d,h,f){return Wt(s)?Wt(u)?!Wt(l)&&l<i.length?Vt(e,i[l]):!Wt(d)&&e&&"string"===typeof e[d]?e[d]:(null===o&&(o=r.split(".")).unshift(r),!Wt(c)&&c<o.length?Vt(e,o[c]):""):Vt(e,n):"$"}))}function qt(e,t){for(var n=t;n&&n.length>0;){var i=e.tokenizer[n];if(i)return i;var r=n.lastIndexOf(".");n=r<0?null:n.substr(0,r)}return null}var Gt=function(){function e(t){(0,F.Z)(this,e),this._maxCacheDepth=t,this._entries=Object.create(null)}return(0,j.Z)(e,[{key:"create",value:function(e,t){if(null!==e&&e.depth>=this._maxCacheDepth)return new $t(e,t);var n=$t.getStackElementId(e);n.length>0&&(n+="|"),n+=t;var i=this._entries[n];return i||(i=new $t(e,t),this._entries[n]=i,i)}}],[{key:"create",value:function(e,t){return this._INSTANCE.create(e,t)}}]),e}();Gt._INSTANCE=new Gt(5);var $t=function(){function e(t,n){(0,F.Z)(this,e),this.parent=t,this.state=n,this.depth=(this.parent?this.parent.depth:0)+1}return(0,j.Z)(e,[{key:"equals",value:function(t){return e._equals(this,t)}},{key:"push",value:function(e){return Gt.create(this,e)}},{key:"pop",value:function(){return this.parent}},{key:"popall",value:function(){for(var e=this;e.parent;)e=e.parent;return e}},{key:"switchTo",value:function(e){return Gt.create(this.parent,e)}}],[{key:"getStackElementId",value:function(e){for(var t="";null!==e;)t.length>0&&(t+="|"),t+=e.state,e=e.parent;return t}},{key:"_equals",value:function(e,t){for(;null!==e&&null!==t;){if(e===t)return!0;if(e.state!==t.state)return!1;e=e.parent,t=t.parent}return null===e&&null===t}}]),e}(),Qt=function(){function e(t,n){(0,F.Z)(this,e),this.modeId=t,this.state=n}return(0,j.Z)(e,[{key:"equals",value:function(e){return this.modeId===e.modeId&&this.state.equals(e.state)}},{key:"clone",value:function(){return this.state.clone()===this.state?this:new e(this.modeId,this.state)}}]),e}(),Xt=function(){function e(t){(0,F.Z)(this,e),this._maxCacheDepth=t,this._entries=Object.create(null)}return(0,j.Z)(e,[{key:"create",value:function(e,t){if(null!==t)return new en(e,t);if(null!==e&&e.depth>=this._maxCacheDepth)return new en(e,t);var n=$t.getStackElementId(e),i=this._entries[n];return i||(i=new en(e,null),this._entries[n]=i,i)}}],[{key:"create",value:function(e,t){return this._INSTANCE.create(e,t)}}]),e}();Xt._INSTANCE=new Xt(5);var Jt,en=function(){function e(t,n){(0,F.Z)(this,e),this.stack=t,this.embeddedModeData=n}return(0,j.Z)(e,[{key:"clone",value:function(){return(this.embeddedModeData?this.embeddedModeData.clone():null)===this.embeddedModeData?this:Xt.create(this.stack,this.embeddedModeData)}},{key:"equals",value:function(t){return t instanceof e&&(!!this.stack.equals(t.stack)&&(null===this.embeddedModeData&&null===t.embeddedModeData||null!==this.embeddedModeData&&null!==t.embeddedModeData&&this.embeddedModeData.equals(t.embeddedModeData)))}}]),e}(),tn=function(){function e(){(0,F.Z)(this,e),this._tokens=[],this._language=null,this._lastTokenType=null,this._lastTokenLanguage=null}return(0,j.Z)(e,[{key:"enterMode",value:function(e,t){this._language=t}},{key:"emit",value:function(e,t){this._lastTokenType===t&&this._lastTokenLanguage===this._language||(this._lastTokenType=t,this._lastTokenLanguage=this._language,this._tokens.push(new K.WU(e,t,this._language)))}},{key:"nestedModeTokenize",value:function(e,t,n,i){var r=n.modeId,o=n.state,a=be.RW.get(r);if(!a)return this.enterMode(i,r),this.emit(i,""),o;var s=a.tokenize(e,t,o,i);return this._tokens=this._tokens.concat(s.tokens),this._lastTokenType=null,this._lastTokenLanguage=null,this._language=null,s.endState}},{key:"finalize",value:function(e){return new K.hG(this._tokens,e)}}]),e}(),nn=function(){function e(t,n){(0,F.Z)(this,e),this._modeService=t,this._theme=n,this._prependTokens=null,this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0}return(0,j.Z)(e,[{key:"enterMode",value:function(e,t){this._currentLanguageId=this._modeService.getLanguageIdentifier(t).id}},{key:"emit",value:function(e,t){var n=this._theme.match(this._currentLanguageId,t);this._lastTokenMetadata!==n&&(this._lastTokenMetadata=n,this._tokens.push(e),this._tokens.push(n))}},{key:"nestedModeTokenize",value:function(t,n,i,r){var o=i.modeId,a=i.state,s=be.RW.get(o);if(!s)return this.enterMode(r,o),this.emit(r,""),a;var u=s.tokenize2(t,n,a,r);return this._prependTokens=e._merge(this._prependTokens,this._tokens,u.tokens),this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0,u.endState}},{key:"finalize",value:function(t){return new K.Hi(e._merge(this._prependTokens,this._tokens,null),t)}}],[{key:"_merge",value:function(e,t,n){var i=null!==e?e.length:0,r=t.length,o=null!==n?n.length:0;if(0===i&&0===r&&0===o)return new Uint32Array(0);if(0===i&&0===r)return n;if(0===r&&0===o)return e;var a=new Uint32Array(i+r+o);null!==e&&a.set(e);for(var s=0;s<r;s++)a[i+s]=t[s];return null!==n&&a.set(n,i+r),a}}]),e}(),rn=function(){function e(t,n,i,r){var o=this;(0,F.Z)(this,e),this._modeService=t,this._standaloneThemeService=n,this._modeId=i,this._lexer=r,this._embeddedModes=Object.create(null),this.embeddedLoaded=Promise.resolve(void 0);var a=!1;this._tokenizationRegistryListener=be.RW.onDidChange((function(e){if(!a){for(var t=!1,n=0,i=e.changedLanguages.length;n<i;n++){var r=e.changedLanguages[n];if(o._embeddedModes[r]){t=!0;break}}t&&(a=!0,be.RW.fire([o._modeId]),a=!1)}}))}return(0,j.Z)(e,[{key:"dispose",value:function(){this._tokenizationRegistryListener.dispose()}},{key:"getLoadStatus",value:function(){var t=[];for(var n in this._embeddedModes){var i=be.RW.get(n);if(i){if(i instanceof e){var r=i.getLoadStatus();!1===r.loaded&&t.push(r.promise)}}else{var o=be.RW.getPromise(n);o&&t.push(o)}}return 0===t.length?{loaded:!0}:{loaded:!1,promise:Promise.all(t).then((function(e){}))}}},{key:"getInitialState",value:function(){var e=Gt.create(null,this._lexer.start);return Xt.create(e,null)}},{key:"tokenize",value:function(e,t,n,i){var r=new tn,o=this._tokenize(e,t,n,i,r);return r.finalize(o)}},{key:"tokenize2",value:function(e,t,n,i){var r=new nn(this._modeService,this._standaloneThemeService.getColorTheme().tokenTheme),o=this._tokenize(e,t,n,i,r);return r.finalize(o)}},{key:"_tokenize",value:function(e,t,n,i,r){return n.embeddedModeData?this._nestedTokenize(e,t,n,i,r):this._myTokenize(e,t,n,i,r)}},{key:"_findLeavingNestedModeOffset",value:function(e,t){var n=this._lexer.tokenizer[t.stack.state];if(!n&&!(n=qt(this._lexer,t.stack.state)))throw Ut(this._lexer,"tokenizer state is not defined: "+t.stack.state);var i,r=-1,o=!1,a=(0,X.Z)(n);try{for(a.s();!(i=a.n()).done;){var s=i.value;if(zt(s.action)&&"@pop"===s.action.nextEmbedded){o=!0;var u=s.regex,l=s.regex.source;if("^(?:"===l.substr(0,4)&&")"===l.substr(l.length-1,1)){var c=(u.ignoreCase?"i":"")+(u.unicode?"u":"");u=new RegExp(l.substr(4,l.length-5),c)}var d=e.search(u);-1===d||0!==d&&s.matchOnlyAtLineStart||(-1===r||d<r)&&(r=d)}}}catch(h){a.e(h)}finally{a.f()}if(!o)throw Ut(this._lexer,'no rule containing nextEmbedded: "@pop" in tokenizer embedded state: '+t.stack.state);return r}},{key:"_nestedTokenize",value:function(e,t,n,i,r){var o=this._findLeavingNestedModeOffset(e,n);if(-1===o){var a=r.nestedModeTokenize(e,t,n.embeddedModeData,i);return Xt.create(n.stack,new Qt(n.embeddedModeData.modeId,a))}var s=e.substring(0,o);s.length>0&&r.nestedModeTokenize(s,!1,n.embeddedModeData,i);var u=e.substring(o);return this._myTokenize(u,t,n,i+o,r)}},{key:"_safeRuleName",value:function(e){return e?e.name:"(unknown)"}},{key:"_myTokenize",value:function(e,t,n,i,r){var o=this;r.enterMode(i,this._modeId);for(var a,s,u=e.length,l=t&&this._lexer.includeLF?e+"\n":e,c=l.length,d=n.embeddedModeData,h=n.stack,f=0,p=null,g=!0;g||f<c;){var v=f,m=h.depth,_=p?p.groups.length:0,y=h.state,b=null,w=null,C=null,k=null,S=null;if(p){b=p.matches;var x=p.groups.shift();w=x.matched,C=x.action,k=p.rule,0===p.groups.length&&(p=null)}else{if(!g&&f>=c)break;g=!1;var L=this._lexer.tokenizer[y];if(!L&&!(L=qt(this._lexer,y)))throw Ut(this._lexer,"tokenizer state is not defined: "+y);var E,D=l.substr(f),N=(0,X.Z)(L);try{for(N.s();!(E=N.n()).done;){var M=E.value;if((0===f||!M.matchOnlyAtLineStart)&&(b=D.match(M.regex))){w=b[0],C=M.action;break}}}catch(B){N.e(B)}finally{N.f()}}if(b||(b=[""],w=""),C||(f<c&&(w=(b=[l.charAt(f)])[0]),C=this._lexer.defaultToken),null===w)break;for(f+=w.length;Ht(C)&&zt(C)&&C.test;)C=C.test(w,b,y,f===c);var T=null;if("string"===typeof C||Array.isArray(C))T=C;else if(C.group)T=C.group;else if(null!==C.token&&void 0!==C.token){if(T=C.tokenSubst?Kt(this._lexer,C.token,w,b,y):C.token,C.nextEmbedded)if("@pop"===C.nextEmbedded){if(!d)throw Ut(this._lexer,"cannot pop embedded mode if not inside one");d=null}else{if(d)throw Ut(this._lexer,"cannot enter embedded mode from within an embedded mode");S=Kt(this._lexer,C.nextEmbedded,w,b,y)}if(C.goBack&&(f=Math.max(0,f-C.goBack)),C.switchTo&&"string"===typeof C.switchTo){var I=Kt(this._lexer,C.switchTo,w,b,y);if("@"===I[0]&&(I=I.substr(1)),!qt(this._lexer,I))throw Ut(this._lexer,"trying to switch to a state '"+I+"' that is undefined in rule: "+this._safeRuleName(k));h=h.switchTo(I)}else{if(C.transform&&"function"===typeof C.transform)throw Ut(this._lexer,"action.transform not supported");if(C.next)if("@push"===C.next){if(h.depth>=this._lexer.maxStack)throw Ut(this._lexer,"maximum tokenizer stack size reached: ["+h.state+","+h.parent.state+",...]");h=h.push(y)}else if("@pop"===C.next){if(h.depth<=1)throw Ut(this._lexer,"trying to pop an empty stack in rule: "+this._safeRuleName(k));h=h.pop()}else if("@popall"===C.next)h=h.popall();else{var O=Kt(this._lexer,C.next,w,b,y);if("@"===O[0]&&(O=O.substr(1)),!qt(this._lexer,O))throw Ut(this._lexer,"trying to set a next state '"+O+"' that is undefined in rule: "+this._safeRuleName(k));h=h.push(O)}}C.log&&"string"===typeof C.log&&(a=this._lexer,s=this._lexer.languageId+": "+Kt(this._lexer,C.log,w,b,y),console.log("".concat(a.languageId,": ").concat(s)))}if(null===T)throw Ut(this._lexer,"lexer rule has no well-defined action in rule: "+this._safeRuleName(k));var A=function(n){var a=o._modeService.getModeIdForLanguageName(n);a&&(n=a);var s=o._getNestedEmbeddedModeData(n);if(f<c){var u=e.substr(f);return o._nestedTokenize(u,t,Xt.create(h,s),i+f,r)}return Xt.create(h,s)};if(Array.isArray(T)){if(p&&p.groups.length>0)throw Ut(this._lexer,"groups cannot be nested: "+this._safeRuleName(k));if(b.length!==T.length+1)throw Ut(this._lexer,"matched number of groups does not match the number of actions in rule: "+this._safeRuleName(k));for(var R=0,P=1;P<b.length;P++)R+=b[P].length;if(R!==w.length)throw Ut(this._lexer,"with groups, all characters should be matched in consecutive groups in rule: "+this._safeRuleName(k));p={rule:k,matches:b,groups:[]};for(var Z=0;Z<T.length;Z++)p.groups[Z]={action:T[Z],matched:b[Z+1]};f-=w.length}else{if("@rematch"===T&&(f-=w.length,w="",b=null,T="",null!==S))return A(S);if(0===w.length){if(0===c||m!==h.depth||y!==h.state||(p?p.groups.length:0)!==_)continue;throw Ut(this._lexer,"no progress in tokenizer in rule: "+this._safeRuleName(k))}var F=null;if(Bt(T)&&0===T.indexOf("@brackets")){var j=T.substr("@brackets".length),H=on(this._lexer,w);if(!H)throw Ut(this._lexer,"@brackets token returned but no bracket defined as: "+w);F=Yt(H.token+j)}else{F=Yt(""===T?"":T+this._lexer.tokenPostfix)}if(v<u&&r.emit(v+i,F),null!==S)return A(S)}}return Xt.create(h,d)}},{key:"_getNestedEmbeddedModeData",value:function(e){var t=this._locateMode(e);if(t){var n=be.RW.get(t);if(n)return new Qt(t,n.getInitialState())}return new Qt(t||we.TG,we.nO)}},{key:"_locateMode",value:function(e){if(!e||!this._modeService.isRegisteredMode(e))return null;if(e===this._modeId)return e;var t=this._modeService.getModeId(e);return t&&(this._modeService.triggerMode(t),this._embeddedModes[t]=!0),t}}]),e}();function on(e,t){if(!t)return null;t=Vt(e,t);var n,i=e.brackets,r=(0,X.Z)(i);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(o.open===t)return{token:o.token,bracketType:1};if(o.close===t)return{token:o.token,bracketType:-1}}}catch(a){r.e(a)}finally{r.f()}return null}var an=null===(Jt=window.trustedTypes)||void 0===Jt?void 0:Jt.createPolicy("standaloneColorizer",{createHTML:function(e){return e}}),sn=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,null,[{key:"colorizeElement",value:function(e,t,n,i){var r=(i=i||{}).theme||"vs",o=i.mimeType||n.getAttribute("lang")||n.getAttribute("data-lang");if(!o)return console.error("Mode not detected"),Promise.resolve();e.setTheme(r);var a=n.firstChild?n.firstChild.nodeValue:"";n.className+=" "+r;return this.colorize(t,a||"",o,i).then((function(e){var t,i=null!==(t=null===an||void 0===an?void 0:an.createHTML(e))&&void 0!==t?t:e;n.innerHTML=i}),(function(e){return console.error(e)}))}},{key:"colorize",value:function(e,t,n,i){var r=4;i&&"number"===typeof i.tabSize&&(r=i.tabSize),Ue.uS(t)&&(t=t.substr(1));var o=Ue.uq(t),a=e.getModeId(n);if(!a)return Promise.resolve(ln(o,r));e.triggerMode(a);var s=be.RW.get(a);if(s)return un(o,r,s);var u=be.RW.getPromise(a);return new Promise(u?function(e,t){u.then((function(n){un(o,r,n).then(e,t)}),t)}:function(e,t){var n=null,i=null,s=function(){n&&(n.dispose(),n=null),i&&(i.dispose(),i=null);var s=be.RW.get(a);s?un(o,r,s).then(e,t):e(ln(o,r))};(i=new Ne._F).cancelAndSet(s,500),n=be.RW.onDidChange((function(e){e.changedLanguages.indexOf(a)>=0&&s()}))})}},{key:"colorizeLine",value:function(e,t,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:4,o=jt.wA.isBasicASCII(e,t),a=jt.wA.containsRTL(e,o,n);return(0,Ft.tF)(new Ft.IJ(!1,!0,e,!1,o,a,0,i,[],r,0,0,0,0,-1,"none",!1,!1,null)).html}},{key:"colorizeModelLine",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4,i=e.getLineContent(t);e.forceTokenization(t);var r=e.getLineTokens(t).inflate();return this.colorizeLine(i,e.mightContainNonBasicASCII(),e.mightContainRTL(),r,n)}}]),e}();function un(e,t,n){return new Promise((function(i,r){!function o(){var a=function(e,t,n){for(var i=[],r=n.getInitialState(),o=0,a=e.length;o<a;o++){var s=e[o],u=n.tokenize2(s,!0,r,0);Zt.A.convertToEndOffset(u.tokens,s.length);var l=new Zt.A(u.tokens,s),c=jt.wA.isBasicASCII(s,!0),d=jt.wA.containsRTL(s,c,!0),h=(0,Ft.tF)(new Ft.IJ(!1,!0,s,!1,c,d,0,l.inflate(),[],t,0,0,0,0,-1,"none",!1,!1,null));(i=i.concat(h.html)).push("<br/>"),r=u.endState}return i.join("")}(e,t,n);if(n instanceof rn){var s=n.getLoadStatus();if(!1===s.loaded)return void s.promise.then(o,r)}i(a)}()}))}function ln(e,t){var n=[],i=new Uint32Array(2);i[0]=0,i[1]=16793600;for(var r=0,o=e.length;r<o;r++){var a=e[r];i[0]=a.length;var s=new Zt.A(i,a),u=jt.wA.isBasicASCII(a,!0),l=jt.wA.containsRTL(a,u,!0),c=(0,Ft.tF)(new Ft.IJ(!1,!0,a,!1,u,l,0,s,[],t,0,0,0,0,-1,"none",!1,!1,null));(n=n.concat(c.html)).push("<br/>")}return n.join("")}var cn=n(31737),dn=n(55046),hn=n(76191),fn=n(49803),pn=n(32995),gn=n(85025),vn=n(98921),mn=n(10405),_n=n(72885),yn=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];(0,F.Z)(this,e),this._contents=t,this._keys=n,this._overrides=i,this.isFrozen=!1}return(0,j.Z)(e,[{key:"contents",get:function(){return this.checkAndFreeze(this._contents)}},{key:"overrides",get:function(){return this.checkAndFreeze(this._overrides)}},{key:"keys",get:function(){return this.checkAndFreeze(this._keys)}},{key:"isEmpty",value:function(){return 0===this._keys.length&&0===Object.keys(this._contents).length&&0===this._overrides.length}},{key:"getValue",value:function(e){return e?(0,vn.Mt)(this.contents,e):this.contents}},{key:"override",value:function(t){var n=this.getContentsForOverrideIdentifer(t);if(!n||"object"!==typeof n||!Object.keys(n).length)return this;var i,r={},o=(0,X.Z)(wt.EB([].concat((0,J.Z)(Object.keys(this.contents)),(0,J.Z)(Object.keys(n)))));try{for(o.s();!(i=o.n()).done;){var a=i.value,s=this.contents[a],u=n[a];u&&("object"===typeof s&&"object"===typeof u?(s=mn.I8(s),this.mergeContents(s,u)):s=u),r[a]=s}}catch(l){o.e(l)}finally{o.f()}return new e(r,this.keys,this.overrides)}},{key:"merge",value:function(){for(var t=this,n=mn.I8(this.contents),i=mn.I8(this.overrides),r=(0,J.Z)(this.keys),o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];for(var u=0,l=a;u<l.length;u++){var c=l[u];this.mergeContents(n,c.contents);var d,h=(0,X.Z)(c.overrides);try{var f=function(){var e=d.value,n=i.filter((function(t){return wt.fS(t.identifiers,e.identifiers)})),r=(0,at.Z)(n,1)[0];r?t.mergeContents(r.contents,e.contents):i.push(mn.I8(e))};for(h.s();!(d=h.n()).done;)f()}catch(m){h.e(m)}finally{h.f()}var p,g=(0,X.Z)(c.keys);try{for(g.s();!(p=g.n()).done;){var v=p.value;-1===r.indexOf(v)&&r.push(v)}}catch(m){g.e(m)}finally{g.f()}}return new e(n,r,i)}},{key:"freeze",value:function(){return this.isFrozen=!0,this}},{key:"mergeContents",value:function(e,t){for(var n=0,i=Object.keys(t);n<i.length;n++){var r=i[n];r in e&&Oe.Kn(e[r])&&Oe.Kn(t[r])?this.mergeContents(e[r],t[r]):e[r]=mn.I8(t[r])}}},{key:"checkAndFreeze",value:function(e){return this.isFrozen&&!Object.isFrozen(e)?mn._A(e):e}},{key:"getContentsForOverrideIdentifer",value:function(e){var t,n=(0,X.Z)(this.overrides);try{for(n.s();!(t=n.n()).done;){var i=t.value;if(-1!==i.identifiers.indexOf(e))return i.contents}}catch(r){n.e(r)}finally{n.f()}return null}},{key:"toJSON",value:function(){return{contents:this.contents,overrides:this.overrides,keys:this.keys}}},{key:"setValue",value:function(e,t){this.addKey(e),(0,vn.KV)(this.contents,e,t,(function(e){throw new Error(e)}))}},{key:"removeValue",value:function(e){this.removeKey(e)&&(0,vn.xL)(this.contents,e)}},{key:"addKey",value:function(e){for(var t=this.keys.length,n=0;n<t;n++)0===e.indexOf(this.keys[n])&&(t=n);this.keys.splice(t,1,e)}},{key:"removeKey",value:function(e){var t=this.keys.indexOf(e);return-1!==t&&(this.keys.splice(t,1),!0)}}]),e}(),bn=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(){(0,F.Z)(this,n);for(var e=(0,vn.O4)(),i=(0,vn.MR)(),r=[],o=0,a=Object.keys(e);o<a.length;o++){var s=a[o];_n.G1.test(s)&&r.push({identifiers:[(0,_n.Uh)(s).trim()],keys:Object.keys(e[s]),contents:(0,vn.Od)(e[s],(function(e){return console.error("Conflict in default settings file: ".concat(e))}))})}return t.call(this,e,i,r)}return(0,j.Z)(n)}(yn),wn=function(){function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new yn,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new yn,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:new re.Y9,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:new yn,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:new re.Y9,u=!(arguments.length>7&&void 0!==arguments[7])||arguments[7];(0,F.Z)(this,e),this._defaultConfiguration=t,this._localUserConfiguration=n,this._remoteUserConfiguration=i,this._workspaceConfiguration=r,this._folderConfigurations=o,this._memoryConfiguration=a,this._memoryConfigurationByResource=s,this._freeze=u,this._workspaceConsolidatedConfiguration=null,this._foldersConsolidatedConfigurations=new re.Y9,this._userConfiguration=null}return(0,j.Z)(e,[{key:"getValue",value:function(e,t,n){return this.getConsolidateConfigurationModel(t,n).getValue(e)}},{key:"updateValue",value:function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};i.resource?(n=this._memoryConfigurationByResource.get(i.resource))||(n=new yn,this._memoryConfigurationByResource.set(i.resource,n)):n=this._memoryConfiguration,void 0===t?n.removeValue(e):n.setValue(e,t),i.resource||(this._workspaceConsolidatedConfiguration=null)}},{key:"userConfiguration",get:function(){return this._userConfiguration||(this._userConfiguration=this._remoteUserConfiguration.isEmpty()?this._localUserConfiguration:this._localUserConfiguration.merge(this._remoteUserConfiguration),this._freeze&&this._userConfiguration.freeze()),this._userConfiguration}},{key:"getConsolidateConfigurationModel",value:function(e,t){var n=this.getConsolidatedConfigurationModelForResource(e,t);return e.overrideIdentifier?n.override(e.overrideIdentifier):n}},{key:"getConsolidatedConfigurationModelForResource",value:function(e,t){var n=e.resource,i=this.getWorkspaceConsolidatedConfiguration();if(t&&n){var r=t.getFolder(n);r&&(i=this.getFolderConsolidatedConfiguration(r.uri)||i);var o=this._memoryConfigurationByResource.get(n);o&&(i=i.merge(o))}return i}},{key:"getWorkspaceConsolidatedConfiguration",value:function(){return this._workspaceConsolidatedConfiguration||(this._workspaceConsolidatedConfiguration=this._defaultConfiguration.merge(this.userConfiguration,this._workspaceConfiguration,this._memoryConfiguration),this._freeze&&(this._workspaceConfiguration=this._workspaceConfiguration.freeze())),this._workspaceConsolidatedConfiguration}},{key:"getFolderConsolidatedConfiguration",value:function(e){var t=this._foldersConsolidatedConfigurations.get(e);if(!t){var n=this.getWorkspaceConsolidatedConfiguration(),i=this._folderConfigurations.get(e);i?(t=n.merge(i),this._freeze&&(t=t.freeze()),this._foldersConsolidatedConfigurations.set(e,t)):t=n}return t}},{key:"toData",value:function(){var e=this;return{defaults:{contents:this._defaultConfiguration.contents,overrides:this._defaultConfiguration.overrides,keys:this._defaultConfiguration.keys},user:{contents:this.userConfiguration.contents,overrides:this.userConfiguration.overrides,keys:this.userConfiguration.keys},workspace:{contents:this._workspaceConfiguration.contents,overrides:this._workspaceConfiguration.overrides,keys:this._workspaceConfiguration.keys},folders:(0,J.Z)(this._folderConfigurations.keys()).reduce((function(t,n){var i=e._folderConfigurations.get(n),r=i.contents,o=i.overrides,a=i.keys;return t.push([n,{contents:r,overrides:o,keys:a}]),t}),[])}}}],[{key:"parse",value:function(t){var n=this,i=this.parseConfigurationModel(t.defaults),r=this.parseConfigurationModel(t.user),o=this.parseConfigurationModel(t.workspace),a=t.folders.reduce((function(e,t){return e.set(W.o.revive(t[0]),n.parseConfigurationModel(t[1])),e}),new re.Y9);return new e(i,r,new yn,o,a,new yn,new re.Y9,!1)}},{key:"parseConfigurationModel",value:function(e){return new yn(e.contents,e.keys,e.overrides).freeze()}}]),e}(),Cn=function(){function e(t,n,i,r){(0,F.Z)(this,e),this.change=t,this.previous=n,this.currentConfiguraiton=i,this.currentWorkspace=r,this._previousConfiguration=void 0;var o=new Set;t.keys.forEach((function(e){return o.add(e)})),t.overrides.forEach((function(e){return(0,at.Z)(e,2)[1].forEach((function(e){return o.add(e)}))})),this.affectedKeys=(0,J.Z)(o.values());var a=new yn;this.affectedKeys.forEach((function(e){return a.setValue(e,{})})),this.affectedKeysTree=a.contents}return(0,j.Z)(e,[{key:"previousConfiguration",get:function(){return!this._previousConfiguration&&this.previous&&(this._previousConfiguration=wn.parse(this.previous.data)),this._previousConfiguration}},{key:"affectsConfiguration",value:function(e,t){var n;if(this.doesAffectedKeysTreeContains(this.affectedKeysTree,e)){if(t){var i=this.previousConfiguration?this.previousConfiguration.getValue(e,t,null===(n=this.previous)||void 0===n?void 0:n.workspace):void 0,r=this.currentConfiguraiton.getValue(e,t,this.currentWorkspace);return!mn.fS(i,r)}return!0}return!1}},{key:"doesAffectedKeysTreeContains",value:function(e,t){for(var n,i=(0,vn.Od)((0,Ve.Z)({},t,!0),(function(){}));"object"===typeof i&&(n=Object.keys(i)[0]);){if(!(e=e[n]))return!1;i=i[n]}return!0}}]),e}(),kn=n(56345),Sn=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r,o,a){var s;return(0,F.Z)(this,n),(s=t.call(this))._contextKeyService=e,s._commandService=i,s._telemetryService=r,s._notificationService=o,s._logService=a,s._onDidUpdateKeybindings=s._register(new B.Q5),s._currentChord=null,s._currentChordChecker=new Ne.zh,s._currentChordStatusMessage=null,s._currentSingleModifier=null,s._currentSingleModifierClearTimeout=new Ne._F,s._logging=!1,s}return(0,j.Z)(n,[{key:"onDidUpdateKeybindings",get:function(){return this._onDidUpdateKeybindings?this._onDidUpdateKeybindings.event:B.ju.None}},{key:"dispose",value:function(){(0,Ee.Z)((0,De.Z)(n.prototype),"dispose",this).call(this)}},{key:"_log",value:function(e){this._logging&&this._logService.info("[KeybindingService]: ".concat(e))}},{key:"getKeybindings",value:function(){return this._getResolver().getKeybindings()}},{key:"lookupKeybinding",value:function(e){var t=this._getResolver().lookupPrimaryKeybinding(e);if(t)return t.resolvedKeybinding}},{key:"dispatchEvent",value:function(e,t){return this._dispatch(e,t)}},{key:"softDispatch",value:function(e,t){var n=this.resolveKeyboardEvent(e);if(n.isChord())return console.warn("Unexpected keyboard event mapped to a chord"),null;var i=n.getDispatchParts(),r=(0,at.Z)(i,1)[0];if(null===r)return null;var o=this._contextKeyService.getContext(t),a=this._currentChord?this._currentChord.keypress:null;return this._getResolver().resolve(o,a,r)}},{key:"_enterChordMode",value:function(e,t){var n=this;this._currentChord={keypress:e,label:t},this._currentChordStatusMessage=this._notificationService.status(kn.N("first.chord","({0}) was pressed. Waiting for second key of chord...",t));var i=Date.now();this._currentChordChecker.cancelAndSet((function(){n._documentHasFocus()?Date.now()-i>5e3&&n._leaveChordMode():n._leaveChordMode()}),500)}},{key:"_leaveChordMode",value:function(){this._currentChordStatusMessage&&(this._currentChordStatusMessage.dispose(),this._currentChordStatusMessage=null),this._currentChordChecker.cancel(),this._currentChord=null}},{key:"_dispatch",value:function(e,t){return this._doDispatch(this.resolveKeyboardEvent(e),t,!1)}},{key:"_singleModifierDispatch",value:function(e,t){var n=this,i=this.resolveKeyboardEvent(e),r=i.getSingleModifierDispatchParts(),o=(0,at.Z)(r,1)[0];return null!==o&&null===this._currentSingleModifier?(this._log("+ Storing single modifier for possible chord ".concat(o,".")),this._currentSingleModifier=o,this._currentSingleModifierClearTimeout.cancelAndSet((function(){n._log("+ Clearing single modifier due to 300ms elapsed."),n._currentSingleModifier=null}),300),!1):null!==o&&o===this._currentSingleModifier?(this._log("/ Dispatching single modifier chord ".concat(o," ").concat(o)),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,this._doDispatch(i,t,!0)):(this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1)}},{key:"_doDispatch",value:function(e,t){var n=this,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=!1;if(e.isChord())return console.warn("Unexpected keyboard event mapped to a chord"),!1;var o=null,a=null;if(i){var s=e.getSingleModifierDispatchParts(),u=(0,at.Z)(s,1)[0];o=u,a=u}else{var l=e.getDispatchParts();o=(0,at.Z)(l,1)[0],a=this._currentChord?this._currentChord.keypress:null}if(null===o)return this._log("\\ Keyboard event cannot be dispatched in keydown phase."),r;var c=this._contextKeyService.getContext(t),d=e.getLabel(),h=this._getResolver().resolve(c,a,o);return this._logService.trace("KeybindingService#dispatch",d,null===h||void 0===h?void 0:h.commandId),h&&h.enterChord?(r=!0,this._enterChordMode(o,d),r):(this._currentChord&&(h&&h.commandId||(this._notificationService.status(kn.N("missing.chord","The key combination ({0}, {1}) is not a command.",this._currentChord.label,d),{hideAfter:1e4}),r=!0)),this._leaveChordMode(),h&&h.commandId&&(h.bubble||(r=!0),"undefined"===typeof h.commandArgs?this._commandService.executeCommand(h.commandId).then(void 0,(function(e){return n._notificationService.warn(e)})):this._commandService.executeCommand(h.commandId,h.commandArgs).then(void 0,(function(e){return n._notificationService.warn(e)})),this._telemetryService.publicLog2("workbenchActionExecuted",{id:h.commandId,from:"keybinding"})),r)}},{key:"mightProducePrintableCharacter",value:function(e){return!e.ctrlKey&&!e.metaKey&&(e.keyCode>=31&&e.keyCode<=56||e.keyCode>=21&&e.keyCode<=30)}}]),n}(Me.JT),xn=function(){function e(t,n,i){(0,F.Z)(this,e),this._log=i,this._defaultKeybindings=t,this._defaultBoundCommands=new Map;for(var r=0,o=t.length;r<o;r++){var a=t[r].command;a&&this._defaultBoundCommands.set(a,!0)}this._map=new Map,this._lookupMap=new Map,this._keybindings=e.combine(t,n);for(var s=0,u=this._keybindings.length;s<u;s++){var l=this._keybindings[s];0!==l.keypressParts.length&&(l.when&&0===l.when.type||this._addKeyPress(l.keypressParts[0],l))}}return(0,j.Z)(e,[{key:"_addKeyPress",value:function(t,n){var i=this._map.get(t);if("undefined"===typeof i)return this._map.set(t,[n]),void this._addToLookupMap(n);for(var r=i.length-1;r>=0;r--){var o=i[r];if(o.command!==n.command){var a=o.keypressParts.length>1,s=n.keypressParts.length>1;a&&s&&o.keypressParts[1]!==n.keypressParts[1]||e.whenIsEntirelyIncluded(o.when,n.when)&&this._removeFromLookupMap(o)}}i.push(n),this._addToLookupMap(n)}},{key:"_addToLookupMap",value:function(e){if(e.command){var t=this._lookupMap.get(e.command);"undefined"===typeof t?(t=[e],this._lookupMap.set(e.command,t)):t.push(e)}}},{key:"_removeFromLookupMap",value:function(e){if(e.command){var t=this._lookupMap.get(e.command);if("undefined"!==typeof t)for(var n=0,i=t.length;n<i;n++)if(t[n]===e)return void t.splice(n,1)}}},{key:"getKeybindings",value:function(){return this._keybindings}},{key:"lookupPrimaryKeybinding",value:function(e){var t=this._lookupMap.get(e);return"undefined"===typeof t||0===t.length?null:t[t.length-1]}},{key:"resolve",value:function(e,t,n){this._log("| Resolving ".concat(n).concat(t?" chorded from ".concat(t):""));var i=null;if(null!==t){var r=this._map.get(t);if("undefined"===typeof r)return this._log("\\ No keybinding entries."),null;i=[];for(var o=0,a=r.length;o<a;o++){var s=r[o];s.keypressParts[1]===n&&i.push(s)}}else{var u=this._map.get(n);if("undefined"===typeof u)return this._log("\\ No keybinding entries."),null;i=u}var l=this._findCommand(e,i);return l?null===t&&l.keypressParts.length>1&&null!==l.keypressParts[1]?(this._log("\\ From ".concat(i.length," keybinding entries, matched chord, when: ").concat(Ln(l.when),", source: ").concat(En(l),".")),{enterChord:!0,leaveChord:!1,commandId:null,commandArgs:null,bubble:!1}):(this._log("\\ From ".concat(i.length," keybinding entries, matched ").concat(l.command,", when: ").concat(Ln(l.when),", source: ").concat(En(l),".")),{enterChord:!1,leaveChord:l.keypressParts.length>1,commandId:l.command,commandArgs:l.commandArgs,bubble:l.bubble}):(this._log("\\ From ".concat(i.length," keybinding entries, no when clauses matched the context.")),null)}},{key:"_findCommand",value:function(t,n){for(var i=n.length-1;i>=0;i--){var r=n[i];if(e.contextMatchesRules(t,r.when))return r}return null}}],[{key:"_isTargetedForRemoval",value:function(e,t,n,i,r){if(e.command!==i)return!1;if(t&&e.keypressParts[0]!==t)return!1;if(n&&e.keypressParts[1]!==n)return!1;if(r){if(!e.when)return!1;if(!r.equals(e.when))return!1}return!0}},{key:"combine",value:function(e,t){e=e.slice(0);var n,i=[],r=(0,X.Z)(t);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(o.command&&0!==o.command.length&&"-"===o.command.charAt(0))for(var a=o.command.substr(1),s=o.keypressParts[0],u=o.keypressParts[1],l=o.when,c=e.length-1;c>=0;c--)this._isTargetedForRemoval(e[c],s,u,a,l)&&e.splice(c,1);else i.push(o)}}catch(d){r.e(d)}finally{r.f()}return e.concat(i)}},{key:"whenIsEntirelyIncluded",value:function(e,t){return!t||!!e&&this._implies(e,t)}},{key:"_implies",value:function(e,t){for(var n=function(e){return 9===e.type?e.expr:[e]},i=n(e.negate()).concat(n(t)),r=0;r<i.length;r++)for(var o=i[r].negate(),a=r+1;a<i.length;a++){var s=i[a];if(o.equals(s))return!0}return!1}},{key:"contextMatchesRules",value:function(e,t){return!t||t.evaluate(e)}}]),e}();function Ln(e){return e?"".concat(e.serialize()):"no when condition"}function En(e){return e.extensionId?e.isBuiltinExtension?"built-in extension ".concat(e.extensionId):"user extension ".concat(e.extensionId):e.isDefault?"built-in":"user"}var Dn=n(51519),Nn=(0,j.Z)((function e(t,n,i,r,o,a,s){(0,F.Z)(this,e),this.resolvedKeybinding=t,this.keypressParts=t?Mn(t.getDispatchParts()):[],t&&0===this.keypressParts.length&&(this.keypressParts=Mn(t.getSingleModifierDispatchParts())),this.bubble=!!n&&94===n.charCodeAt(0),this.command=this.bubble?n.substr(1):n,this.commandArgs=i,this.when=r,this.isDefault=o,this.extensionId=a,this.isBuiltinExtension=s}));function Mn(e){for(var t=[],n=0,i=e.length;n<i;n++){var r=e[n];if(!r)return t;t.push(r)}return t}var Tn=n(85733),In=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r;if((0,F.Z)(this,n),r=t.call(this),0===i.length)throw(0,Te.b1)("parts");return r._os=e,r._parts=i,r}return(0,j.Z)(n,[{key:"getLabel",value:function(){var e=this;return Tn.xo.toLabel(this._os,this._parts,(function(t){return e._getLabel(t)}))}},{key:"getAriaLabel",value:function(){var e=this;return Tn.X4.toLabel(this._os,this._parts,(function(t){return e._getAriaLabel(t)}))}},{key:"isChord",value:function(){return this._parts.length>1}},{key:"getParts",value:function(){var e=this;return this._parts.map((function(t){return e._getPart(t)}))}},{key:"_getPart",value:function(e){return new z.BQ(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,this._getLabel(e),this._getAriaLabel(e))}},{key:"getDispatchParts",value:function(){var e=this;return this._parts.map((function(t){return e._getDispatchPart(t)}))}},{key:"getSingleModifierDispatchParts",value:function(){var e=this;return this._parts.map((function(t){return e._getSingleModifierDispatchPart(t)}))}}]),n}(z.f1),On=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){return(0,F.Z)(this,n),t.call(this,i,e.parts)}return(0,j.Z)(n,[{key:"_keyCodeToUILabel",value:function(e){if(2===this._os)switch(e){case 15:return"\u2190";case 16:return"\u2191";case 17:return"\u2192";case 18:return"\u2193"}return z.kL.toString(e)}},{key:"_getLabel",value:function(e){return e.isDuplicateModifierCase()?"":this._keyCodeToUILabel(e.keyCode)}},{key:"_getAriaLabel",value:function(e){return e.isDuplicateModifierCase()?"":z.kL.toString(e.keyCode)}},{key:"_getDispatchPart",value:function(e){return n.getDispatchStr(e)}},{key:"_getSingleModifierDispatchPart",value:function(e){return 5!==e.keyCode||e.shiftKey||e.altKey||e.metaKey?4!==e.keyCode||e.ctrlKey||e.altKey||e.metaKey?6!==e.keyCode||e.ctrlKey||e.shiftKey||e.metaKey?57!==e.keyCode||e.ctrlKey||e.shiftKey||e.altKey?null:"meta":"alt":"shift":"ctrl"}}],[{key:"getDispatchStr",value:function(e){if(e.isModifierKey())return null;var t="";return e.ctrlKey&&(t+="ctrl+"),e.shiftKey&&(t+="shift+"),e.altKey&&(t+="alt+"),e.metaKey&&(t+="meta+"),t+=z.kL.toString(e.keyCode)}}]),n}(In),An=n(71574),Rn=n(37753),Pn=n(25741),Zn=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},Fn=function(e,t){return function(n,i){t(n,i,e)}},jn=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},Hn=function(){function e(t){(0,F.Z)(this,e),this.disposed=!1,this.model=t,this._onWillDispose=new B.Q5}return(0,j.Z)(e,[{key:"textEditorModel",get:function(){return this.model}},{key:"dispose",value:function(){this.disposed=!0,this._onWillDispose.fire()}}]),e}();var Bn=function(){function e(t){(0,F.Z)(this,e),this.modelService=t}return(0,j.Z)(e,[{key:"setEditor",value:function(e){this.editor=e}},{key:"createModelReference",value:function(e){var t,n,i,r=this,o=null;return this.editor&&(t=this.editor,n=function(t){return r.findModel(t,e)},i=function(t){return r.findModel(t.getOriginalEditor(),e)||r.findModel(t.getModifiedEditor(),e)},o=(0,hn.CL)(t)?n(t):i(t)),o?Promise.resolve(new Me.Jz(new Hn(o))):Promise.reject(new Error("Model not found"))}},{key:"findModel",value:function(e,t){var n=this.modelService.getModel(t);return n&&n.uri.toString()!==t.toString()?null:n}}]),e}();Bn=Zn([Fn(0,yt.q)],Bn);var zn=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,[{key:"show",value:function(){return e.NULL_PROGRESS_RUNNER}},{key:"showWhile",value:function(e,t){return jn(this,void 0,void 0,te().mark((function t(){return te().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e;case 2:case"end":return t.stop()}}),t)})))}}]),e}();zn.NULL_PROGRESS_RUNNER={done:function(){},total:function(){},worked:function(){}};var Wn=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,[{key:"confirm",value:function(e){return this.doConfirm(e).then((function(e){return{confirmed:e,checkboxChecked:!1}}))}},{key:"doConfirm",value:function(e){var t=e.message;return e.detail&&(t=t+"\n\n"+e.detail),Promise.resolve(window.confirm(t))}},{key:"show",value:function(e,t,n,i){return Promise.resolve({choice:0})}}]),e}(),Vn=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,[{key:"info",value:function(e){return this.notify({severity:dn.Z.Info,message:e})}},{key:"warn",value:function(e){return this.notify({severity:dn.Z.Warning,message:e})}},{key:"error",value:function(e){return this.notify({severity:dn.Z.Error,message:e})}},{key:"notify",value:function(t){switch(t.severity){case dn.Z.Error:console.error(t.message);break;case dn.Z.Warning:console.warn(t.message);break;default:console.log(t.message)}return e.NO_OP}},{key:"status",value:function(e,t){return Me.JT.None}}]),e}();Vn.NO_OP=new An.EO;var Yn=function(){function e(t){(0,F.Z)(this,e),this._onWillExecuteCommand=new B.Q5,this._onDidExecuteCommand=new B.Q5,this._instantiationService=t}return(0,j.Z)(e,[{key:"executeCommand",value:function(e){var t=ue.P.getCommand(e);if(!t)return Promise.reject(new Error("command '".concat(e,"' not found")));try{for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];this._onWillExecuteCommand.fire({commandId:e,args:i});var o=this._instantiationService.invokeFunction.apply(this._instantiationService,[t.handler].concat(i));return this._onDidExecuteCommand.fire({commandId:e,args:i}),Promise.resolve(o)}catch(a){return Promise.reject(a)}}}]),e}(),Un=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r,o,a,s){var u;return(0,F.Z)(this,n),(u=t.call(this,e,i,r,o,a))._cachedResolver=null,u._dynamicKeybindings=[],u._register(ne.addDisposableListener(s,ne.EventType.KEY_DOWN,(function(e){var t=new cn.y(e);u._dispatch(t,t.target)&&(t.preventDefault(),t.stopPropagation())}))),u._register(ne.addDisposableListener(window,ne.EventType.KEY_UP,(function(e){var t=new cn.y(e);u._singleModifierDispatch(t,t.target)&&t.preventDefault()}))),u}return(0,j.Z)(n,[{key:"addDynamicKeybinding",value:function(e,t,n,i){var r=this,o=(0,z.gm)(t,Ie.OS),a=new Me.SL;return o&&(this._dynamicKeybindings.push({keybinding:o,command:e,when:i,weight1:1e3,weight2:0,extensionId:null,isBuiltinExtension:!1}),a.add((0,Me.OF)((function(){for(var t=0;t<r._dynamicKeybindings.length;t++){if(r._dynamicKeybindings[t].command===e)return r._dynamicKeybindings.splice(t,1),void r.updateResolver({source:1})}})))),a.add(ue.P.registerCommand(e,n)),this.updateResolver({source:1}),a}},{key:"updateResolver",value:function(e){this._cachedResolver=null,this._onDidUpdateKeybindings.fire(e)}},{key:"_getResolver",value:function(){var e=this;if(!this._cachedResolver){var t=this._toNormalizedKeybindingItems(Dn.W.getDefaultKeybindings(),!0),n=this._toNormalizedKeybindingItems(this._dynamicKeybindings,!1);this._cachedResolver=new xn(t,n,(function(t){return e._log(t)}))}return this._cachedResolver}},{key:"_documentHasFocus",value:function(){return document.hasFocus()}},{key:"_toNormalizedKeybindingItems",value:function(e,t){var n,i=[],r=0,o=(0,X.Z)(e);try{for(o.s();!(n=o.n()).done;){var a=n.value,s=a.when||void 0,u=a.keybinding;if(u){var l,c=this.resolveKeybinding(u),d=(0,X.Z)(c);try{for(d.s();!(l=d.n()).done;){var h=l.value;i[r++]=new Nn(h,a.command,a.commandArgs,s,t,null,!1)}}catch(f){d.e(f)}finally{d.f()}}else i[r++]=new Nn(void 0,a.command,a.commandArgs,s,t,null,!1)}}catch(f){o.e(f)}finally{o.f()}return i}},{key:"resolveKeybinding",value:function(e){return[new On(e,Ie.OS)]}},{key:"resolveKeyboardEvent",value:function(e){var t=new z.QC(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,e.keyCode).toChord();return new On(t,Ie.OS)}}]),n}(Sn);function Kn(e){return e&&"object"===typeof e&&(!e.overrideIdentifier||"string"===typeof e.overrideIdentifier)&&(!e.resource||e.resource instanceof W.o)}var qn=function(){function e(){(0,F.Z)(this,e),this._onDidChangeConfiguration=new B.Q5,this.onDidChangeConfiguration=this._onDidChangeConfiguration.event,this._configuration=new wn(new bn,new yn)}return(0,j.Z)(e,[{key:"getValue",value:function(e,t){var n="string"===typeof e?e:void 0,i=Kn(e)?e:Kn(t)?t:{};return this._configuration.getValue(n,i,void 0)}},{key:"updateValues",value:function(e){var t,n={data:this._configuration.toData()},i=[],r=(0,X.Z)(e);try{for(r.s();!(t=r.n()).done;){var o=t.value,a=(0,at.Z)(o,2),s=a[0],u=a[1];this.getValue(s)!==u&&(this._configuration.updateValue(s,u),i.push(s))}}catch(c){r.e(c)}finally{r.f()}if(i.length>0){var l=new Cn({keys:i,overrides:[]},n,this._configuration);l.source=7,l.sourceConfig=null,this._onDidChangeConfiguration.fire(l)}return Promise.resolve()}}]),e}(),Gn=function(){function e(t){var n=this;(0,F.Z)(this,e),this.configurationService=t,this._onDidChangeConfiguration=new B.Q5,this.configurationService.onDidChangeConfiguration((function(e){n._onDidChangeConfiguration.fire({affectedKeys:e.affectedKeys,affectsConfiguration:function(t,n){return e.affectsConfiguration(n)}})}))}return(0,j.Z)(e,[{key:"getValue",value:function(e,t,n){var i=(V.L.isIPosition(t)?t:null)?"string"===typeof n?n:void 0:"string"===typeof t?t:void 0;return"undefined"===typeof i?this.configurationService.getValue():this.configurationService.getValue(i)}}]),e}(),$n=function(){function e(t){(0,F.Z)(this,e),this.configurationService=t}return(0,j.Z)(e,[{key:"getEOL",value:function(e,t){var n=this.configurationService.getValue("files.eol",{overrideIdentifier:t,resource:e});return n&&"auto"!==n?n:Ie.IJ||Ie.dz?"\n":"\r\n"}}]),e}();$n=Zn([Fn(0,vn.Ui)],$n);var Qn=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,[{key:"publicLog",value:function(e,t){return Promise.resolve(void 0)}},{key:"publicLog2",value:function(e,t){return this.publicLog(e,t)}}]),e}(),Xn=function(){function e(){(0,F.Z)(this,e);var t=W.o.from({scheme:e.SCHEME,authority:"model",path:"/"});this.workspace={id:"4064f6ec-cb38-4ad0-af64-ee6467e63c82",folders:[new Rn.md({uri:t,name:"",index:0})]}}return(0,j.Z)(e,[{key:"getWorkspace",value:function(){return this.workspace}}]),e}();function Jn(e,t,n){if(t&&e instanceof qn){var i=[];Object.keys(t).forEach((function(e){(0,pn.ei)(e)&&i.push(["editor.".concat(e),t[e]]),n&&(0,pn.Pe)(e)&&i.push(["diffEditor.".concat(e),t[e]])})),i.length>0&&e.updateValues(i)}}Xn.SCHEME="inmemory";var ei=function(){function e(t){(0,F.Z)(this,e),this._modelService=t}return(0,j.Z)(e,[{key:"hasPreviewHandler",value:function(){return!1}},{key:"apply",value:function(e,t){return jn(this,void 0,void 0,te().mark((function t(){var n,i,r,o,a,s,u,l,c,d,h,f,p;return te().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=new Map,i=(0,X.Z)(e),t.prev=2,i.s();case 4:if((r=i.n()).done){t.next=18;break}if((o=r.value)instanceof fn.Gl){t.next=8;break}throw new Error("bad edit - only text edits are supported");case 8:if(a=this._modelService.getModel(o.resource)){t.next=11;break}throw new Error("bad edit - model not found");case 11:if("number"!==typeof o.versionId||a.getVersionId()===o.versionId){t.next=13;break}throw new Error("bad state - model changed in the meantime");case 13:(s=n.get(a))||(s=[],n.set(a,s)),s.push(gn.h.replaceMove(Y.e.lift(o.textEdit.range),o.textEdit.text));case 16:t.next=4;break;case 18:t.next=23;break;case 20:t.prev=20,t.t0=t.catch(2),i.e(t.t0);case 23:return t.prev=23,i.f(),t.finish(23);case 26:u=0,l=0,c=(0,X.Z)(n);try{for(c.s();!(d=c.n()).done;)h=(0,at.Z)(d.value,2),f=h[0],p=h[1],f.pushStackElement(),f.pushEditOperations([],p,(function(){return[]})),f.pushStackElement(),l+=1,u+=p.length}catch(g){c.e(g)}finally{c.f()}return t.abrupt("return",{ariaSummary:Ue.WU(Pn.UL.bulkEditServiceSummary,u,l)});case 31:case"end":return t.stop()}}),t,this,[[2,20,23,26]])})))}}]),e}(),ti=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,[{key:"getUriLabel",value:function(e,t){return"file"===e.scheme?e.fsPath:e.path}}]),e}(),ni=function(){function e(t,n){(0,F.Z)(this,e),this._codeEditorService=t,this._container=n,this.onDidLayout=B.ju.None}return(0,j.Z)(e,[{key:"dimension",get:function(){return this._dimension||(this._dimension=ne.getClientArea(window.document.body)),this._dimension}},{key:"container",get:function(){return this._container}},{key:"focus",value:function(){var e;null===(e=this._codeEditorService.getFocusedCodeEditor())||void 0===e||e.focus()}}]),e}(),ii=n(52180),ri=n(95079),oi=n(20224),ai=n(30633),si=n(51342),ui=n(31585),li=n(18948),ci=n(98989),di=n(84596),hi=n(97963),fi=n(70182),pi=n(40782),gi=n(38794),vi=n(18085),mi=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(){var e;return(0,F.Z)(this,n),(e=t.call(this))._onCodeEditorAdd=e._register(new B.Q5),e.onCodeEditorAdd=e._onCodeEditorAdd.event,e._onCodeEditorRemove=e._register(new B.Q5),e.onCodeEditorRemove=e._onCodeEditorRemove.event,e._onDiffEditorAdd=e._register(new B.Q5),e._onDiffEditorRemove=e._register(new B.Q5),e._onDecorationTypeRegistered=e._register(new B.Q5),e._modelProperties=new Map,e._codeEditors=Object.create(null),e._diffEditors=Object.create(null),e}return(0,j.Z)(n,[{key:"addCodeEditor",value:function(e){this._codeEditors[e.getId()]=e,this._onCodeEditorAdd.fire(e)}},{key:"removeCodeEditor",value:function(e){delete this._codeEditors[e.getId()]&&this._onCodeEditorRemove.fire(e)}},{key:"listCodeEditors",value:function(){var e=this;return Object.keys(this._codeEditors).map((function(t){return e._codeEditors[t]}))}},{key:"addDiffEditor",value:function(e){this._diffEditors[e.getId()]=e,this._onDiffEditorAdd.fire(e)}},{key:"removeDiffEditor",value:function(e){delete this._diffEditors[e.getId()]&&this._onDiffEditorRemove.fire(e)}},{key:"listDiffEditors",value:function(){var e=this;return Object.keys(this._diffEditors).map((function(t){return e._diffEditors[t]}))}},{key:"getFocusedCodeEditor",value:function(){var e,t=null,n=this.listCodeEditors(),i=(0,X.Z)(n);try{for(i.s();!(e=i.n()).done;){var r=e.value;if(r.hasTextFocus())return r;r.hasWidgetFocus()&&(t=r)}}catch(o){i.e(o)}finally{i.f()}return t}},{key:"setModelProperty",value:function(e,t,n){var i,r=e.toString();this._modelProperties.has(r)?i=this._modelProperties.get(r):(i=new Map,this._modelProperties.set(r,i)),i.set(t,n)}},{key:"getModelProperty",value:function(e,t){var n=e.toString();if(this._modelProperties.has(n))return this._modelProperties.get(n).get(t)}}]),n}(Me.JT),_i=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},yi=function(e,t){return function(n,i){t(n,i,e)}},bi=function(){function e(t,n,i){(0,F.Z)(this,e),this._parent=t,this._editorId=n,this._styleSheet=i,this._refCount=0}return(0,j.Z)(e,[{key:"ref",value:function(){this._refCount++}},{key:"unref",value:function(){var e;this._refCount--,0===this._refCount&&(null===(e=this._styleSheet.parentNode)||void 0===e||e.removeChild(this._styleSheet),this._parent._removeEditorStyleSheets(this._editorId))}},{key:"insertRule",value:function(e,t){this._styleSheet.sheet.insertRule(e,t)}},{key:"removeRulesContainingSelector",value:function(e){ne.removeCSSRulesContainingSelector(e,this._styleSheet)}}]),e}(),wi=function(){function e(t){(0,F.Z)(this,e),this._styleSheet=t}return(0,j.Z)(e,[{key:"ref",value:function(){}},{key:"unref",value:function(){}},{key:"insertRule",value:function(e,t){this._styleSheet.sheet.insertRule(e,t)}},{key:"removeRulesContainingSelector",value:function(e){ne.removeCSSRulesContainingSelector(e,this._styleSheet)}}]),e}(),Ci=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r;return(0,F.Z)(this,n),(r=t.call(this))._decorationOptionProviders=new Map,r._editorStyleSheets=new Map,r._globalStyleSheet=e||null,r._themeService=i,r}return(0,j.Z)(n,[{key:"_getOrCreateGlobalStyleSheet",value:function(){return this._globalStyleSheet||(this._globalStyleSheet=new wi(ne.createStyleSheet())),this._globalStyleSheet}},{key:"_getOrCreateStyleSheet",value:function(e){if(!e)return this._getOrCreateGlobalStyleSheet();var t=e.getContainerDomNode();if(!ne.isInShadowDOM(t))return this._getOrCreateGlobalStyleSheet();var n=e.getId();if(!this._editorStyleSheets.has(n)){var i=new bi(this,n,ne.createStyleSheet(t));this._editorStyleSheets.set(n,i)}return this._editorStyleSheets.get(n)}},{key:"_removeEditorStyleSheets",value:function(e){this._editorStyleSheets.delete(e)}},{key:"registerDecorationType",value:function(e,t,n,i){var r=this._decorationOptionProviders.get(e);if(!r){var o=this._getOrCreateStyleSheet(i),a={styleSheet:o,key:e,parentTypeKey:n,options:t||Object.create(null)};r=n?new ki(this._themeService,o,a):new Si(this._themeService,o,a),this._decorationOptionProviders.set(e,r),this._onDecorationTypeRegistered.fire(e)}r.refCount++}},{key:"removeDecorationType",value:function(e){var t=this._decorationOptionProviders.get(e);t&&(t.refCount--,t.refCount<=0&&(this._decorationOptionProviders.delete(e),t.dispose(),this.listCodeEditors().forEach((function(t){return t.removeDecorations(e)}))))}},{key:"resolveDecorationOptions",value:function(e,t){var n=this._decorationOptionProviders.get(e);if(!n)throw new Error("Unknown decoration type key: "+e);return n.getOptions(this,t)}}]),n}(mi);Ci=_i([yi(1,fi.XE)],Ci);var ki=function(){function e(t,n,i){(0,F.Z)(this,e),this._styleSheet=n,this._styleSheet.ref(),this._parentTypeKey=i.parentTypeKey,this.refCount=0,this._beforeContentRules=new Li(3,i,t),this._afterContentRules=new Li(4,i,t)}return(0,j.Z)(e,[{key:"getOptions",value:function(e,t){var n=e.resolveDecorationOptions(this._parentTypeKey,!0);return this._beforeContentRules&&(n.beforeContentClassName=this._beforeContentRules.className),this._afterContentRules&&(n.afterContentClassName=this._afterContentRules.className),n}},{key:"dispose",value:function(){this._beforeContentRules&&(this._beforeContentRules.dispose(),this._beforeContentRules=null),this._afterContentRules&&(this._afterContentRules.dispose(),this._afterContentRules=null),this._styleSheet.unref()}}]),e}(),Si=function(){function e(t,n,i){var r=this;(0,F.Z)(this,e),this._disposables=new Me.SL,this._styleSheet=n,this._styleSheet.ref(),this.refCount=0;var o=function(e){var n=new Li(e,i,t);if(r._disposables.add(n),n.hasContent)return n.className};this.className=o(0);var a=function(e){var n=new Li(e,i,t);return r._disposables.add(n),n.hasContent?{className:n.className,hasLetterSpacing:n.hasLetterSpacing}:null}(1);a&&(this.inlineClassName=a.className,this.inlineClassNameAffectsLetterSpacing=a.hasLetterSpacing),this.beforeContentClassName=o(3),this.afterContentClassName=o(4),this.glyphMarginClassName=o(2);var s=i.options;this.isWholeLine=Boolean(s.isWholeLine),this.stickiness=s.rangeBehavior;var u=s.light&&s.light.overviewRulerColor||s.overviewRulerColor,l=s.dark&&s.dark.overviewRulerColor||s.overviewRulerColor;"undefined"===typeof u&&"undefined"===typeof l||(this.overviewRuler={color:u||l,darkColor:l||u,position:s.overviewRulerLane||ye.sh.Center})}return(0,j.Z)(e,[{key:"getOptions",value:function(e,t){return t?{inlineClassName:this.inlineClassName,beforeContentClassName:this.beforeContentClassName,afterContentClassName:this.afterContentClassName,className:this.className,glyphMarginClassName:this.glyphMarginClassName,isWholeLine:this.isWholeLine,overviewRuler:this.overviewRuler,stickiness:this.stickiness}:this}},{key:"dispose",value:function(){this._disposables.dispose(),this._styleSheet.unref()}}]),e}(),xi={color:"color:{0} !important;",opacity:"opacity:{0};",backgroundColor:"background-color:{0};",outline:"outline:{0};",outlineColor:"outline-color:{0};",outlineStyle:"outline-style:{0};",outlineWidth:"outline-width:{0};",border:"border:{0};",borderColor:"border-color:{0};",borderRadius:"border-radius:{0};",borderSpacing:"border-spacing:{0};",borderStyle:"border-style:{0};",borderWidth:"border-width:{0};",fontStyle:"font-style:{0};",fontWeight:"font-weight:{0};",fontSize:"font-size:{0};",fontFamily:"font-family:{0};",textDecoration:"text-decoration:{0};",cursor:"cursor:{0};",letterSpacing:"letter-spacing:{0};",gutterIconPath:"background:{0} center center no-repeat;",gutterIconSize:"background-size:{0};",contentText:"content:'{0}';",contentIconPath:"content:{0};",margin:"margin:{0};",padding:"padding:{0};",width:"width:{0};",height:"height:{0};"},Li=function(){function e(t,n,i){var r=this;(0,F.Z)(this,e),this._theme=i.getColorTheme(),this._ruleType=t,this._providerArgs=n,this._usesThemeColors=!1,this._hasContent=!1,this._hasLetterSpacing=!1;var o=Ei.getClassName(this._providerArgs.key,t);this._providerArgs.parentTypeKey&&(o=o+" "+Ei.getClassName(this._providerArgs.parentTypeKey,t)),this._className=o,this._unThemedSelector=Ei.getSelector(this._providerArgs.key,this._providerArgs.parentTypeKey,t),this._buildCSS(),this._usesThemeColors?this._themeListener=i.onDidColorThemeChange((function(e){r._theme=i.getColorTheme(),r._removeCSS(),r._buildCSS()})):this._themeListener=null}return(0,j.Z)(e,[{key:"dispose",value:function(){this._hasContent&&(this._removeCSS(),this._hasContent=!1),this._themeListener&&(this._themeListener.dispose(),this._themeListener=null)}},{key:"hasContent",get:function(){return this._hasContent}},{key:"hasLetterSpacing",get:function(){return this._hasLetterSpacing}},{key:"className",get:function(){return this._className}},{key:"_buildCSS",value:function(){var e,t,n,i=this._providerArgs.options;switch(this._ruleType){case 0:e=this.getCSSTextForModelDecorationClassName(i),t=this.getCSSTextForModelDecorationClassName(i.light),n=this.getCSSTextForModelDecorationClassName(i.dark);break;case 1:e=this.getCSSTextForModelDecorationInlineClassName(i),t=this.getCSSTextForModelDecorationInlineClassName(i.light),n=this.getCSSTextForModelDecorationInlineClassName(i.dark);break;case 2:e=this.getCSSTextForModelDecorationGlyphMarginClassName(i),t=this.getCSSTextForModelDecorationGlyphMarginClassName(i.light),n=this.getCSSTextForModelDecorationGlyphMarginClassName(i.dark);break;case 3:e=this.getCSSTextForModelDecorationContentClassName(i.before),t=this.getCSSTextForModelDecorationContentClassName(i.light&&i.light.before),n=this.getCSSTextForModelDecorationContentClassName(i.dark&&i.dark.before);break;case 4:e=this.getCSSTextForModelDecorationContentClassName(i.after),t=this.getCSSTextForModelDecorationContentClassName(i.light&&i.light.after),n=this.getCSSTextForModelDecorationContentClassName(i.dark&&i.dark.after);break;default:throw new Error("Unknown rule type: "+this._ruleType)}var r=this._providerArgs.styleSheet,o=!1;e.length>0&&(r.insertRule("".concat(this._unThemedSelector," {").concat(e,"}"),0),o=!0),t.length>0&&(r.insertRule(".vs".concat(this._unThemedSelector," {").concat(t,"}"),0),o=!0),n.length>0&&(r.insertRule(".vs-dark".concat(this._unThemedSelector,", .hc-black").concat(this._unThemedSelector," {").concat(n,"}"),0),o=!0),this._hasContent=o}},{key:"_removeCSS",value:function(){this._providerArgs.styleSheet.removeRulesContainingSelector(this._unThemedSelector)}},{key:"getCSSTextForModelDecorationClassName",value:function(e){if(!e)return"";var t=[];return this.collectCSSText(e,["backgroundColor"],t),this.collectCSSText(e,["outline","outlineColor","outlineStyle","outlineWidth"],t),this.collectBorderSettingsCSSText(e,t),t.join("")}},{key:"getCSSTextForModelDecorationInlineClassName",value:function(e){if(!e)return"";var t=[];return this.collectCSSText(e,["fontStyle","fontWeight","textDecoration","cursor","color","opacity","letterSpacing"],t),e.letterSpacing&&(this._hasLetterSpacing=!0),t.join("")}},{key:"getCSSTextForModelDecorationContentClassName",value:function(e){if(!e)return"";var t=[];if("undefined"!==typeof e){if(this.collectBorderSettingsCSSText(e,t),"undefined"!==typeof e.contentIconPath&&t.push(Ue.WU(xi.contentIconPath,ne.asCSSUrl(W.o.revive(e.contentIconPath)))),"string"===typeof e.contentText){var n=e.contentText.match(/^.*$/m)[0].replace(/['\\]/g,"\\$&");t.push(Ue.WU(xi.contentText,n))}this.collectCSSText(e,["fontStyle","fontWeight","fontSize","fontFamily","textDecoration","color","opacity","backgroundColor","margin","padding"],t),this.collectCSSText(e,["width","height"],t)&&t.push("display:inline-block;")}return t.join("")}},{key:"getCSSTextForModelDecorationGlyphMarginClassName",value:function(e){if(!e)return"";var t=[];return"undefined"!==typeof e.gutterIconPath&&(t.push(Ue.WU(xi.gutterIconPath,ne.asCSSUrl(W.o.revive(e.gutterIconPath)))),"undefined"!==typeof e.gutterIconSize&&t.push(Ue.WU(xi.gutterIconSize,e.gutterIconSize))),t.join("")}},{key:"collectBorderSettingsCSSText",value:function(e,t){return!!this.collectCSSText(e,["border","borderColor","borderRadius","borderSpacing","borderStyle","borderWidth"],t)&&(t.push(Ue.WU("box-sizing: border-box;")),!0)}},{key:"collectCSSText",value:function(e,t,n){var i,r=n.length,o=(0,X.Z)(t);try{for(o.s();!(i=o.n()).done;){var a=i.value,s=this.resolveValue(e[a]);"string"===typeof s&&n.push(Ue.WU(xi[a],s))}}catch(u){o.e(u)}finally{o.f()}return n.length!==r}},{key:"resolveValue",value:function(e){if((0,_e.I)(e)){this._usesThemeColors=!0;var t=this._theme.getColor(e.id);return t?t.toString():"transparent"}return e}}]),e}(),Ei=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,null,[{key:"getClassName",value:function(e,t){return"ced-"+e+"-"+t}},{key:"getSelector",value:function(e,t,n){var i=".monaco-editor ."+this.getClassName(e,n);return t&&(i=i+"."+this.getClassName(t,n)),3===n?i+="::before":4===n&&(i+="::after"),i}}]),e}(),Di=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},Ni=function(e,t){return function(n,i){t(n,i,e)}},Mi=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r){var o;return(0,F.Z)(this,n),(o=t.call(this,e,r)).onCodeEditorAdd((function(){return o._checkContextKey()})),o.onCodeEditorRemove((function(){return o._checkContextKey()})),o._editorIsOpen=i.createKey("editorIsOpen",!1),o._activeCodeEditor=null,o}return(0,j.Z)(n,[{key:"_checkContextKey",value:function(){var e,t=!1,n=(0,X.Z)(this.listCodeEditors());try{for(n.s();!(e=n.n()).done;){if(!e.value.isSimpleWidget){t=!0;break}}}catch(i){n.e(i)}finally{n.f()}this._editorIsOpen.set(t)}},{key:"setActiveCodeEditor",value:function(e){this._activeCodeEditor=e}},{key:"getActiveCodeEditor",value:function(){return this._activeCodeEditor}},{key:"openCodeEditor",value:function(e,t,n){return t?Promise.resolve(this.doOpenEditor(t,e)):Promise.resolve(null)}},{key:"doOpenEditor",value:function(e,t){if(!this.findModel(e,t.resource)){if(t.resource){var n=t.resource.scheme;if(n===ae.lg.http||n===ae.lg.https)return(0,ne.windowOpenNoOpener)(t.resource.toString()),e}return null}var i=t.options?t.options.selection:null;if(i)if("number"===typeof i.endLineNumber&&"number"===typeof i.endColumn)e.setSelection(i),e.revealRangeInCenter(i,1);else{var r={lineNumber:i.startLineNumber,column:i.startColumn};e.setPosition(r),e.revealPositionInCenter(r,1)}return e}},{key:"findModel",value:function(e,t){var n=e.getModel();return n&&n.uri.toString()!==t.toString()?null:n}}]),n}(Ci);Mi=Di([Ni(1,li.i6),Ni(2,fi.XE)],Mi);var Ti=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},Ii=function(e,t){return function(n,i){t(n,i,e)}},Oi=0,Ai=!1;var Ri=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r,o,a,s,u,l,c,d){var h;(0,F.Z)(this,n);var f=Object.assign({},i);return f.ariaLabel=f.ariaLabel||Pn.B8.editorViewAccessibleLabel,f.ariaLabel=f.ariaLabel+";"+Pn.B8.accessibilityHelpMessage,(h=t.call(this,e,f,{},r,o,a,s,l,c,d))._standaloneKeybindingService=u instanceof Un?u:null,Ai||(Ai=!0,ii.wW(document.body)),h}return(0,j.Z)(n,[{key:"addCommand",value:function(e,t,n){if(!this._standaloneKeybindingService)return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"),null;var i="DYNAMIC_"+ ++Oi,r=li.Ao.deserialize(n);return this._standaloneKeybindingService.addDynamicKeybinding(i,e,t,r),i}},{key:"createContextKey",value:function(e,t){return this._contextKeyService.createKey(e,t)}},{key:"addAction",value:function(e){var t=this;if("string"!==typeof e.id||"string"!==typeof e.label||"function"!==typeof e.run)throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");if(!this._standaloneKeybindingService)return console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),Me.JT.None;var n=e.id,i=e.label,r=li.Ao.and(li.Ao.equals("editorId",this.getId()),li.Ao.deserialize(e.precondition)),o=e.keybindings,a=li.Ao.and(r,li.Ao.deserialize(e.keybindingContext)),s=e.contextMenuGroupId||null,u=e.contextMenuOrder||0,l=function(n){for(var i=arguments.length,r=new Array(i>1?i-1:0),o=1;o<i;o++)r[o-1]=arguments[o];return Promise.resolve(e.run.apply(e,[t].concat(r)))},c=new Me.SL,d=this.getId()+":"+n;if(c.add(ue.P.registerCommand(d,l)),s){var h={command:{id:d,title:i},when:r,group:s,order:u};c.add(ui.BH.appendMenuItem(ui.eH.EditorContext,h))}if(Array.isArray(o)){var f,p=(0,X.Z)(o);try{for(p.s();!(f=p.n()).done;){var g=f.value;c.add(this._standaloneKeybindingService.addDynamicKeybinding(d,g,l,a))}}catch(m){p.e(m)}finally{p.f()}}var v=new ai.p(d,i,i,r,l,this._contextKeyService);return this._actions[n]=v,c.add((0,Me.OF)((function(){delete t._actions[n]}))),c}},{key:"_triggerCommand",value:function(e,t){if(this._codeEditorService instanceof Mi)try{this._codeEditorService.setActiveCodeEditor(this),(0,Ee.Z)((0,De.Z)(n.prototype),"_triggerCommand",this).call(this,e,t)}finally{this._codeEditorService.setActiveCodeEditor(null)}else(0,Ee.Z)((0,De.Z)(n.prototype),"_triggerCommand",this).call(this,e,t)}}]),n}(ri.Gm),Pi=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r,o,a,s,u,l,c,d,h,f,p,g,v){var m;(0,F.Z)(this,n);var _=Object.assign({},i);Jn(f,_,!1);var y=d.registerEditorContainer(e);"string"===typeof _.theme&&d.setTheme(_.theme),"undefined"!==typeof _.autoDetectHighContrast&&d.setAutoDetectHighContrast(Boolean(_.autoDetectHighContrast));var b,w=_.model;if(delete _.model,(m=t.call(this,e,_,o,a,s,u,l,d,h,p))._contextViewService=c,m._configurationService=f,m._standaloneThemeService=d,m._register(r),m._register(y),"undefined"===typeof w?(b=Fi(g,v,_.value||"",_.language||"text/plain",void 0),m._ownsModel=!0):(b=w,m._ownsModel=!1),m._attachModel(b),b){var C={oldModelUrl:null,newModelUrl:b.uri};m._onDidChangeModel.fire(C)}return m}return(0,j.Z)(n,[{key:"dispose",value:function(){(0,Ee.Z)((0,De.Z)(n.prototype),"dispose",this).call(this)}},{key:"updateOptions",value:function(e){Jn(this._configurationService,e,!1),"string"===typeof e.theme&&this._standaloneThemeService.setTheme(e.theme),"undefined"!==typeof e.autoDetectHighContrast&&this._standaloneThemeService.setAutoDetectHighContrast(Boolean(e.autoDetectHighContrast)),(0,Ee.Z)((0,De.Z)(n.prototype),"updateOptions",this).call(this,e)}},{key:"_attachModel",value:function(e){(0,Ee.Z)((0,De.Z)(n.prototype),"_attachModel",this).call(this,e),this._modelData&&this._contextViewService.setContainer(this._modelData.view.domNode.domNode)}},{key:"_postDetachModelCleanup",value:function(e){(0,Ee.Z)((0,De.Z)(n.prototype),"_postDetachModelCleanup",this).call(this,e),e&&this._ownsModel&&(e.dispose(),this._ownsModel=!1)}}]),n}(Ri=Ti([Ii(2,di.TG),Ii(3,Q.$),Ii(4,ue.H),Ii(5,li.i6),Ii(6,hi.d),Ii(7,fi.XE),Ii(8,An.lT),Ii(9,pi.F)],Ri));Pi=Ti([Ii(3,di.TG),Ii(4,Q.$),Ii(5,ue.H),Ii(6,li.i6),Ii(7,hi.d),Ii(8,ci.u),Ii(9,si.Z),Ii(10,An.lT),Ii(11,vn.Ui),Ii(12,pi.F),Ii(13,yt.q),Ii(14,ke.h)],Pi);var Zi=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r,o,a,s,u,l,c,d,h,f,p,g,v){var m;(0,F.Z)(this,n);var _=Object.assign({},i);Jn(f,_,!0);var y=d.registerEditorContainer(e);return"string"===typeof _.theme&&d.setTheme(_.theme),"undefined"!==typeof _.autoDetectHighContrast&&d.setAutoDetectHighContrast(Boolean(_.autoDetectHighContrast)),(m=t.call(this,e,_,{},v,l,a,o,c,d,h,p,g))._contextViewService=u,m._configurationService=f,m._standaloneThemeService=d,m._register(r),m._register(y),m._contextViewService.setContainer(m._containerDomElement),m}return(0,j.Z)(n,[{key:"dispose",value:function(){(0,Ee.Z)((0,De.Z)(n.prototype),"dispose",this).call(this)}},{key:"updateOptions",value:function(e){Jn(this._configurationService,e,!0),"string"===typeof e.theme&&this._standaloneThemeService.setTheme(e.theme),"undefined"!==typeof e.autoDetectHighContrast&&this._standaloneThemeService.setAutoDetectHighContrast(Boolean(e.autoDetectHighContrast)),(0,Ee.Z)((0,De.Z)(n.prototype),"updateOptions",this).call(this,e)}},{key:"_createInnerEditor",value:function(e,t,n){return e.createInstance(Ri,t,n)}},{key:"getOriginalEditor",value:function(){return(0,Ee.Z)((0,De.Z)(n.prototype),"getOriginalEditor",this).call(this)}},{key:"getModifiedEditor",value:function(){return(0,Ee.Z)((0,De.Z)(n.prototype),"getModifiedEditor",this).call(this)}},{key:"addCommand",value:function(e,t,n){return this.getModifiedEditor().addCommand(e,t,n)}},{key:"createContextKey",value:function(e,t){return this.getModifiedEditor().createContextKey(e,t)}},{key:"addAction",value:function(e){return this.getModifiedEditor().addAction(e)}}]),n}(oi.p);function Fi(e,t,n,i,r){if(n=n||"",!i){var o=n.indexOf("\n"),a=n;return-1!==o&&(a=n.substring(0,o)),ji(e,n,t.createByFilepathOrFirstLine(r||null,a),r)}return ji(e,n,t.create(i),r)}function ji(e,t,n,i){return e.createModel(t,n,i)}Zi=Ti([Ii(3,di.TG),Ii(4,li.i6),Ii(5,hi.d),Ii(6,ci.u),Ii(7,Ce.p),Ii(8,Q.$),Ii(9,si.Z),Ii(10,An.lT),Ii(11,vn.Ui),Ii(12,ci.i),Ii(13,vi.e),Ii(14,gi.p)],Zi);var Hi=function(){function e(t){(0,F.Z)(this,e),this._languageIdentifier=t}return(0,j.Z)(e,[{key:"getId",value:function(){return this._languageIdentifier.language}}]),e}(),Bi=n(36912),zi=n(79612),Wi="text/plain",Vi="application/unknown",Yi=[],Ui=[],Ki=[];function qi(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=function(e){return{id:e.id,mime:e.mime,filename:e.filename,extension:e.extension,filepattern:e.filepattern,firstline:e.firstline,userConfigured:e.userConfigured,filenameLowercase:e.filename?e.filename.toLowerCase():void 0,extensionLowercase:e.extension?e.extension.toLowerCase():void 0,filepatternLowercase:e.filepattern?e.filepattern.toLowerCase():void 0,filepatternOnPath:!!e.filepattern&&e.filepattern.indexOf(Bi.KR.sep)>=0}}(e);Yi.push(n),n.userConfigured?Ki.push(n):Ui.push(n),t&&!n.userConfigured&&Yi.forEach((function(e){e.mime===n.mime||e.userConfigured||(n.extension&&e.extension===n.extension&&console.warn("Overwriting extension <<".concat(n.extension,">> to now point to mime <<").concat(n.mime,">>")),n.filename&&e.filename===n.filename&&console.warn("Overwriting filename <<".concat(n.filename,">> to now point to mime <<").concat(n.mime,">>")),n.filepattern&&e.filepattern===n.filepattern&&console.warn("Overwriting filepattern <<".concat(n.filepattern,">> to now point to mime <<").concat(n.mime,">>")),n.firstline&&e.firstline===n.firstline&&console.warn("Overwriting firstline <<".concat(n.firstline,">> to now point to mime <<").concat(n.mime,">>")))}))}function Gi(e,t){var n;if(e)switch(e.scheme){case ae.lg.file:n=e.fsPath;break;case ae.lg.data:n=se.Vb.parseMetaData(e).get(se.Vb.META_DATA_LABEL);break;default:n=e.path}if(!n)return[Vi];n=n.toLowerCase();var i=(0,Bi.EZ)(n),r=$i(n,i,Ki);if(r)return[r,Wi];var o=$i(n,i,Ui);if(o)return[o,Wi];if(t){var a=function(e){(0,Ue.uS)(e)&&(e=e.substr(1));if(e.length>0)for(var t=Yi.length-1;t>=0;t--){var n=Yi[t];if(n.firstline){var i=e.match(n.firstline);if(i&&i.length>0)return n.mime}}return null}(t);if(a)return[a,Wi]}return[Vi]}function $i(e,t,n){for(var i=null,r=null,o=null,a=n.length-1;a>=0;a--){var s=n[a];if(t===s.filenameLowercase){i=s;break}if(s.filepattern&&(!r||s.filepattern.length>r.filepattern.length)){var u=s.filepatternOnPath?e:t;(0,zi.EQ)(s.filepatternLowercase,u)&&(r=s)}s.extension&&(!o||s.extension.length>o.extension.length)&&t.endsWith(s.extensionLowercase)&&(o=s)}return i?i.mime:r?r.mime:o?o.mime:null}var Qi=n(54970),Xi=n(38774),Ji=Object.prototype.hasOwnProperty,er=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(){var e,i=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return(0,F.Z)(this,n),(e=t.call(this))._onDidChange=e._register(new B.Q5),e.onDidChange=e._onDidChange.event,e._warnOnOverwrite=r,e._nextLanguageId2=1,e._languageIdToLanguage=[],e._languageToLanguageId=Object.create(null),e._languages={},e._mimeTypesMap={},e._nameMap={},e._lowercaseNameMap={},i&&(e._initializeFromRegistry(),e._register(Qi.dQ.onDidChangeLanguages((function(t){return e._initializeFromRegistry()})))),e}return(0,j.Z)(n,[{key:"_initializeFromRegistry",value:function(){this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={};var e=Qi.dQ.getLanguages();this._registerLanguages(e)}},{key:"_registerLanguages",value:function(e){var t,n=this,i=(0,X.Z)(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;this._registerLanguage(r)}}catch(o){i.e(o)}finally{i.f()}this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},Object.keys(this._languages).forEach((function(e){var t=n._languages[e];t.name&&(n._nameMap[t.name]=t.identifier),t.aliases.forEach((function(e){n._lowercaseNameMap[e.toLowerCase()]=t.identifier})),t.mimetypes.forEach((function(e){n._mimeTypesMap[e]=t.identifier}))})),Xi.B.as(_n.IP.Configuration).registerOverrideIdentifiers(Qi.dQ.getLanguages().map((function(e){return e.id}))),this._onDidChange.fire()}},{key:"_getLanguageId",value:function(e){if(this._languageToLanguageId[e])return this._languageToLanguageId[e];var t=this._nextLanguageId2++;return this._languageIdToLanguage[t]=e,this._languageToLanguageId[e]=t,t}},{key:"_registerLanguage",value:function(e){var t,n=e.id;if(Ji.call(this._languages,n))t=this._languages[n];else{var i=this._getLanguageId(n);t={identifier:new be.rl(n,i),name:null,mimetypes:[],aliases:[],extensions:[],filenames:[],configurationFiles:[]},this._languages[n]=t}this._mergeLanguage(t,e)}},{key:"_mergeLanguage",value:function(e,t){var n,i=t.id,r=null;Array.isArray(t.mimetypes)&&t.mimetypes.length>0&&((n=e.mimetypes).push.apply(n,(0,J.Z)(t.mimetypes)),r=t.mimetypes[0]);if(r||(r="text/x-".concat(i),e.mimetypes.push(r)),Array.isArray(t.extensions)){t.configuration?e.extensions=t.extensions.concat(e.extensions):e.extensions=e.extensions.concat(t.extensions);var o,a=(0,X.Z)(t.extensions);try{for(a.s();!(o=a.n()).done;){qi({id:i,mime:r,extension:o.value},this._warnOnOverwrite)}}catch(b){a.e(b)}finally{a.f()}}if(Array.isArray(t.filenames)){var s,u=(0,X.Z)(t.filenames);try{for(u.s();!(s=u.n()).done;){var l=s.value;qi({id:i,mime:r,filename:l},this._warnOnOverwrite),e.filenames.push(l)}}catch(b){u.e(b)}finally{u.f()}}if(Array.isArray(t.filenamePatterns)){var c,d=(0,X.Z)(t.filenamePatterns);try{for(d.s();!(c=d.n()).done;){qi({id:i,mime:r,filepattern:c.value},this._warnOnOverwrite)}}catch(b){d.e(b)}finally{d.f()}}if("string"===typeof t.firstLine&&t.firstLine.length>0){var h=t.firstLine;"^"!==h.charAt(0)&&(h="^"+h);try{var f=new RegExp(h);Ue.IO(f)||qi({id:i,mime:r,firstline:f},this._warnOnOverwrite)}catch(b){(0,Te.dL)(b)}}e.aliases.push(i);var p=null;if("undefined"!==typeof t.aliases&&Array.isArray(t.aliases)&&(p=0===t.aliases.length?[null]:t.aliases),null!==p){var g,v=(0,X.Z)(p);try{for(v.s();!(g=v.n()).done;){var m=g.value;m&&0!==m.length&&e.aliases.push(m)}}catch(b){v.e(b)}finally{v.f()}}var _=null!==p&&p.length>0;if(_&&null===p[0]);else{var y=(_?p[0]:null)||i;!_&&e.name||(e.name=y)}t.configuration&&e.configurationFiles.push(t.configuration)}},{key:"isRegisteredMode",value:function(e){return!!Ji.call(this._mimeTypesMap,e)||Ji.call(this._languages,e)}},{key:"getModeIdForLanguageNameLowercase",value:function(e){return Ji.call(this._lowercaseNameMap,e)?this._lowercaseNameMap[e].language:null}},{key:"extractModeIds",value:function(e){var t=this;return e?e.split(",").map((function(e){return e.trim()})).map((function(e){return Ji.call(t._mimeTypesMap,e)?t._mimeTypesMap[e].language:e})).filter((function(e){return Ji.call(t._languages,e)})):[]}},{key:"getLanguageIdentifier",value:function(e){if(e===we.TG||0===e)return we.pA;var t;if("string"===typeof e)t=e;else if(!(t=this._languageIdToLanguage[e]))return null;return Ji.call(this._languages,t)?this._languages[t].identifier:null}},{key:"getModeIdsFromFilepathOrFirstLine",value:function(e,t){if(!e&&!t)return[];var n=Gi(e,t);return this.extractModeIds(n.join(","))}}]),n}(Me.JT),tr=function(){function e(t,n){var i,r=this;(0,F.Z)(this,e),this._selector=n,this.languageIdentifier=this._selector(),this._onDidChange=new B.Q5({onFirstListenerAdd:function(){i=t((function(){return r._evaluate()}))},onLastListenerRemove:function(){i.dispose()}}),this.onDidChange=this._onDidChange.event}return(0,j.Z)(e,[{key:"_evaluate",value:function(){var e=this._selector();e.id!==this.languageIdentifier.id&&(this.languageIdentifier=e,this._onDidChange.fire(this.languageIdentifier))}}]),e}(),nr=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(){var e,i=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return(0,F.Z)(this,n),(e=t.call(this))._onDidCreateMode=e._register(new B.Q5),e.onDidCreateMode=e._onDidCreateMode.event,e._onLanguagesMaybeChanged=e._register(new B.Q5({leakWarningThreshold:200})),e.onLanguagesMaybeChanged=e._onLanguagesMaybeChanged.event,e._instantiatedModes={},e._registry=e._register(new er(!0,i)),e._register(e._registry.onDidChange((function(){return e._onLanguagesMaybeChanged.fire()}))),e}return(0,j.Z)(n,[{key:"isRegisteredMode",value:function(e){return this._registry.isRegisteredMode(e)}},{key:"getModeIdForLanguageName",value:function(e){return this._registry.getModeIdForLanguageNameLowercase(e)}},{key:"getModeIdByFilepathOrFirstLine",value:function(e,t){var n=this._registry.getModeIdsFromFilepathOrFirstLine(e,t);return(0,wt.Xh)(n,null)}},{key:"getModeId",value:function(e){var t=this._registry.extractModeIds(e);return(0,wt.Xh)(t,null)}},{key:"getLanguageIdentifier",value:function(e){return this._registry.getLanguageIdentifier(e)}},{key:"create",value:function(e){var t=this;return new tr(this.onLanguagesMaybeChanged,(function(){var n=t.getModeId(e);return t._createModeAndGetLanguageIdentifier(n)}))}},{key:"createByFilepathOrFirstLine",value:function(e,t){var n=this;return new tr(this.onLanguagesMaybeChanged,(function(){var i=n.getModeIdByFilepathOrFirstLine(e,t);return n._createModeAndGetLanguageIdentifier(i)}))}},{key:"_createModeAndGetLanguageIdentifier",value:function(e){var t=this.getLanguageIdentifier(e||"plaintext")||we.pA;return this._getOrCreateMode(t.language),t}},{key:"triggerMode",value:function(e){var t=this.getModeId(e);this._getOrCreateMode(t||"plaintext")}},{key:"_getOrCreateMode",value:function(e){if(!this._instantiatedModes.hasOwnProperty(e)){var t=this.getLanguageIdentifier(e)||we.pA;this._instantiatedModes[e]=new Hi(t),this._onDidCreateMode.fire(this._instantiatedModes[e])}return this._instantiatedModes[e]}}]),n}(Me.JT),ir=n(77993),rr=n(89938),or=(0,j.Z)((function e(t,n,i,r,o){(0,F.Z)(this,e),this.token=t,this.index=n,this.fontStyle=i,this.foreground=r,this.background=o}));function ar(e,t){e.sort((function(e,t){var n=function(e,t){if(e<t)return-1;if(e>t)return 1;return 0}(e.token,t.token);return 0!==n?n:e.index-t.index}));for(var n=0,i="000000",r="ffffff";e.length>=1&&""===e[0].token;){var o=e.shift();-1!==o.fontStyle&&(n=o.fontStyle),null!==o.foreground&&(i=o.foreground),null!==o.background&&(r=o.background)}var a,s=new ur,u=(0,X.Z)(t);try{for(u.s();!(a=u.n()).done;){var l=a.value;s.getId(l)}}catch(m){u.e(m)}finally{u.f()}for(var c=s.getId(i),d=s.getId(r),h=new dr(n,c,d),f=new hr(h),p=0,g=e.length;p<g;p++){var v=e[p];f.insert(v.token,v.fontStyle,s.getId(v.foreground),s.getId(v.background))}return new lr(s,f)}var sr=/^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/,ur=function(){function e(){(0,F.Z)(this,e),this._lastColorId=0,this._id2color=[],this._color2id=new Map}return(0,j.Z)(e,[{key:"getId",value:function(e){if(null===e)return 0;var t=e.match(sr);if(!t)throw new Error("Illegal value for token color: "+e);e=t[1].toUpperCase();var n=this._color2id.get(e);return n||(n=++this._lastColorId,this._color2id.set(e,n),this._id2color[n]=rr.Il.fromHex("#"+e),n)}},{key:"getColorMap",value:function(){return this._id2color.slice(0)}}]),e}(),lr=function(){function e(t,n){(0,F.Z)(this,e),this._colorMap=t,this._root=n,this._cache=new Map}return(0,j.Z)(e,[{key:"getColorMap",value:function(){return this._colorMap.getColorMap()}},{key:"_match",value:function(e){return this._root.match(e)}},{key:"match",value:function(e,t){var n=this._cache.get(t);if("undefined"===typeof n){var i=this._match(t),r=function(e){var t=e.match(cr);if(!t)return 0;switch(t[1]){case"comment":return 1;case"string":return 2;case"regex":case"regexp":return 4}throw new Error("Unexpected match for standard token type!")}(t);n=(i.metadata|r<<8)>>>0,this._cache.set(t,n)}return(n|e<<0)>>>0}}],[{key:"createFromRawTokenTheme",value:function(e,t){return this.createFromParsedTokenTheme(function(e){if(!e||!Array.isArray(e))return[];for(var t=[],n=0,i=0,r=e.length;i<r;i++){var o=e[i],a=-1;if("string"===typeof o.fontStyle){a=0;for(var s=o.fontStyle.split(" "),u=0,l=s.length;u<l;u++)switch(s[u]){case"italic":a|=1;break;case"bold":a|=2;break;case"underline":a|=4}}var c=null;"string"===typeof o.foreground&&(c=o.foreground);var d=null;"string"===typeof o.background&&(d=o.background),t[n++]=new or(o.token||"",i,a,c,d)}return t}(e),t)}},{key:"createFromParsedTokenTheme",value:function(e,t){return ar(e,t)}}]),e}(),cr=/\b(comment|string|regex|regexp)\b/;var dr=function(){function e(t,n,i){(0,F.Z)(this,e),this._fontStyle=t,this._foreground=n,this._background=i,this.metadata=(this._fontStyle<<11|this._foreground<<14|this._background<<23)>>>0}return(0,j.Z)(e,[{key:"clone",value:function(){return new e(this._fontStyle,this._foreground,this._background)}},{key:"acceptOverwrite",value:function(e,t,n){-1!==e&&(this._fontStyle=e),0!==t&&(this._foreground=t),0!==n&&(this._background=n),this.metadata=(this._fontStyle<<11|this._foreground<<14|this._background<<23)>>>0}}]),e}(),hr=function(){function e(t){(0,F.Z)(this,e),this._mainRule=t,this._children=new Map}return(0,j.Z)(e,[{key:"match",value:function(e){if(""===e)return this._mainRule;var t,n,i=e.indexOf(".");-1===i?(t=e,n=""):(t=e.substring(0,i),n=e.substring(i+1));var r=this._children.get(t);return"undefined"!==typeof r?r.match(n):this._mainRule}},{key:"insert",value:function(t,n,i,r){if(""!==t){var o,a,s=t.indexOf(".");-1===s?(o=t,a=""):(o=t.substring(0,s),a=t.substring(s+1));var u=this._children.get(o);"undefined"===typeof u&&(u=new e(this._mainRule.clone()),this._children.set(o,u)),u.insert(a,n,i,r)}else this._mainRule.acceptOverwrite(n,i,r)}}]),e}();var fr,pr,gr,vr=n(80449),mr=n(92992),_r={base:"vs",inherit:!1,rules:[{token:"",foreground:"000000",background:"fffffe"},{token:"invalid",foreground:"cd3131"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"001188"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"delimiter.xml",foreground:"0000FF"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"FF0000"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"FF0000"},{token:"attribute.value",foreground:"0451A5"},{token:"attribute.value.number",foreground:"098658"},{token:"attribute.value.unit",foreground:"098658"},{token:"attribute.value.html",foreground:"0000FF"},{token:"attribute.value.xml",foreground:"0000FF"},{token:"string",foreground:"A31515"},{token:"string.html",foreground:"0000FF"},{token:"string.sql",foreground:"FF0000"},{token:"string.yaml",foreground:"0451A5"},{token:"keyword",foreground:"0000FF"},{token:"keyword.json",foreground:"0451A5"},{token:"keyword.flow",foreground:"AF00DB"},{token:"keyword.flow.scss",foreground:"0000FF"},{token:"operator.scss",foreground:"666666"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"C700C7"}],colors:(fr={},(0,Ve.Z)(fr,mr.cv,"#FFFFFE"),(0,Ve.Z)(fr,mr.NO,"#000000"),(0,Ve.Z)(fr,mr.ES,"#E5EBF1"),(0,Ve.Z)(fr,vr.tR,"#D3D3D3"),(0,Ve.Z)(fr,vr.Ym,"#939393"),(0,Ve.Z)(fr,mr.Rz,"#ADD6FF4D"),fr)},yr={base:"vs-dark",inherit:!1,rules:[{token:"",foreground:"D4D4D4",background:"1E1E1E"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"74B0DF"},{token:"variable.predefined",foreground:"4864AA"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"B5CEA8"},{token:"number.hex",foreground:"5BB498"},{token:"regexp",foreground:"B46695"},{token:"annotation",foreground:"cc6666"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"DCDCDC"},{token:"delimiter.html",foreground:"808080"},{token:"delimiter.xml",foreground:"808080"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"A79873"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"DD6A6F"},{token:"metatag.content.html",foreground:"9CDCFE"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key.json",foreground:"9CDCFE"},{token:"string.value.json",foreground:"CE9178"},{token:"attribute.name",foreground:"9CDCFE"},{token:"attribute.value",foreground:"CE9178"},{token:"attribute.value.number.css",foreground:"B5CEA8"},{token:"attribute.value.unit.css",foreground:"B5CEA8"},{token:"attribute.value.hex.css",foreground:"D4D4D4"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"keyword.json",foreground:"CE9178"},{token:"keyword.flow.scss",foreground:"569CD6"},{token:"operator.scss",foreground:"909090"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:(pr={},(0,Ve.Z)(pr,mr.cv,"#1E1E1E"),(0,Ve.Z)(pr,mr.NO,"#D4D4D4"),(0,Ve.Z)(pr,mr.ES,"#3A3D41"),(0,Ve.Z)(pr,vr.tR,"#404040"),(0,Ve.Z)(pr,vr.Ym,"#707070"),(0,Ve.Z)(pr,mr.Rz,"#ADD6FF26"),pr)},br={base:"hc-black",inherit:!1,rules:[{token:"",foreground:"FFFFFF",background:"000000"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"1AEBFF"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"FFFFFF"},{token:"regexp",foreground:"C0C0C0"},{token:"annotation",foreground:"569CD6"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"FFFF00"},{token:"delimiter.html",foreground:"FFFF00"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta",foreground:"D4D4D4"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"569CD6"},{token:"metatag.content.html",foreground:"1AEBFF"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key",foreground:"9CDCFE"},{token:"string.value",foreground:"CE9178"},{token:"attribute.name",foreground:"569CD6"},{token:"attribute.value",foreground:"3FF23F"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:(gr={},(0,Ve.Z)(gr,mr.cv,"#000000"),(0,Ve.Z)(gr,mr.NO,"#FFFFFF"),(0,Ve.Z)(gr,vr.tR,"#FFFFFF"),(0,Ve.Z)(gr,vr.Ym,"#FFFFFF"),gr)},wr=n(7644),Cr=n(62239);var kr="vs",Sr="vs-dark",xr="hc-black",Lr=Xi.B.as(mr.IP.ColorContribution),Er=Xi.B.as(fi.IP.ThemingContribution),Dr=function(){function e(t,n){(0,F.Z)(this,e),this.semanticHighlighting=!1,this.themeData=n;var i=n.base;t.length>0?(Nr(t)?this.id=t:this.id=i+" "+t,this.themeName=t):(this.id=i,this.themeName=i),this.colors=null,this.defaultColors=Object.create(null),this._tokenTheme=null}return(0,j.Z)(e,[{key:"base",get:function(){return this.themeData.base}},{key:"notifyBaseUpdated",value:function(){this.themeData.inherit&&(this.colors=null,this._tokenTheme=null)}},{key:"getColors",value:function(){if(!this.colors){var e=new Map;for(var t in this.themeData.colors)e.set(t,rr.Il.fromHex(this.themeData.colors[t]));if(this.themeData.inherit){var n=Mr(this.themeData.base);for(var i in n.colors)e.has(i)||e.set(i,rr.Il.fromHex(n.colors[i]))}this.colors=e}return this.colors}},{key:"getColor",value:function(e,t){var n=this.getColors().get(e);return n||(!1!==t?this.getDefault(e):void 0)}},{key:"getDefault",value:function(e){var t=this.defaultColors[e];return t||(t=Lr.resolveDefaultColor(e,this),this.defaultColors[e]=t,t)}},{key:"defines",value:function(e){return Object.prototype.hasOwnProperty.call(this.getColors(),e)}},{key:"type",get:function(){switch(this.base){case kr:return wr.e.LIGHT;case xr:return wr.e.HIGH_CONTRAST;default:return wr.e.DARK}}},{key:"tokenTheme",get:function(){if(!this._tokenTheme){var e=[],t=[];if(this.themeData.inherit){var n=Mr(this.themeData.base);e=n.rules,n.encodedTokensColors&&(t=n.encodedTokensColors)}e=e.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(t=this.themeData.encodedTokensColors),this._tokenTheme=lr.createFromRawTokenTheme(e,t)}return this._tokenTheme}},{key:"getTokenStyleMetadata",value:function(e,t,n){var i=this.tokenTheme._match([e].concat(t).join(".")).metadata,r=be.NX.getForeground(i),o=be.NX.getFontStyle(i);return{foreground:r,italic:Boolean(1&o),bold:Boolean(2&o),underline:Boolean(4&o)}}}]),e}();function Nr(e){return e===kr||e===Sr||e===xr}function Mr(e){switch(e){case kr:return _r;case Sr:return yr;case xr:return br}}function Tr(e){var t=Mr(e);return new Dr(e,t)}var Ir=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(){var e;(0,F.Z)(this,n),(e=t.call(this))._onColorThemeChange=e._register(new B.Q5),e.onDidColorThemeChange=e._onColorThemeChange.event,e._environment=Object.create(null),e._autoDetectHighContrast=!0,e._knownThemes=new Map,e._knownThemes.set(kr,Tr(kr)),e._knownThemes.set(Sr,Tr(Sr)),e._knownThemes.set(xr,Tr(xr));var i=function(){var e=new B.Q5,t=(0,Cr.Ks)();return t.onDidChange((function(){return e.fire()})),{onDidChange:e.event,getCSS:function(){var e,n={},i=function(e){for(var i=e.defaults;fi.kS.isThemeIcon(i);){var r=t.getIcon(i.id);if(!r)return;i=r.defaults}var o=i.fontId;if(o){var a=t.getIconFont(o);if(a)return n[o]=a,".codicon-".concat(e.id,":before { content: '").concat(i.fontCharacter,"'; font-family: ").concat((0,ne.asCSSPropertyValue)(o),"; }")}return".codicon-".concat(e.id,":before { content: '").concat(i.fontCharacter,"'; }")},r=[],o=(0,X.Z)(t.getIcons());try{for(o.s();!(e=o.n()).done;){var a=i(e.value);a&&r.push(a)}}catch(l){o.e(l)}finally{o.f()}for(var s in n){var u=n[s].definition.src.map((function(e){return"".concat((0,ne.asCSSUrl)(e.location)," format('").concat(e.format,"')")})).join(", ");r.push("@font-face { src: ".concat(u,"; font-family: ").concat((0,ne.asCSSPropertyValue)(s),"; }"))}return r.join("\n")}}}();return e._codiconCSS=i.getCSS(),e._themeCSS="",e._allCSS="".concat(e._codiconCSS,"\n").concat(e._themeCSS),e._globalStyleElement=null,e._styleElements=[],e._colorMapOverride=null,e.setTheme(kr),i.onDidChange((function(){e._codiconCSS=i.getCSS(),e._updateCSS()})),ne.addMatchMediaChangeListener("(forced-colors: active)",(function(){e._updateActualTheme()})),e}return(0,j.Z)(n,[{key:"registerEditorContainer",value:function(e){return ne.isInShadowDOM(e)?this._registerShadowDomContainer(e):this._registerRegularEditorContainer()}},{key:"_registerRegularEditorContainer",value:function(){return this._globalStyleElement||(this._globalStyleElement=ne.createStyleSheet(),this._globalStyleElement.className="monaco-colors",this._globalStyleElement.textContent=this._allCSS,this._styleElements.push(this._globalStyleElement)),Me.JT.None}},{key:"_registerShadowDomContainer",value:function(e){var t=this,n=ne.createStyleSheet(e);return n.className="monaco-colors",n.textContent=this._allCSS,this._styleElements.push(n),{dispose:function(){for(var e=0;e<t._styleElements.length;e++)if(t._styleElements[e]===n)return void t._styleElements.splice(e,1)}}}},{key:"defineTheme",value:function(e,t){if(!/^[a-z0-9\-]+$/i.test(e))throw new Error("Illegal theme name!");if(!Nr(t.base)&&!Nr(e))throw new Error("Illegal theme base!");this._knownThemes.set(e,new Dr(e,t)),Nr(e)&&this._knownThemes.forEach((function(t){t.base===e&&t.notifyBaseUpdated()})),this._theme.themeName===e&&this.setTheme(e)}},{key:"getColorTheme",value:function(){return this._theme}},{key:"setColorMapOverride",value:function(e){this._colorMapOverride=e,this._updateThemeOrColorMap()}},{key:"setTheme",value:function(e){var t;t=this._knownThemes.has(e)?this._knownThemes.get(e):this._knownThemes.get(kr),this._desiredTheme=t,this._updateActualTheme()}},{key:"_updateActualTheme",value:function(){var e=this._autoDetectHighContrast&&window.matchMedia("(forced-colors: active)").matches?this._knownThemes.get(xr):this._desiredTheme;this._theme!==e&&(this._theme=e,this._updateThemeOrColorMap())}},{key:"setAutoDetectHighContrast",value:function(e){this._autoDetectHighContrast=e,this._updateActualTheme()}},{key:"_updateThemeOrColorMap",value:function(){var e=this,t=[],n={},i={addRule:function(e){n[e]||(t.push(e),n[e]=!0)}};Er.getThemingParticipants().forEach((function(t){return t(e._theme,i,e._environment)}));var r=this._colorMapOverride||this._theme.tokenTheme.getColorMap();i.addRule(function(e){for(var t=[],n=1,i=e.length;n<i;n++){var r=e[n];t[n]=".mtk".concat(n," { color: ").concat(r,"; }")}return t.push(".mtki { font-style: italic; }"),t.push(".mtkb { font-weight: bold; }"),t.push(".mtku { text-decoration: underline; text-underline-position: under; }"),t.join("\n")}(r)),this._themeCSS=t.join("\n"),this._updateCSS(),be.RW.setColorMap(r),this._onColorThemeChange.fire(this._theme)}},{key:"_updateCSS",value:function(){var e=this;this._allCSS="".concat(this._codiconCSS,"\n").concat(this._themeCSS),this._styleElements.forEach((function(t){return t.textContent=e._allCSS}))}},{key:"getFileIconTheme",value:function(){return{hasFileIcons:!1,hasFolderIcons:!1,hidesExplorerArrows:!1}}}]),n}(Me.JT),Or=n(98900),Ar=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},Rr=function(e,t){return function(n,i){t(n,i,e)}},Pr="data-keybinding-context",Zr=function(){function e(t,n){(0,F.Z)(this,e),this._id=t,this._parent=n,this._value=Object.create(null),this._value._contextId=t}return(0,j.Z)(e,[{key:"setValue",value:function(e,t){return this._value[e]!==t&&(this._value[e]=t,!0)}},{key:"removeValue",value:function(e){return e in this._value&&(delete this._value[e],!0)}},{key:"getValue",value:function(e){var t=this._value[e];return"undefined"===typeof t&&this._parent?this._parent.getValue(e):t}}]),e}(),Fr=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(){return(0,F.Z)(this,n),t.call(this,-1,null)}return(0,j.Z)(n,[{key:"setValue",value:function(e,t){return!1}},{key:"removeValue",value:function(e){return!1}},{key:"getValue",value:function(e){}}]),n}(Zr);Fr.INSTANCE=new Fr;var jr=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r){var o;return(0,F.Z)(this,n),(o=t.call(this,e,null))._configurationService=i,o._values=re.Id.forConfigKeys(),o._listener=o._configurationService.onDidChangeConfiguration((function(e){if(6===e.source){var t=Array.from(Or.$.map(o._values,(function(e){return(0,at.Z)(e,1)[0]})));o._values.clear(),r.fire(new zr(t))}else{var n,i=[],a=(0,X.Z)(e.affectedKeys);try{for(a.s();!(n=a.n()).done;){var s=n.value,u="config.".concat(s),l=o._values.findSuperstr(u);void 0!==l&&(i.push.apply(i,(0,J.Z)(Or.$.map(l,(function(e){return(0,at.Z)(e,1)[0]})))),o._values.deleteSuperstr(u)),o._values.has(u)&&(i.push(u),o._values.delete(u))}}catch(c){a.e(c)}finally{a.f()}r.fire(new zr(i))}})),o}return(0,j.Z)(n,[{key:"dispose",value:function(){this._listener.dispose()}},{key:"getValue",value:function(e){if(0!==e.indexOf(n._keyPrefix))return(0,Ee.Z)((0,De.Z)(n.prototype),"getValue",this).call(this,e);if(this._values.has(e))return this._values.get(e);var t=e.substr(n._keyPrefix.length),i=this._configurationService.getValue(t),r=void 0;switch(typeof i){case"number":case"boolean":case"string":r=i;break;default:r=Array.isArray(i)?JSON.stringify(i):i}return this._values.set(e,r),r}},{key:"setValue",value:function(e,t){return(0,Ee.Z)((0,De.Z)(n.prototype),"setValue",this).call(this,e,t)}},{key:"removeValue",value:function(e){return(0,Ee.Z)((0,De.Z)(n.prototype),"removeValue",this).call(this,e)}}]),n}(Zr);jr._keyPrefix="config.";var Hr=function(){function e(t,n,i){(0,F.Z)(this,e),this._service=t,this._key=n,this._defaultValue=i,this.reset()}return(0,j.Z)(e,[{key:"set",value:function(e){this._service.setContext(this._key,e)}},{key:"reset",value:function(){"undefined"===typeof this._defaultValue?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}},{key:"get",value:function(){return this._service.getContextKeyValue(this._key)}}]),e}(),Br=function(){function e(t){(0,F.Z)(this,e),this.key=t}return(0,j.Z)(e,[{key:"affectsSome",value:function(e){return e.has(this.key)}}]),e}(),zr=function(){function e(t){(0,F.Z)(this,e),this.keys=t}return(0,j.Z)(e,[{key:"affectsSome",value:function(e){var t,n=(0,X.Z)(this.keys);try{for(n.s();!(t=n.n()).done;){var i=t.value;if(e.has(i))return!0}}catch(r){n.e(r)}finally{n.f()}return!1}}]),e}(),Wr=function(){function e(t){(0,F.Z)(this,e),this.events=t}return(0,j.Z)(e,[{key:"affectsSome",value:function(e){var t,n=(0,X.Z)(this.events);try{for(n.s();!(t=n.n()).done;){if(t.value.affectsSome(e))return!0}}catch(i){n.e(i)}finally{n.f()}return!1}}]),e}(),Vr=function(){function e(t){(0,F.Z)(this,e),this._onDidChangeContext=new B.K3({merge:function(e){return new Wr(e)}}),this.onDidChangeContext=this._onDidChangeContext.event,this._isDisposed=!1,this._myContextId=t}return(0,j.Z)(e,[{key:"createKey",value:function(e,t){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new Hr(this,e,t)}},{key:"bufferChangeEvents",value:function(e){this._onDidChangeContext.pause();try{e()}finally{this._onDidChangeContext.resume()}}},{key:"createScoped",value:function(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new Ur(this,e)}},{key:"contextMatchesRules",value:function(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");var t=this.getContextValuesContainer(this._myContextId);return xn.contextMatchesRules(t,e)}},{key:"getContextKeyValue",value:function(e){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(e)}},{key:"setContext",value:function(e,t){if(!this._isDisposed){var n=this.getContextValuesContainer(this._myContextId);n&&n.setValue(e,t)&&this._onDidChangeContext.fire(new Br(e))}}},{key:"removeContext",value:function(e){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(e)&&this._onDidChangeContext.fire(new Br(e))}},{key:"getContext",value:function(e){return this._isDisposed?Fr.INSTANCE:this.getContextValuesContainer(function(e){for(;e;){if(e.hasAttribute(Pr)){var t=e.getAttribute(Pr);return t?parseInt(t,10):NaN}e=e.parentElement}return 0}(e))}}]),e}(),Yr=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e){var i;(0,F.Z)(this,n),(i=t.call(this,0))._contexts=new Map,i._toDispose=new Me.SL,i._lastContextId=0;var r=new jr(i._myContextId,e,i._onDidChangeContext);return i._contexts.set(i._myContextId,r),i._toDispose.add(r),i}return(0,j.Z)(n,[{key:"dispose",value:function(){this._onDidChangeContext.dispose(),this._isDisposed=!0,this._toDispose.dispose()}},{key:"getContextValuesContainer",value:function(e){return this._isDisposed?Fr.INSTANCE:this._contexts.get(e)||Fr.INSTANCE}},{key:"createChildContext",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._myContextId;if(this._isDisposed)throw new Error("ContextKeyService has been disposed");var t=++this._lastContextId;return this._contexts.set(t,new Zr(t,this.getContextValuesContainer(e))),t}},{key:"disposeContext",value:function(e){this._isDisposed||this._contexts.delete(e)}}]),n}(Vr);Yr=Ar([Rr(0,vn.Ui)],Yr);var Ur=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r;if((0,F.Z)(this,n),(r=t.call(this,e.createChildContext()))._parentChangeListener=new Me.XK,r._parent=e,r._updateParentChangeListener(),r._domNode=i,r._domNode.hasAttribute(Pr)){var o="";r._domNode.classList&&(o=Array.from(r._domNode.classList.values()).join(", ")),console.error("Element already has context attribute".concat(o?": "+o:""))}return r._domNode.setAttribute(Pr,String(r._myContextId)),r}return(0,j.Z)(n,[{key:"_updateParentChangeListener",value:function(){this._parentChangeListener.value=this._parent.onDidChangeContext(this._onDidChangeContext.fire,this._onDidChangeContext)}},{key:"dispose",value:function(){this._isDisposed||(this._onDidChangeContext.dispose(),this._parent.disposeContext(this._myContextId),this._parentChangeListener.dispose(),this._domNode.removeAttribute(Pr),this._isDisposed=!0)}},{key:"getContextValuesContainer",value:function(e){return this._isDisposed?Fr.INSTANCE:this._parent.getContextValuesContainer(e)}},{key:"createChildContext",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._myContextId;if(this._isDisposed)throw new Error("ScopedContextKeyService has been disposed");return this._parent.createChildContext(e)}},{key:"disposeContext",value:function(e){this._isDisposed||this._parent.disposeContext(e)}}]),n}(Vr);ue.P.registerCommand(li.Eq,(function(e,t,n){e.get(li.i6).createKey(String(t),n)})),ue.P.registerCommand({id:"getContextKeyInfo",handler:function(){return(0,J.Z)(li.uy.all()).sort((function(e,t){return e.key.localeCompare(t.key)}))},description:{description:(0,kn.N)("getContextKeyInfo","A command that returns information about context keys"),args:[]}}),ue.P.registerCommand("_generateContextKeyInfo",(function(){var e,t=[],n=new Set,i=(0,X.Z)(li.uy.all());try{for(i.s();!(e=i.n()).done;){var r=e.value;n.has(r.key)||(n.add(r.key),t.push(r))}}catch(o){i.e(o)}finally{i.f()}t.sort((function(e,t){return e.key.localeCompare(t.key)})),console.log(JSON.stringify(t,void 0,2))}));var Kr,qr=n(29077),Gr=n(97326),$r=n(67404),Qr=n(61727),Xr=n(81629),Jr=n(32721);function eo(e,t,n){var i=n.mode===Kr.ALIGN?n.offset:n.offset+n.size,r=n.mode===Kr.ALIGN?n.offset+n.size:n.offset;return 0===n.position?t<=e-i?i:t<=r?r-t:Math.max(e-t,0):t<=r?r-t:t<=e-i?i:0}!function(e){e[e.AVOID=0]="AVOID",e[e.ALIGN=1]="ALIGN"}(Kr||(Kr={}));var to=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r;return(0,F.Z)(this,n),(r=t.call(this)).container=null,r.delegate=null,r.toDisposeOnClean=Me.JT.None,r.toDisposeOnSetContainer=Me.JT.None,r.shadowRoot=null,r.shadowRootHostElement=null,r.view=ne.$(".context-view"),r.useFixedPosition=!1,r.useShadowDOM=!1,ne.hide(r.view),r.setContainer(e,i),r._register((0,Me.OF)((function(){return r.setContainer(null,1)}))),r}return(0,j.Z)(n,[{key:"setContainer",value:function(e,t){var i,r=this;if(this.container&&(this.toDisposeOnSetContainer.dispose(),this.shadowRoot?(this.shadowRoot.removeChild(this.view),this.shadowRoot=null,null===(i=this.shadowRootHostElement)||void 0===i||i.remove(),this.shadowRootHostElement=null):this.container.removeChild(this.view),this.container=null),e){if(this.container=e,this.useFixedPosition=1!==t,this.useShadowDOM=3===t,this.useShadowDOM){this.shadowRootHostElement=ne.$(".shadow-root-host"),this.container.appendChild(this.shadowRootHostElement),this.shadowRoot=this.shadowRootHostElement.attachShadow({mode:"open"});var o=document.createElement("style");o.textContent=io,this.shadowRoot.appendChild(o),this.shadowRoot.appendChild(this.view),this.shadowRoot.appendChild(ne.$("slot"))}else this.container.appendChild(this.view);var a=new Me.SL;n.BUBBLE_UP_EVENTS.forEach((function(e){a.add(ne.addStandardDisposableListener(r.container,e,(function(e){r.onDOMEvent(e,!1)})))})),n.BUBBLE_DOWN_EVENTS.forEach((function(e){a.add(ne.addStandardDisposableListener(r.container,e,(function(e){r.onDOMEvent(e,!0)}),!0))})),this.toDisposeOnSetContainer=a}}},{key:"show",value:function(e){this.isVisible()&&this.hide(),ne.clearNode(this.view),this.view.className="context-view",this.view.style.top="0px",this.view.style.left="0px",this.view.style.zIndex="2500",this.view.style.position=this.useFixedPosition?"fixed":"absolute",ne.show(this.view),this.toDisposeOnClean=e.render(this.view)||Me.JT.None,this.delegate=e,this.doLayout(),this.delegate.focus&&this.delegate.focus()}},{key:"getViewElement",value:function(){return this.view}},{key:"layout",value:function(){this.isVisible()&&(!1!==this.delegate.canRelayout||Ie.gn&&Jr.D.pointerEvents?(this.delegate.layout&&this.delegate.layout(),this.doLayout()):this.hide())}},{key:"doLayout",value:function(){if(this.isVisible()){var e,t=this.delegate.getAnchor();if(ne.isHTMLElement(t)){var n=ne.getDomNodePagePosition(t);e={top:n.top,left:n.left,width:n.width,height:n.height}}else e={top:t.y,left:t.x,width:t.width||1,height:t.height||2};var i,r,o=ne.getTotalWidth(this.view),a=ne.getTotalHeight(this.view),s=this.delegate.anchorPosition||0,u=this.delegate.anchorAlignment||0;if(0===(this.delegate.anchorAxisAlignment||0)){var l={offset:e.top-window.pageYOffset,size:e.height,position:0===s?0:1},c={offset:e.left,size:e.width,position:0===u?0:1,mode:Kr.ALIGN};i=eo(window.innerHeight,a,l)+window.pageYOffset,Xr.e.intersects({start:i,end:i+a},{start:l.offset,end:l.offset+l.size})&&(c.mode=Kr.AVOID),r=eo(window.innerWidth,o,c)}else{var d={offset:e.left,size:e.width,position:0===u?0:1},h={offset:e.top,size:e.height,position:0===s?0:1,mode:Kr.ALIGN};r=eo(window.innerWidth,o,d),Xr.e.intersects({start:r,end:r+o},{start:d.offset,end:d.offset+d.size})&&(h.mode=Kr.AVOID),i=eo(window.innerHeight,a,h)+window.pageYOffset}this.view.classList.remove("top","bottom","left","right"),this.view.classList.add(0===s?"bottom":"top"),this.view.classList.add(0===u?"left":"right"),this.view.classList.toggle("fixed",this.useFixedPosition);var f=ne.getDomNodePagePosition(this.container);this.view.style.top="".concat(i-(this.useFixedPosition?ne.getDomNodePagePosition(this.view).top:f.top),"px"),this.view.style.left="".concat(r-(this.useFixedPosition?ne.getDomNodePagePosition(this.view).left:f.left),"px"),this.view.style.width="initial"}}},{key:"hide",value:function(e){var t=this.delegate;this.delegate=null,(null===t||void 0===t?void 0:t.onHide)&&t.onHide(e),this.toDisposeOnClean.dispose(),ne.hide(this.view)}},{key:"isVisible",value:function(){return!!this.delegate}},{key:"onDOMEvent",value:function(e,t){this.delegate&&(this.delegate.onDOMEvent?this.delegate.onDOMEvent(e,document.activeElement):t&&!ne.isAncestor(e.target,this.container)&&this.hide())}},{key:"dispose",value:function(){this.hide(),(0,Ee.Z)((0,De.Z)(n.prototype),"dispose",this).call(this)}}]),n}(Me.JT);to.BUBBLE_UP_EVENTS=["click","keydown","focus","blur"],to.BUBBLE_DOWN_EVENTS=["click"];var no,io='\n\t:host {\n\t\tall: initial; /* 1st rule so subsequent properties are reset. */\n\t}\n\n\t@font-face {\n\t\tfont-family: "codicon";\n\t\tsrc: url("./codicon.ttf?5d4d76ab2ce5108968ad644d591a16a6") format("truetype");\n\t}\n\n\t.codicon[class*=\'codicon-\'] {\n\t\tfont: normal normal normal 16px/1 codicon;\n\t\tdisplay: inline-block;\n\t\ttext-decoration: none;\n\t\ttext-rendering: auto;\n\t\ttext-align: center;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\tuser-select: none;\n\t\t-webkit-user-select: none;\n\t\t-ms-user-select: none;\n\t}\n\n\t:host {\n\t\tfont-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", system-ui, "Ubuntu", "Droid Sans", sans-serif;\n\t}\n\n\t:host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; }\n\t:host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", sans-serif; }\n\t:host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang TC", sans-serif; }\n\t:host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic Pro", sans-serif; }\n\t:host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, "Nanum Gothic", "Apple SD Gothic Neo", "AppleGothic", sans-serif; }\n\n\t:host-context(.windows) { font-family: "Segoe WPC", "Segoe UI", sans-serif; }\n\t:host-context(.windows:lang(zh-Hans)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft YaHei", sans-serif; }\n\t:host-context(.windows:lang(zh-Hant)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft Jhenghei", sans-serif; }\n\t:host-context(.windows:lang(ja)) { font-family: "Segoe WPC", "Segoe UI", "Yu Gothic UI", "Meiryo UI", sans-serif; }\n\t:host-context(.windows:lang(ko)) { font-family: "Segoe WPC", "Segoe UI", "Malgun Gothic", "Dotom", sans-serif; }\n\n\t:host-context(.linux) { font-family: system-ui, "Ubuntu", "Droid Sans", sans-serif; }\n\t:host-context(.linux:lang(zh-Hans)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans SC", "Source Han Sans CN", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(zh-Hant)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans TC", "Source Han Sans TW", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(ja)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans J", "Source Han Sans JP", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(ko)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans K", "Source Han Sans JR", "Source Han Sans", "UnDotum", "FBaekmuk Gulim", sans-serif; }\n',ro=n(4354),oo=n(84039),ao=n(22410),so=n(84539),uo=n(55076),lo=n(10939),co=/\(&([^\s&])\)|(^|[^&])&([^\s&])/,ho=/(&)?(&)([^\s&])/g,fo=(0,ro.CM)("menu-selection",ro.lA.check),po=(0,ro.CM)("menu-submenu",ro.lA.chevronRight);!function(e){e[e.Right=0]="Right",e[e.Left=1]="Left"}(no||(no={}));var go=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,F.Z)(this,n),e.classList.add("monaco-menu-container"),e.setAttribute("role","presentation");var a=document.createElement("div");a.classList.add("monaco-menu"),a.setAttribute("role","presentation"),(r=t.call(this,a,{orientation:1,actionViewItemProvider:function(e){return r.doGetActionViewItem(e,o,s)},context:o.context,actionRunner:o.actionRunner,ariaLabel:o.ariaLabel,focusOnlyEnabledItems:!0,triggerKeys:{keys:[3].concat((0,J.Z)(Ie.dz||Ie.IJ?[10]:[])),keyDown:!0}})).menuElement=a,r.actionsList.setAttribute("role","menu"),r.actionsList.tabIndex=0,r.menuDisposables=r._register(new Me.SL),r.initializeStyleSheet(e),(0,ne.addDisposableListener)(a,ne.EventType.KEY_DOWN,(function(e){new cn.y(e).equals(2)&&e.preventDefault()})),o.enableMnemonics&&r.menuDisposables.add((0,ne.addDisposableListener)(a,ne.EventType.KEY_DOWN,(function(e){var t=e.key.toLocaleLowerCase();if(r.mnemonics.has(t)){ne.EventHelper.stop(e,!0);var n=r.mnemonics.get(t);if(1===n.length&&(n[0]instanceof mo&&n[0].container&&r.focusItemByElement(n[0].container),n[0].onClick(e)),n.length>1){var i=n.shift();i&&i.container&&(r.focusItemByElement(i.container),n.push(i)),r.mnemonics.set(t,n)}}}))),Ie.IJ&&r._register((0,ne.addDisposableListener)(a,ne.EventType.KEY_DOWN,(function(e){var t=new cn.y(e);t.equals(14)||t.equals(11)?(r.focusedItem=r.viewItems.length-1,r.focusNext(),ne.EventHelper.stop(e,!0)):(t.equals(13)||t.equals(12))&&(r.focusedItem=0,r.focusPrevious(),ne.EventHelper.stop(e,!0))}))),r._register((0,ne.addDisposableListener)(r.domNode,ne.EventType.MOUSE_OUT,(function(e){var t=e.relatedTarget;(0,ne.isAncestor)(t,r.domNode)||(r.focusedItem=void 0,r.updateFocus(),e.stopPropagation())}))),r._register((0,ne.addDisposableListener)(r.actionsList,ne.EventType.MOUSE_OVER,(function(e){var t=e.target;if(t&&(0,ne.isAncestor)(t,r.actionsList)&&t!==r.actionsList){for(;t.parentElement!==r.actionsList&&null!==t.parentElement;)t=t.parentElement;if(t.classList.contains("action-item")){var n=r.focusedItem;r.setFocusedItem(t),n!==r.focusedItem&&r.updateFocus()}}})));var s={parent:(0,Gr.Z)(r)};r.mnemonics=new Map,r.scrollableElement=r._register(new Qr.s$(a,{alwaysConsumeMouseWheel:!0,horizontal:2,vertical:3,verticalScrollbarSize:7,handleMouseWheel:!0,useShadows:!0}));var u=r.scrollableElement.getDomNode();return u.style.position="",r._register((0,ne.addDisposableListener)(u,ne.EventType.MOUSE_UP,(function(e){e.preventDefault()}))),a.style.maxHeight="".concat(Math.max(10,window.innerHeight-e.getBoundingClientRect().top-35),"px"),i=i.filter((function(e){var t;return!(null===(t=o.submenuIds)||void 0===t?void 0:t.has(e.id))||(console.warn("Found submenu cycle: ".concat(e.id)),!1)})),r.push(i,{icon:!0,label:!0,isMenu:!0}),e.appendChild(r.scrollableElement.getDomNode()),r.scrollableElement.scanDomNode(),r.viewItems.filter((function(e){return!(e instanceof _o)})).forEach((function(e,t,n){e.updatePositionInSet(t+1,n.length)})),r}return(0,j.Z)(n,[{key:"initializeStyleSheet",value:function(e){(0,ne.isInShadowDOM)(e)?(this.styleSheet=(0,ne.createStyleSheet)(e),this.styleSheet.textContent=yo):(n.globalStyleSheet||(n.globalStyleSheet=(0,ne.createStyleSheet)(),n.globalStyleSheet.textContent=yo),this.styleSheet=n.globalStyleSheet)}},{key:"style",value:function(e){var t=this.getContainer(),n=e.foregroundColor?"".concat(e.foregroundColor):"",i=e.backgroundColor?"".concat(e.backgroundColor):"",r=e.borderColor?"1px solid ".concat(e.borderColor):"",o=e.shadowColor?"0 2px 4px ".concat(e.shadowColor):"";t.style.border=r,this.domNode.style.color=n,this.domNode.style.backgroundColor=i,t.style.boxShadow=o,this.viewItems&&this.viewItems.forEach((function(t){(t instanceof vo||t instanceof _o)&&t.style(e)}))}},{key:"getContainer",value:function(){return this.scrollableElement.getDomNode()}},{key:"onScroll",get:function(){return this.scrollableElement.onScroll}},{key:"focusItemByElement",value:function(e){var t=this.focusedItem;this.setFocusedItem(e),t!==this.focusedItem&&this.updateFocus()}},{key:"setFocusedItem",value:function(e){for(var t=0;t<this.actionsList.children.length;t++){if(e===this.actionsList.children[t]){this.focusedItem=t;break}}}},{key:"updateFocus",value:function(e){(0,Ee.Z)((0,De.Z)(n.prototype),"updateFocus",this).call(this,e,!0),"undefined"!==typeof this.focusedItem&&this.scrollableElement.setScrollPosition({scrollTop:Math.round(this.menuElement.scrollTop)})}},{key:"doGetActionViewItem",value:function(e,t,n){if(e instanceof qr.Z0)return new _o(t.context,e,{icon:!0});if(e instanceof qr.wY){var i=new mo(e,e.actions,n,Object.assign(Object.assign({},t),{submenuIds:new Set([].concat((0,J.Z)(t.submenuIds||[]),[e.id]))}));if(t.enableMnemonics){var r=i.getMnemonic();if(r&&i.isEnabled()){var o=[];this.mnemonics.has(r)&&(o=this.mnemonics.get(r)),o.push(i),this.mnemonics.set(r,o)}}return i}var a={enableMnemonics:t.enableMnemonics,useEventAsContext:t.useEventAsContext};if(t.getKeyBinding){var s=t.getKeyBinding(e);if(s){var u=s.getLabel();u&&(a.keybinding=u)}}var l=new vo(t.context,e,a);if(t.enableMnemonics){var c=l.getMnemonic();if(c&&l.isEnabled()){var d=[];this.mnemonics.has(c)&&(d=this.mnemonics.get(c)),d.push(l),this.mnemonics.set(c,d)}}return l}}]),n}($r.o),vo=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if((0,F.Z)(this,n),o.isMenu=!0,(r=t.call(this,i,i,o)).options=o,r.options.icon=void 0!==o.icon&&o.icon,r.options.label=void 0===o.label||o.label,r.cssClass="",r.options.label&&o.enableMnemonics){var a=r.getAction().label;if(a){var s=co.exec(a);s&&(r.mnemonic=(s[1]?s[1]:s[3]).toLocaleLowerCase())}}return r.runOnceToEnableMouseUp=new Ne.pY((function(){r.element&&(r._register((0,ne.addDisposableListener)(r.element,ne.EventType.MOUSE_UP,(function(e){if(ne.EventHelper.stop(e,!0),so.vU){if(new uo.n(e).rightButton)return;r.onClick(e)}else setTimeout((function(){r.onClick(e)}),0)}))),r._register((0,ne.addDisposableListener)(r.element,ne.EventType.CONTEXT_MENU,(function(e){ne.EventHelper.stop(e,!0)}))))}),100),r._register(r.runOnceToEnableMouseUp),r}return(0,j.Z)(n,[{key:"render",value:function(e){(0,Ee.Z)((0,De.Z)(n.prototype),"render",this).call(this,e),this.element&&(this.container=e,this.item=(0,ne.append)(this.element,(0,ne.$)("a.action-menu-item")),this._action.id===qr.Z0.ID?this.item.setAttribute("role","presentation"):(this.item.setAttribute("role","menuitem"),this.mnemonic&&this.item.setAttribute("aria-keyshortcuts","".concat(this.mnemonic))),this.check=(0,ne.append)(this.item,(0,ne.$)("span.menu-item-check"+fo.cssSelector)),this.check.setAttribute("role","none"),this.label=(0,ne.append)(this.item,(0,ne.$)("span.action-label")),this.options.label&&this.options.keybinding&&((0,ne.append)(this.item,(0,ne.$)("span.keybinding")).textContent=this.options.keybinding),this.runOnceToEnableMouseUp.schedule(),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked())}},{key:"blur",value:function(){(0,Ee.Z)((0,De.Z)(n.prototype),"blur",this).call(this),this.applyStyle()}},{key:"focus",value:function(){(0,Ee.Z)((0,De.Z)(n.prototype),"focus",this).call(this),this.item&&this.item.focus(),this.applyStyle()}},{key:"updatePositionInSet",value:function(e,t){this.item&&(this.item.setAttribute("aria-posinset","".concat(e)),this.item.setAttribute("aria-setsize","".concat(t)))}},{key:"updateLabel",value:function(){if(this.label&&this.options.label){(0,ne.clearNode)(this.label);var e=(0,lo.x$)(this.getAction().label);if(e){var t=function(e){var t=co,n=t.exec(e);if(!n)return e;var i=!n[1];return e.replace(t,i?"$2$3":"").trim()}(e);this.options.enableMnemonics||(e=t),this.label.setAttribute("aria-label",t.replace(/&&/g,"&"));var n=co.exec(e);if(n){e=Ue.YU(e),ho.lastIndex=0;for(var i=ho.exec(e);i&&i[1];)i=ho.exec(e);var r=function(e){return e.replace(/&&/g,"&")};i?this.label.append(Ue.j3(r(e.substr(0,i.index))," "),(0,ne.$)("u",{"aria-hidden":"true"},i[3]),Ue.oL(r(e.substr(i.index+i[0].length))," ")):this.label.innerText=r(e).trim(),this.item&&this.item.setAttribute("aria-keyshortcuts",(n[1]?n[1]:n[3]).toLocaleLowerCase())}else this.label.innerText=e.replace(/&&/g,"&").trim()}}}},{key:"updateTooltip",value:function(){var e=null;this.getAction().tooltip?e=this.getAction().tooltip:!this.options.label&&this.getAction().label&&this.options.icon&&(e=this.getAction().label,this.options.keybinding&&(e=kn.N({key:"titleLabel",comment:["action title","action keybinding"]},"{0} ({1})",e,this.options.keybinding))),e&&this.item&&(this.item.title=e)}},{key:"updateClass",value:function(){var e;this.cssClass&&this.item&&(e=this.item.classList).remove.apply(e,(0,J.Z)(this.cssClass.split(" ")));if(this.options.icon&&this.label){var t;if(this.cssClass=this.getAction().class||"",this.label.classList.add("icon"),this.cssClass)(t=this.label.classList).add.apply(t,(0,J.Z)(this.cssClass.split(" ")));this.updateEnabled()}else this.label&&this.label.classList.remove("icon")}},{key:"updateEnabled",value:function(){this.getAction().enabled?(this.element&&(this.element.classList.remove("disabled"),this.element.removeAttribute("aria-disabled")),this.item&&(this.item.classList.remove("disabled"),this.item.removeAttribute("aria-disabled"),this.item.tabIndex=0)):(this.element&&(this.element.classList.add("disabled"),this.element.setAttribute("aria-disabled","true")),this.item&&(this.item.classList.add("disabled"),this.item.setAttribute("aria-disabled","true")))}},{key:"updateChecked",value:function(){this.item&&(this.getAction().checked?(this.item.classList.add("checked"),this.item.setAttribute("role","menuitemcheckbox"),this.item.setAttribute("aria-checked","true")):(this.item.classList.remove("checked"),this.item.setAttribute("role","menuitem"),this.item.setAttribute("aria-checked","false")))}},{key:"getMnemonic",value:function(){return this.mnemonic}},{key:"applyStyle",value:function(){if(this.menuStyle){var e=this.element&&this.element.classList.contains("focused"),t=e&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor,n=e&&this.menuStyle.selectionBackgroundColor?this.menuStyle.selectionBackgroundColor:void 0,i=e&&this.menuStyle.selectionBorderColor?"thin solid ".concat(this.menuStyle.selectionBorderColor):"";this.item&&(this.item.style.color=t?t.toString():"",this.item.style.backgroundColor=n?n.toString():""),this.check&&(this.check.style.color=t?t.toString():""),this.container&&(this.container.style.border=i)}}},{key:"style",value:function(e){this.menuStyle=e,this.applyStyle()}}]),n}(oo.Y),mo=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r,o){var a;return(0,F.Z)(this,n),(a=t.call(this,e,e,o)).submenuActions=i,a.parentData=r,a.submenuOptions=o,a.mysubmenu=null,a.submenuDisposables=a._register(new Me.SL),a.mouseOver=!1,a.expandDirection=o&&void 0!==o.expandDirection?o.expandDirection:no.Right,a.showScheduler=new Ne.pY((function(){a.mouseOver&&(a.cleanupExistingSubmenu(!1),a.createSubmenu(!1))}),250),a.hideScheduler=new Ne.pY((function(){a.element&&!(0,ne.isAncestor)((0,ne.getActiveElement)(),a.element)&&a.parentData.submenu===a.mysubmenu&&(a.parentData.parent.focus(!1),a.cleanupExistingSubmenu(!0))}),750),a}return(0,j.Z)(n,[{key:"render",value:function(e){var t=this;(0,Ee.Z)((0,De.Z)(n.prototype),"render",this).call(this,e),this.element&&(this.item&&(this.item.classList.add("monaco-submenu-item"),this.item.tabIndex=0,this.item.setAttribute("aria-haspopup","true"),this.updateAriaExpanded("false"),this.submenuIndicator=(0,ne.append)(this.item,(0,ne.$)("span.submenu-indicator"+po.cssSelector)),this.submenuIndicator.setAttribute("aria-hidden","true")),this._register((0,ne.addDisposableListener)(this.element,ne.EventType.KEY_UP,(function(e){var n=new cn.y(e);(n.equals(17)||n.equals(3))&&(ne.EventHelper.stop(e,!0),t.createSubmenu(!0))}))),this._register((0,ne.addDisposableListener)(this.element,ne.EventType.KEY_DOWN,(function(e){var n=new cn.y(e);(0,ne.getActiveElement)()===t.item&&(n.equals(17)||n.equals(3))&&ne.EventHelper.stop(e,!0)}))),this._register((0,ne.addDisposableListener)(this.element,ne.EventType.MOUSE_OVER,(function(e){t.mouseOver||(t.mouseOver=!0,t.showScheduler.schedule())}))),this._register((0,ne.addDisposableListener)(this.element,ne.EventType.MOUSE_LEAVE,(function(e){t.mouseOver=!1}))),this._register((0,ne.addDisposableListener)(this.element,ne.EventType.FOCUS_OUT,(function(e){t.element&&!(0,ne.isAncestor)((0,ne.getActiveElement)(),t.element)&&t.hideScheduler.schedule()}))),this._register(this.parentData.parent.onScroll((function(){t.parentData.parent.focus(!1),t.cleanupExistingSubmenu(!1)}))))}},{key:"updateEnabled",value:function(){}},{key:"onClick",value:function(e){ne.EventHelper.stop(e,!0),this.cleanupExistingSubmenu(!1),this.createSubmenu(!0)}},{key:"cleanupExistingSubmenu",value:function(e){if(this.parentData.submenu&&(e||this.parentData.submenu!==this.mysubmenu)){try{this.parentData.submenu.dispose()}catch(Ze){}this.parentData.submenu=void 0,this.updateAriaExpanded("false"),this.submenuContainer&&(this.submenuDisposables.clear(),this.submenuContainer=void 0)}}},{key:"calculateSubmenuMenuLayout",value:function(e,t,n,i){var r={top:0,left:0};return r.left=eo(e.width,t.width,{position:i===no.Right?0:1,offset:n.left,size:n.width}),r.left>=n.left&&r.left<n.left+n.width&&(n.left+10+t.width<=e.width&&(r.left=n.left+10),n.top+=10,n.height=0),r.top=eo(e.height,t.height,{position:0,offset:n.top,size:0}),r.top+t.height===n.top&&r.top+n.height+t.height<=e.height&&(r.top+=n.height),r}},{key:"createSubmenu",value:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(this.element)if(this.parentData.submenu)this.parentData.submenu.focus(!1);else{this.updateAriaExpanded("true"),this.submenuContainer=(0,ne.append)(this.element,(0,ne.$)("div.monaco-submenu")),this.submenuContainer.classList.add("menubar-menu-items-holder","context-view");var n=getComputedStyle(this.parentData.parent.domNode),i=parseFloat(n.paddingTop||"0")||0;this.submenuContainer.style.zIndex="1",this.submenuContainer.style.position="fixed",this.submenuContainer.style.top="0",this.submenuContainer.style.left="0",this.parentData.submenu=new go(this.submenuContainer,this.submenuActions.length?this.submenuActions:[new qr.eZ],this.submenuOptions),this.menuStyle&&this.parentData.submenu.style(this.menuStyle);var r=this.element.getBoundingClientRect(),o={top:r.top-i,left:r.left,height:r.height+2*i,width:r.width},a=this.submenuContainer.getBoundingClientRect(),s=this.calculateSubmenuMenuLayout(new ne.Dimension(window.innerWidth,window.innerHeight),ne.Dimension.lift(a),o,this.expandDirection),u=s.top,l=s.left;this.submenuContainer.style.left="".concat(l,"px"),this.submenuContainer.style.top="".concat(u,"px"),this.submenuDisposables.add((0,ne.addDisposableListener)(this.submenuContainer,ne.EventType.KEY_UP,(function(t){new cn.y(t).equals(15)&&(ne.EventHelper.stop(t,!0),e.parentData.parent.focus(),e.cleanupExistingSubmenu(!0))}))),this.submenuDisposables.add((0,ne.addDisposableListener)(this.submenuContainer,ne.EventType.KEY_DOWN,(function(e){new cn.y(e).equals(15)&&ne.EventHelper.stop(e,!0)}))),this.submenuDisposables.add(this.parentData.submenu.onDidCancel((function(){e.parentData.parent.focus(),e.cleanupExistingSubmenu(!0)}))),this.parentData.submenu.focus(t),this.mysubmenu=this.parentData.submenu}}},{key:"updateAriaExpanded",value:function(e){var t;this.item&&(null===(t=this.item)||void 0===t||t.setAttribute("aria-expanded",e))}},{key:"applyStyle",value:function(){if((0,Ee.Z)((0,De.Z)(n.prototype),"applyStyle",this).call(this),this.menuStyle){var e=this.element&&this.element.classList.contains("focused")&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor;this.submenuIndicator&&(this.submenuIndicator.style.color=e?"".concat(e):""),this.parentData.submenu&&this.parentData.submenu.style(this.menuStyle)}}},{key:"dispose",value:function(){(0,Ee.Z)((0,De.Z)(n.prototype),"dispose",this).call(this),this.hideScheduler.dispose(),this.mysubmenu&&(this.mysubmenu.dispose(),this.mysubmenu=null),this.submenuContainer&&(this.submenuContainer=void 0)}}]),n}(vo),_o=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(){return(0,F.Z)(this,n),t.apply(this,arguments)}return(0,j.Z)(n,[{key:"style",value:function(e){this.label&&(this.label.style.borderBottomColor=e.separatorColor?"".concat(e.separatorColor):"")}}]),n}(oo.g);var yo="\n.monaco-menu {\n\tfont-size: 13px;\n\n}\n\n".concat((0,ao.a)(fo),"\n").concat((0,ao.a)(po),"\n\n.monaco-menu .monaco-action-bar {\n\ttext-align: right;\n\toverflow: hidden;\n\twhite-space: nowrap;\n}\n\n.monaco-menu .monaco-action-bar .actions-container {\n\tdisplay: flex;\n\tmargin: 0 auto;\n\tpadding: 0;\n\twidth: 100%;\n\tjustify-content: flex-end;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar.reverse .actions-container {\n\tflex-direction: row-reverse;\n}\n\n.monaco-menu .monaco-action-bar .action-item {\n\tcursor: pointer;\n\tdisplay: inline-block;\n\ttransition: transform 50ms ease;\n\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled {\n\tcursor: default;\n}\n\n.monaco-menu .monaco-action-bar.animated .action-item.active {\n\ttransform: scale(1.272019649, 1.272019649); /* 1.272019649 = \u221a\u03c6 */\n}\n\n.monaco-menu .monaco-action-bar .action-item .icon,\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar .action-label {\n\tfont-size: 11px;\n\tmargin-right: 4px;\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label,\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover {\n\topacity: 0.4;\n}\n\n/* Vertical actions */\n\n.monaco-menu .monaco-action-bar.vertical {\n\ttext-align: left;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tdisplay: block;\n\tborder-bottom: 1px solid #bbb;\n\tpadding-top: 1px;\n\tmargin-left: .8em;\n\tmargin-right: .8em;\n}\n\n.monaco-menu .secondary-actions .monaco-action-bar .action-label {\n\tmargin-left: 6px;\n}\n\n/* Action Items */\n.monaco-menu .monaco-action-bar .action-item.select-container {\n\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\n\tflex: 1;\n\tmax-width: 170px;\n\tmin-width: 60px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 10px;\n}\n\n.monaco-menu .monaco-action-bar.vertical {\n\tmargin-left: 0;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tpadding: 0;\n\ttransform: none;\n\tdisplay: flex;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.active {\n\ttransform: none;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\tflex: 1 1 auto;\n\tdisplay: flex;\n\theight: 2em;\n\talign-items: center;\n\tposition: relative;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label {\n\tflex: 1 1 auto;\n\ttext-decoration: none;\n\tpadding: 0 1em;\n\tbackground: none;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .keybinding,\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tdisplay: inline-block;\n\tflex: 2 1 auto;\n\tpadding: 0 1em;\n\ttext-align: right;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon {\n\tfont-size: 16px !important;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before {\n\tmargin-left: auto;\n\tmargin-right: -20px;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator {\n\topacity: 0.4;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) {\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\tmargin: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tposition: static;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu {\n\tposition: absolute;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tpadding: 0.5em 0 0 0;\n\tmargin-bottom: 0.5em;\n\twidth: 100%;\n\theight: 0px !important;\n\tmargin-left: .8em !important;\n\tmargin-right: .8em !important;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator.text {\n\tpadding: 0.7em 1em 0.1em 1em;\n\tfont-weight: bold;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:hover {\n\tcolor: inherit;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tposition: absolute;\n\tvisibility: hidden;\n\twidth: 1em;\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check {\n\tvisibility: visible;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Context Menu */\n\n.context-view.monaco-menu-container {\n\toutline: 0;\n\tborder: none;\n\tanimation: fadeIn 0.083s linear;\n\t-webkit-app-region: no-drag;\n}\n\n.context-view.monaco-menu-container :focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical:focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical :focus {\n\toutline: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tborder: thin solid transparent; /* prevents jumping behaviour on hover or focus */\n}\n\n\n/* High Contrast Theming */\n:host-context(.hc-black) .context-view.monaco-menu-container {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused {\n\tbackground: none;\n}\n\n/* Vertical Action Bar Styles */\n\n.monaco-menu .monaco-action-bar.vertical {\n\tpadding: .5em 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\theight: 1.8em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator),\n.monaco-menu .monaco-action-bar.vertical .keybinding {\n\tfont-size: inherit;\n\tpadding: 0 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tfont-size: inherit;\n\twidth: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tfont-size: inherit;\n\tpadding: 0.2em 0 0 0;\n\tmargin-bottom: 0.2em;\n}\n\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tfont-size: 60%;\n\tpadding: 0 1.8em;\n}\n\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n\tmask-size: 10px 10px;\n\t-webkit-mask-size: 10px 10px;\n}\n\n.monaco-menu .action-item {\n\tcursor: default;\n}\n\n/* Arrows */\n.monaco-scrollable-element > .scrollbar > .scra {\n\tcursor: pointer;\n\tfont-size: 11px !important;\n}\n\n.monaco-scrollable-element > .visible {\n\topacity: 1;\n\n\t/* Background rule added for IE9 - to allow clicks on dom node */\n\tbackground:rgba(0,0,0,0);\n\n\ttransition: opacity 100ms linear;\n}\n.monaco-scrollable-element > .invisible {\n\topacity: 0;\n\tpointer-events: none;\n}\n.monaco-scrollable-element > .invisible.fade {\n\ttransition: opacity 800ms linear;\n}\n\n/* Scrollable Content Inset Shadow */\n.monaco-scrollable-element > .shadow {\n\tposition: absolute;\n\tdisplay: none;\n}\n.monaco-scrollable-element > .shadow.top {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 3px;\n\theight: 3px;\n\twidth: 100%;\n\tbox-shadow: #DDD 0 6px 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.left {\n\tdisplay: block;\n\ttop: 3px;\n\tleft: 0;\n\theight: 100%;\n\twidth: 3px;\n\tbox-shadow: #DDD 6px 0 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.top-left-corner {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 0;\n\theight: 3px;\n\twidth: 3px;\n}\n.monaco-scrollable-element > .shadow.top.left {\n\tbox-shadow: #DDD 6px 6px 6px -6px inset;\n}\n\n/* ---------- Default Style ---------- */\n\n:host-context(.vs) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(100, 100, 100, .4);\n}\n:host-context(.vs-dark) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(121, 121, 121, .4);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(111, 195, 223, .6);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: rgba(100, 100, 100, .7);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: rgba(111, 195, 223, .8);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(0, 0, 0, .6);\n}\n:host-context(.vs-dark) .monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(191, 191, 191, .4);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(111, 195, 223, 1);\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.top {\n\tbox-shadow: none;\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.left {\n\tbox-shadow: #000 6px 0 6px -6px inset;\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.top.left {\n\tbox-shadow: #000 6px 6px 6px -6px inset;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.top {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.left {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.top.left {\n\tbox-shadow: none;\n}\n"),bo=n(35215),wo=n(61680),Co=function(){function e(t,n,i,r,o){(0,F.Z)(this,e),this.contextViewService=t,this.telemetryService=n,this.notificationService=i,this.keybindingService=r,this.themeService=o,this.focusToReturn=null,this.block=null,this.options={blockMouse:!0}}return(0,j.Z)(e,[{key:"configure",value:function(e){this.options=e}},{key:"showContextMenu",value:function(e){var t=this,n=e.getActions();if(n.length){var i;this.focusToReturn=document.activeElement;var r=(0,ne.isHTMLElement)(e.domForShadowRoot)?e.domForShadowRoot:void 0;this.contextViewService.showContextView({getAnchor:function(){return e.getAnchor()},canRelayout:!1,anchorAlignment:e.anchorAlignment,anchorAxisAlignment:e.anchorAxisAlignment,render:function(r){var o=e.getMenuClassName?e.getMenuClassName():"";o&&(r.className+=" "+o),t.options.blockMouse&&(t.block=r.appendChild((0,ne.$)(".context-view-block")),t.block.style.position="fixed",t.block.style.cursor="initial",t.block.style.left="0",t.block.style.top="0",t.block.style.width="100%",t.block.style.height="100%",t.block.style.zIndex="-1",(0,wo.jt)(t.block,ne.EventType.MOUSE_DOWN)((function(e){return e.stopPropagation()})));var a=new Me.SL,s=e.actionRunner||new qr.Wi;return s.onBeforeRun(t.onActionRun,t,a),s.onDidRun(t.onDidActionRun,t,a),i=new go(r,n,{actionViewItemProvider:e.getActionViewItem,context:e.getActionsContext?e.getActionsContext():null,actionRunner:s,getKeyBinding:e.getKeyBinding?e.getKeyBinding:function(e){return t.keybindingService.lookupKeybinding(e.id)}}),a.add((0,bo.tj)(i,t.themeService)),i.onDidCancel((function(){return t.contextViewService.hideContextView(!0)}),null,a),i.onDidBlur((function(){return t.contextViewService.hideContextView(!0)}),null,a),(0,wo.jt)(window,ne.EventType.BLUR)((function(){t.contextViewService.hideContextView(!0)}),null,a),(0,wo.jt)(window,ne.EventType.MOUSE_DOWN)((function(e){if(!e.defaultPrevented){var n=new uo.n(e),i=n.target;if(!n.rightButton){for(;i;){if(i===r)return;i=i.parentElement}t.contextViewService.hideContextView(!0)}}}),null,a),(0,Me.F8)(a,i)},focus:function(){i&&i.focus(!!e.autoSelectFirstItem)},onHide:function(n){e.onHide&&e.onHide(!!n),t.block&&(t.block.remove(),t.block=null),t.focusToReturn&&t.focusToReturn.focus()}},r,!!r)}}},{key:"onActionRun",value:function(e){this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.action.id,from:"contextMenu"}),this.contextViewService.hideContextView(!1),this.focusToReturn&&this.focusToReturn.focus()}},{key:"onDidActionRun",value:function(e){e.error&&!(0,Te.VV)(e.error)&&this.notificationService.error(e.error)}}]),e}(),ko=n(45014),So=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},xo=function(e,t){return function(n,i){t(n,i,e)}},Lo=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r,o,a){var s;return(0,F.Z)(this,n),(s=t.call(this)).contextMenuHandler=new Co(r,e,i,o,a),s}return(0,j.Z)(n,[{key:"configure",value:function(e){this.contextMenuHandler.configure(e)}},{key:"showContextMenu",value:function(e){this.contextMenuHandler.showContextMenu(e),ne.ModifierKeyEmitter.getInstance().resetKeyStatus()}}]),n}(Me.JT);Lo=So([xo(0,ko.b),xo(1,An.lT),xo(2,ci.u),xo(3,hi.d),xo(4,fi.XE)],Lo);var Eo=(0,di.yh)("layoutService"),Do=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},No=function(e,t){return function(n,i){t(n,i,e)}},Mo=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e){var i;return(0,F.Z)(this,n),(i=t.call(this)).layoutService=e,i.currentViewDisposable=Me.JT.None,i.container=e.container,i.contextView=i._register(new to(i.container,1)),i.layout(),i._register(e.onDidLayout((function(){return i.layout()}))),i}return(0,j.Z)(n,[{key:"setContainer",value:function(e,t){this.contextView.setContainer(e,t||1)}},{key:"showContextView",value:function(e,t,n){var i=this;t?t!==this.container&&(this.container=t,this.setContainer(t,n?3:2)):this.container!==this.layoutService.container&&(this.container=this.layoutService.container,this.setContainer(this.container,1)),this.contextView.show(e);var r=(0,Me.OF)((function(){i.currentViewDisposable===r&&i.hideContextView()}));return this.currentViewDisposable=r,r}},{key:"getContextViewElement",value:function(){return this.contextView.getViewElement()}},{key:"layout",value:function(){this.contextView.layout()}},{key:"hideContextView",value:function(e){this.contextView.hide(e)}}]),n}(Me.JT);Mo=Do([No(0,Eo)],Mo);var To=n(34782),Io=n(5647),Oo=n(28664),Ao=(0,j.Z)((function e(t){(0,F.Z)(this,e),this.incoming=new Map,this.outgoing=new Map,this.data=t})),Ro=function(){function e(t){(0,F.Z)(this,e),this._hashFn=t,this._nodes=new Map}return(0,j.Z)(e,[{key:"roots",value:function(){var e,t=[],n=(0,X.Z)(this._nodes.values());try{for(n.s();!(e=n.n()).done;){var i=e.value;0===i.outgoing.size&&t.push(i)}}catch(r){n.e(r)}finally{n.f()}return t}},{key:"insertEdge",value:function(e,t){var n=this.lookupOrInsertNode(e),i=this.lookupOrInsertNode(t);n.outgoing.set(this._hashFn(t),i),i.incoming.set(this._hashFn(e),n)}},{key:"removeNode",value:function(e){var t=this._hashFn(e);this._nodes.delete(t);var n,i=(0,X.Z)(this._nodes.values());try{for(i.s();!(n=i.n()).done;){var r=n.value;r.outgoing.delete(t),r.incoming.delete(t)}}catch(o){i.e(o)}finally{i.f()}}},{key:"lookupOrInsertNode",value:function(e){var t=this._hashFn(e),n=this._nodes.get(t);return n||(n=new Ao(e),this._nodes.set(t,n)),n}},{key:"isEmpty",value:function(){return 0===this._nodes.size}},{key:"toString",value:function(){var e,t=[],n=(0,X.Z)(this._nodes);try{for(n.s();!(e=n.n()).done;){var i=(0,at.Z)(e.value,2),r=i[0],o=i[1];t.push("".concat(r,", (incoming)[").concat((0,J.Z)(o.incoming.keys()).join(", "),"], (outgoing)[").concat((0,J.Z)(o.outgoing.keys()).join(","),"]"))}}catch(a){n.e(a)}finally{n.f()}return t.join("\n")}},{key:"findCycleSlow",value:function(){var e,t=(0,X.Z)(this._nodes);try{for(t.s();!(e=t.n()).done;){var n=(0,at.Z)(e.value,2),i=n[0],r=n[1],o=new Set([i]),a=this._findCycle(r,o);if(a)return a}}catch(s){t.e(s)}finally{t.f()}}},{key:"_findCycle",value:function(e,t){var n,i=(0,X.Z)(e.outgoing);try{for(i.s();!(n=i.n()).done;){var r=(0,at.Z)(n.value,2),o=r[0],a=r[1];if(t.has(o))return[].concat((0,J.Z)(t),[o]).join(" -> ");t.add(o);var s=this._findCycle(a,t);if(s)return s;t.delete(o)}}catch(u){i.e(u)}finally{i.f()}}}]),e}(),Po=n(52144),Zo=n(41001),Fo=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e){var i,r;return(0,F.Z)(this,n),(i=t.call(this,"cyclic dependency between services")).message=null!==(r=e.findCycleSlow())&&void 0!==r?r:"UNABLE to detect cycle, dumping graph: \n".concat(e.toString()),i}return(0,j.Z)(n)}((0,Oo.Z)(Error)),jo=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Zo.y,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2?arguments[2]:void 0;(0,F.Z)(this,e),this._activeInstantiations=new Set,this._services=t,this._strict=n,this._parent=i,this._services.set(di.TG,this)}return(0,j.Z)(e,[{key:"createChild",value:function(t){return new e(t,this._strict,this)}},{key:"invokeFunction",value:function(e){var t=this,n=Ho.traceInvocation(e),i=!1;try{for(var r={get:function(e,r){if(i)throw(0,Te.L6)("service accessor is only valid during the invocation of its target method");var o=t._getOrCreateServiceInstance(e,n);if(!o&&r!==di.jt)throw new Error("[invokeFunction] unknown service '".concat(e,"'"));return o}},o=arguments.length,a=new Array(o>1?o-1:0),s=1;s<o;s++)a[s-1]=arguments[s];return e.apply(void 0,[r].concat(a))}finally{i=!0,n.stop()}}},{key:"createInstance",value:function(e){for(var t,n,i=arguments.length,r=new Array(i>1?i-1:0),o=1;o<i;o++)r[o-1]=arguments[o];return e instanceof Po.M?(t=Ho.traceCreation(e.ctor),n=this._createInstance(e.ctor,e.staticArguments.concat(r),t)):(t=Ho.traceCreation(e),n=this._createInstance(e,r,t)),t.stop(),n}},{key:"_createInstance",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0,r=di.I8.getServiceDependencies(e).sort((function(e,t){return e.index-t.index})),o=[],a=(0,X.Z)(r);try{for(a.s();!(t=a.n()).done;){var s=t.value,u=this._getOrCreateServiceInstance(s.id,i);if(!u&&this._strict&&!s.optional)throw new Error("[createInstance] ".concat(e.name," depends on UNKNOWN service ").concat(s.id,"."));o.push(u)}}catch(d){a.e(d)}finally{a.f()}var l=r.length>0?r[0].index:n.length;if(n.length!==l){console.warn("[createInstance] First service dependency of ".concat(e.name," at position ").concat(l+1," conflicts with ").concat(n.length," static arguments"));var c=l-n.length;n=c>0?n.concat(new Array(c)):n.slice(0,l)}return(0,Io.Z)(e,[].concat((0,J.Z)(n),o))}},{key:"_setServiceInstance",value:function(e,t){if(this._services.get(e)instanceof Po.M)this._services.set(e,t);else{if(!this._parent)throw new Error("illegalState - setting UNKNOWN service instance");this._parent._setServiceInstance(e,t)}}},{key:"_getServiceInstanceOrDescriptor",value:function(e){var t=this._services.get(e);return!t&&this._parent?this._parent._getServiceInstanceOrDescriptor(e):t}},{key:"_getOrCreateServiceInstance",value:function(e,t){var n=this._getServiceInstanceOrDescriptor(e);return n instanceof Po.M?this._safeCreateAndCacheServiceInstance(e,n,t.branch(e,!0)):(t.branch(e,!1),n)}},{key:"_safeCreateAndCacheServiceInstance",value:function(e,t,n){if(this._activeInstantiations.has(e))throw new Error("illegal state - RECURSIVELY instantiating service '".concat(e,"'"));this._activeInstantiations.add(e);try{return this._createAndCacheServiceInstance(e,t,n)}finally{this._activeInstantiations.delete(e)}}},{key:"_createAndCacheServiceInstance",value:function(e,t,n){for(var i=new Ro((function(e){return e.id.toString()})),r=0,o=[{id:e,desc:t,_trace:n}];o.length;){var a=o.pop();if(i.lookupOrInsertNode(a),r++>1e3)throw new Fo(i);var s,u=(0,X.Z)(di.I8.getServiceDependencies(a.desc.ctor));try{for(u.s();!(s=u.n()).done;){var l=s.value,c=this._getServiceInstanceOrDescriptor(l.id);if(c||l.optional||console.warn("[createInstance] ".concat(e," depends on ").concat(l.id," which is NOT registered.")),c instanceof Po.M){var d={id:l.id,desc:c,_trace:a._trace.branch(l.id,!0)};i.insertEdge(a,d),o.push(d)}}}catch(m){u.e(m)}finally{u.f()}}for(;;){var h=i.roots();if(0===h.length){if(!i.isEmpty())throw new Fo(i);break}var f,p=(0,X.Z)(h);try{for(p.s();!(f=p.n()).done;){var g=f.value.data;if(this._getServiceInstanceOrDescriptor(g.id)instanceof Po.M){var v=this._createServiceInstanceWithOwner(g.id,g.desc.ctor,g.desc.staticArguments,g.desc.supportsDelayedInstantiation,g._trace);this._setServiceInstance(g.id,v)}i.removeNode(g)}}catch(m){p.e(m)}finally{p.f()}}return this._getServiceInstanceOrDescriptor(e)}},{key:"_createServiceInstanceWithOwner",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0;if(this._services.get(e)instanceof Po.M)return this._createServiceInstance(t,n,i,r);if(this._parent)return this._parent._createServiceInstanceWithOwner(e,t,n,i,r);throw new Error("illegalState - creating UNKNOWN service instance ".concat(t.name))}},{key:"_createServiceInstance",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>3?arguments[3]:void 0;if(arguments.length>2?arguments[2]:void 0){var r=new Ne.Ue((function(){return t._createInstance(e,n,i)}));return new Proxy(Object.create(null),{get:function(e,t){if(t in e)return e[t];var n=r.value,i=n[t];return"function"!==typeof i||(i=i.bind(n),e[t]=i),i},set:function(e,t,n){return r.value[t]=n,!0}})}return this._createInstance(e,n,i)}}]),e}(),Ho=function(){function e(t,n){(0,F.Z)(this,e),this.type=t,this.name=n,this._start=Date.now(),this._dep=[]}return(0,j.Z)(e,[{key:"branch",value:function(t,n){var i=new e(2,t.toString());return this._dep.push([t,n,i]),i}},{key:"stop",value:function(){var t=Date.now()-this._start;e._totals+=t;var n=!1;var i=["".concat(0===this.type?"CREATE":"CALL"," ").concat(this.name),"".concat(function e(t,i){var r,o=[],a=new Array(t+1).join("\t"),s=(0,X.Z)(i._dep);try{for(s.s();!(r=s.n()).done;){var u=(0,at.Z)(r.value,3),l=u[0],c=u[1],d=u[2];if(c&&d){n=!0,o.push("".concat(a,"CREATES -> ").concat(l));var h=e(t+1,d);h&&o.push(h)}else o.push("".concat(a,"uses -> ").concat(l))}}catch(f){s.e(f)}finally{s.f()}return o.join("\n")}(1,this)),"DONE, took ".concat(t.toFixed(2),"ms (grand total ").concat(e._totals.toFixed(2),"ms)")];(t>2||n)&&console.log(i.join("\n"))}}],[{key:"traceInvocation",value:function(t){return e._None}},{key:"traceCreation",value:function(t){return e._None}}]),e}();Ho._None=new(function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(){return(0,F.Z)(this,n),t.call(this,-1,null)}return(0,j.Z)(n,[{key:"stop",value:function(){}},{key:"branch",value:function(){return this}}]),n}(Ho)),Ho._totals=0;var Bo=n(5399),zo=n(2285),Wo=n(95123),Vo=function(){function e(){(0,F.Z)(this,e),this._byResource=new re.Y9,this._byOwner=new Map}return(0,j.Z)(e,[{key:"set",value:function(e,t,n){var i=this._byResource.get(e);i||(i=new Map,this._byResource.set(e,i)),i.set(t,n);var r=this._byOwner.get(t);r||(r=new re.Y9,this._byOwner.set(t,r)),r.set(e,n)}},{key:"get",value:function(e,t){var n=this._byResource.get(e);return null===n||void 0===n?void 0:n.get(t)}},{key:"delete",value:function(e,t){var n=!1,i=!1,r=this._byResource.get(e);r&&(n=r.delete(t));var o=this._byOwner.get(t);if(o&&(i=o.delete(e)),n!==i)throw new Error("illegal state");return n&&i}},{key:"values",value:function(e){var t,n,i,r;return"string"===typeof e?null!==(n=null===(t=this._byOwner.get(e))||void 0===t?void 0:t.values())&&void 0!==n?n:Or.$.empty():W.o.isUri(e)?null!==(r=null===(i=this._byResource.get(e))||void 0===i?void 0:i.values())&&void 0!==r?r:Or.$.empty():Or.$.map(Or.$.concat.apply(Or.$,(0,J.Z)(this._byOwner.values())),(function(e){return e[1]}))}}]),e}(),Yo=function(){function e(t){(0,F.Z)(this,e),this.errors=0,this.infos=0,this.warnings=0,this.unknowns=0,this._data=new re.Y9,this._service=t,this._subscription=t.onMarkerChanged(this._update,this)}return(0,j.Z)(e,[{key:"dispose",value:function(){this._subscription.dispose()}},{key:"_update",value:function(e){var t,n=(0,X.Z)(e);try{for(n.s();!(t=n.n()).done;){var i=t.value,r=this._data.get(i);r&&this._substract(r);var o=this._resourceStats(i);this._add(o),this._data.set(i,o)}}catch(a){n.e(a)}finally{n.f()}}},{key:"_resourceStats",value:function(e){var t={errors:0,warnings:0,infos:0,unknowns:0};if(e.scheme===ae.lg.inMemory||e.scheme===ae.lg.walkThrough||e.scheme===ae.lg.walkThroughSnippet)return t;var n,i=(0,X.Z)(this._service.read({resource:e}));try{for(i.s();!(n=i.n()).done;){var r=n.value.severity;r===Wo.ZL.Error?t.errors+=1:r===Wo.ZL.Warning?t.warnings+=1:r===Wo.ZL.Info?t.infos+=1:t.unknowns+=1}}catch(o){i.e(o)}finally{i.f()}return t}},{key:"_substract",value:function(e){this.errors-=e.errors,this.warnings-=e.warnings,this.infos-=e.infos,this.unknowns-=e.unknowns}},{key:"_add",value:function(e){this.errors+=e.errors,this.warnings+=e.warnings,this.infos+=e.infos,this.unknowns+=e.unknowns}}]),e}(),Uo=function(){function e(){(0,F.Z)(this,e),this._onMarkerChanged=new B.Q5,this.onMarkerChanged=B.ju.debounce(this._onMarkerChanged.event,e._debouncer,0),this._data=new Vo,this._stats=new Yo(this)}return(0,j.Z)(e,[{key:"dispose",value:function(){this._stats.dispose(),this._onMarkerChanged.dispose()}},{key:"remove",value:function(e,t){var n,i=(0,X.Z)(t||[]);try{for(i.s();!(n=i.n()).done;){var r=n.value;this.changeOne(e,r,[])}}catch(o){i.e(o)}finally{i.f()}}},{key:"changeOne",value:function(t,n,i){if((0,wt.XY)(i)){this._data.delete(n,t)&&this._onMarkerChanged.fire([n])}else{var r,o=[],a=(0,X.Z)(i);try{for(a.s();!(r=a.n()).done;){var s=r.value,u=e._toMarker(t,n,s);u&&o.push(u)}}catch(l){a.e(l)}finally{a.f()}this._data.set(n,t,o),this._onMarkerChanged.fire([n])}}},{key:"read",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Object.create(null),n=t.owner,i=t.resource,r=t.severities,o=t.take;if((!o||o<0)&&(o=-1),n&&i){var a=this._data.get(i,n);if(a){var s,u=[],l=(0,X.Z)(a);try{for(l.s();!(s=l.n()).done;){var c=s.value;if(e._accept(c,r)){var d=u.push(c);if(o>0&&d===o)break}}}catch(N){l.e(N)}finally{l.f()}return u}return[]}if(n||i){var h,f=this._data.values(null!==i&&void 0!==i?i:n),p=[],g=(0,X.Z)(f);try{for(g.s();!(h=g.n()).done;){var v,m=h.value,_=(0,X.Z)(m);try{for(_.s();!(v=_.n()).done;){var y=v.value;if(e._accept(y,r)){var b=p.push(y);if(o>0&&b===o)return p}}}catch(N){_.e(N)}finally{_.f()}}}catch(N){g.e(N)}finally{g.f()}return p}var w,C=[],k=(0,X.Z)(this._data.values());try{for(k.s();!(w=k.n()).done;){var S,x=w.value,L=(0,X.Z)(x);try{for(L.s();!(S=L.n()).done;){var E=S.value;if(e._accept(E,r)){var D=C.push(E);if(o>0&&D===o)return C}}}catch(N){L.e(N)}finally{L.f()}}}catch(N){k.e(N)}finally{k.f()}return C}}],[{key:"_toMarker",value:function(e,t,n){var i=n.code,r=n.severity,o=n.message,a=n.source,s=n.startLineNumber,u=n.startColumn,l=n.endLineNumber,c=n.endColumn,d=n.relatedInformation,h=n.tags;if(o)return{resource:t,owner:e,code:i,severity:r,message:o,source:a,startLineNumber:s=s>0?s:1,startColumn:u=u>0?u:1,endLineNumber:l=l>=s?l:s,endColumn:c=c>0?c:u,relatedInformation:d,tags:h}}},{key:"_accept",value:function(e,t){return void 0===t||(t&e.severity)===e.severity}},{key:"_debouncer",value:function(t,n){t||(e._dedupeMap=new re.Y9,t=[]);var i,r=(0,X.Z)(n);try{for(r.s();!(i=r.n()).done;){var o=i.value;e._dedupeMap.has(o)||(e._dedupeMap.set(o,!0),t.push(o))}}catch(a){r.e(a)}finally{r.f()}return t}}]),e}(),Ko=n(59319),qo=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},Go=function(e,t){return function(n,i){t(n,i,e)}},$o=function(){function e(t){(0,F.Z)(this,e),this._commandService=t}return(0,j.Z)(e,[{key:"createMenu",value:function(e,t){return new Qo(e,arguments.length>2&&void 0!==arguments[2]&&arguments[2],this._commandService,t,this)}}]),e}();$o=qo([Go(0,ue.H)],$o);var Qo=function(){function e(t,n,i,r,o){var a=this;(0,F.Z)(this,e),this._id=t,this._fireEventsForSubmenuChanges=n,this._commandService=i,this._contextKeyService=r,this._menuService=o,this._dispoables=new Me.SL,this._onDidChange=new B.Q5,this.onDidChange=this._onDidChange.event,this._menuGroups=[],this._contextKeys=new Set,this._build();var s=new Ne.pY((function(){return a._build()}),50);this._dispoables.add(s),this._dispoables.add(ui.BH.onDidChangeMenu((function(e){e.has(t)&&s.schedule()})));var u=new Ne.pY((function(){return a._onDidChange.fire(a)}),50);this._dispoables.add(u),this._dispoables.add(r.onDidChangeContext((function(e){e.affectsSome(a._contextKeys)&&u.schedule()})))}return(0,j.Z)(e,[{key:"dispose",value:function(){this._dispoables.dispose(),this._onDidChange.dispose()}},{key:"_build",value:function(){this._menuGroups.length=0,this._contextKeys.clear();var t,n=ui.BH.getMenuItems(this._id);n.sort(e._compareMenuItems);var i,r=(0,X.Z)(n);try{for(r.s();!(i=r.n()).done;){var o=i.value,a=o.group||"";t&&t[0]===a||(t=[a,[]],this._menuGroups.push(t)),t[1].push(o),this._collectContextKeys(o)}}catch(s){r.e(s)}finally{r.f()}this._onDidChange.fire(this)}},{key:"_collectContextKeys",value:function(t){if(e._fillInKbExprKeys(t.when,this._contextKeys),(0,ui.vr)(t)){if(t.command.precondition&&e._fillInKbExprKeys(t.command.precondition,this._contextKeys),t.command.toggled){var n=t.command.toggled.condition||t.command.toggled;e._fillInKbExprKeys(n,this._contextKeys)}}else this._fireEventsForSubmenuChanges&&ui.BH.getMenuItems(t.submenu).forEach(this._collectContextKeys,this)}},{key:"getActions",value:function(e){var t,n=[],i=(0,X.Z)(this._menuGroups);try{for(i.s();!(t=i.n()).done;){var r,o=t.value,a=(0,at.Z)(o,2),s=a[0],u=a[1],l=[],c=(0,X.Z)(u);try{for(c.s();!(r=c.n()).done;){var d=r.value;if(this._contextKeyService.contextMatchesRules(d.when)){var h=(0,ui.vr)(d)?new ui.U8(d.command,d.alt,e,this._contextKeyService,this._commandService):new ui.NZ(d,this._menuService,this._contextKeyService,e);l.push(h)}}}catch(f){c.e(f)}finally{c.f()}l.length>0&&n.push([s,l])}}catch(f){i.e(f)}finally{i.f()}return n}}],[{key:"_fillInKbExprKeys",value:function(e,t){if(e){var n,i=(0,X.Z)(e.keys());try{for(i.s();!(n=i.n()).done;){var r=n.value;t.add(r)}}catch(o){i.e(o)}finally{i.f()}}}},{key:"_compareMenuItems",value:function(t,n){var i=t.group,r=n.group;if(i!==r){if(!i)return 1;if(!r)return-1;if("navigation"===i)return-1;if("navigation"===r)return 1;var o=i.localeCompare(r);if(0!==o)return o}var a=t.order||0,s=n.order||0;return a<s?-1:a>s?1:e._compareTitles((0,ui.vr)(t)?t.command.title:t.title,(0,ui.vr)(n)?n.command.title:n.title)}},{key:"_compareTitles",value:function(e,t){var n="string"===typeof e?e:e.original,i="string"===typeof t?t:t.original;return n.localeCompare(i)}}]),e}();Qo=qo([Go(2,ue.H),Go(3,li.i6),Go(4,ui.co)],Qo);var Xo=n(50816),Jo=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},ea=function(e,t){return function(n,i){t(n,i,e)}};function ta(e){return e.toString()}var na=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e){var i;return(0,F.Z)(this,n),(i=t.call(this)).model=e,i._markersData=new Map,i._register((0,Me.OF)((function(){i.model.deltaDecorations((0,J.Z)(i._markersData.keys()),[]),i._markersData.clear()}))),i}return(0,j.Z)(n,[{key:"update",value:function(e,t){var n=(0,J.Z)(this._markersData.keys());this._markersData.clear();for(var i=this.model.deltaDecorations(n,t),r=0;r<i.length;r++)this._markersData.set(i[r],e[r]);return 0!==n.length||0!==i.length}},{key:"getMarker",value:function(e){return this._markersData.get(e.id)}}]),n}(Me.JT),ia=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r;return(0,F.Z)(this,n),(r=t.call(this))._markerService=i,r._onDidChangeMarker=r._register(new B.Q5),r._markerDecorations=new Map,e.getModels().forEach((function(e){return r._onModelAdded(e)})),r._register(e.onModelAdded(r._onModelAdded,(0,Gr.Z)(r))),r._register(e.onModelRemoved(r._onModelRemoved,(0,Gr.Z)(r))),r._register(r._markerService.onMarkerChanged(r._handleMarkerChange,(0,Gr.Z)(r))),r}return(0,j.Z)(n,[{key:"dispose",value:function(){(0,Ee.Z)((0,De.Z)(n.prototype),"dispose",this).call(this),this._markerDecorations.forEach((function(e){return e.dispose()})),this._markerDecorations.clear()}},{key:"getMarker",value:function(e,t){var n=this._markerDecorations.get(ta(e));return n&&n.getMarker(t)||null}},{key:"_handleMarkerChange",value:function(e){var t=this;e.forEach((function(e){var n=t._markerDecorations.get(ta(e));n&&t._updateDecorations(n)}))}},{key:"_onModelAdded",value:function(e){var t=new na(e);this._markerDecorations.set(ta(e.uri),t),this._updateDecorations(t)}},{key:"_onModelRemoved",value:function(e){var t=this,n=this._markerDecorations.get(ta(e.uri));n&&(n.dispose(),this._markerDecorations.delete(ta(e.uri))),e.uri.scheme!==ae.lg.inMemory&&e.uri.scheme!==ae.lg.internal&&e.uri.scheme!==ae.lg.vscode||this._markerService&&this._markerService.read({resource:e.uri}).map((function(e){return e.owner})).forEach((function(n){return t._markerService.remove(n,[e.uri])}))}},{key:"_updateDecorations",value:function(e){var t=this,n=this._markerService.read({resource:e.model.uri,take:500}),i=n.map((function(n){return{range:t._createDecorationRange(e.model,n),options:t._createDecorationOption(n)}}));e.update(n,i)&&this._onDidChangeMarker.fire(e.model)}},{key:"_createDecorationRange",value:function(e,t){var n=Y.e.lift(t);if(t.severity!==Wo.ZL.Hint||this._hasMarkerTag(t,1)||this._hasMarkerTag(t,2)||(n=n.setEndPosition(n.startLineNumber,n.startColumn+2)),(n=e.validateRange(n)).isEmpty()){var i=e.getWordAtPosition(n.getStartPosition());if(i)n=new Y.e(n.startLineNumber,i.startColumn,n.endLineNumber,i.endColumn);else{var r=e.getLineLastNonWhitespaceColumn(n.startLineNumber)||e.getLineMaxColumn(n.startLineNumber);1===r||(n=n.endColumn>=r?new Y.e(n.startLineNumber,r-1,n.endLineNumber,r):new Y.e(n.startLineNumber,n.startColumn,n.endLineNumber,n.endColumn+1))}}else if(t.endColumn===Number.MAX_VALUE&&1===t.startColumn&&n.startLineNumber===n.endLineNumber){var o=e.getLineFirstNonWhitespaceColumn(t.startLineNumber);o<n.endColumn&&(n=new Y.e(n.startLineNumber,o,n.endLineNumber,n.endColumn),t.startColumn=o)}return n}},{key:"_createDecorationOption",value:function(e){var t,n,i,r=void 0,o=void 0;switch(e.severity){case Wo.ZL.Hint:t=this._hasMarkerTag(e,2)?void 0:this._hasMarkerTag(e,1)?"squiggly-unnecessary":"squiggly-hint",n=0;break;case Wo.ZL.Warning:t="squiggly-warning",r=(0,fi.EN)(vr.Re),n=20,i={color:(0,fi.EN)(mr.Iv),position:ye.F5.Inline};break;case Wo.ZL.Info:t="squiggly-info",r=(0,fi.EN)(vr.eS),n=10;break;case Wo.ZL.Error:default:t="squiggly-error",r=(0,fi.EN)(vr.lK),n=30,i={color:(0,fi.EN)(mr.Gj),position:ye.F5.Inline}}return e.tags&&(-1!==e.tags.indexOf(1)&&(o="squiggly-inline-unnecessary"),-1!==e.tags.indexOf(2)&&(o="squiggly-inline-deprecated")),{stickiness:1,className:t,showIfCollapsed:!0,overviewRuler:{color:r,position:ye.sh.Right},minimap:i,zIndex:n,inlineClassName:o}}},{key:"_hasMarkerTag",value:function(e,t){return!!e.tags&&e.tags.indexOf(t)>=0}}]),n}(Me.JT);ia=Jo([ea(0,yt.q),ea(1,Wo.lT)],ia);var ra=n(77863),oa=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},aa=function(e,t){return function(n,i){t(n,i,e)}},sa=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r;(0,F.Z)(this,n),(r=t.call(this))._contextKeyService=e,r._configurationService=i,r._accessibilitySupport=0,r._onDidChangeScreenReaderOptimized=new B.Q5,r._accessibilityModeEnabledContext=pi.U.bindTo(r._contextKeyService);var o=function(){return r._accessibilityModeEnabledContext.set(r.isScreenReaderOptimized())};return r._register(r._configurationService.onDidChangeConfiguration((function(e){e.affectsConfiguration("editor.accessibilitySupport")&&(o(),r._onDidChangeScreenReaderOptimized.fire())}))),o(),r.onDidChangeScreenReaderOptimized((function(){return o()})),r}return(0,j.Z)(n,[{key:"onDidChangeScreenReaderOptimized",get:function(){return this._onDidChangeScreenReaderOptimized.event}},{key:"isScreenReaderOptimized",value:function(){var e=this._configurationService.getValue("editor.accessibilitySupport");return"on"===e||"auto"===e&&2===this._accessibilitySupport}},{key:"getAccessibilitySupport",value:function(){return this._accessibilitySupport}}]),n}(Me.JT);sa=oa([aa(0,li.i6),aa(1,vn.Ui)],sa);var ua=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},la=function(){function e(){(0,F.Z)(this,e),this.mapTextToType=new Map,this.findText=""}return(0,j.Z)(e,[{key:"writeText",value:function(e,t){return ua(this,void 0,void 0,te().mark((function n(){var i,r;return te().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!t){n.next=3;break}return this.mapTextToType.set(t,e),n.abrupt("return");case 3:return n.prev=3,n.next=6,navigator.clipboard.writeText(e);case 6:return n.abrupt("return",n.sent);case 9:n.prev=9,n.t0=n.catch(3),console.error(n.t0);case 12:return i=document.activeElement,(r=document.body.appendChild((0,ne.$)("textarea",{"aria-hidden":!0}))).style.height="1px",r.style.width="1px",r.style.position="absolute",r.value=e,r.focus(),r.select(),document.execCommand("copy"),i instanceof HTMLElement&&i.focus(),document.body.removeChild(r),n.abrupt("return");case 24:case"end":return n.stop()}}),n,this,[[3,9]])})))}},{key:"readText",value:function(e){return ua(this,void 0,void 0,te().mark((function t(){return te().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e){t.next=2;break}return t.abrupt("return",this.mapTextToType.get(e)||"");case 2:return t.prev=2,t.next=5,navigator.clipboard.readText();case 5:return t.abrupt("return",t.sent);case 8:return t.prev=8,t.t0=t.catch(2),console.error(t.t0),t.abrupt("return","");case 12:case"end":return t.stop()}}),t,this,[[2,8]])})))}},{key:"readFindText",value:function(){return ua(this,void 0,void 0,te().mark((function e(){return te().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.findText);case 1:case"end":return e.stop()}}),e,this)})))}},{key:"writeFindText",value:function(e){return ua(this,void 0,void 0,te().mark((function t(){return te().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.findText=e;case 1:case"end":return t.stop()}}),t,this)})))}}]),e}(),ca=n(45822),da=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},ha=function(e,t){return function(n,i){t(n,i,e)}},fa=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},pa=!1;function ga(e){return e.scheme===ae.lg.file?e.fsPath:e.path}var va=0,ma=function(){function e(t,n,i,r,o,a,s){(0,F.Z)(this,e),this.id=++va,this.type=0,this.actual=t,this.label=t.label,this.confirmBeforeUndo=t.confirmBeforeUndo||!1,this.resourceLabel=n,this.strResource=i,this.resourceLabels=[this.resourceLabel],this.strResources=[this.strResource],this.groupId=r,this.groupOrder=o,this.sourceId=a,this.sourceOrder=s,this.isValid=!0}return(0,j.Z)(e,[{key:"setValid",value:function(e){this.isValid=e}},{key:"toString",value:function(){return"[id:".concat(this.id,"] [group:").concat(this.groupId,"] [").concat(this.isValid?" VALID":"INVALID","] ").concat(this.actual.constructor.name," - ").concat(this.actual)}}]),e}(),_a=(0,j.Z)((function e(t,n){(0,F.Z)(this,e),this.resourceLabel=t,this.reason=n})),ya=function(){function e(){(0,F.Z)(this,e),this.elements=new Map}return(0,j.Z)(e,[{key:"createMessage",value:function(){var e,t=[],n=[],i=(0,X.Z)(this.elements);try{for(i.s();!(e=i.n()).done;){var r=(0,at.Z)(e.value,2)[1];(0===r.reason?t:n).push(r.resourceLabel)}}catch(a){i.e(a)}finally{i.f()}var o=[];return t.length>0&&o.push(kn.N({key:"externalRemoval",comment:["{0} is a list of filenames"]},"The following files have been closed and modified on disk: {0}.",t.join(", "))),n.length>0&&o.push(kn.N({key:"noParallelUniverses",comment:["{0} is a list of filenames"]},"The following files have been modified in an incompatible way: {0}.",n.join(", "))),o.join("\n")}},{key:"size",get:function(){return this.elements.size}},{key:"has",value:function(e){return this.elements.has(e)}},{key:"set",value:function(e,t){this.elements.set(e,t)}},{key:"delete",value:function(e){return this.elements.delete(e)}}]),e}(),ba=function(){function e(t,n,i,r,o,a,s){(0,F.Z)(this,e),this.id=++va,this.type=1,this.actual=t,this.label=t.label,this.confirmBeforeUndo=t.confirmBeforeUndo||!1,this.resourceLabels=n,this.strResources=i,this.groupId=r,this.groupOrder=o,this.sourceId=a,this.sourceOrder=s,this.removedResources=null,this.invalidatedResources=null}return(0,j.Z)(e,[{key:"canSplit",value:function(){return"function"===typeof this.actual.split}},{key:"removeResource",value:function(e,t,n){this.removedResources||(this.removedResources=new ya),this.removedResources.has(t)||this.removedResources.set(t,new _a(e,n))}},{key:"setValid",value:function(e,t,n){n?this.invalidatedResources&&(this.invalidatedResources.delete(t),0===this.invalidatedResources.size&&(this.invalidatedResources=null)):(this.invalidatedResources||(this.invalidatedResources=new ya),this.invalidatedResources.has(t)||this.invalidatedResources.set(t,new _a(e,0)))}},{key:"toString",value:function(){return"[id:".concat(this.id,"] [group:").concat(this.groupId,"] [").concat(this.invalidatedResources?"INVALID":" VALID","] ").concat(this.actual.constructor.name," - ").concat(this.actual)}}]),e}(),wa=function(){function e(t,n){(0,F.Z)(this,e),this.resourceLabel=t,this.strResource=n,this._past=[],this._future=[],this.locked=!1,this.versionId=1}return(0,j.Z)(e,[{key:"dispose",value:function(){var e,t=(0,X.Z)(this._past);try{for(t.s();!(e=t.n()).done;){var n=e.value;1===n.type&&n.removeResource(this.resourceLabel,this.strResource,0)}}catch(a){t.e(a)}finally{t.f()}var i,r=(0,X.Z)(this._future);try{for(r.s();!(i=r.n()).done;){var o=i.value;1===o.type&&o.removeResource(this.resourceLabel,this.strResource,0)}}catch(a){r.e(a)}finally{r.f()}this.versionId++}},{key:"toString",value:function(){var e=[];e.push("* ".concat(this.strResource,":"));for(var t=0;t<this._past.length;t++)e.push(" * [UNDO] ".concat(this._past[t]));for(var n=this._future.length-1;n>=0;n--)e.push(" * [REDO] ".concat(this._future[n]));return e.join("\n")}},{key:"flushAllElements",value:function(){this._past=[],this._future=[],this.versionId++}},{key:"_setElementValidFlag",value:function(e,t){1===e.type?e.setValid(this.resourceLabel,this.strResource,t):e.setValid(t)}},{key:"setElementsValidFlag",value:function(e,t){var n,i=(0,X.Z)(this._past);try{for(i.s();!(n=i.n()).done;){var r=n.value;t(r.actual)&&this._setElementValidFlag(r,e)}}catch(u){i.e(u)}finally{i.f()}var o,a=(0,X.Z)(this._future);try{for(a.s();!(o=a.n()).done;){var s=o.value;t(s.actual)&&this._setElementValidFlag(s,e)}}catch(u){a.e(u)}finally{a.f()}}},{key:"pushElement",value:function(e){var t,n=(0,X.Z)(this._future);try{for(n.s();!(t=n.n()).done;){var i=t.value;1===i.type&&i.removeResource(this.resourceLabel,this.strResource,1)}}catch(r){n.e(r)}finally{n.f()}this._future=[],this._past.push(e),this.versionId++}},{key:"createSnapshot",value:function(e){for(var t=[],n=0,i=this._past.length;n<i;n++)t.push(this._past[n].id);for(var r=this._future.length-1;r>=0;r--)t.push(this._future[r].id);return new ca.YO(e,t)}},{key:"restoreSnapshot",value:function(e){for(var t=e.elements.length,n=!0,i=0,r=-1,o=0,a=this._past.length;o<a;o++,i++){var s=this._past[o];n&&(i>=t||s.id!==e.elements[i])&&(n=!1,r=0),n||1!==s.type||s.removeResource(this.resourceLabel,this.strResource,0)}for(var u=-1,l=this._future.length-1;l>=0;l--,i++){var c=this._future[l];n&&(i>=t||c.id!==e.elements[i])&&(n=!1,u=l),n||1!==c.type||c.removeResource(this.resourceLabel,this.strResource,0)}-1!==r&&(this._past=this._past.slice(0,r)),-1!==u&&(this._future=this._future.slice(u+1)),this.versionId++}},{key:"getElements",value:function(){var e,t=[],n=[],i=(0,X.Z)(this._past);try{for(i.s();!(e=i.n()).done;){var r=e.value;t.push(r.actual)}}catch(u){i.e(u)}finally{i.f()}var o,a=(0,X.Z)(this._future);try{for(a.s();!(o=a.n()).done;){var s=o.value;n.push(s.actual)}}catch(u){a.e(u)}finally{a.f()}return{past:t,future:n}}},{key:"getClosestPastElement",value:function(){return 0===this._past.length?null:this._past[this._past.length-1]}},{key:"getSecondClosestPastElement",value:function(){return this._past.length<2?null:this._past[this._past.length-2]}},{key:"getClosestFutureElement",value:function(){return 0===this._future.length?null:this._future[this._future.length-1]}},{key:"hasPastElements",value:function(){return this._past.length>0}},{key:"hasFutureElements",value:function(){return this._future.length>0}},{key:"splitPastWorkspaceElement",value:function(e,t){for(var n=this._past.length-1;n>=0;n--)if(this._past[n]===e){t.has(this.strResource)?this._past[n]=t.get(this.strResource):this._past.splice(n,1);break}this.versionId++}},{key:"splitFutureWorkspaceElement",value:function(e,t){for(var n=this._future.length-1;n>=0;n--)if(this._future[n]===e){t.has(this.strResource)?this._future[n]=t.get(this.strResource):this._future.splice(n,1);break}this.versionId++}},{key:"moveBackward",value:function(e){this._past.pop(),this._future.push(e),this.versionId++}},{key:"moveForward",value:function(e){this._future.pop(),this._past.push(e),this.versionId++}}]),e}(),Ca=function(){function e(t){(0,F.Z)(this,e),this.editStacks=t,this._versionIds=[];for(var n=0,i=this.editStacks.length;n<i;n++)this._versionIds[n]=this.editStacks[n].versionId}return(0,j.Z)(e,[{key:"isValid",value:function(){for(var e=0,t=this.editStacks.length;e<t;e++)if(this._versionIds[e]!==this.editStacks[e].versionId)return!1;return!0}}]),e}(),ka=new wa("","");ka.locked=!0;var Sa=function(){function e(t,n){(0,F.Z)(this,e),this._dialogService=t,this._notificationService=n,this._editStacks=new Map,this._uriComparisonKeyComputers=[]}return(0,j.Z)(e,[{key:"getUriComparisonKey",value:function(e){var t,n=(0,X.Z)(this._uriComparisonKeyComputers);try{for(n.s();!(t=n.n()).done;){var i=t.value;if(i[0]===e.scheme)return i[1].getComparisonKey(e)}}catch(r){n.e(r)}finally{n.f()}return e.toString()}},{key:"_print",value:function(e){console.log("------------------------------------"),console.log("AFTER ".concat(e,": "));var t,n=[],i=(0,X.Z)(this._editStacks);try{for(i.s();!(t=i.n()).done;){var r=t.value;n.push(r[1].toString())}}catch(o){i.e(o)}finally{i.f()}console.log(n.join("\n"))}},{key:"pushElement",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ca.Xt.None,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ca.gJ.None;if(0===e.type){var i=ga(e.resource),r=this.getUriComparisonKey(e.resource);this._pushElement(new ma(e,i,r,t.id,t.nextOrder(),n.id,n.nextOrder()))}else{var o,a=new Set,s=[],u=[],l=(0,X.Z)(e.resources);try{for(l.s();!(o=l.n()).done;){var c=o.value,d=ga(c),h=this.getUriComparisonKey(c);a.has(h)||(a.add(h),s.push(d),u.push(h))}}catch(f){l.e(f)}finally{l.f()}1===s.length?this._pushElement(new ma(e,s[0],u[0],t.id,t.nextOrder(),n.id,n.nextOrder())):this._pushElement(new ba(e,s,u,t.id,t.nextOrder(),n.id,n.nextOrder()))}pa&&this._print("pushElement")}},{key:"_pushElement",value:function(e){for(var t=0,n=e.strResources.length;t<n;t++){var i=e.resourceLabels[t],r=e.strResources[t],o=void 0;this._editStacks.has(r)?o=this._editStacks.get(r):(o=new wa(i,r),this._editStacks.set(r,o)),o.pushElement(e)}}},{key:"getLastElement",value:function(e){var t=this.getUriComparisonKey(e);if(this._editStacks.has(t)){var n=this._editStacks.get(t);if(n.hasFutureElements())return null;var i=n.getClosestPastElement();return i?i.actual:null}return null}},{key:"_splitPastWorkspaceElement",value:function(e,t){var n,i=e.actual.split(),r=new Map,o=(0,X.Z)(i);try{for(o.s();!(n=o.n()).done;){var a=n.value,s=ga(a.resource),u=this.getUriComparisonKey(a.resource),l=new ma(a,s,u,0,0,0,0);r.set(l.strResource,l)}}catch(f){o.e(f)}finally{o.f()}var c,d=(0,X.Z)(e.strResources);try{for(d.s();!(c=d.n()).done;){var h=c.value;if(!t||!t.has(h))this._editStacks.get(h).splitPastWorkspaceElement(e,r)}}catch(f){d.e(f)}finally{d.f()}}},{key:"_splitFutureWorkspaceElement",value:function(e,t){var n,i=e.actual.split(),r=new Map,o=(0,X.Z)(i);try{for(o.s();!(n=o.n()).done;){var a=n.value,s=ga(a.resource),u=this.getUriComparisonKey(a.resource),l=new ma(a,s,u,0,0,0,0);r.set(l.strResource,l)}}catch(f){o.e(f)}finally{o.f()}var c,d=(0,X.Z)(e.strResources);try{for(d.s();!(c=d.n()).done;){var h=c.value;if(!t||!t.has(h))this._editStacks.get(h).splitFutureWorkspaceElement(e,r)}}catch(f){d.e(f)}finally{d.f()}}},{key:"removeElements",value:function(e){var t="string"===typeof e?e:this.getUriComparisonKey(e);this._editStacks.has(t)&&(this._editStacks.get(t).dispose(),this._editStacks.delete(t));pa&&this._print("removeElements")}},{key:"setElementsValidFlag",value:function(e,t,n){var i=this.getUriComparisonKey(e);this._editStacks.has(i)&&this._editStacks.get(i).setElementsValidFlag(t,n);pa&&this._print("setElementsValidFlag")}},{key:"createSnapshot",value:function(e){var t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).createSnapshot(e):new ca.YO(e,[])}},{key:"restoreSnapshot",value:function(e){var t=this.getUriComparisonKey(e.resource);if(this._editStacks.has(t)){var n=this._editStacks.get(t);n.restoreSnapshot(e),n.hasPastElements()||n.hasFutureElements()||(n.dispose(),this._editStacks.delete(t))}pa&&this._print("restoreSnapshot")}},{key:"getElements",value:function(e){var t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).getElements():{past:[],future:[]}}},{key:"_findClosestUndoElementWithSource",value:function(e){if(!e)return[null,null];var t,n=null,i=null,r=(0,X.Z)(this._editStacks);try{for(r.s();!(t=r.n()).done;){var o=(0,at.Z)(t.value,2),a=o[0],s=o[1].getClosestPastElement();s&&(s.sourceId===e&&(!n||s.sourceOrder>n.sourceOrder)&&(n=s,i=a))}}catch(u){r.e(u)}finally{r.f()}return[n,i]}},{key:"canUndo",value:function(e){if(e instanceof ca.gJ){var t=this._findClosestUndoElementWithSource(e.id);return!!(0,at.Z)(t,2)[1]}var n=this.getUriComparisonKey(e);return!!this._editStacks.has(n)&&this._editStacks.get(n).hasPastElements()}},{key:"_onError",value:function(e,t){(0,Te.dL)(e);var n,i=(0,X.Z)(t.strResources);try{for(i.s();!(n=i.n()).done;){var r=n.value;this.removeElements(r)}}catch(e){i.e(e)}finally{i.f()}this._notificationService.error(e)}},{key:"_acquireLocks",value:function(e){var t,n=(0,X.Z)(e.editStacks);try{for(n.s();!(t=n.n()).done;){if(t.value.locked)throw new Error("Cannot acquire edit stack lock")}}catch(o){n.e(o)}finally{n.f()}var i,r=(0,X.Z)(e.editStacks);try{for(r.s();!(i=r.n()).done;){i.value.locked=!0}}catch(o){r.e(o)}finally{r.f()}return function(){var t,n=(0,X.Z)(e.editStacks);try{for(n.s();!(t=n.n()).done;){t.value.locked=!1}}catch(o){n.e(o)}finally{n.f()}}}},{key:"_safeInvokeWithLocks",value:function(e,t,n,i,r){var o,a=this,s=this._acquireLocks(n);try{o=t()}catch(u){return s(),i.dispose(),this._onError(u,e)}return o?o.then((function(){return s(),i.dispose(),r()}),(function(t){return s(),i.dispose(),a._onError(t,e)})):(s(),i.dispose(),r())}},{key:"_invokeWorkspacePrepare",value:function(e){return fa(this,void 0,void 0,te().mark((function t(){var n;return te().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("undefined"!==typeof e.actual.prepareUndoRedo){t.next=2;break}return t.abrupt("return",Me.JT.None);case 2:if("undefined"!==typeof(n=e.actual.prepareUndoRedo())){t.next=5;break}return t.abrupt("return",Me.JT.None);case 5:return t.abrupt("return",n);case 6:case"end":return t.stop()}}),t)})))}},{key:"_invokeResourcePrepare",value:function(e,t){if(1!==e.actual.type||"undefined"===typeof e.actual.prepareUndoRedo)return t(Me.JT.None);var n=e.actual.prepareUndoRedo();return n?(0,Me.Wf)(n)?t(n):n.then((function(e){return t(e)})):t(Me.JT.None)}},{key:"_getAffectedEditStacks",value:function(e){var t,n=[],i=(0,X.Z)(e.strResources);try{for(i.s();!(t=i.n()).done;){var r=t.value;n.push(this._editStacks.get(r)||ka)}}catch(o){i.e(o)}finally{i.f()}return new Ca(n)}},{key:"_tryToSplitAndUndo",value:function(e,t,n,i){if(t.canSplit())return this._splitPastWorkspaceElement(t,n),this._notificationService.warn(i),new xa(this._undo(e,0,!0));var r,o=(0,X.Z)(t.strResources);try{for(o.s();!(r=o.n()).done;){var a=r.value;this.removeElements(a)}}catch(s){o.e(s)}finally{o.f()}return this._notificationService.warn(i),new xa}},{key:"_checkWorkspaceUndo",value:function(e,t,n,i){if(t.removedResources)return this._tryToSplitAndUndo(e,t,t.removedResources,kn.N({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.removedResources.createMessage()));if(i&&t.invalidatedResources)return this._tryToSplitAndUndo(e,t,t.invalidatedResources,kn.N({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.invalidatedResources.createMessage()));var r,o=[],a=(0,X.Z)(n.editStacks);try{for(a.s();!(r=a.n()).done;){var s=r.value;s.getClosestPastElement()!==t&&o.push(s.resourceLabel)}}catch(h){a.e(h)}finally{a.f()}if(o.length>0)return this._tryToSplitAndUndo(e,t,null,kn.N({key:"cannotWorkspaceUndoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because changes were made to {1}",t.label,o.join(", ")));var u,l=[],c=(0,X.Z)(n.editStacks);try{for(c.s();!(u=c.n()).done;){var d=u.value;d.locked&&l.push(d.resourceLabel)}}catch(h){c.e(h)}finally{c.f()}return l.length>0?this._tryToSplitAndUndo(e,t,null,kn.N({key:"cannotWorkspaceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,l.join(", "))):n.isValid()?null:this._tryToSplitAndUndo(e,t,null,kn.N({key:"cannotWorkspaceUndoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}},{key:"_workspaceUndo",value:function(e,t,n){var i=this._getAffectedEditStacks(t),r=this._checkWorkspaceUndo(e,t,i,!1);return r?r.returnValue:this._confirmAndExecuteWorkspaceUndo(e,t,i,n)}},{key:"_isPartOfUndoGroup",value:function(e){if(!e.groupId)return!1;var t,n=(0,X.Z)(this._editStacks);try{for(n.s();!(t=n.n()).done;){var i=(0,at.Z)(t.value,2)[1],r=i.getClosestPastElement();if(r){if(r===e){var o=i.getSecondClosestPastElement();if(o&&o.groupId===e.groupId)return!0}if(r.groupId===e.groupId)return!0}}}catch(a){n.e(a)}finally{n.f()}return!1}},{key:"_confirmAndExecuteWorkspaceUndo",value:function(e,t,n,i){return fa(this,void 0,void 0,te().mark((function r(){var o,a,s,u,l,c,d=this;return te().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!t.canSplit()||this._isPartOfUndoGroup(t)){r.next=13;break}return r.next=3,this._dialogService.show(dn.Z.Info,kn.N("confirmWorkspace","Would you like to undo '{0}' across all files?",t.label),[kn.N({key:"ok",comment:["{0} denotes a number that is > 1"]},"Undo in {0} Files",n.editStacks.length),kn.N("nok","Undo this File"),kn.N("cancel","Cancel")],{cancelId:2});case 3:if(2!==(o=r.sent).choice){r.next=6;break}return r.abrupt("return");case 6:if(1!==o.choice){r.next=9;break}return this._splitPastWorkspaceElement(t,null),r.abrupt("return",this._undo(e,0,!0));case 9:if(!(a=this._checkWorkspaceUndo(e,t,n,!1))){r.next=12;break}return r.abrupt("return",a.returnValue);case 12:i=!0;case 13:return r.prev=13,r.next=16,this._invokeWorkspacePrepare(t);case 16:s=r.sent,r.next=22;break;case 19:return r.prev=19,r.t0=r.catch(13),r.abrupt("return",this._onError(r.t0,t));case 22:if(!(u=this._checkWorkspaceUndo(e,t,n,!0))){r.next=26;break}return s.dispose(),r.abrupt("return",u.returnValue);case 26:l=(0,X.Z)(n.editStacks);try{for(l.s();!(c=l.n()).done;)c.value.moveBackward(t)}catch(h){l.e(h)}finally{l.f()}return r.abrupt("return",this._safeInvokeWithLocks(t,(function(){return t.actual.undo()}),n,s,(function(){return d._continueUndoInGroup(t.groupId,i)})));case 29:case"end":return r.stop()}}),r,this,[[13,19]])})))}},{key:"_resourceUndo",value:function(e,t,n){var i=this;if(t.isValid){if(!e.locked)return this._invokeResourcePrepare(t,(function(r){return e.moveBackward(t),i._safeInvokeWithLocks(t,(function(){return t.actual.undo()}),new Ca([e]),r,(function(){return i._continueUndoInGroup(t.groupId,n)}))}));var r=kn.N({key:"cannotResourceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not undo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.warn(r)}else e.flushAllElements()}},{key:"_findClosestUndoElementInGroup",value:function(e){if(!e)return[null,null];var t,n=null,i=null,r=(0,X.Z)(this._editStacks);try{for(r.s();!(t=r.n()).done;){var o=(0,at.Z)(t.value,2),a=o[0],s=o[1].getClosestPastElement();s&&(s.groupId===e&&(!n||s.groupOrder>n.groupOrder)&&(n=s,i=a))}}catch(u){r.e(u)}finally{r.f()}return[n,i]}},{key:"_continueUndoInGroup",value:function(e,t){if(e){var n=this._findClosestUndoElementInGroup(e),i=(0,at.Z)(n,2)[1];return i?this._undo(i,0,t):void 0}}},{key:"undo",value:function(e){if(e instanceof ca.gJ){var t=this._findClosestUndoElementWithSource(e.id),n=(0,at.Z)(t,2)[1];return n?this._undo(n,e.id,!1):void 0}return"string"===typeof e?this._undo(e,0,!1):this._undo(this.getUriComparisonKey(e),0,!1)}},{key:"_undo",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0;if(this._editStacks.has(e)){var i=this._editStacks.get(e),r=i.getClosestPastElement();if(r){if(r.groupId){var o=this._findClosestUndoElementInGroup(r.groupId),a=(0,at.Z)(o,2),s=a[0],u=a[1];if(r!==s&&u)return this._undo(u,t,n)}if((r.sourceId!==t||r.confirmBeforeUndo)&&!n)return this._confirmAndContinueUndo(e,t,r);try{return 1===r.type?this._workspaceUndo(e,r,n):this._resourceUndo(i,r,n)}finally{pa&&this._print("undo")}}}}},{key:"_confirmAndContinueUndo",value:function(e,t,n){return fa(this,void 0,void 0,te().mark((function i(){return te().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dialogService.show(dn.Z.Info,kn.N("confirmDifferentSource","Would you like to undo '{0}'?",n.label),[kn.N("confirmDifferentSource.ok","Undo"),kn.N("cancel","Cancel")],{cancelId:1});case 2:if(1!==i.sent.choice){i.next=5;break}return i.abrupt("return");case 5:return i.abrupt("return",this._undo(e,t,!0));case 6:case"end":return i.stop()}}),i,this)})))}},{key:"_findClosestRedoElementWithSource",value:function(e){if(!e)return[null,null];var t,n=null,i=null,r=(0,X.Z)(this._editStacks);try{for(r.s();!(t=r.n()).done;){var o=(0,at.Z)(t.value,2),a=o[0],s=o[1].getClosestFutureElement();s&&(s.sourceId===e&&(!n||s.sourceOrder<n.sourceOrder)&&(n=s,i=a))}}catch(u){r.e(u)}finally{r.f()}return[n,i]}},{key:"canRedo",value:function(e){if(e instanceof ca.gJ){var t=this._findClosestRedoElementWithSource(e.id);return!!(0,at.Z)(t,2)[1]}var n=this.getUriComparisonKey(e);return!!this._editStacks.has(n)&&this._editStacks.get(n).hasFutureElements()}},{key:"_tryToSplitAndRedo",value:function(e,t,n,i){if(t.canSplit())return this._splitFutureWorkspaceElement(t,n),this._notificationService.warn(i),new xa(this._redo(e));var r,o=(0,X.Z)(t.strResources);try{for(o.s();!(r=o.n()).done;){var a=r.value;this.removeElements(a)}}catch(s){o.e(s)}finally{o.f()}return this._notificationService.warn(i),new xa}},{key:"_checkWorkspaceRedo",value:function(e,t,n,i){if(t.removedResources)return this._tryToSplitAndRedo(e,t,t.removedResources,kn.N({key:"cannotWorkspaceRedo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not redo '{0}' across all files. {1}",t.label,t.removedResources.createMessage()));if(i&&t.invalidatedResources)return this._tryToSplitAndRedo(e,t,t.invalidatedResources,kn.N({key:"cannotWorkspaceRedo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not redo '{0}' across all files. {1}",t.label,t.invalidatedResources.createMessage()));var r,o=[],a=(0,X.Z)(n.editStacks);try{for(a.s();!(r=a.n()).done;){var s=r.value;s.getClosestFutureElement()!==t&&o.push(s.resourceLabel)}}catch(h){a.e(h)}finally{a.f()}if(o.length>0)return this._tryToSplitAndRedo(e,t,null,kn.N({key:"cannotWorkspaceRedoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because changes were made to {1}",t.label,o.join(", ")));var u,l=[],c=(0,X.Z)(n.editStacks);try{for(c.s();!(u=c.n()).done;){var d=u.value;d.locked&&l.push(d.resourceLabel)}}catch(h){c.e(h)}finally{c.f()}return l.length>0?this._tryToSplitAndRedo(e,t,null,kn.N({key:"cannotWorkspaceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,l.join(", "))):n.isValid()?null:this._tryToSplitAndRedo(e,t,null,kn.N({key:"cannotWorkspaceRedoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}},{key:"_workspaceRedo",value:function(e,t){var n=this._getAffectedEditStacks(t),i=this._checkWorkspaceRedo(e,t,n,!1);return i?i.returnValue:this._executeWorkspaceRedo(e,t,n)}},{key:"_executeWorkspaceRedo",value:function(e,t,n){return fa(this,void 0,void 0,te().mark((function i(){var r,o,a,s,u=this;return te().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,this._invokeWorkspacePrepare(t);case 3:r=i.sent,i.next=9;break;case 6:return i.prev=6,i.t0=i.catch(0),i.abrupt("return",this._onError(i.t0,t));case 9:if(!(o=this._checkWorkspaceRedo(e,t,n,!0))){i.next=13;break}return r.dispose(),i.abrupt("return",o.returnValue);case 13:a=(0,X.Z)(n.editStacks);try{for(a.s();!(s=a.n()).done;)s.value.moveForward(t)}catch(l){a.e(l)}finally{a.f()}return i.abrupt("return",this._safeInvokeWithLocks(t,(function(){return t.actual.redo()}),n,r,(function(){return u._continueRedoInGroup(t.groupId)})));case 16:case"end":return i.stop()}}),i,this,[[0,6]])})))}},{key:"_resourceRedo",value:function(e,t){var n=this;if(t.isValid){if(!e.locked)return this._invokeResourcePrepare(t,(function(i){return e.moveForward(t),n._safeInvokeWithLocks(t,(function(){return t.actual.redo()}),new Ca([e]),i,(function(){return n._continueRedoInGroup(t.groupId)}))}));var i=kn.N({key:"cannotResourceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not redo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.warn(i)}else e.flushAllElements()}},{key:"_findClosestRedoElementInGroup",value:function(e){if(!e)return[null,null];var t,n=null,i=null,r=(0,X.Z)(this._editStacks);try{for(r.s();!(t=r.n()).done;){var o=(0,at.Z)(t.value,2),a=o[0],s=o[1].getClosestFutureElement();s&&(s.groupId===e&&(!n||s.groupOrder<n.groupOrder)&&(n=s,i=a))}}catch(u){r.e(u)}finally{r.f()}return[n,i]}},{key:"_continueRedoInGroup",value:function(e){if(e){var t=this._findClosestRedoElementInGroup(e),n=(0,at.Z)(t,2)[1];return n?this._redo(n):void 0}}},{key:"redo",value:function(e){if(e instanceof ca.gJ){var t=this._findClosestRedoElementWithSource(e.id),n=(0,at.Z)(t,2)[1];return n?this._redo(n):void 0}return"string"===typeof e?this._redo(e):this._redo(this.getUriComparisonKey(e))}},{key:"_redo",value:function(e){if(this._editStacks.has(e)){var t=this._editStacks.get(e),n=t.getClosestFutureElement();if(n){if(n.groupId){var i=this._findClosestRedoElementInGroup(n.groupId),r=(0,at.Z)(i,2),o=r[0],a=r[1];if(n!==o&&a)return this._redo(a)}try{return 1===n.type?this._workspaceRedo(e,n):this._resourceRedo(t,n)}finally{pa&&this._print("redo")}}}}}]),e}();Sa=da([ha(0,To.S),ha(1,An.lT)],Sa);var xa=(0,j.Z)((function e(t){(0,F.Z)(this,e),this.returnValue=t}));(0,ra.z)(ca.tJ,Sa);var La=n(33399),Ea=n(42659),Da=new Ne.Ue((function(){var e=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});return{collator:e,collatorIsNumeric:e.resolvedOptions().numeric}}));function Na(e,t,n){var i=e.toLowerCase(),r=t.toLowerCase(),o=function(e,t,n){var i=e.toLowerCase(),r=t.toLowerCase(),o=i.startsWith(n),a=r.startsWith(n);if(o!==a)return o?-1:1;if(o&&a){if(i.length<r.length)return-1;if(i.length>r.length)return 1}return 0}(e,t,n);if(o)return o;var a=i.endsWith(n);if(a!==r.endsWith(n))return a?-1:1;var s=function(e,t){var n=e||"",i=t||"",r=Da.value.collator.compare(n,i);return Da.value.collatorIsNumeric&&0===r&&n!==i?n<i?-1:1:r}(i,r);return 0!==s?s:i.localeCompare(r)}var Ma=n(5677),Ta=n(61743),Ia=n(94995),Oa=n(12394),Aa={},Ra=new Oa.R("quick-input-button-icon-");function Pa(e){if(e){var t,n=e.dark.toString();return Aa[n]?t=Aa[n]:(t=Ra.nextId(),ne.createCSSRule(".".concat(t),"background-image: ".concat(ne.asCSSUrl(e.light||e.dark))),ne.createCSSRule(".vs-dark .".concat(t,", .hc-black .").concat(t),"background-image: ".concat(ne.asCSSUrl(e.dark))),Aa[n]=t),t}}var Za=ne.$,Fa=function(){function e(t,n,i){(0,F.Z)(this,e),this.os=n,this.keyElements=new Set,this.options=i||Object.create(null),this.labelBackground=this.options.keybindingLabelBackground,this.labelForeground=this.options.keybindingLabelForeground,this.labelBorder=this.options.keybindingLabelBorder,this.labelBottomBorder=this.options.keybindingLabelBottomBorder,this.labelShadow=this.options.keybindingLabelShadow,this.domNode=ne.append(t,Za(".monaco-keybinding")),this.didEverRender=!1,t.appendChild(this.domNode)}return(0,j.Z)(e,[{key:"element",get:function(){return this.domNode}},{key:"set",value:function(t,n){this.didEverRender&&this.keybinding===t&&e.areSame(this.matches,n)||(this.keybinding=t,this.matches=n,this.render())}},{key:"render",value:function(){if(this.clear(),this.keybinding){var e=this.keybinding.getParts(),t=(0,at.Z)(e,2),n=t[0],i=t[1];n&&this.renderPart(this.domNode,n,this.matches?this.matches.firstPart:null),i&&(ne.append(this.domNode,Za("span.monaco-keybinding-key-chord-separator",void 0," ")),this.renderPart(this.domNode,i,this.matches?this.matches.chordPart:null)),this.domNode.title=this.keybinding.getAriaLabel()||""}else this.options&&this.options.renderUnboundKeybindings&&this.renderUnbound(this.domNode);this.applyStyles(),this.didEverRender=!0}},{key:"clear",value:function(){ne.clearNode(this.domNode),this.keyElements.clear()}},{key:"renderPart",value:function(e,t,n){var i=Tn.xo.modifierLabels[this.os];t.ctrlKey&&this.renderKey(e,i.ctrlKey,Boolean(null===n||void 0===n?void 0:n.ctrlKey),i.separator),t.shiftKey&&this.renderKey(e,i.shiftKey,Boolean(null===n||void 0===n?void 0:n.shiftKey),i.separator),t.altKey&&this.renderKey(e,i.altKey,Boolean(null===n||void 0===n?void 0:n.altKey),i.separator),t.metaKey&&this.renderKey(e,i.metaKey,Boolean(null===n||void 0===n?void 0:n.metaKey),i.separator);var r=t.keyLabel;r&&this.renderKey(e,r,Boolean(null===n||void 0===n?void 0:n.keyCode),"")}},{key:"renderKey",value:function(e,t,n,i){ne.append(e,this.createKeyElement(t,n?".highlight":"")),i&&ne.append(e,Za("span.monaco-keybinding-key-separator",void 0,i))}},{key:"renderUnbound",value:function(e){ne.append(e,this.createKeyElement((0,kn.N)("unbound","Unbound")))}},{key:"createKeyElement",value:function(e){var t=Za("span.monaco-keybinding-key"+(arguments.length>1&&void 0!==arguments[1]?arguments[1]:""),void 0,e);return this.keyElements.add(t),t}},{key:"style",value:function(e){this.labelBackground=e.keybindingLabelBackground,this.labelForeground=e.keybindingLabelForeground,this.labelBorder=e.keybindingLabelBorder,this.labelBottomBorder=e.keybindingLabelBottomBorder,this.labelShadow=e.keybindingLabelShadow,this.applyStyles()}},{key:"applyStyles",value:function(){var e;if(this.element){var t,n=(0,X.Z)(this.keyElements);try{for(n.s();!(t=n.n()).done;){var i=t.value;this.labelBackground&&(i.style.backgroundColor=null===(e=this.labelBackground)||void 0===e?void 0:e.toString()),this.labelBorder&&(i.style.borderColor=this.labelBorder.toString()),this.labelBottomBorder&&(i.style.borderBottomColor=this.labelBottomBorder.toString()),this.labelShadow&&(i.style.boxShadow="inset 0 -1px 0 ".concat(this.labelShadow))}}catch(r){n.e(r)}finally{n.f()}this.labelForeground&&(this.element.style.color=this.labelForeground.toString())}}}],[{key:"areSame",value:function(e,t){return e===t||!e&&!t||!!e&&!!t&&(0,mn.fS)(e.firstPart,t.firstPart)&&(0,mn.fS)(e.chordPart,t.chordPart)}}]),e}(),ja=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},Ha=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},Ba=ne.$,za=function(){function e(t){(0,F.Z)(this,e),this.hidden=!1,this._onChecked=new B.Q5,this.onChecked=this._onChecked.event,Object.assign(this,t)}return(0,j.Z)(e,[{key:"checked",get:function(){return!!this._checked},set:function(e){e!==this._checked&&(this._checked=e,this._onChecked.fire(e))}},{key:"dispose",value:function(){this._onChecked.dispose()}}]),e}(),Wa=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,[{key:"templateId",get:function(){return e.ID}},{key:"renderTemplate",value:function(e){var t=Object.create(null);t.toDisposeElement=[],t.toDisposeTemplate=[],t.entry=ne.append(e,Ba(".quick-input-list-entry"));var n=ne.append(t.entry,Ba("label.quick-input-list-label"));t.toDisposeTemplate.push(ne.addStandardDisposableListener(n,ne.EventType.CLICK,(function(e){t.checkbox.offsetParent||e.preventDefault()}))),t.checkbox=ne.append(n,Ba("input.quick-input-list-checkbox")),t.checkbox.type="checkbox",t.toDisposeTemplate.push(ne.addStandardDisposableListener(t.checkbox,ne.EventType.CHANGE,(function(e){t.element.checked=t.checkbox.checked})));var i=ne.append(n,Ba(".quick-input-list-rows")),r=ne.append(i,Ba(".quick-input-list-row")),o=ne.append(i,Ba(".quick-input-list-row"));t.label=new Ma.g(r,{supportHighlights:!0,supportDescriptionHighlights:!0,supportIcons:!0});var a=ne.append(r,Ba(".quick-input-list-entry-keybinding"));t.keybinding=new Fa(a,Ie.OS);var s=ne.append(o,Ba(".quick-input-list-label-meta"));return t.detail=new Ta.q(s,!0),t.separator=ne.append(t.entry,Ba(".quick-input-list-separator")),t.actionBar=new $r.o(t.entry),t.actionBar.domNode.classList.add("quick-input-list-entry-action-bar"),t.toDisposeTemplate.push(t.actionBar),t}},{key:"renderElement",value:function(e,t,n){var i=this;n.toDisposeElement=(0,Me.B9)(n.toDisposeElement),n.element=e,n.checkbox.checked=e.checked,n.toDisposeElement.push(e.onChecked((function(e){return n.checkbox.checked=e})));var r=e.labelHighlights,o=e.descriptionHighlights,a=e.detailHighlights,s=Object.create(null);s.matches=r||[],s.descriptionTitle=e.saneDescription,s.descriptionMatches=o||[],s.extraClasses=e.item.iconClasses,s.italic=e.item.italic,s.strikethrough=e.item.strikethrough,n.label.setLabel(e.saneLabel,e.saneDescription,s),n.keybinding.set(e.item.keybinding),n.detail.set(e.saneDetail,a),e.separator&&e.separator.label?(n.separator.textContent=e.separator.label,n.separator.style.display=""):n.separator.style.display="none",n.entry.classList.toggle("quick-input-list-separator-border",!!e.separator),n.actionBar.clear();var u=e.item.buttons;u&&u.length?(n.actionBar.push(u.map((function(t,n){var r=t.iconClass||(t.iconPath?Pa(t.iconPath):void 0);t.alwaysVisible&&(r=r?"".concat(r," always-visible"):"always-visible");var o=new qr.aU("id-".concat(n),"",r,!0,(function(){return Ha(i,void 0,void 0,te().mark((function n(){return te().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:e.fireButtonTriggered({button:t,item:e.item});case 1:case"end":return n.stop()}}),n)})))}));return o.tooltip=t.tooltip||"",o})),{icon:!0,label:!1}),n.entry.classList.add("has-actions")):n.entry.classList.remove("has-actions")}},{key:"disposeElement",value:function(e,t,n){n.toDisposeElement=(0,Me.B9)(n.toDisposeElement)}},{key:"disposeTemplate",value:function(e){e.toDisposeElement=(0,Me.B9)(e.toDisposeElement),e.toDisposeTemplate=(0,Me.B9)(e.toDisposeTemplate)}}]),e}();Wa.ID="listelement";var Va,Ya=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,[{key:"getHeight",value:function(e){return e.saneDetail?44:22}},{key:"getTemplateId",value:function(e){return Wa.ID}}]),e}();!function(e){e[e.First=1]="First",e[e.Second=2]="Second",e[e.Last=3]="Last",e[e.Next=4]="Next",e[e.Previous=5]="Previous",e[e.NextPage=6]="NextPage",e[e.PreviousPage=7]="PreviousPage"}(Va||(Va={}));var Ua=function(){function e(t,n,i){var r=this;(0,F.Z)(this,e),this.parent=t,this.inputElements=[],this.elements=[],this.elementsToIndexes=new Map,this.matchOnDescription=!1,this.matchOnDetail=!1,this.matchOnLabel=!0,this.matchOnMeta=!0,this.sortByLabel=!0,this._onChangedAllVisibleChecked=new B.Q5,this.onChangedAllVisibleChecked=this._onChangedAllVisibleChecked.event,this._onChangedCheckedCount=new B.Q5,this.onChangedCheckedCount=this._onChangedCheckedCount.event,this._onChangedVisibleCount=new B.Q5,this.onChangedVisibleCount=this._onChangedVisibleCount.event,this._onChangedCheckedElements=new B.Q5,this.onChangedCheckedElements=this._onChangedCheckedElements.event,this._onButtonTriggered=new B.Q5,this.onButtonTriggered=this._onButtonTriggered.event,this._onKeyDown=new B.Q5,this.onKeyDown=this._onKeyDown.event,this._onLeave=new B.Q5,this.onLeave=this._onLeave.event,this._fireCheckedEvents=!0,this.elementDisposables=[],this.disposables=[],this.id=n,this.container=ne.append(this.parent,Ba(".quick-input-list"));var o=new Ya,a=new Ka;this.list=i.createList("QuickInput",this.container,o,[new Wa],{identityProvider:{getId:function(e){return e.saneLabel}},setRowLineHeight:!1,multipleSelectionSupport:!1,horizontalScrolling:!1,accessibilityProvider:a}),this.list.getHTMLElement().id=n,this.disposables.push(this.list),this.disposables.push(this.list.onKeyDown((function(e){var t=new cn.y(e);switch(t.keyCode){case 10:r.toggleCheckbox();break;case 31:(Ie.dz?e.metaKey:e.ctrlKey)&&r.list.setFocus((0,wt.w6)(r.list.length));break;case 16:var n=r.list.getFocus();1===n.length&&0===n[0]&&r._onLeave.fire();break;case 18:var i=r.list.getFocus();1===i.length&&i[0]===r.list.length-1&&r._onLeave.fire()}r._onKeyDown.fire(t)}))),this.disposables.push(this.list.onMouseDown((function(e){2!==e.browserEvent.button&&e.browserEvent.preventDefault()}))),this.disposables.push(ne.addDisposableListener(this.container,ne.EventType.CLICK,(function(e){(e.x||e.y)&&r._onLeave.fire()}))),this.disposables.push(this.list.onMouseMiddleClick((function(e){r._onLeave.fire()}))),this.disposables.push(this.list.onContextMenu((function(e){"number"===typeof e.index&&(e.browserEvent.preventDefault(),r.list.setSelection([e.index]))}))),this.disposables.push(this._onChangedAllVisibleChecked,this._onChangedCheckedCount,this._onChangedVisibleCount,this._onChangedCheckedElements,this._onButtonTriggered,this._onLeave,this._onKeyDown)}return(0,j.Z)(e,[{key:"onDidChangeFocus",get:function(){return B.ju.map(this.list.onDidChangeFocus,(function(e){return e.elements.map((function(e){return e.item}))}))}},{key:"onDidChangeSelection",get:function(){return B.ju.map(this.list.onDidChangeSelection,(function(e){return{items:e.elements.map((function(e){return e.item})),event:e.browserEvent}}))}},{key:"getAllVisibleChecked",value:function(){return this.allVisibleChecked(this.elements,!1)}},{key:"allVisibleChecked",value:function(e){for(var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=0,i=e.length;n<i;n++){var r=e[n];if(!r.hidden){if(!r.checked)return!1;t=!0}}return t}},{key:"getCheckedCount",value:function(){for(var e=0,t=this.elements,n=0,i=t.length;n<i;n++)t[n].checked&&e++;return e}},{key:"getVisibleCount",value:function(){for(var e=0,t=this.elements,n=0,i=t.length;n<i;n++)t[n].hidden||e++;return e}},{key:"setAllVisibleChecked",value:function(e){try{this._fireCheckedEvents=!1,this.elements.forEach((function(t){t.hidden||(t.checked=e)}))}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}},{key:"setElements",value:function(e){var t,n,i=this;this.elementDisposables=(0,Me.B9)(this.elementDisposables);var r=function(e){return i.fireButtonTriggered(e)};this.inputElements=e,this.elements=e.reduce((function(t,n,i){var o,a,s;if("separator"!==n.type){var u=i&&e[i-1],l=n.label&&n.label.replace(/\r?\n/g," "),c=n.meta&&n.meta.replace(/\r?\n/g," "),d=n.description&&n.description.replace(/\r?\n/g," "),h=n.detail&&n.detail.replace(/\r?\n/g," "),f=n.ariaLabel||[l,d,h].map((function(e){return(0,ro.JL)(e)})).filter((function(e){return!!e})).join(", ");t.push(new za({index:i,item:n,saneLabel:l,saneMeta:c,saneAriaLabel:f,saneDescription:d,saneDetail:h,labelHighlights:null===(o=n.highlights)||void 0===o?void 0:o.label,descriptionHighlights:null===(a=n.highlights)||void 0===a?void 0:a.description,detailHighlights:null===(s=n.highlights)||void 0===s?void 0:s.detail,checked:!1,separator:u&&"separator"===u.type?u:void 0,fireButtonTriggered:r}))}return t}),[]),(t=this.elementDisposables).push.apply(t,(0,J.Z)(this.elements)),(n=this.elementDisposables).push.apply(n,(0,J.Z)(this.elements.map((function(e){return e.onChecked((function(){return i.fireCheckedEvents()}))})))),this.elementsToIndexes=this.elements.reduce((function(e,t,n){return e.set(t.item,n),e}),new Map),this.list.splice(0,this.list.length),this.list.splice(0,this.list.length,this.elements),this._onChangedVisibleCount.fire(this.elements.length)}},{key:"getFocusedElements",value:function(){return this.list.getFocusedElements().map((function(e){return e.item}))}},{key:"setFocusedElements",value:function(e){var t=this;if(this.list.setFocus(e.filter((function(e){return t.elementsToIndexes.has(e)})).map((function(e){return t.elementsToIndexes.get(e)}))),e.length>0){var n=this.list.getFocus()[0];"number"===typeof n&&this.list.reveal(n)}}},{key:"getActiveDescendant",value:function(){return this.list.getHTMLElement().getAttribute("aria-activedescendant")}},{key:"setSelectedElements",value:function(e){var t=this;this.list.setSelection(e.filter((function(e){return t.elementsToIndexes.has(e)})).map((function(e){return t.elementsToIndexes.get(e)})))}},{key:"getCheckedElements",value:function(){return this.elements.filter((function(e){return e.checked})).map((function(e){return e.item}))}},{key:"setCheckedElements",value:function(e){try{this._fireCheckedEvents=!1;var t,n=new Set,i=(0,X.Z)(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;n.add(r)}}catch(u){i.e(u)}finally{i.f()}var o,a=(0,X.Z)(this.elements);try{for(a.s();!(o=a.n()).done;){var s=o.value;s.checked=n.has(s.item)}}catch(u){a.e(u)}finally{a.f()}}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}},{key:"enabled",set:function(e){this.list.getHTMLElement().style.pointerEvents=e?"":"none"}},{key:"focus",value:function(e){if(this.list.length){switch(e===Va.Next&&this.list.getFocus()[0]===this.list.length-1&&(e=Va.First),e===Va.Previous&&0===this.list.getFocus()[0]&&(e=Va.Last),e===Va.Second&&this.list.length<2&&(e=Va.First),e){case Va.First:this.list.focusFirst();break;case Va.Second:this.list.focusNth(1);break;case Va.Last:this.list.focusLast();break;case Va.Next:this.list.focusNext();break;case Va.Previous:this.list.focusPrevious();break;case Va.NextPage:this.list.focusNextPage();break;case Va.PreviousPage:this.list.focusPreviousPage()}var t=this.list.getFocus()[0];"number"===typeof t&&this.list.reveal(t)}}},{key:"clearFocus",value:function(){this.list.setFocus([])}},{key:"domFocus",value:function(){this.list.domFocus()}},{key:"layout",value:function(e){this.list.getHTMLElement().style.maxHeight=e?"calc(".concat(44*Math.floor(e/44),"px)"):"",this.list.layout()}},{key:"filter",value:function(e){var t,n=this;if(!(this.sortByLabel||this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))return this.list.layout(),!1;(e=e.trim())&&(this.matchOnLabel||this.matchOnDescription||this.matchOnDetail)?this.elements.forEach((function(i){var r=n.matchOnLabel?(0,Oe.f6)((0,lo.Gt)(e,(0,lo.Ho)(i.saneLabel))):void 0,o=n.matchOnDescription?(0,Oe.f6)((0,lo.Gt)(e,(0,lo.Ho)(i.saneDescription||""))):void 0,a=n.matchOnDetail?(0,Oe.f6)((0,lo.Gt)(e,(0,lo.Ho)(i.saneDetail||""))):void 0,s=n.matchOnMeta?(0,Oe.f6)((0,lo.Gt)(e,(0,lo.Ho)(i.saneMeta||""))):void 0;if(r||o||a||s?(i.labelHighlights=r,i.descriptionHighlights=o,i.detailHighlights=a,i.hidden=!1):(i.labelHighlights=void 0,i.descriptionHighlights=void 0,i.detailHighlights=void 0,i.hidden=!i.item.alwaysShow),i.separator=void 0,!n.sortByLabel){var u=i.index&&n.inputElements[i.index-1];(t=u&&"separator"===u.type?u:t)&&!i.hidden&&(i.separator=t,t=void 0)}})):this.elements.forEach((function(e){e.labelHighlights=void 0,e.descriptionHighlights=void 0,e.detailHighlights=void 0,e.hidden=!1;var t=e.index&&n.inputElements[e.index-1];e.separator=t&&"separator"===t.type?t:void 0}));var i=this.elements.filter((function(e){return!e.hidden}));if(this.sortByLabel&&e){var r=e.toLowerCase();i.sort((function(e,t){return function(e,t,n){var i=e.labelHighlights||[],r=t.labelHighlights||[];if(i.length&&!r.length)return-1;if(!i.length&&r.length)return 1;if(0===i.length&&0===r.length)return 0;return Na(e.saneLabel,t.saneLabel,n)}(e,t,r)}))}return this.elementsToIndexes=i.reduce((function(e,t,n){return e.set(t.item,n),e}),new Map),this.list.splice(0,this.list.length,i),this.list.setFocus([]),this.list.layout(),this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedVisibleCount.fire(i.length),!0}},{key:"toggleCheckbox",value:function(){try{this._fireCheckedEvents=!1;var e,t=this.list.getFocusedElements(),n=this.allVisibleChecked(t),i=(0,X.Z)(t);try{for(i.s();!(e=i.n()).done;){e.value.checked=!n}}catch(r){i.e(r)}finally{i.f()}}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}},{key:"display",value:function(e){this.container.style.display=e?"":"none"}},{key:"isDisplayed",value:function(){return"none"!==this.container.style.display}},{key:"dispose",value:function(){this.elementDisposables=(0,Me.B9)(this.elementDisposables),this.disposables=(0,Me.B9)(this.disposables)}},{key:"fireCheckedEvents",value:function(){this._fireCheckedEvents&&(this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedCheckedCount.fire(this.getCheckedCount()),this._onChangedCheckedElements.fire(this.getCheckedElements()))}},{key:"fireButtonTriggered",value:function(e){this._onButtonTriggered.fire(e)}},{key:"style",value:function(e){this.list.style(e)}}]),e}();ja([Ia.H],Ua.prototype,"onDidChangeFocus",null),ja([Ia.H],Ua.prototype,"onDidChangeSelection",null);var Ka=function(){function e(){(0,F.Z)(this,e)}return(0,j.Z)(e,[{key:"getWidgetAriaLabel",value:function(){return(0,kn.N)("quickInput","Quick Input")}},{key:"getAriaLabel",value:function(e){return e.saneAriaLabel}},{key:"getWidgetRole",value:function(){return"listbox"}},{key:"getRole",value:function(){return"option"}}]),e}(),qa=n(68027),Ga=ne.$,$a=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e){var i;return(0,F.Z)(this,n),(i=t.call(this)).parent=e,i.onKeyDown=function(e){return ne.addDisposableListener(i.inputBox.inputElement,ne.EventType.KEY_DOWN,(function(t){e(new cn.y(t))}))},i.onMouseDown=function(e){return ne.addDisposableListener(i.inputBox.inputElement,ne.EventType.MOUSE_DOWN,(function(t){e(new uo.n(t))}))},i.onDidChange=function(e){return i.inputBox.onDidChange(e)},i.container=ne.append(i.parent,Ga(".quick-input-box")),i.inputBox=i._register(new qa.W(i.container,void 0)),i}return(0,j.Z)(n,[{key:"value",get:function(){return this.inputBox.value},set:function(e){this.inputBox.value=e}},{key:"select",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.inputBox.select(e)}},{key:"isSelectionAtEnd",value:function(){return this.inputBox.isSelectionAtEnd()}},{key:"placeholder",get:function(){return this.inputBox.inputElement.getAttribute("placeholder")||""},set:function(e){this.inputBox.setPlaceHolder(e)}},{key:"ariaLabel",get:function(){return this.inputBox.getAriaLabel()},set:function(e){this.inputBox.setAriaLabel(e)}},{key:"password",get:function(){return"password"===this.inputBox.inputElement.type},set:function(e){this.inputBox.inputElement.type=e?"password":"text"}},{key:"setAttribute",value:function(e,t){this.inputBox.inputElement.setAttribute(e,t)}},{key:"removeAttribute",value:function(e){this.inputBox.inputElement.removeAttribute(e)}},{key:"showDecoration",value:function(e){e===dn.Z.Ignore?this.inputBox.hideMessage():this.inputBox.showMessage({type:e===dn.Z.Info?1:e===dn.Z.Warning?2:3,content:""})}},{key:"stylesForType",value:function(e){return this.inputBox.stylesForType(e===dn.Z.Info?1:e===dn.Z.Warning?2:3)}},{key:"setFocus",value:function(){this.inputBox.focus()}},{key:"layout",value:function(){this.inputBox.layout()}},{key:"style",value:function(e){this.inputBox.style(e)}}]),n}(Me.JT),Qa=n(57502),Xa="done",Ja="active",es="infinite",ts="discrete",ns={progressBarBackground:rr.Il.fromHex("#0E70C0")},is=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r;return(0,F.Z)(this,n),(r=t.call(this)).options=i||Object.create(null),(0,mn.jB)(r.options,ns,!1),r.workedVal=0,r.progressBarBackground=r.options.progressBarBackground,r._register(r.showDelayedScheduler=new Ne.pY((function(){return(0,ne.show)(r.element)}),0)),r.create(e),r}return(0,j.Z)(n,[{key:"create",value:function(e){this.element=document.createElement("div"),this.element.classList.add("monaco-progress-container"),this.element.setAttribute("role","progressbar"),this.element.setAttribute("aria-valuemin","0"),e.appendChild(this.element),this.bit=document.createElement("div"),this.bit.classList.add("progress-bit"),this.element.appendChild(this.bit),this.applyStyles()}},{key:"off",value:function(){this.bit.style.width="inherit",this.bit.style.opacity="1",this.element.classList.remove(Ja,es,ts),this.workedVal=0,this.totalWork=void 0}},{key:"stop",value:function(){return this.doDone(!1)}},{key:"doDone",value:function(e){var t=this;return this.element.classList.add(Xa),this.element.classList.contains(es)?(this.bit.style.opacity="0",e?setTimeout((function(){return t.off()}),200):this.off()):(this.bit.style.width="inherit",e?setTimeout((function(){return t.off()}),200):this.off()),this}},{key:"infinite",value:function(){return this.bit.style.width="2%",this.bit.style.opacity="1",this.element.classList.remove(ts,Xa),this.element.classList.add(Ja,es),this}},{key:"getContainer",value:function(){return this.element}},{key:"style",value:function(e){this.progressBarBackground=e.progressBarBackground,this.applyStyles()}},{key:"applyStyles",value:function(){if(this.bit){var e=this.progressBarBackground?this.progressBarBackground.toString():"";this.bit.style.backgroundColor=e}}}]),n}(Me.JT),rs=n(25044),os=n(66404),as={buttonBackground:rr.Il.fromHex("#0E639C"),buttonHoverBackground:rr.Il.fromHex("#006BB3"),buttonForeground:rr.Il.white},ss=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r;return(0,F.Z)(this,n),(r=t.call(this))._onDidClick=r._register(new B.Q5),r.options=i||Object.create(null),(0,mn.jB)(r.options,as,!1),r.buttonForeground=r.options.buttonForeground,r.buttonBackground=r.options.buttonBackground,r.buttonHoverBackground=r.options.buttonHoverBackground,r.buttonSecondaryForeground=r.options.buttonSecondaryForeground,r.buttonSecondaryBackground=r.options.buttonSecondaryBackground,r.buttonSecondaryHoverBackground=r.options.buttonSecondaryHoverBackground,r.buttonBorder=r.options.buttonBorder,r._element=document.createElement("a"),r._element.classList.add("monaco-button"),r._element.tabIndex=0,r._element.setAttribute("role","button"),e.appendChild(r._element),r._register(rs.o.addTarget(r._element)),[ne.EventType.CLICK,rs.t.Tap].forEach((function(e){r._register((0,ne.addDisposableListener)(r._element,e,(function(e){r.enabled?r._onDidClick.fire(e):ne.EventHelper.stop(e)})))})),r._register((0,ne.addDisposableListener)(r._element,ne.EventType.KEY_DOWN,(function(e){var t=new cn.y(e),n=!1;r.enabled&&(t.equals(3)||t.equals(10))?(r._onDidClick.fire(e),n=!0):t.equals(9)&&(r._element.blur(),n=!0),n&&ne.EventHelper.stop(t,!0)}))),r._register((0,ne.addDisposableListener)(r._element,ne.EventType.MOUSE_OVER,(function(e){r._element.classList.contains("disabled")||r.setHoverBackground()}))),r._register((0,ne.addDisposableListener)(r._element,ne.EventType.MOUSE_OUT,(function(e){r.applyStyles()}))),r.focusTracker=r._register((0,ne.trackFocus)(r._element)),r._register(r.focusTracker.onDidFocus((function(){return r.setHoverBackground()}))),r._register(r.focusTracker.onDidBlur((function(){return r.applyStyles()}))),r.applyStyles(),r}return(0,j.Z)(n,[{key:"onDidClick",get:function(){return this._onDidClick.event}},{key:"setHoverBackground",value:function(){var e;(e=this.options.secondary?this.buttonSecondaryHoverBackground?this.buttonSecondaryHoverBackground.toString():null:this.buttonHoverBackground?this.buttonHoverBackground.toString():null)&&(this._element.style.backgroundColor=e)}},{key:"style",value:function(e){this.buttonForeground=e.buttonForeground,this.buttonBackground=e.buttonBackground,this.buttonHoverBackground=e.buttonHoverBackground,this.buttonSecondaryForeground=e.buttonSecondaryForeground,this.buttonSecondaryBackground=e.buttonSecondaryBackground,this.buttonSecondaryHoverBackground=e.buttonSecondaryHoverBackground,this.buttonBorder=e.buttonBorder,this.applyStyles()}},{key:"applyStyles",value:function(){if(this._element){var e,t;this.options.secondary?(t=this.buttonSecondaryForeground?this.buttonSecondaryForeground.toString():"",e=this.buttonSecondaryBackground?this.buttonSecondaryBackground.toString():""):(t=this.buttonForeground?this.buttonForeground.toString():"",e=this.buttonBackground?this.buttonBackground.toString():"");var n=this.buttonBorder?this.buttonBorder.toString():"";this._element.style.color=t,this._element.style.backgroundColor=e,this._element.style.borderWidth=n?"1px":"",this._element.style.borderStyle=n?"solid":"",this._element.style.borderColor=n}}},{key:"element",get:function(){return this._element}},{key:"label",set:function(e){this._element.classList.add("monaco-text-button"),this.options.supportIcons?ne.reset.apply(void 0,[this._element].concat((0,J.Z)((0,os.T)(e)))):this._element.textContent=e,"string"===typeof this.options.title?this._element.title=this.options.title:this.options.title&&(this._element.title=e)}},{key:"enabled",get:function(){return!this._element.classList.contains("disabled")},set:function(e){e?(this._element.classList.remove("disabled"),this._element.setAttribute("aria-disabled",String(!1)),this._element.tabIndex=0):(this._element.classList.add("disabled"),this._element.setAttribute("aria-disabled",String(!0)))}}]),n}(Me.JT),us=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},ls=ne.$,cs={iconClass:(0,ro.CM)("quick-input-back",ro.lA.arrowLeft).classNames,tooltip:(0,kn.N)("quickInput.back","Back"),handle:-1},ds=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e){var i;return(0,F.Z)(this,n),(i=t.call(this)).ui=e,i.visible=!1,i._enabled=!0,i._busy=!1,i._ignoreFocusOut=!1,i._buttons=[],i.noValidationMessage=n.noPromptMessage,i._severity=dn.Z.Ignore,i.buttonsUpdated=!1,i.onDidTriggerButtonEmitter=i._register(new B.Q5),i.onDidHideEmitter=i._register(new B.Q5),i.onDisposeEmitter=i._register(new B.Q5),i.visibleDisposables=i._register(new Me.SL),i.onDidHide=i.onDidHideEmitter.event,i}return(0,j.Z)(n,[{key:"title",get:function(){return this._title},set:function(e){this._title=e,this.update()}},{key:"description",get:function(){return this._description},set:function(e){this._description=e,this.update()}},{key:"step",get:function(){return this._steps},set:function(e){this._steps=e,this.update()}},{key:"totalSteps",get:function(){return this._totalSteps},set:function(e){this._totalSteps=e,this.update()}},{key:"enabled",get:function(){return this._enabled},set:function(e){this._enabled=e,this.update()}},{key:"contextKey",get:function(){return this._contextKey},set:function(e){this._contextKey=e,this.update()}},{key:"busy",get:function(){return this._busy},set:function(e){this._busy=e,this.update()}},{key:"ignoreFocusOut",get:function(){return this._ignoreFocusOut},set:function(e){this._ignoreFocusOut=e,this.update()}},{key:"buttons",get:function(){return this._buttons},set:function(e){this._buttons=e,this.buttonsUpdated=!0,this.update()}},{key:"validationMessage",get:function(){return this._validationMessage},set:function(e){this._validationMessage=e,this.update()}},{key:"severity",get:function(){return this._severity},set:function(e){this._severity=e,this.update()}},{key:"show",value:function(){var e=this;this.visible||(this.visibleDisposables.add(this.ui.onDidTriggerButton((function(t){-1!==e.buttons.indexOf(t)&&e.onDidTriggerButtonEmitter.fire(t)}))),this.ui.show(this),this.visible=!0,this.update())}},{key:"hide",value:function(){this.visible&&this.ui.hide()}},{key:"didHide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ea.Jq.Other;this.visible=!1,this.visibleDisposables.clear(),this.onDidHideEmitter.fire({reason:e})}},{key:"update",value:function(){var e=this;if(this.visible){var t=this.getTitle();t&&this.ui.title.textContent!==t?this.ui.title.textContent=t:t||" "===this.ui.title.innerHTML||(this.ui.title.innerText="\xa0;");var n=this.getDescription();if(this.ui.description1.textContent!==n&&(this.ui.description1.textContent=n),this.ui.description2.textContent!==n&&(this.ui.description2.textContent=n),this.busy&&!this.busyDelay&&(this.busyDelay=new Ne._F,this.busyDelay.setIfNotSet((function(){e.visible&&e.ui.progressBar.infinite()}),800)),!this.busy&&this.busyDelay&&(this.ui.progressBar.stop(),this.busyDelay.cancel(),this.busyDelay=void 0),this.buttonsUpdated){this.buttonsUpdated=!1,this.ui.leftActionBar.clear();var i=this.buttons.filter((function(e){return e===cs}));this.ui.leftActionBar.push(i.map((function(t,n){var i=new qr.aU("id-".concat(n),"",t.iconClass||Pa(t.iconPath),!0,(function(){return us(e,void 0,void 0,te().mark((function e(){return te().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.onDidTriggerButtonEmitter.fire(t);case 1:case"end":return e.stop()}}),e,this)})))}));return i.tooltip=t.tooltip||"",i})),{icon:!0,label:!1}),this.ui.rightActionBar.clear();var r=this.buttons.filter((function(e){return e!==cs}));this.ui.rightActionBar.push(r.map((function(t,n){var i=new qr.aU("id-".concat(n),"",t.iconClass||Pa(t.iconPath),!0,(function(){return us(e,void 0,void 0,te().mark((function e(){return te().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.onDidTriggerButtonEmitter.fire(t);case 1:case"end":return e.stop()}}),e,this)})))}));return i.tooltip=t.tooltip||"",i})),{icon:!0,label:!1})}this.ui.ignoreFocusOut=this.ignoreFocusOut,this.ui.setEnabled(this.enabled),this.ui.setContextKey(this.contextKey);var o=this.validationMessage||this.noValidationMessage;this._lastValidationMessage!==o&&(this._lastValidationMessage=o,ne.reset.apply(ne,[this.ui.message].concat((0,J.Z)((0,os.T)((0,Ue.YU)(o)))))),this._lastSeverity!==this.severity&&(this._lastSeverity=this.severity,this.showMessageDecoration(this.severity))}}},{key:"getTitle",value:function(){return this.title&&this.step?"".concat(this.title," (").concat(this.getSteps(),")"):this.title?this.title:this.step?this.getSteps():""}},{key:"getDescription",value:function(){return this.description||""}},{key:"getSteps",value:function(){return this.step&&this.totalSteps?(0,kn.N)("quickInput.steps","{0}/{1}",this.step,this.totalSteps):this.step?String(this.step):""}},{key:"showMessageDecoration",value:function(e){if(this.ui.inputBox.showDecoration(e),e!==dn.Z.Ignore){var t=this.ui.inputBox.stylesForType(e);this.ui.message.style.color=t.foreground?"".concat(t.foreground):"",this.ui.message.style.backgroundColor=t.background?"".concat(t.background):"",this.ui.message.style.border=t.border?"1px solid ".concat(t.border):"",this.ui.message.style.paddingBottom="4px"}else this.ui.message.style.color="",this.ui.message.style.backgroundColor="",this.ui.message.style.border="",this.ui.message.style.paddingBottom=""}},{key:"dispose",value:function(){this.hide(),this.onDisposeEmitter.fire(),(0,Ee.Z)((0,De.Z)(n.prototype),"dispose",this).call(this)}}]),n}(Me.JT);ds.noPromptMessage=(0,kn.N)("inputModeEntry","Press 'Enter' to confirm your input or 'Escape' to cancel");var hs=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(){var e;return(0,F.Z)(this,n),(e=t.apply(this,arguments))._value="",e.onDidChangeValueEmitter=e._register(new B.Q5),e.onDidAcceptEmitter=e._register(new B.Q5),e.onDidCustomEmitter=e._register(new B.Q5),e._items=[],e.itemsUpdated=!1,e._canSelectMany=!1,e._canAcceptInBackground=!1,e._matchOnDescription=!1,e._matchOnDetail=!1,e._matchOnLabel=!0,e._sortByLabel=!0,e._autoFocusOnList=!0,e._itemActivation=e.ui.isScreenReaderOptimized()?Ea.jG.NONE:Ea.jG.FIRST,e._activeItems=[],e.activeItemsUpdated=!1,e.activeItemsToConfirm=[],e.onDidChangeActiveEmitter=e._register(new B.Q5),e._selectedItems=[],e.selectedItemsUpdated=!1,e.selectedItemsToConfirm=[],e.onDidChangeSelectionEmitter=e._register(new B.Q5),e.onDidTriggerItemButtonEmitter=e._register(new B.Q5),e.valueSelectionUpdated=!0,e._ok="default",e._customButton=!1,e.filterValue=function(e){return e},e.onDidChangeValue=e.onDidChangeValueEmitter.event,e.onDidAccept=e.onDidAcceptEmitter.event,e.onDidChangeActive=e.onDidChangeActiveEmitter.event,e.onDidChangeSelection=e.onDidChangeSelectionEmitter.event,e.onDidTriggerItemButton=e.onDidTriggerItemButtonEmitter.event,e}return(0,j.Z)(n,[{key:"quickNavigate",get:function(){return this._quickNavigate},set:function(e){this._quickNavigate=e,this.update()}},{key:"value",get:function(){return this._value},set:function(e){this._value=e||"",this.update()}},{key:"ariaLabel",get:function(){return this._ariaLabel},set:function(e){this._ariaLabel=e,this.update()}},{key:"placeholder",get:function(){return this._placeholder},set:function(e){this._placeholder=e,this.update()}},{key:"items",get:function(){return this._items},set:function(e){this._items=e,this.itemsUpdated=!0,this.update()}},{key:"canSelectMany",get:function(){return this._canSelectMany},set:function(e){this._canSelectMany=e,this.update()}},{key:"canAcceptInBackground",get:function(){return this._canAcceptInBackground},set:function(e){this._canAcceptInBackground=e}},{key:"matchOnDescription",get:function(){return this._matchOnDescription},set:function(e){this._matchOnDescription=e,this.update()}},{key:"matchOnDetail",get:function(){return this._matchOnDetail},set:function(e){this._matchOnDetail=e,this.update()}},{key:"matchOnLabel",get:function(){return this._matchOnLabel},set:function(e){this._matchOnLabel=e,this.update()}},{key:"sortByLabel",get:function(){return this._sortByLabel},set:function(e){this._sortByLabel=e,this.update()}},{key:"autoFocusOnList",get:function(){return this._autoFocusOnList},set:function(e){this._autoFocusOnList=e,this.update()}},{key:"itemActivation",get:function(){return this._itemActivation},set:function(e){this._itemActivation=e}},{key:"activeItems",get:function(){return this._activeItems},set:function(e){this._activeItems=e,this.activeItemsUpdated=!0,this.update()}},{key:"selectedItems",get:function(){return this._selectedItems},set:function(e){this._selectedItems=e,this.selectedItemsUpdated=!0,this.update()}},{key:"keyMods",get:function(){return this._quickNavigate?Ea.X5:this.ui.keyMods}},{key:"valueSelection",set:function(e){this._valueSelection=e,this.valueSelectionUpdated=!0,this.update()}},{key:"customButton",get:function(){return this._customButton},set:function(e){this._customButton=e,this.update()}},{key:"customLabel",get:function(){return this._customButtonLabel},set:function(e){this._customButtonLabel=e,this.update()}},{key:"customHover",get:function(){return this._customButtonHover},set:function(e){this._customButtonHover=e,this.update()}},{key:"ok",get:function(){return this._ok},set:function(e){this._ok=e,this.update()}},{key:"hideInput",get:function(){return!!this._hideInput},set:function(e){this._hideInput=e,this.update()}},{key:"trySelectFirst",value:function(){this.autoFocusOnList&&(this.canSelectMany||this.ui.list.focus(Va.First))}},{key:"show",value:function(){var e=this;this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange((function(t){t!==e.value&&(e._value=t,e.ui.list.filter(e.filterValue(e.ui.inputBox.value))&&e.trySelectFirst(),e.onDidChangeValueEmitter.fire(t))}))),this.visibleDisposables.add(this.ui.inputBox.onMouseDown((function(t){e.autoFocusOnList||e.ui.list.clearFocus()}))),this.visibleDisposables.add((this._hideInput?this.ui.list:this.ui.inputBox).onKeyDown((function(t){switch(t.keyCode){case 18:e.ui.list.focus(Va.Next),e.canSelectMany&&e.ui.list.domFocus(),ne.EventHelper.stop(t,!0);break;case 16:e.ui.list.getFocusedElements().length?e.ui.list.focus(Va.Previous):e.ui.list.focus(Va.Last),e.canSelectMany&&e.ui.list.domFocus(),ne.EventHelper.stop(t,!0);break;case 12:e.ui.list.focus(Va.NextPage),e.canSelectMany&&e.ui.list.domFocus(),ne.EventHelper.stop(t,!0);break;case 11:e.ui.list.focus(Va.PreviousPage),e.canSelectMany&&e.ui.list.domFocus(),ne.EventHelper.stop(t,!0);break;case 17:if(!e._canAcceptInBackground)return;if(!e.ui.inputBox.isSelectionAtEnd())return;e.activeItems[0]&&(e._selectedItems=[e.activeItems[0]],e.onDidChangeSelectionEmitter.fire(e.selectedItems),e.onDidAcceptEmitter.fire({inBackground:!0}));break;case 14:!t.ctrlKey&&!t.metaKey||t.shiftKey||t.altKey||(e.ui.list.focus(Va.First),ne.EventHelper.stop(t,!0));break;case 13:!t.ctrlKey&&!t.metaKey||t.shiftKey||t.altKey||(e.ui.list.focus(Va.Last),ne.EventHelper.stop(t,!0))}}))),this.visibleDisposables.add(this.ui.onDidAccept((function(){!e.canSelectMany&&e.activeItems[0]&&(e._selectedItems=[e.activeItems[0]],e.onDidChangeSelectionEmitter.fire(e.selectedItems)),e.onDidAcceptEmitter.fire({inBackground:!1})}))),this.visibleDisposables.add(this.ui.onDidCustom((function(){e.onDidCustomEmitter.fire()}))),this.visibleDisposables.add(this.ui.list.onDidChangeFocus((function(t){e.activeItemsUpdated||e.activeItemsToConfirm!==e._activeItems&&(0,wt.fS)(t,e._activeItems,(function(e,t){return e===t}))||(e._activeItems=t,e.onDidChangeActiveEmitter.fire(t))}))),this.visibleDisposables.add(this.ui.list.onDidChangeSelection((function(t){var n=t.items,i=t.event;e.canSelectMany?n.length&&e.ui.list.setSelectedElements([]):e.selectedItemsToConfirm!==e._selectedItems&&(0,wt.fS)(n,e._selectedItems,(function(e,t){return e===t}))||(e._selectedItems=n,e.onDidChangeSelectionEmitter.fire(n),n.length&&e.onDidAcceptEmitter.fire({inBackground:i instanceof MouseEvent&&1===i.button}))}))),this.visibleDisposables.add(this.ui.list.onChangedCheckedElements((function(t){e.canSelectMany&&(e.selectedItemsToConfirm!==e._selectedItems&&(0,wt.fS)(t,e._selectedItems,(function(e,t){return e===t}))||(e._selectedItems=t,e.onDidChangeSelectionEmitter.fire(t)))}))),this.visibleDisposables.add(this.ui.list.onButtonTriggered((function(t){return e.onDidTriggerItemButtonEmitter.fire(t)}))),this.visibleDisposables.add(this.registerQuickNavigation()),this.valueSelectionUpdated=!0),(0,Ee.Z)((0,De.Z)(n.prototype),"show",this).call(this)}},{key:"registerQuickNavigation",value:function(){var e=this;return ne.addDisposableListener(this.ui.container,ne.EventType.KEY_UP,(function(t){if(!e.canSelectMany&&e._quickNavigate){var n=new cn.y(t),i=n.keyCode;e._quickNavigate.keybindings.some((function(e){var t=e.getParts(),r=(0,at.Z)(t,2),o=r[0];return!r[1]&&(o.shiftKey&&4===i?!(n.ctrlKey||n.altKey||n.metaKey):!(!o.altKey||6!==i)||(!(!o.ctrlKey||5!==i)||!(!o.metaKey||57!==i)))}))&&(e.activeItems[0]&&(e._selectedItems=[e.activeItems[0]],e.onDidChangeSelectionEmitter.fire(e.selectedItems),e.onDidAcceptEmitter.fire({inBackground:!1})),e._quickNavigate=void 0)}}))}},{key:"update",value:function(){if(this.visible){var e=!!this._hideInput&&this._items.length>0;this.ui.container.classList.toggle("hidden-input",e&&!this.description);var t={title:!!this.title||!!this.step||!!this.buttons.length,description:!!this.description,checkAll:this.canSelectMany&&!this._hideCheckAll,checkBox:this.canSelectMany,inputBox:!e,progressBar:!e,visibleCount:!0,count:this.canSelectMany,ok:"default"===this.ok?this.canSelectMany:this.ok,list:!0,message:!!this.validationMessage,customButton:this.customButton};this.ui.setVisibilities(t),(0,Ee.Z)((0,De.Z)(n.prototype),"update",this).call(this),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||"");var i=this.ariaLabel||this.placeholder||n.DEFAULT_ARIA_LABEL;if(this.ui.inputBox.ariaLabel!==i&&(this.ui.inputBox.ariaLabel=i),this.ui.list.matchOnDescription=this.matchOnDescription,this.ui.list.matchOnDetail=this.matchOnDetail,this.ui.list.matchOnLabel=this.matchOnLabel,this.ui.list.sortByLabel=this.sortByLabel,this.itemsUpdated)switch(this.itemsUpdated=!1,this.ui.list.setElements(this.items),this.ui.list.filter(this.filterValue(this.ui.inputBox.value)),this.ui.checkAll.checked=this.ui.list.getAllVisibleChecked(),this.ui.visibleCount.setCount(this.ui.list.getVisibleCount()),this.ui.count.setCount(this.ui.list.getCheckedCount()),this._itemActivation){case Ea.jG.NONE:this._itemActivation=Ea.jG.FIRST;break;case Ea.jG.SECOND:this.ui.list.focus(Va.Second),this._itemActivation=Ea.jG.FIRST;break;case Ea.jG.LAST:this.ui.list.focus(Va.Last),this._itemActivation=Ea.jG.FIRST;break;default:this.trySelectFirst()}this.ui.container.classList.contains("show-checkboxes")!==!!this.canSelectMany&&(this.canSelectMany?this.ui.list.clearFocus():this.trySelectFirst()),this.activeItemsUpdated&&(this.activeItemsUpdated=!1,this.activeItemsToConfirm=this._activeItems,this.ui.list.setFocusedElements(this.activeItems),this.activeItemsToConfirm===this._activeItems&&(this.activeItemsToConfirm=null)),this.selectedItemsUpdated&&(this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=this._selectedItems,this.canSelectMany?this.ui.list.setCheckedElements(this.selectedItems):this.ui.list.setSelectedElements(this.selectedItems),this.selectedItemsToConfirm===this._selectedItems&&(this.selectedItemsToConfirm=null)),this.ui.customButton.label=this.customLabel||"",this.ui.customButton.element.title=this.customHover||"",this.ui.setComboboxAccessibility(!0),t.inputBox||(this.ui.list.domFocus(),this.canSelectMany&&this.ui.list.focus(Va.First))}}}]),n}(ds);hs.DEFAULT_ARIA_LABEL=(0,kn.N)("quickInputBox.ariaLabel","Type to narrow down results.");var fs=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e){var i;return(0,F.Z)(this,n),(i=t.call(this)).options=e,i.comboboxAccessibility=!1,i.enabled=!0,i.onDidAcceptEmitter=i._register(new B.Q5),i.onDidCustomEmitter=i._register(new B.Q5),i.onDidTriggerButtonEmitter=i._register(new B.Q5),i.keyMods={ctrlCmd:!1,alt:!1},i.controller=null,i.onShowEmitter=i._register(new B.Q5),i.onShow=i.onShowEmitter.event,i.onHideEmitter=i._register(new B.Q5),i.onHide=i.onHideEmitter.event,i.idPrefix=e.idPrefix,i.parentElement=e.container,i.styles=e.styles,i.registerKeyModsListeners(),i}return(0,j.Z)(n,[{key:"registerKeyModsListeners",value:function(){var e=this,t=function(t){e.keyMods.ctrlCmd=t.ctrlKey||t.metaKey,e.keyMods.alt=t.altKey};this._register(ne.addDisposableListener(window,ne.EventType.KEY_DOWN,t,!0)),this._register(ne.addDisposableListener(window,ne.EventType.KEY_UP,t,!0)),this._register(ne.addDisposableListener(window,ne.EventType.MOUSE_DOWN,t,!0))}},{key:"getUI",value:function(){var e=this;if(this.ui)return this.ui;var t=ne.append(this.parentElement,ls(".quick-input-widget.show-file-icons"));t.tabIndex=-1,t.style.display="none";var n=ne.createStyleSheet(t),i=ne.append(t,ls(".quick-input-titlebar")),r=this._register(new $r.o(i));r.domNode.classList.add("quick-input-left-action-bar");var o=ne.append(i,ls(".quick-input-title")),a=this._register(new $r.o(i));a.domNode.classList.add("quick-input-right-action-bar");var s=ne.append(t,ls(".quick-input-description")),u=ne.append(t,ls(".quick-input-header")),l=ne.append(u,ls("input.quick-input-check-all"));l.type="checkbox",this._register(ne.addStandardDisposableListener(l,ne.EventType.CHANGE,(function(e){var t=l.checked;k.setAllVisibleChecked(t)}))),this._register(ne.addDisposableListener(l,ne.EventType.CLICK,(function(e){(e.x||e.y)&&f.setFocus()})));var c=ne.append(u,ls(".quick-input-description")),d=ne.append(u,ls(".quick-input-and-message")),h=ne.append(d,ls(".quick-input-filter")),f=this._register(new $a(h));f.setAttribute("aria-describedby","".concat(this.idPrefix,"message"));var p=ne.append(h,ls(".quick-input-visible-count"));p.setAttribute("aria-live","polite"),p.setAttribute("aria-atomic","true");var g=new Qa.Z(p,{countFormat:(0,kn.N)({key:"quickInput.visibleCount",comment:["This tells the user how many items are shown in a list of items to select from. The items can be anything. Currently not visible, but read by screen readers."]},"{0} Results")}),v=ne.append(h,ls(".quick-input-count"));v.setAttribute("aria-live","polite");var m=new Qa.Z(v,{countFormat:(0,kn.N)({key:"quickInput.countSelected",comment:["This tells the user how many items are selected in a list of items to select from. The items can be anything."]},"{0} Selected")}),_=ne.append(u,ls(".quick-input-action")),y=new ss(_);y.label=(0,kn.N)("ok","OK"),this._register(y.onDidClick((function(t){e.onDidAcceptEmitter.fire()})));var b=ne.append(u,ls(".quick-input-action")),w=new ss(b);w.label=(0,kn.N)("custom","Custom"),this._register(w.onDidClick((function(t){e.onDidCustomEmitter.fire()})));var C=ne.append(d,ls("#".concat(this.idPrefix,"message.quick-input-message"))),k=this._register(new Ua(t,this.idPrefix+"list",this.options));this._register(k.onChangedAllVisibleChecked((function(e){l.checked=e}))),this._register(k.onChangedVisibleCount((function(e){g.setCount(e)}))),this._register(k.onChangedCheckedCount((function(e){m.setCount(e)}))),this._register(k.onLeave((function(){setTimeout((function(){f.setFocus(),e.controller instanceof hs&&e.controller.canSelectMany&&k.clearFocus()}),0)}))),this._register(k.onDidChangeFocus((function(){e.comboboxAccessibility&&e.getUI().inputBox.setAttribute("aria-activedescendant",e.getUI().list.getActiveDescendant()||"")})));var S=new is(t);S.getContainer().classList.add("quick-input-progress");var x=ne.trackFocus(t);return this._register(x),this._register(ne.addDisposableListener(t,ne.EventType.FOCUS,(function(t){e.previousFocusElement=t.relatedTarget instanceof HTMLElement?t.relatedTarget:void 0}),!0)),this._register(x.onDidBlur((function(){e.getUI().ignoreFocusOut||e.options.ignoreFocusOut()||e.hide(Ea.Jq.Blur),e.previousFocusElement=void 0}))),this._register(ne.addDisposableListener(t,ne.EventType.FOCUS,(function(e){f.setFocus()}))),this._register(ne.addDisposableListener(t,ne.EventType.KEY_DOWN,(function(n){var i=new cn.y(n);switch(i.keyCode){case 3:ne.EventHelper.stop(n,!0),e.onDidAcceptEmitter.fire();break;case 9:ne.EventHelper.stop(n,!0),e.hide(Ea.Jq.Gesture);break;case 2:if(!i.altKey&&!i.ctrlKey&&!i.metaKey){var r=[".action-label.codicon"];t.classList.contains("show-checkboxes")?r.push("input"):r.push("input[type=text]"),e.getUI().list.isDisplayed()&&r.push(".monaco-list");var o=t.querySelectorAll(r.join(", "));i.shiftKey&&i.target===o[0]?(ne.EventHelper.stop(n,!0),o[o.length-1].focus()):i.shiftKey||i.target!==o[o.length-1]||(ne.EventHelper.stop(n,!0),o[0].focus())}}}))),this.ui={container:t,styleSheet:n,leftActionBar:r,titleBar:i,title:o,description1:s,description2:c,rightActionBar:a,checkAll:l,filterContainer:h,inputBox:f,visibleCountContainer:p,visibleCount:g,countContainer:v,count:m,okContainer:_,ok:y,message:C,customButtonContainer:b,customButton:w,list:k,progressBar:S,onDidAccept:this.onDidAcceptEmitter.event,onDidCustom:this.onDidCustomEmitter.event,onDidTriggerButton:this.onDidTriggerButtonEmitter.event,ignoreFocusOut:!1,keyMods:this.keyMods,isScreenReaderOptimized:function(){return e.options.isScreenReaderOptimized()},show:function(t){return e.show(t)},hide:function(){return e.hide()},setVisibilities:function(t){return e.setVisibilities(t)},setComboboxAccessibility:function(t){return e.setComboboxAccessibility(t)},setEnabled:function(t){return e.setEnabled(t)},setContextKey:function(t){return e.options.setContextKey(t)}},this.updateStyles(),this.ui}},{key:"pick",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:H.T.None;return new Promise((function(r,o){var a=function(e){a=r,n.onKeyMods&&n.onKeyMods(u.keyMods),r(e)};if(i.isCancellationRequested)a(void 0);else{var s,u=t.createQuickPick(),l=[u,u.onDidAccept((function(){if(u.canSelectMany)a(u.selectedItems.slice()),u.hide();else{var e=u.activeItems[0];e&&(a(e),u.hide())}})),u.onDidChangeActive((function(e){var t=e[0];t&&n.onDidFocus&&n.onDidFocus(t)})),u.onDidChangeSelection((function(e){if(!u.canSelectMany){var t=e[0];t&&(a(t),u.hide())}})),u.onDidTriggerItemButton((function(e){return n.onDidTriggerItemButton&&n.onDidTriggerItemButton(Object.assign(Object.assign({},e),{removeItem:function(){var t=u.items.indexOf(e.item);if(-1!==t){var n=u.items.slice(),i=n.splice(t,1),r=u.activeItems.filter((function(e){return e!==i[0]}));u.items=n,r&&(u.activeItems=r)}}}))})),u.onDidChangeValue((function(e){!s||e||1===u.activeItems.length&&u.activeItems[0]===s||(u.activeItems=[s])})),i.onCancellationRequested((function(){u.hide()})),u.onDidHide((function(){(0,Me.B9)(l),a(void 0)}))];u.title=n.title,u.canSelectMany=!!n.canPickMany,u.placeholder=n.placeHolder,u.ignoreFocusOut=!!n.ignoreFocusLost,u.matchOnDescription=!!n.matchOnDescription,u.matchOnDetail=!!n.matchOnDetail,u.matchOnLabel=void 0===n.matchOnLabel||n.matchOnLabel,u.autoFocusOnList=void 0===n.autoFocusOnList||n.autoFocusOnList,u.quickNavigate=n.quickNavigate,u.contextKey=n.contextKey,u.busy=!0,Promise.all([e,n.activeItem]).then((function(e){var t=(0,at.Z)(e,2),n=t[0],i=t[1];s=i,u.busy=!1,u.items=n,u.canSelectMany&&(u.selectedItems=n.filter((function(e){return"separator"!==e.type&&e.picked}))),s&&(u.activeItems=[s])})),u.show(),Promise.resolve(e).then(void 0,(function(e){o(e),u.hide()}))}}))}},{key:"createQuickPick",value:function(){var e=this.getUI();return new hs(e)}},{key:"show",value:function(e){var t=this.getUI();this.onShowEmitter.fire();var n=this.controller;this.controller=e,n&&n.didHide(),this.setEnabled(!0),t.leftActionBar.clear(),t.title.textContent="",t.description1.textContent="",t.description2.textContent="",t.rightActionBar.clear(),t.checkAll.checked=!1,t.inputBox.placeholder="",t.inputBox.password=!1,t.inputBox.showDecoration(dn.Z.Ignore),t.visibleCount.setCount(0),t.count.setCount(0),ne.reset(t.message),t.progressBar.stop(),t.list.setElements([]),t.list.matchOnDescription=!1,t.list.matchOnDetail=!1,t.list.matchOnLabel=!0,t.list.sortByLabel=!0,t.ignoreFocusOut=!1,this.setComboboxAccessibility(!1),t.inputBox.ariaLabel="";var i=this.options.backKeybindingLabel();cs.tooltip=i?(0,kn.N)("quickInput.backWithKeybinding","Back ({0})",i):(0,kn.N)("quickInput.back","Back"),t.container.style.display="",this.updateLayout(),t.inputBox.setFocus()}},{key:"setVisibilities",value:function(e){var t=this.getUI();t.title.style.display=e.title?"":"none",t.description1.style.display=e.description&&(e.inputBox||e.checkAll)?"":"none",t.description2.style.display=!e.description||e.inputBox||e.checkAll?"none":"",t.checkAll.style.display=e.checkAll?"":"none",t.filterContainer.style.display=e.inputBox?"":"none",t.visibleCountContainer.style.display=e.visibleCount?"":"none",t.countContainer.style.display=e.count?"":"none",t.okContainer.style.display=e.ok?"":"none",t.customButtonContainer.style.display=e.customButton?"":"none",t.message.style.display=e.message?"":"none",t.progressBar.getContainer().style.display=e.progressBar?"":"none",t.list.display(!!e.list),t.container.classList[e.checkBox?"add":"remove"]("show-checkboxes"),this.updateLayout()}},{key:"setComboboxAccessibility",value:function(e){if(e!==this.comboboxAccessibility){var t=this.getUI();this.comboboxAccessibility=e,this.comboboxAccessibility?(t.inputBox.setAttribute("role","combobox"),t.inputBox.setAttribute("aria-haspopup","true"),t.inputBox.setAttribute("aria-autocomplete","list"),t.inputBox.setAttribute("aria-activedescendant",t.list.getActiveDescendant()||"")):(t.inputBox.removeAttribute("role"),t.inputBox.removeAttribute("aria-haspopup"),t.inputBox.removeAttribute("aria-autocomplete"),t.inputBox.removeAttribute("aria-activedescendant"))}}},{key:"setEnabled",value:function(e){if(e!==this.enabled){this.enabled=e;var t,n=(0,X.Z)(this.getUI().leftActionBar.viewItems);try{for(n.s();!(t=n.n()).done;){t.value.getAction().enabled=e}}catch(o){n.e(o)}finally{n.f()}var i,r=(0,X.Z)(this.getUI().rightActionBar.viewItems);try{for(r.s();!(i=r.n()).done;){i.value.getAction().enabled=e}}catch(o){r.e(o)}finally{r.f()}this.getUI().checkAll.disabled=!e,this.getUI().ok.enabled=e,this.getUI().list.enabled=e}}},{key:"hide",value:function(e){var t,n=this.controller;if(n){var i=!(null===(t=this.ui)||void 0===t?void 0:t.container.contains(document.activeElement));this.controller=null,this.onHideEmitter.fire(),this.getUI().container.style.display="none",i||(this.previousFocusElement&&this.previousFocusElement.offsetParent?(this.previousFocusElement.focus(),this.previousFocusElement=void 0):this.options.returnFocus()),n.didHide(e)}}},{key:"layout",value:function(e,t){this.dimension=e,this.titleBarOffset=t,this.updateLayout()}},{key:"updateLayout",value:function(){if(this.ui){this.ui.container.style.top="".concat(this.titleBarOffset,"px");var e=this.ui.container.style,t=Math.min(.62*this.dimension.width,n.MAX_WIDTH);e.width=t+"px",e.marginLeft="-"+t/2+"px",this.ui.inputBox.layout(),this.ui.list.layout(this.dimension&&.4*this.dimension.height)}}},{key:"applyStyles",value:function(e){this.styles=e,this.updateStyles()}},{key:"updateStyles",value:function(){if(this.ui){var e=this.styles.widget,t=e.quickInputTitleBackground,n=e.quickInputBackground,i=e.quickInputForeground,r=e.contrastBorder,o=e.widgetShadow;this.ui.titleBar.style.backgroundColor=t?t.toString():"",this.ui.container.style.backgroundColor=n?n.toString():"",this.ui.container.style.color=i?i.toString():"",this.ui.container.style.border=r?"1px solid ".concat(r):"",this.ui.container.style.boxShadow=o?"0 0 8px 2px ".concat(o):"",this.ui.inputBox.style(this.styles.inputBox),this.ui.count.style(this.styles.countBadge),this.ui.ok.style(this.styles.button),this.ui.customButton.style(this.styles.button),this.ui.progressBar.style(this.styles.progressBar),this.ui.list.style(this.styles.list);var a=[];this.styles.list.pickerGroupBorder&&a.push(".quick-input-list .quick-input-list-entry { border-top-color: ".concat(this.styles.list.pickerGroupBorder,"; }")),this.styles.list.pickerGroupForeground&&a.push(".quick-input-list .quick-input-list-separator { color: ".concat(this.styles.list.pickerGroupForeground,"; }")),(this.styles.keybindingLabel.keybindingLabelBackground||this.styles.keybindingLabel.keybindingLabelBorder||this.styles.keybindingLabel.keybindingLabelBottomBorder||this.styles.keybindingLabel.keybindingLabelShadow||this.styles.keybindingLabel.keybindingLabelForeground)&&(a.push(".quick-input-list .monaco-keybinding > .monaco-keybinding-key {"),this.styles.keybindingLabel.keybindingLabelBackground&&a.push("background-color: ".concat(this.styles.keybindingLabel.keybindingLabelBackground,";")),this.styles.keybindingLabel.keybindingLabelBorder&&a.push("border-color: ".concat(this.styles.keybindingLabel.keybindingLabelBorder,";")),this.styles.keybindingLabel.keybindingLabelBottomBorder&&a.push("border-bottom-color: ".concat(this.styles.keybindingLabel.keybindingLabelBottomBorder,";")),this.styles.keybindingLabel.keybindingLabelShadow&&a.push("box-shadow: inset 0 -1px 0 ".concat(this.styles.keybindingLabel.keybindingLabelShadow,";")),this.styles.keybindingLabel.keybindingLabelForeground&&a.push("color: ".concat(this.styles.keybindingLabel.keybindingLabelForeground,";")),a.push("}"));var s=a.join("\n");s!==this.ui.styleSheet.textContent&&(this.ui.styleSheet.textContent=s)}}}]),n}(Me.JT);fs.MAX_WIDTH=600;var ps=n(62137),gs=n(73921),vs=n(60106),ms=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},_s=function(e,t){return function(n,i){t(n,i,e)}},ys=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r;return(0,F.Z)(this,n),(r=t.call(this)).quickInputService=e,r.instantiationService=i,r.registry=Xi.B.as(gs.IP.Quickaccess),r.mapProviderToDescriptor=new Map,r.lastAcceptedPickerValues=new Map,r.visibleQuickAccess=void 0,r}return(0,j.Z)(n,[{key:"show",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0,i=this.getOrInstantiateProvider(t),r=(0,at.Z)(i,2),o=r[0],a=r[1],s=this.visibleQuickAccess,u=null===s||void 0===s?void 0:s.descriptor;if(s&&a&&u===a)return t===a.prefix||(null===n||void 0===n?void 0:n.preserveValue)||(s.picker.value=t),void this.adjustValueSelection(s.picker,a,n);if(a&&!(null===n||void 0===n?void 0:n.preserveValue)){var l=void 0;if(s&&u&&u!==a){var c=s.value.substr(u.prefix.length);c&&(l="".concat(a.prefix).concat(c))}if(!l){var d=null===o||void 0===o?void 0:o.defaultFilterValue;d===gs.Ry.LAST?l=this.lastAcceptedPickerValues.get(a):"string"===typeof d&&(l="".concat(a.prefix).concat(d))}"string"===typeof l&&(t=l)}var h=new Me.SL,f=h.add(this.quickInputService.createQuickPick());f.value=t,this.adjustValueSelection(f,a,n),f.placeholder=null===a||void 0===a?void 0:a.placeholder,f.quickNavigate=null===n||void 0===n?void 0:n.quickNavigateConfiguration,f.hideInput=!!f.quickNavigate&&!s,("number"===typeof(null===n||void 0===n?void 0:n.itemActivation)||(null===n||void 0===n?void 0:n.quickNavigateConfiguration))&&(f.itemActivation=null!==(e=null===n||void 0===n?void 0:n.itemActivation)&&void 0!==e?e:ps.jG.SECOND),f.contextKey=null===a||void 0===a?void 0:a.contextKey,f.filterValue=function(e){return e.substring(a?a.prefix.length:0)},(null===a||void 0===a?void 0:a.placeholder)&&(f.ariaLabel=null===a||void 0===a?void 0:a.placeholder),h.add(this.registerPickerListeners(f,o,a,t));var p=h.add(new H.A);o&&h.add(o.provide(f,p.token)),(0,vs.I)(f.onDidHide)((function(){0===f.selectedItems.length&&p.cancel(),h.dispose()})),f.show()}},{key:"adjustValueSelection",value:function(e,t,n){var i,r;r=(null===n||void 0===n?void 0:n.preserveValue)?[e.value.length,e.value.length]:[null!==(i=null===t||void 0===t?void 0:t.prefix.length)&&void 0!==i?i:0,e.value.length],e.valueSelection=r}},{key:"registerPickerListeners",value:function(e,t,n,i){var r=this,o=new Me.SL,a=this.visibleQuickAccess={picker:e,descriptor:n,value:i};return o.add((0,Me.OF)((function(){a===r.visibleQuickAccess&&(r.visibleQuickAccess=void 0)}))),o.add(e.onDidChangeValue((function(e){var n=r.getOrInstantiateProvider(e);(0,at.Z)(n,1)[0]!==t?r.show(e,{preserveValue:!0}):a.value=e}))),n&&o.add(e.onDidAccept((function(){r.lastAcceptedPickerValues.set(n,e.value)}))),o}},{key:"getOrInstantiateProvider",value:function(e){var t=this.registry.getQuickAccessProvider(e);if(!t)return[void 0,void 0];var n=this.mapProviderToDescriptor.get(t);return n||(n=this.instantiationService.createInstance(t.ctor),this.mapProviderToDescriptor.set(t,n)),[n,t]}}]),n}(Me.JT);ys=ms([_s(0,ps.eJ),_s(1,di.TG)],ys);var bs=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},ws=function(e,t){return function(n,i){t(n,i,e)}},Cs=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r,o,a){var s;return(0,F.Z)(this,n),(s=t.call(this,r)).instantiationService=e,s.contextKeyService=i,s.accessibilityService=o,s.layoutService=a,s.contexts=new Map,s}return(0,j.Z)(n,[{key:"controller",get:function(){return this._controller||(this._controller=this._register(this.createController())),this._controller}},{key:"quickAccess",get:function(){return this._quickAccess||(this._quickAccess=this._register(this.instantiationService.createInstance(ys))),this._quickAccess}},{key:"createController",value:function(){var e,t,n=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.layoutService,r=arguments.length>1?arguments[1]:void 0,o={idPrefix:"quickInput_",container:i.container,ignoreFocusOut:function(){return!1},isScreenReaderOptimized:function(){return n.accessibilityService.isScreenReaderOptimized()},backKeybindingLabel:function(){},setContextKey:function(e){return n.setContextKey(e)},returnFocus:function(){return i.focus()},createList:function(e,t,i,r,o){return n.instantiationService.createInstance(zo.ev,e,t,i,r,o)},styles:this.computeStyles()},a=this._register(new fs(Object.assign(Object.assign({},o),r)));return a.layout(i.dimension,null!==(t=null===(e=i.offset)||void 0===e?void 0:e.top)&&void 0!==t?t:0),this._register(i.onDidLayout((function(e){var t,n;return a.layout(e,null!==(n=null===(t=i.offset)||void 0===t?void 0:t.top)&&void 0!==n?n:0)}))),this._register(a.onShow((function(){return n.resetContextKeys()}))),this._register(a.onHide((function(){return n.resetContextKeys()}))),a}},{key:"setContextKey",value:function(e){var t;e&&((t=this.contexts.get(e))||(t=new li.uy(e,!1).bindTo(this.contextKeyService),this.contexts.set(e,t))),t&&t.get()||(this.resetContextKeys(),t&&t.set(!0))}},{key:"resetContextKeys",value:function(){this.contexts.forEach((function(e){e.get()&&e.reset()}))}},{key:"pick",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:H.T.None;return this.controller.pick(e,t,n)}},{key:"createQuickPick",value:function(){return this.controller.createQuickPick()}},{key:"updateStyles",value:function(){this.controller.applyStyles(this.computeStyles())}},{key:"computeStyles",value:function(){return{widget:Object.assign({},(0,bo.o)(this.theme,{quickInputBackground:mr.zK,quickInputForeground:mr.tZ,quickInputTitleBackground:mr.lo,contrastBorder:mr.lR,widgetShadow:mr.rh})),inputBox:(0,bo.o)(this.theme,{inputForeground:mr.zJ,inputBackground:mr.sE,inputBorder:mr.dt,inputValidationInfoBackground:mr._l,inputValidationInfoForeground:mr.YI,inputValidationInfoBorder:mr.EP,inputValidationWarningBackground:mr.RV,inputValidationWarningForeground:mr.SU,inputValidationWarningBorder:mr.C3,inputValidationErrorBackground:mr.p,inputValidationErrorForeground:mr._t,inputValidationErrorBorder:mr.OZ}),countBadge:(0,bo.o)(this.theme,{badgeBackground:mr.g8,badgeForeground:mr.qe,badgeBorder:mr.lR}),button:(0,bo.o)(this.theme,{buttonForeground:mr.j5,buttonBackground:mr.b7,buttonHoverBackground:mr.GO,buttonBorder:mr.lR}),progressBar:(0,bo.o)(this.theme,{progressBarBackground:mr.zR}),keybindingLabel:(0,bo.o)(this.theme,{keybindingLabelBackground:mr.oQ,keybindingLabelForeground:mr.lW,keybindingLabelBorder:mr.AW,keybindingLabelBottomBorder:mr.K1,keybindingLabelShadow:mr.rh}),list:(0,bo.o)(this.theme,{listBackground:mr.zK,listInactiveFocusForeground:mr._2,listInactiveFocusBackground:mr.Vq,listFocusOutline:mr.xL,listInactiveFocusOutline:mr.xL,pickerGroupBorder:mr.op,pickerGroupForeground:mr.kJ})}}}]),n}(fi.bB),ks=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},Ss=function(e,t){return function(n,i){t(n,i,e)}},xs=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i,r,o,a,s){var u;(0,F.Z)(this,n),(u=t.call(this,i,r,o,a,s)).host=void 0;var l=Es.get(e);return u.host={_serviceBrand:void 0,get container(){return l.widget.getDomNode()},get dimension(){return e.getLayoutInfo()},get onDidLayout(){return e.onDidLayoutChange},focus:function(){return e.focus()}},u}return(0,j.Z)(n,[{key:"createController",value:function(){return(0,Ee.Z)((0,De.Z)(n.prototype),"createController",this).call(this,this.host)}}]),n}(Cs=bs([ws(0,di.TG),ws(1,li.i6),ws(2,fi.XE),ws(3,pi.F),ws(4,Eo)],Cs));xs=ks([Ss(1,di.TG),Ss(2,li.i6),Ss(3,fi.XE),Ss(4,pi.F),Ss(5,Eo)],xs);var Ls=function(){function e(t,n){(0,F.Z)(this,e),this.instantiationService=t,this.codeEditorService=n,this.mapEditorToService=new Map}return(0,j.Z)(e,[{key:"activeService",get:function(){var e=this,t=this.codeEditorService.getFocusedCodeEditor();if(!t)throw new Error("Quick input service needs a focused editor to work.");var n=this.mapEditorToService.get(t);if(!n){var i=n=this.instantiationService.createInstance(xs,t);this.mapEditorToService.set(t,n),(0,vs.I)(t.onDidDispose)((function(){i.dispose(),e.mapEditorToService.delete(t)}))}return n}},{key:"quickAccess",get:function(){return this.activeService.quickAccess}},{key:"pick",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:H.T.None;return this.activeService.pick(e,t,n)}},{key:"createQuickPick",value:function(){return this.activeService.createQuickPick()}}]),e}();Ls=ks([Ss(0,di.TG),Ss(1,Q.$)],Ls);var Es=function(){function e(t){(0,F.Z)(this,e),this.editor=t,this.widget=new Ns(this.editor)}return(0,j.Z)(e,[{key:"dispose",value:function(){this.widget.dispose()}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();Es.ID="editor.controller.quickInput";var Ds,Ns=function(){function e(t){(0,F.Z)(this,e),this.codeEditor=t,this.domNode=document.createElement("div"),this.codeEditor.addOverlayWidget(this)}return(0,j.Z)(e,[{key:"getId",value:function(){return e.ID}},{key:"getDomNode",value:function(){return this.domNode}},{key:"getPosition",value:function(){return{preference:2}}},{key:"dispose",value:function(){this.codeEditor.removeOverlayWidget(this)}}]),e}();Ns.ID="editor.contrib.quickInputWidget",(0,La._K)(Es.ID,Es),function(e){var t=new Zo.y,n=function(){function e(t,n){(0,F.Z)(this,e),this._serviceId=t,this._factory=n,this._value=null}return(0,j.Z)(e,[{key:"id",get:function(){return this._serviceId}},{key:"get",value:function(e){if(!this._value){if(e&&(this._value=e[this._serviceId.toString()]),this._value||(this._value=this._factory(e)),!this._value)throw new Error("Service "+this._serviceId+" is missing!");t.set(this._serviceId,this._value)}return this._value}}]),e}();e.LazyStaticService=n;var i=[];function r(e,t){var r=new n(e,t);return i.push(r),r}e.init=function(e){var t,n=new Zo.y,r=(0,X.Z)((0,ra.d)());try{for(r.s();!(t=r.n()).done;){var o=(0,at.Z)(t.value,2),a=o[0],s=o[1];n.set(a,s)}}catch(c){r.e(c)}finally{r.f()}for(var u in e)e.hasOwnProperty(u)&&n.set((0,di.yh)(u),e[u]);i.forEach((function(t){return n.set(t.id,t.get(e))}));var l=new jo(n,!0);return n.set(di.TG,l),[n,l]},e.instantiationService=r(di.TG,(function(){return new jo(t,!0)}));var o=new qn;e.configurationService=r(vn.Ui,(function(){return o})),e.resourceConfigurationService=r(bt.V,(function(){return new Gn(o)})),e.resourcePropertiesService=r(bt.y,(function(){return new $n(o)})),e.contextService=r(Rn.ec,(function(){return new Xn})),e.labelService=r(Bo.e,(function(){return new ti})),e.telemetryService=r(ko.b,(function(){return new Qn})),e.dialogService=r(To.S,(function(){return new Wn})),e.notificationService=r(An.lT,(function(){return new Vn})),e.markerService=r(Wo.lT,(function(){return new Uo})),e.modeService=r(ke.h,(function(e){return new nr})),e.standaloneThemeService=r(si.Z,(function(){return new Ir})),e.logService=r(Ct.VZ,(function(){return new Ct.$V(new Ct.kw)})),e.undoRedoService=r(ca.tJ,(function(t){return new Sa(e.dialogService.get(t),e.notificationService.get(t))})),e.modelService=r(yt.q,(function(t){return new ir.BR(e.configurationService.get(t),e.resourcePropertiesService.get(t),e.standaloneThemeService.get(t),e.logService.get(t),e.undoRedoService.get(t))})),e.markerDecorationsService=r(Xo.i,(function(t){return new ia(e.modelService.get(t),e.markerService.get(t))})),e.contextKeyService=r(li.i6,(function(t){return new Yr(e.configurationService.get(t))})),e.codeEditorService=r(Q.$,(function(t){return new Mi(null,e.contextKeyService.get(t),e.standaloneThemeService.get(t))})),e.editorProgressService=r(vi.e,(function(){return new zn})),e.storageService=r(Ko.Uy,(function(){return new Ko.vm})),e.editorWorkerService=r(Ce.p,(function(t){return new Nt(e.modelService.get(t),e.resourceConfigurationService.get(t),e.logService.get(t))}))}(Ds||(Ds={}));var Ms=function(e){(0,xe.Z)(n,e);var t=(0,Le.Z)(n);function n(e,i){var r;(0,F.Z)(this,n),r=t.call(this);var o=Ds.init(i),a=(0,at.Z)(o,2),s=a[0],u=a[1];r._serviceCollection=s,r._instantiationService=u;var l=r.get(vn.Ui),c=r.get(An.lT),d=r.get(ko.b),h=r.get(fi.XE),f=r.get(Ct.VZ),p=r.get(li.i6),g=function(e,t){var n=null;return i&&(n=i[e.toString()]),n||(n=t()),r._serviceCollection.set(e,n),n};g(pi.F,(function(){return new sa(p,l)})),g(zo.Lw,(function(){return new zo.XN(h)}));var v=g(ue.H,(function(){return new Yn(r._instantiationService)})),m=g(hi.d,(function(){return r._register(new Un(p,v,d,c,f,e))})),_=g(Eo,(function(){return new ni(Ds.codeEditorService.get(Q.$),e)}));g(ps.eJ,(function(){return new Ls(u,Ds.codeEditorService.get(Q.$))}));var y=g(ci.u,(function(){return r._register(new Mo(_))}));return g(gi.p,(function(){return new la})),g(ci.i,(function(){var e=new Lo(d,c,y,m,h);return e.configure({blockMouse:!1}),r._register(e)})),g(ui.co,(function(){return new $o(v)})),g(fn.vu,(function(){return new ei(Ds.modelService.get(yt.q))})),r}return(0,j.Z)(n,[{key:"get",value:function(e){var t=this._serviceCollection.get(e);if(!t)throw new Error("Missing service "+e);return t}},{key:"set",value:function(e,t){this._serviceCollection.set(e,t)}},{key:"has",value:function(e){return this._serviceCollection.has(e)}}]),n}(Me.JT),Ts=n(47014);function Is(e,t,n){var i=new Ms(e,t),r=null;i.has(Se.S)||(r=new Bn(Ds.modelService.get()),i.set(Se.S,r)),i.has(le.v4)||i.set(le.v4,new ge(i.get(Q.$),i.get(ue.H)));var o=n(i);return r&&r.setEditor(o),o}function Os(e,t,n){return Is(e,n||{},(function(n){return new Pi(e,t,n,n.get(di.TG),n.get(Q.$),n.get(ue.H),n.get(li.i6),n.get(hi.d),n.get(ci.u),n.get(si.Z),n.get(An.lT),n.get(vn.Ui),n.get(pi.F),n.get(yt.q),n.get(ke.h))}))}function As(e){return Ds.codeEditorService.get().onCodeEditorAdd((function(t){e(t)}))}function Rs(e,t,n){return Is(e,n||{},(function(n){return new Zi(e,t,n,n.get(di.TG),n.get(li.i6),n.get(hi.d),n.get(ci.u),n.get(Ce.p),n.get(Q.$),n.get(si.Z),n.get(An.lT),n.get(vn.Ui),n.get(ci.i),n.get(vi.e),n.get(gi.p))}))}function Ps(e,t){return new ve.F(e,t)}function Zs(e,t,n){return Fi(Ds.modelService.get(),Ds.modeService.get(),e,t,n)}function Fs(e,t){Ds.modelService.get().setMode(e,Ds.modeService.get().create(t))}function js(e,t,n){e&&Ds.markerService.get().changeOne(t,e.uri,n)}function Hs(e){return Ds.markerService.get().read(e)}function Bs(e){return Ds.markerService.get().onMarkerChanged(e)}function zs(e){return Ds.modelService.get().getModel(e)}function Ws(){return Ds.modelService.get().getModels()}function Vs(e){return Ds.modelService.get().onModelAdded(e)}function Ys(e){return Ds.modelService.get().onModelRemoved(e)}function Us(e){return Ds.modelService.get().onModelModeChanged((function(t){e({model:t.model,oldLanguage:t.oldModeId})}))}function Ks(e){return function(e,t){return new Pt(e,t)}(Ds.modelService.get(),e)}function qs(e,t){var n=Ds.standaloneThemeService.get();return n.registerEditorContainer(e),sn.colorizeElement(n,Ds.modeService.get(),e,t)}function Gs(e,t,n){return Ds.standaloneThemeService.get().registerEditorContainer(document.body),sn.colorize(Ds.modeService.get(),e,t,n)}function $s(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4;return Ds.standaloneThemeService.get().registerEditorContainer(document.body),sn.colorizeModelLine(e,t,n)}function Qs(e,t){Ds.modeService.get().triggerMode(t);for(var n=function(e){var t=be.RW.get(e);return t||{getInitialState:function(){return we.nO},tokenize:function(t,n,i,r){return(0,we.Ri)(e,t,i,r)}}}(t),i=(0,Ue.uq)(e),r=[],o=n.getInitialState(),a=0,s=i.length;a<s;a++){var u=i[a],l=n.tokenize(u,!0,o,0);r[a]=l.tokens,o=l.endState}return r}function Xs(e,t){Ds.standaloneThemeService.get().defineTheme(e,t)}function Js(e){Ds.standaloneThemeService.get().setTheme(e)}function eu(){(0,Ts.P)()}function tu(e,t){return ue.P.registerCommand({id:e,handler:t})}function nu(e,t){return"boolean"===typeof e?e:t}function iu(e,t){return"string"===typeof e?e:t}function ru(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];t&&(e=e.map((function(e){return e.toLowerCase()})));var n=function(e){var t,n={},i=(0,X.Z)(e);try{for(i.s();!(t=i.n()).done;)n[t.value]=!0}catch(r){i.e(r)}finally{i.f()}return n}(e);return t?function(e){return void 0!==n[e.toLowerCase()]&&n.hasOwnProperty(e.toLowerCase())}:function(e){return void 0!==n[e]&&n.hasOwnProperty(e)}}function ou(e,t){t=t.replace(/@@/g,"\x01");var n,i=0;do{n=!1,t=t.replace(/@(\w+)/g,(function(i,r){n=!0;var o="";if("string"===typeof e[r])o=e[r];else{if(!(e[r]&&e[r]instanceof RegExp))throw void 0===e[r]?Ut(e,"language definition does not contain attribute '"+r+"', used at: "+t):Ut(e,"attribute reference '"+r+"' must be a string, used at: "+t);o=e[r].source}return Wt(o)?"":"(?:"+o+")"})),i++}while(n&&i<5);t=t.replace(/\x01/g,"@");var r=(e.ignoreCase?"i":"")+(e.unicode?"u":"");return new RegExp(t,r)}function au(e,t,n,i){var r=-1,o=n,a=n.match(/^\$(([sS]?)(\d\d?)|#)(.*)$/);a&&(a[3]&&(r=parseInt(a[3]),a[2]&&(r+=100)),o=a[4]);var s,u="~",l=o;if(o&&0!==o.length?/^\w*$/.test(l)?u="==":(a=o.match(/^(@|!@|~|!~|==|!=)(.*)$/))&&(u=a[1],l=a[2]):(u="!=",l=""),"~"!==u&&"!~"!==u||!/^(\w|\|)*$/.test(l))if("@"===u||"!@"===u){var c=e[l];if(!c)throw Ut(e,"the @ match target '"+l+"' is not defined, in rule: "+t);if(!function(e,t){if(!t)return!1;if(!Array.isArray(t))return!1;var n,i=(0,X.Z)(t);try{for(i.s();!(n=i.n()).done;)if(!e(n.value))return!1}catch(r){i.e(r)}finally{i.f()}return!0}((function(e){return"string"===typeof e}),c))throw Ut(e,"the @ match target '"+l+"' must be an array of strings, in rule: "+t);var d=ru(c,e.ignoreCase);s=function(e){return"@"===u?d(e):!d(e)}}else if("~"===u||"!~"===u)if(l.indexOf("$")<0){var h=ou(e,"^"+l+"$");s=function(e){return"~"===u?h.test(e):!h.test(e)}}else s=function(t,n,i,r){return ou(e,"^"+Kt(e,l,n,i,r)+"$").test(t)};else if(l.indexOf("$")<0){var f=Vt(e,l);s=function(e){return"=="===u?e===f:e!==f}}else{var p=Vt(e,l);s=function(t,n,i,r,o){var a=Kt(e,p,n,i,r);return"=="===u?t===a:t!==a}}else{var g=ru(l.split("|"),e.ignoreCase);s=function(e){return"~"===u?g(e):!g(e)}}return-1===r?{name:n,value:i,test:function(e,t,n,i){return s(e,e,t,n,i)}}:{name:n,value:i,test:function(e,t,n,i){var o=function(e,t,n,i){if(i<0)return e;if(i<t.length)return t[i];if(i>=100){i-=100;var r=n.split(".");if(r.unshift(n),i<r.length)return r[i]}return null}(e,t,n,r);return s(o||"",e,t,n,i)}}}function su(e,t,n){if(n){if("string"===typeof n)return n;if(n.token||""===n.token){if("string"!==typeof n.token)throw Ut(e,"a 'token' attribute must be of type string, in rule: "+t);var i={token:n.token};if(n.token.indexOf("$")>=0&&(i.tokenSubst=!0),"string"===typeof n.bracket)if("@open"===n.bracket)i.bracket=1;else{if("@close"!==n.bracket)throw Ut(e,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+t);i.bracket=-1}if(n.next){if("string"!==typeof n.next)throw Ut(e,"the next state must be a string value in rule: "+t);var r=n.next;if(!/^(@pop|@push|@popall)$/.test(r)&&("@"===r[0]&&(r=r.substr(1)),r.indexOf("$")<0&&!function(e,t){for(var n=t;n&&n.length>0;){if(e.stateNames[n])return!0;var i=n.lastIndexOf(".");n=i<0?null:n.substr(0,i)}return!1}(e,Kt(e,r,"",[],""))))throw Ut(e,"the next state '"+n.next+"' is not defined in rule: "+t);i.next=r}return"number"===typeof n.goBack&&(i.goBack=n.goBack),"string"===typeof n.switchTo&&(i.switchTo=n.switchTo),"string"===typeof n.log&&(i.log=n.log),"string"===typeof n.nextEmbedded&&(i.nextEmbedded=n.nextEmbedded,e.usesEmbedded=!0),i}if(Array.isArray(n)){for(var o=[],a=0,s=n.length;a<s;a++)o[a]=su(e,t,n[a]);return{group:o}}if(n.cases){var u=[];for(var l in n.cases)if(n.cases.hasOwnProperty(l)){var c=su(e,t,n.cases[l]);"@default"===l||"@"===l||""===l?u.push({test:void 0,value:c,name:l}):"@eos"===l?u.push({test:function(e,t,n,i){return i},value:c,name:l}):u.push(au(e,t,l,c))}var d=e.defaultToken;return{test:function(e,t,n,i){for(var r=0,o=u;r<o.length;r++){var a=o[r];if(!a.test||a.test(e,t,n,i))return a.value}return d}}}throw Ut(e,"an action must be a string, an object with a 'token' or 'cases' attribute, or an array of actions; in rule: "+t)}return{token:""}}var uu=function(){function e(t){(0,F.Z)(this,e),this.regex=new RegExp(""),this.action={token:""},this.matchOnlyAtLineStart=!1,this.name="",this.name=t}return(0,j.Z)(e,[{key:"setRegex",value:function(e,t){var n;if("string"===typeof t)n=t;else{if(!(t instanceof RegExp))throw Ut(e,"rules must start with a match string or regular expression: "+this.name);n=t.source}this.matchOnlyAtLineStart=n.length>0&&"^"===n[0],this.name=this.name+": "+n,this.regex=ou(e,"^(?:"+(this.matchOnlyAtLineStart?n.substr(1):n)+")")}},{key:"setAction",value:function(e,t){this.action=su(e,this.name,t)}}]),e}();function lu(e){Qi.dQ.registerLanguage(e)}function cu(){var e=[];return e=e.concat(Qi.dQ.getLanguages())}function du(e){var t=Ds.modeService.get().getLanguageIdentifier(e);return t?t.id:0}function hu(e,t){var n=Ds.modeService.get().onDidCreateMode((function(i){i.getId()===e&&(n.dispose(),t())}));return n}function fu(e,t){var n=Ds.modeService.get().getLanguageIdentifier(e);if(!n)throw new Error("Cannot set configuration for unknown language ".concat(e));return We.zu.register(n,t,100)}var pu=function(){function e(t,n){(0,F.Z)(this,e),this._languageIdentifier=t,this._actual=n}return(0,j.Z)(e,[{key:"getInitialState",value:function(){return this._actual.getInitialState()}},{key:"tokenize",value:function(e,t,n,i){if("function"===typeof this._actual.tokenize)return gu.adaptTokenize(this._languageIdentifier.language,this._actual,e,n,i);throw new Error("Not supported!")}},{key:"tokenize2",value:function(e,t,n){var i=this._actual.tokenizeEncoded(e,n);return new K.Hi(i.tokens,i.endState)}}]),e}(),gu=function(){function e(t,n,i){(0,F.Z)(this,e),this._standaloneThemeService=t,this._languageIdentifier=n,this._actual=i}return(0,j.Z)(e,[{key:"getInitialState",value:function(){return this._actual.getInitialState()}},{key:"tokenize",value:function(t,n,i,r){return e.adaptTokenize(this._languageIdentifier.language,this._actual,t,i,r)}},{key:"_toBinaryTokens",value:function(e,t){for(var n=this._languageIdentifier.id,i=this._standaloneThemeService.getColorTheme().tokenTheme,r=[],o=0,a=0,s=0,u=e.length;s<u;s++){var l=e[s],c=i.match(n,l.scopes);if(!(o>0&&r[o-1]===c)){var d=l.startIndex;0===s?d=0:d<a&&(d=a),r[o++]=d+t,r[o++]=c,a=d}}for(var h=new Uint32Array(o),f=0;f<o;f++)h[f]=r[f];return h}},{key:"tokenize2",value:function(e,t,n,i){var r,o=this._actual.tokenize(e,n),a=this._toBinaryTokens(o.tokens,i);return r=o.endState.equals(n)?n:o.endState,new K.Hi(a,r)}}],[{key:"_toClassicTokens",value:function(e,t,n){for(var i=[],r=0,o=0,a=e.length;o<a;o++){var s=e[o],u=s.startIndex;0===o?u=0:u<r&&(u=r),i[o]=new K.WU(u+n,s.scopes,t),r=u}return i}},{key:"adaptTokenize",value:function(t,n,i,r,o){var a,s=n.tokenize(i,r),u=e._toClassicTokens(s.tokens,t,o);return a=s.endState.equals(r)?r:s.endState,new K.hG(u,a)}}]),e}();function vu(e){return e&&"function"===typeof e.then}function mu(e){if(e){for(var t=[null],n=1,i=e.length;n<i;n++)t[n]=rr.Il.fromHex(e[n]);Ds.standaloneThemeService.get().setColorMapOverride(t)}else Ds.standaloneThemeService.get().setColorMapOverride(null)}function _u(e,t){var n=Ds.modeService.get().getLanguageIdentifier(e);if(!n)throw new Error("Cannot set tokens provider for unknown language ".concat(e));var i=function(e){return function(e){return"tokenizeEncoded"in e}(e)?new pu(n,e):new gu(Ds.standaloneThemeService.get(),n,e)};return vu(t)?be.RW.registerPromise(e,t.then((function(e){return i(e)}))):be.RW.register(e,i(t))}function yu(e,t){var n=function(t){return function(e,t,n,i){return new rn(e,t,n,i)}(Ds.modeService.get(),Ds.standaloneThemeService.get(),e,function(e,t){if(!t||"object"!==typeof t)throw new Error("Monarch: expecting a language definition object");var n={};n.languageId=e,n.includeLF=nu(t.includeLF,!1),n.noThrow=!1,n.maxStack=100,n.start="string"===typeof t.start?t.start:null,n.ignoreCase=nu(t.ignoreCase,!1),n.unicode=nu(t.unicode,!1),n.tokenPostfix=iu(t.tokenPostfix,"."+n.languageId),n.defaultToken=iu(t.defaultToken,"source"),n.usesEmbedded=!1;var i=t;function r(e,o,a){var s,u=(0,X.Z)(a);try{for(u.s();!(s=u.n()).done;){var l=s.value,c=l.include;if(c){if("string"!==typeof c)throw Ut(n,"an 'include' attribute must be a string at: "+e);if("@"===c[0]&&(c=c.substr(1)),!t.tokenizer[c])throw Ut(n,"include target '"+c+"' is not defined at: "+e);r(e+"."+c,o,t.tokenizer[c])}else{var d=new uu(e);if(Array.isArray(l)&&l.length>=1&&l.length<=3)if(d.setRegex(i,l[0]),l.length>=3)if("string"===typeof l[1])d.setAction(i,{token:l[1],next:l[2]});else{if("object"!==typeof l[1])throw Ut(n,"a next state as the last element of a rule can only be given if the action is either an object or a string, at: "+e);var h=l[1];h.next=l[2],d.setAction(i,h)}else d.setAction(i,l[1]);else{if(!l.regex)throw Ut(n,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+e);l.name&&"string"===typeof l.name&&(d.name=l.name),l.matchOnlyAtStart&&(d.matchOnlyAtLineStart=nu(l.matchOnlyAtLineStart,!1)),d.setRegex(i,l.regex),d.setAction(i,l.action)}o.push(d)}}}catch(f){u.e(f)}finally{u.f()}}if(i.languageId=e,i.includeLF=n.includeLF,i.ignoreCase=n.ignoreCase,i.unicode=n.unicode,i.noThrow=n.noThrow,i.usesEmbedded=n.usesEmbedded,i.stateNames=t.tokenizer,i.defaultToken=n.defaultToken,!t.tokenizer||"object"!==typeof t.tokenizer)throw Ut(n,"a language definition must define the 'tokenizer' attribute as an object");for(var o in n.tokenizer=[],t.tokenizer)if(t.tokenizer.hasOwnProperty(o)){n.start||(n.start=o);var a=t.tokenizer[o];n.tokenizer[o]=new Array,r("tokenizer."+o,n.tokenizer[o],a)}if(n.usesEmbedded=i.usesEmbedded,t.brackets){if(!Array.isArray(t.brackets))throw Ut(n,"the 'brackets' attribute must be defined as an array")}else t.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];var s,u=[],l=(0,X.Z)(t.brackets);try{for(l.s();!(s=l.n()).done;){var c=s.value;if(c&&Array.isArray(c)&&3===c.length&&(c={token:c[2],open:c[0],close:c[1]}),c.open===c.close)throw Ut(n,"open and close brackets in a 'brackets' attribute must be different: "+c.open+"\n hint: use the 'bracket' attribute if matching on equal brackets is required.");if("string"!==typeof c.open||"string"!==typeof c.token||"string"!==typeof c.close)throw Ut(n,"every element in the 'brackets' array must be a '{open,close,token}' object or array");u.push({token:c.token+n.tokenPostfix,open:Vt(n,c.open),close:Vt(n,c.close)})}}catch(d){l.e(d)}finally{l.f()}return n.brackets=u,n.noThrow=!0,n}(e,t))};return vu(t)?be.RW.registerPromise(e,t.then((function(e){return n(e)}))):be.RW.register(e,n(t))}function bu(e,t){return be.FL.register(e,t)}function wu(e,t){return be.G0.register(e,t)}function Cu(e,t){return be.nD.register(e,t)}function ku(e,t){return be.xp.register(e,{provideHover:function(e,n,i){var r=e.getWordAtPosition(n);return Promise.resolve(t.provideHover(e,n,i)).then((function(e){if(e)return!e.range&&r&&(e.range=new Y.e(n.lineNumber,r.startColumn,n.lineNumber,r.endColumn)),e.range||(e.range=new Y.e(n.lineNumber,n.column,n.lineNumber,n.column)),e}))}})}function Su(e,t){return be.vJ.register(e,t)}function xu(e,t){return be.vH.register(e,t)}function Lu(e,t){return be.id.register(e,t)}function Eu(e,t){return be.Ct.register(e,t)}function Du(e,t){return be.vI.register(e,t)}function Nu(e,t){return be.tA.register(e,t)}function Mu(e,t){return be.He.register(e,t)}function Tu(e,t){return be.H9.register(e,{provideCodeActions:function(e,n,i,r){var o=Ds.markerService.get().read({resource:e.uri}).filter((function(e){return Y.e.areIntersectingOrTouching(e,n)}));return t.provideCodeActions(e,n,{markers:o,only:i.only},r)}})}function Iu(e,t){return be.Az.register(e,t)}function Ou(e,t){return be.vN.register(e,t)}function Au(e,t){return be.ln.register(e,t)}function Ru(e,t){return be.pM.register(e,t)}function Pu(e,t){return be.KZ.register(e,t)}function Zu(e,t){return be.OH.register(e,t)}function Fu(e,t){return be.aC.register(e,t)}function ju(e,t){return be.RN.register(e,t)}function Hu(e,t){return be.AC.register(e,t)}function Bu(e,t){return be.wT.register(e,t)}function zu(e,t){return be.K7.register(e,t)}var Wu,Vu=n(61335);Z.BH.wrappingIndent.defaultValue=0,Z.BH.glyphMargin.defaultValue=!1,Z.BH.autoIndent.defaultValue=3,Z.BH.overviewRulerLanes.defaultValue=2,Vu.xC.setFormatterSelector((function(e,t,n){return Promise.resolve(e[0])}));var Yu=G();Yu.editor={create:Os,onDidCreateEditor:As,createDiffEditor:Rs,createDiffNavigator:Ps,createModel:Zs,setModelLanguage:Fs,setModelMarkers:js,getModelMarkers:Hs,onDidChangeMarkers:Bs,getModels:Ws,getModel:zs,onDidCreateModel:Vs,onWillDisposeModel:Ys,onDidChangeModelLanguage:Us,createWebWorker:Ks,colorizeElement:qs,colorize:Gs,colorizeModelLine:$s,tokenize:Qs,defineTheme:Xs,setTheme:Js,remeasureFonts:eu,registerCommand:tu,AccessibilitySupport:i,ContentWidgetPositionPreference:u,CursorChangeReason:l,DefaultEndOfLine:c,EditorAutoIndentStrategy:h,EditorOption:f,EndOfLinePreference:p,EndOfLineSequence:g,MinimapPosition:w,MouseTargetType:C,OverlayWidgetPositionPreference:k,OverviewRulerLane:S,RenderLineNumbersType:x,RenderMinimap:L,ScrollbarVisibility:D,ScrollType:E,TextEditorCursorBlinkingStyle:O,TextEditorCursorStyle:A,TrackedRangeStickiness:R,WrappingIndent:P,ConfigurationChangedEvent:Z.Bb,BareFontInfo:me.E4,FontInfo:me.pR,TextModelResolvedOptions:ye.dJ,FindMatch:ye.tk,EditorType:_e.g,EditorOptions:Z.BH},Yu.languages={register:lu,getLanguages:cu,onLanguage:hu,getEncodedLanguageId:du,setLanguageConfiguration:fu,setColorMap:mu,setTokensProvider:_u,setMonarchTokensProvider:yu,registerReferenceProvider:bu,registerRenameProvider:wu,registerCompletionItemProvider:Pu,registerSignatureHelpProvider:Cu,registerHoverProvider:ku,registerDocumentSymbolProvider:Su,registerDocumentHighlightProvider:xu,registerLinkedEditingRangeProvider:Lu,registerDefinitionProvider:Eu,registerImplementationProvider:Du,registerTypeDefinitionProvider:Nu,registerCodeLensProvider:Mu,registerCodeActionProvider:Tu,registerDocumentFormattingEditProvider:Iu,registerDocumentRangeFormattingEditProvider:Ou,registerOnTypeFormattingEditProvider:Au,registerLinkProvider:Ru,registerColorProvider:Zu,registerFoldingRangeProvider:Fu,registerDeclarationProvider:ju,registerSelectionRangeProvider:Hu,registerDocumentSemanticTokensProvider:Bu,registerDocumentRangeSemanticTokensProvider:zu,DocumentHighlightKind:d,CompletionItemKind:o,CompletionItemTag:a,CompletionItemInsertTextRule:r,SymbolKind:T,SymbolTag:I,IndentAction:v,CompletionTriggerKind:s,SignatureHelpTriggerKind:M,InlineHintKind:m,FoldingRangeKind:be.AD};var Uu=Yu.CancellationTokenSource,Ku=Yu.Emitter,qu=Yu.KeyCode,Gu=Yu.KeyMod,$u=Yu.Position,Qu=Yu.Range,Xu=Yu.Selection,Ju=Yu.SelectionDirection,el=Yu.MarkerSeverity,tl=Yu.MarkerTag,nl=Yu.Uri,il=Yu.Token,rl=Yu.editor,ol=Yu.languages;((null===(Wu=Ie.li.MonacoEnvironment)||void 0===Wu?void 0:Wu.globalAPI)||"function"===typeof define&&n.amdO)&&(self.monaco=Yu),"undefined"!==typeof self.require&&"function"===typeof self.require.config&&self.require.config({ignoreDuplicateModules:["vscode-languageserver-types","vscode-languageserver-types/main","vscode-languageserver-textdocument","vscode-languageserver-textdocument/main","vscode-nls","vscode-nls/vscode-nls","jsonc-parser","jsonc-parser/main","vscode-uri","vscode-uri/index","vs/basic-languages/typescript/typescript"]})},51342:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var i=(0,n(84596).yh)("themeService")},24116:function(e,t,n){"use strict";n.d(t,{Mj:function(){return i.languages},Q5:function(){return i.Emitter},Sf:function(){return i.Uri},ZL:function(){return i.MarkerSeverity},e6:function(){return i.Range},j6:function(){return i.editor}});var i=n(14717)},38429:function(e,t,n){"use strict";n.d(t,{Mj:function(){return i.languages},Q5:function(){return i.Emitter},Sf:function(){return i.Uri},ZL:function(){return i.MarkerSeverity},e6:function(){return i.Range},j6:function(){return i.editor}});var i=n(14717)},3570:function(e,t,n){"use strict";n.d(t,{Mj:function(){return i.languages},Q5:function(){return i.Emitter},ZL:function(){return i.MarkerSeverity},e6:function(){return i.Range},j6:function(){return i.editor}});var i=n(14717)},81864:function(e,t,n){"use strict";n.d(t,{Mj:function(){return i.languages},Q5:function(){return i.Emitter},Sf:function(){return i.Uri},ZL:function(){return i.MarkerSeverity},e6:function(){return i.Range},eB:function(){return i.MarkerTag},j6:function(){return i.editor}});var i=n(14717)},56345:function(e,t,n){"use strict";function i(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];return function(e,t){return 0===t.length?e:e.replace(/\{(\d+)\}/g,(function(e,n){var i=n[0];return"undefined"!==typeof t[i]?t[i]:e}))}(t,i)}n.d(t,{N:function(){return i}})},40782:function(e,t,n){"use strict";n.d(t,{F:function(){return o},U:function(){return a}});var i=n(84596),r=n(18948),o=(0,i.yh)("accessibilityService"),a=new r.uy("accessibilityModeEnabled",!1)},31585:function(e,t,n){"use strict";n.d(t,{BH:function(){return x},NZ:function(){return L},U8:function(){return E},co:function(){return S},eH:function(){return k},vr:function(){return C}});var i=n(29439),r=n(60136),o=n(43668),a=n(93433),s=n(37762),u=n(43144),l=n(15671),c=n(29077),d=n(84596),h=n(18948),f=n(72611),p=n(81626),g=n(11732),v=n(70182),m=n(98900),_=n(28214),y=n(4354),b=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},w=function(e,t){return function(n,i){t(n,i,e)}};function C(e){return void 0!==e.command}var k=(0,u.Z)((function e(t){(0,l.Z)(this,e),this.id=e._idPool++,this._debugName=t}));k._idPool=0,k.CommandPalette=new k("CommandPalette"),k.EditorContext=new k("EditorContext"),k.EditorContextCopy=new k("EditorContextCopy"),k.EditorContextPeek=new k("EditorContextPeek"),k.MenubarEditMenu=new k("MenubarEditMenu"),k.MenubarCopy=new k("MenubarCopy"),k.MenubarGoMenu=new k("MenubarGoMenu"),k.MenubarSelectionMenu=new k("MenubarSelectionMenu");var S=(0,d.yh)("menuService"),x=new(function(){function e(){(0,l.Z)(this,e),this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new g.Q5,this.onDidChangeMenu=this._onDidChangeMenu.event,this._commandPaletteChangeEvent={has:function(e){return e===k.CommandPalette}}}return(0,u.Z)(e,[{key:"addCommand",value:function(e){return this.addCommands(m.$.single(e))}},{key:"addCommands",value:function(e){var t,n=this,i=(0,s.Z)(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;this._commands.set(r.id,r)}}catch(o){i.e(o)}finally{i.f()}return this._onDidChangeMenu.fire(this._commandPaletteChangeEvent),(0,p.OF)((function(){var t,i=!1,r=(0,s.Z)(e);try{for(r.s();!(t=r.n()).done;){var a=t.value;i=n._commands.delete(a.id)||i}}catch(o){r.e(o)}finally{r.f()}i&&n._onDidChangeMenu.fire(n._commandPaletteChangeEvent)}))}},{key:"getCommand",value:function(e){return this._commands.get(e)}},{key:"getCommands",value:function(){var e=new Map;return this._commands.forEach((function(t,n){return e.set(n,t)})),e}},{key:"appendMenuItem",value:function(e,t){return this.appendMenuItems(m.$.single({id:e,item:t}))}},{key:"appendMenuItems",value:function(e){var t,n=this,i=new Set,r=new _.S,o=(0,s.Z)(e);try{for(o.s();!(t=o.n()).done;){var a=t.value,u=a.id,l=a.item,c=this._menuItems.get(u);c||(c=new _.S,this._menuItems.set(u,c)),r.push(c.push(l)),i.add(u)}}catch(d){o.e(d)}finally{o.f()}return this._onDidChangeMenu.fire(i),(0,p.OF)((function(){if(r.size>0){var e,t=(0,s.Z)(r);try{for(t.s();!(e=t.n()).done;){(0,e.value)()}}catch(d){t.e(d)}finally{t.f()}n._onDidChangeMenu.fire(i),r.clear()}}))}},{key:"getMenuItems",value:function(e){var t;return t=this._menuItems.has(e)?(0,a.Z)(this._menuItems.get(e)):[],e===k.CommandPalette&&this._appendImplicitItems(t),t}},{key:"_appendImplicitItems",value:function(e){var t,n=new Set,i=(0,s.Z)(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;C(r)&&(n.add(r.command.id),r.alt&&n.add(r.alt.id))}}catch(o){i.e(o)}finally{i.f()}this._commands.forEach((function(t,i){n.has(i)||e.push({command:t})}))}}]),e}()),L=function(e){(0,r.Z)(n,e);var t=(0,o.Z)(n);function n(e,i,r,o){var a;return(0,l.Z)(this,n),(a=t.call(this,"submenuitem.".concat(e.submenu.id),"string"===typeof e.title?e.title:e.title.value,[],"submenu")).item=e,a._menuService=i,a._contextKeyService=r,a._options=o,a}return(0,u.Z)(n,[{key:"actions",get:function(){var e=[],t=this._menuService.createMenu(this.item.submenu,this._contextKeyService),n=t.getActions(this._options);t.dispose();var r,o=(0,s.Z)(n);try{for(o.s();!(r=o.n()).done;){var u=(0,i.Z)(r.value,2)[1];u.length>0&&(e.push.apply(e,(0,a.Z)(u)),e.push(new c.Z0))}}catch(l){o.e(l)}finally{o.f()}return e.length&&e.pop(),e}}]),n}(c.wY),E=function(){function e(t,n,i,r,o){var a;if((0,l.Z)(this,e),this._commandService=o,this.id=t.id,this.label="string"===typeof t.title?t.title:t.title.value,this.tooltip=null!==(a=t.tooltip)&&void 0!==a?a:"",this.enabled=!t.precondition||r.contextMatchesRules(t.precondition),this.checked=!1,t.toggled){var s=t.toggled.condition?t.toggled:{condition:t.toggled};this.checked=r.contextMatchesRules(s.condition),this.checked&&s.tooltip&&(this.tooltip="string"===typeof s.tooltip?s.tooltip:s.tooltip.value),s.title&&(this.label="string"===typeof s.title?s.title:s.title.value)}this.item=t,this.alt=n?new e(n,void 0,i,r,o):void 0,this._options=i,v.kS.isThemeIcon(t.icon)&&(this.class=y.dT.asClassName(t.icon))}return(0,u.Z)(e,[{key:"dispose",value:function(){}},{key:"run",value:function(){var e,t,n,i=[];if((null===(t=this._options)||void 0===t?void 0:t.arg)&&(i=[].concat((0,a.Z)(i),[this._options.arg])),null===(n=this._options)||void 0===n?void 0:n.shouldForwardArgs){for(var r=arguments.length,o=new Array(r),s=0;s<r;s++)o[s]=arguments[s];i=[].concat((0,a.Z)(i),o)}return(e=this._commandService).executeCommand.apply(e,[this.id].concat((0,a.Z)(i)))}}]),e}();E=b([w(3,h.i6),w(4,f.H)],E)},38794:function(e,t,n){"use strict";n.d(t,{p:function(){return i}});var i=(0,n(84596).yh)("clipboardService")},72611:function(e,t,n){"use strict";n.d(t,{H:function(){return h},P:function(){return f}});var i=n(37762),r=n(15671),o=n(43144),a=n(81626),s=n(25941),u=n(84596),l=n(11732),c=n(28214),d=n(98900),h=(0,u.yh)("commandService"),f=new(function(){function e(){(0,r.Z)(this,e),this._commands=new Map,this._onDidRegisterCommand=new l.Q5,this.onDidRegisterCommand=this._onDidRegisterCommand.event}return(0,o.Z)(e,[{key:"registerCommand",value:function(e,t){var n=this;if(!e)throw new Error("invalid command");if("string"===typeof e){if(!t)throw new Error("invalid command");return this.registerCommand({id:e,handler:t})}if(e.description){var r,o=[],u=(0,i.Z)(e.description.args);try{for(u.s();!(r=u.n()).done;){var l=r.value;o.push(l.constraint)}}catch(v){u.e(v)}finally{u.f()}var d=e.handler;e.handler=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return(0,s.D8)(n,o),d.apply(void 0,[e].concat(n))}}var h=e.id,f=this._commands.get(h);f||(f=new c.S,this._commands.set(h,f));var p=f.unshift(e),g=(0,a.OF)((function(){p();var e=n._commands.get(h);(null===e||void 0===e?void 0:e.isEmpty())&&n._commands.delete(h)}));return this._onDidRegisterCommand.fire(h),g}},{key:"registerCommandAlias",value:function(e,t){return f.registerCommand(e,(function(e){for(var n,i=arguments.length,r=new Array(i>1?i-1:0),o=1;o<i;o++)r[o-1]=arguments[o];return(n=e.get(h)).executeCommand.apply(n,[t].concat(r))}))}},{key:"getCommand",value:function(e){var t=this._commands.get(e);if(t&&!t.isEmpty())return d.$.first(t)}},{key:"getCommands",value:function(){var e,t=new Map,n=(0,i.Z)(this._commands.keys());try{for(n.s();!(e=n.n()).done;){var r=e.value,o=this.getCommand(r);o&&t.set(r,o)}}catch(a){n.e(a)}finally{n.f()}return t}}]),e}());f.registerCommand("noop",(function(){}))},98921:function(e,t,n){"use strict";n.d(t,{KV:function(){return l},MR:function(){return f},Mt:function(){return h},O4:function(){return p},Od:function(){return u},Ui:function(){return s},xL:function(){return c}});var i=n(37762),r=n(38774),o=n(84596),a=n(72885),s=(0,o.yh)("configurationService");function u(e,t){var n=Object.create(null);for(var i in e)l(n,i,e[i],t);return n}function l(e,t,n,i){for(var r=t.split("."),o=r.pop(),a=e,s=0;s<r.length;s++){var u=r[s],l=a[u];switch(typeof l){case"undefined":l=a[u]=Object.create(null);break;case"object":break;default:return void i("Ignoring ".concat(t," as ").concat(r.slice(0,s+1).join(".")," is ").concat(JSON.stringify(l)))}a=l}if("object"===typeof a&&null!==a)try{a[o]=n}catch(c){i("Ignoring ".concat(t," as ").concat(r.join(".")," is ").concat(JSON.stringify(a)))}else i("Ignoring ".concat(t," as ").concat(r.join(".")," is ").concat(JSON.stringify(a)))}function c(e,t){d(e,t.split("."))}function d(e,t){var n=t.shift();if(0!==t.length){if(-1!==Object.keys(e).indexOf(n)){var i=e[n];"object"!==typeof i||Array.isArray(i)||(d(i,t),0===Object.keys(i).length&&delete e[n])}}else delete e[n]}function h(e,t,n){var r=function(e,t){var n,r=e,o=(0,i.Z)(t);try{for(o.s();!(n=o.n()).done;){var a=n.value;if("object"!==typeof r||null===r)return;r=r[a]}}catch(s){o.e(s)}finally{o.f()}return r}(e,t.split("."));return"undefined"===typeof r?n:r}function f(){var e=r.B.as(a.IP.Configuration).getConfigurationProperties();return Object.keys(e)}function p(){var e=Object.create(null),t=r.B.as(a.IP.Configuration).getConfigurationProperties();for(var n in t){l(e,n,t[n].default,(function(e){return console.error("Conflict in default settings: ".concat(e))}))}return e}},72885:function(e,t,n){"use strict";n.d(t,{G1:function(){return C},IP:function(){return h},Uh:function(){return k}});var i=n(37762),r=n(93433),o=n(15671),a=n(43144),s=n(56345),u=n(11732),l=n(38774),c=n(25941),d=n(27930),h={Configuration:"base.contributions.configuration"},f={properties:{},patternProperties:{}},p={properties:{},patternProperties:{}},g={properties:{},patternProperties:{}},v={properties:{},patternProperties:{}},m={properties:{},patternProperties:{}},_={properties:{},patternProperties:{}},y="vscode://schemas/settings/resourceLanguage",b=l.B.as(d.I.JSONContribution),w=function(){function e(){(0,o.Z)(this,e),this.overrideIdentifiers=new Set,this._onDidSchemaChange=new u.Q5,this._onDidUpdateConfiguration=new u.Q5,this.defaultValues={},this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:s.N("defaultLanguageConfigurationOverrides.title","Default Language Configuration Overrides"),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!1,errorMessage:"Unknown editor configuration setting",allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.excludedConfigurationProperties={},b.registerSchema(y,this.resourceLanguageSettingsSchema)}return(0,a.Z)(e,[{key:"registerConfiguration",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.registerConfigurations([e],t)}},{key:"registerConfigurations",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=[];e.forEach((function(e){i.push.apply(i,(0,r.Z)(t.validateAndRegisterProperties(e,n,e.extensionInfo))),t.configurationContributors.push(e),t.registerJSONConfiguration(e)})),b.registerSchema(y,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire(i)}},{key:"registerOverrideIdentifiers",value:function(e){var t,n=(0,i.Z)(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.overrideIdentifiers.add(r)}}catch(o){n.e(o)}finally{n.f()}this.updateOverridePropertyPatternKey()}},{key:"validateAndRegisterProperties",value:function(e){var t,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],o=arguments.length>2?arguments[2]:void 0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:3;a=c.Jp(e.scope)?a:e.scope;var s=[],u=e.properties;if(u)for(var l in u)if(n&&x(l))delete u[l];else{var d=u[l];this.updatePropertyDefaultValue(l,d),C.test(l)?d.scope=void 0:(d.scope=c.Jp(d.scope)?a:d.scope,d.restricted=c.Jp(d.restricted)?!!(null===(t=null===o||void 0===o?void 0:o.restrictedConfigurations)||void 0===t?void 0:t.includes(l)):d.restricted),!u[l].hasOwnProperty("included")||u[l].included?(this.configurationProperties[l]=u[l],!u[l].deprecationMessage&&u[l].markdownDeprecationMessage&&(u[l].deprecationMessage=u[l].markdownDeprecationMessage),s.push(l)):(this.excludedConfigurationProperties[l]=u[l],delete u[l])}var h=e.allOf;if(h){var f,p=(0,i.Z)(h);try{for(p.s();!(f=p.n()).done;){var g=f.value;s.push.apply(s,(0,r.Z)(this.validateAndRegisterProperties(g,n,o,a)))}}catch(v){p.e(v)}finally{p.f()}}return s}},{key:"getConfigurationProperties",value:function(){return this.configurationProperties}},{key:"registerJSONConfiguration",value:function(e){var t=this;!function e(n){var i=n.properties;if(i)for(var r in i)t.updateSchema(r,i[r]);var o=n.allOf;o&&o.forEach(e)}(e)}},{key:"updateSchema",value:function(e,t){switch(f.properties[e]=t,t.scope){case 1:p.properties[e]=t;break;case 2:g.properties[e]=t;break;case 6:v.properties[e]=t;break;case 3:m.properties[e]=t;break;case 4:_.properties[e]=t;break;case 5:_.properties[e]=t,this.resourceLanguageSettingsSchema.properties[e]=t}}},{key:"updateOverridePropertyPatternKey",value:function(){var e,t=(0,i.Z)(this.overrideIdentifiers.values());try{for(t.s();!(e=t.n()).done;){var n=e.value,r="[".concat(n,"]"),o={type:"object",description:s.N("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:s.N("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:y};this.updatePropertyDefaultValue(r,o),f.properties[r]=o,p.properties[r]=o,g.properties[r]=o,v.properties[r]=o,m.properties[r]=o,_.properties[r]=o}}catch(a){t.e(a)}finally{t.f()}this._onDidSchemaChange.fire()}},{key:"updatePropertyDefaultValue",value:function(e,t){var n=this.defaultValues[e];c.o8(n)&&(n=t.default),c.o8(n)&&(n=function(e){switch(Array.isArray(e)?e[0]:e){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}(t.type)),t.default=n}}]),e}(),C=new RegExp("\\[.*\\]$");function k(e){return e.substring(1,e.length-1)}var S=new w;function x(e){return e.trim()?C.test(e)?s.N("config.property.languageDefault","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.",e):void 0!==S.getConfigurationProperties()[e]?s.N("config.property.duplicate","Cannot register '{0}'. This property is already registered.",e):null:s.N("config.property.empty","Cannot register an empty property")}l.B.add(h.Configuration,S)},18948:function(e,t,n){"use strict";n.d(t,{Ao:function(){return g},Eq:function(){return R},i6:function(){return A},uy:function(){return O}});var i=n(60136),r=n(43668),o=n(93433),a=n(37762),s=n(15671),u=n(43144),l=n(51747),c=n(84596),d=n(30487),h=d.WE||"",f=new Map;f.set("false",!1),f.set("true",!0),f.set("isMac",d.dz),f.set("isLinux",d.IJ),f.set("isWindows",d.ED),f.set("isWeb",d.$L),f.set("isMacNative",d.dz&&!d.$L),f.set("isEdge",h.indexOf("Edg/")>=0),f.set("isFirefox",h.indexOf("Firefox")>=0),f.set("isChrome",h.indexOf("Chrome")>=0),f.set("isSafari",h.indexOf("Safari")>=0),f.set("isIPad",h.indexOf("iPad")>=0);var p=Object.prototype.hasOwnProperty,g=function(){function e(){(0,s.Z)(this,e)}return(0,u.Z)(e,null,[{key:"has",value:function(e){return y.create(e)}},{key:"equals",value:function(e,t){return b.create(e,t)}},{key:"regex",value:function(e,t){return N.create(e,t)}},{key:"not",value:function(e){return S.create(e)}},{key:"and",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return T.create(t)}},{key:"or",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return I.create(t)}},{key:"deserialize",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e)return this._deserializeOrExpression(e,t)}},{key:"_deserializeOrExpression",value:function(e,t){var n=this,i=e.split("||");return I.create(i.map((function(e){return n._deserializeAndExpression(e,t)})))}},{key:"_deserializeAndExpression",value:function(e,t){var n=this,i=e.split("&&");return T.create(i.map((function(e){return n._deserializeOne(e,t)})))}},{key:"_deserializeOne",value:function(e,t){if((e=e.trim()).indexOf("!=")>=0){var n=e.split("!=");return k.create(n[0].trim(),this._deserializeValue(n[1],t))}if(e.indexOf("==")>=0){var i=e.split("==");return b.create(i[0].trim(),this._deserializeValue(i[1],t))}if(e.indexOf("=~")>=0){var r=e.split("=~");return N.create(r[0].trim(),this._deserializeRegexValue(r[1],t))}if(e.indexOf(" in ")>=0){var o=e.split(" in ");return w.create(o[0].trim(),o[1].trim())}if(/^[^<=>]+>=[^<=>]+$/.test(e)){var a=e.split(">=");return L.create(a[0].trim(),a[1].trim())}if(/^[^<=>]+>[^<=>]+$/.test(e)){var s=e.split(">");return x.create(s[0].trim(),s[1].trim())}if(/^[^<=>]+<=[^<=>]+$/.test(e)){var u=e.split("<=");return D.create(u[0].trim(),u[1].trim())}if(/^[^<=>]+<[^<=>]+$/.test(e)){var l=e.split("<");return E.create(l[0].trim(),l[1].trim())}return/^\!\s*/.test(e)?S.create(e.substr(1).trim()):y.create(e)}},{key:"_deserializeValue",value:function(e,t){if("true"===(e=e.trim()))return!0;if("false"===e)return!1;var n=/^'([^']*)'$/.exec(e);return n?n[1].trim():e}},{key:"_deserializeRegexValue",value:function(e,t){if((0,l.m5)(e)){if(t)throw new Error("missing regexp-value for =~-expression");return console.warn("missing regexp-value for =~-expression"),null}var n=e.indexOf("/"),i=e.lastIndexOf("/");if(n===i||n<0){if(t)throw new Error("bad regexp-value '".concat(e,"', missing /-enclosure"));return console.warn("bad regexp-value '".concat(e,"', missing /-enclosure")),null}var r=e.slice(n+1,i),o="i"===e[i+1]?"i":"";try{return new RegExp(r,o)}catch(a){if(t)throw new Error("bad regexp-value '".concat(e,"', parse error: ").concat(a));return console.warn("bad regexp-value '".concat(e,"', parse error: ").concat(a)),null}}}]),e}();function v(e,t){return e.cmp(t)}var m=function(){function e(){(0,s.Z)(this,e),this.type=0}return(0,u.Z)(e,[{key:"cmp",value:function(e){return this.type-e.type}},{key:"equals",value:function(e){return e.type===this.type}},{key:"evaluate",value:function(e){return!1}},{key:"serialize",value:function(){return"false"}},{key:"keys",value:function(){return[]}},{key:"negate",value:function(){return _.INSTANCE}}]),e}();m.INSTANCE=new m;var _=function(){function e(){(0,s.Z)(this,e),this.type=1}return(0,u.Z)(e,[{key:"cmp",value:function(e){return this.type-e.type}},{key:"equals",value:function(e){return e.type===this.type}},{key:"evaluate",value:function(e){return!0}},{key:"serialize",value:function(){return"true"}},{key:"keys",value:function(){return[]}},{key:"negate",value:function(){return m.INSTANCE}}]),e}();_.INSTANCE=new _;var y=function(){function e(t){(0,s.Z)(this,e),this.key=t,this.type=2}return(0,u.Z)(e,[{key:"cmp",value:function(e){return e.type!==this.type?this.type-e.type:P(this.key,e.key)}},{key:"equals",value:function(e){return e.type===this.type&&this.key===e.key}},{key:"evaluate",value:function(e){return!!e.getValue(this.key)}},{key:"serialize",value:function(){return this.key}},{key:"keys",value:function(){return[this.key]}},{key:"negate",value:function(){return S.create(this.key)}}],[{key:"create",value:function(t){var n=f.get(t);return"boolean"===typeof n?n?_.INSTANCE:m.INSTANCE:new e(t)}}]),e}(),b=function(){function e(t,n){(0,s.Z)(this,e),this.key=t,this.value=n,this.type=4}return(0,u.Z)(e,[{key:"cmp",value:function(e){return e.type!==this.type?this.type-e.type:Z(this.key,this.value,e.key,e.value)}},{key:"equals",value:function(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}},{key:"evaluate",value:function(e){return e.getValue(this.key)==this.value}},{key:"serialize",value:function(){return"".concat(this.key," == '").concat(this.value,"'")}},{key:"keys",value:function(){return[this.key]}},{key:"negate",value:function(){return k.create(this.key,this.value)}}],[{key:"create",value:function(t,n){if("boolean"===typeof n)return n?y.create(t):S.create(t);var i=f.get(t);return"boolean"===typeof i?n===(i?"true":"false")?_.INSTANCE:m.INSTANCE:new e(t,n)}}]),e}(),w=function(){function e(t,n){(0,s.Z)(this,e),this.key=t,this.valueKey=n,this.type=10}return(0,u.Z)(e,[{key:"cmp",value:function(e){return e.type!==this.type?this.type-e.type:Z(this.key,this.valueKey,e.key,e.valueKey)}},{key:"equals",value:function(e){return e.type===this.type&&(this.key===e.key&&this.valueKey===e.valueKey)}},{key:"evaluate",value:function(e){var t=e.getValue(this.valueKey),n=e.getValue(this.key);return Array.isArray(t)?t.indexOf(n)>=0:"string"===typeof n&&"object"===typeof t&&null!==t&&p.call(t,n)}},{key:"serialize",value:function(){return"".concat(this.key," in '").concat(this.valueKey,"'")}},{key:"keys",value:function(){return[this.key,this.valueKey]}},{key:"negate",value:function(){return C.create(this)}}],[{key:"create",value:function(t,n){return new e(t,n)}}]),e}(),C=function(){function e(t){(0,s.Z)(this,e),this._actual=t,this.type=11}return(0,u.Z)(e,[{key:"cmp",value:function(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}},{key:"equals",value:function(e){return e.type===this.type&&this._actual.equals(e._actual)}},{key:"evaluate",value:function(e){return!this._actual.evaluate(e)}},{key:"serialize",value:function(){throw new Error("Method not implemented.")}},{key:"keys",value:function(){return this._actual.keys()}},{key:"negate",value:function(){return this._actual}}],[{key:"create",value:function(t){return new e(t)}}]),e}(),k=function(){function e(t,n){(0,s.Z)(this,e),this.key=t,this.value=n,this.type=5}return(0,u.Z)(e,[{key:"cmp",value:function(e){return e.type!==this.type?this.type-e.type:Z(this.key,this.value,e.key,e.value)}},{key:"equals",value:function(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}},{key:"evaluate",value:function(e){return e.getValue(this.key)!=this.value}},{key:"serialize",value:function(){return"".concat(this.key," != '").concat(this.value,"'")}},{key:"keys",value:function(){return[this.key]}},{key:"negate",value:function(){return b.create(this.key,this.value)}}],[{key:"create",value:function(t,n){if("boolean"===typeof n)return n?S.create(t):y.create(t);var i=f.get(t);return"boolean"===typeof i?n===(i?"true":"false")?m.INSTANCE:_.INSTANCE:new e(t,n)}}]),e}(),S=function(){function e(t){(0,s.Z)(this,e),this.key=t,this.type=3}return(0,u.Z)(e,[{key:"cmp",value:function(e){return e.type!==this.type?this.type-e.type:P(this.key,e.key)}},{key:"equals",value:function(e){return e.type===this.type&&this.key===e.key}},{key:"evaluate",value:function(e){return!e.getValue(this.key)}},{key:"serialize",value:function(){return"!".concat(this.key)}},{key:"keys",value:function(){return[this.key]}},{key:"negate",value:function(){return y.create(this.key)}}],[{key:"create",value:function(t){var n=f.get(t);return"boolean"===typeof n?n?m.INSTANCE:_.INSTANCE:new e(t)}}]),e}(),x=function(){function e(t,n){(0,s.Z)(this,e),this.key=t,this.value=n,this.type=12}return(0,u.Z)(e,[{key:"cmp",value:function(e){return e.type!==this.type?this.type-e.type:Z(this.key,this.value,e.key,e.value)}},{key:"equals",value:function(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}},{key:"evaluate",value:function(e){return parseFloat(e.getValue(this.key))>parseFloat(this.value)}},{key:"serialize",value:function(){return"".concat(this.key," > ").concat(this.value)}},{key:"keys",value:function(){return[this.key]}},{key:"negate",value:function(){return D.create(this.key,this.value)}}],[{key:"create",value:function(t,n){return new e(t,n)}}]),e}(),L=function(){function e(t,n){(0,s.Z)(this,e),this.key=t,this.value=n,this.type=13}return(0,u.Z)(e,[{key:"cmp",value:function(e){return e.type!==this.type?this.type-e.type:Z(this.key,this.value,e.key,e.value)}},{key:"equals",value:function(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}},{key:"evaluate",value:function(e){return parseFloat(e.getValue(this.key))>=parseFloat(this.value)}},{key:"serialize",value:function(){return"".concat(this.key," >= ").concat(this.value)}},{key:"keys",value:function(){return[this.key]}},{key:"negate",value:function(){return E.create(this.key,this.value)}}],[{key:"create",value:function(t,n){return new e(t,n)}}]),e}(),E=function(){function e(t,n){(0,s.Z)(this,e),this.key=t,this.value=n,this.type=14}return(0,u.Z)(e,[{key:"cmp",value:function(e){return e.type!==this.type?this.type-e.type:Z(this.key,this.value,e.key,e.value)}},{key:"equals",value:function(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}},{key:"evaluate",value:function(e){return parseFloat(e.getValue(this.key))<parseFloat(this.value)}},{key:"serialize",value:function(){return"".concat(this.key," < ").concat(this.value)}},{key:"keys",value:function(){return[this.key]}},{key:"negate",value:function(){return L.create(this.key,this.value)}}],[{key:"create",value:function(t,n){return new e(t,n)}}]),e}(),D=function(){function e(t,n){(0,s.Z)(this,e),this.key=t,this.value=n,this.type=15}return(0,u.Z)(e,[{key:"cmp",value:function(e){return e.type!==this.type?this.type-e.type:Z(this.key,this.value,e.key,e.value)}},{key:"equals",value:function(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}},{key:"evaluate",value:function(e){return parseFloat(e.getValue(this.key))<=parseFloat(this.value)}},{key:"serialize",value:function(){return"".concat(this.key," <= ").concat(this.value)}},{key:"keys",value:function(){return[this.key]}},{key:"negate",value:function(){return x.create(this.key,this.value)}}],[{key:"create",value:function(t,n){return new e(t,n)}}]),e}(),N=function(){function e(t,n){(0,s.Z)(this,e),this.key=t,this.regexp=n,this.type=7}return(0,u.Z)(e,[{key:"cmp",value:function(e){if(e.type!==this.type)return this.type-e.type;if(this.key<e.key)return-1;if(this.key>e.key)return 1;var t=this.regexp?this.regexp.source:"",n=e.regexp?e.regexp.source:"";return t<n?-1:t>n?1:0}},{key:"equals",value:function(e){if(e.type===this.type){var t=this.regexp?this.regexp.source:"",n=e.regexp?e.regexp.source:"";return this.key===e.key&&t===n}return!1}},{key:"evaluate",value:function(e){var t=e.getValue(this.key);return!!this.regexp&&this.regexp.test(t)}},{key:"serialize",value:function(){var e=this.regexp?"/".concat(this.regexp.source,"/").concat(this.regexp.ignoreCase?"i":""):"/invalid/";return"".concat(this.key," =~ ").concat(e)}},{key:"keys",value:function(){return[this.key]}},{key:"negate",value:function(){return M.create(this)}}],[{key:"create",value:function(t,n){return new e(t,n)}}]),e}(),M=function(){function e(t){(0,s.Z)(this,e),this._actual=t,this.type=8}return(0,u.Z)(e,[{key:"cmp",value:function(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}},{key:"equals",value:function(e){return e.type===this.type&&this._actual.equals(e._actual)}},{key:"evaluate",value:function(e){return!this._actual.evaluate(e)}},{key:"serialize",value:function(){throw new Error("Method not implemented.")}},{key:"keys",value:function(){return this._actual.keys()}},{key:"negate",value:function(){return this._actual}}],[{key:"create",value:function(t){return new e(t)}}]),e}(),T=function(){function e(t){(0,s.Z)(this,e),this.expr=t,this.type=6}return(0,u.Z)(e,[{key:"cmp",value:function(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(var t=0,n=this.expr.length;t<n;t++){var i=v(this.expr[t],e.expr[t]);if(0!==i)return i}return 0}},{key:"equals",value:function(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(var t=0,n=this.expr.length;t<n;t++)if(!this.expr[t].equals(e.expr[t]))return!1;return!0}return!1}},{key:"evaluate",value:function(e){for(var t=0,n=this.expr.length;t<n;t++)if(!this.expr[t].evaluate(e))return!1;return!0}},{key:"serialize",value:function(){return this.expr.map((function(e){return e.serialize()})).join(" && ")}},{key:"keys",value:function(){var e,t=[],n=(0,a.Z)(this.expr);try{for(n.s();!(e=n.n()).done;){var i=e.value;t.push.apply(t,(0,o.Z)(i.keys()))}}catch(r){n.e(r)}finally{n.f()}return t}},{key:"negate",value:function(){var e,t=[],n=(0,a.Z)(this.expr);try{for(n.s();!(e=n.n()).done;){var i=e.value;t.push(i.negate())}}catch(r){n.e(r)}finally{n.f()}return I.create(t)}}],[{key:"create",value:function(t){return e._normalizeArr(t)}},{key:"_normalizeArr",value:function(t){var n,i=[],r=!1,s=(0,a.Z)(t);try{for(s.s();!(n=s.n()).done;){var u=n.value;if(u)if(1!==u.type){if(0===u.type)return m.INSTANCE;6!==u.type?i.push(u):i.push.apply(i,(0,o.Z)(u.expr))}else r=!0}}catch(c){s.e(c)}finally{s.f()}if(0===i.length&&r)return _.INSTANCE;if(0!==i.length){if(1===i.length)return i[0];i.sort(v);for(var l=function(){var t=i[i.length-1];if(9!==t.type)return"break";i.pop();var n=i.pop(),r=I.create(t.expr.map((function(t){return e.create([t,n])})));r&&(i.push(r),i.sort(v))};i.length>1;){if("break"===l())break}return 1===i.length?i[0]:new e(i)}}}]),e}(),I=function(){function e(t){(0,s.Z)(this,e),this.expr=t,this.type=9}return(0,u.Z)(e,[{key:"cmp",value:function(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(var t=0,n=this.expr.length;t<n;t++){var i=v(this.expr[t],e.expr[t]);if(0!==i)return i}return 0}},{key:"equals",value:function(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(var t=0,n=this.expr.length;t<n;t++)if(!this.expr[t].equals(e.expr[t]))return!1;return!0}return!1}},{key:"evaluate",value:function(e){for(var t=0,n=this.expr.length;t<n;t++)if(this.expr[t].evaluate(e))return!0;return!1}},{key:"serialize",value:function(){return this.expr.map((function(e){return e.serialize()})).join(" || ")}},{key:"keys",value:function(){var e,t=[],n=(0,a.Z)(this.expr);try{for(n.s();!(e=n.n()).done;){var i=e.value;t.push.apply(t,(0,o.Z)(i.keys()))}}catch(r){n.e(r)}finally{n.f()}return t}},{key:"negate",value:function(){var e,t=[],n=(0,a.Z)(this.expr);try{for(n.s();!(e=n.n()).done;){var i=e.value;t.push(i.negate())}}catch(v){n.e(v)}finally{n.f()}for(var r=function(e){return 9===e.type?e.expr:[e]};t.length>1;){var o,s=t.shift(),u=t.shift(),l=[],c=(0,a.Z)(r(s));try{for(c.s();!(o=c.n()).done;){var d,h=o.value,f=(0,a.Z)(r(u));try{for(f.s();!(d=f.n()).done;){var p=d.value;l.push(g.and(h,p))}}catch(v){f.e(v)}finally{f.f()}}}catch(v){c.e(v)}finally{c.f()}t.unshift(g.or.apply(g,l))}return t[0]}}],[{key:"create",value:function(t){var n=e._normalizeArr(t);if(0!==n.length)return 1===n.length?n[0]:new e(n)}},{key:"_normalizeArr",value:function(e){var t=[],n=!1;if(e){for(var i=0,r=e.length;i<r;i++){var o=e[i];if(o)if(0!==o.type){if(1===o.type)return[_.INSTANCE];9!==o.type?t.push(o):t=t.concat(o.expr)}else n=!0}if(0===t.length&&n)return[m.INSTANCE];t.sort(v)}return t}}]),e}(),O=function(e){(0,i.Z)(n,e);var t=(0,r.Z)(n);function n(e,i,r){var o;return(0,s.Z)(this,n),(o=t.call(this,e))._defaultValue=i,"object"===typeof r?n._info.push(Object.assign(Object.assign({},r),{key:e})):!0!==r&&n._info.push({key:e,description:r,type:null!==i&&void 0!==i?typeof i:void 0}),o}return(0,u.Z)(n,[{key:"bindTo",value:function(e){return e.createKey(this.key,this._defaultValue)}},{key:"getValue",value:function(e){return e.getContextKeyValue(this.key)}},{key:"toNegated",value:function(){return g.not(this.key)}},{key:"isEqualTo",value:function(e){return g.equals(this.key,e)}}],[{key:"all",value:function(){return n._info.values()}}]),n}(y);O._info=[];var A=(0,c.yh)("contextKeyService"),R="setContext";function P(e,t){return e<t?-1:e>t?1:0}function Z(e,t,n,i){return e<n?-1:e>n?1:t<i?-1:t>i?1:0}},49357:function(e,t,n){"use strict";n.d(t,{c:function(){return a},d:function(){return s}});var i=n(56345),r=n(18948),o=n(30487),a=new r.uy("isWindows",o.ED,(0,i.N)("isWindows","Whether the operating system is Windows")),s="inputFocus"},98989:function(e,t,n){"use strict";n.d(t,{i:function(){return o},u:function(){return r}});var i=n(84596),r=(0,i.yh)("contextViewService"),o=(0,i.yh)("contextMenuService")},34782:function(e,t,n){"use strict";n.d(t,{S:function(){return i}});var i=(0,n(84596).yh)("dialogService")},52144:function(e,t,n){"use strict";n.d(t,{M:function(){return o}});var i=n(43144),r=n(15671),o=(0,i.Z)((function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,r.Z)(this,e),this.ctor=t,this.staticArguments=n,this.supportsDelayedInstantiation=i}))},77863:function(e,t,n){"use strict";n.d(t,{d:function(){return a},z:function(){return o}});var i=n(52144),r=[];function o(e,t,n){t instanceof i.M||(t=new i.M(t,[],n)),r.push([e,t])}function a(){return r}},84596:function(e,t,n){"use strict";var i;n.d(t,{I8:function(){return i},TG:function(){return r},jt:function(){return s},yh:function(){return a}}),function(e){e.serviceIds=new Map,e.DI_TARGET="$di$target",e.DI_DEPENDENCIES="$di$dependencies",e.getServiceDependencies=function(t){return t[e.DI_DEPENDENCIES]||[]}}(i||(i={}));var r=a("instantiationService");function o(e,t,n,r){t[i.DI_TARGET]===t?t[i.DI_DEPENDENCIES].push({id:e,index:n,optional:r}):(t[i.DI_DEPENDENCIES]=[{id:e,index:n,optional:r}],t[i.DI_TARGET]=t)}function a(e){if(i.serviceIds.has(e))return i.serviceIds.get(e);var t=function e(t,n,i){if(3!==arguments.length)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");o(e,t,i,!1)};return t.toString=function(){return e},i.serviceIds.set(e,t),t}function s(e){return function(t,n,i){if(3!==arguments.length)throw new Error("@optional-decorator can only be used to decorate a parameter");o(e,t,i,!0)}}},41001:function(e,t,n){"use strict";n.d(t,{y:function(){return a}});var i=n(29439),r=n(15671),o=n(43144),a=function(){function e(){(0,r.Z)(this,e),this._entries=new Map;for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];for(var a=0,s=n;a<s.length;a++){var u=(0,i.Z)(s[a],2),l=u[0],c=u[1];this.set(l,c)}}return(0,o.Z)(e,[{key:"set",value:function(e,t){var n=this._entries.get(e);return this._entries.set(e,t),n}},{key:"has",value:function(e){return this._entries.has(e)}},{key:"get",value:function(e){return this._entries.get(e)}}]),e}()},27930:function(e,t,n){"use strict";n.d(t,{I:function(){return s}});var i=n(15671),r=n(43144),o=n(38774),a=n(11732),s={JSONContribution:"base.contributions.json"};var u=new(function(){function e(){(0,i.Z)(this,e),this._onDidChangeSchema=new a.Q5,this.schemasById={}}return(0,r.Z)(e,[{key:"registerSchema",value:function(e,t){var n;this.schemasById[(n=e,n.length>0&&"#"===n.charAt(n.length-1)?n.substring(0,n.length-1):n)]=t,this._onDidChangeSchema.fire(e)}},{key:"notifySchemaChanged",value:function(e){this._onDidChangeSchema.fire(e)}}]),e}());o.B.add(s.JSONContribution,u)},97963:function(e,t,n){"use strict";n.d(t,{d:function(){return i}});var i=(0,n(84596).yh)("keybindingService")},51519:function(e,t,n){"use strict";n.d(t,{W:function(){return l}});var i=n(15671),r=n(43144),o=n(38792),a=n(30487),s=n(72611),u=n(38774),l=new(function(){function e(){(0,i.Z)(this,e),this._coreKeybindings=[],this._extensionKeybindings=[],this._cachedMergedKeybindings=null}return(0,r.Z)(e,[{key:"registerKeybindingRule",value:function(t){var n=e.bindToCurrentPlatform(t);if(n&&n.primary){var i=(0,o.gm)(n.primary,a.OS);i&&this._registerDefaultKeybinding(i,t.id,t.args,t.weight,0,t.when)}if(n&&Array.isArray(n.secondary))for(var r=0,s=n.secondary.length;r<s;r++){var u=n.secondary[r],l=(0,o.gm)(u,a.OS);l&&this._registerDefaultKeybinding(l,t.id,t.args,t.weight,-r-1,t.when)}}},{key:"registerCommandAndKeybindingRule",value:function(e){this.registerKeybindingRule(e),s.P.registerCommand(e)}},{key:"_assertNoCtrlAlt",value:function(t,n){t.ctrlKey&&t.altKey&&!t.metaKey&&e._mightProduceChar(t.keyCode)&&console.warn("Ctrl+Alt+ keybindings should not be used by default under Windows. Offender: ",t," for ",n)}},{key:"_registerDefaultKeybinding",value:function(e,t,n,i,r,o){1===a.OS&&this._assertNoCtrlAlt(e.parts[0],t),this._coreKeybindings.push({keybinding:e,command:t,commandArgs:n,when:o,weight1:i,weight2:r,extensionId:null,isBuiltinExtension:!1}),this._cachedMergedKeybindings=null}},{key:"getDefaultKeybindings",value:function(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=[].concat(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(c)),this._cachedMergedKeybindings.slice(0)}}],[{key:"bindToCurrentPlatform",value:function(e){if(1===a.OS){if(e&&e.win)return e.win}else if(2===a.OS){if(e&&e.mac)return e.mac}else if(e&&e.linux)return e.linux;return e}},{key:"_mightProduceChar",value:function(e){return e>=21&&e<=30||(e>=31&&e<=56||(80===e||81===e||82===e||83===e||84===e||85===e||86===e||110===e||111===e||87===e||88===e||89===e||90===e||91===e||92===e))}}]),e}());function c(e,t){return e.weight1!==t.weight1?e.weight1-t.weight1:e.command<t.command?-1:e.command>t.command?1:e.weight2-t.weight2}u.B.add("platform.keybindingsRegistry",l)},5399:function(e,t,n){"use strict";n.d(t,{e:function(){return i}});var i=(0,n(84596).yh)("labelService")},2285:function(e,t,n){"use strict";n.d(t,{Lw:function(){return dt},XN:function(){return ht},ls:function(){return qt},ev:function(){return Zt},CQ:function(){return gt}});var i=n(4942),r=n(29439),o=n(97326),a=n(11752),s=n(61120),u=n(60136),l=n(43668),c=n(15671),d=n(43144),h=n(84540),f=(n(43185),n(81626)),p=n(49396),g=n(92814),v=n(11732),m=n(66526),_=function(){function e(t,n){(0,c.Z)(this,e),this.renderer=t,this.modelProvider=n}return(0,d.Z)(e,[{key:"templateId",get:function(){return this.renderer.templateId}},{key:"renderTemplate",value:function(e){return{data:this.renderer.renderTemplate(e),disposable:f.JT.None}}},{key:"renderElement",value:function(e,t,n,i){var r=this;if(n.disposable&&n.disposable.dispose(),n.data){var o=this.modelProvider();if(o.isResolved(e))return this.renderer.renderElement(o.get(e),e,n.data,i);var a=new m.A,s=o.resolve(e,a.token);n.disposable={dispose:function(){return a.cancel()}},this.renderer.renderPlaceholder(e,n.data),s.then((function(t){return r.renderer.renderElement(t,e,n.data,i)}))}}},{key:"disposeTemplate",value:function(e){e.disposable&&(e.disposable.dispose(),e.disposable=void 0),e.data&&(this.renderer.disposeTemplate(e.data),e.data=void 0)}}]),e}(),y=function(){function e(t,n){(0,c.Z)(this,e),this.modelProvider=t,this.accessibilityProvider=n}return(0,d.Z)(e,[{key:"getWidgetAriaLabel",value:function(){return this.accessibilityProvider.getWidgetAriaLabel()}},{key:"getAriaLabel",value:function(e){var t=this.modelProvider();return t.isResolved(e)?this.accessibilityProvider.getAriaLabel(t.get(e)):null}}]),e}();var b,w=function(){function e(t,n,i,r){var o=this,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};(0,c.Z)(this,e);var s=function(){return o.model},u=r.map((function(e){return new _(e,s)}));this.list=new g.aV(t,n,i,u,function(e,t){return Object.assign(Object.assign({},t),{accessibilityProvider:t.accessibilityProvider&&new y(e,t.accessibilityProvider)})}(s,a))}return(0,d.Z)(e,[{key:"updateOptions",value:function(e){this.list.updateOptions(e)}},{key:"getHTMLElement",value:function(){return this.list.getHTMLElement()}},{key:"onDidFocus",get:function(){return this.list.onDidFocus}},{key:"onDidDispose",get:function(){return this.list.onDidDispose}},{key:"onMouseDblClick",get:function(){var e=this;return v.ju.map(this.list.onMouseDblClick,(function(t){var n=t.element,i=t.index,r=t.browserEvent;return{element:void 0===n?void 0:e._model.get(n),index:i,browserEvent:r}}))}},{key:"onPointer",get:function(){var e=this;return v.ju.map(this.list.onPointer,(function(t){var n=t.element,i=t.index,r=t.browserEvent;return{element:void 0===n?void 0:e._model.get(n),index:i,browserEvent:r}}))}},{key:"onDidChangeSelection",get:function(){var e=this;return v.ju.map(this.list.onDidChangeSelection,(function(t){var n=t.elements,i=t.indexes,r=t.browserEvent;return{elements:n.map((function(t){return e._model.get(t)})),indexes:i,browserEvent:r}}))}},{key:"model",get:function(){return this._model},set:function(e){this._model=e,this.list.splice(0,this.list.length,(0,p.w6)(e.length))}},{key:"getFocus",value:function(){return this.list.getFocus()}},{key:"getSelection",value:function(){return this.list.getSelection()}},{key:"getSelectedElements",value:function(){var e=this;return this.getSelection().map((function(t){return e.model.get(t)}))}},{key:"style",value:function(e){this.list.style(e)}},{key:"dispose",value:function(){this.list.dispose()}}]),e}(),C=n(56345),k=n(98921),S=n(72885),x=n(18948),L=n(84596),E=n(97963),D=n(38774),N=n(35215),M=n(70182),T=n(49357),I=n(98900),O=n(37762),A=n(93433),R=n(31737),P=n(28664);!function(e){e[e.Unknown=0]="Unknown",e[e.Twistie=1]="Twistie",e[e.Element=2]="Element"}(b||(b={}));var Z=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){return(0,c.Z)(this,n),t.call(this,"TreeError [".concat(e,"] ").concat(i))}return(0,d.Z)(n)}((0,P.Z)(Error)),F=function(){function e(t){(0,c.Z)(this,e),this.fn=t,this._map=new WeakMap}return(0,d.Z)(e,[{key:"map",value:function(e){var t=this._map.get(e);return t||(t=this.fn(e),this._map.set(e,t)),t}}]),e}(),j=n(53042),H=n(6709),B=n(61680),z=n(50482),W=n(84506),V=n(95676);function Y(e){return"object"===typeof e&&"visibility"in e&&"data"in e}function U(e){switch(e){case!0:return 1;case!1:return 0;default:return e}}function K(e){return"boolean"===typeof e.collapsible}var q=function(){function e(t,n,i){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};(0,c.Z)(this,e),this.user=t,this.list=n,this.rootRef=[],this.eventBufferer=new v.E7,this._onDidChangeCollapseState=new v.Q5,this.onDidChangeCollapseState=this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event),this._onDidChangeRenderNodeCount=new v.Q5,this.onDidChangeRenderNodeCount=this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event),this._onDidSplice=new v.Q5,this.onDidSplice=this._onDidSplice.event,this.collapseByDefault="undefined"!==typeof r.collapseByDefault&&r.collapseByDefault,this.filter=r.filter,this.autoExpandSingleChildren="undefined"!==typeof r.autoExpandSingleChildren&&r.autoExpandSingleChildren,this.root={parent:void 0,element:i,children:[],depth:0,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:!1,collapsed:!1,renderNodeCount:0,visibility:1,visible:!0,filterData:void 0}}return(0,d.Z)(e,[{key:"splice",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:I.$.empty(),i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(0===e.length)throw new Z(this.user,"Invalid tree location");i.diffIdentityProvider?this.spliceSmart(i.diffIdentityProvider,e,t,n,i):this.spliceSimple(e,t,n,i)}},{key:"spliceSmart",value:function(e,t,n,i,r,o){var a,s=this;void 0===i&&(i=I.$.empty()),void 0===o&&(o=null!==(a=r.diffDepth)&&void 0!==a?a:0);var u=this.getParentNodeWithListIndex(t).parentNode,l=(0,A.Z)(i),c=t[t.length-1],d=new V.Hs({getElements:function(){return u.children.map((function(t){return e.getId(t.element).toString()}))}},{getElements:function(){return[].concat((0,A.Z)(u.children.slice(0,c)),(0,A.Z)(l),(0,A.Z)(u.children.slice(c+n))).map((function(t){return e.getId(t.element).toString()}))}}).ComputeDiff(!1);if(d.quitEarly)return this.spliceSimple(t,n,l,r);var h,f=t.slice(0,-1),p=function(t,n,i){if(o>0)for(var a=0;a<i;a++)t--,n--,s.spliceSmart(e,[].concat((0,A.Z)(f),[t,0]),Number.MAX_SAFE_INTEGER,l[n].children,r,o-1)},g=Math.min(u.children.length,c+n),v=l.length,m=(0,O.Z)(d.changes.sort((function(e,t){return t.originalStart-e.originalStart})));try{for(m.s();!(h=m.n()).done;){var _=h.value;p(g,v,g-(_.originalStart+_.originalLength)),g=_.originalStart,v=_.modifiedStart-c,this.spliceSimple([].concat((0,A.Z)(f),[g]),_.originalLength,I.$.slice(l,v,v+_.modifiedLength),r)}}catch(y){m.e(y)}finally{m.f()}p(g,v,g)}},{key:"spliceSimple",value:function(e,t){for(var n,i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:I.$.empty(),o=arguments.length>3?arguments[3]:void 0,a=o.onDidCreateNode,s=o.onDidDeleteNode,u=this.getParentNodeWithListIndex(e),l=u.parentNode,c=u.listIndex,d=u.revealed,h=u.visible,f=[],p=I.$.map(r,(function(e){return i.createTreeNode(e,l,l.visible?1:0,d,f,a)})),g=e[e.length-1],v=l.children.length>0,m=0,_=g;_>=0&&_<l.children.length;_--){var y=l.children[_];if(y.visible){m=y.visibleChildIndex;break}}var b,w=[],C=0,k=0,S=(0,O.Z)(p);try{for(S.s();!(b=S.n()).done;){var x=b.value;w.push(x),k+=x.renderNodeCount,x.visible&&(x.visibleChildIndex=m+C++)}}catch(Z){S.e(Z)}finally{S.f()}var L,E=(n=l.children).splice.apply(n,[g,t].concat(w)),D=0,N=(0,O.Z)(E);try{for(N.s();!(L=N.n()).done;){L.value.visible&&D++}}catch(Z){N.e(Z)}finally{N.f()}if(0!==D)for(var M=g+w.length;M<l.children.length;M++){var T=l.children[M];T.visible&&(T.visibleChildIndex-=D)}if(l.visibleChildrenCount+=C-D,d&&h){var A=E.reduce((function(e,t){return e+(t.visible?t.renderNodeCount:0)}),0);this._updateAncestorsRenderNodeCount(l,k-A),this.list.splice(c,A,f)}if(E.length>0&&s){E.forEach((function e(t){s(t),t.children.forEach(e)}))}var R=l.children.length>0;v!==R&&this.setCollapsible(e.slice(0,-1),R),this._onDidSplice.fire({insertedNodes:w,deletedNodes:E});for(var P=l;P;){if(2===P.visibility){this.refilter();break}P=P.parent}}},{key:"rerender",value:function(e){if(0===e.length)throw new Z(this.user,"Invalid tree location");var t=this.getTreeNodeWithListIndex(e),n=t.node,i=t.listIndex,r=t.revealed;n.visible&&r&&this.list.splice(i,1,[n])}},{key:"has",value:function(e){return this.hasTreeNode(e)}},{key:"getListIndex",value:function(e){var t=this.getTreeNodeWithListIndex(e),n=t.listIndex,i=t.visible,r=t.revealed;return i&&r?n:-1}},{key:"getListRenderCount",value:function(e){return this.getTreeNode(e).renderNodeCount}},{key:"isCollapsible",value:function(e){return this.getTreeNode(e).collapsible}},{key:"setCollapsible",value:function(e,t){var n=this,i=this.getTreeNode(e);"undefined"===typeof t&&(t=!i.collapsible);var r={collapsible:t};return this.eventBufferer.bufferEvents((function(){return n._setCollapseState(e,r)}))}},{key:"isCollapsed",value:function(e){return this.getTreeNode(e).collapsed}},{key:"setCollapsed",value:function(e,t,n){var i=this,r=this.getTreeNode(e);"undefined"===typeof t&&(t=!r.collapsed);var o={collapsed:t,recursive:n||!1};return this.eventBufferer.bufferEvents((function(){return i._setCollapseState(e,o)}))}},{key:"_setCollapseState",value:function(e,t){var n=this.getTreeNodeWithListIndex(e),i=n.node,r=n.listIndex,o=n.revealed,a=this._setListNodeCollapseState(i,r,o,t);if(i!==this.root&&this.autoExpandSingleChildren&&a&&!K(t)&&i.collapsible&&!i.collapsed&&!t.recursive){for(var s=-1,u=0;u<i.children.length;u++){if(i.children[u].visible){if(s>-1){s=-1;break}s=u}}s>-1&&this._setCollapseState([].concat((0,A.Z)(e),[s]),t)}return a}},{key:"_setListNodeCollapseState",value:function(e,t,n,i){var r=this._setNodeCollapseState(e,i,!1);if(!n||!e.visible||!r)return r;var o=e.renderNodeCount,a=this.updateNodeAfterCollapseChange(e),s=o-(-1===t?0:1);return this.list.splice(t+1,s,a.slice(1)),r}},{key:"_setNodeCollapseState",value:function(e,t,n){var i;if(e===this.root?i=!1:(K(t)?(i=e.collapsible!==t.collapsible,e.collapsible=t.collapsible):e.collapsible?(i=e.collapsed!==t.collapsed,e.collapsed=t.collapsed):i=!1,i&&this._onDidChangeCollapseState.fire({node:e,deep:n})),!K(t)&&t.recursive){var r,o=(0,O.Z)(e.children);try{for(o.s();!(r=o.n()).done;){var a=r.value;i=this._setNodeCollapseState(a,t,!0)||i}}catch(s){o.e(s)}finally{o.f()}}return i}},{key:"expandTo",value:function(e){var t=this;this.eventBufferer.bufferEvents((function(){for(var n=t.getTreeNode(e);n.parent;)n=n.parent,e=e.slice(0,e.length-1),n.collapsed&&t._setCollapseState(e,{collapsed:!1,recursive:!1})}))}},{key:"refilter",value:function(){var e=this.root.renderNodeCount,t=this.updateNodeAfterFilterChange(this.root);this.list.splice(0,e,t)}},{key:"createTreeNode",value:function(e,t,n,i,r,o){var a=this,s={parent:t,element:e.element,children:[],depth:t.depth+1,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:"boolean"===typeof e.collapsible?e.collapsible:"undefined"!==typeof e.collapsed,collapsed:"undefined"===typeof e.collapsed?this.collapseByDefault:e.collapsed,renderNodeCount:1,visibility:1,visible:!0,filterData:void 0},u=this._filterNode(s,n);s.visibility=u,i&&r.push(s);var l,c=e.children||I.$.empty(),d=i&&0!==u&&!s.collapsed,h=I.$.map(c,(function(e){return a.createTreeNode(e,s,u,d,r,o)})),f=0,p=1,g=(0,O.Z)(h);try{for(g.s();!(l=g.n()).done;){var v=l.value;s.children.push(v),p+=v.renderNodeCount,v.visible&&(v.visibleChildIndex=f++)}}catch(m){g.e(m)}finally{g.f()}return s.collapsible=s.collapsible||s.children.length>0,s.visibleChildrenCount=f,s.visible=2===u?f>0:1===u,s.visible?s.collapsed||(s.renderNodeCount=p):(s.renderNodeCount=0,i&&r.pop()),o&&o(s),s}},{key:"updateNodeAfterCollapseChange",value:function(e){var t=e.renderNodeCount,n=[];return this._updateNodeAfterCollapseChange(e,n),this._updateAncestorsRenderNodeCount(e.parent,n.length-t),n}},{key:"_updateNodeAfterCollapseChange",value:function(e,t){if(!1===e.visible)return 0;if(t.push(e),e.renderNodeCount=1,!e.collapsed){var n,i=(0,O.Z)(e.children);try{for(i.s();!(n=i.n()).done;){var r=n.value;e.renderNodeCount+=this._updateNodeAfterCollapseChange(r,t)}}catch(o){i.e(o)}finally{i.f()}}return this._onDidChangeRenderNodeCount.fire(e),e.renderNodeCount}},{key:"updateNodeAfterFilterChange",value:function(e){var t=e.renderNodeCount,n=[];return this._updateNodeAfterFilterChange(e,e.visible?1:0,n),this._updateAncestorsRenderNodeCount(e.parent,n.length-t),n}},{key:"_updateNodeAfterFilterChange",value:function(e,t,n){var i,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(e!==this.root){if(0===(i=this._filterNode(e,t)))return e.visible=!1,e.renderNodeCount=0,!1;r&&n.push(e)}var o=n.length;e.renderNodeCount=e===this.root?0:1;var a=!1;if(e.collapsed&&0===i)e.visibleChildrenCount=0;else{var s,u=0,l=(0,O.Z)(e.children);try{for(l.s();!(s=l.n()).done;){var c=s.value;a=this._updateNodeAfterFilterChange(c,i,n,r&&!e.collapsed)||a,c.visible&&(c.visibleChildIndex=u++)}}catch(d){l.e(d)}finally{l.f()}e.visibleChildrenCount=u}return e!==this.root&&(e.visible=2===i?a:1===i),e.visible?e.collapsed||(e.renderNodeCount+=n.length-o):(e.renderNodeCount=0,r&&n.pop()),this._onDidChangeRenderNodeCount.fire(e),e.visible}},{key:"_updateAncestorsRenderNodeCount",value:function(e,t){if(0!==t)for(;e;)e.renderNodeCount+=t,this._onDidChangeRenderNodeCount.fire(e),e=e.parent}},{key:"_filterNode",value:function(e,t){var n=this.filter?this.filter.filter(e.element,t):1;return"boolean"===typeof n?(e.filterData=void 0,n?1:0):Y(n)?(e.filterData=n.data,U(n.visibility)):(e.filterData=void 0,U(n))}},{key:"hasTreeNode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.root;if(!e||0===e.length)return!0;var n=(0,W.Z)(e),i=n[0],r=n.slice(1);return!(i<0||i>t.children.length)&&this.hasTreeNode(r,t.children[i])}},{key:"getTreeNode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.root;if(!e||0===e.length)return t;var n=(0,W.Z)(e),i=n[0],r=n.slice(1);if(i<0||i>t.children.length)throw new Z(this.user,"Invalid tree location");return this.getTreeNode(r,t.children[i])}},{key:"getTreeNodeWithListIndex",value:function(e){if(0===e.length)return{node:this.root,listIndex:-1,revealed:!0,visible:!1};var t=this.getParentNodeWithListIndex(e),n=t.parentNode,i=t.listIndex,r=t.revealed,o=t.visible,a=e[e.length-1];if(a<0||a>n.children.length)throw new Z(this.user,"Invalid tree location");var s=n.children[a];return{node:s,listIndex:i,revealed:r,visible:o&&s.visible}}},{key:"getParentNodeWithListIndex",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.root,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=(0,W.Z)(e),a=o[0],s=o.slice(1);if(a<0||a>t.children.length)throw new Z(this.user,"Invalid tree location");for(var u=0;u<a;u++)n+=t.children[u].renderNodeCount;return i=i&&!t.collapsed,r=r&&t.visible,0===s.length?{parentNode:t,listIndex:n,revealed:i,visible:r}:this.getParentNodeWithListIndex(s,t.children[a],n+1,i,r)}},{key:"getNode",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return this.getTreeNode(e)}},{key:"getNodeLocation",value:function(e){for(var t=[],n=e;n.parent;)t.push(n.parent.children.indexOf(n)),n=n.parent;return t.reverse()}},{key:"getParentNodeLocation",value:function(e){return 0===e.length?void 0:1===e.length?[]:(0,p.JH)(e)[0]}}]),e}(),G=n(27997),$=n(30487),Q=n(5265),X=n(15723),J=n(4354),ee=(0,J.CM)("tree-item-expanded",J.lA.chevronDown),te=(0,J.CM)("tree-filter-on-type-on",J.lA.listFilter),ne=(0,J.CM)("tree-filter-on-type-off",J.lA.listSelection),ie=(0,J.CM)("tree-filter-clear",J.lA.close),re=(0,J.CM)("tree-item-loading",J.lA.loading),oe=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this,e.elements.map((function(e){return e.element})))).data=e,i}return(0,d.Z)(n)}(H.kX);function ae(e){return e instanceof H.kX?new oe(e):e}var se=function(){function e(t,n){(0,c.Z)(this,e),this.modelProvider=t,this.dnd=n,this.autoExpandDisposable=f.JT.None}return(0,d.Z)(e,[{key:"getDragURI",value:function(e){return this.dnd.getDragURI(e.element)}},{key:"getDragLabel",value:function(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map((function(e){return e.element})),t)}},{key:"onDragStart",value:function(e,t){this.dnd.onDragStart&&this.dnd.onDragStart(ae(e),t)}},{key:"onDragOver",value:function(e,t,n,i){var r=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=this.dnd.onDragOver(ae(e),t&&t.element,n,i),s=this.autoExpandNode!==t;if(s&&(this.autoExpandDisposable.dispose(),this.autoExpandNode=t),"undefined"===typeof t)return a;if(s&&"boolean"!==typeof a&&a.autoExpand&&(this.autoExpandDisposable=(0,G.Vg)((function(){var e=r.modelProvider(),n=e.getNodeLocation(t);e.isCollapsed(n)&&e.setCollapsed(n,!1),r.autoExpandNode=void 0}),500)),"boolean"===typeof a||!a.accept||"undefined"===typeof a.bubble||a.feedback)return o?a:{accept:"boolean"===typeof a?a:a.accept,effect:"boolean"===typeof a?void 0:a.effect,feedback:[n]};if(1===a.bubble){var u=this.modelProvider(),l=u.getNodeLocation(t),c=u.getParentNodeLocation(l),d=u.getNode(c),h=c&&u.getListIndex(c);return this.onDragOver(e,d,h,i,!1)}var f=this.modelProvider(),g=f.getNodeLocation(t),v=f.getListIndex(g),m=f.getListRenderCount(g);return Object.assign(Object.assign({},a),{feedback:(0,p.w6)(v,v+m)})}},{key:"drop",value:function(e,t,n,i){this.autoExpandDisposable.dispose(),this.autoExpandNode=void 0,this.dnd.drop(ae(e),t&&t.element,n,i)}},{key:"onDragEnd",value:function(e){this.dnd.onDragEnd&&this.dnd.onDragEnd(e)}}]),e}();var ue,le=function(){function e(t){(0,c.Z)(this,e),this.delegate=t}return(0,d.Z)(e,[{key:"getHeight",value:function(e){return this.delegate.getHeight(e.element)}},{key:"getTemplateId",value:function(e){return this.delegate.getTemplateId(e.element)}},{key:"hasDynamicHeight",value:function(e){return!!this.delegate.hasDynamicHeight&&this.delegate.hasDynamicHeight(e.element)}},{key:"setDynamicHeight",value:function(e,t){this.delegate.setDynamicHeight&&this.delegate.setDynamicHeight(e.element,t)}}]),e}();!function(e){e.None="none",e.OnHover="onHover",e.Always="always"}(ue||(ue={}));var ce=function(){function e(t){var n=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];(0,c.Z)(this,e),this._elements=i,this.onDidChange=v.ju.forEach(t,(function(e){return n._elements=e}))}return(0,d.Z)(e,[{key:"elements",get:function(){return this._elements}}]),e}(),de=function(){function e(t,n,i,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};(0,c.Z)(this,e),this.renderer=t,this.modelProvider=n,this.activeNodes=r,this.renderedElements=new Map,this.renderedNodes=new Map,this.indent=e.DefaultIndent,this.hideTwistiesOfChildlessElements=!1,this.shouldRenderIndentGuides=!1,this.renderedIndentGuides=new X.r,this.activeIndentNodes=new Set,this.indentGuidesDisposable=f.JT.None,this.disposables=new f.SL,this.templateId=t.templateId,this.updateOptions(o),v.ju.map(i,(function(e){return e.node}))(this.onDidChangeNodeTwistieState,this,this.disposables),t.onDidChangeTwistieState&&t.onDidChangeTwistieState(this.onDidChangeTwistieState,this,this.disposables)}return(0,d.Z)(e,[{key:"updateOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"!==typeof e.indent&&(this.indent=(0,Q.u)(e.indent,0,40)),"undefined"!==typeof e.renderIndentGuides){var t=e.renderIndentGuides!==ue.None;if(t!==this.shouldRenderIndentGuides&&(this.shouldRenderIndentGuides=t,this.indentGuidesDisposable.dispose(),t)){var n=new f.SL;this.activeNodes.onDidChange(this._onDidChangeActiveNodes,this,n),this.indentGuidesDisposable=n,this._onDidChangeActiveNodes(this.activeNodes.elements)}}"undefined"!==typeof e.hideTwistiesOfChildlessElements&&(this.hideTwistiesOfChildlessElements=e.hideTwistiesOfChildlessElements)}},{key:"renderTemplate",value:function(e){var t=(0,h.append)(e,(0,h.$)(".monaco-tl-row")),n=(0,h.append)(t,(0,h.$)(".monaco-tl-indent")),i=(0,h.append)(t,(0,h.$)(".monaco-tl-twistie")),r=(0,h.append)(t,(0,h.$)(".monaco-tl-contents")),o=this.renderer.renderTemplate(r);return{container:e,indent:n,twistie:i,indentGuidesDisposable:f.JT.None,templateData:o}}},{key:"renderElement",value:function(t,n,i,r){"number"===typeof r&&(this.renderedNodes.set(t,{templateData:i,height:r}),this.renderedElements.set(t.element,t));var o=e.DefaultIndent+(t.depth-1)*this.indent;i.twistie.style.paddingLeft="".concat(o,"px"),i.indent.style.width="".concat(o+this.indent-16,"px"),this.renderTwistie(t,i),"number"===typeof r&&this.renderIndentGuides(t,i),this.renderer.renderElement(t,n,i.templateData,r)}},{key:"disposeElement",value:function(e,t,n,i){n.indentGuidesDisposable.dispose(),this.renderer.disposeElement&&this.renderer.disposeElement(e,t,n.templateData,i),"number"===typeof i&&(this.renderedNodes.delete(e),this.renderedElements.delete(e.element))}},{key:"disposeTemplate",value:function(e){this.renderer.disposeTemplate(e.templateData)}},{key:"onDidChangeTwistieState",value:function(e){var t=this.renderedElements.get(e);t&&this.onDidChangeNodeTwistieState(t)}},{key:"onDidChangeNodeTwistieState",value:function(e){var t=this.renderedNodes.get(e);t&&(this.renderTwistie(e,t.templateData),this._onDidChangeActiveNodes(this.activeNodes.elements),this.renderIndentGuides(e,t.templateData))}},{key:"renderTwistie",value:function(e,t){var n;(n=t.twistie.classList).remove.apply(n,(0,A.Z)(ee.classNamesArray));var i=!1;if(this.renderer.renderTwistie&&(i=this.renderer.renderTwistie(e.element,t.twistie)),e.collapsible&&(!this.hideTwistiesOfChildlessElements||e.visibleChildrenCount>0)){var r;if(!i)(r=t.twistie.classList).add.apply(r,(0,A.Z)(ee.classNamesArray));t.twistie.classList.add("collapsible"),t.twistie.classList.toggle("collapsed",e.collapsed)}else t.twistie.classList.remove("collapsible","collapsed");e.collapsible?t.container.setAttribute("aria-expanded",String(!e.collapsed)):t.container.removeAttribute("aria-expanded")}},{key:"renderIndentGuides",value:function(e,t){var n=this;if((0,h.clearNode)(t.indent),t.indentGuidesDisposable.dispose(),this.shouldRenderIndentGuides){for(var i=new f.SL,r=this.modelProvider(),o=e,a=function(){var e=r.getNodeLocation(o),a=r.getParentNodeLocation(e);if(!a)return"break";var s=r.getNode(a),u=(0,h.$)(".indent-guide",{style:"width: ".concat(n.indent,"px")});n.activeIndentNodes.has(s)&&u.classList.add("active"),0===t.indent.childElementCount?t.indent.appendChild(u):t.indent.insertBefore(u,t.indent.firstElementChild),n.renderedIndentGuides.add(s,u),i.add((0,f.OF)((function(){return n.renderedIndentGuides.delete(s,u)}))),o=s};;){if("break"===a())break}t.indentGuidesDisposable=i}}},{key:"_onDidChangeActiveNodes",value:function(e){var t=this;if(this.shouldRenderIndentGuides){var n=new Set,i=this.modelProvider();e.forEach((function(e){var t=i.getNodeLocation(e);try{var r=i.getParentNodeLocation(t);e.collapsible&&e.children.length>0&&!e.collapsed?n.add(e):r&&n.add(i.getNode(r))}catch(o){}})),this.activeIndentNodes.forEach((function(e){n.has(e)||t.renderedIndentGuides.forEach(e,(function(e){return e.classList.remove("active")}))})),n.forEach((function(e){t.activeIndentNodes.has(e)||t.renderedIndentGuides.forEach(e,(function(e){return e.classList.add("active")}))})),this.activeIndentNodes=n}}},{key:"dispose",value:function(){this.renderedNodes.clear(),this.renderedElements.clear(),this.indentGuidesDisposable.dispose(),(0,f.B9)(this.disposables)}}]),e}();de.DefaultIndent=8;var he=function(){function e(t,n,i){(0,c.Z)(this,e),this.tree=t,this.keyboardNavigationLabelProvider=n,this._filter=i,this._totalCount=0,this._matchCount=0,this._pattern="",this._lowercasePattern="",this.disposables=new f.SL,t.onWillRefilter(this.reset,this,this.disposables)}return(0,d.Z)(e,[{key:"totalCount",get:function(){return this._totalCount}},{key:"matchCount",get:function(){return this._matchCount}},{key:"pattern",set:function(e){this._pattern=e,this._lowercasePattern=e.toLowerCase()}},{key:"filter",value:function(e,t){if(this._filter){var n=this._filter.filter(e,t);if(this.tree.options.simpleKeyboardNavigation)return n;if(0===("boolean"===typeof n?n?1:0:Y(n)?U(n.visibility):n))return!1}if(this._totalCount++,this.tree.options.simpleKeyboardNavigation||!this._pattern)return this._matchCount++,{data:z.CL.Default,visibility:!0};var i,r=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e),o=Array.isArray(r)?r:[r],a=(0,O.Z)(o);try{for(a.s();!(i=a.n()).done;){var s=i.value,u=s&&s.toString();if("undefined"===typeof u)return{data:z.CL.Default,visibility:!0};var l=(0,z.EW)(this._pattern,this._lowercasePattern,0,u,u.toLowerCase(),0,!0);if(l)return this._matchCount++,1===o.length?{data:l,visibility:!0}:{data:{label:u,score:l},visibility:!0}}}catch(c){a.e(c)}finally{a.f()}return this.tree.options.filterOnType?2:{data:z.CL.Default,visibility:!0}}},{key:"reset",value:function(){this._totalCount=0,this._matchCount=0}},{key:"dispose",value:function(){(0,f.B9)(this.disposables)}}]),e}(),fe=function(){function e(t,n,i,r,o){(0,c.Z)(this,e),this.tree=t,this.view=i,this.filter=r,this.keyboardNavigationDelegate=o,this._enabled=!1,this._pattern="",this._empty=!1,this._onDidChangeEmptyState=new v.Q5,this.positionClassName="ne",this.automaticKeyboardNavigation=!0,this.triggered=!1,this._onDidChangePattern=new v.Q5,this.enabledDisposables=new f.SL,this.disposables=new f.SL,this.domNode=(0,h.$)(".monaco-list-type-filter.".concat(this.positionClassName)),this.domNode.draggable=!0,(0,B.jt)(this.domNode,"dragstart")(this.onDragStart,this,this.disposables),this.messageDomNode=(0,h.append)(i.getHTMLElement(),(0,h.$)(".monaco-list-type-filter-message")),this.labelDomNode=(0,h.append)(this.domNode,(0,h.$)("span.label"));var a=(0,h.append)(this.domNode,(0,h.$)(".controls"));this._filterOnType=!!t.options.filterOnType,this.filterOnTypeDomNode=(0,h.append)(a,(0,h.$)("input.filter")),this.filterOnTypeDomNode.type="checkbox",this.filterOnTypeDomNode.checked=this._filterOnType,this.filterOnTypeDomNode.tabIndex=-1,this.updateFilterOnTypeTitleAndIcon(),(0,B.jt)(this.filterOnTypeDomNode,"input")(this.onDidChangeFilterOnType,this,this.disposables),this.clearDomNode=(0,h.append)(a,(0,h.$)("button.clear"+ie.cssSelector)),this.clearDomNode.tabIndex=-1,this.clearDomNode.title=(0,C.N)("clear","Clear"),this.keyboardNavigationEventFilter=t.options.keyboardNavigationEventFilter,n.onDidSplice(this.onDidSpliceModel,this,this.disposables),this.updateOptions(t.options)}return(0,d.Z)(e,[{key:"enabled",get:function(){return this._enabled}},{key:"pattern",get:function(){return this._pattern}},{key:"filterOnType",get:function(){return this._filterOnType}},{key:"updateOptions",value:function(e){e.simpleKeyboardNavigation?this.disable():this.enable(),"undefined"!==typeof e.filterOnType&&(this._filterOnType=!!e.filterOnType,this.filterOnTypeDomNode.checked=this._filterOnType,this.updateFilterOnTypeTitleAndIcon()),"undefined"!==typeof e.automaticKeyboardNavigation&&(this.automaticKeyboardNavigation=e.automaticKeyboardNavigation),this.tree.refilter(),this.render(),this.automaticKeyboardNavigation||this.onEventOrInput("")}},{key:"enable",value:function(){var e=this;if(!this._enabled){var t=v.ju.chain((0,B.jt)(this.view.getHTMLElement(),"keydown")).filter((function(t){return!(0,g.cK)(t.target)||t.target===e.filterOnTypeDomNode})).filter((function(e){return"Dead"!==e.key&&!/^Media/.test(e.key)})).map((function(e){return new R.y(e)})).filter(this.keyboardNavigationEventFilter||function(){return!0}).filter((function(){return e.automaticKeyboardNavigation||e.triggered})).filter((function(t){return e.keyboardNavigationDelegate.mightProducePrintableCharacter(t)&&!(18===t.keyCode||16===t.keyCode||15===t.keyCode||17===t.keyCode)||(e.pattern.length>0||e.triggered)&&(9===t.keyCode||1===t.keyCode)&&!t.altKey&&!t.ctrlKey&&!t.metaKey||1===t.keyCode&&($.dz?t.altKey&&!t.metaKey:t.ctrlKey)&&!t.shiftKey})).forEach((function(e){e.stopPropagation(),e.preventDefault()})).event,n=(0,B.jt)(this.clearDomNode,"click");v.ju.chain(v.ju.any(t,n)).event(this.onEventOrInput,this,this.enabledDisposables),this.filter.pattern="",this.tree.refilter(),this.render(),this._enabled=!0,this.triggered=!1}}},{key:"disable",value:function(){this._enabled&&(this.domNode.remove(),this.enabledDisposables.clear(),this.tree.refilter(),this.render(),this._enabled=!1,this.triggered=!1)}},{key:"onEventOrInput",value:function(e){"string"===typeof e?this.onInput(e):e instanceof MouseEvent||9===e.keyCode||1===e.keyCode&&($.dz?e.altKey:e.ctrlKey)?this.onInput(""):1===e.keyCode?this.onInput(0===this.pattern.length?"":this.pattern.substr(0,this.pattern.length-1)):this.onInput(this.pattern+e.browserEvent.key)}},{key:"onInput",value:function(e){var t=this.view.getHTMLElement();e&&!this.domNode.parentElement?t.append(this.domNode):!e&&this.domNode.parentElement&&(this.domNode.remove(),this.tree.domFocus()),this._pattern=e,this._onDidChangePattern.fire(e),this.filter.pattern=e,this.tree.refilter(),e&&this.tree.focusNext(0,!0,void 0,(function(e){return!z.CL.isDefault(e.filterData)}));var n=this.tree.getFocus();if(n.length>0){var i=n[0];null===this.tree.getRelativeTop(i)&&this.tree.reveal(i,.5)}this.render(),e||(this.triggered=!1)}},{key:"onDragStart",value:function(){var e=this,t=this.view.getHTMLElement(),n=(0,h.getDomNodePagePosition)(t).left,i=t.clientWidth,r=i/2,o=this.domNode.clientWidth,a=new f.SL,s=this.positionClassName,u=function(){switch(s){case"nw":e.domNode.style.top="4px",e.domNode.style.left="4px";break;case"ne":e.domNode.style.top="4px",e.domNode.style.left="".concat(i-o-6,"px")}};u(),this.domNode.classList.remove(s),this.domNode.classList.add("dragging"),a.add((0,f.OF)((function(){return e.domNode.classList.remove("dragging")}))),(0,B.jt)(document,"dragover")((function(e){e.preventDefault();var t=e.clientX-n;e.dataTransfer&&(e.dataTransfer.dropEffect="none"),s=t<r?"nw":"ne",u()}),null,a),(0,B.jt)(this.domNode,"dragend")((function(){e.positionClassName=s,e.domNode.className="monaco-list-type-filter ".concat(e.positionClassName),e.domNode.style.top="",e.domNode.style.left="",(0,f.B9)(a)}),null,a),j.P$.CurrentDragAndDropData=new j.TN("vscode-ui"),a.add((0,f.OF)((function(){return j.P$.CurrentDragAndDropData=void 0})))}},{key:"onDidSpliceModel",value:function(){this._enabled&&0!==this.pattern.length&&(this.tree.refilter(),this.render())}},{key:"onDidChangeFilterOnType",value:function(){this.tree.updateOptions({filterOnType:this.filterOnTypeDomNode.checked}),this.tree.refilter(),this.tree.domFocus(),this.render(),this.updateFilterOnTypeTitleAndIcon()}},{key:"updateFilterOnTypeTitleAndIcon",value:function(){var e,t,n,i;this.filterOnType?((e=this.filterOnTypeDomNode.classList).remove.apply(e,(0,A.Z)(ne.classNamesArray)),(t=this.filterOnTypeDomNode.classList).add.apply(t,(0,A.Z)(te.classNamesArray)),this.filterOnTypeDomNode.title=(0,C.N)("disable filter on type","Disable Filter on Type")):((n=this.filterOnTypeDomNode.classList).remove.apply(n,(0,A.Z)(te.classNamesArray)),(i=this.filterOnTypeDomNode.classList).add.apply(i,(0,A.Z)(ne.classNamesArray)),this.filterOnTypeDomNode.title=(0,C.N)("enable filter on type","Enable Filter on Type"))}},{key:"render",value:function(){var e=this.filter.totalCount>0&&0===this.filter.matchCount;this.pattern&&this.tree.options.filterOnType&&e?(this.messageDomNode.textContent=(0,C.N)("empty","No elements found"),this._empty=!0):(this.messageDomNode.innerText="",this._empty=!1),this.domNode.classList.toggle("no-matches",e),this.domNode.title=(0,C.N)("found","Matched {0} out of {1} elements",this.filter.matchCount,this.filter.totalCount),this.labelDomNode.textContent=this.pattern.length>16?"\u2026"+this.pattern.substr(this.pattern.length-16):this.pattern,this._onDidChangeEmptyState.fire(this._empty)}},{key:"shouldAllowFocus",value:function(e){return!(this.enabled&&this.pattern&&!this.filterOnType)||(this.filter.totalCount>0&&this.filter.matchCount<=1||!z.CL.isDefault(e.filterData))}},{key:"dispose",value:function(){this._enabled&&(this.domNode.remove(),this.enabledDisposables.dispose(),this._enabled=!1,this.triggered=!1),this._onDidChangePattern.dispose(),(0,f.B9)(this.disposables)}}]),e}();function pe(e){var t=b.Unknown;return(0,h.hasParentWithClass)(e.browserEvent.target,"monaco-tl-twistie","monaco-tl-row")?t=b.Twistie:(0,h.hasParentWithClass)(e.browserEvent.target,"monaco-tl-contents","monaco-tl-row")&&(t=b.Element),{browserEvent:e.browserEvent,element:e.element?e.element.element:null,target:t}}function ge(e,t){t(e),e.children.forEach((function(e){return ge(e,t)}))}var ve=function(){function e(t){(0,c.Z)(this,e),this.identityProvider=t,this.nodes=[],this._onDidChange=new v.Q5,this.onDidChange=this._onDidChange.event}return(0,d.Z)(e,[{key:"nodeSet",get:function(){return this._nodeSet||(this._nodeSet=this.createNodeSet()),this._nodeSet}},{key:"set",value:function(e,t){var n;!(null===(n=t)||void 0===n?void 0:n.__forceEvent)&&(0,p.fS)(this.nodes,e)||this._set(e,!1,t)}},{key:"_set",value:function(e,t,n){if(this.nodes=(0,A.Z)(e),this.elements=void 0,this._nodeSet=void 0,!t){var i=this;this._onDidChange.fire({get elements(){return i.get()},browserEvent:n})}}},{key:"get",value:function(){return this.elements||(this.elements=this.nodes.map((function(e){return e.element}))),(0,A.Z)(this.elements)}},{key:"getNodes",value:function(){return this.nodes}},{key:"has",value:function(e){return this.nodeSet.has(e)}},{key:"onDidModelSplice",value:function(e){var t=this,n=e.insertedNodes,i=e.deletedNodes;if(!this.identityProvider){var r=this.createNodeSet(),o=function(e){return r.delete(e)};return i.forEach((function(e){return ge(e,o)})),void this.set((0,A.Z)(r.values()))}var a=new Set,s=function(e){return a.add(t.identityProvider.getId(e.element).toString())};i.forEach((function(e){return ge(e,s)}));var u=new Map,l=function(e){return u.set(t.identityProvider.getId(e.element).toString(),e)};n.forEach((function(e){return ge(e,l)}));var c,d=[],h=(0,O.Z)(this.nodes);try{for(h.s();!(c=h.n()).done;){var f=c.value,p=this.identityProvider.getId(f.element).toString();if(a.has(p)){var g=u.get(p);g&&d.push(g)}else d.push(f)}}catch(v){h.e(v)}finally{h.f()}this._set(d,!0)}},{key:"createNodeSet",value:function(){var e,t=new Set,n=(0,O.Z)(this.nodes);try{for(n.s();!(e=n.n()).done;){var i=e.value;t.add(i)}}catch(r){n.e(r)}finally{n.f()}return t}}]),e}(),me=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r;return(0,c.Z)(this,n),(r=t.call(this,e)).tree=i,r}return(0,d.Z)(n,[{key:"onViewPointer",value:function(e){if(!(0,g.cK)(e.browserEvent.target)&&!(0,g.hD)(e.browserEvent.target)){var t=e.element;if(!t)return(0,a.Z)((0,s.Z)(n.prototype),"onViewPointer",this).call(this,e);if(this.isSelectionRangeChangeEvent(e)||this.isSelectionSingleChangeEvent(e))return(0,a.Z)((0,s.Z)(n.prototype),"onViewPointer",this).call(this,e);var i=e.browserEvent.target,r=i.classList.contains("monaco-tl-twistie")||i.classList.contains("monaco-icon-label")&&i.classList.contains("folder-icon")&&e.browserEvent.offsetX<16,o=!1;if((o="function"===typeof this.tree.expandOnlyOnTwistieClick?this.tree.expandOnlyOnTwistieClick(t.element):!!this.tree.expandOnlyOnTwistieClick)&&!r&&2!==e.browserEvent.detail)return(0,a.Z)((0,s.Z)(n.prototype),"onViewPointer",this).call(this,e);if(!this.tree.expandOnDoubleClick&&2===e.browserEvent.detail)return(0,a.Z)((0,s.Z)(n.prototype),"onViewPointer",this).call(this,e);if(t.collapsible){var u=this.tree.model,l=u.getNodeLocation(t),c=e.browserEvent.altKey;if(this.tree.setFocus([l]),u.setCollapsed(l,void 0,c),o&&r)return}(0,a.Z)((0,s.Z)(n.prototype),"onViewPointer",this).call(this,e)}}},{key:"onDoubleClick",value:function(e){!e.browserEvent.target.classList.contains("monaco-tl-twistie")&&this.tree.expandOnDoubleClick&&(0,a.Z)((0,s.Z)(n.prototype),"onDoubleClick",this).call(this,e)}}]),n}(g.sx),_e=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,o,a,s,u,l){var d;return(0,c.Z)(this,n),(d=t.call(this,e,i,r,o,l)).focusTrait=a,d.selectionTrait=s,d.anchorTrait=u,d}return(0,d.Z)(n,[{key:"createMouseController",value:function(e){return new me(this,e.tree)}},{key:"splice",value:function(e,t){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if((0,a.Z)((0,s.Z)(n.prototype),"splice",this).call(this,e,t,r),0!==r.length){var o,u=[],l=[];r.forEach((function(t,n){i.focusTrait.has(t)&&u.push(e+n),i.selectionTrait.has(t)&&l.push(e+n),i.anchorTrait.has(t)&&(o=e+n)})),u.length>0&&(0,a.Z)((0,s.Z)(n.prototype),"setFocus",this).call(this,(0,p.cU)([].concat((0,A.Z)((0,a.Z)((0,s.Z)(n.prototype),"getFocus",this).call(this)),u))),l.length>0&&(0,a.Z)((0,s.Z)(n.prototype),"setSelection",this).call(this,(0,p.cU)([].concat((0,A.Z)((0,a.Z)((0,s.Z)(n.prototype),"getSelection",this).call(this)),l))),"number"===typeof o&&(0,a.Z)((0,s.Z)(n.prototype),"setAnchor",this).call(this,o)}}},{key:"setFocus",value:function(e,t){var i=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,a.Z)((0,s.Z)(n.prototype),"setFocus",this).call(this,e,t),r||this.focusTrait.set(e.map((function(e){return i.element(e)})),t)}},{key:"setSelection",value:function(e,t){var i=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,a.Z)((0,s.Z)(n.prototype),"setSelection",this).call(this,e,t),r||this.selectionTrait.set(e.map((function(e){return i.element(e)})),t)}},{key:"setAnchor",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];(0,a.Z)((0,s.Z)(n.prototype),"setAnchor",this).call(this,e),t||("undefined"===typeof e?this.anchorTrait.set([]):this.anchorTrait.set([this.element(e)]))}}]),n}(g.aV),ye=function(){function e(t,n,i,r){var o=this,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};(0,c.Z)(this,e),this._options=a,this.eventBufferer=new v.E7,this.disposables=new f.SL,this._onWillRefilter=new v.Q5,this.onWillRefilter=this._onWillRefilter.event,this._onDidUpdateOptions=new v.Q5;var s=new le(i),u=new v.ZD,l=new v.ZD,d=new ce(l.event);this.renderers=r.map((function(e){return new de(e,(function(){return o.model}),u.event,d,a)}));var p,m,_,y,b=(0,O.Z)(this.renderers);try{for(b.s();!(p=b.n()).done;){var w=p.value;this.disposables.add(w)}}catch(x){b.e(x)}finally{b.f()}a.keyboardNavigationLabelProvider&&(m=new he(this,a.keyboardNavigationLabelProvider,a.filter),a=Object.assign(Object.assign({},a),{filter:m}),this.disposables.add(m)),this.focus=new ve(a.identityProvider),this.selection=new ve(a.identityProvider),this.anchor=new ve(a.identityProvider),this.view=new _e(t,n,s,this.renderers,this.focus,this.selection,this.anchor,Object.assign(Object.assign({},(_=function(){return o.model},(y=a)&&Object.assign(Object.assign({},y),{identityProvider:y.identityProvider&&{getId:function(e){return y.identityProvider.getId(e.element)}},dnd:y.dnd&&new se(_,y.dnd),multipleSelectionController:y.multipleSelectionController&&{isSelectionSingleChangeEvent:function(e){return y.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({},e),{element:e.element}))},isSelectionRangeChangeEvent:function(e){return y.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({},e),{element:e.element}))}},accessibilityProvider:y.accessibilityProvider&&Object.assign(Object.assign({},y.accessibilityProvider),{getSetSize:function(e){var t=_(),n=t.getNodeLocation(e),i=t.getParentNodeLocation(n);return t.getNode(i).visibleChildrenCount},getPosInSet:function(e){return e.visibleChildIndex+1},isChecked:y.accessibilityProvider&&y.accessibilityProvider.isChecked?function(e){return y.accessibilityProvider.isChecked(e.element)}:void 0,getRole:y.accessibilityProvider&&y.accessibilityProvider.getRole?function(e){return y.accessibilityProvider.getRole(e.element)}:function(){return"treeitem"},getAriaLabel:function(e){return y.accessibilityProvider.getAriaLabel(e.element)},getWidgetAriaLabel:function(){return y.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:y.accessibilityProvider&&y.accessibilityProvider.getWidgetRole?function(){return y.accessibilityProvider.getWidgetRole()}:function(){return"tree"},getAriaLevel:y.accessibilityProvider&&y.accessibilityProvider.getAriaLevel?function(e){return y.accessibilityProvider.getAriaLevel(e.element)}:function(e){return e.depth},getActiveDescendantId:y.accessibilityProvider.getActiveDescendantId&&function(e){return y.accessibilityProvider.getActiveDescendantId(e.element)}}),keyboardNavigationLabelProvider:y.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},y.keyboardNavigationLabelProvider),{getKeyboardNavigationLabel:function(e){return y.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e.element)}}),enableKeyboardNavigation:y.simpleKeyboardNavigation}))),{tree:this})),this.model=this.createModel(t,this.view,a),u.input=this.model.onDidChangeCollapseState;var C=v.ju.forEach(this.model.onDidSplice,(function(e){o.eventBufferer.bufferEvents((function(){o.focus.onDidModelSplice(e),o.selection.onDidModelSplice(e)}))}));if(C((function(){return null}),null,this.disposables),l.input=v.ju.chain(v.ju.any(C,this.focus.onDidChange,this.selection.onDidChange)).debounce((function(){return null}),0).map((function(){var e,t=new Set,n=(0,O.Z)(o.focus.getNodes());try{for(n.s();!(e=n.n()).done;){var i=e.value;t.add(i)}}catch(x){n.e(x)}finally{n.f()}var r,a=(0,O.Z)(o.selection.getNodes());try{for(a.s();!(r=a.n()).done;){var s=r.value;t.add(s)}}catch(x){a.e(x)}finally{a.f()}return(0,A.Z)(t.values())})).event,!1!==a.keyboardSupport){var k=v.ju.chain(this.view.onKeyDown).filter((function(e){return!(0,g.cK)(e.target)})).map((function(e){return new R.y(e)}));k.filter((function(e){return 15===e.keyCode})).on(this.onLeftArrow,this,this.disposables),k.filter((function(e){return 17===e.keyCode})).on(this.onRightArrow,this,this.disposables),k.filter((function(e){return 10===e.keyCode})).on(this.onSpace,this,this.disposables)}if(a.keyboardNavigationLabelProvider){var S=a.keyboardNavigationDelegate||g.WK;this.typeFilterController=new fe(this,this.model,this.view,m,S),this.focusNavigationFilter=function(e){return o.typeFilterController.shouldAllowFocus(e)},this.disposables.add(this.typeFilterController)}this.styleElement=(0,h.createStyleSheet)(this.view.getHTMLElement()),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===ue.Always)}return(0,d.Z)(e,[{key:"onDidChangeFocus",get:function(){return this.eventBufferer.wrapEvent(this.focus.onDidChange)}},{key:"onDidChangeSelection",get:function(){return this.eventBufferer.wrapEvent(this.selection.onDidChange)}},{key:"onMouseDblClick",get:function(){return v.ju.map(this.view.onMouseDblClick,pe)}},{key:"onPointer",get:function(){return v.ju.map(this.view.onPointer,pe)}},{key:"onDidFocus",get:function(){return this.view.onDidFocus}},{key:"onDidChangeCollapseState",get:function(){return this.model.onDidChangeCollapseState}},{key:"expandOnDoubleClick",get:function(){return"undefined"===typeof this._options.expandOnDoubleClick||this._options.expandOnDoubleClick}},{key:"expandOnlyOnTwistieClick",get:function(){return"undefined"===typeof this._options.expandOnlyOnTwistieClick||this._options.expandOnlyOnTwistieClick}},{key:"onDidDispose",get:function(){return this.view.onDidDispose}},{key:"updateOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._options=Object.assign(Object.assign({},this._options),e);var t,n=(0,O.Z)(this.renderers);try{for(n.s();!(t=n.n()).done;){t.value.updateOptions(e)}}catch(i){n.e(i)}finally{n.f()}this.view.updateOptions({enableKeyboardNavigation:this._options.simpleKeyboardNavigation,automaticKeyboardNavigation:this._options.automaticKeyboardNavigation,smoothScrolling:this._options.smoothScrolling,horizontalScrolling:this._options.horizontalScrolling}),this.typeFilterController&&this.typeFilterController.updateOptions(this._options),this._onDidUpdateOptions.fire(this._options),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===ue.Always)}},{key:"options",get:function(){return this._options}},{key:"getHTMLElement",value:function(){return this.view.getHTMLElement()}},{key:"scrollTop",get:function(){return this.view.scrollTop},set:function(e){this.view.scrollTop=e}},{key:"domFocus",value:function(){this.view.domFocus()}},{key:"layout",value:function(e,t){this.view.layout(e,t)}},{key:"style",value:function(e){var t=".".concat(this.view.domId),n=[];e.treeIndentGuidesStroke&&(n.push(".monaco-list".concat(t,":hover .monaco-tl-indent > .indent-guide, .monaco-list").concat(t,".always .monaco-tl-indent > .indent-guide { border-color: ").concat(e.treeIndentGuidesStroke.transparent(.4),"; }")),n.push(".monaco-list".concat(t," .monaco-tl-indent > .indent-guide.active { border-color: ").concat(e.treeIndentGuidesStroke,"; }"))),this.styleElement.textContent=n.join("\n"),this.view.style(e)}},{key:"collapse",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.model.setCollapsed(e,!0,t)}},{key:"expand",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.model.setCollapsed(e,!1,t)}},{key:"isCollapsible",value:function(e){return this.model.isCollapsible(e)}},{key:"setCollapsible",value:function(e,t){return this.model.setCollapsible(e,t)}},{key:"isCollapsed",value:function(e){return this.model.isCollapsed(e)}},{key:"refilter",value:function(){this._onWillRefilter.fire(void 0),this.model.refilter()}},{key:"setSelection",value:function(e,t){var n=this,i=e.map((function(e){return n.model.getNode(e)}));this.selection.set(i,t);var r=e.map((function(e){return n.model.getListIndex(e)})).filter((function(e){return e>-1}));this.view.setSelection(r,t,!0)}},{key:"getSelection",value:function(){return this.selection.get()}},{key:"setFocus",value:function(e,t){var n=this,i=e.map((function(e){return n.model.getNode(e)}));this.focus.set(i,t);var r=e.map((function(e){return n.model.getListIndex(e)})).filter((function(e){return e>-1}));this.view.setFocus(r,t,!0)}},{key:"focusNext",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2?arguments[2]:void 0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.focusNavigationFilter;this.view.focusNext(e,t,n,i)}},{key:"getFocus",value:function(){return this.focus.get()}},{key:"reveal",value:function(e,t){this.model.expandTo(e);var n=this.model.getListIndex(e);-1!==n&&this.view.reveal(n,t)}},{key:"getRelativeTop",value:function(e){var t=this.model.getListIndex(e);return-1===t?null:this.view.getRelativeTop(t)}},{key:"onLeftArrow",value:function(e){e.preventDefault(),e.stopPropagation();var t=this.view.getFocusedElements();if(0!==t.length){var n=t[0],i=this.model.getNodeLocation(n);if(!this.model.setCollapsed(i,!0)){var r=this.model.getParentNodeLocation(i);if(!r)return;var o=this.model.getListIndex(r);this.view.reveal(o),this.view.setFocus([o])}}}},{key:"onRightArrow",value:function(e){e.preventDefault(),e.stopPropagation();var t=this.view.getFocusedElements();if(0!==t.length){var n=t[0],i=this.model.getNodeLocation(n);if(!this.model.setCollapsed(i,!1)){if(!n.children.some((function(e){return e.visible})))return;var o=this.view.getFocus(),a=(0,r.Z)(o,1)[0]+1;this.view.reveal(a),this.view.setFocus([a])}}}},{key:"onSpace",value:function(e){e.preventDefault(),e.stopPropagation();var t=this.view.getFocusedElements();if(0!==t.length){var n=t[0],i=this.model.getNodeLocation(n),r=e.browserEvent.altKey;this.model.setCollapsed(i,void 0,r)}}},{key:"dispose",value:function(){(0,f.B9)(this.disposables),this.view.dispose()}}]),e}(),be=function(){function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,c.Z)(this,e),this.user=t,this.rootRef=null,this.nodes=new Map,this.nodesByIdentity=new Map,this.model=new q(t,n,null,i),this.onDidSplice=this.model.onDidSplice,this.onDidChangeCollapseState=this.model.onDidChangeCollapseState,this.onDidChangeRenderNodeCount=this.model.onDidChangeRenderNodeCount,i.sorter&&(this.sorter={compare:function(e,t){return i.sorter.compare(e.element,t.element)}}),this.identityProvider=i.identityProvider}return(0,d.Z)(e,[{key:"setChildren",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.$.empty(),n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=this.getElementLocation(e);this._setChildren(i,this.preserveCollapseState(t),n)}},{key:"_setChildren",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.$.empty(),i=arguments.length>2?arguments[2]:void 0,r=new Set,o=new Set;this.model.splice([].concat((0,A.Z)(e),[0]),Number.MAX_VALUE,n,Object.assign(Object.assign({},i),{onDidCreateNode:function(e){var n;if(null!==e.element){var a=e;if(r.add(a.element),t.nodes.set(a.element,a),t.identityProvider){var s=t.identityProvider.getId(a.element).toString();o.add(s),t.nodesByIdentity.set(s,a)}null===(n=i.onDidCreateNode)||void 0===n||n.call(i,a)}},onDidDeleteNode:function(e){var n;if(null!==e.element){var a=e;if(r.has(a.element)||t.nodes.delete(a.element),t.identityProvider){var s=t.identityProvider.getId(a.element).toString();o.has(s)||t.nodesByIdentity.delete(s)}null===(n=i.onDidDeleteNode)||void 0===n||n.call(i,a)}}}))}},{key:"preserveCollapseState",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:I.$.empty();return this.sorter&&(t=(0,A.Z)(t).sort(this.sorter.compare.bind(this.sorter))),I.$.map(t,(function(t){var n=e.nodes.get(t.element);if(!n&&e.identityProvider){var i=e.identityProvider.getId(t.element).toString();n=e.nodesByIdentity.get(i)}if(!n)return Object.assign(Object.assign({},t),{children:e.preserveCollapseState(t.children)});var r="boolean"===typeof t.collapsible?t.collapsible:n.collapsible,o="undefined"!==typeof t.collapsed?t.collapsed:n.collapsed;return Object.assign(Object.assign({},t),{collapsible:r,collapsed:o,children:e.preserveCollapseState(t.children)})}))}},{key:"rerender",value:function(e){var t=this.getElementLocation(e);this.model.rerender(t)}},{key:"has",value:function(e){return this.nodes.has(e)}},{key:"getListIndex",value:function(e){var t=this.getElementLocation(e);return this.model.getListIndex(t)}},{key:"getListRenderCount",value:function(e){var t=this.getElementLocation(e);return this.model.getListRenderCount(t)}},{key:"isCollapsible",value:function(e){var t=this.getElementLocation(e);return this.model.isCollapsible(t)}},{key:"setCollapsible",value:function(e,t){var n=this.getElementLocation(e);return this.model.setCollapsible(n,t)}},{key:"isCollapsed",value:function(e){var t=this.getElementLocation(e);return this.model.isCollapsed(t)}},{key:"setCollapsed",value:function(e,t,n){var i=this.getElementLocation(e);return this.model.setCollapsed(i,t,n)}},{key:"expandTo",value:function(e){var t=this.getElementLocation(e);this.model.expandTo(t)}},{key:"refilter",value:function(){this.model.refilter()}},{key:"getNode",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(null===e)return this.model.getNode(this.model.rootRef);var t=this.nodes.get(e);if(!t)throw new Z(this.user,"Tree element not found: ".concat(e));return t}},{key:"getNodeLocation",value:function(e){return e.element}},{key:"getParentNodeLocation",value:function(e){if(null===e)throw new Z(this.user,"Invalid getParentNodeLocation call");var t=this.nodes.get(e);if(!t)throw new Z(this.user,"Tree element not found: ".concat(e));var n=this.model.getNodeLocation(t),i=this.model.getParentNodeLocation(n);return this.model.getNode(i).element}},{key:"getElementLocation",value:function(e){if(null===e)return[];var t=this.nodes.get(e);if(!t)throw new Z(this.user,"Tree element not found: ".concat(e));return this.model.getNodeLocation(t)}}]),e}();function we(e){return{element:{elements:[e.element],incompressible:e.incompressible||!1},children:I.$.map(I.$.from(e.children),we),collapsible:e.collapsible,collapsed:e.collapsed}}function Ce(e){for(var t,n,i=[e.element],o=e.incompressible||!1;;){var a=I.$.consume(I.$.from(e.children),2),s=(0,r.Z)(a,2);if(n=s[0],t=s[1],1!==n.length)break;if(n[0].incompressible)break;e=n[0],i.push(e.element)}return{element:{elements:i,incompressible:o},children:I.$.map(I.$.concat(n,t),Ce),collapsible:e.collapsible,collapsed:e.collapsed}}function ke(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t=n<e.element.elements.length-1?[ke(e,n+1)]:I.$.map(I.$.from(e.children),(function(e){return ke(e,0)})),0===n&&e.element.incompressible?{element:e.element.elements[n],children:t,incompressible:!0,collapsible:e.collapsible,collapsed:e.collapsed}:{element:e.element.elements[n],children:t,collapsible:e.collapsible,collapsed:e.collapsed}}function Se(e){return ke(e,0)}function xe(e,t,n){return e.element===t?Object.assign(Object.assign({},e),{children:n}):Object.assign(Object.assign({},e),{children:I.$.map(I.$.from(e.children),(function(e){return xe(e,t,n)}))})}var Le=function(e){return{getId:function(t){return t.elements.map((function(t){return e.getId(t).toString()})).join("\0")}}},Ee=function(){function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,c.Z)(this,e),this.user=t,this.rootRef=null,this.nodes=new Map,this.model=new be(t,n,i),this.enabled="undefined"===typeof i.compressionEnabled||i.compressionEnabled,this.identityProvider=i.identityProvider}return(0,d.Z)(e,[{key:"onDidSplice",get:function(){return this.model.onDidSplice}},{key:"onDidChangeCollapseState",get:function(){return this.model.onDidChangeCollapseState}},{key:"onDidChangeRenderNodeCount",get:function(){return this.model.onDidChangeRenderNodeCount}},{key:"setChildren",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.$.empty(),n=arguments.length>2?arguments[2]:void 0,i=n.diffIdentityProvider&&Le(n.diffIdentityProvider);if(null!==e){var r=this.nodes.get(e);if(!r)throw new Error("Unknown compressed tree node");var o=this.model.getNode(r),a=this.model.getParentNodeLocation(r),s=this.model.getNode(a),u=xe(Se(o),e,t),l=(this.enabled?Ce:we)(u),c=s.children.map((function(e){return e===o?l:e}));this._setChildren(s.element,c,{diffIdentityProvider:i,diffDepth:o.depth-s.depth})}else{var d=I.$.map(t,this.enabled?Ce:we);this._setChildren(null,d,{diffIdentityProvider:i,diffDepth:1/0})}}},{key:"setCompressionEnabled",value:function(e){if(e!==this.enabled){this.enabled=e;var t=this.model.getNode().children,n=I.$.map(t,Se),i=I.$.map(n,e?Ce:we);this._setChildren(null,i,{diffIdentityProvider:this.identityProvider,diffDepth:1/0})}}},{key:"_setChildren",value:function(e,t,n){var i=this,r=new Set;this.model.setChildren(e,t,Object.assign(Object.assign({},n),{onDidCreateNode:function(e){var t,n=(0,O.Z)(e.element.elements);try{for(n.s();!(t=n.n()).done;){var o=t.value;r.add(o),i.nodes.set(o,e.element)}}catch(a){n.e(a)}finally{n.f()}},onDidDeleteNode:function(e){var t,n=(0,O.Z)(e.element.elements);try{for(n.s();!(t=n.n()).done;){var o=t.value;r.has(o)||i.nodes.delete(o)}}catch(a){n.e(a)}finally{n.f()}}}))}},{key:"has",value:function(e){return this.nodes.has(e)}},{key:"getListIndex",value:function(e){var t=this.getCompressedNode(e);return this.model.getListIndex(t)}},{key:"getListRenderCount",value:function(e){var t=this.getCompressedNode(e);return this.model.getListRenderCount(t)}},{key:"getNode",value:function(e){if("undefined"===typeof e)return this.model.getNode();var t=this.getCompressedNode(e);return this.model.getNode(t)}},{key:"getNodeLocation",value:function(e){var t=this.model.getNodeLocation(e);return null===t?null:t.elements[t.elements.length-1]}},{key:"getParentNodeLocation",value:function(e){var t=this.getCompressedNode(e),n=this.model.getParentNodeLocation(t);return null===n?null:n.elements[n.elements.length-1]}},{key:"isCollapsible",value:function(e){var t=this.getCompressedNode(e);return this.model.isCollapsible(t)}},{key:"setCollapsible",value:function(e,t){var n=this.getCompressedNode(e);return this.model.setCollapsible(n,t)}},{key:"isCollapsed",value:function(e){var t=this.getCompressedNode(e);return this.model.isCollapsed(t)}},{key:"setCollapsed",value:function(e,t,n){var i=this.getCompressedNode(e);return this.model.setCollapsed(i,t,n)}},{key:"expandTo",value:function(e){var t=this.getCompressedNode(e);this.model.expandTo(t)}},{key:"rerender",value:function(e){var t=this.getCompressedNode(e);this.model.rerender(t)}},{key:"refilter",value:function(){this.model.refilter()}},{key:"getCompressedNode",value:function(e){if(null===e)return null;var t=this.nodes.get(e);if(!t)throw new Z(this.user,"Tree element not found: ".concat(e));return t}}]),e}(),De=function(e){return e[e.length-1]},Ne=function(){function e(t,n){(0,c.Z)(this,e),this.unwrapper=t,this.node=n}return(0,d.Z)(e,[{key:"element",get:function(){return null===this.node.element?null:this.unwrapper(this.node.element)}},{key:"children",get:function(){var t=this;return this.node.children.map((function(n){return new e(t.unwrapper,n)}))}},{key:"depth",get:function(){return this.node.depth}},{key:"visibleChildrenCount",get:function(){return this.node.visibleChildrenCount}},{key:"visibleChildIndex",get:function(){return this.node.visibleChildIndex}},{key:"collapsible",get:function(){return this.node.collapsible}},{key:"collapsed",get:function(){return this.node.collapsed}},{key:"visible",get:function(){return this.node.visible}},{key:"filterData",get:function(){return this.node.filterData}}]),e}();var Me=function(){function e(t,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,c.Z)(this,e),this.rootRef=null,this.elementMapper=r.elementMapper||De;var o=function(e){return i.elementMapper(e.elements)};this.nodeMapper=new F((function(e){return new Ne(o,e)})),this.model=new Ee(t,function(e,t){return{splice:function(n,i,r){t.splice(n,i,r.map((function(t){return e.map(t)})))},updateElementHeight:function(e,n){t.updateElementHeight(e,n)}}}(this.nodeMapper,n),function(e,t){return Object.assign(Object.assign({},t),{identityProvider:t.identityProvider&&{getId:function(n){return t.identityProvider.getId(e(n))}},sorter:t.sorter&&{compare:function(e,n){return t.sorter.compare(e.elements[0],n.elements[0])}},filter:t.filter&&{filter:function(n,i){return t.filter.filter(e(n),i)}}})}(o,r))}return(0,d.Z)(e,[{key:"onDidSplice",get:function(){var e=this;return v.ju.map(this.model.onDidSplice,(function(t){var n=t.insertedNodes,i=t.deletedNodes;return{insertedNodes:n.map((function(t){return e.nodeMapper.map(t)})),deletedNodes:i.map((function(t){return e.nodeMapper.map(t)}))}}))}},{key:"onDidChangeCollapseState",get:function(){var e=this;return v.ju.map(this.model.onDidChangeCollapseState,(function(t){var n=t.node,i=t.deep;return{node:e.nodeMapper.map(n),deep:i}}))}},{key:"onDidChangeRenderNodeCount",get:function(){var e=this;return v.ju.map(this.model.onDidChangeRenderNodeCount,(function(t){return e.nodeMapper.map(t)}))}},{key:"setChildren",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.$.empty(),n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.model.setChildren(e,t,n)}},{key:"setCompressionEnabled",value:function(e){this.model.setCompressionEnabled(e)}},{key:"has",value:function(e){return this.model.has(e)}},{key:"getListIndex",value:function(e){return this.model.getListIndex(e)}},{key:"getListRenderCount",value:function(e){return this.model.getListRenderCount(e)}},{key:"getNode",value:function(e){return this.nodeMapper.map(this.model.getNode(e))}},{key:"getNodeLocation",value:function(e){return e.element}},{key:"getParentNodeLocation",value:function(e){return this.model.getParentNodeLocation(e)}},{key:"isCollapsible",value:function(e){return this.model.isCollapsible(e)}},{key:"setCollapsible",value:function(e,t){return this.model.setCollapsible(e,t)}},{key:"isCollapsed",value:function(e){return this.model.isCollapsed(e)}},{key:"setCollapsed",value:function(e,t,n){return this.model.setCollapsed(e,t,n)}},{key:"expandTo",value:function(e){return this.model.expandTo(e)}},{key:"rerender",value:function(e){return this.model.rerender(e)}},{key:"refilter",value:function(){return this.model.refilter()}},{key:"getCompressedTreeNode",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return this.model.getNode(e)}}]),e}(),Te=n(94995),Ie=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},Oe=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,o){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};return(0,c.Z)(this,n),t.call(this,e,i,r,o,a)}return(0,d.Z)(n,[{key:"onDidChangeCollapseState",get:function(){return this.model.onDidChangeCollapseState}},{key:"setChildren",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.$.empty(),n=arguments.length>2?arguments[2]:void 0;this.model.setChildren(e,t,n)}},{key:"rerender",value:function(e){void 0!==e?this.model.rerender(e):this.view.rerender()}},{key:"hasElement",value:function(e){return this.model.has(e)}},{key:"createModel",value:function(e,t,n){return new be(e,t,n)}}]),n}(ye),Ae=function(){function e(t,n){(0,c.Z)(this,e),this._compressedTreeNodeProvider=t,this.renderer=n,this.templateId=n.templateId,n.onDidChangeTwistieState&&(this.onDidChangeTwistieState=n.onDidChangeTwistieState)}return(0,d.Z)(e,[{key:"compressedTreeNodeProvider",get:function(){return this._compressedTreeNodeProvider()}},{key:"renderTemplate",value:function(e){return{compressedTreeNode:void 0,data:this.renderer.renderTemplate(e)}}},{key:"renderElement",value:function(e,t,n,i){var r=this.compressedTreeNodeProvider.getCompressedTreeNode(e.element);1===r.element.elements.length?(n.compressedTreeNode=void 0,this.renderer.renderElement(e,t,n.data,i)):(n.compressedTreeNode=r,this.renderer.renderCompressedElements(r,t,n.data,i))}},{key:"disposeElement",value:function(e,t,n,i){n.compressedTreeNode?this.renderer.disposeCompressedElements&&this.renderer.disposeCompressedElements(n.compressedTreeNode,t,n.data,i):this.renderer.disposeElement&&this.renderer.disposeElement(e,t,n.data,i)}},{key:"disposeTemplate",value:function(e){this.renderer.disposeTemplate(e.data)}},{key:"renderTwistie",value:function(e,t){return!!this.renderer.renderTwistie&&this.renderer.renderTwistie(e,t)}}]),e}();Ie([Te.H],Ae.prototype,"compressedTreeNodeProvider",null);var Re=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,a){var s,u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};(0,c.Z)(this,n);var l=function(){return(0,o.Z)(s)},d=a.map((function(e){return new Ae(l,e)}));return s=t.call(this,e,i,r,d,function(e,t){return t&&Object.assign(Object.assign({},t),{keyboardNavigationLabelProvider:t.keyboardNavigationLabelProvider&&{getKeyboardNavigationLabel:function(n){var i;try{i=e().getCompressedTreeNode(n)}catch(r){return t.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(n)}return 1===i.element.elements.length?t.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(n):t.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(i.element.elements)}}})}(l,u))}return(0,d.Z)(n,[{key:"setChildren",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.$.empty(),n=arguments.length>2?arguments[2]:void 0;this.model.setChildren(e,t,n)}},{key:"createModel",value:function(e,t,n){return new Me(e,t,n)}},{key:"updateOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,a.Z)((0,s.Z)(n.prototype),"updateOptions",this).call(this,e),"undefined"!==typeof e.compressionEnabled&&this.model.setCompressionEnabled(e.compressionEnabled)}},{key:"getCompressedTreeNode",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return this.model.getCompressedTreeNode(e)}}]),n}(Oe),Pe=n(87757),Ze=n.n(Pe),Fe=n(8729),je=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};function He(e){return Object.assign(Object.assign({},e),{children:[],refreshPromise:void 0,stale:!0,slow:!1,collapsedByDefault:void 0})}function Be(e,t){return!!t.parent&&(t.parent===e||Be(e,t.parent))}function ze(e,t){return e===t||Be(e,t)||Be(t,e)}var We=function(){function e(t){(0,c.Z)(this,e),this.node=t}return(0,d.Z)(e,[{key:"element",get:function(){return this.node.element.element}},{key:"children",get:function(){return this.node.children.map((function(t){return new e(t)}))}},{key:"depth",get:function(){return this.node.depth}},{key:"visibleChildrenCount",get:function(){return this.node.visibleChildrenCount}},{key:"visibleChildIndex",get:function(){return this.node.visibleChildIndex}},{key:"collapsible",get:function(){return this.node.collapsible}},{key:"collapsed",get:function(){return this.node.collapsed}},{key:"visible",get:function(){return this.node.visible}},{key:"filterData",get:function(){return this.node.filterData}}]),e}(),Ve=function(){function e(t,n,i){(0,c.Z)(this,e),this.renderer=t,this.nodeMapper=n,this.onDidChangeTwistieState=i,this.renderedNodes=new Map,this.templateId=t.templateId}return(0,d.Z)(e,[{key:"renderTemplate",value:function(e){return{templateData:this.renderer.renderTemplate(e)}}},{key:"renderElement",value:function(e,t,n,i){this.renderer.renderElement(this.nodeMapper.map(e),t,n.templateData,i)}},{key:"renderTwistie",value:function(e,t){var n,i;return e.slow?((n=t.classList).add.apply(n,(0,A.Z)(re.classNamesArray)),!0):((i=t.classList).remove.apply(i,(0,A.Z)(re.classNamesArray)),!1)}},{key:"disposeElement",value:function(e,t,n,i){this.renderer.disposeElement&&this.renderer.disposeElement(this.nodeMapper.map(e),t,n.templateData,i)}},{key:"disposeTemplate",value:function(e){this.renderer.disposeTemplate(e.templateData)}},{key:"dispose",value:function(){this.renderedNodes.clear()}}]),e}();function Ye(e){return{browserEvent:e.browserEvent,elements:e.elements.map((function(e){return e.element}))}}function Ue(e){return{browserEvent:e.browserEvent,element:e.element&&e.element.element,target:e.target}}var Ke=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this,e.elements.map((function(e){return e.element})))).data=e,i}return(0,d.Z)(n)}(H.kX);function qe(e){return e instanceof H.kX?new Ke(e):e}var Ge=function(){function e(t){(0,c.Z)(this,e),this.dnd=t}return(0,d.Z)(e,[{key:"getDragURI",value:function(e){return this.dnd.getDragURI(e.element)}},{key:"getDragLabel",value:function(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map((function(e){return e.element})),t)}},{key:"onDragStart",value:function(e,t){this.dnd.onDragStart&&this.dnd.onDragStart(qe(e),t)}},{key:"onDragOver",value:function(e,t,n,i){return this.dnd.onDragOver(qe(e),t&&t.element,n,i)}},{key:"drop",value:function(e,t,n,i){this.dnd.drop(qe(e),t&&t.element,n,i)}},{key:"onDragEnd",value:function(e){this.dnd.onDragEnd&&this.dnd.onDragEnd(e)}}]),e}();function $e(e){return e&&Object.assign(Object.assign({},e),{collapseByDefault:!0,identityProvider:e.identityProvider&&{getId:function(t){return e.identityProvider.getId(t.element)}},dnd:e.dnd&&new Ge(e.dnd),multipleSelectionController:e.multipleSelectionController&&{isSelectionSingleChangeEvent:function(t){return e.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({},t),{element:t.element}))},isSelectionRangeChangeEvent:function(t){return e.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({},t),{element:t.element}))}},accessibilityProvider:e.accessibilityProvider&&Object.assign(Object.assign({},e.accessibilityProvider),{getPosInSet:void 0,getSetSize:void 0,getRole:e.accessibilityProvider.getRole?function(t){return e.accessibilityProvider.getRole(t.element)}:function(){return"treeitem"},isChecked:e.accessibilityProvider.isChecked?function(t){var n;return!!(null===(n=e.accessibilityProvider)||void 0===n?void 0:n.isChecked(t.element))}:void 0,getAriaLabel:function(t){return e.accessibilityProvider.getAriaLabel(t.element)},getWidgetAriaLabel:function(){return e.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:e.accessibilityProvider.getWidgetRole?function(){return e.accessibilityProvider.getWidgetRole()}:function(){return"tree"},getAriaLevel:e.accessibilityProvider.getAriaLevel&&function(t){return e.accessibilityProvider.getAriaLevel(t.element)},getActiveDescendantId:e.accessibilityProvider.getActiveDescendantId&&function(t){return e.accessibilityProvider.getActiveDescendantId(t.element)}}),filter:e.filter&&{filter:function(t,n){return e.filter.filter(t.element,n)}},keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},e.keyboardNavigationLabelProvider),{getKeyboardNavigationLabel:function(t){return e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t.element)}}),sorter:void 0,expandOnlyOnTwistieClick:"undefined"===typeof e.expandOnlyOnTwistieClick?void 0:"function"!==typeof e.expandOnlyOnTwistieClick?e.expandOnlyOnTwistieClick:function(t){return e.expandOnlyOnTwistieClick(t.element)},additionalScrollHeight:e.additionalScrollHeight})}function Qe(e,t){t(e),e.children.forEach((function(e){return Qe(e,t)}))}var Xe=function(){function e(t,n,i,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};(0,c.Z)(this,e),this.user=t,this.dataSource=o,this.nodes=new Map,this.subTreeRefreshPromises=new Map,this.refreshPromises=new Map,this._onDidRender=new v.Q5,this._onDidChangeNodeSlowState=new v.Q5,this.nodeMapper=new F((function(e){return new We(e)})),this.disposables=new f.SL,this.identityProvider=a.identityProvider,this.autoExpandSingleChildren="undefined"!==typeof a.autoExpandSingleChildren&&a.autoExpandSingleChildren,this.sorter=a.sorter,this.collapseByDefault=a.collapseByDefault,this.tree=this.createTree(t,n,i,r,a),this.root=He({element:void 0,parent:null,hasChildren:!0}),this.identityProvider&&(this.root=Object.assign(Object.assign({},this.root),{id:null})),this.nodes.set(null,this.root),this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState,this,this.disposables)}return(0,d.Z)(e,[{key:"onDidChangeFocus",get:function(){return v.ju.map(this.tree.onDidChangeFocus,Ye)}},{key:"onDidChangeSelection",get:function(){return v.ju.map(this.tree.onDidChangeSelection,Ye)}},{key:"onMouseDblClick",get:function(){return v.ju.map(this.tree.onMouseDblClick,Ue)}},{key:"onPointer",get:function(){return v.ju.map(this.tree.onPointer,Ue)}},{key:"onDidFocus",get:function(){return this.tree.onDidFocus}},{key:"onDidDispose",get:function(){return this.tree.onDidDispose}},{key:"createTree",value:function(e,t,n,i,r){var o=this,a=new le(n),s=i.map((function(e){return new Ve(e,o.nodeMapper,o._onDidChangeNodeSlowState.event)})),u=$e(r)||{};return new Oe(e,t,a,s,u)}},{key:"updateOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.tree.updateOptions(e)}},{key:"getHTMLElement",value:function(){return this.tree.getHTMLElement()}},{key:"scrollTop",get:function(){return this.tree.scrollTop},set:function(e){this.tree.scrollTop=e}},{key:"domFocus",value:function(){this.tree.domFocus()}},{key:"layout",value:function(e,t){this.tree.layout(e,t)}},{key:"style",value:function(e){this.tree.style(e)}},{key:"getInput",value:function(){return this.root.element}},{key:"setInput",value:function(e,t){return je(this,void 0,void 0,Ze().mark((function n(){var i;return Ze().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return this.refreshPromises.forEach((function(e){return e.cancel()})),this.refreshPromises.clear(),this.root.element=e,i=t&&{viewState:t,focus:[],selection:[]},n.next=6,this._updateChildren(e,!0,!1,i);case 6:i&&(this.tree.setFocus(i.focus),this.tree.setSelection(i.selection)),t&&"number"===typeof t.scrollTop&&(this.scrollTop=t.scrollTop);case 8:case"end":return n.stop()}}),n,this)})))}},{key:"_updateChildren",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.root.element,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0;return je(this,void 0,void 0,Ze().mark((function o(){var a;return Ze().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if("undefined"!==typeof this.root.element){o.next=2;break}throw new Z(this.user,"Tree input not set");case 2:if(!this.root.refreshPromise){o.next=7;break}return o.next=5,this.root.refreshPromise;case 5:return o.next=7,v.ju.toPromise(this._onDidRender.event);case 7:return a=this.getDataNode(e),o.next=10,this.refreshAndRenderNode(a,t,i,r);case 10:if(n)try{this.tree.rerender(a)}catch(s){}case 11:case"end":return o.stop()}}),o,this)})))}},{key:"rerender",value:function(e){if(void 0!==e&&e!==this.root.element){var t=this.getDataNode(e);this.tree.rerender(t)}else this.tree.rerender()}},{key:"collapse",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.getDataNode(e);return this.tree.collapse(n===this.root?null:n,t)}},{key:"expand",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return je(this,void 0,void 0,Ze().mark((function n(){var i,r;return Ze().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if("undefined"!==typeof this.root.element){n.next=2;break}throw new Z(this.user,"Tree input not set");case 2:if(!this.root.refreshPromise){n.next=7;break}return n.next=5,this.root.refreshPromise;case 5:return n.next=7,v.ju.toPromise(this._onDidRender.event);case 7:if(i=this.getDataNode(e),!this.tree.hasElement(i)||this.tree.isCollapsible(i)){n.next=10;break}return n.abrupt("return",!1);case 10:if(!i.refreshPromise){n.next=15;break}return n.next=13,this.root.refreshPromise;case 13:return n.next=15,v.ju.toPromise(this._onDidRender.event);case 15:if(i===this.root||i.refreshPromise||this.tree.isCollapsed(i)){n.next=17;break}return n.abrupt("return",!1);case 17:if(r=this.tree.expand(i===this.root?null:i,t),!i.refreshPromise){n.next=23;break}return n.next=21,this.root.refreshPromise;case 21:return n.next=23,v.ju.toPromise(this._onDidRender.event);case 23:return n.abrupt("return",r);case 24:case"end":return n.stop()}}),n,this)})))}},{key:"setSelection",value:function(e,t){var n=this,i=e.map((function(e){return n.getDataNode(e)}));this.tree.setSelection(i,t)}},{key:"getSelection",value:function(){return this.tree.getSelection().map((function(e){return e.element}))}},{key:"setFocus",value:function(e,t){var n=this,i=e.map((function(e){return n.getDataNode(e)}));this.tree.setFocus(i,t)}},{key:"getFocus",value:function(){return this.tree.getFocus().map((function(e){return e.element}))}},{key:"reveal",value:function(e,t){this.tree.reveal(this.getDataNode(e),t)}},{key:"getDataNode",value:function(e){var t=this.nodes.get(e===this.root.element?null:e);if(!t)throw new Z(this.user,"Data tree node not found: ".concat(e));return t}},{key:"refreshAndRenderNode",value:function(e,t,n,i){return je(this,void 0,void 0,Ze().mark((function r(){return Ze().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.refreshNode(e,t,n);case 2:this.render(e,n,i);case 3:case"end":return r.stop()}}),r,this)})))}},{key:"refreshNode",value:function(e,t,n){return je(this,void 0,void 0,Ze().mark((function i(){var r,o=this;return Ze().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(this.subTreeRefreshPromises.forEach((function(i,a){!r&&ze(a,e)&&(r=i.then((function(){return o.refreshNode(e,t,n)})))})),!r){i.next=3;break}return i.abrupt("return",r);case 3:return i.abrupt("return",this.doRefreshSubTree(e,t,n));case 4:case"end":return i.stop()}}),i,this)})))}},{key:"doRefreshSubTree",value:function(e,t,n){return je(this,void 0,void 0,Ze().mark((function i(){var r,o,a=this;return Ze().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return e.refreshPromise=new Promise((function(e){return r=e})),this.subTreeRefreshPromises.set(e,e.refreshPromise),e.refreshPromise.finally((function(){e.refreshPromise=void 0,a.subTreeRefreshPromises.delete(e)})),i.prev=3,i.next=6,this.doRefreshNode(e,t,n);case 6:return o=i.sent,e.stale=!1,i.next=10,G.jT.settled(o.map((function(e){return a.doRefreshSubTree(e,t,n)})));case 10:return i.prev=10,r(),i.finish(10);case 13:case"end":return i.stop()}}),i,this,[[3,,10,13]])})))}},{key:"doRefreshNode",value:function(e,t,n){return je(this,void 0,void 0,Ze().mark((function i(){var r,o,a,s=this;return Ze().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return e.hasChildren=!!this.dataSource.hasChildren(e.element),e.hasChildren?((o=(0,G.Vs)(800)).then((function(){e.slow=!0,s._onDidChangeNodeSlowState.fire(e)}),(function(e){return null})),r=this.doGetChildren(e).finally((function(){return o.cancel()}))):r=Promise.resolve(I.$.empty()),i.prev=2,i.next=5,r;case 5:return a=i.sent,i.abrupt("return",this.setChildren(e,a,t,n));case 9:if(i.prev=9,i.t0=i.catch(2),e!==this.root&&this.tree.hasElement(e)&&this.tree.collapse(e),!(0,Fe.VV)(i.t0)){i.next=14;break}return i.abrupt("return",[]);case 14:throw i.t0;case 15:return i.prev=15,e.slow&&(e.slow=!1,this._onDidChangeNodeSlowState.fire(e)),i.finish(15);case 18:case"end":return i.stop()}}),i,this,[[2,9,15,18]])})))}},{key:"doGetChildren",value:function(e){var t=this,n=this.refreshPromises.get(e);return n||(n=(0,G.PG)((function(){return je(t,void 0,void 0,Ze().mark((function t(){var n;return Ze().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.dataSource.getChildren(e.element);case 2:return n=t.sent,t.abrupt("return",this.processChildren(n));case 4:case"end":return t.stop()}}),t,this)})))})),this.refreshPromises.set(e,n),n.finally((function(){t.refreshPromises.delete(e)})))}},{key:"_onDidChangeCollapseState",value:function(e){var t=e.node,n=e.deep;null!==t.element&&!t.collapsed&&t.element.stale&&(n?this.collapse(t.element.element):this.refreshAndRenderNode(t.element,!1).catch(Fe.dL))}},{key:"setChildren",value:function(e,t,n,i){var r,o=this,a=(0,A.Z)(t);if(0===e.children.length&&0===a.length)return[];var s,u=new Map,l=new Map,c=(0,O.Z)(e.children);try{for(c.s();!(s=c.n()).done;){var d=s.value;if(u.set(d.element,d),this.identityProvider){var h=this.tree.isCollapsed(d);l.set(d.id,{node:d,collapsed:h})}}}catch(b){c.e(b)}finally{c.f()}var f,p=[],g=a.map((function(t){var r=!!o.dataSource.hasChildren(t);if(!o.identityProvider){var a=He({element:t,parent:e,hasChildren:r});return r&&o.collapseByDefault&&!o.collapseByDefault(t)&&(a.collapsedByDefault=!1,p.push(a)),a}var s=o.identityProvider.getId(t).toString(),c=l.get(s);if(c){var d=c.node;return u.delete(d.element),o.nodes.delete(d.element),o.nodes.set(t,d),d.element=t,d.hasChildren=r,n?c.collapsed?(d.children.forEach((function(e){return Qe(e,(function(e){return o.nodes.delete(e.element)}))})),d.children.splice(0,d.children.length),d.stale=!0):p.push(d):r&&o.collapseByDefault&&!o.collapseByDefault(t)&&(d.collapsedByDefault=!1,p.push(d)),d}var h=He({element:t,parent:e,id:s,hasChildren:r});return i&&i.viewState.focus&&i.viewState.focus.indexOf(s)>-1&&i.focus.push(h),i&&i.viewState.selection&&i.viewState.selection.indexOf(s)>-1&&i.selection.push(h),i&&i.viewState.expanded&&i.viewState.expanded.indexOf(s)>-1?p.push(h):r&&o.collapseByDefault&&!o.collapseByDefault(t)&&(h.collapsedByDefault=!1,p.push(h)),h})),v=(0,O.Z)(u.values());try{for(v.s();!(f=v.n()).done;){Qe(f.value,(function(e){return o.nodes.delete(e.element)}))}}catch(b){v.e(b)}finally{v.f()}var m,_=(0,O.Z)(g);try{for(_.s();!(m=_.n()).done;){var y=m.value;this.nodes.set(y.element,y)}}catch(b){_.e(b)}finally{_.f()}return(r=e.children).splice.apply(r,[0,e.children.length].concat((0,A.Z)(g))),e!==this.root&&this.autoExpandSingleChildren&&1===g.length&&0===p.length&&(g[0].collapsedByDefault=!1,p.push(g[0])),p}},{key:"render",value:function(e,t,n){var i=this,r=e.children.map((function(e){return i.asTreeElement(e,t)})),o=n&&Object.assign(Object.assign({},n),{diffIdentityProvider:n.diffIdentityProvider&&{getId:function(e){return n.diffIdentityProvider.getId(e.element)}}});this.tree.setChildren(e===this.root?null:e,r,o),e!==this.root&&this.tree.setCollapsible(e,e.hasChildren),this._onDidRender.fire()}},{key:"asTreeElement",value:function(e,t){var n,i=this;return e.stale?{element:e,collapsible:e.hasChildren,collapsed:!0}:(n=!(t&&t.viewState.expanded&&e.id&&t.viewState.expanded.indexOf(e.id)>-1)&&e.collapsedByDefault,e.collapsedByDefault=void 0,{element:e,children:e.hasChildren?I.$.map(e.children,(function(e){return i.asTreeElement(e,t)})):[],collapsible:e.hasChildren,collapsed:n})}},{key:"processChildren",value:function(e){return this.sorter&&(e=(0,A.Z)(e).sort(this.sorter.compare.bind(this.sorter))),e}},{key:"dispose",value:function(){this.disposables.dispose()}}]),e}(),Je=function(){function e(t){(0,c.Z)(this,e),this.node=t}return(0,d.Z)(e,[{key:"element",get:function(){return{elements:this.node.element.elements.map((function(e){return e.element})),incompressible:this.node.element.incompressible}}},{key:"children",get:function(){return this.node.children.map((function(t){return new e(t)}))}},{key:"depth",get:function(){return this.node.depth}},{key:"visibleChildrenCount",get:function(){return this.node.visibleChildrenCount}},{key:"visibleChildIndex",get:function(){return this.node.visibleChildIndex}},{key:"collapsible",get:function(){return this.node.collapsible}},{key:"collapsed",get:function(){return this.node.collapsed}},{key:"visible",get:function(){return this.node.visible}},{key:"filterData",get:function(){return this.node.filterData}}]),e}(),et=function(){function e(t,n,i,r){(0,c.Z)(this,e),this.renderer=t,this.nodeMapper=n,this.compressibleNodeMapperProvider=i,this.onDidChangeTwistieState=r,this.renderedNodes=new Map,this.disposables=[],this.templateId=t.templateId}return(0,d.Z)(e,[{key:"renderTemplate",value:function(e){return{templateData:this.renderer.renderTemplate(e)}}},{key:"renderElement",value:function(e,t,n,i){this.renderer.renderElement(this.nodeMapper.map(e),t,n.templateData,i)}},{key:"renderCompressedElements",value:function(e,t,n,i){this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(e),t,n.templateData,i)}},{key:"renderTwistie",value:function(e,t){var n,i;return e.slow?((n=t.classList).add.apply(n,(0,A.Z)(re.classNamesArray)),!0):((i=t.classList).remove.apply(i,(0,A.Z)(re.classNamesArray)),!1)}},{key:"disposeElement",value:function(e,t,n,i){this.renderer.disposeElement&&this.renderer.disposeElement(this.nodeMapper.map(e),t,n.templateData,i)}},{key:"disposeCompressedElements",value:function(e,t,n,i){this.renderer.disposeCompressedElements&&this.renderer.disposeCompressedElements(this.compressibleNodeMapperProvider().map(e),t,n.templateData,i)}},{key:"disposeTemplate",value:function(e){this.renderer.disposeTemplate(e.templateData)}},{key:"dispose",value:function(){this.renderedNodes.clear(),this.disposables=(0,f.B9)(this.disposables)}}]),e}();var tt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,o,a,s){var u,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{};return(0,c.Z)(this,n),(u=t.call(this,e,i,r,a,s,l)).compressionDelegate=o,u.compressibleNodeMapper=new F((function(e){return new Je(e)})),u.filter=l.filter,u}return(0,d.Z)(n,[{key:"createTree",value:function(e,t,n,i,r){var o=this,a=new le(n),s=i.map((function(e){return new et(e,o.nodeMapper,(function(){return o.compressibleNodeMapper}),o._onDidChangeNodeSlowState.event)})),u=function(e){var t=e&&$e(e);return t&&Object.assign(Object.assign({},t),{keyboardNavigationLabelProvider:t.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},t.keyboardNavigationLabelProvider),{getCompressedNodeKeyboardNavigationLabel:function(t){return e.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(t.map((function(e){return e.element})))}})})}(r)||{};return new Re(e,t,a,s,u)}},{key:"asTreeElement",value:function(e,t){return Object.assign({incompressible:this.compressionDelegate.isIncompressible(e.element)},(0,a.Z)((0,s.Z)(n.prototype),"asTreeElement",this).call(this,e,t))}},{key:"updateOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.tree.updateOptions(e)}},{key:"render",value:function(e,t){var i=this;if(!this.identityProvider)return(0,a.Z)((0,s.Z)(n.prototype),"render",this).call(this,e,t);var r=function(e){return i.identityProvider.getId(e).toString()},o=function(e){var t,n=new Set,o=(0,O.Z)(e);try{for(o.s();!(t=o.n()).done;){var a=t.value,s=i.tree.getCompressedTreeNode(a===i.root?null:a);if(s.element){var u,l=(0,O.Z)(s.element.elements);try{for(l.s();!(u=l.n()).done;){var c=u.value;n.add(r(c.element))}}catch(d){l.e(d)}finally{l.f()}}}}catch(d){o.e(d)}finally{o.f()}return n},u=o(this.tree.getSelection()),l=o(this.tree.getFocus());(0,a.Z)((0,s.Z)(n.prototype),"render",this).call(this,e,t);var c=this.getSelection(),d=!1,h=this.getFocus(),f=!1;!function e(t){var n=t.element;if(n)for(var i=0;i<n.elements.length;i++){var o=r(n.elements[i].element),a=n.elements[n.elements.length-1].element;u.has(o)&&-1===c.indexOf(a)&&(c.push(a),d=!0),l.has(o)&&-1===h.indexOf(a)&&(h.push(a),f=!0)}t.children.forEach(e)}(this.tree.getCompressedTreeNode(e===this.root?null:e)),d&&this.setSelection(c),f&&this.setFocus(h)}},{key:"processChildren",value:function(e){var t=this;return this.filter&&(e=I.$.filter(e,(function(e){var n,i=t.filter.filter(e,1),r="boolean"===typeof(n=i)?n?1:0:Y(n)?U(n.visibility):U(n);if(2===r)throw new Error("Recursive tree visibility not supported in async data compressed trees");return 1===r}))),(0,a.Z)((0,s.Z)(n.prototype),"processChildren",this).call(this,e)}}]),n}(Xe);var nt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,o,a){var s,u=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return(0,c.Z)(this,n),(s=t.call(this,e,i,r,o,u)).user=e,s.dataSource=a,s.identityProvider=u.identityProvider,s}return(0,d.Z)(n,[{key:"createModel",value:function(e,t,n){return new be(e,t,n)}}]),n}(ye),it=n(40782),rt=n(44393),ot=function(){function e(t,n,i){(0,c.Z)(this,e),this.columns=t,this.getColumnSize=i,this.templateId=e.TemplateId,this.renderedTemplates=new Set;var r=new Map(n.map((function(e){return[e.templateId,e]})));this.renderers=[];var o,a=(0,O.Z)(t);try{for(a.s();!(o=a.n()).done;){var s=o.value,u=r.get(s.templateId);if(!u)throw new Error("Table cell renderer for template id ".concat(s.templateId," not found."));this.renderers.push(u)}}catch(l){a.e(l)}finally{a.f()}}return(0,d.Z)(e,[{key:"renderTemplate",value:function(e){for(var t=(0,h.append)(e,(0,h.$)(".monaco-table-tr")),n=[],i=[],r=0;r<this.columns.length;r++){var o=this.renderers[r],a=(0,h.append)(t,(0,h.$)(".monaco-table-td",{"data-col-index":r}));a.style.width="".concat(this.getColumnSize(r),"px"),n.push(a),i.push(o.renderTemplate(a))}var s={container:e,cellContainers:n,cellTemplateData:i};return this.renderedTemplates.add(s),s}},{key:"renderElement",value:function(e,t,n,i){for(var r=0;r<this.columns.length;r++){var o=this.columns[r].project(e);this.renderers[r].renderElement(o,t,n.cellTemplateData[r],i)}}},{key:"disposeElement",value:function(e,t,n,i){for(var r=0;r<this.columns.length;r++){var o=this.renderers[r];if(o.disposeElement){var a=this.columns[r].project(e);o.disposeElement(a,t,n.cellTemplateData[r],i)}}}},{key:"disposeTemplate",value:function(e){for(var t=0;t<this.columns.length;t++){this.renderers[t].disposeTemplate(e.cellTemplateData[t])}(0,h.clearNode)(e.container),this.renderedTemplates.delete(e)}},{key:"layoutColumn",value:function(e,t){var n,i=(0,O.Z)(this.renderedTemplates);try{for(i.s();!(n=i.n()).done;){n.value.cellContainers[e].style.width="".concat(t,"px")}}catch(r){i.e(r)}finally{i.f()}}}]),e}();ot.TemplateId="row";var at,st=function(){function e(t,n){(0,c.Z)(this,e),this.column=t,this.index=n,this._onDidLayout=new v.Q5,this.onDidLayout=this._onDidLayout.event,this.element=(0,h.$)(".monaco-table-th",{"data-col-index":n,title:t.tooltip},t.label)}return(0,d.Z)(e,[{key:"minimumSize",get:function(){var e;return null!==(e=this.column.minimumWidth)&&void 0!==e?e:120}},{key:"maximumSize",get:function(){var e;return null!==(e=this.column.maximumWidth)&&void 0!==e?e:Number.POSITIVE_INFINITY}},{key:"onDidChange",get:function(){var e;return null!==(e=this.column.onDidChangeWidthConstraints)&&void 0!==e?e:v.ju.None}},{key:"layout",value:function(e){this._onDidLayout.fire([this.index,e])}}]),e}(),ut=function(){function e(t,n,i,o,a,s){var u=this;(0,c.Z)(this,e),this.virtualDelegate=i,this.domId="table_id_".concat(++e.InstanceCount),this.cachedHeight=0,this.domNode=(0,h.append)(n,(0,h.$)(".monaco-table.".concat(this.domId)));var l=o.map((function(e,t){return new st(e,t)})),d={size:l.reduce((function(e,t){return e+t.column.weight}),0),views:l.map((function(e){return{size:e.column.weight,view:e}}))};this.splitview=new rt.z(this.domNode,{orientation:1,scrollbarVisibility:2,getSashOrthogonalSize:function(){return u.cachedHeight},descriptor:d}),this.splitview.el.style.height="".concat(i.headerRowHeight,"px"),this.splitview.el.style.lineHeight="".concat(i.headerRowHeight,"px");var f,p=new ot(o,a,(function(e){return u.splitview.getViewSize(e)}));this.list=new g.aV(t,this.domNode,(f=i,{getHeight:function(e){return f.getHeight(e)},getTemplateId:function(){return ot.TemplateId}}),[p],s),this.columnLayoutDisposable=v.ju.any.apply(v.ju,(0,A.Z)(l.map((function(e){return e.onDidLayout}))))((function(e){var t=(0,r.Z)(e,2),n=t[0],i=t[1];return p.layoutColumn(n,i)})),this.styleElement=(0,h.createStyleSheet)(this.domNode),this.style({})}return(0,d.Z)(e,[{key:"onDidChangeFocus",get:function(){return this.list.onDidChangeFocus}},{key:"onDidChangeSelection",get:function(){return this.list.onDidChangeSelection}},{key:"onMouseDblClick",get:function(){return this.list.onMouseDblClick}},{key:"onPointer",get:function(){return this.list.onPointer}},{key:"onDidFocus",get:function(){return this.list.onDidFocus}},{key:"onDidDispose",get:function(){return this.list.onDidDispose}},{key:"updateOptions",value:function(e){this.list.updateOptions(e)}},{key:"splice",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];this.list.splice(e,t,n)}},{key:"getHTMLElement",value:function(){return this.domNode}},{key:"style",value:function(e){var t=[];t.push(".monaco-table.".concat(this.domId," > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\ttop: ").concat(this.virtualDelegate.headerRowHeight+1,"px;\n\t\t\theight: calc(100% - ").concat(this.virtualDelegate.headerRowHeight,"px);\n\t\t}")),this.styleElement.textContent=t.join("\n"),this.list.style(e)}},{key:"getSelectedElements",value:function(){return this.list.getSelectedElements()}},{key:"getSelection",value:function(){return this.list.getSelection()}},{key:"getFocus",value:function(){return this.list.getFocus()}},{key:"dispose",value:function(){this.splitview.dispose(),this.list.dispose(),this.columnLayoutDisposable.dispose()}}]),e}();ut.InstanceCount=0;var lt=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},ct=function(e,t){return function(n,i){t(n,i,e)}},dt=(0,L.yh)("listService"),ht=function(){function e(t){(0,c.Z)(this,e),this._themeService=t,this.disposables=new f.SL,this.lists=[],this._lastFocusedWidget=void 0,this._hasCreatedStyleController=!1}return(0,d.Z)(e,[{key:"lastFocusedList",get:function(){return this._lastFocusedWidget}},{key:"register",value:function(e,t){var n=this;if(!this._hasCreatedStyleController){this._hasCreatedStyleController=!0;var i=new g.wD((0,h.createStyleSheet)(),"");this.disposables.add((0,N.Jl)(i,this._themeService))}if(this.lists.some((function(t){return t.widget===e})))throw new Error("Cannot register the same widget multiple times");var r={widget:e,extraContextKeys:t};return this.lists.push(r),e.getHTMLElement()===document.activeElement&&(this._lastFocusedWidget=e),(0,f.F8)(e.onDidFocus((function(){return n._lastFocusedWidget=e})),(0,f.OF)((function(){return n.lists.splice(n.lists.indexOf(r),1)})),e.onDidDispose((function(){n.lists=n.lists.filter((function(e){return e!==r})),n._lastFocusedWidget===e&&(n._lastFocusedWidget=void 0)})))}},{key:"dispose",value:function(){this.disposables.dispose()}}]),e}();ht=lt([ct(0,M.XE)],ht);var ft=new x.uy("listFocus",!0),pt=new x.uy("listSupportsMultiselect",!0),gt=x.Ao.and(ft,x.Ao.not(T.d)),vt=new x.uy("listHasSelectionOrFocus",!1),mt=new x.uy("listDoubleSelection",!1),_t=new x.uy("listMultiSelection",!1),yt=new x.uy("listSelectionNavigation",!1),bt=new x.uy("listSupportsKeyboardNavigation",!0),wt="listAutomaticKeyboardNavigation",Ct=new x.uy(wt,!0),kt=!1;function St(e,t){var n=e.createScoped(t.getHTMLElement());return ft.bindTo(n),n}var xt="workbench.list.multiSelectModifier",Lt="workbench.list.openMode",Et="workbench.list.horizontalScrolling",Dt="workbench.list.keyboardNavigation",Nt="workbench.list.automaticKeyboardNavigation",Mt="workbench.tree.indent",Tt="workbench.tree.renderIndentGuides",It="workbench.list.smoothScrolling",Ot="workbench.tree.expandMode";function At(e){return"alt"===e.getValue(xt)}var Rt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e){var i;return(0,c.Z)(this,n),(i=t.call(this)).configurationService=e,i.useAltAsMultipleSelectionModifier=At(e),i.registerListeners(),i}return(0,d.Z)(n,[{key:"registerListeners",value:function(){var e=this;this._register(this.configurationService.onDidChangeConfiguration((function(t){t.affectsConfiguration(xt)&&(e.useAltAsMultipleSelectionModifier=At(e.configurationService))})))}},{key:"isSelectionSingleChangeEvent",value:function(e){return this.useAltAsMultipleSelectionModifier?e.browserEvent.altKey:(0,g.Zo)(e)}},{key:"isSelectionRangeChangeEvent",value:function(e){return(0,g.wn)(e)}}]),n}(f.JT);function Pt(e,t,n){var i=new f.SL,r=Object.assign({},e);if(!1!==e.multipleSelectionSupport&&!e.multipleSelectionController){var o=new Rt(t);r.multipleSelectionController=o,i.add(o)}return r.keyboardNavigationDelegate={mightProducePrintableCharacter:function(e){return n.mightProducePrintableCharacter(e)}},r.smoothScrolling=t.getValue(It),[r,i]}var Zt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,a,s,u,l,d,h,f,p){var g;(0,c.Z)(this,n);var v="undefined"!==typeof u.horizontalScrolling?u.horizontalScrolling:f.getValue(Et),m=Pt(u,f,p),_=(0,r.Z)(m,2),y=_[0],b=_[1];return(g=t.call(this,e,i,a,s,Object.assign(Object.assign(Object.assign({keyboardSupport:!1},(0,N.o)(h.getColorTheme(),N.O2)),y),{horizontalScrolling:v}))).disposables.add(b),g.contextKeyService=St(l,(0,o.Z)(g)),g.themeService=h,pt.bindTo(g.contextKeyService).set(!(!1===u.multipleSelectionSupport)),yt.bindTo(g.contextKeyService).set(Boolean(u.selectionNavigation)),g.listHasSelectionOrFocus=vt.bindTo(g.contextKeyService),g.listDoubleSelection=mt.bindTo(g.contextKeyService),g.listMultiSelection=_t.bindTo(g.contextKeyService),g.horizontalScrolling=u.horizontalScrolling,g._useAltAsMultipleSelectionModifier=At(f),g.disposables.add(g.contextKeyService),g.disposables.add(d.register((0,o.Z)(g))),u.overrideStyles&&g.updateStyles(u.overrideStyles),g.disposables.add(g.onDidChangeSelection((function(){var e=g.getSelection(),t=g.getFocus();g.contextKeyService.bufferChangeEvents((function(){g.listHasSelectionOrFocus.set(e.length>0||t.length>0),g.listMultiSelection.set(e.length>1),g.listDoubleSelection.set(2===e.length)}))}))),g.disposables.add(g.onDidChangeFocus((function(){var e=g.getSelection(),t=g.getFocus();g.listHasSelectionOrFocus.set(e.length>0||t.length>0)}))),g.disposables.add(f.onDidChangeConfiguration((function(e){e.affectsConfiguration(xt)&&(g._useAltAsMultipleSelectionModifier=At(f));var t={};if(e.affectsConfiguration(Et)&&void 0===g.horizontalScrolling){var n=f.getValue(Et);t=Object.assign(Object.assign({},t),{horizontalScrolling:n})}if(e.affectsConfiguration(It)){var i=f.getValue(It);t=Object.assign(Object.assign({},t),{smoothScrolling:i})}Object.keys(t).length>0&&g.updateOptions(t)}))),g.navigator=new Bt((0,o.Z)(g),Object.assign({configurationService:f},u)),g.disposables.add(g.navigator),g}return(0,d.Z)(n,[{key:"updateOptions",value:function(e){(0,a.Z)((0,s.Z)(n.prototype),"updateOptions",this).call(this,e),e.overrideStyles&&this.updateStyles(e.overrideStyles)}},{key:"updateStyles",value:function(e){var t;null===(t=this._styler)||void 0===t||t.dispose(),this._styler=(0,N.Jl)(this,this.themeService,e)}},{key:"dispose",value:function(){var e;null===(e=this._styler)||void 0===e||e.dispose(),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}}]),n}(g.aV);Zt=lt([ct(5,x.i6),ct(6,dt),ct(7,M.XE),ct(8,k.Ui),ct(9,E.d)],Zt);var Ft=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,a,s,u,l,d,h,p,g){var v;(0,c.Z)(this,n);var m="undefined"!==typeof u.horizontalScrolling?u.horizontalScrolling:p.getValue(Et),_=Pt(u,p,g),y=(0,r.Z)(_,2),b=y[0],w=y[1];return(v=t.call(this,e,i,a,s,Object.assign(Object.assign(Object.assign({keyboardSupport:!1},(0,N.o)(h.getColorTheme(),N.O2)),b),{horizontalScrolling:m}))).disposables=new f.SL,v.disposables.add(w),v.contextKeyService=St(l,(0,o.Z)(v)),v.themeService=h,v.horizontalScrolling=u.horizontalScrolling,pt.bindTo(v.contextKeyService).set(!(!1===u.multipleSelectionSupport)),yt.bindTo(v.contextKeyService).set(Boolean(u.selectionNavigation)),v._useAltAsMultipleSelectionModifier=At(p),v.disposables.add(v.contextKeyService),v.disposables.add(d.register((0,o.Z)(v))),u.overrideStyles&&v.updateStyles(u.overrideStyles),u.overrideStyles&&v.disposables.add((0,N.Jl)((0,o.Z)(v),h,u.overrideStyles)),v.disposables.add(p.onDidChangeConfiguration((function(e){e.affectsConfiguration(xt)&&(v._useAltAsMultipleSelectionModifier=At(p));var t={};if(e.affectsConfiguration(Et)&&void 0===v.horizontalScrolling){var n=p.getValue(Et);t=Object.assign(Object.assign({},t),{horizontalScrolling:n})}if(e.affectsConfiguration(It)){var i=p.getValue(It);t=Object.assign(Object.assign({},t),{smoothScrolling:i})}Object.keys(t).length>0&&v.updateOptions(t)}))),v.navigator=new Bt((0,o.Z)(v),Object.assign({configurationService:p},u)),v.disposables.add(v.navigator),v}return(0,d.Z)(n,[{key:"updateOptions",value:function(e){(0,a.Z)((0,s.Z)(n.prototype),"updateOptions",this).call(this,e),e.overrideStyles&&this.updateStyles(e.overrideStyles)}},{key:"updateStyles",value:function(e){var t;null===(t=this._styler)||void 0===t||t.dispose(),this._styler=(0,N.Jl)(this,this.themeService,e)}},{key:"dispose",value:function(){var e;null===(e=this._styler)||void 0===e||e.dispose(),this.disposables.dispose(),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}}]),n}(w);Ft=lt([ct(5,x.i6),ct(6,dt),ct(7,M.XE),ct(8,k.Ui),ct(9,E.d)],Ft);var jt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,a,s,u,l,d,h,p,g,v){var m;(0,c.Z)(this,n);var _="undefined"!==typeof l.horizontalScrolling?l.horizontalScrolling:g.getValue(Et),y=Pt(l,g,v),b=(0,r.Z)(y,2),w=b[0],C=b[1];return(m=t.call(this,e,i,a,s,u,Object.assign(Object.assign(Object.assign({keyboardSupport:!1},(0,N.o)(p.getColorTheme(),N.O2)),w),{horizontalScrolling:_}))).disposables=new f.SL,m.disposables.add(C),m.contextKeyService=St(d,(0,o.Z)(m)),m.themeService=p,pt.bindTo(m.contextKeyService).set(!(!1===l.multipleSelectionSupport)),yt.bindTo(m.contextKeyService).set(Boolean(l.selectionNavigation)),m.listHasSelectionOrFocus=vt.bindTo(m.contextKeyService),m.listDoubleSelection=mt.bindTo(m.contextKeyService),m.listMultiSelection=_t.bindTo(m.contextKeyService),m.horizontalScrolling=l.horizontalScrolling,m._useAltAsMultipleSelectionModifier=At(g),m.disposables.add(m.contextKeyService),m.disposables.add(h.register((0,o.Z)(m))),l.overrideStyles&&m.updateStyles(l.overrideStyles),m.disposables.add(m.onDidChangeSelection((function(){var e=m.getSelection(),t=m.getFocus();m.contextKeyService.bufferChangeEvents((function(){m.listHasSelectionOrFocus.set(e.length>0||t.length>0),m.listMultiSelection.set(e.length>1),m.listDoubleSelection.set(2===e.length)}))}))),m.disposables.add(m.onDidChangeFocus((function(){var e=m.getSelection(),t=m.getFocus();m.listHasSelectionOrFocus.set(e.length>0||t.length>0)}))),m.disposables.add(g.onDidChangeConfiguration((function(e){e.affectsConfiguration(xt)&&(m._useAltAsMultipleSelectionModifier=At(g));var t={};if(e.affectsConfiguration(Et)&&void 0===m.horizontalScrolling){var n=g.getValue(Et);t=Object.assign(Object.assign({},t),{horizontalScrolling:n})}if(e.affectsConfiguration(It)){var i=g.getValue(It);t=Object.assign(Object.assign({},t),{smoothScrolling:i})}Object.keys(t).length>0&&m.updateOptions(t)}))),m.navigator=new zt((0,o.Z)(m),Object.assign({configurationService:g},l)),m.disposables.add(m.navigator),m}return(0,d.Z)(n,[{key:"updateOptions",value:function(e){(0,a.Z)((0,s.Z)(n.prototype),"updateOptions",this).call(this,e),e.overrideStyles&&this.updateStyles(e.overrideStyles)}},{key:"updateStyles",value:function(e){var t;null===(t=this._styler)||void 0===t||t.dispose(),this._styler=(0,N.Jl)(this,this.themeService,e)}},{key:"dispose",value:function(){var e;null===(e=this._styler)||void 0===e||e.dispose(),this.disposables.dispose(),(0,a.Z)((0,s.Z)(n.prototype),"dispose",this).call(this)}}]),n}(ut);jt=lt([ct(6,x.i6),ct(7,dt),ct(8,M.XE),ct(9,k.Ui),ct(10,E.d)],jt);var Ht=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r,o;return(0,c.Z)(this,n),(r=t.call(this)).widget=e,r._onDidOpen=r._register(new v.Q5),r.onDidOpen=r._onDidOpen.event,r._register(v.ju.filter(r.widget.onDidChangeSelection,(function(e){return e.browserEvent instanceof KeyboardEvent}))((function(e){return r.onSelectionFromKeyboard(e)}))),r._register(r.widget.onPointer((function(e){return r.onPointer(e.element,e.browserEvent)}))),r._register(r.widget.onMouseDblClick((function(e){return r.onMouseDblClick(e.element,e.browserEvent)}))),"boolean"!==typeof(null===i||void 0===i?void 0:i.openOnSingleClick)&&(null===i||void 0===i?void 0:i.configurationService)?(r.openOnSingleClick="doubleClick"!==(null===i||void 0===i?void 0:i.configurationService.getValue(Lt)),r._register(null===i||void 0===i?void 0:i.configurationService.onDidChangeConfiguration((function(){r.openOnSingleClick="doubleClick"!==(null===i||void 0===i?void 0:i.configurationService.getValue(Lt))})))):r.openOnSingleClick=null===(o=null===i||void 0===i?void 0:i.openOnSingleClick)||void 0===o||o,r}return(0,d.Z)(n,[{key:"onSelectionFromKeyboard",value:function(e){if(1===e.elements.length){var t=e.browserEvent,n="boolean"!==typeof t.preserveFocus||t.preserveFocus,i="boolean"===typeof t.pinned?t.pinned:!n;this._open(this.getSelectedElement(),n,i,!1,e.browserEvent)}}},{key:"onPointer",value:function(e,t){if(this.openOnSingleClick&&!(2===t.detail)){var n=1===t.button,i=t.ctrlKey||t.metaKey||t.altKey;this._open(e,!0,n,i,t)}}},{key:"onMouseDblClick",value:function(e,t){if(t){var n=t.target;if(!(n.classList.contains("monaco-tl-twistie")||n.classList.contains("monaco-icon-label")&&n.classList.contains("folder-icon")&&t.offsetX<16)){var i=t.ctrlKey||t.metaKey||t.altKey;this._open(e,!1,!0,i,t)}}}},{key:"_open",value:function(e,t,n,i,r){e&&this._onDidOpen.fire({editorOptions:{preserveFocus:t,pinned:n,revealIfVisible:!0},sideBySide:i,element:e,browserEvent:r})}}]),n}(f.JT),Bt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){var r;return(0,c.Z)(this,n),(r=t.call(this,e,i)).widget=e,r}return(0,d.Z)(n,[{key:"getSelectedElement",value:function(){return this.widget.getSelectedElements()[0]}}]),n}(Ht),zt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){return(0,c.Z)(this,n),t.call(this,e,i)}return(0,d.Z)(n,[{key:"getSelectedElement",value:function(){return this.widget.getSelectedElements()[0]}}]),n}(Ht),Wt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i){return(0,c.Z)(this,n),t.call(this,e,i)}return(0,d.Z)(n,[{key:"getSelectedElement",value:function(){var e;return null!==(e=this.widget.getSelection()[0])&&void 0!==e?e:void 0}}]),n}(Ht);function Vt(e,t){var n=!1;return function(i){if(n)return n=!1,!1;var r=t.softDispatch(i,e);return r&&r.enterChord?(n=!0,!1):(n=!1,!0)}}var Yt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,a,s,u,l,d,h,f,p){var g;(0,c.Z)(this,n);var v=$t(i,s,u,h,f,p),m=v.options,_=v.getAutomaticKeyboardNavigation,y=v.disposable;return(g=t.call(this,e,i,r,a,m)).disposables.add(y),g.internals=new Qt((0,o.Z)(g),s,_,s.overrideStyles,u,l,d,h,p),g.disposables.add(g.internals),g}return(0,d.Z)(n)}(Oe);Yt=lt([ct(5,x.i6),ct(6,dt),ct(7,M.XE),ct(8,k.Ui),ct(9,E.d),ct(10,it.F)],Yt);var Ut=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,a,s,u,l,d,h,f,p){var g;(0,c.Z)(this,n);var v=$t(i,s,u,h,f,p),m=v.options,_=v.getAutomaticKeyboardNavigation,y=v.disposable;return(g=t.call(this,e,i,r,a,m)).disposables.add(y),g.internals=new Qt((0,o.Z)(g),s,_,s.overrideStyles,u,l,d,h,p),g.disposables.add(g.internals),g}return(0,d.Z)(n,[{key:"updateOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,a.Z)((0,s.Z)(n.prototype),"updateOptions",this).call(this,e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles)}}]),n}(Re);Ut=lt([ct(5,x.i6),ct(6,dt),ct(7,M.XE),ct(8,k.Ui),ct(9,E.d),ct(10,it.F)],Ut);var Kt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,a,s,u,l,d,h,f,p,g){var v;(0,c.Z)(this,n);var m=$t(i,u,l,f,p,g),_=m.options,y=m.getAutomaticKeyboardNavigation,b=m.disposable;return(v=t.call(this,e,i,r,a,s,_)).disposables.add(b),v.internals=new Qt((0,o.Z)(v),u,y,u.overrideStyles,l,d,h,f,g),v.disposables.add(v.internals),v}return(0,d.Z)(n,[{key:"updateOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,a.Z)((0,s.Z)(n.prototype),"updateOptions",this).call(this,e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles)}}]),n}(nt);Kt=lt([ct(6,x.i6),ct(7,dt),ct(8,M.XE),ct(9,k.Ui),ct(10,E.d),ct(11,it.F)],Kt);var qt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,a,s,u,l,d,h,f,p,g){var v;(0,c.Z)(this,n);var m=$t(i,u,l,f,p,g),_=m.options,y=m.getAutomaticKeyboardNavigation,b=m.disposable;return(v=t.call(this,e,i,r,a,s,_)).disposables.add(b),v.internals=new Qt((0,o.Z)(v),u,y,u.overrideStyles,l,d,h,f,g),v.disposables.add(v.internals),v}return(0,d.Z)(n,[{key:"onDidOpen",get:function(){return this.internals.onDidOpen}},{key:"updateOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,a.Z)((0,s.Z)(n.prototype),"updateOptions",this).call(this,e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles)}}]),n}(Xe);qt=lt([ct(6,x.i6),ct(7,dt),ct(8,M.XE),ct(9,k.Ui),ct(10,E.d),ct(11,it.F)],qt);var Gt=function(e){(0,u.Z)(n,e);var t=(0,l.Z)(n);function n(e,i,r,a,s,u,l,d,h,f,p,g,v){var m;(0,c.Z)(this,n);var _=$t(i,l,d,p,g,v),y=_.options,b=_.getAutomaticKeyboardNavigation,w=_.disposable;return(m=t.call(this,e,i,r,a,s,u,y)).disposables.add(w),m.internals=new Qt((0,o.Z)(m),l,b,l.overrideStyles,d,h,f,p,v),m.disposables.add(m.internals),m}return(0,d.Z)(n)}(tt);function $t(e,t,n,i,o,a){var s;bt.bindTo(n),kt||(Ct.bindTo(n),kt=!0);var u=function(){var e=n.getContextKeyValue(wt);return e&&(e=i.getValue(Nt)),e},l=a.isScreenReaderOptimized(),c=t.simpleKeyboardNavigation||l?"simple":i.getValue(Dt),d=void 0!==t.horizontalScrolling?t.horizontalScrolling:i.getValue(Et),h=Pt(t,i,o),f=(0,r.Z)(h,2),p=f[0],g=f[1],v=t.additionalScrollHeight;return{getAutomaticKeyboardNavigation:u,disposable:g,options:Object.assign(Object.assign({keyboardSupport:!1},p),{indent:i.getValue(Mt),renderIndentGuides:i.getValue(Tt),smoothScrolling:i.getValue(It),automaticKeyboardNavigation:u(),simpleKeyboardNavigation:"simple"===c,filterOnType:"filter"===c,horizontalScrolling:d,keyboardNavigationEventFilter:Vt(e,o),additionalScrollHeight:v,hideTwistiesOfChildlessElements:t.hideTwistiesOfChildlessElements,expandOnlyOnTwistieClick:null!==(s=t.expandOnlyOnTwistieClick)&&void 0!==s?s:"doubleClick"===i.getValue(Ot)})}}Gt=lt([ct(7,x.i6),ct(8,dt),ct(9,M.XE),ct(10,k.Ui),ct(11,E.d),ct(12,it.F)],Gt);var Qt=function(){function e(t,n,i,r,o,a,s,u,l){var d=this;(0,c.Z)(this,e),this.tree=t,this.themeService=s,this.disposables=[],this.contextKeyService=St(o,t),pt.bindTo(this.contextKeyService).set(!(!1===n.multipleSelectionSupport)),yt.bindTo(this.contextKeyService).set(Boolean(n.selectionNavigation)),this.hasSelectionOrFocus=vt.bindTo(this.contextKeyService),this.hasDoubleSelection=mt.bindTo(this.contextKeyService),this.hasMultiSelection=_t.bindTo(this.contextKeyService),this._useAltAsMultipleSelectionModifier=At(u);var h=new Set;h.add(wt);var f=function(){var e=l.isScreenReaderOptimized()?"simple":u.getValue(Dt);t.updateOptions({simpleKeyboardNavigation:"simple"===e,filterOnType:"filter"===e})};this.updateStyleOverrides(r),this.disposables.push(this.contextKeyService,a.register(t),t.onDidChangeSelection((function(){var e=t.getSelection(),n=t.getFocus();d.contextKeyService.bufferChangeEvents((function(){d.hasSelectionOrFocus.set(e.length>0||n.length>0),d.hasMultiSelection.set(e.length>1),d.hasDoubleSelection.set(2===e.length)}))})),t.onDidChangeFocus((function(){var e=t.getSelection(),n=t.getFocus();d.hasSelectionOrFocus.set(e.length>0||n.length>0)})),u.onDidChangeConfiguration((function(e){var r={};if(e.affectsConfiguration(xt)&&(d._useAltAsMultipleSelectionModifier=At(u)),e.affectsConfiguration(Mt)){var o=u.getValue(Mt);r=Object.assign(Object.assign({},r),{indent:o})}if(e.affectsConfiguration(Tt)){var a=u.getValue(Tt);r=Object.assign(Object.assign({},r),{renderIndentGuides:a})}if(e.affectsConfiguration(It)){var s=u.getValue(It);r=Object.assign(Object.assign({},r),{smoothScrolling:s})}if(e.affectsConfiguration(Dt)&&f(),e.affectsConfiguration(Nt)&&(r=Object.assign(Object.assign({},r),{automaticKeyboardNavigation:i()})),e.affectsConfiguration(Et)&&void 0===n.horizontalScrolling){var l=u.getValue(Et);r=Object.assign(Object.assign({},r),{horizontalScrolling:l})}e.affectsConfiguration(Ot)&&void 0===n.expandOnlyOnTwistieClick&&(r=Object.assign(Object.assign({},r),{expandOnlyOnTwistieClick:"doubleClick"===u.getValue(Ot)})),Object.keys(r).length>0&&t.updateOptions(r)})),this.contextKeyService.onDidChangeContext((function(e){e.affectsSome(h)&&t.updateOptions({automaticKeyboardNavigation:i()})})),l.onDidChangeScreenReaderOptimized((function(){return f()}))),this.navigator=new Wt(t,Object.assign({configurationService:u},n)),this.disposables.push(this.navigator)}return(0,d.Z)(e,[{key:"onDidOpen",get:function(){return this.navigator.onDidOpen}},{key:"updateStyleOverrides",value:function(e){(0,f.B9)(this.styler),this.styler=e?(0,N.Jl)(this.tree,this.themeService,e):f.JT.None}},{key:"dispose",value:function(){this.disposables=(0,f.B9)(this.disposables),(0,f.B9)(this.styler),this.styler=void 0}}]),e}();Qt=lt([ct(4,x.i6),ct(5,dt),ct(6,M.XE),ct(7,k.Ui),ct(8,it.F)],Qt),D.B.as(S.IP.Configuration).registerConfiguration({id:"workbench",order:7,title:(0,C.N)("workbenchConfigurationTitle","Workbench"),type:"object",properties:(at={},(0,i.Z)(at,xt,{type:"string",enum:["ctrlCmd","alt"],enumDescriptions:[(0,C.N)("multiSelectModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),(0,C.N)("multiSelectModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],default:"ctrlCmd",description:(0,C.N)({key:"multiSelectModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.")}),(0,i.Z)(at,Lt,{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:(0,C.N)({key:"openModeModifier",comment:["`singleClick` and `doubleClick` refers to a value the setting can take and should not be localized."]},"Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.")}),(0,i.Z)(at,Et,{type:"boolean",default:!1,description:(0,C.N)("horizontalScrolling setting","Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.")}),(0,i.Z)(at,Mt,{type:"number",default:8,minimum:0,maximum:40,description:(0,C.N)("tree indent setting","Controls tree indentation in pixels.")}),(0,i.Z)(at,Tt,{type:"string",enum:["none","onHover","always"],default:"onHover",description:(0,C.N)("render tree indent guides","Controls whether the tree should render indent guides.")}),(0,i.Z)(at,It,{type:"boolean",default:!1,description:(0,C.N)("list smoothScrolling setting","Controls whether lists and trees have smooth scrolling.")}),(0,i.Z)(at,Dt,{type:"string",enum:["simple","highlight","filter"],enumDescriptions:[(0,C.N)("keyboardNavigationSettingKey.simple","Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes."),(0,C.N)("keyboardNavigationSettingKey.highlight","Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements."),(0,C.N)("keyboardNavigationSettingKey.filter","Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.")],default:"highlight",description:(0,C.N)("keyboardNavigationSettingKey","Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter.")}),(0,i.Z)(at,Nt,{type:"boolean",default:!0,markdownDescription:(0,C.N)("automatic keyboard navigation setting","Controls whether keyboard navigation in lists and trees is automatically triggered simply by typing. If set to `false`, keyboard navigation is only triggered when executing the `list.toggleKeyboardNavigation` command, for which you can assign a keyboard shortcut.")}),(0,i.Z)(at,Ot,{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:(0,C.N)("expand mode","Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable.")}),at)})},19974:function(e,t,n){"use strict";n.d(t,{$V:function(){return g},VZ:function(){return d},in:function(){return i},kw:function(){return p}});var i,r=n(15671),o=n(43144),a=n(60136),s=n(43668),u=n(84596),l=n(81626),c=n(11732),d=(0,u.yh)("logService");!function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Info=2]="Info",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.Off=6]="Off"}(i||(i={}));var h=i.Info,f=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(){var e;return(0,r.Z)(this,n),(e=t.apply(this,arguments)).level=h,e._onDidChangeLogLevel=e._register(new c.Q5),e}return(0,o.Z)(n,[{key:"setLevel",value:function(e){this.level!==e&&(this.level=e,this._onDidChangeLogLevel.fire(this.level))}},{key:"getLevel",value:function(){return this.level}}]),n}(l.JT),p=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h;return(0,r.Z)(this,n),(e=t.call(this)).setLevel(i),e}return(0,o.Z)(n,[{key:"trace",value:function(e){if(this.getLevel()<=i.Trace){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];(t=console).log.apply(t,["%cTRACE","color: #888",e].concat(r))}}},{key:"debug",value:function(e){if(this.getLevel()<=i.Debug){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];(t=console).log.apply(t,["%cDEBUG","background: #eee; color: #888",e].concat(r))}}},{key:"info",value:function(e){if(this.getLevel()<=i.Info){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];(t=console).log.apply(t,["%c INFO","color: #33f",e].concat(r))}}},{key:"error",value:function(e){if(this.getLevel()<=i.Error){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];(t=console).log.apply(t,["%c ERR","color: #f33",e].concat(r))}}},{key:"dispose",value:function(){}}]),n}(f),g=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(e){var i;return(0,r.Z)(this,n),(i=t.call(this)).logger=e,i._register(e),i}return(0,o.Z)(n,[{key:"getLevel",value:function(){return this.logger.getLevel()}},{key:"trace",value:function(e){for(var t,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];(t=this.logger).trace.apply(t,[e].concat(i))}},{key:"debug",value:function(e){for(var t,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];(t=this.logger).debug.apply(t,[e].concat(i))}},{key:"info",value:function(e){for(var t,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];(t=this.logger).info.apply(t,[e].concat(i))}},{key:"error",value:function(e){for(var t,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];(t=this.logger).error.apply(t,[e].concat(i))}}]),n}(l.JT)},95123:function(e,t,n){"use strict";n.d(t,{H0:function(){return r},ZL:function(){return i},lT:function(){return u}});var i,r,o=n(84596),a=n(56345),s=n(55046);!function(e){e[e.Hint=1]="Hint",e[e.Info=2]="Info",e[e.Warning=4]="Warning",e[e.Error=8]="Error"}(i||(i={})),function(e){e.compare=function(e,t){return t-e};var t=Object.create(null);t[e.Error]=(0,a.N)("sev.error","Error"),t[e.Warning]=(0,a.N)("sev.warning","Warning"),t[e.Info]=(0,a.N)("sev.info","Info"),e.toString=function(e){return t[e]||""},e.fromSeverity=function(t){switch(t){case s.Z.Error:return e.Error;case s.Z.Warning:return e.Warning;case s.Z.Info:return e.Info;case s.Z.Ignore:return e.Hint}},e.toSeverity=function(t){switch(t){case e.Error:return s.Z.Error;case e.Warning:return s.Z.Warning;case e.Info:return s.Z.Info;case e.Hint:return s.Z.Ignore}}}(i||(i={})),function(e){var t="";function n(e,n){var r=[t];return e.source?r.push(e.source.replace("\xa6","\\\xa6")):r.push(t),e.code?"string"===typeof e.code?r.push(e.code.replace("\xa6","\\\xa6")):r.push(e.code.value.replace("\xa6","\\\xa6")):r.push(t),void 0!==e.severity&&null!==e.severity?r.push(i.toString(e.severity)):r.push(t),e.message&&n?r.push(e.message.replace("\xa6","\\\xa6")):r.push(t),void 0!==e.startLineNumber&&null!==e.startLineNumber?r.push(e.startLineNumber.toString()):r.push(t),void 0!==e.startColumn&&null!==e.startColumn?r.push(e.startColumn.toString()):r.push(t),void 0!==e.endLineNumber&&null!==e.endLineNumber?r.push(e.endLineNumber.toString()):r.push(t),void 0!==e.endColumn&&null!==e.endColumn?r.push(e.endColumn.toString()):r.push(t),r.push(t),r.join("\xa6")}e.makeKey=function(e){return n(e,!0)},e.makeKeyOptionalMessage=n}(r||(r={}));var u=(0,o.yh)("markerService")},71574:function(e,t,n){"use strict";n.d(t,{EO:function(){return a},lT:function(){return o}});var i=n(43144),r=n(15671),o=(n(55046),(0,n(84596).yh)("notificationService")),a=(0,i.Z)((function e(){(0,r.Z)(this,e)}))},9696:function(e,t,n){"use strict";n.d(t,{SW:function(){return d},v4:function(){return c},xn:function(){return h}});var i=n(87757),r=n.n(i),o=n(81626),a=n(51747),s=n(67775),u=n(84596),l=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},c=(0,u.yh)("openerService"),d=Object.freeze({_serviceBrand:void 0,registerOpener:function(){return o.JT.None},registerValidator:function(){return o.JT.None},registerExternalUriResolver:function(){return o.JT.None},setDefaultExternalOpener:function(){},registerExternalOpener:function(){return o.JT.None},open:function(){return l(this,void 0,void 0,r().mark((function e(){return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",!1);case 1:case"end":return e.stop()}}),e)})))},resolveExternalUri:function(e){return l(this,void 0,void 0,r().mark((function t(){return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",{resolved:e,dispose:function(){}});case 1:case"end":return t.stop()}}),t)})))}});function h(e,t){return s.o.isUri(e)?(0,a.qq)(e.scheme,t):(0,a.ok)(e,t+":")}},18085:function(e,t,n){"use strict";n.d(t,{E:function(){return a},e:function(){return s}});var i=n(15671),r=n(43144),o=n(84596),a=function(){function e(t){(0,i.Z)(this,e),this.callback=t}return(0,r.Z)(e,[{key:"report",value:function(e){this._value=e,this.callback(this._value)}}]),e}();a.None=Object.freeze({report:function(){}});var s=(0,o.yh)("editorProgressService")},73921:function(e,t,n){"use strict";n.d(t,{IP:function(){return c},Ry:function(){return i}});var i,r=n(93433),o=n(15671),a=n(43144),s=n(38774),u=n(49396),l=n(81626);!function(e){e[e.PRESERVE=0]="PRESERVE",e[e.LAST=1]="LAST"}(i||(i={}));var c={Quickaccess:"workbench.contributions.quickaccess"},d=function(){function e(){(0,o.Z)(this,e),this.providers=[],this.defaultProvider=void 0}return(0,a.Z)(e,[{key:"registerQuickAccessProvider",value:function(e){var t=this;return 0===e.prefix.length?this.defaultProvider=e:this.providers.push(e),this.providers.sort((function(e,t){return t.prefix.length-e.prefix.length})),(0,l.OF)((function(){t.providers.splice(t.providers.indexOf(e),1),t.defaultProvider===e&&(t.defaultProvider=void 0)}))}},{key:"getQuickAccessProviders",value:function(){return(0,u.kX)([this.defaultProvider].concat((0,r.Z)(this.providers)))}},{key:"getQuickAccessProvider",value:function(e){return e&&this.providers.find((function(t){return e.startsWith(t.prefix)}))||void 0||this.defaultProvider}}]),e}();s.B.add(c.Quickaccess,new d)},62137:function(e,t,n){"use strict";n.d(t,{eJ:function(){return o},jG:function(){return r.jG}});var i=n(84596),r=n(42659),o=(0,i.yh)("quickInputService")},38774:function(e,t,n){"use strict";n.d(t,{B:function(){return s}});var i=n(15671),r=n(43144),o=n(25941),a=n(96147),s=new(function(){function e(){(0,i.Z)(this,e),this.data=new Map}return(0,r.Z)(e,[{key:"add",value:function(e,t){a.ok(o.HD(e)),a.ok(o.Kn(t)),a.ok(!this.data.has(e),"There is already an extension with this id"),this.data.set(e,t)}},{key:"as",value:function(e){return this.data.get(e)||null}}]),e}())},59319:function(e,t,n){"use strict";n.d(t,{Uy:function(){return C},vm:function(){return S},fk:function(){return y}});var i,r=n(15671),o=n(43144),a=n(60136),s=n(43668),u=n(84596),l=n(11732),c=n(81626),d=n(25941),h=n(11752),f=n(61120),p=n(87757),g=n.n(p),v=n(27997),m=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};!function(e){e[e.None=0]="None",e[e.Initialized=1]="Initialized",e[e.Closed=2]="Closed"}(i||(i={}));var _=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(e){var o,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Object.create(null);return(0,r.Z)(this,n),(o=t.call(this)).database=e,o.options=a,o._onDidChangeStorage=o._register(new l.Q5),o.onDidChangeStorage=o._onDidChangeStorage.event,o.state=i.None,o.cache=new Map,o.flushDelayer=new v.rH(n.DEFAULT_FLUSH_DELAY),o.pendingDeletes=new Set,o.pendingInserts=new Map,o.whenFlushedCallbacks=[],o.registerListeners(),o}return(0,o.Z)(n,[{key:"registerListeners",value:function(){var e=this;this._register(this.database.onDidChangeItemsExternal((function(t){return e.onDidChangeItemsExternal(t)})))}},{key:"onDidChangeItemsExternal",value:function(e){var t,n,i=this;null===(t=e.changed)||void 0===t||t.forEach((function(e,t){return i.accept(t,e)})),null===(n=e.deleted)||void 0===n||n.forEach((function(e){return i.accept(e,void 0)}))}},{key:"accept",value:function(e,t){if(this.state!==i.Closed){var n=!1;if((0,d.Jp)(t))n=this.cache.delete(e);else this.cache.get(e)!==t&&(this.cache.set(e,t),n=!0);n&&this._onDidChangeStorage.fire(e)}}},{key:"get",value:function(e,t){var n=this.cache.get(e);return(0,d.Jp)(n)?t:n}},{key:"getBoolean",value:function(e,t){var n=this.get(e);return(0,d.Jp)(n)?t:"true"===n}},{key:"getNumber",value:function(e,t){var n=this.get(e);return(0,d.Jp)(n)?t:parseInt(n,10)}},{key:"set",value:function(e,t){return m(this,void 0,void 0,g().mark((function n(){var r,o=this;return g().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(this.state!==i.Closed){n.next=2;break}return n.abrupt("return");case 2:if(!(0,d.Jp)(t)){n.next=4;break}return n.abrupt("return",this.delete(e));case 4:if(r=String(t),this.cache.get(e)!==r){n.next=8;break}return n.abrupt("return");case 8:return this.cache.set(e,r),this.pendingInserts.set(e,r),this.pendingDeletes.delete(e),this._onDidChangeStorage.fire(e),n.abrupt("return",this.flushDelayer.trigger((function(){return o.flushPending()})));case 13:case"end":return n.stop()}}),n,this)})))}},{key:"delete",value:function(e){return m(this,void 0,void 0,g().mark((function t(){var n=this;return g().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.state!==i.Closed){t.next=2;break}return t.abrupt("return");case 2:if(this.cache.delete(e)){t.next=5;break}return t.abrupt("return");case 5:return this.pendingDeletes.has(e)||this.pendingDeletes.add(e),this.pendingInserts.delete(e),this._onDidChangeStorage.fire(e),t.abrupt("return",this.flushDelayer.trigger((function(){return n.flushPending()})));case 9:case"end":return t.stop()}}),t,this)})))}},{key:"hasPending",get:function(){return this.pendingInserts.size>0||this.pendingDeletes.size>0}},{key:"flushPending",value:function(){return m(this,void 0,void 0,g().mark((function e(){var t,n=this;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.hasPending){e.next=2;break}return e.abrupt("return");case 2:return t={insert:this.pendingInserts,delete:this.pendingDeletes},this.pendingDeletes=new Set,this.pendingInserts=new Map,e.abrupt("return",this.database.updateItems(t).finally((function(){var e;if(!n.hasPending)for(;n.whenFlushedCallbacks.length;)null===(e=n.whenFlushedCallbacks.pop())||void 0===e||e()})));case 6:case"end":return e.stop()}}),e,this)})))}},{key:"dispose",value:function(){this.flushDelayer.cancel(),this.flushDelayer.dispose(),(0,h.Z)((0,f.Z)(n.prototype),"dispose",this).call(this)}}]),n}(c.JT);_.DEFAULT_FLUSH_DELAY=100;var y,b=function(){function e(){(0,r.Z)(this,e),this.onDidChangeItemsExternal=l.ju.None,this.items=new Map}return(0,o.Z)(e,[{key:"updateItems",value:function(e){return m(this,void 0,void 0,g().mark((function t(){var n=this;return g().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.insert&&e.insert.forEach((function(e,t){return n.items.set(t,e)})),e.delete&&e.delete.forEach((function(e){return n.items.delete(e)}));case 2:case"end":return t.stop()}}),t)})))}}]),e}(),w="__$__targetStorageMarker",C=(0,u.yh)("storageService");!function(e){e[e.NONE=0]="NONE",e[e.SHUTDOWN=1]="SHUTDOWN"}(y||(y={}));var k=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{flushInterval:n.DEFAULT_FLUSH_INTERVAL};return(0,r.Z)(this,n),(e=t.call(this)).options=i,e._onDidChangeValue=e._register(new l.K3),e._onDidChangeTarget=e._register(new l.K3),e._onWillSaveState=e._register(new l.Q5),e.onWillSaveState=e._onWillSaveState.event,e._workspaceKeyTargets=void 0,e._globalKeyTargets=void 0,e}return(0,o.Z)(n,[{key:"emitDidChangeValue",value:function(e,t){t===w?(0===e?this._globalKeyTargets=void 0:1===e&&(this._workspaceKeyTargets=void 0),this._onDidChangeTarget.fire({scope:e})):this._onDidChangeValue.fire({scope:e,key:t,target:this.getKeyTargets(e)[t]})}},{key:"get",value:function(e,t,n){var i;return null===(i=this.getStorage(t))||void 0===i?void 0:i.get(e,n)}},{key:"getBoolean",value:function(e,t,n){var i;return null===(i=this.getStorage(t))||void 0===i?void 0:i.getBoolean(e,n)}},{key:"getNumber",value:function(e,t,n){var i;return null===(i=this.getStorage(t))||void 0===i?void 0:i.getNumber(e,n)}},{key:"store",value:function(e,t,n,i){var r=this;(0,d.Jp)(t)?this.remove(e,n):this.withPausedEmitters((function(){var o;r.updateKeyTarget(e,n,i),null===(o=r.getStorage(n))||void 0===o||o.set(e,t)}))}},{key:"remove",value:function(e,t){var n=this;this.withPausedEmitters((function(){var i;n.updateKeyTarget(e,t,void 0),null===(i=n.getStorage(t))||void 0===i||i.delete(e)}))}},{key:"withPausedEmitters",value:function(e){this._onDidChangeValue.pause(),this._onDidChangeTarget.pause();try{e()}finally{this._onDidChangeValue.resume(),this._onDidChangeTarget.resume()}}},{key:"updateKeyTarget",value:function(e,t,n){var i,r,o=this.getKeyTargets(t);"number"===typeof n?o[e]!==n&&(o[e]=n,null===(i=this.getStorage(t))||void 0===i||i.set(w,JSON.stringify(o))):"number"===typeof o[e]&&(delete o[e],null===(r=this.getStorage(t))||void 0===r||r.set(w,JSON.stringify(o)))}},{key:"workspaceKeyTargets",get:function(){return this._workspaceKeyTargets||(this._workspaceKeyTargets=this.loadKeyTargets(1)),this._workspaceKeyTargets}},{key:"globalKeyTargets",get:function(){return this._globalKeyTargets||(this._globalKeyTargets=this.loadKeyTargets(0)),this._globalKeyTargets}},{key:"getKeyTargets",value:function(e){return 0===e?this.globalKeyTargets:this.workspaceKeyTargets}},{key:"loadKeyTargets",value:function(e){var t=this.get(w,e);if(t)try{return JSON.parse(t)}catch(n){}return Object.create(null)}}]),n}(c.JT);k.DEFAULT_FLUSH_INTERVAL=6e4;var S=function(e){(0,a.Z)(n,e);var t=(0,s.Z)(n);function n(){var e;return(0,r.Z)(this,n),(e=t.call(this)).globalStorage=new _(new b),e.workspaceStorage=new _(new b),e._register(e.workspaceStorage.onDidChangeStorage((function(t){return e.emitDidChangeValue(1,t)}))),e._register(e.globalStorage.onDidChangeStorage((function(t){return e.emitDidChangeValue(0,t)}))),e}return(0,o.Z)(n,[{key:"getStorage",value:function(e){return 0===e?this.globalStorage:this.workspaceStorage}}]),n}(k)},45014:function(e,t,n){"use strict";n.d(t,{b:function(){return i}});var i=(0,n(84596).yh)("telemetryService")},92992:function(e,t,n){"use strict";n.d(t,{$D:function(){return Ct},$d:function(){return ut},A2:function(){return Q},AB:function(){return q},AS:function(){return lt},AW:function(){return we},BO:function(){return Ht},C3:function(){return R},CA:function(){return Pt},CN:function(){return Ze},Cd:function(){return _t},Cz:function(){return Ve},D0:function(){return ce},D1:function(){return he},DE:function(){return yt},Du:function(){return ae},E3:function(){return kt},EP:function(){return I},ES:function(){return xe},Ei:function(){return Ie},F3:function(){return at},Fm:function(){return Nt},Fu:function(){return ze},GO:function(){return W},Gj:function(){return Ot},Gw:function(){return ct},Hf:function(){return de},Hz:function(){return bt},I1:function(){return Et},IB:function(){return Be},IP:function(){return d},Id:function(){return v},Iv:function(){return At},Jp:function(){return jt},K1:function(){return Ce},KT:function(){return Tt},LL:function(){return $e},L_:function(){return Qe},Lo:function(){return Fe},M6:function(){return nt},MU:function(){return Ne},NO:function(){return le},Ng:function(){return fe},OL:function(){return Bt},OZ:function(){return F},Oo:function(){return et},P4:function(){return Ke},P6:function(){return p},PR:function(){return E},Pk:function(){return Lt},Pv:function(){return N},R8:function(){return _},RV:function(){return O},Rz:function(){return Le},S:function(){return ft},SP:function(){return Mt},SU:function(){return A},Sb:function(){return Pe},Sn:function(){return Kt},Sw:function(){return C},T8:function(){return oe},U6:function(){return Dt},Un:function(){return pt},Vq:function(){return mt},XE:function(){return D},XL:function(){return qe},XZ:function(){return m},Xy:function(){return Zt},YI:function(){return T},ZG:function(){return St},Zn:function(){return Vt},_2:function(){return Je},_Y:function(){return je},_b:function(){return Xe},_l:function(){return M},_t:function(){return Z},_w:function(){return U},b6:function(){return J},b7:function(){return z},br:function(){return Ft},c6:function(){return re},cv:function(){return ue},dC:function(){return tt},dR:function(){return g},dt:function(){return L},et:function(){return K},fE:function(){return se},fe:function(){return ie},g8:function(){return V},g_:function(){return Ee},gk:function(){return Oe},gp:function(){return ee},hE:function(){return ke},j5:function(){return B},jU:function(){return Me},jb:function(){return wt},kJ:function(){return me},kV:function(){return Rt},ke:function(){return Ye},kw:function(){return Yt},lR:function(){return y},lW:function(){return be},lX:function(){return X},lo:function(){return ve},mH:function(){return Ge},mV:function(){return st},ny:function(){return De},oQ:function(){return ye},oS:function(){return ht},op:function(){return _e},ov:function(){return It},p:function(){return P},pW:function(){return ne},pn:function(){return Te},pt:function(){return Ae},qe:function(){return Y},rg:function(){return it},rh:function(){return k},s$:function(){return ot},sE:function(){return S},sK:function(){return We},tZ:function(){return ge},u2:function(){return xt},uo:function(){return te},ur:function(){return w},ux:function(){return gt},vG:function(){return dt},w:function(){return He},xL:function(){return b},yJ:function(){return Re},yb:function(){return Se},yn:function(){return G},yp:function(){return Ue},yt:function(){return rt},zJ:function(){return x},zK:function(){return pe},zR:function(){return $}});var i=n(15671),r=n(43144),o=n(38774),a=n(89938),s=n(11732),u=n(56345),l=n(27930),c=n(27997),d={ColorContribution:"base.contributions.colors"},h=function(){function e(){(0,i.Z)(this,e),this._onDidChangeSchema=new s.Q5,this.onDidChangeSchema=this._onDidChangeSchema.event,this.colorSchema={type:"object",properties:{}},this.colorReferenceSchema={type:"string",enum:[],enumDescriptions:[]},this.colorsById={}}return(0,r.Z)(e,[{key:"registerColor",value:function(e,t,n){var i=arguments.length>4?arguments[4]:void 0,r={id:e,description:n,defaults:t,needsTransparency:arguments.length>3&&void 0!==arguments[3]&&arguments[3],deprecationMessage:i};this.colorsById[e]=r;var o={type:"string",description:n,format:"color-hex",defaultSnippets:[{body:"${1:#ff0000}"}]};return i&&(o.deprecationMessage=i),this.colorSchema.properties[e]=o,this.colorReferenceSchema.enum.push(e),this.colorReferenceSchema.enumDescriptions.push(n),this._onDidChangeSchema.fire(),e}},{key:"resolveDefaultColor",value:function(e,t){var n=this.colorsById[e];if(n&&n.defaults)return Kt(n.defaults[t.type],t)}},{key:"getColorSchema",value:function(){return this.colorSchema}},{key:"toString",value:function(){var e=this;return Object.keys(this.colorsById).sort((function(e,t){var n=-1===e.indexOf(".")?0:1,i=-1===t.indexOf(".")?0:1;return n!==i?n-i:e.localeCompare(t)})).map((function(t){return"- `".concat(t,"`: ").concat(e.colorsById[t].description)})).join("\n")}}]),e}(),f=new h;function p(e,t,n,i,r){return f.registerColor(e,t,n,i,r)}o.B.add(d.ColorContribution,f);var g=p("foreground",{dark:"#CCCCCC",light:"#616161",hc:"#FFFFFF"},u.N("foreground","Overall foreground color. This color is only used if not overridden by a component.")),v=p("errorForeground",{dark:"#F48771",light:"#A1260D",hc:"#F48771"},u.N("errorForeground","Overall foreground color for error messages. This color is only used if not overridden by a component.")),m=p("icon.foreground",{dark:"#C5C5C5",light:"#424242",hc:"#FFFFFF"},u.N("iconForeground","The default color for icons in the workbench.")),_=p("focusBorder",{dark:"#007FD4",light:"#0090F1",hc:"#F38518"},u.N("focusBorder","Overall border color for focused elements. This color is only used if not overridden by a component.")),y=p("contrastBorder",{light:null,dark:null,hc:"#6FC3DF"},u.N("contrastBorder","An extra border around elements to separate them from others for greater contrast.")),b=p("contrastActiveBorder",{light:null,dark:null,hc:_},u.N("activeContrastBorder","An extra border around active elements to separate them from others for greater contrast.")),w=p("textLink.foreground",{light:"#006AB1",dark:"#3794FF",hc:"#3794FF"},u.N("textLinkForeground","Foreground color for links in text.")),C=p("textCodeBlock.background",{light:"#dcdcdc66",dark:"#0a0a0a66",hc:a.Il.black},u.N("textCodeBlockBackground","Background color for code blocks in text.")),k=p("widget.shadow",{dark:Vt(a.Il.black,.36),light:Vt(a.Il.black,.16),hc:null},u.N("widgetShadow","Shadow color of widgets such as find/replace inside the editor.")),S=p("input.background",{dark:"#3C3C3C",light:a.Il.white,hc:a.Il.black},u.N("inputBoxBackground","Input box background.")),x=p("input.foreground",{dark:g,light:g,hc:g},u.N("inputBoxForeground","Input box foreground.")),L=p("input.border",{dark:null,light:null,hc:y},u.N("inputBoxBorder","Input box border.")),E=p("inputOption.activeBorder",{dark:"#007ACC00",light:"#007ACC00",hc:y},u.N("inputBoxActiveOptionBorder","Border color of activated options in input fields.")),D=p("inputOption.activeBackground",{dark:Vt(_,.4),light:Vt(_,.2),hc:a.Il.transparent},u.N("inputOption.activeBackground","Background color of activated options in input fields.")),N=p("inputOption.activeForeground",{dark:a.Il.white,light:a.Il.black,hc:null},u.N("inputOption.activeForeground","Foreground color of activated options in input fields.")),M=p("inputValidation.infoBackground",{dark:"#063B49",light:"#D6ECF2",hc:a.Il.black},u.N("inputValidationInfoBackground","Input validation background color for information severity.")),T=p("inputValidation.infoForeground",{dark:null,light:null,hc:null},u.N("inputValidationInfoForeground","Input validation foreground color for information severity.")),I=p("inputValidation.infoBorder",{dark:"#007acc",light:"#007acc",hc:y},u.N("inputValidationInfoBorder","Input validation border color for information severity.")),O=p("inputValidation.warningBackground",{dark:"#352A05",light:"#F6F5D2",hc:a.Il.black},u.N("inputValidationWarningBackground","Input validation background color for warning severity.")),A=p("inputValidation.warningForeground",{dark:null,light:null,hc:null},u.N("inputValidationWarningForeground","Input validation foreground color for warning severity.")),R=p("inputValidation.warningBorder",{dark:"#B89500",light:"#B89500",hc:y},u.N("inputValidationWarningBorder","Input validation border color for warning severity.")),P=p("inputValidation.errorBackground",{dark:"#5A1D1D",light:"#F2DEDE",hc:a.Il.black},u.N("inputValidationErrorBackground","Input validation background color for error severity.")),Z=p("inputValidation.errorForeground",{dark:null,light:null,hc:null},u.N("inputValidationErrorForeground","Input validation foreground color for error severity.")),F=p("inputValidation.errorBorder",{dark:"#BE1100",light:"#BE1100",hc:y},u.N("inputValidationErrorBorder","Input validation border color for error severity.")),j=p("dropdown.background",{dark:"#3C3C3C",light:a.Il.white,hc:a.Il.black},u.N("dropdownBackground","Dropdown background.")),H=p("dropdown.foreground",{dark:"#F0F0F0",light:null,hc:a.Il.white},u.N("dropdownForeground","Dropdown foreground.")),B=p("button.foreground",{dark:a.Il.white,light:a.Il.white,hc:a.Il.white},u.N("buttonForeground","Button foreground color.")),z=p("button.background",{dark:"#0E639C",light:"#007ACC",hc:null},u.N("buttonBackground","Button background color.")),W=p("button.hoverBackground",{dark:Wt(z,.2),light:zt(z,.2),hc:null},u.N("buttonHoverBackground","Button background color when hovering.")),V=p("badge.background",{dark:"#4D4D4D",light:"#C4C4C4",hc:a.Il.black},u.N("badgeBackground","Badge background color. Badges are small information labels, e.g. for search results count.")),Y=p("badge.foreground",{dark:a.Il.white,light:"#333",hc:a.Il.white},u.N("badgeForeground","Badge foreground color. Badges are small information labels, e.g. for search results count.")),U=p("scrollbar.shadow",{dark:"#000000",light:"#DDDDDD",hc:null},u.N("scrollbarShadow","Scrollbar shadow to indicate that the view is scrolled.")),K=p("scrollbarSlider.background",{dark:a.Il.fromHex("#797979").transparent(.4),light:a.Il.fromHex("#646464").transparent(.4),hc:Vt(y,.6)},u.N("scrollbarSliderBackground","Scrollbar slider background color.")),q=p("scrollbarSlider.hoverBackground",{dark:a.Il.fromHex("#646464").transparent(.7),light:a.Il.fromHex("#646464").transparent(.7),hc:Vt(y,.8)},u.N("scrollbarSliderHoverBackground","Scrollbar slider background color when hovering.")),G=p("scrollbarSlider.activeBackground",{dark:a.Il.fromHex("#BFBFBF").transparent(.4),light:a.Il.fromHex("#000000").transparent(.6),hc:y},u.N("scrollbarSliderActiveBackground","Scrollbar slider background color when clicked on.")),$=p("progressBar.background",{dark:a.Il.fromHex("#0E70C0"),light:a.Il.fromHex("#0E70C0"),hc:y},u.N("progressBarBackground","Background color of the progress bar that can show for long running operations.")),Q=p("editorError.background",{dark:null,light:null,hc:null},u.N("editorError.background","Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0),X=p("editorError.foreground",{dark:"#F48771",light:"#E51400",hc:null},u.N("editorError.foreground","Foreground color of error squigglies in the editor.")),J=p("editorError.border",{dark:null,light:null,hc:a.Il.fromHex("#E47777").transparent(.8)},u.N("errorBorder","Border color of error boxes in the editor.")),ee=p("editorWarning.background",{dark:null,light:null,hc:null},u.N("editorWarning.background","Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0),te=p("editorWarning.foreground",{dark:"#CCA700",light:"#BF8803",hc:null},u.N("editorWarning.foreground","Foreground color of warning squigglies in the editor.")),ne=p("editorWarning.border",{dark:null,light:null,hc:a.Il.fromHex("#FFCC00").transparent(.8)},u.N("warningBorder","Border color of warning boxes in the editor.")),ie=p("editorInfo.background",{dark:null,light:null,hc:null},u.N("editorInfo.background","Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0),re=p("editorInfo.foreground",{dark:"#75BEFF",light:"#75BEFF",hc:null},u.N("editorInfo.foreground","Foreground color of info squigglies in the editor.")),oe=p("editorInfo.border",{dark:null,light:null,hc:a.Il.fromHex("#75BEFF").transparent(.8)},u.N("infoBorder","Border color of info boxes in the editor.")),ae=p("editorHint.foreground",{dark:a.Il.fromHex("#eeeeee").transparent(.7),light:"#6c6c6c",hc:null},u.N("editorHint.foreground","Foreground color of hint squigglies in the editor.")),se=p("editorHint.border",{dark:null,light:null,hc:a.Il.fromHex("#eeeeee").transparent(.8)},u.N("hintBorder","Border color of hint boxes in the editor.")),ue=p("editor.background",{light:"#fffffe",dark:"#1E1E1E",hc:a.Il.black},u.N("editorBackground","Editor background color.")),le=p("editor.foreground",{light:"#333333",dark:"#BBBBBB",hc:a.Il.white},u.N("editorForeground","Editor default foreground color.")),ce=p("editorWidget.background",{dark:"#252526",light:"#F3F3F3",hc:"#0C141F"},u.N("editorWidgetBackground","Background color of editor widgets, such as find/replace.")),de=p("editorWidget.foreground",{dark:g,light:g,hc:g},u.N("editorWidgetForeground","Foreground color of editor widgets, such as find/replace.")),he=p("editorWidget.border",{dark:"#454545",light:"#C8C8C8",hc:y},u.N("editorWidgetBorder","Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.")),fe=p("editorWidget.resizeBorder",{light:null,dark:null,hc:null},u.N("editorWidgetResizeBorder","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.")),pe=p("quickInput.background",{dark:ce,light:ce,hc:ce},u.N("pickerBackground","Quick picker background color. The quick picker widget is the container for pickers like the command palette.")),ge=p("quickInput.foreground",{dark:de,light:de,hc:de},u.N("pickerForeground","Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.")),ve=p("quickInputTitle.background",{dark:new a.Il(new a.VS(255,255,255,.105)),light:new a.Il(new a.VS(0,0,0,.06)),hc:"#000000"},u.N("pickerTitleBackground","Quick picker title background color. The quick picker widget is the container for pickers like the command palette.")),me=p("pickerGroup.foreground",{dark:"#3794FF",light:"#0066BF",hc:a.Il.white},u.N("pickerGroupForeground","Quick picker color for grouping labels.")),_e=p("pickerGroup.border",{dark:"#3F3F46",light:"#CCCEDB",hc:a.Il.white},u.N("pickerGroupBorder","Quick picker color for grouping borders.")),ye=p("keybindingLabel.background",{dark:new a.Il(new a.VS(128,128,128,.17)),light:new a.Il(new a.VS(221,221,221,.4)),hc:a.Il.transparent},u.N("keybindingLabelBackground","Keybinding label background color. The keybinding label is used to represent a keyboard shortcut.")),be=p("keybindingLabel.foreground",{dark:a.Il.fromHex("#CCCCCC"),light:a.Il.fromHex("#555555"),hc:a.Il.white},u.N("keybindingLabelForeground","Keybinding label foreground color. The keybinding label is used to represent a keyboard shortcut.")),we=p("keybindingLabel.border",{dark:new a.Il(new a.VS(51,51,51,.6)),light:new a.Il(new a.VS(204,204,204,.4)),hc:new a.Il(new a.VS(111,195,223))},u.N("keybindingLabelBorder","Keybinding label border color. The keybinding label is used to represent a keyboard shortcut.")),Ce=p("keybindingLabel.bottomBorder",{dark:new a.Il(new a.VS(68,68,68,.6)),light:new a.Il(new a.VS(187,187,187,.4)),hc:new a.Il(new a.VS(111,195,223))},u.N("keybindingLabelBottomBorder","Keybinding label border bottom color. The keybinding label is used to represent a keyboard shortcut.")),ke=p("editor.selectionBackground",{light:"#ADD6FF",dark:"#264F78",hc:"#f3f518"},u.N("editorSelectionBackground","Color of the editor selection.")),Se=p("editor.selectionForeground",{light:null,dark:null,hc:"#000000"},u.N("editorSelectionForeground","Color of the selected text for high contrast.")),xe=p("editor.inactiveSelectionBackground",{light:Vt(ke,.5),dark:Vt(ke,.5),hc:Vt(ke,.5)},u.N("editorInactiveSelection","Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations."),!0),Le=p("editor.selectionHighlightBackground",{light:Ut(ke,ue,.3,.6),dark:Ut(ke,ue,.3,.6),hc:null},u.N("editorSelectionHighlight","Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations."),!0),Ee=p("editor.selectionHighlightBorder",{light:null,dark:null,hc:b},u.N("editorSelectionHighlightBorder","Border color for regions with the same content as the selection.")),De=p("editor.findMatchBackground",{light:"#A8AC94",dark:"#515C6A",hc:null},u.N("editorFindMatch","Color of the current search match.")),Ne=p("editor.findMatchHighlightBackground",{light:"#EA5C0055",dark:"#EA5C0055",hc:null},u.N("findMatchHighlight","Color of the other search matches. The color must not be opaque so as not to hide underlying decorations."),!0),Me=p("editor.findRangeHighlightBackground",{dark:"#3a3d4166",light:"#b4b4b44d",hc:null},u.N("findRangeHighlight","Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0),Te=p("editor.findMatchBorder",{light:null,dark:null,hc:b},u.N("editorFindMatchBorder","Border color of the current search match.")),Ie=p("editor.findMatchHighlightBorder",{light:null,dark:null,hc:b},u.N("findMatchHighlightBorder","Border color of the other search matches.")),Oe=p("editor.findRangeHighlightBorder",{dark:null,light:null,hc:Vt(b,.4)},u.N("findRangeHighlightBorder","Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0),Ae=p("editor.hoverHighlightBackground",{light:"#ADD6FF26",dark:"#264f7840",hc:"#ADD6FF26"},u.N("hoverHighlight","Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations."),!0),Re=p("editorHoverWidget.background",{light:ce,dark:ce,hc:ce},u.N("hoverBackground","Background color of the editor hover.")),Pe=p("editorHoverWidget.foreground",{light:de,dark:de,hc:de},u.N("hoverForeground","Foreground color of the editor hover.")),Ze=p("editorHoverWidget.border",{light:he,dark:he,hc:he},u.N("hoverBorder","Border color of the editor hover.")),Fe=p("editorHoverWidget.statusBarBackground",{dark:Wt(Re,.2),light:zt(Re,.05),hc:ce},u.N("statusBarBackground","Background color of the editor hover status bar.")),je=p("editorLink.activeForeground",{dark:"#4E94CE",light:a.Il.blue,hc:a.Il.cyan},u.N("activeLinkForeground","Color of active links.")),He=p("editorInlineHint.foreground",{dark:ce,light:de,hc:ce},u.N("editorInlineHintForeground","Foreground color of inline hints")),Be=p("editorInlineHint.background",{dark:de,light:ce,hc:de},u.N("editorInlineHintBackground","Background color of inline hints")),ze=p("editorLightBulb.foreground",{dark:"#FFCC00",light:"#DDB100",hc:"#FFCC00"},u.N("editorLightBulbForeground","The color used for the lightbulb actions icon.")),We=p("editorLightBulbAutoFix.foreground",{dark:"#75BEFF",light:"#007ACC",hc:"#75BEFF"},u.N("editorLightBulbAutoFixForeground","The color used for the lightbulb auto fix actions icon.")),Ve=new a.Il(new a.VS(155,185,85,.2)),Ye=new a.Il(new a.VS(255,0,0,.2)),Ue=p("diffEditor.insertedTextBackground",{dark:Ve,light:Ve,hc:null},u.N("diffEditorInserted","Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations."),!0),Ke=p("diffEditor.removedTextBackground",{dark:Ye,light:Ye,hc:null},u.N("diffEditorRemoved","Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations."),!0),qe=p("diffEditor.insertedTextBorder",{dark:null,light:null,hc:"#33ff2eff"},u.N("diffEditorInsertedOutline","Outline color for the text that got inserted.")),Ge=p("diffEditor.removedTextBorder",{dark:null,light:null,hc:"#FF008F"},u.N("diffEditorRemovedOutline","Outline color for text that got removed.")),$e=p("diffEditor.border",{dark:null,light:null,hc:y},u.N("diffEditorBorder","Border color between the two text editors.")),Qe=p("diffEditor.diagonalFill",{dark:"#cccccc33",light:"#22222233",hc:null},u.N("diffDiagonalFill","Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views.")),Xe=p("list.focusBackground",{dark:null,light:null,hc:null},u.N("listFocusBackground","List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),Je=p("list.focusForeground",{dark:null,light:null,hc:null},u.N("listFocusForeground","List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),et=p("list.focusOutline",{dark:_,light:_,hc:b},u.N("listFocusOutline","List/Tree outline color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),tt=p("list.activeSelectionBackground",{dark:"#094771",light:"#0060C0",hc:null},u.N("listActiveSelectionBackground","List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),nt=p("list.activeSelectionForeground",{dark:a.Il.white,light:a.Il.white,hc:null},u.N("listActiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),it=p("list.inactiveSelectionBackground",{dark:"#37373D",light:"#E4E6F1",hc:null},u.N("listInactiveSelectionBackground","List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),rt=p("list.inactiveSelectionForeground",{dark:null,light:null,hc:null},u.N("listInactiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),ot=p("list.inactiveFocusBackground",{dark:null,light:null,hc:null},u.N("listInactiveFocusBackground","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),at=p("list.inactiveFocusOutline",{dark:null,light:null,hc:null},u.N("listInactiveFocusOutline","List/Tree outline color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),st=p("list.hoverBackground",{dark:"#2A2D2E",light:"#F0F0F0",hc:null},u.N("listHoverBackground","List/Tree background when hovering over items using the mouse.")),ut=p("list.hoverForeground",{dark:null,light:null,hc:null},u.N("listHoverForeground","List/Tree foreground when hovering over items using the mouse.")),lt=p("list.dropBackground",{dark:"#062F4A",light:"#D6EBFF",hc:null},u.N("listDropBackground","List/Tree drag and drop background when moving items around using the mouse.")),ct=p("list.highlightForeground",{dark:"#0097fb",light:"#0066BF",hc:_},u.N("highlight","List/Tree foreground color of the match highlights when searching inside the list/tree.")),dt=p("listFilterWidget.background",{light:"#efc1ad",dark:"#653723",hc:a.Il.black},u.N("listFilterWidgetBackground","Background color of the type filter widget in lists and trees.")),ht=p("listFilterWidget.outline",{dark:a.Il.transparent,light:a.Il.transparent,hc:"#f38518"},u.N("listFilterWidgetOutline","Outline color of the type filter widget in lists and trees.")),ft=p("listFilterWidget.noMatchesOutline",{dark:"#BE1100",light:"#BE1100",hc:y},u.N("listFilterWidgetNoMatchesOutline","Outline color of the type filter widget in lists and trees, when there are no matches.")),pt=p("tree.indentGuidesStroke",{dark:"#585858",light:"#a9a9a9",hc:"#a9a9a9"},u.N("treeIndentGuidesStroke","Tree stroke color for the indentation guides.")),gt=p("tree.tableColumnsBorder",{dark:"#CCCCCC20",light:"#61616120",hc:null},u.N("treeIndentGuidesStroke","Tree stroke color for the indentation guides.")),vt=p("quickInput.list.focusBackground",{dark:null,light:null,hc:null},"",void 0,u.N("quickInput.list.focusBackground deprecation","Please use quickInputList.focusBackground instead")),mt=p("quickInputList.focusBackground",{dark:Yt(vt,Xe,"#062F4A"),light:Yt(vt,Xe,"#D6EBFF"),hc:null},u.N("quickInput.listFocusBackground","Quick picker background color for the focused item.")),_t=p("menu.border",{dark:null,light:null,hc:y},u.N("menuBorder","Border color of menus.")),yt=p("menu.foreground",{dark:H,light:g,hc:H},u.N("menuForeground","Foreground color of menu items.")),bt=p("menu.background",{dark:j,light:j,hc:j},u.N("menuBackground","Background color of menu items.")),wt=p("menu.selectionForeground",{dark:nt,light:nt,hc:nt},u.N("menuSelectionForeground","Foreground color of the selected menu item in menus.")),Ct=p("menu.selectionBackground",{dark:tt,light:tt,hc:tt},u.N("menuSelectionBackground","Background color of the selected menu item in menus.")),kt=p("menu.selectionBorder",{dark:null,light:null,hc:b},u.N("menuSelectionBorder","Border color of the selected menu item in menus.")),St=p("menu.separatorBackground",{dark:"#BBBBBB",light:"#888888",hc:y},u.N("menuSeparatorBackground","Color of a separator menu item in menus.")),xt=p("editor.snippetTabstopHighlightBackground",{dark:new a.Il(new a.VS(124,124,124,.3)),light:new a.Il(new a.VS(10,50,100,.2)),hc:new a.Il(new a.VS(124,124,124,.3))},u.N("snippetTabstopHighlightBackground","Highlight background color of a snippet tabstop.")),Lt=p("editor.snippetTabstopHighlightBorder",{dark:null,light:null,hc:null},u.N("snippetTabstopHighlightBorder","Highlight border color of a snippet tabstop.")),Et=p("editor.snippetFinalTabstopHighlightBackground",{dark:null,light:null,hc:null},u.N("snippetFinalTabstopHighlightBackground","Highlight background color of the final tabstop of a snippet.")),Dt=p("editor.snippetFinalTabstopHighlightBorder",{dark:"#525252",light:new a.Il(new a.VS(10,50,100,.5)),hc:"#525252"},u.N("snippetFinalTabstopHighlightBorder","Highlight border color of the final tabstop of a snippet.")),Nt=p("editorOverviewRuler.findMatchForeground",{dark:"#d186167e",light:"#d186167e",hc:"#AB5A00"},u.N("overviewRulerFindMatchForeground","Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations."),!0),Mt=p("editorOverviewRuler.selectionHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hc:"#A0A0A0CC"},u.N("overviewRulerSelectionHighlightForeground","Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations."),!0),Tt=p("minimap.findMatchHighlight",{light:"#d18616",dark:"#d18616",hc:"#AB5A00"},u.N("minimapFindMatchHighlight","Minimap marker color for find matches."),!0),It=p("minimap.selectionHighlight",{light:"#ADD6FF",dark:"#264F78",hc:"#ffffff"},u.N("minimapSelectionHighlight","Minimap marker color for the editor selection."),!0),Ot=p("minimap.errorHighlight",{dark:new a.Il(new a.VS(255,18,18,.7)),light:new a.Il(new a.VS(255,18,18,.7)),hc:new a.Il(new a.VS(255,50,50,1))},u.N("minimapError","Minimap marker color for errors.")),At=p("minimap.warningHighlight",{dark:te,light:te,hc:ne},u.N("overviewRuleWarning","Minimap marker color for warnings.")),Rt=p("minimap.background",{dark:null,light:null,hc:null},u.N("minimapBackground","Minimap background color.")),Pt=p("minimapSlider.background",{light:Vt(K,.5),dark:Vt(K,.5),hc:Vt(K,.5)},u.N("minimapSliderBackground","Minimap slider background color.")),Zt=p("minimapSlider.hoverBackground",{light:Vt(q,.5),dark:Vt(q,.5),hc:Vt(q,.5)},u.N("minimapSliderHoverBackground","Minimap slider background color when hovering.")),Ft=p("minimapSlider.activeBackground",{light:Vt(G,.5),dark:Vt(G,.5),hc:Vt(G,.5)},u.N("minimapSliderActiveBackground","Minimap slider background color when clicked on.")),jt=p("problemsErrorIcon.foreground",{dark:X,light:X,hc:X},u.N("problemsErrorIconForeground","The color used for the problems error icon.")),Ht=p("problemsWarningIcon.foreground",{dark:te,light:te,hc:te},u.N("problemsWarningIconForeground","The color used for the problems warning icon.")),Bt=p("problemsInfoIcon.foreground",{dark:re,light:re,hc:re},u.N("problemsInfoIconForeground","The color used for the problems info icon."));function zt(e,t){return function(n){var i=Kt(e,n);if(i)return i.darken(t)}}function Wt(e,t){return function(n){var i=Kt(e,n);if(i)return i.lighten(t)}}function Vt(e,t){return function(n){var i=Kt(e,n);if(i)return i.transparent(t)}}function Yt(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){for(var n=0,i=t;n<i.length;n++){var r=Kt(i[n],e);if(r)return r}}}function Ut(e,t,n,i){return function(r){var o=Kt(e,r);if(o){var s=Kt(t,r);return s?o.isDarkerThan(s)?a.Il.getLighterColor(o,s,n).transparent(i):a.Il.getDarkerColor(o,s,n).transparent(i):o.transparent(n*i)}}}function Kt(e,t){if(null!==e)return"string"===typeof e?"#"===e[0]?a.Il.fromHex(e):t.getColor(e):e instanceof a.Il?e:"function"===typeof e?e(t):void 0}var qt="vscode://schemas/workbench-colors",Gt=o.B.as(l.I.JSONContribution);Gt.registerSchema(qt,f.getColorSchema());var $t=new c.pY((function(){return Gt.notifySchemaChanged(qt)}),200);f.onDidChangeSchema((function(){$t.isScheduled()||$t.schedule()}))},62239:function(e,t,n){"use strict";n.d(t,{Ks:function(){return g},q5:function(){return p},s_:function(){return y}});var i=n(37762),r=n(15671),o=n(43144),a=n(38774),s=n(70182),u=n(11732),l=n(56345),c=n(27930),d=n(27997),h=n(4354),f=new(function(){function e(){(0,r.Z)(this,e),this._onDidChange=new u.Q5,this.onDidChange=this._onDidChange.event,this.iconSchema={definitions:{icons:{type:"object",properties:{fontId:{type:"string",description:(0,l.N)("iconDefintion.fontId","The id of the font to use. If not set, the font that is defined first is used.")},fontCharacter:{type:"string",description:(0,l.N)("iconDefintion.fontCharacter","The font character associated with the icon definition.")}},additionalProperties:!1,defaultSnippets:[{body:{fontCharacter:"\\\\e030"}}]}},type:"object",properties:{}},this.iconReferenceSchema={type:"string",pattern:"^".concat(h.dT.iconNameExpression,"$"),enum:[],enumDescriptions:[]},this.iconsById={},this.iconFontsById={}}return(0,o.Z)(e,[{key:"registerIcon",value:function(e,t,n,i){var r=this.iconsById[e];if(r){if(n&&!r.description){r.description=n,this.iconSchema.properties[e].markdownDescription="".concat(n," $(").concat(e,")");var o=this.iconReferenceSchema.enum.indexOf(e);-1!==o&&(this.iconReferenceSchema.enumDescriptions[o]=n),this._onDidChange.fire()}return r}var a={id:e,description:n,defaults:t,deprecationMessage:i};this.iconsById[e]=a;var s={$ref:"#/definitions/icons"};return i&&(s.deprecationMessage=i),n&&(s.markdownDescription="".concat(n,": $(").concat(e,")")),this.iconSchema.properties[e]=s,this.iconReferenceSchema.enum.push(e),this.iconReferenceSchema.enumDescriptions.push(n||""),this._onDidChange.fire(),{id:e}}},{key:"getIcons",value:function(){var e=this;return Object.keys(this.iconsById).map((function(t){return e.iconsById[t]}))}},{key:"getIcon",value:function(e){return this.iconsById[e]}},{key:"getIconSchema",value:function(){return this.iconSchema}},{key:"getIconFont",value:function(e){return this.iconFontsById[e]}},{key:"toString",value:function(){var e=this,t=function(e,t){return e.id.localeCompare(t.id)},n=function(t){for(;s.kS.isThemeIcon(t.defaults);)t=e.iconsById[t.defaults.id];return"codicon codicon-".concat(t?t.id:"")},r=[];r.push("| preview | identifier | default codicon ID | description"),r.push("| ----------- | --------------------------------- | --------------------------------- | --------------------------------- |");var o,a=Object.keys(this.iconsById).map((function(t){return e.iconsById[t]})),u=(0,i.Z)(a.filter((function(e){return!!e.description})).sort(t));try{for(u.s();!(o=u.n()).done;){var l=o.value;r.push('|<i class="'.concat(n(l),'"></i>|').concat(l.id,"|").concat(s.kS.isThemeIcon(l.defaults)?l.defaults.id:l.id,"|").concat(l.description||"","|"))}}catch(f){u.e(f)}finally{u.f()}r.push("| preview | identifier "),r.push("| ----------- | --------------------------------- |");var c,d=(0,i.Z)(a.filter((function(e){return!s.kS.isThemeIcon(e.defaults)})).sort(t));try{for(d.s();!(c=d.n()).done;){var h=c.value;r.push('|<i class="'.concat(n(h),'"></i>|').concat(h.id,"|"))}}catch(f){d.e(f)}finally{d.f()}return r.join("\n")}}]),e}());function p(e,t,n,i){return f.registerIcon(e,t,n,i)}function g(){return f}a.B.add("base.contributions.icons",f),function(){var e,t=(0,i.Z)(h.fK.all);try{for(t.s();!(e=t.n()).done;){var n=e.value;f.registerIcon(n.id,n.definition,n.description)}}catch(r){t.e(r)}finally{t.f()}h.fK.onDidRegister((function(e){return f.registerIcon(e.id,e.definition,e.description)}))}();var v="vscode://schemas/icons",m=a.B.as(c.I.JSONContribution);m.registerSchema(v,f.getIconSchema());var _=new d.pY((function(){return m.notifySchemaChanged(v)}),200);f.onDidChange((function(){_.isScheduled()||_.schedule()}));var y=p("widget-close",h.lA.close,(0,l.N)("widgetClose","Icon for the close action in widgets."))},35215:function(e,t,n){"use strict";n.d(t,{Jl:function(){return s},O2:function(){return u},WZ:function(){return a},o:function(){return r},tj:function(){return c}});var i=n(92992);function r(e,t){var n=Object.create(null);for(var r in t){var o=t[r];o&&(n[r]=(0,i.Sn)(o,e))}return n}function o(e,t,n){function i(i){var o=r(e.getColorTheme(),t);"function"===typeof n?n(o):n.style(o)}return i(e.getColorTheme()),e.onDidColorThemeChange(i)}function a(e,t,n){return o(t,{badgeBackground:(null===n||void 0===n?void 0:n.badgeBackground)||i.g8,badgeForeground:(null===n||void 0===n?void 0:n.badgeForeground)||i.qe,badgeBorder:i.lR},e)}function s(e,t,n){return o(t,Object.assign(Object.assign({},u),n||{}),e)}var u={listFocusBackground:i._b,listFocusForeground:i._2,listFocusOutline:i.Oo,listActiveSelectionBackground:i.dC,listActiveSelectionForeground:i.M6,listFocusAndSelectionBackground:i.dC,listFocusAndSelectionForeground:i.M6,listInactiveSelectionBackground:i.rg,listInactiveSelectionForeground:i.yt,listInactiveFocusBackground:i.s$,listInactiveFocusOutline:i.F3,listHoverBackground:i.mV,listHoverForeground:i.$d,listDropBackground:i.AS,listSelectionOutline:i.xL,listHoverOutline:i.xL,listFilterWidgetBackground:i.vG,listFilterWidgetOutline:i.oS,listFilterWidgetNoMatchesOutline:i.S,listMatchesShadow:i.rh,treeIndentGuidesStroke:i.Un,tableColumnsBorder:i.ux},l={shadowColor:i.rh,borderColor:i.Cd,foregroundColor:i.DE,backgroundColor:i.Hz,selectionForegroundColor:i.jb,selectionBackgroundColor:i.$D,selectionBorderColor:i.E3,separatorColor:i.ZG};function c(e,t,n){return o(t,Object.assign(Object.assign({},l),n),e)}},7644:function(e,t,n){"use strict";var i;n.d(t,{e:function(){return i}}),function(e){e.DARK="dark",e.LIGHT="light",e.HIGH_CONTRAST="hc"}(i||(i={}))},70182:function(e,t,n){"use strict";n.d(t,{EN:function(){return m},IP:function(){return y},Ic:function(){return w},XE:function(){return v},bB:function(){return C},kS:function(){return r},m6:function(){return _}});var i,r,o=n(60136),a=n(43668),s=n(15671),u=n(43144),l=n(29439),c=n(84596),d=n(81626),h=n(38774),f=n(11732),p=n(7644),g=n(4354),v=(0,c.yh)("themeService");function m(e){return{id:e}}function _(e){switch(e){case p.e.DARK:return"vs-dark";case p.e.HIGH_CONTRAST:return"hc-black";default:return"vs"}}!function(e){e.isThemeColor=function(e){return e&&"object"===typeof e&&"string"===typeof e.id}}(i||(i={})),function(e){e.isThemeIcon=function(e){return e&&"object"===typeof e&&"string"===typeof e.id&&("undefined"===typeof e.color||i.isThemeColor(e.color))};var t=new RegExp("^\\$\\((".concat(g.dT.iconNameExpression,"(?:").concat(g.dT.iconModifierExpression,")?)\\)$"));e.fromString=function(e){var n=t.exec(e);if(n)return{id:(0,l.Z)(n,2)[1]}},e.modify=function(e,t){var n=e.id,i=n.lastIndexOf("~");return-1!==i&&(n=n.substring(0,i)),t&&(n="".concat(n,"~").concat(t)),{id:n}},e.isEqual=function(e,t){var n,i;return e.id===t.id&&(null===(n=e.color)||void 0===n?void 0:n.id)===(null===(i=t.color)||void 0===i?void 0:i.id)},e.asClassNameArray=g.dT.asClassNameArray,e.asClassName=g.dT.asClassName,e.asCSSSelector=g.dT.asCSSSelector}(r||(r={}));var y={ThemingContribution:"base.contributions.theming"},b=new(function(){function e(){(0,s.Z)(this,e),this.themingParticipants=[],this.themingParticipants=[],this.onThemingParticipantAddedEmitter=new f.Q5}return(0,u.Z)(e,[{key:"onColorThemeChange",value:function(e){var t=this;return this.themingParticipants.push(e),this.onThemingParticipantAddedEmitter.fire(e),(0,d.OF)((function(){var n=t.themingParticipants.indexOf(e);t.themingParticipants.splice(n,1)}))}},{key:"getThemingParticipants",value:function(){return this.themingParticipants}}]),e}());function w(e){return b.onColorThemeChange(e)}h.B.add(y.ThemingContribution,b);var C=function(e){(0,o.Z)(n,e);var t=(0,a.Z)(n);function n(e){var i;return(0,s.Z)(this,n),(i=t.call(this)).themeService=e,i.theme=e.getColorTheme(),i._register(i.themeService.onDidColorThemeChange((function(e){return i.onThemeChange(e)}))),i}return(0,u.Z)(n,[{key:"onThemeChange",value:function(e){this.theme=e,this.updateStyles()}},{key:"updateStyles",value:function(){}}]),n}(d.JT)},45822:function(e,t,n){"use strict";n.d(t,{Xt:function(){return s},YO:function(){return a},gJ:function(){return u},tJ:function(){return o}});var i=n(43144),r=n(15671),o=(0,n(84596).yh)("undoRedoService"),a=(0,i.Z)((function e(t,n){(0,r.Z)(this,e),this.resource=t,this.elements=n})),s=function(){function e(){(0,r.Z)(this,e),this.id=e._ID++,this.order=1}return(0,i.Z)(e,[{key:"nextOrder",value:function(){return 0===this.id?0:this.order++}}]),e}();s._ID=0,s.None=new s;var u=function(){function e(){(0,r.Z)(this,e),this.id=e._ID++,this.order=1}return(0,i.Z)(e,[{key:"nextOrder",value:function(){return 0===this.id?0:this.order++}}]),e}();u._ID=0,u.None=new u},37753:function(e,t,n){"use strict";n.d(t,{ec:function(){return a},md:function(){return s}});var i=n(15671),r=n(43144),o=n(84596),a=(n(15022),(0,o.yh)("contextService")),s=function(){function e(t,n){(0,i.Z)(this,e),this.raw=n,this.uri=t.uri,this.index=t.index,this.name=t.name}return(0,r.Z)(e,[{key:"toJSON",value:function(){return{uri:this.uri,name:this.name,index:this.index}}}]),e}()},10135:function(e,t,n){var i,r,o;r=[n(25017)],void 0===(o="function"===typeof(i=function(e){e.register("locale","bg",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"\u0445\u0438\u043b",million:"\u043c\u043b\u043d",billion:"\u043c\u043b\u0440\u0434",trillion:"\u0442\u0440\u043b\u043d"},ordinal:function(e){return""},currency:{symbol:"\u043b\u0432"}}),e.register("locale","chs",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"\u5343",million:"\u767e\u4e07",billion:"\u5341\u4ebf",trillion:"\u5146"},ordinal:function(e){return"."},currency:{symbol:"\xa5"}}),e.register("locale","cs",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"tis.",million:"mil.",billion:"b",trillion:"t"},ordinal:function(){return"."},currency:{symbol:"K\u010d"}}),e.register("locale","da-dk",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"mio",billion:"mia",trillion:"b"},ordinal:function(e){return"."},currency:{symbol:"DKK"}}),e.register("locale","de-ch",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return"."},currency:{symbol:"CHF"}}),e.register("locale","de",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","en-au",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"$"}}),e.register("locale","en-gb",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"\xa3"}}),e.register("locale","en-za",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"R"}}),e.register("locale","es-es",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"mm",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===t||3===t?"er":2===t?"do":7===t||0===t?"mo":8===t?"vo":9===t?"no":"to"},currency:{symbol:"\u20ac"}}),e.register("locale","es",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"mm",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===t||3===t?"er":2===t?"do":7===t||0===t?"mo":8===t?"vo":9===t?"no":"to"},currency:{symbol:"$"}}),e.register("locale","et",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:" tuh",million:" mln",billion:" mld",trillion:" trl"},ordinal:function(e){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","fi",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"M",billion:"G",trillion:"T"},ordinal:function(e){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","fr-ca",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"M",billion:"G",trillion:"T"},ordinal:function(e){return 1===e?"er":"e"},currency:{symbol:"$"}}),e.register("locale","fr-ch",{delimiters:{thousands:"'",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return 1===e?"er":"e"},currency:{symbol:"CHF"}}),e.register("locale","fr",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return 1===e?"er":"e"},currency:{symbol:"\u20ac"}}),e.register("locale","hu",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"E",million:"M",billion:"Mrd",trillion:"T"},ordinal:function(e){return"."},currency:{symbol:" Ft"}}),e.register("locale","it",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"mila",million:"mil",billion:"b",trillion:"t"},ordinal:function(e){return"\xba"},currency:{symbol:"\u20ac"}}),e.register("locale","ja",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"\u5343",million:"\u767e\u4e07",billion:"\u5341\u5104",trillion:"\u5146"},ordinal:function(e){return"."},currency:{symbol:"\xa5"}}),e.register("locale","lv",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:" t\u016bkst.",million:" milj.",billion:" mljrd.",trillion:" trilj."},ordinal:function(e){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","nl-be",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:" mln",billion:" mld",trillion:" bln"},ordinal:function(e){var t=e%100;return 0!==e&&t<=1||8===t||t>=20?"ste":"de"},currency:{symbol:"\u20ac "}}),e.register("locale","nl-nl",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"mln",billion:"mrd",trillion:"bln"},ordinal:function(e){var t=e%100;return 0!==e&&t<=1||8===t||t>=20?"ste":"de"},currency:{symbol:"\u20ac "}}),e.register("locale","no",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return"."},currency:{symbol:"kr"}}),e.register("locale","pl",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"tys.",million:"mln",billion:"mld",trillion:"bln"},ordinal:function(e){return"."},currency:{symbol:"PLN"}}),e.register("locale","pt-br",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"mil",million:"milh\xf5es",billion:"b",trillion:"t"},ordinal:function(e){return"\xba"},currency:{symbol:"R$"}}),e.register("locale","pt-pt",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return"\xba"},currency:{symbol:"\u20ac"}}),e.register("locale","ru-ua",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"\u0442\u044b\u0441.",million:"\u043c\u043b\u043d",billion:"b",trillion:"t"},ordinal:function(){return"."},currency:{symbol:"\u20b4"}}),e.register("locale","ru",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"\u0442\u044b\u0441.",million:"\u043c\u043b\u043d.",billion:"\u043c\u043b\u0440\u0434.",trillion:"\u0442\u0440\u043b\u043d."},ordinal:function(){return"."},currency:{symbol:"\u0440\u0443\u0431."}}),e.register("locale","sk",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"tis.",million:"mil.",billion:"b",trillion:"t"},ordinal:function(){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","sl",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"mio",billion:"mrd",trillion:"trilijon"},ordinal:function(){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","th",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"\u0e1e\u0e31\u0e19",million:"\u0e25\u0e49\u0e32\u0e19",billion:"\u0e1e\u0e31\u0e19\u0e25\u0e49\u0e32\u0e19",trillion:"\u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"},ordinal:function(e){return"."},currency:{symbol:"\u0e3f"}}),function(){var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};e.register("locale","tr",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"bin",million:"milyon",billion:"milyar",trillion:"trilyon"},ordinal:function(e){if(0===e)return"'\u0131nc\u0131";var n=e%10,i=e%100-n,r=e>=100?100:null;return t[n]||t[i]||t[r]},currency:{symbol:"\u20ba"}})}(),e.register("locale","uk-ua",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"\u0442\u0438\u0441.",million:"\u043c\u043b\u043d",billion:"\u043c\u043b\u0440\u0434",trillion:"\u0431\u043b\u043d"},ordinal:function(){return""},currency:{symbol:"\u20b4"}}),e.register("locale","vi",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:" ngh\xecn",million:" tri\u1ec7u",billion:" t\u1ef7",trillion:" ngh\xecn t\u1ef7"},ordinal:function(){return"."},currency:{symbol:"\u20ab"}})})?i.apply(t,r):i)||(e.exports=o)},25017:function(e,t,n){var i,r;i=function(){var e,t,n="2.0.6",i={},r={},o={currentLocale:"en",zeroFormat:null,nullFormat:null,defaultFormat:"0,0",scalePercentBy100:!0},a={currentLocale:o.currentLocale,zeroFormat:o.zeroFormat,nullFormat:o.nullFormat,defaultFormat:o.defaultFormat,scalePercentBy100:o.scalePercentBy100};function s(e,t){this._input=e,this._value=t}return(e=function(n){var r,o,u,l;if(e.isNumeral(n))r=n.value();else if(0===n||"undefined"===typeof n)r=0;else if(null===n||t.isNaN(n))r=null;else if("string"===typeof n)if(a.zeroFormat&&n===a.zeroFormat)r=0;else if(a.nullFormat&&n===a.nullFormat||!n.replace(/[^0-9]+/g,"").length)r=null;else{for(o in i)if((l="function"===typeof i[o].regexps.unformat?i[o].regexps.unformat():i[o].regexps.unformat)&&n.match(l)){u=i[o].unformat;break}r=(u=u||e._.stringToNumber)(n)}else r=Number(n)||null;return new s(n,r)}).version=n,e.isNumeral=function(e){return e instanceof s},e._=t={numberToFormat:function(t,n,i){var o,a,s,u,l,c,d,h=r[e.options.currentLocale],f=!1,p=!1,g=0,v="",m=1e12,_=1e9,y=1e6,b=1e3,w="",C=!1;if(t=t||0,a=Math.abs(t),e._.includes(n,"(")?(f=!0,n=n.replace(/[\(|\)]/g,"")):(e._.includes(n,"+")||e._.includes(n,"-"))&&(l=e._.includes(n,"+")?n.indexOf("+"):t<0?n.indexOf("-"):-1,n=n.replace(/[\+|\-]/g,"")),e._.includes(n,"a")&&(o=!!(o=n.match(/a(k|m|b|t)?/))&&o[1],e._.includes(n," a")&&(v=" "),n=n.replace(new RegExp(v+"a[kmbt]?"),""),a>=m&&!o||"t"===o?(v+=h.abbreviations.trillion,t/=m):a<m&&a>=_&&!o||"b"===o?(v+=h.abbreviations.billion,t/=_):a<_&&a>=y&&!o||"m"===o?(v+=h.abbreviations.million,t/=y):(a<y&&a>=b&&!o||"k"===o)&&(v+=h.abbreviations.thousand,t/=b)),e._.includes(n,"[.]")&&(p=!0,n=n.replace("[.]",".")),s=t.toString().split(".")[0],u=n.split(".")[1],c=n.indexOf(","),g=(n.split(".")[0].split(",")[0].match(/0/g)||[]).length,u?(e._.includes(u,"[")?(u=(u=u.replace("]","")).split("["),w=e._.toFixed(t,u[0].length+u[1].length,i,u[1].length)):w=e._.toFixed(t,u.length,i),s=w.split(".")[0],w=e._.includes(w,".")?h.delimiters.decimal+w.split(".")[1]:"",p&&0===Number(w.slice(1))&&(w="")):s=e._.toFixed(t,0,i),v&&!o&&Number(s)>=1e3&&v!==h.abbreviations.trillion)switch(s=String(Number(s)/1e3),v){case h.abbreviations.thousand:v=h.abbreviations.million;break;case h.abbreviations.million:v=h.abbreviations.billion;break;case h.abbreviations.billion:v=h.abbreviations.trillion}if(e._.includes(s,"-")&&(s=s.slice(1),C=!0),s.length<g)for(var k=g-s.length;k>0;k--)s="0"+s;return c>-1&&(s=s.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+h.delimiters.thousands)),0===n.indexOf(".")&&(s=""),d=s+w+(v||""),f?d=(f&&C?"(":"")+d+(f&&C?")":""):l>=0?d=0===l?(C?"-":"+")+d:d+(C?"-":"+"):C&&(d="-"+d),d},stringToNumber:function(e){var t,n,i,o=r[a.currentLocale],s=e,u={thousand:3,million:6,billion:9,trillion:12};if(a.zeroFormat&&e===a.zeroFormat)n=0;else if(a.nullFormat&&e===a.nullFormat||!e.replace(/[^0-9]+/g,"").length)n=null;else{for(t in n=1,"."!==o.delimiters.decimal&&(e=e.replace(/\./g,"").replace(o.delimiters.decimal,".")),u)if(i=new RegExp("[^a-zA-Z]"+o.abbreviations[t]+"(?:\\)|(\\"+o.currency.symbol+")?(?:\\))?)?$"),s.match(i)){n*=Math.pow(10,u[t]);break}n*=(e.split("-").length+Math.min(e.split("(").length-1,e.split(")").length-1))%2?1:-1,e=e.replace(/[^0-9\.]+/g,""),n*=Number(e)}return n},isNaN:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){return"number"===typeof e&&isNaN(e)})),includes:function(e,t){return-1!==e.indexOf(t)},insert:function(e,t,n){return e.slice(0,n)+t+e.slice(n)},reduce:function(e,t){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!==typeof t)throw new TypeError(t+" is not a function");var n,i=Object(e),r=i.length>>>0,o=0;if(3===arguments.length)n=arguments[2];else{for(;o<r&&!(o in i);)o++;if(o>=r)throw new TypeError("Reduce of empty array with no initial value");n=i[o++]}for(;o<r;o++)o in i&&(n=t(n,i[o],o,i));return n},multiplier:function(e){var t=e.toString().split(".");return t.length<2?1:Math.pow(10,t[1].length)},correctionFactor:function(){return Array.prototype.slice.call(arguments).reduce((function(e,n){var i=t.multiplier(n);return e>i?e:i}),1)},toFixed:function(e,t,n,i){var r,o,a,s,u=e.toString().split("."),l=t-(i||0);return r=2===u.length?Math.min(Math.max(u[1].length,l),t):l,a=Math.pow(10,r),s=(n(e+"e+"+r)/a).toFixed(r),i>t-r&&(o=new RegExp("\\.?0{1,"+(i-(t-r))+"}$"),s=s.replace(o,"")),s}},e.options=a,e.formats=i,e.locales=r,e.locale=function(e){return e&&(a.currentLocale=e.toLowerCase()),a.currentLocale},e.localeData=function(e){if(!e)return r[a.currentLocale];if(e=e.toLowerCase(),!r[e])throw new Error("Unknown locale : "+e);return r[e]},e.reset=function(){for(var e in o)a[e]=o[e]},e.zeroFormat=function(e){a.zeroFormat="string"===typeof e?e:null},e.nullFormat=function(e){a.nullFormat="string"===typeof e?e:null},e.defaultFormat=function(e){a.defaultFormat="string"===typeof e?e:"0.0"},e.register=function(e,t,n){if(t=t.toLowerCase(),this[e+"s"][t])throw new TypeError(t+" "+e+" already registered.");return this[e+"s"][t]=n,n},e.validate=function(t,n){var i,r,o,a,s,u,l,c;if("string"!==typeof t&&(t+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",t)),(t=t.trim()).match(/^\d+$/))return!0;if(""===t)return!1;try{l=e.localeData(n)}catch(d){l=e.localeData(e.locale())}return o=l.currency.symbol,s=l.abbreviations,i=l.delimiters.decimal,r="."===l.delimiters.thousands?"\\.":l.delimiters.thousands,(null===(c=t.match(/^[^\d]+/))||(t=t.substr(1),c[0]===o))&&(null===(c=t.match(/[^\d]+$/))||(t=t.slice(0,-1),c[0]===s.thousand||c[0]===s.million||c[0]===s.billion||c[0]===s.trillion))&&(u=new RegExp(r+"{2}"),!t.match(/[^\d.,]/g)&&!((a=t.split(i)).length>2)&&(a.length<2?!!a[0].match(/^\d+.*\d$/)&&!a[0].match(u):1===a[0].length?!!a[0].match(/^\d+$/)&&!a[0].match(u)&&!!a[1].match(/^\d+$/):!!a[0].match(/^\d+.*\d$/)&&!a[0].match(u)&&!!a[1].match(/^\d+$/)))},e.fn=s.prototype={clone:function(){return e(this)},format:function(t,n){var r,o,s,u=this._value,l=t||a.defaultFormat;if(n=n||Math.round,0===u&&null!==a.zeroFormat)o=a.zeroFormat;else if(null===u&&null!==a.nullFormat)o=a.nullFormat;else{for(r in i)if(l.match(i[r].regexps.format)){s=i[r].format;break}o=(s=s||e._.numberToFormat)(u,l,n)}return o},value:function(){return this._value},input:function(){return this._input},set:function(e){return this._value=Number(e),this},add:function(e){var n=t.correctionFactor.call(null,this._value,e);function i(e,t,i,r){return e+Math.round(n*t)}return this._value=t.reduce([this._value,e],i,0)/n,this},subtract:function(e){var n=t.correctionFactor.call(null,this._value,e);function i(e,t,i,r){return e-Math.round(n*t)}return this._value=t.reduce([e],i,Math.round(this._value*n))/n,this},multiply:function(e){function n(e,n,i,r){var o=t.correctionFactor(e,n);return Math.round(e*o)*Math.round(n*o)/Math.round(o*o)}return this._value=t.reduce([this._value,e],n,1),this},divide:function(e){function n(e,n,i,r){var o=t.correctionFactor(e,n);return Math.round(e*o)/Math.round(n*o)}return this._value=t.reduce([this._value,e],n),this},difference:function(t){return Math.abs(e(this._value).subtract(t).value())}},e.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"$"}}),e.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(t,n,i){var r,o=e._.includes(n," BPS")?" ":"";return t*=1e4,n=n.replace(/\s?BPS/,""),r=e._.numberToFormat(t,n,i),e._.includes(r,")")?((r=r.split("")).splice(-1,0,o+"BPS"),r=r.join("")):r=r+o+"BPS",r},unformat:function(t){return+(1e-4*e._.stringToNumber(t)).toFixed(15)}}),function(){var t={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]},n={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},i=t.suffixes.concat(n.suffixes.filter((function(e){return t.suffixes.indexOf(e)<0}))).join("|");i="("+i.replace("B","B(?!PS)")+")",e.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(i)},format:function(i,r,o){var a,s,u,l=e._.includes(r,"ib")?n:t,c=e._.includes(r," b")||e._.includes(r," ib")?" ":"";for(r=r.replace(/\s?i?b/,""),a=0;a<=l.suffixes.length;a++)if(s=Math.pow(l.base,a),u=Math.pow(l.base,a+1),null===i||0===i||i>=s&&i<u){c+=l.suffixes[a],s>0&&(i/=s);break}return e._.numberToFormat(i,r,o)+c},unformat:function(i){var r,o,a=e._.stringToNumber(i);if(a){for(r=t.suffixes.length-1;r>=0;r--){if(e._.includes(i,t.suffixes[r])){o=Math.pow(t.base,r);break}if(e._.includes(i,n.suffixes[r])){o=Math.pow(n.base,r);break}}a*=o||1}return a}})}(),e.register("format","currency",{regexps:{format:/(\$)/},format:function(t,n,i){var r,o,a=e.locales[e.options.currentLocale],s={before:n.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:n.match(/([\+|\-|\)|\s|\$]*)$/)[0]};for(n=n.replace(/\s?\$\s?/,""),r=e._.numberToFormat(t,n,i),t>=0?(s.before=s.before.replace(/[\-\(]/,""),s.after=s.after.replace(/[\-\)]/,"")):t<0&&!e._.includes(s.before,"-")&&!e._.includes(s.before,"(")&&(s.before="-"+s.before),o=0;o<s.before.length;o++)switch(s.before[o]){case"$":r=e._.insert(r,a.currency.symbol,o);break;case" ":r=e._.insert(r," ",o+a.currency.symbol.length-1)}for(o=s.after.length-1;o>=0;o--)switch(s.after[o]){case"$":r=o===s.after.length-1?r+a.currency.symbol:e._.insert(r,a.currency.symbol,-(s.after.length-(1+o)));break;case" ":r=o===s.after.length-1?r+" ":e._.insert(r," ",-(s.after.length-(1+o)+a.currency.symbol.length-1))}return r}}),e.register("format","exponential",{regexps:{format:/(e\+|e-)/,unformat:/(e\+|e-)/},format:function(t,n,i){var r=("number"!==typeof t||e._.isNaN(t)?"0e+0":t.toExponential()).split("e");return n=n.replace(/e[\+|\-]{1}0/,""),e._.numberToFormat(Number(r[0]),n,i)+"e"+r[1]},unformat:function(t){var n=e._.includes(t,"e+")?t.split("e+"):t.split("e-"),i=Number(n[0]),r=Number(n[1]);function o(t,n,i,r){var o=e._.correctionFactor(t,n);return t*o*(n*o)/(o*o)}return r=e._.includes(t,"e-")?r*=-1:r,e._.reduce([i,Math.pow(10,r)],o,1)}}),e.register("format","ordinal",{regexps:{format:/(o)/},format:function(t,n,i){var r=e.locales[e.options.currentLocale],o=e._.includes(n," o")?" ":"";return n=n.replace(/\s?o/,""),o+=r.ordinal(t),e._.numberToFormat(t,n,i)+o}}),e.register("format","percentage",{regexps:{format:/(%)/,unformat:/(%)/},format:function(t,n,i){var r,o=e._.includes(n," %")?" ":"";return e.options.scalePercentBy100&&(t*=100),n=n.replace(/\s?\%/,""),r=e._.numberToFormat(t,n,i),e._.includes(r,")")?((r=r.split("")).splice(-1,0,o+"%"),r=r.join("")):r=r+o+"%",r},unformat:function(t){var n=e._.stringToNumber(t);return e.options.scalePercentBy100?.01*n:n}}),e.register("format","time",{regexps:{format:/(:)/,unformat:/(:)/},format:function(e,t,n){var i=Math.floor(e/60/60),r=Math.floor((e-60*i*60)/60),o=Math.round(e-60*i*60-60*r);return i+":"+(r<10?"0"+r:r)+":"+(o<10?"0"+o:o)},unformat:function(e){var t=e.split(":"),n=0;return 3===t.length?(n+=60*Number(t[0])*60,n+=60*Number(t[1]),n+=Number(t[2])):2===t.length&&(n+=60*Number(t[0]),n+=Number(t[1])),Number(n)}}),e},void 0===(r="function"===typeof i?i.call(t,n,t,e):i)||(e.exports=r)},58105:function(e){"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(e){i[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(r){return!1}}()?Object.assign:function(e,r){for(var o,a,s=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),u=1;u<arguments.length;u++){for(var l in o=Object(arguments[u]))n.call(o,l)&&(s[l]=o[l]);if(t){a=t(o);for(var c=0;c<a.length;c++)i.call(o,a[c])&&(s[a[c]]=o[a[c]])}}return s}},27481:function(e,t,n){var i="function"===typeof Map&&Map.prototype,r=Object.getOwnPropertyDescriptor&&i?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,o=i&&r&&"function"===typeof r.get?r.get:null,a=i&&Map.prototype.forEach,s="function"===typeof Set&&Set.prototype,u=Object.getOwnPropertyDescriptor&&s?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,l=s&&u&&"function"===typeof u.get?u.get:null,c=s&&Set.prototype.forEach,d="function"===typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h="function"===typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,f="function"===typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,p=Boolean.prototype.valueOf,g=Object.prototype.toString,v=Function.prototype.toString,m=String.prototype.match,_=String.prototype.slice,y=String.prototype.replace,b=String.prototype.toUpperCase,w=String.prototype.toLowerCase,C=RegExp.prototype.test,k=Array.prototype.concat,S=Array.prototype.join,x=Array.prototype.slice,L=Math.floor,E="function"===typeof BigInt?BigInt.prototype.valueOf:null,D=Object.getOwnPropertySymbols,N="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?Symbol.prototype.toString:null,M="function"===typeof Symbol&&"object"===typeof Symbol.iterator,T="function"===typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===M||"symbol")?Symbol.toStringTag:null,I=Object.prototype.propertyIsEnumerable,O=("function"===typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function A(e,t){if(e===1/0||e===-1/0||e!==e||e&&e>-1e3&&e<1e3||C.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"===typeof e){var i=e<0?-L(-e):L(e);if(i!==e){var r=String(i),o=_.call(t,r.length+1);return y.call(r,n,"$&_")+"."+y.call(y.call(o,/([0-9]{3})/g,"$&_"),/_$/,"")}}return y.call(t,n,"$&_")}var R=n(24654).custom,P=R&&H(R)?R:null;function Z(e,t,n){var i="double"===(n.quoteStyle||t)?'"':"'";return i+e+i}function F(e){return y.call(String(e),/"/g,""")}function j(e){return"[object Array]"===W(e)&&(!T||!("object"===typeof e&&T in e))}function H(e){if(M)return e&&"object"===typeof e&&e instanceof Symbol;if("symbol"===typeof e)return!0;if(!e||"object"!==typeof e||!N)return!1;try{return N.call(e),!0}catch(t){}return!1}e.exports=function e(t,n,i,r){var s=n||{};if(z(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(z(s,"maxStringLength")&&("number"===typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var u=!z(s,"customInspect")||s.customInspect;if("boolean"!==typeof u&&"symbol"!==u)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(z(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(z(s,"numericSeparator")&&"boolean"!==typeof s.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var g=s.numericSeparator;if("undefined"===typeof t)return"undefined";if(null===t)return"null";if("boolean"===typeof t)return t?"true":"false";if("string"===typeof t)return Y(t,s);if("number"===typeof t){if(0===t)return 1/0/t>0?"0":"-0";var b=String(t);return g?A(t,b):b}if("bigint"===typeof t){var C=String(t)+"n";return g?A(t,C):C}var L="undefined"===typeof s.depth?5:s.depth;if("undefined"===typeof i&&(i=0),i>=L&&L>0&&"object"===typeof t)return j(t)?"[Array]":"[Object]";var D=function(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"===typeof e.indent&&e.indent>0))return null;n=S.call(Array(e.indent+1)," ")}return{base:n,prev:S.call(Array(t+1),n)}}(s,i);if("undefined"===typeof r)r=[];else if(V(r,t)>=0)return"[Circular]";function R(t,n,o){if(n&&(r=x.call(r)).push(n),o){var a={depth:s.depth};return z(s,"quoteStyle")&&(a.quoteStyle=s.quoteStyle),e(t,a,i+1,r)}return e(t,s,i+1,r)}if("function"===typeof t){var B=function(e){if(e.name)return e.name;var t=m.call(v.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),U=Q(t,R);return"[Function"+(B?": "+B:" (anonymous)")+"]"+(U.length>0?" { "+S.call(U,", ")+" }":"")}if(H(t)){var X=M?y.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(t);return"object"!==typeof t||M?X:K(X)}if(function(e){if(!e||"object"!==typeof e)return!1;if("undefined"!==typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"===typeof e.nodeName&&"function"===typeof e.getAttribute}(t)){for(var J="<"+w.call(String(t.nodeName)),ee=t.attributes||[],te=0;te<ee.length;te++)J+=" "+ee[te].name+"="+Z(F(ee[te].value),"double",s);return J+=">",t.childNodes&&t.childNodes.length&&(J+="..."),J+="</"+w.call(String(t.nodeName))+">"}if(j(t)){if(0===t.length)return"[]";var ne=Q(t,R);return D&&!function(e){for(var t=0;t<e.length;t++)if(V(e[t],"\n")>=0)return!1;return!0}(ne)?"["+$(ne,D)+"]":"[ "+S.call(ne,", ")+" ]"}if(function(e){return"[object Error]"===W(e)&&(!T||!("object"===typeof e&&T in e))}(t)){var ie=Q(t,R);return"cause"in t&&!I.call(t,"cause")?"{ ["+String(t)+"] "+S.call(k.call("[cause]: "+R(t.cause),ie),", ")+" }":0===ie.length?"["+String(t)+"]":"{ ["+String(t)+"] "+S.call(ie,", ")+" }"}if("object"===typeof t&&u){if(P&&"function"===typeof t[P])return t[P]();if("symbol"!==u&&"function"===typeof t.inspect)return t.inspect()}if(function(e){if(!o||!e||"object"!==typeof e)return!1;try{o.call(e);try{l.call(e)}catch(J){return!0}return e instanceof Map}catch(t){}return!1}(t)){var re=[];return a.call(t,(function(e,n){re.push(R(n,t,!0)+" => "+R(e,t))})),G("Map",o.call(t),re,D)}if(function(e){if(!l||!e||"object"!==typeof e)return!1;try{l.call(e);try{o.call(e)}catch(t){return!0}return e instanceof Set}catch(n){}return!1}(t)){var oe=[];return c.call(t,(function(e){oe.push(R(e,t))})),G("Set",l.call(t),oe,D)}if(function(e){if(!d||!e||"object"!==typeof e)return!1;try{d.call(e,d);try{h.call(e,h)}catch(J){return!0}return e instanceof WeakMap}catch(t){}return!1}(t))return q("WeakMap");if(function(e){if(!h||!e||"object"!==typeof e)return!1;try{h.call(e,h);try{d.call(e,d)}catch(J){return!0}return e instanceof WeakSet}catch(t){}return!1}(t))return q("WeakSet");if(function(e){if(!f||!e||"object"!==typeof e)return!1;try{return f.call(e),!0}catch(t){}return!1}(t))return q("WeakRef");if(function(e){return"[object Number]"===W(e)&&(!T||!("object"===typeof e&&T in e))}(t))return K(R(Number(t)));if(function(e){if(!e||"object"!==typeof e||!E)return!1;try{return E.call(e),!0}catch(t){}return!1}(t))return K(R(E.call(t)));if(function(e){return"[object Boolean]"===W(e)&&(!T||!("object"===typeof e&&T in e))}(t))return K(p.call(t));if(function(e){return"[object String]"===W(e)&&(!T||!("object"===typeof e&&T in e))}(t))return K(R(String(t)));if(!function(e){return"[object Date]"===W(e)&&(!T||!("object"===typeof e&&T in e))}(t)&&!function(e){return"[object RegExp]"===W(e)&&(!T||!("object"===typeof e&&T in e))}(t)){var ae=Q(t,R),se=O?O(t)===Object.prototype:t instanceof Object||t.constructor===Object,ue=t instanceof Object?"":"null prototype",le=!se&&T&&Object(t)===t&&T in t?_.call(W(t),8,-1):ue?"Object":"",ce=(se||"function"!==typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(le||ue?"["+S.call(k.call([],le||[],ue||[]),": ")+"] ":"");return 0===ae.length?ce+"{}":D?ce+"{"+$(ae,D)+"}":ce+"{ "+S.call(ae,", ")+" }"}return String(t)};var B=Object.prototype.hasOwnProperty||function(e){return e in this};function z(e,t){return B.call(e,t)}function W(e){return g.call(e)}function V(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,i=e.length;n<i;n++)if(e[n]===t)return n;return-1}function Y(e,t){if(e.length>t.maxStringLength){var n=e.length-t.maxStringLength,i="... "+n+" more character"+(n>1?"s":"");return Y(_.call(e,0,t.maxStringLength),t)+i}return Z(y.call(y.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,U),"single",t)}function U(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+b.call(t.toString(16))}function K(e){return"Object("+e+")"}function q(e){return e+" { ? }"}function G(e,t,n,i){return e+" ("+t+") {"+(i?$(n,i):S.call(n,", "))+"}"}function $(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+S.call(e,","+n)+"\n"+t.prev}function Q(e,t){var n=j(e),i=[];if(n){i.length=e.length;for(var r=0;r<e.length;r++)i[r]=z(e,r)?t(e[r],e):""}var o,a="function"===typeof D?D(e):[];if(M){o={};for(var s=0;s<a.length;s++)o["$"+a[s]]=a[s]}for(var u in e)z(e,u)&&(n&&String(Number(u))===u&&u<e.length||M&&o["$"+u]instanceof Symbol||(C.call(/[^\w$]/,u)?i.push(t(u,e)+": "+t(e[u],e)):i.push(u+": "+t(e[u],e))));if("function"===typeof D)for(var l=0;l<a.length;l++)I.call(e,a[l])&&i.push("["+t(a[l])+"]: "+t(e[a[l]],e));return i}},2137:function(e){e.exports=l,e.exports.parse=i,e.exports.compile=function(e,t){return r(i(e,t))},e.exports.tokensToFunction=r,e.exports.tokensToRegExp=u;var t="/",n=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");function i(e,i){for(var r,s=[],u=0,l=0,c="",d=i&&i.delimiter||t,h=i&&i.whitelist||void 0,f=!1;null!==(r=n.exec(e));){var p=r[0],g=r[1],v=r.index;if(c+=e.slice(l,v),l=v+p.length,g)c+=g[1],f=!0;else{var m="",_=r[2],y=r[3],b=r[4],w=r[5];if(!f&&c.length){var C=c.length-1,k=c[C];(!h||h.indexOf(k)>-1)&&(m=k,c=c.slice(0,C))}c&&(s.push(c),c="",f=!1);var S="+"===w||"*"===w,x="?"===w||"*"===w,L=y||b,E=m||d;s.push({name:_||u++,prefix:m,delimiter:E,optional:x,repeat:S,pattern:L?a(L):"[^"+o(E===d?E:E+d)+"]+?"})}}return(c||l<e.length)&&s.push(c+e.substr(l)),s}function r(e){for(var t=new Array(e.length),n=0;n<e.length;n++)"object"===typeof e[n]&&(t[n]=new RegExp("^(?:"+e[n].pattern+")$"));return function(n,i){for(var r="",o=i&&i.encode||encodeURIComponent,a=0;a<e.length;a++){var s=e[a];if("string"!==typeof s){var u,l=n?n[s.name]:void 0;if(Array.isArray(l)){if(!s.repeat)throw new TypeError('Expected "'+s.name+'" to not repeat, but got array');if(0===l.length){if(s.optional)continue;throw new TypeError('Expected "'+s.name+'" to not be empty')}for(var c=0;c<l.length;c++){if(u=o(l[c],s),!t[a].test(u))throw new TypeError('Expected all "'+s.name+'" to match "'+s.pattern+'"');r+=(0===c?s.prefix:s.delimiter)+u}}else if("string"!==typeof l&&"number"!==typeof l&&"boolean"!==typeof l){if(!s.optional)throw new TypeError('Expected "'+s.name+'" to be '+(s.repeat?"an array":"a string"))}else{if(u=o(String(l),s),!t[a].test(u))throw new TypeError('Expected "'+s.name+'" to match "'+s.pattern+'", but got "'+u+'"');r+=s.prefix+u}}else r+=s}return r}}function o(e){return e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function a(e){return e.replace(/([=!:$/()])/g,"\\$1")}function s(e){return e&&e.sensitive?"":"i"}function u(e,n,i){for(var r=(i=i||{}).strict,a=!1!==i.start,u=!1!==i.end,l=i.delimiter||t,c=[].concat(i.endsWith||[]).map(o).concat("$").join("|"),d=a?"^":"",h=0;h<e.length;h++){var f=e[h];if("string"===typeof f)d+=o(f);else{var p=f.repeat?"(?:"+f.pattern+")(?:"+o(f.delimiter)+"(?:"+f.pattern+"))*":f.pattern;n&&n.push(f),f.optional?f.prefix?d+="(?:"+o(f.prefix)+"("+p+"))?":d+="("+p+")?":d+=o(f.prefix)+"("+p+")"}}if(u)r||(d+="(?:"+o(l)+")?"),d+="$"===c?"$":"(?="+c+")";else{var g=e[e.length-1],v="string"===typeof g?g[g.length-1]===l:void 0===g;r||(d+="(?:"+o(l)+"(?="+c+"))?"),v||(d+="(?="+o(l)+"|"+c+")")}return new RegExp(d,s(i))}function l(e,t,n){return e instanceof RegExp?function(e,t){if(!t)return e;var n=e.source.match(/\((?!\?)/g);if(n)for(var i=0;i<n.length;i++)t.push({name:i,prefix:null,delimiter:null,optional:!1,repeat:!1,pattern:null});return e}(e,t):Array.isArray(e)?function(e,t,n){for(var i=[],r=0;r<e.length;r++)i.push(l(e[r],t,n).source);return new RegExp("(?:"+i.join("|")+")",s(n))}(e,t,n):function(e,t,n){return u(i(e,n),t,n)}(e,t,n)}},75583:function(e,t,n){"use strict";var i=n(89489);function r(){}function o(){}o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,a){if(a!==i){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:r};return n.PropTypes=n,n}},91386:function(e,t,n){e.exports=n(75583)()},89489:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},9139:function(e){"use strict";var t=String.prototype.replace,n=/%20/g,i="RFC1738",r="RFC3986";e.exports={default:r,formatters:{RFC1738:function(e){return t.call(e,n,"+")},RFC3986:function(e){return String(e)}},RFC1738:i,RFC3986:r}},22637:function(e,t,n){"use strict";var i=n(23461),r=n(74282),o=n(9139);e.exports={formats:o,parse:r,stringify:i}},74282:function(e,t,n){"use strict";var i=n(93886),r=Object.prototype.hasOwnProperty,o=Array.isArray,a={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:i.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},s=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},u=function(e,t){return e&&"string"===typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},l=function(e,t,n,i){if(e){var o=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,a=/(\[[^[\]]*])/g,s=n.depth>0&&/(\[[^[\]]*])/.exec(o),l=s?o.slice(0,s.index):o,c=[];if(l){if(!n.plainObjects&&r.call(Object.prototype,l)&&!n.allowPrototypes)return;c.push(l)}for(var d=0;n.depth>0&&null!==(s=a.exec(o))&&d<n.depth;){if(d+=1,!n.plainObjects&&r.call(Object.prototype,s[1].slice(1,-1))&&!n.allowPrototypes)return;c.push(s[1])}return s&&c.push("["+o.slice(s.index)+"]"),function(e,t,n,i){for(var r=i?t:u(t,n),o=e.length-1;o>=0;--o){var a,s=e[o];if("[]"===s&&n.parseArrays)a=[].concat(r);else{a=n.plainObjects?Object.create(null):{};var l="["===s.charAt(0)&&"]"===s.charAt(s.length-1)?s.slice(1,-1):s,c=parseInt(l,10);n.parseArrays||""!==l?!isNaN(c)&&s!==l&&String(c)===l&&c>=0&&n.parseArrays&&c<=n.arrayLimit?(a=[])[c]=r:"__proto__"!==l&&(a[l]=r):a={0:r}}r=a}return r}(c,t,n,i)}};e.exports=function(e,t){var n=function(e){if(!e)return a;if(null!==e.decoder&&void 0!==e.decoder&&"function"!==typeof e.decoder)throw new TypeError("Decoder has to be a function.");if("undefined"!==typeof e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t="undefined"===typeof e.charset?a.charset:e.charset;return{allowDots:"undefined"===typeof e.allowDots?a.allowDots:!!e.allowDots,allowPrototypes:"boolean"===typeof e.allowPrototypes?e.allowPrototypes:a.allowPrototypes,allowSparse:"boolean"===typeof e.allowSparse?e.allowSparse:a.allowSparse,arrayLimit:"number"===typeof e.arrayLimit?e.arrayLimit:a.arrayLimit,charset:t,charsetSentinel:"boolean"===typeof e.charsetSentinel?e.charsetSentinel:a.charsetSentinel,comma:"boolean"===typeof e.comma?e.comma:a.comma,decoder:"function"===typeof e.decoder?e.decoder:a.decoder,delimiter:"string"===typeof e.delimiter||i.isRegExp(e.delimiter)?e.delimiter:a.delimiter,depth:"number"===typeof e.depth||!1===e.depth?+e.depth:a.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"===typeof e.interpretNumericEntities?e.interpretNumericEntities:a.interpretNumericEntities,parameterLimit:"number"===typeof e.parameterLimit?e.parameterLimit:a.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"===typeof e.plainObjects?e.plainObjects:a.plainObjects,strictNullHandling:"boolean"===typeof e.strictNullHandling?e.strictNullHandling:a.strictNullHandling}}(t);if(""===e||null===e||"undefined"===typeof e)return n.plainObjects?Object.create(null):{};for(var c="string"===typeof e?function(e,t){var n,l={},c=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,d=t.parameterLimit===1/0?void 0:t.parameterLimit,h=c.split(t.delimiter,d),f=-1,p=t.charset;if(t.charsetSentinel)for(n=0;n<h.length;++n)0===h[n].indexOf("utf8=")&&("utf8=%E2%9C%93"===h[n]?p="utf-8":"utf8=%26%2310003%3B"===h[n]&&(p="iso-8859-1"),f=n,n=h.length);for(n=0;n<h.length;++n)if(n!==f){var g,v,m=h[n],_=m.indexOf("]="),y=-1===_?m.indexOf("="):_+1;-1===y?(g=t.decoder(m,a.decoder,p,"key"),v=t.strictNullHandling?null:""):(g=t.decoder(m.slice(0,y),a.decoder,p,"key"),v=i.maybeMap(u(m.slice(y+1),t),(function(e){return t.decoder(e,a.decoder,p,"value")}))),v&&t.interpretNumericEntities&&"iso-8859-1"===p&&(v=s(v)),m.indexOf("[]=")>-1&&(v=o(v)?[v]:v),r.call(l,g)?l[g]=i.combine(l[g],v):l[g]=v}return l}(e,n):e,d=n.plainObjects?Object.create(null):{},h=Object.keys(c),f=0;f<h.length;++f){var p=h[f],g=l(p,c[p],n,"string"===typeof e);d=i.merge(d,g,n)}return!0===n.allowSparse?d:i.compact(d)}},23461:function(e,t,n){"use strict";var i=n(13959),r=n(93886),o=n(9139),a=Object.prototype.hasOwnProperty,s={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},u=Array.isArray,l=String.prototype.split,c=Array.prototype.push,d=function(e,t){c.apply(e,u(t)?t:[t])},h=Date.prototype.toISOString,f=o.default,p={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:r.encode,encodeValuesOnly:!1,format:f,formatter:o.formatters[f],indices:!1,serializeDate:function(e){return h.call(e)},skipNulls:!1,strictNullHandling:!1},g={},v=function e(t,n,o,a,s,c,h,f,v,m,_,y,b,w,C,k){for(var S,x=t,L=k,E=0,D=!1;void 0!==(L=L.get(g))&&!D;){var N=L.get(t);if(E+=1,"undefined"!==typeof N){if(N===E)throw new RangeError("Cyclic object value");D=!0}"undefined"===typeof L.get(g)&&(E=0)}if("function"===typeof f?x=f(n,x):x instanceof Date?x=_(x):"comma"===o&&u(x)&&(x=r.maybeMap(x,(function(e){return e instanceof Date?_(e):e}))),null===x){if(s)return h&&!w?h(n,p.encoder,C,"key",y):n;x=""}if("string"===typeof(S=x)||"number"===typeof S||"boolean"===typeof S||"symbol"===typeof S||"bigint"===typeof S||r.isBuffer(x)){if(h){var M=w?n:h(n,p.encoder,C,"key",y);if("comma"===o&&w){for(var T=l.call(String(x),","),I="",O=0;O<T.length;++O)I+=(0===O?"":",")+b(h(T[O],p.encoder,C,"value",y));return[b(M)+(a&&u(x)&&1===T.length?"[]":"")+"="+I]}return[b(M)+"="+b(h(x,p.encoder,C,"value",y))]}return[b(n)+"="+b(String(x))]}var A,R=[];if("undefined"===typeof x)return R;if("comma"===o&&u(x))A=[{value:x.length>0?x.join(",")||null:void 0}];else if(u(f))A=f;else{var P=Object.keys(x);A=v?P.sort(v):P}for(var Z=a&&u(x)&&1===x.length?n+"[]":n,F=0;F<A.length;++F){var j=A[F],H="object"===typeof j&&"undefined"!==typeof j.value?j.value:x[j];if(!c||null!==H){var B=u(x)?"function"===typeof o?o(Z,j):Z:Z+(m?"."+j:"["+j+"]");k.set(t,E);var z=i();z.set(g,k),d(R,e(H,B,o,a,s,c,h,f,v,m,_,y,b,w,C,z))}}return R};e.exports=function(e,t){var n,r=e,l=function(e){if(!e)return p;if(null!==e.encoder&&"undefined"!==typeof e.encoder&&"function"!==typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||p.charset;if("undefined"!==typeof e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var n=o.default;if("undefined"!==typeof e.format){if(!a.call(o.formatters,e.format))throw new TypeError("Unknown format option provided.");n=e.format}var i=o.formatters[n],r=p.filter;return("function"===typeof e.filter||u(e.filter))&&(r=e.filter),{addQueryPrefix:"boolean"===typeof e.addQueryPrefix?e.addQueryPrefix:p.addQueryPrefix,allowDots:"undefined"===typeof e.allowDots?p.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"===typeof e.charsetSentinel?e.charsetSentinel:p.charsetSentinel,delimiter:"undefined"===typeof e.delimiter?p.delimiter:e.delimiter,encode:"boolean"===typeof e.encode?e.encode:p.encode,encoder:"function"===typeof e.encoder?e.encoder:p.encoder,encodeValuesOnly:"boolean"===typeof e.encodeValuesOnly?e.encodeValuesOnly:p.encodeValuesOnly,filter:r,format:n,formatter:i,serializeDate:"function"===typeof e.serializeDate?e.serializeDate:p.serializeDate,skipNulls:"boolean"===typeof e.skipNulls?e.skipNulls:p.skipNulls,sort:"function"===typeof e.sort?e.sort:null,strictNullHandling:"boolean"===typeof e.strictNullHandling?e.strictNullHandling:p.strictNullHandling}}(t);"function"===typeof l.filter?r=(0,l.filter)("",r):u(l.filter)&&(n=l.filter);var c,h=[];if("object"!==typeof r||null===r)return"";c=t&&t.arrayFormat in s?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var f=s[c];if(t&&"commaRoundTrip"in t&&"boolean"!==typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var g="comma"===f&&t&&t.commaRoundTrip;n||(n=Object.keys(r)),l.sort&&n.sort(l.sort);for(var m=i(),_=0;_<n.length;++_){var y=n[_];l.skipNulls&&null===r[y]||d(h,v(r[y],y,f,g,l.strictNullHandling,l.skipNulls,l.encode?l.encoder:null,l.filter,l.sort,l.allowDots,l.serializeDate,l.format,l.formatter,l.encodeValuesOnly,l.charset,m))}var b=h.join(l.delimiter),w=!0===l.addQueryPrefix?"?":"";return l.charsetSentinel&&("iso-8859-1"===l.charset?w+="utf8=%26%2310003%3B&":w+="utf8=%E2%9C%93&"),b.length>0?w+b:""}},93886:function(e,t,n){"use strict";var i=n(9139),r=Object.prototype.hasOwnProperty,o=Array.isArray,a=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),s=function(e,t){for(var n=t&&t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)"undefined"!==typeof e[i]&&(n[i]=e[i]);return n};e.exports={arrayToObject:s,assign:function(e,t){return Object.keys(t).reduce((function(e,n){return e[n]=t[n],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],n=[],i=0;i<t.length;++i)for(var r=t[i],a=r.obj[r.prop],s=Object.keys(a),u=0;u<s.length;++u){var l=s[u],c=a[l];"object"===typeof c&&null!==c&&-1===n.indexOf(c)&&(t.push({obj:a,prop:l}),n.push(c))}return function(e){for(;e.length>1;){var t=e.pop(),n=t.obj[t.prop];if(o(n)){for(var i=[],r=0;r<n.length;++r)"undefined"!==typeof n[r]&&i.push(n[r]);t.obj[t.prop]=i}}}(t),e},decode:function(e,t,n){var i=e.replace(/\+/g," ");if("iso-8859-1"===n)return i.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(i)}catch(r){return i}},encode:function(e,t,n,r,o){if(0===e.length)return e;var s=e;if("symbol"===typeof e?s=Symbol.prototype.toString.call(e):"string"!==typeof e&&(s=String(e)),"iso-8859-1"===n)return escape(s).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var u="",l=0;l<s.length;++l){var c=s.charCodeAt(l);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||o===i.RFC1738&&(40===c||41===c)?u+=s.charAt(l):c<128?u+=a[c]:c<2048?u+=a[192|c>>6]+a[128|63&c]:c<55296||c>=57344?u+=a[224|c>>12]+a[128|c>>6&63]+a[128|63&c]:(l+=1,c=65536+((1023&c)<<10|1023&s.charCodeAt(l)),u+=a[240|c>>18]+a[128|c>>12&63]+a[128|c>>6&63]+a[128|63&c])}return u},isBuffer:function(e){return!(!e||"object"!==typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(o(e)){for(var n=[],i=0;i<e.length;i+=1)n.push(t(e[i]));return n}return t(e)},merge:function e(t,n,i){if(!n)return t;if("object"!==typeof n){if(o(t))t.push(n);else{if(!t||"object"!==typeof t)return[t,n];(i&&(i.plainObjects||i.allowPrototypes)||!r.call(Object.prototype,n))&&(t[n]=!0)}return t}if(!t||"object"!==typeof t)return[t].concat(n);var a=t;return o(t)&&!o(n)&&(a=s(t,i)),o(t)&&o(n)?(n.forEach((function(n,o){if(r.call(t,o)){var a=t[o];a&&"object"===typeof a&&n&&"object"===typeof n?t[o]=e(a,n,i):t.push(n)}else t[o]=n})),t):Object.keys(n).reduce((function(t,o){var a=n[o];return r.call(t,o)?t[o]=e(t[o],a,i):t[o]=a,t}),a)}}},16610:function(e){"use strict";function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,n,i,r){n=n||"&",i=i||"=";var o={};if("string"!==typeof e||0===e.length)return o;var a=/\+/g;e=e.split(n);var s=1e3;r&&"number"===typeof r.maxKeys&&(s=r.maxKeys);var u=e.length;s>0&&u>s&&(u=s);for(var l=0;l<u;++l){var c,d,h,f,p=e[l].replace(a,"%20"),g=p.indexOf(i);g>=0?(c=p.substr(0,g),d=p.substr(g+1)):(c=p,d=""),h=decodeURIComponent(c),f=decodeURIComponent(d),t(o,h)?Array.isArray(o[h])?o[h].push(f):o[h]=[o[h],f]:o[h]=f}return o}},83186:function(e){"use strict";var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,n,i,r){return n=n||"&",i=i||"=",null===e&&(e=void 0),"object"===typeof e?Object.keys(e).map((function(r){var o=encodeURIComponent(t(r))+i;return Array.isArray(e[r])?e[r].map((function(e){return o+encodeURIComponent(t(e))})).join(n):o+encodeURIComponent(t(e[r]))})).join(n):r?encodeURIComponent(t(r))+i+encodeURIComponent(t(e)):""}},76127:function(e,t,n){"use strict";t.decode=t.parse=n(16610),t.encode=t.stringify=n(83186)},482:function(e,t,n){"use strict";function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var r=s(n(4519)),o=s(n(80358)),a=["text","onCopy","options","children"];function s(e){return e&&e.__esModule?e:{default:e}}function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function d(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function f(e){var t=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=g(e);if(t){var o=g(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return function(e,t){if(t&&("object"===i(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return p(e)}(this,n)}}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function g(e){return g=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},g(e)}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m=function(e){!function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&h(e,t)}(u,e);var t,n,i,s=f(u);function u(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return v(p(e=s.call.apply(s,[this].concat(n))),"onClick",(function(t){var n=e.props,i=n.text,a=n.onCopy,s=n.children,u=n.options,l=r.default.Children.only(s),c=(0,o.default)(i,u);a&&a(i,c),l&&l.props&&"function"===typeof l.props.onClick&&l.props.onClick(t)})),e}return t=u,(n=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),n=c(e,a),i=r.default.Children.only(t);return r.default.cloneElement(i,l(l({},n),{},{onClick:this.onClick}))}}])&&d(t.prototype,n),i&&d(t,i),Object.defineProperty(t,"prototype",{writable:!1}),u}(r.default.PureComponent);t.CopyToClipboard=m,v(m,"defaultProps",{onCopy:void 0,options:void 0})},17972:function(e,t,n){"use strict";var i=n(482).CopyToClipboard;i.CopyToClipboard=i,e.exports=i},81571:function(e,t,n){"use strict";var i=n(4519),r=n(58105),o=n(8514);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!i)throw Error(a(227));var s=new Set,u={};function l(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(u[e]=t,e=0;e<t.length;e++)s.add(t[e])}var d=!("undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement),h=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f=Object.prototype.hasOwnProperty,p={},g={};function v(e,t,n,i,r,o,a){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=i,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=a}var m={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){m[e]=new v(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];m[t]=new v(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){m[e]=new v(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){m[e]=new v(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){m[e]=new v(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){m[e]=new v(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){m[e]=new v(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){m[e]=new v(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){m[e]=new v(e,5,!1,e.toLowerCase(),null,!1,!1)}));var _=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function b(e,t,n,i){var r=m.hasOwnProperty(t)?m[t]:null;(null!==r?0===r.type:!i&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,i){if(null===t||"undefined"===typeof t||function(e,t,n,i){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!i&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,i))return!0;if(i)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,r,i)&&(n=null),i||null===r?function(e){return!!f.call(g,e)||!f.call(p,e)&&(h.test(e)?g[e]=!0:(p[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):r.mustUseProperty?e[r.propertyName]=null===n?3!==r.type&&"":n:(t=r.attributeName,i=r.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(r=r.type)||4===r&&!0===n?"":""+n,i?e.setAttributeNS(i,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(_,y);m[t]=new v(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(_,y);m[t]=new v(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(_,y);m[t]=new v(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){m[e]=new v(e,1,!1,e.toLowerCase(),null,!1,!1)})),m.xlinkHref=new v("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){m[e]=new v(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,C=60103,k=60106,S=60107,x=60108,L=60114,E=60109,D=60110,N=60112,M=60113,T=60120,I=60115,O=60116,A=60121,R=60128,P=60129,Z=60130,F=60131;if("function"===typeof Symbol&&Symbol.for){var j=Symbol.for;C=j("react.element"),k=j("react.portal"),S=j("react.fragment"),x=j("react.strict_mode"),L=j("react.profiler"),E=j("react.provider"),D=j("react.context"),N=j("react.forward_ref"),M=j("react.suspense"),T=j("react.suspense_list"),I=j("react.memo"),O=j("react.lazy"),A=j("react.block"),j("react.scope"),R=j("react.opaque.id"),P=j("react.debug_trace_mode"),Z=j("react.offscreen"),F=j("react.legacy_hidden")}var H,B="function"===typeof Symbol&&Symbol.iterator;function z(e){return null===e||"object"!==typeof e?null:"function"===typeof(e=B&&e[B]||e["@@iterator"])?e:null}function W(e){if(void 0===H)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);H=t&&t[1]||""}return"\n"+H+e}var V=!1;function Y(e,t){if(!e||V)return"";V=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"===typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(u){var i=u}Reflect.construct(e,[],t)}else{try{t.call()}catch(u){i=u}e.call(t.prototype)}else{try{throw Error()}catch(u){i=u}e()}}catch(u){if(u&&i&&"string"===typeof u.stack){for(var r=u.stack.split("\n"),o=i.stack.split("\n"),a=r.length-1,s=o.length-1;1<=a&&0<=s&&r[a]!==o[s];)s--;for(;1<=a&&0<=s;a--,s--)if(r[a]!==o[s]){if(1!==a||1!==s)do{if(a--,0>--s||r[a]!==o[s])return"\n"+r[a].replace(" at new "," at ")}while(1<=a&&0<=s);break}}}finally{V=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?W(e):""}function U(e){switch(e.tag){case 5:return W(e.type);case 16:return W("Lazy");case 13:return W("Suspense");case 19:return W("SuspenseList");case 0:case 2:case 15:return e=Y(e.type,!1);case 11:return e=Y(e.type.render,!1);case 22:return e=Y(e.type._render,!1);case 1:return e=Y(e.type,!0);default:return""}}function K(e){if(null==e)return null;if("function"===typeof e)return e.displayName||e.name||null;if("string"===typeof e)return e;switch(e){case S:return"Fragment";case k:return"Portal";case L:return"Profiler";case x:return"StrictMode";case M:return"Suspense";case T:return"SuspenseList"}if("object"===typeof e)switch(e.$$typeof){case D:return(e.displayName||"Context")+".Consumer";case E:return(e._context.displayName||"Context")+".Provider";case N:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case I:return K(e.type);case A:return K(e._render);case O:t=e._payload,e=e._init;try{return K(e(t))}catch(n){}}return null}function q(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function G(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function $(e){e._valueTracker||(e._valueTracker=function(e){var t=G(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),i=""+e[t];if(!e.hasOwnProperty(t)&&"undefined"!==typeof n&&"function"===typeof n.get&&"function"===typeof n.set){var r=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(e){i=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return i},setValue:function(e){i=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Q(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),i="";return e&&(i=G(e)?e.checked?"true":"false":e.value),(e=i)!==n&&(t.setValue(e),!0)}function X(e){if("undefined"===typeof(e=e||("undefined"!==typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return r({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,i=null!=t.checked?t.checked:t.defaultChecked;n=q(null!=t.value?t.value:n),e._wrapperState={initialChecked:i,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&b(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=q(t.value),i=t.type;if(null!=n)"number"===i?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===i||"reset"===i)return void e.removeAttribute("value");t.hasOwnProperty("value")?re(e,t.type,n):t.hasOwnProperty("defaultValue")&&re(e,t.type,q(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function ie(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var i=t.type;if(!("submit"!==i&&"reset"!==i||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function re(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=r({children:void 0},t),(t=function(e){var t="";return i.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ae(e,t,n,i){if(e=e.options,t){t={};for(var r=0;r<n.length;r++)t["$"+n[r]]=!0;for(n=0;n<e.length;n++)r=t.hasOwnProperty("$"+e[n].value),e[n].selected!==r&&(e[n].selected=r),r&&i&&(e[n].defaultSelected=!0)}else{for(n=""+q(n),t=null,r=0;r<e.length;r++){if(e[r].value===n)return e[r].selected=!0,void(i&&(e[r].defaultSelected=!0));null!==t||e[r].disabled||(t=e[r])}null!==t&&(t.selected=!0)}}function se(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return r({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ue(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(a(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:q(n)}}function le(e,t){var n=q(t.value),i=q(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=i&&(e.defaultValue=""+i)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function he(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function fe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?he(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var pe,ge,ve=(ge=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((pe=pe||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=pe.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,i){MSApp.execUnsafeLocalFunction((function(){return ge(e,t)}))}:ge);function me(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var _e={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function be(e,t,n){return null==t||"boolean"===typeof t||""===t?"":n||"number"!==typeof t||0===t||_e.hasOwnProperty(e)&&_e[e]?(""+t).trim():t+"px"}function we(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var i=0===n.indexOf("--"),r=be(n,t[n],i);"float"===n&&(n="cssFloat"),i?e.setProperty(n,r):e[n]=r}}Object.keys(_e).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),_e[t]=_e[e]}))}));var Ce=r({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ke(e,t){if(t){if(Ce[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!==typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!==typeof t.style)throw Error(a(62))}}function Se(e,t){if(-1===e.indexOf("-"))return"string"===typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function xe(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Le=null,Ee=null,De=null;function Ne(e){if(e=nr(e)){if("function"!==typeof Le)throw Error(a(280));var t=e.stateNode;t&&(t=rr(t),Le(e.stateNode,e.type,t))}}function Me(e){Ee?De?De.push(e):De=[e]:Ee=e}function Te(){if(Ee){var e=Ee,t=De;if(De=Ee=null,Ne(e),t)for(e=0;e<t.length;e++)Ne(t[e])}}function Ie(e,t){return e(t)}function Oe(e,t,n,i,r){return e(t,n,i,r)}function Ae(){}var Re=Ie,Pe=!1,Ze=!1;function Fe(){null===Ee&&null===De||(Ae(),Te())}function je(e,t){var n=e.stateNode;if(null===n)return null;var i=rr(n);if(null===i)return null;n=i[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(i=!i.disabled)||(i=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!i;break e;default:e=!1}if(e)return null;if(n&&"function"!==typeof n)throw Error(a(231,t,typeof n));return n}var He=!1;if(d)try{var Be={};Object.defineProperty(Be,"passive",{get:function(){He=!0}}),window.addEventListener("test",Be,Be),window.removeEventListener("test",Be,Be)}catch(ge){He=!1}function ze(e,t,n,i,r,o,a,s,u){var l=Array.prototype.slice.call(arguments,3);try{t.apply(n,l)}catch(c){this.onError(c)}}var We=!1,Ve=null,Ye=!1,Ue=null,Ke={onError:function(e){We=!0,Ve=e}};function qe(e,t,n,i,r,o,a,s,u){We=!1,Ve=null,ze.apply(Ke,arguments)}function Ge(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!==(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function $e(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Qe(e){if(Ge(e)!==e)throw Error(a(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ge(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,i=t;;){var r=n.return;if(null===r)break;var o=r.alternate;if(null===o){if(null!==(i=r.return)){n=i;continue}break}if(r.child===o.child){for(o=r.child;o;){if(o===n)return Qe(r),e;if(o===i)return Qe(r),t;o=o.sibling}throw Error(a(188))}if(n.return!==i.return)n=r,i=o;else{for(var s=!1,u=r.child;u;){if(u===n){s=!0,n=r,i=o;break}if(u===i){s=!0,i=r,n=o;break}u=u.sibling}if(!s){for(u=o.child;u;){if(u===n){s=!0,n=o,i=r;break}if(u===i){s=!0,i=o,n=r;break}u=u.sibling}if(!s)throw Error(a(189))}}if(n.alternate!==i)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,it,rt=!1,ot=[],at=null,st=null,ut=null,lt=new Map,ct=new Map,dt=[],ht="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function ft(e,t,n,i,r){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:r,targetContainers:[i]}}function pt(e,t){switch(e){case"focusin":case"focusout":at=null;break;case"dragenter":case"dragleave":st=null;break;case"mouseover":case"mouseout":ut=null;break;case"pointerover":case"pointerout":lt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function gt(e,t,n,i,r,o){return null===e||e.nativeEvent!==o?(e=ft(t,n,i,r,o),null!==t&&(null!==(t=nr(t))&&tt(t)),e):(e.eventSystemFlags|=i,t=e.targetContainers,null!==r&&-1===t.indexOf(r)&&t.push(r),e)}function vt(e){var t=tr(e.target);if(null!==t){var n=Ge(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=$e(n)))return e.blockedOn=t,void it(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function mt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=nr(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function _t(e,t,n){mt(e)&&n.delete(t)}function yt(){for(rt=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=nr(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==at&&mt(at)&&(at=null),null!==st&&mt(st)&&(st=null),null!==ut&&mt(ut)&&(ut=null),lt.forEach(_t),ct.forEach(_t)}function bt(e,t){e.blockedOn===t&&(e.blockedOn=null,rt||(rt=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function wt(e){function t(t){return bt(t,e)}if(0<ot.length){bt(ot[0],e);for(var n=1;n<ot.length;n++){var i=ot[n];i.blockedOn===e&&(i.blockedOn=null)}}for(null!==at&&bt(at,e),null!==st&&bt(st,e),null!==ut&&bt(ut,e),lt.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(i=dt[n]).blockedOn===e&&(i.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)vt(n),null===n.blockedOn&&dt.shift()}function Ct(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var kt={animationend:Ct("Animation","AnimationEnd"),animationiteration:Ct("Animation","AnimationIteration"),animationstart:Ct("Animation","AnimationStart"),transitionend:Ct("Transition","TransitionEnd")},St={},xt={};function Lt(e){if(St[e])return St[e];if(!kt[e])return e;var t,n=kt[e];for(t in n)if(n.hasOwnProperty(t)&&t in xt)return St[e]=n[t];return e}d&&(xt=document.createElement("div").style,"AnimationEvent"in window||(delete kt.animationend.animation,delete kt.animationiteration.animation,delete kt.animationstart.animation),"TransitionEvent"in window||delete kt.transitionend.transition);var Et=Lt("animationend"),Dt=Lt("animationiteration"),Nt=Lt("animationstart"),Mt=Lt("transitionend"),Tt=new Map,It=new Map,Ot=["abort","abort",Et,"animationEnd",Dt,"animationIteration",Nt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Mt,"transitionEnd","waiting","waiting"];function At(e,t){for(var n=0;n<e.length;n+=2){var i=e[n],r=e[n+1];r="on"+(r[0].toUpperCase()+r.slice(1)),It.set(i,t),Tt.set(i,r),l(r,[i])}}(0,o.unstable_now)();var Rt=8;function Pt(e){if(0!==(1&e))return Rt=15,1;if(0!==(2&e))return Rt=14,2;if(0!==(4&e))return Rt=13,4;var t=24&e;return 0!==t?(Rt=12,t):0!==(32&e)?(Rt=11,32):0!==(t=192&e)?(Rt=10,t):0!==(256&e)?(Rt=9,256):0!==(t=3584&e)?(Rt=8,t):0!==(4096&e)?(Rt=7,4096):0!==(t=4186112&e)?(Rt=6,t):0!==(t=62914560&e)?(Rt=5,t):67108864&e?(Rt=4,67108864):0!==(134217728&e)?(Rt=3,134217728):0!==(t=805306368&e)?(Rt=2,t):0!==(1073741824&e)?(Rt=1,1073741824):(Rt=8,e)}function Zt(e,t){var n=e.pendingLanes;if(0===n)return Rt=0;var i=0,r=0,o=e.expiredLanes,a=e.suspendedLanes,s=e.pingedLanes;if(0!==o)i=o,r=Rt=15;else if(0!==(o=134217727&n)){var u=o&~a;0!==u?(i=Pt(u),r=Rt):0!==(s&=o)&&(i=Pt(s),r=Rt)}else 0!==(o=n&~a)?(i=Pt(o),r=Rt):0!==s&&(i=Pt(s),r=Rt);if(0===i)return 0;if(i=n&((0>(i=31-Wt(i))?0:1<<i)<<1)-1,0!==t&&t!==i&&0===(t&a)){if(Pt(t),r<=Rt)return t;Rt=r}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=i;0<t;)r=1<<(n=31-Wt(t)),i|=e[n],t&=~r;return i}function Ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function jt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=Ht(24&~t))?jt(10,t):e;case 10:return 0===(e=Ht(192&~t))?jt(8,t):e;case 8:return 0===(e=Ht(3584&~t))&&(0===(e=Ht(4186112&~t))&&(e=512)),e;case 2:return 0===(t=Ht(805306368&~t))&&(t=268435456),t}throw Error(a(358,e))}function Ht(e){return e&-e}function Bt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function zt(e,t,n){e.pendingLanes|=t;var i=t-1;e.suspendedLanes&=i,e.pingedLanes&=i,(e=e.eventTimes)[t=31-Wt(t)]=n}var Wt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Vt(e)/Yt|0)|0},Vt=Math.log,Yt=Math.LN2;var Ut=o.unstable_UserBlockingPriority,Kt=o.unstable_runWithPriority,qt=!0;function Gt(e,t,n,i){Pe||Ae();var r=Qt,o=Pe;Pe=!0;try{Oe(r,e,t,n,i)}finally{(Pe=o)||Fe()}}function $t(e,t,n,i){Kt(Ut,Qt.bind(null,e,t,n,i))}function Qt(e,t,n,i){var r;if(qt)if((r=0===(4&t))&&0<ot.length&&-1<ht.indexOf(e))e=ft(null,e,t,n,i),ot.push(e);else{var o=Xt(e,t,n,i);if(null===o)r&&pt(e,i);else{if(r){if(-1<ht.indexOf(e))return e=ft(o,e,t,n,i),void ot.push(e);if(function(e,t,n,i,r){switch(t){case"focusin":return at=gt(at,e,t,n,i,r),!0;case"dragenter":return st=gt(st,e,t,n,i,r),!0;case"mouseover":return ut=gt(ut,e,t,n,i,r),!0;case"pointerover":var o=r.pointerId;return lt.set(o,gt(lt.get(o)||null,e,t,n,i,r)),!0;case"gotpointercapture":return o=r.pointerId,ct.set(o,gt(ct.get(o)||null,e,t,n,i,r)),!0}return!1}(o,e,t,n,i))return;pt(e,i)}Ai(e,t,i,null,n)}}}function Xt(e,t,n,i){var r=xe(i);if(null!==(r=tr(r))){var o=Ge(r);if(null===o)r=null;else{var a=o.tag;if(13===a){if(null!==(r=$e(o)))return r;r=null}else if(3===a){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;r=null}else o!==r&&(r=null)}}return Ai(e,t,i,r,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,i=n.length,r="value"in Jt?Jt.value:Jt.textContent,o=r.length;for(e=0;e<i&&n[e]===r[e];e++);var a=i-e;for(t=1;t<=a&&n[i-t]===r[o-t];t++);return tn=r.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function on(){return!0}function an(){return!1}function sn(e){function t(t,n,i,r,o){for(var a in this._reactName=t,this._targetInst=i,this.type=n,this.nativeEvent=r,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(a)&&(t=e[a],this[a]=t?t(r):r[a]);return this.isDefaultPrevented=(null!=r.defaultPrevented?r.defaultPrevented:!1===r.returnValue)?on:an,this.isPropagationStopped=an,this}return r(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!==typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=on)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!==typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=on)},persist:function(){},isPersistent:on}),t}var un,ln,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},hn=sn(dn),fn=r({},dn,{view:0,detail:0}),pn=sn(fn),gn=r({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:En,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(un=e.screenX-cn.screenX,ln=e.screenY-cn.screenY):ln=un=0,cn=e),un)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),vn=sn(gn),mn=sn(r({},gn,{dataTransfer:0})),_n=sn(r({},fn,{relatedTarget:0})),yn=sn(r({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=r({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),wn=sn(bn),Cn=sn(r({},dn,{data:0})),kn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Sn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},xn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Ln(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=xn[e])&&!!t[e]}function En(){return Ln}var Dn=r({},fn,{key:function(e){if(e.key){var t=kn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Sn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:En,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Nn=sn(Dn),Mn=sn(r({},gn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Tn=sn(r({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:En})),In=sn(r({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),On=r({},gn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),An=sn(On),Rn=[9,13,27,32],Pn=d&&"CompositionEvent"in window,Zn=null;d&&"documentMode"in document&&(Zn=document.documentMode);var Fn=d&&"TextEvent"in window&&!Zn,jn=d&&(!Pn||Zn&&8<Zn&&11>=Zn),Hn=String.fromCharCode(32),Bn=!1;function zn(e,t){switch(e){case"keyup":return-1!==Rn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Wn(e){return"object"===typeof(e=e.detail)&&"data"in e?e.data:null}var Vn=!1;var Yn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Un(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Yn[e.type]:"textarea"===t}function Kn(e,t,n,i){Me(i),0<(t=Pi(t,"onChange")).length&&(n=new hn("onChange","change",null,n,i),e.push({event:n,listeners:t}))}var qn=null,Gn=null;function $n(e){Di(e,0)}function Qn(e){if(Q(ir(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(d){var ei;if(d){var ti="oninput"in document;if(!ti){var ni=document.createElement("div");ni.setAttribute("oninput","return;"),ti="function"===typeof ni.oninput}ei=ti}else ei=!1;Jn=ei&&(!document.documentMode||9<document.documentMode)}function ii(){qn&&(qn.detachEvent("onpropertychange",ri),Gn=qn=null)}function ri(e){if("value"===e.propertyName&&Qn(Gn)){var t=[];if(Kn(t,Gn,e,xe(e)),e=$n,Pe)e(t);else{Pe=!0;try{Ie(e,t)}finally{Pe=!1,Fe()}}}}function oi(e,t,n){"focusin"===e?(ii(),Gn=n,(qn=t).attachEvent("onpropertychange",ri)):"focusout"===e&&ii()}function ai(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qn(Gn)}function si(e,t){if("click"===e)return Qn(t)}function ui(e,t){if("input"===e||"change"===e)return Qn(t)}var li="function"===typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e===1/t)||e!==e&&t!==t},ci=Object.prototype.hasOwnProperty;function di(e,t){if(li(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(i=0;i<n.length;i++)if(!ci.call(t,n[i])||!li(e[n[i]],t[n[i]]))return!1;return!0}function hi(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fi(e,t){var n,i=hi(e);for(e=0;i;){if(3===i.nodeType){if(n=e+i.textContent.length,e<=t&&n>=t)return{node:i,offset:t-e};e=n}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=hi(i)}}function pi(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?pi(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function gi(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"===typeof t.contentWindow.location.href}catch(i){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function vi(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var mi=d&&"documentMode"in document&&11>=document.documentMode,_i=null,yi=null,bi=null,wi=!1;function Ci(e,t,n){var i=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;wi||null==_i||_i!==X(i)||("selectionStart"in(i=_i)&&vi(i)?i={start:i.selectionStart,end:i.selectionEnd}:i={anchorNode:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset},bi&&di(bi,i)||(bi=i,0<(i=Pi(yi,"onSelect")).length&&(t=new hn("onSelect","select",null,t,n),e.push({event:t,listeners:i}),t.target=_i)))}At("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),At("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),At(Ot,2);for(var ki="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Si=0;Si<ki.length;Si++)It.set(ki[Si],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),l("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),l("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),l("onBeforeInput",["compositionend","keypress","textInput","paste"]),l("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var xi="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Li=new Set("cancel close invalid load scroll toggle".split(" ").concat(xi));function Ei(e,t,n){var i=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,i,r,o,s,u,l){if(qe.apply(this,arguments),We){if(!We)throw Error(a(198));var c=Ve;We=!1,Ve=null,Ye||(Ye=!0,Ue=c)}}(i,t,void 0,e),e.currentTarget=null}function Di(e,t){t=0!==(4&t);for(var n=0;n<e.length;n++){var i=e[n],r=i.event;i=i.listeners;e:{var o=void 0;if(t)for(var a=i.length-1;0<=a;a--){var s=i[a],u=s.instance,l=s.currentTarget;if(s=s.listener,u!==o&&r.isPropagationStopped())break e;Ei(r,s,l),o=u}else for(a=0;a<i.length;a++){if(u=(s=i[a]).instance,l=s.currentTarget,s=s.listener,u!==o&&r.isPropagationStopped())break e;Ei(r,s,l),o=u}}}if(Ye)throw e=Ue,Ye=!1,Ue=null,e}function Ni(e,t){var n=or(t),i=e+"__bubble";n.has(i)||(Oi(t,e,2,!1),n.add(i))}var Mi="_reactListening"+Math.random().toString(36).slice(2);function Ti(e){e[Mi]||(e[Mi]=!0,s.forEach((function(t){Li.has(t)||Ii(t,!1,e,null),Ii(t,!0,e,null)})))}function Ii(e,t,n,i){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==i&&!t&&Li.has(e)){if("scroll"!==e)return;r|=2,o=i}var a=or(o),s=e+"__"+(t?"capture":"bubble");a.has(s)||(t&&(r|=4),Oi(o,e,r,t),a.add(s))}function Oi(e,t,n,i){var r=It.get(t);switch(void 0===r?2:r){case 0:r=Gt;break;case 1:r=$t;break;default:r=Qt}n=r.bind(null,t,n,e),r=void 0,!He||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(r=!0),i?void 0!==r?e.addEventListener(t,n,{capture:!0,passive:r}):e.addEventListener(t,n,!0):void 0!==r?e.addEventListener(t,n,{passive:r}):e.addEventListener(t,n,!1)}function Ai(e,t,n,i,r){var o=i;if(0===(1&t)&&0===(2&t)&&null!==i)e:for(;;){if(null===i)return;var a=i.tag;if(3===a||4===a){var s=i.stateNode.containerInfo;if(s===r||8===s.nodeType&&s.parentNode===r)break;if(4===a)for(a=i.return;null!==a;){var u=a.tag;if((3===u||4===u)&&((u=a.stateNode.containerInfo)===r||8===u.nodeType&&u.parentNode===r))return;a=a.return}for(;null!==s;){if(null===(a=tr(s)))return;if(5===(u=a.tag)||6===u){i=o=a;continue e}s=s.parentNode}}i=i.return}!function(e,t,n){if(Ze)return e(t,n);Ze=!0;try{return Re(e,t,n)}finally{Ze=!1,Fe()}}((function(){var i=o,r=xe(n),a=[];e:{var s=Tt.get(e);if(void 0!==s){var u=hn,l=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":u=Nn;break;case"focusin":l="focus",u=_n;break;case"focusout":l="blur",u=_n;break;case"beforeblur":case"afterblur":u=_n;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":u=vn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":u=mn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":u=Tn;break;case Et:case Dt:case Nt:u=yn;break;case Mt:u=In;break;case"scroll":u=pn;break;case"wheel":u=An;break;case"copy":case"cut":case"paste":u=wn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":u=Mn}var c=0!==(4&t),d=!c&&"scroll"===e,h=c?null!==s?s+"Capture":null:s;c=[];for(var f,p=i;null!==p;){var g=(f=p).stateNode;if(5===f.tag&&null!==g&&(f=g,null!==h&&(null!=(g=je(p,h))&&c.push(Ri(p,g,f)))),d)break;p=p.return}0<c.length&&(s=new u(s,l,null,n,r),a.push({event:s,listeners:c}))}}if(0===(7&t)){if(u="mouseout"===e||"pointerout"===e,(!(s="mouseover"===e||"pointerover"===e)||0!==(16&t)||!(l=n.relatedTarget||n.fromElement)||!tr(l)&&!l[Ji])&&(u||s)&&(s=r.window===r?r:(s=r.ownerDocument)?s.defaultView||s.parentWindow:window,u?(u=i,null!==(l=(l=n.relatedTarget||n.toElement)?tr(l):null)&&(l!==(d=Ge(l))||5!==l.tag&&6!==l.tag)&&(l=null)):(u=null,l=i),u!==l)){if(c=vn,g="onMouseLeave",h="onMouseEnter",p="mouse","pointerout"!==e&&"pointerover"!==e||(c=Mn,g="onPointerLeave",h="onPointerEnter",p="pointer"),d=null==u?s:ir(u),f=null==l?s:ir(l),(s=new c(g,p+"leave",u,n,r)).target=d,s.relatedTarget=f,g=null,tr(r)===i&&((c=new c(h,p+"enter",l,n,r)).target=f,c.relatedTarget=d,g=c),d=g,u&&l)e:{for(h=l,p=0,f=c=u;f;f=Zi(f))p++;for(f=0,g=h;g;g=Zi(g))f++;for(;0<p-f;)c=Zi(c),p--;for(;0<f-p;)h=Zi(h),f--;for(;p--;){if(c===h||null!==h&&c===h.alternate)break e;c=Zi(c),h=Zi(h)}c=null}else c=null;null!==u&&Fi(a,s,u,c,!1),null!==l&&null!==d&&Fi(a,d,l,c,!0)}if("select"===(u=(s=i?ir(i):window).nodeName&&s.nodeName.toLowerCase())||"input"===u&&"file"===s.type)var v=Xn;else if(Un(s))if(Jn)v=ui;else{v=ai;var m=oi}else(u=s.nodeName)&&"input"===u.toLowerCase()&&("checkbox"===s.type||"radio"===s.type)&&(v=si);switch(v&&(v=v(e,i))?Kn(a,v,n,r):(m&&m(e,s,i),"focusout"===e&&(m=s._wrapperState)&&m.controlled&&"number"===s.type&&re(s,"number",s.value)),m=i?ir(i):window,e){case"focusin":(Un(m)||"true"===m.contentEditable)&&(_i=m,yi=i,bi=null);break;case"focusout":bi=yi=_i=null;break;case"mousedown":wi=!0;break;case"contextmenu":case"mouseup":case"dragend":wi=!1,Ci(a,n,r);break;case"selectionchange":if(mi)break;case"keydown":case"keyup":Ci(a,n,r)}var _;if(Pn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Vn?zn(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(jn&&"ko"!==n.locale&&(Vn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Vn&&(_=nn()):(en="value"in(Jt=r)?Jt.value:Jt.textContent,Vn=!0)),0<(m=Pi(i,y)).length&&(y=new Cn(y,e,null,n,r),a.push({event:y,listeners:m}),_?y.data=_:null!==(_=Wn(n))&&(y.data=_))),(_=Fn?function(e,t){switch(e){case"compositionend":return Wn(t);case"keypress":return 32!==t.which?null:(Bn=!0,Hn);case"textInput":return(e=t.data)===Hn&&Bn?null:e;default:return null}}(e,n):function(e,t){if(Vn)return"compositionend"===e||!Pn&&zn(e,t)?(e=nn(),tn=en=Jt=null,Vn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return jn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(i=Pi(i,"onBeforeInput")).length&&(r=new Cn("onBeforeInput","beforeinput",null,n,r),a.push({event:r,listeners:i}),r.data=_))}Di(a,t)}))}function Ri(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Pi(e,t){for(var n=t+"Capture",i=[];null!==e;){var r=e,o=r.stateNode;5===r.tag&&null!==o&&(r=o,null!=(o=je(e,n))&&i.unshift(Ri(e,o,r)),null!=(o=je(e,t))&&i.push(Ri(e,o,r))),e=e.return}return i}function Zi(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Fi(e,t,n,i,r){for(var o=t._reactName,a=[];null!==n&&n!==i;){var s=n,u=s.alternate,l=s.stateNode;if(null!==u&&u===i)break;5===s.tag&&null!==l&&(s=l,r?null!=(u=je(n,o))&&a.unshift(Ri(n,u,s)):r||null!=(u=je(n,o))&&a.push(Ri(n,u,s))),n=n.return}0!==a.length&&e.push({event:t,listeners:a})}function ji(){}var Hi=null,Bi=null;function zi(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Wi(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"===typeof t.children||"number"===typeof t.children||"object"===typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Vi="function"===typeof setTimeout?setTimeout:void 0,Yi="function"===typeof clearTimeout?clearTimeout:void 0;function Ui(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Ki(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function qi(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Gi=0;var $i=Math.random().toString(36).slice(2),Qi="__reactFiber$"+$i,Xi="__reactProps$"+$i,Ji="__reactContainer$"+$i,er="__reactEvents$"+$i;function tr(e){var t=e[Qi];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Ji]||n[Qi]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=qi(e);null!==e;){if(n=e[Qi])return n;e=qi(e)}return t}n=(e=n).parentNode}return null}function nr(e){return!(e=e[Qi]||e[Ji])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ir(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function rr(e){return e[Xi]||null}function or(e){var t=e[er];return void 0===t&&(t=e[er]=new Set),t}var ar=[],sr=-1;function ur(e){return{current:e}}function lr(e){0>sr||(e.current=ar[sr],ar[sr]=null,sr--)}function cr(e,t){sr++,ar[sr]=e.current,e.current=t}var dr={},hr=ur(dr),fr=ur(!1),pr=dr;function gr(e,t){var n=e.type.contextTypes;if(!n)return dr;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===t)return i.__reactInternalMemoizedMaskedChildContext;var r,o={};for(r in n)o[r]=t[r];return i&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function vr(e){return null!==(e=e.childContextTypes)&&void 0!==e}function mr(){lr(fr),lr(hr)}function _r(e,t,n){if(hr.current!==dr)throw Error(a(168));cr(hr,t),cr(fr,n)}function yr(e,t,n){var i=e.stateNode;if(e=t.childContextTypes,"function"!==typeof i.getChildContext)return n;for(var o in i=i.getChildContext())if(!(o in e))throw Error(a(108,K(t)||"Unknown",o));return r({},n,i)}function br(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||dr,pr=hr.current,cr(hr,e),cr(fr,fr.current),!0}function wr(e,t,n){var i=e.stateNode;if(!i)throw Error(a(169));n?(e=yr(e,t,pr),i.__reactInternalMemoizedMergedChildContext=e,lr(fr),lr(hr),cr(hr,e)):lr(fr),cr(fr,n)}var Cr=null,kr=null,Sr=o.unstable_runWithPriority,xr=o.unstable_scheduleCallback,Lr=o.unstable_cancelCallback,Er=o.unstable_shouldYield,Dr=o.unstable_requestPaint,Nr=o.unstable_now,Mr=o.unstable_getCurrentPriorityLevel,Tr=o.unstable_ImmediatePriority,Ir=o.unstable_UserBlockingPriority,Or=o.unstable_NormalPriority,Ar=o.unstable_LowPriority,Rr=o.unstable_IdlePriority,Pr={},Zr=void 0!==Dr?Dr:function(){},Fr=null,jr=null,Hr=!1,Br=Nr(),zr=1e4>Br?Nr:function(){return Nr()-Br};function Wr(){switch(Mr()){case Tr:return 99;case Ir:return 98;case Or:return 97;case Ar:return 96;case Rr:return 95;default:throw Error(a(332))}}function Vr(e){switch(e){case 99:return Tr;case 98:return Ir;case 97:return Or;case 96:return Ar;case 95:return Rr;default:throw Error(a(332))}}function Yr(e,t){return e=Vr(e),Sr(e,t)}function Ur(e,t,n){return e=Vr(e),xr(e,t,n)}function Kr(){if(null!==jr){var e=jr;jr=null,Lr(e)}qr()}function qr(){if(!Hr&&null!==Fr){Hr=!0;var e=0;try{var t=Fr;Yr(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Fr=null}catch(n){throw null!==Fr&&(Fr=Fr.slice(e+1)),xr(Tr,Kr),n}finally{Hr=!1}}}var Gr=w.ReactCurrentBatchConfig;function $r(e,t){if(e&&e.defaultProps){for(var n in t=r({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Qr=ur(null),Xr=null,Jr=null,eo=null;function to(){eo=Jr=Xr=null}function no(e){var t=Qr.current;lr(Qr),e.type._context._currentValue=t}function io(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ro(e,t){Xr=e,eo=Jr=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!==(e.lanes&t)&&(Pa=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"===typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Jr){if(null===Xr)throw Error(a(308));Jr=t,Xr.dependencies={lanes:0,firstContext:t,responders:null}}else Jr=Jr.next=t;return e._currentValue}var ao=!1;function so(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function uo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function lo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function co(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function ho(e,t){var n=e.updateQueue,i=e.alternate;if(null!==i&&n===(i=i.updateQueue)){var r=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var a={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?r=o=a:o=o.next=a,n=n.next}while(null!==n);null===o?r=o=t:o=o.next=t}else r=o=t;return n={baseState:i.baseState,firstBaseUpdate:r,lastBaseUpdate:o,shared:i.shared,effects:i.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function fo(e,t,n,i){var o=e.updateQueue;ao=!1;var a=o.firstBaseUpdate,s=o.lastBaseUpdate,u=o.shared.pending;if(null!==u){o.shared.pending=null;var l=u,c=l.next;l.next=null,null===s?a=c:s.next=c,s=l;var d=e.alternate;if(null!==d){var h=(d=d.updateQueue).lastBaseUpdate;h!==s&&(null===h?d.firstBaseUpdate=c:h.next=c,d.lastBaseUpdate=l)}}if(null!==a){for(h=o.baseState,s=0,d=c=l=null;;){u=a.lane;var f=a.eventTime;if((i&u)===u){null!==d&&(d=d.next={eventTime:f,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var p=e,g=a;switch(u=t,f=n,g.tag){case 1:if("function"===typeof(p=g.payload)){h=p.call(f,h,u);break e}h=p;break e;case 3:p.flags=-4097&p.flags|64;case 0:if(null===(u="function"===typeof(p=g.payload)?p.call(f,h,u):p)||void 0===u)break e;h=r({},h,u);break e;case 2:ao=!0}}null!==a.callback&&(e.flags|=32,null===(u=o.effects)?o.effects=[a]:u.push(a))}else f={eventTime:f,lane:u,tag:a.tag,payload:a.payload,callback:a.callback,next:null},null===d?(c=d=f,l=h):d=d.next=f,s|=u;if(null===(a=a.next)){if(null===(u=o.shared.pending))break;a=u.next,u.next=null,o.lastBaseUpdate=u,o.shared.pending=null}}null===d&&(l=h),o.baseState=l,o.firstBaseUpdate=c,o.lastBaseUpdate=d,Bs|=s,e.lanes=s,e.memoizedState=h}}function po(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var i=e[t],r=i.callback;if(null!==r){if(i.callback=null,i=n,"function"!==typeof r)throw Error(a(191,r));r.call(i)}}}var go=(new i.Component).refs;function vo(e,t,n,i){n=null===(n=n(i,t=e.memoizedState))||void 0===n?t:r({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var mo={isMounted:function(e){return!!(e=e._reactInternals)&&Ge(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var i=hu(),r=fu(e),o=lo(i,r);o.payload=t,void 0!==n&&null!==n&&(o.callback=n),co(e,o),pu(e,r,i)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var i=hu(),r=fu(e),o=lo(i,r);o.tag=1,o.payload=t,void 0!==n&&null!==n&&(o.callback=n),co(e,o),pu(e,r,i)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=hu(),i=fu(e),r=lo(n,i);r.tag=2,void 0!==t&&null!==t&&(r.callback=t),co(e,r),pu(e,i,n)}};function _o(e,t,n,i,r,o,a){return"function"===typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(i,o,a):!t.prototype||!t.prototype.isPureReactComponent||(!di(n,i)||!di(r,o))}function yo(e,t,n){var i=!1,r=dr,o=t.contextType;return"object"===typeof o&&null!==o?o=oo(o):(r=vr(t)?pr:hr.current,o=(i=null!==(i=t.contextTypes)&&void 0!==i)?gr(e,r):dr),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=mo,e.stateNode=t,t._reactInternals=e,i&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=o),t}function bo(e,t,n,i){e=t.state,"function"===typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,i),"function"===typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,i),t.state!==e&&mo.enqueueReplaceState(t,t.state,null)}function wo(e,t,n,i){var r=e.stateNode;r.props=n,r.state=e.memoizedState,r.refs=go,so(e);var o=t.contextType;"object"===typeof o&&null!==o?r.context=oo(o):(o=vr(t)?pr:hr.current,r.context=gr(e,o)),fo(e,n,r,i),r.state=e.memoizedState,"function"===typeof(o=t.getDerivedStateFromProps)&&(vo(e,t,o,n),r.state=e.memoizedState),"function"===typeof t.getDerivedStateFromProps||"function"===typeof r.getSnapshotBeforeUpdate||"function"!==typeof r.UNSAFE_componentWillMount&&"function"!==typeof r.componentWillMount||(t=r.state,"function"===typeof r.componentWillMount&&r.componentWillMount(),"function"===typeof r.UNSAFE_componentWillMount&&r.UNSAFE_componentWillMount(),t!==r.state&&mo.enqueueReplaceState(r,r.state,null),fo(e,n,r,i),r.state=e.memoizedState),"function"===typeof r.componentDidMount&&(e.flags|=4)}var Co=Array.isArray;function ko(e,t,n){if(null!==(e=n.ref)&&"function"!==typeof e&&"object"!==typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var i=n.stateNode}if(!i)throw Error(a(147,e));var r=""+e;return null!==t&&null!==t.ref&&"function"===typeof t.ref&&t.ref._stringRef===r?t.ref:(t=function(e){var t=i.refs;t===go&&(t=i.refs={}),null===e?delete t[r]:t[r]=e},t._stringRef=r,t)}if("string"!==typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function So(e,t){if("textarea"!==e.type)throw Error(a(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function xo(e){function t(t,n){if(e){var i=t.lastEffect;null!==i?(i.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,i){if(!e)return null;for(;null!==i;)t(n,i),i=i.sibling;return null}function i(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function r(e,t){return(e=Uu(e,t)).index=0,e.sibling=null,e}function o(t,n,i){return t.index=i,e?null!==(i=t.alternate)?(i=i.index)<n?(t.flags=2,n):i:(t.flags=2,n):n}function s(t){return e&&null===t.alternate&&(t.flags=2),t}function u(e,t,n,i){return null===t||6!==t.tag?((t=$u(n,e.mode,i)).return=e,t):((t=r(t,n)).return=e,t)}function l(e,t,n,i){return null!==t&&t.elementType===n.type?((i=r(t,n.props)).ref=ko(e,t,n),i.return=e,i):((i=Ku(n.type,n.key,n.props,null,e.mode,i)).ref=ko(e,t,n),i.return=e,i)}function c(e,t,n,i){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Qu(n,e.mode,i)).return=e,t):((t=r(t,n.children||[])).return=e,t)}function d(e,t,n,i,o){return null===t||7!==t.tag?((t=qu(n,e.mode,i,o)).return=e,t):((t=r(t,n)).return=e,t)}function h(e,t,n){if("string"===typeof t||"number"===typeof t)return(t=$u(""+t,e.mode,n)).return=e,t;if("object"===typeof t&&null!==t){switch(t.$$typeof){case C:return(n=Ku(t.type,t.key,t.props,null,e.mode,n)).ref=ko(e,null,t),n.return=e,n;case k:return(t=Qu(t,e.mode,n)).return=e,t}if(Co(t)||z(t))return(t=qu(t,e.mode,n,null)).return=e,t;So(e,t)}return null}function f(e,t,n,i){var r=null!==t?t.key:null;if("string"===typeof n||"number"===typeof n)return null!==r?null:u(e,t,""+n,i);if("object"===typeof n&&null!==n){switch(n.$$typeof){case C:return n.key===r?n.type===S?d(e,t,n.props.children,i,r):l(e,t,n,i):null;case k:return n.key===r?c(e,t,n,i):null}if(Co(n)||z(n))return null!==r?null:d(e,t,n,i,null);So(e,n)}return null}function p(e,t,n,i,r){if("string"===typeof i||"number"===typeof i)return u(t,e=e.get(n)||null,""+i,r);if("object"===typeof i&&null!==i){switch(i.$$typeof){case C:return e=e.get(null===i.key?n:i.key)||null,i.type===S?d(t,e,i.props.children,r,i.key):l(t,e,i,r);case k:return c(t,e=e.get(null===i.key?n:i.key)||null,i,r)}if(Co(i)||z(i))return d(t,e=e.get(n)||null,i,r,null);So(t,i)}return null}function g(r,a,s,u){for(var l=null,c=null,d=a,g=a=0,v=null;null!==d&&g<s.length;g++){d.index>g?(v=d,d=null):v=d.sibling;var m=f(r,d,s[g],u);if(null===m){null===d&&(d=v);break}e&&d&&null===m.alternate&&t(r,d),a=o(m,a,g),null===c?l=m:c.sibling=m,c=m,d=v}if(g===s.length)return n(r,d),l;if(null===d){for(;g<s.length;g++)null!==(d=h(r,s[g],u))&&(a=o(d,a,g),null===c?l=d:c.sibling=d,c=d);return l}for(d=i(r,d);g<s.length;g++)null!==(v=p(d,r,g,s[g],u))&&(e&&null!==v.alternate&&d.delete(null===v.key?g:v.key),a=o(v,a,g),null===c?l=v:c.sibling=v,c=v);return e&&d.forEach((function(e){return t(r,e)})),l}function v(r,s,u,l){var c=z(u);if("function"!==typeof c)throw Error(a(150));if(null==(u=c.call(u)))throw Error(a(151));for(var d=c=null,g=s,v=s=0,m=null,_=u.next();null!==g&&!_.done;v++,_=u.next()){g.index>v?(m=g,g=null):m=g.sibling;var y=f(r,g,_.value,l);if(null===y){null===g&&(g=m);break}e&&g&&null===y.alternate&&t(r,g),s=o(y,s,v),null===d?c=y:d.sibling=y,d=y,g=m}if(_.done)return n(r,g),c;if(null===g){for(;!_.done;v++,_=u.next())null!==(_=h(r,_.value,l))&&(s=o(_,s,v),null===d?c=_:d.sibling=_,d=_);return c}for(g=i(r,g);!_.done;v++,_=u.next())null!==(_=p(g,r,v,_.value,l))&&(e&&null!==_.alternate&&g.delete(null===_.key?v:_.key),s=o(_,s,v),null===d?c=_:d.sibling=_,d=_);return e&&g.forEach((function(e){return t(r,e)})),c}return function(e,i,o,u){var l="object"===typeof o&&null!==o&&o.type===S&&null===o.key;l&&(o=o.props.children);var c="object"===typeof o&&null!==o;if(c)switch(o.$$typeof){case C:e:{for(c=o.key,l=i;null!==l;){if(l.key===c){if(7===l.tag){if(o.type===S){n(e,l.sibling),(i=r(l,o.props.children)).return=e,e=i;break e}}else if(l.elementType===o.type){n(e,l.sibling),(i=r(l,o.props)).ref=ko(e,l,o),i.return=e,e=i;break e}n(e,l);break}t(e,l),l=l.sibling}o.type===S?((i=qu(o.props.children,e.mode,u,o.key)).return=e,e=i):((u=Ku(o.type,o.key,o.props,null,e.mode,u)).ref=ko(e,i,o),u.return=e,e=u)}return s(e);case k:e:{for(l=o.key;null!==i;){if(i.key===l){if(4===i.tag&&i.stateNode.containerInfo===o.containerInfo&&i.stateNode.implementation===o.implementation){n(e,i.sibling),(i=r(i,o.children||[])).return=e,e=i;break e}n(e,i);break}t(e,i),i=i.sibling}(i=Qu(o,e.mode,u)).return=e,e=i}return s(e)}if("string"===typeof o||"number"===typeof o)return o=""+o,null!==i&&6===i.tag?(n(e,i.sibling),(i=r(i,o)).return=e,e=i):(n(e,i),(i=$u(o,e.mode,u)).return=e,e=i),s(e);if(Co(o))return g(e,i,o,u);if(z(o))return v(e,i,o,u);if(c&&So(e,o),"undefined"===typeof o&&!l)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(a(152,K(e.type)||"Component"))}return n(e,i)}}var Lo=xo(!0),Eo=xo(!1),Do={},No=ur(Do),Mo=ur(Do),To=ur(Do);function Io(e){if(e===Do)throw Error(a(174));return e}function Oo(e,t){switch(cr(To,t),cr(Mo,e),cr(No,Do),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fe(null,"");break;default:t=fe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}lr(No),cr(No,t)}function Ao(){lr(No),lr(Mo),lr(To)}function Ro(e){Io(To.current);var t=Io(No.current),n=fe(t,e.type);t!==n&&(cr(Mo,e),cr(No,n))}function Po(e){Mo.current===e&&(lr(No),lr(Mo))}var Zo=ur(0);function Fo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!==(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var jo=null,Ho=null,Bo=!1;function zo(e,t){var n=Vu(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Wo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Vo(e){if(Bo){var t=Ho;if(t){var n=t;if(!Wo(e,t)){if(!(t=Ki(n.nextSibling))||!Wo(e,t))return e.flags=-1025&e.flags|2,Bo=!1,void(jo=e);zo(jo,n)}jo=e,Ho=Ki(t.firstChild)}else e.flags=-1025&e.flags|2,Bo=!1,jo=e}}function Yo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;jo=e}function Uo(e){if(e!==jo)return!1;if(!Bo)return Yo(e),Bo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Wi(t,e.memoizedProps))for(t=Ho;t;)zo(e,t),t=Ki(t.nextSibling);if(Yo(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Ho=Ki(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Ho=null}}else Ho=jo?Ki(e.stateNode.nextSibling):null;return!0}function Ko(){Ho=jo=null,Bo=!1}var qo=[];function Go(){for(var e=0;e<qo.length;e++)qo[e]._workInProgressVersionPrimary=null;qo.length=0}var $o=w.ReactCurrentDispatcher,Qo=w.ReactCurrentBatchConfig,Xo=0,Jo=null,ea=null,ta=null,na=!1,ia=!1;function ra(){throw Error(a(321))}function oa(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!li(e[n],t[n]))return!1;return!0}function aa(e,t,n,i,r,o){if(Xo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,$o.current=null===e||null===e.memoizedState?Ia:Oa,e=n(i,r),ia){o=0;do{if(ia=!1,!(25>o))throw Error(a(301));o+=1,ta=ea=null,t.updateQueue=null,$o.current=Aa,e=n(i,r)}while(ia)}if($o.current=Ta,t=null!==ea&&null!==ea.next,Xo=0,ta=ea=Jo=null,na=!1,t)throw Error(a(300));return e}function sa(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ta?Jo.memoizedState=ta=e:ta=ta.next=e,ta}function ua(){if(null===ea){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ea.next;var t=null===ta?Jo.memoizedState:ta.next;if(null!==t)ta=t,ea=e;else{if(null===e)throw Error(a(310));e={memoizedState:(ea=e).memoizedState,baseState:ea.baseState,baseQueue:ea.baseQueue,queue:ea.queue,next:null},null===ta?Jo.memoizedState=ta=e:ta=ta.next=e}return ta}function la(e,t){return"function"===typeof t?t(e):t}function ca(e){var t=ua(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var i=ea,r=i.baseQueue,o=n.pending;if(null!==o){if(null!==r){var s=r.next;r.next=o.next,o.next=s}i.baseQueue=r=o,n.pending=null}if(null!==r){r=r.next,i=i.baseState;var u=s=o=null,l=r;do{var c=l.lane;if((Xo&c)===c)null!==u&&(u=u.next={lane:0,action:l.action,eagerReducer:l.eagerReducer,eagerState:l.eagerState,next:null}),i=l.eagerReducer===e?l.eagerState:e(i,l.action);else{var d={lane:c,action:l.action,eagerReducer:l.eagerReducer,eagerState:l.eagerState,next:null};null===u?(s=u=d,o=i):u=u.next=d,Jo.lanes|=c,Bs|=c}l=l.next}while(null!==l&&l!==r);null===u?o=i:u.next=s,li(i,t.memoizedState)||(Pa=!0),t.memoizedState=i,t.baseState=o,t.baseQueue=u,n.lastRenderedState=i}return[t.memoizedState,n.dispatch]}function da(e){var t=ua(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var i=n.dispatch,r=n.pending,o=t.memoizedState;if(null!==r){n.pending=null;var s=r=r.next;do{o=e(o,s.action),s=s.next}while(s!==r);li(o,t.memoizedState)||(Pa=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,i]}function ha(e,t,n){var i=t._getVersion;i=i(t._source);var r=t._workInProgressVersionPrimary;if(null!==r?e=r===i:(e=e.mutableReadLanes,(e=(Xo&e)===e)&&(t._workInProgressVersionPrimary=i,qo.push(t))),e)return n(t._source);throw qo.push(t),Error(a(350))}function fa(e,t,n,i){var r=Os;if(null===r)throw Error(a(349));var o=t._getVersion,s=o(t._source),u=$o.current,l=u.useState((function(){return ha(r,t,n)})),c=l[1],d=l[0];l=ta;var h=e.memoizedState,f=h.refs,p=f.getSnapshot,g=h.source;h=h.subscribe;var v=Jo;return e.memoizedState={refs:f,source:t,subscribe:i},u.useEffect((function(){f.getSnapshot=n,f.setSnapshot=c;var e=o(t._source);if(!li(s,e)){e=n(t._source),li(d,e)||(c(e),e=fu(v),r.mutableReadLanes|=e&r.pendingLanes),e=r.mutableReadLanes,r.entangledLanes|=e;for(var i=r.entanglements,a=e;0<a;){var u=31-Wt(a),l=1<<u;i[u]|=e,a&=~l}}}),[n,t,i]),u.useEffect((function(){return i(t._source,(function(){var e=f.getSnapshot,n=f.setSnapshot;try{n(e(t._source));var i=fu(v);r.mutableReadLanes|=i&r.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,i]),li(p,n)&&li(g,t)&&li(h,i)||((e={pending:null,dispatch:null,lastRenderedReducer:la,lastRenderedState:d}).dispatch=c=Ma.bind(null,Jo,e),l.queue=e,l.baseQueue=null,d=ha(r,t,n),l.memoizedState=l.baseState=d),d}function pa(e,t,n){return fa(ua(),e,t,n)}function ga(e){var t=sa();return"function"===typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:la,lastRenderedState:e}).dispatch=Ma.bind(null,Jo,e),[t.memoizedState,e]}function va(e,t,n,i){return e={tag:e,create:t,destroy:n,deps:i,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(i=n.next,n.next=e,e.next=i,t.lastEffect=e),e}function ma(e){return e={current:e},sa().memoizedState=e}function _a(){return ua().memoizedState}function ya(e,t,n,i){var r=sa();Jo.flags|=e,r.memoizedState=va(1|t,n,void 0,void 0===i?null:i)}function ba(e,t,n,i){var r=ua();i=void 0===i?null:i;var o=void 0;if(null!==ea){var a=ea.memoizedState;if(o=a.destroy,null!==i&&oa(i,a.deps))return void va(t,n,o,i)}Jo.flags|=e,r.memoizedState=va(1|t,n,o,i)}function wa(e,t){return ya(516,4,e,t)}function Ca(e,t){return ba(516,4,e,t)}function ka(e,t){return ba(4,2,e,t)}function Sa(e,t){return"function"===typeof t?(e=e(),t(e),function(){t(null)}):null!==t&&void 0!==t?(e=e(),t.current=e,function(){t.current=null}):void 0}function xa(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,ba(4,2,Sa.bind(null,t,e),n)}function La(){}function Ea(e,t){var n=ua();t=void 0===t?null:t;var i=n.memoizedState;return null!==i&&null!==t&&oa(t,i[1])?i[0]:(n.memoizedState=[e,t],e)}function Da(e,t){var n=ua();t=void 0===t?null:t;var i=n.memoizedState;return null!==i&&null!==t&&oa(t,i[1])?i[0]:(e=e(),n.memoizedState=[e,t],e)}function Na(e,t){var n=Wr();Yr(98>n?98:n,(function(){e(!0)})),Yr(97<n?97:n,(function(){var n=Qo.transition;Qo.transition=1;try{e(!1),t()}finally{Qo.transition=n}}))}function Ma(e,t,n){var i=hu(),r=fu(e),o={lane:r,action:n,eagerReducer:null,eagerState:null,next:null},a=t.pending;if(null===a?o.next=o:(o.next=a.next,a.next=o),t.pending=o,a=e.alternate,e===Jo||null!==a&&a===Jo)ia=na=!0;else{if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=t.lastRenderedReducer))try{var s=t.lastRenderedState,u=a(s,n);if(o.eagerReducer=a,o.eagerState=u,li(u,s))return}catch(l){}pu(e,r,i)}}var Ta={readContext:oo,useCallback:ra,useContext:ra,useEffect:ra,useImperativeHandle:ra,useLayoutEffect:ra,useMemo:ra,useReducer:ra,useRef:ra,useState:ra,useDebugValue:ra,useDeferredValue:ra,useTransition:ra,useMutableSource:ra,useOpaqueIdentifier:ra,unstable_isNewReconciler:!1},Ia={readContext:oo,useCallback:function(e,t){return sa().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:wa,useImperativeHandle:function(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,ya(4,2,Sa.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ya(4,2,e,t)},useMemo:function(e,t){var n=sa();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var i=sa();return t=void 0!==n?n(t):t,i.memoizedState=i.baseState=t,e=(e=i.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ma.bind(null,Jo,e),[i.memoizedState,e]},useRef:ma,useState:ga,useDebugValue:La,useDeferredValue:function(e){var t=ga(e),n=t[0],i=t[1];return wa((function(){var t=Qo.transition;Qo.transition=1;try{i(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=ga(!1),t=e[0];return ma(e=Na.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var i=sa();return i.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},fa(i,e,t,n)},useOpaqueIdentifier:function(){if(Bo){var e=!1,t=function(e){return{$$typeof:R,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Gi++).toString(36))),Error(a(355))})),n=ga(t)[1];return 0===(2&Jo.mode)&&(Jo.flags|=516,va(5,(function(){n("r:"+(Gi++).toString(36))}),void 0,null)),t}return ga(t="r:"+(Gi++).toString(36)),t},unstable_isNewReconciler:!1},Oa={readContext:oo,useCallback:Ea,useContext:oo,useEffect:Ca,useImperativeHandle:xa,useLayoutEffect:ka,useMemo:Da,useReducer:ca,useRef:_a,useState:function(){return ca(la)},useDebugValue:La,useDeferredValue:function(e){var t=ca(la),n=t[0],i=t[1];return Ca((function(){var t=Qo.transition;Qo.transition=1;try{i(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=ca(la)[0];return[_a().current,e]},useMutableSource:pa,useOpaqueIdentifier:function(){return ca(la)[0]},unstable_isNewReconciler:!1},Aa={readContext:oo,useCallback:Ea,useContext:oo,useEffect:Ca,useImperativeHandle:xa,useLayoutEffect:ka,useMemo:Da,useReducer:da,useRef:_a,useState:function(){return da(la)},useDebugValue:La,useDeferredValue:function(e){var t=da(la),n=t[0],i=t[1];return Ca((function(){var t=Qo.transition;Qo.transition=1;try{i(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=da(la)[0];return[_a().current,e]},useMutableSource:pa,useOpaqueIdentifier:function(){return da(la)[0]},unstable_isNewReconciler:!1},Ra=w.ReactCurrentOwner,Pa=!1;function Za(e,t,n,i){t.child=null===e?Eo(t,null,n,i):Lo(t,e.child,n,i)}function Fa(e,t,n,i,r){n=n.render;var o=t.ref;return ro(t,r),i=aa(e,t,n,i,o,r),null===e||Pa?(t.flags|=1,Za(e,t,i,r),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~r,os(e,t,r))}function ja(e,t,n,i,r,o){if(null===e){var a=n.type;return"function"!==typeof a||Yu(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Ku(n.type,null,i,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Ha(e,t,a,i,r,o))}return a=e.child,0===(r&o)&&(r=a.memoizedProps,(n=null!==(n=n.compare)?n:di)(r,i)&&e.ref===t.ref)?os(e,t,o):(t.flags|=1,(e=Uu(a,i)).ref=t.ref,e.return=t,t.child=e)}function Ha(e,t,n,i,r,o){if(null!==e&&di(e.memoizedProps,i)&&e.ref===t.ref){if(Pa=!1,0===(o&r))return t.lanes=e.lanes,os(e,t,o);0!==(16384&e.flags)&&(Pa=!0)}return Wa(e,t,n,i,o)}function Ba(e,t,n){var i=t.pendingProps,r=i.children,o=null!==e?e.memoizedState:null;if("hidden"===i.mode||"unstable-defer-without-hiding"===i.mode)if(0===(4&t.mode))t.memoizedState={baseLanes:0},Cu(t,n);else{if(0===(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Cu(t,e),null;t.memoizedState={baseLanes:0},Cu(t,null!==o?o.baseLanes:n)}else null!==o?(i=o.baseLanes|n,t.memoizedState=null):i=n,Cu(t,i);return Za(e,t,r,n),t.child}function za(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Wa(e,t,n,i,r){var o=vr(n)?pr:hr.current;return o=gr(t,o),ro(t,r),n=aa(e,t,n,i,o,r),null===e||Pa?(t.flags|=1,Za(e,t,n,r),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~r,os(e,t,r))}function Va(e,t,n,i,r){if(vr(n)){var o=!0;br(t)}else o=!1;if(ro(t,r),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,i),wo(t,n,i,r),i=!0;else if(null===e){var a=t.stateNode,s=t.memoizedProps;a.props=s;var u=a.context,l=n.contextType;"object"===typeof l&&null!==l?l=oo(l):l=gr(t,l=vr(n)?pr:hr.current);var c=n.getDerivedStateFromProps,d="function"===typeof c||"function"===typeof a.getSnapshotBeforeUpdate;d||"function"!==typeof a.UNSAFE_componentWillReceiveProps&&"function"!==typeof a.componentWillReceiveProps||(s!==i||u!==l)&&bo(t,a,i,l),ao=!1;var h=t.memoizedState;a.state=h,fo(t,i,a,r),u=t.memoizedState,s!==i||h!==u||fr.current||ao?("function"===typeof c&&(vo(t,n,c,i),u=t.memoizedState),(s=ao||_o(t,n,s,i,h,u,l))?(d||"function"!==typeof a.UNSAFE_componentWillMount&&"function"!==typeof a.componentWillMount||("function"===typeof a.componentWillMount&&a.componentWillMount(),"function"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"===typeof a.componentDidMount&&(t.flags|=4)):("function"===typeof a.componentDidMount&&(t.flags|=4),t.memoizedProps=i,t.memoizedState=u),a.props=i,a.state=u,a.context=l,i=s):("function"===typeof a.componentDidMount&&(t.flags|=4),i=!1)}else{a=t.stateNode,uo(e,t),s=t.memoizedProps,l=t.type===t.elementType?s:$r(t.type,s),a.props=l,d=t.pendingProps,h=a.context,"object"===typeof(u=n.contextType)&&null!==u?u=oo(u):u=gr(t,u=vr(n)?pr:hr.current);var f=n.getDerivedStateFromProps;(c="function"===typeof f||"function"===typeof a.getSnapshotBeforeUpdate)||"function"!==typeof a.UNSAFE_componentWillReceiveProps&&"function"!==typeof a.componentWillReceiveProps||(s!==d||h!==u)&&bo(t,a,i,u),ao=!1,h=t.memoizedState,a.state=h,fo(t,i,a,r);var p=t.memoizedState;s!==d||h!==p||fr.current||ao?("function"===typeof f&&(vo(t,n,f,i),p=t.memoizedState),(l=ao||_o(t,n,l,i,h,p,u))?(c||"function"!==typeof a.UNSAFE_componentWillUpdate&&"function"!==typeof a.componentWillUpdate||("function"===typeof a.componentWillUpdate&&a.componentWillUpdate(i,p,u),"function"===typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(i,p,u)),"function"===typeof a.componentDidUpdate&&(t.flags|=4),"function"===typeof a.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!==typeof a.componentDidUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),"function"!==typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=256),t.memoizedProps=i,t.memoizedState=p),a.props=i,a.state=p,a.context=u,i=l):("function"!==typeof a.componentDidUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),"function"!==typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=256),i=!1)}return Ya(e,t,n,i,o,r)}function Ya(e,t,n,i,r,o){za(e,t);var a=0!==(64&t.flags);if(!i&&!a)return r&&wr(t,n,!1),os(e,t,o);i=t.stateNode,Ra.current=t;var s=a&&"function"!==typeof n.getDerivedStateFromError?null:i.render();return t.flags|=1,null!==e&&a?(t.child=Lo(t,e.child,null,o),t.child=Lo(t,null,s,o)):Za(e,t,s,o),t.memoizedState=i.state,r&&wr(t,n,!0),t.child}function Ua(e){var t=e.stateNode;t.pendingContext?_r(0,t.pendingContext,t.pendingContext!==t.context):t.context&&_r(0,t.context,!1),Oo(e,t.containerInfo)}var Ka,qa,Ga,$a,Qa={dehydrated:null,retryLane:0};function Xa(e,t,n){var i,r=t.pendingProps,o=Zo.current,a=!1;return(i=0!==(64&t.flags))||(i=(null===e||null!==e.memoizedState)&&0!==(2&o)),i?(a=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===r.fallback||!0===r.unstable_avoidThisFallback||(o|=1),cr(Zo,1&o),null===e?(void 0!==r.fallback&&Vo(t),e=r.children,o=r.fallback,a?(e=Ja(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qa,e):"number"===typeof r.unstable_expectedLoadTime?(e=Ja(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qa,t.lanes=33554432,e):((n=Gu({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,a?(r=ts(e,t,r.children,r.fallback,n),a=t.child,o=e.child.memoizedState,a.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},a.childLanes=e.childLanes&~n,t.memoizedState=Qa,r):(n=es(e,t,r.children,n),t.memoizedState=null,n))}function Ja(e,t,n,i){var r=e.mode,o=e.child;return t={mode:"hidden",children:t},0===(2&r)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Gu(t,r,0,null),n=qu(n,r,i,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function es(e,t,n,i){var r=e.child;return e=r.sibling,n=Uu(r,{mode:"visible",children:n}),0===(2&t.mode)&&(n.lanes=i),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function ts(e,t,n,i,r){var o=t.mode,a=e.child;e=a.sibling;var s={mode:"hidden",children:n};return 0===(2&o)&&t.child!==a?((n=t.child).childLanes=0,n.pendingProps=s,null!==(a=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=a,a.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Uu(a,s),null!==e?i=Uu(e,i):(i=qu(i,o,r,null)).flags|=2,i.return=t,n.return=t,n.sibling=i,t.child=n,i}function ns(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),io(e.return,t)}function is(e,t,n,i,r,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:i,tail:n,tailMode:r,lastEffect:o}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=i,a.tail=n,a.tailMode=r,a.lastEffect=o)}function rs(e,t,n){var i=t.pendingProps,r=i.revealOrder,o=i.tail;if(Za(e,t,i.children,n),0!==(2&(i=Zo.current)))i=1&i|2,t.flags|=64;else{if(null!==e&&0!==(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&ns(e,n);else if(19===e.tag)ns(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}i&=1}if(cr(Zo,i),0===(2&t.mode))t.memoizedState=null;else switch(r){case"forwards":for(n=t.child,r=null;null!==n;)null!==(e=n.alternate)&&null===Fo(e)&&(r=n),n=n.sibling;null===(n=r)?(r=t.child,t.child=null):(r=n.sibling,n.sibling=null),is(t,!1,r,n,o,t.lastEffect);break;case"backwards":for(n=null,r=t.child,t.child=null;null!==r;){if(null!==(e=r.alternate)&&null===Fo(e)){t.child=r;break}e=r.sibling,r.sibling=n,n=r,r=e}is(t,!0,n,null,o,t.lastEffect);break;case"together":is(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function os(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Bs|=t.lanes,0!==(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Uu(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Uu(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function as(e,t){if(!Bo)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var i=null;null!==n;)null!==n.alternate&&(i=n),n=n.sibling;null===i?t||null===e.tail?e.tail=null:e.tail.sibling=null:i.sibling=null}}function ss(e,t,n){var i=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return vr(t.type)&&mr(),null;case 3:return Ao(),lr(fr),lr(hr),Go(),(i=t.stateNode).pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),null!==e&&null!==e.child||(Uo(t)?t.flags|=4:i.hydrate||(t.flags|=256)),qa(t),null;case 5:Po(t);var o=Io(To.current);if(n=t.type,null!==e&&null!=t.stateNode)Ga(e,t,n,i,o),e.ref!==t.ref&&(t.flags|=128);else{if(!i){if(null===t.stateNode)throw Error(a(166));return null}if(e=Io(No.current),Uo(t)){i=t.stateNode,n=t.type;var s=t.memoizedProps;switch(i[Qi]=t,i[Xi]=s,n){case"dialog":Ni("cancel",i),Ni("close",i);break;case"iframe":case"object":case"embed":Ni("load",i);break;case"video":case"audio":for(e=0;e<xi.length;e++)Ni(xi[e],i);break;case"source":Ni("error",i);break;case"img":case"image":case"link":Ni("error",i),Ni("load",i);break;case"details":Ni("toggle",i);break;case"input":ee(i,s),Ni("invalid",i);break;case"select":i._wrapperState={wasMultiple:!!s.multiple},Ni("invalid",i);break;case"textarea":ue(i,s),Ni("invalid",i)}for(var l in ke(n,s),e=null,s)s.hasOwnProperty(l)&&(o=s[l],"children"===l?"string"===typeof o?i.textContent!==o&&(e=["children",o]):"number"===typeof o&&i.textContent!==""+o&&(e=["children",""+o]):u.hasOwnProperty(l)&&null!=o&&"onScroll"===l&&Ni("scroll",i));switch(n){case"input":$(i),ie(i,s,!0);break;case"textarea":$(i),ce(i);break;case"select":case"option":break;default:"function"===typeof s.onClick&&(i.onclick=ji)}i=e,t.updateQueue=i,null!==i&&(t.flags|=4)}else{switch(l=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=he(n)),e===de.html?"script"===n?((e=l.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"===typeof i.is?e=l.createElement(n,{is:i.is}):(e=l.createElement(n),"select"===n&&(l=e,i.multiple?l.multiple=!0:i.size&&(l.size=i.size))):e=l.createElementNS(e,n),e[Qi]=t,e[Xi]=i,Ka(e,t,!1,!1),t.stateNode=e,l=Se(n,i),n){case"dialog":Ni("cancel",e),Ni("close",e),o=i;break;case"iframe":case"object":case"embed":Ni("load",e),o=i;break;case"video":case"audio":for(o=0;o<xi.length;o++)Ni(xi[o],e);o=i;break;case"source":Ni("error",e),o=i;break;case"img":case"image":case"link":Ni("error",e),Ni("load",e),o=i;break;case"details":Ni("toggle",e),o=i;break;case"input":ee(e,i),o=J(e,i),Ni("invalid",e);break;case"option":o=oe(e,i);break;case"select":e._wrapperState={wasMultiple:!!i.multiple},o=r({},i,{value:void 0}),Ni("invalid",e);break;case"textarea":ue(e,i),o=se(e,i),Ni("invalid",e);break;default:o=i}ke(n,o);var c=o;for(s in c)if(c.hasOwnProperty(s)){var d=c[s];"style"===s?we(e,d):"dangerouslySetInnerHTML"===s?null!=(d=d?d.__html:void 0)&&ve(e,d):"children"===s?"string"===typeof d?("textarea"!==n||""!==d)&&me(e,d):"number"===typeof d&&me(e,""+d):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(u.hasOwnProperty(s)?null!=d&&"onScroll"===s&&Ni("scroll",e):null!=d&&b(e,s,d,l))}switch(n){case"input":$(e),ie(e,i,!1);break;case"textarea":$(e),ce(e);break;case"option":null!=i.value&&e.setAttribute("value",""+q(i.value));break;case"select":e.multiple=!!i.multiple,null!=(s=i.value)?ae(e,!!i.multiple,s,!1):null!=i.defaultValue&&ae(e,!!i.multiple,i.defaultValue,!0);break;default:"function"===typeof o.onClick&&(e.onclick=ji)}zi(n,i)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)$a(e,t,e.memoizedProps,i);else{if("string"!==typeof i&&null===t.stateNode)throw Error(a(166));n=Io(To.current),Io(No.current),Uo(t)?(i=t.stateNode,n=t.memoizedProps,i[Qi]=t,i.nodeValue!==n&&(t.flags|=4)):((i=(9===n.nodeType?n:n.ownerDocument).createTextNode(i))[Qi]=t,t.stateNode=i)}return null;case 13:return lr(Zo),i=t.memoizedState,0!==(64&t.flags)?(t.lanes=n,t):(i=null!==i,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Uo(t):n=null!==e.memoizedState,i&&!n&&0!==(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!==(1&Zo.current)?0===Fs&&(Fs=3):(0!==Fs&&3!==Fs||(Fs=4),null===Os||0===(134217727&Bs)&&0===(134217727&zs)||_u(Os,Rs))),(i||n)&&(t.flags|=4),null);case 4:return Ao(),qa(t),null===e&&Ti(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(lr(Zo),null===(i=t.memoizedState))return null;if(s=0!==(64&t.flags),null===(l=i.rendering))if(s)as(i,!1);else{if(0!==Fs||null!==e&&0!==(64&e.flags))for(e=t.child;null!==e;){if(null!==(l=Fo(e))){for(t.flags|=64,as(i,!1),null!==(s=l.updateQueue)&&(t.updateQueue=s,t.flags|=4),null===i.lastEffect&&(t.firstEffect=null),t.lastEffect=i.lastEffect,i=n,n=t.child;null!==n;)e=i,(s=n).flags&=2,s.nextEffect=null,s.firstEffect=null,s.lastEffect=null,null===(l=s.alternate)?(s.childLanes=0,s.lanes=e,s.child=null,s.memoizedProps=null,s.memoizedState=null,s.updateQueue=null,s.dependencies=null,s.stateNode=null):(s.childLanes=l.childLanes,s.lanes=l.lanes,s.child=l.child,s.memoizedProps=l.memoizedProps,s.memoizedState=l.memoizedState,s.updateQueue=l.updateQueue,s.type=l.type,e=l.dependencies,s.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return cr(Zo,1&Zo.current|2),t.child}e=e.sibling}null!==i.tail&&zr()>Us&&(t.flags|=64,s=!0,as(i,!1),t.lanes=33554432)}else{if(!s)if(null!==(e=Fo(l))){if(t.flags|=64,s=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),as(i,!0),null===i.tail&&"hidden"===i.tailMode&&!l.alternate&&!Bo)return null!==(t=t.lastEffect=i.lastEffect)&&(t.nextEffect=null),null}else 2*zr()-i.renderingStartTime>Us&&1073741824!==n&&(t.flags|=64,s=!0,as(i,!1),t.lanes=33554432);i.isBackwards?(l.sibling=t.child,t.child=l):(null!==(n=i.last)?n.sibling=l:t.child=l,i.last=l)}return null!==i.tail?(n=i.tail,i.rendering=n,i.tail=n.sibling,i.lastEffect=t.lastEffect,i.renderingStartTime=zr(),n.sibling=null,t=Zo.current,cr(Zo,s?1&t|2:1&t),n):null;case 23:case 24:return ku(),null!==e&&null!==e.memoizedState!==(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==i.mode&&(t.flags|=4),null}throw Error(a(156,t.tag))}function us(e){switch(e.tag){case 1:vr(e.type)&&mr();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Ao(),lr(fr),lr(hr),Go(),0!==(64&(t=e.flags)))throw Error(a(285));return e.flags=-4097&t|64,e;case 5:return Po(e),null;case 13:return lr(Zo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return lr(Zo),null;case 4:return Ao(),null;case 10:return no(e),null;case 23:case 24:return ku(),null;default:return null}}function ls(e,t){try{var n="",i=t;do{n+=U(i),i=i.return}while(i);var r=n}catch(o){r="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:r}}function cs(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Ka=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},qa=function(){},Ga=function(e,t,n,i){var o=e.memoizedProps;if(o!==i){e=t.stateNode,Io(No.current);var a,s=null;switch(n){case"input":o=J(e,o),i=J(e,i),s=[];break;case"option":o=oe(e,o),i=oe(e,i),s=[];break;case"select":o=r({},o,{value:void 0}),i=r({},i,{value:void 0}),s=[];break;case"textarea":o=se(e,o),i=se(e,i),s=[];break;default:"function"!==typeof o.onClick&&"function"===typeof i.onClick&&(e.onclick=ji)}for(d in ke(n,i),n=null,o)if(!i.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var l=o[d];for(a in l)l.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(u.hasOwnProperty(d)?s||(s=[]):(s=s||[]).push(d,null));for(d in i){var c=i[d];if(l=null!=o?o[d]:void 0,i.hasOwnProperty(d)&&c!==l&&(null!=c||null!=l))if("style"===d)if(l){for(a in l)!l.hasOwnProperty(a)||c&&c.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in c)c.hasOwnProperty(a)&&l[a]!==c[a]&&(n||(n={}),n[a]=c[a])}else n||(s||(s=[]),s.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,l=l?l.__html:void 0,null!=c&&l!==c&&(s=s||[]).push(d,c)):"children"===d?"string"!==typeof c&&"number"!==typeof c||(s=s||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(u.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Ni("scroll",e),s||l===c||(s=[])):"object"===typeof c&&null!==c&&c.$$typeof===R?c.toString():(s=s||[]).push(d,c))}n&&(s=s||[]).push("style",n);var d=s;(t.updateQueue=d)&&(t.flags|=4)}},$a=function(e,t,n,i){n!==i&&(t.flags|=4)};var ds="function"===typeof WeakMap?WeakMap:Map;function hs(e,t,n){(n=lo(-1,n)).tag=3,n.payload={element:null};var i=t.value;return n.callback=function(){$s||($s=!0,Qs=i),cs(0,t)},n}function fs(e,t,n){(n=lo(-1,n)).tag=3;var i=e.type.getDerivedStateFromError;if("function"===typeof i){var r=t.value;n.payload=function(){return cs(0,t),i(r)}}var o=e.stateNode;return null!==o&&"function"===typeof o.componentDidCatch&&(n.callback=function(){"function"!==typeof i&&(null===Xs?Xs=new Set([this]):Xs.add(this),cs(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ps="function"===typeof WeakSet?WeakSet:Set;function gs(e){var t=e.ref;if(null!==t)if("function"===typeof t)try{t(null)}catch(n){Hu(e,n)}else t.current=null}function vs(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,i=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:$r(t.type,n),i),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Ui(t.stateNode.containerInfo))}throw Error(a(163))}function ms(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3===(3&e.tag)){var i=e.create;e.destroy=i()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var r=e;i=r.next,0!==(4&(r=r.tag))&&0!==(1&r)&&(Zu(n,e),Pu(n,e)),e=i}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(i=n.elementType===n.type?t.memoizedProps:$r(n.type,t.memoizedProps),e.componentDidUpdate(i,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&po(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}po(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&zi(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&wt(n)))))}throw Error(a(163))}function _s(e,t){for(var n=e;;){if(5===n.tag){var i=n.stateNode;if(t)"function"===typeof(i=i.style).setProperty?i.setProperty("display","none","important"):i.display="none";else{i=n.stateNode;var r=n.memoizedProps.style;r=void 0!==r&&null!==r&&r.hasOwnProperty("display")?r.display:null,i.style.display=be("display",r)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function ys(e,t){if(kr&&"function"===typeof kr.onCommitFiberUnmount)try{kr.onCommitFiberUnmount(Cr,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var i=n,r=i.destroy;if(i=i.tag,void 0!==r)if(0!==(4&i))Zu(t,n);else{i=t;try{r()}catch(o){Hu(i,o)}}n=n.next}while(n!==e)}break;case 1:if(gs(t),"function"===typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){Hu(t,o)}break;case 5:gs(t);break;case 4:xs(e,t)}}function bs(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function ws(e){return 5===e.tag||3===e.tag||4===e.tag}function Cs(e){e:{for(var t=e.return;null!==t;){if(ws(t))break e;t=t.return}throw Error(a(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var i=!1;break;case 3:case 4:t=t.containerInfo,i=!0;break;default:throw Error(a(161))}16&n.flags&&(me(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ws(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}i?ks(e,n,t):Ss(e,n,t)}function ks(e,t,n){var i=e.tag,r=5===i||6===i;if(r)e=r?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!==(n=n._reactRootContainer)&&void 0!==n||null!==t.onclick||(t.onclick=ji));else if(4!==i&&null!==(e=e.child))for(ks(e,t,n),e=e.sibling;null!==e;)ks(e,t,n),e=e.sibling}function Ss(e,t,n){var i=e.tag,r=5===i||6===i;if(r)e=r?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==i&&null!==(e=e.child))for(Ss(e,t,n),e=e.sibling;null!==e;)Ss(e,t,n),e=e.sibling}function xs(e,t){for(var n,i,r=t,o=!1;;){if(!o){o=r.return;e:for(;;){if(null===o)throw Error(a(160));switch(n=o.stateNode,o.tag){case 5:i=!1;break e;case 3:case 4:n=n.containerInfo,i=!0;break e}o=o.return}o=!0}if(5===r.tag||6===r.tag){e:for(var s=e,u=r,l=u;;)if(ys(s,l),null!==l.child&&4!==l.tag)l.child.return=l,l=l.child;else{if(l===u)break e;for(;null===l.sibling;){if(null===l.return||l.return===u)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}i?(s=n,u=r.stateNode,8===s.nodeType?s.parentNode.removeChild(u):s.removeChild(u)):n.removeChild(r.stateNode)}else if(4===r.tag){if(null!==r.child){n=r.stateNode.containerInfo,i=!0,r.child.return=r,r=r.child;continue}}else if(ys(e,r),null!==r.child){r.child.return=r,r=r.child;continue}if(r===t)break;for(;null===r.sibling;){if(null===r.return||r.return===t)return;4===(r=r.return).tag&&(o=!1)}r.sibling.return=r.return,r=r.sibling}}function Ls(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var i=n=n.next;do{3===(3&i.tag)&&(e=i.destroy,i.destroy=void 0,void 0!==e&&e()),i=i.next}while(i!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){i=t.memoizedProps;var r=null!==e?e.memoizedProps:i;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Xi]=i,"input"===e&&"radio"===i.type&&null!=i.name&&te(n,i),Se(e,r),t=Se(e,i),r=0;r<o.length;r+=2){var s=o[r],u=o[r+1];"style"===s?we(n,u):"dangerouslySetInnerHTML"===s?ve(n,u):"children"===s?me(n,u):b(n,s,u,t)}switch(e){case"input":ne(n,i);break;case"textarea":le(n,i);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!i.multiple,null!=(o=i.value)?ae(n,!!i.multiple,o,!1):e!==!!i.multiple&&(null!=i.defaultValue?ae(n,!!i.multiple,i.defaultValue,!0):ae(n,!!i.multiple,i.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(a(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,wt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Ys=zr(),_s(t.child,!0)),void Es(t);case 19:return void Es(t);case 23:case 24:return void _s(t,null!==t.memoizedState)}throw Error(a(163))}function Es(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ps),t.forEach((function(t){var i=zu.bind(null,e,t);n.has(t)||(n.add(t),t.then(i,i))}))}}function Ds(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ns=Math.ceil,Ms=w.ReactCurrentDispatcher,Ts=w.ReactCurrentOwner,Is=0,Os=null,As=null,Rs=0,Ps=0,Zs=ur(0),Fs=0,js=null,Hs=0,Bs=0,zs=0,Ws=0,Vs=null,Ys=0,Us=1/0;function Ks(){Us=zr()+500}var qs,Gs=null,$s=!1,Qs=null,Xs=null,Js=!1,eu=null,tu=90,nu=[],iu=[],ru=null,ou=0,au=null,su=-1,uu=0,lu=0,cu=null,du=!1;function hu(){return 0!==(48&Is)?zr():-1!==su?su:su=zr()}function fu(e){if(0===(2&(e=e.mode)))return 1;if(0===(4&e))return 99===Wr()?1:2;if(0===uu&&(uu=Hs),0!==Gr.transition){0!==lu&&(lu=null!==Vs?Vs.pendingLanes:0),e=uu;var t=4186112&~lu;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=Wr(),0!==(4&Is)&&98===e?e=jt(12,uu):e=jt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),uu),e}function pu(e,t,n){if(50<ou)throw ou=0,au=null,Error(a(185));if(null===(e=gu(e,t)))return null;zt(e,t,n),e===Os&&(zs|=t,4===Fs&&_u(e,Rs));var i=Wr();1===t?0!==(8&Is)&&0===(48&Is)?yu(e):(vu(e,n),0===Is&&(Ks(),Kr())):(0===(4&Is)||98!==i&&99!==i||(null===ru?ru=new Set([e]):ru.add(e)),vu(e,n)),Vs=e}function gu(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function vu(e,t){for(var n=e.callbackNode,i=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,s=e.pendingLanes;0<s;){var u=31-Wt(s),l=1<<u,c=o[u];if(-1===c){if(0===(l&i)||0!==(l&r)){c=t,Pt(l);var d=Rt;o[u]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=l);s&=~l}if(i=Zt(e,e===Os?Rs:0),t=Rt,0===i)null!==n&&(n!==Pr&&Lr(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Pr&&Lr(n)}15===t?(n=yu.bind(null,e),null===Fr?(Fr=[n],jr=xr(Tr,qr)):Fr.push(n),n=Pr):14===t?n=Ur(99,yu.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(a(358,e))}}(t),n=Ur(n,mu.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function mu(e){if(su=-1,lu=uu=0,0!==(48&Is))throw Error(a(327));var t=e.callbackNode;if(Ru()&&e.callbackNode!==t)return null;var n=Zt(e,e===Os?Rs:0);if(0===n)return null;var i=n,r=Is;Is|=16;var o=Lu();for(Os===e&&Rs===i||(Ks(),Su(e,i));;)try{Nu();break}catch(u){xu(e,u)}if(to(),Ms.current=o,Is=r,null!==As?i=0:(Os=null,Rs=0,i=Fs),0!==(Hs&zs))Su(e,0);else if(0!==i){if(2===i&&(Is|=64,e.hydrate&&(e.hydrate=!1,Ui(e.containerInfo)),0!==(n=Ft(e))&&(i=Eu(e,n))),1===i)throw t=js,Su(e,0),_u(e,n),vu(e,zr()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,i){case 0:case 1:throw Error(a(345));case 2:case 5:Iu(e);break;case 3:if(_u(e,n),(62914560&n)===n&&10<(i=Ys+500-zr())){if(0!==Zt(e,0))break;if(((r=e.suspendedLanes)&n)!==n){hu(),e.pingedLanes|=e.suspendedLanes&r;break}e.timeoutHandle=Vi(Iu.bind(null,e),i);break}Iu(e);break;case 4:if(_u(e,n),(4186112&n)===n)break;for(i=e.eventTimes,r=-1;0<n;){var s=31-Wt(n);o=1<<s,(s=i[s])>r&&(r=s),n&=~o}if(n=r,10<(n=(120>(n=zr()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ns(n/1960))-n)){e.timeoutHandle=Vi(Iu.bind(null,e),n);break}Iu(e);break;default:throw Error(a(329))}}return vu(e,zr()),e.callbackNode===t?mu.bind(null,e):null}function _u(e,t){for(t&=~Ws,t&=~zs,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Wt(t),i=1<<n;e[n]=-1,t&=~i}}function yu(e){if(0!==(48&Is))throw Error(a(327));if(Ru(),e===Os&&0!==(e.expiredLanes&Rs)){var t=Rs,n=Eu(e,t);0!==(Hs&zs)&&(n=Eu(e,t=Zt(e,t)))}else n=Eu(e,t=Zt(e,0));if(0!==e.tag&&2===n&&(Is|=64,e.hydrate&&(e.hydrate=!1,Ui(e.containerInfo)),0!==(t=Ft(e))&&(n=Eu(e,t))),1===n)throw n=js,Su(e,0),_u(e,t),vu(e,zr()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Iu(e),vu(e,zr()),null}function bu(e,t){var n=Is;Is|=1;try{return e(t)}finally{0===(Is=n)&&(Ks(),Kr())}}function wu(e,t){var n=Is;Is&=-2,Is|=8;try{return e(t)}finally{0===(Is=n)&&(Ks(),Kr())}}function Cu(e,t){cr(Zs,Ps),Ps|=t,Hs|=t}function ku(){Ps=Zs.current,lr(Zs)}function Su(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Yi(n)),null!==As)for(n=As.return;null!==n;){var i=n;switch(i.tag){case 1:null!==(i=i.type.childContextTypes)&&void 0!==i&&mr();break;case 3:Ao(),lr(fr),lr(hr),Go();break;case 5:Po(i);break;case 4:Ao();break;case 13:case 19:lr(Zo);break;case 10:no(i);break;case 23:case 24:ku()}n=n.return}Os=e,As=Uu(e.current,null),Rs=Ps=Hs=t,Fs=0,js=null,Ws=zs=Bs=0}function xu(e,t){for(;;){var n=As;try{if(to(),$o.current=Ta,na){for(var i=Jo.memoizedState;null!==i;){var r=i.queue;null!==r&&(r.pending=null),i=i.next}na=!1}if(Xo=0,ta=ea=Jo=null,ia=!1,Ts.current=null,null===n||null===n.return){Fs=1,js=t,As=null;break}e:{var o=e,a=n.return,s=n,u=t;if(t=Rs,s.flags|=2048,s.firstEffect=s.lastEffect=null,null!==u&&"object"===typeof u&&"function"===typeof u.then){var l=u;if(0===(2&s.mode)){var c=s.alternate;c?(s.updateQueue=c.updateQueue,s.memoizedState=c.memoizedState,s.lanes=c.lanes):(s.updateQueue=null,s.memoizedState=null)}var d=0!==(1&Zo.current),h=a;do{var f;if(f=13===h.tag){var p=h.memoizedState;if(null!==p)f=null!==p.dehydrated;else{var g=h.memoizedProps;f=void 0!==g.fallback&&(!0!==g.unstable_avoidThisFallback||!d)}}if(f){var v=h.updateQueue;if(null===v){var m=new Set;m.add(l),h.updateQueue=m}else v.add(l);if(0===(2&h.mode)){if(h.flags|=64,s.flags|=16384,s.flags&=-2981,1===s.tag)if(null===s.alternate)s.tag=17;else{var _=lo(-1,1);_.tag=2,co(s,_)}s.lanes|=1;break e}u=void 0,s=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new ds,u=new Set,y.set(l,u)):void 0===(u=y.get(l))&&(u=new Set,y.set(l,u)),!u.has(s)){u.add(s);var b=Bu.bind(null,o,l,s);l.then(b,b)}h.flags|=4096,h.lanes=t;break e}h=h.return}while(null!==h);u=Error((K(s.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fs&&(Fs=2),u=ls(u,s),h=a;do{switch(h.tag){case 3:o=u,h.flags|=4096,t&=-t,h.lanes|=t,ho(h,hs(0,o,t));break e;case 1:o=u;var w=h.type,C=h.stateNode;if(0===(64&h.flags)&&("function"===typeof w.getDerivedStateFromError||null!==C&&"function"===typeof C.componentDidCatch&&(null===Xs||!Xs.has(C)))){h.flags|=4096,t&=-t,h.lanes|=t,ho(h,fs(h,o,t));break e}}h=h.return}while(null!==h)}Tu(n)}catch(k){t=k,As===n&&null!==n&&(As=n=n.return);continue}break}}function Lu(){var e=Ms.current;return Ms.current=Ta,null===e?Ta:e}function Eu(e,t){var n=Is;Is|=16;var i=Lu();for(Os===e&&Rs===t||Su(e,t);;)try{Du();break}catch(r){xu(e,r)}if(to(),Is=n,Ms.current=i,null!==As)throw Error(a(261));return Os=null,Rs=0,Fs}function Du(){for(;null!==As;)Mu(As)}function Nu(){for(;null!==As&&!Er();)Mu(As)}function Mu(e){var t=qs(e.alternate,e,Ps);e.memoizedProps=e.pendingProps,null===t?Tu(e):As=t,Ts.current=null}function Tu(e){var t=e;do{var n=t.alternate;if(e=t.return,0===(2048&t.flags)){if(null!==(n=ss(n,t,Ps)))return void(As=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!==(1073741824&Ps)||0===(4&n.mode)){for(var i=0,r=n.child;null!==r;)i|=r.lanes|r.childLanes,r=r.sibling;n.childLanes=i}null!==e&&0===(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=us(t)))return n.flags&=2047,void(As=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(As=t);As=t=e}while(null!==t);0===Fs&&(Fs=5)}function Iu(e){var t=Wr();return Yr(99,Ou.bind(null,e,t)),null}function Ou(e,t){do{Ru()}while(null!==eu);if(0!==(48&Is))throw Error(a(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(a(177));e.callbackNode=null;var i=n.lanes|n.childLanes,r=i,o=e.pendingLanes&~r;e.pendingLanes=r,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=r,e.mutableReadLanes&=r,e.entangledLanes&=r,r=e.entanglements;for(var s=e.eventTimes,u=e.expirationTimes;0<o;){var l=31-Wt(o),c=1<<l;r[l]=0,s[l]=-1,u[l]=-1,o&=~c}if(null!==ru&&0===(24&i)&&ru.has(e)&&ru.delete(e),e===Os&&(As=Os=null,Rs=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,i=n.firstEffect):i=n:i=n.firstEffect,null!==i){if(r=Is,Is|=32,Ts.current=null,Hi=qt,vi(s=gi())){if("selectionStart"in s)u={start:s.selectionStart,end:s.selectionEnd};else e:if(u=(u=s.ownerDocument)&&u.defaultView||window,(c=u.getSelection&&u.getSelection())&&0!==c.rangeCount){u=c.anchorNode,o=c.anchorOffset,l=c.focusNode,c=c.focusOffset;try{u.nodeType,l.nodeType}catch(L){u=null;break e}var d=0,h=-1,f=-1,p=0,g=0,v=s,m=null;t:for(;;){for(var _;v!==u||0!==o&&3!==v.nodeType||(h=d+o),v!==l||0!==c&&3!==v.nodeType||(f=d+c),3===v.nodeType&&(d+=v.nodeValue.length),null!==(_=v.firstChild);)m=v,v=_;for(;;){if(v===s)break t;if(m===u&&++p===o&&(h=d),m===l&&++g===c&&(f=d),null!==(_=v.nextSibling))break;m=(v=m).parentNode}v=_}u=-1===h||-1===f?null:{start:h,end:f}}else u=null;u=u||{start:0,end:0}}else u=null;Bi={focusedElem:s,selectionRange:u},qt=!1,cu=null,du=!1,Gs=i;do{try{Au()}catch(L){if(null===Gs)throw Error(a(330));Hu(Gs,L),Gs=Gs.nextEffect}}while(null!==Gs);cu=null,Gs=i;do{try{for(s=e;null!==Gs;){var y=Gs.flags;if(16&y&&me(Gs.stateNode,""),128&y){var b=Gs.alternate;if(null!==b){var w=b.ref;null!==w&&("function"===typeof w?w(null):w.current=null)}}switch(1038&y){case 2:Cs(Gs),Gs.flags&=-3;break;case 6:Cs(Gs),Gs.flags&=-3,Ls(Gs.alternate,Gs);break;case 1024:Gs.flags&=-1025;break;case 1028:Gs.flags&=-1025,Ls(Gs.alternate,Gs);break;case 4:Ls(Gs.alternate,Gs);break;case 8:xs(s,u=Gs);var C=u.alternate;bs(u),null!==C&&bs(C)}Gs=Gs.nextEffect}}catch(L){if(null===Gs)throw Error(a(330));Hu(Gs,L),Gs=Gs.nextEffect}}while(null!==Gs);if(w=Bi,b=gi(),y=w.focusedElem,s=w.selectionRange,b!==y&&y&&y.ownerDocument&&pi(y.ownerDocument.documentElement,y)){null!==s&&vi(y)&&(b=s.start,void 0===(w=s.end)&&(w=b),"selectionStart"in y?(y.selectionStart=b,y.selectionEnd=Math.min(w,y.value.length)):(w=(b=y.ownerDocument||document)&&b.defaultView||window).getSelection&&(w=w.getSelection(),u=y.textContent.length,C=Math.min(s.start,u),s=void 0===s.end?C:Math.min(s.end,u),!w.extend&&C>s&&(u=s,s=C,C=u),u=fi(y,C),o=fi(y,s),u&&o&&(1!==w.rangeCount||w.anchorNode!==u.node||w.anchorOffset!==u.offset||w.focusNode!==o.node||w.focusOffset!==o.offset)&&((b=b.createRange()).setStart(u.node,u.offset),w.removeAllRanges(),C>s?(w.addRange(b),w.extend(o.node,o.offset)):(b.setEnd(o.node,o.offset),w.addRange(b))))),b=[];for(w=y;w=w.parentNode;)1===w.nodeType&&b.push({element:w,left:w.scrollLeft,top:w.scrollTop});for("function"===typeof y.focus&&y.focus(),y=0;y<b.length;y++)(w=b[y]).element.scrollLeft=w.left,w.element.scrollTop=w.top}qt=!!Hi,Bi=Hi=null,e.current=n,Gs=i;do{try{for(y=e;null!==Gs;){var k=Gs.flags;if(36&k&&ms(y,Gs.alternate,Gs),128&k){b=void 0;var S=Gs.ref;if(null!==S){var x=Gs.stateNode;Gs.tag,b=x,"function"===typeof S?S(b):S.current=b}}Gs=Gs.nextEffect}}catch(L){if(null===Gs)throw Error(a(330));Hu(Gs,L),Gs=Gs.nextEffect}}while(null!==Gs);Gs=null,Zr(),Is=r}else e.current=n;if(Js)Js=!1,eu=e,tu=t;else for(Gs=i;null!==Gs;)t=Gs.nextEffect,Gs.nextEffect=null,8&Gs.flags&&((k=Gs).sibling=null,k.stateNode=null),Gs=t;if(0===(i=e.pendingLanes)&&(Xs=null),1===i?e===au?ou++:(ou=0,au=e):ou=0,n=n.stateNode,kr&&"function"===typeof kr.onCommitFiberRoot)try{kr.onCommitFiberRoot(Cr,n,void 0,64===(64&n.current.flags))}catch(L){}if(vu(e,zr()),$s)throw $s=!1,e=Qs,Qs=null,e;return 0!==(8&Is)||Kr(),null}function Au(){for(;null!==Gs;){var e=Gs.alternate;du||null===cu||(0!==(8&Gs.flags)?Je(Gs,cu)&&(du=!0):13===Gs.tag&&Ds(e,Gs)&&Je(Gs,cu)&&(du=!0));var t=Gs.flags;0!==(256&t)&&vs(e,Gs),0===(512&t)||Js||(Js=!0,Ur(97,(function(){return Ru(),null}))),Gs=Gs.nextEffect}}function Ru(){if(90!==tu){var e=97<tu?97:tu;return tu=90,Yr(e,Fu)}return!1}function Pu(e,t){nu.push(t,e),Js||(Js=!0,Ur(97,(function(){return Ru(),null})))}function Zu(e,t){iu.push(t,e),Js||(Js=!0,Ur(97,(function(){return Ru(),null})))}function Fu(){if(null===eu)return!1;var e=eu;if(eu=null,0!==(48&Is))throw Error(a(331));var t=Is;Is|=32;var n=iu;iu=[];for(var i=0;i<n.length;i+=2){var r=n[i],o=n[i+1],s=r.destroy;if(r.destroy=void 0,"function"===typeof s)try{s()}catch(l){if(null===o)throw Error(a(330));Hu(o,l)}}for(n=nu,nu=[],i=0;i<n.length;i+=2){r=n[i],o=n[i+1];try{var u=r.create;r.destroy=u()}catch(l){if(null===o)throw Error(a(330));Hu(o,l)}}for(u=e.current.firstEffect;null!==u;)e=u.nextEffect,u.nextEffect=null,8&u.flags&&(u.sibling=null,u.stateNode=null),u=e;return Is=t,Kr(),!0}function ju(e,t,n){co(e,t=hs(0,t=ls(n,t),1)),t=hu(),null!==(e=gu(e,1))&&(zt(e,1,t),vu(e,t))}function Hu(e,t){if(3===e.tag)ju(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){ju(n,e,t);break}if(1===n.tag){var i=n.stateNode;if("function"===typeof n.type.getDerivedStateFromError||"function"===typeof i.componentDidCatch&&(null===Xs||!Xs.has(i))){var r=fs(n,e=ls(t,e),1);if(co(n,r),r=hu(),null!==(n=gu(n,1)))zt(n,1,r),vu(n,r);else if("function"===typeof i.componentDidCatch&&(null===Xs||!Xs.has(i)))try{i.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function Bu(e,t,n){var i=e.pingCache;null!==i&&i.delete(t),t=hu(),e.pingedLanes|=e.suspendedLanes&n,Os===e&&(Rs&n)===n&&(4===Fs||3===Fs&&(62914560&Rs)===Rs&&500>zr()-Ys?Su(e,0):Ws|=n),vu(e,t)}function zu(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0===(2&(t=e.mode))?t=1:0===(4&t)?t=99===Wr()?1:2:(0===uu&&(uu=Hs),0===(t=Ht(62914560&~uu))&&(t=4194304))),n=hu(),null!==(e=gu(e,t))&&(zt(e,t,n),vu(e,n))}function Wu(e,t,n,i){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Vu(e,t,n,i){return new Wu(e,t,n,i)}function Yu(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Uu(e,t){var n=e.alternate;return null===n?((n=Vu(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ku(e,t,n,i,r,o){var s=2;if(i=e,"function"===typeof e)Yu(e)&&(s=1);else if("string"===typeof e)s=5;else e:switch(e){case S:return qu(n.children,r,o,t);case P:s=8,r|=16;break;case x:s=8,r|=1;break;case L:return(e=Vu(12,n,t,8|r)).elementType=L,e.type=L,e.lanes=o,e;case M:return(e=Vu(13,n,t,r)).type=M,e.elementType=M,e.lanes=o,e;case T:return(e=Vu(19,n,t,r)).elementType=T,e.lanes=o,e;case Z:return Gu(n,r,o,t);case F:return(e=Vu(24,n,t,r)).elementType=F,e.lanes=o,e;default:if("object"===typeof e&&null!==e)switch(e.$$typeof){case E:s=10;break e;case D:s=9;break e;case N:s=11;break e;case I:s=14;break e;case O:s=16,i=null;break e;case A:s=22;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=Vu(s,n,t,r)).elementType=e,t.type=i,t.lanes=o,t}function qu(e,t,n,i){return(e=Vu(7,e,i,t)).lanes=n,e}function Gu(e,t,n,i){return(e=Vu(23,e,i,t)).elementType=Z,e.lanes=n,e}function $u(e,t,n){return(e=Vu(6,e,null,t)).lanes=n,e}function Qu(e,t,n){return(t=Vu(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xu(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Bt(0),this.expirationTimes=Bt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Bt(0),this.mutableSourceEagerHydrationData=null}function Ju(e,t,n,i){var r=t.current,o=hu(),s=fu(r);e:if(n){t:{if(Ge(n=n._reactInternals)!==n||1!==n.tag)throw Error(a(170));var u=n;do{switch(u.tag){case 3:u=u.stateNode.context;break t;case 1:if(vr(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break t}}u=u.return}while(null!==u);throw Error(a(171))}if(1===n.tag){var l=n.type;if(vr(l)){n=yr(n,l,u);break e}}n=u}else n=dr;return null===t.context?t.context=n:t.pendingContext=n,(t=lo(o,s)).payload={element:e},null!==(i=void 0===i?null:i)&&(t.callback=i),co(r,t),pu(r,s,o),s}function el(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tl(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nl(e,t){tl(e,t),(e=e.alternate)&&tl(e,t)}function il(e,t,n){var i=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xu(e,t,null!=n&&!0===n.hydrate),t=Vu(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,so(t),e[Ji]=n.current,Ti(8===e.nodeType?e.parentNode:e),i)for(e=0;e<i.length;e++){var r=(t=i[e])._getVersion;r=r(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,r]:n.mutableSourceEagerHydrationData.push(t,r)}this._internalRoot=n}function rl(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ol(e,t,n,i,r){var o=n._reactRootContainer;if(o){var a=o._internalRoot;if("function"===typeof r){var s=r;r=function(){var e=el(a);s.call(e)}}Ju(t,a,e,r)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new il(e,0,t?{hydrate:!0}:void 0)}(n,i),a=o._internalRoot,"function"===typeof r){var u=r;r=function(){var e=el(a);u.call(e)}}wu((function(){Ju(t,a,e,r)}))}return el(a)}function al(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rl(t))throw Error(a(200));return function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:k,key:null==i?null:""+i,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}qs=function(e,t,n){var i=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||fr.current)Pa=!0;else{if(0===(n&i)){switch(Pa=!1,t.tag){case 3:Ua(t),Ko();break;case 5:Ro(t);break;case 1:vr(t.type)&&br(t);break;case 4:Oo(t,t.stateNode.containerInfo);break;case 10:i=t.memoizedProps.value;var r=t.type._context;cr(Qr,r._currentValue),r._currentValue=i;break;case 13:if(null!==t.memoizedState)return 0!==(n&t.child.childLanes)?Xa(e,t,n):(cr(Zo,1&Zo.current),null!==(t=os(e,t,n))?t.sibling:null);cr(Zo,1&Zo.current);break;case 19:if(i=0!==(n&t.childLanes),0!==(64&e.flags)){if(i)return rs(e,t,n);t.flags|=64}if(null!==(r=t.memoizedState)&&(r.rendering=null,r.tail=null,r.lastEffect=null),cr(Zo,Zo.current),i)break;return null;case 23:case 24:return t.lanes=0,Ba(e,t,n)}return os(e,t,n)}Pa=0!==(16384&e.flags)}else Pa=!1;switch(t.lanes=0,t.tag){case 2:if(i=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,r=gr(t,hr.current),ro(t,n),r=aa(null,t,i,e,r,n),t.flags|=1,"object"===typeof r&&null!==r&&"function"===typeof r.render&&void 0===r.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,vr(i)){var o=!0;br(t)}else o=!1;t.memoizedState=null!==r.state&&void 0!==r.state?r.state:null,so(t);var s=i.getDerivedStateFromProps;"function"===typeof s&&vo(t,i,s,e),r.updater=mo,t.stateNode=r,r._reactInternals=t,wo(t,i,e,n),t=Ya(null,t,i,!0,o,n)}else t.tag=0,Za(null,t,r,n),t=t.child;return t;case 16:r=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,r=(o=r._init)(r._payload),t.type=r,o=t.tag=function(e){if("function"===typeof e)return Yu(e)?1:0;if(void 0!==e&&null!==e){if((e=e.$$typeof)===N)return 11;if(e===I)return 14}return 2}(r),e=$r(r,e),o){case 0:t=Wa(null,t,r,e,n);break e;case 1:t=Va(null,t,r,e,n);break e;case 11:t=Fa(null,t,r,e,n);break e;case 14:t=ja(null,t,r,$r(r.type,e),i,n);break e}throw Error(a(306,r,""))}return t;case 0:return i=t.type,r=t.pendingProps,Wa(e,t,i,r=t.elementType===i?r:$r(i,r),n);case 1:return i=t.type,r=t.pendingProps,Va(e,t,i,r=t.elementType===i?r:$r(i,r),n);case 3:if(Ua(t),i=t.updateQueue,null===e||null===i)throw Error(a(282));if(i=t.pendingProps,r=null!==(r=t.memoizedState)?r.element:null,uo(e,t),fo(t,i,null,n),(i=t.memoizedState.element)===r)Ko(),t=os(e,t,n);else{if((o=(r=t.stateNode).hydrate)&&(Ho=Ki(t.stateNode.containerInfo.firstChild),jo=t,o=Bo=!0),o){if(null!=(e=r.mutableSourceEagerHydrationData))for(r=0;r<e.length;r+=2)(o=e[r])._workInProgressVersionPrimary=e[r+1],qo.push(o);for(n=Eo(t,null,i,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Za(e,t,i,n),Ko();t=t.child}return t;case 5:return Ro(t),null===e&&Vo(t),i=t.type,r=t.pendingProps,o=null!==e?e.memoizedProps:null,s=r.children,Wi(i,r)?s=null:null!==o&&Wi(i,o)&&(t.flags|=16),za(e,t),Za(e,t,s,n),t.child;case 6:return null===e&&Vo(t),null;case 13:return Xa(e,t,n);case 4:return Oo(t,t.stateNode.containerInfo),i=t.pendingProps,null===e?t.child=Lo(t,null,i,n):Za(e,t,i,n),t.child;case 11:return i=t.type,r=t.pendingProps,Fa(e,t,i,r=t.elementType===i?r:$r(i,r),n);case 7:return Za(e,t,t.pendingProps,n),t.child;case 8:case 12:return Za(e,t,t.pendingProps.children,n),t.child;case 10:e:{i=t.type._context,r=t.pendingProps,s=t.memoizedProps,o=r.value;var u=t.type._context;if(cr(Qr,u._currentValue),u._currentValue=o,null!==s)if(u=s.value,0===(o=li(u,o)?0:0|("function"===typeof i._calculateChangedBits?i._calculateChangedBits(u,o):1073741823))){if(s.children===r.children&&!fr.current){t=os(e,t,n);break e}}else for(null!==(u=t.child)&&(u.return=t);null!==u;){var l=u.dependencies;if(null!==l){s=u.child;for(var c=l.firstContext;null!==c;){if(c.context===i&&0!==(c.observedBits&o)){1===u.tag&&((c=lo(-1,n&-n)).tag=2,co(u,c)),u.lanes|=n,null!==(c=u.alternate)&&(c.lanes|=n),io(u.return,n),l.lanes|=n;break}c=c.next}}else s=10===u.tag&&u.type===t.type?null:u.child;if(null!==s)s.return=u;else for(s=u;null!==s;){if(s===t){s=null;break}if(null!==(u=s.sibling)){u.return=s.return,s=u;break}s=s.return}u=s}Za(e,t,r.children,n),t=t.child}return t;case 9:return r=t.type,i=(o=t.pendingProps).children,ro(t,n),i=i(r=oo(r,o.unstable_observedBits)),t.flags|=1,Za(e,t,i,n),t.child;case 14:return o=$r(r=t.type,t.pendingProps),ja(e,t,r,o=$r(r.type,o),i,n);case 15:return Ha(e,t,t.type,t.pendingProps,i,n);case 17:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:$r(i,r),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,vr(i)?(e=!0,br(t)):e=!1,ro(t,n),yo(t,i,r),wo(t,i,r,n),Ya(null,t,i,!0,e,n);case 19:return rs(e,t,n);case 23:case 24:return Ba(e,t,n)}throw Error(a(156,t.tag))},il.prototype.render=function(e){Ju(e,this._internalRoot,null,null)},il.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Ju(null,e,null,(function(){t[Ji]=null}))},et=function(e){13===e.tag&&(pu(e,4,hu()),nl(e,4))},tt=function(e){13===e.tag&&(pu(e,67108864,hu()),nl(e,67108864))},nt=function(e){if(13===e.tag){var t=hu(),n=fu(e);pu(e,n,t),nl(e,n)}},it=function(e,t){return t()},Le=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var i=n[t];if(i!==e&&i.form===e.form){var r=rr(i);if(!r)throw Error(a(90));Q(i),ne(i,r)}}}break;case"textarea":le(e,n);break;case"select":null!=(t=n.value)&&ae(e,!!n.multiple,t,!1)}},Ie=bu,Oe=function(e,t,n,i,r){var o=Is;Is|=4;try{return Yr(98,e.bind(null,t,n,i,r))}finally{0===(Is=o)&&(Ks(),Kr())}},Ae=function(){0===(49&Is)&&(function(){if(null!==ru){var e=ru;ru=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,vu(e,zr())}))}Kr()}(),Ru())},Re=function(e,t){var n=Is;Is|=2;try{return e(t)}finally{0===(Is=n)&&(Ks(),Kr())}};var sl={Events:[nr,ir,rr,Me,Te,Ru,{current:!1}]},ul={findFiberByHostInstance:tr,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},ll={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cl.isDisabled&&cl.supportsFiber)try{Cr=cl.inject(ll),kr=cl}catch(ge){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl,t.createPortal=al,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"===typeof e.render)throw Error(a(188));throw Error(a(268,Object.keys(e)))}return e=null===(e=Xe(t))?null:e.stateNode},t.flushSync=function(e,t){var n=Is;if(0!==(48&n))return e(t);Is|=1;try{if(e)return Yr(99,e.bind(null,t))}finally{Is=n,Kr()}},t.hydrate=function(e,t,n){if(!rl(t))throw Error(a(200));return ol(null,e,t,!0,n)},t.render=function(e,t,n){if(!rl(t))throw Error(a(200));return ol(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!rl(e))throw Error(a(40));return!!e._reactRootContainer&&(wu((function(){ol(null,null,e,!1,(function(){e._reactRootContainer=null,e[Ji]=null}))})),!0)},t.unstable_batchedUpdates=bu,t.unstable_createPortal=function(e,t){return al(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,i){if(!rl(n))throw Error(a(200));if(null==e||void 0===e._reactInternals)throw Error(a(38));return ol(e,t,n,!1,i)},t.version="17.0.2"},84453:function(e,t,n){"use strict";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(81571)},88807:function(e){var t="undefined"!==typeof Element,n="function"===typeof Map,i="function"===typeof Set,r="function"===typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,a){if(e===a)return!0;if(e&&a&&"object"==typeof e&&"object"==typeof a){if(e.constructor!==a.constructor)return!1;var s,u,l,c;if(Array.isArray(e)){if((s=e.length)!=a.length)return!1;for(u=s;0!==u--;)if(!o(e[u],a[u]))return!1;return!0}if(n&&e instanceof Map&&a instanceof Map){if(e.size!==a.size)return!1;for(c=e.entries();!(u=c.next()).done;)if(!a.has(u.value[0]))return!1;for(c=e.entries();!(u=c.next()).done;)if(!o(u.value[1],a.get(u.value[0])))return!1;return!0}if(i&&e instanceof Set&&a instanceof Set){if(e.size!==a.size)return!1;for(c=e.entries();!(u=c.next()).done;)if(!a.has(u.value[0]))return!1;return!0}if(r&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(a)){if((s=e.length)!=a.length)return!1;for(u=s;0!==u--;)if(e[u]!==a[u])return!1;return!0}if(e.constructor===RegExp)return e.source===a.source&&e.flags===a.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"===typeof e.valueOf&&"function"===typeof a.valueOf)return e.valueOf()===a.valueOf();if(e.toString!==Object.prototype.toString&&"function"===typeof e.toString&&"function"===typeof a.toString)return e.toString()===a.toString();if((s=(l=Object.keys(e)).length)!==Object.keys(a).length)return!1;for(u=s;0!==u--;)if(!Object.prototype.hasOwnProperty.call(a,l[u]))return!1;if(t&&e instanceof Element)return!1;for(u=s;0!==u--;)if(("_owner"!==l[u]&&"__v"!==l[u]&&"__o"!==l[u]||!e.$$typeof)&&!o(e[l[u]],a[l[u]]))return!1;return!0}return e!==e&&a!==a}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},16186:function(e,t){"use strict";var n=60103,i=60106,r=60107,o=60108,a=60114,s=60109,u=60110,l=60112,c=60113,d=60120,h=60115,f=60116,p=60121,g=60122,v=60117,m=60129,_=60131;if("function"===typeof Symbol&&Symbol.for){var y=Symbol.for;n=y("react.element"),i=y("react.portal"),r=y("react.fragment"),o=y("react.strict_mode"),a=y("react.profiler"),s=y("react.provider"),u=y("react.context"),l=y("react.forward_ref"),c=y("react.suspense"),d=y("react.suspense_list"),h=y("react.memo"),f=y("react.lazy"),p=y("react.block"),g=y("react.server.block"),v=y("react.fundamental"),m=y("react.debug_trace_mode"),_=y("react.legacy_hidden")}function b(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case r:case a:case o:case c:case d:return e;default:switch(e=e&&e.$$typeof){case u:case l:case f:case h:case s:return e;default:return t}}case i:return t}}}t.isContextConsumer=function(e){return b(e)===u}},78003:function(e,t,n){"use strict";e.exports=n(16186)},18878:function(e,t,n){var i=n(4519),r=n(94278),o=n(91386),a=n(31870),s=i.createElement,u=n(96471),l=n(40458),c=n(2889),d=n(99221),h=n(14661),f=n(72658);e.exports=r({propTypes:{data:o.any.isRequired,search:o.oneOfType([o.func,o.bool]),searchOptions:o.shape({debounceTime:o.number}),onClick:o.func,validateQuery:o.func,isExpanded:o.func,filterOptions:o.shape({cacheResults:o.bool,ignoreCase:o.bool}),query:o.string,verboseShowOriginal:o.bool},getDefaultProps:function(){return{data:null,search:l,searchOptions:{debounceTime:0},className:"",id:"json-"+Date.now(),onClick:f,filterOptions:{cacheResults:!0,ignoreCase:!1},validateQuery:function(e){return e.length>=2},isExpanded:function(e,t){return!1},verboseShowOriginal:!1}},getInitialState:function(){return{query:this.props.query||""}},render:function(){var e=this.props,t=this.state,n=""!==t.query&&e.validateQuery(t.query),i=n?t.filterer(t.query):e.data,r=n&&d(i);return s("div",{className:"json-inspector "+e.className},this.renderToolbar(),r?s("div",{className:"json-inspector__not-found"},"Nothing found"):s(u,{data:i,onClick:e.onClick,id:e.id,getOriginal:this.getOriginal,query:n?new RegExp(t.query,e.filterOptions.ignoreCase?"i":""):null,label:"root",root:!0,isExpanded:e.isExpanded,interactiveLabel:e.interactiveLabel,verboseShowOriginal:e.verboseShowOriginal}))},renderToolbar:function(){var e=this.props.search;if(e)return s("div",{className:"json-inspector__toolbar"},s(e,{onChange:a(this.search,this.props.searchOptions.debounceTime),data:this.props.data,query:this.state.query}))},search:function(e){this.setState({query:e})},componentWillMount:function(){this.createFilterer(this.props.data,this.props.filterOptions)},componentWillReceiveProps:function(e){this.createFilterer(e.data,e.filterOptions),"string"===typeof e.query&&e.query!==this.state.query&&this.setState({query:e.query})},shouldComponentUpdate:function(e,t){return e.query!==this.props.query||t.query!==this.state.query||e.data!==this.props.data||e.onClick!==this.props.onClick},createFilterer:function(e,t){this.setState({filterer:c(e,t)})},getOriginal:function(e){return h(this.props.data,e)}})},2889:function(e,t,n){var i=n(4778),r=Object.keys,o=n(36892),a=n(99221);function s(e,t,n){return r(e).reduce((function(r,l){var c,d=e[l];return o(d)?(u(t,l,n)||u(t,d,n))&&(r[l]=d):u(t,l,n)?r[l]=d:(c=s(d,t,n),a(c)||i(r,function(e,t){var n={};return n[e]=t,n}(l,c))),r}),{})}function u(e,t,n){if(t){var i=String(t),r=e;return n.ignoreCase&&(i=i.toLowerCase(),r=r.toLowerCase()),-1!==i.indexOf(r)}}e.exports=function(e,t){t||(t={cacheResults:!0});var n={};return function(i){if(!t.cacheResults)return s(e,i,t);var r;if(!n[i])for(var o=i.length-1;o>0;o-=1)if(r=i.substr(0,o),n[r]){n[i]=s(n[r],i,t);break}return n[i]||(n[i]=s(e,i,t)),n[i]}}},53196:function(e,t,n){var i=n(4519),r=n(94278),o=i.createElement;e.exports=r({getDefaultProps:function(){return{string:"",highlight:""}},shouldComponentUpdate:function(e){return e.highlight!==this.props.highlight},render:function(){var e=this.props,t=e.string.search(e.highlight);if(!e.highlight||-1===t)return o("span",null,e.string);var n=e.highlight.source.length,i=e.string.substr(t,n);return o("span",null,e.string.split(e.highlight).map((function(e,t){return o("span",{key:t},t>0?o("span",{className:"json-inspector__hl"},i):null,e)})))}})},99221:function(e){e.exports=function(e){return 0===Object.keys(e).length}},36892:function(e,t,n){var i=n(87905);e.exports=function(e){var t=i(e);return"Object"!==t&&"Array"!==t}},96471:function(e,t,n){var i=n(4519),r=n(94278),o=n(43911),a=n(38563),s=n(87905),u=n(36892),l=n(53196),c=i.createElement,d=r({getInitialState:function(){return{expanded:this._isInitiallyExpanded(this.props)}},getDefaultProps:function(){return{root:!1,prefix:""}},render:function(){var e="id_"+a(),t=this.props,n={path:this.keypath(),key:t.label.toString(),value:t.data},i=this._onClick.bind(this,n);return c("div",{className:this.getClassName(),id:"leaf-"+this._rootPath()},c("input",{className:"json-inspector__radio",type:"radio",name:t.id,id:e,tabIndex:-1}),c("label",{className:"json-inspector__line",htmlFor:e,onClick:i},c("div",{className:"json-inspector__flatpath"},n.path),c("span",{className:"json-inspector__key"},this.format(n.key),":",this.renderInteractiveLabel(n.key,!0)),this.renderTitle(),this.renderShowOriginalButton()),this.renderChildren())},renderTitle:function(){var e=this.data(),t=s(e);switch(t){case"Array":return c("span",{className:"json-inspector__value json-inspector__value_helper"},"[] "+h(e.length));case"Object":return c("span",{className:"json-inspector__value json-inspector__value_helper"},"{} "+h(Object.keys(e).length));default:return c("span",{className:"json-inspector__value json-inspector__value_"+t.toLowerCase()},this.format(String(e)),this.renderInteractiveLabel(e,!1))}},renderChildren:function(){var e=this.props,t=this._rootPath(),n=this.data();return this.state.expanded&&!u(n)?Object.keys(n).map((function(i){var r=n[i],o=!this.state.original||!!e.verboseShowOriginal&&e.query;return c(d,{data:r,label:i,prefix:t,onClick:e.onClick,id:e.id,query:e.query,getOriginal:o?e.getOriginal:null,key:f(i,r),isExpanded:e.isExpanded,interactiveLabel:e.interactiveLabel,verboseShowOriginal:e.verboseShowOriginal})}),this):null},renderShowOriginalButton:function(){var e=this.props;return u(e.data)||this.state.original||!e.getOriginal||!e.query||p(this.keypath(),e.query)?null:c("span",{className:"json-inspector__show-original",onClick:this._onShowOriginalClick})},renderInteractiveLabel:function(e,t){return"function"===typeof this.props.interactiveLabel?c(this.props.interactiveLabel,{value:String(e),originalValue:e,isKey:t,keypath:this.keypath()}):null},componentWillReceiveProps:function(e){e.query&&this.setState({expanded:!p(e.label,e.query)}),this.props.query&&!e.query&&this.setState({expanded:this._isInitiallyExpanded(e)})},_rootPath:function(){return this.props.prefix+"."+this.props.label},keypath:function(){return this._rootPath().substr(".root.".length)},data:function(){return this.state.original||this.props.data},format:function(e){return c(l,{string:e,highlight:this.props.query})},getClassName:function(){var e="json-inspector__leaf";return this.props.root&&(e+=" json-inspector__leaf_root"),this.state.expanded&&(e+=" json-inspector__leaf_expanded"),u(this.props.data)||(e+=" json-inspector__leaf_composite"),e},toggle:function(){this.setState({expanded:!this.state.expanded})},_onClick:function(e,t){this.toggle(),this.props.onClick(e),t.stopPropagation()},_onShowOriginalClick:function(e){this.setState({original:this.props.getOriginal(this.keypath())}),e.stopPropagation()},_isInitiallyExpanded:function(e){var t=this.keypath();return!!e.root||(e.query?!p(t,e.query)&&"function"===typeof e.getOriginal:e.isExpanded(t,e.data))}});function h(e){return e+(1===e?" item":" items")}function f(e,t){return u(t)?e+":"+o(String(t)):e+"["+s(t)+"]"}function p(e,t){return-1!==e.indexOf(t)}e.exports=d},14661:function(e,t,n){var i=n(87905),r=".";function o(e){return parseInt(e,10)}e.exports=function e(t,n){var a=n.split(r),s=a.shift();if(!s)return t;var u=i(t);return"Array"===u&&t[o(s)]?e(t[o(s)],a.join(r)):"Object"===u&&t[s]?e(t[s],a.join(r)):void 0}},72658:function(e){e.exports=function(){}},40458:function(e,t,n){var i=n(4519),r=n(94278),o=i.createElement,a=n(72658);e.exports=r({getDefaultProps:function(){return{onChange:a}},render:function(){return o("input",{className:"json-inspector__search",type:"search",placeholder:"Search",onChange:this.onChange})},onChange:function(e){this.props.onChange(e.target.value)}})},87905:function(e){e.exports=function(e){return Object.prototype.toString.call(e).slice(8,-1)}},38563:function(e){var t=Math.ceil(10*Math.random());e.exports=function(){return++t}},4778:function(e){"use strict";e.exports=Object.assign||function(e,t){for(var n,i,r=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),o=1;o<arguments.length;o++){n=arguments[o],i=Object.keys(Object(n));for(var a=0;a<i.length;a++)r[i[a]]=n[i[a]]}return r}},74140:function(e,t,n){var i,r,o;r=[e,n(91386),n(4519)],i=function(e,t,n){"use strict";var i=a(e),r=a(t),o=a(n);function a(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var u,l,c=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}();function d(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function h(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var f={x:"clientWidth",y:"clientHeight"},p={x:"clientTop",y:"clientLeft"},g={x:"innerWidth",y:"innerHeight"},v={x:"offsetWidth",y:"offsetHeight"},m={x:"offsetLeft",y:"offsetTop"},_={x:"overflowX",y:"overflowY"},y={x:"scrollWidth",y:"scrollHeight"},b={x:"scrollLeft",y:"scrollTop"},w={x:"width",y:"height"},C=function(){},k=!!function(){if("undefined"===typeof window)return!1;var e=!1;try{document.createElement("div").addEventListener("test",C,{get passive(){return e=!0,!1}})}catch(t){}return e}()&&{passive:!0},S="ReactList failed to reach a stable state.",x=50,L=function(e,t){for(var n in t)if(e[n]!==t[n])return!1;return!0},E=function(e){for(var t=e.props.axis,n=e.getEl(),i=_[t];n=n.parentElement;)switch(window.getComputedStyle(n)[i]){case"auto":case"scroll":case"overlay":return n}return window},D=function(e){var t=e.props.axis,n=e.scrollParent;return n===window?window[g[t]]:n[f[t]]};i.default.exports=(l=u=function(e){function t(e){s(this,t);var n=d(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e)),i=e.initialIndex,r=1,o=n.constrain(i,0,r,e),a=o.from,u=o.size;return n.state={from:a,size:u,itemsPerRow:r},n.cache={},n.cachedScrollPosition=null,n.prevPrevState={},n.unstable=!1,n.updateCounter=0,n}return h(t,e),c(t,[{key:"componentWillReceiveProps",value:function(e){this.props.axis!==e.axis&&this.clearSizeCache();var t=this.state,n=t.from,i=t.size,r=t.itemsPerRow;this.maybeSetState(this.constrain(n,i,r,e),C)}},{key:"componentDidMount",value:function(){this.updateFrameAndClearCache=this.updateFrameAndClearCache.bind(this),window.addEventListener("resize",this.updateFrameAndClearCache),this.updateFrame(this.scrollTo.bind(this,this.props.initialIndex))}},{key:"componentDidUpdate",value:function(){var e=this;if(!this.unstable){if(++this.updateCounter>x)return this.unstable=!0,console.error(S);this.updateCounterTimeoutId||(this.updateCounterTimeoutId=setTimeout((function(){e.updateCounter=0,delete e.updateCounterTimeoutId}),0)),this.updateFrame()}}},{key:"maybeSetState",value:function(e,t){if(L(this.state,e))return t();this.setState(e,t)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.updateFrameAndClearCache),this.scrollParent.removeEventListener("scroll",this.updateFrameAndClearCache,k),this.scrollParent.removeEventListener("mousewheel",C,k)}},{key:"getOffset",value:function(e){var t=this.props.axis,n=e[p[t]]||0,i=m[t];do{n+=e[i]||0}while(e=e.offsetParent);return n}},{key:"getEl",value:function(){return this.el||this.items}},{key:"getScrollPosition",value:function(){if("number"===typeof this.cachedScrollPosition)return this.cachedScrollPosition;var e=this.scrollParent,t=this.props.axis,n=b[t],i=e===window?document.body[n]||document.documentElement[n]:e[n],r=this.getScrollSize()-this.props.scrollParentViewportSizeGetter(this),o=Math.max(0,Math.min(i,r)),a=this.getEl();return this.cachedScrollPosition=this.getOffset(e)+o-this.getOffset(a),this.cachedScrollPosition}},{key:"setScroll",value:function(e){var t=this.scrollParent,n=this.props.axis;if(e+=this.getOffset(this.getEl()),t===window)return window.scrollTo(0,e);e-=this.getOffset(this.scrollParent),t[b[n]]=e}},{key:"getScrollSize",value:function(){var e=this.scrollParent,t=document,n=t.body,i=t.documentElement,r=y[this.props.axis];return e===window?Math.max(n[r],i[r]):e[r]}},{key:"hasDeterminateSize",value:function(){var e=this.props,t=e.itemSizeGetter;return"uniform"===e.type||t}},{key:"getStartAndEnd",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.threshold,t=this.getScrollPosition(),n=Math.max(0,t-e),i=t+this.props.scrollParentViewportSizeGetter(this)+e;return this.hasDeterminateSize()&&(i=Math.min(i,this.getSpaceBefore(this.props.length))),{start:n,end:i}}},{key:"getItemSizeAndItemsPerRow",value:function(){var e=this.props,t=e.axis,n=e.useStaticSize,i=this.state,r=i.itemSize,o=i.itemsPerRow;if(n&&r&&o)return{itemSize:r,itemsPerRow:o};var a=this.items.children;if(!a.length)return{};var s=a[0],u=s[v[t]],l=Math.abs(u-r);if((isNaN(l)||l>=1)&&(r=u),!r)return{};for(var c=m[t],d=s[c],h=a[o=1];h&&h[c]===d;h=a[o])++o;return{itemSize:r,itemsPerRow:o}}},{key:"clearSizeCache",value:function(){this.cachedScrollPosition=null}},{key:"updateFrameAndClearCache",value:function(e){return this.clearSizeCache(),this.updateFrame(e)}},{key:"updateFrame",value:function(e){switch(this.updateScrollParent(),"function"!=typeof e&&(e=C),this.props.type){case"simple":return this.updateSimpleFrame(e);case"variable":return this.updateVariableFrame(e);case"uniform":return this.updateUniformFrame(e)}}},{key:"updateScrollParent",value:function(){var e=this.scrollParent;this.scrollParent=this.props.scrollParentGetter(this),e!==this.scrollParent&&(e&&(e.removeEventListener("scroll",this.updateFrameAndClearCache),e.removeEventListener("mousewheel",C)),this.clearSizeCache(),this.scrollParent.addEventListener("scroll",this.updateFrameAndClearCache,k),this.scrollParent.addEventListener("mousewheel",C,k))}},{key:"updateSimpleFrame",value:function(e){var t=this.getStartAndEnd().end,n=this.items.children,i=0;if(n.length){var r=this.props.axis,o=n[0],a=n[n.length-1];i=this.getOffset(a)+a[v[r]]-this.getOffset(o)}if(i>t)return e();var s=this.props,u=s.pageSize,l=s.length,c=Math.min(this.state.size+u,l);this.maybeSetState({size:c},e)}},{key:"updateVariableFrame",value:function(e){this.props.itemSizeGetter||this.cacheSizes();for(var t=this.getStartAndEnd(),n=t.start,i=t.end,r=this.props,o=r.length,a=r.pageSize,s=0,u=0,l=0,c=o-1;u<c;){var d=this.getSizeOfItem(u);if(null==d||s+d>n)break;s+=d,++u}for(var h=o-u;l<h&&s<i;){var f=this.getSizeOfItem(u+l);if(null==f){l=Math.min(l+a,h);break}s+=f,++l}this.maybeSetState({from:u,size:l},e)}},{key:"updateUniformFrame",value:function(e){var t=this.getItemSizeAndItemsPerRow(),n=t.itemSize,i=t.itemsPerRow;if(!n||!i)return e();var r=this.getStartAndEnd(),o=r.start,a=r.end,s=this.constrain(Math.floor(o/n)*i,(Math.ceil((a-o)/n)+1)*i,i,this.props),u=s.from,l=s.size;return this.maybeSetState({itemsPerRow:i,from:u,itemSize:n,size:l},e)}},{key:"getSpaceBefore",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null!=t[e])return t[e];var n=this.state,i=n.itemSize,r=n.itemsPerRow;if(i)return t[e]=Math.floor(e/r)*i;for(var o=e;o>0&&null==t[--o];);for(var a=t[o]||0,s=o;s<e;++s){t[s]=a;var u=this.getSizeOfItem(s);if(null==u)break;a+=u}return t[e]=a}},{key:"cacheSizes",value:function(){for(var e=this.cache,t=this.state.from,n=this.items.children,i=v[this.props.axis],r=0,o=n.length;r<o;++r)e[t+r]=n[r][i]}},{key:"getSizeOfItem",value:function(e){var t=this.cache,n=this.items,i=this.props,r=i.axis,o=i.itemSizeGetter,a=i.itemSizeEstimator,s=i.type,u=this.state,l=u.from,c=u.itemSize,d=u.size;if(c)return c;if(o)return o(e);if(e in t)return t[e];if("simple"===s&&e>=l&&e<l+d&&n){var h=n.children[e-l];if(h)return h[v[r]]}return a?a(e,t):void 0}},{key:"constrain",value:function(e,t,n,i){var r=i.length,o=i.minSize,a=i.type,s=(t=Math.max(t,o))%n;return s&&(t+=n-s),t>r&&(t=r),(s=(e="simple"!==a&&e?Math.max(Math.min(e,r-t),0):0)%n)&&(e-=s,t+=s),{from:e,size:t}}},{key:"scrollTo",value:function(e){null!=e&&this.setScroll(this.getSpaceBefore(e))}},{key:"scrollAround",value:function(e){var t=this.getScrollPosition(),n=this.getSpaceBefore(e),i=n-this.props.scrollParentViewportSizeGetter(this)+this.getSizeOfItem(e),r=Math.min(i,n),o=Math.max(i,n);return t<=r?this.setScroll(r):t>o?this.setScroll(o):void 0}},{key:"getVisibleRange",value:function(){for(var e=this.state,t=e.from,n=e.size,i=this.getStartAndEnd(0),r=i.start,o=i.end,a={},s=void 0,u=void 0,l=t;l<t+n;++l){var c=this.getSpaceBefore(l,a),d=c+this.getSizeOfItem(l);null==s&&d>r&&(s=l),null!=s&&c<o&&(u=l)}return[s,u]}},{key:"renderItems",value:function(){for(var e=this,t=this.props,n=t.itemRenderer,i=t.itemsRenderer,r=this.state,o=r.from,a=r.size,s=[],u=0;u<a;++u)s.push(n(o+u,u));return i(s,(function(t){return e.items=t}))}},{key:"render",value:function(){var e=this,t=this.props,n=t.axis,i=t.length,r=t.type,a=t.useTranslate3d,s=this.state,u=s.from,l=s.itemsPerRow,c=this.renderItems();if("simple"===r)return c;var d={position:"relative"},h={},f=Math.ceil(i/l)*l,p=this.getSpaceBefore(f,h);p&&(d[w[n]]=p,"x"===n&&(d.overflowX="hidden"));var g=this.getSpaceBefore(u,h),v="x"===n?g:0,m="y"===n?g:0,_=a?"translate3d("+v+"px, "+m+"px, 0)":"translate("+v+"px, "+m+"px)",y={msTransform:_,WebkitTransform:_,transform:_};return o.default.createElement("div",{style:d,ref:function(t){return e.el=t}},o.default.createElement("div",{style:y},c))}}]),t}(n.Component),u.displayName="ReactList",u.propTypes={axis:r.default.oneOf(["x","y"]),initialIndex:r.default.number,itemRenderer:r.default.func,itemSizeEstimator:r.default.func,itemSizeGetter:r.default.func,itemsRenderer:r.default.func,length:r.default.number,minSize:r.default.number,pageSize:r.default.number,scrollParentGetter:r.default.func,scrollParentViewportSizeGetter:r.default.func,threshold:r.default.number,type:r.default.oneOf(["simple","variable","uniform"]),useStaticSize:r.default.bool,useTranslate3d:r.default.bool},u.defaultProps={axis:"y",itemRenderer:function(e,t){return o.default.createElement("div",{key:t},e)},itemsRenderer:function(e,t){return o.default.createElement("div",{ref:t},e)},length:0,minSize:1,pageSize:10,scrollParentGetter:E,scrollParentViewportSizeGetter:D,threshold:100,type:"simple",useStaticSize:!1,useTranslate3d:!1},l)},void 0===(o="function"===typeof i?i.apply(t,r):i)||(e.exports=o)},855:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var i=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};i.get||i.set?Object.defineProperty(t,n,i):t[n]=e[n]}return t.default=e,t}(n(14717)),r=s(n(91386)),o=s(n(4519)),a=n(91953);function s(e){return e&&e.__esModule?e:{default:e}}function u(e){return u="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function c(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function f(e,t){return f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},f(e,t)}function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var g=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=function(e,t){return!t||"object"!==u(t)&&"function"!==typeof t?h(e):t}(this,d(t).call(this,e)),p(h(n),"assignRef",(function(e){n.containerElement=e})),n.containerElement=void 0,n}var n,r,s;return function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}(t,e),n=t,r=[{key:"componentDidMount",value:function(){this.initMonaco()}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.language,r=t.theme,o=t.height,a=t.options,s=t.width,u=this.editor.getModel(),l=u.original,c=u.modified;this.props.original!==l.getValue()&&l.setValue(this.props.original),null!=this.props.value&&this.props.value!==c.getValue()&&(this.__prevent_trigger_change_event=!0,this.editor.pushUndoStop(),c.pushEditOperations([],[{range:c.getFullModelRange(),text:this.props.value}]),this.editor.pushUndoStop(),this.__prevent_trigger_change_event=!1),e.language!==n&&(i.editor.setModelLanguage(l,n),i.editor.setModelLanguage(c,n)),e.theme!==r&&i.editor.setTheme(r),!this.editor||s===e.width&&o===e.height||this.editor.layout(),e.options!==a&&this.editor.updateOptions(a)}},{key:"componentWillUnmount",value:function(){this.destroyMonaco()}},{key:"editorWillMount",value:function(){var e=this.props.editorWillMount;return e(i)||{}}},{key:"editorDidMount",value:function(e){var t=this;this.props.editorDidMount(e,i);var n=e.getModel().modified;this._subscription=n.onDidChangeContent((function(){t.__prevent_trigger_change_event||t.props.onChange(n.getValue())}))}},{key:"initModels",value:function(e,t){var n=this.props.language,r=i.editor.createModel(t,n),o=i.editor.createModel(e,n);this.editor.setModel({original:r,modified:o})}},{key:"initMonaco",value:function(){var e=null!=this.props.value?this.props.value:this.props.defaultValue,t=this.props,n=t.original,r=t.theme,o=t.options,a=t.overrideServices;this.containerElement&&(this.editorWillMount(),this.editor=i.editor.createDiffEditor(this.containerElement,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(n,!0).forEach((function(t){p(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},o,{},r?{theme:r}:{}),a),this.initModels(e,n),this.editorDidMount(this.editor))}},{key:"destroyMonaco",value:function(){if(this.editor){var e=this.editor.getModel(),t=e.original,n=e.modified;t.dispose(),n.dispose(),this.editor.dispose()}this._subscription&&this._subscription.dispose()}},{key:"render",value:function(){var e=this.props,t=e.width,n=e.height,i={width:(0,a.processSize)(t),height:(0,a.processSize)(n)};return o.default.createElement("div",{ref:this.assignRef,style:i,className:"react-monaco-editor-container"})}}],r&&c(n.prototype,r),s&&c(n,s),t}(o.default.Component);g.propTypes={width:r.default.oneOfType([r.default.string,r.default.number]),height:r.default.oneOfType([r.default.string,r.default.number]),original:r.default.string,value:r.default.string,defaultValue:r.default.string,language:r.default.string,theme:r.default.string,options:r.default.object,overrideServices:r.default.object,editorDidMount:r.default.func,editorWillMount:r.default.func,onChange:r.default.func},g.defaultProps={width:"100%",height:"100%",original:null,value:null,defaultValue:"",language:"javascript",theme:null,options:{},overrideServices:{},editorDidMount:a.noop,editorWillMount:a.noop,onChange:a.noop};var v=g;t.default=v},81677:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var i=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};i.get||i.set?Object.defineProperty(t,n,i):t[n]=e[n]}return t.default=e,t}(n(14717)),r=s(n(91386)),o=s(n(4519)),a=n(91953);function s(e){return e&&e.__esModule?e:{default:e}}function u(e){return u="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function c(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function f(e,t){return f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},f(e,t)}function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var g=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=function(e,t){return!t||"object"!==u(t)&&"function"!==typeof t?h(e):t}(this,d(t).call(this,e)),p(h(n),"assignRef",(function(e){n.containerElement=e})),n.containerElement=void 0,n}var n,r,s;return function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}(t,e),n=t,r=[{key:"componentDidMount",value:function(){this.initMonaco()}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.value,r=t.language,o=t.theme,a=t.height,s=t.options,u=t.width,l=this.editor,c=l.getModel();null!=this.props.value&&this.props.value!==c.getValue()&&(this.__prevent_trigger_change_event=!0,this.editor.pushUndoStop(),c.pushEditOperations([],[{range:c.getFullModelRange(),text:n}]),this.editor.pushUndoStop(),this.__prevent_trigger_change_event=!1),e.language!==r&&i.editor.setModelLanguage(c,r),e.theme!==o&&i.editor.setTheme(o),!l||u===e.width&&a===e.height||l.layout(),e.options!==s&&l.updateOptions(s)}},{key:"componentWillUnmount",value:function(){this.destroyMonaco()}},{key:"destroyMonaco",value:function(){this.editor&&(this.editor.getModel().dispose(),this.editor.dispose()),this._subscription&&this._subscription.dispose()}},{key:"initMonaco",value:function(){var e=null!=this.props.value?this.props.value:this.props.defaultValue,t=this.props,n=t.language,r=t.theme,o=t.options,a=t.overrideServices;this.containerElement&&(Object.assign(o,this.editorWillMount()),this.editor=i.editor.create(this.containerElement,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(n,!0).forEach((function(t){p(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({value:e,language:n},o,{},r?{theme:r}:{}),a),this.editorDidMount(this.editor))}},{key:"editorWillMount",value:function(){var e=this.props.editorWillMount;return e(i)||{}}},{key:"editorDidMount",value:function(e){var t=this;this.props.editorDidMount(e,i),this._subscription=e.onDidChangeModelContent((function(){t.__prevent_trigger_change_event||t.props.onChange(e.getValue())}))}},{key:"render",value:function(){var e=this.props,t=e.width,n=e.height,i={width:(0,a.processSize)(t),height:(0,a.processSize)(n)};return o.default.createElement("div",{ref:this.assignRef,style:i,className:"react-monaco-editor-container"})}}],r&&c(n.prototype,r),s&&c(n,s),t}(o.default.Component);g.propTypes={width:r.default.oneOfType([r.default.string,r.default.number]),height:r.default.oneOfType([r.default.string,r.default.number]),value:r.default.string,defaultValue:r.default.string,language:r.default.string,theme:r.default.string,options:r.default.object,overrideServices:r.default.object,editorDidMount:r.default.func,editorWillMount:r.default.func,onChange:r.default.func},g.defaultProps={width:"100%",height:"100%",value:null,defaultValue:"",language:"javascript",theme:null,options:{},overrideServices:{},editorDidMount:a.noop,editorWillMount:a.noop,onChange:a.noop};var v=g;t.default=v},77810:function(e,t,n){"use strict";Object.defineProperty(t,"ZP",{enumerable:!0,get:function(){return i.default}});var i=o(n(81677)),r=o(n(855));function o(e){return e&&e.__esModule?e:{default:e}}},91953:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.processSize=function(e){return/^\d+$/.test(e)?"".concat(e,"px"):e},t.noop=function(){}},39801:function(e,t,n){var i=n(60060);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return s(o(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=h;var r=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,i=[],o=0,a=0,s="",c=t&&t.delimiter||"/";null!=(n=r.exec(e));){var d=n[0],h=n[1],f=n.index;if(s+=e.slice(a,f),a=f+d.length,h)s+=h[1];else{var p=e[a],g=n[2],v=n[3],m=n[4],_=n[5],y=n[6],b=n[7];s&&(i.push(s),s="");var w=null!=g&&null!=p&&p!==g,C="+"===y||"*"===y,k="?"===y||"*"===y,S=n[2]||c,x=m||_;i.push({name:v||o++,prefix:g||"",delimiter:S,optional:k,repeat:C,partial:w,asterisk:!!b,pattern:x?l(x):b?".*":"[^"+u(S)+"]+?"})}}return a<e.length&&(s+=e.substr(a)),s&&i.push(s),i}function a(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function s(e,t){for(var n=new Array(e.length),r=0;r<e.length;r++)"object"===typeof e[r]&&(n[r]=new RegExp("^(?:"+e[r].pattern+")$",d(t)));return function(t,r){for(var o="",s=t||{},u=(r||{}).pretty?a:encodeURIComponent,l=0;l<e.length;l++){var c=e[l];if("string"!==typeof c){var d,h=s[c.name];if(null==h){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(i(h)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(h)+"`");if(0===h.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var f=0;f<h.length;f++){if(d=u(h[f]),!n[l].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===f?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(h).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):u(h),!n[l].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function u(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function l(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function h(e,t,n){i(t)||(n=t||n,t=[]);for(var r=(n=n||{}).strict,o=!1!==n.end,a="",s=0;s<e.length;s++){var l=e[s];if("string"===typeof l)a+=u(l);else{var h=u(l.prefix),f="(?:"+l.pattern+")";t.push(l),l.repeat&&(f+="(?:"+h+f+")*"),a+=f=l.optional?l.partial?h+"("+f+")?":"(?:"+h+"("+f+"))?":h+"("+f+")"}}var p=u(n.delimiter||"/"),g=a.slice(-p.length)===p;return r||(a=(g?a.slice(0,-p.length):a)+"(?:"+p+"(?=$))?"),a+=o?"$":r&&g?"":"(?="+p+"|$)",c(new RegExp("^"+a,d(n)),t)}function f(e,t,n){return i(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var i=0;i<n.length;i++)t.push({name:i,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):i(e)?function(e,t,n){for(var i=[],r=0;r<e.length;r++)i.push(f(e[r],t,n).source);return c(new RegExp("(?:"+i.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return h(o(e,n),t,n)}(e,t,n)}},31111:function(e,t){"use strict";var n="function"===typeof Symbol&&Symbol.for,i=n?Symbol.for("react.element"):60103,r=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,a=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,u=n?Symbol.for("react.provider"):60109,l=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,h=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,p=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,v=n?Symbol.for("react.lazy"):60116,m=n?Symbol.for("react.block"):60121,_=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,b=n?Symbol.for("react.scope"):60119;function w(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case i:switch(e=e.type){case c:case d:case o:case s:case a:case f:return e;default:switch(e=e&&e.$$typeof){case l:case h:case v:case g:case u:return e;default:return t}}case r:return t}}}function C(e){return w(e)===d}},29685:function(e,t,n){"use strict";n(31111)},3238:function(e,t,n){"use strict";n(58105);var i=n(4519),r=60103;if(t.Fragment=60107,"function"===typeof Symbol&&Symbol.for){var o=Symbol.for;r=o("react.element"),t.Fragment=o("react.fragment")}var a=i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s=Object.prototype.hasOwnProperty,u={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,n){var i,o={},l=null,c=null;for(i in void 0!==n&&(l=""+n),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(c=t.ref),t)s.call(t,i)&&!u.hasOwnProperty(i)&&(o[i]=t[i]);if(e&&e.defaultProps)for(i in t=e.defaultProps)void 0===o[i]&&(o[i]=t[i]);return{$$typeof:r,type:e,key:l,ref:c,props:o,_owner:a.current}}t.jsx=l,t.jsxs=l},43149:function(e,t,n){"use strict";var i=n(58105),r=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var a=60109,s=60110,u=60112;t.Suspense=60113;var l=60115,c=60116;if("function"===typeof Symbol&&Symbol.for){var d=Symbol.for;r=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),a=d("react.provider"),s=d("react.context"),u=d("react.forward_ref"),t.Suspense=d("react.suspense"),l=d("react.memo"),c=d("react.lazy")}var h="function"===typeof Symbol&&Symbol.iterator;function f(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var p={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g={};function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||p}function m(){}function _(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||p}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!==typeof e&&"function"!==typeof e&&null!=e)throw Error(f(85));this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},m.prototype=v.prototype;var y=_.prototype=new m;y.constructor=_,i(y,v.prototype),y.isPureReactComponent=!0;var b={current:null},w=Object.prototype.hasOwnProperty,C={key:!0,ref:!0,__self:!0,__source:!0};function k(e,t,n){var i,o={},a=null,s=null;if(null!=t)for(i in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(a=""+t.key),t)w.call(t,i)&&!C.hasOwnProperty(i)&&(o[i]=t[i]);var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){for(var l=Array(u),c=0;c<u;c++)l[c]=arguments[c+2];o.children=l}if(e&&e.defaultProps)for(i in u=e.defaultProps)void 0===o[i]&&(o[i]=u[i]);return{$$typeof:r,type:e,key:a,ref:s,props:o,_owner:b.current}}function S(e){return"object"===typeof e&&null!==e&&e.$$typeof===r}var x=/\/+/g;function L(e,t){return"object"===typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function E(e,t,n,i,a){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var u=!1;if(null===e)u=!0;else switch(s){case"string":case"number":u=!0;break;case"object":switch(e.$$typeof){case r:case o:u=!0}}if(u)return a=a(u=e),e=""===i?"."+L(u,0):i,Array.isArray(a)?(n="",null!=e&&(n=e.replace(x,"$&/")+"/"),E(a,t,n,"",(function(e){return e}))):null!=a&&(S(a)&&(a=function(e,t){return{$$typeof:r,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(a,n+(!a.key||u&&u.key===a.key?"":(""+a.key).replace(x,"$&/")+"/")+e)),t.push(a)),1;if(u=0,i=""===i?".":i+":",Array.isArray(e))for(var l=0;l<e.length;l++){var c=i+L(s=e[l],l);u+=E(s,t,n,c,a)}else if(c=function(e){return null===e||"object"!==typeof e?null:"function"===typeof(e=h&&e[h]||e["@@iterator"])?e:null}(e),"function"===typeof c)for(e=c.call(e),l=0;!(s=e.next()).done;)u+=E(s=s.value,t,n,c=i+L(s,l++),a);else if("object"===s)throw t=""+e,Error(f(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return u}function D(e,t,n){if(null==e)return e;var i=[],r=0;return E(e,i,"","",(function(e){return t.call(n,e,r++)})),i}function N(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var M={current:null};function T(){var e=M.current;if(null===e)throw Error(f(321));return e}var I={ReactCurrentDispatcher:M,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:b,IsSomeRendererActing:{current:!1},assign:i};t.Children={map:D,forEach:function(e,t,n){D(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return D(e,(function(){t++})),t},toArray:function(e){return D(e,(function(e){return e}))||[]},only:function(e){if(!S(e))throw Error(f(143));return e}},t.Component=v,t.PureComponent=_,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=I,t.cloneElement=function(e,t,n){if(null===e||void 0===e)throw Error(f(267,e));var o=i({},e.props),a=e.key,s=e.ref,u=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,u=b.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(c in t)w.call(t,c)&&!C.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==l?l[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){l=Array(c);for(var d=0;d<c;d++)l[d]=arguments[d+2];o.children=l}return{$$typeof:r,type:e.type,key:a,ref:s,props:o,_owner:u}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:s,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:a,_context:e},e.Consumer=e},t.createElement=k,t.createFactory=function(e){var t=k.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=S,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:N}},t.memo=function(e,t){return{$$typeof:l,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return T().useCallback(e,t)},t.useContext=function(e,t){return T().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return T().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return T().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return T().useLayoutEffect(e,t)},t.useMemo=function(e,t){return T().useMemo(e,t)},t.useReducer=function(e,t,n){return T().useReducer(e,t,n)},t.useRef=function(e){return T().useRef(e)},t.useState=function(e){return T().useState(e)},t.version="17.0.2"},4519:function(e,t,n){"use strict";e.exports=n(43149)},2556:function(e,t,n){"use strict";e.exports=n(3238)},34737:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.LOCATION_POP="REDUX-LOCATION-POP-ACTION",t.LOCATION_PUSH="REDUX-LOCATION-PUSH-ACTION",t.OBJECT_KEY_DELIMITER="-"},61530:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createReduxLocationActions=function(e,t,n,s){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:a.stateToParams;e[r.RLSCONFIG]&&e[r.RLSCONFIG][r.OVERWRITE_ACCESSORS]&&Object.keys(e[r.RLSCONFIG][r.OVERWRITE_ACCESSORS]).forEach((function(t){(0,r.overrideAccessors)(t,e[r.RLSCONFIG][r.OVERWRITE_ACCESSORS][t])}));var l={};return{locationMiddleware:function(t){return function(i){return function(o){var a=t.getState(),s=i(o),c=t.getState(),d=n.location,h=d.pathname!==l.pathname;if(c!==a||h){l=d;var f=u(e,c,d),p=f.shouldPush,g=f.location;(0,r.isEqual)(g,d)||(p&&!h?n.push(g):n.replace(g))}return s}}},reducersWithLocation:function(n,r){var a=function(n,r){var a=r.type,s=r.payload;return s&&i.LOCATION_POP===a?(s.query=(0,o.parseQuery)(e,s),s?t(n,s):n):n}(s(n,r),r);return a!==n?a:n}}};var i=n(34737),r=n(8606),o=n(85292),a=n(77847)},8606:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.paramDecoder=t.OVERWRITE_ACCESSORS=t.RLSCONFIG=void 0,t.setParamEncoder=function(e){l=e},t.setParamDecoder=function(e){t.paramDecoder=c=e},t.overrideAccessors=function(e,t){u[e]=t},t.get=function(){return u.get.apply(u,arguments)},t.set=function(){return u.set.apply(u,arguments)},t.isEqual=function(){return u.isEqual.apply(u,arguments)},t.getMatchingDeclaredPath=d,t.createObjectFromConfig=function(e,t){if(!e)return;var n=d(e,t);return e.global?Object.assign({},e.global,e[n]||{}):e[n]},t.getPath=function(){var e=window.location.href,t=e.indexOf("#")+1;if(t&&0===e.substring(t).indexOf("/"))return e.substring(t);return window.location.pathname+window.location.search+window.location.hash},t.createParamsString=function(e){var t=Object.keys(e).reduce((function(t,n){var i,r=n.toString(),o=e[n].toString();return"undefined"===typeof(i=o)||null===i||Array.isArray(o)&&!o.length?t:[].concat(s(t),[l(r)+"="+l(o)])}),[]);return t.length?"?"+t.join("&"):""},t.parseParams=function(e,t){return e&&e.split("&").reduce((function(e,n){"?"===n[0]&&(n=n.substr(1));var i=t?t(n):n.split("=");return e[c(i[0])]=c(i[1])||"",e}),{})||{}};var i=a(n(93128)),r=a(n(34495)),o=a(n(59537));function a(e){return e&&e.__esModule?e:{default:e}}function s(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}t.RLSCONFIG="RLSCONFIG",t.OVERWRITE_ACCESSORS="overwrite-accessors";var u={get:i.default,set:o.default,isEqual:r.default},l=encodeURIComponent,c=t.paramDecoder=decodeURIComponent;function d(e,t){var n=t.pathname.split("/");return Object.keys(e).filter((function(e){var t=[].concat(s(n)),i=e.split("/"),r=[].concat(s(i)),o=0;return i.forEach((function(e,n){"*"===e&&(t.splice(n-o,1),r.splice(n-o,1),o++)})),t.join("/")===r.join("/")}))[0]}},22458:function(e,t,n){"use strict";var i=n(61530);Object.defineProperty(t,"zl",{enumerable:!0,get:function(){return i.createReduxLocationActions}});var r=n(76664);Object.defineProperty(t,"C1",{enumerable:!0,get:function(){return r.listenForHistoryChange}});var o=n(8606)},76664:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.listenForHistoryChange=function(e,t){var n=function(e){return{type:i.LOCATION_POP,payload:e}};t.listen((function(){t&&t.action&&"POP"===t.action&&e.dispatch(n(t.location))})),t.listen((function(){t&&t.action&&"PUSH"===t.action&&e.dispatch(function(e){return{type:i.LOCATION_PUSH,payload:e}}(t.location))})),e.dispatch(n(t.location))};var i=n(34737)},85292:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseQuery=function(e,t){var n=(0,i.createObjectFromConfig)(e,t),o=e[i.RLSCONFIG]&&e[i.RLSCONFIG].queryParser,a=(0,i.parseParams)(t.search,o);if(!n)return t.search;return Object.keys(n).reduce((function(e,t){var o=n[t],s=o.stateKey,u=o.options,l=void 0===u?{}:u,c=o.initialState,d=o.type,h=a[t],f=void 0;return"undefined"===typeof h||null===h?((0,i.set)(e,s,c),e):(f=l.parse?l.parse(h):d?r.typeHandles[d].parse(h,l):h,(0,i.set)(e,s,f),e)}),{})};var i=n(8606),r=n(4141)},77847:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e};t.stateToParams=function(e,t,n){var s=(0,o.createObjectFromConfig)(e,n),u=e[o.RLSCONFIG]&&e[o.RLSCONFIG].queryParser,l=(0,o.parseParams)(n.search,u);if(!s)return{location:r({},n)};var c=!1,d=Object.keys(s).reduce((function(e,n){var r=s[n],u=r.stateKey,d=r.options,h=void 0===d?{}:d,f=r.initialState,p=r.type,g=(0,o.get)(t,u),v=void 0;if("date"===p?v=g.toISOString().substring(0,10)===(f&&f.toISOString().substring(0,10)):(g&&"object"===("undefined"===typeof g?"undefined":i(g))&&!Object.keys(g).length&&(g=void 0),v="object"===("undefined"===typeof g?"undefined":i(g))?(0,o.isEqual)(f,g):g===f),(!g&&!h.serialize||v)&&!h.setAsEmptyItem)return e;if(h.serialize){var m=h.serialize(g);if("undefined"===typeof m)return e;g=m}else p&&(g=a.typeHandles[p].serialize(g,h));return e[n]=g,g!==l[n]&&h.shouldPush&&(c=!0),e}),{});return{location:r({},n,{search:(0,o.createParamsString)(d)}),shouldPush:c}};var o=n(8606),a=n(4141)},4141:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.typeHandles=void 0;var i=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],i=!0,r=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(i=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);i=!0);}catch(u){r=!0,o=u}finally{try{!i&&s.return&&s.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(34737),o=n(8606);function a(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}t.typeHandles={number:{serialize:function(e,t){return e.toString()},parse:function(e,t){return parseFloat(e)}},date:{serialize:function(e,t){return e.toISOString().substring(0,10)},parse:function(e,t){return new Date(e)}},array:{serialize:function(e,t){return(t.keepOrder?[].concat(a(e)):[].concat(a(e)).sort()).join(t.delimiter||r.OBJECT_KEY_DELIMITER)},parse:function(e,t){return(0,o.paramDecoder)(e).split(t.delimiter||r.OBJECT_KEY_DELIMITER)}},bool:{serialize:function(e,t){return e.toString()},parse:function(e,t){return"true"===e}},object:{serialize:function(e,t){return t.isFlags?Object.keys(e).filter((function(t,n){return e[t]})).join(r.OBJECT_KEY_DELIMITER):Object.keys(e).sort().map((function(t,n){return""+t+r.OBJECT_KEY_DELIMITER+e[t]}))},parse:function(e,t){return t.isFlags?e.split(t.delimiter||r.OBJECT_KEY_DELIMITER).reduce((function(e,t){return""===t||(e[t]=!0),e}),{}):(0,o.paramDecoder)(e).split(",").reduce((function(e,t){var n=t.split(r.OBJECT_KEY_DELIMITER),o=i(n,2),a=o[0],s=o[1];return e[a]=s,e}),{})}}}},9780:function(e){var t=function(e){"use strict";var t,n=Object.prototype,i=n.hasOwnProperty,r="function"===typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(T){u=function(e,t,n){return e[t]=n}}function l(e,t,n,i){var r=t&&t.prototype instanceof v?t:v,o=Object.create(r.prototype),a=new D(i||[]);return o._invoke=function(e,t,n){var i=d;return function(r,o){if(i===f)throw new Error("Generator is already running");if(i===p){if("throw"===r)throw o;return M()}for(n.method=r,n.arg=o;;){var a=n.delegate;if(a){var s=x(a,n);if(s){if(s===g)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===d)throw i=p,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=f;var u=c(e,t,n);if("normal"===u.type){if(i=n.done?p:h,u.arg===g)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(i=p,n.method="throw",n.arg=u.arg)}}}(e,n,a),o}function c(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(T){return{type:"throw",arg:T}}}e.wrap=l;var d="suspendedStart",h="suspendedYield",f="executing",p="completed",g={};function v(){}function m(){}function _(){}var y={};u(y,o,(function(){return this}));var b=Object.getPrototypeOf,w=b&&b(b(N([])));w&&w!==n&&i.call(w,o)&&(y=w);var C=_.prototype=v.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function n(r,o,a,s){var u=c(e[r],e,o);if("throw"!==u.type){var l=u.arg,d=l.value;return d&&"object"===typeof d&&i.call(d,"__await")?t.resolve(d.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(d).then((function(e){l.value=e,a(l)}),(function(e){return n("throw",e,a,s)}))}s(u.arg)}var r;this._invoke=function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}}function x(e,n){var i=e.iterator[n.method];if(i===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=t,x(e,n),"throw"===n.method))return g;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var r=c(i,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,g;var o=r.arg;return o?o.done?(n[e.resultName]=o.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,g):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function D(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function N(e){if(e){var n=e[o];if(n)return n.call(e);if("function"===typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r<e.length;)if(i.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}return{next:M}}function M(){return{value:t,done:!0}}return m.prototype=_,u(C,"constructor",_),u(_,"constructor",m),m.displayName=u(_,s,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"===typeof e&&e.constructor;return!!t&&(t===m||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,_):(e.__proto__=_,u(e,s,"GeneratorFunction")),e.prototype=Object.create(C),e},e.awrap=function(e){return{__await:e}},k(S.prototype),u(S.prototype,a,(function(){return this})),e.AsyncIterator=S,e.async=function(t,n,i,r,o){void 0===o&&(o=Promise);var a=new S(l(t,n,i,r),o);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},k(C),u(C,s,"Generator"),u(C,o,(function(){return this})),u(C,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var i=t.pop();if(i in e)return n.value=i,n.done=!1,n}return n.done=!0,n}},e.values=N,D.prototype={constructor:D,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(E),!e)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(i,r){return s.type="throw",s.arg=e,n.next=i,r&&(n.method="next",n.arg=t),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var u=i.call(a,"catchLoc"),l=i.call(a,"finallyLoc");if(u&&l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,g):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;E(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:N(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),g}},e}(e.exports);try{regeneratorRuntime=t}catch(n){"object"===typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},77154:function(e,t){"use strict";var n,i,r,o;if("object"===typeof performance&&"function"===typeof performance.now){var a=performance;t.unstable_now=function(){return a.now()}}else{var s=Date,u=s.now();t.unstable_now=function(){return s.now()-u}}if("undefined"===typeof window||"function"!==typeof MessageChannel){var l=null,c=null,d=function e(){if(null!==l)try{var n=t.unstable_now();l(!0,n),l=null}catch(i){throw setTimeout(e,0),i}};n=function(e){null!==l?setTimeout(n,0,e):(l=e,setTimeout(d,0))},i=function(e,t){c=setTimeout(e,t)},r=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var h=window.setTimeout,f=window.clearTimeout;if("undefined"!==typeof console){var p=window.cancelAnimationFrame;"function"!==typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!==typeof p&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var g=!1,v=null,m=-1,_=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):_=0<e?Math.floor(1e3/e):5};var b=new MessageChannel,w=b.port2;b.port1.onmessage=function(){if(null!==v){var e=t.unstable_now();y=e+_;try{v(!0,e)?w.postMessage(null):(g=!1,v=null)}catch(n){throw w.postMessage(null),n}}else g=!1},n=function(e){v=e,g||(g=!0,w.postMessage(null))},i=function(e,n){m=h((function(){e(t.unstable_now())}),n)},r=function(){f(m),m=-1}}function C(e,t){var n=e.length;e.push(t);e:for(;;){var i=n-1>>>1,r=e[i];if(!(void 0!==r&&0<x(r,t)))break e;e[i]=t,e[n]=r,n=i}}function k(e){return void 0===(e=e[0])?null:e}function S(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var i=0,r=e.length;i<r;){var o=2*(i+1)-1,a=e[o],s=o+1,u=e[s];if(void 0!==a&&0>x(a,n))void 0!==u&&0>x(u,a)?(e[i]=u,e[s]=n,i=s):(e[i]=a,e[o]=n,i=o);else{if(!(void 0!==u&&0>x(u,n)))break e;e[i]=u,e[s]=n,i=s}}}return t}return null}function x(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var L=[],E=[],D=1,N=null,M=3,T=!1,I=!1,O=!1;function A(e){for(var t=k(E);null!==t;){if(null===t.callback)S(E);else{if(!(t.startTime<=e))break;S(E),t.sortIndex=t.expirationTime,C(L,t)}t=k(E)}}function R(e){if(O=!1,A(e),!I)if(null!==k(L))I=!0,n(P);else{var t=k(E);null!==t&&i(R,t.startTime-e)}}function P(e,n){I=!1,O&&(O=!1,r()),T=!0;var o=M;try{for(A(n),N=k(L);null!==N&&(!(N.expirationTime>n)||e&&!t.unstable_shouldYield());){var a=N.callback;if("function"===typeof a){N.callback=null,M=N.priorityLevel;var s=a(N.expirationTime<=n);n=t.unstable_now(),"function"===typeof s?N.callback=s:N===k(L)&&S(L),A(n)}else S(L);N=k(L)}if(null!==N)var u=!0;else{var l=k(E);null!==l&&i(R,l.startTime-n),u=!1}return u}finally{N=null,M=o,T=!1}}var Z=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){I||T||(I=!0,n(P))},t.unstable_getCurrentPriorityLevel=function(){return M},t.unstable_getFirstCallbackNode=function(){return k(L)},t.unstable_next=function(e){switch(M){case 1:case 2:case 3:var t=3;break;default:t=M}var n=M;M=t;try{return e()}finally{M=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=Z,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=M;M=e;try{return t()}finally{M=n}},t.unstable_scheduleCallback=function(e,o,a){var s=t.unstable_now();switch("object"===typeof a&&null!==a?a="number"===typeof(a=a.delay)&&0<a?s+a:s:a=s,e){case 1:var u=-1;break;case 2:u=250;break;case 5:u=1073741823;break;case 4:u=1e4;break;default:u=5e3}return e={id:D++,callback:o,priorityLevel:e,startTime:a,expirationTime:u=a+u,sortIndex:-1},a>s?(e.sortIndex=a,C(E,e),null===k(L)&&e===k(E)&&(O?r():O=!0,i(R,a-s))):(e.sortIndex=u,C(L,e),I||T||(I=!0,n(P))),e},t.unstable_wrapCallback=function(e){var t=M;return function(){var n=M;M=t;try{return e.apply(this,arguments)}finally{M=n}}}},8514:function(e,t,n){"use strict";e.exports=n(77154)},13959:function(e,t,n){"use strict";var i=n(11333),r=n(15017),o=n(27481),a=i("%TypeError%"),s=i("%WeakMap%",!0),u=i("%Map%",!0),l=r("WeakMap.prototype.get",!0),c=r("WeakMap.prototype.set",!0),d=r("WeakMap.prototype.has",!0),h=r("Map.prototype.get",!0),f=r("Map.prototype.set",!0),p=r("Map.prototype.has",!0),g=function(e,t){for(var n,i=e;null!==(n=i.next);i=n)if(n.key===t)return i.next=n.next,n.next=e.next,e.next=n,n};e.exports=function(){var e,t,n,i={assert:function(e){if(!i.has(e))throw new a("Side channel does not contain "+o(e))},get:function(i){if(s&&i&&("object"===typeof i||"function"===typeof i)){if(e)return l(e,i)}else if(u){if(t)return h(t,i)}else if(n)return function(e,t){var n=g(e,t);return n&&n.value}(n,i)},has:function(i){if(s&&i&&("object"===typeof i||"function"===typeof i)){if(e)return d(e,i)}else if(u){if(t)return p(t,i)}else if(n)return function(e,t){return!!g(e,t)}(n,i);return!1},set:function(i,r){s&&i&&("object"===typeof i||"function"===typeof i)?(e||(e=new s),c(e,i,r)):u?(t||(t=new u),f(t,i,r)):(n||(n={key:{},next:null}),function(e,t,n){var i=g(e,t);i?i.value=n:e.next={key:t,next:e.next,value:n}}(n,i,r))}};return i}},83077:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}}),e=n.hmd(e);var i=function(e){var t,n=e.Symbol;return"function"===typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable",t}("undefined"!==typeof self?self:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:e)},22710:function(e){e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],i=0;i<e.rangeCount;i++)n.push(e.getRangeAt(i));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((function(t){e.addRange(t)})),t&&t.focus()}}},55509:function(e,t,n){var i;e=n.nmd(e),function(r){t&&t.nodeType,e&&e.nodeType;var o="object"==typeof n.g&&n.g;o.global!==o&&o.window!==o&&o.self;var a,s=2147483647,u=36,l=1,c=26,d=38,h=700,f=72,p=128,g="-",v=/^xn--/,m=/[^\x20-\x7E]/,_=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},b=u-l,w=Math.floor,C=String.fromCharCode;function k(e){throw RangeError(y[e])}function S(e,t){for(var n=e.length,i=[];n--;)i[n]=t(e[n]);return i}function x(e,t){var n=e.split("@"),i="";return n.length>1&&(i=n[0]+"@",e=n[1]),i+S((e=e.replace(_,".")).split("."),t).join(".")}function L(e){for(var t,n,i=[],r=0,o=e.length;r<o;)(t=e.charCodeAt(r++))>=55296&&t<=56319&&r<o?56320==(64512&(n=e.charCodeAt(r++)))?i.push(((1023&t)<<10)+(1023&n)+65536):(i.push(t),r--):i.push(t);return i}function E(e){return S(e,(function(e){var t="";return e>65535&&(t+=C((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=C(e)})).join("")}function D(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function N(e,t,n){var i=0;for(e=n?w(e/h):e>>1,e+=w(e/t);e>b*c>>1;i+=u)e=w(e/b);return w(i+(b+1)*e/(e+d))}function M(e){var t,n,i,r,o,a,d,h,v,m,_,y=[],b=e.length,C=0,S=p,x=f;for((n=e.lastIndexOf(g))<0&&(n=0),i=0;i<n;++i)e.charCodeAt(i)>=128&&k("not-basic"),y.push(e.charCodeAt(i));for(r=n>0?n+1:0;r<b;){for(o=C,a=1,d=u;r>=b&&k("invalid-input"),((h=(_=e.charCodeAt(r++))-48<10?_-22:_-65<26?_-65:_-97<26?_-97:u)>=u||h>w((s-C)/a))&&k("overflow"),C+=h*a,!(h<(v=d<=x?l:d>=x+c?c:d-x));d+=u)a>w(s/(m=u-v))&&k("overflow"),a*=m;x=N(C-o,t=y.length+1,0==o),w(C/t)>s-S&&k("overflow"),S+=w(C/t),C%=t,y.splice(C++,0,S)}return E(y)}function T(e){var t,n,i,r,o,a,d,h,v,m,_,y,b,S,x,E=[];for(y=(e=L(e)).length,t=p,n=0,o=f,a=0;a<y;++a)(_=e[a])<128&&E.push(C(_));for(i=r=E.length,r&&E.push(g);i<y;){for(d=s,a=0;a<y;++a)(_=e[a])>=t&&_<d&&(d=_);for(d-t>w((s-n)/(b=i+1))&&k("overflow"),n+=(d-t)*b,t=d,a=0;a<y;++a)if((_=e[a])<t&&++n>s&&k("overflow"),_==t){for(h=n,v=u;!(h<(m=v<=o?l:v>=o+c?c:v-o));v+=u)x=h-m,S=u-m,E.push(C(D(m+x%S,0))),h=w(x/S);E.push(C(D(h,0))),o=N(n,b,i==r),n=0,++i}++n,++t}return E.join("")}a={version:"1.3.2",ucs2:{decode:L,encode:E},decode:M,encode:T,toASCII:function(e){return x(e,(function(e){return m.test(e)?"xn--"+T(e):e}))},toUnicode:function(e){return x(e,(function(e){return v.test(e)?M(e.slice(4).toLowerCase()):e}))}},void 0===(i=function(){return a}.call(t,n,t,e))||(e.exports=i)}()},33119:function(e,t,n){"use strict";var i=n(55509),r=n(60723);function o(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=y,t.resolve=function(e,t){return y(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?y(e,!1,!0).resolveObject(t):t},t.format=function(e){r.isString(e)&&(e=y(e));return e instanceof o?e.format():o.prototype.format.call(e)},t.Url=o;var a=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,u=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(l),d=["%","/","?",";","#"].concat(c),h=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},v={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},_=n(76127);function y(e,t,n){if(e&&r.isObject(e)&&e instanceof o)return e;var i=new o;return i.parse(e,t,n),i}o.prototype.parse=function(e,t,n){if(!r.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var o=e.indexOf("?"),s=-1!==o&&o<e.indexOf("#")?"?":"#",l=e.split(s);l[0]=l[0].replace(/\\/g,"/");var y=e=l.join(s);if(y=y.trim(),!n&&1===e.split("#").length){var b=u.exec(y);if(b)return this.path=y,this.href=y,this.pathname=b[1],b[2]?(this.search=b[2],this.query=t?_.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var w=a.exec(y);if(w){var C=(w=w[0]).toLowerCase();this.protocol=C,y=y.substr(w.length)}if(n||w||y.match(/^\/\/[^@\/]+@[^@\/]+/)){var k="//"===y.substr(0,2);!k||w&&v[w]||(y=y.substr(2),this.slashes=!0)}if(!v[w]&&(k||w&&!m[w])){for(var S,x,L=-1,E=0;E<h.length;E++){-1!==(D=y.indexOf(h[E]))&&(-1===L||D<L)&&(L=D)}-1!==(x=-1===L?y.lastIndexOf("@"):y.lastIndexOf("@",L))&&(S=y.slice(0,x),y=y.slice(x+1),this.auth=decodeURIComponent(S)),L=-1;for(E=0;E<d.length;E++){var D;-1!==(D=y.indexOf(d[E]))&&(-1===L||D<L)&&(L=D)}-1===L&&(L=y.length),this.host=y.slice(0,L),y=y.slice(L),this.parseHost(),this.hostname=this.hostname||"";var N="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!N)for(var M=this.hostname.split(/\./),T=(E=0,M.length);E<T;E++){var I=M[E];if(I&&!I.match(f)){for(var O="",A=0,R=I.length;A<R;A++)I.charCodeAt(A)>127?O+="x":O+=I[A];if(!O.match(f)){var P=M.slice(0,E),Z=M.slice(E+1),F=I.match(p);F&&(P.push(F[1]),Z.unshift(F[2])),Z.length&&(y="/"+Z.join(".")+y),this.hostname=P.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),N||(this.hostname=i.toASCII(this.hostname));var j=this.port?":"+this.port:"",H=this.hostname||"";this.host=H+j,this.href+=this.host,N&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==y[0]&&(y="/"+y))}if(!g[C])for(E=0,T=c.length;E<T;E++){var B=c[E];if(-1!==y.indexOf(B)){var z=encodeURIComponent(B);z===B&&(z=escape(B)),y=y.split(B).join(z)}}var W=y.indexOf("#");-1!==W&&(this.hash=y.substr(W),y=y.slice(0,W));var V=y.indexOf("?");if(-1!==V?(this.search=y.substr(V),this.query=y.substr(V+1),t&&(this.query=_.parse(this.query)),y=y.slice(0,V)):t&&(this.search="",this.query={}),y&&(this.pathname=y),m[C]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){j=this.pathname||"";var Y=this.search||"";this.path=j+Y}return this.href=this.format(),this},o.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",i=this.hash||"",o=!1,a="";this.host?o=e+this.host:this.hostname&&(o=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&r.isObject(this.query)&&Object.keys(this.query).length&&(a=_.stringify(this.query));var s=this.search||a&&"?"+a||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||m[t])&&!1!==o?(o="//"+(o||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):o||(o=""),i&&"#"!==i.charAt(0)&&(i="#"+i),s&&"?"!==s.charAt(0)&&(s="?"+s),t+o+(n=n.replace(/[?#]/g,(function(e){return encodeURIComponent(e)})))+(s=s.replace("#","%23"))+i},o.prototype.resolve=function(e){return this.resolveObject(y(e,!1,!0)).format()},o.prototype.resolveObject=function(e){if(r.isString(e)){var t=new o;t.parse(e,!1,!0),e=t}for(var n=new o,i=Object.keys(this),a=0;a<i.length;a++){var s=i[a];n[s]=this[s]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var u=Object.keys(e),l=0;l<u.length;l++){var c=u[l];"protocol"!==c&&(n[c]=e[c])}return m[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!m[e.protocol]){for(var d=Object.keys(e),h=0;h<d.length;h++){var f=d[h];n[f]=e[f]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||v[e.protocol])n.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==p[0]&&p.unshift(""),p.length<2&&p.unshift(""),n.pathname=p.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var g=n.pathname||"",_=n.search||"";n.path=g+_}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var y=n.pathname&&"/"===n.pathname.charAt(0),b=e.host||e.pathname&&"/"===e.pathname.charAt(0),w=b||y||n.host&&e.pathname,C=w,k=n.pathname&&n.pathname.split("/")||[],S=(p=e.pathname&&e.pathname.split("/")||[],n.protocol&&!m[n.protocol]);if(S&&(n.hostname="",n.port=null,n.host&&(""===k[0]?k[0]=n.host:k.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===p[0]?p[0]=e.host:p.unshift(e.host)),e.host=null),w=w&&(""===p[0]||""===k[0])),b)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,k=p;else if(p.length)k||(k=[]),k.pop(),k=k.concat(p),n.search=e.search,n.query=e.query;else if(!r.isNullOrUndefined(e.search)){if(S)n.hostname=n.host=k.shift(),(N=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=N.shift(),n.host=n.hostname=N.shift());return n.search=e.search,n.query=e.query,r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!k.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var x=k.slice(-1)[0],L=(n.host||e.host||k.length>1)&&("."===x||".."===x)||""===x,E=0,D=k.length;D>=0;D--)"."===(x=k[D])?k.splice(D,1):".."===x?(k.splice(D,1),E++):E&&(k.splice(D,1),E--);if(!w&&!C)for(;E--;E)k.unshift("..");!w||""===k[0]||k[0]&&"/"===k[0].charAt(0)||k.unshift(""),L&&"/"!==k.join("/").substr(-1)&&k.push("");var N,M=""===k[0]||k[0]&&"/"===k[0].charAt(0);S&&(n.hostname=n.host=M?"":k.length?k.shift():"",(N=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=N.shift(),n.host=n.hostname=N.shift()));return(w=w||n.host&&k.length)&&!M&&k.unshift(""),k.length?n.pathname=k.join("/"):(n.pathname=null,n.path=null),r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},o.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},60723:function(e){"use strict";e.exports={isString:function(e){return"string"===typeof e},isObject:function(e){return"object"===typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},89804:function(e,t,n){"use strict";var i=n(44763),r=(0,i.setup)();function o(e){return"string"===typeof e}function a(e){var t=r(e);function n(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var i,r,a=e.shift(),s=e[0],u=e[1];return("string"!==typeof a||(o(r=s)||Array.isArray(r)&&r.every(o)))&&(u=s,s=null),i=t(a,s),u&&(i=i.mix(u)),i.toString()}return n.builder=function(){return t},n}a.setup=function(e){r=(0,i.setup)(e)},a.reset=function(){r=(0,i.setup)()},t.Z=a},1720:function(e,t,n){var i,r,o;"undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self&&self,r=[n(91386),n(4519)],i=function(t,n){"use strict";var i,r;function o(){if("function"!==typeof WeakMap)return null;var e=new WeakMap;return o=function(){return e},e}function a(e){if(e&&e.__esModule)return e;if(null===e||"object"!==u(e)&&"function"!==typeof e)return{default:e};var t=o();if(t&&t.has(e))return t.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){var a=i?Object.getOwnPropertyDescriptor(e,r):null;a&&(a.get||a.set)?Object.defineProperty(n,r,a):n[r]=e[r]}return n.default=e,t&&t.set(e,n),n}function s(e){return e&&e.__esModule?e:{default:e}}function u(e){return u="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function d(e,t,n){return t&&c(e.prototype,t),n&&c(e,n),e}function h(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}function f(e,t){return f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},f(e,t)}function p(e){var t=m();return function(){var n,i=_(e);if(t){var r=_(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return g(this,n)}}function g(e,t){return!t||"object"!==u(t)&&"function"!==typeof t?v(e):t}function v(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function _(e){return _=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},_(e)}function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?y(Object(n),!0).forEach((function(t){w(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}t=s(t),n=a(n);var C={x:"clientWidth",y:"clientHeight"},k={x:"clientTop",y:"clientLeft"},S={x:"innerWidth",y:"innerHeight"},x={x:"offsetWidth",y:"offsetHeight"},L={x:"offsetLeft",y:"offsetTop"},E={x:"overflowX",y:"overflowY"},D={x:"scrollWidth",y:"scrollHeight"},N={x:"scrollLeft",y:"scrollTop"},M={x:"width",y:"height"},T=function(){},I=!!function(){if("undefined"===typeof window)return!1;var e=!1;try{document.createElement("div").addEventListener("test",T,{get passive(){return e=!0,!1}})}catch(t){}return e}()&&{passive:!0},O="ReactList failed to reach a stable state.",A=40,R=function(e,t){for(var n in t)if(e[n]!==t[n])return!1;return!0},P=function(e){for(var t=e.props.axis,n=e.getEl(),i=E[t];n=n.parentElement;)switch(window.getComputedStyle(n)[i]){case"auto":case"scroll":case"overlay":return n}return window},Z=function(e){var t=e.props.axis,n=e.scrollParent;return n===window?window[S[t]]:n[C[t]]},F=function(e,t){var n=e.length,i=e.minSize,r=e.type,o=t.from,a=t.size,s=t.itemsPerRow,u=(a=Math.max(a,i))%s;return u&&(a+=s-u),a>n&&(a=n),(u=(o="simple"!==r&&o?Math.max(Math.min(o,n-a),0):0)%s)&&(o-=u,a+=u),o===t.from&&a==t.size?t:b(b({},t),{},{from:o,size:a})};e.exports=(r=i=function(e){h(i,e);var t=p(i);function i(e){var n;return l(this,i),(n=t.call(this,e)).state=F(e,{itemsPerRow:1,from:e.initialIndex,size:0}),n.cache={},n.cachedScrollPosition=null,n.prevPrevState={},n.unstable=!1,n.updateCounter=0,n}return d(i,null,[{key:"getDerivedStateFromProps",value:function(e,t){var n=F(e,t);return n===t?null:n}}]),d(i,[{key:"componentDidMount",value:function(){this.updateFrameAndClearCache=this.updateFrameAndClearCache.bind(this),window.addEventListener("resize",this.updateFrameAndClearCache),this.updateFrame(this.scrollTo.bind(this,this.props.initialIndex))}},{key:"componentDidUpdate",value:function(e){var t=this;if(this.props.axis!==e.axis&&this.clearSizeCache(),!this.unstable){if(++this.updateCounter>A)return this.unstable=!0,console.error(O);this.updateCounterTimeoutId||(this.updateCounterTimeoutId=setTimeout((function(){t.updateCounter=0,delete t.updateCounterTimeoutId}),0)),this.updateFrame()}}},{key:"maybeSetState",value:function(e,t){if(R(this.state,e))return t();this.setState(e,t)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.updateFrameAndClearCache),this.scrollParent.removeEventListener("scroll",this.updateFrameAndClearCache,I),this.scrollParent.removeEventListener("mousewheel",T,I)}},{key:"getOffset",value:function(e){var t=this.props.axis,n=e[k[t]]||0,i=L[t];do{n+=e[i]||0}while(e=e.offsetParent);return n}},{key:"getEl",value:function(){return this.el||this.items}},{key:"getScrollPosition",value:function(){if("number"===typeof this.cachedScrollPosition)return this.cachedScrollPosition;var e=this.scrollParent,t=this.props.axis,n=N[t],i=e===window?document.body[n]||document.documentElement[n]:e[n],r=this.getScrollSize()-this.props.scrollParentViewportSizeGetter(this),o=Math.max(0,Math.min(i,r)),a=this.getEl();return this.cachedScrollPosition=this.getOffset(e)+o-this.getOffset(a),this.cachedScrollPosition}},{key:"setScroll",value:function(e){var t=this.scrollParent,n=this.props.axis;if(e+=this.getOffset(this.getEl()),t===window)return window.scrollTo(0,e);e-=this.getOffset(this.scrollParent),t[N[n]]=e}},{key:"getScrollSize",value:function(){var e=this.scrollParent,t=document,n=t.body,i=t.documentElement,r=D[this.props.axis];return e===window?Math.max(n[r],i[r]):e[r]}},{key:"hasDeterminateSize",value:function(){var e=this.props,t=e.itemSizeGetter;return"uniform"===e.type||t}},{key:"getStartAndEnd",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.threshold,t=this.getScrollPosition(),n=Math.max(0,t-e),i=t+this.props.scrollParentViewportSizeGetter(this)+e;return this.hasDeterminateSize()&&(i=Math.min(i,this.getSpaceBefore(this.props.length))),{start:n,end:i}}},{key:"getItemSizeAndItemsPerRow",value:function(){var e=this.props,t=e.axis,n=e.useStaticSize,i=this.state,r=i.itemSize,o=i.itemsPerRow;if(n&&r&&o)return{itemSize:r,itemsPerRow:o};var a=this.items.children;if(!a.length)return{};var s=a[0],u=s[x[t]],l=Math.abs(u-r);if((isNaN(l)||l>=1)&&(r=u),!r)return{};for(var c=L[t],d=s[c],h=a[o=1];h&&h[c]===d;h=a[o])++o;return{itemSize:r,itemsPerRow:o}}},{key:"clearSizeCache",value:function(){this.cachedScrollPosition=null}},{key:"updateFrameAndClearCache",value:function(e){return this.clearSizeCache(),this.updateFrame(e)}},{key:"updateFrame",value:function(e){switch(this.updateScrollParent(),"function"!=typeof e&&(e=T),this.props.type){case"simple":return this.updateSimpleFrame(e);case"variable":return this.updateVariableFrame(e);case"uniform":return this.updateUniformFrame(e)}}},{key:"updateScrollParent",value:function(){var e=this.scrollParent;this.scrollParent=this.props.scrollParentGetter(this),e!==this.scrollParent&&(e&&(e.removeEventListener("scroll",this.updateFrameAndClearCache),e.removeEventListener("mousewheel",T)),this.clearSizeCache(),this.scrollParent.addEventListener("scroll",this.updateFrameAndClearCache,I),this.scrollParent.addEventListener("mousewheel",T,I))}},{key:"updateSimpleFrame",value:function(e){var t=this.getStartAndEnd().end,n=this.items.children,i=0;if(n.length){var r=this.props.axis,o=n[0],a=n[n.length-1];i=this.getOffset(a)+a[x[r]]-this.getOffset(o)}if(i>t)return e();var s=this.props,u=s.pageSize,l=s.length,c=Math.min(this.state.size+u,l);this.maybeSetState({size:c},e)}},{key:"updateVariableFrame",value:function(e){this.props.itemSizeGetter||this.cacheSizes();for(var t=this.getStartAndEnd(),n=t.start,i=t.end,r=this.props,o=r.length,a=r.pageSize,s=0,u=0,l=0,c=o-1;u<c;){var d=this.getSizeOfItem(u);if(null==d||s+d>n)break;s+=d,++u}for(var h=o-u;l<h&&s<i;){var f=this.getSizeOfItem(u+l);if(null==f){l=Math.min(l+a,h);break}s+=f,++l}this.maybeSetState(F(this.props,{from:u,itemsPerRow:1,size:l}),e)}},{key:"updateUniformFrame",value:function(e){var t=this.getItemSizeAndItemsPerRow(),n=t.itemSize,i=t.itemsPerRow;if(!n||!i)return e();var r=this.getStartAndEnd(),o=r.start,a=r.end,s=F(this.props,{from:Math.floor(o/n)*i,size:(Math.ceil((a-o)/n)+1)*i,itemsPerRow:i}),u=s.from,l=s.size;return this.maybeSetState({itemsPerRow:i,from:u,itemSize:n,size:l},e)}},{key:"getSpaceBefore",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null!=t[e])return t[e];var n=this.state,i=n.itemSize,r=n.itemsPerRow;if(i)return t[e]=Math.floor(e/r)*i;for(var o=e;o>0&&null==t[--o];);for(var a=t[o]||0,s=o;s<e;++s){t[s]=a;var u=this.getSizeOfItem(s);if(null==u)break;a+=u}return t[e]=a}},{key:"cacheSizes",value:function(){for(var e=this.cache,t=this.state.from,n=this.items.children,i=x[this.props.axis],r=0,o=n.length;r<o;++r)e[t+r]=n[r][i]}},{key:"getSizeOfItem",value:function(e){var t=this.cache,n=this.items,i=this.props,r=i.axis,o=i.itemSizeGetter,a=i.itemSizeEstimator,s=i.type,u=this.state,l=u.from,c=u.itemSize,d=u.size;if(c)return c;if(o)return o(e);if(e in t)return t[e];if("simple"===s&&e>=l&&e<l+d&&n){var h=n.children[e-l];if(h)return h[x[r]]}return a?a(e,t):void 0}},{key:"scrollTo",value:function(e){null!=e&&this.setScroll(this.getSpaceBefore(e))}},{key:"scrollAround",value:function(e){var t=this.getScrollPosition(),n=this.getSpaceBefore(e),i=n-this.props.scrollParentViewportSizeGetter(this)+this.getSizeOfItem(e),r=Math.min(i,n),o=Math.max(i,n);return t<=r?this.setScroll(r):t>o?this.setScroll(o):void 0}},{key:"getVisibleRange",value:function(){for(var e,t,n=this.state,i=n.from,r=n.size,o=this.getStartAndEnd(0),a=o.start,s=o.end,u={},l=i;l<i+r;++l){var c=this.getSpaceBefore(l,u),d=c+this.getSizeOfItem(l);null==e&&d>a&&(e=l),null!=e&&c<s&&(t=l)}return[e,t]}},{key:"renderItems",value:function(){for(var e=this,t=this.props,n=t.itemRenderer,i=t.itemsRenderer,r=this.state,o=r.from,a=r.size,s=[],u=0;u<a;++u)s.push(n(o+u,u));return i(s,(function(t){return e.items=t}))}},{key:"render",value:function(){var e=this,t=this.props,i=t.axis,r=t.length,o=t.type,a=t.useTranslate3d,s=this.state,u=s.from,l=s.itemsPerRow,c=this.renderItems();if("simple"===o)return c;var d={position:"relative"},h={},f=Math.ceil(r/l)*l,p=this.getSpaceBefore(f,h);p&&(d[M[i]]=p,"x"===i&&(d.overflowX="hidden"));var g=this.getSpaceBefore(u,h),v="x"===i?g:0,m="y"===i?g:0,_=a?"translate3d(".concat(v,"px, ").concat(m,"px, 0)"):"translate(".concat(v,"px, ").concat(m,"px)"),y={msTransform:_,WebkitTransform:_,transform:_};return n.default.createElement("div",{style:d,ref:function(t){return e.el=t}},n.default.createElement("div",{style:y},c))}}]),i}(n.Component),w(i,"displayName","ReactList"),w(i,"propTypes",{axis:t.default.oneOf(["x","y"]),initialIndex:t.default.number,itemRenderer:t.default.func,itemSizeEstimator:t.default.func,itemSizeGetter:t.default.func,itemsRenderer:t.default.func,length:t.default.number,minSize:t.default.number,pageSize:t.default.number,scrollParentGetter:t.default.func,scrollParentViewportSizeGetter:t.default.func,threshold:t.default.number,type:t.default.oneOf(["simple","variable","uniform"]),useStaticSize:t.default.bool,useTranslate3d:t.default.bool}),w(i,"defaultProps",{axis:"y",itemRenderer:function(e,t){return n.default.createElement("div",{key:t},e)},itemsRenderer:function(e,t){return n.default.createElement("div",{ref:t},e)},length:0,minSize:1,pageSize:10,scrollParentGetter:P,scrollParentViewportSizeGetter:Z,threshold:100,type:"simple",useStaticSize:!1,useTranslate3d:!1}),r)},void 0===(o="function"===typeof i?i.apply(t,r):i)||(e.exports=o)},36817:function(e,t,n){var i={"./af.js":20707,"./am.js":28106,"./ar-dz.js":28440,"./ar-iq.js":32087,"./ar-kw.js":69545,"./ar-ly.js":28263,"./ar-ma.js":93205,"./ar-sa.js":10681,"./ar-tn.js":58187,"./ar.js":32871,"./az.js":40885,"./be.js":56654,"./bg.js":77737,"./bi.js":69666,"./bm.js":27308,"./bn-bd.js":13561,"./bn.js":95051,"./bo.js":87409,"./br.js":81149,"./bs.js":52362,"./ca.js":30242,"./cs.js":61822,"./cv.js":52289,"./cy.js":65452,"./da.js":27498,"./de-at.js":13578,"./de-ch.js":18534,"./de.js":83467,"./dv.js":69174,"./el.js":90049,"./en-au.js":52875,"./en-ca.js":42854,"./en-gb.js":73200,"./en-ie.js":69027,"./en-il.js":86886,"./en-in.js":52882,"./en-nz.js":85822,"./en-sg.js":47175,"./en-tt.js":45611,"./en.js":22898,"./eo.js":28486,"./es-do.js":48402,"./es-mx.js":70610,"./es-pr.js":38309,"./es-us.js":9842,"./es.js":59110,"./et.js":65104,"./eu.js":95386,"./fa.js":26736,"./fi.js":22614,"./fo.js":99022,"./fr-ca.js":28983,"./fr-ch.js":49347,"./fr.js":43344,"./fy.js":49007,"./ga.js":54199,"./gd.js":97279,"./gl.js":58326,"./gom-latn.js":35618,"./gu.js":72741,"./he.js":26006,"./hi.js":95160,"./hr.js":15417,"./ht.js":15123,"./hu.js":4802,"./hy-am.js":82474,"./id.js":59745,"./is.js":48139,"./it-ch.js":32436,"./it.js":46869,"./ja.js":7942,"./jv.js":24512,"./ka.js":11499,"./kk.js":17700,"./km.js":42661,"./kn.js":4439,"./ko.js":24989,"./ku.js":31316,"./ky.js":88412,"./lb.js":69139,"./lo.js":69052,"./lt.js":41244,"./lv.js":99648,"./me.js":81888,"./mi.js":87700,"./mk.js":14880,"./ml.js":71405,"./mn.js":1792,"./mr.js":62936,"./ms-my.js":4967,"./ms.js":23603,"./mt.js":76408,"./my.js":72460,"./nb.js":27680,"./ne.js":23964,"./nl-be.js":76803,"./nl.js":90792,"./nn.js":23693,"./oc-lnc.js":76136,"./pa-in.js":8565,"./pl.js":86348,"./pt-br.js":86064,"./pt.js":68239,"./rn.js":70233,"./ro.js":9656,"./ru.js":98848,"./rw.js":36411,"./sd.js":14166,"./se.js":71400,"./si.js":11545,"./sk.js":71778,"./sl.js":39552,"./sq.js":61622,"./sr-cyrl.js":64306,"./sr.js":23139,"./ss.js":40359,"./sv-fi.js":80357,"./sv.js":73306,"./sw.js":73237,"./ta.js":77067,"./te.js":15083,"./tet.js":6927,"./tg.js":24567,"./th.js":34419,"./tk.js":54216,"./tl-ph.js":91107,"./tlh.js":25875,"./tr.js":72145,"./tzl.js":92611,"./tzm-latn.js":17715,"./tzm.js":85408,"./ug-cn.js":62948,"./uk.js":42024,"./ur.js":53008,"./uz-latn.js":21413,"./uz.js":63609,"./vi.js":2606,"./x-pseudo.js":14953,"./yo.js":57091,"./zh-cn.js":6432,"./zh-hk.js":35732,"./zh-tw.js":30795,"./zh.js":73972};function r(e){var t=o(e);return n(t)}function o(e){if(!n.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}r.keys=function(){return Object.keys(i)},r.resolve=o,e.exports=r,r.id=36817},26116:function(){},43185:function(){},24960:function(){},26759:function(){},56272:function(){},24654:function(){},30907:function(e,t,n){"use strict";function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}n.d(t,{Z:function(){return i}})},83878:function(e,t,n){"use strict";function i(e){if(Array.isArray(e))return e}n.d(t,{Z:function(){return i}})},97326:function(e,t,n){"use strict";function i(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}n.d(t,{Z:function(){return i}})},15671:function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}n.d(t,{Z:function(){return i}})},5647:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var i=n(89611),r=n(78814);function o(e,t,n){return o=(0,r.Z)()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&(0,i.Z)(o,n.prototype),o},o.apply(null,arguments)}},43144:function(e,t,n){"use strict";function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function r(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}n.d(t,{Z:function(){return r}})},37762:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var i=n(40181);function r(e,t){var n="undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=(0,i.Z)(e))||t&&e&&"number"===typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){u=!0,a=e},f:function(){try{s||null==n.return||n.return()}finally{if(u)throw a}}}}},43668:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var i=n(61120),r=n(78814);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}var a=n(97326);function s(e){var t=(0,r.Z)();return function(){var n,r=(0,i.Z)(e);if(t){var s=(0,i.Z)(this).constructor;n=Reflect.construct(r,arguments,s)}else n=r.apply(this,arguments);return function(e,t){if(t&&("object"===o(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return(0,a.Z)(e)}(this,n)}}},4942:function(e,t,n){"use strict";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,{Z:function(){return i}})},11752:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var i=n(61120);function r(){return r="undefined"!==typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=(0,i.Z)(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},r.apply(this,arguments)}},61120:function(e,t,n){"use strict";function i(e){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},i(e)}n.d(t,{Z:function(){return i}})},60136:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var i=n(89611);function r(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&(0,i.Z)(e,t)}},78814:function(e,t,n){"use strict";function i(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}n.d(t,{Z:function(){return i}})},59199:function(e,t,n){"use strict";function i(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}n.d(t,{Z:function(){return i}})},25267:function(e,t,n){"use strict";function i(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(t,{Z:function(){return i}})},89611:function(e,t,n){"use strict";function i(e,t){return i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},i(e,t)}n.d(t,{Z:function(){return i}})},29439:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var i=n(83878);var r=n(40181),o=n(25267);function a(e,t){return(0,i.Z)(e)||function(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(i=n.next()).done)&&(o.push(i.value),!t||o.length!==t);a=!0);}catch(u){s=!0,r=u}finally{try{a||null==n.return||n.return()}finally{if(s)throw r}}return o}}(e,t)||(0,r.Z)(e,t)||(0,o.Z)()}},84506:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var i=n(83878),r=n(59199),o=n(40181),a=n(25267);function s(e){return(0,i.Z)(e)||(0,r.Z)(e)||(0,o.Z)(e)||(0,a.Z)()}},93433:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var i=n(30907);var r=n(59199),o=n(40181);function a(e){return function(e){if(Array.isArray(e))return(0,i.Z)(e)}(e)||(0,r.Z)(e)||(0,o.Z)(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},40181:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var i=n(30907);function r(e,t){if(e){if("string"===typeof e)return(0,i.Z)(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?(0,i.Z)(e,t):void 0}}},28664:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var i=n(61120),r=n(89611);var o=n(5647);function a(e){var t="function"===typeof Map?new Map:void 0;return a=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!==typeof e)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof t){if(t.has(e))return t.get(e);t.set(e,a)}function a(){return(0,o.Z)(e,arguments,(0,i.Z)(this).constructor)}return a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),(0,r.Z)(a,e)},a(e)}},59833:function(e,t,n){"use strict";n.d(t,{_T:function(){return i}});function i(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]])}return n}Object.create;Object.create;"function"===typeof SuppressedError&&SuppressedError}},t={};function n(i){var r=t[i];if(void 0!==r)return r.exports;var o=t[i]={id:i,loaded:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}n.m=e,n.amdO={},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,i){return n.f[i](e,t),t}),[]))},n.u=function(e){return"static/js/"+e+"."+{245:"6db2db52",248:"736ab237",254:"a91c0bf4",371:"93a1186d",569:"abbf95fd",698:"746436d5",758:"2eb69c4e",805:"d67f39bf",842:"bd21ee9f",939:"4c5d6b68",983:"18afe3d6",1058:"3df06184",1115:"1e053b1d",1234:"165715d4",1474:"80932b06",1522:"5645047d",1593:"571b4393",1602:"86ed3169",1876:"2f512037",1898:"a0e4bd43",2056:"b607e590",2081:"bd41025d",2119:"9f7a5c06",2174:"264d1736",2205:"e7f0b9ab",2291:"d410fd68",2406:"180cb966",2507:"2d9c4b5c",2799:"64ec0194",2862:"29a56bf7",2991:"0db887ba",3001:"b1a75b50",3191:"c6dbae35",3254:"78ce4d35",3258:"248867bd",3451:"774580b7",3771:"0e0bb0f3",3848:"be131fc6",3883:"62a3dee4",4529:"eb0068c3",4546:"6820709e",4663:"cc239299",4712:"4e557974",4731:"6929d6df",4952:"58b99bba",5012:"3afcd232",5210:"6e07cb51",5215:"2d9f2122",5444:"f86e47ff",5517:"a1034916",5646:"ced0e1ae",5695:"d81b70ca",5748:"fa2a8e02",5784:"26f46213",5885:"c5ee8345",6060:"eb821066",6135:"e49ec940",6266:"db91261c",6550:"b5e85913",6559:"41bbd3a3",6708:"5cf2a45c",6892:"3db15360",7168:"ed7798a9",7478:"0bf003df",7548:"8ef3bbc0",7661:"dd104c3c",7664:"9f9f696d",7768:"2adb4751",7953:"eb2256ce",8005:"9c209154",8206:"d2f5a912",8322:"c2b160c6",8335:"9ed734ba",8520:"616efa9f",8546:"79cce20d",8558:"47b3557b",8590:"b8446f1d",8794:"5ad5fb7d",9005:"053ddf1a",9011:"f3cf1dfe",9163:"de992e19",9292:"3ccb6509",9803:"e1567af5"}[e]+".chunk.js"},n.miniCssF=function(e){return"static/css/"+e+".65946fb2.chunk.css"},n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),n.hmd=function(e){return(e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={},t="ydb-embedded-ui:";n.l=function(i,r,o,a){if(e[i])e[i].push(r);else{var s,u;if(void 0!==o)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var d=l[c];if(d.getAttribute("src")==i||d.getAttribute("data-webpack")==t+o){s=d;break}}s||(u=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,n.nc&&s.setAttribute("nonce",n.nc),s.setAttribute("data-webpack",t+o),s.src=i),e[i]=[r];var h=function(t,n){s.onerror=s.onload=null,clearTimeout(f);var r=e[i];if(delete e[i],s.parentNode&&s.parentNode.removeChild(s),r&&r.forEach((function(e){return e(n)})),t)return t(n)},f=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),u&&document.head.appendChild(s)}}}(),n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},n.p="./",function(){if("undefined"!==typeof document){var e=function(e){return new Promise((function(t,i){var r=n.miniCssF(e),o=n.p+r;if(function(e,t){for(var n=document.getElementsByTagName("link"),i=0;i<n.length;i++){var r=(a=n[i]).getAttribute("data-href")||a.getAttribute("href");if("stylesheet"===a.rel&&(r===e||r===t))return a}var o=document.getElementsByTagName("style");for(i=0;i<o.length;i++){var a;if((r=(a=o[i]).getAttribute("data-href"))===e||r===t)return a}}(r,o))return t();!function(e,t,n,i,r){var o=document.createElement("link");o.rel="stylesheet",o.type="text/css",o.onerror=o.onload=function(n){if(o.onerror=o.onload=null,"load"===n.type)i();else{var a=n&&("load"===n.type?"missing":n.type),s=n&&n.target&&n.target.href||t,u=new Error("Loading CSS chunk "+e+" failed.\n("+s+")");u.code="CSS_CHUNK_LOAD_FAILED",u.type=a,u.request=s,o.parentNode.removeChild(o),r(u)}},o.href=t,n?n.parentNode.insertBefore(o,n.nextSibling):document.head.appendChild(o)}(e,o,null,t,i)}))},t={179:0};n.f.miniCss=function(n,i){t[n]?i.push(t[n]):0!==t[n]&&{8546:1}[n]&&i.push(t[n]=e(n).then((function(){t[n]=0}),(function(e){throw delete t[n],e})))}}}(),function(){var e={179:0};n.f.j=function(t,i){var r=n.o(e,t)?e[t]:void 0;if(0!==r)if(r)i.push(r[2]);else{var o=new Promise((function(n,i){r=e[t]=[n,i]}));i.push(r[2]=o);var a=n.p+n.u(t),s=new Error;n.l(a,(function(i){if(n.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var o=i&&("load"===i.type?"missing":i.type),a=i&&i.target&&i.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,r[1](s)}}),"chunk-"+t,t)}};var t=function(t,i){var r,o,a=i[0],s=i[1],u=i[2],l=0;if(a.some((function(t){return 0!==e[t]}))){for(r in s)n.o(s,r)&&(n.m[r]=s[r]);if(u)u(n)}for(t&&t(i);l<a.length;l++)o=a[l],n.o(e,o)&&e[o]&&e[o][0](),e[o]=0},i=self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))}(),function(){"use strict";var e=n(4519),t=n(84453),i=e.createContext(null);var r=function(e){e()},o=function(){return r};var a={notify:function(){},get:function(){return[]}};function s(e,t){var n,i=a;function r(){u.onStateChange&&u.onStateChange()}function s(){n||(n=t?t.addNestedSub(r):e.subscribe(r),i=function(){var e=o(),t=null,n=null;return{clear:function(){t=null,n=null},notify:function(){e((function(){for(var e=t;e;)e.callback(),e=e.next}))},get:function(){for(var e=[],n=t;n;)e.push(n),n=n.next;return e},subscribe:function(e){var i=!0,r=n={callback:e,next:null,prev:n};return r.prev?r.prev.next=r:t=r,function(){i&&null!==t&&(i=!1,r.next?r.next.prev=r.prev:n=r.prev,r.prev?r.prev.next=r.next:t=r.next)}}}}())}var u={addNestedSub:function(e){return s(),i.subscribe(e)},notifyNestedSubs:function(){i.notify()},handleChangeWrapper:r,isSubscribed:function(){return Boolean(n)},trySubscribe:s,tryUnsubscribe:function(){n&&(n(),n=void 0,i.clear(),i=a)},getListeners:function(){return i}};return u}var u="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement?e.useLayoutEffect:e.useEffect;var l=function(t){var n=t.store,r=t.context,o=t.children,a=(0,e.useMemo)((function(){var e=s(n);return e.onStateChange=e.notifyNestedSubs,{store:n,subscription:e}}),[n]),l=(0,e.useMemo)((function(){return n.getState()}),[n]);u((function(){var e=a.subscription;return e.trySubscribe(),l!==n.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[a,l]);var c=r||i;return e.createElement(c.Provider,{value:a},o)};function c(){return c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},c.apply(this,arguments)}function d(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}var h=n(63993),f=n.n(h),p=n(78003),g=["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"],v=["reactReduxForwardedRef"],m=[],_=[null,null];function y(e,t){var n=e[1];return[t.payload,n+1]}function b(e,t,n){u((function(){return e.apply(void 0,t)}),n)}function w(e,t,n,i,r,o,a){e.current=i,t.current=r,n.current=!1,o.current&&(o.current=null,a())}function C(e,t,n,i,r,o,a,s,u,l){if(e){var c=!1,d=null,h=function(){if(!c){var e,n,h=t.getState();try{e=i(h,r.current)}catch(f){n=f,d=f}n||(d=null),e===o.current?a.current||u():(o.current=e,s.current=e,a.current=!0,l({type:"STORE_UPDATED",payload:{error:n}}))}};n.onStateChange=h,n.trySubscribe(),h();return function(){if(c=!0,n.tryUnsubscribe(),n.onStateChange=null,d)throw d}}}var k=function(){return[null,0]};function S(t,n){void 0===n&&(n={});var r=n,o=r.getDisplayName,a=void 0===o?function(e){return"ConnectAdvanced("+e+")"}:o,u=r.methodName,l=void 0===u?"connectAdvanced":u,h=r.renderCountProp,S=void 0===h?void 0:h,x=r.shouldHandleStateChanges,L=void 0===x||x,E=r.storeKey,D=void 0===E?"store":E,N=(r.withRef,r.forwardRef),M=void 0!==N&&N,T=r.context,I=void 0===T?i:T,O=d(r,g),A=I;return function(n){var i=n.displayName||n.name||"Component",r=a(i),o=c({},O,{getDisplayName:a,methodName:l,renderCountProp:S,shouldHandleStateChanges:L,storeKey:D,displayName:r,wrappedComponentName:i,WrappedComponent:n}),u=O.pure;var h=u?e.useMemo:function(e){return e()};function g(i){var r=(0,e.useMemo)((function(){var e=i.reactReduxForwardedRef,t=d(i,v);return[i.context,e,t]}),[i]),a=r[0],u=r[1],l=r[2],f=(0,e.useMemo)((function(){return a&&a.Consumer&&(0,p.isContextConsumer)(e.createElement(a.Consumer,null))?a:A}),[a,A]),g=(0,e.useContext)(f),S=Boolean(i.store)&&Boolean(i.store.getState)&&Boolean(i.store.dispatch);Boolean(g)&&Boolean(g.store);var x=S?i.store:g.store,E=(0,e.useMemo)((function(){return function(e){return t(e.dispatch,o)}(x)}),[x]),D=(0,e.useMemo)((function(){if(!L)return _;var e=s(x,S?null:g.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[x,S,g]),N=D[0],M=D[1],T=(0,e.useMemo)((function(){return S?g:c({},g,{subscription:N})}),[S,g,N]),I=(0,e.useReducer)(y,m,k),O=I[0][0],R=I[1];if(O&&O.error)throw O.error;var P=(0,e.useRef)(),Z=(0,e.useRef)(l),F=(0,e.useRef)(),j=(0,e.useRef)(!1),H=h((function(){return F.current&&l===Z.current?F.current:E(x.getState(),l)}),[x,O,l]);b(w,[Z,P,j,l,H,F,M]),b(C,[L,x,N,E,Z,P,j,F,M,R],[x,N,E]);var B=(0,e.useMemo)((function(){return e.createElement(n,c({},H,{ref:u}))}),[u,n,H]);return(0,e.useMemo)((function(){return L?e.createElement(f.Provider,{value:T},B):B}),[f,B,T])}var x=u?e.memo(g):g;if(x.WrappedComponent=n,x.displayName=g.displayName=r,M){var E=e.forwardRef((function(t,n){return e.createElement(x,c({},t,{reactReduxForwardedRef:n}))}));return E.displayName=r,E.WrappedComponent=n,f()(E,n)}return f()(x,n)}}function x(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function L(e,t){if(x(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var r=0;r<n.length;r++)if(!Object.prototype.hasOwnProperty.call(t,n[r])||!x(e[n[r]],t[n[r]]))return!1;return!0}function E(e){return function(t,n){var i=e(t,n);function r(){return i}return r.dependsOnOwnProps=!1,r}}function D(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}function N(e,t){return function(t,n){n.displayName;var i=function(e,t){return i.dependsOnOwnProps?i.mapToProps(e,t):i.mapToProps(e)};return i.dependsOnOwnProps=!0,i.mapToProps=function(t,n){i.mapToProps=e,i.dependsOnOwnProps=D(e);var r=i(t,n);return"function"===typeof r&&(i.mapToProps=r,i.dependsOnOwnProps=D(r),r=i(t,n)),r},i}}var M=[function(e){return"function"===typeof e?N(e):void 0},function(e){return e?void 0:E((function(e){return{dispatch:e}}))},function(e){return e&&"object"===typeof e?E((function(t){return function(e,t){var n={},i=function(i){var r=e[i];"function"===typeof r&&(n[i]=function(){return t(r.apply(void 0,arguments))})};for(var r in e)i(r);return n}(e,t)})):void 0}];var T=[function(e){return"function"===typeof e?N(e):void 0},function(e){return e?void 0:E((function(){return{}}))}];function I(e,t,n){return c({},n,e,t)}var O=[function(e){return"function"===typeof e?function(e){return function(t,n){n.displayName;var i,r=n.pure,o=n.areMergedPropsEqual,a=!1;return function(t,n,s){var u=e(t,n,s);return a?r&&o(u,i)||(i=u):(a=!0,i=u),i}}}(e):void 0},function(e){return e?void 0:function(){return I}}],A=["initMapStateToProps","initMapDispatchToProps","initMergeProps"];function R(e,t,n,i){return function(r,o){return n(e(r,o),t(i,o),o)}}function P(e,t,n,i,r){var o,a,s,u,l,c=r.areStatesEqual,d=r.areOwnPropsEqual,h=r.areStatePropsEqual,f=!1;function p(r,f){var p=!d(f,a),g=!c(r,o);return o=r,a=f,p&&g?(s=e(o,a),t.dependsOnOwnProps&&(u=t(i,a)),l=n(s,u,a)):p?(e.dependsOnOwnProps&&(s=e(o,a)),t.dependsOnOwnProps&&(u=t(i,a)),l=n(s,u,a)):g?function(){var t=e(o,a),i=!h(t,s);return s=t,i&&(l=n(s,u,a)),l}():l}return function(r,c){return f?p(r,c):(s=e(o=r,a=c),u=t(i,a),l=n(s,u,a),f=!0,l)}}function Z(e,t){var n=t.initMapStateToProps,i=t.initMapDispatchToProps,r=t.initMergeProps,o=d(t,A),a=n(e,o),s=i(e,o),u=r(e,o);return(o.pure?P:R)(a,s,u,e,o)}var F=["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"];function j(e,t,n){for(var i=t.length-1;i>=0;i--){var r=t[i](e);if(r)return r}return function(t,i){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+i.wrappedComponentName+".")}}function H(e,t){return e===t}function B(e){var t=void 0===e?{}:e,n=t.connectHOC,i=void 0===n?S:n,r=t.mapStateToPropsFactories,o=void 0===r?T:r,a=t.mapDispatchToPropsFactories,s=void 0===a?M:a,u=t.mergePropsFactories,l=void 0===u?O:u,h=t.selectorFactory,f=void 0===h?Z:h;return function(e,t,n,r){void 0===r&&(r={});var a=r,u=a.pure,h=void 0===u||u,p=a.areStatesEqual,g=void 0===p?H:p,v=a.areOwnPropsEqual,m=void 0===v?L:v,_=a.areStatePropsEqual,y=void 0===_?L:_,b=a.areMergedPropsEqual,w=void 0===b?L:b,C=d(a,F),k=j(e,o,"mapStateToProps"),S=j(t,s,"mapDispatchToProps"),x=j(n,l,"mergeProps");return i(f,c({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:k,initMapDispatchToProps:S,initMergeProps:x,pure:h,areStatesEqual:g,areOwnPropsEqual:m,areStatePropsEqual:y,areMergedPropsEqual:w},C))}}var z=B();function W(){return(0,e.useContext)(i)}function V(t){void 0===t&&(t=i);var n=t===i?W:function(){return(0,e.useContext)(t)};return function(){return n().store}}var Y=V();function U(e){void 0===e&&(e=i);var t=e===i?Y:V(e);return function(){return t().dispatch}}var K=U(),q=function(e,t){return e===t};function G(t){void 0===t&&(t=i);var n=t===i?W:function(){return(0,e.useContext)(t)};return function(t,i){void 0===i&&(i=q);var r=n(),o=function(t,n,i,r){var o,a=(0,e.useReducer)((function(e){return e+1}),0)[1],l=(0,e.useMemo)((function(){return s(i,r)}),[i,r]),c=(0,e.useRef)(),d=(0,e.useRef)(),h=(0,e.useRef)(),f=(0,e.useRef)(),p=i.getState();try{if(t!==d.current||p!==h.current||c.current){var g=t(p);o=void 0!==f.current&&n(g,f.current)?f.current:g}else o=f.current}catch(v){throw c.current&&(v.message+="\nThe error may be correlated with this previous error:\n"+c.current.stack+"\n\n"),v}return u((function(){d.current=t,h.current=p,f.current=o,c.current=void 0})),u((function(){function e(){try{var e=i.getState();if(e===h.current)return;var t=d.current(e);if(n(t,f.current))return;f.current=t,h.current=e}catch(v){c.current=v}a()}return l.onStateChange=e,l.trySubscribe(),e(),function(){return l.tryUnsubscribe()}}),[i,l]),o}(t,i,r.store,r.subscription);return(0,e.useDebugValue)(o),o}}var $,Q=G();$=t.unstable_batchedUpdates,r=$;var X=n(15671),J=n(43144),ee=n(60136),te=n(43668),ne=n(29439),ie=n(89611);function re(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,(0,ie.Z)(e,t)}function oe(e){return"/"===e.charAt(0)}function ae(e,t){for(var n=t,i=n+1,r=e.length;i<r;n+=1,i+=1)e[n]=e[i];e.pop()}var se=function(e,t){void 0===t&&(t="");var n,i=e&&e.split("/")||[],r=t&&t.split("/")||[],o=e&&oe(e),a=t&&oe(t),s=o||a;if(e&&oe(e)?r=i:i.length&&(r.pop(),r=r.concat(i)),!r.length)return"/";if(r.length){var u=r[r.length-1];n="."===u||".."===u||""===u}else n=!1;for(var l=0,c=r.length;c>=0;c--){var d=r[c];"."===d?ae(r,c):".."===d?(ae(r,c),l++):l&&(ae(r,c),l--)}if(!s)for(;l--;l)r.unshift("..");!s||""===r[0]||r[0]&&oe(r[0])||r.unshift("");var h=r.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function ue(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var le=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,i){return e(t,n[i])}));if("object"===typeof t||"object"===typeof n){var i=ue(t),r=ue(n);return i!==t||r!==n?e(i,r):Object.keys(Object.assign({},t,n)).every((function(i){return e(t[i],n[i])}))}return!1},ce=!0,de="Invariant failed";function he(e,t){if(!e){if(ce)throw new Error(de);var n="function"===typeof t?t():t;throw new Error(n?de+": "+n:de)}}function fe(e){return"/"===e.charAt(0)?e:"/"+e}function pe(e){return"/"===e.charAt(0)?e.substr(1):e}function ge(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function ve(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function me(e){var t=e.pathname,n=e.search,i=e.hash,r=t||"/";return n&&"?"!==n&&(r+="?"===n.charAt(0)?n:"?"+n),i&&"#"!==i&&(r+="#"===i.charAt(0)?i:"#"+i),r}function _e(e,t,n,i){var r;"string"===typeof e?(r=function(e){var t=e||"/",n="",i="",r=t.indexOf("#");-1!==r&&(i=t.substr(r),t=t.substr(0,r));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===i?"":i}}(e),r.state=t):(void 0===(r=c({},e)).pathname&&(r.pathname=""),r.search?"?"!==r.search.charAt(0)&&(r.search="?"+r.search):r.search="",r.hash?"#"!==r.hash.charAt(0)&&(r.hash="#"+r.hash):r.hash="",void 0!==t&&void 0===r.state&&(r.state=t));try{r.pathname=decodeURI(r.pathname)}catch(o){throw o instanceof URIError?new URIError('Pathname "'+r.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):o}return n&&(r.key=n),i?r.pathname?"/"!==r.pathname.charAt(0)&&(r.pathname=se(r.pathname,i.pathname)):r.pathname=i.pathname:r.pathname||(r.pathname="/"),r}function ye(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,i,r){if(null!=e){var o="function"===typeof e?e(t,n):e;"string"===typeof o?"function"===typeof i?i(o,r):r(!0):r(!1!==o)}else r(!0)},appendListener:function(e){var n=!0;function i(){n&&e.apply(void 0,arguments)}return t.push(i),function(){n=!1,t=t.filter((function(e){return e!==i}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),i=0;i<e;i++)n[i]=arguments[i];t.forEach((function(e){return e.apply(void 0,n)}))}}}var be=!("undefined"===typeof window||!window.document||!window.document.createElement);function we(e,t){t(window.confirm(e))}var Ce="popstate",ke="hashchange";function Se(){try{return window.history.state||{}}catch(e){return{}}}function xe(e){void 0===e&&(e={}),be||he(!1);var t=window.history,n=function(){var e=window.navigator.userAgent;return(-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history}(),i=!(-1===window.navigator.userAgent.indexOf("Trident")),r=e,o=r.forceRefresh,a=void 0!==o&&o,s=r.getUserConfirmation,u=void 0===s?we:s,l=r.keyLength,d=void 0===l?6:l,h=e.basename?ve(fe(e.basename)):"";function f(e){var t=e||{},n=t.key,i=t.state,r=window.location,o=r.pathname+r.search+r.hash;return h&&(o=ge(o,h)),_e(o,i,n)}function p(){return Math.random().toString(36).substr(2,d)}var g=ye();function v(e){c(D,e),D.length=t.length,g.notifyListeners(D.location,D.action)}function m(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||b(f(e.state))}function _(){b(f(Se()))}var y=!1;function b(e){if(y)y=!1,v();else{g.confirmTransitionTo(e,"POP",u,(function(t){t?v({action:"POP",location:e}):function(e){var t=D.location,n=C.indexOf(t.key);-1===n&&(n=0);var i=C.indexOf(e.key);-1===i&&(i=0);var r=n-i;r&&(y=!0,S(r))}(e)}))}}var w=f(Se()),C=[w.key];function k(e){return h+me(e)}function S(e){t.go(e)}var x=0;function L(e){1===(x+=e)&&1===e?(window.addEventListener(Ce,m),i&&window.addEventListener(ke,_)):0===x&&(window.removeEventListener(Ce,m),i&&window.removeEventListener(ke,_))}var E=!1;var D={length:t.length,action:"POP",location:w,createHref:k,push:function(e,i){var r="PUSH",o=_e(e,i,p(),D.location);g.confirmTransitionTo(o,r,u,(function(e){if(e){var i=k(o),s=o.key,u=o.state;if(n)if(t.pushState({key:s,state:u},null,i),a)window.location.href=i;else{var l=C.indexOf(D.location.key),c=C.slice(0,l+1);c.push(o.key),C=c,v({action:r,location:o})}else window.location.href=i}}))},replace:function(e,i){var r="REPLACE",o=_e(e,i,p(),D.location);g.confirmTransitionTo(o,r,u,(function(e){if(e){var i=k(o),s=o.key,u=o.state;if(n)if(t.replaceState({key:s,state:u},null,i),a)window.location.replace(i);else{var l=C.indexOf(D.location.key);-1!==l&&(C[l]=o.key),v({action:r,location:o})}else window.location.replace(i)}}))},go:S,goBack:function(){S(-1)},goForward:function(){S(1)},block:function(e){void 0===e&&(e=!1);var t=g.setPrompt(e);return E||(L(1),E=!0),function(){return E&&(E=!1,L(-1)),t()}},listen:function(e){var t=g.appendListener(e);return L(1),function(){L(-1),t()}}};return D}var Le="hashchange",Ee={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+pe(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:pe,decodePath:fe},slash:{encodePath:fe,decodePath:fe}};function De(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function Ne(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function Me(e){window.location.replace(De(window.location.href)+"#"+e)}function Te(e){void 0===e&&{},be||he(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),i=n.getUserConfirmation,r=void 0===i?we:i,o=n.hashType,a=void 0===o?"slash":o,s=e.basename?ve(fe(e.basename)):"",u=Ee[a],l=u.encodePath,d=u.decodePath;function h(){var e=d(Ne());return s&&ge(e,s),_e(e)}var f=ye();function p(e){c(L,e),L.length=t.length,f.notifyListeners(L.location,L.action)}var g=!1,v=null;function m(){var e=Ne(),t=l(e);if(e!==t)Me(t);else{var n=h(),i=L.location;if(!g&&function(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash}(i,n))return;if(v===me(n))return;null,function(e){if(g)!1,p();else{var t="POP";f.confirmTransitionTo(e,t,r,(function(n){n?p({action:t,location:e}):function(e){var t=L.location,n=w.lastIndexOf(me(t));-1===n&&0;var i=w.lastIndexOf(me(e));-1===i&&0;var r=n-i;r&&(!0,C(r))}(e)}))}}(n)}}var _=Ne(),y=l(_);_!==y&&Me(y);var b=h(),w=[me(b)];function C(e){t.go(e)}var k=0;function S(e){1===(k+=e)&&1===e?window.addEventListener(Le,m):0===k&&window.removeEventListener(Le,m)}var x=!1;var L={length:t.length,action:"POP",location:b,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&De(window.location.href),n+"#"+l(s+me(e))},push:function(e,t){var n="PUSH",i=_e(e,void 0,void 0,L.location);f.confirmTransitionTo(i,n,r,(function(e){if(e){var t=me(i),r=l(s+t);if(Ne()!==r){t,function(e){window.location.hash=e}(r);var o=w.lastIndexOf(me(L.location)),a=w.slice(0,o+1);a.push(t),a,p({action:n,location:i})}else p()}}))},replace:function(e,t){var n="REPLACE",i=_e(e,void 0,void 0,L.location);f.confirmTransitionTo(i,n,r,(function(e){if(e){var t=me(i),r=l(s+t);Ne()!==r&&(t,Me(r));var o=w.indexOf(me(L.location));-1!==o&&(w[o]=t),p({action:n,location:i})}}))},go:C,goBack:function(){C(-1)},goForward:function(){C(1)},block:function(e){void 0===e&&!1;var t=f.setPrompt(e);return x||(S(1),!0),function(){return x&&(!1,S(-1)),t()}},listen:function(e){var t=f.appendListener(e);return S(1),function(){S(-1),t()}}};return L}function Ie(e,t,n){return Math.min(Math.max(e,t),n)}var Oe=n(91386),Ae=n.n(Oe),Re=1073741823,Pe="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:{};var Ze=e.createContext||function(t,n){var i,r,o="__create-react-context-"+function(){var e="__global_unique_id__";return Pe[e]=(Pe[e]||0)+1}()+"__",a=function(e){function t(){var t;return(t=e.apply(this,arguments)||this).emitter=function(e){var t=[];return{on:function(e){t.push(e)},off:function(e){t=t.filter((function(t){return t!==e}))},get:function(){return e},set:function(n,i){e=n,t.forEach((function(t){return t(e,i)}))}}}(t.props.value),t}re(t,e);var i=t.prototype;return i.getChildContext=function(){var e;return(e={})[o]=this.emitter,e},i.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var t,i=this.props.value,r=e.value;((o=i)===(a=r)?0!==o||1/o===1/a:o!==o&&a!==a)?t=0:(t="function"===typeof n?n(i,r):Re,0!==(t|=0)&&this.emitter.set(e.value,t))}var o,a},i.render=function(){return this.props.children},t}(e.Component);a.childContextTypes=((i={})[o]=Ae().object.isRequired,i);var s=function(e){function n(){var t;return(t=e.apply(this,arguments)||this).state={value:t.getValue()},t.onUpdate=function(e,n){0!==((0|t.observedBits)&n)&&t.setState({value:t.getValue()})},t}re(n,e);var i=n.prototype;return i.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=void 0===t||null===t?Re:t},i.componentDidMount=function(){this.context[o]&&this.context[o].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=void 0===e||null===e?Re:e},i.componentWillUnmount=function(){this.context[o]&&this.context[o].off(this.onUpdate)},i.getValue=function(){return this.context[o]?this.context[o].get():t},i.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(e.Component);return s.contextTypes=((r={})[o]=Ae().object,r),{Provider:a,Consumer:s}},Fe=Ze,je=n(39801),He=n.n(je),Be=(n(29685),function(e){var t=Fe();return t.displayName=e,t}),ze=Be("Router-History"),We=Be("Router"),Ve=function(t){function n(e){var n;return(n=t.call(this,e)||this).state={location:e.history.location},n._isMounted=!1,n._pendingLocation=null,e.staticContext||(n.unlisten=e.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}re(n,t),n.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var i=n.prototype;return i.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},i.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},i.render=function(){return e.createElement(We.Provider,{value:{history:this.props.history,location:this.state.location,match:n.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},e.createElement(ze.Provider,{children:this.props.children||null,value:this.props.history}))},n}(e.Component);e.Component;var Ye=function(e){function t(){return e.apply(this,arguments)||this}re(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(e.Component);var Ue={},Ke=1e4,qe=0;function Ge(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(Ue[e])return Ue[e];var t=He().compile(e);return qe<Ke&&(Ue[e]=t,qe++),t}(e)(t,{pretty:!0})}function $e(t){var n=t.computedMatch,i=t.to,r=t.push,o=void 0!==r&&r;return e.createElement(We.Consumer,null,(function(t){t||he(!1);var r=t.history,a=t.staticContext,s=o?r.push:r.replace,u=_e(n?"string"===typeof i?Ge(i,n.params):c({},i,{pathname:Ge(i.pathname,n.params)}):i);return a?(s(u),null):e.createElement(Ye,{onMount:function(){s(u)},onUpdate:function(e,t){var n=_e(t.to);(function(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&le(e.state,t.state)})(n,c({},u,{key:n.key}))||s(u)},to:i})}))}var Qe={},Xe=1e4,Je=0;function et(e,t){void 0===t&&(t={}),("string"===typeof t||Array.isArray(t))&&(t={path:t});var n=t,i=n.path,r=n.exact,o=void 0!==r&&r,a=n.strict,s=void 0!==a&&a,u=n.sensitive,l=void 0!==u&&u;return[].concat(i).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var i=function(e,t){var n=""+t.end+t.strict+t.sensitive,i=Qe[n]||(Qe[n]={});if(i[e])return i[e];var r=[],o={regexp:He()(e,r,t),keys:r};return Je<Xe&&(i[e]=o,Je++),o}(n,{end:o,strict:s,sensitive:l}),r=i.regexp,a=i.keys,u=r.exec(e);if(!u)return null;var c=u[0],d=u.slice(1),h=e===c;return o&&!h?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:h,params:a.reduce((function(e,t,n){return e[t.name]=d[n],e}),{})}}),null)}var tt=function(t){function n(){return t.apply(this,arguments)||this}return re(n,t),n.prototype.render=function(){var t=this;return e.createElement(We.Consumer,null,(function(n){n||he(!1);var i=t.props.location||n.location,r=c({},n,{location:i,match:t.props.computedMatch?t.props.computedMatch:t.props.path?et(i.pathname,t.props):n.match}),o=t.props,a=o.children,s=o.component,u=o.render;return Array.isArray(a)&&function(t){return 0===e.Children.count(t)}(a)&&(a=null),e.createElement(We.Provider,{value:r},r.match?a?"function"===typeof a?a(r):a:s?e.createElement(s,r):u?u(r):null:"function"===typeof a?a(r):null)}))},n}(e.Component);function nt(e){return"/"===e.charAt(0)?e:"/"+e}function it(e,t){if(!e)return t;var n=nt(e);return 0!==t.pathname.indexOf(n)?t:c({},t,{pathname:t.pathname.substr(n.length)})}function rt(e){return"string"===typeof e?e:me(e)}function ot(e){return function(){he(!1)}}function at(){}e.Component;var st=function(t){function n(){return t.apply(this,arguments)||this}return re(n,t),n.prototype.render=function(){var t=this;return e.createElement(We.Consumer,null,(function(n){n||he(!1);var i,r,o=t.props.location||n.location;return e.Children.forEach(t.props.children,(function(t){if(null==r&&e.isValidElement(t)){i=t;var a=t.props.path||t.props.from;r=a?et(o.pathname,c({},t.props,{path:a})):n.match}})),r?e.cloneElement(i,{location:o,computedMatch:r}):null}))},n}(e.Component);var ut=e.useContext;function lt(){return ut(ze)}function ct(){return ut(We).location}function dt(e){var t=ct(),n=ut(We).match;return e?et(t.pathname,e):n}var ht=n(78243),ft=n(67119),pt="system",gt="light",vt="dark",mt=([].concat(["light","light-hc"],["dark","dark-hc"]),"root"),_t={theme:pt,themeValue:gt},yt=e.createContext(_t);yt.displayName="ThemeContext";var bt=e.createContext(void 0);bt.displayName="ThemeSettingsContext";var wt=n(4942),Ct=n(93433),kt=(0,ft.Ge)(mt),St=(0,ft.B_)(mt),xt=kt(),Lt=St(),Et={"native-scrollbar":!1};function Dt(e,t,n){var i=document.body;(i.classList.contains(xt)||i.classList.add(xt),i.classList.contains(Lt)||i.classList.add(Lt),n)&&n.split(" ").forEach((function(e){e&&!i.classList.contains(e)&&i.classList.add(e)}));(0,Ct.Z)(i.classList).forEach((function(e){e.startsWith((0,ft.Ui)(kt({theme:!0})))&&i.classList.remove(e),e.startsWith((0,ft.Ui)(St({theme:!0})))&&i.classList.remove(e)})),i.classList.add((0,ft.Ui)(kt({theme:e}))),i.classList.add((0,ft.Ui)(St({theme:e})));for(var r=0,o=Object.entries(Object.assign(Object.assign({},Et),t));r<o.length;r++){var a=(0,ne.Z)(o[r],2),s=a[0],u=a[1];i.classList.toggle((0,ft.Ui)(kt((0,wt.Z)({},s,!0))),u),i.classList.toggle((0,ft.Ui)(St((0,wt.Z)({},s,!0))),u)}}var Nt=function(){return window.matchMedia("(prefers-color-scheme: dark)")};function Mt(){var t=e.useState("object"===typeof window&&Nt().matches?"dark":"light"),n=(0,ne.Z)(t,2),i=n[0],r=n[1];return e.useEffect((function(){var e=function(e,t){var n="function"!==typeof e.addEventListener;return n?e.addListener(t):e.addEventListener("change",t),function(){n?e.removeListener(t):e.removeEventListener("change",t)}}(Nt(),(function(e){r(e.matches?"dark":"light")}));return function(){return e()}}),[]),i}var Tt=(0,ft.Ge)(mt),It=(0,ft.B_)(mt);function Ot(t){var n=t.theme,i=void 0===n?pt:n,r=t.systemLightTheme,o=void 0===r?gt:r,a=t.systemDarkTheme,s=void 0===a?vt:a,u=t.nativeScrollbar,l=void 0!==u&&u,c=t.scoped,d=void 0!==c&&c,h=t.rootClassName,f=void 0===h?"":h,p=t.children,g="light"===Mt()?o:s,v="system"===i?g:i;e.useEffect((function(){d||Dt(v,{"native-scrollbar":l},f)}),[l,v,d,f]);var m=e.useMemo((function(){return{theme:i,themeValue:v}}),[i,v]),_=e.useMemo((function(){return{systemLightTheme:o,systemDarkTheme:s}}),[o,s]);return e.createElement(yt.Provider,{value:m},e.createElement(bt.Provider,{value:_},d?e.createElement("div",{className:It({theme:v,"native-scrollbar":l},[Tt({theme:v,"native-scrollbar":l}),f])},p):p))}function At(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Rt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?At(Object(n),!0).forEach((function(t){(0,wt.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):At(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ot.displayName="ThemeProvider";var Pt=n(22637),Zt=n.n(Pt),Ft=n(2137),jt=n(20061),Ht=n.n(jt),Bt=n(83077),zt=function(){return Math.random().toString(36).substring(7).split("").join(".")},Wt={INIT:"@@redux/INIT"+zt(),REPLACE:"@@redux/REPLACE"+zt(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+zt()}};function Vt(e){if("object"!==typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Yt(e,t,n){var i;if("function"===typeof t&&"function"===typeof n||"function"===typeof n&&"function"===typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function");if("function"===typeof t&&"undefined"===typeof n&&(n=t,t=void 0),"undefined"!==typeof n){if("function"!==typeof n)throw new Error("Expected the enhancer to be a function.");return n(Yt)(e,t)}if("function"!==typeof e)throw new Error("Expected the reducer to be a function.");var r=e,o=t,a=[],s=a,u=!1;function l(){s===a&&(s=a.slice())}function c(){if(u)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return o}function d(e){if("function"!==typeof e)throw new Error("Expected the listener to be a function.");if(u)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var t=!0;return l(),s.push(e),function(){if(t){if(u)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");t=!1,l();var n=s.indexOf(e);s.splice(n,1)}}}function h(e){if(!Vt(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if("undefined"===typeof e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(u)throw new Error("Reducers may not dispatch actions.");try{u=!0,o=r(o,e)}finally{u=!1}for(var t=a=s,n=0;n<t.length;n++){(0,t[n])()}return e}return h({type:Wt.INIT}),(i={dispatch:h,subscribe:d,getState:c,replaceReducer:function(e){if("function"!==typeof e)throw new Error("Expected the nextReducer to be a function.");r=e,h({type:Wt.REPLACE})}})[Bt.Z]=function(){var e,t=d;return(e={subscribe:function(e){if("object"!==typeof e||null===e)throw new TypeError("Expected the observer to be an object.");function n(){e.next&&e.next(c())}return n(),{unsubscribe:t(n)}}})[Bt.Z]=function(){return this},e},i}function Ut(e,t){var n=t&&t.type;return"Given "+(n&&'action "'+String(n)+'"'||"an action")+', reducer "'+e+'" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function Kt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qt(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce((function(e,t){return function(){return e(t.apply(void 0,arguments))}}))}function Gt(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){return function(){var n=e.apply(void 0,arguments),i=function(){throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},r={getState:n.getState,dispatch:function(){return i.apply(void 0,arguments)}},o=t.map((function(e){return e(r)}));return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},i=Object.keys(n);"function"===typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),i.forEach((function(t){Kt(e,t,n[t])}))}return e}({},n,{dispatch:i=qt.apply(void 0,o)(n.dispatch)})}}}function $t(e){return function(t){var n=t.dispatch,i=t.getState;return function(t){return function(r){return"function"===typeof r?r(n,i,e):t(r)}}}}var Qt=$t();Qt.withExtraArgument=$t;var Xt=Qt,Jt=n(22458),en=n(33119),tn=function(e,t){if(t){if(window.custom_backend)return{basename:"/",backend:en.parse(e,!0).query.backend||window.custom_backend};var n=window.location.pathname.match(/.*(?=\/monitoring)/)||[],i=Boolean(n.length)&&n[0];return{basename:[i,"monitoring"].filter(Boolean).join("/"),backend:i||""}}var r=en.parse(e,!0).query;return{basename:"/",backend:r.backend,clusterName:r.clusterName}};function nn(e,t){if(null==e)return{};var n,i,r=d(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var rn=n(32048),on=n.n(rn),an=n(77847),sn=n(85292),un=n(34737),ln=n(8606);function cn(e,t,n,i,r,o,a){try{var s=e[o](a),u=s.value}catch(l){return void n(l)}s.done?t(u):Promise.resolve(u).then(i,r)}function dn(e){return function(){var t=this,n=arguments;return new Promise((function(i,r){var o=e.apply(t,n);function a(e){cn(o,i,r,a,s,"next",e)}function s(e){cn(o,i,r,a,s,"throw",e)}a(void 0)}))}}var hn=n(87757),fn=n.n(hn),pn=n(40794),gn=n.n(pn),vn=n(56787),mn=n.n(vn),_n=function(){function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,X.Z)(this,e),this.setApiEndpoint=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";"undefined"!==typeof location&&(e=e.replace("%CURRENT_HOST%",location.host)),t.apiEndpoint=e},this.setCSRFToken=function(e){t._axios.defaults.headers.post["X-CSRF-Token"]=e,t._axios.defaults.headers.put["X-CSRF-Token"]=e,t._axios.defaults.headers.delete["X-CSRF-Token"]=e},this.setDefaultHeader=function(e){var n=e.name,i=e.value,r=e.methods,o=t._axios.defaults.headers;Array.isArray(r)?r.forEach((function(e){o[e]&&(o[e][n]=i)})):o.common[n]=i},this.apiPath=function(e){return"".concat(t.apiEndpoint).concat(e)};var i=n.config,r=void 0===i?{}:i,o=n.apiEndpoint,a=void 0===o?"/api":o,s=n.collector,u=void 0===s?{}:s,l=Object.assign({xsrfCookieName:"",timeout:e.DEFAULT_TIMEOUT,withCredentials:!0},r);this._axios=mn().create(l),this._axios.defaults.headers=gn()(this._axios.defaults.headers),this.requestTokens={},this.setApiEndpoint(a),this.collectorSettings=u,this.collector={errors:[],requests:[]}}return(0,J.Z)(e,[{key:"collectRequest",value:function(e){var t=e.method,n=e.url,i=e.data,r=e.requestStart,o=e.response,a=e.responseError,s=e.error,u=void 0!==s&&s,l=e.cancelled,c=void 0!==l&&l,d=this.collectorSettings,h=d.collectErrors,f=d.collectRequests;if(h||f){var p=o&&o.request||{},g=p.responseText,v=void 0===g?"":g,m=p.responseURL,_=void 0===m?n:m,y=u&&a instanceof Error?a.message:"",b={method:t,url:_,time:{start:r,end:Number(new Date)},status:o&&o.status,size:v.length,requestData:i&&JSON.stringify(i,null,2)||"",responseData:o&&o.data&&JSON.stringify(o.data,null,2)||y,isError:u,isCancelled:c};h&&u&&(this.collector.errors=[].concat((0,Ct.Z)(this.collector.errors),[b]).slice(-h)),f&&(this.collector.requests=[].concat((0,Ct.Z)(this.collector.requests),[b]).slice(-f))}}},{key:"getCollectedRequests",value:function(){return{errors:(0,Ct.Z)(this.collector.errors),requests:(0,Ct.Z)(this.collector.requests)}}},{key:"request",value:function(){var e=dn(fn().mark((function e(t){var n,i,r,o,a,s,u,l,c,d,h,f,p,g,v,m,_,y,b,w,C=this;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.method,i=t.url,r=t.data,o=void 0===r?null:r,a=t.params,s=t.options,u=void 0===s?{}:s,l=t.retries,c=void 0===l?0:l,d=u.requestConfig||{},h=u.concurrentId,f=u.collectRequest,p=void 0===f||f,g=u.timeout,v=u.headers,m=u.onDownloadProgress,h&&(this.cancelRequest(h),d.cancelToken=this.createRequestToken(h)),v&&(d.headers=v),"undefined"!==typeof g&&(d.timeout=g),_=Number(new Date),y={method:n,url:i,data:o,params:a,onDownloadProgress:m},e.prev=8,e.next=11,this._axios.request(Object.assign(Object.assign({},d),y));case 11:return b=e.sent,this.clearRequestToken(h),p&&this.collectRequest(Object.assign(Object.assign({},y),{requestStart:_,response:b})),e.abrupt("return",b.data);case 17:if(e.prev=17,e.t0=e.catch(8),!mn().isCancel(e.t0)){e.next=23;break}throw{isCancelled:!0,error:e.t0};case 23:this.clearRequestToken(h);case 24:return w=e.t0.response?e.t0.response:"function"===typeof e.t0.toJSON?e.t0.toJSON():e.t0,p&&this.collectRequest(Object.assign(Object.assign({},y),{requestStart:_,response:w,error:!0,cancelled:mn().isCancel(e.t0),responseError:e.t0})),e.abrupt("return",this.handleRequestError(w,(function(){return C.request(Object.assign(Object.assign({},t),{retries:c+1}))}),c,new Error(e.t0 instanceof Error?e.t0.message:"Unknown error")));case 27:case"end":return e.stop()}}),e,this,[[8,17]])})));return function(t){return e.apply(this,arguments)}}()},{key:"cancelRequest",value:function(e){e&&this.requestTokens[e]&&this.requestTokens[e].cancel("Concurrent request")}},{key:"get",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.request({method:"GET",url:e,params:t,options:n})}},{key:"post",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.request({method:"POST",url:e,data:t,params:n,options:i})}},{key:"put",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.request({method:"PUT",url:e,data:t,params:n,options:i})}},{key:"patch",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.request({method:"PATCH",url:e,data:t,params:n,options:i})}},{key:"delete",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.request({method:"DELETE",url:e,data:t,params:n,options:i})}},{key:"head",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.request({method:"HEAD",url:e,params:t,options:n})}},{key:"handleRequestError",value:function(e){throw e}},{key:"createRequestToken",value:function(e){if(e){var t=mn().CancelToken.source();return this.requestTokens[e]=t,t.token}}},{key:"clearRequestToken",value:function(e){e&&this.requestTokens[e]&&delete this.requestTokens[e]}}]),e}();_n.DEFAULT_TIMEOUT=6e4;var yn=1,bn=-1,wn="fixed",Cn="moving",kn="__index__",Sn=function(e){return e?(arguments.length>1&&void 0!==arguments[1]?arguments[1]:bn)===bn?"-"+e:e:""},xn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return new RegExp((0,rn.escapeRegExp)(e),"i")},Ln=["visibleEntities","type","tablets","sortOrder","sortValue"],En=["sortOrder","sortValue"],Dn=["tenant","visibleEntities","nodeId","sortOrder","sortValue"],Nn=["schema"],Mn={withCredentials:!window.custom_backend},Tn=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"getPath",value:function(e){return"".concat(ng).concat(e)}},{key:"getClusterInfo",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).concurrentId;return this.get(this.getPath("/viewer/json/cluster"),{name:e,tablets:!0},{concurrentId:t||"getClusterInfo"})}},{key:"getClusterNodes",value:function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).concurrentId;return this.get(this.getPath("/viewer/json/sysinfo"),{},{concurrentId:e||"getClusterNodes"})}},{key:"getNodeInfo",value:function(e){return this.get(this.getPath("/viewer/json/sysinfo?enums=true"),{node_id:e})}},{key:"getTenants",value:function(e){return this.get(this.getPath("/viewer/json/tenantinfo"),{tablets:1,storage:1,cluster_name:e})}},{key:"getTenantInfo",value:function(e){var t=e.path,n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).concurrentId;return this.get(this.getPath("/viewer/json/tenantinfo"),{path:t,tablets:!0,storage:!0},{concurrentId:n||"getTenantInfo|".concat(t)})}},{key:"getNodes",value:function(e){var t=e.visibleEntities,n=e.type,i=void 0===n?"any":n,r=e.tablets,o=void 0===r||r,a=e.sortOrder,s=e.sortValue,u=nn(e,Ln),l=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).concurrentId,c=Sn(s,a);return this.get(this.getPath("/viewer/json/nodes?enums=true"),Rt({with:t,type:i,tablets:o,sort:c},u),{concurrentId:l})}},{key:"getCompute",value:function(e){var t=e.sortOrder,n=e.sortValue,i=nn(e,En),r=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).concurrentId,o=Sn(n,t);return this.get(this.getPath("/viewer/json/compute?enums=true"),Rt({sort:o},i),{concurrentId:r})}},{key:"getStorageInfo",value:function(e){var t=e.tenant,n=e.visibleEntities,i=e.nodeId,r=e.sortOrder,o=e.sortValue,a=nn(e,Dn),s=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).concurrentId,u=Sn(o,r);return this.get(this.getPath("/viewer/json/storage?enums=true"),Rt({tenant:t,node_id:i,with:n,sort:u},a),{concurrentId:s})}},{key:"getPdiskInfo",value:function(e,t){return this.get(this.getPath("/viewer/json/pdiskinfo?enums=true"),{filter:"(NodeId=".concat(e).concat(t?";PDiskId=".concat(t):"",")")})}},{key:"getVdiskInfo",value:function(e){var t=e.vdiskId,n=e.pdiskId,i=e.nodeId;return this.get(this.getPath("/viewer/json/vdiskinfo?enums=true"),{filter:"(VDiskId=".concat(null!==t&&void 0!==t?t:"",";PDiskId=").concat(null!==n&&void 0!==n?n:"",";NodeId=").concat(null!==i&&void 0!==i?i:"",")")})}},{key:"getGroupInfo",value:function(e){return this.get(this.getPath("/viewer/json/storage?enums=true"),{group_id:e})}},{key:"getHostInfo",value:function(){return this.get(this.getPath("/viewer/json/sysinfo?node_id=.&enums=true"),{})}},{key:"getTabletsInfo",value:function(e){var t=e.nodes,n=void 0===t?[]:t,i=e.path,r=n.length>0&&"(NodeId=[".concat(n.join(","),"])");return this.get(this.getPath("/viewer/json/tabletinfo"),{filter:r,path:i,enums:!0})}},{key:"getSchema",value:function(e){var t=e.path,n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).concurrentId;return this.get(this.getPath("/viewer/json/describe"),{path:t,enums:!0,backup:!1,private:!0,partition_config:!0,partition_stats:!0,partitioning_info:!0,subs:1},{concurrentId:n||"getSchema|".concat(t)})}},{key:"getDescribe",value:function(e){var t=e.path,n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).concurrentId;return this.get(this.getPath("/viewer/json/describe"),{path:t,enums:!0,partition_stats:!0,subs:0},{concurrentId:n||"getDescribe|".concat(t)})}},{key:"getSchemaAcl",value:function(e){var t=e.path;return this.get(this.getPath("/viewer/json/acl"),{path:t},{concurrentId:"getSchemaAcl"})}},{key:"getHeatmapData",value:function(e){var t=e.path;return this.get(this.getPath("/viewer/json/describe"),{path:t,enums:!0,backup:!1,children:!1,partition_config:!1,partition_stats:!0})}},{key:"getNetwork",value:function(e){return this.get(this.getPath("/viewer/json/netinfo"),{enums:!0,path:e})}},{key:"getTopic",value:function(e){var t=e.path,n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).concurrentId;return this.get(this.getPath("/viewer/json/describe_topic"),{enums:!0,include_stats:!0,path:t},{concurrentId:n||"getTopic"})}},{key:"getConsumer",value:function(e){var t=e.path,n=e.consumer,i=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).concurrentId;return this.get(this.getPath("/viewer/json/describe_consumer"),{enums:!0,include_stats:!0,path:t,consumer:n},{concurrentId:i||"getConsumer"})}},{key:"getPoolInfo",value:function(e){return this.get(this.getPath("/viewer/json/storage"),{pool:e,enums:!0})}},{key:"getTablet",value:function(e){var t=e.id;return this.get(this.getPath("/viewer/json/tabletinfo?filter=(TabletId=".concat(t,")")),{enums:!0})}},{key:"getTabletHistory",value:function(e){var t=e.id;return this.get(this.getPath("/viewer/json/tabletinfo?filter=(TabletId=".concat(t,")")),{enums:!0,merge:!1})}},{key:"getNodesList",value:function(){return this.get(this.getPath("/viewer/json/nodelist"),{enums:!0})}},{key:"getTenantsList",value:function(){return this.get(this.getPath("/viewer/json/tenants"),{enums:!0,state:0})}},{key:"sendQuery",value:function(e){var t=e.schema,n=nn(e,Nn),i=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).concurrentId;return this.post(this.getPath("/viewer/json/query?timeout=".concat(6e5).concat(t?"&schema=".concat(t):"")),n,{},{concurrentId:i,timeout:54e4})}},{key:"getExplainQuery",value:function(e,t,n,i){return this.post(this.getPath("/viewer/json/query"),{query:e,database:t,action:n||"explain",syntax:i,timeout:6e5},{})}},{key:"getExplainQueryAst",value:function(e,t){return this.post(this.getPath("/viewer/json/query"),{query:e,database:t,action:"explain-ast",timeout:6e5},{})}},{key:"getHotKeys",value:function(e,t){return this.get(this.getPath("/viewer/json/hotkeys"),{path:e,enable_sampling:t})}},{key:"getHealthcheckInfo",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).concurrentId;return this.get(this.getPath("/viewer/json/healthcheck?merge_records=true"),{tenant:e},{concurrentId:t})}},{key:"killTablet",value:function(e){return this.get(this.getPath("/tablets?KillTabletID=".concat(e)),{})}},{key:"stopTablet",value:function(e,t){return this.get(this.getPath("/tablets/app?TabletID=".concat(t,"&page=StopTablet&tablet=").concat(e)),{})}},{key:"resumeTablet",value:function(e,t){return this.get(this.getPath("/tablets/app?TabletID=".concat(t,"&page=ResumeTablet&tablet=").concat(e)),{})}},{key:"getTabletDescribe",value:function(e){return this.get(this.getPath("/viewer/json/describe"),{schemeshard_id:null===e||void 0===e?void 0:e.SchemeShard,path_id:null===e||void 0===e?void 0:e.PathId})}},{key:"postSetting",value:function(e,t,n){return this.request({method:"PATCH",url:e,data:(0,wt.Z)({},t,n)})}},{key:"authenticate",value:function(e,t){return this.post(this.getPath("/login"),{user:e,password:t},{})}},{key:"logout",value:function(){return this.post(this.getPath("/logout"),{},{})}},{key:"whoami",value:function(){return this.get(this.getPath("/viewer/json/whoami"),{})}}]),n}(_n),In=new Tn({config:Mn});window.api=In;var On="tenantPage",An={query:"query",diagnostics:"diagnostics"},Rn={newQuery:"newQuery",history:"history",saved:"saved"},Pn={overview:"overview",topQueries:"topQueries",topShards:"topShards",nodes:"nodes",tablets:"tablets",storage:"storage",network:"network",describe:"describe",hotKeys:"hotKeys",graph:"graph",consumers:"consumers",partitions:"partitions"},Zn={overview:"overview",acl:"acl",schema:"schema"},Fn={cpu:"cpu",storage:"storage",memory:"memory",healthcheck:"healthcheck"};function jn(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]])}return n}var Hn=n(39779),Bn=n.n(Hn);var zn=function(){var e=document.createElement("a").style;return e.cssText="position:sticky; position:-webkit-sticky;",-1!==e.position.indexOf("sticky")}(),Wn={getSrcElement:function(){return null},onHeightChange:function(){}},Vn=function(){function e(t){var n=this;(0,X.Z)(this,e),this.prevHeight=0,this.params=Wn,this.checkAndUpdateHeight=function(){n.node?requestAnimationFrame((function(){var e=n.node;e?n.updateHeight(e.offsetHeight):n.updateHeight(0)})):n.updateHeight(0)},this.params=Object.assign({},t)}return(0,J.Z)(e,[{key:"destroy",value:function(){this.updateHeight(0),this.params=Wn}},{key:"node",get:function(){return this.params.getSrcElement()}},{key:"updateHeight",value:function(e){this.prevHeight!==e&&(this.prevHeight=e,this.params.onHeightChange(e))}}]),e}();function Yn(e,t){var n=e.name,i=e.defaultOrder,r=t.sortOrder,o=void 0===r?{}:r,a=t.sortColumns,s=void 0===a?[]:a,u=arguments.length>2&&void 0!==arguments[2]&&arguments[2],l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},c=l.defaultOrder,d=l.disableSortReset,h=i||c,f={sortOrder:{},sortColumns:[]};if(!n)return u?{sortOrder:o,sortColumns:s}:f;var p=s,g=o[n],v=h;if(g&&(v=g===h||d?g===yn?bn:yn:void 0),!u)return v?{sortOrder:(0,wt.Z)({},n,v),sortColumns:[n]}:f;var m=o,_=n,y=(m[_],jn(m,["symbol"===typeof _?_:_+""]));return v?(y[n]=v,new Set(s).has(n)||(p=[].concat((0,Ct.Z)(s),[n]))):p=s.filter((function(e){return e!==n})),{sortOrder:y,sortColumns:p}}function Un(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=t,r=e.sortAscending;return"function"===typeof r?function(e,t){return i*r(e,t)}:function(t,r){var o=e._getSortValue(t.row),a=e._getSortValue(r.row);return null==o&&null!=a?n.nullBeforeNumbers?-i:1:null==a&&null!=o?n.nullBeforeNumbers?i:-1:o<a?Number(-i):o>a?Number(i):0}}function Kn(e,t,n,i){var r=n.sortOrder,o=n.sortColumns,a={};t.forEach((function(e){r[e.name]?a[e.name]=Un(e,r[e.name],i):e.group&&e.autogroup&&(a[e.name]=Un(e,yn,i))}));var s=t.filter((function(e){return e.group})),u=s.length>0,l=[].concat((0,Ct.Z)(s.map((function(e){return a[e.name]})).filter(Boolean)),(0,Ct.Z)(o.map((function(e){return a[e]})).filter(Boolean))),c=e.map((function(e,t){return u?{row:e,index:t,span:{}}:{row:e,index:t}}));if(l.length&&!i.externalSort&&c.sort((function(e,t){var n=0;return l.some((function(i){return n=i(e,t),Boolean(n)})),n||e.index-t.index})),c.length>1&&u){var d=[],h=[];c.forEach((function(e){s.every((function(t,n){var i=t._getValue(e.row);return d[n]&&i===h[n]?(d[n].span[t.name]+=1,e.span[t.name]=0,!0):(s.slice(n).forEach((function(t,i){d[n+i]=e,h[n+i]=t._getValue(e.row),e.span[t.name]=1})),!1)}))}))}return c}function qn(e,t){return(Array.isArray(e)?e:[e]).reduce((function(e,n){return Yn({name:n.columnId,defaultOrder:n.order},e,!0,t)}),{sortOrder:{},sortColumns:[]})}var Gn=(0,ht.Z)("data-table"),$n=e.createElement("svg",{className:Gn("icon"),viewBox:"0 0 10 6",width:"10",height:"6"},e.createElement("path",{fill:"currentColor",d:"M0 5h10l-5 -5z"})),Qn=e.createElement("svg",{className:Gn("icon"),viewBox:"0 0 10 6",width:"10",height:"6"},e.createElement("path",{fill:"currentColor",d:"M0 1h10l-5 5z"})),Xn={ICON_ASC:$n,ICON_DESC:Qn};var Jn=function(t){var n=t.sortOrder,i=t.sortIndex,r=t.sortable,o=t.defaultOrder;return r?e.createElement("span",{className:Gn("sort-icon",{shadow:!n}),"data-index":i},function(e){switch(e){case yn:return Xn.ICON_ASC;case bn:return Xn.ICON_DESC;default:return!1}}(n||o)):null};Jn.propTypes={sortOrder:Ae().oneOf([yn,bn]),sortable:Ae().bool,defaultOrder:Ae().oneOf([yn,bn])};var ei=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var e;return(0,X.Z)(this,i),(e=n.apply(this,arguments)).onClick=function(t){if(e.props.onClick){var n=e.props,i=n.row,r=n.index;e.props.onClick(i,r,t)}},e}return(0,J.Z)(i,[{key:"render",value:function(){var t=this.props,n=t.className,i=t.columns,r=t.row,o=t.index,a=t.odd,s=t.footer,u=t.span,l=t.headerData;return e.createElement("tr",{className:Gn("row",{odd:a,footer:s,"header-data":l},n),onClick:this.onClick},i.map((function(t,n){var i;if(u){if(0===u[t.name])return null;i=u[t.name]}var a=t._getValue(r);return e.createElement("td",{key:n,className:t._className,title:t._getTitle(r),style:t.customStyle({row:r,index:o,name:t.name,header:!1,footer:s,headerData:l}),rowSpan:i,onClick:t._getOnClick({row:r,index:o,footer:s,headerData:l})},t._renderValue({value:a,row:r,index:o,footer:s,headerData:l}))})))}}]),i}(e.PureComponent);ei.defaultProps={footer:!1};var ti=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var t;return(0,X.Z)(this,i),(t=n.apply(this,arguments))._dataRowsRef=null,t.renderedColumns=[],t.renderHeadCell=function(n){var i=n.column,r=n.rowSpan,o=n.colSpan,a=i.sortable,s=void 0!==a&&a,u=i.header,l=void 0===u?i.name:u,c=i.className,d=i.index,h=i.columnIndex,f=i.align,p=i.headerTitle,g=void 0===p?"string"===typeof l&&l||void 0:p;return e.createElement("th",{ref:i.dataColumn?t._getColumnRef(h):null,className:Gn("th",{sortable:s,align:f},c),key:i.name,title:g,"data-index":d,colSpan:o,rowSpan:r,style:i.customStyle&&i.customStyle({header:!0,name:i.name}),onClick:t._getOnSortClick(i)},e.createElement("div",{className:Gn("head-cell")},l,e.createElement(Jn,Object.assign({},i))))},t.renderHeadLevel=function(n,i){return e.createElement("tr",{key:i,className:Gn("head-row")},n.map(t.renderHeadCell))},t.dataRowsRef=function(e){var n;t._dataRowsRef=e,e&&(null===(n=t.dataRowsHeightObserver)||void 0===n||n.checkAndUpdateHeight())},t._getColumnRef=function(e){return function(n){t.renderedColumns[e]=n}},t}return(0,J.Z)(i,[{key:"componentDidMount",value:function(){var e=this;this._calculateColumnsWidth(),"function"===typeof this.props.onDataRowsHeightChange&&(this.dataRowsHeightObserver=new Vn({getSrcElement:function(){return e._dataRowsRef},onHeightChange:function(t){"function"===typeof e.props.onDataRowsHeightChange&&e.props.onDataRowsHeightChange(t)}}))}},{key:"componentDidUpdate",value:function(){var e;this._calculateColumnsWidth(),null===(e=this.dataRowsHeightObserver)||void 0===e||e.checkAndUpdateHeight()}},{key:"componentWillUnmount",value:function(){var e;null===(e=this.dataRowsHeightObserver)||void 0===e||e.destroy()}},{key:"render",value:function(){var t=this.props,n=t.headColumns,i=t.dataColumns,r=t.renderedDataRows;return this.renderedColumns.length=i.length,e.createElement(e.Fragment,null,e.createElement("thead",{className:Gn("head")},n.map(this.renderHeadLevel)),void 0===r?null:e.createElement("tbody",{ref:this.dataRowsRef},r))}},{key:"_calculateColumnsWidth",value:function(){var e=this,t=this.props.onColumnsUpdated;"function"===typeof t&&requestAnimationFrame((function(){var n=e.renderedColumns.map((function(e){return e&&e.getBoundingClientRect().width}));t(n)}))}},{key:"onSort",value:function(e,t){var n=this.props.onSort;"function"===typeof n&&n(e,t)}},{key:"_getOnSortClick",value:function(e){var t=this,n=e.sortable,i=void 0!==n&&n;return e.name===kn?function(){t.onSort()}:i?function(n){t.onSort(e,n.ctrlKey||n.metaKey)}:void 0}}]),i}(e.Component);ti.propTypes={headColumns:Ae().array.isRequired,dataColumns:Ae().array.isRequired,displayIndices:Ae().bool.isRequired,onSort:Ae().func,onColumnsUpdated:Ae().func,renderedDataRows:Ae().node};var ni=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var e;return(0,X.Z)(this,i),(e=n.apply(this,arguments)).state={style:{top:i.defaultProps.top}},e.onDataRowsHeightChange=function(t){e.props.onDataRowsHeightChange(t+1)},e._nodeRef=function(t){e._node=t},e}return(0,J.Z)(i,[{key:"render",value:function(){var t=this.props,n=t.mode,i=(t.top,jn(t,["mode","top"]));if(n===Cn){var r=this.state.style;return e.createElement("div",{className:Gn("sticky",{moving:!0,head:!0}),style:r},this.renderHeader(i))}var o=this.state,a=o.widths,s=void 0===a?[]:a,u=o.right,l=void 0===u?0:u,c=s.reduce((function(e,t){return e+t}),0);return e.createElement("div",{ref:this._nodeRef,className:Gn("sticky",{fixed:!0,head:!0}),style:{right:l,display:c?void 0:"none"}},this.renderHeader(i))}},{key:"setScrollLeft",value:function(e){var t=this;requestAnimationFrame((function(){t._node&&(t._node.scrollLeft=e)}))}},{key:"setRightPosition",value:function(e){this.state.right===e||this.props.top||this.props.mode===Cn||this.setState({right:e})}},{key:"renderHeader",value:function(t){var n=this.state.widths,i=void 0===n?[]:n,r=i.reduce((function(e,t){return e+t}),0);return e.createElement("div",{className:Gn("table-wrapper",{sticky:!0})},e.createElement("table",{className:Gn("table",{sticky:!0}),style:{width:r||"auto"}},e.createElement("colgroup",null,i.map((function(t,n){return e.createElement("col",{key:n,style:{width:t}})}))),e.createElement(ti,Object.assign({},t,{onDataRowsHeightChange:this.onDataRowsHeightChange}))))}},{key:"updateWidths",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=this.state.widths,n=void 0===t?[]:t;e.some((function(e,t){return e!==n[t]}))&&this.setState({widths:e})}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n;return e.top!==(null===(n=t.style)||void 0===n?void 0:n.top)?void 0===e.top?null:{style:{top:e.top}}:null}}]),i}(e.Component);ni.propTypes={mode:Ae().oneOf([wn,Cn]),top:Ae().number,renderedDataRows:Ae().node},ni.defaultProps={top:0};var ii=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var e;return(0,X.Z)(this,i),(e=n.apply(this,arguments)).state={style:{bottom:0}},e._nodeFixed=null,e._nodeMoving=null,e._nodeFixedRef=function(t){e._nodeFixed=t},e._nodeMovingRef=function(t){var n;e._nodeMoving=t,t&&(null===(n=e.heightObserver)||void 0===n||n.checkAndUpdateHeight())},e}return(0,J.Z)(i,[{key:"componentDidMount",value:function(){var e=this;this.heightObserver=new Vn({getSrcElement:function(){return e._nodeMoving},onHeightChange:this.props.onMovingHeightChange})}},{key:"componentDidUpdate",value:function(){var e;null===(e=this.heightObserver)||void 0===e||e.checkAndUpdateHeight()}},{key:"componentWillUnmount",value:function(){var e;null===(e=this.heightObserver)||void 0===e||e.destroy()}},{key:"render",value:function(){if(!this.props.renderedRows)return null;var t=this.props,n=t.mode,i=t.renderedRows;if(n===Cn){var r=this.state.style;return e.createElement("div",{ref:this._nodeMovingRef,className:Gn("sticky",{footer:!0,moving:!0}),style:r},this.renderFooter(i))}var o=this.state,a=o.widths,s=void 0===a?[]:a,u=o.right,l=void 0===u?0:u,c=s.reduce((function(e,t){return e+t}),0);return e.createElement("div",{ref:this._nodeFixedRef,className:Gn("sticky",{footer:!0,fixed:!0}),style:{right:l,display:c?void 0:"none"}},this.renderFooter(i))}},{key:"setScrollLeft",value:function(e){var t=this;requestAnimationFrame((function(){t._nodeFixed&&(t._nodeFixed.scrollLeft=e)}))}},{key:"setRightPosition",value:function(e){this.state.right!==e&&!this.props.bottom&&this._nodeFixed&&this.setState({right:e})}},{key:"renderFooter",value:function(t){var n=this.state.widths,i=void 0===n?[]:n,r=i.reduce((function(e,t){return e+t}),0);return e.createElement("div",{className:Gn("table-wrapper",{sticky:!0})},e.createElement("table",{className:Gn("table",{sticky:!0}),style:{width:r||"auto"}},e.createElement("colgroup",null,i.map((function(t,n){return e.createElement("col",{key:n,style:{width:t}})}))),e.createElement("tbody",null,t)))}},{key:"updateWidths",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=this.state.widths,n=void 0===t?[]:t;e.some((function(e,t){return e!==n[t]}))&&this.setState({widths:e})}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n;return e.bottom!==(null===(n=t.style)||void 0===n?void 0:n.bottom)?void 0===e.bottom?null:{style:{bottom:e.bottom}}:null}}]),i}(e.PureComponent);ii.defaultProps={bottom:0};var ri=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var t;return(0,X.Z)(this,i),(t=n.apply(this,arguments)).state={},t._refBody=function(e){t._body=e},t._refBox=function(e){t._box=e},t._refHead=function(e){t._head=e},t._refStickyHead=function(e){t._stickyHead=e},t._refStickyFooter=function(e){t._stickyFooter=e},t._onBoxScroll=function(){t._updateBoxConstraints()},t._onColumnsUpdated=function(e){t._stickyHead&&t._stickyHead.updateWidths(e),t._stickyFooter&&t._stickyFooter.updateWidths(e)},t.onMovingHeaderDataRowsHeightChange=function(e){var n;-e!==(null===(n=t.state.movingHeaderStyle)||void 0===n?void 0:n.marginTop)&&t.setState({movingHeaderStyle:{marginTop:-e}})},t.onMovingFooterHeightChange=function(e){var n;-e!==(null===(n=t.state.movingFooterStyle)||void 0===n?void 0:n.marginBottom)&&t.setState({movingFooterStyle:{marginBottom:-e}})},t.renderRow=function(e){var n=t.props,i=n.data,r=n.onRowClick,o=i[e],a=o.row,s=o.index,u=o.span;return t.renderRowImpl(a,s,{onRowClick:r,odd:e%2===0,span:u})},t.renderFooterRow=function(e,n){return t.renderRowImpl(e,n,{footer:!0})},t.renderHeaderRow=function(e,n){return t.renderRowImpl(e,n,{headerData:!0})},t.renderRowImpl=function(n,i){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=r.onRowClick,a=r.odd,s=r.span,u=r.footer,l=r.headerData,c=t.props,d=c.columns.dataColumns,h=c.rowClassName,f=c.rowKey,p="function"===typeof h?h(n,i,u,l):"";return e.createElement(ei,{key:f(n,i),className:p,columns:d,row:n,index:i,span:s,odd:a,onClick:o,footer:u,headerData:l})},t.renderTable=function(n,i){var r=t.props,o=r.footerData,a=r.columns.dataColumns,s=r.settings.stickyHead,u=t.state,l=u.movingHeaderStyle,c=u.movingFooterStyle,d=t.getStickyFooterMode();return e.createElement("div",{className:Gn("table-wrapper"),style:d===Cn?c:void 0},e.createElement("table",{className:Gn("table"),style:s===Cn?l:void 0},e.createElement("colgroup",null,a.map((function(t,n){var i=t.width;return e.createElement("col",{key:n,width:i})}))),t.renderHead(),e.createElement("tbody",{ref:i},n.length?n:t._getEmptyRow()),o&&e.createElement("tfoot",{className:Gn("foot",{"has-sticky-footer":d})},o.map(t.renderFooterRow))))},t}return(0,J.Z)(i,[{key:"componentDidMount",value:function(){var e=this,t=this.props.settings,n=t.stickyHead,i=t.syncHeadOnResize;this._updateBoxConstraints(),n&&i&&!this._onWindowResize&&(this._onWindowResize=function(){e.syncHeadWidths()},window.addEventListener("resize",this._onWindowResize))}},{key:"componentDidUpdate",value:function(){this._updateBoxConstraints()}},{key:"componentWillUnmount",value:function(){this._onWindowResize&&(window.removeEventListener("resize",this._onWindowResize),delete this._onWindowResize)}},{key:"render",value:function(){var t=this.props.className,n=this.props.settings,i=n.stickyHead,r=n.dynamicRender,o=this.getStickyFooterMode();return e.createElement("div",{className:t,ref:this._refBody},i&&this.renderStickyHead(),e.createElement("div",{ref:this._refBox,className:Gn("box",{"sticky-head":i,"sticky-footer":o}),onScroll:this._onBoxScroll},r?this.renderTableDynamic():this.renderTableSimple()),o&&this.renderStickyFooter())}},{key:"_updateBoxConstraints",value:function(){var e=this._stickyHead||this._stickyFooter;if(this._box&&e){var t=this._box.offsetWidth-this._box.clientWidth;this._stickyHead&&(this._stickyHead.setRightPosition(t),this._stickyHead.setScrollLeft(this._box.scrollLeft)),this._stickyFooter&&(this._stickyFooter.setRightPosition(t),this._stickyFooter.setScrollLeft(this._box.scrollLeft))}}},{key:"syncHeadWidths",value:function(){this._head&&this._head._calculateColumnsWidth()}},{key:"_getEmptyRow",value:function(){var t=this.props,n=t.columns.dataColumns,i=t.emptyDataMessage,r=t.renderEmptyRow;return"function"===typeof r?r(n):e.createElement("tr",{className:Gn("row")},e.createElement("td",{className:Gn("td",Gn("no-data")),colSpan:n.length},i))}},{key:"renderHead",value:function(){var t=this.props,n=t.columns,i=t.onSort,r=this.props.settings.displayIndices,o=this.renderHeaderRows();return e.createElement(ti,Object.assign({ref:this._refHead},n,{displayIndices:Boolean(r),onSort:i,onColumnsUpdated:this._onColumnsUpdated,renderedDataRows:o}))}},{key:"renderStickyHead",value:function(){var t=this.props,n=t.columns,i=t.onSort,r=this.props.settings,o=r.displayIndices,a=r.stickyTop,s=r.stickyHead,u="auto"===a&&this._body&&this._body.parentNode?this._body.parentNode.offsetTop:Number(a)||0,l=this.renderHeaderRows();return e.createElement(ni,Object.assign({mode:s,top:u,ref:this._refStickyHead},n,{displayIndices:o,onSort:i,renderedDataRows:l,onDataRowsHeightChange:this.onMovingHeaderDataRowsHeightChange}))}},{key:"renderStickyFooter",value:function(){var t=this.props.columns,n=this.props.settings.stickyBottom,i=Number(n)||0;if("auto"===n&&this._body&&this._body.parentNode){var r=this._body.parentNode;i=r.offsetTop+r.offsetHeight}var o=this.renderFooterRows();return e.createElement(ii,{ref:this._refStickyFooter,mode:this.getStickyFooterMode(),bottom:i,dataColumns:t.dataColumns,renderedRows:o,onMovingHeightChange:this.onMovingFooterHeightChange})}},{key:"renderTableDynamic",value:function(){var t=this.props,n=t.data,i=t.settings,r=void 0===i?{}:i,o=r.dynamicInnerRef,a=r.dynamicRenderType,s=void 0===a?"uniform":a,u=r.dynamicRenderUseStaticSize,l=r.dynamicRenderThreshold,c=r.dynamicRenderMinSize,d=r.dynamicRenderScrollParentGetter,h=r.dynamicRenderScrollParentViewportSizeGetter,f=r.dynamicItemSizeEstimator,p=r.dynamicItemSizeGetter;return e.createElement(Bn(),Object.assign({ref:o,type:s,useStaticSize:u,threshold:l,minSize:c,itemSizeEstimator:f,itemSizeGetter:p,length:n.length,itemRenderer:this.renderRow,itemsRenderer:this.renderTable,scrollParentGetter:d},{scrollParentViewportSizeGetter:h}))}},{key:"renderTableSimple",value:function(){var e=this,t=this.props.data.map((function(t,n){return e.renderRow(n)}));return this.renderTable(t,null)}},{key:"renderHeaderRows",value:function(){var e=this.props.headerData;return e&&e.map(this.renderHeaderRow)}},{key:"renderFooterRows",value:function(){var e=this.props.footerData;return null===e||void 0===e?void 0:e.map(this.renderFooterRow)}},{key:"getStickyFooterMode",value:function(){var e=this.props.footerData;return!!(null===e||void 0===e?void 0:e.length)&&this.props.settings.stickyFooter}}]),i}(e.PureComponent);ri.propTypes={className:Ae().string,settings:Ae().object,refs:Ae().object,headerData:Ae().array,data:Ae().array,footerData:Ae().array,columns:Ae().object,emptyDataMessage:Ae().string,onRowClick:Ae().func,rowClassName:Ae().func,rowKey:Ae().func,startIndex:Ae().number,onSort:Ae().func,renderEmptyRow:Ae().func};var oi=e.memo((function(t){var n=t.column,i=t.value,r=t.row,o=t.index,a=t.footer,s=t.headerData;return e.createElement(e.Fragment,null,n.render({value:i,row:r,index:o,footer:a,headerData:s}))}));var ai={columnId:Ae().string,order:Ae().oneOf([yn,bn])},si=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var t;return(0,X.Z)(this,i),(t=n.apply(this,arguments)).state=Object.assign({settings:{}},qn(t.props.initialSortOrder,t.props.settings)),t._tableRef=function(e){t.table=e},t.renderMemoizedCell=function(t){var n=t.column,i=t.value,r=t.row,o=t.index,a=t.footer,s=t.headerData;return e.createElement(oi,Object.assign({},{column:n,value:i,row:r,index:o,footer:a,headerData:s}))},t.getColumn=function(e,n){var i=t.state.settings,r=i.defaultOrder,o=t.state,a=o.sortOrder,s=void 0===a?{}:a,u=o.sortColumns,l=o.indexColumn,c=Number(Boolean(l)),d=t.isSortEnabled(),h=e.name,f=e.accessor,p=void 0===f?e.name:f,g=e.align,v=e.sortable,m=void 0===v?i.sortable:v,_=e.group,y=e.autogroup,b=void 0===y||y,w=e.sortAccessor,C=e.onClick,k=Gn("td",{align:g},e.className),S="function"===typeof p?function(e){return p(e)}:function(e){return Object.prototype.hasOwnProperty.call(e,p)?e[p]:void 0},x="function"===typeof e.title?function(t){return e.title(t)}:function(){return"string"===typeof e.title&&e.title||void 0},L="function"===typeof w?function(e){return w(e)}:S,E="function"===typeof e.render?function(n){var i=n.value,r=n.row,o=n.index,a=n.footer,s=n.headerData;return t.renderMemoizedCell({column:e,value:i,row:r,index:o,footer:a,headerData:s})}:function(e){return e.value},D="function"===typeof e.customStyle?e.customStyle:function(){},N="function"===typeof C?function(t){return function(){return C(t,e)}}:function(){};return Object.assign(Object.assign({index:n-c,columnIndex:n,dataColumn:!0,defaultOrder:r},e),{sortable:m&&d,_className:k,_getValue:S,_getTitle:x,_getSortValue:L,_renderValue:E,_getOnClick:N,customStyle:D,group:_,autogroup:b,sortOrder:s[h]||void 0,sortIndex:u.length>1?u.indexOf(h)+1:void 0})},t.isSortEnabled=function(){var e=t.props.data;return Array.isArray(e)&&e.length>1},t.onSort=function(e,n){if(e){var i=Yn(e,t.state,n,t.props.settings),r=i.sortOrder,o=i.sortColumns;t.setState({sortOrder:r,sortColumns:o});var a=t.props.onSort;if("function"===typeof a){var s=function(e){return Object.keys(e).map((function(t){return{columnId:t,order:e[t]}}))}(r);a(s)}}else{t.setState({sortOrder:{},sortColumns:[]});var u=t.props.onSort;"function"===typeof u&&u([])}},t}return(0,J.Z)(i,[{key:"render",value:function(){var t=this.props,n=t.headerData,r=t.data,o=t.footerData,a=t.columns,s=t.startIndex,u=t.emptyDataMessage,l=t.rowClassName,c=t.rowKey,d=t.onRowClick,h=t.theme,f=t.renderEmptyRow,p=t.nullBeforeNumbers,g=this.state,v=g.settings,m=g.sortOrder,_=g.sortColumns,y=v.highlightRows,b=void 0!==y&&y,w=v.stripedRows,C=void 0!==w&&w,k=v.headerMod,S=Gn({"highlight-rows":b,"striped-rows":C,header:void 0!==k&&k,theme:h}),x=this.getComplexColumns(a);return v.dynamicRender&&x.dataColumns.some((function(e){return e.group}))&&console.warn("Simultaneously used grouping cells and dynamic render. The table will render unpredictable."),e.createElement(ri,{ref:this._tableRef,className:S,settings:v,startIndex:s,columns:x,emptyDataMessage:u,renderEmptyRow:f,rowClassName:l,rowKey:c||i.defaultProps.rowKey,onRowClick:d,headerData:n,data:Kn(r,x.dataColumns,{sortOrder:m,sortColumns:_},{nullBeforeNumbers:p,externalSort:null===v||void 0===v?void 0:v.externalSort}),footerData:o,onSort:this.onSort})}},{key:"getComplexColumns",value:function(e){var t=this,n=[],i=[],r=[],o=this.state.indexColumn;return function e(o,a){n[a]||(n[a]=[]);var s=n[a];return o.reduce((function(n,o){var u=1,l=-1,c=o;if(Array.isArray(o.sub))u=e(o.sub,a+1);else{var d=t.getColumn(o,i.length);i.push(d),l=a,c=d}var h={column:c,itemLevel:l,colSpan:u,rowSpan:0};return r.push(h),s.push(h),u+n}),0)}(o?[o].concat((0,Ct.Z)(e)):e,0),r.forEach((function(e){e.rowSpan=e.itemLevel<0?1:n.length-e.itemLevel})),{headColumns:n,dataColumns:i}}},{key:"resize",value:function(){this.table&&this.table.syncHeadWidths()}}],[{key:"normalizeStickyHead",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return e!==Cn||zn?e:(console.warn("Your browser does not support position: sticky, moving sticky headers will be disabled."),!1)}},{key:"calculateSettings",value:function(e){return Object.assign(Object.assign(Object.assign({},i.defaultProps.settings),e),{stickyHead:i.normalizeStickyHead(e.stickyHead),stickyFooter:i.normalizeStickyHead(e.stickyFooter)})}},{key:"getIndexColumn",value:function(e){var t=e.startIndex,n=e.data,i=e.visibleRowIndex,r=t+n.length+1;return{name:kn,header:"#",className:Gn("index"),render:function(e){var n,r,o=e.row,a=e.index,s=e.footer;return e.headerData?null!==(n=o.headerIndex)&&void 0!==n?n:t+a:s?null!==(r=o.footerIndex)&&void 0!==r?r:t+a:"function"===typeof i?i(o,a):t+a},sortable:!1,width:20+10*Math.ceil(Math.log10(r))}}},{key:"getDerivedStateFromProps",value:function(e){var t=i.calculateSettings(e.settings);return Object.assign({settings:t,indexColumn:Boolean(t.displayIndices)&&i.getIndexColumn(e)},e.sortOrder?Object.assign({},qn(e.sortOrder,e.settings)):void 0)}}]),i}(e.Component);function ui(e){return new Set(e.map((function(e){return e.name}))).size!==e.length}si.propTypes={columns:Ae().array.isRequired,headerData:Ae().array,data:Ae().array.isRequired,footerData:Ae().array,startIndex:Ae().number,emptyDataMessage:Ae().string,renderEmptyRow:Ae().func,rowClassName:Ae().func,rowKey:Ae().func,visibleRowIndex:Ae().func,initialSortOrder:Ae().oneOfType([Ae().shape(ai),Ae().arrayOf(Ae().shape(ai))]),sortOrder:Ae().oneOfType([Ae().shape(ai),Ae().arrayOf(Ae().shape(ai))]),settings:Ae().shape({displayIndices:Ae().bool,dynamicRender:Ae().bool,dynamicRenderType:Ae().oneOf(["simple","uniform","variable"]),dynamicRenderUseStaticSize:Ae().bool,dynamicRenderThreshold:Ae().number,dynamicRenderMinSize:Ae().number,dynamicRenderScrollParentGetter:Ae().func,dynamicRenderScrollParentViewportSizeGetter:Ae().func,dynamicItemSizeEstimator:Ae().func,dynamicItemSizeGetter:Ae().func,stickyHead:Ae().oneOf([!1,wn,Cn]),stickyTop:Ae().oneOfType([Ae().number,Ae().oneOf(["auto"])]),sortable:Ae().bool,externalSort:Ae().bool,highlightRows:Ae().bool,stripedRows:Ae().bool,headerMod:Ae().oneOf(["multiline","pre"]),defaultOrder:Ae().oneOf([yn,bn]),syncHeadOnResize:Ae().bool}),theme:Ae().string,onSort:Ae().func},si.defaultProps={startIndex:0,emptyDataMessage:"No data",settings:{displayIndices:!0,dynamicRenderMinSize:1,stickyHead:!1,stickyFooter:!1,sortable:!0,externalSort:!1,defaultOrder:yn},rowKey:function(e,t){return Object.prototype.hasOwnProperty.call(e,"id")?e.id:t},initialSortOrder:{},initialSortColumns:[],theme:"yandex-cloud"},si.getSortedData=Kn;var li="It is strongly recommended against using duplicate column names. They act as default accessors and titles, so doing so may lead to confusing titles and the wrong data being extracted.",ci=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var e;return(0,X.Z)(this,i),(e=n.apply(this,arguments)).state={},e._tableRef=function(t){e.table=t},e}return(0,J.Z)(i,[{key:"componentDidMount",value:function(){ui(this.props.columns)&&console.warn(li)}},{key:"componentDidUpdate",value:function(e){var t=this.props.columns;t!==e.columns&&ui(t)&&console.warn(li)}},{key:"componentDidCatch",value:function(e){console.error(e),this.setState({error:e});var t=this.props.onError;"function"===typeof t&&t(e)}},{key:"render",value:function(){var t=this.state.error;return t?e.createElement("pre",{className:Gn("error")},"DataTable got stuck in invalid state. Please tell developers about it.","\n\n",t.stack&&String(t.stack)||String(t)):e.createElement(si,Object.assign({ref:this._tableRef},this.props))}},{key:"resize",value:function(){this.table&&this.table.resize()}}],[{key:"setCustomIcons",value:function(e){Xn.ICON_ASC=e.ICON_ASC||$n,Xn.ICON_DESC=e.ICON_DESC||Qn}}]),i}(e.PureComponent);ci.FIXED=wn,ci.MOVING=Cn,ci.ASCENDING=yn,ci.DESCENDING=bn,ci.LEFT="left",ci.CENTER="center",ci.RIGHT="right";var di,hi,fi,pi=ci;!function(e){e.Unknown="Unknown",e.OldSchemeShard="OldSchemeShard",e.OldDataShard="OldDataShard",e.OldHive="OldHive",e.OldCoordinator="OldCoordinator",e.Mediator="Mediator",e.OldTxProxy="OldTxProxy",e.OldBSController="OldBSController",e.Dummy="Dummy",e.RTMRPartition="RTMRPartition",e.OldKeyValue="OldKeyValue",e.KeyValue="KeyValue",e.Coordinator="Coordinator",e.Hive="Hive",e.BSController="BSController",e.SchemeShard="SchemeShard",e.TxProxy="TxProxy",e.DataShard="DataShard",e.PersQueue="PersQueue",e.Cms="Cms",e.NodeBroker="NodeBroker",e.TxAllocator="TxAllocator",e.PersQueueReadBalancer="PersQueueReadBalancer",e.BlockStoreVolume="BlockStoreVolume",e.BlockStorePartition="BlockStorePartition",e.TenantSlotBroker="TenantSlotBroker",e.Console="Console",e.Kesus="Kesus",e.BlockStorePartition2="BlockStorePartition2",e.BlockStoreDiskRegistry="BlockStoreDiskRegistry",e.SysViewProcessor="SysViewProcessor",e.FileStore="FileStore",e.ColumnShard="ColumnShard",e.TestShard="TestShard",e.SequenceShard="SequenceShard",e.ReplicationController="ReplicationController",e.BlobDepot="BlobDepot",e.UserTypeStart="UserTypeStart",e.TypeInvalid="TypeInvalid"}(di||(di={})),function(e){e.Created="Created",e.ResolveStateStorage="ResolveStateStorage",e.Candidate="Candidate",e.BlockBlobStorage="BlockBlobStorage",e.RebuildGraph="RebuildGraph",e.WriteZeroEntry="WriteZeroEntry",e.Restored="Restored",e.Discover="Discover",e.Lock="Lock",e.Dead="Dead",e.Active="Active",e.ResolveLeader="ResolveLeader",e.Deleted="Deleted",e.Stopped="Stopped"}(hi||(hi={}));var gi,vi=1e4,mi=1e9,_i=3600,yi=24*_i,bi=(fi={},(0,wt.Z)(fi,di.OldTxProxy,"P"),(0,wt.Z)(fi,di.TxProxy,"P"),(0,wt.Z)(fi,di.BSController,"BS"),(0,wt.Z)(fi,di.Dummy,"DY"),(0,wt.Z)(fi,di.RTMRPartition,"RP"),(0,wt.Z)(fi,di.PersQueueReadBalancer,"PB"),(0,wt.Z)(fi,di.Cms,"CM"),(0,wt.Z)(fi,di.BlockStorePartition,"BP"),(0,wt.Z)(fi,di.BlockStoreVolume,"BV"),(0,wt.Z)(fi,di.Console,"CN"),(0,wt.Z)(fi,di.TenantSlotBroker,"TB"),(0,wt.Z)(fi,di.BlockStoreDiskRegistry,"BDR"),fi),wi=function(e){var t;if(e){var n=null===(t=e.match(/[A-Z]/g))||void 0===t?void 0:t.join("");return function(e){return e in bi}(e)?bi[e]:n}},Ci=["1 min","5 min","15 min"],ki={green:5,yellow:4,orange:3,red:2,blue:1,grey:1},Si=5,xi="Developer UI",Li="Cluster",Ei="Database",Di="theme",Ni="language",Mi="invertedDisks",Ti="useNodesEndpointInDiagnostics",Ii="saved_queries",Oi="asideHeaderCompact",Ai="queries_history",Ri="default-size-result-pane",Pi="default-size-tenant-summary-pane",Zi="default-size-tenant-pane",Fi="default-is-tenant-summary-collapsed",ji="default-is-tenant-common-info-collapsed",Hi="default-is-query-result-collapsed",Bi={displayIndices:!1,stickyHead:pi.MOVING,syncHeadOnResize:!0,dynamicRender:!0,highlightRows:!0},zi=Rt(Rt({},Bi),{},{stickyHead:"fixed",dynamicRender:!1}),Wi="query_initial_mode",Vi="last_used_query_action",Yi="partitionsHiddenColumns",Ui="clusterInfoHidden",Ki="saved_tenant_initial_tab",qi="useBackendParamsForTables",Gi="queryUseMultiSchema";!function(e){e.Bool="Bool",e.Int8="Int8",e.Int16="Int16",e.Int32="Int32",e.Int64="Int64",e.Uint8="Uint8",e.Uint16="Uint16",e.Uint32="Uint32",e.Uint64="Uint64",e.Float="Float",e.Double="Double",e.Decimal="Decimal",e.String="String",e.Utf8="Utf8",e.Json="Json",e.JsonDocument="JsonDocument",e.Yson="Yson",e.Uuid="Uuid",e.Date="Date",e.Datetime="Datetime",e.Timestamp="Timestamp",e.Interval="Interval",e.TzDate="TzDate",e.TzDateTime="TzDateTime",e.TzTimestamp="TzTimestamp"}(gi||(gi={}));var $i=["result","columns"],Qi=["result"],Xi={execute:"execute",explain:"explain"},Ji={scan:"scan",script:"script",data:"data",query:"query",pg:"pg"},er={scan:"Scan",script:"YQL Script",data:"Data",query:"YQL - QueryService",pg:"PostgreSQL"},tr={yql:"yql_v1",pg:"pg"},nr=function(e,t){return e.map((function(e){return e.reduce((function(e,n,i){return e[t[i].name]=n,e}),{})}))},ir=function(e){return Boolean(!e||"object"!==typeof e||Array.isArray(e)||"result"in e&&!Array.isArray(e.result))},rr=function(e){return ir(e)?{}:(t=e,Boolean(t&&!Array.isArray(t)&&Array.isArray(t.result)&&"object"===typeof t.result[0]&&"rows"in t.result[0]&&"columns"in t.result[0])?function(e){var t=e.result,n=nn(e,Qi),i=null===t||void 0===t?void 0:t.map((function(e){var t,n=e.rows,i=e.columns;return i&&(t=[]),n&&i&&(t=nr(n,i)),{columns:i,result:t}}));return Rt({resultSets:i},n)}(e):function(e){return Boolean(e&&!Array.isArray(e)&&Array.isArray(e.result)&&Array.isArray(e.columns))}(e)?function(e){var t=e.result,n=e.columns,i=nn(e,$i);return Rt({result:t&&n&&nr(t,n),columns:n},i)}(e):e);var t},or=function(e){return ir(e)?{}:e},ar=function(e){return function(e){return Boolean(e&&"queries"in e)}(e)?e.queries&&e.queries.length?{Plan:e.queries[0].Plan,tables:e.queries[0].tables,meta:e.meta}:{meta:e.meta}:e};function sr(e){var t,n;return(null===(t=e.data)||void 0===t||null===(n=t.error)||void 0===n?void 0:n.message)||e.statusText}var ur,lr=[" B"," KB"," MB"," GB"," TB"," PB"," EB"],cr=1e3;function dr(e){return"".concat(function(e){if(isNaN(e))return"";var t=e/Math.pow(cr,2);return t<10?t.toFixed(2)+lr[2]:t<100?t.toFixed(1)+lr[2]:t.toFixed()+lr[2]}(e)).concat(e?"ps":"")}function hr(e,t){if(isNaN(e))return"N/A";var n=e/1e9;return t?n.toFixed()+lr[3]:n<10?n.toFixed(2)+lr[3]:n<100?n.toFixed(1)+lr[3]:n.toFixed()+lr[3]}function fr(e){for(var t=e,n=String(e).length;n<9;n++)t="0"+t;return t}function pr(e){return!isNaN(e)&&!isNaN(parseFloat(e))}var gr="useLocalStorageForSettings",vr=(ur={},(0,wt.Z)(ur,Di,"system"),(0,wt.Z)(ur,Ni,void 0),(0,wt.Z)(ur,Mi,!1),(0,wt.Z)(ur,Ti,!1),(0,wt.Z)(ur,Gi,!1),(0,wt.Z)(ur,Ii,[]),(0,wt.Z)(ur,Ki,An.query),(0,wt.Z)(ur,Wi,Ji.script),(0,wt.Z)(ur,Vi,Xi.execute),(0,wt.Z)(ur,Oi,!0),(0,wt.Z)(ur,Yi,[]),(0,wt.Z)(ur,Ui,!0),(0,wt.Z)(ur,qi,!1),ur),mr=function(){function e(){var t,n=this;(0,X.Z)(this,e),this.extractSettingsFromLS=function(e){return Object.entries(e).reduce((function(e,t){var i=(0,ne.Z)(t,2),r=i[0],o=i[1];return e[r]=n.readUserSettingsValue(r,o),e}),{})},this.readValueFromLS=function(e){try{return function(e){if(e)try{return JSON.parse(e)}catch(t){return e}}(localStorage.getItem(e))}catch(t){return}},this.setValueToLS=function(e,t){try{"string"===typeof t?localStorage.setItem(e,t):localStorage.setItem(e,JSON.stringify(t))}catch(n){}};var i=window.web_version?null===(t=window.systemSettings)||void 0===t?void 0:t.settingsApi:void 0,r=this.readUserSettingsValue(gr);if(i&&!r){var o=window.userSettings;o&&Object.entries(o).forEach((function(e){var t=(0,ne.Z)(e,2),i=t[0],r=t[1];return n.setUserSettingsValue(i,r)})),this.setUserSettingsValue(gr,!0)}}return(0,J.Z)(e,[{key:"readUserSettingsValue",value:function(e,t){var n;return null!==(n=this.readValueFromLS(e))&&void 0!==n?n:t}},{key:"setUserSettingsValue",value:function(e,t){return this.setValueToLS(e,t)}}]),e}(),_r=new mr,yr="settings/CHANGE_PROBLEM_FILTER",br="settings/SET_VALUE",wr="settings/SET_USER_SETTINGS",Cr={ALL:"All",PROBLEMS:"With problems"},kr=_r.extractSettingsFromLS(vr),Sr=window.systemSettings||{},xr={problemFilter:Cr.ALL,userSettings:kr,systemSettings:Sr},Lr=function(e){return{type:yr,data:e}},Er=function(e){return e.settings.problemFilter},Dr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:xr,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case yr:return Rt(Rt({},e),{},{problemFilter:t.data});case br:var n=Rt(Rt({},e.userSettings),{},(0,wt.Z)({},t.data.name,t.data.value));return Rt(Rt({},e),{},{userSettings:n});case wr:return Rt(Rt({},e),{},{userSettings:Rt(Rt({},e.userSettings),t.data)});default:return e}},Nr=n(11141),Mr=n.n(Nr);function Tr(e,t){return e.findIndex((function(e){return e.name===t}))}function Ir(e,t){return-1!==Tr(e,t)}function Or(e,t){return Ir(e,t)?e.filter((function(e){return e.name!==t})):e}var Ar=e.createContext(null);Ar.displayName="ToasterContext";var Rr=e.createContext([]);Rr.displayName="ToastsContext";var Pr,Zr=e.forwardRef((function(t,n){var i=t.children,r=e.useState([]),o=(0,ne.Z)(r,2),a=o[0],s=o[1],u=e.useCallback((function(t){var n=t.name;s((function(i){var r=i;return Ir(i,n)&&(r=Or(i,n)),[].concat((0,Ct.Z)(r),[Object.assign(Object.assign({},t),{addedAt:Date.now(),ref:e.createRef()})])}))}),[]),l=e.useCallback((function(e){s((function(t){return Or(t,e)}))}),[]),c=e.useCallback((function(){s((function(){return[]}))}),[]),d=e.useCallback((function(e,t){s((function(n){if(!Ir(n,e))return n;var i=Tr(n,e);return[].concat((0,Ct.Z)(n.slice(0,i)),[Object.assign(Object.assign({},n[i]),t)],(0,Ct.Z)(n.slice(i+1)))}))}),[]),h=e.useRef(a);e.useEffect((function(){h.current=a}),[a]);var f=e.useCallback((function(e){return!!h.current&&Ir(h.current,e)}),[]),p=e.useMemo((function(){return{add:u,remove:l,removeAll:c,update:d,has:f}}),[u,l,c,d,f]);return e.useImperativeHandle(n,(function(){return{add:u,remove:l,removeAll:c,update:d,has:f}})),e.createElement(Ar.Provider,{value:p},e.createElement(Rr.Provider,{value:a},i))}));Zr.displayName="ToasterProvider",function(e){e.IOS="ios",e.ANDROID="android",e.BROWSER="browser"}(Pr||(Pr={}));(0,ft.Ge)("root")({mobile:!0}).split(/\s+/)[1];var Fr={mobile:!1,platform:Pr.BROWSER,useHistory:function(){return{action:"",replace:function(){},push:function(){},goBack:function(){}}},useLocation:function(){return{pathname:"",search:"",hash:""}},setMobile:function(){},setPlatform:function(){}},jr=e.createContext(Fr);function Hr(){var t=e.useContext(jr);return[t.mobile,t.setMobile]}var Br=n(97326),zr=e.createContext(null);function Wr(t,n){var i=Object.create(null);return t&&e.Children.map(t,(function(e){return e})).forEach((function(t){i[t.key]=function(t){return n&&(0,e.isValidElement)(t)?n(t):t}(t)})),i}function Vr(e,t,n){return null!=n[t]?n[t]:e.props[t]}function Yr(t,n,i){var r=Wr(t.children),o=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var i,r=Object.create(null),o=[];for(var a in e)a in t?o.length&&(r[a]=o,o=[]):o.push(a);var s={};for(var u in t){if(r[u])for(i=0;i<r[u].length;i++){var l=r[u][i];s[r[u][i]]=n(l)}s[u]=n(u)}for(i=0;i<o.length;i++)s[o[i]]=n(o[i]);return s}(n,r);return Object.keys(o).forEach((function(a){var s=o[a];if((0,e.isValidElement)(s)){var u=a in n,l=a in r,c=n[a],d=(0,e.isValidElement)(c)&&!c.props.in;!l||u&&!d?l||!u||d?l&&u&&(0,e.isValidElement)(c)&&(o[a]=(0,e.cloneElement)(s,{onExited:i.bind(null,s),in:c.props.in,exit:Vr(s,"exit",t),enter:Vr(s,"enter",t)})):o[a]=(0,e.cloneElement)(s,{in:!1}):o[a]=(0,e.cloneElement)(s,{onExited:i.bind(null,s),in:!0,exit:Vr(s,"exit",t),enter:Vr(s,"enter",t)})}})),o}var Ur=Object.values||function(e){return Object.keys(e).map((function(t){return e[t]}))},Kr=function(t){function n(e,n){var i,r=(i=t.call(this,e,n)||this).handleExited.bind((0,Br.Z)(i));return i.state={contextValue:{isMounting:!0},handleExited:r,firstRender:!0},i}re(n,t);var i=n.prototype;return i.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},i.componentWillUnmount=function(){this.mounted=!1},n.getDerivedStateFromProps=function(t,n){var i,r,o=n.children,a=n.handleExited;return{children:n.firstRender?(i=t,r=a,Wr(i.children,(function(t){return(0,e.cloneElement)(t,{onExited:r.bind(null,t),in:!0,appear:Vr(t,"appear",i),enter:Vr(t,"enter",i),exit:Vr(t,"exit",i)})}))):Yr(t,o,a),firstRender:!1}},i.handleExited=function(e,t){var n=Wr(this.props.children);e.key in n||(e.props.onExited&&e.props.onExited(t),this.mounted&&this.setState((function(t){var n=c({},t.children);return delete n[e.key],{children:n}})))},i.render=function(){var t=this.props,n=t.component,i=t.childFactory,r=d(t,["component","childFactory"]),o=this.state.contextValue,a=Ur(this.state.children).map(i);return delete r.appear,delete r.enter,delete r.exit,null===n?e.createElement(zr.Provider,{value:o},a):e.createElement(zr.Provider,{value:o},e.createElement(n,r,a))},n}(e.Component);Kr.propTypes={},Kr.defaultProps={component:"div",childFactory:function(e){return e}};var qr=Kr;function Gr(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}var $r=!1,Qr=function(e){return e.scrollTop},Xr="unmounted",Jr="exited",eo="entering",to="entered",no="exiting",io=function(n){function i(e,t){var i;i=n.call(this,e,t)||this;var r,o=t&&!t.isMounting?e.enter:e.appear;return i.appearStatus=null,e.in?o?(r=Jr,i.appearStatus=eo):r=to:r=e.unmountOnExit||e.mountOnEnter?Xr:Jr,i.state={status:r},i.nextCallback=null,i}re(i,n),i.getDerivedStateFromProps=function(e,t){return e.in&&t.status===Xr?{status:Jr}:null};var r=i.prototype;return r.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},r.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==eo&&n!==to&&(t=eo):n!==eo&&n!==to||(t=no)}this.updateStatus(!1,t)},r.componentWillUnmount=function(){this.cancelNextCallback()},r.getTimeouts=function(){var e,t,n,i=this.props.timeout;return e=t=n=i,null!=i&&"number"!==typeof i&&(e=i.exit,t=i.enter,n=void 0!==i.appear?i.appear:t),{exit:e,enter:t,appear:n}},r.updateStatus=function(e,n){if(void 0===e&&(e=!1),null!==n)if(this.cancelNextCallback(),n===eo){if(this.props.unmountOnExit||this.props.mountOnEnter){var i=this.props.nodeRef?this.props.nodeRef.current:t.findDOMNode(this);i&&Qr(i)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===Jr&&this.setState({status:Xr})},r.performEnter=function(e){var n=this,i=this.props.enter,r=this.context?this.context.isMounting:e,o=this.props.nodeRef?[r]:[t.findDOMNode(this),r],a=o[0],s=o[1],u=this.getTimeouts(),l=r?u.appear:u.enter;!e&&!i||$r?this.safeSetState({status:to},(function(){n.props.onEntered(a)})):(this.props.onEnter(a,s),this.safeSetState({status:eo},(function(){n.props.onEntering(a,s),n.onTransitionEnd(l,(function(){n.safeSetState({status:to},(function(){n.props.onEntered(a,s)}))}))})))},r.performExit=function(){var e=this,n=this.props.exit,i=this.getTimeouts(),r=this.props.nodeRef?void 0:t.findDOMNode(this);n&&!$r?(this.props.onExit(r),this.safeSetState({status:no},(function(){e.props.onExiting(r),e.onTransitionEnd(i.exit,(function(){e.safeSetState({status:Jr},(function(){e.props.onExited(r)}))}))}))):this.safeSetState({status:Jr},(function(){e.props.onExited(r)}))},r.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},r.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},r.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(i){n&&(n=!1,t.nextCallback=null,e(i))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},r.onTransitionEnd=function(e,n){this.setNextCallback(n);var i=this.props.nodeRef?this.props.nodeRef.current:t.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(i&&!r){if(this.props.addEndListener){var o=this.props.nodeRef?[this.nextCallback]:[i,this.nextCallback],a=o[0],s=o[1];this.props.addEndListener(a,s)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},r.render=function(){var t=this.state.status;if(t===Xr)return null;var n=this.props,i=n.children,r=(n.in,n.mountOnEnter,n.unmountOnExit,n.appear,n.enter,n.exit,n.timeout,n.addEndListener,n.onEnter,n.onEntering,n.onEntered,n.onExit,n.onExiting,n.onExited,n.nodeRef,d(n,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return e.createElement(zr.Provider,{value:null},"function"===typeof i?i(t,r):e.cloneElement(e.Children.only(i),r))},i}(e.Component);function ro(){}io.contextType=zr,io.propTypes={},io.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:ro,onEntering:ro,onEntered:ro,onExit:ro,onExiting:ro,onExited:ro},io.UNMOUNTED=Xr,io.EXITED=Jr,io.ENTERING=eo,io.ENTERED=to,io.EXITING=no;var oo=io,ao=function(e,t){return e&&t&&t.split(" ").forEach((function(t){return i=t,void((n=e).classList?n.classList.remove(i):"string"===typeof n.className?n.className=Gr(n.className,i):n.setAttribute("class",Gr(n.className&&n.className.baseVal||"",i)));var n,i}))},so=function(t){function n(){for(var e,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];return(e=t.call.apply(t,[this].concat(i))||this).appliedClasses={appear:{},enter:{},exit:{}},e.onEnter=function(t,n){var i=e.resolveArguments(t,n),r=i[0],o=i[1];e.removeClasses(r,"exit"),e.addClass(r,o?"appear":"enter","base"),e.props.onEnter&&e.props.onEnter(t,n)},e.onEntering=function(t,n){var i=e.resolveArguments(t,n),r=i[0],o=i[1]?"appear":"enter";e.addClass(r,o,"active"),e.props.onEntering&&e.props.onEntering(t,n)},e.onEntered=function(t,n){var i=e.resolveArguments(t,n),r=i[0],o=i[1]?"appear":"enter";e.removeClasses(r,o),e.addClass(r,o,"done"),e.props.onEntered&&e.props.onEntered(t,n)},e.onExit=function(t){var n=e.resolveArguments(t)[0];e.removeClasses(n,"appear"),e.removeClasses(n,"enter"),e.addClass(n,"exit","base"),e.props.onExit&&e.props.onExit(t)},e.onExiting=function(t){var n=e.resolveArguments(t)[0];e.addClass(n,"exit","active"),e.props.onExiting&&e.props.onExiting(t)},e.onExited=function(t){var n=e.resolveArguments(t)[0];e.removeClasses(n,"exit"),e.addClass(n,"exit","done"),e.props.onExited&&e.props.onExited(t)},e.resolveArguments=function(t,n){return e.props.nodeRef?[e.props.nodeRef.current,t]:[t,n]},e.getClassNames=function(t){var n=e.props.classNames,i="string"===typeof n,r=i?""+(i&&n?n+"-":"")+t:n[t];return{baseClassName:r,activeClassName:i?r+"-active":n[t+"Active"],doneClassName:i?r+"-done":n[t+"Done"]}},e}re(n,t);var i=n.prototype;return i.addClass=function(e,t,n){var i=this.getClassNames(t)[n+"ClassName"],r=this.getClassNames("enter").doneClassName;"appear"===t&&"done"===n&&r&&(i+=" "+r),"active"===n&&e&&Qr(e),i&&(this.appliedClasses[t][n]=i,function(e,t){e&&t&&t.split(" ").forEach((function(t){return i=t,void((n=e).classList?n.classList.add(i):function(e,t){return e.classList?!!t&&e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")}(n,i)||("string"===typeof n.className?n.className=n.className+" "+i:n.setAttribute("class",(n.className&&n.className.baseVal||"")+" "+i)));var n,i}))}(e,i))},i.removeClasses=function(e,t){var n=this.appliedClasses[t],i=n.base,r=n.active,o=n.done;this.appliedClasses[t]={},i&&ao(e,i),r&&ao(e,r),o&&ao(e,o)},i.render=function(){var t=this.props,n=(t.classNames,d(t,["classNames"]));return e.createElement(oo,c({},n,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},n}(e.Component);so.defaultProps={classNames:""},so.propTypes={};var uo=so;function lo(e){return{appear:(0,ft.Ui)(e({appear:!0})),appearActive:(0,ft.Ui)(e({appear:"active"})),appearDone:(0,ft.Ui)(e({appear:"done"})),enter:(0,ft.Ui)(e({enter:!0})),enterActive:(0,ft.Ui)(e({enter:"active"})),enterDone:(0,ft.Ui)(e({enter:"done"})),exit:(0,ft.Ui)(e({exit:!0})),exitActive:(0,ft.Ui)(e({exit:"active"})),exitDone:(0,ft.Ui)(e({exit:"done"}))}}var co=n(72697),ho=n(96434),fo=n(82024),po=n(15557),go=n(84480);function vo(t){var n,i,r=t.onClose,o=t.timeout,a=function(){var t=e.useState(!1),n=(0,ne.Z)(t,2),i=n[0],r=n[1];return[e.useCallback((function(){r(!0)}),[]),e.useCallback((function(){r(!1)}),[]),i]}(),s=(0,ne.Z)(a,3),u=s[0],l=s[1],c=s[2];return n=r,i=c?null:o,e.useEffect((function(){if("number"===typeof i){var e=setTimeout((function(){n()}),i);return function(){clearTimeout(e)}}}),[n,i]),{onMouseOver:u,onMouseLeave:l}}var mo,_o=n(20970),yo=n(88216),bo=/{{(.*?)}}/g;function wo(e,t){return 0===e?t.None:1===e||-1===e?t.One:t.Many}function Co(e,t){var n=Math.abs(e%10),i=Math.abs(e%100);return 0===e?t.None:1===n&&11!==i?t.One:n>1&&n<5&&(i<10||i>20)?t.Few:t.Many}!function(e){e[e.One=0]="One",e[e.Few=1]="Few",e[e.Many=2]="Many",e[e.None=3]="None"}(mo||(mo={}));var ko,So=function(){function e(t){(0,X.Z)(this,e),this.data={},this.lang=void 0,this.pluralizers={en:wo,ru:Co},this.logger=null,this.logger=(null===t||void 0===t?void 0:t.logger)||null}return(0,J.Z)(e,[{key:"setLang",value:function(e){this.lang=e}},{key:"configurePluralization",value:function(e){this.pluralizers=Object.assign({},this.pluralizers,e)}},{key:"registerKeyset",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(this.data[e]&&Object.prototype.hasOwnProperty.call(this.data[e],t))throw new Error("Keyset '".concat(t,"' is already registered, aborting!"));this.data[e]=Object.assign({},this.data[e],(0,wt.Z)({},t,n))}},{key:"registerKeysets",value:function(e,t){var n=this;Object.keys(t).forEach((function(i){n.registerKeyset(e,i,t[i])}))}},{key:"has",value:function(e,t,n){var i=this.getLanguageData(n);return Boolean(i&&i[e]&&i[e][t])}},{key:"i18n",value:function(e,t,n){var i=this.getLanguageData(this.lang);if("undefined"===typeof i)throw new Error("Language '".concat(this.lang,"' is not defined, make sure you call setLang for the same language you called registerKeysets for!"));if(0===Object.keys(i).length)return this.warn("Language data is empty."),t;var r=i[e];if(!r)return this.warn("Keyset not found.",e),t;if(0===Object.keys(r).length)return this.warn("Keyset is empty.",e),t;var o,a=r&&r[t];if("undefined"===typeof a)return this.warn("Missing key.",e,t),t;if(Array.isArray(a)){if(a.length<3)return this.warn("Missing required plurals",e,t),t;var s=Number(null===n||void 0===n?void 0:n.count);if(Number.isNaN(s))return this.warn("Missing params.count for key.",e,t),t;o=a[this.getLanguagePluralizer(this.lang)(s,mo)]||a[mo.Many],void 0===a[mo.None]&&this.warn("Missing key for 0",e,t)}else o=a;return n&&(o=function(e,t){for(var n,i="",r=bo.lastIndex=0;n=bo.exec(e);){r!==n.index&&(i+=e.slice(r,n.index)),r=bo.lastIndex;var o=n,a=(0,ne.Z)(o,2),s=a[0],u=a[1];Object.prototype.hasOwnProperty.call(t,u)?i+=t[u]:i+=s}return r<e.length&&(i+=e.slice(r)),i}(o,n)),o}},{key:"keyset",value:function(e){var t=this;return function(n,i){return t.i18n(e,n,i)}}},{key:"warn",value:function(e,t,n){var i,r="";t?(r+=t,n&&(r+=".".concat(n))):r="languageData",null===(i=this.logger)||void 0===i||i.log("I18n: ".concat(e),{level:"info",logger:r,extra:{type:"i18n"}})}},{key:"getLanguageData",value:function(e){var t=e||this.lang;return t?this.data[t]:void 0}},{key:"getLanguagePluralizer",value:function(e){var t=e?this.pluralizers[e]:void 0;return t||this.warn("Pluralization is not configured for language '".concat(e,"', falling back to the english ruleset")),t||wo}}]),e}();!function(e){e.Ru="ru",e.En="en"}(ko||(ko={}));var xo,Lo=[],Eo={lang:ko.En},Do=new So;function No(e,t){return Object.entries(e).forEach((function(e){var n=(0,ne.Z)(e,2),i=n[0],r=n[1];return Do.registerKeyset(i,t,r)})),Do.keyset(t)}Do.setLang(Eo.lang),xo=function(e){Do.setLang(e.lang)},Lo.push(xo);var Mo=No({en:JSON.parse('{"label_close-button":"Close"}'),ru:JSON.parse('{"label_close-button":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c"}')},"Toaster"),To=(0,ft.Ge)("toast"),Io={info:co.Z,success:ho.Z,warning:fo.Z,error:fo.Z,utility:po.Z};var Oo=e.forwardRef((function(t,n){var i=t.name,r=t.content,o=t.actions,a=t.title,s=t.className,u=t.type,l=t.renderIcon,c=t.autoHiding,d=void 0===c?5e3:c,h=t.isClosable,f=void 0===h||h,p=t.mobile,g=void 0!==p&&p,v=t.removeCallback,m=e.useCallback((function(){return v(i)}),[v,i]),_=vo({onClose:m,timeout:"number"===typeof d?d:void 0}),y=(0,wt.Z)({mobile:g},u||"default",!0),b=Boolean(a),w=Boolean(r),C=l?l(t):function(t){var n=t.type;return n?e.createElement(yo.J,{data:Io[n],size:20,className:To("icon",(0,wt.Z)({},n,!0))}):null}({type:u});return e.createElement("div",Object.assign({ref:n,className:To(y,s)},_,{"data-toast":!0}),C&&e.createElement("div",{className:To("icon-container")},C),e.createElement("div",{className:To("container")},b&&e.createElement("h3",{className:To("title")},a),f&&e.createElement(_o.z,{size:"s",view:"flat",className:To("btn-close"),onClick:m,extraProps:{"aria-label":Mo("label_close-button")}},e.createElement(yo.J,{data:go.Z})),w&&e.createElement("div",{className:To("content",{"without-title":!b})},r),function(t){var n=t.actions,i=t.onClose;return n&&n.length?e.createElement("div",{className:To("actions")},n.map((function(t,n){var r=t.label,o=t.onClick,a=t.view,s=void 0===a?"outlined":a,u=t.removeAfterClick,l=void 0===u||u;return e.createElement(_o.z,{key:"".concat(r,"__").concat(n),className:To("action"),onClick:function(){o(),l&&i()},type:"button",size:"l",view:s,width:"auto"},r)}))):null}({actions:o,onClose:m})))})),Ao=lo((0,ft.Ge)("toast-animation-desktop")),Ro=lo((0,ft.Ge)("toast-animation-mobile"));function Po(t){var n=t.toasts,i=t.mobile,r=t.removeCallback;return e.createElement(qr,{component:null},n.map((function(t){return e.createElement(uo,{key:"".concat(t.name,"_").concat(t.addedAt),nodeRef:t.ref,classNames:i?Ro:Ao,addEndListener:function(e){var n,i;return null===(i=null===(n=t.ref)||void 0===n?void 0:n.current)||void 0===i?void 0:i.addEventListener("animationend",e)},onEnter:function(){return Zo(t)},onExit:function(){return Zo(t)}},e.createElement(Oo,Object.assign({},t,{mobile:i,removeCallback:r})))})))}function Zo(e){var t;(null===(t=e.ref)||void 0===t?void 0:t.current)&&e.ref.current.style.setProperty("--yc-toast-height","".concat(e.ref.current.offsetHeight,"px"))}var Fo=e.createContext({current:null});function jo(n){var i=n.container,r=n.children,o=n.disablePortal,a=function(){var t,n=e.useContext(Fo),i=null;return"object"===typeof window&&(i=window.document.body),null!==(t=n.current)&&void 0!==t?t:i}(),s=null!==i&&void 0!==i?i:a;return o?e.createElement(e.Fragment,null,r):s?t.createPortal(r,s):null}Fo.displayName="PortalContext";var Ho=(0,ft.Ge)("toaster");function Bo(t){var n=t.children,i=t.className,r=t.mobile,o=e.useRef("undefined"===typeof document?void 0:document.createElement("div"));return e.useEffect((function(){var e=o.current;if(e)return document.body.appendChild(e),function(){document.body.removeChild(e)}}),[]),e.useEffect((function(){o.current&&(o.current.className=Ho({mobile:r},i))}),[i,r]),e.createElement(jo,{container:o.current},n)}function zo(t){var n=t.className,i=t.mobile,r=t.hasPortal,o=void 0===r||r,a=Hr(),s=(0,ne.Z)(a,1)[0],u=function(){var t=e.useContext(Ar);if(null===t)throw new Error("Toaster: `useToaster` hook is used out of context");return e.useMemo((function(){return t}),[t])}(),l=u.remove,c=e.useContext(Rr),d=e.createElement(Po,{toasts:c,removeCallback:l,mobile:null!==i&&void 0!==i?i:s});return o?e.createElement(Bo,{className:n||"",mobile:null!==i&&void 0!==i?i:s},d):d}Bo.displayName="ToasterPortal",zo.displayName="ToasterComponent";var Wo,Vo=Symbol("Toaster instance key"),Yo=(0,ft.Ge)("toaster"),Uo=function(){function n(e){var t=this;(0,X.Z)(this,n),this.className="",this.mobile=!1,this.componentAPI=null,this.add=function(e){var n;null===(n=t.componentAPI)||void 0===n||n.add(e)},this.remove=function(e){var n;null===(n=t.componentAPI)||void 0===n||n.remove(e)},this.removeAll=function(){var e;null===(e=t.componentAPI)||void 0===e||e.removeAll()},this.update=function(e,n){var i;null===(i=t.componentAPI)||void 0===i||i.update(e,n)},this.has=function(e){var n,i;return null!==(i=null===(n=t.componentAPI)||void 0===n?void 0:n.has(e))&&void 0!==i&&i};var i=Mr()(e,["className"],""),r=Mr()(e,["mobile"],!1);if(window[Vo]instanceof n){var o=window[Vo];return o.className=i,o.mobile=r,o.setRootNodeClassName(),o}this.className=i,this.mobile=r,this.createRootNode(),this.createReactRoot(),this.render(),window[Vo]=this}return(0,J.Z)(n,[{key:"destroy",value:function(){t.unmountComponentAtNode(this.rootNode),document.body.removeChild(this.rootNode)}},{key:"createRootNode",value:function(){this.rootNode=document.createElement("div"),this.setRootNodeClassName(),document.body.appendChild(this.rootNode)}},{key:"createReactRoot",value:function(){Wo&&(this.reactRoot=Wo.createRoot(this.rootNode))}},{key:"render",value:function(){var n=this,i=e.createElement(Zr,{ref:function(e){n.componentAPI=e}},e.createElement(zo,{hasPortal:!1,mobile:this.mobile}));this.reactRoot?this.reactRoot.render(i):t.render(i,this.rootNode,(function(){return Promise.resolve()}))}},{key:"setRootNodeClassName",value:function(){this.rootNode.className=Yo({mobile:this.mobile},this.className)}}],[{key:"injectReactDOMClient",value:function(e){Wo=e}}]),n}(),Ko=new Uo;var qo=function(e){var t=e.name,n=e.title,i=e.type,r=e.content;return Ko.add({name:null!==t&&void 0!==t?t:"Request succeeded",title:null!==n&&void 0!==n?n:"Request succeeded",type:null!==i&&void 0!==i?i:"success",content:r,isClosable:!0,autoHiding:"success"===i&&5e3})},Go=ia("authentication","SET_UNAUTHENTICATED"),$o=ia("authentication","SET_AUTHENTICATED"),Qo=ia("authentication","FETCH_USER"),Xo={isAuthenticated:!0,user:"",error:void 0},Jo=function(e,t){return oa({request:window.api.authenticate(e,t),actions:$o})},ea=function(){return oa({request:window.api.logout(),actions:Go})},ta=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Xo,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Go.SUCCESS:return Rt(Rt({},e),{},{isAuthenticated:!1,user:"",error:void 0});case $o.SUCCESS:return Rt(Rt({},e),{},{isAuthenticated:!0,error:void 0});case $o.FAILURE:return Rt(Rt({},e),{},{error:t.error});case Qo.SUCCESS:return Rt(Rt({},e),{},{user:t.data});default:return Rt({},e)}},na=function(e){return e};function ia(e,t){return{REQUEST:"".concat(e,"/").concat(t,"_REQUEST"),SUCCESS:"".concat(e,"/").concat(t,"_SUCCESS"),FAILURE:"".concat(e,"/").concat(t,"_FAILURE")}}var ra=function(e){return e&&"status"in e};function oa(e){var t=e.actions,n=e.request,i=e.dataHandler,r=void 0===i?na:i,o=function(){var e=dn(fn().mark((function e(i,o){var a,s;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i({type:t.REQUEST}),e.prev=1,e.next=4,n;case 4:return a=e.sent,s=r(a,o),i({type:t.SUCCESS,data:s}),e.abrupt("return",s);case 10:return e.prev=10,e.t0=e.catch(1),ra(e.t0)&&401===e.t0.status?i({type:Go.SUCCESS}):ra(e.t0)&&e.t0.status>=500&&e.t0.statusText&&qo({name:"Request failure",title:"Request failure",type:"error",content:"".concat(e.t0.status," ").concat(e.t0.statusText)}),i({type:t.FAILURE,error:e.t0}),e.abrupt("return",void 0);case 15:case"end":return e.stop()}}),e,null,[[1,10]])})));return function(t,n){return e.apply(this,arguments)}}();return o}var aa=ia("heatmap","FETCH_HEATMAP"),sa="heatmap/SET_HEATMAP_OPTIONS",ua={loading:!1,wasLoaded:!1,currentMetric:void 0,sort:!1,heatmap:!1};function la(e){return{type:sa,data:e}}var ca=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ua,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case aa.REQUEST:return Rt(Rt({},e),{},{loading:!0});case aa.SUCCESS:return Rt(Rt(Rt({},e),t.data),{},{loading:!1,wasLoaded:!0,error:void 0});case aa.FAILURE:return Rt(Rt({},e),{},{error:t.error,loading:!1,wasLoaded:!1});case sa:return Rt(Rt({},e),t.data);default:return e}},da=["search"],ha={global:{problemFilter:{stateKey:"settings.problemFilter",initialState:xr.problemFilter}},"/tenant":{sort:{stateKey:"heatmap.sort",initialState:ua.sort,type:"bool"},heatmap:{stateKey:"heatmap.heatmap",initialState:ua.heatmap,type:"bool"},currentMetric:{stateKey:"heatmap.currentMetric",initialState:ua.currentMetric},schema:{stateKey:"schema.currentSchemaPath"},stateFilter:{stateKey:"tablets.stateFilter",type:"array"},typeFilter:{stateKey:"tablets.typeFilter",type:"array"},tenantPage:{stateKey:"tenant.tenantPage"},queryTab:{stateKey:"tenant.queryTab"},diagnosticsTab:{stateKey:"tenant.diagnosticsTab"},summaryTab:{stateKey:"tenant.summaryTab"},metricsTab:{stateKey:"tenant.metricsTab"},shardsMode:{stateKey:"shardsWorkload.filters.mode"},shardsDateFrom:{stateKey:"shardsWorkload.filters.from",type:"number"},shardsDateTo:{stateKey:"shardsWorkload.filters.to",type:"number"},topQueriesDateFrom:{stateKey:"executeTopQueries.filters.from",type:"number"},topQueriesDateTo:{stateKey:"executeTopQueries.filters.to",type:"number"},selectedConsumer:{stateKey:"partitions.selectedConsumer"}}};function fa(e,t){return on().merge({},e,t.query)}var pa,ga,va,ma="";function _a(e,t,n){var i=(0,an.stateToParams)(e,t,n),r=i.location;if(r.search!==ma){return ma=r.search,/\?\w+/.test(n.search)&&(r=function(e,t){var n=e.search,i=nn(e,da),r=Zt().parse(t.search.slice(1)),o=(0,ln.getMatchingDeclaredPath)(ha,e),a=o&&ha[o];on().each(on().keys(a),(function(e){delete r[e]})),on().each(on().keys(ha.global||{}),(function(e){delete r[e]}));var s=Zt().stringify(r,{encoder:encodeURIComponent}),u=n.startsWith("?")?"&":"?";return Rt({search:"".concat(n).concat(u).concat(s)},i)}(r,n)),Rt(Rt({},i),{},{location:r})}return{location:n,shouldPush:!1}}function ya(e,t,n){return function(i,r){var o=function(n,i){var r=i.type,o=i.payload;return!o||un.LOCATION_POP!==r&&un.LOCATION_PUSH!==r?n:(o.query=(0,sn.parseQuery)(e,o),t(n,o))}(n(i,r),r);return o!==i?o:i}}!function(e){e.Grey="Grey",e.Green="Green",e.Yellow="Yellow",e.Orange="Orange",e.Red="Red"}(pa||(pa={})),function(e){e.All="All",e.SmallUptime="SmallUptime"}(va||(va={}));var ba,wa=(ga={},(0,wt.Z)(ga,va.All,"All"),(0,wt.Z)(ga,va.SmallUptime,"Uptime < 1h"),ga),Ca=function(e){return!e.SystemState||e.SystemState===pa.Grey},ka=function(e){return null===e||void 0===e?void 0:e.reduce((function(e,t){return t.Id&&t.Host&&e.set(Number(t.Id),t.Host),e}),new Map)},Sa=function(e){return e===Cr.PROBLEMS},xa=function(e){return e===va.SmallUptime?_i:void 0},La={NodeId:"NodeId",Host:"Host",DC:"DC",Rack:"Rack",Version:"Version",Uptime:"Uptime",Memory:"Memory",CPU:"CPU",LoadAverage:"LoadAverage"},Ea=function(e){return Object.values(La).includes(e)};!function(e){e.v1="v1",e.v2="v2"}(ba||(ba={}));var Da,Na=n(37762),Ma=n(7406),Ta=n(25017),Ia=n.n(Ta),Oa=(n(10135),/{{(.*?)}}/g);function Aa(e,t){return 0===e?t.None:1===e||-1===e?t.One:t.Many}function Ra(e,t){var n=Math.abs(e%10),i=Math.abs(e%100);return 0===e?t.None:1===n&&11!==i?t.One:n>1&&n<5&&(i<10||i>20)?t.Few:t.Many}!function(e){e[e.One=0]="One",e[e.Few=1]="Few",e[e.Many=2]="Many",e[e.None=3]="None"}(Da||(Da={}));var Pa,Za=function(){function e(t){(0,X.Z)(this,e),this.data={},this.lang=void 0,this.pluralizers={en:Aa,ru:Ra},this.logger=null,this.logger=(null===t||void 0===t?void 0:t.logger)||null}return(0,J.Z)(e,[{key:"setLang",value:function(e){this.lang=e}},{key:"configurePluralization",value:function(e){this.pluralizers=Object.assign({},this.pluralizers,e)}},{key:"registerKeyset",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(this.data[e]&&Object.prototype.hasOwnProperty.call(this.data[e],t))throw new Error("Keyset '".concat(t,"' is already registered, aborting!"));this.data[e]=Object.assign({},this.data[e],(0,wt.Z)({},t,n))}},{key:"registerKeysets",value:function(e,t){var n=this;Object.keys(t).forEach((function(i){n.registerKeyset(e,i,t[i])}))}},{key:"has",value:function(e,t,n){var i=this.getLanguageData(n);return Boolean(i&&i[e]&&i[e][t])}},{key:"i18n",value:function(e,t,n){var i=this.getLanguageData(this.lang);if("undefined"===typeof i)throw new Error("Language '".concat(this.lang,"' is not defined, make sure you call setLang for the same language you called registerKeysets for!"));if(0===Object.keys(i).length)return this.warn("Language data is empty."),t;var r=i[e];if(!r)return this.warn("Keyset not found.",e),t;if(0===Object.keys(r).length)return this.warn("Keyset is empty.",e),t;var o,a=r&&r[t];if("undefined"===typeof a)return this.warn("Missing key.",e,t),t;if(Array.isArray(a)){if(a.length<3)return this.warn("Missing required plurals",e,t),t;var s=Number(null===n||void 0===n?void 0:n.count);if(Number.isNaN(s))return this.warn("Missing params.count for key.",e,t),t;o=a[this.getLanguagePluralizer(this.lang)(s,Da)]||a[Da.Many],void 0===a[Da.None]&&this.warn("Missing key for 0",e,t)}else o=a;return n&&(o=function(e,t){for(var n,i="",r=Oa.lastIndex=0;n=Oa.exec(e);){r!==n.index&&(i+=e.slice(r,n.index)),r=Oa.lastIndex;var o=n,a=(0,ne.Z)(o,2),s=a[0],u=a[1];Object.prototype.hasOwnProperty.call(t,u)?i+=t[u]:i+=s}return r<e.length&&(i+=e.slice(r)),i}(o,n)),o}},{key:"keyset",value:function(e){var t=this;return function(n,i){return t.i18n(e,n,i)}}},{key:"warn",value:function(e,t,n){var i,r="";t?(r+=t,n&&(r+=".".concat(n))):r="languageData",null===(i=this.logger)||void 0===i||i.log("I18n: ".concat(e),{level:"info",logger:r,extra:{type:"i18n"}})}},{key:"getLanguageData",value:function(e){var t=e||this.lang;return t?this.data[t]:void 0}},{key:"getLanguagePluralizer",value:function(e){var t=e?this.pluralizers[e]:void 0;return t||this.warn("Pluralization is not configured for language '".concat(e,"', falling back to the english ruleset")),t||Aa}}]),e}();!function(e){e.Ru="ru",e.En="en"}(Pa||(Pa={}));var Fa,ja=[],Ha={};!function(e){e.En="en",e.Ru="ru"}(Fa||(Fa={}));var Ba,za=Fa.En,Wa=_r.readUserSettingsValue(Ni,za),Va=new Za;Va.setLang(Wa),Ba={lang:Wa},Object.assign(Ha,Ba),ja.forEach((function(e){e(Ha)})),function(e){Object.assign(Eo,e),Lo.forEach((function(e){e(Eo)}))}({lang:Wa}),Ia().locale(Va.lang);var Ya=Ia(),Ua=JSON.parse('{"b":"B","kb":"KB","mb":"MB","gb":"GB","tb":"TB","perSecond":"/s"}'),Ka=JSON.parse('{"b":"\u0411","kb":"\u041a\u0411","mb":"\u041c\u0411","gb":"\u0413\u0411","tb":"\u0422\u0411","perSecond":"/\u0441"}'),qa="ydb-bytes-parsers";Va.registerKeyset(Fa.En,qa,Ua),Va.registerKeyset(Fa.Ru,qa,Ka);var Ga=Va.keyset(qa),$a=["value","size","withSpeedLabel","withSizeLabel","significantDigits"],Qa={b:{value:1,label:Ga("b")},kb:{value:1e3,label:Ga("kb")},mb:{value:1e6,label:Ga("mb")},gb:{value:mi,label:Ga("gb")},tb:{value:1e12,label:Ga("tb")}},Xa=function(e,t){var n=Math.pow(10,t),i=Qa.tb.value*n,r=Qa.gb.value*n,o=Qa.mb.value*n,a="b";return e>=Qa.kb.value*n&&(a="kb"),e>=o&&(a="mb"),e>=r&&(a="gb"),e>=i&&(a="tb"),a},Ja=function(e,t){return e+" ".concat(Qa[t].label)},es=function(e){var t=e.value,n=e.size,i=e.withSpeedLabel,r=void 0!==i&&i,o=e.withSizeLabel,a=void 0===o||o,s=e.significantDigits,u=void 0===s?0:s,l=nn(e,$a);if(!pr(t))return"";var c=Number(t),d=null!==n&&void 0!==n?n:Xa(c,u),h=function(e){var t=e.value,n=e.size,i=void 0===n?"mb":n,r=e.precision,o=void 0===r?0:r,a=ps(Number(t)/Qa[i].value,o);return fs(a)}(Rt({value:c,size:d},l));return r?function(e,t){return Ja(e,t)+Ga("perSecond")}(h,d):a?Ja(h,d):h},ts=JSON.parse('{"format-cpu.cores":["core","cores","cores","cores"]}'),ns=JSON.parse('{"format-cpu.cores":["\u044f\u0434\u0440\u043e","\u044f\u0434\u0440\u0430","\u044f\u0434\u0435\u0440","\u044f\u0434\u0435\u0440"]}'),is="ydb-format-cpu";Va.registerKeyset(Fa.En,is,ts),Va.registerKeyset(Fa.Ru,is,ns);var rs=Va.keyset(is),os=function(e){return pr(e)?Ya(e).format("0 b"):""},as=function(e){var t=os(e);return t?t+"/s":""},ss=function(e){return"".concat(Math.floor(Number(e)/mi)," GB")},us=function(e){return e?Object.values(e).join("-"):""},ls=function(e){var t=Math.floor(e/yi),n=e%yi;return[t&&"".concat(t,"d"),Ya(n).format("00:00:00")].filter(Boolean).join(" ")},cs=function(e){return e&&ls(e/1e3)},ds=function(e,t,n){var i=Xa(Number(e),0),r=!0,o=0;return pr(t)&&(i=Xa(Number(t),0),r=!1,o=1),[es({value:e,withSizeLabel:r,size:n||i,precision:o}),es({value:t,size:n||i})]},hs=function(e,t){return ds(e,t,"gb")},fs=function(e){return pr(e)?Ya(e).format("0,0.[00000]"):""},ps=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=String(e).split("."),i=(0,ne.Z)(n,1)[0];return Number(e)<1&&(i=""),i.length>=t?Math.round(Number(e)):Number(Number(e).toFixed(t-i.length))},gs=function(e){var t=Number(e)/1e6;return ps(t,3)},vs=function(e){if(void 0!==e)return Ya(gs(e)).format("0.[000]")},ms=function(e){if(void 0!==e){var t=gs(e),n=Ya(t).format("0.[000]");return"".concat(n," ").concat(rs("format-cpu.cores",{count:t}))}},_s=function(e){var t;if(!pr(e))return"";var n=null===(t=(0,Ma.J)(Number(e)))||void 0===t?void 0:t.format("YYYY-MM-DD HH:mm");return Number(e)>0&&n?n:"N/A"},ys=function(e){var t=(new Date).getTime()-Number(e);return t<=0?0:t/1e3},bs=function(e){return ls(ys(Number(e)))},ws=function(e,t,n){return function(i){return 0<=i&&i<e?n[0]:e<=i&&i<t?n[1]:t<=i?n[2]:void 0}},Cs=function(e,t){var n;return Rt(Rt({},e),{},{TenantName:null!==(n=e.Tenant)&&void 0!==n?n:t,SystemState:null===e||void 0===e?void 0:e.Overall,Uptime:bs(null===e||void 0===e?void 0:e.StartTime)})},ks=function(e){var t=function(e,t){var n=[];if(e)e.forEach((function(e){n.push(Cs(e))}));else if(t){var i,r=(0,Na.Z)(t);try{var o=function(){var e,t=i.value;null===(e=t.Nodes)||void 0===e||e.forEach((function(e){n.push(Cs(e,t.Name))}))};for(r.s();!(i=r.n()).done;)o()}catch(a){r.e(a)}finally{r.f()}}return n}(e.Nodes,e.Tenants);return{Nodes:t,TotalNodes:Number(e.TotalNodes)||t.length,FoundNodes:Number(e.FoundNodes)}},Ss=function(e){var t=(e.Nodes||[]).map((function(e){var t,n,i,r,o,a=Number(null===(t=e.SystemState.SharedCacheStats)||void 0===t?void 0:t.LimitBytes)||void 0;return Rt(Rt({},e.SystemState),{},{Tablets:e.Tablets,NodeId:e.NodeId,Uptime:bs(null===(n=e.SystemState)||void 0===n?void 0:n.StartTime),TenantName:null===(i=e.SystemState)||void 0===i||null===(r=i.Tenants)||void 0===r?void 0:r[0],SharedCacheUsed:null===(o=e.SystemState.SharedCacheStats)||void 0===o?void 0:o.UsedBytes,SharedCacheLimit:a})}));return{Nodes:t,TotalNodes:Number(e.TotalNodes)||t.length,FoundNodes:Number(e.FoundNodes)}},xs=ws(60,80,["success","warning","danger"]),Ls=["type","storage"],Es=["version"],Ds=ia("nodes","FETCH_NODES"),Ns="nodes/RESET_NODES_STATE",Ms="nodes/SET_NODES_UPTIME_FILTER",Ts="nodes/SET_DATA_WAS_NOT_LOADED",Is="nodes/SET_SEARCH_VALUE",Os="nodes/SET_SORT",As={loading:!1,wasLoaded:!1,nodesUptimeFilter:va.All,searchValue:""},Rs="getNodes";var Ps=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:As,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Ds.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Ds.SUCCESS:var n,i;return Rt(Rt({},e),{},{data:null===(n=t.data)||void 0===n?void 0:n.Nodes,totalNodes:null===(i=t.data)||void 0===i?void 0:i.TotalNodes,loading:!1,wasLoaded:!0,error:void 0});case Ds.FAILURE:var r;return null!==(r=t.error)&&void 0!==r&&r.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});case Ns:return Rt(Rt({},e),{},{loading:As.loading,wasLoaded:As.wasLoaded,nodesUptimeFilter:As.nodesUptimeFilter,searchValue:As.searchValue});case Ms:return Rt(Rt({},e),{},{nodesUptimeFilter:t.data});case Is:return Rt(Rt({},e),{},{searchValue:t.data});case Os:return Rt(Rt({},e),{},{sortValue:t.data.sortValue,sortOrder:t.data.sortOrder});case Ts:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},Zs=["type","sortOrder","sortValue","limit"],Fs=ia("topNodesByLoad","FETCH_TOP_NODES_BY_LOAD"),js="topNodesByLoad/SET_DATA_WAS_NOT_LOADED",Hs={loading:!1,wasLoaded:!1},Bs="getTopNodesByLoad";var zs=function(e){return e.topNodesByLoad.data},Ws=function(){return{type:js}},Vs=["type","sortOrder","sortValue","limit"],Ys=ia("topNodesByCpu","FETCH_TOP_NODES_BY_CPU"),Us="topNodesByCpu/SET_DATA_WAS_NOT_LOADED",Ks={loading:!1,wasLoaded:!1},qs="getTopNodeByCpu";var Gs=function(e){return e.topNodesByCpu.data},$s=function(){return{type:Us}},Qs=["type","sortOrder","sortValue","limit"],Xs=ia("topNodesByMemory","FETCH_TOP_NODES_BY_MEMORY"),Js="topNodesByMemory/SET_DATA_WAS_NOT_LOADED",eu={loading:!1,wasLoaded:!1},tu="getTopNodeByMemory";var nu=function(e){return e.topNodesByMemory.data},iu=function(){return{type:Js}};function ru(){ru=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,i,r){var o=new RegExp(e,i);return t.set(o,r||t.get(e)),(0,ie.Z)(o,n.prototype)}function i(e,n){var i=t.get(n);return Object.keys(i).reduce((function(t,n){var r=i[n];if("number"==typeof r)t[n]=e[r];else{for(var o=0;void 0===e[r[o]]&&o+1<r.length;)o++;t[n]=e[r[o]]}return t}),Object.create(null))}return(0,ee.Z)(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);if(n){n.groups=i(n,this);var r=n.indices;r&&(r.groups=i(r,this))}return n},n.prototype[Symbol.replace]=function(n,r){if("string"==typeof r){var o=t.get(this);return e[Symbol.replace].call(this,n,r.replace(/\$<([^>]+)>/g,(function(e,t){var n=o[t];return"$"+(Array.isArray(n)?n.join("$"):n)})))}if("function"==typeof r){var a=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(i(e,a)),r.apply(this,e)}))}return e[Symbol.replace].call(this,n,r)},ru.apply(this,arguments)}var ou=function(e){return"\nSELECT \n PDiskFilter,\n ErasureSpecies,\n CurrentAvailableSize,\n CurrentAllocatedSize,\n CurrentGroupsCreated,\n AvailableGroupsToCreate\n FROM `".concat(e,"/.sys/ds_storage_stats`\n ORDER BY CurrentGroupsCreated DESC;\n")},au=function(e){var t=rr(e).result,n={};return null===t||void 0===t||t.forEach((function(e){var t=e.PDiskFilter,i=e.ErasureSpecies,r=e.CurrentAvailableSize,o=e.CurrentAllocatedSize,a=e.CurrentGroupsCreated,s=e.AvailableGroupsToCreate,u=Number(a)||0,l=u+(Number(s)||0),c=Number(o)||0,d=Number(r)||0,h=t&&"string"===typeof t&&function(e){var t,n,i=ru(/^Type:([A-Za-z]+)/,{type:1}),r=null===(t=e.match(i))||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.type;return"ROT"===r?"HDD":r}(t);if(h&&i&&"string"===typeof i&&u){var f={diskType:h,erasure:i,createdGroups:u,totalGroups:l,allocatedSize:c,availableSize:d};if(n[h])if(n[h][i]){var p=Rt({},n[h][i]);n[h][i]={diskType:h,erasure:i,createdGroups:p.createdGroups+u,totalGroups:p.totalGroups+l,allocatedSize:p.allocatedSize+c,availableSize:p.availableSize+d}}else n[h][i]=f;else n[h]=(0,wt.Z)({},i,f)}})),n},su=ia("cluster","FETCH_CLUSTER"),uu={loading:!0,wasLoaded:!1};function lu(e){function t(){return(t=dn(fn().mark((function t(){var n,i,r,o;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,window.api.getClusterInfo(e);case 2:if(n=t.sent,t.prev=3,i=n.Domain){t.next=7;break}return t.abrupt("return",{clusterData:n});case 7:return r=ou(i),t.next=10,window.api.sendQuery({schema:"modern",query:r,database:i,action:"execute-scan"});case 10:return o=t.sent,t.abrupt("return",{clusterData:n,groupsStats:au(o)});case 14:return t.prev=14,t.t0=t.catch(3),t.abrupt("return",{clusterData:n});case 17:case"end":return t.stop()}}),t,null,[[3,14]])})))).apply(this,arguments)}return oa({request:function(){return t.apply(this,arguments)}(),actions:su})}var cu=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:uu,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case su.REQUEST:return Rt(Rt({},e),{},{loading:!0});case su.SUCCESS:var n=t.data,i=n.clusterData,r=n.groupsStats;return Rt(Rt({},e),{},{data:i,groupsStats:r,loading:!1,wasLoaded:!0,error:void 0});case su.FAILURE:var o;return null!==(o=t.error)&&void 0!==o&&o.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});default:return e}},du=ia("cluster","FETCH_CLUSTER_NODES"),hu={loading:!1,wasLoaded:!1};function fu(){return oa({request:window.api.getClusterNodes(),actions:du,dataHandler:function(e){var t=e.SystemStateInfo;return(void 0===t?[]:t).map((function(e){return Rt(Rt({},e),{},{uptime:bs(e.StartTime)})}))}})}var pu=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:hu,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case du.REQUEST:return Rt(Rt({},e),{},{loading:!0});case du.SUCCESS:var n=t.data,i=void 0===n?[]:n;return Rt(Rt({},e),{},{nodes:i,loading:!1,wasLoaded:!0,error:void 0});case du.FAILURE:var r;return null!==(r=t.error)&&void 0!==r&&r.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});default:return e}},gu=ia("tenant","FETCH_TENANT"),vu="tenant/SET_TOP_LEVEL_TAB",mu="tenant/SET_QUERY_TAB",_u="tenant/SET_DIAGNOSTICS_TAB",yu="tenant/SET_SUMMARY_TAB",bu="tenant/SET_METRICS_TAB",wu="tenant/CLEAR_TENANT",Cu="tenant/SET_DATA_WAS_NOT_LOADED",ku={loading:!1,wasLoaded:!1},Su=function(e){var t=e.path;return oa({request:window.api.getTenantInfo({path:t},{concurrentId:"getTenantInfo"}),actions:gu,dataHandler:function(e){var t;return null===(t=e.TenantInfo)||void 0===t?void 0:t[0]}})};function xu(e){return{type:vu,data:e}}function Lu(e){return{type:mu,data:e}}var Eu,Du=function(){return{type:Cu}},Nu=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ku,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case gu.REQUEST:return Rt(Rt({},e),{},{loading:!0});case gu.SUCCESS:return Rt(Rt({},e),{},{tenant:t.data,loading:!1,wasLoaded:!0,error:void 0});case gu.FAILURE:var n;return null!==(n=t.error)&&void 0!==n&&n.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1,wasLoaded:!0});case wu:return Rt(Rt({},e),{},{tenant:void 0,loading:!0});case vu:return Rt(Rt({},e),{},{tenantPage:t.data});case mu:return Rt(Rt({},e),{},{queryTab:t.data});case _u:return Rt(Rt({},e),{},{diagnosticsTab:t.data});case yu:return Rt(Rt({},e),{},{summaryTab:t.data});case bu:return Rt(Rt({},e),{},{metricsTab:t.data});case Cu:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}};!function(e){e.v1="v1",e.v2="v2"}(Eu||(Eu={}));var Mu,Tu,Iu={all:"all",missing:"missing",space:"space"},Ou="groups",Au="nodes";!function(e){e.Initial="Initial",e.LocalRecoveryError="LocalRecoveryError",e.SyncGuidRecovery="SyncGuidRecovery",e.SyncGuidRecoveryError="SyncGuidRecoveryError",e.OK="OK",e.PDiskError="PDiskError"}(Mu||(Mu={})),function(e){e.Initial="Initial",e.InitialFormatRead="InitialFormatRead",e.InitialFormatReadError="InitialFormatReadError",e.InitialSysLogRead="InitialSysLogRead",e.InitialSysLogReadError="InitialSysLogReadError",e.InitialSysLogParseError="InitialSysLogParseError",e.InitialCommonLogRead="InitialCommonLogRead",e.InitialCommonLogReadError="InitialCommonLogReadError",e.InitialCommonLogParseError="InitialCommonLogParseError",e.CommonLoggerInitError="CommonLoggerInitError",e.Normal="Normal",e.OpenFileError="OpenFileError",e.ChunkQuotaError="ChunkQuotaError",e.DeviceIoError="DeviceIoError",e.Missing="Missing",e.Timeout="Timeout",e.NodeDisconnected="NodeDisconnected",e.Unknown="Unknown"}(Tu||(Tu={}));var Ru;!function(e){e.HDD="HDD",e.SSD="SSD",e.MVME="NVME"}(Ru||(Ru={}));var Pu,Zu=function(e){if(e.Category){var t=function(e,t){var n={};return Object.entries(t).reduce((function(t,i){var r=(0,ne.Z)(i,2),o=r[0],a=r[1],s=e.length-t,u=s-a;return n[o]=e.substring(u,s)||"0",t+a}),0),n}(BigInt(e.Category).toString(2),{isSolidState:1,kind:55,typeExt:8});if("1"===t.isSolidState)switch(parseInt(t.typeExt,2)){case 0:return Ru.SSD;case 2:return Ru.MVME}else if("0"===t.typeExt)return Ru.HDD}},Fu=function(e){return"VDiskId"in e},ju=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=e.Limit?100*e.Used/e.Limit:0;return Math.floor(n/t)*t},Hu={PoolName:"PoolName",Kind:"Kind",Erasure:"Erasure",Degraded:"Degraded",Usage:"Usage",GroupId:"GroupId",Used:"Used",Limit:"Limit",Read:"Read",Write:"Write"},Bu=(Pu={},(0,wt.Z)(Pu,pa.Green,1),(0,wt.Z)(Pu,pa.Yellow,100),(0,wt.Z)(Pu,pa.Orange,1e4),(0,wt.Z)(Pu,pa.Red,1e6),Pu),zu=function(e,t){var n;return Rt(Rt({},e),{},{StoragePoolName:t,Donors:null===(n=e.Donors)||void 0===n?void 0:n.map((function(e){return Rt(Rt({},e),{},{StoragePoolName:t})}))})},Wu=function(e){var t=e.VDisks,n=void 0===t?[]:t,i=e.PoolName,r=e.Usage,o=void 0===r?0:r,a=e.Read,s=void 0===a?0:a,u=e.Write,l=void 0===u?0:u,c=e.Used,d=void 0===c?0:c,h=e.Limit,f=void 0===h?0:h,p=e.Degraded,g=void 0===p?0:p,v=e.Kind,m=n.reduce((function(e,t){var n=t.DiskSpace;return n&&n!==pa.Grey?e+Bu[n]:e}),0),_=n.map((function(e){return zu(e,i)})),y=Math.floor(100*Number(o));return Rt(Rt({},e),{},{UsedSpaceFlag:m,PoolName:i,Kind:v,VDisks:_,Usage:y,Read:Number(s),Write:Number(l),Used:Number(d),Limit:Number(f),Degraded:Number(g)})},Vu=function(e,t){var n=[];return e?n=e.map(Wu):null===t||void 0===t||t.forEach((function(e){var t;null===(t=e.Groups)||void 0===t||t.forEach((function(t){n.push(function(e,t){var n,i=0,r=0,o=0,a=0,s=0,u=0,l="";if(e.VDisks){var c,d=(0,Na.Z)(e.VDisks);try{for(d.s();!(c=d.n()).done;){var h=c.value,f=h.Replicated,p=h.VDiskState,g=h.AvailableSize,v=h.AllocatedSize,m=h.PDisk,_=h.DiskSpace,y=h.ReadThroughput,b=h.WriteThroughput;f&&(null===m||void 0===m?void 0:m.State)===Tu.Normal&&p===Mu.OK||(i+=1),_&&_!==pa.Grey&&(r+=Bu[_]);var w=Number(null!==g&&void 0!==g?g:null===m||void 0===m?void 0:m.AvailableSize)||0,C=Number(v)||0;o+=C,a+=w+C,s+=Number(y)||0,u+=Number(b)||0;var k=Zu(m||{});l=!k||k!==l&&""!==l?"Mixed":k}}catch(L){d.e(L)}finally{d.f()}}var S=null===(n=e.VDisks)||void 0===n?void 0:n.map((function(e){return zu(e,t)})),x=ju({Used:o,Limit:a},5);return Rt(Rt({},e),{},{VDisks:S,Usage:x,Read:s,Write:u,PoolName:t,Used:o,Limit:a,Degraded:i,UsedSpaceFlag:r,Kind:l||void 0})}(t,e.Name))}))})),n},Yu=function(e){var t,n,i=null!==(t=e.SystemState)&&void 0!==t?t:{},r=(null===(n=e.PDisks)||void 0===n?void 0:n.filter((function(e){return e.State!==Tu.Normal})).length)||0;return{NodeId:e.NodeId,SystemState:i.SystemState,DataCenter:i.DataCenter,Rack:i.Rack,Host:i.Host,Endpoints:i.Endpoints,Uptime:bs(i.StartTime),StartTime:i.StartTime,PDisks:e.PDisks,VDisks:e.VDisks,Missing:r}},Uu=function(e){var t=e.Nodes,n=e.TotalNodes,i=e.FoundNodes,r=null===t||void 0===t?void 0:t.map(Yu);return{nodes:r,total:Number(n)||(null===r||void 0===r?void 0:r.length),found:Number(i)}},Ku=function(e){var t=e.StoragePools,n=e.StorageGroups,i=e.TotalGroups,r=e.FoundGroups,o=Vu(n,t);return{groups:o,total:Number(i)||o.length,found:Number(r)}},qu=["tenant","visibleEntities"],Gu=["tenant","visibleEntities","nodeId","version"],$u=ia("storage","FETCH_STORAGE"),Qu="storage/SET_INITIAL",Xu="storage/SET_FILTER",Ju="storage/SET_USAGE_FILTER",el="storage/SET_VISIBLE_GROUPS",tl="storage/SET_STORAGE_TYPE",nl="storage/SET_NODES_UPTIME_FILTER",il="storage/SET_DATA_WAS_NOT_LOADED",rl="storage/SET_NODES_SORT_PARAMS",ol="storage/SET_GROUPS_SORT_PARAMS",al={loading:!0,wasLoaded:!1,filter:"",usageFilter:[],visible:Iu.all,nodesUptimeFilter:va.All,type:Ou},sl="getStorageInfo";var ul=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:al,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case $u.REQUEST:return Rt(Rt({},e),{},{loading:!0});case $u.SUCCESS:return Rt(Rt({},e),{},{nodes:t.data.nodes,groups:t.data.groups,total:t.data.total,found:t.data.found,loading:!1,wasLoaded:!0,error:void 0});case $u.FAILURE:var n;return null!==(n=t.error)&&void 0!==n&&n.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1,wasLoaded:!0});case Qu:return Rt({},al);case Xu:return Rt(Rt({},e),{},{filter:t.data});case Ju:return Rt(Rt({},e),{},{usageFilter:t.data});case el:return Rt(Rt({},e),{},{visible:t.data,usageFilter:[],wasLoaded:!1,error:void 0});case nl:return Rt(Rt({},e),{},{nodesUptimeFilter:t.data});case tl:return Rt(Rt({},e),{},{type:t.data,filter:"",usageFilter:[],wasLoaded:!1,error:void 0});case il:return Rt(Rt({},e),{},{wasLoaded:!1});case rl:return Rt(Rt({},e),{},{nodesSortValue:t.data.sortValue,nodesSortOrder:t.data.sortOrder});case ol:return Rt(Rt({},e),{},{groupsSortValue:t.data.sortValue,groupsSortOrder:t.data.sortOrder});default:return e}},ll=function(e){var t=e.StoragePools,n=e.StorageGroups,i=Vu(n,t);return t&&i.sort((function(e,t){return t.Usage-e.Usage})),{groups:i.slice(0,Si)}},cl=["tenant","visibleEntities","nodeId","sortOrder","sortValue","limit","version"],dl=ia("topStorageGroups","FETCH_TOP_STORAGE_GROUPS"),hl="topStorageGroups/SET_DATA_WAS_NOT_LOADED",fl={loading:!0,wasLoaded:!1},pl=function(e){var t=e.tenant,n=e.visibleEntities,i=void 0===n?"all":n,r=e.nodeId,o=e.sortOrder,a=void 0===o?-1:o,s=e.sortValue,u=void 0===s?"Usage":s,l=e.limit,c=void 0===l?Si:l,d=e.version,h=void 0===d?Eu.v2:d,f=nn(e,cl);return oa({request:window.api.getStorageInfo(Rt({tenant:t,visibleEntities:i,nodeId:r,version:h,sortOrder:a,sortValue:u,limit:c},f),{concurrentId:"getTopStorageGroups"}),actions:dl,dataHandler:ll})},gl=function(e){return e.topStorageGroups.data},vl=function(){return{type:hl}},ml=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:fl,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case dl.REQUEST:return Rt(Rt({},e),{},{loading:!0});case dl.SUCCESS:return Rt(Rt({},e),{},{data:t.data.groups,loading:!1,wasLoaded:!0,error:void 0});case dl.FAILURE:var n;return null!==(n=t.error)&&void 0!==n&&n.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1,wasLoaded:!0});case hl:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},_l=ia("node","FETCH_NODE"),yl=ia("node","FETCH_NODE_STRUCTURE"),bl="node/RESET_NODE",wl={data:{},loading:!0,wasLoaded:!1,nodeStructure:{},loadingStructure:!0,wasLoadedStructure:!1},Cl=function(e){return oa({request:window.api.getNodeInfo(e),actions:_l})},kl=function(e){return oa({request:window.api.getStorageInfo({nodeId:e},{concurrentId:"getNodeStructure"}),actions:yl})};var Sl=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:wl,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case _l.REQUEST:return Rt(Rt({},e),{},{loading:!0});case _l.SUCCESS:return Rt(Rt({},e),{},{data:t.data,loading:!1,wasLoaded:!0,error:void 0});case _l.FAILURE:return Rt(Rt({},e),{},{error:t.error,loading:!1});case yl.REQUEST:return Rt(Rt({},e),{},{loadingStructure:!0});case yl.SUCCESS:return Rt(Rt({},e),{},{nodeStructure:t.data,loadingStructure:!1,wasLoadedStructure:!0,errorStructure:void 0});case yl.FAILURE:return Rt(Rt({},e),{},{errorStructure:t.error,loadingStructure:!1});case bl:return Rt(Rt({},e),{},{data:{},wasLoaded:!1,nodeStructure:{},wasLoadedStructure:!1});default:return e}},xl=n(34495),Ll=n.n(xl),El=n(18878),Dl=n.n(El),Nl=n(2556),Ml=(0,ht.Z)("info-viewer"),Tl=function(e){var t=e.title,n=e.info,i=e.dots,r=void 0===i||i,o=e.size,a=e.className,s=e.multilineLabels,u=e.renderEmptyState;return n&&n.length||!u?(0,Nl.jsxs)("div",{className:Ml({size:o},a),children:[t&&(0,Nl.jsx)("div",{className:Ml("title"),children:t}),n&&n.length>0?(0,Nl.jsx)("div",{className:Ml("items"),children:n.map((function(e,t){return(0,Nl.jsxs)("div",{className:Ml("row"),children:[(0,Nl.jsxs)("div",{className:Ml("label"),children:[(0,Nl.jsx)("div",{className:Ml("label-text",{multiline:s}),children:e.label}),r&&(0,Nl.jsx)("div",{className:Ml("dots")})]}),(0,Nl.jsx)("div",{className:Ml("value"),children:e.value})]},t)}))}):(0,Nl.jsxs)(Nl.Fragment,{children:["No ",t," data"]})]}):(0,Nl.jsx)(Nl.Fragment,{children:u({title:t,size:o})})};function Il(e,t){var n;return null!==(n=t[e])&&void 0!==n?n:e}function Ol(e,t,n,i){var r=n[e]||i;return r?r(t):t}function Al(e){var t=e.values,n=e.labels,i=e.defaultValueFormatter;return function(e,r){return{label:Il(e,n||{}),value:Ol(e,r,t||{},i)}}}var Rl=function(e,t){return t?Object.entries(t).map((function(t){var n=(0,ne.Z)(t,2),i=n[0],r=n[1];return e(i,r)})).filter((function(e){var t=e.value;return Boolean(t)})):[]},Pl=(0,ht.Z)("ydb-node-endpoints-tooltip-content"),Zl=function(e){var t=e.data,n=[];return null!==t&&void 0!==t&&t.Rack&&n.push({label:"Rack",value:t.Rack}),null!==t&&void 0!==t&&t.Endpoints&&t.Endpoints.length&&t.Endpoints.forEach((function(e){var t=e.Name,i=e.Address;t&&i&&n.push({label:t,value:i})})),(0,Nl.jsx)(Tl,{className:Pl(null),info:n,dots:!1,size:"s"})},Fl=Al({values:{ChangeTime:function(e){return bs(e)}},labels:{TabletId:"Tablet"},defaultValueFormatter:function(e){return e&&String(e)}}),jl=function(e){var t=e.data,n=void 0===t?{}:t,i=e.className,r=n.TabletId,o=n.NodeId,a=n.State,s=n.Type,u=n.ChangeTime,l=n.Generation,c=Rl(Fl,{TabletId:r,NodeId:o,State:a,Type:s,ChangeTime:u,Generation:l});return(0,Nl.jsx)(Tl,{className:i,info:c,dots:!1,size:"s"})},Hl=Al({values:{Usage:function(e){return e&&"".concat((100*Number(e)).toFixed(2)," %")}},labels:{Name:"Pool"},defaultValueFormatter:function(e){return e&&String(e)}}),Bl=function(e){var t=e.data,n=void 0===t?{}:t,i=e.className,r=Rl(Hl,n);return(0,Nl.jsx)(Tl,{className:i,info:r,dots:!1,size:"s"})},zl=(0,ht.Z)("node-tootltip"),Wl=function(e){var t=e.data;return t&&(0,Nl.jsx)("div",{className:zl(),children:(0,Nl.jsx)("table",{children:(0,Nl.jsxs)("tbody",{children:[(0,Nl.jsxs)("tr",{children:[(0,Nl.jsx)("td",{className:zl("label"),children:"ID"}),(0,Nl.jsx)("td",{className:zl("value"),children:t.nodeId||"?"})]}),(0,Nl.jsxs)("tr",{children:[(0,Nl.jsx)("td",{className:zl("label"),children:"Rack"}),(0,Nl.jsx)("td",{className:zl("value"),children:t.rack||"?"})]}),t.connected&&t.capacity&&(0,Nl.jsxs)("tr",{children:[(0,Nl.jsx)("td",{className:zl("label"),children:"Net"}),(0,Nl.jsx)("td",{className:zl("value"),children:"".concat(t.connected," / ").concat(t.capacity)})]})]})})})},Vl=(0,ht.Z)("tabletsOverall-tooltip"),Yl=function(e){var t=e.data;return t&&(0,Nl.jsx)("div",{className:Vl(),children:(0,Nl.jsx)("table",{children:(0,Nl.jsx)("tbody",{children:t.map((function(e,t){return(0,Nl.jsxs)("tr",{children:[(0,Nl.jsxs)("td",{className:Vl("label"),children:[e.color,":"]}),(0,Nl.jsx)("td",{className:Vl("value"),children:"".concat(e.value,"/").concat(e.total," (").concat(e.percents.toFixed(2),"%)")})]},t)}))})})})},Ul=(0,ht.Z)("histogram-tooltip"),Kl=function(e){var t=e.data;return t&&(0,Nl.jsx)("div",{className:Ul(),children:(0,Nl.jsx)("table",{children:(0,Nl.jsxs)("tbody",{children:[(0,Nl.jsxs)("tr",{children:[(0,Nl.jsx)("td",{className:Ul("label"),children:"Count"}),(0,Nl.jsx)("td",{className:Ul("value"),children:t.count||"?"})]}),(0,Nl.jsxs)("tr",{children:[(0,Nl.jsx)("td",{className:Ul("label"),children:"From"}),(0,Nl.jsx)("td",{className:Ul("value"),children:t.leftBound||"?"})]}),(0,Nl.jsxs)("tr",{children:[(0,Nl.jsx)("td",{className:Ul("label"),children:"To"}),(0,Nl.jsx)("td",{className:Ul("value"),children:t.rightBound||"?"})]})]})})})},ql=(0,ht.Z)("cell-tooltip"),Gl=(0,ht.Z)("json-tooltip"),$l={pool:function(e){return(0,Nl.jsx)(Bl,{data:e})},tablet:function(e){return(0,Nl.jsx)(jl,{data:e})},node:function(e){return(0,Nl.jsx)(Wl,{data:e})},nodeEndpoints:function(e){return(0,Nl.jsx)(Zl,{data:e})},tabletsOverall:function(e){return(0,Nl.jsx)(Yl,{data:e})},histogram:function(e){return(0,Nl.jsx)(Kl,{data:e})},cell:function(e){return(0,Nl.jsx)("div",{className:ql(),children:e})},json:function(e){return(0,Nl.jsx)("div",{className:Gl(),children:(0,Nl.jsx)(Dl(),{data:e,search:!1,isExpanded:function(){return!0},className:Gl("inspector")})})}},Ql="tooltip/HIDE_TOOLTIP",Xl="tooltip/UPDATE_REF",Jl={toolTipVisible:!1,currentHoveredRef:void 0,data:void 0,templateType:"pool",template:$l.pool},ec=function(){return{type:Ql}},tc=function(e,t,n,i,r){return{type:Xl,node:e,data:t,templateType:n,additionalData:i,positions:r}},nc=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Jl,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Ql:return Rt(Rt({},e),{},{currentHoveredRef:void 0,toolTipVisible:!1});case Xl:return"cell"===t.templateType&&Ll()(t.node,e.currentHoveredRef)?Rt(Rt({},e),{},{currentHoveredRef:void 0,toolTipVisible:!1}):Rt(Rt({},e),{},{toolTipVisible:!0,currentHoveredRef:t.node,positions:t.positions,data:t.data,additionalData:t.additionalData,templateType:t.templateType,template:$l[t.templateType]});default:return e}},ic=ia("tablets","FETCH_TABLETS"),rc="tablets/CLEAR_WAS_LOADING_TABLETS",oc="tablets/SET_STATE_FILTER",ac="tablets/SET_TYPE_FILTER",sc={loading:!0,wasLoaded:!1,stateFilter:[],typeFilter:[]};function uc(e){return oa({request:window.api.getTabletsInfo(e),actions:ic})}var lc=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:sc,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case ic.REQUEST:return Rt(Rt({},e),{},{loading:!0});case ic.SUCCESS:return Rt(Rt({},e),{},{data:t.data,loading:!1,error:void 0,wasLoaded:!0});case ic.FAILURE:return Rt(Rt({},e),{},{error:t.error,loading:!1});case rc:return Rt(Rt({},e),{},{wasLoaded:!1,loading:!0});case oc:return Rt(Rt({},e),{},{stateFilter:t.data});case ac:return Rt(Rt({},e),{},{typeFilter:t.data});default:return e}},cc="NOT_FOUND";var dc=function(e,t){return e===t};function hc(e,t){var n="object"===typeof t?t:{equalityCheck:t},i=n.equalityCheck,r=void 0===i?dc:i,o=n.maxSize,a=void 0===o?1:o,s=n.resultEqualityCheck,u=function(e){return function(t,n){if(null===t||null===n||t.length!==n.length)return!1;for(var i=t.length,r=0;r<i;r++)if(!e(t[r],n[r]))return!1;return!0}}(r),l=1===a?function(e){var t;return{get:function(n){return t&&e(t.key,n)?t.value:cc},put:function(e,n){t={key:e,value:n}},getEntries:function(){return t?[t]:[]},clear:function(){t=void 0}}}(u):function(e,t){var n=[];function i(e){var i=n.findIndex((function(n){return t(e,n.key)}));if(i>-1){var r=n[i];return i>0&&(n.splice(i,1),n.unshift(r)),r.value}return cc}return{get:i,put:function(t,r){i(t)===cc&&(n.unshift({key:t,value:r}),n.length>e&&n.pop())},getEntries:function(){return n},clear:function(){n=[]}}}(a,u);function c(){var t=l.get(arguments);if(t===cc){if(t=e.apply(null,arguments),s){var n=l.getEntries().find((function(e){return s(e.value,t)}));n&&(t=n.value)}l.put(arguments,t)}return t}return c.clearCache=function(){return l.clear()},c}function fc(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];var o,a=0,s={memoizeOptions:void 0},u=i.pop();if("object"===typeof u&&(s=u,u=i.pop()),"function"!==typeof u)throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof u+"]");var l=s.memoizeOptions,c=void 0===l?n:l,d=Array.isArray(c)?c:[c],h=function(e){var t=Array.isArray(e[0])?e[0]:e;if(!t.every((function(e){return"function"===typeof e}))){var n=t.map((function(e){return"function"===typeof e?"function "+(e.name||"unnamed")+"()":typeof e})).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+n+"]")}return t}(i),f=e.apply(void 0,[function(){return a++,u.apply(null,arguments)}].concat(d)),p=e((function(){for(var e=[],t=h.length,n=0;n<t;n++)e.push(h[n].apply(null,arguments));return o=f.apply(null,e)}));return Object.assign(p,{resultFunc:u,memoizedResultFunc:f,dependencies:h,lastResult:function(){return o},recomputations:function(){return a},resetRecomputations:function(){return a=0}}),p}}var pc,gc,vc,mc,_c,yc,bc,wc,Cc,kc,Sc,xc,Lc,Ec,Dc,Nc,Mc,Tc,Ic,Oc,Ac,Rc,Pc,Zc,Fc,jc,Hc,Bc,zc,Wc,Vc,Yc,Uc,Kc,qc,Gc,$c=fc(hc);!function(e){e.StatusSuccess="StatusSuccess",e.StatusAccepted="StatusAccepted",e.StatusPathDoesNotExist="StatusPathDoesNotExist",e.StatusPathIsNotDirectory="StatusPathIsNotDirectory",e.StatusAlreadyExists="StatusAlreadyExists",e.StatusSchemeError="StatusSchemeError",e.StatusNameConflict="StatusNameConflict",e.StatusInvalidParameter="StatusInvalidParameter",e.StatusMultipleModifications="StatusMultipleModifications",e.StatusReadOnly="StatusReadOnly",e.StatusTxIdNotExists="StatusTxIdNotExists",e.StatusTxIsNotCancellable="StatusTxIsNotCancellable",e.StatusAccessDenied="StatusAccessDenied",e.StatusNotAvailable="StatusNotAvailable",e.StatusPreconditionFailed="StatusPreconditionFailed",e.StatusRedirectDomain="StatusRedirectDomain",e.StatusQuotaExceeded="StatusQuotaExceeded",e.StatusResourceExhausted="StatusResourceExhausted"}(pc||(pc={})),function(e){e.UNKNOWN="UNKNOWN",e.USER="USER",e.GROUP="GROUP"}(gc||(gc={})),function(e){e.EPathTypeInvalid="EPathTypeInvalid",e.EPathTypeDir="EPathTypeDir",e.EPathTypeTable="EPathTypeTable",e.EPathTypePersQueueGroup="EPathTypePersQueueGroup",e.EPathTypeSubDomain="EPathTypeSubDomain",e.EPathTypeTableIndex="EPathTypeTableIndex",e.EPathTypeExtSubDomain="EPathTypeExtSubDomain",e.EPathTypeColumnStore="EPathTypeColumnStore",e.EPathTypeColumnTable="EPathTypeColumnTable",e.EPathTypeCdcStream="EPathTypeCdcStream",e.EPathTypeExternalDataSource="EPathTypeExternalDataSource",e.EPathTypeExternalTable="EPathTypeExternalTable"}(vc||(vc={})),function(e){e.EPathSubTypeEmpty="EPathSubTypeEmpty",e.EPathSubTypeSyncIndexImplTable="EPathSubTypeSyncIndexImplTable",e.EPathSubTypeAsyncIndexImplTable="EPathSubTypeAsyncIndexImplTable",e.EPathSubTypeStreamImpl="EPathSubTypeStreamImpl"}(mc||(mc={})),function(e){e.EPathStateNotExist="EPathStateNotExist",e.EPathStateNoChanges="EPathStateNoChanges",e.EPathStateCreate="EPathStateCreate",e.EPathStateAlter="EPathStateAlter",e.EPathStateDrop="EPathStateDrop",e.EPathStateCopying="EPathStateCopying",e.EPathStateBackup="EPathStateBackup",e.EPathStateUpgrade="EPathStateUpgrade",e.EPathStateMigrated="EPathStateMigrated",e.EPathStateRestore="EPathStateRestore",e.EPathStateMoving="EPathStateMoving"}(_c||(_c={})),function(e){e.ColumnCodecPlain="ColumnCodecPlain",e.ColumnCodecLZ4="ColumnCodecLZ4",e.ColumnCodecZSTD="ColumnCodecZSTD"}(yc||(yc={})),function(e){e.UNIT_AUTO="UNIT_AUTO",e.UNIT_SECONDS="UNIT_SECONDS",e.UNIT_MILLISECONDS="UNIT_MILLISECONDS",e.UNIT_MICROSECONDS="UNIT_MICROSECONDS",e.UNIT_NANOSECONDS="UNIT_NANOSECONDS"}(bc||(bc={})),function(e){e.ECdcStreamModeInvalid="ECdcStreamModeInvalid",e.ECdcStreamModeKeysOnly="ECdcStreamModeKeysOnly",e.ECdcStreamModeUpdate="ECdcStreamModeUpdate",e.ECdcStreamModeNewImage="ECdcStreamModeNewImage",e.ECdcStreamModeOldImage="ECdcStreamModeOldImage",e.ECdcStreamModeNewAndOldImages="ECdcStreamModeNewAndOldImages"}(wc||(wc={})),function(e){e.ECdcStreamFormatInvalid="ECdcStreamFormatInvalid",e.ECdcStreamFormatProto="ECdcStreamFormatProto",e.ECdcStreamFormatJson="ECdcStreamFormatJson"}(Cc||(Cc={})),function(e){e.ECdcStreamStateInvalid="ECdcStreamStateInvalid",e.ECdcStreamStateReady="ECdcStreamStateReady",e.ECdcStreamStateDisabled="ECdcStreamStateDisabled"}(kc||(kc={})),function(e){e.HASH_FUNCTION_MODULO_N="HASH_FUNCTION_MODULO_N",e.HASH_FUNCTION_CLOUD_LOGS="HASH_FUNCTION_CLOUD_LOGS"}(Sc||(Sc={})),function(e){e.COLUMN_ENGINE_NONE="COLUMN_ENGINE_NONE",e.COLUMN_ENGINE_REPLACING_TIMESERIES="COLUMN_ENGINE_REPLACING_TIMESERIES"}(xc||(xc={})),function(e){e.METERING_MODE_RESERVED_CAPACITY="METERING_MODE_RESERVED_CAPACITY",e.METERING_MODE_REQUEST_UNITS="METERING_MODE_REQUEST_UNITS"}(Lc||(Lc={})),function(e){e.SysLog="SysLog",e.Log="Log",e.Data="Data",e.External="External"}(Ec||(Ec={})),function(e){e.Unspecified="Unspecified",e.Freeze="Freeze",e.Unfreeze="Unfreeze"}(Dc||(Dc={})),function(e){e.ColumnCacheNone="ColumnCacheNone",e.ColumnCacheOnce="ColumnCacheOnce",e.ColumnCacheEver="ColumnCacheEver"}(Nc||(Nc={})),function(e){e.ColumnStorage1="ColumnStorage1",e.ColumnStorage2="ColumnStorage2",e.ColumnStorage1Ext1="ColumnStorage1Ext1",e.ColumnStorage1Ext2="ColumnStorage1Ext2",e.ColumnStorage2Ext1="ColumnStorage2Ext1",e.ColumnStorage2Ext2="ColumnStorage2Ext2",e.ColumnStorage1Med2Ext2="ColumnStorage1Med2Ext2",e.ColumnStorage2Med2Ext2="ColumnStorage2Med2Ext2",e.ColumnStorageTest_1_2_1k="ColumnStorageTest_1_2_1k"}(Mc||(Mc={})),function(e){e.CompactionStrategyUnset="CompactionStrategyUnset",e.CompactionStrategyGenerational="CompactionStrategyGenerational",e.CompactionStrategySharded="CompactionStrategySharded"}(Tc||(Tc={})),function(e){e.EIndexTypeInvalid="EIndexTypeInvalid",e.EIndexTypeGlobal="EIndexTypeGlobal",e.EIndexTypeGlobalAsync="EIndexTypeGlobalAsync"}(Ic||(Ic={})),function(e){e.EIndexStateInvalid="EIndexStateInvalid",e.EIndexStateReady="EIndexStateReady",e.EIndexStateNotReady="EIndexStateNotReady",e.EIndexStateWriteOnly="EIndexStateWriteOnly"}(Oc||(Oc={})),function(e){e.UnknownTenantType="UnknownTenantType",e.Domain="Domain",e.Dedicated="Dedicated",e.Shared="Shared",e.Serverless="Serverless"}(Ac||(Ac={})),function(e){e.STATE_UNSPECIFIED="STATE_UNSPECIFIED",e.CREATING="CREATING",e.RUNNING="RUNNING",e.REMOVING="REMOVING",e.PENDING_RESOURCES="PENDING_RESOURCES",e.CONFIGURING="CONFIGURING"}(Rc||(Rc={})),function(e){e.TABLET_VOLATILE_STATE_UNKNOWN="TABLET_VOLATILE_STATE_UNKNOWN",e.TABLET_VOLATILE_STATE_STOPPED="TABLET_VOLATILE_STATE_STOPPED",e.TABLET_VOLATILE_STATE_BOOTING="TABLET_VOLATILE_STATE_BOOTING",e.TABLET_VOLATILE_STATE_STARTING="TABLET_VOLATILE_STATE_STARTING",e.TABLET_VOLATILE_STATE_RUNNING="TABLET_VOLATILE_STATE_RUNNING"}(Pc||(Pc={}));var Qc=(Zc={},(0,wt.Z)(Zc,mc.EPathSubTypeSyncIndexImplTable,"index_table"),(0,wt.Z)(Zc,mc.EPathSubTypeAsyncIndexImplTable,"index_table"),(0,wt.Z)(Zc,mc.EPathSubTypeStreamImpl,void 0),(0,wt.Z)(Zc,mc.EPathSubTypeEmpty,void 0),Zc),Xc=(Fc={},(0,wt.Z)(Fc,vc.EPathTypeInvalid,void 0),(0,wt.Z)(Fc,vc.EPathTypeSubDomain,"database"),(0,wt.Z)(Fc,vc.EPathTypeExtSubDomain,"database"),(0,wt.Z)(Fc,vc.EPathTypeDir,"directory"),(0,wt.Z)(Fc,vc.EPathTypeColumnStore,"directory"),(0,wt.Z)(Fc,vc.EPathTypeTable,"table"),(0,wt.Z)(Fc,vc.EPathTypeTableIndex,"index"),(0,wt.Z)(Fc,vc.EPathTypeColumnTable,"column_table"),(0,wt.Z)(Fc,vc.EPathTypeCdcStream,"stream"),(0,wt.Z)(Fc,vc.EPathTypePersQueueGroup,"topic"),(0,wt.Z)(Fc,vc.EPathTypeExternalDataSource,"external_data_source"),(0,wt.Z)(Fc,vc.EPathTypeExternalTable,"external_table"),Fc),Jc=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:vc.EPathTypeDir,t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"directory";return t&&Qc[t]||Xc[e]||n},ed=(jc={},(0,wt.Z)(jc,mc.EPathSubTypeSyncIndexImplTable,"Secondary Index Table"),(0,wt.Z)(jc,mc.EPathSubTypeAsyncIndexImplTable,"Secondary Index Table"),(0,wt.Z)(jc,mc.EPathSubTypeStreamImpl,void 0),(0,wt.Z)(jc,mc.EPathSubTypeEmpty,void 0),jc),td=(Hc={},(0,wt.Z)(Hc,vc.EPathTypeInvalid,void 0),(0,wt.Z)(Hc,vc.EPathTypeSubDomain,"Database"),(0,wt.Z)(Hc,vc.EPathTypeExtSubDomain,"Database"),(0,wt.Z)(Hc,vc.EPathTypeDir,"Directory"),(0,wt.Z)(Hc,vc.EPathTypeTable,"Table"),(0,wt.Z)(Hc,vc.EPathTypeTableIndex,"Secondary Index"),(0,wt.Z)(Hc,vc.EPathTypeColumnStore,"Tablestore"),(0,wt.Z)(Hc,vc.EPathTypeColumnTable,"Columntable"),(0,wt.Z)(Hc,vc.EPathTypeCdcStream,"Changefeed"),(0,wt.Z)(Hc,vc.EPathTypePersQueueGroup,"Topic"),(0,wt.Z)(Hc,vc.EPathTypeExternalDataSource,"External Data Source"),(0,wt.Z)(Hc,vc.EPathTypeExternalTable,"External Table"),Hc),nd=(Bc={},(0,wt.Z)(Bc,Ac.UnknownTenantType,"Database"),(0,wt.Z)(Bc,Ac.Domain,"Cluster Root"),(0,wt.Z)(Bc,Ac.Dedicated,"Dedicated Database"),(0,wt.Z)(Bc,Ac.Shared,"Shared Database"),(0,wt.Z)(Bc,Ac.Serverless,"Serverless Database"),Bc),id=function(e){return e&&nd[e]},rd=(zc={},(0,wt.Z)(zc,vc.EPathTypeTable,!0),(0,wt.Z)(zc,vc.EPathTypeColumnTable,!0),(0,wt.Z)(zc,vc.EPathTypeExternalTable,!0),(0,wt.Z)(zc,vc.EPathTypeInvalid,!1),(0,wt.Z)(zc,vc.EPathTypeDir,!1),(0,wt.Z)(zc,vc.EPathTypeSubDomain,!1),(0,wt.Z)(zc,vc.EPathTypeTableIndex,!1),(0,wt.Z)(zc,vc.EPathTypeExtSubDomain,!1),(0,wt.Z)(zc,vc.EPathTypeColumnStore,!1),(0,wt.Z)(zc,vc.EPathTypeCdcStream,!1),(0,wt.Z)(zc,vc.EPathTypePersQueueGroup,!1),(0,wt.Z)(zc,vc.EPathTypeExternalDataSource,!1),zc),od=function(e){var t;return null!==(t=e&&rd[e])&&void 0!==t&&t},ad=(Wc={},(0,wt.Z)(Wc,mc.EPathSubTypeSyncIndexImplTable,!0),(0,wt.Z)(Wc,mc.EPathSubTypeAsyncIndexImplTable,!0),(0,wt.Z)(Wc,mc.EPathSubTypeStreamImpl,!1),(0,wt.Z)(Wc,mc.EPathSubTypeEmpty,!1),Wc),sd=function(e){var t;return null!==(t=e&&ad[e])&&void 0!==t&&t},ud=(Vc={},(0,wt.Z)(Vc,vc.EPathTypeColumnStore,!0),(0,wt.Z)(Vc,vc.EPathTypeColumnTable,!0),(0,wt.Z)(Vc,vc.EPathTypeInvalid,!1),(0,wt.Z)(Vc,vc.EPathTypeDir,!1),(0,wt.Z)(Vc,vc.EPathTypeTable,!1),(0,wt.Z)(Vc,vc.EPathTypeSubDomain,!1),(0,wt.Z)(Vc,vc.EPathTypeTableIndex,!1),(0,wt.Z)(Vc,vc.EPathTypeExtSubDomain,!1),(0,wt.Z)(Vc,vc.EPathTypeCdcStream,!1),(0,wt.Z)(Vc,vc.EPathTypePersQueueGroup,!1),(0,wt.Z)(Vc,vc.EPathTypeExternalDataSource,!1),(0,wt.Z)(Vc,vc.EPathTypeExternalTable,!1),Vc),ld=function(e){var t;return null!==(t=e&&ud[e])&&void 0!==t&&t},cd=(Yc={},(0,wt.Z)(Yc,vc.EPathTypeSubDomain,!0),(0,wt.Z)(Yc,vc.EPathTypeExtSubDomain,!0),(0,wt.Z)(Yc,vc.EPathTypeInvalid,!1),(0,wt.Z)(Yc,vc.EPathTypeDir,!1),(0,wt.Z)(Yc,vc.EPathTypeColumnStore,!1),(0,wt.Z)(Yc,vc.EPathTypeColumnTable,!1),(0,wt.Z)(Yc,vc.EPathTypeTable,!1),(0,wt.Z)(Yc,vc.EPathTypeTableIndex,!1),(0,wt.Z)(Yc,vc.EPathTypeCdcStream,!1),(0,wt.Z)(Yc,vc.EPathTypePersQueueGroup,!1),(0,wt.Z)(Yc,vc.EPathTypeExternalDataSource,!1),(0,wt.Z)(Yc,vc.EPathTypeExternalTable,!1),Yc),dd=function(e){var t;return null!==(t=e&&cd[e])&&void 0!==t&&t},hd=(Uc={},(0,wt.Z)(Uc,vc.EPathTypeCdcStream,!0),(0,wt.Z)(Uc,vc.EPathTypePersQueueGroup,!1),(0,wt.Z)(Uc,vc.EPathTypeInvalid,!1),(0,wt.Z)(Uc,vc.EPathTypeColumnStore,!1),(0,wt.Z)(Uc,vc.EPathTypeColumnTable,!1),(0,wt.Z)(Uc,vc.EPathTypeDir,!1),(0,wt.Z)(Uc,vc.EPathTypeTable,!1),(0,wt.Z)(Uc,vc.EPathTypeSubDomain,!1),(0,wt.Z)(Uc,vc.EPathTypeTableIndex,!1),(0,wt.Z)(Uc,vc.EPathTypeExtSubDomain,!1),(0,wt.Z)(Uc,vc.EPathTypeExternalDataSource,!1),(0,wt.Z)(Uc,vc.EPathTypeExternalTable,!1),Uc),fd=function(e){var t;return null!==(t=e&&hd[e])&&void 0!==t&&t},pd=(Kc={},(0,wt.Z)(Kc,mc.EPathSubTypeSyncIndexImplTable,!0),(0,wt.Z)(Kc,mc.EPathSubTypeAsyncIndexImplTable,!0),(0,wt.Z)(Kc,mc.EPathSubTypeStreamImpl,!1),(0,wt.Z)(Kc,mc.EPathSubTypeEmpty,!1),Kc),gd=(qc={},(0,wt.Z)(qc,vc.EPathTypeCdcStream,!0),(0,wt.Z)(qc,vc.EPathTypePersQueueGroup,!0),(0,wt.Z)(qc,vc.EPathTypeExternalDataSource,!0),(0,wt.Z)(qc,vc.EPathTypeExternalTable,!0),(0,wt.Z)(qc,vc.EPathTypeInvalid,!1),(0,wt.Z)(qc,vc.EPathTypeColumnStore,!1),(0,wt.Z)(qc,vc.EPathTypeColumnTable,!1),(0,wt.Z)(qc,vc.EPathTypeDir,!1),(0,wt.Z)(qc,vc.EPathTypeTable,!1),(0,wt.Z)(qc,vc.EPathTypeSubDomain,!1),(0,wt.Z)(qc,vc.EPathTypeTableIndex,!1),(0,wt.Z)(qc,vc.EPathTypeExtSubDomain,!1),qc),vd=function(e,t){var n;return null!==(n=t&&pd[t]||e&&gd[e])&&void 0!==n&&n},md=(Gc={},(0,wt.Z)(Gc,vc.EPathTypeCdcStream,!0),(0,wt.Z)(Gc,vc.EPathTypePersQueueGroup,!0),(0,wt.Z)(Gc,vc.EPathTypeInvalid,!1),(0,wt.Z)(Gc,vc.EPathTypeColumnStore,!1),(0,wt.Z)(Gc,vc.EPathTypeColumnTable,!1),(0,wt.Z)(Gc,vc.EPathTypeDir,!1),(0,wt.Z)(Gc,vc.EPathTypeTable,!1),(0,wt.Z)(Gc,vc.EPathTypeSubDomain,!1),(0,wt.Z)(Gc,vc.EPathTypeTableIndex,!1),(0,wt.Z)(Gc,vc.EPathTypeExtSubDomain,!1),(0,wt.Z)(Gc,vc.EPathTypeExternalDataSource,!1),(0,wt.Z)(Gc,vc.EPathTypeExternalTable,!1),Gc),_d=function(e){var t;return null!==(t=e&&md[e])&&void 0!==t&&t},yd=function(e){return e===vc.EPathTypeExternalTable},bd=ia("schema","FETCH_SCHEMA"),wd="schema/PRELOAD_SCHEMAS",Cd="schema/SET_SCHEMA",kd="schema/SET_SHOW_PREVIEW",Sd="schema/ENABLE_AUTOREFRESH",xd="schema/DISABLE_AUTOREFRESH",Ld="schema/RESET_LOADING_STATE",Ed={loading:!0,wasLoaded:!1,data:{},currentSchemaPath:void 0,autorefresh:!1,showPreview:!1};function Dd(e){var t=e.path;return oa({request:window.api.getSchema({path:t}),actions:bd,dataHandler:function(e){var t={};return e.Path&&(t[e.Path]=e),{path:e.Path,currentSchema:e,data:t}}})}function Nd(){return{type:xd}}function Md(e){return{type:kd,data:e}}var Td=$c([function(e,t){return t},function(e,t,n){return n},function(e,t){var n,i;return t?null===(n=e.schema.data[t])||void 0===n||null===(i=n.PathDescription)||void 0===i?void 0:i.Children:void 0}],(function(e,t,n){return fd(t)?null===n||void 0===n?void 0:n.map((function(t){var n=t.Name;return e+"/"+n})):void 0})),Id=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ed,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case bd.REQUEST:return Rt(Rt({},e),{},{loading:!0});case bd.SUCCESS:var n=!e.currentSchemaPath||e.currentSchemaPath===t.data.path,i=Rt(Rt({},e.data),t.data.data);return Rt(Rt({},e),{},n?{error:void 0,data:i,currentSchema:t.data.currentSchema,currentSchemaPath:t.data.path,loading:!1,wasLoaded:!0}:{data:i});case bd.FAILURE:var r;return null!==(r=t.error)&&void 0!==r&&r.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});case wd:return Rt(Rt({},e),{},{data:Rt(Rt({},t.data),e.data)});case Cd:return Rt(Rt({},e),{},{currentSchemaPath:t.data});case Sd:return Rt(Rt({},e),{},{autorefresh:!0});case xd:return Rt(Rt({},e),{},{autorefresh:!1});case kd:return Rt(Rt({},e),{},{showPreview:t.data});case Ld:return Rt(Rt({},e),{},{wasLoaded:Ed.wasLoaded});default:return e}},Od=n(84506),Ad=ia("overview","FETCH_OVERVIEW"),Rd="overview/SET_CURRENT_OVERVIEW_PATH",Pd="overview/SET_DATA_WAS_NOT_LOADED",Zd={loading:!0,wasLoaded:!1};var Fd=function(e){return{type:Rd,data:e}},jd=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Zd,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Ad.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Ad.SUCCESS:return t.data.data.Path!==e.currentOverviewPath?e:Rt(Rt({},e),{},{error:void 0,data:t.data.data,additionalData:t.data.additionalData,loading:!1,wasLoaded:!0});case Ad.FAILURE:var n;return null!==(n=t.error)&&void 0!==n&&n.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});case Rd:return Rt(Rt({},e),{},{currentOverviewPath:t.data});case Pd:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},Hd=ia("host","FETCH_HOST"),Bd={loading:!0,wasLoaded:!1,data:{}};var zd=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Bd,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Hd.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Hd.SUCCESS:var n;return Rt(Rt({},e),{},{data:null===(n=t.data.SystemStateInfo)||void 0===n?void 0:n[0],loading:!1,wasLoaded:!0,error:void 0});case Hd.FAILURE:return Rt(Rt({},e),{},{error:t.error,loading:!1});default:return e}},Wd=ia("network","FETCH_ALL_NODES_NETWORK"),Vd="network/SET_DATA_WAS_NOT_LOADED",Yd={loading:!1,wasLoaded:!1},Ud=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Yd,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Wd.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Wd.SUCCESS:return Rt(Rt({},e),{},{data:t.data,loading:!1,wasLoaded:!0,error:void 0});case Wd.FAILURE:return Rt(Rt({},e),{},{error:t.error,loading:!1});case Vd:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},Kd=function(e){return{perMinute:e&&e.per_minute?Math.round(Number(e.per_minute)/60):0,perHour:e&&e.per_hour?Math.round(Number(e.per_hour)/_i):0,perDay:e&&e.per_day?Math.round(Number(e.per_day)/yi):0}},qd="Unspecified",Gd="Good",$d="Warning",Qd="Danger",Xd=function(e){var t,n,i=e||{},r=i.CoresUsed,o=i.MemoryUsed,a=i.StorageAllocatedSize,s=i.MemoryLimit,u=i.StorageAllocatedLimit,l=i.PoolStats,c=i.Metrics,d=void 0===c?{}:c,h=i.DatabaseQuotas,f=void 0===h?{}:h,p=null===l||void 0===l||null===(t=l.find((function(e){return"System"===e.Name})))||void 0===t?void 0:t.Usage,g=null===l||void 0===l||null===(n=l.find((function(e){return"User"===e.Name})))||void 0===n?void 0:n.Usage;return{cpu:pr(r)?1e6*Number(r):void 0,memory:pr(o)?Number(o):void 0,blobStorage:pr(a)?Number(a):void 0,tableStorage:pr(d.Storage)?Number(d.Storage):void 0,cpuUsage:pr(p)||pr(g)?100*Math.max(Number(p),Number(g)):void 0,memoryLimit:pr(s)?Number(s):void 0,blobStorageLimit:pr(u)?Number(u):void 0,tableStorageLimit:pr(f.data_size_hard_quota)?Number(f.data_size_hard_quota):void 0}},Jd=function(e,t){return e.map((function(n){var i,r=t?function(e){var t,n=e.Nodes?e.Nodes[0]:{},i=n.Host&&n.Endpoints?null===(t=n.Endpoints.find((function(e){return"http-mon"===e.Name})))||void 0===t?void 0:t.Address:void 0;return n.Host?"".concat(n.Host).concat(i||""):void 0}(n):void 0,o=null===(i=e.find((function(e){return e.Id===n.ResourceId})))||void 0===i?void 0:i.Name,a=function(e){var t,n,i=null===(t=e.Name)||void 0===t?void 0:t.split("/"),r=null!==i&&void 0!==i&&i.length?i[i.length-1]:"\u2014",o=null===(n=e.ControlPlane)||void 0===n?void 0:n.name;return null!==o&&void 0!==o?o:r}(n),s=Xd(n),u=s.cpu,l=s.memory,c=s.blobStorage,d=function(e){var t,n=e.StorageGroups,i=e.NodeIds;return{nodesCount:null!==(t=null===i||void 0===i?void 0:i.length)&&void 0!==t?t:0,groupsCount:pr(n)?Number(n):0}}(n),h=d.nodesCount,f=d.groupsCount;return Rt(Rt({},n),{},{backend:r,sharedTenantName:o,controlPlaneName:a,cpu:u,memory:l,storage:c,nodesCount:h,groupsCount:f})}))},eh=function(e,t){if(e&&t)return 100*e/t},th=function(e){if(e)return"".concat(e.toFixed(),"%")},nh=function(e){return e?e>70?Qd:e>60?$d:Gd:qd},ih=function(e){return e?e>85?Qd:e>75?$d:Gd:qd},rh=function(e){return e?e>70?Qd:e>60?$d:Gd:qd},oh=function(e){var t=e.cpu,n=e.storage,i=e.memory;return{cpu:ms(t),storage:es({value:n,significantDigits:2})||void 0,memory:es({value:i,significantDigits:2})||void 0}},ah=function(e){return e>=100?100:e<=0?0:e},sh=ia("tenants","FETCH_TENANTS"),uh="tenants/SET_SEARCH_VALUE",lh={loading:!0,wasLoaded:!1,searchValue:"",tenants:[]};var ch=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:lh,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case sh.REQUEST:return Rt(Rt({},e),{},{loading:!0});case sh.SUCCESS:return Rt(Rt({},e),{},{tenants:t.data,loading:!1,wasLoaded:!0,error:void 0});case sh.FAILURE:return Rt(Rt({},e),{},{error:t.error,loading:!1});case uh:return Rt(Rt({},e),{},{searchValue:t.data});default:return e}},dh=ia("TABLET","FETCH_TABLET"),hh=ia("TABLET","FETCH_TABLET_DESCRIBE"),fh="tablet/CLEAR_TABLET_DATA",ph={loading:!1,tenantPath:void 0},gh=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ph,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case dh.REQUEST:return Rt(Rt({},e),{},{loading:!0});case dh.SUCCESS:var n=t.data,i=n.tabletData,r=n.historyData,o=i.TabletId;return Rt(Rt({},e),{},{id:o,data:i,history:r,loading:!1,error:void 0});case dh.FAILURE:return Rt(Rt({},e),{},{error:t.error,loading:!1});case hh.SUCCESS:var a=t.data.tenantPath;return Rt(Rt({},e),{},{tenantPath:a,error:void 0});case fh:return Rt(Rt({},e),{},{id:void 0,tenantPath:void 0,data:void 0,history:void 0});default:return e}},vh=JSON.parse('{"daysHours":"{{days}}\xa0d\xa0{{hours}}\xa0h","hoursMin":"{{hours}}\xa0h\xa0{{minutes}}\xa0m","minSec":"{{minutes}}\xa0m\xa0{{seconds}}\xa0s","secMs":"{{seconds}}\xa0s\xa0{{ms}}\xa0ms","days":"{{days}}\xa0d","hours":"{{hours}}\xa0h","min":"{{minutes}}\xa0m","sec":"{{seconds}}\xa0s","ms":"{{ms}}\xa0ms"}'),mh=JSON.parse('{"daysHours":"{{days}}\xa0\u0434\xa0{{hours}}\xa0\u0447","hoursMin":"{{hours}}\xa0\u0447\xa0{{minutes}}\xa0\u043c","minSec":"{{minutes}}\xa0\u043c\xa0{{seconds}}\xa0\u0441","secMs":"{{seconds}}\xa0\u0441\xa0{{ms}}\xa0\u043c\u0441","days":"{{days}}\xa0\u0434","hours":"{{hours}}\xa0\u0447","min":"{{minutes}}\xa0\u043c","sec":"{{seconds}}\xa0\u0441","ms":"{{ms}}\xa0\u043c\u0441"}'),_h="ydb-time-parsers";Va.registerKeyset(Fa.En,_h,vh),Va.registerKeyset(Fa.Ru,_h,mh);var yh=Va.keyset(_h),bh=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,n=e%1e3,i=Math.floor(e/1e3),r=Math.floor(i/yi);i%=yi;var o=Math.floor(i/_i);i%=_i;var a=Math.floor(i/60),s=i%=60,u={days:r,hours:o,minutes:a,seconds:s,ms:n};if(2===t){if(r>0)return yh("daysHours",u);if(o>0)return yh("hoursMin",u);if(a>0)return yh("minSec",u);if(s>0)return yh("secMs",u)}if(1===t){if(r>0)return yh("days",u);if(o>0)return yh("hours",u);if(a>0)return yh("min",u);if(s>0)return yh("sec",u)}return yh("ms",u)},wh=function(e){return(e.seconds?1e3*Number(e.seconds):0)+(e.nanos?e.nanos/1e6:0)},Ch=function(e){return e?function(e){return"string"===typeof e?1e3*parseInt(e,10):wh(e)}(e):0},kh=function(e){if(!e)return 0;var t=Date.now()-function(e){return"string"===typeof e?Date.parse(e):wh(e)}(e);return t<0?0:t},Sh=ia("topic","FETCH_TOPIC"),xh="topic/SET_DATA_WAS_NOT_LOADED",Lh="topic/CLEAN_TOPIC_DATA",Eh={loading:!0,wasLoaded:!1,data:void 0},Dh=function(){return{type:xh}};function Nh(e){return oa({request:window.api.getTopic({path:e}),actions:Sh})}var Mh=function(e){var t;return null===(t=e.topic.data)||void 0===t?void 0:t.consumers},Th=$c([Mh],(function(e){return null===e||void 0===e?void 0:e.map((function(e){return null===e||void 0===e?void 0:e.name})).filter((function(e){return void 0!==e}))})),Ih=$c([function(e){var t;return null===(t=e.topic.data)||void 0===t?void 0:t.topic_stats}],(function(e){if(e){var t=e||{},n=t.store_size_bytes,i=void 0===n?"0":n,r=t.min_last_write_time,o=t.max_write_time_lag,a=t.bytes_written;return{storeSize:i,partitionsIdleTime:kh(r),partitionsWriteLag:Ch(o),writeSpeed:Kd(a)}}})),Oh=$c([Mh],(function(e){return null===e||void 0===e?void 0:e.map((function(e){var t=e||{},n=t.name,i=t.consumer_stats||{},r=i.min_partitions_last_read_time,o=i.max_read_time_lag,a=i.max_write_time_lag,s=i.bytes_read;return{name:n,readSpeed:Kd(s),writeLag:Ch(a),readLag:Ch(o),readIdleTime:kh(r)}}))})),Ah=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Eh,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Sh.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Sh.SUCCESS:return"object"!==typeof t.data?Rt(Rt({},e),{},{loading:!1,error:{}}):Rt(Rt({},e),{},{data:t.data,loading:!1,wasLoaded:!0,error:void 0});case Sh.FAILURE:var n;return null!==(n=t.error)&&void 0!==n&&n.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});case xh:return Rt(Rt({},e),{},{wasLoaded:!1});case Lh:return Rt(Rt({},e),{},{data:void 0});default:return e}},Rh=function(e){var t=e||{},n=t.partition_offsets,i=t.store_size_bytes,r=void 0===i?"0":i,o=t.last_write_time,a=t.max_write_time_lag,s=t.bytes_written,u=t.partition_node_id,l=void 0===u?0:u,c=n||{},d=c.start,h=void 0===d?"0":d,f=c.end,p=void 0===f?"0":f;return{storeSize:r,writeSpeed:Kd(s),partitionWriteLag:Ch(a),partitionWriteIdleTime:kh(o),startOffset:h,endOffset:p,partitionNodeId:l}},Ph=function(e){return null===e||void 0===e?void 0:e.map((function(e){var t=e.partition_id,n=void 0===t?"0":t,i=e.partition_stats;return Rt({partitionId:n},Rh(i))}))},Zh=function(e){return null===e||void 0===e?void 0:e.map((function(e){var t=e.partition_id,n=void 0===t?"0":t,i=e.partition_stats,r=e.partition_consumer_stats,o=Rh(i),a=o.endOffset,s=r||{},u=s.last_read_offset,l=void 0===u?"0":u,c=s.committed_offset,d=void 0===c?"0":c,h=s.read_session_id,f=s.last_read_time,p=s.max_read_time_lag,g=s.max_write_time_lag,v=s.bytes_read,m=s.reader_name,_=s.connection_node_id,y=void 0===_?0:_,b=pr(a)&&pr(d)?Number(a)-Number(d):0,w=pr(a)&&pr(l)?Number(a)-Number(l):0;return Rt(Rt({},o),{},{partitionId:n,readSpeed:Kd(v),consumerWriteLag:Ch(g),consumerReadLag:Ch(p),consumerReadIdleTime:kh(f),uncommitedMessages:b,unreadMessages:w,commitedOffset:d,readSessionId:h,readerName:m,connectionNodeId:y})}))},Fh=ia("partitions","FETCH_PARTITIONS"),jh="partitions/SET_SELECTED_CONSUMER",Hh="partitions/SET_DATA_WAS_NOT_LOADED",Bh={loading:!1,wasLoaded:!1,selectedConsumer:""},zh=function(e){return{type:jh,data:e}};var Wh=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Bh,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Fh.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Fh.SUCCESS:return Rt(Rt({},e),{},{partitions:t.data,loading:!1,wasLoaded:!0,error:void 0});case Fh.FAILURE:var n;return null!==(n=t.error)&&void 0!==n&&n.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});case jh:return Rt(Rt({},e),{},{selectedConsumer:t.data});case Hh:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},Vh=function(e){return function(e){return Boolean(e&&"object"===typeof e&&"message"in e&&"Network Error"===e.message)}(e)?e.message:null!==e&&void 0!==e?e:"Unauthorized"},Yh=20,Uh=ia("query","SEND_QUERY"),Kh="query/CHANGE_USER_INPUT",qh="query/SAVE_QUERY_TO_HISTORY",Gh="query/GO_TO_PREVIOUS_QUERY",$h="query/GO_TO_NEXT_QUERY",Qh="query/SET_MONACO_HOT_KEY",Xh="query/SET_TENANT_PATH",Jh=_r.readUserSettingsValue(Ai,[]),ef=Jh.length-Yh,tf={sendQuery:"sendQuery",goPrev:"goPrev",goNext:"goNext"},nf={loading:!1,input:"",history:{queries:Jh.slice(ef<0?0:ef),currentIndex:Jh.length>Yh?Yh-1:Jh.length-1},monacoHotKey:null},rf=function(e){var t=e.input;return{type:Kh,data:{input:t}}},of=function(e){return e.executeQuery.history.queries.map((function(e){return"string"===typeof e?{queryText:e}:e}))},af=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:nf,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Uh.REQUEST:return Rt(Rt({},e),{},{loading:!0,data:void 0,error:void 0});case Uh.SUCCESS:return Rt(Rt({},e),{},{data:t.data,stats:t.data.stats,loading:!1,error:void 0});case Uh.FAILURE:return Rt(Rt({},e),{},{error:Vh(t.error),loading:!1});case Kh:return Rt(Rt({},e),{},{input:t.data.input});case qh:var n=t.data.queryText,i=t.data.mode===Ji.pg?tr.pg:void 0,r=[].concat((0,Ct.Z)(e.history.queries),[{queryText:n,syntax:i}]).slice(e.history.queries.length>=Yh?1:0);_r.setUserSettingsValue(Ai,r);var o=r.length-1;return Rt(Rt({},e),{},{history:{queries:r,currentIndex:o}});case Gh:var a=Math.max(0,e.history.currentIndex-1);return Rt(Rt({},e),{},{history:Rt(Rt({},e.history),{},{currentIndex:a})});case $h:var s=e.history.queries.length-1,u=Math.min(s,e.history.currentIndex+1);return Rt(Rt({},e),{},{history:Rt(Rt({},e.history),{},{currentIndex:u})});case Qh:return Rt(Rt({},e),{},{monacoHotKey:t.data});case Xh:return Rt(Rt({},e),{},{tenantPath:t.data});default:return e}},sf=new Set(["PlanNodeId","PlanNodeType","Node Type","Plans"]);function uf(e){var t=[];if(e.Operators){var n,i=[],r=(0,Na.Z)(e.Operators);try{for(r.s();!(n=r.n()).done;){for(var o=n.value,a={name:o.Name,items:[]},s=0,u=Object.entries(o);s<u.length;s++){var l=(0,ne.Z)(u[s],2),c=l[0],d=l[1];if("Name"!==c){var h=Array.isArray(d)?d.join(", "):d;a.items.push({name:c,value:h})}}i.push(a)}}catch(y){r.e(y)}finally{r.f()}t.push({group:"Operators",stats:i})}if("Connection"===e.PlanNodeType){for(var f=[],p=0,g=Object.entries(e);p<g.length;p++){var v=(0,ne.Z)(g[p],2),m=v[0],_=v[1];sf.has(m)||f.push({name:m,value:String(_)})}f.length>0&&t.push({group:"Attributes",stats:f})}return t}function lf(e){switch(e.PlanNodeType){case"Connection":return"connection";case"ResultSet":return"result";case"Query":return"query";default:return"stage"}}var cf=ia("query","GET_EXPLAIN_QUERY"),df=ia("query","GET_EXPLAIN_QUERY_AST"),hf={loading:!1},ff={v2:"0.2"},pf=Object.values(ff),gf=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:hf,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case cf.REQUEST:return Rt(Rt({},e),{},{loading:!0,data:void 0,error:void 0,dataAst:void 0,errorAst:void 0});case cf.SUCCESS:return Rt(Rt({},e),{},{data:t.data.plan,dataAst:t.data.ast,loading:!1,error:void 0});case cf.FAILURE:return Rt(Rt({},e),{},{error:Vh(t.error),loading:!1});case df.REQUEST:return Rt(Rt({},e),{},{loadingAst:!0,dataAst:void 0,errorAst:void 0});case df.SUCCESS:return Rt(Rt({},e),{},{dataAst:t.data.ast,loadingAst:!1,error:void 0});case df.FAILURE:return Rt(Rt({},e),{},{errorAst:Vh(t.error),loadingAst:!1});default:return e}},vf=ia("tabletsFilters","FETCH_TABLETS_FILTERS"),mf={data:void 0,loading:!0,wasLoaded:!1,stateFilter:[],typeFilter:[]};var _f=function(e){var t=e.tabletsFilters.tabletsData;return(null===t||void 0===t?void 0:t.TabletStateInfo)||[]},yf=$c([_f,function(e){return e.tabletsFilters.stateFilter},function(e){return e.tabletsFilters.typeFilter}],(function(e,t,n){var i=e;return n.length>0&&(i=i.filter((function(e){return n.some((function(t){return e.Type===t}))}))),t.length>0&&(i=i.filter((function(e){return t.some((function(t){return e.State===t}))}))),i})),bf=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:mf,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case vf.REQUEST:return Rt(Rt({},e),{},{loading:!0,requestTime:(new Date).getTime()});case vf.SUCCESS:var n=(new Date).getTime()-e.requestTime,i=(0,ne.Z)(t.data,2),r=i[0],o=i[1];return Rt(Rt({},e),{},{tabletsData:r,nodes:o,loading:!1,wasLoaded:!0,timeoutForRequest:n>vi?n:vi,error:void 0});case vf.FAILURE:return Rt(Rt({},e),{},{error:t.error||"Request-URI Too Large. Please reload the page",loading:!1});case"CLEAR_WAS_LOADING_TABLETS":var a=e.stateFilter,s=e.typeFilter;return Rt(Rt({},mf),{},{stateFilter:a,typeFilter:s});case"SET_STATE_FILTER":return Rt(Rt({},e),{},{stateFilter:t.data});case"SET_TYPE_FILTER":return Rt(Rt({},e),{},{typeFilter:t.data});default:return e}},wf=ia("preview","SEND_QUERY"),Cf="preview/SET_QUERY_OPTIONS",kf={loading:!1,wasLoaded:!1};var Sf=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:kf,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case wf.REQUEST:return Rt(Rt({},e),{},{loading:!0,error:void 0});case wf.SUCCESS:return Rt(Rt({},e),{},{data:t.data,loading:!1,error:void 0,wasLoaded:!0});case wf.FAILURE:return Rt(Rt({},e),{},{error:t.error||"Unauthorized",loading:!1});case Cf:return Rt(Rt({},e),t.data);default:return e}},xf=ia("nodesList","FETCH_NODES_LIST"),Lf={loading:!0,wasLoaded:!1,data:[]};function Ef(){return oa({request:window.api.getNodesList(),actions:xf})}var Df=function(e){return ka(e.nodesList.data)},Nf=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Lf,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case xf.REQUEST:return Rt(Rt({},e),{},{loading:!0});case xf.SUCCESS:return Rt(Rt({},e),{},{data:t.data,loading:!1,wasLoaded:!0,error:void 0});case xf.FAILURE:return Rt(Rt({},e),{},{error:t.error,loading:!1});default:return e}},Mf=ia("describe","FETCH_DESCRIBE"),Tf="describe/SET_CURRENT_DESCRIBE_PATH",If="describe/SET_DATA_WAS_NOT_LOADED",Of={loading:!1,wasLoaded:!1,data:{},currentDescribe:void 0,currentDescribePath:void 0};var Af=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Of,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Mf.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Mf.SUCCESS:var n=t.data.path===e.currentDescribePath,i=Rt(Rt({},e.data),t.data.data);return Rt(Rt({},e),{},n?{data:i,currentDescribe:t.data.currentDescribe,loading:!1,wasLoaded:!0,error:void 0}:{data:i});case Mf.FAILURE:var r;return null!==(r=t.error)&&void 0!==r&&r.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});case Tf:return Rt(Rt({},e),{},{currentDescribePath:t.data});case If:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},Rf=ia("schemaAcl","FETCH_SCHEMA_ACL"),Pf="schemaAcl/SET_DATA_WAS_NOT_LOADED",Zf={loading:!1,wasLoaded:!1};var Ff=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Zf,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Rf.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Rf.SUCCESS:var n,i,r=null===(n=t.data.Common)||void 0===n?void 0:n.ACL,o=null===(i=t.data.Common)||void 0===i?void 0:i.Owner;return Rt(Rt({},e),{},{acl:r,owner:o,loading:!1,wasLoaded:!0,error:void 0});case Rf.FAILURE:var a;return null!==(a=t.error)&&void 0!==a&&a.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});case Pf:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},jf=function(e){return"(\n SELECT\n MAX(IntervalEnd)\n FROM `".concat(e,"/.sys/top_queries_by_cpu_time_one_hour`\n)")};var Hf=ia("top-queries","FETCH_TOP_QUERIES"),Bf="top-queries/SET_TOP_QUERIES_STATE",zf="top-queries/SET_TOP_QUERIES_FILTERS",Wf={loading:!1,wasLoaded:!1,filters:{}},Vf=function(e,t){var n=function(e,t){var n=[];if(null!==t&&void 0!==t&&t.from&&null!==t&&void 0!==t&&t.to&&t.from>t.to)throw new Error("Invalid date range");if(null!==t&&void 0!==t&&t.from){var i=t.to===t.from?">=":">";n.push("IntervalEnd ".concat(i," Timestamp('").concat(new Date(t.from).toISOString(),"')"))}return null!==t&&void 0!==t&&t.to&&n.push("IntervalEnd <= Timestamp('".concat(new Date(t.to).toISOString(),"')")),null!==t&&void 0!==t&&t.from||null!==t&&void 0!==t&&t.to||n.push("IntervalEnd IN ".concat(jf(e))),null!==t&&void 0!==t&&t.text&&n.push("QueryText ILIKE '%".concat(t.text,"%'")),n.join(" AND ")}(e,t);return"\nSELECT\n CPUTime as CPUTimeUs,\n QueryText,\n IntervalEnd,\n EndTime,\n ReadRows,\n ReadBytes,\n UserSID\nFROM `".concat(e,"/.sys/top_queries_by_cpu_time_one_hour`\nWHERE ").concat(n||"true","\n")};var Yf=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Wf,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Hf.REQUEST:return Rt(Rt({},e),{},{loading:!0,error:void 0});case Hf.SUCCESS:return Rt(Rt({},e),{},{data:t.data,loading:!1,error:void 0,wasLoaded:!0});case Hf.FAILURE:return Rt(Rt({},e),{},{error:t.error||"Unauthorized",loading:!1});case Bf:return Rt(Rt({},e),t.data);case zf:return Rt(Rt({},e),{},{filters:Rt(Rt({},e.filters),t.filters)});default:return e}},Uf=ia("tenantOverviewTopQueries","FETCH_TOP_QUERIES"),Kf="tenantOverviewTopQueries/SET_DATA_WAS_NOT_LOADED",qf={loading:!1,wasLoaded:!1,filters:{}},Gf=function(e){return"\nSELECT\n CPUTime as CPUTimeUs,\n QueryText,\nFROM `".concat(e,"/.sys/top_queries_by_cpu_time_one_hour`\nORDER BY CPUTimeUs DESC\nLIMIT ").concat(Si,"\n")},$f=function(e){return oa({request:window.api.sendQuery({schema:"modern",query:Gf(e),database:e,action:"execute-scan"},{concurrentId:"executeTopQueries"}),actions:Uf,dataHandler:rr})};var Qf=ia("top-tables","FETCH_TOP_TABLES"),Xf="top-tables/SET_DATA_WAS_NOT_LOADED",Jf={loading:!1,wasLoaded:!1},ep=function(e){return"\nSELECT\n Path, SUM(DataSize) as Size\nFROM `".concat(e,"/.sys/partition_stats`\nGROUP BY Path\n ORDER BY Size DESC\n LIMIT ").concat(Si,"\n")},tp=function(e){return oa({request:window.api.sendQuery({schema:"modern",query:ep(e),database:e,action:"execute-scan"},{concurrentId:"executeTopTables"}),actions:Qf,dataHandler:rr})};var np=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Jf,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Qf.REQUEST:return Rt(Rt({},e),{},{loading:!0,error:void 0});case Qf.SUCCESS:return Rt(Rt({},e),{},{data:t.data,loading:!1,error:void 0,wasLoaded:!0});case Qf.FAILURE:var n;return null!==(n=t.error)&&void 0!==n&&n.isCancelled?e:Rt(Rt({},e),{},{error:t.error||"Unauthorized",loading:!1});case Xf:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},ip=ia("cluster","FETCH_HEALTHCHECK"),rp="healthcheckInfo/SET_DATA_WAS_NOT_LOADED",op={loading:!1,wasLoaded:!1},ap={RED:0,ORANGE:1,YELLOW:2,BLUE:3,GREEN:4},sp=function(e){return e.sort((function(e,t){return(ap[e.status]||0)-(ap[t.status]||0)}))},up=function(e){var t=e.issue,n=e.data;return sp(n.filter((function(e){return t.reason&&-1!==t.reason.indexOf(e.id)})))},lp=function(e){return sp(e.filter((function(t){return!e.find((function(e){return e.reason&&-1!==e.reason.indexOf(t.id)}))})))},cp=function e(t){var n=t.data,i=t.roots;return i?i.map((function(t){var i=e({roots:up({issue:t,data:n}),data:n});return Rt(Rt({},t),{},{reasonsItems:i})})):[]},dp=function(e){var t,n={},i=(0,Na.Z)(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;n[r.status]||(n[r.status]=0),n[r.status]++}}catch(o){i.e(o)}finally{i.f()}return Object.entries(n).sort((function(e,t){var n=(0,ne.Z)(e,1)[0],i=(0,ne.Z)(t,1)[0];return(ap[n]||0)-(ap[i]||0)}))},hp=function(e){var t;return null===(t=e.healthcheckInfo.data)||void 0===t?void 0:t.issue_log},fp=$c(hp,(function(){return lp(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[])})),pp=$c([hp,fp],(function(){return cp({data:arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],roots:arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]})})),gp=$c(hp,(function(){return dp(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[])}));var vp,mp=function(){return{type:rp}},_p=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:op,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case ip.REQUEST:return Rt(Rt({},e),{},{loading:!0});case ip.SUCCESS:var n=t.data;return Rt(Rt({},e),{},{data:n,wasLoaded:!0,loading:!1,error:void 0});case ip.FAILURE:var i;return null!==(i=t.error)&&void 0!==i&&i.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1,wasLoaded:!0,data:void 0});case rp:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}};!function(e){e.Immediate="immediate",e.History="history"}(vp||(vp={}));var yp=ia("query","SEND_SHARD_QUERY"),bp="query/SET_SHARD_STATE",wp="shardsWorkload/SET_SHARD_QUERY_FILTERS",Cp={loading:!1,wasLoaded:!1,filters:{}};function kp(e){var t=e.columnId,n=e.order;return"".concat(t," ").concat(n)}function Sp(e,t,n,i){var r=i?"CAST(SUBSTRING(CAST(Path AS String), ".concat(i.length,") AS Utf8) AS Path"):"Path",o="Path='".concat(e,"' OR Path LIKE '").concat(e,"/%'"),a=function(e){var t=[];if(null!==e&&void 0!==e&&e.from&&null!==e&&void 0!==e&&e.to&&e.from>e.to)throw new Error("Invalid date range");if(null!==e&&void 0!==e&&e.from){var n=e.to===e.from?">=":">";t.push("IntervalEnd ".concat(n," Timestamp('").concat(new Date(e.from).toISOString(),"')"))}return null!==e&&void 0!==e&&e.to&&t.push("IntervalEnd <= Timestamp('".concat(new Date(e.to).toISOString(),"')")),t.join(" AND ")}(t);a.length&&(o="(".concat(o,") AND ").concat(a));var s=n?"ORDER BY ".concat(n.map(kp).join(", ")):"";return"SELECT\n ".concat(r,",\n TabletId,\n CPUCores,\n DataSize,\n NodeId,\n PeakTime,\n InFlightTxCount,\n IntervalEnd\nFROM `.sys/top_partitions_one_hour`\nWHERE ").concat(o,"\n").concat(s,"\nLIMIT 20")}function xp(e,t,n){var i=n?"CAST(SUBSTRING(CAST(Path AS String), ".concat(n.length,") AS Utf8) AS Path"):"Path",r=t?"ORDER BY ".concat(t.map(kp).join(", ")):"";return"SELECT\n ".concat(i,",\n TabletId,\n CPUCores,\n DataSize,\n NodeId,\n InFlightTxCount\nFROM `.sys/partition_stats`\nWHERE\n Path='").concat(e,"'\n OR Path LIKE '").concat(e,"/%'\n").concat(r,"\nLIMIT 20")}var Lp=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Cp,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case yp.REQUEST:return Rt(Rt({},e),{},{loading:!0,error:void 0});case yp.SUCCESS:return Rt(Rt({},e),{},{data:t.data,loading:!1,error:void 0,wasLoaded:!0});case yp.FAILURE:var n;return null!==(n=t.error)&&void 0!==n&&n.isCancelled?e:Rt(Rt({},e),{},{error:t.error||"Unauthorized",loading:!1});case bp:return Rt(Rt({},e),t.data);case wp:return Rt(Rt({},e),{},{filters:Rt(Rt({},e.filters),t.filters)});default:return e}},Ep=ia("tenantOverviewTopShards","FETCH_TENANT_OVERVIEW_TOP_SHARDS"),Dp="tenantOverviewTopShards/SET_DATA_WAS_NOT_LOADED",Np={loading:!1,wasLoaded:!1};function Mp(e,t){var n=t?"CAST(SUBSTRING(CAST(Path AS String), ".concat(t.length,") AS Utf8) AS Path"):"Path";return"SELECT\n ".concat(n,",\n TabletId,\n CPUCores,\nFROM `.sys/partition_stats`\nWHERE\n Path='").concat(e,"'\n OR Path LIKE '").concat(e,"/%'\nORDER BY CPUCores DESC\nLIMIT ").concat(Si)}var Tp="execute-scan";var Ip=ia("hot_keys","FETCH_HOT_KEYS"),Op="hot_keys/SET_HOT_KEYS_OPTIONS",Ap={loading:!0,data:{},wasLoaded:!1};var Rp=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ap,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Ip.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Ip.SUCCESS:return Rt(Rt({},e),{},{data:t.data.hotkeys,loading:!1,error:void 0,wasLoaded:!0});case Ip.FAILURE:return Rt(Rt({},e),{},{error:t.error,loading:!1});case Op:return Rt(Rt({},e),t.data);default:return e}},Pp=ia("query","SEND_OLAP_STATS_QUERY"),Zp="olapStats/RESET_LOADING_STATE",Fp={loading:!1,wasLoaded:!1};function jp(e){return"SELECT * FROM `".concat(e,"/.sys/primary_index_stats`")}var Hp=function(e){var t=e.path,n=void 0===t?"":t;return oa({request:window.api.sendQuery({schema:"modern",query:jp(n),database:n,action:"execute-scan"}),actions:Pp,dataHandler:rr})};var Bp=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Fp,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Pp.REQUEST:return Rt(Rt({},e),{},{loading:!0,error:void 0});case Pp.SUCCESS:return Rt(Rt({},e),{},{data:t.data,loading:!1,error:void 0,wasLoaded:!0});case Pp.FAILURE:return Rt(Rt({},e),{},{error:t.error||"Unauthorized",loading:!1});case Zp:return Rt(Rt({},e),{},{wasLoaded:Fp.wasLoaded});default:return e}},zp="header/SET_HEADER_BREADCRUMBS",Wp={pageBreadcrumbsOptions:{}};function Vp(e,t){return{type:zp,page:e,options:t}}var Yp=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Wp,t=arguments.length>1?arguments[1]:void 0;return t.type===zp?{page:t.page,pageBreadcrumbsOptions:t.options}:e},Up="SET_QUERY_NAME_TO_EDIT",Kp="CLEAR_QUERY_NAME_TO_EDIT",qp=null;function Gp(e){return{type:Up,data:e}}var $p=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:qp,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Up:return t.data;case Kp:return null;default:return e}},Qp="ENABLE_FULLSCREEN_MODE",Xp="DISABLE_FULLSCREEN_MODE",Jp=!1;function eg(){return{type:Xp}}var tg=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Jp;switch((arguments.length>1?arguments[1]:void 0).type){case Xp:return!1;case Qp:return!0;default:return e}};var ng,ig,rg,og=function(){return!(arguments.length>0&&void 0!==arguments[0])||arguments[0]},ag={singleClusterMode:og,nodes:Ps,topNodesByLoad:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Hs,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Fs.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Fs.SUCCESS:var n;return Rt(Rt({},e),{},{data:null===(n=t.data)||void 0===n?void 0:n.Nodes,loading:!1,wasLoaded:!0,error:void 0});case Fs.FAILURE:var i;return null!==(i=t.error)&&void 0!==i&&i.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});case js:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},topNodesByCpu:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ks,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Ys.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Ys.SUCCESS:var n;return Rt(Rt({},e),{},{data:null===(n=t.data)||void 0===n?void 0:n.Nodes,loading:!1,wasLoaded:!0,error:void 0});case Ys.FAILURE:var i;return null!==(i=t.error)&&void 0!==i&&i.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});case Us:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},topNodesByMemory:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:eu,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Xs.REQUEST:return Rt(Rt({},e),{},{loading:!0});case Xs.SUCCESS:var n;return Rt(Rt({},e),{},{data:null===(n=t.data)||void 0===n?void 0:n.Nodes,loading:!1,wasLoaded:!0,error:void 0});case Xs.FAILURE:var i;return null!==(i=t.error)&&void 0!==i&&i.isCancelled?e:Rt(Rt({},e),{},{error:t.error,loading:!1});case Js:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},cluster:cu,clusterNodes:pu,tenant:Nu,storage:ul,topStorageGroups:ml,node:Sl,tooltip:nc,tablets:lc,schema:Id,overview:jd,olapStats:Bp,host:zd,network:Ud,tenants:ch,tablet:gh,topic:Ah,partitions:Wh,executeQuery:af,explainQuery:gf,tabletsFilters:bf,heatmap:ca,settings:Dr,preview:Sf,nodesList:Nf,describe:Af,schemaAcl:Ff,executeTopQueries:Yf,executeTopTables:np,tenantOverviewTopQueries:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:qf,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Uf.REQUEST:return Rt(Rt({},e),{},{loading:!0,error:void 0});case Uf.SUCCESS:return Rt(Rt({},e),{},{data:t.data,loading:!1,error:void 0,wasLoaded:!0});case Uf.FAILURE:return Rt(Rt({},e),{},{error:t.error||"Unauthorized",loading:!1});case Kf:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},healthcheckInfo:_p,shardsWorkload:Lp,tenantOverviewTopShards:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Np,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Ep.REQUEST:return Rt(Rt({},e),{},{loading:!0,error:void 0});case Ep.SUCCESS:return Rt(Rt({},e),{},{data:t.data,loading:!1,error:void 0,wasLoaded:!0});case Ep.FAILURE:var n;return null!==(n=t.error)&&void 0!==n&&n.isCancelled?e:Rt(Rt({},e),{},{error:t.error||"Unauthorized",loading:!1});case Dp:return Rt(Rt({},e),{},{wasLoaded:!1});default:return e}},hotKeys:Rp,authentication:ta,header:Yp,saveQuery:$p,fullscreen:tg},sg=function(e){for(var t=Object.keys(e),n={},i=0;i<t.length;i++){var r=t[i];0,"function"===typeof e[r]&&(n[r]=e[r])}var o,a=Object.keys(n);try{!function(e){Object.keys(e).forEach((function(t){var n=e[t];if("undefined"===typeof n(void 0,{type:Wt.INIT}))throw new Error('Reducer "'+t+"\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.");if("undefined"===typeof n(void 0,{type:Wt.PROBE_UNKNOWN_ACTION()}))throw new Error('Reducer "'+t+"\" returned undefined when probed with a random type. Don't try to handle "+Wt.INIT+' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')}))}(n)}catch(s){o=s}return function(e,t){if(void 0===e&&(e={}),o)throw o;for(var i=!1,r={},s=0;s<a.length;s++){var u=a[s],l=n[u],c=e[u],d=l(c,t);if("undefined"===typeof d){var h=Ut(u,t);throw new Error(h)}r[u]=d,i=i||d!==c}return i?r:e}}(Rt({},ag)),ug=sg,lg=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||qt;function cg(e,t,n){var i=function(e,t){return{locationMiddleware:(0,Jt.zl)(ha,fa,e,t,_a).locationMiddleware,reducersWithLocation:ya(ha,fa,t)}}(t,e),r=i.locationMiddleware,o=i.reducersWithLocation,a=Gt(Xt,r);return lg(a)(Yt)(o,{singleClusterMode:n})}var dg=window.web_version,hg=window.custom_backend,fg=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ug,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=tn(window.location.href,t);ng=n.backend,ig=n.basename,rg=n.clusterName;var i=xe({basename:ig}),r=cg(e,i,t);return(0,Jt.C1)(r,i),{history:i,store:r}},pg="tenant",gg={cluster:"/".concat("cluster","/:activeTab?"),tenant:"/".concat(pg),node:"/".concat("node","/:id/:activeTab?"),tablet:"/".concat("tablet","/:id"),tabletsFilters:"/tabletsFilters",auth:"/auth"},vg=function(e){return Zt().parse(e.search,{ignoreQueryPrefix:!0})},mg=function(e){var t=e,n=/:\d{3,5}/g,i=e.match(n);if(i){var r=i[0];t=e.replace(n,":\\"+r.slice(1))}return t};function _g(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=n,r=Boolean(n.backend);ng&&!r&&dg&&(i=Rt(Rt({},n),{},{backend:ng}));var o=Boolean(n.clusterName);rg&&!o&&dg&&(i=Rt(Rt({},i),{},{clusterName:rg}));var a=Ht()(i)?"":"?".concat(Zt().stringify(i,{encode:!1})),s=mg(e);return"".concat((0,Ft.compile)(s)(t)).concat(a)}var yg=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return _g(window.location.pathname,void 0,e)},bg=gg,wg=e.createContext({activeTabId:void 0});wg.displayName="TabsContext";var Cg,kg=n(133);!function(e){e.Pending="pending",e.Success="success",e.Error="error"}(Cg||(Cg={}));var Sg,xg=n(93453),Lg=(0,ft.Ge)("clipboard-icon"),Eg=function(t){return e.createElement("path",{stroke:"currentColor",fill:"transparent",className:Lg("state"),strokeWidth:"1.5",d:t})},Dg=(Sg={},(0,wt.Z)(Sg,Cg.Success,Eg("M9.5 13l3 3l5 -5")),(0,wt.Z)(Sg,Cg.Error,Eg("M9.5 10l8 8m-8 0l8 -8")),Sg);function Ng(t){var n=t.size,i=t.status,r=t.className;return e.createElement("svg",Object.assign({width:n,height:n,viewBox:"0 0 24 24",className:Lg(null,r)},xg.i),e.createElement("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}),i===Cg.Pending?null:Dg[i])}var Mg=n(17972),Tg=n.n(Mg),Ig=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var e;return(0,X.Z)(this,i),(e=n.apply(this,arguments)).state={status:i.INITIAL_STATUS},e.handleCopy=function(t,n){var r=e.props,o=r.timeout,a=r.onCopy;e.setState({status:n?Cg.Success:Cg.Error}),clearTimeout(e.timerId),e.timerId=window.setTimeout((function(){e.setState({status:i.INITIAL_STATUS}),e.timerId=void 0}),o),null===a||void 0===a||a(t,n)},e}return(0,J.Z)(i,[{key:"componentWillUnmount",value:function(){clearTimeout(this.timerId)}},{key:"render",value:function(){var t=this.props,n=t.children,i=t.text,r=t.options,o=n(this.state.status);if(!e.isValidElement(o))throw new Error("Content must be a valid react element");return e.createElement(Tg(),{text:String(i),onCopy:this.handleCopy,options:r},o)}}]),i}(e.Component);Ig.INITIAL_STATUS=Cg.Pending;var Og=(0,ft.Ge)("label"),Ag={xs:{copyIconSize:12,closeIconSize:12,buttonSize:"xs"},s:{copyIconSize:14,closeIconSize:14,buttonSize:"s"},m:{copyIconSize:16,closeIconSize:16,buttonSize:"m"}},Rg={pin:"brick-round",className:Og("addon",{side:"right",interactive:!0})},Pg=e.forwardRef((function(t,n){var i=t.type,r=void 0===i?"default":i,o=t.theme,a=void 0===o?"normal":o,s=t.size,u=void 0===s?"xs":s,l=t.icon,c=t.children,d=t.onClose,h=t.className,f=t.disabled,p=t.copyText,g=t.closeButtonLabel,v=t.copyButtonLabel,m=t.interactive,_=void 0!==m&&m,y=t.value,b=t.onCopy,w=t.onClick,C=t.qa,k=e.useRef(null),S=Boolean(""!==c&&e.Children.count(c)>0),x="close"===r&&S,L="copy"===r&&S,E=Boolean(w),D=Boolean(L&&p),N=(E||D||_)&&!f,M=Ag[u],T=M.copyIconSize,I=M.closeIconSize,O=M.buttonSize,A=l&&e.createElement("div",{className:Og("addon",{side:S?"left":void 0})},l),R=S&&e.createElement("div",{className:Og("text")},e.createElement("div",{className:Og("content")},c),Boolean(y)&&e.createElement("div",{className:Og("value")},e.createElement("div",{className:Og("separator")},":"),e.createElement("div",{className:Og("key")},y))),P=function(e){E&&e.stopPropagation(),d&&d(e)},Z=function(e){var t;(null===(t=k.current)||void 0===t?void 0:t.contains(e.target))||null===w||void 0===w||w(e)},F=(0,kg.b)(Z).onKeyDown,j=function(t){var i;return L?i=e.createElement(_o.z,Object.assign({ref:k,size:O,extraProps:{"aria-label":v||void 0}},Rg),e.createElement(_o.z.Icon,null,e.createElement(Ng,{status:t||Cg.Pending,size:T}))):x&&(i=e.createElement(_o.z,Object.assign({ref:k,onClick:d?P:void 0,size:O,extraProps:{"aria-label":g||void 0}},Rg),e.createElement(yo.J,{size:I,data:go.Z}))),e.createElement("div",{ref:n,role:E?"button":void 0,tabIndex:E?0:void 0,onClick:E?Z:void 0,onKeyDown:E?F:void 0,className:Og({theme:a,size:u,type:r,"is-interactive":N,"has-right-addon":Boolean(i),"has-left-addon":Boolean(A),disabled:f},h),"data-qa":C},A,R,i)};return D&&p&&!E?e.createElement(Ig,{text:p,onCopy:b,timeout:1e3},(function(e){return j(e)})):j()})),Zg=(0,ft.Ge)("tabs");function Fg(t){var n=t.id,i=t.className,r=t.title,o=t.meta,a=t.hint,s=t.icon,u=t.counter,l=t.label,c=t.active,d=t.disabled,h=t.hasOverflow,f=t.extraProps,p=t.onClick,g=e.useContext(wg).activeTabId,v="boolean"===typeof c?c:g===n,m=e.useMemo((function(){return void 0!==a?a:"string"===typeof r?r:void 0}),[a,r]);return e.createElement("div",Object.assign({},f,{role:"tab","aria-selected":v,"aria-disabled":!0===d,tabIndex:d?-1:0,className:Zg("item",{active:v,disabled:d,overflow:Boolean(h)},i),title:m,onClick:function(){p(n)},onKeyDown:function(e){" "===e.key&&p(n)}}),e.createElement("div",{className:Zg("item-content")},s&&e.createElement("div",{className:Zg("item-icon")},s),e.createElement("div",{className:Zg("item-title")},r||n),"number"===typeof u&&e.createElement("div",{className:Zg("item-counter")},u),l&&e.createElement(Pg,{className:Zg("item-label"),theme:l.theme},l.content)),o&&e.createElement("div",{className:Zg("item-meta")},o))}Fg.displayName="Tabs.Item";var jg,Hg=(0,ft.Ge)("tabs");!function(e){e.Horizontal="horizontal",e.Vertical="vertical"}(jg||(jg={}));var Bg=[],zg=e.forwardRef((function(t,n){var i=t.direction,r=void 0===i?jg.Horizontal:i,o=t.size,a=void 0===o?"m":o,s=t.activeTab,u=t.allowNotSelected,l=void 0!==u&&u,c=t.items,d=void 0===c?Bg:c,h=t.children,f=t.className,p=t.onSelectTab,g=t.wrapTo,v=t.qa,m=function(e,t,n){var i;return e||(t||0===(null===n||void 0===n?void 0:n.length)||null===(i=null===n||void 0===n?void 0:n[0])||void 0===i?void 0:i.id)}(s,l,d),_=e.useMemo((function(){return{activeTabId:m}}),[m]),y=e.useMemo((function(){var t=function(e){p&&p(e)};return d.map((function(n,i){var r=e.createElement(Fg,Object.assign({key:n.id},n,{onClick:t}));return g?g(n,r,i):r}))}),[d,p,g]);return e.createElement("div",{role:"tablist",className:Hg({direction:r,size:a},f),"data-qa":v,ref:n},e.createElement(wg.Provider,{value:_},h||y))}));zg.displayName="Tabs";var Wg=Object.assign(zg,{Item:Fg}),Vg=function(e){var t=e;/\d{1,}-\d{1,}(-\d){0,}(-hotfix-\d{1,}(-\d{1,})?)?\.[0-9a-zA-Z]+$/.test(e)&&(t=t.replace(/(-hotfix-\d{1,}(-\d{1,})?)?\.[0-9a-zA-Z]+$/,""));return/\d{1,}-\d{1,}-\d{1,}-\d{1,}$/.test(e)&&(t=t.replace(/-\d{1,}$/,"")),t},Yg=function(e){var t=Vg(e);return/\d{1,}-\d{1,}-\d{1,}/.test(t)?t.replace(/-\d{1,}$/,""):t},Ug=function(e){return e.split("").reduce((function(e,t){var n=(e<<5)-e+t.charCodeAt(0);return n&n}),0)},Kg=["#008000","#4169e1","#ffd700","#ff8c00","#808000","#e9967a","#ff1493","#00bfff","#da70d6","#3cb371","#b22222"],qg=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Map;return e.forEach((function(e){var n,i=Yg(e),r=Vg(e);t.has(i)||t.set(i,new Set),null===(n=t.get(i))||void 0===n||n.add(r)})),t},Gg=function(e){var t=Array.from(e.keys()).map((function(e){return{version:e,hash:Ug(e)}})),n=new Map,i=Kg.length-1;return t.sort((function(e,t){return e.hash-t.hash})).forEach((function(t){if(/^(\w+-)?stable/.test(t.version)){i=(i+1)%Kg.length,n.set(t.version,Kg[i]);var r=Array.from(e.get(t.version)||[]).filter((function(e){return e!==t.version})).map((function(e){return{version:e,hash:Ug(e)}})),o=r.length;r.sort((function(e,t){return t.hash-e.hash})).forEach((function(e,t){var r=Kg[i],a=Math.max(100-t*(100/o),20),s=Math.round(255*a/100).toString(16),u="".concat(r).concat(s);n.set(e.version,u)}))}else n.set(t.version,"#bfbfbf")})),n},$g=function(){return Gg(qg(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]))},Qg=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,n=e.reduce((function(e,t){return t.Version&&(e[t.Version]?e[t.Version]=e[t.Version]+1:e[t.Version]=1),e}),{});return Object.keys(n).map((function(i){return{title:i,version:i,color:null===t||void 0===t?void 0:t.get(Vg(i)),value:n[i]/e.length*100}}))},Xg=function(){function e(){(0,X.Z)(this,e),this.timeout=void 0,this.active=void 0,this.timer=void 0,this.launchCounter=void 0,this.timeout=e.DEFAULT_TIMEOUT,this.active=!0,this.timer=void 0,this.launchCounter=0}return(0,J.Z)(e,[{key:"wait",value:function(e){var t=this;return new Promise((function(n){t.timer=setTimeout(n,e)}))}},{key:"fetch",value:function(){var t=dn(fn().mark((function t(n){var i,r,o,a,s;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.active){t.next=2;break}return t.abrupt("return");case 2:return i=this.launchCounter,t.next=5,this.wait(this.timeout);case 5:if(!this.active){t.next=18;break}return r=Date.now(),t.next=9,n();case 9:if(o=Date.now(),i===this.launchCounter){t.next=12;break}return t.abrupt("return");case 12:s=(a=o-r)>e.MIN_TIMEOUT?a:e.MIN_TIMEOUT,this.timeout=s,this.fetch(n),t.next=19;break;case 18:return t.abrupt("return");case 19:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}()},{key:"stop",value:function(){this.timer&&clearTimeout(this.timer),this.active=!1}},{key:"start",value:function(){this.launchCounter++,this.active=!0}}]),e}();Xg.DEFAULT_TIMEOUT=3e4,Xg.MIN_TIMEOUT=3e4;var Jg=function(t,n){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=(0,e.useRef)(null);null===r.current&&(r.current=new Xg);var o=r.current;(0,e.useEffect)((function(){t(!1)}),n),(0,e.useEffect)((function(){return o.stop(),i&&(o.start(),o.fetch((function(){return t(!0)}))),function(){o.stop()}}),[i].concat((0,Ct.Z)(n)))},ev=Q,tv=function(t,n){var i=K(),r=ev((function(e){var i;return null!==(i=function(e,t){return e.settings.userSettings[t]}(e,t))&&void 0!==i?i:n})),o=(0,e.useCallback)((function(e){i(function(e,t){return function(n){n({type:br,data:{name:e,value:t}}),_r.setUserSettingsValue(e,t)}}(t,e))}),[i,t]);return[r,o]},nv=function(){return tv(Wi)},iv=function(t,n){var i=t.sortValue,r=t.sortOrder,o=void 0===r?bn:r;return[(0,e.useMemo)((function(){if(i)return{columnId:i,order:o}}),[i,o]),function(e){var t=Array.isArray(e)?e[0]:e;n({sortValue:null===t||void 0===t?void 0:t.columnId,sortOrder:null===t||void 0===t?void 0:t.order})}]},rv=function(){var e=ct();return vg(e)};e.Component;e.Component;var ov=function(e,t){return"function"===typeof e?e(t):e},av=function(e,t){return"string"===typeof e?_e(e,null,null,t):e},sv=function(e){return e},uv=e.forwardRef;"undefined"===typeof uv&&(uv=sv);var lv=uv((function(t,n){var i=t.innerRef,r=t.navigate,o=t.onClick,a=d(t,["innerRef","navigate","onClick"]),s=a.target,u=c({},a,{onClick:function(e){try{o&&o(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||s&&"_self"!==s||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=sv!==uv&&n||i,e.createElement("a",u)}));var cv=uv((function(t,n){var i=t.component,r=void 0===i?lv:i,o=t.replace,a=t.to,s=t.innerRef,u=d(t,["component","replace","to","innerRef"]);return e.createElement(We.Consumer,null,(function(t){t||he(!1);var i=t.history,l=av(ov(a,t.location),t.location),d=l?i.createHref(l):"",h=c({},u,{href:d,navigate:function(){var e=ov(a,t.location),n=me(t.location)===me(av(e));(o||n?i.replace:i.push)(e)}});return sv!==uv?h.ref=n||s:h.innerRef=s,e.createElement(r,h)}))})),dv=function(e){return e},hv=e.forwardRef;"undefined"===typeof hv&&(hv=dv);hv((function(t,n){var i=t["aria-current"],r=void 0===i?"page":i,o=t.activeClassName,a=void 0===o?"active":o,s=t.activeStyle,u=t.className,l=t.exact,h=t.isActive,f=t.location,p=t.sensitive,g=t.strict,v=t.style,m=t.to,_=t.innerRef,y=d(t,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return e.createElement(We.Consumer,null,(function(t){t||he(!1);var i=f||t.location,o=av(ov(m,i),i),d=o.pathname,b=d&&d.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),w=b?et(i.pathname,{path:b,exact:l,sensitive:p,strict:g}):null,C=!!(h?h(w,i):w),k="function"===typeof u?u(C):u,S="function"===typeof v?v(C):v;C&&(k=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(k,a),S=c({},S,s));var x=c({"aria-current":C&&r||null,className:k,style:S,to:o},y);return dv!==hv?x.ref=n||_:x.innerRef=_,e.createElement(cv,x)}))}));var fv,pv=["className","to","onClick"],gv=(0,ht.Z)("yc-link"),vv=function(e){var t=e.className,n=e.to,i=e.onClick,r=nn(e,pv);return n?(0,Nl.jsx)(cv,Rt({to:n,onClick:i,className:gv({view:"normal"},t)},r)):(0,Nl.jsx)("span",{className:t,onClick:i,children:r.children})},mv=n(24237),_v=(0,ft.Ge)("link"),yv=e.forwardRef((function(t,n){var i=t.view,r=void 0===i?"normal":i,o=t.visitable,a=t.href,s=t.target,u=t.rel,l=t.title,c=t.children,d=t.extraProps,h=t.onClick,f=t.onFocus,p=t.onBlur,g=t.id,v=t.style,m=t.className,_=t.qa,y={title:l,onClick:h,onClickCapture:e.useCallback((function(e){mv.P.publish({componentId:"Link",eventId:"click",domEvent:e})}),[]),onFocus:f,onBlur:p,id:g,style:v,className:_v({view:r,visitable:o},m),"data-qa":_};if("string"===typeof a){var b="_blank"!==s||u?u:"noopener noreferrer";return e.createElement("a",Object.assign({},d,y,{ref:n,href:a,target:s,rel:b}),c)}return e.createElement("span",Object.assign({},d,y,{ref:n,tabIndex:0}),c)}));function bv(){return bv=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},bv.apply(this,arguments)}var wv,Cv=function(t){return e.createElement("svg",bv({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},t),fv||(fv=e.createElement("path",{d:"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm-24 152c0-13.2 10.8-24 24-24s24 10.75 24 24v128c0 13.25-10.75 24-24 24s-24-10.7-24-24V152zm24 248c-17.36 0-31.44-14.08-31.44-31.44s14.07-31.44 31.44-31.44 31.44 14.08 31.44 31.44C287.4 385.9 273.4 400 256 400z"})))};function kv(){return kv=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},kv.apply(this,arguments)}var Sv,xv=function(t){return e.createElement("svg",kv({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},t),wv||(wv=e.createElement("path",{d:"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 128c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.3-32-32 14.3-32 32-32zm40 256h-80c-13.2 0-24-10.7-24-24s10.75-24 24-24h16v-64h-8c-13.25 0-24-10.75-24-24s10.8-24 24-24h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24s-10.7 24-24 24z"})))};function Lv(){return Lv=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Lv.apply(this,arguments)}var Ev,Dv=function(t){return e.createElement("svg",Lv({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},t),Sv||(Sv=e.createElement("path",{d:"M0 256C0 114.6 114.6 0 256 0s256 114.6 256 256-114.6 256-256 256S0 397.4 0 256zm175-47.9l47.1 47L175 303c-9.3 9.4-9.3 24.6 0 33.1 9.4 10.2 24.6 10.2 33.1 0l47-46.2 47.9 46.2c9.4 10.2 24.6 10.2 33.1 0 10.2-8.5 10.2-23.7 0-33.1l-46.2-47.9 46.2-47c10.2-8.5 10.2-23.7 0-33.1-8.5-9.3-23.7-9.3-33.1 0l-47.9 47.1-47-47.1c-8.5-9.3-23.7-9.3-33.1 0-9.3 9.4-9.3 24.6 0 33.1z"})))};function Nv(){return Nv=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Nv.apply(this,arguments)}var Mv=function(t){return e.createElement("svg",Nv({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},t),Ev||(Ev=e.createElement("path",{d:"M506.3 417L293 53c-16.33-28-57.54-28-73.98 0L5.82 417c-16.41 27.9 4.029 63 36.92 63h426.6c32.76 0 53.26-35 36.96-63zM232 168c0-13.25 10.75-24 24-24s24 10.8 24 24v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zm24 248c-17.36 0-31.44-14.08-31.44-31.44s14.07-31.44 31.44-31.44 31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z"})))},Tv=n(30590);function Iv(e,t){"function"===typeof e?e(t):e&&(e.current=t)}function Ov(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e.useMemo((function(){return n.every((function(e){return null===e||void 0===e}))?null:function(e){for(var t=0,i=n;t<i.length;t++){Iv(i[t],e)}}}),n)}function Av(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Rv(e){return e instanceof Av(e).Element||e instanceof Element}function Pv(e){return e instanceof Av(e).HTMLElement||e instanceof HTMLElement}function Zv(e){return"undefined"!==typeof ShadowRoot&&(e instanceof Av(e).ShadowRoot||e instanceof ShadowRoot)}var Fv=Math.max,jv=Math.min,Hv=Math.round;function Bv(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function zv(){return!/^((?!chrome|android).)*safari/i.test(Bv())}function Wv(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),r=1,o=1;t&&Pv(e)&&(r=e.offsetWidth>0&&Hv(i.width)/e.offsetWidth||1,o=e.offsetHeight>0&&Hv(i.height)/e.offsetHeight||1);var a=(Rv(e)?Av(e):window).visualViewport,s=!zv()&&n,u=(i.left+(s&&a?a.offsetLeft:0))/r,l=(i.top+(s&&a?a.offsetTop:0))/o,c=i.width/r,d=i.height/o;return{width:c,height:d,top:l,right:u+c,bottom:l+d,left:u,x:u,y:l}}function Vv(e){var t=Av(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Yv(e){return e?(e.nodeName||"").toLowerCase():null}function Uv(e){return((Rv(e)?e.ownerDocument:e.document)||window.document).documentElement}function Kv(e){return Wv(Uv(e)).left+Vv(e).scrollLeft}function qv(e){return Av(e).getComputedStyle(e)}function Gv(e){var t=qv(e),n=t.overflow,i=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+r+i)}function $v(e,t,n){void 0===n&&(n=!1);var i=Pv(t),r=Pv(t)&&function(e){var t=e.getBoundingClientRect(),n=Hv(t.width)/e.offsetWidth||1,i=Hv(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),o=Uv(t),a=Wv(e,r,n),s={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(i||!i&&!n)&&(("body"!==Yv(t)||Gv(o))&&(s=function(e){return e!==Av(e)&&Pv(e)?{scrollLeft:(t=e).scrollLeft,scrollTop:t.scrollTop}:Vv(e);var t}(t)),Pv(t)?((u=Wv(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):o&&(u.x=Kv(o))),{x:a.left+s.scrollLeft-u.x,y:a.top+s.scrollTop-u.y,width:a.width,height:a.height}}function Qv(e){var t=Wv(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Xv(e){return"html"===Yv(e)?e:e.assignedSlot||e.parentNode||(Zv(e)?e.host:null)||Uv(e)}function Jv(e){return["html","body","#document"].indexOf(Yv(e))>=0?e.ownerDocument.body:Pv(e)&&Gv(e)?e:Jv(Xv(e))}function em(e,t){var n;void 0===t&&(t=[]);var i=Jv(e),r=i===(null==(n=e.ownerDocument)?void 0:n.body),o=Av(i),a=r?[o].concat(o.visualViewport||[],Gv(i)?i:[]):i,s=t.concat(a);return r?s:s.concat(em(Xv(a)))}function tm(e){return["table","td","th"].indexOf(Yv(e))>=0}function nm(e){return Pv(e)&&"fixed"!==qv(e).position?e.offsetParent:null}function im(e){for(var t=Av(e),n=nm(e);n&&tm(n)&&"static"===qv(n).position;)n=nm(n);return n&&("html"===Yv(n)||"body"===Yv(n)&&"static"===qv(n).position)?t:n||function(e){var t=/firefox/i.test(Bv());if(/Trident/i.test(Bv())&&Pv(e)&&"fixed"===qv(e).position)return null;var n=Xv(e);for(Zv(n)&&(n=n.host);Pv(n)&&["html","body"].indexOf(Yv(n))<0;){var i=qv(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}var rm="top",om="bottom",am="right",sm="left",um="auto",lm=[rm,om,am,sm],cm="start",dm="end",hm="clippingParents",fm="viewport",pm="popper",gm="reference",vm=lm.reduce((function(e,t){return e.concat([t+"-"+cm,t+"-"+dm])}),[]),mm=[].concat(lm,[um]).reduce((function(e,t){return e.concat([t,t+"-"+cm,t+"-"+dm])}),[]),_m=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function ym(e){var t=new Map,n=new Set,i=[];function r(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&r(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||r(e)})),i}function bm(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=void 0,n(e())}))}))),t}}var wm={placement:"bottom",modifiers:[],strategy:"absolute"};function Cm(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"===typeof e.getBoundingClientRect)}))}function km(e){void 0===e&&(e={});var t=e,n=t.defaultModifiers,i=void 0===n?[]:n,r=t.defaultOptions,o=void 0===r?wm:r;return function(e,t,n){void 0===n&&(n=o);var r={placement:"bottom",orderedModifiers:[],options:Object.assign({},wm,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},a=[],s=!1,u={state:r,setOptions:function(n){var s="function"===typeof n?n(r.options):n;l(),r.options=Object.assign({},o,r.options,s),r.scrollParents={reference:Rv(e)?em(e):e.contextElement?em(e.contextElement):[],popper:em(t)};var c=function(e){var t=ym(e);return _m.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}(function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}([].concat(i,r.options.modifiers)));return r.orderedModifiers=c.filter((function(e){return e.enabled})),r.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,i=void 0===n?{}:n,o=e.effect;if("function"===typeof o){var s=o({state:r,name:t,instance:u,options:i}),l=function(){};a.push(s||l)}})),u.update()},forceUpdate:function(){if(!s){var e=r.elements,t=e.reference,n=e.popper;if(Cm(t,n)){r.rects={reference:$v(t,im(n),"fixed"===r.options.strategy),popper:Qv(n)},r.reset=!1,r.placement=r.options.placement,r.orderedModifiers.forEach((function(e){return r.modifiersData[e.name]=Object.assign({},e.data)}));for(var i=0;i<r.orderedModifiers.length;i++)if(!0!==r.reset){var o=r.orderedModifiers[i],a=o.fn,l=o.options,c=void 0===l?{}:l,d=o.name;"function"===typeof a&&(r=a({state:r,options:c,name:d,instance:u})||r)}else r.reset=!1,i=-1}}},update:bm((function(){return new Promise((function(e){u.forceUpdate(),e(r)}))})),destroy:function(){l(),s=!0}};if(!Cm(e,t))return u;function l(){a.forEach((function(e){return e()})),a=[]}return u.setOptions(n).then((function(e){!s&&n.onFirstUpdate&&n.onFirstUpdate(e)})),u}}var Sm={passive:!0};function xm(e){return e.split("-")[0]}function Lm(e){return e.split("-")[1]}function Em(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Dm(e){var t,n=e.reference,i=e.element,r=e.placement,o=r?xm(r):null,a=r?Lm(r):null,s=n.x+n.width/2-i.width/2,u=n.y+n.height/2-i.height/2;switch(o){case rm:t={x:s,y:n.y-i.height};break;case om:t={x:s,y:n.y+n.height};break;case am:t={x:n.x+n.width,y:u};break;case sm:t={x:n.x-i.width,y:u};break;default:t={x:n.x,y:n.y}}var l=o?Em(o):null;if(null!=l){var c="y"===l?"height":"width";switch(a){case cm:t[l]=t[l]-(n[c]/2-i[c]/2);break;case dm:t[l]=t[l]+(n[c]/2-i[c]/2)}}return t}var Nm={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Mm(e){var t,n=e.popper,i=e.popperRect,r=e.placement,o=e.variation,a=e.offsets,s=e.position,u=e.gpuAcceleration,l=e.adaptive,c=e.roundOffsets,d=e.isFixed,h=a.x,f=void 0===h?0:h,p=a.y,g=void 0===p?0:p,v="function"===typeof c?c({x:f,y:g}):{x:f,y:g};f=v.x,g=v.y;var m=a.hasOwnProperty("x"),_=a.hasOwnProperty("y"),y=sm,b=rm,w=window;if(l){var C=im(n),k="clientHeight",S="clientWidth";if(C===Av(n)&&"static"!==qv(C=Uv(n)).position&&"absolute"===s&&(k="scrollHeight",S="scrollWidth"),r===rm||(r===sm||r===am)&&o===dm)b=om,g-=(d&&C===w&&w.visualViewport?w.visualViewport.height:C[k])-i.height,g*=u?1:-1;if(r===sm||(r===rm||r===om)&&o===dm)y=am,f-=(d&&C===w&&w.visualViewport?w.visualViewport.width:C[S])-i.width,f*=u?1:-1}var x,L=Object.assign({position:s},l&&Nm),E=!0===c?function(e,t){var n=e.x,i=e.y,r=t.devicePixelRatio||1;return{x:Hv(n*r)/r||0,y:Hv(i*r)/r||0}}({x:f,y:g},Av(n)):{x:f,y:g};return f=E.x,g=E.y,u?Object.assign({},L,((x={})[b]=_?"0":"",x[y]=m?"0":"",x.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+g+"px)":"translate3d("+f+"px, "+g+"px, 0)",x)):Object.assign({},L,((t={})[b]=_?g+"px":"",t[y]=m?f+"px":"",t.transform="",t))}var Tm={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},r=t.elements[e];Pv(r)&&Yv(r)&&(Object.assign(r.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?r.removeAttribute(e):r.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],r=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Pv(i)&&Yv(i)&&(Object.assign(i.style,o),Object.keys(r).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};var Im={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,r=n.offset,o=void 0===r?[0,0]:r,a=mm.reduce((function(e,n){return e[n]=function(e,t,n){var i=xm(e),r=[sm,rm].indexOf(i)>=0?-1:1,o="function"===typeof n?n(Object.assign({},t,{placement:e})):n,a=o[0],s=o[1];return a=a||0,s=(s||0)*r,[sm,am].indexOf(i)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,o),e}),{}),s=a[t.placement],u=s.x,l=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=u,t.modifiersData.popperOffsets.y+=l),t.modifiersData[i]=a}},Om={left:"right",right:"left",bottom:"top",top:"bottom"};function Am(e){return e.replace(/left|right|bottom|top/g,(function(e){return Om[e]}))}var Rm={start:"end",end:"start"};function Pm(e){return e.replace(/start|end/g,(function(e){return Rm[e]}))}function Zm(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Zv(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Fm(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function jm(e,t,n){return t===fm?Fm(function(e,t){var n=Av(e),i=Uv(e),r=n.visualViewport,o=i.clientWidth,a=i.clientHeight,s=0,u=0;if(r){o=r.width,a=r.height;var l=zv();(l||!l&&"fixed"===t)&&(s=r.offsetLeft,u=r.offsetTop)}return{width:o,height:a,x:s+Kv(e),y:u}}(e,n)):Rv(t)?function(e,t){var n=Wv(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):Fm(function(e){var t,n=Uv(e),i=Vv(e),r=null==(t=e.ownerDocument)?void 0:t.body,o=Fv(n.scrollWidth,n.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),a=Fv(n.scrollHeight,n.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),s=-i.scrollLeft+Kv(e),u=-i.scrollTop;return"rtl"===qv(r||n).direction&&(s+=Fv(n.clientWidth,r?r.clientWidth:0)-o),{width:o,height:a,x:s,y:u}}(Uv(e)))}function Hm(e,t,n,i){var r="clippingParents"===t?function(e){var t=em(Xv(e)),n=["absolute","fixed"].indexOf(qv(e).position)>=0&&Pv(e)?im(e):e;return Rv(n)?t.filter((function(e){return Rv(e)&&Zm(e,n)&&"body"!==Yv(e)})):[]}(e):[].concat(t),o=[].concat(r,[n]),a=o[0],s=o.reduce((function(t,n){var r=jm(e,n,i);return t.top=Fv(r.top,t.top),t.right=jv(r.right,t.right),t.bottom=jv(r.bottom,t.bottom),t.left=Fv(r.left,t.left),t}),jm(e,a,i));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function Bm(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function zm(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Wm(e,t){void 0===t&&(t={});var n=t,i=n.placement,r=void 0===i?e.placement:i,o=n.strategy,a=void 0===o?e.strategy:o,s=n.boundary,u=void 0===s?hm:s,l=n.rootBoundary,c=void 0===l?fm:l,d=n.elementContext,h=void 0===d?pm:d,f=n.altBoundary,p=void 0!==f&&f,g=n.padding,v=void 0===g?0:g,m=Bm("number"!==typeof v?v:zm(v,lm)),_=h===pm?gm:pm,y=e.rects.popper,b=e.elements[p?_:h],w=Hm(Rv(b)?b:b.contextElement||Uv(e.elements.popper),u,c,a),C=Wv(e.elements.reference),k=Dm({reference:C,element:y,strategy:"absolute",placement:r}),S=Fm(Object.assign({},y,k)),x=h===pm?S:C,L={top:w.top-x.top+m.top,bottom:x.bottom-w.bottom+m.bottom,left:w.left-x.left+m.left,right:x.right-w.right+m.right},E=e.modifiersData.offset;if(h===pm&&E){var D=E[r];Object.keys(L).forEach((function(e){var t=[am,om].indexOf(e)>=0?1:-1,n=[rm,om].indexOf(e)>=0?"y":"x";L[e]+=D[n]*t}))}return L}var Vm={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var r=n.mainAxis,o=void 0===r||r,a=n.altAxis,s=void 0===a||a,u=n.fallbackPlacements,l=n.padding,c=n.boundary,d=n.rootBoundary,h=n.altBoundary,f=n.flipVariations,p=void 0===f||f,g=n.allowedAutoPlacements,v=t.options.placement,m=xm(v),_=u||(m===v||!p?[Am(v)]:function(e){if(xm(e)===um)return[];var t=Am(e);return[Pm(e),t,Pm(t)]}(v)),y=[v].concat(_).reduce((function(e,n){return e.concat(xm(n)===um?function(e,t){void 0===t&&(t={});var n=t,i=n.placement,r=n.boundary,o=n.rootBoundary,a=n.padding,s=n.flipVariations,u=n.allowedAutoPlacements,l=void 0===u?mm:u,c=Lm(i),d=c?s?vm:vm.filter((function(e){return Lm(e)===c})):lm,h=d.filter((function(e){return l.indexOf(e)>=0}));0===h.length&&(h=d);var f=h.reduce((function(t,n){return t[n]=Wm(e,{placement:n,boundary:r,rootBoundary:o,padding:a})[xm(n)],t}),{});return Object.keys(f).sort((function(e,t){return f[e]-f[t]}))}(t,{placement:n,boundary:c,rootBoundary:d,padding:l,flipVariations:p,allowedAutoPlacements:g}):n)}),[]),b=t.rects.reference,w=t.rects.popper,C=new Map,k=!0,S=y[0],x=0;x<y.length;x++){var L=y[x],E=xm(L),D=Lm(L)===cm,N=[rm,om].indexOf(E)>=0,M=N?"width":"height",T=Wm(t,{placement:L,boundary:c,rootBoundary:d,altBoundary:h,padding:l}),I=N?D?am:sm:D?om:rm;b[M]>w[M]&&(I=Am(I));var O=Am(I),A=[];if(o&&A.push(T[E]<=0),s&&A.push(T[I]<=0,T[O]<=0),A.every((function(e){return e}))){S=L,k=!1;break}C.set(L,A)}if(k)for(var R=function(e){var t=y.find((function(t){var n=C.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return S=t,"break"},P=p?3:1;P>0;P--){if("break"===R(P))break}t.placement!==S&&(t.modifiersData[i]._skip=!0,t.placement=S,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Ym(e,t,n){return Fv(e,jv(t,n))}var Um={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,r=n.mainAxis,o=void 0===r||r,a=n.altAxis,s=void 0!==a&&a,u=n.boundary,l=n.rootBoundary,c=n.altBoundary,d=n.padding,h=n.tether,f=void 0===h||h,p=n.tetherOffset,g=void 0===p?0:p,v=Wm(t,{boundary:u,rootBoundary:l,padding:d,altBoundary:c}),m=xm(t.placement),_=Lm(t.placement),y=!_,b=Em(m),w="x"===b?"y":"x",C=t.modifiersData.popperOffsets,k=t.rects.reference,S=t.rects.popper,x="function"===typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,L="number"===typeof x?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),E=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,D={x:0,y:0};if(C){if(o){var N,M="y"===b?rm:sm,T="y"===b?om:am,I="y"===b?"height":"width",O=C[b],A=O+v[M],R=O-v[T],P=f?-S[I]/2:0,Z=_===cm?k[I]:S[I],F=_===cm?-S[I]:-k[I],j=t.elements.arrow,H=f&&j?Qv(j):{width:0,height:0},B=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[M],W=B[T],V=Ym(0,k[I],H[I]),Y=y?k[I]/2-P-V-z-L.mainAxis:Z-V-z-L.mainAxis,U=y?-k[I]/2+P+V+W+L.mainAxis:F+V+W+L.mainAxis,K=t.elements.arrow&&im(t.elements.arrow),q=K?"y"===b?K.clientTop||0:K.clientLeft||0:0,G=null!=(N=null==E?void 0:E[b])?N:0,$=O+U-G,Q=Ym(f?jv(A,O+Y-G-q):A,O,f?Fv(R,$):R);C[b]=Q,D[b]=Q-O}if(s){var X,J="x"===b?rm:sm,ee="x"===b?om:am,te=C[w],ne="y"===w?"height":"width",ie=te+v[J],re=te-v[ee],oe=-1!==[rm,sm].indexOf(m),ae=null!=(X=null==E?void 0:E[w])?X:0,se=oe?ie:te-k[ne]-S[ne]-ae+L.altAxis,ue=oe?te+k[ne]+S[ne]-ae-L.altAxis:re,le=f&&oe?function(e,t,n){var i=Ym(e,t,n);return i>n?n:i}(se,te,ue):Ym(f?se:ie,te,f?ue:re);C[w]=le,D[w]=le-te}t.modifiersData[i]=D}},requiresIfExists:["offset"]},Km=function(e,t){return Bm("number"!==typeof(e="function"===typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:zm(e,lm))};var qm={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,r=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,s=xm(n.placement),u=Em(s),l=[sm,am].indexOf(s)>=0?"height":"width";if(o&&a){var c=Km(r.padding,n),d=Qv(o),h="y"===u?rm:sm,f="y"===u?om:am,p=n.rects.reference[l]+n.rects.reference[u]-a[u]-n.rects.popper[l],g=a[u]-n.rects.reference[u],v=im(o),m=v?"y"===u?v.clientHeight||0:v.clientWidth||0:0,_=p/2-g/2,y=c[h],b=m-d[l]-c[f],w=m/2-d[l]/2+_,C=Ym(y,w,b),k=u;n.modifiersData[i]=((t={})[k]=C,t.centerOffset=C-w,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!==typeof i||(i=t.elements.popper.querySelector(i)))&&Zm(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Gm(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function $m(e){return[rm,am,om,sm].some((function(t){return e[t]>=0}))}var Qm=km({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,r=i.scroll,o=void 0===r||r,a=i.resize,s=void 0===a||a,u=Av(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&l.forEach((function(e){e.addEventListener("scroll",n.update,Sm)})),s&&u.addEventListener("resize",n.update,Sm),function(){o&&l.forEach((function(e){e.removeEventListener("scroll",n.update,Sm)})),s&&u.removeEventListener("resize",n.update,Sm)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=Dm({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,r=void 0===i||i,o=n.adaptive,a=void 0===o||o,s=n.roundOffsets,u=void 0===s||s,l={placement:xm(t.placement),variation:Lm(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Mm(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:u})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Mm(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Tm,Im,Vm,Um,qm,{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,a=Wm(t,{elementContext:"reference"}),s=Wm(t,{altBoundary:!0}),u=Gm(a,i),l=Gm(s,r,o),c=$m(u),d=$m(l);t.modifiersData[n]={referenceClippingOffsets:u,popperEscapeOffsets:l,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}}]}),Xm=n(88807),Jm=n.n(Xm),e_=function(e){return e.reduce((function(e,t){var n=t[0],i=t[1];return e[n]=i,e}),{})},t_="undefined"!==typeof window&&window.document&&window.document.createElement?e.useLayoutEffect:e.useEffect,n_=[],i_=function(n,i,r){void 0===r&&(r={});var o=e.useRef(null),a={onFirstUpdate:r.onFirstUpdate,placement:r.placement||"bottom",strategy:r.strategy||"absolute",modifiers:r.modifiers||n_},s=e.useState({styles:{popper:{position:a.strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),u=s[0],l=s[1],c=e.useMemo((function(){return{name:"updateState",enabled:!0,phase:"write",fn:function(e){var n=e.state,i=Object.keys(n.elements);t.flushSync((function(){l({styles:e_(i.map((function(e){return[e,n.styles[e]||{}]}))),attributes:e_(i.map((function(e){return[e,n.attributes[e]]})))})}))},requires:["computeStyles"]}}),[]),d=e.useMemo((function(){var e={onFirstUpdate:a.onFirstUpdate,placement:a.placement,strategy:a.strategy,modifiers:[].concat(a.modifiers,[c,{name:"applyStyles",enabled:!1}])};return Jm()(o.current,e)?o.current||e:(o.current=e,e)}),[a.onFirstUpdate,a.placement,a.strategy,a.modifiers,c]),h=e.useRef();return t_((function(){h.current&&h.current.setOptions(d)}),[d]),t_((function(){if(null!=n&&null!=i){var e=(r.createPopper||Qm)(n,i,d);return h.current=e,function(){e.destroy(),h.current=null}}}),[n,i,r.createPopper]),{state:h.current?h.current.state:null,styles:u.styles,attributes:u.attributes,update:h.current?h.current.update:null,forceUpdate:h.current?h.current.forceUpdate:null}},r_=["bottom-start","bottom","bottom-end","top-start","top","top-end","right-start","right","right-end","left-start","left","left-end"];var o_=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],a_=o_.join(","),s_="undefined"===typeof Element,u_=s_?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,l_=!s_&&Element.prototype.getRootNode?function(e){var t;return null===e||void 0===e||null===(t=e.getRootNode)||void 0===t?void 0:t.call(e)}:function(e){return null===e||void 0===e?void 0:e.ownerDocument},c_=function e(t,n){var i;void 0===n&&(n=!0);var r=null===t||void 0===t||null===(i=t.getAttribute)||void 0===i?void 0:i.call(t,"inert");return""===r||"true"===r||n&&t&&e(t.parentNode)},d_=function(e,t,n){if(c_(e))return[];var i=Array.prototype.slice.apply(e.querySelectorAll(a_));return t&&u_.call(e,a_)&&i.unshift(e),i=i.filter(n)},h_=function e(t,n,i){for(var r=[],o=Array.from(t);o.length;){var a=o.shift();if(!c_(a,!1))if("SLOT"===a.tagName){var s=a.assignedElements(),u=e(s.length?s:a.children,!0,i);i.flatten?r.push.apply(r,u):r.push({scopeParent:a,candidates:u})}else{u_.call(a,a_)&&i.filter(a)&&(n||!t.includes(a))&&r.push(a);var l=a.shadowRoot||"function"===typeof i.getShadowRoot&&i.getShadowRoot(a),c=!c_(l,!1)&&(!i.shadowRootFilter||i.shadowRootFilter(a));if(l&&c){var d=e(!0===l?a.children:l.children,!0,i);i.flatten?r.push.apply(r,d):r.push({scopeParent:a,candidates:d})}else o.unshift.apply(o,a.children)}}return r},f_=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},p_=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||function(e){var t,n=null===e||void 0===e||null===(t=e.getAttribute)||void 0===t?void 0:t.call(e,"contenteditable");return""===n||"true"===n}(e))&&!f_(e)?0:e.tabIndex},g_=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},v_=function(e){return"INPUT"===e.tagName},m_=function(e){return function(e){return v_(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t,n=e.form||l_(e),i=function(e){return n.querySelectorAll('input[type="radio"][name="'+e+'"]')};if("undefined"!==typeof window&&"undefined"!==typeof window.CSS&&"function"===typeof window.CSS.escape)t=i(window.CSS.escape(e.name));else try{t=i(e.name)}catch(o){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",o.message),!1}var r=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}(t,e.form);return!r||r===e}(e)},__=function(e){var t=e.getBoundingClientRect(),n=t.width,i=t.height;return 0===n&&0===i},y_=function(e,t){var n=t.displayCheck,i=t.getShadowRoot;if("hidden"===getComputedStyle(e).visibility)return!0;var r=u_.call(e,"details>summary:first-of-type")?e.parentElement:e;if(u_.call(r,"details:not([open]) *"))return!0;if(n&&"full"!==n&&"legacy-full"!==n){if("non-zero-area"===n)return __(e)}else{if("function"===typeof i){for(var o=e;e;){var a=e.parentElement,s=l_(e);if(a&&!a.shadowRoot&&!0===i(a))return __(e);e=e.assignedSlot?e.assignedSlot:a||s===e.ownerDocument?a:s.host}e=o}if(function(e){var t,n,i,r,o=e&&l_(e),a=null===(t=o)||void 0===t?void 0:t.host,s=!1;if(o&&o!==e)for(s=!!(null!==(n=a)&&void 0!==n&&null!==(i=n.ownerDocument)&&void 0!==i&&i.contains(a)||null!==e&&void 0!==e&&null!==(r=e.ownerDocument)&&void 0!==r&&r.contains(e));!s&&a;){var u,l,c;s=!(null===(l=a=null===(u=o=l_(a))||void 0===u?void 0:u.host)||void 0===l||null===(c=l.ownerDocument)||void 0===c||!c.contains(a))}return s}(e))return!e.getClientRects().length;if("legacy-full"!==n)return!0}return!1},b_=function(e,t){return!(t.disabled||c_(t)||function(e){return v_(e)&&"hidden"===e.type}(t)||y_(t,e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(t)||function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if("FIELDSET"===t.tagName&&t.disabled){for(var n=0;n<t.children.length;n++){var i=t.children.item(n);if("LEGEND"===i.tagName)return!!u_.call(t,"fieldset[disabled] *")||!i.contains(e)}return!0}t=t.parentElement}return!1}(t))},w_=function(e,t){return!(m_(t)||p_(t)<0||!b_(e,t))},C_=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return!!(isNaN(t)||t>=0)},k_=function e(t){var n=[],i=[];return t.forEach((function(t,r){var o=!!t.scopeParent,a=o?t.scopeParent:t,s=function(e,t){var n=p_(e);return n<0&&t&&!f_(e)?0:n}(a,o),u=o?e(t.candidates):a;0===s?o?n.push.apply(n,u):n.push(a):i.push({documentOrder:r,tabIndex:s,item:t,isScope:o,content:u})})),i.sort(g_).reduce((function(e,t){return t.isScope?e.push.apply(e,t.content):e.push(t.content),e}),[]).concat(n)},S_=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==u_.call(e,a_)&&w_(t,e)},x_=o_.concat("iframe").join(","),L_=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==u_.call(e,x_)&&b_(t,e)};function E_(t){var n=t.enabled,i=t.restoreFocusRef,r=t.focusTrapped,o=e.useRef(null),a=e.useRef(null),s=e.useRef(null);return e.useEffect((function(){if(n){var e=function(e){var t=e.target;!r&&t instanceof HTMLElement&&S_(t)&&(s.current=t)},t=function(e){var t=e.target;t instanceof HTMLElement&&S_(t)?s.current=t:s.current=null};return window.addEventListener("focusin",e),window.addEventListener("mousedown",t),window.addEventListener("touchstart",t),function(){window.removeEventListener("focusin",e),window.removeEventListener("mousedown",t),window.removeEventListener("touchstart",t)}}}),[n,r]),e.useEffect((function(){var e;o.current=n&&null!==(e=(null===i||void 0===i?void 0:i.current)||a.current)&&void 0!==e?e:null})),e.useEffect((function(){if(n)return function(){var e=o.current,t=s.current;t&&document.contains(t)&&S_(t)&&(e=t),e&&"function"===typeof e.focus&&document.contains(e)&&L_(e)&&(e!==document.activeElement&&setTimeout((function(){null===e||void 0===e||e.focus()}),0),a.current=null,s.current=null)}}),[n]),{onFocus:function(e){var t;n&&null===a.current&&(a.current=e.relatedTarget,s.current=a.current,o.current=null!==(t=(null===i||void 0===i?void 0:i.current)||a.current)&&void 0!==t?t:null)}}}function D_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function N_(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?D_(Object(n),!0).forEach((function(t){M_(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):D_(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function M_(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!==typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var T_=function(e,t){if(e.length>0){var n=e[e.length-1];n!==t&&n.pause()}var i=e.indexOf(t);-1===i||e.splice(i,1),e.push(t)},I_=function(e,t){var n=e.indexOf(t);-1!==n&&e.splice(n,1),e.length>0&&e[e.length-1].unpause()},O_=function(e){return"Tab"===(null===e||void 0===e?void 0:e.key)||9===(null===e||void 0===e?void 0:e.keyCode)},A_=function(e){return O_(e)&&!e.shiftKey},R_=function(e){return O_(e)&&e.shiftKey},P_=function(e){return setTimeout(e,0)},Z_=function(e,t){var n=-1;return e.every((function(e,i){return!t(e)||(n=i,!1)})),n},F_=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return"function"===typeof e?e.apply(void 0,n):e},j_=function(e){return e.target.shadowRoot&&"function"===typeof e.composedPath?e.composedPath()[0]:e.target},H_=[],B_=function(e,t){var n,i=(null===t||void 0===t?void 0:t.document)||document,r=(null===t||void 0===t?void 0:t.trapStack)||H_,o=N_({returnFocusOnDeactivate:!0,escapeDeactivates:!0,delayInitialFocus:!0,isKeyForward:A_,isKeyBackward:R_},t),a={containers:[],containerGroups:[],tabbableGroups:[],nodeFocusedBeforeActivation:null,mostRecentlyFocusedNode:null,active:!1,paused:!1,delayInitialFocusTimer:void 0,recentNavEvent:void 0},s=function(e,t,n){return e&&void 0!==e[t]?e[t]:o[n||t]},u=function(e,t){var n="function"===typeof(null===t||void 0===t?void 0:t.composedPath)?t.composedPath():void 0;return a.containerGroups.findIndex((function(t){var i=t.container,r=t.tabbableNodes;return i.contains(e)||(null===n||void 0===n?void 0:n.includes(i))||r.find((function(t){return t===e}))}))},l=function(e){var t=o[e];if("function"===typeof t){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];t=t.apply(void 0,r)}if(!0===t&&(t=void 0),!t){if(void 0===t||!1===t)return t;throw new Error("`".concat(e,"` was specified but was not a node, or did not return a node"))}var s=t;if("string"===typeof t&&!(s=i.querySelector(t)))throw new Error("`".concat(e,"` as selector refers to no known node"));return s},c=function(){var e=l("initialFocus");if(!1===e)return!1;if(void 0===e||!L_(e,o.tabbableOptions))if(u(i.activeElement)>=0)e=i.activeElement;else{var t=a.tabbableGroups[0];e=t&&t.firstTabbableNode||l("fallbackFocus")}if(!e)throw new Error("Your focus-trap needs to have at least one focusable element");return e},d=function(){if(a.containerGroups=a.containers.map((function(e){var t=function(e,t){var n;return n=(t=t||{}).getShadowRoot?h_([e],t.includeContainer,{filter:w_.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:C_}):d_(e,t.includeContainer,w_.bind(null,t)),k_(n)}(e,o.tabbableOptions),n=function(e,t){return(t=t||{}).getShadowRoot?h_([e],t.includeContainer,{filter:b_.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):d_(e,t.includeContainer,b_.bind(null,t))}(e,o.tabbableOptions),i=t.length>0?t[0]:void 0,r=t.length>0?t[t.length-1]:void 0,a=n.find((function(e){return S_(e)})),s=n.slice().reverse().find((function(e){return S_(e)})),u=!!t.find((function(e){return p_(e)>0}));return{container:e,tabbableNodes:t,focusableNodes:n,posTabIndexesFound:u,firstTabbableNode:i,lastTabbableNode:r,firstDomTabbableNode:a,lastDomTabbableNode:s,nextTabbableNode:function(e){var i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=t.indexOf(e);return r<0?i?n.slice(n.indexOf(e)+1).find((function(e){return S_(e)})):n.slice(0,n.indexOf(e)).reverse().find((function(e){return S_(e)})):t[r+(i?1:-1)]}}})),a.tabbableGroups=a.containerGroups.filter((function(e){return e.tabbableNodes.length>0})),a.tabbableGroups.length<=0&&!l("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(a.containerGroups.find((function(e){return e.posTabIndexesFound}))&&a.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},h=function e(t){var n=t.activeElement;if(n)return n.shadowRoot&&null!==n.shadowRoot.activeElement?e(n.shadowRoot):n},f=function e(t){!1!==t&&t!==h(document)&&(t&&t.focus?(t.focus({preventScroll:!!o.preventScroll}),a.mostRecentlyFocusedNode=t,function(e){return e.tagName&&"input"===e.tagName.toLowerCase()&&"function"===typeof e.select}(t)&&t.select()):e(c()))},p=function(e){var t=l("setReturnFocus",e);return t||!1!==t&&e},g=function(e){var t=e.target,n=e.event,i=e.isBackward,r=void 0!==i&&i;t=t||j_(n),d();var s=null;if(a.tabbableGroups.length>0){var c=u(t,n),h=c>=0?a.containerGroups[c]:void 0;if(c<0)s=r?a.tabbableGroups[a.tabbableGroups.length-1].lastTabbableNode:a.tabbableGroups[0].firstTabbableNode;else if(r){var f=Z_(a.tabbableGroups,(function(e){var n=e.firstTabbableNode;return t===n}));if(f<0&&(h.container===t||L_(t,o.tabbableOptions)&&!S_(t,o.tabbableOptions)&&!h.nextTabbableNode(t,!1))&&(f=c),f>=0){var p=0===f?a.tabbableGroups.length-1:f-1,g=a.tabbableGroups[p];s=p_(t)>=0?g.lastTabbableNode:g.lastDomTabbableNode}else O_(n)||(s=h.nextTabbableNode(t,!1))}else{var v=Z_(a.tabbableGroups,(function(e){var n=e.lastTabbableNode;return t===n}));if(v<0&&(h.container===t||L_(t,o.tabbableOptions)&&!S_(t,o.tabbableOptions)&&!h.nextTabbableNode(t))&&(v=c),v>=0){var m=v===a.tabbableGroups.length-1?0:v+1,_=a.tabbableGroups[m];s=p_(t)>=0?_.firstTabbableNode:_.firstDomTabbableNode}else O_(n)||(s=h.nextTabbableNode(t))}}else s=l("fallbackFocus");return s},v=function(e){var t=j_(e);u(t,e)>=0||(F_(o.clickOutsideDeactivates,e)?n.deactivate({returnFocus:o.returnFocusOnDeactivate}):F_(o.allowOutsideClick,e)||e.preventDefault())},m=function(e){var t=j_(e),n=u(t,e)>=0;if(n||t instanceof Document)n&&(a.mostRecentlyFocusedNode=t);else{var i;e.stopImmediatePropagation();var r=!0;if(a.mostRecentlyFocusedNode)if(p_(a.mostRecentlyFocusedNode)>0){var s=u(a.mostRecentlyFocusedNode),l=a.containerGroups[s].tabbableNodes;if(l.length>0){var d=l.findIndex((function(e){return e===a.mostRecentlyFocusedNode}));d>=0&&(o.isKeyForward(a.recentNavEvent)?d+1<l.length&&(i=l[d+1],r=!1):d-1>=0&&(i=l[d-1],r=!1))}}else a.containerGroups.some((function(e){return e.tabbableNodes.some((function(e){return p_(e)>0}))}))||(r=!1);else r=!1;r&&(i=g({target:a.mostRecentlyFocusedNode,isBackward:o.isKeyBackward(a.recentNavEvent)})),f(i||(a.mostRecentlyFocusedNode||c()))}a.recentNavEvent=void 0},_=function(e){if(("Escape"===(null===(t=e)||void 0===t?void 0:t.key)||"Esc"===(null===t||void 0===t?void 0:t.key)||27===(null===t||void 0===t?void 0:t.keyCode))&&!1!==F_(o.escapeDeactivates,e))return e.preventDefault(),void n.deactivate();var t;(o.isKeyForward(e)||o.isKeyBackward(e))&&function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];a.recentNavEvent=e;var n=g({event:e,isBackward:t});n&&(O_(e)&&e.preventDefault(),f(n))}(e,o.isKeyBackward(e))},y=function(e){var t=j_(e);u(t,e)>=0||F_(o.clickOutsideDeactivates,e)||F_(o.allowOutsideClick,e)||(e.preventDefault(),e.stopImmediatePropagation())},b=function(){if(a.active)return T_(r,n),a.delayInitialFocusTimer=o.delayInitialFocus?P_((function(){f(c())})):f(c()),i.addEventListener("focusin",m,!0),i.addEventListener("mousedown",v,{capture:!0,passive:!1}),i.addEventListener("touchstart",v,{capture:!0,passive:!1}),i.addEventListener("click",y,{capture:!0,passive:!1}),i.addEventListener("keydown",_,{capture:!0,passive:!1}),n},w=function(){if(a.active)return i.removeEventListener("focusin",m,!0),i.removeEventListener("mousedown",v,!0),i.removeEventListener("touchstart",v,!0),i.removeEventListener("click",y,!0),i.removeEventListener("keydown",_,!0),n},C="undefined"!==typeof window&&"MutationObserver"in window?new MutationObserver((function(e){var t=e.some((function(e){return Array.from(e.removedNodes).some((function(e){return e===a.mostRecentlyFocusedNode}))}));t&&f(c())})):void 0,k=function(){C&&(C.disconnect(),a.active&&!a.paused&&a.containers.map((function(e){C.observe(e,{subtree:!0,childList:!0})})))};return(n={get active(){return a.active},get paused(){return a.paused},activate:function(e){if(a.active)return this;var t=s(e,"onActivate"),n=s(e,"onPostActivate"),r=s(e,"checkCanFocusTrap");r||d(),a.active=!0,a.paused=!1,a.nodeFocusedBeforeActivation=i.activeElement,null===t||void 0===t||t();var o=function(){r&&d(),b(),k(),null===n||void 0===n||n()};return r?(r(a.containers.concat()).then(o,o),this):(o(),this)},deactivate:function(e){if(!a.active)return this;var t=N_({onDeactivate:o.onDeactivate,onPostDeactivate:o.onPostDeactivate,checkCanReturnFocus:o.checkCanReturnFocus},e);clearTimeout(a.delayInitialFocusTimer),a.delayInitialFocusTimer=void 0,w(),a.active=!1,a.paused=!1,k(),I_(r,n);var i=s(t,"onDeactivate"),u=s(t,"onPostDeactivate"),l=s(t,"checkCanReturnFocus"),c=s(t,"returnFocus","returnFocusOnDeactivate");null===i||void 0===i||i();var d=function(){P_((function(){c&&f(p(a.nodeFocusedBeforeActivation)),null===u||void 0===u||u()}))};return c&&l?(l(p(a.nodeFocusedBeforeActivation)).then(d,d),this):(d(),this)},pause:function(e){if(a.paused||!a.active)return this;var t=s(e,"onPause"),n=s(e,"onPostPause");return a.paused=!0,null===t||void 0===t||t(),w(),k(),null===n||void 0===n||n(),this},unpause:function(e){if(!a.paused||!a.active)return this;var t=s(e,"onUnpause"),n=s(e,"onPostUnpause");return a.paused=!1,null===t||void 0===t||t(),d(),b(),k(),null===n||void 0===n||n(),this},updateContainerElements:function(e){var t=[].concat(e).filter(Boolean);return a.containers=t.map((function(e){return"string"===typeof e?i.querySelector(e):e})),a.active&&d(),k(),this}}).updateContainerElements(e),n},z_=n(32711);var W_="function"===typeof e.useId?function(){return"".concat(ft.bJ).concat(e.useId())}:function(){var t=e.useRef();return void 0===t.current&&(t.current=(0,z_.x)()),t.current},V_=e.createContext(void 0);function Y_(t){var n=t.children,i=t.enabled,r=void 0===i||i,o=t.disableAutoFocus,a=t.autoFocus,s=void 0===a||a,u=e.useRef(null),l=e.useRef(!o&&s);e.useEffect((function(){l.current=!o&&s}));var c=e.useRef(),d=e.useRef({}),h=e.useCallback((function(){var e;null===(e=c.current)||void 0===e||e.updateContainerElements([u.current].concat((0,Ct.Z)(Object.values(d.current))))}),[]),f=e.useMemo((function(){return{addNode:function(e,t){var n;d.current[e]===t||(null===(n=u.current)||void 0===n?void 0:n.contains(t))||(d.current[e]=t,h())},removeNode:function(e){d.current[e]&&(delete d.current[e],h())}}}),[h]),p=e.useCallback((function(e){var t;r&&e?(u.current=e,c.current||(c.current=B_([],{initialFocus:function(){return l.current&&function(e){if(!(document.activeElement instanceof HTMLElement)||!e.contains(document.activeElement))return e.hasAttribute("tabIndex")||e.setAttribute("tabIndex","-1"),e;return document.activeElement}(e)},fallbackFocus:function(){return e},returnFocusOnDeactivate:!1,escapeDeactivates:!1,clickOutsideDeactivates:!1,allowOutsideClick:!0})),h(),c.current.activate()):(null===(t=c.current)||void 0===t||t.deactivate(),u.current=null)}),[r,h]),g=e.Children.only(n);if(!e.isValidElement(g))throw new Error("Children must contain only one valid element");var v=Ov(p,g.ref);return e.createElement(V_.Provider,{value:f},e.cloneElement(g,{ref:v}))}var U_=function(){function e(){var t=this;(0,X.Z)(this,e),this.stack=[],this.handleDocumentKeyDown=function(e){var n,i,r;if(e.code===Tv.V.ESCAPE){var o=t.getTopLayer();o.disableEscapeKeyDown||(null===(n=o.onEscapeKeyDown)||void 0===n||n.call(o,e),null===(i=o.onClose)||void 0===i||i.call(o,e,"escapeKeyDown"))}if("Enter"===e.code){var a=t.getTopLayer();null===(r=a.onEnterKeyDown)||void 0===r||r.call(a,e)}},this.handleDocumentClick=function(e){var n,i;if(!t.isToastClick(e)){var r,o=null;if(t.mouseDownLayerTarget){if(r=t.mouseDownLayerTarget.layer,o=t.mouseDownLayerTarget.target,t.mouseDownLayerTarget=void 0,!t.stack.includes(r))return}else r=t.getTopLayer();!r.disableOutsideClick&&t.isOutsideClick(r,e,o)&&(null===(n=r.onOutsideClick)||void 0===n||n.call(r,e),null===(i=r.onClose)||void 0===i||i.call(r,e,"outsideClick"))}},this.handleDocumentMouseDown=function(e){var n=t.getTopLayer();n&&(t.mouseDownLayerTarget={layer:n,target:e.target})}}return(0,J.Z)(e,[{key:"add",value:function(e){this.stack.push(e),1===this.stack.length&&this.addListeners(),this.notifyLayersChange()}},{key:"remove",value:function(e){var t=this.stack.indexOf(e);this.stack.splice(t,1),0===this.stack.length&&this.removeListeners(),this.notifyLayersChange()}},{key:"getLayersCount",value:function(){return this.stack.length}},{key:"getLayers",value:function(){return this.stack.map((function(e){return{type:e.type}}))}},{key:"addListeners",value:function(){document.addEventListener("keydown",this.handleDocumentKeyDown),document.addEventListener("click",this.handleDocumentClick,!0),document.addEventListener("mousedown",this.handleDocumentMouseDown,!0)}},{key:"removeListeners",value:function(){document.removeEventListener("keydown",this.handleDocumentKeyDown),document.removeEventListener("click",this.handleDocumentClick,!0),document.removeEventListener("mousedown",this.handleDocumentMouseDown,!0)}},{key:"notifyLayersChange",value:function(){mv.P.publish({componentId:"LayerManager",eventId:"layerschange",meta:{layersCount:this.getLayersCount(),layers:this.getLayers()}})}},{key:"getTopLayer",value:function(){return this.stack[this.stack.length-1]}},{key:"isOutsideClick",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=e.contentRefs||[],r=t.target,o="function"===typeof t.composedPath?t.composedPath():[];if(i.length>0){var a=i.some((function(e){var t,i,a,s;return(null===(i=null===(t=null===e||void 0===e?void 0:e.current)||void 0===t?void 0:t.contains)||void 0===i?void 0:i.call(t,r))||(null===(s=null===(a=null===e||void 0===e?void 0:e.current)||void 0===a?void 0:a.contains)||void 0===s?void 0:s.call(a,n))||o.includes(null===e||void 0===e?void 0:e.current)}));return!a}return!1}},{key:"isToastClick",value:function(e){return("function"===typeof e.composedPath?e.composedPath():[]).some((function(e){var t;return Boolean(null===(t=null===e||void 0===e?void 0:e.dataset)||void 0===t?void 0:t.toast)}))}}]),e}(),K_=new U_;function q_(t){var n=t.open,i=t.disableEscapeKeyDown,r=t.disableOutsideClick,o=t.onEscapeKeyDown,a=t.onEnterKeyDown,s=t.onOutsideClick,u=t.onClose,l=t.contentRefs,c=t.enabled,d=void 0===c||c,h=t.type,f=e.useRef({disableEscapeKeyDown:i,disableOutsideClick:r,onEscapeKeyDown:o,onEnterKeyDown:a,onOutsideClick:s,onClose:u,contentRefs:l,type:h});e.useEffect((function(){Object.assign(f.current,{disableEscapeKeyDown:i,disableOutsideClick:r,onEscapeKeyDown:o,onEnterKeyDown:a,onOutsideClick:s,onClose:u,contentRefs:l,enabled:d})}),[i,r,o,a,s,u,l,d]),e.useEffect((function(){if(n&&d){var e=f.current;return K_.add(e),function(){K_.remove(e)}}}),[n,d])}var G_=(0,ft.Ge)("popup");function $_(t){var n=t.styles,i=t.attributes,r=t.setArrowRef;return e.createElement("div",Object.assign({"data-popper-arrow":!0,ref:r,className:G_("arrow"),style:n},i),e.createElement("div",{className:G_("arrow-content")},e.createElement("div",{className:G_("arrow-circle-wrapper")},e.createElement("div",{className:G_("arrow-circle",{left:!0})})),e.createElement("div",{className:G_("arrow-circle-wrapper")},e.createElement("div",{className:G_("arrow-circle",{right:!0})}))))}var Q_=(0,ft.Ge)("popup"),X_=8;function J_(t){var n=t.keepMounted,i=void 0!==n&&n,r=t.hasArrow,o=void 0!==r&&r,a=t.offset,s=void 0===a?[0,4]:a,u=t.open,l=t.placement,c=t.anchorRef,d=t.disableEscapeKeyDown,h=t.disableOutsideClick,f=t.disableLayer,p=t.style,g=t.className,v=t.contentClassName,m=t.modifiers,_=void 0===m?[]:m,y=t.children,b=t.onEscapeKeyDown,w=t.onOutsideClick,C=t.onClose,k=t.onClick,S=t.onMouseEnter,x=t.onMouseLeave,L=t.onFocus,E=t.onBlur,D=t.disablePortal,N=t.container,M=t.strategy,T=t.qa,I=t.restoreFocus,O=t.restoreFocusRef,A=t.role,R=t.id,P=t.focusTrap,Z=void 0!==P&&P,F=t.autoFocus,j=void 0!==F&&F,H=e.useRef(null);q_({open:u,disableEscapeKeyDown:d,disableOutsideClick:h,onEscapeKeyDown:b,onOutsideClick:w,onClose:C,contentRefs:[c,H],enabled:!f,type:"popup"});var B=function(t){var n=t.anchorRef,i=t.placement,r=void 0===i?r_:i,o=t.offset,a=t.modifiers,s=void 0===a?[]:a,u=t.strategy,l=t.altBoundary,c=e.useState(null),d=(0,ne.Z)(c,2),h=d[0],f=d[1],p=e.useState(null),g=(0,ne.Z)(p,2),v=g[0],m=g[1],_=Array.isArray(r)?r:[r],y=i_(null===n||void 0===n?void 0:n.current,h,{strategy:u,modifiers:[{name:"arrow",options:{element:v}},{name:"offset",options:{offset:o,altBoundary:l}},{name:"flip",options:{fallbackPlacements:_.slice(1),altBoundary:l}}].concat((0,Ct.Z)(s)),placement:_[0]});return{attributes:y.attributes,styles:y.styles,setPopperRef:f,setArrowRef:m}}({anchorRef:c,placement:l,offset:o?[s[0],s[1]+X_]:s,strategy:M,altBoundary:D,modifiers:[{name:"arrow",options:{enabled:o,padding:4}},{name:"preventOverflow",options:{padding:1,altBoundary:D}}].concat((0,Ct.Z)(_))}),z=B.attributes,W=B.styles,V=B.setPopperRef,Y=B.setArrowRef,U=Ov(V,H,function(){var t=e.useContext(V_),n=W_();return e.useMemo((function(){if(t)return function(e){e?t.addNode(n,e):t.removeNode(n)}}),[t,n])}()),K=E_({enabled:Boolean(I&&u),restoreFocusRef:O});return e.createElement(jo,{container:N,disablePortal:D},e.createElement(uo,{nodeRef:H,in:u,addEndListener:function(e){var t;return null===(t=H.current)||void 0===t?void 0:t.addEventListener("animationend",e)},classNames:lo(Q_),mountOnEnter:!i,unmountOnExit:!i,appear:!0},e.createElement("div",Object.assign({ref:U,style:W.popper},z.popper,K,{className:Q_({open:u},g),"data-qa":T,id:R,role:A}),e.createElement(Y_,{enabled:Z&&u,disableAutoFocus:!j},e.createElement("div",{onClick:k,onMouseEnter:S,onMouseLeave:x,onFocus:L,onBlur:E,className:Q_("content",v),style:p,tabIndex:-1},o&&e.createElement($_,{styles:W.arrow,attributes:z.arrow,setArrowRef:Y}),y)))))}var ey=(0,ft.Ge)("tooltip"),ty=["bottom","top"],ny=function(t){var n=t.children,i=t.content,r=t.disabled,o=t.placement,a=void 0===o?ty:o,s=t.qa,u=e.useState(null),l=(0,ne.Z)(u,2),c=l[0],d=l[1],h=function(t,n){var i=n.openDelay,r=void 0===i?250:i,o=n.closeDelay,a=function(t){var n=e.useState(t),i=(0,ne.Z)(n,2),r=i[0],o=i[1];return[r,e.useCallback((function(){return o(!0)}),[]),e.useCallback((function(){return o(!1)}),[]),e.useCallback((function(){return o((function(e){return!e}))}),[])]}(!1),s=(0,ne.Z)(a,3),u=s[0],l=s[1],c=s[2],d=e.useRef(),h=e.useRef(!1);return e.useEffect((function(){if(t)return t.addEventListener("mouseenter",e),t.addEventListener("mouseleave",n),t.addEventListener("focus",i),t.addEventListener("blur",a),t.addEventListener("keydown",s),function(){t.removeEventListener("mouseenter",e),t.removeEventListener("mouseleave",n),t.removeEventListener("focus",i),t.removeEventListener("blur",a),t.removeEventListener("keydown",s)};function e(){clearTimeout(d.current),d.current=window.setTimeout(l,r)}function n(){clearTimeout(d.current),d.current=window.setTimeout(c,o)}function i(e){h.current||document.activeElement!==e.target||(h.current=!0,clearTimeout(d.current),l())}function a(e){h.current&&!e.currentTarget.contains(e.relatedTarget)&&(h.current=!1,clearTimeout(d.current),c())}function s(e){e.key===Tv.V.ESCAPE&&(clearTimeout(d.current),c())}}),[t,l,c,r,o]),u}(c,t),f=e.Children.only(n),p=Ov(d,f.ref);return e.createElement(e.Fragment,null,e.cloneElement(f,{ref:p}),c?e.createElement(J_,{id:t.id,role:"tooltip",className:ey(null,t.className),style:t.style,open:h&&!r,placement:a,anchorRef:{current:c},disablePortal:t.disablePortal,disableEscapeKeyDown:!0,disableOutsideClick:!0,disableLayer:!0,qa:s},e.createElement("div",{className:ey("content",t.contentClassName)},i)):null)};var iy=["className","status","title"],ry=["text"],oy=(0,ht.Z)("clipboard-button");function ay(e){var t=e.className,n=e.status,i=e.title,r=nn(e,iy);return(0,Nl.jsx)(ny,{content:n===Cg.Success?"Copied!":i||"Copy",placement:"bottom-start",children:(0,Nl.jsx)(_o.z,Rt(Rt({},r),{},{className:oy(null,t),children:(0,Nl.jsx)(_o.z.Icon,{children:(0,Nl.jsx)(Ng,{status:n,size:16})})}))})}function sy(e){var t=e.text,n=nn(e,ry);return(0,Nl.jsx)(Ig,{text:t,timeout:1e3,children:function(e){return(0,Nl.jsx)(ay,Rt(Rt({},n),{},{status:e}))}})}var uy={BLUE:xv,YELLOW:Cv,ORANGE:Mv,RED:Dv},ly=(0,ht.Z)("entity-status"),cy=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"renderIcon",value:function(){var e=this.props,t=e.status,n=e.size,i=e.showStatus,r=e.mode;if(!i)return null;var o={state:t.toLowerCase(),size:n};return"icons"===r&&uy[t]?(0,Nl.jsx)(yo.J,{className:ly("status-icon",o),data:uy[t]}):(0,Nl.jsx)("div",{className:ly("status-color",o)})}},{key:"renderStatusLink",value:function(){var e=this.props.iconPath;return(0,Nl.jsx)(yv,{target:"_blank",href:e,children:this.renderIcon()})}},{key:"renderLink",value:function(){var e=this.props,t=e.externalLink,n=e.name,i=e.path,r=e.onNameMouseEnter,o=e.onNameMouseLeave;return t?(0,Nl.jsx)(yv,{className:ly("name"),href:i,children:n}):i?(0,Nl.jsx)(cv,{className:ly("name"),to:i,onMouseEnter:r,onMouseLeave:o,children:n}):n&&(0,Nl.jsx)("span",{className:ly("name"),onMouseEnter:r,onMouseLeave:o,children:n})}},{key:"render",value:function(){var e=this.props,t=e.name,n=e.label,i=e.iconPath,r=e.hasClipboardButton,o=e.className,a=e.size,s=e.status;return(0,Nl.jsxs)("div",{className:ly(null,o),title:t,children:[i?this.renderStatusLink():this.renderIcon(),n&&(0,Nl.jsx)("span",{title:n,className:ly("label",{size:a,state:s.toLowerCase()}),children:n}),(0,Nl.jsx)("span",{className:ly("link",{"with-left-trim":this.props.withLeftTrim}),children:this.renderLink()}),r&&(0,Nl.jsx)(sy,{text:t,size:"s",className:ly("clipboard-button",{visible:this.props.clipboardButtonAlwaysVisible})})]})}}]),n}(e.Component);cy.defaultProps={status:"gray",text:"",size:"s",label:"",showStatus:!0,externalLink:!1,mode:"color",withLeftTrim:!1,clipboardButtonAlwaysVisible:!1};var dy,hy=cy,fy=["children","content","className","hasArrow","placement"],py=function(t){var n=t.children,i=t.content,r=t.className,o=t.hasArrow,a=void 0===o||o,s=t.placement,u=void 0===s?["top","bottom"]:s,l=nn(t,fy),c=(0,e.useState)(!1),d=(0,ne.Z)(c,2),h=d[0],f=d[1],p=(0,e.useRef)(null);return(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)(J_,Rt(Rt({anchorRef:p,open:h,placement:u,hasArrow:a},l),{},{children:i})),(0,Nl.jsx)("span",{className:r,ref:p,onMouseEnter:function(){f(!0)},onMouseLeave:function(){f(!1)},children:n})]})},gy=(0,ht.Z)("ydb-pool-bar"),vy=function(e){var t=e.data,n=void 0===t?{}:t,i=n.Usage,r=void 0===i?0:i,o=Math.min(100*r,100),a=function(e){return e>=75?"danger":e>=50&&e<75?"warning":"normal"}(o);return(0,Nl.jsx)(py,{className:gy({type:a}),content:(0,Nl.jsx)(Bl,{data:n,className:gy("popup-content")}),children:(0,Nl.jsx)("div",{style:{height:"".concat(o,"%")},className:gy("value",{type:a})})})},my=(0,ht.Z)("ydb-pools-graph"),_y=function(e){var t=e.pools,n=void 0===t?[]:t;return(0,Nl.jsx)("div",{className:my(),children:n.map((function(e,t){return(0,Nl.jsx)(vy,{data:e},t)}))})},yy=(dy={},(0,wt.Z)(dy,hi.Dead,pa.Red),(0,wt.Z)(dy,hi.Created,pa.Yellow),(0,wt.Z)(dy,hi.ResolveStateStorage,pa.Yellow),(0,wt.Z)(dy,hi.Candidate,pa.Yellow),(0,wt.Z)(dy,hi.BlockBlobStorage,pa.Yellow),(0,wt.Z)(dy,hi.WriteZeroEntry,pa.Yellow),(0,wt.Z)(dy,hi.Restored,pa.Yellow),(0,wt.Z)(dy,hi.Discover,pa.Yellow),(0,wt.Z)(dy,hi.Lock,pa.Yellow),(0,wt.Z)(dy,hi.Stopped,pa.Yellow),(0,wt.Z)(dy,hi.ResolveLeader,pa.Yellow),(0,wt.Z)(dy,hi.RebuildGraph,pa.Yellow),(0,wt.Z)(dy,hi.Deleted,pa.Green),(0,wt.Z)(dy,hi.Active,pa.Green),dy),by=Object.keys(hi),wy=Object.entries(yy).reduce((function(e,t){var n=(0,ne.Z)(t,2),i=n[0],r=n[1];return e[r]?e[r].push(i):e[r]=[i],e}),{}),Cy=function(e){if(!e)return pa.Grey;var t;return t=e,Object.values(pa).includes(t)?e:yy[e]},ky=(0,ht.Z)("tablets-statistic"),Sy=function(e){var t=e.tablets,n=void 0===t?[]:t,i=e.path,r=e.nodeIds,o=e.backend,a=function(e){var t=e.map((function(e){return{label:wi(e.Type),type:e.Type,count:e.Count,state:Cy(e.State)}}));return t.sort((function(e,t){return String(e.label).localeCompare(String(t.label))}))}(n);return(0,Nl.jsx)("div",{className:ky(),children:a.map((function(e,t){var n,a=_g(bg.tabletsFilters,void 0,{nodeIds:r,state:e.state,type:e.type,path:i,backend:o}),s="".concat(e.label,": ").concat(e.count),u=ky("tablet",{state:null===(n=e.state)||void 0===n?void 0:n.toLowerCase()});return o?(0,Nl.jsx)("a",{href:a,className:u,children:s},t):(0,Nl.jsx)(cv,{to:a,className:u,children:s},t)}))})};var xy=(0,ft.Ge)("radio-button"),Ly=e.forwardRef((function(t,n){var i=t.disabled,r=void 0!==i&&i,o=t.content,a=t.children,s=function(t){var n=t.name,i=t.value,r=t.checked,o=t.defaultChecked,a=t.disabled,s=t.controlRef,u=t.controlProps,l=t.onUpdate,c=t.onChange,d=t.onFocus,h=t.onBlur,f=t.id,p=W_(),g=e.useRef(null),v=e.useState(null!==o&&void 0!==o&&o),m=(0,ne.Z)(v,2),_=m[0],y=m[1],b="boolean"===typeof r,w=b?r:_,C=Ov(s,g);return{checked:w,inputProps:Object.assign(Object.assign({},u),{name:n||p,value:i,id:f,onFocus:d,onBlur:h,disabled:a,type:"radio",onChange:function(e){b||y(e.target.checked),c&&c(e),l&&l(e.target.checked)},onChangeCapture:function(e){mv.P.publish({componentId:"Radio",eventId:"click",domEvent:e})},checked:r,defaultChecked:o,"aria-checked":w,ref:C})}}(t),u=s.checked,l=s.inputProps,c=o||a,d=(0,z_.y)(c);return e.createElement("label",{className:xy("option",{disabled:r,checked:u}),ref:n},e.createElement("input",Object.assign({},l,{className:xy("option-control")})),e.createElement("span",{className:xy("option-outline")}),c&&e.createElement("span",{className:xy("option-text",{icon:d})},c))})),Ey=(0,ft.Ge)("radio-button"),Dy=e.forwardRef((function(t,n){var i=t.size,r=void 0===i?"m":i,o=t.width,a=t.style,s=t.className,u=t.qa,l=t.children,c=t.options;c||(c=e.Children.toArray(l).map((function(e){var t=e.props;return{value:t.value,content:t.content||t.children,disabled:t.disabled}})));var d=e.useRef(null),h=e.useRef(),f=e.useCallback((function(e){if(e){var t=d.current;if(t){var n=h.current;if(n&&n!==e){var i=function(e){t.style.left="".concat(e.offsetLeft,"px"),t.style.width="".concat(e.offsetWidth,"px")};i(n),t.hidden=!1,i(e)}h.current=e}}}),[]),p=e.useCallback((function(e){e.currentTarget.hidden=!0}),[]),g=function(t){var n,i,r=t.name,o=t.value,a=t.defaultValue,s=t.options,u=void 0===s?[]:s,l=t.disabled,c=t.onUpdate,d=t.onChange,h=t.onFocus,f=t.onBlur,p=W_(),g=e.useState(null!==a&&void 0!==a?a:null===(i=null===(n=u[0])||void 0===n?void 0:n.value)||void 0===i?void 0:i.toString()),v=(0,ne.Z)(g,2),m=v[0],_=v[1],y="undefined"!==typeof o,b=y?o:m,w=e.useCallback((function(e){y||_(e.target.value),d&&d(e),c&&c(e.target.value)}),[y,c,d]);return{containerProps:{role:"radiogroup","aria-disabled":l,"aria-label":t["aria-label"],"aria-labelledby":t["aria-labelledby"]},optionsProps:u.map((function(e){return{name:r||p,value:e.value,content:e.content,checked:b===String(e.value),disabled:l||e.disabled,onChange:w,onFocus:h,onBlur:f}}))}}(Object.assign(Object.assign({},t),{options:c})),v=g.containerProps,m=g.optionsProps;return e.createElement("div",Object.assign({},v,{ref:n,style:a,className:Ey({size:r,width:o},s),"data-qa":u}),e.createElement("div",{ref:d,className:Ey("plate"),onTransitionEnd:p,hidden:!0}),m.map((function(t){return e.createElement(Ly,Object.assign({},t,{key:t.value,ref:t.checked?f:void 0}))})))}));Dy.Option=Ly;var Ny=function(e){var t=e.value,n=e.onChange,i=e.className;return(0,Nl.jsxs)(Dy,{value:t,onUpdate:n,className:i,children:[(0,Nl.jsx)(Dy.Option,{value:Cr.ALL,children:Cr.ALL}),(0,Nl.jsx)(Dy.Option,{value:Cr.PROBLEMS,children:Cr.PROBLEMS})]})};function My(){return e.useContext(yt).themeValue}var Ty=["name","className"],Iy={light:{403:function(){return n.e(1058).then(n.bind(n,11058))},thumbsUp:function(){return n.e(6550).then(n.bind(n,26550))},error:function(){return n.e(3848).then(n.bind(n,93848))}},dark:{403:function(){return n.e(2991).then(n.bind(n,22991))},thumbsUp:function(){return n.e(1593).then(n.bind(n,21593))},error:function(){return n.e(1876).then(n.bind(n,1876))}}},Oy=(0,ht.Z)("kv-illustration"),Ay=function(t){var n=t.name,i=t.className,r=nn(t,Ty),o=My(),a=(0,e.useState)(""),s=(0,ne.Z)(a,2),u=s[0],l=s[1],c=Iy[o]&&Iy[o][n];return(0,e.useEffect)((function(){"function"===typeof c&&c().then((function(e){return l(e.default)})).catch((function(e){console.error(e),l("")}))}),[c]),(0,Nl.jsx)("img",Rt({alt:n,src:u,className:Oy(null,i)},r))},Ry=n(56430),Py=n.n(Ry),Zy=n(17571),Fy=n.n(Zy),jy=16,Hy=2;function By(t,n){var i=e.useState({width:0,height:0}),r=(0,ne.Z)(i,2),o=r[0],a=r[1];return e.useLayoutEffect((function(){if(null===t||void 0===t?void 0:t.current){var e=new ResizeObserver(Fy()((function(e){if(Array.isArray(e)){var t=e[0];if(t.borderBoxSize){var n=t.borderBoxSize[0]?t.borderBoxSize[0]:t.borderBoxSize;a({width:Py()(n.inlineSize,Hy),height:Py()(n.blockSize,Hy)})}else{var i=t.target;a({width:Py()(i.offsetWidth,Hy),height:Py()(i.offsetHeight,Hy)})}}}),jy));return e.observe(t.current),function(){e.disconnect()}}}),[t,n]),o}var zy,Wy,Vy=(0,ft.Ge)("popover"),Yy=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];switch(e){case"special":return t?"normal-contrast":"flat-contrast";case"announcement":return t?"normal-contrast":"outlined";default:return t?"normal":"flat"}},Uy=function(t){var n=t.theme,i=t.tooltipActionButton,r=t.tooltipCancelButton;return i||r?e.createElement("div",{className:Vy("tooltip-buttons")},i&&e.createElement(_o.z,{view:Yy(n,!0),width:"max",onClick:i.onClick,className:Vy("tooltip-button")},i.text),r&&e.createElement(_o.z,{view:Yy(n,!1),width:"max",onClick:r.onClick,className:Vy("tooltip-button")},r.text)):null},Ky=function(t){var n=t.secondary,i=t.htmlContent,r=t.content,o=t.className;return i||r?i?e.createElement("div",{className:Vy("tooltip-content",{secondary:n},o),dangerouslySetInnerHTML:{__html:i}}):r?e.createElement("div",{className:Vy("tooltip-content",{secondary:n},o)},r):null:null},qy=function(t){var n=t.links;return 0===n.length?null:e.createElement("div",{className:Vy("tooltip-links")},n.map((function(t,n){var i=t.text,r=t.href,o=t.target,a=void 0===o?"_blank":o,s=t.onClick;return e.createElement(e.Fragment,{key:"link-".concat(n)},e.createElement(yv,{href:r,target:a,onClick:s,className:Vy("tooltip-link")},i),e.createElement("br",null))})))},Gy=function(t){var n=t.open,i=t.openOnHover,r=t.disabled,o=t.className,a=t.openTooltip,s=t.closeTooltip,u=t.closedManually,l=t.onClick,c=t.children,d=function(){var e=dn(fn().mark((function e(t){var o;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=n&&i,!r&&!o){e.next=3;break}return e.abrupt("return");case 3:if(e.t0=!l,e.t0){e.next=8;break}return e.next=7,l(t);case 7:e.t0=e.sent;case 8:if(e.t0){e.next=11;break}return e.abrupt("return");case 11:(function(){!n?(a(),u.current=!1):(s(),u.current=!0)})();case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),h=(0,kg.b)(d).onKeyDown;return"function"===typeof c?e.createElement(e.Fragment,null,c({onClick:d,onKeyDown:h})):e.createElement("div",{className:o,onClick:d,onKeyDown:l?h:void 0},c)};!function(e){e.Immediate="immediate",e.Delayed="delayed",e.DelayedClosing="delayedClosing"}(Wy||(Wy={}));var $y=(zy={},(0,wt.Z)(zy,Wy.Immediate,[0,0]),(0,wt.Z)(zy,Wy.Delayed,[300,300]),(0,wt.Z)(zy,Wy.DelayedClosing,[0,300]),zy),Qy=function(t){var n=t.initialOpen,i=t.disabled,r=t.autoclosable,o=t.onOpenChange,a=t.delayOpening,s=t.delayClosing,u=t.behavior,l=t.shouldBeOpen,c=e.useRef(null),d=e.useRef(null),h=e.useState(n),f=(0,ne.Z)(h,2),p=f[0],g=f[1],v=e.useCallback((function(){c.current&&(clearTimeout(c.current),c.current=null)}),[]),m=e.useCallback((function(){d.current&&(clearTimeout(d.current),d.current=null)}),[]);e.useEffect((function(){return function(){v(),m()}}),[m,v]);var _=e.useCallback((function(e){g(e),l.current=e,null===o||void 0===o||o(e)}),[o,l]),y=e.useCallback((function(){v(),_(!0)}),[_,v]),b=e.useCallback((function(){m(),_(!1)}),[_,m]);e.useEffect((function(){i&&b()}),[i,b]),function(t,n){var i=e.useRef(!0);e.useEffect((function(){i.current?i.current=!1:t()}),n)}((function(){r&&!l.current&&b()}),[r,b,l]);var w=(0,ne.Z)($y[u],2),C=w[0],k=w[1],S=e.useCallback((function(){c.current=setTimeout((function(){c.current=null,y()}),null!==a&&void 0!==a?a:C)}),[C,a,y]),x=e.useCallback((function(){d.current=setTimeout((function(){d.current=null,b()}),null!==s&&void 0!==s?s:k)}),[b,k,s]);return{isOpen:p,closingTimeout:d,openTooltip:y,openTooltipDelayed:S,unsetOpeningTimeout:v,closeTooltip:b,closeTooltipDelayed:x,unsetClosingTimeout:m}},Xy=e.forwardRef((function(t,n){var i,r=t.initialOpen,o=void 0!==r&&r,a=t.disabled,s=void 0!==a&&a,u=t.autoclosable,l=void 0===u||u,c=t.openOnHover,d=void 0===c||c,h=t.delayOpening,f=t.delayClosing,p=t.behavior,g=void 0===p?Wy.Delayed:p,v=t.placement,m=void 0===v?["right","bottom"]:v,_=t.offset,y=void 0===_?{}:_,b=t.tooltipOffset,w=t.tooltipClassName,C=t.tooltipContentClassName,k=t.theme,S=void 0===k?"info":k,x=t.size,L=void 0===x?"s":x,E=t.hasArrow,D=void 0===E||E,N=t.hasClose,M=void 0!==N&&N,T=t.className,I=t.children,O=t.title,A=t.content,R=t.htmlContent,P=t.contentClassName,Z=t.links,F=t.forceLinksAppearance,j=void 0!==F&&F,H=t.tooltipActionButton,B=t.tooltipCancelButton,z=t.onOpenChange,W=t.onCloseClick,V=t.onClick,Y=t.anchorRef,U=t.strategy,K=t.qa,q=t.disablePortal,G=void 0!==q&&q,$=t.tooltipId,Q=t.focusTrap,X=t.autoFocus,J=t.restoreFocusRef,ee=t.modifiers,te=e.useRef(null),ne=e.useRef(!1),ie=e.useRef(o),re=Qy({initialOpen:o,disabled:s,autoclosable:l,onOpenChange:z,delayOpening:h,delayClosing:f,behavior:g,shouldBeOpen:ie}),oe=re.isOpen,ae=re.closingTimeout,se=re.openTooltip,ue=re.openTooltipDelayed,le=re.unsetOpeningTimeout,ce=re.closeTooltip,de=re.closeTooltipDelayed,he=re.unsetClosingTimeout;e.useImperativeHandle(n,(function(){return{openTooltip:se,closeTooltip:ce}}),[se,ce]);var fe=function(){var e=dn(fn().mark((function e(t){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:ce(),null===W||void 0===W||W(t);case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),pe=Boolean(O),ge=e.createElement(J_,{id:$,role:d?"tooltip":"dialog",strategy:U,anchorRef:Y||te,className:Vy("tooltip",(i={theme:S,size:L},(0,wt.Z)(i,"with-close",M),(0,wt.Z)(i,"force-links-appearance",j),i),w),contentClassName:Vy("tooltip-popup-content",C),open:oe,placement:m,hasArrow:D,offset:b,onClose:Y?void 0:ce,qa:K?"".concat(K,"-tooltip"):"",disablePortal:G,focusTrap:Q,autoFocus:X,restoreFocus:!0,restoreFocusRef:J||te,modifiers:ee},e.createElement(e.Fragment,null,O&&e.createElement("h3",{className:Vy("tooltip-title")},O),e.createElement(Ky,{secondary:!!pe&&"announcement"!==S,content:A,htmlContent:R,className:P}),Z&&e.createElement(qy,{links:Z}),e.createElement(Uy,{theme:S,tooltipActionButton:H,tooltipCancelButton:B}),M&&e.createElement("div",{className:Vy("tooltip-close")},e.createElement(_o.z,{size:"s",view:"flat-secondary",onClick:fe,extraProps:{"aria-label":"Close"}},e.createElement(yo.J,{data:go.Z,size:16})))));if(Y)return ge;var ve=function(){he(),oe||s||ne.current?ie.current=!0:ue()},me=function(){!l||ne.current||ae.current?ie.current=!1:(le(),de()),ne.current=!1};return e.createElement("div",{ref:te,className:Vy({disabled:s},T),onMouseEnter:d?ve:void 0,onMouseLeave:d?me:void 0,onFocus:d?ve:void 0,onBlur:d?me:void 0,style:{top:y.top,left:y.left},"data-qa":K},e.createElement(Gy,{closeTooltip:ce,openTooltip:se,open:oe,openOnHover:d,className:Vy("handler"),disabled:s,onClick:V,closedManually:ne},I),ge)}));Xy.displayName="Popover";var Jy=No({en:JSON.parse('{"label_clear-button":"Clear"}'),ru:JSON.parse('{"label_clear-button":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c"}')},"".concat(ft.bJ,"clear-button")),eb=(0,ft.B_)("clear-button"),tb=function(e){switch(e){case"s":return"xs";case"m":return"s";case"l":return"m";case"xl":return"l";default:throw new Error('Unknown text input size "'.concat(e,'"'))}},nb=function(t){var n=t.size,i=t.className,r=t.onClick;return e.createElement(_o.z,{size:n,className:eb(null,i),onClick:r,extraProps:{"aria-label":Jy("label_clear-button")}},e.createElement(yo.J,{data:go.Z,size:16}))},ib=function(e){return"boolean"===typeof e?e?"on":"off":e},rb=(0,ft.Ge)("outer-additional-content"),ob=function(t){var n=t.errorMessage,i=t.note,r=t.noteId,o=t.errorMessageId;return n||i?e.createElement("div",{className:rb()},n&&e.createElement("div",{className:rb("error"),id:o,"data-qa":"control-error-message-qa"},n),i&&e.createElement("div",{className:rb("note"),id:r},i)):null},ab=(0,ft.Ge)("text-input"),sb=e.forwardRef((function(t,n){var i=t.placement,r=t.children,o=t.onClick;return r?e.createElement("div",{ref:n,className:ab("additional-content",{placement:i}),onClick:o},r):null})),ub=(0,ft.Ge)("text-input");function lb(t){var n=t.controlProps,i=t.controlRef,r=t.type,o=t.name,a=t.id,s=t.tabIndex,u=t.autoComplete,l=t.placeholder,c=t.value,d=t.defaultValue,h=t.autoFocus,f=t.disabled,p=t.onChange,g=t.onFocus,v=t.onBlur,m=t.onKeyDown,_=t.onKeyUp,y=t.onKeyPress;return e.createElement("input",Object.assign({},n,{ref:i,className:ub("control",{type:"input"},null===n||void 0===n?void 0:n.className),type:r,name:o,id:a,tabIndex:s,placeholder:l,value:c,defaultValue:d,autoFocus:h,autoComplete:u,onChange:p,onFocus:g,onBlur:v,onKeyDown:m,onKeyUp:_,onKeyPress:y,disabled:f}))}var cb=(0,ft.Ge)("text-input"),db=e.forwardRef((function(t,n){var i=t.view,r=void 0===i?"normal":i,o=t.size,a=void 0===o?"m":o,s=t.pin,u=void 0===s?"round-round":s,l=t.name,c=t.value,d=t.defaultValue,h=t.label,f=t.disabled,p=void 0!==f&&f,g=t.hasClear,v=void 0!==g&&g,m=t.error,_=t.errorMessage,y=t.errorPlacement,b=void 0===y?"outside":y,w=t.validationState,C=t.autoComplete,k=t.id,S=t.tabIndex,x=t.style,L=t.className,E=t.qa,D=t.controlProps,N=t.leftContent,M=t.rightContent,T=t.note,I=t.onUpdate,O=t.onChange,A=function(e){var t,n,i=e.error,r=e.errorMessage,o=e.errorPlacement;return"string"===typeof i&&(t=i),r&&(t=r),("invalid"===e.validationState||Boolean(i))&&(n="invalid"),{errorMessage:t,errorPlacement:o,validationState:n}}({error:m,errorMessage:_,errorPlacement:b,validationState:w}),R=A.errorMessage,P=A.errorPlacement,Z=A.validationState,F=e.useState(null!==d&&void 0!==d?d:""),j=(0,ne.Z)(F,2),H=j[0],B=j[1],z=e.useRef(null),W=Ov(t.controlRef,z),V=e.useRef(null),Y=e.useRef(null),U=function(e){return"invalid"===e?"error":void 0}(Z),K=void 0!==c,q=K?c:H,G=Boolean(h),$="invalid"===Z&&Boolean(R)&&"outside"===P,Q="invalid"===Z&&Boolean(R)&&"inside"===P,X=Boolean(v&&!p&&q),J=Boolean(N),ee=Boolean(M),te=G&&!k&&!l&&"undefined"===typeof C,ie=W_(),re=G?k||ie:k,oe=By(G?V:null,a),ae=By(J?Y:null,a),se=W_(),ue=W_(),le=[null===D||void 0===D?void 0:D["aria-describedby"],T?ue:void 0,$?se:void 0].filter(Boolean).join(" "),ce=Object.assign(Object.assign({},D),{style:Object.assign(Object.assign({},null===D||void 0===D?void 0:D.style),G&&oe.width?{paddingLeft:"".concat(oe.width,"px")}:{}),"aria-invalid":"invalid"===Z||void 0,"aria-describedby":le||void 0}),de={id:re,tabIndex:S,name:l,onChange:function(e){var t=e.target.value;K||B(t),O&&O(e),I&&I(t)},autoComplete:te?"off":ib(C),controlProps:ce},he=function(e){var t,n,i=e.currentTarget.contains(document.activeElement),r=Boolean(null===(t=document.getSelection())||void 0===t?void 0:t.toString());i||r||null===(n=z.current)||void 0===n||n.focus()};return e.createElement("span",{ref:n,style:x,className:cb({view:r,size:a,disabled:p,state:U,pin:"clear"===r?void 0:u,"has-clear":X,"has-left-content":J,"has-right-content":X||ee},L),"data-qa":E},e.createElement("span",{className:cb("content")},J&&e.createElement(sb,{ref:Y,placement:"left",onClick:he},N),G&&e.createElement("label",{ref:V,style:{left:J?ae.width:void 0,maxWidth:"calc(50% - ".concat(ae.width,"px)")},className:cb("label"),title:h,htmlFor:re},"".concat(h)),e.createElement(lb,Object.assign({},t,de,{controlRef:W})),X&&e.createElement(nb,{size:tb(a),onClick:function(e){var t=z.current;if(t){t.focus();var n=Object.create(e);n.target=t,n.currentTarget=t,t.value="",O&&O(n),I&&I("")}K||B("")},className:cb("clear")}),ee&&e.createElement(sb,{placement:"right",onClick:he},M),Q&&e.createElement(Xy,{content:R},e.createElement("span",{"data-qa":"control-error-icon-qa"},e.createElement(yo.J,{data:fo.Z,className:cb("error-icon"),size:"s"===a?12:16})))),e.createElement(ob,{note:T,errorMessage:$?R:null,noteId:ue,errorMessageId:se}))})),hb=(0,ht.Z)("ydb-search"),fb=function(t){var n=t.onChange,i=t.value,r=void 0===i?"":i,o=t.className,a=t.debounce,s=void 0===a?200:a,u=t.placeholder,l=(0,e.useState)(r),c=(0,ne.Z)(l,2),d=c[0],h=c[1],f=(0,e.useRef)();(0,e.useEffect)((function(){h((function(e){return e!==r?r:e}))}),[r]);return(0,Nl.jsx)(db,{hasClear:!0,autoFocus:!0,className:hb(null,o),placeholder:u,value:d,onUpdate:function(e){h(e),window.clearTimeout(f.current),f.current=window.setTimeout((function(){null===n||void 0===n||n(e)}),s)}})},pb=(0,ft.Ge)("skeleton");function gb(t){var n=t.className,i=t.style,r=t.qa;return e.createElement("div",{className:pb(null,n),style:i,"data-qa":r})}var vb=(0,ht.Z)("table-skeleton"),mb=function(e){var t=e.rows,n=void 0===t?2:t,i=e.className;return(0,Nl.jsxs)("div",{className:vb(null,i),children:[(0,Nl.jsxs)("div",{className:vb("row"),children:[(0,Nl.jsx)(gb,{className:vb("col-1")}),(0,Nl.jsx)(gb,{className:vb("col-2")}),(0,Nl.jsx)(gb,{className:vb("col-3")}),(0,Nl.jsx)(gb,{className:vb("col-4")}),(0,Nl.jsx)(gb,{className:vb("col-5")})]}),(0,Ct.Z)(new Array(n)).map((function(e,t){return(0,Nl.jsx)("div",{className:vb("row"),children:(0,Nl.jsx)(gb,{className:vb("col-full")})},"skeleton-row-".concat(t))}))]})},_b=(0,ht.Z)("ydb-table-with-controls-layout"),yb=function(e){var t=e.children,n=e.className;return(0,Nl.jsx)("div",{className:_b(null,n),children:t})};yb.Controls=function(e){var t=e.children,n=e.className;return(0,Nl.jsx)("div",{className:_b("controls-wrapper"),children:(0,Nl.jsx)("div",{className:_b("controls",n),children:t})})},yb.Table=function(e){var t=e.children,n=e.loading,i=e.className;return n?(0,Nl.jsx)(mb,{className:_b("loader")}):(0,Nl.jsx)("div",{className:_b("table",i),children:t})};var bb=JSON.parse('{"403.title":"Access denied","403.description":"You don\u2019t have the necessary roles to view this page.","responseError.defaultMessage":"Response error"}'),wb=JSON.parse('{"403.title":"\u0414\u043e\u0441\u0442\u0443\u043f \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d","403.description":"\u0423 \u0432\u0430\u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.","responseError.defaultMessage":"\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430"}'),Cb="ydb-errors-access-denied";Va.registerKeyset(Fa.En,Cb,bb),Va.registerKeyset(Fa.Ru,Cb,wb);var kb=Va.keyset(Cb),Sb=function(e){var t=e.error,n=e.className,i=e.defaultMessage,r=void 0===i?kb("responseError.defaultMessage"):i;return(0,Nl.jsx)("div",{className:"error ".concat(n),children:(null===t||void 0===t?void 0:t.statusText)||r})},xb=function(e){return e.tenants.searchValue},Lb=$c([function(e){return e.tenants.tenants},Er,xb],(function(e,t,n){var i=function(e,t){return t===Cr.ALL?e:e.filter((function(e){return e.Overall&&e.Overall!==pa.Green}))}(e,t);return i=function(e,t){return e.filter((function(e){var n=new RegExp((0,rn.escapeRegExp)(t),"i");return n.test(e.Name||"")||n.test(e.controlPlaneName)}))}(i,n),i})),Eb={summaryTab:"summaryTab",queryTab:"queryTab",diagnosticsTab:"diagnosticsTab",metricsTab:"metricsTab"},Db=[{id:Zn.overview,title:"Overview"},{id:Zn.acl,title:"ACL"}],Nb=[{id:Zn.schema,title:"Schema"}],Mb=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return _g(bg.tenant,void 0,e)},Tb=(0,ht.Z)("tenants"),Ib=function(e){var t=e.additionalTenantsProps,n=K(),i=ev((function(e){return e.tenants})),r=i.error,o=i.loading,a=i.wasLoaded,s=ev(xb),u=ev(Lb),l=ev(Er);Jg((function(){n(function(e){return oa({request:window.api.getTenants(e),actions:sh,dataHandler:function(e,t){var n=t().singleClusterMode;return e.TenantInfo?Jd(e.TenantInfo,n):[]}})}(rg))}),[n],!0);var c=function(e){n(Lr(e))},d=function(e){n(function(e){return{type:uh,data:e}}(e))};return r?(0,Nl.jsx)(Sb,{error:r}):(0,Nl.jsxs)(yb,{children:[(0,Nl.jsx)(yb.Controls,{children:(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)(fb,{value:s,onChange:d,placeholder:"Database name",className:Tb("search")}),(0,Nl.jsx)(Ny,{value:l,onChange:c})]})}),(0,Nl.jsx)(yb.Table,{loading:o&&!a,className:Tb("table"),children:function(){var e=function(e){var n,i,r=null!==(n=e.MonitoringEndpoint)&&void 0!==n?n:e.backend;return null===t||void 0===t||null===(i=t.prepareTenantBackend)||void 0===i?void 0:i.call(t,r)},n=[{name:"Name",header:"Database",render:function(n){var i,r=n.row,o=e(r),a=Boolean(o);return(0,Nl.jsxs)("div",{className:Tb("name-wrapper"),children:[(0,Nl.jsx)(hy,{externalLink:a,className:Tb("name"),name:r.Name||"unknown database",withLeftTrim:!0,status:r.Overall,hasClipboardButton:!0,path:Mb({name:r.Name,backend:o})}),null===t||void 0===t||null===(i=t.getMonitoringLink)||void 0===i?void 0:i.call(t,r.Name,r.Type)]})},width:440,sortable:!0,defaultOrder:pi.DESCENDING},{name:"controlPlaneName",header:"Name",render:function(e){return e.row.controlPlaneName},width:200,sortable:!0,defaultOrder:pi.DESCENDING},{name:"Type",width:200,render:function(e){var t=e.row;return"Serverless"!==t.Type?t.Type:(0,Nl.jsxs)("div",{className:Tb("type"),children:[(0,Nl.jsx)("span",{className:Tb("type-value"),children:t.Type}),(0,Nl.jsx)(_o.z,{className:Tb("type-button"),onClick:function(){return d(t.sharedTenantName||"")},children:"Show shared"})]})}},{name:"State",width:90,render:function(e){var t=e.row;return t.State?t.State.toLowerCase():"\u2014"},customStyle:function(){return{textTransform:"capitalize"}}},{name:"cpu",header:"CPU",width:80,render:function(e){var t=e.row;return t.cpu>1e4?vs(t.cpu):"\u2014"},align:pi.RIGHT,defaultOrder:pi.DESCENDING},{name:"memory",header:"Memory",width:120,render:function(e){var t=e.row;return t.memory?ss(t.memory):"\u2014"},align:pi.RIGHT,defaultOrder:pi.DESCENDING},{name:"storage",header:"Storage",width:120,render:function(e){var t=e.row;return t.storage?ss(t.storage):"\u2014"},align:pi.RIGHT,defaultOrder:pi.DESCENDING},{name:"nodesCount",header:"Nodes",width:100,render:function(e){var t=e.row;return t.nodesCount?fs(t.nodesCount):"\u2014"},align:pi.RIGHT,defaultOrder:pi.DESCENDING},{name:"groupsCount",header:"Groups",width:100,render:function(e){var t=e.row;return t.groupsCount?fs(t.groupsCount):"\u2014"},align:pi.RIGHT,defaultOrder:pi.DESCENDING},{name:"PoolStats",header:"Pools",width:100,sortAccessor:function(e){var t=e.PoolStats;return(void 0===t?[]:t).reduce((function(e,t){return e+(t.Usage||0)}),0)},defaultOrder:pi.DESCENDING,align:pi.LEFT,render:function(e){var t=e.row;return(0,Nl.jsx)(_y,{pools:t.PoolStats})}},{name:"Tablets",header:"Tablets States",sortable:!1,width:430,render:function(t){var n=t.row,i=e(n);return n.Tablets?(0,Nl.jsx)(Sy,{path:n.Name,tablets:n.Tablets,nodeIds:n.NodeIds||[],backend:i}):"\u2014"}}];return 0===u.length&&l!==Cr.ALL?(0,Nl.jsx)(Ay,{name:"thumbsUp",width:"200"}):(0,Nl.jsx)(pi,{theme:"yandex-cloud",data:u,columns:n,settings:Bi,emptyDataMessage:"No such tenants"})}()})]})},Ob=function(e){var t=e.name,n=e.height,i=void 0===n?16:n,r=e.width,o=void 0===r?16:r,a=e.viewBox,s=void 0===a?"0 0 16 16":a,u=e.className,l=e.onClick;return(0,Nl.jsx)(yo.J,{data:{id:"icon.".concat(t),viewBox:s},height:i,width:o,className:u,onClick:l})};Ob.displayName="Icon";var Ab=(0,ht.Z)("empty-state"),Rb={s:150,m:250,l:350},Pb=function(e){var t=e.image,n=e.title,i=e.description,r=e.actions,o=e.size,a=void 0===o?"m":o,s=e.position,u=void 0===s?"center":s;return(0,Nl.jsx)("div",{className:Ab({size:a}),children:(0,Nl.jsxs)("div",{className:Ab("wrapper",{size:a,position:u}),children:[(0,Nl.jsx)("div",{className:Ab("image"),children:t||(0,Nl.jsx)(Ob,{viewBox:"0 0 383 396",name:"emptyState",width:Rb[a],height:Rb[a]})}),(0,Nl.jsx)("div",{className:Ab("title",{size:a}),children:n}),(0,Nl.jsx)("div",{className:Ab("description"),children:i}),(0,Nl.jsx)("div",{className:Ab("actions"),children:r})]})})},Zb=["title","description"],Fb=function(e){var t=e.title,n=e.description,i=nn(e,Zb);return(0,Nl.jsx)(Pb,Rt({image:(0,Nl.jsx)(Ay,{name:"403"}),title:t||kb("403.title"),description:n||kb("403.description")},i))},jb="ydb-entities-count";Va.registerKeyset(Fa.En,jb,{of:"of"}),Va.registerKeyset(Fa.Ru,jb,{of:"\u0438\u0437"});var Hb=Va.keyset(jb),Bb=function(e){var t=e.total,n=e.current,i=e.label,r=e.loading,o=e.className,a="";return i&&(a+="".concat(i,": ")),r?a+="...":(a+="".concat(n),t&&Number(t)!==Number(n)&&(a+=" ".concat(Hb("of")," ").concat(t))),(0,Nl.jsx)(Pg,{theme:"info",size:"m",className:o,children:a})},zb=function(e){var t=e.value,n=e.onChange,i=e.className;return(0,Nl.jsxs)(Dy,{value:t,onUpdate:n,className:i,children:[(0,Nl.jsx)(Dy.Option,{value:va.All,children:wa[va.All]}),(0,Nl.jsx)(Dy.Option,{value:va.SmallUptime,children:wa[va.SmallUptime]})]})},Wb=n(59833),Vb=function(t){var n=t.value,i=t.defaultValue,r=void 0===i?[]:i,o=t.multiple,a=t.onUpdate,s=e.useState(r),u=(0,ne.Z)(s,2),l=u[0],c=u[1],d=e.useState(),h=(0,ne.Z)(d,2),f=h[0],p=h[1],g=n||l,v=!n,m=function(t){var n=e.useState(t.defaultOpen||!1),i=(0,ne.Z)(n,2),r=i[0],o=i[1],a=t.onOpenChange,s="boolean"===typeof t.open,u=s?t.open:r,l=e.useCallback((function(e){var t="boolean"===typeof e?e:!u;t!==u&&(null===a||void 0===a||a(t),s||o(t))}),[u,a,s]);return{open:u,toggleOpen:l}}(t),_=m.toggleOpen,y=(0,Wb._T)(m,["toggleOpen"]),b=e.useCallback((function(e){if(!g.includes(e.value)){var t=[e.value];null===a||void 0===a||a(t),v&&c(t)}_(!1)}),[g,v,a,_]),w=e.useCallback((function(e){var t=g.includes(e.value)?g.filter((function(t){return t!==e.value})):[].concat((0,Ct.Z)(g),[e.value]);null===a||void 0===a||a(t),v&&c(t)}),[g,v,a]),C=e.useCallback((function(e){o?w(e):b(e)}),[o,b,w]),k=e.useCallback((function(){null===a||void 0===a||a([]),c([])}),[a]);return Object.assign({value:g,activeIndex:f,handleSelection:C,handleClearValue:k,setOpen:_,toggleOpen:_,setActiveIndex:p},y)},Yb=function(){function e(t,n){var i,r,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,X.Z)(this,e),this.nativeEvent=n,this.target=null!==(i=o.target)&&void 0!==i?i:n.target,this.currentTarget=null!==(r=o.currentTarget)&&void 0!==r?r:n.currentTarget,this.relatedTarget=n.relatedTarget,this.bubbles=n.bubbles,this.cancelable=n.cancelable,this.defaultPrevented=n.defaultPrevented,this.eventPhase=n.eventPhase,this.isTrusted=n.isTrusted,this.timeStamp=n.timeStamp,this.type=t}return(0,J.Z)(e,[{key:"isDefaultPrevented",value:function(){return this.nativeEvent.defaultPrevented}},{key:"preventDefault",value:function(){this.defaultPrevented=!0,this.nativeEvent.preventDefault()}},{key:"stopPropagation",value:function(){this.nativeEvent.stopPropagation(),this.isPropagationStopped=function(){return!0}}},{key:"isPropagationStopped",value:function(){return!1}},{key:"persist",value:function(){}}]),e}();function Ub(t){var n=t.onFocusWithin,i=t.onBlurWithin,r=t.onFocusWithinChange,o=t.isDisabled,a=e.useRef(!1),s=function(t){var n=t.onFocus,i=t.onBlur,r=t.isDisabled,o=e.useRef(!1),a=e.useRef(null);e.useEffect((function(){if(!r){var e=function(){o.current=!1},t=function(e){if(!o.current&&a.current){var t=new FocusEvent("blur",Object.assign(Object.assign({},e),{relatedTarget:e.target,bubbles:!1,cancelable:!1}));i(new Yb("blur",t,{target:a.current,currentTarget:a.current})),a.current=null}};return window.addEventListener("focus",e,{capture:!0}),window.addEventListener("focusin",t),function(){window.removeEventListener("focus",e,{capture:!0}),window.removeEventListener("focusin",t)}}}),[r,i]);var s=e.useCallback((function(e){null!==e.relatedTarget&&e.relatedTarget!==document.body&&e.relatedTarget!==document||(i(e),a.current=null)}),[i]),u=function(t){var n=e.useRef({isFocused:!1,observer:null});return e.useEffect((function(){var e=n.current;return function(){e.observer&&(e.observer.disconnect(),e.observer=null)}}),[]),e.useCallback((function(e){var i=e.target;if(i instanceof HTMLButtonElement||i instanceof HTMLInputElement||i instanceof HTMLTextAreaElement||i instanceof HTMLSelectElement){n.current.isFocused=!0,i.addEventListener("focusout",(function(e){n.current.isFocused=!1,i.disabled&&(null===t||void 0===t||t(new Yb("blur",e))),n.current.observer&&(n.current.observer.disconnect(),n.current.observer=null)}),{once:!0});var r=new MutationObserver((function(){if(n.current.isFocused&&i.disabled){r.disconnect(),n.current.observer=null;var e=i===document.activeElement?null:document.activeElement;i.dispatchEvent(new FocusEvent("blur",{relatedTarget:e})),i.dispatchEvent(new FocusEvent("focusout",{relatedTarget:e,bubbles:!0}))}}));r.observe(i,{attributes:!0,attributeFilter:["disabled"]}),n.current.observer=r}}),[t])}(i),l=e.useCallback((function(e){o.current=!0,a.current=e.target,u(e),n(e)}),[u,n]);return{onBlur:s,onFocus:l}}({onFocus:e.useCallback((function(e){a.current||document.activeElement!==e.target||(a.current=!0,n&&n(e),r&&r(!0))}),[n,r]),onBlur:e.useCallback((function(e){a.current&&(a.current=!1,i&&i(e),r&&r(!1))}),[i,r]),isDisabled:o}),u=s.onBlur,l=s.onFocus;return o?{focusWithinProps:{onFocus:void 0,onBlur:void 0}}:{focusWithinProps:{onFocus:l,onBlur:u}}}var Kb=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M2.97 5.47a.75.75 0 0 1 1.06 0L8 9.44l3.97-3.97a.75.75 0 1 1 1.06 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0l-4.5-4.5a.75.75 0 0 1 0-1.06Z",clipRule:"evenodd"}))},qb=n(37750),Gb=n.n(qb),$b=(0,ft.B_)("select"),Qb=(0,ft.B_)("select-control"),Xb=(0,ft.B_)("select-control__button"),Jb=(0,ft.B_)("select-list"),ew=(0,ft.B_)("select-clear"),tw={s:28,m:28,l:32,xl:36},nw="select-list",iw="select-popup",rw="select-sheet",ow="select-clear",aw=No({en:JSON.parse('{"label_clear":"Clear"}'),ru:JSON.parse('{"label_clear":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c"}')},"Select"),sw=function(t){var n=t.size,i=t.onClick,r=t.onMouseEnter,o=t.onMouseLeave,a=t.renderIcon,s=a?a():e.createElement(yo.J,{className:ew("clear"),data:go.Z});return e.createElement("button",{className:ew({size:n}),"aria-label":aw("label_clear"),onClick:i,onMouseEnter:r,onMouseLeave:o,"data-qa":ow},s)};sw.displayName="SelectClear";var uw=e.forwardRef((function(t,n){var i=t.toggleOpen,r=t.clearValue,o=t.onKeyDown,a=t.renderControl,s=t.view,u=t.size,l=t.pin,c=t.selectedOptionsContent,d=t.className,h=t.qa,f=t.name,p=t.label,g=t.placeholder,v=t.error,m=t.open,_=t.disabled,y=t.value,b=t.hasClear,w=t.popupId,C=t.selectId,k=t.activeIndex,S=Boolean(c),x=Boolean(g&&!S),L=Array.isArray(y)&&!Gb()(y.filter(Boolean)),E=e.useState(!1),D=(0,ne.Z)(E,2),N=D[0],M=D[1],T={open:m,size:u,pin:l,disabled:_,error:Boolean(v),"has-clear":b,"no-active":N,"has-value":L},I={open:m,size:u,view:s,pin:l,disabled:_,error:Boolean(v)},O=e.useCallback((function(){M(!0)}),[]),A=e.useCallback((function(){M(!1)}),[]),R=e.useCallback((function(){M(!1),r()}),[r]),P=function(t){var n=!(null===y||void 0===y?void 0:y[0]);return!b||!r||n||_?null:e.createElement(sw,{size:u,onClick:R,onMouseEnter:O,onMouseLeave:A,renderIcon:t.renderIcon})};return a?a({onKeyDown:o,onClear:r,onClick:i,renderClear:function(e){return P(e)},ref:n,open:Boolean(m),popupId:w,selectId:C,activeIndex:k},{value:y}):e.createElement(e.Fragment,null,e.createElement("div",{className:Qb(T),role:"group"},e.createElement("button",{ref:n,role:"combobox","aria-controls":w,className:Xb(I,d),"aria-haspopup":"listbox","aria-expanded":m,"aria-activedescendant":void 0===k?void 0:"".concat(C,"-list-item-").concat(k),name:f,disabled:_,onClick:i,onKeyDown:o,type:"button","data-qa":h},p&&e.createElement("span",{className:Qb("label")},p),x&&e.createElement("span",{className:Qb("placeholder")},g),S&&e.createElement("span",{className:Qb("option-text")},c)),P({}),e.createElement(yo.J,{className:Qb("chevron-icon",{disabled:_}),data:Kb,"aria-hidden":"true"})),"string"===typeof v&&e.createElement("div",{className:Qb("error")},v))}));uw.displayName="SelectControl";var lw=(0,ft.Ge)("sheet"),cw=(0,J.Z)((function e(t,n){(0,X.Z)(this,e),this.x=t,this.y=n,this.timeStamp=Date.now()})),dw=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5;(0,X.Z)(this,e),this.points=[],this.pointsLen=t,this.clear()}return(0,J.Z)(e,[{key:"clear",value:function(){this.points=new Array(this.pointsLen)}},{key:"addMovement",value:function(e){var t=e.x,n=e.y;this.points.pop(),this.points.unshift(new cw(t,n))}},{key:"getYAcceleration",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=this.points[0],n=this.points[e];return t&&n?(t.y-n.y)/Math.pow(t.timeStamp-n.timeStamp,2):0}}]),e}(),hw="0.3s",fw=50,pw=.08,gw=-.02,vw=.9,mw=[],_w=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var t;return(0,X.Z)(this,i),(t=n.apply(this,arguments)).veilRef=e.createRef(),t.sheetRef=e.createRef(),t.sheetTopRef=e.createRef(),t.sheetContentRef=e.createRef(),t.sheetInnerContentRef=e.createRef(),t.sheetTitleRef=e.createRef(),t.velocityTracker=new dw,t.observer=null,t.transitionDuration=hw,t.state={startScrollTop:0,startY:0,deltaY:0,prevSheetHeight:0,swipeAreaTouched:!1,contentTouched:!1,veilTouched:!1,isAnimating:!1,inWindowResizeScope:!1},t.setStyles=function(e){var n=e.status,i=e.deltaHeight,r=void 0===i?0:i;if(t.sheetRef.current&&t.veilRef.current){var o=t.sheetHeight-r,a="showing"===n?"translate3d(0, -".concat(o,"px, 0)"):"translate3d(0, 0, 0)",s=0;"showing"===n&&(s=0===r?1:o/t.sheetHeight),t.veilRef.current.style.opacity=String(s),t.sheetRef.current.style.transform=a}},t.show=function(){t.setState({isAnimating:!0},(function(){t.setStyles({status:"showing"}),t.setHash()}))},t.hide=function(){t.setState({isAnimating:!0},(function(){t.setStyles({status:"hiding"}),t.removeHash()}))},t.onSwipeAreaTouchStart=function(e){t.velocityTracker.clear(),t.setState({startY:e.nativeEvent.touches[0].clientY,swipeAreaTouched:!0})},t.onContentTouchStart=function(e){t.props.allowHideOnContentScroll&&!t.state.swipeAreaTouched&&(t.velocityTracker.clear(),t.setState({startY:e.nativeEvent.touches[0].clientY,startScrollTop:t.sheetScrollTop,contentTouched:!0}))},t.onSwipeAriaTouchMove=function(e){var n=e.nativeEvent.touches[0].clientY-t.state.startY;t.velocityTracker.addMovement({x:e.nativeEvent.touches[0].clientX,y:e.nativeEvent.touches[0].clientY}),t.setState({deltaY:n}),n<=0||t.setStyles({status:"showing",deltaHeight:n})},t.onContentTouchMove=function(e){if(t.props.allowHideOnContentScroll){var n=t.state,i=n.startScrollTop;if(!(n.swipeAreaTouched||t.sheetScrollTop>0||i>0&&i!==t.sheetScrollTop)){var r=e.nativeEvent.touches[0].clientY-t.state.startY;t.velocityTracker.addMovement({x:e.nativeEvent.touches[0].clientX,y:e.nativeEvent.touches[0].clientY}),t.setState({deltaY:r}),r<=0||t.setStyles({status:"showing",deltaHeight:r})}}},t.onTouchEndAction=function(e){var n=t.velocityTracker.getYAcceleration();t.sheetHeight<=e?t.props.hideSheet():e>fw&&n<=pw&&n>=gw||n>pw?t.hide():0!==e&&t.show()},t.onSwipeAriaTouchEnd=function(){var e=t.state.deltaY;t.onTouchEndAction(e),t.setState({startY:0,deltaY:0,swipeAreaTouched:!1})},t.onContentTouchEnd=function(){var e=t.state,n=e.deltaY,i=e.swipeAreaTouched;t.props.allowHideOnContentScroll&&!i&&(t.onTouchEndAction(n),t.setState({startY:0,deltaY:0,contentTouched:!1}))},t.onVeilClick=function(){t.setState({veilTouched:!0}),t.hide()},t.onVeilTransitionEnd=function(){t.setState({isAnimating:!1}),"0"===t.veilOpacity&&t.props.hideSheet()},t.onContentTransitionEnd=function(e){"height"===e.propertyName&&t.sheetContentRef.current&&(t.sheetContentRef.current.style.transition="none")},t.onResizeWindow=function(){t.setState({inWindowResizeScope:!0}),t.onResize(),setTimeout((function(){return t.setState({inWindowResizeScope:!1})}),0)},t.onResize=function(){if(t.sheetRef.current&&t.sheetContentRef.current){var e=t.sheetTitleHeight+t.innerContentHeight+t.sheetTopHeight,n=window.innerHeight*vw,i=e>=n?n:e;t.sheetContentRef.current.style.transition=t.state.prevSheetHeight>e?"height 0s ease ".concat(t.transitionDuration):"none",t.sheetContentRef.current.style.height="".concat(i-t.sheetTopHeight,"px"),t.sheetRef.current.style.transform="translate3d(0, -".concat(i,"px, 0)"),t.setState({prevSheetHeight:e})}},t}return(0,J.Z)(i,[{key:"componentDidMount",value:function(){this.addListeners(),this.show(),this.setInitialStyles(),this.setState({prevSheetHeight:this.sheetTitleHeight+this.innerContentHeight+this.sheetTopHeight})}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.visible,i=t.location;!e.visible&&n&&this.show(),(e.visible&&!n||this.shouldClose(e))&&this.hide(),e.location.pathname!==i.pathname&&(mw=[])}},{key:"componentWillUnmount",value:function(){this.removeListeners()}},{key:"render",value:function(){var t=this.props,n=t.content,i=t.contentClassName,r=t.swipeAreaClassName,o=t.hideTopBar,a=t.title,s=this.state,u=s.deltaY,l=s.swipeAreaTouched,c=s.contentTouched,d=s.veilTouched,h=s.isAnimating,f={"with-transition":!u||d},p={"with-transition":!s.inWindowResizeScope&&f["with-transition"]},g={"without-scroll":u>0&&c||l};return e.createElement(e.Fragment,null,e.createElement("div",{ref:this.veilRef,className:lw("veil",f),onClick:h?void 0:this.onVeilClick,onTransitionEnd:this.onVeilTransitionEnd}),e.createElement("div",{ref:this.sheetRef,className:lw("sheet",p)},!o&&e.createElement("div",{ref:this.sheetTopRef,className:lw("sheet-top")},e.createElement("div",{className:lw("sheet-top-resizer")})),e.createElement("div",{className:lw("sheet-swipe-area",r),onTouchStart:this.onSwipeAreaTouchStart,onTouchMove:this.onSwipeAriaTouchMove,onTouchEnd:this.onSwipeAriaTouchEnd}),e.createElement("div",{ref:this.sheetContentRef,className:lw("sheet-content",g,i),onTouchStart:this.onContentTouchStart,onTouchMove:this.onContentTouchMove,onTouchEnd:this.onContentTouchEnd,onTransitionEnd:this.onContentTransitionEnd},a&&e.createElement("div",{ref:this.sheetTitleRef,className:lw("sheet-content-title")},a),e.createElement("div",{ref:this.sheetInnerContentRef},n))))}},{key:"veilOpacity",get:function(){var e;return(null===(e=this.veilRef.current)||void 0===e?void 0:e.style.opacity)||0}},{key:"sheetTopHeight",get:function(){var e;return(null===(e=this.sheetTopRef.current)||void 0===e?void 0:e.getBoundingClientRect().height)||0}},{key:"sheetHeight",get:function(){var e;return(null===(e=this.sheetRef.current)||void 0===e?void 0:e.getBoundingClientRect().height)||0}},{key:"innerContentHeight",get:function(){var e;return(null===(e=this.sheetInnerContentRef.current)||void 0===e?void 0:e.getBoundingClientRect().height)||0}},{key:"sheetTitleHeight",get:function(){var e;return(null===(e=this.sheetTitleRef.current)||void 0===e?void 0:e.getBoundingClientRect().height)||0}},{key:"sheetScrollTop",get:function(){var e;return(null===(e=this.sheetContentRef.current)||void 0===e?void 0:e.scrollTop)||0}},{key:"setInitialStyles",value:function(){if(this.sheetContentRef.current&&this.sheetInnerContentRef.current){this.transitionDuration=getComputedStyle(this.sheetContentRef.current).getPropertyValue("--yc-sheet-transition-duration");var e=this.sheetHeight-this.sheetTopHeight;this.sheetContentRef.current.style.height="".concat(e,"px")}}},{key:"addListeners",value:function(){if(window.addEventListener("resize",this.onResizeWindow),this.sheetRef.current){this.observer=new MutationObserver(this.onResize),this.observer.observe(this.sheetRef.current,{subtree:!0,childList:!0})}}},{key:"removeListeners",value:function(){window.removeEventListener("resize",this.onResizeWindow),this.observer&&this.observer.disconnect()}},{key:"setHash",value:function(){var e=this.props,t=e.id,n=e.platform,i=e.location,r=e.history;if(n!==Pr.BROWSER){var o=Object.assign(Object.assign({},i),{hash:t});switch(n){case Pr.IOS:i.hash&&mw.push(i.hash),r.replace(o);break;case Pr.ANDROID:r.push(o)}}}},{key:"removeHash",value:function(){var e,t=this.props,n=t.id,i=t.platform,r=t.location,o=t.history;if(i!==Pr.BROWSER&&r.hash==="#".concat(n))switch(i){case Pr.IOS:o.replace(Object.assign(Object.assign({},r),{hash:null!==(e=mw.pop())&&void 0!==e?e:""}));break;case Pr.ANDROID:o.goBack()}}},{key:"shouldClose",value:function(e){var t=this.props,n=t.id,i=t.platform,r=t.location,o=t.history;return i!==Pr.BROWSER&&"POP"===o.action&&e.location.hash!==r.hash&&r.hash!=="#".concat(n)}}]),i}(e.Component);_w.defaultProps={id:"sheet",allowHideOnContentScroll:!0};var yw=function(t){var n,i,r=(i=t).displayName||i.name||"Component";return n=function(n){(0,ee.Z)(r,n);var i=(0,te.Z)(r);function r(){return(0,X.Z)(this,r),i.apply(this,arguments)}return(0,J.Z)(r,[{key:"render",value:function(){return e.createElement(t,Object.assign({},this.props,{mobile:this.context.mobile,platform:this.context.platform,useHistory:this.context.useHistory,useLocation:this.context.useLocation,setMobile:this.context.setMobile,setPlatform:this.context.setPlatform}))}}]),r}(e.Component),n.displayName="withMobile(".concat(r,")"),n.contextType=jr,n}(function(t){var n=function(n){var i=n.useHistory,r=n.useLocation,o=(0,Wb._T)(n,["useHistory","useLocation"]);return e.createElement(t,Object.assign({},o,{history:i(),location:r()}))},i=t.displayName||t.name||"Component";return n.displayName="withRouterWrapper(".concat(i,")"),n}(_w)),bw=function(n){(0,ee.Z)(r,n);var i=(0,te.Z)(r);function r(){var e;return(0,X.Z)(this,r),(e=i.apply(this,arguments)).bodyScrollLocked=!1,e.state={visible:!1},e.showSheet=function(){e.lockBodyScroll(),e.setState({visible:!0})},e.hideSheet=function(){e.restoreBodyScroll(),e.props.onClose&&e.props.onClose(),e.setState({visible:!1})},e}return(0,J.Z)(r,[{key:"componentDidMount",value:function(){this.props.visible&&this.showSheet()}},{key:"componentDidUpdate",value:function(e){!e.visible&&this.props.visible&&this.showSheet()}},{key:"componentWillUnmount",value:function(){this.restoreBodyScroll()}},{key:"render",value:function(){return this.state.visible?t.createPortal(this.renderSheet(),document.body):null}},{key:"restoreBodyScroll",value:function(){this.bodyScrollLocked&&(r.restoreBodyScroll(),this.bodyScrollLocked=!1)}},{key:"lockBodyScroll",value:function(){r.lockBodyScroll(),this.bodyScrollLocked=!0}},{key:"renderSheet",value:function(){var t=this.props,n=t.id,i=t.children,r=t.className,o=t.contentClassName,a=t.swipeAreaClassName,s=t.title,u=t.visible,l=t.allowHideOnContentScroll,c=t.hideTopBar,d=t.qa;return e.createElement("div",{"data-qa":d,className:lw(null,r)},e.createElement(yw,{id:n,content:i,contentClassName:o,swipeAreaClassName:a,title:s,visible:u,allowHideOnContentScroll:l,hideTopBar:c,hideSheet:this.hideSheet}))}}],[{key:"lockBodyScroll",value:function(){1===++r.bodyScrollLocksCount&&(r.bodyInitialOverflow=document.body.style.overflow,document.body.style.overflow="hidden")}},{key:"restoreBodyScroll",value:function(){0!==r.bodyScrollLocksCount&&0===--r.bodyScrollLocksCount&&(document.body.style.overflow=r.bodyInitialOverflow||"",r.bodyInitialOverflow=void 0)}}]),r}(e.Component);bw.bodyScrollLocksCount=0,bw.bodyInitialOverflow=void 0;var ww=function(e){return e-2},Cw=function(e,t,n){var i=t;return i="number"===typeof e?e:"fit"===e?ww(t):function(e,t){return t?e>100?e:100:ww(e)}(t,n),"".concat(i,"px")},kw=function(e){var t=e.width,n=e.disablePortal,i=e.virtualized,r={name:"sameWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var n,r=e.state,o=e.name;if(!(null===(n=r.modifiersData["".concat(o,"#persistent")])||void 0===n?void 0:n.skip)){var a=Cw(t,r.rects.reference.width,i);"number"!==typeof t&&"fit"!==t?(r.styles.popper.minWidth=a,r.styles.popper.width=void 0):(r.styles.popper.minWidth=a,r.styles.popper.width=a),r.styles.popper.maxWidth="max(90vw, ".concat(ww(r.rects.reference.width),"px)"),r.modifiersData["".concat(o,"#persistent")]={skip:"number"!==typeof t}}},effect:function(e){var n,r=e.state,o=e.name;if(!(null===(n=r.modifiersData["".concat(o,"#persistent")])||void 0===n?void 0:n.skip)){var a=Cw(t,r.elements.reference.offsetWidth,i);"number"!==typeof t&&"fit"!==t?r.elements.popper.style.minWidth=a:(r.elements.popper.style.minWidth=a,r.elements.popper.style.width=a),r.elements.popper.style.maxWidth="max(90vw, ".concat(r.elements.reference.offsetWidth,"px)")}}};return[r,{name:"preventOverflow",options:{padding:10,altBoundary:n,altAxis:!0}}]},Sw=(0,ft.B_)("select-popup"),xw=e.forwardRef((function(t,n){var i=t.handleClose,r=t.width,o=t.open,a=t.controlRef,s=t.children,u=t.className,l=t.disablePortal,c=t.virtualized,d=t.mobile,h=t.id;return d?e.createElement(bw,{qa:rw,className:u,visible:Boolean(o),onClose:i},s):e.createElement(J_,{contentClassName:Sw(null,u),qa:iw,anchorRef:n,placement:["bottom-start","bottom-end","top-start","top-end"],offset:[1,1],open:o,onClose:i,disablePortal:l,restoreFocus:!0,restoreFocusRef:a,modifiers:kw({width:r,disablePortal:l,virtualized:c}),id:h},s)}));xw.displayName="SelectPopup";var Lw=(0,ft.B_)("select-filter"),Ew={padding:"4px 4px 0"},Dw=e.forwardRef((function(t,n){var i=t.onChange,r=t.onKeyDown,o=t.renderFilter,a=t.size,s=t.value,u=t.placeholder,l=e.useRef(null);return e.useImperativeHandle(n,(function(){return{focus:function(){var e;return null===(e=l.current)||void 0===e?void 0:e.focus({preventScroll:!0})}}}),[]),o?o({onChange:i,onKeyDown:r,value:s,ref:l,style:Ew}):e.createElement("div",{className:Lw(),style:Ew},e.createElement(db,{controlRef:l,controlProps:{className:Lw("input"),size:1},size:a,value:s,placeholder:u,onUpdate:i,onKeyDown:r}))}));Dw.displayName="SelectFilter";var Nw=n(62892),Mw=n.n(Nw),Tw=n(82222),Iw=n.n(Tw);function Ow(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}var Aw="function"===typeof Symbol&&Symbol.observable||"@@observable",Rw=function(){return Math.random().toString(36).substring(7).split("").join(".")},Pw={INIT:"@@redux/INIT"+Rw(),REPLACE:"@@redux/REPLACE"+Rw(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Rw()}};function Zw(e){if("object"!==typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Fw(e,t,n){var i;if("function"===typeof t&&"function"===typeof n||"function"===typeof n&&"function"===typeof arguments[3])throw new Error(Ow(0));if("function"===typeof t&&"undefined"===typeof n&&(n=t,t=void 0),"undefined"!==typeof n){if("function"!==typeof n)throw new Error(Ow(1));return n(Fw)(e,t)}if("function"!==typeof e)throw new Error(Ow(2));var r=e,o=t,a=[],s=a,u=!1;function l(){s===a&&(s=a.slice())}function c(){if(u)throw new Error(Ow(3));return o}function d(e){if("function"!==typeof e)throw new Error(Ow(4));if(u)throw new Error(Ow(5));var t=!0;return l(),s.push(e),function(){if(t){if(u)throw new Error(Ow(6));t=!1,l();var n=s.indexOf(e);s.splice(n,1),a=null}}}function h(e){if(!Zw(e))throw new Error(Ow(7));if("undefined"===typeof e.type)throw new Error(Ow(8));if(u)throw new Error(Ow(9));try{u=!0,o=r(o,e)}finally{u=!1}for(var t=a=s,n=0;n<t.length;n++){(0,t[n])()}return e}return h({type:Pw.INIT}),(i={dispatch:h,subscribe:d,getState:c,replaceReducer:function(e){if("function"!==typeof e)throw new Error(Ow(10));r=e,h({type:Pw.REPLACE})}})[Aw]=function(){var e,t=d;return(e={subscribe:function(e){if("object"!==typeof e||null===e)throw new Error(Ow(11));function n(){e.next&&e.next(c())}return n(),{unsubscribe:t(n)}}})[Aw]=function(){return this},e},i}function jw(e,t){return function(){return t(e.apply(this,arguments))}}function Hw(e,t){if("function"===typeof e)return jw(e,t);if("object"!==typeof e||null===e)throw new Error(Ow(16));var n={};for(var i in e){var r=e[i];"function"===typeof r&&(n[i]=jw(r,t))}return n}function Bw(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce((function(e,t){return function(){return e(t.apply(void 0,arguments))}}))}function zw(t,n){var i=(0,e.useState)((function(){return{inputs:n,result:t()}}))[0],r=(0,e.useRef)(!0),o=(0,e.useRef)(i),a=r.current||Boolean(n&&o.current.inputs&&function(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}(n,o.current.inputs)),s=a?o.current:{inputs:n,result:t()};return(0,e.useEffect)((function(){r.current=!1,o.current=s}),[s]),s.result}var Ww=zw,Vw=function(e,t){return zw((function(){return e}),t)},Yw=function(e){var t=e.top,n=e.right,i=e.bottom,r=e.left;return{top:t,right:n,bottom:i,left:r,width:n-r,height:i-t,x:r,y:t,center:{x:(n+r)/2,y:(i+t)/2}}},Uw=function(e,t){return{top:e.top-t.top,left:e.left-t.left,bottom:e.bottom+t.bottom,right:e.right+t.right}},Kw=function(e,t){return{top:e.top+t.top,left:e.left+t.left,bottom:e.bottom-t.bottom,right:e.right-t.right}},qw={top:0,right:0,bottom:0,left:0},Gw=function(e){var t=e.borderBox,n=e.margin,i=void 0===n?qw:n,r=e.border,o=void 0===r?qw:r,a=e.padding,s=void 0===a?qw:a,u=Yw(Uw(t,i)),l=Yw(Kw(t,o)),c=Yw(Kw(l,s));return{marginBox:u,borderBox:Yw(t),paddingBox:l,contentBox:c,margin:i,border:o,padding:s}},$w=function(e){var t=e.slice(0,-2);if("px"!==e.slice(-2))return 0;var n=Number(t);return isNaN(n)&&he(!1),n},Qw=function(e,t){var n,i,r=e.borderBox,o=e.border,a=e.margin,s=e.padding,u=(i=t,{top:(n=r).top+i.y,left:n.left+i.x,bottom:n.bottom+i.y,right:n.right+i.x});return Gw({borderBox:u,border:o,margin:a,padding:s})},Xw=function(e,t){return void 0===t&&(t={x:window.pageXOffset,y:window.pageYOffset}),Qw(e,t)},Jw=function(e,t){var n={top:$w(t.marginTop),right:$w(t.marginRight),bottom:$w(t.marginBottom),left:$w(t.marginLeft)},i={top:$w(t.paddingTop),right:$w(t.paddingRight),bottom:$w(t.paddingBottom),left:$w(t.paddingLeft)},r={top:$w(t.borderTopWidth),right:$w(t.borderRightWidth),bottom:$w(t.borderBottomWidth),left:$w(t.borderLeftWidth)};return Gw({borderBox:e,margin:n,padding:i,border:r})},eC=function(e){var t=e.getBoundingClientRect(),n=window.getComputedStyle(e);return Jw(t,n)},tC=Number.isNaN||function(e){return"number"===typeof e&&e!==e};function nC(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(i=e[n],r=t[n],!(i===r||tC(i)&&tC(r)))return!1;var i,r;return!0}var iC=function(e,t){var n;void 0===t&&(t=nC);var i,r=[],o=!1;return function(){for(var a=[],s=0;s<arguments.length;s++)a[s]=arguments[s];return o&&n===this&&t(a,r)||(i=e.apply(this,a),o=!0,n=this,r=a),i}},rC=function(e){var t=[],n=null,i=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];t=r,n||(n=requestAnimationFrame((function(){n=null,e.apply(void 0,t)})))};return i.cancel=function(){n&&(cancelAnimationFrame(n),n=null)},i},oC=!0,aC=/[ \t]{2,}/g,sC=/^[ \t]*/gm,uC=function(e){return e.replace(aC," ").replace(sC,"").trim()},lC=function(e){return uC("\n %creact-beautiful-dnd\n\n %c"+uC(e)+"\n\n %c\ud83d\udc77\u200d This is a development only message. It will be removed in production builds.\n")},cC=function(e){return[lC(e),"color: #00C584; font-size: 1.2em; font-weight: bold;","line-height: 1.5","color: #723874;"]},dC="__react-beautiful-dnd-disable-dev-warnings";function hC(e,t){var n;oC||"undefined"!==typeof window&&window[dC]||(n=console)[e].apply(n,cC(t))}hC.bind(null,"warn"),hC.bind(null,"error");function fC(){}function pC(e,t,n){var i=t.map((function(t){var i=function(e,t){return c({},e,{},t)}(n,t.options);return e.addEventListener(t.eventName,t.fn,i),function(){e.removeEventListener(t.eventName,t.fn,i)}}));return function(){i.forEach((function(e){e()}))}}var gC=!0,vC="Invariant failed";function mC(e){this.message=e}function _C(e,t){if(!e)throw new mC(gC?vC:vC+": "+(t||""))}mC.prototype.toString=function(){return this.message};var yC=function(e){function t(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];return(t=e.call.apply(e,[this].concat(i))||this).callbacks=null,t.unbind=fC,t.onWindowError=function(e){var n=t.getCallbacks();n.isDragging()&&n.tryAbort(),e.error instanceof mC&&e.preventDefault()},t.getCallbacks=function(){if(!t.callbacks)throw new Error("Unable to find AppCallbacks in <ErrorBoundary/>");return t.callbacks},t.setCallbacks=function(e){t.callbacks=e},t}re(t,e);var n=t.prototype;return n.componentDidMount=function(){this.unbind=pC(window,[{eventName:"error",fn:this.onWindowError}])},n.componentDidCatch=function(e){if(!(e instanceof mC))throw e;this.setState({})},n.componentWillUnmount=function(){this.unbind()},n.render=function(){return this.props.children(this.setCallbacks)},t}(e.Component),bC=function(e){return e+1},wC=function(e,t){var n=e.droppableId===t.droppableId,i=bC(e.index),r=bC(t.index);return n?"\n You have moved the item from position "+i+"\n to position "+r+"\n ":"\n You have moved the item from position "+i+"\n in list "+e.droppableId+"\n to list "+t.droppableId+"\n in position "+r+"\n "},CC=function(e,t,n){return t.droppableId===n.droppableId?"\n The item "+e+"\n has been combined with "+n.draggableId:"\n The item "+e+"\n in list "+t.droppableId+"\n has been combined with "+n.draggableId+"\n in list "+n.droppableId+"\n "},kC=function(e){return"\n The item has returned to its starting position\n of "+bC(e.index)+"\n"},SC={dragHandleUsageInstructions:"\n Press space bar to start a drag.\n When dragging you can use the arrow keys to move the item around and escape to cancel.\n Some screen readers may require you to be in focus mode or to use your pass through key\n",onDragStart:function(e){return"\n You have lifted an item in position "+bC(e.source.index)+"\n"},onDragUpdate:function(e){var t=e.destination;if(t)return wC(e.source,t);var n=e.combine;return n?CC(e.draggableId,e.source,n):"You are over an area that cannot be dropped on"},onDragEnd:function(e){if("CANCEL"===e.reason)return"\n Movement cancelled.\n "+kC(e.source)+"\n ";var t=e.destination,n=e.combine;return t?"\n You have dropped the item.\n "+wC(e.source,t)+"\n ":n?"\n You have dropped the item.\n "+CC(e.draggableId,e.source,n)+"\n ":"\n The item has been dropped while not over a drop area.\n "+kC(e.source)+"\n "}},xC={x:0,y:0},LC=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},EC=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},DC=function(e,t){return e.x===t.x&&e.y===t.y},NC=function(e){return{x:0!==e.x?-e.x:0,y:0!==e.y?-e.y:0}},MC=function(e,t,n){var i;return void 0===n&&(n=0),(i={})[e]=t,i["x"===e?"y":"x"]=n,i},TC=function(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))},IC=function(e,t){return Math.min.apply(Math,t.map((function(t){return TC(e,t)})))},OC=function(e){return function(t){return{x:e(t.x),y:e(t.y)}}},AC=function(e,t){return{top:e.top+t.y,left:e.left+t.x,bottom:e.bottom+t.y,right:e.right+t.x}},RC=function(e){return[{x:e.left,y:e.top},{x:e.right,y:e.top},{x:e.left,y:e.bottom},{x:e.right,y:e.bottom}]},PC=function(e,t){return t&&t.shouldClipSubject?function(e,t){var n=Yw({top:Math.max(t.top,e.top),right:Math.min(t.right,e.right),bottom:Math.min(t.bottom,e.bottom),left:Math.max(t.left,e.left)});return n.width<=0||n.height<=0?null:n}(t.pageMarginBox,e):Yw(e)},ZC=function(e){var t=e.page,n=e.withPlaceholder,i=e.axis,r=e.frame,o=function(e,t){return t?AC(e,t.scroll.diff.displacement):e}(t.marginBox,r),a=function(e,t,n){var i;return n&&n.increasedBy?c({},e,((i={})[t.end]=e[t.end]+n.increasedBy[t.line],i)):e}(o,i,n);return{page:t,withPlaceholder:n,active:PC(a,r)}},FC=function(e,t){e.frame||_C(!1);var n=e.frame,i=EC(t,n.scroll.initial),r=NC(i),o=c({},n,{scroll:{initial:n.scroll.initial,current:t,diff:{value:i,displacement:r},max:n.scroll.max}});return c({},e,{frame:o,subject:ZC({page:e.subject.page,withPlaceholder:e.subject.withPlaceholder,axis:e.axis,frame:o})})};function jC(e){return Object.values?Object.values(e):Object.keys(e).map((function(t){return e[t]}))}function HC(e,t){if(e.findIndex)return e.findIndex(t);for(var n=0;n<e.length;n++)if(t(e[n]))return n;return-1}function BC(e,t){if(e.find)return e.find(t);var n=HC(e,t);return-1!==n?e[n]:void 0}function zC(e){return Array.prototype.slice.call(e)}var WC=iC((function(e){return e.reduce((function(e,t){return e[t.descriptor.id]=t,e}),{})})),VC=iC((function(e){return e.reduce((function(e,t){return e[t.descriptor.id]=t,e}),{})})),YC=iC((function(e){return jC(e)})),UC=iC((function(e){return jC(e)})),KC=iC((function(e,t){var n=UC(t).filter((function(t){return e===t.descriptor.droppableId})).sort((function(e,t){return e.descriptor.index-t.descriptor.index}));return n}));function qC(e){return e.at&&"REORDER"===e.at.type?e.at.destination:null}function GC(e){return e.at&&"COMBINE"===e.at.type?e.at.combine:null}var $C=iC((function(e,t){return t.filter((function(t){return t.descriptor.id!==e.descriptor.id}))})),QC=function(e,t){return e.descriptor.droppableId===t.descriptor.id},XC={point:xC,value:0},JC={invisible:{},visible:{},all:[]},ek={displaced:JC,displacedBy:XC,at:null},tk=function(e,t){return function(n){return e<=n&&n<=t}},nk=function(e){var t=tk(e.top,e.bottom),n=tk(e.left,e.right);return function(i){if(t(i.top)&&t(i.bottom)&&n(i.left)&&n(i.right))return!0;var r=t(i.top)||t(i.bottom),o=n(i.left)||n(i.right);if(r&&o)return!0;var a=i.top<e.top&&i.bottom>e.bottom,s=i.left<e.left&&i.right>e.right;return!(!a||!s)||(a&&o||s&&r)}},ik=function(e){var t=tk(e.top,e.bottom),n=tk(e.left,e.right);return function(e){return t(e.top)&&t(e.bottom)&&n(e.left)&&n(e.right)}},rk={direction:"vertical",line:"y",crossAxisLine:"x",start:"top",end:"bottom",size:"height",crossAxisStart:"left",crossAxisEnd:"right",crossAxisSize:"width"},ok={direction:"horizontal",line:"x",crossAxisLine:"y",start:"left",end:"right",size:"width",crossAxisStart:"top",crossAxisEnd:"bottom",crossAxisSize:"height"},ak=function(e){var t=e.target,n=e.destination,i=e.viewport,r=e.withDroppableDisplacement,o=e.isVisibleThroughFrameFn,a=r?function(e,t){var n=t.frame?t.frame.scroll.diff.displacement:xC;return AC(e,n)}(t,n):t;return function(e,t,n){return!!t.subject.active&&n(t.subject.active)(e)}(a,n,o)&&function(e,t,n){return n(t)(e)}(a,i,o)},sk=function(e){return ak(c({},e,{isVisibleThroughFrameFn:nk}))},uk=function(e){return ak(c({},e,{isVisibleThroughFrameFn:ik}))},lk=function(e,t,n){if("boolean"===typeof n)return n;if(!t)return!0;var i=t.invisible,r=t.visible;if(i[e])return!1;var o=r[e];return!o||o.shouldAnimate};function ck(e){var t=e.afterDragging,n=e.destination,i=e.displacedBy,r=e.viewport,o=e.forceShouldAnimate,a=e.last;return t.reduce((function(e,t){var s=function(e,t){var n=e.page.marginBox,i={top:t.point.y,right:0,bottom:0,left:t.point.x};return Yw(Uw(n,i))}(t,i),u=t.descriptor.id;if(e.all.push(u),!sk({target:s,destination:n,viewport:r,withDroppableDisplacement:!0}))return e.invisible[t.descriptor.id]=!0,e;var l={draggableId:u,shouldAnimate:lk(u,a,o)};return e.visible[u]=l,e}),{all:[],visible:{},invisible:{}})}function dk(e){var t=e.insideDestination,n=e.inHomeList,i=e.displacedBy,r=e.destination,o=function(e,t){if(!e.length)return 0;var n=e[e.length-1].descriptor.index;return t.inHomeList?n:n+1}(t,{inHomeList:n});return{displaced:JC,displacedBy:i,at:{type:"REORDER",destination:{droppableId:r.descriptor.id,index:o}}}}function hk(e){var t=e.draggable,n=e.insideDestination,i=e.destination,r=e.viewport,o=e.displacedBy,a=e.last,s=e.index,u=e.forceShouldAnimate,l=QC(t,i);if(null==s)return dk({insideDestination:n,inHomeList:l,displacedBy:o,destination:i});var c=BC(n,(function(e){return e.descriptor.index===s}));if(!c)return dk({insideDestination:n,inHomeList:l,displacedBy:o,destination:i});var d=$C(t,n),h=n.indexOf(c);return{displaced:ck({afterDragging:d.slice(h),destination:i,displacedBy:o,last:a,viewport:r.frame,forceShouldAnimate:u}),displacedBy:o,at:{type:"REORDER",destination:{droppableId:i.descriptor.id,index:s}}}}function fk(e,t){return Boolean(t.effected[e])}var pk=function(e){var t=e.isMovingForward,n=e.isInHomeList,i=e.draggable,r=e.draggables,o=e.destination,a=e.insideDestination,s=e.previousImpact,u=e.viewport,l=e.afterCritical,c=s.at;if(c||_C(!1),"REORDER"===c.type){var d=function(e){var t=e.isMovingForward,n=e.isInHomeList,i=e.insideDestination,r=e.location;if(!i.length)return null;var o=r.index,a=t?o+1:o-1,s=i[0].descriptor.index,u=i[i.length-1].descriptor.index;return a<s||a>(n?u:u+1)?null:a}({isMovingForward:t,isInHomeList:n,location:c.destination,insideDestination:a});return null==d?null:hk({draggable:i,insideDestination:a,destination:o,viewport:u,last:s.displaced,displacedBy:s.displacedBy,index:d})}var h=function(e){var t=e.isMovingForward,n=e.destination,i=e.draggables,r=e.combine,o=e.afterCritical;if(!n.isCombineEnabled)return null;var a=r.draggableId,s=i[a].descriptor.index;return fk(a,o)?t?s:s-1:t?s+1:s}({isMovingForward:t,destination:o,displaced:s.displaced,draggables:r,combine:c.combine,afterCritical:l});return null==h?null:hk({draggable:i,insideDestination:a,destination:o,viewport:u,last:s.displaced,displacedBy:s.displacedBy,index:h})},gk=function(e){var t=e.afterCritical,n=e.impact,i=e.draggables,r=GC(n);r||_C(!1);var o=r.draggableId,a=i[o].page.borderBox.center,s=function(e){var t=e.displaced,n=e.afterCritical,i=e.combineWith,r=e.displacedBy,o=Boolean(t.visible[i]||t.invisible[i]);return fk(i,n)?o?xC:NC(r.point):o?r.point:xC}({displaced:n.displaced,afterCritical:t,combineWith:o,displacedBy:n.displacedBy});return LC(a,s)},vk=function(e,t){return t.margin[e.start]+t.borderBox[e.size]/2},mk=function(e,t,n){return t[e.crossAxisStart]+n.margin[e.crossAxisStart]+n.borderBox[e.crossAxisSize]/2},_k=function(e){var t=e.axis,n=e.moveRelativeTo,i=e.isMoving;return MC(t.line,n.marginBox[t.end]+vk(t,i),mk(t,n.marginBox,i))},yk=function(e){var t=e.axis,n=e.moveRelativeTo,i=e.isMoving;return MC(t.line,n.marginBox[t.start]-function(e,t){return t.margin[e.end]+t.borderBox[e.size]/2}(t,i),mk(t,n.marginBox,i))},bk=function(e){var t=e.impact,n=e.draggable,i=e.draggables,r=e.droppable,o=e.afterCritical,a=KC(r.descriptor.id,i),s=n.page,u=r.axis;if(!a.length)return function(e){var t=e.axis,n=e.moveInto,i=e.isMoving;return MC(t.line,n.contentBox[t.start]+vk(t,i),mk(t,n.contentBox,i))}({axis:u,moveInto:r.page,isMoving:s});var l=t.displaced,c=t.displacedBy,d=l.all[0];if(d){var h=i[d];if(fk(d,o))return yk({axis:u,moveRelativeTo:h.page,isMoving:s});var f=Qw(h.page,c.point);return yk({axis:u,moveRelativeTo:f,isMoving:s})}var p=a[a.length-1];if(p.descriptor.id===n.descriptor.id)return s.borderBox.center;if(fk(p.descriptor.id,o)){var g=Qw(p.page,NC(o.displacedBy.point));return _k({axis:u,moveRelativeTo:g,isMoving:s})}return _k({axis:u,moveRelativeTo:p.page,isMoving:s})},wk=function(e,t){var n=e.frame;return n?LC(t,n.scroll.diff.displacement):t},Ck=function(e){var t=function(e){var t=e.impact,n=e.draggable,i=e.droppable,r=e.draggables,o=e.afterCritical,a=n.page.borderBox.center,s=t.at;return i&&s?"REORDER"===s.type?bk({impact:t,draggable:n,draggables:r,droppable:i,afterCritical:o}):gk({impact:t,draggables:r,afterCritical:o}):a}(e),n=e.droppable;return n?wk(n,t):t},kk=function(e,t){var n=EC(t,e.scroll.initial),i=NC(n);return{frame:Yw({top:t.y,bottom:t.y+e.frame.height,left:t.x,right:t.x+e.frame.width}),scroll:{initial:e.scroll.initial,max:e.scroll.max,current:t,diff:{value:n,displacement:i}}}};function Sk(e,t){return e.map((function(e){return t[e]}))}var xk=function(e){var t=e.pageBorderBoxCenter,n=e.draggable,i=function(e,t){return LC(e.scroll.diff.displacement,t)}(e.viewport,t),r=EC(i,n.page.borderBox.center);return LC(n.client.borderBox.center,r)},Lk=function(e){var t=e.draggable,n=e.destination,i=e.newPageBorderBoxCenter,r=e.viewport,o=e.withDroppableDisplacement,a=e.onlyOnMainAxis,s=void 0!==a&&a,u=EC(i,t.page.borderBox.center),l={target:AC(t.page.borderBox,u),destination:n,withDroppableDisplacement:o,viewport:r};return s?function(e){return ak(c({},e,{isVisibleThroughFrameFn:(t=e.destination.axis,function(e){var n=tk(e.top,e.bottom),i=tk(e.left,e.right);return function(e){return t===rk?n(e.top)&&n(e.bottom):i(e.left)&&i(e.right)}})}));var t}(l):uk(l)},Ek=function(e){var t=e.isMovingForward,n=e.draggable,i=e.destination,r=e.draggables,o=e.previousImpact,a=e.viewport,s=e.previousPageBorderBoxCenter,u=e.previousClientSelection,l=e.afterCritical;if(!i.isEnabled)return null;var d=KC(i.descriptor.id,r),h=QC(n,i),f=function(e){var t=e.isMovingForward,n=e.draggable,i=e.destination,r=e.insideDestination,o=e.previousImpact;if(!i.isCombineEnabled)return null;if(!qC(o))return null;function a(e){var t={type:"COMBINE",combine:{draggableId:e,droppableId:i.descriptor.id}};return c({},o,{at:t})}var s=o.displaced.all,u=s.length?s[0]:null;if(t)return u?a(u):null;var l=$C(n,r);if(!u)return l.length?a(l[l.length-1].descriptor.id):null;var d=HC(l,(function(e){return e.descriptor.id===u}));-1===d&&_C(!1);var h=d-1;return h<0?null:a(l[h].descriptor.id)}({isMovingForward:t,draggable:n,destination:i,insideDestination:d,previousImpact:o})||pk({isMovingForward:t,isInHomeList:h,draggable:n,draggables:r,destination:i,insideDestination:d,previousImpact:o,viewport:a,afterCritical:l});if(!f)return null;var p=Ck({impact:f,draggable:n,droppable:i,draggables:r,afterCritical:l});if(Lk({draggable:n,destination:i,newPageBorderBoxCenter:p,viewport:a.frame,withDroppableDisplacement:!1,onlyOnMainAxis:!0}))return{clientSelection:xk({pageBorderBoxCenter:p,draggable:n,viewport:a}),impact:f,scrollJumpRequest:null};var g=EC(p,s),v=function(e){var t=e.impact,n=e.viewport,i=e.destination,r=e.draggables,o=e.maxScrollChange,a=kk(n,LC(n.scroll.current,o)),s=i.frame?FC(i,LC(i.frame.scroll.current,o)):i,u=t.displaced,l=ck({afterDragging:Sk(u.all,r),destination:i,displacedBy:t.displacedBy,viewport:a.frame,last:u,forceShouldAnimate:!1}),d=ck({afterDragging:Sk(u.all,r),destination:s,displacedBy:t.displacedBy,viewport:n.frame,last:u,forceShouldAnimate:!1}),h={},f={},p=[u,l,d];return u.all.forEach((function(e){var t=function(e,t){for(var n=0;n<t.length;n++){var i=t[n].visible[e];if(i)return i}return null}(e,p);t?f[e]=t:h[e]=!0})),c({},t,{displaced:{all:u.all,invisible:h,visible:f}})}({impact:f,viewport:a,destination:i,draggables:r,maxScrollChange:g});return{clientSelection:u,impact:v,scrollJumpRequest:g}},Dk=function(e){var t=e.subject.active;return t||_C(!1),t},Nk=function(e,t){var n=e.page.borderBox.center;return fk(e.descriptor.id,t)?EC(n,t.displacedBy.point):n},Mk=function(e,t){var n=e.page.borderBox;return fk(e.descriptor.id,t)?AC(n,NC(t.displacedBy.point)):n},Tk=iC((function(e,t){var n=t[e.line];return{value:n,point:MC(e.line,n)}})),Ik=function(e,t){return c({},e,{scroll:c({},e.scroll,{max:t})})},Ok=function(e,t,n){var i=e.frame;QC(t,e)&&_C(!1),e.subject.withPlaceholder&&_C(!1);var r=Tk(e.axis,t.displaceBy).point,o=function(e,t,n){var i=e.axis;if("virtual"===e.descriptor.mode)return MC(i.line,t[i.line]);var r=e.subject.page.contentBox[i.size],o=KC(e.descriptor.id,n).reduce((function(e,t){return e+t.client.marginBox[i.size]}),0)+t[i.line]-r;return o<=0?null:MC(i.line,o)}(e,r,n),a={placeholderSize:r,increasedBy:o,oldFrameMaxScroll:e.frame?e.frame.scroll.max:null};if(!i)return c({},e,{subject:ZC({page:e.subject.page,withPlaceholder:a,axis:e.axis,frame:e.frame})});var s=o?LC(i.scroll.max,o):i.scroll.max,u=Ik(i,s);return c({},e,{subject:ZC({page:e.subject.page,withPlaceholder:a,axis:e.axis,frame:u}),frame:u})},Ak=function(e){var t=e.isMovingForward,n=e.previousPageBorderBoxCenter,i=e.draggable,r=e.isOver,o=e.draggables,a=e.droppables,s=e.viewport,u=e.afterCritical,l=function(e){var t=e.isMovingForward,n=e.pageBorderBoxCenter,i=e.source,r=e.droppables,o=e.viewport,a=i.subject.active;if(!a)return null;var s=i.axis,u=tk(a[s.start],a[s.end]),l=YC(r).filter((function(e){return e!==i})).filter((function(e){return e.isEnabled})).filter((function(e){return Boolean(e.subject.active)})).filter((function(e){return nk(o.frame)(Dk(e))})).filter((function(e){var n=Dk(e);return t?a[s.crossAxisEnd]<n[s.crossAxisEnd]:n[s.crossAxisStart]<a[s.crossAxisStart]})).filter((function(e){var t=Dk(e),n=tk(t[s.start],t[s.end]);return u(t[s.start])||u(t[s.end])||n(a[s.start])||n(a[s.end])})).sort((function(e,n){var i=Dk(e)[s.crossAxisStart],r=Dk(n)[s.crossAxisStart];return t?i-r:r-i})).filter((function(e,t,n){return Dk(e)[s.crossAxisStart]===Dk(n[0])[s.crossAxisStart]}));if(!l.length)return null;if(1===l.length)return l[0];var c=l.filter((function(e){return tk(Dk(e)[s.start],Dk(e)[s.end])(n[s.line])}));return 1===c.length?c[0]:c.length>1?c.sort((function(e,t){return Dk(e)[s.start]-Dk(t)[s.start]}))[0]:l.sort((function(e,t){var i=IC(n,RC(Dk(e))),r=IC(n,RC(Dk(t)));return i!==r?i-r:Dk(e)[s.start]-Dk(t)[s.start]}))[0]}({isMovingForward:t,pageBorderBoxCenter:n,source:r,droppables:a,viewport:s});if(!l)return null;var c=KC(l.descriptor.id,o),d=function(e){var t=e.pageBorderBoxCenter,n=e.viewport,i=e.destination,r=e.insideDestination,o=e.afterCritical,a=r.filter((function(e){return uk({target:Mk(e,o),destination:i,viewport:n.frame,withDroppableDisplacement:!0})})).sort((function(e,n){var r=TC(t,wk(i,Nk(e,o))),a=TC(t,wk(i,Nk(n,o)));return r<a?-1:a<r?1:e.descriptor.index-n.descriptor.index}));return a[0]||null}({pageBorderBoxCenter:n,viewport:s,destination:l,insideDestination:c,afterCritical:u}),h=function(e){var t=e.previousPageBorderBoxCenter,n=e.moveRelativeTo,i=e.insideDestination,r=e.draggable,o=e.draggables,a=e.destination,s=e.viewport,u=e.afterCritical;if(!n){if(i.length)return null;var l={displaced:JC,displacedBy:XC,at:{type:"REORDER",destination:{droppableId:a.descriptor.id,index:0}}},c=Ck({impact:l,draggable:r,droppable:a,draggables:o,afterCritical:u}),d=QC(r,a)?a:Ok(a,r,o);return Lk({draggable:r,destination:d,newPageBorderBoxCenter:c,viewport:s.frame,withDroppableDisplacement:!1,onlyOnMainAxis:!0})?l:null}var h=Boolean(t[a.axis.line]<=n.page.borderBox.center[a.axis.line]),f=function(){var e=n.descriptor.index;return n.descriptor.id===r.descriptor.id||h?e:e+1}(),p=Tk(a.axis,r.displaceBy);return hk({draggable:r,insideDestination:i,destination:a,viewport:s,displacedBy:p,last:JC,index:f})}({previousPageBorderBoxCenter:n,destination:l,draggable:i,draggables:o,moveRelativeTo:d,insideDestination:c,viewport:s,afterCritical:u});if(!h)return null;var f=Ck({impact:h,draggable:i,droppable:l,draggables:o,afterCritical:u});return{clientSelection:xk({pageBorderBoxCenter:f,draggable:i,viewport:s}),impact:h,scrollJumpRequest:null}},Rk=function(e){var t=e.at;return t?"REORDER"===t.type?t.destination.droppableId:t.combine.droppableId:null},Pk=function(e){var t=e.state,n=e.type,i=function(e,t){var n=Rk(e);return n?t[n]:null}(t.impact,t.dimensions.droppables),r=Boolean(i),o=t.dimensions.droppables[t.critical.droppable.id],a=i||o,s=a.axis.direction,u="vertical"===s&&("MOVE_UP"===n||"MOVE_DOWN"===n)||"horizontal"===s&&("MOVE_LEFT"===n||"MOVE_RIGHT"===n);if(u&&!r)return null;var l="MOVE_DOWN"===n||"MOVE_RIGHT"===n,c=t.dimensions.draggables[t.critical.draggable.id],d=t.current.page.borderBoxCenter,h=t.dimensions,f=h.draggables,p=h.droppables;return u?Ek({isMovingForward:l,previousPageBorderBoxCenter:d,draggable:c,destination:a,draggables:f,viewport:t.viewport,previousClientSelection:t.current.client.selection,previousImpact:t.impact,afterCritical:t.afterCritical}):Ak({isMovingForward:l,previousPageBorderBoxCenter:d,draggable:c,isOver:a,draggables:f,droppables:p,viewport:t.viewport,afterCritical:t.afterCritical})};function Zk(e){return"DRAGGING"===e.phase||"COLLECTING"===e.phase}function Fk(e){var t=tk(e.top,e.bottom),n=tk(e.left,e.right);return function(e){return t(e.y)&&n(e.x)}}function jk(e){var t=e.pageBorderBox,n=e.draggable,i=e.droppables,r=YC(i).filter((function(e){if(!e.isEnabled)return!1;var n,i,r=e.subject.active;if(!r)return!1;if(i=r,!((n=t).left<i.right&&n.right>i.left&&n.top<i.bottom&&n.bottom>i.top))return!1;if(Fk(r)(t.center))return!0;var o=e.axis,a=r.center[o.crossAxisLine],s=t[o.crossAxisStart],u=t[o.crossAxisEnd],l=tk(r[o.crossAxisStart],r[o.crossAxisEnd]),c=l(s),d=l(u);return!c&&!d||(c?s<a:u>a)}));return r.length?1===r.length?r[0].descriptor.id:function(e){var t=e.pageBorderBox,n=e.draggable,i=e.candidates,r=n.page.borderBox.center,o=i.map((function(e){var n=e.axis,i=MC(e.axis.line,t.center[n.line],e.page.borderBox.center[n.crossAxisLine]);return{id:e.descriptor.id,distance:TC(r,i)}})).sort((function(e,t){return t.distance-e.distance}));return o[0]?o[0].id:null}({pageBorderBox:t,draggable:n,candidates:r}):null}var Hk=function(e,t){return Yw(AC(e,t))};function Bk(e){var t=e.displaced,n=e.id;return Boolean(t.visible[n]||t.invisible[n])}var zk=function(e){var t=e.pageOffset,n=e.draggable,i=e.draggables,r=e.droppables,o=e.previousImpact,a=e.viewport,s=e.afterCritical,u=Hk(n.page.borderBox,t),l=jk({pageBorderBox:u,draggable:n,droppables:r});if(!l)return ek;var c=r[l],d=KC(c.descriptor.id,i),h=function(e,t){var n=e.frame;return n?Hk(t,n.scroll.diff.value):t}(c,u);return function(e){var t=e.draggable,n=e.pageBorderBoxWithDroppableScroll,i=e.previousImpact,r=e.destination,o=e.insideDestination,a=e.afterCritical;if(!r.isCombineEnabled)return null;var s=r.axis,u=Tk(r.axis,t.displaceBy),l=u.value,c=n[s.start],d=n[s.end],h=BC($C(t,o),(function(e){var t=e.descriptor.id,n=e.page.borderBox,r=n[s.size]/4,o=fk(t,a),u=Bk({displaced:i.displaced,id:t});return o?u?d>n[s.start]+r&&d<n[s.end]-r:c>n[s.start]-l+r&&c<n[s.end]-l-r:u?d>n[s.start]+l+r&&d<n[s.end]+l-r:c>n[s.start]+r&&c<n[s.end]-r}));return h?{displacedBy:u,displaced:i.displaced,at:{type:"COMBINE",combine:{draggableId:h.descriptor.id,droppableId:r.descriptor.id}}}:null}({pageBorderBoxWithDroppableScroll:h,draggable:n,previousImpact:o,destination:c,insideDestination:d,afterCritical:s})||function(e){var t=e.pageBorderBoxWithDroppableScroll,n=e.draggable,i=e.destination,r=e.insideDestination,o=e.last,a=e.viewport,s=e.afterCritical,u=i.axis,l=Tk(i.axis,n.displaceBy),c=l.value,d=t[u.start],h=t[u.end],f=function(e){var t=e.draggable,n=e.closest,i=e.inHomeList;return n?i&&n.descriptor.index>t.descriptor.index?n.descriptor.index-1:n.descriptor.index:null}({draggable:n,closest:BC($C(n,r),(function(e){var t=e.descriptor.id,n=e.page.borderBox.center[u.line],i=fk(t,s),r=Bk({displaced:o,id:t});return i?r?h<=n:d<n-c:r?h<=n+c:d<n})),inHomeList:QC(n,i)});return hk({draggable:n,insideDestination:r,destination:i,viewport:a,last:o,displacedBy:l,index:f})}({pageBorderBoxWithDroppableScroll:h,draggable:n,destination:c,insideDestination:d,last:o.displaced,viewport:a,afterCritical:s})},Wk=function(e,t){var n;return c({},e,((n={})[t.descriptor.id]=t,n))},Vk=function(e){var t=e.previousImpact,n=e.impact,i=e.droppables,r=Rk(t),o=Rk(n);if(!r)return i;if(r===o)return i;var a=i[r];if(!a.subject.withPlaceholder)return i;var s=function(e){var t=e.subject.withPlaceholder;t||_C(!1);var n=e.frame;if(!n)return c({},e,{subject:ZC({page:e.subject.page,axis:e.axis,frame:null,withPlaceholder:null})});var i=t.oldFrameMaxScroll;i||_C(!1);var r=Ik(n,i);return c({},e,{subject:ZC({page:e.subject.page,axis:e.axis,frame:r,withPlaceholder:null}),frame:r})}(a);return Wk(i,s)},Yk=function(e){var t=e.state,n=e.clientSelection,i=e.dimensions,r=e.viewport,o=e.impact,a=e.scrollJumpRequest,s=r||t.viewport,u=i||t.dimensions,l=n||t.current.client.selection,d=EC(l,t.initial.client.selection),h={offset:d,selection:l,borderBoxCenter:LC(t.initial.client.borderBoxCenter,d)},f={selection:LC(h.selection,s.scroll.current),borderBoxCenter:LC(h.borderBoxCenter,s.scroll.current),offset:LC(h.offset,s.scroll.diff.value)},p={client:h,page:f};if("COLLECTING"===t.phase)return c({phase:"COLLECTING"},t,{dimensions:u,viewport:s,current:p});var g=u.draggables[t.critical.draggable.id],v=o||zk({pageOffset:f.offset,draggable:g,draggables:u.draggables,droppables:u.droppables,previousImpact:t.impact,viewport:s,afterCritical:t.afterCritical}),m=function(e){var t=e.draggable,n=e.draggables,i=e.droppables,r=e.previousImpact,o=e.impact,a=Vk({previousImpact:r,impact:o,droppables:i}),s=Rk(o);if(!s)return a;var u=i[s];if(QC(t,u))return a;if(u.subject.withPlaceholder)return a;var l=Ok(u,t,n);return Wk(a,l)}({draggable:g,impact:v,previousImpact:t.impact,draggables:u.draggables,droppables:u.droppables});return c({},t,{current:p,dimensions:{draggables:u.draggables,droppables:m},impact:v,viewport:s,scrollJumpRequest:a||null,forceShouldAnimate:!a&&null})};var Uk=function(e){var t=e.impact,n=e.viewport,i=e.draggables,r=e.destination,o=e.forceShouldAnimate,a=t.displaced,s=function(e,t){return e.map((function(e){return t[e]}))}(a.all,i);return c({},t,{displaced:ck({afterDragging:s,destination:r,displacedBy:t.displacedBy,viewport:n.frame,forceShouldAnimate:o,last:a})})},Kk=function(e){var t=e.impact,n=e.draggable,i=e.droppable,r=e.draggables,o=e.viewport,a=e.afterCritical,s=Ck({impact:t,draggable:n,draggables:r,droppable:i,afterCritical:a});return xk({pageBorderBoxCenter:s,draggable:n,viewport:o})},qk=function(e){var t=e.state,n=e.dimensions,i=e.viewport;"SNAP"!==t.movementMode&&_C(!1);var r=t.impact,o=i||t.viewport,a=n||t.dimensions,s=a.draggables,u=a.droppables,l=s[t.critical.draggable.id],c=Rk(r);c||_C(!1);var d=u[c],h=Uk({impact:r,viewport:o,destination:d,draggables:s}),f=Kk({impact:h,draggable:l,droppable:d,draggables:s,viewport:o,afterCritical:t.afterCritical});return Yk({impact:h,clientSelection:f,state:t,dimensions:a,viewport:o})},Gk=function(e){var t=e.draggable,n=e.home,i=e.draggables,r=e.viewport,o=Tk(n.axis,t.displaceBy),a=KC(n.descriptor.id,i),s=a.indexOf(t);-1===s&&_C(!1);var u,l=a.slice(s+1),c=l.reduce((function(e,t){return e[t.descriptor.id]=!0,e}),{}),d={inVirtualList:"virtual"===n.descriptor.mode,displacedBy:o,effected:c};return{impact:{displaced:ck({afterDragging:l,destination:n,displacedBy:o,last:null,viewport:r.frame,forceShouldAnimate:!1}),displacedBy:o,at:{type:"REORDER",destination:(u=t.descriptor,{index:u.index,droppableId:u.droppableId})}},afterCritical:d}},$k=function(e){0},Qk=function(e){0},Xk=function(e){var t=e.additions,n=e.updatedDroppables,i=e.viewport,r=i.scroll.diff.value;return t.map((function(e){var t=e.descriptor.droppableId,o=function(e){var t=e.frame;return t||_C(!1),t}(n[t]),a=o.scroll.diff.value,s=function(e){var t=e.draggable,n=e.offset,i=e.initialWindowScroll,r=Qw(t.client,n),o=Xw(r,i);return c({},t,{placeholder:c({},t.placeholder,{client:r}),client:r,page:o})}({draggable:e,offset:LC(r,a),initialWindowScroll:i.scroll.initial});return s}))},Jk=function(e){return"SNAP"===e.movementMode},eS=function(e,t,n){var i=function(e,t){return{draggables:e.draggables,droppables:Wk(e.droppables,t)}}(e.dimensions,t);return!Jk(e)||n?Yk({state:e,dimensions:i}):qk({state:e,dimensions:i})};function tS(e){return e.isDragging&&"SNAP"===e.movementMode?c({phase:"DRAGGING"},e,{scrollJumpRequest:null}):e}var nS={phase:"IDLE",completed:null,shouldFlush:!1},iS=function(e,t){if(void 0===e&&(e=nS),"FLUSH"===t.type)return c({},nS,{shouldFlush:!0});if("INITIAL_PUBLISH"===t.type){"IDLE"!==e.phase&&_C(!1);var n=t.payload,i=n.critical,r=n.clientSelection,o=n.viewport,a=n.dimensions,s=n.movementMode,u=a.draggables[i.draggable.id],l=a.droppables[i.droppable.id],d={selection:r,borderBoxCenter:u.client.borderBox.center,offset:xC},h={client:d,page:{selection:LC(d.selection,o.scroll.initial),borderBoxCenter:LC(d.selection,o.scroll.initial),offset:LC(d.selection,o.scroll.diff.value)}},f=YC(a.droppables).every((function(e){return!e.isFixedOnPage})),p=Gk({draggable:u,home:l,draggables:a.draggables,viewport:o}),g=p.impact;return{phase:"DRAGGING",isDragging:!0,critical:i,movementMode:s,dimensions:a,initial:h,current:h,isWindowScrollAllowed:f,impact:g,afterCritical:p.afterCritical,onLiftImpact:g,viewport:o,scrollJumpRequest:null,forceShouldAnimate:null}}if("COLLECTION_STARTING"===t.type)return"COLLECTING"===e.phase||"DROP_PENDING"===e.phase?e:("DRAGGING"!==e.phase&&_C(!1),c({phase:"COLLECTING"},e,{phase:"COLLECTING"}));if("PUBLISH_WHILE_DRAGGING"===t.type)return"COLLECTING"!==e.phase&&"DROP_PENDING"!==e.phase&&_C(!1),function(e){var t=e.state,n=e.published;$k();var i=n.modified.map((function(e){var n=t.dimensions.droppables[e.droppableId];return FC(n,e.scroll)})),r=c({},t.dimensions.droppables,{},WC(i)),o=VC(Xk({additions:n.additions,updatedDroppables:r,viewport:t.viewport})),a=c({},t.dimensions.draggables,{},o);n.removals.forEach((function(e){delete a[e]}));var s={droppables:r,draggables:a},u=Rk(t.impact),l=u?s.droppables[u]:null,d=s.draggables[t.critical.draggable.id],h=s.droppables[t.critical.droppable.id],f=Gk({draggable:d,home:h,draggables:a,viewport:t.viewport}),p=f.impact,g=f.afterCritical,v=l&&l.isCombineEnabled?t.impact:p,m=zk({pageOffset:t.current.page.offset,draggable:s.draggables[t.critical.draggable.id],draggables:s.draggables,droppables:s.droppables,previousImpact:v,viewport:t.viewport,afterCritical:g});Qk();var _=c({phase:"DRAGGING"},t,{phase:"DRAGGING",impact:m,onLiftImpact:p,dimensions:s,afterCritical:g,forceShouldAnimate:!1});return"COLLECTING"===t.phase?_:c({phase:"DROP_PENDING"},_,{phase:"DROP_PENDING",reason:t.reason,isWaiting:!1})}({state:e,published:t.payload});if("MOVE"===t.type){if("DROP_PENDING"===e.phase)return e;Zk(e)||_C(!1);var v=t.payload.client;return DC(v,e.current.client.selection)?e:Yk({state:e,clientSelection:v,impact:Jk(e)?e.impact:null})}if("UPDATE_DROPPABLE_SCROLL"===t.type){if("DROP_PENDING"===e.phase)return tS(e);if("COLLECTING"===e.phase)return tS(e);Zk(e)||_C(!1);var m=t.payload,_=m.id,y=m.newScroll,b=e.dimensions.droppables[_];if(!b)return e;var w=FC(b,y);return eS(e,w,!1)}if("UPDATE_DROPPABLE_IS_ENABLED"===t.type){if("DROP_PENDING"===e.phase)return e;Zk(e)||_C(!1);var C=t.payload,k=C.id,S=C.isEnabled,x=e.dimensions.droppables[k];x||_C(!1),x.isEnabled===S&&_C(!1);var L=c({},x,{isEnabled:S});return eS(e,L,!0)}if("UPDATE_DROPPABLE_IS_COMBINE_ENABLED"===t.type){if("DROP_PENDING"===e.phase)return e;Zk(e)||_C(!1);var E=t.payload,D=E.id,N=E.isCombineEnabled,M=e.dimensions.droppables[D];M||_C(!1),M.isCombineEnabled===N&&_C(!1);var T=c({},M,{isCombineEnabled:N});return eS(e,T,!0)}if("MOVE_BY_WINDOW_SCROLL"===t.type){if("DROP_PENDING"===e.phase||"DROP_ANIMATING"===e.phase)return e;Zk(e)||_C(!1),e.isWindowScrollAllowed||_C(!1);var I=t.payload.newScroll;if(DC(e.viewport.scroll.current,I))return tS(e);var O=kk(e.viewport,I);return Jk(e)?qk({state:e,viewport:O}):Yk({state:e,viewport:O})}if("UPDATE_VIEWPORT_MAX_SCROLL"===t.type){if(!Zk(e))return e;var A=t.payload.maxScroll;if(DC(A,e.viewport.scroll.max))return e;var R=c({},e.viewport,{scroll:c({},e.viewport.scroll,{max:A})});return c({phase:"DRAGGING"},e,{viewport:R})}if("MOVE_UP"===t.type||"MOVE_DOWN"===t.type||"MOVE_LEFT"===t.type||"MOVE_RIGHT"===t.type){if("COLLECTING"===e.phase||"DROP_PENDING"===e.phase)return e;"DRAGGING"!==e.phase&&_C(!1);var P=Pk({state:e,type:t.type});return P?Yk({state:e,impact:P.impact,clientSelection:P.clientSelection,scrollJumpRequest:P.scrollJumpRequest}):e}if("DROP_PENDING"===t.type){var Z=t.payload.reason;return"COLLECTING"!==e.phase&&_C(!1),c({phase:"DROP_PENDING"},e,{phase:"DROP_PENDING",isWaiting:!0,reason:Z})}if("DROP_ANIMATE"===t.type){var F=t.payload,j=F.completed,H=F.dropDuration,B=F.newHomeClientOffset;return"DRAGGING"!==e.phase&&"DROP_PENDING"!==e.phase&&_C(!1),{phase:"DROP_ANIMATING",completed:j,dropDuration:H,newHomeClientOffset:B,dimensions:e.dimensions}}return"DROP_COMPLETE"===t.type?{phase:"IDLE",completed:t.payload.completed,shouldFlush:!1}:e},rS=function(e){return{type:"LIFT",payload:e}},oS=function(e){return{type:"PUBLISH_WHILE_DRAGGING",payload:e}},aS=function(){return{type:"COLLECTION_STARTING",payload:null}},sS=function(e){return{type:"UPDATE_DROPPABLE_SCROLL",payload:e}},uS=function(e){return{type:"UPDATE_DROPPABLE_IS_ENABLED",payload:e}},lS=function(e){return{type:"UPDATE_DROPPABLE_IS_COMBINE_ENABLED",payload:e}},cS=function(e){return{type:"MOVE",payload:e}},dS=function(){return{type:"MOVE_UP",payload:null}},hS=function(){return{type:"MOVE_DOWN",payload:null}},fS=function(){return{type:"MOVE_RIGHT",payload:null}},pS=function(){return{type:"MOVE_LEFT",payload:null}},gS=function(){return{type:"FLUSH",payload:null}},vS=function(e){return{type:"DROP_COMPLETE",payload:e}},mS=function(e){return{type:"DROP",payload:e}},_S=function(){return{type:"DROP_ANIMATION_FINISHED",payload:null}};var yS={outOfTheWay:"cubic-bezier(0.2, 0, 0, 1)",drop:"cubic-bezier(.2,1,.1,1)"},bS={opacity:{drop:0,combining:.7},scale:{drop:.75}},wS=.33,CS=.55,kS=.2+"s "+yS.outOfTheWay,SS={fluid:"opacity "+kS,snap:"transform "+kS+", opacity "+kS,drop:function(e){var t=e+"s "+yS.drop;return"transform "+t+", opacity "+t},outOfTheWay:"transform "+kS,placeholder:"height "+kS+", width "+kS+", margin "+kS},xS=function(e){return DC(e,xC)?null:"translate("+e.x+"px, "+e.y+"px)"},LS={moveTo:xS,drop:function(e,t){var n=xS(e);return n?t?n+" scale("+bS.scale.drop+")":n:null}},ES=wS,DS=CS,NS=DS-ES,MS=function(e){var t=e.getState,n=e.dispatch;return function(e){return function(i){if("DROP"===i.type){var r=t(),o=i.payload.reason;if("COLLECTING"!==r.phase){if("IDLE"!==r.phase){"DROP_PENDING"===r.phase&&r.isWaiting&&_C(!1),"DRAGGING"!==r.phase&&"DROP_PENDING"!==r.phase&&_C(!1);var a=r.critical,s=r.dimensions,u=s.draggables[r.critical.draggable.id],l=function(e){var t=e.draggables,n=e.reason,i=e.lastImpact,r=e.home,o=e.viewport,a=e.onLiftImpact;return i.at&&"DROP"===n?"REORDER"===i.at.type?{impact:i,didDropInsideDroppable:!0}:{impact:c({},i,{displaced:JC}),didDropInsideDroppable:!0}:{impact:Uk({draggables:t,impact:a,destination:r,viewport:o,forceShouldAnimate:!0}),didDropInsideDroppable:!1}}({reason:o,lastImpact:r.impact,afterCritical:r.afterCritical,onLiftImpact:r.onLiftImpact,home:r.dimensions.droppables[r.critical.droppable.id],viewport:r.viewport,draggables:r.dimensions.draggables}),d=l.impact,h=l.didDropInsideDroppable,f=h?qC(d):null,p=h?GC(d):null,g={index:a.draggable.index,droppableId:a.droppable.id},v={draggableId:u.descriptor.id,type:u.descriptor.type,source:g,reason:o,mode:r.movementMode,destination:f,combine:p},m=function(e){var t=e.impact,n=e.draggable,i=e.dimensions,r=e.viewport,o=e.afterCritical,a=i.draggables,s=i.droppables,u=Rk(t),l=u?s[u]:null,c=s[n.descriptor.droppableId],d=Kk({impact:t,draggable:n,draggables:a,afterCritical:o,droppable:l||c,viewport:r});return EC(d,n.client.borderBox.center)}({impact:d,draggable:u,dimensions:s,viewport:r.viewport,afterCritical:r.afterCritical}),_={critical:r.critical,afterCritical:r.afterCritical,result:v,impact:d};if(!DC(r.current.client.offset,m)||Boolean(v.combine)){var y=function(e){var t=e.current,n=e.destination,i=e.reason,r=TC(t,n);if(r<=0)return ES;if(r>=1500)return DS;var o=ES+NS*(r/1500);return Number(("CANCEL"===i?.6*o:o).toFixed(2))}({current:r.current.client.offset,destination:m,reason:o});n(function(e){return{type:"DROP_ANIMATE",payload:e}}({newHomeClientOffset:m,dropDuration:y,completed:_}))}else n(vS({completed:_}))}}else n(function(e){return{type:"DROP_PENDING",payload:e}}({reason:o}))}else e(i)}}},TS=function(){return{x:window.pageXOffset,y:window.pageYOffset}};function IS(e){var t=e.onWindowScroll;var n=rC((function(){t(TS())})),i=function(e){return{eventName:"scroll",options:{passive:!0,capture:!1},fn:function(t){t.target!==window&&t.target!==window.document||e()}}}(n),r=fC;function o(){return r!==fC}return{start:function(){o()&&_C(!1),r=pC(window,[i])},stop:function(){o()||_C(!1),n.cancel(),r(),r=fC},isActive:o}}var OS=function(e){var t=IS({onWindowScroll:function(t){e.dispatch({type:"MOVE_BY_WINDOW_SCROLL",payload:{newScroll:t}})}});return function(e){return function(n){t.isActive()||"INITIAL_PUBLISH"!==n.type||t.start(),t.isActive()&&function(e){return"DROP_COMPLETE"===e.type||"DROP_ANIMATE"===e.type||"FLUSH"===e.type}(n)&&t.stop(),e(n)}}},AS=function(){var e=[];return{add:function(t){var n=setTimeout((function(){return function(t){var n=HC(e,(function(e){return e.timerId===t}));-1===n&&_C(!1),e.splice(n,1)[0].callback()}(n)})),i={timerId:n,callback:t};e.push(i)},flush:function(){if(e.length){var t=[].concat(e);e.length=0,t.forEach((function(e){clearTimeout(e.timerId),e.callback()}))}}}},RS=function(e,t){$k(),t(),Qk()},PS=function(e,t){return{draggableId:e.draggable.id,type:e.droppable.type,source:{droppableId:e.droppable.id,index:e.draggable.index},mode:t}},ZS=function(e,t,n,i){if(e){var r=function(e){var t=!1,n=!1,i=setTimeout((function(){n=!0})),r=function(r){t||n||(t=!0,e(r),clearTimeout(i))};return r.wasCalled=function(){return t},r}(n);e(t,{announce:r}),r.wasCalled()||n(i(t))}else n(i(t))},FS=function(e,t){var n=function(e,t){var n=AS(),i=null,r=function(n){i||_C(!1),i=null,RS(0,(function(){return ZS(e().onDragEnd,n,t,SC.onDragEnd)}))};return{beforeCapture:function(t,n){i&&_C(!1),RS(0,(function(){var i=e().onBeforeCapture;i&&i({draggableId:t,mode:n})}))},beforeStart:function(t,n){i&&_C(!1),RS(0,(function(){var i=e().onBeforeDragStart;i&&i(PS(t,n))}))},start:function(r,o){i&&_C(!1);var a=PS(r,o);i={mode:o,lastCritical:r,lastLocation:a.source,lastCombine:null},n.add((function(){RS(0,(function(){return ZS(e().onDragStart,a,t,SC.onDragStart)}))}))},update:function(r,o){var a=qC(o),s=GC(o);i||_C(!1);var u=!function(e,t){if(e===t)return!0;var n=e.draggable.id===t.draggable.id&&e.draggable.droppableId===t.draggable.droppableId&&e.draggable.type===t.draggable.type&&e.draggable.index===t.draggable.index,i=e.droppable.id===t.droppable.id&&e.droppable.type===t.droppable.type;return n&&i}(r,i.lastCritical);u&&(i.lastCritical=r);var l,d,h=(d=a,!(null==(l=i.lastLocation)&&null==d||null!=l&&null!=d&&l.droppableId===d.droppableId&&l.index===d.index));h&&(i.lastLocation=a);var f=!function(e,t){return null==e&&null==t||null!=e&&null!=t&&e.draggableId===t.draggableId&&e.droppableId===t.droppableId}(i.lastCombine,s);if(f&&(i.lastCombine=s),u||h||f){var p=c({},PS(r,i.mode),{combine:s,destination:a});n.add((function(){RS(0,(function(){return ZS(e().onDragUpdate,p,t,SC.onDragUpdate)}))}))}},flush:function(){i||_C(!1),n.flush()},drop:r,abort:function(){if(i){var e=c({},PS(i.lastCritical,i.mode),{combine:null,destination:null,reason:"CANCEL"});r(e)}}}}(e,t);return function(e){return function(t){return function(i){if("BEFORE_INITIAL_CAPTURE"!==i.type){if("INITIAL_PUBLISH"===i.type){var r=i.payload.critical;return n.beforeStart(r,i.payload.movementMode),t(i),void n.start(r,i.payload.movementMode)}if("DROP_COMPLETE"===i.type){var o=i.payload.completed.result;return n.flush(),t(i),void n.drop(o)}if(t(i),"FLUSH"!==i.type){var a=e.getState();"DRAGGING"===a.phase&&n.update(a.critical,a.impact)}else n.abort()}else n.beforeCapture(i.payload.draggableId,i.payload.movementMode)}}}},jS=function(e){return function(t){return function(n){if("DROP_ANIMATION_FINISHED"===n.type){var i=e.getState();"DROP_ANIMATING"!==i.phase&&_C(!1),e.dispatch(vS({completed:i.completed}))}else t(n)}}},HS=function(e){var t=null,n=null;return function(i){return function(r){if("FLUSH"!==r.type&&"DROP_COMPLETE"!==r.type&&"DROP_ANIMATION_FINISHED"!==r.type||(n&&(cancelAnimationFrame(n),n=null),t&&(t(),t=null)),i(r),"DROP_ANIMATE"===r.type){var o={eventName:"scroll",options:{capture:!0,passive:!1,once:!0},fn:function(){"DROP_ANIMATING"===e.getState().phase&&e.dispatch({type:"DROP_ANIMATION_FINISHED",payload:null})}};n=requestAnimationFrame((function(){n=null,t=pC(window,[o])}))}}}},BS=function(e){return function(t){return function(n){if(t(n),"PUBLISH_WHILE_DRAGGING"===n.type){var i=e.getState();"DROP_PENDING"===i.phase&&(i.isWaiting||e.dispatch(mS({reason:i.reason})))}}}},zS=Bw,WS=function(e){var t,n=e.dimensionMarshal,i=e.focusMarshal,r=e.styleMarshal,o=e.getResponders,a=e.announce,s=e.autoScroller;return Fw(iS,zS(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){return function(){var n=e.apply(void 0,arguments),i=function(){throw new Error(Ow(15))},r={getState:n.getState,dispatch:function(){return i.apply(void 0,arguments)}},o=t.map((function(e){return e(r)}));return i=Bw.apply(void 0,o)(n.dispatch),Rt(Rt({},n),{},{dispatch:i})}}}((t=r,function(){return function(e){return function(n){"INITIAL_PUBLISH"===n.type&&t.dragging(),"DROP_ANIMATE"===n.type&&t.dropping(n.payload.completed.result.reason),"FLUSH"!==n.type&&"DROP_COMPLETE"!==n.type||t.resting(),e(n)}}}),function(e){return function(){return function(t){return function(n){"DROP_COMPLETE"!==n.type&&"FLUSH"!==n.type&&"DROP_ANIMATE"!==n.type||e.stopPublishing(),t(n)}}}}(n),function(e){return function(t){var n=t.getState,i=t.dispatch;return function(t){return function(r){if("LIFT"===r.type){var o=r.payload,a=o.id,s=o.clientSelection,u=o.movementMode,l=n();"DROP_ANIMATING"===l.phase&&i(vS({completed:l.completed})),"IDLE"!==n().phase&&_C(!1),i(gS()),i({type:"BEFORE_INITIAL_CAPTURE",payload:{draggableId:a,movementMode:u}});var c={draggableId:a,scrollOptions:{shouldPublishImmediately:"SNAP"===u}},d=e.startPublishing(c),h=d.critical,f=d.dimensions,p=d.viewport;i({type:"INITIAL_PUBLISH",payload:{critical:h,dimensions:f,clientSelection:s,movementMode:u,viewport:p}})}else t(r)}}}}(n),MS,jS,HS,BS,function(e){return function(t){return function(n){return function(i){if(function(e){return"DROP_COMPLETE"===e.type||"DROP_ANIMATE"===e.type||"FLUSH"===e.type}(i))return e.stop(),void n(i);if("INITIAL_PUBLISH"===i.type){n(i);var r=t.getState();return"DRAGGING"!==r.phase&&_C(!1),void e.start(r)}n(i),e.scroll(t.getState())}}}}(s),OS,function(e){var t=!1;return function(){return function(n){return function(i){if("INITIAL_PUBLISH"===i.type)return t=!0,e.tryRecordFocus(i.payload.critical.draggable.id),n(i),void e.tryRestoreFocusRecorded();if(n(i),t){if("FLUSH"===i.type)return t=!1,void e.tryRestoreFocusRecorded();if("DROP_COMPLETE"===i.type){t=!1;var r=i.payload.completed.result;r.combine&&e.tryShiftRecord(r.draggableId,r.combine.draggableId),e.tryRestoreFocusRecorded()}}}}}}(i),FS(o,a))))},VS=function(){return{additions:{},removals:{},modified:{}}};var YS=function(e){var t=e.scrollHeight,n=e.scrollWidth,i=e.height,r=e.width,o=EC({x:n,y:t},{x:r,y:i});return{x:Math.max(0,o.x),y:Math.max(0,o.y)}},US=function(){var e=document.documentElement;return e||_C(!1),e},KS=function(){var e=US();return YS({scrollHeight:e.scrollHeight,scrollWidth:e.scrollWidth,width:e.clientWidth,height:e.clientHeight})},qS=function(e){var t=e.critical,n=e.scrollOptions,i=e.registry;$k();var r=function(){var e=TS(),t=KS(),n=e.y,i=e.x,r=US(),o=r.clientWidth,a=r.clientHeight;return{frame:Yw({top:n,left:i,right:i+o,bottom:n+a}),scroll:{initial:e,current:e,max:t,diff:{value:xC,displacement:xC}}}}(),o=r.scroll.current,a=t.droppable,s=i.droppable.getAllByType(a.type).map((function(e){return e.callbacks.getDimensionAndWatchScroll(o,n)})),u=i.draggable.getAllByType(t.draggable.type).map((function(e){return e.getDimension(o)})),l={draggables:VC(u),droppables:WC(s)};return Qk(),{dimensions:l,critical:t,viewport:r}};function GS(e,t,n){return n.descriptor.id!==t.id&&(n.descriptor.type===t.type&&"virtual"===e.droppable.getById(n.descriptor.droppableId).descriptor.mode)}var $S=function(e,t){var n=null,i=function(e){var t=e.registry,n=e.callbacks,i=VS(),r=null,o=function(){r||(n.collectionStarting(),r=requestAnimationFrame((function(){r=null,$k();var e=i,o=e.additions,a=e.removals,s=e.modified,u=Object.keys(o).map((function(e){return t.draggable.getById(e).getDimension(xC)})).sort((function(e,t){return e.descriptor.index-t.descriptor.index})),l=Object.keys(s).map((function(e){return{droppableId:e,scroll:t.droppable.getById(e).callbacks.getScrollWhileDragging()}})),c={additions:u,removals:Object.keys(a),modified:l};i=VS(),Qk(),n.publish(c)})))};return{add:function(e){var t=e.descriptor.id;i.additions[t]=e,i.modified[e.descriptor.droppableId]=!0,i.removals[t]&&delete i.removals[t],o()},remove:function(e){var t=e.descriptor;i.removals[t.id]=!0,i.modified[t.droppableId]=!0,i.additions[t.id]&&delete i.additions[t.id],o()},stop:function(){r&&(cancelAnimationFrame(r),r=null,i=VS())}}}({callbacks:{publish:t.publishWhileDragging,collectionStarting:t.collectionStarting},registry:e}),r=function(t){n||_C(!1);var r=n.critical.draggable;"ADDITION"===t.type&&GS(e,r,t.value)&&i.add(t.value),"REMOVAL"===t.type&&GS(e,r,t.value)&&i.remove(t.value)},o={updateDroppableIsEnabled:function(i,r){e.droppable.exists(i)||_C(!1),n&&t.updateDroppableIsEnabled({id:i,isEnabled:r})},updateDroppableIsCombineEnabled:function(i,r){n&&(e.droppable.exists(i)||_C(!1),t.updateDroppableIsCombineEnabled({id:i,isCombineEnabled:r}))},scrollDroppable:function(t,i){n&&e.droppable.getById(t).callbacks.scroll(i)},updateDroppableScroll:function(i,r){n&&(e.droppable.exists(i)||_C(!1),t.updateDroppableScroll({id:i,newScroll:r}))},startPublishing:function(t){n&&_C(!1);var i=e.draggable.getById(t.draggableId),o=e.droppable.getById(i.descriptor.droppableId),a={draggable:i.descriptor,droppable:o.descriptor},s=e.subscribe(r);return n={critical:a,unsubscribe:s},qS({critical:a,registry:e,scrollOptions:t.scrollOptions})},stopPublishing:function(){if(n){i.stop();var t=n.critical.droppable;e.droppable.getAllByType(t.type).forEach((function(e){return e.callbacks.dragStopped()})),n.unsubscribe(),n=null}}};return o},QS=function(e,t){return"IDLE"===e.phase||"DROP_ANIMATING"===e.phase&&(e.completed.result.draggableId!==t&&"DROP"===e.completed.result.reason)},XS=function(e){window.scrollBy(e.x,e.y)},JS=iC((function(e){return YC(e).filter((function(e){return!!e.isEnabled&&!!e.frame}))})),ex=function(e){var t=e.center,n=e.destination,i=e.droppables;if(n){var r=i[n];return r.frame?r:null}var o=function(e,t){var n=BC(JS(t),(function(t){return t.frame||_C(!1),Fk(t.frame.pageMarginBox)(e)}));return n}(t,i);return o},tx=.25,nx=.05,ix=28,rx=function(e){return Math.pow(e,2)},ox={stopDampeningAt:1200,accelerateAt:360},ax=function(e){var t=e.startOfRange,n=e.endOfRange,i=e.current,r=n-t;return 0===r?0:(i-t)/r},sx=ox.accelerateAt,ux=ox.stopDampeningAt,lx=function(e){var t=e.distanceToEdge,n=e.thresholds,i=e.dragStartTime,r=e.shouldUseTimeDampening,o=function(e,t){if(e>t.startScrollingFrom)return 0;if(e<=t.maxScrollValueAt)return ix;if(e===t.startScrollingFrom)return 1;var n=ax({startOfRange:t.maxScrollValueAt,endOfRange:t.startScrollingFrom,current:e}),i=ix*rx(1-n);return Math.ceil(i)}(t,n);return 0===o?0:r?Math.max(function(e,t){var n=t,i=ux,r=Date.now()-n;if(r>=ux)return e;if(r<sx)return 1;var o=ax({startOfRange:sx,endOfRange:i,current:r}),a=e*rx(o);return Math.ceil(a)}(o,i),1):o},cx=function(e){var t=e.container,n=e.distanceToEdges,i=e.dragStartTime,r=e.axis,o=e.shouldUseTimeDampening,a=function(e,t){return{startScrollingFrom:e[t.size]*tx,maxScrollValueAt:e[t.size]*nx}}(t,r);return n[r.end]<n[r.start]?lx({distanceToEdge:n[r.end],thresholds:a,dragStartTime:i,shouldUseTimeDampening:o}):-1*lx({distanceToEdge:n[r.start],thresholds:a,dragStartTime:i,shouldUseTimeDampening:o})},dx=OC((function(e){return 0===e?0:e})),hx=function(e){var t=e.dragStartTime,n=e.container,i=e.subject,r=e.center,o=e.shouldUseTimeDampening,a={top:r.y-n.top,right:n.right-r.x,bottom:n.bottom-r.y,left:r.x-n.left},s=cx({container:n,distanceToEdges:a,dragStartTime:t,axis:rk,shouldUseTimeDampening:o}),u=cx({container:n,distanceToEdges:a,dragStartTime:t,axis:ok,shouldUseTimeDampening:o}),l=dx({x:u,y:s});if(DC(l,xC))return null;var c=function(e){var t=e.container,n=e.subject,i=e.proposedScroll,r=n.height>t.height,o=n.width>t.width;return o||r?o&&r?null:{x:o?0:i.x,y:r?0:i.y}:i}({container:n,subject:i,proposedScroll:l});return c?DC(c,xC)?null:c:null},fx=OC((function(e){return 0===e?0:e>0?1:-1})),px=function(){var e=function(e,t){return e<0?e:e>t?e-t:0};return function(t){var n=t.current,i=t.max,r=t.change,o=LC(n,r),a={x:e(o.x,i.x),y:e(o.y,i.y)};return DC(a,xC)?null:a}}(),gx=function(e){var t=e.max,n=e.current,i=e.change,r={x:Math.max(n.x,t.x),y:Math.max(n.y,t.y)},o=fx(i),a=px({max:r,current:n,change:o});return!a||(0!==o.x&&0===a.x||0!==o.y&&0===a.y)},vx=function(e,t){return gx({current:e.scroll.current,max:e.scroll.max,change:t})},mx=function(e,t){var n=e.frame;return!!n&&gx({current:n.scroll.current,max:n.scroll.max,change:t})},_x=function(e){var t=e.state,n=e.dragStartTime,i=e.shouldUseTimeDampening,r=e.scrollWindow,o=e.scrollDroppable,a=t.current.page.borderBoxCenter,s=t.dimensions.draggables[t.critical.draggable.id].page.marginBox;if(t.isWindowScrollAllowed){var u=function(e){var t=e.viewport,n=e.subject,i=e.center,r=e.dragStartTime,o=e.shouldUseTimeDampening,a=hx({dragStartTime:r,container:t.frame,subject:n,center:i,shouldUseTimeDampening:o});return a&&vx(t,a)?a:null}({dragStartTime:n,viewport:t.viewport,subject:s,center:a,shouldUseTimeDampening:i});if(u)return void r(u)}var l=ex({center:a,destination:Rk(t.impact),droppables:t.dimensions.droppables});if(l){var c=function(e){var t=e.droppable,n=e.subject,i=e.center,r=e.dragStartTime,o=e.shouldUseTimeDampening,a=t.frame;if(!a)return null;var s=hx({dragStartTime:r,container:a.pageMarginBox,subject:n,center:i,shouldUseTimeDampening:o});return s&&mx(t,s)?s:null}({dragStartTime:n,droppable:l,subject:s,center:a,shouldUseTimeDampening:i});c&&o(l.descriptor.id,c)}},yx=function(e){var t=e.move,n=e.scrollDroppable,i=e.scrollWindow,r=function(e,t){if(!mx(e,t))return t;var i=function(e,t){var n=e.frame;return n&&mx(e,t)?px({current:n.scroll.current,max:n.scroll.max,change:t}):null}(e,t);if(!i)return n(e.descriptor.id,t),null;var r=EC(t,i);return n(e.descriptor.id,r),EC(t,r)},o=function(e,t,n){if(!e)return n;if(!vx(t,n))return n;var r=function(e,t){if(!vx(e,t))return null;var n=e.scroll.max,i=e.scroll.current;return px({current:i,max:n,change:t})}(t,n);if(!r)return i(n),null;var o=EC(n,r);return i(o),EC(n,o)};return function(e){var n=e.scrollJumpRequest;if(n){var i=Rk(e.impact);i||_C(!1);var a=r(e.dimensions.droppables[i],n);if(a){var s=e.viewport,u=o(e.isWindowScrollAllowed,s,a);u&&function(e,n){var i=LC(e.current.client.selection,n);t({client:i})}(e,u)}}}},bx=function(e){var t=e.scrollDroppable,n=e.scrollWindow,i=e.move,r=function(e){var t=e.scrollWindow,n=e.scrollDroppable,i=rC(t),r=rC(n),o=null,a=function(e){o||_C(!1);var t=o,n=t.shouldUseTimeDampening,a=t.dragStartTime;_x({state:e,scrollWindow:i,scrollDroppable:r,dragStartTime:a,shouldUseTimeDampening:n})};return{start:function(e){$k(),o&&_C(!1);var t=Date.now(),n=!1,i=function(){n=!0};_x({state:e,dragStartTime:0,shouldUseTimeDampening:!1,scrollWindow:i,scrollDroppable:i}),o={dragStartTime:t,shouldUseTimeDampening:n},Qk(),n&&a(e)},stop:function(){o&&(i.cancel(),r.cancel(),o=null)},scroll:a}}({scrollWindow:n,scrollDroppable:t}),o=yx({move:i,scrollWindow:n,scrollDroppable:t});return{scroll:function(e){"DRAGGING"===e.phase&&("FLUID"!==e.movementMode?e.scrollJumpRequest&&o(e):r.scroll(e))},start:r.start,stop:r.stop}},wx="data-rbd",Cx=function(){var e=wx+"-drag-handle";return{base:e,draggableId:e+"-draggable-id",contextId:e+"-context-id"}}(),kx=function(){var e=wx+"-draggable";return{base:e,contextId:e+"-context-id",id:e+"-id"}}(),Sx=function(){var e=wx+"-droppable";return{base:e,contextId:e+"-context-id",id:e+"-id"}}(),xx={contextId:wx+"-scroll-container-context-id"},Lx=function(e,t){return e.map((function(e){var n=e.styles[t];return n?e.selector+" { "+n+" }":""})).join(" ")},Ex=function(e){var t=function(e){return function(t){return"["+t+'="'+e+'"]'}}(e),n=function(){var e="\n cursor: -webkit-grab;\n cursor: grab;\n ";return{selector:t(Cx.contextId),styles:{always:"\n -webkit-touch-callout: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n touch-action: manipulation;\n ",resting:e,dragging:"pointer-events: none;",dropAnimating:e}}}(),i=[function(){var e="\n transition: "+SS.outOfTheWay+";\n ";return{selector:t(kx.contextId),styles:{dragging:e,dropAnimating:e,userCancel:e}}}(),n,{selector:t(Sx.contextId),styles:{always:"overflow-anchor: none;"}},{selector:"body",styles:{dragging:"\n cursor: grabbing;\n cursor: -webkit-grabbing;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n overflow-anchor: none;\n "}}];return{always:Lx(i,"always"),resting:Lx(i,"resting"),dragging:Lx(i,"dragging"),dropAnimating:Lx(i,"dropAnimating"),userCancel:Lx(i,"userCancel")}},Dx="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement?e.useLayoutEffect:e.useEffect,Nx=function(){var e=document.querySelector("head");return e||_C(!1),e},Mx=function(e){var t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.type="text/css",t};var Tx=function(e){return e&&e.ownerDocument?e.ownerDocument.defaultView:window};function Ix(e){return e instanceof Tx(e).HTMLElement}function Ox(e,t){var n="["+Cx.contextId+'="'+e+'"]',i=zC(document.querySelectorAll(n));if(!i.length)return null;var r=BC(i,(function(e){return e.getAttribute(Cx.draggableId)===t}));return r&&Ix(r)?r:null}function Ax(){var e={draggables:{},droppables:{}},t=[];function n(e){t.length&&t.forEach((function(t){return t(e)}))}function i(t){return e.draggables[t]||null}function r(t){return e.droppables[t]||null}return{draggable:{register:function(t){e.draggables[t.descriptor.id]=t,n({type:"ADDITION",value:t})},update:function(t,n){var i=e.draggables[n.descriptor.id];i&&i.uniqueId===t.uniqueId&&(delete e.draggables[n.descriptor.id],e.draggables[t.descriptor.id]=t)},unregister:function(t){var r=t.descriptor.id,o=i(r);o&&t.uniqueId===o.uniqueId&&(delete e.draggables[r],n({type:"REMOVAL",value:t}))},getById:function(e){var t=i(e);return t||_C(!1),t},findById:i,exists:function(e){return Boolean(i(e))},getAllByType:function(t){return jC(e.draggables).filter((function(e){return e.descriptor.type===t}))}},droppable:{register:function(t){e.droppables[t.descriptor.id]=t},unregister:function(t){var n=r(t.descriptor.id);n&&t.uniqueId===n.uniqueId&&delete e.droppables[t.descriptor.id]},getById:function(e){var t=r(e);return t||_C(!1),t},findById:r,exists:function(e){return Boolean(r(e))},getAllByType:function(t){return jC(e.droppables).filter((function(e){return e.descriptor.type===t}))}},subscribe:function(e){return t.push(e),function(){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}},clean:function(){e.draggables={},e.droppables={},t.length=0}}}var Rx=e.createContext(null),Px=function(){var e=document.body;return e||_C(!1),e},Zx={position:"absolute",width:"1px",height:"1px",margin:"-1px",border:"0",padding:"0",overflow:"hidden",clip:"rect(0 0 0 0)","clip-path":"inset(100%)"},Fx=function(e){return"rbd-announcement-"+e};var jx=0,Hx={separator:"::"};function Bx(e,t){return void 0===t&&(t=Hx),Ww((function(){return""+e+t.separator+jx++}),[t.separator,e])}var zx=e.createContext(null);function Wx(e){0}function Vx(e,t){Wx()}function Yx(t){var n=(0,e.useRef)(t);return(0,e.useEffect)((function(){n.current=t})),n}var Ux,Kx=27,qx=32,Gx=37,$x=38,Qx=39,Xx=40,Jx=((Ux={})[13]=!0,Ux[9]=!0,Ux),eL=function(e){Jx[e.keyCode]&&e.preventDefault()},tL=function(){var e="visibilitychange";return"undefined"===typeof document?e:BC([e,"ms"+e,"webkit"+e,"moz"+e,"o"+e],(function(e){return"on"+e in document}))||e}(),nL=0,iL=5;var rL,oL={type:"IDLE"};function aL(e){var t=e.cancel,n=e.completed,i=e.getPhase,r=e.setPhase;return[{eventName:"mousemove",fn:function(e){var t=e.button,n=e.clientX,o=e.clientY;if(t===nL){var a={x:n,y:o},s=i();if("DRAGGING"===s.type)return e.preventDefault(),void s.actions.move(a);"PENDING"!==s.type&&_C(!1);var u=s.point;if(l=u,c=a,Math.abs(c.x-l.x)>=iL||Math.abs(c.y-l.y)>=iL){var l,c;e.preventDefault();var d=s.actions.fluidLift(a);r({type:"DRAGGING",actions:d})}}}},{eventName:"mouseup",fn:function(e){var r=i();"DRAGGING"===r.type?(e.preventDefault(),r.actions.drop({shouldBlockNextClick:!0}),n()):t()}},{eventName:"mousedown",fn:function(e){"DRAGGING"===i().type&&e.preventDefault(),t()}},{eventName:"keydown",fn:function(e){if("PENDING"!==i().type)return e.keyCode===Kx?(e.preventDefault(),void t()):void eL(e);t()}},{eventName:"resize",fn:t},{eventName:"scroll",options:{passive:!0,capture:!1},fn:function(){"PENDING"===i().type&&t()}},{eventName:"webkitmouseforcedown",fn:function(e){var n=i();"IDLE"===n.type&&_C(!1),n.actions.shouldRespectForcePress()?t():e.preventDefault()}},{eventName:tL,fn:t}]}function sL(){}var uL=((rL={})[34]=!0,rL[33]=!0,rL[36]=!0,rL[35]=!0,rL);function lL(e,t){function n(){t(),e.cancel()}return[{eventName:"keydown",fn:function(i){return i.keyCode===Kx?(i.preventDefault(),void n()):i.keyCode===qx?(i.preventDefault(),t(),void e.drop()):i.keyCode===Xx?(i.preventDefault(),void e.moveDown()):i.keyCode===$x?(i.preventDefault(),void e.moveUp()):i.keyCode===Qx?(i.preventDefault(),void e.moveRight()):i.keyCode===Gx?(i.preventDefault(),void e.moveLeft()):void(uL[i.keyCode]?i.preventDefault():eL(i))}},{eventName:"mousedown",fn:n},{eventName:"mouseup",fn:n},{eventName:"click",fn:n},{eventName:"touchstart",fn:n},{eventName:"resize",fn:n},{eventName:"wheel",fn:n,options:{passive:!0}},{eventName:tL,fn:n}]}var cL={type:"IDLE"},dL=120,hL=.15;var fL={input:!0,button:!0,textarea:!0,select:!0,option:!0,optgroup:!0,video:!0,audio:!0};function pL(e,t){if(null==t)return!1;if(Boolean(fL[t.tagName.toLowerCase()]))return!0;var n=t.getAttribute("contenteditable");return"true"===n||""===n||t!==e&&pL(e,t.parentElement)}function gL(e,t){var n=t.target;return!!Ix(n)&&pL(e,n)}var vL=function(e){return Yw(e.getBoundingClientRect()).center};var mL=function(){var e="matches";return"undefined"===typeof document?e:BC([e,"msMatchesSelector","webkitMatchesSelector"],(function(e){return e in Element.prototype}))||e}();function _L(e,t){return null==e?null:e[mL](t)?e:_L(e.parentElement,t)}function yL(e,t){return e.closest?e.closest(t):_L(e,t)}function bL(e,t){var n,i=t.target;if(!((n=i)instanceof Tx(n).Element))return null;var r=function(e){return"["+Cx.contextId+'="'+e+'"]'}(e),o=yL(i,r);return o&&Ix(o)?o:null}function wL(e){e.preventDefault()}function CL(e){var t=e.expected,n=e.phase,i=e.isLockActive;e.shouldWarn;return!!i()&&t===n}function kL(e){var t=e.lockAPI,n=e.store,i=e.registry,r=e.draggableId;if(t.isClaimed())return!1;var o=i.draggable.findById(r);return!!o&&(!!o.options.isEnabled&&!!QS(n.getState(),r))}function SL(e){var t=e.lockAPI,n=e.contextId,i=e.store,r=e.registry,o=e.draggableId,a=e.forceSensorStop,s=e.sourceEvent;if(!kL({lockAPI:t,store:i,registry:r,draggableId:o}))return null;var u=r.draggable.getById(o),l=function(e,t){var n="["+kx.contextId+'="'+e+'"]',i=BC(zC(document.querySelectorAll(n)),(function(e){return e.getAttribute(kx.id)===t}));return i&&Ix(i)?i:null}(n,u.descriptor.id);if(!l)return null;if(s&&!u.options.canDragInteractiveElements&&gL(l,s))return null;var d=t.claim(a||fC),h="PRE_DRAG";function f(){return u.options.shouldRespectForcePress}function p(){return t.isActive(d)}var g=function(e,t){CL({expected:e,phase:h,isLockActive:p,shouldWarn:!0})&&i.dispatch(t())}.bind(null,"DRAGGING");function v(e){function n(){t.release(),h="COMPLETED"}function r(t,r){if(void 0===r&&(r={shouldBlockNextClick:!1}),e.cleanup(),r.shouldBlockNextClick){var o=pC(window,[{eventName:"click",fn:wL,options:{once:!0,passive:!1,capture:!0}}]);setTimeout(o)}n(),i.dispatch(mS({reason:t}))}return"PRE_DRAG"!==h&&(n(),"PRE_DRAG"!==h&&_C(!1)),i.dispatch(rS(e.liftActionArgs)),h="DRAGGING",c({isActive:function(){return CL({expected:"DRAGGING",phase:h,isLockActive:p,shouldWarn:!1})},shouldRespectForcePress:f,drop:function(e){return r("DROP",e)},cancel:function(e){return r("CANCEL",e)}},e.actions)}return{isActive:function(){return CL({expected:"PRE_DRAG",phase:h,isLockActive:p,shouldWarn:!1})},shouldRespectForcePress:f,fluidLift:function(e){var t=rC((function(e){g((function(){return cS({client:e})}))}));return c({},v({liftActionArgs:{id:o,clientSelection:e,movementMode:"FLUID"},cleanup:function(){return t.cancel()},actions:{move:t}}),{move:t})},snapLift:function(){var e={moveUp:function(){return g(dS)},moveRight:function(){return g(fS)},moveDown:function(){return g(hS)},moveLeft:function(){return g(pS)}};return v({liftActionArgs:{id:o,clientSelection:vL(l),movementMode:"SNAP"},cleanup:fC,actions:e})},abort:function(){CL({expected:"PRE_DRAG",phase:h,isLockActive:p,shouldWarn:!0})&&t.release()}}}var xL=[function(t){var n=(0,e.useRef)(oL),i=(0,e.useRef)(fC),r=Ww((function(){return{eventName:"mousedown",fn:function(e){if(!e.defaultPrevented&&e.button===nL&&!(e.ctrlKey||e.metaKey||e.shiftKey||e.altKey)){var n=t.findClosestDraggableId(e);if(n){var r=t.tryGetLock(n,s,{sourceEvent:e});if(r){e.preventDefault();var o={x:e.clientX,y:e.clientY};i.current(),c(r,o)}}}}}}),[t]),o=Ww((function(){return{eventName:"webkitmouseforcewillbegin",fn:function(e){if(!e.defaultPrevented){var n=t.findClosestDraggableId(e);if(n){var i=t.findOptionsForDraggable(n);i&&(i.shouldRespectForcePress||t.canGetLock(n)&&e.preventDefault())}}}}}),[t]),a=Vw((function(){i.current=pC(window,[o,r],{passive:!1,capture:!0})}),[o,r]),s=Vw((function(){"IDLE"!==n.current.type&&(n.current=oL,i.current(),a())}),[a]),u=Vw((function(){var e=n.current;s(),"DRAGGING"===e.type&&e.actions.cancel({shouldBlockNextClick:!0}),"PENDING"===e.type&&e.actions.abort()}),[s]),l=Vw((function(){var e=aL({cancel:u,completed:s,getPhase:function(){return n.current},setPhase:function(e){n.current=e}});i.current=pC(window,e,{capture:!0,passive:!1})}),[u,s]),c=Vw((function(e,t){"IDLE"!==n.current.type&&_C(!1),n.current={type:"PENDING",point:t,actions:e},l()}),[l]);Dx((function(){return a(),function(){i.current()}}),[a])},function(t){var n=(0,e.useRef)(sL),i=Ww((function(){return{eventName:"keydown",fn:function(e){if(!e.defaultPrevented&&e.keyCode===qx){var i=t.findClosestDraggableId(e);if(i){var o=t.tryGetLock(i,u,{sourceEvent:e});if(o){e.preventDefault();var a=!0,s=o.snapLift();n.current(),n.current=pC(window,lL(s,u),{capture:!0,passive:!1})}}}function u(){a||_C(!1),a=!1,n.current(),r()}}}}),[t]),r=Vw((function(){n.current=pC(window,[i],{passive:!1,capture:!0})}),[i]);Dx((function(){return r(),function(){n.current()}}),[r])},function(t){var n=(0,e.useRef)(cL),i=(0,e.useRef)(fC),r=Vw((function(){return n.current}),[]),o=Vw((function(e){n.current=e}),[]),a=Ww((function(){return{eventName:"touchstart",fn:function(e){if(!e.defaultPrevented){var n=t.findClosestDraggableId(e);if(n){var r=t.tryGetLock(n,u,{sourceEvent:e});if(r){var o=e.touches[0],a={x:o.clientX,y:o.clientY};i.current(),h(r,a)}}}}}}),[t]),s=Vw((function(){i.current=pC(window,[a],{capture:!0,passive:!1})}),[a]),u=Vw((function(){var e=n.current;"IDLE"!==e.type&&("PENDING"===e.type&&clearTimeout(e.longPressTimerId),o(cL),i.current(),s())}),[s,o]),l=Vw((function(){var e=n.current;u(),"DRAGGING"===e.type&&e.actions.cancel({shouldBlockNextClick:!0}),"PENDING"===e.type&&e.actions.abort()}),[u]),c=Vw((function(){var e={capture:!0,passive:!1},t={cancel:l,completed:u,getPhase:r},n=pC(window,function(e){var t=e.cancel,n=e.completed,i=e.getPhase;return[{eventName:"touchmove",options:{capture:!1},fn:function(e){var n=i();if("DRAGGING"===n.type){n.hasMoved=!0;var r=e.touches[0],o={x:r.clientX,y:r.clientY};e.preventDefault(),n.actions.move(o)}else t()}},{eventName:"touchend",fn:function(e){var r=i();"DRAGGING"===r.type?(e.preventDefault(),r.actions.drop({shouldBlockNextClick:!0}),n()):t()}},{eventName:"touchcancel",fn:function(e){"DRAGGING"===i().type?(e.preventDefault(),t()):t()}},{eventName:"touchforcechange",fn:function(e){var n=i();"IDLE"===n.type&&_C(!1);var r=e.touches[0];if(r&&r.force>=hL){var o=n.actions.shouldRespectForcePress();if("PENDING"!==n.type)return o?n.hasMoved?void e.preventDefault():void t():void e.preventDefault();o&&t()}}},{eventName:tL,fn:t}]}(t),e),o=pC(window,function(e){var t=e.cancel,n=e.getPhase;return[{eventName:"orientationchange",fn:t},{eventName:"resize",fn:t},{eventName:"contextmenu",fn:function(e){e.preventDefault()}},{eventName:"keydown",fn:function(e){"DRAGGING"===n().type?(e.keyCode===Kx&&e.preventDefault(),t()):t()}},{eventName:tL,fn:t}]}(t),e);i.current=function(){n(),o()}}),[l,r,u]),d=Vw((function(){var e=r();"PENDING"!==e.type&&_C(!1);var t=e.actions.fluidLift(e.point);o({type:"DRAGGING",actions:t,hasMoved:!1})}),[r,o]),h=Vw((function(e,t){"IDLE"!==r().type&&_C(!1);var n=setTimeout(d,dL);o({type:"PENDING",point:t,actions:e,longPressTimerId:n}),c()}),[c,r,o,d]);Dx((function(){return s(),function(){i.current();var e=r();"PENDING"===e.type&&(clearTimeout(e.longPressTimerId),o(cL))}}),[r,s,o]),Dx((function(){return pC(window,[{eventName:"touchmove",fn:function(){},options:{capture:!1,passive:!1}}])}),[])}];function LL(t){var n=t.contextId,i=t.store,r=t.registry,o=t.customSensors,a=t.enableDefaultSensors,s=[].concat(a?xL:[],o||[]),u=(0,e.useState)((function(){return function(){var e=null;function t(){e||_C(!1),e=null}return{isClaimed:function(){return Boolean(e)},isActive:function(t){return t===e},claim:function(t){e&&_C(!1);var n={abandon:t};return e=n,n},release:t,tryAbandon:function(){e&&(e.abandon(),t())}}}()}))[0],l=Vw((function(e,t){e.isDragging&&!t.isDragging&&u.tryAbandon()}),[u]);Dx((function(){var e=i.getState();return i.subscribe((function(){var t=i.getState();l(e,t),e=t}))}),[u,i,l]),Dx((function(){return u.tryAbandon}),[u.tryAbandon]);var c=Vw((function(e){return kL({lockAPI:u,registry:r,store:i,draggableId:e})}),[u,r,i]),d=Vw((function(e,t,o){return SL({lockAPI:u,registry:r,contextId:n,store:i,draggableId:e,forceSensorStop:t,sourceEvent:o&&o.sourceEvent?o.sourceEvent:null})}),[n,u,r,i]),h=Vw((function(e){return function(e,t){var n=bL(e,t);return n?n.getAttribute(Cx.draggableId):null}(n,e)}),[n]),f=Vw((function(e){var t=r.draggable.findById(e);return t?t.options:null}),[r.draggable]),p=Vw((function(){u.isClaimed()&&(u.tryAbandon(),"IDLE"!==i.getState().phase&&i.dispatch(gS()))}),[u,i]),g=Vw(u.isClaimed,[u]),v=Ww((function(){return{canGetLock:c,tryGetLock:d,findClosestDraggableId:h,findOptionsForDraggable:f,tryReleaseLock:p,isLockClaimed:g}}),[c,d,h,f,p,g]);Wx();for(var m=0;m<s.length;m++)s[m](v)}var EL=function(e){return{onBeforeCapture:e.onBeforeCapture,onBeforeDragStart:e.onBeforeDragStart,onDragStart:e.onDragStart,onDragEnd:e.onDragEnd,onDragUpdate:e.onDragUpdate}};function DL(e){return e.current||_C(!1),e.current}function NL(t){var n=t.contextId,i=t.setCallbacks,r=t.sensors,o=t.nonce,a=t.dragHandleUsageInstructions,s=(0,e.useRef)(null);Vx();var u=Yx(t),d=Vw((function(){return EL(u.current)}),[u]),h=function(t){var n=Ww((function(){return Fx(t)}),[t]),i=(0,e.useRef)(null);return(0,e.useEffect)((function(){var e=document.createElement("div");return i.current=e,e.id=n,e.setAttribute("aria-live","assertive"),e.setAttribute("aria-atomic","true"),c(e.style,Zx),Px().appendChild(e),function(){setTimeout((function(){var t=Px();t.contains(e)&&t.removeChild(e),e===i.current&&(i.current=null)}))}}),[n]),Vw((function(e){var t=i.current;t&&(t.textContent=e)}),[])}(n),f=function(t){var n=t.contextId,i=t.text,r=Bx("hidden-text",{separator:"-"}),o=Ww((function(){return"rbd-hidden-text-"+(e={contextId:n,uniqueId:r}).contextId+"-"+e.uniqueId;var e}),[r,n]);return(0,e.useEffect)((function(){var e=document.createElement("div");return e.id=o,e.textContent=i,e.style.display="none",Px().appendChild(e),function(){var t=Px();t.contains(e)&&t.removeChild(e)}}),[o,i]),o}({contextId:n,text:a}),p=function(t,n){var i=Ww((function(){return Ex(t)}),[t]),r=(0,e.useRef)(null),o=(0,e.useRef)(null),a=Vw(iC((function(e){var t=o.current;t||_C(!1),t.textContent=e})),[]),s=Vw((function(e){var t=r.current;t||_C(!1),t.textContent=e}),[]);Dx((function(){(r.current||o.current)&&_C(!1);var e=Mx(n),u=Mx(n);return r.current=e,o.current=u,e.setAttribute(wx+"-always",t),u.setAttribute(wx+"-dynamic",t),Nx().appendChild(e),Nx().appendChild(u),s(i.always),a(i.resting),function(){var e=function(e){var t=e.current;t||_C(!1),Nx().removeChild(t),e.current=null};e(r),e(o)}}),[n,s,a,i.always,i.resting,t]);var u=Vw((function(){return a(i.dragging)}),[a,i.dragging]),l=Vw((function(e){a("DROP"!==e?i.userCancel:i.dropAnimating)}),[a,i.dropAnimating,i.userCancel]),c=Vw((function(){o.current&&a(i.resting)}),[a,i.resting]);return Ww((function(){return{dragging:u,dropping:l,resting:c}}),[u,l,c])}(n,o),g=Vw((function(e){DL(s).dispatch(e)}),[]),v=Ww((function(){return Hw({publishWhileDragging:oS,updateDroppableScroll:sS,updateDroppableIsEnabled:uS,updateDroppableIsCombineEnabled:lS,collectionStarting:aS},g)}),[g]),m=function(){var t=Ww(Ax,[]);return(0,e.useEffect)((function(){return function(){requestAnimationFrame(t.clean)}}),[t]),t}(),_=Ww((function(){return $S(m,v)}),[m,v]),y=Ww((function(){return bx(c({scrollWindow:XS,scrollDroppable:_.scrollDroppable},Hw({move:cS},g)))}),[_.scrollDroppable,g]),b=function(t){var n=(0,e.useRef)({}),i=(0,e.useRef)(null),r=(0,e.useRef)(null),o=(0,e.useRef)(!1),a=Vw((function(e,t){var i={id:e,focus:t};return n.current[e]=i,function(){var t=n.current;t[e]!==i&&delete t[e]}}),[]),s=Vw((function(e){var n=Ox(t,e);n&&n!==document.activeElement&&n.focus()}),[t]),u=Vw((function(e,t){i.current===e&&(i.current=t)}),[]),l=Vw((function(){r.current||o.current&&(r.current=requestAnimationFrame((function(){r.current=null;var e=i.current;e&&s(e)})))}),[s]),c=Vw((function(e){i.current=null;var t=document.activeElement;t&&t.getAttribute(Cx.draggableId)===e&&(i.current=e)}),[]);return Dx((function(){return o.current=!0,function(){o.current=!1;var e=r.current;e&&cancelAnimationFrame(e)}}),[]),Ww((function(){return{register:a,tryRecordFocus:c,tryRestoreFocusRecorded:l,tryShiftRecord:u}}),[a,c,l,u])}(n),w=Ww((function(){return WS({announce:h,autoScroller:y,dimensionMarshal:_,focusMarshal:b,getResponders:d,styleMarshal:p})}),[h,y,_,b,d,p]);s.current=w;var C=Vw((function(){var e=DL(s);"IDLE"!==e.getState().phase&&e.dispatch(gS())}),[]),k=Vw((function(){var e=DL(s).getState();return e.isDragging||"DROP_ANIMATING"===e.phase}),[]);i(Ww((function(){return{isDragging:k,tryAbort:C}}),[k,C]));var S=Vw((function(e){return QS(DL(s).getState(),e)}),[]),x=Vw((function(){return Zk(DL(s).getState())}),[]),L=Ww((function(){return{marshal:_,focus:b,contextId:n,canLift:S,isMovementAllowed:x,dragHandleUsageInstructionsId:f,registry:m}}),[n,_,f,b,S,x,m]);return LL({contextId:n,store:w,registry:m,customSensors:r,enableDefaultSensors:!1!==t.enableDefaultSensors}),(0,e.useEffect)((function(){return C}),[C]),e.createElement(zx.Provider,{value:L},e.createElement(l,{context:Rx,store:w},t.children))}var ML=0;function TL(t){var n=Ww((function(){return""+ML++}),[]),i=t.dragHandleUsageInstructions||SC.dragHandleUsageInstructions;return e.createElement(yC,null,(function(r){return e.createElement(NL,{nonce:t.nonce,contextId:n,setCallbacks:r,dragHandleUsageInstructions:i,enableDefaultSensors:t.enableDefaultSensors,sensors:t.sensors,onBeforeCapture:t.onBeforeCapture,onBeforeDragStart:t.onBeforeDragStart,onDragStart:t.onDragStart,onDragUpdate:t.onDragUpdate,onDragEnd:t.onDragEnd},t.children)}))}var IL=function(e){return function(t){return e===t}},OL=IL("scroll"),AL=IL("auto"),RL=(IL("visible"),function(e,t){return t(e.overflowX)||t(e.overflowY)}),PL=function(e){var t=window.getComputedStyle(e),n={overflowX:t.overflowX,overflowY:t.overflowY};return RL(n,OL)||RL(n,AL)},ZL=function e(t){return null==t||t===document.body||t===document.documentElement?null:PL(t)?t:e(t.parentElement)},FL=function(e){return{x:e.scrollLeft,y:e.scrollTop}},jL=function e(t){return!!t&&("fixed"===window.getComputedStyle(t).position||e(t.parentElement))},HL=function(e){return{closestScrollable:ZL(e),isFixedOnPage:jL(e)}},BL=function(e){var t=e.ref,n=e.descriptor,i=e.env,r=e.windowScroll,o=e.direction,a=e.isDropDisabled,s=e.isCombineEnabled,u=e.shouldClipSubject,l=i.closestScrollable,c=function(e,t){var n=eC(e);if(!t)return n;if(e!==t)return n;var i=n.paddingBox.top-t.scrollTop,r=n.paddingBox.left-t.scrollLeft,o=i+t.scrollHeight,a=r+t.scrollWidth,s=Uw({top:i,right:a,bottom:o,left:r},n.border);return Gw({borderBox:s,margin:n.margin,border:n.border,padding:n.padding})}(t,l),d=Xw(c,r),h=function(){if(!l)return null;var e=eC(l),t={scrollHeight:l.scrollHeight,scrollWidth:l.scrollWidth};return{client:e,page:Xw(e,r),scroll:FL(l),scrollSize:t,shouldClipSubject:u}}(),f=function(e){var t=e.descriptor,n=e.isEnabled,i=e.isCombineEnabled,r=e.isFixedOnPage,o=e.direction,a=e.client,s=e.page,u=e.closest,l=function(){if(!u)return null;var e=u.scrollSize,t=u.client,n=YS({scrollHeight:e.scrollHeight,scrollWidth:e.scrollWidth,height:t.paddingBox.height,width:t.paddingBox.width});return{pageMarginBox:u.page.marginBox,frameClient:t,scrollSize:e,shouldClipSubject:u.shouldClipSubject,scroll:{initial:u.scroll,current:u.scroll,max:n,diff:{value:xC,displacement:xC}}}}(),c="vertical"===o?rk:ok;return{descriptor:t,isCombineEnabled:i,isFixedOnPage:r,axis:c,isEnabled:n,client:a,page:s,frame:l,subject:ZC({page:s,withPlaceholder:null,axis:c,frame:l})}}({descriptor:n,isEnabled:!a,isCombineEnabled:s,isFixedOnPage:i.isFixedOnPage,direction:o,client:c,page:d,closest:h});return f},zL={passive:!1},WL={passive:!0},VL=function(e){return e.shouldPublishImmediately?zL:WL};function YL(t){var n=(0,e.useContext)(t);return n||_C(!1),n}var UL=function(e){return e&&e.env.closestScrollable||null};function KL(){}var qL={width:0,height:0,margin:{top:0,right:0,bottom:0,left:0}},GL=function(e){var t=e.isAnimatingOpenOnMount,n=e.placeholder,i=e.animate,r=function(e){var t=e.isAnimatingOpenOnMount,n=e.placeholder,i=e.animate;return t||"close"===i?qL:{height:n.client.borderBox.height,width:n.client.borderBox.width,margin:n.client.margin}}({isAnimatingOpenOnMount:t,placeholder:n,animate:i});return{display:n.display,boxSizing:"border-box",width:r.width,height:r.height,marginTop:r.margin.top,marginRight:r.margin.right,marginBottom:r.margin.bottom,marginLeft:r.margin.left,flexShrink:"0",flexGrow:"0",pointerEvents:"none",transition:"none"!==i?SS.placeholder:null}};var $L=e.memo((function(t){var n=(0,e.useRef)(null),i=Vw((function(){n.current&&(clearTimeout(n.current),n.current=null)}),[]),r=t.animate,o=t.onTransitionEnd,a=t.onClose,s=t.contextId,u=(0,e.useState)("open"===t.animate),l=u[0],c=u[1];(0,e.useEffect)((function(){return l?"open"!==r?(i(),c(!1),KL):n.current?KL:(n.current=setTimeout((function(){n.current=null,c(!1)})),i):KL}),[r,l,i]);var d=Vw((function(e){"height"===e.propertyName&&(o(),"close"===r&&a())}),[r,a,o]),h=GL({isAnimatingOpenOnMount:l,animate:t.animate,placeholder:t.placeholder});return e.createElement(t.placeholder.tagName,{style:h,"data-rbd-placeholder-context-id":s,onTransitionEnd:d,ref:t.innerRef})})),QL=e.createContext(null);var XL=function(e){function t(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];return(t=e.call.apply(e,[this].concat(i))||this).state={isVisible:Boolean(t.props.on),data:t.props.on,animate:t.props.shouldAnimate&&t.props.on?"open":"none"},t.onClose=function(){"close"===t.state.animate&&t.setState({isVisible:!1})},t}return re(t,e),t.getDerivedStateFromProps=function(e,t){return e.shouldAnimate?e.on?{isVisible:!0,data:e.on,animate:"open"}:t.isVisible?{isVisible:!0,data:t.data,animate:"close"}:{isVisible:!1,animate:"close",data:null}:{isVisible:Boolean(e.on),data:e.on,animate:"none"}},t.prototype.render=function(){if(!this.state.isVisible)return null;var e={onClose:this.onClose,data:this.state.data,animate:this.state.animate};return this.props.children(e)},t}(e.PureComponent),JL={dragging:5e3,dropAnimating:4500},eE=function(e,t){return t?SS.drop(t.duration):e?SS.snap:SS.fluid},tE=function(e,t){return e?t?bS.opacity.drop:bS.opacity.combining:null},nE=function(e){return null!=e.forceShouldAnimate?e.forceShouldAnimate:"SNAP"===e.mode};function iE(e){return"DRAGGING"===e.type?function(e){var t=e.dimension.client,n=e.offset,i=e.combineWith,r=e.dropping,o=Boolean(i),a=nE(e),s=Boolean(r),u=s?LS.drop(n,o):LS.moveTo(n);return{position:"fixed",top:t.marginBox.top,left:t.marginBox.left,boxSizing:"border-box",width:t.borderBox.width,height:t.borderBox.height,transition:eE(a,r),transform:u,opacity:tE(o,s),zIndex:s?JL.dropAnimating:JL.dragging,pointerEvents:"none"}}(e):(t=e,{transform:LS.moveTo(t.offset),transition:t.shouldAnimateDisplacement?null:"none"});var t}function rE(t){var n=Bx("draggable"),i=t.descriptor,r=t.registry,o=t.getDraggableRef,a=t.canDragInteractiveElements,s=t.shouldRespectForcePress,u=t.isEnabled,l=Ww((function(){return{canDragInteractiveElements:a,shouldRespectForcePress:s,isEnabled:u}}),[a,u,s]),c=Vw((function(e){var t=o();return t||_C(!1),function(e,t,n){void 0===n&&(n=xC);var i=window.getComputedStyle(t),r=t.getBoundingClientRect(),o=Jw(r,i),a=Xw(o,n);return{descriptor:e,placeholder:{client:o,tagName:t.tagName.toLowerCase(),display:i.display},displaceBy:{x:o.marginBox.width,y:o.marginBox.height},client:o,page:a}}(i,t,e)}),[i,o]),d=Ww((function(){return{uniqueId:n,descriptor:i,options:l,getDimension:c}}),[i,c,l,n]),h=(0,e.useRef)(d),f=(0,e.useRef)(!0);Dx((function(){return r.draggable.register(h.current),function(){return r.draggable.unregister(h.current)}}),[r.draggable]),Dx((function(){if(f.current)f.current=!1;else{var e=h.current;h.current=d,r.draggable.update(d,e)}}),[d,r.draggable])}function oE(e,t,n){Vx()}function aE(e){e.preventDefault()}var sE=function(e,t){return e===t},uE=function(e){var t=e.combine,n=e.destination;return n?n.droppableId:t?t.droppableId:null},lE=function(e){return e.combine?e.combine.draggableId:null},cE=function(e){return e.at&&"COMBINE"===e.at.type?e.at.combine.draggableId:null};function dE(e){return{isDragging:!1,isDropAnimating:!1,isClone:!1,dropAnimation:null,mode:null,draggingOver:null,combineTargetFor:e,combineWith:null}}var hE={mapped:{type:"SECONDARY",offset:xC,combineTargetFor:null,shouldAnimateDisplacement:!0,snapshot:dE(null)}};var fE=z((function(){var e=function(){var e=iC((function(e,t){return{x:e,y:t}})),t=iC((function(e,t,n,i,r){return{isDragging:!0,isClone:t,isDropAnimating:Boolean(r),dropAnimation:r,mode:e,draggingOver:n,combineWith:i,combineTargetFor:null}})),n=iC((function(e,n,i,r,o,a,s){return{mapped:{type:"DRAGGING",dropping:null,draggingOver:o,combineWith:a,mode:n,offset:e,dimension:i,forceShouldAnimate:s,snapshot:t(n,r,o,a,null)}}}));return function(i,r){if(i.isDragging){if(i.critical.draggable.id!==r.draggableId)return null;var o=i.current.client.offset,a=i.dimensions.draggables[r.draggableId],s=Rk(i.impact),u=cE(i.impact),l=i.forceShouldAnimate;return n(e(o.x,o.y),i.movementMode,a,r.isClone,s,u,l)}if("DROP_ANIMATING"===i.phase){var c=i.completed;if(c.result.draggableId!==r.draggableId)return null;var d=r.isClone,h=i.dimensions.draggables[r.draggableId],f=c.result,p=f.mode,g=uE(f),v=lE(f),m={duration:i.dropDuration,curve:yS.drop,moveTo:i.newHomeClientOffset,opacity:v?bS.opacity.drop:null,scale:v?bS.scale.drop:null};return{mapped:{type:"DRAGGING",offset:i.newHomeClientOffset,dimension:h,dropping:m,draggingOver:g,combineWith:v,mode:p,forceShouldAnimate:null,snapshot:t(p,d,g,v,m)}}}return null}}(),t=function(){var e=iC((function(e,t){return{x:e,y:t}})),t=iC(dE),n=iC((function(e,n,i){return void 0===n&&(n=null),{mapped:{type:"SECONDARY",offset:e,combineTargetFor:n,shouldAnimateDisplacement:i,snapshot:t(n)}}})),i=function(e){return e?n(xC,e,!0):null},r=function(t,r,o,a){var s=o.displaced.visible[t],u=Boolean(a.inVirtualList&&a.effected[t]),l=GC(o),c=l&&l.draggableId===t?r:null;if(!s){if(!u)return i(c);if(o.displaced.invisible[t])return null;var d=NC(a.displacedBy.point),h=e(d.x,d.y);return n(h,c,!0)}if(u)return i(c);var f=o.displacedBy.point,p=e(f.x,f.y);return n(p,c,s.shouldAnimate)};return function(e,t){if(e.isDragging)return e.critical.draggable.id===t.draggableId?null:r(t.draggableId,e.critical.draggable.id,e.impact,e.afterCritical);if("DROP_ANIMATING"===e.phase){var n=e.completed;return n.result.draggableId===t.draggableId?null:r(t.draggableId,n.result.draggableId,n.impact,n.afterCritical)}return null}}();return function(n,i){return e(n,i)||t(n,i)||hE}}),{dropAnimationFinished:_S},null,{context:Rx,pure:!0,areStatePropsEqual:sE})((function(t){var n=(0,e.useRef)(null),i=Vw((function(e){n.current=e}),[]),r=Vw((function(){return n.current}),[]),o=YL(zx),a=o.contextId,s=o.dragHandleUsageInstructionsId,u=o.registry,l=YL(QL),c=l.type,d=l.droppableId,h=Ww((function(){return{id:t.draggableId,index:t.index,type:c,droppableId:d}}),[t.draggableId,t.index,c,d]),f=t.children,p=t.draggableId,g=t.isEnabled,v=t.shouldRespectForcePress,m=t.canDragInteractiveElements,_=t.isClone,y=t.mapped,b=t.dropAnimationFinished;oE(),Wx(),_||rE(Ww((function(){return{descriptor:h,registry:u,getDraggableRef:r,canDragInteractiveElements:m,shouldRespectForcePress:v,isEnabled:g}}),[h,u,r,m,v,g]));var w=Ww((function(){return g?{tabIndex:0,role:"button","aria-describedby":s,"data-rbd-drag-handle-draggable-id":p,"data-rbd-drag-handle-context-id":a,draggable:!1,onDragStart:aE}:null}),[a,s,p,g]),C=Vw((function(e){"DRAGGING"===y.type&&y.dropping&&"transform"===e.propertyName&&b()}),[b,y]),k=Ww((function(){var e=iE(y),t="DRAGGING"===y.type&&y.dropping?C:null;return{innerRef:i,draggableProps:{"data-rbd-draggable-context-id":a,"data-rbd-draggable-id":p,style:e,onTransitionEnd:t},dragHandleProps:w}}),[a,w,p,y,C,i]),S=Ww((function(){return{draggableId:h.id,type:h.type,source:{index:h.index,droppableId:h.droppableId}}}),[h.droppableId,h.id,h.index,h.type]);return f(k,y.snapshot,S)}));function pE(t){return YL(QL).isUsingCloneFor!==t.draggableId||t.isClone?e.createElement(fE,t):null}function gE(t){var n="boolean"!==typeof t.isDragDisabled||!t.isDragDisabled,i=Boolean(t.disableInteractiveElementBlocking),r=Boolean(t.shouldRespectForcePress);return e.createElement(pE,c({},t,{isClone:!1,isEnabled:n,canDragInteractiveElements:i,shouldRespectForcePress:r}))}var vE=function(e,t){return e===t.droppable.type},mE=function(e,t){return t.draggables[e.draggable.id]};var _E={mode:"standard",type:"DEFAULT",direction:"vertical",isDropDisabled:!1,isCombineEnabled:!1,ignoreContainerClipping:!1,renderClone:null,getContainerForClone:function(){return document.body||_C(!1),document.body}},yE=z((function(){var e={placeholder:null,shouldAnimatePlaceholder:!0,snapshot:{isDraggingOver:!1,draggingOverWith:null,draggingFromThisWith:null,isUsingPlaceholder:!1},useClone:null},t=c({},e,{shouldAnimatePlaceholder:!1}),n=iC((function(e){return{draggableId:e.id,type:e.type,source:{index:e.index,droppableId:e.droppableId}}})),i=iC((function(i,r,o,a,s,u){var l=s.descriptor.id;if(s.descriptor.droppableId===i){var c=u?{render:u,dragging:n(s.descriptor)}:null,d={isDraggingOver:o,draggingOverWith:o?l:null,draggingFromThisWith:l,isUsingPlaceholder:!0};return{placeholder:s.placeholder,shouldAnimatePlaceholder:!1,snapshot:d,useClone:c}}if(!r)return t;if(!a)return e;var h={isDraggingOver:o,draggingOverWith:l,draggingFromThisWith:null,isUsingPlaceholder:!0};return{placeholder:s.placeholder,shouldAnimatePlaceholder:!0,snapshot:h,useClone:null}}));return function(n,r){var o=r.droppableId,a=r.type,s=!r.isDropDisabled,u=r.renderClone;if(n.isDragging){var l=n.critical;if(!vE(a,l))return t;var c=mE(l,n.dimensions),d=Rk(n.impact)===o;return i(o,s,d,d,c,u)}if("DROP_ANIMATING"===n.phase){var h=n.completed;if(!vE(a,h.critical))return t;var f=mE(h.critical,n.dimensions);return i(o,s,uE(h.result)===o,Rk(h.impact)===o,f,u)}if("IDLE"===n.phase&&n.completed&&!n.shouldFlush){var p=n.completed;if(!vE(a,p.critical))return t;var g=Rk(p.impact)===o,v=Boolean(p.impact.at&&"COMBINE"===p.impact.at.type),m=p.critical.droppable.id===o;return g?v?e:t:m?e:t}return t}}),{updateViewportMaxScroll:function(e){return{type:"UPDATE_VIEWPORT_MAX_SCROLL",payload:e}}},null,{context:Rx,pure:!0,areStatePropsEqual:sE})((function(n){var i=(0,e.useContext)(zx);i||_C(!1);var r=i.contextId,o=i.isMovementAllowed,a=(0,e.useRef)(null),s=(0,e.useRef)(null),u=n.children,l=n.droppableId,c=n.type,d=n.mode,h=n.direction,f=n.ignoreContainerClipping,p=n.isDropDisabled,g=n.isCombineEnabled,v=n.snapshot,m=n.useClone,_=n.updateViewportMaxScroll,y=n.getContainerForClone,b=Vw((function(){return a.current}),[]),w=Vw((function(e){a.current=e}),[]),C=(Vw((function(){return s.current}),[]),Vw((function(e){s.current=e}),[]));Vx();var k=Vw((function(){o()&&_({maxScroll:KS()})}),[o,_]);!function(t){var n=(0,e.useRef)(null),i=YL(zx),r=Bx("droppable"),o=i.registry,a=i.marshal,s=Yx(t),u=Ww((function(){return{id:t.droppableId,type:t.type,mode:t.mode}}),[t.droppableId,t.mode,t.type]),l=(0,e.useRef)(u),c=Ww((function(){return iC((function(e,t){n.current||_C(!1);var i={x:e,y:t};a.updateDroppableScroll(u.id,i)}))}),[u.id,a]),d=Vw((function(){var e=n.current;return e&&e.env.closestScrollable?FL(e.env.closestScrollable):xC}),[]),h=Vw((function(){var e=d();c(e.x,e.y)}),[d,c]),f=Ww((function(){return rC(h)}),[h]),p=Vw((function(){var e=n.current,t=UL(e);e&&t||_C(!1),e.scrollOptions.shouldPublishImmediately?h():f()}),[f,h]),g=Vw((function(e,t){n.current&&_C(!1);var r=s.current,o=r.getDroppableRef();o||_C(!1);var a=HL(o),l={ref:o,descriptor:u,env:a,scrollOptions:t};n.current=l;var c=BL({ref:o,descriptor:u,env:a,windowScroll:e,direction:r.direction,isDropDisabled:r.isDropDisabled,isCombineEnabled:r.isCombineEnabled,shouldClipSubject:!r.ignoreContainerClipping}),d=a.closestScrollable;return d&&(d.setAttribute(xx.contextId,i.contextId),d.addEventListener("scroll",p,VL(l.scrollOptions))),c}),[i.contextId,u,p,s]),v=Vw((function(){var e=n.current,t=UL(e);return e&&t||_C(!1),FL(t)}),[]),m=Vw((function(){var e=n.current;e||_C(!1);var t=UL(e);n.current=null,t&&(f.cancel(),t.removeAttribute(xx.contextId),t.removeEventListener("scroll",p,VL(e.scrollOptions)))}),[p,f]),_=Vw((function(e){var t=n.current;t||_C(!1);var i=UL(t);i||_C(!1),i.scrollTop+=e.y,i.scrollLeft+=e.x}),[]),y=Ww((function(){return{getDimensionAndWatchScroll:g,getScrollWhileDragging:v,dragStopped:m,scroll:_}}),[m,g,v,_]),b=Ww((function(){return{uniqueId:r,descriptor:u,callbacks:y}}),[y,u,r]);Dx((function(){return l.current=b.descriptor,o.droppable.register(b),function(){n.current&&m(),o.droppable.unregister(b)}}),[y,u,m,b,a,o.droppable]),Dx((function(){n.current&&a.updateDroppableIsEnabled(l.current.id,!t.isDropDisabled)}),[t.isDropDisabled,a]),Dx((function(){n.current&&a.updateDroppableIsCombineEnabled(l.current.id,t.isCombineEnabled)}),[t.isCombineEnabled,a])}({droppableId:l,type:c,mode:d,direction:h,isDropDisabled:p,isCombineEnabled:g,ignoreContainerClipping:f,getDroppableRef:b});var S=e.createElement(XL,{on:n.placeholder,shouldAnimate:n.shouldAnimatePlaceholder},(function(t){var n=t.onClose,i=t.data,o=t.animate;return e.createElement($L,{placeholder:i,onClose:n,innerRef:C,animate:o,contextId:r,onTransitionEnd:k})})),x=Ww((function(){return{innerRef:w,placeholder:S,droppableProps:{"data-rbd-droppable-id":l,"data-rbd-droppable-context-id":r}}}),[r,l,S,w]),L=m?m.dragging.draggableId:null,E=Ww((function(){return{droppableId:l,type:c,isUsingCloneFor:L}}),[l,L,c]);return e.createElement(QL.Provider,{value:E},u(x,v),function(){if(!m)return null;var n=m.dragging,i=m.render,r=e.createElement(pE,{draggableId:n.draggableId,index:n.source.index,isClone:!0,isEnabled:!0,shouldRespectForcePress:!1,canDragInteractiveElements:!0},(function(e,t){return i(e,t,n)}));return t.createPortal(r,y())}())}));yE.defaultProps=_E;var bE,wE=["children","defaultHeight","defaultWidth","disableHeight","disableWidth","nonce","onResize","style","tagName"];bE="undefined"!==typeof window?window:"undefined"!==typeof self?self:n.g;var CE=null,kE=null,SE=bE.clearTimeout,xE=bE.setTimeout,LE=bE.cancelAnimationFrame||bE.mozCancelAnimationFrame||bE.webkitCancelAnimationFrame,EE=bE.requestAnimationFrame||bE.mozRequestAnimationFrame||bE.webkitRequestAnimationFrame;function DE(e){var t,n,i,r,o,a,s,u="undefined"!==typeof document&&document.attachEvent;if(!u){a=function(e){var t=e.__resizeTriggers__,n=t.firstElementChild,i=t.lastElementChild,r=n.firstElementChild;i.scrollLeft=i.scrollWidth,i.scrollTop=i.scrollHeight,r.style.width=n.offsetWidth+1+"px",r.style.height=n.offsetHeight+1+"px",n.scrollLeft=n.scrollWidth,n.scrollTop=n.scrollHeight},o=function(e){return e.offsetWidth!==e.__resizeLast__.width||e.offsetHeight!==e.__resizeLast__.height},s=function(e){if(!(e.target.className&&"function"===typeof e.target.className.indexOf&&e.target.className.indexOf("contract-trigger")<0&&e.target.className.indexOf("expand-trigger")<0)){var t=this;a(this),this.__resizeRAF__&&CE(this.__resizeRAF__),this.__resizeRAF__=kE((function(){o(t)&&(t.__resizeLast__.width=t.offsetWidth,t.__resizeLast__.height=t.offsetHeight,t.__resizeListeners__.forEach((function(n){n.call(t,e)})))}))}};var l=!1,c="";i="animationstart";var d="Webkit Moz O ms".split(" "),h="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),f=document.createElement("fakeelement");if(void 0!==f.style.animationName&&(l=!0),!1===l)for(var p=0;p<d.length;p++)if(void 0!==f.style[d[p]+"AnimationName"]){c="-"+d[p].toLowerCase()+"-",i=h[p],l=!0;break}t="@"+c+"keyframes "+(n="resizeanim")+" { from { opacity: 0; } to { opacity: 0; } } ",r=c+"animation: 1ms "+n+"; "}return{addResizeListener:function(o,l){if(u)o.attachEvent("onresize",l);else{if(!o.__resizeTriggers__){var c=o.ownerDocument,d=bE.getComputedStyle(o);d&&"static"===d.position&&(o.style.position="relative"),function(n){if(!n.getElementById("detectElementResize")){var i=(t||"")+".resize-triggers { "+(r||"")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',o=n.head||n.getElementsByTagName("head")[0],a=n.createElement("style");a.id="detectElementResize",a.type="text/css",null!=e&&a.setAttribute("nonce",e),a.styleSheet?a.styleSheet.cssText=i:a.appendChild(n.createTextNode(i)),o.appendChild(a)}}(c),o.__resizeLast__={},o.__resizeListeners__=[],(o.__resizeTriggers__=c.createElement("div")).className="resize-triggers";var h=c.createElement("div");h.className="expand-trigger",h.appendChild(c.createElement("div"));var f=c.createElement("div");f.className="contract-trigger",o.__resizeTriggers__.appendChild(h),o.__resizeTriggers__.appendChild(f),o.appendChild(o.__resizeTriggers__),a(o),o.addEventListener("scroll",s,!0),i&&(o.__resizeTriggers__.__animationListener__=function(e){e.animationName===n&&a(o)},o.__resizeTriggers__.addEventListener(i,o.__resizeTriggers__.__animationListener__))}o.__resizeListeners__.push(l)}},removeResizeListener:function(e,t){if(u)e.detachEvent("onresize",t);else if(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),!e.__resizeListeners__.length){e.removeEventListener("scroll",s,!0),e.__resizeTriggers__.__animationListener__&&(e.__resizeTriggers__.removeEventListener(i,e.__resizeTriggers__.__animationListener__),e.__resizeTriggers__.__animationListener__=null);try{e.__resizeTriggers__=!e.removeChild(e.__resizeTriggers__)}catch(n){}}}}}null==LE||null==EE?(CE=SE,kE=function(e){return xE(e,20)}):(CE=function(e){var t=(0,ne.Z)(e,2),n=t[0],i=t[1];LE(n),SE(i)},kE=function(e){var t=EE((function(){SE(n),e()})),n=xE((function(){LE(t),e()}),20);return[t,n]});var NE=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var e;(0,X.Z)(this,i);for(var t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o];return(e=n.call.apply(n,[this].concat(r))).state={height:e.props.defaultHeight||0,scaledHeight:e.props.defaultHeight||0,scaledWidth:e.props.defaultWidth||0,width:e.props.defaultWidth||0},e._autoSizer=null,e._detectElementResize=null,e._parentNode=null,e._resizeObserver=null,e._timeoutId=null,e._onResize=function(){e._timeoutId=null;var t=e.props,n=t.disableHeight,i=t.disableWidth,r=t.onResize;if(e._parentNode){var o,a,s,u,l=window.getComputedStyle(e._parentNode)||{},c=parseFloat(null!==(o=l.paddingLeft)&&void 0!==o?o:"0"),d=parseFloat(null!==(a=l.paddingRight)&&void 0!==a?a:"0"),h=parseFloat(null!==(s=l.paddingTop)&&void 0!==s?s:"0"),f=parseFloat(null!==(u=l.paddingBottom)&&void 0!==u?u:"0"),p=e._parentNode.getBoundingClientRect(),g=p.height-h-f,v=p.width-c-d,m=e._parentNode.offsetHeight-h-f,_=e._parentNode.offsetWidth-c-d;(n||e.state.height===m&&e.state.scaledHeight===g)&&(i||e.state.width===_&&e.state.scaledWidth===v)||(e.setState({height:m,width:_,scaledHeight:g,scaledWidth:v}),"function"===typeof r&&r({height:m,scaledHeight:g,scaledWidth:v,width:_}))}},e._setRef=function(t){e._autoSizer=t},e}return(0,J.Z)(i,[{key:"componentDidMount",value:function(){var e=this,t=this.props.nonce;this._autoSizer&&this._autoSizer.parentNode&&this._autoSizer.parentNode.ownerDocument&&this._autoSizer.parentNode.ownerDocument.defaultView&&this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement&&(this._parentNode=this._autoSizer.parentNode,null!=this._parentNode&&("undefined"!==typeof ResizeObserver?(this._resizeObserver=new ResizeObserver((function(){e._timeoutId=setTimeout(e._onResize,0)})),this._resizeObserver.observe(this._parentNode)):(this._detectElementResize=DE(t),this._detectElementResize.addResizeListener(this._parentNode,this._onResize)),this._onResize()))}},{key:"componentWillUnmount",value:function(){this._parentNode&&(this._detectElementResize&&this._detectElementResize.removeResizeListener(this._parentNode,this._onResize),null!==this._timeoutId&&clearTimeout(this._timeoutId),this._resizeObserver&&(this._resizeObserver.observe(this._parentNode),this._resizeObserver.disconnect()))}},{key:"render",value:function(){var t=this.props,n=t.children,i=(t.defaultHeight,t.defaultWidth,t.disableHeight),r=void 0!==i&&i,o=t.disableWidth,a=void 0!==o&&o,s=(t.nonce,t.onResize,t.style),u=void 0===s?{}:s,l=t.tagName,c=void 0===l?"div":l,d=nn(t,wE),h=this.state,f=h.height,p=h.scaledHeight,g=h.scaledWidth,v=h.width,m={overflow:"visible"},_={},y=!1;return r||(0===f&&(y=!0),m.height=0,_.height=f,_.scaledHeight=p),a||(0===v&&(y=!0),m.width=0,_.width=v,_.scaledWidth=g),(0,e.createElement)(c,Rt({ref:this._setRef,style:Rt(Rt({},m),u)},d),!y&&n(_))}}]),i}(e.Component);var ME="object"===typeof performance&&"function"===typeof performance.now?function(){return performance.now()}:function(){return Date.now()};function TE(e){cancelAnimationFrame(e.id)}function IE(e,t){var n=ME();var i={id:requestAnimationFrame((function r(){ME()-n>=t?e.call(null):i.id=requestAnimationFrame(r)}))};return i}var OE=-1;function AE(e){if(void 0===e&&(e=!1),-1===OE||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",document.body.appendChild(t),OE=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return OE}var RE=null;function PE(e){if(void 0===e&&(e=!1),null===RE||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";var i=document.createElement("div"),r=i.style;return r.width="100px",r.height="100px",t.appendChild(i),document.body.appendChild(t),t.scrollLeft>0?RE="positive-descending":(t.scrollLeft=1,RE=0===t.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(t),RE}return RE}var ZE=150,FE=function(e,t){return e};function jE(t){var n,i=t.getItemOffset,r=t.getEstimatedTotalSize,o=t.getItemSize,a=t.getOffsetForIndexAndAlignment,s=t.getStartIndexForOffset,u=t.getStopIndexForStartIndex,l=t.initInstanceProps,d=t.shouldResetStyleCacheOnItemSizeChange,h=t.validateProps;return n=function(t){function n(e){var n;return(n=t.call(this,e)||this)._instanceProps=l(n.props,(0,Br.Z)(n)),n._outerRef=void 0,n._resetIsScrollingTimeoutId=null,n.state={instance:(0,Br.Z)(n),isScrolling:!1,scrollDirection:"forward",scrollOffset:"number"===typeof n.props.initialScrollOffset?n.props.initialScrollOffset:0,scrollUpdateWasRequested:!1},n._callOnItemsRendered=void 0,n._callOnItemsRendered=iC((function(e,t,i,r){return n.props.onItemsRendered({overscanStartIndex:e,overscanStopIndex:t,visibleStartIndex:i,visibleStopIndex:r})})),n._callOnScroll=void 0,n._callOnScroll=iC((function(e,t,i){return n.props.onScroll({scrollDirection:e,scrollOffset:t,scrollUpdateWasRequested:i})})),n._getItemStyle=void 0,n._getItemStyle=function(e){var t,r=n.props,a=r.direction,s=r.itemSize,u=r.layout,l=n._getItemStyleCache(d&&s,d&&u,d&&a);if(l.hasOwnProperty(e))t=l[e];else{var c=i(n.props,e,n._instanceProps),h=o(n.props,e,n._instanceProps),f="horizontal"===a||"horizontal"===u,p="rtl"===a,g=f?c:0;l[e]=t={position:"absolute",left:p?void 0:g,right:p?g:void 0,top:f?0:c,height:f?"100%":h,width:f?h:"100%"}}return t},n._getItemStyleCache=void 0,n._getItemStyleCache=iC((function(e,t,n){return{}})),n._onScrollHorizontal=function(e){var t=e.currentTarget,i=t.clientWidth,r=t.scrollLeft,o=t.scrollWidth;n.setState((function(e){if(e.scrollOffset===r)return null;var t=n.props.direction,a=r;if("rtl"===t)switch(PE()){case"negative":a=-r;break;case"positive-descending":a=o-i-r}return a=Math.max(0,Math.min(a,o-i)),{isScrolling:!0,scrollDirection:e.scrollOffset<a?"forward":"backward",scrollOffset:a,scrollUpdateWasRequested:!1}}),n._resetIsScrollingDebounced)},n._onScrollVertical=function(e){var t=e.currentTarget,i=t.clientHeight,r=t.scrollHeight,o=t.scrollTop;n.setState((function(e){if(e.scrollOffset===o)return null;var t=Math.max(0,Math.min(o,r-i));return{isScrolling:!0,scrollDirection:e.scrollOffset<t?"forward":"backward",scrollOffset:t,scrollUpdateWasRequested:!1}}),n._resetIsScrollingDebounced)},n._outerRefSetter=function(e){var t=n.props.outerRef;n._outerRef=e,"function"===typeof t?t(e):null!=t&&"object"===typeof t&&t.hasOwnProperty("current")&&(t.current=e)},n._resetIsScrollingDebounced=function(){null!==n._resetIsScrollingTimeoutId&&TE(n._resetIsScrollingTimeoutId),n._resetIsScrollingTimeoutId=IE(n._resetIsScrolling,ZE)},n._resetIsScrolling=function(){n._resetIsScrollingTimeoutId=null,n.setState({isScrolling:!1},(function(){n._getItemStyleCache(-1,null)}))},n}re(n,t),n.getDerivedStateFromProps=function(e,t){return HE(e,t),h(e),null};var f=n.prototype;return f.scrollTo=function(e){e=Math.max(0,e),this.setState((function(t){return t.scrollOffset===e?null:{scrollDirection:t.scrollOffset<e?"forward":"backward",scrollOffset:e,scrollUpdateWasRequested:!0}}),this._resetIsScrollingDebounced)},f.scrollToItem=function(e,t){void 0===t&&(t="auto");var n=this.props,i=n.itemCount,r=n.layout,o=this.state.scrollOffset;e=Math.max(0,Math.min(e,i-1));var s=0;if(this._outerRef){var u=this._outerRef;s="vertical"===r?u.scrollWidth>u.clientWidth?AE():0:u.scrollHeight>u.clientHeight?AE():0}this.scrollTo(a(this.props,e,t,o,this._instanceProps,s))},f.componentDidMount=function(){var e=this.props,t=e.direction,n=e.initialScrollOffset,i=e.layout;if("number"===typeof n&&null!=this._outerRef){var r=this._outerRef;"horizontal"===t||"horizontal"===i?r.scrollLeft=n:r.scrollTop=n}this._callPropsCallbacks()},f.componentDidUpdate=function(){var e=this.props,t=e.direction,n=e.layout,i=this.state,r=i.scrollOffset;if(i.scrollUpdateWasRequested&&null!=this._outerRef){var o=this._outerRef;if("horizontal"===t||"horizontal"===n)if("rtl"===t)switch(PE()){case"negative":o.scrollLeft=-r;break;case"positive-ascending":o.scrollLeft=r;break;default:var a=o.clientWidth,s=o.scrollWidth;o.scrollLeft=s-a-r}else o.scrollLeft=r;else o.scrollTop=r}this._callPropsCallbacks()},f.componentWillUnmount=function(){null!==this._resetIsScrollingTimeoutId&&TE(this._resetIsScrollingTimeoutId)},f.render=function(){var t=this.props,n=t.children,i=t.className,o=t.direction,a=t.height,s=t.innerRef,u=t.innerElementType,l=t.innerTagName,d=t.itemCount,h=t.itemData,f=t.itemKey,p=void 0===f?FE:f,g=t.layout,v=t.outerElementType,m=t.outerTagName,_=t.style,y=t.useIsScrolling,b=t.width,w=this.state.isScrolling,C="horizontal"===o||"horizontal"===g,k=C?this._onScrollHorizontal:this._onScrollVertical,S=this._getRangeToRender(),x=S[0],L=S[1],E=[];if(d>0)for(var D=x;D<=L;D++)E.push((0,e.createElement)(n,{data:h,key:p(D,h),index:D,isScrolling:y?w:void 0,style:this._getItemStyle(D)}));var N=r(this.props,this._instanceProps);return(0,e.createElement)(v||m||"div",{className:i,onScroll:k,ref:this._outerRefSetter,style:c({position:"relative",height:a,width:b,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:o},_)},(0,e.createElement)(u||l||"div",{children:E,ref:s,style:{height:C?"100%":N,pointerEvents:w?"none":void 0,width:C?N:"100%"}}))},f._callPropsCallbacks=function(){if("function"===typeof this.props.onItemsRendered&&this.props.itemCount>0){var e=this._getRangeToRender(),t=e[0],n=e[1],i=e[2],r=e[3];this._callOnItemsRendered(t,n,i,r)}if("function"===typeof this.props.onScroll){var o=this.state,a=o.scrollDirection,s=o.scrollOffset,u=o.scrollUpdateWasRequested;this._callOnScroll(a,s,u)}},f._getRangeToRender=function(){var e=this.props,t=e.itemCount,n=e.overscanCount,i=this.state,r=i.isScrolling,o=i.scrollDirection,a=i.scrollOffset;if(0===t)return[0,0,0,0];var l=s(this.props,a,this._instanceProps),c=u(this.props,l,a,this._instanceProps),d=r&&"backward"!==o?1:Math.max(1,n),h=r&&"forward"!==o?1:Math.max(1,n);return[Math.max(0,l-d),Math.max(0,Math.min(t-1,c+h)),l,c]},n}(e.PureComponent),n.defaultProps={direction:"ltr",itemData:void 0,layout:"vertical",overscanCount:2,useIsScrolling:!1},n}var HE=function(e,t){e.children,e.direction,e.height,e.layout,e.innerTagName,e.outerTagName,e.width,t.instance},BE=function(e,t,n){var i=e.itemSize,r=n.itemMetadataMap,o=n.lastMeasuredIndex;if(t>o){var a=0;if(o>=0){var s=r[o];a=s.offset+s.size}for(var u=o+1;u<=t;u++){var l=i(u);r[u]={offset:a,size:l},a+=l}n.lastMeasuredIndex=t}return r[t]},zE=function(e,t,n,i,r){for(;i<=n;){var o=i+Math.floor((n-i)/2),a=BE(e,o,t).offset;if(a===r)return o;a<r?i=o+1:a>r&&(n=o-1)}return i>0?i-1:0},WE=function(e,t,n,i){for(var r=e.itemCount,o=1;n<r&&BE(e,n,t).offset<i;)n+=o,o*=2;return zE(e,t,Math.min(n,r-1),Math.floor(n/2),i)},VE=function(e,t){var n=e.itemCount,i=t.itemMetadataMap,r=t.estimatedItemSize,o=t.lastMeasuredIndex,a=0;if(o>=n&&(o=n-1),o>=0){var s=i[o];a=s.offset+s.size}return a+(n-o-1)*r},YE=jE({getItemOffset:function(e,t,n){return BE(e,t,n).offset},getItemSize:function(e,t,n){return n.itemMetadataMap[t].size},getEstimatedTotalSize:VE,getOffsetForIndexAndAlignment:function(e,t,n,i,r,o){var a=e.direction,s=e.height,u=e.layout,l=e.width,c="horizontal"===a||"horizontal"===u?l:s,d=BE(e,t,r),h=VE(e,r),f=Math.max(0,Math.min(h-c,d.offset)),p=Math.max(0,d.offset-c+d.size+o);switch("smart"===n&&(n=i>=p-c&&i<=f+c?"auto":"center"),n){case"start":return f;case"end":return p;case"center":return Math.round(p+(f-p)/2);default:return i>=p&&i<=f?i:i<p?p:f}},getStartIndexForOffset:function(e,t,n){return function(e,t,n){var i=t.itemMetadataMap,r=t.lastMeasuredIndex;return(r>0?i[r].offset:0)>=n?zE(e,t,r,0,n):WE(e,t,Math.max(0,r),n)}(e,n,t)},getStopIndexForStartIndex:function(e,t,n,i){for(var r=e.direction,o=e.height,a=e.itemCount,s=e.layout,u=e.width,l="horizontal"===r||"horizontal"===s?u:o,c=BE(e,t,i),d=n+l,h=c.offset+c.size,f=t;f<a-1&&h<d;)f++,h+=BE(e,f,i).size;return f},initInstanceProps:function(e,t){var n={itemMetadataMap:{},estimatedItemSize:e.estimatedItemSize||50,lastMeasuredIndex:-1};return t.resetAfterIndex=function(e,i){void 0===i&&(i=!0),n.lastMeasuredIndex=Math.min(n.lastMeasuredIndex,e-1),t._getItemStyleCache(-1),i&&t.forceUpdate()},n},shouldResetStyleCacheOnItemSizeChange:!1,validateProps:function(e){e.itemSize}});var UE=(0,ft.Ge)("loader");function KE(t){var n=t.size,i=void 0===n?"s":n,r=t.className,o=t.qa;return e.createElement("div",{className:UE({size:i},r),"data-qa":o},e.createElement("div",{className:UE("left")}),e.createElement("div",{className:UE("center")}),e.createElement("div",{className:UE("right")}))}var qE=function(t){var n=e.useRef(null);return function(t){var n=t.element,i=t.options,r=t.onIntersect;e.useEffect((function(){var e=new IntersectionObserver((function(e){(0,ne.Z)(e,1)[0].isIntersecting&&(null===r||void 0===r||r())}),i);return n&&e.observe(n),function(){return null===n?void 0:e.unobserve(n)}}),[n,i,r])}({element:n.current,onIntersect:null===t||void 0===t?void 0:t.onIntersect}),e.createElement("div",{ref:n,className:Jb("loading-indicator")},e.createElement(KE,null))},GE=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M7 3a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM5.5 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm5 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0-5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM7 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm3.5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z",clipRule:"evenodd"}))},$E="list-active-item",QE=[Tv.V.TAB],XE=(0,ft.Ge)("list"),JE=function(e){return String(e)};function eD(e,t){return t?Object.assign(Object.assign({},null===e||void 0===e?void 0:e.draggableProps.style),t):null===e||void 0===e?void 0:e.draggableProps.style}var tD=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var e;return(0,X.Z)(this,i),(e=n.apply(this,arguments)).node=null,e.getNode=function(){return e.node},e.setRef=function(t){var n;e.node=t,null===(n=e.props.provided)||void 0===n||n.innerRef(t)},e.onClick=function(){var t,n;return null===(n=(t=e.props).onClick)||void 0===n?void 0:n.call(t,e.props.item,e.props.itemIndex)},e.onClickCapture=function(e){i.publishEvent({domEvent:e,eventId:"click"})},e.onMouseEnter=function(){return!e.props.item.disabled&&e.props.onActivate(e.props.itemIndex)},e.onMouseLeave=function(){return e.props.onActivate(void 0)},e}return(0,J.Z)(i,[{key:"render",value:function(){var t,n,i=this.props,r=i.item,o=i.style,a=i.sortable,s=i.sortHandleAlign,u=i.itemClassName,l=i.selected,c=i.active,d=i.role,h=void 0===d?"listitem":d,f=i.isDragging,p=void 0!==f&&f;return e.createElement("div",Object.assign({role:h,"aria-selected":l,"data-qa":c?$E:void 0,className:XE("item",{sortable:a,active:c,selected:l,inactive:r.disabled,"sort-handle-align":s,dragging:p},u)},null===(t=this.props.provided)||void 0===t?void 0:t.draggableProps,null===(n=this.props.provided)||void 0===n?void 0:n.dragHandleProps,{style:eD(this.props.provided,o),onClick:r.disabled?void 0:this.onClick,onClickCapture:r.disabled?void 0:this.onClickCapture,onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,ref:this.setRef,id:"".concat(this.props.listId,"-item-").concat(this.props.itemIndex)}),this.renderSortIcon(),this.renderContent())}},{key:"renderSortIcon",value:function(){return this.props.sortable?e.createElement("div",{className:XE("item-sort-icon")},e.createElement(yo.J,{data:GE,size:12})):null}},{key:"renderContent",value:function(){var t=this.props,n=t.renderItem,i=void 0===n?JE:n,r=t.item,o=t.active,a=t.itemIndex;return e.createElement("div",{className:XE("item-content")},i(r,o,a))}}]),i}(e.Component);tD.publishEvent=mv.P.withEventPublisher("List");var nD=n(61883),iD=n.n(nD);function rD(t){return iD()(t).reduce((function(t,n){return t[n]=e.createRef(),t}),{})}var oD=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(e){var t;return(0,X.Z)(this,i),(t=n.call(this,e)).node=null,t.setRef=function(e){var n;t.node=e,null===(n=t.props.provided)||void 0===n||n.innerRef(e)},t.state={refsList:rD(e.itemCount)},t}return(0,J.Z)(i,[{key:"componentDidMount",value:function(){if(this.node&&this.props.sortable){var e=this.node.getBoundingClientRect(),t=e.width,n=e.height;this.setState({minWidth:t,minHeight:n})}}},{key:"render",value:function(){var t=this,n=this.state,i=n.minWidth,r=n.minHeight,o=e.Children.map(this.props.children,(function(n,i){return e.cloneElement(n,{ref:t.state.refsList[i]})}));return e.createElement("div",{ref:this.setRef,style:{minWidth:i,minHeight:r}},o)}},{key:"scrollToItem",value:function(e){var t,n,i=null===(t=this.state.refsList[e])||void 0===t?void 0:t.current;if(i&&"function"===typeof i.getNode){var r=i.getNode();r&&(null===(n=r.scrollIntoView)||void 0===n||n.call(r,{block:"nearest"}))}}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n=e.itemCount;return n===Object.keys(t.refsList).length?t:{refsList:rD(n)}}}]),i}(e.Component),aD=(0,ft.Ge)("list"),sD=28,uD=function(e,t,n){var i=Array.from(e),r=i.splice(t,1),o=(0,ne.Z)(r,1)[0];return i.splice(n,0,o),i},lD=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var t;return(0,X.Z)(this,i),(t=n.apply(this,arguments)).state={items:t.props.items,filter:""},t.refFilter=e.createRef(),t.refContainer=e.createRef(),t.blurTimer=null,t.loadingItem={value:"__LIST_ITEM_LOADING__",disabled:!0},t.uniqId=(0,z_.x)(),t.onKeyDown=function(e){var n=t.state,i=n.activeItem,r=n.pageSize;if(!QE.includes(e.key))switch(e.key){case"ArrowDown":t.handleKeyMove(e,1,-1);break;case"ArrowUp":t.handleKeyMove(e,-1);break;case"PageDown":t.handleKeyMove(e,r);break;case"PageUp":t.handleKeyMove(e,-r);break;case"Home":t.handleKeyMove(e,t.state.items.length-(i||0));break;case"End":t.handleKeyMove(e,-(i||0)-1);break;case"Enter":"number"===typeof i&&t.props.onItemClick&&t.props.onItemClick(t.state.items[i],i,!0);break;default:t.refFilter.current&&t.refFilter.current.focus()}},t.renderItemContent=function(n,i,r){var o=t.props.onLoadMore;return Iw()(n)&&"value"in n&&n.value===t.loadingItem.value?e.createElement(qE,{onIntersect:0===r?void 0:o}):t.props.renderItem?t.props.renderItem(n,i,r):JE(n)},t.renderItem=function(n){var i,r=n.index,o=n.style,a=n.provided,s=n.isDragging,u=t.props,l=u.sortHandleAlign,c=u.role,d=t.state,h=d.items,f=d.activeItem,p=t.getItemsWithLoading()[r],g=t.props.sortable&&h.length>1&&!t.getFilter(),v=r===f||r===t.props.activeItemIndex,m=Array.isArray(t.props.selectedItemIndex)?t.props.selectedItemIndex.includes(r):r===t.props.selectedItemIndex;return e.createElement(tD,{key:r,style:o,itemIndex:r,item:p,sortable:g,sortHandleAlign:l,renderItem:t.renderItemContent,itemClassName:t.props.itemClassName,active:v,selected:m,onActivate:t.onItemActivate,onClick:t.props.onItemClick,role:"listbox"===c?"option":"listitem",listId:null!==(i=t.props.id)&&void 0!==i?i:t.uniqId,provided:a,isDragging:s})},t.renderVirtualizedItem=function(n){var i=n.index,r=n.style;return e.createElement(gE,{draggableId:String(i),index:i,key:"item-key-".concat(i)},(function(e){return t.renderItem({index:i,style:r,provided:e})}))},t.filterItem=function(e){return function(t){return String(t).includes(e)}},t.scrollToIndex=function(e){var n=t.refContainer.current;n&&n.scrollToItem(e)},t.deactivate=function(){t.blurTimer&&t.props.deactivateOnLeave&&t.setState({activeItem:void 0})},t.handleFocus=function(){t.blurTimer&&(clearTimeout(t.blurTimer),t.blurTimer=null)},t.handleBlur=function(){t.blurTimer||(t.blurTimer=setTimeout(t.deactivate,50))},t.onUpdateFilterInternal=function(e){var n=t.props,i=n.items,r=n.filterItem,o=void 0===r?t.filterItem:r,a=n.onFilterEnd;t.setState({filter:e,items:e?i.filter(o(e)):i},(function(){a&&a({items:t.state.items})}))},t.onFilterUpdate=function(e){t.props.onFilterUpdate?t.props.onFilterUpdate(e):t.onUpdateFilterInternal(e)},t.onItemsRendered=function(e){var n=e.visibleStartIndex,i=e.visibleStopIndex;t.setState({pageSize:i-n})},t.onItemActivate=function(e){t.state.sorting||t.activateItem(e,!1)},t.onMouseLeave=function(){t.deactivate()},t.onSortStart=function(){t.setState({sorting:!0})},t.onSortEnd=function(e){if(e.destination&&e.source.index!==e.destination.index){var n=e.source.index,i=e.destination.index;t.props.onSortEnd&&t.props.onSortEnd({oldIndex:n,newIndex:i});var r=uD(t.getItems(),n,i);t.setState({activeItem:i,items:r,sorting:!1})}},t.getItemHeight=function(e){var n=t.props.itemHeight;return"function"===typeof n?n(t.state.items[e],e):n},t.getVirtualizedItemHeight=function(e){return t.getItemHeight(e)||sD},t}return(0,J.Z)(i,[{key:"componentDidUpdate",value:function(e,t){if(!Mw()(this.props.items,e.items)){var n=this.getFilter();n&&!this.props.onFilterUpdate?this.onUpdateFilterInternal(n):this.setState({items:this.props.items})}this.props.activeItemIndex!==e.activeItemIndex&&this.activateItem(this.props.activeItemIndex),this.props.onChangeActive&&this.state.activeItem!==t.activeItem&&this.props.onChangeActive(this.state.activeItem)}},{key:"componentWillUnmount",value:function(){this.blurTimer=null}},{key:"render",value:function(){var t=this,n=this.props,i=n.emptyPlaceholder,r=n.virtualized,o=n.className,a=n.itemsClassName,s=n.qa,u=n.role,l=void 0===u?"list":u,c=this.state.items;return e.createElement(jr.Consumer,null,(function(n){var u=n.mobile;return e.createElement("div",{className:aD({mobile:u},o),"data-qa":s,tabIndex:-1,onFocus:t.handleFocus,onBlur:t.handleBlur,onKeyDown:t.onKeyDown},t.renderFilter(),e.createElement("div",{className:aD("items",{virtualized:r},a),style:t.getItemsStyle(),onMouseLeave:t.onMouseLeave,role:l},t.renderItems(),0===c.length&&Boolean(i)&&e.createElement("div",{className:aD("empty-placeholder")},i)))}))}},{key:"getItems",value:function(){return this.state.items}},{key:"getItemsWithLoading",value:function(){return this.props.sortable?this.getItems():this.props.loading?[].concat((0,Ct.Z)(this.state.items),[this.loadingItem]):this.getItems()}},{key:"getActiveItem",value:function(){return"number"===typeof this.state.activeItem?this.state.activeItem:null}},{key:"activateItem",value:function(e){"number"===typeof e&&(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&this.scrollToIndex(e),this.setState({activeItem:e})}},{key:"renderFilter",value:function(){var t=this.props,n=t.size,i=t.filterable,r=t.filter,o=void 0===r?this.state.filter:r,a=t.filterPlaceholder,s=t.filterClassName,u=void 0===s?"":s,l=t.autoFocus;return i?e.createElement("div",{className:aD("filter",u)},e.createElement(db,{controlRef:this.refFilter,size:n,placeholder:a,value:o,hasClear:!0,onUpdate:this.onFilterUpdate,autoFocus:l})):null}},{key:"renderSimpleContainer",value:function(){var t=this,n=this.props.sortable,i=this.getItemsWithLoading();return n?e.createElement(TL,{onDragStart:this.onSortStart,onDragEnd:this.onSortEnd},e.createElement(yE,{droppableId:"droppable",renderClone:function(e,n,i){return t.renderItem({index:i.source.index,provided:e,isDragging:n.isDragging})}},(function(r){return e.createElement(oD,{ref:t.refContainer,itemCount:i.length,provided:r,sortable:n},i.map((function(n,i){return e.createElement(gE,{draggableId:String(i),index:i,key:"item-key-".concat(i)},(function(e,n){return t.renderItem({index:i,isDragging:n.isDragging,provided:e,style:{height:t.getItemHeight(i)}})}))})))}))):e.createElement(oD,{itemCount:i.length,ref:this.refContainer},i.map((function(e,n){return t.renderItem({index:n,style:{height:t.getItemHeight(n)}})})))}},{key:"renderVirtualizedContainer",value:function(){var t=this,n=this.getItems();return this.props.sortable?e.createElement(TL,{onDragStart:this.onSortStart,onDragEnd:this.onSortEnd},e.createElement(yE,{droppableId:"droppable",mode:"virtual",renderClone:function(e,n,i){return t.renderItem({index:i.source.index,provided:e,isDragging:n.isDragging})}},(function(i){return e.createElement(NE,null,(function(r){var o=r.width,a=r.height;return e.createElement(YE,{ref:t.refContainer,outerRef:i.innerRef,width:o,height:a,itemSize:t.getVirtualizedItemHeight,itemData:n,itemCount:n.length,overscanCount:10,onItemsRendered:t.onItemsRendered,activeItem:t.state.activeItem},t.renderVirtualizedItem)}))}))):e.createElement(NE,null,(function(i){var r=i.width,o=i.height;return e.createElement(YE,{ref:t.refContainer,width:r,height:o,itemSize:t.getVirtualizedItemHeight,itemData:n,itemCount:n.length,overscanCount:10,onItemsRendered:t.onItemsRendered,activeItem:t.state.activeItem},t.renderItem)}))}},{key:"renderItems",value:function(){return this.props.virtualized?this.renderVirtualizedContainer():this.renderSimpleContainer()}},{key:"getFilter",value:function(){var e=this.props.filter;return void 0===e?this.state.filter:e}},{key:"getItemsStyle",value:function(){var e=this.props.itemsHeight;return"function"===typeof e&&(e=e(this.state.items)),e?{height:e}:void 0}},{key:"handleKeyMove",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;e.preventDefault();var r=this.state.activeItem,o=void 0===r?n:r;this.activateItem(i.findNextIndex(this.state.items,o+t,Math.sign(t)))}}],[{key:"moveListElement",value:function(e,t,n){if(t!==n){var i=e.splice(t,1),r=(0,ne.Z)(i,1)[0];e.splice(n,0,r)}return e}},{key:"findNextIndex",value:function(e,t,n){for(var i=e.length,r=(t+i)%i,o=0;o<i;o+=1){if(e[r]&&!e[r].disabled)return r;r=(r+i+n)%i}}}]),i}(e.Component);lD.defaultProps={items:[],itemClassName:"",filterable:!0,sortable:!1,virtualized:!0,deactivateOnLeave:!0};var cD=function(e){var t=e.getOptionHeight,n=e.getOptionGroupHeight,i=e.size,r=e.option,o=e.index,a=e.mobile?32:tw[i];if("label"in r){var s=0===o?0:5;return a=""===r.label?0:a,n?n(r,o):a+s}return t?t(r,o):a},dD=function(e){return"string"===typeof e.content?e.content:"string"===typeof e.children?e.children:e.text?e.text:e.value},hD=function(t){return function(t){return e.Children.toArray(t)}(t).reduce((function(t,n){var i=n.props;if("label"in i){var r=i.options||function(t){return e.Children.toArray(t).reduce((function(e,t){var n=t.props;return"value"in n&&e.push(n),e}),[])}(i.children);t.push({options:r,label:i.label})}return"value"in i&&t.push(Object.assign({},i)),t}),[])},fD=function(e,t){return t?t.findIndex((function(t){if("label"in t)return!1;if(t.disabled)return!1;var n,i=dD(t);return(n=e,new RegExp(n.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"i")).test(i)})):-1},pD=function(e){var t;return(null===(t=null===e||void 0===e?void 0:e.current)||void 0===t?void 0:t.getItems())||[]},gD=function(e){return Boolean(e&&"label"in e)},vD=function(e){var t=e.options,n=e.filter,i=e.filterOption,r=t.filter((function(e){return!!gD(e)||(i?i(e,n):function(e,t){var n=dD(e).toLocaleLowerCase(),i=t.toLocaleLowerCase();return-1!==n.indexOf(i)}(e,n))}));return r.reduce((function(e,t,n){var i=gD(t),o=gD(e[e.length-1]),a=n===r.length-1;return i&&o&&e.pop(),(!i||i&&!a)&&e.push(t),e}),[])},mD=(0,ft.B_)("select-list"),_D=function(t){var n=t.option,i=t.renderOptionGroup;return i?e.createElement("div",{className:mD("group-label-custom")},i(n)):e.createElement("div",{className:mD("group-label",{empty:""===n.label})},e.createElement("div",{className:mD("group-label-content")},n.label))},yD=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M13.488 3.43a.75.75 0 0 1 .081 1.058l-6 7a.75.75 0 0 1-1.1.042l-3.5-3.5A.75.75 0 0 1 4.03 6.97l2.928 2.927 5.473-6.385a.75.75 0 0 1 1.057-.081Z",clipRule:"evenodd"}))},bD=(0,ft.B_)("select-list"),wD=function(t){var n=t.option,i=n.content,r=n.children,o=n.disabled;return e.createElement("span",{className:bD("option-default-label",{disabled:o})},i||r)},CD=function(t){var n=t.renderOption,i=t.value,r=t.option,o=t.multiple,a=-1!==i.indexOf(r.value),s=n?n(r):e.createElement(wD,{option:r});return e.createElement("div",{"data-qa":r.qa,className:bD("option",{colored:a&&!o,disabled:r.disabled})},o&&e.createElement(yo.J,{className:bD("tick-icon",{shown:a&&o}),data:yD}),s)},kD={value:"__SELECT_LIST_ITEM_LOADING__",disabled:!0},SD=e.forwardRef((function(t,n){var i=t.onOptionClick,r=t.renderOption,o=t.renderOptionGroup,a=t.getOptionHeight,s=t.getOptionGroupHeight,u=t.size,l=t.flattenOptions,c=t.value,d=t.multiple,h=t.virtualized,f=t.mobile,p=t.loading,g=t.onLoadMore,v=t.selectId,m=t.onChangeActive,_=e.useMemo((function(){return p?[].concat((0,Ct.Z)(l),[kD]):l}),[l,p]),y=e.useMemo((function(){return l.reduce((function(e,t,n){return"value"in t&&c.includes(t.value)&&e.push(n),e}),[])}),[l,c]),b=function(e){var t=e.getOptionHeight,n=e.getOptionGroupHeight,i=e.size,r=e.options,o=e.mobile;return r.reduce((function(e,r,a){return e+cD({getOptionHeight:t,getOptionGroupHeight:n,size:i,option:r,index:a,mobile:o})}),0)}({options:_,getOptionHeight:a,getOptionGroupHeight:s,size:u,mobile:f}),w=e.useCallback((function(e,t){return cD({getOptionHeight:a,getOptionGroupHeight:s,size:u,option:e,index:t,mobile:f})}),[a,s,f,u]),C=e.useCallback((function(t,n,i){if("label"in t){var a=o?function(e){return o(e,{itemHeight:w(e,i)})}:void 0;return e.createElement(_D,{option:t,renderOptionGroup:a})}if(t.value===kD.value)return e.createElement(qE,{onIntersect:0===i?void 0:g});var s=r?function(e){return r(e,{itemHeight:w(e,i)})}:void 0;return e.createElement(CD,{option:t,value:c,multiple:d,renderOption:s})}),[r,o,c,d,w,g]);return e.createElement(lD,{ref:n,className:Jb({size:u,virtualized:h,mobile:f}),qa:nw,itemClassName:Jb("item"),itemHeight:w,itemsHeight:h?b:void 0,items:_,filterable:!1,virtualized:h,renderItem:C,onItemClick:i,selectedItemIndex:y,id:"".concat(v,"-list"),role:"listbox",onChangeActive:m})}));SD.displayName="SelectList";var xD=(0,ft.B_)("select-empty-placeholder"),LD=function(t){var n=t.renderEmptyOptions,i=t.filter;return e.createElement("div",{className:xD({empty:!n})},null===n||void 0===n?void 0:n({filter:i}))},ED=function(t){var n=t.onChange,i=t.open,r=t.disabled,o=e.useState(""),a=(0,ne.Z)(o,2),s=a[0],u=a[1],l=e.useState(),c=(0,ne.Z)(l,2),d=c[0],h=c[1],f=e.useCallback((function(e){if(clearTimeout(d),e){var t=window.setTimeout((function(){return u("")}),2e3);h(t)}}),[d]),p=e.useCallback((function(e){e.stopPropagation();var t=function(e,t){var n=1===e.length,i="";return e===Tv.V.BACKSPACE&&t.length?i=t.slice(0,t.length-1):n&&(i=(t+e).trim()),i}(e.key,s);s!==t&&(f(t),u(t))}),[f,s]);e.useEffect((function(){return i&&!r?document.addEventListener("keydown",p):i||r||u(""),function(){i&&!r&&document.removeEventListener("keydown",p)}}),[p,i,r]),e.useEffect((function(){return i||clearTimeout(d),function(){return clearTimeout(d)}}),[i,d]),e.useEffect((function(){n(s)}),[n,s])},DD={filter:""},ND=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:DD,t=arguments.length>1?arguments[1]:void 0;if("SET_FILTER"===t.type){var n=t.payload.filter;return Object.assign(Object.assign({},e),{filter:n})}return e},MD=e.forwardRef((function(t,n){var i=t.onUpdate,r=t.onOpenChange,o=t.onFilterChange,a=t.renderControl,s=t.renderFilter,u=t.renderOption,l=t.renderOptionGroup,c=t.renderSelectedOption,d=t.renderEmptyOptions,h=t.getOptionHeight,f=t.getOptionGroupHeight,p=t.filterOption,g=t.name,v=t.className,m=t.controlClassName,_=t.popupClassName,y=t.qa,b=t.value,w=t.defaultValue,C=t.defaultOpen,k=t.open,S=t.label,x=t.placeholder,L=t.filterPlaceholder,E=t.width,D=t.popupWidth,N=t.error,M=t.virtualizationThreshold,T=void 0===M?50:M,I=t.view,O=void 0===I?"normal":I,A=t.size,R=void 0===A?"m":A,P=t.pin,Z=void 0===P?"round-round":P,F=t.multiple,j=void 0!==F&&F,H=t.disabled,B=void 0!==H&&H,z=t.filterable,W=void 0!==z&&z,V=t.disablePortal,Y=t.hasClear,U=void 0!==Y&&Y,K=t.onClose,q=t.id,G=Hr(),$=(0,ne.Z)(G,1)[0],Q=e.useReducer(ND,DD),X=(0,ne.Z)(Q,2),J=X[0].filter,ee=X[1],te=e.useRef(null),ie=e.useRef(null),re=e.useRef(null),oe=e.useRef(null),ae=Ov(n,ie),se=Vb({onUpdate:i,value:b,defaultValue:w,defaultOpen:C,multiple:j,open:k,onClose:K,onOpenChange:r}),ue=se.value,le=se.open,ce=se.activeIndex,de=se.toggleOpen,he=se.handleSelection,fe=se.handleClearValue,pe=se.setActiveIndex,ge=W_(),ve=null!==q&&void 0!==q?q:ge,me=function(e){return e.reduce((function(e,t){return"label"in t?(e.push({label:t.label,disabled:!0}),e.push.apply(e,(0,Ct.Z)(t.options||[]))):e.push(t),e}),[])}(t.options||hD(t.children)),_e=W?vD({options:me,filter:J,filterOption:p}):me,ye=function(t,n,i){if(0===n.length)return null;var r=t.filter((function(e){return!("label"in e)})),o=n.reduce((function(e,t){var n=r.find((function(e){return e.value===t}));return e.push(n||{value:t}),e}),[]);return i?o.map((function(t,n){return e.createElement(e.Fragment,{key:t.value},i(t,n))})):o.map((function(e){return dD(e)})).join(", ")}(me,ue,c),be=_e.length>=T,we=e.useCallback((function(e){var t,n;if(e&&!(null===e||void 0===e?void 0:e.disabled)&&!("label"in e)){if(j){var i=null===(t=null===oe||void 0===oe?void 0:oe.current)||void 0===t?void 0:t.getActiveItem();null===(n=re.current)||void 0===n||n.focus(),"number"===typeof i&&setTimeout((function(){var e;null===(e=null===oe||void 0===oe?void 0:oe.current)||void 0===e||e.activateItem(i,!0)}),50)}he(e)}}),[he,j]),Ce=e.useCallback((function(e){var t;[Tv.V.ENTER,Tv.V.SPACEBAR].includes(e.key)&&le&&(e.preventDefault(),e.key===Tv.V.SPACEBAR&&we(function(e){var t,n=pD(e),i=null===(t=null===e||void 0===e?void 0:e.current)||void 0===t?void 0:t.getActiveItem();return"number"===typeof i?n[i]:void 0}(oe))),[Tv.V.ARROW_DOWN,Tv.V.ARROW_UP].includes(e.key)&&!le&&(e.preventDefault(),de()),null===(t=null===oe||void 0===oe?void 0:oe.current)||void 0===t||t.onKeyDown(e)}),[we,le,de]),ke=e.useCallback((function(e){var t;null===(t=null===oe||void 0===oe?void 0:oe.current)||void 0===t||t.onKeyDown(e)}),[]),Se=e.useCallback((function(e){null===o||void 0===o||o(e),ee({type:"SET_FILTER",payload:{filter:e}})}),[o]),xe=e.useCallback((function(e){var t;if(e){var n=fD(e,pD(oe));"number"===typeof n&&-1!==n&&(null===(t=null===oe||void 0===oe?void 0:oe.current)||void 0===t||t.activateItem(n,!0))}}),[]);ED({onChange:xe,open:le,disabled:W}),e.useEffect((function(){var e;le?(!function(e){var t,n=pD(e),i=n[0]&&"label"in n[0];null===(t=null===e||void 0===e?void 0:e.current)||void 0===t||t.activateItem(i?1:0,!1)}(oe),W&&(null===(e=re.current)||void 0===e||e.focus())):Se("")}),[le,W,Se]);var Le=Object.assign({},"max"===E&&{width:E}),Ee={};"number"===typeof E&&(Ee.width=E);var De=e.useCallback((function(){return de(!1)}),[de]),Ne=t.onFocus,Me=t.onBlur,Te=Ub({onFocusWithin:Ne,onBlurWithin:e.useCallback((function(e){null===Me||void 0===Me||Me(e),De()}),[De,Me])}).focusWithinProps;return e.createElement("div",Object.assign({ref:te,className:$b(Le,v)},Te,{style:Ee}),e.createElement(uw,{toggleOpen:de,hasClear:U,clearValue:fe,ref:ae,className:m,qa:y,name:g,view:O,size:R,pin:Z,label:S,placeholder:x,selectedOptionsContent:ye,error:N,open:le,disabled:B,onKeyDown:Ce,renderControl:a,value:ue,popupId:"select-popup-".concat(ve),selectId:"select-".concat(ve),activeIndex:ce}),e.createElement(xw,{ref:te,className:_,controlRef:ie,width:D,open:le,handleClose:De,disablePortal:V,virtualized:be,mobile:$,id:"select-popup-".concat(ve)},W&&e.createElement(Dw,{ref:re,size:R,value:J,placeholder:L,onChange:Se,onKeyDown:ke,renderFilter:s}),_e.length||t.loading?e.createElement(SD,{ref:oe,size:R,value:ue,mobile:$,flattenOptions:_e,multiple:j,virtualized:be,onOptionClick:we,renderOption:u,renderOptionGroup:l,getOptionHeight:h,getOptionGroupHeight:f,loading:t.loading,onLoadMore:t.onLoadMore,selectId:"select-".concat(ve),onChangeActive:pe}):e.createElement(LD,{filter:J,renderEmptyOptions:d})))}));MD.Option=function(e){return null},MD.OptionGroup=function(e){return null};var TD,ID=(0,ht.Z)("storage-disk-progress-bar");!function(e){e[e.Grey=0]="Grey",e[e.Green=1]="Green",e[e.Blue=2]="Blue",e[e.Yellow=3]="Yellow",e[e.Orange=4]="Orange",e[e.Red=5]="Red"}(TD||(TD={}));var OD=Object.entries(TD).reduce((function(e,t){var n=(0,ne.Z)(t,2),i=n[0],r=n[1];return Rt(Rt({},e),{},(0,wt.Z)({},r,i))}),{});function AD(t){var n=t.diskAllocatedPercent,i=void 0===n?-1:n,r=t.severity,o=t.compact,a=tv(Mi),s=(0,ne.Z)(a,1)[0],u={inverted:s,compact:o},l=void 0!==r&&OD[r];return l&&(u[l.toLocaleLowerCase()]=!0),(0,Nl.jsx)("div",{className:ID(u),role:"meter","aria-label":"Disk allocated space","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":i,children:o?(0,Nl.jsx)("div",{className:ID("filled"),style:{width:"100%"}}):i>=0&&(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsx)("div",{className:ID("filled"),style:{width:"".concat(s?100-i:i,"%")}}),(0,Nl.jsx)("div",{className:ID("filled-title"),children:"".concat(Math.round(i),"%")})]})})}var RD=TD.Grey,PD=ws(1,2,["success","warning","danger"]),ZD={"block-4-2":ws(1,2,["success","warning","danger"]),"mirror-3-dc":ws(1,3,["success","warning","danger"])},FD=function(e){var t;return(void 0!==(t=e.ErasureSpecies)&&t in ZD?ZD[e.ErasureSpecies]:PD)(e.Degraded)},jD=ws(80,85,["success","warning","danger"]),HD=ws(80,85,["Green","Yellow","Red"]),BD=ws(85,95,[pa.Green,pa.Yellow,pa.Red]),zD=JSON.parse('{"label":"Usage:","default_value":"Any","groups_count":["{{count}} group","{{count}} groups","{{count}} groups","No groups"]}'),WD=JSON.parse('{"label":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435:","default_value":"\u041b\u044e\u0431\u043e\u0435","groups_count":["{{count}} \u0433\u0440\u0443\u043f\u043f\u0430","{{count}} \u0433\u0440\u0443\u043f\u043f\u044b","{{count}} \u0433\u0440\u0443\u043f\u043f","\u041d\u0435\u0442 \u0433\u0440\u0443\u043f\u043f"]}'),VD="ydb-usage-filter";Va.registerKeyset(Fa.En,VD,zD),Va.registerKeyset(Fa.Ru,VD,WD);var YD,UD,KD=Va.keyset(VD),qD=(0,ht.Z)("usage-filter"),GD=function(t){var n=t.className,i=t.value,r=void 0===i?[]:i,o=t.groups,a=void 0===o?[]:o,s=t.onChange,u=t.debounce,l=void 0===u?200:u,c=(0,e.useState)(r),d=(0,ne.Z)(c,2),h=d[0],f=d[1],p=(0,e.useRef)();(0,e.useEffect)((function(){f((function(e){return e.join(",")!==r.join(",")?r:e}))}),[r]);var g=(0,e.useMemo)((function(){return a.map((function(e){var t=e.threshold,n=e.count;return{value:String(t),text:"".concat(t,"%"),data:{count:n}}}))}),[a]),v=Math.max.apply(Math,(0,Ct.Z)(a.map((function(e){return e.count}))));return(0,Nl.jsx)(MD,{className:qD(null,n),label:KD("label"),value:h,placeholder:KD("default_value"),options:g,multiple:!0,onUpdate:function(e){f(e),window.clearTimeout(p.current),p.current=window.setTimeout((function(){null===s||void 0===s||s(e)}),l)},renderOption:function(e){var t=e.value,n=e.data,i=e.text;return(0,Nl.jsxs)("div",{className:qD("option"),children:[(0,Nl.jsx)(hy,{className:qD("option-title"),status:HD(Number(t)),name:i,size:"xs"}),(0,Nl.jsxs)("div",{className:qD("option-meta"),children:[KD("groups_count",{count:n.count}),(0,Nl.jsx)("div",{className:qD("option-bar"),style:{width:"".concat(n.count/v*100,"%")}})]})]})},getOptionHeight:function(){return 50},popupWidth:280,disabled:0===a.length})},$D=(YD={},(0,wt.Z)(YD,Ou,"Groups"),(0,wt.Z)(YD,Au,"Nodes"),YD),QD=function(e){var t=e.value,n=e.onChange;return(0,Nl.jsxs)(Dy,{value:t,onUpdate:n,qa:"storage-type-filter",children:[(0,Nl.jsx)(Dy.Option,{value:Ou,children:$D[Ou]}),(0,Nl.jsx)(Dy.Option,{value:Au,children:$D[Au]})]})},XD=(UD={},(0,wt.Z)(UD,Iu.all,"All"),(0,wt.Z)(UD,Iu.missing,"Degraded"),(0,wt.Z)(UD,Iu.space,"Out of Space"),UD),JD=function(e){var t=e.value,n=e.onChange;return(0,Nl.jsxs)(Dy,{value:t,onUpdate:n,qa:"storage-visible-entities-filter",children:[(0,Nl.jsx)(Dy.Option,{value:Iu.missing,children:XD[Iu.missing]}),(0,Nl.jsx)(Dy.Option,{value:Iu.space,children:XD[Iu.space]}),(0,Nl.jsx)(Dy.Option,{value:Iu.all,children:XD[Iu.all]})]})},eN=JSON.parse('{"groups":"Groups","nodes":"Nodes","controls_groups-search-placeholder":"Group ID, Pool name","controls_nodes-search-placeholder":"Node ID, FQDN"}'),tN=JSON.parse('{"groups":"\u0413\u0440\u0443\u043f\u043f\u044b","nodes":"\u041d\u043e\u0434\u044b","controls_groups-search-placeholder":"ID \u0433\u0440\u0443\u043f\u043f\u044b, \u0438\u043c\u044f \u043f\u0443\u043b\u0430","controls_nodes-search-placeholder":"ID \u0443\u0437\u043b\u0430, FQDN"}'),nN="ydb-storage";Va.registerKeyset(Fa.En,nN,eN),Va.registerKeyset(Fa.Ru,nN,tN);var iN=Va.keyset(nN),rN=(0,ht.Z)("global-storage"),oN=function(e){var t=e.searchValue,n=e.handleSearchValueChange,i=e.withTypeSelector,r=e.storageType,o=e.handleStorageTypeChange,a=e.visibleEntities,s=e.handleVisibleEntitiesChange,u=e.nodesUptimeFilter,l=e.handleNodesUptimeFilterChange,c=e.withGroupsUsageFilter,d=e.groupsUsageFilter,h=e.groupsUsageFilterOptions,f=e.handleGroupsUsageFilterChange,p=e.entitiesCountCurrent,g=e.entitiesCountTotal,v=e.entitiesLoading,m=r===Au,_=iN(m?"nodes":"groups");return(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)(fb,{value:t,onChange:n,placeholder:iN(m?"controls_nodes-search-placeholder":"controls_groups-search-placeholder"),className:rN("search")}),i&&(0,Nl.jsx)(QD,{value:r,onChange:o}),(0,Nl.jsx)(JD,{value:a,onChange:s}),m&&(0,Nl.jsx)(zb,{value:u,onChange:l}),!m&&c&&(0,Nl.jsx)(GD,{value:d,onChange:f,groups:h}),(0,Nl.jsx)(Bb,{label:_,loading:v,total:g,current:p})]})},aN=function(e){return(0,Ct.Z)(Array(e).keys())},sN="infiniteTable/INIT_CHUNK",uN="infiniteTable/REMOVE_CHUNK",lN="infiniteTable/SET_CHUNK_LOADING",cN="infiniteTable/SET_CHUNK_DATA",dN="infiniteTable/SET_CHUNK_ERROR",hN="infiniteTable/RESET_CHUNKS",fN=function(e,t){return{type:cN,data:{id:e,data:t}}},pN=function(e,t){return{type:dN,data:{id:e,error:t}}},gN=function(e){return{type:sN,data:{id:e}}},vN=function(e){return{type:lN,data:{id:e}}},mN=(0,ht.Z)("ydb-virtual-table"),_N=function(e){var t=e.order;return(0,Nl.jsx)("svg",{className:mN("icon",{desc:-1===t}),viewBox:"0 0 10 6",width:"10",height:"6",children:(0,Nl.jsx)("path",{fill:"currentColor",d:"M0 5h10l-5 -5z"})})},yN=function(e){var t=e.sortOrder,n=e.sortable,i=e.defaultSortOrder;return n?(0,Nl.jsx)("span",{className:mN("sort-icon",{shadow:!t}),children:(0,Nl.jsx)(_N,{order:t||i})}):null},bN=function(t){var n=t.columns,i=t.onSort,r=t.defaultSortOrder,o=void 0===r?-1:r,a=t.rowHeight,s=void 0===a?40:a,u=(0,e.useState)({}),l=(0,ne.Z)(u,2),c=l[0],d=l[1];return(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)("colgroup",{children:n.map((function(e){return(0,Nl.jsx)("col",{style:{width:"".concat(e.width,"px")}},e.name)}))}),(0,Nl.jsx)("thead",{className:mN("head"),children:(0,Nl.jsx)("tr",{children:n.map((function(e){var t,n=null!==(t=e.header)&&void 0!==t?t:e.name,r=c.columnId===e.name?c.sortOrder:void 0;return(0,Nl.jsx)("th",{className:mN("th",{align:e.align,sortable:e.sortable},e.className),style:{height:"".concat(s,"px")},onClick:function(){!function(e){var t={};if(e===c.columnId){if(c.sortOrder&&c.sortOrder!==o)return d(t),void(null===i||void 0===i||i(t));t={sortOrder:1===c.sortOrder?-1:1,columnId:e}}else t={sortOrder:o,columnId:e};null===i||void 0===i||i(t),d(t)}(e.name)},children:(0,Nl.jsxs)("div",{className:mN("head-cell"),children:[n,(0,Nl.jsx)(yN,{sortOrder:r,sortable:e.sortable,defaultSortOrder:o})]})},e.name)}))})})]})},wN=function(e){var t=e.children,n=e.className,i=e.height,r=e.align,o=void 0===r?"left":r;return(0,Nl.jsx)("td",{className:mN("td",{align:o},n),style:{height:"".concat(i,"px")},children:t})},CN=function(e){var t=e.index,n=e.columns,i=e.height;return(0,Nl.jsx)("tr",{className:mN("row"),children:n.map((function(e){return(0,Nl.jsx)(wN,{height:i,align:e.align,className:e.className,children:(0,Nl.jsx)(gb,{style:{width:"80%",height:"50%"}})},"".concat(e.name).concat(t))}))})},kN=function(e){var t=e.row,n=e.index,i=e.columns,r=e.getRowClassName,o=e.height,a=null===r||void 0===r?void 0:r(t);return(0,Nl.jsx)("tr",{className:mN("row",a),children:i.map((function(e){return(0,Nl.jsx)(wN,{height:o,align:e.align,className:e.className,children:e.render({row:t,index:n})},"".concat(e.name).concat(n))}))})},SN=function(e){var t=e.columns,n=e.children;return(0,Nl.jsx)("tr",{className:mN("row",{empty:!0}),children:(0,Nl.jsx)("td",{colSpan:t.length,className:mN("td"),children:n})})},xN=(0,e.memo)((function(t){var n,i=t.id,r=t.chunkSize,o=t.rowHeight,a=t.columns,s=t.chunkData,u=t.observer,l=t.getRowClassName,c=(0,e.useRef)(null);(0,e.useEffect)((function(){var e=c.current;return e&&u.observe(e),function(){e&&u.unobserve(e)}}),[u]);var d=null===s||void 0===s||null===(n=s.data)||void 0===n?void 0:n.length,h=d?d*o:r*o;return(0,Nl.jsx)("tbody",{ref:c,id:i.toString(),style:{height:"".concat(h,"px")},children:function(){var e;return s&&s.active?s.loading||s.error?aN(r).map((function(e){return(0,Nl.jsx)(CN,{columns:a,height:o,index:e},e)})):null===(e=s.data)||void 0===e?void 0:e.map((function(e,t){return(0,Nl.jsx)(kN,{index:t,row:e,columns:a,height:o,getRowClassName:l},t)})):null}()})})),LN=JSON.parse('{"empty":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445"}'),EN="ydb-virtual-table";Va.registerKeyset(Fa.En,EN,{empty:"No data"}),Va.registerKeyset(Fa.Ru,EN,LN);var DN=Va.keyset(EN),NN=function(t){var n=t.limit,i=t.fetchData,r=t.columns,o=t.getRowClassName,a=t.rowHeight,s=void 0===a?40:a,u=t.parentContainer,l=t.initialSortParams,c=t.renderControls,d=t.renderEmptyDataMessage,h=t.renderErrorMessage,f=t.dependencyArray,p=(0,e.useRef)(!1),g=(0,e.useRef)(null),v=(0,e.useReducer)((function(e,t){switch(t.type){case cN:var n=t.data,i=n.id,r=n.data;return Rt(Rt({},e),{},(0,wt.Z)({},i,{loading:!1,wasLoaded:!0,active:!0,data:r}));case dN:var o=t.data,a=o.id,s=o.error;return Rt(Rt({},e),{},(0,wt.Z)({},a,{loading:!1,wasLoaded:!0,active:!0,error:s}));case sN:var u=t.data.id;return Rt(Rt({},e),{},(0,wt.Z)({},u,{loading:!1,wasLoaded:!1,active:!0}));case lN:var l=t.data.id;return Rt(Rt({},e),{},(0,wt.Z)({},l,{loading:!0,wasLoaded:!1,active:!0}));case uN:var c=t.data.id,d=Rt({},e);return delete d[c],d;case hN:return{};default:return e}}),{}),m=(0,ne.Z)(v,2),_=m[0],y=m[1],b=(0,e.useState)(l),w=(0,ne.Z)(b,2),C=w[0],k=w[1],S=(0,e.useState)(n),x=(0,ne.Z)(S,2),L=x[0],E=x[1],D=(0,e.useState)(0),N=(0,ne.Z)(D,2),M=N[0],T=N[1],I=(0,e.useState)(),O=(0,ne.Z)(I,2),A=O[0],R=O[1],P=(0,e.useState)({}),Z=(0,ne.Z)(P,2),F=Z[0],j=Z[1],H=(0,e.useCallback)(function(){var e=dn(fn().mark((function e(t){var r;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:y(vN(t)),r=setTimeout(dn(fn().mark((function e(){var r,o,a,s,u;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=Number(t)*n,e.prev=1,e.next=4,i(n,r,C);case 4:o=e.sent,a=o.data,s=o.total,u=o.found,E(s),T(u),p.current=!0,y(fN(t,a)),e.next=18;break;case 12:if(e.prev=12,e.t0=e.catch(1),null===e.t0||void 0===e.t0||!e.t0.isCancelled){e.next=16;break}return e.abrupt("return");case 16:y(pN(t,e.t0)),R(e.t0);case 18:case"end":return e.stop()}}),e,null,[[1,12]])}))),200),j((function(e){return e[t]=r,e}));case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[i,n,C]),B=(0,e.useCallback)((function(e){y(gN(e))}),[]),z=(0,e.useCallback)((function(e){if(y(function(e){return{type:uN,data:{id:e}}}(e)),F[e]){var t=F[e];window.clearTimeout(t),delete F[e]}}),[F]);(0,e.useEffect)((function(){for(var e=0,t=Object.keys(_);e<t.length;e++){var n=t[e],i=_[Number(n)];null===i||void 0===i||!i.active||null!==i&&void 0!==i&&i.loading||null!==i&&void 0!==i&&i.wasLoaded||H(n)}}),[H,_]),(0,e.useEffect)((function(){var e;(E(n),T(0),R(void 0),y({type:hN}),p.current=!1,u)?u.scrollTo(0,0):null===(e=g.current)||void 0===e||e.scrollTo(0,0);y(gN("0"))}),[f,n,u]);var W=function(e){k(e),function(){for(var e=0,t=Object.keys(_);e<t.length;e++){var n,i=t[e];null!==(n=_[Number(i)])&&void 0!==n&&n.active&&y(gN(i))}}()},V=function(t){var n=t.onEntry,i=t.onLeave,r=t.parentContainer,o=(0,e.useRef)();return(0,e.useEffect)((function(){return o.current=new IntersectionObserver((function(e){e.forEach((function(e){e.isIntersecting?n(e.target.id):i(e.target.id)}))}),{root:r,rootMargin:"100%"}),function(){var e;null===(e=o.current)||void 0===e||e.disconnect(),o.current=void 0}}),[r,n,i]),o.current}({onEntry:B,onLeave:z,parentContainer:u}),Y=M||n,U=Math.ceil(Y/n),K=function(){return p.current&&0===M?(0,Nl.jsx)("tbody",{children:(0,Nl.jsx)(SN,{columns:r,children:d?d():DN("empty")})}):!p.current&&A?(0,Nl.jsx)("tbody",{children:(0,Nl.jsx)(SN,{columns:r,children:h?h(A):(0,Nl.jsx)(Sb,{error:A})})}):V?aN(U).map((function(e){var t=_[e];return(0,Nl.jsx)(xN,{observer:V,id:e,chunkSize:n,rowHeight:s,columns:r,chunkData:t,getRowClassName:o},e)})):null},q=function(){return(0,Nl.jsxs)("table",{className:mN("table"),children:[(0,Nl.jsx)(bN,{columns:r,onSort:W}),K()]})};return(0,Nl.jsx)("div",{ref:g,className:mN(null),children:c?(0,Nl.jsxs)(yb,{children:[(0,Nl.jsx)(yb.Controls,{children:c({inited:p.current,totalEntities:L,foundEntities:M})}),(0,Nl.jsx)(yb.Table,{children:q()})]}):q()})},MN=JSON.parse('{"default_message":"Everything is fine!","default_button_label":"Show All"}'),TN=JSON.parse('{"default_message":"\u0412\u0441\u0451 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435!","default_button_label":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435"}'),IN="ydb-storage-empty-filter";Va.registerKeyset(Fa.En,IN,MN),Va.registerKeyset(Fa.Ru,IN,TN);var ON=Va.keyset(IN),AN=function(e){var t=e.title,n=e.message,i=void 0===n?ON("default_message"):n,r=e.showAll,o=void 0===r?ON("default_button_label"):r,a=e.onShowAll;return(0,Nl.jsx)(Pb,{image:(0,Nl.jsx)(Ay,{name:"thumbsUp"}),position:"left",title:t,description:i,actions:a&&[(0,Nl.jsx)(_o.z,{onClick:a,children:o},"show-all")]})},RN=JSON.parse('{"empty.default":"No such groups","empty.out_of_space":"No groups with out of space errors","empty.degraded":"No degraded groups","show_all":"Show all groups","encrypted":"Encrypted group"}'),PN=JSON.parse('{"empty.default":"\u041d\u0435\u0442 \u0433\u0440\u0443\u043f\u043f","empty.out_of_space":"\u041d\u0435\u0442 \u0433\u0440\u0443\u043f\u043f, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u043e","empty.degraded":"\u041d\u0435\u0442 \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0445 \u0433\u0440\u0443\u043f\u043f","show_all":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u0433\u0440\u0443\u043f\u043f\u044b","encrypted":"\u0417\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430"}'),ZN="ydb-storage-groups";Va.registerKeyset(Fa.En,ZN,RN),Va.registerKeyset(Fa.Ru,ZN,PN);var FN,jN=Va.keyset(ZN),HN=function(e){var t,n=e.visibleEntities,i=e.onShowAll;return n===Iu.space&&(t=jN("empty.out_of_space")),n===Iu.missing&&(t=jN("empty.degraded")),t?(0,Nl.jsx)(AN,{title:t,showAll:jN("show_all"),onShowAll:i}):null};function BN(){return BN=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},BN.apply(this,arguments)}var zN=function(t){return e.createElement("svg",BN({viewBox:"0 0 18 18",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},t),FN||(FN=e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.692 1.566a.75.75 0 01.616 0l6 2.7a.75.75 0 01.442.684v2.296a9.75 9.75 0 01-5.936 8.973l-.52.221a.75.75 0 01-.587 0l-.52-.22A9.75 9.75 0 012.25 7.245V4.95a.75.75 0 01.442-.684l6-2.7zM3.75 5.435v1.81a8.25 8.25 0 005.023 7.594l.227.096.227-.096a8.25 8.25 0 005.023-7.593V5.435L9 3.072 3.75 5.435zm6 3.364a1.5 1.5 0 10-1.5 0v2.451a.75.75 0 001.5 0V8.8z"})))},WN=(0,ht.Z)("stack"),VN=function(t){var n=t.children,i=t.className;return(0,Nl.jsx)("div",{className:WN(null,i),children:e.Children.map(n,(function(t,n){return e.isValidElement(t)?(0,Nl.jsx)("div",{className:WN("layer"),style:(0,wt.Z)({},"--ydb-stack-level",n),children:t}):null}))})},YN=["children","className","wrapperClassName"],UN=(0,ht.Z)("ydb-cell-with-popover");function KN(e){var t=e.children,n=e.className,i=e.wrapperClassName,r=nn(e,YN);return(0,Nl.jsx)("div",{className:UN(null,i),children:(0,Nl.jsx)(Xy,Rt(Rt({className:UN("popover",n)},r),{},{children:t}))})}var qN=["value","overloadThreshold","theme"],GN=(0,ht.Z)("ydb-usage-label");function $N(e){var t=e.value,n=e.overloadThreshold,i=void 0===n?90:n,r=e.theme,o=nn(e,qN);return(0,Nl.jsxs)(Pg,Rt(Rt({theme:r,className:GN({overload:Number(t)>=i})},o),{},{children:[t||0,"%"]}))}var QN="storage",XN="tablets",JN="overview",eM="structure",tM=[{id:JN,name:"Overview"},{id:QN,name:"Storage"},{id:eM,name:"Structure"},{id:XN,name:"Tablets"}];function nM(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _g(bg.node,{id:e,activeTab:JN},t)}var iM=["data","nodes"],rM=(0,ht.Z)("pdisk-storage-popup"),oM=[pa.Orange,pa.Red,pa.Yellow],aM=function(e,t){var n,i=e.AvailableSize,r=e.TotalSize,o=e.State,a=e.PDiskId,s=e.NodeId,u=e.Path,l=e.Realtime,c=e.Device,d=[{label:"PDisk",value:(n={NodeId:s,PDiskId:a},(n.NodeId&&n.PDiskId?"".concat(n.NodeId,"-").concat(n.PDiskId):void 0)||"-")},{label:"State",value:o||"not available"},{label:"Type",value:Zu(e)||"unknown"}];return s&&d.push({label:"Node Id",value:s}),t&&s&&t.get(s)&&d.push({label:"Host",value:t.get(s)}),u&&d.push({label:"Path",value:u}),d.push({label:"Available",value:"".concat(hr(i)," of ").concat(hr(r))}),l&&oM.includes(l)&&d.push({label:"Realtime",value:l}),c&&oM.includes(c)&&d.push({label:"Device",value:c}),d},sM=function(t){var n=t.data,i=t.nodes,r=nn(t,iM),o=(0,e.useMemo)((function(){return aM(n,i)}),[n,i]);return(0,Nl.jsx)(J_,Rt(Rt({contentClassName:rM(),placement:["top","bottom"],offset:[0,12]},r),{},{children:(0,Nl.jsx)(Tl,{title:"PDisk",info:o,size:"s"})}))},uM=["data","nodes"],lM=(0,ht.Z)("vdisk-storage-popup"),cM=function(t){var n=t.data,i=t.nodes,r=nn(t,uM),o=Fu(n),a=(0,e.useMemo)((function(){return o?function(e){var t,n,i,r,o,a,s=e.VDiskId,u=e.VDiskState,l=e.SatisfactionRank,c=e.DiskSpace,d=e.FrontQueues,h=e.Replicated,f=e.UnsyncedVDisks,p=e.AllocatedSize,g=e.ReadThroughput,v=e.WriteThroughput,m=e.StoragePoolName,_=[{label:"VDisk",value:us(s)},{label:"State",value:null!==u&&void 0!==u?u:"not available"}];return m&&_.push({label:"StoragePool",value:m}),l&&(null===(t=l.FreshRank)||void 0===t?void 0:t.Flag)!==pa.Green&&_.push({label:"Fresh",value:null===(o=l.FreshRank)||void 0===o?void 0:o.Flag}),l&&(null===(n=l.LevelRank)||void 0===n?void 0:n.Flag)!==pa.Green&&_.push({label:"Level",value:null===(a=l.LevelRank)||void 0===a?void 0:a.Flag}),l&&null!==(i=l.FreshRank)&&void 0!==i&&i.RankPercent&&_.push({label:"Fresh",value:l.FreshRank.RankPercent}),l&&null!==(r=l.LevelRank)&&void 0!==r&&r.RankPercent&&_.push({label:"Level",value:l.LevelRank.RankPercent}),c&&c!==pa.Green&&_.push({label:"Space",value:c}),d&&d!==pa.Green&&_.push({label:"FrontQueues",value:d}),h||_.push({label:"Replicated",value:"NO"}),f&&_.push({label:"UnsyncVDisks",value:f}),Number(p)&&_.push({label:"Allocated",value:hr(p)}),Number(g)&&_.push({label:"Read",value:dr(g)}),Number(v)&&_.push({label:"Write",value:dr(v)}),_}(n):function(e){var t=e.NodeId,n=e.PDiskId,i=e.VSlotId,r=e.StoragePoolName,o=[{label:"State",value:"not available"}];return r&&o.push({label:"StoragePool",value:r}),o.push({label:"NodeId",value:null!==t&&void 0!==t?t:"\u2013"},{label:"PDiskId",value:null!==n&&void 0!==n?n:"\u2013"},{label:"VSlotId",value:null!==i&&void 0!==i?i:"\u2013"}),o}(n)}),[n,o]),s=(0,e.useMemo)((function(){return o&&n.PDisk&&aM(n.PDisk,i)}),[n,i,o]);return(0,Nl.jsxs)(J_,Rt(Rt({contentClassName:lM(),placement:["top","bottom"],offset:[0,12]},r),{},{children:[n.DonorMode&&(0,Nl.jsx)(Pg,{className:lM("donor-label"),children:"Donor"}),(0,Nl.jsx)(Tl,{title:"VDisk",info:a,size:"s"}),s&&(0,Nl.jsx)(Tl,{title:"PDisk",info:s,size:"s"})]}))},dM=(0,ht.Z)("vdisk-storage"),hM={Initial:TD.Yellow,LocalRecoveryError:TD.Red,SyncGuidRecoveryError:TD.Red,SyncGuidRecovery:TD.Yellow,PDiskError:TD.Red,OK:TD.Green},fM=function(e){var t;return e&&null!==(t=hM[e])&&void 0!==t?t:RD},pM=function(e){var t;return e&&null!==(t=TD[e])&&void 0!==t?t:TD.Grey},gM=function(t){var n,i,r=t.data,o=void 0===r?{}:r,a=t.nodes,s=t.compact,u=Fu(o),l=(0,e.useState)(fM(u?o.VDiskState:void 0)),c=(0,ne.Z)(l,2),d=c[0],h=c[1],f=(0,e.useState)(!1),p=(0,ne.Z)(f,2),g=p[0],v=p[1],m=(0,e.useRef)(null);(0,e.useEffect)((function(){if(u){var e=o.DiskSpace,t=o.VDiskState,n=o.FrontQueues,i=o.Replicated,r=o.DonorMode;if(t){var a=pM(e),s=fM(t),l=Math.min(TD.Orange,pM(n)),c=Math.max(a,s,l);i||r||c!==TD.Green||(c=TD.Blue),h(c)}else h(RD)}else h(RD)}),[o,u]);var _=(0,e.useMemo)((function(){if(u){var e=o.AvailableSize,t=o.AllocatedSize,n=o.PDisk,i=e||(null===n||void 0===n?void 0:n.AvailableSize);if(i)return isNaN(Number(t))?void 0:100*Number(t)/(Number(i)+Number(t))}}),[o,u]);return(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsx)(cM,{data:o,nodes:a,anchorRef:m,open:g}),(0,Nl.jsx)("div",{className:dM(),ref:m,onMouseEnter:function(){v(!0)},onMouseLeave:function(){v(!1)},children:o.NodeId&&u?(0,Nl.jsx)(vv,{to:_g(bg.node,{id:o.NodeId,activeTab:eM},{pdiskId:null!==(n=o.PDiskId)&&void 0!==n?n:null===(i=o.PDisk)||void 0===i?void 0:i.PDiskId,vdiskId:us(o.VDiskId)}),className:dM("content"),children:(0,Nl.jsx)(AD,{diskAllocatedPercent:_,severity:d,compact:s})}):(0,Nl.jsx)(AD,{diskAllocatedPercent:_,severity:d,compact:s})})]})},vM=(0,ht.Z)("global-storage-groups"),mM="Kind",_M="Erasure",yM="GroupId",bM="Used",wM="Limit",CM="Usage",kM="UsedSpaceFlag",SM="Read",xM="Write",LM="VDisks",EM="Degraded",DM={name:"PoolName",header:"Pool Name",width:250,render:function(e){var t,n=e.row,i=null===(t=n.PoolName)||void 0===t?void 0:t.split("/");return i&&(0,Nl.jsx)(KN,{wrapperClassName:vM("pool-name-wrapper"),content:n.PoolName,placement:["right"],behavior:Wy.Immediate,children:i[i.length-1]})},align:pi.LEFT},NM={name:mM,header:"Type",width:100,align:pi.LEFT,render:function(e){var t=e.row;return(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)(Pg,{children:t.Kind||"\u2014"}),"\xa0",t.Encryption&&(0,Nl.jsx)(Xy,{content:jN("encrypted"),placement:"right",behavior:Wy.Immediate,children:(0,Nl.jsx)(Pg,{children:(0,Nl.jsx)(yo.J,{data:zN})})})]})},sortable:!1},MM={name:_M,header:"Erasure",width:100,render:function(e){var t=e.row;return t.ErasureSpecies?t.ErasureSpecies:"-"},align:pi.LEFT,sortable:!1},TM={name:EM,header:"Degraded",width:100,render:function(e){var t=e.row;return t.Degraded?(0,Nl.jsxs)(Pg,{theme:FD(t),children:["Degraded: ",t.Degraded]}):"-"},align:pi.LEFT,defaultOrder:pi.DESCENDING},IM={name:CM,header:"Usage",width:100,render:function(e){var t=e.row;return t.Limit?(0,Nl.jsx)($N,{value:t.Usage,theme:jD(t.Usage)}):"-"},sortAccessor:function(e){return e.Limit?ju(e):null},align:pi.LEFT,sortable:!1},OM={name:yM,header:"Group ID",width:130,render:function(e){var t=e.row;return(0,Nl.jsx)("span",{className:vM("group-id"),children:t.GroupID})},sortAccessor:function(e){return Number(e.GroupID)},align:pi.RIGHT,sortable:!1},AM={name:bM,header:"Used",width:100,render:function(e){return hr(e.row.Used,!0)},align:pi.RIGHT,sortable:!1},RM={name:wM,header:"Limit",width:100,render:function(e){return hr(e.row.Limit)},align:pi.RIGHT,sortable:!1},PM={name:kM,header:"Space",width:110,render:function(e){var t=e.row.UsedSpaceFlag,n="Red";return t<100?n="Green":t<1e4?n="Yellow":t<1e6&&(n="Orange"),(0,Nl.jsx)(hy,{status:n})},align:pi.CENTER},ZM={name:SM,header:"Read",width:100,render:function(e){var t=e.row;return t.Read?dr(t.Read):"-"},align:pi.RIGHT},FM={name:xM,header:"Write",width:100,render:function(e){var t=e.row;return t.Write?dr(t.Write):"-"},align:pi.RIGHT},jM=function(e){return{name:LM,className:vM("vdisks-column"),header:"VDisks",render:function(t){var n,i=t.row;return(0,Nl.jsx)("div",{className:vM("vdisks-wrapper"),children:null===(n=i.VDisks)||void 0===n?void 0:n.map((function(t){var n=t.Donors;return n&&n.length>0?(0,Nl.jsxs)(VN,{className:vM("vdisks-item"),children:[(0,Nl.jsx)(gM,{data:t,nodes:e}),n.map((function(t){var n=Fu(t);return(0,Nl.jsx)(gM,{data:n?t:Rt(Rt({},t),{},{DonorMode:!0}),nodes:e},us(n?t.VDiskId:t))}))]},us(t.VDiskId)):(0,Nl.jsx)("div",{className:vM("vdisks-item"),children:(0,Nl.jsx)(gM,{data:t,nodes:e})},us(t.VDiskId))}))})},align:pi.CENTER,width:900}},HM=function(){return[OM,NM,MM,IM,AM,RM]},BM=function(e,t){var n=function(e){return[DM,NM,MM,TM,IM,OM,AM,RM,PM,ZM,FM,jM(e)]}(e),i=function(e,t){return t===Iu.space?e.filter((function(e){return e.name!==EM})):t===Iu.missing?e.filter((function(e){return e.name!==kM})):e.filter((function(e){return e.name!==EM&&e.name!==kM}))}(n,t);return i.map((function(e){return Rt(Rt({},e),{},{sortable:(t=e.name,Object.values(Hu).includes(t))});var t}))},zM=["limit","offset"],WM=function(e,t){return"getStorageGroups|offset".concat(t,"|limit").concat(e)},VM=function(){var e=dn(fn().mark((function e(t){var n,i,r,o,a;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.limit,i=t.offset,r=nn(t,zM),e.next=3,window.api.getStorageInfo(Rt({version:Eu.v2,limit:n,offset:i},r),{concurrentId:WM(n,i)});case 3:return o=e.sent,a=Ku(o),e.abrupt("return",{data:a.groups||[],found:a.found||0,total:a.total||0});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),YM=function(t){var n=t.searchValue,i=t.visibleEntities,r=t.tenant,o=t.nodeId,a=t.nodesMap,s=t.onShowAll,u=t.parentContainer,l=t.renderControls,c=t.renderErrorMessage,d=(0,e.useMemo)((function(){return[n,i,r,o]}),[n,i,r,o]),h=(0,e.useCallback)(function(){var e=dn(fn().mark((function e(t,a){var s,u,l,c=arguments;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=(s=c.length>2&&void 0!==c[2]?c[2]:{}).sortOrder,l=s.columnId,e.next=3,VM({limit:t,offset:a,filter:n,visibleEntities:i,tenant:r,nodeId:o,sortOrder:u,sortValue:l});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),[o,n,r,i]),f=(0,e.useMemo)((function(){return BM(a,i)}),[a,i]);return(0,Nl.jsx)(NN,{parentContainer:u,columns:f,fetchData:h,limit:50,renderControls:l,renderErrorMessage:c,renderEmptyDataMessage:function(){return i!==Iu.all?(0,Nl.jsx)(HN,{onShowAll:s,visibleEntities:i}):jN("empty.default")},dependencyArray:d})},UM=JSON.parse('{"empty.default":"No such nodes","empty.out_of_space":"No nodes with out of space errors","empty.degraded":"No degraded nodes","empty.small_uptime":"No nodes with uptime < 1h","empty.several_filters":"No nodes match current filters combination","show_all":"Show all nodes"}'),KM=JSON.parse('{"empty.default":"\u041d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432","empty.out_of_space":"\u041d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u043e","empty.degraded":"\u041d\u0435\u0442 \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0445 \u0443\u0437\u043b\u043e\u0432","empty.small_uptime":"\u041d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432 \u0441 uptime < 1h","empty.several_filters":"\u041d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432, \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u043e\u0434 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b","show_all":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u0443\u0437\u043b\u044b"}'),qM="ydb-storage-nodes";Va.registerKeyset(Fa.En,qM,UM),Va.registerKeyset(Fa.Ru,qM,KM);var GM,$M=Va.keyset(qM),QM=function(e){var t,n=e.visibleEntities,i=e.nodesUptimeFilter,r=e.onShowAll;return n===Iu.space&&(t=$M("empty.out_of_space")),n===Iu.missing&&(t=$M("empty.degraded")),i===va.SmallUptime&&(t=$M("empty.small_uptime")),n!==Iu.all&&i!==va.All&&(t=$M("empty.several_filters")),t?(0,Nl.jsx)(AN,{title:t,showAll:$M("show_all"),onShowAll:r}):null},XM=(0,ht.Z)("ydb-node-host-wrapper"),JM=function(e){var t=e.node,n=e.getNodeRef;if(!t.Host)return(0,Nl.jsx)("span",{children:"\u2014"});var i=!Ca(t),r=i&&n?n(t)+"internal":void 0,o=i?nM(t.NodeId,{tenantName:t.TenantName}):void 0;return(0,Nl.jsx)(KN,{disabled:!i,content:(0,Nl.jsx)(Zl,{data:t}),placement:["top","bottom"],behavior:Wy.Immediate,children:(0,Nl.jsxs)("div",{className:XM("host-wrapper"),children:[(0,Nl.jsx)(hy,{name:t.Host,status:t.SystemState,path:o,hasClipboardButton:!0,className:XM("host")}),r&&(0,Nl.jsx)(_o.z,{size:"s",href:r,className:XM("external-button"),target:"_blank",children:(0,Nl.jsx)(Ob,{name:"external"})})]})})},eT=(0,ht.Z)("pdisk-storage"),tT=(GM={},(0,wt.Z)(GM,Tu.Initial,TD.Grey),(0,wt.Z)(GM,Tu.Normal,TD.Green),(0,wt.Z)(GM,Tu.InitialFormatRead,TD.Yellow),(0,wt.Z)(GM,Tu.InitialSysLogRead,TD.Yellow),(0,wt.Z)(GM,Tu.InitialCommonLogRead,TD.Yellow),(0,wt.Z)(GM,Tu.InitialFormatReadError,TD.Red),(0,wt.Z)(GM,Tu.InitialSysLogReadError,TD.Red),(0,wt.Z)(GM,Tu.InitialSysLogParseError,TD.Red),(0,wt.Z)(GM,Tu.InitialCommonLogReadError,TD.Red),(0,wt.Z)(GM,Tu.InitialCommonLogParseError,TD.Red),(0,wt.Z)(GM,Tu.CommonLoggerInitError,TD.Red),(0,wt.Z)(GM,Tu.OpenFileError,TD.Red),(0,wt.Z)(GM,Tu.ChunkQuotaError,TD.Red),(0,wt.Z)(GM,Tu.DeviceIoError,TD.Red),GM),nT=function(e){return function(e){return void 0!==e&&e in tT}(e)?tT[e]:RD},iT=function(t){var n=t.nodeId,i=t.data,r=void 0===i?{}:i,o=t.vDisks,a=(0,e.useMemo)((function(){return Rt(Rt({},r),{},{NodeId:n})}),[r,n]),s=(0,e.useState)(nT(a.State)),u=(0,ne.Z)(s,2),l=u[0],c=u[1],d=(0,e.useState)(!1),h=(0,ne.Z)(d,2),f=h[0],p=h[1],g=(0,e.useRef)(null),v=(0,e.useMemo)((function(){var e=a.AvailableSize,t=a.TotalSize;if(e&&t)return isNaN(Number(e))||isNaN(Number(t))?void 0:Math.round(100*(Number(t)-Number(e))/Number(t))}),[a]);(0,e.useEffect)((function(){var e,t=nT(a.State),n=BD(v||0);e=t!==RD&&n?Math.max(t,TD[n]):t,c(e)}),[a.State,v]);return(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsx)(sM,{data:a,anchorRef:g,open:f}),(0,Nl.jsxs)("div",{className:eT(),ref:g,children:[null!==o&&void 0!==o&&o.length?(0,Nl.jsx)("div",{className:eT("vdisks"),children:o.map((function(e){var t=e.Donors;return(0,Nl.jsx)("div",{className:eT("vdisks-item"),style:{flexGrow:Number(e.AllocatedSize)||1},children:t&&t.length?(0,Nl.jsxs)(VN,{className:eT("donors-stack"),children:[(0,Nl.jsx)(gM,{data:e,compact:!0}),t.map((function(e){var t=Fu(e);return(0,Nl.jsx)(gM,{compact:!0,data:t?e:Rt(Rt({},e),{},{DonorMode:!0})},us(t?e.VDiskId:e))}))]},us(e.VDiskId)):(0,Nl.jsx)(gM,{data:e,compact:!0})},us(e.VDiskId))}))}):null,(0,Nl.jsxs)(vv,{to:_g(bg.node,{id:n,activeTab:eM},{pdiskId:a.PDiskId||""}),className:eT("content"),onMouseEnter:function(){p(!0)},onMouseLeave:function(){p(!1)},children:[(0,Nl.jsx)(AD,{diskAllocatedPercent:v,severity:l}),(0,Nl.jsx)("div",{className:eT("media-type"),children:Zu(a)})]})]})]})},rT=(0,ht.Z)("global-storage-nodes"),oT=function(e){return rT("node",{unavailable:Ca(e)})},aT="NodeId",sT="Host",uT="DC",lT="Rack",cT="Uptime",dT="PDisks",hT="Missing",fT=function(e,t){var n=function(e){var t=null===e||void 0===e?void 0:e.getNodeRef;return[{name:aT,header:"Node ID",width:100,align:pi.RIGHT,render:function(e){return e.row.NodeId}},{name:sT,header:"Host",width:350,render:function(e){var n=e.row;return(0,Nl.jsx)(JM,{node:n,getNodeRef:t})},align:pi.LEFT},{name:uT,header:"DC",width:100,render:function(e){return e.row.DataCenter||"\u2014"},align:pi.LEFT},{name:lT,header:"Rack",width:100,render:function(e){return e.row.Rack||"\u2014"},align:pi.LEFT},{name:cT,header:"Uptime",width:130,sortAccessor:function(e){var t=e.StartTime;return t?-t:0},align:pi.RIGHT,render:function(e){return e.row.Uptime}},{name:hT,header:"Missing",width:100,align:pi.CENTER,defaultOrder:pi.DESCENDING,render:function(e){return e.row.Missing}},{name:dT,className:rT("pdisks-column"),header:"PDisks",render:function(e){var t,n=e.row;return(0,Nl.jsx)("div",{className:rT("pdisks-wrapper"),children:null===(t=n.PDisks)||void 0===t?void 0:t.map((function(e){var t,i=null===(t=n.VDisks)||void 0===t?void 0:t.filter((function(t){return t.PDiskId===e.PDiskId})).map((function(e){return Rt(Rt({},e),{},{NodeId:n.NodeId})}));return(0,Nl.jsx)("div",{className:rT("pdisks-item"),children:(0,Nl.jsx)(iT,{data:e,nodeId:n.NodeId,vDisks:i})},e.PDiskId)}))})},align:pi.CENTER,sortable:!1,width:900}]}(e),i=n.map((function(e){return Rt(Rt({},e),{},{sortable:Ea(e.name)})}));return t!==Iu.missing?i.filter((function(e){return e.name!==hT})):i},pT=["type","storage","limit","offset"],gT=function(e,t){return"getStorageNodes|offset".concat(t,"|limit").concat(e)},vT=function(){var e=dn(fn().mark((function e(t){var n,i,r,o,a,s,u,l,c;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.type,i=void 0===n?"static":n,r=t.storage,o=void 0===r||r,a=t.limit,s=t.offset,u=nn(t,pT),e.next=3,window.api.getNodes(Rt({type:i,storage:o,limit:a,offset:s},u),{concurrentId:gT(a,s)});case 3:return l=e.sent,c=Uu(l),e.abrupt("return",{data:c.nodes||[],found:c.found||0,total:c.total||0});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),mT=function(t){var n=t.searchValue,i=t.visibleEntities,r=t.nodesUptimeFilter,o=t.tenant,a=t.additionalNodesProps,s=t.onShowAll,u=t.parentContainer,l=t.renderControls,c=t.renderErrorMessage,d=(0,e.useMemo)((function(){return[n,i,r,o]}),[n,i,r,o]),h=(0,e.useCallback)(function(){var e=dn(fn().mark((function e(t,a){var s,u,l,c=arguments;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=(s=c.length>2&&void 0!==c[2]?c[2]:{}).sortOrder,l=s.columnId,e.next=3,vT({limit:t,offset:a,filter:n,uptime:xa(r),visibleEntities:i,tenant:o,sortOrder:u,sortValue:l});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),[r,n,o,i]),f=(0,e.useMemo)((function(){return fT(a,i)}),[a,i]);return(0,Nl.jsx)(NN,{parentContainer:u,columns:f,fetchData:h,rowHeight:50,limit:50,renderControls:l,renderErrorMessage:c,renderEmptyDataMessage:function(){return i!==Iu.all||r!==va.All?(0,Nl.jsx)(QM,{onShowAll:s,nodesUptimeFilter:r,visibleEntities:i}):$M("empty.default")},getRowClassName:oT,dependencyArray:d})},_T=function(t){var n=t.tenant,i=t.nodeId,r=t.parentContainer,o=t.additionalNodesProps,a=K(),s=(0,e.useState)(""),u=(0,ne.Z)(s,2),l=u[0],c=u[1],d=(0,e.useState)(Ou),h=(0,ne.Z)(d,2),f=h[0],p=h[1],g=(0,e.useState)(Iu.all),v=(0,ne.Z)(g,2),m=v[0],_=v[1],y=(0,e.useState)(va.All),b=(0,ne.Z)(y,2),w=b[0],C=b[1],k=ev(Df);(0,e.useEffect)((function(){a(Ef())}),[a]);var S=function(e){var t=e.totalEntities,n=e.foundEntities,r=e.inited;return(0,Nl.jsx)(oN,{searchValue:l,handleSearchValueChange:c,withTypeSelector:!i,storageType:f,handleStorageTypeChange:p,visibleEntities:m,handleVisibleEntitiesChange:_,nodesUptimeFilter:w,handleNodesUptimeFilterChange:C,withGroupsUsageFilter:!1,entitiesCountCurrent:n,entitiesCountTotal:t,entitiesLoading:!r})},x=function(e){return 403===e.status?(0,Nl.jsx)(Fb,{position:"left"}):(0,Nl.jsx)(Sb,{error:e})};return f===Au?(0,Nl.jsx)(mT,{searchValue:l,visibleEntities:m,nodesUptimeFilter:w,tenant:n,additionalNodesProps:o,onShowAll:function(){_(Iu.all),C(va.All)},parentContainer:r,renderControls:S,renderErrorMessage:x}):(0,Nl.jsx)(YM,{searchValue:l,visibleEntities:m,tenant:n,nodeId:i,nodesMap:k,onShowAll:function(){_(Iu.all)},parentContainer:r,renderControls:S,renderErrorMessage:x})},yT=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(arguments.length>1?arguments[1]:void 0)===va.All?e:e.filter((function(e){var t=e.StartTime;return!t||ys(t)<_i}))},bT=$c([function(e){return e.nodes.data},function(e){return e.nodes.nodesUptimeFilter},function(e){return e.nodes.searchValue},function(e){return e.settings.problemFilter}],(function(e,t,n,i){var r=yT(e,t);return r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(arguments.length>1?arguments[1]:void 0)===Cr.ALL?e:e.filter((function(e){var t=e.SystemState;return t&&t!==pa.Green}))}(r,i),r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;if(!t)return e;var n=xn(t);return e.filter((function(e){return!e.Host||n.test(e.Host)||n.test(String(e.NodeId))}))}(r,n),r})),wT=function(e){return e.trim().toLowerCase()},CT=function(e){return{total:e.storage.total,found:e.storage.found}},kT=function(e){return e.storage.groups},ST=function(e){return e.storage.filter},xT=function(e){var t=La.NodeId,n=yn;return{sortValue:e.storage.nodesSortValue||t,sortOrder:e.storage.nodesSortOrder||n}},LT=function(e){var t=e.storage.visible,n=Hu.PoolName,i=yn;return t===Iu.missing&&(n=Hu.Degraded,i=bn),t===Iu.space&&(n=Hu.Usage,i=bn),{sortValue:e.storage.groupsSortValue||n,sortOrder:e.storage.groupsSortOrder||i}},ET=$c(kT,(function(e){var t={};return null===e||void 0===e||e.forEach((function(e){var n=ju(e,5);Object.prototype.hasOwnProperty.call(t,n)||(t[n]=0),t[n]+=1})),Object.entries(t).map((function(e){var t=(0,ne.Z)(e,2),n=t[0],i=t[1];return{threshold:Number(n),count:i}})).sort((function(e,t){return t.threshold-e.threshold}))})),DT=$c([function(e){return e.storage.nodes},ST,function(e){return e.storage.nodesUptimeFilter}],(function(e,t,n){var i=e||[];return i=function(e,t){var n=wT(t);return n?e.filter((function(e){var t,i;return(null===(t=e.NodeId)||void 0===t?void 0:t.toString().includes(n))||(null===(i=e.Host)||void 0===i?void 0:i.toLowerCase().includes(n))})):e}(i,t),i=yT(i,n)})),NT=$c([kT,ST,function(e){return e.storage.usageFilter}],(function(e,t,n){var i,r,o=e||[];return o=function(e,t){var n=wT(t);return n?e.filter((function(e){var t,i;return(null===(t=e.PoolName)||void 0===t?void 0:t.toLowerCase().includes(n))||(null===(i=e.GroupID)||void 0===i?void 0:i.toString().includes(n))})):e}(o,t),i=o,r=n,o=Array.isArray(r)&&0!==r.length?i.filter((function(e){var t=e.Usage;return r.some((function(e){return Number(e)<=t&&t<Number(e)+5}))})):i}));function MT(t){var n=t.data,i=t.tableSettings,r=t.visibleEntities,o=t.nodes,a=t.onShowAll,s=t.sort,u=t.handleSort,l=(0,e.useMemo)((function(){return BM(o,r)}),[o,r]);return n.length||r===Iu.all?(0,Nl.jsx)(pi,{theme:"yandex-cloud",data:n,columns:l,settings:i,emptyDataMessage:jN("empty.default"),sortOrder:s,onSort:u},r):(0,Nl.jsx)(HN,{onShowAll:a,visibleEntities:r})}function TT(e){var t=e.data,n=e.tableSettings,i=e.visibleEntities,r=e.onShowAll,o=e.nodesUptimeFilter,a=e.additionalNodesProps,s=e.sort,u=e.handleSort,l=fT(a,i);return t.length||i===Iu.all&&o===va.All?(0,Nl.jsx)(pi,{theme:"yandex-cloud",data:t,columns:l,settings:Rt(Rt({},n),{},{dynamicRenderType:"variable"}),emptyDataMessage:$M("empty.default"),rowClassName:oT,sortOrder:s,onSort:u},i):(0,Nl.jsx)(QM,{visibleEntities:i,nodesUptimeFilter:o,onShowAll:r})}var IT=function(t){var n=t.additionalNodesProps,i=t.tenant,r=t.nodeId,o=K(),a=ev((function(e){return e.schema})).autorefresh,s=ev((function(e){return e.storage})),u=s.loading,l=s.wasLoaded,c=s.error,d=s.type,h=s.visible,f=s.filter,p=s.usageFilter,g=s.nodesUptimeFilter,v=ev(DT),m=ev(NT),_=ev(CT),y=ev(Df),b=ev(ET),w=ev(xT),C=ev(LT),k=void 0!==r,S=k?Ou:d;(0,e.useEffect)((function(){return o(Ef()),function(){o({type:Qu})}}),[o]);var x=function(t){var n=t.filter,i=t.problemFilter,r=t.nodesUptimeFilter,o=t.sortOrder,a=t.sortValue,s=tv(qi),u=(0,ne.Z)(s,1)[0];return(0,e.useMemo)((function(){if(u){var e=Sa(i),t=xa(r);return{filter:n,problems_only:e,uptime:t,sortOrder:o,sortValue:a}}}),[u,n,i,r,o,a])}(Rt({filter:f,nodesUptimeFilter:g},w)),L=function(t){var n=t.filter,i=t.sortOrder,r=t.sortValue,o=tv(qi),a=(0,ne.Z)(o,1)[0];return(0,e.useMemo)((function(){if(a)return{version:Eu.v2,filter:n,sortOrder:i,sortValue:r}}),[a,n,i,r])}(Rt({filter:f},C)),E=iv(w,(function(e){return o({type:rl,data:e})})),D=(0,ne.Z)(E,2),N=D[0],M=D[1],T=iv(C,(function(e){return o({type:ol,data:e})})),I=(0,ne.Z)(T,2),O=I[0],A=I[1],R=(0,e.useCallback)((function(e){e||o({type:il});var t=L||{};o(S===Au?function(e){var t=e.tenant,n=e.visibleEntities,i=nn(e,qu);return oa({request:window.api.getNodes(Rt({tenant:t,visibleEntities:n,storage:!0,type:"static"},i),{concurrentId:sl}),actions:$u,dataHandler:Uu})}(Rt({tenant:i,visibleEntities:h},x||{})):function(e){var t=e.tenant,n=e.visibleEntities,i=e.nodeId,r=e.version,o=void 0===r?Eu.v1:r,a=nn(e,Gu);return oa({request:window.api.getStorageInfo(Rt({tenant:t,visibleEntities:n,nodeId:i,version:o},a),{concurrentId:sl}),actions:$u,dataHandler:Ku})}(Rt({tenant:i,visibleEntities:h,nodeId:r},t)))}),[o,i,r,h,S,L,x]);Jg(R,[R],!i||a);var P=function(e){o(function(e){return{type:Ju,data:e}}(e))},Z=function(e){o(function(e){return{type:Xu,data:e}}(e))},F=function(e){o(function(e){return{type:el,data:e}}(e))},j=function(e){o(function(e){return{type:tl,data:e}}(e))},H=function(e){o(function(e){return{type:nl,data:e}}(e))},B=function(){F(Iu.all),H(va.All)};return c?403===c.status?(0,Nl.jsx)(Fb,{position:"left"}):(0,Nl.jsx)(Sb,{error:c}):(0,Nl.jsxs)(yb,{children:[(0,Nl.jsx)(yb.Controls,{children:(0,Nl.jsx)(oN,{searchValue:f,handleSearchValueChange:Z,withTypeSelector:!k,storageType:S,handleStorageTypeChange:j,visibleEntities:h,handleVisibleEntitiesChange:F,nodesUptimeFilter:g,handleNodesUptimeFilterChange:H,groupsUsageFilter:p,groupsUsageFilterOptions:b,handleGroupsUsageFilterChange:P,entitiesCountCurrent:S===Ou?m.length:v.length,entitiesCountTotal:_.total,entitiesLoading:u&&!l})}),(0,Nl.jsx)(yb.Table,{loading:u&&!l,className:rN("table"),children:(0,Nl.jsxs)(Nl.Fragment,{children:[S===Ou&&(0,Nl.jsx)(MT,{visibleEntities:h,data:m,tableSettings:Bi,nodes:y,onShowAll:function(){return F(Iu.all)},sort:O,handleSort:A}),S===Au&&(0,Nl.jsx)(TT,{visibleEntities:h,nodesUptimeFilter:g,data:v,tableSettings:Bi,onShowAll:B,additionalNodesProps:n,sort:N,handleSort:M})]})})]})},OT=["parentContainer"],AT=function(e){var t=e.parentContainer,n=nn(e,OT),i=tv(qi);return(0,ne.Z)(i,1)[0]?(0,Nl.jsx)(_T,Rt({parentContainer:t},n)):(0,Nl.jsx)(IT,Rt({},n))},RT=(0,ht.Z)("progress-viewer"),PT={xs:"xs",s:"s",ns:"ns",m:"m",n:"n",l:"l",head:"head"},ZT=function(e){return fs(ps(Number(e),2))},FT=function(e,t){return[ZT(e),ZT(t)]};function jT(e){var t=e.value,n=e.capacity,i=e.formatValues,r=void 0===i?FT:i,o=e.percents,a=e.className,s=e.size,u=void 0===s?PT.xs:s,l=e.colorizeProgress,c=e.inverseColorize,d=e.warningThreshold,h=void 0===d?60:d,f=e.dangerThreshold,p=void 0===f?80:f,g=Math.round(parseFloat(String(t))/parseFloat(String(n))*100)||0;g=g>100?100:g;var v=t,m=n,_="/";if(o)v=g+"%",m="",_="";else if(r){var y=r(Number(t),Number(n)),b=(0,ne.Z)(y,2);v=b[0],m=b[1]}var w=c?"scarlet":"apple";l&&(g>h&&g<=p?w="saffron":g>p&&(w=c?"apple":"scarlet"));var C={width:g+"%"},k=g>60?"contrast0":"contrast70";return pr(t)?(0,Nl.jsxs)("div",{className:RT({size:u},a),children:[(0,Nl.jsx)("div",{className:RT("line",{bg:w}),style:C}),(0,Nl.jsx)("span",{className:RT("text",{text:k}),children:pr(n)?"".concat(v," ").concat(_," ").concat(m):v})]}):(0,Nl.jsx)("div",{className:"".concat(RT({size:u})," ").concat(a," error"),children:"no data"})}var HT="Host",BT="DC",zT="Rack",WT="Version",VT="Uptime",YT="Memory",UT="CPU",KT="LoadAverage",qT="Tablets",GT="TopNodesLoadAverage",$T="TopNodesMemory",QT="SharedCacheUsage",XT="MemoryUsedInAlloc",JT="TotalSessions",eI={name:"NodeId",header:"#",width:80,render:function(e){return e.row.NodeId},align:pi.RIGHT,sortable:!1},tI=function(e){return{name:HT,render:function(t){var n=t.row;return(0,Nl.jsx)(JM,{node:n,getNodeRef:e})},width:350,align:pi.LEFT,sortable:!1}},nI=function(e){return Rt(Rt({},tI(e)),{},{width:void 0})},iI={name:BT,header:"DC",align:pi.LEFT,render:function(e){var t=e.row;return t.DataCenter?t.DataCenter:"\u2014"},width:60},rI={name:zT,header:"Rack",align:pi.LEFT,render:function(e){var t=e.row;return t.Rack?t.Rack:"\u2014"},width:80},oI={name:WT,width:200,align:pi.LEFT,render:function(e){var t=e.row;return(0,Nl.jsx)(KN,{content:t.Version,children:t.Version})},sortable:!1},aI={name:VT,header:"Uptime",sortAccessor:function(e){var t=e.StartTime;return t&&-t},render:function(e){return e.row.Uptime},align:pi.RIGHT,width:110,sortable:!1},sI={name:YT,header:"Memory",sortAccessor:function(e){var t=e.MemoryUsed;return Number(void 0===t?0:t)},defaultOrder:pi.DESCENDING,render:function(e){var t=e.row;return t.MemoryUsed?ss(t.MemoryUsed):"\u2014"},align:pi.RIGHT,width:120},uI={name:UT,header:"CPU",sortAccessor:function(e){var t=e.PoolStats,n=void 0===t?[]:t;return Math.max.apply(Math,(0,Ct.Z)(n.map((function(e){var t=e.Usage;return Number(t)}))))},defaultOrder:pi.DESCENDING,render:function(e){var t=e.row;return t.PoolStats?(0,Nl.jsx)(_y,{pools:t.PoolStats}):"\u2014"},align:pi.LEFT,width:80,sortable:!1},lI={name:KT,header:"Load average",sortAccessor:function(e){var t=e.LoadAverage;return(void 0===t?[]:t).slice(0,1).reduce((function(e,t){return e+t}),0)},defaultOrder:pi.DESCENDING,render:function(e){var t=e.row;return t.LoadAverage&&t.LoadAverage.length>0?(0,Nl.jsx)(jT,{value:t.LoadAverage[0],percents:!0,colorizeProgress:!0,capacity:100}):"\u2014"},align:pi.LEFT,width:140,sortable:!1},cI=function(e){return{name:qT,width:430,render:function(t){var n=t.row;return n.Tablets?(0,Nl.jsx)(Sy,{path:null!==e&&void 0!==e?e:n.TenantName,nodeIds:[n.NodeId],tablets:n.Tablets}):"\u2014"},align:pi.LEFT,sortable:!1}},dI={name:GT,header:"Load",render:function(e){var t=e.row;return t.LoadAverage&&t.LoadAverage.length>0?(0,Nl.jsx)($N,{value:t.LoadAverage[0].toFixed(),theme:xs(t.LoadAverage[0])}):"\u2014"},align:pi.LEFT,width:80,sortable:!1},hI={name:$T,header:"Process",render:function(e){var t=e.row;return(0,Nl.jsx)(jT,{value:t.MemoryUsed,capacity:t.MemoryLimit,formatValues:hs,colorizeProgress:!0})},align:pi.LEFT,width:140,sortable:!1},fI={name:QT,header:"Tablet Cache",render:function(e){var t=e.row;return(0,Nl.jsx)(jT,{value:t.SharedCacheUsed,capacity:t.SharedCacheLimit,formatValues:hs,colorizeProgress:!0})},align:pi.LEFT,width:140,sortable:!1},pI={name:XT,header:"Query Runtime",render:function(e){var t=e.row;return(0,Nl.jsx)(jT,{value:t.MemoryUsedInAlloc,capacity:t.MemoryLimit,formatValues:hs,colorizeProgress:!0})},align:pi.LEFT,width:140,sortable:!1},gI={name:JT,header:"Sessions",render:function(e){var t;return null!==(t=e.row.TotalSessions)&&void 0!==t?t:"\u2014"},align:pi.RIGHT,width:100,sortable:!1};function vI(e){var t=e.tabletsPath,n=e.getNodeRef;return[eI,tI(n),iI,rI,oI,aI,sI,uI,lI,cI(t)]}var mI=["type","storage","limit","offset"],_I=function(e,t){return"getNodes|offset".concat(t,"|limit").concat(e)},yI=function(){var e=dn(fn().mark((function e(t){var n,i,r,o,a,s,u,l,c;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.type,i=void 0===n?"any":n,r=t.storage,o=void 0!==r&&r,a=t.limit,s=t.offset,u=nn(t,mI),e.next=3,window.api.getNodes(Rt({type:i,storage:o,limit:a,offset:s},u),{concurrentId:_I(a,s)});case 3:return l=e.sent,c=Ss(l),e.abrupt("return",{data:c.Nodes||[],found:c.FoundNodes||0,total:c.TotalNodes||0});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),bI=JSON.parse('{"empty.default":"No such nodes"}'),wI=JSON.parse('{"empty.default":"\u041d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432"}'),CI="ydb-nodes";Va.registerKeyset(Fa.En,CI,bI),Va.registerKeyset(Fa.Ru,CI,wI);var kI=Va.keyset(CI),SI=(0,ht.Z)("ydb-nodes"),xI=function(t){var n=t.parentContainer,i=t.additionalNodesProps,r=(0,e.useState)(""),o=(0,ne.Z)(r,2),a=o[0],s=o[1],u=(0,e.useState)(Cr.ALL),l=(0,ne.Z)(u,2),c=l[0],d=l[1],h=(0,e.useState)(va.All),f=(0,ne.Z)(h,2),p=f[0],g=f[1],v=(0,e.useMemo)((function(){return[a,c,p]}),[a,c,p]),m=(0,e.useCallback)(function(){var e=dn(fn().mark((function e(t,n){var i,r,o,s=arguments;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=(i=s.length>2&&void 0!==s[2]?s[2]:{}).sortOrder,o=i.columnId,e.next=3,yI({limit:t,offset:n,filter:a,problems_only:Sa(c),uptime:xa(p),sortOrder:r,sortValue:o});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),[c,a,p]),_=vI({getNodeRef:null===i||void 0===i?void 0:i.getNodeRef}).map((function(e){return Rt(Rt({},e),{},{sortable:Ea(e.name)})}));return(0,Nl.jsx)(NN,{parentContainer:n,columns:_,fetchData:m,limit:50,renderControls:function(e){var t=e.totalEntities,n=e.foundEntities,i=e.inited;return(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)(fb,{onChange:s,placeholder:"Host name",className:SI("search"),value:a}),(0,Nl.jsx)(Ny,{value:c,onChange:d}),(0,Nl.jsx)(zb,{value:p,onChange:g}),(0,Nl.jsx)(Bb,{total:t,current:n,label:"Nodes",loading:!i})]})},renderErrorMessage:function(e){return e&&403===e.status?(0,Nl.jsx)(Fb,{position:"left"}):(0,Nl.jsx)(Sb,{error:e})},renderEmptyDataMessage:function(){return c!==Cr.ALL||p!==va.All?(0,Nl.jsx)(Ay,{name:"thumbsUp",width:"200"}):kI("empty.default")},dependencyArray:v,getRowClassName:function(e){return SI("node",{unavailable:Ca(e)})}})},LI=(0,ht.Z)("ydb-nodes"),EI=function(t){var n=t.path,i=t.additionalNodesProps,r=void 0===i?{}:i,o=K(),a=!n;(0,e.useEffect)((function(){o({type:Ns})}),[o,n]);var s=ev((function(e){return e.nodes})),u=s.wasLoaded,l=s.loading,c=s.error,d=s.nodesUptimeFilter,h=s.searchValue,f=s.sortOrder,p=void 0===f?yn:f,g=s.sortValue,v=void 0===g?"NodeId":g,m=s.totalNodes,_=ev((function(e){return e.settings.problemFilter})),y=ev((function(e){return e.schema})).autorefresh,b=ev(bT),w=tv(Ti),C=(0,ne.Z)(w,1)[0],k=(0,e.useCallback)((function(e){e||o({type:Ts}),o(n&&!C?function(e){var t=e.version,n=void 0===t?ba.v2:t,i=nn(e,Es);return oa({request:window.api.getCompute(Rt({version:n},i),{concurrentId:Rs}),actions:Ds,dataHandler:ks})}({path:n}):function(e){var t=e.type,n=void 0===t?"any":t,i=e.storage,r=void 0!==i&&i,o=nn(e,Ls);return oa({request:window.api.getNodes(Rt({type:n,storage:r},o),{concurrentId:Rs}),actions:Ds,dataHandler:Ss})}({path:n}))}),[o,n,C]);Jg(k,[k],!!a||y);var S=iv({sortValue:v,sortOrder:p},(function(e){return o(function(e){return{type:Os,data:e}}(e))})),x=(0,ne.Z)(S,2),L=x[0],E=x[1],D=function(e){o(function(e){return{type:Is,data:e}}(e))},N=function(e){o(Lr(e))},M=function(e){o(function(e){return{type:Ms,data:e}}(e))};return c?403===c.status?(0,Nl.jsx)(Fb,{}):(0,Nl.jsx)(Sb,{error:c}):(0,Nl.jsxs)(yb,{children:[(0,Nl.jsx)(yb.Controls,{children:(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)(fb,{onChange:D,placeholder:"Host name",className:LI("search"),value:h}),(0,Nl.jsx)(Ny,{value:_,onChange:N}),(0,Nl.jsx)(zb,{value:d,onChange:M}),(0,Nl.jsx)(Bb,{total:m,current:(null===b||void 0===b?void 0:b.length)||0,label:"Nodes",loading:l&&!u})]})}),(0,Nl.jsx)(yb.Table,{loading:l&&!u,className:LI("table"),children:function(){var e=vI({getNodeRef:r.getNodeRef}).map((function(e){return Rt(Rt({},e),{},{sortable:Ea(e.name)})}));return!b||0!==b.length||_===Cr.ALL&&d===va.All?(0,Nl.jsx)(pi,{theme:"yandex-cloud",data:b||[],columns:e,settings:Bi,sortOrder:L,onSort:E,emptyDataMessage:kI("empty.default"),rowClassName:function(e){return LI("node",{unavailable:Ca(e)})}}):(0,Nl.jsx)(Ay,{name:"thumbsUp",width:"200"})}()})]})},DI=["parentContainer"],NI=function(e){var t=e.parentContainer,n=nn(e,DI),i=tv(qi);return(0,ne.Z)(i,1)[0]?(0,Nl.jsx)(xI,Rt({parentContainer:t},n)):(0,Nl.jsx)(EI,Rt({},n))};function MI(t){var n=t.name,i=t.value,r=t.id,o=t.defaultChecked,a=t.checked,s=t.indeterminate,u=t.onUpdate,l=t.onChange,c=t.controlRef,d=t.controlProps,h=t.onFocus,f=t.onBlur,p=t.disabled,g=e.useRef(null),v=e.useState(null!==o&&void 0!==o&&o),m=(0,ne.Z)(v,2),_=m[0],y=m[1],b="boolean"===typeof a,w=b?a:_,C=!s&&a,k=s?"mixed":w,S=Ov(c,g);e.useLayoutEffect((function(){g.current&&(g.current.indeterminate=Boolean(s))}),[s]);var x=e.useCallback((function(e){mv.P.publish({componentId:"Checkbox",eventId:"click",domEvent:e,meta:{checked:e.target.checked}})}),[]);return{checked:w,inputProps:Object.assign(Object.assign({},d),{name:n,value:i,id:r,onFocus:h,onBlur:f,disabled:p,type:"checkbox",onChange:function(e){b||y(e.target.checked),l&&l(e),u&&u(e.target.checked)},onClickCapture:x,defaultChecked:o,checked:C,"aria-checked":k,ref:S})}}var TI=(0,ft.Ge)("control-label"),II=e.forwardRef((function(t,n){var i=t.children,r=t.className,o=t.labelClassName,a=t.title,s=t.style,u=t.disabled,l=void 0!==u&&u,c=t.control,d=t.size,h=void 0===d?"m":d,f=t.qa,p=e.cloneElement(c,{className:TI("indicator",c.props.className)});return e.createElement("label",{ref:n,title:a,style:s,className:TI({size:h,disabled:l},r),"data-qa":f},p,i?e.createElement("span",{className:TI("text",o)},i):null)}));function OI(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 17 17",width:"16",height:"16",fill:"currentColor"},t),e.createElement("path",{d:"M4 7h9v3H4z"}))}function AI(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 12 10",width:"16",height:"16",fill:"currentColor"},t),e.createElement("path",{d:"M.49 5.385l1.644-1.644 4.385 4.385L4.874 9.77.49 5.385zm4.384 1.096L10.356 1 12 2.644 6.519 8.126 4.874 6.48v.001z"}))}II.displayName="ControlLabel";var RI,PI=(0,ft.Ge)("checkbox"),ZI=e.forwardRef((function(t,n){var i=t.size,r=void 0===i?"m":i,o=t.indeterminate,a=t.disabled,s=void 0!==a&&a,u=t.content,l=t.children,c=t.title,d=t.style,h=t.className,f=t.qa,p=MI(t),g=p.checked,v=p.inputProps,m=u||l,_=e.createElement("span",{className:PI("indicator")},e.createElement("span",{className:PI("icon"),"aria-hidden":!0},o?e.createElement(OI,{className:PI("icon-svg",{type:"dash"})}):e.createElement(AI,{className:PI("icon-svg",{type:"tick"})})),e.createElement("input",Object.assign({},v,{className:PI("control")})),e.createElement("span",{className:PI("outline")}));return e.createElement(II,{ref:n,title:c,style:d,size:r,disabled:s,className:PI({size:r,disabled:s,indeterminate:o,checked:g},h),qa:f,control:_},m)})),FI=(0,ht.Z)("ydb-loader"),jI=function(e){var t=e.size,n=void 0===t?"m":t;return(0,Nl.jsx)("div",{className:FI(),children:(0,Nl.jsx)(KE,{size:n})})};!function(e){e.VERSION="Version",e.TENANT="Database",e.STORAGE="Storage"}(RI||(RI={}));var HI=function(e,t){var n;return(null===(n=e.title)||void 0===n?void 0:n.localeCompare(t.title||""))||-1},BI=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M3 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM9.5 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z",clipRule:"evenodd"}))},zI=(0,ft.Ge)("dropdown-menu"),WI=e.createContext({toggle:function(){},data:void 0});WI.displayName="DropdownMenu.Context";var VI=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0Z",clipRule:"evenodd"}))},YI=(0,ft.Ge)("menu"),UI=e.forwardRef((function(t,n){var i=t.label,r=t.children,o=t.style,a=t.className,s=t.qa,u=W_();return e.createElement("li",{ref:n,className:YI("list-group-item")},e.createElement("div",{style:o,className:YI("group",a),"data-qa":s},i&&e.createElement("div",{id:u,className:YI("group-label")},i),e.createElement("ul",{role:"group","aria-labelledby":u,className:YI("group-list")},r)))})),KI=(0,ft.Ge)("menu"),qI=e.forwardRef((function(t,n){var i,r=t.icon,o=t.iconStart,a=void 0===o?r:o,s=t.iconEnd,u=t.title,l=t.disabled,c=t.active,d=t.selected,h=t.href,f=t.target,p=t.rel,g=t.onClick,v=t.style,m=t.className,_=t.theme,y=t.extraProps,b=t.children,w=t.qa,C=(0,kg.b)(g).onKeyDown,k=e.useCallback((function(e){mv.P.publish({componentId:"MenuItem",eventId:"click",domEvent:e})}),[]),S={role:"menuitem",onKeyDown:g&&!l?C:void 0},x={title:u,onClick:l?void 0:g,onClickCapture:l?void 0:k,style:v,tabIndex:l?-1:0,className:KI("item",{disabled:l,active:c,selected:d,theme:_},m),"data-qa":w},L=[a&&e.createElement("div",{key:"icon-start",className:KI("item-icon")},a),e.createElement("div",{key:"content",className:KI("item-content")},b),s&&e.createElement("div",{key:"icon-end",className:KI("item-icon-end")},s)];return i=h?e.createElement("a",Object.assign({},S,y,x,{href:h,target:f,rel:p}),L):e.createElement("div",Object.assign({},S,y,x),L),e.createElement("li",{ref:n,className:KI("list-item")},i)})),GI=(0,ft.Ge)("menu"),$I=e.forwardRef((function(t,n){var i=t.size,r=void 0===i?"m":i,o=t.children,a=t.style,s=t.className,u=t.qa;return e.createElement("ul",{ref:n,role:"menu",style:a,className:GI({size:r},s),"data-qa":u},o)}));function QI(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,i=arguments.length>3?arguments[3]:void 0,r=(e.length+t-n%e.length)%e.length;return i&&i(e[r])?QI(e,r,1,i):r}function XI(e,t){var n=arguments.length>3?arguments[3]:void 0,i=(t+(arguments.length>2&&void 0!==arguments[2]?arguments[2]:1))%e.length;return n&&n(e[i])?XI(e,i,1,n):i}$I.Item=qI,$I.Group=UI;var JI=[],eO=e.createContext({activeMenuPath:JI,setActiveMenuPath:function(){},anchorRef:{current:null}}),tO=function(t){var n=t.anchorRef,i=t.children,r=t.disabled,o=e.useState(JI),a=(0,ne.Z)(o,2),s=a[0],u=a[1];e.useEffect((function(){r&&u(JI)}),[r]);var l=e.useMemo((function(){return{activeMenuPath:s,setActiveMenuPath:u,anchorRef:n}}),[s,n]);return e.createElement(eO.Provider,{value:l},i)},nO=["right-start","left-start"],iO={text:"",action:function(){},path:[]};function rO(e){return e===iO}function oO(e){return e.disabled||rO(e)}function aO(e){var t;return null!==(t=null===e||void 0===e?void 0:e.join(" "))&&void 0!==t?t:""}var sO=function(t){var n=t.items,i=t.open,r=t.anchorRef,o=t.onClose,a=t.size,s=t.menuProps,u=t.children,l=t.popupProps,c=t.path,d=void 0===c?[]:c,h=e.useContext(WI),f=h.toggle,p=h.data,g=e.useContext(eO),v=g.activeMenuPath,m=g.setActiveMenuPath,_=g.anchorRef,y=d.length>0,b=e.useCallback((function(){m(d.slice(0,d.length-1))}),[m,d]),w=e.useCallback((function(e){var t;m(d),null===(t=null===l||void 0===l?void 0:l.onMouseEnter)||void 0===t||t.call(l,e)}),[d,l,m]),C=e.useCallback((function(e){var t;b(),null===(t=null===l||void 0===l?void 0:l.onMouseLeave)||void 0===t||t.call(l,e)}),[b,l]),k=e.useCallback((function(e,t){var n;e.items&&e.path?m(e.path):(null===(n=e.action)||void 0===n||n.call(e,t,p),f(!1))}),[p,m,f]),S=e.useCallback((function(e,t){switch(t.key){case"Escape":return y&&(t.stopPropagation(),null===b||void 0===b||b()),!1;case"Enter":case" ":var i=n[e];return i&&(t.preventDefault(),k(i,t)),!1}return!0}),[b,k,y,n]),x=i&&aO(d)===aO(v),L=function(t){var n=t.items,i=t.skip,r=t.pageSize,o=t.processHomeKey,a=void 0===o||o,s=t.processEndKey,u=void 0===s||s,l=t.anchorRef,c=t.disabled,d=void 0!==c&&c,h=t.initialValue,f=void 0===h?-1:h,p=t.onAnchorKeyDown,g=e.useState(f),v=(0,ne.Z)(g,2),m=v[0],_=v[1],y=e.useCallback((function(){_(f)}),[f]);return e.useEffect((function(){n&&y()}),[n,y]),e.useLayoutEffect((function(){if(!d&&n.some((function(e){return!(null===i||void 0===i?void 0:i(e))}))){var e=null===l||void 0===l?void 0:l.current;if(e){var t=function(e){if(!1!==(null===p||void 0===p?void 0:p(m,e)))switch(e.key){case"ArrowDown":e.preventDefault(),_((function(e){return XI(n,e,1,i)}));break;case"ArrowUp":e.preventDefault(),_((function(e){return QI(n,e,1,i)}));break;case"PageDown":if(!r)return;e.preventDefault(),_((function(e){return XI(n,e,r,i)}));break;case"PageUp":if(!r)return;e.preventDefault(),_((function(e){return QI(n,e,r,i)}));break;case"Home":if(!a)return;e.preventDefault(),_((function(e){return QI(n,e,e,i)}));break;case"End":if(!u)return;e.preventDefault(),_((function(e){return QI(n,e,e+1,i)}))}};return e.addEventListener("keydown",t),function(){e.removeEventListener("keydown",t)}}}}),[m,l,d,n,p,r,u,a,i]),{activeItemIndex:m,setActiveItemIndex:_,reset:y}}({items:n,skip:oO,anchorRef:_,onAnchorKeyDown:S,disabled:!x,initialValue:y?0:-1}),E=L.activeItemIndex,D=L.setActiveItemIndex,N=L.reset;return e.useEffect((function(){i||N()}),[i,N]),e.createElement(J_,Object.assign({open:i,anchorRef:r,onClose:o},l,{onMouseEnter:w,onMouseLeave:C}),u||e.createElement($I,Object.assign({className:zI("menu"),size:a},s),n.map((function(t,n){var i=x&&E===n,r=Object.assign(Object.assign({},t.extraProps),{onMouseEnter:function(){return D(n)}});return e.createElement(cO,Object.assign({key:n,className:zI("menu-item",{separator:rO(t)},t.className),selected:i,popupProps:l,closeMenu:o},t,{extraProps:r}))}))))};function uO(e,t){var n;return null!==(n=null===e||void 0===e?void 0:e.every((function(e,n){return e===(null===t||void 0===t?void 0:t[n])})))&&void 0!==n&&n}function lO(t){var n=t.items,i=t.path,r=e.useContext(eO),o=r.activeMenuPath,a=r.setActiveMenuPath,s=Boolean(i)&&Boolean(null===n||void 0===n?void 0:n.length),u=e.useCallback((function(){i&&a(i.slice(0,i.length-1))}),[i,a]),l=e.useCallback((function(){i&&a(i)}),[i,a]);return{hasSubmenu:s,isSubmenuOpen:uO(i,o),openSubmenu:l,closeSubmenu:u}}var cO=function(t){var n=t.text,i=t.action,r=t.items,o=t.popupProps,a=t.closeMenu,s=t.children,u=t.path,l=(0,Wb._T)(t,["text","action","items","popupProps","closeMenu","children","path"]),c=e.useContext(WI),d=c.toggle,h=c.data,f=e.useRef(null),p=lO({items:r,path:u}),g=p.hasSubmenu,v=p.isSubmenuOpen,m=p.closeSubmenu,_=p.openSubmenu,y=e.useCallback((function(){var e=function(){a?a():d(!1)};g?(m(),requestAnimationFrame(e)):e()}),[a,m,g,d]),b=e.useCallback((function(e){g||(null===i||void 0===i||i(e,h),y())}),[i,h,y,g]),w=e.useMemo((function(){return Object.assign(Object.assign({},l.extraProps),{onMouseEnter:function(e){var t,n;null===(n=null===(t=l.extraProps)||void 0===t?void 0:t.onMouseEnter)||void 0===n||n.call(t,e),g&&_()},onMouseLeave:function(e){var t,n;null===(n=null===(t=l.extraProps)||void 0===t?void 0:t.onMouseLeave)||void 0===n||n.call(t,e),g&&m()}})}),[l.extraProps,m,g,_]),C=g?e.createElement(yo.J,{data:VI,size:10,className:zI("sub-menu-arrow")}):l.iconEnd;return e.createElement(e.Fragment,null,e.createElement($I.Item,Object.assign({ref:f},l,{extraProps:w,onClick:b,iconEnd:C}),n||s),g&&r&&e.createElement(sO,{popupProps:Object.assign(Object.assign({},o),{className:zI("sub-menu",null===o||void 0===o?void 0:o.className),placement:nO}),items:r,path:u,open:v,anchorRef:f,onClose:y}))},dO=function(e){return"function"===typeof e};function hO(t,n,i){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0!==t&&void 0!==n,o=function(t,n){var i=e.useState(t),r=(0,ne.Z)(i,2),o=r[0],a=r[1];return[o,e.useCallback((function(e){dO(e)?a((function(t){var i=e(t);return null===n||void 0===n||n(i),i})):(null===n||void 0===n||n(e),a(e))}),[n])]}(t||i,n);return r?[t,n]:o}function fO(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=[],o=!1,a=-1,s=(0,Na.Z)(e);try{for(s.s();!(n=s.n()).done;){var u=n.value;if(Array.isArray(u)){var l=fO(u,t,[].concat((0,Ct.Z)(i),[a]));if(0===l.length)continue;0!==r.length&&r.push(t);var c,d=(0,Na.Z)(l);try{for(d.s();!(c=d.n()).done;){c.value.path[i.length]=++a}}catch(f){d.e(f)}finally{d.f()}r.push.apply(r,(0,Ct.Z)(l)),o=!0}else{if(u.hidden)continue;o&&r.push(t);var h=Object.assign({},u);h.path=[].concat((0,Ct.Z)(i),[++a]),u.items&&(h.items=fO(u.items,t,h.path)),r.push(h),o=!1}}}catch(f){s.e(f)}finally{s.f()}return r}var pO=Object.assign((function(t){var n=t.items,i=void 0===n?[]:n,r=t.size,o=void 0===r?"m":r,a=t.icon,s=void 0===a?e.createElement(yo.J,{data:BI}):a,u=t.open,l=t.onOpenToggle,c=t.hideOnScroll,d=void 0===c||c,h=t.data,f=t.disabled,p=t.switcher,g=t.renderSwitcher,v=t.switcherWrapperClassName,m=t.defaultSwitcherProps,_=t.defaultSwitcherClassName,y=t.onSwitcherClick,b=t.menuProps,w=t.popupProps,C=t.children,k=e.useRef(null),S=function(t,n,i){var r=hO(t,n,!1),o=(0,ne.Z)(r,2),a=o[0],s=o[1],u=e.useCallback((function(e){s((function(t){return"boolean"===typeof e?e:!t}))}),[s]),l=e.useCallback((function(){s(!1)}),[s]);return e.useEffect((function(){i&&a&&l()}),[l,i,a]),{isPopupShown:a,togglePopup:u,closePopup:l}}(u,l,f),x=S.isPopupShown,L=S.togglePopup,E=S.closePopup;!function(t,n,i){e.useEffect((function(){if(!i){var e=function(e){e.target.contains(n.current)&&t(e)};return document.addEventListener("scroll",e,!0),function(){document.removeEventListener("scroll",e,!0)}}}),[n,t,i])}(E,k,!x||!d);var D=e.useMemo((function(){return{toggle:L,data:h}}),[h,L]),N=e.useMemo((function(){return fO(i,iO)}),[i]),M=e.useCallback((function(e){f||(null===y||void 0===y||y(e),L())}),[f,y,L]),T=(0,kg.b)(M).onKeyDown,I=e.useMemo((function(){return{onClick:M,onKeyDown:T}}),[M,T]);return e.createElement(WI.Provider,{value:D},e.createElement("div",Object.assign({ref:k,className:zI("switcher-wrapper",v)},g?{}:I),(null===g||void 0===g?void 0:g(I))||p||e.createElement(_o.z,Object.assign({view:"flat",size:o},m,{className:zI("switcher-button",_),disabled:f}),s)),e.createElement(tO,{anchorRef:k,disabled:!x},e.createElement(sO,{items:N,open:x,size:o,menuProps:b,anchorRef:k,onClose:E,popupProps:w},C)))}),{Item:cO}),gO=n(89804);function vO(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var mO="--ydb-tree-view-level",_O=(0,gO.Z)("ydb-tree-view");function yO(t){var n=t.children,i=t.name,r=t.title,o=t.icon,a=t.collapsed,s=void 0===a||a,u=t.active,l=void 0!==u&&u,c=t.onClick,d=t.onArrowClick,h=t.hasArrow,f=void 0!==h&&h,p=t.actions,g=t.additionalNodeElements,v=t.level,m=(0,e.useCallback)((function(e){c&&(e.nativeEvent.composedPath().some((function(e){return e instanceof HTMLElement&&("BUTTON"===e.nodeName&&!e.hasAttribute("disabled")||e.hasAttribute("tabindex")&&e.tabIndex>-1)}))||c())}),[c]),_=d||c,y="tree-view_arrow",b="tree-view_children";return s&&(y+=" tree-view_arrow-collapsed",b+=" tree-view_children-collapsed"),e.createElement("div",{className:_O(),style:vO({},mO,v)},e.createElement("div",{className:"tree-view"},e.createElement("div",{className:"".concat("tree-view_item"," ").concat(_O("item",{active:l})),onClick:m},e.createElement("button",{type:"button",className:"".concat(y," ").concat(_O("arrow",{collapsed:s,hidden:!f})),disabled:!_,onClick:_}),e.createElement("div",{className:_O("content")},o&&e.createElement("div",{className:_O("icon")},o),e.createElement("div",{className:_O("text"),title:r},i),p&&p.length>0&&e.createElement("div",{className:_O("actions")},g,e.createElement(pO,{defaultSwitcherProps:{view:"flat-secondary",size:"s",pin:"brick-brick"},items:p})))),e.createElement("div",{className:"".concat(b," ").concat(_O("container",{collapsed:s}))},s?null:n)))}var bO=n(780),wO=n.n(bO),CO=(0,ft.Ge)("progress"),kO=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){return(0,X.Z)(this,i),n.apply(this,arguments)}return(0,J.Z)(i,[{key:"render",value:function(){var t=this.props,n=t.size,i=t.className,r=t.qa;return e.createElement("div",{className:CO({size:n},i),"data-qa":r},this.renderText(),this.renderContent())}},{key:"getTheme",value:function(){var e=this.props;if(i.isProgressWithStack(e))throw new Error("Unexpected behavior");var t=e.theme,n=e.colorStops,r=e.colorStopsValue,o=e.value;if(n){var a=n.find((function(e,t){var a="number"===typeof r?r:o;return i.isBetween(a,t>1?n[t-1].stop:0,t<n.length-1?e.stop:100)}));return a?a.theme:t}return t}},{key:"renderContent",value:function(){var e=this.props;return i.isProgressWithStack(e)?this.renderStack(e):this.renderItem(e)}},{key:"renderItem",value:function(t){var n=t.value,r=CO("item",{theme:this.getTheme(),loading:this.props.loading}),o=i.getOffset(n),a={transform:"translateX(".concat(o,"%)")};return i.isFiniteNumber(n)?e.createElement("div",{className:r,style:a},this.renderInnerText(o)):null}},{key:"renderStack",value:function(t){var n=t.stack,r=t.stackClassName,o=CO("stack",r),a=t.value||i.getValueFromStack(n),s=i.getOffset(a),u={transform:"translateX(".concat(s,"%)")},l={width:"".concat(-s,"%")};return e.createElement("div",{className:o,style:u},e.createElement("div",{className:CO("item"),style:l}),n.map((function(t,n){var r=t.value,o=t.color,s=t.title,u=t.theme,c=t.loading,d=void 0!==c&&c,h=t.className,f=t.content;l={width:"".concat(r,"%"),backgroundColor:o};var p={loading:d};return"undefined"===typeof o&&(p.theme=u||"default"),i.isFiniteNumber(a)?e.createElement("div",{key:n,className:CO("item",p,h),style:l,title:s},f):null})),this.renderInnerText(s))}},{key:"renderInnerText",value:function(t){var n=this.props.text;if(!n)return null;var i=CO("text-inner"),r={transform:"translateX(".concat(-t,"%)")};return e.createElement("div",{className:i,style:r},n)}},{key:"renderText",value:function(){var t=this.props.text,n=CO("text");return e.createElement("div",{className:n},t)}}],[{key:"isFiniteNumber",value:function(e){return isFinite(e)&&!isNaN(e)}},{key:"isBetween",value:function(e,t,n){return e>=t&&e<=n}},{key:"getOffset",value:function(e){return e<100?e-100:0}},{key:"getValueFromStack",value:function(e){return wO()(e,(function(e){return e.value}))}},{key:"isProgressWithStack",value:function(e){return void 0!==e.stack}}]),i}(e.Component);kO.defaultProps={text:"",theme:"default",size:"m",loading:!1};var SO=(0,ht.Z)("ydb-versions-nodes-tree-title"),xO=function(e){var t,n=e.title,i=e.nodes,r=e.items,o=e.versionColor,a=e.versionsValues;return t=r?r.reduce((function(e,t){return t.nodes?e+t.nodes.length:e}),0):i?i.length:0,(0,Nl.jsxs)("div",{className:SO("overview"),children:[(0,Nl.jsxs)("div",{className:SO("overview-container"),children:[o?(0,Nl.jsx)("div",{className:SO("version-color"),style:{background:o}}):null,n?(0,Nl.jsxs)("span",{className:SO("overview-title"),children:[n,(0,Nl.jsx)(sy,{text:n,size:"s",className:SO("clipboard-button")})]}):null]}),(0,Nl.jsxs)("div",{className:SO("overview-info"),children:[(0,Nl.jsxs)("div",{children:[(0,Nl.jsx)("span",{className:SO("info-value"),children:t}),(0,Nl.jsx)("span",{className:SO("info-label",{margin:"left"}),children:"Nodes"})]}),a?(0,Nl.jsxs)("div",{className:SO("version-progress"),children:[(0,Nl.jsx)("span",{className:SO("info-label",{margin:"right"}),children:"Versions"}),(0,Nl.jsx)(kO,{size:"s",value:100,stack:a})]}):null]})]})},LO=[{name:"NodeId",header:"#",width:"80px",align:pi.LEFT,render:function(e){return e.row.NodeId}},{name:"Host",render:function(e){var t,n=e.row,i=n.Endpoints&&(null===(t=n.Endpoints.find((function(e){return"http-mon"===e.Name})))||void 0===t?void 0:t.Address),r=n.Host&&"".concat(n.Host).concat(i||"")||"unknown",o=!Ca(n)&&n.NodeId?nM(n.NodeId):void 0;return(0,Nl.jsx)(hy,{name:r,path:o,hasClipboardButton:!0,showStatus:!1})},width:"400px",align:pi.LEFT},{name:"Endpoints",sortable:!1,render:function(e){var t=e.row;return t.Endpoints?t.Endpoints.map((function(e){var t=e.Name,n=e.Address;return"".concat(t," ").concat(n)})).join(", "):"-"},width:"300px",align:pi.LEFT},{name:"uptime",header:"Uptime",sortAccessor:function(e){var t=e.StartTime;return t&&-t},width:"120px",align:pi.LEFT,render:function(e){return e.row.uptime}},{name:"MemoryUsed",header:"Memory used",sortAccessor:function(e){var t=e.MemoryUsed;return Number(void 0===t?0:t)},defaultOrder:pi.DESCENDING,render:function(e){var t=e.row;return t.MemoryUsed?os(t.MemoryUsed):"\u2014"},width:"120px",align:pi.RIGHT},{name:"MemoryLimit",header:"Memory limit",sortAccessor:function(e){var t=e.MemoryLimit;return Number(void 0===t?0:t)},defaultOrder:pi.DESCENDING,render:function(e){var t=e.row;return t.MemoryLimit?os(t.MemoryLimit):"\u2014"},width:"120px",align:pi.RIGHT},{name:"PoolStats",header:"Pools",sortAccessor:function(e){var t=e.PoolStats;return(void 0===t?[]:t).reduce((function(e,t){return e+(t.Usage||0)}),0)},defaultOrder:pi.DESCENDING,width:"120px",render:function(e){var t=e.row;return t.PoolStats?(0,Nl.jsx)(_y,{pools:t.PoolStats}):"\u2014"},align:pi.LEFT},{name:"LoadAverage",header:"Load average",sortAccessor:function(e){var t=e.LoadAverage;return(void 0===t?[]:t).slice(0,1).reduce((function(e,t){return e+t}),0)},defaultOrder:pi.DESCENDING,width:"200px",render:function(e){var t=e.row;return t.LoadAverage&&t.LoadAverage.length>0?(0,Nl.jsx)(jT,{value:t.LoadAverage[0],percents:!0,capacity:100,colorizeProgress:!0}):"\u2014"},align:pi.LEFT}],EO=function(e){var t=e.nodes;return(0,Nl.jsx)(pi,{theme:"yandex-cloud",data:t,columns:LO,settings:Bi})},DO=(0,ht.Z)("ydb-versions-grouped-node-tree"),NO=function t(n){var i=n.title,r=n.nodes,o=n.items,a=n.expanded,s=void 0!==a&&a,u=n.versionColor,l=n.versionsValues,c=n.level,d=void 0===c?0:c,h=(0,e.useState)(!1),f=(0,ne.Z)(h,2),p=f[0],g=f[1];(0,e.useEffect)((function(){g(s)}),[s]);var v=(0,Nl.jsx)(xO,{title:i,nodes:r,items:o,versionColor:u,versionsValues:l}),m=function(){g((function(e){return!e}))};return o?(0,Nl.jsx)("div",{className:DO({"first-level":0===d}),children:(0,Nl.jsx)(yO,{name:v,collapsed:!p,hasArrow:!0,onClick:m,onArrowClick:m,children:o.map((function(e,n){return(0,Nl.jsx)(t,{title:e.title,nodes:e.nodes,expanded:s,versionColor:e.versionColor,level:d+1},n)}))},i)}):(0,Nl.jsx)("div",{className:DO({"first-level":0===d}),children:(0,Nl.jsx)(yO,{name:v,collapsed:!p,hasArrow:!0,onClick:m,onArrowClick:m,children:(0,Nl.jsx)("div",{className:DO("dt-wrapper"),children:(0,Nl.jsx)(EO,{nodes:r||[]})})},i)})},MO=(0,ht.Z)("ydb-versions"),TO=function(t){var n=t.versionToColor,i=K(),r=ev((function(e){return e.clusterNodes})),o=r.nodes,a=void 0===o?[]:o,s=r.loading,u=r.wasLoaded;Jg((function(){return i(fu())}),[i],!0);var l=(0,e.useState)(RI.VERSION),c=(0,ne.Z)(l,2),d=c[0],h=c[1],f=(0,e.useState)(!1),p=(0,ne.Z)(f,2),g=p[0],v=p[1],m=function(e){h(e)};if(s&&!u)return(0,Nl.jsx)(jI,{});var _=function(e,t,n){if(e&&e.length){if(n===RI.VERSION){var i=(0,rn.groupBy)(e,"Version");return Object.keys(i).map((function(e){var n=i[e].filter((function(e){var t=e.Tenants;return Boolean(t)})),r=(0,rn.groupBy)(n,"Tenants"),o=Object.keys(r).map((function(e){return{title:e,nodes:r[e]}})).sort(HI);return o.length?{title:e,items:o,versionColor:null===t||void 0===t?void 0:t.get(Vg(e))}:null})).filter((function(e){return Boolean(e)}))}var r=e.filter((function(e){var t=e.Tenants;return Boolean(t)})),o=(0,rn.groupBy)(r,"Tenants");return Object.keys(o).map((function(e){var n=Qg(o[e],t),i=(0,rn.groupBy)(o[e],"Version"),r=Object.keys(i).map((function(e){return{title:e,nodes:i[e],versionColor:null===t||void 0===t?void 0:t.get(Vg(e))}}));return r.length?{title:e,items:r,versionsValues:n}:null})).filter((function(e){return Boolean(e)})).sort(HI)}}(a,n,d),y=function(e,t){if(e&&e.length){var n=e.filter((function(e){var t=e.Roles;return null===t||void 0===t?void 0:t.includes("Storage")})),i=(0,rn.groupBy)(n,"Version");return Object.keys(i).map((function(e){return{title:e,nodes:i[e],versionColor:null===t||void 0===t?void 0:t.get(Vg(e))}}))}}(a,n),b=function(e,t){if(e&&e.length){var n=e.filter((function(e){return!e.Roles})),i=(0,rn.groupBy)(n,"Version");return Object.keys(i).map((function(e){return{title:e,nodes:i[e],versionColor:null===t||void 0===t?void 0:t.get(Vg(e))}}))}}(a,n),w=null!==y&&void 0!==y&&y.length?(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)("h3",{children:"Storage nodes"}),y.map((function(e){var t=e.title,n=e.nodes,i=e.items,r=e.versionColor;return(0,Nl.jsx)(NO,{title:t,nodes:n,items:i,versionColor:r},"storage-nodes-".concat(t))}))]}):null,C=null!==_&&void 0!==_&&_.length?(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)("h3",{children:"Database nodes"}),(0,Nl.jsxs)("div",{className:MO("controls"),children:[(0,Nl.jsxs)("div",{className:MO("group"),children:[(0,Nl.jsx)("span",{className:MO("label"),children:"Group by:"}),(0,Nl.jsxs)(Dy,{value:d,onUpdate:m,children:[(0,Nl.jsx)(Dy.Option,{value:RI.TENANT,children:RI.TENANT}),(0,Nl.jsx)(Dy.Option,{value:RI.VERSION,children:RI.VERSION})]})]}),(0,Nl.jsx)(ZI,{className:MO("checkbox"),onChange:function(){return v((function(e){return!e}))},checked:g,children:"All expanded"})]}),_.map((function(e){var t=e.title,n=e.nodes,i=e.items,r=e.versionColor,o=e.versionsValues;return(0,Nl.jsx)(NO,{title:t,nodes:n,items:i,expanded:g,versionColor:r,versionsValues:o},"tenant-nodes-".concat(t))}))]}):null,k=null!==b&&void 0!==b&&b.length?(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)("h3",{children:"Other nodes"}),b.map((function(e){var t=e.title,n=e.nodes,i=e.items,r=e.versionColor,o=e.versionsValues;return(0,Nl.jsx)(NO,{title:t,nodes:n,items:i,versionColor:r,versionsValues:o},"other-nodes-".concat(t))}))]}):null;return(0,Nl.jsxs)("div",{className:MO("versions"),children:[w,C,k]})},IO=(0,ht.Z)("tag"),OO=function(e){var t=e.text,n=e.type;return(0,Nl.jsx)("div",{className:IO({type:n}),children:t})},AO=(0,ht.Z)("tags"),RO=function(e){var t=e.tags,n=e.tagsType,i=e.className,r=void 0===i?"":i;return(0,Nl.jsx)("div",{className:AO(null,r),children:t&&t.map((function(e,t){return(0,Nl.jsx)(OO,{text:e,type:n},t)}))})},PO=(0,ht.Z)("tablet-icon"),ZO=function(e){var t=e.text,n=e.className;return(0,Nl.jsx)("div",{className:PO(null,n),children:(0,Nl.jsx)("div",{className:PO("type"),children:t||"T"})})},FO=(0,ht.Z)("tablet"),jO=function(e){var t,n=e.tablet,i=void 0===n?{}:n,r=e.tenantName,o=i.TabletId,a=i.NodeId,s=i.Type,u=null===(t=i.Overall)||void 0===t?void 0:t.toLowerCase(),l=o&&_g(bg.tablet,{id:o},{nodeId:a,tenantName:r,type:s});return(0,Nl.jsx)(py,{className:FO("wrapper"),content:(0,Nl.jsx)(jl,{data:i,className:FO("popup-content")}),children:(0,Nl.jsx)(vv,{to:l,children:(0,Nl.jsx)(ZO,{className:FO({status:u}),text:wi(i.Type)})})})},HO=(0,ht.Z)("ydb-external-link-with-icon"),BO=function(e){var t=e.title,n=e.url;return(0,Nl.jsxs)(yv,{href:n,target:"_blank",className:HO(),children:[t,"\xa0",(0,Nl.jsx)(Ob,{name:"external",viewBox:"0 0 16 16",width:16,height:16})]})},zO=(0,ht.Z)("ydb-cluster-versions-bar"),WO=function(e){var t=e.versionsValues,n=void 0===t?[]:t;return(0,Nl.jsxs)("div",{className:zO(),children:[(0,Nl.jsx)(kO,{value:100,stack:n,size:"s"}),(0,Nl.jsx)("div",{className:zO("versions"),children:n.map((function(e,t){return(0,Nl.jsx)("div",{className:zO("version-title"),style:{color:e.color},title:e.version,children:"".concat(e.version).concat(t===n.length-1?"":",")},e.version)}))})]})},VO=(0,ht.Z)("ydb-cluster-info-skeleton"),YO=function(){return(0,Nl.jsxs)("div",{className:VO("label"),children:[(0,Nl.jsx)(gb,{className:VO("label__text")}),(0,Nl.jsx)("div",{className:VO("label__dots")})]})},UO=function(e){var t=e.rows,n=void 0===t?8:t,i=e.className;return(0,Nl.jsxs)("div",{className:VO(null,i),children:[(0,Ct.Z)(new Array(n)).map((function(e,t){return(0,Nl.jsxs)("div",{className:VO("row"),children:[(0,Nl.jsx)(YO,{}),(0,Nl.jsx)(gb,{className:VO("value")})]},"skeleton-row-".concat(t))})),(0,Nl.jsxs)("div",{className:VO("row"),children:[(0,Nl.jsx)(YO,{}),(0,Nl.jsx)(gb,{className:VO("versions")})]},"versions")]})},KO=JSON.parse('{"disk-type":"Disk Type","erasure":"Erasure","allocated":"Allocated","available":"Available","usage":"Usage","dc":"DC","tablets":"Tablets","databases":"Databases","nodes":"Nodes","load":"Load","storage-size":"Storage size","storage-groups":"Storage groups, {{diskType}}","links":"Links","versions":"Versions"}'),qO=JSON.parse('{"disk-type":"\u0422\u0438\u043f \u0434\u0438\u0441\u043a\u0430","erasure":"\u0420\u0435\u0436\u0438\u043c","allocated":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e","available":"\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e","usage":"\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435","dc":"\u0414\u0426","tablets":"\u0422\u0430\u0431\u043b\u0435\u0442\u043a\u0438","databases":"\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445","nodes":"\u0423\u0437\u043b\u044b","load":"\u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430","storage-size":"\u0420\u0430\u0437\u043c\u0435\u0440 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430","storage-groups":"\u0413\u0440\u0443\u043f\u043f\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, {{diskType}}","links":"\u0421\u0441\u044b\u043b\u043a\u0438","versions":"\u0412\u0435\u0440\u0441\u0438\u0438"}'),GO="ydb-cluster";Va.registerKeyset(Fa.En,GO,KO),Va.registerKeyset(Fa.Ru,GO,qO);var $O=Va.keyset(GO),QO=function(e,t){return e.Type===di.TxAllocator?1:t.Type===di.TxAllocator?-1:0},XO=(0,ht.Z)("cluster-info"),JO=function(e){var t=e.stats,n=t.diskType,i=t.erasure,r=t.allocatedSize,o=t.availableSize,a=Xa(Math.max(r,o),2),s=es({value:r,size:a}),u=es({value:o,size:a}),l=Math.round(r/(r+o)*100),c=[{label:$O("disk-type"),value:n},{label:$O("erasure"),value:i},{label:$O("allocated"),value:s},{label:$O("available"),value:u},{label:$O("usage"),value:l+"%"}];return(0,Nl.jsx)(Tl,{dots:!0,info:c,className:XO("groups-stats-popup-content"),size:"s"})},eA=function(e){var t=e.stats;return(0,Nl.jsx)("div",{className:XO("storage-groups-stats"),children:Object.values(t).map((function(e){return(0,Nl.jsx)(py,{placement:["right"],content:(0,Nl.jsx)(JO,{stats:e}),children:(0,Nl.jsx)(jT,{className:XO("groups-stats-bar"),value:e.createdGroups,capacity:e.totalGroups})},e.erasure)}))})},tA=function(e,t,n,i,r){var o=[];return e.DataCenters&&o.push({label:$O("dc"),value:(0,Nl.jsx)(RO,{tags:e.DataCenters})}),e.SystemTablets&&o.push({label:$O("tablets"),value:(0,Nl.jsx)("div",{className:XO("system-tablets"),children:e.SystemTablets.sort(QO).map((function(e,t){return(0,Nl.jsx)(jO,{tablet:e},t)}))})}),e.Tenants&&o.push({label:$O("databases"),value:e.Tenants}),o.push({label:$O("nodes"),value:(0,Nl.jsx)(jT,{value:null===e||void 0===e?void 0:e.NodesAlive,capacity:null===e||void 0===e?void 0:e.NodesTotal})},{label:$O("load"),value:(0,Nl.jsx)(jT,{value:null===e||void 0===e?void 0:e.LoadAverage,capacity:null===e||void 0===e?void 0:e.NumberOfCpus})},{label:$O("storage-size"),value:(0,Nl.jsx)(jT,{value:null===e||void 0===e?void 0:e.StorageUsed,capacity:null===e||void 0===e?void 0:e.StorageTotal,formatValues:ds})}),Object.keys(n).length&&o.push.apply(o,(0,Ct.Z)(function(e){return Object.keys(e).map((function(t){return{label:$O("storage-groups",{diskType:t}),value:(0,Nl.jsx)(eA,{stats:e[t]})}}))}(n))),o.push.apply(o,(0,Ct.Z)(i).concat([{label:$O("links"),value:(0,Nl.jsx)("div",{className:XO("links"),children:r.map((function(e){var t=e.title,n=e.url;return(0,Nl.jsx)(BO,{title:t,url:n},t)}))})},{label:$O("versions"),value:(0,Nl.jsx)(WO,{versionsValues:t})}])),o},nA=function(e){var t=e.cluster,n=void 0===t?{}:t,i=e.versionsValues,r=void 0===i?[]:i,o=e.groupsStats,a=void 0===o?{}:o,s=e.loading,u=e.error,l=e.additionalClusterProps,c=void 0===l?{}:l,d=ev((function(e){return e.singleClusterMode})),h=tv(Ui),f=(0,ne.Z)(h,2),p=f[0],g=f[1],v=ng+"/internal";d&&!hg&&(v="/internal");var m=c.info,_=void 0===m?[]:m,y=c.links,b=void 0===y?[]:y,w=tA(n,r,a,_,[{title:xi,url:v}].concat((0,Ct.Z)(b)));return(0,Nl.jsxs)("div",{className:XO(),children:[(0,Nl.jsxs)("div",{className:XO("header"),onClick:function(){g(!p)},children:[function(){var e;return s?(0,Nl.jsx)(gb,{className:XO("title-skeleton")}):(0,Nl.jsx)(hy,{size:"m",status:null===n||void 0===n?void 0:n.Overall,name:null!==(e=null===n||void 0===n?void 0:n.Name)&&void 0!==e?e:Li,className:XO("title")})}(),(0,Nl.jsx)(Ob,{name:"chevron-down",width:24,height:24,className:XO("header__expand-button",{rotate:p})})]}),(0,Nl.jsx)("div",{className:XO("info",{hidden:p}),children:s?(0,Nl.jsx)(UO,{}):(u&&XO("error"),(0,Nl.jsx)(Tl,{dots:!0,info:w}))})]})},iA={tenants:"tenants",nodes:"nodes",storage:"storage",versions:"versions"},rA=[{id:iA.tenants,title:"Databases"},{id:iA.nodes,title:"Nodes"},{id:iA.storage,title:"Storage"},{id:iA.versions,title:"Versions"}],oA=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:iA.tenants,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _g(bg.cluster,{activeTab:e},t)},aA=(0,ht.Z)("cluster");var sA=function(t){var n=t.additionalClusterProps,i=t.additionalTenantsProps,r=t.additionalNodesProps,o=t.additionalVersionsProps,a=(0,e.useRef)(null),s=K(),u=dt(bg.cluster),l=((null===u||void 0===u?void 0:u.params)||{}).activeTab,c=void 0===l?iA.tenants:l,d=ct(),h=Zt().parse(d.search,{ignoreQueryPrefix:!0}),f=h.clusterName,p=ev((function(e){return e.cluster})),g=p.data,v=void 0===g?{}:g,m=p.loading,_=p.wasLoaded,y=p.error,b=p.groupsStats,w=ev((function(e){return e.clusterNodes})),C=w.nodes,k=w.loading,S=w.wasLoaded,x=v.Name,L=m&&!_||k&&!S;(0,e.useEffect)((function(){s(fu())}),[s]),Jg((function(){return s(lu(f?String(f):void 0))}),[s,f],!0),(0,e.useEffect)((function(){s(Vp("cluster",{}))}),[s,x]);var E=(0,e.useMemo)((function(){return null!==o&&void 0!==o&&o.getVersionToColorMap?null===o||void 0===o?void 0:o.getVersionToColorMap():$g(null===v||void 0===v?void 0:v.Versions)}),[o,v]),D=(0,e.useMemo)((function(){return Qg(C,E)}),[C,E]);return(0,Nl.jsxs)("div",{className:aA(),ref:a,children:[(0,Nl.jsx)(nA,{cluster:v,groupsStats:b,versionsValues:D,loading:L,error:y,additionalClusterProps:n}),(0,Nl.jsx)("div",{className:aA("tabs"),children:(0,Nl.jsx)(Wg,{size:"l",allowNotSelected:!0,activeTab:c,items:rA,wrapTo:function(e,t){var n=e.id,i=oA(n,h);return(0,Nl.jsx)(vv,{to:i,children:t},n)}})}),(0,Nl.jsx)("div",{children:function(){switch(c){case iA.tenants:return(0,Nl.jsx)(Ib,{additionalTenantsProps:i});case iA.nodes:return(0,Nl.jsx)(NI,{parentContainer:a.current,additionalNodesProps:r});case iA.storage:return(0,Nl.jsx)(AT,{parentContainer:a.current,additionalNodesProps:r});case iA.versions:return(0,Nl.jsx)(TO,{versionToColor:E});default:return null}}()})]})},uA="undefined"!==typeof window?window:null,lA=null===uA,cA=lA?void 0:uA.document,dA="addEventListener",hA="removeEventListener",fA="getBoundingClientRect",pA="_a",gA="_b",vA="_c",mA="horizontal",_A=function(){return!1},yA=lA?"calc":["","-webkit-","-moz-","-o-"].filter((function(e){var t=cA.createElement("div");return t.style.cssText="width:"+e+"calc(9px)",!!t.style.length})).shift()+"calc",bA=function(e){return"string"===typeof e||e instanceof String},wA=function(e){if(bA(e)){var t=cA.querySelector(e);if(!t)throw new Error("Selector "+e+" did not match a DOM element");return t}return e},CA=function(e,t,n){var i=e[t];return void 0!==i?i:n},kA=function(e,t,n,i){if(t){if("end"===i)return 0;if("center"===i)return e/2}else if(n){if("start"===i)return 0;if("center"===i)return e/2}return e},SA=function(e,t){var n=cA.createElement("div");return n.className="gutter gutter-"+t,n},xA=function(e,t,n){var i={};return bA(t)?i[e]=t:i[e]=yA+"("+t+"% - "+n+"px)",i},LA=function(e,t){var n;return(n={})[e]=t+"px",n},EA=function(e,t){if(void 0===t&&(t={}),lA)return{};var n,i,r,o,a,s,u=e;Array.from&&(u=Array.from(u));var l=wA(u[0]).parentNode,c=getComputedStyle?getComputedStyle(l):null,d=c?c.flexDirection:null,h=CA(t,"sizes")||u.map((function(){return 100/u.length})),f=CA(t,"minSize",100),p=Array.isArray(f)?f:u.map((function(){return f})),g=CA(t,"maxSize",1/0),v=Array.isArray(g)?g:u.map((function(){return g})),m=CA(t,"expandToMin",!1),_=CA(t,"gutterSize",10),y=CA(t,"gutterAlign","center"),b=CA(t,"snapOffset",30),w=Array.isArray(b)?b:u.map((function(){return b})),C=CA(t,"dragInterval",1),k=CA(t,"direction",mA),S=CA(t,"cursor",k===mA?"col-resize":"row-resize"),x=CA(t,"gutter",SA),L=CA(t,"elementStyle",xA),E=CA(t,"gutterStyle",LA);function D(e,t,i,r){var o=L(n,t,i,r);Object.keys(o).forEach((function(t){e.style[t]=o[t]}))}function N(){return s.map((function(e){return e.size}))}function M(e){return"touches"in e?e.touches[0][i]:e[i]}function T(e){var t=s[this.a],n=s[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,D(t.element,t.size,this[gA],t.i),D(n.element,n.size,this[vA],n.i)}function I(e){var n,i=s[this.a],r=s[this.b];this.dragging&&(n=M(e)-this.start+(this[gA]-this.dragOffset),C>1&&(n=Math.round(n/C)*C),n<=i.minSize+i.snapOffset+this[gA]?n=i.minSize+this[gA]:n>=this.size-(r.minSize+r.snapOffset+this[vA])&&(n=this.size-(r.minSize+this[vA])),n>=i.maxSize-i.snapOffset+this[gA]?n=i.maxSize+this[gA]:n<=this.size-(r.maxSize-r.snapOffset+this[vA])&&(n=this.size-(r.maxSize+this[vA])),T.call(this,n),CA(t,"onDrag",_A)(N()))}function O(){var e=s[this.a].element,t=s[this.b].element,i=e[fA](),a=t[fA]();this.size=i[n]+a[n]+this[gA]+this[vA],this.start=i[r],this.end=i[o]}function A(e){var t=function(e){if(!getComputedStyle)return null;var t=getComputedStyle(e);if(!t)return null;var n=e[a];return 0===n?null:n-=k===mA?parseFloat(t.paddingLeft)+parseFloat(t.paddingRight):parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)}(l);if(null===t)return e;if(p.reduce((function(e,t){return e+t}),0)>t)return e;var n=0,i=[],r=e.map((function(r,o){var a=t*r/100,s=kA(_,0===o,o===e.length-1,y),u=p[o]+s;return a<u?(n+=u-a,i.push(0),u):(i.push(a-u),a)}));return 0===n?e:r.map((function(e,r){var o=e;if(n>0&&i[r]-n>0){var a=Math.min(n,i[r]-n);n-=a,o=e-a}return o/t*100}))}function R(){var e=this,n=s[e.a].element,i=s[e.b].element;e.dragging&&CA(t,"onDragEnd",_A)(N()),e.dragging=!1,uA[hA]("mouseup",e.stop),uA[hA]("touchend",e.stop),uA[hA]("touchcancel",e.stop),uA[hA]("mousemove",e.move),uA[hA]("touchmove",e.move),e.stop=null,e.move=null,n[hA]("selectstart",_A),n[hA]("dragstart",_A),i[hA]("selectstart",_A),i[hA]("dragstart",_A),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",i.style.userSelect="",i.style.webkitUserSelect="",i.style.MozUserSelect="",i.style.pointerEvents="",e.gutter.style.cursor="",e.parent.style.cursor="",cA.body.style.cursor=""}function P(e){if(!("button"in e)||0===e.button){var n=this,i=s[n.a].element,r=s[n.b].element;n.dragging||CA(t,"onDragStart",_A)(N()),e.preventDefault(),n.dragging=!0,n.move=I.bind(n),n.stop=R.bind(n),uA[dA]("mouseup",n.stop),uA[dA]("touchend",n.stop),uA[dA]("touchcancel",n.stop),uA[dA]("mousemove",n.move),uA[dA]("touchmove",n.move),i[dA]("selectstart",_A),i[dA]("dragstart",_A),r[dA]("selectstart",_A),r[dA]("dragstart",_A),i.style.userSelect="none",i.style.webkitUserSelect="none",i.style.MozUserSelect="none",i.style.pointerEvents="none",r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",n.gutter.style.cursor=S,n.parent.style.cursor=S,cA.body.style.cursor=S,O.call(n),n.dragOffset=M(e)-n.end}}k===mA?(n="width",i="clientX",r="left",o="right",a="clientWidth"):"vertical"===k&&(n="height",i="clientY",r="top",o="bottom",a="clientHeight"),h=A(h);var Z=[];function F(e){var t=e.i===Z.length,n=t?Z[e.i-1]:Z[e.i];O.call(n);var i=t?n.size-e.minSize-n[vA]:e.minSize+n[gA];T.call(n,i)}return s=u.map((function(e,t){var i,r={element:wA(e),size:h[t],minSize:p[t],maxSize:v[t],snapOffset:w[t],i:t};if(t>0&&((i={a:t-1,b:t,dragging:!1,direction:k,parent:l})[gA]=kA(_,t-1===0,!1,y),i[vA]=kA(_,!1,t===u.length-1,y),"row-reverse"===d||"column-reverse"===d)){var o=i.a;i.a=i.b,i.b=o}if(t>0){var a=x(t,k,r.element);!function(e,t,i){var r=E(n,t,i);Object.keys(r).forEach((function(t){e.style[t]=r[t]}))}(a,_,t),i[pA]=P.bind(i),a[dA]("mousedown",i[pA]),a[dA]("touchstart",i[pA]),l.insertBefore(a,r.element),i.gutter=a}return D(r.element,r.size,kA(_,0===t,t===u.length-1,y),t),t>0&&Z.push(i),r})),s.forEach((function(e){var t=e.element[fA]()[n];t<e.minSize&&(m?F(e):e.minSize=t)})),{setSizes:function(e){var t=A(e);t.forEach((function(e,n){if(n>0){var i=Z[n-1],r=s[i.a],o=s[i.b];r.size=t[n-1],o.size=e,D(r.element,r.size,i[gA],r.i),D(o.element,o.size,i[vA],o.i)}}))},getSizes:N,collapse:function(e){F(s[e])},destroy:function(e,t){Z.forEach((function(i){if(!0!==t?i.parent.removeChild(i.gutter):(i.gutter[hA]("mousedown",i[pA]),i.gutter[hA]("touchstart",i[pA])),!0!==e){var r=L(n,i.a.size,i[gA]);Object.keys(r).forEach((function(e){s[i.a].element.style[e]="",s[i.b].element.style[e]=""}))}}))},parent:l,pairs:Z}};function DA(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&-1===t.indexOf(i)&&(n[i]=e[i]);return n}var NA=function(t){function n(){t.apply(this,arguments)}return t&&(n.__proto__=t),n.prototype=Object.create(t&&t.prototype),n.prototype.constructor=n,n.prototype.componentDidMount=function(){var e=this.props;e.children;var t=e.gutter,n=DA(e,["children","gutter"]);n.gutter=function(e,n){var i;return t?i=t(e,n):(i=document.createElement("div")).className="gutter gutter-"+n,i.__isSplitGutter=!0,i},this.split=EA(this.parent.children,n)},n.prototype.componentDidUpdate=function(e){var t=this,n=this.props;n.children;var i=n.minSize,r=n.sizes,o=n.collapsed,a=DA(n,["children","minSize","sizes","collapsed"]),s=e.minSize,u=e.sizes,l=e.collapsed,c=["maxSize","expandToMin","gutterSize","gutterAlign","snapOffset","dragInterval","direction","cursor"].map((function(n){return t.props[n]!==e[n]})).reduce((function(e,t){return e||t}),!1);if(Array.isArray(i)&&Array.isArray(s)){var d=!1;i.forEach((function(e,t){d=d||e!==s[t]})),c=c||d}else c=!(!Array.isArray(i)&&!Array.isArray(s))||(c||i!==s);if(c)a.minSize=i,a.sizes=r||this.split.getSizes(),this.split.destroy(!0,!0),a.gutter=function(e,t,n){return n.previousSibling},this.split=EA(Array.from(this.parent.children).filter((function(e){return!e.__isSplitGutter})),a);else if(r){var h=!1;r.forEach((function(e,t){h=h||e!==u[t]})),h&&this.split.setSizes(this.props.sizes)}Number.isInteger(o)&&(o!==l||c)&&this.split.collapse(o)},n.prototype.componentWillUnmount=function(){this.split.destroy(),delete this.split},n.prototype.render=function(){var t=this,n=this.props;n.sizes,n.minSize,n.maxSize,n.expandToMin,n.gutterSize,n.gutterAlign,n.snapOffset,n.dragInterval,n.direction,n.cursor,n.gutter,n.elementStyle,n.gutterStyle,n.onDrag,n.onDragStart,n.onDragEnd,n.collapsed;var i=n.children,r=DA(n,["sizes","minSize","maxSize","expandToMin","gutterSize","gutterAlign","snapOffset","dragInterval","direction","cursor","gutter","elementStyle","gutterStyle","onDrag","onDragStart","onDragEnd","collapsed","children"]);return e.createElement("div",Object.assign({},{ref:function(e){t.parent=e}},r),i)},n}(e.Component);NA.propTypes={sizes:Ae().arrayOf(Ae().number),minSize:Ae().oneOfType([Ae().number,Ae().arrayOf(Ae().number)]),maxSize:Ae().oneOfType([Ae().number,Ae().arrayOf(Ae().number)]),expandToMin:Ae().bool,gutterSize:Ae().number,gutterAlign:Ae().string,snapOffset:Ae().oneOfType([Ae().number,Ae().arrayOf(Ae().number)]),dragInterval:Ae().number,direction:Ae().string,cursor:Ae().string,gutter:Ae().func,elementStyle:Ae().func,gutterStyle:Ae().func,onDrag:Ae().func,onDragStart:Ae().func,onDragEnd:Ae().func,collapsed:Ae().number,children:Ae().arrayOf(Ae().element)},NA.defaultProps={sizes:void 0,minSize:void 0,maxSize:void 0,expandToMin:void 0,gutterSize:void 0,gutterAlign:void 0,snapOffset:void 0,dragInterval:void 0,direction:void 0,cursor:void 0,gutter:void 0,elementStyle:void 0,gutterStyle:void 0,onDrag:void 0,onDragStart:void 0,onDragEnd:void 0,collapsed:void 0,children:void 0};var MA=NA,TA=(0,ht.Z)("kv-split"),IA=[0,100],OA=[50,50];var AA=function(t){var n=(0,e.useState)(),i=(0,ne.Z)(n,2),r=i[0],o=i[1],a=function(e){var n=t.defaultSizePaneKey;localStorage.setItem(n,e.join(","))};return(0,e.useEffect)((function(){var e=t.collapsedSizes;if(t.triggerCollapse){var n=e||IA;a(n),o(n)}}),[t.triggerCollapse]),(0,e.useEffect)((function(){var e=t.triggerExpand,n=t.defaultSizes||OA;e&&(a(n),o(n))}),[t.triggerExpand]),(0,Nl.jsx)(e.Fragment,{children:(0,Nl.jsx)(MA,{direction:t.direction||"horizontal",sizes:r||function(){var e,n=t.defaultSizePaneKey,i=t.defaultSizes,r=void 0===i?OA:i,o=t.initialSizes;return o||((null===(e=localStorage.getItem(n))||void 0===e?void 0:e.split(",").map(Number))||r)}(),minSize:t.minSize||[0,0],onDrag:function(e){var n=t.onSplitDragAdditional;n&&n(),a(e)},className:TA(null,t.direction||"horizontal"),gutterSize:8,onDragStart:function(){var e=t.onSplitStartDragAdditional;e&&e(),o(void 0)},expandToMin:!0,children:t.children})})},RA=AA,PA=n(50348);(0,PA.withNaming)({e:"__",m:"_",v:"_"});function ZA(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16",fill:"none","aria-hidden":!0},t),e.createElement("path",{d:"M15.5 8C15.5 12.1421 12.1421 15.5 8 15.5C3.85786 15.5 0.5 12.1421 0.5 8C0.5 3.85786 3.85786 0.5 8 0.5C12.1421 0.5 15.5 3.85786 15.5 8Z",stroke:"currentColor",strokeOpacity:"0.15"}),e.createElement("path",{opacity:"0.5",fillRule:"evenodd",clipRule:"evenodd",d:"M8.46436 9.92432H7.09473C7.09115 9.72738 7.08936 9.60742 7.08936 9.56445C7.08936 9.12044 7.16276 8.75521 7.30957 8.46875C7.45638 8.18229 7.75 7.86003 8.19043 7.50195C8.63086 7.14388 8.89404 6.90934 8.97998 6.79834C9.11247 6.62288 9.17871 6.42953 9.17871 6.21826C9.17871 5.92464 9.06144 5.6731 8.8269 5.46362C8.59237 5.25415 8.27637 5.14941 7.87891 5.14941C7.49577 5.14941 7.17529 5.25863 6.91748 5.47705C6.65967 5.69548 6.48242 6.02848 6.38574 6.47607L5 6.3042C5.03939 5.66325 5.31242 5.11898 5.81909 4.67139C6.32577 4.22379 6.99088 4 7.81445 4C8.68099 4 9.37028 4.22648 9.88232 4.67944C10.3944 5.13241 10.6504 5.65966 10.6504 6.26123C10.6504 6.59424 10.5564 6.90934 10.3684 7.20654C10.1804 7.50375 9.77849 7.90836 9.1626 8.42041C8.84391 8.68539 8.64608 8.89844 8.56909 9.05957C8.49211 9.2207 8.45719 9.50895 8.46436 9.92432ZM7.09473 11.9546V10.4453H8.604V11.9546H7.09473Z",fill:"currentColor"}))}var FA=(0,PA.withNaming)({n:"gc-",e:"__",m:"_",v:"_"})("help-popover"),jA=16;function HA(t){var n;return e.createElement(Xy,Object.assign({},t,{className:FA(null,t.className)}),e.createElement("button",Object.assign({ref:t.buttonRef,type:"button"},t.buttonProps,{className:FA("button",null===(n=t.buttonProps)||void 0===n?void 0:n.className)}),e.createElement(yo.J,{data:ZA,size:jA})))}var BA=JSON.parse('{"common.created":"Created","common.type":"Type"}'),zA=JSON.parse('{"common.created":"\u0421\u043e\u0437\u0434\u0430\u043d\u043e","common.type":"\u0422\u0438\u043f"}'),WA="ydb-components-info-viewer";Va.registerKeyset(Fa.En,WA,BA),Va.registerKeyset(Fa.Ru,WA,zA);var VA,YA=Va.keyset(WA),UA=Al({values:{PathType:function(e){return null===e||void 0===e?void 0:e.substring("EPathType".length)},CreateStep:_s},labels:{PathType:YA("common.type"),CreateStep:YA("common.created")}}),KA=["value","withSpeedLabel"],qA=function(e){var t=e.value,n=e.withSpeedLabel,i=nn(e,KA),r=es(Rt({value:t,withSpeedLabel:n},i)),o=es({value:t,withSpeedLabel:n,size:"b"});return(0,Nl.jsx)("span",{title:o,children:r})},GA=function(e,t){return e?(0,Nl.jsx)(qA,Rt({value:e,significantDigits:2},t)):null},$A=Al({values:{Type:function(e){return null===e||void 0===e?void 0:e.substring(10)},State:function(e){return null===e||void 0===e?void 0:e.substring(11)},KeyColumnNames:function(e){return null===e||void 0===e?void 0:e.join(", ")},DataColumnNames:function(e){return null===e||void 0===e?void 0:e.join(", ")},DataSize:GA},labels:{KeyColumnNames:"Columns",DataColumnNames:"Includes"}}),QA=(VA={},(0,wt.Z)(VA,Lc.METERING_MODE_REQUEST_UNITS,"request-units"),(0,wt.Z)(VA,Lc.METERING_MODE_RESERVED_CAPACITY,"reserved-capacity"),VA),XA=Al({values:{Partitions:function(e){return fs((null===e||void 0===e?void 0:e.length)||0)},PQTabletConfig:function(e){var t=Math.round(e.PartitionConfig.LifetimeSeconds/_i*100)/100;return"".concat(fs(t)," hours")}},labels:{Partitions:"Partitions count",PQTabletConfig:"Retention"}}),JA=Al({values:{Codecs:function(e){return e&&Object.values(e.Codecs||{}).join(", ")},MeteringMode:function(e){return e&&QA[e]}},labels:{MeteringMode:"Metering mode"}}),eR=Al({values:{StorageLimitBytes:os,WriteSpeedInBytesPerSecond:as},labels:{StorageLimitBytes:"Retention storage",WriteSpeedInBytesPerSecond:"Partitions write speed"}}),tR=Al({values:{Mode:function(e){return null===e||void 0===e?void 0:e.substring("ECdcStreamMode".length)},Format:function(e){return null===e||void 0===e?void 0:e.substring("ECdcStreamFormat".length)}}}),nR=Al({values:{CPU:vs,Memory:GA,Storage:GA,Network:as,ReadThroughput:as,WriteThroughput:as},defaultValueFormatter:fs}),iR=Al({values:{FollowerCount:fs},labels:{FollowerCountPerDataCenter:"FollowerCountPerDC"},defaultValueFormatter:function(e){return e&&String(e)}}),rR=Al({values:{FollowerCount:fs,CrossDataCenterFollowerCount:fs}}),oR=Al({values:{DataSize:GA,IndexSize:GA,LastAccessTime:_s,LastUpdateTime:_s},defaultValueFormatter:fs}),aR=new Set(["Mode","Format"]),sR=function(e){var t,n,i,r,o,a=e.data;if(!a)return(0,Nl.jsx)("div",{className:"error",children:"No CDC Stream data"});var s,u=null===(t=a.PathDescription)||void 0===t?void 0:t.CdcStreamDescription,l=[];for(s in l.push(UA("PathType",null===(n=a.PathDescription)||void 0===n||null===(i=n.Self)||void 0===i?void 0:i.PathType)),l.push(UA("CreateStep",null===(r=a.PathDescription)||void 0===r||null===(o=r.Self)||void 0===o?void 0:o.CreateStep)),u)aR.has(s)&&l.push(tR(s,null===u||void 0===u?void 0:u[s]));return(0,Nl.jsx)(Nl.Fragment,{children:l.length?(0,Nl.jsx)(Tl,{info:l}):(0,Nl.jsx)(Nl.Fragment,{children:"Empty"})})},uR=function(e){var t,n,i,r,o,a=e.data;if(!a)return(0,Nl.jsx)("div",{className:"error",children:"No PersQueueGroup data"});var s=null===(t=a.PathDescription)||void 0===t?void 0:t.PersQueueGroup,u=[];return u.push(UA("PathType",null===(n=a.PathDescription)||void 0===n||null===(i=n.Self)||void 0===i?void 0:i.PathType)),u.push(UA("CreateStep",null===(r=a.PathDescription)||void 0===r||null===(o=r.Self)||void 0===o?void 0:o.CreateStep)),u.push(XA("Partitions",(null===s||void 0===s?void 0:s.Partitions)||[])),u.push(XA("PQTabletConfig",(null===s||void 0===s?void 0:s.PQTabletConfig)||{PartitionConfig:{LifetimeSeconds:0}})),(0,Nl.jsx)(Nl.Fragment,{children:u.length?(0,Nl.jsx)(Tl,{info:u}):(0,Nl.jsx)(Nl.Fragment,{children:"Empty"})})},lR=JSON.parse('{"acl.owner":"Owner","acl.empty":"No Acl data","summary.navigation":"Navigation","summary.showPreview":"Show preview","summary.copySchemaPath":"Copy schema path","actions.copied":"The path is copied to the clipboard","actions.notCopied":"Couldn\u2019t copy the path","actions.externalTableSelectUnavailable":"Select query for external tables available only with \'YQL - QueryService\' query mode. You need to turn in additional query modes in settings to enable it","actions.copyPath":"Copy path","actions.openPreview":"Open preview","actions.createTable":"Create table...","actions.createExternalTable":"Create external table...","actions.createTopic":"Create topic...","actions.dropTable":"Drop table...","actions.dropTopic":"Drop topic...","actions.alterTable":"Alter table...","actions.alterTopic":"Alter topic...","actions.selectQuery":"Select query...","actions.upsertQuery":"Upsert query..."}'),cR=JSON.parse('{"acl.owner":"\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446","acl.empty":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431 Acl","summary.navigation":"\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f","summary.showPreview":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u0435\u0432\u044c\u044e","summary.copySchemaPath":"\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c","actions.copied":"\u041f\u0443\u0442\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d","actions.notCopied":"\u041d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c","actions.externalTableSelectUnavailable":"Select \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \'YQL - QueryService\'. \u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0436\u0438\u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445","actions.copyPath":"\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c","actions.openPreview":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u0435\u0432\u044c\u044e","actions.createTable":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443...","actions.createExternalTable":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443...","actions.createTopic":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u043e\u043f\u0438\u043a...","actions.dropTable":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443...","actions.dropTopic":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u043e\u043f\u0438\u043a...","actions.alterTable":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443...","actions.alterTopic":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u043f\u0438\u043a...","actions.selectQuery":"Select \u0437\u0430\u043f\u0440\u043e\u0441...","actions.upsertQuery":"Upsert \u0437\u0430\u043f\u0440\u043e\u0441..."}'),dR="ydb-tenant";Va.registerKeyset(Fa.En,dR,lR),Va.registerKeyset(Fa.Ru,dR,cR);var hR=Va.keyset(dR),fR=(0,ht.Z)("ydb-acl"),pR=Rt(Rt({},Bi),{},{dynamicRender:!1,stickyTop:36}),gR=function(e){return e&&e.endsWith("@staff")&&!e.startsWith("svc_")?e.split("@")[0]:e},vR=[{name:"AccessType",header:"Access Type",sortable:!1,render:function(e){return e.row.AccessType}},{name:"AccessRights",header:"Access Rights",render:function(e){var t;return null===(t=e.row.AccessRights)||void 0===t?void 0:t.map((function(e,t){return(0,Nl.jsx)("div",{children:e},t)}))},sortable:!1},{name:"Subject",sortable:!1,render:function(e){var t=e.row;return gR(t.Subject)},width:140},{name:"InheritanceType",header:"Inheritance Type",render:function(e){var t;return null===(t=e.row.InheritanceType)||void 0===t?void 0:t.map((function(e,t){return(0,Nl.jsx)("div",{children:e},t)}))},sortable:!1}],mR=function(){var t=K(),n=ev((function(e){return e.schema})).currentSchemaPath,i=ev((function(e){return e.schemaAcl})),r=i.loading,o=i.error,a=i.acl,s=i.owner,u=i.wasLoaded;(0,e.useEffect)((function(){return n&&t(function(e){var t=e.path;return oa({request:window.api.getSchemaAcl({path:t}),actions:Rf})}({path:n})),function(){t({type:Pf})}}),[n,t]);return r&&!u?(0,Nl.jsx)(jI,{}):o?(0,Nl.jsx)(Sb,{error:o,className:fR("message-container")}):r||a||s?(0,Nl.jsx)("div",{className:fR(),children:(0,Nl.jsxs)("div",{className:fR("result"),children:[s?(0,Nl.jsxs)("div",{className:fR("owner-container"),children:[(0,Nl.jsx)("span",{className:fR("owner-label"),children:"".concat(hR("acl.owner"),": ")}),gR(s)]}):null,a&&a.length?(0,Nl.jsx)(pi,{theme:"yandex-cloud",columns:vR,data:a,settings:pR}):null]})}):(0,Nl.jsx)("div",{className:fR("message-container"),children:hR("acl.empty")})},_R=function(e){var t,n,i=(null===e||void 0===e?void 0:e.Self)||{},r=i.PathType,o=i.PathSubType;return t=r,(n=o)&&ed[n]||t&&td[t]},yR=JSON.parse('{"external-objects.source-type":"Source Type","external-objects.data-source":"Data Source","external-objects.location":"Location","external-objects.auth-method":"Auth Method","external-objects.auth-method.none":"None","external-objects.auth-method.service-account":"Service Account"}'),bR=JSON.parse('{"external-objects.source-type":"\u0422\u0438\u043f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430","external-objects.data-source":"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a","external-objects.location":"\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435","external-objects.auth-method":"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f","external-objects.auth-method.none":"\u041d\u0435\u0442","external-objects.auth-method.service-account":"\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442"}'),wR="ydb-tenant-objects-info";Va.registerKeyset(Fa.En,wR,yR),Va.registerKeyset(Fa.Ru,wR,bR);var CR,kR=Va.keyset(wR),SR=(0,ht.Z)("ydb-external-data-source-info"),xR=function(e){var t,n,i,r;return[{label:kR("external-objects.source-type"),value:null===(t=e.PathDescription)||void 0===t||null===(n=t.ExternalDataSourceDescription)||void 0===n?void 0:n.SourceType},UA("CreateStep",null===(i=e.PathDescription)||void 0===i||null===(r=i.Self)||void 0===r?void 0:r.CreateStep)]},LR=function(e){var t,n=(null===(t=e.PathDescription)||void 0===t?void 0:t.ExternalDataSourceDescription)||{},i=n.Location,r=n.Auth;return[].concat((0,Ct.Z)(xR(e)),[{label:kR("external-objects.location"),value:(0,Nl.jsx)(hy,{name:i,showStatus:!1,hasClipboardButton:!0,clipboardButtonAlwaysVisible:!0,className:SR("location")})},{label:kR("external-objects.auth-method"),value:null!==r&&void 0!==r&&r.ServiceAccount?kR("external-objects.auth-method.service-account"):kR("external-objects.auth-method.none")}])},ER=function(e){var t=e.data,n=e.prepareData,i=_R(null===t||void 0===t?void 0:t.PathDescription),r=ev((function(e){return e.schema})).error;return r?(0,Nl.jsx)(Sb,{error:r}):t?(0,Nl.jsx)(Tl,{title:i,info:n(t)}):(0,Nl.jsxs)("div",{className:"error",children:["No ",i," data"]})},DR=function(e){var t=e.data;return(0,Nl.jsx)(ER,{data:t,prepareData:LR})},NR=function(e){var t=e.data;return(0,Nl.jsx)(ER,{data:t,prepareData:xR})},MR=(0,ht.Z)("ydb-external-table-info"),TR=function(e,t){var n,i,r=((null===(n=e.PathDescription)||void 0===n?void 0:n.Self)||{}).CreateStep,o=(null===(i=e.PathDescription)||void 0===i?void 0:i.ExternalTableDescription)||{},a=o.SourceType,s=o.DataSourcePath,u=null===s||void 0===s?void 0:s.split("/").pop();return[{label:kR("external-objects.source-type"),value:a},UA("CreateStep",r),{label:kR("external-objects.data-source"),value:s&&(0,Nl.jsx)("span",{title:s,children:(0,Nl.jsx)(BO,{title:u||"",url:t})})}]},IR=function(e,t){var n,i,r=null===(n=e.PathDescription)||void 0===n||null===(i=n.ExternalTableDescription)||void 0===i?void 0:i.Location;return[].concat((0,Ct.Z)(TR(e,t)),[{label:kR("external-objects.location"),value:(0,Nl.jsx)(hy,{name:r,showStatus:!1,hasClipboardButton:!0,clipboardButtonAlwaysVisible:!0,className:MR("location")})}])},OR=function(e){var t,n,i=e.data,r=e.prepareData,o=ct(),a=vg(o),s=yg(Rt(Rt({},a),{},{schema:null===i||void 0===i||null===(t=i.PathDescription)||void 0===t||null===(n=t.ExternalTableDescription)||void 0===n?void 0:n.DataSourcePath})),u=_R(null===i||void 0===i?void 0:i.PathDescription),l=ev((function(e){return e.schema})).error;return l?(0,Nl.jsx)(Sb,{error:l}):i?(0,Nl.jsx)(Tl,{title:u,info:r(i,s)}):(0,Nl.jsxs)("div",{className:"error",children:["No ",u," data"]})},AR=function(e){var t=e.data;return(0,Nl.jsx)(OR,{data:t,prepareData:IR})},RR=function(e){var t=e.data;return(0,Nl.jsx)(OR,{data:t,prepareData:TR})},PR=n(1720),ZR=n.n(PR);function FR(e,t){var n="undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"===typeof e)return jR(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return jR(e,t)}(e))||t&&e&&"number"===typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function jR(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function HR(e){return"status"in e}function BR(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,r=e[t];if(r&&(n(r,i,t,e),!r.collapsed)){var o,a=FR(r.children);try{for(a.s();!(o=a.n()).done;){var s=o.value;BR(e,"".concat(t,"/").concat(s),n,i+1)}}catch(u){a.e(u)}finally{a.f()}}}function zR(e,t){var n="undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"===typeof e)return WR(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return WR(e,t)}(e))||t&&e&&"number"===typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function WR(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function VR(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function YR(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?VR(Object(n),!0).forEach((function(t){UR(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):VR(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function UR(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function KR(e){return YR(YR({},{collapsed:!0,loading:!1,loaded:!1,error:!1,children:[]}),{},{expandable:"database"===e.type||"directory"===e.type},e)}function qR(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case CR.ToggleCollapsed:return YR(YR({},e),{},UR({},t.payload.path,YR(YR({},e[t.payload.path]),{},{collapsed:!e[t.payload.path].collapsed})));case CR.StartLoading:return YR(YR({},e),{},UR({},t.payload.path,YR(YR({},e[t.payload.path]),{},{loading:!0,loaded:!1,error:!1,children:[]})));case CR.FinishLoading:var n=YR(YR({},e),{},UR({},t.payload.path,YR(YR({},e[t.payload.path]),{},{loading:!1,loaded:Boolean(t.payload.data),error:Boolean(t.payload.error)})));if(t.payload.data){n[t.payload.path].children=t.payload.data.map((function(e){return e.name}));var i,r=zR(t.payload.data);try{for(r.s();!(i=r.n()).done;){var o,a,s=i.value,u="".concat(t.payload.path,"/").concat(s.name),l=t.payload.activePath,c=void 0===l?"":l,d=null!==(o=null===(a=e[u])||void 0===a?void 0:a.collapsed)&&void 0!==o?o:!c.startsWith("".concat(u,"/"));n[u]=KR(YR(YR({},s),{},{collapsed:d,path:u}))}}catch(h){r.e(h)}finally{r.f()}}return n;case CR.ResetNode:return YR(YR({},e),{},UR({},t.payload.path,YR(YR({},e[t.payload.path]),{collapsed:!0,loading:!1,loaded:!1,error:!1,children:[]})));default:return e}}function GR(e,t){var n=[];return BR(e,t,(function(e,t){n.push(YR(YR({},e),{},{level:t}));var i=function(e,t){if(!e.collapsed)return e.loading?{path:e.path,status:"loading",level:t+1}:e.error?{path:e.path,status:"error",level:t+1}:e.loaded&&0===e.children.length?{path:e.path,status:"empty",level:t+1}:void 0}(e,t);i&&n.push(i)})),n}function $R(){return $R=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},$R.apply(this,arguments)}function QR(t){return e.createElement("svg",$R({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",fill:"currentColor"},t),e.createElement("path",{d:"M448 80V128C448 172.2 347.7 208 224 208C100.3 208 0 172.2 0 128V80C0 35.82 100.3 0 224 0C347.7 0 448 35.82 448 80zM393.2 214.7C413.1 207.3 433.1 197.8 448 186.1V288C448 332.2 347.7 368 224 368C100.3 368 0 332.2 0 288V186.1C14.93 197.8 34.02 207.3 54.85 214.7C99.66 230.7 159.5 240 224 240C288.5 240 348.3 230.7 393.2 214.7V214.7zM54.85 374.7C99.66 390.7 159.5 400 224 400C288.5 400 348.3 390.7 393.2 374.7C413.1 367.3 433.1 357.8 448 346.1V432C448 476.2 347.7 512 224 512C100.3 512 0 476.2 0 432V346.1C14.93 357.8 34.02 367.3 54.85 374.7z"}))}function XR(){return XR=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},XR.apply(this,arguments)}function JR(t){return e.createElement("svg",XR({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},t),e.createElement("path",{d:"M13.2812 4.875H8.40625L6.78125 3.25H2.71875C2.0332 3.25 1.5 3.80859 1.5 4.46875V11.7812C1.5 12.4668 2.0332 13 2.71875 13H13.2812C13.9414 13 14.5 12.4668 14.5 11.7812V6.09375C14.5 5.43359 13.9414 4.875 13.2812 4.875Z"}))}function eP(){return eP=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},eP.apply(this,arguments)}function tP(t){return e.createElement("svg",eP({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},t),e.createElement("path",{d:"M15.2109 9.06445C15.4648 8.6582 15.1602 8.125 14.6777 8.125H4.54688C4.01367 8.125 3.37891 8.50586 3.125 8.9375L1.29688 12.0859C1.04297 12.4922 1.34766 13 1.83008 13H11.9609C12.4941 13 13.1289 12.6445 13.3828 12.2129L15.2109 9.06445ZM4.54688 7.3125H12.875V6.09375C12.875 5.43359 12.3164 4.875 11.6562 4.875H7.59375L5.96875 3.25H1.90625C1.2207 3.25 0.6875 3.80859 0.6875 4.46875V11.5527L2.43945 8.53125C2.87109 7.79492 3.6582 7.3125 4.54688 7.3125Z"}))}function nP(){return nP=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},nP.apply(this,arguments)}function iP(t){return e.createElement("svg",nP({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},t),e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.01033 3.79551C2.11275 2.787 2.96447 2 4 2H7.3H8.8H12C13.1046 2 14 2.89543 14 4V5.5V8.2002V9.7002V12C14 13.1046 13.1046 14 12 14H8.8H7.3H4C2.89543 14 2 13.1046 2 12V9.7002V8.2002V5.5V4C2 3.93096 2.0035 3.86275 2.01033 3.79551ZM8.8 12.5H11.5C12.0523 12.5 12.5 12.0523 12.5 11.5V9.7002H8.8V12.5ZM7.3 9.7002V12.5H4.5C3.94772 12.5 3.5 12.0523 3.5 11.5V9.7002H7.3ZM8.8 8.2002H12.5V5.5H8.8L8.8 8.2002ZM7.3 5.5L7.3 8.2002H3.5V5.5H7.3Z"}))}function rP(){return rP=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},rP.apply(this,arguments)}function oP(t){return e.createElement("svg",rP({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},t),e.createElement("rect",{x:"2",y:"2.20001",width:"9",height:"2.5",rx:"0.5"}),e.createElement("rect",{x:"5",y:"6.70001",width:"9",height:"2.5",rx:"0.5"}),e.createElement("rect",{x:"2",y:"11.2",width:"9",height:"2.5",rx:"0.5"}))}function aP(){return aP=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},aP.apply(this,arguments)}function sP(t){return e.createElement("svg",aP({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},t),e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.24935 2.94323L8.5 9.5H12.1L11.1446 14.2772C11.0322 14.839 11.7994 15.1177 12.0738 14.6147L15.9111 7.57956C16.1765 7.09311 15.8244 6.5 15.2703 6.5H12.9L13.5325 3.33728C13.6192 2.90413 13.2879 2.5 12.8461 2.5H9.74611C9.49194 2.5 9.27821 2.69069 9.24935 2.94323ZM7.40003 10.5L8.25717 3H1.625C0.710938 3 0 3.73633 0 4.625V12.75C0 13.6641 0.710938 14.375 1.625 14.375H10.1517C10.1538 14.2803 10.1646 14.1822 10.1848 14.0811L10.901 10.5H7.40003ZM5.6875 8.6875V6.25H1.625V8.6875H5.6875ZM1.625 10.3125V12.75H5.6875V10.3125H1.625Z"}))}function uP(){return uP=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},uP.apply(this,arguments)}function lP(t){return e.createElement("svg",uP({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},t),e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.01033 3.79551C2.11275 2.787 2.96447 2 4 2H5.5H7H9H10.5H12C13.1046 2 14 2.89543 14 4V5.5V12C14 13.1046 13.1046 14 12 14H10.5H9H7H5.5H4C2.89543 14 2 13.1046 2 12V5.5V4C2 3.93096 2.0035 3.86275 2.01033 3.79551ZM10.5 12.5H11.5C12.0523 12.5 12.5 12.0523 12.5 11.5V5.5H10.5L10.5 12.5ZM9 5.5L9 12.5H7L7 5.5H9ZM3.5 5.5H5.5L5.5 12.5H4.5C3.94772 12.5 3.5 12.0523 3.5 11.5V5.5Z"}))}function cP(){return cP=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},cP.apply(this,arguments)}function dP(t){return e.createElement("svg",cP({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},t),e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M0 6.75C0 6.35156 0.351562 6 0.75 6L3.75 6V3L0.75 3C0.351562 3 0 2.67188 0 2.25C0 1.85156 0.351562 1.5 0.75 1.5L3.75 1.5V0.750001C3.75 0.351563 4.10156 0 4.5 0C4.92188 0 5.25 0.351563 5.25 0.750001H6C7.82812 0.750001 9.32812 2.03906 9.67969 3.75H12V5.25H9.67969C9.60376 5.62455 9.47428 5.97724 9.2995 6.30005H7.19969C6.09701 6.30005 5.26846 7.20143 5.25 8.25C5.25 8.67188 4.92188 9 4.5 9C4.10156 9 3.75 8.67188 3.75 8.25V7.5L0.75 7.5C0.351562 7.5 0 7.17188 0 6.75ZM16 8.28571C16 7.58259 15.4336 7 14.75 7H7.25C6.54688 7 6 7.58259 6 8.28571V14.7143C6 15.4375 6.54688 16 7.25 16H14.75C15.4336 16 16 15.4375 16 14.7143V8.28571ZM10.375 9.57143V11.5H7.25V9.57143H10.375ZM7.25 14.7143V12.7857H10.375V14.7143H7.25ZM14.75 14.7143H11.625V12.7857H14.75V14.7143ZM14.75 9.57143V11.5H11.625V9.57143H14.75Z"}))}function hP(){return hP=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},hP.apply(this,arguments)}function fP(t){return e.createElement("svg",hP({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},t),e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M0 6.75C0 6.35156 0.338542 6 0.722222 6L3.61111 6V3L0.722222 3C0.338542 3 0 2.67188 0 2.25C0 1.85156 0.338542 1.5 0.722222 1.5L3.61111 1.5V0.750001C3.61111 0.351563 3.94965 0 4.33333 0C4.73958 0 5.05556 0.351563 5.05556 0.750001H5.77778C7.53819 0.750001 8.98264 2.03906 9.32118 3.75H12V5.25H9.32118C9.29095 5.4049 9.25189 5.55606 9.20457 5.70291C9.10459 5.73587 9.00778 5.77066 8.9144 5.80723C8.505 5.96755 8.12646 6.17556 7.83841 6.44187C7.5498 6.70871 7.3 7.08678 7.3 7.56255V7.90902C6.83862 8.12843 6.32337 8.25 5.77778 8.25H5.05556C5.05556 8.67188 4.73958 9 4.33333 9C3.94965 9 3.61111 8.67188 3.61111 8.25V7.5L0.722222 7.5C0.338542 7.5 0 7.17188 0 6.75ZM16 8.5V7.5625C16 6.70312 14.1964 6 12 6C9.78571 6 8 6.70312 8 7.5625V8.5C8 9.37891 9.78571 10.0625 12 10.0625C14.1964 10.0625 16 9.37891 16 8.5ZM16 9.65234C15.7321 9.86719 15.375 10.0625 15.0179 10.1992C14.2143 10.5117 13.1429 10.6875 12 10.6875C10.8393 10.6875 9.76786 10.5117 8.96429 10.1992C8.60714 10.0625 8.25 9.86719 8 9.65234V11.625C8 12.5039 9.78571 13.1875 12 13.1875C14.1964 13.1875 16 12.5039 16 11.625V9.65234ZM12 13.8125C10.8393 13.8125 9.76786 13.6367 8.96429 13.3242C8.60714 13.1875 8.25 12.9922 8 12.7773V14.4375C8 15.3164 9.78571 16 12 16C14.1964 16 16 15.3164 16 14.4375V12.7773C15.7321 12.9922 15.375 13.1875 15.0179 13.3242C14.2143 13.6367 13.1429 13.8125 12 13.8125Z"}))}function pP(t,n){switch(t){case"database":return e.createElement(QR,{height:14});case"directory":return n?e.createElement(JR,{height:16}):e.createElement(tP,{height:16});case"index":return e.createElement(sP,{height:16});case"table":case"index_table":return e.createElement(iP,{height:16});case"column_table":return e.createElement(lP,{height:16});case"stream":case"topic":return e.createElement(oP,{height:16});case"external_table":return e.createElement(dP,{height:16});case"external_data_source":return e.createElement(fP,{height:16});default:return null}}function gP(t){var n=t.path,i=t.fetchPath,r=t.activePath,o=t.state,a=t.level,s=t.dispatch,u=t.children,l=t.onActivate,c=t.getActions,d=t.renderAdditionalNodeElements,h=t.cache,f=o[n];e.useEffect((function(){f.collapsed?h||s({type:CR.ResetNode,payload:{path:n}}):f.loaded||f.loading||(s({type:CR.StartLoading,payload:{path:n}}),i(n).then((function(e){s({type:CR.FinishLoading,payload:{path:n,activePath:r,data:e}})})).catch((function(e){s({type:CR.FinishLoading,payload:{path:n,error:e}})})))}),[f.collapsed]);var p=e.useCallback((function(){l&&l(n)}),[n,l]),g=e.useCallback((function(){s({type:CR.ToggleCollapsed,payload:{path:n}})}),[]),v=e.useMemo((function(){return null===d||void 0===d?void 0:d(f.path,f.type)}),[d,f]),m=e.useMemo((function(){return null===c||void 0===c?void 0:c(f.path,f.type)}),[c,f]);return e.createElement(yO,{name:f.name,icon:pP(f.type,f.collapsed),collapsed:f.collapsed,active:f.path===r,actions:m,additionalNodeElements:v,hasArrow:f.expandable,onClick:p,onArrowClick:g,level:a},u)}!function(e){e.ToggleCollapsed="toggle-collapsed",e.StartLoading="start-loading",e.FinishLoading="finish-loading",e.ResetNode="reset-node"}(CR||(CR={}));var vP=(0,ft.Ge)("spin"),mP=e.forwardRef((function(t,n){var i=t.size,r=void 0===i?"m":i,o=t.style,a=t.className,s=t.qa;return e.createElement("div",{ref:n,style:o,className:vP({size:r},a),"data-qa":s},e.createElement("div",{className:vP("inner")}))})),_P=(0,gO.Z)("ydb-navigation-tree-view-loader");function yP(t){var n=t.level;return e.createElement(yO,{name:e.createElement("div",{className:_P()},e.createElement(mP,{size:"xs"})),level:n})}var bP=new Za;bP.setLang(Ha.lang||Pa.En),function(e){ja.push(e)}((function(e){e.lang&&bP.setLang(e.lang)}));var wP=JSON.parse('{"label_error":"Error","label_empty":"No data"}'),CP=JSON.parse('{"label_error":"\u041e\u0448\u0438\u0431\u043a\u0430","label_empty":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445"}'),kP="ydb-navigation-tree";bP.registerKeyset(Pa.En,kP,wP),bP.registerKeyset(Pa.Ru,kP,CP);var SP=bP.keyset(kP),xP=(0,gO.Z)("ydb-navigation-tree-view-error");function LP(t){var n=t.level;return e.createElement(yO,{name:e.createElement("span",{className:xP()},SP("label_error")),level:n})}var EP=(0,gO.Z)("ydb-navigation-tree-view-empty");function DP(t){var n=t.level;return e.createElement(yO,{name:e.createElement("span",{className:EP()},SP("label_empty")),level:n})}function NP(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var i,r,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(i=n.next()).done)&&(o.push(i.value),!t||o.length!==t);a=!0);}catch(u){s=!0,r=u}finally{try{a||null==n.return||n.return()}finally{if(s)throw r}}return o}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return MP(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return MP(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function MP(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}var TP=function(t){var n="".concat(t.path,"|").concat(t.status);return"loading"===t.status?e.createElement(yP,{key:n,level:t.level}):"error"===t.status?e.createElement(LP,{key:n,level:t.level}):e.createElement(DP,{key:n,level:t.level})};function IP(t){var n=t.rootState,i=t.fetchPath,r=t.getActions,o=t.renderAdditionalNodeElements,a=t.activePath,s=t.onActivePathUpdate,u=t.cache,l=void 0===u||u,c=t.virtualize,d=void 0!==c&&c,h=e.useReducer(qR,function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},n.path,KR(n))),f=NP(h,2),p=f[0],g=f[1],v=e.useMemo((function(){return GR(p,n.path)}),[p]),m=function(t){return e.createElement(gP,{key:t.path,state:p,path:t.path,activePath:a,fetchPath:i,dispatch:g,onActivate:s,getActions:r,renderAdditionalNodeElements:o,cache:l,level:t.level})};return d?e.createElement(ZR(),{type:"uniform",length:v.length,useStaticSize:!0,itemRenderer:function(e){var t=v[e];return HR(t)?TP(t):m(t)}}):e.createElement(e.Fragment,null,v.map((function(e){return HR(e)?TP(e):m(e)})))}var OP=n(80358),AP=n.n(OP),RP=function(e){return"-- docs: https://ydb.tech/en/docs/yql/reference/syntax/create_table\nCREATE TABLE `".concat(e,"/ydb_row_table` (\n category_id Uint64 NOT NULL,\n id Uint64,\n expire_at Datetime,\n updated_on Datetime,\n name Text,\n `binary-payload` Bytes,\n attributes JsonDocument,\n -- uncomment to add a secondary index\n -- INDEX idx_row_table_id GLOBAL SYNC ON ( id ) COVER ( name, attributes ), -- Secondary indexes docs https://ydb.tech/en/docs/yql/reference/syntax/create_table#secondary_index\n PRIMARY KEY (category_id, id)\n) \nWITH (\n AUTO_PARTITIONING_BY_SIZE = ENABLED,\n AUTO_PARTITIONING_PARTITION_SIZE_MB = 2048,\n AUTO_PARTITIONING_BY_LOAD = ENABLED,\n AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 4,\n AUTO_PARTITIONING_MAX_PARTITIONS_COUNT = 1024,\n -- uncomment to create a table with predefined partitions\n -- UNIFORM_PARTITIONS = 4, -- The number of partitions for uniform initial table partitioning.\n -- The primary key's first column must have type Uint64 or Uint32.\n -- A created table is immediately divided into the specified number of partitions\n -- uncomment to launch read only replicas in every AZ\n -- READ_REPLICAS_SETTINGS = 'PER_AZ:1', -- Enable read replicas for stale read, launch one replica in every availability zone\n -- uncomment to enable ttl\n -- TTL = Interval(\"PT1H\") ON expire_at, -- Enable background deletion of expired rows https://ydb.tech/en/docs/concepts/ttl\n KEY_BLOOM_FILTER = ENABLED -- With a Bloom filter, you can more efficiently determine\n -- if some keys are missing in a table when making multiple single queries by the primary key.\n)")},PP=function(e){return"ALTER TABLE `".concat(e,"`\n ADD COLUMN is_deleted Bool;")},ZP=function(e){return"SELECT *\n FROM `".concat(e,"`\n LIMIT 10;")},FP=function(e){return"UPSERT INTO `".concat(e,"`\n ( `id`, `name` )\nVALUES ( );")},jP=function(e){return"DROP EXTERNAL TABLE `".concat(e,"`;")},HP=function(e){var t=e.split("/").slice(0,-1).join("/");return"CREATE EXTERNAL TABLE `".concat(t,'/my_external_table` (\n column1 Int,\n column2 Int\n) WITH (\n DATA_SOURCE="').concat(e,'",\n LOCATION="",\n FORMAT="json_as_string",\n `file_pattern`=""\n);')},BP=function(e){return"-- docs: https://ydb.tech/en/docs/yql/reference/syntax/create_topic\nCREATE TOPIC `".concat(e,"/my_topic` (\n CONSUMER consumer1,\n CONSUMER consumer2 WITH (read_from = Datetime('1970-01-01T00:00:00Z')) -- Sets up the message write time starting from which the consumer will receive data.\n -- Value type: Datetime OR Timestamp OR integer (unix-timestamp in the numeric format). \n -- Default value: now\n) WITH (\n min_active_partitions = 1, -- Minimum number of topic partitions.\n partition_count_limit = 0, -- Maximum number of active partitions in the topic. 0 is interpreted as unlimited.\n retention_period = Interval('PT18H'), -- Data retention period in the topic. Value type: Interval.\n retention_storage_mb = 0, -- Limit on the maximum disk space occupied by the topic data. \n -- When this value is exceeded, the older data is cleared, like under a retention policy. \n -- 0 is interpreted as unlimited.\n partition_write_speed_bytes_per_second = 1048576, -- Maximum allowed write speed per partition.\n partition_write_burst_bytes = 0 -- Write quota allocated for write bursts. \n -- When set to zero, the actual write_burst value is equalled to \n -- the quota value (this allows write bursts of up to one second).\n);")},zP=function(e){return"-- docs: https://ydb.tech/en/docs/yql/reference/syntax/alter_topic\nALTER TOPIC `".concat(e,"`\n ADD CONSUMER new_consumer WITH (read_from = Datetime('1970-01-01T00:00:00Z')), -- Sets up the message write time starting from which the consumer will receive data.\n -- Value type: Datetime OR Timestamp OR integer (unix-timestamp in the numeric format).\n -- Default value: now\n ALTER CONSUMER consumer1 SET (read_from = Datetime('1970-01-01T00:00:00Z')),\n DROP CONSUMER consumer2,\n SET (\n min_active_partitions = 1, -- Minimum number of topic partitions.\n partition_count_limit = 0, -- Maximum number of active partitions in the topic. 0 is interpreted as unlimited.\n retention_period = Interval('PT18H'), -- Data retention period in the topic. Value type: Interval.\n retention_storage_mb = 0, -- Limit on the maximum disk space occupied by the topic data. \n -- When this value is exceeded, the older data is cleared, like under a retention policy. \n -- 0 is interpreted as unlimited.\n partition_write_speed_bytes_per_second = 1048576, -- Maximum allowed write speed per partition.\n partition_write_burst_bytes = 0 -- Write quota allocated for write bursts. \n -- When set to zero, the actual write_burst value is equalled to\n -- the quota value (this allows write bursts of up to one second).\n );")},WP=function(e){return"DROP TOPIC `".concat(e,"`;")},VP=function(e,t){return function(n,i){var r=function(e,t,n){var i=n.setActivePath,r=n.setQueryMode,o=function(n,o){return function(){o&&r(o),t(rf({input:n(e)})),t(xu(An.query)),t(Lu(Rn.newQuery)),i(e)}};return{createTable:o(RP,"script"),alterTable:o(PP,"script"),selectQuery:o(ZP),upsertQuery:o(FP),createExternalTable:o(HP,"script"),dropExternalTable:o(jP,"script"),selectQueryFromExternalTable:o(ZP,"query"),createTopic:o(BP,"script"),alterTopic:o(zP,"script"),dropTopic:o(WP,"script"),copyPath:function(){try{AP()(e),qo({name:"Copied",title:hR("actions.copied"),type:"success"})}catch(t){qo({name:"Not copied",title:hR("actions.notCopied"),type:"error"})}}}}(n,e,t),o={text:hR("actions.copyPath"),action:r.copyPath},a=[[o],[{text:hR("actions.createTable"),action:r.createTable},{text:hR("actions.createTopic"),action:r.createTopic}]],s=[[o],[{text:hR("actions.alterTable"),action:r.alterTable},{text:hR("actions.selectQuery"),action:r.selectQuery},{text:hR("actions.upsertQuery"),action:r.upsertQuery}]],u=[o];return{database:a,directory:a,table:s,column_table:s,index_table:u,topic:[[o],[{text:hR("actions.alterTopic"),action:r.alterTopic},{text:hR("actions.dropTopic"),action:r.dropTopic}]],stream:u,index:u,external_table:[[o],[{text:hR("actions.selectQuery"),action:r.selectQueryFromExternalTable}],[{text:hR("actions.dropTable"),action:r.dropExternalTable}]],external_data_source:[[o],[{text:hR("actions.createExternalTable"),action:r.createExternalTable}]]}[i]}},YP=function(e,t){return function(n,i){var r=function(e,t,n){var i=n.setActivePath;return{openPreview:function(){t(Md(!0)),t(xu(An.query)),t(Lu(Rn.newQuery)),i(e)}}}(n,e,t),o=(0,Nl.jsx)(_o.z,{view:"flat-secondary",onClick:r.openPreview,title:hR("actions.openPreview"),size:"s",children:(0,Nl.jsx)(Ob,{name:"tablePreview"})});return{database:void 0,directory:void 0,table:o,column_table:o,index_table:void 0,topic:void 0,stream:void 0,index:void 0,external_table:o,external_data_source:void 0}[i]}};function UP(t){var n=t.rootPath,i=t.rootName,r=t.rootType,o=t.currentPath,a=K(),s=nv(),u=(0,ne.Z)(s,2),l=(u[0],u[1]),c=function(e){a({type:Cd,data:e})};return(0,e.useEffect)((function(){null!==o&&void 0!==o&&o.startsWith(n)||c(n)}),[]),(0,Nl.jsx)(IP,{rootState:{path:n,name:i,type:Jc(r),collapsed:!1},fetchPath:function(e){return window.api.getSchema({path:e},{concurrentId:"NavigationTree.getSchema|".concat(e)}).then((function(t){var n=t.PathDescription,i=(void 0===n?{}:n).Children,r=void 0===i?[]:i,o=(0,wt.Z)({},e,t),s=r.map((function(t){var n=t.Name,i=void 0===n?"":n,r=t.PathType,a=t.PathSubType;return o["".concat(e,"/").concat(i)]={PathDescription:{Self:t}},{name:i,type:Jc(r,a),expandable:!vd(r,a)}}));return a(function(e){return{type:wd,data:e}}(o)),s}))},getActions:VP(a,{setActivePath:c,setQueryMode:l}),renderAdditionalNodeElements:YP(a,{setActivePath:c}),activePath:o,onActivePathUpdate:c,cache:!1,virtualize:!0})}var KP,qP=(0,ht.Z)("schema-viewer"),GP="Id",$P="Name",QP="Key",XP="Type",JP="NotNull",eZ=function(t){var n=t.keyColumnIds,i=void 0===n?[]:n,r=t.columns,o=void 0===r?[]:r,a=t.type,s=(0,e.useMemo)((function(){return i.reduce((function(e,t,n){return e[t]=n-i.length,e}),{})}),[i]),u=[{name:GP,width:40},{name:QP,width:40,defaultOrder:pi.ASCENDING,sortAccessor:function(e){return e.Id&&s[e.Id]||1},render:function(e){var t=e.row;return t.Id&&i.includes(t.Id)?(0,Nl.jsx)("div",{className:qP("key-icon"),children:(0,Nl.jsx)(Ob,{name:"key",viewBox:"0 0 12 7",width:12,height:7})}):null}},{name:$P,width:100},{name:XP,width:100},{name:JP,width:100,defaultOrder:pi.DESCENDING,render:function(e){if(e.row.NotNull)return"\u2713"}}];return yd(a)&&(u=u.filter((function(e){return e.name!==QP}))),(0,Nl.jsx)("div",{className:qP(),children:(0,Nl.jsx)(pi,{theme:"yandex-cloud",data:o,columns:u,settings:Bi,initialSortOrder:{columnId:QP,order:pi.ASCENDING}})})};!function(e){e.triggerCollapse="triggerCollapse",e.triggerExpand="triggerExpand",e.clear="clear"}(KP||(KP={}));var tZ=function(e){localStorage.setItem(e,"true")},nZ=function(e){localStorage.removeItem(e)};function iZ(e){return function(t,n){switch(n){case KP.triggerCollapse:return tZ(e),Rt(Rt({},t),{},{triggerCollapse:!0,triggerExpand:!1,collapsed:!0});case KP.triggerExpand:return nZ(e),Rt(Rt({},t),{},{triggerCollapse:!1,triggerExpand:!0,collapsed:!1});case KP.clear:return nZ(e),{triggerCollapse:!1,triggerExpand:!1,collapsed:!1};default:return t}}}var rZ=(0,ht.Z)("kv-pane-visibility-button");function oZ(t){var n=t.onCollapse,i=t.onExpand,r=t.isCollapsed,o=t.initialDirection,a=void 0===o?"top":o,s=t.className;return(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsx)(_o.z,{view:"flat-secondary",onClick:n,className:rZ({hidden:r},s),title:"Collapse",children:(0,Nl.jsx)(Ob,{name:"collapse",viewBox:"0 0 384 512",width:14,height:14,className:rZ((0,wt.Z)({},a,!0))})}),(0,Nl.jsx)(_o.z,{view:"flat-secondary",onClick:i,className:rZ({hidden:!r},s),title:"Expand",children:(0,Nl.jsx)(Ob,{name:"collapse",viewBox:"0 0 384 512",width:14,height:14,className:rZ((0,wt.Z)({},a,!0),"rotate")})})]})}var aZ=(0,ht.Z)("object-summary"),sZ=function(){return{triggerExpand:!1,triggerCollapse:!1,collapsed:Boolean(localStorage.getItem(ji))}};function uZ(t){var n,i,r,o,a,s=t.type,u=t.subType,l=t.onCollapseSummary,c=t.onExpandSummary,d=t.isCollapsed,h=K(),f=(0,e.useReducer)(iZ(ji),void 0,sZ),p=(0,ne.Z)(f,2),g=p[0],v=p[1],m=ev((function(e){return e.schema})),_=m.data,y=m.currentSchemaPath,b=m.currentSchema,w=void 0===b?{}:b,C=m.loading,k=ev((function(e){return e.tenant})).summaryTab,S=void 0===k?Zn.overview:k,x=ct(),L=Zt().parse(x.search,{ignoreQueryPrefix:!0}),E=L.name,D=E?null===(n=_[E.toString()])||void 0===n||null===(i=n.PathDescription)||void 0===i?void 0:i.Self:void 0,N=y?_[y]:void 0,M=null===N||void 0===N||null===(r=N.PathDescription)||void 0===r?void 0:r.Self;if(od(s)&&ld(s)){var T,I=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.Name,n=e.Schema;if(n){var i=n.Columns,r=n.KeyColumnNames,o=null===r||void 0===r?void 0:r.map((function(e){var t=null===i||void 0===i?void 0:i.find((function(t){return t.Name===e}));return null===t||void 0===t?void 0:t.Id})).filter((function(e){return void 0!==e}));return{Columns:i,KeyColumnNames:r,Name:t,KeyColumnIds:o}}return{Name:t}}(null===N||void 0===N||null===(T=N.PathDescription)||void 0===T?void 0:T.ColumnTableDescription);o=I.KeyColumnIds,a=I.Columns}else if(yd(s)){var O,A;a=null===N||void 0===N||null===(O=N.PathDescription)||void 0===O||null===(A=O.ExternalTableDescription)||void 0===A?void 0:A.Columns}else{var R,P,Z,F;o=null===N||void 0===N||null===(R=N.PathDescription)||void 0===R||null===(P=R.Table)||void 0===P?void 0:P.KeyColumnIds,a=null===N||void 0===N||null===(Z=N.PathDescription)||void 0===Z||null===(F=Z.Table)||void 0===F?void 0:F.Columns}(0,e.useEffect)((function(){var e=od(s);!s||e||Db.find((function(e){return e.id===S}))||h(function(e){return{type:yu,data:e}}(Zn.overview))}),[h,s,S]);var j=function(){var e=od(s)?[].concat((0,Ct.Z)(Db),(0,Ct.Z)(Nb)):Db;return(0,Nl.jsx)("div",{className:aZ("tabs"),children:(0,Nl.jsx)(Wg,{size:"l",items:e,activeTab:S,wrapTo:function(e,t){var n=e.id,i=_g(bg.tenant,void 0,Rt(Rt({},L),{},(0,wt.Z)({name:E},Eb.summaryTab,n)));return(0,Nl.jsx)(cv,{to:i,className:aZ("tab"),children:t},n)},allowNotSelected:!0})})},H=function(){return(0,Nl.jsx)("div",{children:(0,Nl.jsx)(jI,{})})},B=function(){switch(S){case Zn.acl:return(0,Nl.jsx)(mR,{});case Zn.schema:return C?H():(0,Nl.jsx)("div",{className:aZ("schema"),children:(0,Nl.jsx)(eZ,{keyColumnIds:o,columns:a,type:s})});default:return function(){var e,t,n=(e={},(0,wt.Z)(e,vc.EPathTypeInvalid,void 0),(0,wt.Z)(e,vc.EPathTypeDir,void 0),(0,wt.Z)(e,vc.EPathTypeTable,void 0),(0,wt.Z)(e,vc.EPathTypeSubDomain,void 0),(0,wt.Z)(e,vc.EPathTypeTableIndex,void 0),(0,wt.Z)(e,vc.EPathTypeExtSubDomain,void 0),(0,wt.Z)(e,vc.EPathTypeColumnStore,void 0),(0,wt.Z)(e,vc.EPathTypeColumnTable,void 0),(0,wt.Z)(e,vc.EPathTypeCdcStream,(function(){return(0,Nl.jsx)(sR,{data:N})})),(0,wt.Z)(e,vc.EPathTypePersQueueGroup,(function(){return(0,Nl.jsx)(uR,{data:N})})),(0,wt.Z)(e,vc.EPathTypeExternalTable,(function(){return(0,Nl.jsx)(RR,{data:N})})),(0,wt.Z)(e,vc.EPathTypeExternalDataSource,(function(){return(0,Nl.jsx)(NR,{data:N})})),e),i=(null===M||void 0===M?void 0:M.PathType)&&(null===(t=n[M.PathType])||void 0===t?void 0:t.call(n));if(!i){var r=Number(null===M||void 0===M?void 0:M.CreateStep),o="";r&&(o=_s(r)),i=(0,Nl.jsx)(Tl,{info:[{label:"Create time",value:o}]})}return(0,Nl.jsx)("div",{className:aZ("overview-wrapper"),children:i})}()}},z=function(){v(KP.triggerCollapse)},W=function(){v(KP.triggerExpand)},V=function(){v(KP.clear)},Y=function(){h(Md(!0)),h(xu(An.query)),h(Lu(Rn.newQuery))},U=function(){var t=od(s)&&!sd(u);return(0,Nl.jsxs)(e.Fragment,{children:[t&&(0,Nl.jsx)(_o.z,{view:"flat-secondary",onClick:Y,title:hR("summary.showPreview"),children:(0,Nl.jsx)(Ob,{name:"tablePreview",viewBox:"0 0 16 16",height:16,width:16})}),y&&(0,Nl.jsx)(sy,{text:y,view:"flat-secondary",title:hR("summary.copySchemaPath")}),(0,Nl.jsx)(oZ,{onCollapse:z,onExpand:W,isCollapsed:g.collapsed,initialDirection:"bottom"})]})},q=function(){var e,t=w.Status,n=w.Reason;return!s&&t&&n&&(e="".concat(t,": ").concat(n)),s?(0,Nl.jsx)("div",{className:aZ("entity-type"),children:s.replace("EPathType","")}):(0,Nl.jsx)("div",{className:aZ("entity-type",{error:!0}),children:(0,Nl.jsx)(HA,{content:e,offset:{left:0}})})};return E?(0,Nl.jsxs)("div",{className:aZ(),children:[(0,Nl.jsx)("div",{className:aZ({hidden:d}),children:(0,Nl.jsxs)(RA,{direction:"vertical",defaultSizePaneKey:Pi,onSplitStartDragAdditional:V,triggerCollapse:g.triggerCollapse,triggerExpand:g.triggerExpand,minSize:[200,52],collapsedSizes:[100,0],children:[y?(0,Nl.jsxs)("div",{className:aZ("tree-wrapper"),children:[(0,Nl.jsx)("div",{className:aZ("tree-header"),children:hR("summary.navigation")}),(0,Nl.jsx)("div",{className:aZ("tree"),children:D&&(0,Nl.jsx)(UP,{rootPath:E,rootName:D.Name||String(E),rootType:D.PathType,currentPath:y})})]}):H(),(0,Nl.jsxs)("div",{className:aZ("info"),children:[(0,Nl.jsxs)("div",{className:aZ("sticky-top"),children:[(0,Nl.jsxs)("div",{className:aZ("info-header"),children:[(0,Nl.jsxs)("div",{className:aZ("info-title"),children:[q(),(0,Nl.jsx)("div",{className:aZ("path-name"),children:y})]}),(0,Nl.jsx)("div",{className:aZ("info-controls"),children:U()})]}),j()]}),B()]})]})}),(0,Nl.jsx)(oZ,{onCollapse:l,onExpand:c,isCollapsed:d,initialDirection:"left",className:aZ("action-button")})]}):null}var lZ=JSON.parse('{"controls.query-mode-selector_type":"Query type:","tabs.newQuery":"Query","tabs.history":"History","tabs.saved":"Saved","history.empty":"History is empty","saved.empty":"There are no saved queries","delete-dialog.header":"Delete query","delete-dialog.question":"Are you sure you want to delete query","delete-dialog.delete":"Delete","delete-dialog.cancel":"Cancel","preview.title":"Preview","preview.not-available":"Preview is not available","preview.close":"Close preview","method-description.script":"For YQL-scripts combining DDL and DML.\\nAPI call: schema.scripting","method-description.scan":"Read-only queries, potentially reading a lot of data.\\nAPI call: table.ExecuteScan","method-description.data":"DML queries for changing and fetching data in serialization mode.\\nAPI call: table.executeDataQuery","method-description.query":"Any query. An experimental API call supposed to replace all existing methods.\\nAPI Call: query.ExecuteScript","method-description.pg":"Queries in postgresql syntax.\\nAPI call: query.ExecuteScript","query-duration.description":"Duration of server-side query execution"}'),cZ=JSON.parse('{"controls.query-mode-selector_type":"\u0422\u0438\u043f \u0437\u0430\u043f\u0440\u043e\u0441\u0430:","tabs.newQuery":"\u0417\u0430\u043f\u0440\u043e\u0441","tabs.history":"\u0418\u0441\u0442\u043e\u0440\u0438\u044f","tabs.saved":"\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435","history.empty":"\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0443\u0441\u0442\u0430","saved.empty":"\u041d\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432","delete-dialog.header":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441","delete-dialog.question":"\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441","delete-dialog.delete":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c","delete-dialog.cancel":"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c","preview.title":"\u041f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440","preview.not-available":"\u041f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d","preview.close":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440","method-description.script":"\u0414\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u0441\u043e\u0432\u043c\u0435\u0449\u0430\u044e\u0449\u0438\u0445 DDL \u0438 DML-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438.\\nAPI call: schema.scripting","method-description.scan":"\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0435 \u043c\u043d\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0445.\\nAPI call: table.ExecuteScan","method-description.data":"DML-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 Serializable.\\nAPI call: table.executeDataQuery","method-description.query":"\u041b\u044e\u0431\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435.\\nAPI call: query.ExecuteScript","method-description.pg":"\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435 postgresql.\\nAPI call: query.ExecuteScript","query-duration.description":"\u0412\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430"}'),dZ="ydb-query-editor";Va.registerKeyset(Fa.En,dZ,lZ),Va.registerKeyset(Fa.Ru,dZ,cZ);var hZ,fZ=Va.keyset(dZ),pZ=[{id:Rn.newQuery,title:fZ("tabs.newQuery")},{id:Rn.history,title:fZ("tabs.history")},{id:Rn.saved,title:fZ("tabs.saved")}],gZ=function(e){var t=e.className,n=e.activeTab,i=ct(),r=vg(i);return(0,Nl.jsx)("div",{className:t,children:(0,Nl.jsx)(Wg,{size:"l",allowNotSelected:!0,activeTab:n,items:pZ,wrapTo:function(e,t){var n=e.id,i=Mb(Rt(Rt({},r),{},(0,wt.Z)({},Eb.queryTab,n)));return(0,Nl.jsx)(vv,{to:i,children:t},n)}})})},vZ=0;function mZ(t){var n=t.enabled;e.useLayoutEffect((function(){if(n)return 1===++vZ&&function(){var e=window.innerWidth-document.documentElement.clientWidth,t=window.innerHeight-document.documentElement.clientHeight,n=function(){var e=window.getComputedStyle(document.body);return{top:Number.parseFloat(e.paddingTop),right:Number.parseFloat(e.paddingRight),bottom:Number.parseFloat(e.paddingBottom),left:Number.parseFloat(e.paddingLeft)}}();hZ=document.body.style.cssText,document.body.style.overflow="hidden",e&&(document.body.style.paddingRight="".concat(n.right+e,"px"));t&&(document.body.style.paddingBottom="".concat(n.bottom+t,"px"))}(),function(){0===--vZ&&(hZ?document.body.style.cssText=hZ:document.body.removeAttribute("style"))}}),[n])}var _Z=(0,ft.Ge)("modal");function yZ(t){var n=t.open,i=void 0!==n&&n,r=t.keepMounted,o=void 0!==r&&r,a=t.disableBodyScrollLock,s=void 0!==a&&a,u=t.disableEscapeKeyDown,l=t.disableOutsideClick,c=t.disableFocusTrap,d=t.disableAutoFocus,h=t.focusTrap,f=void 0===h||h,p=t.autoFocus,g=void 0===p||p,v=t.restoreFocusRef,m=t.onEscapeKeyDown,_=t.onEnterKeyDown,y=t.onOutsideClick,b=t.onClose,w=t.onTransitionEnter,C=t.onTransitionEntered,k=t.onTransitionExit,S=t.onTransitionExited,x=t.children,L=t.style,E=t.className,D=t.contentClassName,N=t["aria-labelledby"],M=t["aria-label"],T=t.container,I=t.qa,O=e.useRef(null),A=e.useRef(null),R=e.useState(!1),P=(0,ne.Z)(R,2),Z=P[0],F=P[1];mZ({enabled:!s&&(i||Z)});var j=E_({enabled:i||Z,restoreFocusRef:v,focusTrapped:!0});return q_({open:i,disableEscapeKeyDown:u,disableOutsideClick:l,onEscapeKeyDown:m,onEnterKeyDown:_,onOutsideClick:y,onClose:b,contentRefs:[A],type:"modal"}),e.createElement(jo,{container:T},e.createElement(uo,{nodeRef:O,in:i,addEndListener:function(e){var t;return null===(t=O.current)||void 0===t?void 0:t.addEventListener("animationend",e)},classNames:lo(_Z),mountOnEnter:!o,unmountOnExit:!o,appear:!0,onEnter:function(){F(!0),null===w||void 0===w||w()},onExit:function(){F(!0),null===k||void 0===k||k()},onEntered:function(){F(!1),null===C||void 0===C||C()},onExited:function(){F(!1),null===S||void 0===S||S()}},e.createElement("div",{ref:O,style:L,className:_Z({open:i},E),"data-qa":I},e.createElement("div",{className:_Z("table")},e.createElement("div",{className:_Z("cell")},e.createElement(Y_,{enabled:!c&&f&&i&&!Z,autoFocus:!d&&g},e.createElement("div",Object.assign({ref:A,tabIndex:-1,role:"dialog","aria-modal":i,"aria-label":M,"aria-labelledby":N,className:_Z("content",D)},j),x)))))))}var bZ=No({en:JSON.parse('{"close":"Close dialog"}'),ru:JSON.parse('{"close":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e"}')},"Dialog"),wZ=(0,ft.Ge)("dialog-btn-close");function CZ(t){var n=t.onClose;return e.createElement("div",{className:wZ()},e.createElement(_o.z,{view:"flat",size:"l",className:wZ("btn"),onClick:function(e){return n(e,{isOutsideClick:!1})},extraProps:{"aria-label":bZ("close")}},e.createElement(yo.J,{data:go.Z,size:20})))}var kZ=(0,ft.Ge)("dialog-body");var SZ=(0,ft.Ge)("dialog-divider");var xZ=(0,ft.Ge)("dialog-footer");var LZ=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var t;return(0,X.Z)(this,i),(t=n.apply(this,arguments)).errorTooltipRef=e.createRef(),t.handleKeyDown=function(e){"Enter"===e.key&&(e.preventDefault(),t.props.onClickButtonApply&&t.props.onClickButtonApply(e))},t}return(0,J.Z)(i,[{key:"componentDidMount",value:function(){this.props.listenKeyEnter&&this.attachKeyDownListeners()}},{key:"componentDidUpdate",value:function(e){!this.props.listenKeyEnter&&e.listenKeyEnter&&this.detachKeyDownListeners(),this.props.listenKeyEnter&&!e.listenKeyEnter&&this.attachKeyDownListeners()}},{key:"componentWillUnmount",value:function(){this.detachKeyDownListeners()}},{key:"render",value:function(){var t=this.props,n=t.onClickButtonCancel,i=t.onClickButtonApply,r=t.loading,o=t.textButtonCancel,a=t.textButtonApply,s=t.propsButtonCancel,u=t.propsButtonApply,l=t.preset,c=t.children,d=t.errorText,h=t.showError,f=t.renderButtons,p=e.createElement("div",{className:xZ("button",{action:"cancel"})},e.createElement(_o.z,Object.assign({view:a?"flat":"normal",size:"l",width:"max",onClick:n,disabled:r},s),o)),g=e.createElement("div",{className:xZ("button",{action:"apply"})},e.createElement(_o.z,Object.assign({ref:this.errorTooltipRef,type:"submit",view:"action",size:"l",width:"max",onClick:i,loading:r,className:xZ("button-apply",{preset:l})},u),a),d&&e.createElement(J_,{open:h,anchorRef:this.errorTooltipRef,placement:["bottom","top"],disableLayer:!0,hasArrow:!0},e.createElement("div",{className:xZ("error")},d)));return e.createElement("div",{className:xZ()},e.createElement("div",{className:xZ("children")},c),e.createElement("div",{className:xZ("bts-wrapper")},f?f(g,p):e.createElement(e.Fragment,null,o&&p,a&&g)))}},{key:"attachKeyDownListeners",value:function(){var e=this;setTimeout((function(){window.addEventListener("keydown",e.handleKeyDown)}),0)}},{key:"detachKeyDownListeners",value:function(){window.removeEventListener("keydown",this.handleKeyDown)}}]),i}(e.Component);LZ.defaultProps={preset:"default",showError:!1,listenKeyEnter:!1};var EZ=(0,ft.Ge)("dialog-header");var DZ=(0,ft.Ge)("dialog"),NZ=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var e;return(0,X.Z)(this,i),(e=n.apply(this,arguments)).handleCloseButtonClick=function(t){(0,e.props.onClose)(t.nativeEvent,"closeButtonClick")},e}return(0,J.Z)(i,[{key:"render",value:function(){var t=this.props,n=t.container,i=t.children,r=t.open,o=t.disableBodyScrollLock,a=t.disableEscapeKeyDown,s=t.disableOutsideClick,u=t.disableFocusTrap,l=t.disableAutoFocus,c=t.restoreFocusRef,d=t.keepMounted,h=t.size,f=t.className,p=t.modalClassName,g=t.hasCloseButton,v=t.onEscapeKeyDown,m=t.onEnterKeyDown,_=t.onOutsideClick,y=t.onClose,b=t.onTransitionEnter,w=t.onTransitionEntered,C=t.onTransitionExit,k=t.onTransitionExited,S=t["aria-label"],x=t["aria-labelledby"],L=t.qa;return e.createElement(yZ,{open:r,disableBodyScrollLock:o,disableEscapeKeyDown:a,disableOutsideClick:s,disableFocusTrap:u,disableAutoFocus:l,restoreFocusRef:c,keepMounted:d,onEscapeKeyDown:v,onEnterKeyDown:m,onOutsideClick:_,onClose:y,onTransitionEnter:b,onTransitionEntered:w,onTransitionExit:C,onTransitionExited:k,className:DZ("modal",p),"aria-label":S,"aria-labelledby":x,container:n,qa:L},e.createElement("div",{className:DZ({size:h,"has-close":g},f)},i,g&&e.createElement(CZ,{onClose:this.handleCloseButtonClick})))}}]),i}(e.Component);NZ.defaultProps={disableBodyScrollLock:!1,disableEscapeKeyDown:!1,disableOutsideClick:!1,keepMounted:!1,hasCloseButton:!0},NZ.Footer=LZ,NZ.Header=function(t){var n=t.caption,i=void 0===n?"":n,r=t.insertBefore,o=t.insertAfter,a=t.className,s=t.id;return e.createElement("div",{className:EZ(null,a)},r,e.createElement("div",{className:EZ("caption"),id:s},i),o)},NZ.Body=function(t){var n=t.className;return e.createElement("div",{className:kZ(null,n)},t.children)},NZ.Divider=function(t){var n=t.className;return e.createElement("div",{className:SZ(null,n)})};var MZ=(0,ht.Z)("kv-truncated-query"),TZ=function(e){var t=e.value,n=void 0===t?"":t,i=e.maxQueryHeight,r=void 0===i?6:i,o=n.split("\n");if(o.length>r){var a=o.slice(0,r).join("\n");return(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)("span",{className:MZ(),children:a}),(0,Nl.jsx)("span",{className:MZ("message",{color:"secondary"}),children:"\n...\nThe request was truncated. Click on the line to show the full query on the query tab"})]})}return(0,Nl.jsx)(Nl.Fragment,{children:n})},IZ=function(e){var t=e.value,n=void 0===t?"":t;return(0,Nl.jsx)(KN,{contentClassName:MZ("popover-content"),content:n,children:n})},OZ=6,AZ=Rt(Rt({},Bi),{},{dynamicRenderType:"variable"}),RZ=(0,ht.Z)("ydb-saved-queries"),PZ=function(e){var t=e.visible,n=e.queryName,i=e.onCancelClick,r=e.onConfirmClick;return(0,Nl.jsxs)(NZ,{open:t,hasCloseButton:!1,size:"s",onClose:i,onEnterKeyDown:r,children:[(0,Nl.jsx)(NZ.Header,{caption:fZ("delete-dialog.header")}),(0,Nl.jsxs)(NZ.Body,{className:RZ("dialog-body"),children:[fZ("delete-dialog.question"),(0,Nl.jsx)("span",{className:RZ("dialog-query-name"),children:" ".concat(n,"?")})]}),(0,Nl.jsx)(NZ.Footer,{textButtonApply:fZ("delete-dialog.delete"),textButtonCancel:fZ("delete-dialog.cancel"),onClickButtonCancel:i,onClickButtonApply:r})]})},ZZ=function(t){var n=t.savedQueries,i=t.changeUserInput,r=t.onDeleteQuery,o=K(),a=(0,e.useState)(!1),s=(0,ne.Z)(a,2),u=s[0],l=s[1],c=(0,e.useState)(""),d=(0,ne.Z)(c,2),h=d[0],f=d[1],p=function(){l(!1),f("")},g=[{name:"name",header:"Name",render:function(e){var t=e.row;return(0,Nl.jsx)("div",{className:RZ("query-name"),children:t.name})},width:200},{name:"body",header:"Query Text",render:function(e){var t,n=e.row;return(0,Nl.jsxs)("div",{className:RZ("query"),children:[(0,Nl.jsx)("div",{className:RZ("query-body"),children:(0,Nl.jsx)(TZ,{value:n.body,maxQueryHeight:OZ})}),(0,Nl.jsxs)("span",{className:RZ("controls"),children:[(0,Nl.jsx)(_o.z,{view:"flat-secondary",children:(0,Nl.jsx)(Ob,{name:"pencil",viewBox:"0 0 24 24"})}),(0,Nl.jsx)(_o.z,{view:"flat-secondary",onClick:(t=n.name,function(e){e.stopPropagation(),l(!0),f(t)}),children:(0,Nl.jsx)(Ob,{name:"trash",viewBox:"0 0 24 24"})})]})]})},sortable:!1}];return(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)("div",{className:RZ(),children:(0,Nl.jsx)(pi,{theme:"yandex-cloud",columns:g,data:n,settings:AZ,emptyDataMessage:fZ("saved.empty"),rowClassName:function(){return RZ("row")},onRowClick:function(e){return t=e.body,n=e.name,i({input:t}),o(Gp(n)),void o(Lu(Rn.newQuery));var t,n},initialSortOrder:{columnId:"name",order:pi.ASCENDING}})}),(0,Nl.jsx)(PZ,{visible:u,queryName:h,onCancelClick:function(){p()},onConfirmClick:function(){p(),r(h),f("")}})]})},FZ=(0,ht.Z)("ydb-queries-history");var jZ=function(e){var t=e.changeUserInput,n=K(),i=nv(),r=(0,ne.Z)(i,2),o=r[0],a=r[1],s=ev(of),u=(0,Ct.Z)(s).reverse(),l=[{name:"queryText",header:"Query Text",render:function(e){var t=e.row;return(0,Nl.jsx)("div",{className:FZ("query"),children:(0,Nl.jsx)(TZ,{value:t.queryText,maxQueryHeight:OZ})})},sortable:!1},{name:"syntax",header:"Syntax",render:function(e){return e.row.syntax===tr.pg?"PostgreSQL":"YQL"},sortable:!1,width:200}];return(0,Nl.jsx)("div",{className:FZ(),children:(0,Nl.jsx)(pi,{theme:"yandex-cloud",columns:l,data:u,settings:AZ,emptyDataMessage:fZ("history.empty"),onRowClick:function(e){return(i=e).syntax===tr.pg&&o!==Ji.pg?a(Ji.pg):i.syntax!==tr.pg&&o===Ji.pg&&a(Ji.script),t({input:i.queryText}),void n(Lu(Rn.newQuery));var i},rowClassName:function(){return FZ("table-row")}})})},HZ=n(77810),BZ=(0,ht.Z)("kv-fullscreen"),zZ=function(e){(0,ee.Z)(i,e);var n=(0,te.Z)(i);function i(e){var t;return(0,X.Z)(this,i),(t=n.call(this,e)).modalRoot=null,t.el=void 0,t.el=document.createElement("div"),t}return(0,J.Z)(i,[{key:"componentDidMount",value:function(){this.modalRoot=document.getElementById("fullscreen-root"),this.modalRoot&&this.modalRoot.appendChild(this.el)}},{key:"componentWillUnmount",value:function(){this.modalRoot&&this.modalRoot.removeChild(this.el)}},{key:"render",value:function(){return t.createPortal(this.props.children,this.el)}}]),i}(e.Component);var WZ=function(t){var n=K(),i=function(e){"Escape"===e.key&&r()};(0,e.useEffect)((function(){return document.addEventListener("keydown",i,!1),function(){document.removeEventListener("keydown",i,!1)}}),[]);var r=function(){n(eg())};return(0,Nl.jsx)(zZ,{children:(0,Nl.jsxs)("div",{className:BZ(null,t.className),children:[(0,Nl.jsx)(_o.z,{onClick:r,view:"raised",className:BZ("close-button"),children:(0,Nl.jsx)(Ob,{name:"disableFullscreen",viewBox:"0 0 16 16 ",width:16,height:16})}),t.children]})})},VZ=e.memo((function(t){var n=t.className,i=t.value,r=K();return(0,e.useEffect)((function(){return function(){r(ec())}}),[r]),(0,Nl.jsx)("span",{className:QZ("cell",n),onClick:function(e){return r(tc(e.target,i,"cell"))},children:i})})),YZ=JSON.parse('{"empty":"Table is empty"}'),UZ=JSON.parse('{"empty":"\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0443\u0441\u0442\u0430\u044f"}'),KZ="ydb-query-result-table";Va.registerKeyset(Fa.En,KZ,YZ),Va.registerKeyset(Fa.Ru,KZ,UZ);var qZ=Va.keyset(KZ),GZ=["columns","data","settings"],$Z=Rt(Rt({},Bi),{},{stripedRows:!0,dynamicRenderType:"variable",dynamicItemSizeGetter:function(){return 40}}),QZ=(0,ht.Z)("ydb-query-result-table"),XZ=function(e){return e.length?e.map((function(e){var t=e.name,n=function(e){switch(e.replace(/\?$/,"")){case gi.Bool:return"boolean";case gi.Int8:case gi.Int16:case gi.Int32:case gi.Int64:case gi.Uint8:case gi.Uint16:case gi.Uint32:case gi.Uint64:case gi.Float:case gi.Double:case gi.Decimal:return"number";case gi.String:case gi.Utf8:case gi.Json:case gi.JsonDocument:case gi.Yson:case gi.Uuid:return"string";case gi.Date:case gi.Datetime:case gi.Timestamp:case gi.Interval:case gi.TzDate:case gi.TzDateTime:case gi.TzTimestamp:return"date";default:return}}(e.type);return{name:t,align:"number"===n?pi.RIGHT:pi.LEFT,sortAccessor:function(e){var i=e[t];return void 0===i||null===i?null:"number"===n?BigInt(i):i},render:function(e){var n=e.row;return(0,Nl.jsx)(VZ,{value:String(n[t])})}}})):[]},JZ=function(e,t){return t},eF=function(t){var n=t.columns,i=t.data,r=t.settings,o=nn(t,GZ),a=(0,e.useMemo)((function(){return function(e){return Array.isArray(e)?e.map((function(e){var t={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var i=typeof e[n];null!==e[n]&&"object"===i||"boolean"===i||Array.isArray(e[n])?t[n]=JSON.stringify(e[n]):t[n]=e[n]}return t})):[]}(i)}),[i]),s=(0,e.useMemo)((function(){return n?XZ(n):function(e){return e.length?Object.keys(e[0]).map((function(t){return{name:t,align:pr(e[0][t])?pi.RIGHT:pi.LEFT,sortAccessor:function(e){return pr(e[t])?Number(e[t]):e[t]},render:function(e){var n=e.row;return(0,Nl.jsx)(VZ,{value:String(n[t])})}}})):[]}(a)}),[a,n]),u=(0,e.useMemo)((function(){return Rt(Rt({},$Z),r)}),[r]);return Array.isArray(i)?s.length?(0,Nl.jsx)(pi,Rt({theme:"yandex-cloud",data:a,columns:s,settings:u,rowKey:JZ},o)):(0,Nl.jsx)("div",{className:QZ("message"),children:qZ("empty")}):null};var tF=function(e){var t=e.disabled,n=K();return(0,Nl.jsx)(_o.z,{onClick:function(){n({type:Qp})},view:"flat-secondary",disabled:t,title:"Fullscreen",children:(0,Nl.jsx)(Ob,{name:"enableFullscreen",viewBox:"0 0 16 16",height:16,width:16})})},nF=(0,ht.Z)("kv-preview"),iF=function(t){var n,i=t.database,r=t.type,o=K(),a=ev((function(e){return e.preview})),s=a.data,u=void 0===s?{}:s,l=a.loading,c=a.error,d=a.wasLoaded,h=ev((function(e){return e.schema})),f=h.autorefresh,p=h.currentSchemaPath,g=ev((function(e){return e.fullscreen})),v=(0,e.useCallback)((function(e){if(od(r)){e||o({type:Cf,data:{wasLoaded:!1,data:void 0}});var t="--!syntax_v1\nselect * from `".concat(p,"` limit 32");o(function(e){var t=e.query,n=e.database,i=e.action;return oa({request:window.api.sendQuery({schema:"modern",query:t,database:n,action:i}),actions:wf,dataHandler:rr})}({query:t,database:i,action:yd(r)?"execute-query":"execute-scan"}))}}),[o,i,p,r]);Jg(v,[v],f);var m,_=function(){o(Md(!1))};if(l&&!d)return(0,Nl.jsx)("div",{className:nF("loader-container"),children:(0,Nl.jsx)(KE,{size:"m"})});od(r)?c&&(m=(0,Nl.jsx)("div",{className:nF("message-container","error"),children:sr(c)})):m=(0,Nl.jsx)("div",{className:nF("message-container"),children:fZ("preview.not-available")});var y=null!==(n=m)&&void 0!==n?n:(0,Nl.jsx)("div",{className:nF("result"),children:(0,Nl.jsx)(eF,{data:u.result,columns:u.columns})});return(0,Nl.jsxs)("div",{className:nF(),children:[(0,Nl.jsxs)("div",{className:nF("header"),children:[(0,Nl.jsxs)("div",{className:nF("title"),children:[fZ("preview.title")," ",(0,Nl.jsx)("div",{className:nF("table-name"),children:p})]}),(0,Nl.jsxs)("div",{className:nF("controls-left"),children:[(0,Nl.jsx)(tF,{disabled:Boolean(c)}),(0,Nl.jsx)(_o.z,{view:"flat-secondary",onClick:_,title:fZ("preview.close"),children:(0,Nl.jsx)(Ob,{name:"close",viewBox:"0 0 16 16",width:16,height:16})})]})]}),g?(0,Nl.jsx)(WZ,{children:y}):y]})},rF=(0,ht.Z)("kv-divider");var oF,aF=function(){return(0,Nl.jsx)("div",{className:rF()})};function sF(){return sF=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},sF.apply(this,arguments)}var uF=function(t){return e.createElement("svg",sF({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},t),oF||(oF=e.createElement("path",{d:"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 400c-18 0-32-14-32-32s13.1-32 32-32c17.1 0 32 14 32 32s-14.9 32-32 32zm69.1-142L280 286v2c0 13-11 24-24 24s-24-11-24-24v-16c0-8 4-16 12-21l57-34c7-4 11-11 11-19 0-12-10.9-22-22.9-22H238c-12.9 0-22 10-22 22 0 13-11 24-24 24s-24-11-24-24c0-39 31-70 69.1-70h51.1c40.8 0 71.8 31 71.8 70 0 24-13 47-34.9 60z"})))},lF=(0,ht.Z)("kv-query-execution-status"),cF=function(e){var t,n,i=e.className,r=e.error;if("object"===typeof r&&"ECONNABORTED"===(null===r||void 0===r?void 0:r.code))t=(0,Nl.jsx)(yo.J,{data:uF,size:16}),n="Connection aborted";else{var o=Boolean(r);t=(0,Nl.jsx)(Ob,{name:o?"failure":"success",viewBox:o?"0 0 512 512":"0 0 16 16",width:16,height:16,className:lF("result-status-icon",{error:o})}),n=o?"Failed":"Completed"}return(0,Nl.jsxs)("div",{className:lF(null,i),children:[t,n]})},dF=(0,ft.Ge)("arrow-toggle");function hF(t){var n=t.size,i=void 0===n?16:n,r=t.direction,o=void 0===r?"bottom":r,a=t.className,s=t.qa;return e.createElement("span",{style:{width:i,height:i},className:dF({direction:o},a),"data-qa":s},e.createElement(yo.J,{data:Kb,size:i}))}var fF=JSON.parse('{"default_collapse_label":"Show less","default_expand_label":"Show more","chars_count":[" ({{count}} symbol)"," ({{count}} symbols)"," ({{count}} symbols)"," ({{count}} symbols)"]}'),pF=JSON.parse('{"default_collapse_label":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435","default_expand_label":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0449\u0451","chars_count":[" ({{count}} \u0441\u0438\u043c\u0432\u043e\u043b)"," ({{count}} \u0441\u0438\u043c\u0432\u043e\u043b\u0430)"," ({{count}} \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432)"," ({{count}} \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432)"]}'),gF="ydb-shorty-string";Va.registerKeyset(Fa.En,gF,fF),Va.registerKeyset(Fa.Ru,gF,pF);var vF=Va.keyset(gF),mF=(0,ht.Z)("kv-shorty-string");function _F(t){var n=t.value,i=void 0===n?"":n,r=t.limit,o=void 0===r?200:r,a=t.strict,s=void 0!==a&&a,u=t.displayLength,l=void 0===u||u,c=t.render,d=void 0===c?function(e){return e}:c,h=t.onToggle,f=t.expandLabel,p=void 0===f?vF("default_expand_label"):f,g=t.collapseLabel,v=void 0===g?vF("default_collapse_label"):g,m=e.useState(!1),_=(0,ne.Z)(m,2),y=_[0],b=_[1],w=(y?v:p)+(l&&!y?vF("chars_count",{count:i.length}):""),C=i.length>o+(s?0:w.length),k=y||!C?i:i.slice(0,o-4)+"\xa0...";return(0,Nl.jsxs)("div",{className:mF(),children:[d(k),C?(0,Nl.jsx)(yv,{className:mF("toggle"),onClick:function(e){e.stopPropagation(),b((function(e){return!e})),null===h||void 0===h||h()},children:w}):null]})}var yF=["S_FATAL","S_ERROR","S_WARNING","S_INFO"];function bF(e){return function(e){return!!e&&void 0!==yF[e]}(e)?yF[e]:"S_INFO"}var wF=(0,ht.Z)("kv-result-issues"),CF=(0,ht.Z)("kv-issues"),kF=(0,ht.Z)("kv-issue");function SF(t){var n=t.data,i=e.useState(!1),r=(0,ne.Z)(i,2),o=r[0],a=r[1],s="string"===typeof n||null===n||void 0===n?void 0:n.issues,u=Array.isArray(s)&&s.length>0;return(0,Nl.jsxs)("div",{className:wF(),children:[(0,Nl.jsxs)("div",{className:wF("error-message"),children:[function(){var t;if("string"===typeof n)t=n;else{var i,r,o=bF(null===n||void 0===n||null===(i=n.error)||void 0===i?void 0:i.severity);t=(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsx)(MF,{severity:o})," ",(0,Nl.jsx)("span",{className:wF("error-message-text"),children:null===n||void 0===n||null===(r=n.error)||void 0===r?void 0:r.message})]})}return t}(),u&&(0,Nl.jsx)(_o.z,{view:"normal",onClick:function(){return a(!o)},children:o?"Hide details":"Show details"})]}),u&&o&&(0,Nl.jsx)(xF,{issues:s})]})}function xF(e){var t=e.issues,n=null===t||void 0===t?void 0:t.reduce((function(e,t){var n,i=null!==(n=t.severity)&&void 0!==n?n:10;return Math.min(e,i)}),10);return(0,Nl.jsx)("div",{className:CF(null),children:null===t||void 0===t?void 0:t.map((function(e,t){return(0,Nl.jsx)(LF,{issue:e,expanded:e===n},t)}))})}function LF(t){var n=t.issue,i=t.level,r=void 0===i?0:i,o=e.useState(!0),a=(0,ne.Z)(o,2),s=a[0],u=a[1],l=bF(n.severity),c=function(e){var t=e.position,n=void 0===t?{}:t;if(!n)return!1;var i=n.file,r=n.row,o=n.column;return"".concat(i?"file:":"").concat(r,":").concat(o)}(n),d=n.issues,h=Array.isArray(d)&&d.length>0,f=s?"bottom":"right";return(0,Nl.jsxs)("div",{className:kF({leaf:!h,"has-issues":h}),children:[(0,Nl.jsxs)("div",{className:kF("line"),children:[h&&(0,Nl.jsx)(_o.z,{view:"flat-secondary",onClick:function(){return u(!s)},className:kF("arrow-toggle"),children:(0,Nl.jsx)(hF,{direction:f,size:16})}),(0,Nl.jsx)(MF,{severity:l}),(0,Nl.jsxs)("span",{className:kF("message"),children:[c&&(0,Nl.jsx)("span",{className:kF("place-text"),title:"Position",children:c}),(0,Nl.jsx)("div",{className:kF("message-text"),children:(0,Nl.jsx)(_F,{value:n.message,expandLabel:"Show full message"})})]}),n.issue_code?(0,Nl.jsxs)("span",{className:kF("code"),children:["Code: ",n.issue_code]}):null]}),h&&s&&(0,Nl.jsx)("div",{className:kF("issues"),children:(0,Nl.jsx)(EF,{issues:d,level:r+1,expanded:s})})]})}function EF(e){var t=e.issues,n=e.level,i=e.expanded;return(0,Nl.jsx)("div",{className:kF("list"),children:t.map((function(e,t){return(0,Nl.jsx)(LF,{issue:e,level:n,expanded:i},t)}))})}var DF={S_INFO:xv,S_WARNING:Cv,S_ERROR:Mv,S_FATAL:Dv},NF=(0,ht.Z)("yql-issue-severity");function MF(e){var t=e.severity,n=t.slice(2).toLowerCase();return(0,Nl.jsxs)("span",{className:NF({severity:n}),children:[(0,Nl.jsx)(yo.J,{className:NF("icon"),data:DF[t],size:16}),(0,Nl.jsx)("span",{className:NF("title"),children:n})]})}var TF=function(e){var t=e.text,n=e.popoverContent,i=e.className,r=e.contentClassName;return(0,Nl.jsxs)("div",{className:i,children:[t,"\xa0",(0,Nl.jsx)(HA,{content:n,contentClassName:r})]})},IF=(0,ht.Z)("ydb-query-duration"),OF=function(e){var t=e.duration;if(!t)return null;var n,i=bh((n=t)&&pr(n)?Math.round(Number(n)/1e3):0,1);return(0,Nl.jsx)("span",{className:IF(),children:(0,Nl.jsx)(TF,{className:IF("item-with-popover"),contentClassName:IF("popover"),text:i,popoverContent:fZ("query-duration.description")})})},AF=function(e){if(null===e||void 0===e||!e.length)return"";var t=Object.keys(e[0]);return Array(t).concat(e).map((function(e){var t=[];for(var n in e)"object"===typeof e[n]||Array.isArray(e[n])?t.push(JSON.stringify(e[n])):t.push(e[n]);return t.join("\t")})).join("\n")},RF=(0,ht.Z)("ydb-query-execute-result"),PF={result:"result",stats:"stats"},ZF=[{value:PF.result,content:"Result"},{value:PF.stats,content:"Stats"}];function FF(t){var n,i,r,o=t.data,a=t.stats,s=t.error,u=t.isResultsCollapsed,l=t.onCollapseResults,c=t.onExpandResults,d=(0,e.useState)(0),h=(0,ne.Z)(d,2),f=h[0],p=h[1],g=(0,e.useState)(PF.result),v=(0,ne.Z)(g,2),m=v[0],_=v[1],y=ev((function(e){return e.fullscreen})),b=K(),w=null===o||void 0===o||null===(n=o.resultSets)||void 0===n?void 0:n.length,C=w&&w>0,k=C?null===o||void 0===o||null===(i=o.resultSets)||void 0===i?void 0:i[f].result:null===o||void 0===o?void 0:o.result,S=C?null===o||void 0===o||null===(r=o.resultSets)||void 0===r?void 0:r[f].columns:null===o||void 0===o?void 0:o.columns,x=AF(k),L=!x.length;(0,e.useEffect)((function(){return function(){b(eg())}}),[b]);var E=function(e,t){return(0,Nl.jsx)(eF,{data:e,columns:t,settings:{sortable:!1}})},D=function(){var t=(0,Nl.jsx)(Dl(),{data:a,isExpanded:function(){return!0},className:RF("inspector"),searchOptions:{debounceTime:300}});return(0,Nl.jsxs)(e.Fragment,{children:[t,y&&(0,Nl.jsx)(WZ,{children:(0,Nl.jsx)("div",{className:RF("inspector",{fullscreen:!0}),children:t})})]})},N=function(){var t=(0,Nl.jsxs)(Nl.Fragment,{children:[C&&w>1&&(0,Nl.jsx)("div",{children:(0,Nl.jsx)(Wg,{className:RF("result-tabs"),size:"l",items:aN(w).map((function(e){return{id:String(e),title:"Result #".concat(e+1)}})),activeTab:String(f),onSelectTab:function(e){return p(Number(e))}})}),(0,Nl.jsx)("div",{className:RF("result"),children:E(k,S)})]});return(0,Nl.jsxs)(e.Fragment,{children:[t,y&&(0,Nl.jsx)(WZ,{children:(0,Nl.jsx)("div",{className:RF("result-fullscreen-wrapper"),children:t})})]})},M=function(){var t;if(!s)return null;if("object"===typeof s&&null!==(t=s.data)&&void 0!==t&&t.issues&&Array.isArray(s.data.issues)){var n=(0,Nl.jsx)(SF,{data:s.data});return(0,Nl.jsxs)(e.Fragment,{children:[n,y&&(0,Nl.jsx)(WZ,{children:(0,Nl.jsx)("div",{className:RF("result-fullscreen-wrapper",RF("result")),children:n})})]})}var i="string"===typeof s?s:sr(s);return(0,Nl.jsx)("div",{className:RF("error"),children:i})};return(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsxs)("div",{className:RF("controls"),children:[(0,Nl.jsxs)("div",{className:RF("controls-right"),children:[(0,Nl.jsx)(cF,{error:s}),a&&!s&&(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsx)(OF,{duration:null===a||void 0===a?void 0:a.DurationUs}),(0,Nl.jsx)(aF,{}),(0,Nl.jsx)(Dy,{options:ZF,value:m,onUpdate:function(e){_(e)}})]})]}),(0,Nl.jsxs)("div",{className:RF("controls-left"),children:[(0,Nl.jsx)(sy,{text:x,view:"flat-secondary",title:"Copy results",disabled:L}),(0,Nl.jsx)(tF,{}),(0,Nl.jsx)(oZ,{onCollapse:l,onExpand:c,isCollapsed:u,initialDirection:"bottom"})]})]}),m!==PF.result||s?(0,Nl.jsxs)("div",{className:RF("result"),children:[m===PF.stats&&!s&&D(),M()]}):N()]})}var jF,HF,BF=n(59312);!function(e){e.Arrow="arrow",e.Line="line"}(jF||(jF={})),function(e){e.Normal="normal",e.Ellipsis="ellipsis"}(HF||(HF={}));function zF(e,t){var n=document.createElement("button");return n.innerText=e,n.className="paranoid-button paranoid-button_".concat(t),n}var WF="ParanoidC";function VF(e,t){var n=document.getElementById(e);if(!n)throw new Error("Not found element with id ".concat(e));n.style.position="relative";var i=zF("+","plus"),r=zF("-","minus"),o=zF("1:1","normal"),a=function(e,t){var n=document.createElement("canvas");n.setAttribute("id",WF),n.setAttribute("width",String(e.offsetWidth)),n.setAttribute("height",String(e.offsetHeight)),e.appendChild(n);var i=t.colors||{};return new BF.fabric.Canvas(WF,{selection:!1,backgroundColor:i.fill,defaultCursor:"grab"})}(n,t),s=function(e,t,n,i){var r=document.createElement("div");r.className="paranoid-controls";var o=document.createElement("style");return o.innerText=function(e){return"\n .paranoid-controls {\n position: absolute;\n top: 10px;\n right: 10px;\n }\n .paranoid-button {\n margin-left: 12px;\n border-radius: 4px;\n height: 36px;\n width: 36px;\n line-height: 13px;\n font-family: Arial, sans-serif;\n font-size: 13px;\n text-align: center;\n padding: 0;\n box-shadow: 0px 5px 6px ".concat(e.nodeShadow,";\n border: 1px solid ").concat(e.buttonBorderColor,";\n background-color: ").concat(e.nodeFill,";\n color: ").concat(e.textColor,";\n cursor: pointer;\n }\n .paranoid-button:focus {\n outline: none;\n }\n .paranoid-button:active {\n border: 1px solid ").concat(e.buttonBorderColor,";\n }\n .paranoid-button_plus {\n margin-left: 0;\n border-left: none;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .paranoid-button_minus {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n")}(i),r.appendChild(o),r.appendChild(t),r.appendChild(e),r.appendChild(n),r}(i,r,o,t.colors);return n.appendChild(s),function(e,t,n,i,r){var o=r.minZoom||.2,a=r.zoomStep||.2,s=r.maxZoom||2,u=r.startZoom||1;e.setZoom(u),n.addEventListener("click",(function(t){t.preventDefault(),t.stopPropagation();var n=e.getZoom();(n-=a)<o&&(n=o),e.setZoom(n)})),t.addEventListener("click",(function(t){t.preventDefault(),t.stopPropagation();var n=e.getZoom();(n+=a)>s&&(n=s),e.setZoom(n)})),i.addEventListener("click",(function(t){t.preventDefault(),t.stopPropagation(),e.setZoom(1)}))}(a,i,r,o,t),function(e){var t=!1,n=0,i=0;e.on("mouse:down",(function(r){r.target||(e.setCursor("grabbing"),t=!0,n=r.pointer.x,i=r.pointer.y)})),e.on("mouse:move",(function(r){t&&(e.viewportTransform[4]+=r.pointer.x-n,e.viewportTransform[5]+=r.pointer.y-i,e.setCursor("grabbing"),e.getObjects().forEach((function(e){return e.setCoords()})),e.requestRenderAll(),n=r.pointer.x,i=r.pointer.y)})),e.on("mouse:up",(function(){t&&(e.setCursor("grab"),t=!1)}))}(a),a}var YF,UF={success:"rgba(59, 201, 53, 0.75)",error:"#ff0400",warning:"#ff7700",errorBackground:"rgba(235,50,38,0.08)",warningBackground:"rgba(255,219,77,0.3)",mute:"rgba(0,0,0,0.15)",stroke:"rgba(0,0,0,0.3)",fill:"#fafafa",nodeFill:"#ffffff",nodeShadow:"rgba(0,0,0,0.15)",titleColor:"#000000",textColor:"rgba(0,0,0,0.7)",buttonBorderColor:"rgba(0,0,0,0.07)",groupBorderColor:"rgba(2, 123, 243, 0.14)",groupFill:"rgba(2, 123, 243, 0.08)",titleHoverColor:"#004080",nodeHover:"#f3f3f3",specialHover:"rgba(2,123,243,1)"},KF={hasControls:!1,hasRotatingPoint:!1,lockMovementX:!0,lockMovementY:!0,selectable:!1,hoverCursor:"default",subTargetCheck:!0},qF="Arial, sans-serif",GF=13,$F=1.38;!function(e){e.Group="GROUP"}(YF||(YF={}));var QF={width:239,height:58,widthWithAnchor:249,borderRadius:4,paddingTop:8,paddingBottom:8,paddingLeft:8,paddingRight:8,titleFontSize:13,titleLineHeight:1.38,textFontSize:12,textLineHeight:1.16,titleMaxWidth:205,metaMaxWidth:205,metaMarginTop:10,metricsMarginTop:10,metricsPadding:5,anchorOffset:10},XF={radius:3,paddingRight:8},JF={paddingTop:16,paddingLeft:16,paddingRight:16,paddingBottom:14},ej=8;function tj(e,t,n){return new BF.fabric.Circle({top:e,left:t,radius:XF.radius,fill:n.nodeFill,stroke:n.stroke})}function nj(e,t){for(var n=Math.ceil(e.getLineWidth(0));n>t;){var i=e.text||"";e.set("text",i.slice(0,i.length-4)+"..."),n=Math.ceil(e.getLineWidth(0))}}var ij=n(13649),rj=n.n(ij),oj="\n M19,21\n H8\n V7\n H19\n M19,5\n H8\n A2,2 0 0,0 6,7\n V21\n A2,2 0 0,0 8,23\n H19\n A2,2 0 0,0 21,21\n V7\n A2,2 0 0,0 19,5\n M16,1\n H4\n A2,2 0 0,0 2,3\n V17\n H4\n V3\n H16\n V1\n Z\n",aj="M9.5 13l3 3l5 -5",sj="M9.5 10l8 8m-8 0l8 -8";function uj(e,t){switch(e.theme){case"warning":return t.warning;case"danger":return t.error}return t.textColor}function lj(e,t){switch(e){case"ALIVE":return t.getCommonColor("base-positive-heavy");case"DEGRADED":return t.getCommonColor("base-warning-heavy");case"DEAD":return t.getCommonColor("base-danger-heavy");default:return t.getCommonColor("base-neutral")}}function cj(e,t,n,i){var r,o=t.left,a=t.top,s=t.node,u=n.colors,l=n.renderNodeTitle,c=n.onTitleClick,d=n.prepareCopyText,h=n.textOverflow||HF.Ellipsis,f=l?l(s):s.name,p=new BF.fabric.Text(f||"",{fontSize:QF.titleFontSize,lineHeight:QF.titleLineHeight,left:QF.paddingLeft,top:QF.paddingTop,fontFamily:qF,fill:u.titleColor,hoverCursor:"function"===typeof c?"pointer":"default"});"function"===typeof c&&(p.on("mouseover",(function(){p.set("fill",u.titleHoverColor),e.requestRenderAll()})),p.on("mouseout",(function(){p.set("fill",u.titleColor),e.requestRenderAll()})),p.on("mousedown",(function(){c(s)})));var g,v=new BF.fabric.Text(s.meta||"",{fontSize:QF.textFontSize,lineHeight:QF.textLineHeight,left:QF.paddingLeft,top:QF.paddingTop+p.getBoundingRect().height+QF.metaMarginTop,fontFamily:qF,fill:u.textColor}),m=(null===(r=s.metrics)||void 0===r?void 0:r.length)?function(e,t,n,i){for(var r,o,a,s,u,l,c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1/0,d=[],h=0,f=0,p=0;p<n.length;p++){var g=n[p],v=new BF.fabric.Text(g.name+": ",{fontSize:QF.textFontSize,lineHeight:QF.textLineHeight,fontFamily:qF,fill:i.textColor}),m=new BF.fabric.Text(g.value,{fontSize:QF.textFontSize,lineHeight:QF.textLineHeight,fontFamily:qF,fill:uj(g,i),left:null!==(r=v.width)&&void 0!==r?r:0});f+((null!==(o=v.width)&&void 0!==o?o:0)+(null!==(a=m.width)&&void 0!==a?a:0))>c&&(f=0,h+=(null!==(u=null===(s=null===d||void 0===d?void 0:d[d.length-1])||void 0===s?void 0:s.height)&&void 0!==u?u:0)+QF.metricsPadding);var _=new BF.fabric.Group([v,m],{top:h,left:f});f+=(null!==(l=_.width)&&void 0!==l?l:0)+QF.metricsPadding,d.push(_)}return new BF.fabric.Group(d,{top:e,left:t})}(QF.paddingTop+p.getBoundingRect().height+v.getBoundingRect().height+QF.metaMarginTop+QF.metricsMarginTop,QF.paddingLeft,s.metrics,u,h===HF.Ellipsis?QF.width-QF.paddingLeft-QF.paddingRight:1/0):void 0;if(s.status){var _=new BF.fabric.Rect({width:12,height:12,fill:lj(s.status,u),rx:3,ry:3}),y=new BF.fabric.Text(s.status,{fontSize:QF.textFontSize,lineHeight:QF.textLineHeight,left:16,fontFamily:qF,fill:u.textColor});g=new BF.fabric.Group([_,y],{top:v.getBoundingRect().top+v.getBoundingRect().height-v.getHeightOfLine(0),left:QF.width-y.getLineWidth(0)-16-12,padding:12})}var b=i?QF.widthWithAnchor:QF.width;if(h===HF.Ellipsis)nj(p,QF.titleMaxWidth),nj(v,QF.metaMaxWidth);else{var w=p.getBoundingRect().width,C=v.getBoundingRect().width,k=g?g.getBoundingRect().width:0,S=m?m.getBoundingRect().width+QF.paddingLeft+QF.paddingRight:0;b=Math.max(b,QF.paddingLeft+Math.max(w,C)+Math.max(ej+QF.paddingRight,k)+(i?QF.anchorOffset:0),S),g&&(g.left=b-k+12-(i?QF.anchorOffset:0))}var x=function(e,t,n,i,r){return t.split("\n").length>1||e.meta&&e.meta.split("\n").length>1||e.metrics?QF.paddingTop+n.getBoundingRect().height+QF.metaMarginTop+i.getBoundingRect().height+(r?QF.metricsMarginTop+r.getBoundingRect().height:0)+QF.paddingBottom:QF.height}(s,f,p,v,m),L=new BF.fabric.Rect({width:b,height:x,fill:u.nodeFill,stroke:u.nodeShadow,rx:QF.borderRadius,ry:QF.borderRadius,shadow:new BF.fabric.Shadow({color:u.nodeShadow,offsetY:5,blur:6})}),E=function(e,t,n,i,r){var o=r.colors,a=r.prepareCopyText,s=new BF.fabric.Path(oj,{fill:o.stroke,hoverCursor:"pointer"}),u=new BF.fabric.Path(aj,{stroke:o.stroke,fill:"",hoverCursor:"pointer",opacity:0}),l=new BF.fabric.Path(sj,{stroke:o.stroke,fill:"",hoverCursor:"pointer",opacity:0}),c=new BF.fabric.Group([s,u,l],{top:n,left:i-ej,scaleX:.6,scaleY:.6});return"function"===typeof a&&c.on("mousedown",(function(){var n=a(t),i=rj()(n)?u:l;i.animate("opacity",1,{duration:150,onChange:e.requestRenderAll.bind(e),easing:BF.fabric.util.ease.easeInOutSine,onComplete:function(){setTimeout((function(){i.set("opacity",0),e.requestRenderAll()}),1e3)}})})),c}(e,s,QF.paddingTop,b-QF.paddingLeft-QF.paddingRight,n);E.set("visible",!1);var D=[L,p,E,v,g,m].filter(Boolean);i&&D.push(tj(x/2-XF.radius,b-XF.paddingRight-2*QF.borderRadius,u));var N=new BF.fabric.Group(D,Object.assign({left:o,top:a},KF));return"function"===typeof d&&(N.on("mouseover",(function(){E.set("visible",!0),e.requestRenderAll()})),N.on("mouseout",(function(){E.set("visible",!1),e.requestRenderAll()}))),N}var dj=10,hj=10,fj=15,pj=40;function gj(e){var t=arguments.length>3?arguments[3]:void 0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:hj,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:dj,r=[],o=[],a=0,s=0;e.traverseByLevels((function(u,l){var c=[],d=0,h=0,f=u.map((function(r,a){var u=i+pj*l+s,f=n+c.reduce((function(e,t){return e+t.getScaledHeight()||0}),0)+fj*a,p=function(e,t,n,i,r,o){var a,s=[],u=i.data;if(i.members.length>0){var l=n+JF.paddingRight,c=t+JF.paddingTop+JF.paddingTop+JF.paddingBottom,d=0,h=0,f=i.members.reduce((function(t,n){n.setCanvas(e),n.setNodesWithChildren(o);var i=gj(n,c,l,r),a=i.nodes,s=i.bottom,u=i.right;return c=s+fj,s>d&&(d=s),u>h&&(h=u),t.push.apply(t,(0,Ct.Z)(a)),t}),[]);a=function(e,t,n,i){var r=t.left,o=t.top,a=t.width,s=t.height,u=new BF.fabric.Text(e||"",{fontSize:QF.titleFontSize,lineHeight:18,left:JF.paddingLeft,top:JF.paddingTop,fontFamily:qF,fill:n.titleColor}),l=s+JF.paddingBottom+(u.height||0),c=a+JF.paddingLeft+JF.paddingRight;i&&(c+=XF.paddingRight);var d=[new BF.fabric.Rect({width:c,height:l,stroke:n.groupBorderColor,fill:n.groupFill,rx:QF.borderRadius,ry:QF.borderRadius}),u];return i&&d.push(tj(l/2-XF.radius,c-QF.paddingLeft-2*QF.borderRadius,n)),new BF.fabric.Group(d,Object.assign({left:r,top:o},KF))}(u.name,{top:t,left:n,width:h-n-JF.paddingRight,height:d-t-JF.paddingTop},r.colors,o.includes(i.data.name)),s.push.apply(s,(0,Ct.Z)(f))}else a=cj(e,{left:n,top:t,node:i.data},r,o.includes(i.data.name));return i.addCanvasNode(a),{object:a,membersObjects:s,top:t,left:n,width:a.getScaledWidth(),height:a.getScaledHeight()}}(e.canvas,f,u,r,t,e.nodesWithChildren),g=p.object,v=p.membersObjects;v.length>0&&o.push.apply(o,(0,Ct.Z)(v)),d+=g.getScaledHeight()+fj;var m=g.getScaledWidth();return m>h&&(h=m),r.addCanvasNode(g),c.push(g),g}));r.push.apply(r,(0,Ct.Z)(f)),r.push.apply(r,o),s+=h,(d-=fj)>a&&(a=d)}));var u=e.getTreeDepth()*pj;return{nodes:r,bottom:a+n,right:s+i+u}}var vj=function(){function e(t,n){(0,X.Z)(this,e),this.children=[],this.members=[],this.data=t,this.canvasNode=n}return(0,J.Z)(e,[{key:"add",value:function(t,n){var i=new e(t,n);i.addParent(this),this.children.push(i)}},{key:"addNode",value:function(e){e.addParent(this),this.children.push(e)}},{key:"addNodes",value:function(e){var t=this;e.forEach((function(e){e.addParent(t)})),this.children=this.children.concat(e)}},{key:"addCanvasNode",value:function(e){this.canvasNode=e}},{key:"addShapeInstance",value:function(e){this.shapeInstance=e}},{key:"hasChildren",value:function(){return this.children.length>0}},{key:"addParent",value:function(e){this.parent=e}},{key:"getLeftSibling",value:function(){var e=this;if(this.parent){var t=this.parent.children.findIndex((function(t){return t===e}));return this.parent.children[t-1]}}},{key:"getRightSibling",value:function(){var e=this;if(this.parent){var t=this.parent.children.findIndex((function(t){return t===e}));return this.parent.children[t+1]}}}]),e}();var mj=function(){function e(t){(0,X.Z)(this,e),this.nodesWithChildren=[],this.root=t}return(0,J.Z)(e,[{key:"traverseBF",value:function(e){for(var t=[this.root];t.length>0;){var n=t.shift();n&&(t.push.apply(t,(0,Ct.Z)(n.children)),e(n))}}},{key:"traverseDF",value:function(e){for(var t=[this.root];t.length;){var n=t.shift(),i=!1;n&&(n.children.length>0?t.unshift.apply(t,(0,Ct.Z)(n.children)):i=!0,e(n,i))}}},{key:"traverseByLevels",value:function(e){var t=0,n=this.root.children;for(e([this.root],0);n.length>0;)e(n,++t),n=n.reduce((function(e,t){return e.concat(t.children)}),[])}},{key:"getTreeDepth",value:function(){var e=0;return this.traverseByLevels((function(t,n){e=n})),e}},{key:"setCanvas",value:function(e){this.canvas=e}},{key:"setNodesWithChildren",value:function(e){this.nodesWithChildren=e}}]),e}(),_j=function(){function e(t,n){(0,X.Z)(this,e),this.nodes=new Map,this.data=t,this.opts=n}return(0,J.Z)(e,[{key:"parseData",value:function(){var e=this,t=this.data,n=this.getGroups(t),i=(0,Ct.Z)(t.nodes);n.forEach((function(e,t){i.push({name:t,children:e,type:YF.Group})}));var r=this.findSources(i,t.links),o=[],a={},s=new Map;return r.forEach((function(n){var r=e.mapNodesToTree(n,i,t.links);a=Object.assign(Object.assign({},r.groups),a),s=new Map([].concat((0,Ct.Z)(s),(0,Ct.Z)(r.notGroupMemebersChildren))),o.push(r.tree)})),s.forEach((function(e,t){a[t]&&a[t].addNodes(e)})),o=o.reduce((function(e,t){var n=t.root.data.group;return n?a[n].members.push(t):e.push(t),e}),[])}},{key:"getGroups",value:function(e){var t=e.nodes,n=new Map;return t.forEach((function(e){if(e.group){var t=n.get(e.group);t?t.push(e.name):n.set(e.group,[e.name])}})),n}},{key:"findSources",value:function(e,t){var n=t.map((function(e){return e.to}));return e.reduce((function(e,t){return n.includes(t.name)||e.push(t),e}),[])}},{key:"mapNodesToTree",value:function(e,t,n){var i,r=this.createNode(e),o={};this.appendGoup(o,r);var a=t.map((function(e){var t=n.reduce((function(t,n){return n.from===e.name&&t.push(n.to),t}),[]);return Object.assign(Object.assign({},e),{children:t})})),s=this.getAppender(a,o),u=(null===(i=a.find((function(t){return t.name===e.name})))||void 0===i?void 0:i.children)||[],l=s(r,u);return{tree:new mj(r),groups:o,notGroupMemebersChildren:l}}},{key:"appendGoup",value:function(e,t){var n=t.data;t.data.type===YF.Group&&(e[n.name]=t)}},{key:"getAppender",value:function(e,t){var n=this,i=new Map;return function r(o,a){var s=a.map((function(i){var o=e.find((function(e){return e.name===i})),a=n.createNode(o);return n.appendGoup(t,a),o.children.length>0&&r(a,o.children),a})),u=o.data.group,l=Boolean(u),c=[],d=[];if(s.forEach((function(e){var t=e.data.group;l?u===t?c.push(e):d.push(e):c.push(e)})),o.addNodes(c),u&&d.length>0){var h=i.get(u);h?h.push.apply(h,d):i.set(u,d)}return i}}},{key:"createNode",value:function(e){var t=new vj(e);return this.nodes.set(e.name,t),t}}]),e}();var yj=4,bj=12;function wj(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:jF.Arrow,r=function(e){var t=e.left,n=void 0===t?0:t,i=e.top,r=void 0===i?0:i,o=e.width,a=void 0===o?0:o,s=e.height;return{x:n+a,y:r+(void 0===s?0:s)/2}}(e),o=r.x,a=r.y,s=function(e){var t=e.left,n=void 0===t?0:t,i=e.top,r=void 0===i?0:i,o=e.height;return{x:n,y:r+(void 0===o?0:o)/2}}(t),u=s.x,l=s.y,c={y:a,x:o+yj},d={y:l,x:u-bj},h=new BF.fabric.Path("M ".concat(o," ").concat(a,"\n H ").concat(c.x,"\n ").concat(function(e,t){var n=t.y-e.y;return Math.abs(n),"L ".concat(t.x," ").concat(t.y)}(c,d),"\n H ").concat(u,"\n "),{fill:"",stroke:n.stroke,strokeWidth:1}),f=[h];if(i!==jF.Line){var p=new BF.fabric.Path(function(e,t){var n={x1:e,y1:t,x2:e-8,y2:t-3,x3:e-8,y3:t+3};return"M ".concat(n.x1," ").concat(n.y1,"\n L ").concat(n.x3," ").concat(n.y3,"\n L ").concat(n.x2," ").concat(n.y2,"\n L ").concat(n.x1," ").concat(n.y1,"\n ")}(u,l),{fill:n.stroke,stroke:n.stroke,strokeWidth:1});f.push(p)}return new BF.fabric.Group(f,Object.assign({},KF))}var Cj=function(){function e(t,n,i){(0,X.Z)(this,e),this.nodesWithChildren=i.links.reduce((function(e,t){return e.set(t.from,[]),e}),new Map),this.parser=new _j(i,n),this.opts=n,this.canvas=VF(t,n)}return(0,J.Z)(e,[{key:"destroy",value:function(){var e=document.getElementById(WF);e&&(this.canvas.dispose(),e.remove())}},{key:"renderCompactTopology",value:function(){var e=this;requestAnimationFrame((function(){var t;e.parser.parseData().forEach((function(n){n.setCanvas(e.canvas),n.setNodesWithChildren(e.getNodesWithChildren());var i=gj(n,t,undefined,e.opts),r=i.nodes,o=i.bottom;t=o+15;var a=e.getLinks();e.renderIntoCanvas(r,a)})),e.opts.initialZoomFitsCanvas&&e.zoomObjectsToFitCanvas()}))}},{key:"updateData",value:function(e){var t=this;this.parser=new _j(e,this.opts),this.setNodeWithChildren(e);var n,i=this.parser.parseData();i.forEach((function(e,r){e.setCanvas(t.canvas),e.setNodesWithChildren(t.getNodesWithChildren());var o=gj(e,n,undefined,t.opts),a=o.nodes,s=o.bottom;n=s+15;var u=t.getLinks();t.renderIntoCanvas(a,u,i.length-1===r)}))}},{key:"renderIntoCanvas",value:function(e,t,n){var i;this.canvas&&(this.clearCanvas(),(i=this.canvas).add.apply(i,(0,Ct.Z)(t).concat((0,Ct.Z)(e))),this.bringNodesToFront(),this.rendered=n)}},{key:"clearCanvas",value:function(){if(this.canvas&&this.rendered){try{this.canvas.clear(),this.canvas.clearContext(this.canvas.getContext())}catch(e){console.error(e)}this.rendered=!1}}},{key:"setNodeWithChildren",value:function(e){this.nodesWithChildren=e.links.reduce((function(e,t){return e.set(t.from,[]),e}),new Map)}},{key:"getNodesWithChildren",value:function(){var e,t=[],n=(0,Na.Z)(this.nodesWithChildren.keys());try{for(n.s();!(e=n.n()).done;){var i=e.value;t.push(i)}}catch(r){n.e(r)}finally{n.f()}return t}},{key:"getLinks",value:function(){var e=this,t=this.parser;return t?t.data.links.reduce((function(n,i){var r=i.from,o=i.to,a=t.nodes.get(r),s=t.nodes.get(o);return(null===a||void 0===a?void 0:a.canvasNode)&&(null===s||void 0===s?void 0:s.canvasNode)?(n.push(wj(a.canvasNode,s.canvasNode,e.opts.colors,e.opts.linkType)),n):n}),[]):[]}},{key:"bringNodesToFront",value:function(){var e,t=null===(e=this.parser)||void 0===e?void 0:e.nodes;t&&t.forEach((function(e){e.data.type!==YF.Group&&e.canvasNode&&e.canvasNode.bringToFront()}))}},{key:"zoomObjectsToFitCanvas",value:function(){var e=0,t=0;this.canvas.getObjects().forEach((function(n){var i=n.getBoundingRect(),r=i.top,o=i.left,a=i.height,s=o+i.width,u=r+a;s>e&&(e=s),u>t&&(t=u)})),e+=this.opts.initialLeft,t+=this.opts.initialTop;var n=this.canvas.getWidth()/e,i=this.canvas.getHeight()/t,r=Math.min(n,i);if(r<1){this.canvas.setZoom(r);var o=this.opts.initialTop*r,a=this.opts.initialLeft*r,s=this.opts.initialTop-o,u=this.opts.initialLeft-a;this.canvas.relativePan(new BF.fabric.Point(u,s))}}}]),e}(),kj=n(28664),Sj=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n)}((0,kj.Z)(CustomEvent)),xj=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"dispatch",value:function(e,t){this.dispatchEvent(new Sj(e,{detail:t}))}}]),n}((0,kj.Z)(EventTarget)),Lj=16,Ej=16,Dj=24;function Nj(e){switch(e){case 0:return 0;case 1:return Ej;default:return Dj}}function Mj(e,t,n,i,r,o){var a=function(e,t,n,i,r,o,a){var s=new Map,u=new Map,l=new Map,c=[];return i.traverseBF((function(i){var r=function(e,t,n,i,r,o,a){var s,u,l=null!==(s=t.shapeInstance)&&void 0!==s?s:o.node(e,{top:n,left:i},t,r,a),c=null!==(u=t.canvasNode)&&void 0!==u?u:l.getShape();return t.addShapeInstance(l),t.addCanvasNode(c),{object:c,top:n,left:i,width:c.getScaledWidth(),height:c.getScaledHeight()}}(e,i,0,0,t,n,a),o=r.object,u=r.width,l=r.height;s.set(i,{width:u,height:l}),c.push(o)})),function e(t){var n=s.get(t).width,i=0;if(t.parent&&1===t.parent.children.length&&u.has(t.parent)){var r=u.get(t.parent);n<r&&(n=r)}return u.set(t,n),t.children.length>0&&(i=(t.children.length-1)*Lj+t.children.reduce((function(t,n){return t+e(n)}),0),l.set(t,i)),n=Math.max(n,i),u.set(t,n),n}(i.root),function e(t,n,i){var r,o=i,a=i,c=(0,Na.Z)(t);try{for(c.s();!(r=c.n()).done;){var d=r.value,h=s.get(d),f=h.width,p=h.height,g=u.get(d),v=n,m=o+Math.floor(g/2)-Math.floor(f/2);if(d.canvasNode.set({top:v,left:m}),d.canvasNode.setCoords(),o=o+g+Lj,d.children.length){var _=0,y=l.get(d);y<g&&(_=Math.floor((g-y)/2));var b=n+p+Nj(d.children.length),w=a+_;e(d.children,b,w)}a=o}}catch(C){c.e(C)}finally{c.f()}}([i.root],r,o),c}(e.canvas,i,r,e,t,n,o),s=0,u=0;return a.forEach((function(e){s=Math.max(s,(e.left||0)+e.getScaledWidth()),u=Math.max(u,(e.top||0)+e.getScaledHeight())})),{nodes:a,bottom:u,right:s}}function Tj(e){var t=e.canvasNode;if(t){var n=t.left||0,i=(t.top||0)+t.getScaledHeight();return{x:n+t.getScaledWidth()/2,y:i}}return{x:0,y:0}}function Ij(e){var t=e.canvasNode;if(t){var n=t.left||0,i=t.top||0;return{x:n+t.getScaledWidth()/2,y:i}}return{x:0,y:0}}var Oj=function(){function e(t,n,i,r){(0,X.Z)(this,e),this.canvas=VF(t,n),this.parser=new _j(i,n),this.opts=n,this.shapes=r,this.em=new xj,this.trees=[],this.nodes=[],this.links=[],this.listenNodeResize()}return(0,J.Z)(e,[{key:"render",value:function(){var e=this;requestAnimationFrame((function(){e.trees=e.parser.parseData(),e.renderIntoCanvas(),e.opts.initialZoomFitsCanvas&&e.zoomObjectsToFitCanvas()}))}},{key:"destroy",value:function(){var e=document.getElementById(WF);e&&(this.canvas.dispose(),e.remove())}},{key:"getEventEmmiter",value:function(){return this.em}},{key:"getGraphNode",value:function(e){return this.parser.nodes.get(e)}},{key:"getOpts",value:function(){return this.opts}},{key:"getColors",value:function(){return this.opts.colors}},{key:"getCanvas",value:function(){return this.canvas}},{key:"renderIntoCanvas",value:function(){var e,t,n=this;this.nodes.forEach((function(e){n.canvas.remove(e)})),this.nodes=[],this.links.forEach((function(e){n.canvas.remove(e)})),this.links=[];var i=this.canvas.getHeight()||0,r=this.canvas.getWidth()||0,o=i,a=r,s=this.opts.initialTop,u=this.opts.initialLeft;this.trees.forEach((function(e){var t,i;e.setCanvas(n.canvas);var r=Mj(e,s,u,n.opts,n.shapes,n.em),l=r.nodes,c=r.bottom,d=r.right;u=d+15,o=Math.max(c,o),a=Math.max(d,a),(t=n.nodes).push.apply(t,(0,Ct.Z)(l)),(i=n.canvas).add.apply(i,(0,Ct.Z)(l))}));var l=function(e,t){var n=t.colors,i=[];return e.data.links.reduce((function(t,r){var o=r.from,a=e.nodes.get(o);if(a&&1===a.children.length&&!i.includes(o)){var s=Tj(a),u=s.x,l=s.y,c=new BF.fabric.Path("M ".concat(u," ").concat(l,"\n V ").concat(l+Ej),{fill:"",stroke:n.stroke,strokeWidth:1});t.push(new BF.fabric.Group([c],Object.assign({},KF))),i.push(o)}if(a&&a.children.length>1&&!i.includes(o)){var d=Tj(a),h=d.x,f=d.y,p=Dj/2,g=[new BF.fabric.Path("M ".concat(h," ").concat(f,"\n V ").concat(f+p),{fill:"",stroke:n.stroke,strokeWidth:1})],v=Ij(a.children[0]),m=v.x,_=v.y,y=Ij(a.children[a.children.length-1]),b=y.x,w=y.y,C=new BF.fabric.Path("M ".concat(m," ").concat(_,"\n V ").concat(_-p+6,"\n Q ").concat(m," ").concat(_-p," ").concat(m+6," ").concat(_-p,"\n H ").concat(b-6,"\n Q ").concat(b," ").concat(w-p," ").concat(b," ").concat(w+6-p,"\n V ").concat(w,"\n "),{fill:"",stroke:n.stroke,strokeWidth:1});g.push(C),a.children.forEach((function(e,t){if(0!==t&&t!==a.children.length-1){var i=Ij(e),r=i.x,o=i.y,s=new BF.fabric.Path("M ".concat(r," ").concat(o,"\n V ").concat(o-p,"\n "),{fill:"",stroke:n.stroke,strokeWidth:1});g.push(s)}})),t.push(new BF.fabric.Group(g,Object.assign({},KF))),i.push(o)}return t}),[])}(this.parser,this.opts);(e=this.links).push.apply(e,(0,Ct.Z)(l)),(t=this.canvas).add.apply(t,(0,Ct.Z)(l)),this.bringNodesToFront()}},{key:"bringNodesToFront",value:function(){var e,t=null===(e=this.parser)||void 0===e?void 0:e.nodes;t&&t.forEach((function(e){e.canvasNode&&e.canvasNode.bringToFront()}))}},{key:"listenNodeResize",value:function(){var e=this;this.em.addEventListener("node:resize",(function(){e.renderIntoCanvas()}))}},{key:"zoomObjectsToFitCanvas",value:function(){var e=0,t=0;this.canvas.getObjects().forEach((function(n){var i=n.getBoundingRect(),r=i.top,o=i.left,a=i.height,s=o+i.width,u=r+a;s>e&&(e=s),u>t&&(t=u)})),e+=this.opts.initialLeft,t+=this.opts.initialTop;var n=this.canvas.getWidth()/e,i=this.canvas.getHeight()/t,r=Math.min(n,i);if(r<1){this.canvas.setZoom(r);var o=this.opts.initialTop*r,a=this.opts.initialLeft*r,s=this.opts.initialTop-o,u=this.opts.initialLeft-a;this.canvas.relativePan(new BF.fabric.Point(u,s))}}}]),e}();function Aj(){var e={success:"--yc-color-text-positive",error:"--yc-color-scarlet",warning:"--yc-color-amber",errorBackground:"--yc-color-base-danger",warningBackground:"--yc-color-base-warning",mute:"--yc-color-line-generic",stroke:"--yc-color-text-hint",fill:"--yc-color-base-generic-ultralight",nodeFill:"--yc-color-base-float",nodeShadow:"--yc-color-sfx-shadow",titleColor:"--yc-color-text-primary",textColor:"--yc-color-text-complementary",buttonBorderColor:"--yc-color-line-generic",groupBorderColor:"--yc-color-celestial-thunder",groupFill:"--yc-color-celestial",titleHoverColor:"--yc-color-text-link-hover",nodeHover:"--yc-color-base-float-hover",specialHover:"--yc-color-line-selection-active"},t=getComputedStyle(document.body),n=Object.keys(e).reduce((function(n,i){var r=t.getPropertyValue(e[i]).replace(/ /g,"");return r&&(n[i]=r),n}),{});return Object.assign(Object.assign(Object.assign({},UF),n),{getCommonColor:function(e){return t.getPropertyValue("--yc-color-".concat(e)).replace(/ /g,"")}})}var Rj={linkType:jF.Arrow};function Pj(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Rj,t=e.colors||{};return Object.assign(Object.assign({initialTop:10,initialLeft:10},e),{colors:Object.assign(Object.assign(Object.assign({},UF),Aj()),t)})}function Zj(e,t,n){var i=Pj(n);return new Cj(e,i,t)}function Fj(e,t,n,i){var r=Pj(n);return new Oj(e,r,t,i)}var jj=function(){if("undefined"!==typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,i){return e[0]===t&&(n=i,!0)})),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),i=this.__entries__[n];return i&&i[1]},t.prototype.set=function(t,n){var i=e(this.__entries__,t);~i?this.__entries__[i][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,i=e(n,t);~i&&n.splice(i,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,i=this.__entries__;n<i.length;n++){var r=i[n];e.call(t,r[1],r[0])}},t}()}(),Hj="undefined"!==typeof window&&"undefined"!==typeof document&&window.document===document,Bj="undefined"!==typeof n.g&&n.g.Math===Math?n.g:"undefined"!==typeof self&&self.Math===Math?self:"undefined"!==typeof window&&window.Math===Math?window:Function("return this")(),zj="function"===typeof requestAnimationFrame?requestAnimationFrame.bind(Bj):function(e){return setTimeout((function(){return e(Date.now())}),1e3/60)},Wj=2;var Vj=20,Yj=["top","right","bottom","left","width","height","size","weight"],Uj="undefined"!==typeof MutationObserver,Kj=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var n=!1,i=!1,r=0;function o(){n&&(n=!1,e()),i&&s()}function a(){zj(o)}function s(){var e=Date.now();if(n){if(e-r<Wj)return;i=!0}else n=!0,i=!1,setTimeout(a,t);r=e}return s}(this.refresh.bind(this),Vj)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter((function(e){return e.gatherActive(),e.hasActive()}));return e.forEach((function(e){return e.broadcastActive()})),e.length>0},e.prototype.connect_=function(){Hj&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Uj?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){Hj&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t,i=Yj.some((function(e){return!!~n.indexOf(e)}));i&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),qj=function(e,t){for(var n=0,i=Object.keys(t);n<i.length;n++){var r=i[n];Object.defineProperty(e,r,{value:t[r],enumerable:!1,writable:!1,configurable:!0})}return e},Gj=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||Bj},$j=nH(0,0,0,0);function Qj(e){return parseFloat(e)||0}function Xj(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce((function(t,n){return t+Qj(e["border-"+n+"-width"])}),0)}function Jj(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return $j;var i=Gj(e).getComputedStyle(e),r=function(e){for(var t={},n=0,i=["top","right","bottom","left"];n<i.length;n++){var r=i[n],o=e["padding-"+r];t[r]=Qj(o)}return t}(i),o=r.left+r.right,a=r.top+r.bottom,s=Qj(i.width),u=Qj(i.height);if("border-box"===i.boxSizing&&(Math.round(s+o)!==t&&(s-=Xj(i,"left","right")+o),Math.round(u+a)!==n&&(u-=Xj(i,"top","bottom")+a)),!function(e){return e===Gj(e).document.documentElement}(e)){var l=Math.round(s+o)-t,c=Math.round(u+a)-n;1!==Math.abs(l)&&(s-=l),1!==Math.abs(c)&&(u-=c)}return nH(r.left,r.top,s,u)}var eH="undefined"!==typeof SVGGraphicsElement?function(e){return e instanceof Gj(e).SVGGraphicsElement}:function(e){return e instanceof Gj(e).SVGElement&&"function"===typeof e.getBBox};function tH(e){return Hj?eH(e)?function(e){var t=e.getBBox();return nH(0,0,t.width,t.height)}(e):Jj(e):$j}function nH(e,t,n,i){return{x:e,y:t,width:n,height:i}}var iH=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=nH(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=tH(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),rH=function(e,t){var n=function(e){var t=e.x,n=e.y,i=e.width,r=e.height,o="undefined"!==typeof DOMRectReadOnly?DOMRectReadOnly:Object,a=Object.create(o.prototype);return qj(a,{x:t,y:n,width:i,height:r,top:n,right:t+i,bottom:r+n,left:t}),a}(t);qj(this,{target:e,contentRect:n})},oH=function(){function e(e,t,n){if(this.activeObservations_=[],this.observations_=new jj,"function"!==typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=n}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!==typeof Element&&Element instanceof Object){if(!(e instanceof Gj(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new iH(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!==typeof Element&&Element instanceof Object){if(!(e instanceof Gj(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach((function(t){t.isActive()&&e.activeObservations_.push(t)}))},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map((function(e){return new rH(e.target,e.broadcastRect())}));this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),aH="undefined"!==typeof WeakMap?new WeakMap:new jj,sH=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=Kj.getInstance(),i=new oH(t,n,this);aH.set(this,i)};["observe","unobserve","disconnect"].forEach((function(e){sH.prototype[e]=function(){var t;return(t=aH.get(this))[e].apply(t,arguments)}}));var uH="undefined"!==typeof Bj.ResizeObserver?Bj.ResizeObserver:sH,lH="paranoidRoot",cH=(e.Component,"paranoidRoot"),dH=(e.Component,{width:280,expandedWidth:360,borderRadius:4,titleFontSize:GF,titleLineHeight:$F,textFontSize:GF,textLineHeight:$F,padding:12,timeMaxWidth:25,percentageMaxWidth:25,textOffset:8,tagLeftOffset:4,tagTopOffset:5,statsOffset:24});var hH=function(){function e(t,n,i,r){(0,X.Z)(this,e),this.top=0,this.left=0,this.canvas=t,this.stats=n,this.coords=i,this.colors=r,this.textProps={fontSize:dH.textFontSize,lineHeight:dH.textLineHeight,fontFamily:qF,fill:null===r||void 0===r?void 0:r.titleColor},this.selectedGroup=n[0].group;var o=this.createTitles(),a=o.map((function(e){return e.getScaledHeight()})),s=Math.max.apply(null,a);this.lineTop=this.top+s+dH.textOffset;var u=this.createLine();this.content=this.createContent(o),this.group=this.createGroup(o,u,this.content),this.initListeners()}return(0,J.Z)(e,[{key:"getCanvasObject",value:function(){return this.group}},{key:"createTitles",value:function(){var e=this,t=this.left;return this.stats.map((function(e){return e.group})).map((function(n){var i,r,o=new BF.fabric.Text(n,Object.assign(Object.assign({left:t,top:e.top},e.textProps),{fill:n===e.selectedGroup?null===(i=e.colors)||void 0===i?void 0:i.titleColor:null===(r=e.colors)||void 0===r?void 0:r.textColor}));return t+=o.getScaledWidth()+dH.statsOffset,o}))}},{key:"createLine",value:function(){return new BF.fabric.Path("M ".concat(this.left," ").concat(this.lineTop,"\n H ").concat(dH.expandedWidth-2*dH.padding),{fill:"",stroke:this.colors.stroke,strokeWidth:1})}},{key:"createContent",value:function(e){var t=this;return this.stats.map((function(n,i){var r=n.group,o=n.stats,a=t.getContentItems(o,t.lineTop),s=e[i],u=s.left||0,l=u+s.getScaledWidth();return{group:r,items:new BF.fabric.Group(a,{opacity:t.selectedGroup===r?1:0}),title:s,hoverLine:t.createHoverLine(u,l,r)}}))}},{key:"getContentItems",value:function(e,t){var n=this,i=t+2*dH.textOffset,r=[],o=function(e){e.forEach((function(e){var t,o=e.name,a=e.value,s=new BF.fabric.Text(o,Object.assign({left:n.left,top:i},n.textProps)),u=dH.expandedWidth/2-dH.padding,l=dH.expandedWidth-2*dH.padding,c=new BF.fabric.Textbox(String(a),Object.assign(Object.assign({left:u,top:i},n.textProps),{fill:null===(t=n.colors)||void 0===t?void 0:t.textColor,splitByGrapheme:!0,width:l-u}));r.push(s,c),i+=Math.max(s.getScaledHeight(),c.getScaledHeight())+dH.textOffset}))};return!function(e){var t;return Boolean(null===(t=e[0])||void 0===t?void 0:t.items)}(e)?o(e):e.forEach((function(t,a){var s=t.name,u=t.items,l=new BF.fabric.Text(s,Object.assign(Object.assign({left:n.left,top:i},n.textProps),{fontWeight:"bold"}));if(r.push(l),i+=l.getScaledHeight()+dH.textOffset,o(u),a!==e.length-1){var c=new BF.fabric.Path("M ".concat(n.left," ").concat(i,"\n H ").concat(dH.expandedWidth-2*dH.padding),{fill:"",stroke:n.colors.stroke,strokeWidth:1,strokeDashArray:[6,4]});r.push(c),i+=c.getScaledHeight()+dH.textOffset}})),r}},{key:"createGroup",value:function(e,t,n){var i=n.map((function(e){return e.items})),r=n.map((function(e){return e.hoverLine}));return new BF.fabric.Group([].concat((0,Ct.Z)(e),[t],(0,Ct.Z)(i),(0,Ct.Z)(r)),Object.assign({left:this.coords.left,top:this.coords.top},KF))}},{key:"createHoverLine",value:function(e,t,n){return new BF.fabric.Path("M ".concat(e," ").concat(this.lineTop-1,"\n H ").concat(t),{fill:"",stroke:this.colors.specialHover,strokeWidth:2,opacity:this.selectedGroup===n?1:0})}},{key:"initListeners",value:function(){var e=this;this.content.forEach((function(t){var n=t.group,i=t.title,r=t.items,o=t.hoverLine;i.on("mousedown",(function(){var t=e.selectedGroup,a=e.content.find((function(e){return e.group===t}));a&&(a.title.set({fill:e.colors.textColor}),a.items.set({opacity:0}),a.hoverLine.set({opacity:0}),i.set({fill:e.colors.titleColor}),r.set({opacity:1}),o.set({opacity:1}),e.selectedGroup=n,e.canvas.requestRenderAll())}))}))}}]),e}();function fH(e,t,n,i,r){return new hH(e,t,{top:n,left:i},r).getCanvasObject()}function pH(e,t,n){return new BF.fabric.Textbox(e?"#".concat(e):"",{fontSize:12,lineHeight:14,textAlign:"right",fontFamily:qF,fill:n.getCommonColor("text-secondary"),hoverCursor:t?"pointer":"default"})}var gH={width:112,expandedWidth:360,borderRadius:6,titleFontSize:GF,titleLineHeight:$F,textFontSize:GF,textLineHeight:$F,padding:16,textOffset:8},vH={scaleX:16/512,scaleY:16/512,originY:"center"};function mH(e,t,n){var i,r=new BF.fabric.Text(e,{fontSize:gH.textFontSize,lineHeight:gH.textFontSize,fontFamily:qF,fill:n.getCommonColor("text-misc"),originY:"center"}),o=[r];switch(e){case"Merge":i=new BF.fabric.Path("M232.5 5.171C247.4-1.718 264.6-1.718 279.5 5.171L498.1 106.2C506.6 110.1 512 118.6 512 127.1C512 137.3 506.6 145.8 498.1 149.8L279.5 250.8C264.6 257.7 247.4 257.7 232.5 250.8L13.93 149.8C5.438 145.8 0 137.3 0 127.1C0 118.6 5.437 110.1 13.93 106.2L232.5 5.171zM498.1 234.2C506.6 238.1 512 246.6 512 255.1C512 265.3 506.6 273.8 498.1 277.8L279.5 378.8C264.6 385.7 247.4 385.7 232.5 378.8L13.93 277.8C5.438 273.8 0 265.3 0 255.1C0 246.6 5.437 238.1 13.93 234.2L67.13 209.6L219.1 279.8C242.5 290.7 269.5 290.7 292.9 279.8L444.9 209.6L498.1 234.2zM292.9 407.8L444.9 337.6L498.1 362.2C506.6 366.1 512 374.6 512 383.1C512 393.3 506.6 401.8 498.1 405.8L279.5 506.8C264.6 513.7 247.4 513.7 232.5 506.8L13.93 405.8C5.438 401.8 0 393.3 0 383.1C0 374.6 5.437 366.1 13.93 362.2L67.13 337.6L219.1 407.8C242.5 418.7 269.5 418.7 292.9 407.8V407.8z",vH);break;case"UnionAll":i=new BF.fabric.Path("M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z",vH);break;case"HashShuffle":i=new BF.fabric.Path("M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z",vH);break;case"Map":i=new BF.fabric.Path("M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z",vH);break;case"Broadcast":i=new BF.fabric.Path("M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z",vH)}return i&&(i.set({fill:n.getCommonColor("text-misc"),top:0,left:0,originY:"center"}),r.set({left:22}),o.push(i)),new BF.fabric.Group(o,Object.assign(Object.assign({},KF),{hoverCursor:t?"pointer":"default"}))}var _H=function(){function e(t,n,i,r,o){(0,X.Z)(this,e),this.expanded=!1,this.expandedNodeHeight=0,this.nodeHeight=0,this.canvas=t,this.coords=n,this.treeNode=i,this.opts=r,this.em=o,this.data=on().get(i,["data","data"]),this.objects=this.prepareShapeObjects(),this.setShapeObjectsCoords(),this.body=this.prepareNodeBody(),this.group=this.createGroup(),this.initListeners()}return(0,J.Z)(e,[{key:"getShape",value:function(){return this.group}},{key:"getFillColor",value:function(){return this.opts.colors.getCommonColor("base-misc")}},{key:"getHoverFillColor",value:function(){return this.opts.colors.getCommonColor("base-misc-hover")}},{key:"getShadow",value:function(){}},{key:"getHoverShadow",value:function(){}},{key:"toggleHighlight",value:function(e){this.isExpandable()&&!this.expanded&&this.body.set({fill:e?this.getHoverFillColor():this.getFillColor()}),this.canvas.requestRenderAll()}},{key:"prepareNodeBody",value:function(){var e=this.opts.colors,t=this.objects[this.objects.length-1];return this.nodeHeight=(t.top||0)+t.getScaledHeight()+gH.padding,new BF.fabric.Rect({width:gH.width,height:this.nodeHeight,fill:this.getFillColor(),shadow:this.getShadow(),stroke:e.getCommonColor("line-misc"),rx:gH.borderRadius,ry:gH.borderRadius,hoverCursor:this.isExpandable()?"pointer":"default"})}},{key:"prepareShapeObjects",value:function(){return[pH(this.data.id,this.isExpandable(),this.opts.colors),mH(this.data.name||"",this.isExpandable(),this.opts.colors)]}},{key:"setShapeObjectsCoords",value:function(){var e=(0,ne.Z)(this.objects,2),t=e[0],n=e[1],i=gH.padding,r=this.expanded?gH.expandedWidth:gH.width,o=n.getScaledWidth();t.set({left:0,top:4,width:r-4}),n.set({left:r/2-o/2,top:i})}},{key:"createGroup",value:function(){var e=this.coords,t=e.top,n=e.left;return new BF.fabric.Group([this.body].concat((0,Ct.Z)(this.objects)),Object.assign({top:t,left:n},KF))}},{key:"initListeners",value:function(){this.initHover(),this.isExpandable()&&this.initExpand()}},{key:"initHover",value:function(){var e=this;this.group.on("mouseover",(function(){e.em.dispatch("node:mouseover",e.treeNode),e.toggleHighlight(!0)})),this.group.on("mouseout",(function(){e.em.dispatch("node:mouseout",e.treeNode),e.toggleHighlight(!1)}))}},{key:"initExpand",value:function(){var e=this;this.group.on("mousedown",(function(t){var n;e.stats&&(null===(n=t.subTargets)||void 0===n?void 0:n.includes(e.stats))||(e.expanded=!e.expanded,e.updateDimensions(),e.em.dispatch("node:resize",e.treeNode))}))}},{key:"updateDimensions",value:function(){var e,t,n=this.opts.colors,i=(0,ne.Z)(this.objects,2),r=i[0],o=i[1],a=o.getScaledWidth();this.expanded?(this.stats=fH(this.canvas,this.data.stats,(this.group.top||0)+this.body.getScaledHeight()+gH.padding,(this.group.left||0)+gH.padding,n),this.expandedNodeHeight=this.nodeHeight+this.stats.getScaledHeight()+2*gH.padding,e=gH.expandedWidth,t=this.expandedNodeHeight,this.group.addWithUpdate(this.stats)):(e=gH.width,t=this.nodeHeight,this.group.removeWithUpdate(this.stats),this.stats=void 0);var s=function(e,t){var n=[];return t.forEachObject((function(i){n.push(i),t.removeWithUpdate(i),e.add(i)})),function(){n.forEach((function(n){e.remove(n),t.addWithUpdate(n)}))}}(this.canvas,this.group);this.body.set({width:e,height:t,fill:this.getFillColor(),shadow:this.getShadow()}),r.set({width:e-4}),o.set({left:(this.body.left||0)+(this.body.width||0)/2-a/2}),s()}},{key:"isExpandable",value:function(){return Boolean(this.data.stats&&this.data.stats.length>0)}}]),e}(),yH={width:190,bevelSize:10,titleFontSize:GF,titleLineHeight:$F,padding:12};var bH=function(){function e(t,n,i,r,o){(0,X.Z)(this,e),this.nodeHeight=0,this.coords=n,this.opts=r,this.data=on().get(i,["data","data"]),this.shadow=new BF.fabric.Shadow({color:r.colors.nodeShadow,offsetY:1,blur:5}),this.hoverShadow=new BF.fabric.Shadow({color:r.colors.nodeShadow,offsetY:3,blur:8}),this.objects=this.prepareShapeObjects(),this.setShapeObjectsCoords(),this.body=this.prepareNodeBody(),this.group=this.createGroup()}return(0,J.Z)(e,[{key:"getShape",value:function(){return this.group}},{key:"getFillColor",value:function(){return this.opts.colors.nodeFill}},{key:"getHoverFillColor",value:function(){return this.opts.colors.nodeHover}},{key:"getShadow",value:function(){return this.shadow}},{key:"getHoverShadow",value:function(){return this.hoverShadow}},{key:"toggleHighlight",value:function(){}},{key:"prepareNodeBody",value:function(){var e=this.opts.colors,t=this.objects[this.objects.length-1];return this.nodeHeight=(t.top||0)+t.getScaledHeight()+yH.padding,new BF.fabric.Polygon([{x:yH.bevelSize,y:0},{x:yH.width-yH.bevelSize,y:0},{x:yH.width,y:yH.bevelSize},{x:yH.width,y:this.nodeHeight-yH.bevelSize},{x:yH.width-yH.bevelSize,y:this.nodeHeight},{x:yH.bevelSize,y:this.nodeHeight},{x:0,y:this.nodeHeight-yH.bevelSize},{x:0,y:yH.bevelSize}],{fill:this.getFillColor(),stroke:null===e||void 0===e?void 0:e.nodeShadow,shadow:this.getShadow(),hoverCursor:"default"})}},{key:"prepareShapeObjects",value:function(){var e=function(e,t){return new BF.fabric.Text(e.join("\n"),{fontSize:yH.titleFontSize,lineHeight:yH.titleLineHeight,left:0,top:26,fontFamily:qF,fontStyle:"italic",fill:t.getCommonColor("text-primary")})}([this.data.name||""],this.opts.colors);return[e]}},{key:"setShapeObjectsCoords",value:function(){var e=(0,ne.Z)(this.objects,1)[0],t=yH.padding,n=e.getScaledWidth();e.set({left:yH.width/2-n/2,top:t})}},{key:"createGroup",value:function(){var e=this.coords,t=e.top,n=e.left;return new BF.fabric.Group([this.body].concat((0,Ct.Z)(this.objects)),Object.assign({top:t,left:n},KF))}}]),e}(),wH=40,CH=40,kH=20,SH=function(){function e(t,n,i,r,o){(0,X.Z)(this,e),this.coords=n,this.opts=r,this.shadow=new BF.fabric.Shadow({color:r.colors.nodeShadow,offsetY:1,blur:5}),this.hoverShadow=new BF.fabric.Shadow({color:r.colors.nodeShadow,offsetY:3,blur:8}),this.body=this.prepareNodeBody(),this.group=this.createGroup()}return(0,J.Z)(e,[{key:"getShape",value:function(){return this.group}},{key:"getFillColor",value:function(){return this.opts.colors.nodeFill}},{key:"getHoverFillColor",value:function(){return this.opts.colors.nodeHover}},{key:"getShadow",value:function(){return this.shadow}},{key:"getHoverShadow",value:function(){return this.hoverShadow}},{key:"toggleHighlight",value:function(){}},{key:"prepareNodeBody",value:function(){var e=this.opts.colors;return new BF.fabric.Rect({width:wH,height:CH,fill:this.getFillColor(),stroke:null===e||void 0===e?void 0:e.nodeShadow,rx:kH,ry:kH,shadow:this.getShadow(),hoverCursor:"default"})}},{key:"createGroup",value:function(){var e=this.coords,t=e.top,n=e.left;return new BF.fabric.Group([this.body],Object.assign({top:t,left:n},KF))}}]),e}(),xH={width:112,borderRadius:6,titleFontSize:GF,titleLineHeight:$F,textFontSize:GF,textLineHeight:$F,padding:12,textOffset:8};var LH=function(){function e(t,n,i,r,o){(0,X.Z)(this,e),this.nodeHeight=0,this.coords=n,this.opts=r,this.data=on().get(i,["data","data"]),this.shadow=new BF.fabric.Shadow({color:r.colors.nodeShadow,offsetY:1,blur:5}),this.hoverShadow=new BF.fabric.Shadow({color:r.colors.nodeShadow,offsetY:3,blur:8}),this.objects=this.prepareShapeObjects(),this.setShapeObjectsCoords(),this.body=this.prepareNodeBody(),this.group=this.createGroup()}return(0,J.Z)(e,[{key:"getShape",value:function(){return this.group}},{key:"getFillColor",value:function(){return this.opts.colors.nodeFill}},{key:"getHoverFillColor",value:function(){return this.opts.colors.nodeHover}},{key:"getShadow",value:function(){return this.shadow}},{key:"getHoverShadow",value:function(){return this.hoverShadow}},{key:"toggleHighlight",value:function(){}},{key:"prepareNodeBody",value:function(){var e=this.opts.colors,t=this.objects[this.objects.length-1];return this.nodeHeight=(t.top||0)+t.getScaledHeight()+xH.padding,new BF.fabric.Rect({width:xH.width,height:this.nodeHeight,fill:this.getFillColor(),stroke:null===e||void 0===e?void 0:e.nodeShadow,shadow:this.getShadow(),hoverCursor:"default"})}},{key:"prepareShapeObjects",value:function(){var e=function(e,t){return new BF.fabric.Text(e.join("\n"),{fontSize:xH.textFontSize,lineHeight:xH.textLineHeight,left:0,top:26,fontFamily:qF,fill:t.getCommonColor("text-primary")})}([this.data.name||""],this.opts.colors);return[e]}},{key:"setShapeObjectsCoords",value:function(){var e=(0,ne.Z)(this.objects,1)[0],t=xH.padding,n=e.getScaledWidth();e.set({left:xH.width/2-n/2,top:t})}},{key:"createGroup",value:function(){var e=this.coords,t=e.top,n=e.left;return new BF.fabric.Group([this.body].concat((0,Ct.Z)(this.objects)),Object.assign({top:t,left:n},KF))}}]),e}(),EH={width:248,expandedWidth:360,borderRadius:6,titleFontSize:GF,titleLineHeight:$F,textFontSize:GF,textLineHeight:$F,padding:12,textOffset:8};var DH=function(){function e(t,n,i,r,o){(0,X.Z)(this,e),this.expanded=!1,this.expandedNodeHeight=0,this.nodeHeight=0,this.canvas=t,this.coords=n,this.treeNode=i,this.opts=r,this.em=o,this.data=on().get(i,["data","data"]),this.shadow=new BF.fabric.Shadow({color:r.colors.nodeShadow,offsetY:1,blur:5}),this.hoverShadow=new BF.fabric.Shadow({color:r.colors.nodeShadow,offsetY:3,blur:8}),this.objects=this.prepareShapeObjects(),this.setShapeObjectsCoords(),this.body=this.prepareNodeBody(),this.group=this.createGroup(),this.initListeners()}return(0,J.Z)(e,[{key:"getShape",value:function(){return this.group}},{key:"getFillColor",value:function(){return this.opts.colors.nodeFill}},{key:"getHoverFillColor",value:function(){return this.opts.colors.nodeHover}},{key:"getShadow",value:function(){return this.shadow}},{key:"getHoverShadow",value:function(){return this.hoverShadow}},{key:"toggleHighlight",value:function(e){this.isExpandable()&&!this.expanded&&this.body.set({fill:e?this.getHoverFillColor():this.getFillColor(),shadow:e?this.getHoverShadow():this.getShadow()}),this.canvas.requestRenderAll()}},{key:"prepareNodeBody",value:function(){var e=this.opts.colors,t=this.objects[this.objects.length-1];return this.nodeHeight=(t.top||0)+t.getScaledHeight()+EH.padding,new BF.fabric.Rect({width:EH.width,height:this.nodeHeight,fill:this.getFillColor(),stroke:null===e||void 0===e?void 0:e.nodeShadow,rx:EH.borderRadius,ry:EH.borderRadius,shadow:this.getShadow(),hoverCursor:this.isExpandable()?"pointer":"default"})}},{key:"prepareShapeObjects",value:function(){var e=pH(this.data.id,this.isExpandable(),this.opts.colors),t=function(e,t,n){return new BF.fabric.Text(e.join("\n"),{fontSize:EH.textFontSize,lineHeight:EH.textLineHeight,fontFamily:qF,fill:n.getCommonColor("text-primary"),hoverCursor:t?"pointer":"default"})}(this.data.operators||[this.data.name||""],this.isExpandable(),this.opts.colors),n=function(e,t){if(0===e.length)return new BF.fabric.Group([],Object.assign({top:0,left:0},KF));var n=new BF.fabric.Text("Tables:",{fontSize:EH.textFontSize,lineHeight:EH.textLineHeight,fontFamily:qF,fill:t.getCommonColor("text-secondary"),hoverCursor:"pointer"}),i=n.getScaledWidth()+2,r=EH.width-2*EH.padding-i,o=new BF.fabric.Textbox(e.join("\n"),{left:i,width:r,fontSize:EH.textFontSize,lineHeight:EH.textLineHeight,fontFamily:qF,fill:t.getCommonColor("text-primary"),splitByGrapheme:!0,hoverCursor:"pointer"});return new BF.fabric.Group([n,o],Object.assign({top:0,left:0},KF))}(this.data.tables||[],this.opts.colors),i=function(e,t){if(!e)return new BF.fabric.Group([],Object.assign({top:0,left:0},KF));var n=new BF.fabric.Text("CTE:",{fontSize:EH.textFontSize,lineHeight:EH.textLineHeight,fontFamily:qF,fill:t.getCommonColor("text-secondary"),hoverCursor:"pointer"}),i=n.getScaledWidth()+2,r=EH.width-2*EH.padding-i,o=new BF.fabric.Textbox(e,{left:i,width:r,fontSize:EH.textFontSize,lineHeight:EH.textLineHeight,fontFamily:qF,fill:t.getCommonColor("text-primary"),splitByGrapheme:!0,hoverCursor:"pointer"});return new BF.fabric.Group([n,o],Object.assign({top:0,left:0},KF))}(this.data.cte||"",this.opts.colors);return[e,t,n,i]}},{key:"setShapeObjectsCoords",value:function(){var e=(0,ne.Z)(this.objects,4),t=e[0],n=e[1],i=e[2],r=e[3],o=EH.padding,a=EH.padding;t.set({left:0,top:4,width:(this.expanded?EH.expandedWidth:EH.width)-4}),n.set({left:a,top:o}),o+=n.getScaledHeight(),i.set({left:a,top:o+(0===i.size()?0:EH.textOffset)}),o+=i.getScaledHeight(),r.set({left:a,top:o+(0===r.size()?0:EH.textOffset)})}},{key:"createGroup",value:function(){var e=this.coords,t=e.top,n=e.left;return new BF.fabric.Group([this.body].concat((0,Ct.Z)(this.objects)),Object.assign({top:t,left:n},KF))}},{key:"initListeners",value:function(){this.initHover(),this.isExpandable()&&this.initExpand()}},{key:"initHover",value:function(){var e=this;this.group.on("mouseover",(function(){e.em.dispatch("node:mouseover",e.treeNode),e.toggleHighlight(!0)})),this.group.on("mouseout",(function(){e.em.dispatch("node:mouseout",e.treeNode),e.toggleHighlight(!1)}))}},{key:"initExpand",value:function(){var e=this;this.group.on("mousedown",(function(t){var n;e.stats&&(null===(n=t.subTargets)||void 0===n?void 0:n.includes(e.stats))||(e.updateDimensions(),e.expanded=!e.expanded,e.em.dispatch("node:resize",e.treeNode))}))}},{key:"updateDimensions",value:function(){var e=this.opts.colors;if(this.expanded){var t=EH.width,n=this.nodeHeight;this.body.set({width:t,height:n,fill:this.getFillColor(),shadow:this.getShadow()}).setCoords(),this.objects[0].set({width:t-4}).setCoords(),this.group.removeWithUpdate(this.stats),this.stats=void 0}else{this.stats=fH(this.canvas,this.data.stats,(this.group.top||0)+this.body.getScaledHeight()+EH.padding,(this.group.left||0)+EH.padding,e),this.expandedNodeHeight=this.nodeHeight+this.stats.getScaledHeight()+2*EH.padding;var i=EH.expandedWidth,r=this.expandedNodeHeight;this.body.set({width:i,height:r,fill:this.getFillColor(),shadow:this.getShadow()}).setCoords(),this.objects[0].set({width:i-4}).setCoords(),this.group.addWithUpdate(this.stats)}}},{key:"isExpandable",value:function(){return Boolean(this.data.stats&&this.data.stats.length>0)}}]),e}();function NH(e,t,n,i,r){return function(e){var t=on().get(e,["data","data"]);return"connection"===(null===t||void 0===t?void 0:t.type)}(n)?new _H(e,t,n,i,r):function(e){var t=on().get(e,["data","data"]);return"result"===(null===t||void 0===t?void 0:t.type)}(n)?new LH(e,t,n,i,r):function(e){var t=on().get(e,["data","data"]);return"query"===(null===t||void 0===t?void 0:t.type)}(n)?new SH(e,t,n,i,r):function(e){var t=on().get(e,["data","data"]);return"materialize"===(null===t||void 0===t?void 0:t.type)}(n)?new bH(e,t,n,i,r):new DH(e,t,n,i,r)}var MH,TH,IH,OH,AH,RH=n(14717),PH=n(81864);!function(e){e[e.None=0]="None",e[e.CommonJS=1]="CommonJS",e[e.AMD=2]="AMD",e[e.UMD=3]="UMD",e[e.System=4]="System",e[e.ES2015=5]="ES2015",e[e.ESNext=99]="ESNext"}(MH||(MH={})),function(e){e[e.None=0]="None",e[e.Preserve=1]="Preserve",e[e.React=2]="React",e[e.ReactNative=3]="ReactNative",e[e.ReactJSX=4]="ReactJSX",e[e.ReactJSXDev=5]="ReactJSXDev"}(TH||(TH={})),function(e){e[e.CarriageReturnLineFeed=0]="CarriageReturnLineFeed",e[e.LineFeed=1]="LineFeed"}(IH||(IH={})),function(e){e[e.ES3=0]="ES3",e[e.ES5=1]="ES5",e[e.ES2015=2]="ES2015",e[e.ES2016=3]="ES2016",e[e.ES2017=4]="ES2017",e[e.ES2018=5]="ES2018",e[e.ES2019=6]="ES2019",e[e.ES2020=7]="ES2020",e[e.ESNext=99]="ESNext",e[e.JSON=100]="JSON",e[e.Latest=99]="Latest"}(OH||(OH={})),function(e){e[e.Classic=1]="Classic",e[e.NodeJs=2]="NodeJs"}(AH||(AH={}));var ZH=function(){function e(e,t,n){this._onDidChange=new PH.Q5,this._onDidExtraLibsChange=new PH.Q5,this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(e),this.setDiagnosticsOptions(t),this.setWorkerOptions(n),this._onDidExtraLibsChangeTimeout=-1}return Object.defineProperty(e.prototype,"onDidChange",{get:function(){return this._onDidChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDidExtraLibsChange",{get:function(){return this._onDidExtraLibsChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"workerOptions",{get:function(){return this._workerOptions},enumerable:!1,configurable:!0}),e.prototype.getExtraLibs=function(){return this._extraLibs},e.prototype.addExtraLib=function(e,t){var n,i=this;if(n="undefined"===typeof t?"ts:extralib-"+Math.random().toString(36).substring(2,15):t,this._extraLibs[n]&&this._extraLibs[n].content===e)return{dispose:function(){}};var r=1;return this._removedExtraLibs[n]&&(r=this._removedExtraLibs[n]+1),this._extraLibs[n]&&(r=this._extraLibs[n].version+1),this._extraLibs[n]={content:e,version:r},this._fireOnDidExtraLibsChangeSoon(),{dispose:function(){var e=i._extraLibs[n];e&&e.version===r&&(delete i._extraLibs[n],i._removedExtraLibs[n]=r,i._fireOnDidExtraLibsChangeSoon())}}},e.prototype.setExtraLibs=function(e){for(var t in this._extraLibs)this._removedExtraLibs[t]=this._extraLibs[t].version;if(this._extraLibs=Object.create(null),e&&e.length>0)for(var n=0,i=e;n<i.length;n++){var r=i[n],o=(t=r.filePath||"ts:extralib-"+Math.random().toString(36).substring(2,15),r.content),a=1;this._removedExtraLibs[t]&&(a=this._removedExtraLibs[t]+1),this._extraLibs[t]={content:o,version:a}}this._fireOnDidExtraLibsChangeSoon()},e.prototype._fireOnDidExtraLibsChangeSoon=function(){var e=this;-1===this._onDidExtraLibsChangeTimeout&&(this._onDidExtraLibsChangeTimeout=setTimeout((function(){e._onDidExtraLibsChangeTimeout=-1,e._onDidExtraLibsChange.fire(void 0)}),0))},e.prototype.getCompilerOptions=function(){return this._compilerOptions},e.prototype.setCompilerOptions=function(e){this._compilerOptions=e||Object.create(null),this._onDidChange.fire(void 0)},e.prototype.getDiagnosticsOptions=function(){return this._diagnosticsOptions},e.prototype.setDiagnosticsOptions=function(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(void 0)},e.prototype.setWorkerOptions=function(e){this._workerOptions=e||Object.create(null),this._onDidChange.fire(void 0)},e.prototype.setMaximumWorkerIdleTime=function(e){},e.prototype.setEagerModelSync=function(e){this._eagerModelSync=e},e.prototype.getEagerModelSync=function(){return this._eagerModelSync},e}(),FH=new ZH({allowNonTsExtensions:!0,target:OH.Latest},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{}),jH=new ZH({allowNonTsExtensions:!0,allowJs:!0,target:OH.Latest},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{});function HH(){return n.e(7548).then(n.bind(n,17548))}PH.Mj.typescript={ModuleKind:MH,JsxEmit:TH,NewLineKind:IH,ScriptTarget:OH,ModuleResolutionKind:AH,typescriptVersion:"4.2.4",typescriptDefaults:FH,javascriptDefaults:jH,getTypeScriptWorker:function(){return HH().then((function(e){return e.getTypeScriptWorker()}))},getJavaScriptWorker:function(){return HH().then((function(e){return e.getJavaScriptWorker()}))}},PH.Mj.onLanguage("typescript",(function(){return HH().then((function(e){return e.setupTypeScript(FH)}))})),PH.Mj.onLanguage("javascript",(function(){return HH().then((function(e){return e.setupJavaScript(jH)}))}));var BH=n(24116),zH=function(){function e(e,t,n){this._onDidChange=new BH.Q5,this._languageId=e,this.setDiagnosticsOptions(t),this.setModeConfiguration(n)}return Object.defineProperty(e.prototype,"onDidChange",{get:function(){return this._onDidChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modeConfiguration",{get:function(){return this._modeConfiguration},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"diagnosticsOptions",{get:function(){return this._diagnosticsOptions},enumerable:!1,configurable:!0}),e.prototype.setDiagnosticsOptions=function(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)},e.prototype.setModeConfiguration=function(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)},e}(),WH={validate:!0,lint:{compatibleVendorPrefixes:"ignore",vendorPrefix:"warning",duplicateProperties:"warning",emptyRules:"warning",importStatement:"ignore",boxModel:"ignore",universalSelector:"ignore",zeroUnits:"ignore",fontFaceProperties:"warning",hexColorLength:"error",argumentsInColorFunction:"error",unknownProperties:"warning",ieHack:"ignore",unknownVendorSpecificProperties:"ignore",propertyIgnoredDueToDisplay:"warning",important:"ignore",float:"ignore",idSelector:"ignore"}},VH={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0},YH=new zH("css",WH,VH),UH=new zH("scss",WH,VH),KH=new zH("less",WH,VH);function qH(){return n.e(6060).then(n.bind(n,16060))}BH.Mj.css={cssDefaults:YH,lessDefaults:KH,scssDefaults:UH},BH.Mj.onLanguage("less",(function(){qH().then((function(e){return e.setupMode(KH)}))})),BH.Mj.onLanguage("scss",(function(){qH().then((function(e){return e.setupMode(UH)}))})),BH.Mj.onLanguage("css",(function(){qH().then((function(e){return e.setupMode(YH)}))}));var GH=n(3570),$H=function(){function e(e,t,n){this._onDidChange=new GH.Q5,this._languageId=e,this.setDiagnosticsOptions(t),this.setModeConfiguration(n)}return Object.defineProperty(e.prototype,"onDidChange",{get:function(){return this._onDidChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modeConfiguration",{get:function(){return this._modeConfiguration},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"diagnosticsOptions",{get:function(){return this._diagnosticsOptions},enumerable:!1,configurable:!0}),e.prototype.setDiagnosticsOptions=function(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)},e.prototype.setModeConfiguration=function(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)},e}(),QH=new $H("json",{validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1,schemaRequest:"warning",schemaValidation:"warning",comments:"error",trailingCommas:"error"},{documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0});GH.Mj.json={jsonDefaults:QH},GH.Mj.register({id:"json",extensions:[".json",".bowerrc",".jshintrc",".jscsrc",".eslintrc",".babelrc",".har"],aliases:["JSON","json"],mimetypes:["application/json"]}),GH.Mj.onLanguage("json",(function(){n.e(4952).then(n.bind(n,64952)).then((function(e){return e.setupMode(QH)}))}));var XH=n(38429),JH=function(){function e(e,t,n){this._onDidChange=new XH.Q5,this._languageId=e,this.setOptions(t),this.setModeConfiguration(n)}return Object.defineProperty(e.prototype,"onDidChange",{get:function(){return this._onDidChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"options",{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modeConfiguration",{get:function(){return this._modeConfiguration},enumerable:!1,configurable:!0}),e.prototype.setOptions=function(e){this._options=e||Object.create(null),this._onDidChange.fire(this)},e.prototype.setModeConfiguration=function(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)},e}(),eB={tabSize:4,insertSpaces:!1,wrapLineLength:120,unformatted:'default": "a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',contentUnformatted:"pre",indentInnerHtml:!1,preserveNewLines:!0,maxPreserveNewLines:null,indentHandlebars:!1,endWithNewline:!1,extraLiners:"head, body, /html",wrapAttributes:"auto"},tB={format:eB,suggest:{html5:!0}},nB={format:eB,suggest:{html5:!0,razor:!0}};function iB(e){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:e===rB,documentFormattingEdits:e===rB,documentRangeFormattingEdits:e===rB}}var rB="html",oB="handlebars",aB="razor",sB=new JH(rB,{format:eB,suggest:{html5:!0,angular1:!0,ionic:!0}},iB(rB)),uB=new JH(oB,tB,iB(oB)),lB=new JH(aB,nB,iB(aB));function cB(){return n.e(254).then(n.bind(n,80254))}XH.Mj.html={htmlDefaults:sB,razorDefaults:lB,handlebarDefaults:uB},XH.Mj.onLanguage(rB,(function(){cB().then((function(e){return e.setupMode(sB)}))})),XH.Mj.onLanguage(oB,(function(){cB().then((function(e){return e.setupMode(uB)}))})),XH.Mj.onLanguage(aB,(function(){cB().then((function(e){return e.setupMode(lB)}))}));var dB=n(37456),hB={},fB={},pB=function(){function e(e){var t=this;this._languageId=e,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((function(e,n){t._lazyLoadPromiseResolve=e,t._lazyLoadPromiseReject=n}))}return e.getOrCreate=function(t){return fB[t]||(fB[t]=new e(t)),fB[t]},e.prototype.whenLoaded=function(){return this._lazyLoadPromise},e.prototype.load=function(){var e=this;return this._loadingTriggered||(this._loadingTriggered=!0,hB[this._languageId].loader().then((function(t){return e._lazyLoadPromiseResolve(t)}),(function(t){return e._lazyLoadPromiseReject(t)}))),this._lazyLoadPromise},e}();function gB(e){var t=e.id;hB[t]=e,dB.Mj.register(e);var n=pB.getOrCreate(t);dB.Mj.setMonarchTokensProvider(t,n.whenLoaded().then((function(e){return e.language}))),dB.Mj.onLanguage(t,(function(){n.load().then((function(e){dB.Mj.setLanguageConfiguration(t,e.conf)}))}))}gB({id:"abap",extensions:[".abap"],aliases:["abap","ABAP"],loader:function(){return n.e(7953).then(n.bind(n,27953))}}),gB({id:"apex",extensions:[".cls"],aliases:["Apex","apex"],mimetypes:["text/x-apex-source","text/x-apex"],loader:function(){return n.e(1898).then(n.bind(n,21898))}}),gB({id:"azcli",extensions:[".azcli"],aliases:["Azure CLI","azcli"],loader:function(){return n.e(805).then(n.bind(n,50805))}}),gB({id:"bat",extensions:[".bat",".cmd"],aliases:["Batch","bat"],loader:function(){return n.e(371).then(n.bind(n,20371))}}),gB({id:"bicep",extensions:[".bicep"],aliases:["Bicep"],loader:function(){return n.e(9163).then(n.bind(n,89163))}}),gB({id:"cameligo",extensions:[".mligo"],aliases:["Cameligo"],loader:function(){return n.e(5784).then(n.bind(n,45784))}}),gB({id:"clojure",extensions:[".clj",".cljs",".cljc",".edn"],aliases:["clojure","Clojure"],loader:function(){return n.e(3001).then(n.bind(n,23001))}}),gB({id:"coffeescript",extensions:[".coffee"],aliases:["CoffeeScript","coffeescript","coffee"],mimetypes:["text/x-coffeescript","text/coffeescript"],loader:function(){return n.e(1602).then(n.bind(n,61602))}}),gB({id:"c",extensions:[".c",".h"],aliases:["C","c"],loader:function(){return n.e(6559).then(n.bind(n,26559))}}),gB({id:"cpp",extensions:[".cpp",".cc",".cxx",".hpp",".hh",".hxx"],aliases:["C++","Cpp","cpp"],loader:function(){return n.e(6559).then(n.bind(n,26559))}}),gB({id:"csharp",extensions:[".cs",".csx",".cake"],aliases:["C#","csharp"],loader:function(){return n.e(6266).then(n.bind(n,66266))}}),gB({id:"csp",extensions:[],aliases:["CSP","csp"],loader:function(){return n.e(7664).then(n.bind(n,27664))}}),gB({id:"css",extensions:[".css"],aliases:["CSS","css"],mimetypes:["text/css"],loader:function(){return n.e(245).then(n.bind(n,90245))}}),gB({id:"dart",extensions:[".dart"],aliases:["Dart","dart"],mimetypes:["text/x-dart-source","text/x-dart"],loader:function(){return n.e(5517).then(n.bind(n,85517))}}),gB({id:"dockerfile",extensions:[".dockerfile"],filenames:["Dockerfile"],aliases:["Dockerfile"],loader:function(){return n.e(3258).then(n.bind(n,43258))}}),gB({id:"ecl",extensions:[".ecl"],aliases:["ECL","Ecl","ecl"],loader:function(){return n.e(5444).then(n.bind(n,95444))}}),gB({id:"elixir",extensions:[".ex",".exs"],aliases:["Elixir","elixir","ex"],loader:function(){return n.e(7168).then(n.bind(n,77168))}}),gB({id:"fsharp",extensions:[".fs",".fsi",".ml",".mli",".fsx",".fsscript"],aliases:["F#","FSharp","fsharp"],loader:function(){return n.e(7661).then(n.bind(n,77661))}}),gB({id:"go",extensions:[".go"],aliases:["Go"],loader:function(){return n.e(2799).then(n.bind(n,12799))}}),gB({id:"graphql",extensions:[".graphql",".gql"],aliases:["GraphQL","graphql","gql"],mimetypes:["application/graphql"],loader:function(){return n.e(5748).then(n.bind(n,95748))}}),gB({id:"handlebars",extensions:[".handlebars",".hbs"],aliases:["Handlebars","handlebars","hbs"],mimetypes:["text/x-handlebars-template"],loader:function(){return n.e(8794).then(n.bind(n,58794))}}),gB({id:"hcl",extensions:[".tf",".tfvars",".hcl"],aliases:["Terraform","tf","HCL","hcl"],loader:function(){return n.e(6892).then(n.bind(n,66892))}}),gB({id:"html",extensions:[".html",".htm",".shtml",".xhtml",".mdoc",".jsp",".asp",".aspx",".jshtm"],aliases:["HTML","htm","html","xhtml"],mimetypes:["text/html","text/x-jshtm","text/template","text/ng-template"],loader:function(){return n.e(2406).then(n.bind(n,32406))}}),gB({id:"ini",extensions:[".ini",".properties",".gitconfig"],filenames:["config",".gitattributes",".gitconfig",".editorconfig"],aliases:["Ini","ini"],loader:function(){return n.e(3883).then(n.bind(n,33883))}}),gB({id:"java",extensions:[".java",".jav"],aliases:["Java","java"],mimetypes:["text/x-java-source","text/x-java"],loader:function(){return n.e(8206).then(n.bind(n,98206))}}),gB({id:"javascript",extensions:[".js",".es6",".jsx",".mjs"],firstLine:"^#!.*\\bnode",filenames:["jakefile"],aliases:["JavaScript","javascript","js"],mimetypes:["text/javascript"],loader:function(){return n.e(6135).then(n.bind(n,6135))}}),gB({id:"julia",extensions:[".jl"],aliases:["julia","Julia"],loader:function(){return n.e(3254).then(n.bind(n,93254))}}),gB({id:"kotlin",extensions:[".kt"],aliases:["Kotlin","kotlin"],mimetypes:["text/x-kotlin-source","text/x-kotlin"],loader:function(){return n.e(2205).then(n.bind(n,62205))}}),gB({id:"less",extensions:[".less"],aliases:["Less","less"],mimetypes:["text/x-less","text/less"],loader:function(){return n.e(2291).then(n.bind(n,22291))}}),gB({id:"lexon",extensions:[".lex"],aliases:["Lexon"],loader:function(){return n.e(7478).then(n.bind(n,37478))}}),gB({id:"lua",extensions:[".lua"],aliases:["Lua","lua"],loader:function(){return n.e(4731).then(n.bind(n,84731))}}),gB({id:"liquid",extensions:[".liquid",".liquid.html",".liquid.css"],loader:function(){return n.e(983).then(n.bind(n,80983))}}),gB({id:"m3",extensions:[".m3",".i3",".mg",".ig"],aliases:["Modula-3","Modula3","modula3","m3"],loader:function(){return n.e(8335).then(n.bind(n,28335))}}),gB({id:"markdown",extensions:[".md",".markdown",".mdown",".mkdn",".mkd",".mdwn",".mdtxt",".mdtext"],aliases:["Markdown","markdown"],loader:function(){return n.e(8322).then(n.bind(n,78322))}}),gB({id:"mips",extensions:[".s"],aliases:["MIPS","MIPS-V"],mimetypes:["text/x-mips","text/mips","text/plaintext"],loader:function(){return n.e(4546).then(n.bind(n,34546))}}),gB({id:"msdax",extensions:[".dax",".msdax"],aliases:["DAX","MSDAX"],loader:function(){return n.e(1234).then(n.bind(n,31234))}}),gB({id:"mysql",extensions:[],aliases:["MySQL","mysql"],loader:function(){return n.e(8590).then(n.bind(n,18590))}}),gB({id:"objective-c",extensions:[".m"],aliases:["Objective-C"],loader:function(){return n.e(5695).then(n.bind(n,25695))}}),gB({id:"pascal",extensions:[".pas",".p",".pp"],aliases:["Pascal","pas"],mimetypes:["text/x-pascal-source","text/x-pascal"],loader:function(){return n.e(8558).then(n.bind(n,78558))}}),gB({id:"pascaligo",extensions:[".ligo"],aliases:["Pascaligo","ligo"],loader:function(){return n.e(8005).then(n.bind(n,58005))}}),gB({id:"perl",extensions:[".pl"],aliases:["Perl","pl"],loader:function(){return n.e(2119).then(n.bind(n,72119))}}),gB({id:"pgsql",extensions:[],aliases:["PostgreSQL","postgres","pg","postgre"],loader:function(){return n.e(8520).then(n.bind(n,18520))}}),gB({id:"php",extensions:[".php",".php4",".php5",".phtml",".ctp"],aliases:["PHP","php"],mimetypes:["application/x-php"],loader:function(){return n.e(5215).then(n.bind(n,15215))}}),gB({id:"postiats",extensions:[".dats",".sats",".hats"],aliases:["ATS","ATS/Postiats"],loader:function(){return n.e(5885).then(n.bind(n,65885))}}),gB({id:"powerquery",extensions:[".pq",".pqm"],aliases:["PQ","M","Power Query","Power Query M"],loader:function(){return n.e(9011).then(n.bind(n,69011))}}),gB({id:"powershell",extensions:[".ps1",".psm1",".psd1"],aliases:["PowerShell","powershell","ps","ps1"],loader:function(){return n.e(7768).then(n.bind(n,37768))}}),gB({id:"pug",extensions:[".jade",".pug"],aliases:["Pug","Jade","jade"],loader:function(){return n.e(1115).then(n.bind(n,1115))}}),gB({id:"python",extensions:[".py",".rpy",".pyw",".cpy",".gyp",".gypi"],aliases:["Python","py"],firstLine:"^#!/.*\\bpython[0-9.-]*\\b",loader:function(){return n.e(4663).then(n.bind(n,14663))}}),gB({id:"r",extensions:[".r",".rhistory",".rmd",".rprofile",".rt"],aliases:["R","r"],loader:function(){return n.e(2081).then(n.bind(n,62081))}}),gB({id:"razor",extensions:[".cshtml"],aliases:["Razor","razor"],mimetypes:["text/x-cshtml"],loader:function(){return n.e(3191).then(n.bind(n,13191))}}),gB({id:"redis",extensions:[".redis"],aliases:["redis"],loader:function(){return n.e(2507).then(n.bind(n,2507))}}),gB({id:"redshift",extensions:[],aliases:["Redshift","redshift"],loader:function(){return n.e(5646).then(n.bind(n,95646))}}),gB({id:"restructuredtext",extensions:[".rst"],aliases:["reStructuredText","restructuredtext"],loader:function(){return n.e(842).then(n.bind(n,60842))}}),gB({id:"ruby",extensions:[".rb",".rbx",".rjs",".gemspec",".pp"],filenames:["rakefile","Gemfile"],aliases:["Ruby","rb"],loader:function(){return n.e(569).then(n.bind(n,40569))}}),gB({id:"rust",extensions:[".rs",".rlib"],aliases:["Rust","rust"],loader:function(){return n.e(9292).then(n.bind(n,89292))}}),gB({id:"sb",extensions:[".sb"],aliases:["Small Basic","sb"],loader:function(){return n.e(939).then(n.bind(n,50325))}}),gB({id:"scala",extensions:[".scala",".sc",".sbt"],aliases:["Scala","scala","SBT","Sbt","sbt","Dotty","dotty"],mimetypes:["text/x-scala-source","text/x-scala","text/x-sbt","text/x-dotty"],loader:function(){return n.e(9803).then(n.bind(n,79803))}}),gB({id:"scheme",extensions:[".scm",".ss",".sch",".rkt"],aliases:["scheme","Scheme"],loader:function(){return n.e(9005).then(n.bind(n,29005))}}),gB({id:"scss",extensions:[".scss"],aliases:["Sass","sass","scss"],mimetypes:["text/x-scss","text/scss"],loader:function(){return n.e(6708).then(n.bind(n,76708))}}),gB({id:"shell",extensions:[".sh",".bash"],aliases:["Shell","sh"],loader:function(){return n.e(1474).then(n.bind(n,51474))}}),gB({id:"sol",extensions:[".sol"],aliases:["sol","solidity","Solidity"],loader:function(){return n.e(2174).then(n.bind(n,82174))}}),gB({id:"aes",extensions:[".aes"],aliases:["aes","sophia","Sophia"],loader:function(){return n.e(248).then(n.bind(n,248))}}),gB({id:"sql",extensions:[".sql"],aliases:["SQL"],loader:function(){return n.e(5012).then(n.bind(n,5012))}}),gB({id:"st",extensions:[".st",".iecst",".iecplc",".lc3lib"],aliases:["StructuredText","scl","stl"],loader:function(){return n.e(5210).then(n.bind(n,75210))}}),gB({id:"swift",aliases:["Swift","swift"],extensions:[".swift"],mimetypes:["text/swift"],loader:function(){return n.e(4712).then(n.bind(n,94712))}}),gB({id:"systemverilog",extensions:[".sv",".svh"],aliases:["SV","sv","SystemVerilog","systemverilog"],loader:function(){return n.e(1522).then(n.bind(n,81522))}}),gB({id:"verilog",extensions:[".v",".vh"],aliases:["V","v","Verilog","verilog"],loader:function(){return n.e(1522).then(n.bind(n,81522))}}),gB({id:"tcl",extensions:[".tcl"],aliases:["tcl","Tcl","tcltk","TclTk","tcl/tk","Tcl/Tk"],loader:function(){return n.e(3451).then(n.bind(n,73451))}}),gB({id:"twig",extensions:[".twig"],aliases:["Twig","twig"],mimetypes:["text/x-twig"],loader:function(){return n.e(2862).then(n.bind(n,12862))}}),gB({id:"typescript",extensions:[".ts",".tsx"],aliases:["TypeScript","ts","typescript"],mimetypes:["text/typescript"],loader:function(){return n.e(698).then(n.bind(n,90698))}}),gB({id:"vb",extensions:[".vb"],aliases:["Visual Basic","vb"],loader:function(){return n.e(758).then(n.bind(n,30758))}}),gB({id:"xml",extensions:[".xml",".dtd",".ascx",".csproj",".config",".wxi",".wxl",".wxs",".xaml",".svg",".svgz",".opf",".xsl"],firstLine:"(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",aliases:["XML","xml"],mimetypes:["text/xml","application/xml","application/xaml+xml","application/xml-dtd"],loader:function(){return n.e(2056).then(n.bind(n,32056))}}),gB({id:"yaml",extensions:[".yaml",".yml"],aliases:["YAML","yaml","YML","yml"],mimetypes:["application/x-yaml","text/x-yaml"],loader:function(){return n.e(3771).then(n.bind(n,53771))}});var vB=n(8518),mB=n(95079),_B=(n(20224),n(59180),n(33399)),yB=n(56345),bB=n(21204),wB=n(74964),CB=n(38792),kB=n(18948),SB=n(49396),xB=n(10939),LB=n(8729),EB=function(){function e(){var t,n,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if((0,X.Z)(this,e),this.value=i,"string"!==typeof this.value)throw(0,LB.b1)("value");"boolean"===typeof r?(this.isTrusted=r,this.supportThemeIcons=!1):(this.isTrusted=null!==(t=r.isTrusted)&&void 0!==t?t:void 0,this.supportThemeIcons=null!==(n=r.supportThemeIcons)&&void 0!==n&&n)}return(0,J.Z)(e,[{key:"appendText",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.value+=(t=this.supportThemeIcons?(0,xB.Qo)(e):e,t.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")).replace(/([ \t]+)/g,(function(e,t){return" ".repeat(t.length)})).replace(/^>/gm,"\\>").replace(/\n/g,1===n?"\\\n":"\n\n"),this}},{key:"appendMarkdown",value:function(e){return this.value+=e,this}},{key:"appendCodeblock",value:function(e,t){return this.value+="\n```",this.value+=e,this.value+="\n",this.value+=t,this.value+="\n```\n",this}}]),e}();function DB(e){return NB(e)?!e.value:!Array.isArray(e)||e.every(DB)}function NB(e){return e instanceof EB||!(!e||"object"!==typeof e)&&("string"===typeof e.value&&("boolean"===typeof e.isTrusted||void 0===e.isTrusted)&&("boolean"===typeof e.supportThemeIcons||void 0===e.supportThemeIcons))}function MB(e,t){return e===t||!(!e||!t)&&(e.value===t.value&&e.isTrusted===t.isTrusted&&e.supportThemeIcons===t.supportThemeIcons)}function TB(e){return e?e.replace(/\\([\\`*_{}[\]()#+\-.!])/g,"$1"):e}var IB=n(52180),OB=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},AB=function(e,t){return function(n,i){t(n,i,e)}},RB=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},PB=new kB.uy("selectionAnchorSet",!1),ZB=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this.editor=t,this.selectionAnchorSetContextKey=PB.bindTo(n),this.modelChangeListener=t.onDidChangeModel((function(){return i.selectionAnchorSetContextKey.reset()}))}return(0,J.Z)(e,[{key:"setSelectionAnchor",value:function(){if(this.editor.hasModel()){var e=this.editor.getPosition(),t=this.decorationId?[this.decorationId]:[],n=this.editor.deltaDecorations(t,[{range:wB.Y.fromPositions(e,e),options:{stickiness:1,hoverMessage:(new EB).appendText((0,yB.N)("selectionAnchor","Selection Anchor")),className:"selection-anchor"}}]);this.decorationId=n[0],this.selectionAnchorSetContextKey.set(!!this.decorationId),(0,IB.Z9)((0,yB.N)("anchorSet","Anchor set at {0}:{1}",e.lineNumber,e.column))}}},{key:"goToSelectionAnchor",value:function(){if(this.editor.hasModel()&&this.decorationId){var e=this.editor.getModel().getDecorationRange(this.decorationId);e&&this.editor.setPosition(e.getStartPosition())}}},{key:"selectFromAnchorToCursor",value:function(){if(this.editor.hasModel()&&this.decorationId){var e=this.editor.getModel().getDecorationRange(this.decorationId);if(e){var t=this.editor.getPosition();this.editor.setSelection(wB.Y.fromPositions(e.getStartPosition(),t)),this.cancelSelectionAnchor()}}}},{key:"cancelSelectionAnchor",value:function(){this.decorationId&&(this.editor.deltaDecorations([this.decorationId],[]),this.decorationId=void 0,this.selectionAnchorSetContextKey.set(!1))}},{key:"dispose",value:function(){this.cancelSelectionAnchor(),this.modelChangeListener.dispose()}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();ZB.ID="editor.contrib.selectionAnchorController",ZB=OB([AB(1,kB.i6)],ZB);var FB=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.setSelectionAnchor",label:(0,yB.N)("setSelectionAnchor","Set Selection Anchor"),alias:"Set Selection Anchor",precondition:void 0,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2080),weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return RB(this,void 0,void 0,fn().mark((function e(){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:ZB.get(t).setSelectionAnchor();case 2:case"end":return e.stop()}}),e)})))}}]),n}(_B.R6),jB=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.goToSelectionAnchor",label:(0,yB.N)("goToSelectionAnchor","Go to Selection Anchor"),alias:"Go to Selection Anchor",precondition:PB})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return RB(this,void 0,void 0,fn().mark((function e(){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:ZB.get(t).goToSelectionAnchor();case 2:case"end":return e.stop()}}),e)})))}}]),n}(_B.R6),HB=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.selectFromAnchorToCursor",label:(0,yB.N)("selectFromAnchorToCursor","Select from Anchor to Cursor"),alias:"Select from Anchor to Cursor",precondition:PB,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2089),weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return RB(this,void 0,void 0,fn().mark((function e(){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:ZB.get(t).selectFromAnchorToCursor();case 2:case"end":return e.stop()}}),e)})))}}]),n}(_B.R6),BB=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.cancelSelectionAnchor",label:(0,yB.N)("cancelSelectionAnchor","Cancel Selection Anchor"),alias:"Cancel Selection Anchor",precondition:PB,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:9,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return RB(this,void 0,void 0,fn().mark((function e(){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:ZB.get(t).cancelSelectionAnchor();case 2:case"end":return e.stop()}}),e)})))}}]),n}(_B.R6);(0,_B._K)(ZB.ID,ZB),(0,_B.Qr)(FB),(0,_B.Qr)(jB),(0,_B.Qr)(HB),(0,_B.Qr)(BB);var zB=n(27997),WB=n(81626),VB=n(67297),YB=n(67033),UB=n(46502),KB=n(28893),qB=n(80449),GB=n(92992),$B=n(70182),QB=n(31585),XB=(0,GB.P6)("editorOverviewRuler.bracketMatchForeground",{dark:"#A0A0A0",light:"#A0A0A0",hc:"#A0A0A0"},yB.N("overviewRulerBracketMatchForeground","Overview ruler marker color for matching brackets.")),JB=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.jumpToBracket",label:yB.N("smartSelect.jumpBracket","Go to Bracket"),alias:"Go to Bracket",precondition:void 0,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:3160,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=nz.get(t);n&&n.jumpToBracket()}}]),n}(_B.R6),ez=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.selectToBracket",label:yB.N("smartSelect.selectToBracket","Select to Bracket"),alias:"Select to Bracket",precondition:void 0,description:{description:"Select to Bracket",args:[{name:"args",schema:{type:"object",properties:{selectBrackets:{type:"boolean",default:!0}}}}]}})}return(0,J.Z)(n,[{key:"run",value:function(e,t,n){var i=nz.get(t);if(i){var r=!0;n&&!1===n.selectBrackets&&(r=!1),i.selectToBracket(r)}}}]),n}(_B.R6),tz=(0,J.Z)((function e(t,n,i){(0,X.Z)(this,e),this.position=t,this.brackets=n,this.options=i})),nz=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this))._editor=e,i._lastBracketsData=[],i._lastVersionId=0,i._decorations=[],i._updateBracketsSoon=i._register(new zB.pY((function(){return i._updateBrackets()}),50)),i._matchBrackets=i._editor.getOption(60),i._updateBracketsSoon.schedule(),i._register(e.onDidChangeCursorPosition((function(e){"never"!==i._matchBrackets&&i._updateBracketsSoon.schedule()}))),i._register(e.onDidChangeModelContent((function(e){i._updateBracketsSoon.schedule()}))),i._register(e.onDidChangeModel((function(e){i._lastBracketsData=[],i._decorations=[],i._updateBracketsSoon.schedule()}))),i._register(e.onDidChangeModelLanguageConfiguration((function(e){i._lastBracketsData=[],i._updateBracketsSoon.schedule()}))),i._register(e.onDidChangeConfiguration((function(e){e.hasChanged(60)&&(i._matchBrackets=i._editor.getOption(60),i._decorations=i._editor.deltaDecorations(i._decorations,[]),i._lastBracketsData=[],i._lastVersionId=0,i._updateBracketsSoon.schedule())}))),i}return(0,J.Z)(n,[{key:"jumpToBracket",value:function(){if(this._editor.hasModel()){var e=this._editor.getModel(),t=this._editor.getSelections().map((function(t){var n=t.getStartPosition(),i=e.matchBracket(n),r=null;if(i)i[0].containsPosition(n)?r=i[1].getStartPosition():i[1].containsPosition(n)&&(r=i[0].getStartPosition());else{var o=e.findEnclosingBrackets(n);if(o)r=o[0].getStartPosition();else{var a=e.findNextBracket(n);a&&a.range&&(r=a.range.getStartPosition())}}return r?new wB.Y(r.lineNumber,r.column,r.lineNumber,r.column):new wB.Y(n.lineNumber,n.column,n.lineNumber,n.column)}));this._editor.setSelections(t),this._editor.revealRange(t[0])}}},{key:"selectToBracket",value:function(e){if(this._editor.hasModel()){var t=this._editor.getModel(),n=[];this._editor.getSelections().forEach((function(i){var r=i.getStartPosition(),o=t.matchBracket(r);if(!o&&!(o=t.findEnclosingBrackets(r))){var a=t.findNextBracket(r);a&&a.range&&(o=t.matchBracket(a.range.getStartPosition()))}var s=null,u=null;if(o){o.sort(YB.e.compareRangesUsingStarts);var l=o,c=(0,ne.Z)(l,2),d=c[0],h=c[1];s=e?d.getStartPosition():d.getEndPosition(),u=e?h.getEndPosition():h.getStartPosition()}s&&u&&n.push(new wB.Y(s.lineNumber,s.column,u.lineNumber,u.column))})),n.length>0&&(this._editor.setSelections(n),this._editor.revealRange(n[0]))}}},{key:"_updateBrackets",value:function(){if("never"!==this._matchBrackets){this._recomputeBrackets();var e,t=[],n=0,i=(0,Na.Z)(this._lastBracketsData);try{for(i.s();!(e=i.n()).done;){var r=e.value,o=r.brackets;o&&(t[n++]={range:o[0],options:r.options},t[n++]={range:o[1],options:r.options})}}catch(a){i.e(a)}finally{i.f()}this._decorations=this._editor.deltaDecorations(this._decorations,t)}}},{key:"_recomputeBrackets",value:function(){if(!this._editor.hasModel())return this._lastBracketsData=[],void(this._lastVersionId=0);var e=this._editor.getSelections();if(e.length>100)return this._lastBracketsData=[],void(this._lastVersionId=0);var t=this._editor.getModel(),i=t.getVersionId(),r=[];this._lastVersionId===i&&(r=this._lastBracketsData);for(var o=[],a=0,s=0,u=e.length;s<u;s++){var l=e[s];l.isEmpty()&&(o[a++]=l.getStartPosition())}o.length>1&&o.sort(VB.L.compare);for(var c=[],d=0,h=0,f=r.length,p=0,g=o.length;p<g;p++){for(var v=o[p];h<f&&r[h].position.isBefore(v);)h++;if(h<f&&r[h].position.equals(v))c[d++]=r[h];else{var m=t.matchBracket(v),_=n._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;m||"always"!==this._matchBrackets||(m=t.findEnclosingBrackets(v,20),_=n._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER),c[d++]=new tz(v,m,_)}}this._lastBracketsData=c,this._lastVersionId=i}}],[{key:"get",value:function(e){return e.getContribution(n.ID)}}]),n}(WB.JT);nz.ID="editor.contrib.bracketMatchingController",nz._DECORATION_OPTIONS_WITH_OVERVIEW_RULER=KB.qx.register({stickiness:1,className:"bracket-match",overviewRuler:{color:(0,$B.EN)(XB),position:UB.sh.Center}}),nz._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER=KB.qx.register({stickiness:1,className:"bracket-match"}),(0,_B._K)(nz.ID,nz),(0,_B.Qr)(ez),(0,_B.Qr)(JB),(0,$B.Ic)((function(e,t){var n=e.getColor(qB.TC);n&&t.addRule(".monaco-editor .bracket-match { background-color: ".concat(n,"; }"));var i=e.getColor(qB.Dl);i&&t.addRule(".monaco-editor .bracket-match { border: 1px solid ".concat(i,"; }"))})),QB.BH.appendMenuItem(QB.eH.MenubarGoMenu,{group:"5_infile_nav",command:{id:"editor.action.jumpToBracket",title:yB.N({key:"miGoToBracket",comment:["&& denotes a mnemonic"]},"Go to &&Bracket")},order:2});var iz=function(){function e(t,n){(0,X.Z)(this,e),this._selection=t,this._isMovingLeft=n}return(0,J.Z)(e,[{key:"getEditOperations",value:function(e,t){if(this._selection.startLineNumber===this._selection.endLineNumber&&!this._selection.isEmpty()){var n=this._selection.startLineNumber,i=this._selection.startColumn,r=this._selection.endColumn;if((!this._isMovingLeft||1!==i)&&(this._isMovingLeft||r!==e.getLineMaxColumn(n)))if(this._isMovingLeft){var o=new YB.e(n,i-1,n,i),a=e.getValueInRange(o);t.addEditOperation(o,null),t.addEditOperation(new YB.e(n,r,n,r),a)}else{var s=new YB.e(n,r,n,r+1),u=e.getValueInRange(s);t.addEditOperation(s,null),t.addEditOperation(new YB.e(n,i,n,i),u)}}}},{key:"computeCursorState",value:function(e,t){return this._isMovingLeft?new wB.Y(this._selection.startLineNumber,this._selection.startColumn-1,this._selection.endLineNumber,this._selection.endColumn-1):new wB.Y(this._selection.startLineNumber,this._selection.startColumn+1,this._selection.endLineNumber,this._selection.endColumn+1)}}]),e}(),rz=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,i)).left=e,r}return(0,J.Z)(n,[{key:"run",value:function(e,t){if(t.hasModel()){var n,i=[],r=t.getSelections(),o=(0,Na.Z)(r);try{for(o.s();!(n=o.n()).done;){var a=n.value;i.push(new iz(a,this.left))}}catch(s){o.e(s)}finally{o.f()}t.pushUndoStop(),t.executeCommands(this.id,i),t.pushUndoStop()}}}]),n}(_B.R6),oz=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!0,{id:"editor.action.moveCarretLeftAction",label:yB.N("caret.moveLeft","Move Selected Text Left"),alias:"Move Selected Text Left",precondition:bB.u.writable})}return(0,J.Z)(n)}(rz),az=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!1,{id:"editor.action.moveCarretRightAction",label:yB.N("caret.moveRight","Move Selected Text Right"),alias:"Move Selected Text Right",precondition:bB.u.writable})}return(0,J.Z)(n)}(rz);(0,_B.Qr)(oz),(0,_B.Qr)(az);var sz=n(97033),uz=n(15432),lz=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.transposeLetters",label:yB.N("transposeLetters.label","Transpose Letters"),alias:"Transpose Letters",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.textInputFocus,primary:0,mac:{primary:306},weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){if(t.hasModel()){var n,i=t.getModel(),r=[],o=t.getSelections(),a=(0,Na.Z)(o);try{for(a.s();!(n=a.n()).done;){var s=n.value;if(s.isEmpty()){var u=s.startLineNumber,l=s.startColumn,c=i.getLineMaxColumn(u);if(1!==u||1!==l&&(2!==l||2!==c)){var d=l===c?s.getPosition():uz.o.rightPosition(i,s.getPosition().lineNumber,s.getPosition().column),h=uz.o.leftPosition(i,d.lineNumber,d.column),f=uz.o.leftPosition(i,h.lineNumber,h.column),p=i.getValueInRange(YB.e.fromPositions(f,h)),g=i.getValueInRange(YB.e.fromPositions(h,d)),v=YB.e.fromPositions(f,d);r.push(new sz.T4(v,g+p))}}}}catch(m){a.e(m)}finally{a.f()}r.length>0&&(t.pushUndoStop(),t.executeCommands(this.id,r),t.pushUndoStop())}}}]),n}(_B.R6);(0,_B.Qr)(lz);var cz=n(84539),dz=n(30487),hz=n(83106),fz=n(8295),pz=n(38794),gz=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},vz="9_cutcopypaste",mz=dz.tY||document.queryCommandSupported("cut"),_z=dz.tY||document.queryCommandSupported("copy"),yz="undefined"!==typeof navigator.clipboard&&!cz.vU||document.queryCommandSupported("paste");function bz(e){return e.register(),e}var wz=mz?bz(new _B.AJ({id:"editor.action.clipboardCutAction",precondition:void 0,kbOpts:dz.tY?{primary:2102,win:{primary:2102,secondary:[1044]},weight:100}:void 0,menuOpts:[{menuId:QB.eH.MenubarEditMenu,group:"2_ccp",title:yB.N({key:"miCut",comment:["&& denotes a mnemonic"]},"Cu&&t"),order:1},{menuId:QB.eH.EditorContext,group:vz,title:yB.N("actions.clipboard.cutLabel","Cut"),when:bB.u.writable,order:1},{menuId:QB.eH.CommandPalette,group:"",title:yB.N("actions.clipboard.cutLabel","Cut"),order:1}]})):void 0,Cz=_z?bz(new _B.AJ({id:"editor.action.clipboardCopyAction",precondition:void 0,kbOpts:dz.tY?{primary:2081,win:{primary:2081,secondary:[2067]},weight:100}:void 0,menuOpts:[{menuId:QB.eH.MenubarEditMenu,group:"2_ccp",title:yB.N({key:"miCopy",comment:["&& denotes a mnemonic"]},"&&Copy"),order:2},{menuId:QB.eH.EditorContext,group:vz,title:yB.N("actions.clipboard.copyLabel","Copy"),order:2},{menuId:QB.eH.CommandPalette,group:"",title:yB.N("actions.clipboard.copyLabel","Copy"),order:1}]})):void 0;QB.BH.appendMenuItem(QB.eH.MenubarEditMenu,{submenu:QB.eH.MenubarCopy,title:{value:yB.N("copy as","Copy As"),original:"Copy As"},group:"2_ccp",order:3}),QB.BH.appendMenuItem(QB.eH.EditorContext,{submenu:QB.eH.EditorContextCopy,title:{value:yB.N("copy as","Copy As"),original:"Copy As"},group:vz,order:3});var kz=yz?bz(new _B.AJ({id:"editor.action.clipboardPasteAction",precondition:void 0,kbOpts:dz.tY?{primary:2100,win:{primary:2100,secondary:[1043]},linux:{primary:2100,secondary:[1043]},weight:100}:void 0,menuOpts:[{menuId:QB.eH.MenubarEditMenu,group:"2_ccp",title:yB.N({key:"miPaste",comment:["&& denotes a mnemonic"]},"&&Paste"),order:4},{menuId:QB.eH.EditorContext,group:vz,title:yB.N("actions.clipboard.pasteLabel","Paste"),when:bB.u.writable,order:4},{menuId:QB.eH.CommandPalette,group:"",title:yB.N("actions.clipboard.pasteLabel","Paste"),order:1}]})):void 0,Sz=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.clipboardCopyWithSyntaxHighlightingAction",label:yB.N("actions.clipboard.copyWithSyntaxHighlightingLabel","Copy With Syntax Highlighting"),alias:"Copy With Syntax Highlighting",precondition:void 0,kbOpts:{kbExpr:bB.u.textInputFocus,primary:0,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){t.hasModel()&&(!t.getOption(30)&&t.getSelection().isEmpty()||(hz.RA.forceCopyWithSyntaxHighlighting=!0,t.focus(),document.execCommand("copy"),hz.RA.forceCopyWithSyntaxHighlighting=!1))}}]),n}(_B.R6);function xz(e,t){e&&(e.addImplementation(1e4,"code-editor",(function(e,n){var i=e.get(fz.$).getFocusedCodeEditor();if(i&&i.hasTextFocus()){var r=i.getOption(30),o=i.getSelection();return o&&o.isEmpty()&&!r||document.execCommand(t),!0}return!1})),e.addImplementation(0,"generic-dom",(function(e,n){return document.execCommand(t),!0})))}xz(wz,"cut"),xz(Cz,"copy"),kz&&(kz.addImplementation(1e4,"code-editor",(function(e,t){var n=e.get(fz.$),i=e.get(pz.p),r=n.getFocusedCodeEditor();return!(!r||!r.hasTextFocus())&&(!(!document.execCommand("paste")&&dz.$L)||(gz(void 0,void 0,void 0,fn().mark((function e(){var t,n,o,a,s;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.readText();case 2:""!==(t=e.sent)&&(n=hz.Nl.INSTANCE.get(t),o=!1,a=null,s=null,n&&(o=r.getOption(30)&&!!n.isFromEmptySelection,a="undefined"!==typeof n.multicursorText?n.multicursorText:null,s=n.mode),r.trigger("keyboard","paste",{text:t,pasteOnNewLine:o,multicursorText:a,mode:s}));case 4:case"end":return e.stop()}}),e)}))),!0))})),kz.addImplementation(0,"generic-dom",(function(e,t){return document.execCommand("paste"),!0}))),_z&&(0,_B.Qr)(Sz);var Lz=n(66526),Ez=function(){function e(t){(0,X.Z)(this,e),this.executor=t,this._didRun=!1}return(0,J.Z)(e,[{key:"getValue",value:function(){if(!this._didRun)try{this._value=this.executor()}catch(e){this._error=e}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}},{key:"rawValue",get:function(){return this._value}}]),e}(),Dz=n(51747),Nz=n(49803),Mz=n(67775),Tz=n(47908),Iz=n(99404),Oz=n(49076),Az=function(){function e(t){(0,X.Z)(this,e),this.value=t}return(0,J.Z)(e,[{key:"equals",value:function(e){return this.value===e.value}},{key:"contains",value:function(t){return this.equals(t)||""===this.value||t.value.startsWith(this.value+e.sep)}},{key:"intersects",value:function(e){return this.contains(e)||e.contains(this)}},{key:"append",value:function(t){return new e(this.value+e.sep+t)}}]),e}();function Rz(e,t){var n=t.kind?new Az(t.kind):void 0;return!!(!e.include||n&&e.include.contains(n))&&(!(e.excludes&&n&&e.excludes.some((function(t){return Pz(n,t,e.include)})))&&(!(!e.includeSourceActions&&n&&Az.Source.contains(n))&&!(e.onlyIncludePreferredActions&&!t.isPreferred)))}function Pz(e,t,n){return!!t.contains(e)&&(!n||!t.contains(n))}Az.sep=".",Az.None=new Az("@@none@@"),Az.Empty=new Az(""),Az.QuickFix=new Az("quickfix"),Az.Refactor=new Az("refactor"),Az.Source=new Az("source"),Az.SourceOrganizeImports=Az.Source.append("organizeImports"),Az.SourceFixAll=Az.Source.append("fixAll");var Zz=function(){function e(t,n,i){(0,X.Z)(this,e),this.kind=t,this.apply=n,this.preferred=i}return(0,J.Z)(e,null,[{key:"fromUser",value:function(t,n){return t&&"object"===typeof t?new e(e.getKindFromUser(t,n.kind),e.getApplyFromUser(t,n.apply),e.getPreferredUser(t)):new e(n.kind,n.apply,!1)}},{key:"getApplyFromUser",value:function(e,t){switch("string"===typeof e.apply?e.apply.toLowerCase():""){case"first":return"first";case"never":return"never";case"ifsingle":return"ifSingle";default:return t}}},{key:"getKindFromUser",value:function(e,t){return"string"===typeof e.kind?new Az(e.kind):t}},{key:"getPreferredUser",value:function(e){return"boolean"===typeof e.preferred&&e.preferred}}]),e}(),Fz=n(18085),jz=n(72611),Hz=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},Bz="editor.action.codeAction",zz="editor.action.refactor",Wz="editor.action.sourceAction",Vz="editor.action.organizeImports",Yz="editor.action.fixAll",Uz=function(){function e(t,n){(0,X.Z)(this,e),this.action=t,this.provider=n}return(0,J.Z)(e,[{key:"resolve",value:function(e){var t;return Hz(this,void 0,void 0,fn().mark((function n(){var i;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!(null===(t=this.provider)||void 0===t?void 0:t.resolveCodeAction)||this.action.edit){n.next=11;break}return n.prev=1,n.next=4,this.provider.resolveCodeAction(this.action,e);case 4:i=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n.catch(1),(0,LB.Cp)(n.t0);case 10:i&&(this.action.edit=i.edit);case 11:return n.abrupt("return",this);case 12:case"end":return n.stop()}}),n,this,[[1,7]])})))}}]),e}(),Kz=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this)).documentation=i,o._register(r),o.allActions=(0,Ct.Z)(e).sort(n.codeActionsComparator),o.validActions=o.allActions.filter((function(e){return!e.action.disabled})),o}return(0,J.Z)(n,[{key:"hasAutoFix",get:function(){return this.validActions.some((function(e){var t=e.action;return!!t.kind&&Az.QuickFix.contains(new Az(t.kind))&&!!t.isPreferred}))}}],[{key:"codeActionsComparator",value:function(e,t){var n=e.action,i=t.action;return n.isPreferred&&!i.isPreferred?-1:!n.isPreferred&&i.isPreferred?1:(0,SB.Of)(n.diagnostics)?(0,SB.Of)(i.diagnostics)?n.diagnostics[0].message.localeCompare(i.diagnostics[0].message):-1:(0,SB.Of)(i.diagnostics)?1:0}}]),n}(WB.JT),qz={actions:[],documentation:void 0};function Gz(e,t,n,i,r){var o,a=this,s=n.filter||{},u={only:null===(o=s.include)||void 0===o?void 0:o.value,trigger:n.type},l=new Tz.YQ(e,r),c=function(e,t){return Iz.H9.all(e).filter((function(e){return!e.providedCodeActionKinds||e.providedCodeActionKinds.some((function(e){return function(e,t){return!(e.include&&!e.include.intersects(t))&&(!e.excludes||!e.excludes.some((function(n){return Pz(t,n,e.include)})))&&!(!e.includeSourceActions&&Az.Source.contains(t))}(t,new Az(e))}))}))}(e,s),d=new WB.SL,h=c.map((function(n){return Hz(a,void 0,void 0,fn().mark((function r(){var o,a,c;return fn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,i.report(n),r.next=4,n.provideCodeActions(e,t,u,l.token);case 4:if((o=r.sent)&&d.add(o),!l.token.isCancellationRequested){r.next=8;break}return r.abrupt("return",qz);case 8:return a=((null===o||void 0===o?void 0:o.actions)||[]).filter((function(e){return e&&Rz(s,e)})),c=$z(n,a,s.include),r.abrupt("return",{actions:a.map((function(e){return new Uz(e,n)})),documentation:c});case 13:if(r.prev=13,r.t0=r.catch(0),!(0,LB.VV)(r.t0)){r.next=17;break}throw r.t0;case 17:return(0,LB.Cp)(r.t0),r.abrupt("return",qz);case 19:case"end":return r.stop()}}),r,null,[[0,13]])})))})),f=Iz.H9.onDidChange((function(){var t=Iz.H9.all(e);(0,SB.fS)(t,c)||l.cancel()}));return Promise.all(h).then((function(e){var t=(0,SB.xH)(e.map((function(e){return e.actions}))),n=(0,SB.kX)(e.map((function(e){return e.documentation})));return new Kz(t,n,d)})).finally((function(){f.dispose(),l.dispose()}))}function $z(e,t,n){if(e.documentation){var i=e.documentation.map((function(e){return{kind:new Az(e.kind),command:e.command}}));if(n){var r,o,a=(0,Na.Z)(i);try{for(a.s();!(o=a.n()).done;){var s=o.value;s.kind.contains(n)&&(r?r.kind.contains(s.kind)&&(r=s):r=s)}}catch(p){a.e(p)}finally{a.f()}if(r)return null===r||void 0===r?void 0:r.command}var u,l=(0,Na.Z)(t);try{for(l.s();!(u=l.n()).done;){var c=u.value;if(c.kind){var d,h=(0,Na.Z)(i);try{for(h.s();!(d=h.n()).done;){var f=d.value;if(f.kind.contains(new Az(c.kind)))return f.command}}catch(p){h.e(p)}finally{h.f()}}}}catch(p){l.e(p)}finally{l.f()}}}jz.P.registerCommand("_executeCodeActionProvider",(function(e,t,n,i,r){return Hz(this,void 0,void 0,fn().mark((function o(){var a,s,u,l,c,d,h;return fn().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(t instanceof Mz.o){o.next=2;break}throw(0,LB.b1)();case 2:if(a=e.get(Oz.q).getModel(t)){o.next=5;break}throw(0,LB.b1)();case 5:if(s=wB.Y.isISelection(n)?wB.Y.liftSelection(n):YB.e.isIRange(n)?a.validateRange(n):void 0){o.next=8;break}throw(0,LB.b1)();case 8:return u="string"===typeof i?new Az(i):void 0,o.next=11,Gz(a,s,{type:1,filter:{includeSourceActions:!0,include:u}},Fz.E.None,Lz.T.None);case 11:for(l=o.sent,c=[],d=Math.min(l.validActions.length,"number"===typeof r?r:0),h=0;h<d;h++)c.push(l.validActions[h].resolve(Lz.T.None));return o.prev=15,o.next=18,Promise.all(c);case 18:return o.abrupt("return",l.validActions.map((function(e){return e.action})));case 19:return o.prev=19,setTimeout((function(){return l.dispose()}),100),o.finish(19);case 22:case"end":return o.stop()}}),o,null,[[15,,19,22]])})))}));var Qz=n(11752),Xz=n(61120),Jz=n(7644),eW=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},tW=function(e,t){return function(n,i){t(n,i,e)}},nW=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this._messageWidget=new WB.XK,this._messageListeners=new WB.SL,this._editor=t,this._visible=e.MESSAGE_VISIBLE.bindTo(n),this._editorListener=this._editor.onDidAttemptReadOnlyEdit((function(){return i._onDidAttemptReadOnlyEdit()}))}return(0,J.Z)(e,[{key:"dispose",value:function(){this._editorListener.dispose(),this._messageListeners.dispose(),this._messageWidget.dispose(),this._visible.reset()}},{key:"showMessage",value:function(e,t){var n,i=this;(0,IB.Z9)(e),this._visible.set(!0),this._messageWidget.clear(),this._messageListeners.clear(),this._messageWidget.value=new rW(this._editor,t,e),this._messageListeners.add(this._editor.onDidBlurEditorText((function(){return i.closeMessage()}))),this._messageListeners.add(this._editor.onDidChangeCursorPosition((function(){return i.closeMessage()}))),this._messageListeners.add(this._editor.onDidDispose((function(){return i.closeMessage()}))),this._messageListeners.add(this._editor.onDidChangeModel((function(){return i.closeMessage()}))),this._messageListeners.add(new zB._F((function(){return i.closeMessage()}),3e3)),this._messageListeners.add(this._editor.onMouseMove((function(e){e.target.position&&(n?n.containsPosition(e.target.position)||i.closeMessage():n=new YB.e(t.lineNumber-3,1,e.target.position.lineNumber+3,1))})))}},{key:"closeMessage",value:function(){this._visible.reset(),this._messageListeners.clear(),this._messageWidget.value&&this._messageListeners.add(rW.fadeOut(this._messageWidget.value))}},{key:"_onDidAttemptReadOnlyEdit",value:function(){this._editor.hasModel()&&this.showMessage(yB.N("editor.readonly","Cannot edit in read-only editor"),this._editor.getPosition())}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();nW.ID="editor.contrib.messageController",nW.MESSAGE_VISIBLE=new kB.uy("messageVisible",!1,yB.N("messageVisible","Whether the editor is currently showing an inline message")),nW=eW([tW(1,kB.i6)],nW);var iW=_B._l.bindToContribution(nW.get);(0,_B.fK)(new iW({id:"leaveEditorMessage",precondition:nW.MESSAGE_VISIBLE,handler:function(e){return e.closeMessage()},kbOpts:{weight:130,primary:9}}));var rW=function(){function e(t,n,i){var r=n.lineNumber,o=n.column;(0,X.Z)(this,e),this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._editor=t,this._editor.revealLinesInCenterIfOutsideViewport(r,r,0),this._position={lineNumber:r,column:o-1},this._domNode=document.createElement("div"),this._domNode.classList.add("monaco-editor-overlaymessage");var a=document.createElement("div");a.classList.add("anchor","top"),this._domNode.appendChild(a);var s=document.createElement("div");s.classList.add("message"),s.textContent=i,this._domNode.appendChild(s);var u=document.createElement("div");u.classList.add("anchor","below"),this._domNode.appendChild(u),this._editor.addContentWidget(this),this._domNode.classList.add("fadeIn")}return(0,J.Z)(e,[{key:"dispose",value:function(){this._editor.removeContentWidget(this)}},{key:"getId",value:function(){return"messageoverlay"}},{key:"getDomNode",value:function(){return this._domNode}},{key:"getPosition",value:function(){return{position:this._position,preference:[1,2]}}},{key:"afterRender",value:function(e){this._domNode.classList.toggle("below",2===e)}}],[{key:"fadeOut",value:function(e){var t,n=function n(){e.dispose(),clearTimeout(t),e.getDomNode().removeEventListener("animationend",n)};return t=setTimeout(n,110),e.getDomNode().addEventListener("animationend",n),e.getDomNode().classList.add("fadeOut"),{dispose:n}}}]),e}();(0,_B._K)(nW.ID,nW),(0,$B.Ic)((function(e,t){var n=e.getColor(GB.EP);if(n){var i=e.type===Jz.e.HIGH_CONTRAST?2:1;t.addRule(".monaco-editor .monaco-editor-overlaymessage .anchor.below { border-top-color: ".concat(n,"; }")),t.addRule(".monaco-editor .monaco-editor-overlaymessage .anchor.top { border-bottom-color: ".concat(n,"; }")),t.addRule(".monaco-editor .monaco-editor-overlaymessage .message { border: ".concat(i,"px solid ").concat(n,"; }"))}var r=e.getColor(GB._l);r&&t.addRule(".monaco-editor .monaco-editor-overlaymessage .message { background-color: ".concat(r,"; }"));var o=e.getColor(GB.YI);o&&t.addRule(".monaco-editor .monaco-editor-overlaymessage .message { color: ".concat(o,"; }"))}));var oW=n(84596),aW=n(84540),sW=n(29077),uW=n(98989),lW=n(97963),cW=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},dW=function(e,t){return function(n,i){t(n,i,e)}},hW=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},fW=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,e.command?e.command.id:e.title,e.title.replace(/\r\n|\r|\n/g," "),void 0,!e.disabled,i)).action=e,r}return(0,J.Z)(n)}(sW.aU);var pW=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;return(0,X.Z)(this,n),(a=t.call(this))._editor=e,a._delegate=i,a._contextMenuService=r,a._visible=!1,a._showingActions=a._register(new WB.XK),a._keybindingResolver=new gW({getKeybindings:function(){return o.getKeybindings()}}),a}return(0,J.Z)(n,[{key:"isVisible",get:function(){return this._visible}},{key:"show",value:function(e,t,n,i){return hW(this,void 0,void 0,fn().mark((function r(){var o,a,s,u,l,c=this;return fn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if((o=i.includeDisabledActions?t.allActions:t.validActions).length){r.next=4;break}return this._visible=!1,r.abrupt("return");case 4:if(this._editor.getDomNode()){r.next=7;break}throw this._visible=!1,(0,LB.F0)();case 7:this._visible=!0,this._showingActions.value=t,a=this.getMenuActions(e,o,t.documentation),s=VB.L.isIPosition(n)?this._toCoords(n):n||{x:0,y:0},u=this._keybindingResolver.getResolver(),l=this._editor.getOption(111),this._contextMenuService.showContextMenu({domForShadowRoot:l?this._editor.getDomNode():void 0,getAnchor:function(){return s},getActions:function(){return a},onHide:function(){c._visible=!1,c._editor.focus()},autoSelectFirstItem:!0,getKeyBinding:function(e){return e instanceof fW?u(e.action):void 0}});case 14:case"end":return r.stop()}}),r,this)})))}},{key:"getMenuActions",value:function(e,t,n){var i,r,o=this,a=function(e){return new fW(e.action,(function(){return o._delegate.onSelectCodeAction(e)}))},s=t.map(a),u=(0,Ct.Z)(n),l=this._editor.getModel();if(l&&s.length){var c,d=(0,Na.Z)(Iz.H9.all(l));try{for(d.s();!(c=d.n()).done;){var h=c.value;h._getAdditionalMenuItems&&u.push.apply(u,(0,Ct.Z)(h._getAdditionalMenuItems({trigger:e.type,only:null===(r=null===(i=e.filter)||void 0===i?void 0:i.include)||void 0===r?void 0:r.value},t.map((function(e){return e.action})))))}}catch(f){d.e(f)}finally{d.f()}}return u.length&&s.push.apply(s,[new sW.Z0].concat((0,Ct.Z)(u.map((function(e){return a(new Uz({title:e.title,command:e},void 0))}))))),s}},{key:"_toCoords",value:function(e){if(!this._editor.hasModel())return{x:0,y:0};this._editor.revealPosition(e,1),this._editor.render();var t=this._editor.getScrolledVisiblePosition(e),n=(0,aW.getDomNodePagePosition)(this._editor.getDomNode());return{x:n.left+t.left,y:n.top+t.top+t.height}}}]),n}(WB.JT);pW=cW([dW(2,uW.i),dW(3,lW.d)],pW);var gW=function(){function e(t){(0,X.Z)(this,e),this._keybindingProvider=t}return(0,J.Z)(e,[{key:"getResolver",value:function(){var t=this,n=new Ez((function(){return t._keybindingProvider.getKeybindings().filter((function(t){return e.codeActionCommands.indexOf(t.command)>=0})).filter((function(e){return e.resolvedKeybinding})).map((function(e){var t=e.commandArgs;return e.command===Vz?t={kind:Az.SourceOrganizeImports.value}:e.command===Yz&&(t={kind:Az.SourceFixAll.value}),Object.assign({resolvedKeybinding:e.resolvedKeybinding},Zz.fromUser(t,{kind:Az.None,apply:"never"}))}))}));return function(e){if(e.kind){var i=t.bestKeybindingForCodeAction(e,n.getValue());return null===i||void 0===i?void 0:i.resolvedKeybinding}}}},{key:"bestKeybindingForCodeAction",value:function(e,t){if(e.kind){var n=new Az(e.kind);return t.filter((function(e){return e.kind.contains(n)})).filter((function(t){return!t.preferred||e.isPreferred})).reduceRight((function(e,t){return e?e.kind.contains(t.kind)?t:e:t}),void 0)}}}]),e}();gW.codeActionCommands=[zz,Bz,Wz,Vz,Yz];var vW,mW=n(78101),_W=n(11732),yW=n(25044),bW=n(4354),wW=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},CW=function(e,t){return function(n,i){t(n,i,e)}};!function(e){e.Hidden={type:0};var t=(0,J.Z)((function e(t,n,i,r){(0,X.Z)(this,e),this.actions=t,this.trigger=n,this.editorPosition=i,this.widgetPosition=r,this.type=1}));e.Showing=t}(vW||(vW={}));var kW=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;return(0,X.Z)(this,n),(a=t.call(this))._editor=e,a._quickFixActionId=i,a._preferredFixActionId=r,a._keybindingService=o,a._onClick=a._register(new _W.Q5),a.onClick=a._onClick.event,a._state=vW.Hidden,a._domNode=document.createElement("div"),a._domNode.className=bW.lA.lightBulb.classNames,a._editor.addContentWidget((0,Br.Z)(a)),a._register(a._editor.onDidChangeModelContent((function(e){var t=a._editor.getModel();(1!==a.state.type||!t||a.state.editorPosition.lineNumber>=t.getLineCount())&&a.hide()}))),yW.o.ignoreTarget(a._domNode),a._register(aW.addStandardDisposableGenericMouseDownListner(a._domNode,(function(e){if(1===a.state.type){a._editor.focus(),e.preventDefault();var t=aW.getDomNodePagePosition(a._domNode),n=t.top,i=t.height,r=a._editor.getOption(55),o=Math.floor(r/3);null!==a.state.widgetPosition.position&&a.state.widgetPosition.position.lineNumber<a.state.editorPosition.lineNumber&&(o+=r),a._onClick.fire({x:e.posx,y:n+i+o,actions:a.state.actions,trigger:a.state.trigger})}}))),a._register(aW.addDisposableListener(a._domNode,"mouseenter",(function(e){if(1===(1&e.buttons)){a.hide();var t=new mW.Z;t.startMonitoring(e.target,e.buttons,mW.e,(function(){}),(function(){t.dispose()}))}}))),a._register(a._editor.onDidChangeConfiguration((function(e){e.hasChanged(53)&&!a._editor.getOption(53).enabled&&a.hide()}))),a._updateLightBulbTitleAndIcon(),a._register(a._keybindingService.onDidUpdateKeybindings(a._updateLightBulbTitleAndIcon,(0,Br.Z)(a))),a}return(0,J.Z)(n,[{key:"dispose",value:function(){(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this),this._editor.removeContentWidget(this)}},{key:"getId",value:function(){return"LightBulbWidget"}},{key:"getDomNode",value:function(){return this._domNode}},{key:"getPosition",value:function(){return 1===this._state.type?this._state.widgetPosition:null}},{key:"update",value:function(e,t,i){var r=this;if(e.validActions.length<=0)return this.hide();var o=this._editor.getOptions();if(!o.get(53).enabled)return this.hide();var a=this._editor.getModel();if(!a)return this.hide();var s=a.validatePosition(i),u=s.lineNumber,l=s.column,c=a.getOptions().tabSize,d=o.get(40),h=a.getLineContent(u),f=KB.yO.computeIndentLevel(h,c),p=function(e){return e>2&&r._editor.getTopForLineNumber(e)===r._editor.getTopForLineNumber(e-1)},g=u;if(!(d.spaceWidth*f>22))if(u>1&&!p(u-1))g-=1;else if(p(u+1)){if(l*d.spaceWidth<22)return this.hide()}else g+=1;this.state=new vW.Showing(e,t,i,{position:{lineNumber:g,column:1},preference:n._posPref}),this._editor.layoutContentWidget(this)}},{key:"hide",value:function(){this.state=vW.Hidden,this._editor.layoutContentWidget(this)}},{key:"state",get:function(){return this._state},set:function(e){this._state=e,this._updateLightBulbTitleAndIcon()}},{key:"_updateLightBulbTitleAndIcon",value:function(){var e,t;if(1===this.state.type&&this.state.actions.hasAutoFix){var n,i;(n=this._domNode.classList).remove.apply(n,(0,Ct.Z)(bW.lA.lightBulb.classNamesArray)),(i=this._domNode.classList).add.apply(i,(0,Ct.Z)(bW.lA.lightbulbAutofix.classNamesArray));var r=this._keybindingService.lookupKeybinding(this._preferredFixActionId);if(r)return void(this.title=yB.N("prefferedQuickFixWithKb","Show Fixes. Preferred Fix Available ({0})",r.getLabel()))}(e=this._domNode.classList).remove.apply(e,(0,Ct.Z)(bW.lA.lightbulbAutofix.classNamesArray)),(t=this._domNode.classList).add.apply(t,(0,Ct.Z)(bW.lA.lightBulb.classNamesArray));var o=this._keybindingService.lookupKeybinding(this._quickFixActionId);this.title=o?yB.N("quickFixWithKb","Show Fixes ({0})",o.getLabel()):yB.N("quickFix","Show Fixes")}},{key:"title",set:function(e){this._domNode.title=e}}]),n}(WB.JT);kW._posPref=[0],kW=wW([CW(3,lW.d)],kW),(0,$B.Ic)((function(e,t){var n,i=null===(n=e.getColor(GB.cv))||void 0===n?void 0:n.transparent(.7),r=e.getColor(GB.Fu);r&&t.addRule("\n\t\t.monaco-editor .contentWidgets ".concat(bW.lA.lightBulb.cssSelector," {\n\t\t\tcolor: ").concat(r,";\n\t\t\tbackground-color: ").concat(i,";\n\t\t}"));var o=e.getColor(GB.sK);o&&t.addRule("\n\t\t.monaco-editor .contentWidgets ".concat(bW.lA.lightbulbAutofix.cssSelector," {\n\t\t\tcolor: ").concat(o,";\n\t\t\tbackground-color: ").concat(i,";\n\t\t}"))}));var SW,xW=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},LW=function(e,t){return function(n,i){t(n,i,e)}},EW=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},DW=function(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"===typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n},NW=function(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"===typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)},MW=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o,a){var s;return(0,X.Z)(this,n),(s=t.call(this))._editor=e,s.delegate=o,s._activeCodeActions=s._register(new WB.XK),SW.set((0,Br.Z)(s),!1),s._codeActionWidget=new Ez((function(){return s._register(a.createInstance(pW,s._editor,{onSelectCodeAction:function(e){return EW((0,Br.Z)(s),void 0,void 0,fn().mark((function t(){return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.delegate.applyCodeAction(e,!0);case 1:case"end":return t.stop()}}),t,this)})))}}))})),s._lightBulbWidget=new Ez((function(){var e=s._register(a.createInstance(kW,s._editor,i,r));return s._register(e.onClick((function(e){return s.showCodeActionList(e.trigger,e.actions,e,{includeDisabledActions:!1})}))),e})),s}return(0,J.Z)(n,[{key:"dispose",value:function(){DW(this,SW,!0,"f"),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"update",value:function(e){var t,n,i;return EW(this,void 0,void 0,fn().mark((function r(){var o,a,s,u;return fn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(1===e.type){r.next=3;break}return null===(t=this._lightBulbWidget.rawValue)||void 0===t||t.hide(),r.abrupt("return");case 3:return r.prev=3,r.next=6,e.actions;case 6:o=r.sent,r.next=13;break;case 9:return r.prev=9,r.t0=r.catch(3),(0,LB.dL)(r.t0),r.abrupt("return");case 13:if(!NW(this,SW,"f")){r.next=15;break}return r.abrupt("return");case 15:if(this._lightBulbWidget.getValue().update(o,e.trigger,e.position),1!==e.trigger.type){r.next=44;break}if(!(null===(n=e.trigger.filter)||void 0===n?void 0:n.include)){r.next=33;break}if(!(a=this.tryGetValidActionToApply(e.trigger,o))){r.next=27;break}return r.prev=20,r.next=23,this.delegate.applyCodeAction(a,!1);case 23:return r.prev=23,o.dispose(),r.finish(23);case 26:return r.abrupt("return");case 27:if(!e.trigger.context){r.next=33;break}if(!(s=this.getInvalidActionThatWouldHaveBeenApplied(e.trigger,o))||!s.action.disabled){r.next=33;break}return nW.get(this._editor).showMessage(s.action.disabled,e.trigger.context.position),o.dispose(),r.abrupt("return");case 33:if(u=!!(null===(i=e.trigger.filter)||void 0===i?void 0:i.include),!e.trigger.context){r.next=40;break}if(o.allActions.length&&(u||o.validActions.length)){r.next=40;break}return nW.get(this._editor).showMessage(e.trigger.context.notAvailableMessage,e.trigger.context.position),this._activeCodeActions.value=o,o.dispose(),r.abrupt("return");case 40:this._activeCodeActions.value=o,this._codeActionWidget.getValue().show(e.trigger,o,e.position,{includeDisabledActions:u}),r.next=45;break;case 44:this._codeActionWidget.getValue().isVisible?o.dispose():this._activeCodeActions.value=o;case 45:case"end":return r.stop()}}),r,this,[[3,9],[20,,23,26]])})))}},{key:"getInvalidActionThatWouldHaveBeenApplied",value:function(e,t){if(t.allActions.length)return"first"===e.autoApply&&0===t.validActions.length||"ifSingle"===e.autoApply&&1===t.allActions.length?t.allActions.find((function(e){return e.action.disabled})):void 0}},{key:"tryGetValidActionToApply",value:function(e,t){if(t.validActions.length)return"first"===e.autoApply&&t.validActions.length>0||"ifSingle"===e.autoApply&&1===t.validActions.length?t.validActions[0]:void 0}},{key:"showCodeActionList",value:function(e,t,n,i){return EW(this,void 0,void 0,fn().mark((function r(){return fn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this._codeActionWidget.getValue().show(e,t,n,i);case 1:case"end":return r.stop()}}),r,this)})))}}]),n}(WB.JT);SW=new WeakMap,MW=xW([LW(4,oW.TG)],MW);var TW,IW,OW=n(95123),AW=n(71574),RW=n(45014),PW=n(51334),ZW=function(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"===typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)},FW=function(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"===typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n},jW=new kB.uy("supportedCodeAction",""),HW=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:250;return(0,X.Z)(this,n),(o=t.call(this))._editor=e,o._markerService=i,o._signalChange=r,o._delay=a,o._autoTriggerTimer=o._register(new zB._F),o._register(o._markerService.onMarkerChanged((function(e){return o._onMarkerChanges(e)}))),o._register(o._editor.onDidChangeCursorPosition((function(){return o._onCursorChange()}))),o}return(0,J.Z)(n,[{key:"trigger",value:function(e){var t=this._getRangeOfSelectionUnlessWhitespaceEnclosed(e);return this._createEventAndSignalChange(e,t)}},{key:"_onMarkerChanges",value:function(e){var t=this,n=this._editor.getModel();n&&e.some((function(e){return(0,PW.Xy)(e,n.uri)}))&&this._autoTriggerTimer.cancelAndSet((function(){t.trigger({type:2})}),this._delay)}},{key:"_onCursorChange",value:function(){var e=this;this._autoTriggerTimer.cancelAndSet((function(){e.trigger({type:2})}),this._delay)}},{key:"_getRangeOfMarker",value:function(e){var t=this._editor.getModel();if(t){var n,i=(0,Na.Z)(this._markerService.read({resource:t.uri}));try{for(i.s();!(n=i.n()).done;){var r=n.value,o=t.validateRange(r);if(YB.e.intersectRanges(o,e))return YB.e.lift(o)}}catch(a){i.e(a)}finally{i.f()}}}},{key:"_getRangeOfSelectionUnlessWhitespaceEnclosed",value:function(e){if(this._editor.hasModel()){var t=this._editor.getModel(),n=this._editor.getSelection();if(n.isEmpty()&&2===e.type){var i=n.getPosition(),r=i.lineNumber,o=i.column,a=t.getLineContent(r);if(0===a.length)return;if(1===o){if(/\s/.test(a[0]))return}else if(o===t.getLineMaxColumn(r)){if(/\s/.test(a[a.length-1]))return}else if(/\s/.test(a[o-2])&&/\s/.test(a[o-1]))return}return n}}},{key:"_createEventAndSignalChange",value:function(e,t){var n=this._editor.getModel();if(t&&n){var i=this._getRangeOfMarker(t),r=i?i.getStartPosition():t.getStartPosition(),o={trigger:e,selection:t,position:r};return this._signalChange(o),o}this._signalChange(void 0)}}]),n}(WB.JT);!function(e){e.Empty={type:0};var t=function(){function e(t,n,i,r){(0,X.Z)(this,e),this.trigger=t,this.rangeOrSelection=n,this.position=i,this._cancellablePromise=r,this.type=1,this.actions=r.catch((function(e){if((0,LB.VV)(e))return BW;throw e}))}return(0,J.Z)(e,[{key:"cancel",value:function(){this._cancellablePromise.cancel()}}]),e}();e.Triggered=t}(IW||(IW={}));var BW={allActions:[],validActions:[],dispose:function(){},documentation:[],hasAutoFix:!1},zW=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;return(0,X.Z)(this,n),(a=t.call(this))._editor=e,a._markerService=i,a._progressService=o,a._codeActionOracle=a._register(new WB.XK),a._state=IW.Empty,a._onDidChangeState=a._register(new _W.Q5),a.onDidChangeState=a._onDidChangeState.event,TW.set((0,Br.Z)(a),!1),a._supportedCodeActions=jW.bindTo(r),a._register(a._editor.onDidChangeModel((function(){return a._update()}))),a._register(a._editor.onDidChangeModelLanguage((function(){return a._update()}))),a._register(Iz.H9.onDidChange((function(){return a._update()}))),a._update(),a}return(0,J.Z)(n,[{key:"dispose",value:function(){ZW(this,TW,"f")||(FW(this,TW,!0,"f"),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this),this.setState(IW.Empty,!0))}},{key:"_update",value:function(){var e=this;if(!ZW(this,TW,"f")){this._codeActionOracle.value=void 0,this.setState(IW.Empty);var t=this._editor.getModel();if(t&&Iz.H9.has(t)&&!this._editor.getOption(77)){var n,i=[],r=(0,Na.Z)(Iz.H9.all(t));try{for(r.s();!(n=r.n()).done;){var o=n.value;Array.isArray(o.providedCodeActionKinds)&&i.push.apply(i,(0,Ct.Z)(o.providedCodeActionKinds))}}catch(a){r.e(a)}finally{r.f()}this._supportedCodeActions.set(i.join(" ")),this._codeActionOracle.value=new HW(this._editor,this._markerService,(function(n){var i;if(n){var r=(0,zB.PG)((function(e){return Gz(t,n.selection,n.trigger,Fz.E.None,e)}));1===n.trigger.type&&(null===(i=e._progressService)||void 0===i||i.showWhile(r,250)),e.setState(new IW.Triggered(n.trigger,n.selection,n.position,r))}else e.setState(IW.Empty)}),void 0),this._codeActionOracle.value.trigger({type:2})}else this._supportedCodeActions.reset()}}},{key:"trigger",value:function(e){this._codeActionOracle.value&&this._codeActionOracle.value.trigger(e)}},{key:"setState",value:function(e,t){e!==this._state&&(1===this._state.type&&this._state.cancel(),this._state=e,t||ZW(this,TW,"f")||this._onDidChangeState.fire(e))}}]),n}(WB.JT);TW=new WeakMap;var WW=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},VW=function(e,t){return function(n,i){t(n,i,e)}},YW=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};function UW(e){return kB.Ao.regex(jW.keys()[0],new RegExp("(\\s|^)"+(0,Dz.ec)(e.value)+"\\b"))}var KW={type:"object",defaultSnippets:[{body:{kind:""}}],properties:{kind:{type:"string",description:yB.N("args.schema.kind","Kind of the code action to run.")},apply:{type:"string",description:yB.N("args.schema.apply","Controls when the returned actions are applied."),default:"ifSingle",enum:["first","ifSingle","never"],enumDescriptions:[yB.N("args.schema.apply.first","Always apply the first returned code action."),yB.N("args.schema.apply.ifSingle","Apply the first returned code action if it is the only one."),yB.N("args.schema.apply.never","Do not apply the returned code actions.")]},preferred:{type:"boolean",default:!1,description:yB.N("args.schema.preferred","Controls if only preferred code actions should be returned.")}}},qW=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o,a){var s;return(0,X.Z)(this,n),(s=t.call(this))._instantiationService=a,s._editor=e,s._model=s._register(new zW(s._editor,i,r,o)),s._register(s._model.onDidChangeState((function(e){return s.update(e)}))),s._ui=new Ez((function(){return s._register(new MW(e,XW.Id,rV.Id,{applyCodeAction:function(e,t){return YW((0,Br.Z)(s),void 0,void 0,fn().mark((function n(){return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,this._applyCodeAction(e);case 3:return n.prev=3,t&&this._trigger({type:2,filter:{}}),n.finish(3);case 6:case"end":return n.stop()}}),n,this,[[0,,3,6]])})))}},s._instantiationService))})),s}return(0,J.Z)(n,[{key:"update",value:function(e){this._ui.getValue().update(e)}},{key:"showCodeActions",value:function(e,t,n){return this._ui.getValue().showCodeActionList(e,t,n,{includeDisabledActions:!1})}},{key:"manualTriggerAtCurrentPosition",value:function(e,t,n){if(this._editor.hasModel()){nW.get(this._editor).closeMessage();var i=this._editor.getPosition();this._trigger({type:1,filter:t,autoApply:n,context:{notAvailableMessage:e,position:i}})}}},{key:"_trigger",value:function(e){return this._model.trigger(e)}},{key:"_applyCodeAction",value:function(e){return this._instantiationService.invokeFunction(GW,e,this._editor)}}],[{key:"get",value:function(e){return e.getContribution(n.ID)}}]),n}(WB.JT);function GW(e,t,n){return YW(this,void 0,void 0,fn().mark((function i(){var r,o,a,s,u;return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return r=e.get(Nz.vu),o=e.get(jz.H),a=e.get(RW.b),s=e.get(AW.lT),a.publicLog2("codeAction.applyCodeAction",{codeActionTitle:t.action.title,codeActionKind:t.action.kind,codeActionIsPreferred:!!t.action.isPreferred}),i.next=7,t.resolve(Lz.T.None);case 7:if(!t.action.edit){i.next=10;break}return i.next=10,r.apply(Nz.fo.convert(t.action.edit),{editor:n,label:t.action.title});case 10:if(!t.action.command){i.next=20;break}return i.prev=11,i.next=14,o.executeCommand.apply(o,[t.action.command.id].concat((0,Ct.Z)(t.action.command.arguments||[])));case 14:i.next=20;break;case 16:i.prev=16,i.t0=i.catch(11),u=$W(i.t0),s.error("string"===typeof u?u:yB.N("applyCodeActionFailed","An unknown error occurred while applying the code action"));case 20:case"end":return i.stop()}}),i,null,[[11,16]])})))}function $W(e){return"string"===typeof e?e:e instanceof Error&&"string"===typeof e.message?e.message:void 0}function QW(e,t,n,i){if(e.hasModel()){var r=qW.get(e);r&&r.manualTriggerAtCurrentPosition(t,n,i)}}qW.ID="editor.contrib.quickFixController",qW=WW([VW(1,OW.lT),VW(2,kB.i6),VW(3,Fz.e),VW(4,oW.TG)],qW);var XW=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:n.Id,label:yB.N("quickfix.trigger.label","Quick Fix..."),alias:"Quick Fix...",precondition:kB.Ao.and(bB.u.writable,bB.u.hasCodeActionsProvider),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:2132,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return QW(t,yB.N("editor.action.quickFix.noneMessage","No code actions available"),void 0,void 0)}}]),n}(_B.R6);XW.Id="editor.action.quickFix";var JW=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:Bz,precondition:kB.Ao.and(bB.u.writable,bB.u.hasCodeActionsProvider),description:{description:"Trigger a code action",args:[{name:"args",schema:KW}]}})}return(0,J.Z)(n,[{key:"runEditorCommand",value:function(e,t,n){var i=Zz.fromUser(n,{kind:Az.Empty,apply:"ifSingle"});return QW(t,"string"===typeof(null===n||void 0===n?void 0:n.kind)?i.preferred?yB.N("editor.action.codeAction.noneMessage.preferred.kind","No preferred code actions for '{0}' available",n.kind):yB.N("editor.action.codeAction.noneMessage.kind","No code actions for '{0}' available",n.kind):i.preferred?yB.N("editor.action.codeAction.noneMessage.preferred","No preferred code actions available"):yB.N("editor.action.codeAction.noneMessage","No code actions available"),{include:i.kind,includeSourceActions:!0,onlyIncludePreferredActions:i.preferred},i.apply)}}]),n}(_B._l),eV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:zz,label:yB.N("refactor.label","Refactor..."),alias:"Refactor...",precondition:kB.Ao.and(bB.u.writable,bB.u.hasCodeActionsProvider),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:3120,mac:{primary:1328},weight:100},contextMenuOpts:{group:"1_modification",order:2,when:kB.Ao.and(bB.u.writable,UW(Az.Refactor))},description:{description:"Refactor...",args:[{name:"args",schema:KW}]}})}return(0,J.Z)(n,[{key:"run",value:function(e,t,n){var i=Zz.fromUser(n,{kind:Az.Refactor,apply:"never"});return QW(t,"string"===typeof(null===n||void 0===n?void 0:n.kind)?i.preferred?yB.N("editor.action.refactor.noneMessage.preferred.kind","No preferred refactorings for '{0}' available",n.kind):yB.N("editor.action.refactor.noneMessage.kind","No refactorings for '{0}' available",n.kind):i.preferred?yB.N("editor.action.refactor.noneMessage.preferred","No preferred refactorings available"):yB.N("editor.action.refactor.noneMessage","No refactorings available"),{include:Az.Refactor.contains(i.kind)?i.kind:Az.None,onlyIncludePreferredActions:i.preferred},i.apply)}}]),n}(_B.R6),tV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:Wz,label:yB.N("source.label","Source Action..."),alias:"Source Action...",precondition:kB.Ao.and(bB.u.writable,bB.u.hasCodeActionsProvider),contextMenuOpts:{group:"1_modification",order:2.1,when:kB.Ao.and(bB.u.writable,UW(Az.Source))},description:{description:"Source Action...",args:[{name:"args",schema:KW}]}})}return(0,J.Z)(n,[{key:"run",value:function(e,t,n){var i=Zz.fromUser(n,{kind:Az.Source,apply:"never"});return QW(t,"string"===typeof(null===n||void 0===n?void 0:n.kind)?i.preferred?yB.N("editor.action.source.noneMessage.preferred.kind","No preferred source actions for '{0}' available",n.kind):yB.N("editor.action.source.noneMessage.kind","No source actions for '{0}' available",n.kind):i.preferred?yB.N("editor.action.source.noneMessage.preferred","No preferred source actions available"):yB.N("editor.action.source.noneMessage","No source actions available"),{include:Az.Source.contains(i.kind)?i.kind:Az.None,includeSourceActions:!0,onlyIncludePreferredActions:i.preferred},i.apply)}}]),n}(_B.R6),nV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:Vz,label:yB.N("organizeImports.label","Organize Imports"),alias:"Organize Imports",precondition:kB.Ao.and(bB.u.writable,UW(Az.SourceOrganizeImports)),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:1581,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return QW(t,yB.N("editor.action.organize.noneMessage","No organize imports action available"),{include:Az.SourceOrganizeImports,includeSourceActions:!0},"ifSingle")}}]),n}(_B.R6),iV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:Yz,label:yB.N("fixAll.label","Fix All"),alias:"Fix All",precondition:kB.Ao.and(bB.u.writable,UW(Az.SourceFixAll))})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return QW(t,yB.N("fixAll.noneMessage","No fix all action available"),{include:Az.SourceFixAll,includeSourceActions:!0},"ifSingle")}}]),n}(_B.R6),rV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:n.Id,label:yB.N("autoFix.label","Auto Fix..."),alias:"Auto Fix...",precondition:kB.Ao.and(bB.u.writable,UW(Az.QuickFix)),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:1620,mac:{primary:2644},weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return QW(t,yB.N("editor.action.autoFix.noneMessage","No auto fixes available"),{include:Az.QuickFix,onlyIncludePreferredActions:!0},"ifSingle")}}]),n}(_B.R6);rV.Id="editor.action.autoFix",(0,_B._K)(qW.ID,qW),(0,_B.Qr)(XW),(0,_B.Qr)(eV),(0,_B.Qr)(tV),(0,_B.Qr)(nV),(0,_B.Qr)(rV),(0,_B.Qr)(iV),(0,_B.fK)(new JW);var oV=n(25941),aV=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},sV=function(){function e(){(0,X.Z)(this,e),this.lenses=[],this._disposables=new WB.SL}return(0,J.Z)(e,[{key:"dispose",value:function(){this._disposables.dispose()}},{key:"add",value:function(e,t){this._disposables.add(e);var n,i=(0,Na.Z)(e.lenses);try{for(i.s();!(n=i.n()).done;){var r=n.value;this.lenses.push({symbol:r,provider:t})}}catch(o){i.e(o)}finally{i.f()}}}]),e}();function uV(e,t){return aV(this,void 0,void 0,fn().mark((function n(){var i,r,o,a,s=this;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=Iz.He.ordered(e),r=new Map,o=new sV,a=i.map((function(n,i){return aV(s,void 0,void 0,fn().mark((function a(){var s;return fn().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return r.set(n,i),a.prev=1,a.next=4,Promise.resolve(n.provideCodeLenses(e,t));case 4:(s=a.sent)&&o.add(s,n),a.next=11;break;case 8:a.prev=8,a.t0=a.catch(1),(0,LB.Cp)(a.t0);case 11:case"end":return a.stop()}}),a,null,[[1,8]])})))})),n.next=6,Promise.all(a);case 6:return o.lenses=o.lenses.sort((function(e,t){return e.symbol.range.startLineNumber<t.symbol.range.startLineNumber?-1:e.symbol.range.startLineNumber>t.symbol.range.startLineNumber?1:r.get(e.provider)<r.get(t.provider)?-1:r.get(e.provider)>r.get(t.provider)?1:e.symbol.range.startColumn<t.symbol.range.startColumn?-1:e.symbol.range.startColumn>t.symbol.range.startColumn?1:0})),n.abrupt("return",o);case 8:case"end":return n.stop()}}),n)})))}jz.P.registerCommand("_executeCodeLensProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var r=n[0],o=n[1];(0,oV.p_)(Mz.o.isUri(r)),(0,oV.p_)("number"===typeof o||!o);var a=e.get(Oz.q).getModel(r);if(!a)throw(0,LB.b1)();var s=[],u=new WB.SL;return uV(a,Lz.T.None).then((function(e){u.add(e);var t,n=[],i=(0,Na.Z)(e.lenses);try{var r=function(){var e=t.value;void 0===o||null===o||Boolean(e.symbol.command)?s.push(e.symbol):o-- >0&&e.provider.resolveCodeLens&&n.push(Promise.resolve(e.provider.resolveCodeLens(a,e.symbol,Lz.T.None)).then((function(t){return s.push(t||e.symbol)})))};for(i.s();!(t=i.n()).done;)r()}catch(l){i.e(l)}finally{i.f()}return Promise.all(n)})).then((function(){return s})).finally((function(){setTimeout((function(){return u.dispose()}),100)}))}));var lV=n(66404),cV=function(){function e(t,n,i){(0,X.Z)(this,e),this.afterLineNumber=t,this.heightInPx=n,this._onHeight=i,this.suppressMouseDown=!0,this.domNode=document.createElement("div")}return(0,J.Z)(e,[{key:"onComputedHeight",value:function(e){void 0===this._lastHeight?this._lastHeight=e:this._lastHeight!==e&&(this._lastHeight=e,this._onHeight())}}]),e}(),dV=function(){function e(t,n,i){(0,X.Z)(this,e),this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this._commands=new Map,this._isEmpty=!0,this._editor=t,this._id="codelens.widget-".concat(e._idPool++),this.updatePosition(i),this._domNode=document.createElement("span"),this._domNode.className="codelens-decoration ".concat(n)}return(0,J.Z)(e,[{key:"withCommands",value:function(e,t){this._commands.clear();for(var n=[],i=!1,r=0;r<e.length;r++){var o=e[r];if(o&&(i=!0,o.command)){var a=(0,lV.T)(o.command.title.trim());o.command.id?(n.push(aW.$.apply(aW,["a",{id:String(r),title:o.command.tooltip}].concat((0,Ct.Z)(a)))),this._commands.set(String(r),o.command)):n.push(aW.$.apply(aW,["span",{title:o.command.tooltip}].concat((0,Ct.Z)(a)))),r+1<e.length&&n.push(aW.$("span",void 0,"\xa0|\xa0"))}}i?(aW.reset.apply(aW,[this._domNode].concat(n)),this._isEmpty&&t&&this._domNode.classList.add("fadein"),this._isEmpty=!1):aW.reset(this._domNode,aW.$("span",void 0,"no commands"))}},{key:"getCommand",value:function(e){return e.parentElement===this._domNode?this._commands.get(e.id):void 0}},{key:"getId",value:function(){return this._id}},{key:"getDomNode",value:function(){return this._domNode}},{key:"updatePosition",value:function(e){var t=this._editor.getModel().getLineFirstNonWhitespaceColumn(e);this._widgetPosition={position:{lineNumber:e,column:t},preference:[1]}}},{key:"getPosition",value:function(){return this._widgetPosition||null}}]),e}();dV._idPool=0;var hV=function(){function e(){(0,X.Z)(this,e),this._removeDecorations=[],this._addDecorations=[],this._addDecorationsCallbacks=[]}return(0,J.Z)(e,[{key:"addDecoration",value:function(e,t){this._addDecorations.push(e),this._addDecorationsCallbacks.push(t)}},{key:"removeDecoration",value:function(e){this._removeDecorations.push(e)}},{key:"commit",value:function(e){for(var t=e.deltaDecorations(this._removeDecorations,this._addDecorations),n=0,i=t.length;n<i;n++)this._addDecorationsCallbacks[n](t[n])}}]),e}(),fV=function(){function e(t,n,i,r,o,a,s){var u,l=this;(0,X.Z)(this,e),this._isDisposed=!1,this._editor=n,this._className=i,this._data=t,this._decorationIds=[];var c=[];this._data.forEach((function(e,t){e.symbol.command&&c.push(e.symbol),r.addDecoration({range:e.symbol.range,options:KB.qx.EMPTY},(function(e){return l._decorationIds[t]=e})),u=u?YB.e.plusRange(u,e.symbol.range):YB.e.lift(e.symbol.range)})),this._viewZone=new cV(u.startLineNumber-1,a,s),this._viewZoneId=o.addZone(this._viewZone),c.length>0&&(this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(c,!1))}return(0,J.Z)(e,[{key:"_createContentWidgetIfNecessary",value:function(){this._contentWidget?this._editor.layoutContentWidget(this._contentWidget):(this._contentWidget=new dV(this._editor,this._className,this._viewZone.afterLineNumber+1),this._editor.addContentWidget(this._contentWidget))}},{key:"dispose",value:function(e,t){this._decorationIds.forEach(e.removeDecoration,e),this._decorationIds=[],t&&t.removeZone(this._viewZoneId),this._contentWidget&&(this._editor.removeContentWidget(this._contentWidget),this._contentWidget=void 0),this._isDisposed=!0}},{key:"isDisposed",value:function(){return this._isDisposed}},{key:"isValid",value:function(){var e=this;return this._decorationIds.some((function(t,n){var i=e._editor.getModel().getDecorationRange(t),r=e._data[n].symbol;return!(!i||YB.e.isEmpty(r.range)!==i.isEmpty())}))}},{key:"updateCodeLensSymbols",value:function(e,t){var n=this;this._decorationIds.forEach(t.removeDecoration,t),this._decorationIds=[],this._data=e,this._data.forEach((function(e,i){t.addDecoration({range:e.symbol.range,options:KB.qx.EMPTY},(function(e){return n._decorationIds[i]=e}))}))}},{key:"updateHeight",value:function(e,t){this._viewZone.heightInPx=e,t.layoutZone(this._viewZoneId),this._contentWidget&&this._editor.layoutContentWidget(this._contentWidget)}},{key:"computeIfNecessary",value:function(e){if(!this._viewZone.domNode.hasAttribute("monaco-visible-view-zone"))return null;for(var t=0;t<this._decorationIds.length;t++){var n=e.getDecorationRange(this._decorationIds[t]);n&&(this._data[t].symbol.range=n)}return this._data}},{key:"updateCommands",value:function(e){this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(e,!0);for(var t=0;t<this._data.length;t++){var n=e[t];if(n){var i=this._data[t].symbol;i.command=n.command||i.command}}}},{key:"getCommand",value:function(e){var t;return null===(t=this._contentWidget)||void 0===t?void 0:t.getCommand(e)}},{key:"getLineNumber",value:function(){var e=this._editor.getModel().getDecorationRange(this._decorationIds[0]);return e?e.startLineNumber:-1}},{key:"update",value:function(e){if(this.isValid()){var t=this._editor.getModel().getDecorationRange(this._decorationIds[0]);t&&(this._viewZone.afterLineNumber=t.startLineNumber-1,e.layoutZone(this._viewZoneId),this._contentWidget&&(this._contentWidget.updatePosition(t.startLineNumber),this._editor.layoutContentWidget(this._contentWidget)))}}},{key:"getItems",value:function(){return this._data}}]),e}();(0,$B.Ic)((function(e,t){var n=e.getColor(qB.Yp);n&&(t.addRule(".monaco-editor .codelens-decoration { color: ".concat(n,"; }")),t.addRule(".monaco-editor .codelens-decoration .codicon { color: ".concat(n,"; }")));var i=e.getColor(GB._Y);i&&(t.addRule(".monaco-editor .codelens-decoration > a:hover { color: ".concat(i," !important; }")),t.addRule(".monaco-editor .codelens-decoration > a:hover .codicon { color: ".concat(i," !important; }")))}));var pV=n(77863),gV=n(15022),vV=n(59319),mV=n(60106),_V=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},yV=function(e,t){return function(n,i){t(n,i,e)}},bV=(0,oW.yh)("ICodeLensCache"),wV=(0,J.Z)((function e(t,n){(0,X.Z)(this,e),this.lineCount=t,this.data=n})),CV=function(){function e(t){var n=this;(0,X.Z)(this,e),this._fakeProvider=new(function(){function e(){(0,X.Z)(this,e)}return(0,J.Z)(e,[{key:"provideCodeLenses",value:function(){throw new Error("not supported")}}]),e}()),this._cache=new gV.z6(20,.75);(0,zB.To)((function(){return t.remove("codelens/cache",1)}));var i="codelens/cache2",r=t.get(i,1,"{}");this._deserialize(r),(0,mV.I)(t.onWillSaveState)((function(e){e.reason===vV.fk.SHUTDOWN&&t.store(i,n._serialize(),1,1)}))}return(0,J.Z)(e,[{key:"put",value:function(e,t){var n=t.lenses.map((function(e){var t;return{range:e.symbol.range,command:e.symbol.command&&{id:"",title:null===(t=e.symbol.command)||void 0===t?void 0:t.title}}})),i=new sV;i.add({lenses:n,dispose:function(){}},this._fakeProvider);var r=new wV(e.getLineCount(),i);this._cache.set(e.uri.toString(),r)}},{key:"get",value:function(e){var t=this._cache.get(e.uri.toString());return t&&t.lineCount===e.getLineCount()?t.data:void 0}},{key:"delete",value:function(e){this._cache.delete(e.uri.toString())}},{key:"_serialize",value:function(){var e,t=Object.create(null),n=(0,Na.Z)(this._cache);try{for(n.s();!(e=n.n()).done;){var i,r=(0,ne.Z)(e.value,2),o=r[0],a=r[1],s=new Set,u=(0,Na.Z)(a.data.lenses);try{for(u.s();!(i=u.n()).done;){var l=i.value;s.add(l.symbol.range.startLineNumber)}}catch(c){u.e(c)}finally{u.f()}t[o]={lineCount:a.lineCount,lines:(0,Ct.Z)(s.values())}}}catch(c){n.e(c)}finally{n.f()}return JSON.stringify(t)}},{key:"_deserialize",value:function(e){try{var t=JSON.parse(e);for(var n in t){var i,r=t[n],o=[],a=(0,Na.Z)(r.lines);try{for(a.s();!(i=a.n()).done;){var s=i.value;o.push({range:new YB.e(s,1,s,11)})}}catch(l){a.e(l)}finally{a.f()}var u=new sV;u.add({lenses:o,dispose:function(){}},this._fakeProvider),this._cache.set(n,new wV(r.lineCount,u))}}catch(FU){}}}]),e}();CV=_V([yV(0,vV.Uy)],CV),(0,pV.z)(bV,CV);var kV=n(25567),SV=n(62137),xV=n(66748),LV=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},EV=function(e,t){return function(n,i){t(n,i,e)}},DV=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},NV=function(){function e(t,n,i,r){var o=this;(0,X.Z)(this,e),this._editor=t,this._commandService=n,this._notificationService=i,this._codeLensCache=r,this._disposables=new WB.SL,this._localToDispose=new WB.SL,this._lenses=[],this._getCodeLensModelDelays=new xV.Y(Iz.He,250,2500),this._oldCodeLensModels=new WB.SL,this._resolveCodeLensesDelays=new xV.Y(Iz.He,250,2500),this._resolveCodeLensesScheduler=new zB.pY((function(){return o._resolveCodeLensesInViewport()}),this._resolveCodeLensesDelays.min),this._disposables.add(this._editor.onDidChangeModel((function(){return o._onModelChange()}))),this._disposables.add(this._editor.onDidChangeModelLanguage((function(){return o._onModelChange()}))),this._disposables.add(this._editor.onDidChangeConfiguration((function(e){(e.hasChanged(40)||e.hasChanged(14)||e.hasChanged(13))&&o._updateLensStyle(),e.hasChanged(12)&&o._onModelChange()}))),this._disposables.add(Iz.He.onDidChange(this._onModelChange,this)),this._onModelChange(),this._styleClassName="_"+(0,kV.vp)(this._editor.getId()).toString(16),this._styleElement=aW.createStyleSheet(aW.isInShadowDOM(this._editor.getContainerDomNode())?this._editor.getContainerDomNode():void 0),this._updateLensStyle()}return(0,J.Z)(e,[{key:"dispose",value:function(){var e;this._localDispose(),this._disposables.dispose(),this._oldCodeLensModels.dispose(),null===(e=this._currentCodeLensModel)||void 0===e||e.dispose(),this._styleElement.remove()}},{key:"_getLayoutInfo",value:function(){var e,t=this._editor.getOption(14);return!t||t<5?(t=.9*this._editor.getOption(42)|0,e=this._editor.getOption(55)):e=t*Math.max(1.3,this._editor.getOption(55)/this._editor.getOption(42))|0,{codeLensHeight:e,fontSize:t}}},{key:"_updateLensStyle",value:function(){var e=this,t=this._getLayoutInfo(),n=t.codeLensHeight,i=t.fontSize,r=this._editor.getOption(13),o=this._editor.getOption(40),a="--codelens-font-family".concat(this._styleClassName),s="--codelens-font-features".concat(this._styleClassName),u="\n\t\t.monaco-editor .codelens-decoration.".concat(this._styleClassName," { line-height: ").concat(n,"px; font-size: ").concat(i,"px; padding-right: ").concat(Math.round(.5*i),"px; font-feature-settings: var(").concat(s,") }\n\t\t.monaco-editor .codelens-decoration.").concat(this._styleClassName," span.codicon { line-height: ").concat(n,"px; font-size: ").concat(i,"px; }\n\t\t");r&&(u+=".monaco-editor .codelens-decoration.".concat(this._styleClassName," { font-family: var(").concat(a,")}")),this._styleElement.textContent=u,this._editor.getContainerDomNode().style.setProperty(a,null!==r&&void 0!==r?r:"inherit"),this._editor.getContainerDomNode().style.setProperty(s,o.fontFeatureSettings),this._editor.changeViewZones((function(t){var i,r=(0,Na.Z)(e._lenses);try{for(r.s();!(i=r.n()).done;){i.value.updateHeight(n,t)}}catch(o){r.e(o)}finally{r.f()}}))}},{key:"_localDispose",value:function(){var e,t,n;null===(e=this._getCodeLensModelPromise)||void 0===e||e.cancel(),this._getCodeLensModelPromise=void 0,null===(t=this._resolveCodeLensesPromise)||void 0===t||t.cancel(),this._resolveCodeLensesPromise=void 0,this._localToDispose.clear(),this._oldCodeLensModels.clear(),null===(n=this._currentCodeLensModel)||void 0===n||n.dispose()}},{key:"_onModelChange",value:function(){var e=this;this._localDispose();var t=this._editor.getModel();if(t&&this._editor.getOption(12)){var n=this._codeLensCache.get(t);if(n&&this._renderCodeLensSymbols(n),Iz.He.has(t)){var i,r=(0,Na.Z)(Iz.He.all(t));try{for(r.s();!(i=r.n()).done;){var o=i.value;if("function"===typeof o.onDidChange){var a=o.onDidChange((function(){return s.schedule()}));this._localToDispose.add(a)}}}catch(u){r.e(u)}finally{r.f()}var s=new zB.pY((function(){var n,i=Date.now();null===(n=e._getCodeLensModelPromise)||void 0===n||n.cancel(),e._getCodeLensModelPromise=(0,zB.PG)((function(e){return uV(t,e)})),e._getCodeLensModelPromise.then((function(n){e._currentCodeLensModel&&e._oldCodeLensModels.add(e._currentCodeLensModel),e._currentCodeLensModel=n,e._codeLensCache.put(t,n);var r=e._getCodeLensModelDelays.update(t,Date.now()-i);s.delay=r,e._renderCodeLensSymbols(n),e._resolveCodeLensesInViewport()}),LB.dL)}),this._getCodeLensModelDelays.get(t));this._localToDispose.add(s),this._localToDispose.add((0,WB.OF)((function(){return e._resolveCodeLensesScheduler.cancel()}))),this._localToDispose.add(this._editor.onDidChangeModelContent((function(){e._editor.changeDecorations((function(t){e._editor.changeViewZones((function(n){var i=[],r=-1;e._lenses.forEach((function(e){e.isValid()&&r!==e.getLineNumber()?(e.update(n),r=e.getLineNumber()):i.push(e)}));var o=new hV;i.forEach((function(t){t.dispose(o,n),e._lenses.splice(e._lenses.indexOf(t),1)})),o.commit(t)}))})),s.schedule()}))),this._localToDispose.add(this._editor.onDidFocusEditorWidget((function(){s.schedule()}))),this._localToDispose.add(this._editor.onDidScrollChange((function(t){t.scrollTopChanged&&e._lenses.length>0&&e._resolveCodeLensesInViewportSoon()}))),this._localToDispose.add(this._editor.onDidLayoutChange((function(){e._resolveCodeLensesInViewportSoon()}))),this._localToDispose.add((0,WB.OF)((function(){if(e._editor.getModel()){var t=Tz.ZF.capture(e._editor);e._editor.changeDecorations((function(t){e._editor.changeViewZones((function(n){e._disposeAllLenses(t,n)}))})),t.restore(e._editor)}else e._disposeAllLenses(void 0,void 0)}))),this._localToDispose.add(this._editor.onMouseDown((function(t){if(9===t.target.type){var n=t.target.element;if("SPAN"===(null===n||void 0===n?void 0:n.tagName)&&(n=n.parentElement),"A"===(null===n||void 0===n?void 0:n.tagName)){var i,r=(0,Na.Z)(e._lenses);try{for(r.s();!(i=r.n()).done;){var o=i.value.getCommand(n);if(o){var a;(a=e._commandService).executeCommand.apply(a,[o.id].concat((0,Ct.Z)(o.arguments||[]))).catch((function(t){return e._notificationService.error(t)}));break}}}catch(u){r.e(u)}finally{r.f()}}}}))),s.schedule()}else n&&this._localToDispose.add((0,zB.Vg)((function(){var i=e._codeLensCache.get(t);n===i&&(e._codeLensCache.delete(t),e._onModelChange())}),3e4))}}},{key:"_disposeAllLenses",value:function(e,t){var n,i=new hV,r=(0,Na.Z)(this._lenses);try{for(r.s();!(n=r.n()).done;){n.value.dispose(i,t)}}catch(o){r.e(o)}finally{r.f()}e&&i.commit(e),this._lenses.length=0}},{key:"_renderCodeLensSymbols",value:function(e){var t=this;if(this._editor.hasModel()){var n,i,r=this._editor.getModel().getLineCount(),o=[],a=(0,Na.Z)(e.lenses);try{for(a.s();!(i=a.n()).done;){var s=i.value,u=s.symbol.range.startLineNumber;u<1||u>r||(n&&n[n.length-1].symbol.range.startLineNumber===u?n.push(s):(n=[s],o.push(n)))}}catch(d){a.e(d)}finally{a.f()}var l=Tz.ZF.capture(this._editor),c=this._getLayoutInfo();this._editor.changeDecorations((function(e){t._editor.changeViewZones((function(n){for(var i=new hV,r=0,a=0;a<o.length&&r<t._lenses.length;){var s=o[a][0].symbol.range.startLineNumber,u=t._lenses[r].getLineNumber();u<s?(t._lenses[r].dispose(i,n),t._lenses.splice(r,1)):u===s?(t._lenses[r].updateCodeLensSymbols(o[a],i),a++,r++):(t._lenses.splice(r,0,new fV(o[a],t._editor,t._styleClassName,i,n,c.codeLensHeight,(function(){return t._resolveCodeLensesInViewportSoon()}))),r++,a++)}for(;r<t._lenses.length;)t._lenses[r].dispose(i,n),t._lenses.splice(r,1);for(;a<o.length;)t._lenses.push(new fV(o[a],t._editor,t._styleClassName,i,n,c.codeLensHeight,(function(){return t._resolveCodeLensesInViewportSoon()}))),a++;i.commit(e)}))})),l.restore(this._editor)}}},{key:"_resolveCodeLensesInViewportSoon",value:function(){this._editor.getModel()&&this._resolveCodeLensesScheduler.schedule()}},{key:"_resolveCodeLensesInViewport",value:function(){var e,t=this;null===(e=this._resolveCodeLensesPromise)||void 0===e||e.cancel(),this._resolveCodeLensesPromise=void 0;var n=this._editor.getModel();if(n){var i=[],r=[];if(this._lenses.forEach((function(e){var t=e.computeIfNecessary(n);t&&(i.push(t),r.push(e))})),0!==i.length){var o=Date.now(),a=(0,zB.PG)((function(e){var t=i.map((function(t,i){var o=new Array(t.length),a=t.map((function(t,i){return t.symbol.command||"function"!==typeof t.provider.resolveCodeLens?(o[i]=t.symbol,Promise.resolve(void 0)):Promise.resolve(t.provider.resolveCodeLens(n,t.symbol,e)).then((function(e){o[i]=e}),LB.Cp)}));return Promise.all(a).then((function(){e.isCancellationRequested||r[i].isDisposed()||r[i].updateCommands(o)}))}));return Promise.all(t)}));this._resolveCodeLensesPromise=a,this._resolveCodeLensesPromise.then((function(){var e=t._resolveCodeLensesDelays.update(n,Date.now()-o);t._resolveCodeLensesScheduler.delay=e,t._currentCodeLensModel&&t._codeLensCache.put(n,t._currentCodeLensModel),t._oldCodeLensModels.clear(),a===t._resolveCodeLensesPromise&&(t._resolveCodeLensesPromise=void 0)}),(function(e){(0,LB.dL)(e),a===t._resolveCodeLensesPromise&&(t._resolveCodeLensesPromise=void 0)}))}}}},{key:"getLenses",value:function(){return this._lenses}}]),e}();NV.ID="css.editor.codeLens",NV=LV([EV(1,jz.H),EV(2,AW.lT),EV(3,bV)],NV),(0,_B._K)(NV.ID,NV),(0,_B.Qr)(function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"codelens.showLensesInCurrentLine",precondition:bB.u.hasCodeLensProvider,label:(0,yB.N)("showLensOnLine","Show CodeLens Commands For Current Line"),alias:"Show CodeLens Commands For Current Line"})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return DV(this,void 0,void 0,fn().mark((function n(){var i,r,o,a,s,u,l,c,d,h,f,p,g,v;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t.hasModel()){n.next=2;break}return n.abrupt("return");case 2:i=e.get(SV.eJ),r=e.get(jz.H),o=e.get(AW.lT),a=t.getSelection().positionLineNumber,s=t.getContribution(NV.ID),u=[],l=(0,Na.Z)(s.getLenses());try{for(l.s();!(c=l.n()).done;)if((d=c.value).getLineNumber()===a){h=(0,Na.Z)(d.getItems());try{for(h.s();!(f=h.n()).done;)p=f.value,(g=p.symbol.command)&&u.push({label:g.title,command:g})}catch(m){h.e(m)}finally{h.f()}}}catch(m){l.e(m)}finally{l.f()}if(0!==u.length){n.next=12;break}return n.abrupt("return");case 12:return n.next=14,i.pick(u,{canPickMany:!1});case 14:if(v=n.sent){n.next=17;break}return n.abrupt("return");case 17:return n.prev=17,n.next=20,r.executeCommand.apply(r,[v.command.id].concat((0,Ct.Z)(v.command.arguments||[])));case 20:n.next=25;break;case 22:n.prev=22,n.t0=n.catch(17),o.error(n.t0);case 25:case"end":return n.stop()}}),n,null,[[17,22]])})))}}]),n}(_B.R6));var MV=n(89938);function TV(e,t,n,i){return Promise.resolve(n.provideColorPresentations(e,t,i))}jz.P.registerCommand("_executeDocumentColorProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var r=n[0];if(!(r instanceof Mz.o))throw(0,LB.b1)();var o=e.get(Oz.q).getModel(r);if(!o)throw(0,LB.b1)();var a=[],s=Iz.OH.ordered(o).reverse().map((function(e){return Promise.resolve(e.provideDocumentColors(o,Lz.T.None)).then((function(e){if(Array.isArray(e)){var t,n=(0,Na.Z)(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;a.push({range:i.range,color:[i.color.red,i.color.green,i.color.blue,i.color.alpha]})}}catch(r){n.e(r)}finally{n.f()}}}))}));return Promise.all(s).then((function(){return a}))})),jz.P.registerCommand("_executeColorPresentationProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var r=n[0],o=n[1],a=o.uri,s=o.range;if(!(a instanceof Mz.o)||!Array.isArray(r)||4!==r.length||!YB.e.isIRange(s))throw(0,LB.b1)();var u=(0,ne.Z)(r,4),l=u[0],c=u[1],d=u[2],h=u[3],f=e.get(Oz.q).getModel(a);if(!f)throw(0,LB.b1)();var p={range:s,color:{red:l,green:c,blue:d,alpha:h}},g=[],v=Iz.OH.ordered(f).reverse().map((function(e){return Promise.resolve(e.provideColorPresentations(f,p,Lz.T.None)).then((function(e){Array.isArray(e)&&g.push.apply(g,(0,Ct.Z)(e))}))}));return Promise.all(v).then((function(){return g}))}));var IV=n(98921),OV=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},AV=function(e,t){return function(n,i){t(n,i,e)}},RV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this))._editor=e,o._codeEditorService=i,o._configurationService=r,o._localToDispose=o._register(new WB.SL),o._decorationsIds=[],o._colorDatas=new Map,o._colorDecoratorIds=[],o._decorationsTypes=new Set,o._register(e.onDidChangeModel((function(){o._isEnabled=o.isEnabled(),o.onModelChanged()}))),o._register(e.onDidChangeModelLanguage((function(){return o.onModelChanged()}))),o._register(Iz.OH.onDidChange((function(){return o.onModelChanged()}))),o._register(e.onDidChangeConfiguration((function(){var e=o._isEnabled;o._isEnabled=o.isEnabled(),e!==o._isEnabled&&(o._isEnabled?o.onModelChanged():o.removeAllDecorations())}))),o._timeoutTimer=null,o._computePromise=null,o._isEnabled=o.isEnabled(),o.onModelChanged(),o}return(0,J.Z)(n,[{key:"isEnabled",value:function(){var e=this._editor.getModel();if(!e)return!1;var t=e.getLanguageIdentifier(),n=this._configurationService.getValue(t.language);if(n){var i=n.colorDecorators;if(i&&void 0!==i.enable&&!i.enable)return i.enable}return this._editor.getOption(15)}},{key:"dispose",value:function(){this.stop(),this.removeAllDecorations(),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"onModelChanged",value:function(){var e=this;if(this.stop(),this._isEnabled){var t=this._editor.getModel();t&&Iz.OH.has(t)&&(this._localToDispose.add(this._editor.onDidChangeModelContent((function(){e._timeoutTimer||(e._timeoutTimer=new zB._F,e._timeoutTimer.cancelAndSet((function(){e._timeoutTimer=null,e.beginCompute()}),n.RECOMPUTE_TIME))}))),this.beginCompute())}}},{key:"beginCompute",value:function(){var e=this;this._computePromise=(0,zB.PG)((function(t){var n=e._editor.getModel();return n?function(e,t){var n=[],i=Iz.OH.ordered(e).reverse().map((function(i){return Promise.resolve(i.provideDocumentColors(e,t)).then((function(e){if(Array.isArray(e)){var t,r=(0,Na.Z)(e);try{for(r.s();!(t=r.n()).done;){var o=t.value;n.push({colorInfo:o,provider:i})}}catch(a){r.e(a)}finally{r.f()}}}))}));return Promise.all(i).then((function(){return n}))}(n,t):Promise.resolve([])})),this._computePromise.then((function(t){e.updateDecorations(t),e.updateColorDecorators(t),e._computePromise=null}),LB.dL)}},{key:"stop",value:function(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()}},{key:"updateDecorations",value:function(e){var t=this,n=e.map((function(e){return{range:{startLineNumber:e.colorInfo.range.startLineNumber,startColumn:e.colorInfo.range.startColumn,endLineNumber:e.colorInfo.range.endLineNumber,endColumn:e.colorInfo.range.endColumn},options:KB.qx.EMPTY}}));this._decorationsIds=this._editor.deltaDecorations(this._decorationsIds,n),this._colorDatas=new Map,this._decorationsIds.forEach((function(n,i){return t._colorDatas.set(n,e[i])}))}},{key:"updateColorDecorators",value:function(e){for(var t=this,n=[],i={},r=0;r<e.length&&n.length<500;r++){var o=e[r].colorInfo.color,a=o.red,s=o.green,u=o.blue,l=o.alpha,c=new MV.VS(Math.round(255*a),Math.round(255*s),Math.round(255*u),l),d=(0,kV.vp)("rgba(".concat(c.r,",").concat(c.g,",").concat(c.b,",").concat(c.a,")")).toString(16),h="rgba(".concat(c.r,", ").concat(c.g,", ").concat(c.b,", ").concat(c.a,")"),f="colorBox-"+d;this._decorationsTypes.has(f)||i[f]||this._codeEditorService.registerDecorationType(f,{before:{contentText:" ",border:"solid 0.1em #000",margin:"0.1em 0.2em 0 0.2em",width:"0.8em",height:"0.8em",backgroundColor:h},dark:{before:{border:"solid 0.1em #eee"}}},void 0,this._editor),i[f]=!0,n.push({range:{startLineNumber:e[r].colorInfo.range.startLineNumber,startColumn:e[r].colorInfo.range.startColumn,endLineNumber:e[r].colorInfo.range.endLineNumber,endColumn:e[r].colorInfo.range.endColumn},options:this._codeEditorService.resolveDecorationOptions(f,!0)})}this._decorationsTypes.forEach((function(e){i[e]||t._codeEditorService.removeDecorationType(e)})),this._colorDecoratorIds=this._editor.deltaDecorations(this._colorDecoratorIds,n)}},{key:"removeAllDecorations",value:function(){var e=this;this._decorationsIds=this._editor.deltaDecorations(this._decorationsIds,[]),this._colorDecoratorIds=this._editor.deltaDecorations(this._colorDecoratorIds,[]),this._decorationsTypes.forEach((function(t){e._codeEditorService.removeDecorationType(t)}))}},{key:"getColorData",value:function(e){var t=this,n=this._editor.getModel();if(!n)return null;var i=n.getDecorationsInRange(YB.e.fromPositions(e,e)).filter((function(e){return t._colorDatas.has(e.id)}));return 0===i.length?null:this._colorDatas.get(i[0].id)}}],[{key:"get",value:function(e){return e.getContribution(this.ID)}}]),n}(WB.JT);RV.ID="editor.contrib.colorDetector",RV.RECOMPUTE_TIME=1e3,RV=OV([AV(1,fz.$),AV(2,IV.Ui)],RV),(0,_B._K)(RV.ID,RV);var PV=n(49829),ZV=function(){function e(t,n,i){(0,X.Z)(this,e),this.presentationIndex=i,this._onColorFlushed=new _W.Q5,this.onColorFlushed=this._onColorFlushed.event,this._onDidChangeColor=new _W.Q5,this.onDidChangeColor=this._onDidChangeColor.event,this._onDidChangePresentation=new _W.Q5,this.onDidChangePresentation=this._onDidChangePresentation.event,this.originalColor=t,this._color=t,this._colorPresentations=n}return(0,J.Z)(e,[{key:"color",get:function(){return this._color},set:function(e){this._color.equals(e)||(this._color=e,this._onDidChangeColor.fire(e))}},{key:"presentation",get:function(){return this.colorPresentations[this.presentationIndex]}},{key:"colorPresentations",get:function(){return this._colorPresentations},set:function(e){this._colorPresentations=e,this.presentationIndex>e.length-1&&(this.presentationIndex=0),this._onDidChangePresentation.fire(this.presentation)}},{key:"selectNextColorPresentation",value:function(){this.presentationIndex=(this.presentationIndex+1)%this.colorPresentations.length,this.flushColor(),this._onDidChangePresentation.fire(this.presentation)}},{key:"guessColorPresentation",value:function(e,t){for(var n=0;n<this.colorPresentations.length;n++)if(t.toLowerCase()===this.colorPresentations[n].label){this.presentationIndex=n,this._onDidChangePresentation.fire(this.presentation);break}}},{key:"flushColor",value:function(){this._onColorFlushed.fire(this._color)}}]),e}(),FV=n(43257),jV=aW.$,HV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;(0,X.Z)(this,n),(o=t.call(this)).model=i,o.domNode=jV(".colorpicker-header"),aW.append(e,o.domNode),o.pickedColorNode=aW.append(o.domNode,jV(".picked-color"));var a=aW.append(o.domNode,jV(".original-color"));return a.style.backgroundColor=MV.Il.Format.CSS.format(o.model.originalColor)||"",o.backgroundColor=r.getColorTheme().getColor(GB.yJ)||MV.Il.white,o._register((0,$B.Ic)((function(e,t){o.backgroundColor=e.getColor(GB.yJ)||MV.Il.white}))),o._register(aW.addDisposableListener(o.pickedColorNode,aW.EventType.CLICK,(function(){return o.model.selectNextColorPresentation()}))),o._register(aW.addDisposableListener(a,aW.EventType.CLICK,(function(){o.model.color=o.model.originalColor,o.model.flushColor()}))),o._register(i.onDidChangeColor(o.onDidChangeColor,(0,Br.Z)(o))),o._register(i.onDidChangePresentation(o.onDidChangePresentation,(0,Br.Z)(o))),o.pickedColorNode.style.backgroundColor=MV.Il.Format.CSS.format(i.color)||"",o.pickedColorNode.classList.toggle("light",i.color.rgba.a<.5?o.backgroundColor.isLighter():i.color.isLighter()),o}return(0,J.Z)(n,[{key:"onDidChangeColor",value:function(e){this.pickedColorNode.style.backgroundColor=MV.Il.Format.CSS.format(e)||"",this.pickedColorNode.classList.toggle("light",e.rgba.a<.5?this.backgroundColor.isLighter():e.isLighter()),this.onDidChangePresentation()}},{key:"onDidChangePresentation",value:function(){this.pickedColorNode.textContent=this.model.presentation?this.model.presentation.label:""}}]),n}(WB.JT),BV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this)).model=i,o.pixelRatio=r,o.domNode=jV(".colorpicker-body"),aW.append(e,o.domNode),o.saturationBox=new zV(o.domNode,o.model,o.pixelRatio),o._register(o.saturationBox),o._register(o.saturationBox.onDidChange(o.onDidSaturationValueChange,(0,Br.Z)(o))),o._register(o.saturationBox.onColorFlushed(o.flushColor,(0,Br.Z)(o))),o.opacityStrip=new VV(o.domNode,o.model),o._register(o.opacityStrip),o._register(o.opacityStrip.onDidChange(o.onDidOpacityChange,(0,Br.Z)(o))),o._register(o.opacityStrip.onColorFlushed(o.flushColor,(0,Br.Z)(o))),o.hueStrip=new YV(o.domNode,o.model),o._register(o.hueStrip),o._register(o.hueStrip.onDidChange(o.onDidHueChange,(0,Br.Z)(o))),o._register(o.hueStrip.onColorFlushed(o.flushColor,(0,Br.Z)(o))),o}return(0,J.Z)(n,[{key:"flushColor",value:function(){this.model.flushColor()}},{key:"onDidSaturationValueChange",value:function(e){var t=e.s,n=e.v,i=this.model.color.hsva;this.model.color=new MV.Il(new MV.tx(i.h,t,n,i.a))}},{key:"onDidOpacityChange",value:function(e){var t=this.model.color.hsva;this.model.color=new MV.Il(new MV.tx(t.h,t.s,t.v,e))}},{key:"onDidHueChange",value:function(e){var t=this.model.color.hsva,n=360*(1-e);this.model.color=new MV.Il(new MV.tx(360===n?0:n,t.s,t.v,t.a))}},{key:"layout",value:function(){this.saturationBox.layout(),this.opacityStrip.layout(),this.hueStrip.layout()}}]),n}(WB.JT),zV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this)).model=i,o.pixelRatio=r,o._onDidChange=new _W.Q5,o.onDidChange=o._onDidChange.event,o._onColorFlushed=new _W.Q5,o.onColorFlushed=o._onColorFlushed.event,o.domNode=jV(".saturation-wrap"),aW.append(e,o.domNode),o.canvas=document.createElement("canvas"),o.canvas.className="saturation-box",aW.append(o.domNode,o.canvas),o.selection=jV(".saturation-selection"),aW.append(o.domNode,o.selection),o.layout(),o._register(aW.addDisposableGenericMouseDownListner(o.domNode,(function(e){return o.onMouseDown(e)}))),o._register(o.model.onDidChangeColor(o.onDidChangeColor,(0,Br.Z)(o))),o.monitor=null,o}return(0,J.Z)(n,[{key:"onMouseDown",value:function(e){var t=this;this.monitor=this._register(new mW.Z);var n=aW.getDomNodePagePosition(this.domNode);e.target!==this.selection&&this.onDidChangePosition(e.offsetX,e.offsetY),this.monitor.startMonitoring(e.target,e.buttons,mW.e,(function(e){return t.onDidChangePosition(e.posx-n.left,e.posy-n.top)}),(function(){return null}));var i=aW.addDisposableGenericMouseUpListner(document,(function(){t._onColorFlushed.fire(),i.dispose(),t.monitor&&(t.monitor.stopMonitoring(!0),t.monitor=null)}),!0)}},{key:"onDidChangePosition",value:function(e,t){var n=Math.max(0,Math.min(1,e/this.width)),i=Math.max(0,Math.min(1,1-t/this.height));this.paintSelection(n,i),this._onDidChange.fire({s:n,v:i})}},{key:"layout",value:function(){this.width=this.domNode.offsetWidth,this.height=this.domNode.offsetHeight,this.canvas.width=this.width*this.pixelRatio,this.canvas.height=this.height*this.pixelRatio,this.paint();var e=this.model.color.hsva;this.paintSelection(e.s,e.v)}},{key:"paint",value:function(){var e=this.model.color.hsva,t=new MV.Il(new MV.tx(e.h,1,1,1)),n=this.canvas.getContext("2d"),i=n.createLinearGradient(0,0,this.canvas.width,0);i.addColorStop(0,"rgba(255, 255, 255, 1)"),i.addColorStop(.5,"rgba(255, 255, 255, 0.5)"),i.addColorStop(1,"rgba(255, 255, 255, 0)");var r=n.createLinearGradient(0,0,0,this.canvas.height);r.addColorStop(0,"rgba(0, 0, 0, 0)"),r.addColorStop(1,"rgba(0, 0, 0, 1)"),n.rect(0,0,this.canvas.width,this.canvas.height),n.fillStyle=MV.Il.Format.CSS.format(t),n.fill(),n.fillStyle=i,n.fill(),n.fillStyle=r,n.fill()}},{key:"paintSelection",value:function(e,t){this.selection.style.left="".concat(e*this.width,"px"),this.selection.style.top="".concat(this.height-t*this.height,"px")}},{key:"onDidChangeColor",value:function(){this.monitor&&this.monitor.isMonitoring()||this.paint()}}]),n}(WB.JT),WV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this)).model=i,r._onDidChange=new _W.Q5,r.onDidChange=r._onDidChange.event,r._onColorFlushed=new _W.Q5,r.onColorFlushed=r._onColorFlushed.event,r.domNode=aW.append(e,jV(".strip")),r.overlay=aW.append(r.domNode,jV(".overlay")),r.slider=aW.append(r.domNode,jV(".slider")),r.slider.style.top="0px",r._register(aW.addDisposableGenericMouseDownListner(r.domNode,(function(e){return r.onMouseDown(e)}))),r.layout(),r}return(0,J.Z)(n,[{key:"layout",value:function(){this.height=this.domNode.offsetHeight-this.slider.offsetHeight;var e=this.getValue(this.model.color);this.updateSliderPosition(e)}},{key:"onMouseDown",value:function(e){var t=this,n=this._register(new mW.Z),i=aW.getDomNodePagePosition(this.domNode);this.domNode.classList.add("grabbing"),e.target!==this.slider&&this.onDidChangeTop(e.offsetY),n.startMonitoring(e.target,e.buttons,mW.e,(function(e){return t.onDidChangeTop(e.posy-i.top)}),(function(){return null}));var r=aW.addDisposableGenericMouseUpListner(document,(function(){t._onColorFlushed.fire(),r.dispose(),n.stopMonitoring(!0),t.domNode.classList.remove("grabbing")}),!0)}},{key:"onDidChangeTop",value:function(e){var t=Math.max(0,Math.min(1,1-e/this.height));this.updateSliderPosition(t),this._onDidChange.fire(t)}},{key:"updateSliderPosition",value:function(e){this.slider.style.top="".concat((1-e)*this.height,"px")}}]),n}(WB.JT),VV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,e,i)).domNode.classList.add("opacity-strip"),r._register(i.onDidChangeColor(r.onDidChangeColor,(0,Br.Z)(r))),r.onDidChangeColor(r.model.color),r}return(0,J.Z)(n,[{key:"onDidChangeColor",value:function(e){var t=e.rgba,n=t.r,i=t.g,r=t.b,o=new MV.Il(new MV.VS(n,i,r,1)),a=new MV.Il(new MV.VS(n,i,r,0));this.overlay.style.background="linear-gradient(to bottom, ".concat(o," 0%, ").concat(a," 100%)")}},{key:"getValue",value:function(e){return e.hsva.a}}]),n}(WV),YV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,e,i)).domNode.classList.add("hue-strip"),r}return(0,J.Z)(n,[{key:"getValue",value:function(e){return 1-e.hsva.h/360}}]),n}(WV),UV=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;(0,X.Z)(this,n),(a=t.call(this)).model=i,a.pixelRatio=r,a._register((0,cz.fX)((function(){return a.layout()})));var s=jV(".colorpicker-widget");e.appendChild(s);var u=new HV(s,a.model,o);return a.body=new BV(s,a.model,a.pixelRatio),a._register(u),a._register(a.body),a}return(0,J.Z)(n,[{key:"layout",value:function(){this.body.layout()}}]),n}(FV.$),KV=function(){function e(t,n,i,r,o){var a=this;(0,X.Z)(this,e),this._computer=t,this._state=0,this._hoverTime=o,this._firstWaitScheduler=new zB.pY((function(){return a._triggerAsyncComputation()}),0),this._secondWaitScheduler=new zB.pY((function(){return a._triggerSyncComputation()}),0),this._loadingMessageScheduler=new zB.pY((function(){return a._showLoadingMessage()}),0),this._asyncComputationPromise=null,this._asyncComputationPromiseDone=!1,this._completeCallback=n,this._errorCallback=i,this._progressCallback=r}return(0,J.Z)(e,[{key:"setHoverTime",value:function(e){this._hoverTime=e}},{key:"_firstWaitTime",value:function(){return this._hoverTime/2}},{key:"_secondWaitTime",value:function(){return this._hoverTime/2}},{key:"_loadingMessageTime",value:function(){return 3*this._hoverTime}},{key:"_triggerAsyncComputation",value:function(){var e=this;this._state=2,this._secondWaitScheduler.schedule(this._secondWaitTime()),this._computer.computeAsync?(this._asyncComputationPromiseDone=!1,this._asyncComputationPromise=(0,zB.PG)((function(t){return e._computer.computeAsync(t)})),this._asyncComputationPromise.then((function(t){e._asyncComputationPromiseDone=!0,e._withAsyncResult(t)}),(function(t){return e._onError(t)}))):this._asyncComputationPromiseDone=!0}},{key:"_triggerSyncComputation",value:function(){this._computer.computeSync&&this._computer.onResult(this._computer.computeSync(),!0),this._asyncComputationPromiseDone?(this._state=0,this._onComplete(this._computer.getResult())):(this._state=3,this._onProgress(this._computer.getResult()))}},{key:"_showLoadingMessage",value:function(){3===this._state&&this._onProgress(this._computer.getResultWithLoadingMessage())}},{key:"_withAsyncResult",value:function(e){e&&this._computer.onResult(e,!1),3===this._state&&(this._state=0,this._onComplete(this._computer.getResult()))}},{key:"_onComplete",value:function(e){this._completeCallback(e)}},{key:"_onError",value:function(e){this._errorCallback?this._errorCallback(e):(0,LB.dL)(e)}},{key:"_onProgress",value:function(e){this._progressCallback(e)}},{key:"start",value:function(e){if(0===e)0===this._state&&(this._state=1,this._firstWaitScheduler.schedule(this._firstWaitTime()),this._loadingMessageScheduler.schedule(this._loadingMessageTime()));else switch(this._state){case 0:this._triggerAsyncComputation(),this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break;case 2:this._secondWaitScheduler.cancel(),this._triggerSyncComputation()}}},{key:"cancel",value:function(){this._loadingMessageScheduler.cancel(),1===this._state&&this._firstWaitScheduler.cancel(),2===this._state&&(this._secondWaitScheduler.cancel(),this._asyncComputationPromise&&(this._asyncComputationPromise.cancel(),this._asyncComputationPromise=null)),3===this._state&&this._asyncComputationPromise&&(this._asyncComputationPromise.cancel(),this._asyncComputationPromise=null),this._state=0}}]),e}(),qV=n(61727),GV=aW.$,$V=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),(e=t.call(this)).containerDomNode=document.createElement("div"),e.containerDomNode.className="monaco-hover",e.containerDomNode.tabIndex=0,e.containerDomNode.setAttribute("role","tooltip"),e.contentsDomNode=document.createElement("div"),e.contentsDomNode.className="monaco-hover-content",e._scrollbar=e._register(new qV.s$(e.contentsDomNode,{consumeMouseWheelIfScrollbarIsNeeded:!0})),e.containerDomNode.appendChild(e._scrollbar.getDomNode()),e}return(0,J.Z)(n,[{key:"onContentsChanged",value:function(){this._scrollbar.scanDomNode()}}]),n}(WB.JT);var QV=n(50816),XV=n(9696),JV=n(55585),eY=n(67537);function tY(e){if(e){"string"===typeof e&&(e=Mz.o.file(e));var t=(0,PW.EZ)(e)||(e.scheme===JV.lg.file?e.fsPath:e.path);return dz.ED&&(0,eY.vY)(t)?nY(t):t}}function nY(e){return(0,eY.oP)(e)?e.charAt(0).toUpperCase()+e.slice(1):e}var iY=n(67404),rY=n(10405),oY=n(40782),aY=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},sY=function(e,t){return function(n,i){t(n,i,e)}},uY=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o,a,s,u,l,c,d){var h,f;return(0,X.Z)(this,n),(f=t.call(this,e,Object.assign(Object.assign({},r.getRawOptions()),{overflowWidgetsDomNode:r.getOverflowWidgetsDomNode()}),{},o,a,s,u,l,c,d))._parentEditor=r,f._overwriteOptions=i,(0,Qz.Z)((h=(0,Br.Z)(f),(0,Xz.Z)(n.prototype)),"updateOptions",h).call(h,f._overwriteOptions),f._register(r.onDidChangeConfiguration((function(e){return f._onParentConfigurationChanged(e)}))),f}return(0,J.Z)(n,[{key:"getParentEditor",value:function(){return this._parentEditor}},{key:"_onParentConfigurationChanged",value:function(e){(0,Qz.Z)((0,Xz.Z)(n.prototype),"updateOptions",this).call(this,this._parentEditor.getRawOptions()),(0,Qz.Z)((0,Xz.Z)(n.prototype),"updateOptions",this).call(this,this._overwriteOptions)}},{key:"updateOptions",value:function(e){rY.jB(this._overwriteOptions,e,!0),(0,Qz.Z)((0,Xz.Z)(n.prototype),"updateOptions",this).call(this,this._overwriteOptions)}}]),n}(mB.Gm);uY=aY([sY(3,oW.TG),sY(4,fz.$),sY(5,jz.H),sY(6,kB.i6),sY(7,$B.XE),sY(8,AW.lT),sY(9,oY.F)],uY);var lY=n(2523),cY=n(12394),dY=new MV.Il(new MV.VS(0,122,204)),hY={showArrow:!0,showFrame:!0,className:"",frameColor:dY,arrowColor:dY,keepEditorSelection:!1},fY=function(){function e(t,n,i,r,o,a){(0,X.Z)(this,e),this.id="",this.domNode=t,this.afterLineNumber=n,this.afterColumn=i,this.heightInLines=r,this._onDomNodeTop=o,this._onComputedHeight=a}return(0,J.Z)(e,[{key:"onDomNodeTop",value:function(e){this._onDomNodeTop(e)}},{key:"onComputedHeight",value:function(e){this._onComputedHeight(e)}}]),e}(),pY=function(){function e(t,n){(0,X.Z)(this,e),this._id=t,this._domNode=n}return(0,J.Z)(e,[{key:"getId",value:function(){return this._id}},{key:"getDomNode",value:function(){return this._domNode}},{key:"getPosition",value:function(){return null}}]),e}(),gY=function(){function e(t){(0,X.Z)(this,e),this._editor=t,this._ruleName=e._IdGenerator.nextId(),this._decorations=[],this._color=null,this._height=-1}return(0,J.Z)(e,[{key:"dispose",value:function(){this.hide(),aW.removeCSSRulesContainingSelector(this._ruleName)}},{key:"color",set:function(e){this._color!==e&&(this._color=e,this._updateStyle())}},{key:"height",set:function(e){this._height!==e&&(this._height=e,this._updateStyle())}},{key:"_updateStyle",value:function(){aW.removeCSSRulesContainingSelector(this._ruleName),aW.createCSSRule(".monaco-editor ".concat(this._ruleName),"border-style: solid; border-color: transparent; border-bottom-color: ".concat(this._color,"; border-width: ").concat(this._height,"px; bottom: -").concat(this._height,"px; margin-left: -").concat(this._height,"px; "))}},{key:"show",value:function(e){this._decorations=this._editor.deltaDecorations(this._decorations,[{range:YB.e.fromPositions(e),options:{className:this._ruleName,stickiness:1}}])}},{key:"hide",value:function(){this._editor.deltaDecorations(this._decorations,[])}}]),e}();gY._IdGenerator=new cY.R(".arrow-decoration-");var vY=function(){function e(t){var n=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,X.Z)(this,e),this._arrow=null,this._overlayWidget=null,this._resizeSash=null,this._positionMarkerId=[],this._viewZone=null,this._disposables=new WB.SL,this.container=null,this._isShowing=!1,this.editor=t,this.options=rY.I8(i),rY.jB(this.options,hY,!1),this.domNode=document.createElement("div"),this.options.isAccessible||(this.domNode.setAttribute("aria-hidden","true"),this.domNode.setAttribute("role","presentation")),this._disposables.add(this.editor.onDidLayoutChange((function(e){var t=n._getWidth(e);n.domNode.style.width=t+"px",n.domNode.style.left=n._getLeft(e)+"px",n._onWidth(t)})))}return(0,J.Z)(e,[{key:"dispose",value:function(){var e=this;this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._viewZone&&this.editor.changeViewZones((function(t){e._viewZone&&t.removeZone(e._viewZone.id),e._viewZone=null})),this.editor.deltaDecorations(this._positionMarkerId,[]),this._positionMarkerId=[],this._disposables.dispose()}},{key:"create",value:function(){this.domNode.classList.add("zone-widget"),this.options.className&&this.domNode.classList.add(this.options.className),this.container=document.createElement("div"),this.container.classList.add("zone-widget-container"),this.domNode.appendChild(this.container),this.options.showArrow&&(this._arrow=new gY(this.editor),this._disposables.add(this._arrow)),this._fillContainer(this.container),this._initSash(),this._applyStyles()}},{key:"style",value:function(e){e.frameColor&&(this.options.frameColor=e.frameColor),e.arrowColor&&(this.options.arrowColor=e.arrowColor),this._applyStyles()}},{key:"_applyStyles",value:function(){if(this.container&&this.options.frameColor){var e=this.options.frameColor.toString();this.container.style.borderTopColor=e,this.container.style.borderBottomColor=e}if(this._arrow&&this.options.arrowColor){var t=this.options.arrowColor.toString();this._arrow.color=t}}},{key:"_getWidth",value:function(e){return e.width-e.minimap.minimapWidth-e.verticalScrollbarWidth}},{key:"_getLeft",value:function(e){return e.minimap.minimapWidth>0&&0===e.minimap.minimapLeft?e.minimap.minimapWidth:0}},{key:"_onViewZoneTop",value:function(e){this.domNode.style.top=e+"px"}},{key:"_onViewZoneHeight",value:function(e){if(this.domNode.style.height="".concat(e,"px"),this.container){var t=e-this._decoratingElementsHeight();this.container.style.height="".concat(t,"px");var n=this.editor.getLayoutInfo();this._doLayout(t,this._getWidth(n))}this._resizeSash&&this._resizeSash.layout()}},{key:"position",get:function(){var e=(0,ne.Z)(this._positionMarkerId,1)[0];if(e){var t=this.editor.getModel();if(t){var n=t.getDecorationRange(e);if(n)return n.getStartPosition()}}}},{key:"show",value:function(e,t){var n=YB.e.isIRange(e)?YB.e.lift(e):YB.e.fromPositions(e);this._isShowing=!0,this._showImpl(n,t),this._isShowing=!1,this._positionMarkerId=this.editor.deltaDecorations(this._positionMarkerId,[{range:n,options:KB.qx.EMPTY}])}},{key:"hide",value:function(){var e=this;this._viewZone&&(this.editor.changeViewZones((function(t){e._viewZone&&t.removeZone(e._viewZone.id)})),this._viewZone=null),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._arrow&&this._arrow.hide()}},{key:"_decoratingElementsHeight",value:function(){var e=this.editor.getOption(55),t=0;this.options.showArrow&&(t+=2*Math.round(e/3));this.options.showFrame&&(t+=2*Math.round(e/9));return t}},{key:"_showImpl",value:function(e,t){var n=this,i=e.getStartPosition(),r=this.editor.getLayoutInfo(),o=this._getWidth(r);this.domNode.style.width="".concat(o,"px"),this.domNode.style.left=this._getLeft(r)+"px";var a=document.createElement("div");a.style.overflow="hidden";var s=this.editor.getOption(55),u=Math.max(12,this.editor.getLayoutInfo().height/s*.8);t=Math.min(t,u);var l=0,c=0;if(this._arrow&&this.options.showArrow&&(l=Math.round(s/3),this._arrow.height=l,this._arrow.show(i)),this.options.showFrame&&(c=Math.round(s/9)),this.editor.changeViewZones((function(e){n._viewZone&&e.removeZone(n._viewZone.id),n._overlayWidget&&(n.editor.removeOverlayWidget(n._overlayWidget),n._overlayWidget=null),n.domNode.style.top="-1000px",n._viewZone=new fY(a,i.lineNumber,i.column,t,(function(e){return n._onViewZoneTop(e)}),(function(e){return n._onViewZoneHeight(e)})),n._viewZone.id=e.addZone(n._viewZone),n._overlayWidget=new pY("vs.editor.contrib.zoneWidget"+n._viewZone.id,n.domNode),n.editor.addOverlayWidget(n._overlayWidget)})),this.container&&this.options.showFrame){var d=this.options.frameWidth?this.options.frameWidth:c;this.container.style.borderTopWidth=d+"px",this.container.style.borderBottomWidth=d+"px"}var h=t*s-this._decoratingElementsHeight();this.container&&(this.container.style.top=l+"px",this.container.style.height=h+"px",this.container.style.overflow="hidden"),this._doLayout(h,o),this.options.keepEditorSelection||this.editor.setSelection(e);var f=this.editor.getModel();if(f){var p=e.endLineNumber+1;p<=f.getLineCount()?this.revealLine(p,!1):this.revealLine(f.getLineCount(),!0)}}},{key:"revealLine",value:function(e,t){t?this.editor.revealLineInCenter(e,0):this.editor.revealLine(e,0)}},{key:"setCssClass",value:function(e,t){this.container&&(t&&this.container.classList.remove(t),this.container.classList.add(e))}},{key:"_onWidth",value:function(e){}},{key:"_doLayout",value:function(e,t){}},{key:"_relayout",value:function(e){var t=this;this._viewZone&&this._viewZone.heightInLines!==e&&this.editor.changeViewZones((function(n){t._viewZone&&(t._viewZone.heightInLines=e,n.layoutZone(t._viewZone.id))}))}},{key:"_initSash",value:function(){var e,t=this;this._resizeSash||(this._resizeSash=this._disposables.add(new lY.g(this.domNode,this,{orientation:1})),this.options.isResizeable||(this._resizeSash.hide(),this._resizeSash.state=0),this._disposables.add(this._resizeSash.onDidStart((function(n){t._viewZone&&(e={startY:n.startY,heightInLines:t._viewZone.heightInLines})}))),this._disposables.add(this._resizeSash.onDidEnd((function(){e=void 0}))),this._disposables.add(this._resizeSash.onDidChange((function(n){if(e){var i=(n.currentY-e.startY)/t.editor.getOption(55),r=i<0?Math.ceil(i):Math.floor(i),o=e.heightInLines+r;o>5&&o<35&&t._relayout(o)}}))))}},{key:"getHorizontalSashLeft",value:function(){return 0}},{key:"getHorizontalSashTop",value:function(){return(null===this.domNode.style.height?0:parseInt(this.domNode.style.height))-this._decoratingElementsHeight()/2}},{key:"getHorizontalSashWidth",value:function(){var e=this.editor.getLayoutInfo();return e.width-e.minimap.minimapWidth}}]),e}(),mY=n(61680),_Y=n(85733),yY=n(84039),bY=n(31737),wY=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,e,i))._actions=[],r._contextMenuProvider=i.contextMenuProvider,r.actions=i.actions||[],r.actionProvider=i.actionProvider,r.menuClassName=i.menuClassName||"",r.menuAsChild=!!i.menuAsChild,r}return(0,J.Z)(n,[{key:"menuOptions",get:function(){return this._menuOptions},set:function(e){this._menuOptions=e}},{key:"actions",get:function(){return this.actionProvider?this.actionProvider.getActions():this._actions},set:function(e){this._actions=e}},{key:"show",value:function(){var e=this;(0,Qz.Z)((0,Xz.Z)(n.prototype),"show",this).call(this),this.element.classList.add("active"),this._contextMenuProvider.showContextMenu({getAnchor:function(){return e.element},getActions:function(){return e.actions},getActionsContext:function(){return e.menuOptions?e.menuOptions.context:null},getActionViewItem:function(t){return e.menuOptions&&e.menuOptions.actionViewItemProvider?e.menuOptions.actionViewItemProvider(t):void 0},getKeyBinding:function(t){return e.menuOptions&&e.menuOptions.getKeyBinding?e.menuOptions.getKeyBinding(t):void 0},getMenuClassName:function(){return e.menuClassName},onHide:function(){return e.onHide()},actionRunner:this.menuOptions?this.menuOptions.actionRunner:void 0,anchorAlignment:this.menuOptions?this.menuOptions.anchorAlignment:0,domForShadowRoot:this.menuAsChild?this.element:void 0})}},{key:"hide",value:function(){(0,Qz.Z)((0,Xz.Z)(n.prototype),"hide",this).call(this)}},{key:"onHide",value:function(){this.hide(),this.element.classList.remove("active")}}]),n}(function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;(0,X.Z)(this,n),(r=t.call(this))._onDidChangeVisibility=new _W.Q5,r.onDidChangeVisibility=r._onDidChangeVisibility.event,r._element=(0,aW.append)(e,(0,aW.$)(".monaco-dropdown")),r._label=(0,aW.append)(r._element,(0,aW.$)(".dropdown-label"));var o=i.labelRenderer;o||(o=function(e){return e.textContent=i.label||"",null});for(var a=0,s=[aW.EventType.CLICK,aW.EventType.MOUSE_DOWN,yW.t.Tap];a<s.length;a++){var u=s[a];r._register((0,aW.addDisposableListener)(r.element,u,(function(e){return aW.EventHelper.stop(e,!0)})))}for(var l=0,c=[aW.EventType.MOUSE_DOWN,yW.t.Tap];l<c.length;l++){var d=c[l];r._register((0,aW.addDisposableListener)(r._label,d,(function(e){e instanceof MouseEvent&&e.detail>1||(r.visible?r.hide():r.show())})))}r._register((0,aW.addDisposableListener)(r._label,aW.EventType.KEY_UP,(function(e){var t=new bY.y(e);(t.equals(3)||t.equals(10))&&(aW.EventHelper.stop(e,!0),r.visible?r.hide():r.show())})));var h=o(r._label);return h&&r._register(h),r._register(yW.o.addTarget(r._label)),r}return(0,J.Z)(n,[{key:"element",get:function(){return this._element}},{key:"show",value:function(){this.visible||(this.visible=!0,this._onDidChangeVisibility.fire(!0))}},{key:"hide",value:function(){this.visible&&(this.visible=!1,this._onDidChangeVisibility.fire(!1))}},{key:"dispose",value:function(){(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this),this.hide(),this.boxContainer&&(this.boxContainer.remove(),this.boxContainer=void 0),this.contents&&(this.contents.remove(),this.contents=void 0),this._label&&(this._label.remove(),this._label=void 0)}}]),n}(sW.Wi)),CY=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Object.create(null);return(0,X.Z)(this,n),(o=t.call(this,null,e,a)).actionItem=null,o._onDidChangeVisibility=o._register(new _W.Q5),o.menuActionsOrProvider=i,o.contextMenuProvider=r,o.options=a,o.options.actionRunner&&(o.actionRunner=o.options.actionRunner),o}return(0,J.Z)(n,[{key:"render",value:function(e){var t=this;this.actionItem=e;var n=Array.isArray(this.menuActionsOrProvider),i={contextMenuProvider:this.contextMenuProvider,labelRenderer:function(e){var n;t.element=(0,aW.append)(e,(0,aW.$)("a.action-label"));var i=[];return"string"===typeof t.options.classNames?i=t.options.classNames.split(/\s+/g).filter((function(e){return!!e})):t.options.classNames&&(i=t.options.classNames),i.find((function(e){return"icon"===e}))||i.push("codicon"),(n=t.element.classList).add.apply(n,(0,Ct.Z)(i)),t.element.setAttribute("role","button"),t.element.setAttribute("aria-haspopup","true"),t.element.setAttribute("aria-expanded","false"),t.element.title=t._action.label||"",null},menuAsChild:this.options.menuAsChild,actions:n?this.menuActionsOrProvider:void 0,actionProvider:n?void 0:this.menuActionsOrProvider};if(this.dropdownMenu=this._register(new wY(e,i)),this._register(this.dropdownMenu.onDidChangeVisibility((function(e){var n;null===(n=t.element)||void 0===n||n.setAttribute("aria-expanded","".concat(e)),t._onDidChangeVisibility.fire(e)}))),this.dropdownMenu.menuOptions={actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,getKeyBinding:this.options.keybindingProvider,context:this._context},this.options.anchorAlignmentProvider){var r=this;this.dropdownMenu.menuOptions=Object.assign(Object.assign({},this.dropdownMenu.menuOptions),{get anchorAlignment(){return r.options.anchorAlignmentProvider()}})}this.updateEnabled()}},{key:"setActionContext",value:function(e){(0,Qz.Z)((0,Xz.Z)(n.prototype),"setActionContext",this).call(this,e),this.dropdownMenu&&(this.dropdownMenu.menuOptions?this.dropdownMenu.menuOptions.context=e:this.dropdownMenu.menuOptions={context:e})}},{key:"updateEnabled",value:function(){var e,t,n=!this.getAction().enabled;null===(e=this.actionItem)||void 0===e||e.classList.toggle("disabled",n),null===(t=this.element)||void 0===t||t.classList.toggle("disabled",n)}}]),n}(yY.Y),kY=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},SY=function(e,t){return function(n,i){t(n,i,e)}};function xY(e,t,n,i,r,o){var a=e.getActions(t);return function(e,t,n){var i,r,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"navigation",a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:Number.MAX_SAFE_INTEGER,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:function(){return!1};Array.isArray(t)?(i=t,r=t):(i=t.primary,r=t.secondary);var u,l=new Set,c=(0,Na.Z)(e);try{for(c.s();!(u=c.n()).done;){var d=(0,ne.Z)(u.value,2),h=d[0],f=d[1],p=void 0;h===o?p=i:(p=r).length>0&&p.push(new sW.Z0);var g,v=(0,Na.Z)(f);try{for(v.s();!(g=v.n()).done;){var m=g.value;n&&(m=m instanceof QB.U8&&m.alt?m.alt:m);var _=p.push(m);m instanceof sW.wY&&l.add({group:h,action:m,index:_-1})}}catch(N){v.e(N)}finally{v.f()}}}catch(N){c.e(N)}finally{c.f()}var y,b=(0,Na.Z)(l);try{for(b.s();!(y=b.n()).done;){var w=y.value,C=w.group,k=w.action,S=w.index,x=C===o?i:r,L=k.actions;(L.length<=1||x.length+L.length-2<=a)&&s(k,C,x.length)&&x.splice.apply(x,[S,1].concat((0,Ct.Z)(L)))}}catch(N){b.e(N)}finally{b.f()}if(i!==r&&i.length>a){var E,D=i.splice(a,i.length-a);(E=r).unshift.apply(E,(0,Ct.Z)(D).concat([new sW.Z0]))}}(a,n,!1,i,r,o),function(e){var t,n=new WB.SL,i=(0,Na.Z)(e);try{for(i.s();!(t=i.n()).done;){var r,o=(0,ne.Z)(t.value,2)[1],a=(0,Na.Z)(o);try{for(a.s();!(r=a.n()).done;){var s=r.value;n.add(s)}}catch(u){a.e(u)}finally{a.f()}}}catch(u){i.e(u)}finally{i.f()}return n}(a)}var LY=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this,void 0,e,{icon:!(!e.class&&!e.item.icon),label:!e.class&&!e.item.icon}))._keybindingService=i,o._notificationService=r,o._wantsAltCommand=!1,o._itemClassDispose=o._register(new WB.XK),o._altKey=aW.ModifierKeyEmitter.getInstance(),o}return(0,J.Z)(n,[{key:"_menuItemAction",get:function(){return this._action}},{key:"_commandAction",get:function(){return this._wantsAltCommand&&this._menuItemAction.alt||this._menuItemAction}},{key:"onClick",value:function(e){var t=this;e.preventDefault(),e.stopPropagation(),this.actionRunner.run(this._commandAction,this._context).catch((function(e){return t._notificationService.error(e)}))}},{key:"render",value:function(e){var t=this;(0,Qz.Z)((0,Xz.Z)(n.prototype),"render",this).call(this,e),e.classList.add("menu-entry"),this._updateItemClass(this._menuItemAction.item);var i=!1,r=this._altKey.keyStatus.altKey||(dz.ED||dz.IJ)&&this._altKey.keyStatus.shiftKey,o=function(){var e=i&&r;e!==t._wantsAltCommand&&(t._wantsAltCommand=e,t.updateLabel(),t.updateTooltip(),t.updateClass())};this._menuItemAction.alt&&this._register(this._altKey.event((function(e){r=e.altKey||(dz.ED||dz.IJ)&&e.shiftKey,o()}))),this._register((0,mY.jt)(e,"mouseleave")((function(e){i=!1,o()}))),this._register((0,mY.jt)(e,"mouseenter")((function(e){i=!0,o()})))}},{key:"updateLabel",value:function(){this.options.label&&this.label&&(this.label.textContent=this._commandAction.label)}},{key:"updateTooltip",value:function(){if(this.label){var e=this._keybindingService.lookupKeybinding(this._commandAction.id),t=e&&e.getLabel(),n=this._commandAction.tooltip||this._commandAction.label,i=t?(0,yB.N)("titleAndKb","{0} ({1})",n,t):n;if(!this._wantsAltCommand&&this._menuItemAction.alt){var r=this._menuItemAction.alt.tooltip||this._menuItemAction.alt.label,o=this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id),a=o&&o.getLabel(),s=a?(0,yB.N)("titleAndKb","{0} ({1})",r,a):r;i+="\n[".concat(_Y.xo.modifierLabels[dz.OS].altKey,"] ").concat(s)}this.label.title=i}}},{key:"updateClass",value:function(){this.options.icon&&(this._commandAction!==this._menuItemAction?this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.alt.item):this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.item))}},{key:"_updateItemClass",value:function(e){var t;this._itemClassDispose.value=void 0;var n=this.element,i=this.label;if(n&&i){var r=this._commandAction.checked&&(null===(t=e.toggled)||void 0===t?void 0:t.icon)?e.toggled.icon:e.icon;if(r)if($B.kS.isThemeIcon(r)){var o,a=$B.kS.asClassNameArray(r);(o=i.classList).add.apply(o,(0,Ct.Z)(a)),this._itemClassDispose.value=(0,WB.OF)((function(){var e;(e=i.classList).remove.apply(e,(0,Ct.Z)(a))}))}else r.light&&i.style.setProperty("--menu-entry-icon-light",(0,aW.asCSSUrl)(r.light)),r.dark&&i.style.setProperty("--menu-entry-icon-dark",(0,aW.asCSSUrl)(r.dark)),i.classList.add("icon"),this._itemClassDispose.value=(0,WB.OF)((function(){i.classList.remove("icon"),i.style.removeProperty("--menu-entry-icon-light"),i.style.removeProperty("--menu-entry-icon-dark")}))}}}]),n}(yY.g);LY=kY([SY(1,lW.d),SY(2,AW.lT)],LY);var EY=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){return(0,X.Z)(this,n),t.call(this,e,{getActions:function(){return e.actions}},i,{menuAsChild:!0,classNames:$B.kS.isThemeIcon(e.item.icon)?$B.kS.asClassName(e.item.icon):void 0})}return(0,J.Z)(n,[{key:"render",value:function(e){if((0,Qz.Z)((0,Xz.Z)(n.prototype),"render",this).call(this,e),this.element){e.classList.add("menu-entry");var t=this._action.item.icon;t&&!$B.kS.isThemeIcon(t)&&(this.element.classList.add("icon"),t.light&&this.element.style.setProperty("--menu-entry-icon-light",(0,aW.asCSSUrl)(t.light)),t.dark&&this.element.style.setProperty("--menu-entry-icon-dark",(0,aW.asCSSUrl)(t.dark)))}}}]),n}(CY);function DY(e,t){return t instanceof QB.U8?e.createInstance(LY,t):t instanceof QB.NZ?e.createInstance(EY,t):void 0}EY=kY([SY(1,uW.i)],EY);var NY,MY=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},TY=function(e,t){return function(n,i){t(n,i,e)}},IY=(0,oW.yh)("IPeekViewService");(0,pV.z)(IY,function(){function e(){(0,X.Z)(this,e),this._widgets=new Map}return(0,J.Z)(e,[{key:"addExclusiveWidget",value:function(e,t){var n=this,i=this._widgets.get(e);i&&(i.listener.dispose(),i.widget.dispose());this._widgets.set(e,{widget:t,listener:t.onDidClose((function(){var i=n._widgets.get(e);i&&i.widget===t&&(i.listener.dispose(),n._widgets.delete(e))}))})}}]),e}()),function(e){e.inPeekEditor=new kB.uy("inReferenceSearchEditor",!0,yB.N("inReferenceSearchEditor","Whether the current code editor is embedded inside peek")),e.notInPeekEditor=e.inPeekEditor.toNegated()}(NY||(NY={}));var OY=function(){function e(t,n){(0,X.Z)(this,e),t instanceof uY&&NY.inPeekEditor.bindTo(n)}return(0,J.Z)(e,[{key:"dispose",value:function(){}}]),e}();OY.ID="editor.contrib.referenceController",OY=MY([TY(1,kB.i6)],OY),(0,_B._K)(OY.ID,OY);var AY={headerBackgroundColor:MV.Il.white,primaryHeadingColor:MV.Il.fromHex("#333333"),secondaryHeadingColor:MV.Il.fromHex("#6c6c6cb3")},RY=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this,e,i)).instantiationService=r,o._onDidClose=new _W.Q5,o.onDidClose=o._onDidClose.event,rY.jB(o.options,AY,!1),o}return(0,J.Z)(n,[{key:"dispose",value:function(){this.disposed||(this.disposed=!0,(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this),this._onDidClose.fire(this))}},{key:"style",value:function(e){var t=this.options;e.headerBackgroundColor&&(t.headerBackgroundColor=e.headerBackgroundColor),e.primaryHeadingColor&&(t.primaryHeadingColor=e.primaryHeadingColor),e.secondaryHeadingColor&&(t.secondaryHeadingColor=e.secondaryHeadingColor),(0,Qz.Z)((0,Xz.Z)(n.prototype),"style",this).call(this,e)}},{key:"_applyStyles",value:function(){(0,Qz.Z)((0,Xz.Z)(n.prototype),"_applyStyles",this).call(this);var e=this.options;this._headElement&&e.headerBackgroundColor&&(this._headElement.style.backgroundColor=e.headerBackgroundColor.toString()),this._primaryHeading&&e.primaryHeadingColor&&(this._primaryHeading.style.color=e.primaryHeadingColor.toString()),this._secondaryHeading&&e.secondaryHeadingColor&&(this._secondaryHeading.style.color=e.secondaryHeadingColor.toString()),this._bodyElement&&e.frameColor&&(this._bodyElement.style.borderColor=e.frameColor.toString())}},{key:"_fillContainer",value:function(e){this.setCssClass("peekview-widget"),this._headElement=aW.$(".head"),this._bodyElement=aW.$(".body"),this._fillHead(this._headElement),this._fillBody(this._bodyElement),e.appendChild(this._headElement),e.appendChild(this._bodyElement)}},{key:"_fillHead",value:function(e,t){var n=this,i=aW.$(".peekview-title");aW.append(this._headElement,i),aW.addStandardDisposableListener(i,"click",(function(e){return n._onTitleClick(e)})),this._fillTitleIcon(i),this._primaryHeading=aW.$("span.filename"),this._secondaryHeading=aW.$("span.dirname"),this._metaHeading=aW.$("span.meta"),aW.append(i,this._primaryHeading,this._secondaryHeading,this._metaHeading);var r=aW.$(".peekview-actions");aW.append(this._headElement,r);var o=this._getActionBarOptions();this._actionbarWidget=new iY.o(r,o),this._disposables.add(this._actionbarWidget),t||this._actionbarWidget.push(new sW.aU("peekview.close",yB.N("label.close","Close"),bW.lA.close.classNames,!0,(function(){return n.dispose(),Promise.resolve()})),{label:!1,icon:!0})}},{key:"_fillTitleIcon",value:function(e){}},{key:"_getActionBarOptions",value:function(){return{actionViewItemProvider:DY.bind(void 0,this.instantiationService),orientation:0}}},{key:"_onTitleClick",value:function(e){}},{key:"setTitle",value:function(e,t){this._primaryHeading&&this._secondaryHeading&&(this._primaryHeading.innerText=e,this._primaryHeading.setAttribute("aria-label",e),t?this._secondaryHeading.innerText=t:aW.clearNode(this._secondaryHeading))}},{key:"setMetaTitle",value:function(e){this._metaHeading&&(e?(this._metaHeading.innerText=e,aW.show(this._metaHeading)):aW.hide(this._metaHeading))}},{key:"_doLayout",value:function(e,t){if(!this._isShowing&&e<0)this.dispose();else{var n=Math.ceil(1.2*this.editor.getOption(55)),i=Math.round(e-(n+2));this._doLayoutHead(n,t),this._doLayoutBody(i,t)}}},{key:"_doLayoutHead",value:function(e,t){this._headElement&&(this._headElement.style.height="".concat(e,"px"),this._headElement.style.lineHeight=this._headElement.style.height)}},{key:"_doLayoutBody",value:function(e,t){this._bodyElement&&(this._bodyElement.style.height="".concat(e,"px"))}}]),n}(vY);RY=MY([TY(2,oW.TG)],RY);var PY,ZY=(0,GB.P6)("peekViewTitle.background",{dark:"#1E1E1E",light:"#FFFFFF",hc:"#0C141F"},yB.N("peekViewTitleBackground","Background color of the peek view title area.")),FY=(0,GB.P6)("peekViewTitleLabel.foreground",{dark:"#FFFFFF",light:"#333333",hc:"#FFFFFF"},yB.N("peekViewTitleForeground","Color of the peek view title.")),jY=(0,GB.P6)("peekViewTitleDescription.foreground",{dark:"#ccccccb3",light:"#616161e6",hc:"#FFFFFF99"},yB.N("peekViewTitleInfoForeground","Color of the peek view title info.")),HY=(0,GB.P6)("peekView.border",{dark:"#007acc",light:"#007acc",hc:GB.lR},yB.N("peekViewBorder","Color of the peek view borders and arrow.")),BY=(0,GB.P6)("peekViewResult.background",{dark:"#252526",light:"#F3F3F3",hc:MV.Il.black},yB.N("peekViewResultsBackground","Background color of the peek view result list.")),zY=(0,GB.P6)("peekViewResult.lineForeground",{dark:"#bbbbbb",light:"#646465",hc:MV.Il.white},yB.N("peekViewResultsMatchForeground","Foreground color for line nodes in the peek view result list.")),WY=(0,GB.P6)("peekViewResult.fileForeground",{dark:MV.Il.white,light:"#1E1E1E",hc:MV.Il.white},yB.N("peekViewResultsFileForeground","Foreground color for file nodes in the peek view result list.")),VY=(0,GB.P6)("peekViewResult.selectionBackground",{dark:"#3399ff33",light:"#3399ff33",hc:null},yB.N("peekViewResultsSelectionBackground","Background color of the selected entry in the peek view result list.")),YY=(0,GB.P6)("peekViewResult.selectionForeground",{dark:MV.Il.white,light:"#6C6C6C",hc:MV.Il.white},yB.N("peekViewResultsSelectionForeground","Foreground color of the selected entry in the peek view result list.")),UY=(0,GB.P6)("peekViewEditor.background",{dark:"#001F33",light:"#F2F8FC",hc:MV.Il.black},yB.N("peekViewEditorBackground","Background color of the peek view editor.")),KY=(0,GB.P6)("peekViewEditorGutter.background",{dark:UY,light:UY,hc:UY},yB.N("peekViewEditorGutterBackground","Background color of the gutter in the peek view editor.")),qY=(0,GB.P6)("peekViewResult.matchHighlightBackground",{dark:"#ea5c004d",light:"#ea5c004d",hc:null},yB.N("peekViewResultsMatchHighlight","Match highlight color in the peek view result list.")),GY=(0,GB.P6)("peekViewEditor.matchHighlightBackground",{dark:"#ff8f0099",light:"#f5d802de",hc:null},yB.N("peekViewEditorMatchHighlight","Match highlight color in the peek view editor.")),$Y=(0,GB.P6)("peekViewEditor.matchHighlightBorder",{dark:null,light:null,hc:GB.xL},yB.N("peekViewEditorMatchHighlightBorder","Match highlight border in the peek view editor.")),QY=n(55046);!function(e){e.className=function(e){switch(e){case QY.Z.Ignore:return"severity-ignore "+bW.lA.info.classNames;case QY.Z.Info:return bW.lA.info.classNames;case QY.Z.Warning:return bW.lA.warning.classNames;case QY.Z.Error:return bW.lA.error.classNames;default:return""}}}(PY||(PY={})),(0,$B.Ic)((function(e,t){var n=e.getColor(GB.Jp);if(n){var i=bW.lA.error.cssSelector;t.addRule("\n\t\t\t.monaco-editor .zone-widget ".concat(i,",\n\t\t\t.markers-panel .marker-icon").concat(i,",\n\t\t\t.extensions-viewlet > .extensions ").concat(i," {\n\t\t\t\tcolor: ").concat(n,";\n\t\t\t}\n\t\t"))}var r=e.getColor(GB.BO);if(r){var o=bW.lA.warning.cssSelector;t.addRule("\n\t\t\t.monaco-editor .zone-widget ".concat(o,",\n\t\t\t.markers-panel .marker-icon").concat(o,",\n\t\t\t.extensions-viewlet > .extensions ").concat(o,",\n\t\t\t.extension-editor ").concat(o," {\n\t\t\t\tcolor: ").concat(r,";\n\t\t\t}\n\t\t"))}var a=e.getColor(GB.OL);if(a){var s=bW.lA.info.cssSelector;t.addRule("\n\t\t\t.monaco-editor .zone-widget ".concat(s,",\n\t\t\t.markers-panel .marker-icon").concat(s,",\n\t\t\t.extensions-viewlet > .extensions ").concat(s,",\n\t\t\t.extension-editor ").concat(s," {\n\t\t\t\tcolor: ").concat(a,";\n\t\t\t}\n\t\t"))}}));var XY=n(5399),JY=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},eU=function(e,t){return function(n,i){t(n,i,e)}},tU=function(){function e(t,n,i,r,o){var a=this;(0,X.Z)(this,e),this._openerService=r,this._labelService=o,this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=new WB.SL,this._editor=n;var s=document.createElement("div");s.className="descriptioncontainer",this._messageBlock=document.createElement("div"),this._messageBlock.classList.add("message"),this._messageBlock.setAttribute("aria-live","assertive"),this._messageBlock.setAttribute("role","alert"),s.appendChild(this._messageBlock),this._relatedBlock=document.createElement("div"),s.appendChild(this._relatedBlock),this._disposables.add(aW.addStandardDisposableListener(this._relatedBlock,"click",(function(e){e.preventDefault();var t=a._relatedDiagnostics.get(e.target);t&&i(t)}))),this._scrollable=new qV.NB(s,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:3,verticalScrollbarSize:3}),t.appendChild(this._scrollable.getDomNode()),this._disposables.add(this._scrollable.onScroll((function(e){s.style.left="-".concat(e.scrollLeft,"px"),s.style.top="-".concat(e.scrollTop,"px")}))),this._disposables.add(this._scrollable)}return(0,J.Z)(e,[{key:"dispose",value:function(){(0,WB.B9)(this._disposables)}},{key:"update",value:function(e){var t=this,n=e.source,i=e.message,r=e.relatedInformation,o=e.code,a=((null===n||void 0===n?void 0:n.length)||0)+"()".length;o&&(a+="string"===typeof o?o.length:o.value.length);var s=(0,Dz.uq)(i);this._lines=s.length,this._longestLineLength=0;var u,l=(0,Na.Z)(s);try{for(l.s();!(u=l.n()).done;){var c=u.value;this._longestLineLength=Math.max(c.length+a,this._longestLineLength)}}catch(D){l.e(D)}finally{l.f()}aW.clearNode(this._messageBlock),this._messageBlock.setAttribute("aria-label",this.getAriaLabel(e)),this._editor.applyFontInfo(this._messageBlock);var d,h=this._messageBlock,f=(0,Na.Z)(s);try{for(f.s();!(d=f.n()).done;){var p=d.value;(h=document.createElement("div")).innerText=p,""===p&&(h.style.height=this._messageBlock.style.lineHeight),this._messageBlock.appendChild(h)}}catch(D){f.e(D)}finally{f.f()}if(n||o){var g=document.createElement("span");if(g.classList.add("details"),h.appendChild(g),n){var v=document.createElement("span");v.innerText=n,v.classList.add("source"),g.appendChild(v)}if(o)if("string"===typeof o){var m=document.createElement("span");m.innerText="(".concat(o,")"),m.classList.add("code"),g.appendChild(m)}else{this._codeLink=aW.$("a.code-link"),this._codeLink.setAttribute("href","".concat(o.target.toString())),this._codeLink.onclick=function(e){t._openerService.open(o.target,{allowCommands:!0}),e.preventDefault(),e.stopPropagation()},aW.append(this._codeLink,aW.$("span")).innerText=o.value,g.appendChild(this._codeLink)}}if(aW.clearNode(this._relatedBlock),this._editor.applyFontInfo(this._relatedBlock),(0,SB.Of)(r)){var _=this._relatedBlock.appendChild(document.createElement("div"));_.style.paddingTop="".concat(Math.floor(.66*this._editor.getOption(55)),"px"),this._lines+=1;var y,b=(0,Na.Z)(r);try{for(b.s();!(y=b.n()).done;){var w=y.value,C=document.createElement("div"),k=document.createElement("a");k.classList.add("filename"),k.innerText="".concat(tY(w.resource),"(").concat(w.startLineNumber,", ").concat(w.startColumn,"): "),k.title=this._labelService.getUriLabel(w.resource),this._relatedDiagnostics.set(k,w);var S=document.createElement("span");S.innerText=w.message,C.appendChild(k),C.appendChild(S),this._lines+=1,_.appendChild(C)}}catch(D){b.e(D)}finally{b.f()}}var x=this._editor.getOption(40),L=Math.ceil(x.typicalFullwidthCharacterWidth*this._longestLineLength*.75),E=x.lineHeight*this._lines;this._scrollable.setScrollDimensions({scrollWidth:L,scrollHeight:E})}},{key:"layout",value:function(e,t){this._scrollable.getDomNode().style.height="".concat(e,"px"),this._scrollable.getDomNode().style.width="".concat(t,"px"),this._scrollable.setScrollDimensions({width:t,height:e})}},{key:"getHeightInLines",value:function(){return Math.min(17,this._lines)}},{key:"getAriaLabel",value:function(e){var t="";switch(e.severity){case OW.ZL.Error:t=yB.N("Error","Error");break;case OW.ZL.Warning:t=yB.N("Warning","Warning");break;case OW.ZL.Info:t=yB.N("Info","Info");break;case OW.ZL.Hint:t=yB.N("Hint","Hint")}var n=yB.N("marker aria","{0} at {1}. ",t,e.startLineNumber+":"+e.startColumn),i=this._editor.getModel();if(i&&e.startLineNumber<=i.getLineCount()&&e.startLineNumber>=1){var r=i.getLineContent(e.startLineNumber);n="".concat(r,", ").concat(n)}return n}}]),e}(),nU=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o,a,s,u){var l;return(0,X.Z)(this,n),(l=t.call(this,e,{showArrow:!0,showFrame:!0,isAccessible:!0},a))._themeService=i,l._openerService=r,l._menuService=o,l._contextKeyService=s,l._labelService=u,l._callOnDispose=new WB.SL,l._onDidSelectRelatedInformation=new _W.Q5,l.onDidSelectRelatedInformation=l._onDidSelectRelatedInformation.event,l._severity=OW.ZL.Warning,l._backgroundColor=MV.Il.white,l._applyTheme(i.getColorTheme()),l._callOnDispose.add(i.onDidColorThemeChange(l._applyTheme.bind((0,Br.Z)(l)))),l.create(),l}return(0,J.Z)(n,[{key:"_applyTheme",value:function(e){this._backgroundColor=e.getColor(lU);var t=aU;this._severity===OW.ZL.Warning?t=sU:this._severity===OW.ZL.Info&&(t=uU);var n=e.getColor(t);this.style({arrowColor:n,frameColor:n,headerBackgroundColor:this._backgroundColor,primaryHeadingColor:e.getColor(FY),secondaryHeadingColor:e.getColor(jY)})}},{key:"_applyStyles",value:function(){this._parentContainer&&(this._parentContainer.style.backgroundColor=this._backgroundColor?this._backgroundColor.toString():""),(0,Qz.Z)((0,Xz.Z)(n.prototype),"_applyStyles",this).call(this)}},{key:"dispose",value:function(){this._callOnDispose.dispose(),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"_fillHead",value:function(e){var t=this;(0,Qz.Z)((0,Xz.Z)(n.prototype),"_fillHead",this).call(this,e),this._disposables.add(this._actionbarWidget.actionRunner.onBeforeRun((function(e){return t.editor.focus()})));var i=[],r=this._menuService.createMenu(n.TitleMenu,this._contextKeyService);xY(r,void 0,i),this._actionbarWidget.push(i,{label:!1,icon:!0,index:0}),r.dispose()}},{key:"_fillTitleIcon",value:function(e){this._icon=aW.append(e,aW.$(""))}},{key:"_fillBody",value:function(e){var t=this;this._parentContainer=e,e.classList.add("marker-widget"),this._parentContainer.tabIndex=0,this._parentContainer.setAttribute("role","tooltip"),this._container=document.createElement("div"),e.appendChild(this._container),this._message=new tU(this._container,this.editor,(function(e){return t._onDidSelectRelatedInformation.fire(e)}),this._openerService,this._labelService),this._disposables.add(this._message)}},{key:"show",value:function(){throw new Error("call showAtMarker")}},{key:"showAtMarker",value:function(e,t,i){this._container.classList.remove("stale"),this._message.update(e),this._severity=e.severity,this._applyTheme(this._themeService.getColorTheme());var r=YB.e.lift(e),o=this.editor.getPosition(),a=o&&r.containsPosition(o)?o:r.getStartPosition();(0,Qz.Z)((0,Xz.Z)(n.prototype),"show",this).call(this,a,this.computeRequiredHeight());var s=this.editor.getModel();if(s){var u=i>1?yB.N("problems","{0} of {1} problems",t,i):yB.N("change","{0} of {1} problem",t,i);this.setTitle((0,PW.EZ)(s.uri),u)}this._icon.className="codicon ".concat(PY.className(OW.ZL.toSeverity(this._severity))),this.editor.revealPositionNearTop(a,0),this.editor.focus()}},{key:"updateMarker",value:function(e){this._container.classList.remove("stale"),this._message.update(e)}},{key:"showStale",value:function(){this._container.classList.add("stale"),this._relayout()}},{key:"_doLayoutBody",value:function(e,t){(0,Qz.Z)((0,Xz.Z)(n.prototype),"_doLayoutBody",this).call(this,e,t),this._heightInPixel=e,this._message.layout(e,t),this._container.style.height="".concat(e,"px")}},{key:"_onWidth",value:function(e){this._message.layout(this._heightInPixel,e)}},{key:"_relayout",value:function(){(0,Qz.Z)((0,Xz.Z)(n.prototype),"_relayout",this).call(this,this.computeRequiredHeight())}},{key:"computeRequiredHeight",value:function(){return 3+this._message.getHeightInLines()}}]),n}(RY);nU.TitleMenu=new QB.eH("gotoErrorTitleMenu"),nU=JY([eU(1,$B.XE),eU(2,XV.v4),eU(3,QB.co),eU(4,oW.TG),eU(5,kB.i6),eU(6,XY.e)],nU);var iU=(0,GB.kw)(GB.lX,GB.b6),rU=(0,GB.kw)(GB.uo,GB.pW),oU=(0,GB.kw)(GB.c6,GB.T8),aU=(0,GB.P6)("editorMarkerNavigationError.background",{dark:iU,light:iU,hc:iU},yB.N("editorMarkerNavigationError","Editor marker navigation widget error color.")),sU=(0,GB.P6)("editorMarkerNavigationWarning.background",{dark:rU,light:rU,hc:rU},yB.N("editorMarkerNavigationWarning","Editor marker navigation widget warning color.")),uU=(0,GB.P6)("editorMarkerNavigationInfo.background",{dark:oU,light:oU,hc:oU},yB.N("editorMarkerNavigationInfo","Editor marker navigation widget info color.")),lU=(0,GB.P6)("editorMarkerNavigation.background",{dark:"#2D2D30",light:MV.Il.white,hc:"#0C141F"},yB.N("editorMarkerNavigationBackground","Editor marker navigation widget background."));(0,$B.Ic)((function(e,t){var n=e.getColor(GB.ur);n&&(t.addRule(".monaco-editor .marker-widget a { color: ".concat(n,"; }")),t.addRule(".monaco-editor .marker-widget a.code-link span:hover { color: ".concat(n,"; }")))}));var cU=n(28214),dU=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},hU=function(e,t){return function(n,i){t(n,i,e)}},fU=(0,J.Z)((function e(t,n,i){(0,X.Z)(this,e),this.marker=t,this.index=n,this.total=i})),pU=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this._markerService=n,this._onDidChange=new _W.Q5,this.onDidChange=this._onDidChange.event,this._dispoables=new WB.SL,this._markers=[],this._nextIdx=-1,Mz.o.isUri(t)?this._resourceFilter=function(e){return e.toString()===t.toString()}:t&&(this._resourceFilter=t);var r=function(){i._markers=i._markerService.read({resource:Mz.o.isUri(t)?t:void 0,severities:OW.ZL.Error|OW.ZL.Warning|OW.ZL.Info}),"function"===typeof t&&(i._markers=i._markers.filter((function(e){return i._resourceFilter(e.resource)}))),i._markers.sort(e._compareMarker)};r(),this._dispoables.add(n.onMarkerChanged((function(e){i._resourceFilter&&!e.some((function(e){return i._resourceFilter(e)}))||(r(),i._nextIdx=-1,i._onDidChange.fire())})))}return(0,J.Z)(e,[{key:"dispose",value:function(){this._dispoables.dispose(),this._onDidChange.dispose()}},{key:"matches",value:function(e){return!this._resourceFilter&&!e||!(!this._resourceFilter||!e)&&this._resourceFilter(e)}},{key:"selected",get:function(){var e=this._markers[this._nextIdx];return e&&new fU(e,this._nextIdx+1,this._markers.length)}},{key:"_initIdx",value:function(e,t,n){var i=!1,r=this._markers.findIndex((function(t){return t.resource.toString()===e.uri.toString()}));r<0&&(r=(0,SB.ry)(this._markers,{resource:e.uri},(function(e,t){return(0,Dz.qu)(e.resource.toString(),t.resource.toString())})),r<0&&(r=~r));for(var o=r;o<this._markers.length;o++){var a=YB.e.lift(this._markers[o]);if(a.isEmpty()){var s=e.getWordAtPosition(a.getStartPosition());s&&(a=new YB.e(a.startLineNumber,s.startColumn,a.startLineNumber,s.endColumn))}if(t&&(a.containsPosition(t)||t.isBeforeOrEqual(a.getStartPosition()))){this._nextIdx=o,i=!0;break}if(this._markers[o].resource.toString()!==e.uri.toString())break}i||(this._nextIdx=n?0:this._markers.length-1),this._nextIdx<0&&(this._nextIdx=this._markers.length-1)}},{key:"resetIndex",value:function(){this._nextIdx=-1}},{key:"move",value:function(e,t,n){if(0===this._markers.length)return!1;var i=this._nextIdx;return-1===this._nextIdx?this._initIdx(t,n,e):e?this._nextIdx=(this._nextIdx+1)%this._markers.length:e||(this._nextIdx=(this._nextIdx-1+this._markers.length)%this._markers.length),i!==this._nextIdx}},{key:"find",value:function(e,t){var n=this._markers.findIndex((function(t){return t.resource.toString()===e.toString()}));if(!(n<0))for(;n<this._markers.length;n++)if(YB.e.containsPosition(this._markers[n],t))return new fU(this._markers[n],n+1,this._markers.length)}}],[{key:"_compareMarker",value:function(e,t){var n=(0,Dz.qu)(e.resource.toString(),t.resource.toString());return 0===n&&(n=OW.ZL.compare(e.severity,t.severity)),0===n&&(n=YB.e.compareRangesUsingStarts(e,t)),n}}]),e}();pU=dU([hU(1,OW.lT)],pU);var gU=(0,oW.yh)("IMarkerNavigationService"),vU=function(){function e(t){(0,X.Z)(this,e),this._markerService=t,this._provider=new cU.S}return(0,J.Z)(e,[{key:"getMarkerList",value:function(e){var t,n=(0,Na.Z)(this._provider);try{for(n.s();!(t=n.n()).done;){var i=t.value.getMarkerList(e);if(i)return i}}catch(r){n.e(r)}finally{n.f()}return new pU(e,this._markerService)}}]),e}();vU=dU([hU(0,OW.lT)],vU),(0,pV.z)(gU,vU,!0);var mU=n(62239),_U=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},yU=function(e,t){return function(n,i){t(n,i,e)}},bU=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},wU=function(){function e(t,n,i,r,o){(0,X.Z)(this,e),this._markerNavigationService=n,this._contextKeyService=i,this._editorService=r,this._instantiationService=o,this._sessionDispoables=new WB.SL,this._editor=t,this._widgetVisible=EU.bindTo(this._contextKeyService)}return(0,J.Z)(e,[{key:"dispose",value:function(){this._cleanUp(),this._sessionDispoables.dispose()}},{key:"_cleanUp",value:function(){this._widgetVisible.reset(),this._sessionDispoables.clear(),this._widget=void 0,this._model=void 0}},{key:"_getOrCreateModel",value:function(e){var t=this;if(this._model&&this._model.matches(e))return this._model;var n=!1;return this._model&&(n=!0,this._cleanUp()),this._model=this._markerNavigationService.getMarkerList(e),n&&this._model.move(!0,this._editor.getModel(),this._editor.getPosition()),this._widget=this._instantiationService.createInstance(nU,this._editor),this._widget.onDidClose((function(){return t.close()}),this,this._sessionDispoables),this._widgetVisible.set(!0),this._sessionDispoables.add(this._model),this._sessionDispoables.add(this._widget),this._sessionDispoables.add(this._editor.onDidChangeCursorPosition((function(e){var n,i,r;(null===(n=t._model)||void 0===n?void 0:n.selected)&&YB.e.containsPosition(null===(i=t._model)||void 0===i?void 0:i.selected.marker,e.position)||null===(r=t._model)||void 0===r||r.resetIndex()}))),this._sessionDispoables.add(this._model.onDidChange((function(){if(t._widget&&t._widget.position&&t._model){var e=t._model.find(t._editor.getModel().uri,t._widget.position);e?t._widget.updateMarker(e.marker):t._widget.showStale()}}))),this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation((function(e){t._editorService.openCodeEditor({resource:e.resource,options:{pinned:!0,revealIfOpened:!0,selection:YB.e.lift(e).collapseToStart()}},t._editor),t.close(!1)}))),this._sessionDispoables.add(this._editor.onDidChangeModel((function(){return t._cleanUp()}))),this._model}},{key:"close",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._cleanUp(),e&&this._editor.focus()}},{key:"showAtMarker",value:function(e){if(this._editor.hasModel()){var t=this._getOrCreateModel(this._editor.getModel().uri);t.resetIndex(),t.move(!0,this._editor.getModel(),new VB.L(e.startLineNumber,e.startColumn)),t.selected&&this._widget.showAtMarker(t.selected.marker,t.selected.index,t.selected.total)}}},{key:"nagivate",value:function(t,n){return bU(this,void 0,void 0,fn().mark((function i(){var r,o;return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(!this._editor.hasModel()){i.next=14;break}if((r=this._getOrCreateModel(n?void 0:this._editor.getModel().uri)).move(t,this._editor.getModel(),this._editor.getPosition()),r.selected){i.next=5;break}return i.abrupt("return");case 5:if(r.selected.marker.resource.toString()===this._editor.getModel().uri.toString()){i.next=13;break}return this._cleanUp(),i.next=9,this._editorService.openCodeEditor({resource:r.selected.marker.resource,options:{pinned:!1,revealIfOpened:!0,selectionRevealType:2,selection:r.selected.marker}},this._editor);case 9:(o=i.sent)&&(e.get(o).close(),e.get(o).nagivate(t,n)),i.next=14;break;case 13:this._widget.showAtMarker(r.selected.marker,r.selected.index,r.selected.total);case 14:case"end":return i.stop()}}),i,this)})))}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();wU.ID="editor.contrib.markerController",wU=_U([yU(1,gU),yU(2,kB.i6),yU(3,fz.$),yU(4,oW.TG)],wU);var CU=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this,r))._next=e,o._multiFile=i,o}return(0,J.Z)(n,[{key:"run",value:function(e,t){return bU(this,void 0,void 0,fn().mark((function e(){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.hasModel()&&wU.get(t).nagivate(this._next,this._multiFile);case 1:case"end":return e.stop()}}),e,this)})))}}]),n}(_B.R6),kU=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!0,!1,{id:n.ID,label:n.LABEL,alias:"Go to Next Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:578,weight:100},menuOpts:{menuId:nU.TitleMenu,title:n.LABEL,icon:(0,mU.q5)("marker-navigation-next",bW.lA.chevronDown,yB.N("nextMarkerIcon","Icon for goto next marker.")),group:"navigation",order:1}})}return(0,J.Z)(n)}(CU);kU.ID="editor.action.marker.next",kU.LABEL=yB.N("markerAction.next.label","Go to Next Problem (Error, Warning, Info)");var SU=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!1,!1,{id:n.ID,label:n.LABEL,alias:"Go to Previous Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:1602,weight:100},menuOpts:{menuId:nU.TitleMenu,title:kU.LABEL,icon:(0,mU.q5)("marker-navigation-previous",bW.lA.chevronUp,yB.N("previousMarkerIcon","Icon for goto previous marker.")),group:"navigation",order:2}})}return(0,J.Z)(n)}(CU);SU.ID="editor.action.marker.prev",SU.LABEL=yB.N("markerAction.previous.label","Go to Previous Problem (Error, Warning, Info)");var xU=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!0,!0,{id:"editor.action.marker.nextInFiles",label:yB.N("markerAction.nextInFiles.label","Go to Next Problem in Files (Error, Warning, Info)"),alias:"Go to Next Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:66,weight:100},menuOpts:{menuId:QB.eH.MenubarGoMenu,title:yB.N({key:"miGotoNextProblem",comment:["&& denotes a mnemonic"]},"Next &&Problem"),group:"6_problem_nav",order:1}})}return(0,J.Z)(n)}(CU),LU=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!1,!0,{id:"editor.action.marker.prevInFiles",label:yB.N("markerAction.previousInFiles.label","Go to Previous Problem in Files (Error, Warning, Info)"),alias:"Go to Previous Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:1090,weight:100},menuOpts:{menuId:QB.eH.MenubarGoMenu,title:yB.N({key:"miGotoPreviousProblem",comment:["&& denotes a mnemonic"]},"Previous &&Problem"),group:"6_problem_nav",order:2}})}return(0,J.Z)(n)}(CU);(0,_B._K)(wU.ID,wU),(0,_B.Qr)(kU),(0,_B.Qr)(SU),(0,_B.Qr)(xU),(0,_B.Qr)(LU);var EU=new kB.uy("markersNavigationVisible",!1),DU=_B._l.bindToContribution(wU.get);(0,_B.fK)(new DU({id:"closeMarkersNavigation",precondition:EU,handler:function(e){return e.close()},kbOpts:{weight:150,kbExpr:bB.u.focus,primary:9,secondary:[1033]}}));var NU=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},MU=function(e,t){return function(n,i){t(n,i,e)}},TU=aW.$,IU=function(){function e(t,n){(0,X.Z)(this,e),this.range=t,this.marker=n}return(0,J.Z)(e,[{key:"equals",value:function(t){return t instanceof e&&OW.H0.makeKey(this.marker)===OW.H0.makeKey(t.marker)}}]),e}(),OU={type:1,filter:{include:Az.QuickFix}},AU=function(){function e(t,n,i,r,o){(0,X.Z)(this,e),this._editor=t,this._hover=n,this._markerDecorationsService=i,this._keybindingService=r,this._openerService=o,this.recentMarkerCodeActionsInfo=void 0}return(0,J.Z)(e,[{key:"computeSync",value:function(e,t){if(!this._editor.hasModel())return[];var n,i=this._editor.getModel(),r=e.startLineNumber,o=i.getLineMaxColumn(r),a=[],s=(0,Na.Z)(t);try{for(s.s();!(n=s.n()).done;){var u=n.value,l=u.range.startLineNumber===r?u.range.startColumn:1,c=u.range.endLineNumber===r?u.range.endColumn:o,d=this._markerDecorationsService.getMarker(i.uri,u);if(d){var h=new YB.e(e.startLineNumber,l,e.startLineNumber,c);a.push(new IU(h,d))}}}catch(f){s.e(f)}finally{s.f()}return a}},{key:"renderHoverParts",value:function(e,t){var n=this;if(!e.length)return WB.JT.None;var i=new WB.SL;e.forEach((function(e){return t.appendChild(n.renderMarkerHover(e,i))}));var r=1===e.length?e[0]:e.sort((function(e,t){return OW.ZL.compare(e.marker.severity,t.marker.severity)}))[0];return t.appendChild(this.renderMarkerStatusbar(r,i)),i}},{key:"renderMarkerHover",value:function(e,t){var n=this,i=TU("div.hover-row"),r=aW.append(i,TU("div.marker.hover-contents")),o=e.marker,a=o.source,s=o.message,u=o.code,l=o.relatedInformation;this._editor.applyFontInfo(r);var c=aW.append(r,TU("span"));if(c.style.whiteSpace="pre-wrap",c.innerText=s,a||u)if(u&&"string"!==typeof u){var d=TU("span");if(a)aW.append(d,TU("span")).innerText=a;var h=aW.append(d,TU("a.code-link"));h.setAttribute("href",u.target.toString()),t.add(aW.addDisposableListener(h,"click",(function(e){n._openerService.open(u.target,{allowCommands:!0}),e.preventDefault(),e.stopPropagation()}))),aW.append(h,TU("span")).innerText=u.value;var f=aW.append(r,d);f.style.opacity="0.6",f.style.paddingLeft="6px"}else{var p=aW.append(r,TU("span"));p.style.opacity="0.6",p.style.paddingLeft="6px",p.innerText=a&&u?"".concat(a,"(").concat(u,")"):a||"(".concat(u,")")}if((0,SB.Of)(l)){var g,v=(0,Na.Z)(l);try{var m=function(){var e=g.value,i=e.message,o=e.resource,a=e.startLineNumber,s=e.startColumn,u=aW.append(r,TU("div"));u.style.marginTop="8px";var l=aW.append(u,TU("a"));l.innerText="".concat((0,PW.EZ)(o),"(").concat(a,", ").concat(s,"): "),l.style.cursor="pointer",t.add(aW.addDisposableListener(l,"click",(function(e){e.stopPropagation(),e.preventDefault(),n._openerService&&n._openerService.open(o,{fromUserGesture:!0,editorOptions:{selection:{startLineNumber:a,startColumn:s}}}).catch(LB.dL)})));var c=aW.append(u,TU("span"));c.innerText=i,n._editor.applyFontInfo(c)};for(v.s();!(g=v.n()).done;)m()}catch(_){v.e(_)}finally{v.f()}}return i}},{key:"renderMarkerStatusbar",value:function(e,t){var n=this,i=TU("div.hover-row.status-bar"),r=aW.append(i,TU("div.actions"));if(e.marker.severity!==OW.ZL.Error&&e.marker.severity!==OW.ZL.Warning&&e.marker.severity!==OW.ZL.Info||t.add(this.renderAction(r,{label:yB.N("view problem","View Problem"),commandId:kU.ID,run:function(){n._hover.hide(),wU.get(n._editor).showAtMarker(e.marker),n._editor.focus()}})),!this._editor.getOption(77)){var o=aW.append(r,TU("div"));this.recentMarkerCodeActionsInfo&&(OW.H0.makeKey(this.recentMarkerCodeActionsInfo.marker)===OW.H0.makeKey(e.marker)?this.recentMarkerCodeActionsInfo.hasCodeActions||(o.textContent=yB.N("noQuickFixes","No quick fixes available")):this.recentMarkerCodeActionsInfo=void 0);var a=this.recentMarkerCodeActionsInfo&&!this.recentMarkerCodeActionsInfo.hasCodeActions?WB.JT.None:t.add((0,zB.Vg)((function(){return o.textContent=yB.N("checkingForQuickFixes","Checking for quick fixes...")}),200));o.textContent||(o.textContent=String.fromCharCode(160));var s=this.getCodeActions(e.marker);t.add((0,WB.OF)((function(){return s.cancel()}))),s.then((function(i){if(a.dispose(),n.recentMarkerCodeActionsInfo={marker:e.marker,hasCodeActions:i.validActions.length>0},!n.recentMarkerCodeActionsInfo.hasCodeActions)return i.dispose(),void(o.textContent=yB.N("noQuickFixes","No quick fixes available"));o.style.display="none";var s=!1;t.add((0,WB.OF)((function(){s||i.dispose()}))),t.add(n.renderAction(r,{label:yB.N("quick fixes","Quick Fix..."),commandId:XW.Id,run:function(e){s=!0;var t=qW.get(n._editor),r=aW.getDomNodePagePosition(e);n._hover.hide(),t.showCodeActions(OU,i,{x:r.left+6,y:r.top+r.height+6})}}))}))}return i}},{key:"renderAction",value:function(e,t){var n=this._keybindingService.lookupKeybinding(t.commandId);return function(e,t,n){var i=aW.append(e,GV("div.action-container")),r=aW.append(i,GV("a.action"));return r.setAttribute("href","#"),r.setAttribute("role","button"),t.iconClass&&aW.append(r,GV("span.icon.".concat(t.iconClass))),aW.append(r,GV("span")).textContent=n?"".concat(t.label," (").concat(n,")"):t.label,aW.addDisposableListener(i,aW.EventType.CLICK,(function(e){e.stopPropagation(),e.preventDefault(),t.run(i)}))}(e,t,n?n.getLabel():null)}},{key:"getCodeActions",value:function(e){var t=this;return(0,zB.PG)((function(n){return Gz(t._editor.getModel(),new YB.e(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),OU,Fz.E.None,n)}))}}]),e}();AU=NU([MU(2,QV.i),MU(3,lW.d),MU(4,XV.v4)],AU);var RU,PU=n(83935),ZU=n(61329);!function e(t,n,i){function r(a,s){if(!n[a]){if(!t[a]){if(o)return o(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[a]={exports:{}};t[a][0].call(l.exports,(function(e){return r(t[a][1][e]||e)}),l,l.exports,e,t,n,i)}return n[a].exports}for(var o=void 0,a=0;a<i.length;a++)r(i[a]);return r}({1:[function(e,t,n){var i=e("./toMap");t.exports={uris:i(["background","base","cite","href","longdesc","src","usemap"])}},{"./toMap":10}],2:[function(e,t,n){t.exports={allowedAttributes:{"*":["title","accesskey"],a:["href","name","target","aria-label"],iframe:["allowfullscreen","frameborder","src"],img:["src","alt","title","aria-label"]},allowedClasses:{},allowedSchemes:["http","https","mailto"],allowedTags:["a","abbr","article","b","blockquote","br","caption","code","del","details","div","em","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","li","main","mark","ol","p","pre","section","span","strike","strong","sub","summary","sup","table","tbody","td","th","thead","tr","u","ul"],filter:null}},{}],3:[function(e,t,n){var i=e("./toMap");t.exports={voids:i(["area","br","col","hr","img","wbr","input","base","basefont","link","meta"])}},{"./toMap":10}],4:[function(e,t,n){e("he");var i=e("assignment"),r=e("./parser"),o=e("./sanitizer"),a=e("./defaults");function s(e,t,n){var s=[],u=!0===n?t:i({},a,t),l=o(s,u);return r(e,l),s.join("")}s.defaults=a,t.exports=s,RU=s},{"./defaults":2,"./parser":7,"./sanitizer":8,assignment:6,he:9}],5:[function(e,t,n){t.exports=function(e){return"string"===typeof e?e.toLowerCase():e}},{}],6:[function(e,t,n){t.exports=function e(t){for(var n,i,r=Array.prototype.slice.call(arguments,1);r.length;)for(i in n=r.shift())n.hasOwnProperty(i)&&("[object Object]"===Object.prototype.toString.call(t[i])?t[i]=e(t[i],n[i]):t[i]=n[i]);return t}},{}],7:[function(e,t,n){var i=e("he"),r=e("./lowercase"),o=(e("./attributes"),e("./elements")),a=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,s=/^<\s*\/\s*([\w:-]+)[^>]*>/,u=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,l=/^</,c=/^<\s*\//;t.exports=function(e,t){for(var n,d=function(){var e=[];return e.lastItem=function(){return e[e.length-1]},e}(),h=e;e;)f();function f(){n=!0,function(){"\x3c!--"===e.substr(0,4)?function(){var i=e.indexOf("--\x3e");i>=0&&(t.comment&&t.comment(e.substring(4,i)),e=e.substring(i+3),n=!1)}():c.test(e)?p(s,v):l.test(e)&&p(a,g);!function(){if(!n)return;var i,r=e.indexOf("<");r>=0?(i=e.substring(0,r),e=e.substring(r)):(i=e,e="");t.chars&&t.chars(i)}()}();var i=e===h;h=e,i&&(e="")}function p(t,i){var r=e.match(t);r&&(e=e.substring(r[0].length),r[0].replace(t,i),n=!1)}function g(e,n,a,s){var l={},c=r(n),h=o.voids[c]||!!s;a.replace(u,(function(e,t,n,r,o){l[t]=void 0===n&&void 0===r&&void 0===o?void 0:i.decode(n||r||o||"")})),h||d.push(c),t.start&&t.start(c,l,h)}function v(e,n){var i,o=0,a=r(n);if(a)for(o=d.length-1;o>=0&&d[o]!==a;o--);if(o>=0){for(i=d.length-1;i>=o;i--)t.end&&t.end(d[i]);d.length=o}}v()}},{"./attributes":1,"./elements":3,"./lowercase":5,he:9}],8:[function(e,t,n){var i=e("he"),r=e("./lowercase"),o=e("./attributes"),a=e("./elements");t.exports=function(e,t){var n,s=t||{};return d(),{start:function(e,t,a){var c=r(e);if(n.ignoring)return void l(c);if(-1===(s.allowedTags||[]).indexOf(c))return void l(c);if(s.filter&&!s.filter({tag:c,attrs:t}))return void l(c);u("<"),u(c),Object.keys(t).forEach((function(e){var n,a=t[e],l=(s.allowedClasses||{})[c]||[],d=(s.allowedAttributes||{})[c]||[];d=d.concat((s.allowedAttributes||{})["*"]||[]);var h=r(e);n="class"===h&&-1===d.indexOf(h)?(a=a.split(" ").filter((function(e){return l&&-1!==l.indexOf(e)})).join(" ").trim()).length:-1!==d.indexOf(h)&&(!0!==o.uris[h]||function(e){var t=e[0];if("#"===t||"/"===t)return!0;var n=e.indexOf(":");if(-1===n)return!0;var i=e.indexOf("?");if(-1!==i&&n>i)return!0;var r=e.indexOf("#");return-1!==r&&n>r||s.allowedSchemes.some(o);function o(t){return 0===e.indexOf(t+":")}}(a)),n&&(u(" "),u(e),"string"===typeof a&&(u('="'),u(i.encode(a)),u('"')))})),u(a?"/>":">")},end:function(e){var t=r(e);-1!==(s.allowedTags||[]).indexOf(t)&&!1===n.ignoring?(u("</"),u(t),u(">")):c(t)},chars:function(e){!1===n.ignoring&&u(s.transformText?s.transformText(e):e)}};function u(t){e.push(t)}function l(e){a.voids[e]||(!1===n.ignoring?n={ignoring:e,depth:1}:n.ignoring===e&&n.depth++)}function c(e){n.ignoring===e&&--n.depth<=0&&d()}function d(){n={ignoring:!1,depth:0}}}},{"./attributes":1,"./elements":3,"./lowercase":5,he:9}],9:[function(e,t,n){var i={"&":"&","<":"<",">":">",'"':""","'":"'"},r={"&":"&","<":"<",">":">",""":'"',"'":"'"},o=/(&|<|>|"|')/g,a=/[&<>"']/g;function s(e){return i[e]}function u(e){return r[e]}function l(e){return null==e?"":String(e).replace(a,s)}function c(e){return null==e?"":String(e).replace(o,u)}l.options=c.options={},t.exports={encode:l,escape:l,decode:c,unescape:c,version:"1.0.0-browser"}},{}],10:[function(e,t,n){function i(e,t){return e[t]=!0,e}t.exports=function(e){return e.reduce(i,{})}},{}]},{},[4]);var FU,jU=RU,HU=n(83312),BU=n(55076),zU=null===(FU=window.trustedTypes)||void 0===FU?void 0:FU.createPolicy("insane",{createHTML:function(e,t){return jU(e,t)}});function WU(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=(0,PU.az)(i),a=function(t){var n;try{n=(0,HU.Q)(decodeURIComponent(t))}catch(i){}return n?(n=(0,rY.rs)(n,(function(t){return e.uris&&e.uris[t]?Mz.o.revive(e.uris[t]):void 0})),encodeURIComponent(JSON.stringify(n))):t},s=function(t,n){var i=e.uris&&e.uris[t];if(!i)return t;var r=Mz.o.revive(i);return Mz.o.parse(t).toString()===r.toString()?t:n?JV.Gi.asBrowserUri(r).toString(!0):(r.query&&(r=r.with({query:a(r.query)})),r.toString())},u=new Promise((function(e){return n=e})),l=new ZU.Renderer;l.image=function(e,t,n){var r=[],o=[];if(e){var a=function(e){var t=[],n=e.split("|").map((function(e){return e.trim()}));e=n[0];var i=n[1];if(i){var r=/height=(\d+)/.exec(i),o=/width=(\d+)/.exec(i),a=r?r[1]:"",s=o?o[1]:"",u=isFinite(parseInt(s)),l=isFinite(parseInt(a));u&&t.push('width="'.concat(s,'"')),l&&t.push('height="'.concat(a,'"'))}return{href:e,dimensions:t}}(e);e=a.href,r=a.dimensions,e=s(e,!0);try{var u=Mz.o.parse(e);i.baseUrl&&u.scheme===JV.lg.file&&(e=(0,PW.i3)(i.baseUrl,e).toString())}catch(l){}o.push('src="'.concat(e,'"'))}return n&&o.push('alt="'.concat(n,'"')),t&&o.push('title="'.concat(t,'"')),r.length&&(o=o.concat(r)),"<img "+o.join(" ")+">"},l.link=function(t,n,r){(t===r&&(r=TB(r)),t=s(t,!1),i.baseUrl)&&(/^\w[\w\d+.-]*:/.test(t)||(t=(0,PW.i3)(i.baseUrl,t).toString()));return n=TB(n),!(t=TB(t))||t.match(/^data:|javascript:/i)||t.match(/^command:/i)&&!e.isTrusted||t.match(/^command:(\/\/\/)?_workbench\.downloadResource/i)?r:(t=t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),'<a href="#" data-href="'.concat(t,'" title="').concat(n||t,'">').concat(r,"</a>"))},l.paragraph=function(t){e.supportThemeIcons&&(t=(0,lV.T)(t).map((function(e){return"string"===typeof e?e:e.outerHTML})).join(""));return"<p>".concat(t,"</p>")},i.codeBlockRenderer&&(l.code=function(e,t){var n=i.codeBlockRenderer(t,e),r=cY.a.nextId(),a=Promise.all([n,u]).then((function(e){var t=o.querySelector('div[data-code="'.concat(r,'"]'));t&&aW.reset(t,e[0])})).catch((function(e){}));return i.asyncRenderCallback&&a.then(i.asyncRenderCallback),'<div class="code" data-code="'.concat(r,'">').concat((0,Dz.YU)(e),"</div>")}),i.actionHandler&&i.actionHandler.disposeables.add(_W.ju.any((0,mY.jt)(o,"click"),(0,mY.jt)(o,"auxclick"))((function(e){var t=new BU.n(e);if(t.leftButton||t.middleButton){var n=t.target;if("A"===n.tagName||(n=n.parentElement)&&"A"===n.tagName)try{var r=n.dataset.href;r&&i.actionHandler.callback(r,t)}catch(o){(0,LB.dL)(o)}finally{t.preventDefault()}}}))),r.sanitizer=function(t){return(e.isTrusted?t.match(/^(<span[^>]+>)|(<\/\s*span>)$/):void 0)?t:""},r.sanitize=!0,r.silent=!0,r.renderer=l;var c=null!==(t=e.value)&&void 0!==t?t:"";c.length>1e5&&(c="".concat(c.substr(0,1e5),"\u2026")),e.supportThemeIcons&&(c=(0,xB.f$)(c));var d=ZU.parse(c,r);if(o.innerHTML=function(e,t){var n,i=function(e){var t=[JV.lg.http,JV.lg.https,JV.lg.mailto,JV.lg.data,JV.lg.file,JV.lg.vscodeRemote,JV.lg.vscodeRemoteResource];e.isTrusted&&t.push(JV.lg.command);return{allowedSchemes:t,allowedTags:["ul","li","p","code","blockquote","ol","h1","h2","h3","h4","h5","h6","hr","em","pre","table","thead","tbody","tr","th","td","div","del","a","strong","br","img","span"],allowedAttributes:{a:["href","name","target","data-href"],img:["src","title","alt","width","height"],div:["class","data-code"],span:["class","style"],th:["align"],td:["align"]},filter:function(t){return"span"!==t.tag||!e.isTrusted||(t.attrs.style&&1===Object.keys(t.attrs).length?!!t.attrs.style.match(/^(color\:#[0-9a-fA-F]+;)?(background-color\:#[0-9a-fA-F]+;)?$/):!!t.attrs.class&&!!t.attrs.class.match(/^codicon codicon-[a-z\-]+( codicon-modifier-[a-z\-]+)?$/))}}}(e);return null!==(n=null===zU||void 0===zU?void 0:zU.createHTML(t,i))&&void 0!==n?n:jU(t,i)}(e,d),n(),i.asyncRenderCallback){var h,f=(0,Na.Z)(o.getElementsByTagName("img"));try{var p=function(){var e=h.value,t=aW.addDisposableListener(e,"load",(function(){t.dispose(),i.asyncRenderCallback()}))};for(f.s();!(h=f.n()).done;)p()}catch(g){f.e(g)}finally{f.f()}}return o}var VU,YU=n(54821),UU=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},KU=function(e,t){return function(n,i){t(n,i,e)}},qU=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},GU=function(){function e(t,n,i){(0,X.Z)(this,e),this._options=t,this._modeService=n,this._openerService=i,this._onDidRenderAsync=new _W.Q5,this.onDidRenderAsync=this._onDidRenderAsync.event}return(0,J.Z)(e,[{key:"dispose",value:function(){this._onDidRenderAsync.dispose()}},{key:"render",value:function(e,t,n){var i=new WB.SL;return{element:e?WU(e,Object.assign(Object.assign({},this._getRenderOptions(e,i)),t),n):document.createElement("span"),dispose:function(){return i.dispose()}}}},{key:"_getRenderOptions",value:function(t,n){var i=this;return{baseUrl:this._options.baseUrl,codeBlockRenderer:function(t,n){return qU(i,void 0,void 0,fn().mark((function i(){var r,o,a,s,u,l,c,d;return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return t?u=this._modeService.getModeIdForLanguageName(t):this._options.editor&&(u=null===(r=this._options.editor.getModel())||void 0===r?void 0:r.getLanguageIdentifier().language),u||(u="plaintext"),this._modeService.triggerMode(u),i.next=5,Iz.RW.getPromise(u);case 5:if(i.t1=o=i.sent,i.t0=null!==i.t1,!i.t0){i.next=9;break}i.t0=void 0!==o;case 9:if(!i.t0){i.next=13;break}i.t2=o,i.next=14;break;case 13:i.t2=void 0;case 14:return l=i.t2,(c=document.createElement("span")).innerHTML=null!==(s=null===(a=e._ttpTokenizer)||void 0===a?void 0:a.createHTML(n,l))&&void 0!==s?s:(0,YU.C)(n,l),d=this._options.codeBlockFontFamily,this._options.editor&&(d=this._options.editor.getOption(40).fontFamily),d&&(c.style.fontFamily=d),i.abrupt("return",c);case 21:case"end":return i.stop()}}),i,this)})))},asyncRenderCallback:function(){return i._onDidRenderAsync.fire()},actionHandler:{callback:function(e){return i._openerService.open(e,{fromUserGesture:!0,allowContributedOpeners:!0,allowCommands:t.isTrusted}).catch(LB.dL)},disposeables:n}}}}]),e}();function $U(e,t,n){var i=Iz.xp.ordered(e).map((function(i){return Promise.resolve(i.provideHover(e,t,n)).then((function(e){return e&&function(e){var t="undefined"!==typeof e.range,n="undefined"!==typeof e.contents&&e.contents&&e.contents.length>0;return t&&n}(e)?e:void 0}),(function(e){(0,LB.Cp)(e)}))}));return Promise.all(i).then(SB.kX)}GU._ttpTokenizer=null===(VU=window.trustedTypes)||void 0===VU?void 0:VU.createPolicy("tokenizeToString",{createHTML:function(e,t){return(0,YU.C)(e,t)}}),GU=UU([KU(1,PV.h),KU(2,XV.v4)],GU),(0,_B.sb)("_executeHoverProvider",(function(e,t){return $U(e,t,Lz.T.None)}));var QU=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},XU=function(e,t){return function(n,i){t(n,i,e)}},JU=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},eK=aW.$,tK=function(){function e(t,n){(0,X.Z)(this,e),this.range=t,this.contents=n}return(0,J.Z)(e,[{key:"equals",value:function(t){return t instanceof e&&function(e,t){return!e&&!t||!(!e||!t)&&(Array.isArray(e)&&Array.isArray(t)?(0,SB.fS)(e,t,MB):!(!NB(e)||!NB(t))&&MB(e,t))}(this.contents,t.contents)}}]),e}(),nK=function(){function e(t,n,i,r){(0,X.Z)(this,e),this._editor=t,this._hover=n,this._modeService=i,this._openerService=r}return(0,J.Z)(e,[{key:"createLoadingMessage",value:function(e){return new tK(e,[(new EB).appendText(yB.N("modesContentHover.loading","Loading..."))])}},{key:"computeSync",value:function(e,t){if(!this._editor.hasModel())return[];var n,i=this._editor.getModel(),r=e.startLineNumber,o=i.getLineMaxColumn(r),a=[],s=(0,Na.Z)(t);try{for(s.s();!(n=s.n()).done;){var u=n.value,l=u.range.startLineNumber===r?u.range.startColumn:1,c=u.range.endLineNumber===r?u.range.endColumn:o,d=u.options.hoverMessage;if(d&&!DB(d)){var h=new YB.e(e.startLineNumber,l,e.startLineNumber,c);a.push(new tK(h,(0,SB._2)(d)))}}}catch(f){s.e(f)}finally{s.f()}return a}},{key:"computeAsync",value:function(e,t){return JU(this,void 0,void 0,fn().mark((function n(){var i,r,o,a,s,u,l;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(this._editor.hasModel()&&e){n.next=2;break}return n.abrupt("return",Promise.resolve([]));case 2:if(i=this._editor.getModel(),Iz.xp.has(i)){n.next=5;break}return n.abrupt("return",Promise.resolve([]));case 5:return n.next=7,$U(i,new VB.L(e.startLineNumber,e.startColumn),t);case 7:r=n.sent,o=[],a=(0,Na.Z)(r),n.prev=10,a.s();case 12:if((s=a.n()).done){n.next=20;break}if(!DB((u=s.value).contents)){n.next=16;break}return n.abrupt("continue",18);case 16:l=u.range?YB.e.lift(u.range):e,o.push(new tK(l,u.contents));case 18:n.next=12;break;case 20:n.next=25;break;case 22:n.prev=22,n.t0=n.catch(10),a.e(n.t0);case 25:return n.prev=25,a.f(),n.finish(25);case 28:return n.abrupt("return",o);case 29:case"end":return n.stop()}}),n,this,[[10,22,25,28]])})))}},{key:"renderHoverParts",value:function(e,t){var n,i=this,r=new WB.SL,o=(0,Na.Z)(e);try{for(o.s();!(n=o.n()).done;){var a,s=n.value,u=(0,Na.Z)(s.contents);try{var l=function(){var e=a.value;if(DB(e))return"continue";var n=eK("div.hover-row.markdown-hover"),o=aW.append(n,eK("div.hover-contents")),s=r.add(new GU({editor:i._editor},i._modeService,i._openerService));r.add(s.onDidRenderAsync((function(){o.className="hover-contents code-hover-contents",i._hover.onContentsChanged()})));var u=r.add(s.render(e));o.appendChild(u.element),t.appendChild(n)};for(u.s();!(a=u.n()).done;)l()}catch(c){u.e(c)}finally{u.f()}}}catch(c){o.e(c)}finally{o.f()}return r}}]),e}();nK=QU([XU(2,PV.h),XU(3,XV.v4)],nK);var iK=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},rK=function(){function e(t,n,i){(0,X.Z)(this,e),this.range=t,this.color=n,this.provider=i}return(0,J.Z)(e,[{key:"equals",value:function(e){return!1}}]),e}(),oK=(0,J.Z)((function e(t,n){(0,X.Z)(this,e),this.owner=t,this.data=n})),aK=function(){function e(t,n,i){(0,X.Z)(this,e),this._markerHoverParticipant=n,this._markdownHoverParticipant=i,this._editor=t,this._result=[],this._range=null}return(0,J.Z)(e,[{key:"setRange",value:function(e){this._range=e,this._result=[]}},{key:"clearResult",value:function(){this._result=[]}},{key:"computeAsync",value:function(e){return iK(this,void 0,void 0,fn().mark((function t(){var n,i=this;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._editor.hasModel()&&this._range){t.next=2;break}return t.abrupt("return",Promise.resolve([]));case 2:return t.next=4,this._markdownHoverParticipant.computeAsync(this._range,e);case 4:return n=t.sent,t.abrupt("return",n.map((function(e){return new oK(i._markdownHoverParticipant,e)})));case 6:case"end":return t.stop()}}),t,this)})))}},{key:"computeSync",value:function(){var e=this;if(!this._editor.hasModel()||!this._range)return[];var t=this._editor.getModel(),n=this._range,i=n.startLineNumber;if(i>this._editor.getModel().getLineCount())return[];var r,o=t.getLineMaxColumn(i),a=this._editor.getLineDecorations(i).filter((function(e){if(e.options.isWholeLine)return!0;var t=e.range.startLineNumber===i?e.range.startColumn:1,r=e.range.endLineNumber===i?e.range.endColumn:o;return!(t>n.startColumn||n.endColumn>r)})),s=[],u=RV.get(this._editor),l=(0,Na.Z)(a);try{for(l.s();!(r=l.n()).done;){var c=r.value,d=u.getColorData(c.range.getStartPosition());if(d){var h=d.colorInfo,f=h.color,p=h.range;s.push(new oK(null,new rK(YB.e.lift(p),f,d.provider)));break}}}catch(m){l.e(m)}finally{l.f()}var g=this._markdownHoverParticipant.computeSync(this._range,a);s=s.concat(g.map((function(t){return new oK(e._markdownHoverParticipant,t)})));var v=this._markerHoverParticipant.computeSync(this._range,a);return s=s.concat(v.map((function(t){return new oK(e._markerHoverParticipant,t)}))),(0,SB.kX)(s)}},{key:"onResult",value:function(e,t){this._result=t?e.concat(this._result):this._result.concat(e)}},{key:"getResult",value:function(){return this._result.slice(0)}},{key:"getResultWithLoadingMessage",value:function(){if(this._range){var e=new oK(this._markdownHoverParticipant,this._markdownHoverParticipant.createLoadingMessage(this._range));return this._result.slice(0).concat([e])}return this._result.slice(0)}}]),e}(),sK=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;return(0,X.Z)(this,n),(a=t.call(this))._hoverVisibleKey=i,a._themeService=o,a.allowEditorOverflow=!0,a._markerHoverParticipant=r.createInstance(AU,e,(0,Br.Z)(a)),a._markdownHoverParticipant=r.createInstance(nK,e,(0,Br.Z)(a)),a._hover=a._register(new $V),a._id=n.ID,a._editor=e,a._isVisible=!1,a._stoleFocus=!1,a._renderDisposable=null,a.onkeydown(a._hover.containerDomNode,(function(e){e.equals(9)&&a.hide()})),a._register(a._editor.onDidChangeConfiguration((function(e){e.hasChanged(40)&&a._updateFont()}))),a._editor.onDidLayoutChange((function(){return a.layout()})),a.layout(),a._editor.addContentWidget((0,Br.Z)(a)),a._showAtPosition=null,a._showAtRange=null,a._stoleFocus=!1,a._messages=[],a._lastRange=null,a._computer=new aK(a._editor,a._markerHoverParticipant,a._markdownHoverParticipant),a._highlightDecorations=[],a._isChangingDecorations=!1,a._shouldFocus=!1,a._colorPicker=null,a._hoverOperation=new KV(a._computer,(function(e){return a._withResult(e,!0)}),null,(function(e){return a._withResult(e,!1)}),a._editor.getOption(50).delay),a._register(aW.addStandardDisposableListener(a.getDomNode(),aW.EventType.FOCUS,(function(){a._colorPicker&&a.getDomNode().classList.add("colorpicker-hover")}))),a._register(aW.addStandardDisposableListener(a.getDomNode(),aW.EventType.BLUR,(function(){a.getDomNode().classList.remove("colorpicker-hover")}))),a._register(e.onDidChangeConfiguration((function(){a._hoverOperation.setHoverTime(a._editor.getOption(50).delay)}))),a._register(Iz.RW.onDidChange((function(){a._isVisible&&a._lastRange&&a._messages.length>0&&(a._messages=a._messages.map((function(e){var t,n;if(e.data instanceof rK&&(null===(t=a._lastRange)||void 0===t?void 0:t.intersectRanges(e.data.range))&&(null===(n=a._colorPicker)||void 0===n?void 0:n.model.color)){var i=a._colorPicker.model.color,r={red:i.rgba.r/255,green:i.rgba.g/255,blue:i.rgba.b/255,alpha:i.rgba.a};return new oK(e.owner,new rK(e.data.range,r,e.data.provider))}return e})),a._hover.contentsDomNode.textContent="",a._renderMessages(a._lastRange,a._messages))}))),a}return(0,J.Z)(n,[{key:"dispose",value:function(){this._hoverOperation.cancel(),this._editor.removeContentWidget(this),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"getId",value:function(){return this._id}},{key:"getDomNode",value:function(){return this._hover.containerDomNode}},{key:"showAt",value:function(e,t,n){this._showAtPosition=e,this._showAtRange=t,this._hoverVisibleKey.set(!0),this._isVisible=!0,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible),this._editor.layoutContentWidget(this),this._editor.render(),this._stoleFocus=n,n&&this._hover.containerDomNode.focus()}},{key:"getPosition",value:function(){return this._isVisible?{position:this._showAtPosition,range:this._showAtRange,preference:[1,2]}:null}},{key:"_updateFont",value:function(){var e=this;Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach((function(t){return e._editor.applyFontInfo(t)}))}},{key:"_updateContents",value:function(e){this._hover.contentsDomNode.textContent="",this._hover.contentsDomNode.appendChild(e),this._updateFont(),this._editor.layoutContentWidget(this),this._hover.onContentsChanged()}},{key:"layout",value:function(){var e=Math.max(this._editor.getLayoutInfo().height/4,250),t=this._editor.getOption(40),n=t.fontSize,i=t.lineHeight;this._hover.contentsDomNode.style.fontSize="".concat(n,"px"),this._hover.contentsDomNode.style.lineHeight="".concat(i,"px"),this._hover.contentsDomNode.style.maxHeight="".concat(e,"px"),this._hover.contentsDomNode.style.maxWidth="".concat(Math.max(.66*this._editor.getLayoutInfo().width,500),"px")}},{key:"onModelDecorationsChanged",value:function(){this._isChangingDecorations||this._isVisible&&(this._hoverOperation.cancel(),this._computer.clearResult(),this._colorPicker||this._hoverOperation.start(0))}},{key:"startShowingAt",value:function(e,t,n){if(!this._lastRange||!this._lastRange.equalsRange(e)){if(this._hoverOperation.cancel(),this._isVisible)if(this._showAtPosition&&this._showAtPosition.lineNumber===e.startLineNumber){for(var i=[],r=0,o=this._messages.length;r<o;r++){var a=this._messages[r],s=a.data.range;s&&s.startColumn<=e.startColumn&&s.endColumn>=e.endColumn&&i.push(a)}if(i.length>0){if(function(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(!e[n].data.equals(t[n].data))return!1;return!0}(i,this._messages))return;this._renderMessages(e,i)}else this.hide()}else this.hide();this._lastRange=e,this._computer.setRange(e),this._shouldFocus=n,this._hoverOperation.start(t)}}},{key:"hide",value:function(){var e=this;this._lastRange=null,this._hoverOperation.cancel(),this._isVisible&&(setTimeout((function(){e._isVisible||e._hoverVisibleKey.set(!1)}),0),this._isVisible=!1,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible),this._editor.layoutContentWidget(this),this._stoleFocus&&this._editor.focus()),this._isChangingDecorations=!0,this._highlightDecorations=this._editor.deltaDecorations(this._highlightDecorations,[]),this._isChangingDecorations=!1,this._renderDisposable&&(this._renderDisposable.dispose(),this._renderDisposable=null),this._colorPicker=null}},{key:"isColorPickerVisible",value:function(){return!!this._colorPicker}},{key:"onContentsChanged",value:function(){this._hover.onContentsChanged()}},{key:"_withResult",value:function(e,t){this._messages=e,this._lastRange&&this._messages.length>0?this._renderMessages(this._lastRange,this._messages):t&&this.hide()}},{key:"_renderMessages",value:function(e,t){var i=this;this._renderDisposable&&(this._renderDisposable.dispose(),this._renderDisposable=null),this._colorPicker=null;var r=1073741824,o=t[0].data.range?YB.e.lift(t[0].data.range):null,a=document.createDocumentFragment(),s=!1,u=new WB.SL,l=[],c=[];t.forEach((function(e){var t=e.data;if(t.range)if(r=Math.min(r,t.range.startColumn),o=o?YB.e.plusRange(o,t.range):YB.e.lift(t.range),t instanceof rK){s=!0;var n=t.color,d=n.red,h=n.green,f=n.blue,p=n.alpha,g=new MV.VS(Math.round(255*d),Math.round(255*h),Math.round(255*f),p),v=new MV.Il(g);if(!i._editor.hasModel())return;var m=i._editor.getModel(),_=new YB.e(t.range.startLineNumber,t.range.startColumn,t.range.endLineNumber,t.range.endColumn),y={range:t.range,color:t.color},b=new ZV(v,[],0),w=new UV(a,b,i._editor.getOption(125),i._themeService);TV(m,y,t.provider,Lz.T.None).then((function(e){if(b.colorPresentations=e||[],i._editor.hasModel()){var n=i._editor.getModel().getValueInRange(t.range);b.guessColorPresentation(v,n);var r=function(){var e,t;if(b.presentation.textEdit){e=[b.presentation.textEdit],t=new YB.e(b.presentation.textEdit.range.startLineNumber,b.presentation.textEdit.range.startColumn,b.presentation.textEdit.range.endLineNumber,b.presentation.textEdit.range.endColumn);var n=i._editor.getModel()._setTrackedRange(null,t,3);i._editor.pushUndoStop(),i._editor.executeEdits("colorpicker",e),t=i._editor.getModel()._getTrackedRange(n)||t}else e=[{identifier:null,range:_,text:b.presentation.label,forceMoveMarkers:!1}],t=_.setEndPosition(_.endLineNumber,_.startColumn+b.presentation.label.length),i._editor.pushUndoStop(),i._editor.executeEdits("colorpicker",e);b.presentation.additionalTextEdits&&(e=(0,Ct.Z)(b.presentation.additionalTextEdits),i._editor.executeEdits("colorpicker",e),i.hide()),i._editor.pushUndoStop(),_=t},o=function(e){return TV(m,{range:_,color:{red:e.rgba.r/255,green:e.rgba.g/255,blue:e.rgba.b/255,alpha:e.rgba.a}},t.provider,Lz.T.None).then((function(e){b.colorPresentations=e||[]}))},s=b.onColorFlushed((function(e){o(e).then(r)})),l=b.onDidChangeColor(o);i._colorPicker=w,i.showAt(_.getStartPosition(),_,i._shouldFocus),i._updateContents(a),i._colorPicker.layout(),i._renderDisposable=(0,WB.F8)(s,l,w,u)}}))}else t instanceof IU?l.push(t):t instanceof tK&&c.push(t)})),c.length>0&&u.add(this._markdownHoverParticipant.renderHoverParts(c,a)),l.length&&u.add(this._markerHoverParticipant.renderHoverParts(l,a)),this._renderDisposable=u,!s&&a.hasChildNodes()&&(this.showAt(new VB.L(e.startLineNumber,r),o,this._shouldFocus),this._updateContents(a)),this._isChangingDecorations=!0,this._highlightDecorations=this._editor.deltaDecorations(this._highlightDecorations,o?[{range:o,options:n._DECORATION_OPTIONS}]:[]),this._isChangingDecorations=!1}}]),n}(FV.$);sK.ID="editor.contrib.modesContentHoverWidget",sK._DECORATION_OPTIONS=KB.qx.register({className:"hoverHighlight"}),(0,$B.Ic)((function(e,t){var n=e.getColor(GB.ur);n&&t.addRule(".monaco-hover .hover-contents a.code-link span:hover { color: ".concat(n,"; }"))}));var uK=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this))._id=e,r._editor=i,r._isVisible=!1,r._domNode=document.createElement("div"),r._domNode.className="monaco-hover hidden",r._domNode.setAttribute("aria-hidden","true"),r._domNode.setAttribute("role","tooltip"),r._showAtLineNumber=-1,r._register(r._editor.onDidChangeConfiguration((function(e){e.hasChanged(40)&&r.updateFont()}))),r._editor.addOverlayWidget((0,Br.Z)(r)),r}return(0,J.Z)(n,[{key:"isVisible",get:function(){return this._isVisible},set:function(e){this._isVisible=e,this._domNode.classList.toggle("hidden",!this._isVisible)}},{key:"getId",value:function(){return this._id}},{key:"getDomNode",value:function(){return this._domNode}},{key:"showAt",value:function(e){this._showAtLineNumber=e,this.isVisible||(this.isVisible=!0);var t=this._editor.getLayoutInfo(),n=this._editor.getTopForLineNumber(this._showAtLineNumber),i=this._editor.getScrollTop(),r=this._editor.getOption(55),o=n-i-(this._domNode.clientHeight-r)/2;this._domNode.style.left="".concat(t.glyphMarginLeft+t.glyphMarginWidth,"px"),this._domNode.style.top="".concat(Math.max(Math.round(o),0),"px")}},{key:"hide",value:function(){this.isVisible&&(this.isVisible=!1)}},{key:"getPosition",value:function(){return null}},{key:"dispose",value:function(){this._editor.removeOverlayWidget(this),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"updateFont",value:function(){var e=this,t=Array.prototype.slice.call(this._domNode.getElementsByTagName("code")),n=Array.prototype.slice.call(this._domNode.getElementsByClassName("code"));[].concat((0,Ct.Z)(t),(0,Ct.Z)(n)).forEach((function(t){return e._editor.applyFontInfo(t)}))}},{key:"updateContents",value:function(e){this._domNode.textContent="",this._domNode.appendChild(e),this.updateFont()}}]),n}(FV.$),lK=function(){function e(t){(0,X.Z)(this,e),this._editor=t,this._lineNumber=-1,this._result=[]}return(0,J.Z)(e,[{key:"setLineNumber",value:function(e){this._lineNumber=e,this._result=[]}},{key:"clearResult",value:function(){this._result=[]}},{key:"computeSync",value:function(){var e=function(e){return{value:e}},t=this._editor.getLineDecorations(this._lineNumber),n=[];if(!t)return n;var i,r=(0,Na.Z)(t);try{for(r.s();!(i=r.n()).done;){var o=i.value;if(o.options.glyphMarginClassName){var a=o.options.glyphMarginHoverMessage;a&&!DB(a)&&n.push.apply(n,(0,Ct.Z)((0,SB._2)(a).map(e)))}}}catch(s){r.e(s)}finally{r.f()}return n}},{key:"onResult",value:function(e,t){this._result=this._result.concat(e)}},{key:"getResult",value:function(){return this._result}},{key:"getResultWithLoadingMessage",value:function(){return this.getResult()}}]),e}(),cK=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:XV.SW;return(0,X.Z)(this,n),(r=t.call(this,n.ID,e))._renderDisposeables=r._register(new WB.SL),r._messages=[],r._lastLineNumber=-1,r._markdownRenderer=r._register(new GU({editor:r._editor},i,o)),r._computer=new lK(r._editor),r._hoverOperation=new KV(r._computer,(function(e){return r._withResult(e)}),void 0,(function(e){return r._withResult(e)}),300),r}return(0,J.Z)(n,[{key:"dispose",value:function(){this._hoverOperation.cancel(),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"onModelDecorationsChanged",value:function(){this.isVisible&&(this._hoverOperation.cancel(),this._computer.clearResult(),this._hoverOperation.start(0))}},{key:"startShowingAt",value:function(e){this._lastLineNumber!==e&&(this._hoverOperation.cancel(),this.hide(),this._lastLineNumber=e,this._computer.setLineNumber(e),this._hoverOperation.start(0))}},{key:"hide",value:function(){this._lastLineNumber=-1,this._hoverOperation.cancel(),(0,Qz.Z)((0,Xz.Z)(n.prototype),"hide",this).call(this)}},{key:"_withResult",value:function(e){this._messages=e,this._messages.length>0?this._renderMessages(this._lastLineNumber,this._messages):this.hide()}},{key:"_renderMessages",value:function(e,t){this._renderDisposeables.clear();var n,i=document.createDocumentFragment(),r=(0,Na.Z)(t);try{for(r.s();!(n=r.n()).done;){var o=n.value,a=this._markdownRenderer.render(o.value);this._renderDisposeables.add(a),i.appendChild((0,aW.$)("div.hover-row",void 0,a.element))}}catch(s){r.e(s)}finally{r.f()}this.updateContents(i),this.showAt(e)}}]),n}(uK);cK.ID="editor.contrib.modesGlyphHoverWidget";var dK=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},hK=function(){function e(t,n,i,r){(0,X.Z)(this,e),this.isProviderFirst=t,this.parent=n,this.link=i,this._rangeCallback=r,this.id=cY.a.nextId()}return(0,J.Z)(e,[{key:"uri",get:function(){return this.link.uri}},{key:"range",get:function(){var e,t;return null!==(t=null!==(e=this._range)&&void 0!==e?e:this.link.targetSelectionRange)&&void 0!==t?t:this.link.range},set:function(e){this._range=e,this._rangeCallback(this)}},{key:"ariaMessage",get:function(){var e,t=null===(e=this.parent.getPreview(this))||void 0===e?void 0:e.preview(this.range);return t?(0,yB.N)({key:"aria.oneReference.preview",comment:["Placeholders are: 0: filename, 1:line number, 2: column number, 3: preview snippet of source code"]},"symbol in {0} on line {1} at column {2}, {3}",(0,PW.EZ)(this.uri),this.range.startLineNumber,this.range.startColumn,t.value):(0,yB.N)("aria.oneReference","symbol in {0} on line {1} at column {2}",(0,PW.EZ)(this.uri),this.range.startLineNumber,this.range.startColumn)}}]),e}(),fK=function(){function e(t){(0,X.Z)(this,e),this._modelReference=t}return(0,J.Z)(e,[{key:"dispose",value:function(){this._modelReference.dispose()}},{key:"preview",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8,n=this._modelReference.object.textEditorModel;if(n){var i=e.startLineNumber,r=e.startColumn,o=e.endLineNumber,a=e.endColumn,s=n.getWordUntilPosition({lineNumber:i,column:r-t}),u=new YB.e(i,s.startColumn,i,r),l=new YB.e(o,a,o,1073741824),c=n.getValueInRange(u).replace(/^\s+/,""),d=n.getValueInRange(e);return{value:c+d+n.getValueInRange(l).replace(/\s+$/,""),highlight:{start:c.length,end:c.length+d.length}}}}}]),e}(),pK=function(){function e(t,n){(0,X.Z)(this,e),this.parent=t,this.uri=n,this.children=[],this._previews=new gV.Y9}return(0,J.Z)(e,[{key:"dispose",value:function(){(0,WB.B9)(this._previews.values()),this._previews.clear()}},{key:"getPreview",value:function(e){return this._previews.get(e.uri)}},{key:"ariaMessage",get:function(){var e=this.children.length;return 1===e?(0,yB.N)("aria.fileReferences.1","1 symbol in {0}, full path {1}",(0,PW.EZ)(this.uri),this.uri.fsPath):(0,yB.N)("aria.fileReferences.N","{0} symbols in {1}, full path {2}",e,(0,PW.EZ)(this.uri),this.uri.fsPath)}},{key:"resolve",value:function(e){return dK(this,void 0,void 0,fn().mark((function t(){var n,i,r,o;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(0===this._previews.size){t.next=2;break}return t.abrupt("return",this);case 2:n=(0,Na.Z)(this.children),t.prev=3,n.s();case 5:if((i=n.n()).done){t.next=21;break}if(r=i.value,!this._previews.has(r.uri)){t.next=9;break}return t.abrupt("continue",19);case 9:return t.prev=9,t.next=12,e.createModelReference(r.uri);case 12:o=t.sent,this._previews.set(r.uri,new fK(o)),t.next=19;break;case 16:t.prev=16,t.t0=t.catch(9),(0,LB.dL)(t.t0);case 19:t.next=5;break;case 21:t.next=26;break;case 23:t.prev=23,t.t1=t.catch(3),n.e(t.t1);case 26:return t.prev=26,n.f(),t.finish(26);case 29:return t.abrupt("return",this);case 30:case"end":return t.stop()}}),t,this,[[3,23,26,29],[9,16]])})))}}]),e}(),gK=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this.groups=[],this.references=[],this._onDidChangeReferenceRange=new _W.Q5,this.onDidChangeReferenceRange=this._onDidChangeReferenceRange.event,this._links=t,this._title=n;var r,o=(0,ne.Z)(t,1)[0];t.sort(e._compareReferences);var a,s=(0,Na.Z)(t);try{for(s.s();!(a=s.n()).done;){var u=a.value;if(r&&PW.SF.isEqual(r.uri,u.uri,!0)||(r=new pK(this,u.uri),this.groups.push(r)),0===r.children.length||0!==e._compareReferences(u,r.children[r.children.length-1])){var l=new hK(o===u,r,u,(function(e){return i._onDidChangeReferenceRange.fire(e)}));this.references.push(l),r.children.push(l)}}}catch(c){s.e(c)}finally{s.f()}}return(0,J.Z)(e,[{key:"dispose",value:function(){(0,WB.B9)(this.groups),this._onDidChangeReferenceRange.dispose(),this.groups.length=0}},{key:"clone",value:function(){return new e(this._links,this._title)}},{key:"title",get:function(){return this._title}},{key:"isEmpty",get:function(){return 0===this.groups.length}},{key:"ariaMessage",get:function(){return this.isEmpty?(0,yB.N)("aria.result.0","No results found"):1===this.references.length?(0,yB.N)("aria.result.1","Found 1 symbol in {0}",this.references[0].uri.fsPath):1===this.groups.length?(0,yB.N)("aria.result.n1","Found {0} symbols in {1}",this.references.length,this.groups[0].uri.fsPath):(0,yB.N)("aria.result.nm","Found {0} symbols in {1} files",this.references.length,this.groups.length)}},{key:"nextOrPreviousReference",value:function(e,t){var n=e.parent,i=n.children.indexOf(e),r=n.children.length,o=n.parent.groups.length;return 1===o||t&&i+1<r||!t&&i>0?(i=t?(i+1)%r:(i+r-1)%r,n.children[i]):(i=n.parent.groups.indexOf(n),t?(i=(i+1)%o,n.parent.groups[i].children[0]):(i=(i+o-1)%o,n.parent.groups[i].children[n.parent.groups[i].children.length-1]))}},{key:"nearestReference",value:function(e,t){var n=this.references.map((function(n,i){return{idx:i,prefixLen:Dz.Mh(n.uri.toString(),e.toString()),offsetDist:100*Math.abs(n.range.startLineNumber-t.lineNumber)+Math.abs(n.range.startColumn-t.column)}})).sort((function(e,t){return e.prefixLen>t.prefixLen?-1:e.prefixLen<t.prefixLen?1:e.offsetDist<t.offsetDist?-1:e.offsetDist>t.offsetDist?1:0}))[0];if(n)return this.references[n.idx]}},{key:"referenceAt",value:function(e,t){var n,i=(0,Na.Z)(this.references);try{for(i.s();!(n=i.n()).done;){var r=n.value;if(r.uri.toString()===e.toString()&&YB.e.containsPosition(r.range,t))return r}}catch(o){i.e(o)}finally{i.f()}}},{key:"firstReference",value:function(){var e,t=(0,Na.Z)(this.references);try{for(t.s();!(e=t.n()).done;){var n=e.value;if(n.isProviderFirst)return n}}catch(i){t.e(i)}finally{t.f()}return this.references[0]}}],[{key:"_compareReferences",value:function(e,t){return PW.SF.compare(e.uri,t.uri)||YB.e.compareRangesUsingStarts(e.range,t.range)}}]),e}(),vK=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};function mK(e,t,n,i){var r=n.ordered(e).map((function(n){return Promise.resolve(i(n,e,t)).then(void 0,(function(e){(0,LB.Cp)(e)}))}));return Promise.all(r).then((function(e){var t,n=[],i=(0,Na.Z)(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;Array.isArray(r)?n.push.apply(n,(0,Ct.Z)(r)):r&&n.push(r)}}catch(o){i.e(o)}finally{i.f()}return n}))}function _K(e,t,n){return mK(e,t,Iz.Ct,(function(e,t,i){return e.provideDefinition(t,i,n)}))}function yK(e,t,n){return mK(e,t,Iz.RN,(function(e,t,i){return e.provideDeclaration(t,i,n)}))}function bK(e,t,n){return mK(e,t,Iz.vI,(function(e,t,i){return e.provideImplementation(t,i,n)}))}function wK(e,t,n){return mK(e,t,Iz.tA,(function(e,t,i){return e.provideTypeDefinition(t,i,n)}))}function CK(e,t,n,i){var r=this;return mK(e,t,Iz.FL,(function(e,t,o){return vK(r,void 0,void 0,fn().mark((function r(){var a,s;return fn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,e.provideReferences(t,o,{includeDeclaration:!0},i);case 2:if(a=r.sent,n&&a&&2===a.length){r.next=5;break}return r.abrupt("return",a);case 5:return r.next=7,e.provideReferences(t,o,{includeDeclaration:!1},i);case 7:if(!(s=r.sent)||1!==s.length){r.next=10;break}return r.abrupt("return",s);case 10:return r.abrupt("return",a);case 11:case"end":return r.stop()}}),r)})))}))}function kK(e){return vK(this,void 0,void 0,fn().mark((function t(){var n,i,r;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e();case 2:return n=t.sent,i=new gK(n,""),r=i.references.map((function(e){return e.link})),i.dispose(),t.abrupt("return",r);case 7:case"end":return t.stop()}}),t)})))}(0,_B.sb)("_executeDefinitionProvider",(function(e,t){return kK((function(){return _K(e,t,Lz.T.None)}))})),(0,_B.sb)("_executeDeclarationProvider",(function(e,t){return kK((function(){return yK(e,t,Lz.T.None)}))})),(0,_B.sb)("_executeImplementationProvider",(function(e,t){return kK((function(){return bK(e,t,Lz.T.None)}))})),(0,_B.sb)("_executeTypeDefinitionProvider",(function(e,t){return kK((function(){return wK(e,t,Lz.T.None)}))})),(0,_B.sb)("_executeReferenceProvider",(function(e,t){return kK((function(){return CK(e,t,!1,Lz.T.None)}))}));var SK=n(44148),xK=n(76191),LK=n(5677),EK=n(57502),DK=n(35215),NK=n(50482),MK=n(61743),TK=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},IK=function(e,t){return function(n,i){t(n,i,e)}},OK=function(){function e(t){(0,X.Z)(this,e),this._resolverService=t}return(0,J.Z)(e,[{key:"hasChildren",value:function(e){return e instanceof gK||e instanceof pK}},{key:"getChildren",value:function(e){if(e instanceof gK)return e.groups;if(e instanceof pK)return e.resolve(this._resolverService).then((function(e){return e.children}));throw new Error("bad tree")}}]),e}();OK=TK([IK(0,SK.S)],OK);var AK=function(){function e(){(0,X.Z)(this,e)}return(0,J.Z)(e,[{key:"getHeight",value:function(){return 23}},{key:"getTemplateId",value:function(e){return e instanceof pK?FK.id:HK.id}}]),e}(),RK=function(){function e(t){(0,X.Z)(this,e),this._keybindingService=t}return(0,J.Z)(e,[{key:"getKeyboardNavigationLabel",value:function(e){var t;if(e instanceof hK){var n=null===(t=e.parent.getPreview(e))||void 0===t?void 0:t.preview(e.range);if(n)return n.value}return(0,PW.EZ)(e.uri)}}]),e}();RK=TK([IK(0,lW.d)],RK);var PK=function(){function e(){(0,X.Z)(this,e)}return(0,J.Z)(e,[{key:"getId",value:function(e){return e instanceof hK?e.id:e.uri}}]),e}(),ZK=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;(0,X.Z)(this,n),(o=t.call(this))._uriLabel=i;var a=document.createElement("div");return a.classList.add("reference-file"),o.file=o._register(new LK.g(a,{supportHighlights:!0})),o.badge=new EK.Z(aW.append(a,aW.$(".count"))),o._register((0,DK.WZ)(o.badge,r)),e.appendChild(a),o}return(0,J.Z)(n,[{key:"set",value:function(e,t){var n=(0,PW.XX)(e.uri);this.file.setLabel(tY(e.uri),this._uriLabel.getUriLabel(n,{relative:!0}),{title:this._uriLabel.getUriLabel(e.uri),matches:t});var i=e.children.length;this.badge.setCount(i),i>1?this.badge.setTitleFormat((0,yB.N)("referencesCount","{0} references",i)):this.badge.setTitleFormat((0,yB.N)("referenceCount","{0} reference",i))}}]),n}(WB.JT);ZK=TK([IK(1,XY.e),IK(2,$B.XE)],ZK);var FK=function(){function e(t){(0,X.Z)(this,e),this._instantiationService=t,this.templateId=e.id}return(0,J.Z)(e,[{key:"renderTemplate",value:function(e){return this._instantiationService.createInstance(ZK,e)}},{key:"renderElement",value:function(e,t,n){n.set(e.element,(0,NK.mB)(e.filterData))}},{key:"disposeTemplate",value:function(e){e.dispose()}}]),e}();FK.id="FileReferencesRenderer",FK=TK([IK(0,oW.TG)],FK);var jK=function(){function e(t){(0,X.Z)(this,e),this.label=new MK.q(t,!1)}return(0,J.Z)(e,[{key:"set",value:function(e,t){var n,i=null===(n=e.parent.getPreview(e))||void 0===n?void 0:n.preview(e.range);if(i&&i.value){var r=i.value,o=i.highlight;t&&!NK.CL.isDefault(t)?(this.label.element.classList.toggle("referenceMatch",!1),this.label.set(r,(0,NK.mB)(t))):(this.label.element.classList.toggle("referenceMatch",!0),this.label.set(r,[o]))}else this.label.set("".concat((0,PW.EZ)(e.uri),":").concat(e.range.startLineNumber+1,":").concat(e.range.startColumn+1))}}]),e}(),HK=function(){function e(){(0,X.Z)(this,e),this.templateId=e.id}return(0,J.Z)(e,[{key:"renderTemplate",value:function(e){return new jK(e)}},{key:"renderElement",value:function(e,t,n){n.set(e.element,e.filterData)}},{key:"disposeTemplate",value:function(){}}]),e}();HK.id="OneReferenceRenderer";var BK=function(){function e(){(0,X.Z)(this,e)}return(0,J.Z)(e,[{key:"getWidgetAriaLabel",value:function(){return(0,yB.N)("treeAriaLabel","References")}},{key:"getAriaLabel",value:function(e){return e.ariaMessage}}]),e}(),zK=n(2285),WK=n(44393),VK=n(45822),YK=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},UK=function(e,t){return function(n,i){t(n,i,e)}},KK=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},qK=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this._editor=t,this._model=n,this._decorations=new Map,this._decorationIgnoreSet=new Set,this._callOnDispose=new WB.SL,this._callOnModelChange=new WB.SL,this._callOnDispose.add(this._editor.onDidChangeModel((function(){return i._onModelChanged()}))),this._onModelChanged()}return(0,J.Z)(e,[{key:"dispose",value:function(){this._callOnModelChange.dispose(),this._callOnDispose.dispose(),this.removeDecorations()}},{key:"_onModelChanged",value:function(){this._callOnModelChange.clear();var e=this._editor.getModel();if(e){var t,n=(0,Na.Z)(this._model.references);try{for(n.s();!(t=n.n()).done;){var i=t.value;if(i.uri.toString()===e.uri.toString())return void this._addDecorations(i.parent)}}catch(r){n.e(r)}finally{n.f()}}}},{key:"_addDecorations",value:function(t){var n=this;if(this._editor.hasModel()){this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations((function(){return n._onDecorationChanged()})));for(var i=[],r=[],o=0,a=t.children.length;o<a;o++){var s=t.children[o];this._decorationIgnoreSet.has(s.id)||s.uri.toString()===this._editor.getModel().uri.toString()&&(i.push({range:s.range,options:e.DecorationOptions}),r.push(o))}for(var u=this._editor.deltaDecorations([],i),l=0;l<u.length;l++)this._decorations.set(u[l],t.children[r[l]])}}},{key:"_onDecorationChanged",value:function(){var e=[],t=this._editor.getModel();if(t){var n,i=(0,Na.Z)(this._decorations);try{for(i.s();!(n=i.n()).done;){var r=(0,ne.Z)(n.value,2),o=r[0],a=r[1],s=t.getDecorationRange(o);if(s){var u=!1;if(!YB.e.equalsRange(s,a.range)){if(YB.e.spansMultipleLines(s))u=!0;else a.range.endColumn-a.range.startColumn!==s.endColumn-s.startColumn&&(u=!0);u?(this._decorationIgnoreSet.add(a.id),e.push(o)):a.range=s}}}}catch(d){i.e(d)}finally{i.f()}for(var l=0,c=e.length;l<c;l++)this._decorations.delete(e[l]);this._editor.deltaDecorations(e,[])}}},{key:"removeDecorations",value:function(){this._editor.deltaDecorations((0,Ct.Z)(this._decorations.keys()),[]),this._decorations.clear()}}]),e}();qK.DecorationOptions=KB.qx.register({stickiness:1,className:"reference-decoration"});var GK=function(){function e(){(0,X.Z)(this,e),this.ratio=.7,this.heightInLines=18}return(0,J.Z)(e,null,[{key:"fromJSON",value:function(e){var t,n;try{var i=JSON.parse(e);t=i.ratio,n=i.heightInLines}catch(FU){}return{ratio:t||.7,heightInLines:n||18}}}]),e}(),$K=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n)}(zK.ls),QK=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o,a,s,u,l,c,d){var h;return(0,X.Z)(this,n),(h=t.call(this,e,{showFrame:!1,showArrow:!0,isResizeable:!0,isAccessible:!0},s))._defaultTreeKeyboardSupport=i,h.layoutData=r,h._textModelResolverService=a,h._instantiationService=s,h._peekViewService=u,h._uriLabel=l,h._undoRedoService=c,h._keybindingService=d,h._disposeOnNewModel=new WB.SL,h._callOnDispose=new WB.SL,h._onDidSelectReference=new _W.Q5,h.onDidSelectReference=h._onDidSelectReference.event,h._dim=new aW.Dimension(0,0),h._applyTheme(o.getColorTheme()),h._callOnDispose.add(o.onDidColorThemeChange(h._applyTheme.bind((0,Br.Z)(h)))),h._peekViewService.addExclusiveWidget(e,(0,Br.Z)(h)),h.create(),h}return(0,J.Z)(n,[{key:"dispose",value:function(){this.setModel(void 0),this._callOnDispose.dispose(),this._disposeOnNewModel.dispose(),(0,WB.B9)(this._preview),(0,WB.B9)(this._previewNotAvailableMessage),(0,WB.B9)(this._tree),(0,WB.B9)(this._previewModelReference),this._splitView.dispose(),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"_applyTheme",value:function(e){var t=e.getColor(HY)||MV.Il.transparent;this.style({arrowColor:t,frameColor:t,headerBackgroundColor:e.getColor(ZY)||MV.Il.transparent,primaryHeadingColor:e.getColor(FY),secondaryHeadingColor:e.getColor(jY)})}},{key:"show",value:function(e){this.editor.revealRangeInCenterIfOutsideViewport(e,0),(0,Qz.Z)((0,Xz.Z)(n.prototype),"show",this).call(this,e,this.layoutData.heightInLines||18)}},{key:"focusOnReferenceTree",value:function(){this._tree.domFocus()}},{key:"focusOnPreviewEditor",value:function(){this._preview.focus()}},{key:"isPreviewEditorFocused",value:function(){return this._preview.hasTextFocus()}},{key:"_onTitleClick",value:function(e){this._preview&&this._preview.getModel()&&this._onDidSelectReference.fire({element:this._getFocusedReference(),kind:e.ctrlKey||e.metaKey||e.altKey?"side":"open",source:"title"})}},{key:"_fillBody",value:function(e){var t=this;this.setCssClass("reference-zone-widget"),this._messageContainer=aW.append(e,aW.$("div.messages")),aW.hide(this._messageContainer),this._splitView=new WK.z(e,{orientation:1}),this._previewContainer=aW.append(e,aW.$("div.preview.inline"));this._preview=this._instantiationService.createInstance(uY,this._previewContainer,{scrollBeyondLastLine:!1,scrollbar:{verticalScrollbarSize:14,horizontal:"auto",useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,alwaysConsumeMouseWheel:!1},overviewRulerLanes:2,fixedOverflowWidgets:!0,minimap:{enabled:!1}},this.editor),aW.hide(this._previewContainer),this._previewNotAvailableMessage=new KB.yO(yB.N("missingPreviewMessage","no preview available"),KB.yO.DEFAULT_CREATION_OPTIONS,null,null,this._undoRedoService),this._treeContainer=aW.append(e,aW.$("div.ref-tree.inline"));var n={keyboardSupport:this._defaultTreeKeyboardSupport,accessibilityProvider:new BK,keyboardNavigationLabelProvider:this._instantiationService.createInstance(RK),identityProvider:new PK,openOnSingleClick:!0,selectionNavigation:!0,overrideStyles:{listBackground:BY}};this._defaultTreeKeyboardSupport&&this._callOnDispose.add(aW.addStandardDisposableListener(this._treeContainer,"keydown",(function(e){e.equals(9)&&(t._keybindingService.dispatchEvent(e,e.target),e.stopPropagation())}),!0)),this._tree=this._instantiationService.createInstance($K,"ReferencesWidget",this._treeContainer,new AK,[this._instantiationService.createInstance(FK),this._instantiationService.createInstance(HK)],this._instantiationService.createInstance(OK),n),this._splitView.addView({onDidChange:_W.ju.None,element:this._previewContainer,minimumSize:200,maximumSize:Number.MAX_VALUE,layout:function(e){t._preview.layout({height:t._dim.height,width:e})}},WK.M.Distribute),this._splitView.addView({onDidChange:_W.ju.None,element:this._treeContainer,minimumSize:100,maximumSize:Number.MAX_VALUE,layout:function(e){t._treeContainer.style.height="".concat(t._dim.height,"px"),t._treeContainer.style.width="".concat(e,"px"),t._tree.layout(t._dim.height,e)}},WK.M.Distribute),this._disposables.add(this._splitView.onDidSashChange((function(){t._dim.width&&(t.layoutData.ratio=t._splitView.getViewSize(0)/t._dim.width)}),void 0));var i=function(e,n){e instanceof hK&&("show"===n&&t._revealReference(e,!1),t._onDidSelectReference.fire({element:e,kind:n,source:"tree"}))};this._tree.onDidOpen((function(e){e.sideBySide?i(e.element,"side"):e.editorOptions.pinned?i(e.element,"goto"):i(e.element,"show")})),aW.hide(this._treeContainer)}},{key:"_onWidth",value:function(e){this._dim&&this._doLayoutBody(this._dim.height,e)}},{key:"_doLayoutBody",value:function(e,t){(0,Qz.Z)((0,Xz.Z)(n.prototype),"_doLayoutBody",this).call(this,e,t),this._dim=new aW.Dimension(t,e),this.layoutData.heightInLines=this._viewZone?this._viewZone.heightInLines:this.layoutData.heightInLines,this._splitView.layout(t),this._splitView.resizeView(0,t*this.layoutData.ratio)}},{key:"setSelection",value:function(e){var t=this;return this._revealReference(e,!0).then((function(){t._model&&(t._tree.setSelection([e]),t._tree.setFocus([e]))}))}},{key:"setModel",value:function(e){return this._disposeOnNewModel.clear(),this._model=e,this._model?this._onNewModel():Promise.resolve()}},{key:"_onNewModel",value:function(){var e=this;return this._model?this._model.isEmpty?(this.setTitle(""),this._messageContainer.innerText=yB.N("noResults","No results"),aW.show(this._messageContainer),Promise.resolve(void 0)):(aW.hide(this._messageContainer),this._decorationsManager=new qK(this._preview,this._model),this._disposeOnNewModel.add(this._decorationsManager),this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange((function(t){return e._tree.rerender(t)}))),this._disposeOnNewModel.add(this._preview.onMouseDown((function(t){var n=t.event,i=t.target;if(2===n.detail){var r=e._getFocusedReference();r&&e._onDidSelectReference.fire({element:{uri:r.uri,range:i.range},kind:n.ctrlKey||n.metaKey||n.altKey?"side":"open",source:"editor"})}}))),this.container.classList.add("results-loaded"),aW.show(this._treeContainer),aW.show(this._previewContainer),this._splitView.layout(this._dim.width),this.focusOnReferenceTree(),this._tree.setInput(1===this._model.groups.length?this._model.groups[0]:this._model)):Promise.resolve(void 0)}},{key:"_getFocusedReference",value:function(){var e=this._tree.getFocus(),t=(0,ne.Z)(e,1)[0];return t instanceof hK?t:t instanceof pK&&t.children.length>0?t.children[0]:void 0}},{key:"revealReference",value:function(e){return KK(this,void 0,void 0,fn().mark((function t(){return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._revealReference(e,!1);case 2:this._onDidSelectReference.fire({element:e,kind:"goto",source:"tree"});case 3:case"end":return t.stop()}}),t,this)})))}},{key:"_revealReference",value:function(e,t){return KK(this,void 0,void 0,fn().mark((function n(){var i,r,o,a,s;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(this._revealedReference!==e){n.next=2;break}return n.abrupt("return");case 2:if(this._revealedReference=e,e.uri.scheme!==JV.lg.inMemory?this.setTitle((0,PW.Hx)(e.uri),this._uriLabel.getUriLabel((0,PW.XX)(e.uri))):this.setTitle(yB.N("peekView.alternateTitle","References")),i=this._textModelResolverService.createModelReference(e.uri),this._tree.getInput()!==e.parent){n.next=9;break}this._tree.reveal(e),n.next=13;break;case 9:return t&&this._tree.reveal(e.parent),n.next=12,this._tree.expand(e.parent);case 12:this._tree.reveal(e);case 13:return n.next=15,i;case 15:if(r=n.sent,this._model){n.next=19;break}return r.dispose(),n.abrupt("return");case 19:(0,WB.B9)(this._previewModelReference),(o=r.object)?(a=this._preview.getModel()===o.textEditorModel?0:1,s=YB.e.lift(e.range).collapseToStart(),this._previewModelReference=r,this._preview.setModel(o.textEditorModel),this._preview.setSelection(s),this._preview.revealRangeInCenter(s,a)):(this._preview.setModel(this._previewNotAvailableMessage),r.dispose());case 22:case"end":return n.stop()}}),n,this)})))}}]),n}(RY);QK=YK([UK(3,$B.XE),UK(4,SK.S),UK(5,oW.TG),UK(6,IY),UK(7,XY.e),UK(8,VK.tJ),UK(9,lW.d)],QK),(0,$B.Ic)((function(e,t){var n=e.getColor(qY);n&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight { background-color: ".concat(n,"; }"));var i=e.getColor(GY);i&&t.addRule(".monaco-editor .reference-zone-widget .preview .reference-decoration { background-color: ".concat(i,"; }"));var r=e.getColor($Y);r&&t.addRule(".monaco-editor .reference-zone-widget .preview .reference-decoration { border: 2px solid ".concat(r,"; box-sizing: border-box; }"));var o=e.getColor(GB.xL);o&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight { border: 1px dotted ".concat(o,"; box-sizing: border-box; }"));var a=e.getColor(BY);a&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree { background-color: ".concat(a,"; }"));var s=e.getColor(zY);s&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree { color: ".concat(s,"; }"));var u=e.getColor(WY);u&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree .reference-file { color: ".concat(u,"; }"));var l=e.getColor(VY);l&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { background-color: ".concat(l,"; }"));var c=e.getColor(YY);c&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { color: ".concat(c," !important; }"));var d=e.getColor(UY);d&&t.addRule(".monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background,.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input {"+"\tbackground-color: ".concat(d,";")+"}");var h=e.getColor(KY);h&&t.addRule(".monaco-editor .reference-zone-widget .preview .monaco-editor .margin {"+"\tbackground-color: ".concat(h,";")+"}")}));var XK=n(51519),JK=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},eq=function(e,t){return function(n,i){t(n,i,e)}},tq=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},nq=new kB.uy("referenceSearchVisible",!1,yB.N("referenceSearchVisible","Whether reference peek is visible, like 'Peek References' or 'Peek Definition'")),iq=function(){function e(t,n,i,r,o,a,s,u){(0,X.Z)(this,e),this._defaultTreeKeyboardSupport=t,this._editor=n,this._editorService=r,this._notificationService=o,this._instantiationService=a,this._storageService=s,this._configurationService=u,this._disposables=new WB.SL,this._requestIdPool=0,this._ignoreModelChangeEvent=!1,this._referenceSearchVisible=nq.bindTo(i)}return(0,J.Z)(e,[{key:"dispose",value:function(){var e,t;this._referenceSearchVisible.reset(),this._disposables.dispose(),null===(e=this._widget)||void 0===e||e.dispose(),null===(t=this._model)||void 0===t||t.dispose(),this._widget=void 0,this._model=void 0}},{key:"toggleWidget",value:function(e,t,n){var i,r=this;if(this._widget&&(i=this._widget.position),this.closeWidget(),!i||!e.containsPosition(i)){this._peekMode=n,this._referenceSearchVisible.set(!0),this._disposables.add(this._editor.onDidChangeModelLanguage((function(){r.closeWidget()}))),this._disposables.add(this._editor.onDidChangeModel((function(){r._ignoreModelChangeEvent||r.closeWidget()})));var o="peekViewLayout",a=GK.fromJSON(this._storageService.get(o,0,"{}"));this._widget=this._instantiationService.createInstance(QK,this._editor,this._defaultTreeKeyboardSupport,a),this._widget.setTitle(yB.N("labelLoading","Loading...")),this._widget.show(e),this._disposables.add(this._widget.onDidClose((function(){t.cancel(),r._widget&&(r._storageService.store(o,JSON.stringify(r._widget.layoutData),0,1),r._widget=void 0),r.closeWidget()}))),this._disposables.add(this._widget.onDidSelectReference((function(e){var t=e.element,i=e.kind;if(t)switch(i){case"open":"editor"===e.source&&r._configurationService.getValue("editor.stablePeek")||r.openReference(t,!1,!1);break;case"side":r.openReference(t,!0,!1);break;case"goto":n?r._gotoReference(t):r.openReference(t,!1,!0)}})));var s=++this._requestIdPool;t.then((function(t){var n;if(s===r._requestIdPool&&r._widget)return null===(n=r._model)||void 0===n||n.dispose(),r._model=t,r._widget.setModel(r._model).then((function(){if(r._widget&&r._model&&r._editor.hasModel()){r._model.isEmpty?r._widget.setMetaTitle(""):r._widget.setMetaTitle(yB.N("metaTitle.N","{0} ({1})",r._model.title,r._model.references.length));var t=r._editor.getModel().uri,n=new VB.L(e.startLineNumber,e.startColumn),i=r._model.nearestReference(t,n);if(i)return r._widget.setSelection(i).then((function(){r._widget&&"editor"===r._editor.getOption(73)&&r._widget.focusOnPreviewEditor()}))}}));t.dispose()}),(function(e){r._notificationService.error(e)}))}}},{key:"changeFocusBetweenPreviewAndReferences",value:function(){this._widget&&(this._widget.isPreviewEditorFocused()?this._widget.focusOnReferenceTree():this._widget.focusOnPreviewEditor())}},{key:"goToNextOrPreviousReference",value:function(e){return tq(this,void 0,void 0,fn().mark((function t(){var n,i,r,o,a;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._editor.hasModel()&&this._model&&this._widget){t.next=2;break}return t.abrupt("return");case 2:if(n=this._widget.position){t.next=5;break}return t.abrupt("return");case 5:if(i=this._model.nearestReference(this._editor.getModel().uri,n)){t.next=8;break}return t.abrupt("return");case 8:return r=this._model.nextOrPreviousReference(i,e),o=this._editor.hasTextFocus(),a=this._widget.isPreviewEditorFocused(),t.next=13,this._widget.setSelection(r);case 13:return t.next=15,this._gotoReference(r);case 15:o?this._editor.focus():this._widget&&a&&this._widget.focusOnPreviewEditor();case 16:case"end":return t.stop()}}),t,this)})))}},{key:"revealReference",value:function(e){return tq(this,void 0,void 0,fn().mark((function t(){return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._editor.hasModel()&&this._model&&this._widget){t.next=2;break}return t.abrupt("return");case 2:return t.next=4,this._widget.revealReference(e);case 4:case"end":return t.stop()}}),t,this)})))}},{key:"closeWidget",value:function(){var e,t,n=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];null===(e=this._widget)||void 0===e||e.dispose(),null===(t=this._model)||void 0===t||t.dispose(),this._referenceSearchVisible.reset(),this._disposables.clear(),this._widget=void 0,this._model=void 0,n&&this._editor.focus(),this._requestIdPool+=1}},{key:"_gotoReference",value:function(t){var n=this;this._widget&&this._widget.hide(),this._ignoreModelChangeEvent=!0;var i=YB.e.lift(t.range).collapseToStart();return this._editorService.openCodeEditor({resource:t.uri,options:{selection:i}},this._editor).then((function(t){var r;if(n._ignoreModelChangeEvent=!1,t&&n._widget)if(n._editor===t)n._widget.show(i),n._widget.focusOnReferenceTree();else{var o=e.get(t),a=n._model.clone();n.closeWidget(),t.focus(),o.toggleWidget(i,(0,zB.PG)((function(e){return Promise.resolve(a)})),null!==(r=n._peekMode)&&void 0!==r&&r)}else n.closeWidget()}),(function(e){n._ignoreModelChangeEvent=!1,(0,LB.dL)(e)}))}},{key:"openReference",value:function(e,t,n){t||this.closeWidget();var i=e.uri,r=e.range;this._editorService.openCodeEditor({resource:i,options:{selection:r,pinned:n}},this._editor,t)}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();function rq(e,t){var n=function(e){var t=e.get(fz.$).getFocusedCodeEditor();return t instanceof uY?t.getParentEditor():t}(e);if(n){var i=iq.get(n);i&&t(i)}}iq.ID="editor.contrib.referencesController",iq=JK([eq(2,kB.i6),eq(3,fz.$),eq(4,AW.lT),eq(5,oW.TG),eq(6,vV.Uy),eq(7,IV.Ui)],iq),XK.W.registerCommandAndKeybindingRule({id:"togglePeekWidgetFocus",weight:100,primary:(0,CB.gx)(2089,60),when:kB.Ao.or(nq,NY.inPeekEditor),handler:function(e){rq(e,(function(e){e.changeFocusBetweenPreviewAndReferences()}))}}),XK.W.registerCommandAndKeybindingRule({id:"goToNextReference",weight:90,primary:62,secondary:[70],when:kB.Ao.or(nq,NY.inPeekEditor),handler:function(e){rq(e,(function(e){e.goToNextOrPreviousReference(!0)}))}}),XK.W.registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:90,primary:1086,secondary:[1094],when:kB.Ao.or(nq,NY.inPeekEditor),handler:function(e){rq(e,(function(e){e.goToNextOrPreviousReference(!1)}))}}),jz.P.registerCommandAlias("goToNextReferenceFromEmbeddedEditor","goToNextReference"),jz.P.registerCommandAlias("goToPreviousReferenceFromEmbeddedEditor","goToPreviousReference"),jz.P.registerCommandAlias("closeReferenceSearchEditor","closeReferenceSearch"),jz.P.registerCommand("closeReferenceSearch",(function(e){return rq(e,(function(e){return e.closeWidget()}))})),XK.W.registerKeybindingRule({id:"closeReferenceSearch",weight:-1,primary:9,secondary:[1033],when:kB.Ao.and(NY.inPeekEditor,kB.Ao.not("config.editor.stablePeek"))}),XK.W.registerKeybindingRule({id:"closeReferenceSearch",weight:250,primary:9,secondary:[1033],when:kB.Ao.and(nq,kB.Ao.not("config.editor.stablePeek"))}),XK.W.registerCommandAndKeybindingRule({id:"revealReference",weight:200,primary:3,mac:{primary:3,secondary:[2066]},when:kB.Ao.and(nq,zK.CQ),handler:function(e){var t,n=null===(t=e.get(zK.Lw).lastFocusedList)||void 0===t?void 0:t.getFocus();Array.isArray(n)&&n[0]instanceof hK&&rq(e,(function(e){return e.revealReference(n[0])}))}}),XK.W.registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:kB.Ao.and(nq,zK.CQ),handler:function(e){var t,n=null===(t=e.get(zK.Lw).lastFocusedList)||void 0===t?void 0:t.getFocus();Array.isArray(n)&&n[0]instanceof hK&&rq(e,(function(e){return e.openReference(n[0],!0,!0)}))}}),jz.P.registerCommand("openReference",(function(e){var t,n=null===(t=e.get(zK.Lw).lastFocusedList)||void 0===t?void 0:t.getFocus();Array.isArray(n)&&n[0]instanceof hK&&rq(e,(function(e){return e.openReference(n[0],!1,!0)}))}));var oq=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},aq=function(e,t){return function(n,i){t(n,i,e)}},sq=new kB.uy("hasSymbols",!1,(0,yB.N)("hasSymbols","Whether there are symbol locations that can be navigated via keyboard-only.")),uq=(0,oW.yh)("ISymbolNavigationService"),lq=function(){function e(t,n,i,r){(0,X.Z)(this,e),this._editorService=n,this._notificationService=i,this._keybindingService=r,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=sq.bindTo(t)}return(0,J.Z)(e,[{key:"reset",value:function(){var e,t;this._ctxHasSymbols.reset(),null===(e=this._currentState)||void 0===e||e.dispose(),null===(t=this._currentMessage)||void 0===t||t.dispose(),this._currentModel=void 0,this._currentIdx=-1}},{key:"put",value:function(e){var t=this,n=e.parent.parent;if(n.references.length<=1)this.reset();else{this._currentModel=n,this._currentIdx=n.references.indexOf(e),this._ctxHasSymbols.set(!0),this._showMessage();var i=new cq(this._editorService),r=i.onDidChange((function(e){if(!t._ignoreEditorChange){var i=t._editorService.getActiveCodeEditor();if(i){var r=i.getModel(),o=i.getPosition();if(r&&o){var a,s=!1,u=!1,l=(0,Na.Z)(n.references);try{for(l.s();!(a=l.n()).done;){var c=a.value;if((0,PW.Xy)(c.uri,r.uri))s=!0,u=u||YB.e.containsPosition(c.range,o);else if(s)break}}catch(d){l.e(d)}finally{l.f()}s&&u||t.reset()}}}}));this._currentState=(0,WB.F8)(i,r)}}},{key:"revealNext",value:function(e){var t=this;if(!this._currentModel)return Promise.resolve();this._currentIdx+=1,this._currentIdx%=this._currentModel.references.length;var n=this._currentModel.references[this._currentIdx];return this._showMessage(),this._ignoreEditorChange=!0,this._editorService.openCodeEditor({resource:n.uri,options:{selection:YB.e.collapseToStart(n.range),selectionRevealType:3}},e).finally((function(){t._ignoreEditorChange=!1}))}},{key:"_showMessage",value:function(){var e;null===(e=this._currentMessage)||void 0===e||e.dispose();var t=this._keybindingService.lookupKeybinding("editor.gotoNextSymbolFromResult"),n=t?(0,yB.N)("location.kb","Symbol {0} of {1}, {2} for next",this._currentIdx+1,this._currentModel.references.length,t.getLabel()):(0,yB.N)("location","Symbol {0} of {1}",this._currentIdx+1,this._currentModel.references.length);this._currentMessage=this._notificationService.status(n)}}]),e}();lq=oq([aq(0,kB.i6),aq(1,fz.$),aq(2,AW.lT),aq(3,lW.d)],lq),(0,pV.z)(uq,lq,!0),(0,_B.fK)(new(function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.gotoNextSymbolFromResult",precondition:sq,kbOpts:{weight:100,primary:70}})}return(0,J.Z)(n,[{key:"runEditorCommand",value:function(e,t){return e.get(uq).revealNext(t)}}]),n}(_B._l))),XK.W.registerCommandAndKeybindingRule({id:"editor.gotoNextSymbolFromResult.cancel",weight:100,when:sq,primary:9,handler:function(e){e.get(uq).reset()}});var cq=function(){function e(t){(0,X.Z)(this,e),this._listener=new Map,this._disposables=new WB.SL,this._onDidChange=new _W.Q5,this.onDidChange=this._onDidChange.event,this._disposables.add(t.onCodeEditorRemove(this._onDidRemoveEditor,this)),this._disposables.add(t.onCodeEditorAdd(this._onDidAddEditor,this)),t.listCodeEditors().forEach(this._onDidAddEditor,this)}return(0,J.Z)(e,[{key:"dispose",value:function(){this._disposables.dispose(),this._onDidChange.dispose(),(0,WB.B9)(this._listener.values())}},{key:"_onDidAddEditor",value:function(e){var t=this;this._listener.set(e,(0,WB.F8)(e.onDidChangeCursorPosition((function(n){return t._onDidChange.fire({editor:e})})),e.onDidChangeModelContent((function(n){return t._onDidChange.fire({editor:e})}))))}},{key:"_onDidRemoveEditor",value:function(e){var t;null===(t=this._listener.get(e))||void 0===t||t.dispose(),this._listener.delete(e)}}]),e}();cq=oq([aq(0,fz.$)],cq);var dq,hq,fq,pq,gq,vq,mq,_q,yq=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};QB.BH.appendMenuItem(QB.eH.EditorContext,{submenu:QB.eH.EditorContextPeek,title:yB.N("peek.submenu","Peek"),group:"navigation",order:100});var bq=new Set;function wq(e){var t=new e;return(0,_B.QG)(t),bq.add(t.id),t}var Cq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,i))._configuration=e,r}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=this;if(!t.hasModel())return Promise.resolve(void 0);var i=e.get(AW.lT),r=e.get(fz.$),o=e.get(Fz.e),a=e.get(uq),s=t.getModel(),u=t.getPosition(),l=new Tz.Dl(t,5),c=(0,zB.eP)(this._getLocationModel(s,u,l.token),l.token).then((function(e){return yq(n,void 0,void 0,fn().mark((function n(){var i,o,c,d;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e&&!l.token.isCancellationRequested){n.next=2;break}return n.abrupt("return");case 2:if((0,IB.Z9)(e.ariaMessage),e.referenceAt(s.uri,u)&&(o=this._getAlternativeCommand(t))!==this.id&&bq.has(o)&&(i=t.getAction(o)),0!==(c=e.references.length)){n.next=9;break}this._configuration.muteMessage||(d=s.getWordAtPosition(u),nW.get(t).showMessage(this._getNoResultFoundMessage(d),u)),n.next=14;break;case 9:if(1!==c||!i){n.next=13;break}i.run(),n.next=14;break;case 13:return n.abrupt("return",this._onResult(r,a,t,e));case 14:case"end":return n.stop()}}),n,this)})))}),(function(e){i.error(e)})).finally((function(){l.dispose()}));return o.showWhile(c,250),c}},{key:"_onResult",value:function(e,t,n,i){return yq(this,void 0,void 0,fn().mark((function r(){var o,a,s,u;return fn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(o=this._getGoToPreference(n),n instanceof uY||!(this._configuration.openInPeek||"peek"===o&&i.references.length>1)){r.next=5;break}this._openInPeek(n,i),r.next=12;break;case 5:return a=i.firstReference(),s=i.references.length>1&&"gotoAndPeek"===o,r.next=9,this._openReference(n,e,a,this._configuration.openToSide,!s);case 9:u=r.sent,s&&u?this._openInPeek(u,i):i.dispose(),"goto"===o&&t.put(a);case 12:case"end":return r.stop()}}),r,this)})))}},{key:"_openReference",value:function(e,t,n,i,r){return yq(this,void 0,void 0,fn().mark((function o(){var a,s,u,l;return fn().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(a=void 0,(0,Iz.vx)(n)&&(a=n.targetSelectionRange),a||(a=n.range),a){o.next=5;break}return o.abrupt("return",void 0);case 5:return o.next=7,t.openCodeEditor({resource:n.uri,options:{selection:YB.e.collapseToStart(a),selectionRevealType:3}},e,i);case 7:if(s=o.sent){o.next=10;break}return o.abrupt("return",void 0);case 10:return r&&(u=s.getModel(),l=s.deltaDecorations([],[{range:a,options:{className:"symbolHighlight"}}]),setTimeout((function(){s.getModel()===u&&s.deltaDecorations(l,[])}),350)),o.abrupt("return",s);case 12:case"end":return o.stop()}}),o)})))}},{key:"_openInPeek",value:function(e,t){var n=iq.get(e);n&&e.hasModel()?n.toggleWidget(e.getSelection(),(0,zB.PG)((function(e){return Promise.resolve(t)})),this._configuration.openInPeek):t.dispose()}}]),n}(_B.R6),kq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_getLocationModel",value:function(e,t,n){return yq(this,void 0,void 0,fn().mark((function i(){return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.t0=gK,i.next=3,_K(e,t,n);case 3:return i.t1=i.sent,i.t2=yB.N("def.title","Definitions"),i.abrupt("return",new i.t0(i.t1,i.t2));case 6:case"end":return i.stop()}}),i)})))}},{key:"_getNoResultFoundMessage",value:function(e){return e&&e.word?yB.N("noResultWord","No definition found for '{0}'",e.word):yB.N("generic.noResults","No definition found")}},{key:"_getAlternativeCommand",value:function(e){return e.getOption(47).alternativeDefinitionCommand}},{key:"_getGoToPreference",value:function(e){return e.getOption(47).multipleDefinitions}}]),n}(Cq),Sq=dz.$L&&!cz.$W?2118:70;wq(((dq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),e=t.call(this,{openToSide:!1,openInPeek:!1,muteMessage:!1},{id:n.id,label:yB.N("actions.goToDecl.label","Go to Definition"),alias:"Go to Definition",precondition:kB.Ao.and(bB.u.hasDefinitionProvider,bB.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:Sq,weight:100},contextMenuOpts:{group:"navigation",order:1.1},menuOpts:{menuId:QB.eH.MenubarGoMenu,group:"4_symbol_nav",order:2,title:yB.N({key:"miGotoDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Definition")}}),jz.P.registerCommandAlias("editor.action.goToDeclaration",n.id),e}return(0,J.Z)(n)}(kq)).id="editor.action.revealDefinition",dq)),wq(((hq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),e=t.call(this,{openToSide:!0,openInPeek:!1,muteMessage:!1},{id:n.id,label:yB.N("actions.goToDeclToSide.label","Open Definition to the Side"),alias:"Open Definition to the Side",precondition:kB.Ao.and(bB.u.hasDefinitionProvider,bB.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,Sq),weight:100}}),jz.P.registerCommandAlias("editor.action.openDeclarationToTheSide",n.id),e}return(0,J.Z)(n)}(kq)).id="editor.action.revealDefinitionAside",hq)),wq(((fq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),e=t.call(this,{openToSide:!1,openInPeek:!0,muteMessage:!1},{id:n.id,label:yB.N("actions.previewDecl.label","Peek Definition"),alias:"Peek Definition",precondition:kB.Ao.and(bB.u.hasDefinitionProvider,NY.notInPeekEditor,bB.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:582,linux:{primary:3140},weight:100},contextMenuOpts:{menuId:QB.eH.EditorContextPeek,group:"peek",order:2}}),jz.P.registerCommandAlias("editor.action.previewDeclaration",n.id),e}return(0,J.Z)(n)}(kq)).id="editor.action.peekDefinition",fq));var xq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_getLocationModel",value:function(e,t,n){return yq(this,void 0,void 0,fn().mark((function i(){return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.t0=gK,i.next=3,yK(e,t,n);case 3:return i.t1=i.sent,i.t2=yB.N("decl.title","Declarations"),i.abrupt("return",new i.t0(i.t1,i.t2));case 6:case"end":return i.stop()}}),i)})))}},{key:"_getNoResultFoundMessage",value:function(e){return e&&e.word?yB.N("decl.noResultWord","No declaration found for '{0}'",e.word):yB.N("decl.generic.noResults","No declaration found")}},{key:"_getAlternativeCommand",value:function(e){return e.getOption(47).alternativeDeclarationCommand}},{key:"_getGoToPreference",value:function(e){return e.getOption(47).multipleDeclarations}}]),n}(Cq);wq(((pq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{openToSide:!1,openInPeek:!1,muteMessage:!1},{id:n.id,label:yB.N("actions.goToDeclaration.label","Go to Declaration"),alias:"Go to Declaration",precondition:kB.Ao.and(bB.u.hasDeclarationProvider,bB.u.isInWalkThroughSnippet.toNegated()),contextMenuOpts:{group:"navigation",order:1.3},menuOpts:{menuId:QB.eH.MenubarGoMenu,group:"4_symbol_nav",order:3,title:yB.N({key:"miGotoDeclaration",comment:["&& denotes a mnemonic"]},"Go to &&Declaration")}})}return(0,J.Z)(n,[{key:"_getNoResultFoundMessage",value:function(e){return e&&e.word?yB.N("decl.noResultWord","No declaration found for '{0}'",e.word):yB.N("decl.generic.noResults","No declaration found")}}]),n}(xq)).id="editor.action.revealDeclaration",pq)),wq(function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.peekDeclaration",label:yB.N("actions.peekDecl.label","Peek Declaration"),alias:"Peek Declaration",precondition:kB.Ao.and(bB.u.hasDeclarationProvider,NY.notInPeekEditor,bB.u.isInWalkThroughSnippet.toNegated()),contextMenuOpts:{menuId:QB.eH.EditorContextPeek,group:"peek",order:3}})}return(0,J.Z)(n)}(xq));var Lq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_getLocationModel",value:function(e,t,n){return yq(this,void 0,void 0,fn().mark((function i(){return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.t0=gK,i.next=3,wK(e,t,n);case 3:return i.t1=i.sent,i.t2=yB.N("typedef.title","Type Definitions"),i.abrupt("return",new i.t0(i.t1,i.t2));case 6:case"end":return i.stop()}}),i)})))}},{key:"_getNoResultFoundMessage",value:function(e){return e&&e.word?yB.N("goToTypeDefinition.noResultWord","No type definition found for '{0}'",e.word):yB.N("goToTypeDefinition.generic.noResults","No type definition found")}},{key:"_getAlternativeCommand",value:function(e){return e.getOption(47).alternativeTypeDefinitionCommand}},{key:"_getGoToPreference",value:function(e){return e.getOption(47).multipleTypeDefinitions}}]),n}(Cq);wq(((gq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{openToSide:!1,openInPeek:!1,muteMessage:!1},{id:n.ID,label:yB.N("actions.goToTypeDefinition.label","Go to Type Definition"),alias:"Go to Type Definition",precondition:kB.Ao.and(bB.u.hasTypeDefinitionProvider,bB.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:0,weight:100},contextMenuOpts:{group:"navigation",order:1.4},menuOpts:{menuId:QB.eH.MenubarGoMenu,group:"4_symbol_nav",order:3,title:yB.N({key:"miGotoTypeDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Type Definition")}})}return(0,J.Z)(n)}(Lq)).ID="editor.action.goToTypeDefinition",gq)),wq(((vq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{openToSide:!1,openInPeek:!0,muteMessage:!1},{id:n.ID,label:yB.N("actions.peekTypeDefinition.label","Peek Type Definition"),alias:"Peek Type Definition",precondition:kB.Ao.and(bB.u.hasTypeDefinitionProvider,NY.notInPeekEditor,bB.u.isInWalkThroughSnippet.toNegated()),contextMenuOpts:{menuId:QB.eH.EditorContextPeek,group:"peek",order:4}})}return(0,J.Z)(n)}(Lq)).ID="editor.action.peekTypeDefinition",vq));var Eq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_getLocationModel",value:function(e,t,n){return yq(this,void 0,void 0,fn().mark((function i(){return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.t0=gK,i.next=3,bK(e,t,n);case 3:return i.t1=i.sent,i.t2=yB.N("impl.title","Implementations"),i.abrupt("return",new i.t0(i.t1,i.t2));case 6:case"end":return i.stop()}}),i)})))}},{key:"_getNoResultFoundMessage",value:function(e){return e&&e.word?yB.N("goToImplementation.noResultWord","No implementation found for '{0}'",e.word):yB.N("goToImplementation.generic.noResults","No implementation found")}},{key:"_getAlternativeCommand",value:function(e){return e.getOption(47).alternativeImplementationCommand}},{key:"_getGoToPreference",value:function(e){return e.getOption(47).multipleImplementations}}]),n}(Cq);wq(((mq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{openToSide:!1,openInPeek:!1,muteMessage:!1},{id:n.ID,label:yB.N("actions.goToImplementation.label","Go to Implementations"),alias:"Go to Implementations",precondition:kB.Ao.and(bB.u.hasImplementationProvider,bB.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:2118,weight:100},menuOpts:{menuId:QB.eH.MenubarGoMenu,group:"4_symbol_nav",order:4,title:yB.N({key:"miGotoImplementation",comment:["&& denotes a mnemonic"]},"Go to &&Implementations")},contextMenuOpts:{group:"navigation",order:1.45}})}return(0,J.Z)(n)}(Eq)).ID="editor.action.goToImplementation",mq)),wq(((_q=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{openToSide:!1,openInPeek:!0,muteMessage:!1},{id:n.ID,label:yB.N("actions.peekImplementation.label","Peek Implementations"),alias:"Peek Implementations",precondition:kB.Ao.and(bB.u.hasImplementationProvider,NY.notInPeekEditor,bB.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:3142,weight:100},contextMenuOpts:{menuId:QB.eH.EditorContextPeek,group:"peek",order:5}})}return(0,J.Z)(n)}(Eq)).ID="editor.action.peekImplementation",_q));var Dq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_getNoResultFoundMessage",value:function(e){return e?yB.N("references.no","No references found for '{0}'",e.word):yB.N("references.noGeneric","No references found")}},{key:"_getAlternativeCommand",value:function(e){return e.getOption(47).alternativeReferenceCommand}},{key:"_getGoToPreference",value:function(e){return e.getOption(47).multipleReferences}}]),n}(Cq);wq(function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{openToSide:!1,openInPeek:!1,muteMessage:!1},{id:"editor.action.goToReferences",label:yB.N("goToReferences.label","Go to References"),alias:"Go to References",precondition:kB.Ao.and(bB.u.hasReferenceProvider,NY.notInPeekEditor,bB.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:1094,weight:100},contextMenuOpts:{group:"navigation",order:1.45},menuOpts:{menuId:QB.eH.MenubarGoMenu,group:"4_symbol_nav",order:5,title:yB.N({key:"miGotoReference",comment:["&& denotes a mnemonic"]},"Go to &&References")}})}return(0,J.Z)(n,[{key:"_getLocationModel",value:function(e,t,n){return yq(this,void 0,void 0,fn().mark((function i(){return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.t0=gK,i.next=3,CK(e,t,!0,n);case 3:return i.t1=i.sent,i.t2=yB.N("ref.title","References"),i.abrupt("return",new i.t0(i.t1,i.t2));case 6:case"end":return i.stop()}}),i)})))}}]),n}(Dq)),wq(function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.referenceSearch.trigger",label:yB.N("references.action.label","Peek References"),alias:"Peek References",precondition:kB.Ao.and(bB.u.hasReferenceProvider,NY.notInPeekEditor,bB.u.isInWalkThroughSnippet.toNegated()),contextMenuOpts:{menuId:QB.eH.EditorContextPeek,group:"peek",order:6}})}return(0,J.Z)(n,[{key:"_getLocationModel",value:function(e,t,n){return yq(this,void 0,void 0,fn().mark((function i(){return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.t0=gK,i.next=3,CK(e,t,!1,n);case 3:return i.t1=i.sent,i.t2=yB.N("ref.title","References"),i.abrupt("return",new i.t0(i.t1,i.t2));case 6:case"end":return i.stop()}}),i)})))}}]),n}(Dq));var Nq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this,e,{id:"editor.action.goToLocation",label:yB.N("label.generic","Go To Any Symbol"),alias:"Go To Any Symbol",precondition:kB.Ao.and(NY.notInPeekEditor,bB.u.isInWalkThroughSnippet.toNegated())}))._references=i,o._gotoMultipleBehaviour=r,o}return(0,J.Z)(n,[{key:"_getLocationModel",value:function(e,t,n){return yq(this,void 0,void 0,fn().mark((function e(){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new gK(this._references,yB.N("generic.title","Locations")));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"_getNoResultFoundMessage",value:function(e){return e&&yB.N("generic.noResult","No results for '{0}'",e.word)||""}},{key:"_getGoToPreference",value:function(e){var t;return null!==(t=this._gotoMultipleBehaviour)&&void 0!==t?t:e.getOption(47).multipleReferences}},{key:"_getAlternativeCommand",value:function(){return""}}]),n}(Cq);function Mq(e,t){return!!e[t]}jz.P.registerCommand({id:"editor.action.goToLocations",description:{description:"Go to locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:Mz.o},{name:"position",description:"The position at which to start",constraint:VB.L.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto"},{name:"noResultsMessage",description:"Human readable message that shows when locations is empty."}]},handler:function(e,t,n,i,r,o,a){return yq(void 0,void 0,void 0,fn().mark((function s(){var u,l;return fn().wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return(0,oV.p_)(Mz.o.isUri(t)),(0,oV.p_)(VB.L.isIPosition(n)),(0,oV.p_)(Array.isArray(i)),(0,oV.p_)("undefined"===typeof r||"string"===typeof r),(0,oV.p_)("undefined"===typeof a||"boolean"===typeof a),u=e.get(fz.$),s.next=8,u.openCodeEditor({resource:t},u.getFocusedCodeEditor());case 8:if(l=s.sent,!(0,xK.CL)(l)){s.next=13;break}return l.setPosition(n),l.revealPositionInCenterIfOutsideViewport(n,0),s.abrupt("return",l.invokeWithinContext((function(e){var t=new(function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_getNoResultFoundMessage",value:function(e){return o||(0,Qz.Z)((0,Xz.Z)(n.prototype),"_getNoResultFoundMessage",this).call(this,e)}}]),n}(Nq))({muteMessage:!Boolean(o),openInPeek:Boolean(a),openToSide:!1},i,r);e.get(oW.TG).invokeFunction(t.run.bind(t),l)})));case 13:case"end":return s.stop()}}),s)})))}}),jz.P.registerCommand({id:"editor.action.peekLocations",description:{description:"Peek locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:Mz.o},{name:"position",description:"The position at which to start",constraint:VB.L.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto"}]},handler:function(e,t,n,i,r){return yq(void 0,void 0,void 0,fn().mark((function o(){return fn().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:e.get(jz.H).executeCommand("editor.action.goToLocations",t,n,i,r,void 0,!0);case 1:case"end":return o.stop()}}),o)})))}}),jz.P.registerCommand({id:"editor.action.findReferences",handler:function(e,t,n){(0,oV.p_)(Mz.o.isUri(t)),(0,oV.p_)(VB.L.isIPosition(n));var i=e.get(fz.$);return i.openCodeEditor({resource:t},i.getFocusedCodeEditor()).then((function(e){if((0,xK.CL)(e)&&e.hasModel()){var t=iq.get(e);if(t){var i=(0,zB.PG)((function(t){return CK(e.getModel(),VB.L.lift(n),!1,t).then((function(e){return new gK(e,yB.N("ref.title","References"))}))})),r=new YB.e(n.lineNumber,n.column,n.lineNumber,n.column);return Promise.resolve(t.toggleWidget(r,i,!1))}}}))}}),jz.P.registerCommandAlias("editor.action.showReferences","editor.action.peekLocations");var Tq=(0,J.Z)((function e(t,n){(0,X.Z)(this,e),this.target=t.target,this.hasTriggerModifier=Mq(t.event,n.triggerModifier),this.hasSideBySideModifier=Mq(t.event,n.triggerSideBySideModifier),this.isNoneOrSingleMouseDown=t.event.detail<=1})),Iq=(0,J.Z)((function e(t,n){(0,X.Z)(this,e),this.keyCodeIsTriggerKey=t.keyCode===n.triggerKey,this.keyCodeIsSideBySideKey=t.keyCode===n.triggerSideBySideKey,this.hasTriggerModifier=Mq(t,n.triggerModifier)})),Oq=function(){function e(t,n,i,r){(0,X.Z)(this,e),this.triggerKey=t,this.triggerModifier=n,this.triggerSideBySideKey=i,this.triggerSideBySideModifier=r}return(0,J.Z)(e,[{key:"equals",value:function(e){return this.triggerKey===e.triggerKey&&this.triggerModifier===e.triggerModifier&&this.triggerSideBySideKey===e.triggerSideBySideKey&&this.triggerSideBySideModifier===e.triggerSideBySideModifier}}]),e}();function Aq(e){return"altKey"===e?dz.dz?new Oq(57,"metaKey",6,"altKey"):new Oq(5,"ctrlKey",6,"altKey"):dz.dz?new Oq(6,"altKey",57,"metaKey"):new Oq(6,"altKey",5,"ctrlKey")}var Rq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this))._onMouseMoveOrRelevantKeyDown=i._register(new _W.Q5),i.onMouseMoveOrRelevantKeyDown=i._onMouseMoveOrRelevantKeyDown.event,i._onExecute=i._register(new _W.Q5),i.onExecute=i._onExecute.event,i._onCancel=i._register(new _W.Q5),i.onCancel=i._onCancel.event,i._editor=e,i._opts=Aq(i._editor.getOption(66)),i._lastMouseMoveEvent=null,i._hasTriggerKeyOnMouseDown=!1,i._lineNumberOnMouseDown=0,i._register(i._editor.onDidChangeConfiguration((function(e){if(e.hasChanged(66)){var t=Aq(i._editor.getOption(66));if(i._opts.equals(t))return;i._opts=t,i._lastMouseMoveEvent=null,i._hasTriggerKeyOnMouseDown=!1,i._lineNumberOnMouseDown=0,i._onCancel.fire()}}))),i._register(i._editor.onMouseMove((function(e){return i._onEditorMouseMove(new Tq(e,i._opts))}))),i._register(i._editor.onMouseDown((function(e){return i._onEditorMouseDown(new Tq(e,i._opts))}))),i._register(i._editor.onMouseUp((function(e){return i._onEditorMouseUp(new Tq(e,i._opts))}))),i._register(i._editor.onKeyDown((function(e){return i._onEditorKeyDown(new Iq(e,i._opts))}))),i._register(i._editor.onKeyUp((function(e){return i._onEditorKeyUp(new Iq(e,i._opts))}))),i._register(i._editor.onMouseDrag((function(){return i._resetHandler()}))),i._register(i._editor.onDidChangeCursorSelection((function(e){return i._onDidChangeCursorSelection(e)}))),i._register(i._editor.onDidChangeModel((function(e){return i._resetHandler()}))),i._register(i._editor.onDidChangeModelContent((function(){return i._resetHandler()}))),i._register(i._editor.onDidScrollChange((function(e){(e.scrollTopChanged||e.scrollLeftChanged)&&i._resetHandler()}))),i}return(0,J.Z)(n,[{key:"_onDidChangeCursorSelection",value:function(e){e.selection&&e.selection.startColumn!==e.selection.endColumn&&this._resetHandler()}},{key:"_onEditorMouseMove",value:function(e){this._lastMouseMoveEvent=e,this._onMouseMoveOrRelevantKeyDown.fire([e,null])}},{key:"_onEditorMouseDown",value:function(e){this._hasTriggerKeyOnMouseDown=e.hasTriggerModifier,this._lineNumberOnMouseDown=e.target.position?e.target.position.lineNumber:0}},{key:"_onEditorMouseUp",value:function(e){var t=e.target.position?e.target.position.lineNumber:0;this._hasTriggerKeyOnMouseDown&&this._lineNumberOnMouseDown&&this._lineNumberOnMouseDown===t&&this._onExecute.fire(e)}},{key:"_onEditorKeyDown",value:function(e){this._lastMouseMoveEvent&&(e.keyCodeIsTriggerKey||e.keyCodeIsSideBySideKey&&e.hasTriggerModifier)?this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent,e]):e.hasTriggerModifier&&this._onCancel.fire()}},{key:"_onEditorKeyUp",value:function(e){e.keyCodeIsTriggerKey&&this._onCancel.fire()}},{key:"_resetHandler",value:function(){this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._onCancel.fire()}}]),n}(WB.JT),Pq=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},Zq=function(e,t){return function(n,i){t(n,i,e)}},Fq=function(){function e(t,n,i){var r=this;(0,X.Z)(this,e),this.textModelResolverService=n,this.modeService=i,this.toUnhook=new WB.SL,this.toUnhookForKeyboard=new WB.SL,this.linkDecorations=[],this.currentWordAtPosition=null,this.previousPromise=null,this.editor=t;var o=new Rq(t);this.toUnhook.add(o),this.toUnhook.add(o.onMouseMoveOrRelevantKeyDown((function(e){var t=(0,ne.Z)(e,2),n=t[0],i=t[1];r.startFindDefinitionFromMouse(n,(0,oV.f6)(i))}))),this.toUnhook.add(o.onExecute((function(e){r.isEnabled(e)&&r.gotoDefinition(e.target.position,e.hasSideBySideModifier).then((function(){r.removeLinkDecorations()}),(function(e){r.removeLinkDecorations(),(0,LB.dL)(e)}))}))),this.toUnhook.add(o.onCancel((function(){r.removeLinkDecorations(),r.currentWordAtPosition=null})))}return(0,J.Z)(e,[{key:"startFindDefinitionFromCursor",value:function(e){var t=this;return this.startFindDefinition(e).then((function(){t.toUnhookForKeyboard.add(t.editor.onDidChangeCursorPosition((function(){t.currentWordAtPosition=null,t.removeLinkDecorations(),t.toUnhookForKeyboard.clear()}))),t.toUnhookForKeyboard.add(t.editor.onKeyDown((function(e){e&&(t.currentWordAtPosition=null,t.removeLinkDecorations(),t.toUnhookForKeyboard.clear())})))}))}},{key:"startFindDefinitionFromMouse",value:function(e,t){if(!(9===e.target.type&&this.linkDecorations.length>0)){if(!this.editor.hasModel()||!this.isEnabled(e,t))return this.currentWordAtPosition=null,void this.removeLinkDecorations();var n=e.target.position;this.startFindDefinition(n)}}},{key:"startFindDefinition",value:function(e){var t,n=this;this.toUnhookForKeyboard.clear();var i=e?null===(t=this.editor.getModel())||void 0===t?void 0:t.getWordAtPosition(e):null;if(!i)return this.currentWordAtPosition=null,this.removeLinkDecorations(),Promise.resolve(0);if(this.currentWordAtPosition&&this.currentWordAtPosition.startColumn===i.startColumn&&this.currentWordAtPosition.endColumn===i.endColumn&&this.currentWordAtPosition.word===i.word)return Promise.resolve(0);this.currentWordAtPosition=i;var r=new Tz.yy(this.editor,15);return this.previousPromise&&(this.previousPromise.cancel(),this.previousPromise=null),this.previousPromise=(0,zB.PG)((function(t){return n.findDefinition(e,t)})),this.previousPromise.then((function(t){if(t&&t.length&&r.validate(n.editor))if(t.length>1)n.addDecoration(new YB.e(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn),(new EB).appendText(yB.N("multipleResults","Click to show {0} definitions.",t.length)));else{var o=t[0];if(!o.uri)return;n.textModelResolverService.createModelReference(o.uri).then((function(t){if(t.object&&t.object.textEditorModel){var r=t.object.textEditorModel,a=o.range.startLineNumber;if(a<1||a>r.getLineCount())t.dispose();else{var s,u=n.getPreviewValue(r,a,o);s=o.originSelectionRange?YB.e.lift(o.originSelectionRange):new YB.e(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn);var l=n.modeService.getModeIdByFilepathOrFirstLine(r.uri);n.addDecoration(s,(new EB).appendCodeblock(l||"",u)),t.dispose()}}else t.dispose()}))}else n.removeLinkDecorations()})).then(void 0,LB.dL)}},{key:"getPreviewValue",value:function(t,n,i){var r=i.targetSelectionRange?i.range:this.getPreviewRangeBasedOnBrackets(t,n);return r.endLineNumber-r.startLineNumber>=e.MAX_SOURCE_PREVIEW_LINES&&(r=this.getPreviewRangeBasedOnIndentation(t,n)),this.stripIndentationFromPreviewRange(t,n,r)}},{key:"stripIndentationFromPreviewRange",value:function(e,t,n){for(var i=e.getLineFirstNonWhitespaceColumn(t),r=t+1;r<n.endLineNumber;r++){var o=e.getLineFirstNonWhitespaceColumn(r);i=Math.min(i,o)}return e.getValueInRange(n).replace(new RegExp("^\\s{".concat(i-1,"}"),"gm"),"").trim()}},{key:"getPreviewRangeBasedOnIndentation",value:function(t,n){for(var i=t.getLineFirstNonWhitespaceColumn(n),r=Math.min(t.getLineCount(),n+e.MAX_SOURCE_PREVIEW_LINES),o=n+1;o<r;o++){if(i===t.getLineFirstNonWhitespaceColumn(o))break}return new YB.e(n,1,o+1,1)}},{key:"getPreviewRangeBasedOnBrackets",value:function(t,n){for(var i=Math.min(t.getLineCount(),n+e.MAX_SOURCE_PREVIEW_LINES),r=[],o=!0,a=t.findNextBracket(new VB.L(n,1));null!==a;){if(0===r.length)r.push(a);else{var s=r[r.length-1];if(s.open[0]===a.open[0]&&s.isOpen&&!a.isOpen?r.pop():r.push(a),0===r.length){if(!o)return new YB.e(n,1,a.range.endLineNumber+1,1);o=!1}}var u=t.getLineMaxColumn(n),l=a.range.endLineNumber,c=a.range.endColumn;if(u===a.range.endColumn&&(l++,c=1),l>i)return new YB.e(n,1,i+1,1);a=t.findNextBracket(new VB.L(l,c))}return new YB.e(n,1,i+1,1)}},{key:"addDecoration",value:function(e,t){var n={range:e,options:{inlineClassName:"goto-definition-link",hoverMessage:t}};this.linkDecorations=this.editor.deltaDecorations(this.linkDecorations,[n])}},{key:"removeLinkDecorations",value:function(){this.linkDecorations.length>0&&(this.linkDecorations=this.editor.deltaDecorations(this.linkDecorations,[]))}},{key:"isEnabled",value:function(e,t){return this.editor.hasModel()&&e.isNoneOrSingleMouseDown&&6===e.target.type&&(e.hasTriggerModifier||!!t&&t.keyCodeIsTriggerKey)&&Iz.Ct.has(this.editor.getModel())}},{key:"findDefinition",value:function(e,t){var n=this.editor.getModel();return n?_K(n,e,t):Promise.resolve(null)}},{key:"gotoDefinition",value:function(e,t){var n=this;return this.editor.setPosition(e),this.editor.invokeWithinContext((function(e){var i=!t&&n.editor.getOption(74)&&!n.isInPeekEditor(e);return new kq({openToSide:t,openInPeek:i,muteMessage:!0},{alias:"",label:"",id:"",precondition:void 0}).run(e,n.editor)}))}},{key:"isInPeekEditor",value:function(e){var t=e.get(kB.i6);return NY.inPeekEditor.getValue(t)}},{key:"dispose",value:function(){this.toUnhook.dispose()}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();Fq.ID="editor.contrib.gotodefinitionatposition",Fq.MAX_SOURCE_PREVIEW_LINES=8,Fq=Pq([Zq(1,SK.S),Zq(2,PV.h)],Fq),(0,_B._K)(Fq.ID,Fq),(0,$B.Ic)((function(e,t){var n=e.getColor(GB._Y);n&&t.addRule(".monaco-editor .goto-definition-link { color: ".concat(n," !important; }"))}));var jq=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},Hq=function(e,t){return function(n,i){t(n,i,e)}},Bq=function(){function e(t,n,i,r,o,a){var s=this;(0,X.Z)(this,e),this._editor=t,this._instantiationService=n,this._openerService=i,this._modeService=r,this._themeService=o,this._toUnhook=new WB.SL,this._isMouseDown=!1,this._hoverClicked=!1,this._contentWidget=null,this._glyphWidget=null,this._hookEvents(),this._didChangeConfigurationHandler=this._editor.onDidChangeConfiguration((function(e){e.hasChanged(50)&&(s._unhookEvents(),s._hookEvents())})),this._hoverVisibleKey=bB.u.hoverVisible.bindTo(a)}return(0,J.Z)(e,[{key:"_hookEvents",value:function(){var e=this,t=function(){return e._hideWidgets()},n=this._editor.getOption(50);this._isHoverEnabled=n.enabled,this._isHoverSticky=n.sticky,this._isHoverEnabled?(this._toUnhook.add(this._editor.onMouseDown((function(t){return e._onEditorMouseDown(t)}))),this._toUnhook.add(this._editor.onMouseUp((function(t){return e._onEditorMouseUp(t)}))),this._toUnhook.add(this._editor.onMouseMove((function(t){return e._onEditorMouseMove(t)}))),this._toUnhook.add(this._editor.onKeyDown((function(t){return e._onKeyDown(t)}))),this._toUnhook.add(this._editor.onDidChangeModelDecorations((function(){return e._onModelDecorationsChanged()})))):(this._toUnhook.add(this._editor.onMouseMove((function(t){return e._onEditorMouseMove(t)}))),this._toUnhook.add(this._editor.onKeyDown((function(t){return e._onKeyDown(t)})))),this._toUnhook.add(this._editor.onMouseLeave(t)),this._toUnhook.add(this._editor.onDidChangeModel(t)),this._toUnhook.add(this._editor.onDidScrollChange((function(t){return e._onEditorScrollChanged(t)})))}},{key:"_unhookEvents",value:function(){this._toUnhook.clear()}},{key:"_onModelDecorationsChanged",value:function(){var e,t;null===(e=this._contentWidget)||void 0===e||e.onModelDecorationsChanged(),null===(t=this._glyphWidget)||void 0===t||t.onModelDecorationsChanged()}},{key:"_onEditorScrollChanged",value:function(e){(e.scrollTopChanged||e.scrollLeftChanged)&&this._hideWidgets()}},{key:"_onEditorMouseDown",value:function(e){this._isMouseDown=!0;var t=e.target.type;9!==t||e.target.detail!==sK.ID?12===t&&e.target.detail===cK.ID||(12!==t&&e.target.detail!==cK.ID&&(this._hoverClicked=!1),this._hideWidgets()):this._hoverClicked=!0}},{key:"_onEditorMouseUp",value:function(e){this._isMouseDown=!1}},{key:"_onEditorMouseMove",value:function(e){var t,n,i,r,o,a,s=e.target.type;if((!this._isMouseDown||!this._hoverClicked)&&(!this._isHoverSticky||9!==s||e.target.detail!==sK.ID)&&(!this._isHoverSticky||(null===(n=null===(t=e.event.browserEvent.view)||void 0===t?void 0:t.getSelection())||void 0===n?void 0:n.isCollapsed))&&(this._isHoverSticky||9!==s||e.target.detail!==sK.ID||!(null===(i=this._contentWidget)||void 0===i?void 0:i.isColorPickerVisible()))&&(!this._isHoverSticky||12!==s||e.target.detail!==cK.ID)){if(7===s){var u=this._editor.getOption(40).typicalHalfwidthCharacterWidth/2,l=e.target.detail;l&&!l.isAfterLines&&"number"===typeof l.horizontalDistanceToText&&l.horizontalDistanceToText<u&&(s=6)}if(6===s){if(null===(r=this._glyphWidget)||void 0===r||r.hide(),this._isHoverEnabled&&e.target.range){var c=(0,Ct.Z)((null===(o=e.target.element)||void 0===o?void 0:o.classList.values())||[]).find((function(e){return e.startsWith("ced-colorBox")}))&&e.target.range.endColumn-e.target.range.startColumn===1?new YB.e(e.target.range.startLineNumber,e.target.range.startColumn+1,e.target.range.endLineNumber,e.target.range.endColumn+1):e.target.range;this._contentWidget||(this._contentWidget=new sK(this._editor,this._hoverVisibleKey,this._instantiationService,this._themeService)),this._contentWidget.startShowingAt(c,0,!1)}}else 2===s?(null===(a=this._contentWidget)||void 0===a||a.hide(),this._isHoverEnabled&&e.target.position&&(this._glyphWidget||(this._glyphWidget=new cK(this._editor,this._modeService,this._openerService)),this._glyphWidget.startShowingAt(e.target.position.lineNumber))):this._hideWidgets()}}},{key:"_onKeyDown",value:function(e){5!==e.keyCode&&6!==e.keyCode&&57!==e.keyCode&&4!==e.keyCode&&this._hideWidgets()}},{key:"_hideWidgets",value:function(){var e,t,n;this._isMouseDown&&this._hoverClicked&&(null===(e=this._contentWidget)||void 0===e?void 0:e.isColorPickerVisible())||(this._hoverClicked=!1,null===(t=this._glyphWidget)||void 0===t||t.hide(),null===(n=this._contentWidget)||void 0===n||n.hide())}},{key:"isColorPickerVisible",value:function(){var e;return(null===(e=this._contentWidget)||void 0===e?void 0:e.isColorPickerVisible())||!1}},{key:"showContentHover",value:function(e,t,n){this._contentWidget||(this._contentWidget=new sK(this._editor,this._hoverVisibleKey,this._instantiationService,this._themeService)),this._contentWidget.startShowingAt(e,t,n)}},{key:"dispose",value:function(){var e,t;this._unhookEvents(),this._toUnhook.dispose(),this._didChangeConfigurationHandler.dispose(),null===(e=this._glyphWidget)||void 0===e||e.dispose(),null===(t=this._contentWidget)||void 0===t||t.dispose()}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();Bq.ID="editor.contrib.hover",Bq=jq([Hq(1,oW.TG),Hq(2,XV.v4),Hq(3,PV.h),Hq(4,$B.XE),Hq(5,kB.i6)],Bq);var zq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.showHover",label:yB.N({key:"showHover",comment:["Label for action that will trigger the showing of a hover in the editor.","This allows for users to show the hover without using the mouse."]},"Show Hover"),alias:"Show Hover",precondition:void 0,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2087),weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){if(t.hasModel()){var n=Bq.get(t);if(n){var i=t.getPosition(),r=new YB.e(i.lineNumber,i.column,i.lineNumber,i.column),o=2===t.getOption(2);n.showContentHover(r,1,o)}}}}]),n}(_B.R6),Wq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.showDefinitionPreviewHover",label:yB.N({key:"showDefinitionPreviewHover",comment:["Label for action that will trigger the showing of definition preview hover in the editor.","This allows for users to show the definition preview hover without using the mouse."]},"Show Definition Preview Hover"),alias:"Show Definition Preview Hover",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=Bq.get(t);if(n){var i=t.getPosition();if(i){var r=new YB.e(i.lineNumber,i.column,i.lineNumber,i.column);Fq.get(t).startFindDefinitionFromCursor(i).then((function(){n.showContentHover(r,1,!0)}))}}}}]),n}(_B.R6);(0,_B._K)(Bq.ID,Bq),(0,_B.Qr)(zq),(0,_B.Qr)(Wq),(0,$B.Ic)((function(e,t){var n=e.getColor(GB.pt);n&&t.addRule(".monaco-editor .hoverHighlight { background-color: ".concat(n,"; }"));var i=e.getColor(GB.yJ);i&&t.addRule(".monaco-editor .monaco-hover { background-color: ".concat(i,"; }"));var r=e.getColor(GB.CN);r&&(t.addRule(".monaco-editor .monaco-hover { border: 1px solid ".concat(r,"; }")),t.addRule(".monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ".concat(r.transparent(.5),"; }")),t.addRule(".monaco-editor .monaco-hover hr { border-top: 1px solid ".concat(r.transparent(.5),"; }")),t.addRule(".monaco-editor .monaco-hover hr { border-bottom: 0px solid ".concat(r.transparent(.5),"; }")));var o=e.getColor(GB.ur);o&&t.addRule(".monaco-editor .monaco-hover a { color: ".concat(o,"; }"));var a=e.getColor(GB.Sb);a&&t.addRule(".monaco-editor .monaco-hover { color: ".concat(a,"; }"));var s=e.getColor(GB.Lo);s&&t.addRule(".monaco-editor .monaco-hover .hover-row .actions { background-color: ".concat(s,"; }"));var u=e.getColor(GB.Sw);u&&t.addRule(".monaco-editor .monaco-hover code { background-color: ".concat(u,"; }"))}));var Vq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this))._editor=e,i._register(e.onMouseDown((function(e){return i.onMouseDown(e)}))),i}return(0,J.Z)(n,[{key:"dispose",value:function(){(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"onMouseDown",value:function(e){var t;if(6===e.target.type&&((0,Ct.Z)((null===(t=e.target.element)||void 0===t?void 0:t.classList.values())||[]).find((function(e){return e.startsWith("ced-colorBox")}))&&e.target.range)){var n=this._editor.getContribution(Bq.ID);if(!n.isColorPickerVisible()){var i=new YB.e(e.target.range.startLineNumber,e.target.range.startColumn+1,e.target.range.endLineNumber,e.target.range.endColumn+1);n.showContentHover(i,0,!1)}}}}]),n}(WB.JT);Vq.ID="editor.contrib.colorContribution",(0,_B._K)(Vq.ID,Vq);var Yq=n(85025),Uq=n(65262),Kq=function(){function e(t,n){(0,X.Z)(this,e),this._selection=t,this._insertSpace=n,this._usedEndToken=null}return(0,J.Z)(e,[{key:"_createOperationsForBlockComment",value:function(t,n,i,r,o,a){var s,u=t.startLineNumber,l=t.startColumn,c=t.endLineNumber,d=t.endColumn,h=o.getLineContent(u),f=o.getLineContent(c),p=h.lastIndexOf(n,l-1+n.length),g=f.indexOf(i,d-1-i.length);if(-1!==p&&-1!==g)if(u===c){h.substring(p+n.length,g).indexOf(i)>=0&&(p=-1,g=-1)}else{var v=h.substring(p+n.length),m=f.substring(0,g);(v.indexOf(i)>=0||m.indexOf(i)>=0)&&(p=-1,g=-1)}-1!==p&&-1!==g?(r&&p+n.length<h.length&&32===h.charCodeAt(p+n.length)&&(n+=" "),r&&g>0&&32===f.charCodeAt(g-1)&&(i=" "+i,g-=1),s=e._createRemoveBlockCommentOperations(new YB.e(u,p+n.length+1,c,g+1),n,i)):(s=e._createAddBlockCommentOperations(t,n,i,this._insertSpace),this._usedEndToken=1===s.length?i:null);var _,y=(0,Na.Z)(s);try{for(y.s();!(_=y.n()).done;){var b=_.value;a.addTrackedEditOperation(b.range,b.text)}}catch(w){y.e(w)}finally{y.f()}}},{key:"getEditOperations",value:function(e,t){var n=this._selection.startLineNumber,i=this._selection.startColumn;e.tokenizeIfCheap(n);var r=e.getLanguageIdAtPosition(n,i),o=Uq.zu.getComments(r);o&&o.blockCommentStartToken&&o.blockCommentEndToken&&this._createOperationsForBlockComment(this._selection,o.blockCommentStartToken,o.blockCommentEndToken,this._insertSpace,e,t)}},{key:"computeCursorState",value:function(e,t){var n=t.getInverseEditOperations();if(2===n.length){var i=n[0],r=n[1];return new wB.Y(i.range.endLineNumber,i.range.endColumn,r.range.startLineNumber,r.range.startColumn)}var o=n[0].range,a=this._usedEndToken?-this._usedEndToken.length-1:0;return new wB.Y(o.endLineNumber,o.endColumn+a,o.endLineNumber,o.endColumn+a)}}],[{key:"_haystackHasNeedleAtOffset",value:function(e,t,n){if(n<0)return!1;var i=t.length;if(n+i>e.length)return!1;for(var r=0;r<i;r++){var o=e.charCodeAt(n+r),a=t.charCodeAt(r);if(o!==a&&(!(o>=65&&o<=90&&o+32===a)&&!(a>=65&&a<=90&&a+32===o)))return!1}return!0}},{key:"_createRemoveBlockCommentOperations",value:function(e,t,n){var i=[];return YB.e.isEmpty(e)?i.push(Yq.h.delete(new YB.e(e.startLineNumber,e.startColumn-t.length,e.endLineNumber,e.endColumn+n.length))):(i.push(Yq.h.delete(new YB.e(e.startLineNumber,e.startColumn-t.length,e.startLineNumber,e.startColumn))),i.push(Yq.h.delete(new YB.e(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn+n.length)))),i}},{key:"_createAddBlockCommentOperations",value:function(e,t,n,i){var r=[];return YB.e.isEmpty(e)?r.push(Yq.h.replace(new YB.e(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),t+" "+n)):(r.push(Yq.h.insert(new VB.L(e.startLineNumber,e.startColumn),t+(i?" ":""))),r.push(Yq.h.insert(new VB.L(e.endLineNumber,e.endColumn),(i?" ":"")+n))),r}}]),e}(),qq=function(){function e(t,n,i,r,o,a){(0,X.Z)(this,e),this._selection=t,this._tabSize=n,this._type=i,this._insertSpace=r,this._selectionId=null,this._deltaColumn=0,this._moveEndPositionDown=!1,this._ignoreEmptyLines=o,this._ignoreFirstLine=a||!1}return(0,J.Z)(e,[{key:"_executeLineComments",value:function(t,n,i,r){var o;i.shouldRemoveComments?o=e._createRemoveLineCommentsOperations(i.lines,r.startLineNumber):(e._normalizeInsertionPoint(t,i.lines,r.startLineNumber,this._tabSize),o=this._createAddLineCommentsOperations(i.lines,r.startLineNumber));for(var a=new VB.L(r.positionLineNumber,r.positionColumn),s=0,u=o.length;s<u;s++){if(n.addEditOperation(o[s].range,o[s].text),YB.e.isEmpty(o[s].range)&&YB.e.getStartPosition(o[s].range).equals(a))t.getLineContent(a.lineNumber).length+1===a.column&&(this._deltaColumn=(o[s].text||"").length)}this._selectionId=n.trackSelection(r)}},{key:"_attemptRemoveBlockComment",value:function(e,t,n,i){var r=t.startLineNumber,o=t.endLineNumber,a=i.length+Math.max(e.getLineFirstNonWhitespaceColumn(t.startLineNumber),t.startColumn),s=e.getLineContent(r).lastIndexOf(n,a-1),u=e.getLineContent(o).indexOf(i,t.endColumn-1-n.length);return-1!==s&&-1===u&&(u=e.getLineContent(r).indexOf(i,s+n.length),o=r),-1===s&&-1!==u&&(s=e.getLineContent(o).lastIndexOf(n,u),r=o),!t.isEmpty()||-1!==s&&-1!==u||-1!==(s=e.getLineContent(r).indexOf(n))&&(u=e.getLineContent(r).indexOf(i,s+n.length)),-1!==s&&32===e.getLineContent(r).charCodeAt(s+n.length)&&(n+=" "),-1!==u&&32===e.getLineContent(o).charCodeAt(u-1)&&(i=" "+i,u-=1),-1!==s&&-1!==u?Kq._createRemoveBlockCommentOperations(new YB.e(r,s+n.length+1,o,u+1),n,i):null}},{key:"_executeBlockComment",value:function(e,t,n){e.tokenizeIfCheap(n.startLineNumber);var i=e.getLanguageIdAtPosition(n.startLineNumber,1),r=Uq.zu.getComments(i);if(r&&r.blockCommentStartToken&&r.blockCommentEndToken){var o=r.blockCommentStartToken,a=r.blockCommentEndToken,s=this._attemptRemoveBlockComment(e,n,o,a);if(!s){if(n.isEmpty()){var u=e.getLineContent(n.startLineNumber),l=Dz.LC(u);-1===l&&(l=u.length),s=Kq._createAddBlockCommentOperations(new YB.e(n.startLineNumber,l+1,n.startLineNumber,u.length+1),o,a,this._insertSpace)}else s=Kq._createAddBlockCommentOperations(new YB.e(n.startLineNumber,e.getLineFirstNonWhitespaceColumn(n.startLineNumber),n.endLineNumber,e.getLineMaxColumn(n.endLineNumber)),o,a,this._insertSpace);1===s.length&&(this._deltaColumn=o.length+1)}this._selectionId=t.trackSelection(n);var c,d=(0,Na.Z)(s);try{for(d.s();!(c=d.n()).done;){var h=c.value;t.addEditOperation(h.range,h.text)}}catch(f){d.e(f)}finally{d.f()}}}},{key:"getEditOperations",value:function(t,n){var i=this._selection;if(this._moveEndPositionDown=!1,i.startLineNumber===i.endLineNumber&&this._ignoreFirstLine)return n.addEditOperation(new YB.e(i.startLineNumber,t.getLineMaxColumn(i.startLineNumber),i.startLineNumber+1,1),i.startLineNumber===t.getLineCount()?"":"\n"),void(this._selectionId=n.trackSelection(i));i.startLineNumber<i.endLineNumber&&1===i.endColumn&&(this._moveEndPositionDown=!0,i=i.setEndPosition(i.endLineNumber-1,t.getLineMaxColumn(i.endLineNumber-1)));var r=e._gatherPreflightData(this._type,this._insertSpace,t,i.startLineNumber,i.endLineNumber,this._ignoreEmptyLines,this._ignoreFirstLine);return r.supported?this._executeLineComments(t,n,r,i):this._executeBlockComment(t,n,i)}},{key:"computeCursorState",value:function(e,t){var n=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(n=n.setEndPosition(n.endLineNumber+1,1)),new wB.Y(n.selectionStartLineNumber,n.selectionStartColumn+this._deltaColumn,n.positionLineNumber,n.positionColumn+this._deltaColumn)}},{key:"_createAddLineCommentsOperations",value:function(e,t){for(var n=[],i=this._insertSpace?" ":"",r=0,o=e.length;r<o;r++){var a=e[r];a.ignore||n.push(Yq.h.insert(new VB.L(t+r,a.commentStrOffset+1),a.commentStr+i))}return n}}],[{key:"_gatherPreflightCommentStrings",value:function(e,t,n){e.tokenizeIfCheap(t);var i=e.getLanguageIdAtPosition(t,1),r=Uq.zu.getComments(i),o=r?r.lineCommentToken:null;if(!o)return null;for(var a=[],s=0,u=n-t+1;s<u;s++)a[s]={ignore:!1,commentStr:o,commentStrOffset:0,commentStrLength:o.length};return a}},{key:"_analyzeLines",value:function(e,t,n,i,r,o,a){var s,u=!0;s=0===e||1!==e;for(var l=0,c=i.length;l<c;l++){var d=i[l],h=r+l;if(h===r&&a)d.ignore=!0;else{var f=n.getLineContent(h),p=Dz.LC(f);if(-1!==p){if(u=!1,d.ignore=!1,d.commentStrOffset=p,s&&!Kq._haystackHasNeedleAtOffset(f,d.commentStr,p)&&(0===e?s=!1:1===e||(d.ignore=!0)),s&&t){var g=p+d.commentStrLength;g<f.length&&32===f.charCodeAt(g)&&(d.commentStrLength+=1)}}else d.ignore=o,d.commentStrOffset=f.length}}if(0===e&&u){s=!1;for(var v=0,m=i.length;v<m;v++)i[v].ignore=!1}return{supported:!0,shouldRemoveComments:s,lines:i}}},{key:"_gatherPreflightData",value:function(t,n,i,r,o,a,s){var u=e._gatherPreflightCommentStrings(i,r,o);return null===u?{supported:!1}:e._analyzeLines(t,n,i,u,r,a,s)}},{key:"_createRemoveLineCommentsOperations",value:function(e,t){for(var n=[],i=0,r=e.length;i<r;i++){var o=e[i];o.ignore||n.push(Yq.h.delete(new YB.e(t+i,o.commentStrOffset+1,t+i,o.commentStrOffset+o.commentStrLength+1)))}return n}},{key:"nextVisibleColumn",value:function(e,t,n,i){return n?e+(t-e%t):e+i}},{key:"_normalizeInsertionPoint",value:function(t,n,i,r){for(var o,a,s=1073741824,u=0,l=n.length;u<l;u++)if(!n[u].ignore){for(var c=t.getLineContent(i+u),d=0,h=0,f=n[u].commentStrOffset;d<s&&h<f;h++)d=e.nextVisibleColumn(d,r,9===c.charCodeAt(h),1);d<s&&(s=d)}s=Math.floor(s/r)*r;for(var p=0,g=n.length;p<g;p++)if(!n[p].ignore){var v=t.getLineContent(i+p),m=0;for(o=0,a=n[p].commentStrOffset;m<s&&o<a;o++)m=e.nextVisibleColumn(m,r,9===v.charCodeAt(o),1);n[p].commentStrOffset=m>s?o-1:o}}}]),e}(),Gq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,i))._type=e,r}return(0,J.Z)(n,[{key:"run",value:function(e,t){if(t.hasModel()){var n=[],i=t.getModel().getOptions(),r=t.getOption(17),o=t.getSelections().map((function(e,t){return{selection:e,index:t,ignoreFirstLine:!1}}));o.sort((function(e,t){return YB.e.compareRangesUsingStarts(e.selection,t.selection)}));for(var a=o[0],s=1;s<o.length;s++){var u=o[s];a.selection.endLineNumber===u.selection.startLineNumber&&(a.index<u.index?u.ignoreFirstLine=!0:(a.ignoreFirstLine=!0,a=u))}var l,c=(0,Na.Z)(o);try{for(c.s();!(l=c.n()).done;){var d=l.value;n.push(new qq(d.selection,i.tabSize,this._type,r.insertSpace,r.ignoreEmptyLines,d.ignoreFirstLine))}}catch(h){c.e(h)}finally{c.f()}t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}}]),n}(_B.R6),$q=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,0,{id:"editor.action.commentLine",label:yB.N("comment.line","Toggle Line Comment"),alias:"Toggle Line Comment",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:2133,weight:100},menuOpts:{menuId:QB.eH.MenubarEditMenu,group:"5_insert",title:yB.N({key:"miToggleLineComment",comment:["&& denotes a mnemonic"]},"&&Toggle Line Comment"),order:1}})}return(0,J.Z)(n)}(Gq),Qq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,1,{id:"editor.action.addCommentLine",label:yB.N("comment.line.add","Add Line Comment"),alias:"Add Line Comment",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2081),weight:100}})}return(0,J.Z)(n)}(Gq),Xq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,2,{id:"editor.action.removeCommentLine",label:yB.N("comment.line.remove","Remove Line Comment"),alias:"Remove Line Comment",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2099),weight:100}})}return(0,J.Z)(n)}(Gq),Jq=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.blockComment",label:yB.N("comment.block","Toggle Block Comment"),alias:"Toggle Block Comment",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:1567,linux:{primary:3103},weight:100},menuOpts:{menuId:QB.eH.MenubarEditMenu,group:"5_insert",title:yB.N({key:"miToggleBlockComment",comment:["&& denotes a mnemonic"]},"Toggle &&Block Comment"),order:2}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){if(t.hasModel()){var n,i=t.getOption(17),r=[],o=t.getSelections(),a=(0,Na.Z)(o);try{for(a.s();!(n=a.n()).done;){var s=n.value;r.push(new Kq(s,i.insertSpace))}}catch(u){a.e(u)}finally{a.f()}t.pushUndoStop(),t.executeCommands(this.id,r),t.pushUndoStop()}}}]),n}(_B.R6);(0,_B.Qr)($q),(0,_B.Qr)(Qq),(0,_B.Qr)(Xq),(0,_B.Qr)(Jq);var eG=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},tG=function(e,t){return function(n,i){t(n,i,e)}},nG=function(){function e(t,n,i,r,o,a){var s=this;(0,X.Z)(this,e),this._contextMenuService=n,this._contextViewService=i,this._contextKeyService=r,this._keybindingService=o,this._menuService=a,this._toDispose=new WB.SL,this._contextMenuIsBeingShownCount=0,this._editor=t,this._toDispose.add(this._editor.onContextMenu((function(e){return s._onContextMenu(e)}))),this._toDispose.add(this._editor.onMouseWheel((function(e){if(s._contextMenuIsBeingShownCount>0){var t=s._contextViewService.getContextViewElement(),n=e.srcElement;n.shadowRoot&&aW.getShadowRoot(t)===n.shadowRoot||s._contextViewService.hideContextView()}}))),this._toDispose.add(this._editor.onKeyDown((function(e){58===e.keyCode&&(e.preventDefault(),e.stopPropagation(),s.showContextMenu())})))}return(0,J.Z)(e,[{key:"_onContextMenu",value:function(e){if(this._editor.hasModel()){if(!this._editor.getOption(18))return this._editor.focus(),void(e.target.position&&!this._editor.getSelection().containsPosition(e.target.position)&&this._editor.setPosition(e.target.position));if(12!==e.target.type&&(e.event.preventDefault(),6===e.target.type||7===e.target.type||1===e.target.type)){if(this._editor.focus(),e.target.position){var t,n=!1,i=(0,Na.Z)(this._editor.getSelections());try{for(i.s();!(t=i.n()).done;){if(t.value.containsPosition(e.target.position)){n=!0;break}}}catch(o){i.e(o)}finally{i.f()}n||this._editor.setPosition(e.target.position)}var r=null;1!==e.target.type&&(r={x:e.event.posx-1,width:2,y:e.event.posy-1,height:2}),this.showContextMenu(r)}}}},{key:"showContextMenu",value:function(e){if(this._editor.getOption(18)&&this._editor.hasModel())if(this._contextMenuService){var t=this._getMenuActions(this._editor.getModel(),QB.eH.EditorContext);t.length>0&&this._doShowContextMenu(t,e)}else this._editor.focus()}},{key:"_getMenuActions",value:function(e,t){var n=[],i=this._menuService.createMenu(t,this._contextKeyService),r=i.getActions({arg:e.uri});i.dispose();var o,a=(0,Na.Z)(r);try{for(a.s();!(o=a.n()).done;){var s,u=o.value,l=(0,ne.Z)(u,2)[1],c=0,d=(0,Na.Z)(l);try{for(d.s();!(s=d.n()).done;){var h=s.value;if(h instanceof QB.NZ){var f=this._getMenuActions(e,h.item.submenu);f.length>0&&(n.push(new sW.wY(h.id,h.label,f)),c++)}else n.push(h),c++}}catch(p){d.e(p)}finally{d.f()}c&&n.push(new sW.Z0)}}catch(p){a.e(p)}finally{a.f()}return n.length&&n.pop(),n}},{key:"_doShowContextMenu",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(this._editor.hasModel()){var i=this._editor.getOption(50);if(this._editor.updateOptions({hover:{enabled:!1}}),!n){this._editor.revealPosition(this._editor.getPosition(),1),this._editor.render();var r=this._editor.getScrolledVisiblePosition(this._editor.getPosition()),o=aW.getDomNodePagePosition(this._editor.getDomNode()),a=o.left+r.left,s=o.top+r.top+r.height;n={x:a,y:s}}var u=this._editor.getOption(111);this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:u?this._editor.getDomNode():void 0,getAnchor:function(){return n},getActions:function(){return e},getActionViewItem:function(e){var n=t._keybindingFor(e);if(n)return new yY.g(e,e,{label:!0,keybinding:n.getLabel(),isMenu:!0});var i=e;return"function"===typeof i.getActionViewItem?i.getActionViewItem():new yY.g(e,e,{icon:!0,label:!0,isMenu:!0})},getKeyBinding:function(e){return t._keybindingFor(e)},onHide:function(e){t._contextMenuIsBeingShownCount--,t._editor.focus(),t._editor.updateOptions({hover:i})}})}}},{key:"_keybindingFor",value:function(e){return this._keybindingService.lookupKeybinding(e.id)}},{key:"dispose",value:function(){this._contextMenuIsBeingShownCount>0&&this._contextViewService.hideContextView(),this._toDispose.dispose()}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();nG.ID="editor.contrib.contextmenu",nG=eG([tG(1,uW.i),tG(2,uW.u),tG(3,kB.i6),tG(4,lW.d),tG(5,QB.co)],nG);var iG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.showContextMenu",label:yB.N("action.showContextMenu.label","Show Editor Context Menu"),alias:"Show Editor Context Menu",precondition:void 0,kbOpts:{kbExpr:bB.u.textInputFocus,primary:1092,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){nG.get(t).showContextMenu()}}]),n}(_B.R6);(0,_B._K)(nG.ID,nG),(0,_B.Qr)(iG);var rG=function(){function e(t){(0,X.Z)(this,e),this.selections=t}return(0,J.Z)(e,[{key:"equals",value:function(e){var t=this.selections.length;if(t!==e.selections.length)return!1;for(var n=0;n<t;n++)if(!this.selections[n].equalsSelection(e.selections[n]))return!1;return!0}}]),e}(),oG=(0,J.Z)((function e(t,n,i){(0,X.Z)(this,e),this.cursorState=t,this.scrollTop=n,this.scrollLeft=i})),aG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this))._editor=e,i._isCursorUndoRedo=!1,i._undoStack=[],i._redoStack=[],i._register(e.onDidChangeModel((function(e){i._undoStack=[],i._redoStack=[]}))),i._register(e.onDidChangeModelContent((function(e){i._undoStack=[],i._redoStack=[]}))),i._register(e.onDidChangeCursorSelection((function(t){if(!i._isCursorUndoRedo&&t.oldSelections&&t.oldModelVersionId===t.modelVersionId){var n=new rG(t.oldSelections);i._undoStack.length>0&&i._undoStack[i._undoStack.length-1].cursorState.equals(n)||(i._undoStack.push(new oG(n,e.getScrollTop(),e.getScrollLeft())),i._redoStack=[],i._undoStack.length>50&&i._undoStack.shift())}}))),i}return(0,J.Z)(n,[{key:"cursorUndo",value:function(){this._editor.hasModel()&&0!==this._undoStack.length&&(this._redoStack.push(new oG(new rG(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._undoStack.pop()))}},{key:"cursorRedo",value:function(){this._editor.hasModel()&&0!==this._redoStack.length&&(this._undoStack.push(new oG(new rG(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._redoStack.pop()))}},{key:"_applyState",value:function(e){this._isCursorUndoRedo=!0,this._editor.setSelections(e.cursorState.selections),this._editor.setScrollPosition({scrollTop:e.scrollTop,scrollLeft:e.scrollLeft}),this._isCursorUndoRedo=!1}}],[{key:"get",value:function(e){return e.getContribution(n.ID)}}]),n}(WB.JT);aG.ID="editor.contrib.cursorUndoRedoController";var sG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"cursorUndo",label:yB.N("cursor.undo","Cursor Undo"),alias:"Cursor Undo",precondition:void 0,kbOpts:{kbExpr:bB.u.textInputFocus,primary:2099,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t,n){aG.get(t).cursorUndo()}}]),n}(_B.R6),uG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"cursorRedo",label:yB.N("cursor.redo","Cursor Redo"),alias:"Cursor Redo",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t,n){aG.get(t).cursorRedo()}}]),n}(_B.R6);(0,_B._K)(aG.ID,aG),(0,_B.Qr)(sG),(0,_B.Qr)(uG);var lG=function(){function e(t,n,i){(0,X.Z)(this,e),this.selection=t,this.targetPosition=n,this.copy=i,this.targetSelection=null}return(0,J.Z)(e,[{key:"getEditOperations",value:function(e,t){var n=e.getValueInRange(this.selection);this.copy||t.addEditOperation(this.selection,null),t.addEditOperation(new YB.e(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column),n),!this.selection.containsPosition(this.targetPosition)||this.copy&&(this.selection.getEndPosition().equals(this.targetPosition)||this.selection.getStartPosition().equals(this.targetPosition))?this.copy?this.targetSelection=new wB.Y(this.targetPosition.lineNumber,this.targetPosition.column,this.selection.endLineNumber-this.selection.startLineNumber+this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn):this.targetPosition.lineNumber>this.selection.endLineNumber?this.targetSelection=new wB.Y(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn):this.targetPosition.lineNumber<this.selection.endLineNumber?this.targetSelection=new wB.Y(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber+this.selection.endLineNumber-this.selection.startLineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn):this.selection.endColumn<=this.targetPosition.column?this.targetSelection=new wB.Y(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,(this.selection.startLineNumber,this.selection.endLineNumber,this.targetPosition.column-this.selection.endColumn+this.selection.startColumn),this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column:this.selection.endColumn):this.targetSelection=new wB.Y(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column+this.selection.endColumn-this.selection.startColumn):this.targetSelection=this.selection}},{key:"computeCursorState",value:function(e,t){return this.targetSelection}}]),e}();function cG(e){return dz.dz?e.altKey:e.ctrlKey}var dG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this))._editor=e,i._register(i._editor.onMouseDown((function(e){return i._onEditorMouseDown(e)}))),i._register(i._editor.onMouseUp((function(e){return i._onEditorMouseUp(e)}))),i._register(i._editor.onMouseDrag((function(e){return i._onEditorMouseDrag(e)}))),i._register(i._editor.onMouseDrop((function(e){return i._onEditorMouseDrop(e)}))),i._register(i._editor.onMouseDropCanceled((function(){return i._onEditorMouseDropCanceled()}))),i._register(i._editor.onKeyDown((function(e){return i.onEditorKeyDown(e)}))),i._register(i._editor.onKeyUp((function(e){return i.onEditorKeyUp(e)}))),i._register(i._editor.onDidBlurEditorWidget((function(){return i.onEditorBlur()}))),i._register(i._editor.onDidBlurEditorText((function(){return i.onEditorBlur()}))),i._dndDecorationIds=[],i._mouseDown=!1,i._modifierPressed=!1,i._dragSelection=null,i}return(0,J.Z)(n,[{key:"onEditorBlur",value:function(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1}},{key:"onEditorKeyDown",value:function(e){this._editor.getOption(29)&&!this._editor.getOption(16)&&(cG(e)&&(this._modifierPressed=!0),this._mouseDown&&cG(e)&&this._editor.updateOptions({mouseStyle:"copy"}))}},{key:"onEditorKeyUp",value:function(e){this._editor.getOption(29)&&!this._editor.getOption(16)&&(cG(e)&&(this._modifierPressed=!1),this._mouseDown&&e.keyCode===n.TRIGGER_KEY_VALUE&&this._editor.updateOptions({mouseStyle:"default"}))}},{key:"_onEditorMouseDown",value:function(e){this._mouseDown=!0}},{key:"_onEditorMouseUp",value:function(e){this._mouseDown=!1,this._editor.updateOptions({mouseStyle:"text"})}},{key:"_onEditorMouseDrag",value:function(e){var t=e.target;if(null===this._dragSelection){var n=(this._editor.getSelections()||[]).filter((function(e){return t.position&&e.containsPosition(t.position)}));if(1!==n.length)return;this._dragSelection=n[0]}cG(e.event)?this._editor.updateOptions({mouseStyle:"copy"}):this._editor.updateOptions({mouseStyle:"default"}),t.position&&(this._dragSelection.containsPosition(t.position)?this._removeDecoration():this.showAt(t.position))}},{key:"_onEditorMouseDropCanceled",value:function(){this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}},{key:"_onEditorMouseDrop",value:function(e){if(e.target&&(this._hitContent(e.target)||this._hitMargin(e.target))&&e.target.position){var t=new VB.L(e.target.position.lineNumber,e.target.position.column);if(null===this._dragSelection){var i=null;if(e.event.shiftKey){var r=this._editor.getSelection();if(r){var o=r.selectionStartLineNumber,a=r.selectionStartColumn;i=[new wB.Y(o,a,t.lineNumber,t.column)]}}else i=(this._editor.getSelections()||[]).map((function(e){return e.containsPosition(t)?new wB.Y(t.lineNumber,t.column,t.lineNumber,t.column):e}));this._editor.setSelections(i||[],"mouse",3)}else(!this._dragSelection.containsPosition(t)||(cG(e.event)||this._modifierPressed)&&(this._dragSelection.getEndPosition().equals(t)||this._dragSelection.getStartPosition().equals(t)))&&(this._editor.pushUndoStop(),this._editor.executeCommand(n.ID,new lG(this._dragSelection,t,cG(e.event)||this._modifierPressed)),this._editor.pushUndoStop())}this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}},{key:"showAt",value:function(e){var t=[{range:new YB.e(e.lineNumber,e.column,e.lineNumber,e.column),options:n._DECORATION_OPTIONS}];this._dndDecorationIds=this._editor.deltaDecorations(this._dndDecorationIds,t),this._editor.revealPosition(e,1)}},{key:"_removeDecoration",value:function(){this._dndDecorationIds=this._editor.deltaDecorations(this._dndDecorationIds,[])}},{key:"_hitContent",value:function(e){return 6===e.type||7===e.type}},{key:"_hitMargin",value:function(e){return 2===e.type||3===e.type||4===e.type}},{key:"dispose",value:function(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1,(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}}]),n}(WB.JT);dG.ID="editor.contrib.dragAndDrop",dG.TRIGGER_KEY_VALUE=dz.dz?6:5,dG._DECORATION_OPTIONS=KB.qx.register({className:"dnd-target"}),(0,_B._K)(dG.ID,dG);var hG=n(44322),fG=function(){function e(t){(0,X.Z)(this,e),this._editor=t,this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null,this._startPosition=this._editor.getPosition()}return(0,J.Z)(e,[{key:"dispose",value:function(){this._editor.deltaDecorations(this._allDecorations(),[]),this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}},{key:"reset",value:function(){this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}},{key:"getCount",value:function(){return this._decorations.length}},{key:"getFindScope",value:function(){return this._findScopeDecorationIds[0]?this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]):null}},{key:"getFindScopes",value:function(){var e=this;if(this._findScopeDecorationIds.length){var t=this._findScopeDecorationIds.map((function(t){return e._editor.getModel().getDecorationRange(t)})).filter((function(e){return!!e}));if(t.length)return t}return null}},{key:"getStartPosition",value:function(){return this._startPosition}},{key:"setStartPosition",value:function(e){this._startPosition=e,this.setCurrentFindMatch(null)}},{key:"_getDecorationIndex",value:function(e){var t=this._decorations.indexOf(e);return t>=0?t+1:1}},{key:"getCurrentMatchesPosition",value:function(t){var n,i=this._editor.getModel().getDecorationsInRange(t),r=(0,Na.Z)(i);try{for(r.s();!(n=r.n()).done;){var o=n.value,a=o.options;if(a===e._FIND_MATCH_DECORATION||a===e._CURRENT_FIND_MATCH_DECORATION)return this._getDecorationIndex(o.id)}}catch(s){r.e(s)}finally{r.f()}return 0}},{key:"setCurrentFindMatch",value:function(t){var n=this,i=null,r=0;if(t)for(var o=0,a=this._decorations.length;o<a;o++){var s=this._editor.getModel().getDecorationRange(this._decorations[o]);if(t.equalsRange(s)){i=this._decorations[o],r=o+1;break}}return null===this._highlightedDecorationId&&null===i||this._editor.changeDecorations((function(t){if(null!==n._highlightedDecorationId&&(t.changeDecorationOptions(n._highlightedDecorationId,e._FIND_MATCH_DECORATION),n._highlightedDecorationId=null),null!==i&&(n._highlightedDecorationId=i,t.changeDecorationOptions(n._highlightedDecorationId,e._CURRENT_FIND_MATCH_DECORATION)),null!==n._rangeHighlightDecorationId&&(t.removeDecoration(n._rangeHighlightDecorationId),n._rangeHighlightDecorationId=null),null!==i){var r=n._editor.getModel().getDecorationRange(i);if(r.startLineNumber!==r.endLineNumber&&1===r.endColumn){var o=r.endLineNumber-1,a=n._editor.getModel().getLineMaxColumn(o);r=new YB.e(r.startLineNumber,r.startColumn,o,a)}n._rangeHighlightDecorationId=t.addDecoration(r,e._RANGE_HIGHLIGHT_DECORATION)}})),r}},{key:"set",value:function(t,n){var i=this;this._editor.changeDecorations((function(r){var o=e._FIND_MATCH_DECORATION,a=[];if(t.length>1e3){o=e._FIND_MATCH_NO_OVERVIEW_DECORATION;for(var s=i._editor.getModel().getLineCount(),u=i._editor.getLayoutInfo().height/s,l=Math.max(2,Math.ceil(3/u)),c=t[0].range.startLineNumber,d=t[0].range.endLineNumber,h=1,f=t.length;h<f;h++){var p=t[h].range;d+l>=p.startLineNumber?p.endLineNumber>d&&(d=p.endLineNumber):(a.push({range:new YB.e(c,1,d,1),options:e._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),c=p.startLineNumber,d=p.endLineNumber)}a.push({range:new YB.e(c,1,d,1),options:e._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}for(var g=new Array(t.length),v=0,m=t.length;v<m;v++)g[v]={range:t[v].range,options:o};i._decorations=r.deltaDecorations(i._decorations,g),i._overviewRulerApproximateDecorations=r.deltaDecorations(i._overviewRulerApproximateDecorations,a),i._rangeHighlightDecorationId&&(r.removeDecoration(i._rangeHighlightDecorationId),i._rangeHighlightDecorationId=null),i._findScopeDecorationIds.length&&(i._findScopeDecorationIds.forEach((function(e){return r.removeDecoration(e)})),i._findScopeDecorationIds=[]),(null===n||void 0===n?void 0:n.length)&&(i._findScopeDecorationIds=n.map((function(t){return r.addDecoration(t,e._FIND_SCOPE_DECORATION)})))}))}},{key:"matchBeforePosition",value:function(e){if(0===this._decorations.length)return null;for(var t=this._decorations.length-1;t>=0;t--){var n=this._decorations[t],i=this._editor.getModel().getDecorationRange(n);if(i&&!(i.endLineNumber>e.lineNumber)){if(i.endLineNumber<e.lineNumber)return i;if(!(i.endColumn>e.column))return i}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])}},{key:"matchAfterPosition",value:function(e){if(0===this._decorations.length)return null;for(var t=0,n=this._decorations.length;t<n;t++){var i=this._decorations[t],r=this._editor.getModel().getDecorationRange(i);if(r&&!(r.startLineNumber<e.lineNumber)){if(r.startLineNumber>e.lineNumber)return r;if(!(r.startColumn<e.column))return r}}return this._editor.getModel().getDecorationRange(this._decorations[0])}},{key:"_allDecorations",value:function(){var e,t=[];(t=(t=t.concat(this._decorations)).concat(this._overviewRulerApproximateDecorations),this._findScopeDecorationIds.length)&&(e=t).push.apply(e,(0,Ct.Z)(this._findScopeDecorationIds));return this._rangeHighlightDecorationId&&t.push(this._rangeHighlightDecorationId),t}}]),e}();fG._CURRENT_FIND_MATCH_DECORATION=KB.qx.register({stickiness:1,zIndex:13,className:"currentFindMatch",showIfCollapsed:!0,overviewRuler:{color:(0,$B.EN)(GB.Fm),position:UB.sh.Center},minimap:{color:(0,$B.EN)(GB.KT),position:UB.F5.Inline}}),fG._FIND_MATCH_DECORATION=KB.qx.register({stickiness:1,className:"findMatch",showIfCollapsed:!0,overviewRuler:{color:(0,$B.EN)(GB.Fm),position:UB.sh.Center},minimap:{color:(0,$B.EN)(GB.KT),position:UB.F5.Inline}}),fG._FIND_MATCH_NO_OVERVIEW_DECORATION=KB.qx.register({stickiness:1,className:"findMatch",showIfCollapsed:!0}),fG._FIND_MATCH_ONLY_OVERVIEW_DECORATION=KB.qx.register({stickiness:1,overviewRuler:{color:(0,$B.EN)(GB.Fm),position:UB.sh.Center}}),fG._RANGE_HIGHLIGHT_DECORATION=KB.qx.register({stickiness:1,className:"rangeHighlight",isWholeLine:!0}),fG._FIND_SCOPE_DECORATION=KB.qx.register({className:"findScope",isWholeLine:!0});var pG=function(){function e(t,n,i){(0,X.Z)(this,e),this._editorSelection=t,this._ranges=n,this._replaceStrings=i,this._trackedEditorSelectionId=null}return(0,J.Z)(e,[{key:"getEditOperations",value:function(e,t){if(this._ranges.length>0){for(var n=[],i=0;i<this._ranges.length;i++)n.push({range:this._ranges[i],text:this._replaceStrings[i]});n.sort((function(e,t){return YB.e.compareRangesUsingStarts(e.range,t.range)}));for(var r=[],o=n[0],a=1;a<n.length;a++)o.range.endLineNumber===n[a].range.startLineNumber&&o.range.endColumn===n[a].range.startColumn?(o.range=o.range.plusRange(n[a].range),o.text=o.text+n[a].text):(r.push(o),o=n[a]);r.push(o);for(var s=0,u=r;s<u.length;s++){var l=u[s];t.addEditOperation(l.range,l.text)}}this._trackedEditorSelectionId=t.trackSelection(this._editorSelection)}},{key:"computeCursorState",value:function(e,t){return t.getTrackedSelection(this._trackedEditorSelectionId)}}]),e}();function gG(e,t){if(e&&""!==e[0]){var n=vG(e,t,"-"),i=vG(e,t,"_");return n&&!i?mG(e,t,"-"):!n&&i?mG(e,t,"_"):e[0].toUpperCase()===e[0]?t.toUpperCase():e[0].toLowerCase()===e[0]?t.toLowerCase():Dz.Kw(e[0][0])&&t.length>0?t[0].toUpperCase()+t.substr(1):e[0][0].toUpperCase()!==e[0][0]&&t.length>0?t[0].toLowerCase()+t.substr(1):t}return t}function vG(e,t,n){return-1!==e[0].indexOf(n)&&-1!==t.indexOf(n)&&e[0].split(n).length===t.split(n).length}function mG(e,t,n){var i=t.split(n),r=e[0].split(n),o="";return i.forEach((function(e,t){o+=gG([r[t]],e)+n})),o.slice(0,-1)}var _G=(0,J.Z)((function e(t){(0,X.Z)(this,e),this.staticValue=t,this.kind=0})),yG=(0,J.Z)((function e(t){(0,X.Z)(this,e),this.pieces=t,this.kind=1})),bG=function(){function e(t){(0,X.Z)(this,e),t&&0!==t.length?1===t.length&&null!==t[0].staticValue?this._state=new _G(t[0].staticValue):this._state=new yG(t):this._state=new _G("")}return(0,J.Z)(e,[{key:"hasReplacementPatterns",get:function(){return 1===this._state.kind}},{key:"buildReplaceString",value:function(t,n){if(0===this._state.kind)return n?gG(t,this._state.staticValue):this._state.staticValue;for(var i="",r=0,o=this._state.pieces.length;r<o;r++){var a=this._state.pieces[r];if(null===a.staticValue){var s=e._substitute(a.matchIndex,t);if(null!==a.caseOps&&a.caseOps.length>0){for(var u=[],l=a.caseOps.length,c=0,d=0,h=s.length;d<h;d++){if(c>=l){u.push(s.slice(d));break}switch(a.caseOps[c]){case"U":u.push(s[d].toUpperCase());break;case"u":u.push(s[d].toUpperCase()),c++;break;case"L":u.push(s[d].toLowerCase());break;case"l":u.push(s[d].toLowerCase()),c++;break;default:u.push(s[d])}}s=u.join("")}i+=s}else i+=a.staticValue}return i}}],[{key:"fromStaticValue",value:function(t){return new e([wG.staticValue(t)])}},{key:"_substitute",value:function(e,t){if(null===t)return"";if(0===e)return t[0];for(var n="";e>0;){if(e<t.length)return(t[e]||"")+n;n=String(e%10)+n,e=Math.floor(e/10)}return"$"+n}}]),e}(),wG=function(){function e(t,n,i){(0,X.Z)(this,e),this.staticValue=t,this.matchIndex=n,i&&0!==i.length?this.caseOps=i.slice(0):this.caseOps=null}return(0,J.Z)(e,null,[{key:"staticValue",value:function(t){return new e(t,-1,null)}},{key:"caseOps",value:function(t,n){return new e(null,t,n)}}]),e}(),CG=function(){function e(t){(0,X.Z)(this,e),this._source=t,this._lastCharIndex=0,this._result=[],this._resultLen=0,this._currentStaticPiece=""}return(0,J.Z)(e,[{key:"emitUnchanged",value:function(e){this._emitStatic(this._source.substring(this._lastCharIndex,e)),this._lastCharIndex=e}},{key:"emitStatic",value:function(e,t){this._emitStatic(e),this._lastCharIndex=t}},{key:"_emitStatic",value:function(e){0!==e.length&&(this._currentStaticPiece+=e)}},{key:"emitMatchIndex",value:function(e,t,n){0!==this._currentStaticPiece.length&&(this._result[this._resultLen++]=wG.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),this._result[this._resultLen++]=wG.caseOps(e,n),this._lastCharIndex=t}},{key:"finalize",value:function(){return this.emitUnchanged(this._source.length),0!==this._currentStaticPiece.length&&(this._result[this._resultLen++]=wG.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),new bG(this._result)}}]),e}();var kG=new kB.uy("findWidgetVisible",!1),SG=new kB.uy("findInputFocussed",!1),xG=new kB.uy("replaceInputFocussed",!1),LG={primary:545,mac:{primary:2593}},EG={primary:565,mac:{primary:2613}},DG={primary:560,mac:{primary:2608}},NG={primary:554,mac:{primary:2602}},MG={primary:558,mac:{primary:2606}},TG={StartFindAction:"actions.find",StartFindWithSelection:"actions.findWithSelection",NextMatchFindAction:"editor.action.nextMatchFindAction",PreviousMatchFindAction:"editor.action.previousMatchFindAction",NextSelectionMatchFindAction:"editor.action.nextSelectionMatchFindAction",PreviousSelectionMatchFindAction:"editor.action.previousSelectionMatchFindAction",StartFindReplaceAction:"editor.action.startFindReplaceAction",CloseFindWidgetCommand:"closeFindWidget",ToggleCaseSensitiveCommand:"toggleFindCaseSensitive",ToggleWholeWordCommand:"toggleFindWholeWord",ToggleRegexCommand:"toggleFindRegex",ToggleSearchScopeCommand:"toggleFindInSelection",TogglePreserveCaseCommand:"togglePreserveCase",ReplaceOneAction:"editor.action.replaceOne",ReplaceAllAction:"editor.action.replaceAll",SelectAllMatchesAction:"editor.action.selectAllMatches"},IG=19999,OG=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this._toDispose=new WB.SL,this._editor=t,this._state=n,this._isDisposed=!1,this._startSearchingTimer=new zB._F,this._decorations=new fG(t),this._toDispose.add(this._decorations),this._updateDecorationsScheduler=new zB.pY((function(){return i.research(!1)}),100),this._toDispose.add(this._updateDecorationsScheduler),this._toDispose.add(this._editor.onDidChangeCursorPosition((function(e){3!==e.reason&&5!==e.reason&&6!==e.reason||i._decorations.setStartPosition(i._editor.getPosition())}))),this._ignoreModelContentChanged=!1,this._toDispose.add(this._editor.onDidChangeModelContent((function(e){i._ignoreModelContentChanged||(e.isFlush&&i._decorations.reset(),i._decorations.setStartPosition(i._editor.getPosition()),i._updateDecorationsScheduler.schedule())}))),this._toDispose.add(this._state.onFindReplaceStateChange((function(e){return i._onStateChanged(e)}))),this.research(!1,this._state.searchScope)}return(0,J.Z)(e,[{key:"dispose",value:function(){this._isDisposed=!0,(0,WB.B9)(this._startSearchingTimer),this._toDispose.dispose()}},{key:"_onStateChanged",value:function(e){var t=this;this._isDisposed||this._editor.hasModel()&&(e.searchString||e.isReplaceRevealed||e.isRegex||e.wholeWord||e.matchCase||e.searchScope)&&(this._editor.getModel().isTooLargeForSyncing()?(this._startSearchingTimer.cancel(),this._startSearchingTimer.setIfNotSet((function(){e.searchScope?t.research(e.moveCursor,t._state.searchScope):t.research(e.moveCursor)}),240)):e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor))}},{key:"research",value:function(e,t){var n=this,i=null;"undefined"!==typeof t?null!==t&&(i=Array.isArray(t)?t:[t]):i=this._decorations.getFindScopes(),null!==i&&(i=i.map((function(e){if(e.startLineNumber!==e.endLineNumber){var t=e.endLineNumber;return 1===e.endColumn&&(t-=1),new YB.e(e.startLineNumber,1,t,n._editor.getModel().getLineMaxColumn(t))}return e})));var r=this._findMatches(i,!1,IG);this._decorations.set(r,i);var o=this._editor.getSelection(),a=this._decorations.getCurrentMatchesPosition(o);if(0===a&&r.length>0){var s=(0,SB.lG)(r.map((function(e){return e.range})),(function(e){return YB.e.compareRangesUsingStarts(e,o)>=0}));a=s>0?s-1+1:a}this._state.changeMatchInfo(a,this._decorations.getCount(),void 0),e&&this._editor.getOption(33).cursorMoveOnType&&this._moveToNextMatch(this._decorations.getStartPosition())}},{key:"_hasMatches",value:function(){return this._state.matchesCount>0}},{key:"_cannotFind",value:function(){if(!this._hasMatches()){var e=this._decorations.getFindScope();return e&&this._editor.revealRangeInCenterIfOutsideViewport(e,0),!0}return!1}},{key:"_setCurrentFindMatch",value:function(e){var t=this._decorations.setCurrentFindMatch(e);this._state.changeMatchInfo(t,this._decorations.getCount(),e),this._editor.setSelection(e),this._editor.revealRangeInCenterIfOutsideViewport(e,0)}},{key:"_prevSearchPosition",value:function(e){var t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0),n=e.lineNumber,i=e.column,r=this._editor.getModel();return t||1===i?(1===n?n=r.getLineCount():n--,i=r.getLineMaxColumn(n)):i--,new VB.L(n,i)}},{key:"_moveToPrevMatch",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this._state.canNavigateBack()){if(this._decorations.getCount()<IG){var i=this._decorations.matchBeforePosition(t);return i&&i.isEmpty()&&i.getStartPosition().equals(t)&&(t=this._prevSearchPosition(t),i=this._decorations.matchBeforePosition(t)),void(i&&this._setCurrentFindMatch(i))}if(!this._cannotFind()){var r=this._decorations.getFindScope(),o=e._getSearchRange(this._editor.getModel(),r);o.getEndPosition().isBefore(t)&&(t=o.getEndPosition()),t.isBefore(o.getStartPosition())&&(t=o.getEndPosition());var a=t,s=a.lineNumber,u=a.column,l=this._editor.getModel(),c=new VB.L(s,u),d=l.findPreviousMatch(this._state.searchString,c,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(113):null,!1);if(d&&d.range.isEmpty()&&d.range.getStartPosition().equals(c)&&(c=this._prevSearchPosition(c),d=l.findPreviousMatch(this._state.searchString,c,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(113):null,!1)),d)return n||o.containsRange(d.range)?void this._setCurrentFindMatch(d.range):this._moveToPrevMatch(d.range.getStartPosition(),!0)}}else{var h=this._decorations.matchAfterPosition(t);h&&this._setCurrentFindMatch(h)}}},{key:"moveToPrevMatch",value:function(){this._moveToPrevMatch(this._editor.getSelection().getStartPosition())}},{key:"_nextSearchPosition",value:function(e){var t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0),n=e.lineNumber,i=e.column,r=this._editor.getModel();return t||i===r.getLineMaxColumn(n)?(n===r.getLineCount()?n=1:n++,i=1):i++,new VB.L(n,i)}},{key:"_moveToNextMatch",value:function(e){if(this._state.canNavigateForward()){if(this._decorations.getCount()<IG){var t=this._decorations.matchAfterPosition(e);return t&&t.isEmpty()&&t.getStartPosition().equals(e)&&(e=this._nextSearchPosition(e),t=this._decorations.matchAfterPosition(e)),void(t&&this._setCurrentFindMatch(t))}var n=this._getNextMatch(e,!1,!0);n&&this._setCurrentFindMatch(n.range)}else{var i=this._decorations.matchBeforePosition(e);i&&this._setCurrentFindMatch(i)}}},{key:"_getNextMatch",value:function(t,n,i){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(this._cannotFind())return null;var o=this._decorations.getFindScope(),a=e._getSearchRange(this._editor.getModel(),o);a.getEndPosition().isBefore(t)&&(t=a.getStartPosition()),t.isBefore(a.getStartPosition())&&(t=a.getStartPosition());var s=t,u=s.lineNumber,l=s.column,c=this._editor.getModel(),d=new VB.L(u,l),h=c.findNextMatch(this._state.searchString,d,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(113):null,n);return i&&h&&h.range.isEmpty()&&h.range.getStartPosition().equals(d)&&(d=this._nextSearchPosition(d),h=c.findNextMatch(this._state.searchString,d,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(113):null,n)),h?r||a.containsRange(h.range)?h:this._getNextMatch(h.range.getEndPosition(),n,i,!0):null}},{key:"moveToNextMatch",value:function(){this._moveToNextMatch(this._editor.getSelection().getEndPosition())}},{key:"_getReplacePattern",value:function(){return this._state.isRegex?function(e){if(!e||0===e.length)return new bG(null);for(var t=[],n=new CG(e),i=0,r=e.length;i<r;i++){var o=e.charCodeAt(i);if(92!==o){if(36===o){if(++i>=r)break;var a=e.charCodeAt(i);if(36===a){n.emitUnchanged(i-1),n.emitStatic("$",i+1);continue}if(48===a||38===a){n.emitUnchanged(i-1),n.emitMatchIndex(0,i+1,t),t.length=0;continue}if(49<=a&&a<=57){var s=a-48;if(i+1<r){var u=e.charCodeAt(i+1);if(48<=u&&u<=57){i++,s=10*s+(u-48),n.emitUnchanged(i-2),n.emitMatchIndex(s,i+1,t),t.length=0;continue}}n.emitUnchanged(i-1),n.emitMatchIndex(s,i+1,t),t.length=0;continue}}}else{if(++i>=r)break;var l=e.charCodeAt(i);switch(l){case 92:n.emitUnchanged(i-1),n.emitStatic("\\",i+1);break;case 110:n.emitUnchanged(i-1),n.emitStatic("\n",i+1);break;case 116:n.emitUnchanged(i-1),n.emitStatic("\t",i+1);break;case 117:case 85:case 108:case 76:n.emitUnchanged(i-1),n.emitStatic("",i+1),t.push(String.fromCharCode(l))}}}return n.finalize()}(this._state.replaceString):bG.fromStaticValue(this._state.replaceString)}},{key:"replace",value:function(){if(this._hasMatches()){var e=this._getReplacePattern(),t=this._editor.getSelection(),n=this._getNextMatch(t.getStartPosition(),!0,!1);if(n)if(t.equalsRange(n.range)){var i=e.buildReplaceString(n.matches,this._state.preserveCase),r=new sz.T4(t,i);this._executeEditorCommand("replace",r),this._decorations.setStartPosition(new VB.L(t.startLineNumber,t.startColumn+i.length)),this.research(!0)}else this._decorations.setStartPosition(this._editor.getPosition()),this._setCurrentFindMatch(n.range)}}},{key:"_findMatches",value:function(t,n,i){var r=this,o=(t||[null]).map((function(t){return e._getSearchRange(r._editor.getModel(),t)}));return this._editor.getModel().findMatches(this._state.searchString,o,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(113):null,n,i)}},{key:"replaceAll",value:function(){if(this._hasMatches()){var e=this._decorations.getFindScopes();null===e&&this._state.matchesCount>=IG?this._largeReplaceAll():this._regularReplaceAll(e),this.research(!1)}}},{key:"_largeReplaceAll",value:function(){var e=new hG.bc(this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(113):null).parseSearchRequest();if(e){var t=e.regex;if(!t.multiline){var n="mu";t.ignoreCase&&(n+="i"),t.global&&(n+="g"),t=new RegExp(t.source,n)}var i,r=this._editor.getModel(),o=r.getValue(1),a=r.getFullModelRange(),s=this._getReplacePattern(),u=this._state.preserveCase;i=s.hasReplacementPatterns||u?o.replace(t,(function(){return s.buildReplaceString(arguments,u)})):o.replace(t,s.buildReplaceString(null,u));var l=new sz.hP(a,i,this._editor.getSelection());this._executeEditorCommand("replaceAll",l)}}},{key:"_regularReplaceAll",value:function(e){for(var t=this._getReplacePattern(),n=this._findMatches(e,t.hasReplacementPatterns||this._state.preserveCase,1073741824),i=[],r=0,o=n.length;r<o;r++)i[r]=t.buildReplaceString(n[r].matches,this._state.preserveCase);var a=new pG(this._editor.getSelection(),n.map((function(e){return e.range})),i);this._executeEditorCommand("replaceAll",a)}},{key:"selectAllMatches",value:function(){if(this._hasMatches()){for(var e=this._decorations.getFindScopes(),t=this._findMatches(e,!1,1073741824).map((function(e){return new wB.Y(e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn)})),n=this._editor.getSelection(),i=0,r=t.length;i<r;i++){if(t[i].equalsRange(n)){t=[n].concat(t.slice(0,i)).concat(t.slice(i+1));break}}this._editor.setSelections(t)}}},{key:"_executeEditorCommand",value:function(e,t){try{this._ignoreModelContentChanged=!0,this._editor.pushUndoStop(),this._editor.executeCommand(e,t),this._editor.pushUndoStop()}finally{this._ignoreModelContentChanged=!1}}}],[{key:"_getSearchRange",value:function(e,t){return t||e.getFullModelRange()}}]),e}(),AG={inputActiveOptionBorder:MV.Il.fromHex("#007ACC00"),inputActiveOptionForeground:MV.Il.fromHex("#FFFFFF"),inputActiveOptionBackground:MV.Il.fromHex("#0E639C50")},RG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i,r;(0,X.Z)(this,n),(r=t.call(this))._onChange=r._register(new _W.Q5),r.onChange=r._onChange.event,r._onKeyDown=r._register(new _W.Q5),r.onKeyDown=r._onKeyDown.event,r._opts=Object.assign(Object.assign({},AG),e),r._checked=r._opts.isChecked;var o=["monaco-custom-checkbox"];return r._opts.icon&&o.push.apply(o,(0,Ct.Z)(bW.dT.asClassNameArray(r._opts.icon))),r._opts.actionClassName&&o.push.apply(o,(0,Ct.Z)(r._opts.actionClassName.split(" "))),r._checked&&o.push("checked"),r.domNode=document.createElement("div"),r.domNode.title=r._opts.title,(i=r.domNode.classList).add.apply(i,o),r._opts.notFocusable||(r.domNode.tabIndex=0),r.domNode.setAttribute("role","checkbox"),r.domNode.setAttribute("aria-checked",String(r._checked)),r.domNode.setAttribute("aria-label",r._opts.title),r.applyStyles(),r.onclick(r.domNode,(function(e){r.checked=!r._checked,r._onChange.fire(!1),e.preventDefault()})),r.ignoreGesture(r.domNode),r.onkeydown(r.domNode,(function(e){if(10===e.keyCode||3===e.keyCode)return r.checked=!r._checked,r._onChange.fire(!0),void e.preventDefault();r._onKeyDown.fire(e)})),r}return(0,J.Z)(n,[{key:"enabled",get:function(){return"true"!==this.domNode.getAttribute("aria-disabled")}},{key:"focus",value:function(){this.domNode.focus()}},{key:"checked",get:function(){return this._checked},set:function(e){this._checked=e,this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.classList.toggle("checked",this._checked),this.applyStyles()}},{key:"width",value:function(){return 22}},{key:"style",value:function(e){e.inputActiveOptionBorder&&(this._opts.inputActiveOptionBorder=e.inputActiveOptionBorder),e.inputActiveOptionForeground&&(this._opts.inputActiveOptionForeground=e.inputActiveOptionForeground),e.inputActiveOptionBackground&&(this._opts.inputActiveOptionBackground=e.inputActiveOptionBackground),this.applyStyles()}},{key:"applyStyles",value:function(){this.domNode&&(this.domNode.style.borderColor=this._checked&&this._opts.inputActiveOptionBorder?this._opts.inputActiveOptionBorder.toString():"transparent",this.domNode.style.color=this._checked&&this._opts.inputActiveOptionForeground?this._opts.inputActiveOptionForeground.toString():"inherit",this.domNode.style.backgroundColor=this._checked&&this._opts.inputActiveOptionBackground?this._opts.inputActiveOptionBackground.toString():"transparent")}},{key:"enable",value:function(){this.domNode.setAttribute("aria-disabled",String(!1))}},{key:"disable",value:function(){this.domNode.setAttribute("aria-disabled",String(!0))}}]),n}(FV.$),PG=yB.N("caseDescription","Match Case"),ZG=yB.N("wordsDescription","Match Whole Word"),FG=yB.N("regexDescription","Use Regular Expression"),jG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){return(0,X.Z)(this,n),t.call(this,{icon:bW.lA.caseSensitive,title:PG+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}return(0,J.Z)(n)}(RG),HG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){return(0,X.Z)(this,n),t.call(this,{icon:bW.lA.wholeWord,title:ZG+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}return(0,J.Z)(n)}(RG),BG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){return(0,X.Z)(this,n),t.call(this,{icon:bW.lA.regex,title:FG+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}return(0,J.Z)(n)}(RG),zG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;(0,X.Z)(this,n),(a=t.call(this))._hideSoon=a._register(new zB.pY((function(){return a._hide()}),2e3)),a._isVisible=!1,a._editor=e,a._state=i,a._keybindingService=r,a._domNode=document.createElement("div"),a._domNode.className="findOptionsWidget",a._domNode.style.display="none",a._domNode.style.top="10px",a._domNode.setAttribute("role","presentation"),a._domNode.setAttribute("aria-hidden","true");var s=o.getColorTheme().getColor(GB.PR),u=o.getColorTheme().getColor(GB.Pv),l=o.getColorTheme().getColor(GB.XE);return a.caseSensitive=a._register(new jG({appendTitle:a._keybindingLabelFor(TG.ToggleCaseSensitiveCommand),isChecked:a._state.matchCase,inputActiveOptionBorder:s,inputActiveOptionForeground:u,inputActiveOptionBackground:l})),a._domNode.appendChild(a.caseSensitive.domNode),a._register(a.caseSensitive.onChange((function(){a._state.change({matchCase:a.caseSensitive.checked},!1)}))),a.wholeWords=a._register(new HG({appendTitle:a._keybindingLabelFor(TG.ToggleWholeWordCommand),isChecked:a._state.wholeWord,inputActiveOptionBorder:s,inputActiveOptionForeground:u,inputActiveOptionBackground:l})),a._domNode.appendChild(a.wholeWords.domNode),a._register(a.wholeWords.onChange((function(){a._state.change({wholeWord:a.wholeWords.checked},!1)}))),a.regex=a._register(new BG({appendTitle:a._keybindingLabelFor(TG.ToggleRegexCommand),isChecked:a._state.isRegex,inputActiveOptionBorder:s,inputActiveOptionForeground:u,inputActiveOptionBackground:l})),a._domNode.appendChild(a.regex.domNode),a._register(a.regex.onChange((function(){a._state.change({isRegex:a.regex.checked},!1)}))),a._editor.addOverlayWidget((0,Br.Z)(a)),a._register(a._state.onFindReplaceStateChange((function(e){var t=!1;e.isRegex&&(a.regex.checked=a._state.isRegex,t=!0),e.wholeWord&&(a.wholeWords.checked=a._state.wholeWord,t=!0),e.matchCase&&(a.caseSensitive.checked=a._state.matchCase,t=!0),!a._state.isRevealed&&t&&a._revealTemporarily()}))),a._register(aW.addDisposableNonBubblingMouseOutListener(a._domNode,(function(e){return a._onMouseOut()}))),a._register(aW.addDisposableListener(a._domNode,"mouseover",(function(e){return a._onMouseOver()}))),a._applyTheme(o.getColorTheme()),a._register(o.onDidColorThemeChange(a._applyTheme.bind((0,Br.Z)(a)))),a}return(0,J.Z)(n,[{key:"_keybindingLabelFor",value:function(e){var t=this._keybindingService.lookupKeybinding(e);return t?" (".concat(t.getLabel(),")"):""}},{key:"dispose",value:function(){this._editor.removeOverlayWidget(this),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"getId",value:function(){return n.ID}},{key:"getDomNode",value:function(){return this._domNode}},{key:"getPosition",value:function(){return{preference:0}}},{key:"highlightFindOptions",value:function(){this._revealTemporarily()}},{key:"_revealTemporarily",value:function(){this._show(),this._hideSoon.schedule()}},{key:"_onMouseOut",value:function(){this._hideSoon.schedule()}},{key:"_onMouseOver",value:function(){this._hideSoon.cancel()}},{key:"_show",value:function(){this._isVisible||(this._isVisible=!0,this._domNode.style.display="block")}},{key:"_hide",value:function(){this._isVisible&&(this._isVisible=!1,this._domNode.style.display="none")}},{key:"_applyTheme",value:function(e){var t={inputActiveOptionBorder:e.getColor(GB.PR),inputActiveOptionForeground:e.getColor(GB.Pv),inputActiveOptionBackground:e.getColor(GB.XE)};this.caseSensitive.style(t),this.wholeWords.style(t),this.regex.style(t)}}]),n}(FV.$);function WG(e,t){return 1===e||2!==e&&t}zG.ID="editor.contrib.findOptionsWidget",(0,$B.Ic)((function(e,t){var n=e.getColor(GB.D0);n&&t.addRule(".monaco-editor .findOptionsWidget { background-color: ".concat(n,"; }"));var i=e.getColor(GB.Hf);i&&t.addRule(".monaco-editor .findOptionsWidget { color: ".concat(i,"; }"));var r=e.getColor(GB.rh);r&&t.addRule(".monaco-editor .findOptionsWidget { box-shadow: 0 0 8px 2px ".concat(r,"; }"));var o=e.getColor(GB.lR);o&&t.addRule(".monaco-editor .findOptionsWidget { border: 2px solid ".concat(o,"; }"))}));var VG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),(e=t.call(this))._onFindReplaceStateChange=e._register(new _W.Q5),e.onFindReplaceStateChange=e._onFindReplaceStateChange.event,e._searchString="",e._replaceString="",e._isRevealed=!1,e._isReplaceRevealed=!1,e._isRegex=!1,e._isRegexOverride=0,e._wholeWord=!1,e._wholeWordOverride=0,e._matchCase=!1,e._matchCaseOverride=0,e._preserveCase=!1,e._preserveCaseOverride=0,e._searchScope=null,e._matchesPosition=0,e._matchesCount=0,e._currentMatch=null,e._loop=!0,e}return(0,J.Z)(n,[{key:"searchString",get:function(){return this._searchString}},{key:"replaceString",get:function(){return this._replaceString}},{key:"isRevealed",get:function(){return this._isRevealed}},{key:"isReplaceRevealed",get:function(){return this._isReplaceRevealed}},{key:"isRegex",get:function(){return WG(this._isRegexOverride,this._isRegex)}},{key:"wholeWord",get:function(){return WG(this._wholeWordOverride,this._wholeWord)}},{key:"matchCase",get:function(){return WG(this._matchCaseOverride,this._matchCase)}},{key:"preserveCase",get:function(){return WG(this._preserveCaseOverride,this._preserveCase)}},{key:"actualIsRegex",get:function(){return this._isRegex}},{key:"actualWholeWord",get:function(){return this._wholeWord}},{key:"actualMatchCase",get:function(){return this._matchCase}},{key:"actualPreserveCase",get:function(){return this._preserveCase}},{key:"searchScope",get:function(){return this._searchScope}},{key:"matchesPosition",get:function(){return this._matchesPosition}},{key:"matchesCount",get:function(){return this._matchesCount}},{key:"currentMatch",get:function(){return this._currentMatch}},{key:"changeMatchInfo",value:function(e,t,n){var i={moveCursor:!1,updateHistory:!1,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1},r=!1;0===t&&(e=0),e>t&&(e=t),this._matchesPosition!==e&&(this._matchesPosition=e,i.matchesPosition=!0,r=!0),this._matchesCount!==t&&(this._matchesCount=t,i.matchesCount=!0,r=!0),"undefined"!==typeof n&&(YB.e.equalsRange(this._currentMatch,n)||(this._currentMatch=n,i.currentMatch=!0,r=!0)),r&&this._onFindReplaceStateChange.fire(i)}},{key:"change",value:function(e,t){var n,i=this,r={moveCursor:t,updateHistory:!(arguments.length>2&&void 0!==arguments[2])||arguments[2],searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1},o=!1,a=this.isRegex,s=this.wholeWord,u=this.matchCase,l=this.preserveCase;"undefined"!==typeof e.searchString&&this._searchString!==e.searchString&&(this._searchString=e.searchString,r.searchString=!0,o=!0),"undefined"!==typeof e.replaceString&&this._replaceString!==e.replaceString&&(this._replaceString=e.replaceString,r.replaceString=!0,o=!0),"undefined"!==typeof e.isRevealed&&this._isRevealed!==e.isRevealed&&(this._isRevealed=e.isRevealed,r.isRevealed=!0,o=!0),"undefined"!==typeof e.isReplaceRevealed&&this._isReplaceRevealed!==e.isReplaceRevealed&&(this._isReplaceRevealed=e.isReplaceRevealed,r.isReplaceRevealed=!0,o=!0),"undefined"!==typeof e.isRegex&&(this._isRegex=e.isRegex),"undefined"!==typeof e.wholeWord&&(this._wholeWord=e.wholeWord),"undefined"!==typeof e.matchCase&&(this._matchCase=e.matchCase),"undefined"!==typeof e.preserveCase&&(this._preserveCase=e.preserveCase),"undefined"!==typeof e.searchScope&&((null===(n=e.searchScope)||void 0===n?void 0:n.every((function(e){var t;return null===(t=i._searchScope)||void 0===t?void 0:t.some((function(t){return!YB.e.equalsRange(t,e)}))})))||(this._searchScope=e.searchScope,r.searchScope=!0,o=!0)),"undefined"!==typeof e.loop&&this._loop!==e.loop&&(this._loop=e.loop,r.loop=!0,o=!0),this._isRegexOverride="undefined"!==typeof e.isRegexOverride?e.isRegexOverride:0,this._wholeWordOverride="undefined"!==typeof e.wholeWordOverride?e.wholeWordOverride:0,this._matchCaseOverride="undefined"!==typeof e.matchCaseOverride?e.matchCaseOverride:0,this._preserveCaseOverride="undefined"!==typeof e.preserveCaseOverride?e.preserveCaseOverride:0,a!==this.isRegex&&(o=!0,r.isRegex=!0),s!==this.wholeWord&&(o=!0,r.wholeWord=!0),u!==this.matchCase&&(o=!0,r.matchCase=!0),l!==this.preserveCase&&(o=!0,r.preserveCase=!0),o&&this._onFindReplaceStateChange.fire(r)}},{key:"canNavigateBack",value:function(){return this.canNavigateInLoop()||1!==this.matchesPosition}},{key:"canNavigateForward",value:function(){return this.canNavigateInLoop()||this.matchesPosition<this.matchesCount}},{key:"canNavigateInLoop",value:function(){return this._loop||this.matchesCount>=IG}}]),n}(WB.JT),YG=n(68027),UG=yB.N("defaultLabel","input"),KG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;(0,X.Z)(this,n),(a=t.call(this))._showOptionButtons=r,a.fixFocusOnOptionClickEnabled=!0,a._onDidOptionChange=a._register(new _W.Q5),a.onDidOptionChange=a._onDidOptionChange.event,a._onKeyDown=a._register(new _W.Q5),a.onKeyDown=a._onKeyDown.event,a._onMouseDown=a._register(new _W.Q5),a.onMouseDown=a._onMouseDown.event,a._onInput=a._register(new _W.Q5),a._onKeyUp=a._register(new _W.Q5),a._onCaseSensitiveKeyDown=a._register(new _W.Q5),a.onCaseSensitiveKeyDown=a._onCaseSensitiveKeyDown.event,a._onRegexKeyDown=a._register(new _W.Q5),a.onRegexKeyDown=a._onRegexKeyDown.event,a._lastHighlightFindOptions=0,a.contextViewProvider=i,a.placeholder=o.placeholder||"",a.validation=o.validation,a.label=o.label||UG,a.inputActiveOptionBorder=o.inputActiveOptionBorder,a.inputActiveOptionForeground=o.inputActiveOptionForeground,a.inputActiveOptionBackground=o.inputActiveOptionBackground,a.inputBackground=o.inputBackground,a.inputForeground=o.inputForeground,a.inputBorder=o.inputBorder,a.inputValidationInfoBorder=o.inputValidationInfoBorder,a.inputValidationInfoBackground=o.inputValidationInfoBackground,a.inputValidationInfoForeground=o.inputValidationInfoForeground,a.inputValidationWarningBorder=o.inputValidationWarningBorder,a.inputValidationWarningBackground=o.inputValidationWarningBackground,a.inputValidationWarningForeground=o.inputValidationWarningForeground,a.inputValidationErrorBorder=o.inputValidationErrorBorder,a.inputValidationErrorBackground=o.inputValidationErrorBackground,a.inputValidationErrorForeground=o.inputValidationErrorForeground;var s=o.appendCaseSensitiveLabel||"",u=o.appendWholeWordsLabel||"",l=o.appendRegexLabel||"",c=o.history||[],d=!!o.flexibleHeight,h=!!o.flexibleWidth,f=o.flexibleMaxHeight;a.domNode=document.createElement("div"),a.domNode.classList.add("monaco-findInput"),a.inputBox=a._register(new YG.p(a.domNode,a.contextViewProvider,{placeholder:a.placeholder||"",ariaLabel:a.label||"",validationOptions:{validation:a.validation},inputBackground:a.inputBackground,inputForeground:a.inputForeground,inputBorder:a.inputBorder,inputValidationInfoBackground:a.inputValidationInfoBackground,inputValidationInfoForeground:a.inputValidationInfoForeground,inputValidationInfoBorder:a.inputValidationInfoBorder,inputValidationWarningBackground:a.inputValidationWarningBackground,inputValidationWarningForeground:a.inputValidationWarningForeground,inputValidationWarningBorder:a.inputValidationWarningBorder,inputValidationErrorBackground:a.inputValidationErrorBackground,inputValidationErrorForeground:a.inputValidationErrorForeground,inputValidationErrorBorder:a.inputValidationErrorBorder,history:c,flexibleHeight:d,flexibleWidth:h,flexibleMaxHeight:f})),a.regex=a._register(new BG({appendTitle:l,isChecked:!1,inputActiveOptionBorder:a.inputActiveOptionBorder,inputActiveOptionForeground:a.inputActiveOptionForeground,inputActiveOptionBackground:a.inputActiveOptionBackground})),a._register(a.regex.onChange((function(e){a._onDidOptionChange.fire(e),!e&&a.fixFocusOnOptionClickEnabled&&a.inputBox.focus(),a.validate()}))),a._register(a.regex.onKeyDown((function(e){a._onRegexKeyDown.fire(e)}))),a.wholeWords=a._register(new HG({appendTitle:u,isChecked:!1,inputActiveOptionBorder:a.inputActiveOptionBorder,inputActiveOptionForeground:a.inputActiveOptionForeground,inputActiveOptionBackground:a.inputActiveOptionBackground})),a._register(a.wholeWords.onChange((function(e){a._onDidOptionChange.fire(e),!e&&a.fixFocusOnOptionClickEnabled&&a.inputBox.focus(),a.validate()}))),a.caseSensitive=a._register(new jG({appendTitle:s,isChecked:!1,inputActiveOptionBorder:a.inputActiveOptionBorder,inputActiveOptionForeground:a.inputActiveOptionForeground,inputActiveOptionBackground:a.inputActiveOptionBackground})),a._register(a.caseSensitive.onChange((function(e){a._onDidOptionChange.fire(e),!e&&a.fixFocusOnOptionClickEnabled&&a.inputBox.focus(),a.validate()}))),a._register(a.caseSensitive.onKeyDown((function(e){a._onCaseSensitiveKeyDown.fire(e)}))),a._showOptionButtons&&(a.inputBox.paddingRight=a.caseSensitive.width()+a.wholeWords.width()+a.regex.width());var p=[a.caseSensitive.domNode,a.wholeWords.domNode,a.regex.domNode];a.onkeydown(a.domNode,(function(e){if(e.equals(15)||e.equals(17)||e.equals(9)){var t=p.indexOf(document.activeElement);if(t>=0){var n=-1;e.equals(17)?n=(t+1)%p.length:e.equals(15)&&(n=0===t?p.length-1:t-1),e.equals(9)?(p[t].blur(),a.inputBox.focus()):n>=0&&p[n].focus(),aW.EventHelper.stop(e,!0)}}}));var g=document.createElement("div");return g.className="controls",g.style.display=a._showOptionButtons?"block":"none",g.appendChild(a.caseSensitive.domNode),g.appendChild(a.wholeWords.domNode),g.appendChild(a.regex.domNode),a.domNode.appendChild(g),e&&e.appendChild(a.domNode),a.onkeydown(a.inputBox.inputElement,(function(e){return a._onKeyDown.fire(e)})),a.onkeyup(a.inputBox.inputElement,(function(e){return a._onKeyUp.fire(e)})),a.oninput(a.inputBox.inputElement,(function(e){return a._onInput.fire()})),a.onmousedown(a.inputBox.inputElement,(function(e){return a._onMouseDown.fire(e)})),a}return(0,J.Z)(n,[{key:"enable",value:function(){this.domNode.classList.remove("disabled"),this.inputBox.enable(),this.regex.enable(),this.wholeWords.enable(),this.caseSensitive.enable()}},{key:"disable",value:function(){this.domNode.classList.add("disabled"),this.inputBox.disable(),this.regex.disable(),this.wholeWords.disable(),this.caseSensitive.disable()}},{key:"setFocusInputOnOptionClick",value:function(e){this.fixFocusOnOptionClickEnabled=e}},{key:"setEnabled",value:function(e){e?this.enable():this.disable()}},{key:"getValue",value:function(){return this.inputBox.value}},{key:"setValue",value:function(e){this.inputBox.value!==e&&(this.inputBox.value=e)}},{key:"style",value:function(e){this.inputActiveOptionBorder=e.inputActiveOptionBorder,this.inputActiveOptionForeground=e.inputActiveOptionForeground,this.inputActiveOptionBackground=e.inputActiveOptionBackground,this.inputBackground=e.inputBackground,this.inputForeground=e.inputForeground,this.inputBorder=e.inputBorder,this.inputValidationInfoBackground=e.inputValidationInfoBackground,this.inputValidationInfoForeground=e.inputValidationInfoForeground,this.inputValidationInfoBorder=e.inputValidationInfoBorder,this.inputValidationWarningBackground=e.inputValidationWarningBackground,this.inputValidationWarningForeground=e.inputValidationWarningForeground,this.inputValidationWarningBorder=e.inputValidationWarningBorder,this.inputValidationErrorBackground=e.inputValidationErrorBackground,this.inputValidationErrorForeground=e.inputValidationErrorForeground,this.inputValidationErrorBorder=e.inputValidationErrorBorder,this.applyStyles()}},{key:"applyStyles",value:function(){if(this.domNode){var e={inputActiveOptionBorder:this.inputActiveOptionBorder,inputActiveOptionForeground:this.inputActiveOptionForeground,inputActiveOptionBackground:this.inputActiveOptionBackground};this.regex.style(e),this.wholeWords.style(e),this.caseSensitive.style(e);var t={inputBackground:this.inputBackground,inputForeground:this.inputForeground,inputBorder:this.inputBorder,inputValidationInfoBackground:this.inputValidationInfoBackground,inputValidationInfoForeground:this.inputValidationInfoForeground,inputValidationInfoBorder:this.inputValidationInfoBorder,inputValidationWarningBackground:this.inputValidationWarningBackground,inputValidationWarningForeground:this.inputValidationWarningForeground,inputValidationWarningBorder:this.inputValidationWarningBorder,inputValidationErrorBackground:this.inputValidationErrorBackground,inputValidationErrorForeground:this.inputValidationErrorForeground,inputValidationErrorBorder:this.inputValidationErrorBorder};this.inputBox.style(t)}}},{key:"select",value:function(){this.inputBox.select()}},{key:"focus",value:function(){this.inputBox.focus()}},{key:"getCaseSensitive",value:function(){return this.caseSensitive.checked}},{key:"setCaseSensitive",value:function(e){this.caseSensitive.checked=e}},{key:"getWholeWords",value:function(){return this.wholeWords.checked}},{key:"setWholeWords",value:function(e){this.wholeWords.checked=e}},{key:"getRegex",value:function(){return this.regex.checked}},{key:"setRegex",value:function(e){this.regex.checked=e,this.validate()}},{key:"focusOnCaseSensitive",value:function(){this.caseSensitive.focus()}},{key:"highlightFindOptions",value:function(){this.domNode.classList.remove("highlight-"+this._lastHighlightFindOptions),this._lastHighlightFindOptions=1-this._lastHighlightFindOptions,this.domNode.classList.add("highlight-"+this._lastHighlightFindOptions)}},{key:"validate",value:function(){this.inputBox.validate()}},{key:"clearMessage",value:function(){this.inputBox.hideMessage()}}]),n}(FV.$),qG=yB.N("defaultLabel","input"),GG=yB.N("label.preserveCaseCheckbox","Preserve Case"),$G=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){return(0,X.Z)(this,n),t.call(this,{icon:bW.lA.preserveCase,title:GG+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}return(0,J.Z)(n)}(RG),QG=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;(0,X.Z)(this,n),(a=t.call(this))._showOptionButtons=r,a.fixFocusOnOptionClickEnabled=!0,a.cachedOptionsWidth=0,a._onDidOptionChange=a._register(new _W.Q5),a.onDidOptionChange=a._onDidOptionChange.event,a._onKeyDown=a._register(new _W.Q5),a.onKeyDown=a._onKeyDown.event,a._onMouseDown=a._register(new _W.Q5),a._onInput=a._register(new _W.Q5),a._onKeyUp=a._register(new _W.Q5),a._onPreserveCaseKeyDown=a._register(new _W.Q5),a.onPreserveCaseKeyDown=a._onPreserveCaseKeyDown.event,a.contextViewProvider=i,a.placeholder=o.placeholder||"",a.validation=o.validation,a.label=o.label||qG,a.inputActiveOptionBorder=o.inputActiveOptionBorder,a.inputActiveOptionForeground=o.inputActiveOptionForeground,a.inputActiveOptionBackground=o.inputActiveOptionBackground,a.inputBackground=o.inputBackground,a.inputForeground=o.inputForeground,a.inputBorder=o.inputBorder,a.inputValidationInfoBorder=o.inputValidationInfoBorder,a.inputValidationInfoBackground=o.inputValidationInfoBackground,a.inputValidationInfoForeground=o.inputValidationInfoForeground,a.inputValidationWarningBorder=o.inputValidationWarningBorder,a.inputValidationWarningBackground=o.inputValidationWarningBackground,a.inputValidationWarningForeground=o.inputValidationWarningForeground,a.inputValidationErrorBorder=o.inputValidationErrorBorder,a.inputValidationErrorBackground=o.inputValidationErrorBackground,a.inputValidationErrorForeground=o.inputValidationErrorForeground;var s=o.appendPreserveCaseLabel||"",u=o.history||[],l=!!o.flexibleHeight,c=!!o.flexibleWidth,d=o.flexibleMaxHeight;a.domNode=document.createElement("div"),a.domNode.classList.add("monaco-findInput"),a.inputBox=a._register(new YG.p(a.domNode,a.contextViewProvider,{ariaLabel:a.label||"",placeholder:a.placeholder||"",validationOptions:{validation:a.validation},inputBackground:a.inputBackground,inputForeground:a.inputForeground,inputBorder:a.inputBorder,inputValidationInfoBackground:a.inputValidationInfoBackground,inputValidationInfoForeground:a.inputValidationInfoForeground,inputValidationInfoBorder:a.inputValidationInfoBorder,inputValidationWarningBackground:a.inputValidationWarningBackground,inputValidationWarningForeground:a.inputValidationWarningForeground,inputValidationWarningBorder:a.inputValidationWarningBorder,inputValidationErrorBackground:a.inputValidationErrorBackground,inputValidationErrorForeground:a.inputValidationErrorForeground,inputValidationErrorBorder:a.inputValidationErrorBorder,history:u,flexibleHeight:l,flexibleWidth:c,flexibleMaxHeight:d})),a.preserveCase=a._register(new $G({appendTitle:s,isChecked:!1,inputActiveOptionBorder:a.inputActiveOptionBorder,inputActiveOptionForeground:a.inputActiveOptionForeground,inputActiveOptionBackground:a.inputActiveOptionBackground})),a._register(a.preserveCase.onChange((function(e){a._onDidOptionChange.fire(e),!e&&a.fixFocusOnOptionClickEnabled&&a.inputBox.focus(),a.validate()}))),a._register(a.preserveCase.onKeyDown((function(e){a._onPreserveCaseKeyDown.fire(e)}))),a._showOptionButtons?a.cachedOptionsWidth=a.preserveCase.width():a.cachedOptionsWidth=0;var h=[a.preserveCase.domNode];a.onkeydown(a.domNode,(function(e){if(e.equals(15)||e.equals(17)||e.equals(9)){var t=h.indexOf(document.activeElement);if(t>=0){var n=-1;e.equals(17)?n=(t+1)%h.length:e.equals(15)&&(n=0===t?h.length-1:t-1),e.equals(9)?(h[t].blur(),a.inputBox.focus()):n>=0&&h[n].focus(),aW.EventHelper.stop(e,!0)}}}));var f=document.createElement("div");return f.className="controls",f.style.display=a._showOptionButtons?"block":"none",f.appendChild(a.preserveCase.domNode),a.domNode.appendChild(f),e&&e.appendChild(a.domNode),a.onkeydown(a.inputBox.inputElement,(function(e){return a._onKeyDown.fire(e)})),a.onkeyup(a.inputBox.inputElement,(function(e){return a._onKeyUp.fire(e)})),a.oninput(a.inputBox.inputElement,(function(e){return a._onInput.fire()})),a.onmousedown(a.inputBox.inputElement,(function(e){return a._onMouseDown.fire(e)})),a}return(0,J.Z)(n,[{key:"enable",value:function(){this.domNode.classList.remove("disabled"),this.inputBox.enable(),this.preserveCase.enable()}},{key:"disable",value:function(){this.domNode.classList.add("disabled"),this.inputBox.disable(),this.preserveCase.disable()}},{key:"setEnabled",value:function(e){e?this.enable():this.disable()}},{key:"style",value:function(e){this.inputActiveOptionBorder=e.inputActiveOptionBorder,this.inputActiveOptionForeground=e.inputActiveOptionForeground,this.inputActiveOptionBackground=e.inputActiveOptionBackground,this.inputBackground=e.inputBackground,this.inputForeground=e.inputForeground,this.inputBorder=e.inputBorder,this.inputValidationInfoBackground=e.inputValidationInfoBackground,this.inputValidationInfoForeground=e.inputValidationInfoForeground,this.inputValidationInfoBorder=e.inputValidationInfoBorder,this.inputValidationWarningBackground=e.inputValidationWarningBackground,this.inputValidationWarningForeground=e.inputValidationWarningForeground,this.inputValidationWarningBorder=e.inputValidationWarningBorder,this.inputValidationErrorBackground=e.inputValidationErrorBackground,this.inputValidationErrorForeground=e.inputValidationErrorForeground,this.inputValidationErrorBorder=e.inputValidationErrorBorder,this.applyStyles()}},{key:"applyStyles",value:function(){if(this.domNode){var e={inputActiveOptionBorder:this.inputActiveOptionBorder,inputActiveOptionForeground:this.inputActiveOptionForeground,inputActiveOptionBackground:this.inputActiveOptionBackground};this.preserveCase.style(e);var t={inputBackground:this.inputBackground,inputForeground:this.inputForeground,inputBorder:this.inputBorder,inputValidationInfoBackground:this.inputValidationInfoBackground,inputValidationInfoForeground:this.inputValidationInfoForeground,inputValidationInfoBorder:this.inputValidationInfoBorder,inputValidationWarningBackground:this.inputValidationWarningBackground,inputValidationWarningForeground:this.inputValidationWarningForeground,inputValidationWarningBorder:this.inputValidationWarningBorder,inputValidationErrorBackground:this.inputValidationErrorBackground,inputValidationErrorForeground:this.inputValidationErrorForeground,inputValidationErrorBorder:this.inputValidationErrorBorder};this.inputBox.style(t)}}},{key:"select",value:function(){this.inputBox.select()}},{key:"focus",value:function(){this.inputBox.focus()}},{key:"getPreserveCase",value:function(){return this.preserveCase.checked}},{key:"setPreserveCase",value:function(e){this.preserveCase.checked=e}},{key:"focusOnPreserve",value:function(){this.preserveCase.focus()}},{key:"validate",value:function(){this.inputBox&&this.inputBox.validate()}},{key:"width",set:function(e){this.inputBox.paddingRight=this.cachedOptionsWidth,this.inputBox.width=e,this.domNode.style.width=e+"px"}},{key:"dispose",value:function(){(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}}]),n}(FV.$),XG=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},JG=function(e,t){return function(n,i){t(n,i,e)}},e$="historyNavigationWidget",t$="historyNavigationEnabled";function n$(e,t){return e.getContext(document.activeElement).getValue(t)}function i$(e,t){var n=function(e,t){return e.createScoped(t.target)}(e,t);return function(e,t,n){new kB.uy(n,t).bindTo(e)}(n,t,e$),{scopedContextKeyService:n,historyNavigationEnablement:new kB.uy(t$,!0).bindTo(n)}}var r$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a,s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return(0,X.Z)(this,n),(a=t.call(this,e,i,s,r))._register(i$(o,{target:a.inputBox.element,historyNavigator:a.inputBox}).scopedContextKeyService),a}return(0,J.Z)(n)}(KG);r$=XG([JG(3,kB.i6)],r$);var o$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a,s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return(0,X.Z)(this,n),(a=t.call(this,e,i,s,r))._register(i$(o,{target:a.inputBox.element,historyNavigator:a.inputBox}).scopedContextKeyService),a}return(0,J.Z)(n)}(QG);o$=XG([JG(3,kB.i6)],o$),XK.W.registerCommandAndKeybindingRule({id:"history.showPrevious",weight:200,when:kB.Ao.and(kB.Ao.has(e$),kB.Ao.equals(t$,!0)),primary:16,secondary:[528],handler:function(e,t){var n=n$(e.get(kB.i6),e$);n&&n.historyNavigator.showPreviousValue()}}),XK.W.registerCommandAndKeybindingRule({id:"history.showNext",weight:200,when:kB.Ao.and(kB.Ao.has(e$),kB.Ao.equals(t$,!0)),primary:18,secondary:[530],handler:function(e,t){var n=n$(e.get(kB.i6),e$);n&&n.historyNavigator.showNextValue()}});var a$=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},s$=(0,mU.q5)("find-selection",bW.lA.selection,yB.N("findSelectionIcon","Icon for 'Find in Selection' in the editor find widget.")),u$=(0,mU.q5)("find-collapsed",bW.lA.chevronRight,yB.N("findCollapsedIcon","Icon to indicate that the editor find widget is collapsed.")),l$=(0,mU.q5)("find-expanded",bW.lA.chevronDown,yB.N("findExpandedIcon","Icon to indicate that the editor find widget is expanded.")),c$=(0,mU.q5)("find-replace",bW.lA.replace,yB.N("findReplaceIcon","Icon for 'Replace' in the editor find widget.")),d$=(0,mU.q5)("find-replace-all",bW.lA.replaceAll,yB.N("findReplaceAllIcon","Icon for 'Replace All' in the editor find widget.")),h$=(0,mU.q5)("find-previous-match",bW.lA.arrowUp,yB.N("findPreviousMatchIcon","Icon for 'Find Previous' in the editor find widget.")),f$=(0,mU.q5)("find-next-match",bW.lA.arrowDown,yB.N("findNextMatchIcon","Icon for 'Find Next' in the editor find widget.")),p$=yB.N("label.find","Find"),g$=yB.N("placeholder.find","Find"),v$=yB.N("label.previousMatchButton","Previous match"),m$=yB.N("label.nextMatchButton","Next match"),_$=yB.N("label.toggleSelectionFind","Find in selection"),y$=yB.N("label.closeButton","Close"),b$=yB.N("label.replace","Replace"),w$=yB.N("placeholder.replace","Replace"),C$=yB.N("label.replaceButton","Replace"),k$=yB.N("label.replaceAllButton","Replace All"),S$=yB.N("label.toggleReplaceButton","Toggle Replace mode"),x$=yB.N("title.matchesCountLimit","Only the first {0} results are highlighted, but all find operations work on the entire text.",IG),L$=yB.N("label.matchesLocation","{0} of {1}"),E$=yB.N("label.noResults","No results"),D$=419,N$=69,M$="ctrlEnterReplaceAll.windows.donotask",T$=dz.dz?256:2048,I$=(0,J.Z)((function e(t){(0,X.Z)(this,e),this.afterLineNumber=t,this.heightInPx=33,this.suppressMouseDown=!1,this.domNode=document.createElement("div"),this.domNode.className="dock-find-viewzone"}));function O$(e,t,n){var i=!!t.match(/\n/);n&&i&&n.selectionStart>0&&e.stopPropagation()}function A$(e,t,n){var i=!!t.match(/\n/);n&&i&&n.selectionEnd<n.value.length&&e.stopPropagation()}var R$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o,a,s,u,l,c){var d;return(0,X.Z)(this,n),(d=t.call(this))._cachedHeight=null,d._revealTimeouts=[],d._codeEditor=e,d._controller=i,d._state=r,d._contextViewProvider=o,d._keybindingService=a,d._contextKeyService=s,d._storageService=l,d._notificationService=c,d._ctrlEnterReplaceAllWarningPrompted=!!l.getBoolean(M$,0),d._isVisible=!1,d._isReplaceVisible=!1,d._ignoreChangeEvent=!1,d._updateHistoryDelayer=new zB.vp(500),d._register((0,WB.OF)((function(){return d._updateHistoryDelayer.cancel()}))),d._register(d._state.onFindReplaceStateChange((function(e){return d._onStateChanged(e)}))),d._buildDomNode(),d._updateButtons(),d._tryUpdateWidgetWidth(),d._findInput.inputBox.layout(),d._register(d._codeEditor.onDidChangeConfiguration((function(e){if(e.hasChanged(77)&&(d._codeEditor.getOption(77)&&d._state.change({isReplaceRevealed:!1},!1),d._updateButtons()),e.hasChanged(127)&&d._tryUpdateWidgetWidth(),e.hasChanged(2)&&d.updateAccessibilitySupport(),e.hasChanged(33)){var t=d._codeEditor.getOption(33).addExtraSpaceOnTop;t&&!d._viewZone&&(d._viewZone=new I$(0),d._showViewZone()),!t&&d._viewZone&&d._removeViewZone()}}))),d.updateAccessibilitySupport(),d._register(d._codeEditor.onDidChangeCursorSelection((function(){d._isVisible&&d._updateToggleSelectionFindButton()}))),d._register(d._codeEditor.onDidFocusEditorWidget((function(){return a$((0,Br.Z)(d),void 0,void 0,fn().mark((function e(){var t;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._isVisible){e.next=5;break}return e.next=3,this._controller.getGlobalBufferTerm();case 3:(t=e.sent)&&t!==this._state.searchString&&(this._state.change({searchString:t},!1),this._findInput.select());case 5:case"end":return e.stop()}}),e,this)})))}))),d._findInputFocused=SG.bindTo(s),d._findFocusTracker=d._register(aW.trackFocus(d._findInput.inputBox.inputElement)),d._register(d._findFocusTracker.onDidFocus((function(){d._findInputFocused.set(!0),d._updateSearchScope()}))),d._register(d._findFocusTracker.onDidBlur((function(){d._findInputFocused.set(!1)}))),d._replaceInputFocused=xG.bindTo(s),d._replaceFocusTracker=d._register(aW.trackFocus(d._replaceInput.inputBox.inputElement)),d._register(d._replaceFocusTracker.onDidFocus((function(){d._replaceInputFocused.set(!0),d._updateSearchScope()}))),d._register(d._replaceFocusTracker.onDidBlur((function(){d._replaceInputFocused.set(!1)}))),d._codeEditor.addOverlayWidget((0,Br.Z)(d)),d._codeEditor.getOption(33).addExtraSpaceOnTop&&(d._viewZone=new I$(0)),d._applyTheme(u.getColorTheme()),d._register(u.onDidColorThemeChange(d._applyTheme.bind((0,Br.Z)(d)))),d._register(d._codeEditor.onDidChangeModel((function(){d._isVisible&&(d._viewZoneId=void 0)}))),d._register(d._codeEditor.onDidScrollChange((function(e){e.scrollTopChanged?d._layoutViewZone():setTimeout((function(){d._layoutViewZone()}),0)}))),d}return(0,J.Z)(n,[{key:"getId",value:function(){return n.ID}},{key:"getDomNode",value:function(){return this._domNode}},{key:"getPosition",value:function(){return this._isVisible?{preference:0}:null}},{key:"_onStateChanged",value:function(e){if(e.searchString){try{this._ignoreChangeEvent=!0,this._findInput.setValue(this._state.searchString)}finally{this._ignoreChangeEvent=!1}this._updateButtons()}if(e.replaceString&&(this._replaceInput.inputBox.value=this._state.replaceString),e.isRevealed&&(this._state.isRevealed?this._reveal():this._hide(!0)),e.isReplaceRevealed&&(this._state.isReplaceRevealed?this._codeEditor.getOption(77)||this._isReplaceVisible||(this._isReplaceVisible=!0,this._replaceInput.width=aW.getTotalWidth(this._findInput.domNode),this._updateButtons(),this._replaceInput.inputBox.layout()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),(e.isRevealed||e.isReplaceRevealed)&&(this._state.isRevealed||this._state.isReplaceRevealed)&&this._tryUpdateHeight()&&this._showViewZone(),e.isRegex&&this._findInput.setRegex(this._state.isRegex),e.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),e.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),e.preserveCase&&this._replaceInput.setPreserveCase(this._state.preserveCase),e.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),e.searchString||e.matchesCount||e.matchesPosition){var t=this._state.searchString.length>0&&0===this._state.matchesCount;this._domNode.classList.toggle("no-results",t),this._updateMatchesCount(),this._updateButtons()}(e.searchString||e.currentMatch)&&this._layoutViewZone(),e.updateHistory&&this._delayedUpdateHistory(),e.loop&&this._updateButtons()}},{key:"_delayedUpdateHistory",value:function(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(void 0,LB.dL)}},{key:"_updateHistory",value:function(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInput.inputBox.addToHistory()}},{key:"_updateMatchesCount",value:function(){var e;if(this._matchesCount.style.minWidth=N$+"px",this._state.matchesCount>=IG?this._matchesCount.title=x$:this._matchesCount.title="",this._matchesCount.firstChild&&this._matchesCount.removeChild(this._matchesCount.firstChild),this._state.matchesCount>0){var t=String(this._state.matchesCount);this._state.matchesCount>=IG&&(t+="+");var n=String(this._state.matchesPosition);"0"===n&&(n="?"),e=Dz.WU(L$,n,t)}else e=E$;this._matchesCount.appendChild(document.createTextNode(e)),(0,IB.Z9)(this._getAriaLabel(e,this._state.currentMatch,this._state.searchString)),N$=Math.max(N$,this._matchesCount.clientWidth)}},{key:"_getAriaLabel",value:function(e,t,n){if(e===E$)return""===n?yB.N("ariaSearchNoResultEmpty","{0} found",e):yB.N("ariaSearchNoResult","{0} found for '{1}'",e,n);if(t){var i=yB.N("ariaSearchNoResultWithLineNum","{0} found for '{1}', at {2}",e,n,t.startLineNumber+":"+t.startColumn),r=this._codeEditor.getModel();if(r&&t.startLineNumber<=r.getLineCount()&&t.startLineNumber>=1){var o=r.getLineContent(t.startLineNumber);return"".concat(o,", ").concat(i)}return i}return yB.N("ariaSearchNoResultWithLineNumNoCurrentMatch","{0} found for '{1}'",e,n)}},{key:"_updateToggleSelectionFindButton",value:function(){var e=this._codeEditor.getSelection(),t=!!e&&(e.startLineNumber!==e.endLineNumber||e.startColumn!==e.endColumn),n=this._toggleSelectionFind.checked;this._isVisible&&(n||t)?this._toggleSelectionFind.enable():this._toggleSelectionFind.disable()}},{key:"_updateButtons",value:function(){this._findInput.setEnabled(this._isVisible),this._replaceInput.setEnabled(this._isVisible&&this._isReplaceVisible),this._updateToggleSelectionFindButton(),this._closeBtn.setEnabled(this._isVisible);var e=this._state.searchString.length>0,t=!!this._state.matchesCount;this._prevBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateBack()),this._nextBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateForward()),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._domNode.classList.toggle("replaceToggled",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);var n=!this._codeEditor.getOption(77);this._toggleReplaceBtn.setEnabled(this._isVisible&&n)}},{key:"_reveal",value:function(){var e=this;if(this._revealTimeouts.forEach((function(e){clearTimeout(e)})),this._revealTimeouts=[],!this._isVisible){this._isVisible=!0;var t=this._codeEditor.getSelection();switch(this._codeEditor.getOption(33).autoFindInSelection){case"always":this._toggleSelectionFind.checked=!0;break;case"never":this._toggleSelectionFind.checked=!1;break;case"multiline":var n=!!t&&t.startLineNumber!==t.endLineNumber;this._toggleSelectionFind.checked=n}this._tryUpdateWidgetWidth(),this._updateButtons(),this._revealTimeouts.push(setTimeout((function(){e._domNode.classList.add("visible"),e._domNode.setAttribute("aria-hidden","false")}),0)),this._revealTimeouts.push(setTimeout((function(){e._findInput.validate()}),200)),this._codeEditor.layoutOverlayWidget(this);var i=!0;if(this._codeEditor.getOption(33).seedSearchStringFromSelection&&t){var r=this._codeEditor.getDomNode();if(r){var o=aW.getDomNodePagePosition(r),a=this._codeEditor.getScrolledVisiblePosition(t.getStartPosition()),s=o.left+(a?a.left:0),u=a?a.top:0;if(this._viewZone&&u<this._viewZone.heightInPx){t.endLineNumber>t.startLineNumber&&(i=!1);var l=aW.getTopLeftOffset(this._domNode).left;s>l&&(i=!1);var c=this._codeEditor.getScrolledVisiblePosition(t.getEndPosition());o.left+(c?c.left:0)>l&&(i=!1)}}}this._showViewZone(i)}}},{key:"_hide",value:function(e){this._revealTimeouts.forEach((function(e){clearTimeout(e)})),this._revealTimeouts=[],this._isVisible&&(this._isVisible=!1,this._updateButtons(),this._domNode.classList.remove("visible"),this._domNode.setAttribute("aria-hidden","true"),this._findInput.clearMessage(),e&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._removeViewZone())}},{key:"_layoutViewZone",value:function(e){var t=this;if(this._codeEditor.getOption(33).addExtraSpaceOnTop){if(this._isVisible){var n=this._viewZone;void 0===this._viewZoneId&&n&&this._codeEditor.changeViewZones((function(i){n.heightInPx=t._getHeight(),t._viewZoneId=i.addZone(n),t._codeEditor.setScrollTop(e||t._codeEditor.getScrollTop()+n.heightInPx)}))}}else this._removeViewZone()}},{key:"_showViewZone",value:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(this._isVisible&&this._codeEditor.getOption(33).addExtraSpaceOnTop){void 0===this._viewZone&&(this._viewZone=new I$(0));var n=this._viewZone;this._codeEditor.changeViewZones((function(i){if(void 0!==e._viewZoneId){var r=e._getHeight();if(r===n.heightInPx)return;var o=r-n.heightInPx;return n.heightInPx=r,i.layoutZone(e._viewZoneId),void(t&&e._codeEditor.setScrollTop(e._codeEditor.getScrollTop()+o))}var a=e._getHeight();(a-=e._codeEditor.getOption(71).top)<=0||(n.heightInPx=a,e._viewZoneId=i.addZone(n),t&&e._codeEditor.setScrollTop(e._codeEditor.getScrollTop()+a))}))}}},{key:"_removeViewZone",value:function(){var e=this;this._codeEditor.changeViewZones((function(t){void 0!==e._viewZoneId&&(t.removeZone(e._viewZoneId),e._viewZoneId=void 0,e._viewZone&&(e._codeEditor.setScrollTop(e._codeEditor.getScrollTop()-e._viewZone.heightInPx),e._viewZone=void 0))}))}},{key:"_applyTheme",value:function(e){var t={inputActiveOptionBorder:e.getColor(GB.PR),inputActiveOptionBackground:e.getColor(GB.XE),inputActiveOptionForeground:e.getColor(GB.Pv),inputBackground:e.getColor(GB.sE),inputForeground:e.getColor(GB.zJ),inputBorder:e.getColor(GB.dt),inputValidationInfoBackground:e.getColor(GB._l),inputValidationInfoForeground:e.getColor(GB.YI),inputValidationInfoBorder:e.getColor(GB.EP),inputValidationWarningBackground:e.getColor(GB.RV),inputValidationWarningForeground:e.getColor(GB.SU),inputValidationWarningBorder:e.getColor(GB.C3),inputValidationErrorBackground:e.getColor(GB.p),inputValidationErrorForeground:e.getColor(GB._t),inputValidationErrorBorder:e.getColor(GB.OZ)};this._findInput.style(t),this._replaceInput.style(t),this._toggleSelectionFind.style(t)}},{key:"_tryUpdateWidgetWidth",value:function(){if(this._isVisible&&aW.isInDOM(this._domNode)){var e=this._codeEditor.getLayoutInfo();if(e.contentWidth<=0)this._domNode.classList.add("hiddenEditor");else{this._domNode.classList.contains("hiddenEditor")&&this._domNode.classList.remove("hiddenEditor");var t=e.width,n=e.minimap.minimapWidth,i=!1,r=!1,o=!1;if(this._resized)if(aW.getTotalWidth(this._domNode)>D$)return this._domNode.style.maxWidth="".concat(t-28-n-15,"px"),void(this._replaceInput.width=aW.getTotalWidth(this._findInput.domNode));if(447+n>=t&&(r=!0),447+n-N$>=t&&(o=!0),447+n-N$>=t+50&&(i=!0),this._domNode.classList.toggle("collapsed-find-widget",i),this._domNode.classList.toggle("narrow-find-widget",o),this._domNode.classList.toggle("reduced-find-widget",r),o||i||(this._domNode.style.maxWidth="".concat(t-28-n-15,"px")),this._resized){this._findInput.inputBox.layout();var a=this._findInput.inputBox.element.clientWidth;a>0&&(this._replaceInput.width=a)}else this._isReplaceVisible&&(this._replaceInput.width=aW.getTotalWidth(this._findInput.domNode))}}}},{key:"_getHeight",value:function(){var e=0;return e+=4,e+=this._findInput.inputBox.height+2,this._isReplaceVisible&&(e+=4,e+=this._replaceInput.inputBox.height+2),e+=4}},{key:"_tryUpdateHeight",value:function(){var e=this._getHeight();return(null===this._cachedHeight||this._cachedHeight!==e)&&(this._cachedHeight=e,this._domNode.style.height="".concat(e,"px"),!0)}},{key:"focusFindInput",value:function(){this._findInput.select(),this._findInput.focus()}},{key:"focusReplaceInput",value:function(){this._replaceInput.select(),this._replaceInput.focus()}},{key:"highlightFindOptions",value:function(){this._findInput.highlightFindOptions()}},{key:"_updateSearchScope",value:function(){var e=this;if(this._codeEditor.hasModel()&&this._toggleSelectionFind.checked){var t=this._codeEditor.getSelections();t.map((function(t){1===t.endColumn&&t.endLineNumber>t.startLineNumber&&(t=t.setEndPosition(t.endLineNumber-1,e._codeEditor.getModel().getLineMaxColumn(t.endLineNumber-1)));var n=e._state.currentMatch;return t.startLineNumber===t.endLineNumber||YB.e.equalsRange(t,n)?null:t})).filter((function(e){return!!e})),t.length&&this._state.change({searchScope:t},!0)}}},{key:"_onFindInputMouseDown",value:function(e){e.middleButton&&e.stopPropagation()}},{key:"_onFindInputKeyDown",value:function(e){return e.equals(3|T$)?(this._findInput.inputBox.insertAtCursor("\n"),void e.preventDefault()):e.equals(2)?(this._isReplaceVisible?this._replaceInput.focus():this._findInput.focusOnCaseSensitive(),void e.preventDefault()):e.equals(2066)?(this._codeEditor.focus(),void e.preventDefault()):e.equals(16)?O$(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea")):e.equals(18)?A$(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea")):void 0}},{key:"_onReplaceInputKeyDown",value:function(e){return e.equals(3|T$)?(dz.ED&&dz.tY&&!this._ctrlEnterReplaceAllWarningPrompted&&(this._notificationService.info(yB.N("ctrlEnter.keybindingChanged","Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.")),this._ctrlEnterReplaceAllWarningPrompted=!0,this._storageService.store(M$,!0,0,0)),this._replaceInput.inputBox.insertAtCursor("\n"),void e.preventDefault()):e.equals(2)?(this._findInput.focusOnCaseSensitive(),void e.preventDefault()):e.equals(1026)?(this._findInput.focus(),void e.preventDefault()):e.equals(2066)?(this._codeEditor.focus(),void e.preventDefault()):e.equals(16)?O$(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea")):e.equals(18)?A$(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea")):void 0}},{key:"getVerticalSashLeft",value:function(e){return 0}},{key:"_keybindingLabelFor",value:function(e){var t=this._keybindingService.lookupKeybinding(e);return t?" (".concat(t.getLabel(),")"):""}},{key:"_buildDomNode",value:function(){var e=this;this._findInput=this._register(new r$(null,this._contextViewProvider,{width:221,label:p$,placeholder:g$,appendCaseSensitiveLabel:this._keybindingLabelFor(TG.ToggleCaseSensitiveCommand),appendWholeWordsLabel:this._keybindingLabelFor(TG.ToggleWholeWordCommand),appendRegexLabel:this._keybindingLabelFor(TG.ToggleRegexCommand),validation:function(t){if(0===t.length||!e._findInput.getRegex())return null;try{return new RegExp(t,"gu"),null}catch(n){return{content:n.message}}},flexibleHeight:true,flexibleWidth:true,flexibleMaxHeight:118},this._contextKeyService,!0)),this._findInput.setRegex(!!this._state.isRegex),this._findInput.setCaseSensitive(!!this._state.matchCase),this._findInput.setWholeWords(!!this._state.wholeWord),this._register(this._findInput.onKeyDown((function(t){return e._onFindInputKeyDown(t)}))),this._register(this._findInput.inputBox.onDidChange((function(){e._ignoreChangeEvent||e._state.change({searchString:e._findInput.getValue()},!0)}))),this._register(this._findInput.onDidOptionChange((function(){e._state.change({isRegex:e._findInput.getRegex(),wholeWord:e._findInput.getWholeWords(),matchCase:e._findInput.getCaseSensitive()},!0)}))),this._register(this._findInput.onCaseSensitiveKeyDown((function(t){t.equals(1026)&&e._isReplaceVisible&&(e._replaceInput.focus(),t.preventDefault())}))),this._register(this._findInput.onRegexKeyDown((function(t){t.equals(2)&&e._isReplaceVisible&&(e._replaceInput.focusOnPreserve(),t.preventDefault())}))),this._register(this._findInput.inputBox.onDidHeightChange((function(t){e._tryUpdateHeight()&&e._showViewZone()}))),dz.IJ&&this._register(this._findInput.onMouseDown((function(t){return e._onFindInputMouseDown(t)}))),this._matchesCount=document.createElement("div"),this._matchesCount.className="matchesCount",this._updateMatchesCount(),this._prevBtn=this._register(new P$({label:v$+this._keybindingLabelFor(TG.PreviousMatchFindAction),icon:h$,onTrigger:function(){e._codeEditor.getAction(TG.PreviousMatchFindAction).run().then(void 0,LB.dL)}})),this._nextBtn=this._register(new P$({label:m$+this._keybindingLabelFor(TG.NextMatchFindAction),icon:f$,onTrigger:function(){e._codeEditor.getAction(TG.NextMatchFindAction).run().then(void 0,LB.dL)}}));var t=document.createElement("div");t.className="find-part",t.appendChild(this._findInput.domNode);var n=document.createElement("div");n.className="find-actions",t.appendChild(n),n.appendChild(this._matchesCount),n.appendChild(this._prevBtn.domNode),n.appendChild(this._nextBtn.domNode),this._toggleSelectionFind=this._register(new RG({icon:s$,title:_$+this._keybindingLabelFor(TG.ToggleSearchScopeCommand),isChecked:!1})),this._register(this._toggleSelectionFind.onChange((function(){if(e._toggleSelectionFind.checked){if(e._codeEditor.hasModel()){var t=e._codeEditor.getSelections();t.map((function(t){return 1===t.endColumn&&t.endLineNumber>t.startLineNumber&&(t=t.setEndPosition(t.endLineNumber-1,e._codeEditor.getModel().getLineMaxColumn(t.endLineNumber-1))),t.isEmpty()?null:t})).filter((function(e){return!!e})),t.length&&e._state.change({searchScope:t},!0)}}else e._state.change({searchScope:null},!0)}))),n.appendChild(this._toggleSelectionFind.domNode),this._closeBtn=this._register(new P$({label:y$+this._keybindingLabelFor(TG.CloseFindWidgetCommand),icon:mU.s_,onTrigger:function(){e._state.change({isRevealed:!1,searchScope:null},!1)},onKeyDown:function(t){t.equals(2)&&e._isReplaceVisible&&(e._replaceBtn.isEnabled()?e._replaceBtn.focus():e._codeEditor.focus(),t.preventDefault())}})),n.appendChild(this._closeBtn.domNode),this._replaceInput=this._register(new o$(null,void 0,{label:b$,placeholder:w$,appendPreserveCaseLabel:this._keybindingLabelFor(TG.TogglePreserveCaseCommand),history:[],flexibleHeight:true,flexibleWidth:true,flexibleMaxHeight:118},this._contextKeyService,!0)),this._replaceInput.setPreserveCase(!!this._state.preserveCase),this._register(this._replaceInput.onKeyDown((function(t){return e._onReplaceInputKeyDown(t)}))),this._register(this._replaceInput.inputBox.onDidChange((function(){e._state.change({replaceString:e._replaceInput.inputBox.value},!1)}))),this._register(this._replaceInput.inputBox.onDidHeightChange((function(t){e._isReplaceVisible&&e._tryUpdateHeight()&&e._showViewZone()}))),this._register(this._replaceInput.onDidOptionChange((function(){e._state.change({preserveCase:e._replaceInput.getPreserveCase()},!0)}))),this._register(this._replaceInput.onPreserveCaseKeyDown((function(t){t.equals(2)&&(e._prevBtn.isEnabled()?e._prevBtn.focus():e._nextBtn.isEnabled()?e._nextBtn.focus():e._toggleSelectionFind.enabled?e._toggleSelectionFind.focus():e._closeBtn.isEnabled()&&e._closeBtn.focus(),t.preventDefault())}))),this._replaceBtn=this._register(new P$({label:C$+this._keybindingLabelFor(TG.ReplaceOneAction),icon:c$,onTrigger:function(){e._controller.replace()},onKeyDown:function(t){t.equals(1026)&&(e._closeBtn.focus(),t.preventDefault())}})),this._replaceAllBtn=this._register(new P$({label:k$+this._keybindingLabelFor(TG.ReplaceAllAction),icon:d$,onTrigger:function(){e._controller.replaceAll()}}));var i=document.createElement("div");i.className="replace-part",i.appendChild(this._replaceInput.domNode);var r=document.createElement("div");r.className="replace-actions",i.appendChild(r),r.appendChild(this._replaceBtn.domNode),r.appendChild(this._replaceAllBtn.domNode),this._toggleReplaceBtn=this._register(new P$({label:S$,className:"codicon toggle left",onTrigger:function(){e._state.change({isReplaceRevealed:!e._isReplaceVisible},!1),e._isReplaceVisible&&(e._replaceInput.width=aW.getTotalWidth(e._findInput.domNode),e._replaceInput.inputBox.layout()),e._showViewZone()}})),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible),this._domNode=document.createElement("div"),this._domNode.className="editor-widget find-widget",this._domNode.setAttribute("aria-hidden","true"),this._domNode.style.width="".concat(D$,"px"),this._domNode.appendChild(this._toggleReplaceBtn.domNode),this._domNode.appendChild(t),this._domNode.appendChild(i),this._resizeSash=new lY.g(this._domNode,this,{orientation:0,size:2}),this._resized=!1;var o=D$;this._register(this._resizeSash.onDidStart((function(){o=aW.getTotalWidth(e._domNode)}))),this._register(this._resizeSash.onDidChange((function(t){e._resized=!0;var n=o+t.startX-t.currentX;n<D$||(n>(parseFloat(aW.getComputedStyle(e._domNode).maxWidth)||0)||(e._domNode.style.width="".concat(n,"px"),e._isReplaceVisible&&(e._replaceInput.width=aW.getTotalWidth(e._findInput.domNode)),e._findInput.inputBox.layout(),e._tryUpdateHeight()))}))),this._register(this._resizeSash.onDidReset((function(){var t=aW.getTotalWidth(e._domNode);if(!(t<D$)){var n=D$;if(!e._resized||t===D$){var i=e._codeEditor.getLayoutInfo();n=i.width-28-i.minimap.minimapWidth-15,e._resized=!0}e._domNode.style.width="".concat(n,"px"),e._isReplaceVisible&&(e._replaceInput.width=aW.getTotalWidth(e._findInput.domNode)),e._findInput.inputBox.layout()}})))}},{key:"updateAccessibilitySupport",value:function(){var e=this._codeEditor.getOption(2);this._findInput.setFocusInputOnOptionClick(2!==e)}}]),n}(FV.$);R$.ID="editor.contrib.findWidget";var P$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;(0,X.Z)(this,n),(i=t.call(this))._opts=e;var r="button";return i._opts.className&&(r=r+" "+i._opts.className),i._opts.icon&&(r=r+" "+$B.kS.asClassName(i._opts.icon)),i._domNode=document.createElement("div"),i._domNode.title=i._opts.label,i._domNode.tabIndex=0,i._domNode.className=r,i._domNode.setAttribute("role","button"),i._domNode.setAttribute("aria-label",i._opts.label),i.onclick(i._domNode,(function(e){i._opts.onTrigger(),e.preventDefault()})),i.onkeydown(i._domNode,(function(e){if(e.equals(10)||e.equals(3))return i._opts.onTrigger(),void e.preventDefault();i._opts.onKeyDown&&i._opts.onKeyDown(e)})),i}return(0,J.Z)(n,[{key:"domNode",get:function(){return this._domNode}},{key:"isEnabled",value:function(){return this._domNode.tabIndex>=0}},{key:"focus",value:function(){this._domNode.focus()}},{key:"setEnabled",value:function(e){this._domNode.classList.toggle("disabled",!e),this._domNode.setAttribute("aria-disabled",String(!e)),this._domNode.tabIndex=e?0:-1}},{key:"setExpanded",value:function(e){var t,n,i,r;(this._domNode.setAttribute("aria-expanded",String(!!e)),e)?((t=this._domNode.classList).remove.apply(t,(0,Ct.Z)($B.kS.asClassNameArray(u$))),(n=this._domNode.classList).add.apply(n,(0,Ct.Z)($B.kS.asClassNameArray(l$)))):((i=this._domNode.classList).remove.apply(i,(0,Ct.Z)($B.kS.asClassNameArray(l$))),(r=this._domNode.classList).add.apply(r,(0,Ct.Z)($B.kS.asClassNameArray(u$))))}}]),n}(FV.$);(0,$B.Ic)((function(e,t){var n=function(e,n){n&&t.addRule(".monaco-editor ".concat(e," { background-color: ").concat(n,"; }"))};n(".findMatch",e.getColor(GB.MU)),n(".currentFindMatch",e.getColor(GB.ny)),n(".findScope",e.getColor(GB.jU)),n(".find-widget",e.getColor(GB.D0));var i=e.getColor(GB.rh);i&&t.addRule(".monaco-editor .find-widget { box-shadow: 0 0 8px 2px ".concat(i,"; }"));var r=e.getColor(GB.Ei);r&&t.addRule(".monaco-editor .findMatch { border: 1px ".concat("hc"===e.type?"dotted":"solid"," ").concat(r,"; box-sizing: border-box; }"));var o=e.getColor(GB.pn);o&&t.addRule(".monaco-editor .currentFindMatch { border: 2px solid ".concat(o,"; padding: 1px; box-sizing: border-box; }"));var a=e.getColor(GB.gk);a&&t.addRule(".monaco-editor .findScope { border: 1px ".concat("hc"===e.type?"dashed":"solid"," ").concat(a,"; }"));var s=e.getColor(GB.lR);s&&t.addRule(".monaco-editor .find-widget { border: 1px solid ".concat(s,"; }"));var u=e.getColor(GB.Hf);u&&t.addRule(".monaco-editor .find-widget { color: ".concat(u,"; }"));var l=e.getColor(GB.Id);l&&t.addRule(".monaco-editor .find-widget.no-results .matchesCount { color: ".concat(l,"; }"));var c=e.getColor(GB.Ng);if(c)t.addRule(".monaco-editor .find-widget .monaco-sash { background-color: ".concat(c,"; }"));else{var d=e.getColor(GB.D1);d&&t.addRule(".monaco-editor .find-widget .monaco-sash { background-color: ".concat(d,"; }"))}var h=e.getColor(GB.R8);h&&t.addRule(".monaco-editor .find-widget .monaco-inputbox.synthetic-focus { outline-color: ".concat(h,"; }"))}));var Z$=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},F$=function(e,t){return function(n,i){t(n,i,e)}},j$=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},H$=524288;function B$(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"single";if(!e.hasModel())return null;var n=e.getSelection();if("single"===t&&n.startLineNumber===n.endLineNumber||"multiple"===t)if(n.isEmpty()){var i=e.getConfiguredWordAtPosition(n.getStartPosition());if(i)return i.word}else if(e.getModel().getValueLengthInRange(n)<H$)return e.getModel().getValueInRange(n);return null}var z$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;return(0,X.Z)(this,n),(a=t.call(this))._editor=e,a._findWidgetVisible=kG.bindTo(i),a._contextKeyService=i,a._storageService=r,a._clipboardService=o,a._updateHistoryDelayer=new zB.vp(500),a._state=a._register(new VG),a.loadQueryState(),a._register(a._state.onFindReplaceStateChange((function(e){return a._onStateChanged(e)}))),a._model=null,a._register(a._editor.onDidChangeModel((function(){var e=a._editor.getModel()&&a._state.isRevealed;a.disposeModel(),a._state.change({searchScope:null,matchCase:a._storageService.getBoolean("editor.matchCase",1,!1),wholeWord:a._storageService.getBoolean("editor.wholeWord",1,!1),isRegex:a._storageService.getBoolean("editor.isRegex",1,!1),preserveCase:a._storageService.getBoolean("editor.preserveCase",1,!1)},!1),e&&a._start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!1,updateSearchScope:!1,loop:a._editor.getOption(33).loop})}))),a}return(0,J.Z)(n,[{key:"editor",get:function(){return this._editor}},{key:"dispose",value:function(){this.disposeModel(),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"disposeModel",value:function(){this._model&&(this._model.dispose(),this._model=null)}},{key:"_onStateChanged",value:function(e){this.saveQueryState(e),e.isRevealed&&(this._state.isRevealed?this._findWidgetVisible.set(!0):(this._findWidgetVisible.reset(),this.disposeModel())),e.searchString&&this.setGlobalBufferTerm(this._state.searchString)}},{key:"saveQueryState",value:function(e){e.isRegex&&this._storageService.store("editor.isRegex",this._state.actualIsRegex,1,0),e.wholeWord&&this._storageService.store("editor.wholeWord",this._state.actualWholeWord,1,0),e.matchCase&&this._storageService.store("editor.matchCase",this._state.actualMatchCase,1,0),e.preserveCase&&this._storageService.store("editor.preserveCase",this._state.actualPreserveCase,1,0)}},{key:"loadQueryState",value:function(){this._state.change({matchCase:this._storageService.getBoolean("editor.matchCase",1,this._state.matchCase),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,this._state.wholeWord),isRegex:this._storageService.getBoolean("editor.isRegex",1,this._state.isRegex),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,this._state.preserveCase)},!1)}},{key:"isFindInputFocused",value:function(){return!!SG.getValue(this._contextKeyService)}},{key:"getState",value:function(){return this._state}},{key:"closeFindWidget",value:function(){this._state.change({isRevealed:!1,searchScope:null},!1),this._editor.focus()}},{key:"toggleCaseSensitive",value:function(){this._state.change({matchCase:!this._state.matchCase},!1),this._state.isRevealed||this.highlightFindOptions()}},{key:"toggleWholeWords",value:function(){this._state.change({wholeWord:!this._state.wholeWord},!1),this._state.isRevealed||this.highlightFindOptions()}},{key:"toggleRegex",value:function(){this._state.change({isRegex:!this._state.isRegex},!1),this._state.isRevealed||this.highlightFindOptions()}},{key:"togglePreserveCase",value:function(){this._state.change({preserveCase:!this._state.preserveCase},!1),this._state.isRevealed||this.highlightFindOptions()}},{key:"toggleSearchScope",value:function(){var e=this;if(this._state.searchScope)this._state.change({searchScope:null},!0);else if(this._editor.hasModel()){var t=this._editor.getSelections();t.map((function(t){return 1===t.endColumn&&t.endLineNumber>t.startLineNumber&&(t=t.setEndPosition(t.endLineNumber-1,e._editor.getModel().getLineMaxColumn(t.endLineNumber-1))),t.isEmpty()?null:t})).filter((function(e){return!!e})),t.length&&this._state.change({searchScope:t},!0)}}},{key:"setSearchString",value:function(e){this._state.isRegex&&(e=Dz.ec(e)),this._state.change({searchString:e},!1)}},{key:"highlightFindOptions",value:function(){}},{key:"_start",value:function(e){return j$(this,void 0,void 0,fn().mark((function t(){var n,i,r,o,a;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.disposeModel(),this._editor.hasModel()){t.next=3;break}return t.abrupt("return");case 3:if(n={isRevealed:!0},"single"===e.seedSearchStringFromSelection?(i=B$(this._editor,e.seedSearchStringFromSelection))&&(this._state.isRegex?n.searchString=Dz.ec(i):n.searchString=i):"multiple"!==e.seedSearchStringFromSelection||e.updateSearchScope||(r=B$(this._editor,e.seedSearchStringFromSelection))&&(n.searchString=r),n.searchString||!e.seedSearchStringFromGlobalClipboard){t.next=12;break}return t.next=8,this.getGlobalBufferTerm();case 8:if(o=t.sent,this._editor.hasModel()){t.next=11;break}return t.abrupt("return");case 11:o&&(n.searchString=o);case 12:e.forceRevealReplace?n.isReplaceRevealed=!0:this._findWidgetVisible.get()||(n.isReplaceRevealed=!1),e.updateSearchScope&&(a=this._editor.getSelections()).some((function(e){return!e.isEmpty()}))&&(n.searchScope=a),n.loop=e.loop,this._state.change(n,!1),this._model||(this._model=new OG(this._editor,this._state));case 17:case"end":return t.stop()}}),t,this)})))}},{key:"start",value:function(e){return this._start(e)}},{key:"moveToNextMatch",value:function(){return!!this._model&&(this._model.moveToNextMatch(),!0)}},{key:"moveToPrevMatch",value:function(){return!!this._model&&(this._model.moveToPrevMatch(),!0)}},{key:"replace",value:function(){return!!this._model&&(this._model.replace(),!0)}},{key:"replaceAll",value:function(){return!!this._model&&(this._model.replaceAll(),!0)}},{key:"selectAllMatches",value:function(){return!!this._model&&(this._model.selectAllMatches(),this._editor.focus(),!0)}},{key:"getGlobalBufferTerm",value:function(){return j$(this,void 0,void 0,fn().mark((function e(){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._editor.getOption(33).globalFindClipboard||!this._editor.hasModel()||this._editor.getModel().isTooLargeForSyncing()){e.next=2;break}return e.abrupt("return",this._clipboardService.readFindText());case 2:return e.abrupt("return","");case 3:case"end":return e.stop()}}),e,this)})))}},{key:"setGlobalBufferTerm",value:function(e){this._editor.getOption(33).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(e)}}],[{key:"get",value:function(e){return e.getContribution(n.ID)}}]),n}(WB.JT);z$.ID="editor.contrib.findController";var W$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o,a,s,u,l){var c;return(0,X.Z)(this,n),(c=t.call(this,e,r,u,l))._contextViewService=i,c._keybindingService=o,c._themeService=a,c._notificationService=s,c._widget=null,c._findOptionsWidget=null,c}return(0,J.Z)(n,[{key:"_start",value:function(e){var t=this,i=Object.create(null,{_start:{get:function(){return(0,Qz.Z)((0,Xz.Z)(n.prototype),"_start",t)}}});return j$(this,void 0,void 0,fn().mark((function t(){var n,r,o;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this._widget||this._createFindWidget(),n=this._editor.getSelection(),r=!1,t.t0=this._editor.getOption(33).autoFindInSelection,t.next="always"===t.t0?6:"never"===t.t0?8:"multiline"===t.t0?10:13;break;case 6:return r=!0,t.abrupt("break",14);case 8:return r=!1,t.abrupt("break",14);case 10:return o=!!n&&n.startLineNumber!==n.endLineNumber,r=o,t.abrupt("break",14);case 13:return t.abrupt("break",14);case 14:return e.updateSearchScope=r,t.next=17,i._start.call(this,e);case 17:this._widget&&(2===e.shouldFocus?this._widget.focusReplaceInput():1===e.shouldFocus&&this._widget.focusFindInput());case 18:case"end":return t.stop()}}),t,this)})))}},{key:"highlightFindOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._widget||this._createFindWidget(),this._state.isRevealed&&!e?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()}},{key:"_createFindWidget",value:function(){this._widget=this._register(new R$(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._themeService,this._storageService,this._notificationService)),this._findOptionsWidget=this._register(new zG(this._editor,this._state,this._keybindingService,this._themeService))}}]),n}(z$=Z$([F$(1,kB.i6),F$(2,vV.Uy),F$(3,pz.p)],z$));W$=Z$([F$(1,uW.u),F$(2,kB.i6),F$(3,lW.d),F$(4,$B.XE),F$(5,AW.lT),F$(6,vV.Uy),F$(7,pz.p)],W$),(0,_B.rn)(new _B.jY({id:TG.StartFindAction,label:yB.N("startFindAction","Find"),alias:"Find",precondition:kB.Ao.or(bB.u.focus,kB.Ao.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2084,weight:100},menuOpts:{menuId:QB.eH.MenubarEditMenu,group:"3_find",title:yB.N({key:"miFind",comment:["&& denotes a mnemonic"]},"&&Find"),order:1}})).addImplementation(0,(function(e,t,n){var i=z$.get(t);return!!i&&i.start({forceRevealReplace:!1,seedSearchStringFromSelection:t.getOption(33).seedSearchStringFromSelection?"single":"none",seedSearchStringFromGlobalClipboard:t.getOption(33).globalFindClipboard,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(33).loop})}));var V$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:TG.StartFindWithSelection,label:yB.N("startFindWithSelectionAction","Find With Selection"),alias:"Find With Selection",precondition:void 0,kbOpts:{kbExpr:null,primary:0,mac:{primary:2083},weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return j$(this,void 0,void 0,fn().mark((function e(){var n;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=z$.get(t))){e.next=5;break}return e.next=4,n.start({forceRevealReplace:!1,seedSearchStringFromSelection:"multiple",seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(33).loop});case 4:n.setGlobalBufferTerm(n.getState().searchString);case 5:case"end":return e.stop()}}),e)})))}}]),n}(_B.R6),Y$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"run",value:function(e,t){return j$(this,void 0,void 0,fn().mark((function e(){var n;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=z$.get(t))||this._run(n)){e.next=5;break}return e.next=4,n.start({forceRevealReplace:!1,seedSearchStringFromSelection:0===n.getState().searchString.length&&t.getOption(33).seedSearchStringFromSelection?"single":"none",seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(33).loop});case 4:this._run(n);case 5:case"end":return e.stop()}}),e,this)})))}}]),n}(_B.R6),U$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:TG.NextMatchFindAction,label:yB.N("findNextMatchAction","Find Next"),alias:"Find Next",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:61,mac:{primary:2085,secondary:[61]},weight:100}})}return(0,J.Z)(n,[{key:"_run",value:function(e){return!!e.moveToNextMatch()&&(e.editor.pushUndoStop(),!0)}}]),n}(Y$),K$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:TG.NextMatchFindAction,label:yB.N("findNextMatchAction","Find Next"),alias:"Find Next",precondition:void 0,kbOpts:{kbExpr:kB.Ao.and(bB.u.focus,SG),primary:3,weight:100}})}return(0,J.Z)(n,[{key:"_run",value:function(e){return!!e.moveToNextMatch()&&(e.editor.pushUndoStop(),!0)}}]),n}(Y$),q$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:TG.PreviousMatchFindAction,label:yB.N("findPreviousMatchAction","Find Previous"),alias:"Find Previous",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100}})}return(0,J.Z)(n,[{key:"_run",value:function(e){return e.moveToPrevMatch()}}]),n}(Y$),G$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:TG.PreviousMatchFindAction,label:yB.N("findPreviousMatchAction","Find Previous"),alias:"Find Previous",precondition:void 0,kbOpts:{kbExpr:kB.Ao.and(bB.u.focus,SG),primary:1027,weight:100}})}return(0,J.Z)(n,[{key:"_run",value:function(e){return e.moveToPrevMatch()}}]),n}(Y$),$$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"run",value:function(e,t){return j$(this,void 0,void 0,fn().mark((function e(){var n,i;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=z$.get(t)){e.next=3;break}return e.abrupt("return");case 3:if((i=B$(t))&&n.setSearchString(i),this._run(n)){e.next=9;break}return e.next=8,n.start({forceRevealReplace:!1,seedSearchStringFromSelection:t.getOption(33).seedSearchStringFromSelection?"single":"none",seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(33).loop});case 8:this._run(n);case 9:case"end":return e.stop()}}),e,this)})))}}]),n}(_B.R6),Q$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:TG.NextSelectionMatchFindAction,label:yB.N("nextSelectionMatchFindAction","Find Next Selection"),alias:"Find Next Selection",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:2109,weight:100}})}return(0,J.Z)(n,[{key:"_run",value:function(e){return e.moveToNextMatch()}}]),n}($$),X$=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:TG.PreviousSelectionMatchFindAction,label:yB.N("previousSelectionMatchFindAction","Find Previous Selection"),alias:"Find Previous Selection",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:3133,weight:100}})}return(0,J.Z)(n,[{key:"_run",value:function(e){return e.moveToPrevMatch()}}]),n}($$);(0,_B.rn)(new _B.jY({id:TG.StartFindReplaceAction,label:yB.N("startReplace","Replace"),alias:"Replace",precondition:kB.Ao.or(bB.u.focus,kB.Ao.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menuOpts:{menuId:QB.eH.MenubarEditMenu,group:"3_find",title:yB.N({key:"miReplace",comment:["&& denotes a mnemonic"]},"&&Replace"),order:2}})).addImplementation(0,(function(e,t,n){if(!t.hasModel()||t.getOption(77))return!1;var i=z$.get(t);if(!i)return!1;var r=t.getSelection(),o=i.isFindInputFocused(),a=!r.isEmpty()&&r.startLineNumber===r.endLineNumber&&t.getOption(33).seedSearchStringFromSelection&&!o,s=o||a?2:1;return i.start({forceRevealReplace:!0,seedSearchStringFromSelection:a?"single":"none",seedSearchStringFromGlobalClipboard:t.getOption(33).seedSearchStringFromSelection,shouldFocus:s,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(33).loop})})),(0,_B._K)(z$.ID,W$),(0,_B.Qr)(V$),(0,_B.Qr)(U$),(0,_B.Qr)(K$),(0,_B.Qr)(q$),(0,_B.Qr)(G$),(0,_B.Qr)(Q$),(0,_B.Qr)(X$);var J$=_B._l.bindToContribution(z$.get);(0,_B.fK)(new J$({id:TG.CloseFindWidgetCommand,precondition:kG,handler:function(e){return e.closeFindWidget()},kbOpts:{weight:105,kbExpr:kB.Ao.and(bB.u.focus,kB.Ao.not("isComposing")),primary:9,secondary:[1033]}})),(0,_B.fK)(new J$({id:TG.ToggleCaseSensitiveCommand,precondition:void 0,handler:function(e){return e.toggleCaseSensitive()},kbOpts:{weight:105,kbExpr:bB.u.focus,primary:LG.primary,mac:LG.mac,win:LG.win,linux:LG.linux}})),(0,_B.fK)(new J$({id:TG.ToggleWholeWordCommand,precondition:void 0,handler:function(e){return e.toggleWholeWords()},kbOpts:{weight:105,kbExpr:bB.u.focus,primary:EG.primary,mac:EG.mac,win:EG.win,linux:EG.linux}})),(0,_B.fK)(new J$({id:TG.ToggleRegexCommand,precondition:void 0,handler:function(e){return e.toggleRegex()},kbOpts:{weight:105,kbExpr:bB.u.focus,primary:DG.primary,mac:DG.mac,win:DG.win,linux:DG.linux}})),(0,_B.fK)(new J$({id:TG.ToggleSearchScopeCommand,precondition:void 0,handler:function(e){return e.toggleSearchScope()},kbOpts:{weight:105,kbExpr:bB.u.focus,primary:NG.primary,mac:NG.mac,win:NG.win,linux:NG.linux}})),(0,_B.fK)(new J$({id:TG.TogglePreserveCaseCommand,precondition:void 0,handler:function(e){return e.togglePreserveCase()},kbOpts:{weight:105,kbExpr:bB.u.focus,primary:MG.primary,mac:MG.mac,win:MG.win,linux:MG.linux}})),(0,_B.fK)(new J$({id:TG.ReplaceOneAction,precondition:kG,handler:function(e){return e.replace()},kbOpts:{weight:105,kbExpr:bB.u.focus,primary:3094}})),(0,_B.fK)(new J$({id:TG.ReplaceOneAction,precondition:kG,handler:function(e){return e.replace()},kbOpts:{weight:105,kbExpr:kB.Ao.and(bB.u.focus,xG),primary:3}})),(0,_B.fK)(new J$({id:TG.ReplaceAllAction,precondition:kG,handler:function(e){return e.replaceAll()},kbOpts:{weight:105,kbExpr:bB.u.focus,primary:2563}})),(0,_B.fK)(new J$({id:TG.ReplaceAllAction,precondition:kG,handler:function(e){return e.replaceAll()},kbOpts:{weight:105,kbExpr:kB.Ao.and(bB.u.focus,xG),primary:void 0,mac:{primary:2051}}})),(0,_B.fK)(new J$({id:TG.SelectAllMatchesAction,precondition:kG,handler:function(e){return e.selectAllMatches()},kbOpts:{weight:105,kbExpr:bB.u.focus,primary:515}}));var eQ=65535,tQ=16777215,nQ=4278190080,iQ=function(){function e(t,n,i){if((0,X.Z)(this,e),t.length!==n.length||t.length>eQ)throw new Error("invalid startIndexes or endIndexes size");this._startIndexes=t,this._endIndexes=n,this._collapseStates=new Uint32Array(Math.ceil(t.length/32)),this._types=i,this._parentsComputed=!1}return(0,J.Z)(e,[{key:"ensureParentIndices",value:function(){var e=this;if(!this._parentsComputed){this._parentsComputed=!0;for(var t=[],n=function(n,i){var r=t[t.length-1];return e.getStartLineNumber(r)<=n&&e.getEndLineNumber(r)>=i},i=0,r=this._startIndexes.length;i<r;i++){var o=this._startIndexes[i],a=this._endIndexes[i];if(o>tQ||a>tQ)throw new Error("startLineNumber or endLineNumber must not exceed "+tQ);for(;t.length>0&&!n(o,a);)t.pop();var s=t.length>0?t[t.length-1]:-1;t.push(i),this._startIndexes[i]=o+((255&s)<<24),this._endIndexes[i]=a+((65280&s)<<16)}}}},{key:"length",get:function(){return this._startIndexes.length}},{key:"getStartLineNumber",value:function(e){return this._startIndexes[e]&tQ}},{key:"getEndLineNumber",value:function(e){return this._endIndexes[e]&tQ}},{key:"getType",value:function(e){return this._types?this._types[e]:void 0}},{key:"hasTypes",value:function(){return!!this._types}},{key:"isCollapsed",value:function(e){var t=e/32|0,n=e%32;return 0!==(this._collapseStates[t]&1<<n)}},{key:"setCollapsed",value:function(e,t){var n=e/32|0,i=e%32,r=this._collapseStates[n];this._collapseStates[n]=t?r|1<<i:r&~(1<<i)}},{key:"toRegion",value:function(e){return new rQ(this,e)}},{key:"getParentIndex",value:function(e){this.ensureParentIndices();var t=((this._startIndexes[e]&nQ)>>>24)+((this._endIndexes[e]&nQ)>>>16);return t===eQ?-1:t}},{key:"contains",value:function(e,t){return this.getStartLineNumber(e)<=t&&this.getEndLineNumber(e)>=t}},{key:"findIndex",value:function(e){var t=0,n=this._startIndexes.length;if(0===n)return-1;for(;t<n;){var i=Math.floor((t+n)/2);e<this.getStartLineNumber(i)?n=i:t=i+1}return t-1}},{key:"findRange",value:function(e){var t=this.findIndex(e);if(t>=0){if(this.getEndLineNumber(t)>=e)return t;for(t=this.getParentIndex(t);-1!==t;){if(this.contains(t,e))return t;t=this.getParentIndex(t)}}return-1}},{key:"toString",value:function(){for(var e=[],t=0;t<this.length;t++)e[t]="[".concat(this.isCollapsed(t)?"+":"-","] ").concat(this.getStartLineNumber(t),"/").concat(this.getEndLineNumber(t));return e.join(", ")}}]),e}(),rQ=function(){function e(t,n){(0,X.Z)(this,e),this.ranges=t,this.index=n}return(0,J.Z)(e,[{key:"startLineNumber",get:function(){return this.ranges.getStartLineNumber(this.index)}},{key:"endLineNumber",get:function(){return this.ranges.getEndLineNumber(this.index)}},{key:"regionIndex",get:function(){return this.index}},{key:"parentIndex",get:function(){return this.ranges.getParentIndex(this.index)}},{key:"isCollapsed",get:function(){return this.ranges.isCollapsed(this.index)}},{key:"containedBy",value:function(e){return e.startLineNumber<=this.startLineNumber&&e.endLineNumber>=this.endLineNumber}},{key:"containsLine",value:function(e){return this.startLineNumber<=e&&e<=this.endLineNumber}}]),e}(),oQ=function(){function e(t,n){(0,X.Z)(this,e),this._updateEventEmitter=new _W.Q5,this.onDidChange=this._updateEventEmitter.event,this._textModel=t,this._decorationProvider=n,this._regions=new iQ(new Uint32Array(0),new Uint32Array(0)),this._editorDecorationIds=[],this._isInitialized=!1}return(0,J.Z)(e,[{key:"regions",get:function(){return this._regions}},{key:"textModel",get:function(){return this._textModel}},{key:"isInitialized",get:function(){return this._isInitialized}},{key:"toggleCollapseState",value:function(e){var t=this;if(e.length){e=e.sort((function(e,t){return e.regionIndex-t.regionIndex}));var n={};this._decorationProvider.changeDecorations((function(i){var r,o=0,a=-1,s=-1,u=function(e){for(;o<e;){var n=t._regions.getEndLineNumber(o),r=t._regions.isCollapsed(o);n<=a&&i.changeDecorationOptions(t._editorDecorationIds[o],t._decorationProvider.getDecorationOption(r,n<=s)),r&&n>s&&(s=n),o++}},l=(0,Na.Z)(e);try{for(l.s();!(r=l.n()).done;){var c=r.value.regionIndex,d=t._editorDecorationIds[c];if(d&&!n[d]){n[d]=!0,u(c);var h=!t._regions.isCollapsed(c);t._regions.setCollapsed(c,h),a=Math.max(a,t._regions.getEndLineNumber(c))}}}catch(f){l.e(f)}finally{l.f()}u(t._regions.length)})),this._updateEventEmitter.fire({model:this,collapseStateChanged:e})}}},{key:"update",value:function(e){for(var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=[],r=-1,o=function(o,a){var s=e.getStartLineNumber(o),u=e.getEndLineNumber(o);a&&function(e,t){var i,r=(0,Na.Z)(n);try{for(r.s();!(i=r.n()).done;){var o=i.value;if(e<o&&o<=t)return!0}}catch(a){r.e(a)}finally{r.f()}return!1}(s,u)&&(a=!1),e.setCollapsed(o,a);var l=t._textModel.getLineMaxColumn(s),c={startLineNumber:s,startColumn:Math.max(l-1,1),endLineNumber:s,endColumn:l};i.push({range:c,options:t._decorationProvider.getDecorationOption(a,u<=r)}),a&&u>r&&(r=u)},a=0,s=function(){for(;a<t._regions.length;){var e=t._regions.isCollapsed(a);if(a++,e)return a-1}return-1},u=0,l=s();-1!==l&&u<e.length;){var c=this._textModel.getDecorationRange(this._editorDecorationIds[l]);if(c){var d=c.startLineNumber;if(c.startColumn===Math.max(c.endColumn-1,1)&&this._textModel.getLineMaxColumn(d)===c.endColumn)for(;u<e.length;){var h=e.getStartLineNumber(u);if(!(d>=h))break;o(u,d===h),u++}}l=s()}for(;u<e.length;)o(u,!1),u++;this._editorDecorationIds=this._decorationProvider.deltaDecorations(this._editorDecorationIds,i),this._regions=e,this._isInitialized=!0,this._updateEventEmitter.fire({model:this})}},{key:"getMemento",value:function(){for(var e=[],t=0;t<this._regions.length;t++)if(this._regions.isCollapsed(t)){var n=this._textModel.getDecorationRange(this._editorDecorationIds[t]);if(n){var i=n.startLineNumber,r=n.endLineNumber+this._regions.getEndLineNumber(t)-this._regions.getStartLineNumber(t);e.push({startLineNumber:i,endLineNumber:r})}}if(e.length>0)return e}},{key:"applyMemento",value:function(e){if(Array.isArray(e)){var t,n=[],i=(0,Na.Z)(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=this.getRegionAtLine(r.startLineNumber);o&&!o.isCollapsed&&n.push(o)}}catch(a){i.e(a)}finally{i.f()}this.toggleCollapseState(n)}}},{key:"dispose",value:function(){this._decorationProvider.deltaDecorations(this._editorDecorationIds,[])}},{key:"getAllRegionsAtLine",value:function(e,t){var n=[];if(this._regions)for(var i=this._regions.findRange(e),r=1;i>=0;){var o=this._regions.toRegion(i);t&&!t(o,r)||n.push(o),r++,i=o.parentIndex}return n}},{key:"getRegionAtLine",value:function(e){if(this._regions){var t=this._regions.findRange(e);if(t>=0)return this._regions.toRegion(t)}return null}},{key:"getRegionsInside",value:function(e,t){var n=[],i=e?e.regionIndex+1:0,r=e?e.endLineNumber:Number.MAX_VALUE;if(t&&2===t.length)for(var o=[],a=i,s=this._regions.length;a<s;a++){var u=this._regions.toRegion(a);if(!(this._regions.getStartLineNumber(a)<r))break;for(;o.length>0&&!u.containedBy(o[o.length-1]);)o.pop();o.push(u),t(u,o.length)&&n.push(u)}else for(var l=i,c=this._regions.length;l<c;l++){var d=this._regions.toRegion(l);if(!(this._regions.getStartLineNumber(l)<r))break;t&&!t(d)||n.push(d)}return n}}]),e}();function aQ(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.MAX_VALUE,i=arguments.length>3?arguments[3]:void 0,r=[];if(i&&i.length>0){var o,a=(0,Na.Z)(i);try{for(a.s();!(o=a.n()).done;){var s=o.value,u=e.getRegionAtLine(s);if(u&&(u.isCollapsed!==t&&r.push(u),n>1)){var l=e.getRegionsInside(u,(function(e,i){return e.isCollapsed!==t&&i<n}));r.push.apply(r,(0,Ct.Z)(l))}}}catch(d){a.e(d)}finally{a.f()}}else{var c=e.getRegionsInside(null,(function(e,i){return e.isCollapsed!==t&&i<n}));r.push.apply(r,(0,Ct.Z)(c))}e.toggleCollapseState(r)}function sQ(e,t,n,i){var r,o=[],a=(0,Na.Z)(i);try{for(a.s();!(r=a.n()).done;){var s=r.value,u=e.getAllRegionsAtLine(s,(function(e,i){return e.isCollapsed!==t&&i<=n}));o.push.apply(o,(0,Ct.Z)(u))}}catch(l){a.e(l)}finally{a.f()}e.toggleCollapseState(o)}function uQ(e,t,n){var i,r=[],o=(0,Na.Z)(n);try{for(o.s();!(i=o.n()).done;){var a=i.value;r.push(e.getAllRegionsAtLine(a,void 0)[0])}}catch(u){o.e(u)}finally{o.f()}var s=e.getRegionsInside(null,(function(e){return r.every((function(t){return!t.containedBy(e)&&!e.containedBy(t)}))&&e.isCollapsed!==t}));e.toggleCollapseState(s)}function lQ(e,t,n){for(var i=e.textModel,r=e.regions,o=[],a=r.length-1;a>=0;a--)if(n!==r.isCollapsed(a)){var s=r.getStartLineNumber(a);t.test(i.getLineContent(s))&&o.push(r.toRegion(a))}e.toggleCollapseState(o)}function cQ(e,t,n){for(var i=e.regions,r=[],o=i.length-1;o>=0;o--)n!==i.isCollapsed(o)&&t===i.getType(o)&&r.push(i.toRegion(o));e.toggleCollapseState(r)}var dQ=(0,mU.q5)("folding-expanded",bW.lA.chevronDown,(0,yB.N)("foldingExpandedIcon","Icon for expanded ranges in the editor glyph margin.")),hQ=(0,mU.q5)("folding-collapsed",bW.lA.chevronRight,(0,yB.N)("foldingCollapsedIcon","Icon for collapsed ranges in the editor glyph margin.")),fQ=function(){function e(t){(0,X.Z)(this,e),this.editor=t,this.autoHideFoldingControls=!0,this.showFoldingHighlights=!0}return(0,J.Z)(e,[{key:"getDecorationOption",value:function(t,n){return n?e.HIDDEN_RANGE_DECORATION:t?this.showFoldingHighlights?e.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:e.COLLAPSED_VISUAL_DECORATION:this.autoHideFoldingControls?e.EXPANDED_AUTO_HIDE_VISUAL_DECORATION:e.EXPANDED_VISUAL_DECORATION}},{key:"deltaDecorations",value:function(e,t){return this.editor.deltaDecorations(e,t)}},{key:"changeDecorations",value:function(e){return this.editor.changeDecorations(e)}}]),e}();fQ.COLLAPSED_VISUAL_DECORATION=KB.qx.register({stickiness:1,afterContentClassName:"inline-folded",isWholeLine:!0,firstLineDecorationClassName:$B.kS.asClassName(hQ)}),fQ.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=KB.qx.register({stickiness:1,afterContentClassName:"inline-folded",className:"folded-background",isWholeLine:!0,firstLineDecorationClassName:$B.kS.asClassName(hQ)}),fQ.EXPANDED_AUTO_HIDE_VISUAL_DECORATION=KB.qx.register({stickiness:1,isWholeLine:!0,firstLineDecorationClassName:$B.kS.asClassName(dQ)}),fQ.EXPANDED_VISUAL_DECORATION=KB.qx.register({stickiness:1,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+$B.kS.asClassName(dQ)}),fQ.HIDDEN_RANGE_DECORATION=KB.qx.register({stickiness:1});var pQ=function(){function e(t){var n=this;(0,X.Z)(this,e),this._updateEventEmitter=new _W.Q5,this._foldingModel=t,this._foldingModelListener=t.onDidChange((function(e){return n.updateHiddenRanges()})),this._hiddenRanges=[],t.regions.length&&this.updateHiddenRanges()}return(0,J.Z)(e,[{key:"onDidChange",get:function(){return this._updateEventEmitter.event}},{key:"hiddenRanges",get:function(){return this._hiddenRanges}},{key:"updateHiddenRanges",value:function(){for(var e=!1,t=[],n=0,i=0,r=Number.MAX_VALUE,o=-1,a=this._foldingModel.regions;n<a.length;n++)if(a.isCollapsed(n)){var s=a.getStartLineNumber(n)+1,u=a.getEndLineNumber(n);r<=s&&u<=o||(!e&&i<this._hiddenRanges.length&&this._hiddenRanges[i].startLineNumber===s&&this._hiddenRanges[i].endLineNumber===u?(t.push(this._hiddenRanges[i]),i++):(e=!0,t.push(new YB.e(s,1,u,1))),r=s,o=u)}(e||i<this._hiddenRanges.length)&&this.applyHiddenRanges(t)}},{key:"applyMemento",value:function(e){if(!Array.isArray(e)||0===e.length)return!1;var t,n=[],i=(0,Na.Z)(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;if(!r.startLineNumber||!r.endLineNumber)return!1;n.push(new YB.e(r.startLineNumber+1,1,r.endLineNumber,1))}}catch(o){i.e(o)}finally{i.f()}return this.applyHiddenRanges(n),!0}},{key:"getMemento",value:function(){return this._hiddenRanges.map((function(e){return{startLineNumber:e.startLineNumber-1,endLineNumber:e.endLineNumber}}))}},{key:"applyHiddenRanges",value:function(e){this._hiddenRanges=e,this._updateEventEmitter.fire(e)}},{key:"hasRanges",value:function(){return this._hiddenRanges.length>0}},{key:"isHidden",value:function(e){return null!==gQ(this._hiddenRanges,e)}},{key:"adjustSelections",value:function(e){for(var t=this,n=!1,i=this._foldingModel.textModel,r=null,o=function(e){return r&&function(e,t){return e>=t.startLineNumber&&e<=t.endLineNumber}(e,r)||(r=gQ(t._hiddenRanges,e)),r?r.startLineNumber-1:null},a=0,s=e.length;a<s;a++){var u=e[a],l=o(u.startLineNumber);l&&(u=u.setStartPosition(l,i.getLineMaxColumn(l)),n=!0);var c=o(u.endLineNumber);c&&(u=u.setEndPosition(c,i.getLineMaxColumn(c)),n=!0),e[a]=u}return n}},{key:"dispose",value:function(){this.hiddenRanges.length>0&&(this._hiddenRanges=[],this._updateEventEmitter.fire(this._hiddenRanges)),this._foldingModelListener&&(this._foldingModelListener.dispose(),this._foldingModelListener=null)}}]),e}();function gQ(e,t){var n=(0,SB.lG)(e,(function(e){return t<e.startLineNumber}))-1;return n>=0&&e[n].endLineNumber>=t?e[n]:null}var vQ=5e3,mQ="indent",_Q=function(){function e(t){(0,X.Z)(this,e),this.editorModel=t,this.id=mQ}return(0,J.Z)(e,[{key:"dispose",value:function(){}},{key:"compute",value:function(e){var t=Uq.zu.getFoldingRules(this.editorModel.getLanguageIdentifier().id),n=t&&!!t.offSide,i=t&&t.markers;return Promise.resolve(function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:vQ,r=e.getOptions().tabSize,o=new yQ(i),a=void 0;n&&(a=new RegExp("(".concat(n.start.source,")|(?:").concat(n.end.source,")")));var s=[],u=e.getLineCount()+1;s.push({indent:-1,endAbove:u,line:u});for(var l=e.getLineCount();l>0;l--){var c=e.getLineContent(l),d=KB.yO.computeIndentLevel(c,r),h=s[s.length-1];if(-1!==d){var f=void 0;if(a&&(f=c.match(a))){if(!f[1]){s.push({indent:-2,endAbove:l,line:l});continue}for(var p=s.length-1;p>0&&-2!==s[p].indent;)p--;if(p>0){s.length=p+1,h=s[p],o.insertFirst(l,h.line,d),h.line=l,h.indent=d,h.endAbove=l;continue}}if(h.indent>d){do{s.pop(),h=s[s.length-1]}while(h.indent>d);var g=h.endAbove-1;g-l>=1&&o.insertFirst(l,g,d)}h.indent===d?h.endAbove=l:s.push({indent:d,endAbove:l,line:l})}else t&&(h.endAbove=l)}return o.toIndentRanges(e)}(this.editorModel,n,i))}}]),e}(),yQ=function(){function e(t){(0,X.Z)(this,e),this._startIndexes=[],this._endIndexes=[],this._indentOccurrences=[],this._length=0,this._foldingRangesLimit=t}return(0,J.Z)(e,[{key:"insertFirst",value:function(e,t,n){if(!(e>tQ||t>tQ)){var i=this._length;this._startIndexes[i]=e,this._endIndexes[i]=t,this._length++,n<1e3&&(this._indentOccurrences[n]=(this._indentOccurrences[n]||0)+1)}}},{key:"toIndentRanges",value:function(e){if(this._length<=this._foldingRangesLimit){for(var t=new Uint32Array(this._length),n=new Uint32Array(this._length),i=this._length-1,r=0;i>=0;i--,r++)t[r]=this._startIndexes[i],n[r]=this._endIndexes[i];return new iQ(t,n)}for(var o=0,a=this._indentOccurrences.length,s=0;s<this._indentOccurrences.length;s++){var u=this._indentOccurrences[s];if(u){if(u+o>this._foldingRangesLimit){a=s;break}o+=u}}for(var l=e.getOptions().tabSize,c=new Uint32Array(this._foldingRangesLimit),d=new Uint32Array(this._foldingRangesLimit),h=this._length-1,f=0;h>=0;h--){var p=this._startIndexes[h],g=e.getLineContent(p),v=KB.yO.computeIndentLevel(g,l);(v<a||v===a&&o++<this._foldingRangesLimit)&&(c[f]=p,d[f]=this._endIndexes[h],f++)}return new iQ(c,d)}}]),e}();var bQ=5e3,wQ={},CQ="syntax",kQ=function(){function e(t,n,i){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:bQ;(0,X.Z)(this,e),this.editorModel=t,this.providers=n,this.limit=r,this.id=CQ;var o,a=(0,Na.Z)(n);try{for(a.s();!(o=a.n()).done;){var s=o.value;"function"===typeof s.onDidChange&&(this.disposables||(this.disposables=new WB.SL),this.disposables.add(s.onDidChange(i)))}}catch(u){a.e(u)}finally{a.f()}}return(0,J.Z)(e,[{key:"compute",value:function(e){var t=this;return function(e,t,n){var i=null,r=e.map((function(e,r){return Promise.resolve(e.provideFoldingRanges(t,wQ,n)).then((function(e){if(!n.isCancellationRequested&&Array.isArray(e)){Array.isArray(i)||(i=[]);var o,a=t.getLineCount(),s=(0,Na.Z)(e);try{for(s.s();!(o=s.n()).done;){var u=o.value;u.start>0&&u.end>u.start&&u.end<=a&&i.push({start:u.start,end:u.end,rank:r,kind:u.kind})}}catch(l){s.e(l)}finally{s.f()}}}),LB.Cp)}));return Promise.all(r).then((function(e){return i}))}(this.providers,this.editorModel,e).then((function(e){return e?xQ(e,t.limit):null}))}},{key:"dispose",value:function(){var e;null===(e=this.disposables)||void 0===e||e.dispose()}}]),e}();var SQ=function(){function e(t){(0,X.Z)(this,e),this._startIndexes=[],this._endIndexes=[],this._nestingLevels=[],this._nestingLevelCounts=[],this._types=[],this._length=0,this._foldingRangesLimit=t}return(0,J.Z)(e,[{key:"add",value:function(e,t,n,i){if(!(e>tQ||t>tQ)){var r=this._length;this._startIndexes[r]=e,this._endIndexes[r]=t,this._nestingLevels[r]=i,this._types[r]=n,this._length++,i<30&&(this._nestingLevelCounts[i]=(this._nestingLevelCounts[i]||0)+1)}}},{key:"toIndentRanges",value:function(){if(this._length<=this._foldingRangesLimit){for(var e=new Uint32Array(this._length),t=new Uint32Array(this._length),n=0;n<this._length;n++)e[n]=this._startIndexes[n],t[n]=this._endIndexes[n];return new iQ(e,t,this._types)}for(var i=0,r=this._nestingLevelCounts.length,o=0;o<this._nestingLevelCounts.length;o++){var a=this._nestingLevelCounts[o];if(a){if(a+i>this._foldingRangesLimit){r=o;break}i+=a}}for(var s=new Uint32Array(this._foldingRangesLimit),u=new Uint32Array(this._foldingRangesLimit),l=[],c=0,d=0;c<this._length;c++){var h=this._nestingLevels[c];(h<r||h===r&&i++<this._foldingRangesLimit)&&(s[d]=this._startIndexes[c],u[d]=this._endIndexes[c],l[d]=this._types[c],d++)}return new iQ(s,u,l)}}]),e}();function xQ(e,t){var n,i=e.sort((function(e,t){var n=e.start-t.start;return 0===n&&(n=e.rank-t.rank),n})),r=new SQ(t),o=void 0,a=[],s=(0,Na.Z)(i);try{for(s.s();!(n=s.n()).done;){var u=n.value;if(o){if(u.start>o.start)if(u.end<=o.end)a.push(o),o=u,r.add(u.start,u.end,u.kind&&u.kind.value,a.length);else{if(u.start>o.end){do{o=a.pop()}while(o&&u.start>o.end);o&&a.push(o),o=u}r.add(u.start,u.end,u.kind&&u.kind.value,a.length)}}else o=u,r.add(u.start,u.end,u.kind&&u.kind.value,a.length)}}catch(l){s.e(l)}finally{s.f()}return r.toIndentRanges()}var LQ="init",EQ=function(){function e(t,n,i,r){if((0,X.Z)(this,e),this.editorModel=t,this.id=LQ,n.length){this.decorationIds=t.deltaDecorations([],n.map((function(e){return{range:{startLineNumber:e.startLineNumber,startColumn:0,endLineNumber:e.endLineNumber,endColumn:t.getLineLength(e.endLineNumber)},options:{stickiness:1}}}))),this.timeout=setTimeout(i,r)}}return(0,J.Z)(e,[{key:"dispose",value:function(){this.decorationIds&&(this.editorModel.deltaDecorations(this.decorationIds,[]),this.decorationIds=void 0),"number"===typeof this.timeout&&(clearTimeout(this.timeout),this.timeout=void 0)}},{key:"compute",value:function(e){var t=[];if(this.decorationIds){var n,i=(0,Na.Z)(this.decorationIds);try{for(i.s();!(n=i.n()).done;){var r=n.value,o=this.editorModel.getDecorationRange(r);o&&t.push({start:o.startLineNumber,end:o.endLineNumber,rank:1})}}catch(a){i.e(a)}finally{i.f()}}return Promise.resolve(xQ(t,Number.MAX_VALUE))}}]),e}(),DQ=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},NQ=function(e,t){return function(n,i){t(n,i,e)}},MQ=new kB.uy("foldingEnabled",!1),TQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;(0,X.Z)(this,n),(r=t.call(this)).contextKeyService=i,r.localToDispose=r._register(new WB.SL),r.editor=e;var o=r.editor.getOptions();return r._isEnabled=o.get(35),r._useFoldingProviders="indentation"!==o.get(36),r._unfoldOnClickAfterEndOfLine=o.get(38),r._restoringViewState=!1,r.foldingModel=null,r.hiddenRangeModel=null,r.rangeProvider=null,r.foldingRegionPromise=null,r.foldingStateMemento=null,r.foldingModelPromise=null,r.updateScheduler=null,r.cursorChangedScheduler=null,r.mouseDownInfo=null,r.foldingDecorationProvider=new fQ(e),r.foldingDecorationProvider.autoHideFoldingControls="mouseover"===o.get(96),r.foldingDecorationProvider.showFoldingHighlights=o.get(37),r.foldingEnabled=MQ.bindTo(r.contextKeyService),r.foldingEnabled.set(r._isEnabled),r._register(r.editor.onDidChangeModel((function(){return r.onModelChanged()}))),r._register(r.editor.onDidChangeConfiguration((function(e){if(e.hasChanged(35)&&(r._isEnabled=r.editor.getOptions().get(35),r.foldingEnabled.set(r._isEnabled),r.onModelChanged()),e.hasChanged(96)||e.hasChanged(37)){var t=r.editor.getOptions();r.foldingDecorationProvider.autoHideFoldingControls="mouseover"===t.get(96),r.foldingDecorationProvider.showFoldingHighlights=t.get(37),r.onModelContentChanged()}e.hasChanged(36)&&(r._useFoldingProviders="indentation"!==r.editor.getOptions().get(36),r.onFoldingStrategyChanged()),e.hasChanged(38)&&(r._unfoldOnClickAfterEndOfLine=r.editor.getOptions().get(38))}))),r.onModelChanged(),r}return(0,J.Z)(n,[{key:"saveViewState",value:function(){var e=this.editor.getModel();if(!e||!this._isEnabled||e.isTooLargeForTokenization())return{};if(this.foldingModel){var t=this.foldingModel.isInitialized?this.foldingModel.getMemento():this.hiddenRangeModel.getMemento(),n=this.rangeProvider?this.rangeProvider.id:void 0;return{collapsedRegions:t,lineCount:e.getLineCount(),provider:n}}}},{key:"restoreViewState",value:function(e){var t=this,n=this.editor.getModel();if(n&&this._isEnabled&&!n.isTooLargeForTokenization()&&this.hiddenRangeModel&&e&&e.collapsedRegions&&e.lineCount===n.getLineCount()){e.provider!==CQ&&e.provider!==LQ||(this.foldingStateMemento=e);var i=e.collapsedRegions;if(this.hiddenRangeModel.applyMemento(i)){var r=this.getFoldingModel();r&&r.then((function(e){if(e){t._restoringViewState=!0;try{e.applyMemento(i)}finally{t._restoringViewState=!1}}})).then(void 0,LB.dL)}}}},{key:"onModelChanged",value:function(){var e=this;this.localToDispose.clear();var t=this.editor.getModel();this._isEnabled&&t&&!t.isTooLargeForTokenization()&&(this.foldingModel=new oQ(t,this.foldingDecorationProvider),this.localToDispose.add(this.foldingModel),this.hiddenRangeModel=new pQ(this.foldingModel),this.localToDispose.add(this.hiddenRangeModel),this.localToDispose.add(this.hiddenRangeModel.onDidChange((function(t){return e.onHiddenRangesChanges(t)}))),this.updateScheduler=new zB.vp(200),this.cursorChangedScheduler=new zB.pY((function(){return e.revealCursor()}),200),this.localToDispose.add(this.cursorChangedScheduler),this.localToDispose.add(Iz.aC.onDidChange((function(){return e.onFoldingStrategyChanged()}))),this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration((function(){return e.onFoldingStrategyChanged()}))),this.localToDispose.add(this.editor.onDidChangeModelContent((function(){return e.onModelContentChanged()}))),this.localToDispose.add(this.editor.onDidChangeCursorPosition((function(){return e.onCursorPositionChanged()}))),this.localToDispose.add(this.editor.onMouseDown((function(t){return e.onEditorMouseDown(t)}))),this.localToDispose.add(this.editor.onMouseUp((function(t){return e.onEditorMouseUp(t)}))),this.localToDispose.add({dispose:function(){e.foldingRegionPromise&&(e.foldingRegionPromise.cancel(),e.foldingRegionPromise=null),e.updateScheduler&&e.updateScheduler.cancel(),e.updateScheduler=null,e.foldingModel=null,e.foldingModelPromise=null,e.hiddenRangeModel=null,e.cursorChangedScheduler=null,e.foldingStateMemento=null,e.rangeProvider&&e.rangeProvider.dispose(),e.rangeProvider=null}}),this.onModelContentChanged())}},{key:"onFoldingStrategyChanged",value:function(){this.rangeProvider&&this.rangeProvider.dispose(),this.rangeProvider=null,this.onModelContentChanged()}},{key:"getRangeProvider",value:function(e){var t=this;if(this.rangeProvider)return this.rangeProvider;if(this.rangeProvider=new _Q(e),this._useFoldingProviders&&this.foldingModel){var n=Iz.aC.ordered(this.foldingModel.textModel);if(0===n.length&&this.foldingStateMemento&&this.foldingStateMemento.collapsedRegions)return this.rangeProvider=new EQ(e,this.foldingStateMemento.collapsedRegions,(function(){t.foldingStateMemento=null,t.onFoldingStrategyChanged()}),3e4);n.length>0&&(this.rangeProvider=new kQ(e,n,(function(){return t.onModelContentChanged()})))}return this.foldingStateMemento=null,this.rangeProvider}},{key:"getFoldingModel",value:function(){return this.foldingModelPromise}},{key:"onModelContentChanged",value:function(){var e=this;this.updateScheduler&&(this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.foldingModelPromise=this.updateScheduler.trigger((function(){var t=e.foldingModel;if(!t)return null;var n=e.foldingRegionPromise=(0,zB.PG)((function(n){return e.getRangeProvider(t.textModel).compute(n)}));return n.then((function(i){if(i&&n===e.foldingRegionPromise){var r=e.editor.getSelections(),o=r?r.map((function(e){return e.startLineNumber})):[];t.update(i,o)}return t}))})).then(void 0,(function(e){return(0,LB.dL)(e),null})))}},{key:"onHiddenRangesChanges",value:function(e){if(this.hiddenRangeModel&&e.length&&!this._restoringViewState){var t=this.editor.getSelections();t&&this.hiddenRangeModel.adjustSelections(t)&&this.editor.setSelections(t)}this.editor.setHiddenAreas(e)}},{key:"onCursorPositionChanged",value:function(){this.hiddenRangeModel&&this.hiddenRangeModel.hasRanges()&&this.cursorChangedScheduler.schedule()}},{key:"revealCursor",value:function(){var e=this,t=this.getFoldingModel();t&&t.then((function(t){if(t){var n=e.editor.getSelections();if(n&&n.length>0){var i,r=[],o=(0,Na.Z)(n);try{var a=function(){var n=i.value.selectionStartLineNumber;e.hiddenRangeModel&&e.hiddenRangeModel.isHidden(n)&&r.push.apply(r,(0,Ct.Z)(t.getAllRegionsAtLine(n,(function(e){return e.isCollapsed&&n>e.startLineNumber}))))};for(o.s();!(i=o.n()).done;)a()}catch(s){o.e(s)}finally{o.f()}r.length&&(t.toggleCollapseState(r),e.reveal(n[0].getPosition()))}}})).then(void 0,LB.dL)}},{key:"onEditorMouseDown",value:function(e){if(this.mouseDownInfo=null,this.hiddenRangeModel&&e.target&&e.target.range&&(e.event.leftButton||e.event.middleButton)){var t=e.target.range,n=!1;switch(e.target.type){case 4:var i=e.target.detail,r=e.target.element.offsetLeft;if(i.offsetX-r<5)return;n=!0;break;case 7:if(this._unfoldOnClickAfterEndOfLine&&this.hiddenRangeModel.hasRanges())if(!e.target.detail.isAfterLines)break;return;case 6:if(this.hiddenRangeModel.hasRanges()){var o=this.editor.getModel();if(o&&t.startColumn===o.getLineMaxColumn(t.startLineNumber))break}return;default:return}this.mouseDownInfo={lineNumber:t.startLineNumber,iconClicked:n}}}},{key:"onEditorMouseUp",value:function(e){var t=this,n=this.getFoldingModel();if(n&&this.mouseDownInfo&&e.target){var i=this.mouseDownInfo.lineNumber,r=this.mouseDownInfo.iconClicked,o=e.target.range;if(o&&o.startLineNumber===i){if(r){if(4!==e.target.type)return}else{var a=this.editor.getModel();if(!a||o.startColumn!==a.getLineMaxColumn(i))return}n.then((function(n){if(n){var o=n.getRegionAtLine(i);if(o&&o.startLineNumber===i){var a=o.isCollapsed;if(r||a){var s=[];if(e.event.altKey){var u,l=n.getRegionsInside(null,(function(e){return!e.containedBy(o)&&!o.containedBy(e)})),c=(0,Na.Z)(l);try{for(c.s();!(u=c.n()).done;){var d=u.value;d.isCollapsed&&s.push(d)}}catch(v){c.e(v)}finally{c.f()}0===s.length&&(s=l)}else{var h=e.event.middleButton||e.event.shiftKey;if(h){var f,p=(0,Na.Z)(n.getRegionsInside(o));try{for(p.s();!(f=p.n()).done;){var g=f.value;g.isCollapsed===a&&s.push(g)}}catch(v){p.e(v)}finally{p.f()}}!a&&h&&0!==s.length||s.push(o)}n.toggleCollapseState(s),t.reveal({lineNumber:i,column:1})}}}})).then(void 0,LB.dL)}}}},{key:"reveal",value:function(e){this.editor.revealPositionInCenterIfOutsideViewport(e,0)}}],[{key:"get",value:function(e){return e.getContribution(n.ID)}}]),n}(WB.JT);TQ.ID="editor.contrib.folding",TQ=DQ([NQ(1,kB.i6)],TQ);var IQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"runEditorCommand",value:function(e,t,n){var i=this,r=TQ.get(t);if(r){var o=r.getFoldingModel();return o?(this.reportTelemetry(e,t),o.then((function(e){if(e){i.invoke(r,e,t,n);var o=t.getSelection();o&&r.reveal(o.getStartPosition())}}))):void 0}}},{key:"getSelectedLines",value:function(e){var t=e.getSelections();return t?t.map((function(e){return e.startLineNumber})):[]}},{key:"getLineNumbers",value:function(e,t){return e&&e.selectionLines?e.selectionLines.map((function(e){return e+1})):this.getSelectedLines(t)}},{key:"run",value:function(e,t){}}]),n}(_B.R6);function OQ(e){if(!oV.o8(e)){if(!oV.Kn(e))return!1;var t=e;if(!oV.o8(t.levels)&&!oV.hj(t.levels))return!1;if(!oV.o8(t.direction)&&!oV.HD(t.direction))return!1;if(!oV.o8(t.selectionLines)&&(!oV.kJ(t.selectionLines)||!t.selectionLines.every(oV.hj)))return!1}return!0}var AQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.unfold",label:yB.N("unfoldAction.label","Unfold"),alias:"Unfold",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:3161,mac:{primary:2649},weight:100},description:{description:"Unfold the content in the editor",args:[{name:"Unfold editor argument",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t* 'levels': Number of levels to unfold. If not set, defaults to 1.\n\t\t\t\t\t\t* 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n\t\t\t\t\t\t* 'selectionLines': The start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t",constraint:OQ,schema:{type:"object",properties:{levels:{type:"number",default:1},direction:{type:"string",enum:["up","down"],default:"down"},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n,i){var r=i&&i.levels||1,o=this.getLineNumbers(i,n);i&&"up"===i.direction?sQ(t,!1,r,o):aQ(t,!1,r,o)}}]),n}(IQ),RQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.unfoldRecursively",label:yB.N("unFoldRecursivelyAction.label","Unfold Recursively"),alias:"Unfold Recursively",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2137),weight:100}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n,i){aQ(t,!1,Number.MAX_VALUE,this.getSelectedLines(n))}}]),n}(IQ),PQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.fold",label:yB.N("foldAction.label","Fold"),alias:"Fold",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:3159,mac:{primary:2647},weight:100},description:{description:"Fold the content in the editor",args:[{name:"Fold editor argument",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t\t* 'levels': Number of levels to fold.\n\t\t\t\t\t\t\t* 'direction': If 'up', folds given number of levels up otherwise folds down.\n\t\t\t\t\t\t\t* 'selectionLines': The start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t\tIf no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\t\t\t\t\t\t",constraint:OQ,schema:{type:"object",properties:{levels:{type:"number"},direction:{type:"string",enum:["up","down"]},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n,i){var r=this.getLineNumbers(i,n),o=i&&i.levels,a=i&&i.direction;"number"!==typeof o&&"string"!==typeof a?function(e,t,n){var i,r=[],o=(0,Na.Z)(n);try{for(o.s();!(i=o.n()).done;){var a=i.value,s=e.getAllRegionsAtLine(a,(function(e){return e.isCollapsed!==t}));s.length>0&&r.push(s[0])}}catch(u){o.e(u)}finally{o.f()}e.toggleCollapseState(r)}(t,!0,r):"up"===a?sQ(t,!0,o||1,r):aQ(t,!0,o||1,r)}}]),n}(IQ),ZQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.toggleFold",label:yB.N("toggleFoldAction.label","Toggle Fold"),alias:"Toggle Fold",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2090),weight:100}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n){!function(e,t,n){var i,r=[],o=(0,Na.Z)(n);try{var a=function(){var n=i.value,o=e.getRegionAtLine(n);if(o){var a=!o.isCollapsed;if(r.push(o),t>1){var s=e.getRegionsInside(o,(function(e,n){return e.isCollapsed!==a&&n<t}));r.push.apply(r,(0,Ct.Z)(s))}}};for(o.s();!(i=o.n()).done;)a()}catch(s){o.e(s)}finally{o.f()}e.toggleCollapseState(r)}(t,1,this.getSelectedLines(n))}}]),n}(IQ),FQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.foldRecursively",label:yB.N("foldRecursivelyAction.label","Fold Recursively"),alias:"Fold Recursively",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2135),weight:100}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n){var i=this.getSelectedLines(n);aQ(t,!0,Number.MAX_VALUE,i)}}]),n}(IQ),jQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.foldAllBlockComments",label:yB.N("foldAllBlockComments.label","Fold All Block Comments"),alias:"Fold All Block Comments",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2133),weight:100}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n){if(t.regions.hasTypes())cQ(t,Iz.AD.Comment.value,!0);else{var i=n.getModel();if(!i)return;var r=Uq.zu.getComments(i.getLanguageIdentifier().id);if(r&&r.blockCommentStartToken)lQ(t,new RegExp("^\\s*"+(0,Dz.ec)(r.blockCommentStartToken)),!0)}}}]),n}(IQ),HQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.foldAllMarkerRegions",label:yB.N("foldAllMarkerRegions.label","Fold All Regions"),alias:"Fold All Regions",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2077),weight:100}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n){if(t.regions.hasTypes())cQ(t,Iz.AD.Region.value,!0);else{var i=n.getModel();if(!i)return;var r=Uq.zu.getFoldingRules(i.getLanguageIdentifier().id);if(r&&r.markers&&r.markers.start)lQ(t,new RegExp(r.markers.start),!0)}}}]),n}(IQ),BQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.unfoldAllMarkerRegions",label:yB.N("unfoldAllMarkerRegions.label","Unfold All Regions"),alias:"Unfold All Regions",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2078),weight:100}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n){if(t.regions.hasTypes())cQ(t,Iz.AD.Region.value,!1);else{var i=n.getModel();if(!i)return;var r=Uq.zu.getFoldingRules(i.getLanguageIdentifier().id);if(r&&r.markers&&r.markers.start)lQ(t,new RegExp(r.markers.start),!1)}}}]),n}(IQ),zQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.foldAllExcept",label:yB.N("foldAllExcept.label","Fold All Regions Except Selected"),alias:"Fold All Regions Except Selected",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2131),weight:100}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n){uQ(t,!0,this.getSelectedLines(n))}}]),n}(IQ),WQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.unfoldAllExcept",label:yB.N("unfoldAllExcept.label","Unfold All Regions Except Selected"),alias:"Unfold All Regions Except Selected",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2129),weight:100}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n){uQ(t,!1,this.getSelectedLines(n))}}]),n}(IQ),VQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.foldAll",label:yB.N("foldAllAction.label","Fold All"),alias:"Fold All",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2069),weight:100}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n){aQ(t,!0)}}]),n}(IQ),YQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.unfoldAll",label:yB.N("unfoldAllAction.label","Unfold All"),alias:"Unfold All",precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2088),weight:100}})}return(0,J.Z)(n,[{key:"invoke",value:function(e,t,n){aQ(t,!1)}}]),n}(IQ),UQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"getFoldingLevel",value:function(){return parseInt(this.id.substr(n.ID_PREFIX.length))}},{key:"invoke",value:function(e,t,n){!function(e,t,n,i){var r=e.getRegionsInside(null,(function(e,r){return r===t&&e.isCollapsed!==n&&!i.some((function(t){return e.containsLine(t)}))}));e.toggleCollapseState(r)}(t,this.getFoldingLevel(),!0,this.getSelectedLines(n))}}]),n}(IQ);UQ.ID_PREFIX="editor.foldLevel",UQ.ID=function(e){return UQ.ID_PREFIX+e},(0,_B._K)(TQ.ID,TQ),(0,_B.Qr)(AQ),(0,_B.Qr)(RQ),(0,_B.Qr)(PQ),(0,_B.Qr)(FQ),(0,_B.Qr)(VQ),(0,_B.Qr)(YQ),(0,_B.Qr)(jQ),(0,_B.Qr)(HQ),(0,_B.Qr)(BQ),(0,_B.Qr)(zQ),(0,_B.Qr)(WQ),(0,_B.Qr)(ZQ);for(var KQ=1;KQ<=7;KQ++)(0,_B.QG)(new UQ({id:UQ.ID(KQ),label:yB.N("foldLevelAction.label","Fold Level {0}",KQ),alias:"Fold Level ".concat(KQ),precondition:MQ,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2048|21+KQ),weight:100}}));var qQ=(0,GB.P6)("editor.foldBackground",{light:(0,GB.Zn)(GB.hE,.3),dark:(0,GB.Zn)(GB.hE,.3),hc:null},yB.N("foldBackgroundBackground","Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations."),!0),GQ=(0,GB.P6)("editorGutter.foldingControlForeground",{dark:GB.XZ,light:GB.XZ,hc:GB.XZ},yB.N("editorGutter.foldingControlForeground","Color of the folding control in the editor gutter."));(0,$B.Ic)((function(e,t){var n=e.getColor(qQ);n&&t.addRule(".monaco-editor .folded-background { background-color: ".concat(n,"; }"));var i=e.getColor(GQ);i&&t.addRule("\n\t\t.monaco-editor .cldr".concat($B.kS.asCSSSelector(dQ),",\n\t\t.monaco-editor .cldr").concat($B.kS.asCSSSelector(hQ)," {\n\t\t\tcolor: ").concat(i," !important;\n\t\t}\n\t\t"))}));var $Q=n(51164),QQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.fontZoomIn",label:yB.N("EditorFontZoomIn.label","Editor Font Zoom In"),alias:"Editor Font Zoom In",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t){$Q.C.setZoomLevel($Q.C.getZoomLevel()+1)}}]),n}(_B.R6),XQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.fontZoomOut",label:yB.N("EditorFontZoomOut.label","Editor Font Zoom Out"),alias:"Editor Font Zoom Out",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t){$Q.C.setZoomLevel($Q.C.getZoomLevel()-1)}}]),n}(_B.R6),JQ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.fontZoomReset",label:yB.N("EditorFontZoomReset.label","Editor Font Zoom Reset"),alias:"Editor Font Zoom Reset",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t){$Q.C.setZoomLevel(0)}}]),n}(_B.R6);(0,_B.Qr)(QQ),(0,_B.Qr)(XQ),(0,_B.Qr)(JQ);var eX=n(84516),tX=n(333),nX=n(61335),iX=n(71481),rX=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},oX=function(e,t){return function(n,i){t(n,i,e)}},aX=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},sX=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this._workerService=n,this._callOnDispose=new WB.SL,this._callOnModel=new WB.SL,this._editor=t,this._callOnDispose.add(t.onDidChangeConfiguration((function(){return i._update()}))),this._callOnDispose.add(t.onDidChangeModel((function(){return i._update()}))),this._callOnDispose.add(t.onDidChangeModelLanguage((function(){return i._update()}))),this._callOnDispose.add(Iz.ln.onDidChange(this._update,this))}return(0,J.Z)(e,[{key:"dispose",value:function(){this._callOnDispose.dispose(),this._callOnModel.dispose()}},{key:"_update",value:function(){var e=this;if(this._callOnModel.clear(),this._editor.getOption(45)&&this._editor.hasModel()){var t=this._editor.getModel(),n=Iz.ln.ordered(t),i=(0,ne.Z)(n,1)[0];if(i&&i.autoFormatTriggerCharacters){var r,o=new eX.q,a=(0,Na.Z)(i.autoFormatTriggerCharacters);try{for(a.s();!(r=a.n()).done;){var s=r.value;o.add(s.charCodeAt(0))}}catch(u){a.e(u)}finally{a.f()}this._callOnModel.add(this._editor.onDidType((function(t){var n=t.charCodeAt(t.length-1);o.has(n)&&e._trigger(String.fromCharCode(n))})))}}}},{key:"_trigger",value:function(e){var t=this;if(this._editor.hasModel()&&!(this._editor.getSelections().length>1)){var n=this._editor.getModel(),i=this._editor.getPosition(),r=!1,o=this._editor.onDidChangeModelContent((function(e){if(e.isFlush)return r=!0,void o.dispose();for(var t=0,n=e.changes.length;t<n;t++){if(e.changes[t].range.endLineNumber<=i.lineNumber)return r=!0,void o.dispose()}}));(0,nX.Qs)(this._workerService,n,i,e,n.getFormattingOptions()).then((function(e){o.dispose(),r||(0,SB.Of)(e)&&(iX.V.execute(t._editor,e,!0),(0,nX.Zg)(e))}),(function(e){throw o.dispose(),e}))}}}]),e}();sX.ID="editor.contrib.autoFormat",sX=rX([oX(1,tX.p)],sX);var uX=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this.editor=t,this._instantiationService=n,this._callOnDispose=new WB.SL,this._callOnModel=new WB.SL,this._callOnDispose.add(t.onDidChangeConfiguration((function(){return i._update()}))),this._callOnDispose.add(t.onDidChangeModel((function(){return i._update()}))),this._callOnDispose.add(t.onDidChangeModelLanguage((function(){return i._update()}))),this._callOnDispose.add(Iz.vN.onDidChange(this._update,this))}return(0,J.Z)(e,[{key:"dispose",value:function(){this._callOnDispose.dispose(),this._callOnModel.dispose()}},{key:"_update",value:function(){var e=this;this._callOnModel.clear(),this.editor.getOption(44)&&this.editor.hasModel()&&Iz.vN.has(this.editor.getModel())&&this._callOnModel.add(this.editor.onDidPaste((function(t){var n=t.range;return e._trigger(n)})))}},{key:"_trigger",value:function(e){this.editor.hasModel()&&(this.editor.getSelections().length>1||this._instantiationService.invokeFunction(nX.x$,this.editor,e,2,Fz.E.None,Lz.T.None).catch(LB.dL))}}]),e}();uX.ID="editor.contrib.formatOnPaste",uX=rX([oX(1,oW.TG)],uX);var lX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.formatDocument",label:yB.N("formatDocument.label","Format Document"),alias:"Format Document",precondition:kB.Ao.and(bB.u.notInCompositeEditor,bB.u.writable,bB.u.hasDocumentFormattingProvider),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:1572,linux:{primary:3111},weight:100},contextMenuOpts:{group:"1_modification",order:1.3}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return aX(this,void 0,void 0,fn().mark((function n(){var i,r;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!t.hasModel()){n.next=5;break}return i=e.get(oW.TG),r=e.get(Fz.e),n.next=5,r.showWhile(i.invokeFunction(nX.Qq,t,1,Fz.E.None,Lz.T.None),250);case 5:case"end":return n.stop()}}),n)})))}}]),n}(_B.R6),cX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.formatSelection",label:yB.N("formatSelection.label","Format Selection"),alias:"Format Selection",precondition:kB.Ao.and(bB.u.writable,bB.u.hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2084),weight:100},contextMenuOpts:{when:bB.u.hasNonEmptySelection,group:"1_modification",order:1.31}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){return aX(this,void 0,void 0,fn().mark((function n(){var i,r,o,a;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t.hasModel()){n.next=2;break}return n.abrupt("return");case 2:return i=e.get(oW.TG),r=t.getModel(),o=t.getSelections().map((function(e){return e.isEmpty()?new YB.e(e.startLineNumber,1,e.startLineNumber,r.getLineMaxColumn(e.startLineNumber)):e})),a=e.get(Fz.e),n.next=8,a.showWhile(i.invokeFunction(nX.x$,t,o,1,Fz.E.None,Lz.T.None),250);case 8:case"end":return n.stop()}}),n)})))}}]),n}(_B.R6);(0,_B._K)(sX.ID,sX),(0,_B._K)(uX.ID,uX),(0,_B.Qr)(lX),(0,_B.Qr)(cX),jz.P.registerCommand("editor.action.format",(function(e){return aX(void 0,void 0,void 0,fn().mark((function t(){var n,i;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((n=e.get(fz.$).getFocusedCodeEditor())&&n.hasModel()){t.next=3;break}return t.abrupt("return");case 3:if(i=e.get(jz.H),!n.getSelection().isEmpty()){t.next=9;break}return t.next=7,i.executeCommand("editor.action.formatDocument");case 7:t.next=11;break;case 9:return t.next=11,i.executeCommand("editor.action.formatSelection");case 11:case"end":return t.stop()}}),t)})))}));var dX=n(98900),hX=function(){function e(){(0,X.Z)(this,e)}return(0,J.Z)(e,[{key:"remove",value:function(){this.parent&&this.parent.children.delete(this.id)}}],[{key:"findId",value:function(e,t){var n;"string"===typeof e?n="".concat(t.id,"/").concat(e):(n="".concat(t.id,"/").concat(e.name),void 0!==t.children.get(n)&&(n="".concat(t.id,"/").concat(e.name,"_").concat(e.range.startLineNumber,"_").concat(e.range.startColumn)));for(var i=n,r=0;void 0!==t.children.get(i);r++)i="".concat(n,"_").concat(r);return i}},{key:"empty",value:function(e){return 0===e.children.size}}]),e}(),fX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this)).id=e,o.parent=i,o.symbol=r,o.children=new Map,o}return(0,J.Z)(n)}(hX),pX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;return(0,X.Z)(this,n),(a=t.call(this)).id=e,a.parent=i,a.label=r,a.order=o,a.children=new Map,a}return(0,J.Z)(n)}(hX),gX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this)).uri=e,i.id="root",i.parent=void 0,i._groups=new Map,i.children=new Map,i.id="root",i.parent=void 0,i}return(0,J.Z)(n,[{key:"_compact",value:function(){var e,t=0,n=(0,Na.Z)(this._groups);try{for(n.s();!(e=n.n()).done;){var i=(0,ne.Z)(e.value,2),r=i[0];0===i[1].children.size?this._groups.delete(r):t+=1}}catch(l){n.e(l)}finally{n.f()}if(1!==t)this.children=this._groups;else{var o,a=dX.$.first(this._groups.values()),s=(0,Na.Z)(a.children);try{for(s.s();!(o=s.n()).done;){var u=(0,ne.Z)(o.value,2)[1];u.parent=this,this.children.set(u.id,u)}}catch(l){s.e(l)}finally{s.f()}}return this}},{key:"getTopLevelSymbols",value:function(){var e,t=[],n=(0,Na.Z)(this.children.values());try{for(n.s();!(e=n.n()).done;){var i=e.value;i instanceof fX?t.push(i.symbol):t.push.apply(t,(0,Ct.Z)(dX.$.map(i.children.values(),(function(e){return e.symbol}))))}}catch(r){n.e(r)}finally{n.f()}return t.sort((function(e,t){return YB.e.compareRangesUsingStarts(e.range,t.range)}))}},{key:"asListOfDocumentSymbols",value:function(){var e=this.getTopLevelSymbols(),t=[];return n._flattenDocumentSymbols(t,e,""),t.sort((function(e,t){return YB.e.compareRangesUsingStarts(e.range,t.range)}))}}],[{key:"create",value:function(e,t){var i=this,r=this._keys.for(e,!0),o=n._requests.get(r);if(!o){var a=new Lz.A;o={promiseCnt:0,source:a,promise:n._create(e,a.token),model:void 0},n._requests.set(r,o);var s=Date.now();o.promise.then((function(){i._requestDurations.update(e,Date.now()-s)}))}return o.model?Promise.resolve(o.model):(o.promiseCnt+=1,t.onCancellationRequested((function(){0===--o.promiseCnt&&(o.source.cancel(),n._requests.delete(r))})),new Promise((function(e,t){o.promise.then((function(t){o.model=t,e(t)}),(function(e){n._requests.delete(r),t(e)}))})))}},{key:"_create",value:function(e,t){var i=new Lz.A(t),r=new n(e.uri),o=Iz.vJ.ordered(e),a=o.map((function(t,o){var a,s=hX.findId("provider_".concat(o),r),u=new pX(s,r,null!==(a=t.displayName)&&void 0!==a?a:"Unknown Outline Provider",o);return Promise.resolve(t.provideDocumentSymbols(e,i.token)).then((function(e){var t,i=(0,Na.Z)(e||[]);try{for(i.s();!(t=i.n()).done;){var r=t.value;n._makeOutlineElement(r,u)}}catch(o){i.e(o)}finally{i.f()}return u}),(function(e){return(0,LB.Cp)(e),u})).then((function(e){hX.empty(e)?e.remove():r._groups.set(s,e)}))})),s=Iz.vJ.onDidChange((function(){var t=Iz.vJ.ordered(e);(0,SB.fS)(t,o)||i.cancel()}));return Promise.all(a).then((function(){return i.token.isCancellationRequested&&!t.isCancellationRequested?n._create(e,t):r._compact()})).finally((function(){s.dispose()}))}},{key:"_makeOutlineElement",value:function(e,t){var i=hX.findId(e,t),r=new fX(i,t,e);if(e.children){var o,a=(0,Na.Z)(e.children);try{for(a.s();!(o=a.n()).done;){var s=o.value;n._makeOutlineElement(s,r)}}catch(u){a.e(u)}finally{a.f()}}t.children.set(r.id,r)}},{key:"_flattenDocumentSymbols",value:function(e,t,i){var r,o=(0,Na.Z)(t);try{for(o.s();!(r=o.n()).done;){var a=r.value;e.push({kind:a.kind,tags:a.tags,name:a.name,detail:a.detail,containerName:a.containerName||i,range:a.range,selectionRange:a.selectionRange,children:void 0}),a.children&&n._flattenDocumentSymbols(e,a.children,a.name)}}catch(s){o.e(s)}finally{o.f()}}}]),n}(hX);gX._requestDurations=new xV.Y(Iz.vJ,350),gX._requests=new gV.z6(9,.75),gX._keys=new(function(){function e(){(0,X.Z)(this,e),this._counter=1,this._data=new WeakMap}return(0,J.Z)(e,[{key:"for",value:function(e,t){return"".concat(e.id,"/").concat(t?e.getVersionId():"","/").concat(this._hash(Iz.vJ.all(e)))}},{key:"_hash",value:function(e){var t,n="",i=(0,Na.Z)(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=this._data.get(r);"undefined"===typeof o&&(o=this._counter++,this._data.set(r,o)),n+=o}}catch(a){i.e(a)}finally{i.f()}return n}}]),e}());var vX=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};function mX(e,t,n){return vX(this,void 0,void 0,fn().mark((function i(){var r;return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,gX.create(e,n);case 2:return r=i.sent,i.abrupt("return",t?r.asListOfDocumentSymbols():r.getTopLevelSymbols());case 4:case"end":return i.stop()}}),i)})))}jz.P.registerCommand("_executeDocumentSymbolProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return vX(this,void 0,void 0,fn().mark((function t(){var i,r,o;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=n[0],(0,oV.p_)(Mz.o.isUri(i)),!(r=e.get(Oz.q).getModel(i))){t.next=5;break}return t.abrupt("return",mX(r,!1,Lz.T.None));case 5:return t.next=7,e.get(SK.S).createModelReference(i);case 7:return o=t.sent,t.prev=8,t.next=11,mX(o.object.textEditorModel,!1,Lz.T.None);case 11:return t.abrupt("return",t.sent);case 12:return t.prev=12,o.dispose(),t.finish(12);case 15:case"end":return t.stop()}}),t,null,[[8,,12,15]])})))}));var _X=n(83);function yX(e,t){for(var n=0,i=0;i<e.length;i++)"\t"===e.charAt(i)?n+=t:n++;return n}function bX(e,t,n){e=e<0?0:e;var i="";if(!n){var r=Math.floor(e/t);e%=t;for(var o=0;o<r;o++)i+="\t"}for(var a=0;a<e;a++)i+=" ";return i}function wX(e,t,n,i){if(1===e.getLineCount()&&1===e.getLineMaxColumn(1))return[];var r=Uq.zu.getIndentationRules(e.getLanguageIdentifier().id);if(!r)return[];for(n=Math.min(n,e.getLineCount());t<=n&&r.unIndentedLinePattern;){var o=e.getLineContent(t);if(!r.unIndentedLinePattern.test(o))break;t++}if(t>n-1)return[];var a,s=e.getOptions(),u=s.tabSize,l=s.indentSize,c=s.insertSpaces,d=function(e,t){return t=t||1,_X.U.shiftIndent(e,e.length+t,u,l,c)},h=function(e,t){return t=t||1,_X.U.unshiftIndent(e,e.length+t,u,l,c)},f=[],p=e.getLineContent(t),g=p;if(void 0!==i&&null!==i){a=i;var v=Dz.V8(p);g=a+p.substring(v.length),r.decreaseIndentPattern&&r.decreaseIndentPattern.test(g)&&(g=(a=h(a))+p.substring(v.length)),p!==g&&f.push(Yq.h.replaceMove(new wB.Y(t,1,t,v.length+1),KB.yO.normalizeIndentation(a,l,c)))}else a=Dz.V8(p);var m=a;r.increaseIndentPattern&&r.increaseIndentPattern.test(g)?(m=d(m),a=d(a)):r.indentNextLinePattern&&r.indentNextLinePattern.test(g)&&(m=d(m));for(var _=++t;_<=n;_++){var y=e.getLineContent(_),b=Dz.V8(y),w=m+y.substring(b.length);r.decreaseIndentPattern&&r.decreaseIndentPattern.test(w)&&(m=h(m),a=h(a)),b!==m&&f.push(Yq.h.replaceMove(new wB.Y(_,1,_,b.length+1),KB.yO.normalizeIndentation(m,l,c))),r.unIndentedLinePattern&&r.unIndentedLinePattern.test(y)||(m=r.increaseIndentPattern&&r.increaseIndentPattern.test(w)?a=d(a):r.indentNextLinePattern&&r.indentNextLinePattern.test(w)?d(m):a)}return f}var CX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:n.ID,label:yB.N("indentationToSpaces","Convert Indentation to Spaces"),alias:"Convert Indentation to Spaces",precondition:bB.u.writable})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=t.getModel();if(n){var i=n.getOptions(),r=t.getSelection();if(r){var o=new OX(r,i.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[o]),t.pushUndoStop(),n.updateOptions({insertSpaces:!0})}}}}]),n}(_B.R6);CX.ID="editor.action.indentationToSpaces";var kX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:n.ID,label:yB.N("indentationToTabs","Convert Indentation to Tabs"),alias:"Convert Indentation to Tabs",precondition:bB.u.writable})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=t.getModel();if(n){var i=n.getOptions(),r=t.getSelection();if(r){var o=new AX(r,i.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[o]),t.pushUndoStop(),n.updateOptions({insertSpaces:!1})}}}}]),n}(_B.R6);kX.ID="editor.action.indentationToTabs";var SX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,i)).insertSpaces=e,r}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=this,i=e.get(SV.eJ),r=e.get(Oz.q),o=t.getModel();if(o){var a=r.getCreationOptions(o.getLanguageIdentifier().language,o.uri,o.isForSimpleWidget),s=[1,2,3,4,5,6,7,8].map((function(e){return{id:e.toString(),label:e.toString(),description:e===a.tabSize?yB.N("configuredTabSize","Configured Tab Size"):void 0}})),u=Math.min(o.getOptions().tabSize-1,7);setTimeout((function(){i.pick(s,{placeHolder:yB.N({key:"selectTabWidth",comment:["Tab corresponds to the tab key"]},"Select Tab Size for Current File"),activeItem:s[u]}).then((function(e){e&&o&&!o.isDisposed()&&o.updateOptions({tabSize:parseInt(e.label,10),insertSpaces:n.insertSpaces})}))}),50)}}}]),n}(_B.R6),xX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!1,{id:n.ID,label:yB.N("indentUsingTabs","Indent Using Tabs"),alias:"Indent Using Tabs",precondition:void 0})}return(0,J.Z)(n)}(SX);xX.ID="editor.action.indentUsingTabs";var LX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!0,{id:n.ID,label:yB.N("indentUsingSpaces","Indent Using Spaces"),alias:"Indent Using Spaces",precondition:void 0})}return(0,J.Z)(n)}(SX);LX.ID="editor.action.indentUsingSpaces";var EX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:n.ID,label:yB.N("detectIndentation","Detect Indentation from Content"),alias:"Detect Indentation from Content",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=e.get(Oz.q),i=t.getModel();if(i){var r=n.getCreationOptions(i.getLanguageIdentifier().language,i.uri,i.isForSimpleWidget);i.detectIndentation(r.insertSpaces,r.tabSize)}}}]),n}(_B.R6);EX.ID="editor.action.detectIndentation";var DX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.reindentlines",label:yB.N("editor.reindentlines","Reindent Lines"),alias:"Reindent Lines",precondition:bB.u.writable})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=t.getModel();if(n){var i=wX(n,1,n.getLineCount());i.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,i),t.pushUndoStop())}}}]),n}(_B.R6),NX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.reindentselectedlines",label:yB.N("editor.reindentselectedlines","Reindent Selected Lines"),alias:"Reindent Selected Lines",precondition:bB.u.writable})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=t.getModel();if(n){var i=t.getSelections();if(null!==i){var r,o=[],a=(0,Na.Z)(i);try{for(a.s();!(r=a.n()).done;){var s=r.value,u=s.startLineNumber,l=s.endLineNumber;if(u!==l&&1===s.endColumn&&l--,1===u){if(u===l)continue}else u--;var c=wX(n,u,l);o.push.apply(o,(0,Ct.Z)(c))}}catch(d){a.e(d)}finally{a.f()}o.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,o),t.pushUndoStop())}}}}]),n}(_B.R6),MX=function(){function e(t,n){(0,X.Z)(this,e),this._initialSelection=n,this._edits=[],this._selectionId=null;var i,r=(0,Na.Z)(t);try{for(r.s();!(i=r.n()).done;){var o=i.value;o.range&&"string"===typeof o.text&&this._edits.push(o)}}catch(a){r.e(a)}finally{r.f()}}return(0,J.Z)(e,[{key:"getEditOperations",value:function(e,t){var n,i=(0,Na.Z)(this._edits);try{for(i.s();!(n=i.n()).done;){var r=n.value;t.addEditOperation(YB.e.lift(r.range),r.text)}}catch(a){i.e(a)}finally{i.f()}var o=!1;Array.isArray(this._edits)&&1===this._edits.length&&this._initialSelection.isEmpty()&&(this._edits[0].range.startColumn===this._initialSelection.endColumn&&this._edits[0].range.startLineNumber===this._initialSelection.endLineNumber?(o=!0,this._selectionId=t.trackSelection(this._initialSelection,!0)):this._edits[0].range.endColumn===this._initialSelection.startColumn&&this._edits[0].range.endLineNumber===this._initialSelection.startLineNumber&&(o=!0,this._selectionId=t.trackSelection(this._initialSelection,!1))),o||(this._selectionId=t.trackSelection(this._initialSelection))}},{key:"computeCursorState",value:function(e,t){return t.getTrackedSelection(this._selectionId)}}]),e}(),TX=function(){function e(t){var n=this;(0,X.Z)(this,e),this.callOnDispose=new WB.SL,this.callOnModel=new WB.SL,this.editor=t,this.callOnDispose.add(t.onDidChangeConfiguration((function(){return n.update()}))),this.callOnDispose.add(t.onDidChangeModel((function(){return n.update()}))),this.callOnDispose.add(t.onDidChangeModelLanguage((function(){return n.update()})))}return(0,J.Z)(e,[{key:"update",value:function(){var e=this;this.callOnModel.clear(),this.editor.getOption(9)<4||this.editor.getOption(44)||this.editor.hasModel()&&this.callOnModel.add(this.editor.onDidPaste((function(t){var n=t.range;e.trigger(n)})))}},{key:"trigger",value:function(e){var t=this.editor.getSelections();if(!(null===t||t.length>1)){var n=this.editor.getModel();if(n&&n.isCheapToTokenize(e.getStartPosition().lineNumber)){for(var i=this.editor.getOption(9),r=n.getOptions(),o=r.tabSize,a=r.indentSize,s=r.insertSpaces,u=[],l={shiftIndent:function(e){return _X.U.shiftIndent(e,e.length+1,o,a,s)},unshiftIndent:function(e){return _X.U.unshiftIndent(e,e.length+1,o,a,s)}},c=e.startLineNumber;c<=e.endLineNumber&&this.shouldIgnoreLine(n,c);)c++;if(!(c>e.endLineNumber)){var d=n.getLineContent(c);if(!/\S/.test(d.substring(0,e.startColumn-1))){var h=Uq.zu.getGoodIndentForLine(i,n,n.getLanguageIdentifier().id,c,l);if(null!==h){var f=Dz.V8(d),p=yX(h,o);if(p!==yX(f,o)){var g=bX(p,o,s);u.push({range:new YB.e(c,1,c,f.length+1),text:g}),d=g+d.substr(f.length)}else{var v=Uq.zu.getIndentMetadata(n,c);if(0===v||8===v)return}}}for(var m=c;c<e.endLineNumber&&!/\S/.test(n.getLineContent(c+1));)c++;if(c!==e.endLineNumber){var _={getLineTokens:function(e){return n.getLineTokens(e)},getLanguageIdentifier:function(){return n.getLanguageIdentifier()},getLanguageIdAtPosition:function(e,t){return n.getLanguageIdAtPosition(e,t)},getLineContent:function(e){return e===m?d:n.getLineContent(e)}},y=Uq.zu.getGoodIndentForLine(i,_,n.getLanguageIdentifier().id,c+1,l);if(null!==y){var b=yX(y,o),w=yX(Dz.V8(n.getLineContent(c+1)),o);if(b!==w)for(var C=b-w,k=c+1;k<=e.endLineNumber;k++){var S=n.getLineContent(k),x=Dz.V8(S),L=bX(yX(x,o)+C,o,s);L!==x&&u.push({range:new YB.e(k,1,k,x.length+1),text:L})}}}if(u.length>0){this.editor.pushUndoStop();var E=new MX(u,this.editor.getSelection());this.editor.executeCommand("autoIndentOnPaste",E),this.editor.pushUndoStop()}}}}}},{key:"shouldIgnoreLine",value:function(e,t){e.forceTokenization(t);var n=e.getLineFirstNonWhitespaceColumn(t);if(0===n)return!0;var i=e.getLineTokens(t);if(i.getCount()>0){var r=i.findTokenIndexAtOffset(n);if(r>=0&&1===i.getStandardTokenType(r))return!0}return!1}},{key:"dispose",value:function(){this.callOnDispose.dispose(),this.callOnModel.dispose()}}]),e}();function IX(e,t,n,i){if(1!==e.getLineCount()||1!==e.getLineMaxColumn(1)){for(var r="",o=0;o<n;o++)r+=" ";for(var a=new RegExp(r,"gi"),s=1,u=e.getLineCount();s<=u;s++){var l=e.getLineFirstNonWhitespaceColumn(s);if(0===l&&(l=e.getLineMaxColumn(s)),1!==l){var c=new YB.e(s,1,s,l),d=e.getValueInRange(c),h=i?d.replace(/\t/gi,r):d.replace(a,"\t");t.addEditOperation(c,h)}}}}TX.ID="editor.contrib.autoIndentOnPaste";var OX=function(){function e(t,n){(0,X.Z)(this,e),this.selection=t,this.tabSize=n,this.selectionId=null}return(0,J.Z)(e,[{key:"getEditOperations",value:function(e,t){this.selectionId=t.trackSelection(this.selection),IX(e,t,this.tabSize,!0)}},{key:"computeCursorState",value:function(e,t){return t.getTrackedSelection(this.selectionId)}}]),e}(),AX=function(){function e(t,n){(0,X.Z)(this,e),this.selection=t,this.tabSize=n,this.selectionId=null}return(0,J.Z)(e,[{key:"getEditOperations",value:function(e,t){this.selectionId=t.trackSelection(this.selection),IX(e,t,this.tabSize,!1)}},{key:"computeCursorState",value:function(e,t){return t.getTrackedSelection(this.selectionId)}}]),e}();(0,_B._K)(TX.ID,TX),(0,_B.Qr)(CX),(0,_B.Qr)(kX),(0,_B.Qr)(xX),(0,_B.Qr)(LX),(0,_B.Qr)(EX),(0,_B.Qr)(DX),(0,_B.Qr)(NX);var RX=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},PX=function(e,t){return function(n,i){t(n,i,e)}},ZX=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};function FX(e,t,n){return ZX(this,void 0,void 0,fn().mark((function i(){var r,o,a;return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return r=[],o=Iz.wo.ordered(e).reverse(),a=(0,SB.xH)(o.map((function(i){return t.map((function(t){return Promise.resolve(i.provideInlineHints(e,t,n)).then((function(e){e&&r.push({list:e,provider:i})}),(function(e){(0,LB.Cp)(e)}))}))}))),i.next=5,Promise.all(a);case 5:return i.abrupt("return",r);case 6:case"end":return i.stop()}}),i)})))}var jX=function(){function e(t,n,i){var r=this;(0,X.Z)(this,e),this._editor=t,this._codeEditorService=n,this._themeService=i,this._disposables=new WB.SL,this._sessionDisposables=new WB.SL,this._getInlineHintsDelays=new xV.Y(Iz.wo,250,2500),this._decorationsTypeIds=[],this._decorationIds=[],this._disposables.add(Iz.wo.onDidChange((function(){return r._update()}))),this._disposables.add(i.onDidColorThemeChange((function(){return r._update()}))),this._disposables.add(t.onDidChangeModel((function(){return r._update()}))),this._disposables.add(t.onDidChangeModelLanguage((function(){return r._update()}))),this._disposables.add(t.onDidChangeConfiguration((function(e){e.hasChanged(123)&&r._update()}))),this._update()}return(0,J.Z)(e,[{key:"dispose",value:function(){this._sessionDisposables.dispose(),this._removeAllDecorations(),this._disposables.dispose()}},{key:"_update",value:function(){var e=this;if(this._sessionDisposables.clear(),this._editor.getOption(123).enabled){var t=this._editor.getModel();if(t&&Iz.wo.has(t)){var n=new zB.pY((function(){return ZX(e,void 0,void 0,fn().mark((function e(){var i,r,o,a,s;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=Date.now(),r=new Lz.A,this._sessionDisposables.add((0,WB.OF)((function(){return r.dispose(!0)}))),o=this._editor.getVisibleRangesPlusViewportAboveBelow(),e.next=6,FX(t,o,r.token);case 6:a=e.sent,s=this._getInlineHintsDelays.update(t,Date.now()-i),n.delay=s,this._updateHintsDecorators(a);case 10:case"end":return e.stop()}}),e,this)})))}),this._getInlineHintsDelays.get(t));this._sessionDisposables.add(n),this._sessionDisposables.add(this._editor.onDidChangeModelContent((function(){return n.schedule()}))),this._disposables.add(this._editor.onDidScrollChange((function(){return n.schedule()}))),n.schedule();var i=new WB.SL;this._sessionDisposables.add(i);var r,o=(0,Na.Z)(Iz.wo.all(t));try{for(o.s();!(r=o.n()).done;){var a=r.value;"function"===typeof a.onDidChangeInlineHints&&i.add(a.onDidChangeInlineHints((function(){return n.schedule()})))}}catch(s){o.e(s)}finally{o.f()}}else this._removeAllDecorations()}else this._removeAllDecorations()}},{key:"_updateHintsDecorators",value:function(e){var t=this._getLayoutInfo(),n=t.fontSize,i=t.fontFamily,r=this._themeService.getColorTheme().getColor(GB.IB),o=this._themeService.getColorTheme().getColor(GB.w),a=[],s=[],u="--inlineHintsFontFamily";this._editor.getContainerDomNode().style.setProperty(u,i);var l,c=(0,Na.Z)(e);try{for(c.s();!(l=c.n()).done;)for(var d=l.value.list,h=0;h<d.length&&s.length<500;h++){var f=d[h],p=f.text,g=f.range,v=f.description,m=f.whitespaceBefore,_=f.whitespaceAfter,y=m?n/3|0:0,b=_?n/3|0:0,w={contentText:p,backgroundColor:"".concat(r),color:"".concat(o),margin:"0px ".concat(b,"px 0px ").concat(y,"px"),fontSize:"".concat(n,"px"),fontFamily:"var(".concat(u,")"),padding:"0px ".concat(n/4|0,"px"),borderRadius:"".concat(n/4|0,"px")},C="inlineHints-"+(0,kV.vp)(w).toString(16);this._codeEditorService.registerDecorationType(C,{before:w},void 0,this._editor),a.push(C);var k=this._codeEditorService.resolveDecorationOptions(C,!0);"string"===typeof v?k.hoverMessage=(new EB).appendText(v):v&&(k.hoverMessage=v),s.push({range:g,options:k})}}catch(S){c.e(S)}finally{c.f()}this._decorationsTypeIds.forEach(this._codeEditorService.removeDecorationType,this._codeEditorService),this._decorationsTypeIds=a,this._decorationIds=this._editor.deltaDecorations(this._decorationIds,s)}},{key:"_getLayoutInfo",value:function(){var e=this._editor.getOption(123),t=this._editor.getOption(42),n=e.fontSize;return(!n||n<5||n>t)&&(n=.9*t|0),{fontSize:n,fontFamily:e.fontFamily}}},{key:"_removeAllDecorations",value:function(){this._decorationIds=this._editor.deltaDecorations(this._decorationIds,[]),this._decorationsTypeIds.forEach(this._codeEditorService.removeDecorationType,this._codeEditorService),this._decorationsTypeIds=[]}}]),e}();jX.ID="editor.contrib.InlineHints",jX=RX([PX(1,fz.$),PX(2,$B.XE)],jX),(0,_B._K)(jX.ID,jX),jz.P.registerCommand("_executeInlineHintProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return ZX(void 0,void 0,void 0,fn().mark((function t(){var i,r,o,a;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=n[0],r=n[1],(0,oV.p_)(Mz.o.isUri(i)),(0,oV.p_)(YB.e.isIRange(r)),t.next=5,e.get(SK.S).createModelReference(i);case 5:return o=t.sent,t.prev=6,t.next=9,FX(o.object.textEditorModel,[YB.e.lift(r)],Lz.T.None);case 9:return a=t.sent,t.abrupt("return",(0,SB.xH)(a.map((function(e){return e.list}))).sort((function(e,t){return YB.e.compareRangesUsingStarts(e.range,t.range)})));case 11:return t.prev=11,o.dispose(),t.finish(11);case 14:case"end":return t.stop()}}),t,null,[[6,,11,14]])})))}));var HX=function(){function e(t,n,i){(0,X.Z)(this,e),this._editRange=t,this._originalSelection=n,this._text=i}return(0,J.Z)(e,[{key:"getEditOperations",value:function(e,t){t.addTrackedEditOperation(this._editRange,this._text)}},{key:"computeCursorState",value:function(e,t){var n=t.getInverseEditOperations()[0].range;return this._originalSelection.isEmpty()?new wB.Y(n.endLineNumber,Math.min(this._originalSelection.positionColumn,n.endColumn),n.endLineNumber,Math.min(this._originalSelection.positionColumn,n.endColumn)):new wB.Y(n.endLineNumber,n.endColumn-this._text.length,n.endLineNumber,n.endColumn)}}]),e}(),BX=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},zX=function(e,t){return function(n,i){t(n,i,e)}},WX=function(){function e(t,n){(0,X.Z)(this,e),this.decorationIds=[],this.editor=t,this.editorWorkerService=n}return(0,J.Z)(e,[{key:"dispose",value:function(){}},{key:"run",value:function(t,n){var i=this;this.currentRequest&&this.currentRequest.cancel();var r=this.editor.getSelection(),o=this.editor.getModel();if(o&&r){var a=r;if(a.startLineNumber===a.endLineNumber){var s=new Tz.yy(this.editor,5),u=o.uri;return this.editorWorkerService.canNavigateValueSet(u)?(this.currentRequest=(0,zB.PG)((function(e){return i.editorWorkerService.navigateValueSet(u,a,n)})),this.currentRequest.then((function(n){if(n&&n.range&&n.value&&s.validate(i.editor)){var r=YB.e.lift(n.range),o=n.range,u=n.value.length-(a.endColumn-a.startColumn);o={startLineNumber:o.startLineNumber,startColumn:o.startColumn,endLineNumber:o.endLineNumber,endColumn:o.startColumn+n.value.length},u>1&&(a=new wB.Y(a.startLineNumber,a.startColumn,a.endLineNumber,a.endColumn+u-1));var l=new HX(r,a,n.value);i.editor.pushUndoStop(),i.editor.executeCommand(t,l),i.editor.pushUndoStop(),i.decorationIds=i.editor.deltaDecorations(i.decorationIds,[{range:o,options:e.DECORATION}]),i.decorationRemover&&i.decorationRemover.cancel(),i.decorationRemover=(0,zB.Vs)(350),i.decorationRemover.then((function(){return i.decorationIds=i.editor.deltaDecorations(i.decorationIds,[])})).catch(LB.dL)}})).catch(LB.dL)):Promise.resolve(void 0)}}}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();WX.ID="editor.contrib.inPlaceReplaceController",WX.DECORATION=KB.qx.register({className:"valueSetReplacement"}),WX=BX([zX(1,tX.p)],WX);var VX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.inPlaceReplace.up",label:yB.N("InPlaceReplaceAction.previous.label","Replace with Previous Value"),alias:"Replace with Previous Value",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:3154,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=WX.get(t);return n?n.run(this.id,!0):Promise.resolve(void 0)}}]),n}(_B.R6),YX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.inPlaceReplace.down",label:yB.N("InPlaceReplaceAction.next.label","Replace with Next Value"),alias:"Replace with Next Value",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:3156,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=WX.get(t);return n?n.run(this.id,!1):Promise.resolve(void 0)}}]),n}(_B.R6);(0,_B._K)(WX.ID,WX),(0,_B.Qr)(VX),(0,_B.Qr)(YX),(0,$B.Ic)((function(e,t){var n=e.getColor(qB.Dl);n&&t.addRule(".monaco-editor.vs .valueSetReplacement { outline: solid 2px ".concat(n,"; }"))}));var UX=function(){function e(t,n){(0,X.Z)(this,e),this._selection=t,this._cursors=n,this._selectionId=null}return(0,J.Z)(e,[{key:"getEditOperations",value:function(e,t){for(var n=function(e,t){t.sort((function(e,t){return e.lineNumber===t.lineNumber?e.column-t.column:e.lineNumber-t.lineNumber}));for(var n=t.length-2;n>=0;n--)t[n].lineNumber===t[n+1].lineNumber&&t.splice(n,1);for(var i=[],r=0,o=0,a=t.length,s=1,u=e.getLineCount();s<=u;s++){var l=e.getLineContent(s),c=l.length+1,d=0;if(!(o<a&&t[o].lineNumber===s&&(d=t[o].column,o++,d===c))&&0!==l.length){var h=Dz.ow(l),f=0;if(-1===h)f=1;else{if(h===l.length-1)continue;f=h+2}f=Math.max(d,f),i[r++]=Yq.h.delete(new YB.e(s,f,s,c))}}return i}(e,this._cursors),i=0,r=n.length;i<r;i++){var o=n[i];t.addEditOperation(o.range,o.text)}this._selectionId=t.trackSelection(this._selection)}},{key:"computeCursorState",value:function(e,t){return t.getTrackedSelection(this._selectionId)}}]),e}();var KX=n(22268),qX=function(){function e(t,n,i){(0,X.Z)(this,e),this._selection=t,this._isCopyingDown=n,this._noop=i||!1,this._selectionDirection=0,this._selectionId=null,this._startLineNumberDelta=0,this._endLineNumberDelta=0}return(0,J.Z)(e,[{key:"getEditOperations",value:function(e,t){var n=this._selection;this._startLineNumberDelta=0,this._endLineNumberDelta=0,n.startLineNumber<n.endLineNumber&&1===n.endColumn&&(this._endLineNumberDelta=1,n=n.setEndPosition(n.endLineNumber-1,e.getLineMaxColumn(n.endLineNumber-1)));for(var i=[],r=n.startLineNumber;r<=n.endLineNumber;r++)i.push(e.getLineContent(r));var o=i.join("\n");""===o&&this._isCopyingDown&&(this._startLineNumberDelta++,this._endLineNumberDelta++),this._noop?t.addEditOperation(new YB.e(n.endLineNumber,e.getLineMaxColumn(n.endLineNumber),n.endLineNumber+1,1),n.endLineNumber===e.getLineCount()?"":"\n"):this._isCopyingDown?t.addEditOperation(new YB.e(n.startLineNumber,1,n.startLineNumber,1),o+"\n"):t.addEditOperation(new YB.e(n.endLineNumber,e.getLineMaxColumn(n.endLineNumber),n.endLineNumber,e.getLineMaxColumn(n.endLineNumber)),"\n"+o),this._selectionId=t.trackSelection(n),this._selectionDirection=this._selection.getDirection()}},{key:"computeCursorState",value:function(e,t){var n=t.getTrackedSelection(this._selectionId);if(0!==this._startLineNumberDelta||0!==this._endLineNumberDelta){var i=n.startLineNumber,r=n.startColumn,o=n.endLineNumber,a=n.endColumn;0!==this._startLineNumberDelta&&(i+=this._startLineNumberDelta,r=1),0!==this._endLineNumberDelta&&(o+=this._endLineNumberDelta,a=1),n=wB.Y.createWithDirection(i,r,o,a,this._selectionDirection)}return n}}]),e}(),GX=n(7273),$X=function(){function e(t,n,i){(0,X.Z)(this,e),this._selection=t,this._isMovingDown=n,this._autoIndent=i,this._selectionId=null,this._moveEndLineSelectionShrink=!1}return(0,J.Z)(e,[{key:"getEditOperations",value:function(e,t){var n=e.getLineCount();if(this._isMovingDown&&this._selection.endLineNumber===n)this._selectionId=t.trackSelection(this._selection);else if(this._isMovingDown||1!==this._selection.startLineNumber){this._moveEndPositionDown=!1;var i=this._selection;i.startLineNumber<i.endLineNumber&&1===i.endColumn&&(this._moveEndPositionDown=!0,i=i.setEndPosition(i.endLineNumber-1,e.getLineMaxColumn(i.endLineNumber-1)));var r=e.getOptions(),o=r.tabSize,a=r.indentSize,s=r.insertSpaces,u=this.buildIndentConverter(o,a,s),l={getLineTokens:function(t){return e.getLineTokens(t)},getLanguageIdentifier:function(){return e.getLanguageIdentifier()},getLanguageIdAtPosition:function(t,n){return e.getLanguageIdAtPosition(t,n)},getLineContent:null};if(i.startLineNumber===i.endLineNumber&&1===e.getLineMaxColumn(i.startLineNumber)){var c=i.startLineNumber,d=this._isMovingDown?c+1:c-1;1===e.getLineMaxColumn(d)?t.addEditOperation(new YB.e(1,1,1,1),null):(t.addEditOperation(new YB.e(c,1,c,1),e.getLineContent(d)),t.addEditOperation(new YB.e(d,1,d,e.getLineMaxColumn(d)),null)),i=new wB.Y(d,1,d,1)}else{var h,f;if(this._isMovingDown){h=i.endLineNumber+1,f=e.getLineContent(h),t.addEditOperation(new YB.e(h-1,e.getLineMaxColumn(h-1),h,e.getLineMaxColumn(h)),null);var p=f;if(this.shouldAutoIndent(e,i)){var g=this.matchEnterRule(e,u,o,h,i.startLineNumber-1);if(null!==g){var v=bX(g+yX(Dz.V8(e.getLineContent(h)),o),o,s);p=v+this.trimLeft(f)}else{l.getLineContent=function(t){return t===i.startLineNumber?e.getLineContent(h):e.getLineContent(t)};var m=Uq.zu.getGoodIndentForLine(this._autoIndent,l,e.getLanguageIdAtPosition(h,1),i.startLineNumber,u);if(null!==m){var _=Dz.V8(e.getLineContent(h)),y=yX(m,o);if(y!==yX(_,o)){var b=bX(y,o,s);p=b+this.trimLeft(f)}}}t.addEditOperation(new YB.e(i.startLineNumber,1,i.startLineNumber,1),p+"\n");var w=this.matchEnterRuleMovingDown(e,u,o,i.startLineNumber,h,p);if(null!==w)0!==w&&this.getIndentEditsOfMovingBlock(e,t,i,o,s,w);else{l.getLineContent=function(t){return t===i.startLineNumber?p:t>=i.startLineNumber+1&&t<=i.endLineNumber+1?e.getLineContent(t-1):e.getLineContent(t)};var C=Uq.zu.getGoodIndentForLine(this._autoIndent,l,e.getLanguageIdAtPosition(h,1),i.startLineNumber+1,u);if(null!==C){var k=Dz.V8(e.getLineContent(i.startLineNumber)),S=yX(C,o),x=yX(k,o);if(S!==x){var L=S-x;this.getIndentEditsOfMovingBlock(e,t,i,o,s,L)}}}}else t.addEditOperation(new YB.e(i.startLineNumber,1,i.startLineNumber,1),p+"\n")}else if(h=i.startLineNumber-1,f=e.getLineContent(h),t.addEditOperation(new YB.e(h,1,h+1,1),null),t.addEditOperation(new YB.e(i.endLineNumber,e.getLineMaxColumn(i.endLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),"\n"+f),this.shouldAutoIndent(e,i)){l.getLineContent=function(t){return t===h?e.getLineContent(i.startLineNumber):e.getLineContent(t)};var E=this.matchEnterRule(e,u,o,i.startLineNumber,i.startLineNumber-2);if(null!==E)0!==E&&this.getIndentEditsOfMovingBlock(e,t,i,o,s,E);else{var D=Uq.zu.getGoodIndentForLine(this._autoIndent,l,e.getLanguageIdAtPosition(i.startLineNumber,1),h,u);if(null!==D){var N=Dz.V8(e.getLineContent(i.startLineNumber)),M=yX(D,o),T=yX(N,o);if(M!==T){var I=M-T;this.getIndentEditsOfMovingBlock(e,t,i,o,s,I)}}}}}this._selectionId=t.trackSelection(i)}else this._selectionId=t.trackSelection(this._selection)}},{key:"buildIndentConverter",value:function(e,t,n){return{shiftIndent:function(i){return _X.U.shiftIndent(i,i.length+1,e,t,n)},unshiftIndent:function(i){return _X.U.unshiftIndent(i,i.length+1,e,t,n)}}}},{key:"parseEnterResult",value:function(e,t,n,i,r){if(r){var o=r.indentation;r.indentAction===GX.wU.None||r.indentAction===GX.wU.Indent?o=r.indentation+r.appendText:r.indentAction===GX.wU.IndentOutdent?o=r.indentation:r.indentAction===GX.wU.Outdent&&(o=t.unshiftIndent(r.indentation)+r.appendText);var a=e.getLineContent(i);if(this.trimLeft(a).indexOf(this.trimLeft(o))>=0){var s=Dz.V8(e.getLineContent(i)),u=Dz.V8(o),l=Uq.zu.getIndentMetadata(e,i);return null!==l&&2&l&&(u=t.unshiftIndent(u)),yX(u,n)-yX(s,n)}}return null}},{key:"matchEnterRuleMovingDown",value:function(e,t,n,i,r,o){if(Dz.ow(o)>=0){var a=e.getLineMaxColumn(r),s=Uq.zu.getEnterAction(this._autoIndent,e,new YB.e(r,a,r,a));return this.parseEnterResult(e,t,n,i,s)}for(var u=i-1;u>=1;){var l=e.getLineContent(u);if(Dz.ow(l)>=0)break;u--}if(u<1||i>e.getLineCount())return null;var c=e.getLineMaxColumn(u),d=Uq.zu.getEnterAction(this._autoIndent,e,new YB.e(u,c,u,c));return this.parseEnterResult(e,t,n,i,d)}},{key:"matchEnterRule",value:function(e,t,n,i,r,o){for(var a=r;a>=1;){var s=void 0;if(s=a===r&&void 0!==o?o:e.getLineContent(a),Dz.ow(s)>=0)break;a--}if(a<1||i>e.getLineCount())return null;var u=e.getLineMaxColumn(a),l=Uq.zu.getEnterAction(this._autoIndent,e,new YB.e(a,u,a,u));return this.parseEnterResult(e,t,n,i,l)}},{key:"trimLeft",value:function(e){return e.replace(/^\s+/,"")}},{key:"shouldAutoIndent",value:function(e,t){if(this._autoIndent<4)return!1;if(!e.isCheapToTokenize(t.startLineNumber))return!1;var n=e.getLanguageIdAtPosition(t.startLineNumber,1);return n===e.getLanguageIdAtPosition(t.endLineNumber,1)&&null!==Uq.zu.getIndentRulesSupport(n)}},{key:"getIndentEditsOfMovingBlock",value:function(e,t,n,i,r,o){for(var a=n.startLineNumber;a<=n.endLineNumber;a++){var s=e.getLineContent(a),u=Dz.V8(s),l=bX(yX(u,i)+o,i,r);l!==u&&(t.addEditOperation(new YB.e(a,1,a,u.length+1),l),a===n.endLineNumber&&n.endColumn<=u.length+1&&""===l&&(this._moveEndLineSelectionShrink=!0))}}},{key:"computeCursorState",value:function(e,t){var n=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(n=n.setEndPosition(n.endLineNumber+1,1)),this._moveEndLineSelectionShrink&&n.startLineNumber<n.endLineNumber&&(n=n.setEndPosition(n.endLineNumber,2)),n}}]),e}(),QX=function(){function e(t,n){(0,X.Z)(this,e),this.selection=t,this.descending=n,this.selectionId=null}return(0,J.Z)(e,[{key:"getEditOperations",value:function(e,t){var n=function(e,t,n){var i=XX(e,t,n);if(!i)return null;return Yq.h.replace(new YB.e(i.startLineNumber,1,i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),i.after.join("\n"))}(e,this.selection,this.descending);n&&t.addEditOperation(n.range,n.text),this.selectionId=t.trackSelection(this.selection)}},{key:"computeCursorState",value:function(e,t){return t.getTrackedSelection(this.selectionId)}}],[{key:"getCollator",value:function(){return e._COLLATOR||(e._COLLATOR=new Intl.Collator),e._COLLATOR}},{key:"canRun",value:function(e,t,n){if(null===e)return!1;var i=XX(e,t,n);if(!i)return!1;for(var r=0,o=i.before.length;r<o;r++)if(i.before[r]!==i.after[r])return!0;return!1}}]),e}();function XX(e,t,n){var i=t.startLineNumber,r=t.endLineNumber;if(1===t.endColumn&&r--,i>=r)return null;for(var o=[],a=i;a<=r;a++)o.push(e.getLineContent(a));var s=o.slice(0);return s.sort(QX.getCollator().compare),!0===n&&(s=s.reverse()),{startLineNumber:i,endLineNumber:r,before:o,after:s}}QX._COLLATOR=null;var JX=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,i)).down=e,r}return(0,J.Z)(n,[{key:"run",value:function(e,t){if(t.hasModel()){var n=t.getSelections().map((function(e,t){return{selection:e,index:t,ignore:!1}}));n.sort((function(e,t){return YB.e.compareRangesUsingStarts(e.selection,t.selection)}));for(var i=n[0],r=1;r<n.length;r++){var o=n[r];i.selection.endLineNumber===o.selection.startLineNumber&&(i.index<o.index?o.ignore=!0:(i.ignore=!0,i=o))}var a,s=[],u=(0,Na.Z)(n);try{for(u.s();!(a=u.n()).done;){var l=a.value;s.push(new qX(l.selection,this.down,l.ignore))}}catch(c){u.e(c)}finally{u.f()}t.pushUndoStop(),t.executeCommands(this.id,s),t.pushUndoStop()}}}]),n}(_B.R6),eJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!1,{id:"editor.action.copyLinesUpAction",label:yB.N("lines.copyUp","Copy Line Up"),alias:"Copy Line Up",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:1552,linux:{primary:3600},weight:100},menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"2_line",title:yB.N({key:"miCopyLinesUp",comment:["&& denotes a mnemonic"]},"&&Copy Line Up"),order:1}})}return(0,J.Z)(n)}(JX),tJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!0,{id:"editor.action.copyLinesDownAction",label:yB.N("lines.copyDown","Copy Line Down"),alias:"Copy Line Down",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:1554,linux:{primary:3602},weight:100},menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"2_line",title:yB.N({key:"miCopyLinesDown",comment:["&& denotes a mnemonic"]},"Co&&py Line Down"),order:2}})}return(0,J.Z)(n)}(JX),nJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.duplicateSelection",label:yB.N("duplicateSelection","Duplicate Selection"),alias:"Duplicate Selection",precondition:bB.u.writable,menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"2_line",title:yB.N({key:"miDuplicateSelection",comment:["&& denotes a mnemonic"]},"&&Duplicate Selection"),order:5}})}return(0,J.Z)(n,[{key:"run",value:function(e,t,n){if(t.hasModel()){var i,r=[],o=t.getSelections(),a=t.getModel(),s=(0,Na.Z)(o);try{for(s.s();!(i=s.n()).done;){var u=i.value;if(u.isEmpty())r.push(new qX(u,!0));else{var l=new wB.Y(u.endLineNumber,u.endColumn,u.endLineNumber,u.endColumn);r.push(new sz.OY(l,a.getValueInRange(u)))}}}catch(c){s.e(c)}finally{s.f()}t.pushUndoStop(),t.executeCommands(this.id,r),t.pushUndoStop()}}}]),n}(_B.R6),iJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,i)).down=e,r}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n,i=[],r=t.getSelections()||[],o=t.getOption(9),a=(0,Na.Z)(r);try{for(a.s();!(n=a.n()).done;){var s=n.value;i.push(new $X(s,this.down,o))}}catch(u){a.e(u)}finally{a.f()}t.pushUndoStop(),t.executeCommands(this.id,i),t.pushUndoStop()}}]),n}(_B.R6),rJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!1,{id:"editor.action.moveLinesUpAction",label:yB.N("lines.moveUp","Move Line Up"),alias:"Move Line Up",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:528,linux:{primary:528},weight:100},menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"2_line",title:yB.N({key:"miMoveLinesUp",comment:["&& denotes a mnemonic"]},"Mo&&ve Line Up"),order:3}})}return(0,J.Z)(n)}(iJ),oJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!0,{id:"editor.action.moveLinesDownAction",label:yB.N("lines.moveDown","Move Line Down"),alias:"Move Line Down",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:530,linux:{primary:530},weight:100},menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"2_line",title:yB.N({key:"miMoveLinesDown",comment:["&& denotes a mnemonic"]},"Move &&Line Down"),order:4}})}return(0,J.Z)(n)}(iJ),aJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,i)).descending=e,r}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n,i=t.getSelections()||[],r=(0,Na.Z)(i);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(!QX.canRun(t.getModel(),o,this.descending))return}}catch(l){r.e(l)}finally{r.f()}for(var a=[],s=0,u=i.length;s<u;s++)a[s]=new QX(i[s],this.descending);t.pushUndoStop(),t.executeCommands(this.id,a),t.pushUndoStop()}}]),n}(_B.R6),sJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!1,{id:"editor.action.sortLinesAscending",label:yB.N("lines.sortAscending","Sort Lines Ascending"),alias:"Sort Lines Ascending",precondition:bB.u.writable})}return(0,J.Z)(n)}(aJ),uJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!0,{id:"editor.action.sortLinesDescending",label:yB.N("lines.sortDescending","Sort Lines Descending"),alias:"Sort Lines Descending",precondition:bB.u.writable})}return(0,J.Z)(n)}(aJ),lJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:n.ID,label:yB.N("lines.trimTrailingWhitespace","Trim Trailing Whitespace"),alias:"Trim Trailing Whitespace",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:(0,CB.gx)(2089,2102),weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t,n){var i=[];"auto-save"===n.reason&&(i=(t.getSelections()||[]).map((function(e){return new VB.L(e.positionLineNumber,e.positionColumn)})));var r=t.getSelection();if(null!==r){var o=new UX(r,i);t.pushUndoStop(),t.executeCommands(this.id,[o]),t.pushUndoStop()}}}]),n}(_B.R6);lJ.ID="editor.action.trimTrailingWhitespace";var cJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.deleteLines",label:yB.N("lines.delete","Delete Line"),alias:"Delete Line",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.textInputFocus,primary:3113,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){if(t.hasModel()){var n=this._getLinesToRemove(t),i=t.getModel();if(1!==i.getLineCount()||1!==i.getLineMaxColumn(1)){for(var r=0,o=[],a=[],s=0,u=n.length;s<u;s++){var l=n[s],c=l.startLineNumber,d=l.endLineNumber,h=1,f=i.getLineMaxColumn(d);d<i.getLineCount()?(d+=1,f=1):c>1&&(c-=1,h=i.getLineMaxColumn(c)),o.push(Yq.h.replace(new wB.Y(c,h,d,f),"")),a.push(new wB.Y(c-r,l.positionColumn,c-r,l.positionColumn)),r+=l.endLineNumber-l.startLineNumber+1}t.pushUndoStop(),t.executeEdits(this.id,o,a),t.pushUndoStop()}}}},{key:"_getLinesToRemove",value:function(e){var t=e.getSelections().map((function(e){var t=e.endLineNumber;return e.startLineNumber<e.endLineNumber&&1===e.endColumn&&(t-=1),{startLineNumber:e.startLineNumber,selectionStartColumn:e.selectionStartColumn,endLineNumber:t,positionColumn:e.positionColumn}}));t.sort((function(e,t){return e.startLineNumber===t.startLineNumber?e.endLineNumber-t.endLineNumber:e.startLineNumber-t.startLineNumber}));for(var n=[],i=t[0],r=1;r<t.length;r++)i.endLineNumber+1>=t[r].startLineNumber?i.endLineNumber=t[r].endLineNumber:(n.push(i),i=t[r]);return n.push(i),n}}]),n}(_B.R6),dJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.indentLines",label:yB.N("lines.indent","Indent Line"),alias:"Indent Line",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:2137,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=t._getViewModel();n&&(t.pushUndoStop(),t.executeCommands(this.id,KX.u.indent(n.cursorConfig,t.getModel(),t.getSelections())),t.pushUndoStop())}}]),n}(_B.R6),hJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.outdentLines",label:yB.N("lines.outdent","Outdent Line"),alias:"Outdent Line",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:2135,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){vB.wk.Outdent.runEditorCommand(e,t,null)}}]),n}(_B.R6),fJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.insertLineBefore",label:yB.N("lines.insertBefore","Insert Line Above"),alias:"Insert Line Above",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:3075,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=t._getViewModel();n&&(t.pushUndoStop(),t.executeCommands(this.id,KX.u.lineInsertBefore(n.cursorConfig,t.getModel(),t.getSelections())))}}]),n}(_B.R6),pJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.insertLineAfter",label:yB.N("lines.insertAfter","Insert Line Below"),alias:"Insert Line Below",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:2051,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=t._getViewModel();n&&(t.pushUndoStop(),t.executeCommands(this.id,KX.u.lineInsertAfter(n.cursorConfig,t.getModel(),t.getSelections())))}}]),n}(_B.R6),gJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"run",value:function(e,t){if(t.hasModel()){for(var n=t.getSelection(),i=this._getRangesToDelete(t),r=[],o=0,a=i.length-1;o<a;o++){var s=i[o],u=i[o+1];null===YB.e.intersectRanges(s,u)?r.push(s):i[o+1]=YB.e.plusRange(s,u)}r.push(i[i.length-1]);var l=this._getEndCursorState(n,r),c=r.map((function(e){return Yq.h.replace(e,"")}));t.pushUndoStop(),t.executeEdits(this.id,c,l),t.pushUndoStop()}}}]),n}(_B.R6),vJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"deleteAllLeft",label:yB.N("lines.deleteAllLeft","Delete All Left"),alias:"Delete All Left",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.textInputFocus,primary:0,mac:{primary:2049},weight:100}})}return(0,J.Z)(n,[{key:"_getEndCursorState",value:function(e,t){var n=null,i=[],r=0;return t.forEach((function(t){var o;if(1===t.endColumn&&r>0){var a=t.startLineNumber-r;o=new wB.Y(a,t.startColumn,a,t.startColumn)}else o=new wB.Y(t.startLineNumber,t.startColumn,t.startLineNumber,t.startColumn);r+=t.endLineNumber-t.startLineNumber,t.intersectRanges(e)?n=o:i.push(o)})),n&&i.unshift(n),i}},{key:"_getRangesToDelete",value:function(e){var t=e.getSelections();if(null===t)return[];var n=t,i=e.getModel();return null===i?[]:(n.sort(YB.e.compareRangesUsingStarts),n=n.map((function(e){if(e.isEmpty()){if(1===e.startColumn){var t=Math.max(1,e.startLineNumber-1),n=1===e.startLineNumber?1:i.getLineContent(t).length+1;return new YB.e(t,n,e.startLineNumber,1)}return new YB.e(e.startLineNumber,1,e.startLineNumber,e.startColumn)}return new YB.e(e.startLineNumber,1,e.endLineNumber,e.endColumn)})))}}]),n}(gJ),mJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"deleteAllRight",label:yB.N("lines.deleteAllRight","Delete All Right"),alias:"Delete All Right",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.textInputFocus,primary:0,mac:{primary:297,secondary:[2068]},weight:100}})}return(0,J.Z)(n,[{key:"_getEndCursorState",value:function(e,t){for(var n=null,i=[],r=0,o=t.length;r<o;r++){var a=t[r],s=new wB.Y(a.startLineNumber-0,a.startColumn,a.startLineNumber-0,a.startColumn);a.intersectRanges(e)?n=s:i.push(s)}return n&&i.unshift(n),i}},{key:"_getRangesToDelete",value:function(e){var t=e.getModel();if(null===t)return[];var n=e.getSelections();if(null===n)return[];var i=n.map((function(e){if(e.isEmpty()){var n=t.getLineMaxColumn(e.startLineNumber);return e.startColumn===n?new YB.e(e.startLineNumber,e.startColumn,e.startLineNumber+1,1):new YB.e(e.startLineNumber,e.startColumn,e.startLineNumber,n)}return e}));return i.sort(YB.e.compareRangesUsingStarts),i}}]),n}(gJ),_J=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.joinLines",label:yB.N("lines.joinLines","Join Lines"),alias:"Join Lines",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:0,mac:{primary:296},weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=t.getSelections();if(null!==n){var i=t.getSelection();if(null!==i){n.sort(YB.e.compareRangesUsingStarts);var r=[],o=n.reduce((function(e,t){return e.isEmpty()?e.endLineNumber===t.startLineNumber?(i.equalsSelection(e)&&(i=t),t):t.startLineNumber>e.endLineNumber+1?(r.push(e),t):new wB.Y(e.startLineNumber,e.startColumn,t.endLineNumber,t.endColumn):t.startLineNumber>e.endLineNumber?(r.push(e),t):new wB.Y(e.startLineNumber,e.startColumn,t.endLineNumber,t.endColumn)}));r.push(o);var a=t.getModel();if(null!==a){for(var s=[],u=[],l=i,c=0,d=0,h=r.length;d<h;d++){var f=r[d],p=f.startLineNumber,g=0,v=void 0,m=void 0,_=a.getLineContent(f.endLineNumber).length-f.endColumn;if(f.isEmpty()||f.startLineNumber===f.endLineNumber){var y=f.getStartPosition();y.lineNumber<a.getLineCount()?(v=p+1,m=a.getLineMaxColumn(v)):(v=y.lineNumber,m=a.getLineMaxColumn(y.lineNumber))}else v=f.endLineNumber,m=a.getLineMaxColumn(v);for(var b=a.getLineContent(p),w=p+1;w<=v;w++){var C=a.getLineContent(w),k=a.getLineFirstNonWhitespaceColumn(w);if(k>=1){var S=!0;""===b&&(S=!1),!S||" "!==b.charAt(b.length-1)&&"\t"!==b.charAt(b.length-1)||(S=!1,b=b.replace(/[\s\uFEFF\xA0]+$/g," "));var x=C.substr(k-1);b+=(S?" ":"")+x,g=S?x.length+1:x.length}else g=0}var L=new YB.e(p,1,v,m);if(!L.isEmpty()){var E=void 0;f.isEmpty()?(s.push(Yq.h.replace(L,b)),E=new wB.Y(L.startLineNumber-c,b.length-g+1,p-c,b.length-g+1)):f.startLineNumber===f.endLineNumber?(s.push(Yq.h.replace(L,b)),E=new wB.Y(f.startLineNumber-c,f.startColumn,f.endLineNumber-c,f.endColumn)):(s.push(Yq.h.replace(L,b)),E=new wB.Y(f.startLineNumber-c,f.startColumn,f.startLineNumber-c,b.length-_)),null!==YB.e.intersectRanges(L,i)?l=E:u.push(E)}c+=L.endLineNumber-L.startLineNumber}u.unshift(l),t.pushUndoStop(),t.executeEdits(this.id,s,u),t.pushUndoStop()}}}}}]),n}(_B.R6),yJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.transpose",label:yB.N("editor.transpose","Transpose characters around the cursor"),alias:"Transpose characters around the cursor",precondition:bB.u.writable})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=t.getSelections();if(null!==n){var i=t.getModel();if(null!==i){for(var r=[],o=0,a=n.length;o<a;o++){var s=n[o];if(s.isEmpty()){var u=s.getStartPosition(),l=i.getLineMaxColumn(u.lineNumber);if(u.column>=l){if(u.lineNumber===i.getLineCount())continue;var c=new YB.e(u.lineNumber,Math.max(1,u.column-1),u.lineNumber+1,1),d=i.getValueInRange(c).split("").reverse().join("");r.push(new sz.T4(new wB.Y(u.lineNumber,Math.max(1,u.column-1),u.lineNumber+1,1),d))}else{var h=new YB.e(u.lineNumber,Math.max(1,u.column-1),u.lineNumber,u.column+1),f=i.getValueInRange(h).split("").reverse().join("");r.push(new sz.hP(h,f,new wB.Y(u.lineNumber,u.column+1,u.lineNumber,u.column+1)))}}}t.pushUndoStop(),t.executeCommands(this.id,r),t.pushUndoStop()}}}}]),n}(_B.R6),bJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=t.getSelections();if(null!==n){var i=t.getModel();if(null!==i){var r,o=t.getOption(113),a=[],s=(0,Na.Z)(n);try{for(s.s();!(r=s.n()).done;){var u=r.value;if(u.isEmpty()){var l=u.getStartPosition(),c=t.getConfiguredWordAtPosition(l);if(!c)continue;var d=new YB.e(l.lineNumber,c.startColumn,l.lineNumber,c.endColumn),h=i.getValueInRange(d);a.push(Yq.h.replace(d,this._modifyText(h,o)))}else{var f=i.getValueInRange(u);a.push(Yq.h.replace(u,this._modifyText(f,o)))}}}catch(p){s.e(p)}finally{s.f()}t.pushUndoStop(),t.executeEdits(this.id,a),t.pushUndoStop()}}}}]),n}(_B.R6),wJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.transformToUppercase",label:yB.N("editor.transformToUppercase","Transform to Uppercase"),alias:"Transform to Uppercase",precondition:bB.u.writable})}return(0,J.Z)(n,[{key:"_modifyText",value:function(e,t){return e.toLocaleUpperCase()}}]),n}(bJ),CJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.transformToLowercase",label:yB.N("editor.transformToLowercase","Transform to Lowercase"),alias:"Transform to Lowercase",precondition:bB.u.writable})}return(0,J.Z)(n,[{key:"_modifyText",value:function(e,t){return e.toLocaleLowerCase()}}]),n}(bJ),kJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.transformToTitlecase",label:yB.N("editor.transformToTitlecase","Transform to Title Case"),alias:"Transform to Title Case",precondition:bB.u.writable})}return(0,J.Z)(n,[{key:"_modifyText",value:function(e,t){for(var n=("\r\n\t "+t).split(""),i="",r=!0,o=0;o<e.length;o++){var a=e[o];n.indexOf(a)>=0?(r=!0,i+=a):r?(r=!1,i+=a.toLocaleUpperCase()):i+=a.toLocaleLowerCase()}return i}}]),n}(bJ),SJ=function(){function e(t,n){(0,X.Z)(this,e),this._pattern=t,this._flags=n,this._actual=null,this._evaluated=!1}return(0,J.Z)(e,[{key:"get",value:function(){if(!this._evaluated){this._evaluated=!0;try{this._actual=new RegExp(this._pattern,this._flags)}catch(e){}}return this._actual}},{key:"isSupported",value:function(){return null!==this.get()}}]),e}(),xJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.transformToSnakecase",label:yB.N("editor.transformToSnakecase","Transform to Snake Case"),alias:"Transform to Snake Case",precondition:bB.u.writable})}return(0,J.Z)(n,[{key:"_modifyText",value:function(e,t){var i=n.regExp1.get(),r=n.regExp2.get();return i&&r?e.replace(i,"$1_$2").replace(r,"$1_$2$3").toLocaleLowerCase():e}}]),n}(bJ);xJ.regExp1=new SJ("(\\p{Ll})(\\p{Lu})","gmu"),xJ.regExp2=new SJ("(\\p{Lu}|\\p{N})(\\p{Lu})(\\p{Ll})","gmu"),(0,_B.Qr)(eJ),(0,_B.Qr)(tJ),(0,_B.Qr)(nJ),(0,_B.Qr)(rJ),(0,_B.Qr)(oJ),(0,_B.Qr)(sJ),(0,_B.Qr)(uJ),(0,_B.Qr)(lJ),(0,_B.Qr)(cJ),(0,_B.Qr)(dJ),(0,_B.Qr)(hJ),(0,_B.Qr)(fJ),(0,_B.Qr)(pJ),(0,_B.Qr)(vJ),(0,_B.Qr)(mJ),(0,_B.Qr)(_J),(0,_B.Qr)(yJ),(0,_B.Qr)(wJ),(0,_B.Qr)(CJ),(0,_B.Qr)(kJ),xJ.regExp1.isSupported()&&xJ.regExp2.isSupported()&&(0,_B.Qr)(xJ);var LJ=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},EJ=function(e,t){return function(n,i){t(n,i,e)}},DJ=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},NJ=new kB.uy("LinkedEditingInputVisible",!1),MJ="linked-editing-decoration",TJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this))._debounceDuration=200,r._localToDispose=r._register(new WB.SL),r._editor=e,r._enabled=!1,r._visibleContextKey=NJ.bindTo(i),r._currentDecorations=[],r._languageWordPattern=null,r._currentWordPattern=null,r._ignoreChangeEvent=!1,r._localToDispose=r._register(new WB.SL),r._rangeUpdateTriggerPromise=null,r._rangeSyncTriggerPromise=null,r._currentRequest=null,r._currentRequestPosition=null,r._currentRequestModelVersion=null,r._register(r._editor.onDidChangeModel((function(){return r.reinitialize()}))),r._register(r._editor.onDidChangeConfiguration((function(e){(e.hasChanged(58)||e.hasChanged(78))&&r.reinitialize()}))),r._register(Iz.id.onDidChange((function(){return r.reinitialize()}))),r._register(r._editor.onDidChangeModelLanguage((function(){return r.reinitialize()}))),r.reinitialize(),r}return(0,J.Z)(n,[{key:"reinitialize",value:function(){var e=this,t=this._editor.getModel(),n=null!==t&&(this._editor.getOption(58)||this._editor.getOption(78))&&Iz.id.has(t);if(n!==this._enabled&&(this._enabled=n,this.clearRanges(),this._localToDispose.clear(),n&&null!==t)){this._languageWordPattern=Uq.zu.getWordDefinition(t.getLanguageIdentifier().id),this._localToDispose.add(t.onDidChangeLanguageConfiguration((function(){e._languageWordPattern=Uq.zu.getWordDefinition(t.getLanguageIdentifier().id)})));var i=new zB.vp(this._debounceDuration),r=function(){e._rangeUpdateTriggerPromise=i.trigger((function(){return e.updateRanges()}),e._debounceDuration)},o=new zB.vp(0);this._localToDispose.add(this._editor.onDidChangeCursorPosition((function(){r()}))),this._localToDispose.add(this._editor.onDidChangeModelContent((function(n){if(!e._ignoreChangeEvent&&e._currentDecorations.length>0){var i=t.getDecorationRange(e._currentDecorations[0]);if(i&&n.changes.every((function(e){return i.intersectRanges(e.range)})))return a=e._currentDecorations,void(e._rangeSyncTriggerPromise=o.trigger((function(){return e._syncRanges(a)})))}var a;r()}))),this._localToDispose.add({dispose:function(){i.cancel(),o.cancel()}}),this.updateRanges()}}},{key:"_syncRanges",value:function(e){if(this._editor.hasModel()&&e===this._currentDecorations&&0!==e.length){var t=this._editor.getModel(),n=t.getDecorationRange(e[0]);if(!n||n.startLineNumber!==n.endLineNumber)return this.clearRanges();var i=t.getValueInRange(n);if(this._currentWordPattern){var r=i.match(this._currentWordPattern);if((r?r[0].length:0)!==i.length)return this.clearRanges()}for(var o=[],a=1,s=e.length;a<s;a++){var u=t.getDecorationRange(e[a]);if(u)if(u.startLineNumber!==u.endLineNumber)o.push({range:u,text:i});else{var l=t.getValueInRange(u),c=i,d=u.startColumn,h=u.endColumn,f=Dz.Mh(l,c);d+=f,l=l.substr(f),c=c.substr(f);var p=Dz.P1(l,c);h-=p,l=l.substr(0,l.length-p),c=c.substr(0,c.length-p),d===h&&0===c.length||o.push({range:new YB.e(u.startLineNumber,d,u.endLineNumber,h),text:c})}}if(0!==o.length)try{this._editor.popUndoStop(),this._ignoreChangeEvent=!0;var g=this._editor._getViewModel().getPrevEditOperationType();this._editor.executeEdits("linkedEditing",o),this._editor._getViewModel().setPrevEditOperationType(g)}finally{this._ignoreChangeEvent=!1}}}},{key:"dispose",value:function(){this.clearRanges(),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"clearRanges",value:function(){this._visibleContextKey.set(!1),this._currentDecorations=this._editor.deltaDecorations(this._currentDecorations,[]),this._currentRequest&&(this._currentRequest.cancel(),this._currentRequest=null,this._currentRequestPosition=null)}},{key:"updateRanges",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return DJ(this,void 0,void 0,fn().mark((function t(){var i,r,o,a,s,u=this;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._editor.hasModel()){t.next=3;break}return this.clearRanges(),t.abrupt("return");case 3:if(i=this._editor.getPosition(),!(!this._enabled&&!e||this._editor.getSelections().length>1)){t.next=7;break}return this.clearRanges(),t.abrupt("return");case 7:if(r=this._editor.getModel(),o=r.getVersionId(),!this._currentRequestPosition||this._currentRequestModelVersion!==o){t.next=16;break}if(!i.equals(this._currentRequestPosition)){t.next=12;break}return t.abrupt("return");case 12:if(!(this._currentDecorations&&this._currentDecorations.length>0)){t.next=16;break}if(!(a=r.getDecorationRange(this._currentDecorations[0]))||!a.containsPosition(i)){t.next=16;break}return t.abrupt("return");case 16:return this._currentRequestPosition=i,this._currentRequestModelVersion=o,s=(0,zB.PG)((function(e){return DJ(u,void 0,void 0,fn().mark((function t(){var a,u,l,c,d,h,f;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,AJ(r,i,e);case 3:if(a=t.sent,s===this._currentRequest){t.next=6;break}return t.abrupt("return");case 6:if(this._currentRequest=null,o===r.getVersionId()){t.next=9;break}return t.abrupt("return");case 9:u=[],(null===a||void 0===a?void 0:a.ranges)&&(u=a.ranges),this._currentWordPattern=(null===a||void 0===a?void 0:a.wordPattern)||this._languageWordPattern,l=!1,c=0,d=u.length;case 14:if(!(c<d)){t.next=22;break}if(!YB.e.containsPosition(u[c],i)){t.next=19;break}return l=!0,0!==c&&(h=u[c],u.splice(c,1),u.unshift(h)),t.abrupt("break",22);case 19:c++,t.next=14;break;case 22:if(l){t.next=25;break}return this.clearRanges(),t.abrupt("return");case 25:f=u.map((function(e){return{range:e,options:n.DECORATION}})),this._visibleContextKey.set(!0),this._currentDecorations=this._editor.deltaDecorations(this._currentDecorations,f),t.next=34;break;case 30:t.prev=30,t.t0=t.catch(0),(0,LB.VV)(t.t0)||(0,LB.dL)(t.t0),this._currentRequest!==s&&this._currentRequest||this.clearRanges();case 34:case"end":return t.stop()}}),t,this,[[0,30]])})))})),this._currentRequest=s,t.abrupt("return",s);case 21:case"end":return t.stop()}}),t,this)})))}}],[{key:"get",value:function(e){return e.getContribution(n.ID)}}]),n}(WB.JT);TJ.ID="editor.contrib.linkedEditing",TJ.DECORATION=KB.qx.register({stickiness:0,className:MJ}),TJ=LJ([EJ(1,kB.i6)],TJ);var IJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.linkedEditing",label:yB.N("linkedEditing.label","Start Linked Editing"),alias:"Start Linked Editing",precondition:kB.Ao.and(bB.u.writable,bB.u.hasRenameProvider),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:3132,weight:100}})}return(0,J.Z)(n,[{key:"runCommand",value:function(e,t){var i=this,r=e.get(fz.$),o=Array.isArray(t)&&t||[void 0,void 0],a=(0,ne.Z)(o,2),s=a[0],u=a[1];return Mz.o.isUri(s)&&VB.L.isIPosition(u)?r.openCodeEditor({resource:s},r.getActiveCodeEditor()).then((function(e){e&&(e.setPosition(u),e.invokeWithinContext((function(t){return i.reportTelemetry(t,e),i.run(t,e)})))}),LB.dL):(0,Qz.Z)((0,Xz.Z)(n.prototype),"runCommand",this).call(this,e,t)}},{key:"run",value:function(e,t){var n=TJ.get(t);return n?Promise.resolve(n.updateRanges(!0)):Promise.resolve()}}]),n}(_B.R6),OJ=_B._l.bindToContribution(TJ.get);function AJ(e,t,n){var i=this,r=Iz.id.ordered(e);return(0,zB.Ps)(r.map((function(r){return function(){return DJ(i,void 0,void 0,fn().mark((function i(){return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,r.provideLinkedEditingRanges(e,t,n);case 3:return i.abrupt("return",i.sent);case 6:return i.prev=6,i.t0=i.catch(0),(0,LB.Cp)(i.t0),i.abrupt("return",void 0);case 10:case"end":return i.stop()}}),i,null,[[0,6]])})))}})),(function(e){return!!e&&SB.Of(null===e||void 0===e?void 0:e.ranges)}))}(0,_B.fK)(new OJ({id:"cancelLinkedEditingInput",precondition:NJ,handler:function(e){return e.clearRanges()},kbOpts:{kbExpr:bB.u.editorTextFocus,weight:199,primary:9,secondary:[1033]}}));var RJ=(0,GB.P6)("editor.linkedEditingBackground",{dark:MV.Il.fromHex("#f00").transparent(.3),light:MV.Il.fromHex("#f00").transparent(.3),hc:MV.Il.fromHex("#f00").transparent(.3)},yB.N("editorLinkedEditingBackground","Background color when the editor auto renames on type."));(0,$B.Ic)((function(e,t){var n=e.getColor(RJ);n&&t.addRule(".monaco-editor .".concat(MJ," { background: ").concat(n,"; border-left-color: ").concat(n,"; }"))})),(0,_B.sb)("_executeLinkedEditingProvider",(function(e,t){return AJ(e,t,Lz.T.None)})),(0,_B._K)(TJ.ID,TJ),(0,_B.Qr)(IJ);var PJ=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},ZJ=function(){function e(t,n){(0,X.Z)(this,e),this._link=t,this._provider=n}return(0,J.Z)(e,[{key:"toJSON",value:function(){return{range:this.range,url:this.url,tooltip:this.tooltip}}},{key:"range",get:function(){return this._link.range}},{key:"url",get:function(){return this._link.url}},{key:"tooltip",get:function(){return this._link.tooltip}},{key:"resolve",value:function(e){return PJ(this,void 0,void 0,fn().mark((function t(){var n=this;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this._link.url){t.next=2;break}return t.abrupt("return",this._link.url);case 2:if("function"!==typeof this._provider.resolveLink){t.next=4;break}return t.abrupt("return",Promise.resolve(this._provider.resolveLink(this._link,e)).then((function(t){return n._link=t||n._link,n._link.url?n.resolve(e):Promise.reject(new Error("missing"))})));case 4:return t.abrupt("return",Promise.reject(new Error("missing")));case 5:case"end":return t.stop()}}),t,this)})))}}]),e}(),FJ=function(){function e(t){var n=this;(0,X.Z)(this,e),this._disposables=new WB.SL;var i,r=[],o=(0,Na.Z)(t);try{var a=function(){var t=(0,ne.Z)(i.value,2),o=t[0],a=t[1],s=o.links.map((function(e){return new ZJ(e,a)}));r=e._union(r,s),(0,WB.Wf)(o)&&n._disposables.add(o)};for(o.s();!(i=o.n()).done;)a()}catch(s){o.e(s)}finally{o.f()}this.links=r}return(0,J.Z)(e,[{key:"dispose",value:function(){this._disposables.dispose(),this.links.length=0}}],[{key:"_union",value:function(e,t){var n,i,r,o,a=[];for(n=0,r=0,i=e.length,o=t.length;n<i&&r<o;){var s=e[n],u=t[r];if(YB.e.areIntersectingOrTouching(s.range,u.range))n++;else YB.e.compareRangesUsingStarts(s.range,u.range)<0?(a.push(s),n++):(a.push(u),r++)}for(;n<i;n++)a.push(e[n]);for(;r<o;r++)a.push(t[r]);return a}}]),e}();function jJ(e,t){var n=[],i=Iz.pM.ordered(e).reverse().map((function(i,r){return Promise.resolve(i.provideLinks(e,t)).then((function(e){e&&(n[r]=[e,i])}),LB.Cp)}));return Promise.all(i).then((function(){var e=new FJ((0,SB.kX)(n));return t.isCancellationRequested?(e.dispose(),new FJ([])):e}))}jz.P.registerCommand("_executeLinkProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return PJ(void 0,void 0,void 0,fn().mark((function t(){var i,r,o,a,s,u;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=n[0],r=n[1],(0,oV.p_)(i instanceof Mz.o),"number"!==typeof r&&(r=0),o=e.get(Oz.q).getModel(i)){t.next=6;break}return t.abrupt("return",[]);case 6:return t.next=8,jJ(o,Lz.T.None);case 8:if(a=t.sent){t.next=11;break}return t.abrupt("return",[]);case 11:s=0;case 12:if(!(s<Math.min(r,a.links.length))){t.next=18;break}return t.next=15,a.links[s].resolve(Lz.T.None);case 15:s++,t.next=12;break;case 18:return u=a.links.slice(0),a.dispose(),t.abrupt("return",u);case 21:case"end":return t.stop()}}),t)})))}));var HJ=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},BJ=function(e,t){return function(n,i){t(n,i,e)}},zJ=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};var WJ={general:KB.qx.register({stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link"}),active:KB.qx.register({stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link-active"})},VJ=function(){function e(t,n){(0,X.Z)(this,e),this.link=t,this.decorationId=n}return(0,J.Z)(e,[{key:"activate",value:function(t,n){t.changeDecorationOptions(this.decorationId,e._getOptions(this.link,n,!0))}},{key:"deactivate",value:function(t,n){t.changeDecorationOptions(this.decorationId,e._getOptions(this.link,n,!1))}}],[{key:"decoration",value:function(t,n){return{range:t.range,options:e._getOptions(t,n,!1)}}},{key:"_getOptions",value:function(e,t,n){var i=Object.assign({},n?WJ.active:WJ.general);return i.hoverMessage=function(e,t){var n=e.url&&/^command:/i.test(e.url.toString()),i=e.tooltip?e.tooltip:n?yB.N("links.navigate.executeCmd","Execute command"):yB.N("links.navigate.follow","Follow link"),r=t?dz.dz?yB.N("links.navigate.kb.meta.mac","cmd + click"):yB.N("links.navigate.kb.meta","ctrl + click"):dz.dz?yB.N("links.navigate.kb.alt.mac","option + click"):yB.N("links.navigate.kb.alt","alt + click");if(e.url){var o="";if(/^command:/i.test(e.url.toString())){var a=e.url.toString().match(/^command:([^?#]+)/);if(a){var s=a[1],u=yB.N("tooltip.explanation","Execute command {0}",s);o=' "'.concat(u,'"')}}return new EB("",!0).appendMarkdown("[".concat(i,"](").concat(e.url.toString(!0)).concat(o,") (").concat(r,")"))}return(new EB).appendText("".concat(i," (").concat(r,")"))}(e,t),i}}]),e}(),YJ=function(){function e(t,n,i){var r=this;(0,X.Z)(this,e),this.listenersToRemove=new WB.SL,this.editor=t,this.openerService=n,this.notificationService=i;var o=new Rq(t);this.listenersToRemove.add(o),this.listenersToRemove.add(o.onMouseMoveOrRelevantKeyDown((function(e){var t=(0,ne.Z)(e,2),n=t[0],i=t[1];r._onEditorMouseMove(n,i)}))),this.listenersToRemove.add(o.onExecute((function(e){r.onEditorMouseUp(e)}))),this.listenersToRemove.add(o.onCancel((function(e){r.cleanUpActiveLinkDecoration()}))),this.enabled=t.getOption(59),this.listenersToRemove.add(t.onDidChangeConfiguration((function(e){var n=t.getOption(59);r.enabled!==n&&(r.enabled=n,r.updateDecorations([]),r.stop(),r.beginCompute())}))),this.listenersToRemove.add(t.onDidChangeModelContent((function(e){return r.onChange()}))),this.listenersToRemove.add(t.onDidChangeModel((function(e){return r.onModelChanged()}))),this.listenersToRemove.add(t.onDidChangeModelLanguage((function(e){return r.onModelModeChanged()}))),this.listenersToRemove.add(Iz.pM.onDidChange((function(e){return r.onModelModeChanged()}))),this.timeout=new zB._F,this.computePromise=null,this.activeLinksList=null,this.currentOccurrences={},this.activeLinkDecorationId=null,this.beginCompute()}return(0,J.Z)(e,[{key:"onModelChanged",value:function(){this.currentOccurrences={},this.activeLinkDecorationId=null,this.stop(),this.beginCompute()}},{key:"onModelModeChanged",value:function(){this.stop(),this.beginCompute()}},{key:"onChange",value:function(){var t=this;this.timeout.setIfNotSet((function(){return t.beginCompute()}),e.RECOMPUTE_TIME)}},{key:"beginCompute",value:function(){return zJ(this,void 0,void 0,fn().mark((function e(){var t;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.editor.hasModel()&&this.enabled){e.next=2;break}return e.abrupt("return");case 2:if(t=this.editor.getModel(),Iz.pM.has(t)){e.next=5;break}return e.abrupt("return");case 5:return this.activeLinksList&&(this.activeLinksList.dispose(),this.activeLinksList=null),this.computePromise=zB.PG((function(e){return jJ(t,e)})),e.prev=7,e.next=10,this.computePromise;case 10:this.activeLinksList=e.sent,this.updateDecorations(this.activeLinksList.links),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(7),(0,LB.dL)(e.t0);case 17:return e.prev=17,this.computePromise=null,e.finish(17);case 20:case"end":return e.stop()}}),e,this,[[7,14,17,20]])})))}},{key:"updateDecorations",value:function(e){for(var t="altKey"===this.editor.getOption(66),n=[],i=Object.keys(this.currentOccurrences),r=0,o=i.length;r<o;r++){var a=i[r],s=this.currentOccurrences[a];n.push(s.decorationId)}var u=[];if(e){var l,c=(0,Na.Z)(e);try{for(c.s();!(l=c.n()).done;){var d=l.value;u.push(VJ.decoration(d,t))}}catch(v){c.e(v)}finally{c.f()}}var h=this.editor.deltaDecorations(n,u);this.currentOccurrences={},this.activeLinkDecorationId=null;for(var f=0,p=h.length;f<p;f++){var g=new VJ(e[f],h[f]);this.currentOccurrences[g.decorationId]=g}}},{key:"_onEditorMouseMove",value:function(e,t){var n=this,i="altKey"===this.editor.getOption(66);if(this.isEnabled(e,t)){this.cleanUpActiveLinkDecoration();var r=this.getLinkOccurrence(e.target.position);r&&this.editor.changeDecorations((function(e){r.activate(e,i),n.activeLinkDecorationId=r.decorationId}))}else this.cleanUpActiveLinkDecoration()}},{key:"cleanUpActiveLinkDecoration",value:function(){var e="altKey"===this.editor.getOption(66);if(this.activeLinkDecorationId){var t=this.currentOccurrences[this.activeLinkDecorationId];t&&this.editor.changeDecorations((function(n){t.deactivate(n,e)})),this.activeLinkDecorationId=null}}},{key:"onEditorMouseUp",value:function(e){if(this.isEnabled(e)){var t=this.getLinkOccurrence(e.target.position);t&&this.openLinkOccurrence(t,e.hasSideBySideModifier,!0)}}},{key:"openLinkOccurrence",value:function(e,t){var n=this,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.openerService){var r=e.link;r.resolve(Lz.T.None).then((function(e){if("string"===typeof e&&n.editor.hasModel()){var r=n.editor.getModel().uri;if(r.scheme===JV.lg.file&&e.startsWith("".concat(JV.lg.file,":"))){var o=Mz.o.parse(e);if(o.scheme===JV.lg.file){var a=PW.z_(o),s=null;a.startsWith("/./")?s=".".concat(a.substr(1)):a.startsWith("//./")&&(s=".".concat(a.substr(2))),s&&(e=PW.Vo(r,s))}}}return n.openerService.open(e,{openToSide:t,fromUserGesture:i,allowContributedOpeners:!0,allowCommands:!0})}),(function(e){var t=e instanceof Error?e.message:e;"invalid"===t?n.notificationService.warn(yB.N("invalid.url","Failed to open this link because it is not well-formed: {0}",r.url.toString())):"missing"===t?n.notificationService.warn(yB.N("missing.url","Failed to open this link because its target is missing.")):(0,LB.dL)(e)}))}}},{key:"getLinkOccurrence",value:function(e){if(!this.editor.hasModel()||!e)return null;var t,n=this.editor.getModel().getDecorationsInRange({startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column},0,!0),i=(0,Na.Z)(n);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=this.currentOccurrences[r.id];if(o)return o}}catch(a){i.e(a)}finally{i.f()}return null}},{key:"isEnabled",value:function(e,t){return Boolean(6===e.target.type&&(e.hasTriggerModifier||t&&t.keyCodeIsTriggerKey))}},{key:"stop",value:function(){var e;this.timeout.cancel(),this.activeLinksList&&(null===(e=this.activeLinksList)||void 0===e||e.dispose(),this.activeLinksList=null),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}},{key:"dispose",value:function(){this.listenersToRemove.dispose(),this.stop(),this.timeout.dispose()}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();YJ.ID="editor.linkDetector",YJ.RECOMPUTE_TIME=1e3,YJ=HJ([BJ(1,XV.v4),BJ(2,AW.lT)],YJ);var UJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.openLink",label:yB.N("label","Open Link"),alias:"Open Link",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=YJ.get(t);if(n&&t.hasModel()){var i,r=t.getSelections(),o=(0,Na.Z)(r);try{for(o.s();!(i=o.n()).done;){var a=i.value,s=n.getLinkOccurrence(a.getEndPosition());s&&n.openLinkOccurrence(s,!1)}}catch(u){o.e(u)}finally{o.f()}}}}]),n}(_B.R6);(0,_B._K)(YJ.ID,YJ),(0,_B.Qr)(UJ),(0,$B.Ic)((function(e,t){var n=e.getColor(GB._Y);n&&t.addRule(".monaco-editor .detected-link-active { color: ".concat(n," !important; }"))}));var KJ=n(55561);function qJ(e,t){var n=t.filter((function(t){return!e.find((function(e){return e.equals(t)}))}));if(n.length>=1){var i=n.map((function(e){return"line ".concat(e.viewState.position.lineNumber," column ").concat(e.viewState.position.column)})).join(", "),r=1===n.length?yB.N("cursorAdded","Cursor added: {0}",i):yB.N("cursorsAdded","Cursors added: {0}",i);(0,IB.i7)(r)}}var GJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.insertCursorAbove",label:yB.N("mutlicursor.insertAbove","Add Cursor Above"),alias:"Add Cursor Above",precondition:void 0,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:2576,linux:{primary:1552,secondary:[3088]},weight:100},menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"3_multi",title:yB.N({key:"miInsertCursorAbove",comment:["&& denotes a mnemonic"]},"&&Add Cursor Above"),order:2}})}return(0,J.Z)(n,[{key:"run",value:function(e,t,n){if(t.hasModel()){var i=n&&!0===n.logicalLine,r=t._getViewModel();if(!r.cursorConfig.readOnly){r.pushStackElement();var o=r.getCursorStates();r.setCursorStates(n.source,3,KJ.P.addCursorUp(r,o,i)),r.revealTopMostCursor(n.source),qJ(o,r.getCursorStates())}}}}]),n}(_B.R6),$J=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.insertCursorBelow",label:yB.N("mutlicursor.insertBelow","Add Cursor Below"),alias:"Add Cursor Below",precondition:void 0,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:2578,linux:{primary:1554,secondary:[3090]},weight:100},menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"3_multi",title:yB.N({key:"miInsertCursorBelow",comment:["&& denotes a mnemonic"]},"A&&dd Cursor Below"),order:3}})}return(0,J.Z)(n,[{key:"run",value:function(e,t,n){if(t.hasModel()){var i=n&&!0===n.logicalLine,r=t._getViewModel();if(!r.cursorConfig.readOnly){r.pushStackElement();var o=r.getCursorStates();r.setCursorStates(n.source,3,KJ.P.addCursorDown(r,o,i)),r.revealBottomMostCursor(n.source),qJ(o,r.getCursorStates())}}}}]),n}(_B.R6),QJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.insertCursorAtEndOfEachLineSelected",label:yB.N("mutlicursor.insertAtEndOfEachLineSelected","Add Cursors to Line Ends"),alias:"Add Cursors to Line Ends",precondition:void 0,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:1575,weight:100},menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"3_multi",title:yB.N({key:"miInsertCursorAtEndOfEachLineSelected",comment:["&& denotes a mnemonic"]},"Add C&&ursors to Line Ends"),order:4}})}return(0,J.Z)(n,[{key:"getCursorsForSelection",value:function(e,t,n){if(!e.isEmpty()){for(var i=e.startLineNumber;i<e.endLineNumber;i++){var r=t.getLineMaxColumn(i);n.push(new wB.Y(i,r,i,r))}e.endColumn>1&&n.push(new wB.Y(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn))}}},{key:"run",value:function(e,t){var n=this;if(t.hasModel()){var i=t.getModel(),r=t.getSelections(),o=t._getViewModel(),a=o.getCursorStates(),s=[];r.forEach((function(e){return n.getCursorsForSelection(e,i,s)})),s.length>0&&t.setSelections(s),qJ(a,o.getCursorStates())}}}]),n}(_B.R6),XJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.addCursorsToBottom",label:yB.N("mutlicursor.addCursorsToBottom","Add Cursors To Bottom"),alias:"Add Cursors To Bottom",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t){if(t.hasModel()){for(var n=t.getSelections(),i=t.getModel().getLineCount(),r=[],o=n[0].startLineNumber;o<=i;o++)r.push(new wB.Y(o,n[0].startColumn,o,n[0].endColumn));var a=t._getViewModel(),s=a.getCursorStates();r.length>0&&t.setSelections(r),qJ(s,a.getCursorStates())}}}]),n}(_B.R6),JJ=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.addCursorsToTop",label:yB.N("mutlicursor.addCursorsToTop","Add Cursors To Top"),alias:"Add Cursors To Top",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t){if(t.hasModel()){for(var n=t.getSelections(),i=[],r=n[0].startLineNumber;r>=1;r--)i.push(new wB.Y(r,n[0].startColumn,r,n[0].endColumn));var o=t._getViewModel(),a=o.getCursorStates();i.length>0&&t.setSelections(i),qJ(a,o.getCursorStates())}}}]),n}(_B.R6),e0=(0,J.Z)((function e(t,n,i){(0,X.Z)(this,e),this.selections=t,this.revealRange=n,this.revealScrollType=i})),t0=function(){function e(t,n,i,r,o,a,s){(0,X.Z)(this,e),this._editor=t,this.findController=n,this.isDisconnectedFromFindController=i,this.searchText=r,this.wholeWord=o,this.matchCase=a,this.currentMatch=s}return(0,J.Z)(e,[{key:"addSelectionToNextFindMatch",value:function(){if(!this._editor.hasModel())return null;var e=this._getNextMatch();if(!e)return null;var t=this._editor.getSelections();return new e0(t.concat(e),e,0)}},{key:"moveSelectionToNextFindMatch",value:function(){if(!this._editor.hasModel())return null;var e=this._getNextMatch();if(!e)return null;var t=this._editor.getSelections();return new e0(t.slice(0,t.length-1).concat(e),e,0)}},{key:"_getNextMatch",value:function(){if(!this._editor.hasModel())return null;if(this.currentMatch){var e=this.currentMatch;return this.currentMatch=null,e}this.findController.highlightFindOptions();var t=this._editor.getSelections(),n=t[t.length-1],i=this._editor.getModel().findNextMatch(this.searchText,n.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(113):null,!1);return i?new wB.Y(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}},{key:"addSelectionToPreviousFindMatch",value:function(){if(!this._editor.hasModel())return null;var e=this._getPreviousMatch();if(!e)return null;var t=this._editor.getSelections();return new e0(t.concat(e),e,0)}},{key:"moveSelectionToPreviousFindMatch",value:function(){if(!this._editor.hasModel())return null;var e=this._getPreviousMatch();if(!e)return null;var t=this._editor.getSelections();return new e0(t.slice(0,t.length-1).concat(e),e,0)}},{key:"_getPreviousMatch",value:function(){if(!this._editor.hasModel())return null;if(this.currentMatch){var e=this.currentMatch;return this.currentMatch=null,e}this.findController.highlightFindOptions();var t=this._editor.getSelections(),n=t[t.length-1],i=this._editor.getModel().findPreviousMatch(this.searchText,n.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(113):null,!1);return i?new wB.Y(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}},{key:"selectAll",value:function(){return this._editor.hasModel()?(this.findController.highlightFindOptions(),this._editor.getModel().findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getOption(113):null,!1,1073741824)):[]}}],[{key:"create",value:function(t,n){if(!t.hasModel())return null;var i=n.getState();if(!t.hasTextFocus()&&i.isRevealed&&i.searchString.length>0)return new e(t,n,!1,i.searchString,i.wholeWord,i.matchCase,null);var r,o,a=!1,s=t.getSelections();1===s.length&&s[0].isEmpty()?(a=!0,r=!0,o=!0):(r=i.wholeWord,o=i.matchCase);var u,l=t.getSelection(),c=null;if(l.isEmpty()){var d=t.getConfiguredWordAtPosition(l.getStartPosition());if(!d)return null;u=d.word,c=new wB.Y(l.startLineNumber,d.startColumn,l.startLineNumber,d.endColumn)}else u=t.getModel().getValueInRange(l).replace(/\r\n/g,"\n");return new e(t,n,a,u,r,o,c)}}]),e}(),n0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this))._sessionDispose=i._register(new WB.SL),i._editor=e,i._ignoreSelectionChange=!1,i._session=null,i}return(0,J.Z)(n,[{key:"dispose",value:function(){this._endSession(),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"_beginSessionIfNeeded",value:function(e){var t=this;if(!this._session){var n=t0.create(this._editor,e);if(!n)return;this._session=n;var i={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(i.wholeWordOverride=1,i.matchCaseOverride=1,i.isRegexOverride=2),e.getState().change(i,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection((function(e){t._ignoreSelectionChange||t._endSession()}))),this._sessionDispose.add(this._editor.onDidBlurEditorText((function(){t._endSession()}))),this._sessionDispose.add(e.getState().onFindReplaceStateChange((function(e){(e.matchCase||e.wholeWord)&&t._endSession()})))}}},{key:"_endSession",value:function(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){this._session.findController.getState().change({wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0},!1)}this._session=null}},{key:"_setSelections",value:function(e){this._ignoreSelectionChange=!0,this._editor.setSelections(e),this._ignoreSelectionChange=!1}},{key:"_expandEmptyToWord",value:function(e,t){if(!t.isEmpty())return t;var n=this._editor.getConfiguredWordAtPosition(t.getStartPosition());return n?new wB.Y(t.startLineNumber,n.startColumn,t.startLineNumber,n.endColumn):t}},{key:"_applySessionResult",value:function(e){e&&(this._setSelections(e.selections),e.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(e.revealRange,e.revealScrollType))}},{key:"getSession",value:function(e){return this._session}},{key:"addSelectionToNextFindMatch",value:function(e){if(this._editor.hasModel()){if(!this._session){var t=this._editor.getSelections();if(t.length>1){var n=e.getState().matchCase;if(!h0(this._editor.getModel(),t,n)){for(var i=this._editor.getModel(),r=[],o=0,a=t.length;o<a;o++)r[o]=this._expandEmptyToWord(i,t[o]);return void this._editor.setSelections(r)}}}this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToNextFindMatch())}}},{key:"addSelectionToPreviousFindMatch",value:function(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToPreviousFindMatch())}},{key:"moveSelectionToNextFindMatch",value:function(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToNextFindMatch())}},{key:"moveSelectionToPreviousFindMatch",value:function(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToPreviousFindMatch())}},{key:"selectAll",value:function(e){if(this._editor.hasModel()){var t=null,n=e.getState();if(n.isRevealed&&n.searchString.length>0&&n.isRegex)t=this._editor.getModel().findMatches(n.searchString,!0,n.isRegex,n.matchCase,n.wholeWord?this._editor.getOption(113):null,!1,1073741824);else{if(this._beginSessionIfNeeded(e),!this._session)return;t=this._session.selectAll()}if(n.searchScope){var i=n.searchScope,r=[];t.forEach((function(e){i.forEach((function(t){e.range.endLineNumber<=t.endLineNumber&&e.range.startLineNumber>=t.startLineNumber&&r.push(e)}))})),t=r}if(t.length>0){for(var o=this._editor.getSelection(),a=0,s=t.length;a<s;a++){var u=t[a];if(u.range.intersectRanges(o)){t[a]=t[0],t[0]=u;break}}this._setSelections(t.map((function(e){return new wB.Y(e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn)})))}}}}],[{key:"get",value:function(e){return e.getContribution(n.ID)}}]),n}(WB.JT);n0.ID="editor.contrib.multiCursorController";var i0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=n0.get(t);if(n){var i=z$.get(t);if(i){var r=t._getViewModel();if(r){var o=r.getCursorStates();this._run(n,i),qJ(o,r.getCursorStates())}}}}}]),n}(_B.R6),r0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.addSelectionToNextFindMatch",label:yB.N("addSelectionToNextFindMatch","Add Selection To Next Find Match"),alias:"Add Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:2082,weight:100},menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"3_multi",title:yB.N({key:"miAddSelectionToNextFindMatch",comment:["&& denotes a mnemonic"]},"Add &&Next Occurrence"),order:5}})}return(0,J.Z)(n,[{key:"_run",value:function(e,t){e.addSelectionToNextFindMatch(t)}}]),n}(i0),o0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.addSelectionToPreviousFindMatch",label:yB.N("addSelectionToPreviousFindMatch","Add Selection To Previous Find Match"),alias:"Add Selection To Previous Find Match",precondition:void 0,menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"3_multi",title:yB.N({key:"miAddSelectionToPreviousFindMatch",comment:["&& denotes a mnemonic"]},"Add P&&revious Occurrence"),order:6}})}return(0,J.Z)(n,[{key:"_run",value:function(e,t){e.addSelectionToPreviousFindMatch(t)}}]),n}(i0),a0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.moveSelectionToNextFindMatch",label:yB.N("moveSelectionToNextFindMatch","Move Last Selection To Next Find Match"),alias:"Move Last Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:(0,CB.gx)(2089,2082),weight:100}})}return(0,J.Z)(n,[{key:"_run",value:function(e,t){e.moveSelectionToNextFindMatch(t)}}]),n}(i0),s0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.moveSelectionToPreviousFindMatch",label:yB.N("moveSelectionToPreviousFindMatch","Move Last Selection To Previous Find Match"),alias:"Move Last Selection To Previous Find Match",precondition:void 0})}return(0,J.Z)(n,[{key:"_run",value:function(e,t){e.moveSelectionToPreviousFindMatch(t)}}]),n}(i0),u0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.selectHighlights",label:yB.N("selectAllOccurrencesOfFindMatch","Select All Occurrences of Find Match"),alias:"Select All Occurrences of Find Match",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:3114,weight:100},menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"3_multi",title:yB.N({key:"miSelectHighlights",comment:["&& denotes a mnemonic"]},"Select All &&Occurrences"),order:7}})}return(0,J.Z)(n,[{key:"_run",value:function(e,t){e.selectAll(t)}}]),n}(i0),l0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.changeAll",label:yB.N("changeAll.label","Change All Occurrences"),alias:"Change All Occurrences",precondition:kB.Ao.and(bB.u.writable,bB.u.editorTextFocus),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:2108,weight:100},contextMenuOpts:{group:"1_modification",order:1.2}})}return(0,J.Z)(n,[{key:"_run",value:function(e,t){e.selectAll(t)}}]),n}(i0),c0=function(){function e(t,n,i,r){(0,X.Z)(this,e),this.searchText=t,this.matchCase=n,this.wordSeparators=i,this.modelVersionId=r}return(0,J.Z)(e,null,[{key:"softEquals",value:function(e,t){return!e&&!t||!(!e||!t)&&(e.searchText===t.searchText&&e.matchCase===t.matchCase&&e.wordSeparators===t.wordSeparators&&e.modelVersionId===t.modelVersionId)}}]),e}(),d0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this)).editor=e,i._isEnabled=e.getOption(94),i.decorations=[],i.updateSoon=i._register(new zB.pY((function(){return i._update()}),300)),i.state=null,i._register(e.onDidChangeConfiguration((function(t){i._isEnabled=e.getOption(94)}))),i._register(e.onDidChangeCursorSelection((function(e){i._isEnabled&&(e.selection.isEmpty()?3===e.reason?(i.state&&i._setState(null),i.updateSoon.schedule()):i._setState(null):i._update())}))),i._register(e.onDidChangeModel((function(e){i._setState(null)}))),i._register(e.onDidChangeModelContent((function(e){i._isEnabled&&i.updateSoon.schedule()}))),i._register(z$.get(e).getState().onFindReplaceStateChange((function(e){i._update()}))),i}return(0,J.Z)(n,[{key:"_update",value:function(){this._setState(n._createState(this._isEnabled,this.editor))}},{key:"_setState",value:function(e){if(c0.softEquals(this.state,e))this.state=e;else if(this.state=e,this.state){if(this.editor.hasModel()){var t=this.editor.getModel();if(!t.isTooLargeForTokenization()){var i=Iz.vH.has(t)&&this.editor.getOption(68),r=t.findMatches(this.state.searchText,!0,!1,this.state.matchCase,this.state.wordSeparators,!1).map((function(e){return e.range}));r.sort(YB.e.compareRangesUsingStarts);var o=this.editor.getSelections();o.sort(YB.e.compareRangesUsingStarts);for(var a=[],s=0,u=0,l=r.length,c=o.length;s<l;){var d=r[s];if(u>=c)a.push(d),s++;else{var h=YB.e.compareRangesUsingStarts(d,o[u]);h<0?(!o[u].isEmpty()&&YB.e.areIntersecting(d,o[u])||a.push(d),s++):(h>0||s++,u++)}}var f=a.map((function(e){return{range:e,options:i?n._SELECTION_HIGHLIGHT:n._SELECTION_HIGHLIGHT_OVERVIEW}}));this.decorations=this.editor.deltaDecorations(this.decorations,f)}}}else this.decorations=this.editor.deltaDecorations(this.decorations,[])}},{key:"dispose",value:function(){this._setState(null),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}}],[{key:"_createState",value:function(e,t){if(!e)return null;if(!t.hasModel())return null;var n=t.getSelection();if(n.startLineNumber!==n.endLineNumber)return null;var i=n0.get(t);if(!i)return null;var r=z$.get(t);if(!r)return null;var o=i.getSession(r);if(!o){var a=t.getSelections();if(a.length>1){var s=r.getState().matchCase;if(!h0(t.getModel(),a,s))return null}o=t0.create(t,r)}if(!o)return null;if(o.currentMatch)return null;if(/^[ \t]+$/.test(o.searchText))return null;if(o.searchText.length>200)return null;var u=r.getState(),l=u.matchCase;if(u.isRevealed){var c=u.searchString;l||(c=c.toLowerCase());var d=o.searchText;if(l||(d=d.toLowerCase()),c===d&&o.matchCase===u.matchCase&&o.wholeWord===u.wholeWord&&!u.isRegex)return null}return new c0(o.searchText,o.matchCase,o.wholeWord?t.getOption(113):null,t.getModel().getVersionId())}}]),n}(WB.JT);function h0(e,t,n){for(var i=f0(e,t[0],!n),r=1,o=t.length;r<o;r++){var a=t[r];if(a.isEmpty())return!1;if(i!==f0(e,a,!n))return!1}return!0}function f0(e,t,n){var i=e.getValueInRange(t);return n?i.toLowerCase():i}d0.ID="editor.contrib.selectionHighlighter",d0._SELECTION_HIGHLIGHT_OVERVIEW=KB.qx.register({stickiness:1,className:"selectionHighlight",overviewRuler:{color:(0,$B.EN)(GB.SP),position:UB.sh.Center}}),d0._SELECTION_HIGHLIGHT=KB.qx.register({stickiness:1,className:"selectionHighlight"}),(0,_B._K)(n0.ID,n0),(0,_B._K)(d0.ID,d0),(0,_B.Qr)(GJ),(0,_B.Qr)($J),(0,_B.Qr)(QJ),(0,_B.Qr)(r0),(0,_B.Qr)(o0),(0,_B.Qr)(a0),(0,_B.Qr)(s0),(0,_B.Qr)(u0),(0,_B.Qr)(l0),(0,_B.Qr)(XJ),(0,_B.Qr)(JJ);var p0=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},g0={Visible:new kB.uy("parameterHintsVisible",!1),MultipleSignatures:new kB.uy("parameterHintsMultipleSignatures",!1)};function v0(e,t,n,i){return p0(this,void 0,void 0,fn().mark((function r(){var o,a,s,u,l;return fn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:o=Iz.nD.ordered(e),a=(0,Na.Z)(o),r.prev=2,a.s();case 4:if((s=a.n()).done){r.next=19;break}return u=s.value,r.prev=6,r.next=9,u.provideSignatureHelp(e,t,i,n);case 9:if(!(l=r.sent)){r.next=12;break}return r.abrupt("return",l);case 12:r.next=17;break;case 14:r.prev=14,r.t0=r.catch(6),(0,LB.Cp)(r.t0);case 17:r.next=4;break;case 19:r.next=24;break;case 21:r.prev=21,r.t1=r.catch(2),a.e(r.t1);case 24:return r.prev=24,a.f(),r.finish(24);case 27:return r.abrupt("return",void 0);case 28:case"end":return r.stop()}}),r,null,[[2,21,24,27],[6,14]])})))}jz.P.registerCommand("_executeSignatureHelpProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return p0(void 0,void 0,void 0,fn().mark((function t(){var i,r,o,a,s;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=n[0],r=n[1],o=n[2],(0,oV.p_)(Mz.o.isUri(i)),(0,oV.p_)(VB.L.isIPosition(r)),(0,oV.p_)("string"===typeof o||!o),t.next=6,e.get(SK.S).createModelReference(i);case 6:return a=t.sent,t.prev=7,t.next=10,v0(a.object.textEditorModel,VB.L.lift(r),{triggerKind:Iz.WW.Invoke,isRetrigger:!1,triggerCharacter:o},Lz.T.None);case 10:if(s=t.sent){t.next=13;break}return t.abrupt("return",void 0);case 13:return setTimeout((function(){return s.dispose()}),0),t.abrupt("return",s.value);case 15:return t.prev=15,a.dispose(),t.finish(15);case 18:case"end":return t.stop()}}),t,null,[[7,,15,18]])})))}));var m0,_0=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};!function(e){e.Default={type:0};var t=(0,J.Z)((function e(t,n){(0,X.Z)(this,e),this.request=t,this.previouslyActiveHints=n,this.type=2}));e.Pending=t;var n=(0,J.Z)((function e(t){(0,X.Z)(this,e),this.hints=t,this.type=1}));e.Active=n}(m0||(m0={}));var y0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.DEFAULT_DELAY;return(0,X.Z)(this,n),(i=t.call(this))._onChangedHints=i._register(new _W.Q5),i.onChangedHints=i._onChangedHints.event,i.triggerOnType=!1,i._state=m0.Default,i._pendingTriggers=[],i._lastSignatureHelpResult=i._register(new WB.XK),i.triggerChars=new eX.q,i.retriggerChars=new eX.q,i.triggerId=0,i.editor=e,i.throttledDelayer=new zB.vp(r),i._register(i.editor.onDidBlurEditorWidget((function(){return i.cancel()}))),i._register(i.editor.onDidChangeConfiguration((function(){return i.onEditorConfigurationChange()}))),i._register(i.editor.onDidChangeModel((function(e){return i.onModelChanged()}))),i._register(i.editor.onDidChangeModelLanguage((function(e){return i.onModelChanged()}))),i._register(i.editor.onDidChangeCursorSelection((function(e){return i.onCursorChange(e)}))),i._register(i.editor.onDidChangeModelContent((function(e){return i.onModelContentChange()}))),i._register(Iz.nD.onDidChange(i.onModelChanged,(0,Br.Z)(i))),i._register(i.editor.onDidType((function(e){return i.onDidType(e)}))),i.onEditorConfigurationChange(),i.onModelChanged(),i}return(0,J.Z)(n,[{key:"state",get:function(){return this._state},set:function(e){2===this._state.type&&this._state.request.cancel(),this._state=e}},{key:"cancel",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.state=m0.Default,this.throttledDelayer.cancel(),e||this._onChangedHints.fire(void 0)}},{key:"trigger",value:function(e,t){var n=this,i=this.editor.getModel();if(i&&Iz.nD.has(i)){var r=++this.triggerId;this._pendingTriggers.push(e),this.throttledDelayer.trigger((function(){return n.doTrigger(r)}),t).catch(LB.dL)}}},{key:"next",value:function(){if(1===this.state.type){var e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,n=t%e===e-1,i=this.editor.getOption(72).cycle;!(e<2||n)||i?this.updateActiveSignature(n&&i?0:t+1):this.cancel()}}},{key:"previous",value:function(){if(1===this.state.type){var e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,n=0===t,i=this.editor.getOption(72).cycle;!(e<2||n)||i?this.updateActiveSignature(n&&i?e-1:t-1):this.cancel()}}},{key:"updateActiveSignature",value:function(e){1===this.state.type&&(this.state=new m0.Active(Object.assign(Object.assign({},this.state.hints),{activeSignature:e})),this._onChangedHints.fire(this.state.hints))}},{key:"doTrigger",value:function(e){return _0(this,void 0,void 0,fn().mark((function t(){var n,i,r,o,a,s,u;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=1===this.state.type||2===this.state.type,i=this.getLastActiveHints(),this.cancel(!0),0!==this._pendingTriggers.length){t.next=5;break}return t.abrupt("return",!1);case 5:if(r=this._pendingTriggers.reduce(b0),this._pendingTriggers=[],o={triggerKind:r.triggerKind,triggerCharacter:r.triggerCharacter,isRetrigger:n,activeSignatureHelp:i},this.editor.hasModel()){t.next=10;break}return t.abrupt("return",!1);case 10:return a=this.editor.getModel(),s=this.editor.getPosition(),this.state=new m0.Pending((0,zB.PG)((function(e){return v0(a,s,o,e)})),i),t.prev=13,t.next=16,this.state.request;case 16:if(u=t.sent,e===this.triggerId){t.next=20;break}return null===u||void 0===u||u.dispose(),t.abrupt("return",!1);case 20:if(u&&u.value.signatures&&0!==u.value.signatures.length){t.next=27;break}return null===u||void 0===u||u.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),t.abrupt("return",!1);case 27:return this.state=new m0.Active(u.value),this._lastSignatureHelpResult.value=u,this._onChangedHints.fire(this.state.hints),t.abrupt("return",!0);case 31:t.next=38;break;case 33:return t.prev=33,t.t0=t.catch(13),e===this.triggerId&&(this.state=m0.Default),(0,LB.dL)(t.t0),t.abrupt("return",!1);case 38:case"end":return t.stop()}}),t,this,[[13,33]])})))}},{key:"getLastActiveHints",value:function(){switch(this.state.type){case 1:return this.state.hints;case 2:return this.state.previouslyActiveHints;default:return}}},{key:"isTriggered",get:function(){return 1===this.state.type||2===this.state.type||this.throttledDelayer.isTriggered()}},{key:"onModelChanged",value:function(){this.cancel(),this.triggerChars=new eX.q,this.retriggerChars=new eX.q;var e=this.editor.getModel();if(e){var t,n=(0,Na.Z)(Iz.nD.ordered(e));try{for(n.s();!(t=n.n()).done;){var i,r=t.value,o=(0,Na.Z)(r.signatureHelpTriggerCharacters||[]);try{for(o.s();!(i=o.n()).done;){var a=i.value;this.triggerChars.add(a.charCodeAt(0)),this.retriggerChars.add(a.charCodeAt(0))}}catch(c){o.e(c)}finally{o.f()}var s,u=(0,Na.Z)(r.signatureHelpRetriggerCharacters||[]);try{for(u.s();!(s=u.n()).done;){var l=s.value;this.retriggerChars.add(l.charCodeAt(0))}}catch(c){u.e(c)}finally{u.f()}}}catch(c){n.e(c)}finally{n.f()}}}},{key:"onDidType",value:function(e){if(this.triggerOnType){var t=e.length-1,n=e.charCodeAt(t);(this.triggerChars.has(n)||this.isTriggered&&this.retriggerChars.has(n))&&this.trigger({triggerKind:Iz.WW.TriggerCharacter,triggerCharacter:e.charAt(t)})}}},{key:"onCursorChange",value:function(e){"mouse"===e.source?this.cancel():this.isTriggered&&this.trigger({triggerKind:Iz.WW.ContentChange})}},{key:"onModelContentChange",value:function(){this.isTriggered&&this.trigger({triggerKind:Iz.WW.ContentChange})}},{key:"onEditorConfigurationChange",value:function(){this.triggerOnType=this.editor.getOption(72).enabled,this.triggerOnType||this.cancel()}},{key:"dispose",value:function(){this.cancel(!0),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}}]),n}(WB.JT);function b0(e,t){switch(t.triggerKind){case Iz.WW.Invoke:return t;case Iz.WW.ContentChange:return e;case Iz.WW.TriggerCharacter:default:return t}}y0.DEFAULT_DELAY=120;var w0=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},C0=function(e,t){return function(n,i){t(n,i,e)}},k0=aW.$,S0=(0,mU.q5)("parameter-hints-next",bW.lA.chevronDown,yB.N("parameterHintsNextIcon","Icon for show next parameter hint.")),x0=(0,mU.q5)("parameter-hints-previous",bW.lA.chevronUp,yB.N("parameterHintsPreviousIcon","Icon for show previous parameter hint.")),L0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;return(0,X.Z)(this,n),(a=t.call(this)).editor=e,a.renderDisposeables=a._register(new WB.SL),a.visible=!1,a.announcedLabel=null,a.allowEditorOverflow=!0,a.markdownRenderer=a._register(new GU({editor:e},o,r)),a.model=a._register(new y0(e)),a.keyVisible=g0.Visible.bindTo(i),a.keyMultipleSignatures=g0.MultipleSignatures.bindTo(i),a._register(a.model.onChangedHints((function(e){e?(a.show(),a.render(e)):a.hide()}))),a}return(0,J.Z)(n,[{key:"createParamaterHintDOMNodes",value:function(){var e=this,t=k0(".editor-widget.parameter-hints-widget"),n=aW.append(t,k0(".phwrapper"));n.tabIndex=-1;var i=aW.append(n,k0(".controls")),r=aW.append(i,k0(".button"+$B.kS.asCSSSelector(x0))),o=aW.append(i,k0(".overloads")),a=aW.append(i,k0(".button"+$B.kS.asCSSSelector(S0))),s=(0,mY.sT)((0,mY.jt)(r,"click"));this._register(s(this.previous,this));var u=(0,mY.sT)((0,mY.jt)(a,"click"));this._register(u(this.next,this));var l=k0(".body"),c=new qV.s$(l,{});this._register(c),n.appendChild(c.getDomNode());var d=aW.append(l,k0(".signature")),h=aW.append(l,k0(".docs"));t.style.userSelect="text",this.domNodes={element:t,signature:d,overloads:o,docs:h,scrollbar:c},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection((function(t){e.visible&&e.editor.layoutContentWidget(e)})));var f=function(){if(e.domNodes){var t=e.editor.getOption(40);e.domNodes.element.style.fontSize="".concat(t.fontSize,"px")}};f(),this._register(_W.ju.chain(this.editor.onDidChangeConfiguration.bind(this.editor)).filter((function(e){return e.hasChanged(40)})).on(f,null)),this._register(this.editor.onDidLayoutChange((function(t){return e.updateMaxHeight()}))),this.updateMaxHeight()}},{key:"show",value:function(){var e=this;this.visible||(this.domNodes||this.createParamaterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout((function(){e.domNodes&&e.domNodes.element.classList.add("visible")}),100),this.editor.layoutContentWidget(this))}},{key:"hide",value:function(){this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,this.domNodes&&this.domNodes.element.classList.remove("visible"),this.editor.layoutContentWidget(this))}},{key:"getPosition",value:function(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}},{key:"render",value:function(e){var t;if(this.renderDisposeables.clear(),this.domNodes){var n=e.signatures.length>1;this.domNodes.element.classList.toggle("multiple",n),this.keyMultipleSignatures.set(n),this.domNodes.signature.innerText="",this.domNodes.docs.innerText="";var i=e.signatures[e.activeSignature];if(i){var r=aW.append(this.domNodes.signature,k0(".code")),o=this.editor.getOption(40);r.style.fontSize="".concat(o.fontSize,"px"),r.style.fontFamily=o.fontFamily;var a=i.parameters.length>0,s=null!==(t=i.activeParameter)&&void 0!==t?t:e.activeParameter;if(a)this.renderParameters(r,i,s);else aW.append(r,k0("span")).textContent=i.label;var u=i.parameters[s];if(null===u||void 0===u?void 0:u.documentation){var l=k0("span.documentation");if("string"===typeof u.documentation)l.textContent=u.documentation;else{var c=this.renderMarkdownDocs(u.documentation);l.appendChild(c.element)}aW.append(this.domNodes.docs,k0("p",{},l))}if(void 0===i.documentation);else if("string"===typeof i.documentation)aW.append(this.domNodes.docs,k0("p",{},i.documentation));else{var d=this.renderMarkdownDocs(i.documentation);aW.append(this.domNodes.docs,d.element)}var h=this.hasDocs(i,u);if(this.domNodes.signature.classList.toggle("has-docs",h),this.domNodes.docs.classList.toggle("empty",!h),this.domNodes.overloads.textContent=String(e.activeSignature+1).padStart(e.signatures.length.toString().length,"0")+"/"+e.signatures.length,u){var f=this.getParameterLabel(i,s);this.announcedLabel!==f&&(IB.Z9(yB.N("hint","{0}, hint",f)),this.announcedLabel=f)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}}}},{key:"renderMarkdownDocs",value:function(e){var t=this,n=this.renderDisposeables.add(this.markdownRenderer.render(e,{asyncRenderCallback:function(){var e;null===(e=t.domNodes)||void 0===e||e.scrollbar.scanDomNode()}}));return n.element.classList.add("markdown-docs"),n}},{key:"hasDocs",value:function(e,t){return!!(t&&"string"===typeof t.documentation&&(0,oV.cW)(t.documentation).length>0)||(!!(t&&"object"===typeof t.documentation&&(0,oV.cW)(t.documentation).value.length>0)||(!!(e.documentation&&"string"===typeof e.documentation&&(0,oV.cW)(e.documentation).length>0)||!!(e.documentation&&"object"===typeof e.documentation&&(0,oV.cW)(e.documentation.value).length>0)))}},{key:"renderParameters",value:function(e,t,n){var i=this.getParameterLabelOffsets(t,n),r=(0,ne.Z)(i,2),o=r[0],a=r[1],s=document.createElement("span");s.textContent=t.label.substring(0,o);var u=document.createElement("span");u.textContent=t.label.substring(o,a),u.className="parameter active";var l=document.createElement("span");l.textContent=t.label.substring(a),aW.append(e,s,u,l)}},{key:"getParameterLabel",value:function(e,t){var n=e.parameters[t];return Array.isArray(n.label)?e.label.substring(n.label[0],n.label[1]):n.label}},{key:"getParameterLabelOffsets",value:function(e,t){var n=e.parameters[t];if(n){if(Array.isArray(n.label))return n.label;if(n.label.length){var i=new RegExp("(\\W|^)".concat((0,Dz.ec)(n.label),"(?=\\W|$)"),"g");i.test(e.label);var r=i.lastIndex-n.label.length;return r>=0?[r,i.lastIndex]:[0,0]}return[0,0]}return[0,0]}},{key:"next",value:function(){this.editor.focus(),this.model.next()}},{key:"previous",value:function(){this.editor.focus(),this.model.previous()}},{key:"cancel",value:function(){this.model.cancel()}},{key:"getDomNode",value:function(){return this.domNodes||this.createParamaterHintDOMNodes(),this.domNodes.element}},{key:"getId",value:function(){return n.ID}},{key:"trigger",value:function(e){this.model.trigger(e,0)}},{key:"updateMaxHeight",value:function(){if(this.domNodes){var e=Math.max(this.editor.getLayoutInfo().height/4,250),t="".concat(e,"px");this.domNodes.element.style.maxHeight=t;var n=this.domNodes.element.getElementsByClassName("phwrapper");n.length&&(n[0].style.maxHeight=t)}}}]),n}(WB.JT);L0.ID="editor.widget.parameterHintsWidget",L0=w0([C0(1,kB.i6),C0(2,XV.v4),C0(3,PV.h)],L0),(0,$B.Ic)((function(e,t){var n=e.getColor(GB.CN);if(n){var i=e.type===Jz.e.HIGH_CONTRAST?2:1;t.addRule(".monaco-editor .parameter-hints-widget { border: ".concat(i,"px solid ").concat(n,"; }")),t.addRule(".monaco-editor .parameter-hints-widget.multiple .body { border-left: 1px solid ".concat(n.transparent(.5),"; }")),t.addRule(".monaco-editor .parameter-hints-widget .signature.has-docs { border-bottom: 1px solid ".concat(n.transparent(.5),"; }"))}var r=e.getColor(GB.yJ);r&&t.addRule(".monaco-editor .parameter-hints-widget { background-color: ".concat(r,"; }"));var o=e.getColor(GB.ur);o&&t.addRule(".monaco-editor .parameter-hints-widget a { color: ".concat(o,"; }"));var a=e.getColor(GB.Sb);a&&t.addRule(".monaco-editor .parameter-hints-widget { color: ".concat(a,"; }"));var s=e.getColor(GB.Sw);s&&t.addRule(".monaco-editor .parameter-hints-widget code { background-color: ".concat(s,"; }"))}));var E0=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},D0=function(e,t){return function(n,i){t(n,i,e)}},N0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this)).editor=e,r.widget=r._register(i.createInstance(L0,r.editor)),r}return(0,J.Z)(n,[{key:"cancel",value:function(){this.widget.cancel()}},{key:"previous",value:function(){this.widget.previous()}},{key:"next",value:function(){this.widget.next()}},{key:"trigger",value:function(e){this.widget.trigger(e)}}],[{key:"get",value:function(e){return e.getContribution(n.ID)}}]),n}(WB.JT);N0.ID="editor.controller.parameterHints",N0=E0([D0(1,oW.TG)],N0);var M0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.triggerParameterHints",label:yB.N("parameterHints.trigger.label","Trigger Parameter Hints"),alias:"Trigger Parameter Hints",precondition:bB.u.hasSignatureHelpProvider,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:3082,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=N0.get(t);n&&n.trigger({triggerKind:Iz.WW.Invoke})}}]),n}(_B.R6);(0,_B._K)(N0.ID,N0),(0,_B.Qr)(M0);var T0=_B._l.bindToContribution(N0.get);(0,_B.fK)(new T0({id:"closeParameterHints",precondition:g0.Visible,handler:function(e){return e.cancel()},kbOpts:{weight:175,kbExpr:bB.u.focus,primary:9,secondary:[1033]}})),(0,_B.fK)(new T0({id:"showPrevParameterHint",precondition:kB.Ao.and(g0.Visible,g0.MultipleSignatures),handler:function(e){return e.previous()},kbOpts:{weight:175,kbExpr:bB.u.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}})),(0,_B.fK)(new T0({id:"showNextParameterHint",precondition:kB.Ao.and(g0.Visible,g0.MultipleSignatures),handler:function(e){return e.next()},kbOpts:{weight:175,kbExpr:bB.u.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}));var I0=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},O0=function(e,t){return function(n,i){t(n,i,e)}},A0=new kB.uy("renameInputVisible",!1,(0,yB.N)("renameInputVisible","Whether the rename input widget is visible")),R0=function(){function e(t,n,i,r,o){var a=this;(0,X.Z)(this,e),this._editor=t,this._acceptKeybindings=n,this._themeService=i,this._keybindingService=r,this._disposables=new WB.SL,this.allowEditorOverflow=!0,this._visibleContextKey=A0.bindTo(o),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration((function(e){e.hasChanged(40)&&a._updateFont()}))),this._disposables.add(i.onDidColorThemeChange(this._updateStyles,this))}return(0,J.Z)(e,[{key:"dispose",value:function(){this._disposables.dispose(),this._editor.removeContentWidget(this)}},{key:"getId",value:function(){return"__renameInputWidget"}},{key:"getDomNode",value:function(){var e=this;if(!this._domNode){this._domNode=document.createElement("div"),this._domNode.className="monaco-editor rename-box",this._input=document.createElement("input"),this._input.className="rename-input",this._input.type="text",this._input.setAttribute("aria-label",(0,yB.N)("renameAriaLabel","Rename input. Type new name and press Enter to commit.")),this._domNode.appendChild(this._input),this._label=document.createElement("div"),this._label.className="rename-label",this._domNode.appendChild(this._label);var t=function(){var t,n,i=(0,ne.Z)(e._acceptKeybindings,2),r=i[0],o=i[1];e._keybindingService.lookupKeybinding(r),e._label.innerText=(0,yB.N)({key:"label",comment:['placeholders are keybindings, e.g "F2 to Rename, Shift+F2 to Preview"']},"{0} to Rename, {1} to Preview",null===(t=e._keybindingService.lookupKeybinding(r))||void 0===t?void 0:t.getLabel(),null===(n=e._keybindingService.lookupKeybinding(o))||void 0===n?void 0:n.getLabel())};t(),this._disposables.add(this._keybindingService.onDidUpdateKeybindings(t)),this._updateFont(),this._updateStyles(this._themeService.getColorTheme())}return this._domNode}},{key:"_updateStyles",value:function(e){var t,n,i,r;if(this._input&&this._domNode){var o=e.getColor(GB.rh);this._domNode.style.backgroundColor=String(null!==(t=e.getColor(GB.D0))&&void 0!==t?t:""),this._domNode.style.boxShadow=o?" 0 0 8px 2px ".concat(o):"",this._domNode.style.color=String(null!==(n=e.getColor(GB.zJ))&&void 0!==n?n:""),this._input.style.backgroundColor=String(null!==(i=e.getColor(GB.sE))&&void 0!==i?i:"");var a=e.getColor(GB.dt);this._input.style.borderWidth=a?"1px":"0px",this._input.style.borderStyle=a?"solid":"none",this._input.style.borderColor=null!==(r=null===a||void 0===a?void 0:a.toString())&&void 0!==r?r:"none"}}},{key:"_updateFont",value:function(){if(this._input&&this._label){var e=this._editor.getOption(40);this._input.style.fontFamily=e.fontFamily,this._input.style.fontWeight=e.fontWeight,this._input.style.fontSize="".concat(e.fontSize,"px"),this._label.style.fontSize="".concat(.8*e.fontSize,"px")}}},{key:"getPosition",value:function(){return this._visible?{position:this._position,preference:[2,1]}:null}},{key:"afterRender",value:function(e){e||this.cancelInput(!0)}},{key:"acceptInput",value:function(e){this._currentAcceptInput&&this._currentAcceptInput(e)}},{key:"cancelInput",value:function(e){this._currentCancelInput&&this._currentCancelInput(e)}},{key:"getInput",value:function(e,t,n,i,r,o){var a=this;this._domNode.classList.toggle("preview",r),this._position=new VB.L(e.startLineNumber,e.startColumn),this._input.value=t,this._input.setAttribute("selectionStart",n.toString()),this._input.setAttribute("selectionEnd",i.toString()),this._input.size=Math.max(1.1*(e.endColumn-e.startColumn),20);var s=new WB.SL;return new Promise((function(e){a._currentCancelInput=function(t){return a._currentAcceptInput=void 0,a._currentCancelInput=void 0,e(t),!0},a._currentAcceptInput=function(n){0!==a._input.value.trim().length&&a._input.value!==t?(a._currentAcceptInput=void 0,a._currentCancelInput=void 0,e({newName:a._input.value,wantsPreview:r&&n})):a.cancelInput(!0)},o.onCancellationRequested((function(){return a.cancelInput(!0)})),s.add(a._editor.onDidBlurEditorWidget((function(){return a.cancelInput(!1)}))),a._show()})).finally((function(){s.dispose(),a._hide()}))}},{key:"_show",value:function(){var e=this;this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout((function(){e._input.focus(),e._input.setSelectionRange(parseInt(e._input.getAttribute("selectionStart")),parseInt(e._input.getAttribute("selectionEnd")))}),100)}},{key:"_hide",value:function(){this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)}}]),e}();R0=I0([O0(2,$B.XE),O0(3,lW.d),O0(4,kB.i6)],R0);var P0=n(19974),Z0=n(38774),F0=n(72885),j0=n(45862),H0=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},B0=function(e,t){return function(n,i){t(n,i,e)}},z0=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},W0=function(){function e(t,n){(0,X.Z)(this,e),this.model=t,this.position=n,this._providerRenameIdx=0,this._providers=Iz.G0.ordered(t)}return(0,J.Z)(e,[{key:"hasProvider",value:function(){return this._providers.length>0}},{key:"resolveRenameLocation",value:function(e){return z0(this,void 0,void 0,fn().mark((function t(){var n,i,r,o;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=[],this._providerRenameIdx=0;case 2:if(!(this._providerRenameIdx<this._providers.length)){t.next=18;break}if((i=this._providers[this._providerRenameIdx]).resolveRenameLocation){t.next=6;break}return t.abrupt("break",18);case 6:return t.next=8,i.resolveRenameLocation(this.model,this.position,e);case 8:if(r=t.sent){t.next=11;break}return t.abrupt("continue",15);case 11:if(!r.rejectReason){t.next=14;break}return n.push(r.rejectReason),t.abrupt("continue",15);case 14:return t.abrupt("return",r);case 15:this._providerRenameIdx++,t.next=2;break;case 18:if(o=this.model.getWordAtPosition(this.position)){t.next=21;break}return t.abrupt("return",{range:YB.e.fromPositions(this.position),text:"",rejectReason:n.length>0?n.join("\n"):void 0});case 21:return t.abrupt("return",{range:new YB.e(this.position.lineNumber,o.startColumn,this.position.lineNumber,o.endColumn),text:o.word,rejectReason:n.length>0?n.join("\n"):void 0});case 22:case"end":return t.stop()}}),t,this)})))}},{key:"provideRenameEdits",value:function(e,t){return z0(this,void 0,void 0,fn().mark((function n(){return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this._provideRenameEdits(e,this._providerRenameIdx,[],t));case 1:case"end":return n.stop()}}),n,this)})))}},{key:"_provideRenameEdits",value:function(e,t,n,i){return z0(this,void 0,void 0,fn().mark((function r(){var o,a;return fn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(o=this._providers[t]){r.next=3;break}return r.abrupt("return",{edits:[],rejectReason:n.join("\n")});case 3:return r.next=5,o.provideRenameEdits(this.model,this.position,e,i);case 5:if(a=r.sent){r.next=10;break}return r.abrupt("return",this._provideRenameEdits(e,t+1,n.concat(yB.N("no result","No result.")),i));case 10:if(!a.rejectReason){r.next=12;break}return r.abrupt("return",this._provideRenameEdits(e,t+1,n.concat(a.rejectReason),i));case 12:return r.abrupt("return",a);case 13:case"end":return r.stop()}}),r,this)})))}}]),e}();var V0=function(){function e(t,n,i,r,o,a,s){var u=this;(0,X.Z)(this,e),this.editor=t,this._instaService=n,this._notificationService=i,this._bulkEditService=r,this._progressService=o,this._logService=a,this._configService=s,this._dispoableStore=new WB.SL,this._cts=new Lz.A,this._renameInputField=this._dispoableStore.add(new zB.Ue((function(){return u._dispoableStore.add(u._instaService.createInstance(R0,u.editor,["acceptRenameInput","acceptRenameInputWithPreview"]))})))}return(0,J.Z)(e,[{key:"dispose",value:function(){this._dispoableStore.dispose(),this._cts.dispose(!0)}},{key:"run",value:function(){return z0(this,void 0,void 0,fn().mark((function e(){var t,n,i,r,o,a,s,u,l,c,d=this;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._cts.dispose(!0),this.editor.hasModel()){e.next=3;break}return e.abrupt("return",void 0);case 3:if(t=this.editor.getPosition(),(n=new W0(this.editor.getModel(),t)).hasProvider()){e.next=7;break}return e.abrupt("return",void 0);case 7:return this._cts=new Tz.Dl(this.editor,5),e.prev=8,r=n.resolveRenameLocation(this._cts.token),this._progressService.showWhile(r,250),e.next=13,r;case 13:i=e.sent,e.next=20;break;case 16:return e.prev=16,e.t0=e.catch(8),nW.get(this.editor).showMessage(e.t0||yB.N("resolveRenameLocationFailed","An unknown error occurred while resolving rename location"),t),e.abrupt("return",void 0);case 20:if(i){e.next=22;break}return e.abrupt("return",void 0);case 22:if(!i.rejectReason){e.next=25;break}return nW.get(this.editor).showMessage(i.rejectReason,t),e.abrupt("return",void 0);case 25:if(!this._cts.token.isCancellationRequested){e.next=27;break}return e.abrupt("return",void 0);case 27:return this._cts.dispose(),this._cts=new Tz.Dl(this.editor,5,i.range),o=this.editor.getSelection(),a=0,s=i.text.length,YB.e.isEmpty(o)||YB.e.spansMultipleLines(o)||!YB.e.containsRange(i.range,o)||(a=Math.max(0,o.startColumn-i.range.startColumn),s=Math.min(i.range.endColumn,o.endColumn)-i.range.startColumn),u=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),e.next=36,this._renameInputField.value.getInput(i.range,i.text,a,s,u,this._cts.token);case 36:if("boolean"!==typeof(l=e.sent)){e.next=40;break}return l&&this.editor.focus(),e.abrupt("return",void 0);case 40:return this.editor.focus(),c=(0,zB.eP)(n.provideRenameEdits(l.newName,this._cts.token),this._cts.token).then((function(e){return z0(d,void 0,void 0,fn().mark((function t(){var n=this;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e&&this.editor.hasModel()){t.next=2;break}return t.abrupt("return");case 2:if(!e.rejectReason){t.next=5;break}return this._notificationService.info(e.rejectReason),t.abrupt("return");case 5:this._bulkEditService.apply(Nz.fo.convert(e),{editor:this.editor,showPreview:l.wantsPreview,label:yB.N("label","Renaming '{0}'",null===i||void 0===i?void 0:i.text),quotableLabel:yB.N("quotableLabel","Renaming {0}",null===i||void 0===i?void 0:i.text)}).then((function(e){e.ariaSummary&&(0,IB.Z9)(yB.N("aria","Successfully renamed '{0}' to '{1}'. Summary: {2}",i.text,l.newName,e.ariaSummary))})).catch((function(e){n._notificationService.error(yB.N("rename.failedApply","Rename failed to apply edits")),n._logService.error(e)}));case 6:case"end":return t.stop()}}),t,this)})))}),(function(e){d._notificationService.error(yB.N("rename.failed","Rename failed to compute edits")),d._logService.error(e)})),this._progressService.showWhile(c,250),e.abrupt("return",c);case 44:case"end":return e.stop()}}),e,this,[[8,16]])})))}},{key:"acceptRenameInput",value:function(e){this._renameInputField.value.acceptInput(e)}},{key:"cancelRenameInput",value:function(){this._renameInputField.value.cancelInput(!0)}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();V0.ID="editor.contrib.renameController",V0=H0([B0(1,oW.TG),B0(2,AW.lT),B0(3,Nz.vu),B0(4,Fz.e),B0(5,P0.VZ),B0(6,j0.V)],V0);var Y0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.rename",label:yB.N("rename.label","Rename Symbol"),alias:"Rename Symbol",precondition:kB.Ao.and(bB.u.writable,bB.u.hasRenameProvider),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1}})}return(0,J.Z)(n,[{key:"runCommand",value:function(e,t){var i=this,r=e.get(fz.$),o=Array.isArray(t)&&t||[void 0,void 0],a=(0,ne.Z)(o,2),s=a[0],u=a[1];return Mz.o.isUri(s)&&VB.L.isIPosition(u)?r.openCodeEditor({resource:s},r.getActiveCodeEditor()).then((function(e){e&&(e.setPosition(u),e.invokeWithinContext((function(t){return i.reportTelemetry(t,e),i.run(t,e)})))}),LB.dL):(0,Qz.Z)((0,Xz.Z)(n.prototype),"runCommand",this).call(this,e,t)}},{key:"run",value:function(e,t){var n=V0.get(t);return n?n.run():Promise.resolve()}}]),n}(_B.R6);(0,_B._K)(V0.ID,V0),(0,_B.Qr)(Y0);var U0=_B._l.bindToContribution(V0.get);(0,_B.fK)(new U0({id:"acceptRenameInput",precondition:A0,handler:function(e){return e.acceptRenameInput(!1)},kbOpts:{weight:199,kbExpr:bB.u.focus,primary:3}})),(0,_B.fK)(new U0({id:"acceptRenameInputWithPreview",precondition:kB.Ao.and(A0,kB.Ao.has("config.editor.rename.enablePreview")),handler:function(e){return e.acceptRenameInput(!0)},kbOpts:{weight:199,kbExpr:bB.u.focus,primary:1027}})),(0,_B.fK)(new U0({id:"cancelRenameInput",precondition:A0,handler:function(e){return e.cancelRenameInput()},kbOpts:{weight:199,kbExpr:bB.u.focus,primary:9,secondary:[1033]}})),(0,_B.sb)("_executeDocumentRenameProvider",(function(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];var o=i[0];return(0,oV.p_)("string"===typeof o),function(e,t,n){return z0(this,void 0,void 0,fn().mark((function i(){var r,o;return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return r=new W0(e,t),i.next=3,r.resolveRenameLocation(Lz.T.None);case 3:if(!(null===(o=i.sent)||void 0===o?void 0:o.rejectReason)){i.next=6;break}return i.abrupt("return",{edits:[],rejectReason:o.rejectReason});case 6:return i.abrupt("return",r.provideRenameEdits(n,Lz.T.None));case 7:case"end":return i.stop()}}),i)})))}(e,t,o)})),Z0.B.as(F0.IP.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:5,description:yB.N("enablePreview","Enable/disable the ability to preview changes before renaming"),default:!0,type:"boolean"}}});var K0=function(){function e(){(0,X.Z)(this,e)}return(0,J.Z)(e,[{key:"provideSelectionRanges",value:function(e,t){var n,i=[],r=(0,Na.Z)(t);try{for(r.s();!(n=r.n()).done;){var o=n.value,a=[];i.push(a),this._addInWordRanges(a,e,o),this._addWordRanges(a,e,o),this._addWhitespaceLine(a,e,o),a.push({range:e.getFullModelRange()})}}catch(s){r.e(s)}finally{r.f()}return i}},{key:"_addInWordRanges",value:function(e,t,n){var i=t.getWordAtPosition(n);if(i){for(var r=i.word,o=i.startColumn,a=n.column-o,s=a,u=a,l=0;s>=0;s--){var c=r.charCodeAt(s);if(s!==a&&(95===c||45===c))break;if((0,Dz.mK)(c)&&(0,Dz.df)(l))break;l=c}for(s+=1;u<r.length;u++){var d=r.charCodeAt(u);if((0,Dz.df)(d)&&(0,Dz.mK)(l))break;if(95===d||45===d)break;l=d}s<u&&e.push({range:new YB.e(n.lineNumber,o+s,n.lineNumber,o+u)})}}},{key:"_addWordRanges",value:function(e,t,n){var i=t.getWordAtPosition(n);i&&e.push({range:new YB.e(n.lineNumber,i.startColumn,n.lineNumber,i.endColumn)})}},{key:"_addWhitespaceLine",value:function(e,t,n){t.getLineLength(n.lineNumber)>0&&0===t.getLineFirstNonWhitespaceColumn(n.lineNumber)&&0===t.getLineLastNonWhitespaceColumn(n.lineNumber)&&e.push({range:new YB.e(n.lineNumber,1,n.lineNumber,t.getLineMaxColumn(n.lineNumber))})}}]),e}(),q0=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},G0=function(){function e(){(0,X.Z)(this,e)}return(0,J.Z)(e,[{key:"provideSelectionRanges",value:function(t,n){return q0(this,void 0,void 0,fn().mark((function i(){var r,o,a,s;return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:r=[],o=(0,Na.Z)(n),i.prev=2,s=fn().mark((function n(){var i,o,s;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=a.value,o=[],r.push(o),s=new Map,n.next=6,new Promise((function(n){return e._bracketsRightYield(n,0,t,i,s)}));case 6:return n.next=8,new Promise((function(n){return e._bracketsLeftYield(n,0,t,i,s,o)}));case 8:case"end":return n.stop()}}),n)})),o.s();case 5:if((a=o.n()).done){i.next=9;break}return i.delegateYield(s(),"t0",7);case 7:i.next=5;break;case 9:i.next=14;break;case 11:i.prev=11,i.t1=i.catch(2),o.e(i.t1);case 14:return i.prev=14,o.f(),i.finish(14);case 17:return i.abrupt("return",r);case 18:case"end":return i.stop()}}),i,null,[[2,11,14,17]])})))}}],[{key:"_bracketsRightYield",value:function(t,n,i,r,o){for(var a=new Map,s=Date.now();;){if(n>=e._maxRounds){t();break}if(!r){t();break}var u=i.findNextBracket(r);if(!u){t();break}if(Date.now()-s>e._maxDuration){setTimeout((function(){return e._bracketsRightYield(t,n+1,i,r,o)}));break}var l=u.close[0];if(u.isOpen){var c=a.has(l)?a.get(l):0;a.set(l,c+1)}else{var d=a.has(l)?a.get(l):0;if(d-=1,a.set(l,Math.max(0,d)),d<0){var h=o.get(l);h||(h=new cU.S,o.set(l,h)),h.push(u.range)}}r=u.range.getEndPosition()}}},{key:"_bracketsLeftYield",value:function(t,n,i,r,o,a){for(var s=new Map,u=Date.now();;){if(n>=e._maxRounds&&0===o.size){t();break}if(!r){t();break}var l=i.findPrevBracket(r);if(!l){t();break}if(Date.now()-u>e._maxDuration){setTimeout((function(){return e._bracketsLeftYield(t,n+1,i,r,o,a)}));break}var c=l.close[0];if(l.isOpen){var d=s.has(c)?s.get(c):0;if(d-=1,s.set(c,Math.max(0,d)),d<0){var h=o.get(c);if(h){var f=h.shift();0===h.size&&o.delete(c);var p=YB.e.fromPositions(l.range.getEndPosition(),f.getStartPosition()),g=YB.e.fromPositions(l.range.getStartPosition(),f.getEndPosition());a.push({range:p}),a.push({range:g}),e._addBracketLeading(i,g,a)}}}else{var v=s.has(c)?s.get(c):0;s.set(c,v+1)}r=l.range.getStartPosition()}}},{key:"_addBracketLeading",value:function(e,t,n){if(t.startLineNumber!==t.endLineNumber){var i=t.startLineNumber,r=e.getLineFirstNonWhitespaceColumn(i);0!==r&&r!==t.startColumn&&(n.push({range:YB.e.fromPositions(new VB.L(i,r),t.getEndPosition())}),n.push({range:YB.e.fromPositions(new VB.L(i,1),t.getEndPosition())}));var o=i-1;if(o>0){var a=e.getLineFirstNonWhitespaceColumn(o);a===t.startColumn&&a!==e.getLineLastNonWhitespaceColumn(o)&&(n.push({range:YB.e.fromPositions(new VB.L(o,a),t.getEndPosition())}),n.push({range:YB.e.fromPositions(new VB.L(o,1),t.getEndPosition())}))}}}}]),e}();G0._maxDuration=30,G0._maxRounds=2;var $0=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},Q0=function(){function e(t,n){(0,X.Z)(this,e),this.index=t,this.ranges=n}return(0,J.Z)(e,[{key:"mov",value:function(t){var n=this.index+(t?1:-1);if(n<0||n>=this.ranges.length)return this;var i=new e(n,this.ranges);return i.ranges[n].equalsRange(this.ranges[this.index])?i.mov(t):i}}]),e}(),X0=function(){function e(t){(0,X.Z)(this,e),this._editor=t,this._ignoreSelection=!1}return(0,J.Z)(e,[{key:"dispose",value:function(){var e;null===(e=this._selectionListener)||void 0===e||e.dispose()}},{key:"run",value:function(e){return $0(this,void 0,void 0,fn().mark((function t(){var n,i,r,o=this;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._editor.hasModel()){t.next=2;break}return t.abrupt("return");case 2:if(n=this._editor.getSelections(),i=this._editor.getModel(),Iz.AC.has(i)){t.next=6;break}return t.abrupt("return");case 6:if(this._state){t.next=9;break}return t.next=9,i1(i,n.map((function(e){return e.getPosition()})),this._editor.getOption(99),Lz.T.None).then((function(e){var t;if(SB.Of(e)&&e.length===n.length&&o._editor.hasModel()&&SB.fS(o._editor.getSelections(),n,(function(e,t){return e.equalsSelection(t)}))){for(var i=function(t){e[t]=e[t].filter((function(e){return e.containsPosition(n[t].getStartPosition())&&e.containsPosition(n[t].getEndPosition())})),e[t].unshift(n[t])},r=0;r<e.length;r++)i(r);o._state=e.map((function(e){return new Q0(0,e)})),null===(t=o._selectionListener)||void 0===t||t.dispose(),o._selectionListener=o._editor.onDidChangeCursorPosition((function(){var e;o._ignoreSelection||(null===(e=o._selectionListener)||void 0===e||e.dispose(),o._state=void 0)}))}}));case 9:if(this._state){t.next=11;break}return t.abrupt("return");case 11:this._state=this._state.map((function(t){return t.mov(e)})),r=this._state.map((function(e){return wB.Y.fromPositions(e.ranges[e.index].getStartPosition(),e.ranges[e.index].getEndPosition())})),this._ignoreSelection=!0;try{this._editor.setSelections(r)}finally{this._ignoreSelection=!1}case 15:case"end":return t.stop()}}),t,this)})))}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();X0.ID="editor.contrib.smartSelectController";var J0=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,i))._forward=e,r}return(0,J.Z)(n,[{key:"run",value:function(e,t){return $0(this,void 0,void 0,fn().mark((function e(){var n;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=X0.get(t))){e.next=4;break}return e.next=4,n.run(this._forward);case 4:case"end":return e.stop()}}),e,this)})))}}]),n}(_B.R6),e1=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!0,{id:"editor.action.smartSelect.expand",label:yB.N("smartSelect.expand","Expand Selection"),alias:"Expand Selection",precondition:void 0,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"1_basic",title:yB.N({key:"miSmartSelectGrow",comment:["&& denotes a mnemonic"]},"&&Expand Selection"),order:2}})}return(0,J.Z)(n)}(J0);jz.P.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand");var t1,n1=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!1,{id:"editor.action.smartSelect.shrink",label:yB.N("smartSelect.shrink","Shrink Selection"),alias:"Shrink Selection",precondition:void 0,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:QB.eH.MenubarSelectionMenu,group:"1_basic",title:yB.N({key:"miSmartSelectShrink",comment:["&& denotes a mnemonic"]},"&&Shrink Selection"),order:3}})}return(0,J.Z)(n)}(J0);function i1(e,t,n,i){return $0(this,void 0,void 0,fn().mark((function r(){var o,a,s,u,l,c;return fn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:1===(o=Iz.AC.all(e)).length&&o.unshift(new G0),a=[],s=[],u=(0,Na.Z)(o);try{for(u.s();!(l=u.n()).done;)c=l.value,a.push(Promise.resolve(c.provideSelectionRanges(e,t,i)).then((function(e){if(SB.Of(e)&&e.length===t.length)for(var n=0;n<t.length;n++){s[n]||(s[n]=[]);var i,r=(0,Na.Z)(e[n]);try{for(r.s();!(i=r.n()).done;){var o=i.value;YB.e.isIRange(o.range)&&YB.e.containsPosition(o.range,t[n])&&s[n].push(YB.e.lift(o.range))}}catch(a){r.e(a)}finally{r.f()}}}),LB.Cp))}catch(d){u.e(d)}finally{u.f()}return r.next=8,Promise.all(a);case 8:return r.abrupt("return",s.map((function(t){if(0===t.length)return[];t.sort((function(e,t){return VB.L.isBefore(e.getStartPosition(),t.getStartPosition())?1:VB.L.isBefore(t.getStartPosition(),e.getStartPosition())||VB.L.isBefore(e.getEndPosition(),t.getEndPosition())?-1:VB.L.isBefore(t.getEndPosition(),e.getEndPosition())?1:0}));var i,r,o=[],a=(0,Na.Z)(t);try{for(a.s();!(r=a.n()).done;){var s=r.value;(!i||YB.e.containsRange(s,i)&&!YB.e.equalsRange(s,i))&&(o.push(s),i=s)}}catch(d){a.e(d)}finally{a.f()}if(!n.selectLeadingAndTrailingWhitespace)return o;for(var u=[o[0]],l=1;l<o.length;l++){var c=o[l-1],h=o[l];if(h.startLineNumber!==c.startLineNumber||h.endLineNumber!==c.endLineNumber){var f=new YB.e(c.startLineNumber,e.getLineFirstNonWhitespaceColumn(c.startLineNumber),c.endLineNumber,e.getLineLastNonWhitespaceColumn(c.endLineNumber));f.containsRange(c)&&!f.equalsRange(c)&&h.containsRange(f)&&!h.equalsRange(f)&&u.push(f);var p=new YB.e(c.startLineNumber,1,c.endLineNumber,e.getLineMaxColumn(c.endLineNumber));p.containsRange(c)&&!p.equalsRange(f)&&h.containsRange(p)&&!h.equalsRange(p)&&u.push(p)}u.push(h)}return u})));case 9:case"end":return r.stop()}}),r)})))}(0,_B._K)(X0.ID,X0),(0,_B.Qr)(e1),(0,_B.Qr)(n1),Iz.AC.register("*",new K0),(0,_B.f)("_executeSelectionRangeProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return i1(e,n[0],{selectLeadingAndTrailingWhitespace:!0},Lz.T.None)}));var r1=function(){function e(){(0,X.Z)(this,e),this.value="",this.pos=0}return(0,J.Z)(e,[{key:"text",value:function(e){this.value=e,this.pos=0}},{key:"tokenText",value:function(e){return this.value.substr(e.pos,e.len)}},{key:"next",value:function(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};var t,n=this.pos,i=0,r=this.value.charCodeAt(n);if("number"===typeof(t=e._table[r]))return this.pos+=1,{type:t,pos:n,len:1};if(e.isDigitCharacter(r)){t=8;do{i+=1,r=this.value.charCodeAt(n+i)}while(e.isDigitCharacter(r));return this.pos+=i,{type:t,pos:n,len:i}}if(e.isVariableCharacter(r)){t=9;do{r=this.value.charCodeAt(n+ ++i)}while(e.isVariableCharacter(r)||e.isDigitCharacter(r));return this.pos+=i,{type:t,pos:n,len:i}}t=10;do{i+=1,r=this.value.charCodeAt(n+i)}while(!isNaN(r)&&"undefined"===typeof e._table[r]&&!e.isDigitCharacter(r)&&!e.isVariableCharacter(r));return this.pos+=i,{type:t,pos:n,len:i}}}],[{key:"isDigitCharacter",value:function(e){return e>=48&&e<=57}},{key:"isVariableCharacter",value:function(e){return 95===e||e>=97&&e<=122||e>=65&&e<=90}}]),e}();r1._table=(t1={},(0,wt.Z)(t1,36,0),(0,wt.Z)(t1,58,1),(0,wt.Z)(t1,44,2),(0,wt.Z)(t1,123,3),(0,wt.Z)(t1,125,4),(0,wt.Z)(t1,92,5),(0,wt.Z)(t1,47,6),(0,wt.Z)(t1,124,7),(0,wt.Z)(t1,43,11),(0,wt.Z)(t1,45,12),(0,wt.Z)(t1,63,13),t1);var o1=function(){function e(){(0,X.Z)(this,e),this._children=[]}return(0,J.Z)(e,[{key:"appendChild",value:function(e){return e instanceof a1&&this._children[this._children.length-1]instanceof a1?this._children[this._children.length-1].value+=e.value:(e.parent=this,this._children.push(e)),this}},{key:"replace",value:function(e,t){var n=e.parent,i=n.children.indexOf(e),r=n.children.slice(0);r.splice.apply(r,[i,1].concat((0,Ct.Z)(t))),n._children=r,function e(t,n){var i,r=(0,Na.Z)(t);try{for(r.s();!(i=r.n()).done;){var o=i.value;o.parent=n,e(o.children,o)}}catch(a){r.e(a)}finally{r.f()}}(t,n)}},{key:"children",get:function(){return this._children}},{key:"snippet",get:function(){for(var e=this;;){if(!e)return;if(e instanceof g1)return e;e=e.parent}}},{key:"toString",value:function(){return this.children.reduce((function(e,t){return e+t.toString()}),"")}},{key:"len",value:function(){return 0}}]),e}(),a1=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this)).value=e,i}return(0,J.Z)(n,[{key:"toString",value:function(){return this.value}},{key:"len",value:function(){return this.value.length}},{key:"clone",value:function(){return new n(this.value)}}]),n}(o1),s1=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n)}(o1),u1=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this)).index=e,i}return(0,J.Z)(n,[{key:"isFinalTabstop",get:function(){return 0===this.index}},{key:"choice",get:function(){return 1===this._children.length&&this._children[0]instanceof l1?this._children[0]:void 0}},{key:"clone",value:function(){var e=new n(this.index);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map((function(e){return e.clone()})),e}}],[{key:"compareByIndex",value:function(e,t){return e.index===t.index?0:e.isFinalTabstop?1:t.isFinalTabstop||e.index<t.index?-1:e.index>t.index?1:0}}]),n}(s1),l1=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),(e=t.apply(this,arguments)).options=[],e}return(0,J.Z)(n,[{key:"appendChild",value:function(e){return e instanceof a1&&(e.parent=this,this.options.push(e)),this}},{key:"toString",value:function(){return this.options[0].value}},{key:"len",value:function(){return this.options[0].len()}},{key:"clone",value:function(){var e=new n;return this.options.forEach(e.appendChild,e),e}}]),n}(o1),c1=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),(e=t.apply(this,arguments)).regexp=new RegExp(""),e}return(0,J.Z)(n,[{key:"resolve",value:function(e){var t=this,n=!1,i=e.replace(this.regexp,(function(){return n=!0,t._replace(Array.prototype.slice.call(arguments,0,-2))}));return!n&&this._children.some((function(e){return e instanceof d1&&Boolean(e.elseValue)}))&&(i=this._replace([])),i}},{key:"_replace",value:function(e){var t,n="",i=(0,Na.Z)(this._children);try{for(i.s();!(t=i.n()).done;){var r=t.value;if(r instanceof d1){var o=e[r.index]||"";n+=o=r.resolve(o)}else n+=r.toString()}}catch(a){i.e(a)}finally{i.f()}return n}},{key:"toString",value:function(){return""}},{key:"clone",value:function(){var e=new n;return e.regexp=new RegExp(this.regexp.source,(this.regexp.ignoreCase?"i":"")+(this.regexp.global?"g":"")),e._children=this.children.map((function(e){return e.clone()})),e}}]),n}(o1),d1=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;return(0,X.Z)(this,n),(a=t.call(this)).index=e,a.shorthandName=i,a.ifValue=r,a.elseValue=o,a}return(0,J.Z)(n,[{key:"resolve",value:function(e){return"upcase"===this.shorthandName?e?e.toLocaleUpperCase():"":"downcase"===this.shorthandName?e?e.toLocaleLowerCase():"":"capitalize"===this.shorthandName?e?e[0].toLocaleUpperCase()+e.substr(1):"":"pascalcase"===this.shorthandName?e?this._toPascalCase(e):"":Boolean(e)&&"string"===typeof this.ifValue?this.ifValue:Boolean(e)||"string"!==typeof this.elseValue?e||"":this.elseValue}},{key:"_toPascalCase",value:function(e){var t=e.match(/[a-z]+/gi);return t?t.map((function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})).join(""):e}},{key:"clone",value:function(){return new n(this.index,this.shorthandName,this.ifValue,this.elseValue)}}]),n}(o1),h1=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this)).name=e,i}return(0,J.Z)(n,[{key:"resolve",value:function(e){var t=e.resolve(this);return this.transform&&(t=this.transform.resolve(t||"")),void 0!==t&&(this._children=[new a1(t)],!0)}},{key:"clone",value:function(){var e=new n(this.name);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map((function(e){return e.clone()})),e}}]),n}(s1);function f1(e,t){for(var n=(0,Ct.Z)(e);n.length>0;){var i=n.shift();if(!t(i))break;n.unshift.apply(n,(0,Ct.Z)(i.children))}}var p1,g1=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"placeholderInfo",get:function(){if(!this._placeholders){var e,t=[];this.walk((function(n){return n instanceof u1&&(t.push(n),e=!e||e.index<n.index?n:e),!0})),this._placeholders={all:t,last:e}}return this._placeholders}},{key:"placeholders",get:function(){return this.placeholderInfo.all}},{key:"offset",value:function(e){var t=0,n=!1;return this.walk((function(i){return i===e?(n=!0,!1):(t+=i.len(),!0)})),n?t:-1}},{key:"fullLen",value:function(e){var t=0;return f1([e],(function(e){return t+=e.len(),!0})),t}},{key:"enclosingPlaceholders",value:function(e){for(var t=[],n=e.parent;n;)n instanceof u1&&t.push(n),n=n.parent;return t}},{key:"resolveVariables",value:function(e){var t=this;return this.walk((function(n){return n instanceof h1&&n.resolve(e)&&(t._placeholders=void 0),!0})),this}},{key:"appendChild",value:function(e){return this._placeholders=void 0,(0,Qz.Z)((0,Xz.Z)(n.prototype),"appendChild",this).call(this,e)}},{key:"replace",value:function(e,t){return this._placeholders=void 0,(0,Qz.Z)((0,Xz.Z)(n.prototype),"replace",this).call(this,e,t)}},{key:"clone",value:function(){var e=new n;return this._children=this.children.map((function(e){return e.clone()})),e}},{key:"walk",value:function(e){f1(this.children,e)}}]),n}(o1),v1=function(){function e(){(0,X.Z)(this,e),this._scanner=new r1,this._token={type:14,pos:0,len:0}}return(0,J.Z)(e,[{key:"parse",value:function(e,t,n){this._scanner.text(e),this._token=this._scanner.next();for(var i=new g1;this._parse(i););var r=new Map,o=[],a=0;i.walk((function(e){return e instanceof u1&&(a+=1,e.isFinalTabstop?r.set(0,void 0):!r.has(e.index)&&e.children.length>0?r.set(e.index,e.children):o.push(e)),!0}));for(var s=0,u=o;s<u.length;s++){var l=u[s],c=r.get(l.index);if(c){var d=new u1(l.index);d.transform=l.transform;var h,f=(0,Na.Z)(c);try{for(f.s();!(h=f.n()).done;){var p=h.value;d.appendChild(p.clone())}}catch(g){f.e(g)}finally{f.f()}i.replace(l,[d])}}return n||(n=a>0&&t),!r.has(0)&&n&&i.appendChild(new u1(0)),i}},{key:"_accept",value:function(e,t){if(void 0===e||this._token.type===e){var n=!t||this._scanner.tokenText(this._token);return this._token=this._scanner.next(),n}return!1}},{key:"_backTo",value:function(e){return this._scanner.pos=e.pos+e.len,this._token=e,!1}},{key:"_until",value:function(e){for(var t=this._token;this._token.type!==e;){if(14===this._token.type)return!1;if(5===this._token.type){var n=this._scanner.next();if(0!==n.type&&4!==n.type&&5!==n.type)return!1}this._token=this._scanner.next()}var i=this._scanner.value.substring(t.pos,this._token.pos).replace(/\\(\$|}|\\)/g,"$1");return this._token=this._scanner.next(),i}},{key:"_parse",value:function(e){return this._parseEscaped(e)||this._parseTabstopOrVariableName(e)||this._parseComplexPlaceholder(e)||this._parseComplexVariable(e)||this._parseAnything(e)}},{key:"_parseEscaped",value:function(e){var t;return!!(t=this._accept(5,!0))&&(t=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||t,e.appendChild(new a1(t)),!0)}},{key:"_parseTabstopOrVariableName",value:function(e){var t,n=this._token;return this._accept(0)&&(t=this._accept(9,!0)||this._accept(8,!0))?(e.appendChild(/^\d+$/.test(t)?new u1(Number(t)):new h1(t)),!0):this._backTo(n)}},{key:"_parseComplexPlaceholder",value:function(e){var t,n=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(8,!0))))return this._backTo(n);var i=new u1(Number(t));if(this._accept(1))for(;;){if(this._accept(4))return e.appendChild(i),!0;if(!this._parse(i))return e.appendChild(new a1("${"+t+":")),i.children.forEach(e.appendChild,e),!0}else{if(!(i.index>0&&this._accept(7)))return this._accept(6)?this._parseTransform(i)?(e.appendChild(i),!0):(this._backTo(n),!1):this._accept(4)?(e.appendChild(i),!0):this._backTo(n);for(var r=new l1;;){if(this._parseChoiceElement(r)){if(this._accept(2))continue;if(this._accept(7)&&(i.appendChild(r),this._accept(4)))return e.appendChild(i),!0}return this._backTo(n),!1}}}},{key:"_parseChoiceElement",value:function(e){for(var t=this._token,n=[];2!==this._token.type&&7!==this._token.type;){var i=void 0;if(!(i=(i=this._accept(5,!0))?this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||i:this._accept(void 0,!0)))return this._backTo(t),!1;n.push(i)}return 0===n.length?(this._backTo(t),!1):(e.appendChild(new a1(n.join(""))),!0)}},{key:"_parseComplexVariable",value:function(e){var t,n=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(9,!0))))return this._backTo(n);var i=new h1(t);if(!this._accept(1))return this._accept(6)?this._parseTransform(i)?(e.appendChild(i),!0):(this._backTo(n),!1):this._accept(4)?(e.appendChild(i),!0):this._backTo(n);for(;;){if(this._accept(4))return e.appendChild(i),!0;if(!this._parse(i))return e.appendChild(new a1("${"+t+":")),i.children.forEach(e.appendChild,e),!0}}},{key:"_parseTransform",value:function(e){for(var t=new c1,n="",i="";!this._accept(6);){var r=void 0;if(r=this._accept(5,!0))n+=r=this._accept(6,!0)||r;else{if(14===this._token.type)return!1;n+=this._accept(void 0,!0)}}for(;!this._accept(6);){var o=void 0;if(o=this._accept(5,!0))o=this._accept(5,!0)||this._accept(6,!0)||o,t.appendChild(new a1(o));else if(!this._parseFormatString(t)&&!this._parseAnything(t))return!1}for(;!this._accept(4);){if(14===this._token.type)return!1;i+=this._accept(void 0,!0)}try{t.regexp=new RegExp(n,i)}catch(a){return!1}return e.transform=t,!0}},{key:"_parseFormatString",value:function(e){var t=this._token;if(!this._accept(0))return!1;var n=!1;this._accept(3)&&(n=!0);var i=this._accept(8,!0);if(!i)return this._backTo(t),!1;if(!n)return e.appendChild(new d1(Number(i))),!0;if(this._accept(4))return e.appendChild(new d1(Number(i))),!0;if(!this._accept(1))return this._backTo(t),!1;if(this._accept(6)){var r=this._accept(9,!0);return r&&this._accept(4)?(e.appendChild(new d1(Number(i),r)),!0):(this._backTo(t),!1)}if(this._accept(11)){var o=this._until(4);if(o)return e.appendChild(new d1(Number(i),void 0,o,void 0)),!0}else if(this._accept(12)){var a=this._until(4);if(a)return e.appendChild(new d1(Number(i),void 0,void 0,a)),!0}else if(this._accept(13)){var s=this._until(1);if(s){var u=this._until(4);if(u)return e.appendChild(new d1(Number(i),void 0,s,u)),!0}}else{var l=this._until(4);if(l)return e.appendChild(new d1(Number(i),void 0,void 0,l)),!0}return this._backTo(t),!1}},{key:"_parseAnything",value:function(e){return 14!==this._token.type&&(e.appendChild(new a1(this._scanner.tokenText(this._token))),this._accept(void 0),!0)}}],[{key:"escape",value:function(e){return e.replace(/\$|}|\\/g,"\\$&")}},{key:"guessNeedsClipboard",value:function(e){return/\${?CLIPBOARD/.test(e)}}]),e}(),m1=n(96257),_1=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},y1={Visible:new kB.uy("suggestWidgetVisible",!1,(0,yB.N)("suggestWidgetVisible","Whether suggestion are visible")),DetailsVisible:new kB.uy("suggestWidgetDetailsVisible",!1,(0,yB.N)("suggestWidgetDetailsVisible","Whether suggestion details are visible")),MultipleSuggestions:new kB.uy("suggestWidgetMultipleSuggestions",!1,(0,yB.N)("suggestWidgetMultipleSuggestions","Whether there are multiple suggestions to pick from")),MakesTextEdit:new kB.uy("suggestionMakesTextEdit",!0,(0,yB.N)("suggestionMakesTextEdit","Whether inserting the current suggestion yields in a change or has everything already been typed")),AcceptSuggestionsOnEnter:new kB.uy("acceptSuggestionOnEnter",!0,(0,yB.N)("acceptSuggestionOnEnter","Whether suggestions are inserted when pressing Enter")),HasInsertAndReplaceRange:new kB.uy("suggestionHasInsertAndReplaceRange",!1,(0,yB.N)("suggestionHasInsertAndReplaceRange","Whether the current suggestion has insert and replace behaviour")),InsertMode:new kB.uy("suggestionInsertMode",void 0,{type:"string",description:(0,yB.N)("suggestionInsertMode","Whether the default behaviour is to insert or replace")}),CanResolve:new kB.uy("suggestionCanResolve",!1,(0,yB.N)("suggestionCanResolve","Whether the current suggestion supports to resolve further details"))},b1=new QB.eH("suggestWidgetStatusBar"),w1=function(){function e(t,n,i,r){(0,X.Z)(this,e),this.position=t,this.completion=n,this.container=i,this.provider=r,this.isInvalid=!1,this.score=NK.CL.Default,this.distance=0,this.textLabel="string"===typeof n.label?n.label:n.label.name,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=n.sortText&&n.sortText.toLowerCase(),this.filterTextLow=n.filterText&&n.filterText.toLowerCase(),YB.e.isIRange(n.range)?(this.editStart=new VB.L(n.range.startLineNumber,n.range.startColumn),this.editInsertEnd=new VB.L(n.range.endLineNumber,n.range.endColumn),this.editReplaceEnd=new VB.L(n.range.endLineNumber,n.range.endColumn),this.isInvalid=this.isInvalid||YB.e.spansMultipleLines(n.range)||n.range.startLineNumber!==t.lineNumber):(this.editStart=new VB.L(n.range.insert.startLineNumber,n.range.insert.startColumn),this.editInsertEnd=new VB.L(n.range.insert.endLineNumber,n.range.insert.endColumn),this.editReplaceEnd=new VB.L(n.range.replace.endLineNumber,n.range.replace.endColumn),this.isInvalid=this.isInvalid||YB.e.spansMultipleLines(n.range.insert)||YB.e.spansMultipleLines(n.range.replace)||n.range.insert.startLineNumber!==t.lineNumber||n.range.replace.startLineNumber!==t.lineNumber||n.range.insert.startColumn!==n.range.replace.startColumn),"function"!==typeof r.resolveCompletionItem&&(this._resolveCache=Promise.resolve(),this._isResolved=!0)}return(0,J.Z)(e,[{key:"isResolved",get:function(){return!!this._isResolved}},{key:"resolve",value:function(e){return _1(this,void 0,void 0,fn().mark((function t(){var n,i=this;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this._resolveCache||(n=e.onCancellationRequested((function(){i._resolveCache=void 0,i._isResolved=!1})),this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,e)).then((function(e){Object.assign(i.completion,e),i._isResolved=!0,n.dispose()}),(function(e){(0,LB.VV)(e)&&(i._resolveCache=void 0,i._isResolved=!1)}))),t.abrupt("return",this._resolveCache);case 2:case"end":return t.stop()}}),t,this)})))}}]),e}(),C1=(0,J.Z)((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Set;(0,X.Z)(this,e),this.snippetSortOrder=t,this.kindFilter=n,this.providerFilter=i}));C1.default=new C1;var k1=(0,J.Z)((function e(t,n,i,r){(0,X.Z)(this,e),this.items=t,this.needsClipboard=n,this.durations=i,this.disposable=r}));function S1(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:C1.default,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{triggerKind:0},r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:Lz.T.None;return _1(this,void 0,void 0,fn().mark((function o(){var a,s,u,l,c,d,h,f,p,g,v,m,_,y,b=this;return fn().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:a=new m1.G(!0),t=t.clone(),s=e.getWordAtPosition(t),u=s?new YB.e(t.lineNumber,s.startColumn,t.lineNumber,s.endColumn):YB.e.fromPositions(t),l={replace:u,insert:u.setEndPosition(t.lineNumber,t.column)},c=[],d=new WB.SL,h=[],f=!1,p=function(e,i,r){var o,a;if(i){var s,u=(0,Na.Z)(i.suggestions);try{for(u.s();!(s=u.n()).done;){var p=s.value;n.kindFilter.has(p.kind)||(p.range||(p.range=l),p.sortText||(p.sortText="string"===typeof p.label?p.label:p.label.name),!f&&p.insertTextRules&&4&p.insertTextRules&&(f=v1.guessNeedsClipboard(p.insertText)),c.push(new w1(t,p,i,e)))}}catch(g){u.e(g)}finally{u.f()}(0,WB.Wf)(i)&&d.add(i),h.push({providerName:null!==(o=e._debugDisplayName)&&void 0!==o?o:"unkown_provider",elapsedProvider:null!==(a=i.duration)&&void 0!==a?a:-1,elapsedOverall:r.elapsed()})}},g=_1(b,void 0,void 0,fn().mark((function o(){var a,s;return fn().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(p1&&!n.kindFilter.has(27)){o.next=2;break}return o.abrupt("return");case 2:if(!(n.providerFilter.size>0)||n.providerFilter.has(p1)){o.next=4;break}return o.abrupt("return");case 4:return a=new m1.G(!0),o.next=7,p1.provideCompletionItems(e,t,i,r);case 7:s=o.sent,p(p1,s,a);case 9:case"end":return o.stop()}}),o)}))),v=(0,Na.Z)(Iz.KZ.orderedGroups(e)),o.prev=12,v.s();case 14:if((m=v.n()).done){o.next=23;break}return _=m.value,y=c.length,o.next=19,Promise.all(_.map((function(o){return _1(b,void 0,void 0,fn().mark((function a(){var s,u;return fn().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(!(n.providerFilter.size>0)||n.providerFilter.has(o)){a.next=2;break}return a.abrupt("return");case 2:return a.prev=2,s=new m1.G(!0),a.next=6,o.provideCompletionItems(e,t,i,r);case 6:u=a.sent,p(o,u,s),a.next=13;break;case 10:a.prev=10,a.t0=a.catch(2),(0,LB.Cp)(a.t0);case 13:case"end":return a.stop()}}),a,null,[[2,10]])})))})));case 19:if(y===c.length&&!r.isCancellationRequested){o.next=21;break}return o.abrupt("break",23);case 21:o.next=14;break;case 23:o.next=28;break;case 25:o.prev=25,o.t0=o.catch(12),v.e(o.t0);case 28:return o.prev=28,v.f(),o.finish(28);case 31:return o.next=33,g;case 33:if(!r.isCancellationRequested){o.next=36;break}return d.dispose(),o.abrupt("return",Promise.reject((0,LB.F0)()));case 36:return o.abrupt("return",new k1(c.sort(E1(n.snippetSortOrder)),f,{entries:h,elapsed:a.elapsed()},d));case 37:case"end":return o.stop()}}),o,null,[[12,25,28,31]])})))}function x1(e,t){if(e.sortTextLow&&t.sortTextLow){if(e.sortTextLow<t.sortTextLow)return-1;if(e.sortTextLow>t.sortTextLow)return 1}return e.completion.label<t.completion.label?-1:e.completion.label>t.completion.label?1:e.completion.kind-t.completion.kind}var L1=new Map;function E1(e){return L1.get(e)}L1.set(0,(function(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return-1;if(27===t.completion.kind)return 1}return x1(e,t)})),L1.set(2,(function(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return 1;if(27===t.completion.kind)return-1}return x1(e,t)})),L1.set(1,x1),jz.P.registerCommand("_executeCompletionItemProvider",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return _1(void 0,void 0,void 0,fn().mark((function t(){var i,r,o,a,s,u,l,c,d,h,f;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=n[0],r=n[1],o=n[2],a=n[3],(0,oV.p_)(Mz.o.isUri(i)),(0,oV.p_)(VB.L.isIPosition(r)),(0,oV.p_)("string"===typeof o||!o),(0,oV.p_)("number"===typeof a||!a),t.next=7,e.get(SK.S).createModelReference(i);case 7:return s=t.sent,t.prev=8,u={incomplete:!1,suggestions:[]},l=[],t.next=13,S1(s.object.textEditorModel,VB.L.lift(r),void 0,{triggerCharacter:o,triggerKind:o?1:0});case 13:c=t.sent,d=(0,Na.Z)(c.items);try{for(d.s();!(h=d.n()).done;)f=h.value,l.length<(null!==a&&void 0!==a?a:0)&&l.push(f.resolve(Lz.T.None)),u.incomplete=u.incomplete||f.container.incomplete,u.suggestions.push(f.completion)}catch(p){d.e(p)}finally{d.f()}return t.prev=16,t.next=19,Promise.all(l);case 19:return t.abrupt("return",u);case 20:return t.prev=20,setTimeout((function(){return c.disposable.dispose()}),100),t.finish(20);case 23:return t.prev=23,s.dispose(),t.finish(23);case 26:case"end":return t.stop()}}),t,null,[[8,,23,26],[16,,20,23]])})))}));var D1=new(function(){function e(){(0,X.Z)(this,e),this.onlyOnceSuggestions=[]}return(0,J.Z)(e,[{key:"provideCompletionItems",value:function(){var e={suggestions:this.onlyOnceSuggestions.slice(0)};return this.onlyOnceSuggestions.length=0,e}}]),e}());Iz.KZ.register("*",D1);var N1=n(37753),M1=n(36912),T1="code-workspace";function I1(e){var t=e;return"string"===typeof(null===t||void 0===t?void 0:t.id)&&Mz.o.isUri(t.uri)}for(var O1,A1=new Uint8Array(16),R1=[],P1=0;P1<256;P1++)R1.push(P1.toString(16).padStart(2,"0"));O1="object"===typeof crypto&&"function"===typeof crypto.getRandomValues?crypto.getRandomValues.bind(crypto):function(e){for(var t=0;t<e.length;t++)e[t]=Math.floor(256*Math.random());return e};var Z1=function(){function e(t){(0,X.Z)(this,e),this._delegates=t}return(0,J.Z)(e,[{key:"resolve",value:function(e){var t,n=(0,Na.Z)(this._delegates);try{for(n.s();!(t=n.n()).done;){var i=t.value.resolve(e);if(void 0!==i)return i}}catch(r){n.e(r)}finally{n.f()}}}]),e}(),F1=function(){function e(t,n,i,r){(0,X.Z)(this,e),this._model=t,this._selection=n,this._selectionIdx=i,this._overtypingCapturer=r}return(0,J.Z)(e,[{key:"resolve",value:function(e){var t=e.name;if("SELECTION"===t||"TM_SELECTED_TEXT"===t){var n=this._model.getValueInRange(this._selection)||void 0,i=this._selection.startLineNumber!==this._selection.endLineNumber;if(!n&&this._overtypingCapturer){var r=this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);r&&(n=r.value,i=r.multiline)}if(n&&i&&e.snippet){var o=this._model.getLineContent(this._selection.startLineNumber),a=(0,Dz.V8)(o,0,this._selection.startColumn-1),s=a;e.snippet.walk((function(t){return t!==e&&(t instanceof a1&&(s=(0,Dz.V8)((0,Dz.uq)(t.value).pop())),!0)}));var u=(0,Dz.Mh)(s,a);n=n.replace(/(\r\n|\r|\n)(.*)/g,(function(e,t,n){return"".concat(t).concat(s.substr(u)).concat(n)}))}return n}if("TM_CURRENT_LINE"===t)return this._model.getLineContent(this._selection.positionLineNumber);if("TM_CURRENT_WORD"===t){var l=this._model.getWordAtPosition({lineNumber:this._selection.positionLineNumber,column:this._selection.positionColumn});return l&&l.word||void 0}return"TM_LINE_INDEX"===t?String(this._selection.positionLineNumber-1):"TM_LINE_NUMBER"===t?String(this._selection.positionLineNumber):void 0}}]),e}(),j1=function(){function e(t,n){(0,X.Z)(this,e),this._labelService=t,this._model=n}return(0,J.Z)(e,[{key:"resolve",value:function(e){var t=e.name;if("TM_FILENAME"===t)return M1.EZ(this._model.uri.fsPath);if("TM_FILENAME_BASE"===t){var n=M1.EZ(this._model.uri.fsPath),i=n.lastIndexOf(".");return i<=0?n:n.slice(0,i)}return"TM_DIRECTORY"===t&&this._labelService?"."===M1.XX(this._model.uri.fsPath)?"":this._labelService.getUriLabel((0,PW.XX)(this._model.uri)):"TM_FILEPATH"===t&&this._labelService?this._labelService.getUriLabel(this._model.uri):"RELATIVE_FILEPATH"===t&&this._labelService?this._labelService.getUriLabel(this._model.uri,{relative:!0,noPrefix:!0}):void 0}}]),e}(),H1=function(){function e(t,n,i,r){(0,X.Z)(this,e),this._readClipboardText=t,this._selectionIdx=n,this._selectionCount=i,this._spread=r}return(0,J.Z)(e,[{key:"resolve",value:function(e){if("CLIPBOARD"===e.name){var t=this._readClipboardText();if(t){if(this._spread){var n=t.split(/\r\n|\n|\r/).filter((function(e){return!(0,Dz.m5)(e)}));if(n.length===this._selectionCount)return n[this._selectionIdx]}return t}}}}]),e}(),B1=function(){function e(t,n){(0,X.Z)(this,e),this._model=t,this._selection=n}return(0,J.Z)(e,[{key:"resolve",value:function(e){var t=e.name,n=this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber,this._selection.selectionStartColumn),i=Uq.zu.getComments(n);if(i)return"LINE_COMMENT"===t?i.lineCommentToken||void 0:"BLOCK_COMMENT_START"===t?i.blockCommentStartToken||void 0:"BLOCK_COMMENT_END"===t&&i.blockCommentEndToken||void 0}}]),e}(),z1=function(){function e(){(0,X.Z)(this,e)}return(0,J.Z)(e,[{key:"resolve",value:function(t){var n=t.name;return"CURRENT_YEAR"===n?String((new Date).getFullYear()):"CURRENT_YEAR_SHORT"===n?String((new Date).getFullYear()).slice(-2):"CURRENT_MONTH"===n?String((new Date).getMonth().valueOf()+1).padStart(2,"0"):"CURRENT_DATE"===n?String((new Date).getDate().valueOf()).padStart(2,"0"):"CURRENT_HOUR"===n?String((new Date).getHours().valueOf()).padStart(2,"0"):"CURRENT_MINUTE"===n?String((new Date).getMinutes().valueOf()).padStart(2,"0"):"CURRENT_SECOND"===n?String((new Date).getSeconds().valueOf()).padStart(2,"0"):"CURRENT_DAY_NAME"===n?e.dayNames[(new Date).getDay()]:"CURRENT_DAY_NAME_SHORT"===n?e.dayNamesShort[(new Date).getDay()]:"CURRENT_MONTH_NAME"===n?e.monthNames[(new Date).getMonth()]:"CURRENT_MONTH_NAME_SHORT"===n?e.monthNamesShort[(new Date).getMonth()]:"CURRENT_SECONDS_UNIX"===n?String(Math.floor(Date.now()/1e3)):void 0}}]),e}();z1.dayNames=[yB.N("Sunday","Sunday"),yB.N("Monday","Monday"),yB.N("Tuesday","Tuesday"),yB.N("Wednesday","Wednesday"),yB.N("Thursday","Thursday"),yB.N("Friday","Friday"),yB.N("Saturday","Saturday")],z1.dayNamesShort=[yB.N("SundayShort","Sun"),yB.N("MondayShort","Mon"),yB.N("TuesdayShort","Tue"),yB.N("WednesdayShort","Wed"),yB.N("ThursdayShort","Thu"),yB.N("FridayShort","Fri"),yB.N("SaturdayShort","Sat")],z1.monthNames=[yB.N("January","January"),yB.N("February","February"),yB.N("March","March"),yB.N("April","April"),yB.N("May","May"),yB.N("June","June"),yB.N("July","July"),yB.N("August","August"),yB.N("September","September"),yB.N("October","October"),yB.N("November","November"),yB.N("December","December")],z1.monthNamesShort=[yB.N("JanuaryShort","Jan"),yB.N("FebruaryShort","Feb"),yB.N("MarchShort","Mar"),yB.N("AprilShort","Apr"),yB.N("MayShort","May"),yB.N("JuneShort","Jun"),yB.N("JulyShort","Jul"),yB.N("AugustShort","Aug"),yB.N("SeptemberShort","Sep"),yB.N("OctoberShort","Oct"),yB.N("NovemberShort","Nov"),yB.N("DecemberShort","Dec")];var W1=function(){function e(t){(0,X.Z)(this,e),this._workspaceService=t}return(0,J.Z)(e,[{key:"resolve",value:function(e){if(this._workspaceService){var t=function(e){return e.configuration?{id:e.id,configPath:e.configuration}:1===e.folders.length?{id:e.id,uri:e.folders[0].uri}:void 0}(this._workspaceService.getWorkspace());if(t)return"WORKSPACE_NAME"===e.name?this._resolveWorkspaceName(t):"WORKSPACE_FOLDER"===e.name?this._resoveWorkspacePath(t):void 0}}},{key:"_resolveWorkspaceName",value:function(e){if(I1(e))return M1.EZ(e.uri.path);var t=M1.EZ(e.configPath.path);return t.endsWith(T1)&&(t=t.substr(0,t.length-T1.length-1)),t}},{key:"_resoveWorkspacePath",value:function(e){if(I1(e))return nY(e.uri.fsPath);var t=M1.EZ(e.configPath.path),n=e.configPath.fsPath;return n.endsWith(t)&&(n=n.substr(0,n.length-t.length-1)),n?nY(n):"/"}}]),e}(),V1=function(){function e(){(0,X.Z)(this,e)}return(0,J.Z)(e,[{key:"resolve",value:function(e){var t=e.name;return"RANDOM"===t?Math.random().toString().slice(-6):"RANDOM_HEX"===t?Math.random().toString(16).slice(-6):"UUID"===t?function(){O1(A1),A1[6]=15&A1[6]|64,A1[8]=63&A1[8]|128;var e=0,t="";return t+=R1[A1[e++]],t+=R1[A1[e++]],t+=R1[A1[e++]],t+=R1[A1[e++]],t+="-",t+=R1[A1[e++]],t+=R1[A1[e++]],t+="-",t+=R1[A1[e++]],t+=R1[A1[e++]],t+="-",t+=R1[A1[e++]],t+=R1[A1[e++]],t+="-",t+=R1[A1[e++]],t+=R1[A1[e++]],t+=R1[A1[e++]],t+=R1[A1[e++]],t+=R1[A1[e++]],t+R1[A1[e++]]}():void 0}}]),e}();(0,$B.Ic)((function(e,t){function n(t){var n=e.getColor(t);return n?n.toString():"transparent"}t.addRule(".monaco-editor .snippet-placeholder { background-color: ".concat(n(GB.u2),"; outline-color: ").concat(n(GB.Pk),"; }")),t.addRule(".monaco-editor .finish-snippet-placeholder { background-color: ".concat(n(GB.I1),"; outline-color: ").concat(n(GB.U6),"; }"))}));var Y1=function(){function e(t,n,i,r){(0,X.Z)(this,e),this._editor=t,this._snippet=n,this._offset=i,this._snippetLineLeadingWhitespace=r,this._nestingLevel=1,this._placeholderGroups=(0,SB.vM)(n.placeholders,u1.compareByIndex),this._placeholderGroupsIdx=-1}return(0,J.Z)(e,[{key:"dispose",value:function(){this._placeholderDecorations&&this._editor.deltaDecorations((0,Ct.Z)(this._placeholderDecorations.values()),[]),this._placeholderGroups.length=0}},{key:"_initDecorations",value:function(){var t=this;if(!this._placeholderDecorations){this._placeholderDecorations=new Map;var n=this._editor.getModel();this._editor.changeDecorations((function(i){var r,o=(0,Na.Z)(t._snippet.placeholders);try{for(o.s();!(r=o.n()).done;){var a=r.value,s=t._snippet.offset(a),u=t._snippet.fullLen(a),l=YB.e.fromPositions(n.getPositionAt(t._offset+s),n.getPositionAt(t._offset+s+u)),c=a.isFinalTabstop?e._decor.inactiveFinal:e._decor.inactive,d=i.addDecoration(l,c);t._placeholderDecorations.set(a,d)}}catch(h){o.e(h)}finally{o.f()}}))}}},{key:"move",value:function(t){var n=this;if(!this._editor.hasModel())return[];if(this._initDecorations(),this._placeholderGroupsIdx>=0){var i,r=[],o=(0,Na.Z)(this._placeholderGroups[this._placeholderGroupsIdx]);try{for(o.s();!(i=o.n()).done;){var a=i.value;if(a.transform){for(var s=this._placeholderDecorations.get(a),u=this._editor.getModel().getDecorationRange(s),l=this._editor.getModel().getValueInRange(u),c=a.transform.resolve(l).split(/\r\n|\r|\n/),d=1;d<c.length;d++)c[d]=this._editor.getModel().normalizeIndentation(this._snippetLineLeadingWhitespace+c[d]);r.push(Yq.h.replace(u,c.join(this._editor.getModel().getEOL())))}}}catch(p){o.e(p)}finally{o.f()}r.length>0&&this._editor.executeEdits("snippet.placeholderTransform",r)}var h=!1;!0===t&&this._placeholderGroupsIdx<this._placeholderGroups.length-1?(this._placeholderGroupsIdx+=1,h=!0):!1===t&&this._placeholderGroupsIdx>0&&(this._placeholderGroupsIdx-=1,h=!0);var f=this._editor.getModel().changeDecorations((function(t){var i,r=new Set,o=[],a=(0,Na.Z)(n._placeholderGroups[n._placeholderGroupsIdx]);try{for(a.s();!(i=a.n()).done;){var s=i.value,u=n._placeholderDecorations.get(s),l=n._editor.getModel().getDecorationRange(u);o.push(new wB.Y(l.startLineNumber,l.startColumn,l.endLineNumber,l.endColumn)),h=h&&n._hasPlaceholderBeenCollapsed(s),t.changeDecorationOptions(u,s.isFinalTabstop?e._decor.activeFinal:e._decor.active),r.add(s);var c,d=(0,Na.Z)(n._snippet.enclosingPlaceholders(s));try{for(d.s();!(c=d.n()).done;){var f=c.value,g=n._placeholderDecorations.get(f);t.changeDecorationOptions(g,f.isFinalTabstop?e._decor.activeFinal:e._decor.active),r.add(f)}}catch(p){d.e(p)}finally{d.f()}}}catch(p){a.e(p)}finally{a.f()}var v,m=(0,Na.Z)(n._placeholderDecorations);try{for(m.s();!(v=m.n()).done;){var _=(0,ne.Z)(v.value,2),y=_[0],b=_[1];r.has(y)||t.changeDecorationOptions(b,y.isFinalTabstop?e._decor.inactiveFinal:e._decor.inactive)}}catch(p){m.e(p)}finally{m.f()}return o}));return h?this.move(t):null!==f&&void 0!==f?f:[]}},{key:"_hasPlaceholderBeenCollapsed",value:function(e){for(var t=e;t;){if(t instanceof u1){var n=this._placeholderDecorations.get(t);if(this._editor.getModel().getDecorationRange(n).isEmpty()&&t.toString().length>0)return!0}t=t.parent}return!1}},{key:"isAtFirstPlaceholder",get:function(){return this._placeholderGroupsIdx<=0||0===this._placeholderGroups.length}},{key:"isAtLastPlaceholder",get:function(){return this._placeholderGroupsIdx===this._placeholderGroups.length-1}},{key:"hasPlaceholder",get:function(){return this._snippet.placeholders.length>0}},{key:"computePossibleSelections",value:function(){var e,t=new Map,n=(0,Na.Z)(this._placeholderGroups);try{for(n.s();!(e=n.n()).done;){var i,r=e.value,o=void 0,a=(0,Na.Z)(r);try{for(a.s();!(i=a.n()).done;){var s=i.value;if(s.isFinalTabstop)break;o||(o=[],t.set(s.index,o));var u=this._placeholderDecorations.get(s),l=this._editor.getModel().getDecorationRange(u);if(!l){t.delete(s.index);break}o.push(l)}}catch(c){a.e(c)}finally{a.f()}}}catch(c){n.e(c)}finally{n.f()}return t}},{key:"choice",get:function(){return this._placeholderGroups[this._placeholderGroupsIdx][0].choice}},{key:"merge",value:function(t){var n=this,i=this._editor.getModel();this._nestingLevel*=10,this._editor.changeDecorations((function(r){var o,a=(0,Na.Z)(n._placeholderGroups[n._placeholderGroupsIdx]);try{for(a.s();!(o=a.n()).done;){var s=o.value,u=t.shift();console.assert(!u._placeholderDecorations);var l,c=u._snippet.placeholderInfo.last.index,d=(0,Na.Z)(u._snippet.placeholderInfo.all);try{for(d.s();!(l=d.n()).done;){var h=l.value;h.isFinalTabstop?h.index=s.index+(c+1)/n._nestingLevel:h.index=s.index+h.index/n._nestingLevel}}catch(w){d.e(w)}finally{d.f()}n._snippet.replace(s,u._snippet.children);var f=n._placeholderDecorations.get(s);r.removeDecoration(f),n._placeholderDecorations.delete(s);var p,g=(0,Na.Z)(u._snippet.placeholders);try{for(g.s();!(p=g.n()).done;){var v=p.value,m=u._snippet.offset(v),_=u._snippet.fullLen(v),y=YB.e.fromPositions(i.getPositionAt(u._offset+m),i.getPositionAt(u._offset+m+_)),b=r.addDecoration(y,e._decor.inactive);n._placeholderDecorations.set(v,b)}}catch(w){g.e(w)}finally{g.f()}}}catch(w){a.e(w)}finally{a.f()}n._placeholderGroups=(0,SB.vM)(n._snippet.placeholders,u1.compareByIndex)}))}}]),e}();Y1._decor={active:KB.qx.register({stickiness:0,className:"snippet-placeholder"}),inactive:KB.qx.register({stickiness:1,className:"snippet-placeholder"}),activeFinal:KB.qx.register({stickiness:1,className:"finish-snippet-placeholder"}),inactiveFinal:KB.qx.register({stickiness:1,className:"finish-snippet-placeholder"})};var U1={overwriteBefore:0,overwriteAfter:0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0},K1=function(){function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:U1;(0,X.Z)(this,e),this._templateMerges=[],this._snippets=[],this._editor=t,this._template=n,this._options=i}return(0,J.Z)(e,[{key:"dispose",value:function(){(0,WB.B9)(this._snippets)}},{key:"_logInfo",value:function(){return'template="'.concat(this._template,'", merged_templates="').concat(this._templateMerges.join(" -> "),'"')}},{key:"insert",value:function(){var t=this;if(this._editor.hasModel()){var n=e.createEditsAndSnippets(this._editor,this._template,this._options.overwriteBefore,this._options.overwriteAfter,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer),i=n.edits,r=n.snippets;this._snippets=r,this._editor.executeEdits("snippet",i,(function(e){return t._snippets[0].hasPlaceholder?t._move(!0):e.filter((function(e){return!!e.identifier})).map((function(e){return wB.Y.fromPositions(e.range.getEndPosition())}))})),this._editor.revealRange(this._editor.getSelections()[0])}}},{key:"merge",value:function(t){var n=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:U1;if(this._editor.hasModel()){this._templateMerges.push([this._snippets[0]._nestingLevel,this._snippets[0]._placeholderGroupsIdx,t]);var r=e.createEditsAndSnippets(this._editor,t,i.overwriteBefore,i.overwriteAfter,!0,i.adjustWhitespace,i.clipboardText,i.overtypingCapturer),o=r.edits,a=r.snippets;this._editor.executeEdits("snippet",o,(function(e){var t,i=(0,Na.Z)(n._snippets);try{for(i.s();!(t=i.n()).done;){t.value.merge(a)}}catch(r){i.e(r)}finally{i.f()}return console.assert(0===a.length),n._snippets[0].hasPlaceholder?n._move(void 0):e.filter((function(e){return!!e.identifier})).map((function(e){return wB.Y.fromPositions(e.range.getEndPosition())}))}))}}},{key:"next",value:function(){var e=this._move(!0);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}},{key:"prev",value:function(){var e=this._move(!1);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}},{key:"_move",value:function(e){var t,n=[],i=(0,Na.Z)(this._snippets);try{for(i.s();!(t=i.n()).done;){var r=t.value.move(e);n.push.apply(n,(0,Ct.Z)(r))}}catch(o){i.e(o)}finally{i.f()}return n}},{key:"isAtFirstPlaceholder",get:function(){return this._snippets[0].isAtFirstPlaceholder}},{key:"isAtLastPlaceholder",get:function(){return this._snippets[0].isAtLastPlaceholder}},{key:"hasPlaceholder",get:function(){return this._snippets[0].hasPlaceholder}},{key:"choice",get:function(){return this._snippets[0].choice}},{key:"isSelectionWithinPlaceholders",value:function(){if(!this.hasPlaceholder)return!1;var e=this._editor.getSelections();if(e.length<this._snippets.length)return!1;var t,n=new Map,i=(0,Na.Z)(this._snippets);try{var r=function(){var i=t.value.computePossibleSelections();if(0===n.size){var r,o=(0,Na.Z)(i);try{for(o.s();!(r=o.n()).done;){var a=(0,ne.Z)(r.value,2),s=a[0],u=a[1];u.sort(YB.e.compareRangesUsingStarts);var l,c=(0,Na.Z)(e);try{for(c.s();!(l=c.n()).done;){var d=l.value;if(u[0].containsRange(d)){n.set(s,[]);break}}}catch(h){c.e(h)}finally{c.f()}}}catch(h){o.e(h)}finally{o.f()}}if(0===n.size)return{v:!1};n.forEach((function(e,t){e.push.apply(e,(0,Ct.Z)(i.get(t)))}))};for(i.s();!(t=i.n()).done;){var o=r();if("object"===typeof o)return o.v}}catch(h){i.e(h)}finally{i.f()}e.sort(YB.e.compareRangesUsingStarts);var a,s=(0,Na.Z)(n);try{for(s.s();!(a=s.n()).done;){var u=(0,ne.Z)(a.value,2),l=u[0],c=u[1];if(c.length===e.length){c.sort(YB.e.compareRangesUsingStarts);for(var d=0;d<c.length;d++)c[d].containsRange(e[d])||n.delete(l)}else n.delete(l)}}catch(h){s.e(h)}finally{s.f()}return n.size>0}}],[{key:"adjustWhitespace",value:function(e,t,n,i,r){var o,a=e.getLineContent(t.lineNumber),s=(0,Dz.V8)(a,0,t.column-1);return n.walk((function(t){if(!(t instanceof a1)||t.parent instanceof l1)return!0;var r=t.value.split(/\r\n|\r|\n/);if(i){var a=n.offset(t);if(0===a)r[0]=e.normalizeIndentation(r[0]);else{var u=(o=null!==o&&void 0!==o?o:n.toString()).charCodeAt(a-1);10!==u&&13!==u||(r[0]=e.normalizeIndentation(s+r[0]))}for(var l=1;l<r.length;l++)r[l]=e.normalizeIndentation(s+r[l])}var c=r.join(e.getEOL());return c!==t.value&&(t.parent.replace(t,[new a1(c)]),o=void 0),!0})),s}},{key:"adjustSelection",value:function(e,t,n,i){if(0!==n||0!==i){var r=t,o=r.positionLineNumber,a=r.positionColumn,s=a-n,u=a+i,l=e.validateRange({startLineNumber:o,startColumn:s,endLineNumber:o,endColumn:u});t=wB.Y.createWithDirection(l.startLineNumber,l.startColumn,l.endLineNumber,l.endColumn,t.getDirection())}return t}},{key:"createEditsAndSnippets",value:function(t,n,i,r,o,a,s,u){var l=[],c=[];if(!t.hasModel())return{edits:l,snippets:c};var d,h=t.getModel(),f=t.invokeWithinContext((function(e){return e.get(N1.ec,oW.jt)})),p=t.invokeWithinContext((function(e){return new j1(e.get(XY.e,oW.jt),h)})),g=function(){return s},v=0,m=h.getValueInRange(e.adjustSelection(h,t.getSelection(),i,0)),_=h.getValueInRange(e.adjustSelection(h,t.getSelection(),0,r)),y=h.getLineFirstNonWhitespaceColumn(t.getSelection().positionLineNumber),b=t.getSelections().map((function(e,t){return{selection:e,idx:t}})).sort((function(e,t){return YB.e.compareRangesUsingStarts(e.selection,t.selection)})),w=(0,Na.Z)(b);try{for(w.s();!(d=w.n()).done;){var C=d.value,k=C.selection,S=C.idx,x=e.adjustSelection(h,k,i,0),L=e.adjustSelection(h,k,0,r);m!==h.getValueInRange(x)&&(x=k),_!==h.getValueInRange(L)&&(L=k);var E=k.setStartPosition(x.startLineNumber,x.startColumn).setEndPosition(L.endLineNumber,L.endColumn),D=(new v1).parse(n,!0,o),N=E.getStartPosition(),M=e.adjustWhitespace(h,N,D,a||S>0&&y!==h.getLineFirstNonWhitespaceColumn(k.positionLineNumber),!0);D.resolveVariables(new Z1([p,new H1(g,S,b.length,"spread"===t.getOption(67)),new F1(h,k,S,u),new B1(h,k),new z1,new W1(f),new V1]));var T=h.getOffsetAt(N)+v;v+=D.toString().length-h.getValueLengthInRange(E),l[S]=Yq.h.replace(E,D.toString()),l[S].identifier={major:S,minor:0},c[S]=new Y1(t,D,T,M)}}catch(I){w.e(I)}finally{w.f()}return{edits:l,snippets:c}}}]),e}(),q1=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},G1=function(e,t){return function(n,i){t(n,i,e)}},$1={overwriteBefore:0,overwriteAfter:0,undoStopBefore:!0,undoStopAfter:!0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0},Q1=function(){function e(t,n,i){(0,X.Z)(this,e),this._editor=t,this._logService=n,this._snippetListener=new WB.SL,this._modelVersionId=-1,this._inSnippet=e.InSnippetMode.bindTo(i),this._hasNextTabstop=e.HasNextTabstop.bindTo(i),this._hasPrevTabstop=e.HasPrevTabstop.bindTo(i)}return(0,J.Z)(e,[{key:"dispose",value:function(){var e;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),null===(e=this._session)||void 0===e||e.dispose(),this._snippetListener.dispose()}},{key:"insert",value:function(e,t){try{this._doInsert(e,"undefined"===typeof t?$1:Object.assign(Object.assign({},$1),t))}catch(n){this.cancel(),this._logService.error(n),this._logService.error("snippet_error"),this._logService.error("insert_template=",e),this._logService.error("existing_template=",this._session?this._session._logInfo():"<no_session>")}}},{key:"_doInsert",value:function(e,t){var n=this;this._editor.hasModel()&&(this._snippetListener.clear(),t.undoStopBefore&&this._editor.getModel().pushStackElement(),this._session?this._session.merge(e,t):(this._modelVersionId=this._editor.getModel().getAlternativeVersionId(),this._session=new K1(this._editor,e,t),this._session.insert()),t.undoStopAfter&&this._editor.getModel().pushStackElement(),this._updateState(),this._snippetListener.add(this._editor.onDidChangeModelContent((function(e){return e.isFlush&&n.cancel()}))),this._snippetListener.add(this._editor.onDidChangeModel((function(){return n.cancel()}))),this._snippetListener.add(this._editor.onDidChangeCursorSelection((function(){return n._updateState()}))))}},{key:"_updateState",value:function(){if(this._session&&this._editor.hasModel()){if(this._modelVersionId===this._editor.getModel().getAlternativeVersionId())return this.cancel();if(!this._session.hasPlaceholder)return this.cancel();if(this._session.isAtLastPlaceholder||!this._session.isSelectionWithinPlaceholders())return this.cancel();this._inSnippet.set(!0),this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder),this._hasNextTabstop.set(!this._session.isAtLastPlaceholder),this._handleChoice()}}},{key:"_handleChoice",value:function(){var e=this;if(this._session&&this._editor.hasModel()){var t,n,i=this._session.choice;if(i){if(this._currentChoice!==i){this._currentChoice=i,this._editor.setSelections(this._editor.getSelections().map((function(e){return wB.Y.fromPositions(e.getStartPosition())})));var r=(0,ne.Z)(i.options,1)[0];t=this._editor,n=i.options.map((function(t,n){return{kind:13,label:t.value,insertText:t.value,sortText:"a".repeat(n+1),range:YB.e.fromPositions(e._editor.getPosition(),e._editor.getPosition().delta(0,r.value.length))}})),setTimeout((function(){var e;(e=D1.onlyOnceSuggestions).push.apply(e,(0,Ct.Z)(n)),t.getContribution("editor.contrib.suggestController").triggerSuggest((new Set).add(D1))}),0)}}else this._currentChoice=void 0}else this._currentChoice=void 0}},{key:"finish",value:function(){for(;this._inSnippet.get();)this.next()}},{key:"cancel",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),this._snippetListener.clear(),null===(e=this._session)||void 0===e||e.dispose(),this._session=void 0,this._modelVersionId=-1,t&&this._editor.setSelections([this._editor.getSelection()])}},{key:"prev",value:function(){this._session&&this._session.prev(),this._updateState()}},{key:"next",value:function(){this._session&&this._session.next(),this._updateState()}},{key:"isInSnippet",value:function(){return Boolean(this._inSnippet.get())}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();Q1.ID="snippetController2",Q1.InSnippetMode=new kB.uy("inSnippetMode",!1,(0,yB.N)("inSnippetMode","Whether the editor in current in snippet mode")),Q1.HasNextTabstop=new kB.uy("hasNextTabstop",!1,(0,yB.N)("hasNextTabstop","Whether there is a next tab stop when in snippet mode")),Q1.HasPrevTabstop=new kB.uy("hasPrevTabstop",!1,(0,yB.N)("hasPrevTabstop","Whether there is a previous tab stop when in snippet mode")),Q1=q1([G1(1,P0.VZ),G1(2,kB.i6)],Q1),(0,_B._K)(Q1.ID,Q1);var X1=_B._l.bindToContribution(Q1.get);(0,_B.fK)(new X1({id:"jumpToNextSnippetPlaceholder",precondition:kB.Ao.and(Q1.InSnippetMode,Q1.HasNextTabstop),handler:function(e){return e.next()},kbOpts:{weight:130,kbExpr:bB.u.editorTextFocus,primary:2}})),(0,_B.fK)(new X1({id:"jumpToPrevSnippetPlaceholder",precondition:kB.Ao.and(Q1.InSnippetMode,Q1.HasPrevTabstop),handler:function(e){return e.prev()},kbOpts:{weight:130,kbExpr:bB.u.editorTextFocus,primary:1026}})),(0,_B.fK)(new X1({id:"leaveSnippet",precondition:Q1.InSnippetMode,handler:function(e){return e.cancel(!0)},kbOpts:{weight:130,kbExpr:bB.u.editorTextFocus,primary:9,secondary:[1033]}})),(0,_B.fK)(new X1({id:"acceptSnippet",precondition:Q1.InSnippetMode,handler:function(e){return e.finish()}}));var J1=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},e2=function(e,t){return function(n,i){t(n,i,e)}},t2=function(){function e(t){(0,X.Z)(this,e),this.name=t}return(0,J.Z)(e,[{key:"select",value:function(e,t,n){if(0===n.length)return 0;for(var i=n[0].score[0],r=0;r<n.length;r++){var o=n[r],a=o.score,s=o.completion;if(a[0]!==i)break;if(s.preselect)return r}return 0}}]),e}(),n2=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,"first")}return(0,J.Z)(n,[{key:"memorize",value:function(e,t,n){}},{key:"toJSON",value:function(){}},{key:"fromJSON",value:function(){}}]),n}(t2),i2=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),(e=t.call(this,"recentlyUsed"))._cache=new gV.z6(300,.66),e._seq=0,e}return(0,J.Z)(n,[{key:"memorize",value:function(e,t,n){var i="".concat(e.getLanguageIdentifier().language,"/").concat(n.textLabel);this._cache.set(i,{touch:this._seq++,type:n.completion.kind,insertText:n.completion.insertText})}},{key:"select",value:function(e,t,i){if(0===i.length)return 0;var r=e.getLineContent(t.lineNumber).substr(t.column-10,t.column-1);if(/\s$/.test(r))return(0,Qz.Z)((0,Xz.Z)(n.prototype),"select",this).call(this,e,t,i);for(var o=i[0].score[0],a=-1,s=-1,u=-1,l=0;l<i.length&&i[l].score[0]===o;l++){var c="".concat(e.getLanguageIdentifier().language,"/").concat(i[l].textLabel),d=this._cache.peek(c);if(d&&d.touch>u&&d.type===i[l].completion.kind&&d.insertText===i[l].completion.insertText&&(u=d.touch,s=l),i[l].completion.preselect&&-1===a)return l}return-1!==s?s:-1!==a?a:0}},{key:"toJSON",value:function(){return this._cache.toJSON()}},{key:"fromJSON",value:function(e){this._cache.clear();var t,n=(0,Na.Z)(e);try{for(n.s();!(t=n.n()).done;){var i=(0,ne.Z)(t.value,2),r=i[0],o=i[1];o.touch=0,o.type="number"===typeof o.type?o.type:(0,Iz.jr)(o.type),this._cache.set(r,o)}}catch(a){n.e(a)}finally{n.f()}this._seq=this._cache.size}}]),n}(t2),r2=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),(e=t.call(this,"recentlyUsedByPrefix"))._trie=gV.Id.forStrings(),e._seq=0,e}return(0,J.Z)(n,[{key:"memorize",value:function(e,t,n){var i=e.getWordUntilPosition(t).word,r="".concat(e.getLanguageIdentifier().language,"/").concat(i);this._trie.set(r,{type:n.completion.kind,insertText:n.completion.insertText,touch:this._seq++})}},{key:"select",value:function(e,t,i){var r=e.getWordUntilPosition(t).word;if(!r)return(0,Qz.Z)((0,Xz.Z)(n.prototype),"select",this).call(this,e,t,i);var o="".concat(e.getLanguageIdentifier().language,"/").concat(r),a=this._trie.get(o);if(a||(a=this._trie.findSubstr(o)),a)for(var s=0;s<i.length;s++){var u=i[s].completion,l=u.kind,c=u.insertText;if(l===a.type&&c===a.insertText)return s}return(0,Qz.Z)((0,Xz.Z)(n.prototype),"select",this).call(this,e,t,i)}},{key:"toJSON",value:function(){var e=[];return this._trie.forEach((function(t,n){return e.push([n,t])})),e.sort((function(e,t){return-(e[1].touch-t[1].touch)})).forEach((function(e,t){return e[1].touch=t})),e.slice(0,200)}},{key:"fromJSON",value:function(e){if(this._trie.clear(),e.length>0){this._seq=e[0][1].touch+1;var t,n=(0,Na.Z)(e);try{for(n.s();!(t=n.n()).done;){var i=(0,ne.Z)(t.value,2),r=i[0],o=i[1];o.type="number"===typeof o.type?o.type:(0,Iz.jr)(o.type),this._trie.set(r,o)}}catch(a){n.e(a)}finally{n.f()}}}}]),n}(t2),o2=function(){function e(t,n,i){var r=this;(0,X.Z)(this,e),this._storageService=t,this._modeService=n,this._configService=i,this._disposables=new WB.SL,this._persistSoon=new zB.pY((function(){return r._saveState()}),500),this._disposables.add(t.onWillSaveState((function(e){e.reason===vV.fk.SHUTDOWN&&r._saveState()})))}return(0,J.Z)(e,[{key:"dispose",value:function(){this._disposables.dispose(),this._persistSoon.dispose()}},{key:"memorize",value:function(e,t,n){this._withStrategy(e,t).memorize(e,t,n),this._persistSoon.schedule()}},{key:"select",value:function(e,t,n){return this._withStrategy(e,t).select(e,t,n)}},{key:"_withStrategy",value:function(t,n){var i,r,o=this._configService.getValue("editor.suggestSelection",{overrideIdentifier:null===(i=this._modeService.getLanguageIdentifier(t.getLanguageIdAtPosition(n.lineNumber,n.column)))||void 0===i?void 0:i.language,resource:t.uri});if((null===(r=this._strategy)||void 0===r?void 0:r.name)!==o){this._saveState();var a=e._strategyCtors.get(o)||n2;this._strategy=new a;try{var s=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,u=this._storageService.get("".concat(e._storagePrefix,"/").concat(o),s);u&&this._strategy.fromJSON(JSON.parse(u))}catch(l){}}return this._strategy}},{key:"_saveState",value:function(){if(this._strategy){var t=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,n=JSON.stringify(this._strategy);this._storageService.store("".concat(e._storagePrefix,"/").concat(this._strategy.name),n,t,1)}}}]),e}();o2._strategyCtors=new Map([["recentlyUsedByPrefix",r2],["recentlyUsed",i2],["first",n2]]),o2._storagePrefix="suggest/memories",o2=J1([e2(0,vV.Uy),e2(1,PV.h),e2(2,IV.Ui)],o2);var a2=(0,oW.yh)("ISuggestMemories");(0,pV.z)(a2,o2,!0);var s2=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},u2=function(e,t){return function(n,i){t(n,i,e)}},l2=function(){function e(t,n){(0,X.Z)(this,e),this._editor=t,this._index=0,this._ckOtherSuggestions=e.OtherSuggestions.bindTo(n)}return(0,J.Z)(e,[{key:"dispose",value:function(){this.reset()}},{key:"reset",value:function(){var e;this._ckOtherSuggestions.reset(),null===(e=this._listener)||void 0===e||e.dispose(),this._model=void 0,this._acceptNext=void 0,this._ignore=!1}},{key:"set",value:function(t,n){var i=this,r=t.model,o=t.index;0!==r.items.length?e._moveIndex(!0,r,o)!==o?(this._acceptNext=n,this._model=r,this._index=o,this._listener=this._editor.onDidChangeCursorPosition((function(){i._ignore||i.reset()})),this._ckOtherSuggestions.set(!0)):this.reset():this.reset()}},{key:"next",value:function(){this._move(!0)}},{key:"prev",value:function(){this._move(!1)}},{key:"_move",value:function(t){if(this._model)try{this._ignore=!0,this._index=e._moveIndex(t,this._model,this._index),this._acceptNext({index:this._index,item:this._model.items[this._index],model:this._model})}finally{this._ignore=!1}}}],[{key:"_moveIndex",value:function(e,t,n){for(var i=n;(i=(i+t.items.length+(e?1:-1))%t.items.length)!==n&&t.items[i].completion.additionalTextEdits;);return i}}]),e}();l2.OtherSuggestions=new kB.uy("hasOtherSuggestions",!1),l2=s2([u2(1,kB.i6)],l2);var c2=function(){function e(t,n,i,r,o,a,s){(0,X.Z)(this,e),this.clipboardText=s,this._snippetCompareFn=e._compareCompletionItems,this._items=t,this._column=n,this._wordDistance=r,this._options=o,this._refilterKind=1,this._lineContext=i,"top"===a?this._snippetCompareFn=e._compareCompletionItemsSnippetsUp:"bottom"===a&&(this._snippetCompareFn=e._compareCompletionItemsSnippetsDown)}return(0,J.Z)(e,[{key:"lineContext",get:function(){return this._lineContext},set:function(e){this._lineContext.leadingLineContent===e.leadingLineContent&&this._lineContext.characterCountDelta===e.characterCountDelta||(this._refilterKind=this._lineContext.characterCountDelta<e.characterCountDelta&&this._filteredItems?2:1,this._lineContext=e)}},{key:"items",get:function(){return this._ensureCachedState(),this._filteredItems}},{key:"allProvider",get:function(){return this._ensureCachedState(),this._providerInfo.keys()}},{key:"incomplete",get:function(){this._ensureCachedState();var e,t=new Set,n=(0,Na.Z)(this._providerInfo);try{for(n.s();!(e=n.n()).done;){var i=(0,ne.Z)(e.value,2),r=i[0];i[1]&&t.add(r)}}catch(o){n.e(o)}finally{n.f()}return t}},{key:"adopt",value:function(e){for(var t=[],n=0;n<this._items.length;)e.has(this._items[n].provider)?n++:(t.push(this._items[n]),this._items[n]=this._items[this._items.length-1],this._items.pop());return this._refilterKind=1,t}},{key:"stats",get:function(){return this._ensureCachedState(),this._stats}},{key:"_ensureCachedState",value:function(){0!==this._refilterKind&&this._createCachedState()}},{key:"_createCachedState",value:function(){this._providerInfo=new Map;for(var e=[],t=this._lineContext,n=t.leadingLineContent,i=t.characterCountDelta,r="",o="",a=1===this._refilterKind?this._items:this._filteredItems,s=[],u=!this._options.filterGraceful||a.length>2e3?NK.EW:NK.l7,l=0;l<a.length;l++){var c=a[l];if(!c.isInvalid){this._providerInfo.set(c.provider,Boolean(c.container.incomplete));var d=c.position.column-c.editStart.column,h=d+i-(c.position.column-this._column);if(r.length!==h&&(o=(r=0===h?"":n.slice(-h)).toLowerCase()),c.word=r,0===h)c.score=NK.CL.Default;else{for(var f=0;f<d;){var p=r.charCodeAt(f);if(32!==p&&9!==p)break;f+=1}if(f>=h)c.score=NK.CL.Default;else if("string"===typeof c.completion.filterText){var g=u(r,o,f,c.completion.filterText,c.filterTextLow,0,!1);if(!g)continue;0===(0,Dz.zY)(c.completion.filterText,c.textLabel)?c.score=g:(c.score=(0,NK.jB)(r,o,f,c.textLabel,c.labelLow,0),c.score[0]=g[0])}else{var v=u(r,o,f,c.textLabel,c.labelLow,0,!1);if(!v)continue;c.score=v}}c.idx=l,c.distance=this._wordDistance.distance(c.position,c.completion),s.push(c),e.push(c.textLabel.length)}}this._filteredItems=s.sort(this._snippetCompareFn),this._refilterKind=0,this._stats={pLabelLen:e.length?(0,SB.HW)(e.length-.85,e,(function(e,t){return e-t})):0}}}],[{key:"_compareCompletionItems",value:function(e,t){return e.score[0]>t.score[0]?-1:e.score[0]<t.score[0]?1:e.distance<t.distance?-1:e.distance>t.distance?1:e.idx<t.idx?-1:e.idx>t.idx?1:0}},{key:"_compareCompletionItemsSnippetsDown",value:function(t,n){if(t.completion.kind!==n.completion.kind){if(27===t.completion.kind)return 1;if(27===n.completion.kind)return-1}return e._compareCompletionItems(t,n)}},{key:"_compareCompletionItemsSnippetsUp",value:function(t,n){if(t.completion.kind!==n.completion.kind){if(27===t.completion.kind)return-1;if(27===n.completion.kind)return 1}return e._compareCompletionItems(t,n)}}]),e}(),d2=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},h2=function(){function e(){(0,X.Z)(this,e)}return(0,J.Z)(e,null,[{key:"create",value:function(t,n){return d2(this,void 0,void 0,fn().mark((function i(){var r,o,a,s,u,l,c;return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(n.getOption(103).localityBonus){i.next=2;break}return i.abrupt("return",e.None);case 2:if(n.hasModel()){i.next=4;break}return i.abrupt("return",e.None);case 4:if(r=n.getModel(),o=n.getPosition(),t.canComputeWordRanges(r.uri)){i.next=8;break}return i.abrupt("return",e.None);case 8:return i.next=10,(new G0).provideSelectionRanges(r,[o]);case 10:if(a=i.sent,s=(0,ne.Z)(a,1),0!==(u=s[0]).length){i.next=15;break}return i.abrupt("return",e.None);case 15:return i.next=17,t.computeWordRanges(r.uri,u[0].range);case 17:if(l=i.sent){i.next=20;break}return i.abrupt("return",e.None);case 20:return c=r.getWordUntilPosition(o),delete l[c.word],i.abrupt("return",new(function(e){(0,ee.Z)(i,e);var t=(0,te.Z)(i);function i(){return(0,X.Z)(this,i),t.apply(this,arguments)}return(0,J.Z)(i,[{key:"distance",value:function(e,t){if(!o.equals(n.getPosition()))return 0;if(17===t.kind)return 2<<20;var i="string"===typeof t.label?t.label:t.label.name,r=l[i];if((0,SB.XY)(r))return 2<<20;var a,s=(0,SB.ry)(r,YB.e.fromPositions(e),YB.e.compareRangesUsingStarts),c=s>=0?r[s]:r[Math.max(0,~s-1)],d=u.length,h=(0,Na.Z)(u);try{for(h.s();!(a=h.n()).done;){var f=a.value;if(!YB.e.containsRange(f.range,c))break;d-=1}}catch(p){h.e(p)}finally{h.f()}return d}}]),i}(e)));case 23:case"end":return i.stop()}}),i)})))}}]),e}();h2.None=new(function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"distance",value:function(){return 0}}]),n}(h2));var f2=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},p2=function(e,t){return function(n,i){t(n,i,e)}},g2=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},v2=function(){function e(t,n,i,r){(0,X.Z)(this,e),this.leadingLineContent=t.getLineContent(n.lineNumber).substr(0,n.column-1),this.leadingWord=t.getWordUntilPosition(n),this.lineNumber=n.lineNumber,this.column=n.column,this.auto=i,this.shy=r}return(0,J.Z)(e,null,[{key:"shouldAutoTrigger",value:function(e){if(!e.hasModel())return!1;var t=e.getModel(),n=e.getPosition();t.tokenizeIfCheap(n.lineNumber);var i=t.getWordAtPosition(n);return!!i&&(i.endColumn===n.column&&!!isNaN(Number(i.word)))}}]),e}(),m2=function(){function e(t,n,i,r,o){var a=this;(0,X.Z)(this,e),this._editor=t,this._editorWorkerService=n,this._clipboardService=i,this._telemetryService=r,this._logService=o,this._toDispose=new WB.SL,this._quickSuggestDelay=10,this._triggerCharacterListener=new WB.SL,this._triggerQuickSuggest=new zB._F,this._state=0,this._completionDisposables=new WB.SL,this._onDidCancel=new _W.Q5,this._onDidTrigger=new _W.Q5,this._onDidSuggest=new _W.Q5,this.onDidCancel=this._onDidCancel.event,this.onDidTrigger=this._onDidTrigger.event,this.onDidSuggest=this._onDidSuggest.event,this._telemetryGate=0,this._currentSelection=this._editor.getSelection()||new wB.Y(1,1,1,1),this._toDispose.add(this._editor.onDidChangeModel((function(){a._updateTriggerCharacters(),a.cancel()}))),this._toDispose.add(this._editor.onDidChangeModelLanguage((function(){a._updateTriggerCharacters(),a.cancel()}))),this._toDispose.add(this._editor.onDidChangeConfiguration((function(){a._updateTriggerCharacters(),a._updateQuickSuggest()}))),this._toDispose.add(Iz.KZ.onDidChange((function(){a._updateTriggerCharacters(),a._updateActiveSuggestSession()}))),this._toDispose.add(this._editor.onDidChangeCursorSelection((function(e){a._onCursorChange(e)})));var s=!1;this._toDispose.add(this._editor.onDidCompositionStart((function(){s=!0}))),this._toDispose.add(this._editor.onDidCompositionEnd((function(){s=!1,a._refilterCompletionItems()}))),this._toDispose.add(this._editor.onDidChangeModelContent((function(){s||a._refilterCompletionItems()}))),this._updateTriggerCharacters(),this._updateQuickSuggest()}return(0,J.Z)(e,[{key:"dispose",value:function(){(0,WB.B9)(this._triggerCharacterListener),(0,WB.B9)([this._onDidCancel,this._onDidSuggest,this._onDidTrigger,this._triggerQuickSuggest]),this._toDispose.dispose(),this._completionDisposables.dispose(),this.cancel()}},{key:"_updateQuickSuggest",value:function(){this._quickSuggestDelay=this._editor.getOption(76),(isNaN(this._quickSuggestDelay)||!this._quickSuggestDelay&&0!==this._quickSuggestDelay||this._quickSuggestDelay<0)&&(this._quickSuggestDelay=10)}},{key:"_updateTriggerCharacters",value:function(){var e=this;if(this._triggerCharacterListener.clear(),!this._editor.getOption(77)&&this._editor.hasModel()&&this._editor.getOption(106)){var t,n=new Map,i=(0,Na.Z)(Iz.KZ.all(this._editor.getModel()));try{for(i.s();!(t=i.n()).done;){var r,o=t.value,a=(0,Na.Z)(o.triggerCharacters||[]);try{for(a.s();!(r=a.n()).done;){var s=r.value,u=n.get(s);u||((u=new Set).add(p1),n.set(s,u)),u.add(o)}}catch(c){a.e(c)}finally{a.f()}}}catch(c){i.e(c)}finally{i.f()}var l=function(t){if(!t){var i=e._editor.getPosition();t=e._editor.getModel().getLineContent(i.lineNumber).substr(0,i.column-1)}var r="";(0,Dz.YK)(t.charCodeAt(t.length-1))?(0,Dz.ZG)(t.charCodeAt(t.length-2))&&(r=t.substr(t.length-2)):r=t.charAt(t.length-1);var o=n.get(r);if(o){var a=e._completionModel?{items:e._completionModel.adopt(o),clipboardText:e._completionModel.clipboardText}:void 0;e.trigger({auto:!0,shy:!1,triggerCharacter:r},Boolean(e._completionModel),o,a)}};this._triggerCharacterListener.add(this._editor.onDidType(l)),this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(l))}}},{key:"state",get:function(){return this._state}},{key:"cancel",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];0!==this._state&&(this._triggerQuickSuggest.cancel(),null===(e=this._requestToken)||void 0===e||e.cancel(),this._requestToken=void 0,this._state=0,this._completionModel=void 0,this._context=void 0,this._onDidCancel.fire({retrigger:t}))}},{key:"clear",value:function(){this._completionDisposables.clear()}},{key:"_updateActiveSuggestSession",value:function(){0!==this._state&&(this._editor.hasModel()&&Iz.KZ.has(this._editor.getModel())?this.trigger({auto:2===this._state,shy:!1},!0):this.cancel())}},{key:"_onCursorChange",value:function(e){var t=this;if(this._editor.hasModel()){var n=this._editor.getModel(),i=this._currentSelection;if(this._currentSelection=this._editor.getSelection(),!e.selection.isEmpty()||0!==e.reason&&3!==e.reason||"keyboard"!==e.source&&"deleteLeft"!==e.source)this.cancel();else if(Iz.KZ.has(n))if(0===this._state&&0===e.reason){if(!1===this._editor.getOption(75))return;if(!i.containsRange(this._currentSelection)&&!i.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition()))return;if(this._editor.getOption(103).snippetsPreventQuickSuggestions&&Q1.get(this._editor).isInSnippet())return;this.cancel(),this._triggerQuickSuggest.cancelAndSet((function(){if(0===t._state&&v2.shouldAutoTrigger(t._editor)&&t._editor.hasModel()){var e=t._editor.getModel(),n=t._editor.getPosition(),i=t._editor.getOption(75);if(!1!==i){if(!0===i);else{e.tokenizeIfCheap(n.lineNumber);var r=e.getLineTokens(n.lineNumber),o=r.getStandardTokenType(r.findTokenIndexAtOffset(Math.max(n.column-1-1,0)));if(!(i.other&&0===o||i.comments&&1===o||i.strings&&2===o))return}t.trigger({auto:!0,shy:!1})}}}),this._quickSuggestDelay)}else 0!==this._state&&3===e.reason&&this._refilterCompletionItems()}}},{key:"_refilterCompletionItems",value:function(){var e=this;Promise.resolve().then((function(){if(0!==e._state&&e._editor.hasModel()){var t=e._editor.getModel(),n=e._editor.getPosition(),i=new v2(t,n,2===e._state,!1);e._onNewContext(i)}}))}},{key:"trigger",value:function(t){var n,i=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0;if(this._editor.hasModel()){var s=this._editor.getModel(),u=t.auto,l=new v2(s,this._editor.getPosition(),u,t.shy);this.cancel(r),this._state=u?2:1,this._onDidTrigger.fire({auto:u,shy:t.shy,position:this._editor.getPosition()}),this._context=l;var c={triggerKind:null!==(n=t.triggerKind)&&void 0!==n?n:0};t.triggerCharacter&&(c={triggerKind:1,triggerCharacter:t.triggerCharacter}),this._requestToken=new Lz.A;var d=this._editor.getOption(98),h=1;switch(d){case"top":h=0;break;case"bottom":h=2}var f=e._createItemKindFilter(this._editor),p=h2.create(this._editorWorkerService,this._editor),g=S1(s,this._editor.getPosition(),new C1(h,f,o),c,this._requestToken.token);Promise.all([g,p]).then((function(e){var n=(0,ne.Z)(e,2),r=n[0],o=n[1];return g2(i,void 0,void 0,fn().mark((function e(){var n,i,s,l,c,d;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null===(n=this._requestToken)||void 0===n||n.dispose(),this._editor.hasModel()){e.next=3;break}return e.abrupt("return");case 3:if((i=null===a||void 0===a?void 0:a.clipboardText)||!r.needsClipboard){e.next=8;break}return e.next=7,this._clipboardService.readText();case 7:i=e.sent;case 8:if(0!==this._state){e.next=10;break}return e.abrupt("return");case 10:s=this._editor.getModel(),l=r.items,a&&(c=E1(h),l=l.concat(a.items).sort(c)),d=new v2(s,this._editor.getPosition(),u,t.shy),this._completionModel=new c2(l,this._context.column,{leadingLineContent:d.leadingLineContent,characterCountDelta:d.column-this._context.column},o,this._editor.getOption(103),this._editor.getOption(98),i),this._completionDisposables.add(r.disposable),this._onNewContext(d),this._reportDurationsTelemetry(r.durations);case 18:case"end":return e.stop()}}),e,this)})))})).catch(LB.dL)}}},{key:"_reportDurationsTelemetry",value:function(e){var t=this;this._telemetryGate++%230===0&&setTimeout((function(){t._telemetryService.publicLog2("suggest.durations.json",{data:JSON.stringify(e)}),t._logService.debug("suggest.durations.json",e)}))}},{key:"_onNewContext",value:function(e){if(this._context)if(e.lineNumber===this._context.lineNumber)if((0,Dz.V8)(e.leadingLineContent)===(0,Dz.V8)(this._context.leadingLineContent)){if(e.column<this._context.column)e.leadingWord.word?this.trigger({auto:this._context.auto,shy:!1},!0):this.cancel();else if(this._completionModel)if(0!==e.leadingWord.word.length&&e.leadingWord.startColumn>this._context.leadingWord.startColumn){var t,n=new Set(Iz.KZ.all(this._editor.getModel())),i=(0,Na.Z)(this._completionModel.allProvider);try{for(i.s();!(t=i.n()).done;){var r=t.value;n.delete(r)}}catch(c){i.e(c)}finally{i.f()}var o=this._completionModel.adopt(new Set);this.trigger({auto:this._context.auto,shy:!1},!0,n,{items:o,clipboardText:this._completionModel.clipboardText})}else if(e.column>this._context.column&&this._completionModel.incomplete.size>0&&0!==e.leadingWord.word.length){var a=this._completionModel.incomplete,s=this._completionModel.adopt(a);this.trigger({auto:2===this._state,shy:!1,triggerKind:2},!0,a,{items:s,clipboardText:this._completionModel.clipboardText})}else{var u=this._completionModel.lineContext,l=!1;if(this._completionModel.lineContext={leadingLineContent:e.leadingLineContent,characterCountDelta:e.column-this._context.column},0===this._completionModel.items.length){if(v2.shouldAutoTrigger(this._editor)&&this._context.leadingWord.endColumn<e.leadingWord.startColumn)return void this.trigger({auto:this._context.auto,shy:!1},!0);if(this._context.auto)return void this.cancel();if(this._completionModel.lineContext=u,(l=this._completionModel.items.length>0)&&0===e.leadingWord.word.length)return void this.cancel()}this._onDidSuggest.fire({completionModel:this._completionModel,auto:this._context.auto,shy:this._context.shy,isFrozen:l})}}else this.cancel();else this.cancel()}}],[{key:"_createItemKindFilter",value:function(e){var t=new Set;"none"===e.getOption(98)&&t.add(27);var n=e.getOption(103);return n.showMethods||t.add(0),n.showFunctions||t.add(1),n.showConstructors||t.add(2),n.showFields||t.add(3),n.showVariables||t.add(4),n.showClasses||t.add(5),n.showStructs||t.add(6),n.showInterfaces||t.add(7),n.showModules||t.add(8),n.showProperties||t.add(9),n.showEvents||t.add(10),n.showOperators||t.add(11),n.showUnits||t.add(12),n.showValues||t.add(13),n.showConstants||t.add(14),n.showEnums||t.add(15),n.showEnumMembers||t.add(16),n.showKeywords||t.add(17),n.showWords||t.add(18),n.showColors||t.add(19),n.showFiles||t.add(20),n.showReferences||t.add(21),n.showColors||t.add(22),n.showFolders||t.add(23),n.showTypeParameters||t.add(24),n.showSnippets||t.add(27),n.showUsers||t.add(25),n.showIssues||t.add(26),t}}]),e}();m2=f2([p2(1,tX.p),p2(2,pz.p),p2(3,RW.b),p2(4,P0.VZ)],m2);n(22410);var _2=(0,GB.P6)("symbolIcon.arrayForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.arrayForeground","The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),y2=(0,GB.P6)("symbolIcon.booleanForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.booleanForeground","The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),b2=(0,GB.P6)("symbolIcon.classForeground",{dark:"#EE9D28",light:"#D67E00",hc:"#EE9D28"},(0,yB.N)("symbolIcon.classForeground","The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),w2=(0,GB.P6)("symbolIcon.colorForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.colorForeground","The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),C2=(0,GB.P6)("symbolIcon.constantForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.constantForeground","The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),k2=(0,GB.P6)("symbolIcon.constructorForeground",{dark:"#B180D7",light:"#652D90",hc:"#B180D7"},(0,yB.N)("symbolIcon.constructorForeground","The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),S2=(0,GB.P6)("symbolIcon.enumeratorForeground",{dark:"#EE9D28",light:"#D67E00",hc:"#EE9D28"},(0,yB.N)("symbolIcon.enumeratorForeground","The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),x2=(0,GB.P6)("symbolIcon.enumeratorMemberForeground",{dark:"#75BEFF",light:"#007ACC",hc:"#75BEFF"},(0,yB.N)("symbolIcon.enumeratorMemberForeground","The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),L2=(0,GB.P6)("symbolIcon.eventForeground",{dark:"#EE9D28",light:"#D67E00",hc:"#EE9D28"},(0,yB.N)("symbolIcon.eventForeground","The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),E2=(0,GB.P6)("symbolIcon.fieldForeground",{dark:"#75BEFF",light:"#007ACC",hc:"#75BEFF"},(0,yB.N)("symbolIcon.fieldForeground","The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),D2=(0,GB.P6)("symbolIcon.fileForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.fileForeground","The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),N2=(0,GB.P6)("symbolIcon.folderForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.folderForeground","The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),M2=(0,GB.P6)("symbolIcon.functionForeground",{dark:"#B180D7",light:"#652D90",hc:"#B180D7"},(0,yB.N)("symbolIcon.functionForeground","The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),T2=(0,GB.P6)("symbolIcon.interfaceForeground",{dark:"#75BEFF",light:"#007ACC",hc:"#75BEFF"},(0,yB.N)("symbolIcon.interfaceForeground","The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),I2=(0,GB.P6)("symbolIcon.keyForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.keyForeground","The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),O2=(0,GB.P6)("symbolIcon.keywordForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.keywordForeground","The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),A2=(0,GB.P6)("symbolIcon.methodForeground",{dark:"#B180D7",light:"#652D90",hc:"#B180D7"},(0,yB.N)("symbolIcon.methodForeground","The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),R2=(0,GB.P6)("symbolIcon.moduleForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.moduleForeground","The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),P2=(0,GB.P6)("symbolIcon.namespaceForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.namespaceForeground","The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),Z2=(0,GB.P6)("symbolIcon.nullForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.nullForeground","The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),F2=(0,GB.P6)("symbolIcon.numberForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.numberForeground","The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),j2=(0,GB.P6)("symbolIcon.objectForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.objectForeground","The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),H2=(0,GB.P6)("symbolIcon.operatorForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.operatorForeground","The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),B2=(0,GB.P6)("symbolIcon.packageForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.packageForeground","The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),z2=(0,GB.P6)("symbolIcon.propertyForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.propertyForeground","The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),W2=(0,GB.P6)("symbolIcon.referenceForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.referenceForeground","The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),V2=(0,GB.P6)("symbolIcon.snippetForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.snippetForeground","The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),Y2=(0,GB.P6)("symbolIcon.stringForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.stringForeground","The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),U2=(0,GB.P6)("symbolIcon.structForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.structForeground","The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),K2=(0,GB.P6)("symbolIcon.textForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.textForeground","The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),q2=(0,GB.P6)("symbolIcon.typeParameterForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.typeParameterForeground","The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),G2=(0,GB.P6)("symbolIcon.unitForeground",{dark:GB.dR,light:GB.dR,hc:GB.dR},(0,yB.N)("symbolIcon.unitForeground","The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),$2=(0,GB.P6)("symbolIcon.variableForeground",{dark:"#75BEFF",light:"#007ACC",hc:"#75BEFF"},(0,yB.N)("symbolIcon.variableForeground","The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));(0,$B.Ic)((function(e,t){var n=e.getColor(_2);n&&t.addRule("".concat(bW.lA.symbolArray.cssSelector," { color: ").concat(n,"; }"));var i=e.getColor(y2);i&&t.addRule("".concat(bW.lA.symbolBoolean.cssSelector," { color: ").concat(i,"; }"));var r=e.getColor(b2);r&&t.addRule("".concat(bW.lA.symbolClass.cssSelector," { color: ").concat(r,"; }"));var o=e.getColor(A2);o&&t.addRule("".concat(bW.lA.symbolMethod.cssSelector," { color: ").concat(o,"; }"));var a=e.getColor(w2);a&&t.addRule("".concat(bW.lA.symbolColor.cssSelector," { color: ").concat(a,"; }"));var s=e.getColor(C2);s&&t.addRule("".concat(bW.lA.symbolConstant.cssSelector," { color: ").concat(s,"; }"));var u=e.getColor(k2);u&&t.addRule("".concat(bW.lA.symbolConstructor.cssSelector," { color: ").concat(u,"; }"));var l=e.getColor(S2);l&&t.addRule("\n\t\t\t".concat(bW.lA.symbolValue.cssSelector,",").concat(bW.lA.symbolEnum.cssSelector," { color: ").concat(l,"; }"));var c=e.getColor(x2);c&&t.addRule("".concat(bW.lA.symbolEnumMember.cssSelector," { color: ").concat(c,"; }"));var d=e.getColor(L2);d&&t.addRule("".concat(bW.lA.symbolEvent.cssSelector," { color: ").concat(d,"; }"));var h=e.getColor(E2);h&&t.addRule("".concat(bW.lA.symbolField.cssSelector," { color: ").concat(h,"; }"));var f=e.getColor(D2);f&&t.addRule("".concat(bW.lA.symbolFile.cssSelector," { color: ").concat(f,"; }"));var p=e.getColor(N2);p&&t.addRule("".concat(bW.lA.symbolFolder.cssSelector," { color: ").concat(p,"; }"));var g=e.getColor(M2);g&&t.addRule("".concat(bW.lA.symbolFunction.cssSelector," { color: ").concat(g,"; }"));var v=e.getColor(T2);v&&t.addRule("".concat(bW.lA.symbolInterface.cssSelector," { color: ").concat(v,"; }"));var m=e.getColor(I2);m&&t.addRule("".concat(bW.lA.symbolKey.cssSelector," { color: ").concat(m,"; }"));var _=e.getColor(O2);_&&t.addRule("".concat(bW.lA.symbolKeyword.cssSelector," { color: ").concat(_,"; }"));var y=e.getColor(R2);y&&t.addRule("".concat(bW.lA.symbolModule.cssSelector," { color: ").concat(y,"; }"));var b=e.getColor(P2);b&&t.addRule("".concat(bW.lA.symbolNamespace.cssSelector," { color: ").concat(b,"; }"));var w=e.getColor(Z2);w&&t.addRule("".concat(bW.lA.symbolNull.cssSelector," { color: ").concat(w,"; }"));var C=e.getColor(F2);C&&t.addRule("".concat(bW.lA.symbolNumber.cssSelector," { color: ").concat(C,"; }"));var k=e.getColor(j2);k&&t.addRule("".concat(bW.lA.symbolObject.cssSelector," { color: ").concat(k,"; }"));var S=e.getColor(H2);S&&t.addRule("".concat(bW.lA.symbolOperator.cssSelector," { color: ").concat(S,"; }"));var x=e.getColor(B2);x&&t.addRule("".concat(bW.lA.symbolPackage.cssSelector," { color: ").concat(x,"; }"));var L=e.getColor(z2);L&&t.addRule("".concat(bW.lA.symbolProperty.cssSelector," { color: ").concat(L,"; }"));var E=e.getColor(W2);E&&t.addRule("".concat(bW.lA.symbolReference.cssSelector," { color: ").concat(E,"; }"));var D=e.getColor(V2);D&&t.addRule("".concat(bW.lA.symbolSnippet.cssSelector," { color: ").concat(D,"; }"));var N=e.getColor(Y2);N&&t.addRule("".concat(bW.lA.symbolString.cssSelector," { color: ").concat(N,"; }"));var M=e.getColor(U2);M&&t.addRule("".concat(bW.lA.symbolStruct.cssSelector," { color: ").concat(M,"; }"));var T=e.getColor(K2);T&&t.addRule("".concat(bW.lA.symbolText.cssSelector," { color: ").concat(T,"; }"));var I=e.getColor(q2);I&&t.addRule("".concat(bW.lA.symbolTypeParameter.cssSelector," { color: ").concat(I,"; }"));var O=e.getColor(G2);O&&t.addRule("".concat(bW.lA.symbolUnit.cssSelector," { color: ").concat(O,"; }"));var A=e.getColor($2);A&&t.addRule("".concat(bW.lA.symbolVariable.cssSelector," { color: ").concat(A,"; }"))}));var Q2=n(92814),X2=function(){function e(){var t,n=this;(0,X.Z)(this,e),this._onDidWillResize=new _W.Q5,this.onDidWillResize=this._onDidWillResize.event,this._onDidResize=new _W.Q5,this.onDidResize=this._onDidResize.event,this._sashListener=new WB.SL,this._size=new aW.Dimension(0,0),this._minSize=new aW.Dimension(0,0),this._maxSize=new aW.Dimension(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),this.domNode=document.createElement("div"),this._eastSash=new lY.g(this.domNode,{getVerticalSashLeft:function(){return n._size.width}},{orientation:0}),this._westSash=new lY.g(this.domNode,{getVerticalSashLeft:function(){return 0}},{orientation:0}),this._northSash=new lY.g(this.domNode,{getHorizontalSashTop:function(){return 0}},{orientation:1,orthogonalEdge:lY.l.North}),this._southSash=new lY.g(this.domNode,{getHorizontalSashTop:function(){return n._size.height}},{orientation:1,orthogonalEdge:lY.l.South}),this._northSash.orthogonalStartSash=this._westSash,this._northSash.orthogonalEndSash=this._eastSash,this._southSash.orthogonalStartSash=this._westSash,this._southSash.orthogonalEndSash=this._eastSash;var i=0,r=0;this._sashListener.add(_W.ju.any(this._northSash.onDidStart,this._eastSash.onDidStart,this._southSash.onDidStart,this._westSash.onDidStart)((function(){void 0===t&&(n._onDidWillResize.fire(),t=n._size,i=0,r=0)}))),this._sashListener.add(_W.ju.any(this._northSash.onDidEnd,this._eastSash.onDidEnd,this._southSash.onDidEnd,this._westSash.onDidEnd)((function(){void 0!==t&&(t=void 0,i=0,r=0,n._onDidResize.fire({dimension:n._size,done:!0}))}))),this._sashListener.add(this._eastSash.onDidChange((function(e){t&&(r=e.currentX-e.startX,n.layout(t.height+i,t.width+r),n._onDidResize.fire({dimension:n._size,done:!1,east:!0}))}))),this._sashListener.add(this._westSash.onDidChange((function(e){t&&(r=-(e.currentX-e.startX),n.layout(t.height+i,t.width+r),n._onDidResize.fire({dimension:n._size,done:!1,west:!0}))}))),this._sashListener.add(this._northSash.onDidChange((function(e){t&&(i=-(e.currentY-e.startY),n.layout(t.height+i,t.width+r),n._onDidResize.fire({dimension:n._size,done:!1,north:!0}))}))),this._sashListener.add(this._southSash.onDidChange((function(e){t&&(i=e.currentY-e.startY,n.layout(t.height+i,t.width+r),n._onDidResize.fire({dimension:n._size,done:!1,south:!0}))}))),this._sashListener.add(_W.ju.any(this._eastSash.onDidReset,this._westSash.onDidReset)((function(e){n._preferredSize&&(n.layout(n._size.height,n._preferredSize.width),n._onDidResize.fire({dimension:n._size,done:!0}))}))),this._sashListener.add(_W.ju.any(this._northSash.onDidReset,this._southSash.onDidReset)((function(e){n._preferredSize&&(n.layout(n._preferredSize.height,n._size.width),n._onDidResize.fire({dimension:n._size,done:!0}))})))}return(0,J.Z)(e,[{key:"dispose",value:function(){this._northSash.dispose(),this._southSash.dispose(),this._eastSash.dispose(),this._westSash.dispose(),this._sashListener.dispose(),this.domNode.remove()}},{key:"enableSashes",value:function(e,t,n,i){this._northSash.state=e?3:0,this._eastSash.state=t?3:0,this._southSash.state=n?3:0,this._westSash.state=i?3:0}},{key:"layout",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.size.height,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.size.width,n=this._minSize,i=n.height,r=n.width,o=this._maxSize,a=o.height,s=o.width;e=Math.max(i,Math.min(a,e)),t=Math.max(r,Math.min(s,t));var u=new aW.Dimension(t,e);aW.Dimension.equals(u,this._size)||(this.domNode.style.height=e+"px",this.domNode.style.width=t+"px",this._size=u,this._northSash.layout(),this._eastSash.layout(),this._southSash.layout(),this._westSash.layout())}},{key:"clearSashHoverState",value:function(){this._eastSash.clearSashHoverState(),this._westSash.clearSashHoverState(),this._northSash.clearSashHoverState(),this._southSash.clearSashHoverState()}},{key:"size",get:function(){return this._size}},{key:"maxSize",get:function(){return this._maxSize},set:function(e){this._maxSize=e}},{key:"minSize",get:function(){return this._minSize},set:function(e){this._minSize=e}},{key:"preferredSize",get:function(){return this._preferredSize},set:function(e){this._preferredSize=e}}]),e}(),J2=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},e3=function(e,t){return function(n,i){t(n,i,e)}};function t3(e){return!!e&&Boolean(e.completion.documentation||e.completion.detail&&e.completion.detail!==e.completion.label)}var n3=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this._editor=t,this._onDidClose=new _W.Q5,this.onDidClose=this._onDidClose.event,this._onDidChangeContents=new _W.Q5,this.onDidChangeContents=this._onDidChangeContents.event,this._disposables=new WB.SL,this._renderDisposeable=new WB.SL,this._borderWidth=1,this._size=new aW.Dimension(330,0),this.domNode=aW.$(".suggest-details"),this.domNode.classList.add("no-docs"),this._markdownRenderer=n.createInstance(GU,{editor:t}),this._body=aW.$(".body"),this._scrollbar=new qV.s$(this._body,{}),aW.append(this.domNode,this._scrollbar.getDomNode()),this._disposables.add(this._scrollbar),this._header=aW.append(this._body,aW.$(".header")),this._close=aW.append(this._header,aW.$("span"+bW.lA.close.cssSelector)),this._close.title=yB.N("details.close","Close"),this._type=aW.append(this._header,aW.$("p.type")),this._docs=aW.append(this._body,aW.$("p.docs")),this._configureFont(),this._disposables.add(this._editor.onDidChangeConfiguration((function(e){e.hasChanged(40)&&i._configureFont()})))}return(0,J.Z)(e,[{key:"dispose",value:function(){this._disposables.dispose(),this._renderDisposeable.dispose()}},{key:"_configureFont",value:function(){var e=this._editor.getOptions(),t=e.get(40),n=t.fontFamily,i=e.get(104)||t.fontSize,r=e.get(105)||t.lineHeight,o=t.fontWeight,a="".concat(i,"px"),s="".concat(r,"px");this.domNode.style.fontSize=a,this.domNode.style.lineHeight=s,this.domNode.style.fontWeight=o,this.domNode.style.fontFeatureSettings=t.fontFeatureSettings,this._type.style.fontFamily=n,this._close.style.height=s,this._close.style.width=s}},{key:"getLayoutInfo",value:function(){var e=this._editor.getOption(105)||this._editor.getOption(40).lineHeight,t=this._borderWidth;return{lineHeight:e,borderWidth:t,borderHeight:2*t,verticalPadding:22,horizontalPadding:14}}},{key:"renderLoading",value:function(){this._type.textContent=yB.N("loading","Loading..."),this._docs.textContent="",this.domNode.classList.remove("no-docs","no-type"),this.layout(this.size.width,2*this.getLayoutInfo().lineHeight),this._onDidChangeContents.fire(this)}},{key:"renderItem",value:function(e,t){var n,i,r=this;this._renderDisposeable.clear();var o=e.completion,a=o.detail,s=o.documentation;if(t){var u="";u+="score: ".concat(e.score[0],"\n"),u+="prefix: ".concat(null!==(n=e.word)&&void 0!==n?n:"(no prefix)","\n"),u+="word: ".concat(e.completion.filterText?e.completion.filterText+" (filterText)":e.textLabel,"\n"),u+="distance: ".concat(e.distance," (localityBonus-setting)\n"),u+="index: ".concat(e.idx,", based on ").concat(e.completion.sortText&&'sortText: "'.concat(e.completion.sortText,'"')||"label","\n"),u+="commit_chars: ".concat(null===(i=e.completion.commitCharacters)||void 0===i?void 0:i.join(""),"\n"),s=(new EB).appendCodeblock("empty",u),a="Provider: ".concat(e.provider._debugDisplayName)}if(t||t3(e)){if(this.domNode.classList.remove("no-docs","no-type"),a){var l=a.length>1e5?"".concat(a.substr(0,1e5),"\u2026"):a;this._type.textContent=l,this._type.title=l,aW.show(this._type),this._type.classList.toggle("auto-wrap",!/\r?\n^\s+/gim.test(l))}else aW.clearNode(this._type),this._type.title="",aW.hide(this._type),this.domNode.classList.add("no-type");if(aW.clearNode(this._docs),"string"===typeof s)this._docs.classList.remove("markdown-docs"),this._docs.textContent=s;else if(s){this._docs.classList.add("markdown-docs"),aW.clearNode(this._docs);var c=this._markdownRenderer.render(s);this._docs.appendChild(c.element),this._renderDisposeable.add(c),this._renderDisposeable.add(this._markdownRenderer.onDidRenderAsync((function(){r.layout(r._size.width,r._type.clientHeight+r._docs.clientHeight),r._onDidChangeContents.fire(r)})))}this.domNode.style.userSelect="text",this.domNode.tabIndex=-1,this._close.onmousedown=function(e){e.preventDefault(),e.stopPropagation()},this._close.onclick=function(e){e.preventDefault(),e.stopPropagation(),r._onDidClose.fire()},this._body.scrollTop=0,this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}else this.clearContents()}},{key:"clearContents",value:function(){this.domNode.classList.add("no-docs"),this._type.textContent="",this._docs.textContent=""}},{key:"size",get:function(){return this._size}},{key:"layout",value:function(e,t){var n=new aW.Dimension(e,t);aW.Dimension.equals(n,this._size)||(this._size=n,aW.size(this.domNode,e,t)),this._scrollbar.scanDomNode()}},{key:"scrollDown",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;this._body.scrollTop+=e}},{key:"scrollUp",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;this._body.scrollTop-=e}},{key:"scrollTop",value:function(){this._body.scrollTop=0}},{key:"scrollBottom",value:function(){this._body.scrollTop=this._body.scrollHeight}},{key:"pageDown",value:function(){this.scrollDown(80)}},{key:"pageUp",value:function(){this.scrollUp(80)}},{key:"borderWidth",get:function(){return this._borderWidth},set:function(e){this._borderWidth=e}}]),e}();n3=J2([e3(1,oW.TG)],n3);var i3=function(){function e(t,n){var i,r,o=this;(0,X.Z)(this,e),this.widget=t,this._editor=n,this._disposables=new WB.SL,this._added=!1,this._resizable=new X2,this._resizable.domNode.classList.add("suggest-details-container"),this._resizable.domNode.appendChild(t.domNode),this._resizable.enableSashes(!1,!0,!0,!1);var a=0,s=0;this._disposables.add(this._resizable.onDidWillResize((function(){i=o._topLeft,r=o._resizable.size}))),this._disposables.add(this._resizable.onDidResize((function(e){if(i&&r){o.widget.layout(e.dimension.width,e.dimension.height);var t=!1;e.west&&(s=r.width-e.dimension.width,t=!0),e.north&&(a=r.height-e.dimension.height,t=!0),t&&o._applyTopLeft({top:i.top+a,left:i.left+s})}e.done&&(i=void 0,r=void 0,a=0,s=0,o._userSize=e.dimension)}))),this._disposables.add(this.widget.onDidChangeContents((function(){var e;o._anchorBox&&o._placeAtAnchor(o._anchorBox,null!==(e=o._userSize)&&void 0!==e?e:o.widget.size)})))}return(0,J.Z)(e,[{key:"dispose",value:function(){this._disposables.dispose(),this.hide()}},{key:"getId",value:function(){return"suggest.details"}},{key:"getDomNode",value:function(){return this._resizable.domNode}},{key:"getPosition",value:function(){return null}},{key:"show",value:function(){this._added||(this._editor.addOverlayWidget(this),this.getDomNode().style.position="fixed",this._added=!0)}},{key:"hide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._resizable.clearSashHoverState(),this._added&&(this._editor.removeOverlayWidget(this),this._added=!1,this._anchorBox=void 0,this._topLeft=void 0),e&&(this._userSize=void 0,this.widget.clearContents())}},{key:"placeAtAnchor",value:function(e){var t,n=aW.getDomNodePagePosition(e);this._anchorBox=n,this._placeAtAnchor(this._anchorBox,null!==(t=this._userSize)&&void 0!==t?t:this.widget.size)}},{key:"_placeAtAnchor",value:function(e,t){var n,i,r,o,a=aW.getClientArea(document.body),s=this.widget.getLayoutInfo(),u=new aW.Dimension(220,2*s.lineHeight),l=0,c=e.top,d=e.top+e.height-s.borderHeight,h=a.width-(e.left+e.width+s.borderWidth+s.horizontalPadding);l=-s.borderWidth+e.left+e.width,o=!0,i=(n=new aW.Dimension(h,a.height-e.top-s.borderHeight-s.verticalPadding)).with(void 0,e.top+e.height-s.borderHeight-s.verticalPadding),t.width>h&&(e.left>h&&(h=e.left-s.borderWidth-s.horizontalPadding,o=!1,l=Math.max(s.horizontalPadding,e.left-t.width-s.borderWidth),i=(n=n.with(h)).with(void 0,i.height)),e.width>1.3*h&&a.height-(e.top+e.height)>e.height&&(h=e.width,l=e.left,c=-s.borderWidth+e.top+e.height,i=(n=new aW.Dimension(e.width-s.borderHeight,a.height-e.top-e.height-s.verticalPadding)).with(void 0,e.top-s.verticalPadding),u=u.with(n.width)));var f,p=t.height,g=Math.max(n.height,i.height);p>g&&(p=g),p<=n.height?(r=!0,f=n):(r=!1,f=i),this._applyTopLeft({left:l,top:r?c:d-p}),this.getDomNode().style.position="fixed",this._resizable.enableSashes(!r,o,r,!o),this._resizable.minSize=u,this._resizable.maxSize=f,this._resizable.layout(p,Math.min(f.width,t.width)),this.widget.layout(this._resizable.size.width,this._resizable.size.height)}},{key:"_applyTopLeft",value:function(e){this._topLeft=e,this.getDomNode().style.left="".concat(this._topLeft.left,"px"),this.getDomNode().style.top="".concat(this._topLeft.top,"px")}}]),e}(),r3=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},o3=function(e,t){return function(n,i){t(n,i,e)}},a3=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"updateLabel",value:function(){var e=this._keybindingService.lookupKeybinding(this._action.id);if(!e)return(0,Qz.Z)((0,Xz.Z)(n.prototype),"updateLabel",this).call(this);this.label&&(this.label.textContent=(0,yB.N)("ddd","{0} ({1})",this._action.label,n.symbolPrintEnter(e)))}}],[{key:"symbolPrintEnter",value:function(e){var t;return null===(t=e.getLabel())||void 0===t?void 0:t.replace(/\benter\b/gi,"\u23ce")}}]),n}(LY),s3=function(){function e(t,n,i,r){(0,X.Z)(this,e),this._menuService=i,this._contextKeyService=r,this._menuDisposables=new WB.SL,this.element=aW.append(t,aW.$(".suggest-status-bar"));var o=function(e){return e instanceof QB.U8?n.createInstance(a3,e):void 0};this._leftActions=new iY.o(this.element,{actionViewItemProvider:o}),this._rightActions=new iY.o(this.element,{actionViewItemProvider:o}),this._leftActions.domNode.classList.add("left"),this._rightActions.domNode.classList.add("right")}return(0,J.Z)(e,[{key:"dispose",value:function(){this._menuDisposables.dispose(),this.element.remove()}},{key:"show",value:function(){var e=this,t=this._menuService.createMenu(b1,this._contextKeyService);this._menuDisposables.add(t.onDidChange((function(){return function(){var n,i=[],r=[],o=(0,Na.Z)(t.getActions());try{for(o.s();!(n=o.n()).done;){var a=(0,ne.Z)(n.value,2),s=a[0],u=a[1];"left"===s?i.push.apply(i,(0,Ct.Z)(u)):r.push.apply(r,(0,Ct.Z)(u))}}catch(l){o.e(l)}finally{o.f()}e._leftActions.clear(),e._leftActions.push(i),e._rightActions.clear(),e._rightActions.push(r)}()}))),this._menuDisposables.add(t)}},{key:"hide",value:function(){this._menuDisposables.clear()}}]),e}();s3=r3([o3(1,oW.TG),o3(2,QB.co),o3(3,kB.i6)],s3);var u3,l3=n(54970);function c3(e,t,n,i){var r=i===u3.ROOT_FOLDER?["rootfolder-icon"]:i===u3.FOLDER?["folder-icon"]:["file-icon"];if(n){var o;if(n.scheme===JV.lg.data)o=PW.Vb.parseMetaData(n).get(PW.Vb.META_DATA_LABEL);else o=d3((0,PW.Hx)(n).toLowerCase());if(i===u3.FOLDER)r.push("".concat(o,"-name-folder-icon"));else{if(o){if(r.push("".concat(o,"-name-file-icon")),o.length<=255)for(var a=o.split("."),s=1;s<a.length;s++)r.push("".concat(a.slice(s).join("."),"-ext-file-icon"));r.push("ext-file-icon")}var u=function(e,t,n){if(!n)return null;var i=null;if(n.scheme===JV.lg.data){var r=PW.Vb.parseMetaData(n).get(PW.Vb.META_DATA_MIME);r&&(i=t.getModeId(r))}else{var o=e.getModel(n);o&&(i=o.getModeId())}if(i&&i!==l3.XT)return i;return t.getModeIdByFilepathOrFirstLine(n)}(e,t,n);u&&r.push("".concat(d3(u),"-lang-file-icon"))}}return r}function d3(e){return e.replace(/[\11\12\14\15\40]/g,"/")}!function(e){e[e.FILE=0]="FILE",e[e.FOLDER=1]="FOLDER",e[e.ROOT_FOLDER=2]="ROOT_FOLDER"}(u3||(u3={}));var h3,f3=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},p3=function(e,t){return function(n,i){t(n,i,e)}};function g3(e){return"suggest-aria-id:".concat(e)}var v3=(0,mU.q5)("suggest-more-info",bW.lA.chevronRight,yB.N("suggestMoreInfoIcon","Icon for more information in the suggest widget.")),m3=new(h3=function(){function e(){(0,X.Z)(this,e)}return(0,J.Z)(e,[{key:"extract",value:function(t,n){if(t.textLabel.match(e._regexStrict))return n[0]=t.textLabel,!0;if(t.completion.detail&&t.completion.detail.match(e._regexStrict))return n[0]=t.completion.detail,!0;if("string"===typeof t.completion.documentation){var i=e._regexRelaxed.exec(t.completion.documentation);if(i&&(0===i.index||i.index+i[0].length===t.completion.documentation.length))return n[0]=i[0],!0}return!1}}]),e}(),h3._regexRelaxed=/(#([\da-fA-F]{3}){1,2}|(rgb|hsl)a\(\s*(\d{1,3}%?\s*,\s*){3}(1|0?\.\d+)\)|(rgb|hsl)\(\s*\d{1,3}%?(\s*,\s*\d{1,3}%?){2}\s*\))/,h3._regexStrict=new RegExp("^".concat(h3._regexRelaxed.source,"$"),"i"),h3),_3=function(){function e(t,n,i,r){(0,X.Z)(this,e),this._editor=t,this._modelService=n,this._modeService=i,this._themeService=r,this._onDidToggleDetails=new _W.Q5,this.onDidToggleDetails=this._onDidToggleDetails.event,this.templateId="suggestion"}return(0,J.Z)(e,[{key:"dispose",value:function(){this._onDidToggleDetails.dispose()}},{key:"renderTemplate",value:function(e){var t=this,n=Object.create(null);n.disposables=new WB.SL,n.root=e,n.root.classList.add("show-file-icons"),n.icon=(0,aW.append)(e,(0,aW.$)(".icon")),n.colorspan=(0,aW.append)(n.icon,(0,aW.$)("span.colorspan"));var i=(0,aW.append)(e,(0,aW.$)(".contents")),r=(0,aW.append)(i,(0,aW.$)(".main"));n.iconContainer=(0,aW.append)(r,(0,aW.$)(".icon-label.codicon")),n.left=(0,aW.append)(r,(0,aW.$)("span.left")),n.right=(0,aW.append)(r,(0,aW.$)("span.right")),n.iconLabel=new LK.g(n.left,{supportHighlights:!0,supportIcons:!0}),n.disposables.add(n.iconLabel),n.parametersLabel=(0,aW.append)(n.left,(0,aW.$)("span.signature-label")),n.qualifierLabel=(0,aW.append)(n.left,(0,aW.$)("span.qualifier-label")),n.detailsLabel=(0,aW.append)(n.right,(0,aW.$)("span.details-label")),n.readMore=(0,aW.append)(n.right,(0,aW.$)("span.readMore"+$B.kS.asCSSSelector(v3))),n.readMore.title=yB.N("readMore","Read More");var o=function(){var e=t._editor.getOptions(),i=e.get(40),o=i.fontFamily,a=i.fontFeatureSettings,s=e.get(104)||i.fontSize,u=e.get(105)||i.lineHeight,l=i.fontWeight,c="".concat(s,"px"),d="".concat(u,"px");n.root.style.fontSize=c,n.root.style.fontWeight=l,r.style.fontFamily=o,r.style.fontFeatureSettings=a,r.style.lineHeight=d,n.icon.style.height=d,n.icon.style.width=d,n.readMore.style.height=d,n.readMore.style.width=d};return o(),n.disposables.add(this._editor.onDidChangeConfiguration((function(e){(e.hasChanged(40)||e.hasChanged(104)||e.hasChanged(105))&&o()}))),n}},{key:"renderElement",value:function(e,t,n){var i,r,o,a=this,s=e.completion;n.root.id=g3(t),n.colorspan.style.backgroundColor="";var u={labelEscapeNewLines:!0,matches:(0,NK.mB)(e.score)},l=[];if(19===s.kind&&m3.extract(e,l))n.icon.className="icon customcolor",n.iconContainer.className="icon hide",n.colorspan.style.backgroundColor=l[0];else if(20===s.kind&&this._themeService.getFileIconTheme().hasFileIcons){n.icon.className="icon hide",n.iconContainer.className="icon hide";var c=c3(this._modelService,this._modeService,Mz.o.from({scheme:"fake",path:e.textLabel}),u3.FILE),d=c3(this._modelService,this._modeService,Mz.o.from({scheme:"fake",path:s.detail}),u3.FILE);u.extraClasses=c.length>d.length?c:d}else if(23===s.kind&&this._themeService.getFileIconTheme().hasFolderIcons)n.icon.className="icon hide",n.iconContainer.className="icon hide",u.extraClasses=(0,SB.xH)([c3(this._modelService,this._modeService,Mz.o.from({scheme:"fake",path:e.textLabel}),u3.FOLDER),c3(this._modelService,this._modeService,Mz.o.from({scheme:"fake",path:s.detail}),u3.FOLDER)]);else{var h;n.icon.className="icon hide",n.iconContainer.className="",(h=n.iconContainer.classList).add.apply(h,["suggest-icon"].concat((0,Ct.Z)((0,Iz.Sy)(s.kind).split(" "))))}s.tags&&s.tags.indexOf(1)>=0&&(u.extraClasses=(u.extraClasses||[]).concat(["deprecated"]),u.matches=[]),n.iconLabel.setLabel(e.textLabel,void 0,u),"string"===typeof s.label?(n.parametersLabel.textContent="",n.qualifierLabel.textContent="",n.detailsLabel.textContent=(s.detail||"").replace(/\n.*$/m,""),n.root.classList.add("string-label"),n.root.title=""):(n.parametersLabel.textContent=(s.label.parameters||"").replace(/\n.*$/m,""),n.qualifierLabel.textContent=(s.label.qualifier||"").replace(/\n.*$/m,""),n.detailsLabel.textContent=(s.label.type||"").replace(/\n.*$/m,""),n.root.classList.remove("string-label"),n.root.title="".concat(e.textLabel).concat(null!==(i=s.label.parameters)&&void 0!==i?i:""," ").concat(null!==(r=s.label.qualifier)&&void 0!==r?r:""," ").concat(null!==(o=s.label.type)&&void 0!==o?o:"")),this._editor.getOption(103).showInlineDetails?(0,aW.show)(n.detailsLabel):(0,aW.hide)(n.detailsLabel),t3(e)?(n.right.classList.add("can-expand-details"),(0,aW.show)(n.readMore),n.readMore.onmousedown=function(e){e.stopPropagation(),e.preventDefault()},n.readMore.onclick=function(e){e.stopPropagation(),e.preventDefault(),a._onDidToggleDetails.fire()}):(n.right.classList.remove("can-expand-details"),(0,aW.hide)(n.readMore),n.readMore.onmousedown=null,n.readMore.onclick=null)}},{key:"disposeTemplate",value:function(e){e.disposables.dispose()}}]),e}();_3=f3([p3(1,Oz.q),p3(2,PV.h),p3(3,$B.XE)],_3);var y3=n(5265),b3=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},w3=function(e,t){return function(n,i){t(n,i,e)}},C3=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},k3=(0,GB.P6)("editorSuggestWidget.background",{dark:GB.D0,light:GB.D0,hc:GB.D0},yB.N("editorSuggestWidgetBackground","Background color of the suggest widget.")),S3=(0,GB.P6)("editorSuggestWidget.border",{dark:GB.D1,light:GB.D1,hc:GB.D1},yB.N("editorSuggestWidgetBorder","Border color of the suggest widget.")),x3=(0,GB.P6)("editorSuggestWidget.foreground",{dark:GB.NO,light:GB.NO,hc:GB.NO},yB.N("editorSuggestWidgetForeground","Foreground color of the suggest widget.")),L3=(0,GB.P6)("editorSuggestWidget.selectedBackground",{dark:GB.Vq,light:GB.Vq,hc:GB.Vq},yB.N("editorSuggestWidgetSelectedBackground","Background color of the selected entry in the suggest widget.")),E3=(0,GB.P6)("editorSuggestWidget.highlightForeground",{dark:GB.Gw,light:GB.Gw,hc:GB.Gw},yB.N("editorSuggestWidgetHighlightForeground","Color of the match highlights in the suggest widget.")),D3=function(){function e(t,n){(0,X.Z)(this,e),this._service=t,this._key="suggestWidget.size/".concat(n.getEditorType(),"/").concat(n instanceof uY)}return(0,J.Z)(e,[{key:"restore",value:function(){var e,t=null!==(e=this._service.get(this._key,0))&&void 0!==e?e:"";try{var n=JSON.parse(t);if(aW.Dimension.is(n))return aW.Dimension.lift(n)}catch(hq){}}},{key:"store",value:function(e){this._service.store(this._key,JSON.stringify(e),0,1)}},{key:"reset",value:function(){this._service.remove(this._key,0)}}]),e}(),N3=function(){function e(t,n,i,r,o){var a=this;(0,X.Z)(this,e),this.editor=t,this._storageService=n,this._state=0,this._isAuto=!1,this._ignoreFocusEvents=!1,this._explainMode=!1,this._showTimeout=new zB._F,this._disposables=new WB.SL,this._onDidSelect=new _W.Q5,this._onDidFocus=new _W.Q5,this._onDidHide=new _W.Q5,this._onDidShow=new _W.Q5,this.onDidSelect=this._onDidSelect.event,this.onDidFocus=this._onDidFocus.event,this.onDidHide=this._onDidHide.event,this.onDidShow=this._onDidShow.event,this._onDetailsKeydown=new _W.Q5,this.onDetailsKeyDown=this._onDetailsKeydown.event,this.element=new X2,this.element.domNode.classList.add("editor-widget","suggest-widget"),this._contentWidget=new M3(this,t),this._persistedSize=new D3(n,t);var s,u=(0,J.Z)((function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];(0,X.Z)(this,e),this.persistedSize=t,this.currentSize=n,this.persistHeight=i,this.persistWidth=r}));this._disposables.add(this.element.onDidWillResize((function(){a._contentWidget.lockPreference(),s=new u(a._persistedSize.restore(),a.element.size)}))),this._disposables.add(this.element.onDidResize((function(e){var t,n,i,r;if(a._resize(e.dimension.width,e.dimension.height),s&&(s.persistHeight=s.persistHeight||!!e.north||!!e.south,s.persistWidth=s.persistWidth||!!e.east||!!e.west),e.done){if(s){var o=a.getLayoutInfo(),u=o.itemHeight,l=o.defaultSize,c=Math.round(u/2),d=a.element.size,h=d.width,f=d.height;(!s.persistHeight||Math.abs(s.currentSize.height-f)<=c)&&(f=null!==(n=null===(t=s.persistedSize)||void 0===t?void 0:t.height)&&void 0!==n?n:l.height),(!s.persistWidth||Math.abs(s.currentSize.width-h)<=c)&&(h=null!==(r=null===(i=s.persistedSize)||void 0===i?void 0:i.width)&&void 0!==r?r:l.width),a._persistedSize.store(new aW.Dimension(h,f))}a._contentWidget.unlockPreference(),s=void 0}}))),this._messageElement=aW.append(this.element.domNode,aW.$(".message")),this._listElement=aW.append(this.element.domNode,aW.$(".tree"));var l=o.createInstance(n3,this.editor);l.onDidClose(this.toggleDetails,this,this._disposables),this._details=new i3(l,this.editor);var c=function(){return a.element.domNode.classList.toggle("no-icons",!a.editor.getOption(103).showIcons)};c();var d=o.createInstance(_3,this.editor);this._disposables.add(d),this._disposables.add(d.onDidToggleDetails((function(){return a.toggleDetails()}))),this._list=new Q2.aV("SuggestWidget",this._listElement,{getHeight:function(e){return a.getLayoutInfo().itemHeight},getTemplateId:function(e){return"suggestion"}},[d],{alwaysConsumeMouseWheel:!0,useShadows:!1,mouseSupport:!1,accessibilityProvider:{getRole:function(){return"option"},getAriaLabel:function(e){if(e.isResolved&&a._isDetailsVisible()){var t=e.completion,n=t.documentation,i=t.detail,r=Dz.WU("{0}{1}",i||"",n?"string"===typeof n?n:n.value:"");return yB.N("ariaCurrenttSuggestionReadDetails","{0}, docs: {1}",e.textLabel,r)}return e.textLabel},getWidgetAriaLabel:function(){return yB.N("suggest","Suggest")},getWidgetRole:function(){return"listbox"}}}),this._status=o.createInstance(s3,this.element.domNode);var h=function(){return a.element.domNode.classList.toggle("with-status-bar",a.editor.getOption(103).showStatusBar)};h(),this._disposables.add((0,DK.Jl)(this._list,r,{listInactiveFocusBackground:L3,listInactiveFocusOutline:GB.xL})),this._disposables.add(r.onDidColorThemeChange((function(e){return a._onThemeChange(e)}))),this._onThemeChange(r.getColorTheme()),this._disposables.add(this._list.onMouseDown((function(e){return a._onListMouseDownOrTap(e)}))),this._disposables.add(this._list.onTap((function(e){return a._onListMouseDownOrTap(e)}))),this._disposables.add(this._list.onDidChangeSelection((function(e){return a._onListSelection(e)}))),this._disposables.add(this._list.onDidChangeFocus((function(e){return a._onListFocus(e)}))),this._disposables.add(this.editor.onDidChangeCursorSelection((function(){return a._onCursorSelectionChanged()}))),this._disposables.add(this.editor.onDidChangeConfiguration((function(e){e.hasChanged(103)&&(h(),c())}))),this._ctxSuggestWidgetVisible=y1.Visible.bindTo(i),this._ctxSuggestWidgetDetailsVisible=y1.DetailsVisible.bindTo(i),this._ctxSuggestWidgetMultipleSuggestions=y1.MultipleSuggestions.bindTo(i),this._disposables.add(aW.addStandardDisposableListener(this._details.widget.domNode,"keydown",(function(e){a._onDetailsKeydown.fire(e)}))),this._disposables.add(this.editor.onMouseDown((function(e){return a._onEditorMouseDown(e)})))}return(0,J.Z)(e,[{key:"dispose",value:function(){var e;this._details.widget.dispose(),this._details.dispose(),this._list.dispose(),this._status.dispose(),this._disposables.dispose(),null===(e=this._loadingTimeout)||void 0===e||e.dispose(),this._showTimeout.dispose(),this._contentWidget.dispose(),this.element.dispose()}},{key:"_onEditorMouseDown",value:function(e){this._details.widget.domNode.contains(e.target.element)?this._details.widget.domNode.focus():this.element.domNode.contains(e.target.element)&&this.editor.focus()}},{key:"_onCursorSelectionChanged",value:function(){0!==this._state&&this._contentWidget.layout()}},{key:"_onListMouseDownOrTap",value:function(e){"undefined"!==typeof e.element&&"undefined"!==typeof e.index&&(e.browserEvent.preventDefault(),e.browserEvent.stopPropagation(),this._select(e.element,e.index))}},{key:"_onListSelection",value:function(e){e.elements.length&&this._select(e.elements[0],e.indexes[0])}},{key:"_select",value:function(e,t){var n=this._completionModel;n&&(this._onDidSelect.fire({item:e,index:t,model:n}),this.editor.focus())}},{key:"_onThemeChange",value:function(e){var t=e.getColor(k3);t&&(this.element.domNode.style.backgroundColor=t.toString(),this._messageElement.style.backgroundColor=t.toString(),this._details.widget.domNode.style.backgroundColor=t.toString());var n=e.getColor(S3);n&&(this.element.domNode.style.borderColor=n.toString(),this._messageElement.style.borderColor=n.toString(),this._status.element.style.borderTopColor=n.toString(),this._details.widget.domNode.style.borderColor=n.toString(),this._detailsBorderColor=n.toString());var i=e.getColor(GB.R8);i&&(this._detailsFocusBorderColor=i.toString()),this._details.widget.borderWidth="hc"===e.type?2:1}},{key:"_onListFocus",value:function(e){var t,n=this;if(!this._ignoreFocusEvents){if(!e.elements.length)return this._currentSuggestionDetails&&(this._currentSuggestionDetails.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=void 0),void this.editor.setAriaOptions({activeDescendant:void 0});if(this._completionModel){var i=e.elements[0],r=e.indexes[0];i!==this._focusedItem&&(null===(t=this._currentSuggestionDetails)||void 0===t||t.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=i,this._list.reveal(r),this._currentSuggestionDetails=(0,zB.PG)((function(e){return C3(n,void 0,void 0,fn().mark((function t(){var n,r,o=this;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=(0,zB.Vg)((function(){o._isDetailsVisible()&&o.showDetails(!0)}),250),e.onCancellationRequested((function(){return n.dispose()})),t.next=4,i.resolve(e);case 4:return r=t.sent,n.dispose(),t.abrupt("return",r);case 7:case"end":return t.stop()}}),t)})))})),this._currentSuggestionDetails.then((function(){r>=n._list.length||i!==n._list.element(r)||(n._ignoreFocusEvents=!0,n._list.splice(r,1,[i]),n._list.setFocus([r]),n._ignoreFocusEvents=!1,n._isDetailsVisible()?n.showDetails(!1):n.element.domNode.classList.remove("docs-side"),n.editor.setAriaOptions({activeDescendant:g3(r)}))})).catch(LB.dL)),this._onDidFocus.fire({item:i,index:r,model:this._completionModel})}}}},{key:"_setState",value:function(t){if(this._state!==t)switch(this._state=t,this.element.domNode.classList.toggle("frozen",4===t),this.element.domNode.classList.remove("message"),t){case 0:aW.hide(this._messageElement,this._listElement,this._status.element),this._details.hide(!0),this._status.hide(),this._contentWidget.hide(),this._ctxSuggestWidgetVisible.reset(),this._ctxSuggestWidgetMultipleSuggestions.reset(),this._showTimeout.cancel(),this.element.domNode.classList.remove("visible"),this._list.splice(0,this._list.length),this._focusedItem=void 0,this._cappedHeight=void 0,this._explainMode=!1;break;case 1:this.element.domNode.classList.add("message"),this._messageElement.textContent=e.LOADING_MESSAGE,aW.hide(this._listElement,this._status.element),aW.show(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0;break;case 2:this.element.domNode.classList.add("message"),this._messageElement.textContent=e.NO_SUGGESTIONS_MESSAGE,aW.hide(this._listElement,this._status.element),aW.show(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0;break;case 3:case 4:aW.hide(this._messageElement),aW.show(this._listElement,this._status.element),this._show();break;case 5:aW.hide(this._messageElement),aW.show(this._listElement,this._status.element),this._details.show(),this._show()}}},{key:"_show",value:function(){var e=this;this._status.show(),this._contentWidget.show(),this._layout(this._persistedSize.restore()),this._ctxSuggestWidgetVisible.set(!0),this._showTimeout.cancelAndSet((function(){e.element.domNode.classList.add("visible"),e._onDidShow.fire(e)}),100)}},{key:"showTriggered",value:function(e,t){var n=this;0===this._state&&(this._contentWidget.setPosition(this.editor.getPosition()),this._isAuto=!!e,this._isAuto||(this._loadingTimeout=(0,zB.Vg)((function(){return n._setState(1)}),t)))}},{key:"showSuggestions",value:function(e,t,n,i){var r,o;if(this._contentWidget.setPosition(this.editor.getPosition()),null===(r=this._loadingTimeout)||void 0===r||r.dispose(),null===(o=this._currentSuggestionDetails)||void 0===o||o.cancel(),this._currentSuggestionDetails=void 0,this._completionModel!==e&&(this._completionModel=e),n&&2!==this._state&&0!==this._state)this._setState(4);else{var a=this._completionModel.items.length,s=0===a;if(this._ctxSuggestWidgetMultipleSuggestions.set(a>1),s)return this._setState(i?0:2),void(this._completionModel=void 0);this._focusedItem=void 0,this._list.splice(0,this._list.length,this._completionModel.items),this._setState(n?4:3),this._list.reveal(t,0),this._list.setFocus([t]),this._layout(this.element.size),this._detailsBorderColor&&(this._details.widget.domNode.style.borderColor=this._detailsBorderColor)}}},{key:"selectNextPage",value:function(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageDown(),!0;case 1:return!this._isAuto;default:return this._list.focusNextPage(),!0}}},{key:"selectNext",value:function(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusNext(1,!0),!0}}},{key:"selectLast",value:function(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollBottom(),!0;case 1:return!this._isAuto;default:return this._list.focusLast(),!0}}},{key:"selectPreviousPage",value:function(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageUp(),!0;case 1:return!this._isAuto;default:return this._list.focusPreviousPage(),!0}}},{key:"selectPrevious",value:function(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusPrevious(1,!0),!1}}},{key:"selectFirst",value:function(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollTop(),!0;case 1:return!this._isAuto;default:return this._list.focusFirst(),!0}}},{key:"getFocusedItem",value:function(){if(0!==this._state&&2!==this._state&&1!==this._state&&this._completionModel)return{item:this._list.getFocusedElements()[0],index:this._list.getFocus()[0],model:this._completionModel}}},{key:"toggleDetailsFocus",value:function(){5===this._state?(this._setState(3),this._detailsBorderColor&&(this._details.widget.domNode.style.borderColor=this._detailsBorderColor)):3===this._state&&this._isDetailsVisible()&&(this._setState(5),this._detailsFocusBorderColor&&(this._details.widget.domNode.style.borderColor=this._detailsFocusBorderColor))}},{key:"toggleDetails",value:function(){this._isDetailsVisible()?(this._ctxSuggestWidgetDetailsVisible.set(!1),this._setDetailsVisible(!1),this._details.hide(),this.element.domNode.classList.remove("shows-details")):!t3(this._list.getFocusedElements()[0])&&!this._explainMode||3!==this._state&&5!==this._state&&4!==this._state||(this._ctxSuggestWidgetDetailsVisible.set(!0),this._setDetailsVisible(!0),this.showDetails(!1))}},{key:"showDetails",value:function(e){this._details.show(),e?this._details.widget.renderLoading():this._details.widget.renderItem(this._list.getFocusedElements()[0],this._explainMode),this._positionDetails(),this.editor.focus(),this.element.domNode.classList.add("shows-details")}},{key:"toggleExplainMode",value:function(){this._list.getFocusedElements()[0]&&(this._explainMode=!this._explainMode,this._isDetailsVisible()?this.showDetails(!1):this.toggleDetails())}},{key:"resetPersistedSize",value:function(){this._persistedSize.reset()}},{key:"hideWidget",value:function(){var e;null===(e=this._loadingTimeout)||void 0===e||e.dispose(),this._setState(0),this._onDidHide.fire(this),this.element.clearSashHoverState();var t=this._persistedSize.restore(),n=Math.ceil(4.3*this.getLayoutInfo().itemHeight);t&&t.height<n&&this._persistedSize.store(t.with(void 0,n))}},{key:"isFrozen",value:function(){return 4===this._state}},{key:"_afterRender",value:function(e){null!==e?2!==this._state&&1!==this._state&&(this._isDetailsVisible()&&this._details.show(),this._positionDetails()):this._isDetailsVisible()&&this._details.hide()}},{key:"_layout",value:function(e){var t,n,i;if(this.editor.hasModel()&&this.editor.getDomNode()){var r=aW.getClientArea(document.body),o=this.getLayoutInfo();e||(e=o.defaultSize);var a=e.height,s=e.width;if(this._status.element.style.lineHeight="".concat(o.itemHeight,"px"),2===this._state||1===this._state)a=o.itemHeight+o.borderHeight,s=o.defaultSize.width/2,this.element.enableSashes(!1,!1,!1,!1),this.element.minSize=this.element.maxSize=new aW.Dimension(s,a),this._contentWidget.setPreference(2);else{var u=r.width-o.borderHeight-2*o.horizontalPadding;s>u&&(s=u);var l=this._completionModel?this._completionModel.stats.pLabelLen*o.typicalHalfwidthCharacterWidth:s,c=o.statusBarHeight+this._list.contentHeight+o.borderHeight,d=o.itemHeight+o.statusBarHeight,h=aW.getDomNodePagePosition(this.editor.getDomNode()),f=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),p=h.top+f.top+f.height,g=Math.min(r.height-p-o.verticalPadding,c),v=Math.min(h.top+f.top-o.verticalPadding,c),m=Math.min(Math.max(v,g)+o.borderHeight,c);a===(null===(t=this._cappedHeight)||void 0===t?void 0:t.capped)&&(a=this._cappedHeight.wanted),a<d&&(a=d),a>m&&(a=m),a>g?(this._contentWidget.setPreference(1),this.element.enableSashes(!0,!0,!1,!1),m=v):(this._contentWidget.setPreference(2),this.element.enableSashes(!1,!0,!0,!1),m=g),this.element.preferredSize=new aW.Dimension(l,o.defaultSize.height),this.element.maxSize=new aW.Dimension(u,m),this.element.minSize=new aW.Dimension(220,d),this._cappedHeight=a===c?{wanted:null!==(i=null===(n=this._cappedHeight)||void 0===n?void 0:n.wanted)&&void 0!==i?i:e.height,capped:a}:void 0}this._resize(s,a)}}},{key:"_resize",value:function(e,t){var n=this.element.maxSize,i=n.width,r=n.height;e=Math.min(i,e),t=Math.min(r,t);var o=this.getLayoutInfo().statusBarHeight;this._list.layout(t-o,e),this._listElement.style.height="".concat(t-o,"px"),this.element.layout(t,e),this._contentWidget.layout(),this._positionDetails()}},{key:"_positionDetails",value:function(){this._isDetailsVisible()&&this._details.placeAtAnchor(this.element.domNode)}},{key:"getLayoutInfo",value:function(){var e=this.editor.getOption(40),t=(0,y3.u)(this.editor.getOption(105)||e.lineHeight,8,1e3),n=this.editor.getOption(103).showStatusBar&&2!==this._state&&1!==this._state?t:0,i=this._details.widget.borderWidth,r=2*i;return{itemHeight:t,statusBarHeight:n,borderWidth:i,borderHeight:r,typicalHalfwidthCharacterWidth:e.typicalHalfwidthCharacterWidth,verticalPadding:22,horizontalPadding:14,defaultSize:new aW.Dimension(430,n+12*t+r)}}},{key:"_isDetailsVisible",value:function(){return this._storageService.getBoolean("expandSuggestionDocs",0,!1)}},{key:"_setDetailsVisible",value:function(e){this._storageService.store("expandSuggestionDocs",e,0,0)}}]),e}();N3.LOADING_MESSAGE=yB.N("suggestWidget.loading","Loading..."),N3.NO_SUGGESTIONS_MESSAGE=yB.N("suggestWidget.noSuggestions","No suggestions."),N3=b3([w3(1,vV.Uy),w3(2,kB.i6),w3(3,$B.XE),w3(4,oW.TG)],N3);var M3=function(){function e(t,n){(0,X.Z)(this,e),this._widget=t,this._editor=n,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._preferenceLocked=!1,this._added=!1,this._hidden=!1}return(0,J.Z)(e,[{key:"dispose",value:function(){this._added&&(this._added=!1,this._editor.removeContentWidget(this))}},{key:"getId",value:function(){return"editor.widget.suggestWidget"}},{key:"getDomNode",value:function(){return this._widget.element.domNode}},{key:"show",value:function(){this._hidden=!1,this._added||(this._added=!0,this._editor.addContentWidget(this))}},{key:"hide",value:function(){this._hidden||(this._hidden=!0,this.layout())}},{key:"layout",value:function(){this._editor.layoutContentWidget(this)}},{key:"getPosition",value:function(){return!this._hidden&&this._position&&this._preference?{position:this._position,preference:[this._preference]}:null}},{key:"beforeRender",value:function(){var e=this._widget.element.size,t=e.height,n=e.width,i=this._widget.getLayoutInfo(),r=i.borderWidth,o=i.horizontalPadding;return new aW.Dimension(n+2*r+o,t+2*r)}},{key:"afterRender",value:function(e){this._widget._afterRender(e)}},{key:"setPreference",value:function(e){this._preferenceLocked||(this._preference=e)}},{key:"lockPreference",value:function(){this._preferenceLocked=!0}},{key:"unlockPreference",value:function(){this._preferenceLocked=!1}},{key:"setPosition",value:function(e){this._position=e}}]),e}();(0,$B.Ic)((function(e,t){var n=e.getColor(E3);n&&t.addRule(".monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-highlighted-label .highlight { color: ".concat(n,"; }"));var i=e.getColor(x3);i&&t.addRule(".monaco-editor .suggest-widget, .monaco-editor .suggest-details { color: ".concat(i,"; }"));var r=e.getColor(GB.ur);r&&t.addRule(".monaco-editor .suggest-details a { color: ".concat(r,"; }"));var o=e.getColor(GB.Sw);o&&t.addRule(".monaco-editor .suggest-details code { background-color: ".concat(o,"; }"))}));var T3=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},I3=function(e,t){return function(n,i){t(n,i,e)}},O3=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this._editor=t,this._enabled=!1,this._ckAtEnd=e.AtEnd.bindTo(n),this._configListener=this._editor.onDidChangeConfiguration((function(e){return e.hasChanged(108)&&i._update()})),this._update()}return(0,J.Z)(e,[{key:"dispose",value:function(){var e;this._configListener.dispose(),null===(e=this._selectionListener)||void 0===e||e.dispose(),this._ckAtEnd.reset()}},{key:"_update",value:function(){var e=this,t="on"===this._editor.getOption(108);if(this._enabled!==t)if(this._enabled=t,this._enabled){var n=function(){if(e._editor.hasModel()){var t=e._editor.getModel(),n=e._editor.getSelection(),i=t.getWordAtPosition(n.getStartPosition());i?e._ckAtEnd.set(i.endColumn===n.getStartPosition().column):e._ckAtEnd.set(!1)}else e._ckAtEnd.set(!1)};this._selectionListener=this._editor.onDidChangeCursorSelection(n),n()}else this._selectionListener&&(this._ckAtEnd.reset(),this._selectionListener.dispose(),this._selectionListener=void 0)}}]),e}();O3.AtEnd=new kB.uy("atEndOfWord",!1),O3=T3([I3(1,kB.i6)],O3);var A3=function(){function e(t,n,i){var r=this;(0,X.Z)(this,e),this._disposables=new WB.SL,this._disposables.add(n.onDidShow((function(){return r._onItem(n.getFocusedItem())}))),this._disposables.add(n.onDidFocus(this._onItem,this)),this._disposables.add(n.onDidHide(this.reset,this)),this._disposables.add(t.onWillType((function(e){if(r._active&&!n.isFrozen()){var o=e.charCodeAt(e.length-1);r._active.acceptCharacters.has(o)&&t.getOption(0)&&i(r._active.item)}})))}return(0,J.Z)(e,[{key:"_onItem",value:function(e){if(e&&(0,SB.Of)(e.item.completion.commitCharacters)){if(!this._active||this._active.item.item!==e.item){var t,n=new eX.q,i=(0,Na.Z)(e.item.completion.commitCharacters);try{for(i.s();!(t=i.n()).done;){var r=t.value;r.length>0&&n.add(r.charCodeAt(0))}}catch(o){i.e(o)}finally{i.f()}this._active={acceptCharacters:n,item:e}}}else this.reset()}},{key:"reset",value:function(){this._active=void 0}},{key:"dispose",value:function(){this._disposables.dispose()}}]),e}(),R3=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this._disposables=new WB.SL,this._lastOvertyped=[],this._empty=!0,this._disposables.add(t.onWillType((function(){if(i._empty&&t.hasModel()){for(var n=t.getSelections(),r=n.length,o=!1,a=0;a<r;a++)if(!n[a].isEmpty()){o=!0;break}if(o){i._lastOvertyped=[];for(var s=t.getModel(),u=0;u<r;u++){var l=n[u];if(s.getValueLengthInRange(l)>e._maxSelectionLength)return;i._lastOvertyped[u]={value:s.getValueInRange(l),multiline:l.startLineNumber!==l.endLineNumber}}i._empty=!1}}}))),this._disposables.add(n.onDidCancel((function(e){i._empty||e.retrigger||(i._empty=!0)})))}return(0,J.Z)(e,[{key:"getLastOvertypedInfo",value:function(e){if(!this._empty&&e>=0&&e<this._lastOvertyped.length)return this._lastOvertyped[e]}},{key:"dispose",value:function(){this._disposables.dispose()}}]),e}();R3._maxSelectionLength=51200;var P3=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},Z3=function(e,t){return function(n,i){t(n,i,e)}},F3=!1,j3=function(){function e(t,n){if((0,X.Z)(this,e),this._model=t,this._position=n,t.getLineMaxColumn(n.lineNumber)!==n.column){var i=t.getOffsetAt(n),r=t.getPositionAt(i+1);this._marker=t.deltaDecorations([],[{range:YB.e.fromPositions(n,r),options:{stickiness:1}}])}}return(0,J.Z)(e,[{key:"dispose",value:function(){this._marker&&!this._model.isDisposed()&&this._model.deltaDecorations(this._marker,[])}},{key:"delta",value:function(e){if(this._model.isDisposed()||this._position.lineNumber!==e.lineNumber)return 0;if(this._marker){var t=this._model.getDecorationRange(this._marker[0]);return this._model.getOffsetAt(t.getStartPosition())-this._model.getOffsetAt(e)}return this._model.getLineMaxColumn(e.lineNumber)-e.column}}]),e}(),H3=function(){function e(t,n,i,r,o,a){var s=this;(0,X.Z)(this,e),this._memoryService=n,this._commandService=i,this._contextKeyService=r,this._instantiationService=o,this._logService=a,this._lineSuffix=new WB.XK,this._toDispose=new WB.SL,this.editor=t,this.model=o.createInstance(m2,this.editor);var u=y1.InsertMode.bindTo(r);u.set(t.getOption(103).insertMode),this.model.onDidTrigger((function(){return u.set(t.getOption(103).insertMode)})),this.widget=this._toDispose.add(new zB.Ue((function(){var e=s._instantiationService.createInstance(N3,s.editor);s._toDispose.add(e),s._toDispose.add(e.onDidSelect((function(e){return s._insertSuggestion(e,0)}),s));var t=new A3(s.editor,e,(function(e){return s._insertSuggestion(e,2)}));s._toDispose.add(t),s._toDispose.add(s.model.onDidSuggest((function(e){0===e.completionModel.items.length&&t.reset()})));var n=y1.MakesTextEdit.bindTo(s._contextKeyService),i=y1.HasInsertAndReplaceRange.bindTo(s._contextKeyService),r=y1.CanResolve.bindTo(s._contextKeyService);return s._toDispose.add((0,WB.OF)((function(){n.reset(),i.reset(),r.reset()}))),s._toDispose.add(e.onDidFocus((function(e){var t=e.item,o=s.editor.getPosition(),a=t.editStart.column,u=o.column,l=!0;"smart"!==s.editor.getOption(1)||2!==s.model.state||t.completion.command||t.completion.additionalTextEdits||4&t.completion.insertTextRules||u-a!==t.completion.insertText.length||(l=s.editor.getModel().getValueInRange({startLineNumber:o.lineNumber,startColumn:a,endLineNumber:o.lineNumber,endColumn:u})!==t.completion.insertText);n.set(l),i.set(!VB.L.equals(t.editInsertEnd,t.editReplaceEnd)),r.set(Boolean(t.provider.resolveCompletionItem)||Boolean(t.completion.documentation)||t.completion.detail!==t.completion.label)}))),s._toDispose.add(e.onDetailsKeyDown((function(e){e.toKeybinding().equals(new CB.QC(!0,!1,!1,!1,33))||dz.dz&&e.toKeybinding().equals(new CB.QC(!1,!1,!1,!0,33))?e.stopPropagation():e.toKeybinding().isModifierKey()||s.editor.focus()}))),e}))),this._overtypingCapturer=this._toDispose.add(new zB.Ue((function(){return s._toDispose.add(new R3(s.editor,s.model))}))),this._alternatives=this._toDispose.add(new zB.Ue((function(){return s._toDispose.add(new l2(s.editor,s._contextKeyService))}))),this._toDispose.add(o.createInstance(O3,t)),this._toDispose.add(this.model.onDidTrigger((function(e){s.widget.value.showTriggered(e.auto,e.shy?250:50),s._lineSuffix.value=new j3(s.editor.getModel(),e.position)}))),this._toDispose.add(this.model.onDidSuggest((function(e){if(!e.shy){var t=s._memoryService.select(s.editor.getModel(),s.editor.getPosition(),e.completionModel.items);s.widget.value.showSuggestions(e.completionModel,t,e.isFrozen,e.auto)}}))),this._toDispose.add(this.model.onDidCancel((function(e){e.retrigger||s.widget.value.hideWidget()}))),this._toDispose.add(this.editor.onDidBlurEditorWidget((function(){F3||(s.model.cancel(),s.model.clear())})));var l=y1.AcceptSuggestionsOnEnter.bindTo(r),c=function(){var e=s.editor.getOption(1);l.set("on"===e||"smart"===e)};this._toDispose.add(this.editor.onDidChangeConfiguration((function(){return c()}))),c()}return(0,J.Z)(e,[{key:"dispose",value:function(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose()}},{key:"_insertSuggestion",value:function(e,t){var n=this;if(!e||!e.item)return this._alternatives.value.reset(),this.model.cancel(),void this.model.clear();if(this.editor.hasModel()){var i=this.editor.getModel(),r=i.getAlternativeVersionId(),o=e.item,a=[],s=new Lz.A;1&t||this.editor.pushUndoStop();var u=this.getOverwriteInfo(o,Boolean(8&t));if(this._memoryService.memorize(i,this.editor.getPosition(),o),Array.isArray(o.completion.additionalTextEdits)){var l=Tz.ZF.capture(this.editor);this.editor.executeEdits("suggestController.additionalTextEdits.sync",o.completion.additionalTextEdits.map((function(e){return Yq.h.replace(YB.e.lift(e.range),e.text)}))),l.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!o.isResolved){var c,d=new m1.G(!0),h=i.onDidChangeContent((function(e){if(e.isFlush)return s.cancel(),void h.dispose();var t,n=(0,Na.Z)(e.changes);try{for(n.s();!(t=n.n()).done;){var i=t.value,r=YB.e.getEndPosition(i.range);c&&!VB.L.isBefore(r,c)||(c=r)}}catch(o){n.e(o)}finally{n.f()}})),f=t;t|=2;var p=!1,g=this.editor.onWillType((function(){g.dispose(),p=!0,2&f||n.editor.pushUndoStop()}));a.push(o.resolve(s.token).then((function(){if(!o.completion.additionalTextEdits||s.token.isCancellationRequested)return!1;if(c&&o.completion.additionalTextEdits.some((function(e){return VB.L.isBefore(c,YB.e.getStartPosition(e.range))})))return!1;p&&n.editor.pushUndoStop();var e=Tz.ZF.capture(n.editor);return n.editor.executeEdits("suggestController.additionalTextEdits.async",o.completion.additionalTextEdits.map((function(e){return Yq.h.replace(YB.e.lift(e.range),e.text)}))),e.restoreRelativeVerticalPositionOfCursor(n.editor),!p&&2&f||n.editor.pushUndoStop(),!0})).then((function(e){n._logService.trace("[suggest] async resolving of edits DONE (ms, applied?)",d.elapsed(),e),h.dispose(),g.dispose()})))}var v=o.completion.insertText;if(4&o.completion.insertTextRules||(v=v1.escape(v)),Q1.get(this.editor).insert(v,{overwriteBefore:u.overwriteBefore,overwriteAfter:u.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(1&o.completion.insertTextRules),clipboardText:e.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value}),2&t||this.editor.pushUndoStop(),o.completion.command)if(o.completion.command.id===B3.id)this.model.trigger({auto:!0,shy:!1},!0);else{var m;a.push((m=this._commandService).executeCommand.apply(m,[o.completion.command.id].concat((0,Ct.Z)(o.completion.command.arguments?(0,Ct.Z)(o.completion.command.arguments):[]))).catch(LB.dL)),this.model.cancel()}else this.model.cancel();4&t&&this._alternatives.value.set(e,(function(e){for(s.cancel();i.canUndo();){r!==i.getAlternativeVersionId()&&i.undo(),n._insertSuggestion(e,3|(8&t?8:0));break}})),this._alertCompletionItem(o),Promise.all(a).finally((function(){n.model.clear(),s.dispose()}))}}},{key:"getOverwriteInfo",value:function(e,t){(0,oV.p_)(this.editor.hasModel());var n="replace"===this.editor.getOption(103).insertMode;t&&(n=!n);var i=e.position.column-e.editStart.column,r=(n?e.editReplaceEnd.column:e.editInsertEnd.column)-e.position.column;return{overwriteBefore:i+(this.editor.getPosition().column-e.position.column),overwriteAfter:r+(this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0)}}},{key:"_alertCompletionItem",value:function(e){if((0,SB.Of)(e.completion.additionalTextEdits)){var t=yB.N("aria.alert.snippet","Accepting '{0}' made {1} additional edits",e.textLabel,e.completion.additionalTextEdits.length);(0,IB.Z9)(t)}}},{key:"triggerSuggest",value:function(e){this.editor.hasModel()&&(this.model.trigger({auto:!1,shy:!1},!1,e),this.editor.revealLine(this.editor.getPosition().lineNumber,0),this.editor.focus())}},{key:"triggerSuggestAndAcceptBest",value:function(e){var t=this;if(this.editor.hasModel()){var n=this.editor.getPosition(),i=function(){n.equals(t.editor.getPosition())&&t._commandService.executeCommand(e.fallback)};_W.ju.once(this.model.onDidTrigger)((function(e){var n=[];_W.ju.any(t.model.onDidTrigger,t.model.onDidCancel)((function(){(0,WB.B9)(n),i()}),void 0,n),t.model.onDidSuggest((function(e){var r=e.completionModel;if((0,WB.B9)(n),0!==r.items.length){var o=t._memoryService.select(t.editor.getModel(),t.editor.getPosition(),r.items),a=r.items[o];!function(e){if(4&e.completion.insertTextRules||e.completion.additionalTextEdits)return!0;var n=t.editor.getPosition(),i=e.editStart.column,r=n.column;return r-i!==e.completion.insertText.length||t.editor.getModel().getValueInRange({startLineNumber:n.lineNumber,startColumn:i,endLineNumber:n.lineNumber,endColumn:r})!==e.completion.insertText}(a)?i():(t.editor.pushUndoStop(),t._insertSuggestion({index:o,item:a,model:r},7))}else i()}),void 0,n)})),this.model.trigger({auto:!1,shy:!0}),this.editor.revealLine(n.lineNumber,0),this.editor.focus()}}},{key:"acceptSelectedSuggestion",value:function(e,t){var n=this.widget.value.getFocusedItem(),i=0;e&&(i|=4),t&&(i|=8),this._insertSuggestion(n,i)}},{key:"acceptNextSuggestion",value:function(){this._alternatives.value.next()}},{key:"acceptPrevSuggestion",value:function(){this._alternatives.value.prev()}},{key:"cancelSuggestWidget",value:function(){this.model.cancel(),this.model.clear(),this.widget.value.hideWidget()}},{key:"selectNextSuggestion",value:function(){this.widget.value.selectNext()}},{key:"selectNextPageSuggestion",value:function(){this.widget.value.selectNextPage()}},{key:"selectLastSuggestion",value:function(){this.widget.value.selectLast()}},{key:"selectPrevSuggestion",value:function(){this.widget.value.selectPrevious()}},{key:"selectPrevPageSuggestion",value:function(){this.widget.value.selectPreviousPage()}},{key:"selectFirstSuggestion",value:function(){this.widget.value.selectFirst()}},{key:"toggleSuggestionDetails",value:function(){this.widget.value.toggleDetails()}},{key:"toggleExplainMode",value:function(){this.widget.value.toggleExplainMode()}},{key:"toggleSuggestionFocus",value:function(){this.widget.value.toggleDetailsFocus()}},{key:"resetWidgetSize",value:function(){this.widget.value.resetPersistedSize()}}],[{key:"get",value:function(t){return t.getContribution(e.ID)}}]),e}();H3.ID="editor.contrib.suggestController",H3=P3([Z3(1,a2),Z3(2,jz.H),Z3(3,kB.i6),Z3(4,oW.TG),Z3(5,P0.VZ)],H3);var B3=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:n.id,label:yB.N("suggest.trigger.label","Trigger Suggest"),alias:"Trigger Suggest",precondition:kB.Ao.and(bB.u.writable,bB.u.hasCompletionItemProvider),kbOpts:{kbExpr:bB.u.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[521,2087]},weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=H3.get(t);n&&n.triggerSuggest()}}]),n}(_B.R6);B3.id="editor.action.triggerSuggest",(0,_B._K)(H3.ID,H3),(0,_B.Qr)(B3);var z3=190,W3=_B._l.bindToContribution(H3.get);(0,_B.fK)(new W3({id:"acceptSelectedSuggestion",precondition:y1.Visible,handler:function(e){e.acceptSelectedSuggestion(!0,!1)}})),XK.W.registerKeybindingRule({id:"acceptSelectedSuggestion",when:kB.Ao.and(y1.Visible,bB.u.textInputFocus),primary:2,weight:z3}),XK.W.registerKeybindingRule({id:"acceptSelectedSuggestion",when:kB.Ao.and(y1.Visible,bB.u.textInputFocus,y1.AcceptSuggestionsOnEnter,y1.MakesTextEdit),primary:3,weight:z3}),QB.BH.appendMenuItem(b1,{command:{id:"acceptSelectedSuggestion",title:yB.N("accept.insert","Insert")},group:"left",order:1,when:y1.HasInsertAndReplaceRange.toNegated()}),QB.BH.appendMenuItem(b1,{command:{id:"acceptSelectedSuggestion",title:yB.N("accept.insert","Insert")},group:"left",order:1,when:kB.Ao.and(y1.HasInsertAndReplaceRange,y1.InsertMode.isEqualTo("insert"))}),QB.BH.appendMenuItem(b1,{command:{id:"acceptSelectedSuggestion",title:yB.N("accept.replace","Replace")},group:"left",order:1,when:kB.Ao.and(y1.HasInsertAndReplaceRange,y1.InsertMode.isEqualTo("replace"))}),(0,_B.fK)(new W3({id:"acceptAlternativeSelectedSuggestion",precondition:kB.Ao.and(y1.Visible,bB.u.textInputFocus),kbOpts:{weight:z3,kbExpr:bB.u.textInputFocus,primary:1027,secondary:[1026]},handler:function(e){e.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:b1,group:"left",order:2,when:kB.Ao.and(y1.HasInsertAndReplaceRange,y1.InsertMode.isEqualTo("insert")),title:yB.N("accept.replace","Replace")},{menuId:b1,group:"left",order:2,when:kB.Ao.and(y1.HasInsertAndReplaceRange,y1.InsertMode.isEqualTo("replace")),title:yB.N("accept.insert","Insert")}]})),jz.P.registerCommandAlias("acceptSelectedSuggestionOnEnter","acceptSelectedSuggestion"),(0,_B.fK)(new W3({id:"hideSuggestWidget",precondition:y1.Visible,handler:function(e){return e.cancelSuggestWidget()},kbOpts:{weight:z3,kbExpr:bB.u.textInputFocus,primary:9,secondary:[1033]}})),(0,_B.fK)(new W3({id:"selectNextSuggestion",precondition:kB.Ao.and(y1.Visible,y1.MultipleSuggestions),handler:function(e){return e.selectNextSuggestion()},kbOpts:{weight:z3,kbExpr:bB.u.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})),(0,_B.fK)(new W3({id:"selectNextPageSuggestion",precondition:kB.Ao.and(y1.Visible,y1.MultipleSuggestions),handler:function(e){return e.selectNextPageSuggestion()},kbOpts:{weight:z3,kbExpr:bB.u.textInputFocus,primary:12,secondary:[2060]}})),(0,_B.fK)(new W3({id:"selectLastSuggestion",precondition:kB.Ao.and(y1.Visible,y1.MultipleSuggestions),handler:function(e){return e.selectLastSuggestion()}})),(0,_B.fK)(new W3({id:"selectPrevSuggestion",precondition:kB.Ao.and(y1.Visible,y1.MultipleSuggestions),handler:function(e){return e.selectPrevSuggestion()},kbOpts:{weight:z3,kbExpr:bB.u.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})),(0,_B.fK)(new W3({id:"selectPrevPageSuggestion",precondition:kB.Ao.and(y1.Visible,y1.MultipleSuggestions),handler:function(e){return e.selectPrevPageSuggestion()},kbOpts:{weight:z3,kbExpr:bB.u.textInputFocus,primary:11,secondary:[2059]}})),(0,_B.fK)(new W3({id:"selectFirstSuggestion",precondition:kB.Ao.and(y1.Visible,y1.MultipleSuggestions),handler:function(e){return e.selectFirstSuggestion()}})),(0,_B.fK)(new W3({id:"toggleSuggestionDetails",precondition:y1.Visible,handler:function(e){return e.toggleSuggestionDetails()},kbOpts:{weight:z3,kbExpr:bB.u.textInputFocus,primary:2058,mac:{primary:266}},menuOpts:[{menuId:b1,group:"right",order:1,when:kB.Ao.and(y1.DetailsVisible,y1.CanResolve),title:yB.N("detail.more","show less")},{menuId:b1,group:"right",order:1,when:kB.Ao.and(y1.DetailsVisible.toNegated(),y1.CanResolve),title:yB.N("detail.less","show more")}]})),(0,_B.fK)(new W3({id:"toggleExplainMode",precondition:y1.Visible,handler:function(e){return e.toggleExplainMode()},kbOpts:{weight:100,primary:2133}})),(0,_B.fK)(new W3({id:"toggleSuggestionFocus",precondition:y1.Visible,handler:function(e){return e.toggleSuggestionFocus()},kbOpts:{weight:z3,kbExpr:bB.u.textInputFocus,primary:2570,mac:{primary:778}}})),(0,_B.fK)(new W3({id:"insertBestCompletion",precondition:kB.Ao.and(bB.u.textInputFocus,kB.Ao.equals("config.editor.tabCompletion","on"),O3.AtEnd,y1.Visible.toNegated(),l2.OtherSuggestions.toNegated(),Q1.InSnippetMode.toNegated()),handler:function(e,t){e.triggerSuggestAndAcceptBest((0,oV.Kn)(t)?Object.assign({fallback:"tab"},t):{fallback:"tab"})},kbOpts:{weight:z3,primary:2}})),(0,_B.fK)(new W3({id:"insertNextSuggestion",precondition:kB.Ao.and(bB.u.textInputFocus,kB.Ao.equals("config.editor.tabCompletion","on"),l2.OtherSuggestions,y1.Visible.toNegated(),Q1.InSnippetMode.toNegated()),handler:function(e){return e.acceptNextSuggestion()},kbOpts:{weight:z3,kbExpr:bB.u.textInputFocus,primary:2}})),(0,_B.fK)(new W3({id:"insertPrevSuggestion",precondition:kB.Ao.and(bB.u.textInputFocus,kB.Ao.equals("config.editor.tabCompletion","on"),l2.OtherSuggestions,y1.Visible.toNegated(),Q1.InSnippetMode.toNegated()),handler:function(e){return e.acceptPrevSuggestion()},kbOpts:{weight:z3,kbExpr:bB.u.textInputFocus,primary:1026}})),(0,_B.Qr)(function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.resetSuggestSize",label:yB.N("suggest.reset.label","Reset Suggest Widget Size"),alias:"Reset Suggest Widget Size",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t){H3.get(t).resetWidgetSize()}}]),n}(_B.R6));var V3=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.forceRetokenize",label:yB.N("forceRetokenize","Developer: Force Retokenize"),alias:"Developer: Force Retokenize",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t){if(t.hasModel()){var n=t.getModel();n.resetTokenization();var i=new m1.G(!0);n.forceTokenization(n.getLineCount()),i.stop(),console.log("tokenization took ".concat(i.elapsed()))}}}]),n}(_B.R6);(0,_B.Qr)(V3);var Y3=n(32995),U3=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:n.ID,label:yB.N({key:"toggle.tabMovesFocus",comment:["Turn on/off use of tab key for moving focus around VS Code"]},"Toggle Tab Key Moves Focus"),alias:"Toggle Tab Key Moves Focus",precondition:void 0,kbOpts:{kbExpr:null,primary:2091,mac:{primary:1323},weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=!Y3.nG.getTabFocusMode();Y3.nG.setTabFocusMode(n),n?(0,IB.Z9)(yB.N("toggle.tabMovesFocus.on","Pressing Tab will now move focus to the next focusable element")):(0,IB.Z9)(yB.N("toggle.tabMovesFocus.off","Pressing Tab will now insert the tab character"))}}]),n}(_B.R6);U3.ID="editor.action.toggleTabFocusMode",(0,_B.Qr)(U3);var K3=n(34782),q3=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},G3=function(e,t){return function(n,i){t(n,i,e)}},$3=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},Q3="ignoreUnusualLineTerminators";function X3(e,t,n){e.setModelProperty(t.uri,Q3,n)}function J3(e,t){return e.getModelProperty(t.uri,Q3)}var e5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this))._editor=e,o._dialogService=i,o._codeEditorService=r,o._config=o._editor.getOption(110),o._register(o._editor.onDidChangeConfiguration((function(e){e.hasChanged(110)&&(o._config=o._editor.getOption(110),o._checkForUnusualLineTerminators())}))),o._register(o._editor.onDidChangeModel((function(){o._checkForUnusualLineTerminators()}))),o._register(o._editor.onDidChangeModelContent((function(e){e.isUndoing||o._checkForUnusualLineTerminators()}))),o}return(0,J.Z)(n,[{key:"_checkForUnusualLineTerminators",value:function(){return $3(this,void 0,void 0,fn().mark((function e(){var t;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("off"!==this._config){e.next=2;break}return e.abrupt("return");case 2:if(this._editor.hasModel()){e.next=4;break}return e.abrupt("return");case 4:if((t=this._editor.getModel()).mightContainUnusualLineTerminators()){e.next=7;break}return e.abrupt("return");case 7:if(!0!==J3(this._codeEditorService,t)){e.next=10;break}return e.abrupt("return");case 10:if(!this._editor.getOption(77)){e.next=12;break}return e.abrupt("return");case 12:if("auto"!==this._config){e.next=15;break}return t.removeUnusualLineTerminators(this._editor.getSelections()),e.abrupt("return");case 15:return e.next=17,this._dialogService.confirm({title:yB.N("unusualLineTerminators.title","Unusual Line Terminators"),message:yB.N("unusualLineTerminators.message","Detected unusual line terminators"),detail:yB.N("unusualLineTerminators.detail","This file contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\n\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`."),primaryButton:yB.N("unusualLineTerminators.fix","Fix this file"),secondaryButton:yB.N("unusualLineTerminators.ignore","Ignore problem for this file")});case 17:if(e.sent.confirmed){e.next=21;break}return X3(this._codeEditorService,t,!0),e.abrupt("return");case 21:t.removeUnusualLineTerminators(this._editor.getSelections());case 22:case"end":return e.stop()}}),e,this)})))}}]),n}(WB.JT);e5.ID="editor.contrib.unusualLineTerminatorsDetector",e5=q3([G3(1,K3.S),G3(2,fz.$)],e5),(0,_B._K)(e5.ID,e5);var t5=n(93445),n5=n(77993),i5=n(7845),r5=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},o5=function(e,t){return function(n,i){t(n,i,e)}},a5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;return(0,X.Z)(this,n),(a=t.call(this))._modelService=i,a._themeService=r,a._configurationService=o,a._editor=e,a._tokenizeViewport=new zB.pY((function(){return a._tokenizeViewportNow()}),100),a._outstandingRequests=[],a._register(a._editor.onDidScrollChange((function(){a._tokenizeViewport.schedule()}))),a._register(a._editor.onDidChangeModel((function(){a._cancelAll(),a._tokenizeViewport.schedule()}))),a._register(a._editor.onDidChangeModelContent((function(e){a._cancelAll(),a._tokenizeViewport.schedule()}))),a._register(Iz.K7.onDidChange((function(){a._cancelAll(),a._tokenizeViewport.schedule()}))),a._register(a._configurationService.onDidChangeConfiguration((function(e){e.affectsConfiguration(n5.e3)&&(a._cancelAll(),a._tokenizeViewport.schedule())}))),a._register(a._themeService.onDidColorThemeChange((function(){a._cancelAll(),a._tokenizeViewport.schedule()}))),a}return(0,J.Z)(n,[{key:"_cancelAll",value:function(){var e,t=(0,Na.Z)(this._outstandingRequests);try{for(t.s();!(e=t.n()).done;){e.value.cancel()}}catch(n){t.e(n)}finally{t.f()}this._outstandingRequests=[]}},{key:"_removeOutstandingRequest",value:function(e){for(var t=0,n=this._outstandingRequests.length;t<n;t++)if(this._outstandingRequests[t]===e)return void this._outstandingRequests.splice(t,1)}},{key:"_tokenizeViewportNow",value:function(){var e=this;if(this._editor.hasModel()){var t=this._editor.getModel();if(!t.hasCompleteSemanticTokens())if((0,n5.tw)(t,this._themeService,this._configurationService)){var n=(0,i5.St)(t);if(n){var i=this._modelService.getSemanticTokensProviderStyling(n),r=this._editor.getVisibleRangesPlusViewportAboveBelow();this._outstandingRequests=this._outstandingRequests.concat(r.map((function(r){return e._requestRange(t,r,n,i)})))}else t.hasSomeSemanticTokens()&&t.setSemanticTokens(null,!1)}else t.hasSomeSemanticTokens()&&t.setSemanticTokens(null,!1)}}},{key:"_requestRange",value:function(e,t,n,i){var r=this,o=e.getVersionId(),a=(0,zB.PG)((function(i){return Promise.resolve(n.provideDocumentRangeSemanticTokens(e,t,i))}));return a.then((function(n){n&&!e.isDisposed()&&e.getVersionId()===o&&e.setPartialSemanticTokens(t,(0,t5.h)(n,i,e.getLanguageIdentifier()))})).then((function(){return r._removeOutstandingRequest(a)}),(function(){return r._removeOutstandingRequest(a)})),a}}]),n}(WB.JT);a5.ID="editor.contrib.viewportSemanticTokens",a5=r5([o5(1,Oz.q),o5(2,$B.XE),o5(3,IV.Ui)],a5),(0,_B._K)(a5.ID,a5);var s5=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},u5=function(e,t){return function(n,i){t(n,i,e)}},l5=(0,GB.P6)("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hc:null},yB.N("wordHighlight","Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations."),!0),c5=(0,GB.P6)("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hc:null},yB.N("wordHighlightStrong","Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations."),!0),d5=(0,GB.P6)("editor.wordHighlightBorder",{light:null,dark:null,hc:GB.xL},yB.N("wordHighlightBorder","Border color of a symbol during read-access, like reading a variable.")),h5=(0,GB.P6)("editor.wordHighlightStrongBorder",{light:null,dark:null,hc:GB.xL},yB.N("wordHighlightStrongBorder","Border color of a symbol during write-access, like writing to a variable.")),f5=(0,GB.P6)("editorOverviewRuler.wordHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hc:"#A0A0A0CC"},yB.N("overviewRulerWordHighlightForeground","Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),p5=(0,GB.P6)("editorOverviewRuler.wordHighlightStrongForeground",{dark:"#C0A0C0CC",light:"#C0A0C0CC",hc:"#C0A0C0CC"},yB.N("overviewRulerWordHighlightStrongForeground","Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),g5=new kB.uy("hasWordHighlights",!1);function v5(e,t,n){var i=Iz.vH.ordered(e);return(0,zB.Ps)(i.map((function(i){return function(){return Promise.resolve(i.provideDocumentHighlights(e,t,n)).then(void 0,LB.Cp)}})),SB.Of)}var m5=function(){function e(t,n,i){var r=this;(0,X.Z)(this,e),this._wordRange=this._getCurrentWordRange(t,n),this.result=(0,zB.PG)((function(e){return r._compute(t,n,i,e)}))}return(0,J.Z)(e,[{key:"_getCurrentWordRange",value:function(e,t){var n=e.getWordAtPosition(t.getPosition());return n?new YB.e(t.startLineNumber,n.startColumn,t.startLineNumber,n.endColumn):null}},{key:"isValid",value:function(e,t,n){for(var i=t.startLineNumber,r=t.startColumn,o=t.endColumn,a=this._getCurrentWordRange(e,t),s=Boolean(this._wordRange&&this._wordRange.equalsRange(a)),u=0,l=n.length;!s&&u<l;u++){var c=e.getDecorationRange(n[u]);c&&c.startLineNumber===i&&c.startColumn<=r&&c.endColumn>=o&&(s=!0)}return s}},{key:"cancel",value:function(){this.result.cancel()}}]),e}(),_5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_compute",value:function(e,t,n,i){return v5(e,t.getPosition(),i).then((function(e){return e||[]}))}}]),n}(m5),y5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this,e,i,r))._selectionIsEmpty=i.isEmpty(),o}return(0,J.Z)(n,[{key:"_compute",value:function(e,t,n,i){return(0,zB.Vs)(250,i).then((function(){if(!t.isEmpty())return[];var i=e.getWordAtPosition(t.getPosition());return!i||i.word.length>1e3?[]:e.findMatches(i.word,!0,!1,!0,n,!1).map((function(e){return{range:e.range,kind:Iz.MY.Text}}))}))}},{key:"isValid",value:function(e,t,i){var r=t.isEmpty();return this._selectionIsEmpty===r&&(0,Qz.Z)((0,Xz.Z)(n.prototype),"isValid",this).call(this,e,t,i)}}]),n}(m5);(0,_B.sb)("_executeDocumentHighlights",(function(e,t){return v5(e,t,Lz.T.None)}));var b5=function(){function e(t,n){var i=this;(0,X.Z)(this,e),this.toUnhook=new WB.SL,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=[],this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.editor=t,this._hasWordHighlights=g5.bindTo(n),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getOption(68),this.model=this.editor.getModel(),this.toUnhook.add(t.onDidChangeCursorPosition((function(e){i._ignorePositionChangeEvent||i.occurrencesHighlight&&i._onPositionChanged(e)}))),this.toUnhook.add(t.onDidChangeModelContent((function(e){i._stopAll()}))),this.toUnhook.add(t.onDidChangeConfiguration((function(e){var t=i.editor.getOption(68);i.occurrencesHighlight!==t&&(i.occurrencesHighlight=t,i._stopAll())}))),this._decorationIds=[],this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1}return(0,J.Z)(e,[{key:"hasDecorations",value:function(){return this._decorationIds.length>0}},{key:"restore",value:function(){this.occurrencesHighlight&&this._run()}},{key:"_getSortedHighlights",value:function(){var e=this;return SB.kX(this._decorationIds.map((function(t){return e.model.getDecorationRange(t)})).sort(YB.e.compareRangesUsingStarts))}},{key:"moveNext",value:function(){var e=this,t=this._getSortedHighlights(),n=t.findIndex((function(t){return t.containsPosition(e.editor.getPosition())})),i=(n+1)%t.length,r=t[i];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(r.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(r);var o=this._getWord();if(o){var a=this.editor.getModel().getLineContent(r.startLineNumber);(0,IB.Z9)("".concat(a,", ").concat(i+1," of ").concat(t.length," for '").concat(o.word,"'"))}}finally{this._ignorePositionChangeEvent=!1}}},{key:"moveBack",value:function(){var e=this,t=this._getSortedHighlights(),n=t.findIndex((function(t){return t.containsPosition(e.editor.getPosition())})),i=(n-1+t.length)%t.length,r=t[i];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(r.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(r);var o=this._getWord();if(o){var a=this.editor.getModel().getLineContent(r.startLineNumber);(0,IB.Z9)("".concat(a,", ").concat(i+1," of ").concat(t.length," for '").concat(o.word,"'"))}}finally{this._ignorePositionChangeEvent=!1}}},{key:"_removeDecorations",value:function(){this._decorationIds.length>0&&(this._decorationIds=this.editor.deltaDecorations(this._decorationIds,[]),this._hasWordHighlights.set(!1))}},{key:"_stopAll",value:function(){this._removeDecorations(),-1!==this.renderDecorationsTimer&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),null!==this.workerRequest&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}},{key:"_onPositionChanged",value:function(e){this.occurrencesHighlight&&3===e.reason?this._run():this._stopAll()}},{key:"_getWord",value:function(){var e=this.editor.getSelection(),t=e.startLineNumber,n=e.startColumn;return this.model.getWordAtPosition({lineNumber:t,column:n})}},{key:"_run",value:function(){var e=this,t=this.editor.getSelection();if(t.startLineNumber===t.endLineNumber){var n=t.startColumn,i=t.endColumn,r=this._getWord();if(!r||r.startColumn>n||r.endColumn<i)this._stopAll();else{var o=this.workerRequest&&this.workerRequest.isValid(this.model,t,this._decorationIds);if(this.lastCursorPositionChangeTime=(new Date).getTime(),o)this.workerRequestCompleted&&-1!==this.renderDecorationsTimer&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1,this._beginRenderDecorations());else{this._stopAll();var a=++this.workerRequestTokenId;this.workerRequestCompleted=!1,this.workerRequest=function(e,t,n){return Iz.vH.has(e)?new _5(e,t,n):new y5(e,t,n)}(this.model,this.editor.getSelection(),this.editor.getOption(113)),this.workerRequest.result.then((function(t){a===e.workerRequestTokenId&&(e.workerRequestCompleted=!0,e.workerRequestValue=t||[],e._beginRenderDecorations())}),LB.dL)}}}else this._stopAll()}},{key:"_beginRenderDecorations",value:function(){var e=this,t=(new Date).getTime(),n=this.lastCursorPositionChangeTime+250;t>=n?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout((function(){e.renderDecorations()}),n-t)}},{key:"renderDecorations",value:function(){this.renderDecorationsTimer=-1;var t,n=[],i=(0,Na.Z)(this.workerRequestValue);try{for(i.s();!(t=i.n()).done;){var r=t.value;r.range&&n.push({range:r.range,options:e._getDecorationOptions(r.kind)})}}catch(o){i.e(o)}finally{i.f()}this._decorationIds=this.editor.deltaDecorations(this._decorationIds,n),this._hasWordHighlights.set(this.hasDecorations())}},{key:"dispose",value:function(){this._stopAll(),this.toUnhook.dispose()}}],[{key:"_getDecorationOptions",value:function(e){return e===Iz.MY.Write?this._WRITE_OPTIONS:e===Iz.MY.Text?this._TEXT_OPTIONS:this._REGULAR_OPTIONS}}]),e}();b5._WRITE_OPTIONS=KB.qx.register({stickiness:1,className:"wordHighlightStrong",overviewRuler:{color:(0,$B.EN)(p5),position:UB.sh.Center}}),b5._TEXT_OPTIONS=KB.qx.register({stickiness:1,className:"selectionHighlight",overviewRuler:{color:(0,$B.EN)(GB.SP),position:UB.sh.Center}}),b5._REGULAR_OPTIONS=KB.qx.register({stickiness:1,className:"wordHighlight",overviewRuler:{color:(0,$B.EN)(f5),position:UB.sh.Center}});var w5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;(0,X.Z)(this,n),(r=t.call(this)).wordHighlighter=null;var o=function(){e.hasModel()&&(r.wordHighlighter=new b5(e,i))};return r._register(e.onDidChangeModel((function(e){r.wordHighlighter&&(r.wordHighlighter.dispose(),r.wordHighlighter=null),o()}))),o(),r}return(0,J.Z)(n,[{key:"saveViewState",value:function(){return!(!this.wordHighlighter||!this.wordHighlighter.hasDecorations())}},{key:"moveNext",value:function(){this.wordHighlighter&&this.wordHighlighter.moveNext()}},{key:"moveBack",value:function(){this.wordHighlighter&&this.wordHighlighter.moveBack()}},{key:"restoreViewState",value:function(e){this.wordHighlighter&&e&&this.wordHighlighter.restore()}},{key:"dispose",value:function(){this.wordHighlighter&&(this.wordHighlighter.dispose(),this.wordHighlighter=null),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}}],[{key:"get",value:function(e){return e.getContribution(n.ID)}}]),n}(WB.JT);w5.ID="editor.contrib.wordHighlighter",w5=s5([u5(1,kB.i6)],w5);var C5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this,i))._isNext=e,r}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=w5.get(t);n&&(this._isNext?n.moveNext():n.moveBack())}}]),n}(_B.R6),k5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!0,{id:"editor.action.wordHighlight.next",label:yB.N("wordHighlight.next.label","Go to Next Symbol Highlight"),alias:"Go to Next Symbol Highlight",precondition:g5,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:65,weight:100}})}return(0,J.Z)(n)}(C5),S5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,!1,{id:"editor.action.wordHighlight.prev",label:yB.N("wordHighlight.previous.label","Go to Previous Symbol Highlight"),alias:"Go to Previous Symbol Highlight",precondition:g5,kbOpts:{kbExpr:bB.u.editorTextFocus,primary:1089,weight:100}})}return(0,J.Z)(n)}(C5),x5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.wordHighlight.trigger",label:yB.N("wordHighlight.trigger.label","Trigger Symbol Highlight"),alias:"Trigger Symbol Highlight",precondition:g5.toNegated(),kbOpts:{kbExpr:bB.u.editorTextFocus,primary:0,weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e,t,n){var i=w5.get(t);i&&i.restoreViewState(!0)}}]),n}(_B.R6);(0,_B._K)(w5.ID,w5),(0,_B.Qr)(k5),(0,_B.Qr)(S5),(0,_B.Qr)(x5),(0,$B.Ic)((function(e,t){var n=e.getColor(GB.Rz);n&&(t.addRule(".monaco-editor .focused .selectionHighlight { background-color: ".concat(n,"; }")),t.addRule(".monaco-editor .selectionHighlight { background-color: ".concat(n.transparent(.5),"; }")));var i=e.getColor(l5);i&&t.addRule(".monaco-editor .wordHighlight { background-color: ".concat(i,"; }"));var r=e.getColor(c5);r&&t.addRule(".monaco-editor .wordHighlightStrong { background-color: ".concat(r,"; }"));var o=e.getColor(GB.g_);o&&t.addRule(".monaco-editor .selectionHighlight { border: 1px ".concat("hc"===e.type?"dotted":"solid"," ").concat(o,"; box-sizing: border-box; }"));var a=e.getColor(d5);a&&t.addRule(".monaco-editor .wordHighlight { border: 1px ".concat("hc"===e.type?"dashed":"solid"," ").concat(a,"; box-sizing: border-box; }"));var s=e.getColor(h5);s&&t.addRule(".monaco-editor .wordHighlightStrong { border: 1px ".concat("hc"===e.type?"dashed":"solid"," ").concat(s,"; box-sizing: border-box; }"))}));var L5=n(16274),E5=n(86441),D5=n(20937),N5=n(76556),M5=n(49357),T5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this,e))._inSelectionMode=e.inSelectionMode,i._wordNavigationType=e.wordNavigationType,i}return(0,J.Z)(n,[{key:"runEditorCommand",value:function(e,t,n){var i=this;if(t.hasModel()){var r=(0,D5.u)(t.getOption(113)),o=t.getModel(),a=t.getSelections().map((function(e){var t=new VB.L(e.positionLineNumber,e.positionColumn),n=i._move(r,o,t,i._wordNavigationType);return i._moveTo(e,n,i._inSelectionMode)}));if(o.pushStackElement(),t._getViewModel().setCursorStates("moveWordCommand",3,a.map((function(e){return L5.Vi.fromModelSelection(e)}))),1===a.length){var s=new VB.L(a[0].positionLineNumber,a[0].positionColumn);t.revealPosition(s,0)}}}},{key:"_moveTo",value:function(e,t,n){return n?new wB.Y(e.selectionStartLineNumber,e.selectionStartColumn,t.lineNumber,t.column):new wB.Y(t.lineNumber,t.column,t.lineNumber,t.column)}}]),n}(_B._l),I5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_move",value:function(e,t,n,i){return E5.w.moveWordLeft(e,t,n,i)}}]),n}(T5),O5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_move",value:function(e,t,n,i){return E5.w.moveWordRight(e,t,n,i)}}]),n}(T5),A5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}return(0,J.Z)(n)}(I5),R5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}return(0,J.Z)(n)}(I5),P5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:kB.Ao.and(bB.u.textInputFocus,null===(e=kB.Ao.and(oY.U,M5.c))||void 0===e?void 0:e.negate()),primary:2063,mac:{primary:527},weight:100}})}return(0,J.Z)(n)}(I5),Z5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}return(0,J.Z)(n)}(I5),F5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}return(0,J.Z)(n)}(I5),j5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:kB.Ao.and(bB.u.textInputFocus,null===(e=kB.Ao.and(oY.U,M5.c))||void 0===e?void 0:e.negate()),primary:3087,mac:{primary:1551},weight:100}})}return(0,J.Z)(n)}(I5),H5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0})}return(0,J.Z)(n,[{key:"_move",value:function(e,t,i,r){return(0,Qz.Z)((0,Xz.Z)(n.prototype),"_move",this).call(this,(0,D5.u)(N5.BH.wordSeparators.defaultValue),t,i,r)}}]),n}(I5),B5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0})}return(0,J.Z)(n,[{key:"_move",value:function(e,t,i,r){return(0,Qz.Z)((0,Xz.Z)(n.prototype),"_move",this).call(this,(0,D5.u)(N5.BH.wordSeparators.defaultValue),t,i,r)}}]),n}(I5),z5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}return(0,J.Z)(n)}(O5),W5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:kB.Ao.and(bB.u.textInputFocus,null===(e=kB.Ao.and(oY.U,M5.c))||void 0===e?void 0:e.negate()),primary:2065,mac:{primary:529},weight:100}})}return(0,J.Z)(n)}(O5),V5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}return(0,J.Z)(n)}(O5),Y5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}return(0,J.Z)(n)}(O5),U5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:kB.Ao.and(bB.u.textInputFocus,null===(e=kB.Ao.and(oY.U,M5.c))||void 0===e?void 0:e.negate()),primary:3089,mac:{primary:1553},weight:100}})}return(0,J.Z)(n)}(O5),K5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}return(0,J.Z)(n)}(O5),q5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0})}return(0,J.Z)(n,[{key:"_move",value:function(e,t,i,r){return(0,Qz.Z)((0,Xz.Z)(n.prototype),"_move",this).call(this,(0,D5.u)(N5.BH.wordSeparators.defaultValue),t,i,r)}}]),n}(O5),G5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0})}return(0,J.Z)(n,[{key:"_move",value:function(e,t,i,r){return(0,Qz.Z)((0,Xz.Z)(n.prototype),"_move",this).call(this,(0,D5.u)(N5.BH.wordSeparators.defaultValue),t,i,r)}}]),n}(O5),$5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this,e))._whitespaceHeuristics=e.whitespaceHeuristics,i._wordNavigationType=e.wordNavigationType,i}return(0,J.Z)(n,[{key:"runEditorCommand",value:function(e,t,n){var i=this;if(t.hasModel()){var r=(0,D5.u)(t.getOption(113)),o=t.getModel(),a=t.getSelections(),s=t.getOption(5),u=t.getOption(8),l=Uq.zu.getAutoClosingPairs(o.getLanguageIdentifier().id),c=t._getViewModel(),d=a.map((function(e){var n=i._delete({wordSeparators:r,model:o,selection:e,whitespaceHeuristics:i._whitespaceHeuristics,autoClosingDelete:t.getOption(6),autoClosingBrackets:s,autoClosingQuotes:u,autoClosingPairs:l,autoClosedCharacters:c.getCursorAutoClosedCharacters()},i._wordNavigationType);return new sz.T4(n,"")}));t.pushUndoStop(),t.executeCommands(this.id,d),t.pushUndoStop()}}}]),n}(_B._l),Q5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_delete",value:function(e,t){var n=E5.w.deleteWordLeft(e,t);return n||new YB.e(1,1,1,1)}}]),n}($5),X5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_delete",value:function(e,t){var n=E5.w.deleteWordRight(e,t);if(n)return n;var i=e.model.getLineCount(),r=e.model.getLineMaxColumn(i);return new YB.e(i,r,i,r)}}]),n}($5),J5=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:bB.u.writable})}return(0,J.Z)(n)}(Q5),e4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:bB.u.writable})}return(0,J.Z)(n)}(Q5),t4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}return(0,J.Z)(n)}(Q5),n4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:bB.u.writable})}return(0,J.Z)(n)}(X5),i4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:bB.u.writable})}return(0,J.Z)(n)}(X5),r4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}return(0,J.Z)(n)}(X5),o4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"deleteInsideWord",precondition:bB.u.writable,label:yB.N("deleteInsideWord","Delete Word"),alias:"Delete Word"})}return(0,J.Z)(n,[{key:"run",value:function(e,t,n){if(t.hasModel()){var i=(0,D5.u)(t.getOption(113)),r=t.getModel(),o=t.getSelections().map((function(e){var t=E5.w.deleteInsideWord(i,r,e);return new sz.T4(t,"")}));t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}}]),n}(_B.R6);(0,_B.fK)(new A5),(0,_B.fK)(new R5),(0,_B.fK)(new P5),(0,_B.fK)(new Z5),(0,_B.fK)(new F5),(0,_B.fK)(new j5),(0,_B.fK)(new z5),(0,_B.fK)(new W5),(0,_B.fK)(new V5),(0,_B.fK)(new Y5),(0,_B.fK)(new U5),(0,_B.fK)(new K5),(0,_B.fK)(new H5),(0,_B.fK)(new B5),(0,_B.fK)(new q5),(0,_B.fK)(new G5),(0,_B.fK)(new J5),(0,_B.fK)(new e4),(0,_B.fK)(new t4),(0,_B.fK)(new n4),(0,_B.fK)(new i4),(0,_B.fK)(new r4),(0,_B.Qr)(o4);var a4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.textInputFocus,primary:0,mac:{primary:769},weight:100}})}return(0,J.Z)(n,[{key:"_delete",value:function(e,t){var n=E5.L.deleteWordPartLeft(e);return n||new YB.e(1,1,1,1)}}]),n}($5),s4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:bB.u.writable,kbOpts:{kbExpr:bB.u.textInputFocus,primary:0,mac:{primary:788},weight:100}})}return(0,J.Z)(n,[{key:"_delete",value:function(e,t){var n=E5.L.deleteWordPartRight(e);if(n)return n;var i=e.model.getLineCount(),r=e.model.getLineMaxColumn(i);return new YB.e(i,r,i,r)}}]),n}($5),u4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_move",value:function(e,t,n,i){return E5.L.moveWordPartLeft(e,t,n)}}]),n}(T5),l4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:bB.u.textInputFocus,primary:0,mac:{primary:783},weight:100}})}return(0,J.Z)(n)}(u4);jz.P.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");var c4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:bB.u.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}return(0,J.Z)(n)}(u4);jz.P.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");var d4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"_move",value:function(e,t,n,i){return E5.L.moveWordPartRight(e,t,n)}}]),n}(T5),h4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:bB.u.textInputFocus,primary:0,mac:{primary:785},weight:100}})}return(0,J.Z)(n)}(d4),f4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:bB.u.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}return(0,J.Z)(n)}(d4);(0,_B.fK)(new a4),(0,_B.fK)(new s4),(0,_B.fK)(new l4),(0,_B.fK)(new c4),(0,_B.fK)(new h4),(0,_B.fK)(new f4);var p4=n(25741),g4=n(41149),v4=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},m4=function(e,t){return function(n,i){t(n,i,e)}},_4=new kB.uy("accessibilityHelpWidgetVisible",!1),y4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this))._editor=e,r._widget=r._register(i.createInstance(b4,r._editor)),r}return(0,J.Z)(n,[{key:"show",value:function(){this._widget.show()}},{key:"hide",value:function(){this._widget.hide()}}],[{key:"get",value:function(e){return e.getContribution(n.ID)}}]),n}(WB.JT);y4.ID="editor.contrib.accessibilityHelpController",y4=v4([m4(1,oW.TG)],y4);var b4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o){var a;return(0,X.Z)(this,n),(a=t.call(this))._contextKeyService=i,a._keybindingService=r,a._openerService=o,a._editor=e,a._isVisibleKey=_4.bindTo(a._contextKeyService),a._domNode=(0,g4.X)(document.createElement("div")),a._domNode.setClassName("accessibilityHelpWidget"),a._domNode.setDisplay("none"),a._domNode.setAttribute("role","dialog"),a._domNode.setAttribute("aria-hidden","true"),a._contentDomNode=(0,g4.X)(document.createElement("div")),a._contentDomNode.setAttribute("role","document"),a._domNode.appendChild(a._contentDomNode),a._isVisible=!1,a._register(a._editor.onDidLayoutChange((function(){a._isVisible&&a._layout()}))),a._register(aW.addStandardDisposableListener(a._contentDomNode.domNode,"keydown",(function(e){if(a._isVisible&&(e.equals(2083)&&((0,IB.Z9)(p4.Oe.emergencyConfOn),a._editor.updateOptions({accessibilitySupport:"on"}),aW.clearNode(a._contentDomNode.domNode),a._buildContent(),a._contentDomNode.domNode.focus(),e.preventDefault(),e.stopPropagation()),e.equals(2086))){(0,IB.Z9)(p4.Oe.openingDocs);var t=a._editor.getRawOptions().accessibilityHelpUrl;"undefined"===typeof t&&(t="https://go.microsoft.com/fwlink/?linkid=852450"),a._openerService.open(Mz.o.parse(t)),e.preventDefault(),e.stopPropagation()}}))),a.onblur(a._contentDomNode.domNode,(function(){a.hide()})),a._editor.addOverlayWidget((0,Br.Z)(a)),a}return(0,J.Z)(n,[{key:"dispose",value:function(){this._editor.removeOverlayWidget(this),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"getId",value:function(){return n.ID}},{key:"getDomNode",value:function(){return this._domNode.domNode}},{key:"getPosition",value:function(){return{preference:null}}},{key:"show",value:function(){this._isVisible||(this._isVisible=!0,this._isVisibleKey.set(!0),this._layout(),this._domNode.setDisplay("block"),this._domNode.setAttribute("aria-hidden","false"),this._contentDomNode.domNode.tabIndex=0,this._buildContent(),this._contentDomNode.domNode.focus())}},{key:"_descriptionForCommand",value:function(e,t,n){var i=this._keybindingService.lookupKeybinding(e);return i?Dz.WU(t,i.getAriaLabel()):Dz.WU(n,e)}},{key:"_buildContent",value:function(){var e=this._editor.getOptions(),t=this._editor.getSelections(),n=0;if(t){var i=this._editor.getModel();i&&t.forEach((function(e){n+=i.getValueLengthInRange(e)}))}var r=function(e,t){return e&&0!==e.length?1===e.length?t?Dz.WU(p4.Oe.singleSelectionRange,e[0].positionLineNumber,e[0].positionColumn,t):Dz.WU(p4.Oe.singleSelection,e[0].positionLineNumber,e[0].positionColumn):t?Dz.WU(p4.Oe.multiSelectionRange,e.length,t):e.length>0?Dz.WU(p4.Oe.multiSelection,e.length):"":p4.Oe.noSelection}(t,n);e.get(51)?e.get(77)?r+=p4.Oe.readonlyDiffEditor:r+=p4.Oe.editableDiffEditor:e.get(77)?r+=p4.Oe.readonlyEditor:r+=p4.Oe.editableEditor;var o=dz.dz?p4.Oe.changeConfigToOnMac:p4.Oe.changeConfigToOnWinLinux;switch(e.get(2)){case 0:r+="\n\n - "+o;break;case 2:r+="\n\n - "+p4.Oe.auto_on;break;case 1:r+="\n\n - "+p4.Oe.auto_off,r+=" "+o}e.get(126)?r+="\n\n - "+this._descriptionForCommand(U3.ID,p4.Oe.tabFocusModeOnMsg,p4.Oe.tabFocusModeOnMsgNoKb):r+="\n\n - "+this._descriptionForCommand(U3.ID,p4.Oe.tabFocusModeOffMsg,p4.Oe.tabFocusModeOffMsgNoKb),r+="\n\n - "+(dz.dz?p4.Oe.openDocMac:p4.Oe.openDocWinLinux),r+="\n\n"+p4.Oe.outroMsg,this._contentDomNode.domNode.appendChild((0,PU.BO)(r)),this._contentDomNode.domNode.setAttribute("aria-label",r)}},{key:"hide",value:function(){this._isVisible&&(this._isVisible=!1,this._isVisibleKey.reset(),this._domNode.setDisplay("none"),this._domNode.setAttribute("aria-hidden","true"),this._contentDomNode.domNode.tabIndex=-1,aW.clearNode(this._contentDomNode.domNode),this._editor.focus())}},{key:"_layout",value:function(){var e=this._editor.getLayoutInfo(),t=Math.max(5,Math.min(n.WIDTH,e.width-40)),i=Math.max(5,Math.min(n.HEIGHT,e.height-40));this._domNode.setWidth(t),this._domNode.setHeight(i);var r=Math.round((e.height-i)/2);this._domNode.setTop(r);var o=Math.round((e.width-t)/2);this._domNode.setLeft(o)}}]),n}(FV.$);b4.ID="editor.contrib.accessibilityHelpWidget",b4.WIDTH=500,b4.HEIGHT=300,b4=v4([m4(1,kB.i6),m4(2,lW.d),m4(3,XV.v4)],b4);var w4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.showAccessibilityHelp",label:p4.Oe.showAccessibilityHelpAction,alias:"Show Accessibility Help",precondition:void 0,kbOpts:{primary:571,weight:100,linux:{primary:1595,secondary:[571]}}})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=y4.get(t);n&&n.show()}}]),n}(_B.R6);(0,_B._K)(y4.ID,y4),(0,_B.Qr)(w4);var C4=_B._l.bindToContribution(y4.get);(0,_B.fK)(new C4({id:"closeAccessibilityHelp",precondition:_4,handler:function(e){return e.hide()},kbOpts:{weight:200,kbExpr:bB.u.focus,primary:9,secondary:[1033]}})),(0,$B.Ic)((function(e,t){var n=e.getColor(GB.D0);n&&t.addRule(".monaco-editor .accessibilityHelpWidget { background-color: ".concat(n,"; }"));var i=e.getColor(GB.Hf);i&&t.addRule(".monaco-editor .accessibilityHelpWidget { color: ".concat(i,"; }"));var r=e.getColor(GB.rh);r&&t.addRule(".monaco-editor .accessibilityHelpWidget { box-shadow: 0 2px 8px ".concat(r,"; }"));var o=e.getColor(GB.lR);o&&t.addRule(".monaco-editor .accessibilityHelpWidget { border: 2px solid ".concat(o,"; }"))}));var k4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this)).editor=e,i.widget=null,cz.zc&&(i._register(e.onDidChangeConfiguration((function(){return i.update()}))),i.update()),i}return(0,J.Z)(n,[{key:"update",value:function(){var e=!this.editor.getOption(77);!this.widget&&e?this.widget=new S4(this.editor):this.widget&&!e&&(this.widget.dispose(),this.widget=null)}},{key:"dispose",value:function(){(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this),this.widget&&(this.widget.dispose(),this.widget=null)}}]),n}(WB.JT);k4.ID="editor.contrib.iPadShowKeyboard";var S4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this)).editor=e,i._domNode=document.createElement("textarea"),i._domNode.className="iPadShowKeyboard",i._register(aW.addDisposableListener(i._domNode,"touchstart",(function(e){i.editor.focus()}))),i._register(aW.addDisposableListener(i._domNode,"focus",(function(e){i.editor.focus()}))),i.editor.addOverlayWidget((0,Br.Z)(i)),i}return(0,J.Z)(n,[{key:"dispose",value:function(){this.editor.removeOverlayWidget(this),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"getId",value:function(){return n.ID}},{key:"getDomNode",value:function(){return this._domNode}},{key:"getPosition",value:function(){return{preference:1}}}]),n}(WB.JT);S4.ID="editor.contrib.ShowKeyboardWidget",(0,_B._K)(k4.ID,k4);var x4=n(59401),L4=n(51342),E4=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},D4=function(e,t){return function(n,i){t(n,i,e)}},N4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r){var o;return(0,X.Z)(this,n),(o=t.call(this))._editor=e,o._modeService=r,o._widget=null,o._register(o._editor.onDidChangeModel((function(e){return o.stop()}))),o._register(o._editor.onDidChangeModelLanguage((function(e){return o.stop()}))),o._register(Iz.RW.onDidChange((function(e){return o.stop()}))),o._register(o._editor.onKeyUp((function(e){return 9===e.keyCode&&o.stop()}))),o}return(0,J.Z)(n,[{key:"dispose",value:function(){this.stop(),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"launch",value:function(){this._widget||this._editor.hasModel()&&(this._widget=new T4(this._editor,this._modeService))}},{key:"stop",value:function(){this._widget&&(this._widget.dispose(),this._widget=null)}}],[{key:"get",value:function(e){return e.getContribution(n.ID)}}]),n}(WB.JT);N4.ID="editor.contrib.inspectTokens",N4=E4([D4(1,L4.Z),D4(2,PV.h)],N4);var M4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.inspectTokens",label:p4.ug.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=N4.get(t);n&&n.launch()}}]),n}(_B.R6);var T4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r,o;return(0,X.Z)(this,n),(r=t.call(this)).allowEditorOverflow=!0,r._editor=e,r._modeService=i,r._model=r._editor.getModel(),r._domNode=document.createElement("div"),r._domNode.className="tokens-inspect-widget",r._tokenizationSupport=(o=r._model.getLanguageIdentifier(),Iz.RW.get(o.language)||{getInitialState:function(){return x4.nO},tokenize:function(e,t,n,i){return(0,x4.Ri)(o.language,e,n,i)},tokenize2:function(e,t,n,i){return(0,x4.mh)(o.id,e,n,i)}}),r._compute(r._editor.getPosition()),r._register(r._editor.onDidChangeCursorPosition((function(e){return r._compute(r._editor.getPosition())}))),r._editor.addContentWidget((0,Br.Z)(r)),r}return(0,J.Z)(n,[{key:"dispose",value:function(){this._editor.removeContentWidget(this),(0,Qz.Z)((0,Xz.Z)(n.prototype),"dispose",this).call(this)}},{key:"getId",value:function(){return n._ID}},{key:"_compute",value:function(e){for(var t=this._getTokensAtLine(e.lineNumber),n=0,i=t.tokens1.length-1;i>=0;i--){var r=t.tokens1[i];if(e.column-1>=r.offset){n=i;break}}for(var o=0,a=t.tokens2.length>>>1;a>=0;a--)if(e.column-1>=t.tokens2[a<<1]){o=a;break}var s=this._model.getLineContent(e.lineNumber),u="";if(n<t.tokens1.length){var l=t.tokens1[n].offset,c=n+1<t.tokens1.length?t.tokens1[n+1].offset:s.length;u=s.substring(l,c)}(0,aW.reset)(this._domNode,(0,aW.$)("h2.tm-token",void 0,function(e){for(var t="",n=0,i=e.length;n<i;n++){var r=e.charCodeAt(n);switch(r){case 9:t+="\u2192";break;case 32:t+="\xb7";break;default:t+=String.fromCharCode(r)}}return t}(u),(0,aW.$)("span.tm-token-length",void 0,"".concat(u.length," ").concat(1===u.length?"char":"chars")))),(0,aW.append)(this._domNode,(0,aW.$)("hr.tokens-inspect-separator",{style:"clear:both"}));var d=1+(o<<1)<t.tokens2.length?this._decodeMetadata(t.tokens2[1+(o<<1)]):null;(0,aW.append)(this._domNode,(0,aW.$)("table.tm-metadata-table",void 0,(0,aW.$)("tbody",void 0,(0,aW.$)("tr",void 0,(0,aW.$)("td.tm-metadata-key",void 0,"language"),(0,aW.$)("td.tm-metadata-value",void 0,"".concat(d?d.languageIdentifier.language:"-?-"))),(0,aW.$)("tr",void 0,(0,aW.$)("td.tm-metadata-key",void 0,"token type"),(0,aW.$)("td.tm-metadata-value",void 0,"".concat(d?this._tokenTypeToString(d.tokenType):"-?-"))),(0,aW.$)("tr",void 0,(0,aW.$)("td.tm-metadata-key",void 0,"font style"),(0,aW.$)("td.tm-metadata-value",void 0,"".concat(d?this._fontStyleToString(d.fontStyle):"-?-"))),(0,aW.$)("tr",void 0,(0,aW.$)("td.tm-metadata-key",void 0,"foreground"),(0,aW.$)("td.tm-metadata-value",void 0,"".concat(d?MV.Il.Format.CSS.formatHex(d.foreground):"-?-"))),(0,aW.$)("tr",void 0,(0,aW.$)("td.tm-metadata-key",void 0,"background"),(0,aW.$)("td.tm-metadata-value",void 0,"".concat(d?MV.Il.Format.CSS.formatHex(d.background):"-?-")))))),(0,aW.append)(this._domNode,(0,aW.$)("hr.tokens-inspect-separator")),n<t.tokens1.length&&(0,aW.append)(this._domNode,(0,aW.$)("span.tm-token-type",void 0,t.tokens1[n].type)),this._editor.layoutContentWidget(this)}},{key:"_decodeMetadata",value:function(e){var t=Iz.RW.getColorMap(),n=Iz.NX.getLanguageId(e),i=Iz.NX.getTokenType(e),r=Iz.NX.getFontStyle(e),o=Iz.NX.getForeground(e),a=Iz.NX.getBackground(e);return{languageIdentifier:this._modeService.getLanguageIdentifier(n),tokenType:i,fontStyle:r,foreground:t[o],background:t[a]}}},{key:"_tokenTypeToString",value:function(e){switch(e){case 0:return"Other";case 1:return"Comment";case 2:return"String";case 4:return"RegEx";default:return"??"}}},{key:"_fontStyleToString",value:function(e){var t="";return 1&e&&(t+="italic "),2&e&&(t+="bold "),4&e&&(t+="underline "),0===t.length&&(t="---"),t}},{key:"_getTokensAtLine",value:function(e){var t=this._getStateBeforeLine(e),n=this._tokenizationSupport.tokenize(this._model.getLineContent(e),!0,t,0),i=this._tokenizationSupport.tokenize2(this._model.getLineContent(e),!0,t,0);return{startState:t,tokens1:n.tokens,tokens2:i.tokens,endState:n.endState}}},{key:"_getStateBeforeLine",value:function(e){for(var t=this._tokenizationSupport.getInitialState(),n=1;n<e;n++){t=this._tokenizationSupport.tokenize(this._model.getLineContent(n),!0,t,0).endState}return t}},{key:"getDomNode",value:function(){return this._domNode}},{key:"getPosition",value:function(){return{position:this._editor.getPosition(),preference:[2,1]}}}]),n}(WB.JT);T4._ID="editor.contrib.inspectTokensWidget",(0,_B._K)(N4.ID,N4),(0,_B.Qr)(M4),(0,$B.Ic)((function(e,t){var n=e.getColor(GB.CN);if(n){var i=e.type===Jz.e.HIGH_CONTRAST?2:1;t.addRule(".monaco-editor .tokens-inspect-widget { border: ".concat(i,"px solid ").concat(n,"; }")),t.addRule(".monaco-editor .tokens-inspect-widget .tokens-inspect-separator { background-color: ".concat(n,"; }"))}var r=e.getColor(GB.yJ);r&&t.addRule(".monaco-editor .tokens-inspect-widget { background-color: ".concat(r,"; }"));var o=e.getColor(GB.Sb);o&&t.addRule(".monaco-editor .tokens-inspect-widget { color: ".concat(o,"; }"))}));var I4=n(73921),O4=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},A4=function(e,t){return function(n,i){t(n,i,e)}},R4=function(){function e(t){(0,X.Z)(this,e),this.quickInputService=t,this.registry=Z0.B.as(I4.IP.Quickaccess)}return(0,J.Z)(e,[{key:"provide",value:function(t){var n=this,i=new WB.SL;i.add(t.onDidAccept((function(){var e=(0,ne.Z)(t.selectedItems,1)[0];e&&n.quickInputService.quickAccess.show(e.prefix,{preserveValue:!0})}))),i.add(t.onDidChangeValue((function(t){var i=n.registry.getQuickAccessProvider(t.substr(e.PREFIX.length));i&&i.prefix&&i.prefix!==e.PREFIX&&n.quickInputService.quickAccess.show(i.prefix,{preserveValue:!0})})));var r=this.getQuickAccessProviders(),o=r.editorProviders,a=r.globalProviders;return t.items=0===o.length||0===a.length?(0,Ct.Z)(0===o.length?a:o):[{label:(0,yB.N)("globalCommands","global commands"),type:"separator"}].concat((0,Ct.Z)(a),[{label:(0,yB.N)("editorCommands","editor commands"),type:"separator"}],(0,Ct.Z)(o)),i}},{key:"getQuickAccessProviders",value:function(){var t,n=[],i=[],r=(0,Na.Z)(this.registry.getQuickAccessProviders().sort((function(e,t){return e.prefix.localeCompare(t.prefix)})));try{for(r.s();!(t=r.n()).done;){var o=t.value;if(o.prefix!==e.PREFIX){var a,s=(0,Na.Z)(o.helpEntries);try{for(s.s();!(a=s.n()).done;){var u=a.value,l=u.prefix||o.prefix,c=l||"\u2026";(u.needsEditor?i:n).push({prefix:l,label:c,ariaLabel:(0,yB.N)("helpPickAriaLabel","{0}, {1}",c,u.description),description:u.description})}}catch(d){s.e(d)}finally{s.f()}}}}catch(d){r.e(d)}finally{r.f()}return{editorProviders:i,globalProviders:n}}}]),e}();R4.PREFIX="?",R4=O4([A4(0,SV.eJ)],R4),Z0.B.as(I4.IP.Quickaccess).registerQuickAccessProvider({ctor:R4,prefix:"",helpEntries:[{description:p4.ld.helpQuickAccessActionLabel,needsEditor:!0}]});var P4=function(){function e(t){(0,X.Z)(this,e),this.options=t,this.rangeHighlightDecorationId=void 0}return(0,J.Z)(e,[{key:"provide",value:function(e,t){var n,i=this,r=new WB.SL;e.canAcceptInBackground=!!(null===(n=this.options)||void 0===n?void 0:n.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;var o=r.add(new WB.XK);return o.value=this.doProvide(e,t),r.add(this.onDidActiveTextEditorControlChange((function(){o.value=void 0,o.value=i.doProvide(e,t)}))),r}},{key:"doProvide",value:function(e,t){var n=this,i=new WB.SL,r=this.activeTextEditorControl;if(r&&this.canProvideWithTextEditor(r)){var o={editor:r},a=(0,xK.Pi)(r);if(a){var s=(0,oV.f6)(r.saveViewState());i.add(a.onDidChangeCursorPosition((function(){s=(0,oV.f6)(r.saveViewState())}))),o.restoreViewState=function(){s&&r===n.activeTextEditorControl&&r.restoreViewState(s)},i.add((0,mV.I)(t.onCancellationRequested)((function(){var e;return null===(e=o.restoreViewState)||void 0===e?void 0:e.call(o)})))}i.add((0,WB.OF)((function(){return n.clearDecorations(r)}))),i.add(this.provideWithTextEditor(o,e,t))}else i.add(this.provideWithoutTextEditor(e,t));return i}},{key:"canProvideWithTextEditor",value:function(e){return!0}},{key:"gotoLocation",value:function(e,t){var n=e.editor;n.setSelection(t.range),n.revealRangeInCenter(t.range,0),t.preserveFocus||n.focus()}},{key:"getModel",value:function(e){var t;return(0,xK.QI)(e)?null===(t=e.getModel())||void 0===t?void 0:t.modified:e.getModel()}},{key:"addDecorations",value:function(e,t){var n=this;e.changeDecorations((function(e){var i=[];n.rangeHighlightDecorationId&&(i.push(n.rangeHighlightDecorationId.overviewRulerDecorationId),i.push(n.rangeHighlightDecorationId.rangeHighlightId),n.rangeHighlightDecorationId=void 0);var r=[{range:t,options:{className:"rangeHighlight",isWholeLine:!0}},{range:t,options:{overviewRuler:{color:(0,$B.EN)(qB.m9),position:UB.sh.Full}}}],o=e.deltaDecorations(i,r),a=(0,ne.Z)(o,2),s=a[0],u=a[1];n.rangeHighlightDecorationId={rangeHighlightId:s,overviewRulerDecorationId:u}}))}},{key:"clearDecorations",value:function(e){var t=this.rangeHighlightDecorationId;t&&(e.changeDecorations((function(e){e.deltaDecorations([t.overviewRulerDecorationId,t.rangeHighlightId],[])})),this.rangeHighlightDecorationId=void 0)}}]),e}(),Z4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{canAcceptInBackground:!0})}return(0,J.Z)(n,[{key:"provideWithoutTextEditor",value:function(e){var t=(0,yB.N)("cannotRunGotoLine","Open a text editor first to go to a line.");return e.items=[{label:t}],e.ariaLabel=t,WB.JT.None}},{key:"provideWithTextEditor",value:function(e,t,i){var r=this,o=e.editor,a=new WB.SL;a.add(t.onDidAccept((function(n){var i=(0,ne.Z)(t.selectedItems,1)[0];if(i){if(!r.isValidLineNumber(o,i.lineNumber))return;r.gotoLocation(e,{range:r.toRange(i.lineNumber,i.column),keyMods:t.keyMods,preserveFocus:n.inBackground}),n.inBackground||t.hide()}})));var s=function(){var e=r.parsePosition(o,t.value.trim().substr(n.PREFIX.length)),i=r.getPickLabel(o,e.lineNumber,e.column);if(t.items=[{lineNumber:e.lineNumber,column:e.column,label:i}],t.ariaLabel=i,r.isValidLineNumber(o,e.lineNumber)){var a=r.toRange(e.lineNumber,e.column);o.revealRangeInCenter(a,0),r.addDecorations(o,a)}else r.clearDecorations(o)};s(),a.add(t.onDidChangeValue((function(){return s()})));var u=(0,xK.Pi)(o);u&&(2===u.getOptions().get(56).renderType&&(u.updateOptions({lineNumbers:"on"}),a.add((0,WB.OF)((function(){return u.updateOptions({lineNumbers:"relative"})})))));return a}},{key:"toRange",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return{startLineNumber:e,startColumn:t,endLineNumber:e,endColumn:t}}},{key:"parsePosition",value:function(e,t){var n=t.split(/,|:|#/).map((function(e){return parseInt(e,10)})).filter((function(e){return!isNaN(e)})),i=this.lineCount(e)+1;return{lineNumber:n[0]>0?n[0]:i+n[0],column:n[1]}}},{key:"getPickLabel",value:function(e,t,n){if(this.isValidLineNumber(e,t))return this.isValidColumn(e,t,n)?(0,yB.N)("gotoLineColumnLabel","Go to line {0} and character {1}.",t,n):(0,yB.N)("gotoLineLabel","Go to line {0}.",t);var i=e.getPosition()||{lineNumber:1,column:1},r=this.lineCount(e);return r>1?(0,yB.N)("gotoLineLabelEmptyWithLimit","Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.",i.lineNumber,i.column,r):(0,yB.N)("gotoLineLabelEmpty","Current Line: {0}, Character: {1}. Type a line number to navigate to.",i.lineNumber,i.column)}},{key:"isValidLineNumber",value:function(e,t){return!(!t||"number"!==typeof t)&&(t>0&&t<=this.lineCount(e))}},{key:"isValidColumn",value:function(e,t,n){if(!n||"number"!==typeof n)return!1;var i=this.getModel(e);if(!i)return!1;var r={lineNumber:t,column:n};return i.validatePosition(r).equals(r)}},{key:"lineCount",value:function(e){var t,n;return null!==(n=null===(t=this.getModel(e))||void 0===t?void 0:t.getLineCount())&&void 0!==n?n:0}}]),n}(P4);Z4.PREFIX=":";var F4=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},j4=function(e,t){return function(n,i){t(n,i,e)}},H4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this)).editorService=e,i.onDidActiveTextEditorControlChange=_W.ju.None,i}return(0,J.Z)(n,[{key:"activeTextEditorControl",get:function(){return(0,oV.f6)(this.editorService.getFocusedCodeEditor())}}]),n}(Z4);H4=F4([j4(0,fz.$)],H4),Z0.B.as(I4.IP.Quickaccess).registerQuickAccessProvider({ctor:H4,prefix:H4.PREFIX,helpEntries:[{description:p4.qq.gotoLineActionLabel,needsEditor:!0}]});var B4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.gotoLine",label:p4.qq.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:2085,mac:{primary:293},weight:100}})}return(0,J.Z)(n,[{key:"run",value:function(e){e.get(SV.eJ).quickAccess.show(H4.PREFIX)}}]),n}(_B.R6);(0,_B.Qr)(B4);var z4=[void 0,[]];function W4(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,r=t;return r.values&&r.values.length>1?function(e,t,n,i){var r,o=0,a=[],s=(0,Na.Z)(t);try{for(s.s();!(r=s.n()).done;){var u=V4(e,r.value,n,i),l=(0,ne.Z)(u,2),c=l[0],d=l[1];if("number"!==typeof c)return z4;o+=c,a.push.apply(a,(0,Ct.Z)(d))}}catch(h){s.e(h)}finally{s.f()}return[o,Y4(a)]}(e,r.values,n,i):V4(e,t,n,i)}function V4(e,t,n,i){var r=(0,NK.EW)(t.original,t.originalLowercase,n,e,e.toLowerCase(),i,!0);return r?[r[0],(0,NK.mB)(r)]:z4}function Y4(e){var t,n=e.sort((function(e,t){return e.start-t.start})),i=[],r=void 0,o=(0,Na.Z)(n);try{for(o.s();!(t=o.n()).done;){var a=t.value;r&&U4(r,a)?(r.start=Math.min(r.start,a.start),r.end=Math.max(r.end,a.end)):(r=a,i.push(a))}}catch(s){o.e(s)}finally{o.f()}return i}function U4(e,t){return!(e.end<t.start)&&!(t.end<e.start)}var K4,q4=" ";function G4(e){"string"!==typeof e&&(e="");var t=e.toLowerCase(),n=$4(e),i=n.pathNormalized,r=n.normalized,o=n.normalizedLowercase,a=i.indexOf(M1.ir)>=0,s=void 0,u=e.split(q4);if(u.length>1){var l,c=(0,Na.Z)(u);try{for(c.s();!(l=c.n()).done;){var d=l.value,h=$4(d),f=h.pathNormalized,p=h.normalized,g=h.normalizedLowercase;p&&(s||(s=[]),s.push({original:d,originalLowercase:d.toLowerCase(),pathNormalized:f,normalized:p,normalizedLowercase:g}))}}catch(v){c.e(v)}finally{c.f()}}return{original:e,originalLowercase:t,pathNormalized:i,normalized:r,normalizedLowercase:o,values:s,containsPathSeparator:a}}function $4(e){var t;t=dz.ED?e.replace(/\//g,M1.ir):e.replace(/\\/g,M1.ir);var n=(0,Dz.R1)(t).replace(/\s/g,"");return{pathNormalized:t,normalized:n,normalizedLowercase:n.toLowerCase()}}function Q4(e){return Array.isArray(e)?G4(e.map((function(e){return e.original})).join(q4)):G4(e.original)}var X4=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},J4=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Object.create(null);return(0,X.Z)(this,n),(e=t.call(this,i)).options=i,e.options.canAcceptInBackground=!0,e}return(0,J.Z)(n,[{key:"provideWithoutTextEditor",value:function(e){return this.provideLabelPick(e,(0,yB.N)("cannotRunGotoSymbolWithoutEditor","To go to a symbol, first open a text editor with symbol information.")),WB.JT.None}},{key:"provideWithTextEditor",value:function(e,t,n){var i=e.editor,r=this.getModel(i);return r?Iz.vJ.has(r)?this.doProvideWithEditorSymbols(e,r,t,n):this.doProvideWithoutEditorSymbols(e,r,t,n):WB.JT.None}},{key:"doProvideWithoutEditorSymbols",value:function(e,t,n,i){var r=this,o=new WB.SL;return this.provideLabelPick(n,(0,yB.N)("cannotRunGotoSymbolWithoutSymbolProvider","The active text editor does not provide symbol information.")),X4(r,void 0,void 0,fn().mark((function r(){return fn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.waitForLanguageSymbolRegistry(t,o);case 2:if(r.sent&&!i.isCancellationRequested){r.next=5;break}return r.abrupt("return");case 5:o.add(this.doProvideWithEditorSymbols(e,t,n,i));case 6:case"end":return r.stop()}}),r,this)}))),o}},{key:"provideLabelPick",value:function(e,t){e.items=[{label:t,index:0,kind:14}],e.ariaLabel=t}},{key:"waitForLanguageSymbolRegistry",value:function(e,t){return X4(this,void 0,void 0,fn().mark((function n(){var i,r,o;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!Iz.vJ.has(e)){n.next=2;break}return n.abrupt("return",!0);case 2:return r=new Promise((function(e){return i=e})),o=t.add(Iz.vJ.onDidChange((function(){Iz.vJ.has(e)&&(o.dispose(),i(!0))}))),t.add((0,WB.OF)((function(){return i(!1)}))),n.abrupt("return",r);case 6:case"end":return n.stop()}}),n)})))}},{key:"doProvideWithEditorSymbols",value:function(e,t,i,r){var o=this,a=e.editor,s=new WB.SL;s.add(i.onDidAccept((function(t){var n=(0,ne.Z)(i.selectedItems,1)[0];n&&n.range&&(o.gotoLocation(e,{range:n.range.selection,keyMods:i.keyMods,preserveFocus:t.inBackground}),t.inBackground||i.hide())}))),s.add(i.onDidTriggerItemButton((function(t){var n=t.item;n&&n.range&&(o.gotoLocation(e,{range:n.range.selection,keyMods:i.keyMods,forceSideBySide:!0}),i.hide())})));var u=this.getDocumentSymbols(t,r),l=void 0,c=function(){return X4(o,void 0,void 0,fn().mark((function e(){var t,o;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return null===l||void 0===l||l.dispose(!0),i.busy=!1,l=new Lz.A(r),i.busy=!0,e.prev=4,t=G4(i.value.substr(n.PREFIX.length).trim()),e.next=8,this.doGetSymbolPicks(u,t,void 0,l.token);case 8:if(o=e.sent,!r.isCancellationRequested){e.next=11;break}return e.abrupt("return");case 11:o.length>0?i.items=o:t.original.length>0?this.provideLabelPick(i,(0,yB.N)("noMatchingSymbolResults","No matching editor symbols")):this.provideLabelPick(i,(0,yB.N)("noSymbolResults","No editor symbols"));case 12:return e.prev=12,r.isCancellationRequested||(i.busy=!1),e.finish(12);case 15:case"end":return e.stop()}}),e,this,[[4,,12,15]])})))};s.add(i.onDidChangeValue((function(){return c()}))),c();var d=!0;return s.add(i.onDidChangeActive((function(){var e=(0,ne.Z)(i.activeItems,1)[0];if(e&&e.range){if(d)return void(d=!1);a.revealRangeInCenter(e.range.selection,0),o.addDecorations(a,e.range.decoration)}}))),s}},{key:"doGetSymbolPicks",value:function(e,t,i,r){return X4(this,void 0,void 0,fn().mark((function o(){var a,s,u,l,c,d,h,f,p,g,v,m,_,y,b,w,C,k,S,x,L,E,D,N,M,T,I,O,A,R,P,Z,F,j=this;return fn().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,e;case 2:if(a=o.sent,!r.isCancellationRequested){o.next=5;break}return o.abrupt("return",[]);case 5:s=0===t.original.indexOf(n.SCOPE_PREFIX),u=s?1:0,t.values&&t.values.length>1?(l=Q4(t.values[0]),c=Q4(t.values.slice(1))):l=t,d=[],h=0;case 10:if(!(h<a.length)){o.next=41;break}if(f=a[h],p=(0,Dz.fy)(f.name),g="$(symbol-".concat(Iz.uZ.toString(f.kind)||"property",") ").concat(p),v=g.length-p.length,m=f.containerName,(null===i||void 0===i?void 0:i.extraContainerLabel)&&(m=m?"".concat(i.extraContainerLabel," \u2022 ").concat(m):i.extraContainerLabel),_=void 0,y=void 0,b=void 0,w=void 0,!(t.original.length>u)){o.next=36;break}if(C=!1,l!==t&&(k=W4(g,Object.assign(Object.assign({},t),{values:void 0}),u,v),S=(0,ne.Z)(k,2),_=S[0],y=S[1],"number"===typeof _&&(C=!0)),"number"===typeof _){o.next=31;break}if(x=W4(g,l,u,v),L=(0,ne.Z)(x,2),_=L[0],y=L[1],"number"===typeof _){o.next=31;break}return o.abrupt("continue",38);case 31:if(C||!c){o.next=36;break}if(m&&c.original.length>0&&(E=W4(m,c),D=(0,ne.Z)(E,2),b=D[0],w=D[1]),"number"===typeof b){o.next=35;break}return o.abrupt("continue",38);case 35:"number"===typeof _&&(_+=b);case 36:N=f.tags&&f.tags.indexOf(1)>=0,d.push({index:h,kind:f.kind,score:_,label:g,ariaLabel:p,description:m,highlights:N?void 0:{label:y,description:w},range:{selection:YB.e.collapseToStart(f.selectionRange),decoration:f.range},strikethrough:N,buttons:function(){var e,t,n=(null===(e=j.options)||void 0===e?void 0:e.openSideBySideDirection)?null===(t=j.options)||void 0===t?void 0:t.openSideBySideDirection():void 0;if(n)return[{iconClass:"right"===n?bW.lA.splitHorizontal.classNames:bW.lA.splitVertical.classNames,tooltip:"right"===n?(0,yB.N)("openToSide","Open to the Side"):(0,yB.N)("openToBottom","Open to the Bottom")}]}()});case 38:h++,o.next=10;break;case 41:if(M=d.sort((function(e,t){return s?j.compareByKindAndScore(e,t):j.compareByScore(e,t)})),T=[],s){I=function(){A&&"number"===typeof O&&R>0&&(A.label=(0,Dz.WU)(t6[O]||e6,R))},O=void 0,A=void 0,R=0,P=(0,Na.Z)(M);try{for(P.s();!(Z=P.n()).done;)F=Z.value,O!==F.kind?(I(),O=F.kind,R=1,A={type:"separator"},T.push(A)):R++,T.push(F)}catch(H){P.e(H)}finally{P.f()}I()}else M.length>0&&(T=[{label:(0,yB.N)("symbols","symbols ({0})",d.length),type:"separator"}].concat((0,Ct.Z)(M)));return o.abrupt("return",T);case 45:case"end":return o.stop()}}),o)})))}},{key:"compareByScore",value:function(e,t){if("number"!==typeof e.score&&"number"===typeof t.score)return 1;if("number"===typeof e.score&&"number"!==typeof t.score)return-1;if("number"===typeof e.score&&"number"===typeof t.score){if(e.score>t.score)return-1;if(e.score<t.score)return 1}return e.index<t.index?-1:e.index>t.index?1:0}},{key:"compareByKindAndScore",value:function(e,t){var n=t6[e.kind]||e6,i=t6[t.kind]||e6,r=n.localeCompare(i);return 0===r?this.compareByScore(e,t):r}},{key:"getDocumentSymbols",value:function(e,t){return X4(this,void 0,void 0,fn().mark((function n(){var i;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,gX.create(e,t);case 2:return i=n.sent,n.abrupt("return",t.isCancellationRequested?[]:i.asListOfDocumentSymbols());case 4:case"end":return n.stop()}}),n)})))}}]),n}(P4);J4.PREFIX="@",J4.SCOPE_PREFIX=":",J4.PREFIX_BY_CATEGORY="".concat(J4.PREFIX).concat(J4.SCOPE_PREFIX);var e6=(0,yB.N)("property","properties ({0})"),t6=(K4={},(0,wt.Z)(K4,5,(0,yB.N)("method","methods ({0})")),(0,wt.Z)(K4,11,(0,yB.N)("function","functions ({0})")),(0,wt.Z)(K4,8,(0,yB.N)("_constructor","constructors ({0})")),(0,wt.Z)(K4,12,(0,yB.N)("variable","variables ({0})")),(0,wt.Z)(K4,4,(0,yB.N)("class","classes ({0})")),(0,wt.Z)(K4,22,(0,yB.N)("struct","structs ({0})")),(0,wt.Z)(K4,23,(0,yB.N)("event","events ({0})")),(0,wt.Z)(K4,24,(0,yB.N)("operator","operators ({0})")),(0,wt.Z)(K4,10,(0,yB.N)("interface","interfaces ({0})")),(0,wt.Z)(K4,2,(0,yB.N)("namespace","namespaces ({0})")),(0,wt.Z)(K4,3,(0,yB.N)("package","packages ({0})")),(0,wt.Z)(K4,25,(0,yB.N)("typeParameter","type parameters ({0})")),(0,wt.Z)(K4,1,(0,yB.N)("modules","modules ({0})")),(0,wt.Z)(K4,6,(0,yB.N)("property","properties ({0})")),(0,wt.Z)(K4,9,(0,yB.N)("enum","enumerations ({0})")),(0,wt.Z)(K4,21,(0,yB.N)("enumMember","enumeration members ({0})")),(0,wt.Z)(K4,14,(0,yB.N)("string","strings ({0})")),(0,wt.Z)(K4,0,(0,yB.N)("file","files ({0})")),(0,wt.Z)(K4,17,(0,yB.N)("array","arrays ({0})")),(0,wt.Z)(K4,15,(0,yB.N)("number","numbers ({0})")),(0,wt.Z)(K4,16,(0,yB.N)("boolean","booleans ({0})")),(0,wt.Z)(K4,18,(0,yB.N)("object","objects ({0})")),(0,wt.Z)(K4,19,(0,yB.N)("key","keys ({0})")),(0,wt.Z)(K4,7,(0,yB.N)("field","fields ({0})")),(0,wt.Z)(K4,13,(0,yB.N)("constant","constants ({0})")),K4),n6=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},i6=function(e,t){return function(n,i){t(n,i,e)}},r6=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e){var i;return(0,X.Z)(this,n),(i=t.call(this)).editorService=e,i.onDidActiveTextEditorControlChange=_W.ju.None,i}return(0,J.Z)(n,[{key:"activeTextEditorControl",get:function(){return(0,oV.f6)(this.editorService.getFocusedCodeEditor())}}]),n}(J4);r6=n6([i6(0,fz.$)],r6),Z0.B.as(I4.IP.Quickaccess).registerQuickAccessProvider({ctor:r6,prefix:J4.PREFIX,helpEntries:[{description:p4.aq.quickOutlineActionLabel,prefix:J4.PREFIX,needsEditor:!0},{description:p4.aq.quickOutlineByCategoryActionLabel,prefix:J4.PREFIX_BY_CATEGORY,needsEditor:!0}]});var o6=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.quickOutline",label:p4.aq.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:bB.u.hasDocumentSymbolProvider,kbOpts:{kbExpr:bB.u.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}return(0,J.Z)(n,[{key:"run",value:function(e){e.get(SV.eJ).quickAccess.show(J4.PREFIX)}}]),n}(_B.R6);(0,_B.Qr)(o6);var a6,s6=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))};function u6(e){var t=e;return Array.isArray(t.items)}function l6(e){var t=e;return!!t.picks&&t.additionalPicks instanceof Promise}!function(e){e[e.NO_ACTION=0]="NO_ACTION",e[e.CLOSE_PICKER=1]="CLOSE_PICKER",e[e.REFRESH_PICKER=2]="REFRESH_PICKER",e[e.REMOVE_ITEM=3]="REMOVE_ITEM"}(a6||(a6={}));var c6=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this)).prefix=e,r.options=i,r}return(0,J.Z)(n,[{key:"provide",value:function(e,t){var i,r=this,o=new WB.SL;e.canAcceptInBackground=!!(null===(i=this.options)||void 0===i?void 0:i.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;var a=void 0,s=o.add(new WB.XK),u=function(){return s6(r,void 0,void 0,fn().mark((function i(){var r,o,u,l,c,d,h,f,p=this;return fn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(r=s.value=new WB.SL,null===a||void 0===a||a.dispose(!0),e.busy=!1,a=new Lz.A(t),o=a.token,u=e.value.substr(this.prefix.length).trim(),l=this.getPicks(u,r,o),c=function(t,n){var i,r,o=void 0;if(u6(t)?(r=t.items,o=t.active):r=t,0===r.length){if(n)return!1;u.length>0&&(null===(i=p.options)||void 0===i?void 0:i.noResultsPick)&&(r=[p.options.noResultsPick])}return e.items=r,o&&(e.activeItems=[o]),!0},null!==l){i.next=11;break}i.next=33;break;case 11:if(!l6(l)){i.next=18;break}return d=!1,h=!1,i.next=16,Promise.all([s6(p,void 0,void 0,fn().mark((function e(){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,zB.Vs)(n.FAST_PICKS_RACE_DELAY);case 2:if(!o.isCancellationRequested){e.next=4;break}return e.abrupt("return");case 4:h||(d=c(l.picks,!0));case 5:case"end":return e.stop()}}),e)}))),s6(p,void 0,void 0,fn().mark((function t(){var n,i,r,a,s,u,f;return fn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.busy=!0,t.prev=1,t.next=4,l.additionalPicks;case 4:if(n=t.sent,!o.isCancellationRequested){t.next=7;break}return t.abrupt("return");case 7:r=void 0,u6(l.picks)?(i=l.picks.items,r=l.picks.active):i=l.picks,s=void 0,u6(n)?(a=n.items,s=n.active):a=n,(a.length>0||!d)&&(u=void 0,r||s||(f=e.activeItems[0])&&-1!==i.indexOf(f)&&(u=f),c({items:[].concat((0,Ct.Z)(i),(0,Ct.Z)(a)),active:r||s||u}));case 12:return t.prev=12,o.isCancellationRequested||(e.busy=!1),h=!0,t.finish(12);case 16:case"end":return t.stop()}}),t,null,[[1,,12,16]])})))]);case 16:i.next=33;break;case 18:if(l instanceof Promise){i.next=22;break}c(l),i.next=33;break;case 22:return e.busy=!0,i.prev=23,i.next=26,l;case 26:if(f=i.sent,!o.isCancellationRequested){i.next=29;break}return i.abrupt("return");case 29:c(f);case 30:return i.prev=30,o.isCancellationRequested||(e.busy=!1),i.finish(30);case 33:case"end":return i.stop()}}),i,this,[[23,,30,33]])})))};return o.add(e.onDidChangeValue((function(){return u()}))),u(),o.add(e.onDidAccept((function(t){var n=(0,ne.Z)(e.selectedItems,1)[0];"function"===typeof(null===n||void 0===n?void 0:n.accept)&&(t.inBackground||e.hide(),n.accept(e.keyMods,t))}))),o.add(e.onDidTriggerItemButton((function(n){var i=n.button,o=n.item;return s6(r,void 0,void 0,fn().mark((function n(){var r,a,s,l,c,d,h;return fn().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if("function"!==typeof o.trigger){n.next=25;break}if(!((s=null!==(a=null===(r=o.buttons)||void 0===r?void 0:r.indexOf(i))&&void 0!==a?a:-1)>=0)){n.next=25;break}if("number"!==typeof(l=o.trigger(s,e.keyMods))){n.next=8;break}n.t0=l,n.next=11;break;case 8:return n.next=10,l;case 10:n.t0=n.sent;case 11:if(c=n.t0,!t.isCancellationRequested){n.next=14;break}return n.abrupt("return");case 14:n.t1=c,n.next=n.t1===a6.NO_ACTION?17:n.t1===a6.CLOSE_PICKER?18:n.t1===a6.REFRESH_PICKER?20:n.t1===a6.REMOVE_ITEM?22:25;break;case 17:return n.abrupt("break",25);case 18:return e.hide(),n.abrupt("break",25);case 20:return u(),n.abrupt("break",25);case 22:return-1!==(d=e.items.indexOf(o))&&((h=e.items.slice()).splice(d,1),e.items=h),n.abrupt("break",25);case 25:case"end":return n.stop()}}),n)})))}))),o}}]),n}(WB.JT);function d6(e,t){return t&&(e.stack||e.stacktrace)?yB.N("stackTrace.format","{0}: {1}",f6(e),h6(e.stack)||h6(e.stacktrace)):f6(e)}function h6(e){return Array.isArray(e)?e.join("\n"):e}function f6(e){return"string"===typeof e.code&&"number"===typeof e.errno&&"string"===typeof e.syscall?yB.N("nodeExceptionMessage","A system error occurred ({0})",e.message):e.message||yB.N("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}function p6(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return yB.N("error.defaultMessage","An unknown error occurred. Please consult the log for more details.");if(Array.isArray(e)){var n=SB.kX(e),i=p6(n[0],t);return n.length>1?yB.N("error.moreErrors","{0} ({1} errors in total)",i,n.length):i}if(oV.HD(e))return e;if(e.detail){var r=e.detail;if(r.error)return d6(r.error,t);if(r.exception)return d6(r.exception,t)}return e.stack?d6(e,t):e.message?e.message:yB.N("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}c6.FAST_PICKS_RACE_DELAY=200;var g6=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},v6=function(e,t){return function(n,i){t(n,i,e)}},m6=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},_6=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o,a,s){var u;return(0,X.Z)(this,n),(u=t.call(this,n.PREFIX,e)).instantiationService=i,u.keybindingService=r,u.commandService=o,u.telemetryService=a,u.notificationService=s,u.commandsHistory=u._register(u.instantiationService.createInstance(y6)),u.options=e,u}return(0,J.Z)(n,[{key:"getPicks",value:function(e,t,i){return m6(this,void 0,void 0,fn().mark((function r(){var o,a,s,u,l,c,d,h,f,p,g,v,m,_,y,b,w=this;return fn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.getCommandPicks(t,i);case 2:if(o=r.sent,!i.isCancellationRequested){r.next=5;break}return r.abrupt("return",[]);case 5:a=[],s=(0,Na.Z)(o);try{for(s.s();!(u=s.n()).done;)l=u.value,c=(0,oV.f6)(n.WORD_FILTER(e,l.label)),d=l.commandAlias?(0,oV.f6)(n.WORD_FILTER(e,l.commandAlias)):void 0,c||d?(l.highlights={label:c,detail:this.options.showAlias?d:void 0},a.push(l)):e===l.commandId&&a.push(l)}catch(C){s.e(C)}finally{s.f()}for(h=new Map,f=0,p=a;f<p.length;f++)g=p[f],(v=h.get(g.label))?(g.description=g.commandId,v.description=v.commandId):h.set(g.label,g);a.sort((function(e,t){var n=w.commandsHistory.peek(e.commandId),i=w.commandsHistory.peek(t.commandId);return n&&i?n>i?-1:1:n?-1:i?1:e.label.localeCompare(t.label)})),m=[],_=!1,y=fn().mark((function e(){var t,n,i;return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=a[b],n=w.keybindingService.lookupKeybinding(t.commandId),i=n?(0,yB.N)("commandPickAriaLabelWithKeybinding","{0}, {1}",t.label,n.getAriaLabel()):t.label,0===b&&w.commandsHistory.peek(t.commandId)&&(m.push({type:"separator",label:(0,yB.N)("recentlyUsed","recently used")}),_=!0),0!==b&&_&&!w.commandsHistory.peek(t.commandId)&&(m.push({type:"separator",label:(0,yB.N)("morecCommands","other commands")}),_=!1),m.push(Object.assign(Object.assign({},t),{ariaLabel:i,detail:w.options.showAlias&&t.commandAlias!==t.label?t.commandAlias:void 0,keybinding:n,accept:function(){return m6(w,void 0,void 0,fn().mark((function e(){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.commandsHistory.push(t.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:t.commandId,from:"quick open"}),e.prev=2,e.next=5,this.commandService.executeCommand(t.commandId);case 5:e.next=10;break;case 7:e.prev=7,e.t0=e.catch(2),(0,LB.VV)(e.t0)||this.notificationService.error((0,yB.N)("canNotRun","Command '{0}' resulted in an error ({1})",t.label,p6(e.t0)));case 10:case"end":return e.stop()}}),e,this,[[2,7]])})))}}));case 6:case"end":return e.stop()}}),e)})),b=0;case 15:if(!(b<a.length)){r.next=20;break}return r.delegateYield(y(),"t0",17);case 17:b++,r.next=15;break;case 20:return r.abrupt("return",m);case 21:case"end":return r.stop()}}),r,this)})))}}]),n}(c6);_6.PREFIX=">",_6.WORD_FILTER=(0,NK.or)(NK.Ji,NK.KZ,NK.ir),_6=g6([v6(1,oW.TG),v6(2,lW.d),v6(3,jz.H),v6(4,RW.b),v6(5,AW.lT)],_6);var y6=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i){var r;return(0,X.Z)(this,n),(r=t.call(this)).storageService=e,r.configurationService=i,r.configuredCommandsHistoryLength=0,r.updateConfiguration(),r.load(),r.registerListeners(),r}return(0,J.Z)(n,[{key:"registerListeners",value:function(){var e=this;this._register(this.configurationService.onDidChangeConfiguration((function(){return e.updateConfiguration()})))}},{key:"updateConfiguration",value:function(){this.configuredCommandsHistoryLength=n.getConfiguredCommandHistoryLength(this.configurationService),n.cache&&n.cache.limit!==this.configuredCommandsHistoryLength&&(n.cache.limit=this.configuredCommandsHistoryLength,n.saveState(this.storageService))}},{key:"load",value:function(){var e,t=this.storageService.get(n.PREF_KEY_CACHE,0);if(t)try{e=JSON.parse(t)}catch(o){}var i,r=n.cache=new gV.z6(this.configuredCommandsHistoryLength,1);e&&(i=e.usesLRU?e.entries:e.entries.sort((function(e,t){return e.value-t.value})),i.forEach((function(e){return r.set(e.key,e.value)})));n.counter=this.storageService.getNumber(n.PREF_KEY_COUNTER,0,n.counter)}},{key:"push",value:function(e){n.cache&&(n.cache.set(e,n.counter++),n.saveState(this.storageService))}},{key:"peek",value:function(e){var t;return null===(t=n.cache)||void 0===t?void 0:t.peek(e)}}],[{key:"saveState",value:function(e){if(n.cache){var t={usesLRU:!0,entries:[]};n.cache.forEach((function(e,n){return t.entries.push({key:n,value:e})})),e.store(n.PREF_KEY_CACHE,JSON.stringify(t),0,0),e.store(n.PREF_KEY_COUNTER,n.counter,0,0)}}},{key:"getConfiguredCommandHistoryLength",value:function(e){var t,i,r=null===(i=null===(t=e.getValue().workbench)||void 0===t?void 0:t.commandPalette)||void 0===i?void 0:i.history;return"number"===typeof r?r:n.DEFAULT_COMMANDS_HISTORY_LENGTH}}]),n}(WB.JT);y6.DEFAULT_COMMANDS_HISTORY_LENGTH=50,y6.PREF_KEY_CACHE="commandPalette.mru.cache",y6.PREF_KEY_COUNTER="commandPalette.mru.counter",y6.counter=1,y6=g6([v6(0,vV.Uy),v6(1,IV.Ui)],y6);var b6=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},w6=function(e,t){return function(n,i){t(n,i,e)}},C6=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{u(i.next(e))}catch(t){o(t)}}function s(e){try{u(i.throw(e))}catch(t){o(t)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((i=i.apply(e,t||[])).next())}))},k6=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o,a,s){var u;return(0,X.Z)(this,n),(u=t.call(this,{showAlias:!1},e,r,o,a,s)).codeEditorService=i,u}return(0,J.Z)(n,[{key:"activeTextEditorControl",get:function(){return(0,oV.f6)(this.codeEditorService.getFocusedCodeEditor())}},{key:"getCommandPicks",value:function(){return C6(this,void 0,void 0,fn().mark((function e(){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.getCodeEditorCommandPicks());case 1:case"end":return e.stop()}}),e,this)})))}}]),n}(function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o,a,s){return(0,X.Z)(this,n),t.call(this,e,i,r,o,a,s)}return(0,J.Z)(n,[{key:"getCodeEditorCommandPicks",value:function(){var e=this.activeTextEditorControl;if(!e)return[];var t,n=[],i=(0,Na.Z)(e.getSupportedActions());try{for(i.s();!(t=i.n()).done;){var r=t.value;n.push({commandId:r.id,commandAlias:r.alias,label:(0,xB.x$)(r.label)||r.id})}}catch(o){i.e(o)}finally{i.f()}return n}}]),n}(_6));k6=b6([w6(0,oW.TG),w6(1,fz.$),w6(2,lW.d),w6(3,jz.H),w6(4,RW.b),w6(5,AW.lT)],k6),Z0.B.as(I4.IP.Quickaccess).registerQuickAccessProvider({ctor:k6,prefix:k6.PREFIX,helpEntries:[{description:p4.UX.quickCommandHelp,needsEditor:!0}]});var S6=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.call(this,{id:"editor.action.quickCommand",label:p4.UX.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:bB.u.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}return(0,J.Z)(n,[{key:"run",value:function(e){e.get(SV.eJ).quickAccess.show(k6.PREFIX)}}]),n}(_B.R6);(0,_B.Qr)(S6);var x6=function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},L6=function(e,t){return function(n,i){t(n,i,e)}},E6=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(e,i,r,o,a,s,u){return(0,X.Z)(this,n),t.call(this,!0,e,i,r,o,a,s,u)}return(0,J.Z)(n)}(iq);E6=x6([L6(1,kB.i6),L6(2,fz.$),L6(3,AW.lT),L6(4,oW.TG),L6(5,vV.Uy),L6(6,IV.Ui)],E6),(0,_B._K)(iq.ID,E6);var D6=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;return(0,X.Z)(this,n),(e=t.call(this,{id:"editor.action.toggleHighContrast",label:p4.xi.toggleHighContrast,alias:"Toggle High Contrast Theme",precondition:void 0}))._originalThemeName=null,e}return(0,J.Z)(n,[{key:"run",value:function(e,t){var n=e.get(L4.Z);this._originalThemeName?(n.setTheme(this._originalThemeName),this._originalThemeName=null):(this._originalThemeName=n.getColorTheme().themeName,n.setTheme("hc-black"))}}]),n}(_B.R6);(0,_B.Qr)(D6);var N6="s-expression";var M6=function(e){var t=e.name.split("|");return t.length>1?t[1]:e.name},T6=(0,ht.Z)("ydb-query-explain-result"),I6={automaticLayout:!0,selectOnLineNumbers:!0,readOnly:!0,minimap:{enabled:!1},wrappingIndent:"indent"},O6={schema:"schema",json:"json",ast:"ast"},A6=[{value:O6.schema,content:"Schema"},{value:O6.json,content:"JSON"},{value:O6.ast,content:"AST"}];function R6(t){var n=(0,e.useRef)(),i=t.data,r=t.opts,o=t.shapes,a=t.theme,s=(0,e.useState)(a),u=(0,ne.Z)(s,2),l=u[0],c=u[1];(0,e.useEffect)((function(){c(a)}),[a]);var d=function(){n.current=Fj("graphRoot",i,r,o),n.current.render()};return(0,e.useEffect)((function(){return d(),function(){n.current=void 0}}),[]),(0,e.useEffect)((function(){var e=document.getElementById("graphRoot");if(!e)throw new Error("Can't find element with id #graphRoot");e.innerHTML="",d()}),[l]),(0,e.useEffect)((function(){var e,i;null===(e=n.current)||void 0===e||null===(i=e.updateData)||void 0===i||i.call(e,t.data)}),[t.data]),(0,Nl.jsx)("div",{id:"graphRoot",style:{height:"100vh"}})}function P6(t){var n=K(),i=(0,e.useState)(O6.schema),r=(0,ne.Z)(i,2),o=r[0],a=r[1],s=Q((function(e){return e.fullscreen}));(0,e.useEffect)((function(){return function(){n(eg())}}),[]);var u=function(){var e,n;switch(o){case O6.schema:return Boolean(null===(e=t.explain)||void 0===e||null===(n=e.nodes)||void 0===n?void 0:n.length);case O6.json:return Boolean(t.explain);case O6.ast:return Boolean(t.ast);default:return!1}};return(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsx)("div",{className:T6("controls"),children:!t.loading&&(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsxs)("div",{className:T6("controls-right"),children:[(0,Nl.jsx)(cF,{error:t.error}),!t.error&&(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsx)(aF,{}),(0,Nl.jsx)(Dy,{options:A6,value:o,onUpdate:function(e){a(e)}})]})]}),(0,Nl.jsxs)("div",{className:T6("controls-left"),children:[(0,Nl.jsx)(tF,{disabled:Boolean(t.error)||!u()}),(0,Nl.jsx)(oZ,{onCollapse:t.onCollapseResults,onExpand:t.onExpandResults,isCollapsed:t.isResultsCollapsed,initialDirection:"bottom"})]})]})}),(0,Nl.jsx)("div",{className:T6("result"),children:function(){var n=t.error,i=t.loading,r=t.loadingAst;if(i||r)return(0,Nl.jsx)("div",{className:T6("loader"),children:(0,Nl.jsx)(KE,{size:"m"})});if(n)return function(){var e,n,i=t.error;return e=i.data?"string"===typeof i.data?i.data:null===(n=i.data.error)||void 0===n?void 0:n.message:i,(0,Nl.jsx)("div",{className:T6("text-message"),children:e})}();if(!u())return(0,Nl.jsx)("div",{className:T6("text-message"),children:"There is no ".concat(o," for the request")});switch(o){case O6.json:return function(){var n,i=(0,Nl.jsx)(Dl(),{data:null===(n=t.explain)||void 0===n?void 0:n.pristine,isExpanded:function(){return!0},className:T6("inspector"),searchOptions:{debounceTime:300}});return(0,Nl.jsxs)(e.Fragment,{children:[i,s&&(0,Nl.jsx)(WZ,{children:i})]})}();case O6.ast:return function(){var n=(0,Nl.jsx)("div",{className:T6("ast"),children:(0,Nl.jsx)(HZ.ZP,{language:N6,value:t.ast,options:I6,wrappingIndent:"indent"})});return(0,Nl.jsxs)(e.Fragment,{children:[n,s&&(0,Nl.jsx)(WZ,{children:n})]})}();case O6.schema:return function(){var n=t.explain,i=void 0===n?{}:n,r=t.theme,a=i.links,u=i.nodes,l=i.version===ff.v2,c=a&&u&&u.length,d=l&&c?(0,Nl.jsx)("div",{className:T6("explain-canvas-container",{hidden:o!==O6.schema}),children:(0,Nl.jsx)(R6,{theme:r,data:{links:a,nodes:u},opts:{renderNodeTitle:M6,textOverflow:HF.Normal,initialZoomFitsCanvas:!0},shapes:{node:NH}})}):null;return(0,Nl.jsxs)(e.Fragment,{children:[!s&&d,s&&(0,Nl.jsx)(WZ,{children:d})]})}();default:return null}}()})]})}var Z6=(0,ht.Z)("kv-save-query");var F6,j6=function(t){var n=t.savedQueries,i=t.onSaveQuery,r=t.saveButtonDisabled,o=Q((function(e){return e.singleClusterMode})),a=(0,e.useState)(!1),s=(0,ne.Z)(a,2),u=s[0],l=s[1],c=(0,e.useState)(""),d=(0,ne.Z)(c,2),h=d[0],f=d[1],p=(0,e.useState)(null),g=(0,ne.Z)(p,2),v=g[0],m=g[1],_=Q((function(e){return e.saveQuery})),y=K(),b=function(){l(!0),y(Gp(null))},w=function(){l(!1),f(""),m(null)},C=function(e){f(e),m(k(e))},k=function(e){return on().some(n,(function(t){return t.name.toLowerCase()===e.trim().toLowerCase()}))?"This name already exists":null},S=function(){h&&!v&&(i(h),w())},x=function(){i(_),y(Gp(null))},L=function(e){return(0,Nl.jsx)(_o.z,{onClick:e,disabled:r,children:_?"Edit query":"Save query"})};return(0,Nl.jsxs)(e.Fragment,{children:[_?function(){var e=[{action:x,text:"Edit existing"},{action:b,text:"Save as new"}];return(0,Nl.jsx)(pO,{items:e,switcher:L(),popupPlacement:["top"]})}():L(b),u&&(0,Nl.jsxs)(NZ,{open:u,hasCloseButton:!1,size:"s",onClose:w,onEnterKeyDown:S,children:[(0,Nl.jsx)(NZ.Header,{caption:"Save query"}),(0,Nl.jsxs)(NZ.Body,{className:Z6("dialog-body"),children:[o&&(0,Nl.jsx)("div",{className:Z6("dialog-row"),children:"The query will be saved in your browser"}),(0,Nl.jsxs)("div",{className:Z6("dialog-row"),children:[(0,Nl.jsx)("label",{htmlFor:"queryName",className:Z6("field-title","required"),children:"Query name"}),(0,Nl.jsxs)("div",{className:Z6("control-wrapper"),children:[(0,Nl.jsx)(db,{id:"queryName",placeholder:"Enter query name",value:h,onUpdate:C,hasClear:!0,autoFocus:!0}),(0,Nl.jsx)("span",{className:Z6("error"),children:v})]})]})]}),(0,Nl.jsx)(NZ.Footer,{textButtonApply:"Save",textButtonCancel:"Cancel",onClickButtonCancel:w,onClickButtonApply:S,propsButtonApply:{disabled:!h||Boolean(v)}})]})]})},H6=(0,ht.Z)("ydb-query-editor-controls"),B6=(F6={},(0,wt.Z)(F6,Ji.script,{title:er[Ji.script],description:fZ("method-description.script")}),(0,wt.Z)(F6,Ji.scan,{title:er[Ji.scan],description:fZ("method-description.scan")}),(0,wt.Z)(F6,Ji.data,{title:er[Ji.data],description:fZ("method-description.data")}),(0,wt.Z)(F6,Ji.query,{title:er[Ji.query],description:fZ("method-description.query")}),(0,wt.Z)(F6,Ji.pg,{title:er[Ji.pg],description:fZ("method-description.pg")}),F6),z6=function(t){var n=t.onRunButtonClick,i=t.runIsLoading,r=t.onExplainButtonClick,o=t.explainIsLoading,a=t.onSaveQueryClick,s=t.savedQueries,u=t.disabled,l=t.onUpdateQueryMode,c=t.queryMode,d=t.highlitedAction,h=(0,e.useMemo)((function(){return Object.entries(B6).map((function(e){var t=(0,ne.Z)(e,2),n=t[0],i=t[1],r=i.title,o=i.description;return{text:(0,Nl.jsx)(TF,{className:H6("item-with-popover"),contentClassName:H6("popover"),text:r,popoverContent:o}),action:function(){l(n)}}}))}),[l]),f="execute"===d?"action":void 0,p="explain"===d?"action":void 0;return(0,Nl.jsxs)("div",{className:H6(),children:[(0,Nl.jsxs)("div",{className:H6("left"),children:[(0,Nl.jsxs)(_o.z,{onClick:function(){n(c)},disabled:u,loading:i,view:f,children:[(0,Nl.jsx)(Ob,{name:"startPlay",viewBox:"0 0 16 16",width:16,height:16}),"Run"]}),(0,Nl.jsx)(_o.z,{onClick:function(){r(c)},disabled:u,loading:o,view:p,children:"Explain"}),(0,Nl.jsx)("div",{className:H6("mode-selector"),children:(0,Nl.jsx)(pO,{items:h,popupProps:{className:H6("mode-selector__popup"),qa:"query-mode-selector-popup"},switcher:(0,Nl.jsx)(_o.z,{className:H6("mode-selector__button"),qa:"query-mode-selector",children:(0,Nl.jsxs)("span",{className:H6("mode-selector__button-content"),children:["".concat(fZ("controls.query-mode-selector_type")," ").concat(B6[c].title),(0,Nl.jsx)(Ob,{name:"chevron-down",width:16,height:16})]})})})})]}),(0,Nl.jsx)(j6,{savedQueries:s,onSaveQuery:a,saveButtonDisabled:u})]})},W6={automaticLayout:!0,selectOnLineNumbers:!0,minimap:{enabled:!1}},V6="navigation",Y6={EXECUTE:"execute",EXPLAIN:"explain"},U6=(0,ht.Z)("query-editor"),K6={triggerExpand:!1,triggerCollapse:!1,collapsed:!0};var q6={sendExecuteQuery:function(e){var t=e.query,n=e.database,i=e.mode,r=e.schema,o=void 0===r?"modern":r,a="execute",s=tr.yql;return"pg"===i?(a="execute-query",s=tr.pg):i&&(a="execute-".concat(i)),oa({request:window.api.sendQuery({schema:o,query:t,database:n,action:a,syntax:s,stats:"profile"}),actions:Uh,dataHandler:rr})},saveQueryToHistory:function(e,t){return{type:qh,data:{queryText:e,mode:t}}},goToPreviousQuery:function(){return{type:Gh}},goToNextQuery:function(){return{type:$h}},getExplainQuery:function(e){var t=e.query,n=e.database,i=e.mode,r="explain",o=tr.yql;return"pg"===i?(r="explain-query",o=tr.pg):i&&(r="explain-".concat(i)),oa({request:window.api.getExplainQuery(t,n,r,o),actions:cf,dataHandler:function(e){var t=or(e),n=t.plan,i=t.ast;if(!n)return{ast:i};var r=ar(n),o=r.tables,a=r.meta,s=r.Plan;if(-1===pf.indexOf(a.version))return{plan:{pristine:n,version:a.version},ast:i};var u=[],l=[];if(s){var c=function(e){var t=[],n=[],i=e,r={name:String(i.PlanNodeId),data:{id:i.PlanNodeId,type:lf(i),name:i["Node Type"]}};return t.push(r),function e(){var i=arguments.length>1?arguments[1]:void 0;(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach((function(r){var o,a={name:String(r.PlanNodeId),data:{id:r.PlanNodeId,type:lf(r),name:r["Node Type"],operators:null===(o=r.Operators)||void 0===o?void 0:o.map((function(e){return e.Name})),stats:uf(r),tables:r.Tables}};t.push(a),n.push({from:i,to:a.name}),e(r.Plans,a.name)}))}(i.Plans,r.name),{nodes:t,links:n}}(s);u=c.links,l=c.nodes}return{plan:{links:u,nodes:l,tables:o,version:a.version,pristine:n},ast:i}}})},getExplainQueryAst:function(e){var t=e.query,n=e.database;return oa({request:window.api.getExplainQueryAst(t,n),actions:df,dataHandler:or})},setShowPreview:Md,setMonacoHotKey:function(e){return{type:Qh,data:e}},setTenantPath:function(e){return{type:Xh,data:e}}},G6=z((function(e){var t;return{executeQuery:e.executeQuery,explainQuery:e.explainQuery,showPreview:e.schema.showPreview,currentSchema:e.schema.currentSchema,monacoHotKey:null===(t=e.executeQuery)||void 0===t?void 0:t.monacoHotKey}}),q6)((function(t){var n=t.path,i=t.executeQuery,r=t.theme,o=t.setTenantPath,a=t.changeUserInput,s=i.tenantPath,u=(0,e.useState)(Y6.EXECUTE),l=(0,ne.Z)(u,2),c=l[0],d=l[1],h=(0,e.useState)(!1),f=(0,ne.Z)(h,2),p=f[0],g=f[1],v=nv(),m=(0,ne.Z)(v,2),_=m[0],y=m[1],b=tv(Gi),w=(0,ne.Z)(b,1)[0],C=tv(Vi),k=(0,ne.Z)(C,2),S=k[0],x=k[1],L=tv(Ii),E=(0,ne.Z)(L,2),D=E[0],N=E[1];(0,e.useEffect)((function(){s!==n&&(s&&a({input:""}),o(n))}),[a,o,n,s]);var M=(0,e.useReducer)(iZ(Hi),K6),T=(0,ne.Z)(M,2),I=T[0],O=T[1],A=(0,e.useRef)(null);(0,e.useEffect)((function(){return q(),window.addEventListener("resize",U),window.addEventListener("storage",K),function(){window.removeEventListener("resize",U),window.removeEventListener("storage",K),window.onbeforeunload=void 0,t.setMonacoHotKey(null)}}),[]),(0,e.useEffect)((function(){O(KP.triggerCollapse)}),[]),(0,e.useEffect)((function(){t.showPreview||p?O(KP.triggerExpand):O(KP.triggerCollapse)}),[t.showPreview,p]),(0,e.useEffect)((function(){var e,n=t.explainQuery.data,i=t.executeQuery,r=i.input,o=i.history,a=!!r&&r!==o.queries[(null===(e=o.queries)||void 0===e?void 0:e.length)-1];window.onbeforeunload=a?R:void 0,n&&Y6.EXPLAIN}),[t.executeQuery,t.executeQuery]),(0,e.useEffect)((function(){var e=t.monacoHotKey,n=t.setMonacoHotKey;if(null!==e)switch(n(null),e){case tf.sendQuery:return S===Xi.explain?F(_):Z(_);case tf.goPrev:return z();case tf.goNext:return W();default:return}}),[t.monacoHotKey]);var R=function(e){e.preventDefault(),e.returnValue=""},P=function(e){return function(){return t.setMonacoHotKey(e)}},Z=function(e){var n=t.path,i=t.executeQuery,r=i.input,o=i.history,a=t.sendExecuteQuery,s=t.saveQueryToHistory,u=t.setShowPreview,l=w?"multi":"modern";x(Xi.execute),d(Y6.EXECUTE),a({query:r,database:n,mode:e,schema:l}),g(!0),u(!1),r!==o.queries[o.currentIndex]&&s(r,e),O(KP.triggerExpand)},F=function(e){var n=t.path,i=t.executeQuery.input,r=t.getExplainQuery,o=t.setShowPreview;x(Xi.explain),d(Y6.EXPLAIN),r({query:i,database:n,mode:e}),g(!0),o(!1),O(KP.triggerExpand)},j=function(){var e=t.path,n=t.executeQuery.input;(0,t.getExplainQueryAst)({query:n,database:e})},H=function(){O(KP.triggerCollapse)},B=function(){O(KP.triggerExpand)},z=function(){var e=t.changeUserInput,n=t.executeQuery.history,i=t.goToPreviousQuery,r=n.queries,o=n.currentIndex;V()||(i(),e({input:r[o-1]}))},W=function(){var e=t.changeUserInput,n=t.executeQuery.history,i=t.goToNextQuery,r=n.queries,o=n.currentIndex;Y()||(i(),e({input:r[o+1]}))},V=function(){return t.executeQuery.history.currentIndex<=0},Y=function(){var e=t.executeQuery.history,n=e.queries,i=e.currentIndex;return n.length-1===i},U=on().throttle((function(){q()}),100),K=function(e){e.key===Ii&&N(e.newValue)},q=function(){A.current&&A.current.layout()},G=function(e){var n=t.executeQuery.input,i=D.findIndex((function(t){return t.name.toLowerCase()===e.toLowerCase()})),r=(0,Ct.Z)(D),o={name:e,body:n};-1!==i?r[i]=o:r.push(o),N(r)},$=function(){var e;switch(c){case Y6.EXECUTE:e=function(){var e=t.executeQuery,n=e.data,i=e.error,r=e.stats;return n||i?(0,Nl.jsx)(FF,{data:n,stats:r,error:i,isResultsCollapsed:I.collapsed,onExpandResults:B,onCollapseResults:H}):null}();break;case Y6.EXPLAIN:e=function(){var e=t.explainQuery,n=e.data,i=e.dataAst,r=e.error,o=e.loading,a=e.loadingAst,s=t.theme;return(0,Nl.jsx)(P6,{error:r,explain:n,astQuery:j,ast:i,loading:o,loadingAst:a,theme:s,isResultsCollapsed:I.collapsed,onExpandResults:B,onCollapseResults:H})}();break;default:e=null}return e}();return(0,Nl.jsx)("div",{className:U6(),children:(0,Nl.jsxs)(RA,{direction:"vertical",defaultSizePaneKey:Ri,triggerCollapse:I.triggerCollapse,triggerExpand:I.triggerExpand,minSize:[0,52],collapsedSizes:[100,0],onSplitStartDragAdditional:function(){O(KP.clear)},children:[(0,Nl.jsxs)("div",{className:U6("pane-wrapper",{top:!0}),children:[(0,Nl.jsx)("div",{className:U6("monaco-wrapper"),children:(0,Nl.jsx)("div",{className:U6("monaco"),children:(0,Nl.jsx)(HZ.ZP,{language:"sql",value:i.input,options:W6,onChange:function(e){t.changeUserInput({input:e})},editorDidMount:function(e,t){A.current=e,e.focus(),e.addAction({id:"sendQuery",label:"Send query",keybindings:[t.KeyMod.CtrlCmd|t.KeyCode.Enter],precondition:null,keybindingContext:null,contextMenuGroupId:V6,contextMenuOrder:1,run:P(tf.sendQuery)}),e.addAction({id:"previous-query",label:"Previous query",keybindings:[t.KeyMod.CtrlCmd|t.KeyCode.UpArrow],contextMenuGroupId:V6,contextMenuOrder:2,run:P(tf.goPrev)}),e.addAction({id:"next-query",label:"Next query",keybindings:[t.KeyMod.CtrlCmd|t.KeyCode.DownArrow],contextMenuGroupId:V6,contextMenuOrder:3,run:P(tf.goNext)})},theme:"vs-".concat(r)})})}),function(){var e=t.executeQuery,n=t.explainQuery;return(0,Nl.jsx)(z6,{onRunButtonClick:Z,runIsLoading:e.loading,onExplainButtonClick:F,explainIsLoading:n.loading,onSaveQueryClick:G,savedQueries:D,disabled:!e.input,onUpdateQueryMode:y,queryMode:_,highlitedAction:S})}()]}),(0,Nl.jsx)("div",{className:U6("pane-wrapper"),children:t.showPreview?function(){var e=t.path,n=t.type;return(0,Nl.jsx)(iF,{database:e,type:n})}():$})]})})})),$6=(0,ht.Z)("ydb-query"),Q6=function(e){var t=K(),n=ev((function(e){return e.tenant})).queryTab,i=void 0===n?Rn.newQuery:n,r=tv(Ii,[]),o=(0,ne.Z)(r,2),a=o[0],s=o[1],u=function(e){var t=a.filter((function(t){return t.name.toLowerCase()!==e.toLowerCase()}));s(t)},l=function(e){t(rf(e))};return(0,Nl.jsxs)("div",{className:$6(),children:[(0,Nl.jsx)(gZ,{className:$6("tabs"),activeTab:i}),(0,Nl.jsx)("div",{className:$6("content"),children:function(){switch(i){case Rn.newQuery:return(0,Nl.jsx)(G6,Rt({changeUserInput:l},e));case Rn.history:return(0,Nl.jsx)(jZ,{changeUserInput:l});case Rn.saved:return(0,Nl.jsx)(ZZ,{changeUserInput:l,savedQueries:a,onDeleteQuery:u});default:return null}}()})]})},X6=(0,ft.Ge)("switch"),J6=e.forwardRef((function(t,n){var i=t.size,r=void 0===i?"m":i,o=t.disabled,a=void 0!==o&&o,s=t.content,u=t.children,l=t.title,c=t.style,d=t.className,h=t.qa,f=MI(t),p=f.checked,g=f.inputProps,v=s||u,m=e.createElement("span",{className:X6("indicator")},e.createElement("input",Object.assign({},g,{className:X6("control")})),e.createElement("span",{className:X6("outline")}),e.createElement("span",{className:X6("slider")}));return e.createElement(II,{ref:n,title:l,style:c,size:r,disabled:a,className:X6({size:r,disabled:a,checked:p},d),labelClassName:X6("text"),qa:h,control:m},v)})),e7={r:255,g:4,b:0},t7={r:255,g:219,b:77},n7={r:59,g:201,b:53},i7={CPU:{min:0,max:1e6},Network:{min:0,max:1e9},Storage:{min:0,max:2e9},DataSize:{min:0,max:2e9},RowCount:{min:0},IndexSize:{min:0}},r7=function(e){var t=e.toString(16);return 1===t.length?"0".concat(t):t},o7=function(e,t,n){if(1===e)return[t];if(2===e)return[t,n];for(var i=(t.r-n.r)/(e-1),r=(t.g-n.g)/(e-1),o=(t.b-n.b)/(e-1),a=[],s=0;s<e;s++)a.push({r:Math.round(t.r-i*s),g:Math.round(t.g-r*s),b:Math.round(t.b-o*s)});return a.map((function(e){return function(e){var t=e.r,n=e.g,i=e.b;return"#".concat(r7(t)).concat(r7(n)).concat(r7(i))}(e)}))},a7=function(e){var t=Math.floor(e/2),n=t+1,i=o7(e%2===0?t:t+1,n7,t7),r=o7(n,t7,e7);return[].concat((0,Ct.Z)(i),(0,Ct.Z)(r.slice(1)))},s7=function(e,t){var n=new Set,i=i7[e]||{};t.forEach((function(t){n.add(Number(t.metrics[e]))})),Number.isInteger(i.min)&&n.add(i.min),Number.isInteger(i.max)&&n.add(i.max);var r=Array.from(n.values()).sort((function(e,t){return e-t}));return{min:r[0],max:r[r.length-1]}},u7=(0,ht.Z)("heatmap"),l7={width:0,height:0},c7=10,d7=2,h7=function(t){var n=(0,e.useState)(l7),i=(0,ne.Z)(n,2),r=i[0],o=i[1],a=t.tablets,s=(0,e.useRef)(null),u=(0,e.useRef)(null);(0,e.useEffect)((function(){var e=s.current,t=e.getContext("2d");t.clearRect(0,0,e.offsetWidth,e.offsetHeight),a.map(function(e){return function(t,n){var i=r.columnsCount,o=n%i*(c7+d7),a=Math.floor(n/i)*(c7+d7);e.fillStyle=t.color||"gray",e.fillRect(o,a,c7,c7)}}(t))})),(0,e.useLayoutEffect)((function(){var e=u.current;if(e){var t=e.offsetWidth-15,n=Math.floor(t/(c7+d7)),i=Math.ceil(a.length/n);o({width:t,height:i*(c7+d7),columnsCount:n,rowsCount:i})}}),[]);var l=function(){for(var e=s.current,t=0;e;)t+=e.offsetTop,e=e.offsetParent;return t},c=function(){for(var e=s.current,t=0;e;)t+=e.offsetLeft,e=e.offsetParent;return t},d=function(e,t){var n=r.columnsCount,i=c7+d7,o=c7+d7,a=Math.floor(e/i);return n*Math.floor(t/o)+a},h=on().throttle((function(e,n){var i=new CustomEvent("scroll");window.dispatchEvent(i);var r=t.parentRef.current,o=e-c()+r.scrollLeft,s=n-l()+r.scrollTop,u=d(o,s),h=a[u];if(h){var f={name:h.currentMetric,value:h.formattedValue};t.showTooltip(void 0,h,"tablet",f,{left:e-20,top:n-20})}else t.hideTooltip()}),20);return(0,Nl.jsx)("div",{ref:u,className:u7("canvas-container"),onMouseLeave:function(){setTimeout((function(){t.hideTooltip()}),40)},children:(0,Nl.jsx)("canvas",{ref:s,width:r.width,height:r.height,onClick:function(e){var n=t.parentRef.current,i=e.clientX-c()+n.scrollLeft,r=e.clientY-l()+n.scrollTop,o=d(i,r),s=a[o];s&&window.open(function(e){var t=e.TabletId,n=window.location.hostname,i=_g(bg.tablet,{id:t}),r=[n,ig,i].map((function(e){return e.startsWith("/")?e.slice(1):e})).filter(Boolean).join("/");return"".concat("https://").concat(r)}(s),"_blank")},onMouseMove:function(e){return h(e.clientX,e.clientY)}})})},f7=(0,ht.Z)("histogram"),p7=function(t){var n=(0,e.useRef)(),i=t.data,r=void 0===i?{}:i,o=t.maxCount,a=r.count,s=r.leftBound,u=r.rightBound,l=r.color,c=a/o*100;return(0,Nl.jsx)("div",{ref:n,className:f7("item"),style:{backgroundColor:l,height:"".concat(c,"%")},onMouseEnter:function(){var e=n.current;t.showTooltip(e,{count:a,leftBound:s,rightBound:u},"histogram")},onMouseLeave:t.hideTooltip})},g7=function(e){var t=e.tablets,n=e.currentMetric,i=s7(n,t),r=i.min,o=i.max,a=a7(50),s=(o-r)/50,u=a.map((function(e,t){return{color:e,count:0,leftBound:fs(r+t*s),rightBound:fs(r+(t+1)*s)}})),l=0;t.forEach((function(e){var t,i=n&&Number(e.metrics[n]),r=Math.floor(i/s),o=(null===(t=u[r])||void 0===t?void 0:t.count)+1;o>l&&(l=o),u[r]=Rt(Rt({},u[r]),{},{count:o})}));return(0,Nl.jsx)("div",{className:f7(),children:(0,Nl.jsxs)("div",{className:f7("chart"),children:[Boolean(o)&&u.map((function(t,n){return(0,Nl.jsx)(p7,{data:t,maxCount:l,showTooltip:e.showTooltip,hideTooltip:e.hideTooltip},n)})),(0,Nl.jsx)("div",{className:f7("x-min"),children:fs(r)}),(0,Nl.jsx)("div",{className:f7("x-max"),children:fs(o)}),(0,Nl.jsx)("div",{className:f7("y-min"),children:"0"}),(0,Nl.jsx)("div",{className:f7("y-max"),children:fs(l)})]})})},v7=(0,ht.Z)("heatmap"),m7=a7(500),_7=function(t){var n=t.path,i=K(),r=e.createRef(),o=ev((function(e){return e.schema})).autorefresh,a=ev((function(e){return e.heatmap})),s=a.loading,u=a.wasLoaded,l=a.error,c=a.sort,d=a.heatmap,h=a.metrics,f=a.currentMetric,p=a.data,g=void 0===p?[]:p,v=(0,e.useState)([""]),m=(0,ne.Z)(v,2),_=m[0],y=m[1];(0,e.useEffect)((function(){!f&&h&&h.length&&i(la({currentMetric:h[0].value})),f&&y([f])}),[f,h,i]);var b=(0,e.useCallback)((function(e){e||i(la({wasLoaded:!1})),i(function(e){var t=e.nodes,n=e.path;return oa({request:Promise.all([window.api.getTabletsInfo({nodes:t,path:n}),window.api.getHeatmapData({path:n})]),actions:aa,dataHandler:function(e){var t=(0,ne.Z)(e,2),n=t[0],i=void 0===n?{}:n,r=t[1],o=void 0===r?{}:r,a=i.TabletStateInfo,s=void 0===a?[]:a,u=new Map,l=o.PathDescription,c=void 0===l?{}:l,d=c.TablePartitions,h=void 0===d?[]:d,f=c.TablePartitionStats,p=void 0===f?[]:f,g=c.TablePartitionMetrics,v=void 0===g?[]:g;s.forEach((function(e){e.TabletId&&u.set(e.TabletId,e)})),h.forEach((function(e,t){var n=Object.assign({},p[t],v[t]);e.DatashardId&&u.set(e.DatashardId,Rt(Rt({},u.get(e.DatashardId)),{},{metrics:n}))}));var m=Array.from(u.values());return{data:m,metrics:m[0]&&m[0].metrics&&Object.keys(m[0].metrics).map((function(e){return{value:e,content:e}}))}}})}({path:n}))}),[n,i]);Jg(b,[b],o);var w=function(){i(tc.apply(void 0,arguments))},C=function(){i(ec)},k=function(e){i(la({currentMetric:e[0]}))},S=function(){i(la({sort:!c}))},x=function(){i(la({heatmap:!d}))},L=function(){var e=s7(f,g),t=e.min,n=e.max,i=g.map((function(e){var i,r=f&&Number(null===(i=e.metrics)||void 0===i?void 0:i[f]),o=function(e,t,n){return 0===n?0:Math.round((e-t)/(n-t)*499)}(r,t,n),a=m7[o];return Rt(Rt({},e),{},{color:a,value:r,formattedValue:fs(r),currentMetric:f})})),o=c?i.sort((function(e,t){return Number(t.value)-Number(e.value)})):i;return(0,Nl.jsx)("div",{ref:r,className:v7("items"),children:(0,Nl.jsx)(h7,{tablets:o,parentRef:r,showTooltip:w,hideTooltip:C,currentMetric:f})})};return s&&!u?(0,Nl.jsx)(jI,{}):l?(0,Nl.jsx)(Sb,{error:l}):function(){var e=s7(f,g),t=e.min,n=e.max;return(0,Nl.jsxs)("div",{className:v7(),children:[(0,Nl.jsxs)("div",{className:v7("filters"),children:[(0,Nl.jsx)(MD,{className:v7("heatmap-select"),value:_,options:h,onUpdate:k,width:200}),(0,Nl.jsx)("div",{className:v7("sort-checkbox"),children:(0,Nl.jsx)(ZI,{onUpdate:S,checked:c,children:"Sort"})}),(0,Nl.jsx)("div",{className:v7("histogram-checkbox"),children:(0,Nl.jsx)(ZI,{onUpdate:x,checked:d,children:"Heatmap"})}),(0,Nl.jsxs)("div",{className:v7("limits"),children:[(0,Nl.jsxs)("div",{className:v7("limits-block"),children:[(0,Nl.jsx)("div",{className:v7("limits-title"),children:"min:"}),(0,Nl.jsx)("div",{className:v7("limits-value"),children:Number.isInteger(t)?fs(t):"\u2014"})]}),(0,Nl.jsxs)("div",{className:v7("limits-block"),children:[(0,Nl.jsx)("div",{className:v7("limits-title"),children:"max:"}),(0,Nl.jsx)("div",{className:v7("limits-value"),children:Number.isInteger(n)?fs(n):"\u2014"})]}),(0,Nl.jsxs)("div",{className:v7("limits-block"),children:[(0,Nl.jsx)("div",{className:v7("limits-title"),children:"count:"}),(0,Nl.jsx)("div",{className:v7("limits-value"),children:fs(g.length)})]})]})]}),d?L():(0,Nl.jsx)(g7,{tablets:g,currentMetric:f,showTooltip:w,hideTooltip:C})]})}()},y7=n(74140),b7=n.n(y7),w7=3,C7={grey:"var(--yc-color-base-misc-heavy)",green:"var(--yc-color-base-positive-heavy)",yellow:" var(--yc-color-base-warning-heavy)",orange:"var( --yc-color-base-warning-orange)",red:"var(--yc-color-base-danger-heavy)",blue:"var(--yc-color-base-info-heavy)"},k7=(0,ht.Z)("kv-tablets-overall");var S7=function(e){var t=e.tablets,n=K(),i=t.length,r=t.reduce((function(e,t){var n,i=null===(n=t.Overall)||void 0===n?void 0:n.toLowerCase();return i&&!e[i]?e[i]=1:i&&e[i]++,e}),{}),o=[];Object.keys(r).forEach((function(e){var n=r[e]/i*100,a=r[e];r[e]=n,o.push({color:e,percents:n,value:a,total:t.length})})),Object.keys(r).forEach((function(e){r[e]<w7&&(!function(e,t){Object.keys(e).some((function(n){return e[n]>10&&(e[n]-=w7-t,!0)}))}(r,r[e]),r[e]=w7)}));var a=Object.keys(r).map((function(e){return{color:C7[e],colorKey:e,value:r[e]}}));return a.sort((function(e,t){return ki[t.colorKey]-ki[e.colorKey]})),(0,Nl.jsxs)("div",{className:k7("row",{overall:!0}),children:[(0,Nl.jsx)("span",{className:k7("label",{overall:!0}),children:"Overall:"}),(0,Nl.jsx)("div",{onMouseLeave:function(){return n(ec())},onMouseEnter:function(e){return n(tc(e.target,o,"tabletsOverall"))},children:(0,Nl.jsx)(kO,{value:100,stack:a})})]})},x7=JSON.parse('{"controls.type":"Type","controls.state":"State","controls.allItems":"All items","noTabletsData":"No tablets data"}'),L7=JSON.parse('{"controls.type":"\u0422\u0438\u043f","controls.state":"\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","controls.allItems":"\u0412\u0441\u0435","noTabletsData":"\u041d\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u0430\u0431\u043b\u0435\u0442\u043a\u0430\u0445"}'),E7="ydb-tablets";Va.registerKeyset(Fa.En,E7,x7),Va.registerKeyset(Fa.Ru,E7,L7);var D7=Va.keyset(E7),N7=(0,ht.Z)("tablets"),M7=function(t){var n=t.path,i=t.nodeId,r=t.className,o=K(),a=ev((function(e){return e.tablets})),s=a.data,u=a.wasLoaded,l=a.loading,c=a.error,d=a.stateFilter,h=a.typeFilter,f=ev((function(e){return e.schema})).autorefresh,p=(0,e.useMemo)((function(){return(null===s||void 0===s?void 0:s.TabletStateInfo)||[]}),[s]),g=(0,e.useCallback)((function(e){e||o({type:rc}),i?o(uc({nodes:[String(i)]})):n&&o(uc({path:n}))}),[n,i,o]);Jg(g,[g],f);var v=(0,e.useState)([]),m=(0,ne.Z)(v,2),_=m[0],y=m[1];(0,e.useEffect)((function(){var e=p;h.length>0&&(e=e.filter((function(e){return h.some((function(t){return e.Type===t}))}))),d.length>0&&(e=e.filter((function(e){return d.some((function(t){return e.State===t}))}))),y(e)}),[p,d,h]);var b=function(e){o(function(e){return{type:oc,data:e}}(e))},w=function(e){o(function(e){return{type:ac,data:e}}(e))},C=function(e){return(0,Nl.jsx)(jO,{tablet:_[e]},e)};return l&&!u?(0,Nl.jsx)(jI,{}):c?(0,Nl.jsx)("div",{className:"error",children:c.statusText}):p.length>0?function(){var e=Array.from(new Set(p.map((function(e){return e.State})))).filter((function(e){return void 0!==e})).map((function(e){return{value:e,content:e}})),t=Array.from(new Set(p.map((function(e){return e.Type})))).filter((function(e){return void 0!==e})).map((function(e){return{value:e,content:e}}));return(0,Nl.jsxs)("div",{className:N7(null,r),children:[(0,Nl.jsxs)("div",{className:N7("header"),children:[(0,Nl.jsx)(MD,{className:N7("filter-control"),multiple:!0,placeholder:D7("controls.allItems"),label:"".concat(D7("controls.state"),":"),options:e,value:d,onUpdate:b}),(0,Nl.jsx)(MD,{className:N7("filter-control"),multiple:!0,placeholder:D7("controls.allItems"),label:"".concat(D7("controls.type"),":"),options:t,value:h,onUpdate:w}),(0,Nl.jsx)(S7,{tablets:p})]}),(0,Nl.jsx)("div",{className:N7("items"),children:(0,Nl.jsx)(b7(),{itemRenderer:C,length:_.length,type:"uniform"})})]})}():(0,Nl.jsx)("div",{className:"error",children:D7("noTabletsData")})},T7=(0,ht.Z)("kv-describe"),I7=new Map,O7=function(t){var n=t.tenant,i=t.type,r=K(),o=ev((function(e){return e.describe})),a=o.currentDescribe,s=o.error,u=o.loading,l=o.wasLoaded,c=(0,e.useState)(),d=(0,ne.Z)(c,2),h=d[0],f=d[1];(0,e.useEffect)((function(){if(a){var e=Object.keys(a);1===e.length?f(a[e[0]]):f(a)}}),[a]);var p=ev((function(e){return e.schema})),g=p.autorefresh,v=p.currentSchemaPath,m=fd(i),_=ev((function(e){return Td(e,v,i)}),L),y=(0,e.useCallback)((function(e){e||r({type:If});var t=v||n;r(function(e){return{type:Tf,data:e}}(t)),m?_&&r(function(e){var t=e.map((function(e){return window.api.getDescribe({path:e})}));return oa({request:Promise.all(t),actions:Mf,dataHandler:function(e){var t={},n={};return e.forEach((function(e){e.Path&&(n[e.Path]=e,t[e.Path]=e)})),{path:e[0].Path,currentDescribe:t,data:n}}})}([t].concat((0,Ct.Z)(_)))):r(function(e){var t=e.path;return oa({request:window.api.getDescribe({path:t}),actions:Mf,dataHandler:function(e){var t=e.Path,n={},i={};return t&&(n[t]=e,i[t]=e),{path:t,currentDescribe:n,data:i}}})}({path:t}))}),[v,n,_,m,r]);return Jg(y,[y],g),u&&!l||m&&!_?(0,Nl.jsx)(jI,{size:"m"}):s?(0,Nl.jsx)(Sb,{error:s,className:T7("message-container")}):u||h?(0,Nl.jsx)("div",{className:T7(),children:(0,Nl.jsx)("div",{className:T7("result"),children:(0,Nl.jsx)(Dl(),{data:h,className:T7("tree"),onClick:function(e){var t=e.path,n=!I7.get(t);I7.set(t,n)},searchOptions:{debounceTime:300},isExpanded:function(e){return I7.get(e)||!1}})})}):(0,Nl.jsx)("div",{className:T7("message-container"),children:"Empty"})},A7=(0,ht.Z)("hot-keys"),R7={displayIndices:!1,syncHeadOnResize:!0,stickyHead:pi.MOVING,stickyTop:0},P7={accessSample:"accessSample",keyValues:"keyValues"},Z7=new Xg;var F7=z((function(e){var t=e.hotKeys,n=t.loading,i=t.data,r=t.error,o=t.wasLoaded,a=e.schema,s=a.currentSchema,u=void 0===s?{}:s,l=a.autorefresh;return{loading:n,data:i,error:r,currentSchemaPath:u.Path,autorefresh:l,wasLoaded:o,currentSchema:u}}),{getHotKeys:function(e,t){return oa({request:window.api.getHotKeys(e,t),actions:Ip})},setHotKeysOptions:function(e){return{type:Op,data:e}}})((function(t){var n=t.getHotKeys,i=t.currentSchemaPath,r=t.loading,o=t.wasLoaded,a=t.error,s=t.data,u=t.autorefresh,l=t.setHotKeysOptions,c=t.currentSchema,d=t.type,h=function(){od(d)&&!ld(d)&&n(i)};(0,e.useEffect)((function(){return u?(h(),Z7.start(),Z7.fetch((function(){return h()}))):Z7.stop(),function(){Z7.stop()}}),[u]),(0,e.useEffect)((function(){h(),l({wasLoaded:!1,data:void 0})}),[i]);var f=(0,e.useMemo)((function(){var e,t,n,i=null!==(e=null===c||void 0===c||null===(t=c.PathDescription)||void 0===t||null===(n=t.Table)||void 0===n?void 0:n.KeyColumnNames)&&void 0!==e?e:[];return[{name:P7.accessSample,header:"Samples",sortable:!1,align:pi.RIGHT}].concat((0,Ct.Z)(i.map((function(e,t){return{name:e,header:(0,Nl.jsxs)("div",{className:A7("primary-key-column"),children:[(0,Nl.jsx)(Ob,{name:"key",viewBox:"0 0 12 7",width:12,height:7}),e]}),render:function(e){return e.row[P7.keyValues][t]},align:pi.RIGHT,sortable:!1}}))))}),[c]);return r||void 0!==s?(0,Nl.jsx)("div",{className:A7(),children:r&&!o?(0,Nl.jsx)("div",{className:A7("loader"),children:(0,Nl.jsx)(KE,{size:"l"})}):a?(0,Nl.jsx)(Sb,{error:a}):null!==s?(0,Nl.jsx)("div",{className:A7("table-content"),children:(0,Nl.jsx)(pi,{columns:f,data:s,settings:R7,theme:"yandex-cloud",initialSortOrder:{columnId:P7.accessSample,order:pi.DESCENDING}})}):(0,Nl.jsx)("div",{className:A7("stub"),children:"No information about hot keys"})}):(0,Nl.jsx)("div",{className:A7("stub"),children:"Cluster version does not support hot keys viewing"})})),j7=(0,ht.Z)("node-network"),H7=function(e,t){var n=Math.floor(e/t*100);return 100===n?"green":n>=70?"yellow":n>=1?"red":"gray"},B7=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var t;(0,X.Z)(this,i);for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];return(t=n.call.apply(n,[this].concat(o))).node=e.createRef(),t._onNodeHover=function(){var e=t.props,n=e.onMouseEnter,i={nodeId:e.nodeId,connected:e.connected,capacity:e.capacity,rack:e.rack};n(t.node.current,i,"node")},t._onNodeLeave=function(){t.props.onMouseLeave()},t}return(0,J.Z)(i,[{key:"render",value:function(){var e,t=this.props,n=t.nodeId,i=t.connected,r=t.capacity,o=t.status,a=t.onClick,s=t.showID,u=t.isBlurred;return(0,Nl.jsx)("div",{ref:this.node,className:j7((e={},(0,wt.Z)(e,(null===o||void 0===o?void 0:o.toLowerCase())||H7(i,r),!0),(0,wt.Z)(e,"id",s),(0,wt.Z)(e,"blur",u),e)),onMouseEnter:this._onNodeHover,onMouseLeave:this._onNodeLeave,onClick:function(){return a(n)},children:s&&n})}}]),i}(e.Component);B7.defaultProps={onMouseEnter:function(){},onMouseLeave:function(){},onClick:function(){}};var z7=B7,W7=function(e){return null===e||void 0===e?void 0:e.reduce((function(e,t){return t.Connected?e+1:e}),0)},V7=(0,ht.Z)("network"),Y7=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;(0,X.Z)(this,n);for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))).state={howNodeSeeOtherNodesSortType:"",howOthersSeeNodeSortType:"",howNodeSeeOtherSearch:"",howOtherSeeNodeSearch:"",hoveredNode:void 0,clickedNode:void 0,highlightedNodes:[],showId:!1,showRacks:!1},e.onChange=function(t,n){e.setState((0,wt.Z)({},t,n))},e.handleSortChange=function(t){e.setState({sort:t})},e.handleNodeClickWrap=function(t){return function(){var n=e.state.clickedNode,i=t.NodeId;n&&i===n.nodeId?e.setState({clickedNode:void 0}):e.setState({clickedNode:t,rightNodes:e.groupNodesByField(t.Peers,"NodeType")})}},e.groupNodesByField=function(e,t){return on().reduce(e,(function(e,n){return e[n[t]]?e[n[t]].push(n):e[n[t]]=[n],e}),{})},e.renderNodes=function(t,n){var i=e.state,r=i.showId,o=i.showRacks,a=i.clickedNode,s=0,u=e.props,l=u.showTooltip,c=u.hideTooltip,d=u.filter,h=Object.keys(t).map((function(i,u){var h=e.groupNodesByField(t[i],"Rack");return(0,Nl.jsxs)("div",{className:V7("nodes-container",{right:n}),children:[(0,Nl.jsxs)("div",{className:V7("nodes-title"),children:[i," nodes"]}),(0,Nl.jsx)("div",{className:V7("nodes"),children:o?Object.keys(h).map((function(t,i){return(0,Nl.jsxs)("div",{className:V7("rack-column"),children:[(0,Nl.jsx)("div",{className:V7("rack-index"),children:"undefined"===t?"?":t}),h[t].map((function(t,i){var o,u;if(!n&&null!==t&&void 0!==t&&t.Peers&&(o=Object.keys(null===t||void 0===t?void 0:t.Peers).length,u=W7(null===t||void 0===t?void 0:t.Peers)),d===Cr.PROBLEMS&&o!==u||d===Cr.ALL||n)return s++,(0,Nl.jsx)(z7,{nodeId:t.NodeId,showID:r,rack:t.Rack,status:t.ConnectStatus,capacity:o,connected:u,onMouseEnter:l,onMouseLeave:c,onClick:!n&&e.handleNodeClickWrap(t),isBlurred:!n&&a&&a.NodeId!==t.NodeId},i)}))]},i)})):t[i].map((function(t,i){var o,u,h;n||(o=null===t||void 0===t||null===(h=t.Peers)||void 0===h?void 0:h.length,u=W7(null===t||void 0===t?void 0:t.Peers));if(d===Cr.PROBLEMS&&o!==u||d===Cr.ALL||n)return s++,(0,Nl.jsx)(z7,{nodeId:t.NodeId,showID:r,rack:t.Rack,status:t.ConnectStatus,capacity:(null===t||void 0===t?void 0:t.Peers)&&(null===t||void 0===t?void 0:t.Peers.length),connected:(null===t||void 0===t?void 0:t.Peers)&&W7(null===t||void 0===t?void 0:t.Peers),onMouseEnter:l,onMouseLeave:c,onClick:!n&&e.handleNodeClickWrap(t),isBlurred:!n&&a&&a.NodeId!==t.NodeId},i)}))})]},u)}));return d===Cr.PROBLEMS&&0===s?(0,Nl.jsx)(Ay,{name:"thumbsUp",width:"200"}):h},e.renderContent=function(){var t=e.props,n=t.netWorkInfo,i=t.filter,r=t.changeFilter,o=e.state,a=o.showId,s=o.showRacks,u=o.rightNodes,l=e.state.clickedNode,c=n.Tenants&&n.Tenants[0].Nodes,d=e.groupNodesByField(c,"NodeType");return null!==c&&void 0!==c&&c.length?(0,Nl.jsx)("div",{className:V7(),children:(0,Nl.jsx)("div",{className:V7("inner"),children:(0,Nl.jsxs)("div",{className:V7("nodes-row"),children:[(0,Nl.jsxs)("div",{className:V7("left"),children:[(0,Nl.jsx)("div",{className:V7("controls-wrapper"),children:(0,Nl.jsxs)("div",{className:V7("controls"),children:[(0,Nl.jsx)(Ny,{value:i,onChange:r,className:V7("problem-filter")}),(0,Nl.jsx)("div",{className:V7("checkbox-wrapper"),children:(0,Nl.jsx)(ZI,{onUpdate:function(){return e.onChange("showId",!a)},checked:a,children:"ID"})}),(0,Nl.jsx)("div",{className:V7("checkbox-wrapper"),children:(0,Nl.jsx)(ZI,{onUpdate:function(){return e.onChange("showRacks",!s)},checked:s,children:"Racks"})})]})}),e.renderNodes(d)]}),(0,Nl.jsx)("div",{className:V7("right"),children:l?(0,Nl.jsxs)("div",{children:[(0,Nl.jsxs)("div",{className:V7("label"),children:["Connectivity of node"," ",(0,Nl.jsx)(cv,{className:V7("link"),to:nM(l.NodeId),children:l.NodeId})," ","to other nodes"]}),(0,Nl.jsx)("div",{className:V7("nodes-row"),children:e.renderNodes(u,!0)})]}):(0,Nl.jsxs)("div",{className:V7("placeholder"),children:[(0,Nl.jsx)("div",{className:V7("placeholder-img"),children:(0,Nl.jsx)(Ob,{name:"network-placeholder",viewBox:"0 0 221 204",width:221,height:204})}),(0,Nl.jsx)("div",{className:V7("placeholder-text"),children:"Select node to see its connectivity to other nodes"})]})})]})})}):(0,Nl.jsx)("div",{className:"error",children:"no nodes data"})},e}return(0,J.Z)(n,[{key:"componentDidMount",value:function(){var e=this.props,t=e.path,n=e.autorefresh,i=e.getNetworkInfo;this.autofetcher=new Xg,n&&(this.autofetcher.start(),this.autofetcher.fetch((function(){return i(t)}))),i(t)}},{key:"componentDidUpdate",value:function(e){var t=this,n=this.props,i=n.autorefresh,r=n.path,o=n.setDataWasNotLoaded,a=n.getNetworkInfo,s=function(){t.autofetcher.stop(),t.autofetcher.start(),t.autofetcher.fetch((function(){return a(r)}))};i&&!e.autorefresh&&(a(r),s()),!i&&e.autorefresh&&this.autofetcher.stop(),r!==e.path&&(o(),a(r),s())}},{key:"componentWillUnmount",value:function(){this.autofetcher.stop()}},{key:"render",value:function(){var e=this.props,t=e.loading,i=e.wasLoaded,r=e.error;return t&&!i?n.renderLoader():r?(0,Nl.jsx)("div",{children:r.statusText}):this.renderContent()}}],[{key:"renderLoader",value:function(){return(0,Nl.jsx)("div",{className:"loader",children:(0,Nl.jsx)(KE,{size:"l"})})}}]),n}(e.Component);Y7.defaultProps={};var U7={getNetworkInfo:function(e){return oa({request:window.api.getNetwork(e),actions:Wd})},hideTooltip:ec,showTooltip:tc,changeFilter:Lr,setDataWasNotLoaded:function(){return{type:Vd}}},K7=z((function(e){var t=e.network,n=t.wasLoaded,i=t.loading,r=t.data,o=void 0===r?{}:r,a=e.schema.autorefresh;return{netWorkInfo:o,wasLoaded:n,loading:i,filter:e.settings.problemFilter,autorefresh:a}}),U7)(Y7),q7=n(46553),G7=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("g",{clipPath:"url(#a)"},e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M7.199 2H8.8a.2.2 0 0 1 .2.2c0 1.808 1.958 2.939 3.524 2.034a.199.199 0 0 1 .271.073l.802 1.388a.199.199 0 0 1-.073.272c-1.566.904-1.566 3.164 0 4.069a.199.199 0 0 1 .073.271l-.802 1.388a.199.199 0 0 1-.271.073C10.958 10.863 9 11.993 9 13.8a.2.2 0 0 1-.199.2H7.2a.199.199 0 0 1-.2-.2c0-1.808-1.958-2.938-3.524-2.034a.199.199 0 0 1-.272-.073l-.8-1.388a.199.199 0 0 1 .072-.271c1.566-.905 1.566-3.165 0-4.07a.199.199 0 0 1-.073-.271l.801-1.388a.199.199 0 0 1 .272-.073C5.042 5.138 7 4.007 7 2.2c0-.11.089-.199.199-.199ZM5.5 2.2c0-.94.76-1.7 1.699-1.7H8.8c.94 0 1.7.76 1.7 1.7a.85.85 0 0 0 1.274.735 1.699 1.699 0 0 1 2.32.622l.802 1.388c.469.813.19 1.851-.622 2.32a.85.85 0 0 0 0 1.472 1.7 1.7 0 0 1 .622 2.32l-.802 1.388a1.699 1.699 0 0 1-2.32.622.85.85 0 0 0-1.274.735c0 .939-.76 1.7-1.699 1.7H7.2a1.7 1.7 0 0 1-1.699-1.7.85.85 0 0 0-1.274-.735 1.698 1.698 0 0 1-2.32-.622l-.802-1.388a1.699 1.699 0 0 1 .622-2.32.85.85 0 0 0 0-1.471 1.699 1.699 0 0 1-.622-2.321l.801-1.388a1.699 1.699 0 0 1 2.32-.622A.85.85 0 0 0 5.5 2.2Zm4 5.8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z",clipRule:"evenodd"})),e.createElement("defs",null,e.createElement("clipPath",{id:"a"},e.createElement("path",{fill:"currentColor",d:"M0 0h16v16H0z"}))))};function $7(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16",fill:"currentColor"},xg.i,t),e.createElement("path",{d:"M5.75 6.232C5.75 3.811 6.953 3.5 8 3.5s2.25.31 2.25 2.732V7h-4.5v-.768zm6 .768v-.768C11.75 2.55 9.4 2 8 2s-3.75.55-3.75 4.232V7H3v7h10V7h-1.25z"}))}function Q7(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16",fill:"currentColor"},xg.i,t),e.createElement("path",{d:"M5.95 11.008L1.863 6.572.392 7.927l5.533 6.003 9.67-10.114-1.444-1.381z"}))}var X7,J7,e8,t8=No({en:JSON.parse('{"button_switcher":"Columns","button_apply":"Apply"}'),ru:JSON.parse('{"button_switcher":"\u041a\u043e\u043b\u043e\u043d\u043a\u0438","button_apply":"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c"}')},"TableColumnSetup"),n8=(0,ft.Ge)("table-column-setup"),i8=function(t){var n=t.switcher,i=t.renderSwitcher,r=t.disabled,o=t.popupWidth,a=t.popupPlacement,s=t.className,u=t.items,l=t.getItemTitle,c=void 0===l?function(e){return e.title}:l,d=t.sortable,h=void 0===d||d,f=t.filterable,p=void 0!==f&&f,g=t.showStatus,v=e.useState(!1),m=(0,ne.Z)(v,2),_=m[0],y=m[1],b=e.useState([]),w=(0,ne.Z)(b,2),C=w[0],k=w[1],S=e.useState([]),x=(0,ne.Z)(S,2),L=x[0],E=x[1],D=e.useState([]),N=(0,ne.Z)(D,2),M=N[0],T=N[1],I=e.useRef(null),O=function(e){return e.filter((function(e){return e.required})).map((function(e){return Object.assign(Object.assign({},e),{disabled:!0})}))},A=function(e){return e.filter((function(e){return!e.required}))};e.useEffect((function(){u!==C&&(k(u),T(O(u)),E(A(u)))}),[C,u]);var R=function(){y(!1),T(O(C)),E(A(C))},P=function(e){return 36*Math.min(5,e.length)+18},Z=function(e){return 36*e.length},F=e.useCallback((function(){r||(y(!_),T(O(C)),E(A(C)))}),[r,_,C]),j=function(e){!function(e){E(e)}(L.map((function(t){return t===e?Object.assign(Object.assign({},t),{selected:!t.selected}):t})))},H=function(t){return e.createElement("div",{className:n8("item-content")},t.required?e.createElement("div",{className:n8("lock-wrap",{visible:t.selected})},e.createElement(yo.J,{data:$7})):e.createElement("div",{className:n8("tick-wrap",{visible:t.selected})},e.createElement(yo.J,{data:Q7,className:n8("tick"),width:10,height:10})),e.createElement("div",{className:n8("title")},c(t)))},B=(0,kg.b)(F).onKeyDown,z=e.useMemo((function(){return{onClick:F,onKeyDown:B}}),[F,B]);return e.createElement("div",{className:n8(null,s)},e.createElement("div",Object.assign({className:n8("control"),ref:I},i?{}:z),(null===i||void 0===i?void 0:i(z))||n||e.createElement(_o.z,{disabled:r},e.createElement(yo.J,{data:G7}),t8("button_switcher"),function(){if(!g)return null;var t=C.reduce((function(e,t){return t.selected?e+1:e}),0),n=u.length,i="".concat(t,"/").concat(n);return e.createElement("span",{className:n8("status")},i)}())),e.createElement(J_,{anchorRef:I,placement:a||["bottom-start","bottom-end","top-start","top-end"],open:_,onClose:function(){return R()},className:n8("popup"),style:{width:o}},M.length?e.createElement(lD,{items:M,itemHeight:36,itemsHeight:Z,filterable:p,renderItem:H,itemsClassName:n8("items"),itemClassName:n8("item"),virtualized:!1}):null,function(){return e.createElement(lD,{items:L,itemHeight:36,itemsHeight:P,sortable:h,filterable:p,sortHandleAlign:"right",onSortEnd:(t=L,function(e){var n=e.oldIndex,i=e.newIndex;E(lD.moveListElement(t.slice(),n,i))}),onItemClick:j,renderItem:H,itemsClassName:n8("items"),itemClassName:n8("item"),virtualized:!1});var t}(),e.createElement("div",{className:n8("controls")},e.createElement(_o.z,{view:"action",width:"max",onClick:function(){R();var e=M.concat(L);C!==e&&t.onUpdate(e)}},t8("button_apply")))))},r8={PARTITION_ID:"partitionId",STORE_SIZE:"storeSize",WRITE_SPEED:"writeSpeed",READ_SPEED:"readSpeed",WRITE_LAGS:"writeLags",READ_LAGS:"readLags",UNCOMMITED_MESSAGES:"uncommitedMessages",UNREAD_MESSAGES:"unreadMessages",START_OFFSET:"startOffset",END_OFFSET:"endOffset",COMMITED_OFFSET:"commitedOffset",READ_SESSION_ID:"readSessionId",READER_NAME:"readerName",PARTITION_HOST:"partitionHost",CONNECTION_HOST:"connectionHost"},o8=(X7={},(0,wt.Z)(X7,r8.PARTITION_ID,"Partition ID"),(0,wt.Z)(X7,r8.STORE_SIZE,"Store size"),(0,wt.Z)(X7,r8.WRITE_SPEED,"Write speed"),(0,wt.Z)(X7,r8.READ_SPEED,"Read speed"),(0,wt.Z)(X7,r8.WRITE_LAGS,"Write lags, duration"),(0,wt.Z)(X7,r8.READ_LAGS,"Read lags, duration"),(0,wt.Z)(X7,r8.UNCOMMITED_MESSAGES,"Uncommited messages"),(0,wt.Z)(X7,r8.UNREAD_MESSAGES,"Unread messages"),(0,wt.Z)(X7,r8.START_OFFSET,"Start offset"),(0,wt.Z)(X7,r8.END_OFFSET,"End offset"),(0,wt.Z)(X7,r8.COMMITED_OFFSET,"Commited offset"),(0,wt.Z)(X7,r8.READ_SESSION_ID,"Read session ID"),(0,wt.Z)(X7,r8.READER_NAME,"Reader name"),(0,wt.Z)(X7,r8.PARTITION_HOST,"Partition host"),(0,wt.Z)(X7,r8.CONNECTION_HOST,"Connection host"),X7),a8="partitionWriteLag",s8="partitionWriteIdleTime",u8=(J7={},(0,wt.Z)(J7,a8,"write lag"),(0,wt.Z)(J7,s8,"write idle time"),J7),l8="consumerWriteLag",c8="consumerReadLag",d8="consumerReadIdleTime",h8=(e8={},(0,wt.Z)(e8,l8,"write lag"),(0,wt.Z)(e8,c8,"read lag"),(0,wt.Z)(e8,d8,"read idle time"),e8),f8=[r8.PARTITION_ID,r8.STORE_SIZE,r8.WRITE_SPEED,r8.WRITE_LAGS,r8.START_OFFSET,r8.END_OFFSET,r8.PARTITION_HOST],p8=Object.values(r8),g8=JSON.parse('{"lagsPopover.writeLags":"Write lags statistics (time format dd hh:mm:ss)","lagsPopover.readLags":"Read lags statistics (time format dd hh:mm:ss)","headers.unread":"End offset - Last read offset","headers.uncommited":"End offset - Committed offset","controls.consumerSelector":"Consumer:","controls.consumerSelector.emptyOption":"No consumer","controls.partitionSearch":"Partition ID","controls.generalSearch":"Host, Host ID, Reader, Read Session ID","table.emptyDataMessage":"No partitions match the current search","noConsumersMessage.topic":"This topic has no consumers","noConsumersMessage.stream":"This changefeed has no consumers"}'),v8=JSON.parse('{"lagsPopover.writeLags":"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043b\u0430\u0433\u043e\u0432 \u0437\u0430\u043f\u0438\u0441\u0438 (\u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u0434 \u0447\u0447:\u043c\u043c:\u0441\u0441)","lagsPopover.readLags":"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043b\u0430\u0433\u043e\u0432 \u0447\u0442\u0435\u043d\u0438\u044f (\u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u0434 \u0447\u0447:\u043c\u043c:\u0441\u0441)","headers.unread":"End offset - Last read offset","headers.uncommited":"End offset - Committed offset","controls.consumerSelector":"\u0427\u0438\u0442\u0430\u0442\u0435\u043b\u044c:","controls.consumerSelector.emptyOption":"\u041d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f","controls.partitionSearch":"Partition ID","controls.generalSearch":"Host, Host ID, Reader, Read Session ID","table.emptyDataMessage":"\u041f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0438\u0441\u043a\u0443 \u043d\u0435\u0442 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439","noConsumersMessage.topic":"\u0423 \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u043f\u0438\u043a\u0430 \u043d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439","noConsumersMessage.stream":"\u0423 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0440\u0438\u043c\u0430 \u043d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439"}'),m8="ydb-diagnostics-partitions";Va.registerKeyset(Fa.En,m8,g8),Va.registerKeyset(Fa.Ru,m8,v8);var _8=Va.keyset(m8),y8=function(t){var n=t.consumers,i=t.selectedConsumer,r=t.onSelectedConsumerChange,o=t.selectDisabled,a=t.partitions,s=t.onSearchChange,u=t.hiddenColumns,l=t.onHiddenColumnsChange,c=t.initialColumnsIds,d=(0,e.useState)(""),h=(0,ne.Z)(d,2),f=h[0],p=h[1],g=(0,e.useState)(""),v=(0,ne.Z)(g,2),m=v[0],_=v[1];(0,e.useEffect)((function(){if(a){var e=new RegExp((0,q7.escapeRegExp)(m),"i"),t=new RegExp((0,q7.escapeRegExp)(f),"i"),n=a.filter((function(n){var i=n.partitionId,r=n.readerName,o=n.readSessionId,a=n.partitionNodeId,s=n.connectionNodeId,u=n.partitionHost,l=n.connectionHost,c=e.test(i),d=[r,o,a,s,u,l].filter(Boolean).map(String),h=0===d.length||d.some((function(e){return t.test(e)}));return c&&h}));s(n)}}),[m,f,a,s]);var y=(0,e.useMemo)((function(){var e=n&&n.length?n.map((function(e){return{value:e,content:e}})):[];return[{value:"",content:_8("controls.consumerSelector.emptyOption")}].concat((0,Ct.Z)(e))}),[n]),b=(0,e.useMemo)((function(){return c.map((function(e){return{title:o8[e],selected:Boolean(!u.includes(e)),id:e,required:e===r8.PARTITION_ID}}))}),[c,u]),w=function(e){return(0,Nl.jsx)("div",{className:X8("select-option",{empty:""===e.value}),children:e.content})};return(0,Nl.jsxs)("div",{className:X8("controls"),children:[(0,Nl.jsx)(MD,{className:X8("consumer-select"),label:_8("controls.consumerSelector"),options:y,value:[i],onUpdate:function(e){r(e[0])},filterable:n&&n.length>5,disabled:o||!n||!n.length,renderOption:w,renderSelectedOption:w}),(0,Nl.jsx)(fb,{onChange:function(e){_(e)},placeholder:_8("controls.partitionSearch"),className:X8("search",{partition:!0}),value:m}),(0,Nl.jsx)(fb,{onChange:function(e){p(e)},placeholder:_8("controls.generalSearch"),className:X8("search",{general:!0}),value:f}),(0,Nl.jsx)(i8,{popupWidth:"242px",items:b,showStatus:!0,onUpdate:function(e){var t=(0,Ct.Z)(u);e.forEach((function(e){e.selected||u.includes(e.id)?e.selected&&u.includes(e.id)&&t.splice(u.indexOf(e.id)):t.push(e.id)})),l(t)}},"TableColumnSetup")]})},b8=JSON.parse('{"averageSpeed":"Average speed","perMinute":"per minute","perHour":"per hour","perDay":"per day"}'),w8=JSON.parse('{"averageSpeed":"\u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c","perMinute":"\u0437\u0430 \u043c\u0438\u043d\u0443\u0442\u0443","perHour":"\u0437\u0430 \u0447\u0430\u0441","perDay":"\u0437\u0430 \u0434\u0435\u043d\u044c"}'),C8="ydb-components-speed-multimeter";Va.registerKeyset(Fa.En,C8,b8),Va.registerKeyset(Fa.Ru,C8,w8);var k8,S8,x8=Va.keyset(C8),L8=(0,ht.Z)("speed-multimeter"),E8=function(t){var n=t.data,i=t.speedSize,r=void 0===i?"kb":i,o=t.withValue,a=void 0===o||o,s=t.withPopover,u=void 0===s||s,l=n||{},c=l.perMinute,d=void 0===c?0:c,h=l.perHour,f=void 0===h?0:h,p=l.perDay,g=void 0===p?0:p,v=[d,f,g],m=function(e){return es({value:e,size:r,withSpeedLabel:!0})},_=[{value:m(d),label:x8("perMinute")},{value:m(f),label:x8("perHour")},{value:m(g),label:x8("perDay")}],y=(0,e.useState)(d),b=(0,ne.Z)(y,2),w=b[0],C=b[1],k=(0,e.useState)(a?0:void 0),S=(0,ne.Z)(k,2),x=S[0],L=S[1],E=(0,e.useState)(),D=(0,ne.Z)(E,2),N=D[0],M=D[1],T=function(e,t){C(e[t]),L(t),M(t)},I=function(e){return x===e},O=function(e){return N===e};return(0,Nl.jsx)("div",{className:L8(),children:(0,Nl.jsxs)("div",{className:L8("content"),children:[a&&(0,Nl.jsx)("div",{className:L8("displayed-value"),children:m(w)}),(0,Nl.jsx)(Xy,{content:(0,Nl.jsxs)("div",{className:L8("popover-content"),children:[(0,Nl.jsx)("span",{className:L8("popover-header"),children:x8("averageSpeed")}),_.map((function(e,t){return(0,Nl.jsx)("span",{className:L8("popover-row",(n=I(t),n?{color:"primary"}:{color:"secondary"})),children:"".concat(e.label,": ").concat(e.value)},t);var n}))]}),className:L8("popover-container"),placement:"bottom",disabled:!u,hasArrow:!0,size:"s",children:(0,Nl.jsx)("div",{className:L8("bars"),onMouseLeave:function(){C(d),L(a?0:void 0),M(void 0)},children:function(){var e=Math.max.apply(Math,v.concat([0]))||1;return v.map((function(t,n){return(0,Nl.jsx)("div",{className:L8("bar-container",{highlighted:O(n)}),onMouseEnter:T.bind(null,v,n),children:(0,Nl.jsx)("div",{className:L8("bar",{color:I(n)?"dark":"light"}),style:{width:"".concat(100*t/e,"%")}})},n)}))}()})})]})})},D8=70,N8=54,M8=268,T8="#ADE8F5",I8="#f5be9d",O8=function(e){var t=e.width,n=e.height,i=e.transform;return(0,Nl.jsx)("path",{d:"M-".concat(t/2," 0 c0 -").concat(n,", ").concat(t," -").concat(n,", ").concat(t," 0"),fill:"none",strokeDasharray:"4,6",stroke:"#28f",strokeWidth:"1.6",transform:i})},A8=function(e){var t=e.width;return(0,Nl.jsx)("path",{fill:"none",strokeWidth:"2",d:"M0 0 h".concat(t," l-10 -5 m0 10 l10 -5")})},R8=function(){return(0,Nl.jsxs)("g",{fill:"var(--yc-color-text-primary)",fontSize:"12",children:[(0,Nl.jsx)("g",{transform:"translate(0, ".concat(27,")"),stroke:I8,children:(0,Nl.jsx)(A8,{width:203})}),(0,Nl.jsxs)("g",{transform:"translate(".concat(30,", 0)"),children:[(0,Nl.jsxs)("g",{transform:"translate(".concat(35,", ").concat(27,")"),children:[(0,Nl.jsx)(O8,{width:D8,height:15}),(0,Nl.jsx)("text",{x:"0",y:"-15",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"write lag"})})]}),(0,Nl.jsxs)("g",{transform:"translate(".concat(119,", ").concat(27,")"),children:[(0,Nl.jsx)(O8,{width:98,height:15}),(0,Nl.jsx)("text",{x:"0",y:"-15",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"write idle time"})})]})]}),(0,Nl.jsxs)("g",{transform:"translate(".concat(30,", 0)"),children:[(0,Nl.jsxs)("g",{transform:"translate(".concat(0,", ",27,")"),children:[(0,Nl.jsx)("use",{y:"-10",xlinkHref:"#check",stroke:I8}),(0,Nl.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"create time"})})]}),(0,Nl.jsxs)("g",{transform:"translate(".concat(D8,", ").concat(27,")"),children:[(0,Nl.jsx)("use",{y:"-10",xlinkHref:"#check",stroke:I8}),(0,Nl.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"write time"})})]}),(0,Nl.jsx)("g",{transform:"translate(".concat(168,", ").concat(27,")"),children:(0,Nl.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"now"})})})]})]})},P8=function(){return(0,Nl.jsxs)("g",{fill:"var(--yc-color-text-primary)",fontSize:"12",children:[(0,Nl.jsx)("g",{transform:"translate(0, ".concat(27,")"),stroke:T8,children:(0,Nl.jsx)(A8,{width:M8})}),(0,Nl.jsxs)("g",{transform:"translate(".concat(30,", 0)"),children:[(0,Nl.jsxs)("g",{transform:"translate(".concat(105,", ").concat(27,")"),children:[(0,Nl.jsx)(O8,{width:D8,height:15}),(0,Nl.jsx)("text",{x:"0",y:"-15",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"read lag"})})]}),(0,Nl.jsxs)("g",{transform:"translate(".concat(35,", ").concat(27,")"),children:[(0,Nl.jsx)(O8,{width:D8,height:15}),(0,Nl.jsx)("text",{x:"0",y:"-15",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"write lag"})})]}),(0,Nl.jsxs)("g",{transform:"translate(".concat(182,", ").concat(27,")"),children:[(0,Nl.jsx)(O8,{width:91,height:15}),(0,Nl.jsx)("text",{x:"0",y:"-15",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"read idle time"})})]})]}),(0,Nl.jsxs)("g",{transform:"translate(".concat(30,", ").concat(27,")"),children:[(0,Nl.jsxs)("g",{transform:"translate(".concat(0,", 0)"),children:[(0,Nl.jsx)("use",{y:"-10",xlinkHref:"#check",stroke:T8}),(0,Nl.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"create time"})})]}),(0,Nl.jsxs)("g",{transform:"translate(".concat(D8,", 0)"),children:[(0,Nl.jsx)("use",{y:"-10",xlinkHref:"#check",stroke:T8}),(0,Nl.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"write time"})})]}),(0,Nl.jsxs)("g",{transform:"translate(".concat(140,", 0)"),children:[(0,Nl.jsx)("use",{x:"-2",y:"-10",xlinkHref:"#check",stroke:T8}),(0,Nl.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"read time"})})]}),(0,Nl.jsx)("g",{transform:"translate(".concat(224,", 0)"),children:(0,Nl.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Nl.jsx)("tspan",{x:"0",dy:"0",children:"now"})})})]})]})},Z8=function(e){var t=e.id,n=e.fill;return(0,Nl.jsx)("pattern",{id:t,x:"0",y:"0",width:"8",height:"8",patternUnits:"userSpaceOnUse",children:(0,Nl.jsx)("path",{d:"M0 5L5 0H8L0 8V5M5 8L8 5V8Z",fill:n})})},F8=function(){return(0,Nl.jsxs)("svg",{className:"paint",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 ".concat(M8," ").concat(N8),width:M8,height:N8,children:[(0,Nl.jsxs)("defs",{children:[(0,Nl.jsx)("g",{id:"check",children:(0,Nl.jsx)("path",{d:"M0 3 v14",strokeWidth:"2"})}),(0,Nl.jsx)(Z8,{id:"latest-read",fill:T8}),(0,Nl.jsx)(Z8,{id:"latest-write",fill:I8})]}),(0,Nl.jsx)(R8,{})]})},j8=function(){return(0,Nl.jsxs)("svg",{className:"paint",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 ".concat(M8," ").concat(N8),width:M8,height:N8,children:[(0,Nl.jsxs)("defs",{children:[(0,Nl.jsx)("g",{id:"check",children:(0,Nl.jsx)("path",{d:"M0 3 v14",strokeWidth:"2"})}),(0,Nl.jsx)(Z8,{id:"latest-read",fill:T8}),(0,Nl.jsx)(Z8,{id:"latest-write",fill:I8})]}),(0,Nl.jsx)(P8,{})]})},H8=(0,ht.Z)("ydb-lag-popover-content"),B8=function(e){var t=e.text,n=e.type;return(0,Nl.jsxs)("div",{className:H8({type:n}),children:[(0,Nl.jsx)("div",{className:H8("text"),children:t}),(0,Nl.jsx)("div",{children:"read"===n?(0,Nl.jsx)(j8,{}):(0,Nl.jsx)(F8,{})})]})},z8=(0,ht.Z)("ydb-diagnostics-partitions-columns-header"),W8=function(e){var t=e.title;return(0,Nl.jsx)("div",{className:z8("multiline"),children:t})},V8=function(){return(0,Nl.jsx)("div",{className:z8("read-session"),children:o8[r8.READ_SESSION_ID]})},Y8=function(){return(0,Nl.jsx)(TF,{className:z8("lags"),text:o8[r8.WRITE_LAGS],popoverContent:(0,Nl.jsx)(B8,{text:_8("lagsPopover.writeLags"),type:"write"})})},U8=function(){return(0,Nl.jsx)(TF,{className:z8("lags"),text:o8[r8.READ_LAGS],popoverContent:(0,Nl.jsx)(B8,{text:_8("lagsPopover.readLags"),type:"read"})})},K8=function(){return(0,Nl.jsx)(TF,{className:z8("messages"),text:o8[r8.UNREAD_MESSAGES],popoverContent:(0,Nl.jsx)("div",{className:z8("messages-popover-content"),children:_8("headers.unread")})})},q8=function(){return(0,Nl.jsx)(TF,{className:z8("messages"),text:o8[r8.UNCOMMITED_MESSAGES],popoverContent:(0,Nl.jsx)("div",{className:z8("messages-popover-content"),children:_8("headers.uncommited")})})},G8=(0,ht.Z)("ydb-diagnostics-partitions-columns"),$8=[{name:r8.PARTITION_ID,header:(0,Nl.jsx)(W8,{title:o8[r8.PARTITION_ID]}),sortAccessor:function(e){return pr(e.partitionId)&&Number(e.partitionId)},align:pi.LEFT,render:function(e){return e.row.partitionId}},{name:r8.STORE_SIZE,header:(0,Nl.jsx)(W8,{title:o8[r8.STORE_SIZE]}),align:pi.RIGHT,render:function(e){var t=e.row;return os(t.storeSize)}},{name:r8.WRITE_SPEED,header:o8[r8.WRITE_SPEED],align:pi.LEFT,sortAccessor:function(e){return e.writeSpeed.perMinute},render:function(e){var t=e.row;return(0,Nl.jsx)(E8,{data:t.writeSpeed})}},{name:r8.READ_SPEED,header:o8[r8.READ_SPEED],align:pi.LEFT,sortAccessor:function(e){var t;return null===(t=e.readSpeed)||void 0===t?void 0:t.perMinute},render:function(e){var t=e.row;return(0,Nl.jsx)(E8,{data:t.readSpeed})}},{name:r8.WRITE_LAGS,header:(0,Nl.jsx)(Y8,{}),className:G8("lags-header"),sub:[{name:a8,header:u8[a8],align:pi.RIGHT,render:function(e){var t=e.row;return cs(t.partitionWriteLag)}},{name:s8,header:u8[s8],align:pi.RIGHT,render:function(e){var t=e.row;return cs(t.partitionWriteIdleTime)}}]},{name:r8.READ_LAGS,header:(0,Nl.jsx)(U8,{}),className:G8("lags-header"),sub:[{name:l8,header:h8[l8],align:pi.RIGHT,render:function(e){var t=e.row;return cs(t.consumerWriteLag)}},{name:c8,header:h8[c8],align:pi.RIGHT,render:function(e){var t=e.row;return cs(t.consumerReadLag)}},{name:d8,header:h8[d8],align:pi.RIGHT,render:function(e){var t=e.row;return cs(t.consumerReadIdleTime)}}]},{name:r8.UNCOMMITED_MESSAGES,header:(0,Nl.jsx)(q8,{}),align:pi.RIGHT,render:function(e){return e.row.uncommitedMessages}},{name:r8.UNREAD_MESSAGES,header:(0,Nl.jsx)(K8,{}),align:pi.RIGHT,render:function(e){return e.row.unreadMessages}},{name:r8.START_OFFSET,header:(0,Nl.jsx)(W8,{title:o8[r8.START_OFFSET]}),sortAccessor:function(e){return pr(e.startOffset)&&Number(e.startOffset)},align:pi.RIGHT,render:function(e){return e.row.startOffset}},{name:r8.END_OFFSET,header:(0,Nl.jsx)(W8,{title:o8[r8.END_OFFSET]}),sortAccessor:function(e){return pr(e.endOffset)&&Number(e.endOffset)},align:pi.RIGHT,render:function(e){return e.row.endOffset}},{name:r8.COMMITED_OFFSET,header:(0,Nl.jsx)(W8,{title:o8[r8.COMMITED_OFFSET]}),sortAccessor:function(e){return pr(e.commitedOffset)&&Number(e.commitedOffset)},align:pi.RIGHT,render:function(e){return e.row.commitedOffset}},{name:r8.READ_SESSION_ID,header:(0,Nl.jsx)(V8,{}),align:pi.LEFT,render:function(e){var t=e.row;return t.readSessionId?(0,Nl.jsx)(hy,{name:t.readSessionId,showStatus:!1,hasClipboardButton:!0,className:G8("string-with-copy")}):"\u2013"}},{name:r8.READER_NAME,header:(0,Nl.jsx)(W8,{title:o8[r8.READER_NAME]}),align:pi.LEFT,render:function(e){var t=e.row;return t.readerName?(0,Nl.jsx)(hy,{name:t.readerName,showStatus:!1,hasClipboardButton:!0,className:G8("string-with-copy")}):"\u2013"}},{name:r8.PARTITION_HOST,header:(0,Nl.jsx)(W8,{title:o8[r8.PARTITION_HOST]}),align:pi.LEFT,render:function(e){var t=e.row;return t.partitionNodeId&&t.partitionHost?(0,Nl.jsx)(hy,{name:t.partitionHost,path:nM(t.partitionNodeId),showStatus:!1,hasClipboardButton:!0,className:G8("string-with-copy")}):"\u2013"}},{name:r8.CONNECTION_HOST,header:(0,Nl.jsx)(W8,{title:o8[r8.CONNECTION_HOST]}),align:pi.LEFT,render:function(e){var t=e.row;return t.connectionNodeId&&t.connectionHost?(0,Nl.jsx)(hy,{name:t.connectionHost,path:nM(t.connectionNodeId),showStatus:!1,hasClipboardButton:!0,className:G8("string-with-copy")}):"\u2013"}}],Q8=$8.filter((function(e){return f8.includes(e.name)})),X8=(0,ht.Z)("ydb-diagnostics-partitions"),J8=function(t){var n=t.path,i=K(),r=(0,e.useState)(n),o=(0,ne.Z)(r,2),a=o[0],s=o[1],u=(0,e.useState)([]),l=(0,ne.Z)(u,2),c=l[0],d=l[1],h=ev(Th),f=ev(Df),p=ev((function(e){return e.schema})).autorefresh,g=ev((function(e){return e.partitions})),v=g.loading,m=g.wasLoaded,_=g.error,y=g.partitions,b=g.selectedConsumer,w=ev((function(e){return e.topic})),C=w.loading,k=w.wasLoaded,S=w.error,x=ev((function(e){return e.nodesList})),L=x.loading,E=x.wasLoaded,D=x.error,N=tv(Yi),M=(0,ne.Z)(N,2),T=M[0],I=M[1],O=function(t){var n=(0,e.useState)([]),i=(0,ne.Z)(n,2),r=i[0],o=i[1],a=(0,e.useState)([]),s=(0,ne.Z)(a,2),u=s[0],l=s[1];return(0,e.useEffect)((function(){t?(o($8),l(p8)):(o(Q8),l(f8))}),[t]),[r,u]}(b),A=(0,ne.Z)(O,2),R=A[0],P=A[1];(0,e.useEffect)((function(){i({type:Lh}),i(Dh()),i(Ef()),i(Nh(n)),s(n)}),[i,n]);var Z=(0,e.useMemo)((function(){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return null===e||void 0===e?void 0:e.map((function(e){var n=e.partitionNodeId&&t?t.get(e.partitionNodeId):void 0,i=e.connectionNodeId&&t?t.get(e.connectionNodeId):void 0;return Rt(Rt({},e),{},{partitionHost:n,connectionHost:i})}))}(y,f)}),[y,f]),F=(0,e.useCallback)((function(e){e||i({type:Hh}),k&&a&&i(function(e,t){return oa(t?{request:window.api.getConsumer({path:e,consumer:t},{concurrentId:"getPartitions"}),actions:Fh,dataHandler:function(e){var t=e.partitions;return Zh(t)}}:{request:window.api.getTopic({path:e},{concurrentId:"getPartitions"}),actions:Fh,dataHandler:function(e){var t=e.partitions;return Ph(t)}})}(a,b))}),[i,b,a,k]);Jg(F,[F],p),(0,e.useEffect)((function(){var e=k&&!h,t=b&&h&&!h.includes(b);(e||t)&&i(zh(""))}),[i,k,b,h]);var j=(0,e.useMemo)((function(){return R.filter((function(e){return!T.includes(e.name)}))}),[R,T]),H=C&&!k||L&&!E||v&&!m,B=D||S||_;return(0,Nl.jsxs)("div",{className:X8(),children:[(0,Nl.jsx)(y8,{consumers:h,selectedConsumer:b,onSelectedConsumerChange:function(e){i(zh(e))},selectDisabled:Boolean(B)||H,partitions:Z,onSearchChange:d,hiddenColumns:T,onHiddenColumnsChange:function(e){I(e)},initialColumnsIds:P}),(0,Nl.jsx)("div",{className:X8("table-wrapper"),children:(0,Nl.jsx)("div",{className:X8("table-content"),children:H?(0,Nl.jsx)(mb,{className:X8("loader")}):B?(0,Nl.jsx)(Sb,{error:B}):(0,Nl.jsx)(pi,{theme:"yandex-cloud",data:c,columns:j,settings:Bi,emptyDataMessage:_8("table.emptyDataMessage")})})})]})},e9=(0,ht.Z)("ydb-diagnostics-consumers-topic-stats"),t9=function(e){var t=e.data||{},n=t.writeSpeed,i=t.partitionsWriteLag,r=t.partitionsIdleTime,o=[{label:"Write speed",value:(0,Nl.jsx)(E8,{data:n})},{label:"Write lag",value:cs(i||0)},{label:"Write idle time",value:cs(r||0)}];return(0,Nl.jsx)("div",{className:e9("wrapper"),children:o.map((function(e,t){return(0,Nl.jsxs)("div",{className:e9("item"),children:[(0,Nl.jsx)("div",{className:e9("label"),children:e.label}),(0,Nl.jsx)("div",{className:e9("value"),children:e.value})]},t)}))})},n9="consumer",i9="readSpeed",r9="readLags",o9=(k8={},(0,wt.Z)(k8,n9,"Consumer"),(0,wt.Z)(k8,i9,"Read speed"),(0,wt.Z)(k8,r9,"Read lags, duration"),k8),a9="writeLag",s9="readLag",u9="readIdleTime",l9=(S8={},(0,wt.Z)(S8,a9,"write lag"),(0,wt.Z)(S8,s9,"read lag"),(0,wt.Z)(S8,u9,"read idle time"),S8),c9=JSON.parse('{"noConsumersMessage.topic":"This topic has no consumers","noConsumersMessage.stream":"This changefeed has no consumers","lagsPopover.readLags":"Read lags statistics, maximum among all consumer partitions (time format dd hh:mm:ss)","table.emptyDataMessage":"No consumers match the current search","controls.search":"Consumer"}'),d9=JSON.parse('{"noConsumersMessage.topic":"\u0423 \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u043f\u0438\u043a\u0430 \u043d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439","noConsumersMessage.stream":"\u0423 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0440\u0438\u043c\u0430 \u043d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439","lagsPopover.readLags":"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043b\u0430\u0433\u043e\u0432 \u0447\u0442\u0435\u043d\u0438\u044f, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f (\u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u0434 \u0447\u0447:\u043c\u043c:\u0441\u0441)","table.emptyDataMessage":"\u041f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0438\u0441\u043a\u0443 \u043d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439","controls.search":"Consumer"}'),h9="ydb-diagnostics-consumers";Va.registerKeyset(Fa.En,h9,c9),Va.registerKeyset(Fa.Ru,h9,d9);var f9=Va.keyset(h9),p9=(0,ht.Z)("ydb-diagnostics-consumers-columns-header"),g9=function(){return(0,Nl.jsx)(TF,{className:p9("lags"),text:o9[r9],popoverContent:(0,Nl.jsx)(B8,{text:f9("lagsPopover.readLags"),type:"read"})})},v9=(0,ht.Z)("ydb-diagnostics-consumers-columns"),m9=[{name:n9,header:o9[n9],align:pi.LEFT,render:function(e){var t,n=e.row;if(!n.name)return"\u2013";var i=Zt().parse(location.search,{ignoreQueryPrefix:!0});return(0,Nl.jsx)(vv,{to:_g(bg.tenant,void 0,Rt(Rt({},i),{},(t={},(0,wt.Z)(t,Eb.diagnosticsTab,Pn.partitions),(0,wt.Z)(t,"selectedConsumer",n.name),t))),children:n.name})}},{name:i9,header:o9[i9],align:pi.RIGHT,sortAccessor:function(e){return e.readSpeed.perMinute},render:function(e){var t=e.row;return(0,Nl.jsx)(E8,{data:t.readSpeed})}},{name:r9,header:(0,Nl.jsx)(g9,{}),className:v9("lags-header"),sub:[{name:a9,header:l9[a9],align:pi.RIGHT,render:function(e){var t=e.row;return cs(t.writeLag)}},{name:s9,header:l9[s9],align:pi.RIGHT,render:function(e){var t=e.row;return cs(t.readLag)}},{name:u9,header:l9[u9],align:pi.RIGHT,render:function(e){var t=e.row;return cs(t.readIdleTime)}}]}],_9=(0,ht.Z)("ydb-diagnostics-consumers"),y9=function(t){var n=t.path,i=function(e){return e===vc.EPathTypeCdcStream}(t.type),r=K(),o=(0,e.useState)(""),a=(0,ne.Z)(o,2),s=a[0],u=a[1],l=ev((function(e){return e.schema})).autorefresh,c=ev((function(e){return e.topic})),d=c.loading,h=c.wasLoaded,f=c.error,p=ev((function(e){return Oh(e)})),g=ev((function(e){return Ih(e)})),v=(0,e.useCallback)((function(e){e||r(Dh),r(Nh(n))}),[r,n]);Jg(v,[v],l);var m=(0,e.useMemo)((function(){if(!p)return[];var e=new RegExp((0,q7.escapeRegExp)(s),"i");return p.filter((function(t){return e.test(String(t.name))}))}),[p,s]);return d&&!h?(0,Nl.jsx)(jI,{size:"m"}):f?(0,Nl.jsx)(Sb,{error:f}):p&&p.length?(0,Nl.jsxs)("div",{className:_9(),children:[(0,Nl.jsxs)("div",{className:_9("controls"),children:[(0,Nl.jsx)(fb,{onChange:function(e){u(e)},placeholder:f9("controls.search"),className:_9("search"),value:s}),g&&(0,Nl.jsx)(t9,{data:g})]}),(0,Nl.jsx)("div",{className:_9("table-wrapper"),children:(0,Nl.jsx)("div",{className:_9("table-content"),children:(0,Nl.jsx)(pi,{theme:"yandex-cloud",data:m,columns:m9,settings:Bi,emptyDataMessage:f9("table.emptyDataMessage")})})})]}):(0,Nl.jsx)("div",{children:f9("noConsumersMessage.".concat(i?"stream":"topic"))})},b9=(0,ht.Z)("date-range"),w9=function(e){if(e&&!isNaN(e)){var t=e-60*(new Date).getTimezoneOffset()*1e3;return new Date(t).toISOString().substring(0,"yyyy-MM-DDThh:mm".length)}},C9=function(e){var t=e.from,n=e.to,i=e.className,r=e.onChange,o=w9(t),a=w9(n);return(0,Nl.jsxs)("div",{className:b9(null,i),children:[(0,Nl.jsx)("input",{type:"datetime-local",value:o||"",max:a,onChange:function(e){var t=e.target.value,i=t?new Date(t).getTime():void 0;i&&n&&i>n&&(i=n),null===r||void 0===r||r({from:i,to:n})},className:b9("input")}),"\u2014",(0,Nl.jsx)("input",{type:"datetime-local",min:o,value:a||"",onChange:function(e){var n=e.target.value,i=n?new Date(n).getTime():void 0;t&&i&&t>i&&(i=t),null===r||void 0===r||r({from:t,to:i})},className:b9("input")})]})},k9={CPUCores:"CPUCores",DataSize:"DataSize",InFlightTxCount:"InFlightTxCount"},S9={CPUTimeUs:"CPUTimeUs",EndTime:"EndTime",ReadRows:"ReadRows",ReadBytes:"ReadBytes",UserSID:"UserSID"},x9=n(64603),L9=n.n(x9),E9=(0,ht.Z)("kv-top-queries"),D9="QueryText",N9="EndTime",M9="ReadRows",T9="ReadBytes",I9="UserSID",O9="OneLineQueryText",A9="QueryHash",R9={name:"CPUTimeUs",sortAccessor:function(e){return Number(e.CPUTimeUs)},width:120,align:pi.RIGHT,sortable:!1},P9={name:D9,sortAccessor:function(e){return Number(e.CPUTimeUs)},render:function(e){var t,n=e.row;return(0,Nl.jsx)("div",{className:E9("query"),children:(0,Nl.jsx)(TZ,{value:null===(t=n.QueryText)||void 0===t?void 0:t.toString(),maxQueryHeight:OZ})})},sortable:!1},Z9={name:N9,render:function(e){var t=e.row;return _s(new Date(t.EndTime).getTime())},align:pi.RIGHT},F9={name:M9,render:function(e){var t=e.row;return fs(t.ReadRows)},sortAccessor:function(e){return Number(e.ReadRows)},align:pi.RIGHT},j9={name:T9,render:function(e){var t=e.row;return fs(t.ReadBytes)},sortAccessor:function(e){return Number(e.ReadBytes)},align:pi.RIGHT},H9={name:I9,render:function(e){var t=e.row;return(0,Nl.jsx)("div",{className:E9("user-sid"),children:t.UserSID||"\u2013"})},sortAccessor:function(e){return String(e.UserSID)},align:pi.LEFT},B9={name:O9,header:"QueryText",render:function(e){var t,n=e.row;return(0,Nl.jsx)(IZ,{value:null===(t=n.QueryText)||void 0===t?void 0:t.toString()})},sortable:!1},z9={name:A9,render:function(e){var t,n=e.row;return t=String(n.QueryText),(L9().str(t)>>>0).toString(16).toUpperCase().padStart(8,"0")},width:130,sortable:!1},W9=function(){return[z9,B9,R9]},V9=JSON.parse('{"no-data":"No data","filter.text.placeholder":"Search by query text..."}'),Y9=JSON.parse('{"no-data":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445","filter.text.placeholder":"\u0418\u0441\u043a\u0430\u0442\u044c \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0430..."}'),U9="ydb-diagnostics-top-queries";Va.registerKeyset(Fa.En,U9,V9),Va.registerKeyset(Fa.Ru,U9,Y9);var K9=Va.keyset(U9),q9=(0,ht.Z)("kv-top-queries"),G9=function(t){var n=t.path,i=t.type,r=K(),o=ct(),a=lt(),s=ev((function(e){return e.schema})).autorefresh,u=ev((function(e){return e.executeTopQueries})),l=u.loading,c=u.wasLoaded,d=u.error,h=u.data,f=(void 0===h?{}:h).result,p=void 0===f?void 0:f,g=u.filters,v=[R9,P9,Z9,F9,j9,H9],m=(0,e.useRef)(!1),_=(0,e.useState)(g),y=(0,ne.Z)(_,2),b=y[0],w=y[1];(0,e.useEffect)((function(){r(function(e){return{type:zf,filters:e}}(b))}),[r,b]);var C=v.map((function(e){return Rt(Rt({},e),{},{sortable:(t=e.name,Object.values(S9).includes(t))});var t})),k=function(e){var t,n,i=null===e||void 0===e||null===(t=e.result)||void 0===t||null===(n=t[0])||void 0===n?void 0:n.IntervalEnd;if(i){var r=new Date(i).getTime(),o=new Date(r-1e3*_i).getTime();w((function(e){return e.from||e.to?e:(m.current=!0,Rt(Rt({},e),{},{from:o,to:r}))}))}};Jg((function(e){m.current?m.current=!1:(e||r({type:Bf,data:{wasLoaded:!1,data:void 0}}),r(function(e){var t=e.database,n=e.filters;return oa({request:window.api.sendQuery({schema:"modern",query:Vf(t,n),database:t,action:"execute-scan"},{concurrentId:"executeTopQueries"}),actions:Hf,dataHandler:rr})}({database:n,filters:b})).then(k))}),[r,b,n],s);var S=(0,e.useCallback)((function(e){var t,n=e.QueryText;r(rf({input:n}));var i=vg(o),s=Mb(Rt(Rt({},i),{},(t={},(0,wt.Z)(t,On,An.query),(0,wt.Z)(t,Eb.queryTab,Rn.newQuery),t)));a.push(s)}),[r,a,o]);return(0,Nl.jsxs)("div",{className:q9(),children:[(0,Nl.jsxs)("div",{className:q9("controls"),children:[(0,Nl.jsx)(fb,{value:b.text,onChange:function(e){w((function(t){return Rt(Rt({},t),{},{text:e})}))},placeholder:K9("filter.text.placeholder"),className:q9("search")}),(0,Nl.jsx)(C9,{from:b.from,to:b.to,onChange:function(e){w((function(t){return Rt(Rt({},t),e)}))}})]}),l&&!c?(0,Nl.jsx)("div",{className:q9("loader"),children:(0,Nl.jsx)(KE,{size:"m"})}):d&&!d.isCancelled?(0,Nl.jsx)("div",{className:"error",children:sr(d)}):!p||ld(i)?K9("no-data"):(0,Nl.jsx)("div",{className:q9("table"),children:(0,Nl.jsx)(pi,{columns:C,data:p,settings:AZ,onRowClick:S,theme:"yandex-cloud"})})]})},$9=JSON.parse('{"no-data":"No data","filters.mode.immediate":"Immediate","filters.mode.history":"Historical","description":"Historical data only tracks shards with CPU load over 70%"}'),Q9=JSON.parse('{"no-data":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445","filters.mode.immediate":"\u041c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0435","filters.mode.history":"\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435","description":"\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0448\u0430\u0440\u0434\u0430\u0445 \u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 CPU \u0432\u044b\u0448\u0435 70%"}'),X9="ydb-diagnostics-top-shards";Va.registerKeyset(Fa.En,X9,$9),Va.registerKeyset(Fa.Ru,X9,Q9);var J9=Va.keyset(X9),eee=function(e){var t=e.value,n=e.onChange,i=e.className,r=t.mode===vp.Immediate?void 0:t.from,o=t.mode===vp.Immediate?void 0:t.to;return(0,Nl.jsxs)("div",{className:_ee("filters",i),children:[(0,Nl.jsxs)(Dy,{value:t.mode,onUpdate:function(e){if(!function(e,t){return Object.values(e).includes(t)}(vp,e)){var t=Object.values(vp).join(", ");throw new Error('Unexpected TopShards mode "'.concat(e,'". Should be one of: ').concat(t))}n({mode:e})},children:[(0,Nl.jsx)(Dy.Option,{value:vp.Immediate,children:J9("filters.mode.immediate")}),(0,Nl.jsx)(Dy.Option,{value:vp.History,children:J9("filters.mode.history")})]}),(0,Nl.jsx)(C9,{from:r,to:o,onChange:function(e){n(Rt({mode:vp.History},e))}})]})},tee=ws(60,80,["success","warning","danger"]),nee=["path","location"];function iee(e){var t=e.path,n=e.location,i=nn(e,nee),r=vg(n),o=yg(Rt(Rt({},r),{},{schema:t}));return(0,Nl.jsx)(yv,Rt({view:"normal",href:o},i))}var ree="TabletId",oee="CPUCores",aee="DataSize",see="Path",uee="NodeId",lee="InFlightTxCount",cee={TabletId:"TabletId",CPUCores:"CPUCores",DataSize:"DataSize (B)",Path:"Path",NodeId:"NodeId",PeakTime:"PeakTime",InFlightTxCount:"InFlightTxCount",IntervalEnd:"IntervalEnd"};var dee=function(e,t){return{name:see,header:cee[see],render:function(n){var i=n.row;return(0,Nl.jsx)(iee,{path:e+i.Path,location:t,children:i.Path})},sortable:!1}},hee={name:oee,header:cee[oee],render:function(e){var t,n=e.row;return t=n.CPUCores||0,"".concat(ps(100*Number(t),2),"%")},align:pi.RIGHT},fee={name:aee,header:cee[aee],render:function(e){var t=e.row;return fs(t.DataSize)},align:pi.RIGHT},pee={name:ree,header:cee[ree],render:function(e){var t=e.row;return t.TabletId?(0,Nl.jsx)(vv,{to:_g(bg.tablet,{id:t.TabletId}),children:t.TabletId}):"\u2013"},sortable:!1},gee={name:uee,header:cee[uee],render:function(e){var t=e.row;return t.NodeId?(0,Nl.jsx)(vv,{to:nM(t.NodeId),children:t.NodeId}):"\u2013"},align:pi.RIGHT},vee={name:oee,header:cee[oee],render:function(e){var t=e.row;return(0,Nl.jsx)($N,{value:ps(100*Number(t.CPUCores),2),theme:tee(100*Number(t.CPUCores))})},align:pi.RIGHT,sortable:!1},mee={name:lee,header:cee[lee],render:function(e){var t=e.row;return fs(t.InFlightTxCount)},align:pi.RIGHT},_ee=(0,ht.Z)("top-shards"),yee=Rt(Rt({},Bi),{},{dynamicRender:!1,externalSort:!0,disableSortReset:!0,defaultOrder:pi.DESCENDING}),bee="CPUCores",wee="PeakTime",Cee="IntervalEnd";function kee(e){return e?_s(new Date(e).getTime()):"\u2013"}function See(e){return e.to=Date.now(),e.from=e.to-1e3*_i,e}var xee=function(t){var n=t.tenantPath,i=t.type,r=K(),o=ct(),a=ev((function(e){return e.schema})),s=a.autorefresh,u=a.currentSchemaPath,l=ev((function(e){return e.shardsWorkload})),c=l.loading,d=l.data,h=(void 0===d?{}:d).result,f=void 0===h?void 0:h,p=l.filters,g=l.error,v=l.wasLoaded,m=(0,e.useState)((function(){var e=Rt({},p);return e.mode||(e.mode=vp.Immediate),e.from||e.to||See(e),e})),_=(0,ne.Z)(m,2),y=_[0],b=_[1],w=(0,e.useState)(bee),C=(0,ne.Z)(w,2),k=C[0],S=C[1];Jg((function(){var e;r(function(e){var t=e.database,n=e.path,i=void 0===n?"":n,r=e.sortOrder,o=e.filters;try{return oa({request:window.api.sendQuery({schema:"modern",query:(null===o||void 0===o?void 0:o.mode)===vp.Immediate?xp(i,r,t):Sp(i,o,r,t),database:t,action:"execute-scan"},{concurrentId:"shardsWorkload"}),actions:yp,dataHandler:rr})}catch(g){return{type:yp.FAILURE,error:g}}}({database:n,path:u,sortOrder:(e=k,e?e.split(",").map((function(e){return{columnId:e,order:"DESC"}})):void 0),filters:y}))}),[r,n,u,k,y],s),(0,e.useEffect)((function(){r({type:bp,data:{wasLoaded:!1,data:void 0}})}),[r,u,n,y]);var x=function(e){S(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(Array.isArray(e)?e:[e]).map((function(e){return e.columnId})).join(",")}(e))},L=(0,e.useMemo)((function(){var e=function(e,t){return[dee(e,t),hee,fee,pee,gee,mee]}(n,o),t=e.map((function(e){return Rt(Rt({},e),{},{sortable:(t=e.name,Object.values(k9).includes(t))});var t}));return y.mode===vp.History&&(t.splice(5,0,{name:wee,render:function(e){return kee(e.row.PeakTime)},sortable:!1}),t.push({name:Cee,render:function(e){return kee(e.row.IntervalEnd)}})),t}),[y.mode,n,o]);return(0,Nl.jsxs)("div",{className:_ee(),children:[(0,Nl.jsx)(eee,{value:y,onChange:function(e){var t=Rt({},e);if(!p.from&&!p.to&&!e.from&&!e.to)switch(e.mode){case vp.Immediate:t.from=t.to=void 0;break;case vp.History:See(t)}r(function(e){return{type:wp,filters:e}}(e)),b((function(e){return Rt(Rt({},e),t)}))}}),y.mode===vp.History&&(0,Nl.jsx)("div",{children:J9("description")}),function(){return c&&!v?(0,Nl.jsx)("div",{className:_ee("loader"),children:(0,Nl.jsx)(KE,{size:"m"})}):g&&!g.isCancelled?(0,Nl.jsx)("div",{className:"error",children:sr(g)}):!f||ld(i)?J9("no-data"):(0,Nl.jsx)("div",{className:_ee("table"),children:(0,Nl.jsx)(pi,{columns:L,data:f,settings:yee,theme:"yandex-cloud",onSort:x,sortOrder:(e=k,e?e.split(",").map((function(e){return{columnId:e,order:pi.DESCENDING}})):void 0)})});var e}()]})},Lee=new Set(["Type","State","DataSize","KeyColumnNames","DataColumnNames"]),Eee=function(e){var t,n=e.data,i=_R(null===n||void 0===n?void 0:n.PathDescription);if(!n)return(0,Nl.jsxs)("div",{className:"error",children:["No ",i," data"]});var r,o=null===(t=n.PathDescription)||void 0===t?void 0:t.TableIndex,a=[];for(r in o)Lee.has(r)&&a.push($A(r,null===o||void 0===o?void 0:o[r]));return(0,Nl.jsx)(Tl,{title:i,info:a})},Dee=function(e){var t,n=null===e||void 0===e||null===(t=e.PathDescription)||void 0===t?void 0:t.PersQueueGroup;if(!n)return[];var i=n.Partitions,r=void 0===i?[]:i,o=n.PQTabletConfig,a=void 0===o?{PartitionConfig:{LifetimeSeconds:0}}:o,s=a.Codecs,u=a.MeteringMode,l=a.PartitionConfig,c=l.WriteSpeedInBytesPerSecond,d=l.StorageLimitBytes,h=Rl(XA,{Partitions:r,PQTabletConfig:a}),f=Rl(eR,{StorageLimitBytes:d,WriteSpeedInBytesPerSecond:c}),p=Rl(JA,{Codecs:s,MeteringMode:u});return[].concat((0,Ct.Z)(h),(0,Ct.Z)(f),(0,Ct.Z)(p))},Nee=JSON.parse('{"writeLagPopover":"Write lag, maximum among all topic partitions","writeIdleTimePopover":"Write idle time, maximum among all topic partitions"}'),Mee=JSON.parse('{"writeLagPopover":"\u041b\u0430\u0433 \u0437\u0430\u043f\u0438\u0441\u0438, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0442\u043e\u043f\u0438\u043a\u0430","writeIdleTimePopover":"\u0412\u0440\u0435\u043c\u044f \u0431\u0435\u0437 \u0437\u0430\u043f\u0438\u0441\u0438, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0442\u043e\u043f\u0438\u043a\u0430"}'),Tee="ydb-diagnostics-overview-topic-stats";Va.registerKeyset(Fa.En,Tee,Nee),Va.registerKeyset(Fa.Ru,Tee,Mee);var Iee=Va.keyset(Tee),Oee=(0,ht.Z)("ydb-overview-topic-stats"),Aee=function(e){return[{label:"Store size",value:os(e.storeSize)},{label:(0,Nl.jsx)(TF,{text:"Write idle time",popoverContent:(0,Nl.jsx)(B8,{text:Iee("writeIdleTimePopover"),type:"write"})}),value:bh(e.partitionsIdleTime)},{label:(0,Nl.jsx)(TF,{text:"Write lag",popoverContent:(0,Nl.jsx)(B8,{text:Iee("writeLagPopover"),type:"write"})}),value:bh(e.partitionsWriteLag)},{label:"Average write speed",value:(0,Nl.jsx)(E8,{data:e.writeSpeed,withValue:!1})}]},Ree=function(e){var t=e.writeSpeed;return[{label:"per minute",value:as(t.perMinute)},{label:"per hour",value:as(t.perHour)},{label:"per day",value:as(t.perDay)}]},Pee=function(){var e=ev((function(e){return e.topic})),t=e.error,n=e.loading,i=e.wasLoaded,r=ev(Ih);return n&&!i?(0,Nl.jsx)("div",{className:Oee(),children:(0,Nl.jsx)(jI,{size:"s"})}):t||!r?(0,Nl.jsxs)("div",{className:Oee(),children:[(0,Nl.jsx)("div",{className:Oee("title"),children:"Stats"}),(0,Nl.jsx)(Sb,{error:t})]}):(0,Nl.jsxs)("div",{className:Oee(),children:[(0,Nl.jsx)("div",{className:Oee("title"),children:"Stats"}),(0,Nl.jsx)("div",{className:Oee("info"),children:(0,Nl.jsx)(Tl,{info:Aee(r),multilineLabels:!0})}),(0,Nl.jsx)("div",{className:Oee("bytes-written"),children:(0,Nl.jsx)(Tl,{info:Ree(r)})})]})},Zee=function(e){var t=e.data,n=_R(null===t||void 0===t?void 0:t.PathDescription),i=ev((function(e){return e.schema})).error;return i?(0,Nl.jsx)("div",{className:"error",children:i.statusText}):t?(0,Nl.jsxs)("div",{children:[(0,Nl.jsx)(Tl,{title:n,info:Dee(t)}),(0,Nl.jsx)(Pee,{})]}):(0,Nl.jsxs)("div",{className:"error",children:["No ",n," data"]})},Fee=function(e,t){var n,i,r;if(!e&&!t)return[];var o=(null===e||void 0===e||null===(n=e.PathDescription)||void 0===n?void 0:n.CdcStreamDescription)||{},a=o.Mode,s=o.Format,u=UA("CreateStep",null===e||void 0===e||null===(i=e.PathDescription)||void 0===i||null===(r=i.Self)||void 0===r?void 0:r.CreateStep),l=Rl(tR,{Mode:a,Format:s}),c=Dee(t);return[u].concat((0,Ct.Z)(l),(0,Ct.Z)(c))},jee=function(e){var t=e.data,n=e.topic,i=_R(null===t||void 0===t?void 0:t.PathDescription),r=ev((function(e){return e.schema})).error;return r?(0,Nl.jsx)("div",{className:"error",children:r.statusText}):t&&n?(0,Nl.jsxs)("div",{children:[(0,Nl.jsx)(Tl,{title:i,info:Fee(t,n)}),(0,Nl.jsx)(Pee,{})]}):(0,Nl.jsxs)("div",{className:"error",children:["No ",i," data"]})},Hee=function(e){return e.SchemaPresetName&&void 0!==e.SchemaPresetId},Bee=function(e){var t,n,i,r=null===e||void 0===e?void 0:e.reduce((function(e,t){return e+(pr(t.Bytes)?Number(t.Bytes):0)}),0),o=null===e||void 0===e?void 0:e.reduce((function(e,t){return e+(pr(t.Rows)?Number(t.Rows):0)}),0),a=null===e||void 0===e?void 0:e.reduce((function(e,t){return e.add(t.TabletId),e}),new Set);return[{label:"PartCount",value:null!==(t=null===a||void 0===a?void 0:a.size)&&void 0!==t?t:0},{label:"RowCount",value:null!==(n=fs(o))&&void 0!==n?n:0},{label:"DataSize",value:null!==(i=os(r))&&void 0!==i?i:0}]},zee=function(e){if(e.Enabled&&e.Enabled.ColumnName&&void 0!==e.Enabled.ExpireAfterSeconds)return{label:"TTL for rows",value:"column: '".concat(e.Enabled.ColumnName,"', expire after: ").concat(bh(1e3*e.Enabled.ExpireAfterSeconds,1))}};var Wee=function(e,t,n){if(!e)return{};var i,r=e.PathDescription,o=void 0===r?{}:r,a=o.TableStats,s=void 0===a?{}:a,u=o.TabletMetrics,l=void 0===u?{}:u,c=o.Table,d=void 0===c?{}:c,h=d.PartitionConfig,f=void 0===h?{}:h,p=d.TTLSettings,g=o.ColumnTableDescription,v=void 0===g?{}:g,m=s.PartCount,_=s.RowCount,y=s.DataSize,b=s.IndexSize,w=s.LastAccessTime,C=s.LastUpdateTime,k=s.ImmediateTxCompleted,S=s.PlannedTxCompleted,x=s.TxRejectedByOverload,L=s.TxRejectedBySpace,E=s.TxCompleteLagMsec,D=s.InFlightTxCount,N=s.RowUpdates,M=s.RowDeletes,T=s.RowReads,I=s.RangeReads,O=s.RangeReadRows,A=f.FollowerGroups,R=f.FollowerCount,P=f.CrossDataCenterFollowerCount,Z=[];switch(t){case vc.EPathTypeTable:Z=function(e,t){var n,i=e.PartitioningPolicy,r=void 0===i?{}:i,o=e.FollowerGroups,a=e.EnableFilterByKey,s=[],u=r.SizeToSplit&&Number(r.SizeToSplit)>0?"Enabled, split size: ".concat(os(r.SizeToSplit)):"Disabled",l=null!==(n=r.SplitByLoadSettings)&&void 0!==n&&n.Enabled?"Enabled":"Disabled";if(s.push({label:"Partitioning by size",value:u},{label:"Partitioning by load",value:l},{label:"Min number of partitions",value:r.MinPartitionsCount||0}),r.MaxPartitionsCount&&s.push({label:"Max number of partitions",value:r.MaxPartitionsCount||0}),o&&o.length){var c,d=o[0],h=d.RequireAllDataCenters,f=d.FollowerCountPerDataCenter,p=d.FollowerCount;c=h&&f?"PER_AZ: ".concat(p):"ANY_AZ: ".concat(p),s.push({label:"Read replicas (followers)",value:c})}if(t){var g=zee(t);g&&s.push(g)}return s.push({label:"Bloom filter",value:a?"Enabled":"Disabled"}),s}(f,p);break;case vc.EPathTypeColumnTable:Z=function(e){var t=[];if(t.push({label:"Standalone",value:String(!Hee(e))}),e.Sharding&&e.Sharding.HashSharding&&t.push({label:"Sharding",value:"hash"}),e.TtlSettings){var n=zee(null===e||void 0===e?void 0:e.TtlSettings);n&&t.push(n)}return t}(v)}i=t===vc.EPathTypeColumnTable&&Hee(v)?[Bee(n)]:[Rl(oR,{PartCount:m,RowCount:_,DataSize:y,IndexSize:b}),Rl(oR,{LastAccessTime:w,LastUpdateTime:C}),Rl(oR,{ImmediateTxCompleted:k,PlannedTxCompleted:S,TxRejectedByOverload:x,TxRejectedBySpace:L,TxCompleteLagMsec:E,InFlightTxCount:D}),Rl(oR,{RowUpdates:N,RowDeletes:M,RowReads:T,RangeReads:I,RangeReadRows:O})];var F=Rl(nR,l),j=[];return Array.isArray(A)&&A.length>0?j=Rl(iR,A[0]):void 0!==R?j.push(rR("FollowerCount",R)):void 0!==P&&j.push(rR("CrossDataCenterFollowerCount",P)),{generalInfo:Z,tableStatsInfo:i,tabletMetricsInfo:F,partitionConfigInfo:j}},Vee=JSON.parse('{"tableStats":"Table Stats","tabletMetrics":"Tablet Metrics","partitionConfig":"Partition Config"}'),Yee=JSON.parse('{"tableStats":"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","tabletMetrics":"\u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u0442\u0430\u0431\u043b\u0435\u0442\u043a\u0438","partitionConfig":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438"}'),Uee="ydb-diagnostics-overview-table-info";Va.registerKeyset(Fa.En,Uee,Vee),Va.registerKeyset(Fa.Ru,Uee,Yee);var Kee=Va.keyset(Uee),qee=(0,ht.Z)("ydb-diagnostics-table-info"),Gee=function(t){var n=t.data,i=t.type,r=t.olapStats,o=_R(null===n||void 0===n?void 0:n.PathDescription),a=(0,e.useMemo)((function(){return Wee(n,i,r)}),[n,i,r]),s=a.generalInfo,u=void 0===s?[]:s,l=a.tableStatsInfo,c=void 0===l?[]:l,d=a.tabletMetricsInfo,h=void 0===d?[]:d,f=a.partitionConfigInfo,p=void 0===f?[]:f;return(0,Nl.jsxs)("div",{className:qee(),children:[(0,Nl.jsx)(Tl,{info:u,title:o,className:qee("info-block"),renderEmptyState:function(){return(0,Nl.jsx)("div",{className:qee("title"),children:o})}}),(0,Nl.jsxs)("div",{className:qee("row"),children:[(0,Nl.jsx)("div",{className:qee("col"),children:c.map((function(e,t){return(0,Nl.jsx)(Tl,{info:e,title:0===t?Kee("tableStats"):void 0,className:qee("info-block"),renderEmptyState:function(){return null}},t)}))}),h.length>0||p.length>0?(0,Nl.jsxs)("div",{className:qee("col"),children:[(0,Nl.jsx)(Tl,{info:h,title:Kee("tabletMetrics"),className:qee("info-block"),renderEmptyState:function(){return null}}),(0,Nl.jsx)(Tl,{info:p,title:Kee("partitionConfig"),className:qee("info-block"),renderEmptyState:function(){return null}})]}):null]})]})};var $ee=function(t){var n=t.type,i=t.tenantName,r=K(),o=ev((function(e){return e.schema})),a=o.autorefresh,s=o.currentSchemaPath,u=ev((function(e){return e.overview})),l=u.data,c=u.additionalData,d=u.loading,h=u.wasLoaded,f=u.error,p=ev((function(e){return e.olapStats})),g=p.data,v=(void 0===g?{result:void 0}:g).result,m=p.loading,_=p.wasLoaded,y=fd(n),b=ev((function(e){return Td(e,s,n)}),L),w=d&&!h||m&&!_,C=y&&!b,k=(0,e.useCallback)((function(e){var t=s||i;t&&(r(Fd(t)),e||r({type:Pd}),y?b&&r(function(e){var t=e.map((function(e){return window.api.getDescribe({path:e},{concurrentId:"getOverviewBatched|".concat(e)})}));return oa({request:Promise.all(t),actions:Ad,dataHandler:function(e){var t=(0,Od.Z)(e);return{data:t[0],additionalData:t.slice(1)}}})}([t].concat((0,Ct.Z)(b)))):r(function(e){var t=e.path;return oa({request:window.api.getDescribe({path:t},{concurrentId:"getOverview"}),actions:Ad,dataHandler:function(e){return{data:e}}})}({path:t})),od(n)&&ld(n)&&(e||r({type:Zp}),r(Hp({path:t}))),_d(n)&&r(Nh(s)))}),[i,s,n,y,b,r]);return Jg(k,[k],a),w||C?(0,Nl.jsx)(jI,{size:"m"}):f?(0,Nl.jsx)(Sb,{error:f}):(0,Nl.jsx)("div",{children:function(){var e,t,i=(e={},(0,wt.Z)(e,vc.EPathTypeInvalid,void 0),(0,wt.Z)(e,vc.EPathTypeDir,void 0),(0,wt.Z)(e,vc.EPathTypeTable,void 0),(0,wt.Z)(e,vc.EPathTypeSubDomain,void 0),(0,wt.Z)(e,vc.EPathTypeTableIndex,(function(){return(0,Nl.jsx)(Eee,{data:l})})),(0,wt.Z)(e,vc.EPathTypeExtSubDomain,void 0),(0,wt.Z)(e,vc.EPathTypeColumnStore,void 0),(0,wt.Z)(e,vc.EPathTypeColumnTable,void 0),(0,wt.Z)(e,vc.EPathTypeCdcStream,(function(){return(0,Nl.jsx)(jee,{data:l,topic:null===c||void 0===c?void 0:c[0]})})),(0,wt.Z)(e,vc.EPathTypePersQueueGroup,(function(){return(0,Nl.jsx)(Zee,{data:l})})),(0,wt.Z)(e,vc.EPathTypeExternalTable,(function(){return(0,Nl.jsx)(AR,{data:l})})),(0,wt.Z)(e,vc.EPathTypeExternalDataSource,(function(){return(0,Nl.jsx)(DR,{data:l})})),e);return n&&(null===(t=i[n])||void 0===t?void 0:t.call(i))||(0,Nl.jsx)(Gee,{data:l,type:n,olapStats:v})}()})},Qee=["title","error","loading","wasLoaded","tableClassNameModifiers"],Xee=(0,ht.Z)("tenant-overview");function Jee(e){var t=e.title,n=e.error,i=e.loading,r=e.wasLoaded,o=e.tableClassNameModifiers,a=void 0===o?{}:o,s=nn(e,Qee);return(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)("div",{className:Xee("title"),children:t}),(0,Nl.jsx)("div",{className:Xee("table",a),children:n?(0,Nl.jsx)(Sb,{error:n}):i&&!r?(0,Nl.jsx)(mb,{rows:Si}):(0,Nl.jsx)(pi,Rt({theme:"yandex-cloud",settings:zi},s))})]})}var ete=JSON.parse('{"no-data":"No data","no-pools-data":"No pools data","top-nodes.empty-data":"No such nodes","title.pools":"Pools","title.metrics":"Metrics","top-groups.empty-data":"No such groups","top":"Top","nodes":"nodes","shards":"shards","groups":"groups","queries":"queries","tables":"tables","by-pools-usage":"by pools usage","by-cpu-time":"by cpu time","by-cpu-usage":"by cpu usage","by-load":"by load","by-memory":"by memory","by-usage":"by usage","by-size":"by size"}'),tte=JSON.parse('{"no-data":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445","no-pools-data":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u043f\u0443\u043b\u0430\u0445","top-nodes.empty-data":"\u041d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432","title.pools":"\u041f\u0443\u043b\u044b","title.metrics":"\u041c\u0435\u0442\u0440\u0438\u043a\u0438","top-groups.empty-data":"\u041d\u0435\u0442 \u0433\u0440\u0443\u043f\u043f","top":"\u0422\u043e\u043f","nodes":"\u0443\u0437\u043b\u043e\u0432","shards":"\u0448\u0430\u0440\u0434\u043e\u0432","groups":"\u0433\u0440\u0443\u043f\u043f","queries":"\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432","tables":"\u0442\u0430\u0431\u043b\u0438\u0446","by-pools-usage":"\u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u0443\u043b\u043e\u0432","by-cpu-time":"\u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 cpu","by-cpu-usage":"\u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e cpu","by-load":"\u043f\u043e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435","by-memory":"\u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438","by-usage":"\u043f\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044e","by-size":"\u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443"}'),nte="ydb-diagnostics-tenant-overview";Va.registerKeyset(Fa.En,nte,ete),Va.registerKeyset(Fa.Ru,nte,tte);var ite=Va.keyset(nte),rte=function(e){var t=e.prefix,n=void 0===t?ite("top"):t,i=e.entity,r=e.postfix,o=e.link;return o?(0,Nl.jsxs)(Nl.Fragment,{children:[n," ",(0,Nl.jsx)(vv,{to:o,children:i})," ",r]}):"".concat(n," ").concat(i," ").concat(r)};function ote(t){var n,i=t.path,r=t.additionalNodesProps,o=K(),a=rv(),s=ev((function(e){return e.topNodesByLoad})),u=s.wasLoaded,l=s.loading,c=s.error,d=ev((function(e){return e.schema})).autorefresh,h=ev(zs),f=(n=null===r||void 0===r?void 0:r.getNodeRef,[dI,eI,nI(n),oI]),p=(0,e.useCallback)((function(e){e||o(Ws()),o(function(e){var t=e.type,n=void 0===t?"any":t,i=e.sortOrder,r=void 0===i?-1:i,o=e.sortValue,a=void 0===o?"LoadAverage":o,s=e.limit,u=void 0===s?Si:s,l=nn(e,Zs);return oa({request:window.api.getNodes(Rt({type:n,sortOrder:r,sortValue:a,limit:u},l),{concurrentId:Bs}),actions:Fs,dataHandler:Ss})}({tenant:i}))}),[o,i]);Jg(p,[p],d);var g=rte({entity:ite("nodes"),postfix:ite("by-load"),link:Mb(Rt(Rt({},a),{},(0,wt.Z)({},Eb.diagnosticsTab,Pn.nodes)))});return(0,Nl.jsx)(Jee,{data:h||[],columns:f,title:g,loading:l,wasLoaded:u,error:c,emptyDataMessage:ite("top-nodes.empty-data")})}function ate(t){var n,i=t.path,r=t.additionalNodesProps,o=K(),a=rv(),s=ev((function(e){return e.topNodesByCpu})),u=s.wasLoaded,l=s.loading,c=s.error,d=ev((function(e){return e.schema})).autorefresh,h=ev(Gs),f=(n=null===r||void 0===r?void 0:r.getNodeRef,[uI,eI,nI(n)]),p=(0,e.useCallback)((function(e){e||o($s()),o(function(e){var t=e.type,n=void 0===t?"any":t,i=e.sortOrder,r=void 0===i?-1:i,o=e.sortValue,a=void 0===o?"CPU":o,s=e.limit,u=void 0===s?Si:s,l=nn(e,Vs);return oa({request:window.api.getNodes(Rt({type:n,sortOrder:r,sortValue:a,limit:u},l),{concurrentId:qs}),actions:Ys,dataHandler:Ss})}({tenant:i}))}),[o,i]);Jg(p,[p],d);var g=rte({entity:ite("nodes"),postfix:ite("by-pools-usage"),link:Mb(Rt(Rt({},a),{},(0,wt.Z)({},Eb.diagnosticsTab,Pn.nodes)))});return(0,Nl.jsx)(Jee,{data:h||[],columns:f,title:g,loading:l,wasLoaded:u,error:c,emptyDataMessage:ite("top-nodes.empty-data")})}var ste=function(e){var t=e.path,n=K(),i=ct(),r=vg(i),o=ev((function(e){return e.schema})),a=o.autorefresh,s=o.currentSchemaPath,u=ev((function(e){return e.tenantOverviewTopShards})),l=u.loading,c=u.data,d=(void 0===c?{}:c).result,h=void 0===d?void 0:d,f=u.error,p=u.wasLoaded;Jg((function(e){e||n({type:Dp}),n(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return oa({request:window.api.sendQuery({schema:"modern",query:Mp(t,e),database:e,action:Tp},{concurrentId:"executeTopShards"}),actions:Ep,dataHandler:rr})}(t,s))}),[n,t,s],a);var g=function(e,t){return[pee,dee(e,t),vee]}(t,i),v=rte({entity:ite("shards"),postfix:ite("by-cpu-usage"),link:Mb(Rt(Rt({},r),{},(0,wt.Z)({},Eb.diagnosticsTab,Pn.topShards)))});return(0,Nl.jsx)(Jee,{data:h||[],columns:g,title:v,loading:l,wasLoaded:p,error:f,tableClassNameModifiers:{"top-queries":!0}})};function ute(t){var n=t.path,i=K(),r=ct(),o=lt(),a=vg(r),s=ev((function(e){return e.schema})).autorefresh,u=ev((function(e){return e.tenantOverviewTopQueries})),l=u.loading,c=u.wasLoaded,d=u.error,h=u.data,f=(void 0===h?{}:h).result,p=void 0===f?void 0:f,g=W9();Jg((function(e){e||i({type:Kf}),i($f(n))}),[i,n],s);var v=(0,e.useCallback)((function(e){var t,n=e.QueryText;i(rf({input:n}));var a=vg(r),s=Mb(Rt(Rt({},a),{},(t={},(0,wt.Z)(t,On,An.query),(0,wt.Z)(t,Eb.queryTab,Rn.newQuery),t)));o.push(s)}),[i,o,r]),m=rte({entity:ite("queries"),postfix:ite("by-cpu-time"),link:Mb(Rt(Rt({},a),{},(0,wt.Z)({},Eb.diagnosticsTab,Pn.topQueries)))});return(0,Nl.jsx)(Jee,{data:p||[],columns:g,onRowClick:v,title:m,loading:l,wasLoaded:c,error:d,tableClassNameModifiers:{"top-queries":!0}})}function lte(e){var t=e.path,n=e.additionalNodesProps;return(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)(ote,{path:t,additionalNodesProps:n}),(0,Nl.jsx)(ate,{path:t,additionalNodesProps:n}),(0,Nl.jsx)(ste,{path:t}),(0,Nl.jsx)(ute,{path:t})]})}var cte=n(66589),dte=n.n(cte),hte=(0,ht.Z)("issue-tree-item"),fte=function(e){var t=e.status,n=e.message,i=e.type,r=e.onClick;return(0,Nl.jsxs)("div",{className:hte(),onClick:r,children:[(0,Nl.jsx)("div",{className:hte("field",{status:!0}),children:(0,Nl.jsx)(hy,{mode:"icons",status:t,name:i})}),(0,Nl.jsx)("div",{className:hte("field",{message:!0}),children:n})]})},pte=["status","message","type","reasonsItems","level"],gte=(0,ht.Z)("issue-tree"),vte=function(t){var n=t.issueTree,i=(0,e.useState)({}),r=(0,ne.Z)(i,2),o=r[0],a=r[1],s=(0,e.useCallback)((function(e){return e.map((function(e){var t=e.id,n=e.status,i=e.message,r=e.type,l=e.reasonsItems,c=e.level,d=nn(e,pte),h="undefined"===typeof o[t]||o[t],f=function(){a((function(e){return Rt(Rt({},e),{},(0,wt.Z)({},t,!h))}))};return(0,Nl.jsxs)(yO,{name:(0,Nl.jsx)(fte,{status:n,message:i,type:r}),collapsed:h,hasArrow:!0,onClick:f,onArrowClick:f,level:c-1,children:[u(dte()(d,["reason"])),s(l||[])]},t)}))}),[n,o]),u=(0,e.useCallback)((function(e){return e?(0,Nl.jsx)("div",{className:gte("info-panel"),children:(0,Nl.jsx)(Dl(),{data:e,search:!1,isExpanded:function(){return!0},className:gte("inspector")})}):null}),[n]);return(0,Nl.jsx)("div",{className:gte(),children:(0,Nl.jsx)("div",{className:gte("block"),children:s([n])})})},mte=JSON.parse('{"title.healthcheck":"Healthcheck","label.update":"Update","label.show-details":"Show details","label.issues":"Issues:","status_message.ok":"No issues","no-data":"no healthcheck data"}'),_te=JSON.parse('{"title.healthcheck":"Healthcheck","label.update":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c","label.show-details":"\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438","label.issues":"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:","status_message.ok":"\u041d\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c","no-data":"\u043d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 healthcheck"}'),yte="ydb-diagnostics-healthcheck";Va.registerKeyset(Fa.En,yte,mte),Va.registerKeyset(Fa.Ru,yte,_te);var bte,wte,Cte,kte=Va.keyset(yte),Ste=(0,ht.Z)("healthcheck");function xte(e){var t=e.issueTrees,n=e.loading,i=e.wasLoaded,r=e.error;return(0,Nl.jsx)("div",{className:Ste("details"),children:(0,Nl.jsx)("div",{className:Ste("details-content-wrapper"),children:r?(0,Nl.jsx)(Sb,{error:r,defaultMessage:kte("no-data")}):n&&!i?(0,Nl.jsx)(jI,{size:"m"}):t&&t.length?(0,Nl.jsx)(Nl.Fragment,{children:t.map((function(e){return(0,Nl.jsx)(vte,{issueTree:e},e.id)}))}):kte("status_message.ok")})})}function Lte(){return Lte=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Lte.apply(this,arguments)}var Ete=function(t){return e.createElement("svg",Lte({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},t),bte||(bte=e.createElement("path",{d:"M21 12a9 9 0 01-9 9c-2.5 0-5.5-2-7-4",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})),wte||(wte=e.createElement("path",{d:"M5 21v-4h4M3 12a9 9 0 019-9c2.5 0 5.5 2 7 4",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})),Cte||(Cte=e.createElement("path",{d:"M19 3v4h-4",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})))},Dte=(0,ht.Z)("ydb-diagnostic-card");function Nte(e){var t=e.children,n=e.className,i=e.active;return(0,Nl.jsx)("div",{className:Dte({active:i},n),children:t})}var Mte=(0,ht.Z)("healthcheck");function Tte(e){var t=e.selfCheckResult,n=e.issuesStatistics,i=e.loading,r=e.wasLoaded,o=e.onUpdate,a=e.error,s=e.active;return(0,Nl.jsxs)(Nte,{className:Mte("preview"),active:s,children:[function(){var e=t.toLowerCase();return i&&!r?null:(0,Nl.jsxs)("div",{className:Mte("preview-header"),children:[(0,Nl.jsxs)("div",{className:Mte("preview-title-wrapper"),children:[(0,Nl.jsx)("div",{className:Mte("preview-title"),children:kte("title.healthcheck")}),(0,Nl.jsx)(_o.z,{size:"s",onClick:o,loading:i,view:"flat-secondary",children:(0,Nl.jsx)(yo.J,{data:Ete,width:20,height:20})})]}),(0,Nl.jsx)("div",{className:Mte("self-check-status-indicator",(0,wt.Z)({},e,!0)),children:t})]})}(),a?(0,Nl.jsx)(Sb,{error:a,defaultMessage:kte("no-data")}):i&&!r?(0,Nl.jsx)(jI,{size:"m"}):(0,Nl.jsx)("div",{className:Mte("preview-content"),children:n&&n.length?(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)("div",{children:kte("label.issues")}),(0,Nl.jsx)("div",{className:Mte("issues-statistics"),children:n.map((function(e){var t=(0,ne.Z)(e,2),n=t[0],i=t[1];return(0,Nl.jsx)(hy,{mode:"icons",status:n,label:i.toString(),size:"l"},n)}))})]}):kte("status_message.ok")})]})}var Ite=(0,ht.Z)("ydb-circular-progress-bar");function Ote(e){var t=e.size,n=void 0===t?100:t,i=e.progress,r=void 0===i?0:i,o=e.strokeWidth,a=void 0===o?10:o,s=e.content,u=e.status,l=e.circleBgClassName,c=n/2,d=n/2-a/2,h=2*Math.PI*d,f=(100-ah(r))/100*h;return(0,Nl.jsxs)("div",{className:Ite("wrapper"),children:[s&&(0,Nl.jsx)("div",{className:Ite("content"),children:s}),(0,Nl.jsxs)("svg",{className:Ite(),width:n,height:n,children:[(0,Nl.jsx)("circle",{className:Ite("circle-bg",l),cx:c,cy:c,r:d,strokeWidth:a}),(0,Nl.jsx)("circle",{className:Ite("circle",{status:null===u||void 0===u?void 0:u.toLocaleLowerCase()}),cx:c,cy:c,r:d,strokeWidth:a,strokeDasharray:h,strokeDashoffset:f})]})]})}var Ate=(0,ht.Z)("ydb-metrics-card");function Rte(e){var t=e.active,n=e.progress,i=e.label,r=e.status,o=e.resourcesUsed;return(0,Nl.jsxs)(Nte,{className:Ate({active:t}),active:t,children:[(0,Nl.jsx)("div",{className:Ate("header"),children:i&&(0,Nl.jsx)("div",{className:Ate("label"),children:i})}),(0,Nl.jsx)(Ote,{size:172,strokeWidth:11,progress:n||0,content:(0,Nl.jsxs)("div",{className:Ate("content"),children:[n&&(0,Nl.jsx)("div",{className:Ate("progress"),children:th(n)}),o?(0,Nl.jsx)("div",{className:Ate("resources"),children:o}):ite("no-data")]}),status:r,circleBgClassName:Ate("progress-bar-circle-bg")})]})}var Pte=(0,ht.Z)("metrics-cards");function Zte(e){var t,n=e.metrics,i=e.issuesStatistics,r=e.selfCheckResult,o=e.fetchHealthcheck,a=e.healthcheckLoading,s=e.healthCheckWasLoaded,u=e.healthcheckError,l=ct(),c=n||{},d=c.memoryUsed,h=c.memoryLimit,f=c.cpuUsed,p=c.cpuUsage,g=c.storageUsed,v=c.storageLimit,m=ev((function(e){return e.tenant})).metricsTab,_=eh(g,v),y=eh(d,h),b=nh(p),w=ih(_),C=rh(y),k=oh({cpu:f,storage:g,memory:d}),S=k.cpu,x=k.storage,L=k.memory,E=vg(l),D=(t={},(0,wt.Z)(t,Fn.cpu,Mb(Rt(Rt({},E),{},(0,wt.Z)({},Eb.metricsTab,Fn.cpu)))),(0,wt.Z)(t,Fn.storage,Mb(Rt(Rt({},E),{},(0,wt.Z)({},Eb.metricsTab,Fn.storage)))),(0,wt.Z)(t,Fn.memory,Mb(Rt(Rt({},E),{},(0,wt.Z)({},Eb.metricsTab,Fn.memory)))),(0,wt.Z)(t,Fn.healthcheck,Mb(Rt(Rt({},E),{},(0,wt.Z)({},Eb.metricsTab,Fn.healthcheck)))),t);return(0,Nl.jsxs)("div",{className:Pte(),children:[(0,Nl.jsx)(cv,{to:D.cpu,className:Pte("tab"),children:(0,Nl.jsx)(Rte,{label:"CPU",progress:p,status:b,resourcesUsed:S,active:m===Fn.cpu})}),(0,Nl.jsx)(cv,{to:D.storage,className:Pte("tab"),children:(0,Nl.jsx)(Rte,{label:"Storage",progress:_,status:w,resourcesUsed:x,active:m===Fn.storage})}),(0,Nl.jsx)(cv,{to:D.memory,className:Pte("tab"),children:(0,Nl.jsx)(Rte,{label:"Memory",progress:y,status:C,resourcesUsed:L,active:m===Fn.memory})}),(0,Nl.jsx)(cv,{to:D.healthcheck,className:Pte("tab"),children:(0,Nl.jsx)(Tte,{selfCheckResult:r,issuesStatistics:i,onUpdate:o,loading:a,wasLoaded:s,error:u,active:m===Fn.healthcheck})})]})}function Fte(e){var t=e.path,n=K(),i=ct(),r=ev((function(e){return e.schema})).autorefresh,o=ev((function(e){return e.executeTopTables})),a=o.loading,s=o.wasLoaded,u=o.error,l=o.data,c=(void 0===l?{}:l).result,d=void 0===c?void 0:c;Jg((function(e){e||n({type:Xf}),n(tp(t))}),[n,t],r);var h=[{name:"Size",width:80,sortable:!1,render:function(e){var t=e.row;return function(e){var t=Xa(null!==d&&void 0!==d&&d.length?Number(d[0].Size):0,0);return es({value:e,size:t,precision:1})}(Number(t.Size))},align:pi.RIGHT},{name:"Path",sortable:!1,render:function(e){var t=e.row;return t.Path?(0,Nl.jsx)(KN,{content:t.Path,children:(0,Nl.jsx)(iee,{path:String(t.Path),location:i,children:t.Path})}):null}}],f=rte({entity:ite("tables"),postfix:ite("by-size")});return(0,Nl.jsx)(Jee,{data:d||[],columns:h,title:f,loading:a,wasLoaded:s,error:u})}function jte(t){var n=t.tenant,i=K(),r=rv(),o=ev((function(e){return e.schema})).autorefresh,a=ev((function(e){return e.topStorageGroups})),s=a.loading,u=a.wasLoaded,l=a.error,c=ev(gl),d=HM(),h=(0,e.useCallback)((function(e){e||i(vl()),i(pl({tenant:n}))}),[i,n]);Jg(h,[h],o);var f=rte({entity:ite("groups"),postfix:ite("by-usage"),link:Mb(Rt(Rt({},r),{},(0,wt.Z)({},Eb.diagnosticsTab,Pn.storage)))});return(0,Nl.jsx)(Jee,{data:c||[],columns:d,title:f,loading:s,wasLoaded:u,error:l})}var Hte,Bte,zte=(0,ht.Z)("tenant-overview");function Wte(e){var t=e.tenantName,n=e.metrics,i=n.blobStorageUsed,r=n.tableStorageUsed,o=n.blobStorageLimit,a=n.tableStorageLimit,s=function(e,t){var n=Xa(Number(o||i),0);return ds(e,t,n)},u=[{label:"Database storage",value:(0,Nl.jsx)(jT,{value:i,capacity:o,formatValues:s,colorizeProgress:!0,warningThreshold:75,dangerThreshold:85})},{label:"Table storage",value:(0,Nl.jsx)(jT,{value:r,capacity:a,formatValues:s,colorizeProgress:!0,warningThreshold:75,dangerThreshold:85})}];return(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)(Tl,{className:zte("storage-info"),title:"Storage details",info:u}),(0,Nl.jsx)(Fte,{path:t}),(0,Nl.jsx)(jte,{tenant:t})]})}function Vte(t){var n=t.path,i=t.additionalNodesProps,r=K(),o=rv(),a=ev((function(e){return e.topNodesByMemory})),s=a.wasLoaded,u=a.loading,l=a.error,c=ev((function(e){return e.schema})).autorefresh,d=ev(nu),h=function(e){var t=e.tabletsPath,n=e.getNodeRef;return[eI,tI(n),aI,dI,hI,fI,pI,gI,cI(t)]}({getNodeRef:null===i||void 0===i?void 0:i.getNodeRef}),f=(0,e.useCallback)((function(e){e||r(iu()),r(function(e){var t=e.type,n=void 0===t?"any":t,i=e.sortOrder,r=void 0===i?-1:i,o=e.sortValue,a=void 0===o?"Memory":o,s=e.limit,u=void 0===s?Si:s,l=nn(e,Qs);return oa({request:window.api.getNodes(Rt({type:n,sortOrder:r,sortValue:a,limit:u},l),{concurrentId:tu}),actions:Xs,dataHandler:Ss})}({tenant:n}))}),[r,n]);Jg(f,[f],c);var p=rte({entity:ite("nodes"),postfix:ite("by-memory"),link:Mb(Rt(Rt({},o),{},(0,wt.Z)({},Eb.diagnosticsTab,Pn.nodes)))});return(0,Nl.jsx)(Jee,{data:d||[],columns:h,title:p,loading:u,wasLoaded:s,error:l,emptyDataMessage:ite("top-nodes.empty-data")})}function Yte(e){var t=e.path;return(0,Nl.jsx)(Vte,{path:t})}!function(e){e.UNSPECIFIED="UNSPECIFIED",e.GOOD="GOOD",e.DEGRADED="DEGRADED",e.MAINTENANCE_REQUIRED="MAINTENANCE_REQUIRED",e.EMERGENCY="EMERGENCY"}(Hte||(Hte={})),function(e){e.UNSPECIFIED="UNSPECIFIED",e.GREY="GREY",e.GREEN="GREEN",e.BLUE="BLUE",e.YELLOW="YELLOW",e.ORANGE="ORANGE",e.RED="RED"}(Bte||(Bte={}));var Ute=function(t){var n=K(),i=ev((function(e){return e.healthcheckInfo})),r=i.data,o=i.loading,a=i.wasLoaded,s=i.error,u=(null===r||void 0===r?void 0:r.self_check_result)||Hte.UNSPECIFIED,l=ev(gp),c=ev(pp),d=(0,e.useCallback)((function(){var e;!(arguments.length>0&&void 0!==arguments[0])||arguments[0]||n(mp()),n((e=t,oa({request:window.api.getHealthcheckInfo(e,{concurrentId:"getHealthcheckInfo"}),actions:ip})))}),[n,t]);return{issueTrees:c,issuesStatistics:l,fetchHealthcheck:d,loading:o,wasLoaded:a,error:s,selfCheckResult:u}},Kte=(0,ht.Z)("tenant-overview");function qte(t){var n,i=t.tenantName,r=t.additionalTenantProps,o=t.additionalNodesProps,a=K(),s=ev((function(e){return e.tenant})),u=s.tenant,l=s.loading,c=s.wasLoaded,d=s.metricsTab,h=ev((function(e){return e.schema})).autorefresh,f=Ute(i),p=f.issueTrees,g=f.issuesStatistics,v=f.selfCheckResult,m=f.fetchHealthcheck,_=f.loading,y=f.wasLoaded,b=f.error,w=(0,e.useCallback)((function(){!(arguments.length>0&&void 0!==arguments[0])||arguments[0]||a(Du()),a(Su({path:i}))}),[a,i]);Jg((function(e){w(e),m(e)}),[w,m],h);var C=u||{},k=C.Name,S=C.State,x=C.Type,L=id(x),E=Xd(u),D=E.cpu,N=E.blobStorage,M=E.tableStorage,T=E.memory,I=E.cpuUsage,O=E.blobStorageLimit,A=E.tableStorageLimit,R={memoryUsed:T,memoryLimit:E.memoryLimit,cpuUsed:D,cpuUsage:I,storageUsed:N,storageLimit:O},P={blobStorageUsed:N,blobStorageLimit:O,tableStorageUsed:M,tableStorageLimit:A};return l&&!c?(0,Nl.jsx)("div",{className:Kte("loader"),children:(0,Nl.jsx)(KE,{size:"m"})}):(0,Nl.jsxs)("div",{className:Kte(),children:[(0,Nl.jsxs)("div",{className:Kte("info"),children:[(0,Nl.jsx)("div",{className:Kte("top-label"),children:L}),(0,Nl.jsxs)("div",{className:Kte("top"),children:[(0,Nl.jsx)("div",{className:Kte("tenant-name-wrapper"),children:(0,Nl.jsx)(hy,{status:S,name:k||Ei,withLeftTrim:!0,hasClipboardButton:Boolean(u),clipboardButtonAlwaysVisible:!0})}),null===r||void 0===r||null===(n=r.getMonitoringLink)||void 0===n?void 0:n.call(r,k,x)]}),(0,Nl.jsx)(Zte,{metrics:R,issuesStatistics:g,selfCheckResult:v,fetchHealthcheck:m,healthcheckLoading:_,healthCheckWasLoaded:y,healthcheckError:b})]}),function(){switch(d){case Fn.cpu:return(0,Nl.jsx)(lte,{path:i,additionalNodesProps:o});case Fn.storage:return(0,Nl.jsx)(Wte,{tenantName:i,metrics:P});case Fn.memory:return(0,Nl.jsx)(Yte,{path:i});case Fn.healthcheck:return(0,Nl.jsx)(xte,{issueTrees:p,loading:_,wasLoaded:y,error:b});default:return}}()]})}var Gte=(0,ht.Z)("kv-detailed-overview");var $te,Qte=function(e){var t=e.type,n=e.tenantName,i=e.additionalTenantProps,r=e.additionalNodesProps,o=Q((function(e){return e.schema})).currentSchemaPath,a=n===o;return(0,Nl.jsx)("div",{className:Gte(),children:a?(0,Nl.jsx)("div",{className:Gte("section"),children:(0,Nl.jsx)(qte,{tenantName:n,additionalTenantProps:i,additionalNodesProps:r})}):(0,Nl.jsx)($ee,{type:t,tenantName:n})})},Xte={id:Pn.overview,title:"Info"},Jte={id:Pn.topQueries,title:"Top queries"},ene={id:Pn.topShards,title:"Top shards"},tne={id:Pn.nodes,title:"Nodes"},nne={id:Pn.tablets,title:"Tablets"},ine={id:Pn.storage,title:"Storage"},rne={id:Pn.network,title:"Network"},one={id:Pn.describe,title:"Describe"},ane={id:Pn.hotKeys,title:"Hot keys"},sne={id:Pn.graph,title:"Graph"},une={id:Pn.consumers,title:"Consumers"},lne={id:Pn.partitions,title:"Partitions"},cne=[Xte,Jte,ene,tne,nne,ine,rne,one],dne=[Xte,ene,tne,sne,nne,ane,one],hne=[Xte,ene,tne,one],fne=[Xte,une,lne,tne,one],pne=[Xte,une,lne,tne,one],gne=[Xte,one],vne=[Xte,one],mne=($te={},(0,wt.Z)($te,vc.EPathTypeInvalid,void 0),(0,wt.Z)($te,vc.EPathTypeSubDomain,cne),(0,wt.Z)($te,vc.EPathTypeExtSubDomain,cne),(0,wt.Z)($te,vc.EPathTypeColumnStore,cne),(0,wt.Z)($te,vc.EPathTypeTable,dne),(0,wt.Z)($te,vc.EPathTypeColumnTable,dne),(0,wt.Z)($te,vc.EPathTypeDir,hne),(0,wt.Z)($te,vc.EPathTypeTableIndex,hne),(0,wt.Z)($te,vc.EPathTypeCdcStream,fne),(0,wt.Z)($te,vc.EPathTypePersQueueGroup,pne),(0,wt.Z)($te,vc.EPathTypeExternalDataSource,gne),(0,wt.Z)($te,vc.EPathTypeExternalTable,vne),$te),_ne=function(e){return e&&mne[e]||hne},yne=(0,ht.Z)("kv-tenant-diagnostics");var bne=function(t){var n=K(),i=Q((function(e){return e.schema})),r=i.currentSchemaPath,o=i.autorefresh,a=i.wasLoaded,s=ev((function(e){return e.tenant})).diagnosticsTab,u=void 0===s?Pn.overview:s,l=ct(),c=Zt().parse(l.search,{ignoreQueryPrefix:!0}),d=c.name,h=dd(t.type)?r:d,f=dd(t.type)||r===d,p=(0,e.useMemo)((function(){return f?cne:_ne(t.type)}),[t.type,f]),g=function(e){n(function(e){return{type:_u,data:e}}(e))},v=(0,e.useMemo)((function(){if(a){if(p.find((function(e){return e.id===u})))return u;var e=p[0].id;return g(e),e}}),[p,u,a]),m=function(e){n(e?{type:Sd}:Nd())};return a?(0,Nl.jsxs)("div",{className:yne(),children:[(0,Nl.jsx)("div",{className:yne("header-wrapper"),children:(0,Nl.jsxs)("div",{className:yne("tabs"),children:[(0,Nl.jsx)(Wg,{size:"l",items:p,activeTab:v,wrapTo:function(e,t){var n=e.id,i=_g(bg.tenant,void 0,Rt(Rt({},c),{},(0,wt.Z)({},Eb.diagnosticsTab,n)));return(0,Nl.jsx)(cv,{to:i,className:yne("tab"),children:t},n)},allowNotSelected:!0}),(0,Nl.jsx)(J6,{checked:o,onUpdate:m,content:"Autorefresh"})]})}),(0,Nl.jsx)("div",{className:yne("page-wrapper"),children:function(){var e=t.type,n=h;switch(u){case Pn.overview:return(0,Nl.jsx)(Qte,{type:e,tenantName:n,additionalTenantProps:t.additionalTenantProps,additionalNodesProps:t.additionalNodesProps});case Pn.topQueries:return(0,Nl.jsx)(G9,{path:n,type:e});case Pn.topShards:return(0,Nl.jsx)(xee,{tenantPath:n,type:e});case Pn.nodes:return(0,Nl.jsx)(EI,{path:r,additionalNodesProps:t.additionalNodesProps});case Pn.tablets:return(0,Nl.jsx)(M7,{path:r});case Pn.storage:return(0,Nl.jsx)(IT,{tenant:n});case Pn.network:return(0,Nl.jsx)(K7,{path:n});case Pn.describe:return(0,Nl.jsx)(O7,{tenant:n,type:e});case Pn.hotKeys:return(0,Nl.jsx)(F7,{type:e});case Pn.graph:return(0,Nl.jsx)(_7,{path:r});case Pn.consumers:return(0,Nl.jsx)(y9,{path:r,type:e});case Pn.partitions:return(0,Nl.jsx)(J8,{path:r});default:return(0,Nl.jsx)("div",{children:"No data..."})}}()})]}):(0,Nl.jsx)(jI,{size:"l"})},wne=(0,ht.Z)("object-general");var Cne=function(e){var t=ct(),n=My(),i=tv(Ki),r=(0,ne.Z)(i,1)[0],o=vg(t),a=o.name,s=o.tenantPage,u=void 0===s?r:s,l=function(){var t=e.type,i=e.additionalTenantProps,r=e.additionalNodesProps;return u===An.query?(0,Nl.jsx)(Q6,{path:a,theme:n,type:t}):(0,Nl.jsx)(bne,{type:t,additionalTenantProps:i,additionalNodesProps:r})};return a?(0,Nl.jsx)("div",{className:wne(),children:l()}):null},kne=(0,ht.Z)("tenant-page"),Sne=function(){return{triggerExpand:!1,triggerCollapse:!1,collapsed:Boolean(localStorage.getItem(Fi))}};var xne=function(t){var n,i=(0,e.useReducer)(iZ(Fi),void 0,Sne),r=(0,ne.Z)(i,2),o=r[0],a=r[1],s=Q((function(e){return e.schema})),u=s.currentSchemaPath,l=s.currentSchema,c=void 0===l?{}:l,d=Q((function(e){var t,n;return(null===(t=e.schema.data[u])||void 0===t||null===(n=t.PathDescription)||void 0===n?void 0:n.Self)||{}})),h=d.PathType,f=d.PathSubType,p=(null===(n=c.PathDescription)||void 0===n?void 0:n.Self)||{},g=p.PathType,v=p.PathSubType,m=ev((function(e){return e.schema})).error,_=(void 0===m?{}:m).status,y=void 0===_?200:_,b=K(),w=ct(),C=Zt().parse(w.search,{ignoreQueryPrefix:!0}).name;(0,e.useEffect)((function(){b(Dd({path:C}))}),[C,b]),(0,e.useEffect)((function(){b(Dd({path:u}))}),[u,b]),(0,e.useEffect)((function(){b(Nd())}),[u,C,b]),(0,e.useEffect)((function(){C&&b(Vp("tenant",{tenantName:C}))}),[C,b]);var k=403===y;return(0,Nl.jsx)("div",{className:kne(),children:k?(0,Nl.jsx)(Fb,{}):(0,Nl.jsxs)(RA,{defaultSizePaneKey:Zi,defaultSizes:[25,75],triggerCollapse:o.triggerCollapse,triggerExpand:o.triggerExpand,minSize:[36,200],onSplitStartDragAdditional:function(){a(KP.clear)},children:[(0,Nl.jsx)(uZ,{type:h||g,subType:f||v,onCollapseSummary:function(){a(KP.triggerCollapse)},onExpandSummary:function(){a(KP.triggerExpand)},isCollapsed:o.collapsed}),(0,Nl.jsx)(Cne,{type:h||g,additionalTenantProps:t.additionalTenantProps,additionalNodesProps:t.additionalNodesProps})]})})},Lne=$c([function(e){var t,n,i;return null===(t=e.node)||void 0===t||null===(n=t.data)||void 0===n||null===(i=n.SystemStateInfo)||void 0===i?void 0:i[0].NodeId},function(e){var t;return null===(t=e.node)||void 0===t?void 0:t.nodeStructure}],(function(e,t){var n=null===t||void 0===t?void 0:t.StoragePools,i={};null===n||void 0===n||n.forEach((function(t){var n=t.Groups;null===n||void 0===n||n.forEach((function(n){var r,o=null===(r=n.VDisks)||void 0===r?void 0:r.filter((function(t){return t.NodeId===e}));null===o||void 0===o||o.forEach((function(e){var n,r=us(e.VDiskId),o=null===(n=e.PDisk)||void 0===n?void 0:n.PDiskId;i[String(o)]||(i[String(o)]=Rt({vDisks:{}},e.PDisk)),i[String(o)].vDisks[r]=Rt(Rt({},e),{},{StoragePoolName:t.Name})}))}))}));var r=Object.keys(i).reduce((function(e,t){var n=i[t].vDisks,r=Object.keys(n).reduce((function(e,t,i){return e.push(Rt(Rt({},n[t]),{},{id:t,order:i})),e}),[]);return e[t]=Rt(Rt({},i[t]),{},{vDisks:r}),e}),{});return r})),Ene=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ng,n=/\/node\/\d+\/?$/g;return n.test(String(t))?String(t).replace(n,"/node/".concat(e,"/")):"".concat(null!==t&&void 0!==t?t:"","/node/").concat(e,"/")},Dne=function(e){var t=e.nodeId,n=e.pDiskId,i=e.host,r="actors/pdisks/pdisk"+fr(n);return Ene(t,i)+r},Nne=function(e){var t=e.nodeId,n=e.pDiskId,i=e.vDiskSlotId,r=e.host,o="actors/vdisks/vdisk"+fr(n)+"_"+fr(i);return Ene(t,r)+o},Mne=JSON.parse('{"pdisk.developer-ui-button-title":"PDisk Developer UI page","vdisk.developer-ui-button-title":"VDisk Developer UI page"}'),Tne=JSON.parse('{"pdisk.developer-ui-button-title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 PDisk \u0432 Developer UI","vdisk.developer-ui-button-title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 VDisk \u0432 Developer UI"}'),Ine="ydb-node-page";Va.registerKeyset(Fa.En,Ine,Mne),Va.registerKeyset(Fa.Ru,Ine,Tne);var One=Va.keyset(Ine),Ane=(0,ht.Z)("kv-node-structure");function Rne(t){var n,i,r,o,a=t.AllocatedSize,s=t.DiskSpace,u=t.FrontQueues,l=t.Guid,c=t.Replicated,d=t.VDiskState,h=t.VDiskId,f=t.VDiskSlotId,p=t.Kind,g=t.SatisfactionRank,v=t.AvailableSize,m=t.HasUnreadableBlobs,_=t.IncarnationGuid,y=t.InstanceGuid,b=t.StoragePoolName,w=t.ReadThroughput,C=t.WriteThroughput,k=[];(Vne(f)&&k.push({label:"VDisk Slot Id",value:f}),Vne(l)&&k.push({label:"GUID",value:l}),Vne(p)&&k.push({label:"Kind",value:p}),Vne(d)&&k.push({label:"VDisk State",value:d}),Vne(s)&&k.push({label:"Disk Space",value:(0,Nl.jsx)(hy,{status:s})}),Vne(null===g||void 0===g||null===(n=g.FreshRank)||void 0===n?void 0:n.Flag))&&k.push({label:"Fresh Rank Satisfaction",value:(0,Nl.jsx)(hy,{status:null===g||void 0===g||null===(r=g.FreshRank)||void 0===r?void 0:r.Flag})});Vne(null===g||void 0===g||null===(i=g.LevelRank)||void 0===i?void 0:i.Flag)&&k.push({label:"Level Rank Satisfaction",value:(0,Nl.jsx)(hy,{status:null===g||void 0===g||null===(o=g.LevelRank)||void 0===o?void 0:o.Flag})});return k.push({label:"Replicated",value:c?"Yes":"No"}),k.push({label:"Allocated Size",value:hr(a)}),k.push({label:"Available Size",value:hr(v)}),Number(a)>=0&&Number(v)>=0&&k.push({label:"Size",value:(0,Nl.jsx)(jT,{value:a,capacity:Number(a)+Number(v),formatValues:hs,colorizeProgress:!0})}),k.push({label:"Has Unreadable Blobs",value:m?"Yes":"No"}),Vne(_)&&k.push({label:"Incarnation GUID",value:_}),Vne(y)&&k.push({label:"Instance GUID",value:y}),Vne(u)&&k.push({label:"Front Queues",value:(0,Nl.jsx)(hy,{status:u})}),Vne(b)&&k.push({label:"Storage Pool Name",value:b}),k.push({label:"Read Throughput",value:dr(w)}),k.push({label:"Write Throughput",value:dr(C)}),(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsxs)("div",{className:Ane("row"),children:[(0,Nl.jsx)("span",{className:Ane("title"),children:"VDisk "}),(0,Nl.jsx)(hy,{status:"OK"===d?"green":"red",name:us(h)})]}),(0,Nl.jsx)("div",{className:Ane("column"),children:(0,Nl.jsx)(Tl,{className:Ane("section"),info:k})})]})}var Pne=(0,ht.Z)("kv-node-structure");function Zne(e){var t=e.label,n=e.value,i=e.className;return(0,Nl.jsxs)("span",{className:Pne("pdisk-title-item",i),children:[t&&(0,Nl.jsxs)("span",{className:Pne("pdisk-title-item-label"),children:[t,":"]}),(0,Nl.jsx)("span",{className:Pne("pdisk-title-item-value"),children:n})]})}var Fne,jne=(0,ht.Z)("kv-node-structure");!function(e){e.slotId="VDiskSlotId",e.VDiskState="VDiskState",e.Size="Size",e.Info="Info"}(Fne||(Fne={}));var Hne={VDiskSlotId:"Slot id",VDiskState:"Status",Size:"Size",Info:""};function Bne(e){var t=e.pDiskId,n=e.selectedVdiskId,i=e.nodeId;return[{name:Fne.slotId,header:Hne[Fne.slotId],width:100,render:function(e){var r=e.row,o=r.VDiskSlotId,a=null;return Vne(i)&&Vne(t)&&Vne(o)&&(a=Nne({nodeId:i,pDiskId:t,vDiskSlotId:o})),(0,Nl.jsxs)("div",{className:jne("vdisk-id",{selected:r.id===n}),children:[(0,Nl.jsx)("span",{children:o}),a&&(0,Nl.jsx)(_o.z,{size:"s",className:jne("external-button",{hidden:!0}),href:a,target:"_blank",title:One("vdisk.developer-ui-button-title"),children:(0,Nl.jsx)(Ob,{name:"external"})})]})},align:pi.LEFT},{name:Fne.VDiskState,header:Hne[Fne.VDiskState],width:70,render:function(e){var t=e.row;return(0,Nl.jsx)(hy,{status:t.VDiskState===Mu.OK?"green":"red"})},sortAccessor:function(e){return e.VDiskState===Mu.OK?1:0},align:pi.CENTER},{name:Fne.Size,header:Hne[Fne.Size],width:100,render:function(e){var t=e.row;return(0,Nl.jsx)(jT,{value:t.AllocatedSize,capacity:Number(t.AllocatedSize)+Number(t.AvailableSize),formatValues:hs,colorizeProgress:!0})},sortAccessor:function(e){return Number(e.AllocatedSize)},align:pi.CENTER},{name:Fne.Info,header:Hne[Fne.Info],width:70,render:function(e){var t=e.row;return(0,Nl.jsx)(Xy,{placement:["right"],content:(0,Nl.jsx)(Rne,Rt({},t)),tooltipContentClassName:jne("vdisk-details"),children:(0,Nl.jsx)(_o.z,{view:"flat-secondary",className:jne("vdisk-details-button",{selected:t.id===n}),children:(0,Nl.jsx)(Ob,{name:"information",viewBox:"0 0 512 512",height:16,width:16})})})},sortable:!1}]}function zne(t){var n=t.id,i=t.data,r=t.selectedVdiskId,o=t.nodeId,a=t.unfolded,s=(0,e.useState)(null!==a&&void 0!==a&&a),u=(0,ne.Z)(s,2),l=u[0],c=u[1],d=i.TotalSize,h=void 0===d?0:d,f=i.AvailableSize,p=void 0===f?0:f,g=i.Device,v=i.Guid,m=i.PDiskId,_=i.Path,y=i.Realtime,b=i.State,w=i.Category,C=i.SerialNumber,k=i.vDisks,S=Number(h),x=Number(p);return(0,Nl.jsxs)("div",{className:jne("pdisk"),id:n,children:[(0,Nl.jsxs)("div",{className:jne("pdisk-header"),children:[(0,Nl.jsxs)("div",{className:jne("pdisk-title-wrapper"),children:[(0,Nl.jsx)(hy,{status:g}),(0,Nl.jsx)(Zne,{label:"PDiskID",value:m,className:jne("pdisk-title-id")}),(0,Nl.jsx)(Zne,{value:Zu(i),className:jne("pdisk-title-type")}),(0,Nl.jsx)(jT,{value:S-x,capacity:S,formatValues:hs,colorizeProgress:!0,className:jne("pdisk-title-size")}),(0,Nl.jsx)(Zne,{label:"VDisks",value:k.length})]}),(0,Nl.jsx)(_o.z,{onClick:l?function(){c(!1)}:function(){c(!0)},view:"flat-secondary",children:(0,Nl.jsx)(hF,{direction:l?"top":"bottom"})})]}),l&&function(){if((0,q7.isEmpty)(i))return(0,Nl.jsx)("div",{children:"No information about PDisk"});var e=null;Vne(m)&&Vne(o)&&(e=Dne({nodeId:o,pDiskId:m}));var t=[{label:"PDisk Id",value:(0,Nl.jsxs)("div",{className:jne("pdisk-id"),children:[m,e&&(0,Nl.jsx)(_o.z,{size:"s",className:jne("external-button"),href:e,target:"_blank",view:"flat-secondary",title:One("pdisk.developer-ui-button-title"),children:(0,Nl.jsx)(Ob,{name:"external"})})]})}];return Vne(_)&&t.push({label:"Path",value:_}),Vne(v)&&t.push({label:"GUID",value:v}),Vne(w)&&(t.push({label:"Category",value:w}),t.push({label:"Type",value:Zu(i)})),t.push({label:"Allocated Size",value:hr(S-x)}),t.push({label:"Available Size",value:hr(x)}),S>=0&&x>=0&&t.push({label:"Size",value:(0,Nl.jsx)(jT,{value:S-x,capacity:S,formatValues:hs,colorizeProgress:!0,className:jne("size")})}),Vne(b)&&t.push({label:"State",value:b}),Vne(g)&&t.push({label:"Device",value:(0,Nl.jsx)(hy,{status:g})}),Vne(y)&&t.push({label:"Realtime",value:(0,Nl.jsx)(hy,{status:y})}),Vne(C)&&t.push({label:"SerialNumber",value:C}),(0,Nl.jsxs)("div",{children:[(0,Nl.jsx)(Tl,{className:jne("pdisk-details"),info:t}),(0,Nl.jsxs)("div",{className:jne("vdisks-container"),children:[(0,Nl.jsx)("div",{className:jne("vdisks-header"),children:"VDisks"}),(0,Nl.jsx)(pi,{theme:"yandex-cloud",data:k,columns:Bne({nodeId:o,pDiskId:m,selectedVdiskId:r}),settings:Rt(Rt({},Bi),{},{dynamicRender:!1}),rowClassName:function(e){return e.id===r?jne("selected-vdisk"):""}})]})]})}()]})}var Wne=(0,ht.Z)("kv-node-structure");function Vne(e){return null!==e&&void 0!==e}function Yne(e){var t=e.type,n=e.id;return"".concat(t,"-").concat(n)}var Une=new Xg;var Kne=function(t){var n=t.nodeId,i=t.className,r=K(),o=ev(Lne),a=ev((function(e){return e.node})),s=a.loadingStructure,u=a.wasLoadedStructure,l=en.parse(window.location.href,!0).query,c=l.pdiskId,d=l.vdiskId,h=(0,e.useRef)(null),f=(0,e.useRef)(!1),p=(0,e.useRef)(!1);return(0,e.useEffect)((function(){return r(kl(n)),Une.start(),Une.fetch((function(){return r(kl(n))})),function(){p.current=!1,f.current=!1,Une.stop()}}),[n,r]),(0,e.useEffect)((function(){!(0,q7.isEmpty)(o)&&h.current&&(f.current=!0)}),[o]),(0,e.useEffect)((function(){if(f.current&&!p.current&&h.current){var e=document.getElementById(Yne({type:"pdisk",id:c})),t=0;if(d){var n,i=null===(n=o[c])||void 0===n?void 0:n.vDisks,r=null===i||void 0===i?void 0:i.find((function(e){return e.id===d})),a=r?document.querySelector(".data-table"):void 0,s=(null===r||void 0===r?void 0:r.order)||0;a&&(t+=a.offsetTop+40*s)}e&&(h.current.scrollTo({behavior:"smooth",top:t||e.offsetTop}),p.current=!0)}}),[o,c,d]),(0,Nl.jsx)("div",{className:Wne(),ref:h,children:(0,Nl.jsx)("div",{className:i,children:s&&!u?(0,Nl.jsx)(jI,{size:"m"}):function(){var e=Object.keys(o);return e.length>0?e.map((function(e){return(0,Nl.jsx)(zne,{data:o[e],id:Yne({type:"pdisk",id:e}),unfolded:c===e,selectedVdiskId:d,nodeId:n},e)})):"There is no information about node structure."}()})})},qne=(0,ht.Z)("basic-node-viewer"),Gne=function(e){var t=e.node,n=e.additionalNodesProps,i=e.className,r=null!==n&&void 0!==n&&n.getNodeRef?n.getNodeRef(t)+"internal":void 0;return(0,Nl.jsx)("div",{className:qne(null,i),children:t?(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)("div",{className:qne("title"),children:"Node"}),(0,Nl.jsx)(hy,{status:t.SystemState,name:t.Host}),r&&(0,Nl.jsx)("a",{rel:"noopener noreferrer",className:qne("link",{external:!0}),href:r,target:"_blank",children:(0,Nl.jsx)(Ob,{name:"external"})}),(0,Nl.jsxs)("div",{className:qne("id"),children:[(0,Nl.jsx)("label",{className:qne("label"),children:"NodeID"}),(0,Nl.jsx)("label",{children:t.NodeId})]}),t.DataCenter&&(0,Nl.jsx)(RO,{tags:[t.DataCenter]}),t.Roles&&(0,Nl.jsx)(RO,{tags:t.Roles,tagsType:"blue"})]}):(0,Nl.jsx)("div",{className:"error",children:"no data"})})},$ne=(0,ht.Z)("ydb-pool-usage"),Qne=function(e){var t="green";return e>60&&e<=80?t="yellow":e>80&&(t="red"),t},Xne=function(e){var t=e.data,n=void 0===t?{}:t,i=n.Threads,r=n.Name,o=void 0===r?"Unknown":r,a=n.Usage,s=void 0===a?0:a,u=s&&i,l=Math.floor(100*s),c=l>100?100:l;return(0,Nl.jsxs)("div",{className:$ne(),children:[(0,Nl.jsxs)("div",{className:$ne("info"),children:[(0,Nl.jsx)("div",{className:$ne("pool-name"),children:o}),u&&(0,Nl.jsxs)("div",{className:$ne("value"),children:[(0,Nl.jsxs)("div",{className:$ne("percents"),children:[l<1?"<1":l,"%"]}),(0,Nl.jsxs)("div",{className:$ne("threads"),children:["(\xd7",i,")"]})]})]}),(0,Nl.jsx)("div",{className:$ne("visual"),children:(0,Nl.jsx)("div",{className:$ne("usage-line",{type:Qne(c)}),style:{width:"".concat(c,"%")}})})]})},Jne=(0,ht.Z)("full-node-viewer"),eie=function(e){var t,n,i,r,o=e.node,a=e.className,s=null===o||void 0===o||null===(t=o.Endpoints)||void 0===t?void 0:t.map((function(e){return{label:e.Name,value:e.Address}})),u=[];null!==o&&void 0!==o&&null!==(n=o.Tenants)&&void 0!==n&&n.length&&u.push({label:"Database",value:o.Tenants[0]}),u.push({label:"Version",value:null===o||void 0===o?void 0:o.Version},{label:"Uptime",value:bs(null===o||void 0===o?void 0:o.StartTime)},{label:"DC",value:null===o||void 0===o?void 0:o.DataCenterDescription},{label:"Rack",value:null===o||void 0===o?void 0:o.Rack});var l=null===o||void 0===o||null===(i=o.LoadAverage)||void 0===i?void 0:i.map((function(e,t){return{label:Ci[t],value:(0,Nl.jsx)(jT,{value:e,percents:!0,colorizeProgress:!0,capacity:100})}}));return(0,Nl.jsx)("div",{className:"".concat(Jne()," ").concat(a),children:o?(0,Nl.jsxs)("div",{className:Jne("common-info"),children:[(0,Nl.jsxs)("div",{children:[(0,Nl.jsx)("div",{className:Jne("section-title"),children:"Pools"}),(0,Nl.jsx)("div",{className:Jne("section",{pools:!0}),children:null===o||void 0===o||null===(r=o.PoolStats)||void 0===r?void 0:r.map((function(e,t){return(0,Nl.jsx)(Xne,{data:e},t)}))})]}),s&&s.length&&(0,Nl.jsx)(Tl,{title:"Endpoints",className:Jne("section"),info:s}),(0,Nl.jsx)(Tl,{title:"Common info",className:Jne("section"),info:u}),(0,Nl.jsx)(Tl,{title:"Load average",className:Jne("section",{average:!0}),info:l})]}):(0,Nl.jsx)("div",{className:"error",children:"no data"})})},tie=(0,ht.Z)("node"),nie="Storage",iie=new Xg;var rie=function(t){var n,i,r=K(),o=ct(),a=ev((function(e){return e.node})),s=a.loading,u=a.wasLoaded,l=a.error,c=a.data,d=null===c||void 0===c||null===(n=c.SystemStateInfo)||void 0===n?void 0:n[0],h=(null!==(i=dt(bg.node))&&void 0!==i?i:Object.create(null)).params,f=h.id,p=h.activeTab,g=vg(o).tenantName,v=e.useMemo((function(){var e,t=null===d||void 0===d||null===(e=d.Roles)||void 0===e?void 0:e.find((function(e){return e===nie})),n=p;return t||p!==QN||(n=JN),{activeTabVerified:n,nodeTabs:(t?tM:tM.filter((function(e){return e.id!==QN}))).map((function(e){return Rt(Rt({},e),{},{title:e.name})}))}}),[p,d]),m=v.activeTabVerified,_=v.nodeTabs;return e.useEffect((function(){var e,t=(null===d||void 0===d||null===(e=d.Tenants)||void 0===e?void 0:e[0])||(null===g||void 0===g?void 0:g.toString());r(Vp("node",{clusterTab:iA.nodes,tenantName:t,nodeId:f}))}),[r,d,f,g]),e.useEffect((function(){var e=function(){return r(Cl(f))};return e(),iie.start(),iie.fetch((function(){return e()})),function(){iie.stop(),r({type:bl})}}),[r,f]),s&&!u?(0,Nl.jsx)(jI,{size:"l"}):l?(0,Nl.jsx)("div",{children:l.statusText}):d?(0,Nl.jsxs)("div",{className:tie(null,t.className),children:[(0,Nl.jsx)(Gne,{node:d,additionalNodesProps:t.additionalNodesProps,className:tie("header")}),(0,Nl.jsx)("div",{className:tie("tabs"),children:(0,Nl.jsx)(Wg,{size:"l",items:_,activeTab:m,wrapTo:function(e,t){var n=e.id;return(0,Nl.jsx)(cv,{to:_g(bg.node,{id:f,activeTab:n}),className:tie("tab"),children:t},n)},allowNotSelected:!0})}),(0,Nl.jsx)("div",{className:tie("content"),children:function(){switch(p){case QN:return(0,Nl.jsx)("div",{className:tie("storage"),children:(0,Nl.jsx)(IT,{nodeId:f})});case XN:return(0,Nl.jsx)(M7,{nodeId:f,className:tie("node-page-wrapper")});case JN:return(0,Nl.jsx)(eie,{node:d,className:tie("overview-wrapper")});case eM:return(0,Nl.jsx)(Kne,{className:tie("node-page-wrapper"),nodeId:f});default:return!1}}()})]}):(0,Nl.jsx)("div",{className:"error",children:"no node data"})},oie=[{name:"Generation",align:pi.RIGHT,render:function(e){return e.row.generation}},{name:"Change time",align:pi.RIGHT,sortable:!1,render:function(e){var t=e.row;return bs(t.changeTime)}},{name:"State",sortable:!1,render:function(e){return e.row.state}},{name:"Follower ID",sortable:!1,render:function(e){var t=e.row;return t.leader?"leader":t.followerId}},{name:"Node ID",align:pi.RIGHT,sortable:!1,render:function(e){var t=e.row;return(0,Nl.jsx)(vv,{to:nM(t.nodeId),children:t.nodeId})}},{name:"Node FQDN",sortable:!1,render:function(e){var t=e.row;return t.fqdn?(0,Nl.jsx)("div",{className:mie("host"),children:(0,Nl.jsx)(hy,{name:t.fqdn,showStatus:!1,hasClipboardButton:!0})}):(0,Nl.jsx)("span",{children:"\u2014"})}}],aie={displayIndices:!1},sie=function(e){var t=e.history;return(0,Nl.jsx)(pi,{theme:"yandex-cloud",data:t,columns:oie,settings:aie,initialSortOrder:{columnId:"Generation",order:pi.DESCENDING}})},uie=function(e){var t=e.tablet,n=e.tenantPath,i=t.ChangeTime,r=t.Generation,o=t.FollowerId,a=t.NodeId,s=t.HiveId,u=t.State,l=t.Type,c=t.TenantId,d=(void 0===c?{}:c).SchemeShard,h=s&&"0"!==s,f=u===hi.Active,p=[{label:"Database",value:n||"-"}];return h&&p.push({label:"HiveId",value:(0,Nl.jsx)(yv,{href:_g(bg.tablet,{id:s}),target:"_blank",children:s})}),d&&p.push({label:"SchemeShard",value:(0,Nl.jsx)(yv,{href:_g(bg.tablet,{id:d}),target:"_blank",children:d})}),p.push({label:"Type",value:l},{label:"State",value:u}),f&&p.push({label:"Uptime",value:bs(i)}),p.push({label:"Generation",value:r},{label:"Node",value:(0,Nl.jsx)(cv,{className:mie("link"),to:nM(String(a)),children:a})}),o&&p.push({label:"Follower",value:o}),(0,Nl.jsx)(Tl,{info:p})},lie=(0,ht.Z)("ydb-critical-dialog"),cie=function(t){var n=t.visible,i=t.text,r=t.onClose,o=t.onConfirm,a=t.onConfirmActionFinish,s=(0,e.useState)(!1),u=(0,ne.Z)(s,2),l=u[0],c=u[1],d=function(){var e=dn(fn().mark((function e(t){return fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.preventDefault(),c(!0),e.abrupt("return",o().then((function(){a(),c(!1),r()})));case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return(0,Nl.jsx)(NZ,{open:n,hasCloseButton:!1,className:lie(),size:"s",onClose:r,children:(0,Nl.jsxs)("form",{onSubmit:d,children:[(0,Nl.jsxs)(NZ.Body,{className:lie("body"),children:[(0,Nl.jsx)("span",{className:lie("warning-icon"),children:(0,Nl.jsx)(Ob,{name:"dialog-warning",width:"24",height:"22",viewBox:"0 0 24 22"})}),i]}),(0,Nl.jsx)(NZ.Footer,{loading:l,preset:"default",textButtonApply:"Confirm",textButtonCancel:"Cancel",propsButtonApply:{type:"submit"},onClickButtonCancel:r,onClickButtonApply:function(){}})]})})},die=JSON.parse('{"tablet.header":"Tablet","controls.kill":"Restart","controls.stop":"Stop","controls.resume":"Resume","dialog.kill":"The tablet will be restarted. Do you want to proceed?","dialog.stop":"The tablet will be stopped. Do you want to proceed?","dialog.resume":"The tablet will be resumed. Do you want to proceed?","emptyState":"The tablet was not found"}'),hie=JSON.parse('{"tablet.header":"\u0422\u0430\u0431\u043b\u0435\u0442\u043a\u0430","controls.kill":"\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c","controls.stop":"\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c","controls.resume":"\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c","dialog.kill":"\u0422\u0430\u0431\u043b\u0435\u0442\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430. \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?","dialog.stop":"\u0422\u0430\u0431\u043b\u0435\u0442\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430. \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?","dialog.resume":"\u0422\u0430\u0431\u043b\u0435\u0442\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430. \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?","emptyState":"\u0422\u0430\u0431\u043b\u0435\u0442\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430"}'),fie="ydb-tablet-page";Va.registerKeyset(Fa.En,fie,die),Va.registerKeyset(Fa.Ru,fie,hie);var pie,gie=Va.keyset(fie);!function(e){e.kill="kill",e.stop="stop",e.resume="resume"}(pie||(pie={}));var vie=function(t){var n=t.tablet,i=t.fetchData,r=n.TabletId,o=n.HiveId,a=(0,e.useState)(!1),s=(0,ne.Z)(a,2),u=s[0],l=s[1],c=(0,e.useState)(null),d=(0,ne.Z)(c,2),h=d[0],f=d[1],p=(0,e.useState)(!1),g=(0,ne.Z)(p,2),v=g[0],m=g[1];(0,e.useEffect)((function(){m(!1)}),[n]);var _=function(e){return function(){l(!0),f(e)}},y=_(pie.kill),b=_(pie.stop),w=_(pie.resume),C=function(){l(!1),f(null)},k=function(){return m(!0),window.api.killTablet(r)},S=function(){return m(!0),window.api.stopTablet(r,o)},x=function(){return m(!0),window.api.resumeTablet(r,o)},L=n.State!==hi.Stopped&&n.State!==hi.Dead,E=n.State===hi.Stopped||n.State===hi.Deleted;return(0,Nl.jsxs)("div",{className:mie("controls"),children:[(0,Nl.jsx)(_o.z,{onClick:y,view:"action",loading:v,className:mie("control"),children:gie("controls.kill")}),o&&"0"!==o?(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)(_o.z,{onClick:b,view:"action",disabled:E,loading:!E&&v,className:mie("control"),children:gie("controls.stop")}),(0,Nl.jsx)(_o.z,{onClick:w,view:"action",disabled:L,loading:!L&&v,className:mie("control"),children:gie("controls.resume")})]}):null,function(){if(!u)return null;switch(h){case pie.kill:return(0,Nl.jsx)(cie,{visible:u,text:gie("dialog.kill"),onClose:C,onConfirm:k,onConfirmActionFinish:i});case pie.stop:return(0,Nl.jsx)(cie,{visible:u,text:gie("dialog.stop"),onClose:C,onConfirm:S,onConfirmActionFinish:i});case pie.resume:return(0,Nl.jsx)(cie,{visible:u,text:gie("dialog.resume"),onClose:C,onConfirm:x,onConfirmActionFinish:i});default:return null}}()]})},mie=(0,ht.Z)("tablet-page"),_ie=function(){var t,n=(0,e.useRef)(!0),i=K(),r=ct(),o=function(){var e=ut(We).match;return e?e.params:{}}(),a=o.id,s=ev((function(e){return e.tablet})),u=s.data,l=void 0===u?{}:u,c=s.loading,d=s.id,h=s.history,f=void 0===h?[]:h,p=s.tenantPath,g=s.error,v=vg(r),m=v.nodeId,_=v.tenantName,y=v.type,b=(null===(t=l.NodeId)||void 0===t?void 0:t.toString())||(null===m||void 0===m?void 0:m.toString()),w=p||(null===_||void 0===_?void 0:_.toString()),C=l.Type||(null===y||void 0===y?void 0:y.toString());(0,e.useEffect)((function(){return function(){i({type:fh})}}),[i]),(0,e.useEffect)((function(){n.current&&l&&l.TenantId&&(i(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return oa({request:window.api.getTabletDescribe(e),actions:hh,dataHandler:function(t){var n=e.SchemeShard,i=e.PathId;return{tenantPath:t.Path||"".concat(n,":").concat(i)}}})}(l.TenantId)),n.current=!1)}),[i,l]);var k=(0,e.useCallback)((function(){i(function(e){return oa({request:Promise.all([window.api.getTablet({id:e}),window.api.getTabletHistory({id:e}),window.api.getNodesList()]),actions:dh,dataHandler:function(e){var t=(0,ne.Z)(e,3),n=t[0],i=t[1],r=t[2],o=ka(r),a=Object.keys(i).reduce((function(e,t){var n,r=null===(n=i[t])||void 0===n?void 0:n.TabletStateInfo;if(r&&r.length){var a=r.find((function(e){return e.Leader}))||r[0],s=a.ChangeTime,u=a.Generation,l=a.State,c=a.Leader,d=a.FollowerId,h=o&&t?o.get(Number(t)):void 0;e.push({nodeId:t,generation:u,changeTime:s,state:l,leader:c,followerId:d,fqdn:h})}return e}),[]),s=n.TabletStateInfo,u=void 0===s?[]:s,l=(0,ne.Z)(u,1)[0];return{tabletData:void 0===l?{}:l,historyData:a}}})}(a))}),[i,a]);Jg(k,[k],!0),(0,e.useEffect)((function(){i(Vp("tablet",{nodeIds:b?[b]:[],tenantName:w,tabletId:a,tabletType:C}))}),[i,w,a,b,C]);if(c&&a!==d&&n.current)return(0,Nl.jsx)(jI,{size:"l"});if(g)return(0,Nl.jsx)(Sb,{error:g});if(!l||!Object.keys(l).length)return(0,Nl.jsx)("div",{className:mie("placeholder"),children:(0,Nl.jsx)(Pb,{title:gie("emptyState")})});var S=l.TabletId,x=l.Overall,L=l.Leader,E=[{name:"".concat(xi," - tablet"),path:"/tablets?TabletID=".concat(S)}];return(0,Nl.jsx)("div",{className:mie(),children:(0,Nl.jsxs)("div",{className:mie("pane-wrapper"),children:[(0,Nl.jsxs)("div",{className:mie("left-pane"),children:[(0,Nl.jsx)("ul",{className:mie("links"),children:E.map((function(e,t){return(0,Nl.jsx)("li",{className:mie("link",{external:!0}),children:(0,Nl.jsx)(yv,{href:"".concat(ng).concat(e.path),target:"_blank",children:e.name})},t)}))}),(0,Nl.jsxs)("div",{className:mie("row",{header:!0}),children:[(0,Nl.jsx)("span",{className:mie("title"),children:gie("tablet.header")}),(0,Nl.jsx)(hy,{status:x,name:S}),(0,Nl.jsx)("a",{rel:"noopener noreferrer",className:mie("link",{external:!0}),href:"".concat(ng,"/tablets?TabletID=").concat(S),target:"_blank",children:(0,Nl.jsx)(Ob,{name:"external"})}),L&&(0,Nl.jsx)(OO,{text:"Leader",type:"blue"}),(0,Nl.jsx)("span",{className:mie("loader"),children:c&&(0,Nl.jsx)(jI,{size:"s"})})]}),(0,Nl.jsx)(uie,{tablet:l,tenantPath:w}),(0,Nl.jsx)(vie,{tablet:l,fetchData:k})]}),(0,Nl.jsx)("div",{className:mie("rigth-pane"),children:(0,Nl.jsx)(sie,{history:f})})]})})},yie=n(5647),bie=(0,ht.Z)("tablets-filters"),wie=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){var e;(0,X.Z)(this,n);for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))).state={nodeFilter:[],tenantPath:""},e.reloadDescriptor=-1,e.makeRequest=function(){var t=e.state,n=t.nodeFilter,i=t.tenantPath;e.props.getTabletsInfo({nodes:n,path:[i]})},e.getTablets=function(){var t=e.props.timeoutForRequest;clearInterval(e.reloadDescriptor),e.reloadDescriptor=setTimeout((function(){e.makeRequest(),e.reloadDescriptor=-1}),t)},e.handleNodeFilterChange=function(t){e.setState({nodeFilter:t},(function(){e.props.clearWasLoadingFlag(),e.makeRequest()}))},e.handleStateFilterChange=function(t){(0,e.props.setStateFilter)(t)},e.handleTypeFilterChange=function(t){(0,e.props.setTypeFilter)(t)},e.renderTablet=function(t,n){var i=e.props,r=i.filteredTablets,o=i.size;return(0,Nl.jsx)(jO,{tablet:r[t],tenantName:e.state.tenantPath,size:o,className:bie("tablet")},n)},e.renderContent=function(){var t=e.state,n=t.nodeFilter,i=t.tenantPath,r=e.props,o=r.tablets,a=r.filteredTablets,s=r.nodes,u=r.stateFilter,l=r.typeFilter,c=r.error,d=by.map((function(e){return{value:e,content:e}})),h=Array.from((0,yie.Z)(Set,[on().map(o,(function(e){return e.Type}))])).map((function(e){return{value:e,content:e}})),f=on().map(s,(function(e){return{content:e.Id,value:e.Id,meta:e.Host}}));return(0,Nl.jsxs)("div",{className:bie(),children:[i?(0,Nl.jsx)("div",{className:bie("tenant"),children:(0,Nl.jsxs)(Nl.Fragment,{children:[(0,Nl.jsx)("span",{className:bie("label"),children:"Database: "})," ",i]})}):null,(0,Nl.jsx)(kie,{nodesForSelect:f,nodeFilter:n,onChangeNodes:e.handleNodeFilterChange,states:d,stateFilter:u,onChangeStates:e.handleStateFilterChange,types:h,typeFilter:l,onChangeTypes:e.handleTypeFilterChange}),c&&(0,Nl.jsx)("div",{className:"error",children:c}),a.length>0?(0,Nl.jsx)("div",{className:bie("items"),children:(0,Nl.jsx)(b7(),{itemRenderer:e.renderTablet,length:a.length,type:"uniform"})}):!c&&(0,Nl.jsx)("div",{className:bie("empty-message"),children:"no tablets"})]})},e}return(0,J.Z)(n,[{key:"componentDidMount",value:function(){var e=this,t=this.props,i=t.setStateFilter,r=t.setTypeFilter,o=t.setHeaderBreadcrumbs,a=Zt().parse(this.props.location.search,{ignoreQueryPrefix:!0}),s=a.nodeIds,u=a.type,l=a.path,c=a.state,d=n.parseNodes(s);c&&i(n.getStateFiltersFromColor(c));u&&r([u]),this.setState({nodeFilter:d,tenantPath:l},(function(){e.makeRequest()})),o("tablets",{tenantName:l})}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.loading,i=t.error;!i&&e.path&&this.props.path&&e.path!==this.props.path&&(this.props.clearWasLoadingFlag(),this.getTablets()),i||n||-1!==this.reloadDescriptor||this.getTablets()}},{key:"componentWillUnmount",value:function(){clearInterval(this.reloadDescriptor)}},{key:"render",value:function(){var e=this.props,t=e.loading,i=e.wasLoaded,r=e.error;return t&&!i?n.renderLoader():r&&"object"===typeof r?403===r.status?(0,Nl.jsx)(Fb,{}):(0,Nl.jsx)("div",{children:r.statusText}):this.renderContent()}}],[{key:"renderLoader",value:function(){return(0,Nl.jsx)("div",{className:"loader",children:(0,Nl.jsx)(KE,{size:"l"})})}}]),n}(e.Component);wie.parseNodes=function(e){if(Array.isArray(e))return e.map(Number).filter(Number.isInteger)},wie.getStateFiltersFromColor=function(e){return wy[e]||[e]},wie.CONTROL_WIDTH=220,wie.POPUP_WIDTH=300;var Cie=function(e){var t=e.nodesForSelect,n=e.nodeFilter,i=e.onChangeNodes,r=e.states,o=e.stateFilter,a=e.onChangeStates,s=e.types,u=e.typeFilter,l=e.onChangeTypes;return(0,Nl.jsxs)("div",{className:bie("filters"),children:[(0,Nl.jsx)("div",{className:bie("filter-wrapper"),children:(0,Nl.jsx)(MD,{multiple:!0,label:"Node ID",width:wie.CONTROL_WIDTH,popupWidth:wie.POPUP_WIDTH,placeholder:"All",options:t,value:n,onUpdate:i,renderOption:function(e){return(0,Nl.jsxs)("div",{className:bie("node"),children:[(0,Nl.jsx)("div",{children:e.content}),(0,Nl.jsx)("div",{className:bie("node-meta"),title:e.meta,children:e.meta})]})},getOptionHeight:function(){return 40}})}),(0,Nl.jsx)("div",{className:bie("filter-wrapper"),children:(0,Nl.jsx)(MD,{multiple:!0,label:"multiple",width:wie.CONTROL_WIDTH,placeholder:"All",options:r,value:o,onUpdate:a})}),(0,Nl.jsx)("div",{className:bie("filter-wrapper"),children:(0,Nl.jsx)(MD,{multiple:!0,label:"Types",width:wie.CONTROL_WIDTH,placeholder:"All",options:s,value:u,onUpdate:l})})]})},kie=e.memo(Cie,(function(e,t){return on().isEqual(e.nodeFilter,t.nodeFilter)&&on().isEqual(e.stateFilter,t.stateFilter)&&on().isEqual(e.typeFilter,t.typeFilter)})),Sie=z((function(e){var t=e.tabletsFilters,n=t.nodes,i=t.wasLoaded,r=t.loading,o=t.timeoutForRequest,a=t.stateFilter,s=t.typeFilter,u=t.error;return{tablets:_f(e),filteredTablets:yf(e),nodes:n,timeoutForRequest:o,wasLoaded:i,loading:r,stateFilter:a,typeFilter:s,error:u}}),{getTabletsInfo:function(e){return oa({request:Promise.all([window.api.getTabletsInfo(e),window.api.getNodesList()]),actions:vf})},clearWasLoadingFlag:function(){return{type:"CLEAR_WAS_LOADING_TABLETS"}},setStateFilter:function(e){return{type:"SET_STATE_FILTER",data:e}},setTypeFilter:function(e){return{type:"SET_TYPE_FILTER",data:e}},setHeaderBreadcrumbs:Vp})(wie),xie={top:0,right:0,bottom:0,left:0};var Lie=z((function(e){var t=e.tooltip,n=t.toolTipVisible,i=t.currentHoveredRef,r=t.data,o=t.template,a=t.additionalData;return{toolTipVisible:n,currentHoveredRef:i,data:r,template:o,additionalData:a,positions:t.positions,popupClassName:(a||{}).popupClassName}}),{hideTooltip:ec})((function(t){var n,i,r=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.rect,i=t.contextElement,r=e.useRef(xie),o=e.useRef({contextElement:i,getBoundingClientRect:function(){var e=r.current,t=e.top,n=e.right,i=e.bottom,o=e.left;return{top:t,right:n,bottom:i,left:o,width:n-o,height:i-t}}});if(o.current.contextElement=i,n){var a=n.top,s=void 0===a?0:a,u=n.left,l=void 0===u?0:u,c=n.right,d=void 0===c?l:c,h=n.bottom,f=void 0===h?s:h;r.current={top:s,right:d,bottom:f,left:l}}else r.current=xie;return o}({rect:{top:null===(n=t.positions)||void 0===n?void 0:n.top,left:null===(i=t.positions)||void 0===i?void 0:i.left}});(0,e.useEffect)((function(){return window.addEventListener("scroll",o,!0),function(){window.removeEventListener("scroll",o)}}),[]);var o=function(){var e=t.hideTooltip;t.toolTipVisible&&setTimeout((function(){return e()}),500)},a=t.className,s=void 0===a?"":a,u=t.toolTipVisible,l=t.currentHoveredRef,c=t.data,d=t.additionalData,h=t.positions;return(0,Nl.jsx)("div",{className:"redux-tooltip ".concat(s),children:h?function(n,i,o,a){var s=t.template,u=t.popupClassName,l=t.hideTooltip;return(0,Nl.jsx)(e.Fragment,{children:(0,Nl.jsx)(J_,{open:n,placement:["top","bottom","left","right"],contentClassName:u,anchorRef:r,onOutsideClick:l,children:o&&s(o,a)})})}(u,0,c,d):function(e,n,i,r){var o=t.template,a=t.popupClassName,s=t.hideTooltip;return(0,Nl.jsx)(J_,{open:e,anchorRef:{current:n},hasArrow:!0,placement:["top","bottom","left","right"],className:a,onOutsideClick:s,children:i&&o(i,r)})}(u,l,c,d)})})),Eie=(0,ft.Ge)("breadcrumbs");var Die=e.memo((function(t){var n=t.data,i=t.isCurrent,r=t.isPrevCurrent,o=t.renderItem,a=n.text,s=n.title,u=n.href,l=n.action,c=s||a;return r||!i?e.createElement(yv,{key:a,view:"secondary",href:u,title:c,onClick:l,className:Eie("item",{"prev-current":r})},o?o(n,i,r):a):e.createElement("div",{title:c,className:Eie("item",{current:!0})},o?o(n,i,r):a)}));Die.displayName="Breadcrumbs.Item";var Nie=No({en:JSON.parse('{"label_more":"Show more"}'),ru:JSON.parse('{"label_more":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435"}')},"Breadcrumbs"),Mie=(0,ft.Ge)("breadcrumbs");function Tie(t){var n=t.popupStyle,i=t.popupPlacement,r=t.items;return e.createElement(pO,{items:r,popupProps:{className:Mie("popup",{staircase:"staircase"===n}),placement:i},renderSwitcher:function(t){var n=t.onClick;return e.createElement(yv,{view:"secondary",title:Nie("label_more"),className:Mie("item",{more:!0}),onClick:n},"...")}})}Tie.displayName="Breadcrumbs.More";var Iie=(0,ft.Ge)("breadcrumbs");function Oie(t){var n=t.renderItemDivider;return e.createElement("div",{"aria-hidden":!0,className:Iie("divider")},n?n():"/")}Oie.displayName="Breadcrumbs.Separator";var Aie,Rie,Pie=200,Zie=(0,ft.Ge)("breadcrumbs");!function(e){e[e.One=1]="One",e[e.Two=2]="Two"}(Aie||(Aie={})),function(e){e[e.Zero=0]="Zero",e[e.One=1]="One"}(Rie||(Rie={}));var Fie=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(t){var r;return(0,X.Z)(this,i),(r=n.call(this,t)).handleResize=function(){var e=i.prepareInitialState(r.props);r.setState(e,r.recalculate)},r.handleResize=Fy()(r.handleResize,Pie),r.resizeObserver=new ResizeObserver(r.handleResize),r.container=e.createRef(),r.state=i.prepareInitialState(t),r}return(0,J.Z)(i,[{key:"componentDidMount",value:function(){this.recalculate(),this.resizeObserver.observe(this.container.current)}},{key:"componentDidUpdate",value:function(e){e.items!==this.state.allItems&&this.recalculate()}},{key:"componentWillUnmount",value:function(){this.resizeObserver.disconnect()}},{key:"render",value:function(){var t=this.props,n=t.className,i=t.qa,r=this.state.calculated,o=this.renderRootItem();return e.createElement("div",{className:Zie({calculated:r?"yes":"no"},n),"data-qa":i},e.createElement("div",{className:Zie("inner"),ref:this.container},o,this.renderMoreItem(),this.renderVisibleItems()))}},{key:"renderItem",value:function(t,n,i){var r=this.props.renderItemContent;return e.createElement(Die,{data:t,isCurrent:n,isPrevCurrent:i,renderItem:r})}},{key:"renderItemDivider",value:function(){var t=this.props.renderItemDivider;return e.createElement(Oie,{renderItemDivider:t})}},{key:"renderRootItem",value:function(){var t=this.props,n=t.renderRootContent,i=t.renderItemContent,r=this.state,o=r.rootItem,a=0===r.visibleItems.length;return o?e.createElement(Die,{data:o,isCurrent:a,isPrevCurrent:!1,renderItem:n||i}):null}},{key:"renderVisibleItems",value:function(){var t=this;return this.state.visibleItems.map((function(n,i,r){var o=i===r.length-1,a=i===r.length-2;return e.createElement(e.Fragment,{key:i},t.renderItemDivider(),t.renderItem(n,o,a))}))}},{key:"renderMoreItem",value:function(){var t=this.state.hiddenItems;if(0===t.length)return null;var n=this.props,i=n.popupStyle,r=n.popupPlacement,o=n.renderItemDivider;return e.createElement(e.Fragment,null,e.createElement(Oie,{renderItemDivider:o}),e.createElement(Tie,{items:t,popupPlacement:r,popupStyle:i}))}},{key:"recalculate",value:function(){var e=this.props,t=e.items,n=e.lastDisplayedItemsCount,i=e.firstDisplayedItemsCount;if(this.container.current){for(var r=Array.from(this.container.current.querySelectorAll(".".concat(Zie("divider")))),o=Array.from(this.container.current.querySelectorAll(".".concat(Zie("item")))),a=this.container.current.offsetWidth,s=o.map((function(e){return e.scrollWidth})),u=r.map((function(e){return e.offsetWidth})),l=s.reduce((function(e,t,i,r){var o=r.length-1===i,a=n===Aie.Two&&r.length-2===i;return o||a?e+Math.min(t,200):e+t}),0),c=l+u.reduce((function(e,t){return e+t}),0),d=1;c>a&&d<o.length-n;)1===d&&(c+=34+u[d]),c-=s[d]+u[d],d++;this.setState({calculated:!0,visibleItems:t.slice(d-(1-i)),hiddenItems:t.slice(i,d-(1-i))})}}}],[{key:"prepareInitialState",value:function(e){var t=e.firstDisplayedItemsCount;return{calculated:!1,rootItem:t?e.items[0]:void 0,visibleItems:e.items.slice(t),hiddenItems:[],allItems:e.items}}},{key:"getDerivedStateFromProps",value:function(e,t){return t.allItems!==e.items?i.prepareInitialState(e):null}}]),i}(e.Component);Fie.defaultProps={popupPlacement:["bottom","top"]};var jie=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M11 2.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM14 4a3 3 0 1 0-5.895.79L6.15 5.908a3 3 0 1 0 0 4.185l1.955 1.117A3.003 3.003 0 0 0 11 15a3 3 0 1 0-2.15-5.092L6.895 8.79a3.003 3.003 0 0 0 0-1.58L8.85 6.092A3 3 0 0 0 14 4Zm-3 6.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM2.5 8a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Z",clipRule:"evenodd"}))},Hie=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M11.615 4.888c.814-.375.885-.714.885-.888 0-.174-.071-.513-.885-.888C10.8 2.737 9.538 2.5 8 2.5c-1.538 0-2.799.237-3.615.612-.814.375-.885.714-.885.888 0 .174.071.513.885.888C5.2 5.263 6.462 5.5 8 5.5c1.538 0 2.799-.237 3.615-.612Zm.885 1.235C11.4 6.708 9.792 7 8 7c-1.792 0-3.4-.292-4.5-.877V8c0 .174.071.513.885.888C5.2 9.263 6.462 9.5 8 9.5c1.538 0 2.799-.237 3.615-.612.814-.375.885-.714.885-.888V6.123Zm0 4C11.4 10.708 9.792 11 8 11c-1.792 0-3.4-.293-4.5-.877V12c0 .174.071.513.885.887.816.377 2.077.613 3.615.613 1.538 0 2.799-.236 3.615-.613.814-.374.885-.713.885-.887v-1.877ZM14 4c0-2-2.686-3-6-3S2 2 2 4v8c0 2 2.686 3 6 3s6-1 6-3V4Z",clipRule:"evenodd"}))},Bie=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M12 8.5a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5H4A1.5 1.5 0 0 1 2.5 11v-1A1.5 1.5 0 0 1 4 8.5h8Zm.89-1.366L11.488 4.33a1.5 1.5 0 0 0-1.342-.829H5.854a1.5 1.5 0 0 0-1.342.83L3.11 7.133A3 3 0 0 1 4 7h8a3 3 0 0 1 .89.134ZM15 9.18V11a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V9.18a5 5 0 0 1 .528-2.236L3.17 3.658A3 3 0 0 1 5.854 2h4.292a3 3 0 0 1 2.683 1.658l1.643 3.286A5 5 0 0 1 15 9.18Zm-6 .57a.75.75 0 0 0 0 1.5h2.5a.75.75 0 0 0 0-1.5H9Z",clipRule:"evenodd"}))},zie=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("g",{clipPath:"url(#a)"},e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M7 1.25a.75.75 0 0 0-1.5 0V2.5a3 3 0 0 0-3 3H1.25a.75.75 0 0 0 0 1.5H2.5v2H1.25a.75.75 0 0 0 0 1.5H2.5a3 3 0 0 0 3 3v1.25a.75.75 0 0 0 1.5 0V13.5h2v1.25a.75.75 0 0 0 1.5 0V13.5a3 3 0 0 0 3-3h1.25a.75.75 0 1 0 0-1.5H13.5V7h1.25a.75.75 0 1 0 0-1.5H13.5a3 3 0 0 0-3-3V1.25a.75.75 0 0 0-1.5 0V2.5H7V1.25ZM10.5 4h-5A1.5 1.5 0 0 0 4 5.5v5A1.5 1.5 0 0 0 5.5 12h5a1.5 1.5 0 0 0 1.5-1.5v-5A1.5 1.5 0 0 0 10.5 4Zm0 2.25a.75.75 0 0 0-.75-.75h-3.5a.75.75 0 0 0-.75.75v3.5a.75.75 0 0 0 .75.75h3.5a.75.75 0 0 0 .75-.75v-3.5ZM7 7h2v2H7V7Z",clipRule:"evenodd"})),e.createElement("defs",null,e.createElement("clipPath",{id:"a"},e.createElement("path",{fill:"currentColor",d:"M0 0h16v16H0z"}))))},Wie=function(e){return e.startsWith("/")?e.slice(1):e},Vie=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.clusterName,i=e.clusterTab;return[{text:n||Li,link:oA(i,t),icon:(0,Nl.jsx)(jie,{})}]},Yie=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.tenantName,i=n?Wie(n):"Tenant",r=n?Mb(Rt(Rt({},t),{},{name:n})):void 0;return[].concat((0,Ct.Z)(Vie(e,t)),[{text:i,link:r,icon:(0,Nl.jsx)(Hie,{})}])},Uie=function(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.tenantName,o=e.nodeId,a=!r,s=Rt(Rt({},i),{},(t={},(0,wt.Z)(t,On,An.diagnostics),(0,wt.Z)(t,Eb.diagnosticsTab,Pn.nodes),t));n=a?Vie(e,i):Yie(e,s);var u=o?"Node ".concat(o):"Node",l=o?nM(o,i):void 0,c=a?(0,Nl.jsx)(Bie,{}):(0,Nl.jsx)(zie,{});return n.push({text:u,link:l,icon:c}),n},Kie=function(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.tenantName,o=e.nodeIds,a=Rt(Rt({},i),{},(t={},(0,wt.Z)(t,On,An.diagnostics),(0,wt.Z)(t,Eb.diagnosticsTab,Pn.tablets),t));n=r?Yie(e,a):Vie(e,i);var s=_g(bg.tabletsFilters,void 0,Rt(Rt({},i),{},{nodeIds:o,path:r}));return n.push({text:"Tablets",link:s}),n},qie=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.tabletId,i=e.tabletType,r=Kie(e,t);return r.push({text:n||"Tablet",icon:(0,Nl.jsx)(ZO,{text:wi(i)})}),r},Gie=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};switch(e){case"cluster":return[].concat((0,Ct.Z)(n),(0,Ct.Z)(Vie(t,i)));case"tenant":return[].concat((0,Ct.Z)(n),(0,Ct.Z)(Yie(t,i)));case"node":return[].concat((0,Ct.Z)(n),(0,Ct.Z)(Uie(t,i)));case"tablets":return[].concat((0,Ct.Z)(n),(0,Ct.Z)(Kie(t,i)));case"tablet":return[].concat((0,Ct.Z)(n),(0,Ct.Z)(qie(t,i)));default:return n}},$ie=(0,ht.Z)("header"),Qie=function(e){return e&&!hg?"/internal":ng+"/internal"};var Xie=function(t){var n,i=t.mainPage,r=K(),o=lt(),a=ct(),s=ev((function(e){return e.singleClusterMode})),u=ev((function(e){return e.header})),l=u.page,c=u.pageBreadcrumbsOptions,d=ev((function(e){return e.cluster})).data,h=vg(a),f=null===(n=h.clusterName)||void 0===n?void 0:n.toString(),p=(null===d||void 0===d?void 0:d.Name)||f;(0,e.useEffect)((function(){r(lu(f))}),[r,f]);var g=(0,e.useMemo)((function(){var e=[],t=c;return i&&e.push(i),p&&(t=Rt(Rt({},c),{},{clusterName:p})),Gie(l,t,e,h).map((function(e){return Rt(Rt({},e),{},{action:function(){e.link&&o.push(e.link)}})}))}),[p,i,o,h,l,c]);return(0,Nl.jsxs)("header",{className:$ie(),children:[(0,Nl.jsx)("div",{children:(0,Nl.jsx)(Fie,{items:g,lastDisplayedItemsCount:1,firstDisplayedItemsCount:1,renderItemContent:function(e){var t=e.icon,n=e.text;return t?(0,Nl.jsxs)("span",{className:$ie("breadcrumb"),children:[(0,Nl.jsx)("div",{className:$ie("breadcrumb__icon"),children:t}),n]}):n}})}),(0,Nl.jsx)(BO,{title:xi,url:Qie(s)})]})},Jie=function(){return(0,Nl.jsx)("svg",{width:"0",height:"0",children:(0,Nl.jsxs)("defs",{children:[(0,Nl.jsx)("path",{id:"icon.information",d:"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"}),(0,Nl.jsx)("path",{id:"icon.tablePreview",d:"M13.2812 2.4375H2.71875C2.0332 2.4375 1.5 2.99609 1.5 3.65625V12.5938C1.5 13.2793 2.0332 13.8125 2.71875 13.8125H13.2812C13.9414 13.8125 14.5 13.2793 14.5 12.5938V3.65625C14.5 2.99609 13.9414 2.4375 13.2812 2.4375ZM7.1875 12.1875H3.125V9.75H7.1875V12.1875ZM7.1875 8.125H3.125V5.6875H7.1875V8.125ZM12.875 12.1875H8.8125V9.75H12.875V12.1875ZM12.875 8.125H8.8125V5.6875H12.875V8.125Z"}),(0,Nl.jsx)("path",{id:"icon.close",fillRule:"evenodd",clipRule:"evenodd",d:"M12.7559 11.5774C13.0814 11.9028 13.0814 12.4305 12.7559 12.7559C12.4305 13.0814 11.9028 13.0814 11.5774 12.7559L8 9.17851L4.42259 12.7559C4.09715 13.0814 3.56951 13.0814 3.24408 12.7559C2.91864 12.4305 2.91864 11.9028 3.24408 11.5774L6.82149 8L3.24408 4.42259C2.91864 4.09715 2.91864 3.56951 3.24408 3.24408C3.56951 2.91864 4.09715 2.91864 4.42259 3.24408L8 6.82149L11.5774 3.24408C11.9028 2.91864 12.4305 2.91864 12.7559 3.24408C13.0814 3.56951 13.0814 4.09715 12.7559 4.42259L9.17851 8L12.7559 11.5774Z"}),(0,Nl.jsx)("path",{id:"icon.enableFullscreen",d:"M2.3125 6.19531C2.3125 6.37305 2.43945 6.5 2.61719 6.5H3.63281C3.78516 6.5 3.9375 6.37305 3.9375 6.19531V4.0625H6.07031C6.22266 4.0625 6.375 3.93555 6.375 3.75781V2.74219C6.375 2.58984 6.22266 2.4375 6.07031 2.4375H2.92188C2.56641 2.4375 2.3125 2.7168 2.3125 3.04688V6.19531ZM9.625 2.74219V3.75781C9.625 3.93555 9.75195 4.0625 9.92969 4.0625H12.0625V6.19531C12.0625 6.37305 12.1895 6.5 12.3672 6.5H13.3828C13.5352 6.5 13.6875 6.37305 13.6875 6.19531V3.04688C13.6875 2.7168 13.4082 2.4375 13.0781 2.4375H9.92969C9.75195 2.4375 9.625 2.58984 9.625 2.74219ZM13.3828 9.75H12.3672C12.1895 9.75 12.0625 9.90234 12.0625 10.0547V12.1875H9.92969C9.75195 12.1875 9.625 12.3398 9.625 12.4922V13.5078C9.625 13.6855 9.75195 13.8125 9.92969 13.8125H13.0781C13.4082 13.8125 13.6875 13.5586 13.6875 13.2031V10.0547C13.6875 9.90234 13.5352 9.75 13.3828 9.75ZM6.375 13.5078V12.4922C6.375 12.3398 6.22266 12.1875 6.07031 12.1875H3.9375V10.0547C3.9375 9.90234 3.78516 9.75 3.63281 9.75H2.61719C2.43945 9.75 2.3125 9.90234 2.3125 10.0547V13.2031C2.3125 13.5586 2.56641 13.8125 2.92188 13.8125H6.07031C6.22266 13.8125 6.375 13.6855 6.375 13.5078Z"}),(0,Nl.jsx)("path",{id:"icon.disableFullscreen",d:"M13.3828 6.5C13.5352 6.5 13.6875 6.37305 13.6875 6.19531V5.17969C13.6875 5.02734 13.5352 4.875 13.3828 4.875H11.25V2.74219C11.25 2.58984 11.0977 2.4375 10.9453 2.4375H9.92969C9.75195 2.4375 9.625 2.58984 9.625 2.74219V5.89062C9.625 6.24609 9.87891 6.5 10.2344 6.5H13.3828ZM6.375 5.89062V2.74219C6.375 2.58984 6.22266 2.4375 6.07031 2.4375H5.05469C4.87695 2.4375 4.75 2.58984 4.75 2.74219V4.875H2.61719C2.43945 4.875 2.3125 5.02734 2.3125 5.17969V6.19531C2.3125 6.37305 2.43945 6.5 2.61719 6.5H5.76562C6.0957 6.5 6.375 6.24609 6.375 5.89062ZM6.375 13.5078V10.3594C6.375 10.0293 6.0957 9.75 5.76562 9.75H2.61719C2.43945 9.75 2.3125 9.90234 2.3125 10.0547V11.0703C2.3125 11.248 2.43945 11.375 2.61719 11.375H4.75V13.5078C4.75 13.6855 4.87695 13.8125 5.05469 13.8125H6.07031C6.22266 13.8125 6.375 13.6855 6.375 13.5078ZM11.25 13.5078V11.375H13.3828C13.5352 11.375 13.6875 11.248 13.6875 11.0703V10.0547C13.6875 9.90234 13.5352 9.75 13.3828 9.75H10.2344C9.87891 9.75 9.625 10.0293 9.625 10.3594V13.5078C9.625 13.6855 9.75195 13.8125 9.92969 13.8125H10.9453C11.0977 13.8125 11.25 13.6855 11.25 13.5078Z"}),(0,Nl.jsx)("path",{id:"icon.copy",d:"M10.4375 13H6.17188C5.38477 13 4.75 12.3652 4.75 11.5781V4.0625H2.92188C2.56641 4.0625 2.3125 4.3418 2.3125 4.67188V14.0156C2.3125 14.3711 2.56641 14.625 2.92188 14.625H9.82812C10.1582 14.625 10.4375 14.3711 10.4375 14.0156V13ZM10.4375 4.26562V1.625H6.17188C5.81641 1.625 5.5625 1.9043 5.5625 2.23438V11.5781C5.5625 11.9336 5.81641 12.1875 6.17188 12.1875H13.0781C13.4082 12.1875 13.6875 11.9336 13.6875 11.5781V4.875H11.0469C10.6914 4.875 10.4375 4.62109 10.4375 4.26562ZM13.4844 3.47852L11.834 1.82812C11.7324 1.72656 11.5293 1.625 11.4023 1.625H11.25V4.0625H13.6875V3.91016C13.6875 3.7832 13.5859 3.58008 13.4844 3.47852Z"}),(0,Nl.jsx)("path",{id:"icon.failure",d:"M336.1 175c-9.375-9.375-24.56-9.375-33.94 0L256 222.1L208.1 175c-9.375-9.375-24.56-9.375-33.94 0s-9.375 24.56 0 33.94l47.03 47.03L175 303c-9.375 9.375-9.375 24.56 0 33.94c9.373 9.373 24.56 9.381 33.94 0L256 289.9l47.03 47.03c9.373 9.373 24.56 9.381 33.94 0c9.375-9.375 9.375-24.56 0-33.94l-47.03-47.03l47.03-47.03C346.3 199.6 346.3 184.4 336.1 175zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256S512 397.4 512 256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z"}),(0,Nl.jsx)("path",{id:"icon.success",d:"M8 0.25C3.71875 0.25 0.25 3.75 0.25 8C0.25 12.2812 3.71875 15.75 8 15.75C12.25 15.75 15.75 12.2812 15.75 8C15.75 3.75 12.25 0.25 8 0.25ZM8 1.75C11.4375 1.75 14.25 4.5625 14.25 8C14.25 11.4688 11.4375 14.25 8 14.25C4.53125 14.25 1.75 11.4688 1.75 8C1.75 4.5625 4.53125 1.75 8 1.75ZM12.375 5.84375L11.6562 5.125C11.5312 4.96875 11.2812 4.96875 11.125 5.125L6.71875 9.5L4.84375 7.625C4.6875 7.46875 4.46875 7.46875 4.3125 7.625L3.59375 8.3125C3.46875 8.46875 3.46875 8.71875 3.59375 8.84375L6.4375 11.7188C6.59375 11.875 6.8125 11.875 6.96875 11.7188L12.375 6.375C12.5 6.21875 12.5 5.96875 12.375 5.84375Z"}),(0,Nl.jsx)("path",{id:"icon.startPlay",d:"M4 2.99383V13.0072C3.99999 13.359 4.1862 13.6846 4.48948 13.863C4.79276 14.0413 5.16779 14.0459 5.47529 13.8749L14.4869 8.8682C14.8019 8.69306 14.9973 8.36093 14.9973 8.0005C14.9973 7.64006 14.8019 7.30794 14.4869 7.13279L5.47529 2.12513C5.16764 1.95405 4.79239 1.95868 4.48905 2.13729C4.18571 2.31591 3.99963 2.64181 4 2.99383Z"}),(0,Nl.jsx)("path",{id:"icon.collapse",d:"M54.63 246.6L192 109.3l137.4 137.4C335.6 252.9 343.8 256 352 256s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25l-160-160c-12.5-12.5-32.75-12.5-45.25 0l-160 160c-12.5 12.5-12.5 32.75 0 45.25S42.13 259.1 54.63 246.6zM214.6 233.4c-12.5-12.5-32.75-12.5-45.25 0l-160 160c-12.5 12.5-12.5 32.75 0 45.25s32.75 12.5 45.25 0L192 301.3l137.4 137.4C335.6 444.9 343.8 448 352 448s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25L214.6 233.4z"}),(0,Nl.jsx)("path",{id:"icon.query",fill:"currentColor",d:"M13.6875 12.5938V3.65625C13.6875 2.99609 13.1289 2.4375 12.4688 2.4375H3.53125C2.8457 2.4375 2.3125 2.99609 2.3125 3.65625V12.5938C2.3125 13.2793 2.8457 13.8125 3.53125 13.8125H12.4688C13.1289 13.8125 13.6875 13.2793 13.6875 12.5938ZM5.15625 6.5C4.92773 6.5 4.75 6.32227 4.75 6.09375V5.28125C4.75 5.07812 4.92773 4.875 5.15625 4.875H8.40625C8.60938 4.875 8.8125 5.07812 8.8125 5.28125V6.09375C8.8125 6.32227 8.60938 6.5 8.40625 6.5H5.15625ZM5.15625 8.9375C4.92773 8.9375 4.75 8.75977 4.75 8.53125V7.71875C4.75 7.51562 4.92773 7.3125 5.15625 7.3125H10.8438C11.0469 7.3125 11.25 7.51562 11.25 7.71875V8.53125C11.25 8.75977 11.0469 8.9375 10.8438 8.9375H5.15625ZM5.15625 11.375C4.92773 11.375 4.75 11.1973 4.75 10.9688V10.1562C4.75 9.95312 4.92773 9.75 5.15625 9.75H6.78125C6.98438 9.75 7.1875 9.95312 7.1875 10.1562V10.9688C7.1875 11.1973 6.98438 11.375 6.78125 11.375H5.15625Z"}),(0,Nl.jsx)("path",{id:"icon.diagnostics",fill:"currentColor",d:"M15.7188 7.3125H12.0625C11.7324 7.3125 11.4531 7.49023 11.3262 7.76953L10.6406 9.11523L8.76172 2.23438C8.66016 1.87891 8.33008 1.625 7.97461 1.65039C7.59375 1.65039 7.26367 1.9043 7.1875 2.28516L5.43555 10.4609L4.69922 7.92188C4.59766 7.56641 4.29297 7.3125 3.9375 7.3125H0.28125C0.0527344 7.3125 -0.125 7.51562 -0.125 7.71875V8.53125C-0.125 8.75977 0.0527344 8.9375 0.28125 8.9375H3.30273L4.77539 14.041C4.87695 14.3965 5.18164 14.625 5.53711 14.625C5.5625 14.625 5.5625 14.625 5.58789 14.625C5.94336 14.625 6.27344 14.3711 6.34961 13.9902L8.07617 5.89062L9.65039 11.6035C9.72656 11.9082 10.0312 12.1621 10.3359 12.1875C10.6914 12.2383 10.9961 12.0605 11.1484 11.7559L12.5449 8.9375H15.7188C15.9219 8.9375 16.125 8.75977 16.125 8.53125V7.71875C16.125 7.51562 15.9219 7.3125 15.7188 7.3125Z"}),(0,Nl.jsx)("path",{id:"icon.key",d:"M8 7H11V5H12V2H6.66C6.085 0.79 4.86 0 3.5 0C1.57 0 0 1.57 0 3.5C0 5.43 1.57 7 3.5 7C4.86 7 6.09 6.21 6.66 5H8V7ZM10 6H9V4H5.97L5.855 4.335C5.5 5.33 4.555 6 3.5 6C2.11929 6 1 4.88071 1 3.5C1 2.11929 2.11929 1 3.5 1C4.555 1 5.5 1.67 5.855 2.665L5.97 3H11V4H10V6ZM3.5 5C2.67157 5 2 4.32843 2 3.5C2 2.67157 2.67157 2 3.5 2C4.32843 2 5 2.67157 5 3.5C5 4.32843 4.32843 5 3.5 5ZM3 3.5C3 3.22386 3.22386 3 3.5 3C3.77614 3 4 3.22386 4 3.5C4 3.77614 3.77614 4 3.5 4C3.22386 4 3 3.77614 3 3.5Z"}),(0,Nl.jsx)("path",{id:"icon.new",d:"M6,2A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M6,4H13V9H18V20H6V4Z"}),(0,Nl.jsx)("path",{id:"icon.subdomain",d:"M13.6875 3.50391C13.6875 2.46289 11.123 1.625 8 1.625C4.85156 1.625 2.3125 2.46289 2.3125 3.50391V4.64648C2.3125 5.6875 4.85156 6.5 8 6.5C11.123 6.5 13.6875 5.6875 13.6875 4.64648V3.50391ZM13.6875 6.09375C12.4434 6.95703 10.209 7.33789 8 7.33789C5.76562 7.33789 3.53125 6.95703 2.3125 6.09375V8.70898C2.3125 9.75 4.85156 10.5625 8 10.5625C11.123 10.5625 13.6875 9.75 13.6875 8.70898V6.09375ZM13.6875 10.1562C12.4434 11.0195 10.209 11.4004 8 11.4004C5.76562 11.4004 3.53125 11.0195 2.3125 10.1562V12.7715C2.3125 13.8125 4.85156 14.625 8 14.625C11.123 14.625 13.6875 13.8125 13.6875 12.7715V10.1562Z"}),(0,Nl.jsx)("path",{id:"icon.openFolder",d:"M15.2109 9.06445C15.4648 8.6582 15.1602 8.125 14.6777 8.125H4.54688C4.01367 8.125 3.37891 8.50586 3.125 8.9375L1.29688 12.0859C1.04297 12.4922 1.34766 13 1.83008 13H11.9609C12.4941 13 13.1289 12.6445 13.3828 12.2129L15.2109 9.06445ZM4.54688 7.3125H12.875V6.09375C12.875 5.43359 12.3164 4.875 11.6562 4.875H7.59375L5.96875 3.25H1.90625C1.2207 3.25 0.6875 3.80859 0.6875 4.46875V11.5527L2.43945 8.53125C2.87109 7.79492 3.6582 7.3125 4.54688 7.3125Z"}),(0,Nl.jsx)("path",{id:"icon.folder",d:"M13.2812 4.875H8.40625L6.78125 3.25H2.71875C2.0332 3.25 1.5 3.80859 1.5 4.46875V11.7812C1.5 12.4668 2.0332 13 2.71875 13H13.2812C13.9414 13 14.5 12.4668 14.5 11.7812V6.09375C14.5 5.43359 13.9414 4.875 13.2812 4.875Z"}),(0,Nl.jsx)("path",{id:"icon.table",d:"M13.2812 2.4375H2.71875C2.0332 2.4375 1.5 2.99609 1.5 3.65625V12.5938C1.5 13.2793 2.0332 13.8125 2.71875 13.8125H13.2812C13.9414 13.8125 14.5 13.2793 14.5 12.5938V3.65625C14.5 2.99609 13.9414 2.4375 13.2812 2.4375ZM7.1875 12.1875H3.125V9.75H7.1875V12.1875ZM7.1875 8.125H3.125V5.6875H7.1875V8.125ZM12.875 12.1875H8.8125V9.75H12.875V12.1875ZM12.875 8.125H8.8125V5.6875H12.875V8.125Z"}),(0,Nl.jsx)("path",{id:"icon.arrow-right",d:"M.786.194C.829.151.872.13.958.13c.064 0 .128.021.193.064l4.49 4.512c.043.043.086.108.086.172 0 .086-.043.129-.086.172l-4.49 4.512a.347.347 0 0 1-.194.064c-.085 0-.128-.021-.171-.064l-.43-.43C.29 9.089.27 9.046.27 8.96c0-.064.021-.129.086-.193l3.889-3.889L.355.99C.292.946.27.882.27.796.27.732.291.667.356.624z"}),(0,Nl.jsx)("path",{id:"icon.external",d:"M15.3125 2.00586C15.3125 1.80273 15.1348 1.625 14.9316 1.625L10.793 1.65039C10.5898 1.65039 10.4375 1.80273 10.4375 2.00586V2.84375C10.4375 3.04688 10.5898 3.22461 10.793 3.22461L12.6719 3.14844L12.7227 3.19922L5.63867 10.2832C5.51172 10.4102 5.51172 10.5879 5.63867 10.7148L6.22266 11.2988C6.34961 11.4258 6.52734 11.4258 6.6543 11.2988L13.7383 4.21484L13.7891 4.26562L13.7129 6.14453C13.7129 6.34766 13.8906 6.5 14.0938 6.5H14.9316C15.1348 6.5 15.2871 6.34766 15.2871 6.14453L15.3125 2.00586ZM11.5293 7.56641L10.9199 8.17578C10.8691 8.22656 10.8438 8.32812 10.8438 8.4043V13.2539C10.8438 13.3555 10.7676 13.4062 10.6914 13.4062H2.05859C1.95703 13.4062 1.90625 13.3555 1.90625 13.2539V4.62109C1.90625 4.54492 1.95703 4.46875 2.05859 4.46875H9.70117C9.98047 4.46875 10.1328 4.16406 9.92969 3.96094L9.32031 3.35156C9.26953 3.30078 9.16797 3.25 9.0918 3.25H1.90625C1.2207 3.25 0.6875 3.80859 0.6875 4.46875V13.4062C0.6875 14.0918 1.2207 14.625 1.90625 14.625H10.8438C11.5039 14.625 12.0625 14.0918 12.0625 13.4062V7.79492C12.0625 7.51562 11.7324 7.38867 11.5293 7.56641Z"}),(0,Nl.jsxs)("g",{id:"icon.network-placeholder",children:[(0,Nl.jsx)("path",{d:"M68.4597 2.52853V27.7564C68.4597 28.9827 69.3356 30.0339 70.562 30.2675C87.2054 33.2458 99.7025 48.0788 99.0601 65.715C98.4177 83.7599 83.7015 98.4177 65.715 99.1185C48.0788 99.7609 33.3042 87.2638 30.2675 70.6788C30.0339 69.4524 28.9827 68.5765 27.7564 68.5765H2.52853C1.01019 68.5765 -0.157769 69.8612 0.0174243 71.3212C3.4629 104.024 31.2603 129.427 64.9558 129.135C100.111 128.843 128.785 100.111 129.077 64.9558C129.369 31.2603 103.907 3.4629 71.2044 0.0174243C69.7444 -0.157769 68.4597 1.01019 68.4597 2.52853Z",fill:"#EBF2FA"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M22.7358 18.3543L40.5472 36.1657C41.4231 37.0416 42.8247 37.1584 43.8758 36.3993C48.0221 33.3042 52.9275 31.2019 58.2417 30.2091C59.4681 29.9755 60.344 28.9827 60.344 27.698V2.52853C60.344 1.01019 59.0593 -0.157769 57.5409 0.0174243C44.4598 1.41897 32.4883 6.67478 22.911 14.6753C21.7431 15.6096 21.6847 17.3032 22.7358 18.3543ZM13.3334 24.4868C6.09205 33.8304 1.30343 45.1596 0.0186744 57.54C-0.156519 58.9999 1.06984 60.2846 2.52978 60.2846H27.6992C28.9256 60.2846 29.9768 59.4087 30.2103 58.1823C31.0279 53.5105 32.8382 49.1307 35.3494 45.3348C35.9917 44.342 35.8749 42.9989 35.0574 42.1229L17.1292 24.3116C16.0781 23.202 14.2677 23.3188 13.3334 24.4868ZM80.6078 131.879H113.603C115.471 131.879 116.99 133.397 117.048 135.324V200.555C117.048 202.482 115.471 204 113.603 204H80.6078C78.6807 204 77.1624 202.423 77.1624 200.555V135.324C77.1624 133.397 78.7391 131.879 80.6078 131.879ZM158.452 158.976H125.574C123.647 158.976 122.071 160.553 122.071 162.48V200.439C122.071 202.366 123.647 203.943 125.574 203.943H158.452C160.379 203.943 161.956 202.366 161.956 200.439V162.48C161.956 160.553 160.379 158.976 158.452 158.976ZM170.657 177.256H203.243C205.229 177.256 206.864 178.891 206.864 180.876V200.264C206.864 202.25 205.229 203.885 203.243 203.885H170.657C168.672 203.885 167.037 202.25 167.037 200.264V180.876C167.037 178.891 168.672 177.256 170.657 177.256Z",fill:"#EBF2FA"}),(0,Nl.jsx)("path",{d:"M134.275 171.532H21.2749C15.4351 171.532 10.6465 166.743 10.6465 160.903V87.6726C10.6465 81.8328 15.4351 77.0442 21.2749 77.0442H134.216C140.056 77.0442 144.845 81.8328 144.845 87.6726V160.903C144.903 166.802 140.114 171.532 134.275 171.532V171.532Z",fillRule:"evenodd",clipRule:"evenodd",stroke:"#2EE5C0",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"}),(0,Nl.jsx)("path",{d:"M21.6246 90.7687C23.3017 90.7687 24.6613 89.4091 24.6613 87.732C24.6613 86.0549 23.3017 84.6953 21.6246 84.6953C19.9475 84.6953 18.5879 86.0549 18.5879 87.732C18.5879 89.4091 19.9475 90.7687 21.6246 90.7687Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M31.4937 90.7687C33.1708 90.7687 34.5304 89.4091 34.5304 87.732C34.5304 86.0549 33.1708 84.6953 31.4937 84.6953C29.8166 84.6953 28.457 86.0549 28.457 87.732C28.457 89.4091 29.8166 90.7687 31.4937 90.7687Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M41.3629 90.7687C43.04 90.7687 44.3995 89.4091 44.3995 87.732C44.3995 86.0549 43.04 84.6953 41.3629 84.6953C39.6857 84.6953 38.3262 86.0549 38.3262 87.732C38.3262 89.4091 39.6857 90.7687 41.3629 90.7687Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M10.8223 98.592H144.495",stroke:"#2EE5C0",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"}),(0,Nl.jsx)("path",{d:"M184.555 149.164L57.89 156.172C53.6269 156.406 50.123 153.135 50.123 148.872V51.1145C50.123 46.8514 53.6269 43.5812 57.89 43.8148L184.555 50.8225C187.825 50.9977 190.453 54.1512 190.453 57.8302V142.157C190.453 145.836 187.825 148.989 184.555 149.164Z",fill:"#027BF3"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M65.1304 54.1512C65.1304 56.1368 63.5537 57.6551 61.5681 57.5383C59.5826 57.4799 58.0059 55.7864 58.0059 53.8009C58.0059 51.8153 59.641 50.297 61.5681 50.4138C63.4953 50.4722 65.1304 52.1657 65.1304 54.1512ZM76.6357 54.6174C76.6357 56.5445 75.059 58.0629 73.1319 58.0045C71.2047 57.9461 69.628 56.2525 69.628 54.3254C69.628 52.3983 71.2047 50.8799 73.1319 50.9383C75.059 51.0551 76.6357 52.6903 76.6357 54.6174ZM84.461 58.4718C86.3298 58.5886 87.8481 57.0702 87.8481 55.1431C87.8481 53.216 86.3298 51.5808 84.461 51.5224C82.5339 51.4056 81.0156 52.924 81.0156 54.8511C81.0156 56.7782 82.5923 58.4134 84.461 58.4718Z",fill:"white"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M75.467 142.974V85.2772C71.496 84.7516 66.8826 84.8684 61.5684 85.9779V143.617L75.467 142.974ZM88.84 90.6509V142.45L77.7444 142.917V85.6871C82.0658 86.6214 85.6865 88.4318 88.84 90.6509ZM102.271 104.55C102.213 104.491 102.169 104.433 102.125 104.374C102.082 104.316 102.038 104.258 101.979 104.199C101.559 103.689 101.138 103.173 100.714 102.653L100.714 102.653C97.8391 99.1308 94.8401 95.4564 91.1759 92.4028V142.333L102.271 141.866V104.55ZM115.703 110.272C111.79 110.214 107.994 109.571 104.607 106.827V141.749L115.703 141.281V110.272ZM129.134 109.863C126.37 109.69 123.605 109.869 120.888 110.044L120.888 110.044L120.888 110.044C119.931 110.106 118.981 110.167 118.039 110.213V141.164L129.134 140.697V109.863ZM153.136 139.704L144.902 140.054V117.863C153.078 127.148 153.136 139.704 153.136 139.704ZM140.113 113.6C140.989 114.184 141.807 114.826 142.566 115.527V140.171L131.47 140.638V110.155C134.39 110.622 137.252 111.615 140.113 113.6Z",fill:"#00236B"}),(0,Nl.jsx)("path",{d:"M55.7449 76.4361C55.0549 77.2986 55.1947 78.5572 56.0573 79.2472C56.9198 79.9372 58.1784 79.7974 58.8684 78.9349L55.7449 76.4361ZM61.5113 72.4297L63.0863 71.1971C62.7095 70.7157 62.1333 70.433 61.522 70.4297C60.9107 70.4264 60.3314 70.7029 59.9495 71.1803L61.5113 72.4297ZM64.1409 79.0349C64.8217 79.9048 66.0787 80.0581 66.9485 79.3773C67.8184 78.6965 67.9717 77.4395 67.2909 76.5697L64.1409 79.0349ZM172.081 132.537C171.218 131.847 169.96 131.987 169.27 132.849C168.58 133.712 168.719 134.97 169.582 135.66L172.081 132.537ZM176.087 138.303L177.301 139.893C177.79 139.52 178.08 138.942 178.087 138.326C178.094 137.711 177.817 137.126 177.337 136.742L176.087 138.303ZM169.443 140.86C168.565 141.53 168.396 142.785 169.067 143.663C169.737 144.541 170.992 144.71 171.87 144.039L169.443 140.86ZM58.8684 78.9349L63.073 73.6791L59.9495 71.1803L55.7449 76.4361L58.8684 78.9349ZM59.9363 73.6623L64.1409 79.0349L67.2909 76.5697L63.0863 71.1971L59.9363 73.6623ZM169.582 135.66L174.838 139.865L177.337 136.742L172.081 132.537L169.582 135.66ZM174.874 136.714L169.443 140.86L171.87 144.039L177.301 139.893L174.874 136.714Z",fill:"white"}),(0,Nl.jsx)("path",{d:"M147.137 69.1464C146.033 69.1053 145.105 69.9668 145.064 71.0706C145.023 72.1744 145.884 73.1025 146.988 73.1436L147.137 69.1464ZM176.771 74.2532C177.875 74.2943 178.803 73.4328 178.844 72.329C178.885 71.2252 178.024 70.2971 176.92 70.256L176.771 74.2532ZM147.114 79.6573C146.01 79.6291 145.092 80.5015 145.064 81.6057C145.036 82.7099 145.908 83.6278 147.012 83.656L147.114 79.6573ZM176.795 84.4152C177.899 84.4433 178.817 83.571 178.846 82.4668C178.874 81.3626 178.001 80.4446 176.897 80.4165L176.795 84.4152ZM147.075 90.3435C145.97 90.337 145.07 91.2271 145.063 92.3317C145.057 93.4362 145.947 94.3369 147.052 94.3434L147.075 90.3435ZM176.834 94.5186C177.939 94.5251 178.84 93.635 178.846 92.5304C178.853 91.4258 177.962 90.5252 176.858 90.5187L176.834 94.5186ZM146.988 73.1436L176.771 74.2532L176.92 70.256L147.137 69.1464L146.988 73.1436ZM147.012 83.656L176.795 84.4152L176.897 80.4165L147.114 79.6573L147.012 83.656ZM147.052 94.3434L176.834 94.5186L176.858 90.5187L147.075 90.3435L147.052 94.3434Z",fill:"white"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M143.442 71.2024C143.442 72.604 142.274 73.7135 140.872 73.6551C139.471 73.5967 138.303 72.3704 138.303 70.9688C138.303 69.5673 139.471 68.3993 140.872 68.5161C142.332 68.5745 143.442 69.8009 143.442 71.2024ZM143.443 81.5981C143.443 82.9996 142.275 84.1092 140.873 84.0508C139.472 83.9924 138.304 82.766 138.304 81.3645C138.304 79.9045 139.472 78.795 140.873 78.9118C142.333 78.9702 143.443 80.1965 143.443 81.5981ZM140.873 94.4457C142.275 94.5041 143.443 93.3945 143.443 91.993C143.443 90.5914 142.333 89.3651 140.873 89.3067C139.472 89.1899 138.304 90.3578 138.304 91.7594C138.304 93.1609 139.472 94.3873 140.873 94.4457Z",fill:"white"}),(0,Nl.jsx)("path",{opacity:"0.2",d:"M190.452 91.8753V57.771C190.452 54.0919 187.824 50.9385 184.553 50.7633L160.902 49.4785C159.793 52.8656 159.15 56.5447 159.15 60.4573C159.15 78.0934 171.94 92.2841 187.24 92.1089C188.291 92.1673 189.4 92.0505 190.452 91.8753Z",fill:"#00236B"}),(0,Nl.jsx)("path",{d:"M220.645 58.8832C220.645 42.2982 209.024 28.1076 194.191 27.2316C178.891 26.3556 166.102 39.9039 166.102 57.5401C166.102 75.1762 178.891 89.3669 194.191 89.1917C209.024 89.0749 220.645 75.4682 220.645 58.8832Z",fill:"#FF4645"}),(0,Nl.jsx)("path",{d:"M215.329 40.3719C210.541 32.897 202.949 27.758 194.189 27.2324V58.2417L215.329 40.3719Z",fill:"#FFCC00"}),(0,Nl.jsx)("path",{d:"M215.329 40.3721L194.189 58.2418L220.644 58.8842C220.644 51.9932 218.658 45.5695 215.329 40.3721V40.3721Z",fill:"#00236B"}),(0,Nl.jsx)("path",{d:"M194.248 58.2408V27.2316C178.947 26.3556 166.158 39.9039 166.158 57.5401L194.248 58.2408Z",fill:"#FF4645"}),(0,Nl.jsx)("path",{d:"M161.151 14.7336C161.151 13.6291 160.256 12.7336 159.151 12.7336C158.047 12.7336 157.151 13.6291 157.151 14.7336H161.151ZM157.151 18.9383C157.151 20.0429 158.047 20.9383 159.151 20.9383C160.256 20.9383 161.151 20.0429 161.151 18.9383H157.151ZM161.151 27.8138C161.151 26.7093 160.256 25.8138 159.151 25.8138C158.047 25.8138 157.151 26.7093 157.151 27.8138H161.151ZM157.151 32.3689C157.151 33.4734 158.047 34.3689 159.151 34.3689C160.256 34.3689 161.151 33.4734 161.151 32.3689H157.151ZM167.97 25.5526C169.074 25.5526 169.97 24.6572 169.97 23.5526C169.97 22.4481 169.074 21.5526 167.97 21.5526V25.5526ZM163.707 21.5526C162.602 21.5526 161.707 22.4481 161.707 23.5526C161.707 24.6572 162.602 25.5526 163.707 25.5526V21.5526ZM154.538 25.5526C155.643 25.5526 156.538 24.6572 156.538 23.5526C156.538 22.4481 155.643 21.5526 154.538 21.5526V25.5526ZM150.275 21.5526C149.171 21.5526 148.275 22.4481 148.275 23.5526C148.275 24.6572 149.171 25.5526 150.275 25.5526V21.5526ZM157.151 14.7336V18.9383H161.151V14.7336H157.151ZM157.151 27.8138V32.3689H161.151V27.8138H157.151ZM167.97 21.5526H163.707V25.5526H167.97V21.5526ZM154.538 21.5526H150.275V25.5526H154.538V21.5526Z",fill:"#2EE5C0"})]}),(0,Nl.jsxs)("g",{id:"icon.404",children:[(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M307.333 168.43C316.733 154.23 321.433 135.83 321.433 113.13C321.433 78.7305 309.733 51.2305 286.133 30.9305C262.733 10.4305 223.133 0.230469 179.433 0.230469C166.333 0.230469 155.333 1.13047 144.633 2.93047C133.933 4.73047 124.533 6.83047 116.433 9.23047C111.033 10.8305 100.333 14.9305 93.1334 17.8305C89.0334 19.5305 86.2334 23.8305 86.2334 28.6305V68.1305C86.2334 76.3305 94.0334 81.9305 101.133 78.6305C101.749 78.3525 102.352 78.0786 102.939 77.8124C105.306 76.738 107.391 75.7915 108.833 75.2305C114.533 72.9305 121.233 71.0305 128.933 69.4305C136.633 67.8305 145.233 67.0305 154.633 67.0305C176.833 67.0305 197.733 72.0305 206.933 81.9305C216.133 91.9305 220.733 104.43 220.733 119.43C220.733 132.43 218.033 143.53 212.533 152.63C207.033 161.73 199.433 170.63 189.633 179.13C181.733 186.03 174.433 192.63 167.633 198.93C160.833 205.23 155.033 212.13 150.133 219.63C145.233 227.13 141.433 235.63 138.833 244.93C137.233 250.53 136.133 265.23 135.533 275.93C135.233 282.53 140.033 288.13 146.233 288.13H197.433C202.833 288.13 207.433 283.73 208.033 277.93C208.633 272.23 210.033 265.43 213.533 260.13C217.533 254.23 222.233 248.33 228.233 242.83C234.233 237.33 241.233 231.83 249.133 226.13C257.133 220.53 265.333 214.03 274.033 206.73C286.833 195.33 297.933 182.63 307.333 168.43ZM139.733 381.13C148.733 390.63 159.833 395.33 173.133 395.33C179.433 395.33 185.533 394.03 191.333 391.33C197.133 388.73 202.233 385.33 206.533 381.03C210.833 376.73 214.233 371.63 216.733 365.83C219.233 360.03 220.433 353.73 220.433 346.83C220.433 340.03 219.233 333.63 216.733 327.83C214.233 322.03 210.833 316.93 206.533 312.43C202.233 307.93 197.133 304.53 191.333 302.13C185.533 299.73 179.433 298.53 173.133 298.53C159.833 298.53 148.733 303.13 139.733 312.43C130.733 321.73 126.233 333.23 126.233 346.93C126.233 360.33 130.733 371.73 139.733 381.13Z",fill:"#ECF2F9"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M213.933 353.03H20.4334C10.4334 353.03 2.2334 344.83 2.2334 334.83V209.43C2.2334 199.43 10.4334 191.23 20.4334 191.23H213.933C223.933 191.23 232.133 199.43 232.133 209.43V334.83C232.133 344.93 223.933 353.03 213.933 353.03Z",stroke:"#00E6C5",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4 10"}),(0,Nl.jsx)("path",{d:"M21.0335 214.732C23.9054 214.732 26.2335 212.404 26.2335 209.532C26.2335 206.66 23.9054 204.332 21.0335 204.332C18.1616 204.332 15.8335 206.66 15.8335 209.532C15.8335 212.404 18.1616 214.732 21.0335 214.732Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M37.9334 214.732C40.8053 214.732 43.1334 212.404 43.1334 209.532C43.1334 206.66 40.8053 204.332 37.9334 204.332C35.0615 204.332 32.7334 206.66 32.7334 209.532C32.7334 212.404 35.0615 214.732 37.9334 214.732Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M54.8333 214.732C57.7052 214.732 60.0333 212.404 60.0333 209.532C60.0333 206.66 57.7052 204.332 54.8333 204.332C51.9614 204.332 49.6333 206.66 49.6333 209.532C49.6333 212.404 51.9614 214.732 54.8333 214.732Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M2.5332 228.129H231.433",stroke:"#00E6C5",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4 10",fill:"#FFFFFF"}),(0,Nl.jsx)("path",{d:"M301.033 264.83L84.1335 276.83C76.8335 277.23 70.8335 271.63 70.8335 264.33V96.9303C70.8335 89.6303 76.8335 84.0303 84.1335 84.4303L301.033 96.4303C306.633 96.7303 311.133 102.13 311.133 108.43V252.83C311.133 259.13 306.633 264.53 301.033 264.83Z",fill:"#027BF3"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M90.4335 107.93C93.8335 108.13 96.5335 105.53 96.5335 102.13C96.5335 98.7296 93.8335 95.8296 90.4335 95.7296C87.1335 95.5296 84.3335 98.1296 84.3335 101.53C84.3335 104.93 87.0335 107.83 90.4335 107.93ZM110.233 108.728C113.533 108.828 116.233 106.228 116.233 102.928C116.233 99.6278 113.533 96.8278 110.233 96.6278C106.933 96.5278 104.233 99.1278 104.233 102.428C104.233 105.728 106.933 108.628 110.233 108.728ZM135.433 103.828C135.433 107.128 132.833 109.728 129.633 109.528C126.433 109.428 123.733 106.628 123.733 103.328C123.733 100.028 126.333 97.428 129.633 97.628C132.833 97.728 135.433 100.528 135.433 103.828ZM201.434 165.531L220.534 144.631L237.934 163.731L219.034 184.631L237.934 205.131L220.534 224.631L201.434 204.131L182.034 225.631L163.934 206.531L183.534 185.031L163.934 164.031L182.034 144.531L201.434 165.531Z",fill:"white"}),(0,Nl.jsx)("path",{d:"M327.433 112.83C327.433 84.4297 305.733 75.7297 293.933 74.9297C293.833 74.9297 260.433 77.2297 260.433 120.23C260.433 145.73 281.633 165.73 306.433 164.83C314.233 164.53 321.333 162.23 327.433 158.43V112.83Z",fill:"#67B0F8"}),(0,Nl.jsx)("path",{d:"M380.534 195.931C377.634 199.331 372.934 199.631 370.034 196.731L331.434 157.731L342.734 145.531L380.534 184.531C383.434 187.531 383.434 192.531 380.534 195.931Z",fill:"#FF4645"}),(0,Nl.jsx)("path",{d:"M342.833 145.629L331.533 157.829L335.233 161.529C337.133 163.429 340.133 163.529 342.033 161.729C343.133 160.729 344.233 159.629 345.233 158.529C345.833 157.829 346.533 157.129 347.133 156.429C348.733 154.529 348.633 151.629 346.833 149.829L342.833 145.629Z",fill:"#D93654"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M267.633 154.13C244.633 132.729 244.633 96.8295 267.633 76.0295C289.533 56.2295 322.733 59.0295 342.033 80.3295C360.433 100.729 360.433 132.03 342.033 151.93C322.733 172.73 289.533 174.53 267.633 154.13ZM277.033 143.328C292.633 158.328 316.833 157.528 331.133 142.428C344.933 127.828 344.933 104.628 331.133 89.6281C316.833 74.128 292.633 72.628 277.033 87.1281C260.833 102.228 260.833 127.828 277.033 143.328Z",fill:"#00236B"}),(0,Nl.jsx)("path",{d:"M41.0336 42.7305C41.0336 41.6259 40.1382 40.7305 39.0336 40.7305C37.929 40.7305 37.0336 41.6259 37.0336 42.7305H41.0336ZM37.0336 51.0305C37.0336 52.135 37.929 53.0305 39.0336 53.0305C40.1382 53.0305 41.0336 52.135 41.0336 51.0305H37.0336ZM41.0336 68.2305C41.0336 67.1259 40.1382 66.2305 39.0336 66.2305C37.929 66.2305 37.0336 67.1259 37.0336 68.2305H41.0336ZM37.0336 77.1305C37.0336 78.235 37.929 79.1305 39.0336 79.1305C40.1382 79.1305 41.0336 78.235 41.0336 77.1305H37.0336ZM56.2336 61.9305C57.3382 61.9305 58.2336 61.035 58.2336 59.9305C58.2336 58.8259 57.3382 57.9305 56.2336 57.9305V61.9305ZM48.0336 57.9305C46.929 57.9305 46.0336 58.8259 46.0336 59.9305C46.0336 61.035 46.929 61.9305 48.0336 61.9305V57.9305ZM30.1336 61.9305C31.2382 61.9305 32.1336 61.035 32.1336 59.9305C32.1336 58.8259 31.2382 57.9305 30.1336 57.9305V61.9305ZM21.9336 57.9305C20.829 57.9305 19.9336 58.8259 19.9336 59.9305C19.9336 61.035 20.829 61.9305 21.9336 61.9305V57.9305ZM37.0336 42.7305V51.0305H41.0336V42.7305H37.0336ZM37.0336 68.2305V77.1305H41.0336V68.2305H37.0336ZM56.2336 57.9305H48.0336V61.9305H56.2336V57.9305ZM30.1336 57.9305H21.9336V61.9305H30.1336V57.9305Z",fill:"#2EE5C0"})]}),"/* History controls */",(0,Nl.jsx)("path",{id:"icon.previous",d:"M5.41406 10.6094C5.36719 10.6562 5.29688 10.6797 5.22656 10.6797C5.13281 10.6797 5.0625 10.6562 5.01562 10.6094L0.117188 5.6875C0.046875 5.64062 0.0234375 5.59375 0.0234375 5.5C0.0234375 5.42969 0.046875 5.35938 0.117188 5.3125L5.01562 0.390625C5.0625 0.34375 5.13281 0.320312 5.22656 0.320312C5.29688 0.320312 5.36719 0.34375 5.41406 0.390625L5.88281 0.859375C5.92969 0.90625 5.97656 0.976562 5.97656 1.04688C5.97656 1.14062 5.92969 1.21094 5.88281 1.25781L1.64062 5.5L5.88281 9.74219C5.92969 9.8125 5.97656 9.88281 5.97656 9.95312C5.97656 10.0469 5.92969 10.0938 5.88281 10.1406L5.41406 10.6094Z",fill:"currentColor"}),(0,Nl.jsx)("path",{id:"icon.next",d:"M0.787109 0.191406C0.830078 0.148438 0.873047 0.126953 0.958984 0.126953C1.02344 0.126953 1.08789 0.148438 1.15234 0.191406L5.64258 4.70312C5.68555 4.74609 5.72852 4.81055 5.72852 4.875C5.72852 4.96094 5.68555 5.00391 5.64258 5.04688L1.15234 9.55859C1.08789 9.60156 1.02344 9.62305 0.958984 9.62305C0.873047 9.62305 0.830078 9.60156 0.787109 9.55859L0.357422 9.12891C0.292969 9.08594 0.271484 9.04297 0.271484 8.95703C0.271484 8.89258 0.292969 8.82812 0.357422 8.76367L4.24609 4.875L0.357422 0.986328C0.292969 0.943359 0.271484 0.878906 0.271484 0.792969C0.271484 0.728516 0.292969 0.664062 0.357422 0.621094L0.787109 0.191406Z",fill:"currentColor"}),(0,Nl.jsxs)("g",{id:"icon.dialog-warning",width:"24",height:"22",viewBox:"0 0 24 22",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M0.253448 19.0301L10.7294 0.712125C11.2724 -0.237375 12.7304 -0.237375 13.2719 0.712125L23.7479 19.0301C24.2609 19.9256 23.5649 21.0071 22.4774 21.0071H1.52545C0.436448 21.0071 -0.258052 19.9256 0.253448 19.0301Z",fill:"var(--yc-color-base-warning-heavy)"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M13.5 13.0074C13.5 13.2836 13.2761 13.5074 13 13.5074H11C10.7239 13.5074 10.5 13.2836 10.5 13.0074V7.39844C10.5 7.1223 10.7239 6.89844 11 6.89844H13C13.2761 6.89844 13.5 7.1223 13.5 7.39844V13.0074Z",fill:"var(--yc-color-text-complementary)"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M13.5 17.548C13.5 17.8241 13.2761 18.048 13 18.048H11C10.7239 18.048 10.5 17.8241 10.5 17.548V15.8555C10.5 15.5793 10.7239 15.3555 11 15.3555H13C13.2761 15.3555 13.5 15.5793 13.5 15.8555V17.548Z",fill:"var(--yc-color-text-complementary)"})]}),(0,Nl.jsx)("g",{id:"icon.chevron-down",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16",children:(0,Nl.jsx)("path",{stroke:"currentColor",fill:"none",d:"M3 6l5 5 5-5"})}),"/* theme icons */",(0,Nl.jsx)("path",{id:"icon.sun",d:"M7.99108 5.98e-05C7.67665 0.00674984 7.42467 0.265426 7.42913 0.579851V2.29246C7.4269 2.49762 7.53394 2.6894 7.71233 2.79421C7.89073 2.89679 8.10927 2.89679 8.28767 2.79421C8.46606 2.6894 8.5731 2.49762 8.57087 2.29246V0.579851C8.5731 0.425983 8.51289 0.276576 8.40362 0.167307C8.29436 0.0580392 8.14495 -0.00217002 7.99108 5.98e-05ZM2.7462 2.17651C2.51429 2.17874 2.30467 2.31922 2.2177 2.5333C2.13073 2.74961 2.18202 2.9949 2.34927 3.15769L3.56014 4.36856C3.70286 4.51797 3.91693 4.57818 4.1154 4.52466C4.3161 4.47337 4.47219 4.31727 4.52348 4.11658C4.577 3.91811 4.51679 3.70403 4.36739 3.56131L3.15652 2.35044C3.04948 2.23895 2.90007 2.17651 2.7462 2.17651ZM13.236 2.17651C13.0865 2.18097 12.9461 2.2434 12.8435 2.35044L11.6326 3.56131C11.4832 3.70403 11.423 3.91811 11.4765 4.11658C11.5278 4.31727 11.6839 4.47337 11.8846 4.52466C12.0831 4.57818 12.2971 4.51797 12.4399 4.36856L13.6507 3.15769C13.8202 2.99267 13.8693 2.74292 13.7778 2.52661C13.6864 2.30807 13.4723 2.16982 13.236 2.17651ZM8 4.00508C5.79233 4.00508 4.0039 5.79351 4.0039 8.00118C4.0039 10.2088 5.79233 11.9973 8 11.9973C10.2077 11.9973 11.9961 10.2088 11.9961 8.00118C11.9961 5.79351 10.2077 4.00508 8 4.00508ZM0.578676 7.43031C0.373519 7.42808 0.181743 7.53511 0.076934 7.71351C-0.0256447 7.89191 -0.0256447 8.11044 0.076934 8.28884C0.181743 8.46724 0.373519 8.57428 0.578676 8.57205H2.29129C2.49645 8.57428 2.68822 8.46724 2.79303 8.28884C2.89561 8.11044 2.89561 7.89191 2.79303 7.71351C2.68822 7.53511 2.49645 7.42808 2.29129 7.43031H0.578676ZM13.7087 7.43031C13.5036 7.42808 13.3118 7.53511 13.207 7.71351C13.1044 7.89191 13.1044 8.11044 13.207 8.28884C13.3118 8.46724 13.5036 8.57428 13.7087 8.57205H15.4213C15.6265 8.57428 15.8183 8.46724 15.9231 8.28884C16.0256 8.11044 16.0256 7.89191 15.9231 7.71351C15.8183 7.53511 15.6265 7.42808 15.4213 7.43031H13.7087ZM3.95261 11.4621C3.80321 11.4643 3.66272 11.5268 3.56014 11.6338L2.34927 12.8447C2.19986 12.9874 2.13965 13.2015 2.19317 13.3999C2.24446 13.6006 2.40056 13.7567 2.60125 13.808C2.79972 13.8615 3.0138 13.8013 3.15652 13.6519L4.36739 12.441C4.53686 12.276 4.58592 12.0263 4.49449 11.81C4.40307 11.5914 4.18899 11.4532 3.95261 11.4621ZM12.0318 11.4621C11.7976 11.4621 11.5902 11.6026 11.501 11.8166C11.4141 12.033 11.4654 12.2782 11.6326 12.441L12.8435 13.6519C12.9862 13.8013 13.2003 13.8615 13.3987 13.808C13.5994 13.7567 13.7555 13.6006 13.8068 13.3999C13.8603 13.2015 13.8001 12.9874 13.6507 12.8447L12.4399 11.6338C12.3328 11.5223 12.1856 11.4621 12.0318 11.4621ZM7.99108 13.1301C7.67665 13.1368 7.42467 13.3955 7.42913 13.7099V15.4225C7.4269 15.6277 7.53394 15.8194 7.71233 15.9242C7.89073 16.0268 8.10927 16.0268 8.28767 15.9242C8.46606 15.8194 8.5731 15.6277 8.57087 15.4225V13.7099C8.5731 13.556 8.51289 13.4066 8.40362 13.2973C8.29436 13.1881 8.14495 13.1279 7.99108 13.1301Z",fill:"currentColor"}),(0,Nl.jsx)("path",{id:"icon.moon",d:"M10.9102 13.991C12.7951 13.305 14.209 11.8446 14.8419 10.0201C14.9307 9.74456 14.627 9.50386 14.3819 9.6471C11.6317 11.2966 8.08679 10.0199 6.99259 7.01362C6.36734 5.29574 6.70084 3.39103 7.89136 1.98499C8.07785 1.755 7.88469 1.44702 7.60487 1.49482C7.2925 1.52745 6.78277 1.68596 6.46392 1.77499C3.07588 3.00814 1.35459 6.74195 2.57904 10.1061C3.81219 13.4942 7.52215 15.2241 10.9102 13.991Z",fill:"currentColor"}),(0,Nl.jsx)("path",{id:"icon.pencil",d:"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"}),(0,Nl.jsx)("path",{id:"icon.trash",d:"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"}),(0,Nl.jsx)("path",{id:"icon.kikimr-logo",d:"M6.47 30.11L6.47 21.37L10.81 7.45L9.35 7.45L5.80 19.50L2.19 7.45L0.51 7.45L4.88 21.37L4.88 30.11ZM13.12 30.11L15.44 30.11C20.45 30.11 23.84 25.61 23.84 17.94C23.84 10.08 20.26 7.45 15.79 7.45L13.12 7.45ZM15.79 8.75C19.34 8.75 22.22 11.06 22.22 18.07C22.22 25.01 19.50 28.82 15.47 28.82L14.71 28.82L14.71 8.75ZM29.67 30.11C33.38 30.11 36.17 28.15 36.17 23.62C36.17 20.80 34.97 18.67 32.37 18.01C34.30 17.15 35.38 15.44 35.38 12.81C35.38 9.48 33.60 7.45 30.05 7.45L26.75 7.45L26.75 30.11ZM29.99 8.72C32.65 8.72 33.82 10.24 33.82 12.93C33.82 16.10 32.24 17.47 29.92 17.47L28.34 17.47L28.34 8.72ZM30.40 18.70C33.22 18.70 34.58 20.70 34.58 23.84C34.58 27.55 32.52 28.85 29.45 28.85L28.34 28.85L28.34 18.70ZM49.58 26.63L50.82 26.63L54.21 14.01C54.46 13.06 54.68 12.14 54.97 10.87L55.09 10.87C55.03 12.01 54.97 13.16 54.97 14.23L54.97 30.11L56.49 30.11L56.49 7.45L54.71 7.45L50.85 21.94C50.69 22.51 50.43 23.71 50.31 24.57L50.21 24.57C50.12 23.71 49.90 22.54 49.74 21.94L45.90 7.45L44.06 7.45L44.06 30.11L45.46 30.11L45.46 14.23C45.46 13.09 45.43 11.95 45.36 10.87L45.46 10.87C45.65 11.92 45.90 12.93 46.22 14.11ZM64.13 30.43C66.89 30.43 69.01 27.33 69.01 22.03C69.01 16.55 66.89 13.82 64.13 13.82C61.37 13.82 59.25 16.90 59.25 22.22C59.25 27.67 61.37 30.43 64.13 30.43ZM64.13 29.23C62.26 29.23 60.74 27.10 60.74 22.13C60.74 17.28 62.26 15.06 64.13 15.06C66.00 15.06 67.52 17.12 67.52 22.13C67.52 26.95 66.00 29.23 64.13 29.23ZM76.81 15.09C78.27 15.09 78.96 15.98 78.96 17.88L78.96 30.11L80.45 30.11L80.45 17.69C80.45 15.15 79.22 13.82 77.09 13.82C74.94 13.82 73.67 15.60 73.23 16.77L73.16 16.77L73.10 14.14L71.74 14.14L71.74 30.11L73.23 30.11L73.23 18.45C74.02 16.42 75.22 15.09 76.81 15.09ZM84.64 11.00C85.18 11.00 85.65 10.56 85.65 9.99C85.65 9.45 85.18 8.94 84.64 8.94C84.07 8.94 83.62 9.45 83.62 9.99C83.62 10.56 84.07 11.00 84.64 11.00ZM83.88 14.14L83.88 30.11L85.37 30.11L85.37 14.14ZM93.64 29.92L93.32 28.82C93.13 28.91 92.82 29.04 92.34 29.04C91.39 29.04 90.88 28.34 90.88 26.75L90.88 15.31L93.61 15.31L93.61 14.14L90.88 14.14L90.88 10.97L89.55 10.97L89.39 14.14L87.78 14.14L87.78 15.31L89.39 15.31L89.39 26.91C89.39 28.88 90.28 30.27 92.18 30.27C92.85 30.27 93.29 30.11 93.64 29.92ZM100.17 30.43C102.93 30.43 105.05 27.33 105.05 22.03C105.05 16.55 102.93 13.82 100.17 13.82C97.41 13.82 95.29 16.90 95.29 22.22C95.29 27.67 97.41 30.43 100.17 30.43ZM100.17 29.23C98.30 29.23 96.78 27.10 96.78 22.13C96.78 17.28 98.30 15.06 100.17 15.06C102.04 15.06 103.56 17.12 103.56 22.13C103.56 26.95 102.04 29.23 100.17 29.23ZM113.07 15.60L113.07 14.04C111.11 14.17 109.81 15.79 109.30 17.34L109.21 17.34L109.14 14.14L107.78 14.14L107.78 30.11L109.27 30.11L109.27 19.02C110.00 16.83 111.33 15.66 113.07 15.60ZM116.28 11.00C116.81 11.00 117.29 10.56 117.29 9.99C117.29 9.45 116.81 8.94 116.28 8.94C115.70 8.94 115.26 9.45 115.26 9.99C115.26 10.56 115.70 11.00 116.28 11.00ZM115.51 14.14L115.51 30.11L117.00 30.11L117.00 14.14ZM125.63 15.09C127.09 15.09 127.78 15.98 127.78 17.88L127.78 30.11L129.27 30.11L129.27 17.69C129.27 15.15 128.04 13.82 125.91 13.82C123.76 13.82 122.49 15.60 122.05 16.77L121.98 16.77L121.92 14.14L120.56 14.14L120.56 30.11L122.05 30.11L122.05 18.45C122.84 16.42 124.04 15.09 125.63 15.09ZM136.60 29.10C134.69 29.10 133.49 26.63 133.49 22.44C133.49 17.72 134.82 14.99 136.85 14.99C138.28 14.99 139.16 15.72 139.80 17.24L139.80 26.09C139.10 27.71 137.96 29.10 136.60 29.10ZM136.37 35.31C139.26 35.31 141.29 33.76 141.29 29.96L141.29 14.14L140.05 14.14L139.89 15.63C139.35 14.55 138.28 13.82 137.04 13.82C133.96 13.82 132.00 17.02 132.00 22.57C132.00 27.20 133.65 30.40 136.31 30.40C137.99 30.40 139.10 29.16 139.80 27.77L139.80 29.80C139.80 32.87 138.50 34.01 136.37 34.01C134.88 34.01 133.55 33.38 132.98 32.81L132.54 34.11C133.17 34.62 134.53 35.31 136.37 35.31Z"}),(0,Nl.jsx)("path",{id:"icon.question",fillRule:"evenodd",clipRule:"evenodd",d:"M22 12.219c0 5.523-4.477 10-10 10s-10-4.477-10-10 4.477-10 10-10 10 4.477 10 10zm-2 0a8 8 0 11-16 0 8 8 0 0116 0zm-9.25 4.243c0-.723.55-1.243 1.243-1.243.708 0 1.257.52 1.257 1.243 0 .722-.55 1.257-1.257 1.257a1.228 1.228 0 01-1.243-1.258zm1.475-9.743c-2.157 0-3.775 1.243-3.775 3.25v.025a.5.5 0 00.5.5h.803c.24 0 .435-.195.435-.435 0-1.123.868-1.722 2.037-1.722 1.138 0 1.887.599 1.887 1.453 0 .809-.42 1.183-1.468 1.662l-.3.135c-.883.39-1.213.974-1.213 1.992v.14a.5.5 0 00.5.5h.738a.5.5 0 00.5-.5v-.035c0-.45.12-.629.48-.794l.299-.134c1.258-.57 2.202-1.319 2.202-2.951v-.09c0-1.723-1.498-2.996-3.625-2.996z",fill:"currentColor"}),(0,Nl.jsxs)("g",{id:"icon.emptyState",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 383 396",width:"383",height:"396",fill:"none",children:[(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M307.333 168.43c9.4-14.2 14.1-32.6 14.1-55.3 0-34.4-11.7-61.9-35.3-82.2-23.4-20.5-63-30.7-106.7-30.7-13.1 0-24.1.9-34.8 2.7-10.7 1.8-20.1 3.9-28.2 6.3-5.4 1.6-16.1 5.7-23.3 8.6-4.1 1.7-6.9 6-6.9 10.8v39.5c0 8.2 7.8 13.8 14.9 10.5a458.74 458.74 0 0 0 1.806-.818c2.367-1.074 4.452-2.02 5.894-2.581 5.7-2.3 12.4-4.2 20.1-5.8 7.7-1.6 16.3-2.4 25.7-2.4 22.2 0 43.1 5 52.3 14.9 9.2 10 13.8 22.499 13.8 37.499 0 13-2.7 24.1-8.2 33.2-5.5 9.1-13.1 18-22.9 26.5-7.9 6.9-15.2 13.5-22 19.8-6.8 6.3-12.6 13.2-17.5 20.7s-8.7 16-11.3 25.3c-1.6 5.6-2.7 20.3-3.3 31-.3 6.6 4.5 12.2 10.7 12.2h51.2c5.4 0 10-4.4 10.6-10.2.6-5.7 2-12.5 5.5-17.8 4-5.9 8.7-11.8 14.7-17.3s13-11 20.9-16.7c8-5.6 16.2-12.1 24.9-19.4 12.8-11.4 23.9-24.1 33.3-38.3zm-167.6 212.7c9 9.5 20.1 14.2 33.4 14.2 6.3 0 12.4-1.3 18.2-4 5.8-2.6 10.9-6 15.2-10.3 4.3-4.3 7.7-9.4 10.2-15.2 2.5-5.8 3.7-12.1 3.7-19 0-6.8-1.2-13.2-3.7-19-2.5-5.8-5.9-10.9-10.2-15.4-4.3-4.5-9.4-7.9-15.2-10.3-5.8-2.4-11.9-3.6-18.2-3.6-13.3 0-24.4 4.6-33.4 13.9s-13.5 20.8-13.5 34.5c0 13.4 4.5 24.8 13.5 34.2z",fill:"#ECF2F9"}),(0,Nl.jsx)("path",{clipRule:"evenodd",d:"M213.933 353.03h-193.5c-10 0-18.2-8.2-18.2-18.2v-125.4c0-10 8.2-18.2 18.2-18.2h193.5c10 0 18.2 8.2 18.2 18.2v125.4c0 10.1-8.2 18.2-18.2 18.2z",stroke:"#00E6C5",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4 10"}),(0,Nl.jsx)("path",{d:"M21.034 214.732a5.2 5.2 0 1 0 0-10.4 5.2 5.2 0 0 0 0 10.4zm16.899 0a5.2 5.2 0 1 0 0-10.4 5.2 5.2 0 0 0 0 10.4zm16.9 0a5.2 5.2 0 1 0 0-10.4 5.2 5.2 0 0 0 0 10.4z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M2.533 228.129h228.9",stroke:"#00E6C5",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4 10"}),(0,Nl.jsx)("path",{d:"M301.033 264.83l-216.9 12c-7.3.4-13.3-5.2-13.3-12.5V96.93c0-7.3 6-12.9 13.3-12.5l216.9 12c5.6.3 10.1 5.7 10.1 12v144.4c0 6.3-4.5 11.7-10.1 12z",fill:"#027BF3"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M90.433 107.93c3.4.2 6.1-2.4 6.1-5.8s-2.7-6.3-6.1-6.4c-3.3-.2-6.1 2.4-6.1 5.8s2.7 6.3 6.1 6.4zm19.8.798c3.3.1 6-2.5 6-5.8s-2.7-6.1-6-6.3c-3.3-.1-6 2.5-6 5.8s2.7 6.2 6 6.3zm25.2-4.9c0 3.3-2.6 5.9-5.8 5.7-3.2-.1-5.9-2.9-5.9-6.2 0-3.3 2.6-5.9 5.9-5.7 3.2.1 5.8 2.9 5.8 6.2zm66.001 61.703l19.1-20.9 17.4 19.1-18.9 20.9 18.9 20.5-17.4 19.5-19.1-20.5-19.4 21.5-18.1-19.1 19.6-21.5-19.6-21 18.1-19.5 19.4 21z",fill:"#fff"}),(0,Nl.jsx)("path",{d:"M327.433 112.83c0-28.4-21.7-37.1-33.5-37.9-.1 0-33.5 2.3-33.5 45.3 0 25.5 21.2 45.5 46 44.6 7.8-.3 14.9-2.6 21-6.4v-45.6z",fill:"#67B0F8"}),(0,Nl.jsx)("path",{d:"M380.534 195.931c-2.9 3.4-7.6 3.7-10.5.8l-38.6-39 11.3-12.2 37.8 39c2.9 3 2.9 8 0 11.4z",fill:"#FF4645"}),(0,Nl.jsx)("path",{d:"M342.833 145.629l-11.3 12.2 3.7 3.7c1.9 1.9 4.9 2 6.8.2 1.1-1 2.2-2.1 3.2-3.2.6-.7 1.3-1.4 1.9-2.1 1.6-1.9 1.5-4.8-.3-6.6l-4-4.2z",fill:"#D93654"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M267.633 154.13c-23-21.401-23-57.3 0-78.1 21.9-19.8 55.1-17 74.4 4.3 18.4 20.399 18.4 51.7 0 71.6-19.3 20.8-52.5 22.6-74.4 2.2zm9.4-10.802c15.6 15 39.8 14.2 54.1-.9 13.8-14.6 13.8-37.8 0-52.8-14.3-15.5-38.5-17-54.1-2.5-16.2 15.1-16.2 40.7 0 56.2z",fill:"#00236B"}),(0,Nl.jsx)("path",{d:"M41.034 42.73a2 2 0 1 0-4 0h4zm-4 8.3a2 2 0 0 0 4 0h-4zm4 17.2a2 2 0 1 0-4 0h4zm-4 8.9a2 2 0 0 0 4 0h-4zm19.2-15.2a2 2 0 0 0 0-4v4zm-8.2-4a2 2 0 1 0 0 4v-4zm-17.9 4a2 2 0 0 0 0-4v4zm-8.2-4a2 2 0 1 0 0 4v-4zm15.1-15.2v8.3h4v-8.3h-4zm0 25.5v8.9h4v-8.9h-4zm19.2-10.3h-8.2v4h8.2v-4zm-26.1 0h-8.2v4h8.2v-4z",fill:"#2EE5C0"})]}),(0,Nl.jsxs)("g",{id:"icon.accessDenied",width:"240",height:"240",viewBox:"0 0 240 240",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,Nl.jsx)("path",{d:"M8.09538 76.0473H58.6587C61.5462 76.0473 64.2412 77.6463 65.7171 80.2046L102.228 145.123C105.436 150.815 113.521 150.624 116.473 144.803L177.495 25.1359C178.907 22.3856 181.666 20.6588 184.682 20.6588H231.909C238.005 20.6588 241.919 27.3105 239.031 32.811L139.188 224.049C128.215 244.515 99.7896 245.475 87.4696 225.839L1.29371 88.7751C-2.17129 83.2747 1.74288 76.0473 8.09538 76.0473Z",fill:"currentColor"}),(0,Nl.jsx)("path",{d:"M38.51 148.083C39.6146 148.083 40.51 147.187 40.51 146.083C40.51 144.978 39.6146 144.083 38.51 144.083V148.083ZM25.5483 144.083C24.4438 144.083 23.5483 144.978 23.5483 146.083C23.5483 147.187 24.4438 148.083 25.5483 148.083V144.083ZM33.5708 152.649C34.1243 153.605 35.3479 153.931 36.3038 153.378C37.2597 152.824 37.5859 151.601 37.0324 150.645L33.5708 152.649ZM30.5516 139.452C29.9981 138.496 28.7745 138.17 27.8186 138.723C26.8627 139.277 26.5365 140.5 27.09 141.456L30.5516 139.452ZM27.09 150.645C26.5365 151.601 26.8627 152.824 27.8186 153.378C28.7745 153.931 29.9981 153.605 30.5516 152.649L27.09 150.645ZM37.0324 141.456C37.5859 140.5 37.2597 139.277 36.3038 138.723C35.3479 138.17 34.1243 138.496 33.5708 139.452L37.0324 141.456ZM59.2359 148.083C60.3405 148.083 61.2359 147.187 61.2359 146.083C61.2359 144.978 60.3405 144.083 59.2359 144.083V148.083ZM46.3384 144.083C45.2338 144.083 44.3384 144.978 44.3384 146.083C44.3384 147.187 45.2338 148.083 46.3384 148.083V144.083ZM54.2964 152.649C54.8499 153.605 56.0735 153.931 57.0294 153.378C57.9853 152.824 58.3115 151.601 57.758 150.645L54.2964 152.649ZM51.2772 139.452C50.7237 138.496 49.5001 138.17 48.5442 138.723C47.5883 139.277 47.2621 140.5 47.8156 141.456L51.2772 139.452ZM47.8156 150.645C47.2621 151.601 47.5883 152.824 48.5442 153.378C49.5001 153.931 50.7237 153.605 51.2772 152.649L47.8156 150.645ZM57.758 141.456C58.3115 140.5 57.9853 139.277 57.0294 138.723C56.0735 138.17 54.8499 138.496 54.2964 139.452L57.758 141.456ZM124.878 158.729H26.0616V162.729H124.878V158.729ZM26.0616 158.729C21.3209 158.729 17.4741 154.886 17.4741 150.176H13.4741C13.4741 157.107 19.124 162.729 26.0616 162.729V158.729ZM17.4741 150.176V141.925H13.4741V150.176H17.4741ZM17.4741 141.925C17.4741 137.216 21.3209 133.372 26.0616 133.372V129.372C19.124 129.372 13.4741 134.994 13.4741 141.925H17.4741ZM26.0616 133.372H124.878V129.372H26.0616V133.372ZM124.878 133.372C129.619 133.372 133.466 137.216 133.466 141.925H137.466C137.466 134.994 131.816 129.372 124.878 129.372V133.372ZM133.466 141.925V150.176H137.466V141.925H133.466ZM133.466 150.176C133.466 154.886 129.619 158.729 124.878 158.729V162.729C131.816 162.729 137.466 157.107 137.466 150.176H133.466ZM38.51 144.083H25.5483V148.083H38.51V144.083ZM25.5483 148.083H38.51V144.083H25.5483V148.083ZM37.0324 150.645L30.5516 139.452L27.09 141.456L33.5708 152.649L37.0324 150.645ZM27.09 141.456L33.5708 152.649L37.0324 150.645L30.5516 139.452L27.09 141.456ZM30.5516 152.649L37.0324 141.456L33.5708 139.452L27.09 150.645L30.5516 152.649ZM33.5708 139.452L27.09 150.645L30.5516 152.649L37.0324 141.456L33.5708 139.452ZM59.2359 144.083H46.3384V148.083H59.2359V144.083ZM46.3384 148.083H59.2359V144.083H46.3384V148.083ZM57.758 150.645L51.2772 139.452L47.8156 141.456L54.2964 152.649L57.758 150.645ZM47.8156 141.456L54.2964 152.649L57.758 150.645L51.2772 139.452L47.8156 141.456ZM51.2772 152.649L57.758 141.456L54.2964 139.452L47.8156 150.645L51.2772 152.649ZM54.2964 139.452L47.8156 150.645L51.2772 152.649L57.758 141.456L54.2964 139.452Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M80.0266 148.083C81.1312 148.083 82.0266 147.187 82.0266 146.083C82.0266 144.978 81.1312 144.083 80.0266 144.083V148.083ZM67.0649 144.083C65.9604 144.083 65.0649 144.978 65.0649 146.083C65.0649 147.187 65.9604 148.083 67.0649 148.083V144.083ZM75.0233 152.649C75.5768 153.605 76.8004 153.931 77.7563 153.378C78.7122 152.824 79.0384 151.601 78.4849 150.645L75.0233 152.649ZM72.0041 139.452C71.4506 138.496 70.227 138.17 69.2711 138.723C68.3152 139.277 67.989 140.5 68.5425 141.456L72.0041 139.452ZM68.5425 150.645C67.989 151.601 68.3152 152.824 69.2711 153.378C70.227 153.931 71.4506 153.605 72.0041 152.649L68.5425 150.645ZM78.4849 141.456C79.0384 140.5 78.7122 139.277 77.7563 138.723C76.8004 138.17 75.5768 138.496 75.0233 139.452L78.4849 141.456ZM80.0266 144.083H67.0649V148.083H80.0266V144.083ZM78.4849 150.645L72.0041 139.452L68.5425 141.456L75.0233 152.649L78.4849 150.645ZM72.0041 152.649L78.4849 141.456L75.0233 139.452L68.5425 150.645L72.0041 152.649Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M100.752 148.083C101.857 148.083 102.752 147.187 102.752 146.083C102.752 144.978 101.857 144.083 100.752 144.083V148.083ZM87.7905 144.083C86.686 144.083 85.7905 144.978 85.7905 146.083C85.7905 147.187 86.686 148.083 87.7905 148.083V144.083ZM95.8127 152.649C96.3662 153.605 97.5898 153.931 98.5457 153.378C99.5016 152.824 99.8278 151.601 99.2743 150.645L95.8127 152.649ZM92.7935 139.452C92.24 138.496 91.0164 138.17 90.0605 138.723C89.1046 139.277 88.7784 140.5 89.3319 141.456L92.7935 139.452ZM89.3319 150.645C88.7784 151.601 89.1046 152.824 90.0605 153.378C91.0164 153.931 92.24 153.605 92.7935 152.649L89.3319 150.645ZM99.2743 141.456C99.8278 140.5 99.5016 139.277 98.5457 138.723C97.5898 138.17 96.3662 138.496 95.8127 139.452L99.2743 141.456ZM100.752 144.083H87.7905V148.083H100.752V144.083ZM99.2743 150.645L92.7935 139.452L89.3319 141.456L95.8127 152.649L99.2743 150.645ZM92.7935 152.649L99.2743 141.456L95.8127 139.452L89.3319 150.645L92.7935 152.649Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M122.376 148.083C123.481 148.083 124.376 147.187 124.376 146.083C124.376 144.978 123.481 144.083 122.376 144.083V148.083ZM109.415 144.083C108.31 144.083 107.415 144.978 107.415 146.083C107.415 147.187 108.31 148.083 109.415 148.083V144.083ZM117.373 152.649C117.926 153.605 119.15 153.931 120.106 153.378C121.062 152.824 121.388 151.601 120.835 150.645L117.373 152.649ZM114.354 139.452C113.8 138.496 112.577 138.17 111.621 138.723C110.665 139.277 110.339 140.5 110.892 141.456L114.354 139.452ZM110.892 150.645C110.339 151.601 110.665 152.824 111.621 153.378C112.577 153.931 113.8 153.605 114.354 152.649L110.892 150.645ZM120.835 141.456C121.388 140.5 121.062 139.277 120.106 138.723C119.15 138.17 117.926 138.496 117.373 139.452L120.835 141.456ZM122.376 144.083H109.415V148.083H122.376V144.083ZM120.835 150.645L114.354 139.452L110.892 141.456L117.373 152.649L120.835 150.645ZM114.354 152.649L120.835 141.456L117.373 139.452L110.892 150.645L114.354 152.649Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M85.6732 44.3876H126.291C131.36 44.3876 135.467 48.481 135.467 53.5338V112.632C135.467 117.685 131.36 121.778 126.291 121.778H24.5865C19.5173 121.778 15.4106 117.685 15.4106 112.632V53.5338C15.4106 48.481 19.5173 44.3876 24.5865 44.3876H65.1398",stroke:"#2EE5C0",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M85.6729 52.9581H65.2037V34.2181C65.2037 28.5897 69.7596 23.9846 75.4704 23.9846C81.1171 23.9846 85.7371 28.5257 85.7371 34.2181V52.9581H85.6729Z",stroke:"#2EE5C0",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M75.471 38.0556C77.6682 38.0556 79.4493 36.2802 79.4493 34.0902C79.4493 31.9001 77.6682 30.1247 75.471 30.1247C73.2738 30.1247 71.4927 31.9001 71.4927 34.0902C71.4927 36.2802 73.2738 38.0556 75.471 38.0556Z",stroke:"#2EE5C0",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M51.2157 109.114C64.576 109.114 75.4066 98.3185 75.4066 85.0015C75.4066 71.6845 64.576 60.889 51.2157 60.889C37.8555 60.889 27.0249 71.6845 27.0249 85.0015C27.0249 98.3185 37.8555 109.114 51.2157 109.114Z",stroke:"#2EE5C0",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M51.2158 89.6066C56.1063 89.6066 60.0708 85.6549 60.0708 80.7802C60.0708 75.9056 56.1063 71.9539 51.2158 71.9539C46.3254 71.9539 42.3608 75.9056 42.3608 80.7802C42.3608 85.6549 46.3254 89.6066 51.2158 89.6066Z",stroke:"#2EE5C0",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"}),(0,Nl.jsx)("path",{d:"M67.578 102.782L68.9221 104.263C69.6769 103.578 69.7958 102.435 69.1981 101.61L67.578 102.782ZM34.853 102.782L33.2329 101.61C32.6352 102.435 32.7541 103.578 33.509 104.263L34.853 102.782ZM85.6733 71.1053C84.5688 71.1053 83.6733 72.0007 83.6733 73.1053C83.6733 74.2099 84.5688 75.1053 85.6733 75.1053V71.1053ZM120.773 75.1053C121.877 75.1053 122.773 74.2099 122.773 73.1053C122.773 72.0007 121.877 71.1053 120.773 71.1053V75.1053ZM85.6733 81.8505C84.5688 81.8505 83.6733 82.7459 83.6733 83.8505C83.6733 84.955 84.5688 85.8505 85.6733 85.8505V81.8505ZM120.773 85.8505C121.877 85.8505 122.773 84.955 122.773 83.8505C122.773 82.7459 121.877 81.8505 120.773 81.8505V85.8505ZM85.6733 92.5955C84.5688 92.5955 83.6733 93.4909 83.6733 94.5955C83.6733 95.7001 84.5688 96.5955 85.6733 96.5955V92.5955ZM120.773 96.5955C121.877 96.5955 122.773 95.7001 122.773 94.5955C122.773 93.4909 121.877 92.5955 120.773 92.5955V96.5955ZM51.2155 111.114C58.0246 111.114 64.273 108.482 68.9221 104.263L66.234 101.301C62.2848 104.885 56.9831 107.114 51.2155 107.114V111.114ZM69.1981 101.61C65.1754 96.0522 58.6128 92.4676 51.2155 92.4676V96.4676C57.2932 96.4676 62.6657 99.4068 65.9579 103.955L69.1981 101.61ZM51.2155 92.4676C43.8182 92.4676 37.2557 96.0522 33.2329 101.61L36.4731 103.955C39.7654 99.4068 45.1378 96.4676 51.2155 96.4676V92.4676ZM33.509 104.263C38.1581 108.482 44.4065 111.114 51.2155 111.114V107.114C45.4479 107.114 40.1463 104.885 36.1971 101.301L33.509 104.263ZM85.6733 75.1053H120.773V71.1053H85.6733V75.1053ZM120.773 71.1053H85.6733V75.1053H120.773V71.1053ZM85.6733 85.8505H120.773V81.8505H85.6733V85.8505ZM120.773 81.8505H85.6733V85.8505H120.773V81.8505ZM85.6733 96.5955H120.773V92.5955H85.6733V96.5955ZM120.773 92.5955H85.6733V96.5955H120.773V92.5955Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{d:"M204.905 160.729C204.905 159.625 204.01 158.729 202.905 158.729C201.801 158.729 200.905 159.625 200.905 160.729H204.905ZM200.905 164.759C200.905 165.863 201.801 166.759 202.905 166.759C204.01 166.759 204.905 165.863 204.905 164.759H200.905ZM204.905 173.137C204.905 172.033 204.01 171.137 202.905 171.137C201.801 171.137 200.905 172.033 200.905 173.137H204.905ZM200.905 177.487C200.905 178.591 201.801 179.487 202.905 179.487C204.01 179.487 204.905 178.591 204.905 177.487H200.905ZM211.247 171.108C212.352 171.108 213.247 170.212 213.247 169.108C213.247 168.003 212.352 167.108 211.247 167.108V171.108ZM207.269 167.108C206.164 167.108 205.269 168.003 205.269 169.108C205.269 170.212 206.164 171.108 207.269 171.108V167.108ZM198.542 171.108C199.647 171.108 200.542 170.212 200.542 169.108C200.542 168.003 199.647 167.108 198.542 167.108V171.108ZM194.5 167.108C193.395 167.108 192.5 168.003 192.5 169.108C192.5 170.212 193.395 171.108 194.5 171.108V167.108ZM200.905 160.729V164.759H204.905V160.729H200.905ZM200.905 173.137V177.487H204.905V173.137H200.905ZM211.247 167.108H207.269V171.108H211.247V167.108ZM198.542 167.108H194.5V171.108H198.542V167.108Z",fill:"#2EE5C0"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M138.482 49.5682L185.965 76.8787C191.547 80.0767 193.472 87.1761 190.2 92.101L163.699 137.832C160.427 143.972 153.368 145.891 147.786 142.693L142.011 139.367L138.931 144.611C138.546 145.187 137.84 145.379 137.327 145.059L133.99 143.14L129.242 151.327C129.049 151.711 128.664 151.967 128.279 152.095L116.922 155.484C116.087 155.74 115.574 156.7 115.767 157.531L118.269 167.509C118.462 168.34 117.948 169.236 117.114 169.491L107.04 172.561C106.206 172.881 105.692 173.777 105.885 174.608L108.452 184.522C108.708 185.353 108.131 186.249 107.297 186.505L97.1582 189.639C96.3241 189.958 95.8107 190.854 96.0032 191.685L98.6982 201.983C98.9549 202.814 98.3774 203.71 97.5432 203.965C97.5432 203.965 90.2924 206.204 84.6457 208.059C78.999 209.914 76.1757 207.099 75.149 203.773C74.1224 200.384 71.2349 189.702 71.2349 189.702C71.1707 189.319 71.2349 188.871 71.4274 188.487L106.783 127.47L103.254 125.424C102.677 125.104 102.484 124.336 102.805 123.761L105.885 118.516L100.367 115.382C94.8482 112.12 92.9232 105.085 96.1316 99.5202L122.568 53.7895C125.841 48.289 132.899 46.3703 138.482 49.5682ZM144 76.2392C141.433 80.6523 142.973 86.2807 147.401 88.8391C151.828 91.3975 157.475 89.8624 160.042 85.4493C162.608 81.0361 161.068 75.4077 156.641 72.8493C152.213 70.291 146.567 71.826 144 76.2392Z",fill:"#00236B"}),(0,Nl.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M129.755 57.3713L182.115 61.5286C187.954 61.8484 192.702 67.0291 192.638 73.2331V121.522C192.638 127.598 187.89 132.459 181.986 132.459H175.762V138.279C175.762 138.919 175.313 139.431 174.736 139.431H171.142V149.216C171.142 149.664 170.95 150.048 170.693 150.368L163.057 158.746C162.48 159.386 162.48 160.345 163.057 160.985L169.795 168.02C170.372 168.596 170.372 169.619 169.795 170.259L163.057 177.87C162.48 178.51 162.48 179.533 163.057 180.109L169.795 186.952C170.372 187.528 170.372 188.551 169.795 189.191L163.057 196.994C162.48 197.633 162.48 198.657 163.057 199.232L170.116 206.268C170.693 206.844 170.693 207.867 170.116 208.507C170.116 208.507 165.303 214.199 161.517 218.612C157.731 223.025 154.074 222.322 151.636 220.083C149.197 217.845 141.561 210.553 141.561 210.553C141.305 210.233 141.112 209.85 141.112 209.402V140.006H137.134C136.492 140.006 135.979 139.431 135.979 138.791V132.779H129.755C123.338 132.779 118.141 127.534 118.141 121.138V68.3083C118.141 61.9124 123.402 56.9875 129.755 57.3713ZM147.465 78.2858C147.465 83.2746 151.507 87.432 156.384 87.6238C161.261 87.8157 165.175 83.9142 165.175 78.9894C165.175 74.0645 161.261 69.9072 156.384 69.6514C151.443 69.4595 147.465 73.297 147.465 78.2858Z",fill:"#007CE9"}),(0,Nl.jsx)("path",{d:"M149.839 0C126.995 0 108.451 18.4842 108.451 41.2536C108.451 50.5276 111.467 59.354 117.114 66.5174L119.873 61.8484C115.702 55.8362 113.456 48.7368 113.456 41.2536C113.456 21.2344 129.755 4.98881 149.839 4.98881C169.923 4.98881 186.221 21.2344 186.221 41.2536C186.221 61.2728 169.859 77.4544 149.839 77.4544C149.069 77.4544 148.17 77.3904 147.529 77.3904C147.465 77.9661 147.336 78.6696 147.465 80.0767C147.593 81.3559 148.042 82.3792 148.042 82.3792C148.94 82.4432 148.876 82.4432 149.775 82.4432C172.618 82.4432 191.162 63.959 191.162 41.1896C191.162 18.4202 172.618 0 149.839 0Z",fill:"#00236B"}),(0,Nl.jsx)("path",{opacity:"0.2",d:"M161.581 218.548C165.367 214.135 170.18 208.443 170.18 208.443C170.757 207.803 170.757 206.78 170.18 206.204L163.121 199.168C162.544 198.593 162.544 197.569 163.121 196.93L169.859 189.127C170.436 188.487 170.436 187.464 169.859 186.888L163.121 180.045C162.544 179.469 162.544 178.446 163.121 177.806L169.859 170.195C170.436 169.555 170.436 168.532 169.859 167.956L163.121 160.921C162.544 160.281 162.544 159.322 163.121 158.682L170.757 150.304C171.014 149.984 171.206 149.6 171.206 149.152V141.413C171.206 140.262 170.308 139.367 169.153 139.367L162.48 140.006C159.079 140.006 156.384 142.757 156.384 146.082V218.74C156.384 220.403 158.309 221.426 159.656 220.403C160.298 219.955 160.94 219.316 161.581 218.548Z",fill:"#00236B"})]})]})})},ere=e.createContext(xe());ere.displayName="HistoryContext";var tre,nre,ire=ere;function rre(){return rre=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},rre.apply(this,arguments)}var ore,are=function(t){return e.createElement("svg",rre({viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg"},t),tre||(tre=e.createElement("path",{d:"M0 16C0 7.163 7.163 0 16 0s16 7.163 16 16-7.163 16-16 16S0 24.837 0 16z",fill:"#5282FF"})),nre||(nre=e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M24 9.5c0 .828-1.343 1.5-3 1.5s-3-.672-3-1.5S19.343 8 21 8s3 .672 3 1.5zM13 19.6v2.7c0 .9 1.3 1.6 3 1.6s3-.7 3-1.6v-2.7c-.8.7-1.9 1-3 1s-2.2-.3-3-1zm5-8.6v-.4c.8.7 1.9 1 3 1s2.2-.3 3-1v2.8c0 .8-1.2 1.5-2.8 1.6l-2.475 2.871c.176.192.275.405.275.629 0 .828-1.343 1.5-3 1.5s-3-.672-3-1.5a.9.9 0 01.232-.58L10.8 15.1C9.3 15 8 14.3 8 13.5v-2.9c.8.7 1.9 1 3 1s2.2-.3 3-1v.4h4zm-.276 6.272A5.27 5.27 0 0016 17c-.265 0-.522.017-.766.05a5.994 5.994 0 00-1.134.25L12 14.9c1.1-.2 2-.8 2-1.5V12h4v1.4c0 .7.7 1.3 1.8 1.5l-2.076 2.372zM14 9.5c0 .828-1.343 1.5-3 1.5s-3-.672-3-1.5S9.343 8 11 8s3 .672 3 1.5z",fill:"#fff"})))};function sre(){return sre=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},sre.apply(this,arguments)}var ure,lre=function(t){return e.createElement("svg",sre({"aria-hidden":"true","data-prefix":"fas","data-icon":"eye",className:"show_svg__svg-inline--fa show_svg__fa-eye",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},t),ore||(ore=e.createElement("path",{fill:"currentColor",d:"M572.5 238.1C518.3 115.5 410.9 32 288 32S57.69 115.6 3.469 238.1C1.563 243.4 0 251 0 256c0 4.977 1.562 12.6 3.469 17.03C57.72 396.5 165.1 480 288 480s230.3-83.58 284.5-206.1c1.9-5.3 3.5-13.8 3.5-17.9 0-5-1.6-12.6-3.5-17.9zM432 256c0 79.45-64.47 144-143.9 144-79.5 0-144.1-64.5-144.1-144s64.5-144 144-144 144 64.5 144 144zm-144-96c-2.3 0-5.6.4-8.5.8 5.3 9.2 8.5 19.8 8.5 31.2 0 35.35-28.65 64-64 64-11.4 0-22.9-3.3-31.3-8.5-.3 3-.7 6.1-.7 8.5 0 52.1 43 96 96 96s96-42.99 96-95.99S340.1 160 288 160z"})))};function cre(){return cre=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},cre.apply(this,arguments)}var dre,hre=function(t){return e.createElement("svg",cre({"aria-hidden":"true","data-prefix":"fas","data-icon":"eye-slash",className:"hide_svg__svg-inline--fa hide_svg__fa-eye-slash",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512"},t),ure||(ure=e.createElement("path",{fill:"currentColor",d:"M325.1 351.5l-99.3-77.9c8.303 44.56 47.26 78.37 94.22 78.37 1.78.03 3.38-.37 5.08-.47zM320 400c-79.5 0-144-64.52-144-143.1 0-6.789 1.09-13.28 1.1-19.82L81.28 160.4c-17.77 23.75-33.27 50.04-45.81 78.59C33.56 243.4 31.1 251 31.1 256c0 4.977 1.563 12.6 3.469 17.03 54.25 123.4 161.6 206.1 284.5 206.1 45.46 0 88.77-11.49 128.1-32.14l-74.5-58.4C356.1 396.1 338.1 400 320 400zm310.8 69.1l-103.5-81.11c31.37-31.96 57.77-70.75 77.21-114.1 1.906-4.43 3.469-12.07 3.469-17.03 0-4.976-1.562-12.6-3.469-17.03-54.25-123.4-161.6-206.1-284.5-206.1-62.69 0-121.2 21.94-170.8 59.62L38.81 5.116C34.41 1.679 29.19 0 24.03 0 16.91 0 9.839 3.158 5.121 9.189c-8.187 10.44-6.37 25.53 4.068 33.7l591.1 463.1c10.5 8.203 25.57 6.333 33.69-4.073C643.1 492.4 641.2 477.3 630.8 469.1zM463.1 256c0 24.85-6.705 47.98-17.95 68.27l-38.55-30.23c5.24-11.68 8.495-24.42 8.495-38.08 0-52.1-43-96-95.1-96-2.301.03-5.575.444-8.461.766C316.8 170 319.1 180.6 319.1 192c0 10.17-2.561 19.67-6.821 28.16L223.6 149.9c25.46-23.38 59.12-37.93 96.42-37.93C399.5 112 463.1 176.6 463.1 256z"})))};function fre(){return fre=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},fre.apply(this,arguments)}var pre=function(t){return e.createElement("svg",fre({"aria-hidden":"true","data-prefix":"fas","data-icon":"xmark",className:"close_svg__svg-inline--fa close_svg__fa-xmark",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 320 512"},t),dre||(dre=e.createElement("path",{fill:"currentColor",d:"M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25-6.2 6.25-14.4 9.35-22.6 9.35s-16.38-3.125-22.62-9.375L160 301.3 54.63 406.6C48.38 412.9 40.19 416 32 416s-16.37-3.1-22.625-9.4c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"})))},gre=(0,ht.Z)("authentication");var vre=function(t){var n=t.closable,i=void 0!==n&&n,r=K(),o=lt(),a=ct(),s=vg(a).returnUrl,u=ev((function(e){return e.authentication})).error,l=(0,e.useState)(""),c=(0,ne.Z)(l,2),d=c[0],h=c[1],f=(0,e.useState)(""),p=(0,ne.Z)(f,2),g=p[0],v=p[1],m=(0,e.useState)(""),_=(0,ne.Z)(m,2),y=_[0],b=_[1],w=(0,e.useState)(""),C=(0,ne.Z)(w,2),k=C[0],S=C[1],x=(0,e.useState)(!1),L=(0,ne.Z)(x,2),E=L[0],D=L[1];(0,e.useEffect)((function(){var e,t,n,i;null!==u&&void 0!==u&&null!==(e=u.data)&&void 0!==e&&null!==(t=e.error)&&void 0!==t&&t.includes("user")&&b(u.data.error),null!==u&&void 0!==u&&null!==(n=u.data)&&void 0!==n&&null!==(i=n.error)&&void 0!==i&&i.includes("password")&&S(u.data.error)}),[u]);var N=function(){r(Jo(d,g)).then((function(){if(s){var e=decodeURIComponent(s.toString()),t=new URL(e),n=t.pathname+t.search;o.replace(n)}}))},M=function(e){13===e.keyCode&&N()};return(0,Nl.jsxs)("section",{className:gre(),children:[(0,Nl.jsxs)("form",{className:gre("form-wrapper"),children:[(0,Nl.jsxs)("div",{className:gre("header"),children:[(0,Nl.jsxs)("div",{className:gre("logo"),children:[(0,Nl.jsx)(yo.J,{data:are,size:24}),"YDB"]}),(0,Nl.jsx)(yv,{href:"http://ydb.tech/docs",target:"_blank",children:"Documentation"})]}),(0,Nl.jsx)("h2",{className:gre("title"),children:"Sign in"}),(0,Nl.jsx)("div",{className:gre("field-wrapper"),children:(0,Nl.jsx)(db,{value:d,onUpdate:function(e){h(e),b("")},placeholder:"Username",error:y,onKeyDown:M,size:"l",autoFocus:!0})}),(0,Nl.jsxs)("div",{className:gre("field-wrapper"),children:[(0,Nl.jsx)(db,{value:g,onUpdate:function(e){v(e),S("")},type:E?"text":"password",placeholder:"Password",error:k,onKeyDown:M,size:"l"}),(0,Nl.jsx)(_o.z,{onClick:function(){D((function(e){return!e}))},size:"l",className:gre("show-password-button"),children:(0,Nl.jsx)(yo.J,{data:E?hre:lre,size:16})})]}),(0,Nl.jsx)(_o.z,{view:"action",onClick:N,width:"max",size:"l",disabled:Boolean(!d||y||k),className:gre("button-sign-in"),children:"Sign in"})]}),i&&o.length>1&&(0,Nl.jsx)(_o.z,{onClick:function(){o.go(-1)},className:gre("close"),children:(0,Nl.jsx)(yo.J,{data:pre,size:24})})]})},mre=(0,ht.Z)("app");function _re(t){var n=ct(),i=t.singleClusterMode,r=n.pathname.includes("/clusters")||!i&&"/"===n.pathname;return(0,Nl.jsxs)(e.Fragment,{children:[!r&&(0,Nl.jsx)(Xie,{mainPage:t.mainPage}),(0,Nl.jsx)("main",{className:mre("main"),children:t.children||(0,Nl.jsxs)(st,{children:[(0,Nl.jsx)(tt,{path:bg.cluster,component:sA}),(0,Nl.jsx)(tt,{path:bg.tenant,component:xne}),(0,Nl.jsx)(tt,{path:bg.node,component:rie}),(0,Nl.jsx)(tt,{path:bg.tablet,component:_ie}),(0,Nl.jsx)(tt,{path:bg.tabletsFilters,component:Sie}),(0,Nl.jsx)($e,{to:_g(bg.cluster,{activeTab:iA.tenants})})]})}),(0,Nl.jsx)(Lie,{}),(0,Nl.jsx)(Jie,{})]})}var yre=z((function(e){return{isAuthenticated:e.authentication.isAuthenticated,singleClusterMode:e.singleClusterMode}}))((function(e){var t=e.singleClusterMode,n=e.isAuthenticated,i=tv(Di),r=(0,ne.Z)(i,1)[0];return(0,Nl.jsx)(ire.Consumer,{children:function(i){return(0,Nl.jsx)(Ve,{history:i,children:(0,Nl.jsxs)(st,{children:[(0,Nl.jsx)(tt,{path:bg.auth,children:(0,Nl.jsx)(vre,{closable:!0})}),(0,Nl.jsx)(tt,{children:(0,Nl.jsx)(Ot,{theme:r,children:(0,Nl.jsx)("div",{className:mre({embedded:t}),children:n?e.children:(0,Nl.jsx)(vre,{})})})})]})})}})}));function bre(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]])}return n}"function"===typeof SuppressedError&&SuppressedError;var wre=n(31853),Cre=40,kre=n(95234),Sre=e.createContext(void 0);Sre.displayName="AsideHeaderInnerContext";var xre=Sre.Provider,Lre=function(){var t=e.useContext(Sre);if(void 0===t)throw new Error("AsideHeaderInnerContext is not initialized.\n Please check if you wrapped your component with AsideHeaderInnerContext.Provider");return t},Ere=e.createContext(void 0);Ere.displayName="AsideHeaderContext";var Dre=Ere.Provider,Nre=function(){var t=e.useContext(Ere);if(void 0===t)throw new Error("AsideHeaderContext is not initialized.\n Please check if you wrapped your component with AsideHeader\n Context.Provider");return t};function Mre(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!==typeof document){var i=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===n&&i.firstChild?i.insertBefore(r,i.firstChild):i.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}var Tre="collapse-item-id",Ire=["right-start","right-end","right"],Ore=28;function Are(e){if(!Fre(e))return Cre;switch(e.type){case"action":return 50;case"divider":return 15;default:return Cre}}function Rre(e){return e.reduce((function(e,t){return e+Are(t)}),0)}function Pre(e){var t=e.findIndex((function(e){var t=e.current;return Boolean(t)}));return-1===t?void 0:t}function Zre(e){var t=function(e){var t,n=[],i=(0,Na.Z)(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;(r.pinned||"divider"===r.type&&n.length>0&&"divider"!==n[n.length-1].type)&&n.push(r)}}catch(o){i.e(o)}finally{i.f()}return n}(e),n=e.filter((function(e){return e.afterMoreButton}));return Rre(t)+Rre(n)+(t.length===e.length?0:Cre)}function Fre(e){return void 0!==(null===e||void 0===e?void 0:e.id)}Mre('.gn-composite-bar-highlighted-item{display:flex;justify-content:center;position:absolute;z-index:10000}.gn-composite-bar-highlighted-item__icon{align-items:center;background-color:var(--g-color-base-background);border-radius:7px;box-shadow:0 8px 20px 0 var(--g-color-sfx-shadow);cursor:pointer;display:flex;height:var(--gn-aside-header-item-icon-background-size);justify-content:center;overflow:hidden;position:relative;transform:translateY(1px);width:var(--gn-aside-header-item-icon-background-size)}.gn-composite-bar-highlighted-item__icon:before{background-color:var(--g-color-base-selection);content:"";height:100%;position:absolute;width:100%;z-index:-1}.gn-composite-bar-highlighted-item__icon:hover:before{background-color:var(--g-color-base-selection-hover)}');var jre=(0,wre.b)("composite-bar-highlighted-item"),Hre=function(t){var n=t.iconRef,i=t.iconNode,r=t.onClick,o=t.onClickCapture,a=Lre().openModalSubscriber,s=(0,e.useState)({top:0,left:0,width:0,height:0}),u=(0,ne.Z)(s,2),l=u[0],c=l.top,d=l.left,h=l.width,f=l.height,p=u[1],g=(0,e.useState)(!1),v=(0,ne.Z)(g,2),m=v[0],_=v[1],y=(0,e.useMemo)((function(){return(0,kre.d)((function(){var e,t=(null===(e=null===n||void 0===n?void 0:n.current)||void 0===e?void 0:e.getBoundingClientRect())||{},i=t.top,r=void 0===i?0:i,o=t.left,a=void 0===o?0:o,s=t.width,u=void 0===s?0:s,l=t.height,c=void 0===l?0:l;p({top:r+window.scrollY,left:a+window.scrollX,width:u,height:c})}),200,{leading:!0})}),[n]),b=(0,e.useCallback)((function(){return y()}),[y]);return(0,e.useEffect)((function(){if(m)return b(),window.addEventListener("resize",b),function(){return window.removeEventListener("resize",b)}}),[b,m]),null===a||void 0===a||a((function(e){_(e)})),i&&m?e.createElement(jo,null,e.createElement("div",{className:jre(),style:{left:d,top:c,width:h,height:f},onClick:r,onClickCapture:o,"data-toast":!0},e.createElement("div",{className:jre("icon")},i))):null};Hre.displayName="HighlightedItem";Mre('.gn-composite-bar-item{--gn-composite-bar-item-action-size:36px;align-items:center;cursor:pointer;display:flex;height:100%;width:100%}.gn-composite-bar-item__icon{color:var(--gn-aside-header-menu-item-icon-color)}.gn-composite-bar-highlighted-item .gn-composite-bar-item__icon,.gn-footer-item .gn-composite-bar-item__icon{color:var(--gn-aside-header-footer-item-icon-color)}.gn-composite-bar_subheader .gn-composite-bar-item__icon{color:var(--gn-aside-header-subheader-item-icon-color)}.gn-composite-bar-item__icon-place{align-items:center;display:flex;flex-shrink:0;height:100%;justify-content:center;width:var(--gn-aside-header-min-width)}.gn-composite-bar-item__title{display:flex;overflow:hidden}.gn-composite-bar-item__title-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gn-composite-bar-item__title-adornment{margin:0 10px}.gn-composite-bar-item__collapse-item{align-items:center;cursor:pointer;display:flex;height:100%;padding:0 16px;width:100%}.gn-composite-bar-item__collapse-item .gn-composite-bar-item__title-adornment{margin-right:0}.gn-composite-bar-item__menu-divider{border-top:1px solid var(--g-color-line-generic);cursor:default;margin:0 8px;width:100%}.gn-composite-bar-item__collapse-items-popup-content{padding:4px 0}.gn-composite-bar-item__link{align-items:center;display:flex;height:100%;width:100%}.gn-composite-bar-item__link,.gn-composite-bar-item__link:active,.gn-composite-bar-item__link:focus,.gn-composite-bar-item__link:hover,.gn-composite-bar-item__link:visited{color:inherit;outline:none;text-decoration:none}.gn-composite-bar-item__btn-icon{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.gn-composite-bar-item_type_action{background:var(--g-color-base-float);border-radius:var(--gn-composite-bar-item-action-size);box-shadow:0 0 0 1px rgba(0,0,0,.03),0 5px 6px rgba(0,0,0,.12);height:var(--gn-composite-bar-item-action-size);justify-content:center;margin:0 10px 8px;transition:transform .1s ease-out,background-color .15s linear}.gn-composite-bar-item_type_action:focus{box-shadow:0 0 0 2px var(--g-color-line-misc)}.gn-composite-bar-item_type_action:focus:not(:focus-visible){box-shadow:none}.gn-composite-bar-item_type_action:hover{background-color:var(--g-color-base-float-hover)}.gn-composite-bar-item_type_action:active{box-shadow:0 1px 2px var(--g-color-sfx-shadow);transform:scale(.96);transition:none}.gn-composite-bar-item_type_action .gn-composite-bar-item__icon-place{width:var(--gn-composite-bar-item-action-size)}.gn-composite-bar-item_type_action .gn-composite-bar-item__title{margin-right:16px}.gn-composite-bar-item__icon-tooltip_item-type_action{margin-left:10px}.gn-composite-bar-item:not(.gn-composite-bar-item_compact).gn-composite-bar-item_current.gn-composite-bar-item_type_regular{background-color:var(--g-color-base-selection)}.gn-composite-bar-item:not(.gn-composite-bar-item_compact):not(.gn-composite-bar-item_current):hover.gn-composite-bar-item_type_regular{background-color:var(--g-color-base-simple-hover)}.gn-composite-bar-item_compact.gn-composite-bar-item_type_action{width:var(--gn-composite-bar-item-action-size)}.gn-composite-bar-item_compact.gn-composite-bar-item_type_action .gn-composite-bar-item__title{margin:0}.gn-composite-bar-item_compact.gn-composite-bar-item_current.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon{background-color:transparent;position:relative}.gn-composite-bar-item_compact.gn-composite-bar-item_current.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon:before{background-color:var(--g-color-base-selection);border-radius:7px;content:"";height:var(--gn-aside-header-item-icon-background-size);left:50%;margin-left:-19px;margin-top:-19px;position:absolute;top:50%;width:var(--gn-aside-header-item-icon-background-size);z-index:-1}.gn-composite-bar-item_compact:not(.gn-composite-bar-item_current):hover.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon{background-color:transparent;position:relative}.gn-composite-bar-item_compact:not(.gn-composite-bar-item_current):hover.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon:before{background-color:var(--g-color-base-simple-hover);border-radius:7px;content:"";height:var(--gn-aside-header-item-icon-background-size);left:50%;margin-left:-19px;margin-top:-19px;position:absolute;top:50%;width:var(--gn-aside-header-item-icon-background-size);z-index:-1}');var Bre=(0,wre.b)("composite-bar-item");function zre(t){var n=e.createElement("div",{className:Bre("title-text")},t.title);return t.rightAdornment&&(n=e.createElement(e.Fragment,null,n,e.createElement("div",{className:Bre("title-adornment")},t.rightAdornment))),n}var Wre=["right-end"],Vre=[-20,8],Yre=function(t){var n=t.item,i=t.className,r=t.collapseItems,o=t.onMouseLeave,a=t.onMouseEnter,s=t.enableTooltip,u=void 0===s||s,l=t.popupVisible,c=void 0!==l&&l,d=t.popupAnchor,h=t.popupPlacement,f=void 0===h?Wre:h,p=t.popupOffset,g=void 0===p?Vre:p,v=t.popupKeepMounted,m=t.renderPopupContent,_=t.onClosePopup,y=t.onItemClick,b=t.onItemClickCapture,w=t.bringForward,C=Nre().compact,k=e.useState(!1),S=(0,ne.Z)(k,2),x=S[0],L=S[1],E=e.useRef(null),D=d||E,N=e.useRef(null),M=n.type||"regular",T=n.current||!1,I=n.tooltipText||n.title,O=n.icon,A=n.iconSize||18,R=n.id===Tre,P=e.useMemo((function(){return[{name:"compact",enabled:!0,options:{compact:C},phase:"main",fn:function(){}}]}),[C]),Z=e.useCallback((function(e){var t;e instanceof MouseEvent&&e.target&&(null===(t=E.current)||void 0===t?void 0:t.contains(e.target))||null===_||void 0===_||_()}),[_]);if("divider"===n.type)return e.createElement("div",{className:Bre("menu-divider")});var F,j=function(t){return C?e.createElement(ny,{content:I,disabled:!u||R&&x||c,placement:"right",className:Bre("icon-tooltip",{"item-type":M})},e.createElement("div",{onMouseEnter:function(){return null===a||void 0===a?void 0:a()},onMouseLeave:function(){return null===o||void 0===o?void 0:o()},className:Bre("btn-icon")},t)):t},H=function(t){var r=t.icon,s=t.title,u=e.createElement(e.Fragment,null,e.createElement("div",{className:Bre({type:M,current:T,compact:C},i),ref:E,onClick:function(e){R?L(!x):null===y||void 0===y||y(n,!1,e)},onClickCapture:b,onMouseEnter:function(){C||null===a||void 0===a||a()},onMouseLeave:function(){C||null===o||void 0===o||o()}},e.createElement("div",{className:Bre("icon-place"),ref:N},j(r)),e.createElement("div",{className:Bre("title"),title:"string"===typeof n.title?n.title:void 0},s)),m&&Boolean(null===D||void 0===D?void 0:D.current)&&e.createElement(J_,{contentClassName:Bre("popup"),open:c,keepMounted:v,placement:f,offset:g,anchorRef:D,onClose:Z,modifiers:P},m()));return n.link?e.createElement("a",{href:n.link,className:Bre("link")},u):u},B=O?e.createElement(yo.J,{data:O,size:A,className:Bre("icon")}):null,z={icon:B,title:zre(n)},W=null,V={compact:Boolean(C),collapsed:!1,item:n,ref:E};return"function"===typeof n.itemWrapper?(F=n.itemWrapper(z,H,V),W=w&&n.itemWrapper(z,(function(e){var t=e.icon;return j(t)}),V)):(F=H(z),W=w&&j(B)),e.createElement(e.Fragment,null,w&&e.createElement(Hre,{iconNode:W,iconRef:N,onClick:function(e){return null===y||void 0===y?void 0:y(n,!1,e)},onClickCapture:b}),F,x&&R&&(null===r||void 0===r?void 0:r.length)&&Boolean(null===D||void 0===D?void 0:D.current)&&e.createElement(Ure,Object.assign({},t,{anchorRef:E,onClose:function(){return L(!1)}})))};function Ure(t){var n=t.onItemClick,i=t.collapseItems,r=t.anchorRef,o=t.onClose,a=Nre().compact;return(null===i||void 0===i?void 0:i.length)?e.createElement(J_,{placement:Ire,open:!0,anchorRef:r,onClose:o},e.createElement("div",{className:Bre("collapse-items-popup-content")},e.createElement(lD,{itemClassName:Bre("root-collapse-item"),items:i,selectedItemIndex:Pre(i),itemHeight:Ore,itemsHeight:i.length*Ore,virtualized:!1,filterable:!1,sortable:!1,onItemClick:o,renderItem:function(t){var i=function(i){var r=i.title,o=e.createElement("div",{className:Bre("collapse-item"),onClick:function(e){null===n||void 0===n||n(t,!0,e)}},r);return t.link?e.createElement("a",{href:t.link,className:Bre("link")},o):o},o={title:zre(t)},s={compact:Boolean(a),collapsed:!0,item:t,ref:r};return"function"===typeof t.itemWrapper?t.itemWrapper(o,i,s):i(o)}}))):null}Yre.displayName="Item";Mre(".gn-footer-item{height:40px;width:100%}");var Kre=(0,wre.b)("footer-item"),qre=function(t){var n=t.item,i=bre(t,["item"]);return e.createElement(Yre,Object.assign({},i,{item:Object.assign({iconSize:18},n),className:Kre({compact:i.compact}),onItemClick:n.onItemClick,onItemClickCapture:n.onItemClickCapture}))},Gre=e.memo((function(t){var n=t.renderContent,i=t.size;return e.createElement(e.Fragment,null,n({size:i}))}));Gre.displayName="RenderContent";var $re=function(t){var n=t.size,i=t.className,r=t.cssSizeVariableName,o=void 0===r?"--gn-aside-header-size":r,a=t.renderContent,s=t.children;return e.createElement("div",{className:i,style:Object.assign({},(0,wt.Z)({},o,"".concat(n,"px")))},"function"===typeof a?e.createElement(Gre,{size:n,renderContent:a}):s)},Qre=n(44591);Mre('.g-root{--gn-aside-header-background-color:var(--g-color-base-warning-light);--gn-aside-header-collapse-button-divider-line-color:var(\n --gn-aside-header-subheader-divider-line-color\n );--gn-aside-header-menu-item-icon-color:var(--g-color-text-misc);--gn-aside-header-footer-item-icon-color:var(--g-color-text-primary);--gn-aside-header-subheader-item-icon-color:var(--g-color-text-primary);--gn-aside-header-item-icon-background-size:38px;--gn-aside-top-panel-height:0px}.g-root_theme_light,.g-root_theme_light-hc{--gn-aside-header-divider-line-color:var(--g-color-line-generic);--gn-aside-header-subheader-divider-line-color:var(--g-color-line-generic)}.g-root_theme_dark,.g-root_theme_dark-hc{--gn-aside-header-divider-line-color:var(--g-color-line-generic-solid);--gn-aside-header-subheader-divider-line-color:var(--g-color-line-generic-solid)}.gn-aside-header{--gn-aside-header-min-width:56px;height:100%;position:relative;width:100%}.gn-aside-header,.gn-aside-header__aside{background-color:var(--g-color-base-background)}.gn-aside-header__aside{box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-aside-top-panel-height);max-height:calc(100vh - var(--gn-aside-top-panel-height));position:sticky;top:var(--gn-aside-top-panel-height);width:inherit;z-index:100}.gn-aside-header__aside:after{background-color:var(--gn-aside-header-divider-line-color);content:"";height:100%;position:absolute;right:0;top:0;width:1px;z-index:2}.gn-aside-header__aside-popup-anchor{bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.gn-aside-header__aside-content{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;overflow-x:hidden;position:relative;user-select:none;width:inherit;z-index:2}.gn-aside-header__aside-content>.gn-aside-header-logo{margin:8px 0}.gn-aside-header__aside-content_with-decoration{background:linear-gradient(180deg,var(--gn-aside-header-background-color) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.gn-aside-header__aside-custom-background{bottom:0;display:flex;position:absolute;top:0;z-index:-1}.gn-aside-header_compact .gn-aside-header__aside-content{background:transparent}.gn-aside-header__header{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.gn-aside-header__header .gn-aside-header__header-divider{bottom:0;color:var(--gn-aside-header-background-color);display:none;left:0;position:absolute;z-index:-2}.gn-aside-header__header_with-decoration:before{background-color:var(--gn-aside-header-background-color);content:"";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.gn-aside-header__header:after{background-color:var(--gn-aside-header-subheader-divider-line-color);bottom:12px;content:"";height:1px;left:0;position:absolute;width:100%;z-index:-2}.gn-aside-header_compact .gn-aside-header__header:before,.gn-aside-header_compact .gn-aside-header__header_with-decoration .gn-aside-header__header-divider{display:block}.gn-aside-header_compact .gn-aside-header__header_with-decoration:after{display:none}.gn-aside-header__menu-items{flex-grow:1}.gn-aside-header__footer{display:flex;flex-direction:column;flex-shrink:0;margin:8px 0;width:100%}.gn-aside-header__panels{bottom:0;left:0;max-height:calc(100vh - var(--gn-aside-top-panel-height));overflow:auto;position:fixed;right:0;top:var(--gn-aside-top-panel-height);z-index:98}.gn-aside-header__panel{height:100%}.gn-aside-header__pane-container{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.gn-aside-header__pane-top-divider{background-color:var(--gn-aside-header-divider-line-color);height:1px;margin-top:-1px}.gn-aside-header__pane-top{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:98}.gn-aside-header__pane-top-alert_centered{display:flex;justify-content:space-around}.gn-aside-header__pane-top-alert_dense{padding-bottom:var(--g-spacing-2);padding-top:var(--g-spacing-2)}.gn-aside-header__content{margin-top:var(--gn-aside-top-panel-height);width:calc(100% - var(--gn-aside-header-size));z-index:95}.gn-aside-header__collapse-button{--yc-button-background-color-hover:transparent;border-top:1px solid var(--gn-aside-header-collapse-button-divider-line-color);box-sizing:border-box;flex:none;height:20px;margin-top:auto;overflow:hidden;width:100%}.gn-aside-header__collapse-button>.yc-button__text{align-items:center;display:flex;height:20px;justify-content:center}.gn-aside-header__collapse-button:not(.gn-aside-header__collapse-button_compact) .gn-aside-header__collapse-icon{transform:rotate(180deg)}.gn-aside-header__collapse-button .gn-aside-header__collapse-icon{color:var(--g-color-text-secondary)}.gn-aside-header__collapse-button:hover .gn-aside-header__collapse-icon{color:var(--g-color-text-primary)}');var Xre,Jre=e.lazy((function(){return n.e(8546).then(n.bind(n,38546)).then((function(e){return{default:e.TopPanel}}))})),eoe=Object.assign((function(t){var n=t.compact,i=t.className,r=t.children,o=t.topAlert,a=n?56:236,s=(0,e.useMemo)((function(){return{size:a,compact:n}}),[n,a]);return e.createElement(Dre,{value:s},e.createElement("div",{className:(0,Qre.b)({compact:n},i),style:Object.assign({},{"--gn-aside-header-size":"".concat(a,"px")})},o&&e.createElement(e.Suspense,{fallback:null},e.createElement(Jre,{topAlert:o})),e.createElement("div",{className:(0,Qre.b)("pane-container")},r)))}),{Content:function(t){var n=t.children,i=t.renderContent,r=Nre().size;return e.createElement($re,{size:r,className:(0,Qre.b)("content"),renderContent:i},n)}}),toe=n(11598),noe=n(92673),ioe=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M10.5 2.255v-.01c.003-.03.013-.157-.361-.35C9.703 1.668 8.966 1.5 8 1.5c-.967 0-1.703.169-2.138.394-.375.194-.365.32-.362.351v.01c-.003.03-.013.157.362.35C6.297 2.832 7.033 3 8 3c.967 0 1.703-.169 2.139-.394.374-.194.364-.32.361-.351ZM8 4.5c.506 0 .99-.04 1.436-.118l.84 2.352.253.707.717.221c.648.2 1.055.44 1.277.65.192.18.227.31.227.438 0 .14-.055.488-.937.878-.869.384-2.2.622-3.813.622s-2.944-.238-3.813-.622c-.882-.39-.937-.738-.937-.878 0-.128.035-.259.227-.439.222-.209.629-.448 1.277-.649l.717-.221.253-.707.84-2.352c.445.079.93.118 1.436.118Zm4-2.25c0 .738-.433 1.294-1.136 1.669l.825 2.31c1.553.48 2.561 1.32 2.561 2.52 0 1.854-2.402 2.848-5.5 2.985V15a.75.75 0 0 1-1.5 0v-3.266c-3.098-.136-5.5-1.131-5.5-2.984 0-1.2 1.008-2.04 2.561-2.52l.825-2.311C4.433 3.544 4 2.988 4 2.25 4 .75 5.79 0 8 0s4 .75 4 2.25Z",clipRule:"evenodd"}))},roe=function(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},t),e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M10.5 2.255v-.01c.003-.03.013-.157-.361-.35C9.703 1.668 8.966 1.5 8 1.5c-.967 0-1.703.169-2.138.394-.375.194-.365.32-.362.351v.01c-.003.03-.013.157.362.35C6.297 2.832 7.033 3 8 3c.967 0 1.703-.169 2.139-.394.374-.194.364-.32.361-.351ZM12 2.25c0 .738-.433 1.294-1.136 1.669l.825 2.31c1.553.48 2.561 1.32 2.561 2.52 0 1.854-2.402 2.848-5.5 2.985V15a.75.75 0 0 1-1.5 0v-3.266c-3.098-.136-5.5-1.131-5.5-2.984 0-1.2 1.008-2.04 2.561-2.52l.825-2.311C4.433 3.544 4 2.988 4 2.25 4 .75 5.79 0 8 0s4 .75 4 2.25Z",clipRule:"evenodd"}))},ooe=/{{(.*?)}}/g;function aoe(e,t){return 0===e?t.None:1===e||-1===e?t.One:t.Many}function soe(e,t){var n=Math.abs(e%10),i=Math.abs(e%100);return 0===e?t.None:1===n&&11!==i?t.One:n>1&&n<5&&(i<10||i>20)?t.Few:t.Many}!function(e){e[e.One=0]="One",e[e.Few=1]="Few",e[e.Many=2]="Many",e[e.None=3]="None"}(Xre||(Xre={}));var uoe,loe=function(){function e(t){(0,X.Z)(this,e),this.data={},this.lang=void 0,this.pluralizers={en:aoe,ru:soe},this.logger=null,this.logger=(null===t||void 0===t?void 0:t.logger)||null}return(0,J.Z)(e,[{key:"setLang",value:function(e){this.lang=e}},{key:"configurePluralization",value:function(e){this.pluralizers=Object.assign({},this.pluralizers,e)}},{key:"registerKeyset",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(this.data[e]&&Object.prototype.hasOwnProperty.call(this.data[e],t))throw new Error("Keyset '".concat(t,"' is already registered, aborting!"));this.data[e]=Object.assign({},this.data[e],(0,wt.Z)({},t,n))}},{key:"registerKeysets",value:function(e,t){var n=this;Object.keys(t).forEach((function(i){n.registerKeyset(e,i,t[i])}))}},{key:"has",value:function(e,t,n){var i=this.getLanguageData(n);return Boolean(i&&i[e]&&i[e][t])}},{key:"i18n",value:function(e,t,n){var i=this.getLanguageData(this.lang);if("undefined"===typeof i)throw new Error("Language '".concat(this.lang,"' is not defined, make sure you call setLang for the same language you called registerKeysets for!"));if(0===Object.keys(i).length)return this.warn("Language data is empty."),t;var r=i[e];if(!r)return this.warn("Keyset not found.",e),t;if(0===Object.keys(r).length)return this.warn("Keyset is empty.",e),t;var o,a=r&&r[t];if("undefined"===typeof a)return this.warn("Missing key.",e,t),t;if(Array.isArray(a)){if(a.length<3)return this.warn("Missing required plurals",e,t),t;var s=Number(null===n||void 0===n?void 0:n.count);if(Number.isNaN(s))return this.warn("Missing params.count for key.",e,t),t;o=a[this.getLanguagePluralizer(this.lang)(s,Xre)]||a[Xre.Many],void 0===a[Xre.None]&&this.warn("Missing key for 0",e,t)}else o=a;return n&&(o=function(e,t){for(var n,i="",r=ooe.lastIndex=0;n=ooe.exec(e);){r!==n.index&&(i+=e.slice(r,n.index)),r=ooe.lastIndex;var o=n,a=(0,ne.Z)(o,2),s=a[0],u=a[1];Object.prototype.hasOwnProperty.call(t,u)?i+=t[u]:i+=s}return r<e.length&&(i+=e.slice(r)),i}(o,n)),o}},{key:"keyset",value:function(e){var t=this;return function(n,i){return t.i18n(e,n,i)}}},{key:"warn",value:function(e,t,n){var i,r="";t?(r+=t,n&&(r+=".".concat(n))):r="languageData",null===(i=this.logger)||void 0===i||i.log("I18n: ".concat(e),{level:"info",logger:r,extra:{type:"i18n"}})}},{key:"getLanguageData",value:function(e){var t=e||this.lang;return t?this.data[t]:void 0}},{key:"getLanguagePluralizer",value:function(e){var t=e?this.pluralizers[e]:void 0;return t||this.warn("Pluralization is not configured for language '".concat(e,"', falling back to the english ruleset")),t||aoe}}]),e}();!function(e){e.Ru="ru",e.En="en"}(uoe||(uoe={}));var coe,doe=[],hoe={lang:uoe.En},foe=new loe;function poe(e,t){return Object.entries(e).forEach((function(e){var n=(0,ne.Z)(e,2),i=n[0],r=n[1];return foe.registerKeyset(i,t,r)})),foe.keyset(t)}function goe(){return goe=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},goe.apply(this,arguments)}foe.setLang(hoe.lang),function(e){doe.push(e)}((function(e){foe.setLang(e.lang)}));var voe=function(t){return e.createElement("svg",goe({width:56,height:29,viewBox:"0 0 56 29",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},t),coe||(coe=e.createElement("path",{d:"M56 0v29c-.8-1-7-6.1-17.7-8.4L13 15.7A16 16 0 0 1 0 0Z"})))};function moe(){return moe=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},moe.apply(this,arguments)}function _oe(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}function yoe(e,t){return yoe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},yoe(e,t)}function boe(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,yoe(e,t)}var woe,Coe,koe,Soe;function xoe(){if(Coe)return woe;Coe=1;return woe="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}function Loe(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}(function(){if(Soe)return koe;Soe=1;var e=xoe();function t(){}function n(){}return n.resetWarningCache=t,koe=function(){function i(t,n,i,r,o,a){if(a!==e){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function r(){return i}i.isRequired=i;var o={array:i,bigint:i,bool:i,func:i,number:i,object:i,string:i,symbol:i,any:i,arrayOf:r,element:i,elementType:i,instanceOf:r,node:i,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:n,resetWarningCache:t};return o.PropTypes=o,o}})()();var Eoe=!1,Doe=e.createContext(null),Noe=function(e){return e.scrollTop},Moe="unmounted",Toe="exited",Ioe="entering",Ooe="entered",Aoe="exiting",Roe=function(n){function i(e,t){var i;i=n.call(this,e,t)||this;var r,o=t&&!t.isMounting?e.enter:e.appear;return i.appearStatus=null,e.in?o?(r=Toe,i.appearStatus=Ioe):r=Ooe:r=e.unmountOnExit||e.mountOnEnter?Moe:Toe,i.state={status:r},i.nextCallback=null,i}boe(i,n),i.getDerivedStateFromProps=function(e,t){return e.in&&t.status===Moe?{status:Toe}:null};var r=i.prototype;return r.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},r.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==Ioe&&n!==Ooe&&(t=Ioe):n!==Ioe&&n!==Ooe||(t=Aoe)}this.updateStatus(!1,t)},r.componentWillUnmount=function(){this.cancelNextCallback()},r.getTimeouts=function(){var e,t,n,i=this.props.timeout;return e=t=n=i,null!=i&&"number"!==typeof i&&(e=i.exit,t=i.enter,n=void 0!==i.appear?i.appear:t),{exit:e,enter:t,appear:n}},r.updateStatus=function(e,n){if(void 0===e&&(e=!1),null!==n)if(this.cancelNextCallback(),n===Ioe){if(this.props.unmountOnExit||this.props.mountOnEnter){var i=this.props.nodeRef?this.props.nodeRef.current:t.findDOMNode(this);i&&Noe(i)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===Toe&&this.setState({status:Moe})},r.performEnter=function(e){var n=this,i=this.props.enter,r=this.context?this.context.isMounting:e,o=this.props.nodeRef?[r]:[t.findDOMNode(this),r],a=o[0],s=o[1],u=this.getTimeouts(),l=r?u.appear:u.enter;!e&&!i||Eoe?this.safeSetState({status:Ooe},(function(){n.props.onEntered(a)})):(this.props.onEnter(a,s),this.safeSetState({status:Ioe},(function(){n.props.onEntering(a,s),n.onTransitionEnd(l,(function(){n.safeSetState({status:Ooe},(function(){n.props.onEntered(a,s)}))}))})))},r.performExit=function(){var e=this,n=this.props.exit,i=this.getTimeouts(),r=this.props.nodeRef?void 0:t.findDOMNode(this);n&&!Eoe?(this.props.onExit(r),this.safeSetState({status:Aoe},(function(){e.props.onExiting(r),e.onTransitionEnd(i.exit,(function(){e.safeSetState({status:Toe},(function(){e.props.onExited(r)}))}))}))):this.safeSetState({status:Toe},(function(){e.props.onExited(r)}))},r.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},r.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},r.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(i){n&&(n=!1,t.nextCallback=null,e(i))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},r.onTransitionEnd=function(e,n){this.setNextCallback(n);var i=this.props.nodeRef?this.props.nodeRef.current:t.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(i&&!r){if(this.props.addEndListener){var o=this.props.nodeRef?[this.nextCallback]:[i,this.nextCallback],a=o[0],s=o[1];this.props.addEndListener(a,s)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},r.render=function(){var t=this.state.status;if(t===Moe)return null;var n=this.props,i=n.children;n.in,n.mountOnEnter,n.unmountOnExit,n.appear,n.enter,n.exit,n.timeout,n.addEndListener,n.onEnter,n.onEntering,n.onEntered,n.onExit,n.onExiting,n.onExited,n.nodeRef;var r=_oe(n,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return e.createElement(Doe.Provider,{value:null},"function"===typeof i?i(t,r):e.cloneElement(e.Children.only(i),r))},i}(e.Component);function Poe(){}Roe.contextType=Doe,Roe.propTypes={},Roe.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Poe,onEntering:Poe,onEntered:Poe,onExit:Poe,onExiting:Poe,onExited:Poe},Roe.UNMOUNTED=Moe,Roe.EXITED=Toe,Roe.ENTERING=Ioe,Roe.ENTERED=Ooe,Roe.EXITING=Aoe;var Zoe=function(e,t){return e&&t&&t.split(" ").forEach((function(t){return i=t,void((n=e).classList?n.classList.add(i):function(e,t){return e.classList?!!t&&e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")}(n,i)||("string"===typeof n.className?n.className=n.className+" "+i:n.setAttribute("class",(n.className&&n.className.baseVal||"")+" "+i)));var n,i}))},Foe=function(e,t){return e&&t&&t.split(" ").forEach((function(t){return i=t,void((n=e).classList?n.classList.remove(i):"string"===typeof n.className?n.className=Loe(n.className,i):n.setAttribute("class",Loe(n.className&&n.className.baseVal||"",i)));var n,i}))},joe=function(t){function n(){for(var e,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];return(e=t.call.apply(t,[this].concat(i))||this).appliedClasses={appear:{},enter:{},exit:{}},e.onEnter=function(t,n){var i=e.resolveArguments(t,n),r=i[0],o=i[1];e.removeClasses(r,"exit"),e.addClass(r,o?"appear":"enter","base"),e.props.onEnter&&e.props.onEnter(t,n)},e.onEntering=function(t,n){var i=e.resolveArguments(t,n),r=i[0],o=i[1]?"appear":"enter";e.addClass(r,o,"active"),e.props.onEntering&&e.props.onEntering(t,n)},e.onEntered=function(t,n){var i=e.resolveArguments(t,n),r=i[0],o=i[1]?"appear":"enter";e.removeClasses(r,o),e.addClass(r,o,"done"),e.props.onEntered&&e.props.onEntered(t,n)},e.onExit=function(t){var n=e.resolveArguments(t)[0];e.removeClasses(n,"appear"),e.removeClasses(n,"enter"),e.addClass(n,"exit","base"),e.props.onExit&&e.props.onExit(t)},e.onExiting=function(t){var n=e.resolveArguments(t)[0];e.addClass(n,"exit","active"),e.props.onExiting&&e.props.onExiting(t)},e.onExited=function(t){var n=e.resolveArguments(t)[0];e.removeClasses(n,"exit"),e.addClass(n,"exit","done"),e.props.onExited&&e.props.onExited(t)},e.resolveArguments=function(t,n){return e.props.nodeRef?[e.props.nodeRef.current,t]:[t,n]},e.getClassNames=function(t){var n=e.props.classNames,i="string"===typeof n,r=i?""+(i&&n?n+"-":"")+t:n[t];return{baseClassName:r,activeClassName:i?r+"-active":n[t+"Active"],doneClassName:i?r+"-done":n[t+"Done"]}},e}boe(n,t);var i=n.prototype;return i.addClass=function(e,t,n){var i=this.getClassNames(t)[n+"ClassName"],r=this.getClassNames("enter").doneClassName;"appear"===t&&"done"===n&&r&&(i+=" "+r),"active"===n&&e&&Noe(e),i&&(this.appliedClasses[t][n]=i,Zoe(e,i))},i.removeClasses=function(e,t){var n=this.appliedClasses[t],i=n.base,r=n.active,o=n.done;this.appliedClasses[t]={},i&&Foe(e,i),r&&Foe(e,r),o&&Foe(e,o)},i.render=function(){var t=this.props;t.classNames;var n=_oe(t,["classNames"]);return e.createElement(Roe,moe({},n,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},n}(e.Component);function Hoe(t,n){var i=Object.create(null);return t&&e.Children.map(t,(function(e){return e})).forEach((function(t){i[t.key]=function(t){return n&&(0,e.isValidElement)(t)?n(t):t}(t)})),i}function Boe(e,t,n){return null!=n[t]?n[t]:e.props[t]}function zoe(t,n,i){var r=Hoe(t.children),o=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var i,r=Object.create(null),o=[];for(var a in e)a in t?o.length&&(r[a]=o,o=[]):o.push(a);var s={};for(var u in t){if(r[u])for(i=0;i<r[u].length;i++){var l=r[u][i];s[r[u][i]]=n(l)}s[u]=n(u)}for(i=0;i<o.length;i++)s[o[i]]=n(o[i]);return s}(n,r);return Object.keys(o).forEach((function(a){var s=o[a];if((0,e.isValidElement)(s)){var u=a in n,l=a in r,c=n[a],d=(0,e.isValidElement)(c)&&!c.props.in;!l||u&&!d?l||!u||d?l&&u&&(0,e.isValidElement)(c)&&(o[a]=(0,e.cloneElement)(s,{onExited:i.bind(null,s),in:c.props.in,exit:Boe(s,"exit",t),enter:Boe(s,"enter",t)})):o[a]=(0,e.cloneElement)(s,{in:!1}):o[a]=(0,e.cloneElement)(s,{onExited:i.bind(null,s),in:!0,exit:Boe(s,"exit",t),enter:Boe(s,"enter",t)})}})),o}joe.defaultProps={classNames:""},joe.propTypes={};var Woe=Object.values||function(e){return Object.keys(e).map((function(t){return e[t]}))},Voe=function(t){function n(e,n){var i,r=(i=t.call(this,e,n)||this).handleExited.bind(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i));return i.state={contextValue:{isMounting:!0},handleExited:r,firstRender:!0},i}boe(n,t);var i=n.prototype;return i.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},i.componentWillUnmount=function(){this.mounted=!1},n.getDerivedStateFromProps=function(t,n){var i,r,o=n.children,a=n.handleExited;return{children:n.firstRender?(i=t,r=a,Hoe(i.children,(function(t){return(0,e.cloneElement)(t,{onExited:r.bind(null,t),in:!0,appear:Boe(t,"appear",i),enter:Boe(t,"enter",i),exit:Boe(t,"exit",i)})}))):zoe(t,o,a),firstRender:!1}},i.handleExited=function(e,t){var n=Hoe(this.props.children);e.key in n||(e.props.onExited&&e.props.onExited(t),this.mounted&&this.setState((function(t){var n=moe({},t.children);return delete n[e.key],{children:n}})))},i.render=function(){var t=this.props,n=t.component,i=t.childFactory,r=_oe(t,["component","childFactory"]),o=this.state.contextValue,a=Woe(this.state.children).map(i);return delete r.appear,delete r.enter,delete r.exit,null===n?e.createElement(Doe.Provider,{value:o},a):e.createElement(Doe.Provider,{value:o},e.createElement(n,r,a))},n}(e.Component);Voe.propTypes={},Voe.defaultProps={component:"div",childFactory:function(e){return e}};var Yoe,Uoe,Koe=function(n){function i(){for(var e,t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];return(e=n.call.apply(n,[this].concat(i))||this).handleEnter=function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e.handleLifecycle("onEnter",0,n)},e.handleEntering=function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e.handleLifecycle("onEntering",0,n)},e.handleEntered=function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e.handleLifecycle("onEntered",0,n)},e.handleExit=function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e.handleLifecycle("onExit",1,n)},e.handleExiting=function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e.handleLifecycle("onExiting",1,n)},e.handleExited=function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e.handleLifecycle("onExited",1,n)},e}boe(i,n);var r=i.prototype;return r.handleLifecycle=function(n,i,r){var o,a=this.props.children,s=e.Children.toArray(a)[i];if(s.props[n]&&(o=s.props)[n].apply(o,r),this.props[n]){var u=s.props.nodeRef?void 0:t.findDOMNode(this);this.props[n](u)}},r.render=function(){var t=this.props,n=t.children,i=t.in,r=_oe(t,["children","in"]),o=e.Children.toArray(n),a=o[0],s=o[1];return delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,e.createElement(Voe,r,i?e.cloneElement(a,{key:"first",onEnter:this.handleEnter,onEntering:this.handleEntering,onEntered:this.handleEntered}):e.cloneElement(s,{key:"second",onEnter:this.handleExit,onEntering:this.handleExiting,onEntered:this.handleExited}))},i}(e.Component);Koe.propTypes={};var qoe="out-in",Goe="in-out",$oe=function(e,t,n){return function(){var i;e.props[t]&&(i=e.props)[t].apply(i,arguments),n()}},Qoe=((Yoe={})[qoe]=function(t){var n=t.current,i=t.changeState;return e.cloneElement(n,{in:!1,onExited:$oe(n,"onExited",(function(){i(Ioe,null)}))})},Yoe[Goe]=function(t){var n=t.current,i=t.changeState,r=t.children;return[n,e.cloneElement(r,{in:!0,onEntered:$oe(r,"onEntered",(function(){i(Ioe)}))})]},Yoe),Xoe=((Uoe={})[qoe]=function(t){var n=t.children,i=t.changeState;return e.cloneElement(n,{in:!0,onEntered:$oe(n,"onEntered",(function(){i(Ooe,e.cloneElement(n,{in:!0}))}))})},Uoe[Goe]=function(t){var n=t.current,i=t.children,r=t.changeState;return[e.cloneElement(n,{in:!1,onExited:$oe(n,"onExited",(function(){r(Ooe,e.cloneElement(i,{in:!0}))}))}),e.cloneElement(i,{in:!0})]},Uoe),Joe=function(t){function n(){for(var e,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];return(e=t.call.apply(t,[this].concat(i))||this).state={status:Ooe,current:null},e.appeared=!1,e.changeState=function(t,n){void 0===n&&(n=e.state.current),e.setState({status:t,current:n})},e}boe(n,t);var i=n.prototype;return i.componentDidMount=function(){this.appeared=!0},n.getDerivedStateFromProps=function(t,n){return null==t.children?{current:null}:n.status===Ioe&&t.mode===Goe?{status:Ioe}:!n.current||(i=n.current,r=t.children,i===r||e.isValidElement(i)&&e.isValidElement(r)&&null!=i.key&&i.key===r.key)?{current:e.cloneElement(t.children,{in:!0})}:{status:Aoe};var i,r},i.render=function(){var t,n=this.props,i=n.children,r=n.mode,o=this.state,a=o.status,s=o.current,u={children:i,current:s,changeState:this.changeState,status:a};switch(a){case Ioe:t=Xoe[r](u);break;case Aoe:t=Qoe[r](u);break;case Ooe:t=s}return e.createElement(Doe.Provider,{value:{isMounting:!this.appeared}},t)},n}(e.Component);Joe.propTypes={},Joe.defaultProps={mode:qoe};Mre(".gn-drawer__item{background-color:var(--g-color-base-background);bottom:0;height:100%;left:0;position:absolute;top:0;will-change:transform}.gn-drawer__item_direction_right{left:auto;right:0}.gn-drawer__item-transition-enter{transform:translate(-100%)}.gn-drawer__item-transition_direction_right-enter{transform:translate(100%)}.gn-drawer__item-transition-enter-active,.gn-drawer__item-transition_direction_right-enter-active{transform:translate(0);transition:transform .3s}.gn-drawer__item-transition-enter-done,.gn-drawer__item-transition_direction_right-enter-done{filter:blur(0);transform:translateZ(0)}.gn-drawer__item-transition-exit,.gn-drawer__item-transition_direction_right-exit{transform:translate(0)}.gn-drawer__item-transition-exit-active,.gn-drawer__item-transition_direction_right-exit-active{transition:transform .3s}.gn-drawer__item-transition-exit-active{transform:translate(-100%)}.gn-drawer__item-transition_direction_right-exit-active{transform:translate(100%)}.gn-drawer__item-transition-exit-done,.gn-drawer__item-transition_direction_right-exit-done{visibility:hidden}.gn-drawer__veil{background-color:var(--g-color-sfx-veil);bottom:0;left:0;position:absolute;right:0;top:0}.gn-drawer__veil-transition-enter{opacity:0}.gn-drawer__veil-transition-enter-active{opacity:1;transition:opacity .3s}.gn-drawer__veil-transition-exit{opacity:1}.gn-drawer__veil-transition-exit-active{opacity:0;transition:opacity .3s}.gn-drawer__veil-transition-exit-done{visibility:hidden}");var eae,tae=(0,wre.b)("drawer"),nae=function(t){var n=t.visible,i=t.content,r=t.direction,o=t.className,a=e.useRef(null),s="left"===r?void 0:r;return e.createElement(joe,{in:n,timeout:300,unmountOnExit:!0,classNames:tae("item-transition",{direction:s}),nodeRef:a},e.createElement("div",{ref:a,className:tae("item",{direction:s},o)},i))},iae=function(t){var n=t.className,i=t.children,r=t.style,o=t.onVeilClick,a=t.onEscape,s=t.preventScrollBody,u=void 0===s||s,l=!1;e.Children.forEach(i,(function(e){var t=e;t.type===nae&&(Boolean(t.props.visible)&&(l=!0))})),e.useEffect((function(){function e(e){"Escape"===e.key&&(null===a||void 0===a||a())}return l&&window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[a,l]),mZ({enabled:u&&l});var c=e.useRef(null),d=e.useRef(null);return e.createElement(Roe,{in:l,timeout:{enter:0,exit:300},mountOnEnter:!0,unmountOnExit:!0,nodeRef:c},(function(t){var a=l&&"entered"===t;return e.createElement("div",{ref:c,className:tae(null,n),style:r},e.createElement(joe,{in:a,timeout:300,unmountOnExit:!0,classNames:tae("veil-transition"),nodeRef:d},e.createElement("div",{ref:d,className:tae("veil"),onClick:o})),e.Children.map(i,(function(t){var n=t;if(n.type===nae){var i=Boolean(n.props.visible);return e.cloneElement(n,Object.assign(Object.assign({},n.props),{visible:i&&a}))}return t})))}))},rae=["children","defaultHeight","defaultWidth","disableHeight","disableWidth","nonce","onResize","style","tagName"];eae="undefined"!==typeof window?window:"undefined"!==typeof self?self:n.g;var oae=null,aae=null,sae=eae.clearTimeout,uae=eae.setTimeout,lae=eae.cancelAnimationFrame||eae.mozCancelAnimationFrame||eae.webkitCancelAnimationFrame,cae=eae.requestAnimationFrame||eae.mozRequestAnimationFrame||eae.webkitRequestAnimationFrame;function dae(e){var t,n,i,r,o,a,s,u="undefined"!==typeof document&&document.attachEvent;if(!u){a=function(e){var t=e.__resizeTriggers__,n=t.firstElementChild,i=t.lastElementChild,r=n.firstElementChild;i.scrollLeft=i.scrollWidth,i.scrollTop=i.scrollHeight,r.style.width=n.offsetWidth+1+"px",r.style.height=n.offsetHeight+1+"px",n.scrollLeft=n.scrollWidth,n.scrollTop=n.scrollHeight},o=function(e){return e.offsetWidth!==e.__resizeLast__.width||e.offsetHeight!==e.__resizeLast__.height},s=function(e){if(!(e.target.className&&"function"===typeof e.target.className.indexOf&&e.target.className.indexOf("contract-trigger")<0&&e.target.className.indexOf("expand-trigger")<0)){var t=this;a(this),this.__resizeRAF__&&oae(this.__resizeRAF__),this.__resizeRAF__=aae((function(){o(t)&&(t.__resizeLast__.width=t.offsetWidth,t.__resizeLast__.height=t.offsetHeight,t.__resizeListeners__.forEach((function(n){n.call(t,e)})))}))}};var l=!1,c="";i="animationstart";var d="Webkit Moz O ms".split(" "),h="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),f=document.createElement("fakeelement");if(void 0!==f.style.animationName&&(l=!0),!1===l)for(var p=0;p<d.length;p++)if(void 0!==f.style[d[p]+"AnimationName"]){c="-"+d[p].toLowerCase()+"-",i=h[p],l=!0;break}t="@"+c+"keyframes "+(n="resizeanim")+" { from { opacity: 0; } to { opacity: 0; } } ",r=c+"animation: 1ms "+n+"; "}return{addResizeListener:function(o,l){if(u)o.attachEvent("onresize",l);else{if(!o.__resizeTriggers__){var c=o.ownerDocument,d=eae.getComputedStyle(o);d&&"static"===d.position&&(o.style.position="relative"),function(n){if(!n.getElementById("detectElementResize")){var i=(t||"")+".resize-triggers { "+(r||"")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',o=n.head||n.getElementsByTagName("head")[0],a=n.createElement("style");a.id="detectElementResize",a.type="text/css",null!=e&&a.setAttribute("nonce",e),a.styleSheet?a.styleSheet.cssText=i:a.appendChild(n.createTextNode(i)),o.appendChild(a)}}(c),o.__resizeLast__={},o.__resizeListeners__=[],(o.__resizeTriggers__=c.createElement("div")).className="resize-triggers";var h=c.createElement("div");h.className="expand-trigger",h.appendChild(c.createElement("div"));var f=c.createElement("div");f.className="contract-trigger",o.__resizeTriggers__.appendChild(h),o.__resizeTriggers__.appendChild(f),o.appendChild(o.__resizeTriggers__),a(o),o.addEventListener("scroll",s,!0),i&&(o.__resizeTriggers__.__animationListener__=function(e){e.animationName===n&&a(o)},o.__resizeTriggers__.addEventListener(i,o.__resizeTriggers__.__animationListener__))}o.__resizeListeners__.push(l)}},removeResizeListener:function(e,t){if(u)e.detachEvent("onresize",t);else if(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),!e.__resizeListeners__.length){e.removeEventListener("scroll",s,!0),e.__resizeTriggers__.__animationListener__&&(e.__resizeTriggers__.removeEventListener(i,e.__resizeTriggers__.__animationListener__),e.__resizeTriggers__.__animationListener__=null);try{e.__resizeTriggers__=!e.removeChild(e.__resizeTriggers__)}catch(n){}}}}}null==lae||null==cae?(oae=sae,aae=function(e){return uae(e,20)}):(oae=function(e){var t=(0,ne.Z)(e,2),n=t[0],i=t[1];lae(n),sae(i)},aae=function(e){var t=cae((function(){sae(n),e()})),n=uae((function(){lae(t),e()}),20);return[t,n]});var hae=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var e;(0,X.Z)(this,i);for(var t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o];return(e=n.call.apply(n,[this].concat(r))).state={height:e.props.defaultHeight||0,scaledHeight:e.props.defaultHeight||0,scaledWidth:e.props.defaultWidth||0,width:e.props.defaultWidth||0},e._autoSizer=null,e._detectElementResize=null,e._parentNode=null,e._resizeObserver=null,e._timeoutId=null,e._onResize=function(){e._timeoutId=null;var t=e.props,n=t.disableHeight,i=t.disableWidth,r=t.onResize;if(e._parentNode){var o,a,s,u,l=window.getComputedStyle(e._parentNode)||{},c=parseFloat(null!==(o=l.paddingLeft)&&void 0!==o?o:"0"),d=parseFloat(null!==(a=l.paddingRight)&&void 0!==a?a:"0"),h=parseFloat(null!==(s=l.paddingTop)&&void 0!==s?s:"0"),f=parseFloat(null!==(u=l.paddingBottom)&&void 0!==u?u:"0"),p=e._parentNode.getBoundingClientRect(),g=p.height-h-f,v=p.width-c-d,m=e._parentNode.offsetHeight-h-f,_=e._parentNode.offsetWidth-c-d;(n||e.state.height===m&&e.state.scaledHeight===g)&&(i||e.state.width===_&&e.state.scaledWidth===v)||(e.setState({height:m,width:_,scaledHeight:g,scaledWidth:v}),"function"===typeof r&&r({height:m,scaledHeight:g,scaledWidth:v,width:_}))}},e._setRef=function(t){e._autoSizer=t},e}return(0,J.Z)(i,[{key:"componentDidMount",value:function(){var e=this,t=this.props.nonce;this._autoSizer&&this._autoSizer.parentNode&&this._autoSizer.parentNode.ownerDocument&&this._autoSizer.parentNode.ownerDocument.defaultView&&this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement&&(this._parentNode=this._autoSizer.parentNode,null!=this._parentNode&&("undefined"!==typeof ResizeObserver?(this._resizeObserver=new ResizeObserver((function(){e._timeoutId=setTimeout(e._onResize,0)})),this._resizeObserver.observe(this._parentNode)):(this._detectElementResize=dae(t),this._detectElementResize.addResizeListener(this._parentNode,this._onResize)),this._onResize()))}},{key:"componentWillUnmount",value:function(){this._parentNode&&(this._detectElementResize&&this._detectElementResize.removeResizeListener(this._parentNode,this._onResize),null!==this._timeoutId&&clearTimeout(this._timeoutId),this._resizeObserver&&(this._resizeObserver.observe(this._parentNode),this._resizeObserver.disconnect()))}},{key:"render",value:function(){var t=this.props,n=t.children,i=(t.defaultHeight,t.defaultWidth,t.disableHeight),r=void 0!==i&&i,o=t.disableWidth,a=void 0!==o&&o,s=(t.nonce,t.onResize,t.style),u=void 0===s?{}:s,l=t.tagName,c=void 0===l?"div":l,d=nn(t,rae),h=this.state,f=h.height,p=h.scaledHeight,g=h.scaledWidth,v=h.width,m={overflow:"visible"},_={},y=!1;return r||(0===f&&(y=!0),m.height=0,_.height=f,_.scaledHeight=p),a||(0===v&&(y=!0),m.width=0,_.width=v,_.scaledWidth=g),(0,e.createElement)(c,Rt({ref:this._setRef,style:Rt(Rt({},m),u)},d),!y&&n(_))}}]),i}(e.Component),fae={active:!1,activeIndex:void 0,hideCollapseItemTooltip:!1,lastClickedItemIndex:void 0,setValue:function(){}},pae=e.createContext(fae),gae=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(){var e;return(0,X.Z)(this,i),(e=n.apply(this,arguments)).state=Object.assign({},fae),e.setValue=function(t){e.setState(Object.assign({},t))},e}return(0,J.Z)(i,[{key:"render",value:function(){var t=this.props.children;return e.createElement(pae.Provider,{value:Object.assign(Object.assign({},this.state),{setValue:this.setValue})},t)}}]),i}(e.PureComponent);Mre('.g-root_theme_dark .gn-multiple-tooltip,.g-root_theme_dark-hc .gn-multiple-tooltip{--multiple-tooltip-item-bg-color:#424147;--multiple-tooltip-item-active-bg-color:var(--g-color-base-float-heavy);--multiple-tooltip-backdrop-background:linear-gradient(90deg,#313036,rgba(49,48,54,.3));--multiple-tooltip-backdrop-filter:blur(16px)}.g-root_theme_light .gn-multiple-tooltip,.g-root_theme_light-hc .gn-multiple-tooltip{--multiple-tooltip-item-bg-color:#7a7a7a;--multiple-tooltip-item-active-bg-color:var(--g-color-base-float-heavy);--multiple-tooltip-backdrop-background:linear-gradient(90deg,#fff,hsla(0,0%,100%,.3));--multiple-tooltip-backdrop-filter:blur(12px)}.gn-multiple-tooltip{background-color:transparent;box-shadow:none}.gn-multiple-tooltip:before{background:var(--multiple-tooltip-backdrop-background);box-shadow:none;content:"";filter:var(--multiple-tooltip-backdrop-filter);height:100%;position:absolute;width:100%;z-index:-1}.gn-multiple-tooltip__items-container{align-items:flex-start;display:flex;flex-direction:column;padding:32px 40px 32px 12px}.gn-multiple-tooltip__item{align-items:center;background-color:var(--multiple-tooltip-item-bg-color);border-radius:5px;box-sizing:border-box;color:var(--g-color-text-light-primary);display:flex;height:30px;margin-bottom:5px;padding:8px 12px;position:relative;transition:transform .1s ease-in-out}.gn-multiple-tooltip__item:first-child,.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider)+.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider){margin-top:5px}.gn-multiple-tooltip__item_divider+.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider){margin-top:4px}.gn-multiple-tooltip__item_active{background-color:var(--multiple-tooltip-item-active-bg-color);transform:translateX(-12px)}.gn-multiple-tooltip__item_divider{height:15px;margin:0;visibility:hidden}');var vae=(0,wre.b)("multiple-tooltip"),mae=[-32,4],_ae=[{name:"preventOverflow",enabled:!1}],yae=function(t){var n=t.items,i=t.open,r=t.anchorRef,o=t.placement,a=e.useContext(pae),s=a.activeIndex,u=a.hideCollapseItemTooltip,l=void 0===s?null:n[s];return e.createElement(J_,{open:i,anchorRef:r,placement:o,offset:mae,contentClassName:vae(null),modifiers:_ae,disableLayer:!0},e.createElement("div",{className:vae("items-container")},n.filter((function(e){var t=e.type,n=void 0===t?"regular":t,i=e.id;return!u||i!==Tre&&"action"!==n})).map((function(t,n){return"divider"===t.type?e.createElement("div",{className:vae("item",{divider:!0}),key:n},t.title):e.createElement("div",{className:vae("item",{active:t===l}),key:n},t.title)}))))};Mre(".gn-composite-bar{flex:1 0 auto;min-height:40px;width:100%}.gn-composite-bar .gn-composite-bar__root-menu-item[class]{background-color:transparent}");var bae=(0,wre.b)("composite-bar"),wae=function(t){var n=t.type,i=t.items,r=t.onItemClick,o=t.collapseItems,a=t.multipleTooltip,s=void 0!==a&&a,u=(0,e.useRef)(null),l=(0,e.useRef)(null),c=(0,e.useContext)(pae),d=c.setValue,h=c.active,f=c.activeIndex,p=c.lastClickedItemIndex,g=Nre().compact;e.useEffect((function(){function e(){s&&h&&d({active:!1})}return window.addEventListener("blur",e),function(){window.removeEventListener("blur",e)}}),[s,h,d]);var v=(0,e.useCallback)((function(e){s&&g&&!h&&document.hasFocus()&&f!==p&&e.clientX<=56&&(null===d||void 0===d||d({active:!0}))}),[s,g,h,f,p,d]),m=(0,e.useCallback)((function(){s&&h&&document.hasFocus()&&(null===d||void 0===d||d({active:!1,lastClickedItemIndex:void 0}))}),[s,h,d]),_=(0,e.useCallback)((function(e){return function(){if(s&&document.hasFocus()){var t=h;if(h||e===p||(t=!0),f===e&&h===t)return;d({activeIndex:e,active:t})}}}),[s,h,p,f,d]),y=(0,e.useCallback)((function(){var e;g&&document.hasFocus()&&(null===(e=u.current)||void 0===e||e.activateItem(void 0),!s||void 0===f&&void 0===p||d({activeIndex:void 0,lastClickedItemIndex:void 0}))}),[f,g,p,s,d]),b=(0,e.useCallback)((function(e){return function(t,n,i){g&&s&&e!==p&&t.id!==Tre&&d({lastClickedItemIndex:e,active:!1}),null===r||void 0===r||r(t,n,i)}}),[g,p,s,r,d]);return e.createElement(e.Fragment,null,e.createElement("div",{ref:l,onMouseEnter:v,onMouseLeave:m},e.createElement(lD,{ref:u,items:i,selectedItemIndex:"menu"===n?Pre(i):void 0,itemHeight:Are,itemsHeight:Rre,itemClassName:bae("root-menu-item"),virtualized:!1,filterable:!1,sortable:!1,renderItem:function(t,n,i){var r=Fre(t)?{item:t}:t,a=Fre(t)?!s:t.enableTooltip;return e.createElement(Yre,Object.assign({},r,{enableTooltip:a,onMouseEnter:_(i),onMouseLeave:y,onItemClick:b(i),collapseItems:o}))}})),"menu"===n&&s&&e.createElement(yae,{open:g&&h,anchorRef:l,placement:["right-start"],items:i}))},Cae=function(t){var n,i=t.type,r=t.items,o=t.menuMoreTitle,a=t.onItemClick,s=t.multipleTooltip,u=void 0!==s&&s;if(0===r.length)return null;if("menu"===i){var l=Zre(r),c=function(e){return{id:Tre,title:e,icon:BI,iconSize:18}}(o);n=e.createElement("div",{className:bae({autosizer:!0}),style:{minHeight:l}},0!==r.length&&e.createElement(hae,null,(function(t){var n=t.width,i=t.height,o=function(e,t,n){var i,r,o,a=e.filter((function(e){return e.afterMoreButton})),s=e.filter((function(e){return!e.afterMoreButton})),u=[].concat((0,Ct.Z)(s),(0,Ct.Z)(a)),l=Rre(u);if(l<=t)return{listItems:u,collapseItems:[]};var c=Are(n);u.splice(s.length,0,n);for(var d=[],h=l+c,f=u.length;h>t&&0!==f;){var p=u[--f];p.pinned||p.id===Tre||p.afterMoreButton||("divider"!==p.type?(h-=Are(p),d.unshift.apply(d,(0,Ct.Z)(u.splice(f,1)))):f+1<u.length&&"divider"===(null===(i=u[f+1])||void 0===i?void 0:i.type)&&(h-=Are(p),u.splice(f,1)))}return"divider"!==(null===(r=u[f])||void 0===r?void 0:r.type)||0!==f&&"divider"!==(null===(o=u[f-1])||void 0===o?void 0:o.type)||u.splice(f,1),{listItems:u,collapseItems:d}}(r,i,c),s=o.listItems,l=o.collapseItems;return e.createElement("div",{style:{width:n,height:i}},e.createElement(wae,{type:"menu",items:s,onItemClick:a,collapseItems:l,multipleTooltip:u}))})))}else n=e.createElement("div",{className:bae({subheader:!0})},e.createElement(wae,{type:"subheader",items:r,onItemClick:a}));return e.createElement(gae,null,n)},kae=poe({en:{"menu-item.all-pages.title":"All pages","all-panel.menu.category.allOther":"All other","all-panel.resetToDefault":"Reset to default","all-panel.title.editing":"Editing","all-panel.title.main":"All pages"},ru:{"menu-item.all-pages.title":"\u0412\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","all-panel.menu.category.allOther":"\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435","all-panel.resetToDefault":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","all-panel.title.editing":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","all-panel.title.main":"\u0412\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b"}},"AllPagesPanel"),Sae="all-pages";Mre(".gn-all-pages-list-item{align-items:center;column-gap:var(--g-spacing-4);display:flex;height:40px;padding:0 var(--g-spacing-6);width:100%}.gn-all-pages-list-item__text{flex:1}.gn-all-pages-list-item__icon{color:var(--g-color-text-misc)}");var xae=(0,wre.b)("all-pages-list-item"),Lae=function(t){var n=t.item,i=t.editMode,r=t.onToggle,o=(0,e.useCallback)((function(e){e.stopPropagation(),e.preventDefault(),r()}),[r]);return e.createElement("div",{className:xae(),onClick:function(e){i&&(e.stopPropagation(),e.preventDefault())}},n.icon?e.createElement(yo.J,{className:xae("icon"),data:n.icon,size:n.iconSize}):null,e.createElement("span",{className:xae("text")},n.title),i&&e.createElement(_o.z,{onClick:o,view:n.hidden?"flat-secondary":"flat-action"},e.createElement(_o.z.Icon,null,n.hidden?e.createElement(ioe,null):e.createElement(roe,null))))};Mre(".gn-all-pages-panel{box-sizing:border-box;height:100%;min-width:300px;padding:var(--g-spacing-4) var(--g-spacing-6)}.gn-all-pages-panel__content{flex:1;margin:0 calc(var(--g-spacing-6)*-1);overflow:auto}.gn-all-pages-panel__category{padding:0 var(--g-spacing-6)}.gn-all-pages-panel__discoverable-feature-wrapper{display:flex}");var Eae=(0,wre.b)("all-pages-panel"),Dae=function(t){var n=t.startEditIcon,i=t.onEditModeChanged,r=t.className,o=Lre(),a=o.menuItems,s=o.onMenuItemsChanged,u=(0,e.useRef)(a);u.current=a;var l=(0,e.useState)(!1),c=(0,ne.Z)(l,2),d=c[0],h=c[1],f=(0,e.useCallback)((function(){h((function(e){return!e}))}),[]),p=function(t){var n=(0,e.useMemo)((function(){var e=t.filter((function(e){return"divider"!==e.type&&e.id!==Sae}));return e.sort((function(e,t){return"action"===e.type?1:"action"===t.type?-1:0})),e.reduce((function(e,t){var n=t.category||kae("all-panel.menu.category.allOther");return e[n]||(e[n]=[]),e[n].push(t),e}),{})}),[t]);return n}(a);(0,e.useEffect)((function(){null===i||void 0===i||i(d)}),[d,i]);var g=(0,e.useCallback)((function(e){var t;null===(t=e.onItemClick)||void 0===t||t.call(e,e,!1)}),[]),v=(0,e.useCallback)((function(e){if(s){var t=Object.assign(Object.assign({},e),{hidden:!e.hidden}),n=u.current.filter((function(e){return e.id!==Sae}));s(n.map((function(e){return e.id!==t.id?e:t})))}}),[s]),m=(0,e.useCallback)((function(t,n,i){return e.createElement(Lae,{item:t,editMode:d,onToggle:function(){return v(t)}})}),[d,v]),_=(0,e.useCallback)((function(){if(s){var e=u.current.filter((function(e){return e.id!==Sae}));s(e.map((function(e){return Object.assign(Object.assign({},e),{hidden:!1})})))}}),[s]);return e.createElement(toe.k,{className:Eae(null,r),gap:"5",direction:"column"},e.createElement(toe.k,{gap:"4",alignItems:"center",justifyContent:"space-between"},e.createElement(noe.x,{variant:"subheader-2"},kae(d?"all-panel.title.editing":"all-panel.title.main")),e.createElement(_o.z,{selected:d,view:"normal",onClick:f},n||e.createElement(yo.J,{data:G7}))),e.createElement(toe.k,{className:Eae("content"),gap:"5",direction:"column"},Object.keys(p).map((function(t){return e.createElement(toe.k,{key:t,direction:"column",gap:"3"},e.createElement(noe.x,{className:Eae("category"),variant:"body-1",color:"secondary"},t),e.createElement(lD,{virtualized:!1,filterable:!1,items:p[t],onItemClick:g,renderItem:m}))}))),d&&e.createElement(_o.z,{onClick:_},kae("all-panel.resetToDefault")))},Nae=poe({en:{button_collapse:"Collapse",button_expand:"Expand",label_more:"More"},ru:{button_collapse:"\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c",button_expand:"\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c",label_more:"\u0415\u0449\u0451"}},"AsideHeader");Mre(".gn-logo{height:40px}.gn-logo,.gn-logo__logo-btn-place{align-items:center;display:flex;flex-shrink:0}.gn-logo__logo-btn-place{cursor:pointer;justify-content:center;width:var(--gn-aside-header-min-width)}.gn-logo__logo-btn-place .yc-button:before{background-color:transparent}.gn-logo__btn-logo.yc-button_view_flat.yc-button_size_l{--yc-button-height:var(--gn-aside-header-item-icon-background-size)}.gn-logo__logo{cursor:pointer;font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height);vertical-align:middle}.gn-logo__logo-link,.gn-logo__logo-link:active,.gn-logo__logo-link:focus,.gn-logo__logo-link:hover,.gn-logo__logo-link:visited{color:inherit;outline:none;text-decoration:none}.g-root .gn-logo__btn-logo.button2_theme_flat.button2_hovered_yes:before{background-color:transparent}");var Mae,Tae=(0,wre.b)("logo"),Iae=function(t){var n,i=t.text,r=t.icon,o=t.iconSrc,a=t.iconClassName,s=t.iconSize,u=void 0===s?24:s,l=t.textSize,c=void 0===l?15:l,d=t.href,h=t.wrapper,f=t.onClick,p=Nre().compact,g="function"===typeof h;o?n=e.createElement(_o.z.Icon,{className:a},e.createElement("img",{alt:"logo icon",src:o,width:u,height:u})):r&&(n=e.createElement(yo.J,{data:r,size:u,className:a}));var v,m=e.createElement(_o.z,{view:"flat",size:"l",className:Tae("btn-logo"),component:g?"span":void 0,onClick:f,target:"_self",href:d},n);return v="function"===typeof i?i():e.createElement("div",{className:Tae("logo"),style:{fontSize:c}},i),e.createElement("div",{className:Tae()},e.createElement("div",{className:Tae("logo-btn-place")},g?h(m,Boolean(p)):m),!p&&(g?e.createElement("div",{onClick:f},h(v,Boolean(p))):e.createElement("a",{href:null!==d&&void 0!==d?d:"/",target:"_self",className:Tae("logo-link"),onClick:f},v)))},Oae=[],Aae=function(){var t=Lre(),n=t.logo,i=t.onItemClick,r=t.onClosePanel,o=t.headerDecoration,a=t.subheaderItems,s=n.onClick,u=(0,e.useCallback)((function(e){null===r||void 0===r||r(),null===s||void 0===s||s(e)}),[r,s]);return e.createElement("div",{className:(0,Qre.b)("header",(0,wt.Z)({},"with-decoration",o))},e.createElement(Iae,Object.assign({},n,{onClick:u})),e.createElement(Cae,{type:"subheader",items:a||Oae,onItemClick:i}),e.createElement(yo.J,{data:voe,className:(0,Qre.b)("header-divider"),width:56,height:29}))};function Rae(){return Rae=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Rae.apply(this,arguments)}var Pae,Zae=function(t){return e.createElement("svg",Rae({width:8,height:8,viewBox:"0 0 8 8",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},t),Mae||(Mae=e.createElement("path",{d:"m.72 7.64 6.39-3.2a.5.5 0 0 0 0-.89L.72.36A.5.5 0 0 0 0 .81v6.38c0 .37.4.61.72.45Z"})))},Fae=function(t,n){var i=function(t){return e.createElement(n,Object.assign({},t))};return i.displayName=t,i}("NotIcon",yo.J),jae=function(){var t=Lre(),n=t.onChangeCompact,i=t.compact,r=t.expandTitle,o=t.collapseTitle,a=(0,e.useCallback)((function(){null===n||void 0===n||n(!i)}),[i,n]),s=i?r||Nae("button_expand"):o||Nae("button_collapse");return e.createElement(_o.z,{className:(0,Qre.b)("collapse-button",{compact:i}),view:"flat",onClick:a,title:s},e.createElement(Fae,{data:Zae,className:(0,Qre.b)("collapse-icon"),width:"16",height:"10"}))},Hae=function(){var t=Lre(),n=t.panelItems,i=t.onClosePanel,r=t.size;return n?e.createElement(iae,{className:(0,Qre.b)("panels"),onVeilClick:i,onEscape:i,style:{left:r}},n.map((function(t){return e.createElement(nae,Object.assign({key:t.id},t))}))):null},Bae=e.forwardRef((function(t,n){var i=Lre(),r=i.size,o=i.onItemClick,a=i.headerDecoration,s=i.multipleTooltip,u=i.menuMoreTitle,l=i.renderFooter,c=i.compact,d=i.customBackground,h=i.customBackgroundClassName,f=function(){var t=Lre(),n=t.menuItems,i=t.allPagesIsAvailable;return(0,e.useMemo)((function(){if(!i)return n;var e=0;return n.filter((function(t,n,i){return!t.hidden&&(!(n>0&&"divider"===t.type)||"divider"!==i[e].type&&!i[e].hidden)&&(e=n,!0)}))}),[i,n])}(),p=(0,e.useRef)(null);return e.useEffect((function(){Iv(n,p.current)}),[n]),e.createElement(e.Fragment,null,e.createElement("div",{className:(0,Qre.b)("aside"),style:{width:r}},e.createElement("div",{className:(0,Qre.b)("aside-popup-anchor"),ref:p}),e.createElement("div",{className:(0,Qre.b)("aside-content",(0,wt.Z)({},"with-decoration",a))},d&&e.createElement("div",{className:(0,Qre.b)("aside-custom-background",h)},d),e.createElement(Aae,null),(null===f||void 0===f?void 0:f.length)?e.createElement(Cae,{type:"menu",items:f,menuMoreTitle:null!==u&&void 0!==u?u:Nae("label_more"),onItemClick:o,multipleTooltip:s}):e.createElement("div",{className:(0,Qre.b)("menu-items")}),e.createElement("div",{className:(0,Qre.b)("footer")},null===l||void 0===l?void 0:l({size:r,compact:Boolean(c),asideRef:p})),e.createElement(jae,null))),e.createElement(Hae,null))}));!function(e){e.AllPages="all-pages"}(Pae||(Pae={}));var zae,Wae=[],Vae=function(t){var n=t.size,i=t.onClosePanel,r=t.menuItems,o=t.panelItems,a=t.onMenuItemsChanged,s=(0,e.useState)(),u=(0,ne.Z)(s,2),l=u[0],c=u[1],d=e.useMemo((function(){return{id:Sae,title:kae("menu-item.all-pages.title"),tooltipText:kae("menu-item.all-pages.title"),icon:BI}}),[]),h=Boolean(a)&&(!r||(null===r||void 0===r?void 0:r.length)>0);(0,e.useEffect)((function(){(null===o||void 0===o?void 0:o.some((function(e){return e.visible})))&&c(void 0)}),[o]);var f=(0,e.useCallback)((function(){c(void 0),null===i||void 0===i||i()}),[i]),p=(0,e.useCallback)((function(e,t,n){var i;e.id===d.id?c((function(e){return e===Pae.AllPages?void 0:Pae.AllPages})):f(),null===(i=e.onItemClick)||void 0===i||i.call(e,e,t,n)}),[f,d]),g=(0,e.useMemo)((function(){return h?[].concat((0,Ct.Z)(r||Wae),[Object.assign(Object.assign({},d),{current:l===Pae.AllPages})]):r||Wae}),[h,r,l,d]),v=(0,e.useMemo)((function(){return h?[].concat((0,Ct.Z)(o||[]),[{id:Pae.AllPages,content:e.createElement(Dae,null),visible:l===Pae.AllPages}]):o}),[h,o,l]);return Object.assign(Object.assign({},t),{onClosePanel:f,allPagesIsAvailable:h,menuItems:g,panelItems:v,size:n,onItemClick:p})},Yae=e.forwardRef((function(t,n){var i=Nre(),r=i.size,o=i.compact,a=Vae(Object.assign({size:r,compact:o},t));return e.createElement(xre,{value:a},e.createElement(Bae,{ref:n}))})),Uae=e.forwardRef((function(t,n){var i=t.compact,r=t.className,o=t.topAlert,a=bre(t,["compact","className","topAlert"]);return e.createElement(eoe,{compact:i,className:r,topAlert:o},e.createElement(Yae,Object.assign({ref:n},a)),e.createElement(eoe.Content,{renderContent:a.renderContent}))}));function Kae(){return Kae=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Kae.apply(this,arguments)}var qae,Gae=function(t){return e.createElement("svg",Kae({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},t),zae||(zae=e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M12 3.5H4A1.5 1.5 0 002.5 5v6A1.5 1.5 0 004 12.5h8a1.5 1.5 0 001.5-1.5V5A1.5 1.5 0 0012 3.5zM4 2a3 3 0 00-3 3v6a3 3 0 003 3h8a3 3 0 003-3V5a3 3 0 00-3-3H4zm.47 8.53a.75.75 0 010-1.06L5.94 8 4.47 6.53a.75.75 0 011.06-1.06l2 2a.75.75 0 010 1.06l-2 2a.75.75 0 01-1.06 0zM8.75 9.5a.75.75 0 000 1.5h2.5a.75.75 0 000-1.5h-2.5z",clipRule:"evenodd"})))};function $ae(){return $ae=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},$ae.apply(this,arguments)}var Qae,Xae=function(t){return e.createElement("svg",$ae({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},t),qae||(qae=e.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M9.235 1a.75.75 0 01.74.56l2.034 7.726 1.09-1.908A.75.75 0 0113.75 7h1.5a.75.75 0 010 1.5h-1.065l-1.784 3.122a.75.75 0 01-1.376-.181l-1.71-6.496-2.083 9.466a.75.75 0 01-1.446.07L3.544 7.55l-.65 1.085A.75.75 0 012.25 9H.75a.75.75 0 110-1.5h1.075l1.282-2.136a.75.75 0 011.357.155l1.898 5.868 2.156-9.798A.75.75 0 019.235 1z",clipRule:"evenodd"})))};function Jae(){return Jae=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Jae.apply(this,arguments)}var ese,tse=function(t){return e.createElement("svg",Jae({"aria-hidden":"true","data-prefix":"fas","data-icon":"arrow-right-from-bracket",className:"signOut_svg__svg-inline--fa signOut_svg__fa-arrow-right-from-bracket",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},t),Qae||(Qae=e.createElement("path",{fill:"currentColor",d:"M160 416H96c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h64c17.67 0 32-14.33 32-32s-14.3-32-32-32H96C42.98 32 0 74.98 0 128v256c0 53.02 42.98 96 96 96h64c17.67 0 32-14.33 32-32s-14.3-32-32-32zm342.6-182.6l-128-128c-12.51-12.51-32.76-12.49-45.25 0-12.5 12.5-12.5 32.75 0 45.25L402.8 224H192c-17.7 0-32 14.3-32 32s14.31 32 32 32h210.8l-73.38 73.38c-12.5 12.5-12.5 32.75 0 45.25s32.75 12.5 45.25 0l128-128c12.43-12.53 12.43-32.73-.07-45.23z"})))};function nse(){return nse=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},nse.apply(this,arguments)}var ise,rse=function(t){return e.createElement("svg",nse({"aria-hidden":"true","data-prefix":"fas","data-icon":"arrow-right-to-bracket",className:"signIn_svg__svg-inline--fa signIn_svg__fa-arrow-right-to-bracket",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},t),ese||(ese=e.createElement("path",{fill:"currentColor",d:"M416 32h-64c-17.67 0-32 14.33-32 32s14.33 32 32 32h64c17.67 0 32 14.33 32 32v256c0 17.67-14.33 32-32 32h-64c-17.67 0-32 14.33-32 32s14.33 32 32 32h64c53.02 0 96-42.98 96-96V128c0-53.02-43-96-96-96zm-73.4 201.4l-128-128c-12.51-12.51-32.76-12.49-45.25 0-12.5 12.5-12.5 32.75 0 45.25L242.8 224H32c-17.69 0-32 14.3-32 32s14.31 32 32 32h210.8l-73.38 73.38c-12.5 12.5-12.5 32.75 0 45.25s32.75 12.5 45.25 0l128-128c12.43-12.53 12.43-32.73-.07-45.23z"})))};function ose(){return ose=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},ose.apply(this,arguments)}var ase,sse=function(t){return e.createElement("svg",ose({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},t),ise||(ise=e.createElement("path",{d:"M560 448h-48V113.5c0-27.25-21.5-49.5-48-49.5l-112 .01V128h96v384h112c8.875 0 16-7.125 16-15.1v-31.1c0-10.7-7.1-17.8-16-17.8zM280.3 1.007l-192 49.75C73.1 54.51 64 67.76 64 82.88V448H16c-8.875 0-16 7.125-16 15.1v31.1C0 504.9 7.125 512 16 512h304V33.13c0-21.5-19.5-37.373-39.7-32.123zM232 288c-13.25 0-24-14.37-24-31.1 0-17.62 10.75-31.1 24-31.1s24 12.6 24 30.2-10.7 32-24 32z"})))};function use(){return use=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},use.apply(this,arguments)}var lse,cse=function(t){return e.createElement("svg",use({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},t),ase||(ase=e.createElement("path",{d:"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 128c39.77 0 72 32.24 72 72s-32.2 72-72 72c-39.76 0-72-32.24-72-72s32.2-72 72-72zm0 320c-52.93 0-100.9-21.53-135.7-56.29C136.5 349.9 176.5 320 224 320h64c47.54 0 87.54 29.88 103.7 71.71C356.9 426.5 308.9 448 256 448z"})))};function dse(){return dse=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},dse.apply(this,arguments)}var hse,fse=function(t){return e.createElement("svg",dse({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},t),lse||(lse=e.createElement("path",{d:"M20.763 14.255l-1.63-.912c.19-.911.19-1.784 0-2.696l1.63-.911a.437.437 0 00.19-.532 9.714 9.714 0 00-2.046-3.607.459.459 0 00-.569-.076l-1.63.911a7.611 7.611 0 00-2.273-1.329v-1.86c0-.19-.151-.38-.379-.418-1.402-.342-2.804-.304-4.13 0-.227.038-.34.227-.34.417v1.861c-.872.304-1.63.76-2.312 1.367l-1.63-.95a.459.459 0 00-.568.077A9.714 9.714 0 003.03 9.204c-.076.19 0 .418.19.532l1.629.911a8.05 8.05 0 000 2.696l-1.63.912a.437.437 0 00-.19.531 9.713 9.713 0 002.047 3.608c.152.152.379.19.568.076l1.63-.912a7.355 7.355 0 002.311 1.33v1.86c0 .19.152.38.341.456 1.402.304 2.804.266 4.13 0 .228-.076.38-.266.38-.456v-1.86a7.612 7.612 0 002.273-1.33l1.63.912a.458.458 0 00.568-.076c.947-1.025 1.629-2.24 2.084-3.608a.511.511 0 00-.228-.531zm-8.753.76c-1.705 0-3.031-1.33-3.031-3.039a3.02 3.02 0 013.031-3.038 3.044 3.044 0 013.031 3.038 3.02 3.02 0 01-3.03 3.038z",fill:"currentColor"})))};function pse(){return pse=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},pse.apply(this,arguments)}var gse=function(t){return e.createElement("svg",pse({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},t),hse||(hse=e.createElement("path",{d:"M21 12c0-4.936-4.065-9-9-9-4.972 0-9 4.064-9 9 0 4.972 4.028 9 9 9 4.935 0 9-4.028 9-9zm-8.782-6.024c2.068 0 4.246 1.596 4.246 3.701 0 2.831-3.012 2.867-3.012 3.883v.037a.441.441 0 01-.436.435h-2.032a.42.42 0 01-.436-.435v-.146c0-1.487 1.125-2.068 1.96-2.54.726-.399 1.198-.69 1.198-1.234 0-.725-.944-1.197-1.67-1.197-.98 0-1.415.472-2.068 1.306a.453.453 0 01-.617.073l-1.27-.944c-.182-.145-.218-.399-.073-.617.98-1.488 2.25-2.322 4.21-2.322zm-.218 9c.907 0 1.67.762 1.67 1.67 0 .943-.763 1.668-1.67 1.668-.944 0-1.67-.725-1.67-1.669 0-.907.726-1.67 1.67-1.67z",fill:"currentColor"})))},vse=poe({en:{button_close:"Close"},ru:{button_close:"\u0417\u0430\u043a\u0440\u044b\u0442\u044c"}},"Title");Mre(".gn-title{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:64px;padding:14px 10px 14px 20px}.gn-title_separator{border-bottom:1px solid var(--g-color-line-generic)}.gn-title__text{margin:0 20px 0 0}");var mse=(0,wre.b)("title"),_se=function(t){var n=t.children,i=t.closeIconSize,r=void 0===i?23:i,o=t.hasSeparator,a=t.closeTitle,s=void 0===a?vse("button_close"):a,u=t.onClose;return e.createElement("div",{className:mse({separator:o})},e.createElement(noe.x,{className:mse("text"),as:"h3",variant:"subheader-3"},n),u&&e.createElement(_o.z,{onClick:u,view:"flat",size:"l",extraProps:{"aria-label":s}},e.createElement(yo.J,{data:go.Z,size:r})))};function yse(t){var n=e.useRef();return e.useEffect((function(){return n.current=t,function(){n.current=void 0}}),[t]),e.useCallback((function(){if("function"===typeof n.current)return n.current.apply(n,arguments)}),[])}function bse(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function wse(e){var t=bse(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").replace(/\s+/g,".*?");return Cse(e,"",new RegExp(t,"i"))}function Cse(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,r=[],o={};return e.Children.forEach(t,(function(t){var a,s;if(e.isValidElement(t))if(t.type===e.Fragment){var u=Cse(t.props.children,n,i),l=u.menu,c=u.pages;r.push.apply(r,(0,Ct.Z)(l)),Object.assign(o,c)}else if(t.props.groupTitle){0;var d="".concat(n,"/").concat(null!==(a=t.props.id)&&void 0!==a?a:t.props.groupTitle);!0;var h=Cse(t.props.children,d,i),f=h.menu,p=h.pages;r.push({groupTitle:t.props.groupTitle,items:f}),Object.assign(o,p)}else{!0;var g="".concat(n,"/").concat(null!==(s=t.props.id)&&void 0!==s?s:t.props.title);0,o[g]=kse(t.props.children,i),o[g].id=g,r.push({id:g,title:t.props.title,icon:t.props.icon,withBadge:o[g].withBadge,disabled:o[g].hidden})}})),{menu:r,pages:o}}function kse(t,n){var i={id:"",sections:[],hidden:!0};return e.Children.forEach(t,(function(t){if(e.isValidElement(t))if(t.type===e.Fragment){var r,o=kse(t.props.children,n),a=o.sections,s=o.withBadge,u=o.hidden;(r=i.sections).push.apply(r,(0,Ct.Z)(a)),i.withBadge=s||i.withBadge,i.hidden=u&&i.hidden}else{var l=t.props,c=l.withBadge,d=l.showTitle,h=void 0===d||d,f=Sse(t.props.children,n),p=f.items,g=f.hidden;i.withBadge=c||i.withBadge,i.hidden=g&&i.hidden,i.sections.push(Object.assign(Object.assign({},t.props),{withBadge:c,items:p,hidden:g,showTitle:h}))}})),i}function Sse(t,n){var i=!0,r=[];return e.Children.forEach(t,(function(t){if(e.isValidElement(t))if(t.type===e.Fragment){var o=Sse(t.props.children,n);r.push.apply(r,(0,Ct.Z)(o.items)),i=i&&o.hidden}else{var a=Object.assign(Object.assign({},t.props),{element:t,hidden:!n.test(t.props.title)});r.push(a),i=i&&a.hidden}})),{items:r,hidden:i}}_se.displayName="Title";var xse=e.createContext({});function Lse(t,n){var i=e.useRef(null);return e.useMemo((function(){return n?Object.assign({selectedRef:i},function(e,t){if(!t.settingId&&!t.section&&!t.page)return{};for(var n=0,i=Object.values(e);n<i.length;n++){var r=i[n];if(!t.settingId&&!t.section){if(t.page!==r.id)continue;return{page:r}}var o,a=(0,Na.Z)(r.sections);try{for(a.s();!(o=a.n()).done;){var s=o.value;if(t.settingId){var u,l=(0,Na.Z)(s.items);try{for(l.s();!(u=l.n()).done;){var c=u.value;if(c.id===t.settingId)return{page:r,section:s,setting:c}}}catch(d){l.e(d)}finally{l.f()}}else if(t.section&&("id"in t.section?t.section.id===s.id:t.section.title===s.title))return{page:r,section:s}}}catch(d){a.e(d)}finally{a.f()}}return{}}(t,n)):{selectedRef:i}}),[t,n])}xse.displayName="SettingsSelectionContext";var Ese=xse.Provider;var Dse=function(e){return e},Nse=(0,wre.b)("settings-search");function Mse(t){var n=t.className,i=t.initialValue,r=t.onChange,o=t.debounce,a=void 0===o?200:o,s=t.inputRef,u=t.inputSize,l=t.placeholder,c=t.autoFocus,d=void 0===c||c,h=e.useState(null!==i&&void 0!==i?i:""),f=(0,ne.Z)(h,2),p=f[0],g=f[1],v=yse((0,kre.d)(r,a)),m=yse((function(e){g(e),v(e)}));return e.createElement("div",{className:Nse(null,n)},e.createElement(db,{value:p,controlRef:s,hasClear:!0,autoFocus:d,size:u,placeholder:l,onUpdate:m}))}Mre('.gn-settings-menu__group-heading{display:inline-block;font-weight:var(--g-text-accent-font-weight);line-height:18px;margin-bottom:12px;padding:0 20px}.gn-settings-menu__group+.gn-settings-menu__group{margin-top:24px}.gn-settings-menu__item{align-items:center;color:var(--g-color-text-primary);cursor:pointer;display:flex;height:40px;padding:0 20px}.gn-settings-menu__item-icon{color:var(--g-color-text-misc);margin-right:5px}.gn-settings-menu__item:hover,.gn-settings-menu__item_focused{background:var(--g-color-base-simple-hover)}.gn-settings-menu__item_selected{background:var(--g-color-base-selection)}.gn-settings-menu__item_selected.gn-settings-menu__item_focused,.gn-settings-menu__item_selected:hover{background:var(--g-color-base-selection-hover)}.gn-settings-menu__item_disabled{color:var(--g-color-text-secondary);cursor:auto}.gn-settings-menu__item_disabled:hover{background:none}.gn-settings-menu__item_disabled .gn-settings-menu__item-icon{color:var(--g-color-base-misc-heavy)}.gn-settings-menu__item_badge{position:relative}.gn-settings-menu__item_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:"";display:block;height:6px;position:absolute;right:9px;top:calc(50% - 3px);width:6px}');var Tse=(0,wre.b)("settings-menu"),Ise=e.forwardRef((function(t,n){var i=t.items,r=t.onChange,o=t.activeItemId,a=e.useState(),s=(0,ne.Z)(a,2),u=s[0],l=s[1],c=e.useRef(null),d=yse(r),h=function(t){var n=e.useRef(t);return n.current=t,e.useCallback((function(){return n.current}),[])}(u);return e.useImperativeHandle(n,(function(){return{handleKeyDown:function(e){if(!c.current)return!1;var t=h();return t&&"Enter"===e.key?(d(t),!0):"ArrowDown"===e.key?(l(Ase(c.current,t,1)),!0):"ArrowUp"===e.key&&(l(Ase(c.current,t,-1)),!0)},clearFocus:function(){l(void 0)}}}),[h,d]),e.createElement("div",{ref:c,className:Tse()},i.map((function(t){return"groupTitle"in t?e.createElement("div",{key:t.groupTitle,className:Tse("group")},e.createElement("span",{className:Tse("group-heading")},t.groupTitle),t.items.map((function(e){return Ose(e,r,o,u)}))):Ose(t,r,o,u)})))}));function Ose(t,n,i,r){return e.createElement("span",{key:t.title,className:Tse("item",{selected:i===t.id,disabled:t.disabled,focused:r===t.id,badge:t.withBadge}),onClick:function(){t.disabled||n(t.id)},"data-id":t.id},t.icon?e.createElement(yo.J,Object.assign({size:16},t.icon,{className:Tse("item-icon")})):void 0,e.createElement("span",null,t.title))}function Ase(e,t,n){var i,r=e.querySelectorAll(".".concat(Tse("item"),":not(.").concat(Tse("item"),"_disabled)"));if(0!==r.length){var o=n>0?-1:0;return t&&(o=Array.prototype.findIndex.call(r,(function(e){return e.getAttribute("data-id")===t}))),null!==(i=r[o=(r.length+o+n)%r.length].getAttribute("data-id"))&&void 0!==i?i:void 0}}Mre('.gn-settings-menu-mobile.yc-tabs_direction_horizontal{-ms-overflow-style:none;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:none;scrollbar-width:none}.gn-settings-menu-mobile.yc-tabs_direction_horizontal::-webkit-scrollbar{display:none}.gn-settings-menu-mobile__item_badge{position:relative}.gn-settings-menu-mobile__item_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:"";display:block;height:6px;position:absolute;right:-8px;top:11px;width:6px}');var Rse=(0,wre.b)("settings-menu-mobile"),Pse=function(t){var n=t.items,i=t.onChange,r=t.activeItemId,o=t.className,a=e.useRef(null),s=e.useMemo((function(){var e=[];return n.forEach((function(t){if("groupTitle"in t)e.push.apply(e,(0,Ct.Z)(t.items.map((function(e){var t=e.id,n=e.title,i=e.disabled,r=e.withBadge;return{id:t,title:n,disabled:i,className:Rse("item",{badge:r})}}))));else{var n=t.id,i=t.title,r=t.disabled,o=t.withBadge;e.push({id:n,title:i,disabled:r,className:Rse("item",{badge:o})})}})),e}),[n]);return e.createElement("div",{ref:a,onTouchMove:function(e){e.stopPropagation()}},e.createElement(Wg,{items:s,className:Rse(null,o),size:"l",activeTab:r,onSelectTab:i}))},Zse=poe({en:{label_title:"Settings","label_filter-placeholder":"Search settings","label_empty-placeholder":"No results found"},ru:{label_title:"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","label_filter-placeholder":"\u041d\u0430\u0439\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","label_empty-placeholder":"\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e"}},"Settings");Mre('.gn-settings{display:grid;grid-template-columns:216px 1fr;height:100%;width:834px}.gn-settings_view_mobile{display:block;height:calc(80vh - 56px);overflow-x:hidden;width:auto}@supports (height:90dvh){.gn-settings_view_mobile{height:calc(90dvh - 56px)}}.gn-settings_view_mobile.gn-settings_loading{text-align:center}.gn-settings_view_mobile .gn-settings__loader{margin-top:20px}.gn-settings_view_mobile .gn-settings__search{margin:4px 0 16px;padding:0 20px}.gn-settings_view_mobile .gn-settings__page{overflow-y:visible}.gn-settings_view_mobile .gn-settings__tabs .yc-tabs__item:first-child{margin-left:20px}.gn-settings_view_mobile .gn-settings__tabs .yc-tabs__item:last-child{margin-right:20px}.gn-settings_view_mobile .gn-settings__section-heading{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.gn-settings_view_mobile .gn-settings__section-subheader{color:var(--g-color-text-secondary)}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings-subheader{margin-top:8px}.gn-settings_view_mobile .gn-settings__section-item{margin-top:0}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings__section-item,.gn-settings_view_mobile .gn-settings__section-subheader+.gn-settings__section-item{margin-top:30px}.gn-settings_view_mobile .gn-settings__section-item+.gn-settings__section-item{margin-top:22px}.gn-settings_view_mobile .gn-settings__item:not(.gn-settings_view_mobile .gn-settings__item_mode_row){gap:8px;grid-template-columns:1fr}.gn-settings_view_mobile .gn-settings__item-heading{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.gn-settings_view_mobile .gn-settings__item-description{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.gn-settings_view_mobile .gn-settings__item_mode_row{grid-template-columns:1fr auto}.gn-settings_view_mobile .gn-settings__item_mode_row .gn-settings__item-heading{padding-right:20px}.gn-settings_view_mobile .gn-settings__item-content{width:100%}.gn-settings_view_mobile .gn-settings__not-found{color:var(--g-color-text-hint);font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);justify-items:start;line-height:var(--g-text-body-2-line-height);margin:20px 0 0 20px}.gn-settings_loading{grid-template-columns:auto}.gn-settings__loader{align-self:center;justify-self:center}.gn-settings__not-found{align-items:center;display:grid;height:100%;justify-items:center}.gn-settings__menu{border-right:1px solid var(--g-color-line-generic)}.gn-settings__heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:20px 20px 0}.gn-settings__search{margin:0 20px 16px}.gn-settings__page{overflow-y:auto}.gn-settings__content{padding:20px}.gn-settings__section-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__section-heading:hover .gn-settings__section-right-adornment_hidden{opacity:1}.gn-settings__section-heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:0}.gn-settings__section-item{margin-top:24px}.gn-settings__section+.gn-settings__section{margin-top:32px}.gn-settings__item{display:grid;grid-template-columns:216px 1fr;justify-items:start}.gn-settings__item_align_top{align-items:start}.gn-settings__item_align_center{align-items:center}.gn-settings__item-title_badge{position:relative}.gn-settings__item-title_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:"";display:block;height:6px;position:absolute;right:-8px;top:1px;width:6px}.gn-settings__item-description{color:var(--g-color-text-secondary);display:block;font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height);margin-top:2px;padding-right:20px}.gn-settings__item-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__item:hover .gn-settings__item-right-adornment_hidden{opacity:1}.gn-settings__item_selected,.gn-settings__section_selected{background:var(--g-color-base-selection);border-radius:8px;margin-left:-8px;padding:8px}.gn-settings__found{background:var(--g-color-base-selection);font-weight:var(--g-text-accent-font-weight)}');var Fse=(0,wre.b)("settings"),jse=e.createContext({}),Hse=function(){return e.useContext(jse)};function Bse(t){var n=t.loading,i=t.renderLoading,r=t.children,o=t.view,a=void 0===o?"normal":o,s=t.renderRightAdornment,u=t.renderSectionRightAdornment,l=t.showRightAdornmentOnHover,c=void 0===l||l,d=bre(t,["loading","renderLoading","children","view","renderRightAdornment","renderSectionRightAdornment","showRightAdornmentOnHover"]);return n?e.createElement("div",{className:Fse({loading:!0,view:a})},"function"===typeof i?i():e.createElement(KE,{className:Fse("loader"),size:"m"})):e.createElement(jse.Provider,{value:{renderRightAdornment:s,renderSectionRightAdornment:u,showRightAdornmentOnHover:c}},e.createElement(Vse,Object.assign({view:a},d),r))}var zse,Wse=function(e,t){var n,i=(0,Na.Z)(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;if("groupTitle"in r){var o,a=(0,Na.Z)(r.items);try{for(a.s();!(o=a.n()).done;){var s=o.value;if(s.id===t)return s.title}}catch(u){a.e(u)}finally{a.f()}}else if(r.id===t)return r.title}}catch(u){i.e(u)}finally{i.f()}return""};function Vse(t){var n,i,r=t.initialPage,o=t.initialSearch,a=t.selection,s=t.children,u=t.renderNotFound,l=t.title,c=void 0===l?Zse("label_title"):l,d=t.filterPlaceholder,h=void 0===d?Zse("label_filter-placeholder"):d,f=t.emptyPlaceholder,p=void 0===f?Zse("label_empty-placeholder"):f,g=t.view,v=t.onPageChange,m=t.onClose,_=Hse(),y=_.renderSectionRightAdornment,b=_.showRightAdornmentOnHover,w=e.useState(null!==o&&void 0!==o?o:""),C=(0,ne.Z)(w,2),k=C[0],S=C[1],x=wse(s,k),L=x.menu,E=x.pages,D=Lse(E,a),N=Object.keys(E),M=D.page&&N.includes(D.page.id)?D.page.id:void 0,T=e.useState(M||(r&&N.includes(r)?r:void 0)),I=(0,ne.Z)(T,2),O=I[0],A=I[1],R=e.useRef(null),P=e.useRef(null),Z="mobile"===g;e.useEffect((function(){var e;null===(e=P.current)||void 0===e||e.clearFocus()}),[k]),e.useEffect((function(){var e=function(){var e;null===(e=P.current)||void 0===e||e.clearFocus()};return window.addEventListener("click",e),function(){window.removeEventListener("click",e)}}),[]);var F=O;F&&!(null===(n=E[F])||void 0===n?void 0:n.hidden)||(F=null===(i=Object.values(E).find((function(e){return!e.hidden})))||void 0===i?void 0:i.id);var j=function(e){A((function(t){return t!==e&&(null===v||void 0===v||v(e)),e}))};e.useEffect((function(){F!==O&&j(F)})),e.useEffect((function(){M&&A(M)}),[M]),e.useEffect((function(){var e;(null===(e=D.selectedRef)||void 0===e?void 0:e.current)&&D.selectedRef.current.scrollIntoView()}),[D.selectedRef]);var H=function(t,n){var i=function(e,t,n){var i;return!(!e.section||e.setting)&&(!(!e.section.id||e.section.id!==n.id)||!((null===(i=e.page)||void 0===i?void 0:i.id)!==t||!e.section.title||e.section.title!==n.title))}(D,t,n);return e.createElement("div",{key:n.title,className:Fse("section",{selected:i}),ref:i?D.selectedRef:void 0},n.showTitle&&e.createElement("h3",{className:Fse("section-heading")},y?e.createElement(toe.k,{gap:2,alignItems:"center"},n.title,e.createElement("div",{className:Fse("section-right-adornment",{hidden:b})},y(n))):n.title),n.header&&(Z?e.createElement("div",{className:Fse("section-subheader")},n.header):n.header),n.items.map((function(t){return t.hidden?null:function(t){var n=t.title,i=t.element;return e.createElement("div",{key:n,className:Fse("section-item")},e.cloneElement(i,Object.assign(Object.assign({},i.props),{highlightedTitle:k&&n?Yse(n,k):n})))}(t)})))};return e.createElement(Ese,{value:D},e.createElement("div",{className:Fse({view:g})},Z?e.createElement(e.Fragment,null,e.createElement(Mse,{inputRef:R,className:Fse("search"),initialValue:o,onChange:S,autoFocus:!1,inputSize:"xl"}),e.createElement(Pse,{items:L,onChange:j,activeItemId:F,className:Fse("tabs")})):e.createElement("div",{className:Fse("menu"),onClick:function(){R.current&&R.current.focus()},onKeyDown:function(e){P.current&&P.current.handleKeyDown(e)&&e.preventDefault()}},e.createElement(_se,null,c),e.createElement(Mse,{inputRef:R,className:Fse("search"),initialValue:o,onChange:S,placeholder:h,autoFocus:!0}),e.createElement(Ise,{ref:P,items:L,onChange:j,activeItemId:F})),e.createElement("div",{className:Fse("page")},function(t){if(!t)return"function"===typeof u?u():e.createElement("div",{className:Fse("not-found")},p);var n=E[t].sections.filter((function(e){return!e.hidden}));return e.createElement(e.Fragment,null,!Z&&e.createElement(_se,{hasSeparator:!0,onClose:m},Wse(L,t)),e.createElement("div",{className:Fse("content")},n.map((function(e){return H(t,e)}))))}(F))))}function Yse(t,n){var i,r=t.slice(0),o=[],a=bse(n).split(" ").filter(Boolean),s=0,u=(0,Na.Z)(a);try{for(u.s();!(i=u.n()).done;){var l=i.value,c=new RegExp(l,"ig").exec(r);if(c){var d=c[0],h=c.index;h>0&&o.push(r.slice(0,h)),o.push(e.createElement("strong",{key:s++,className:Fse("found")},d)),r=r.slice(h+d.length)}}}catch(f){u.e(f)}finally{u.f()}return r&&o.push(r),o}function Use(){return Use=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Use.apply(this,arguments)}Bse.Group=function(t){var n=t.children;return e.createElement(e.Fragment,null,n)},Bse.Page=function(t){var n=t.children;return e.createElement(e.Fragment,null,n)},Bse.Section=function(t){var n=t.children;return e.createElement(e.Fragment,null,n)},Bse.Item=function(t){var n=t.id,i=t.highlightedTitle,r=t.children,o=t.align,a=void 0===o?"center":o,s=t.withBadge,u=t.renderTitleComponent,l=void 0===u?Dse:u,c=t.mode,d=t.description,h=e.useContext(xse),f=h.setting&&h.setting.id===n,p=Hse(),g=p.renderRightAdornment,v=p.showRightAdornmentOnHover,m=e.createElement("span",{className:Fse("item-title",{badge:s})},l(i));return e.createElement("div",{className:Fse("item",{align:a,mode:c,selected:f}),ref:f?h.selectedRef:void 0},e.createElement("label",{className:Fse("item-heading")},g?e.createElement(toe.k,{className:Fse("item-title-wrapper"),gap:3},m,e.createElement("div",{className:Fse("item-right-adornment",{hidden:v})},g(t))):m,d?e.createElement("span",{className:Fse("item-description")},d):null),e.createElement("div",{className:Fse("item-content")},r))};var Kse,qse=function(t){return e.createElement("svg",Use({"aria-hidden":"true","data-prefix":"fas","data-icon":"star",className:"star_svg__svg-inline--fa star_svg__fa-star",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},t),zse||(zse=e.createElement("path",{fill:"currentColor",d:"M316.7 17.8l65.43 132.4 146.4 21.29c26.27 3.796 36.79 36.09 17.75 54.59l-105.9 102.1 25.05 145.5c4.508 26.31-23.23 45.9-46.49 33.7L288 439.6l-130.9 68.7c-23.3 12.2-51-7.4-46.5-33.7l25.05-145.5-105.93-103c-19.03-18.5-8.516-50.79 17.75-54.59l146.4-21.29 65.43-132.4c11.8-23.903 45.7-23.606 57.4-.02z"})))};function Gse(){return Gse=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Gse.apply(this,arguments)}var $se=function(t){return e.createElement("svg",Gse({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},t),Kse||(Kse=e.createElement("path",{d:"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z"})))},Qse=JSON.parse('{"page.general":"General","section.appearance":"Appearance","page.experiments":"Experiments","section.experiments":"Experiments","settings.theme.title":"Interface theme","settings.theme.option-dark":"Dark","settings.theme.option-light":"Light","settings.theme.option-system":"System","settings.language.title":"Interface language","settings.language.option-russian":"Russian","settings.language.option-english":"English","settings.invertedDisks.title":"Inverted disks space indicators","settings.useNodesEndpoint.title":"Break the Nodes tab in Diagnostics","settings.useNodesEndpoint.popover":"Use /viewer/json/nodes endpoint for Nodes Tab in diagnostics. It could return incorrect data on some versions","settings.useVirtualTables.title":"Use table with data load on scroll for Nodes and Storage cluster tabs","settings.useVirtualTables.popover":"It will increase performance, but could work unstable","settings.queryUseMultiSchema.title":"Allow queries with multiple result sets","settings.queryUseMultiSchema.popover":"Use \'multi\' schema for queries that enables queries with multiple result sets. Returns nothing on versions 23-3 and older"}'),Xse=JSON.parse('{"page.general":"\u041e\u0431\u0449\u0438\u0435","section.appearance":"\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434","page.experiments":"\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b","section.experiments":"\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b","settings.theme.title":"\u0422\u0435\u043c\u0430","settings.theme.option-dark":"\u0422\u0451\u043c\u043d\u0430\u044f","settings.theme.option-light":"\u0421\u0432\u0435\u0442\u043b\u0430\u044f","settings.theme.option-system":"\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f","settings.language.title":"\u042f\u0437\u044b\u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430","settings.language.option-russian":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439","settings.language.option-english":"English","settings.invertedDisks.title":"\u0418\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445","settings.useNodesEndpoint.title":"\u0421\u043b\u043e\u043c\u0430\u0442\u044c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Nodes \u0432 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0435","settings.useNodesEndpoint.popover":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 /viewer/json/nodes \u0434\u043b\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0438 Nodes \u0432 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0435. \u041c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445","settings.useVirtualTables.title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0441\u043a\u0440\u043e\u043b\u043b\u0443 \u0434\u043b\u044f \u0432\u043a\u043b\u0430\u0434\u043e\u043a Nodes \u0438 Storage \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430","settings.useVirtualTables.popover":"\u042d\u0442\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e","settings.queryUseMultiSchema.title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438","settings.queryUseMultiSchema.popover":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u0445\u0435\u043c\u0443 \'multi\', \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438. \u041d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 23-3 \u0438 \u0441\u0442\u0430\u0440\u0448\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u043e\u0431\u0449\u0435"}'),Jse="ydb-user-settings";Va.registerKeyset(Fa.En,Jse,Qse),Va.registerKeyset(Fa.Ru,Jse,Xse);var eue=Va.keyset(Jse),tue=[{value:"system",content:eue("settings.theme.option-system")},{value:"light",content:eue("settings.theme.option-light")},{value:"dark",content:eue("settings.theme.option-dark")}],nue={settingKey:Di,title:eue("settings.theme.title"),type:"radio",options:tue},iue=(Fa.Ru,eue("settings.language.option-russian"),Fa.En,eue("settings.language.option-english"),eue("settings.language.title"),{settingKey:Mi,title:eue("settings.invertedDisks.title")}),rue={settingKey:Ti,title:eue("settings.useNodesEndpoint.title"),helpPopoverContent:eue("settings.useNodesEndpoint.popover")},oue={settingKey:qi,title:eue("settings.useVirtualTables.title"),helpPopoverContent:eue("settings.useVirtualTables.popover")},aue={settingKey:Gi,title:eue("settings.queryUseMultiSchema.title"),helpPopoverContent:eue("settings.queryUseMultiSchema.popover")},sue={id:"appearanceSection",title:eue("section.appearance"),settings:[nue,iue]},uue={id:"experimentsSection",title:eue("section.experiments"),settings:[rue,oue,aue]},lue=[{id:"generalPage",title:eue("page.general"),icon:{data:qse,height:14,width:14},sections:[sue]},{id:"experimentsPage",title:eue("page.experiments"),icon:{data:$se},sections:[uue]}],cue=function(e){var t=e.type,n=void 0===t?"switch":t,i=e.settingKey,r=e.title,o=e.helpPopoverContent,a=e.options,s=e.defaultValue,u=e.onValueUpdate,l=tv(i,s),c=(0,ne.Z)(l,2),d=c[0],h=c[1],f=function(e){h(e),null===u||void 0===u||u()};return(0,Nl.jsx)(Bse.Item,{title:r,highlightedTitle:r,renderTitleComponent:function(e){return o?(0,Nl.jsx)(TF,{className:due("item-with-popup"),contentClassName:due("popup"),text:e,popoverContent:o}):e},children:function(e){switch(e){case"switch":return(0,Nl.jsx)(J6,{checked:Boolean(d),onUpdate:f});case"radio":return a?(0,Nl.jsx)(Dy,{value:String(d),onUpdate:f,children:a.map((function(e){var t=e.value,n=e.content;return(0,Nl.jsx)(Dy.Option,{value:t,children:n},t)}))}):null;default:return null}}(n)})},due=(0,ht.Z)("ydb-user-settings"),hue=function(e){var t=e.settings,n=void 0===t?lue:t;return(0,Nl.jsx)(Bse,{children:n.map((function(e){var t=e.id,n=e.title,i=e.icon,r=e.sections,o=void 0===r?[]:r;return(0,Nl.jsx)(Bse.Page,{id:t,title:n,icon:i,children:o.map((function(e){var n=e.title,i=e.settings,r=void 0===i?[]:i;return(0,Nl.jsx)(Bse.Section,{title:n,children:r.map((function(e){return(0,Nl.jsx)(cue,Rt({},e),e.settingKey)}))},t)}))},t)}))})},fue=JSON.parse('{"pages.query":"Query","pages.diagnostics":"Diagnostics","navigation-item.documentation":"Documentation","navigation-item.settings":"Settings","navigation-item.account":"Account","account.user":"YDB User","account.login":"Login","account.logout":"Logout"}'),pue=JSON.parse('{"pages.query":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432","pages.diagnostics":"\u0414\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430","navigation-item.documentation":"\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f","navigation-item.settings":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","navigation-item.account":"\u0410\u043a\u043a\u0430\u0443\u043d\u0442","account.user":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c YDB","account.login":"\u0412\u043e\u0439\u0442\u0438","account.logout":"\u0412\u044b\u0439\u0442\u0438"}'),gue="ydb-aside-navigation";Va.registerKeyset(Fa.En,gue,fue),Va.registerKeyset(Fa.Ru,gue,pue);var vue,mue=Va.keyset(gue),_ue=(0,ht.Z)("kv-navigation");function yue(e){var t=e.ydbUser,n=e.logout,i=lt();return(0,Nl.jsxs)("div",{className:_ue("internal-user"),children:[(0,Nl.jsxs)("div",{className:_ue("user-info-wrapper"),children:[(0,Nl.jsx)("div",{className:_ue("ydb-internal-user-title"),children:mue("account.user")}),t&&(0,Nl.jsx)("div",{className:_ue("username"),children:t})]}),t?(0,Nl.jsx)(_o.z,{view:"flat-secondary",title:mue("account.logout"),onClick:n,children:(0,Nl.jsx)(yo.J,{data:tse,size:16})}):(0,Nl.jsx)(_o.z,{view:"flat-secondary",title:mue("account.login"),onClick:function(){i.push(_g(bg.auth,void 0,{returnUrl:encodeURIComponent(location.href)}))},children:(0,Nl.jsx)(yo.J,{data:rse,size:16})})]})}function bue(t){var n,i=t.isCompact,r=t.popupAnchor,o=t.ydbUser,a=(0,e.useState)(!1),s=(0,ne.Z)(a,2),u=s[0],l=s[1],c=null!==o&&void 0!==o&&o.login?cse:sse;return(0,Nl.jsx)(qre,{compact:i,item:{id:"user-popup",title:null!==(n=null===o||void 0===o?void 0:o.login)&&void 0!==n?n:mue("navigation-item.account"),current:u,icon:c,iconSize:22,onItemClick:function(){return l(!0)}},enableTooltip:!u,popupAnchor:r,popupVisible:u,onClosePopup:function(){return l(!1)},renderPopupContent:function(){return(0,Nl.jsx)("div",{className:_ue("ydb-user-wrapper"),children:(0,Nl.jsx)(yue,{ydbUser:o.login,logout:o.logout})})}})}!function(e){e.UserSettings="UserSettings"}(vue||(vue={}));var wue=function(){var t=ct(),n=lt(),i=tv(Ki),r=(0,ne.Z)(i,2),o=r[0],a=r[1],s=ev((function(e){return e.tenant})).tenantPage,u=void 0===s?o:s,l=t.pathname,c=vg(t),d=l==="/".concat(pg);return e.useMemo((function(){return d?[{id:An.query,title:mue("pages.query"),icon:Gae,iconSize:20,location:Mb(Rt(Rt({},c),{},(0,wt.Z)({},On,An.query)))},{id:An.diagnostics,title:mue("pages.diagnostics"),icon:Xae,iconSize:20,location:Mb(Rt(Rt({},c),{},(0,wt.Z)({},On,An.diagnostics)))}].map((function(e){var t=e.id===u;return{id:e.id,title:e.title,icon:e.icon,iconSize:e.iconSize,current:t,onItemClick:function(){a(e.id),n.push(e.location)}}})):[]}),[u,d,a,n,c])};var Cue=function(t){var n=lt(),i=K(),r=(0,e.useState)(),o=(0,ne.Z)(r,2),a=o[0],s=o[1],u=ev((function(e){return e.authentication})).user,l=tv(Oi),c=(0,ne.Z)(l,2),d=c[0],h=c[1],f=wue(),p=function(){i(ea())};return(0,Nl.jsx)(e.Fragment,{children:(0,Nl.jsx)(Uae,{logo:{text:"YDB",icon:are,onClick:function(){return n.push("/")}},menuItems:f,compact:d,onChangeCompact:h,className:_ue(),renderContent:function(){return t.children},renderFooter:function(t){var n=t.compact,i=t.asideRef;return(0,Nl.jsxs)(e.Fragment,{children:[(0,Nl.jsx)(qre,{compact:n,item:{id:"documentation",title:mue("navigation-item.documentation"),icon:gse,iconSize:24,onItemClick:function(){window.open("https://ydb.tech/docs","_blank","noreferrer")}}}),(0,Nl.jsx)(qre,{item:{id:"user-settings",title:mue("navigation-item.settings"),icon:fse,iconSize:24,current:a===vue.UserSettings,onItemClick:function(){s(a===vue.UserSettings?void 0:vue.UserSettings)}},compact:n}),(0,Nl.jsx)(bue,{isCompact:n,popupAnchor:i,ydbUser:{login:u,logout:p}})]})},panelItems:[{id:"user-settings",visible:a===vue.UserSettings,content:(0,Nl.jsx)(hue,{})}],onClosePanel:function(){s(void 0)}})})},kue=(0,e.createContext)(null),Sue={didCatch:!1,error:null},xue=function(t){(0,ee.Z)(i,t);var n=(0,te.Z)(i);function i(e){var t;return(0,X.Z)(this,i),(t=n.call(this,e)).resetErrorBoundary=t.resetErrorBoundary.bind((0,Br.Z)(t)),t.state=Sue,t}return(0,J.Z)(i,[{key:"resetErrorBoundary",value:function(){if(null!==this.state.error){for(var e,t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];null===(e=(t=this.props).onReset)||void 0===e||e.call(t,{args:i,reason:"imperative-api"}),this.setState(Sue)}}},{key:"componentDidCatch",value:function(e,t){var n,i;null===(n=(i=this.props).onError)||void 0===n||n.call(i,e,t)}},{key:"componentDidUpdate",value:function(e,t){var n,i,r=this.state.didCatch,o=this.props.resetKeys;r&&null!==t.error&&function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length!==t.length||e.some((function(e,n){return!Object.is(e,t[n])}))}(e.resetKeys,o)&&(null===(n=(i=this.props).onReset)||void 0===n||n.call(i,{next:o,prev:e.resetKeys,reason:"keys"}),this.setState(Sue))}},{key:"render",value:function(){var t=this.props,n=t.children,i=t.fallbackRender,r=t.FallbackComponent,o=t.fallback,a=this.state,s=a.didCatch,u=a.error,l=n;if(s){var c={error:u,resetErrorBoundary:this.resetErrorBoundary};if("function"===typeof i)l=i(c);else if(r)l=(0,e.createElement)(r,c);else{if(null!==o&&!(0,e.isValidElement)(o))throw u;l=o}}return(0,e.createElement)(kue.Provider,{value:{didCatch:s,error:u,resetErrorBoundary:this.resetErrorBoundary}},l)}}],[{key:"getDerivedStateFromError",value:function(e){return{didCatch:!0,error:e}}}]),i}(e.Component);var Lue=n(74601),Eue=e.createContext(void 0),Due=e.createContext(void 0);function Nue(t){var n=t.size,i=t.disabled,r=t.defaultExpanded,o=t.arrowPosition,a=t.summary,s=t.keepMounted,u=t.onUpdate,l=t.expanded,c=e.useState((function(){return Boolean(r)})),d=(0,ne.Z)(c,2),h=d[0],f=d[1],p=void 0!==l,g=W_(),v="disclosure".concat(g);return e.createElement(Eue.Provider,{value:{size:n,disabled:i,summary:a,arrowPosition:o,keepMounted:s,expanded:p?l:h,ariaControls:g,ariaLabelledby:v}},e.createElement(Due.Provider,{value:function(){f((function(e){return!e})),u(p?!l:!h)}},t.children))}function Mue(){var t=e.useContext(Eue);if(void 0===t)throw new Error("useDisclosureAttributes must be used within DisclosureProvider");return t}var Tue=(0,ft.B_)("disclosure");function Iue(t){var n=t.children,i=e.useRef(null),r=Mue(),o=r.ariaControls,a=r.ariaLabelledby,s=r.keepMounted,u=r.expanded;return e.createElement(uo,{nodeRef:i,in:u,addEndListener:function(e){var t;return null===(t=i.current)||void 0===t?void 0:t.addEventListener("animationend",e)},classNames:lo(Tue),mountOnEnter:!s,unmountOnExit:!s,appear:!0},e.createElement("div",{ref:i,id:o,role:"region","aria-labelledby":a,className:Tue("content",{visible:u})},n))}Iue.displayName="DisclosureDetails";var Oue={m:14,l:16,xl:20};function Aue(t){var n=t.children,i=function(){var t=e.useContext(Due);if(void 0===t)throw new Error("useToggleDisclosure must be used within DisclosureProvider");return t}(),r=Mue();return n({onClick:i,ariaControls:r.ariaControls,id:r.ariaLabelledby,expanded:r.expanded,disabled:r.disabled})}function Rue(t){var n=t.onClick,i=t.ariaControls,r=t.id,o=t.expanded,a=t.disabled,s=Mue(),u=s.size,l=s.summary,c=s.arrowPosition;return e.createElement("button",{type:"button","aria-expanded":o,className:Tue("trigger",{disabled:a,"arrow-right":"right"===c}),"aria-controls":i,id:r,onClick:n,disabled:a},e.createElement(hF,{size:Oue[u],direction:o?"top":"bottom"}),l)}Aue.displayName="DisclosureSummary";var Pue=(0,Lue.s)(Aue),Zue=e.forwardRef((function(t,n){var i=t.size,r=void 0===i?"m":i,o=t.disabled,a=void 0!==o&&o,s=t.defaultExpanded,u=void 0!==s&&s,l=t.arrowPosition,c=void 0===l?"left":l,d=t.summary,h=void 0===d?"":d,f=t.className,p=t.keepMounted,g=void 0===p||p,v=t.children,m=t.onUpdate,_=void 0===m?function(){}:m,y=t.expanded,b=t.qa,w=function(t){var n,i,r,o=e.Children.toArray(t),a=[],s=(0,Na.Z)(o);try{for(s.s();!(r=s.n()).done;){var u=r.value;if(Pue(u)){if(n)throw new Error("Only one <Disclosure.Summary> component is allowed");n=u}else a.push(u)}}catch(l){s.e(l)}finally{s.f()}a.length>0&&(i=e.createElement(Iue,null,a));n||(n=e.createElement(Aue,null,(function(t){return e.createElement(Rue,Object.assign({},t))})));return[n,i]}(v),C=(0,ne.Z)(w,2),k=C[0],S=C[1];return e.createElement(Nue,{disabled:a,defaultExpanded:u,expanded:y,keepMounted:g,size:r,summary:h,arrowPosition:c,onUpdate:_},e.createElement("section",{ref:n,className:Tue({size:r},f),"data-qa":b},k,S))}));Zue.Summary=Aue,Zue.displayName="Disclosure";var Fue=JSON.parse('{"error-title":"Something went wrong","error-description":"We have something broken, but don\'t worry, it won\'t last long","show-details":"Show details","report-problem":"Report a problem","button-reset":"Try again"}'),jue=JSON.parse('{"error-title":"\u0427\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a","error-description":"\u0423 \u043d\u0430\u0441 \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u043b\u043e\u0441\u044c, \u043d\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0439\u0442\u0435, \u044d\u0442\u043e \u043d\u0435\u043d\u0430\u0434\u043e\u043b\u0433\u043e","show-details":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438","report-problem":"\u0421\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435","button-reset":"\u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043d\u043e\u0432\u0430"}'),Hue="ydb-error-boundary";Va.registerKeyset(Fa.En,Hue,Fue),Va.registerKeyset(Fa.Ru,Hue,jue);var Bue=Va.keyset(Hue),zue=(0,ht.Z)("ydb-error-boundary"),Wue=function(e){var t=e.children,n=e.useRetry,i=void 0===n||n,r=e.onReportProblem;return(0,Nl.jsx)(xue,{onError:function(e,t){!function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"error";"undefined"!==typeof window&&null!==(n=window.Ya)&&void 0!==n&&n.Rum?window.Ya.Rum.logError({additional:{url:window.location.href},type:i,message:t,level:window.Ya.Rum.ERROR_LEVEL.ERROR},e):console.error(e)}(e,t.componentStack,"error-boundary")},fallbackRender:function(e){var t=e.error,n=e.resetErrorBoundary;return(0,Nl.jsxs)("div",{className:zue(null),children:[(0,Nl.jsx)(Ay,{name:"error",className:zue("illustration")}),(0,Nl.jsxs)("div",{className:zue("content"),children:[(0,Nl.jsx)("h2",{className:zue("error-title"),children:Bue("error-title")}),(0,Nl.jsx)("div",{className:zue("error-description"),children:Bue("error-description")}),(0,Nl.jsx)(Zue,{summary:Bue("show-details"),className:zue("show-details"),size:"m",children:(0,Nl.jsx)("pre",{className:zue("error-details"),children:t.stack})}),(0,Nl.jsxs)("div",{className:zue("actions"),children:[i&&(0,Nl.jsx)(_o.z,{view:"outlined",onClick:n,children:Bue("button-reset")}),r&&(0,Nl.jsx)(_o.z,{view:"outlined",onClick:function(){return r(t)},children:Bue("report-problem")})]})]})]})},children:t})};RH.languages.register({id:N6}),RH.languages.setMonarchTokensProvider(N6,{defaultToken:"text",ignoreCase:!0,tokenPostfix:".yql",brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"}],keywordControl:"bind|block|declare|export|import|lambda|let|quote|return".split("|"),escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/(#)((?:\w|[\\+-=<>'"&#])+)/,["delimiter","constant"]],[/(?:\b(?:(defun|defmethod|defmacro))\b)(\s+)((?:\w|-|\?)*)/,["type.function","text","entity.name"]],[/(\*)(\S*)(\*)/,["delimiter","variable","delimiter"]],{include:"@strings"},[/'[^#\s)(]+/,"variable.parameter"],[/[(){}[\]]/,"@brackets"],[/(?:(?:<=?|>=?|==|!=|[-+*/%])|[a-zA-Z][a-zA-Z0-9!]*)/,{cases:{"@keywordControl":{token:"keyword.operator"},"@default":"identifier"}}]],whitespace:[[/\s+/,"white"]],comment:[[/#.*/,"comment"]],strings:[[/'?"(?=.)/,{token:"string",next:"@qqstring"}],[/'?[@]{2}/,{token:"string",next:"@multiline"}],[/'?x"(?:[0-9A-Fa-f]{2})*"/,"string"]],qqstring:[[/\\(?:[0-3][0-7][0-7]|x[0-9A-Fa-f]{2}|["tnrbfav\\])/,"string.escape"],[/[^"\\]+/,"string"],[/"|$/,{token:"string",next:"@pop"}]],multiline:[[/[^@]+/,"string"],[/[@]{2}/,{token:"string",next:"@pop"}],[/./,{token:"string"}]]}});var Vue=function(e){(0,ee.Z)(n,e);var t=(0,te.Z)(n);function n(){return(0,X.Z)(this,n),t.apply(this,arguments)}return(0,J.Z)(n,[{key:"componentDidMount",value:function(){var e=this.props,t=e.isAuthenticated,n=e.getUser;t&&n()}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.isAuthenticated,i=t.getUser,r=t.internalUser;!n||e.isAuthenticated&&r||i()}},{key:"renderContentWithNavigation",value:function(){var e=this.props,t=e.singleClusterMode,n=e.clusterName;return(0,Nl.jsx)(Cue,{children:(0,Nl.jsxs)(Wue,{children:[(0,Nl.jsx)(_re,{singleClusterMode:t,clusterName:n}),(0,Nl.jsx)("div",{id:"fullscreen-root"})]})})}},{key:"render",value:function(){return(0,Nl.jsx)(yre,{children:this.renderContentWithNavigation()})}}]),n}(e.Component);var Yue=z((function(e){var t;return{isAuthenticated:e.authentication.isAuthenticated,internalUser:e.authentication.user,singleClusterMode:e.singleClusterMode,clusterName:null===(t=e.cluster.data)||void 0===t?void 0:t.Name}}),{getUser:function(){return oa({request:window.api.whoami(),actions:Qo,dataHandler:function(e){var t=e.UserSID;return"Login"===e.AuthType?t:void 0}})}})(Vue),Uue=function(e){e&&e instanceof Function&&n.e(4529).then(n.bind(n,34529)).then((function(t){var n=t.getCLS,i=t.getFID,r=t.getFCP,o=t.getLCP,a=t.getTTFB;n(e),i(e),r(e),o(e),a(e)}))},Kue=fg(),que=Kue.store,Gue=Kue.history;window.store=que,t.render((0,Nl.jsx)(e.StrictMode,{children:(0,Nl.jsx)(Wue,{children:(0,Nl.jsx)(l,{store:que,children:(0,Nl.jsx)(ire.Provider,{value:Gue,children:(0,Nl.jsx)(Yue,{})})})})}),document.getElementById("root")),Uue()}()}(); -//# sourceMappingURL=main.2c02e91d.js.map \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/main.62a60ecb.js b/ydb/core/viewer/monitoring/static/js/main.62a60ecb.js new file mode 100644 index 000000000000..31e7683bbe77 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/main.62a60ecb.js @@ -0,0 +1,2 @@ +/*! For license information please see main.62a60ecb.js.LICENSE.txt */ +(()=>{var e={81003:(e,t,n)=>{"use strict";n.d(t,{B7:()=>s,V2:()=>a,_Y:()=>o,xu:()=>i});var r=n(54665);const i={overview:"overview",tenants:"tenants",nodes:"nodes",storage:"storage",versions:"versions"},o=[{id:i.overview,title:"Overview"},{id:i.tenants,title:"Databases"},{id:i.nodes,title:"Nodes"},{id:i.storage,title:"Storage"},{id:i.versions,title:"Versions"}];function a(e){return Object.values(i).includes(e)}const s=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,r.ax)(r.ZP.cluster,e?{activeTab:e}:void 0,t)}},6523:(e,t,n)=>{"use strict";n.d(t,{$J:()=>k,Jp:()=>y,Sb:()=>T,St:()=>_,TV:()=>h,d:()=>u,dC:()=>g,dw:()=>x,fd:()=>N,lZ:()=>s,uL:()=>O,vp:()=>f,zf:()=>w});var r=n(35638),i=n(9416);const o={[r.mR.EPathSubTypeSyncIndexImplTable]:"index_table",[r.mR.EPathSubTypeAsyncIndexImplTable]:"index_table",[r.mR.EPathSubTypeStreamImpl]:void 0,[r.mR.EPathSubTypeEmpty]:void 0},a={[r.gb.EPathTypeInvalid]:void 0,[r.gb.EPathTypeSubDomain]:"database",[r.gb.EPathTypeExtSubDomain]:"database",[r.gb.EPathTypeDir]:"directory",[r.gb.EPathTypeColumnStore]:"directory",[r.gb.EPathTypeTable]:"table",[r.gb.EPathTypeTableIndex]:"index",[r.gb.EPathTypeColumnTable]:"column_table",[r.gb.EPathTypeCdcStream]:"stream",[r.gb.EPathTypePersQueueGroup]:"topic",[r.gb.EPathTypeExternalDataSource]:"external_data_source",[r.gb.EPathTypeExternalTable]:"external_table",[r.gb.EPathTypeView]:"view",[r.gb.EPathTypeReplication]:"async_replication"},s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r.gb.EPathTypeDir,t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"directory";return t&&o[t]||a[e]||n},l={[r.mR.EPathSubTypeSyncIndexImplTable]:"Secondary Index Table",[r.mR.EPathSubTypeAsyncIndexImplTable]:"Secondary Index Table",[r.mR.EPathSubTypeStreamImpl]:void 0,[r.mR.EPathSubTypeEmpty]:void 0},c={[r.gb.EPathTypeInvalid]:void 0,[r.gb.EPathTypeSubDomain]:"Database",[r.gb.EPathTypeExtSubDomain]:"Database",[r.gb.EPathTypeDir]:"Directory",[r.gb.EPathTypeTable]:"Table",[r.gb.EPathTypeTableIndex]:"Secondary Index",[r.gb.EPathTypeColumnStore]:"Tablestore",[r.gb.EPathTypeColumnTable]:"Columntable",[r.gb.EPathTypeCdcStream]:"Changefeed",[r.gb.EPathTypePersQueueGroup]:"Topic",[r.gb.EPathTypeExternalDataSource]:"External Data Source",[r.gb.EPathTypeExternalTable]:"External Table",[r.gb.EPathTypeView]:"View",[r.gb.EPathTypeReplication]:"Async Replication"},u=(e,t)=>t&&l[t]||e&&c[e],d={[i.Hi.UnknownTenantType]:"Database",[i.Hi.Domain]:"Cluster Root",[i.Hi.Dedicated]:"Dedicated Database",[i.Hi.Shared]:"Shared Database",[i.Hi.Serverless]:"Serverless Database"},h=e=>e&&d[e],p={[r.gb.EPathTypeTable]:!0,[r.gb.EPathTypeColumnTable]:!0,[r.gb.EPathTypeExternalTable]:!0,[r.gb.EPathTypeView]:!0,[r.gb.EPathTypeInvalid]:!1,[r.gb.EPathTypeDir]:!1,[r.gb.EPathTypeSubDomain]:!1,[r.gb.EPathTypeTableIndex]:!1,[r.gb.EPathTypeExtSubDomain]:!1,[r.gb.EPathTypeColumnStore]:!1,[r.gb.EPathTypeCdcStream]:!1,[r.gb.EPathTypePersQueueGroup]:!1,[r.gb.EPathTypeExternalDataSource]:!1,[r.gb.EPathTypeReplication]:!1},f=e=>{var t;return null!==(t=e&&p[e])&&void 0!==t&&t},m={[r.mR.EPathSubTypeSyncIndexImplTable]:!0,[r.mR.EPathSubTypeAsyncIndexImplTable]:!0,[r.mR.EPathSubTypeStreamImpl]:!1,[r.mR.EPathSubTypeEmpty]:!1},g=e=>{var t;return null!==(t=e&&m[e])&&void 0!==t&&t},v={[r.gb.EPathTypeColumnStore]:!0,[r.gb.EPathTypeColumnTable]:!0,[r.gb.EPathTypeInvalid]:!1,[r.gb.EPathTypeDir]:!1,[r.gb.EPathTypeTable]:!1,[r.gb.EPathTypeSubDomain]:!1,[r.gb.EPathTypeTableIndex]:!1,[r.gb.EPathTypeExtSubDomain]:!1,[r.gb.EPathTypeCdcStream]:!1,[r.gb.EPathTypePersQueueGroup]:!1,[r.gb.EPathTypeExternalDataSource]:!1,[r.gb.EPathTypeExternalTable]:!1,[r.gb.EPathTypeView]:!1,[r.gb.EPathTypeReplication]:!1},y=e=>{var t;return null!==(t=e&&v[e])&&void 0!==t&&t},b={[r.gb.EPathTypeSubDomain]:!0,[r.gb.EPathTypeExtSubDomain]:!0,[r.gb.EPathTypeInvalid]:!1,[r.gb.EPathTypeDir]:!1,[r.gb.EPathTypeColumnStore]:!1,[r.gb.EPathTypeColumnTable]:!1,[r.gb.EPathTypeTable]:!1,[r.gb.EPathTypeTableIndex]:!1,[r.gb.EPathTypeCdcStream]:!1,[r.gb.EPathTypePersQueueGroup]:!1,[r.gb.EPathTypeExternalDataSource]:!1,[r.gb.EPathTypeExternalTable]:!1,[r.gb.EPathTypeView]:!1,[r.gb.EPathTypeReplication]:!1},x=e=>{var t;return null!==(t=e&&b[e])&&void 0!==t&&t},w=e=>e===r.gb.EPathTypeCdcStream,S={[r.gb.EPathTypeCdcStream]:!0,[r.gb.EPathTypePersQueueGroup]:!1,[r.gb.EPathTypeInvalid]:!1,[r.gb.EPathTypeColumnStore]:!1,[r.gb.EPathTypeColumnTable]:!1,[r.gb.EPathTypeDir]:!1,[r.gb.EPathTypeTable]:!1,[r.gb.EPathTypeSubDomain]:!1,[r.gb.EPathTypeTableIndex]:!1,[r.gb.EPathTypeExtSubDomain]:!1,[r.gb.EPathTypeExternalDataSource]:!1,[r.gb.EPathTypeExternalTable]:!1,[r.gb.EPathTypeView]:!1,[r.gb.EPathTypeReplication]:!1},_=e=>{var t;return null!==(t=e&&S[e])&&void 0!==t&&t},C={[r.mR.EPathSubTypeSyncIndexImplTable]:!0,[r.mR.EPathSubTypeAsyncIndexImplTable]:!0,[r.mR.EPathSubTypeStreamImpl]:!1,[r.mR.EPathSubTypeEmpty]:!1},E={[r.gb.EPathTypeCdcStream]:!0,[r.gb.EPathTypePersQueueGroup]:!0,[r.gb.EPathTypeExternalDataSource]:!0,[r.gb.EPathTypeExternalTable]:!0,[r.gb.EPathTypeView]:!0,[r.gb.EPathTypeReplication]:!0,[r.gb.EPathTypeInvalid]:!1,[r.gb.EPathTypeColumnStore]:!1,[r.gb.EPathTypeColumnTable]:!1,[r.gb.EPathTypeDir]:!1,[r.gb.EPathTypeTable]:!1,[r.gb.EPathTypeSubDomain]:!1,[r.gb.EPathTypeTableIndex]:!1,[r.gb.EPathTypeExtSubDomain]:!1},T=(e,t)=>{var n;return null!==(n=t&&C[t]||e&&E[e])&&void 0!==n&&n},O=(r.gb.EPathTypeCdcStream,r.gb.EPathTypePersQueueGroup,r.gb.EPathTypeInvalid,r.gb.EPathTypeColumnStore,r.gb.EPathTypeColumnTable,r.gb.EPathTypeDir,r.gb.EPathTypeTable,r.gb.EPathTypeSubDomain,r.gb.EPathTypeTableIndex,r.gb.EPathTypeExtSubDomain,r.gb.EPathTypeExternalDataSource,r.gb.EPathTypeExternalTable,r.gb.EPathTypeView,r.gb.EPathTypeReplication,e=>e===r.gb.EPathTypeExternalTable),N=e=>e===r.gb.EPathTypeTable,k=e=>e===r.gb.EPathTypeView},36084:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ASIDE_HEADER_COMPACT_KEY:()=>Lo.Ac,AUTOCOMPLETE_ON_ENTER:()=>Lo.XX,AUTO_REFRESH_INTERVAL:()=>Lo.KU,AUTO_RELOAD_INTERVAL:()=>Lo.t_,AppSlots:()=>r,BINARY_DATA_IN_PLAIN_TEXT_DISPLAY:()=>Lo.N1,CLUSTER_DEFAULT_TITLE:()=>Lo.DO,COLORS_PRIORITY:()=>Lo.sl,DATA_QA_TUNE_COLUMNS_POPUP:()=>Lo.KS,DAY_IN_SECONDS:()=>Lo.ii,DEFAULT_CLUSTER_TAB_KEY:()=>Lo.S7,DEFAULT_IS_QUERY_RESULT_COLLAPSED:()=>Lo.eG,DEFAULT_IS_TENANT_COMMON_INFO_COLLAPSED:()=>Lo.Mn,DEFAULT_IS_TENANT_SUMMARY_COLLAPSED:()=>Lo.sO,DEFAULT_POLLING_INTERVAL:()=>Lo.ME,DEFAULT_SIZE_RESULT_PANE_KEY:()=>Lo.XN,DEFAULT_SIZE_TENANT_KEY:()=>Lo.z4,DEFAULT_SIZE_TENANT_SUMMARY_KEY:()=>Lo.wr,DEFAULT_TABLE_SETTINGS:()=>Lo.LE,DEVELOPER_UI_TITLE:()=>Lo.Ah,EMPTY_DATA_PLACEHOLDER:()=>Lo.jX,ENABLE_AUTOCOMPLETE:()=>Lo.y6,ErrorBoundary:()=>Xe,ErrorBoundaryFallback:()=>$e,GIGABYTE:()=>Lo.GS,HOUR_IN_SECONDS:()=>Lo.RQ,INVERTED_DISKS_KEY:()=>Lo.yT,IS_HOTKEYS_HELP_HIDDDEN_KEY:()=>Lo.JZ,KILOBYTE:()=>Lo.h0,LANGUAGE_KEY:()=>Lo.Px,LAST_USED_QUERY_ACTION_KEY:()=>Lo.w7,LOAD_AVERAGE_TIME_INTERVALS:()=>Lo.x5,Lang:()=>We.Uo,MEGABYTE:()=>Lo.nQ,MINUTE_IN_SECONDS:()=>Lo.sU,MS_IN_NANOSECONDS:()=>Lo.yD,MultiClusterApp:()=>aq,PARTITIONS_HIDDEN_COLUMNS_KEY:()=>Lo.ZY,QUERIES_HISTORY_KEY:()=>Lo.if,QUERY_INITIAL_MODE_KEY:()=>Lo.Wm,QUERY_USE_MULTI_SCHEMA_KEY:()=>Lo.Rq,SAVED_QUERIES_KEY:()=>Lo.DG,SingleClusterApp:()=>PW,TABLET_COLORS:()=>Lo.HN,TABLET_SYMBOLS:()=>Lo.tV,TENANT_DEFAULT_TITLE:()=>Lo.FU,TENANT_INITIAL_PAGE_KEY:()=>Lo.pf,TENANT_OVERVIEW_TABLES_LIMIT:()=>Lo.fl,TENANT_OVERVIEW_TABLES_SETTINGS:()=>Lo.E6,TERABYTE:()=>Lo.Bp,THEME_KEY:()=>Lo.bw,USE_BACKEND_PARAMS_FOR_TABLES_KEY:()=>Lo.ET,USE_CLUSTER_BALANCER_AS_BACKEND_KEY:()=>Lo.IG,USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY:()=>Lo.UF,YdbEmbeddedAPI:()=>sq.su,YdbWebVersionAPI:()=>sq.Iy,appRoutes:()=>Ta.ZP,cn:()=>Me,componentsRegistry:()=>kW,configureStore:()=>h_.xC,createApi:()=>sq.LC,getMonitoringClusterLink:()=>MW,getMonitoringLink:()=>RW,getTabletLabel:()=>Lo.qV,i18n:()=>We.ag,reportWebVitals:()=>cq.Z,rootReducer:()=>h_.QW,setUserSettings:()=>Ro.m9,settingsManager:()=>Vc.r,toaster:()=>lq.m,useSetting:()=>Mo,useTypedSelector:()=>Do,userSettings:()=>Xa});var r={};n.r(r),n.d(r,{ClusterSlot:()=>qH,ClustersSlot:()=>WH,NodeSlot:()=>YH,PDiskPageSlot:()=>KH,RedirectSlot:()=>eV,RoutesSlot:()=>JH,TabletSlot:()=>XH,TabletsFiltersSlot:()=>$H,TenantSlot:()=>ZH,VDiskPageSlot:()=>QH});var i,o,a=n(68963),s=n(64572),l=n(77808),c=n.n(l),u=n(32733),d=n.n(u),h=n(69612),p=n.n(h),f=(e=>(e.BASE="base",e.BODY="body",e.HEAD="head",e.HTML="html",e.LINK="link",e.META="meta",e.NOSCRIPT="noscript",e.SCRIPT="script",e.STYLE="style",e.TITLE="title",e.FRAGMENT="Symbol(react.fragment)",e))(f||{}),m={rel:["amphtml","canonical","alternate"]},g={type:["application/ld+json"]},v={charset:"",name:["generator","robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},y=Object.values(f),b={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.entries(b).reduce(((e,t)=>{let[n,r]=t;return e[r]=n,e}),{}),w="data-rh",S="defaultTitle",_="defer",C="encodeSpecialCharacters",E="onChangeClientState",T="titleTemplate",O="prioritizeSeoTags",N=(e,t)=>{for(let n=e.length-1;n>=0;n-=1){const r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},k=e=>{let t=N(e,"title");const n=N(e,T);if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(()=>t));const r=N(e,S);return t||r||void 0},j=e=>N(e,E)||(()=>{}),I=(e,t)=>t.filter((t=>"undefined"!==typeof t[e])).map((t=>t[e])).reduce(((e,t)=>({...e,...t})),{}),P=(e,t)=>t.filter((e=>"undefined"!==typeof e.base)).map((e=>e.base)).reverse().reduce(((t,n)=>{if(!t.length){const r=Object.keys(n);for(let i=0;i<r.length;i+=1){const o=r[i].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}}return t}),[]),D=(e,t,n)=>{const r={};return n.filter((t=>{return!!Array.isArray(t[e])||("undefined"!==typeof t[e]&&(n="Helmet: ".concat(e,' should be of type "Array". Instead found type "').concat(typeof t[e],'"'),console&&"function"===typeof console.warn&&console.warn(n)),!1);var n})).map((t=>t[e])).reverse().reduce(((e,n)=>{const i={};n.filter((e=>{let n;const o=Object.keys(e);for(let r=0;r<o.length;r+=1){const i=o[r],a=i.toLowerCase();-1===t.indexOf(a)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===a&&"stylesheet"===e[a].toLowerCase()||(n=a),-1===t.indexOf(i)||"innerHTML"!==i&&"cssText"!==i&&"itemprop"!==i||(n=i)}if(!n||!e[n])return!1;const a=e[n].toLowerCase();return r[n]||(r[n]={}),i[n]||(i[n]={}),!r[n][a]&&(i[n][a]=!0,!0)})).reverse().forEach((t=>e.push(t)));const o=Object.keys(i);for(let t=0;t<o.length;t+=1){const e=o[t],n={...r[e],...i[e]};r[e]=n}return e}),[]).reverse()},A=(e,t)=>{if(Array.isArray(e)&&e.length)for(let n=0;n<e.length;n+=1){if(e[n][t])return!0}return!1},R=e=>Array.isArray(e)?e.join(""):e,M=(e,t)=>Array.isArray(e)?e.reduce(((e,n)=>(((e,t)=>{const n=Object.keys(e);for(let r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1})(n,t)?e.priority.push(n):e.default.push(n),e)),{priority:[],default:[]}):{default:e,priority:[]},L=(e,t)=>({...e,[t]:void 0}),F=["noscript","script","style"],z=function(e){return!1===(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},B=e=>Object.keys(e).reduce(((t,n)=>{const r="undefined"!==typeof e[n]?"".concat(n,'="').concat(e[n],'"'):"".concat(n);return t?"".concat(t," ").concat(r):r}),""),U=(e,t,n,r)=>{const i=B(n),o=R(t);return i?"<".concat(e," ").concat(w,'="true" ').concat(i,">").concat(z(o,r),"</").concat(e,">"):"<".concat(e," ").concat(w,'="true">').concat(z(o,r),"</").concat(e,">")},H=function(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return t.reduce(((t,r)=>{const i=r,o=Object.keys(i).filter((e=>!("innerHTML"===e||"cssText"===e))).reduce(((e,t)=>{const r="undefined"===typeof i[t]?t:"".concat(t,'="').concat(z(i[t],n),'"');return e?"".concat(e," ").concat(r):r}),""),a=i.innerHTML||i.cssText||"",s=-1===F.indexOf(e);return"".concat(t,"<").concat(e," ").concat(w,'="true" ').concat(o).concat(s?"/>":">".concat(a,"</").concat(e,">"))}),"")},V=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce(((t,n)=>(t[b[n]||n]=e[n],t)),t)},G=(e,t,n)=>{const r=V(n,{key:t,[w]:!0});return[a.createElement("title",r,t)]},W=(e,t)=>t.map(((t,n)=>{const r={key:n,[w]:!0};return Object.keys(t).forEach((e=>{const n=b[e]||e;if("innerHTML"===n||"cssText"===n){const e=t.innerHTML||t.cssText;r.dangerouslySetInnerHTML={__html:e}}else r[n]=t[e]})),a.createElement(e,r)})),q=function(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];switch(e){case"title":return{toComponent:()=>G(e,t.title,t.titleAttributes),toString:()=>U(e,t.title,t.titleAttributes,n)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>V(t),toString:()=>B(t)};default:return{toComponent:()=>W(e,t),toString:()=>H(e,t,n)}}},Z=e=>{const{baseTag:t,bodyAttributes:n,encode:r=!0,htmlAttributes:i,noscriptTags:o,styleTags:a,title:s="",titleAttributes:l,prioritizeSeoTags:c}=e;let{linkTags:u,metaTags:d,scriptTags:h}=e,p={toComponent:()=>{},toString:()=>""};return c&&({priorityMethods:p,linkTags:u,metaTags:d,scriptTags:h}=(e=>{let{metaTags:t,linkTags:n,scriptTags:r,encode:i}=e;const o=M(t,v),a=M(n,m),s=M(r,g);return{priorityMethods:{toComponent:()=>[...W("meta",o.priority),...W("link",a.priority),...W("script",s.priority)],toString:()=>"".concat(q("meta",o.priority,i)," ").concat(q("link",a.priority,i)," ").concat(q("script",s.priority,i))},metaTags:o.default,linkTags:a.default,scriptTags:s.default}})(e)),{priority:p,base:q("base",t,r),bodyAttributes:q("bodyAttributes",n,r),htmlAttributes:q("htmlAttributes",i,r),link:q("link",u,r),meta:q("meta",d,r),noscript:q("noscript",o,r),script:q("script",h,r),style:q("style",a,r),title:q("title",{title:s,titleAttributes:l},r)}},Y=[],K=!("undefined"===typeof window||!window.document||!window.document.createElement),Q=class{constructor(e,t){(0,s.Z)(this,"instances",[]),(0,s.Z)(this,"canUseDOM",K),(0,s.Z)(this,"context",void 0),(0,s.Z)(this,"value",{setHelmet:e=>{this.context.helmet=e},helmetInstances:{get:()=>this.canUseDOM?Y:this.instances,add:e=>{(this.canUseDOM?Y:this.instances).push(e)},remove:e=>{const t=(this.canUseDOM?Y:this.instances).indexOf(e);(this.canUseDOM?Y:this.instances).splice(t,1)}}}),this.context=e,this.canUseDOM=t||!1,t||(e.helmet=Z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},X=a.createContext({}),$=(i=class e extends a.Component{constructor(t){super(t),(0,s.Z)(this,"helmetData",void 0),this.helmetData=new Q(this.props.context||{},e.canUseDOM)}render(){return a.createElement(X.Provider,{value:this.helmetData.value},this.props.children)}},(0,s.Z)(i,"canUseDOM",K),i),J=(e,t)=>{const n=document.head||document.querySelector("head"),r=n.querySelectorAll("".concat(e,"[").concat(w,"]")),i=[].slice.call(r),o=[];let a;return t&&t.length&&t.forEach((t=>{const n=document.createElement(e);for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e))if("innerHTML"===e)n.innerHTML=t.innerHTML;else if("cssText"===e)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{const r=e,i="undefined"===typeof t[r]?"":t[r];n.setAttribute(e,i)}n.setAttribute(w,"true"),i.some(((e,t)=>(a=t,n.isEqualNode(e))))?i.splice(a,1):o.push(n)})),i.forEach((e=>{var t;return null===(t=e.parentNode)||void 0===t?void 0:t.removeChild(e)})),o.forEach((e=>n.appendChild(e))),{oldTags:i,newTags:o}},ee=(e,t)=>{const n=document.getElementsByTagName(e)[0];if(!n)return;const r=n.getAttribute(w),i=r?r.split(","):[],o=[...i],a=Object.keys(t);for(const s of a){const e=t[s]||"";n.getAttribute(s)!==e&&n.setAttribute(s,e),-1===i.indexOf(s)&&i.push(s);const r=o.indexOf(s);-1!==r&&o.splice(r,1)}for(let s=o.length-1;s>=0;s-=1)n.removeAttribute(o[s]);i.length===o.length?n.removeAttribute(w):n.getAttribute(w)!==a.join(",")&&n.setAttribute(w,a.join(","))},te=(e,t)=>{const{baseTag:n,bodyAttributes:r,htmlAttributes:i,linkTags:o,metaTags:a,noscriptTags:s,onChangeClientState:l,scriptTags:c,styleTags:u,title:d,titleAttributes:h}=e;ee("body",r),ee("html",i),((e,t)=>{"undefined"!==typeof e&&document.title!==e&&(document.title=R(e)),ee("title",t)})(d,h);const p={baseTag:J("base",n),linkTags:J("link",o),metaTags:J("meta",a),noscriptTags:J("noscript",s),scriptTags:J("script",c),styleTags:J("style",u)},f={},m={};Object.keys(p).forEach((e=>{const{newTags:t,oldTags:n}=p[e];t.length&&(f[e]=t),n.length&&(m[e]=p[e].oldTags)})),t&&t(),l(e,f,m)},ne=null,re=e=>{ne&&cancelAnimationFrame(ne),e.defer?ne=requestAnimationFrame((()=>{te(e,(()=>{ne=null}))})):(te(e),ne=null)},ie=class extends a.Component{constructor(){super(...arguments),(0,s.Z)(this,"rendered",!1)}shouldComponentUpdate(e){return!p()(e,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:e}=this.props.context;e.remove(this),this.emitChange()}emitChange(){const{helmetInstances:e,setHelmet:t}=this.props.context;let n=null;const r=(i=e.get().map((e=>{const t={...e.props};return delete t.context,t})),{baseTag:P(["href"],i),bodyAttributes:I("bodyAttributes",i),defer:N(i,_),encode:N(i,C),htmlAttributes:I("htmlAttributes",i),linkTags:D("link",["rel","href"],i),metaTags:D("meta",["name","charset","http-equiv","property","itemprop"],i),noscriptTags:D("noscript",["innerHTML"],i),onChangeClientState:j(i),scriptTags:D("script",["src","innerHTML"],i),styleTags:D("style",["cssText"],i),title:k(i),titleAttributes:I("titleAttributes",i),prioritizeSeoTags:A(i,O)});var i;$.canUseDOM?re(r):Z&&(n=Z(r)),t(n)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:e}=this.props.context;e.add(this),this.emitChange()}render(){return this.init(),null}},oe=(o=class extends a.Component{shouldComponentUpdate(e){return!c()(L(this.props,"helmetData"),L(e,"helmetData"))}mapNestedChildrenToProps(e,t){if(!t)return null;switch(e.type){case"script":case"noscript":return{innerHTML:t};case"style":return{cssText:t};default:throw new Error("<".concat(e.type," /> elements are self-closing and can not contain children. Refer to our API for more information."))}}flattenArrayTypeChildren(e,t,n,r){return{...t,[e.type]:[...t[e.type]||[],{...n,...this.mapNestedChildrenToProps(e,r)}]}}mapObjectTypeChildren(e,t,n,r){switch(e.type){case"title":return{...t,[e.type]:r,titleAttributes:{...n}};case"body":return{...t,bodyAttributes:{...n}};case"html":return{...t,htmlAttributes:{...n}};default:return{...t,[e.type]:{...n}}}}mapArrayTypeChildrenToProps(e,t){let n={...t};return Object.keys(e).forEach((t=>{n={...n,[t]:e[t]}})),n}warnOnInvalidChildren(e,t){return d()(y.some((t=>e.type===t)),"function"===typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types ".concat(y.join(", ")," are allowed. Helmet does not support rendering <").concat(e.type,"> elements. Refer to our API for more information.")),d()(!t||"string"===typeof t||Array.isArray(t)&&!t.some((e=>"string"!==typeof e)),"Helmet expects a string as a child of <".concat(e.type,">. Did you forget to wrap your children in braces? ( <").concat(e.type,">{``}</").concat(e.type,"> ) Refer to our API for more information.")),!0}mapChildrenToProps(e,t){let n={};return a.Children.forEach(e,(e=>{if(!e||!e.props)return;const{children:r,...i}=e.props,o=Object.keys(i).reduce(((e,t)=>(e[x[t]||t]=i[t],e)),{});let{type:a}=e;switch("symbol"===typeof a?a=a.toString():this.warnOnInvalidChildren(e,r),a){case"Symbol(react.fragment)":t=this.mapChildrenToProps(r,t);break;case"link":case"meta":case"noscript":case"script":case"style":n=this.flattenArrayTypeChildren(e,n,o,r);break;default:t=this.mapObjectTypeChildren(e,t,o,r)}})),this.mapArrayTypeChildrenToProps(n,t)}render(){const{children:e,...t}=this.props;let n={...t},{helmetData:r}=t;if(e&&(n=this.mapChildrenToProps(e,n)),r&&!(r instanceof Q)){r=new Q(r.context,!0),delete n.helmetData}return r?a.createElement(ie,{...n,context:r.value}):a.createElement(X.Consumer,null,(e=>a.createElement(ie,{...n,context:e})))}},(0,s.Z)(o,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),o),ae=n(87555),se=n(70292),le=n(36951),ce=n(99742);const ue="function"===typeof a.useId?function(){return"".concat(le.A7).concat(a.useId())}:function(){const e=a.useRef();return void 0===e.current&&(e.current=(0,ce.x)()),e.current},de=a.createContext(void 0),he=a.createContext(void 0);function pe(e){const{size:t,disabled:n,defaultExpanded:r,arrowPosition:i,summary:o,keepMounted:s,onUpdate:l,expanded:c}=e,[u,d]=a.useState((()=>Boolean(r))),h=void 0!==c,p=ue(),f="disclosure".concat(p);return a.createElement(de.Provider,{value:{size:t,disabled:n,summary:o,arrowPosition:i,keepMounted:s,expanded:h?c:u,ariaControls:p,ariaLabelledby:f}},a.createElement(he.Provider,{value:()=>{d((e=>!e));l(h?!c:!u)}},e.children))}function fe(){const e=a.useContext(de);if(void 0===e)throw new Error("useDisclosureAttributes must be used within DisclosureProvider");return e}var me=n(62685),ge=n(31445);const ve=(0,le.Ge)("disclosure"),ye={SUMMARY:"disclosure-summary",DETAILS:"disclosure-details"};function be(e){let{children:t}=e;const n=a.useRef(null),{ariaControls:r,ariaLabelledby:i,keepMounted:o,expanded:s}=fe();return a.createElement(me.Z,{nodeRef:n,in:s,addEndListener:e=>{var t;return null===(t=n.current)||void 0===t?void 0:t.addEventListener("animationend",e)},classNames:(0,ge.Y)(ve),mountOnEnter:!o,unmountOnExit:!o,appear:!0},a.createElement("div",{ref:n,id:r,role:"region","aria-labelledby":i,className:ve("content",{visible:s}),"data-qa":ye.DETAILS},t))}be.displayName="DisclosureDetails";const xe=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M2.97 5.47a.75.75 0 0 1 1.06 0L8 9.44l3.97-3.97a.75.75 0 1 1 1.06 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0l-4.5-4.5a.75.75 0 0 1 0-1.06Z",clipRule:"evenodd"}));var we=n(88776);const Se=(0,le.Ge)("arrow-toggle");function _e(e){let{size:t=16,direction:n="bottom",className:r,qa:i}=e;return a.createElement("span",{style:{width:t,height:t},className:Se({direction:n},r),"data-qa":i},a.createElement(we.J,{data:xe,size:t}))}var Ce=n(12913);const Ee={m:14,l:16,xl:20};function Te(){(0,Ce.O)('[Disclosure] Physical values (left, right) of "arrowPosition" property are deprecated. Use logical values (start, end) instead.')}function Oe(e){let{children:t}=e;const n=function(){const e=a.useContext(he);if(void 0===e)throw new Error("useToggleDisclosure must be used within DisclosureProvider");return e}(),{ariaControls:r,ariaLabelledby:i,expanded:o,disabled:s}=fe(),l={onClick:n,ariaControls:r,id:i,expanded:o,disabled:s};return t(l,a.createElement(Ne,Object.assign({},l)))}function Ne(e){let{onClick:t,ariaControls:n,id:r,expanded:i,disabled:o}=e;const{size:s,summary:l,arrowPosition:c}=fe();let u=c;return"left"===u&&(Te(),u="start"),"right"===u&&(Te(),u="end"),a.createElement("button",{type:"button","aria-expanded":i,className:ve("trigger",{disabled:o,arrow:u}),"aria-controls":n,id:r,onClick:t,disabled:o,"data-qa":ye.SUMMARY},a.createElement(_e,{size:Ee[s],direction:i?"top":"bottom"}),l)}Oe.displayName="DisclosureSummary";const ke=(0,se.s)(Oe),je=a.forwardRef((function(e,t){const{size:n="m",disabled:r=!1,defaultExpanded:i=!1,arrowPosition:o="start",summary:s="",className:l,keepMounted:c=!0,children:u,onUpdate:d=(()=>{}),expanded:h,qa:p}=e,[f,m]=function(e){const t=a.Children.toArray(e);let n,r;const i=[];for(const o of t){if(ke(o)){if(n)throw new Error("Only one <Disclosure.Summary> component is allowed");n=o}else i.push(o)}i.length>0&&(r=a.createElement(be,null,i));n||(n=a.createElement(Oe,null,(e=>a.createElement(Ne,Object.assign({},e)))));return[n,r]}(u);return a.createElement(pe,{disabled:r,defaultExpanded:i,expanded:h,keepMounted:c,size:n,summary:s,arrowPosition:o,onUpdate:d},a.createElement("section",{ref:t,className:ve({size:n},l),"data-qa":p},f,m))}));je.Summary=Oe,je.displayName="Disclosure";var Ie=n(17176);const Pe=(0,a.createContext)(null),De={didCatch:!1,error:null};class Ae extends a.Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=De}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(){const{error:e}=this.state;if(null!==e){for(var t,n,r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];null===(t=(n=this.props).onReset)||void 0===t||t.call(n,{args:i,reason:"imperative-api"}),this.setState(De)}}componentDidCatch(e,t){var n,r;null===(n=(r=this.props).onError)||void 0===n||n.call(r,e,t)}componentDidUpdate(e,t){const{didCatch:n}=this.state,{resetKeys:r}=this.props;var i,o;n&&null!==t.error&&function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length!==t.length||e.some(((e,n)=>!Object.is(e,t[n])))}(e.resetKeys,r)&&(null===(i=(o=this.props).onReset)||void 0===i||i.call(o,{next:r,prev:e.resetKeys,reason:"keys"}),this.setState(De))}render(){const{children:e,fallbackRender:t,FallbackComponent:n,fallback:r}=this.props,{didCatch:i,error:o}=this.state;let s=e;if(i){const e={error:o,resetErrorBoundary:this.resetErrorBoundary};if("function"===typeof t)s=t(e);else if(n)s=(0,a.createElement)(n,e);else{if(null!==r&&!(0,a.isValidElement)(r))throw o;s=r}}return(0,a.createElement)(Pe.Provider,{value:{didCatch:i,error:o,resetErrorBoundary:this.resetErrorBoundary}},s)}}var Re=n(5247);const Me=(0,Re.withNaming)({e:"__",m:"_"});var Le=n(75859);const Fe=a.createContext(void 0);function ze(e){let{children:t,registry:n}=e;return(0,Le.jsx)(Fe.Provider,{value:n,children:t})}function Be(e){const t=a.useContext(Fe);if(void 0===t)throw new Error("useComponent must be used within ComponentsProvider");return t.get(e)}var Ue=n(64270);const He={light:{403:()=>n.e(3457).then(n.bind(n,73457)),thumbsUp:()=>n.e(6876).then(n.bind(n,36876)),error:()=>n.e(2435).then(n.bind(n,32435))},dark:{403:()=>n.e(7409).then(n.bind(n,77409)),thumbsUp:()=>n.e(8622).then(n.bind(n,28622)),error:()=>n.e(598).then(n.bind(n,40598))}},Ve=Me("kv-illustration"),Ge=e=>{let{name:t,className:n,...r}=e;const i=(0,Ue.C)(),[o,s]=a.useState(""),l=He[i]&&He[i][t];return a.useEffect((()=>{"function"===typeof l&&l().then((e=>s(e.default))).catch((e=>{console.error(e),s("")}))}),[l]),o?(0,Le.jsx)("img",{alt:t,src:o,className:Ve(null,n),...r}):null};var We=n(30817);const qe=JSON.parse('{"error-title":"Something went wrong","error-description":"We have something broken, but don\'t worry, it won\'t last long","show-details":"Show details","report-problem":"Report a problem","button-reset":"Try again"}'),Ze=JSON.parse('{"error-title":"\u0427\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a","error-description":"\u0423 \u043d\u0430\u0441 \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u043b\u043e\u0441\u044c, \u043d\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0439\u0442\u0435, \u044d\u0442\u043e \u043d\u0435\u043d\u0430\u0434\u043e\u043b\u0433\u043e","show-details":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438","report-problem":"\u0421\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435","button-reset":"\u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043d\u043e\u0432\u0430"}'),Ye=(0,We.wZ)("ydb-error-boundary",{ru:Ze,en:qe}),Ke=Me("ydb-error-boundary");function Qe(e){let{children:t}=e;const n=Be("ErrorBoundary");return(0,Le.jsx)(n,{children:t})}function Xe(e){let{children:t,useRetry:n=!0,onReportProblem:r}=e;return(0,Le.jsx)(Ae,{onError:(e,t)=>{var n;!function(e,t){var n;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"error";"undefined"!==typeof window&&null!==(n=window.Ya)&&void 0!==n&&n.Rum?window.Ya.Rum.logError({additional:{url:window.location.href},type:r,message:t,level:window.Ya.Rum.ERROR_LEVEL.ERROR},e):console.error(e)}(e,null!==(n=t.componentStack)&&void 0!==n?n:void 0,"error-boundary")},fallbackRender:e=>{let{error:t,resetErrorBoundary:i}=e;return(0,Le.jsx)($e,{error:t,useRetry:n,resetErrorBoundary:i,onReportProblem:r})},children:t})}function $e(e){let{error:t,resetErrorBoundary:n,useRetry:r,onReportProblem:i}=e;return(0,Le.jsxs)("div",{className:Ke(),children:[(0,Le.jsx)(Ge,{name:"error",className:Ke("illustration")}),(0,Le.jsxs)("div",{className:Ke("content"),children:[(0,Le.jsx)("h2",{className:Ke("error-title"),children:Ye("error-title")}),(0,Le.jsx)("div",{className:Ke("error-description"),children:Ye("error-description")}),(0,Le.jsx)(je,{summary:Ye("show-details"),className:Ke("show-details"),size:"m",children:(0,Le.jsx)("pre",{className:Ke("error-details"),children:t.stack})}),(0,Le.jsxs)("div",{className:Ke("actions"),children:[r&&(0,Le.jsx)(Ie.z,{view:"outlined",onClick:n,children:Ye("button-reset")}),i&&(0,Le.jsx)(Ie.z,{view:"outlined",onClick:()=>i(t),children:Ye("report-problem")})]})]})]})}function Je(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n}"function"===typeof SuppressedError&&SuppressedError;const et=a.createContext({activeTabId:void 0});et.displayName="TabsContext";var tt=n(77280),nt=n(95097);const rt=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M9.5 12c0 .414-.168.79-.44 1.06A1.49 1.49 0 0 1 8 13.5H4a1.49 1.49 0 0 1-1.06-.44A1.496 1.496 0 0 1 2.5 12V8c0-.414.168-.79.44-1.06A1.49 1.49 0 0 1 4 6.5h4c.414 0 .79.168 1.06.44.272.27.44.646.44 1.06v4Zm-1.47-1.03s.001 0 0 0L7.06 10l.97-.97a.75.75 0 0 0-1.06-1.06L6 8.94l-.97-.97a.75.75 0 0 0-1.06 1.06l.97.97-.97.97a.75.75 0 0 0 1.06 1.06c0 .001 0 0 0 0l.97-.97.97.97a.75.75 0 0 0 1.06-1.06ZM6.5 5H8a3 3 0 0 1 3 3v1.5h1A1.498 1.498 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1ZM5 4a3 3 0 0 1 3-3h4a3 3 0 0 1 3 3v4a3 3 0 0 1-3 3h-1v1a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V8a3 3 0 0 1 3-3h1V4Z",clipRule:"evenodd"})),it=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"m8 9.076.085-.107a.751.751 0 1 0-1.171-.937L5.438 9.877 5.03 9.47a.747.747 0 0 0-1.06 0 .75.75 0 0 0 0 1.06l.407.408.593.592a.75.75 0 0 0 1.116-.061l.522-.654h.001L8 9.074Z"}),a.createElement("path",{fillRule:"evenodd",d:"M12 11a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1h1ZM4 6.5A1.5 1.5 0 0 0 2.5 8v4A1.5 1.5 0 0 0 4 13.5h4A1.5 1.5 0 0 0 9.5 12V8A1.498 1.498 0 0 0 8 6.5H4ZM13.5 4A1.5 1.5 0 0 0 12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.498 1.498 0 0 0 13.5 8V4Z",clipRule:"evenodd"}))),ot=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5ZM11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3v-1ZM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5Z",clipRule:"evenodd"}));function at(e){var{status:t}=e,n=(0,nt._T)(e,["status"]);return"error"===t?a.createElement(we.J,Object.assign({data:rt},n)):"success"===t?a.createElement(we.J,Object.assign({data:it},n)):a.createElement(we.J,Object.assign({data:ot},n))}var st=n(15942),lt=n.n(st);const ct="pending";function ut(e){const{children:t,text:n,options:r,timeout:i,onCopy:o}=e,[s,l]=a.useState(ct),c=a.useRef(),u=a.useMemo((()=>t(s)),[t,s]),d=a.useCallback(((e,t)=>{l(t?"success":"error"),window.clearTimeout(c.current),c.current=window.setTimeout((()=>l(ct)),i),null===o||void 0===o||o(e,t)}),[o,i]);if(a.useEffect((()=>()=>window.clearTimeout(c.current)),[]),!a.isValidElement(u))throw new Error("Content must be a valid react element");return a.createElement(lt(),{text:n,onCopy:d,options:r},u)}const dt=(0,le.Ge)("label"),ht={xs:{copyIconSize:12,closeIconSize:12,buttonSize:"xs"},s:{copyIconSize:14,closeIconSize:14,buttonSize:"s"},m:{copyIconSize:16,closeIconSize:16,buttonSize:"m"}},pt={pin:"brick-round",className:dt("addon",{side:"right",interactive:!0})},ft=a.forwardRef((function(e,t){const{type:n="default",theme:r="normal",size:i="xs",icon:o,children:s,onCloseClick:l,className:c,disabled:u,copyText:d,closeButtonLabel:h,copyButtonLabel:p,interactive:f=!1,value:m,onCopy:g,onClick:v,qa:y}=e,b=Boolean(""!==s&&a.Children.count(s)>0),x="close"===n&&b,w="copy"===n&&b,S="function"===typeof v,_=Boolean(w&&d),C=(S||_||f)&&!u,{copyIconSize:E,closeIconSize:T,buttonSize:O}=ht[i],N=o&&a.createElement("div",{className:dt("addon",{side:b?"left":void 0})},o),k=b&&a.createElement("div",{className:dt("text")},a.createElement("div",{className:dt("content")},s),Boolean(m)&&a.createElement("div",{className:dt("value")},a.createElement("div",{className:dt("separator")},":"),a.createElement("div",{className:dt("key")},m))),j=e=>{let o;return w?o=a.createElement(Ie.z,Object.assign({size:O,extraProps:{"aria-label":p||void 0},onClick:S?v:void 0,disabled:u},pt),a.createElement(Ie.z.Icon,null,a.createElement(at,{status:e||"pending",size:E}))):x&&(o=a.createElement(Ie.z,Object.assign({onClick:l,size:O,extraProps:{"aria-label":h||void 0},disabled:u},pt),a.createElement(we.J,{size:T,data:tt.Z}))),a.createElement("div",{ref:t,className:dt({theme:r,size:i,type:n,"is-interactive":C,"has-right-addon":Boolean(o),"has-left-addon":Boolean(N),disabled:u},c),"data-qa":y},N,S?a.createElement("button",{disabled:u,type:"button",onClick:v,className:dt("action-button")},k):k,o)};return _&&d&&!S?a.createElement(ut,{text:d,onCopy:g,timeout:1e3},(e=>j(e))):j()})),mt=(0,le.Ge)("tabs");function gt(e){let{id:t,className:n,title:r,meta:i,hint:o,icon:s,counter:l,label:c,active:u,disabled:d,hasOverflow:h,extraProps:p,onClick:f}=e;const{activeTabId:m}=a.useContext(et),g="boolean"===typeof u?u:m===t,v=a.useMemo((()=>void 0!==o?o:"string"===typeof r?r:void 0),[o,r]);return a.createElement("div",Object.assign({},p,{role:"tab","aria-selected":g,"aria-disabled":!0===d,tabIndex:d?-1:0,className:mt("item",{active:g,disabled:d,overflow:Boolean(h)},n),title:v,onClick:()=>{f(t)},onKeyDown:e=>{" "===e.key&&f(t)}}),a.createElement("div",{className:mt("item-content")},s&&a.createElement("div",{className:mt("item-icon")},s),a.createElement("div",{className:mt("item-title")},r||t),"number"===typeof l&&a.createElement("div",{className:mt("item-counter")},l),c&&a.createElement(ft,{className:mt("item-label"),theme:c.theme},c.content)),i&&a.createElement("div",{className:mt("item-meta")},i))}gt.displayName="Tabs.Item";const vt=(0,le.Ge)("tabs");var yt;!function(e){e.Horizontal="horizontal",e.Vertical="vertical"}(yt||(yt={}));const bt=[],xt=a.forwardRef(((e,t)=>{let{direction:n=yt.Horizontal,size:r="m",activeTab:i,allowNotSelected:o=!1,items:s=bt,children:l,className:c,onSelectTab:u,wrapTo:d,qa:h}=e;const p=((e,t,n)=>{var r;return e||(t||0===(null===n||void 0===n?void 0:n.length)||null===(r=null===n||void 0===n?void 0:n[0])||void 0===r?void 0:r.id)})(i,o,s),f=a.useMemo((()=>({activeTabId:p})),[p]),m=a.useMemo((()=>{const e=e=>{u&&u(e)};return s.map(((t,n)=>{const r=a.createElement(gt,Object.assign({key:t.id},t,{onClick:e}));return d?d(t,r,n):r}))}),[s,u,d]);return a.createElement("div",{role:"tablist",className:vt({direction:n,size:r},c),"data-qa":h,ref:t},a.createElement(et.Provider,{value:f},l||m))}));xt.displayName="Tabs";const wt=Object.assign(xt,{Item:gt});var St=n(93316);function _t(e,t,n){const[r,i]=a.useState(null!==e&&void 0!==e?e:t),o=a.useRef(void 0!==e),s=void 0!==e;a.useEffect((()=>{const e=o.current;e!==s&&console.error("[useControlledState] A component changed from ".concat(e?"controlled":"uncontrolled"," to ").concat(s?"controlled":"uncontrolled",".")),o.current=s}),[s]);let l=s?e:r;const c=a.useCallback((function(e){if(!Object.is(l,e)){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];null===n||void 0===n||n(e,...r)}s||(l=e,i(e))}),[s,n,l]);return[l,c]}function Ct(e,t){"function"===typeof e?e(t):e&&(e.current=t)}function Et(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return a.useMemo((()=>t.every((e=>null===e||void 0===e))?null:e=>{for(const n of t)Ct(n,e)}),t)}var Tt=n(54466),Ot=n.n(Tt),Nt=n(43832),kt=n.n(Nt);const jt=16,It=2;function Pt(e,t){const[n,r]=a.useState({width:0,height:0});return a.useLayoutEffect((()=>{if(!(null===e||void 0===e?void 0:e.current))return;const t=new ResizeObserver(kt()((e=>{if(!Array.isArray(e))return;const t=e[0];if(t.borderBoxSize){const e=t.borderBoxSize[0]?t.borderBoxSize[0]:t.borderBoxSize;r({width:Ot()(e.inlineSize,It),height:Ot()(e.blockSize,It)})}else{const e=t.target;r({width:Ot()(e.offsetWidth,It),height:Ot()(e.offsetHeight,It)})}}),jt));return t.observe(e.current),()=>{t.disconnect()}}),[e,t]),n}var Dt=n(38886);function At(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Rt(e){return e instanceof At(e).Element||e instanceof Element}function Mt(e){return e instanceof At(e).HTMLElement||e instanceof HTMLElement}function Lt(e){return"undefined"!==typeof ShadowRoot&&(e instanceof At(e).ShadowRoot||e instanceof ShadowRoot)}var Ft=Math.max,zt=Math.min,Bt=Math.round;function Ut(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function Ht(){return!/^((?!chrome|android).)*safari/i.test(Ut())}function Vt(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),i=1,o=1;t&&Mt(e)&&(i=e.offsetWidth>0&&Bt(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&Bt(r.height)/e.offsetHeight||1);var a=(Rt(e)?At(e):window).visualViewport,s=!Ht()&&n,l=(r.left+(s&&a?a.offsetLeft:0))/i,c=(r.top+(s&&a?a.offsetTop:0))/o,u=r.width/i,d=r.height/o;return{width:u,height:d,top:c,right:l+u,bottom:c+d,left:l,x:l,y:c}}function Gt(e){var t=At(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Wt(e){return e?(e.nodeName||"").toLowerCase():null}function qt(e){return((Rt(e)?e.ownerDocument:e.document)||window.document).documentElement}function Zt(e){return Vt(qt(e)).left+Gt(e).scrollLeft}function Yt(e){return At(e).getComputedStyle(e)}function Kt(e){var t=Yt(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function Qt(e,t,n){void 0===n&&(n=!1);var r=Mt(t),i=Mt(t)&&function(e){var t=e.getBoundingClientRect(),n=Bt(t.width)/e.offsetWidth||1,r=Bt(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),o=qt(t),a=Vt(e,i,n),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&(("body"!==Wt(t)||Kt(o))&&(s=function(e){return e!==At(e)&&Mt(e)?{scrollLeft:(t=e).scrollLeft,scrollTop:t.scrollTop}:Gt(e);var t}(t)),Mt(t)?((l=Vt(t,!0)).x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=Zt(o))),{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Xt(e){var t=Vt(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function $t(e){return"html"===Wt(e)?e:e.assignedSlot||e.parentNode||(Lt(e)?e.host:null)||qt(e)}function Jt(e){return["html","body","#document"].indexOf(Wt(e))>=0?e.ownerDocument.body:Mt(e)&&Kt(e)?e:Jt($t(e))}function en(e,t){var n;void 0===t&&(t=[]);var r=Jt(e),i=r===(null==(n=e.ownerDocument)?void 0:n.body),o=At(r),a=i?[o].concat(o.visualViewport||[],Kt(r)?r:[]):r,s=t.concat(a);return i?s:s.concat(en($t(a)))}function tn(e){return["table","td","th"].indexOf(Wt(e))>=0}function nn(e){return Mt(e)&&"fixed"!==Yt(e).position?e.offsetParent:null}function rn(e){for(var t=At(e),n=nn(e);n&&tn(n)&&"static"===Yt(n).position;)n=nn(n);return n&&("html"===Wt(n)||"body"===Wt(n)&&"static"===Yt(n).position)?t:n||function(e){var t=/firefox/i.test(Ut());if(/Trident/i.test(Ut())&&Mt(e)&&"fixed"===Yt(e).position)return null;var n=$t(e);for(Lt(n)&&(n=n.host);Mt(n)&&["html","body"].indexOf(Wt(n))<0;){var r=Yt(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}var on="top",an="bottom",sn="right",ln="left",cn="auto",un=[on,an,sn,ln],dn="start",hn="end",pn="clippingParents",fn="viewport",mn="popper",gn="reference",vn=un.reduce((function(e,t){return e.concat([t+"-"+dn,t+"-"+hn])}),[]),yn=[].concat(un,[cn]).reduce((function(e,t){return e.concat([t,t+"-"+dn,t+"-"+hn])}),[]),bn=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function xn(e){var t=new Map,n=new Set,r=[];function i(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&i(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||i(e)})),r}function wn(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=void 0,n(e())}))}))),t}}var Sn={placement:"bottom",modifiers:[],strategy:"absolute"};function _n(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"===typeof e.getBoundingClientRect)}))}function Cn(e){void 0===e&&(e={});var t=e,n=t.defaultModifiers,r=void 0===n?[]:n,i=t.defaultOptions,o=void 0===i?Sn:i;return function(e,t,n){void 0===n&&(n=o);var i={placement:"bottom",orderedModifiers:[],options:Object.assign({},Sn,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},a=[],s=!1,l={state:i,setOptions:function(n){var s="function"===typeof n?n(i.options):n;c(),i.options=Object.assign({},o,i.options,s),i.scrollParents={reference:Rt(e)?en(e):e.contextElement?en(e.contextElement):[],popper:en(t)};var u=function(e){var t=xn(e);return bn.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}(function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}([].concat(r,i.options.modifiers)));return i.orderedModifiers=u.filter((function(e){return e.enabled})),i.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,o=e.effect;if("function"===typeof o){var s=o({state:i,name:t,instance:l,options:r}),c=function(){};a.push(s||c)}})),l.update()},forceUpdate:function(){if(!s){var e=i.elements,t=e.reference,n=e.popper;if(_n(t,n)){i.rects={reference:Qt(t,rn(n),"fixed"===i.options.strategy),popper:Xt(n)},i.reset=!1,i.placement=i.options.placement,i.orderedModifiers.forEach((function(e){return i.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r<i.orderedModifiers.length;r++)if(!0!==i.reset){var o=i.orderedModifiers[r],a=o.fn,c=o.options,u=void 0===c?{}:c,d=o.name;"function"===typeof a&&(i=a({state:i,options:u,name:d,instance:l})||i)}else i.reset=!1,r=-1}}},update:wn((function(){return new Promise((function(e){l.forceUpdate(),e(i)}))})),destroy:function(){c(),s=!0}};if(!_n(e,t))return l;function c(){a.forEach((function(e){return e()})),a=[]}return l.setOptions(n).then((function(e){!s&&n.onFirstUpdate&&n.onFirstUpdate(e)})),l}}var En={passive:!0};function Tn(e){return e.split("-")[0]}function On(e){return e.split("-")[1]}function Nn(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function kn(e){var t,n=e.reference,r=e.element,i=e.placement,o=i?Tn(i):null,a=i?On(i):null,s=n.x+n.width/2-r.width/2,l=n.y+n.height/2-r.height/2;switch(o){case on:t={x:s,y:n.y-r.height};break;case an:t={x:s,y:n.y+n.height};break;case sn:t={x:n.x+n.width,y:l};break;case ln:t={x:n.x-r.width,y:l};break;default:t={x:n.x,y:n.y}}var c=o?Nn(o):null;if(null!=c){var u="y"===c?"height":"width";switch(a){case dn:t[c]=t[c]-(n[u]/2-r[u]/2);break;case hn:t[c]=t[c]+(n[u]/2-r[u]/2)}}return t}var jn={top:"auto",right:"auto",bottom:"auto",left:"auto"};function In(e){var t,n=e.popper,r=e.popperRect,i=e.placement,o=e.variation,a=e.offsets,s=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,d=e.isFixed,h=a.x,p=void 0===h?0:h,f=a.y,m=void 0===f?0:f,g="function"===typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=a.hasOwnProperty("x"),y=a.hasOwnProperty("y"),b=ln,x=on,w=window;if(c){var S=rn(n),_="clientHeight",C="clientWidth";if(S===At(n)&&"static"!==Yt(S=qt(n)).position&&"absolute"===s&&(_="scrollHeight",C="scrollWidth"),i===on||(i===ln||i===sn)&&o===hn)x=an,m-=(d&&S===w&&w.visualViewport?w.visualViewport.height:S[_])-r.height,m*=l?1:-1;if(i===ln||(i===on||i===an)&&o===hn)b=sn,p-=(d&&S===w&&w.visualViewport?w.visualViewport.width:S[C])-r.width,p*=l?1:-1}var E,T=Object.assign({position:s},c&&jn),O=!0===u?function(e,t){var n=e.x,r=e.y,i=t.devicePixelRatio||1;return{x:Bt(n*i)/i||0,y:Bt(r*i)/i||0}}({x:p,y:m},At(n)):{x:p,y:m};return p=O.x,m=O.y,l?Object.assign({},T,((E={})[x]=y?"0":"",E[b]=v?"0":"",E.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",E)):Object.assign({},T,((t={})[x]=y?m+"px":"",t[b]=v?p+"px":"",t.transform="",t))}const Pn={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},i=t.elements[e];Mt(i)&&Wt(i)&&(Object.assign(i.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],i=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Mt(r)&&Wt(r)&&(Object.assign(r.style,o),Object.keys(i).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]};const Dn={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,i=n.offset,o=void 0===i?[0,0]:i,a=yn.reduce((function(e,n){return e[n]=function(e,t,n){var r=Tn(e),i=[ln,on].indexOf(r)>=0?-1:1,o="function"===typeof n?n(Object.assign({},t,{placement:e})):n,a=o[0],s=o[1];return a=a||0,s=(s||0)*i,[ln,sn].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,o),e}),{}),s=a[t.placement],l=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}};var An={left:"right",right:"left",bottom:"top",top:"bottom"};function Rn(e){return e.replace(/left|right|bottom|top/g,(function(e){return An[e]}))}var Mn={start:"end",end:"start"};function Ln(e){return e.replace(/start|end/g,(function(e){return Mn[e]}))}function Fn(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Lt(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function zn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Bn(e,t,n){return t===fn?zn(function(e,t){var n=At(e),r=qt(e),i=n.visualViewport,o=r.clientWidth,a=r.clientHeight,s=0,l=0;if(i){o=i.width,a=i.height;var c=Ht();(c||!c&&"fixed"===t)&&(s=i.offsetLeft,l=i.offsetTop)}return{width:o,height:a,x:s+Zt(e),y:l}}(e,n)):Rt(t)?function(e,t){var n=Vt(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):zn(function(e){var t,n=qt(e),r=Gt(e),i=null==(t=e.ownerDocument)?void 0:t.body,o=Ft(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=Ft(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-r.scrollLeft+Zt(e),l=-r.scrollTop;return"rtl"===Yt(i||n).direction&&(s+=Ft(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:l}}(qt(e)))}function Un(e,t,n,r){var i="clippingParents"===t?function(e){var t=en($t(e)),n=["absolute","fixed"].indexOf(Yt(e).position)>=0&&Mt(e)?rn(e):e;return Rt(n)?t.filter((function(e){return Rt(e)&&Fn(e,n)&&"body"!==Wt(e)})):[]}(e):[].concat(t),o=[].concat(i,[n]),a=o[0],s=o.reduce((function(t,n){var i=Bn(e,n,r);return t.top=Ft(i.top,t.top),t.right=zt(i.right,t.right),t.bottom=zt(i.bottom,t.bottom),t.left=Ft(i.left,t.left),t}),Bn(e,a,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function Hn(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Vn(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Gn(e,t){void 0===t&&(t={});var n=t,r=n.placement,i=void 0===r?e.placement:r,o=n.strategy,a=void 0===o?e.strategy:o,s=n.boundary,l=void 0===s?pn:s,c=n.rootBoundary,u=void 0===c?fn:c,d=n.elementContext,h=void 0===d?mn:d,p=n.altBoundary,f=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Hn("number"!==typeof g?g:Vn(g,un)),y=h===mn?gn:mn,b=e.rects.popper,x=e.elements[f?y:h],w=Un(Rt(x)?x:x.contextElement||qt(e.elements.popper),l,u,a),S=Vt(e.elements.reference),_=kn({reference:S,element:b,strategy:"absolute",placement:i}),C=zn(Object.assign({},b,_)),E=h===mn?C:S,T={top:w.top-E.top+v.top,bottom:E.bottom-w.bottom+v.bottom,left:w.left-E.left+v.left,right:E.right-w.right+v.right},O=e.modifiersData.offset;if(h===mn&&O){var N=O[i];Object.keys(T).forEach((function(e){var t=[sn,an].indexOf(e)>=0?1:-1,n=[on,an].indexOf(e)>=0?"y":"x";T[e]+=N[n]*t}))}return T}const Wn={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,o=void 0===i||i,a=n.altAxis,s=void 0===a||a,l=n.fallbackPlacements,c=n.padding,u=n.boundary,d=n.rootBoundary,h=n.altBoundary,p=n.flipVariations,f=void 0===p||p,m=n.allowedAutoPlacements,g=t.options.placement,v=Tn(g),y=l||(v===g||!f?[Rn(g)]:function(e){if(Tn(e)===cn)return[];var t=Rn(e);return[Ln(e),t,Ln(t)]}(g)),b=[g].concat(y).reduce((function(e,n){return e.concat(Tn(n)===cn?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,i=n.boundary,o=n.rootBoundary,a=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?yn:l,u=On(r),d=u?s?vn:vn.filter((function(e){return On(e)===u})):un,h=d.filter((function(e){return c.indexOf(e)>=0}));0===h.length&&(h=d);var p=h.reduce((function(t,n){return t[n]=Gn(e,{placement:n,boundary:i,rootBoundary:o,padding:a})[Tn(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:n,boundary:u,rootBoundary:d,padding:c,flipVariations:f,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,S=new Map,_=!0,C=b[0],E=0;E<b.length;E++){var T=b[E],O=Tn(T),N=On(T)===dn,k=[on,an].indexOf(O)>=0,j=k?"width":"height",I=Gn(t,{placement:T,boundary:u,rootBoundary:d,altBoundary:h,padding:c}),P=k?N?sn:ln:N?an:on;x[j]>w[j]&&(P=Rn(P));var D=Rn(P),A=[];if(o&&A.push(I[O]<=0),s&&A.push(I[P]<=0,I[D]<=0),A.every((function(e){return e}))){C=T,_=!1;break}S.set(T,A)}if(_)for(var R=function(e){var t=b.find((function(t){var n=S.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return C=t,"break"},M=f?3:1;M>0;M--){if("break"===R(M))break}t.placement!==C&&(t.modifiersData[r]._skip=!0,t.placement=C,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function qn(e,t,n){return Ft(e,zt(t,n))}const Zn={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,o=void 0===i||i,a=n.altAxis,s=void 0!==a&&a,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,d=n.padding,h=n.tether,p=void 0===h||h,f=n.tetherOffset,m=void 0===f?0:f,g=Gn(t,{boundary:l,rootBoundary:c,padding:d,altBoundary:u}),v=Tn(t.placement),y=On(t.placement),b=!y,x=Nn(v),w="x"===x?"y":"x",S=t.modifiersData.popperOffsets,_=t.rects.reference,C=t.rects.popper,E="function"===typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,T="number"===typeof E?{mainAxis:E,altAxis:E}:Object.assign({mainAxis:0,altAxis:0},E),O=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,N={x:0,y:0};if(S){if(o){var k,j="y"===x?on:ln,I="y"===x?an:sn,P="y"===x?"height":"width",D=S[x],A=D+g[j],R=D-g[I],M=p?-C[P]/2:0,L=y===dn?_[P]:C[P],F=y===dn?-C[P]:-_[P],z=t.elements.arrow,B=p&&z?Xt(z):{width:0,height:0},U=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},H=U[j],V=U[I],G=qn(0,_[P],B[P]),W=b?_[P]/2-M-G-H-T.mainAxis:L-G-H-T.mainAxis,q=b?-_[P]/2+M+G+V+T.mainAxis:F+G+V+T.mainAxis,Z=t.elements.arrow&&rn(t.elements.arrow),Y=Z?"y"===x?Z.clientTop||0:Z.clientLeft||0:0,K=null!=(k=null==O?void 0:O[x])?k:0,Q=D+q-K,X=qn(p?zt(A,D+W-K-Y):A,D,p?Ft(R,Q):R);S[x]=X,N[x]=X-D}if(s){var $,J="x"===x?on:ln,ee="x"===x?an:sn,te=S[w],ne="y"===w?"height":"width",re=te+g[J],ie=te-g[ee],oe=-1!==[on,ln].indexOf(v),ae=null!=($=null==O?void 0:O[w])?$:0,se=oe?re:te-_[ne]-C[ne]-ae+T.altAxis,le=oe?te+_[ne]+C[ne]-ae-T.altAxis:ie,ce=p&&oe?function(e,t,n){var r=qn(e,t,n);return r>n?n:r}(se,te,le):qn(p?se:re,te,p?le:ie);S[w]=ce,N[w]=ce-te}t.modifiersData[r]=N}},requiresIfExists:["offset"]};var Yn=function(e,t){return Hn("number"!==typeof(e="function"===typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Vn(e,un))};const Kn={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,i=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,s=Tn(n.placement),l=Nn(s),c=[ln,sn].indexOf(s)>=0?"height":"width";if(o&&a){var u=Yn(i.padding,n),d=Xt(o),h="y"===l?on:ln,p="y"===l?an:sn,f=n.rects.reference[c]+n.rects.reference[l]-a[l]-n.rects.popper[c],m=a[l]-n.rects.reference[l],g=rn(o),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,y=f/2-m/2,b=u[h],x=v-d[c]-u[p],w=v/2-d[c]/2+y,S=qn(b,w,x),_=l;n.modifiersData[r]=((t={})[_]=S,t.centerOffset=S-w,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!==typeof r||(r=t.elements.popper.querySelector(r)))&&Fn(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qn(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Xn(e){return[on,sn,an,ln].some((function(t){return e[t]>=0}))}var $n=Cn({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,o=void 0===i||i,a=r.resize,s=void 0===a||a,l=At(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach((function(e){e.addEventListener("scroll",n.update,En)})),s&&l.addEventListener("resize",n.update,En),function(){o&&c.forEach((function(e){e.removeEventListener("scroll",n.update,En)})),s&&l.removeEventListener("resize",n.update,En)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=kn({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=void 0===r||r,o=n.adaptive,a=void 0===o||o,s=n.roundOffsets,l=void 0===s||s,c={placement:Tn(t.placement),variation:On(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,In(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,In(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Pn,Dn,Wn,Zn,Kn,{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,a=Gn(t,{elementContext:"reference"}),s=Gn(t,{altBoundary:!0}),l=Qn(a,r),c=Qn(s,i,o),u=Xn(l),d=Xn(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}}]}),Jn=function(e){return e.reduce((function(e,t){var n=t[0],r=t[1];return e[n]=r,e}),{})},er="undefined"!==typeof window&&window.document&&window.document.createElement?a.useLayoutEffect:a.useEffect,tr=[],nr=function(e,t,n){void 0===n&&(n={});var r=a.useRef(null),i={onFirstUpdate:n.onFirstUpdate,placement:n.placement||"bottom",strategy:n.strategy||"absolute",modifiers:n.modifiers||tr},o=a.useState({styles:{popper:{position:i.strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),s=o[0],l=o[1],u=a.useMemo((function(){return{name:"updateState",enabled:!0,phase:"write",fn:function(e){var t=e.state,n=Object.keys(t.elements);Dt.flushSync((function(){l({styles:Jn(n.map((function(e){return[e,t.styles[e]||{}]}))),attributes:Jn(n.map((function(e){return[e,t.attributes[e]]})))})}))},requires:["computeStyles"]}}),[]),d=a.useMemo((function(){var e={onFirstUpdate:i.onFirstUpdate,placement:i.placement,strategy:i.strategy,modifiers:[].concat(i.modifiers,[u,{name:"applyStyles",enabled:!1}])};return c()(r.current,e)?r.current||e:(r.current=e,e)}),[i.onFirstUpdate,i.placement,i.strategy,i.modifiers,u]),h=a.useRef();return er((function(){h.current&&h.current.setOptions(d)}),[d]),er((function(){if(null!=e&&null!=t){var r=(n.createPopper||$n)(e,t,d);return h.current=r,function(){r.destroy(),h.current=null}}}),[e,t,n.createPopper]),{state:h.current?h.current.state:null,styles:s.styles,attributes:s.attributes,update:h.current?h.current.update:null,forceUpdate:h.current?h.current.forceUpdate:null}},rr=n(40797);function ir(){return(0,rr.T)().direction}const or=["bottom-start","bottom","bottom-end","top-start","top","top-end","right-start","right","right-end","left-start","left","left-end"],ar={name:"rtlOffsetFix",enabled:!0,phase:"main",requires:["offset"],fn(e){let{state:t}=e;var n;if(!t.placement.startsWith("top")&&!t.placement.startsWith("bottom"))return;const r=null===(n=t.modifiersData.offset)||void 0===n?void 0:n[t.placement];r&&(t.modifiersData.popperOffsets.x-=2*r.x)}};var sr=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],lr=sr.join(","),cr="undefined"===typeof Element,ur=cr?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,dr=!cr&&Element.prototype.getRootNode?function(e){var t;return null===e||void 0===e||null===(t=e.getRootNode)||void 0===t?void 0:t.call(e)}:function(e){return null===e||void 0===e?void 0:e.ownerDocument},hr=function e(t,n){var r;void 0===n&&(n=!0);var i=null===t||void 0===t||null===(r=t.getAttribute)||void 0===r?void 0:r.call(t,"inert");return""===i||"true"===i||n&&t&&e(t.parentNode)},pr=function(e,t,n){if(hr(e))return[];var r=Array.prototype.slice.apply(e.querySelectorAll(lr));return t&&ur.call(e,lr)&&r.unshift(e),r=r.filter(n)},fr=function e(t,n,r){for(var i=[],o=Array.from(t);o.length;){var a=o.shift();if(!hr(a,!1))if("SLOT"===a.tagName){var s=a.assignedElements(),l=e(s.length?s:a.children,!0,r);r.flatten?i.push.apply(i,l):i.push({scopeParent:a,candidates:l})}else{ur.call(a,lr)&&r.filter(a)&&(n||!t.includes(a))&&i.push(a);var c=a.shadowRoot||"function"===typeof r.getShadowRoot&&r.getShadowRoot(a),u=!hr(c,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(a));if(c&&u){var d=e(!0===c?a.children:c.children,!0,r);r.flatten?i.push.apply(i,d):i.push({scopeParent:a,candidates:d})}else o.unshift.apply(o,a.children)}}return i},mr=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},gr=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||function(e){var t,n=null===e||void 0===e||null===(t=e.getAttribute)||void 0===t?void 0:t.call(e,"contenteditable");return""===n||"true"===n}(e))&&!mr(e)?0:e.tabIndex},vr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},yr=function(e){return"INPUT"===e.tagName},br=function(e){return function(e){return yr(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t,n=e.form||dr(e),r=function(e){return n.querySelectorAll('input[type="radio"][name="'+e+'"]')};if("undefined"!==typeof window&&"undefined"!==typeof window.CSS&&"function"===typeof window.CSS.escape)t=r(window.CSS.escape(e.name));else try{t=r(e.name)}catch(o){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",o.message),!1}var i=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}(t,e.form);return!i||i===e}(e)},xr=function(e){var t=e.getBoundingClientRect(),n=t.width,r=t.height;return 0===n&&0===r},wr=function(e,t){var n=t.displayCheck,r=t.getShadowRoot;if("hidden"===getComputedStyle(e).visibility)return!0;var i=ur.call(e,"details>summary:first-of-type")?e.parentElement:e;if(ur.call(i,"details:not([open]) *"))return!0;if(n&&"full"!==n&&"legacy-full"!==n){if("non-zero-area"===n)return xr(e)}else{if("function"===typeof r){for(var o=e;e;){var a=e.parentElement,s=dr(e);if(a&&!a.shadowRoot&&!0===r(a))return xr(e);e=e.assignedSlot?e.assignedSlot:a||s===e.ownerDocument?a:s.host}e=o}if(function(e){var t,n,r,i,o=e&&dr(e),a=null===(t=o)||void 0===t?void 0:t.host,s=!1;if(o&&o!==e)for(s=!!(null!==(n=a)&&void 0!==n&&null!==(r=n.ownerDocument)&&void 0!==r&&r.contains(a)||null!==e&&void 0!==e&&null!==(i=e.ownerDocument)&&void 0!==i&&i.contains(e));!s&&a;){var l,c,u;s=!(null===(c=a=null===(l=o=dr(a))||void 0===l?void 0:l.host)||void 0===c||null===(u=c.ownerDocument)||void 0===u||!u.contains(a))}return s}(e))return!e.getClientRects().length;if("legacy-full"!==n)return!0}return!1},Sr=function(e,t){return!(t.disabled||hr(t)||function(e){return yr(e)&&"hidden"===e.type}(t)||wr(t,e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(t)||function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if("FIELDSET"===t.tagName&&t.disabled){for(var n=0;n<t.children.length;n++){var r=t.children.item(n);if("LEGEND"===r.tagName)return!!ur.call(t,"fieldset[disabled] *")||!r.contains(e)}return!0}t=t.parentElement}return!1}(t))},_r=function(e,t){return!(br(t)||gr(t)<0||!Sr(e,t))},Cr=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return!!(isNaN(t)||t>=0)},Er=function e(t){var n=[],r=[];return t.forEach((function(t,i){var o=!!t.scopeParent,a=o?t.scopeParent:t,s=function(e,t){var n=gr(e);return n<0&&t&&!mr(e)?0:n}(a,o),l=o?e(t.candidates):a;0===s?o?n.push.apply(n,l):n.push(a):r.push({documentOrder:i,tabIndex:s,item:t,isScope:o,content:l})})),r.sort(vr).reduce((function(e,t){return t.isScope?e.push.apply(e,t.content):e.push(t.content),e}),[]).concat(n)},Tr=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==ur.call(e,lr)&&_r(t,e)},Or=sr.concat("iframe").join(","),Nr=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==ur.call(e,Or)&&Sr(t,e)};function kr(e){let{enabled:t,restoreFocusRef:n,focusTrapped:r}=e;const i=a.useRef(null),o=a.useRef(null),s=a.useRef(null);return a.useEffect((()=>{if(!t)return;const e=e=>{const t=e.target;!r&&t instanceof HTMLElement&&Tr(t)&&(s.current=t)},n=e=>{const t=e.target;t instanceof HTMLElement&&Tr(t)?s.current=t:s.current=null};return window.addEventListener("focusin",e),window.addEventListener("mousedown",n),window.addEventListener("touchstart",n),()=>{window.removeEventListener("focusin",e),window.removeEventListener("mousedown",n),window.removeEventListener("touchstart",n)}}),[t,r]),a.useEffect((()=>{var e;i.current=t&&null!==(e=(null===n||void 0===n?void 0:n.current)||o.current)&&void 0!==e?e:null})),a.useEffect((()=>{if(t)return()=>{let e=i.current;const t=s.current;t&&document.contains(t)&&Tr(t)&&(e=t),e&&"function"===typeof e.focus&&document.contains(e)&&Nr(e)&&(e!==document.activeElement&&setTimeout((()=>{null===e||void 0===e||e.focus()}),0),o.current=null,s.current=null)}}),[t]),{onFocus:e=>{var r;t&&null===o.current&&(o.current=e.relatedTarget,s.current=o.current,i.current=null!==(r=(null===n||void 0===n?void 0:n.current)||o.current)&&void 0!==r?r:null)}}}var jr=n(57107);function Ir(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ir(Object(n),!0).forEach((function(t){Dr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ir(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Dr(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ar=function(e,t){if(e.length>0){var n=e[e.length-1];n!==t&&n.pause()}var r=e.indexOf(t);-1===r||e.splice(r,1),e.push(t)},Rr=function(e,t){var n=e.indexOf(t);-1!==n&&e.splice(n,1),e.length>0&&e[e.length-1].unpause()},Mr=function(e){return"Tab"===(null===e||void 0===e?void 0:e.key)||9===(null===e||void 0===e?void 0:e.keyCode)},Lr=function(e){return Mr(e)&&!e.shiftKey},Fr=function(e){return Mr(e)&&e.shiftKey},zr=function(e){return setTimeout(e,0)},Br=function(e,t){var n=-1;return e.every((function(e,r){return!t(e)||(n=r,!1)})),n},Ur=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return"function"===typeof e?e.apply(void 0,n):e},Hr=function(e){return e.target.shadowRoot&&"function"===typeof e.composedPath?e.composedPath()[0]:e.target},Vr=[],Gr=function(e,t){var n,r=(null===t||void 0===t?void 0:t.document)||document,i=(null===t||void 0===t?void 0:t.trapStack)||Vr,o=Pr({returnFocusOnDeactivate:!0,escapeDeactivates:!0,delayInitialFocus:!0,isKeyForward:Lr,isKeyBackward:Fr},t),a={containers:[],containerGroups:[],tabbableGroups:[],nodeFocusedBeforeActivation:null,mostRecentlyFocusedNode:null,active:!1,paused:!1,delayInitialFocusTimer:void 0,recentNavEvent:void 0},s=function(e,t,n){return e&&void 0!==e[t]?e[t]:o[n||t]},l=function(e,t){var n="function"===typeof(null===t||void 0===t?void 0:t.composedPath)?t.composedPath():void 0;return a.containerGroups.findIndex((function(t){var r=t.container,i=t.tabbableNodes;return r.contains(e)||(null===n||void 0===n?void 0:n.includes(r))||i.find((function(t){return t===e}))}))},c=function(e){var t=o[e];if("function"===typeof t){for(var n=arguments.length,i=new Array(n>1?n-1:0),a=1;a<n;a++)i[a-1]=arguments[a];t=t.apply(void 0,i)}if(!0===t&&(t=void 0),!t){if(void 0===t||!1===t)return t;throw new Error("`".concat(e,"` was specified but was not a node, or did not return a node"))}var s=t;if("string"===typeof t&&!(s=r.querySelector(t)))throw new Error("`".concat(e,"` as selector refers to no known node"));return s},u=function(){var e=c("initialFocus");if(!1===e)return!1;if(void 0===e||!Nr(e,o.tabbableOptions))if(l(r.activeElement)>=0)e=r.activeElement;else{var t=a.tabbableGroups[0];e=t&&t.firstTabbableNode||c("fallbackFocus")}if(!e)throw new Error("Your focus-trap needs to have at least one focusable element");return e},d=function(){if(a.containerGroups=a.containers.map((function(e){var t=function(e,t){var n;return n=(t=t||{}).getShadowRoot?fr([e],t.includeContainer,{filter:_r.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:Cr}):pr(e,t.includeContainer,_r.bind(null,t)),Er(n)}(e,o.tabbableOptions),n=function(e,t){return(t=t||{}).getShadowRoot?fr([e],t.includeContainer,{filter:Sr.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):pr(e,t.includeContainer,Sr.bind(null,t))}(e,o.tabbableOptions),r=t.length>0?t[0]:void 0,i=t.length>0?t[t.length-1]:void 0,a=n.find((function(e){return Tr(e)})),s=n.slice().reverse().find((function(e){return Tr(e)})),l=!!t.find((function(e){return gr(e)>0}));return{container:e,tabbableNodes:t,focusableNodes:n,posTabIndexesFound:l,firstTabbableNode:r,lastTabbableNode:i,firstDomTabbableNode:a,lastDomTabbableNode:s,nextTabbableNode:function(e){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=t.indexOf(e);return i<0?r?n.slice(n.indexOf(e)+1).find((function(e){return Tr(e)})):n.slice(0,n.indexOf(e)).reverse().find((function(e){return Tr(e)})):t[i+(r?1:-1)]}}})),a.tabbableGroups=a.containerGroups.filter((function(e){return e.tabbableNodes.length>0})),a.tabbableGroups.length<=0&&!c("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(a.containerGroups.find((function(e){return e.posTabIndexesFound}))&&a.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},h=function e(t){var n=t.activeElement;if(n)return n.shadowRoot&&null!==n.shadowRoot.activeElement?e(n.shadowRoot):n},p=function e(t){!1!==t&&t!==h(document)&&(t&&t.focus?(t.focus({preventScroll:!!o.preventScroll}),a.mostRecentlyFocusedNode=t,function(e){return e.tagName&&"input"===e.tagName.toLowerCase()&&"function"===typeof e.select}(t)&&t.select()):e(u()))},f=function(e){var t=c("setReturnFocus",e);return t||!1!==t&&e},m=function(e){var t=e.target,n=e.event,r=e.isBackward,i=void 0!==r&&r;t=t||Hr(n),d();var s=null;if(a.tabbableGroups.length>0){var u=l(t,n),h=u>=0?a.containerGroups[u]:void 0;if(u<0)s=i?a.tabbableGroups[a.tabbableGroups.length-1].lastTabbableNode:a.tabbableGroups[0].firstTabbableNode;else if(i){var p=Br(a.tabbableGroups,(function(e){var n=e.firstTabbableNode;return t===n}));if(p<0&&(h.container===t||Nr(t,o.tabbableOptions)&&!Tr(t,o.tabbableOptions)&&!h.nextTabbableNode(t,!1))&&(p=u),p>=0){var f=0===p?a.tabbableGroups.length-1:p-1,m=a.tabbableGroups[f];s=gr(t)>=0?m.lastTabbableNode:m.lastDomTabbableNode}else Mr(n)||(s=h.nextTabbableNode(t,!1))}else{var g=Br(a.tabbableGroups,(function(e){var n=e.lastTabbableNode;return t===n}));if(g<0&&(h.container===t||Nr(t,o.tabbableOptions)&&!Tr(t,o.tabbableOptions)&&!h.nextTabbableNode(t))&&(g=u),g>=0){var v=g===a.tabbableGroups.length-1?0:g+1,y=a.tabbableGroups[v];s=gr(t)>=0?y.firstTabbableNode:y.firstDomTabbableNode}else Mr(n)||(s=h.nextTabbableNode(t))}}else s=c("fallbackFocus");return s},g=function(e){var t=Hr(e);l(t,e)>=0||(Ur(o.clickOutsideDeactivates,e)?n.deactivate({returnFocus:o.returnFocusOnDeactivate}):Ur(o.allowOutsideClick,e)||e.preventDefault())},v=function(e){var t=Hr(e),n=l(t,e)>=0;if(n||t instanceof Document)n&&(a.mostRecentlyFocusedNode=t);else{var r;e.stopImmediatePropagation();var i=!0;if(a.mostRecentlyFocusedNode)if(gr(a.mostRecentlyFocusedNode)>0){var s=l(a.mostRecentlyFocusedNode),c=a.containerGroups[s].tabbableNodes;if(c.length>0){var d=c.findIndex((function(e){return e===a.mostRecentlyFocusedNode}));d>=0&&(o.isKeyForward(a.recentNavEvent)?d+1<c.length&&(r=c[d+1],i=!1):d-1>=0&&(r=c[d-1],i=!1))}}else a.containerGroups.some((function(e){return e.tabbableNodes.some((function(e){return gr(e)>0}))}))||(i=!1);else i=!1;i&&(r=m({target:a.mostRecentlyFocusedNode,isBackward:o.isKeyBackward(a.recentNavEvent)})),p(r||(a.mostRecentlyFocusedNode||u()))}a.recentNavEvent=void 0},y=function(e){if(function(e){return"Escape"===(null===e||void 0===e?void 0:e.key)||"Esc"===(null===e||void 0===e?void 0:e.key)||27===(null===e||void 0===e?void 0:e.keyCode)}(e)&&!1!==Ur(o.escapeDeactivates,e))return e.preventDefault(),void n.deactivate();(o.isKeyForward(e)||o.isKeyBackward(e))&&function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];a.recentNavEvent=e;var n=m({event:e,isBackward:t});n&&(Mr(e)&&e.preventDefault(),p(n))}(e,o.isKeyBackward(e))},b=function(e){var t=Hr(e);l(t,e)>=0||Ur(o.clickOutsideDeactivates,e)||Ur(o.allowOutsideClick,e)||(e.preventDefault(),e.stopImmediatePropagation())},x=function(){if(a.active)return Ar(i,n),a.delayInitialFocusTimer=o.delayInitialFocus?zr((function(){p(u())})):p(u()),r.addEventListener("focusin",v,!0),r.addEventListener("mousedown",g,{capture:!0,passive:!1}),r.addEventListener("touchstart",g,{capture:!0,passive:!1}),r.addEventListener("click",b,{capture:!0,passive:!1}),r.addEventListener("keydown",y,{capture:!0,passive:!1}),n},w=function(){if(a.active)return r.removeEventListener("focusin",v,!0),r.removeEventListener("mousedown",g,!0),r.removeEventListener("touchstart",g,!0),r.removeEventListener("click",b,!0),r.removeEventListener("keydown",y,!0),n},S="undefined"!==typeof window&&"MutationObserver"in window?new MutationObserver((function(e){e.some((function(e){return Array.from(e.removedNodes).some((function(e){return e===a.mostRecentlyFocusedNode}))}))&&p(u())})):void 0,_=function(){S&&(S.disconnect(),a.active&&!a.paused&&a.containers.map((function(e){S.observe(e,{subtree:!0,childList:!0})})))};return(n={get active(){return a.active},get paused(){return a.paused},activate:function(e){if(a.active)return this;var t=s(e,"onActivate"),n=s(e,"onPostActivate"),i=s(e,"checkCanFocusTrap");i||d(),a.active=!0,a.paused=!1,a.nodeFocusedBeforeActivation=r.activeElement,null===t||void 0===t||t();var o=function(){i&&d(),x(),_(),null===n||void 0===n||n()};return i?(i(a.containers.concat()).then(o,o),this):(o(),this)},deactivate:function(e){if(!a.active)return this;var t=Pr({onDeactivate:o.onDeactivate,onPostDeactivate:o.onPostDeactivate,checkCanReturnFocus:o.checkCanReturnFocus},e);clearTimeout(a.delayInitialFocusTimer),a.delayInitialFocusTimer=void 0,w(),a.active=!1,a.paused=!1,_(),Rr(i,n);var r=s(t,"onDeactivate"),l=s(t,"onPostDeactivate"),c=s(t,"checkCanReturnFocus"),u=s(t,"returnFocus","returnFocusOnDeactivate");null===r||void 0===r||r();var d=function(){zr((function(){u&&p(f(a.nodeFocusedBeforeActivation)),null===l||void 0===l||l()}))};return u&&c?(c(f(a.nodeFocusedBeforeActivation)).then(d,d),this):(d(),this)},pause:function(e){if(a.paused||!a.active)return this;var t=s(e,"onPause"),n=s(e,"onPostPause");return a.paused=!0,null===t||void 0===t||t(),w(),_(),null===n||void 0===n||n(),this},unpause:function(e){if(!a.paused||!a.active)return this;var t=s(e,"onUnpause"),n=s(e,"onPostUnpause");return a.paused=!1,null===t||void 0===t||t(),d(),x(),_(),null===n||void 0===n||n(),this},updateContainerElements:function(e){var t=[].concat(e).filter(Boolean);return a.containers=t.map((function(e){return"string"===typeof e?r.querySelector(e):e})),a.active&&d(),_(),this}}).updateContainerElements(e),n};const Wr=a.createContext(void 0);function qr(e){let{children:t,enabled:n=!0,disableAutoFocus:r,autoFocus:i=!0}=e;const o=a.useRef(null),s=a.useRef(!r&&i);a.useEffect((()=>{s.current=!r&&i}));const l=a.useRef(),c=a.useRef({}),u=a.useCallback((()=>{var e;null===(e=l.current)||void 0===e||e.updateContainerElements([o.current,...Object.values(c.current)])}),[]),d=a.useMemo((()=>({addNode(e,t){var n;c.current[e]===t||(null===(n=o.current)||void 0===n?void 0:n.contains(t))||(c.current[e]=t,u())},removeNode(e){c.current[e]&&(delete c.current[e],u())}})),[u]),h=a.useCallback((e=>{var t;n&&e?(o.current=e,l.current||(l.current=Gr([],{initialFocus:()=>s.current&&function(e){if(!(document.activeElement instanceof HTMLElement)||!e.contains(document.activeElement))return e.hasAttribute("tabIndex")||e.setAttribute("tabIndex","-1"),e;return document.activeElement}(e),fallbackFocus:()=>e,returnFocusOnDeactivate:!1,escapeDeactivates:!1,clickOutsideDeactivates:!1,allowOutsideClick:!0})),u(),l.current.activate()):(null===(t=l.current)||void 0===t||t.deactivate(),o.current=null)}),[n,u]),p=a.Children.only(t);if(!a.isValidElement(p))throw new Error("Children must contain only one valid element");const f=Et(h,p.ref);return a.createElement(Wr.Provider,{value:d},a.cloneElement(p,{ref:f}))}var Zr=n(59926),Yr=n(93404);const Kr=new class{constructor(){this.stack=[],this.handleDocumentKeyDown=e=>{var t,n,r;if(e.code===Zr.V.ESCAPE){const r=this.getTopLayer();r.disableEscapeKeyDown||(null===(t=r.onEscapeKeyDown)||void 0===t||t.call(r,e),null===(n=r.onClose)||void 0===n||n.call(r,e,"escapeKeyDown"))}if("Enter"===e.code){const t=this.getTopLayer();null===(r=t.onEnterKeyDown)||void 0===r||r.call(t,e)}},this.handleDocumentClick=e=>{var t,n;if(this.isToastClick(e))return;let r,i=null;if(this.mouseDownLayerTarget){if(r=this.mouseDownLayerTarget.layer,i=this.mouseDownLayerTarget.target,this.mouseDownLayerTarget=void 0,!this.stack.includes(r))return}else r=this.getTopLayer();!r.disableOutsideClick&&this.isOutsideClick(r,e,i)&&(null===(t=r.onOutsideClick)||void 0===t||t.call(r,e),null===(n=r.onClose)||void 0===n||n.call(r,e,"outsideClick"))},this.handleDocumentMouseDown=e=>{const t=this.getTopLayer();t&&(this.mouseDownLayerTarget={layer:t,target:e.target})}}add(e){this.stack.push(e),1===this.stack.length&&this.addListeners(),this.notifyLayersChange()}remove(e){const t=this.stack.indexOf(e);this.stack.splice(t,1),0===this.stack.length&&this.removeListeners(),this.notifyLayersChange()}getLayersCount(){return this.stack.length}getLayers(){return this.stack.map((e=>{let{type:t}=e;return{type:t}}))}addListeners(){document.addEventListener("keydown",this.handleDocumentKeyDown),document.addEventListener("click",this.handleDocumentClick,!0),document.addEventListener("mousedown",this.handleDocumentMouseDown,!0)}removeListeners(){document.removeEventListener("keydown",this.handleDocumentKeyDown),document.removeEventListener("click",this.handleDocumentClick,!0),document.removeEventListener("mousedown",this.handleDocumentMouseDown,!0)}notifyLayersChange(){Yr.P.publish({componentId:"LayerManager",eventId:"layerschange",meta:{layersCount:this.getLayersCount(),layers:this.getLayers()}})}getTopLayer(){return this.stack[this.stack.length-1]}isOutsideClick(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const r=e.contentRefs||[],{target:i}=t,o="function"===typeof t.composedPath?t.composedPath():[];if(r.length>0){return!r.some((e=>{var t,r,a,s;return(null===(r=null===(t=null===e||void 0===e?void 0:e.current)||void 0===t?void 0:t.contains)||void 0===r?void 0:r.call(t,i))||(null===(s=null===(a=null===e||void 0===e?void 0:e.current)||void 0===a?void 0:a.contains)||void 0===s?void 0:s.call(a,n))||o.includes(null===e||void 0===e?void 0:e.current)}))}return!1}isToastClick(e){return("function"===typeof e.composedPath?e.composedPath():[]).some((e=>{var t;return Boolean(null===(t=null===e||void 0===e?void 0:e.dataset)||void 0===t?void 0:t.toast)}))}};function Qr(e){let{open:t,disableEscapeKeyDown:n,disableOutsideClick:r,onEscapeKeyDown:i,onEnterKeyDown:o,onOutsideClick:s,onClose:l,contentRefs:c,enabled:u=!0,type:d}=e;const h=a.useRef({disableEscapeKeyDown:n,disableOutsideClick:r,onEscapeKeyDown:i,onEnterKeyDown:o,onOutsideClick:s,onClose:l,contentRefs:c,type:d});a.useEffect((()=>{Object.assign(h.current,{disableEscapeKeyDown:n,disableOutsideClick:r,onEscapeKeyDown:i,onEnterKeyDown:o,onOutsideClick:s,onClose:l,contentRefs:c,enabled:u})}),[n,r,i,o,s,l,c,u]),a.useEffect((()=>{if(t&&u){const e=h.current;return Kr.add(e),()=>{Kr.remove(e)}}}),[t,u])}const Xr=(0,le.Ge)("popup");function $r(e){let{styles:t,attributes:n,setArrowRef:r}=e;return a.createElement("div",Object.assign({"data-popper-arrow":!0,ref:r,className:Xr("arrow"),style:t},n),a.createElement("div",{className:Xr("arrow-content")},a.createElement("div",{className:Xr("arrow-circle-wrapper")},a.createElement("div",{className:Xr("arrow-circle",{left:!0})})),a.createElement("div",{className:Xr("arrow-circle-wrapper")},a.createElement("div",{className:Xr("arrow-circle",{right:!0})}))))}const Jr=(0,le.Ge)("popup"),ei=8;function ti(e){let{keepMounted:t=!1,hasArrow:n=!1,offset:r=[0,4],open:i,placement:o,anchorRef:s,disableEscapeKeyDown:l,disableOutsideClick:c,disableLayer:u,style:d,className:h,contentClassName:p,modifiers:f=[],children:m,onEscapeKeyDown:g,onOutsideClick:v,onClose:y,onClick:b,onMouseEnter:x,onMouseLeave:w,onFocus:S,onBlur:_,onTransitionEnter:C,onTransitionEntered:E,onTransitionExit:T,onTransitionExited:O,disablePortal:N,container:k,strategy:j,qa:I,restoreFocus:P,restoreFocusRef:D,"aria-label":A,"aria-labelledby":R,role:M,id:L,focusTrap:F=!1,autoFocus:z=!1}=e;const B=a.useRef(null);Qr({open:i,disableEscapeKeyDown:l,disableOutsideClick:c,onEscapeKeyDown:g,onOutsideClick:v,onClose:y,contentRefs:[s,B],enabled:!u,type:"popup"});const{attributes:U,styles:H,setPopperRef:V,setArrowRef:G}=function(e){let{anchorRef:t,placement:n=or,offset:r,modifiers:i=[],strategy:o,altBoundary:s}=e;const[l,c]=a.useState(null),[u,d]=a.useState(null),h=ir(),p=a.useMemo((()=>{let e=Array.isArray(n)?n:[n];return"rtl"===h&&(e=e.map((e=>e.replace(/(top|bottom)-(start|end)/g,((e,t,n)=>"start"===n?t+"-end":"end"===n?t+"-start":e))))),e}),[n,h]),{attributes:f,styles:m}=nr(null===t||void 0===t?void 0:t.current,l,{strategy:o,modifiers:[{name:"arrow",options:{element:u}},{name:"offset",options:{offset:r,altBoundary:s}},{name:"flip",options:{fallbackPlacements:p.slice(1),altBoundary:s}},..."rtl"===h?[ar]:[],...i],placement:p[0]});return{attributes:f,styles:m,setPopperRef:c,setArrowRef:d}}({anchorRef:s,placement:o,offset:n?[r[0],r[1]+ei]:r,strategy:j,altBoundary:N,modifiers:[{name:"arrow",options:{enabled:n,padding:4}},{name:"preventOverflow",options:{padding:1,altBoundary:N}},...f]}),W=Et(V,B,function(){const e=a.useContext(Wr),t=ue();return a.useMemo((()=>{if(e)return n=>{n?e.addNode(t,n):e.removeNode(t)}}),[e,t])}()),q=kr({enabled:Boolean(P&&i),restoreFocusRef:D});return a.createElement(me.Z,{nodeRef:B,in:i,addEndListener:e=>{var t;return null===(t=B.current)||void 0===t?void 0:t.addEventListener("animationend",e)},classNames:(0,ge.Y)(Jr),mountOnEnter:!t,unmountOnExit:!t,appear:!0,onEnter:()=>{null===C||void 0===C||C()},onEntered:()=>{null===E||void 0===E||E()},onExit:()=>{null===T||void 0===T||T()},onExited:()=>{null===O||void 0===O||O()}},a.createElement(jr.h,{container:k,disablePortal:N},a.createElement("div",Object.assign({ref:W,style:H.popper},U.popper,q,{className:Jr({open:i},h),"data-qa":I,id:L,role:M,"aria-label":A,"aria-labelledby":R}),a.createElement(qr,{enabled:F&&i,disableAutoFocus:!z},a.createElement("div",{onClick:b,onMouseEnter:x,onMouseLeave:w,onFocus:S,onBlur:_,className:Jr("content",p),style:d,tabIndex:-1},n&&a.createElement($r,{styles:H.arrow,attributes:U.arrow,setArrowRef:G}),m)))))}const ni=(0,le.Ge)("popover"),ri=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];switch(e){case"special":return t?"normal-contrast":"flat-contrast";case"announcement":return t?"normal-contrast":"outlined";default:return t?"normal":"flat"}},ii=e=>{let{theme:t,tooltipActionButton:n,tooltipCancelButton:r}=e;return n||r?a.createElement("div",{className:ni("tooltip-buttons")},n&&a.createElement(Ie.z,{view:ri(t,!0),width:"max",onClick:n.onClick,className:ni("tooltip-button")},n.text),r&&a.createElement(Ie.z,{view:ri(t,!1),width:"max",onClick:r.onClick,className:ni("tooltip-button")},r.text)):null},oi=e=>{let{secondary:t,htmlContent:n,content:r,className:i}=e;return n||r?n?a.createElement("div",{className:ni("tooltip-content",{secondary:t},i),dangerouslySetInnerHTML:{__html:n}}):r?a.createElement("div",{className:ni("tooltip-content",{secondary:t},i)},r):null:null},ai=(0,le.Ge)("link"),si=a.forwardRef((function(e,t){let{view:n="normal",visitable:r,href:i,target:o,rel:s,title:l,children:c,extraProps:u,onClick:d,onFocus:h,onBlur:p,id:f,style:m,className:g,qa:v}=e;const y={title:l,onClick:d,onClickCapture:a.useCallback((e=>{Yr.P.publish({componentId:"Link",eventId:"click",domEvent:e})}),[]),onFocus:h,onBlur:p,id:f,style:m,className:ai({view:n,visitable:r},g),"data-qa":v},b="_blank"!==o||s?s:"noopener noreferrer";return a.createElement("a",Object.assign({},u,y,{ref:t,href:i,target:o,rel:b}),c)})),li=e=>{let{links:t}=e;return 0===t.length?null:a.createElement("div",{className:ni("tooltip-links")},t.map(((e,t)=>{const{text:n,href:r,target:i="_blank",onClick:o}=e;return a.createElement(a.Fragment,{key:"link-".concat(t)},a.createElement(si,{href:r,target:i,onClick:o,className:ni("tooltip-link")},n),a.createElement("br",null))})))};var ci=n(68512);const ui=e=>{let{open:t,openOnHover:n,disabled:r,className:i,openTooltip:o,closeTooltip:s,closedManually:l,onClick:c,children:u}=e;const d=async e=>{if(r||t&&n)return;if(!(!c||await c(e)))return;t?(s(),l.current=!0):(o(),l.current=!1)},{onKeyDown:h}=(0,ci.b)(d);return"function"===typeof u?a.createElement(a.Fragment,null,u({onClick:d,onKeyDown:h,open:t})):a.createElement("div",{className:i,onClick:d,onKeyDown:c?h:void 0},u)};var di;!function(e){e.Immediate="immediate",e.Delayed="delayed",e.DelayedClosing="delayedClosing"}(di||(di={}));const hi={[di.Immediate]:[0,0],[di.Delayed]:[300,300],[di.DelayedClosing]:[0,300]},pi=e=>{let{initialOpen:t,disabled:n,autoclosable:r,onOpenChange:i,delayOpening:o,delayClosing:s,behavior:l,shouldBeOpen:c}=e;const u=a.useRef(null),d=a.useRef(null),[h,p]=a.useState(t),f=a.useCallback((()=>{u.current&&(clearTimeout(u.current),u.current=null)}),[]),m=a.useCallback((()=>{d.current&&(clearTimeout(d.current),d.current=null)}),[]);a.useEffect((()=>()=>{f(),m()}),[m,f]);const g=a.useCallback((e=>{p(e),c.current=e,null===i||void 0===i||i(e)}),[i,c]),v=a.useCallback((()=>{f(),g(!0)}),[g,f]),y=a.useCallback((()=>{m(),g(!1)}),[g,m]);a.useEffect((()=>{n&&y()}),[n,y]),((e,t)=>{const n=a.useRef(!0);a.useEffect((()=>{n.current?n.current=!1:e()}),t)})((()=>{r&&!c.current&&y()}),[r,y,c]);const[b,x]=hi[l],w=a.useCallback((()=>{u.current=setTimeout((()=>{u.current=null,v()}),null!==o&&void 0!==o?o:b)}),[b,o,v]),S=a.useCallback((()=>{d.current=setTimeout((()=>{d.current=null,y()}),null!==s&&void 0!==s?s:x)}),[y,x,s]);return{isOpen:h,closingTimeout:d,openTooltip:v,openTooltipDelayed:w,unsetOpeningTimeout:f,closeTooltip:y,closeTooltipDelayed:S,unsetClosingTimeout:m}},fi=a.forwardRef((function(e,t){let{initialOpen:n=!1,disabled:r=!1,autoclosable:i=!0,openOnHover:o=!0,delayOpening:s,delayClosing:l,behavior:c=di.Delayed,placement:u,offset:d={},tooltipOffset:h,tooltipClassName:p,tooltipContentClassName:f,theme:m="info",size:g="s",hasArrow:v=!0,hasClose:y=!1,className:b,children:x,title:w,content:S,htmlContent:_,contentClassName:C,links:E,forceLinksAppearance:T=!1,tooltipActionButton:O,tooltipCancelButton:N,onOpenChange:k,onCloseClick:j,onClick:I,anchorRef:P,strategy:D,qa:A,disablePortal:R=!1,tooltipId:M,focusTrap:L,autoFocus:F,restoreFocusRef:z,modifiers:B}=e;const U=ir(),H=a.useRef(null),V=a.useRef(!1),G=a.useRef(n),{isOpen:W,closingTimeout:q,openTooltip:Z,openTooltipDelayed:Y,unsetOpeningTimeout:K,closeTooltip:Q,closeTooltipDelayed:X,unsetClosingTimeout:$}=pi({initialOpen:n,disabled:r,autoclosable:i,onOpenChange:k,delayOpening:s,delayClosing:l,behavior:c,shouldBeOpen:G}),J=a.useMemo((()=>u||("rtl"===U?["left","bottom"]:["right","bottom"])),[U,u]);a.useImperativeHandle(t,(()=>({openTooltip:Z,closeTooltip:Q})),[Z,Q]);const ee=Boolean(w),te=a.createElement(ti,{id:M,role:o?"tooltip":"dialog",strategy:D,anchorRef:P||H,className:ni("tooltip",{theme:m,size:g,"with-close":y,"force-links-appearance":T},p),contentClassName:ni("tooltip-popup-content",f),open:W,placement:J,hasArrow:v,offset:h,onClose:P?void 0:Q,qa:A?"".concat(A,"-tooltip"):"",disablePortal:R,focusTrap:L,autoFocus:F,restoreFocus:!0,restoreFocusRef:z||H,modifiers:B},a.createElement(a.Fragment,null,w&&a.createElement("h3",{className:ni("tooltip-title")},w),a.createElement(oi,{secondary:!!ee&&"announcement"!==m,content:S,htmlContent:_,className:C}),E&&a.createElement(li,{links:E}),a.createElement(ii,{theme:m,tooltipActionButton:O,tooltipCancelButton:N}),y&&a.createElement("div",{className:ni("tooltip-close")},a.createElement(Ie.z,{size:"s",view:"flat-secondary",onClick:async e=>{Q(),null===j||void 0===j||j(e)},extraProps:{"aria-label":"Close"}},a.createElement(we.J,{data:tt.Z,size:16})))));if(P)return te;const ne=()=>{$(),W||r||V.current?G.current=!0:Y()},re=()=>{!i||V.current||q.current?G.current=!1:(K(),X()),V.current=!1};return!d||"number"!==typeof d.top&&"number"!==typeof d.left||(0,Ce.O)('[Popover] Physical names (top, left) of "offset" property are deprecated. Use logical names (block, inline) instead.'),a.createElement("div",{ref:H,className:ni({disabled:r},b),onMouseEnter:o?ne:void 0,onMouseLeave:o?re:void 0,onFocus:o?ne:void 0,onBlur:o?re:void 0,style:{top:d.top,left:d.left,insetBlockStart:d.block,insetInlineStart:d.inline},"data-qa":A},a.createElement(ui,{closeTooltip:Q,openTooltip:Z,open:W,openOnHover:o,className:ni("handler"),disabled:r,onClick:I,closedManually:V},x),te)}));fi.displayName="Popover";var mi=n(54973);const gi=JSON.parse('{"label_clear-button":"Clear"}'),vi=JSON.parse('{"label_clear-button":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c"}'),yi=(0,mi.e)({en:gi,ru:vi},"".concat(le.A7,"clear-button")),bi=(0,le.Ge)("clear-button"),xi=e=>{switch(e){case"s":return"xs";case"m":return"s";case"l":return"m";case"xl":return"l";default:throw new Error('Unknown text input size "'.concat(e,'"'))}},wi=e=>{const{size:t,className:n,onClick:r}=e;return a.createElement(Ie.z,{size:t,className:bi(null,n),onClick:r,extraProps:{onMouseDown:e=>{e.preventDefault()},"aria-label":yi("label_clear-button")}},a.createElement(we.J,{data:tt.Z,size:16}))},Si=e=>"boolean"===typeof e?e?"on":"off":e,_i=e=>{const{error:t,errorMessage:n,errorPlacement:r,validationState:i}=e;let o,a;return"string"===typeof t&&(o=t),n&&(o=n),("invalid"===i||Boolean(t))&&(a="invalid"),{errorMessage:o,errorPlacement:r,validationState:a}},Ci=(0,le.Ge)("outer-additional-content"),Ei=e=>{let{errorMessage:t,note:n,noteId:r,errorMessageId:i}=e;return t||n?a.createElement("div",{className:Ci()},t&&a.createElement("div",{className:Ci("error"),id:i,"data-qa":"control-error-message-qa"},t),n&&a.createElement("div",{className:Ci("note"),id:r},n)):null},Ti=(0,le.Ge)("text-input"),Oi=a.forwardRef((function(e,t){let{placement:n,children:r,onClick:i}=e;return r?a.createElement("div",{ref:t,className:Ti("additional-content",{placement:n}),onClick:i},r):null})),Ni=(0,le.Ge)("text-input");function ki(e){const{controlProps:t,controlRef:n,type:r,name:i,id:o,tabIndex:s,autoComplete:l,placeholder:c,value:u,defaultValue:d,autoFocus:h,disabled:p,onChange:f,onFocus:m,onBlur:g,onKeyDown:v,onKeyUp:y,onKeyPress:b}=e;return a.createElement("input",Object.assign({},t,{ref:n,className:Ni("control",{type:"input"},t.className),type:r,name:i,id:o,tabIndex:s,placeholder:c,value:u,defaultValue:d,autoFocus:h,autoComplete:l,onChange:f,onFocus:m,onBlur:g,onKeyDown:v,onKeyUp:y,onKeyPress:b,disabled:null!==p&&void 0!==p?p:t.disabled}))}const ji=(0,le.Ge)("text-input"),Ii=a.forwardRef((function(e,t){const{view:n="normal",size:r="m",pin:i="round-round",name:o,value:s,defaultValue:l,label:c,disabled:u=!1,hasClear:d=!1,error:h,errorMessage:p,errorPlacement:f="outside",validationState:m,autoComplete:g,id:v,tabIndex:y,style:b,className:x,qa:w,controlProps:S,leftContent:_,rightContent:C,startContent:E=_,endContent:T=C,note:O,onUpdate:N,onChange:k}=e,{errorMessage:j,errorPlacement:I,validationState:P}=_i({error:h,errorMessage:p,errorPlacement:f,validationState:m}),[D,A]=_t(s,null!==l&&void 0!==l?l:"",N),R=a.useRef(null),M=Et(e.controlRef,R),L=a.useRef(null),F=a.useRef(null),z=(e=>"invalid"===e?"error":void 0)(P),B=Boolean(c),U="invalid"===P&&Boolean(j)&&"outside"===I,H="invalid"===P&&Boolean(j)&&"inside"===I,V=Boolean(d&&!u&&D),G=Boolean(E),W=Boolean(T),q=B&&!v&&!o&&"undefined"===typeof g,Z=ue(),Y=B?v||Z:v,K=Pt(B?L:null,r),Q=Pt(G?F:null,r),X=ue(),$=ue(),J=[null===S||void 0===S?void 0:S["aria-describedby"],O?$:void 0,U?X:void 0].filter(Boolean).join(" "),ee=Object.assign(Object.assign({},S),{style:Object.assign(Object.assign({},null===S||void 0===S?void 0:S.style),B&&K.width?{paddingInlineStart:"".concat(K.width,"px")}:{}),"aria-invalid":"invalid"===P||void 0,"aria-describedby":J||void 0}),te={id:Y,tabIndex:y,name:o,onChange(e){A(e.target.value),k&&k(e)},autoComplete:q?"off":Si(g),controlProps:ee},ne=e=>{var t,n;const r=!e.currentTarget.contains(document.activeElement)&&e.currentTarget.contains(e.target),i=Boolean(null===(t=document.getSelection())||void 0===t?void 0:t.toString());r&&!i&&(null===(n=R.current)||void 0===n||n.focus())};return a.createElement("span",{ref:t,style:b,className:ji({view:n,size:r,disabled:u,state:z,pin:"clear"===n?void 0:i,"has-clear":V,"has-start-content":G,"has-end-content":V||W},x),"data-qa":w},a.createElement("span",{className:ji("content")},G&&a.createElement(Oi,{ref:F,placement:"start",onClick:ne},E),B&&a.createElement("label",{ref:L,style:{insetInlineStart:G?Q.width:void 0,maxWidth:"calc(50% - ".concat(Q.width,"px)")},className:ji("label"),title:c,htmlFor:Y},"".concat(c)),a.createElement(ki,Object.assign({},e,te,{controlRef:M})),V&&a.createElement(wi,{size:xi(r),onClick:e=>{A("");const t=R.current;if(t){const n=Object.create(e);n.target=t,n.currentTarget=t,t.value="",k&&k(n)}},className:ji("clear",{size:r})}),W&&a.createElement(Oi,{placement:"end",onClick:ne},T),H&&a.createElement(fi,{content:j},a.createElement("span",{"data-qa":"control-error-icon-qa"},a.createElement(we.J,{data:St.Z,className:ji("error-icon"),size:"s"===r?12:16})))),a.createElement(Ei,{note:O,errorMessage:U?j:null,noteId:$,errorMessageId:X}))})),Pi=(0,le.Ge)("loader");function Di(e){let{size:t="s",className:n,qa:r}=e;return a.createElement("div",{className:Pi({size:t},n),"data-qa":r},a.createElement("div",{className:Pi("left")}),a.createElement("div",{className:Pi("center")}),a.createElement("div",{className:Pi("right")}))}var Ai=n(77796),Ri=n(5718);function Mi(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!==typeof document){var r=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===n&&r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}var Li=n(5687),Fi=n(10288),zi={button_close:"Close"},Bi={button_close:"\u0417\u0430\u043a\u0440\u044b\u0442\u044c"};var Ui=(0,mi.e)({en:zi,ru:Bi},"".concat(Ri.N).concat("Title"));Mi(".gn-title{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:64px;padding:14px 10px 14px 20px}.gn-title_separator{border-bottom:1px solid var(--g-color-line-generic)}.gn-title__text{margin:0 20px 0 0}");const Hi=(0,Ri.b)("title"),Vi=e=>{let{children:t,closeIconSize:n=23,hasSeparator:r,closeTitle:i=Ui("button_close"),onClose:o}=e;return a.createElement("div",{className:Hi({separator:r})},a.createElement(Fi.x,{className:Hi("text"),as:"h3",variant:"subheader-3"},t),o&&a.createElement(Ie.z,{onClick:o,view:"flat",size:"l",extraProps:{"aria-label":i}},a.createElement(we.J,{data:tt.Z,size:n})))};function Gi(e){const t=a.useRef();return a.useEffect((()=>(t.current=e,()=>{t.current=void 0})),[e]),a.useCallback((function(){if("function"===typeof t.current)return t.current(...arguments)}),[])}function Wi(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function qi(e){const t=Wi(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").replace(/\s+/g,".*?");return Zi(e,"",new RegExp(t,"i"))}function Zi(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0;const r=[],i={};let o=!1,s=!1;return a.Children.forEach(e,(e=>{var l,c;if(a.isValidElement(e))if(e.type===a.Fragment){const{menu:o,pages:a}=Zi(e.props.children,t,n);r.push(...o),Object.assign(i,a)}else if(e.props.groupTitle){0;const a="".concat(t,"/").concat(null!==(l=e.props.id)&&void 0!==l?l:e.props.groupTitle);o=!0;const{menu:s,pages:c}=Zi(e.props.children,a,n);0,r.push({groupTitle:e.props.groupTitle,items:s}),Object.assign(i,c)}else{s=!0;const o="".concat(t,"/").concat(null!==(c=e.props.id)&&void 0!==c?c:e.props.title);0,i[o]=Yi(e.props.children,n),i[o].id=o,r.push({id:o,title:e.props.title,icon:e.props.icon,withBadge:i[o].withBadge,disabled:i[o].hidden})}})),{menu:r,pages:i}}function Yi(e,t){const n={id:"",sections:[],hidden:!0};return a.Children.forEach(e,(e=>{if(a.isValidElement(e))if(e.type===a.Fragment){const{sections:r,withBadge:i,hidden:o}=Yi(e.props.children,t);n.sections.push(...r),n.withBadge=i||n.withBadge,n.hidden=o&&n.hidden}else{const{withBadge:r,showTitle:i=!0}=e.props,{items:o,hidden:a}=Ki(e.props.children,t);n.withBadge=r||n.withBadge,n.hidden=a&&n.hidden,n.sections.push(Object.assign(Object.assign({},e.props),{withBadge:r,items:o,hidden:a,showTitle:i}))}})),n}function Ki(e,t){let n=!0;const r=[];return a.Children.forEach(e,(e=>{if(a.isValidElement(e))if(e.type===a.Fragment){const i=Ki(e.props.children,t);r.push(...i.items),n=n&&i.hidden}else{const i=Object.assign(Object.assign({},e.props),{element:e,hidden:!t.test(e.props.title)});r.push(i),n=n&&i.hidden}})),{items:r,hidden:n}}Vi.displayName="Title";const Qi=a.createContext({});function Xi(e,t){const n=a.useRef(null);return a.useMemo((()=>t?Object.assign({selectedRef:n},function(e,t){if(!t.settingId&&!t.section&&!t.page)return{};for(const n of Object.values(e)){if(!t.settingId&&!t.section){if(t.page!==n.id)continue;return{page:n}}for(const e of n.sections)if(t.settingId){for(const r of e.items)if(r.id===t.settingId)return{page:n,section:e,setting:r}}else if(t.section&&("id"in t.section?t.section.id===e.id:t.section.title===e.title))return{page:n,section:e}}return{}}(e,t)):{selectedRef:n}),[e,t])}Qi.displayName="SettingsSelectionContext";const $i=Qi.Provider;var Ji=function(e){return e};Mi('.gn-settings-menu__group-heading{display:inline-block;font-weight:var(--g-text-accent-font-weight);line-height:18px;margin-bottom:12px;padding:0 20px}.gn-settings-menu__group+.gn-settings-menu__group{margin-top:24px}.gn-settings-menu__item{align-items:center;color:var(--g-color-text-primary);cursor:pointer;display:flex;height:40px;padding:0 20px}.gn-settings-menu__item-icon{color:var(--g-color-text-misc);margin-right:5px}.gn-settings-menu__item:hover,.gn-settings-menu__item_focused{background:var(--g-color-base-simple-hover)}.gn-settings-menu__item_selected{background:var(--g-color-base-selection)}.gn-settings-menu__item_selected.gn-settings-menu__item_focused,.gn-settings-menu__item_selected:hover{background:var(--g-color-base-selection-hover)}.gn-settings-menu__item_disabled{color:var(--g-color-text-secondary);cursor:auto}.gn-settings-menu__item_disabled:hover{background:none}.gn-settings-menu__item_disabled .gn-settings-menu__item-icon{color:var(--g-color-base-misc-heavy)}.gn-settings-menu__item_badge{position:relative}.gn-settings-menu__item_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:"";display:block;height:6px;position:absolute;right:9px;top:calc(50% - 3px);width:6px}');const eo=(0,Ri.b)("settings-menu"),to=a.forwardRef((function(e,t){let{items:n,onChange:r,activeItemId:i}=e;const[o,s]=a.useState(),l=a.useRef(null),c=Gi(r),u=function(e){const t=a.useRef(e);return t.current=e,a.useCallback((()=>t.current),[])}(o);return a.useImperativeHandle(t,(()=>({handleKeyDown(e){if(!l.current)return!1;const t=u();return t&&"Enter"===e.key?(c(t),!0):"ArrowDown"===e.key?(s(ro(l.current,t,1)),!0):"ArrowUp"===e.key&&(s(ro(l.current,t,-1)),!0)},clearFocus(){s(void 0)}})),[u,c]),a.createElement("div",{ref:l,className:eo()},n.map((e=>"groupTitle"in e?a.createElement("div",{key:e.groupTitle,className:eo("group")},a.createElement("span",{className:eo("group-heading")},e.groupTitle),e.items.map((e=>no(e,r,i,o)))):no(e,r,i,o))))}));function no(e,t,n,r){return a.createElement("span",{key:e.title,className:eo("item",{selected:n===e.id,disabled:e.disabled,focused:r===e.id,badge:e.withBadge}),onClick:()=>{e.disabled||t(e.id)},"data-id":e.id},e.icon?a.createElement(we.J,Object.assign({size:16},e.icon,{className:eo("item-icon")})):void 0,a.createElement("span",null,e.title))}function ro(e,t,n){var r;const i=e.querySelectorAll(".".concat(eo("item"),":not(.").concat(eo("item"),"_disabled)"));if(0===i.length)return;let o=n>0?-1:0;return t&&(o=Array.prototype.findIndex.call(i,(e=>e.getAttribute("data-id")===t))),o=(i.length+o+n)%i.length,null!==(r=i[o].getAttribute("data-id"))&&void 0!==r?r:void 0}Mi('.gn-settings-menu-mobile.g-tabs_direction_horizontal{-ms-overflow-style:none;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:none;scrollbar-width:none}.gn-settings-menu-mobile.g-tabs_direction_horizontal::-webkit-scrollbar{display:none}.gn-settings-menu-mobile__item_badge{position:relative}.gn-settings-menu-mobile__item_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:"";display:block;height:6px;position:absolute;right:-8px;top:11px;width:6px}');const io=(0,Ri.b)("settings-menu-mobile"),oo=e=>{let{items:t,onChange:n,activeItemId:r,className:i}=e;const o=a.useRef(null),s=a.useMemo((()=>{const e=[];return t.forEach((t=>{if("groupTitle"in t)e.push(...t.items.map((e=>{let{id:t,title:n,disabled:r,withBadge:i}=e;return{id:t,title:n,disabled:r,className:io("item",{badge:i})}})));else{const{id:n,title:r,disabled:i,withBadge:o}=t;e.push({id:n,title:r,disabled:i,className:io("item",{badge:o})})}})),e}),[t]);return a.createElement("div",{ref:o,onTouchMove:e=>{e.stopPropagation()}},a.createElement(wt,{items:s,className:io(null,i),size:"l",activeTab:r,onSelectTab:n}))};var ao={label_title:"Settings","label_filter-placeholder":"Search settings","label_empty-placeholder":"No results found",label_search:"Search"},so={label_title:"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","label_filter-placeholder":"\u041d\u0430\u0439\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","label_empty-placeholder":"\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e",label_search:"\u041f\u043e\u0438\u0441\u043a"};var lo=(0,mi.e)({en:ao,ru:so},"".concat(Ri.N).concat("Settings"));const co=(0,Ri.b)("settings-search");function uo(e){let{className:t,initialValue:n,onChange:r,debounce:i=200,inputRef:o,inputSize:s,placeholder:l,autoFocus:c=!0}=e;const[u,d]=a.useState(null!==n&&void 0!==n?n:""),h=Gi((0,Li.d)(r,i)),p=Gi((e=>{d(e),h(e)}));return a.createElement("div",{className:co(null,t)},a.createElement(Ii,{value:u,controlRef:o,hasClear:!0,autoFocus:c,size:s,placeholder:l,onUpdate:p,controlProps:{"aria-label":lo("label_search")}}))}Mi('.gn-settings{display:grid;grid-template-columns:216px 1fr;height:100%;width:834px}.gn-settings_view_mobile{display:block;height:calc(80vh - 56px);overflow-x:hidden;width:auto}@supports (height:90dvh){.gn-settings_view_mobile{height:calc(90dvh - 56px)}}.gn-settings_view_mobile.gn-settings_loading{text-align:center}.gn-settings_view_mobile .gn-settings__loader{margin-top:20px}.gn-settings_view_mobile .gn-settings__search{margin:4px 0 16px;padding:0 20px}.gn-settings_view_mobile .gn-settings__page{overflow-y:visible}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:first-child{margin-left:20px}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:last-child{margin-right:20px}.gn-settings_view_mobile .gn-settings__section-heading{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.gn-settings_view_mobile .gn-settings__section-subheader{color:var(--g-color-text-secondary)}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings-subheader{margin-top:8px}.gn-settings_view_mobile .gn-settings__section-item{margin-top:0}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings__section-item,.gn-settings_view_mobile .gn-settings__section-subheader+.gn-settings__section-item{margin-top:30px}.gn-settings_view_mobile .gn-settings__section-item+.gn-settings__section-item{margin-top:22px}.gn-settings_view_mobile .gn-settings__item:not(.gn-settings_view_mobile .gn-settings__item_mode_row){gap:8px;grid-template-columns:1fr}.gn-settings_view_mobile .gn-settings__item-heading{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.gn-settings_view_mobile .gn-settings__item-description{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.gn-settings_view_mobile .gn-settings__item_mode_row{grid-template-columns:1fr auto}.gn-settings_view_mobile .gn-settings__item_mode_row .gn-settings__item-heading{padding-right:20px}.gn-settings_view_mobile .gn-settings__item-content{width:100%}.gn-settings_view_mobile .gn-settings__not-found{color:var(--g-color-text-hint);font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);justify-items:start;line-height:var(--g-text-body-2-line-height);margin:20px 0 0 20px}.gn-settings_loading{grid-template-columns:auto}.gn-settings__loader{place-self:center}.gn-settings__not-found{display:grid;height:100%;place-items:center}.gn-settings__menu{border-right:1px solid var(--g-color-line-generic)}.gn-settings__heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:20px 20px 0}.gn-settings__search{margin:0 20px 16px}.gn-settings__page{overflow-y:auto}.gn-settings__content{padding:20px}.gn-settings__section-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__section-heading:hover .gn-settings__section-right-adornment_hidden{opacity:1}.gn-settings__section-heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:0}.gn-settings__section-item{margin-top:24px}.gn-settings__section+.gn-settings__section{margin-top:32px}.gn-settings__item{display:grid;grid-template-columns:216px 1fr;justify-items:start}.gn-settings__item_align_top{align-items:start}.gn-settings__item_align_center{align-items:center}.gn-settings__item-title_badge{position:relative}.gn-settings__item-title_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:"";display:block;height:6px;position:absolute;right:-8px;top:1px;width:6px}.gn-settings__item-description{color:var(--g-color-text-secondary);display:block;font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height);margin-top:2px;padding-right:20px}.gn-settings__item-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__item:hover .gn-settings__item-right-adornment_hidden{opacity:1}.gn-settings__item_selected,.gn-settings__section_selected{background:var(--g-color-base-selection);border-radius:8px;margin-left:-8px;padding:8px}.gn-settings__found{background:var(--g-color-base-selection);font-weight:var(--g-text-accent-font-weight)}');const ho=(0,Ri.b)("settings"),po=a.createContext({}),fo=()=>a.useContext(po);function mo(e){var{loading:t,renderLoading:n,children:r,view:i="normal",renderRightAdornment:o,renderSectionRightAdornment:s,showRightAdornmentOnHover:l=!0}=e,c=Je(e,["loading","renderLoading","children","view","renderRightAdornment","renderSectionRightAdornment","showRightAdornmentOnHover"]);return t?a.createElement("div",{className:ho({loading:!0,view:i})},"function"===typeof n?n():a.createElement(Di,{className:ho("loader"),size:"m"})):a.createElement(po.Provider,{value:{renderRightAdornment:o,renderSectionRightAdornment:s,showRightAdornmentOnHover:l}},a.createElement(vo,Object.assign({view:i},c),r))}const go=(e,t)=>{for(const n of e)if("groupTitle"in n){for(const e of n.items)if(e.id===t)return e.title}else if(n.id===t)return n.title;return""};function vo(e){let{initialPage:t,initialSearch:n,selection:r,children:i,renderNotFound:o,title:s=lo("label_title"),filterPlaceholder:l=lo("label_filter-placeholder"),emptyPlaceholder:c=lo("label_empty-placeholder"),view:u,onPageChange:d,onClose:h}=e;var p,f;const{renderSectionRightAdornment:m,showRightAdornmentOnHover:g}=fo(),[v,y]=a.useState(null!==n&&void 0!==n?n:""),{menu:b,pages:x}=qi(i,v),w=Xi(x,r),S=Object.keys(x),_=w.page&&S.includes(w.page.id)?w.page.id:void 0,[C,E]=a.useState(_||(t&&S.includes(t)?t:void 0)),T=a.useRef(null),O=a.useRef(null),N="mobile"===u;a.useEffect((()=>{var e;null===(e=O.current)||void 0===e||e.clearFocus()}),[v]),a.useEffect((()=>{const e=()=>{var e;null===(e=O.current)||void 0===e||e.clearFocus()};return window.addEventListener("click",e),()=>{window.removeEventListener("click",e)}}),[]);let k=C;k&&!(null===(p=x[k])||void 0===p?void 0:p.hidden)||(k=null===(f=Object.values(x).find((e=>{let{hidden:t}=e;return!t})))||void 0===f?void 0:f.id);const j=e=>{E((t=>(t!==e&&(null===d||void 0===d||d(e)),e)))};a.useEffect((()=>{k!==C&&j(k)})),a.useEffect((()=>{_&&E(_)}),[_]),a.useEffect((()=>{var e;(null===(e=w.selectedRef)||void 0===e?void 0:e.current)&&w.selectedRef.current.scrollIntoView()}),[w.selectedRef]);const I=(e,t)=>{const n=function(e,t,n){var r;return!(!e.section||e.setting)&&(!(!e.section.id||e.section.id!==n.id)||!((null===(r=e.page)||void 0===r?void 0:r.id)!==t||!e.section.title||e.section.title!==n.title))}(w,e,t);return a.createElement("div",{key:t.title,className:ho("section",{selected:n}),ref:n?w.selectedRef:void 0},t.showTitle&&a.createElement("h3",{className:ho("section-heading")},m?a.createElement(Ai.k,{gap:2,alignItems:"center"},t.title,a.createElement("div",{className:ho("section-right-adornment",{hidden:g})},m(t))):t.title),t.header&&(N?a.createElement("div",{className:ho("section-subheader")},t.header):t.header),t.items.map((e=>e.hidden?null:(e=>{let{title:t,element:n}=e;return a.createElement("div",{key:t,className:ho("section-item")},a.cloneElement(n,Object.assign(Object.assign({},n.props),{highlightedTitle:v&&t?yo(t,v):t})))})(e))))};return a.createElement($i,{value:w},a.createElement("div",{className:ho({view:u})},N?a.createElement(a.Fragment,null,a.createElement(uo,{inputRef:T,className:ho("search"),initialValue:n,onChange:y,autoFocus:!1,inputSize:"xl"}),a.createElement(oo,{items:b,onChange:j,activeItemId:k,className:ho("tabs")})):a.createElement("div",{className:ho("menu"),onClick:()=>{T.current&&T.current.focus()},onKeyDown:e=>{O.current&&O.current.handleKeyDown(e)&&e.preventDefault()}},a.createElement(Vi,null,s),a.createElement(uo,{inputRef:T,className:ho("search"),initialValue:n,onChange:y,placeholder:l,autoFocus:!0}),a.createElement(to,{ref:O,items:b,onChange:j,activeItemId:k})),a.createElement("div",{className:ho("page")},(e=>{if(!e)return"function"===typeof o?o():a.createElement("div",{className:ho("not-found")},c);const t=x[e].sections.filter((e=>!e.hidden));return a.createElement(a.Fragment,null,!N&&a.createElement(Vi,{hasSeparator:!0,onClose:h},go(b,e)),a.createElement("div",{className:ho("content")},t.map((t=>I(e,t)))))})(k))))}function yo(e,t){let n=e.slice(0);const r=[],i=Wi(t).split(" ").filter(Boolean);let o=0;for(const s of i){const e=new RegExp(s,"ig").exec(n);if(e){const t=e[0],i=e.index;i>0&&r.push(n.slice(0,i)),r.push(a.createElement("strong",{key:o++,className:ho("found")},t)),n=n.slice(i+t.length)}}return n&&r.push(n),r}function bo(e){let{name:t,value:n,id:r,defaultChecked:i,checked:o,indeterminate:s,onUpdate:l,onChange:c,controlRef:u,controlProps:d,onFocus:h,onBlur:p,disabled:f}=e;const m=a.useRef(null),[g,v]=_t(o,null!==i&&void 0!==i&&i,l),y=!s&&o,b=s?"mixed":g,x=Et(u,m);a.useLayoutEffect((()=>{m.current&&(m.current.indeterminate=Boolean(s))}),[s]);const w=a.useCallback((e=>{Yr.P.publish({componentId:"Checkbox",eventId:"click",domEvent:e,meta:{checked:e.target.checked}})}),[]);return{checked:g,inputProps:Object.assign(Object.assign({},d),{name:t,value:n,id:r,onFocus:h,onBlur:p,disabled:f,type:"checkbox",onChange:e=>{v(e.target.checked),c&&c(e)},onClickCapture:w,defaultChecked:i,checked:y,"aria-checked":b,ref:x})}}mo.Group=function(e){let{children:t}=e;return a.createElement(a.Fragment,null,t)},mo.Page=function(e){let{children:t}=e;return a.createElement(a.Fragment,null,t)},mo.Section=function(e){let{children:t}=e;return a.createElement(a.Fragment,null,t)},mo.Item=function(e){const{id:t,labelId:n,highlightedTitle:r,children:i,align:o="center",withBadge:s,renderTitleComponent:l=Ji,mode:c,description:u}=e,d=a.useContext(Qi),h=d.setting&&d.setting.id===t,{renderRightAdornment:p,showRightAdornmentOnHover:f}=fo(),m=a.createElement("span",{className:ho("item-title",{badge:s})},l(r));return a.createElement("div",{className:ho("item",{align:o,mode:c,selected:h}),ref:h?d.selectedRef:void 0},a.createElement("label",{className:ho("item-heading"),id:n},p?a.createElement(Ai.k,{className:ho("item-title-wrapper"),gap:3},m,a.createElement("div",{className:ho("item-right-adornment",{hidden:f})},p(e))):m,u?a.createElement("span",{className:ho("item-description")},u):null),a.createElement("div",{className:ho("item-content")},i))};const xo=(0,le.Ge)("control-label"),wo=a.forwardRef(((e,t)=>{let{children:n,className:r,labelClassName:i,title:o,style:s,disabled:l=!1,control:c,size:u="m",qa:d}=e;const h=a.cloneElement(c,{className:xo("indicator",c.props.className)});return a.createElement("label",{ref:t,title:o,style:s,className:xo({size:u,disabled:l},r),"data-qa":d},h,n?a.createElement("span",{className:xo("text",i)},n):null)}));wo.displayName="ControlLabel";const So=(0,le.Ge)("switch"),_o=a.forwardRef((function(e,t){const{size:n="m",disabled:r=!1,content:i,children:o,title:s,style:l,className:c,qa:u}=e,{checked:d,inputProps:h}=bo(Object.assign(Object.assign({},e),{controlProps:Object.assign(Object.assign({},e.controlProps),{role:"switch"})})),p=i||o,f=a.createElement("span",{className:So("indicator")},a.createElement("input",Object.assign({},h,{className:So("control")})),a.createElement("span",{className:So("outline")}),a.createElement("span",{className:So("slider")}));return a.createElement(wo,{ref:t,title:s,style:l,size:n,disabled:r,className:So({size:n,disabled:r,checked:d},c),labelClassName:So("text"),qa:u,control:f},p)}));const Co=(0,le.Ge)("radio-button"),Eo=a.forwardRef((function(e,t){const{disabled:n=!1,content:r,children:i,title:o}=e,{checked:s,inputProps:l}=function(e){let{name:t,value:n,checked:r,defaultChecked:i,disabled:o,controlRef:s,controlProps:l,onUpdate:c,onChange:u,onFocus:d,onBlur:h,id:p}=e;const f=ue(),m=a.useRef(null),[g,v]=a.useState(null!==i&&void 0!==i&&i),y="boolean"===typeof r,b=y?r:g,x=Et(s,m);return{checked:b,inputProps:Object.assign(Object.assign({},l),{name:t||f,value:n,id:p,onFocus:d,onBlur:h,disabled:o,type:"radio",onChange:e=>{y||v(e.target.checked),u&&u(e),c&&c(e.target.checked)},onChangeCapture:e=>{Yr.P.publish({componentId:"Radio",eventId:"click",domEvent:e})},checked:r,defaultChecked:i,"aria-checked":b,ref:x})}}(e),c=r||i,u=(0,ce.y)(c);return a.createElement("label",{className:Co("option",{disabled:n,checked:s}),ref:t,title:o},a.createElement("input",Object.assign({},l,{className:Co("option-control")})),a.createElement("span",{className:Co("option-outline")}),c&&a.createElement("span",{className:Co("option-text",{icon:u})},c))})),To=(0,le.Ge)("radio-button"),Oo=a.forwardRef((function(e,t){const{size:n="m",width:r,style:i,className:o,qa:s,children:l}=e;let c=e.options;c||(c=a.Children.toArray(l).map((e=>{let{props:t}=e;return{value:t.value,content:t.content||t.children,disabled:t.disabled,title:t.title}})));const u=a.useRef(null),d=a.useRef(),h=a.useCallback((e=>{if(!e)return;const t=u.current;if(!t)return;const n=d.current;if(n&&n!==e){const r=e=>{t.style.left="".concat(e.offsetLeft,"px"),t.style.width="".concat(e.offsetWidth,"px")};r(n),t.hidden=!1,r(e)}d.current=e}),[]),p=a.useCallback((e=>{e.currentTarget.hidden=!0}),[]),{containerProps:f,optionsProps:m}=function(e){var t,n;const{name:r,value:i,defaultValue:o,options:s=[],disabled:l,onUpdate:c,onChange:u,onFocus:d,onBlur:h}=e,p=ue(),[f,m]=a.useState(null!==o&&void 0!==o?o:null===(n=null===(t=s[0])||void 0===t?void 0:t.value)||void 0===n?void 0:n.toString()),g="undefined"!==typeof i,v=g?i:f,y=a.useCallback((e=>{g||m(e.target.value),u&&u(e),c&&c(e.target.value)}),[g,c,u]);return{containerProps:{role:"radiogroup","aria-disabled":l,"aria-label":e["aria-label"],"aria-labelledby":e["aria-labelledby"]},optionsProps:s.map((e=>({name:r||p,value:e.value,content:e.content,title:e.title,checked:v===String(e.value),disabled:l||e.disabled,onChange:y,onFocus:d,onBlur:h})))}}(Object.assign(Object.assign({},e),{options:c}));return a.createElement("div",Object.assign({},f,{ref:t,style:i,className:To({size:n,width:r},o),"data-qa":s}),a.createElement("div",{ref:u,className:To("plate"),onTransitionEnd:p,hidden:!0}),m.map((e=>a.createElement(Eo,Object.assign({},e,{key:e.value,ref:e.checked?h:void 0})))))}));Oo.Option=Eo;const No=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 13.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11ZM8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM6.44 4.54c.43-.354.994-.565 1.56-.565 1.217 0 2.34.82 2.34 2.14 0 .377-.079.745-.298 1.1-.208.339-.513.614-.875.867-.217.153-.326.257-.379.328-.038.052-.038.07-.038.089a.75.75 0 0 1-1.5 0c0-.794.544-1.286 1.057-1.645.28-.196.4-.332.458-.426a.543.543 0 0 0 .074-.312c0-.3-.243-.641-.839-.641a.997.997 0 0 0-.608.223c-.167.138-.231.287-.231.418a.75.75 0 1 1-1.5 0c0-.674.345-1.22.78-1.577ZM8 12a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z",clipRule:"evenodd"})),ko=((0,Re.withNaming)({e:"__",m:"_",v:"_"}),(0,Re.withNaming)({n:"gc-",e:"__",m:"_",v:"_"})("help-popover")),jo=16;function Io(e){var t;return a.createElement(fi,Object.assign({},e,{className:ko(null,e.className)}),a.createElement("button",Object.assign({ref:e.buttonRef,type:"button"},e.buttonProps,{className:ko("button",null===(t=e.buttonProps)||void 0===t?void 0:t.className)}),a.createElement(we.J,{data:No,size:jo})))}const Po=e=>{let{text:t,popoverContent:n,className:r,contentClassName:i}=e;return(0,Le.jsxs)("div",{className:r,children:[t,"\xa0",(0,Le.jsx)(Io,{content:n,contentClassName:i})]})},Do=ae.v9,Ao=ae.I0;var Ro=n(80839);const Mo=(e,t)=>{const n=Ao();return[Do((n=>{var r;return null!==(r=(0,Ro.Cx)(n,e))&&void 0!==r?r:t})),a.useCallback((t=>{n((0,Ro.xI)(e,t))}),[n,e])]};var Lo=n(52317);const Fo=()=>Mo(Lo.Wm);var zo=n(81413);const Bo=(e,t)=>{let{sortValue:n,sortOrder:r=zo.hr}=e;return[a.useMemo((()=>{if(n)return{columnId:n,order:r}}),[n,r]),e=>{const n=Array.isArray(e)?e[0]:e;t({sortValue:null===n||void 0===n?void 0:n.columnId,sortOrder:null===n||void 0===n?void 0:n.order})}]};var Uo=n(51721),Ho=n(50134),Vo=n.n(Ho),Go=n(91668),Wo=n(35731),qo=n(87462),Zo=n(85528),Yo=n.n(Zo),Ko=(n(99898),n(63366)),Qo=n(15170),Xo=n.n(Qo),$o=1073741823,Jo="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:{};var ea=a.createContext||function(e,t){var n,r,i="__create-react-context-"+function(){var e="__global_unique_id__";return Jo[e]=(Jo[e]||0)+1}()+"__",o=function(e){function n(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).emitter=function(e){var t=[];return{on:function(e){t.push(e)},off:function(e){t=t.filter((function(t){return t!==e}))},get:function(){return e},set:function(n,r){e=n,t.forEach((function(t){return t(e,r)}))}}}(t.props.value),t}(0,Uo.Z)(n,e);var r=n.prototype;return r.getChildContext=function(){var e;return(e={})[i]=this.emitter,e},r.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,i=e.value;!function(e,t){return e===t?0!==e||1/e===1/t:e!==e&&t!==t}(r,i)?(n="function"===typeof t?t(r,i):$o,0!==(n|=0)&&this.emitter.set(e.value,n)):n=0}},r.render=function(){return this.props.children},n}(a.Component);o.childContextTypes=((n={})[i]=Vo().object.isRequired,n);var s=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!==((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,Uo.Z)(n,t);var r=n.prototype;return r.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=void 0===t||null===t?$o:t},r.componentDidMount=function(){this.context[i]&&this.context[i].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=void 0===e||null===e?$o:e},r.componentWillUnmount=function(){this.context[i]&&this.context[i].off(this.onUpdate)},r.getValue=function(){return this.context[i]?this.context[i].get():e},r.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return s.contextTypes=((r={})[i]=Vo().object,r),{Provider:o,Consumer:s}},ta=function(e){var t=ea();return t.displayName=e,t},na=ta("Router-History"),ra=ta("Router"),ia=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,Uo.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(ra.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(na.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;var oa=function(e){function t(){return e.apply(this,arguments)||this}(0,Uo.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(a.Component);var aa={},sa=1e4,la=0;function ca(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(aa[e])return aa[e];var t=Yo().compile(e);return la<sa&&(aa[e]=t,la++),t}(e)(t,{pretty:!0})}function ua(e){var t=e.computedMatch,n=e.to,r=e.push,i=void 0!==r&&r;return a.createElement(ra.Consumer,null,(function(e){e||(0,Wo.Z)(!1);var r=e.history,o=e.staticContext,s=i?r.push:r.replace,l=(0,Go.ob)(t?"string"===typeof n?ca(n,t.params):(0,qo.Z)({},n,{pathname:ca(n.pathname,t.params)}):n);return o?(s(l),null):a.createElement(oa,{onMount:function(){s(l)},onUpdate:function(e,t){var n=(0,Go.ob)(t.to);(0,Go.Hp)(n,(0,qo.Z)({},l,{key:n.key}))||s(l)},to:n})}))}var da={},ha=1e4,pa=0;function fa(e,t){void 0===t&&(t={}),("string"===typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,i=n.exact,o=void 0!==i&&i,a=n.strict,s=void 0!==a&&a,l=n.sensitive,c=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=da[n]||(da[n]={});if(r[e])return r[e];var i=[],o={regexp:Yo()(e,i,t),keys:i};return pa<ha&&(r[e]=o,pa++),o}(n,{end:o,strict:s,sensitive:c}),i=r.regexp,a=r.keys,l=i.exec(e);if(!l)return null;var u=l[0],d=l.slice(1),h=e===u;return o&&!h?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:h,params:a.reduce((function(e,t,n){return e[t.name]=d[n],e}),{})}}),null)}var ma=function(e){function t(){return e.apply(this,arguments)||this}return(0,Uo.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(ra.Consumer,null,(function(t){t||(0,Wo.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?fa(n.pathname,e.props):t.match,i=(0,qo.Z)({},t,{location:n,match:r}),o=e.props,s=o.children,l=o.component,c=o.render;return Array.isArray(s)&&function(e){return 0===a.Children.count(e)}(s)&&(s=null),a.createElement(ra.Provider,{value:i},i.match?s?"function"===typeof s?s(i):s:l?a.createElement(l,i):c?c(i):null:"function"===typeof s?s(i):null)}))},t}(a.Component);function ga(e){return"/"===e.charAt(0)?e:"/"+e}function va(e,t){if(!e)return t;var n=ga(e);return 0!==t.pathname.indexOf(n)?t:(0,qo.Z)({},t,{pathname:t.pathname.substr(n.length)})}function ya(e){return"string"===typeof e?e:(0,Go.Ep)(e)}function ba(e){return function(){(0,Wo.Z)(!1)}}function xa(){}a.Component;var wa=function(e){function t(){return e.apply(this,arguments)||this}return(0,Uo.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(ra.Consumer,null,(function(t){t||(0,Wo.Z)(!1);var n,r,i=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var o=e.props.path||e.props.from;r=o?fa(i.pathname,(0,qo.Z)({},e.props,{path:o})):t.match}})),r?a.cloneElement(n,{location:i,computedMatch:r}):null}))},t}(a.Component);var Sa=a.useContext;function _a(){return Sa(na)}function Ca(){return Sa(ra).location}function Ea(e){var t=Ca(),n=Sa(ra).match;return e?fa(t.pathname,e):n}var Ta=n(54665);const Oa=()=>{const e=Ca();return(0,Ta.mB)(e)};var Na=n(51688);let ka;!function(e){e.v1="v1",e.v2="v2"}(ka||(ka={}));const ja=e=>{let{type:t="switch",settingKey:n,title:r,description:i,helpPopoverContent:o,options:a,defaultValue:s,onValueUpdate:l}=e;const[c,u]=Mo(n,s),d=e=>{u(e),null===l||void 0===l||l()};return(0,Le.jsx)(mo.Item,{title:r,highlightedTitle:r,description:i,renderTitleComponent:e=>o?(0,Le.jsx)(Po,{className:$a("item-with-popup"),contentClassName:$a("popup"),text:e,popoverContent:o}):e,children:(e=>{switch(e){case"switch":return(0,Le.jsx)(_o,{checked:Boolean(c),onUpdate:d});case"radio":return a?(0,Le.jsx)(Oo,{value:String(c),onUpdate:d,children:a.map((e=>{let{value:t,content:n}=e;return(0,Le.jsx)(Oo.Option,{value:t,children:n},t)}))}):null;default:return null}})(t)})},Ia=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",d:"M6.886.773C7.29-.231 8.71-.231 9.114.773l1.472 3.667 3.943.268c1.08.073 1.518 1.424.688 2.118L12.185 9.36l.964 3.832c.264 1.05-.886 1.884-1.802 1.31L8 12.4l-3.347 2.101c-.916.575-2.066-.26-1.802-1.309l.964-3.832L.783 6.826c-.83-.694-.391-2.045.688-2.118l3.943-.268L6.886.773Z"})),Pa=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M11.494 13.2c.837-.482 1.006-.946 1.006-1.2 0-.35-.105-.692-.303-.981L9.072 6.435a1.854 1.854 0 0 1-.322-1.044V2.909C8.518 2.968 8.265 3 8 3s-.518-.032-.75-.09v2.48c0 .373-.112.737-.322 1.045L3.803 11.02c-.198.289-.303.63-.303.981 0 .254.169.718 1.006 1.2.813.468 2.043.8 3.494.8s2.68-.332 3.494-.8ZM8 .5c2 0 2.25 1 2.25 1.5v3.39c0 .072.021.141.062.2l3.125 4.584c.367.538.563 1.175.563 1.826 0 2-2.686 3.5-6 3.5S2 14 2 12c0-.652.196-1.288.563-1.826L5.69 5.59a.354.354 0 0 0 .061-.2V2C5.75 1.5 6 .5 8 .5Zm.084 7.626a.75.75 0 0 1 1.04.208l1.5 2.25a.75.75 0 1 1-1.248.832l-1.5-2.25a.75.75 0 0 1 .208-1.04Z",clipRule:"evenodd"})),Da=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M6.169 6.331a3 3 0 0 0-.833 1.6l-.338 1.912a1 1 0 0 0 1.159 1.159l1.912-.338a3 3 0 0 0 1.6-.833l3.07-3.07 2-2A.894.894 0 0 0 15 4.13 3.13 3.13 0 0 0 11.87 1a.894.894 0 0 0-.632.262l-2 2-3.07 3.07Zm3.936-1.814L7.229 7.392a1.5 1.5 0 0 0-.416.8L6.6 9.4l1.208-.213.057-.01a1.5 1.5 0 0 0 .743-.406l2.875-2.876a1.63 1.63 0 0 0-1.378-1.378Zm2.558.199a3.143 3.143 0 0 0-1.379-1.38l.82-.82a1.63 1.63 0 0 1 1.38 1.38l-.82.82ZM8 2.25a.75.75 0 0 0-.75-.75H4.5a3 3 0 0 0-3 3v7a3 3 0 0 0 3 3h7a3 3 0 0 0 3-3V8.75a.75.75 0 0 0-1.5 0v2.75a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 3 11.5v-7A1.5 1.5 0 0 1 4.5 3h2.75A.75.75 0 0 0 8 2.25Z",clipRule:"evenodd"}));function Aa(e){let{children:t,mode:n}=e;return Do((e=>"single"===n?e.singleClusterMode:!e.singleClusterMode))?(0,Le.jsx)(a.Fragment,{children:t}):null}const Ra=JSON.parse('{"page.general":"General","section.appearance":"Appearance","page.experiments":"Experiments","section.experiments":"Experiments","page.editor":"Editor","section.dev-setting":"Development settings","settings.editor.autocomplete.title":"Enable autocomplete","settings.editor.autocomplete.description":"You\u2019re always able to get suggestions by pressing Ctrl+Space.","settings.editor.autocomplete-on-enter.title":"Accept suggestion on Enter","settings.editor.autocomplete-on-enter.description":"Controls whether suggestions should be accepted on Enter, in addition to Tab. Helps to avoid ambiguity between inserting new lines or accepting suggestions.","settings.theme.title":"Interface theme","settings.theme.option-dark":"Dark","settings.theme.option-light":"Light","settings.theme.option-system":"System","settings.language.title":"Interface language","settings.language.option-russian":"Russian","settings.language.option-english":"English","settings.binaryDataInPlainTextDisplay.title":"Display binary data in plain text","settings.binaryDataInPlainTextDisplay.description":"Available starting from version 24.1","settings.invertedDisks.title":"Inverted disks space indicators","settings.useNodesEndpoint.title":"Break the Nodes tab in Diagnostics","settings.useNodesEndpoint.popover":"Use /viewer/json/nodes endpoint for Nodes Tab in diagnostics. It could return incorrect data on some versions","settings.useVirtualTables.title":"Use table with data load on scroll for Nodes and Storage tabs","settings.useVirtualTables.popover":"It will increase performance, but could work unstable","settings.queryUseMultiSchema.title":"Allow queries with multiple result sets","settings.queryUseMultiSchema.popover":"Use \'multi\' schema for queries that enables queries with multiple result sets. Returns nothing on versions 23-3 and older"}'),Ma=(0,We.wZ)("ydb-user-settings",{en:Ra}),La=[{value:"system",content:Ma("settings.theme.option-system")},{value:"light",content:Ma("settings.theme.option-light")},{value:"dark",content:Ma("settings.theme.option-dark")}],Fa={settingKey:Lo.bw,title:Ma("settings.theme.title"),type:"radio",options:La},za=(We.Uo.Ru,Ma("settings.language.option-russian"),We.Uo.En,Ma("settings.language.option-english"),Lo.Px,Ma("settings.language.title"),We.Fp,{settingKey:Lo.N1,title:Ma("settings.binaryDataInPlainTextDisplay.title"),description:(0,Le.jsx)(Aa,{mode:"multi",children:Ma("settings.binaryDataInPlainTextDisplay.description")})}),Ba={settingKey:Lo.yT,title:Ma("settings.invertedDisks.title")},Ua={settingKey:Lo.UF,title:Ma("settings.useNodesEndpoint.title"),helpPopoverContent:Ma("settings.useNodesEndpoint.popover")},Ha={settingKey:Lo.ET,title:Ma("settings.useVirtualTables.title"),helpPopoverContent:Ma("settings.useVirtualTables.popover")},Va={settingKey:Lo.Rq,title:Ma("settings.queryUseMultiSchema.title"),helpPopoverContent:Ma("settings.queryUseMultiSchema.popover")},Ga={settingKey:Lo.y6,title:Ma("settings.editor.autocomplete.title"),description:Ma("settings.editor.autocomplete.description")},Wa={settingKey:Lo.XX,title:Ma("settings.editor.autocomplete-on-enter.title"),description:Ma("settings.editor.autocomplete-on-enter.description")},qa={id:"appearanceSection",title:Ma("section.appearance"),settings:[Fa,Ba,za]},Za={id:"experimentsSection",title:Ma("section.experiments"),settings:[Ua,Ha,Va]},Ya={id:"devSettingsSection",title:Ma("section.dev-setting"),settings:[Ga,Wa]},Ka={id:"generalPage",title:Ma("page.general"),icon:{data:Ia,height:14,width:14},sections:[qa]},Qa={id:"experimentsPage",title:Ma("page.experiments"),icon:{data:Pa},sections:[Za]},Xa=[Ka,{id:"editorPage",title:Ma("page.editor"),icon:{data:Da},sections:[Ya]},Qa],$a=Me("ydb-user-settings"),Ja=e=>{let{settings:t=Xa}=e;return(0,Le.jsx)(mo,{children:t.map((e=>{const{id:t,title:n,icon:r,sections:i=[]}=e;return(0,Le.jsx)(mo.Page,{id:t,title:n,icon:r,children:i.map((e=>{const{title:n,settings:r=[]}=e;return(0,Le.jsx)(mo.Section,{title:n,children:r.map((e=>(0,Le.jsx)(ja,{...e},e.settingKey)))},t)}))},t)}))})},es=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M14.78 7.47a.75.75 0 0 1 0 1.06l-2.5 2.5a.75.75 0 1 1-1.06-1.06l1.22-1.22H4.75a.75.75 0 0 1 0-1.5h7.69l-1.22-1.22a.75.75 0 0 1 1.06-1.06l2.5 2.5ZM9.5 4.25a.75.75 0 0 1-1.5 0V4a1.5 1.5 0 0 0-1.5-1.5H4A1.5 1.5 0 0 0 2.5 4v8A1.5 1.5 0 0 0 4 13.5h2.5A1.5 1.5 0 0 0 8 12v-.25a.75.75 0 0 1 1.5 0V12a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V4a3 3 0 0 1 3-3h2.5a3 3 0 0 1 3 3v.25Z",clipRule:"evenodd"})),ts=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M11.78 7.47a.75.75 0 0 1 0 1.06l-2.5 2.5a.75.75 0 1 1-1.06-1.06l1.22-1.22H1.75a.75.75 0 0 1 0-1.5h7.69L8.22 6.03a.75.75 0 0 1 1.06-1.06l2.5 2.5ZM4 11.75a.75.75 0 0 1 1.5 0V12A1.5 1.5 0 0 0 7 13.5h5a1.5 1.5 0 0 0 1.5-1.5V4A1.5 1.5 0 0 0 12 2.5H7A1.5 1.5 0 0 0 5.5 4v.25a.75.75 0 0 1-1.5 0V4a3 3 0 0 1 3-3h5a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3v-.25Z",clipRule:"evenodd"}));var ns=n(14146);const rs=JSON.parse('{"pages.query":"Query","pages.diagnostics":"Diagnostics","navigation-item.documentation":"Documentation","navigation-item.settings":"Settings","navigation-item.account":"Account","account.user":"YDB User","account.login":"Login","account.logout":"Logout"}'),is=JSON.parse('{"pages.query":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432","pages.diagnostics":"\u0414\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430","navigation-item.documentation":"\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f","navigation-item.settings":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","navigation-item.account":"\u0410\u043a\u043a\u0430\u0443\u043d\u0442","account.user":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c YDB","account.login":"\u0412\u043e\u0439\u0442\u0438","account.logout":"\u0412\u044b\u0439\u0442\u0438"}'),os=(0,We.wZ)("ydb-aside-navigation",{ru:is,en:rs}),as=Me("kv-ydb-internal-user");function ss(){const{user:e}=Do((e=>e.authentication)),t=_a(),n=Ao();return(0,Le.jsxs)("div",{className:as(),children:[(0,Le.jsxs)("div",{className:as("user-info-wrapper"),children:[(0,Le.jsx)("div",{className:as("ydb-internal-user-title"),children:os("account.user")}),e&&(0,Le.jsx)("div",{className:as("username"),children:e})]}),e?(0,Le.jsx)(Ie.z,{view:"flat-secondary",title:os("account.logout"),onClick:()=>{n(ns.kS)},children:(0,Le.jsx)(we.J,{data:es})}):(0,Le.jsx)(Ie.z,{view:"flat-secondary",title:os("account.login"),onClick:()=>{t.push((0,Ta.ax)(Ta.ZP.auth,void 0,{returnUrl:encodeURIComponent(location.href)}))},children:(0,Le.jsx)(we.J,{data:ts})})]})}const ls=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M12 3.5H4A1.5 1.5 0 0 0 2.5 5v6A1.5 1.5 0 0 0 4 12.5h8a1.5 1.5 0 0 0 1.5-1.5V5A1.5 1.5 0 0 0 12 3.5ZM4 2a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3H4Zm.47 8.53a.75.75 0 0 1 0-1.06L5.94 8 4.47 6.53a.75.75 0 0 1 1.06-1.06l2 2a.75.75 0 0 1 0 1.06l-2 2a.75.75 0 0 1-1.06 0ZM8.75 9.5a.75.75 0 0 0 0 1.5h2.5a.75.75 0 0 0 0-1.5h-2.5Z",clipRule:"evenodd"})),cs=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("g",{clipPath:"url(#a)"},a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M9.235 1a.75.75 0 0 1 .74.56l2.034 7.726 1.09-1.908A.75.75 0 0 1 13.75 7h1.5a.75.75 0 0 1 0 1.5h-1.065l-1.784 3.122a.75.75 0 0 1-1.376-.181l-1.71-6.496-2.083 9.466a.75.75 0 0 1-1.446.07L3.544 7.55l-.65 1.085A.75.75 0 0 1 2.25 9H.75a.75.75 0 1 1 0-1.5h1.075l1.282-2.136a.75.75 0 0 1 1.357.155l1.898 5.868 2.156-9.798A.75.75 0 0 1 9.235 1Z",clipRule:"evenodd"})),a.createElement("defs",null,a.createElement("clipPath",{id:"a"},a.createElement("path",{fill:"currentColor",d:"M0 0h16v16H0z"}))));var us=n(24015);const ds={summaryTab:"summaryTab",queryTab:"queryTab",diagnosticsTab:"diagnosticsTab",metricsTab:"metricsTab"},hs=[{id:us.uw.overview,title:"Overview"},{id:us.uw.acl,title:"ACL"}],ps=[{id:us.uw.schema,title:"Schema"}],fs=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,Ta.ax)(Ta.ZP.tenant,void 0,e)};function ms(e){let{children:t,userSettings:n}=e;const r=Be("AsideNavigation"),i=function(){const e=Ca(),t=_a(),[,n]=Mo(Lo.pf),{tenantPage:r}=Do((e=>e.tenant)),{pathname:i}=e,o=(0,Ta.mB)(e),s=i===Ta.ZP.tenant;return a.useMemo((()=>s?[{id:us.m2.query,title:os("pages.query"),icon:ls,iconSize:20,location:fs({...o,[us.bS]:us.m2.query})},{id:us.m2.diagnostics,title:os("pages.diagnostics"),icon:cs,iconSize:20,location:fs({...o,[us.bS]:us.m2.diagnostics})}].map((e=>{const i=e.id===r;return{id:e.id,title:e.title,icon:e.icon,iconSize:e.iconSize,current:i,onItemClick:()=>{n(e.id),t.push(e.location)}}})):[]),[r,s,n,t,o])}();return(0,Le.jsx)(r,{settings:(0,Le.jsx)(Ja,{settings:n}),menuItems:i,ydbInternalUser:(0,Le.jsx)(ss,{}),content:t})}const gs={top:0,right:0,bottom:0,left:0};var vs=n(3027),ys=n(83326),bs=n.n(ys);const xs=Me("info-viewer"),ws=e=>{let{title:t,info:n,dots:r=!0,size:i,className:o,multilineLabels:s,renderEmptyState:l}=e;return n&&n.length||!l?(0,Le.jsxs)("div",{className:xs({size:i},o),children:[t&&(0,Le.jsx)("div",{className:xs("title"),children:t}),n&&n.length>0?(0,Le.jsx)("div",{className:xs("items"),children:n.map(((e,t)=>(0,Le.jsxs)("div",{className:xs("row"),children:[(0,Le.jsxs)("div",{className:xs("label"),children:[(0,Le.jsx)("div",{className:xs("label-text",{multiline:s}),children:e.label}),r&&(0,Le.jsx)("div",{className:xs("dots")})]}),(0,Le.jsx)("div",{className:xs("value"),children:e.value})]},t)))}):(0,Le.jsxs)(a.Fragment,{children:["No ",t," data"]})]}):(0,Le.jsx)(a.Fragment,{children:l({title:t,size:i})})},Ss=ws;function _s(e,t){var n;return null!==(n=t[e])&&void 0!==n?n:e}function Cs(e,t,n,r){const i=n[e]||r;return i?i(t):t}function Es(e){let{values:t,labels:n,defaultValueFormatter:r}=e;return(e,i)=>({label:_s(e,n||{}),value:Cs(e,i,t||{},r)})}const Ts=(e,t)=>t?Object.entries(t).map((t=>{let[n,r]=t;return e(n,r)})).filter((e=>{let{value:t}=e;return Boolean(t)})):[],Os=Me("ydb-node-endpoints-tooltip-content"),Ns=e=>{let{data:t}=e;const n=[];return null!==t&&void 0!==t&&t.Rack&&n.push({label:"Rack",value:t.Rack}),null!==t&&void 0!==t&&t.Endpoints&&t.Endpoints.length&&t.Endpoints.forEach((e=>{let{Name:t,Address:r}=e;t&&r&&n.push({label:t,value:r})})),(0,Le.jsx)(Ss,{className:Os(null),info:n,dots:!1,size:"s"})};var ks=n(4119);const js=Es({values:{ChangeTime:e=>(0,ks.fG)(e)},labels:{TabletId:"Tablet"},defaultValueFormatter:e=>e&&String(e)}),Is=e=>{let{data:t={},className:n}=e;const{TabletId:r,NodeId:i,State:o,Type:a,ChangeTime:s,Generation:l}=t,c=Ts(js,{TabletId:r,NodeId:i,State:o,Type:a,ChangeTime:s,Generation:l});return(0,Le.jsx)(Ss,{className:n,info:c,dots:!1,size:"s"})},Ps=Es({values:{Usage:e=>e&&"".concat((100*Number(e)).toFixed(2)," %")},labels:{Name:"Pool"},defaultValueFormatter:e=>e&&String(e)}),Ds=e=>{let{data:t={},className:n}=e;const r=Ts(Ps,t);return(0,Le.jsx)(Ss,{className:n,info:r,dots:!1,size:"s"})},As=Me("node-tootltip"),Rs=e=>{const{data:t}=e;return t&&(0,Le.jsx)("div",{className:As(),children:(0,Le.jsx)("table",{children:(0,Le.jsxs)("tbody",{children:[(0,Le.jsxs)("tr",{children:[(0,Le.jsx)("td",{className:As("label"),children:"ID"}),(0,Le.jsx)("td",{className:As("value"),children:t.nodeId||"?"})]}),(0,Le.jsxs)("tr",{children:[(0,Le.jsx)("td",{className:As("label"),children:"Rack"}),(0,Le.jsx)("td",{className:As("value"),children:t.rack||"?"})]}),t.connected&&t.capacity?(0,Le.jsxs)("tr",{children:[(0,Le.jsx)("td",{className:As("label"),children:"Net"}),(0,Le.jsx)("td",{className:As("value"),children:"".concat(t.connected," / ").concat(t.capacity)})]}):null]})})})},Ms=Me("tabletsOverall-tooltip"),Ls=e=>{const{data:t}=e;return t&&(0,Le.jsx)("div",{className:Ms(),children:(0,Le.jsx)("table",{children:(0,Le.jsx)("tbody",{children:t.map(((e,t)=>(0,Le.jsxs)("tr",{children:[(0,Le.jsxs)("td",{className:Ms("label"),children:[e.color,":"]}),(0,Le.jsx)("td",{className:Ms("value"),children:"".concat(e.value,"/").concat(e.total," (").concat(e.percents.toFixed(2),"%)")})]},t)))})})})},Fs=Me("histogram-tooltip"),zs=e=>{const{data:t}=e;return t&&(0,Le.jsx)("div",{className:Fs(),children:(0,Le.jsx)("table",{children:(0,Le.jsxs)("tbody",{children:[(0,Le.jsxs)("tr",{children:[(0,Le.jsx)("td",{className:Fs("label"),children:"Count"}),(0,Le.jsx)("td",{className:Fs("value"),children:t.count||"?"})]}),(0,Le.jsxs)("tr",{children:[(0,Le.jsx)("td",{className:Fs("label"),children:"From"}),(0,Le.jsx)("td",{className:Fs("value"),children:t.leftBound||"?"})]}),(0,Le.jsxs)("tr",{children:[(0,Le.jsx)("td",{className:Fs("label"),children:"To"}),(0,Le.jsx)("td",{className:Fs("value"),children:t.rightBound||"?"})]})]})})})},Bs=Me("cell-tooltip"),Us=Me("json-tooltip"),Hs={pool:e=>(0,Le.jsx)(Ds,{data:e}),tablet:e=>(0,Le.jsx)(Is,{data:e}),node:e=>(0,Le.jsx)(Rs,{data:e}),nodeEndpoints:e=>(0,Le.jsx)(Ns,{data:e}),tabletsOverall:e=>(0,Le.jsx)(Ls,{data:e}),histogram:e=>(0,Le.jsx)(zs,{data:e}),cell:e=>(0,Le.jsx)("div",{className:Bs(),children:e}),json:e=>(0,Le.jsx)("div",{className:Us(),children:(0,Le.jsx)(bs(),{data:e,search:!1,isExpanded:()=>!0,className:Us("inspector")})})};const Vs=(0,ae.$j)((e=>{const{toolTipVisible:t,currentHoveredRef:n,data:r,templateType:i,additionalData:o,positions:a}=e.tooltip,{popupClassName:s}=o||{};return{toolTipVisible:t,currentHoveredRef:n,data:r,template:Hs[i],additionalData:o,positions:a,popupClassName:s}}),{hideTooltip:vs.i8})((function(e){var t,n;const r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{rect:t,contextElement:n}=e,r=a.useRef(gs),i=a.useRef({contextElement:n,getBoundingClientRect(){const{top:e,right:t,bottom:n,left:i}=r.current;return{top:e,right:t,bottom:n,left:i,width:t-i,height:n-e}}});if(i.current.contextElement=n,t){const{top:e=0,left:n=0,right:i=n,bottom:o=e}=t;r.current={top:e,right:i,bottom:o,left:n}}else r.current=gs;return i}({rect:{top:null===(t=e.positions)||void 0===t?void 0:t.top,left:null===(n=e.positions)||void 0===n?void 0:n.left}});a.useEffect((()=>(window.addEventListener("scroll",i,!0),()=>{window.removeEventListener("scroll",i)})),[]);const i=()=>{const{hideTooltip:t,toolTipVisible:n}=e;n&&setTimeout((()=>t()),500)},{className:o="",toolTipVisible:s,currentHoveredRef:l,data:c,additionalData:u,positions:d}=e;return(0,Le.jsx)("div",{className:"redux-tooltip ".concat(o),children:d?((t,n,i,o)=>{const{template:s,popupClassName:l,hideTooltip:c}=e;return(0,Le.jsx)(a.Fragment,{children:(0,Le.jsx)(ti,{open:t,placement:["top","bottom","left","right"],contentClassName:l,anchorRef:r,onOutsideClick:c,children:i&&s(i,o)})})})(s,0,c,u):((t,n,r,i)=>{const{template:o,popupClassName:a,hideTooltip:s}=e;return(0,Le.jsx)(ti,{open:t,anchorRef:{current:n},hasArrow:!0,placement:["top","bottom","left","right"],className:a,onOutsideClick:s,children:r&&o(r,i)})})(s,l,c,u)})}));function Gs(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"unknown";const t=()=>null;return t.displayName="Slot(".concat(e,")"),t.__slotName=e,t}function Ws(e){return"function"===typeof e&&"__slotName"in e}class qs{constructor(e){this.children=null,this.slots=void 0;const t=[];this.slots=new Map,a.Children.forEach(e,(e=>{if(n=e,a.isValidElement(n)&&Ws(n.type)){const{type:t,props:n,ref:r}=e;if(this.slots.has(t))throw new Error('Duplicate slot elements with name "'.concat(t.__slotName,'" found.'));this.slots.set(t,{name:t.__slotName,props:n,ref:r,rendered:n.children})}else null!==e&&void 0!==e&&""!==e&&t.push(e);var n}));t.length>0&&(this.children=t)}get(e){if(!Ws(e))throw new Error('Invalid slot component. Should be a component created using "createSlot".');return this.slots.get(e)}}var Zs=n(99337);const Ys=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M3.03 1.97a.75.75 0 0 0-1.06 1.06l.83.83A8.206 8.206 0 0 0 .5 6.876l-.26.585a1.328 1.328 0 0 0 0 1.079l.26.585a8.208 8.208 0 0 0 11.434 3.87l1.036 1.035a.75.75 0 1 0 1.06-1.06l-11-11Zm7.788 9.908-1.294-1.293a3 3 0 0 1-4.109-4.109L3.866 4.927A6.707 6.707 0 0 0 1.87 7.486L1.641 8l.23.515a6.708 6.708 0 0 0 8.947 3.363ZM6.55 7.611A1.502 1.502 0 0 0 8.389 9.45L6.55 7.611Zm1.658-2.604 2.784 2.784a3 3 0 0 0-2.784-2.784Zm5.92 3.508a6.704 6.704 0 0 1-.915 1.496l1.065 1.066A8.203 8.203 0 0 0 15.5 9.125l.26-.585a1.328 1.328 0 0 0 0-1.08l-.26-.584A8.208 8.208 0 0 0 5.572 2.37L6.81 3.61a6.708 6.708 0 0 1 7.32 3.877l.228.514-.228.515Z",clipRule:"evenodd"})),Ks=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M1.87 8.515 1.641 8l.229-.515a6.708 6.708 0 0 1 12.26 0l.228.515-.229.515a6.708 6.708 0 0 1-12.259 0ZM.5 6.876l-.26.585a1.328 1.328 0 0 0 0 1.079l.26.584a8.208 8.208 0 0 0 15 0l.26-.584a1.328 1.328 0 0 0 0-1.08l-.26-.584a8.208 8.208 0 0 0-15 0ZM9.5 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z",clipRule:"evenodd"}));var Qs,Xs;function $s(){return $s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},$s.apply(this,arguments)}const Js=function(e){return a.createElement("svg",$s({viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),Qs||(Qs=a.createElement("path",{d:"M0 16C0 7.163 7.163 0 16 0s16 7.163 16 16-7.163 16-16 16S0 24.837 0 16z",fill:"#5282FF"})),Xs||(Xs=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M24 9.5c0 .828-1.343 1.5-3 1.5s-3-.672-3-1.5S19.343 8 21 8s3 .672 3 1.5zM13 19.6v2.7c0 .9 1.3 1.6 3 1.6s3-.7 3-1.6v-2.7c-.8.7-1.9 1-3 1s-2.2-.3-3-1zm5-8.6v-.4c.8.7 1.9 1 3 1s2.2-.3 3-1v2.8c0 .8-1.2 1.5-2.8 1.6l-2.475 2.871c.176.192.275.405.275.629 0 .828-1.343 1.5-3 1.5s-3-.672-3-1.5a.9.9 0 01.232-.58L10.8 15.1C9.3 15 8 14.3 8 13.5v-2.9c.8.7 1.9 1 3 1s2.2-.3 3-1v.4h4zm-.276 6.272A5.27 5.27 0 0016 17c-.265 0-.522.017-.766.05a5.994 5.994 0 00-1.134.25L12 14.9c1.1-.2 2-.8 2-1.5V12h4v1.4c0 .7.7 1.3 1.8 1.5l-2.076 2.372zM14 9.5c0 .828-1.343 1.5-3 1.5s-3-.672-3-1.5S9.343 8 11 8s3 .672 3 1.5z",fill:"#fff"})))},el=Me("authentication");const tl=function(e){let{closable:t=!1}=e;const n=Ao(),r=_a(),i=Ca(),{returnUrl:o}=(0,Ta.mB)(i),{error:s}=Do((e=>e.authentication)),[l,c]=a.useState(""),[u,d]=a.useState(""),[h,p]=a.useState(""),[f,m]=a.useState(""),[g,v]=a.useState(!1);a.useEffect((()=>{var e,t,n,r;null!==s&&void 0!==s&&null!==(e=s.data)&&void 0!==e&&null!==(t=e.error)&&void 0!==t&&t.includes("user")&&p(s.data.error),null!==s&&void 0!==s&&null!==(n=s.data)&&void 0!==n&&null!==(r=n.error)&&void 0!==r&&r.includes("password")&&m(s.data.error)}),[s]);const y=()=>{n((0,ns.YR)(l,u)).then((()=>{if(o){const e=decodeURIComponent(o.toString()),t=new URL(e),n=t.pathname+t.search;r.replace(n)}}))},b=e=>{13===e.keyCode&&y()};return(0,Le.jsxs)("section",{className:el(),children:[(0,Le.jsxs)("form",{className:el("form-wrapper"),children:[(0,Le.jsxs)("div",{className:el("header"),children:[(0,Le.jsxs)("div",{className:el("logo"),children:[(0,Le.jsx)(we.J,{data:Js,size:24}),"YDB"]}),(0,Le.jsx)(si,{href:"http://ydb.tech/docs",target:"_blank",children:"Documentation"})]}),(0,Le.jsx)("h2",{className:el("title"),children:"Sign in"}),(0,Le.jsx)("div",{className:el("field-wrapper"),children:(0,Le.jsx)(Ii,{value:l,onUpdate:e=>{c(e),p("")},placeholder:"Username",error:h,onKeyDown:b,size:"l",autoFocus:!0})}),(0,Le.jsxs)("div",{className:el("field-wrapper"),children:[(0,Le.jsx)(Ii,{value:u,onUpdate:e=>{d(e),m("")},type:g?"text":"password",placeholder:"Password",error:f,onKeyDown:b,size:"l"}),(0,Le.jsx)(Ie.z,{onClick:()=>{v((e=>!e))},size:"l",className:el("show-password-button"),children:(0,Le.jsx)(we.J,{data:g?Ys:Ks,size:16})})]}),(0,Le.jsx)(Ie.z,{view:"action",onClick:y,width:"max",size:"l",disabled:Boolean(!l||h||f),className:el("button-sign-in"),children:"Sign in"})]}),t&&r.length>1&&(0,Le.jsx)(Ie.z,{onClick:()=>{r.go(-1)},className:el("close"),children:(0,Le.jsx)(we.J,{data:tt.Z,size:24})})]})},nl=(0,le.Ge)("skeleton");function rl(e){let{className:t,style:n,qa:r}=e;return a.createElement("div",{className:nl(null,t),style:n,"data-qa":r})}var il=n(63041),ol=n.n(il),al=n(75850);const sl=(e,t)=>{let{openDelay:n=250,closeDelay:r,preventTriggerOnFocus:i=!1}=t;const[o,s,l]=function(e){const[t,n]=a.useState(e);return[t,a.useCallback((()=>n(!0)),[]),a.useCallback((()=>n(!1)),[]),a.useCallback((()=>n((e=>!e))),[])]}(!1),c=a.useRef(),u=a.useRef(!1);return a.useEffect((()=>{if(e)return e.addEventListener("mouseenter",t),e.addEventListener("mouseleave",o),e.addEventListener("keydown",h),i||(e.addEventListener("focus",a),e.addEventListener("blur",d)),()=>{e.removeEventListener("mouseenter",t),e.removeEventListener("mouseleave",o),e.removeEventListener("focus",a),e.removeEventListener("blur",d),e.removeEventListener("keydown",h)};function t(){clearTimeout(c.current),c.current=window.setTimeout(s,n)}function o(){clearTimeout(c.current),c.current=window.setTimeout(l,r)}function a(e){u.current||document.activeElement!==e.target||(u.current=!0,clearTimeout(c.current),s())}function d(e){u.current&&!e.currentTarget.contains(e.relatedTarget)&&(u.current=!1,clearTimeout(c.current),l())}function h(e){e.key===Zr.V.ESCAPE&&(clearTimeout(c.current),l())}}),[e,s,l,n,r,i]),o},ll=(0,le.Ge)("tooltip"),cl=["bottom","top"],ul=e=>{const{children:t,content:n,disabled:r,placement:i=cl,qa:o,id:s,className:l,style:c,disablePortal:u,contentClassName:d,openDelay:h=1e3,closeDelay:p}=e,[f,m]=a.useState(null),g=sl(f,{openDelay:h,closeDelay:p,preventTriggerOnFocus:!0}),v=a.Children.only(t),y=Et(m,v.ref);return a.createElement(a.Fragment,null,a.cloneElement(v,{ref:y}),f?a.createElement(ti,{id:s,role:"tooltip",className:ll(null,l),style:c,open:g&&!r,placement:i,anchorRef:{current:f},disablePortal:u,disableEscapeKeyDown:!0,disableOutsideClick:!0,disableLayer:!0,qa:o},a.createElement("div",{className:ll("content",d)},a.createElement(Fi.x,{variant:"body-short",color:"complementary"},n))):null)},dl=Me("clipboard-button");function hl(e){let{className:t,status:n,title:r,...i}=e;return(0,Le.jsx)(ul,{content:"success"===n?"Copied!":r||"Copy",placement:"bottom-start",children:(0,Le.jsx)(Ie.z,{...i,className:dl(null,t),children:(0,Le.jsx)(Ie.z.Icon,{children:(0,Le.jsx)(at,{status:n,size:16})})})})}function pl(e){let{text:t,...n}=e;return(0,Le.jsx)(ut,{text:t,timeout:1e3,children:e=>(0,Le.jsx)(hl,{...n,status:e})})}a.Component;a.Component;var fl=function(e,t){return"function"===typeof e?e(t):e},ml=function(e,t){return"string"===typeof e?(0,Go.ob)(e,null,null,t):e},gl=function(e){return e},vl=a.forwardRef;"undefined"===typeof vl&&(vl=gl);var yl=vl((function(e,t){var n=e.innerRef,r=e.navigate,i=e.onClick,o=(0,Ko.Z)(e,["innerRef","navigate","onClick"]),s=o.target,l=(0,qo.Z)({},o,{onClick:function(e){try{i&&i(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||s&&"_self"!==s||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return l.ref=gl!==vl&&t||n,a.createElement("a",l)}));var bl=vl((function(e,t){var n=e.component,r=void 0===n?yl:n,i=e.replace,o=e.to,s=e.innerRef,l=(0,Ko.Z)(e,["component","replace","to","innerRef"]);return a.createElement(ra.Consumer,null,(function(e){e||(0,Wo.Z)(!1);var n=e.history,c=ml(fl(o,e.location),e.location),u=c?n.createHref(c):"",d=(0,qo.Z)({},l,{href:u,navigate:function(){var t=fl(o,e.location),r=(0,Go.Ep)(e.location)===(0,Go.Ep)(ml(t));(i||r?n.replace:n.push)(t)}});return gl!==vl?d.ref=t||s:d.innerRef=s,a.createElement(r,d)}))})),xl=function(e){return e},wl=a.forwardRef;"undefined"===typeof wl&&(wl=xl);wl((function(e,t){var n=e["aria-current"],r=void 0===n?"page":n,i=e.activeClassName,o=void 0===i?"active":i,s=e.activeStyle,l=e.className,c=e.exact,u=e.isActive,d=e.location,h=e.sensitive,p=e.strict,f=e.style,m=e.to,g=e.innerRef,v=(0,Ko.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.createElement(ra.Consumer,null,(function(e){e||(0,Wo.Z)(!1);var n=d||e.location,i=ml(fl(m,n),n),y=i.pathname,b=y&&y.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),x=b?fa(n.pathname,{path:b,exact:c,sensitive:h,strict:p}):null,w=!!(u?u(x,n):x),S="function"===typeof l?l(w):l,_="function"===typeof f?f(w):f;w&&(S=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(S,o),_=(0,qo.Z)({},_,s));var C=(0,qo.Z)({"aria-current":w&&r||null,className:S,style:_,to:i},v);return xl!==wl?C.ref=t||g:C.innerRef=g,a.createElement(bl,C)}))}));const Sl=Me("g-link"),_l=e=>{let{className:t,to:n,onClick:r,...i}=e;return n?(0,Le.jsx)(bl,{to:n,onClick:r,className:Sl({view:"normal"},t),...i}):(0,Le.jsx)("span",{className:t,onClick:r,children:i.children})};var Cl=n(67585);const El=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0Zm-6 2.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM8.75 5a.75.75 0 0 0-1.5 0v2.5a.75.75 0 0 0 1.5 0V5Z",clipRule:"evenodd"}));var Tl=n(71586);const Ol=Me("ydb-status-icon"),Nl={[al.K.Blue]:Cl.Z,[al.K.Yellow]:El,[al.K.Orange]:Tl.Z,[al.K.Red]:El};function kl(e){let{status:t=al.K.Grey,size:n="s",mode:r="color",className:i}=e;const o={state:t.toLowerCase(),size:n};return"icons"===r&&t in Nl?(0,Le.jsx)(we.J,{className:Ol("status-icon",o,i),data:Nl[t]}):(0,Le.jsx)("div",{className:Ol("status-color",o,i)})}const jl=Me("entity-status");function Il(e){let{status:t=al.K.Grey,name:n="",label:r,path:i,iconPath:o,size:a="s",mode:s="color",showStatus:l=!0,externalLink:c=!1,withLeftTrim:u=!1,hasClipboardButton:d,clipboardButtonAlwaysVisible:h=!1,className:p,additionalControls:f}=e;const m=()=>l?(0,Le.jsx)(kl,{className:jl("icon"),status:t,size:a,mode:s}):null;return(0,Le.jsxs)("div",{className:jl(null,p),title:n,children:[o?(g=o,(0,Le.jsx)(si,{target:"_blank",href:g,children:m()})):m(),r&&(0,Le.jsx)("span",{title:r,className:jl("label",{size:a,state:t.toLowerCase()}),children:r}),(0,Le.jsx)("span",{className:jl("link",{"with-left-trim":u}),children:i?c?(0,Le.jsx)(si,{className:jl("name"),href:i,children:n}):(0,Le.jsx)(_l,{className:jl("name"),to:i,children:n}):n&&(0,Le.jsx)("span",{className:jl("name"),children:n})}),d&&(0,Le.jsx)(pl,{text:n,size:"s",className:jl("clipboard-button",{visible:h})}),f]});var g}var Pl=n(77915),Dl=n(905);const Al=Dl.h.injectEndpoints({endpoints:e=>({getClusterNodes:e.query({queryFn:async()=>{try{const e=await window.api.getClusterNodes(),{SystemStateInfo:t=[]}=e;return{data:t.map((e=>({...e,uptime:(0,ks.fG)(e.StartTime)})))}}catch(e){return{error:e}}},providesTags:["All"]})}),overrideExisting:"throw"});var Rl=n(79061),Ml=n(94076),Ll=n(30601);const Fl=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;const n=e.reduce(((e,t)=>(t.Version&&(e[t.Version]?e[t.Version]=e[t.Version]+1:e[t.Version]=1),e)),{});return Object.keys(n).map((r=>({title:r,version:r,color:null===t||void 0===t?void 0:t.get((0,Ll.H)(r)),value:n[r]/e.length*100})))};var zl=n(17095);function Bl(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return{...e,default:t,decode:function(){const r=e.decode(...arguments);return void 0===r||n&&null===r?t:r}}}function Ul(e,t){if(null==e)return e;if(0===e.length&&(!t||t&&""!==e))return null;const n=e instanceof Array?e[0]:e;return null==n||t||""!==n?n:null}function Hl(e){const t=Ul(e,!0);return null==t?t:String(t)}function Vl(e){const t=function(e){return null==e||e instanceof Array?e:""===e?[]:[e]}(e);return t}const Gl={encode:function(e){return null==e?e:String(e)},decode:Hl},Wl={encode:function(e){return e},decode:Vl};'{}[],":'.split("").map((e=>[e,encodeURIComponent(e)]));function ql(e,t){const n={},r=Object.keys(t);for(const i of r){const r=t[i];e[i]?n[i]=e[i].encode(t[i]):n[i]=null==r?r:String(r)}return n}const Zl=new class{constructor(){this.paramsMap=new Map,this.registeredParams=new Map}set(e,t,n,r){this.paramsMap.set(e,{stringified:t,decoded:n,decode:r})}has(e,t,n){if(!this.paramsMap.has(e))return!1;const r=this.paramsMap.get(e);return!!r&&(r.stringified===t&&(null==n||r.decode===n))}get(e){var t;if(this.paramsMap.has(e))return null==(t=this.paramsMap.get(e))?void 0:t.decoded}registerParams(e){for(const t of e){const e=this.registeredParams.get(t)||0;this.registeredParams.set(t,e+1)}}unregisterParams(e){for(const t of e){const e=(this.registeredParams.get(t)||0)-1;e<=0?(this.registeredParams.delete(t),this.paramsMap.has(t)&&this.paramsMap.delete(t)):this.registeredParams.set(t,e)}}clear(){this.paramsMap.clear(),this.registeredParams.clear()}};function Yl(e,t,n,r){var i;if(!n||!t.length)return e;let o={...e},a=!1;for(const s of t)Object.prototype.hasOwnProperty.call(o,s)||(o[s]=null!=(i=n[s])?i:r,a=!0);return a?o:e}const Kl=Object.prototype.hasOwnProperty;function Ql(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function Xl(e,t,n){var r,i;if(Ql(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;const o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;for(let s=0;s<o.length;s++){const a=null!=(i=null==(r=null==n?void 0:n[o[s]])?void 0:r.equals)?i:Ql;if(!Kl.call(t,o[s])||!a(e[o[s]],t[o[s]]))return!1}return!0}function $l(e,t,n){const r={},i=Object.keys(t);for(const o of i){const i=t[o],a=e[o];let s;if(n.has(o,a,i.decode))s=n.get(o);else{if(s=i.decode(a),i.equals&&n.has(o,a)){const e=n.get(o);i.equals(s,e)&&(s=e)}void 0!==s&&n.set(o,a,s,i.decode)}void 0===s&&void 0!==i.default&&(s=i.default),r[o]=s}return r}function Jl(){let e;return function(t,n,r){const i=$l(t,n,r);return null!=e&&Xl(e,i)?e:(e=i,i)}}let ec,tc,nc,rc={};const ic=(e,t,n)=>{if(ec===t&&nc===e&&tc===n)return rc;ec=t,nc=e;const r=e(null!=t?t:"");tc=n;const i=function(e){if(e)return Object.fromEntries(e.split("\n").map((e=>e.split("\0"))))}(n);for(let[o,a]of Object.entries(r)){(null==i?void 0:i[o])&&(delete r[o],o=i[o],r[o]=a);const e=rc[o];Xl(a,e)&&(r[o]=e)}return rc=r,r},oc={searchStringToObject:function(e){const t=new URLSearchParams(e),n={};for(let[r,i]of t)Object.prototype.hasOwnProperty.call(n,r)?Array.isArray(n[r])?n[r].push(i):n[r]=[n[r],i]:n[r]=i;return n},objectToSearchString:function(e){const t=new URLSearchParams,n=Object.entries(e);for(const[r,i]of n)if(void 0!==i&&null!==i)if(Array.isArray(i))for(const e of i)t.append(r,null!=e?e:"");else t.append(r,i);return t.toString()},updateType:"pushIn",includeKnownParams:void 0,includeAllParams:!1,removeDefaultsFromUrl:!1,enableBatching:!1,skipUpdateWhenNoChange:!0};function ac(e,t){null==t&&(t={});const n={...e,...t};return t.params&&e.params&&(n.params={...e.params,...t.params}),n}const sc={adapter:{},options:oc},lc=a.createContext(sc);function cc(e){let{children:t,adapter:n,options:r}=e;const{adapter:i,options:o}=a.useContext(lc),s=a.useMemo((()=>({adapter:null!=n?n:i,options:ac(o,r)})),[n,r,i,o]);return a.createElement(lc.Provider,{value:s},t)}function uc(e){let{children:t,adapter:n,options:r}=e;const i=n;return i?a.createElement(i,null,(e=>a.createElement(cc,{adapter:e,options:r},t))):a.createElement(cc,{options:r},t)}function dc(e){let{changes:t,updateType:n,currentSearchString:r,paramConfigMap:i,options:o}=e;const{searchStringToObject:a,objectToSearchString:s}=o;let l;null==n&&(n=o.updateType);const c=ic(a,r),u=Yl(i,Object.keys(t),o.params);let d,h;if("function"===typeof t){d=t($l(c,u,Zl))}else d=t;return l=ql(u,d),o.removeDefaultsFromUrl&&function(e,t){var n;for(const r in e)void 0!==(null==(n=t[r])?void 0:n.default)&&void 0!==e[r]&&t[r].encode(t[r].default)===e[r]&&(e[r]=void 0)}(l,u),l=function(e,t){var n;let r={};for(const i in e)null!=(null==(n=t[i])?void 0:n.urlName)?r[t[i].urlName]=e[i]:r[i]=e[i];return r}(l,u),h=s("push"===n||"replace"===n?l:{...c,...l}),(null==h?void 0:h.length)&&"?"!==h[0]&&(h="?".concat(h)),null!=h?h:""}const hc=e=>e(),pc=e=>setTimeout((()=>e()),0),fc=[];function mc(e,t){const{adapter:n,options:r}=function(){const e=a.useContext(lc);if(void 0===e||e===sc)throw new Error("useQueryParams must be used within a QueryParamProvider");return e}(),[i]=(0,a.useState)(Jl),{paramConfigMap:o,options:s}=function(e,t){let n,r;void 0===e?(n={},r=t):Array.isArray(e)?(n=Object.fromEntries(e.map((e=>[e,"inherit"]))),r=t):(n=e,r=t);return{paramConfigMap:n,options:r}}(e,t),l=(0,a.useMemo)((()=>ac(r,s)),[r,s]);let c=function(e,t){var n,r,i;const o={};let a=!1;const s=Object.keys(e);let l=s;if(t.includeKnownParams||!1!==t.includeKnownParams&&0===s.length){const e=Object.keys(null!=(n=t.params)?n:{});l.push(...e)}for(const c of l){const n=e[c];null==n||"object"!==typeof n?(a=!0,o[c]=null!=(i=null==(r=t.params)?void 0:r[c])?i:Gl):o[c]=n}return a?o:e}(o,l);const u=ic(l.searchStringToObject,n.location.search,function(e){let t;for(const n in e)if(e[n].urlName){const r=e[n].urlName,i="".concat(r,"\0").concat(n);t?t.push(i):t=[i]}return t?t.join("\n"):void 0}(c));l.includeAllParams&&(c=Yl(c,Object.keys(u),l.params,Gl));const d=i(u,c,Zl),h=Object.keys(c).join("\0");(0,a.useEffect)((()=>{const e=h.split("\0");return Zl.registerParams(e),()=>{Zl.unregisterParams(e)}}),[h]);const p={adapter:n,paramConfigMap:c,options:l},f=(0,a.useRef)(p);null==f.current&&(f.current=p),(0,a.useEffect)((()=>{f.current.adapter=n,f.current.paramConfigMap=c,f.current.options=l}),[n,c,l]);const[m]=(0,a.useState)((()=>(e,t)=>{const{adapter:n,paramConfigMap:r,options:i}=f.current;null==t&&(t=i.updateType),function(e){let{immediate:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};fc.push(e);let n=t?hc:pc;1===fc.length&&n((()=>{const t=fc.slice();fc.length=0;const n=t[0].currentSearchString;let r;for(let e=0;e<t.length;++e)r=dc(0===e?t[e]:{...t[e],currentSearchString:r});e.options.skipUpdateWhenNoChange&&r===n||function(e){let{searchString:t,adapter:n,navigate:r,updateType:i}=e;const o={...n.location,search:t};r&&("string"===typeof i&&i.startsWith("replace")?n.replace(o):n.push(o))}({searchString:null!=r?r:"",adapter:t[t.length-1].adapter,navigate:!0,updateType:t[t.length-1].updateType})}))}({changes:e,updateType:t,currentSearchString:n.location.search,paramConfigMap:r,options:i,adapter:n},{immediate:!i.enableBatching})}));return[d,m]}var gc=mc;const vc=(0,We.wZ)("ydb-entities-count",{ru:{of:"\u0438\u0437"},en:{of:"of"}}),yc=e=>{let{total:t,current:n,label:r,loading:i,className:o}=e,a="";return r&&(a+="".concat(r,": ")),i?a+="...":(a+="".concat(n),t&&Number(t)!==Number(n)&&(a+=" ".concat(vc("of")," ").concat(t))),(0,Le.jsx)(ft,{theme:"info",size:"m",className:o,children:a})};var bc,xc,wc,Sc,_c,Cc,Ec,Tc,Oc,Nc,kc;function jc(){return jc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},jc.apply(this,arguments)}const Ic=function(e){return a.createElement("svg",jc({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 383 396",fill:"none"},e),bc||(bc=a.createElement("path",{d:"M307.333 168.43c9.4-14.2 14.1-32.6 14.1-55.3 0-34.4-11.7-61.9-35.3-82.2-23.4-20.5-63-30.7-106.7-30.7-13.1 0-24.1.9-34.8 2.7-10.7 1.8-20.1 3.9-28.2 6.3-5.4 1.6-16.1 5.7-23.3 8.6-4.1 1.7-6.9 6-6.9 10.8v39.5c0 8.2 7.8 13.8 14.9 10.5a458.74 458.74 0 001.806-.818c2.367-1.074 4.452-2.02 5.894-2.581 5.7-2.3 12.4-4.2 20.1-5.8 7.7-1.6 16.3-2.4 25.7-2.4 22.2 0 43.1 5 52.3 14.9 9.2 10 13.8 22.499 13.8 37.499 0 13-2.7 24.1-8.2 33.2-5.5 9.1-13.1 18-22.9 26.5-7.9 6.9-15.2 13.5-22 19.8-6.8 6.3-12.6 13.2-17.5 20.7s-8.7 16-11.3 25.3c-1.6 5.6-2.7 20.3-3.3 31-.3 6.6 4.5 12.2 10.7 12.2h51.2c5.4 0 10-4.4 10.6-10.2.6-5.7 2-12.5 5.5-17.8 4-5.9 8.7-11.8 14.7-17.3s13-11 20.9-16.7c8-5.6 16.2-12.1 24.9-19.4 12.8-11.4 23.9-24.1 33.3-38.3zm-167.6 212.7c9 9.5 20.1 14.2 33.4 14.2 6.3 0 12.4-1.3 18.2-4 5.8-2.6 10.9-6 15.2-10.3 4.3-4.3 7.7-9.4 10.2-15.2 2.5-5.8 3.7-12.1 3.7-19 0-6.8-1.2-13.2-3.7-19-2.5-5.8-5.9-10.9-10.2-15.4-4.3-4.5-9.4-7.9-15.2-10.3-5.8-2.4-11.9-3.6-18.2-3.6-13.3 0-24.4 4.6-33.4 13.9s-13.5 20.8-13.5 34.5c0 13.4 4.5 24.8 13.5 34.2z",fill:"#ECF2F9"})),xc||(xc=a.createElement("path",{d:"M213.933 353.03h-193.5c-10 0-18.2-8.2-18.2-18.2v-125.4c0-10 8.2-18.2 18.2-18.2h193.5c10 0 18.2 8.2 18.2 18.2v125.4c0 10.1-8.2 18.2-18.2 18.2z",stroke:"#00E6C5",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4 10"})),wc||(wc=a.createElement("path",{d:"M21.034 214.732a5.2 5.2 0 100-10.4 5.2 5.2 0 000 10.4zm16.899 0a5.2 5.2 0 100-10.4 5.2 5.2 0 000 10.4zm16.9 0a5.2 5.2 0 100-10.4 5.2 5.2 0 000 10.4z",fill:"#2EE5C0"})),Sc||(Sc=a.createElement("path",{d:"M2.533 228.129h228.9",stroke:"#00E6C5",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:"4 10"})),_c||(_c=a.createElement("path",{d:"M301.033 264.83l-216.9 12c-7.3.4-13.3-5.2-13.3-12.5V96.93c0-7.3 6-12.9 13.3-12.5l216.9 12c5.6.3 10.1 5.7 10.1 12v144.4c0 6.3-4.5 11.7-10.1 12z",fill:"#027BF3"})),Cc||(Cc=a.createElement("path",{d:"M90.433 107.93c3.4.2 6.1-2.4 6.1-5.8s-2.7-6.3-6.1-6.4c-3.3-.2-6.1 2.4-6.1 5.8s2.7 6.3 6.1 6.4zm19.8.798c3.3.1 6-2.5 6-5.8s-2.7-6.1-6-6.3c-3.3-.1-6 2.5-6 5.8s2.7 6.2 6 6.3zm25.2-4.9c0 3.3-2.6 5.9-5.8 5.7-3.2-.1-5.9-2.9-5.9-6.2 0-3.3 2.6-5.9 5.9-5.7 3.2.1 5.8 2.9 5.8 6.2zm66.001 61.703l19.1-20.9 17.4 19.1-18.9 20.9 18.9 20.5-17.4 19.5-19.1-20.5-19.4 21.5-18.1-19.1 19.6-21.5-19.6-21 18.1-19.5 19.4 21z",fill:"#fff"})),Ec||(Ec=a.createElement("path",{d:"M327.433 112.83c0-28.4-21.7-37.1-33.5-37.9-.1 0-33.5 2.3-33.5 45.3 0 25.5 21.2 45.5 46 44.6 7.8-.3 14.9-2.6 21-6.4v-45.6z",fill:"#67B0F8"})),Tc||(Tc=a.createElement("path",{d:"M380.534 195.931c-2.9 3.4-7.6 3.7-10.5.8l-38.6-39 11.3-12.2 37.8 39c2.9 3 2.9 8 0 11.4z",fill:"#FF4645"})),Oc||(Oc=a.createElement("path",{d:"M342.833 145.629l-11.3 12.2 3.7 3.7c1.9 1.9 4.9 2 6.8.2 1.1-1 2.2-2.1 3.2-3.2.6-.7 1.3-1.4 1.9-2.1 1.6-1.9 1.5-4.8-.3-6.6l-4-4.2z",fill:"#D93654"})),Nc||(Nc=a.createElement("path",{d:"M267.633 154.13c-23-21.401-23-57.3 0-78.1 21.9-19.8 55.1-17 74.4 4.3 18.4 20.399 18.4 51.7 0 71.6-19.3 20.8-52.5 22.6-74.4 2.2zm9.4-10.802c15.6 15 39.8 14.2 54.1-.9 13.8-14.6 13.8-37.8 0-52.8-14.3-15.5-38.5-17-54.1-2.5-16.2 15.1-16.2 40.7 0 56.2z",fill:"#00236B"})),kc||(kc=a.createElement("path",{d:"M41.034 42.73a2 2 0 10-4 0h4zm-4 8.3a2 2 0 004 0h-4zm4 17.2a2 2 0 10-4 0h4zm-4 8.9a2 2 0 004 0h-4zm19.2-15.2a2 2 0 000-4v4zm-8.2-4a2 2 0 100 4v-4zm-17.9 4a2 2 0 000-4v4zm-8.2-4a2 2 0 100 4v-4zm15.1-15.2v8.3h4v-8.3h-4zm0 25.5v8.9h4v-8.9h-4zm19.2-10.3h-8.2v4h8.2v-4zm-26.1 0h-8.2v4h8.2v-4z",fill:"#2EE5C0"})))},Pc=Me("empty-state"),Dc={s:150,m:250,l:350},Ac=e=>{let{image:t,title:n,description:r,actions:i,size:o="m",position:a="center"}=e;return(0,Le.jsx)("div",{className:Pc({size:o}),children:(0,Le.jsxs)("div",{className:Pc("wrapper",{size:o,position:a}),children:[(0,Le.jsx)("div",{className:Pc("image"),children:t||(0,Le.jsx)(we.J,{data:Ic,width:Dc[o],height:Dc[o]})}),(0,Le.jsx)("div",{className:Pc("title",{size:o}),children:n}),(0,Le.jsx)("div",{className:Pc("description"),children:r}),(0,Le.jsx)("div",{className:Pc("actions"),children:i})]})})},Rc=JSON.parse('{"403.title":"Access denied","403.description":"You don\u2019t have the necessary roles to view this page.","responseError.defaultMessage":"Response error"}'),Mc=JSON.parse('{"403.title":"\u0414\u043e\u0441\u0442\u0443\u043f \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d","403.description":"\u0423 \u0432\u0430\u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.","responseError.defaultMessage":"\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430"}'),Lc=(0,We.wZ)("ydb-errors-access-denied",{ru:Mc,en:Rc}),Fc=e=>{let{title:t,description:n,...r}=e;return(0,Le.jsx)(Ac,{image:(0,Le.jsx)(Ge,{name:"403"}),title:t||Lc("403.title"),description:n||Lc("403.description"),...r})},zc=e=>{let{error:t,className:n,defaultMessage:r=Lc("responseError.defaultMessage")}=e,i="";return t&&"string"===typeof t&&(i=t),t&&"object"===typeof t&&("statusText"in t&&"string"===typeof t.statusText?i=t.statusText:"message"in t&&"string"===typeof t.message&&(i=t.message)),(0,Le.jsx)("div",{className:"error ".concat(n),children:i||r})},Bc=e=>{let{value:t,onChange:n,className:r}=e;return(0,Le.jsxs)(Oo,{value:t,onUpdate:n,className:r,children:[(0,Le.jsx)(Oo.Option,{value:Ro.pu.ALL,children:Ro.pu.ALL}),(0,Le.jsx)(Oo.Option,{value:Ro.pu.PROBLEMS,children:Ro.pu.PROBLEMS})]})};function Uc(e,t){return e.map((e=>{var n;let r;e.sub&&(r=Uc(e.sub,t));const i=null!==(n=t[e.name])&&void 0!==n?n:e.width;return Object.assign(Object.assign({},e),{width:i,sub:r})}))}var Hc=n(19812),Vc=n(18193);const Gc=e=>{const t=a.useCallback((()=>e?Vc.r.readUserSettingsValue(e,{}):{}),[e]);return function(e){let{saveSizes:t,getSizes:n}=e;const[r,i]=a.useState((()=>n()));return[r,a.useCallback(((e,n)=>{i((r=>{const i=Object.assign(Object.assign({},r),{[e]:n});return t(i),i}))}),[t])]}({saveSizes:a.useCallback((t=>{e&&Vc.r.setUserSettingsValue(e,t)}),[e]),getSizes:t})},Wc=Me("ydb-resizeable-data-table");function qc(e){let{columnsWidthLSKey:t,columns:n,settings:r,wrapperClassName:i,...o}=e;const[a,s]=Gc(t),l=Uc(n,a),c={...r,defaultResizeable:!0};return(0,Le.jsx)("div",{className:Wc(null,i),children:(0,Le.jsx)(Hc.ZP,{theme:"yandex-cloud",columns:l,onResize:s,settings:c,...o})})}const Zc=Me("ydb-search"),Yc=e=>{let{onChange:t,value:n="",className:r,debounce:i=200,placeholder:o}=e;const[s,l]=a.useState(n),c=a.useRef();a.useEffect((()=>{l((e=>e!==n?n:e))}),[n]);return(0,Le.jsx)(Ii,{hasClear:!0,autoFocus:!0,className:Zc(null,r),placeholder:o,value:s,onUpdate:e=>{l(e),window.clearTimeout(c.current),c.current=window.setTimeout((()=>{null===t||void 0===t||t(e)}),i)}})},Kc=Me("table-skeleton"),Qc=e=>{let{rows:t=2,className:n}=e;return(0,Le.jsxs)("div",{className:Kc(null,n),children:[(0,Le.jsxs)("div",{className:Kc("row"),children:[(0,Le.jsx)(rl,{className:Kc("col-1")}),(0,Le.jsx)(rl,{className:Kc("col-2")}),(0,Le.jsx)(rl,{className:Kc("col-3")}),(0,Le.jsx)(rl,{className:Kc("col-4")}),(0,Le.jsx)(rl,{className:Kc("col-5")})]}),[...new Array(t)].map(((e,t)=>(0,Le.jsx)("div",{className:Kc("row"),children:(0,Le.jsx)(rl,{className:Kc("col-full")})},"skeleton-row-".concat(t))))]})},Xc=Me("ydb-table-with-controls-layout"),$c=e=>{let{children:t,className:n}=e;return(0,Le.jsx)("div",{className:Xc(null,n),children:t})};$c.Controls=function(e){let{children:t,className:n}=e;return(0,Le.jsx)("div",{className:Xc("controls-wrapper"),children:(0,Le.jsx)("div",{className:Xc("controls",n),children:t})})},$c.Table=function(e){let{children:t,loading:n,className:r}=e;return n?(0,Le.jsx)(Qc,{className:Xc("loader")}):(0,Le.jsx)("div",{className:Xc("table",r),children:t})};const Jc=e=>{let{value:t,onChange:n,className:r}=e;return(0,Le.jsxs)(Oo,{value:t,onUpdate:n,className:r,children:[(0,Le.jsx)(Oo.Option,{value:Na.Uu.All,children:Na.qU[Na.Uu.All]}),(0,Le.jsx)(Oo.Option,{value:Na.Uu.SmallUptime,children:Na.qU[Na.Uu.SmallUptime]})]})};let eu;!function(e){e.v1="v1",e.v2="v2"}(eu||(eu={}));const tu=(e,t,n)=>r=>0<=r&&r<e?n[0]:e<=r&&r<t?n[1]:t<=r?n[2]:void 0,nu=(e,t)=>{var n;return{...e,TenantName:null!==(n=e.Tenant)&&void 0!==n?n:t,SystemState:null===e||void 0===e?void 0:e.Overall,Uptime:(0,ks.fG)(null===e||void 0===e?void 0:e.StartTime),DC:e.DataCenter}},ru=e=>{const t=((e,t)=>{const n=[];if(e)e.forEach((e=>{n.push(nu(e))}));else if(t)for(const i of t){var r;null===(r=i.Nodes)||void 0===r||r.forEach((e=>{n.push(nu(e,i.Name))}))}return n})(e.Nodes,e.Tenants);return{Nodes:t,TotalNodes:Number(e.TotalNodes)||t.length,FoundNodes:Number(e.FoundNodes)}},iu=e=>{const t=(e.Nodes||[]).map((e=>{var t,n,r,i;const o=Number(null===(t=e.SystemState.SharedCacheStats)||void 0===t?void 0:t.LimitBytes)||void 0;return{...(0,Na.Ns)(e.SystemState),Tablets:e.Tablets,NodeId:e.NodeId,TenantName:null===(n=e.SystemState)||void 0===n||null===(r=n.Tenants)||void 0===r?void 0:r[0],SharedCacheUsed:null===(i=e.SystemState.SharedCacheStats)||void 0===i?void 0:i.UsedBytes,SharedCacheLimit:o}}));return{Nodes:t,TotalNodes:Number(e.TotalNodes)||t.length,FoundNodes:Number(e.FoundNodes)}},ou=tu(60,80,["success","warning","danger"]),au=Dl.h.injectEndpoints({endpoints:e=>({getNodes:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{const t=await window.api.getNodes({type:"any",storage:!1,...e},{signal:n});return{data:iu(t)}}catch(r){return{error:r}}},providesTags:["All"]}),getComputeNodes:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{const t=await window.api.getCompute({version:eu.v2,...e},{signal:n});return{data:ru(t)}}catch(r){return{error:r}}},providesTags:["All"]})}),overrideExisting:"throw"});var su=n(27070);const lu=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(arguments.length>1?arguments[1]:void 0)===Ro.pu.ALL?e:e.filter((e=>{let{SystemState:t}=e;return t&&t!==al.K.Green}))},cu=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(arguments.length>1?arguments[1]:void 0)===Na.Uu.All?e:e.filter((e=>{let{StartTime:t}=e;return!t||(0,ks.OW)(t)<Lo.RQ}))},uu=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;if(!t)return e;const n=(0,su.Y)(t);return e.filter((e=>!e.Host||(n.test(e.Host)||n.test(String(e.NodeId)))))};const du=Me("ydb-cell-with-popover");function hu(e){let{children:t,className:n,wrapperClassName:r,...i}=e;return(0,Le.jsx)("div",{className:du(null,r),children:(0,Le.jsx)(fi,{className:du("popover",n),...i,children:t})})}const pu=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M10 1.5A.75.75 0 0 0 10 3h1.94L6.97 7.97a.75.75 0 0 0 1.06 1.06L13 4.06V6a.75.75 0 0 0 1.5 0V2.25a.75.75 0 0 0-.75-.75H10ZM7.5 3.25a.75.75 0 0 0-.75-.75H4.5a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h6a3 3 0 0 0 3-3V9.25a.75.75 0 0 0-1.5 0v2.25a1.5 1.5 0 0 1-1.5 1.5h-6A1.5 1.5 0 0 1 3 11.5v-6A1.5 1.5 0 0 1 4.5 4h2.25a.75.75 0 0 0 .75-.75Z",clipRule:"evenodd"})),fu="storage",mu="tablets",gu="overview",vu="structure",yu=[{id:gu,name:"Overview"},{id:fu,name:"Storage"},{id:vu,name:"Structure"},{id:mu,name:"Tablets"}];function bu(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,Ta.ax)(Ta.ZP.node,{id:e,activeTab:gu},t)}const xu=Me("ydb-node-host-wrapper"),wu=e=>{let{node:t,getNodeRef:n}=e;if(!t.Host)return(0,Le.jsx)("span",{children:"\u2014"});const r=!(0,Na.TA)(t),i=r&&n?n(t)+"internal":void 0,o=r?bu(t.NodeId,{tenantName:t.TenantName}):void 0,a=i?(0,Le.jsx)(Ie.z,{size:"s",href:i,className:xu("external-button"),target:"_blank",children:(0,Le.jsx)(we.J,{data:pu})}):null;return(0,Le.jsx)(hu,{disabled:!r,content:(0,Le.jsx)(Ns,{data:t}),placement:["top","bottom"],behavior:di.Immediate,children:(0,Le.jsx)(Il,{name:t.Host,status:t.SystemState,path:o,hasClipboardButton:!0,additionalControls:a})})},Su=e=>{let{children:t,content:n,className:r,hasArrow:i=!0,placement:o=["top","bottom"],...s}=e;const[l,c]=a.useState(!1),u=a.useRef(null);return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(ti,{anchorRef:u,open:l,placement:o,hasArrow:i,...s,children:n}),(0,Le.jsx)("span",{className:r,ref:u,onMouseEnter:()=>{c(!0)},onMouseLeave:()=>{c(!1)},children:t})]})},_u=Me("ydb-pool-bar"),Cu=e=>{let{data:t={}}=e;const{Usage:n=0}=t,r=Math.min(100*n,100),i=(e=>e>=75?"danger":e>=50&&e<75?"warning":"normal")(r);return(0,Le.jsx)(Su,{className:_u({type:i}),content:(0,Le.jsx)(Ds,{data:t,className:_u("popup-content")}),children:(0,Le.jsx)("div",{style:{height:"".concat(r,"%")},className:_u("value",{type:i})})})},Eu=Me("ydb-pools-graph"),Tu=e=>{let{pools:t=[]}=e;return(0,Le.jsx)("div",{className:Eu(),children:t.map(((e,t)=>(0,Le.jsx)(Cu,{data:e},t)))})};var Ou=n(47651);const Nu=Me("progress-viewer"),ku=e=>(0,ks.uf)((0,ks.W0)(Number(e),2)),ju=(e,t)=>[ku(e),ku(t)];function Iu(e){let{value:t,capacity:n,formatValues:r=ju,percents:i,className:o,size:a="xs",colorizeProgress:s,inverseColorize:l,warningThreshold:c=60,dangerThreshold:u=80}=e;const d=(0,rr.T)().theme;let h=Math.round(parseFloat(String(t))/parseFloat(String(n))*100)||0;h=h>100?100:h;let p=t,f=n,m="/";i?(p=h+"%",f="",m=""):r&&([p,f]=r(Number(t),Number(n)));let g=l?"danger":"good";s&&(h>c&&h<=u?g="warning":h>u&&(g=l?"good":"danger"));const v={width:h+"%"};return(0,Ou.kE)(t)?(0,Le.jsxs)("div",{className:Nu({size:a,theme:d,status:g},o),children:[(0,Le.jsx)("div",{className:Nu("line"),style:v}),(0,Le.jsx)("span",{className:Nu("text"),children:(0,Ou.kE)(n)?"".concat(p," ").concat(m," ").concat(f):p})]}):(0,Le.jsx)("div",{className:"".concat(Nu({size:a})," ").concat(o," error"),children:"no data"})}var Pu=n(28164);const Du={[Pu.g.Dead]:al.K.Red,[Pu.g.Created]:al.K.Yellow,[Pu.g.ResolveStateStorage]:al.K.Yellow,[Pu.g.Candidate]:al.K.Yellow,[Pu.g.BlockBlobStorage]:al.K.Yellow,[Pu.g.WriteZeroEntry]:al.K.Yellow,[Pu.g.Restored]:al.K.Yellow,[Pu.g.Discover]:al.K.Yellow,[Pu.g.Lock]:al.K.Yellow,[Pu.g.Stopped]:al.K.Yellow,[Pu.g.ResolveLeader]:al.K.Yellow,[Pu.g.RebuildGraph]:al.K.Yellow,[Pu.g.Deleted]:al.K.Green,[Pu.g.Active]:al.K.Green},Au=Object.keys(Pu.g),Ru=Object.entries(Du).reduce(((e,t)=>{let[n,r]=t;return e[r]?e[r].push(n):e[r]=[n],e}),{}),Mu=e=>{if(!e)return al.K.Grey;return t=e,Object.values(al.K).includes(t)?e:Du[e];var t};function Lu(e){if(!e)return"unknown";switch(e){case Pu.g.Dead:return"danger";case Pu.g.Active:case Pu.g.Deleted:return"success";default:return"warning"}}const Fu=Me("tablets-statistic"),zu=e=>{let{tablets:t=[],path:n,nodeIds:r,backend:i}=e;const o=(e=>e.map((e=>({label:(0,Lo.qV)(e.Type),type:e.Type,count:e.Count,state:Mu(e.State)}))).sort(((e,t)=>String(e.label).localeCompare(String(t.label)))))(t);return(0,Le.jsx)("div",{className:Fu(),children:o.map(((e,t)=>{var o;const a=(0,Ta.ax)(Ta.ZP.tabletsFilters,void 0,{nodeIds:r,state:e.state,type:e.type,path:n,backend:i}),s="".concat(e.label,": ").concat(e.count),l=Fu("tablet",{state:null===(o=e.state)||void 0===o?void 0:o.toLowerCase()});return i?(0,Le.jsx)("a",{href:a,className:l,children:s},t):(0,Le.jsx)(bl,{to:a,className:l,children:s},t)}))})},Bu=Me("ydb-usage-label");function Uu(e){let{value:t,overloadThreshold:n=90,theme:r,...i}=e;return(0,Le.jsxs)(ft,{theme:r,className:Bu({overload:Number(t)>=n}),...i,children:[t||0,"%"]})}const Hu="nodesTableColumnsWidth",Vu="Host",Gu="DC",Wu="Rack",qu="Version",Zu="Uptime",Yu="Memory",Ku="CPU",Qu="LoadAverage",Xu="Tablets",$u="TopNodesLoadAverage",Ju="TopNodesMemory",ed="SharedCacheUsage",td="MemoryUsedInAlloc",nd="TotalSessions",rd={name:"NodeId",header:"#",width:80,render:e=>{let{row:t}=e;return t.NodeId},align:Hc.ZP.RIGHT,sortable:!1},id=e=>({name:Vu,render:t=>{let{row:n}=t;return(0,Le.jsx)(wu,{node:n,getNodeRef:e})},width:350,align:Hc.ZP.LEFT,sortable:!1}),od=e=>({...id(e),width:void 0}),ad={name:Gu,header:"DC",align:Hc.ZP.LEFT,render:e=>{let{row:t}=e;return t.DC||Lo.jX},width:60},sd={name:Wu,header:"Rack",align:Hc.ZP.LEFT,render:e=>{let{row:t}=e;return t.Rack?t.Rack:"\u2014"},width:80},ld={name:qu,width:200,align:Hc.ZP.LEFT,render:e=>{let{row:t}=e;return(0,Le.jsx)(hu,{content:t.Version,children:t.Version})},sortable:!1},cd={name:Zu,header:"Uptime",sortAccessor:e=>{let{StartTime:t}=e;return t&&-t},render:e=>{let{row:t}=e;return t.Uptime},align:Hc.ZP.RIGHT,width:110,sortable:!1},ud={name:Yu,header:"Memory",sortAccessor:e=>{let{MemoryUsed:t=0}=e;return Number(t)},defaultOrder:Hc.ZP.DESCENDING,render:e=>{let{row:t}=e;return t.MemoryUsed?(0,ks.SX)(t.MemoryUsed):"\u2014"},align:Hc.ZP.RIGHT,width:120},dd={name:Ku,header:"CPU",sortAccessor:e=>{let{PoolStats:t=[]}=e;return Math.max(...t.map((e=>{let{Usage:t}=e;return Number(t)})))},defaultOrder:Hc.ZP.DESCENDING,render:e=>{let{row:t}=e;return t.PoolStats?(0,Le.jsx)(Tu,{pools:t.PoolStats}):"\u2014"},align:Hc.ZP.LEFT,width:80,resizeMinWidth:60,sortable:!1},hd={name:Qu,header:"Load average",sortAccessor:e=>{let{LoadAverage:t=[]}=e;return t.slice(0,1).reduce(((e,t)=>e+t),0)},defaultOrder:Hc.ZP.DESCENDING,render:e=>{let{row:t}=e;return t.LoadAverage&&t.LoadAverage.length>0?(0,Le.jsx)(Iu,{value:t.LoadAverage[0],percents:!0,colorizeProgress:!0,capacity:100}):"\u2014"},align:Hc.ZP.LEFT,width:140,resizeMinWidth:140,sortable:!1},pd=e=>({name:Xu,width:500,resizeMinWidth:500,render:t=>{let{row:n}=t;return n.Tablets?(0,Le.jsx)(zu,{path:null!==e&&void 0!==e?e:n.TenantName,nodeIds:[n.NodeId],tablets:n.Tablets}):"\u2014"},align:Hc.ZP.LEFT,sortable:!1}),fd={name:$u,header:"Load",render:e=>{let{row:t}=e;return t.LoadAverage&&t.LoadAverage.length>0?(0,Le.jsx)(Uu,{value:t.LoadAverage[0].toFixed(),theme:ou(t.LoadAverage[0])}):"\u2014"},align:Hc.ZP.LEFT,width:80,resizeMinWidth:70,sortable:!1},md={name:Ju,header:"Process",render:e=>{let{row:t}=e;return(0,Le.jsx)(Iu,{value:t.MemoryUsed,capacity:t.MemoryLimit,formatValues:ks.q3,colorizeProgress:!0})},align:Hc.ZP.LEFT,width:140,resizeMinWidth:140,sortable:!1},gd={name:ed,header:"Tablet Cache",render:e=>{let{row:t}=e;return(0,Le.jsx)(Iu,{value:t.SharedCacheUsed,capacity:t.SharedCacheLimit,formatValues:ks.q3,colorizeProgress:!0})},align:Hc.ZP.LEFT,width:140,resizeMinWidth:140,sortable:!1},vd={name:td,header:"Query Runtime",render:e=>{let{row:t}=e;return(0,Le.jsx)(Iu,{value:t.MemoryUsedInAlloc,capacity:t.MemoryLimit,formatValues:ks.q3,colorizeProgress:!0})},align:Hc.ZP.LEFT,width:140,resizeMinWidth:140,sortable:!1},yd={name:nd,header:"Sessions",render:e=>{var t;let{row:n}=e;return null!==(t=n.TotalSessions)&&void 0!==t?t:"\u2014"},align:Hc.ZP.RIGHT,width:100,sortable:!1};function bd(e){let{tabletsPath:t,getNodeRef:n}=e;return[rd,id(n),ad,sd,ld,cd,ud,dd,hd,pd(t)]}const xd=JSON.parse('{"empty.default":"No such nodes"}'),wd=JSON.parse('{"empty.default":"\u041d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432"}'),Sd=(0,We.wZ)("ydb-nodes",{ru:wd,en:xd}),_d=Me("ydb-nodes"),Cd=e=>{var t;let{path:n,additionalNodesProps:r={}}=e;const[i,o]=mc({uptimeFilter:Gl,search:Gl}),s=Na.U8.parse(i.uptimeFilter),l=null!==(t=i.search)&&void 0!==t?t:"",c=Ao(),u=!n,d=Do((e=>e.settings.problemFilter)),{autorefresh:h}=Do((e=>e.schema)),[p]=Mo(Lo.UF),f=u?Lo.ME:h,m=n&&!p,g=au.useGetNodesQuery(m?zl.CN:{path:n},{pollingInterval:f}),v=au.useGetComputeNodesQuery(m?{path:n}:zl.CN,{pollingInterval:f}),{currentData:y,isLoading:b,error:x}=m?v:g,[w,S]=a.useState({sortValue:"NodeId",sortOrder:zo.zE}),[_,C]=Bo(w,(e=>{S(e)})),E=e=>{o({search:e||void 0},"replaceIn")},T=e=>{c((0,Ro.M6)(e))},O=e=>{o({uptimeFilter:e},"replaceIn")},N=a.useMemo((()=>function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{uptimeFilter:t,searchValue:n,problemFilter:r}=arguments.length>1?arguments[1]:void 0,i=cu(e,t);return i=lu(i,r),i=uu(i,n),i}(null===y||void 0===y?void 0:y.Nodes,{searchValue:l,uptimeFilter:s,problemFilter:d})),[y,l,s,d]),k=(null===y||void 0===y?void 0:y.TotalNodes)||0;return x?403===x.status?(0,Le.jsx)(Fc,{}):(0,Le.jsx)(zc,{error:x}):(0,Le.jsxs)($c,{children:[(0,Le.jsx)($c.Controls,{children:(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(Yc,{onChange:E,placeholder:"Host name",className:_d("search"),value:l}),(0,Le.jsx)(Bc,{value:d,onChange:T}),(0,Le.jsx)(Jc,{value:s,onChange:O}),(0,Le.jsx)(yc,{total:k,current:(null===N||void 0===N?void 0:N.length)||0,label:"Nodes",loading:b})]})}),(0,Le.jsx)($c.Table,{loading:b,children:(()=>{const e=bd({getNodeRef:r.getNodeRef}).map((e=>({...e,sortable:(0,Na.oh)(e.name)})));return!N||0!==N.length||d===Ro.pu.ALL&&s===Na.Uu.All?(0,Le.jsx)(qc,{columnsWidthLSKey:Hu,data:N||[],columns:e,settings:Lo.LE,sortOrder:_,onSort:C,emptyDataMessage:Sd("empty.default"),rowClassName:e=>_d("node",{unavailable:(0,Na.TA)(e)})}):(0,Le.jsx)(Ge,{name:"thumbsUp",width:"200"})})()})]})},Ed=e=>[...Array(e).keys()];function Td(e){return null!==e&&void 0!==e}const Od="left",Nd=-1,kd=40,jd=Me("ydb-virtual-table"),Id=e=>{let{children:t,className:n,height:r,width:i,align:o=Od}=e;return(0,Le.jsx)("td",{className:jd("row-cell",{align:o},n),style:{height:"".concat(r,"px"),width:"".concat(i,"px"),maxWidth:"".concat(i,"px")},children:t})},Pd=e=>{let{index:t,columns:n,height:r}=e;return(0,Le.jsx)("tr",{className:jd("row"),children:n.map((e=>(0,Le.jsx)(Id,{height:r,width:e.width,align:e.align,className:e.className,children:(0,Le.jsx)(rl,{style:{width:"80%",height:"50%"}})},"".concat(e.name).concat(t))))})},Dd=e=>{let{row:t,index:n,columns:r,getRowClassName:i,height:o}=e;const a=null===i||void 0===i?void 0:i(t);return(0,Le.jsx)("tr",{className:jd("row",a),children:r.map((e=>(0,Le.jsx)(Id,{height:o,width:e.width,align:e.align,className:e.className,children:e.render({row:t,index:n})},"".concat(e.name).concat(n))))})},Ad=e=>{let{columns:t,children:n}=e;return(0,Le.jsx)("tr",{className:jd("row",{empty:!0}),children:(0,Le.jsx)("td",{colSpan:t.length,className:jd("td"),children:n})})},Rd=(0,a.memo)((function(e){var t;let{id:n,chunkSize:r,rowHeight:i,columns:o,chunkData:s,observer:l,getRowClassName:c}=e;const u=a.useRef(null);a.useEffect((()=>{const e=u.current;return e&&l.observe(e),()=>{e&&l.unobserve(e)}}),[l]);const d=null===s||void 0===s||null===(t=s.data)||void 0===t?void 0:t.length,h=d?d*i:r*i;return(0,Le.jsx)("tbody",{ref:u,id:n.toString(),style:{height:"".concat(h,"px")},children:(()=>{var e;return s&&s.active?s.loading||s.error?Ed(r).map((e=>(0,Le.jsx)(Pd,{columns:o,height:i,index:e},e))):null===(e=s.data)||void 0===e?void 0:e.map(((e,t)=>(0,Le.jsx)(Dd,{index:t,row:e,columns:o,height:i,getRowClassName:c},t))):null})()})}));function Md(e){let{minWidth:t,maxWidth:n,getCurrentColumnWidth:r,onResize:i}=e;const o=a.useRef(null),[s,l]=a.useState(!1);return a.useEffect((()=>{const e=o.current;if(!e)return;let a,s,c;const u=function(e){let t,n=null;return function(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];t=i,"number"!==typeof n&&(n=requestAnimationFrame((()=>{e(...t),n=null})))}}((e=>{if(Ld(e),"number"!==typeof a||"number"!==typeof s)return;const r=e.clientX-a,o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:40,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1/0;return Math.max(t,Math.min(e,n))}(s+r,t,n);o!==c&&(c=o,null===i||void 0===i||i(c))})),d=e=>{Ld(e),void 0!==c&&(null===i||void 0===i||i(c)),l(!1),a=void 0,document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",d)},h=e=>{s=r(),Ld(e),a=e.clientX,l(!0),document.addEventListener("mousemove",u),document.addEventListener("mouseup",d)};return e.addEventListener("mousedown",h),()=>{e.removeEventListener("mousedown",h),document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",d)}}),[i,t,n,r]),(0,Le.jsx)("span",{ref:o,className:jd("resize-handler",{resizing:s}),onClick:e=>Ld(e)})}function Ld(e){e.preventDefault(),e.stopPropagation()}const Fd=e=>{let{order:t}=e;return(0,Le.jsx)("svg",{className:jd("sort-icon",{desc:-1===t}),viewBox:"0 0 10 6",width:"10",height:"6",children:(0,Le.jsx)("path",{fill:"currentColor",d:"M0 5h10l-5 -5z"})})},zd=e=>{let{sortOrder:t,sortable:n,defaultSortOrder:r}=e;return n?(0,Le.jsx)("span",{className:jd("sort-icon-container",{shadow:!t}),children:(0,Le.jsx)(Fd,{order:t||r})}):null},Bd=e=>{var t;let{column:n,resizeable:r,sortOrder:i,defaultSortOrder:o,onSort:s,rowHeight:l,onCellMount:c,onCellUnMount:u,onColumnsResize:d}=e;const h=a.useRef(null);a.useEffect((()=>{const e=h.current;return e&&(null===c||void 0===c||c(e)),()=>{e&&(null===u||void 0===u||u(e))}}),[c,u]);const p=a.useCallback((()=>{var e;return null===(e=h.current)||void 0===e?void 0:e.getBoundingClientRect().width}),[]),f=a.useCallback((e=>{null===d||void 0===d||d(n.name,e)}),[d,n.name]),m=null!==(t=n.header)&&void 0!==t?t:n.name;return(0,Le.jsx)("th",{children:(0,Le.jsxs)("div",{ref:h,className:jd("head-cell-wrapper"),style:{height:"".concat(l,"px"),width:"".concat(n.width,"px")},children:[(0,Le.jsxs)("div",{className:jd("head-cell",{align:n.align,sortable:n.sortable},n.className),onClick:()=>{n.sortable&&(null===s||void 0===s||s(n.name))},children:[(0,Le.jsx)("div",{className:jd("head-cell-content"),children:m}),(0,Le.jsx)(zd,{sortOrder:i,sortable:n.sortable,defaultSortOrder:o})]}),r?(0,Le.jsx)(Md,{maxWidth:n.resizeMaxWidth,minWidth:n.resizeMinWidth,getCurrentColumnWidth:p,onResize:f}):null]})})},Ud=e=>{let{columns:t,onSort:n,onColumnsResize:r,defaultSortOrder:i=Nd,rowHeight:o=kd}=e;const[s,l]=a.useState({}),c=e=>{let t={};if(e===s.columnId){if(s.sortOrder&&s.sortOrder!==i)return l(t),void(null===n||void 0===n||n(t));t={sortOrder:1===s.sortOrder?-1:1,columnId:e}}else t={sortOrder:i,columnId:e};null===n||void 0===n||n(t),l(t)};return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("colgroup",{children:t.map((e=>(0,Le.jsx)("col",{style:{width:"".concat(e.width,"px")}},e.name)))}),(0,Le.jsx)("thead",{className:jd("head"),children:(0,Le.jsx)("tr",{children:t.map((e=>{var t;const n=s.columnId===e.name?s.sortOrder:void 0,a=r&&(null===(t=e.resizeable)||void 0===t||t);return(0,Le.jsx)(Bd,{column:e,resizeable:a,sortOrder:n,defaultSortOrder:i,onSort:c,rowHeight:o,onColumnsResize:r},e.name)}))})})]})},Hd=JSON.parse('{"empty":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445"}'),Vd=(0,We.wZ)("ydb-virtual-table",{ru:Hd,en:{empty:"No data"}}),Gd="infiniteTable/INIT_CHUNK",Wd="infiniteTable/REMOVE_CHUNK",qd="infiniteTable/SET_CHUNK_LOADING",Zd="infiniteTable/SET_CHUNK_DATA",Yd="infiniteTable/SET_CHUNK_ERROR",Kd="infiniteTable/RESET_CHUNKS",Qd=e=>({type:Gd,data:{id:e}}),Xd=e=>{let{limit:t,fetchData:n,columns:r,getRowClassName:i,rowHeight:o=kd,parentContainer:s,initialSortParams:l,onColumnsResize:c,renderControls:u,renderEmptyDataMessage:d,renderErrorMessage:h,dependencyArray:p}=e;const f=a.useRef(!1),m=a.useRef(null),[g,v]=a.useReducer(((e,t)=>{switch(t.type){case Zd:{const{id:n,data:r}=t.data;return{...e,[n]:{loading:!1,wasLoaded:!0,active:!0,data:r}}}case Yd:{const{id:n,error:r}=t.data;return{...e,[n]:{loading:!1,wasLoaded:!0,active:!0,error:r}}}case Gd:{const{id:n}=t.data;return{...e,[n]:{loading:!1,wasLoaded:!1,active:!0}}}case qd:{const{id:n}=t.data;return{...e,[n]:{loading:!0,wasLoaded:!1,active:!0}}}case Wd:{const{id:n}=t.data,r={...e};return delete r[n],r}case Kd:return{};default:return e}}),{}),[y,b]=a.useState(l),[x,w]=a.useState(t),[S,_]=a.useState(0),[C,E]=a.useState(),T=a.useRef({}),O=a.useCallback((async e=>{v((e=>({type:qd,data:{id:e}}))(e));const r=setTimeout((async()=>{const r=Number(e)*t;try{const i=await n(t,r,y),{data:o,total:a,found:s}=i;w(a),_(s),f.current=!0,v(((e,t)=>({type:Zd,data:{id:e,data:t}}))(e,o))}catch(i){if(null!==i&&void 0!==i&&i.isCancelled)return;v(((e,t)=>({type:Yd,data:{id:e,error:t}}))(e,i)),E(i)}}),200);if(T.current[e]){const t=T.current[e];window.clearTimeout(t)}T.current[e]=r}),[n,t,y]),N=a.useCallback((e=>{v(Qd(e))}),[]),k=a.useCallback((e=>{if(v((e=>({type:Wd,data:{id:e}}))(e)),T.current[e]){const t=T.current[e];window.clearTimeout(t),delete T.current[e]}}),[]);a.useEffect((()=>()=>{Object.values(T.current).forEach((e=>{window.clearTimeout(e)})),T.current={}}),[]),a.useEffect((()=>{for(const e of Object.keys(g)){const t=g[Number(e)];null===t||void 0===t||!t.active||null!==t&&void 0!==t&&t.loading||null!==t&&void 0!==t&&t.wasLoaded||O(e)}}),[O,g]),a.useEffect((()=>{var e;(w(t),_(0),E(void 0),v({type:Kd}),f.current=!1,s)?s.scrollTo(0,0):null===(e=m.current)||void 0===e||e.scrollTo(0,0);v(Qd("0"))}),[p,t,s]);const j=e=>{b(e),(()=>{for(const t of Object.keys(g)){var e;null!==(e=g[Number(t)])&&void 0!==e&&e.active&&v(Qd(t))}})()},I=(e=>{let{onEntry:t,onLeave:n,parentContainer:r}=e;const i=a.useRef();return a.useEffect((()=>(i.current=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting?t(e.target.id):n(e.target.id)}))}),{root:r,rootMargin:"100%"}),()=>{var e;null===(e=i.current)||void 0===e||e.disconnect(),i.current=void 0})),[r,t,n]),i.current})({onEntry:N,onLeave:k,parentContainer:s}),P=S||t,D=Math.ceil(P/t),A=()=>f.current&&0===S?(0,Le.jsx)("tbody",{children:(0,Le.jsx)(Ad,{columns:r,children:d?d():Vd("empty")})}):!f.current&&C?(0,Le.jsx)("tbody",{children:(0,Le.jsx)(Ad,{columns:r,children:h?h(C):(0,Le.jsx)(zc,{error:C})})}):I?Ed(D).map((e=>{const n=g[e];return(0,Le.jsx)(Rd,{observer:I,id:e,chunkSize:t,rowHeight:o,columns:r,chunkData:n,getRowClassName:i},e)})):null,R=()=>(0,Le.jsxs)("table",{className:jd("table"),children:[(0,Le.jsx)(Ud,{columns:r,onSort:j,onColumnsResize:c}),A()]});return(0,Le.jsx)("div",{ref:m,className:jd(null),children:u?(0,Le.jsxs)($c,{children:[(0,Le.jsx)($c.Controls,{children:u({inited:f.current,totalEntities:x,foundEntities:S})}),(0,Le.jsx)($c.Table,{children:R()})]}):R()})};function $d(e){let{columnsWidthLSKey:t,columns:n,...r}=e;const[i,o]=Gc(t),a=function(e,t){return e.map((e=>{var n;return{...e,width:null!==(n=t[e.name])&&void 0!==n?n:e.width}}))}(n,i);return(0,Le.jsx)(Xd,{columns:a,onColumnsResize:o,...r})}const Jd=(e,t)=>"getNodes|offset".concat(t,"|limit").concat(e),eh=async e=>{let{type:t="any",storage:n=!1,limit:r,offset:i,...o}=e;const a=await window.api.getNodes({type:t,storage:n,limit:r,offset:i,...o},{concurrentId:Jd(r,i)}),s=iu(a);return{data:s.Nodes||[],found:s.FoundNodes||0,total:s.TotalNodes||0}},th=Me("ydb-nodes"),nh=e=>{var t;let{path:n,parentContainer:r,additionalNodesProps:i}=e;const[o,s]=mc({uptimeFilter:Gl,search:Gl}),l=Na.U8.parse(o.uptimeFilter),c=null!==(t=o.search)&&void 0!==t?t:"",u=Ao(),d=Do((e=>e.settings.problemFilter)),h=a.useMemo((()=>[n,c,d,l]),[n,c,d,l]),p=a.useCallback((async function(e,t){let{sortOrder:r,columnId:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return await eh({limit:e,offset:t,path:n,filter:c,problems_only:(0,Na.eV)(d),uptime:(0,Na.RW)(l),sortOrder:r,sortValue:i})}),[n,d,c,l]),f=bd({getNodeRef:null===i||void 0===i?void 0:i.getNodeRef}).map((e=>({...e,sortable:(0,Na.oh)(e.name)})));return(0,Le.jsx)($d,{columnsWidthLSKey:Hu,parentContainer:r,columns:f,fetchData:p,limit:50,renderControls:e=>{let{totalEntities:t,foundEntities:n,inited:r}=e;return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(Yc,{onChange:e=>{s({search:e||void 0},"replaceIn")},placeholder:"Host name",className:th("search"),value:c}),(0,Le.jsx)(Bc,{value:d,onChange:e=>{u((0,Ro.M6)(e))}}),(0,Le.jsx)(Jc,{value:l,onChange:e=>{s({uptimeFilter:e},"replaceIn")}}),(0,Le.jsx)(yc,{total:t,current:n,label:"Nodes",loading:!r})]})},renderErrorMessage:e=>e&&403===e.status?(0,Le.jsx)(Fc,{position:"left"}):(0,Le.jsx)(zc,{error:e}),renderEmptyDataMessage:()=>d!==Ro.pu.ALL||l!==Na.Uu.All?(0,Le.jsx)(Ge,{name:"thumbsUp",width:"200"}):Sd("empty.default"),dependencyArray:h,getRowClassName:e=>th("node",{unavailable:(0,Na.TA)(e)})})},rh=e=>{let{parentContainer:t,...n}=e;const[r]=Mo(Lo.ET);return r?(0,Le.jsx)(nh,{parentContainer:t,...n}):(0,Le.jsx)(Cd,{...n})},ih={all:"all",missing:"missing",space:"space"},oh={groups:"groups",nodes:"nodes"},ah=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=e.Limit?100*e.Used/e.Limit:0;return Math.floor(n/t)*t},sh={PoolName:"PoolName",Kind:"Kind",MediaType:"MediaType",Erasure:"Erasure",Degraded:"Degraded",Usage:"Usage",GroupId:"GroupId",Used:"Used",Limit:"Limit",Read:"Read",Write:"Write"},lh=e=>e.trim().toLowerCase(),ch=(e,t)=>{const n=lh(t);return n?e.filter((e=>{var t,r;return(null===(t=e.NodeId)||void 0===t?void 0:t.toString().includes(n))||(null===(r=e.Host)||void 0===r?void 0:r.toLowerCase().includes(n))})):e},uh=(e,t)=>{const n=lh(t);return n?e.filter((e=>{var t,r;return(null===(t=e.PoolName)||void 0===t?void 0:t.toLowerCase().includes(n))||(null===(r=e.GroupID)||void 0===r?void 0:r.toString().includes(n))})):e},dh=(e,t)=>Array.isArray(t)&&0!==t.length?e.filter((e=>{const n=e.Usage;return t.some((e=>Number(e)<=n&&n<Number(e)+5))})):e;let hh,ph;!function(e){e.Initial="Initial",e.InitialFormatRead="InitialFormatRead",e.InitialFormatReadError="InitialFormatReadError",e.InitialSysLogRead="InitialSysLogRead",e.InitialSysLogReadError="InitialSysLogReadError",e.InitialSysLogParseError="InitialSysLogParseError",e.InitialCommonLogRead="InitialCommonLogRead",e.InitialCommonLogReadError="InitialCommonLogReadError",e.InitialCommonLogParseError="InitialCommonLogParseError",e.CommonLoggerInitError="CommonLoggerInitError",e.Normal="Normal",e.OpenFileError="OpenFileError",e.ChunkQuotaError="ChunkQuotaError",e.DeviceIoError="DeviceIoError",e.Missing="Missing",e.Timeout="Timeout",e.NodeDisconnected="NodeDisconnected",e.Unknown="Unknown"}(hh||(hh={})),function(e){e.Initial="Initial",e.LocalRecoveryError="LocalRecoveryError",e.SyncGuidRecovery="SyncGuidRecovery",e.SyncGuidRecoveryError="SyncGuidRecoveryError",e.OK="OK",e.PDiskError="PDiskError"}(ph||(ph={}));const fh={Grey:0,Green:1,Blue:2,Yellow:3,Orange:4,Red:5},mh=Object.entries(fh).reduce(((e,t)=>{let[n,r]=t;return{...e,[r]:n}}),{}),gh=fh.Grey,vh=mh[gh],yh={[ph.OK]:fh.Green,[ph.Initial]:fh.Yellow,[ph.SyncGuidRecovery]:fh.Yellow,[ph.LocalRecoveryError]:fh.Red,[ph.SyncGuidRecoveryError]:fh.Red,[ph.PDiskError]:fh.Red},bh={[hh.Initial]:fh.Grey,[hh.Normal]:fh.Green,[hh.InitialFormatRead]:fh.Yellow,[hh.InitialSysLogRead]:fh.Yellow,[hh.InitialCommonLogRead]:fh.Yellow,[hh.InitialFormatReadError]:fh.Red,[hh.InitialSysLogReadError]:fh.Red,[hh.InitialSysLogParseError]:fh.Red,[hh.InitialCommonLogReadError]:fh.Red,[hh.InitialCommonLogParseError]:fh.Red,[hh.CommonLoggerInitError]:fh.Red,[hh.OpenFileError]:fh.Red,[hh.ChunkQuotaError]:fh.Red,[hh.DeviceIoError]:fh.Red},xh=tu(85,95,[al.K.Green,al.K.Yellow,al.K.Red]);function wh(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const n=function(e){return void 0!==e&&e in bh}(r=e.State)?bh[r]:gh;var r;const i=xh(t);return n!==gh&&i?Math.max(n,fh[i]):n}function Sh(e){return"VDiskId"in e}function _h(e){return void 0===e?vh:mh[e]||vh}function Ch(e){if(!Sh(e))return gh;const{DiskSpace:t,VDiskState:n,FrontQueues:r,Replicated:i,DonorMode:o}=e;if(!n)return gh;const a=Eh(t),s=function(e){var t;if(!e)return gh;return null!==(t=yh[e])&&void 0!==t?t:gh}(n),l=Math.min(fh.Orange,Eh(r));let c=Math.max(a,s,l);return i||o||c!==fh.Green||(c=fh.Blue),c}function Eh(e){var t;return e&&null!==(t=fh[e])&&void 0!==t?t:gh}const Th={HDD:"HDD",SSD:"SSD",MVME:"NVME"};function Oh(e){if(!e)return;const t=function(e,t){const n={};return Object.entries(t).reduce(((t,r)=>{let[i,o]=r;const a=e.length-t,s=a-o;return n[i]=e.substring(s,a)||"0",t+o}),0),n}(BigInt(e).toString(2),{isSolidState:1,kind:55,typeExt:8});if("1"===t.isSolidState)switch(parseInt(t.typeExt,2)){case 0:return Th.SSD;case 2:return Th.MVME}else if("0"===t.typeExt)return Th.HDD}function Nh(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=t.PDisk?kh(t.PDisk):void 0,r=function(e,t,n){const r=null!==t&&void 0!==t?t:n;if(!(0,Ou.kE)(e)||!(0,Ou.kE)(r))return;return Math.round(100*Number(e)/(Number(e)+Number(r)))}(t.AllocatedSize,t.AvailableSize,null===n||void 0===n?void 0:n.AvailableSize),i=null===(e=t.Donors)||void 0===e?void 0:e.map((e=>Nh({...e,DonorMode:!0}))),o=Ch(t);return{...t,PDisk:n,AllocatedPercent:r,Donors:i,Severity:o}}function kh(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{AvailableSize:t,TotalSize:n,Category:r}=e,i=Oh(r),o=function(e,t){if(!(0,Ou.kE)(e)||!(0,Ou.kE)(t))return;return Math.round(100*(Number(t)-Number(e))/Number(t))}(t,n),a=wh(e,o);return{...e,Type:i,AllocatedPercent:o,Severity:a}}const jh={[al.K.Grey]:0,[al.K.Blue]:0,[al.K.Green]:1,[al.K.Yellow]:100,[al.K.Orange]:1e4,[al.K.Red]:1e6},Ih=(e,t)=>{var n;const r=Nh(e);return{...r,StoragePoolName:t,Donors:null===r||void 0===r||null===(n=r.Donors)||void 0===n?void 0:n.map((e=>({...e,StoragePoolName:t})))}},Ph=(e,t)=>{var n;let r,i=0,o=0,a=0,s=0,l=0,c=0;const{Name:u,MediaType:d}=t;if(e.VDisks)for(const f of e.VDisks){const{Replicated:e,VDiskState:t,AvailableSize:n,AllocatedSize:u,PDisk:d,DiskSpace:h,ReadThroughput:p,WriteThroughput:m}=f,{Type:g,State:v,AvailableSize:y}=kh(d);e&&v===hh.Normal&&t===ph.OK||(i+=1),h&&(o+=jh[h]);const b=Number(null!==n&&void 0!==n?n:y)||0,x=Number(u)||0;a+=x,s+=b+x,l+=Number(p)||0,c+=Number(m)||0,r=!g||g!==r&&r?"Mixed":g}const h=null===(n=e.VDisks)||void 0===n?void 0:n.map((e=>Ih(e,u))),p=ah({Used:a,Limit:s},5);return{...e,VDisks:h,Usage:p,Read:l,Write:c,PoolName:u,Used:a,Limit:s,Degraded:i,UsedSpaceFlag:o,MediaType:d||r||void 0}},Dh=e=>{const{VDisks:t=[],PoolName:n,Usage:r=0,Read:i=0,Write:o=0,Used:a=0,Limit:s=0,Degraded:l=0,Kind:c,MediaType:u}=e,d=t.reduce(((e,t)=>{let{DiskSpace:n}=t;return n&&n!==al.K.Grey?e+jh[n]:e}),0),h=t.map((e=>Ih(e,n))),p=Math.floor(100*Number(r));return{...e,UsedSpaceFlag:d,PoolName:n,MediaType:u||c,VDisks:h,Usage:p,Read:Number(i),Write:Number(o),Used:Number(a),Limit:Number(s),Degraded:Number(l)}},Ah=(e,t)=>{let n=[];return e?n=e.map(Dh):null===t||void 0===t||t.forEach((e=>{var t;null===(t=e.Groups)||void 0===t||t.forEach((t=>{n.push(Ph(t,e))}))})),n},Rh=e=>{var t,n,r;const i=(null===(t=e.PDisks)||void 0===t?void 0:t.filter((e=>e.State!==hh.Normal)).length)||0,o=null===(n=e.PDisks)||void 0===n?void 0:n.map((t=>({...kh(t),NodeId:e.NodeId}))),a=null===(r=e.VDisks)||void 0===r?void 0:r.map((t=>({...Nh(t),NodeId:e.NodeId})));return{...(0,Na.Ns)(e.SystemState),NodeId:e.NodeId,PDisks:o,VDisks:a,Missing:i}},Mh=e=>{const{Nodes:t,TotalNodes:n,FoundNodes:r}=e,i=null===t||void 0===t?void 0:t.map(Rh);return{nodes:i,total:Number(n)||(null===i||void 0===i?void 0:i.length),found:Number(r)}},Lh=e=>{const{StoragePools:t,StorageGroups:n,TotalGroups:r,FoundGroups:i}=e,o=Ah(n,t);return{groups:o,total:Number(r)||o.length,found:Number(i)}},Fh=Dl.h.injectEndpoints({endpoints:e=>({getStorageNodesInfo:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{const t=await window.api.getNodes({storage:!0,type:"static",...e},{signal:n});return{data:Mh(t)}}catch(r){return{error:r}}},providesTags:["All"]}),getStorageGroupsInfo:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{const t=await window.api.getStorageInfo({version:ka.v1,...e},{signal:n});return{data:Lh(t)}}catch(r){return{error:r}}},providesTags:["All"]})}),overrideExisting:"throw"});var zh=n(95408);const Bh=zh.z.nativeEnum(ih).catch(ih.all),Uh=zh.z.nativeEnum(oh).catch(oh.groups),Hh={[oh.groups]:"Groups",[oh.nodes]:"Nodes"},Vh=e=>{let{value:t,onChange:n}=e;return(0,Le.jsxs)(Oo,{value:t,onUpdate:n,qa:"storage-type-filter",children:[(0,Le.jsx)(Oo.Option,{value:oh.groups,children:Hh[oh.groups]}),(0,Le.jsx)(Oo.Option,{value:oh.nodes,children:Hh[oh.nodes]})]})},Gh={[ih.all]:"All",[ih.missing]:"Degraded",[ih.space]:"Out of Space"},Wh=e=>{let{value:t,onChange:n}=e;return(0,Le.jsxs)(Oo,{value:t,onUpdate:n,qa:"storage-visible-entities-filter",children:[(0,Le.jsx)(Oo.Option,{value:ih.missing,children:Gh[ih.missing]}),(0,Le.jsx)(Oo.Option,{value:ih.space,children:Gh[ih.space]}),(0,Le.jsx)(Oo.Option,{value:ih.all,children:Gh[ih.all]})]})},qh=e=>{var t;const[n,r]=_t(e.open,null!==(t=e.defaultOpen)&&void 0!==t&&t,e.onOpenChange),{onClose:i}=e,o=a.useCallback((e=>{const t="boolean"===typeof e?e:!n;t!==n&&r(t),!1===t&&i&&i()}),[n,r,i]);return{open:n,toggleOpen:o}};class Zh{constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var r,i;this.nativeEvent=t,this.target=null!==(r=n.target)&&void 0!==r?r:t.target,this.currentTarget=null!==(i=n.currentTarget)&&void 0!==i?i:t.currentTarget,this.relatedTarget=t.relatedTarget,this.bubbles=t.bubbles,this.cancelable=t.cancelable,this.defaultPrevented=t.defaultPrevented,this.eventPhase=t.eventPhase,this.isTrusted=t.isTrusted,this.timeStamp=t.timeStamp,this.type=e}isDefaultPrevented(){return this.nativeEvent.defaultPrevented}preventDefault(){this.defaultPrevented=!0,this.nativeEvent.preventDefault()}stopPropagation(){this.nativeEvent.stopPropagation(),this.isPropagationStopped=()=>!0}isPropagationStopped(){return!1}persist(){}}function Yh(e){const{onFocusWithin:t,onBlurWithin:n,onFocusWithinChange:r,isDisabled:i}=e,o=a.useRef(!1),s=a.useCallback((e=>{o.current||document.activeElement!==e.target||(o.current=!0,t&&t(e),r&&r(!0))}),[t,r]),l=a.useCallback((e=>{o.current&&(o.current=!1,n&&n(e),r&&r(!1))}),[n,r]),{onBlur:c,onFocus:u}=function(e){let{onFocus:t,onBlur:n,isDisabled:r}=e;const i=a.useRef(!1),o=a.useRef(null);a.useEffect((()=>{if(r)return;const e=function(){i.current=!1},t=function(e){if(!i.current&&o.current){const t=new FocusEvent("blur",Object.assign(Object.assign({},e),{relatedTarget:e.target,bubbles:!1,cancelable:!1}));n(new Zh("blur",t,{target:o.current,currentTarget:o.current})),o.current=null}};return window.addEventListener("focus",e,{capture:!0}),window.addEventListener("focusin",t),()=>{window.removeEventListener("focus",e,{capture:!0}),window.removeEventListener("focusin",t)}}),[r,n]);const s=a.useCallback((e=>{null!==e.relatedTarget&&e.relatedTarget!==document.body&&e.relatedTarget!==document||(n(e),o.current=null)}),[n]),l=function(e){const t=a.useRef({isFocused:!1,observer:null});a.useEffect((()=>{const e=t.current;return()=>{e.observer&&(e.observer.disconnect(),e.observer=null)}}),[]);const n=a.useCallback((n=>{const r=n.target;if(r instanceof HTMLButtonElement||r instanceof HTMLInputElement||r instanceof HTMLTextAreaElement||r instanceof HTMLSelectElement){t.current.isFocused=!0;const n=n=>{t.current.isFocused=!1,r.disabled&&(null===e||void 0===e||e(new Zh("blur",n))),t.current.observer&&(t.current.observer.disconnect(),t.current.observer=null)};r.addEventListener("focusout",n,{once:!0});const i=new MutationObserver((()=>{if(t.current.isFocused&&r.disabled){i.disconnect(),t.current.observer=null;const e=r===document.activeElement?null:document.activeElement;r.dispatchEvent(new FocusEvent("blur",{relatedTarget:e})),r.dispatchEvent(new FocusEvent("focusout",{relatedTarget:e,bubbles:!0}))}}));i.observe(r,{attributes:!0,attributeFilter:["disabled"]}),t.current.observer=i}}),[e]);return n}(n),c=a.useCallback((e=>{i.current=!0,o.current=e.target,l(e),t(e)}),[l,t]);return{onBlur:s,onFocus:c}}({onFocus:s,onBlur:l,isDisabled:i});return i?{focusWithinProps:{onFocus:void 0,onBlur:void 0}}:{focusWithinProps:{onFocus:u,onBlur:c}}}var Kh=n(79805);const Qh=(0,le.Ge)("select"),Xh=(0,le.Ge)("select-control"),$h=(0,le.Ge)("select-control__button"),Jh=(0,le.Ge)("select-list"),ep=(0,le.Ge)("select-clear"),tp={s:28,m:28,l:32,xl:36},np=50,rp="select-list",ip="select-popup",op="select-sheet",ap="select-clear",sp="select-filter-input",lp=Symbol("flatten"),cp=(0,le.Ge)("select-filter"),up={padding:"4px 4px 0"},dp=a.forwardRef(((e,t)=>{const{onChange:n,onKeyDown:r,renderFilter:i,size:o,value:s,placeholder:l}=e,c=a.useRef(null);return a.useImperativeHandle(t,(()=>({focus:()=>{var e;return null===(e=c.current)||void 0===e?void 0:e.focus({preventScroll:!0})}})),[]),i?i({onChange:n,onKeyDown:r,value:s,ref:c,style:up}):a.createElement("div",{className:cp(),style:up},a.createElement(Ii,{controlRef:c,controlProps:{className:cp("input"),size:1},size:o,value:s,placeholder:l,onUpdate:n,onKeyDown:r,qa:sp}))}));dp.displayName="SelectFilter";var hp=n(85690),pp=n.n(hp),fp=n(95188),mp=n.n(fp),gp=n(38907),vp=a.createContext(null);var yp=function(e){e()},bp=function(){return yp};var xp={notify:function(){},get:function(){return[]}};function wp(e,t){var n,r=xp;function i(){a.onStateChange&&a.onStateChange()}function o(){n||(n=t?t.addNestedSub(i):e.subscribe(i),r=function(){var e=bp(),t=null,n=null;return{clear:function(){t=null,n=null},notify:function(){e((function(){for(var e=t;e;)e.callback(),e=e.next}))},get:function(){for(var e=[],n=t;n;)e.push(n),n=n.next;return e},subscribe:function(e){var r=!0,i=n={callback:e,next:null,prev:n};return i.prev?i.prev.next=i:t=i,function(){r&&null!==t&&(r=!1,i.next?i.next.prev=i.prev:n=i.prev,i.prev?i.prev.next=i.next:t=i.next)}}}}())}var a={addNestedSub:function(e){return o(),r.subscribe(e)},notifyNestedSubs:function(){r.notify()},handleChangeWrapper:i,isSubscribed:function(){return Boolean(n)},trySubscribe:o,tryUnsubscribe:function(){n&&(n(),n=void 0,r.clear(),r=xp)},getListeners:function(){return r}};return a}var Sp="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement?a.useLayoutEffect:a.useEffect;const _p=function(e){var t=e.store,n=e.context,r=e.children,i=(0,a.useMemo)((function(){var e=wp(t);return{store:t,subscription:e}}),[t]),o=(0,a.useMemo)((function(){return t.getState()}),[t]);Sp((function(){var e=i.subscription;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),o!==t.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[i,o]);var s=n||vp;return a.createElement(s.Provider,{value:i},r)};var Cp=n(60380),Ep=["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"],Tp=["reactReduxForwardedRef"],Op=[],Np=[null,null];function kp(e,t){var n=e[1];return[t.payload,n+1]}function jp(e,t,n){Sp((function(){return e.apply(void 0,t)}),n)}function Ip(e,t,n,r,i,o,a){e.current=r,t.current=i,n.current=!1,o.current&&(o.current=null,a())}function Pp(e,t,n,r,i,o,a,s,l,c){if(e){var u=!1,d=null,h=function(){if(!u){var e,n,h=t.getState();try{e=r(h,i.current)}catch(tD){n=tD,d=tD}n||(d=null),e===o.current?a.current||l():(o.current=e,s.current=e,a.current=!0,c({type:"STORE_UPDATED",payload:{error:n}}))}};n.onStateChange=h,n.trySubscribe(),h();return function(){if(u=!0,n.tryUnsubscribe(),n.onStateChange=null,d)throw d}}}var Dp=function(){return[null,0]};function Ap(e,t){void 0===t&&(t={});var n=t,r=n.getDisplayName,i=void 0===r?function(e){return"ConnectAdvanced("+e+")"}:r,o=n.methodName,s=void 0===o?"connectAdvanced":o,l=n.renderCountProp,c=void 0===l?void 0:l,u=n.shouldHandleStateChanges,d=void 0===u||u,h=n.storeKey,p=void 0===h?"store":h,f=(n.withRef,n.forwardRef),m=void 0!==f&&f,g=n.context,v=void 0===g?vp:g,y=(0,Ko.Z)(n,Ep),b=v;return function(t){var n=t.displayName||t.name||"Component",r=i(n),o=(0,qo.Z)({},y,{getDisplayName:i,methodName:s,renderCountProp:c,shouldHandleStateChanges:d,storeKey:p,displayName:r,wrappedComponentName:n,WrappedComponent:t}),l=y.pure;var u=l?a.useMemo:function(e){return e()};function h(n){var r=(0,a.useMemo)((function(){var e=n.reactReduxForwardedRef,t=(0,Ko.Z)(n,Tp);return[n.context,e,t]}),[n]),i=r[0],s=r[1],l=r[2],c=(0,a.useMemo)((function(){return i&&i.Consumer&&(0,Cp.isContextConsumer)(a.createElement(i.Consumer,null))?i:b}),[i,b]),h=(0,a.useContext)(c),p=Boolean(n.store)&&Boolean(n.store.getState)&&Boolean(n.store.dispatch);Boolean(h)&&Boolean(h.store);var f=p?n.store:h.store,m=(0,a.useMemo)((function(){return function(t){return e(t.dispatch,o)}(f)}),[f]),g=(0,a.useMemo)((function(){if(!d)return Np;var e=wp(f,p?null:h.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[f,p,h]),v=g[0],y=g[1],x=(0,a.useMemo)((function(){return p?h:(0,qo.Z)({},h,{subscription:v})}),[p,h,v]),w=(0,a.useReducer)(kp,Op,Dp),S=w[0][0],_=w[1];if(S&&S.error)throw S.error;var C=(0,a.useRef)(),E=(0,a.useRef)(l),T=(0,a.useRef)(),O=(0,a.useRef)(!1),N=u((function(){return T.current&&l===E.current?T.current:m(f.getState(),l)}),[f,S,l]);jp(Ip,[E,C,O,l,N,T,y]),jp(Pp,[d,f,v,m,E,C,O,T,y,_],[f,v,m]);var k=(0,a.useMemo)((function(){return a.createElement(t,(0,qo.Z)({},N,{ref:s}))}),[s,t,N]);return(0,a.useMemo)((function(){return d?a.createElement(c.Provider,{value:x},k):k}),[c,k,x])}var f=l?a.memo(h):h;if(f.WrappedComponent=t,f.displayName=h.displayName=r,m){var g=a.forwardRef((function(e,t){return a.createElement(f,(0,qo.Z)({},e,{reactReduxForwardedRef:t}))}));return g.displayName=r,g.WrappedComponent=t,Xo()(g,t)}return Xo()(f,t)}}function Rp(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function Mp(e,t){if(Rp(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var i=0;i<n.length;i++)if(!Object.prototype.hasOwnProperty.call(t,n[i])||!Rp(e[n[i]],t[n[i]]))return!1;return!0}function Lp(e){return function(t,n){var r=e(t,n);function i(){return r}return i.dependsOnOwnProps=!1,i}}function Fp(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}function zp(e,t){return function(t,n){n.displayName;var r=function(e,t){return r.dependsOnOwnProps?r.mapToProps(e,t):r.mapToProps(e)};return r.dependsOnOwnProps=!0,r.mapToProps=function(t,n){r.mapToProps=e,r.dependsOnOwnProps=Fp(e);var i=r(t,n);return"function"===typeof i&&(r.mapToProps=i,r.dependsOnOwnProps=Fp(i),i=r(t,n)),i},r}}const Bp=[function(e){return"function"===typeof e?zp(e):void 0},function(e){return e?void 0:Lp((function(e){return{dispatch:e}}))},function(e){return e&&"object"===typeof e?Lp((function(t){return function(e,t){var n={},r=function(r){var i=e[r];"function"===typeof i&&(n[r]=function(){return t(i.apply(void 0,arguments))})};for(var i in e)r(i);return n}(e,t)})):void 0}];const Up=[function(e){return"function"===typeof e?zp(e):void 0},function(e){return e?void 0:Lp((function(){return{}}))}];function Hp(e,t,n){return(0,qo.Z)({},n,e,t)}const Vp=[function(e){return"function"===typeof e?function(e){return function(t,n){n.displayName;var r,i=n.pure,o=n.areMergedPropsEqual,a=!1;return function(t,n,s){var l=e(t,n,s);return a?i&&o(l,r)||(r=l):(a=!0,r=l),r}}}(e):void 0},function(e){return e?void 0:function(){return Hp}}];var Gp=["initMapStateToProps","initMapDispatchToProps","initMergeProps"];function Wp(e,t,n,r){return function(i,o){return n(e(i,o),t(r,o),o)}}function qp(e,t,n,r,i){var o,a,s,l,c,u=i.areStatesEqual,d=i.areOwnPropsEqual,h=i.areStatePropsEqual,p=!1;function f(i,p){var f=!d(p,a),m=!u(i,o,p,a);return o=i,a=p,f&&m?(s=e(o,a),t.dependsOnOwnProps&&(l=t(r,a)),c=n(s,l,a)):f?(e.dependsOnOwnProps&&(s=e(o,a)),t.dependsOnOwnProps&&(l=t(r,a)),c=n(s,l,a)):m?function(){var t=e(o,a),r=!h(t,s);return s=t,r&&(c=n(s,l,a)),c}():c}return function(i,u){return p?f(i,u):(s=e(o=i,a=u),l=t(r,a),c=n(s,l,a),p=!0,c)}}function Zp(e,t){var n=t.initMapStateToProps,r=t.initMapDispatchToProps,i=t.initMergeProps,o=(0,Ko.Z)(t,Gp),a=n(e,o),s=r(e,o),l=i(e,o);return(o.pure?qp:Wp)(a,s,l,e,o)}var Yp=["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"];function Kp(e,t,n){for(var r=t.length-1;r>=0;r--){var i=t[r](e);if(i)return i}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function Qp(e,t){return e===t}function Xp(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?Ap:n,i=t.mapStateToPropsFactories,o=void 0===i?Up:i,a=t.mapDispatchToPropsFactories,s=void 0===a?Bp:a,l=t.mergePropsFactories,c=void 0===l?Vp:l,u=t.selectorFactory,d=void 0===u?Zp:u;return function(e,t,n,i){void 0===i&&(i={});var a=i,l=a.pure,u=void 0===l||l,h=a.areStatesEqual,p=void 0===h?Qp:h,f=a.areOwnPropsEqual,m=void 0===f?Mp:f,g=a.areStatePropsEqual,v=void 0===g?Mp:g,y=a.areMergedPropsEqual,b=void 0===y?Mp:y,x=(0,Ko.Z)(a,Yp),w=Kp(e,o,"mapStateToProps"),S=Kp(t,s,"mapDispatchToProps"),_=Kp(n,c,"mergeProps");return r(d,(0,qo.Z)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:w,initMapDispatchToProps:S,initMergeProps:_,pure:u,areStatesEqual:p,areOwnPropsEqual:m,areStatePropsEqual:v,areMergedPropsEqual:b},x))}}const $p=Xp();var Jp;function ef(e,t){var n=(0,a.useState)((function(){return{inputs:t,result:e()}}))[0],r=(0,a.useRef)(!0),i=(0,a.useRef)(n),o=r.current||Boolean(t&&i.current.inputs&&function(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}(t,i.current.inputs)),s=o?i.current:{inputs:t,result:e()};return(0,a.useEffect)((function(){r.current=!1,i.current=s}),[s]),s.result}Jp=Dt.unstable_batchedUpdates,yp=Jp;var tf=ef,nf=function(e,t){return ef((function(){return e}),t)},rf=function(e){var t=e.top,n=e.right,r=e.bottom,i=e.left;return{top:t,right:n,bottom:r,left:i,width:n-i,height:r-t,x:i,y:t,center:{x:(n+i)/2,y:(r+t)/2}}},of=function(e,t){return{top:e.top-t.top,left:e.left-t.left,bottom:e.bottom+t.bottom,right:e.right+t.right}},af=function(e,t){return{top:e.top+t.top,left:e.left+t.left,bottom:e.bottom-t.bottom,right:e.right-t.right}},sf={top:0,right:0,bottom:0,left:0},lf=function(e){var t=e.borderBox,n=e.margin,r=void 0===n?sf:n,i=e.border,o=void 0===i?sf:i,a=e.padding,s=void 0===a?sf:a,l=rf(of(t,r)),c=rf(af(t,o)),u=rf(af(c,s));return{marginBox:l,borderBox:rf(t),paddingBox:c,contentBox:u,margin:r,border:o,padding:s}},cf=function(e){var t=e.slice(0,-2);if("px"!==e.slice(-2))return 0;var n=Number(t);return isNaN(n)&&(0,Wo.Z)(!1),n},uf=function(e,t){var n,r,i=e.borderBox,o=e.border,a=e.margin,s=e.padding,l=(r=t,{top:(n=i).top+r.y,left:n.left+r.x,bottom:n.bottom+r.y,right:n.right+r.x});return lf({borderBox:l,border:o,margin:a,padding:s})},df=function(e,t){return void 0===t&&(t={x:window.pageXOffset,y:window.pageYOffset}),uf(e,t)},hf=function(e,t){var n={top:cf(t.marginTop),right:cf(t.marginRight),bottom:cf(t.marginBottom),left:cf(t.marginLeft)},r={top:cf(t.paddingTop),right:cf(t.paddingRight),bottom:cf(t.paddingBottom),left:cf(t.paddingLeft)},i={top:cf(t.borderTopWidth),right:cf(t.borderRightWidth),bottom:cf(t.borderBottomWidth),left:cf(t.borderLeftWidth)};return lf({borderBox:e,margin:n,padding:r,border:i})},pf=function(e){var t=e.getBoundingClientRect(),n=window.getComputedStyle(e);return hf(t,n)},ff=Number.isNaN||function(e){return"number"===typeof e&&e!==e};function mf(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(r=e[n],i=t[n],!(r===i||ff(r)&&ff(i)))return!1;var r,i;return!0}const gf=function(e,t){var n;void 0===t&&(t=mf);var r,i=[],o=!1;return function(){for(var a=[],s=0;s<arguments.length;s++)a[s]=arguments[s];return o&&n===this&&t(a,i)||(r=e.apply(this,a),o=!0,n=this,i=a),r}};const vf=function(e){var t=[],n=null,r=function(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];t=i,n||(n=requestAnimationFrame((function(){n=null,e.apply(void 0,t)})))};return r.cancel=function(){n&&(cancelAnimationFrame(n),n=null)},r};var yf=!0,bf=/[ \t]{2,}/g,xf=/^[ \t]*/gm,wf=function(e){return e.replace(bf," ").replace(xf,"").trim()},Sf=function(e){return wf("\n %creact-beautiful-dnd\n\n %c"+wf(e)+"\n\n %c\ud83d\udc77\u200d This is a development only message. It will be removed in production builds.\n")},_f=function(e){return[Sf(e),"color: #00C584; font-size: 1.2em; font-weight: bold;","line-height: 1.5","color: #723874;"]},Cf="__react-beautiful-dnd-disable-dev-warnings";function Ef(e,t){var n;yf||"undefined"!==typeof window&&window[Cf]||(n=console)[e].apply(n,_f(t))}Ef.bind(null,"warn"),Ef.bind(null,"error");function Tf(){}function Of(e,t,n){var r=t.map((function(t){var r=function(e,t){return(0,qo.Z)({},e,{},t)}(n,t.options);return e.addEventListener(t.eventName,t.fn,r),function(){e.removeEventListener(t.eventName,t.fn,r)}}));return function(){r.forEach((function(e){e()}))}}var Nf=!0,kf="Invariant failed";function jf(e){this.message=e}function If(e,t){if(!e)throw new jf(Nf?kf:kf+": "+(t||""))}jf.prototype.toString=function(){return this.message};var Pf=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).callbacks=null,t.unbind=Tf,t.onWindowError=function(e){var n=t.getCallbacks();n.isDragging()&&n.tryAbort(),e.error instanceof jf&&e.preventDefault()},t.getCallbacks=function(){if(!t.callbacks)throw new Error("Unable to find AppCallbacks in <ErrorBoundary/>");return t.callbacks},t.setCallbacks=function(e){t.callbacks=e},t}(0,Uo.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.unbind=Of(window,[{eventName:"error",fn:this.onWindowError}])},n.componentDidCatch=function(e){if(!(e instanceof jf))throw e;this.setState({})},n.componentWillUnmount=function(){this.unbind()},n.render=function(){return this.props.children(this.setCallbacks)},t}(a.Component),Df=function(e){return e+1},Af=function(e,t){var n=e.droppableId===t.droppableId,r=Df(e.index),i=Df(t.index);return n?"\n You have moved the item from position "+r+"\n to position "+i+"\n ":"\n You have moved the item from position "+r+"\n in list "+e.droppableId+"\n to list "+t.droppableId+"\n in position "+i+"\n "},Rf=function(e,t,n){return t.droppableId===n.droppableId?"\n The item "+e+"\n has been combined with "+n.draggableId:"\n The item "+e+"\n in list "+t.droppableId+"\n has been combined with "+n.draggableId+"\n in list "+n.droppableId+"\n "},Mf=function(e){return"\n The item has returned to its starting position\n of "+Df(e.index)+"\n"},Lf={dragHandleUsageInstructions:"\n Press space bar to start a drag.\n When dragging you can use the arrow keys to move the item around and escape to cancel.\n Some screen readers may require you to be in focus mode or to use your pass through key\n",onDragStart:function(e){return"\n You have lifted an item in position "+Df(e.source.index)+"\n"},onDragUpdate:function(e){var t=e.destination;if(t)return Af(e.source,t);var n=e.combine;return n?Rf(e.draggableId,e.source,n):"You are over an area that cannot be dropped on"},onDragEnd:function(e){if("CANCEL"===e.reason)return"\n Movement cancelled.\n "+Mf(e.source)+"\n ";var t=e.destination,n=e.combine;return t?"\n You have dropped the item.\n "+Af(e.source,t)+"\n ":n?"\n You have dropped the item.\n "+Rf(e.draggableId,e.source,n)+"\n ":"\n The item has been dropped while not over a drop area.\n "+Mf(e.source)+"\n "}},Ff={x:0,y:0},zf=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},Bf=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},Uf=function(e,t){return e.x===t.x&&e.y===t.y},Hf=function(e){return{x:0!==e.x?-e.x:0,y:0!==e.y?-e.y:0}},Vf=function(e,t,n){var r;return void 0===n&&(n=0),(r={})[e]=t,r["x"===e?"y":"x"]=n,r},Gf=function(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))},Wf=function(e,t){return Math.min.apply(Math,t.map((function(t){return Gf(e,t)})))},qf=function(e){return function(t){return{x:e(t.x),y:e(t.y)}}},Zf=function(e,t){return{top:e.top+t.y,left:e.left+t.x,bottom:e.bottom+t.y,right:e.right+t.x}},Yf=function(e){return[{x:e.left,y:e.top},{x:e.right,y:e.top},{x:e.left,y:e.bottom},{x:e.right,y:e.bottom}]},Kf=function(e,t){return t&&t.shouldClipSubject?function(e,t){var n=rf({top:Math.max(t.top,e.top),right:Math.min(t.right,e.right),bottom:Math.min(t.bottom,e.bottom),left:Math.max(t.left,e.left)});return n.width<=0||n.height<=0?null:n}(t.pageMarginBox,e):rf(e)},Qf=function(e){var t=e.page,n=e.withPlaceholder,r=e.axis,i=e.frame,o=function(e,t){return t?Zf(e,t.scroll.diff.displacement):e}(t.marginBox,i),a=function(e,t,n){var r;return n&&n.increasedBy?(0,qo.Z)({},e,((r={})[t.end]=e[t.end]+n.increasedBy[t.line],r)):e}(o,r,n);return{page:t,withPlaceholder:n,active:Kf(a,i)}},Xf=function(e,t){e.frame||If(!1);var n=e.frame,r=Bf(t,n.scroll.initial),i=Hf(r),o=(0,qo.Z)({},n,{scroll:{initial:n.scroll.initial,current:t,diff:{value:r,displacement:i},max:n.scroll.max}}),a=Qf({page:e.subject.page,withPlaceholder:e.subject.withPlaceholder,axis:e.axis,frame:o});return(0,qo.Z)({},e,{frame:o,subject:a})};function $f(e){return Object.values?Object.values(e):Object.keys(e).map((function(t){return e[t]}))}function Jf(e,t){if(e.findIndex)return e.findIndex(t);for(var n=0;n<e.length;n++)if(t(e[n]))return n;return-1}function em(e,t){if(e.find)return e.find(t);var n=Jf(e,t);return-1!==n?e[n]:void 0}function tm(e){return Array.prototype.slice.call(e)}var nm=gf((function(e){return e.reduce((function(e,t){return e[t.descriptor.id]=t,e}),{})})),rm=gf((function(e){return e.reduce((function(e,t){return e[t.descriptor.id]=t,e}),{})})),im=gf((function(e){return $f(e)})),om=gf((function(e){return $f(e)})),am=gf((function(e,t){var n=om(t).filter((function(t){return e===t.descriptor.droppableId})).sort((function(e,t){return e.descriptor.index-t.descriptor.index}));return n}));function sm(e){return e.at&&"REORDER"===e.at.type?e.at.destination:null}function lm(e){return e.at&&"COMBINE"===e.at.type?e.at.combine:null}var cm=gf((function(e,t){return t.filter((function(t){return t.descriptor.id!==e.descriptor.id}))})),um=function(e,t){return e.descriptor.droppableId===t.descriptor.id},dm={point:Ff,value:0},hm={invisible:{},visible:{},all:[]},pm={displaced:hm,displacedBy:dm,at:null},fm=function(e,t){return function(n){return e<=n&&n<=t}},mm=function(e){var t=fm(e.top,e.bottom),n=fm(e.left,e.right);return function(r){if(t(r.top)&&t(r.bottom)&&n(r.left)&&n(r.right))return!0;var i=t(r.top)||t(r.bottom),o=n(r.left)||n(r.right);if(i&&o)return!0;var a=r.top<e.top&&r.bottom>e.bottom,s=r.left<e.left&&r.right>e.right;return!(!a||!s)||(a&&o||s&&i)}},gm=function(e){var t=fm(e.top,e.bottom),n=fm(e.left,e.right);return function(e){return t(e.top)&&t(e.bottom)&&n(e.left)&&n(e.right)}},vm={direction:"vertical",line:"y",crossAxisLine:"x",start:"top",end:"bottom",size:"height",crossAxisStart:"left",crossAxisEnd:"right",crossAxisSize:"width"},ym={direction:"horizontal",line:"x",crossAxisLine:"y",start:"left",end:"right",size:"width",crossAxisStart:"top",crossAxisEnd:"bottom",crossAxisSize:"height"},bm=function(e){var t=e.target,n=e.destination,r=e.viewport,i=e.withDroppableDisplacement,o=e.isVisibleThroughFrameFn,a=i?function(e,t){var n=t.frame?t.frame.scroll.diff.displacement:Ff;return Zf(e,n)}(t,n):t;return function(e,t,n){return!!t.subject.active&&n(t.subject.active)(e)}(a,n,o)&&function(e,t,n){return n(t)(e)}(a,r,o)},xm=function(e){return bm((0,qo.Z)({},e,{isVisibleThroughFrameFn:mm}))},wm=function(e){return bm((0,qo.Z)({},e,{isVisibleThroughFrameFn:gm}))},Sm=function(e,t,n){if("boolean"===typeof n)return n;if(!t)return!0;var r=t.invisible,i=t.visible;if(r[e])return!1;var o=i[e];return!o||o.shouldAnimate};function _m(e){var t=e.afterDragging,n=e.destination,r=e.displacedBy,i=e.viewport,o=e.forceShouldAnimate,a=e.last;return t.reduce((function(e,t){var s=function(e,t){var n=e.page.marginBox,r={top:t.point.y,right:0,bottom:0,left:t.point.x};return rf(of(n,r))}(t,r),l=t.descriptor.id;if(e.all.push(l),!xm({target:s,destination:n,viewport:i,withDroppableDisplacement:!0}))return e.invisible[t.descriptor.id]=!0,e;var c={draggableId:l,shouldAnimate:Sm(l,a,o)};return e.visible[l]=c,e}),{all:[],visible:{},invisible:{}})}function Cm(e){var t=e.insideDestination,n=e.inHomeList,r=e.displacedBy,i=e.destination,o=function(e,t){if(!e.length)return 0;var n=e[e.length-1].descriptor.index;return t.inHomeList?n:n+1}(t,{inHomeList:n});return{displaced:hm,displacedBy:r,at:{type:"REORDER",destination:{droppableId:i.descriptor.id,index:o}}}}function Em(e){var t=e.draggable,n=e.insideDestination,r=e.destination,i=e.viewport,o=e.displacedBy,a=e.last,s=e.index,l=e.forceShouldAnimate,c=um(t,r);if(null==s)return Cm({insideDestination:n,inHomeList:c,displacedBy:o,destination:r});var u=em(n,(function(e){return e.descriptor.index===s}));if(!u)return Cm({insideDestination:n,inHomeList:c,displacedBy:o,destination:r});var d=cm(t,n),h=n.indexOf(u);return{displaced:_m({afterDragging:d.slice(h),destination:r,displacedBy:o,last:a,viewport:i.frame,forceShouldAnimate:l}),displacedBy:o,at:{type:"REORDER",destination:{droppableId:r.descriptor.id,index:s}}}}function Tm(e,t){return Boolean(t.effected[e])}var Om=function(e){var t=e.isMovingForward,n=e.isInHomeList,r=e.draggable,i=e.draggables,o=e.destination,a=e.insideDestination,s=e.previousImpact,l=e.viewport,c=e.afterCritical,u=s.at;if(u||If(!1),"REORDER"===u.type){var d=function(e){var t=e.isMovingForward,n=e.isInHomeList,r=e.insideDestination,i=e.location;if(!r.length)return null;var o=i.index,a=t?o+1:o-1,s=r[0].descriptor.index,l=r[r.length-1].descriptor.index;return a<s||a>(n?l:l+1)?null:a}({isMovingForward:t,isInHomeList:n,location:u.destination,insideDestination:a});return null==d?null:Em({draggable:r,insideDestination:a,destination:o,viewport:l,last:s.displaced,displacedBy:s.displacedBy,index:d})}var h=function(e){var t=e.isMovingForward,n=e.destination,r=e.draggables,i=e.combine,o=e.afterCritical;if(!n.isCombineEnabled)return null;var a=i.draggableId,s=r[a].descriptor.index;return Tm(a,o)?t?s:s-1:t?s+1:s}({isMovingForward:t,destination:o,displaced:s.displaced,draggables:i,combine:u.combine,afterCritical:c});return null==h?null:Em({draggable:r,insideDestination:a,destination:o,viewport:l,last:s.displaced,displacedBy:s.displacedBy,index:h})},Nm=function(e){var t=e.afterCritical,n=e.impact,r=e.draggables,i=lm(n);i||If(!1);var o=i.draggableId,a=r[o].page.borderBox.center,s=function(e){var t=e.displaced,n=e.afterCritical,r=e.combineWith,i=e.displacedBy,o=Boolean(t.visible[r]||t.invisible[r]);return Tm(r,n)?o?Ff:Hf(i.point):o?i.point:Ff}({displaced:n.displaced,afterCritical:t,combineWith:o,displacedBy:n.displacedBy});return zf(a,s)},km=function(e,t){return t.margin[e.start]+t.borderBox[e.size]/2},jm=function(e,t,n){return t[e.crossAxisStart]+n.margin[e.crossAxisStart]+n.borderBox[e.crossAxisSize]/2},Im=function(e){var t=e.axis,n=e.moveRelativeTo,r=e.isMoving;return Vf(t.line,n.marginBox[t.end]+km(t,r),jm(t,n.marginBox,r))},Pm=function(e){var t=e.axis,n=e.moveRelativeTo,r=e.isMoving;return Vf(t.line,n.marginBox[t.start]-function(e,t){return t.margin[e.end]+t.borderBox[e.size]/2}(t,r),jm(t,n.marginBox,r))},Dm=function(e){var t=e.impact,n=e.draggable,r=e.draggables,i=e.droppable,o=e.afterCritical,a=am(i.descriptor.id,r),s=n.page,l=i.axis;if(!a.length)return function(e){var t=e.axis,n=e.moveInto,r=e.isMoving;return Vf(t.line,n.contentBox[t.start]+km(t,r),jm(t,n.contentBox,r))}({axis:l,moveInto:i.page,isMoving:s});var c=t.displaced,u=t.displacedBy,d=c.all[0];if(d){var h=r[d];if(Tm(d,o))return Pm({axis:l,moveRelativeTo:h.page,isMoving:s});var p=uf(h.page,u.point);return Pm({axis:l,moveRelativeTo:p,isMoving:s})}var f=a[a.length-1];if(f.descriptor.id===n.descriptor.id)return s.borderBox.center;if(Tm(f.descriptor.id,o)){var m=uf(f.page,Hf(o.displacedBy.point));return Im({axis:l,moveRelativeTo:m,isMoving:s})}return Im({axis:l,moveRelativeTo:f.page,isMoving:s})},Am=function(e,t){var n=e.frame;return n?zf(t,n.scroll.diff.displacement):t},Rm=function(e){var t=function(e){var t=e.impact,n=e.draggable,r=e.droppable,i=e.draggables,o=e.afterCritical,a=n.page.borderBox.center,s=t.at;return r&&s?"REORDER"===s.type?Dm({impact:t,draggable:n,draggables:i,droppable:r,afterCritical:o}):Nm({impact:t,draggables:i,afterCritical:o}):a}(e),n=e.droppable;return n?Am(n,t):t},Mm=function(e,t){var n=Bf(t,e.scroll.initial),r=Hf(n);return{frame:rf({top:t.y,bottom:t.y+e.frame.height,left:t.x,right:t.x+e.frame.width}),scroll:{initial:e.scroll.initial,max:e.scroll.max,current:t,diff:{value:n,displacement:r}}}};function Lm(e,t){return e.map((function(e){return t[e]}))}var Fm=function(e){var t=e.pageBorderBoxCenter,n=e.draggable,r=function(e,t){return zf(e.scroll.diff.displacement,t)}(e.viewport,t),i=Bf(r,n.page.borderBox.center);return zf(n.client.borderBox.center,i)},zm=function(e){var t=e.draggable,n=e.destination,r=e.newPageBorderBoxCenter,i=e.viewport,o=e.withDroppableDisplacement,a=e.onlyOnMainAxis,s=void 0!==a&&a,l=Bf(r,t.page.borderBox.center),c={target:Zf(t.page.borderBox,l),destination:n,withDroppableDisplacement:o,viewport:i};return s?function(e){return bm((0,qo.Z)({},e,{isVisibleThroughFrameFn:(t=e.destination.axis,function(e){var n=fm(e.top,e.bottom),r=fm(e.left,e.right);return function(e){return t===vm?n(e.top)&&n(e.bottom):r(e.left)&&r(e.right)}})}));var t}(c):wm(c)},Bm=function(e){var t=e.isMovingForward,n=e.draggable,r=e.destination,i=e.draggables,o=e.previousImpact,a=e.viewport,s=e.previousPageBorderBoxCenter,l=e.previousClientSelection,c=e.afterCritical;if(!r.isEnabled)return null;var u=am(r.descriptor.id,i),d=um(n,r),h=function(e){var t=e.isMovingForward,n=e.draggable,r=e.destination,i=e.insideDestination,o=e.previousImpact;if(!r.isCombineEnabled)return null;if(!sm(o))return null;function a(e){var t={type:"COMBINE",combine:{draggableId:e,droppableId:r.descriptor.id}};return(0,qo.Z)({},o,{at:t})}var s=o.displaced.all,l=s.length?s[0]:null;if(t)return l?a(l):null;var c=cm(n,i);if(!l)return c.length?a(c[c.length-1].descriptor.id):null;var u=Jf(c,(function(e){return e.descriptor.id===l}));-1===u&&If(!1);var d=u-1;return d<0?null:a(c[d].descriptor.id)}({isMovingForward:t,draggable:n,destination:r,insideDestination:u,previousImpact:o})||Om({isMovingForward:t,isInHomeList:d,draggable:n,draggables:i,destination:r,insideDestination:u,previousImpact:o,viewport:a,afterCritical:c});if(!h)return null;var p=Rm({impact:h,draggable:n,droppable:r,draggables:i,afterCritical:c});if(zm({draggable:n,destination:r,newPageBorderBoxCenter:p,viewport:a.frame,withDroppableDisplacement:!1,onlyOnMainAxis:!0}))return{clientSelection:Fm({pageBorderBoxCenter:p,draggable:n,viewport:a}),impact:h,scrollJumpRequest:null};var f=Bf(p,s),m=function(e){var t=e.impact,n=e.viewport,r=e.destination,i=e.draggables,o=e.maxScrollChange,a=Mm(n,zf(n.scroll.current,o)),s=r.frame?Xf(r,zf(r.frame.scroll.current,o)):r,l=t.displaced,c=_m({afterDragging:Lm(l.all,i),destination:r,displacedBy:t.displacedBy,viewport:a.frame,last:l,forceShouldAnimate:!1}),u=_m({afterDragging:Lm(l.all,i),destination:s,displacedBy:t.displacedBy,viewport:n.frame,last:l,forceShouldAnimate:!1}),d={},h={},p=[l,c,u];return l.all.forEach((function(e){var t=function(e,t){for(var n=0;n<t.length;n++){var r=t[n].visible[e];if(r)return r}return null}(e,p);t?h[e]=t:d[e]=!0})),(0,qo.Z)({},t,{displaced:{all:l.all,invisible:d,visible:h}})}({impact:h,viewport:a,destination:r,draggables:i,maxScrollChange:f});return{clientSelection:l,impact:m,scrollJumpRequest:f}},Um=function(e){var t=e.subject.active;return t||If(!1),t},Hm=function(e,t){var n=e.page.borderBox.center;return Tm(e.descriptor.id,t)?Bf(n,t.displacedBy.point):n},Vm=function(e,t){var n=e.page.borderBox;return Tm(e.descriptor.id,t)?Zf(n,Hf(t.displacedBy.point)):n},Gm=gf((function(e,t){var n=t[e.line];return{value:n,point:Vf(e.line,n)}})),Wm=function(e,t){return(0,qo.Z)({},e,{scroll:(0,qo.Z)({},e.scroll,{max:t})})},qm=function(e,t,n){var r=e.frame;um(t,e)&&If(!1),e.subject.withPlaceholder&&If(!1);var i=Gm(e.axis,t.displaceBy).point,o=function(e,t,n){var r=e.axis;if("virtual"===e.descriptor.mode)return Vf(r.line,t[r.line]);var i=e.subject.page.contentBox[r.size],o=am(e.descriptor.id,n).reduce((function(e,t){return e+t.client.marginBox[r.size]}),0)+t[r.line]-i;return o<=0?null:Vf(r.line,o)}(e,i,n),a={placeholderSize:i,increasedBy:o,oldFrameMaxScroll:e.frame?e.frame.scroll.max:null};if(!r){var s=Qf({page:e.subject.page,withPlaceholder:a,axis:e.axis,frame:e.frame});return(0,qo.Z)({},e,{subject:s})}var l=o?zf(r.scroll.max,o):r.scroll.max,c=Wm(r,l),u=Qf({page:e.subject.page,withPlaceholder:a,axis:e.axis,frame:c});return(0,qo.Z)({},e,{subject:u,frame:c})},Zm=function(e){var t=e.isMovingForward,n=e.previousPageBorderBoxCenter,r=e.draggable,i=e.isOver,o=e.draggables,a=e.droppables,s=e.viewport,l=e.afterCritical,c=function(e){var t=e.isMovingForward,n=e.pageBorderBoxCenter,r=e.source,i=e.droppables,o=e.viewport,a=r.subject.active;if(!a)return null;var s=r.axis,l=fm(a[s.start],a[s.end]),c=im(i).filter((function(e){return e!==r})).filter((function(e){return e.isEnabled})).filter((function(e){return Boolean(e.subject.active)})).filter((function(e){return mm(o.frame)(Um(e))})).filter((function(e){var n=Um(e);return t?a[s.crossAxisEnd]<n[s.crossAxisEnd]:n[s.crossAxisStart]<a[s.crossAxisStart]})).filter((function(e){var t=Um(e),n=fm(t[s.start],t[s.end]);return l(t[s.start])||l(t[s.end])||n(a[s.start])||n(a[s.end])})).sort((function(e,n){var r=Um(e)[s.crossAxisStart],i=Um(n)[s.crossAxisStart];return t?r-i:i-r})).filter((function(e,t,n){return Um(e)[s.crossAxisStart]===Um(n[0])[s.crossAxisStart]}));if(!c.length)return null;if(1===c.length)return c[0];var u=c.filter((function(e){return fm(Um(e)[s.start],Um(e)[s.end])(n[s.line])}));return 1===u.length?u[0]:u.length>1?u.sort((function(e,t){return Um(e)[s.start]-Um(t)[s.start]}))[0]:c.sort((function(e,t){var r=Wf(n,Yf(Um(e))),i=Wf(n,Yf(Um(t)));return r!==i?r-i:Um(e)[s.start]-Um(t)[s.start]}))[0]}({isMovingForward:t,pageBorderBoxCenter:n,source:i,droppables:a,viewport:s});if(!c)return null;var u=am(c.descriptor.id,o),d=function(e){var t=e.pageBorderBoxCenter,n=e.viewport,r=e.destination,i=e.insideDestination,o=e.afterCritical,a=i.filter((function(e){return wm({target:Vm(e,o),destination:r,viewport:n.frame,withDroppableDisplacement:!0})})).sort((function(e,n){var i=Gf(t,Am(r,Hm(e,o))),a=Gf(t,Am(r,Hm(n,o)));return i<a?-1:a<i?1:e.descriptor.index-n.descriptor.index}));return a[0]||null}({pageBorderBoxCenter:n,viewport:s,destination:c,insideDestination:u,afterCritical:l}),h=function(e){var t=e.previousPageBorderBoxCenter,n=e.moveRelativeTo,r=e.insideDestination,i=e.draggable,o=e.draggables,a=e.destination,s=e.viewport,l=e.afterCritical;if(!n){if(r.length)return null;var c={displaced:hm,displacedBy:dm,at:{type:"REORDER",destination:{droppableId:a.descriptor.id,index:0}}},u=Rm({impact:c,draggable:i,droppable:a,draggables:o,afterCritical:l}),d=um(i,a)?a:qm(a,i,o);return zm({draggable:i,destination:d,newPageBorderBoxCenter:u,viewport:s.frame,withDroppableDisplacement:!1,onlyOnMainAxis:!0})?c:null}var h=Boolean(t[a.axis.line]<=n.page.borderBox.center[a.axis.line]),p=function(){var e=n.descriptor.index;return n.descriptor.id===i.descriptor.id||h?e:e+1}(),f=Gm(a.axis,i.displaceBy);return Em({draggable:i,insideDestination:r,destination:a,viewport:s,displacedBy:f,last:hm,index:p})}({previousPageBorderBoxCenter:n,destination:c,draggable:r,draggables:o,moveRelativeTo:d,insideDestination:u,viewport:s,afterCritical:l});if(!h)return null;var p=Rm({impact:h,draggable:r,droppable:c,draggables:o,afterCritical:l});return{clientSelection:Fm({pageBorderBoxCenter:p,draggable:r,viewport:s}),impact:h,scrollJumpRequest:null}},Ym=function(e){var t=e.at;return t?"REORDER"===t.type?t.destination.droppableId:t.combine.droppableId:null},Km=function(e){var t=e.state,n=e.type,r=function(e,t){var n=Ym(e);return n?t[n]:null}(t.impact,t.dimensions.droppables),i=Boolean(r),o=t.dimensions.droppables[t.critical.droppable.id],a=r||o,s=a.axis.direction,l="vertical"===s&&("MOVE_UP"===n||"MOVE_DOWN"===n)||"horizontal"===s&&("MOVE_LEFT"===n||"MOVE_RIGHT"===n);if(l&&!i)return null;var c="MOVE_DOWN"===n||"MOVE_RIGHT"===n,u=t.dimensions.draggables[t.critical.draggable.id],d=t.current.page.borderBoxCenter,h=t.dimensions,p=h.draggables,f=h.droppables;return l?Bm({isMovingForward:c,previousPageBorderBoxCenter:d,draggable:u,destination:a,draggables:p,viewport:t.viewport,previousClientSelection:t.current.client.selection,previousImpact:t.impact,afterCritical:t.afterCritical}):Zm({isMovingForward:c,previousPageBorderBoxCenter:d,draggable:u,isOver:a,draggables:p,droppables:f,viewport:t.viewport,afterCritical:t.afterCritical})};function Qm(e){return"DRAGGING"===e.phase||"COLLECTING"===e.phase}function Xm(e){var t=fm(e.top,e.bottom),n=fm(e.left,e.right);return function(e){return t(e.y)&&n(e.x)}}function $m(e){var t=e.pageBorderBox,n=e.draggable,r=e.droppables,i=im(r).filter((function(e){if(!e.isEnabled)return!1;var n,r,i=e.subject.active;if(!i)return!1;if(r=i,!((n=t).left<r.right&&n.right>r.left&&n.top<r.bottom&&n.bottom>r.top))return!1;if(Xm(i)(t.center))return!0;var o=e.axis,a=i.center[o.crossAxisLine],s=t[o.crossAxisStart],l=t[o.crossAxisEnd],c=fm(i[o.crossAxisStart],i[o.crossAxisEnd]),u=c(s),d=c(l);return!u&&!d||(u?s<a:l>a)}));return i.length?1===i.length?i[0].descriptor.id:function(e){var t=e.pageBorderBox,n=e.draggable,r=e.candidates,i=n.page.borderBox.center,o=r.map((function(e){var n=e.axis,r=Vf(e.axis.line,t.center[n.line],e.page.borderBox.center[n.crossAxisLine]);return{id:e.descriptor.id,distance:Gf(i,r)}})).sort((function(e,t){return t.distance-e.distance}));return o[0]?o[0].id:null}({pageBorderBox:t,draggable:n,candidates:i}):null}var Jm=function(e,t){return rf(Zf(e,t))};function eg(e){var t=e.displaced,n=e.id;return Boolean(t.visible[n]||t.invisible[n])}var tg=function(e){var t=e.pageOffset,n=e.draggable,r=e.draggables,i=e.droppables,o=e.previousImpact,a=e.viewport,s=e.afterCritical,l=Jm(n.page.borderBox,t),c=$m({pageBorderBox:l,draggable:n,droppables:i});if(!c)return pm;var u=i[c],d=am(u.descriptor.id,r),h=function(e,t){var n=e.frame;return n?Jm(t,n.scroll.diff.value):t}(u,l);return function(e){var t=e.draggable,n=e.pageBorderBoxWithDroppableScroll,r=e.previousImpact,i=e.destination,o=e.insideDestination,a=e.afterCritical;if(!i.isCombineEnabled)return null;var s=i.axis,l=Gm(i.axis,t.displaceBy),c=l.value,u=n[s.start],d=n[s.end],h=em(cm(t,o),(function(e){var t=e.descriptor.id,n=e.page.borderBox,i=n[s.size]/4,o=Tm(t,a),l=eg({displaced:r.displaced,id:t});return o?l?d>n[s.start]+i&&d<n[s.end]-i:u>n[s.start]-c+i&&u<n[s.end]-c-i:l?d>n[s.start]+c+i&&d<n[s.end]+c-i:u>n[s.start]+i&&u<n[s.end]-i}));return h?{displacedBy:l,displaced:r.displaced,at:{type:"COMBINE",combine:{draggableId:h.descriptor.id,droppableId:i.descriptor.id}}}:null}({pageBorderBoxWithDroppableScroll:h,draggable:n,previousImpact:o,destination:u,insideDestination:d,afterCritical:s})||function(e){var t=e.pageBorderBoxWithDroppableScroll,n=e.draggable,r=e.destination,i=e.insideDestination,o=e.last,a=e.viewport,s=e.afterCritical,l=r.axis,c=Gm(r.axis,n.displaceBy),u=c.value,d=t[l.start],h=t[l.end],p=function(e){var t=e.draggable,n=e.closest,r=e.inHomeList;return n?r&&n.descriptor.index>t.descriptor.index?n.descriptor.index-1:n.descriptor.index:null}({draggable:n,closest:em(cm(n,i),(function(e){var t=e.descriptor.id,n=e.page.borderBox.center[l.line],r=Tm(t,s),i=eg({displaced:o,id:t});return r?i?h<=n:d<n-u:i?h<=n+u:d<n})),inHomeList:um(n,r)});return Em({draggable:n,insideDestination:i,destination:r,viewport:a,last:o,displacedBy:c,index:p})}({pageBorderBoxWithDroppableScroll:h,draggable:n,destination:u,insideDestination:d,last:o.displaced,viewport:a,afterCritical:s})},ng=function(e,t){var n;return(0,qo.Z)({},e,((n={})[t.descriptor.id]=t,n))},rg=function(e){var t=e.previousImpact,n=e.impact,r=e.droppables,i=Ym(t),o=Ym(n);if(!i)return r;if(i===o)return r;var a=r[i];if(!a.subject.withPlaceholder)return r;var s=function(e){var t=e.subject.withPlaceholder;t||If(!1);var n=e.frame;if(!n){var r=Qf({page:e.subject.page,axis:e.axis,frame:null,withPlaceholder:null});return(0,qo.Z)({},e,{subject:r})}var i=t.oldFrameMaxScroll;i||If(!1);var o=Wm(n,i),a=Qf({page:e.subject.page,axis:e.axis,frame:o,withPlaceholder:null});return(0,qo.Z)({},e,{subject:a,frame:o})}(a);return ng(r,s)},ig=function(e){var t=e.state,n=e.clientSelection,r=e.dimensions,i=e.viewport,o=e.impact,a=e.scrollJumpRequest,s=i||t.viewport,l=r||t.dimensions,c=n||t.current.client.selection,u=Bf(c,t.initial.client.selection),d={offset:u,selection:c,borderBoxCenter:zf(t.initial.client.borderBoxCenter,u)},h={selection:zf(d.selection,s.scroll.current),borderBoxCenter:zf(d.borderBoxCenter,s.scroll.current),offset:zf(d.offset,s.scroll.diff.value)},p={client:d,page:h};if("COLLECTING"===t.phase)return(0,qo.Z)({phase:"COLLECTING"},t,{dimensions:l,viewport:s,current:p});var f=l.draggables[t.critical.draggable.id],m=o||tg({pageOffset:h.offset,draggable:f,draggables:l.draggables,droppables:l.droppables,previousImpact:t.impact,viewport:s,afterCritical:t.afterCritical}),g=function(e){var t=e.draggable,n=e.draggables,r=e.droppables,i=e.previousImpact,o=e.impact,a=rg({previousImpact:i,impact:o,droppables:r}),s=Ym(o);if(!s)return a;var l=r[s];if(um(t,l))return a;if(l.subject.withPlaceholder)return a;var c=qm(l,t,n);return ng(a,c)}({draggable:f,impact:m,previousImpact:t.impact,draggables:l.draggables,droppables:l.droppables});return(0,qo.Z)({},t,{current:p,dimensions:{draggables:l.draggables,droppables:g},impact:m,viewport:s,scrollJumpRequest:a||null,forceShouldAnimate:!a&&null})};var og=function(e){var t=e.impact,n=e.viewport,r=e.draggables,i=e.destination,o=e.forceShouldAnimate,a=t.displaced,s=function(e,t){return e.map((function(e){return t[e]}))}(a.all,r),l=_m({afterDragging:s,destination:i,displacedBy:t.displacedBy,viewport:n.frame,forceShouldAnimate:o,last:a});return(0,qo.Z)({},t,{displaced:l})},ag=function(e){var t=e.impact,n=e.draggable,r=e.droppable,i=e.draggables,o=e.viewport,a=e.afterCritical,s=Rm({impact:t,draggable:n,draggables:i,droppable:r,afterCritical:a});return Fm({pageBorderBoxCenter:s,draggable:n,viewport:o})},sg=function(e){var t=e.state,n=e.dimensions,r=e.viewport;"SNAP"!==t.movementMode&&If(!1);var i=t.impact,o=r||t.viewport,a=n||t.dimensions,s=a.draggables,l=a.droppables,c=s[t.critical.draggable.id],u=Ym(i);u||If(!1);var d=l[u],h=og({impact:i,viewport:o,destination:d,draggables:s}),p=ag({impact:h,draggable:c,droppable:d,draggables:s,viewport:o,afterCritical:t.afterCritical});return ig({impact:h,clientSelection:p,state:t,dimensions:a,viewport:o})},lg=function(e){var t=e.draggable,n=e.home,r=e.draggables,i=e.viewport,o=Gm(n.axis,t.displaceBy),a=am(n.descriptor.id,r),s=a.indexOf(t);-1===s&&If(!1);var l,c=a.slice(s+1),u=c.reduce((function(e,t){return e[t.descriptor.id]=!0,e}),{}),d={inVirtualList:"virtual"===n.descriptor.mode,displacedBy:o,effected:u};return{impact:{displaced:_m({afterDragging:c,destination:n,displacedBy:o,last:null,viewport:i.frame,forceShouldAnimate:!1}),displacedBy:o,at:{type:"REORDER",destination:(l=t.descriptor,{index:l.index,droppableId:l.droppableId})}},afterCritical:d}},cg=function(e){0},ug=function(e){0},dg=function(e){var t=e.additions,n=e.updatedDroppables,r=e.viewport,i=r.scroll.diff.value;return t.map((function(e){var t=e.descriptor.droppableId,o=function(e){var t=e.frame;return t||If(!1),t}(n[t]),a=o.scroll.diff.value,s=function(e){var t=e.draggable,n=e.offset,r=e.initialWindowScroll,i=uf(t.client,n),o=df(i,r);return(0,qo.Z)({},t,{placeholder:(0,qo.Z)({},t.placeholder,{client:i}),client:i,page:o})}({draggable:e,offset:zf(i,a),initialWindowScroll:r.scroll.initial});return s}))},hg=function(e){return"SNAP"===e.movementMode},pg=function(e,t,n){var r=function(e,t){return{draggables:e.draggables,droppables:ng(e.droppables,t)}}(e.dimensions,t);return!hg(e)||n?ig({state:e,dimensions:r}):sg({state:e,dimensions:r})};function fg(e){return e.isDragging&&"SNAP"===e.movementMode?(0,qo.Z)({phase:"DRAGGING"},e,{scrollJumpRequest:null}):e}var mg={phase:"IDLE",completed:null,shouldFlush:!1},gg=function(e,t){if(void 0===e&&(e=mg),"FLUSH"===t.type)return(0,qo.Z)({},mg,{shouldFlush:!0});if("INITIAL_PUBLISH"===t.type){"IDLE"!==e.phase&&If(!1);var n=t.payload,r=n.critical,i=n.clientSelection,o=n.viewport,a=n.dimensions,s=n.movementMode,l=a.draggables[r.draggable.id],c=a.droppables[r.droppable.id],u={selection:i,borderBoxCenter:l.client.borderBox.center,offset:Ff},d={client:u,page:{selection:zf(u.selection,o.scroll.initial),borderBoxCenter:zf(u.selection,o.scroll.initial),offset:zf(u.selection,o.scroll.diff.value)}},h=im(a.droppables).every((function(e){return!e.isFixedOnPage})),p=lg({draggable:l,home:c,draggables:a.draggables,viewport:o}),f=p.impact;return{phase:"DRAGGING",isDragging:!0,critical:r,movementMode:s,dimensions:a,initial:d,current:d,isWindowScrollAllowed:h,impact:f,afterCritical:p.afterCritical,onLiftImpact:f,viewport:o,scrollJumpRequest:null,forceShouldAnimate:null}}if("COLLECTION_STARTING"===t.type)return"COLLECTING"===e.phase||"DROP_PENDING"===e.phase?e:("DRAGGING"!==e.phase&&If(!1),(0,qo.Z)({phase:"COLLECTING"},e,{phase:"COLLECTING"}));if("PUBLISH_WHILE_DRAGGING"===t.type)return"COLLECTING"!==e.phase&&"DROP_PENDING"!==e.phase&&If(!1),function(e){var t=e.state,n=e.published;cg();var r=n.modified.map((function(e){var n=t.dimensions.droppables[e.droppableId];return Xf(n,e.scroll)})),i=(0,qo.Z)({},t.dimensions.droppables,{},nm(r)),o=rm(dg({additions:n.additions,updatedDroppables:i,viewport:t.viewport})),a=(0,qo.Z)({},t.dimensions.draggables,{},o);n.removals.forEach((function(e){delete a[e]}));var s={droppables:i,draggables:a},l=Ym(t.impact),c=l?s.droppables[l]:null,u=s.draggables[t.critical.draggable.id],d=s.droppables[t.critical.droppable.id],h=lg({draggable:u,home:d,draggables:a,viewport:t.viewport}),p=h.impact,f=h.afterCritical,m=c&&c.isCombineEnabled?t.impact:p,g=tg({pageOffset:t.current.page.offset,draggable:s.draggables[t.critical.draggable.id],draggables:s.draggables,droppables:s.droppables,previousImpact:m,viewport:t.viewport,afterCritical:f});ug();var v=(0,qo.Z)({phase:"DRAGGING"},t,{phase:"DRAGGING",impact:g,onLiftImpact:p,dimensions:s,afterCritical:f,forceShouldAnimate:!1});return"COLLECTING"===t.phase?v:(0,qo.Z)({phase:"DROP_PENDING"},v,{phase:"DROP_PENDING",reason:t.reason,isWaiting:!1})}({state:e,published:t.payload});if("MOVE"===t.type){if("DROP_PENDING"===e.phase)return e;Qm(e)||If(!1);var m=t.payload.client;return Uf(m,e.current.client.selection)?e:ig({state:e,clientSelection:m,impact:hg(e)?e.impact:null})}if("UPDATE_DROPPABLE_SCROLL"===t.type){if("DROP_PENDING"===e.phase)return fg(e);if("COLLECTING"===e.phase)return fg(e);Qm(e)||If(!1);var g=t.payload,v=g.id,y=g.newScroll,b=e.dimensions.droppables[v];if(!b)return e;var x=Xf(b,y);return pg(e,x,!1)}if("UPDATE_DROPPABLE_IS_ENABLED"===t.type){if("DROP_PENDING"===e.phase)return e;Qm(e)||If(!1);var w=t.payload,S=w.id,_=w.isEnabled,C=e.dimensions.droppables[S];C||If(!1),C.isEnabled===_&&If(!1);var E=(0,qo.Z)({},C,{isEnabled:_});return pg(e,E,!0)}if("UPDATE_DROPPABLE_IS_COMBINE_ENABLED"===t.type){if("DROP_PENDING"===e.phase)return e;Qm(e)||If(!1);var T=t.payload,O=T.id,N=T.isCombineEnabled,k=e.dimensions.droppables[O];k||If(!1),k.isCombineEnabled===N&&If(!1);var j=(0,qo.Z)({},k,{isCombineEnabled:N});return pg(e,j,!0)}if("MOVE_BY_WINDOW_SCROLL"===t.type){if("DROP_PENDING"===e.phase||"DROP_ANIMATING"===e.phase)return e;Qm(e)||If(!1),e.isWindowScrollAllowed||If(!1);var I=t.payload.newScroll;if(Uf(e.viewport.scroll.current,I))return fg(e);var P=Mm(e.viewport,I);return hg(e)?sg({state:e,viewport:P}):ig({state:e,viewport:P})}if("UPDATE_VIEWPORT_MAX_SCROLL"===t.type){if(!Qm(e))return e;var D=t.payload.maxScroll;if(Uf(D,e.viewport.scroll.max))return e;var A=(0,qo.Z)({},e.viewport,{scroll:(0,qo.Z)({},e.viewport.scroll,{max:D})});return(0,qo.Z)({phase:"DRAGGING"},e,{viewport:A})}if("MOVE_UP"===t.type||"MOVE_DOWN"===t.type||"MOVE_LEFT"===t.type||"MOVE_RIGHT"===t.type){if("COLLECTING"===e.phase||"DROP_PENDING"===e.phase)return e;"DRAGGING"!==e.phase&&If(!1);var R=Km({state:e,type:t.type});return R?ig({state:e,impact:R.impact,clientSelection:R.clientSelection,scrollJumpRequest:R.scrollJumpRequest}):e}if("DROP_PENDING"===t.type){var M=t.payload.reason;return"COLLECTING"!==e.phase&&If(!1),(0,qo.Z)({phase:"DROP_PENDING"},e,{phase:"DROP_PENDING",isWaiting:!0,reason:M})}if("DROP_ANIMATE"===t.type){var L=t.payload,F=L.completed,z=L.dropDuration,B=L.newHomeClientOffset;return"DRAGGING"!==e.phase&&"DROP_PENDING"!==e.phase&&If(!1),{phase:"DROP_ANIMATING",completed:F,dropDuration:z,newHomeClientOffset:B,dimensions:e.dimensions}}return"DROP_COMPLETE"===t.type?{phase:"IDLE",completed:t.payload.completed,shouldFlush:!1}:e},vg=function(e){return{type:"LIFT",payload:e}},yg=function(e){return{type:"PUBLISH_WHILE_DRAGGING",payload:e}},bg=function(){return{type:"COLLECTION_STARTING",payload:null}},xg=function(e){return{type:"UPDATE_DROPPABLE_SCROLL",payload:e}},wg=function(e){return{type:"UPDATE_DROPPABLE_IS_ENABLED",payload:e}},Sg=function(e){return{type:"UPDATE_DROPPABLE_IS_COMBINE_ENABLED",payload:e}},_g=function(e){return{type:"MOVE",payload:e}},Cg=function(){return{type:"MOVE_UP",payload:null}},Eg=function(){return{type:"MOVE_DOWN",payload:null}},Tg=function(){return{type:"MOVE_RIGHT",payload:null}},Og=function(){return{type:"MOVE_LEFT",payload:null}},Ng=function(){return{type:"FLUSH",payload:null}},kg=function(e){return{type:"DROP_COMPLETE",payload:e}},jg=function(e){return{type:"DROP",payload:e}},Ig=function(){return{type:"DROP_ANIMATION_FINISHED",payload:null}};var Pg={outOfTheWay:"cubic-bezier(0.2, 0, 0, 1)",drop:"cubic-bezier(.2,1,.1,1)"},Dg={opacity:{drop:0,combining:.7},scale:{drop:.75}},Ag=.33,Rg=.55,Mg=.2+"s "+Pg.outOfTheWay,Lg={fluid:"opacity "+Mg,snap:"transform "+Mg+", opacity "+Mg,drop:function(e){var t=e+"s "+Pg.drop;return"transform "+t+", opacity "+t},outOfTheWay:"transform "+Mg,placeholder:"height "+Mg+", width "+Mg+", margin "+Mg},Fg=function(e){return Uf(e,Ff)?null:"translate("+e.x+"px, "+e.y+"px)"},zg={moveTo:Fg,drop:function(e,t){var n=Fg(e);return n?t?n+" scale("+Dg.scale.drop+")":n:null}},Bg=Ag,Ug=Rg,Hg=Ug-Bg,Vg=function(e){var t=e.getState,n=e.dispatch;return function(e){return function(r){if("DROP"===r.type){var i=t(),o=r.payload.reason;if("COLLECTING"!==i.phase){if("IDLE"!==i.phase){"DROP_PENDING"===i.phase&&i.isWaiting&&If(!1),"DRAGGING"!==i.phase&&"DROP_PENDING"!==i.phase&&If(!1);var a=i.critical,s=i.dimensions,l=s.draggables[i.critical.draggable.id],c=function(e){var t=e.draggables,n=e.reason,r=e.lastImpact,i=e.home,o=e.viewport,a=e.onLiftImpact;return r.at&&"DROP"===n?"REORDER"===r.at.type?{impact:r,didDropInsideDroppable:!0}:{impact:(0,qo.Z)({},r,{displaced:hm}),didDropInsideDroppable:!0}:{impact:og({draggables:t,impact:a,destination:i,viewport:o,forceShouldAnimate:!0}),didDropInsideDroppable:!1}}({reason:o,lastImpact:i.impact,afterCritical:i.afterCritical,onLiftImpact:i.onLiftImpact,home:i.dimensions.droppables[i.critical.droppable.id],viewport:i.viewport,draggables:i.dimensions.draggables}),u=c.impact,d=c.didDropInsideDroppable,h=d?sm(u):null,p=d?lm(u):null,f={index:a.draggable.index,droppableId:a.droppable.id},m={draggableId:l.descriptor.id,type:l.descriptor.type,source:f,reason:o,mode:i.movementMode,destination:h,combine:p},g=function(e){var t=e.impact,n=e.draggable,r=e.dimensions,i=e.viewport,o=e.afterCritical,a=r.draggables,s=r.droppables,l=Ym(t),c=l?s[l]:null,u=s[n.descriptor.droppableId],d=ag({impact:t,draggable:n,draggables:a,afterCritical:o,droppable:c||u,viewport:i});return Bf(d,n.client.borderBox.center)}({impact:u,draggable:l,dimensions:s,viewport:i.viewport,afterCritical:i.afterCritical}),v={critical:i.critical,afterCritical:i.afterCritical,result:m,impact:u};if(!Uf(i.current.client.offset,g)||Boolean(m.combine)){var y=function(e){var t=e.current,n=e.destination,r=e.reason,i=Gf(t,n);if(i<=0)return Bg;if(i>=1500)return Ug;var o=Bg+Hg*(i/1500);return Number(("CANCEL"===r?.6*o:o).toFixed(2))}({current:i.current.client.offset,destination:g,reason:o});n(function(e){return{type:"DROP_ANIMATE",payload:e}}({newHomeClientOffset:g,dropDuration:y,completed:v}))}else n(kg({completed:v}))}}else n(function(e){return{type:"DROP_PENDING",payload:e}}({reason:o}))}else e(r)}}},Gg=function(){return{x:window.pageXOffset,y:window.pageYOffset}};function Wg(e){var t=e.onWindowScroll;var n=vf((function(){t(Gg())})),r=function(e){return{eventName:"scroll",options:{passive:!0,capture:!1},fn:function(t){t.target!==window&&t.target!==window.document||e()}}}(n),i=Tf;function o(){return i!==Tf}return{start:function(){o()&&If(!1),i=Of(window,[r])},stop:function(){o()||If(!1),n.cancel(),i(),i=Tf},isActive:o}}var qg=function(e){var t=Wg({onWindowScroll:function(t){e.dispatch({type:"MOVE_BY_WINDOW_SCROLL",payload:{newScroll:t}})}});return function(e){return function(n){t.isActive()||"INITIAL_PUBLISH"!==n.type||t.start(),t.isActive()&&function(e){return"DROP_COMPLETE"===e.type||"DROP_ANIMATE"===e.type||"FLUSH"===e.type}(n)&&t.stop(),e(n)}}},Zg=function(){var e=[];return{add:function(t){var n=setTimeout((function(){return function(t){var n=Jf(e,(function(e){return e.timerId===t}));-1===n&&If(!1),e.splice(n,1)[0].callback()}(n)})),r={timerId:n,callback:t};e.push(r)},flush:function(){if(e.length){var t=[].concat(e);e.length=0,t.forEach((function(e){clearTimeout(e.timerId),e.callback()}))}}}},Yg=function(e,t){cg(),t(),ug()},Kg=function(e,t){return{draggableId:e.draggable.id,type:e.droppable.type,source:{droppableId:e.droppable.id,index:e.draggable.index},mode:t}},Qg=function(e,t,n,r){if(e){var i=function(e){var t=!1,n=!1,r=setTimeout((function(){n=!0})),i=function(i){t||n||(t=!0,e(i),clearTimeout(r))};return i.wasCalled=function(){return t},i}(n);e(t,{announce:i}),i.wasCalled()||n(r(t))}else n(r(t))},Xg=function(e,t){var n=function(e,t){var n=Zg(),r=null,i=function(n){r||If(!1),r=null,Yg(0,(function(){return Qg(e().onDragEnd,n,t,Lf.onDragEnd)}))};return{beforeCapture:function(t,n){r&&If(!1),Yg(0,(function(){var r=e().onBeforeCapture;r&&r({draggableId:t,mode:n})}))},beforeStart:function(t,n){r&&If(!1),Yg(0,(function(){var r=e().onBeforeDragStart;r&&r(Kg(t,n))}))},start:function(i,o){r&&If(!1);var a=Kg(i,o);r={mode:o,lastCritical:i,lastLocation:a.source,lastCombine:null},n.add((function(){Yg(0,(function(){return Qg(e().onDragStart,a,t,Lf.onDragStart)}))}))},update:function(i,o){var a=sm(o),s=lm(o);r||If(!1);var l=!function(e,t){if(e===t)return!0;var n=e.draggable.id===t.draggable.id&&e.draggable.droppableId===t.draggable.droppableId&&e.draggable.type===t.draggable.type&&e.draggable.index===t.draggable.index,r=e.droppable.id===t.droppable.id&&e.droppable.type===t.droppable.type;return n&&r}(i,r.lastCritical);l&&(r.lastCritical=i);var c,u,d=(u=a,!(null==(c=r.lastLocation)&&null==u||null!=c&&null!=u&&c.droppableId===u.droppableId&&c.index===u.index));d&&(r.lastLocation=a);var h=!function(e,t){return null==e&&null==t||null!=e&&null!=t&&e.draggableId===t.draggableId&&e.droppableId===t.droppableId}(r.lastCombine,s);if(h&&(r.lastCombine=s),l||d||h){var p=(0,qo.Z)({},Kg(i,r.mode),{combine:s,destination:a});n.add((function(){Yg(0,(function(){return Qg(e().onDragUpdate,p,t,Lf.onDragUpdate)}))}))}},flush:function(){r||If(!1),n.flush()},drop:i,abort:function(){if(r){var e=(0,qo.Z)({},Kg(r.lastCritical,r.mode),{combine:null,destination:null,reason:"CANCEL"});i(e)}}}}(e,t);return function(e){return function(t){return function(r){if("BEFORE_INITIAL_CAPTURE"!==r.type){if("INITIAL_PUBLISH"===r.type){var i=r.payload.critical;return n.beforeStart(i,r.payload.movementMode),t(r),void n.start(i,r.payload.movementMode)}if("DROP_COMPLETE"===r.type){var o=r.payload.completed.result;return n.flush(),t(r),void n.drop(o)}if(t(r),"FLUSH"!==r.type){var a=e.getState();"DRAGGING"===a.phase&&n.update(a.critical,a.impact)}else n.abort()}else n.beforeCapture(r.payload.draggableId,r.payload.movementMode)}}}},$g=function(e){return function(t){return function(n){if("DROP_ANIMATION_FINISHED"===n.type){var r=e.getState();"DROP_ANIMATING"!==r.phase&&If(!1),e.dispatch(kg({completed:r.completed}))}else t(n)}}},Jg=function(e){var t=null,n=null;return function(r){return function(i){if("FLUSH"!==i.type&&"DROP_COMPLETE"!==i.type&&"DROP_ANIMATION_FINISHED"!==i.type||(n&&(cancelAnimationFrame(n),n=null),t&&(t(),t=null)),r(i),"DROP_ANIMATE"===i.type){var o={eventName:"scroll",options:{capture:!0,passive:!1,once:!0},fn:function(){"DROP_ANIMATING"===e.getState().phase&&e.dispatch({type:"DROP_ANIMATION_FINISHED",payload:null})}};n=requestAnimationFrame((function(){n=null,t=Of(window,[o])}))}}}},ev=function(e){return function(t){return function(n){if(t(n),"PUBLISH_WHILE_DRAGGING"===n.type){var r=e.getState();"DROP_PENDING"===r.phase&&(r.isWaiting||e.dispatch(jg({reason:r.reason})))}}}},tv=gp.qC,nv=function(e){var t,n=e.dimensionMarshal,r=e.focusMarshal,i=e.styleMarshal,o=e.getResponders,a=e.announce,s=e.autoScroller;return(0,gp.MT)(gg,tv((0,gp.md)((t=i,function(){return function(e){return function(n){"INITIAL_PUBLISH"===n.type&&t.dragging(),"DROP_ANIMATE"===n.type&&t.dropping(n.payload.completed.result.reason),"FLUSH"!==n.type&&"DROP_COMPLETE"!==n.type||t.resting(),e(n)}}}),function(e){return function(){return function(t){return function(n){"DROP_COMPLETE"!==n.type&&"FLUSH"!==n.type&&"DROP_ANIMATE"!==n.type||e.stopPublishing(),t(n)}}}}(n),function(e){return function(t){var n=t.getState,r=t.dispatch;return function(t){return function(i){if("LIFT"===i.type){var o=i.payload,a=o.id,s=o.clientSelection,l=o.movementMode,c=n();"DROP_ANIMATING"===c.phase&&r(kg({completed:c.completed})),"IDLE"!==n().phase&&If(!1),r(Ng()),r({type:"BEFORE_INITIAL_CAPTURE",payload:{draggableId:a,movementMode:l}});var u={draggableId:a,scrollOptions:{shouldPublishImmediately:"SNAP"===l}},d=e.startPublishing(u),h=d.critical,p=d.dimensions,f=d.viewport;r({type:"INITIAL_PUBLISH",payload:{critical:h,dimensions:p,clientSelection:s,movementMode:l,viewport:f}})}else t(i)}}}}(n),Vg,$g,Jg,ev,function(e){return function(t){return function(n){return function(r){if(function(e){return"DROP_COMPLETE"===e.type||"DROP_ANIMATE"===e.type||"FLUSH"===e.type}(r))return e.stop(),void n(r);if("INITIAL_PUBLISH"===r.type){n(r);var i=t.getState();return"DRAGGING"!==i.phase&&If(!1),void e.start(i)}n(r),e.scroll(t.getState())}}}}(s),qg,function(e){var t=!1;return function(){return function(n){return function(r){if("INITIAL_PUBLISH"===r.type)return t=!0,e.tryRecordFocus(r.payload.critical.draggable.id),n(r),void e.tryRestoreFocusRecorded();if(n(r),t){if("FLUSH"===r.type)return t=!1,void e.tryRestoreFocusRecorded();if("DROP_COMPLETE"===r.type){t=!1;var i=r.payload.completed.result;i.combine&&e.tryShiftRecord(i.draggableId,i.combine.draggableId),e.tryRestoreFocusRecorded()}}}}}}(r),Xg(o,a))))},rv=function(){return{additions:{},removals:{},modified:{}}};var iv=function(e){var t=e.scrollHeight,n=e.scrollWidth,r=e.height,i=e.width,o=Bf({x:n,y:t},{x:i,y:r});return{x:Math.max(0,o.x),y:Math.max(0,o.y)}},ov=function(){var e=document.documentElement;return e||If(!1),e},av=function(){var e=ov();return iv({scrollHeight:e.scrollHeight,scrollWidth:e.scrollWidth,width:e.clientWidth,height:e.clientHeight})},sv=function(e){var t=e.critical,n=e.scrollOptions,r=e.registry;cg();var i=function(){var e=Gg(),t=av(),n=e.y,r=e.x,i=ov(),o=i.clientWidth,a=i.clientHeight;return{frame:rf({top:n,left:r,right:r+o,bottom:n+a}),scroll:{initial:e,current:e,max:t,diff:{value:Ff,displacement:Ff}}}}(),o=i.scroll.current,a=t.droppable,s=r.droppable.getAllByType(a.type).map((function(e){return e.callbacks.getDimensionAndWatchScroll(o,n)})),l=r.draggable.getAllByType(t.draggable.type).map((function(e){return e.getDimension(o)})),c={draggables:rm(l),droppables:nm(s)};return ug(),{dimensions:c,critical:t,viewport:i}};function lv(e,t,n){return n.descriptor.id!==t.id&&(n.descriptor.type===t.type&&"virtual"===e.droppable.getById(n.descriptor.droppableId).descriptor.mode)}var cv=function(e,t){var n=null,r=function(e){var t=e.registry,n=e.callbacks,r=rv(),i=null,o=function(){i||(n.collectionStarting(),i=requestAnimationFrame((function(){i=null,cg();var e=r,o=e.additions,a=e.removals,s=e.modified,l=Object.keys(o).map((function(e){return t.draggable.getById(e).getDimension(Ff)})).sort((function(e,t){return e.descriptor.index-t.descriptor.index})),c=Object.keys(s).map((function(e){return{droppableId:e,scroll:t.droppable.getById(e).callbacks.getScrollWhileDragging()}})),u={additions:l,removals:Object.keys(a),modified:c};r=rv(),ug(),n.publish(u)})))};return{add:function(e){var t=e.descriptor.id;r.additions[t]=e,r.modified[e.descriptor.droppableId]=!0,r.removals[t]&&delete r.removals[t],o()},remove:function(e){var t=e.descriptor;r.removals[t.id]=!0,r.modified[t.droppableId]=!0,r.additions[t.id]&&delete r.additions[t.id],o()},stop:function(){i&&(cancelAnimationFrame(i),i=null,r=rv())}}}({callbacks:{publish:t.publishWhileDragging,collectionStarting:t.collectionStarting},registry:e}),i=function(t){n||If(!1);var i=n.critical.draggable;"ADDITION"===t.type&&lv(e,i,t.value)&&r.add(t.value),"REMOVAL"===t.type&&lv(e,i,t.value)&&r.remove(t.value)},o={updateDroppableIsEnabled:function(r,i){e.droppable.exists(r)||If(!1),n&&t.updateDroppableIsEnabled({id:r,isEnabled:i})},updateDroppableIsCombineEnabled:function(r,i){n&&(e.droppable.exists(r)||If(!1),t.updateDroppableIsCombineEnabled({id:r,isCombineEnabled:i}))},scrollDroppable:function(t,r){n&&e.droppable.getById(t).callbacks.scroll(r)},updateDroppableScroll:function(r,i){n&&(e.droppable.exists(r)||If(!1),t.updateDroppableScroll({id:r,newScroll:i}))},startPublishing:function(t){n&&If(!1);var r=e.draggable.getById(t.draggableId),o=e.droppable.getById(r.descriptor.droppableId),a={draggable:r.descriptor,droppable:o.descriptor},s=e.subscribe(i);return n={critical:a,unsubscribe:s},sv({critical:a,registry:e,scrollOptions:t.scrollOptions})},stopPublishing:function(){if(n){r.stop();var t=n.critical.droppable;e.droppable.getAllByType(t.type).forEach((function(e){return e.callbacks.dragStopped()})),n.unsubscribe(),n=null}}};return o},uv=function(e,t){return"IDLE"===e.phase||"DROP_ANIMATING"===e.phase&&(e.completed.result.draggableId!==t&&"DROP"===e.completed.result.reason)},dv=function(e){window.scrollBy(e.x,e.y)},hv=gf((function(e){return im(e).filter((function(e){return!!e.isEnabled&&!!e.frame}))})),pv=function(e){var t=e.center,n=e.destination,r=e.droppables;if(n){var i=r[n];return i.frame?i:null}var o=function(e,t){var n=em(hv(t),(function(t){return t.frame||If(!1),Xm(t.frame.pageMarginBox)(e)}));return n}(t,r);return o},fv=.25,mv=.05,gv=28,vv=function(e){return Math.pow(e,2)},yv={stopDampeningAt:1200,accelerateAt:360},bv=function(e){var t=e.startOfRange,n=e.endOfRange,r=e.current,i=n-t;return 0===i?0:(r-t)/i},xv=yv.accelerateAt,wv=yv.stopDampeningAt,Sv=function(e){var t=e.distanceToEdge,n=e.thresholds,r=e.dragStartTime,i=e.shouldUseTimeDampening,o=function(e,t){if(e>t.startScrollingFrom)return 0;if(e<=t.maxScrollValueAt)return gv;if(e===t.startScrollingFrom)return 1;var n=bv({startOfRange:t.maxScrollValueAt,endOfRange:t.startScrollingFrom,current:e}),r=gv*vv(1-n);return Math.ceil(r)}(t,n);return 0===o?0:i?Math.max(function(e,t){var n=t,r=wv,i=Date.now()-n;if(i>=wv)return e;if(i<xv)return 1;var o=bv({startOfRange:xv,endOfRange:r,current:i}),a=e*vv(o);return Math.ceil(a)}(o,r),1):o},_v=function(e){var t=e.container,n=e.distanceToEdges,r=e.dragStartTime,i=e.axis,o=e.shouldUseTimeDampening,a=function(e,t){return{startScrollingFrom:e[t.size]*fv,maxScrollValueAt:e[t.size]*mv}}(t,i);return n[i.end]<n[i.start]?Sv({distanceToEdge:n[i.end],thresholds:a,dragStartTime:r,shouldUseTimeDampening:o}):-1*Sv({distanceToEdge:n[i.start],thresholds:a,dragStartTime:r,shouldUseTimeDampening:o})},Cv=qf((function(e){return 0===e?0:e})),Ev=function(e){var t=e.dragStartTime,n=e.container,r=e.subject,i=e.center,o=e.shouldUseTimeDampening,a={top:i.y-n.top,right:n.right-i.x,bottom:n.bottom-i.y,left:i.x-n.left},s=_v({container:n,distanceToEdges:a,dragStartTime:t,axis:vm,shouldUseTimeDampening:o}),l=_v({container:n,distanceToEdges:a,dragStartTime:t,axis:ym,shouldUseTimeDampening:o}),c=Cv({x:l,y:s});if(Uf(c,Ff))return null;var u=function(e){var t=e.container,n=e.subject,r=e.proposedScroll,i=n.height>t.height,o=n.width>t.width;return o||i?o&&i?null:{x:o?0:r.x,y:i?0:r.y}:r}({container:n,subject:r,proposedScroll:c});return u?Uf(u,Ff)?null:u:null},Tv=qf((function(e){return 0===e?0:e>0?1:-1})),Ov=function(){var e=function(e,t){return e<0?e:e>t?e-t:0};return function(t){var n=t.current,r=t.max,i=t.change,o=zf(n,i),a={x:e(o.x,r.x),y:e(o.y,r.y)};return Uf(a,Ff)?null:a}}(),Nv=function(e){var t=e.max,n=e.current,r=e.change,i={x:Math.max(n.x,t.x),y:Math.max(n.y,t.y)},o=Tv(r),a=Ov({max:i,current:n,change:o});return!a||(0!==o.x&&0===a.x||0!==o.y&&0===a.y)},kv=function(e,t){return Nv({current:e.scroll.current,max:e.scroll.max,change:t})},jv=function(e,t){var n=e.frame;return!!n&&Nv({current:n.scroll.current,max:n.scroll.max,change:t})},Iv=function(e){var t=e.state,n=e.dragStartTime,r=e.shouldUseTimeDampening,i=e.scrollWindow,o=e.scrollDroppable,a=t.current.page.borderBoxCenter,s=t.dimensions.draggables[t.critical.draggable.id].page.marginBox;if(t.isWindowScrollAllowed){var l=function(e){var t=e.viewport,n=e.subject,r=e.center,i=e.dragStartTime,o=e.shouldUseTimeDampening,a=Ev({dragStartTime:i,container:t.frame,subject:n,center:r,shouldUseTimeDampening:o});return a&&kv(t,a)?a:null}({dragStartTime:n,viewport:t.viewport,subject:s,center:a,shouldUseTimeDampening:r});if(l)return void i(l)}var c=pv({center:a,destination:Ym(t.impact),droppables:t.dimensions.droppables});if(c){var u=function(e){var t=e.droppable,n=e.subject,r=e.center,i=e.dragStartTime,o=e.shouldUseTimeDampening,a=t.frame;if(!a)return null;var s=Ev({dragStartTime:i,container:a.pageMarginBox,subject:n,center:r,shouldUseTimeDampening:o});return s&&jv(t,s)?s:null}({dragStartTime:n,droppable:c,subject:s,center:a,shouldUseTimeDampening:r});u&&o(c.descriptor.id,u)}},Pv=function(e){var t=e.move,n=e.scrollDroppable,r=e.scrollWindow,i=function(e,t){if(!jv(e,t))return t;var r=function(e,t){var n=e.frame;return n&&jv(e,t)?Ov({current:n.scroll.current,max:n.scroll.max,change:t}):null}(e,t);if(!r)return n(e.descriptor.id,t),null;var i=Bf(t,r);return n(e.descriptor.id,i),Bf(t,i)},o=function(e,t,n){if(!e)return n;if(!kv(t,n))return n;var i=function(e,t){if(!kv(e,t))return null;var n=e.scroll.max,r=e.scroll.current;return Ov({current:r,max:n,change:t})}(t,n);if(!i)return r(n),null;var o=Bf(n,i);return r(o),Bf(n,o)};return function(e){var n=e.scrollJumpRequest;if(n){var r=Ym(e.impact);r||If(!1);var a=i(e.dimensions.droppables[r],n);if(a){var s=e.viewport,l=o(e.isWindowScrollAllowed,s,a);l&&function(e,n){var r=zf(e.current.client.selection,n);t({client:r})}(e,l)}}}},Dv=function(e){var t=e.scrollDroppable,n=e.scrollWindow,r=e.move,i=function(e){var t=e.scrollWindow,n=e.scrollDroppable,r=vf(t),i=vf(n),o=null,a=function(e){o||If(!1);var t=o,n=t.shouldUseTimeDampening,a=t.dragStartTime;Iv({state:e,scrollWindow:r,scrollDroppable:i,dragStartTime:a,shouldUseTimeDampening:n})};return{start:function(e){cg(),o&&If(!1);var t=Date.now(),n=!1,r=function(){n=!0};Iv({state:e,dragStartTime:0,shouldUseTimeDampening:!1,scrollWindow:r,scrollDroppable:r}),o={dragStartTime:t,shouldUseTimeDampening:n},ug(),n&&a(e)},stop:function(){o&&(r.cancel(),i.cancel(),o=null)},scroll:a}}({scrollWindow:n,scrollDroppable:t}),o=Pv({move:r,scrollWindow:n,scrollDroppable:t});return{scroll:function(e){"DRAGGING"===e.phase&&("FLUID"!==e.movementMode?e.scrollJumpRequest&&o(e):i.scroll(e))},start:i.start,stop:i.stop}},Av="data-rbd",Rv=function(){var e=Av+"-drag-handle";return{base:e,draggableId:e+"-draggable-id",contextId:e+"-context-id"}}(),Mv=function(){var e=Av+"-draggable";return{base:e,contextId:e+"-context-id",id:e+"-id"}}(),Lv=function(){var e=Av+"-droppable";return{base:e,contextId:e+"-context-id",id:e+"-id"}}(),Fv={contextId:Av+"-scroll-container-context-id"},zv=function(e,t){return e.map((function(e){var n=e.styles[t];return n?e.selector+" { "+n+" }":""})).join(" ")},Bv=function(e){var t=function(e){return function(t){return"["+t+'="'+e+'"]'}}(e),n=function(){var e="\n cursor: -webkit-grab;\n cursor: grab;\n ";return{selector:t(Rv.contextId),styles:{always:"\n -webkit-touch-callout: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n touch-action: manipulation;\n ",resting:e,dragging:"pointer-events: none;",dropAnimating:e}}}(),r=function(){var e="\n transition: "+Lg.outOfTheWay+";\n ";return{selector:t(Mv.contextId),styles:{dragging:e,dropAnimating:e,userCancel:e}}}(),i=[r,n,{selector:t(Lv.contextId),styles:{always:"overflow-anchor: none;"}},{selector:"body",styles:{dragging:"\n cursor: grabbing;\n cursor: -webkit-grabbing;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n overflow-anchor: none;\n "}}];return{always:zv(i,"always"),resting:zv(i,"resting"),dragging:zv(i,"dragging"),dropAnimating:zv(i,"dropAnimating"),userCancel:zv(i,"userCancel")}},Uv="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement?a.useLayoutEffect:a.useEffect,Hv=function(){var e=document.querySelector("head");return e||If(!1),e},Vv=function(e){var t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.type="text/css",t};var Gv=function(e){return e&&e.ownerDocument?e.ownerDocument.defaultView:window};function Wv(e){return e instanceof Gv(e).HTMLElement}function qv(e,t){var n="["+Rv.contextId+'="'+e+'"]',r=tm(document.querySelectorAll(n));if(!r.length)return null;var i=em(r,(function(e){return e.getAttribute(Rv.draggableId)===t}));return i&&Wv(i)?i:null}function Zv(){var e={draggables:{},droppables:{}},t=[];function n(e){t.length&&t.forEach((function(t){return t(e)}))}function r(t){return e.draggables[t]||null}function i(t){return e.droppables[t]||null}return{draggable:{register:function(t){e.draggables[t.descriptor.id]=t,n({type:"ADDITION",value:t})},update:function(t,n){var r=e.draggables[n.descriptor.id];r&&r.uniqueId===t.uniqueId&&(delete e.draggables[n.descriptor.id],e.draggables[t.descriptor.id]=t)},unregister:function(t){var i=t.descriptor.id,o=r(i);o&&t.uniqueId===o.uniqueId&&(delete e.draggables[i],n({type:"REMOVAL",value:t}))},getById:function(e){var t=r(e);return t||If(!1),t},findById:r,exists:function(e){return Boolean(r(e))},getAllByType:function(t){return $f(e.draggables).filter((function(e){return e.descriptor.type===t}))}},droppable:{register:function(t){e.droppables[t.descriptor.id]=t},unregister:function(t){var n=i(t.descriptor.id);n&&t.uniqueId===n.uniqueId&&delete e.droppables[t.descriptor.id]},getById:function(e){var t=i(e);return t||If(!1),t},findById:i,exists:function(e){return Boolean(i(e))},getAllByType:function(t){return $f(e.droppables).filter((function(e){return e.descriptor.type===t}))}},subscribe:function(e){return t.push(e),function(){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}},clean:function(){e.draggables={},e.droppables={},t.length=0}}}var Yv=a.createContext(null),Kv=function(){var e=document.body;return e||If(!1),e},Qv={position:"absolute",width:"1px",height:"1px",margin:"-1px",border:"0",padding:"0",overflow:"hidden",clip:"rect(0 0 0 0)","clip-path":"inset(100%)"},Xv=function(e){return"rbd-announcement-"+e};var $v=0,Jv={separator:"::"};function ey(e,t){return void 0===t&&(t=Jv),tf((function(){return""+e+t.separator+$v++}),[t.separator,e])}var ty=a.createContext(null);function ny(e){0}function ry(e,t){ny()}function iy(e){var t=(0,a.useRef)(e);return(0,a.useEffect)((function(){t.current=e})),t}var oy,ay=27,sy=32,ly=37,cy=38,uy=39,dy=40,hy=((oy={})[13]=!0,oy[9]=!0,oy),py=function(e){hy[e.keyCode]&&e.preventDefault()},fy=function(){var e="visibilitychange";return"undefined"===typeof document?e:em([e,"ms"+e,"webkit"+e,"moz"+e,"o"+e],(function(e){return"on"+e in document}))||e}(),my=0,gy=5;var vy,yy={type:"IDLE"};function by(e){var t=e.cancel,n=e.completed,r=e.getPhase,i=e.setPhase;return[{eventName:"mousemove",fn:function(e){var t=e.button,n=e.clientX,o=e.clientY;if(t===my){var a={x:n,y:o},s=r();if("DRAGGING"===s.type)return e.preventDefault(),void s.actions.move(a);"PENDING"!==s.type&&If(!1);var l=s.point;if(c=l,u=a,Math.abs(u.x-c.x)>=gy||Math.abs(u.y-c.y)>=gy){var c,u;e.preventDefault();var d=s.actions.fluidLift(a);i({type:"DRAGGING",actions:d})}}}},{eventName:"mouseup",fn:function(e){var i=r();"DRAGGING"===i.type?(e.preventDefault(),i.actions.drop({shouldBlockNextClick:!0}),n()):t()}},{eventName:"mousedown",fn:function(e){"DRAGGING"===r().type&&e.preventDefault(),t()}},{eventName:"keydown",fn:function(e){if("PENDING"!==r().type)return e.keyCode===ay?(e.preventDefault(),void t()):void py(e);t()}},{eventName:"resize",fn:t},{eventName:"scroll",options:{passive:!0,capture:!1},fn:function(){"PENDING"===r().type&&t()}},{eventName:"webkitmouseforcedown",fn:function(e){var n=r();"IDLE"===n.type&&If(!1),n.actions.shouldRespectForcePress()?t():e.preventDefault()}},{eventName:fy,fn:t}]}function xy(){}var wy=((vy={})[34]=!0,vy[33]=!0,vy[36]=!0,vy[35]=!0,vy);function Sy(e,t){function n(){t(),e.cancel()}return[{eventName:"keydown",fn:function(r){return r.keyCode===ay?(r.preventDefault(),void n()):r.keyCode===sy?(r.preventDefault(),t(),void e.drop()):r.keyCode===dy?(r.preventDefault(),void e.moveDown()):r.keyCode===cy?(r.preventDefault(),void e.moveUp()):r.keyCode===uy?(r.preventDefault(),void e.moveRight()):r.keyCode===ly?(r.preventDefault(),void e.moveLeft()):void(wy[r.keyCode]?r.preventDefault():py(r))}},{eventName:"mousedown",fn:n},{eventName:"mouseup",fn:n},{eventName:"click",fn:n},{eventName:"touchstart",fn:n},{eventName:"resize",fn:n},{eventName:"wheel",fn:n,options:{passive:!0}},{eventName:fy,fn:n}]}var _y={type:"IDLE"},Cy=120,Ey=.15;var Ty={input:!0,button:!0,textarea:!0,select:!0,option:!0,optgroup:!0,video:!0,audio:!0};function Oy(e,t){if(null==t)return!1;if(Boolean(Ty[t.tagName.toLowerCase()]))return!0;var n=t.getAttribute("contenteditable");return"true"===n||""===n||t!==e&&Oy(e,t.parentElement)}function Ny(e,t){var n=t.target;return!!Wv(n)&&Oy(e,n)}var ky=function(e){return rf(e.getBoundingClientRect()).center};var jy=function(){var e="matches";return"undefined"===typeof document?e:em([e,"msMatchesSelector","webkitMatchesSelector"],(function(e){return e in Element.prototype}))||e}();function Iy(e,t){return null==e?null:e[jy](t)?e:Iy(e.parentElement,t)}function Py(e,t){return e.closest?e.closest(t):Iy(e,t)}function Dy(e,t){var n,r=t.target;if(!((n=r)instanceof Gv(n).Element))return null;var i=function(e){return"["+Rv.contextId+'="'+e+'"]'}(e),o=Py(r,i);return o&&Wv(o)?o:null}function Ay(e){e.preventDefault()}function Ry(e){var t=e.expected,n=e.phase,r=e.isLockActive;e.shouldWarn;return!!r()&&t===n}function My(e){var t=e.lockAPI,n=e.store,r=e.registry,i=e.draggableId;if(t.isClaimed())return!1;var o=r.draggable.findById(i);return!!o&&(!!o.options.isEnabled&&!!uv(n.getState(),i))}function Ly(e){var t=e.lockAPI,n=e.contextId,r=e.store,i=e.registry,o=e.draggableId,a=e.forceSensorStop,s=e.sourceEvent;if(!My({lockAPI:t,store:r,registry:i,draggableId:o}))return null;var l=i.draggable.getById(o),c=function(e,t){var n="["+Mv.contextId+'="'+e+'"]',r=em(tm(document.querySelectorAll(n)),(function(e){return e.getAttribute(Mv.id)===t}));return r&&Wv(r)?r:null}(n,l.descriptor.id);if(!c)return null;if(s&&!l.options.canDragInteractiveElements&&Ny(c,s))return null;var u=t.claim(a||Tf),d="PRE_DRAG";function h(){return l.options.shouldRespectForcePress}function p(){return t.isActive(u)}var f=function(e,t){Ry({expected:e,phase:d,isLockActive:p,shouldWarn:!0})&&r.dispatch(t())}.bind(null,"DRAGGING");function m(e){function n(){t.release(),d="COMPLETED"}function i(t,i){if(void 0===i&&(i={shouldBlockNextClick:!1}),e.cleanup(),i.shouldBlockNextClick){var o=Of(window,[{eventName:"click",fn:Ay,options:{once:!0,passive:!1,capture:!0}}]);setTimeout(o)}n(),r.dispatch(jg({reason:t}))}return"PRE_DRAG"!==d&&(n(),"PRE_DRAG"!==d&&If(!1)),r.dispatch(vg(e.liftActionArgs)),d="DRAGGING",(0,qo.Z)({isActive:function(){return Ry({expected:"DRAGGING",phase:d,isLockActive:p,shouldWarn:!1})},shouldRespectForcePress:h,drop:function(e){return i("DROP",e)},cancel:function(e){return i("CANCEL",e)}},e.actions)}var g={isActive:function(){return Ry({expected:"PRE_DRAG",phase:d,isLockActive:p,shouldWarn:!1})},shouldRespectForcePress:h,fluidLift:function(e){var t=vf((function(e){f((function(){return _g({client:e})}))})),n=m({liftActionArgs:{id:o,clientSelection:e,movementMode:"FLUID"},cleanup:function(){return t.cancel()},actions:{move:t}});return(0,qo.Z)({},n,{move:t})},snapLift:function(){var e={moveUp:function(){return f(Cg)},moveRight:function(){return f(Tg)},moveDown:function(){return f(Eg)},moveLeft:function(){return f(Og)}};return m({liftActionArgs:{id:o,clientSelection:ky(c),movementMode:"SNAP"},cleanup:Tf,actions:e})},abort:function(){Ry({expected:"PRE_DRAG",phase:d,isLockActive:p,shouldWarn:!0})&&t.release()}};return g}var Fy=[function(e){var t=(0,a.useRef)(yy),n=(0,a.useRef)(Tf),r=tf((function(){return{eventName:"mousedown",fn:function(t){if(!t.defaultPrevented&&t.button===my&&!(t.ctrlKey||t.metaKey||t.shiftKey||t.altKey)){var r=e.findClosestDraggableId(t);if(r){var i=e.tryGetLock(r,s,{sourceEvent:t});if(i){t.preventDefault();var o={x:t.clientX,y:t.clientY};n.current(),u(i,o)}}}}}}),[e]),i=tf((function(){return{eventName:"webkitmouseforcewillbegin",fn:function(t){if(!t.defaultPrevented){var n=e.findClosestDraggableId(t);if(n){var r=e.findOptionsForDraggable(n);r&&(r.shouldRespectForcePress||e.canGetLock(n)&&t.preventDefault())}}}}}),[e]),o=nf((function(){n.current=Of(window,[i,r],{passive:!1,capture:!0})}),[i,r]),s=nf((function(){"IDLE"!==t.current.type&&(t.current=yy,n.current(),o())}),[o]),l=nf((function(){var e=t.current;s(),"DRAGGING"===e.type&&e.actions.cancel({shouldBlockNextClick:!0}),"PENDING"===e.type&&e.actions.abort()}),[s]),c=nf((function(){var e=by({cancel:l,completed:s,getPhase:function(){return t.current},setPhase:function(e){t.current=e}});n.current=Of(window,e,{capture:!0,passive:!1})}),[l,s]),u=nf((function(e,n){"IDLE"!==t.current.type&&If(!1),t.current={type:"PENDING",point:n,actions:e},c()}),[c]);Uv((function(){return o(),function(){n.current()}}),[o])},function(e){var t=(0,a.useRef)(xy),n=tf((function(){return{eventName:"keydown",fn:function(n){if(!n.defaultPrevented&&n.keyCode===sy){var i=e.findClosestDraggableId(n);if(i){var o=e.tryGetLock(i,l,{sourceEvent:n});if(o){n.preventDefault();var a=!0,s=o.snapLift();t.current(),t.current=Of(window,Sy(s,l),{capture:!0,passive:!1})}}}function l(){a||If(!1),a=!1,t.current(),r()}}}}),[e]),r=nf((function(){t.current=Of(window,[n],{passive:!1,capture:!0})}),[n]);Uv((function(){return r(),function(){t.current()}}),[r])},function(e){var t=(0,a.useRef)(_y),n=(0,a.useRef)(Tf),r=nf((function(){return t.current}),[]),i=nf((function(e){t.current=e}),[]),o=tf((function(){return{eventName:"touchstart",fn:function(t){if(!t.defaultPrevented){var r=e.findClosestDraggableId(t);if(r){var i=e.tryGetLock(r,l,{sourceEvent:t});if(i){var o=t.touches[0],a={x:o.clientX,y:o.clientY};n.current(),h(i,a)}}}}}}),[e]),s=nf((function(){n.current=Of(window,[o],{capture:!0,passive:!1})}),[o]),l=nf((function(){var e=t.current;"IDLE"!==e.type&&("PENDING"===e.type&&clearTimeout(e.longPressTimerId),i(_y),n.current(),s())}),[s,i]),c=nf((function(){var e=t.current;l(),"DRAGGING"===e.type&&e.actions.cancel({shouldBlockNextClick:!0}),"PENDING"===e.type&&e.actions.abort()}),[l]),u=nf((function(){var e={capture:!0,passive:!1},t={cancel:c,completed:l,getPhase:r},i=Of(window,function(e){var t=e.cancel,n=e.completed,r=e.getPhase;return[{eventName:"touchmove",options:{capture:!1},fn:function(e){var n=r();if("DRAGGING"===n.type){n.hasMoved=!0;var i=e.touches[0],o={x:i.clientX,y:i.clientY};e.preventDefault(),n.actions.move(o)}else t()}},{eventName:"touchend",fn:function(e){var i=r();"DRAGGING"===i.type?(e.preventDefault(),i.actions.drop({shouldBlockNextClick:!0}),n()):t()}},{eventName:"touchcancel",fn:function(e){"DRAGGING"===r().type?(e.preventDefault(),t()):t()}},{eventName:"touchforcechange",fn:function(e){var n=r();"IDLE"===n.type&&If(!1);var i=e.touches[0];if(i&&i.force>=Ey){var o=n.actions.shouldRespectForcePress();if("PENDING"!==n.type)return o?n.hasMoved?void e.preventDefault():void t():void e.preventDefault();o&&t()}}},{eventName:fy,fn:t}]}(t),e),o=Of(window,function(e){var t=e.cancel,n=e.getPhase;return[{eventName:"orientationchange",fn:t},{eventName:"resize",fn:t},{eventName:"contextmenu",fn:function(e){e.preventDefault()}},{eventName:"keydown",fn:function(e){"DRAGGING"===n().type?(e.keyCode===ay&&e.preventDefault(),t()):t()}},{eventName:fy,fn:t}]}(t),e);n.current=function(){i(),o()}}),[c,r,l]),d=nf((function(){var e=r();"PENDING"!==e.type&&If(!1);var t=e.actions.fluidLift(e.point);i({type:"DRAGGING",actions:t,hasMoved:!1})}),[r,i]),h=nf((function(e,t){"IDLE"!==r().type&&If(!1);var n=setTimeout(d,Cy);i({type:"PENDING",point:t,actions:e,longPressTimerId:n}),u()}),[u,r,i,d]);Uv((function(){return s(),function(){n.current();var e=r();"PENDING"===e.type&&(clearTimeout(e.longPressTimerId),i(_y))}}),[r,s,i]),Uv((function(){return Of(window,[{eventName:"touchmove",fn:function(){},options:{capture:!1,passive:!1}}])}),[])}];function zy(e){var t=e.contextId,n=e.store,r=e.registry,i=e.customSensors,o=e.enableDefaultSensors,s=[].concat(o?Fy:[],i||[]),l=(0,a.useState)((function(){return function(){var e=null;function t(){e||If(!1),e=null}return{isClaimed:function(){return Boolean(e)},isActive:function(t){return t===e},claim:function(t){e&&If(!1);var n={abandon:t};return e=n,n},release:t,tryAbandon:function(){e&&(e.abandon(),t())}}}()}))[0],c=nf((function(e,t){e.isDragging&&!t.isDragging&&l.tryAbandon()}),[l]);Uv((function(){var e=n.getState();return n.subscribe((function(){var t=n.getState();c(e,t),e=t}))}),[l,n,c]),Uv((function(){return l.tryAbandon}),[l.tryAbandon]);var u=nf((function(e){return My({lockAPI:l,registry:r,store:n,draggableId:e})}),[l,r,n]),d=nf((function(e,i,o){return Ly({lockAPI:l,registry:r,contextId:t,store:n,draggableId:e,forceSensorStop:i,sourceEvent:o&&o.sourceEvent?o.sourceEvent:null})}),[t,l,r,n]),h=nf((function(e){return function(e,t){var n=Dy(e,t);return n?n.getAttribute(Rv.draggableId):null}(t,e)}),[t]),p=nf((function(e){var t=r.draggable.findById(e);return t?t.options:null}),[r.draggable]),f=nf((function(){l.isClaimed()&&(l.tryAbandon(),"IDLE"!==n.getState().phase&&n.dispatch(Ng()))}),[l,n]),m=nf(l.isClaimed,[l]),g=tf((function(){return{canGetLock:u,tryGetLock:d,findClosestDraggableId:h,findOptionsForDraggable:p,tryReleaseLock:f,isLockClaimed:m}}),[u,d,h,p,f,m]);ny();for(var v=0;v<s.length;v++)s[v](g)}var By=function(e){return{onBeforeCapture:e.onBeforeCapture,onBeforeDragStart:e.onBeforeDragStart,onDragStart:e.onDragStart,onDragEnd:e.onDragEnd,onDragUpdate:e.onDragUpdate}};function Uy(e){return e.current||If(!1),e.current}function Hy(e){var t=e.contextId,n=e.setCallbacks,r=e.sensors,i=e.nonce,o=e.dragHandleUsageInstructions,s=(0,a.useRef)(null);ry();var l=iy(e),c=nf((function(){return By(l.current)}),[l]),u=function(e){var t=tf((function(){return Xv(e)}),[e]),n=(0,a.useRef)(null);return(0,a.useEffect)((function(){var e=document.createElement("div");return n.current=e,e.id=t,e.setAttribute("aria-live","assertive"),e.setAttribute("aria-atomic","true"),(0,qo.Z)(e.style,Qv),Kv().appendChild(e),function(){setTimeout((function(){var t=Kv();t.contains(e)&&t.removeChild(e),e===n.current&&(n.current=null)}))}}),[t]),nf((function(e){var t=n.current;t&&(t.textContent=e)}),[])}(t),d=function(e){var t=e.contextId,n=e.text,r=ey("hidden-text",{separator:"-"}),i=tf((function(){return"rbd-hidden-text-"+(e={contextId:t,uniqueId:r}).contextId+"-"+e.uniqueId;var e}),[r,t]);return(0,a.useEffect)((function(){var e=document.createElement("div");return e.id=i,e.textContent=n,e.style.display="none",Kv().appendChild(e),function(){var t=Kv();t.contains(e)&&t.removeChild(e)}}),[i,n]),i}({contextId:t,text:o}),h=function(e,t){var n=tf((function(){return Bv(e)}),[e]),r=(0,a.useRef)(null),i=(0,a.useRef)(null),o=nf(gf((function(e){var t=i.current;t||If(!1),t.textContent=e})),[]),s=nf((function(e){var t=r.current;t||If(!1),t.textContent=e}),[]);Uv((function(){(r.current||i.current)&&If(!1);var a=Vv(t),l=Vv(t);return r.current=a,i.current=l,a.setAttribute(Av+"-always",e),l.setAttribute(Av+"-dynamic",e),Hv().appendChild(a),Hv().appendChild(l),s(n.always),o(n.resting),function(){var e=function(e){var t=e.current;t||If(!1),Hv().removeChild(t),e.current=null};e(r),e(i)}}),[t,s,o,n.always,n.resting,e]);var l=nf((function(){return o(n.dragging)}),[o,n.dragging]),c=nf((function(e){o("DROP"!==e?n.userCancel:n.dropAnimating)}),[o,n.dropAnimating,n.userCancel]),u=nf((function(){i.current&&o(n.resting)}),[o,n.resting]);return tf((function(){return{dragging:l,dropping:c,resting:u}}),[l,c,u])}(t,i),p=nf((function(e){Uy(s).dispatch(e)}),[]),f=tf((function(){return(0,gp.DE)({publishWhileDragging:yg,updateDroppableScroll:xg,updateDroppableIsEnabled:wg,updateDroppableIsCombineEnabled:Sg,collectionStarting:bg},p)}),[p]),m=function(){var e=tf(Zv,[]);return(0,a.useEffect)((function(){return function(){requestAnimationFrame(e.clean)}}),[e]),e}(),g=tf((function(){return cv(m,f)}),[m,f]),v=tf((function(){return Dv((0,qo.Z)({scrollWindow:dv,scrollDroppable:g.scrollDroppable},(0,gp.DE)({move:_g},p)))}),[g.scrollDroppable,p]),y=function(e){var t=(0,a.useRef)({}),n=(0,a.useRef)(null),r=(0,a.useRef)(null),i=(0,a.useRef)(!1),o=nf((function(e,n){var r={id:e,focus:n};return t.current[e]=r,function(){var n=t.current;n[e]!==r&&delete n[e]}}),[]),s=nf((function(t){var n=qv(e,t);n&&n!==document.activeElement&&n.focus()}),[e]),l=nf((function(e,t){n.current===e&&(n.current=t)}),[]),c=nf((function(){r.current||i.current&&(r.current=requestAnimationFrame((function(){r.current=null;var e=n.current;e&&s(e)})))}),[s]),u=nf((function(e){n.current=null;var t=document.activeElement;t&&t.getAttribute(Rv.draggableId)===e&&(n.current=e)}),[]);return Uv((function(){return i.current=!0,function(){i.current=!1;var e=r.current;e&&cancelAnimationFrame(e)}}),[]),tf((function(){return{register:o,tryRecordFocus:u,tryRestoreFocusRecorded:c,tryShiftRecord:l}}),[o,u,c,l])}(t),b=tf((function(){return nv({announce:u,autoScroller:v,dimensionMarshal:g,focusMarshal:y,getResponders:c,styleMarshal:h})}),[u,v,g,y,c,h]);s.current=b;var x=nf((function(){var e=Uy(s);"IDLE"!==e.getState().phase&&e.dispatch(Ng())}),[]),w=nf((function(){var e=Uy(s).getState();return e.isDragging||"DROP_ANIMATING"===e.phase}),[]);n(tf((function(){return{isDragging:w,tryAbort:x}}),[w,x]));var S=nf((function(e){return uv(Uy(s).getState(),e)}),[]),_=nf((function(){return Qm(Uy(s).getState())}),[]),C=tf((function(){return{marshal:g,focus:y,contextId:t,canLift:S,isMovementAllowed:_,dragHandleUsageInstructionsId:d,registry:m}}),[t,g,d,y,S,_,m]);return zy({contextId:t,store:b,registry:m,customSensors:r,enableDefaultSensors:!1!==e.enableDefaultSensors}),(0,a.useEffect)((function(){return x}),[x]),a.createElement(ty.Provider,{value:C},a.createElement(_p,{context:Yv,store:b},e.children))}var Vy=0;function Gy(e){var t=tf((function(){return""+Vy++}),[]),n=e.dragHandleUsageInstructions||Lf.dragHandleUsageInstructions;return a.createElement(Pf,null,(function(r){return a.createElement(Hy,{nonce:e.nonce,contextId:t,setCallbacks:r,dragHandleUsageInstructions:n,enableDefaultSensors:e.enableDefaultSensors,sensors:e.sensors,onBeforeCapture:e.onBeforeCapture,onBeforeDragStart:e.onBeforeDragStart,onDragStart:e.onDragStart,onDragUpdate:e.onDragUpdate,onDragEnd:e.onDragEnd},e.children)}))}var Wy=function(e){return function(t){return e===t}},qy=Wy("scroll"),Zy=Wy("auto"),Yy=(Wy("visible"),function(e,t){return t(e.overflowX)||t(e.overflowY)}),Ky=function(e){var t=window.getComputedStyle(e),n={overflowX:t.overflowX,overflowY:t.overflowY};return Yy(n,qy)||Yy(n,Zy)},Qy=function e(t){return null==t||t===document.body||t===document.documentElement?null:Ky(t)?t:e(t.parentElement)},Xy=function(e){return{x:e.scrollLeft,y:e.scrollTop}},$y=function e(t){return!!t&&("fixed"===window.getComputedStyle(t).position||e(t.parentElement))},Jy=function(e){return{closestScrollable:Qy(e),isFixedOnPage:$y(e)}},eb=function(e){var t=e.ref,n=e.descriptor,r=e.env,i=e.windowScroll,o=e.direction,a=e.isDropDisabled,s=e.isCombineEnabled,l=e.shouldClipSubject,c=r.closestScrollable,u=function(e,t){var n=pf(e);if(!t)return n;if(e!==t)return n;var r=n.paddingBox.top-t.scrollTop,i=n.paddingBox.left-t.scrollLeft,o=r+t.scrollHeight,a=i+t.scrollWidth,s=of({top:r,right:a,bottom:o,left:i},n.border);return lf({borderBox:s,margin:n.margin,border:n.border,padding:n.padding})}(t,c),d=df(u,i),h=function(){if(!c)return null;var e=pf(c),t={scrollHeight:c.scrollHeight,scrollWidth:c.scrollWidth};return{client:e,page:df(e,i),scroll:Xy(c),scrollSize:t,shouldClipSubject:l}}(),p=function(e){var t=e.descriptor,n=e.isEnabled,r=e.isCombineEnabled,i=e.isFixedOnPage,o=e.direction,a=e.client,s=e.page,l=e.closest,c=function(){if(!l)return null;var e=l.scrollSize,t=l.client,n=iv({scrollHeight:e.scrollHeight,scrollWidth:e.scrollWidth,height:t.paddingBox.height,width:t.paddingBox.width});return{pageMarginBox:l.page.marginBox,frameClient:t,scrollSize:e,shouldClipSubject:l.shouldClipSubject,scroll:{initial:l.scroll,current:l.scroll,max:n,diff:{value:Ff,displacement:Ff}}}}(),u="vertical"===o?vm:ym;return{descriptor:t,isCombineEnabled:r,isFixedOnPage:i,axis:u,isEnabled:n,client:a,page:s,frame:c,subject:Qf({page:s,withPlaceholder:null,axis:u,frame:c})}}({descriptor:n,isEnabled:!a,isCombineEnabled:s,isFixedOnPage:r.isFixedOnPage,direction:o,client:u,page:d,closest:h});return p},tb={passive:!1},nb={passive:!0},rb=function(e){return e.shouldPublishImmediately?tb:nb};function ib(e){var t=(0,a.useContext)(e);return t||If(!1),t}var ob=function(e){return e&&e.env.closestScrollable||null};function ab(){}var sb={width:0,height:0,margin:{top:0,right:0,bottom:0,left:0}},lb=function(e){var t=e.isAnimatingOpenOnMount,n=e.placeholder,r=e.animate,i=function(e){var t=e.isAnimatingOpenOnMount,n=e.placeholder,r=e.animate;return t||"close"===r?sb:{height:n.client.borderBox.height,width:n.client.borderBox.width,margin:n.client.margin}}({isAnimatingOpenOnMount:t,placeholder:n,animate:r});return{display:n.display,boxSizing:"border-box",width:i.width,height:i.height,marginTop:i.margin.top,marginRight:i.margin.right,marginBottom:i.margin.bottom,marginLeft:i.margin.left,flexShrink:"0",flexGrow:"0",pointerEvents:"none",transition:"none"!==r?Lg.placeholder:null}};var cb=a.memo((function(e){var t=(0,a.useRef)(null),n=nf((function(){t.current&&(clearTimeout(t.current),t.current=null)}),[]),r=e.animate,i=e.onTransitionEnd,o=e.onClose,s=e.contextId,l=(0,a.useState)("open"===e.animate),c=l[0],u=l[1];(0,a.useEffect)((function(){return c?"open"!==r?(n(),u(!1),ab):t.current?ab:(t.current=setTimeout((function(){t.current=null,u(!1)})),n):ab}),[r,c,n]);var d=nf((function(e){"height"===e.propertyName&&(i(),"close"===r&&o())}),[r,o,i]),h=lb({isAnimatingOpenOnMount:c,animate:e.animate,placeholder:e.placeholder});return a.createElement(e.placeholder.tagName,{style:h,"data-rbd-placeholder-context-id":s,onTransitionEnd:d,ref:e.innerRef})})),ub=a.createContext(null);var db=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).state={isVisible:Boolean(t.props.on),data:t.props.on,animate:t.props.shouldAnimate&&t.props.on?"open":"none"},t.onClose=function(){"close"===t.state.animate&&t.setState({isVisible:!1})},t}return(0,Uo.Z)(t,e),t.getDerivedStateFromProps=function(e,t){return e.shouldAnimate?e.on?{isVisible:!0,data:e.on,animate:"open"}:t.isVisible?{isVisible:!0,data:t.data,animate:"close"}:{isVisible:!1,animate:"close",data:null}:{isVisible:Boolean(e.on),data:e.on,animate:"none"}},t.prototype.render=function(){if(!this.state.isVisible)return null;var e={onClose:this.onClose,data:this.state.data,animate:this.state.animate};return this.props.children(e)},t}(a.PureComponent),hb={dragging:5e3,dropAnimating:4500},pb=function(e,t){return t?Lg.drop(t.duration):e?Lg.snap:Lg.fluid},fb=function(e,t){return e?t?Dg.opacity.drop:Dg.opacity.combining:null},mb=function(e){return null!=e.forceShouldAnimate?e.forceShouldAnimate:"SNAP"===e.mode};function gb(e){return"DRAGGING"===e.type?function(e){var t=e.dimension.client,n=e.offset,r=e.combineWith,i=e.dropping,o=Boolean(r),a=mb(e),s=Boolean(i),l=s?zg.drop(n,o):zg.moveTo(n);return{position:"fixed",top:t.marginBox.top,left:t.marginBox.left,boxSizing:"border-box",width:t.borderBox.width,height:t.borderBox.height,transition:pb(a,i),transform:l,opacity:fb(o,s),zIndex:s?hb.dropAnimating:hb.dragging,pointerEvents:"none"}}(e):(t=e,{transform:zg.moveTo(t.offset),transition:t.shouldAnimateDisplacement?null:"none"});var t}function vb(e){var t=ey("draggable"),n=e.descriptor,r=e.registry,i=e.getDraggableRef,o=e.canDragInteractiveElements,s=e.shouldRespectForcePress,l=e.isEnabled,c=tf((function(){return{canDragInteractiveElements:o,shouldRespectForcePress:s,isEnabled:l}}),[o,l,s]),u=nf((function(e){var t=i();return t||If(!1),function(e,t,n){void 0===n&&(n=Ff);var r=window.getComputedStyle(t),i=t.getBoundingClientRect(),o=hf(i,r),a=df(o,n);return{descriptor:e,placeholder:{client:o,tagName:t.tagName.toLowerCase(),display:r.display},displaceBy:{x:o.marginBox.width,y:o.marginBox.height},client:o,page:a}}(n,t,e)}),[n,i]),d=tf((function(){return{uniqueId:t,descriptor:n,options:c,getDimension:u}}),[n,u,c,t]),h=(0,a.useRef)(d),p=(0,a.useRef)(!0);Uv((function(){return r.draggable.register(h.current),function(){return r.draggable.unregister(h.current)}}),[r.draggable]),Uv((function(){if(p.current)p.current=!1;else{var e=h.current;h.current=d,r.draggable.update(d,e)}}),[d,r.draggable])}function yb(e,t,n){ry()}function bb(e){e.preventDefault()}var xb=function(e,t){return e===t},wb=function(e){var t=e.combine,n=e.destination;return n?n.droppableId:t?t.droppableId:null},Sb=function(e){return e.combine?e.combine.draggableId:null},_b=function(e){return e.at&&"COMBINE"===e.at.type?e.at.combine.draggableId:null};function Cb(e){return{isDragging:!1,isDropAnimating:!1,isClone:!1,dropAnimation:null,mode:null,draggingOver:null,combineTargetFor:e,combineWith:null}}var Eb={mapped:{type:"SECONDARY",offset:Ff,combineTargetFor:null,shouldAnimateDisplacement:!0,snapshot:Cb(null)}};var Tb=$p((function(){var e=function(){var e=gf((function(e,t){return{x:e,y:t}})),t=gf((function(e,t,n,r,i){return{isDragging:!0,isClone:t,isDropAnimating:Boolean(i),dropAnimation:i,mode:e,draggingOver:n,combineWith:r,combineTargetFor:null}})),n=gf((function(e,n,r,i,o,a,s){return{mapped:{type:"DRAGGING",dropping:null,draggingOver:o,combineWith:a,mode:n,offset:e,dimension:r,forceShouldAnimate:s,snapshot:t(n,i,o,a,null)}}}));return function(r,i){if(r.isDragging){if(r.critical.draggable.id!==i.draggableId)return null;var o=r.current.client.offset,a=r.dimensions.draggables[i.draggableId],s=Ym(r.impact),l=_b(r.impact),c=r.forceShouldAnimate;return n(e(o.x,o.y),r.movementMode,a,i.isClone,s,l,c)}if("DROP_ANIMATING"===r.phase){var u=r.completed;if(u.result.draggableId!==i.draggableId)return null;var d=i.isClone,h=r.dimensions.draggables[i.draggableId],p=u.result,f=p.mode,m=wb(p),g=Sb(p),v={duration:r.dropDuration,curve:Pg.drop,moveTo:r.newHomeClientOffset,opacity:g?Dg.opacity.drop:null,scale:g?Dg.scale.drop:null};return{mapped:{type:"DRAGGING",offset:r.newHomeClientOffset,dimension:h,dropping:v,draggingOver:m,combineWith:g,mode:f,forceShouldAnimate:null,snapshot:t(f,d,m,g,v)}}}return null}}(),t=function(){var e=gf((function(e,t){return{x:e,y:t}})),t=gf(Cb),n=gf((function(e,n,r){return void 0===n&&(n=null),{mapped:{type:"SECONDARY",offset:e,combineTargetFor:n,shouldAnimateDisplacement:r,snapshot:t(n)}}})),r=function(e){return e?n(Ff,e,!0):null},i=function(t,i,o,a){var s=o.displaced.visible[t],l=Boolean(a.inVirtualList&&a.effected[t]),c=lm(o),u=c&&c.draggableId===t?i:null;if(!s){if(!l)return r(u);if(o.displaced.invisible[t])return null;var d=Hf(a.displacedBy.point),h=e(d.x,d.y);return n(h,u,!0)}if(l)return r(u);var p=o.displacedBy.point,f=e(p.x,p.y);return n(f,u,s.shouldAnimate)};return function(e,t){if(e.isDragging)return e.critical.draggable.id===t.draggableId?null:i(t.draggableId,e.critical.draggable.id,e.impact,e.afterCritical);if("DROP_ANIMATING"===e.phase){var n=e.completed;return n.result.draggableId===t.draggableId?null:i(t.draggableId,n.result.draggableId,n.impact,n.afterCritical)}return null}}();return function(n,r){return e(n,r)||t(n,r)||Eb}}),{dropAnimationFinished:Ig},null,{context:Yv,pure:!0,areStatePropsEqual:xb})((function(e){var t=(0,a.useRef)(null),n=nf((function(e){t.current=e}),[]),r=nf((function(){return t.current}),[]),i=ib(ty),o=i.contextId,s=i.dragHandleUsageInstructionsId,l=i.registry,c=ib(ub),u=c.type,d=c.droppableId,h=tf((function(){return{id:e.draggableId,index:e.index,type:u,droppableId:d}}),[e.draggableId,e.index,u,d]),p=e.children,f=e.draggableId,m=e.isEnabled,g=e.shouldRespectForcePress,v=e.canDragInteractiveElements,y=e.isClone,b=e.mapped,x=e.dropAnimationFinished;yb(),ny(),y||vb(tf((function(){return{descriptor:h,registry:l,getDraggableRef:r,canDragInteractiveElements:v,shouldRespectForcePress:g,isEnabled:m}}),[h,l,r,v,g,m]));var w=tf((function(){return m?{tabIndex:0,role:"button","aria-describedby":s,"data-rbd-drag-handle-draggable-id":f,"data-rbd-drag-handle-context-id":o,draggable:!1,onDragStart:bb}:null}),[o,s,f,m]),S=nf((function(e){"DRAGGING"===b.type&&b.dropping&&"transform"===e.propertyName&&x()}),[x,b]),_=tf((function(){var e=gb(b),t="DRAGGING"===b.type&&b.dropping?S:null;return{innerRef:n,draggableProps:{"data-rbd-draggable-context-id":o,"data-rbd-draggable-id":f,style:e,onTransitionEnd:t},dragHandleProps:w}}),[o,w,f,b,S,n]),C=tf((function(){return{draggableId:h.id,type:h.type,source:{index:h.index,droppableId:h.droppableId}}}),[h.droppableId,h.id,h.index,h.type]);return p(_,b.snapshot,C)}));function Ob(e){return ib(ub).isUsingCloneFor!==e.draggableId||e.isClone?a.createElement(Tb,e):null}function Nb(e){var t="boolean"!==typeof e.isDragDisabled||!e.isDragDisabled,n=Boolean(e.disableInteractiveElementBlocking),r=Boolean(e.shouldRespectForcePress);return a.createElement(Ob,(0,qo.Z)({},e,{isClone:!1,isEnabled:t,canDragInteractiveElements:n,shouldRespectForcePress:r}))}var kb=function(e,t){return e===t.droppable.type},jb=function(e,t){return t.draggables[e.draggable.id]};var Ib={mode:"standard",type:"DEFAULT",direction:"vertical",isDropDisabled:!1,isCombineEnabled:!1,ignoreContainerClipping:!1,renderClone:null,getContainerForClone:function(){return document.body||If(!1),document.body}},Pb=$p((function(){var e={placeholder:null,shouldAnimatePlaceholder:!0,snapshot:{isDraggingOver:!1,draggingOverWith:null,draggingFromThisWith:null,isUsingPlaceholder:!1},useClone:null},t=(0,qo.Z)({},e,{shouldAnimatePlaceholder:!1}),n=gf((function(e){return{draggableId:e.id,type:e.type,source:{index:e.index,droppableId:e.droppableId}}})),r=gf((function(r,i,o,a,s,l){var c=s.descriptor.id;if(s.descriptor.droppableId===r){var u=l?{render:l,dragging:n(s.descriptor)}:null,d={isDraggingOver:o,draggingOverWith:o?c:null,draggingFromThisWith:c,isUsingPlaceholder:!0};return{placeholder:s.placeholder,shouldAnimatePlaceholder:!1,snapshot:d,useClone:u}}if(!i)return t;if(!a)return e;var h={isDraggingOver:o,draggingOverWith:c,draggingFromThisWith:null,isUsingPlaceholder:!0};return{placeholder:s.placeholder,shouldAnimatePlaceholder:!0,snapshot:h,useClone:null}}));return function(n,i){var o=i.droppableId,a=i.type,s=!i.isDropDisabled,l=i.renderClone;if(n.isDragging){var c=n.critical;if(!kb(a,c))return t;var u=jb(c,n.dimensions),d=Ym(n.impact)===o;return r(o,s,d,d,u,l)}if("DROP_ANIMATING"===n.phase){var h=n.completed;if(!kb(a,h.critical))return t;var p=jb(h.critical,n.dimensions);return r(o,s,wb(h.result)===o,Ym(h.impact)===o,p,l)}if("IDLE"===n.phase&&n.completed&&!n.shouldFlush){var f=n.completed;if(!kb(a,f.critical))return t;var m=Ym(f.impact)===o,g=Boolean(f.impact.at&&"COMBINE"===f.impact.at.type),v=f.critical.droppable.id===o;return m?g?e:t:v?e:t}return t}}),{updateViewportMaxScroll:function(e){return{type:"UPDATE_VIEWPORT_MAX_SCROLL",payload:e}}},null,{context:Yv,pure:!0,areStatePropsEqual:xb})((function(e){var t=(0,a.useContext)(ty);t||If(!1);var n=t.contextId,r=t.isMovementAllowed,i=(0,a.useRef)(null),o=(0,a.useRef)(null),s=e.children,l=e.droppableId,c=e.type,u=e.mode,d=e.direction,h=e.ignoreContainerClipping,p=e.isDropDisabled,f=e.isCombineEnabled,m=e.snapshot,g=e.useClone,v=e.updateViewportMaxScroll,y=e.getContainerForClone,b=nf((function(){return i.current}),[]),x=nf((function(e){i.current=e}),[]),w=(nf((function(){return o.current}),[]),nf((function(e){o.current=e}),[]));ry();var S=nf((function(){r()&&v({maxScroll:av()})}),[r,v]);!function(e){var t=(0,a.useRef)(null),n=ib(ty),r=ey("droppable"),i=n.registry,o=n.marshal,s=iy(e),l=tf((function(){return{id:e.droppableId,type:e.type,mode:e.mode}}),[e.droppableId,e.mode,e.type]),c=(0,a.useRef)(l),u=tf((function(){return gf((function(e,n){t.current||If(!1);var r={x:e,y:n};o.updateDroppableScroll(l.id,r)}))}),[l.id,o]),d=nf((function(){var e=t.current;return e&&e.env.closestScrollable?Xy(e.env.closestScrollable):Ff}),[]),h=nf((function(){var e=d();u(e.x,e.y)}),[d,u]),p=tf((function(){return vf(h)}),[h]),f=nf((function(){var e=t.current,n=ob(e);e&&n||If(!1),e.scrollOptions.shouldPublishImmediately?h():p()}),[p,h]),m=nf((function(e,r){t.current&&If(!1);var i=s.current,o=i.getDroppableRef();o||If(!1);var a=Jy(o),c={ref:o,descriptor:l,env:a,scrollOptions:r};t.current=c;var u=eb({ref:o,descriptor:l,env:a,windowScroll:e,direction:i.direction,isDropDisabled:i.isDropDisabled,isCombineEnabled:i.isCombineEnabled,shouldClipSubject:!i.ignoreContainerClipping}),d=a.closestScrollable;return d&&(d.setAttribute(Fv.contextId,n.contextId),d.addEventListener("scroll",f,rb(c.scrollOptions))),u}),[n.contextId,l,f,s]),g=nf((function(){var e=t.current,n=ob(e);return e&&n||If(!1),Xy(n)}),[]),v=nf((function(){var e=t.current;e||If(!1);var n=ob(e);t.current=null,n&&(p.cancel(),n.removeAttribute(Fv.contextId),n.removeEventListener("scroll",f,rb(e.scrollOptions)))}),[f,p]),y=nf((function(e){var n=t.current;n||If(!1);var r=ob(n);r||If(!1),r.scrollTop+=e.y,r.scrollLeft+=e.x}),[]),b=tf((function(){return{getDimensionAndWatchScroll:m,getScrollWhileDragging:g,dragStopped:v,scroll:y}}),[v,m,g,y]),x=tf((function(){return{uniqueId:r,descriptor:l,callbacks:b}}),[b,l,r]);Uv((function(){return c.current=x.descriptor,i.droppable.register(x),function(){t.current&&v(),i.droppable.unregister(x)}}),[b,l,v,x,o,i.droppable]),Uv((function(){t.current&&o.updateDroppableIsEnabled(c.current.id,!e.isDropDisabled)}),[e.isDropDisabled,o]),Uv((function(){t.current&&o.updateDroppableIsCombineEnabled(c.current.id,e.isCombineEnabled)}),[e.isCombineEnabled,o])}({droppableId:l,type:c,mode:u,direction:d,isDropDisabled:p,isCombineEnabled:f,ignoreContainerClipping:h,getDroppableRef:b});var _=a.createElement(db,{on:e.placeholder,shouldAnimate:e.shouldAnimatePlaceholder},(function(e){var t=e.onClose,r=e.data,i=e.animate;return a.createElement(cb,{placeholder:r,onClose:t,innerRef:w,animate:i,contextId:n,onTransitionEnd:S})})),C=tf((function(){return{innerRef:x,placeholder:_,droppableProps:{"data-rbd-droppable-id":l,"data-rbd-droppable-context-id":n}}}),[n,l,_,x]),E=g?g.dragging.draggableId:null,T=tf((function(){return{droppableId:l,type:c,isUsingCloneFor:E}}),[l,E,c]);return a.createElement(ub.Provider,{value:T},s(C,m),function(){if(!g)return null;var e=g.dragging,t=g.render,n=a.createElement(Ob,{draggableId:e.draggableId,index:e.source.index,isClone:!0,isEnabled:!0,shouldRespectForcePress:!1,canDragInteractiveElements:!0},(function(n,r){return t(n,r,e)}));return Dt.createPortal(n,y())}())}));let Db;Pb.defaultProps=Ib,Db="undefined"!==typeof window?window:"undefined"!==typeof self?self:n.g;let Ab=null,Rb=null;const Mb=Db.clearTimeout,Lb=Db.setTimeout,Fb=Db.cancelAnimationFrame||Db.mozCancelAnimationFrame||Db.webkitCancelAnimationFrame,zb=Db.requestAnimationFrame||Db.mozRequestAnimationFrame||Db.webkitRequestAnimationFrame;function Bb(e){let t,n,r,i,o,a,s;const l="undefined"!==typeof document&&document.attachEvent;if(!l){a=function(e){const t=e.__resizeTriggers__,n=t.firstElementChild,r=t.lastElementChild,i=n.firstElementChild;r.scrollLeft=r.scrollWidth,r.scrollTop=r.scrollHeight,i.style.width=n.offsetWidth+1+"px",i.style.height=n.offsetHeight+1+"px",n.scrollLeft=n.scrollWidth,n.scrollTop=n.scrollHeight},o=function(e){return e.offsetWidth!==e.__resizeLast__.width||e.offsetHeight!==e.__resizeLast__.height},s=function(e){if(e.target.className&&"function"===typeof e.target.className.indexOf&&e.target.className.indexOf("contract-trigger")<0&&e.target.className.indexOf("expand-trigger")<0)return;const t=this;a(this),this.__resizeRAF__&&Ab(this.__resizeRAF__),this.__resizeRAF__=Rb((function(){o(t)&&(t.__resizeLast__.width=t.offsetWidth,t.__resizeLast__.height=t.offsetHeight,t.__resizeListeners__.forEach((function(n){n.call(t,e)})))}))};let e=!1,l="";r="animationstart";const c="Webkit Moz O ms".split(" ");let u="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),d="";{const t=document.createElement("fakeelement");if(void 0!==t.style.animationName&&(e=!0),!1===e)for(let n=0;n<c.length;n++)if(void 0!==t.style[c[n]+"AnimationName"]){d=c[n],l="-"+d.toLowerCase()+"-",r=u[n],e=!0;break}}n="resizeanim",t="@"+l+"keyframes "+n+" { from { opacity: 0; } to { opacity: 0; } } ",i=l+"animation: 1ms "+n+"; "}return{addResizeListener:function(o,c){if(l)o.attachEvent("onresize",c);else{if(!o.__resizeTriggers__){const l=o.ownerDocument,c=Db.getComputedStyle(o);c&&"static"===c.position&&(o.style.position="relative"),function(n){if(!n.getElementById("detectElementResize")){const r=(t||"")+".resize-triggers { "+(i||"")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',o=n.head||n.getElementsByTagName("head")[0],a=n.createElement("style");a.id="detectElementResize",a.type="text/css",null!=e&&a.setAttribute("nonce",e),a.styleSheet?a.styleSheet.cssText=r:a.appendChild(n.createTextNode(r)),o.appendChild(a)}}(l),o.__resizeLast__={},o.__resizeListeners__=[],(o.__resizeTriggers__=l.createElement("div")).className="resize-triggers";const u=l.createElement("div");u.className="expand-trigger",u.appendChild(l.createElement("div"));const d=l.createElement("div");d.className="contract-trigger",o.__resizeTriggers__.appendChild(u),o.__resizeTriggers__.appendChild(d),o.appendChild(o.__resizeTriggers__),a(o),o.addEventListener("scroll",s,!0),r&&(o.__resizeTriggers__.__animationListener__=function(e){e.animationName===n&&a(o)},o.__resizeTriggers__.addEventListener(r,o.__resizeTriggers__.__animationListener__))}o.__resizeListeners__.push(c)}},removeResizeListener:function(e,t){if(l)e.detachEvent("onresize",t);else if(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),!e.__resizeListeners__.length){e.removeEventListener("scroll",s,!0),e.__resizeTriggers__.__animationListener__&&(e.__resizeTriggers__.removeEventListener(r,e.__resizeTriggers__.__animationListener__),e.__resizeTriggers__.__animationListener__=null);try{e.__resizeTriggers__=!e.removeChild(e.__resizeTriggers__)}catch(tD){}}}}}null==Fb||null==zb?(Ab=Mb,Rb=function(e){return Lb(e,20)}):(Ab=function(e){let[t,n]=e;Fb(t),Mb(n)},Rb=function(e){const t=zb((function(){Mb(n),e()})),n=Lb((function(){Fb(t),e()}),20);return[t,n]});class Ub extends a.Component{constructor(){super(...arguments),this.state={height:this.props.defaultHeight||0,scaledHeight:this.props.defaultHeight||0,scaledWidth:this.props.defaultWidth||0,width:this.props.defaultWidth||0},this._autoSizer=null,this._detectElementResize=null,this._parentNode=null,this._resizeObserver=null,this._timeoutId=null,this._onResize=()=>{this._timeoutId=null;const{disableHeight:e,disableWidth:t,onResize:n}=this.props;if(this._parentNode){const r=window.getComputedStyle(this._parentNode)||{},i=parseFloat(r.paddingLeft||"0"),o=parseFloat(r.paddingRight||"0"),a=parseFloat(r.paddingTop||"0"),s=parseFloat(r.paddingBottom||"0"),l=this._parentNode.getBoundingClientRect(),c=l.height-a-s,u=l.width-i-o,d=this._parentNode.offsetHeight-a-s,h=this._parentNode.offsetWidth-i-o;(e||this.state.height===d&&this.state.scaledHeight===c)&&(t||this.state.width===h&&this.state.scaledWidth===u)||(this.setState({height:d,width:h,scaledHeight:c,scaledWidth:u}),"function"===typeof n&&n({height:d,scaledHeight:c,scaledWidth:u,width:h}))}},this._setRef=e=>{this._autoSizer=e}}componentDidMount(){const{nonce:e}=this.props,t=this._autoSizer?this._autoSizer.parentNode:null;if(null!=t&&t.ownerDocument&&t.ownerDocument.defaultView&&t instanceof t.ownerDocument.defaultView.HTMLElement){this._parentNode=t;const n=t.ownerDocument.defaultView.ResizeObserver;null!=n?(this._resizeObserver=new n((()=>{this._timeoutId=setTimeout(this._onResize,0)})),this._resizeObserver.observe(t)):(this._detectElementResize=Bb(e),this._detectElementResize.addResizeListener(t,this._onResize)),this._onResize()}}componentWillUnmount(){this._parentNode&&(this._detectElementResize&&this._detectElementResize.removeResizeListener(this._parentNode,this._onResize),null!==this._timeoutId&&clearTimeout(this._timeoutId),this._resizeObserver&&this._resizeObserver.disconnect())}render(){const{children:e,defaultHeight:t,defaultWidth:n,disableHeight:r=!1,disableWidth:i=!1,doNotBailOutOnEmptyChildren:o=!1,nonce:s,onResize:l,style:c={},tagName:u="div",...d}=this.props,{height:h,scaledHeight:p,scaledWidth:f,width:m}=this.state,g={overflow:"visible"},v={};let y=!1;return r||(0===h&&(y=!0),g.height=0,v.height=h,v.scaledHeight=p),i||(0===m&&(y=!0),g.width=0,v.width=m,v.scaledWidth=f),o&&(y=!1),(0,a.createElement)(u,{ref:this._setRef,style:{...g,...c},...d},!y&&e(v))}}var Hb=n(97326),Vb="object"===typeof performance&&"function"===typeof performance.now?function(){return performance.now()}:function(){return Date.now()};function Gb(e){cancelAnimationFrame(e.id)}function Wb(e,t){var n=Vb();var r={id:requestAnimationFrame((function i(){Vb()-n>=t?e.call(null):r.id=requestAnimationFrame(i)}))};return r}var qb=-1;function Zb(e){if(void 0===e&&(e=!1),-1===qb||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",document.body.appendChild(t),qb=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return qb}var Yb=null;function Kb(e){if(void 0===e&&(e=!1),null===Yb||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";var r=document.createElement("div"),i=r.style;return i.width="100px",i.height="100px",t.appendChild(r),document.body.appendChild(t),t.scrollLeft>0?Yb="positive-descending":(t.scrollLeft=1,Yb=0===t.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(t),Yb}return Yb}var Qb=150,Xb=function(e,t){return e};function $b(e){var t,n=e.getItemOffset,r=e.getEstimatedTotalSize,i=e.getItemSize,o=e.getOffsetForIndexAndAlignment,s=e.getStartIndexForOffset,l=e.getStopIndexForStartIndex,c=e.initInstanceProps,u=e.shouldResetStyleCacheOnItemSizeChange,d=e.validateProps;return t=function(e){function t(t){var r;return(r=e.call(this,t)||this)._instanceProps=c(r.props,(0,Hb.Z)(r)),r._outerRef=void 0,r._resetIsScrollingTimeoutId=null,r.state={instance:(0,Hb.Z)(r),isScrolling:!1,scrollDirection:"forward",scrollOffset:"number"===typeof r.props.initialScrollOffset?r.props.initialScrollOffset:0,scrollUpdateWasRequested:!1},r._callOnItemsRendered=void 0,r._callOnItemsRendered=gf((function(e,t,n,i){return r.props.onItemsRendered({overscanStartIndex:e,overscanStopIndex:t,visibleStartIndex:n,visibleStopIndex:i})})),r._callOnScroll=void 0,r._callOnScroll=gf((function(e,t,n){return r.props.onScroll({scrollDirection:e,scrollOffset:t,scrollUpdateWasRequested:n})})),r._getItemStyle=void 0,r._getItemStyle=function(e){var t,o=r.props,a=o.direction,s=o.itemSize,l=o.layout,c=r._getItemStyleCache(u&&s,u&&l,u&&a);if(c.hasOwnProperty(e))t=c[e];else{var d=n(r.props,e,r._instanceProps),h=i(r.props,e,r._instanceProps),p="horizontal"===a||"horizontal"===l,f="rtl"===a,m=p?d:0;c[e]=t={position:"absolute",left:f?void 0:m,right:f?m:void 0,top:p?0:d,height:p?"100%":h,width:p?h:"100%"}}return t},r._getItemStyleCache=void 0,r._getItemStyleCache=gf((function(e,t,n){return{}})),r._onScrollHorizontal=function(e){var t=e.currentTarget,n=t.clientWidth,i=t.scrollLeft,o=t.scrollWidth;r.setState((function(e){if(e.scrollOffset===i)return null;var t=r.props.direction,a=i;if("rtl"===t)switch(Kb()){case"negative":a=-i;break;case"positive-descending":a=o-n-i}return a=Math.max(0,Math.min(a,o-n)),{isScrolling:!0,scrollDirection:e.scrollOffset<a?"forward":"backward",scrollOffset:a,scrollUpdateWasRequested:!1}}),r._resetIsScrollingDebounced)},r._onScrollVertical=function(e){var t=e.currentTarget,n=t.clientHeight,i=t.scrollHeight,o=t.scrollTop;r.setState((function(e){if(e.scrollOffset===o)return null;var t=Math.max(0,Math.min(o,i-n));return{isScrolling:!0,scrollDirection:e.scrollOffset<t?"forward":"backward",scrollOffset:t,scrollUpdateWasRequested:!1}}),r._resetIsScrollingDebounced)},r._outerRefSetter=function(e){var t=r.props.outerRef;r._outerRef=e,"function"===typeof t?t(e):null!=t&&"object"===typeof t&&t.hasOwnProperty("current")&&(t.current=e)},r._resetIsScrollingDebounced=function(){null!==r._resetIsScrollingTimeoutId&&Gb(r._resetIsScrollingTimeoutId),r._resetIsScrollingTimeoutId=Wb(r._resetIsScrolling,Qb)},r._resetIsScrolling=function(){r._resetIsScrollingTimeoutId=null,r.setState({isScrolling:!1},(function(){r._getItemStyleCache(-1,null)}))},r}(0,Uo.Z)(t,e),t.getDerivedStateFromProps=function(e,t){return Jb(e,t),d(e),null};var h=t.prototype;return h.scrollTo=function(e){e=Math.max(0,e),this.setState((function(t){return t.scrollOffset===e?null:{scrollDirection:t.scrollOffset<e?"forward":"backward",scrollOffset:e,scrollUpdateWasRequested:!0}}),this._resetIsScrollingDebounced)},h.scrollToItem=function(e,t){void 0===t&&(t="auto");var n=this.props,r=n.itemCount,i=n.layout,a=this.state.scrollOffset;e=Math.max(0,Math.min(e,r-1));var s=0;if(this._outerRef){var l=this._outerRef;s="vertical"===i?l.scrollWidth>l.clientWidth?Zb():0:l.scrollHeight>l.clientHeight?Zb():0}this.scrollTo(o(this.props,e,t,a,this._instanceProps,s))},h.componentDidMount=function(){var e=this.props,t=e.direction,n=e.initialScrollOffset,r=e.layout;if("number"===typeof n&&null!=this._outerRef){var i=this._outerRef;"horizontal"===t||"horizontal"===r?i.scrollLeft=n:i.scrollTop=n}this._callPropsCallbacks()},h.componentDidUpdate=function(){var e=this.props,t=e.direction,n=e.layout,r=this.state,i=r.scrollOffset;if(r.scrollUpdateWasRequested&&null!=this._outerRef){var o=this._outerRef;if("horizontal"===t||"horizontal"===n)if("rtl"===t)switch(Kb()){case"negative":o.scrollLeft=-i;break;case"positive-ascending":o.scrollLeft=i;break;default:var a=o.clientWidth,s=o.scrollWidth;o.scrollLeft=s-a-i}else o.scrollLeft=i;else o.scrollTop=i}this._callPropsCallbacks()},h.componentWillUnmount=function(){null!==this._resetIsScrollingTimeoutId&&Gb(this._resetIsScrollingTimeoutId)},h.render=function(){var e=this.props,t=e.children,n=e.className,i=e.direction,o=e.height,s=e.innerRef,l=e.innerElementType,c=e.innerTagName,u=e.itemCount,d=e.itemData,h=e.itemKey,p=void 0===h?Xb:h,f=e.layout,m=e.outerElementType,g=e.outerTagName,v=e.style,y=e.useIsScrolling,b=e.width,x=this.state.isScrolling,w="horizontal"===i||"horizontal"===f,S=w?this._onScrollHorizontal:this._onScrollVertical,_=this._getRangeToRender(),C=_[0],E=_[1],T=[];if(u>0)for(var O=C;O<=E;O++)T.push((0,a.createElement)(t,{data:d,key:p(O,d),index:O,isScrolling:y?x:void 0,style:this._getItemStyle(O)}));var N=r(this.props,this._instanceProps);return(0,a.createElement)(m||g||"div",{className:n,onScroll:S,ref:this._outerRefSetter,style:(0,qo.Z)({position:"relative",height:o,width:b,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:i},v)},(0,a.createElement)(l||c||"div",{children:T,ref:s,style:{height:w?"100%":N,pointerEvents:x?"none":void 0,width:w?N:"100%"}}))},h._callPropsCallbacks=function(){if("function"===typeof this.props.onItemsRendered&&this.props.itemCount>0){var e=this._getRangeToRender(),t=e[0],n=e[1],r=e[2],i=e[3];this._callOnItemsRendered(t,n,r,i)}if("function"===typeof this.props.onScroll){var o=this.state,a=o.scrollDirection,s=o.scrollOffset,l=o.scrollUpdateWasRequested;this._callOnScroll(a,s,l)}},h._getRangeToRender=function(){var e=this.props,t=e.itemCount,n=e.overscanCount,r=this.state,i=r.isScrolling,o=r.scrollDirection,a=r.scrollOffset;if(0===t)return[0,0,0,0];var c=s(this.props,a,this._instanceProps),u=l(this.props,c,a,this._instanceProps),d=i&&"backward"!==o?1:Math.max(1,n),h=i&&"forward"!==o?1:Math.max(1,n);return[Math.max(0,c-d),Math.max(0,Math.min(t-1,u+h)),c,u]},t}(a.PureComponent),t.defaultProps={direction:"ltr",itemData:void 0,layout:"vertical",overscanCount:2,useIsScrolling:!1},t}var Jb=function(e,t){e.children,e.direction,e.height,e.layout,e.innerTagName,e.outerTagName,e.width,t.instance},ex=function(e,t,n){var r=e.itemSize,i=n.itemMetadataMap,o=n.lastMeasuredIndex;if(t>o){var a=0;if(o>=0){var s=i[o];a=s.offset+s.size}for(var l=o+1;l<=t;l++){var c=r(l);i[l]={offset:a,size:c},a+=c}n.lastMeasuredIndex=t}return i[t]},tx=function(e,t,n,r,i){for(;r<=n;){var o=r+Math.floor((n-r)/2),a=ex(e,o,t).offset;if(a===i)return o;a<i?r=o+1:a>i&&(n=o-1)}return r>0?r-1:0},nx=function(e,t,n,r){for(var i=e.itemCount,o=1;n<i&&ex(e,n,t).offset<r;)n+=o,o*=2;return tx(e,t,Math.min(n,i-1),Math.floor(n/2),r)},rx=function(e,t){var n=e.itemCount,r=t.itemMetadataMap,i=t.estimatedItemSize,o=t.lastMeasuredIndex,a=0;if(o>=n&&(o=n-1),o>=0){var s=r[o];a=s.offset+s.size}return a+(n-o-1)*i},ix=$b({getItemOffset:function(e,t,n){return ex(e,t,n).offset},getItemSize:function(e,t,n){return n.itemMetadataMap[t].size},getEstimatedTotalSize:rx,getOffsetForIndexAndAlignment:function(e,t,n,r,i,o){var a=e.direction,s=e.height,l=e.layout,c=e.width,u="horizontal"===a||"horizontal"===l?c:s,d=ex(e,t,i),h=rx(e,i),p=Math.max(0,Math.min(h-u,d.offset)),f=Math.max(0,d.offset-u+d.size+o);switch("smart"===n&&(n=r>=f-u&&r<=p+u?"auto":"center"),n){case"start":return p;case"end":return f;case"center":return Math.round(f+(p-f)/2);default:return r>=f&&r<=p?r:r<f?f:p}},getStartIndexForOffset:function(e,t,n){return function(e,t,n){var r=t.itemMetadataMap,i=t.lastMeasuredIndex;return(i>0?r[i].offset:0)>=n?tx(e,t,i,0,n):nx(e,t,Math.max(0,i),n)}(e,n,t)},getStopIndexForStartIndex:function(e,t,n,r){for(var i=e.direction,o=e.height,a=e.itemCount,s=e.layout,l=e.width,c="horizontal"===i||"horizontal"===s?l:o,u=ex(e,t,r),d=n+c,h=u.offset+u.size,p=t;p<a-1&&h<d;)p++,h+=ex(e,p,r).size;return p},initInstanceProps:function(e,t){var n={itemMetadataMap:{},estimatedItemSize:e.estimatedItemSize||50,lastMeasuredIndex:-1};return t.resetAfterIndex=function(e,r){void 0===r&&(r=!0),n.lastMeasuredIndex=Math.min(n.lastMeasuredIndex,e-1),t._getItemStyleCache(-1),r&&t.forceUpdate()},n},shouldResetStyleCacheOnItemSizeChange:!1,validateProps:function(e){e.itemSize}});var ox=n(84584);const ax=e=>{let{element:t,options:n,onIntersect:r}=e;a.useEffect((()=>{const e=new IntersectionObserver((e=>{let[t]=e;t.isIntersecting&&(null===r||void 0===r||r())}),n);return t&&e.observe(t),()=>null===t?void 0:e.unobserve(t)}),[t,n,r])},sx=(0,le.Ge)("list"),lx=e=>{const t=a.useRef(null);return ax({element:t.current,onIntersect:null===e||void 0===e?void 0:e.onIntersect}),a.createElement("div",{ref:t,className:sx("loading-indicator")},a.createElement(Di,{qa:"list-loader"}))},cx=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M7 3a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM5.5 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm5 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0-5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM7 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm3.5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z",clipRule:"evenodd"})),ux="list-active-item",dx=[Zr.V.TAB],hx=(0,le.Ge)("list"),px=e=>String(e);function fx(e,t){return t?Object.assign(Object.assign({},null===e||void 0===e?void 0:e.draggableProps.style),t):null===e||void 0===e?void 0:e.draggableProps.style}class mx extends a.Component{constructor(){super(...arguments),this.node=null,this.getNode=()=>this.node,this.setRef=e=>{var t;this.node=e,null===(t=this.props.provided)||void 0===t||t.innerRef(e)},this.onClick=()=>{var e,t;return null===(t=(e=this.props).onClick)||void 0===t?void 0:t.call(e,this.props.item,this.props.itemIndex)},this.onClickCapture=e=>{mx.publishEvent({domEvent:e,eventId:"click"})},this.onMouseEnter=()=>!this.props.item.disabled&&this.props.onActivate(this.props.itemIndex),this.onMouseLeave=()=>this.props.onActivate(void 0)}render(){var e,t;const{item:n,style:r,sortable:i,sortHandleAlign:o,itemClassName:s,selected:l,active:c,role:u="listitem",isDragging:d=!1}=this.props,h=Object.assign(Object.assign({},r),{right:void 0});return a.createElement("div",Object.assign({role:u,"aria-selected":l,"data-qa":c?ux:void 0,className:hx("item",{sortable:i,active:c,selected:l,inactive:n.disabled,"sort-handle-align":o,dragging:d},s)},null===(e=this.props.provided)||void 0===e?void 0:e.draggableProps,null===(t=this.props.provided)||void 0===t?void 0:t.dragHandleProps,{style:fx(this.props.provided,h),onClick:n.disabled?void 0:this.onClick,onClickCapture:n.disabled?void 0:this.onClickCapture,onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,ref:this.setRef,id:"".concat(this.props.listId,"-item-").concat(this.props.itemIndex)}),this.renderSortIcon(),this.renderContent())}renderSortIcon(){const{sortable:e}=this.props;return e?a.createElement("div",{className:hx("item-sort-icon")},a.createElement(we.J,{data:cx,size:12})):null}renderContent(){const{renderItem:e=px,item:t,active:n,itemIndex:r}=this.props;return a.createElement("div",{className:hx("item-content")},e(t,n,r))}}mx.publishEvent=Yr.P.withEventPublisher("List");var gx=n(28925),vx=n.n(gx);function yx(e){return vx()(e).reduce(((e,t)=>(e[t]=a.createRef(),e)),{})}class bx extends a.Component{static getDerivedStateFromProps(e,t){let{itemCount:n}=e;return n===Object.keys(t.refsList).length?t:{refsList:yx(n)}}constructor(e){super(e),this.node=null,this.setRef=e=>{var t;this.node=e,null===(t=this.props.provided)||void 0===t||t.innerRef(e)},this.state={refsList:yx(e.itemCount)}}render(){const e=a.Children.map(this.props.children,((e,t)=>a.cloneElement(e,{ref:this.state.refsList[t]})));return a.createElement("div",{ref:this.setRef},e)}scrollToItem(e){var t,n;const r=null===(t=this.state.refsList[e])||void 0===t?void 0:t.current;if(r&&"function"===typeof r.getNode){const e=r.getNode();e&&(null===(n=e.scrollIntoView)||void 0===n||n.call(e,{block:"nearest"}))}}}const xx=(0,le.Ge)("list"),wx=a.forwardRef(((e,t)=>a.createElement(ix,Object.assign({ref:t},e,{direction:ir()}))));wx.displayName="ListContainer";class Sx extends a.Component{constructor(){super(...arguments),this.state={items:this.props.items,filter:""},this.refFilter=a.createRef(),this.refContainer=a.createRef(),this.blurTimer=null,this.loadingItem={value:"__LIST_ITEM_LOADING__",disabled:!1},this.uniqId=(0,ce.x)(),this.onKeyDown=e=>{const{activeItem:t,pageSize:n}=this.state;if(dx.includes(e.key))return;const r=e.target instanceof HTMLInputElement;switch(e.key){case"ArrowDown":this.handleKeyMove(e,1,-1);break;case"ArrowUp":this.handleKeyMove(e,-1);break;case"PageDown":this.handleKeyMove(e,n);break;case"PageUp":this.handleKeyMove(e,-n);break;case"Home":if(r)return;this.handleKeyMove(e,this.state.items.length-(t||0));break;case"End":if(r)return;this.handleKeyMove(e,-(t||0)-1);break;case"Enter":"number"===typeof t&&this.props.onItemClick&&this.props.onItemClick(this.state.items[t],t,!0);break;default:this.refFilter.current&&this.refFilter.current.focus()}},this.renderItemContent=(e,t,n)=>{const{onLoadMore:r}=this.props;return mp()(e)&&"value"in e&&e.value===this.loadingItem.value?a.createElement(lx,{onIntersect:0===n?void 0:r}):this.props.renderItem?this.props.renderItem(e,t,n):px(e)},this.renderItem=e=>{let{index:t,style:n,provided:r,isDragging:i}=e;var o;const{sortHandleAlign:s,role:l}=this.props,{items:c,activeItem:u}=this.state,d=this.getItemsWithLoading()[t],h=this.props.sortable&&c.length>1&&!this.getFilter(),p=t===u||t===this.props.activeItemIndex,f=Array.isArray(this.props.selectedItemIndex)?this.props.selectedItemIndex.includes(t):t===this.props.selectedItemIndex;return a.createElement(mx,{key:t,style:n,itemIndex:t,item:d,sortable:h,sortHandleAlign:s,renderItem:this.renderItemContent,itemClassName:this.props.itemClassName,active:p,selected:f,onActivate:this.onItemActivate,onClick:this.props.onItemClick,role:"listbox"===l?"option":"listitem",listId:null!==(o=this.props.id)&&void 0!==o?o:this.uniqId,provided:r,isDragging:i})},this.renderVirtualizedItem=e=>{let{index:t,style:n}=e;return a.createElement(Nb,{draggableId:String(t),index:t,key:"item-key-".concat(t)},(e=>this.renderItem({index:t,style:n,provided:e})))},this.filterItem=e=>t=>String(t).includes(e),this.scrollToIndex=e=>{const t=this.refContainer.current;t&&t.scrollToItem(e)},this.deactivate=()=>{this.blurTimer&&this.props.deactivateOnLeave&&this.setState({activeItem:void 0})},this.handleFocus=()=>{this.blurTimer&&(clearTimeout(this.blurTimer),this.blurTimer=null)},this.handleBlur=()=>{this.blurTimer||(this.blurTimer=setTimeout(this.deactivate,50))},this.onUpdateFilterInternal=e=>{const{items:t,filterItem:n=this.filterItem,onFilterEnd:r}=this.props;this.setState({filter:e,items:e?t.filter(n(e)):t},(()=>{r&&r({items:this.state.items})}))},this.onFilterUpdate=e=>{this.props.onFilterUpdate?this.props.onFilterUpdate(e):this.onUpdateFilterInternal(e)},this.onItemsRendered=e=>{let{visibleStartIndex:t,visibleStopIndex:n}=e;this.setState({pageSize:n-t})},this.onItemActivate=e=>{this.state.sorting||this.activateItem(e,!1)},this.onMouseLeave=()=>{this.deactivate()},this.onSortStart=()=>{this.setState({sorting:!0})},this.onSortEnd=e=>{if(!e.destination)return void this.setState({sorting:!1});if(e.source.index===e.destination.index)return void this.setState({sorting:!1});const t=e.source.index,n=e.destination.index;this.props.onSortEnd&&this.props.onSortEnd({oldIndex:t,newIndex:n});const r=((e,t,n)=>{const r=Array.from(e),[i]=r.splice(t,1);return r.splice(n,0,i),r})(this.getItems(),t,n);this.setState({activeItem:n,items:r,sorting:!1})},this.getItemHeight=e=>{const{itemHeight:t}=this.props;if("function"===typeof t){const{items:n}=this.state;return t(n[e],e)}return t},this.getVirtualizedItemHeight=e=>this.getItemHeight(e)||28}static moveListElement(e,t,n){if(t!==n){const[r]=e.splice(t,1);e.splice(n,0,r)}return e}static findNextIndex(e,t,n){const r=e.length;let i=(t+r)%r;for(let o=0;o<r;o+=1){if(e[i]&&!e[i].disabled)return i;i=(i+r+n)%r}}componentDidUpdate(e,t){if(!pp()(this.props.items,e.items)){const e=this.getFilter();e&&!this.props.onFilterUpdate?this.onUpdateFilterInternal(e):this.setState({items:this.props.items})}this.props.activeItemIndex!==e.activeItemIndex&&this.activateItem(this.props.activeItemIndex),this.props.onChangeActive&&this.state.activeItem!==t.activeItem&&this.props.onChangeActive(this.state.activeItem)}componentWillUnmount(){this.blurTimer=null}render(){const{emptyPlaceholder:e,virtualized:t,className:n,itemsClassName:r,qa:i,role:o="list"}=this.props,{items:s}=this.state;return a.createElement(ox.z.Consumer,null,(l=>{let{mobile:c}=l;return a.createElement("div",{className:xx({mobile:c},n),"data-qa":i,tabIndex:-1,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.onKeyDown},this.renderFilter(),a.createElement("div",{className:xx("items",{virtualized:t},r),style:this.getItemsStyle(),onMouseLeave:this.onMouseLeave,role:o},this.renderItems(),0===s.length&&Boolean(e)&&a.createElement("div",{className:xx("empty-placeholder")},e)))}))}getItems(){return this.state.items}getItemsWithLoading(){return this.props.sortable?this.getItems():this.props.loading?[...this.state.items,this.loadingItem]:this.getItems()}getActiveItem(){return"number"===typeof this.state.activeItem?this.state.activeItem:null}activateItem(e){"number"===typeof e&&(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&this.scrollToIndex(e),this.setState({activeItem:e})}renderFilter(){const{size:e,filterable:t,filter:n=this.state.filter,filterPlaceholder:r,filterClassName:i="",autoFocus:o}=this.props;return t?a.createElement("div",{className:xx("filter",i)},a.createElement(Ii,{controlRef:this.refFilter,size:e,placeholder:r,value:n,hasClear:!0,onUpdate:this.onFilterUpdate,autoFocus:o})):null}renderSimpleContainer(){const{sortable:e}=this.props,t=this.getItemsWithLoading();return e?a.createElement(Gy,{onDragStart:this.onSortStart,onDragEnd:this.onSortEnd},a.createElement(Pb,{droppableId:"droppable",renderClone:(e,t,n)=>this.renderItem({index:n.source.index,provided:e,isDragging:t.isDragging})},(e=>a.createElement(bx,{ref:this.refContainer,itemCount:t.length,provided:e},t.map(((e,t)=>a.createElement(Nb,{draggableId:String(t),index:t,key:"item-key-".concat(t)},((e,n)=>this.renderItem({index:t,isDragging:n.isDragging,provided:e,style:{height:this.getItemHeight(t)}}))))))))):a.createElement(bx,{itemCount:t.length,ref:this.refContainer},t.map(((e,t)=>this.renderItem({index:t,style:{height:this.getItemHeight(t)}}))))}renderVirtualizedContainer(){const e=[...this.getItemsWithLoading()];return this.props.sortable?a.createElement(Gy,{onDragStart:this.onSortStart,onDragEnd:this.onSortEnd},a.createElement(Pb,{droppableId:"droppable",mode:"virtual",renderClone:(e,t,n)=>this.renderItem({index:n.source.index,provided:e,isDragging:t.isDragging})},(t=>a.createElement(Ub,null,(n=>{let{width:r,height:i}=n;return a.createElement(wx,{ref:this.refContainer,outerRef:t.innerRef,width:r,height:i,itemSize:this.getVirtualizedItemHeight,itemData:e,itemCount:e.length,overscanCount:10,onItemsRendered:this.onItemsRendered,activeItem:this.state.activeItem},this.renderVirtualizedItem)}))))):a.createElement(Ub,null,(t=>{let{width:n,height:r}=t;return a.createElement(wx,{ref:this.refContainer,width:n,height:r,itemSize:this.getVirtualizedItemHeight,itemData:e,itemCount:e.length,overscanCount:10,onItemsRendered:this.onItemsRendered,activeItem:this.state.activeItem},this.renderItem)}))}renderItems(){return this.props.virtualized?this.renderVirtualizedContainer():this.renderSimpleContainer()}getFilter(){const{filter:e=this.state.filter}=this.props;return e}getItemsStyle(){let{itemsHeight:e}=this.props;return"function"===typeof e&&(e=e(this.state.items)),e?{height:e}:void 0}handleKeyMove(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const{activeItem:r=n}=this.state;e.preventDefault();const i=this.getItemsWithLoading();this.activateItem(Sx.findNextIndex(i,r+t,Math.sign(t)))}}Sx.defaultProps={items:[],itemClassName:"",filterable:!0,sortable:!1,virtualized:!0,deactivateOnLeave:!0};const _x=e=>Boolean(e&&"label"in e),Cx=e=>{const t=e.reduce(((e,t)=>("label"in t?(e.push({label:t.label,disabled:!0}),e.push(...t.options||[])):e.push(t),e)),[]);return Object.defineProperty(t,lp,{enumerable:!1,value:{}}),t},Ex=e=>{const{getOptionHeight:t,getOptionGroupHeight:n,size:r,option:i,index:o,mobile:a}=e;let s=a?32:tp[r];if(_x(i)){const e=0===o?0:5;return s=""===i.label?0:s,n?n(i,o):s+e}return t?t(i,o):s},Tx=e=>"string"===typeof e.content?e.content:"string"===typeof e.children?e.children:e.text?e.text:e.value,Ox=e=>(e=>a.Children.toArray(e))(e).reduce(((e,t)=>{let{props:n}=t;if("label"in n){const t=n.options||(e=>a.Children.toArray(e).reduce(((e,t)=>{let{props:n}=t;return"value"in n&&e.push(n),e}),[]))(n.children);e.push({options:t,label:n.label})}return"value"in n&&e.push(Object.assign({},n)),e}),[]),Nx=(e,t)=>t?t.findIndex((t=>{if(_x(t))return!1;if(t.disabled)return!1;const n=Tx(t);return(r=e,new RegExp(r.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"i")).test(n);var r})):-1,kx=e=>{var t;return(null===(t=null===e||void 0===e?void 0:e.current)||void 0===t?void 0:t.getItems())||[]},jx=e=>{const{options:t,filter:n,filterOption:r}=e,i=t.filter((e=>!!_x(e)||(r?r(e,n):((e,t)=>{const n=Tx(e).toLocaleLowerCase(),r=t.toLocaleLowerCase();return-1!==n.indexOf(r)})(e,n))));return i.reduce(((e,t,n)=>{const r=_x(t),o=_x(e[e.length-1]),a=n===i.length-1;return r&&o&&e.pop(),(!r||r&&!a)&&e.push(t),e}),[])},Ix=(0,le.Ge)("select-list"),Px=e=>{let{option:t,renderOptionGroup:n}=e;return n?a.createElement("div",{className:Ix("group-label-custom")},n(t)):a.createElement("div",{className:Ix("group-label",{empty:""===t.label})},a.createElement("div",{className:Ix("group-label-content")},t.label))},Dx=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M13.488 3.43a.75.75 0 0 1 .081 1.058l-6 7a.75.75 0 0 1-1.1.042l-3.5-3.5A.75.75 0 0 1 4.03 6.97l2.928 2.927 5.473-6.385a.75.75 0 0 1 1.057-.081Z",clipRule:"evenodd"})),Ax=(0,le.Ge)("select-list"),Rx=e=>{let{option:t}=e;const{content:n,children:r,disabled:i}=t;return a.createElement("span",{className:Ax("option-default-label",{disabled:i})},n||r)},Mx=e=>{const{renderOption:t,value:n,option:r,multiple:i}=e,o=-1!==n.indexOf(r.value),s=t?t(r):a.createElement(Rx,{option:r});return a.createElement("div",{"data-qa":r.qa,className:Ax("option",{colored:o&&!i,disabled:r.disabled})},i&&a.createElement(we.J,{className:Ax("tick-icon",{shown:o&&i}),data:Dx}),s)},Lx=e=>{const t=a.useRef(null);return ax({element:t.current,onIntersect:null===e||void 0===e?void 0:e.onIntersect}),a.createElement("div",{ref:t,className:Jh("loading-indicator")},a.createElement(Di,null))},Fx={value:"__SELECT_LIST_ITEM_LOADING__",disabled:!0},zx=a.forwardRef(((e,t)=>{const{onOptionClick:n,renderOption:r,renderOptionGroup:i,getOptionHeight:o,getOptionGroupHeight:s,size:l,flattenOptions:c,value:u,multiple:d,virtualized:h,mobile:p,loading:f,onLoadMore:m,selectId:g,onChangeActive:v}=e,y=a.useMemo((()=>f?[...c,Fx]:c),[c,f]),b=a.useMemo((()=>c.reduce(((e,t,n)=>("value"in t&&u.includes(t.value)&&e.push(n),e)),[])),[c,u]),x=(e=>{const{getOptionHeight:t,getOptionGroupHeight:n,size:r,options:i,mobile:o}=e;return i.reduce(((e,i,a)=>e+Ex({getOptionHeight:t,getOptionGroupHeight:n,size:r,option:i,index:a,mobile:o})),0)})({options:y,getOptionHeight:o,getOptionGroupHeight:s,size:l,mobile:p}),w=a.useCallback(((e,t)=>Ex({getOptionHeight:o,getOptionGroupHeight:s,size:l,option:e,index:t,mobile:p})),[o,s,p,l]),S=a.useCallback(((e,t,n)=>{if("label"in e){const t=i?e=>i(e,{itemHeight:w(e,n)}):void 0;return a.createElement(Px,{option:e,renderOptionGroup:t})}if(e.value===Fx.value)return a.createElement(Lx,{onIntersect:0===n?void 0:m});const o=r?e=>r(e,{itemHeight:w(e,n)}):void 0;return a.createElement(Mx,{option:e,value:u,multiple:d,renderOption:o})}),[r,i,u,d,w,m]);return a.createElement(Sx,{ref:t,className:Jh({size:l,virtualized:h,mobile:p}),qa:rp,itemClassName:Jh("item"),itemHeight:w,itemsHeight:h?x:void 0,items:y,filterable:!1,virtualized:h,renderItem:S,onItemClick:n,selectedItemIndex:b,id:"".concat(g,"-list"),role:"listbox",onChangeActive:v})}));zx.displayName="SelectList";const Bx=(0,le.Ge)("select-empty-placeholder"),Ux=e=>{let{renderEmptyOptions:t,filter:n}=e;return a.createElement("div",{className:Bx({empty:!t})},null===t||void 0===t?void 0:t({filter:n}))};var Hx=n(85198),Vx=n.n(Hx);const Gx=JSON.parse('{"label_clear":"Clear","label_show-error-info":"Show popup with error info"}'),Wx=JSON.parse('{"label_clear":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c","label_show-error-info":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043f\u0430\u043f \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0435\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435"}'),qx=(0,mi.e)({en:Gx,ru:Wx},"Select"),Zx=e=>{const{size:t,onClick:n,onMouseEnter:r,onMouseLeave:i,renderIcon:o}=e,s=o?o():a.createElement(we.J,{className:ep("clear"),data:tt.Z});return a.createElement("button",{className:ep({size:t}),"aria-label":qx("label_clear"),onClick:n,onMouseEnter:r,onMouseLeave:i,"data-qa":ap,type:"button"},s)};Zx.displayName="SelectClear";const Yx=(0,le.Ge)("select-counter"),Kx=a.forwardRef((function(e,t){let{count:n,size:r,disabled:i}=e;return a.createElement("div",{className:Yx({size:r}),ref:t},a.createElement(Fi.x,{variant:"xl"===r?"body-2":"body-1",color:i?"hint":"primary",className:Yx("text")},n))})),Qx=a.forwardRef(((e,t)=>{const{toggleOpen:n,clearValue:r,onKeyDown:i,renderControl:o,view:s,size:l,pin:c,selectedOptionsContent:u,className:d,qa:h,name:p,label:f,placeholder:m,isErrorVisible:g,errorMessage:v,open:y,disabled:b,value:x,hasClear:w,popupId:S,selectId:_,activeIndex:C,renderCounter:E,hasCounter:T,title:O}=e,N=Boolean(u),k=Boolean(m&&!N),j=Array.isArray(x)&&!Vx()(x.filter(Boolean)),I=ue(),[P,D]=a.useState(!1),A={open:y,size:l,pin:c,disabled:b,error:g,"has-clear":w,"no-active":P,"has-value":j},R={open:y,size:l,view:s,pin:c,disabled:b,error:g},M=a.useCallback((e=>{e&&e.currentTarget!==document.activeElement&&"focus"in e.currentTarget&&e.currentTarget.focus(),n()}),[n]),L=a.useCallback((()=>{D(!0)}),[]),F=a.useCallback((()=>{D(!1)}),[]),z=a.useCallback((()=>{D(!1),r()}),[r]),B=()=>{if(!T)return null;const e=Number(null===x||void 0===x?void 0:x.length)||0,t=a.createElement(Kx,{count:e,size:l,disabled:b});return E?E(t,{count:e,size:l,disabled:b}):t},U=e=>{const t=!(null===x||void 0===x?void 0:x[0]);return!w||!r||t||b?null:a.createElement(Zx,{size:l,onClick:z,onMouseEnter:L,onMouseLeave:F,renderIcon:e.renderIcon})};return o?o({onKeyDown:i,onClear:r,onClick:M,renderClear:e=>U(e),renderCounter:B,ref:t,open:Boolean(y),popupId:S,selectId:_,activeIndex:C},{value:x}):a.createElement(a.Fragment,null,a.createElement("div",{className:Xh(A),role:"group"},a.createElement("button",{ref:t,role:"combobox","aria-controls":S,className:$h(R,d),"aria-haspopup":"listbox","aria-expanded":y,"aria-activedescendant":void 0===C?void 0:"".concat(_,"-list-item-").concat(C),name:p,disabled:b,onClick:M,onKeyDown:i,type:"button","data-qa":h,title:O},f&&a.createElement("span",{className:Xh("label")},f),k&&a.createElement("span",{className:Xh("placeholder")},m),N&&a.createElement("span",{className:Xh("option-text")},u)),B(),U({}),v&&a.createElement(fi,{content:v,tooltipId:I},a.createElement("button",{"aria-label":qx("label_show-error-info"),"aria-describedby":I,className:Xh("error-icon")},a.createElement(we.J,{data:St.Z,size:"s"===l?12:16}))),a.createElement(we.J,{className:Xh("chevron-icon",{disabled:b}),data:xe,"aria-hidden":"true"})))}));Qx.displayName="SelectControl";let Xx,$x=0;function Jx(e){let{enabled:t}=e;a.useLayoutEffect((()=>{if(t)return $x++,1===$x&&function(){const e=window.innerWidth-document.documentElement.clientWidth,t=window.innerHeight-document.documentElement.clientHeight,n=function(){const e=window.getComputedStyle(document.body);return{top:Number.parseFloat(e.paddingTop),right:Number.parseFloat(e.paddingRight),bottom:Number.parseFloat(e.paddingBottom),left:Number.parseFloat(e.paddingLeft)}}();Xx=document.body.style.cssText,document.body.style.overflow="hidden",e&&(document.body.style.paddingRight="".concat(n.right+e,"px"));t&&(document.body.style.paddingBottom="".concat(n.bottom+t,"px"))}(),()=>{$x--,0===$x&&(Xx?document.body.style.cssText=Xx:document.body.removeAttribute("style"))}}),[t])}var ew=n(66573);const tw=(0,le.Ge)("sheet");class nw{constructor(e,t){this.x=e,this.y=t,this.timeStamp=Date.now()}}class rw{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5;this.points=[],this.pointsLen=e,this.clear()}clear(){this.points=new Array(this.pointsLen)}addMovement(e){let{x:t,y:n}=e;this.points.pop(),this.points.unshift(new nw(t,n))}getYAcceleration(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const t=this.points[0],n=this.points[e];return t&&n?(t.y-n.y)/Math.pow(t.timeStamp-n.timeStamp,2):0}}let iw=[];class ow extends a.Component{constructor(){super(...arguments),this.veilRef=a.createRef(),this.sheetRef=a.createRef(),this.sheetTopRef=a.createRef(),this.sheetContentRef=a.createRef(),this.sheetInnerContentRef=a.createRef(),this.sheetTitleRef=a.createRef(),this.velocityTracker=new rw,this.observer=null,this.state={startScrollTop:0,startY:0,deltaY:0,prevSheetHeight:0,swipeAreaTouched:!1,contentTouched:!1,veilTouched:!1,isAnimating:!1,inWindowResizeScope:!1},this.setStyles=e=>{let{status:t,deltaHeight:n=0}=e;if(!this.sheetRef.current||!this.veilRef.current)return;const r=this.sheetHeight-n,i="showing"===t?"translate3d(0, -".concat(r,"px, 0)"):"translate3d(0, 0, 0)";let o=0;"showing"===t&&(o=0===n?1:r/this.sheetHeight),this.veilRef.current.style.opacity=String(o),this.sheetRef.current.style.transform=i},this.show=()=>{this.setState({isAnimating:!0},(()=>{this.setStyles({status:"showing"}),this.setHash()}))},this.hide=()=>{this.setState({isAnimating:!0},(()=>{this.setStyles({status:"hiding"}),this.removeHash()}))},this.onSwipeAreaTouchStart=e=>{this.velocityTracker.clear(),this.setState({startY:e.nativeEvent.touches[0].clientY,swipeAreaTouched:!0})},this.onContentTouchStart=e=>{this.props.allowHideOnContentScroll&&!this.state.swipeAreaTouched&&(this.velocityTracker.clear(),this.setState({startY:e.nativeEvent.touches[0].clientY,startScrollTop:this.sheetScrollTop,contentTouched:!0}))},this.onSwipeAriaTouchMove=e=>{const t=e.nativeEvent.touches[0].clientY-this.state.startY;this.velocityTracker.addMovement({x:e.nativeEvent.touches[0].clientX,y:e.nativeEvent.touches[0].clientY}),this.setState({deltaY:t}),t<=0||this.setStyles({status:"showing",deltaHeight:t})},this.onContentTouchMove=e=>{if(!this.props.allowHideOnContentScroll)return;const{startScrollTop:t,swipeAreaTouched:n}=this.state;if(n||this.sheetScrollTop>0||t>0&&t!==this.sheetScrollTop)return;const r=e.nativeEvent.touches[0].clientY-this.state.startY;this.velocityTracker.addMovement({x:e.nativeEvent.touches[0].clientX,y:e.nativeEvent.touches[0].clientY}),this.setState({deltaY:r}),r<=0||this.setStyles({status:"showing",deltaHeight:r})},this.onTouchEndAction=e=>{const t=this.velocityTracker.getYAcceleration();this.sheetHeight<=e?this.props.hideSheet():e>50&&t<=.08&&t>=-.02||t>.08?this.hide():0!==e&&this.show()},this.onSwipeAriaTouchEnd=()=>{const{deltaY:e}=this.state;this.onTouchEndAction(e),this.setState({startY:0,deltaY:0,swipeAreaTouched:!1})},this.onContentTouchEnd=()=>{const{deltaY:e,swipeAreaTouched:t}=this.state;this.props.allowHideOnContentScroll&&!t&&(this.onTouchEndAction(e),this.setState({startY:0,deltaY:0,contentTouched:!1}))},this.onVeilClick=()=>{this.setState({veilTouched:!0}),this.hide()},this.onVeilTransitionEnd=()=>{this.setState({isAnimating:!1}),"0"===this.veilOpacity&&this.props.hideSheet()},this.onContentTransitionEnd=e=>{"height"===e.propertyName&&this.sheetContentRef.current&&(this.sheetContentRef.current.style.transition="none")},this.onResizeWindow=()=>{this.setState({inWindowResizeScope:!0}),this.onResize(),setTimeout((()=>this.setState({inWindowResizeScope:!1})),0)},this.onResize=()=>{if(!this.sheetRef.current||!this.sheetContentRef.current)return;const e=this.sheetTitleHeight+this.innerContentHeight+this.sheetTopHeight;if(e===this.state.prevSheetHeight&&!this.state.inWindowResizeScope)return;const t=.9*window.innerHeight,n=e>=t?t:e;this.sheetContentRef.current.style.transition=this.state.prevSheetHeight>e?"height 0s ease ".concat("0.3s"):"none",this.sheetContentRef.current.style.height="".concat(n-this.sheetTopHeight,"px"),this.sheetRef.current.style.transform="translate3d(0, -".concat(n,"px, 0)"),this.setState({prevSheetHeight:e})}}componentDidMount(){this.addListeners(),this.show(),this.setInitialStyles(),this.setState({prevSheetHeight:this.sheetTitleHeight+this.innerContentHeight+this.sheetTopHeight})}componentDidUpdate(e){const{visible:t,location:n}=this.props;!e.visible&&t&&this.show(),(e.visible&&!t||this.shouldClose(e))&&this.hide(),e.location.pathname!==n.pathname&&(iw=[])}componentWillUnmount(){this.removeListeners()}render(){const{content:e,contentClassName:t,swipeAreaClassName:n,hideTopBar:r,title:i}=this.props,{deltaY:o,swipeAreaTouched:s,contentTouched:l,veilTouched:c,isAnimating:u,inWindowResizeScope:d}=this.state,h={"with-transition":!o||c},p={"with-transition":!d&&h["with-transition"]},f={"without-scroll":o>0&&l||s};return a.createElement(a.Fragment,null,a.createElement("div",{ref:this.veilRef,className:tw("veil",h),onClick:u?void 0:this.onVeilClick,onTransitionEnd:this.onVeilTransitionEnd,role:"presentation"}),a.createElement("div",{ref:this.sheetRef,className:tw("sheet",p),role:"dialog","aria-modal":"true","aria-label":i},!r&&a.createElement("div",{ref:this.sheetTopRef,className:tw("sheet-top")},a.createElement("div",{className:tw("sheet-top-resizer")})),a.createElement("div",{className:tw("sheet-swipe-area",n),onTouchStart:this.onSwipeAreaTouchStart,onTouchMove:this.onSwipeAriaTouchMove,onTouchEnd:this.onSwipeAriaTouchEnd}),a.createElement("div",{ref:this.sheetContentRef,className:tw("sheet-content",f,t),onTouchStart:this.onContentTouchStart,onTouchMove:this.onContentTouchMove,onTouchEnd:this.onContentTouchEnd,onTransitionEnd:this.onContentTransitionEnd},i&&a.createElement("div",{ref:this.sheetTitleRef,className:tw("sheet-content-title")},i),a.createElement("div",{ref:this.sheetInnerContentRef},e))))}get veilOpacity(){var e;return(null===(e=this.veilRef.current)||void 0===e?void 0:e.style.opacity)||0}get sheetTopHeight(){var e;return(null===(e=this.sheetTopRef.current)||void 0===e?void 0:e.getBoundingClientRect().height)||0}get sheetHeight(){var e;return(null===(e=this.sheetRef.current)||void 0===e?void 0:e.getBoundingClientRect().height)||0}get innerContentHeight(){var e;return(null===(e=this.sheetInnerContentRef.current)||void 0===e?void 0:e.getBoundingClientRect().height)||0}get sheetTitleHeight(){var e;return(null===(e=this.sheetTitleRef.current)||void 0===e?void 0:e.getBoundingClientRect().height)||0}get sheetScrollTop(){var e;return(null===(e=this.sheetContentRef.current)||void 0===e?void 0:e.scrollTop)||0}setInitialStyles(){if(this.sheetContentRef.current&&this.sheetInnerContentRef.current){const e=this.sheetHeight-this.sheetTopHeight;this.sheetContentRef.current.style.height="".concat(e,"px")}}addListeners(){window.addEventListener("resize",this.onResizeWindow),this.sheetInnerContentRef.current&&(this.observer=new ResizeObserver((()=>{this.state.inWindowResizeScope||this.onResize()})),this.observer.observe(this.sheetInnerContentRef.current))}removeListeners(){window.removeEventListener("resize",this.onResizeWindow),this.observer&&this.observer.disconnect()}setHash(){const{id:e,platform:t,location:n,history:r}=this.props;if(t===ew.t.BROWSER)return;const i=Object.assign(Object.assign({},n),{hash:e});switch(t){case ew.t.IOS:n.hash&&iw.push(n.hash),r.replace(i);break;case ew.t.ANDROID:r.push(i)}}removeHash(){var e;const{id:t,platform:n,location:r,history:i}=this.props;if(n!==ew.t.BROWSER&&r.hash==="#".concat(t))switch(n){case ew.t.IOS:i.replace(Object.assign(Object.assign({},r),{hash:null!==(e=iw.pop())&&void 0!==e?e:""}));break;case ew.t.ANDROID:i.goBack()}}shouldClose(e){const{id:t,platform:n,location:r,history:i}=this.props;return n!==ew.t.BROWSER&&"POP"===i.action&&e.location.hash!==r.hash&&r.hash!=="#".concat(t)}}ow.defaultProps={id:"sheet",allowHideOnContentScroll:!0};const aw=function(e){var t;const n=(r=e).displayName||r.name||"Component";var r;return(t=class extends a.Component{render(){return a.createElement(e,Object.assign({},this.props,{mobile:this.context.mobile,platform:this.context.platform,useHistory:this.context.useHistory,useLocation:this.context.useLocation}))}}).displayName="withMobile(".concat(n,")"),t.contextType=ox.z,t}(function(e){const t=t=>{const{useHistory:n,useLocation:r}=t,i=(0,nt._T)(t,["useHistory","useLocation"]);return a.createElement(e,Object.assign({},i,{history:n(),location:r()}))},n=e.displayName||e.name||"Component";return t.displayName="withRouterWrapper(".concat(n,")"),t}(ow)),sw=e=>{let{children:t,onClose:n,visible:r,id:i,title:o,className:s,contentClassName:l,swipeAreaClassName:c,allowHideOnContentScroll:u,hideTopBar:d,qa:h}=e;const[p,f]=a.useState(r),[m,g]=a.useState(r);Jx({enabled:p}),!m&&r&&f(!0),r!==m&&g(r);return p?a.createElement(jr.h,null,a.createElement("div",{"data-qa":h,className:tw(null,s)},a.createElement(aw,{id:i,content:t,contentClassName:l,swipeAreaClassName:c,title:o,visible:r,allowHideOnContentScroll:u,hideTopBar:d,hideSheet:()=>{n&&n(),f(!1)}}))):null},lw=e=>e-2,cw=(e,t,n)=>{let r=t;return r="number"===typeof e?e:"fit"===e?lw(t):((e,t)=>t?e>100?e:100:lw(e))(t,n),"".concat(r,"px")},uw=e=>{const{width:t,disablePortal:n,virtualized:r}=e;return[{name:"sameWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:e=>{let{state:n,name:i}=e;var o;if(null===(o=n.modifiersData["".concat(i,"#persistent")])||void 0===o?void 0:o.skip)return;const a=cw(t,n.rects.reference.width,r);"number"!==typeof t&&"fit"!==t?(n.styles.popper.minWidth=a,n.styles.popper.width=void 0):(n.styles.popper.minWidth=a,n.styles.popper.width=a),n.styles.popper.maxWidth="max(90vw, ".concat(lw(n.rects.reference.width),"px)"),n.modifiersData["".concat(i,"#persistent")]={skip:"number"!==typeof t}},effect:e=>{let{state:n,name:i}=e;var o;if(null===(o=n.modifiersData["".concat(i,"#persistent")])||void 0===o?void 0:o.skip)return;const a=cw(t,n.elements.reference.offsetWidth,r);"number"!==typeof t&&"fit"!==t?n.elements.popper.style.minWidth=a:(n.elements.popper.style.minWidth=a,n.elements.popper.style.width=a),n.elements.popper.style.maxWidth="max(90vw, ".concat(n.elements.reference.offsetWidth,"px)")}},{name:"preventOverflow",options:{padding:10,altBoundary:n,altAxis:!0}}]},dw=(0,le.Ge)("select-popup"),hw=["bottom-start","bottom-end","top-start","top-end"],pw=a.forwardRef(((e,t)=>{let{handleClose:n,width:r,open:i,placement:o=hw,controlRef:s,children:l,className:c,disablePortal:u,virtualized:d,mobile:h,id:p}=e;return h?a.createElement(sw,{qa:op,className:c,visible:Boolean(i),onClose:n},l):a.createElement(ti,{contentClassName:dw(null,c),qa:ip,anchorRef:t,placement:o,offset:[1,1],open:i,onClose:n,disablePortal:u,restoreFocus:!0,restoreFocusRef:s,modifiers:uw({width:r,disablePortal:u,virtualized:d}),id:p},l)}));pw.displayName="SelectPopup";const fw=e=>{const{onChange:t,open:n,disabled:r}=e,[i,o]=a.useState(""),[s,l]=a.useState(),c=a.useCallback((e=>{if(clearTimeout(s),e){const e=window.setTimeout((()=>o("")),2e3);l(e)}}),[s]),u=a.useCallback((e=>{e.stopPropagation();const t=((e,t)=>{const n=1===e.length;let r="";return e===Zr.V.BACKSPACE&&t.length?r=t.slice(0,t.length-1):n&&(r=(t+e).trim()),r})(e.key,i);i!==t&&(c(t),o(t))}),[c,i]);a.useEffect((()=>(n&&!r?document.addEventListener("keydown",u):n||r||o(""),()=>{n&&!r&&document.removeEventListener("keydown",u)})),[u,n,r]),a.useEffect((()=>(n||clearTimeout(s),()=>clearTimeout(s))),[n,s]),a.useEffect((()=>{t(i)}),[t,i])};var mw=n(63639),gw=n.n(mw);function vw(e){return gw()(e,[lp])}const yw={filter:""},bw=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:yw,t=arguments.length>1?arguments[1]:void 0;if("SET_FILTER"===t.type){const{filter:n}=t.payload;return Object.assign(Object.assign({},e),{filter:n})}return e},xw=e=>{let{renderFilter:t,renderList:n}=e;return a.createElement(a.Fragment,null,t(),n())},ww=a.forwardRef((function(e,t){const{onUpdate:n,onOpenChange:r,onFilterChange:i,renderControl:o,renderFilter:s,renderOption:l,renderOptionGroup:c,renderSelectedOption:u,renderEmptyOptions:d,renderPopup:h=xw,getOptionHeight:p,getOptionGroupHeight:f,filterOption:m,name:g,className:v,controlClassName:y,popupClassName:b,qa:x,value:w,defaultValue:S,defaultOpen:_,open:C,label:E,placeholder:T,filterPlaceholder:O,width:N,popupWidth:k,popupPlacement:j,error:I,virtualizationThreshold:P=np,view:D="normal",size:A="m",pin:R="round-round",multiple:M=!1,disabled:L=!1,filterable:F=!1,disablePortal:z,hasClear:B=!1,onClose:U,id:H,hasCounter:V,renderCounter:G,title:W}=e,q=(0,Kh.X)(),[{filter:Z},Y]=a.useReducer(bw,yw),K=a.useRef(null),Q=a.useRef(null),X=a.useRef(null),$=a.useRef(null),J=Et(t,Q),ee=a.useCallback((e=>{null===i||void 0===i||i(e),Y({type:"SET_FILTER",payload:{filter:e}})}),[i]),te=a.useCallback((e=>{null===r||void 0===r||r(e),!e&&F&&setTimeout((()=>{ee("")}),100)}),[F,r,ee]),{value:ne,open:re,activeIndex:ie,toggleOpen:oe,handleSelection:ae,handleClearValue:se,setActiveIndex:le}=(e=>{let{defaultOpen:t,onClose:n,onOpenChange:r,open:i,value:o,defaultValue:s=[],multiple:l,onUpdate:c}=e;const[u,d]=_t(o,s,c),[h,p]=a.useState(),f=qh({defaultOpen:t,onClose:n,onOpenChange:r,open:i}),{toggleOpen:m}=f,g=(0,nt._T)(f,["toggleOpen"]),v=a.useCallback((e=>{if(!u.includes(e.value)){const t=[e.value];d(t)}m(!1)}),[u,d,m]),y=a.useCallback((e=>{const t=u.includes(e.value)?u.filter((t=>t!==e.value)):[...u,e.value];d(t)}),[u,d]),b=a.useCallback((e=>{l?y(e):v(e)}),[l,v,y]),x=a.useCallback((()=>{d([])}),[d]);return Object.assign({value:u,activeIndex:h,handleSelection:b,handleClearValue:x,toggleOpen:m,setActiveIndex:p},g)})({onUpdate:n,value:w,defaultValue:S,defaultOpen:_,multiple:M,open:C,onClose:U,onOpenChange:te}),ce=ue(),de=null!==H&&void 0!==H?H:ce,he=function(e){const{filter:t="",filterable:n,filterOption:r}=e,i=a.useMemo((()=>vw(e.options)?e.options:Cx(e.options)),[e.options]),o=a.useMemo((()=>n?jx({options:i,filter:t,filterOption:r}):i),[t,n,r,i]);return i[lp].filteredOptions=o,i}({options:e.options||Ox(e.children),filter:Z,filterable:F,filterOption:m}),pe=function(e){if(!vw(e))throw Error("You should use options generated by useSelectOptions hook");return gw()(e,[lp,"filteredOptions"])}(he),fe=((e,t,n)=>{if(0===t.length)return null;const r=e.filter((e=>!_x(e))),i=t.reduce(((e,t)=>{const n=r.find((e=>e.value===t));return e.push(n||{value:t}),e}),[]);return n?i.map(((e,t)=>a.createElement(a.Fragment,{key:e.value},n(e,t)))):i.map((e=>Tx(e))).join(", ")})(he,ne,u),me=pe.length>=P,{errorMessage:ge,errorPlacement:ve,validationState:ye}=_i({error:I,errorMessage:e.errorMessage,errorPlacement:e.errorPlacement||"outside",validationState:e.validationState}),be=ue(),xe="invalid"===ye,we=xe&&Boolean(ge)&&"outside"===ve,Se=xe&&Boolean(ge)&&"inside"===ve,_e=a.useCallback((e=>{var t,n;if(e&&!(null===e||void 0===e?void 0:e.disabled)&&!("label"in e)){if(M){const e=null===(t=null===$||void 0===$?void 0:$.current)||void 0===t?void 0:t.getActiveItem();null===(n=X.current)||void 0===n||n.focus(),"number"===typeof e&&setTimeout((()=>{var t;null===(t=null===$||void 0===$?void 0:$.current)||void 0===t||t.activateItem(e,!0)}),50)}ae(e)}}),[ae,M]),Ce=a.useCallback((e=>{var t;[Zr.V.ENTER,Zr.V.SPACEBAR].includes(e.key)&&re&&(e.preventDefault(),e.key===Zr.V.SPACEBAR&&_e((e=>{var t;const n=kx(e),r=null===(t=null===e||void 0===e?void 0:e.current)||void 0===t?void 0:t.getActiveItem();return"number"===typeof r?n[r]:void 0})($))),[Zr.V.ARROW_DOWN,Zr.V.ARROW_UP].includes(e.key)&&!re&&(e.preventDefault(),oe()),null===(t=null===$||void 0===$?void 0:$.current)||void 0===t||t.onKeyDown(e)}),[_e,re,oe]),Ee=a.useCallback((e=>{var t;null===(t=null===$||void 0===$?void 0:$.current)||void 0===t||t.onKeyDown(e)}),[]),Te=a.useCallback((e=>{var t;if(e){const n=Nx(e,kx($));"number"===typeof n&&-1!==n&&(null===(t=null===$||void 0===$?void 0:$.current)||void 0===t||t.activateItem(n,!0))}}),[]);fw({onChange:Te,open:re,disabled:F}),a.useEffect((()=>{var e;re&&((e=>{var t;const n=kx(e);null===(t=null===e||void 0===e?void 0:e.current)||void 0===t||t.activateItem(Sx.findNextIndex(n,0,1),!1)})($),F&&(null===(e=X.current)||void 0===e||e.focus()))}),[re,F]);const Oe=Object.assign({},"max"===N&&{width:N}),Ne={};"number"===typeof N&&(Ne.width=N);const ke=a.useCallback((()=>oe(!1)),[oe]),{onFocus:je,onBlur:Ie}=e,{focusWithinProps:Pe}=Yh({onFocusWithin:je,onBlurWithin:a.useCallback((e=>{null===Ie||void 0===Ie||Ie(e),ke()}),[ke,Ie])});return a.createElement("div",Object.assign({ref:K,className:Qh(Oe,v)},Pe,{style:Ne}),a.createElement(Qx,{toggleOpen:oe,hasClear:B,clearValue:se,ref:J,className:y,qa:x,name:g,view:D,size:A,pin:R,label:E,placeholder:T,selectedOptionsContent:fe,isErrorVisible:xe,errorMessage:Se?ge:void 0,open:re,disabled:L,onKeyDown:Ce,renderControl:o,value:ne,popupId:"select-popup-".concat(de),selectId:"select-".concat(de),activeIndex:ie,hasCounter:M&&V,renderCounter:G,title:W}),a.createElement(pw,{ref:K,className:b,controlRef:Q,width:k,open:re,handleClose:ke,disablePortal:z,virtualized:me,mobile:q,id:"select-popup-".concat(de),placement:j},h({renderFilter:()=>F?a.createElement(dp,{ref:X,size:A,value:Z,placeholder:O,onChange:ee,onKeyDown:Ee,renderFilter:s}):null,renderList:()=>pe.length||e.loading?a.createElement(zx,{ref:$,size:A,value:ne,mobile:q,flattenOptions:pe,multiple:M,virtualized:me,onOptionClick:_e,renderOption:l,renderOptionGroup:c,getOptionHeight:p,getOptionGroupHeight:f,loading:e.loading,onLoadMore:e.onLoadMore,selectId:"select-".concat(de),onChangeActive:le}):a.createElement(Ux,{filter:Z,renderEmptyOptions:d})})),a.createElement(Ei,{errorMessage:we?ge:null,errorMessageId:be}))}));ww.Option=e=>null,ww.OptionGroup=e=>null;const Sw=tu(1,2,["success","warning","danger"]),_w={"block-4-2":tu(1,2,["success","warning","danger"]),"mirror-3-dc":tu(1,3,["success","warning","danger"])},Cw=e=>{var t;return(void 0!==(t=e.ErasureSpecies)&&t in _w?_w[e.ErasureSpecies]:Sw)(e.Degraded)},Ew=tu(80,85,["success","warning","danger"]),Tw=tu(80,85,[al.K.Green,al.K.Yellow,al.K.Red]),Ow={sortValue:Na.Hk.NodeId,sortOrder:zo.zE},Nw={sortValue:sh.PoolName,sortOrder:zo.zE},kw={sortValue:sh.Degraded,sortOrder:zo.hr},jw={sortValue:sh.Usage,sortOrder:zo.hr};const Iw=JSON.parse('{"label":"Usage:","default_value":"Any","groups_count":["{{count}} group","{{count}} groups","{{count}} groups","No groups"]}'),Pw=JSON.parse('{"label":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435:","default_value":"\u041b\u044e\u0431\u043e\u0435","groups_count":["{{count}} \u0433\u0440\u0443\u043f\u043f\u0430","{{count}} \u0433\u0440\u0443\u043f\u043f\u044b","{{count}} \u0433\u0440\u0443\u043f\u043f","\u041d\u0435\u0442 \u0433\u0440\u0443\u043f\u043f"]}'),Dw=(0,We.wZ)("ydb-usage-filter",{ru:Pw,en:Iw}),Aw=Me("usage-filter"),Rw=e=>{const{className:t,value:n=[],groups:r=[],onChange:i,debounce:o=200}=e,[s,l]=a.useState(n),c=a.useRef();a.useEffect((()=>{l((e=>e.join(",")!==n.join(",")?n:e))}),[n]);const u=a.useMemo((()=>r.map((e=>{let{threshold:t,count:n}=e;return{value:String(t),text:"".concat(t,"%"),data:{count:n}}}))),[r]),d=Math.max(...r.map((e=>{let{count:t}=e;return t})));return(0,Le.jsx)(ww,{className:Aw(null,t),label:Dw("label"),value:s,placeholder:Dw("default_value"),options:u,multiple:!0,onUpdate:e=>{l(e),window.clearTimeout(c.current),c.current=window.setTimeout((()=>{null===i||void 0===i||i(e)}),o)},renderOption:e=>{let{value:t,data:n,text:r}=e;return(0,Le.jsxs)("div",{className:Aw("option"),children:[(0,Le.jsx)(Il,{className:Aw("option-title"),status:Tw(Number(t)),name:r,size:"xs"}),(0,Le.jsxs)("div",{className:Aw("option-meta"),children:[Dw("groups_count",{count:n.count}),(0,Le.jsx)("div",{className:Aw("option-bar"),style:{width:"".concat(n.count/d*100,"%")}})]})]})},getOptionHeight:()=>50,popupWidth:280,disabled:0===r.length})},Mw=JSON.parse('{"groups":"Groups","nodes":"Nodes","controls_groups-search-placeholder":"Group ID, Pool name","controls_nodes-search-placeholder":"Node ID, FQDN"}'),Lw=JSON.parse('{"groups":"\u0413\u0440\u0443\u043f\u043f\u044b","nodes":"\u041d\u043e\u0434\u044b","controls_groups-search-placeholder":"ID \u0433\u0440\u0443\u043f\u043f\u044b, \u0438\u043c\u044f \u043f\u0443\u043b\u0430","controls_nodes-search-placeholder":"ID \u0443\u0437\u043b\u0430, FQDN"}'),Fw=(0,We.wZ)("ydb-storage",{ru:Lw,en:Mw}),zw=Me("global-storage"),Bw=e=>{let{searchValue:t,handleSearchValueChange:n,withTypeSelector:r,storageType:i,handleStorageTypeChange:o,visibleEntities:s,handleVisibleEntitiesChange:l,nodesUptimeFilter:c,handleNodesUptimeFilterChange:u,withGroupsUsageFilter:d,groupsUsageFilter:h,groupsUsageFilterOptions:p,handleGroupsUsageFilterChange:f,entitiesCountCurrent:m,entitiesCountTotal:g,entitiesLoading:v}=e;const y=i===oh.nodes,b=Fw(y?"nodes":"groups");return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(Yc,{value:t,onChange:n,placeholder:Fw(y?"controls_nodes-search-placeholder":"controls_groups-search-placeholder"),className:zw("search")}),r&&(0,Le.jsx)(Vh,{value:i,onChange:o}),(0,Le.jsx)(Wh,{value:s,onChange:l}),y&&(0,Le.jsx)(Jc,{value:c,onChange:u}),!y&&d&&(0,Le.jsx)(Rw,{value:h,onChange:f,groups:p}),(0,Le.jsx)(yc,{label:b,loading:v,total:g,current:m})]})},Uw=JSON.parse('{"default_message":"Everything is fine!","default_button_label":"Show All"}'),Hw=JSON.parse('{"default_message":"\u0412\u0441\u0451 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435!","default_button_label":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435"}'),Vw=(0,We.wZ)("ydb-storage-empty-filter",{ru:Hw,en:Uw}),Gw=e=>{let{title:t,message:n=Vw("default_message"),showAll:r=Vw("default_button_label"),onShowAll:i}=e;return(0,Le.jsx)(Ac,{image:(0,Le.jsx)(Ge,{name:"thumbsUp"}),position:"left",title:t,description:n,actions:i&&[(0,Le.jsx)(Ie.z,{onClick:i,children:r},"show-all")]})},Ww=JSON.parse('{"empty.default":"No such groups","empty.out_of_space":"No groups with out of space errors","empty.degraded":"No degraded groups","show_all":"Show all groups","encrypted":"Encrypted group"}'),qw=JSON.parse('{"empty.default":"\u041d\u0435\u0442 \u0433\u0440\u0443\u043f\u043f","empty.out_of_space":"\u041d\u0435\u0442 \u0433\u0440\u0443\u043f\u043f, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u043e","empty.degraded":"\u041d\u0435\u0442 \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0445 \u0433\u0440\u0443\u043f\u043f","show_all":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u0433\u0440\u0443\u043f\u043f\u044b","encrypted":"\u0417\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430"}'),Zw=(0,We.wZ)("ydb-storage-groups",{ru:qw,en:Ww}),Yw=e=>{let t,{visibleEntities:n,onShowAll:r}=e;return n===ih.space&&(t=Zw("empty.out_of_space")),n===ih.missing&&(t=Zw("empty.degraded")),t?(0,Le.jsx)(Gw,{title:t,showAll:Zw("show_all"),onShowAll:r}):null},Kw=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"m3.003 4.702 4.22-2.025a1.796 1.796 0 0 1 1.554 0l4.22 2.025a.886.886 0 0 1 .503.8V6a8.55 8.55 0 0 1-3.941 7.201l-.986.631a1.063 1.063 0 0 1-1.146 0l-.986-.63A8.55 8.55 0 0 1 2.5 6v-.498c0-.341.196-.652.503-.8Zm3.57-3.377L2.354 3.35A2.387 2.387 0 0 0 1 5.502V6a10.05 10.05 0 0 0 4.632 8.465l.986.63a2.563 2.563 0 0 0 2.764 0l.986-.63A10.05 10.05 0 0 0 15 6v-.498c0-.918-.526-1.755-1.354-2.152l-4.22-2.025a3.296 3.296 0 0 0-2.852 0ZM9.5 7a1.5 1.5 0 0 1-.75 1.3v1.95a.75.75 0 0 1-1.5 0V8.3A1.5 1.5 0 1 1 9.5 7Z",clipRule:"evenodd"})),Qw=Me("stack"),Xw=e=>{let{children:t,className:n}=e;return(0,Le.jsx)("div",{className:Qw(null,n),children:a.Children.map(t,((e,t)=>a.isValidElement(e)?(0,Le.jsx)("div",{className:Qw("layer"),style:{"--ydb-stack-level":t},children:e}):null))})},$w=Me("storage-disk-progress-bar");function Jw(e){let{diskAllocatedPercent:t=-1,severity:n,compact:r}=e;const[i]=Mo(Lo.yT),o={inverted:i,compact:r},s=void 0!==n&&_h(n);return s&&(o[s.toLocaleLowerCase()]=!0),(0,Le.jsx)("div",{className:$w(o),role:"meter","aria-label":"Disk allocated space","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":t,children:r?(0,Le.jsx)("div",{className:$w("filled"),style:{width:"100%"}}):t>=0&&(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("div",{className:$w("filled"),style:{width:"".concat(i?100-t:t,"%")}}),(0,Le.jsx)("div",{className:$w("filled-title"),children:"".concat(Math.round(t),"%")})]})})}const eS=Me("pdisk-storage-popup"),tS=[al.K.Orange,al.K.Red,al.K.Yellow],nS=(e,t)=>{const{AvailableSize:n,TotalSize:r,State:i,PDiskId:o,NodeId:a,Path:s,Realtime:l,Type:c,Device:u}=e,d=[{label:"PDisk",value:(0,ks.CH)({NodeId:a,PDiskId:o})||Lo.jX},{label:"State",value:i||"not available"},{label:"Type",value:c||"unknown"}];return a&&d.push({label:"Node Id",value:a}),t&&a&&t.get(a)&&d.push({label:"Host",value:t.get(a)}),s&&d.push({label:"Path",value:s}),d.push({label:"Available",value:"".concat((0,Ou.Uz)(n)," of ").concat((0,Ou.Uz)(r))}),l&&tS.includes(l)&&d.push({label:"Realtime",value:l}),u&&tS.includes(u)&&d.push({label:"Device",value:u}),d},rS=e=>{let{data:t,nodes:n,...r}=e;const i=a.useMemo((()=>nS(t,n)),[t,n]);return(0,Le.jsx)(ti,{contentClassName:eS(),placement:["top","bottom"],offset:[0,12],...r,children:(0,Le.jsx)(Ss,{title:"PDisk",info:i,size:"s"})})},iS=Me("vdisk-storage-popup"),oS=e=>{let{data:t,nodes:n,...r}=e;const i=Sh(t),o=a.useMemo((()=>i?(e=>{var t,n,r,i;const{VDiskId:o,VDiskState:a,SatisfactionRank:s,DiskSpace:l,FrontQueues:c,Replicated:u,UnsyncedVDisks:d,AllocatedSize:h,ReadThroughput:p,WriteThroughput:f,StoragePoolName:m}=e,g=[{label:"VDisk",value:(0,ks.a2)(o)},{label:"State",value:null!==a&&void 0!==a?a:"not available"}];var v,y;return m&&g.push({label:"StoragePool",value:m}),s&&(null===(t=s.FreshRank)||void 0===t?void 0:t.Flag)!==al.K.Green&&g.push({label:"Fresh",value:null===(v=s.FreshRank)||void 0===v?void 0:v.Flag}),s&&(null===(n=s.LevelRank)||void 0===n?void 0:n.Flag)!==al.K.Green&&g.push({label:"Level",value:null===(y=s.LevelRank)||void 0===y?void 0:y.Flag}),s&&null!==(r=s.FreshRank)&&void 0!==r&&r.RankPercent&&g.push({label:"Fresh",value:s.FreshRank.RankPercent}),s&&null!==(i=s.LevelRank)&&void 0!==i&&i.RankPercent&&g.push({label:"Level",value:s.LevelRank.RankPercent}),l&&l!==al.K.Green&&g.push({label:"Space",value:l}),c&&c!==al.K.Green&&g.push({label:"FrontQueues",value:c}),u||g.push({label:"Replicated",value:"NO"}),d&&g.push({label:"UnsyncVDisks",value:d}),Number(h)&&g.push({label:"Allocated",value:(0,Ou.Uz)(h)}),Number(p)&&g.push({label:"Read",value:(0,Ou.Qt)(p)}),Number(f)&&g.push({label:"Write",value:(0,Ou.Qt)(f)}),g})(t):(e=>{const{NodeId:t,PDiskId:n,VSlotId:r,StoragePoolName:i}=e,o=[{label:"State",value:"not available"}];return i&&o.push({label:"StoragePool",value:i}),o.push({label:"NodeId",value:null!==t&&void 0!==t?t:Lo.jX},{label:"PDiskId",value:null!==n&&void 0!==n?n:Lo.jX},{label:"VSlotId",value:null!==r&&void 0!==r?r:Lo.jX}),o})(t)),[t,i]),s=a.useMemo((()=>i&&t.PDisk&&nS(t.PDisk,n)),[t,n,i]);return(0,Le.jsxs)(ti,{contentClassName:iS(),placement:["top","bottom"],offset:[0,12],...r,children:[t.DonorMode&&(0,Le.jsx)(ft,{className:iS("donor-label"),children:"Donor"}),(0,Le.jsx)(Ss,{title:"VDisk",info:o,size:"s"}),s&&(0,Le.jsx)(Ss,{title:"PDisk",info:s,size:"s"})]})},aS=Me("ydb-vdisk-component"),sS=e=>{var t,n;let{data:r={},nodes:i,compact:o}=e;const s=Sh(r),[l,c]=a.useState(!1),u=a.useRef(null);return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(oS,{data:r,nodes:i,anchorRef:u,open:l}),(0,Le.jsx)("div",{className:aS(),ref:u,onMouseEnter:()=>{c(!0)},onMouseLeave:()=>{c(!1)},children:r.NodeId&&s?(0,Le.jsx)(_l,{to:(0,Ta.ax)(Ta.ZP.node,{id:r.NodeId,activeTab:vu},{pdiskId:null!==(t=r.PDiskId)&&void 0!==t?t:null===(n=r.PDisk)||void 0===n?void 0:n.PDiskId,vdiskId:(0,ks.a2)(r.VDiskId)}),className:aS("content"),children:(0,Le.jsx)(Jw,{diskAllocatedPercent:r.AllocatedPercent,severity:r.Severity,compact:o})}):(0,Le.jsx)(Jw,{diskAllocatedPercent:r.AllocatedPercent,severity:r.Severity,compact:o})})]})};function lS(e){let{data:t,nodes:n,compact:r,className:i,stackClassName:o}=e;const a=null===t||void 0===t?void 0:t.Donors,s=a&&a.length>0?(0,Le.jsxs)(Xw,{className:o,children:[(0,Le.jsx)(sS,{data:t,nodes:n,compact:r}),a.map((e=>{const t=Sh(e);return(0,Le.jsx)(sS,{data:e,nodes:n,compact:r},(0,ks.a2)(t?e.VDiskId:e))}))]}):(0,Le.jsx)(sS,{data:t,nodes:n,compact:r});return(0,Le.jsx)("div",{className:i,children:s})}const cS=Me("global-storage-groups"),uS="storageGroupsColumnsWidth",dS="MediaType",hS="Erasure",pS="GroupId",fS="Used",mS="Limit",gS="Usage",vS="UsedSpaceFlag",yS="Read",bS="Write",xS="VDisks",wS="Degraded",SS={name:"PoolName",header:"Pool Name",width:250,render:e=>{var t;let{row:n}=e;const r=null===(t=n.PoolName)||void 0===t?void 0:t.split("/");return r&&(0,Le.jsx)(hu,{wrapperClassName:cS("pool-name-wrapper"),content:n.PoolName,placement:["right"],behavior:di.Immediate,children:r[r.length-1]})},align:Hc.ZP.LEFT},_S={name:dS,header:"Type",width:100,resizeMinWidth:100,align:Hc.ZP.LEFT,render:e=>{let{row:t}=e;return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(ft,{children:t.MediaType||"\u2014"}),"\xa0",t.Encryption&&(0,Le.jsx)(fi,{content:Zw("encrypted"),placement:"right",behavior:di.Immediate,children:(0,Le.jsx)(ft,{children:(0,Le.jsx)(we.J,{data:Kw,size:18})})})]})},sortable:!1},CS={name:hS,header:"Erasure",width:100,render:e=>{let{row:t}=e;return t.ErasureSpecies?t.ErasureSpecies:"-"},align:Hc.ZP.LEFT,sortable:!1},ES={name:wS,header:"Degraded",width:100,render:e=>{let{row:t}=e;return t.Degraded?(0,Le.jsxs)(ft,{theme:Cw(t),children:["Degraded: ",t.Degraded]}):"-"},align:Hc.ZP.LEFT,defaultOrder:Hc.ZP.DESCENDING},TS={name:gS,header:"Usage",width:100,resizeMinWidth:70,render:e=>{let{row:t}=e;return t.Limit?(0,Le.jsx)(Uu,{value:t.Usage,theme:Ew(t.Usage)}):"-"},sortAccessor:e=>e.Limit?e.Usage:null,align:Hc.ZP.LEFT,sortable:!1},OS={name:pS,header:"Group ID",width:130,render:e=>{let{row:t}=e;return(0,Le.jsx)("span",{className:cS("group-id"),children:t.GroupID})},sortAccessor:e=>Number(e.GroupID),align:Hc.ZP.RIGHT,sortable:!1},NS={name:fS,header:"Used",width:100,render:e=>{let{row:t}=e;return(0,Ou.Uz)(t.Used,!0)},align:Hc.ZP.RIGHT,sortable:!1},kS={name:mS,header:"Limit",width:100,render:e=>{let{row:t}=e;return(0,Ou.Uz)(t.Limit)},align:Hc.ZP.RIGHT,sortable:!1},jS={name:vS,header:"Space",width:110,render:e=>{let{row:t}=e;const n=t.UsedSpaceFlag;let r=al.K.Red;return n<100?r=al.K.Green:n<1e4?r=al.K.Yellow:n<1e6&&(r=al.K.Orange),(0,Le.jsx)(Il,{status:r})},align:Hc.ZP.CENTER},IS={name:yS,header:"Read",width:100,render:e=>{let{row:t}=e;return t.Read?(0,Ou.Qt)(t.Read):"-"},align:Hc.ZP.RIGHT},PS={name:bS,header:"Write",width:100,render:e=>{let{row:t}=e;return t.Write?(0,Ou.Qt)(t.Write):"-"},align:Hc.ZP.RIGHT},DS=e=>({name:xS,className:cS("vdisks-column"),header:"VDisks",render:t=>{var n;let{row:r}=t;return(0,Le.jsx)("div",{className:cS("vdisks-wrapper"),children:null===(n=r.VDisks)||void 0===n?void 0:n.map((t=>(0,Le.jsx)(lS,{data:t,nodes:e,className:cS("vdisks-item")},(0,ks.a2)(t.VDiskId))))})},align:Hc.ZP.CENTER,width:900,resizeable:!1}),AS=()=>[OS,_S,CS,TS,NS,kS],RS=e=>[SS,_S,CS,ES,OS,TS,NS,DS(e)],MS=(e,t)=>{const n=(e=>[SS,_S,CS,ES,TS,OS,NS,kS,jS,IS,PS,DS(e)])(e),r=((e,t)=>t===ih.space?e.filter((e=>e.name!==wS)):t===ih.missing?e.filter((e=>e.name!==vS)):e.filter((e=>e.name!==wS&&e.name!==vS)))(n,t);return r.map((e=>{return{...e,sortable:(t=e.name,Object.values(sh).includes(t))};var t}))};function LS(e){let{data:t,tableSettings:n,visibleEntities:r,nodes:i,onShowAll:o,sort:s,handleSort:l}=e;const c=a.useMemo((()=>MS(i,r)),[i,r]);return t.length||r===ih.all?(0,Le.jsx)(qc,{columnsWidthLSKey:uS,data:t,columns:c,settings:n,emptyDataMessage:Zw("empty.default"),sortOrder:s,onSort:l},r):(0,Le.jsx)(Yw,{onShowAll:o,visibleEntities:r})}const FS=JSON.parse('{"empty.default":"No such nodes","empty.out_of_space":"No nodes with out of space errors","empty.degraded":"No degraded nodes","empty.small_uptime":"No nodes with uptime < 1h","empty.several_filters":"No nodes match current filters combination","show_all":"Show all nodes"}'),zS=JSON.parse('{"empty.default":"\u041d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432","empty.out_of_space":"\u041d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u043e","empty.degraded":"\u041d\u0435\u0442 \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0445 \u0443\u0437\u043b\u043e\u0432","empty.small_uptime":"\u041d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432 \u0441 uptime < 1h","empty.several_filters":"\u041d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432, \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u043e\u0434 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b","show_all":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u0443\u0437\u043b\u044b"}'),BS=(0,We.wZ)("ydb-storage-nodes",{ru:zS,en:FS}),US=e=>{let t,{visibleEntities:n,nodesUptimeFilter:r,onShowAll:i}=e;return n===ih.space&&(t=BS("empty.out_of_space")),n===ih.missing&&(t=BS("empty.degraded")),r===Na.Uu.SmallUptime&&(t=BS("empty.small_uptime")),n!==ih.all&&r!==Na.Uu.All&&(t=BS("empty.several_filters")),t?(0,Le.jsx)(Gw,{title:t,showAll:BS("show_all"),onShowAll:i}):null},HS=Me("pdisk-storage"),VS=e=>{let{nodeId:t,data:n={},vDisks:r}=e;const[i,o]=a.useState(!1),s=a.useRef(null);return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(rS,{data:n,anchorRef:s,open:i}),(0,Le.jsxs)("div",{className:HS(),ref:s,children:[null!==r&&void 0!==r&&r.length?(0,Le.jsx)("div",{className:HS("vdisks"),children:r.map((e=>(0,Le.jsx)("div",{className:HS("vdisks-item"),style:{flexGrow:Number(e.AllocatedSize)||1},children:(0,Le.jsx)(lS,{data:e,compact:!0,stackClassName:HS("donors-stack")})},(0,ks.a2)(e.VDiskId))))}):null,(0,Le.jsxs)(_l,{to:(0,Ta.ax)(Ta.ZP.node,{id:t,activeTab:vu},{pdiskId:n.PDiskId||""}),className:HS("content"),onMouseEnter:()=>{o(!0)},onMouseLeave:()=>{o(!1)},children:[(0,Le.jsx)(Jw,{diskAllocatedPercent:n.AllocatedPercent,severity:n.Severity}),(0,Le.jsx)("div",{className:HS("media-type"),children:n.Type})]})]})]})},GS=Me("global-storage-nodes"),WS=e=>GS("node",{unavailable:(0,Na.TA)(e)}),qS="storageNodesColumnsWidth",ZS="NodeId",YS="Host",KS="DC",QS="Rack",XS="Uptime",$S="PDisks",JS="Missing",e_=(e,t)=>{const n=(e=>{const t=null===e||void 0===e?void 0:e.getNodeRef;return[{name:ZS,header:"Node ID",width:100,align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return t.NodeId}},{name:YS,header:"Host",width:350,render:e=>{let{row:n}=e;return(0,Le.jsx)(wu,{node:n,getNodeRef:t})},align:Hc.ZP.LEFT},{name:KS,header:"DC",width:100,render:e=>{let{row:t}=e;return t.DC||Lo.jX},align:Hc.ZP.LEFT},{name:QS,header:"Rack",width:100,render:e=>{let{row:t}=e;return t.Rack||"\u2014"},align:Hc.ZP.LEFT},{name:XS,header:"Uptime",width:130,sortAccessor:e=>{let{StartTime:t}=e;return t?-t:0},align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return t.Uptime}},{name:JS,header:"Missing",width:100,align:Hc.ZP.CENTER,defaultOrder:Hc.ZP.DESCENDING,render:e=>{let{row:t}=e;return t.Missing}},{name:$S,className:GS("pdisks-column"),header:"PDisks",render:e=>{var t;let{row:n}=e;return(0,Le.jsx)("div",{className:GS("pdisks-wrapper"),children:null===(t=n.PDisks)||void 0===t?void 0:t.map((e=>{var t;const r=null===(t=n.VDisks)||void 0===t?void 0:t.filter((t=>t.PDiskId===e.PDiskId));return(0,Le.jsx)("div",{className:GS("pdisks-item"),children:(0,Le.jsx)(VS,{data:e,nodeId:n.NodeId,vDisks:r})},e.PDiskId)}))})},align:Hc.ZP.CENTER,sortable:!1,width:900,resizeable:!1}]})(e),r=n.map((e=>({...e,sortable:(0,Na.oh)(e.name)})));return t!==ih.missing?r.filter((e=>e.name!==JS)):r};function t_(e){let{data:t,tableSettings:n,visibleEntities:r,onShowAll:i,nodesUptimeFilter:o,additionalNodesProps:a,sort:s,handleSort:l}=e;const c=e_(a,r);return t.length||r===ih.all&&o===Na.Uu.All?(0,Le.jsx)(qc,{columnsWidthLSKey:qS,data:t,columns:c,settings:{...n,dynamicRenderType:"variable"},emptyDataMessage:BS("empty.default"),rowClassName:WS,sortOrder:s,onSort:l},r):(0,Le.jsx)(US,{visibleEntities:r,nodesUptimeFilter:o,onShowAll:i})}const n_=Bl({encode:Wl.encode,decode:e=>null===e||void 0===e?e:Array.isArray(e)?e.filter(Boolean):e?[e]:[]},[]),r_=e=>{var t;let{additionalNodesProps:n,tenant:r,nodeId:i}=e;const{autorefresh:o}=Do((e=>e.schema)),[s,l]=mc({type:Gl,visible:Gl,search:Gl,uptimeFilter:Gl,usageFilter:n_}),c=Uh.parse(s.type),u=Bh.parse(s.visible),d=null!==(t=s.search)&&void 0!==t?t:"",h=Na.U8.parse(s.uptimeFilter),p=s.usageFilter,f=Do(Zs.d),[m,g]=a.useState({sortOrder:void 0,sortValue:void 0}),v=m.sortValue?m:Ow,[y,b]=a.useState({sortOrder:void 0,sortValue:void 0}),x=y.sortOrder?y:function(e){return e===ih.missing?kw:e===ih.space?jw:Nw}(u),w=void 0!==i,S=w?oh.groups:c,_=(e=>{let{filter:t,problemFilter:n,nodesUptimeFilter:r,sortOrder:i,sortValue:o}=e;const[s]=Mo(Lo.ET);return a.useMemo((()=>{if(s){const e=(0,Na.eV)(n),a=(0,Na.RW)(r);return{filter:t,problems_only:e,uptime:a,sortOrder:i,sortValue:o}}}),[s,t,n,r,i,o])})({filter:d,nodesUptimeFilter:h,...v}),C=(e=>{let{filter:t,sortOrder:n,sortValue:r}=e;const[i]=Mo(Lo.ET);return a.useMemo((()=>{if(i)return{version:ka.v2,filter:t,sortOrder:n,sortValue:r}}),[i,t,n,r])})({filter:d,...x}),E=r?o:Lo.ME,T=Fh.useGetStorageNodesInfoQuery({tenant:r,visibleEntities:u,..._},{skip:S!==oh.nodes,pollingInterval:E}),O=Fh.useGetStorageGroupsInfoQuery({tenant:r,visibleEntities:u,nodeId:i,...C},{skip:S!==oh.groups,pollingInterval:E}),{currentData:N,isFetching:k,error:j}=S===oh.nodes?T:O,{currentData:{nodes:I=[]}={}}=T,{currentData:{groups:P=[]}={}}=O,{nodes:D,groups:A,...R}=null!==N&&void 0!==N?N:{found:0,total:0},M=void 0===N&&k,L=a.useMemo((()=>function(e,t,n){let r=e||[];return r=ch(r,t),r=cu(r,n),r}(I,d,h)),[d,I,h]),F=a.useMemo((()=>function(e,t,n){let r=e||[];return r=uh(r,t),r=dh(r,n),r}(P,d,p)),[d,P,p]),z=a.useMemo((()=>function(e){const t={};return null===e||void 0===e||e.forEach((e=>{const n=ah(e,5);Object.prototype.hasOwnProperty.call(t,n)||(t[n]=0),t[n]+=1})),Object.entries(t).map((e=>{let[t,n]=e;return{threshold:Number(t),count:n}})).sort(((e,t)=>t.threshold-e.threshold))}(P)),[P]),[B,U]=Bo(v,(e=>g(e))),[H,V]=Bo(x,(e=>b(e))),G=e=>{l({usageFilter:e.length?e:void 0},"replaceIn")},W=e=>{l({search:e||void 0},"replaceIn")},q=e=>{l({visible:e},"replaceIn")},Z=e=>{l({type:e},"replaceIn")},Y=e=>{l({uptimeFilter:e},"replaceIn")},K=()=>{q(ih.all),Y(Na.Uu.All)};return j?403===j.status?(0,Le.jsx)(Fc,{position:"left"}):(0,Le.jsx)(zc,{error:j}):(0,Le.jsxs)($c,{children:[(0,Le.jsx)($c.Controls,{children:(0,Le.jsx)(Bw,{searchValue:d,handleSearchValueChange:W,withTypeSelector:!w,storageType:S,handleStorageTypeChange:Z,visibleEntities:u,handleVisibleEntitiesChange:q,nodesUptimeFilter:h,handleNodesUptimeFilterChange:Y,groupsUsageFilter:p,groupsUsageFilterOptions:z,handleGroupsUsageFilterChange:G,entitiesCountCurrent:S===oh.groups?F.length:L.length,entitiesCountTotal:R.total,entitiesLoading:M})}),(0,Le.jsx)($c.Table,{loading:M,className:zw("table"),children:(0,Le.jsxs)(a.Fragment,{children:[S===oh.groups&&(0,Le.jsx)(LS,{visibleEntities:u,data:F,tableSettings:Lo.LE,nodes:f,onShowAll:()=>q(ih.all),sort:H,handleSort:V},"groups"),S===oh.nodes&&(0,Le.jsx)(t_,{visibleEntities:u,nodesUptimeFilter:h,data:L,tableSettings:Lo.LE,onShowAll:K,additionalNodesProps:n,sort:B,handleSort:U},"nodes")]})})]})},i_=(e,t)=>"getStorageGroups|offset".concat(t,"|limit").concat(e),o_=async e=>{let{limit:t,offset:n,...r}=e;const i=await window.api.getStorageInfo({version:ka.v2,limit:t,offset:n,...r},{concurrentId:i_(t,n)}),o=Lh(i);return{data:o.groups||[],found:o.found||0,total:o.total||0}},a_=e=>{let{searchValue:t,visibleEntities:n,tenant:r,nodeId:i,nodesMap:o,onShowAll:s,parentContainer:l,renderControls:c,renderErrorMessage:u}=e;const d=a.useMemo((()=>[t,n,r,i]),[t,n,r,i]),h=a.useCallback((async function(e,o){let{sortOrder:a,columnId:s}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return await o_({limit:e,offset:o,filter:t,visibleEntities:n,tenant:r,nodeId:i,sortOrder:a,sortValue:s})}),[i,t,r,n]),p=a.useMemo((()=>MS(o,n)),[o,n]);return(0,Le.jsx)($d,{columnsWidthLSKey:uS,parentContainer:l,columns:p,fetchData:h,limit:50,renderControls:c,renderErrorMessage:u,renderEmptyDataMessage:()=>n!==ih.all?(0,Le.jsx)(Yw,{onShowAll:s,visibleEntities:n}):Zw("empty.default"),dependencyArray:d})},s_=(e,t)=>"getStorageNodes|offset".concat(t,"|limit").concat(e),l_=async e=>{let{type:t="static",storage:n=!0,limit:r,offset:i,...o}=e;const a=await window.api.getNodes({type:t,storage:n,limit:r,offset:i,...o},{concurrentId:s_(r,i)}),s=Mh(a);return{data:s.nodes||[],found:s.found||0,total:s.total||0}},c_=e=>{let{searchValue:t,visibleEntities:n,nodesUptimeFilter:r,tenant:i,additionalNodesProps:o,onShowAll:s,parentContainer:l,renderControls:c,renderErrorMessage:u}=e;const d=a.useMemo((()=>[t,n,r,i]),[t,n,r,i]),h=a.useCallback((async function(e,o){let{sortOrder:a,columnId:s}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return await l_({limit:e,offset:o,filter:t,uptime:(0,Na.RW)(r),visibleEntities:n,tenant:i,sortOrder:a,sortValue:s})}),[r,t,i,n]),p=a.useMemo((()=>e_(o,n)),[o,n]);return(0,Le.jsx)($d,{columnsWidthLSKey:qS,parentContainer:l,columns:p,fetchData:h,rowHeight:50,limit:50,renderControls:c,renderErrorMessage:u,renderEmptyDataMessage:()=>n!==ih.all||r!==Na.Uu.All?(0,Le.jsx)(US,{onShowAll:s,nodesUptimeFilter:r,visibleEntities:n}):BS("empty.default"),getRowClassName:WS,dependencyArray:d})},u_=e=>{var t;let{tenant:n,nodeId:r,parentContainer:i,additionalNodesProps:o}=e;const[a,s]=mc({type:Gl,visible:Gl,search:Gl,uptimeFilter:Gl}),l=Uh.parse(a.type),c=Bh.parse(a.visible),u=null!==(t=a.search)&&void 0!==t?t:"",d=Na.U8.parse(a.uptimeFilter),h=e=>{s({search:e||void 0},"replaceIn")},p=e=>{s({visible:e},"replaceIn")},f=e=>{s({type:e},"replaceIn")},m=e=>{s({uptimeFilter:e},"replaceIn")},g=Do(Zs.d),v=()=>{s({visible:ih.all,uptimeFilter:Na.Uu.All},"replaceIn")},y=e=>{let{totalEntities:t,foundEntities:n,inited:i}=e;return(0,Le.jsx)(Bw,{searchValue:u,handleSearchValueChange:h,withTypeSelector:!r,storageType:l,handleStorageTypeChange:f,visibleEntities:c,handleVisibleEntitiesChange:p,nodesUptimeFilter:d,handleNodesUptimeFilterChange:m,withGroupsUsageFilter:!1,entitiesCountCurrent:n,entitiesCountTotal:t,entitiesLoading:!i})},b=e=>403===e.status?(0,Le.jsx)(Fc,{position:"left"}):(0,Le.jsx)(zc,{error:e});return l===oh.nodes?(0,Le.jsx)(c_,{searchValue:u,visibleEntities:c,nodesUptimeFilter:d,tenant:n,additionalNodesProps:o,onShowAll:v,parentContainer:i,renderControls:y,renderErrorMessage:b}):(0,Le.jsx)(a_,{searchValue:u,visibleEntities:c,tenant:n,nodeId:r,nodesMap:g,onShowAll:()=>{p(ih.all)},parentContainer:i,renderControls:y,renderErrorMessage:b})},d_=e=>{let{parentContainer:t,...n}=e;const[r]=Mo(Lo.ET);return r?(0,Le.jsx)(u_,{parentContainer:t,...n}):(0,Le.jsx)(r_,{...n})};var h_=n(27102),p_=n(36313),f_=n(43680),m_=n.n(f_),g_=n(53809);const v_=(0,p_.P1)((e=>e),(e=>g_.Xv.endpoints.getTenantsInfo.select({clusterName:e}))),y_=(0,p_.P1)((e=>e),((e,t)=>v_(t)),((e,t)=>{var n;return null!==(n=t(e).data)&&void 0!==n?n:[]})),b_=e=>e.tenants.searchValue,x_=(0,p_.P1)([y_,Ro.qz,b_],((e,t,n)=>{let r=((e,t)=>t===Ro.pu.ALL?e:e.filter((e=>e.Overall&&e.Overall!==al.K.Green)))(e,t);return r=((e,t)=>e.filter((e=>{const n=new RegExp(m_()(t),"i");return n.test(e.Name||"")||n.test(e.controlPlaneName)})))(r,n),r})),w_=Me("tenants"),S_=e=>{let{additionalTenantsProps:t}=e;const n=Ao(),{currentData:r,isFetching:i,error:o}=g_.Xv.useGetTenantsInfoQuery({clusterName:h_.qw},{pollingInterval:Lo.ME}),s=i&&void 0===r,l=null!==r&&void 0!==r?r:[],c=Do(b_),u=Do((e=>x_(e,h_.qw))),d=Do(Ro.qz),h=e=>{n((0,Ro.M6)(e))},p=e=>{n((0,g_.gI)(e))};return o?(0,Le.jsx)(zc,{error:o}):(0,Le.jsxs)($c,{children:[(0,Le.jsx)($c.Controls,{children:(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(Yc,{value:c,onChange:p,placeholder:"Database name",className:w_("search")}),(0,Le.jsx)(Bc,{value:d,onChange:h}),(0,Le.jsx)(yc,{total:l.length,current:(null===u||void 0===u?void 0:u.length)||0,label:"Databases",loading:s})]})}),(0,Le.jsx)($c.Table,{loading:s,children:(()=>{const e=e=>{var n,r;const i=null!==(n=e.MonitoringEndpoint)&&void 0!==n?n:e.backend;return null===t||void 0===t||null===(r=t.prepareTenantBackend)||void 0===r?void 0:r.call(t,i)},n=[{name:"Name",header:"Database",render:n=>{var r;let{row:i}=n;const o=e(i),a=Boolean(o);return(0,Le.jsx)(Il,{externalLink:a,className:w_("name"),name:i.Name||"unknown database",withLeftTrim:!0,status:i.Overall,hasClipboardButton:!0,path:fs({name:i.Name,backend:o}),additionalControls:(0,Le.jsx)("span",{className:w_("monitoring-button"),children:null===t||void 0===t||null===(r=t.getMonitoringLink)||void 0===r?void 0:r.call(t,i.Name,i.Type)})})},width:440,sortable:!0,defaultOrder:Hc.ZP.DESCENDING},{name:"controlPlaneName",header:"Name",render:e=>{let{row:t}=e;return t.controlPlaneName},width:200,sortable:!0,defaultOrder:Hc.ZP.DESCENDING},{name:"Type",width:200,resizeMinWidth:150,render:e=>{let{row:t}=e;return"Serverless"!==t.Type?t.Type:(0,Le.jsxs)("div",{className:w_("type"),children:[(0,Le.jsx)("span",{className:w_("type-value"),children:t.Type}),(0,Le.jsx)(Ie.z,{className:w_("type-button"),onClick:()=>p(t.sharedTenantName||""),children:"Show shared"})]})}},{name:"State",width:90,render:e=>{let{row:t}=e;return t.State?t.State.toLowerCase():"\u2014"},customStyle:()=>({textTransform:"capitalize"})},{name:"cpu",header:"CPU",width:80,render:e=>{let{row:t}=e;return t.cpu&&t.cpu>1e4?(0,ks.LO)(t.cpu):"\u2014"},align:Hc.ZP.RIGHT,defaultOrder:Hc.ZP.DESCENDING},{name:"memory",header:"Memory",width:120,render:e=>{let{row:t}=e;return t.memory?(0,ks.SX)(t.memory):"\u2014"},align:Hc.ZP.RIGHT,defaultOrder:Hc.ZP.DESCENDING},{name:"storage",header:"Storage",width:120,render:e=>{let{row:t}=e;return t.storage?(0,ks.SX)(t.storage):"\u2014"},align:Hc.ZP.RIGHT,defaultOrder:Hc.ZP.DESCENDING},{name:"nodesCount",header:"Nodes",width:100,render:e=>{let{row:t}=e;return t.nodesCount?(0,ks.uf)(t.nodesCount):"\u2014"},align:Hc.ZP.RIGHT,defaultOrder:Hc.ZP.DESCENDING},{name:"groupsCount",header:"Groups",width:100,render:e=>{let{row:t}=e;return t.groupsCount?(0,ks.uf)(t.groupsCount):"\u2014"},align:Hc.ZP.RIGHT,defaultOrder:Hc.ZP.DESCENDING},{name:"PoolStats",header:"Pools",width:100,resizeMinWidth:60,sortAccessor:e=>{let{PoolStats:t=[]}=e;return t.reduce(((e,t)=>e+(t.Usage||0)),0)},defaultOrder:Hc.ZP.DESCENDING,align:Hc.ZP.LEFT,render:e=>{let{row:t}=e;return(0,Le.jsx)(Tu,{pools:t.PoolStats})}},{name:"Tablets",header:"Tablets States",sortable:!1,width:500,resizeMinWidth:500,render:t=>{let{row:n}=t;const r=e(n);return n.Tablets?(0,Le.jsx)(zu,{path:n.Name,tablets:n.Tablets,nodeIds:n.NodeIds||[],backend:r}):"\u2014"}}];return 0===u.length&&d!==Ro.pu.ALL?(0,Le.jsx)(Ge,{name:"thumbsUp",width:"200"}):(0,Le.jsx)(qc,{columnsWidthLSKey:"databasesTableColumnsWidth",data:u,columns:n,settings:Lo.LE,emptyDataMessage:"No such tenants"})})()})]})};function __(e){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 17 17",width:"16",height:"16",fill:"currentColor"},e),a.createElement("path",{d:"M4 7h9v3H4z"}))}function C_(e){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 12 10",width:"16",height:"16",fill:"currentColor"},e),a.createElement("path",{d:"M.49 5.385l1.644-1.644 4.385 4.385L4.874 9.77.49 5.385zm4.384 1.096L10.356 1 12 2.644 6.519 8.126 4.874 6.48v.001z"}))}const E_=(0,le.Ge)("checkbox"),T_=a.forwardRef((function(e,t){const{size:n="m",indeterminate:r,disabled:i=!1,content:o,children:s,title:l,style:c,className:u,qa:d}=e,{checked:h,inputProps:p}=bo(e),f=o||s,m=a.createElement("span",{className:E_("indicator")},a.createElement("span",{className:E_("icon"),"aria-hidden":!0},r?a.createElement(__,{className:E_("icon-svg",{type:"dash"})}):a.createElement(C_,{className:E_("icon-svg",{type:"tick"})})),a.createElement("input",Object.assign({},p,{className:E_("control")})),a.createElement("span",{className:E_("outline")}));return a.createElement(wo,{ref:t,title:l,style:c,size:n,disabled:i,className:E_({size:n,disabled:i,indeterminate:r,checked:h},u),qa:d,control:m},f)})),O_=Me("ydb-loader"),N_=e=>{let{size:t="m",className:n}=e;return(0,Le.jsx)("div",{className:O_(null,n),children:(0,Le.jsx)(Di,{size:t})})},k_=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M3 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM9.5 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z",clipRule:"evenodd"})),j_=(0,le.Ge)("dropdown-menu"),I_=a.createContext({toggle(){},data:void 0});I_.displayName="DropdownMenu.Context";const P_=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M10.53 2.97a.75.75 0 0 1 0 1.06L6.56 8l3.97 3.97a.75.75 0 1 1-1.06 1.06l-4.5-4.5a.75.75 0 0 1 0-1.06l4.5-4.5a.75.75 0 0 1 1.06 0Z",clipRule:"evenodd"})),D_=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0Z",clipRule:"evenodd"})),A_=(0,le.Ge)("menu"),R_=a.forwardRef((function(e,t){let{label:n,children:r,style:i,className:o,qa:s}=e;const l=ue();return a.createElement("li",{ref:t,className:A_("list-group-item")},a.createElement("div",{style:i,className:A_("group",o),"data-qa":s},n&&a.createElement("div",{id:l,className:A_("group-label")},n),a.createElement("ul",{role:"group","aria-labelledby":l,className:A_("group-list")},r)))})),M_=(0,le.Ge)("menu"),L_=a.forwardRef((function(e,t){let{icon:n,iconStart:r=n,iconEnd:i,title:o,disabled:s,active:l,selected:c,href:u,target:d,rel:h,onClick:p,style:f,className:m,theme:g,extraProps:v,children:y,qa:b}=e;const{onKeyDown:x}=(0,ci.b)(p),w=a.useCallback((e=>{Yr.P.publish({componentId:"MenuItem",eventId:"click",domEvent:e})}),[]),S={role:"menuitem",onKeyDown:p&&!s?x:void 0},_={title:o,onClick:s?void 0:p,onClickCapture:s?void 0:w,style:f,tabIndex:s?-1:0,className:M_("item",{disabled:s,active:l,selected:c,theme:g,interactive:Boolean(p)},m),"data-qa":b},C=[r&&a.createElement("div",{key:"icon-start",className:M_("item-icon")},r),a.createElement("div",{key:"content",className:M_("item-content")},y),i&&a.createElement("div",{key:"icon-end",className:M_("item-icon-end")},i)];let E;return E=u?a.createElement("a",Object.assign({},S,v,_,{href:u,target:d,rel:h}),C):a.createElement("div",Object.assign({},S,v,_),C),a.createElement("li",{ref:t,className:M_("list-item")},E)})),F_=(0,le.Ge)("menu"),z_=a.forwardRef((function(e,t){let{size:n="m",children:r,style:i,className:o,qa:s}=e;return a.createElement("ul",{ref:t,role:"menu",style:i,className:F_({size:n},o),"data-qa":s},r)}));function B_(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3?arguments[3]:void 0;const i=(e.length+t-n%e.length)%e.length;return r&&r(e[i])?B_(e,i,1,r):i}function U_(e,t){let n=arguments.length>3?arguments[3]:void 0;const r=(t+(arguments.length>2&&void 0!==arguments[2]?arguments[2]:1))%e.length;return n&&n(e[r])?U_(e,r,1,n):r}z_.Item=L_,z_.Group=R_;const H_=[],V_=a.createContext({activeMenuPath:H_,setActiveMenuPath:()=>{},anchorRef:{current:null}}),G_=e=>{let{anchorRef:t,children:n,disabled:r}=e;const[i,o]=a.useState(H_);a.useEffect((()=>{r&&o(H_)}),[r]);const s=a.useMemo((()=>({activeMenuPath:i,setActiveMenuPath:o,anchorRef:t})),[i,t]);return a.createElement(V_.Provider,{value:s},n)},W_={text:"",action:()=>{},path:[]};function q_(e){return e===W_}function Z_(e){return e.disabled||q_(e)}function Y_(e){var t;return null!==(t=null===e||void 0===e?void 0:e.join(" "))&&void 0!==t?t:""}const K_=e=>{let{items:t,open:n,anchorRef:r,onClose:i,size:o,menuProps:s,children:l,popupProps:c,path:u=[]}=e;const{toggle:d,data:h}=a.useContext(I_),{activeMenuPath:p,setActiveMenuPath:f,anchorRef:m}=a.useContext(V_),g=u.length>0,v=a.useCallback((()=>{f(u.slice(0,u.length-1))}),[f,u]),y=a.useCallback((e=>{var t;f(u),null===(t=null===c||void 0===c?void 0:c.onMouseEnter)||void 0===t||t.call(c,e)}),[u,c,f]),b=a.useCallback((e=>{var t;v(),null===(t=null===c||void 0===c?void 0:c.onMouseLeave)||void 0===t||t.call(c,e)}),[v,c]),x=a.useCallback(((e,t)=>{var n;e.items&&e.path?f(e.path):(null===(n=e.action)||void 0===n||n.call(e,t,h),d(!1))}),[h,f,d]),w=a.useCallback(((e,n)=>{switch(n.key){case"Escape":return g&&(n.stopPropagation(),null===v||void 0===v||v()),!1;case"Enter":case" ":{const r=t[e],i=null===r||void 0===r?void 0:r.items;return(g||i)&&(n.stopPropagation(),n.preventDefault()),r&&x(r,n),!1}}return!0}),[v,x,g,t]),S=n&&Y_(u)===Y_(p),{activeItemIndex:_,setActiveItemIndex:C,reset:E}=function(e){let{items:t,skip:n,pageSize:r,processHomeKey:i=!0,processEndKey:o=!0,anchorRef:s,disabled:l=!1,initialValue:c=-1,onAnchorKeyDown:u}=e;const[d,h]=a.useState(c),p=a.useCallback((()=>{h(c)}),[c]);return a.useEffect((()=>{t&&p()}),[t,p]),a.useLayoutEffect((()=>{if(l)return;if(!t.some((e=>!(null===n||void 0===n?void 0:n(e)))))return;const e=null===s||void 0===s?void 0:s.current;if(!e)return;const a=e=>{if(!1!==(null===u||void 0===u?void 0:u(d,e)))switch(e.key){case"ArrowDown":e.preventDefault(),h((e=>U_(t,e,1,n)));break;case"ArrowUp":e.preventDefault(),h((e=>B_(t,e,1,n)));break;case"PageDown":if(!r)return;e.preventDefault(),h((e=>U_(t,e,r,n)));break;case"PageUp":if(!r)return;e.preventDefault(),h((e=>B_(t,e,r,n)));break;case"Home":if(!i)return;e.preventDefault(),h((e=>B_(t,e,e,n)));break;case"End":if(!o)return;e.preventDefault(),h((e=>B_(t,e,e+1,n)))}};return e.addEventListener("keydown",a),()=>{e.removeEventListener("keydown",a)}}),[d,s,l,t,u,r,o,i,n]),{activeItemIndex:d,setActiveItemIndex:h,reset:p}}({items:t,skip:Z_,anchorRef:m,onAnchorKeyDown:w,disabled:!S,initialValue:g?0:-1});return a.useEffect((()=>{n||E()}),[n,E]),a.createElement(ti,Object.assign({open:n,anchorRef:r,onClose:i},c,{onMouseEnter:y,onMouseLeave:b}),l||a.createElement(z_,Object.assign({className:j_("menu"),size:o},s),t.map(((e,t)=>{var r;const o=S&&_===t,s=n&&!o&&0!==p.length&&Y_(e.path)===Y_(p.slice(0,e.path.length)),l=Object.assign(Object.assign({},e.extraProps),{onMouseEnter:()=>C(t)});return a.createElement($_,Object.assign({key:t,className:j_("menu-item",{separator:q_(e),"active-parent":s,"with-submenu":Boolean(null===(r=e.items)||void 0===r?void 0:r.length)},e.className),selected:o,popupProps:c,closeMenu:i},e,{extraProps:l}))}))))};function Q_(e,t){var n;return null!==(n=null===e||void 0===e?void 0:e.every(((e,n)=>e===(null===t||void 0===t?void 0:t[n]))))&&void 0!==n&&n}function X_(e){let{items:t,path:n}=e;const{activeMenuPath:r,setActiveMenuPath:i}=a.useContext(V_),o=Boolean(n)&&Boolean(null===t||void 0===t?void 0:t.length),s=a.useCallback((()=>{n&&i(n.slice(0,n.length-1))}),[n,i]),l=a.useCallback((()=>{n&&i(n)}),[n,i]);return{hasSubmenu:o,isSubmenuOpen:Q_(n,r),openSubmenu:l,closeSubmenu:s}}const $_=e=>{var{text:t,action:n,items:r,popupProps:i,closeMenu:o,children:s,path:l}=e,c=(0,nt._T)(e,["text","action","items","popupProps","closeMenu","children","path"]);const{toggle:u,data:d}=a.useContext(I_),h=a.useRef(null),p=ir(),{hasSubmenu:f,isSubmenuOpen:m,closeSubmenu:g,openSubmenu:v}=X_({items:r,path:l}),y=a.useCallback((()=>{const e=()=>{o?o():u(!1)};f?(g(),requestAnimationFrame(e)):e()}),[o,g,f,u]),b=a.useCallback((e=>{f||(null===n||void 0===n||n(e,d),y())}),[n,d,y,f]),x=a.useMemo((()=>Object.assign(Object.assign({},c.extraProps),{onMouseEnter:e=>{var t,n;null===(n=null===(t=c.extraProps)||void 0===t?void 0:t.onMouseEnter)||void 0===n||n.call(t,e),f&&v()},onMouseLeave:e=>{var t,n;null===(n=null===(t=c.extraProps)||void 0===t?void 0:t.onMouseLeave)||void 0===n||n.call(t,e),f&&g()}})),[c.extraProps,g,f,v]),w=a.useMemo((()=>"rtl"===p?["left-start","right-start"]:["right-start","left-start"]),[p]),S=a.useMemo((()=>f?a.createElement(we.J,{data:"rtl"===p?P_:D_,size:10,className:j_("sub-menu-arrow")}):c.iconEnd),[f,p,c.iconEnd]);return a.createElement(a.Fragment,null,a.createElement(z_.Item,Object.assign({ref:h},c,{extraProps:x,onClick:b,iconEnd:S}),t||s),f&&r&&a.createElement(K_,{popupProps:Object.assign(Object.assign({},i),{className:j_("sub-menu",null===i||void 0===i?void 0:i.className),placement:w}),items:r,path:l,open:m,anchorRef:h,onClose:y}))},J_=e=>"function"===typeof e;function eC(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0!==e&&void 0!==t;const i=function(e,t){const[n,r]=a.useState(e);return[n,a.useCallback((e=>{J_(e)?r((n=>{const r=e(n);return null===t||void 0===t||t(r),r})):(null===t||void 0===t||t(e),r(e))}),[t])]}(e||n,t);return r?[e,t]:i}function tC(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const r=[];let i=!1,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;for(const a of e)if(Array.isArray(a)){const e=tC(a,t,n,o);0!==r.length&&r.push(t),r.push(...e),o+=e.length,i=!0}else{if(a.hidden)continue;i&&r.push(t);const e=Object.assign(Object.assign({},a),{path:[...n,o++]});a.items&&(e.items=tC(a.items,t,e.path)),r.push(e),i=!1}return r}const nC=Object.assign((e=>{let{items:t=[],size:n="m",icon:r=a.createElement(we.J,{data:k_}),open:i,onOpenToggle:o,hideOnScroll:s=!0,data:l,disabled:c,switcher:u,renderSwitcher:d,switcherWrapperClassName:h,defaultSwitcherProps:p,defaultSwitcherClassName:f,onSwitcherClick:m,menuProps:g,popupProps:v,children:y}=e;const b=a.useRef(null),{isPopupShown:x,togglePopup:w,closePopup:S}=function(e,t,n){const[r,i]=eC(e,t,!1),o=a.useCallback((e=>{i((t=>"boolean"===typeof e?e:!t))}),[i]),s=a.useCallback((()=>{i(!1)}),[i]);return a.useEffect((()=>{n&&r&&s()}),[s,n,r]),{isPopupShown:r,togglePopup:o,closePopup:s}}(i,o,c);!function(e,t,n){a.useEffect((()=>{if(n)return;const r=n=>{n.target.contains(t.current)&&e(n)};return document.addEventListener("scroll",r,!0),()=>{document.removeEventListener("scroll",r,!0)}}),[t,e,n])}(S,b,!x||!s);const _=a.useMemo((()=>({toggle:w,data:l})),[l,w]),C=a.useMemo((()=>tC(t,W_)),[t]),E=a.useCallback((e=>{c||(null===m||void 0===m||m(e),w())}),[c,m,w]),{onKeyDown:T}=(0,ci.b)(E),O=a.useMemo((()=>({onClick:E,onKeyDown:T})),[E,T]);return a.createElement(I_.Provider,{value:_},a.createElement("div",Object.assign({ref:b,className:j_("switcher-wrapper",h)},d?{}:O),(null===d||void 0===d?void 0:d(O))||u||a.createElement(Ie.z,Object.assign({view:"flat",size:n},p,{className:j_("switcher-button",f),disabled:c}),r)),a.createElement(G_,{anchorRef:b,disabled:!x},a.createElement(K_,{items:C,open:x,size:n,menuProps:g,anchorRef:b,onClose:S,popupProps:v},y)))}),{Item:$_}),rC=(0,Re.withNaming)({e:"__",m:"_"}),iC="--ydb-tree-view-level",oC=rC("ydb-tree-view");function aC(e){let{children:t,name:n,title:r,icon:i,collapsed:o=!0,active:s=!1,onClick:l,onArrowClick:c,hasArrow:u=!1,actions:d,additionalNodeElements:h,level:p}=e;const f=a.useCallback((e=>{if(!l)return;e.nativeEvent.composedPath().some((e=>e instanceof HTMLElement&&("BUTTON"===e.nodeName&&!e.hasAttribute("disabled")||e.hasAttribute("tabindex")&&e.tabIndex>-1)))||l()}),[l]),m=c||l;let g="tree-view_arrow",v="tree-view_children";return o&&(g+=" tree-view_arrow-collapsed",v+=" tree-view_children-collapsed"),(0,Le.jsx)("div",{className:oC(),style:{[iC]:p},children:(0,Le.jsxs)("div",{className:"tree-view",children:[(0,Le.jsxs)("div",{className:"".concat("tree-view_item"," ").concat(oC("item",{active:s})),onClick:f,children:[(0,Le.jsx)("button",{type:"button",className:"".concat(g," ").concat(oC("arrow",{collapsed:o,hidden:!u})),disabled:!m,onClick:m}),(0,Le.jsxs)("div",{className:oC("content"),children:[i&&(0,Le.jsx)("div",{className:oC("icon"),children:i}),(0,Le.jsx)("div",{className:oC("text"),title:r,children:n}),d&&d.length>0&&(0,Le.jsxs)("div",{className:oC("actions"),children:[h,(0,Le.jsx)(nC,{defaultSwitcherProps:{view:"flat-secondary",size:"s",pin:"brick-brick"},items:d})]})]})]}),(0,Le.jsx)("div",{className:"".concat(v," ").concat(oC("container",{collapsed:o})),children:o?null:t})]})})}const sC=[{name:"NodeId",header:"#",width:80,resizeMinWidth:80,align:Hc.ZP.LEFT,render:e=>{let{row:t}=e;return t.NodeId}},{name:"Host",render:e=>{var t;let{row:n}=e;const r=n.Endpoints&&(null===(t=n.Endpoints.find((e=>"http-mon"===e.Name)))||void 0===t?void 0:t.Address),i=n.Host&&"".concat(n.Host).concat(r||"")||"unknown",o=!(0,Na.TA)(n)&&n.NodeId?bu(n.NodeId):void 0;return(0,Le.jsx)(Il,{name:i,path:o,hasClipboardButton:!0,showStatus:!1})},width:400,align:Hc.ZP.LEFT},{name:"Endpoints",sortable:!1,render:e=>{let{row:t}=e;return t.Endpoints?t.Endpoints.map((e=>{let{Name:t,Address:n}=e;return"".concat(t," ").concat(n)})).join(", "):"-"},width:300,align:Hc.ZP.LEFT},{name:"uptime",header:"Uptime",sortAccessor:e=>{let{StartTime:t}=e;return t&&-t},width:120,align:Hc.ZP.LEFT,render:e=>{let{row:t}=e;return t.uptime}},{name:"MemoryUsed",header:"Memory used",sortAccessor:e=>{let{MemoryUsed:t=0}=e;return Number(t)},defaultOrder:Hc.ZP.DESCENDING,render:e=>{let{row:t}=e;return t.MemoryUsed?(0,ks.td)(t.MemoryUsed):"\u2014"},width:120,align:Hc.ZP.RIGHT},{name:"MemoryLimit",header:"Memory limit",sortAccessor:e=>{let{MemoryLimit:t=0}=e;return Number(t)},defaultOrder:Hc.ZP.DESCENDING,render:e=>{let{row:t}=e;return t.MemoryLimit?(0,ks.td)(t.MemoryLimit):"\u2014"},width:120,align:Hc.ZP.RIGHT},{name:"PoolStats",header:"Pools",sortAccessor:e=>{let{PoolStats:t=[]}=e;return t.reduce(((e,t)=>e+(t.Usage||0)),0)},defaultOrder:Hc.ZP.DESCENDING,width:80,resizeMinWidth:60,render:e=>{let{row:t}=e;return t.PoolStats?(0,Le.jsx)(Tu,{pools:t.PoolStats}):"\u2014"},align:Hc.ZP.LEFT},{name:"LoadAverage",header:"Load average",sortAccessor:e=>{let{LoadAverage:t=[]}=e;return t.slice(0,1).reduce(((e,t)=>e+t),0)},defaultOrder:Hc.ZP.DESCENDING,width:140,resizeMinWidth:140,render:e=>{let{row:t}=e;return t.LoadAverage&&t.LoadAverage.length>0?(0,Le.jsx)(Iu,{value:t.LoadAverage[0],percents:!0,capacity:100,colorizeProgress:!0}):"\u2014"},align:Hc.ZP.LEFT}],lC=e=>{let{nodes:t}=e;return(0,Le.jsx)(qc,{columnsWidthLSKey:"versionsTableColumnsWidth",data:t,columns:sC,settings:Lo.LE})},cC=(0,le.Ge)("progress");function uC(e){const{text:t,offset:n=0}=e;return t?a.createElement("div",{className:cC("text-inner"),style:{transform:"translateX(calc(var(--g-flow-direction) * ".concat(-n,"%))")}},t):null}function dC(e){let{item:t}=e;const{value:n,color:r,className:i,theme:o,title:s,content:l,loading:c}=t,u={loading:c};return"undefined"===typeof r&&(u.theme=o||"default"),Number.isFinite(n)?a.createElement("div",{className:cC("item",u,i),style:{width:"".concat(n,"%"),backgroundColor:r},title:s},l):null}function hC(e){return e<100?e-100:0}function pC(e){const{theme:t,colorStops:n,colorStopsValue:r,value:i}=e;if(n){const e=n.find(((e,t)=>{const o="number"===typeof r?r:i,a=t>1?n[t-1].stop:0,s=t<n.length-1?e.stop:100;return o>=a&&o<=s}));return e?e.theme:t}return t}function fC(e){const{stack:t,stackClassName:n,value:r,text:i}=e,o=hC(r||function(e){return e.reduce(((e,t)=>{let{value:n}=t;return e+n}),0)}(t));return a.createElement("div",{className:cC("stack",n),style:{transform:"translateX(calc(var(--g-flow-direction) * ".concat(o,"%))")}},a.createElement("div",{className:cC("item"),style:{width:"".concat(-o,"%")}}),t.map(((e,t)=>a.createElement(dC,{key:t,item:e}))),a.createElement(uC,{offset:o,text:i}))}function mC(e){const{value:t,loading:n,text:r}=e,i=hC(t);return Number.isFinite(t)?a.createElement("div",{className:cC("item",{theme:pC(e),loading:n}),style:{transform:"translateX(calc(var(--g-flow-direction) * ".concat(i,"%))")}},a.createElement(uC,{offset:i,text:r})):null}const gC=a.forwardRef((function(e,t){const{text:n="",theme:r="default",size:i="m",loading:o=!1,className:s,qa:l}=e,c=Object.assign(Object.assign({},e),{text:n,theme:r,size:i,loading:o});return a.createElement("div",{ref:t,className:cC({size:i},s),"data-qa":l},a.createElement("div",{className:cC("text")},n),function(e){return void 0!==e.stack}(c)?a.createElement(fC,Object.assign({},c)):a.createElement(mC,Object.assign({},c)))})),vC=Me("ydb-versions-nodes-tree-title"),yC=e=>{let t,{title:n,nodes:r,items:i,versionColor:o,versionsValues:a}=e;return t=i?i.reduce(((e,t)=>t.nodes?e+t.nodes.length:e),0):r?r.length:0,(0,Le.jsxs)("div",{className:vC("overview"),children:[(0,Le.jsxs)("div",{className:vC("overview-container"),children:[o?(0,Le.jsx)("div",{className:vC("version-color"),style:{background:o}}):null,n?(0,Le.jsxs)("span",{className:vC("overview-title"),children:[n,(0,Le.jsx)(pl,{text:n,size:"s",className:vC("clipboard-button")})]}):null]}),(0,Le.jsxs)("div",{className:vC("overview-info"),children:[(0,Le.jsxs)("div",{children:[(0,Le.jsx)("span",{className:vC("info-value"),children:t}),(0,Le.jsx)("span",{className:vC("info-label",{margin:"left"}),children:"Nodes"})]}),a?(0,Le.jsxs)("div",{className:vC("version-progress"),children:[(0,Le.jsx)("span",{className:vC("info-label",{margin:"right"}),children:"Versions"}),(0,Le.jsx)(gC,{size:"s",value:100,stack:a})]}):null]})]})},bC=Me("ydb-versions-grouped-node-tree"),xC=e=>{let{title:t,nodes:n,items:r,expanded:i=!1,versionColor:o,versionsValues:s,level:l=0}=e;const[c,u]=a.useState(!1);a.useEffect((()=>{u(i)}),[i]);const d=(0,Le.jsx)(yC,{title:t,nodes:n,items:r,versionColor:o,versionsValues:s}),h=()=>{u((e=>!e))};return r?(0,Le.jsx)("div",{className:bC({"first-level":0===l}),children:(0,Le.jsx)(aC,{name:d,collapsed:!c,hasArrow:!0,onClick:h,onArrowClick:h,children:r.map(((e,t)=>(0,Le.jsx)(xC,{title:e.title,nodes:e.nodes,expanded:i,versionColor:e.versionColor,level:l+1},t)))},t)}):(0,Le.jsx)("div",{className:bC({"first-level":0===l}),children:(0,Le.jsx)(aC,{name:d,collapsed:!c,hasArrow:!0,onClick:h,onArrowClick:h,children:(0,Le.jsx)("div",{className:bC("dt-wrapper"),children:(0,Le.jsx)(lC,{nodes:n||[]})})},t)})};var wC=n(46754),SC=n.n(wC);let _C;!function(e){e.VERSION="Version",e.TENANT="Database",e.STORAGE="Storage"}(_C||(_C={}));const CC=(e,t)=>{var n;return(null===(n=e.title)||void 0===n?void 0:n.localeCompare(t.title||""))||-1},EC=Me("ydb-versions"),TC=e=>{let{versionToColor:t}=e;const{data:n=[],isLoading:r}=Al.useGetClusterNodesQuery(void 0,{pollingInterval:Lo.ME}),[i,o]=a.useState(_C.VERSION),[s,l]=a.useState(!1),c=e=>{o(e)};if(r)return(0,Le.jsx)(N_,{});const u=((e,t,n)=>{if(e&&e.length){if(n===_C.VERSION){const n=SC()(e,"Version");return Object.keys(n).map((e=>{const r=n[e].filter((e=>{let{Tenants:t}=e;return Boolean(t)})),i=SC()(r,"Tenants"),o=Object.keys(i).map((e=>({title:e,nodes:i[e]}))).sort(CC);return o.length?{title:e,items:o,versionColor:null===t||void 0===t?void 0:t.get((0,Ll.H)(e))}:null})).filter((e=>Boolean(e)))}{const n=e.filter((e=>{let{Tenants:t}=e;return Boolean(t)})),r=SC()(n,"Tenants");return Object.keys(r).map((e=>{const n=Fl(r[e],t),i=SC()(r[e],"Version"),o=Object.keys(i).map((e=>({title:e,nodes:i[e],versionColor:null===t||void 0===t?void 0:t.get((0,Ll.H)(e))})));return o.length?{title:e,items:o,versionsValues:n}:null})).filter((e=>Boolean(e))).sort(CC)}}})(n,t,i),d=((e,t)=>{if(!e||!e.length)return;const n=e.filter((e=>{let{Roles:t}=e;return null===t||void 0===t?void 0:t.includes("Storage")})),r=SC()(n,"Version");return Object.keys(r).map((e=>({title:e,nodes:r[e],versionColor:null===t||void 0===t?void 0:t.get((0,Ll.H)(e))})))})(n,t),h=((e,t)=>{if(!e||!e.length)return;const n=e.filter((e=>{let{Roles:t}=e;return!t})),r=SC()(n,"Version");return Object.keys(r).map((e=>({title:e,nodes:r[e],versionColor:null===t||void 0===t?void 0:t.get((0,Ll.H)(e))})))})(n,t),p=null!==d&&void 0!==d&&d.length?(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("h3",{children:"Storage nodes"}),d.map((e=>{let{title:t,nodes:n,items:r,versionColor:i}=e;return(0,Le.jsx)(xC,{title:t,nodes:n,items:r,versionColor:i},"storage-nodes-".concat(t))}))]}):null,f=null!==u&&void 0!==u&&u.length?(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("h3",{children:"Database nodes"}),(0,Le.jsxs)("div",{className:EC("controls"),children:[(0,Le.jsxs)("div",{className:EC("group"),children:[(0,Le.jsx)("span",{className:EC("label"),children:"Group by:"}),(0,Le.jsxs)(Oo,{value:i,onUpdate:c,children:[(0,Le.jsx)(Oo.Option,{value:_C.TENANT,children:_C.TENANT}),(0,Le.jsx)(Oo.Option,{value:_C.VERSION,children:_C.VERSION})]})]}),(0,Le.jsx)(T_,{className:EC("checkbox"),onChange:()=>l((e=>!e)),checked:s,children:"All expanded"})]}),u.map((e=>{let{title:t,nodes:n,items:r,versionColor:i,versionsValues:o}=e;return(0,Le.jsx)(xC,{title:t,nodes:n,items:r,expanded:s,versionColor:i,versionsValues:o},"tenant-nodes-".concat(t))}))]}):null,m=null!==h&&void 0!==h&&h.length?(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("h3",{children:"Other nodes"}),h.map((e=>{let{title:t,nodes:n,items:r,versionColor:i,versionsValues:o}=e;return(0,Le.jsx)(xC,{title:t,nodes:n,items:r,versionColor:i,versionsValues:o},"other-nodes-".concat(t))}))]}):null;return(0,Le.jsxs)("div",{className:EC("versions"),children:[p,f,m]})},OC=Me("ydb-info-viewer-skeleton"),NC=()=>(0,Le.jsxs)("div",{className:OC("label"),children:[(0,Le.jsx)(rl,{className:OC("label__text")}),(0,Le.jsx)("div",{className:OC("label__dots")})]}),kC=e=>{let{rows:t=8,className:n}=e;return(0,Le.jsx)("div",{className:OC(null,n),children:[...new Array(t)].map(((e,t)=>(0,Le.jsxs)("div",{className:OC("row"),children:[(0,Le.jsx)(NC,{}),(0,Le.jsx)(rl,{className:OC("value")})]},"skeleton-row-".concat(t))))})},jC=Me("ydb-link-with-icon"),IC=e=>{let{title:t,url:n,external:r=!0}=e;const i=(0,Le.jsxs)(a.Fragment,{children:[t,"\xa0",(0,Le.jsx)(pu,{})]});return r?(0,Le.jsx)(si,{href:n,target:"_blank",className:jC(),children:i}):(0,Le.jsx)(_l,{to:n,className:jC(),children:i})},PC=Me("tablet-icon"),DC=e=>{let{text:t,className:n}=e;return(0,Le.jsx)("div",{className:PC(null,n),children:(0,Le.jsx)("div",{className:PC("type"),children:t||"T"})})},AC=Me("tablet"),RC=e=>{var t;let{tablet:n={},tenantName:r}=e;const{TabletId:i,NodeId:o,Type:a}=n,s=null===(t=n.Overall)||void 0===t?void 0:t.toLowerCase(),l=i&&(0,Ta.ax)(Ta.ZP.tablet,{id:i},{nodeId:o,tenantName:r,type:a});return(0,Le.jsx)(Su,{className:AC("wrapper"),content:(0,Le.jsx)(Is,{data:n,className:AC("popup-content")}),children:(0,Le.jsx)(_l,{to:l,children:(0,Le.jsx)(DC,{className:AC({status:s}),text:(0,Lo.qV)(n.Type)})})})},MC=Me("tag"),LC=e=>{let{text:t,type:n}=e;return(0,Le.jsx)("div",{className:MC({type:n}),children:t})},FC=Me("tags"),zC=e=>{let{tags:t,tagsType:n,className:r=""}=e;return(0,Le.jsx)("div",{className:FC(null,r),children:t&&t.map(((e,t)=>(0,Le.jsx)(LC,{text:e,type:n},t)))})};var BC=n(81854);const UC=Me("ydb-cluster-versions-bar"),HC=e=>{let{versionsValues:t=[]}=e;return(0,Le.jsxs)("div",{className:UC(),children:[(0,Le.jsx)(gC,{value:100,stack:t,size:"s"}),(0,Le.jsx)("div",{className:UC("versions"),children:t.map(((e,n)=>(0,Le.jsx)("div",{className:UC("version-title"),style:{color:e.color},title:e.version,children:"".concat(e.version).concat(n===t.length-1?"":",")},e.version)))})]})},VC=JSON.parse('{"disk-type":"Disk Type","erasure":"Erasure","allocated":"Allocated","available":"Available","usage":"Usage","dc":"DC","tablets":"Tablets","databases":"Databases","nodes":"Nodes","load":"Load","storage-size":"Storage size","storage-groups":"Storage groups, {{diskType}}","links":"Links","versions":"Versions"}'),GC=JSON.parse('{"disk-type":"\u0422\u0438\u043f \u0434\u0438\u0441\u043a\u0430","erasure":"\u0420\u0435\u0436\u0438\u043c","allocated":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e","available":"\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e","usage":"\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435","dc":"\u0414\u0426","tablets":"\u0422\u0430\u0431\u043b\u0435\u0442\u043a\u0438","databases":"\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445","nodes":"\u0423\u0437\u043b\u044b","load":"\u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430","storage-size":"\u0420\u0430\u0437\u043c\u0435\u0440 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430","storage-groups":"\u0413\u0440\u0443\u043f\u043f\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, {{diskType}}","links":"\u0421\u0441\u044b\u043b\u043a\u0438","versions":"\u0412\u0435\u0440\u0441\u0438\u0438"}'),WC=(0,We.wZ)("ydb-cluster",{ru:GC,en:VC}),qC=(e,t)=>e.Type===Pu.F.TxAllocator?1:t.Type===Pu.F.TxAllocator?-1:0,ZC=Me("cluster-info"),YC=e=>{let{stats:t}=e;const{diskType:n,erasure:r,allocatedSize:i,availableSize:o}=t,a=(0,BC.dT)(Math.max(i,o),2),s=(0,BC.td)({value:i,size:a}),l=(0,BC.td)({value:o,size:a}),c=Math.round(i/(i+o)*100),u=[{label:WC("disk-type"),value:n},{label:WC("erasure"),value:r},{label:WC("allocated"),value:s},{label:WC("available"),value:l},{label:WC("usage"),value:c+"%"}];return(0,Le.jsx)(Ss,{dots:!0,info:u,className:ZC("groups-stats-popup-content"),size:"s"})},KC=e=>{let{stats:t}=e;return(0,Le.jsx)("div",{className:ZC("storage-groups-stats"),children:Object.values(t).map((e=>(0,Le.jsx)(Su,{placement:["right"],content:(0,Le.jsx)(YC,{stats:e}),children:(0,Le.jsx)(Iu,{className:ZC("groups-stats-bar"),value:e.createdGroups,capacity:e.totalGroups})},e.erasure)))})},QC=(e,t,n,r,i)=>{const o=[];if(e.DataCenters&&o.push({label:WC("dc"),value:(0,Le.jsx)(zC,{tags:e.DataCenters})}),e.SystemTablets){const t=e.SystemTablets.slice(0).sort(qC);o.push({label:WC("tablets"),value:(0,Le.jsx)("div",{className:ZC("system-tablets"),children:t.map(((e,t)=>(0,Le.jsx)(RC,{tablet:e},t)))})})}return e.Tenants&&o.push({label:WC("databases"),value:e.Tenants}),o.push({label:WC("nodes"),value:(0,Le.jsx)(Iu,{value:null===e||void 0===e?void 0:e.NodesAlive,capacity:null===e||void 0===e?void 0:e.NodesTotal})},{label:WC("load"),value:(0,Le.jsx)(Iu,{value:null===e||void 0===e?void 0:e.LoadAverage,capacity:null===e||void 0===e?void 0:e.NumberOfCpus})},{label:WC("storage-size"),value:(0,Le.jsx)(Iu,{value:null===e||void 0===e?void 0:e.StorageUsed,capacity:null===e||void 0===e?void 0:e.StorageTotal,formatValues:ks.QO})}),Object.keys(n).length&&o.push(...(e=>Object.keys(e).map((t=>({label:WC("storage-groups",{diskType:t}),value:(0,Le.jsx)(KC,{stats:e[t]})}))))(n)),o.push(...r,{label:WC("links"),value:(0,Le.jsx)("div",{className:ZC("links"),children:i.map((e=>{let{title:t,url:n}=e;return(0,Le.jsx)(IC,{title:t,url:n},t)}))})},{label:WC("versions"),value:(0,Le.jsx)(HC,{versionsValues:t})}),o},XC=e=>{let{cluster:t={},versionsValues:n=[],groupsStats:r={},loading:i,error:o,additionalClusterProps:a={}}=e;const s=Do((e=>e.singleClusterMode));let l=h_.y3+"/internal";s&&!h_.j4&&(l="/internal");const{info:c=[],links:u=[]}=a,d=QC(t,n,r,c,[{title:Lo.Ah,url:l},...u]);return(0,Le.jsx)("div",{className:ZC(),children:(0,Le.jsx)("div",{className:ZC("info"),children:i?(0,Le.jsx)(kC,{className:ZC("skeleton"),rows:9}):o?(0,Le.jsx)(zc,{error:o,className:ZC("error")}):(0,Le.jsx)(Ss,{dots:!0,info:d})})})};var $C=n(81003);const JC=Me("cluster");const eE=function(e){var t,n;let{additionalClusterProps:r,additionalTenantsProps:i,additionalNodesProps:o,additionalVersionsProps:s}=e;const l=a.useRef(null),c=Ao(),u=function(){const e=Ao(),t=Do((e=>e.cluster.defaultClusterTab)),n=Ea(Ta.ZP.cluster),{activeTab:r}=(null===n||void 0===n?void 0:n.params)||{};let i;i=(0,$C.V2)(r)?r:t;return a.useEffect((()=>{i!==t&&e((0,Pl.LQ)(i))}),[i,t,e]),i}(),d=Ca(),h=ol().parse(d.search,{ignoreQueryPrefix:!0}),{clusterName:p,backend:f}=h,{data:{clusterData:m={},groupsStats:g}={},isLoading:v,error:y}=Pl.UM.useGetClusterInfoQuery(p?String(p):void 0,{pollingInterval:Lo.ME}),b=y&&"object"===typeof y?y:void 0,{data:x=[],isLoading:w}=Al.useGetClusterNodesQuery(void 0),S=v||w,{Name:_}=m;a.useEffect((()=>{c((0,Rl.J)("cluster",{}))}),[c,_]);const C=a.useMemo((()=>null!==s&&void 0!==s&&s.getVersionToColorMap?null===s||void 0===s?void 0:s.getVersionToColorMap():(0,Ml.ZP)(null===m||void 0===m?void 0:m.Versions)),[s,m]),E=a.useMemo((()=>Fl(x,C)),[x,C]),T=null!==(t=null!==(n=null===m||void 0===m?void 0:m.Name)&&void 0!==n?n:p)&&void 0!==t?t:Lo.DO,O=a.useMemo((()=>$C._Y.find((e=>{let{id:t}=e;return t===u}))),[u]);return(0,Le.jsxs)("div",{className:JC(),ref:l,children:[(0,Le.jsx)(oe,{defaultTitle:"".concat(T," \u2014 YDB Monitoring"),titleTemplate:"%s \u2014 ".concat(T," \u2014 YDB Monitoring"),children:O?(0,Le.jsx)("title",{children:O.title}):null}),(0,Le.jsx)("div",{className:JC("header"),children:(()=>{var e;return S?(0,Le.jsx)(rl,{className:JC("title-skeleton")}):(0,Le.jsx)(Il,{size:"m",status:null===m||void 0===m?void 0:m.Overall,name:null!==(e=null===m||void 0===m?void 0:m.Name)&&void 0!==e?e:Lo.DO,className:JC("title")})})()}),(0,Le.jsx)("div",{className:JC("tabs"),children:(0,Le.jsx)(wt,{size:"l",allowNotSelected:!0,activeTab:u,items:$C._Y,wrapTo:(e,t)=>{let{id:n}=e;const r=(0,$C.B7)(n,{clusterName:p,backend:f});return(0,Le.jsx)(_l,{to:r,onClick:()=>{c((0,Pl.LQ)(n))},children:t},n)}})}),(0,Le.jsx)("div",{children:(0,Le.jsxs)(wa,{children:[(0,Le.jsx)(ma,{path:(0,Ta.Fz)((0,$C.B7)($C.xu.overview)).pathname,children:(0,Le.jsx)(XC,{cluster:m,groupsStats:g,versionsValues:E,loading:S,error:b,additionalClusterProps:r})}),(0,Le.jsx)(ma,{path:(0,Ta.Fz)((0,$C.B7)($C.xu.tenants)).pathname,children:(0,Le.jsx)(S_,{additionalTenantsProps:i})}),(0,Le.jsx)(ma,{path:(0,Ta.Fz)((0,$C.B7)($C.xu.nodes)).pathname,children:(0,Le.jsx)(rh,{parentContainer:l.current,additionalNodesProps:o})}),(0,Le.jsx)(ma,{path:(0,Ta.Fz)((0,$C.B7)($C.xu.storage)).pathname,children:(0,Le.jsx)(d_,{parentContainer:l.current,additionalNodesProps:o})}),(0,Le.jsx)(ma,{path:(0,Ta.Fz)((0,$C.B7)($C.xu.versions)).pathname,children:(0,Le.jsx)(TC,{versionToColor:C})}),(0,Le.jsx)(ua,{to:(0,Ta.Fz)((0,$C.B7)(u))})]})})]})},tE=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("g",{clipPath:"url(#a)"},a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M7.199 2H8.8a.2.2 0 0 1 .2.2c0 1.808 1.958 2.939 3.524 2.034a.199.199 0 0 1 .271.073l.802 1.388a.199.199 0 0 1-.073.272c-1.566.904-1.566 3.164 0 4.069a.199.199 0 0 1 .073.271l-.802 1.388a.199.199 0 0 1-.271.073C10.958 10.863 9 11.993 9 13.8a.2.2 0 0 1-.199.2H7.2a.199.199 0 0 1-.2-.2c0-1.808-1.958-2.938-3.524-2.034a.199.199 0 0 1-.272-.073l-.8-1.388a.199.199 0 0 1 .072-.271c1.566-.905 1.566-3.165 0-4.07a.199.199 0 0 1-.073-.271l.801-1.388a.199.199 0 0 1 .272-.073C5.042 5.138 7 4.007 7 2.2c0-.11.089-.199.199-.199ZM5.5 2.2c0-.94.76-1.7 1.699-1.7H8.8c.94 0 1.7.76 1.7 1.7a.85.85 0 0 0 1.274.735 1.699 1.699 0 0 1 2.32.622l.802 1.388c.469.813.19 1.851-.622 2.32a.85.85 0 0 0 0 1.472 1.7 1.7 0 0 1 .622 2.32l-.802 1.388a1.699 1.699 0 0 1-2.32.622.85.85 0 0 0-1.274.735c0 .939-.76 1.7-1.699 1.7H7.2a1.7 1.7 0 0 1-1.699-1.7.85.85 0 0 0-1.274-.735 1.698 1.698 0 0 1-2.32-.622l-.802-1.388a1.699 1.699 0 0 1 .622-2.32.85.85 0 0 0 0-1.471 1.699 1.699 0 0 1-.622-2.321l.801-1.388a1.699 1.699 0 0 1 2.32-.622A.85.85 0 0 0 5.5 2.2Zm4 5.8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z",clipRule:"evenodd"})),a.createElement("defs",null,a.createElement("clipPath",{id:"a"},a.createElement("path",{fill:"currentColor",d:"M0 0h16v16H0z"})))),nE=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M10.5 6V5a2.5 2.5 0 0 0-5 0v1h5ZM4 5v1a3 3 0 0 0-3 3v3a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3V5a4 4 0 0 0-8 0Zm6.5 2.5H12A1.5 1.5 0 0 1 13.5 9v3a1.5 1.5 0 0 1-1.5 1.5H4A1.5 1.5 0 0 1 2.5 12V9A1.5 1.5 0 0 1 4 7.5h6.5Zm-1.75 2a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2Z",clipRule:"evenodd"})),rE=e=>null!==e&&"object"===typeof e&&"data"in e,iE=e=>{let{item:t,groupedId:n,getItemId:r}=e,i=n;return"function"===typeof r?i=r(rE(t)?t.data:t):t&&"object"===typeof t&&"id"in t&&t.id&&(i=t.id),i},oE="data-list-item",aE={s:[22,44],m:[26,44],l:[34,52],xl:[44,62]},sE=(e,t)=>t?"".concat(t).concat("-").concat(e):"".concat(e),lE=e=>e.split("-");function cE(e){let{items:t,expandedById:n,getItemId:r}=e;const i=a.useMemo((()=>function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const r=(e,i,o,a)=>{const s=sE(o,a),l=iE({groupedId:s,item:i,getItemId:n});return e.push(l),rE(i)&&i.children&&(l in t&&!t[l]||e.push(...i.children.reduce(((e,t,n)=>r(e,t,n,l)),[]))),e},i=e.reduce(((e,t,n)=>r(e,t,n)),[]),o={};for(const[a,s]of i.entries())o[s]=a;return{visibleFlattenIds:i,idToFlattenIndex:o}}(t,n,r)),[t,n,r]);return i}function uE(e,t){const n={itemsById:{},groupsState:{},itemsState:{},initialState:{disabledById:{},selectedById:{},expandedById:{}}},r=e=>{let{item:i,index:o,parentGroupedId:a,parentId:s}=e;const l=sE(o,a),c=iE({groupedId:l,item:i,getItemId:t});s&&n.groupsState[s].childrenIds.push(c),n.itemsById[c]=i.data,n.itemsState[c]||(n.itemsState[c]={indentation:0}),"undefined"!==typeof s&&(n.itemsState[c].parentId=s),"undefined"!==typeof i.selected&&(n.initialState.selectedById[c]=i.selected),"undefined"!==typeof i.disabled&&(n.initialState.disabledById[c]=i.disabled),l&&(n.itemsState[c].indentation=lE(l).length-1),i.children&&(n.groupsState[c]={childrenIds:[]},"undefined"!==typeof i.expanded&&(n.initialState.expandedById[c]=i.expanded),i.children.forEach(((e,t)=>{r({item:e,index:t,parentGroupedId:l,parentId:c})})))};return e.forEach(((e,i)=>rE(e)?r({item:e,index:i}):(e=>{let{item:r,index:i}=e;const o=iE({groupedId:String(i),item:r,getItemId:t});n.itemsById[o]=r,n.itemsState[o]||(n.itemsState[o]={indentation:0}),r&&"object"===typeof r&&("selected"in r&&"boolean"===typeof r.selected&&(n.initialState.selectedById[o]=r.selected),"disabled"in r&&"boolean"===typeof r.disabled&&(n.initialState.disabledById[o]=r.disabled))})({item:e,index:i}))),n}const dE=e=>{let{items:t,expandedById:n,getItemId:r}=e;const{itemsById:i,groupsState:o,itemsState:s,initialState:l}=function(e){let{items:t,getItemId:n}=e;return a.useMemo((()=>uE(t,n)),[n,t])}({items:t,getItemId:r}),{visibleFlattenIds:c,idToFlattenIndex:u}=cE({items:t,expandedById:n||l.expandedById,getItemId:r});return{items:t,visibleFlattenIds:c,idToFlattenIndex:u,itemsById:i,groupsState:o,itemsState:s,initialState:l}},hE=e=>{let{list:t,index:n,step:r,disabledItems:i={}}=e;const o=t.length;let a=(n+o)%o;for(let s=0;s<o;s+=1){if(t[a]&&!i[a])return a;a=(a+o+r)%o}},pE=(e,t)=>{var n;if(document){const r=(t||document).querySelector("[".concat(oE,'="').concat(e,'"]'));r&&(null===(n=r.scrollIntoView)||void 0===n||n.call(r,{block:"nearest"}))}},fE=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M13.03 10.53a.75.75 0 0 1-1.06 0L8 6.56l-3.97 3.97a.75.75 0 1 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1 0 1.06Z",clipRule:"evenodd"}));var mE=n(39137),gE=n(95216);const vE=(0,le.Ge)("list-item-view"),yE=e=>{var{children:t,indentation:n=1,className:r}=e,i=(0,nt._T)(e,["children","indentation","className"]);return a.createElement(Ai.k,Object.assign({width:16*n,className:vE("slot",r)},i),t)},bE=a.forwardRef(((e,t)=>{var{id:n,as:r="div",size:i="m",active:o,selected:s,disabled:l,activeOnHover:c,className:u,hasSelectionIcon:d=!0,indentation:h,startSlot:p,subtitle:f,endSlot:m,title:g,height:v,expanded:y,dragging:b,style:x,role:w="option",onClick:S}=e,_=(0,nt._T)(e,["id","as","size","active","selected","disabled","activeOnHover","className","hasSelectionIcon","indentation","startSlot","subtitle","endSlot","title","height","expanded","dragging","style","role","onClick"]);const C="boolean"===typeof y,E=l?void 0:S,T="boolean"===typeof c?c:Boolean(E);return a.createElement(Ai.k,Object.assign({[oE]:n,role:w,"aria-selected":s,onClick:E,className:vE({active:b||o,selected:s&&!d,activeOnHover:T,radius:i,dragging:b,clickable:Boolean(E)},(0,gE.W)({px:2},u)),style:Object.assign({minHeight:null!==v&&void 0!==v?v:aE[i][Number(Boolean(f))]},x),as:r,ref:t,alignItems:"center",gap:"4",justifyContent:"space-between"},_),a.createElement(Ai.k,{gap:"2",alignItems:"center",grow:!0},d&&a.createElement(yE,null,s?a.createElement(we.J,{data:Dx,size:16,className:(0,mE.V)({color:"info"})}):null),(e=>e&&e>=1?a.createElement(yE,{indentation:Math.floor(e)}):null)(h),C?a.createElement(we.J,{className:vE("icon",(0,mE.V)({color:l?"hint":void 0})),data:y?xe:fE,size:16}):null,p,a.createElement("div",{className:vE("main-content")},"string"===typeof g?a.createElement(Fi.x,{ellipsis:!0,color:l?"hint":void 0,variant:C?"subheader-1":void 0},g):g,"string"===typeof f?a.createElement(Fi.x,{ellipsis:!0,color:l?"hint":"secondary"},f):f)),m)}));bE.displayName="ListItemView";const xE=(0,le.Ge)("list-container-view"),wE=a.forwardRef((function(e,t){let{as:n="div",role:r="listbox",children:i,id:o,className:s,fixedHeight:l,extraProps:c,qa:u}=e;return a.createElement(Ai.k,Object.assign({"data-qa":u,as:n,direction:"column",ref:t,grow:!0,tabIndex:-1,id:o,role:r,className:xE({"fixed-height":l},s)},c),i)})),SE=(0,le.Ge)("list-recursive-renderer");function _E(e){var{itemSchema:t,index:n,parentId:r}=e,i=(0,nt._T)(e,["itemSchema","index","parentId"]);const o=sE(n,r),s=iE({item:t,groupedId:o,getItemId:i.getItemId}),l=i.children(s,i.idToFlattenIndex[s]);if(rE(t)&&t.children){const e=!i.expandedById||!(s in i.expandedById)||i.expandedById[s];return a.createElement("ul",{style:i.style,className:SE(null,i.className),role:"group"},l,e&&t.children.map(((e,t)=>a.createElement(_E,Object.assign({itemSchema:e,key:t,index:t,parentId:o},i)))))}return l}const CE=e=>{let{qa:t,items:n,id:r,containerRef:i,expandedById:o,renderItem:s,className:l,idToFlattenIndex:c,getItemId:u}=e;return a.createElement(wE,{ref:i,className:l,id:r,qa:t},n.map(((e,t)=>a.createElement(_E,{key:t,idToFlattenIndex:c,itemSchema:e,index:t,expandedById:o,getItemId:u},s))))},EE=(0,le.Ge)("tree-list"),TE=e=>{let{qa:t,id:n,size:r="m",items:i,className:o,expandedById:s,disabledById:l,selectedById:c,activeItemId:u,defaultGroupsExpanded:d=!0,getItemId:h,renderItem:p,renderContainer:f=CE,onItemClick:m,multiple:g,setActiveItemId:v,containerRef:y,mapItemDataToProps:b}=e;const x=ue(),w=null!==n&&void 0!==n?n:x,S=a.useRef(null),_=null!==y&&void 0!==y?y:S,C=dE({items:i,getItemId:h,expandedById:s,disabledById:l,selectedById:c,activeItemId:u}),E=s||C.initialState.expandedById,T=l||C.initialState.disabledById,O=c||C.initialState.selectedById,N=a.useMemo((()=>{if(m)return e=>{null===m||void 0===m||m({id:e,index:C.idToFlattenIndex[e],data:C.itemsById[e],expanded:E&&e in E?E[e]:e in C.initialState.expandedById?C.initialState.expandedById[e]:d,disabled:T?Boolean(T[e]):Boolean(C.initialState.disabledById[e]),selected:O?Boolean(O[e]):Boolean(C.initialState.selectedById[e]),context:{isLastItem:C.visibleFlattenIds[C.visibleFlattenIds.length-1]===e,groupState:C.groupsState[e],itemState:C.itemsState[e]}})}}),[d,T,E,O,C,m]);(e=>{let{visibleFlattenIds:t,onItemClick:n,containerRef:r,disabledById:i={},activeItemId:o,setActiveItemId:s,enabled:l}=e;const c=a.useCallback((function(e){let n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];"number"===typeof e&&t[e]&&(n&&pE(t[e],null===r||void 0===r?void 0:r.current),null===s||void 0===s||s(t[e]))}),[r,t,s]),u=a.useCallback((function(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;e.preventDefault();const a=t.findIndex((e=>e===o)),s=hE({list:t,index:(a>-1?a:r)+n,step:Math.sign(n),disabledItems:i});c(s)}),[c,o,i,t]);a.useLayoutEffect((()=>{const e=null===r||void 0===r?void 0:r.current;if(l||!e)return;const t=e=>{switch(e.key){case Zr.V.ARROW_DOWN:u(e,1,-1);break;case Zr.V.ARROW_UP:u(e,-1);break;case Zr.V.SPACEBAR:case Zr.V.ENTER:o&&!i[o]&&(e.preventDefault(),null===n||void 0===n||n(o))}};return e.addEventListener("keydown",t),()=>{e.removeEventListener("keydown",t)}}),[o,r,i,l,u,n])})(Object.assign(Object.assign({containerRef:_,onItemClick:N},C),{activeItemId:u,disabledById:T,setActiveItemId:v}));return f(Object.assign(Object.assign({qa:t,id:"list-".concat(w),size:r,containerRef:_,className:EE(null,o)},C),{expandedById:E,disabledById:T,activeItemId:u,selectedById:O,renderItem:(e,n,i)=>{const o=(e=>{let{qa:t,itemsById:n,disabledById:r,expandedById:i,groupsState:o,onItemClick:a,mapItemDataToProps:s,visibleFlattenIds:l,size:c="m",itemsState:u,selectedById:d,activeItemId:h,multiple:p=!1,defaultExpanded:f=!0,id:m}=e;var g;const v={itemState:u[m],groupState:o[m],isLastItem:m===l[l.length-1]};let y,b;o[m]&&i&&(y=null!==(g=i[m])&&void 0!==g?g:f),d&&(b=Boolean(d[m]));const x=Object.assign({id:m,size:c,expanded:y,active:m===h,indentation:v.itemState.indentation,disabled:Boolean(null===r||void 0===r?void 0:r[m]),selected:b,hasSelectionIcon:Boolean(p)&&!v.groupState,onClick:a?()=>a(m):void 0},s(n[m]));return t&&(x.qa=((e,t)=>"".concat(e,"-").concat(t))(t,m)),{data:n[m],props:x,context:v}})(Object.assign(Object.assign({qa:t,id:e,size:r,multiple:g,mapItemDataToProps:b,onItemClick:N},C),{expandedById:E,disabledById:T,activeItemId:u,selectedById:O,defaultExpanded:d}));return p?p({data:o.data,props:o.props,context:o.context,index:n,renderContainerProps:i}):a.createElement(bE,Object.assign({},o.props,i))},getItemId:h}))};function OE(e,t){const[n,r]=a.useState(e||t);return[e||n,r]}const NE=(0,le.Ge)("tree-select"),kE=e=>a.createElement(bE,Object.assign({},e.props,e.renderContainerProps)),jE=a.forwardRef((function(e,t){let{id:n,qa:r,placement:i,slotBeforeListBody:o,slotAfterListBody:s,size:l,items:c,defaultOpen:u,width:d,containerRef:h,className:p,containerClassName:f,popupClassName:m,open:g,multiple:v,popupWidth:y,expandedById:b,disabledById:x,activeItemId:w,defaultValue:S,popupDisablePortal:_,groupsBehavior:C="expandable",value:E,defaultGroupsExpanded:T,onClose:O,onUpdate:N,getItemId:k,onOpenChange:j,renderControl:I,renderItem:P=kE,renderContainer:D,onItemClick:A,setActiveItemId:R,mapItemDataToProps:M,title:L}=e;const F=(0,Kh.X)(),z=ue(),B=null!==n&&void 0!==n?n:z,U=a.useRef(null),H=a.useRef(null),V=a.useRef(null),G=null!==h&&void 0!==h?h:V,W=Et(t,H),{value:q,setInnerValue:Z,selected:Y}=(e=>{let{defaultValue:t,value:n}=e;const[r,i]=a.useState(t||[]),o=n||r,s=!n;return{selected:a.useMemo((()=>o.reduce(((e,t)=>(e[t]=!0,e)),{})),[o]),value:o,setInnerValue:s?i:void 0}})({value:E,defaultValue:S}),K=function(){let{initialValues:e,controlledValues:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const[n,r]=OE(null===t||void 0===t?void 0:t.disabledById,(null===e||void 0===e?void 0:e.disabledById)||{}),[i,o]=OE(null===t||void 0===t?void 0:t.selectedById,(null===e||void 0===e?void 0:e.selectedById)||{}),[a,s]=OE(null===t||void 0===t?void 0:t.expandedById,(null===e||void 0===e?void 0:e.expandedById)||{}),[l,c]=OE(null===t||void 0===t?void 0:t.activeItemId,null===e||void 0===e?void 0:e.activeItemId);return{disabledById:n,setDisabled:r,selectedById:i,setSelected:o,expandedById:a,setExpanded:s,activeItemId:l,setActiveItemId:c}}({controlledValues:{expandedById:b,disabledById:x,activeItemId:w,selectedById:Y}}),Q=null!==R&&void 0!==R?R:K.setActiveItemId,X=dE(Object.assign({items:c,getItemId:k},K)),$=a.useCallback((e=>null===N||void 0===N?void 0:N(e,e.map((e=>X.itemsById[e])))),[X.itemsById,N]),{open:J,toggleOpen:ee,handleClearValue:te,handleMultipleSelection:ne,handleSingleSelection:re}=(e=>{let{value:t,setInnerValue:n,defaultOpen:r,onClose:i,onOpenChange:o,open:s,onUpdate:l}=e;const{toggleOpen:c,open:u}=qh({defaultOpen:r,onClose:i,onOpenChange:o,open:s}),d=a.useCallback((e=>{if(!t.includes(e)){const t=[e];null===l||void 0===l||l(t),null===n||void 0===n||n(t)}c(!1)}),[t,c,l,n]),h=a.useCallback((e=>{const r=t.includes(e)?t.filter((t=>t!==e)):[...t,e];null===l||void 0===l||l(r),null===n||void 0===n||n(r)}),[t,l,n]),p=a.useCallback((()=>{null===l||void 0===l||l([]),null===n||void 0===n||n([])}),[l,n]);return{open:u,toggleOpen:c,handleSingleSelection:d,handleMultipleSelection:h,handleClearValue:p}})({setInnerValue:Z,value:q,onUpdate:$,defaultOpen:u,open:g,onClose:O,onOpenChange:j}),ie=a.useCallback((e=>{const{groupState:t}=e.context,n=()=>{K.disabledById[e.id]||(Q(e.id),t&&"expandable"===C?K.setExpanded((t=>Object.assign(Object.assign({},t),{[e.id]:!e.expanded}))):v?ne(e.id):(re(e.id),ee(!1)))};return A?A(e,n):n()}),[A,K,Q,C,v,ne,re,ee]);a.useLayoutEffect((()=>{var e;if(J){const t=q[q.length-1];null===(e=G.current)||void 0===e||e.focus(),Q(t),t&&pE(t,G.current)}}),[J]);const oe=a.useCallback((()=>ee(!1)),[ee]),ae={open:J,toggleOpen:ee,clearValue:te,ref:W,size:l,value:q,id:B,activeItemId:K.activeItemId,title:L},se=I?I(ae):a.createElement(Qx,Object.assign({},ae,{selectedOptionsContent:a.Children.toArray(q.map((e=>M(X.itemsById[e]).title))).join(", "),view:"normal",pin:"round-round",popupId:"tree-select-popup-".concat(B),selectId:"tree-select-".concat(B)})),le=Object.assign({},"max"===d&&{width:d}),ce={};return"number"===typeof d&&(ce.width=d),a.createElement(Ai.k,{direction:"column",gap:"5",ref:U,className:NE(le,p),style:ce},se,a.createElement(pw,{ref:U,className:NE("popup",{size:l},m),controlRef:H,width:y,placement:i,open:J,handleClose:oe,disablePortal:_,mobile:F,id:"tree-select-popup-".concat(B)},o,a.createElement(TE,{size:l,className:NE("list",f),qa:r,multiple:v,id:"list-".concat(B),containerRef:G,getItemId:k,disabledById:K.disabledById,selectedById:K.selectedById,expandedById:K.expandedById,activeItemId:K.activeItemId,setActiveItemId:Q,onItemClick:ie,items:c,defaultGroupsExpanded:T,renderContainer:D,mapItemDataToProps:M,renderItem:null!==P&&void 0!==P?P:kE}),s))})),IE=JSON.parse('{"button_apply":"Apply","button_reset":"Reset","button_switcher":"Columns"}'),PE=JSON.parse('{"button_apply":"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c","button_reset":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c","button_switcher":"\u041a\u043e\u043b\u043e\u043d\u043a\u0438"}'),DE=(0,mi.e)({en:IE,ru:PE},"TableColumnSetupInner"),AE=(0,le.Ge)("inner-table-column-setup"),RE=AE("controls"),ME={isDragDisabled:!0},LE=e=>({title:e.title}),FE=e=>{const{renderSwitcher:t,popupWidth:n,popupPlacement:r,items:i,onUpdate:o,sortable:s,renderControls:l,className:c,defaultItems:u=i,showResetButton:d}=e,[h,p]=a.useState(!1),[f,m]=a.useState(i),[g,v]=a.useState(i);i!==g&&(v(i),m(i));const y=()=>{const e=f.map((e=>{let{id:t,isSelected:n}=e;return{id:t,isSelected:n}}));o(e),p(!1)},b=()=>a.createElement(Ie.z,{view:"action",width:"max",onClick:y},DE("button_apply")),x="function"===typeof d?d(f):d,w=(e=>{let{onDragEnd:t,renderControls:n}=e;const r=ue();return e=>{let{renderItem:i,visibleFlattenIds:o,itemsById:s,containerRef:l,id:c,className:u}=e;const{stickyStartItemIdList:d,sortableItemIdList:h,stickyEndItemIdList:p}=((e,t)=>{let n=0;for(;n!==t.length;n++){const r=e[t[n]];if("left"!==(null===r||void 0===r?void 0:r.sticky)&&"start"!==(null===r||void 0===r?void 0:r.sticky))break}let r=t.length;for(;0!==r;r--){const n=e[t[r-1]];if("right"!==(null===n||void 0===n?void 0:n.sticky)&&"end"!==(null===n||void 0===n?void 0:n.sticky))break}return{stickyStartItemIdList:t.slice(0,n),sortableItemIdList:t.slice(n,r),stickyEndItemIdList:t.slice(r)}})(s,o),f=d.map(((e,t)=>i(e,t,ME))),m=h.map(((e,t)=>i(e,t+d.length))),g=p.map(((e,t)=>i(e,f.length+m.length+t,ME)));return a.createElement(a.Fragment,null,a.createElement(wE,{ref:l,id:c,className:u},f,a.createElement(Gy,{onDragEnd:t},a.createElement(Pb,{droppableId:r,renderClone:(e,t,n)=>{const r={provided:e,snapshot:t};return i(o[n.source.index],n.source.index,r)}},(e=>a.createElement("div",Object.assign({},e.droppableProps,{ref:e.innerRef}),m,e.placeholder)))),g),a.createElement("div",{className:RE},n()))}})({onDragEnd:e=>{let{destination:t,source:n}=e;void 0!==(null===t||void 0===t?void 0:t.index)&&(null===t||void 0===t?void 0:t.index)!==n.index&&m((e=>((e,t,n)=>{const r=[...e],[i]=r.splice(t,1);return r.splice(n,0,i),r})(e,n.index,t.index)))},renderControls:()=>l?l({DefaultApplyButton:b,onApply:y}):a.createElement(Ai.k,{gapRow:1,direction:"column",className:RE},x&&a.createElement(Ie.z,{onClick:()=>{m(u)},width:"max"},DE("button_reset")),a.createElement(b,null))}),S=(e=>t=>{let{data:n,props:r,index:i,renderContainerProps:o}=t;const s=!1===e||!0===(null===o||void 0===o?void 0:o.isDragDisabled),l=s?void 0:a.createElement(we.J,{data:cx,size:16}),c=!n.isRequired,u=n.isRequired?a.createElement(we.J,{data:nE}):void 0,d=!n.isRequired&&r.selected,h=Object.assign(Object.assign({},r),{selected:d,startSlot:u,hasSelectionIcon:c,endSlot:l});if(s)return a.createElement(bE,Object.assign({},h,{key:h.id}));const p=(e,t)=>a.createElement(bE,Object.assign({},h,e.draggableProps,e.dragHandleProps,{ref:e.innerRef,dragging:t.isDragging}));return(null===o||void 0===o?void 0:o.provided)&&o.snapshot?p(o.provided,o.snapshot):a.createElement(Nb,{draggableId:r.id,index:i,key:"item-key-".concat(r.id),isDragDisabled:s},p)})(s),_=a.useMemo((()=>(e=>{const t=[];return e.forEach((e=>{let{id:n,isSelected:r}=e;r&&t.push(n)})),t})(f)),[f]);return a.createElement(jE,{className:AE(null,c),mapItemDataToProps:LE,multiple:!0,size:"l",open:h,value:_,items:f,onUpdate:e=>{m((t=>t.map((t=>Object.assign(Object.assign({},t),{isSelected:t.isRequired||e.includes(t.id)})))))},popupWidth:n,onOpenChange:e=>{p(e),!1===e&&m(i)},placement:r,renderContainer:w,renderControl:e=>{let{toggleOpen:n}=e;const r=(0,ci.S)(n);return(null===t||void 0===t?void 0:t({onClick:n,onKeyDown:r}))||a.createElement(Ie.z,{onClick:n,extraProps:{onKeyDown:r}},a.createElement(we.J,{data:tE}),DE("button_switcher"))},renderItem:S})},zE=JSON.parse('{"button_switcher":"Columns"}'),BE=JSON.parse('{"button_switcher":"\u041a\u043e\u043b\u043e\u043d\u043a\u0438"}'),UE=(0,mi.e)({en:zE,ru:BE},"TableColumnSetup"),HE=(0,le.Ge)("table-column-setup"),VE=e=>{const{switcher:t,renderSwitcher:n,disabled:r,popupWidth:i,popupPlacement:o,className:s,items:l,sortable:c=!0,showStatus:u,onUpdate:d}=e,h=l.map((e=>{let{id:t,title:n,required:r,selected:i,sticky:o}=e;return{id:t,title:n,isRequired:r,isSelected:i,sticky:o}}));return a.createElement(FE,{items:h,onUpdate:e=>{d(e.map((e=>{let{id:t,isSelected:n}=e;const r=l.find((e=>e.id===t));return{id:t,selected:n,title:null===r||void 0===r?void 0:r.title,required:null===r||void 0===r?void 0:r.required}})))},popupPlacement:o,popupWidth:i,renderSwitcher:e=>(null===n||void 0===n?void 0:n(e))||t||a.createElement(Ie.z,{disabled:r,onClick:e.onClick},a.createElement(we.J,{data:tE}),UE("button_switcher"),(()=>{if(!u)return null;const e=l.reduce(((e,t)=>t.selected?e+1:e),0),t=l.length,n="".concat(e,"/").concat(t);return a.createElement("span",{className:HE("status")},n)})()),sortable:c,className:HE(null,s)})};var GE=n(20163);const WE=e=>e.clusters.clusterName,qE=e=>e.clusters.status,ZE=e=>e.clusters.service,YE=e=>e.clusters.version,KE=(e,t)=>0===t.length||e.status&&t.includes(e.status),QE=(e,t)=>0===t.length||e.service&&t.includes(e.service),XE=(e,t)=>0===t.length||t.some((t=>{var n,r;return null===(n=e.cluster)||void 0===n||null===(r=n.Versions)||void 0===r?void 0:r.some((e=>e.startsWith(t)))})),$E=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!n)return!0;const r=n.toLowerCase(),i=r.split(" "),o=(null===(t=e.title)||void 0===t?void 0:t.toLowerCase().match(/[^\d\s]+|\d+|[^-\s]+|[^_\s]+/g))||[],a=i.every((t=>{const n=m_()(t),r=new RegExp("^".concat(n,"|[\\s\\-_]").concat(n),"i");return e.title&&r.test(e.title)||o.some((e=>e.startsWith(t)))})),s=e.preparedVersions.some((e=>e.version.includes(r))),l=Boolean(e.hosts&&e.hosts[r]);return a||s||l};const JE=JSON.parse('{"controls_status-select-label":"Status:","controls_service-select-label":"Service:","controls_version-select-label":"Version:","controls_search-placeholder":"Cluster name, version, host","controls_select-placeholder":"All","statistics_clusters":"Clusters","statistics_hosts":"Hosts","statistics_tenants":"Tenants","statistics_nodes":"Nodes","statistics_load":"Load","statistics_storage":"Storage","tooltip_no-cluster-data":"No cluster data","page_title":"Clusters"}'),eT=JSON.parse('{"controls_status-select-label":"\u0421\u0442\u0430\u0442\u0443\u0441:","controls_service-select-label":"\u0421\u0435\u0440\u0432\u0438\u0441:","controls_version-select-label":"\u0412\u0435\u0440\u0441\u0438\u044f:","controls_search-placeholder":"\u0418\u043c\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0432\u0435\u0440\u0441\u0438\u044f \u0438\u043b\u0438 \u0445\u043e\u0441\u0442","controls_select-placeholder":"\u0412\u0441\u0435","statistics_clusters":"\u041a\u043b\u0430\u0441\u0442\u0435\u0440\u044b","statistics_hosts":"\u0425\u043e\u0441\u0442\u044b","statistics_tenants":"\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445","statistics_nodes":"\u0423\u0437\u043b\u044b","statistics_load":"\u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430","statistics_storage":"\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435","tooltip_no-cluster-data":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430","page_title":"\u041a\u043b\u0430\u0441\u0442\u0435\u0440\u044b"}'),tT=(0,We.wZ)("ydb-clusters-page",{ru:eT,en:JE}),nT=Me("clusters"),rT=e=>{let{count:t,stats:n}=e;const{NodesTotal:r,NodesAlive:i,Hosts:o,Tenants:a,LoadAverage:s,NumberOfCpus:l,StorageUsed:c,StorageTotal:u}=n;return(0,Le.jsxs)("div",{className:nT("aggregation"),children:[(0,Le.jsxs)("div",{className:nT("aggregation-value-container"),children:[(0,Le.jsx)("span",{className:nT("aggregation-label"),children:tT("statistics_clusters")}),t]}),(0,Le.jsxs)("div",{className:nT("aggregation-value-container"),children:[(0,Le.jsx)("span",{className:nT("aggregation-label"),children:tT("statistics_hosts")}),o]}),(0,Le.jsxs)("div",{className:nT("aggregation-value-container"),children:[(0,Le.jsx)("span",{className:nT("aggregation-label"),children:tT("statistics_tenants")}),a]}),(0,Le.jsxs)("div",{className:nT("aggregation-value-container"),children:[(0,Le.jsx)("span",{className:nT("aggregation-label"),children:tT("statistics_nodes")}),(0,Le.jsx)(Iu,{size:"ns",value:i,capacity:r,colorizeProgress:!0,inverseColorize:!0})]}),(0,Le.jsxs)("div",{className:nT("aggregation-value-container"),children:[(0,Le.jsx)("span",{className:nT("aggregation-label"),children:tT("statistics_load")}),(0,Le.jsx)(Iu,{size:"ns",value:s,capacity:l,colorizeProgress:!0})]}),(0,Le.jsxs)("div",{className:nT("aggregation-value-container"),children:[(0,Le.jsx)("span",{className:nT("aggregation-label"),children:tT("statistics_storage")}),(0,Le.jsx)(Iu,{size:"ns",value:c,capacity:u,formatValues:ks.QO,colorizeProgress:!0})]})]})},iT={pc:{NormalizeMap:{arrowup:"up",arrowdown:"down",arrowleft:"left",arrowright:"right",esc:"escape",return:"enter",mod:"ctrl",control:"ctrl",opt:"alt",option:"alt",cmd:"ctrl",command:"ctrl"},Priority:{shift:200,alt:300,ctrl:400},DisplayName:{up:"\u2191",down:"\u2193",left:"\u2190",right:"\u2192",escape:"Esc",plus:"\uff0b",enter:"Enter",ctrl:"Ctrl",alt:"Alt",shift:"Shift",tab:"Tab",backspace:"Backspace"}},mac:{NormalizeMap:{arrowup:"up",arrowdown:"down",arrowleft:"left",arrowright:"right",esc:"escape",enter:"return",mod:"command",ctrl:"control",alt:"option",opt:"option",cmd:"command"},Priority:{command:100,shift:200,option:300,control:400},DisplayName:{up:"\u25b2",down:"\u25bc",left:"\u25c0",right:"\u25b6",escape:"\u238b",plus:"\uff0b",return:"\u23ce",command:"\u2318",option:"\u2325",control:"\u2303",shift:"\u21e7",backspace:"\u232b",tab:"\u21e5"}}};var oT=n(6381),aT=n.n(oT),sT=n(60619),lT=n.n(sT);const cT=()=>"undefined"!==typeof navigator&&/Mac|iP(hone|[oa]d)/.test(navigator.platform);function uT(e,t){return e.trim().split(t).filter(Boolean)}const dT=/\s/,hT="+";function pT(e,t){return uT(t,dT).map((t=>lT()(uT(t,hT).map(function(e){return function(t){var n;const r=function(e,t){var n;return t=t.toLowerCase(),null!==(n=e.NormalizeMap[t])&&void 0!==n?n:t}(e,t);return{raw:t,id:r,priority:null!==(n=e.Priority[r])&&void 0!==n?n:0,displayName:e.DisplayName[r]}}}(e)).sort(((e,t)=>t.priority-e.priority)),(e=>e.id)).map(fT)))}function fT(e){var t;return null!==(t=e.displayName)&&void 0!==t?t:aT()(e.id)}const mT=(0,le.Ge)("hotkey"),gT={BetweenGroups:String.fromCharCode(160),BetweenKeys:String.fromCharCode(8239)},vT=a.forwardRef((function(e,t){const{value:n,platform:r,view:i="light",qa:o,style:s,className:l}=e,c=function(e,t){var n;const r=null!==(n=t.platform)&&void 0!==n?n:cT()?"mac":"pc",i=iT[r];return pT(i,e)}(n,{platform:r}),u=[];let d=!1;return c.forEach(((e,t)=>{0!==e.length&&(d?u.push(gT.BetweenGroups):d=!0,e.forEach(((e,n)=>{0===n||u.push(gT.BetweenKeys,a.createElement("span",{key:"".concat(e,"_").concat(t,"_").concat(n,"_plus"),className:mT("plus")},"+"),gT.BetweenKeys),u.push(a.createElement("kbd",{key:"".concat(e,"_").concat(t,"_").concat(n)},e))})))})),0===u.length?null:a.createElement("kbd",{ref:t,style:s,"data-qa":o,className:mT({view:i},l)},u)}));const yT=["bottom","top"],bT=(0,le.Ge)("action-tooltip");function xT(e){const{placement:t=yT,title:n,hotkey:r,children:i,className:o,contentClassName:s,description:l,disabled:c=!1,style:u,qa:d,id:h,disablePortal:p}=e,f=(0,nt._T)(e,["placement","title","hotkey","children","className","contentClassName","description","disabled","style","qa","id","disablePortal"]),[m,g]=a.useState(null),v=sl(m,f),y=a.Children.only(i),b=Et(g,y.ref);return a.createElement(a.Fragment,null,a.cloneElement(y,{ref:b}),m?a.createElement(ti,{id:h,disablePortal:p,role:"tooltip",className:bT(null,o),style:u,open:v&&!c,placement:t,anchorRef:{current:m},disableEscapeKeyDown:!0,disableOutsideClick:!0,disableLayer:!0,qa:d},a.createElement("div",{className:bT("content",s)},a.createElement("div",{className:bT("heading")},a.createElement("div",{className:bT("title")},n),r&&a.createElement(vT,{view:"dark",value:r,className:bT("hotkey")})),l&&a.createElement("div",{className:bT("description")},l))):null)}const wT=JSON.parse('{"startCopy":"Copy","endCopy":"Copied!"}'),ST=JSON.parse('{"startCopy":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c","endCopy":"\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e!"}'),_T=(0,mi.e)({en:wT,ru:ST},"ClipboardButton"),CT=1e3,ET={xs:12,s:16,m:16,l:16,xl:20},TT=e=>{const{size:t="m",hasTooltip:n=!0,tooltipInitialText:r=_T("startCopy"),tooltipSuccessText:i=_T("endCopy"),status:o,view:s="flat",extraProps:l={}}=e,c=(0,nt._T)(e,["size","hasTooltip","tooltipInitialText","tooltipSuccessText","status","view","extraProps"]);return a.createElement(xT,{disabled:!n,title:"success"===o?i:r},a.createElement(Ie.z,Object.assign({view:s,size:t,extraProps:Object.assign({"aria-label":r},l)},c),a.createElement(Ie.z.Icon,null,a.createElement(at,{size:ET[t],status:o}))))};function OT(e){const{text:t,timeout:n=CT,onCopy:r,options:i}=e,o=(0,nt._T)(e,["text","timeout","onCopy","options"]);return a.createElement(ut,{text:t,timeout:n,onCopy:r,options:i},(e=>a.createElement(TT,Object.assign({},o,{status:e}))))}const NT=Me("kv-user");function kT(e){let{login:t,className:n}=e;const r=Be("StaffCard");return(0,Le.jsx)("div",{className:NT(null,n),children:(0,Le.jsx)(r,{login:t,children:(0,Le.jsx)("div",{className:NT("name"),children:t})})})}const jT=e=>e.replace(/\/viewer\/json/,""),IT=e=>{const t=jT((e=>e.replace(/http[s]?:\/\//,""))(e)),n=t.split("/");if(1===n.length)return{balancer:n[0],proxy:void 0};const r=n[0];return{balancer:t.replace(r+"/",""),proxy:r}},PT=e=>IT(e).balancer.replace(/:\d+$/,""),DT="selectedColumns",AT={TITLE:"title",VERSIONS:"versions",CLUSTER:"cluster",SERVICE:"service",STATUS:"status",NODES:"nodes",LOAD:"load",STORAGE:"storage",HOSTS:"hosts",TENANTS:"tenants",OWNER:"owner",DESCRIPTION:"description",BALANCER:"balancer"},RT=[AT.TITLE,AT.VERSIONS,AT.SERVICE,AT.STATUS,AT.NODES,AT.LOAD,AT.STORAGE,AT.HOSTS,AT.TENANTS,AT.OWNER,AT.BALANCER],MT={[AT.TITLE]:"Cluster",[AT.VERSIONS]:"Versions",[AT.CLUSTER]:"DC",[AT.SERVICE]:"Service",[AT.STATUS]:"Status",[AT.NODES]:"Nodes",[AT.LOAD]:"Load",[AT.STORAGE]:"Storage",[AT.HOSTS]:"Hosts",[AT.TENANTS]:"Tenants",[AT.OWNER]:"Owner",[AT.DESCRIPTION]:"Description",[AT.BALANCER]:"Balancer"},LT="clustersTableColumnsWidth",FT=(0,Le.jsx)("span",{className:nT("empty-cell"),children:"\u2014"}),zT=[{name:AT.TITLE,header:MT[AT.TITLE],width:230,render:e=>{var t,n;let{row:r}=e;const{balancer:i,name:o}=r,a=i&&jT(i),s=(0,$C.B7)(void 0,{backend:a,clusterName:o}),l=null===(t=r.cluster)||void 0===t?void 0:t.Overall;return(0,Le.jsxs)("div",{className:nT("cluster"),children:[l?(0,Le.jsx)(si,{href:s,children:(0,Le.jsx)("div",{className:nT("cluster-status",{type:l&&l.toLowerCase()})})}):(0,Le.jsx)("div",{className:nT("cluster-status"),children:(0,Le.jsx)(Io,{content:(0,Le.jsx)("span",{className:nT("tooltip-content"),children:(null===(n=r.cluster)||void 0===n?void 0:n.error)||tT("tooltip_no-cluster-data")}),offset:{left:0}})}),(0,Le.jsx)("div",{className:nT("cluster-name"),children:(0,Le.jsx)(si,{href:s,children:r.title})})]})},defaultOrder:Hc.ZP.ASCENDING},{name:AT.VERSIONS,header:MT[AT.VERSIONS],width:300,defaultOrder:Hc.ZP.DESCENDING,sortAccessor:e=>{let{preparedVersions:t}=e;return t.map((e=>e.version.replace(/^[0-9]\+\./g,""))).sort(((e,t)=>e.localeCompare(t)))[0]||void 0},render:e=>{let{row:t}=e;const{preparedVersions:n,versions:r=[],balancer:i,name:o}=t;if(!r.length||r.some((e=>!e.version)))return FT;const s=r.reduce(((e,t)=>e+t.count),0),l=r.map((e=>{var t;return{value:e.count/s*100,color:null===(t=n.find((t=>t.version===e.version)))||void 0===t?void 0:t.color}})),c=i&&jT(i);return n.length>0&&(0,Le.jsx)(si,{className:nT("cluster-versions"),href:(0,$C.B7)($C.xu.versions,{backend:c,clusterName:o}),children:(0,Le.jsxs)(a.Fragment,{children:[n.map(((e,t)=>(0,Le.jsx)("div",{className:nT("cluster-version"),style:{color:e.color},title:e.version,children:e.version},t))),(0,Le.jsx)(gC,{size:"s",value:100,stack:l})]})})}},{name:AT.CLUSTER,header:MT[AT.CLUSTER],width:120,sortable:!1,render:e=>{let{row:t}=e;const n=t.cluster&&t.cluster.DataCenters||[];return(0,Le.jsx)("div",{className:nT("cluster-dc"),children:n.join(", ")||FT})}},{name:AT.SERVICE,header:MT[AT.SERVICE],width:100,sortable:!0},{name:AT.STATUS,header:MT[AT.STATUS],width:150,sortable:!0},{name:AT.NODES,header:MT[AT.NODES],resizeMinWidth:140,defaultOrder:Hc.ZP.DESCENDING,sortAccessor:e=>{let{cluster:t={}}=e;const{NodesTotal:n=0}=t;return n},render:e=>{let{row:t}=e;const{NodesAlive:n=0,NodesTotal:r=0,Overall:i}=t.cluster||{};return i?(0,Le.jsx)(Iu,{value:n,capacity:r}):FT}},{name:AT.LOAD,header:MT[AT.LOAD],resizeMinWidth:140,defaultOrder:Hc.ZP.DESCENDING,sortAccessor:e=>{let{cluster:t}=e;return null===t||void 0===t?void 0:t.NumberOfCpus},render:e=>{let{row:t}=e;const{LoadAverage:n=0,NumberOfCpus:r=0,Overall:i}=t.cluster||{};return i?(0,Le.jsx)(Iu,{value:n,capacity:r}):FT}},{name:AT.STORAGE,header:MT[AT.STORAGE],resizeMinWidth:140,defaultOrder:Hc.ZP.DESCENDING,sortAccessor:e=>{let{cluster:t}=e;return Number(null===t||void 0===t?void 0:t.StorageTotal)},render:e=>{let{row:t}=e;const{StorageUsed:n=0,StorageTotal:r=0,Overall:i}=t.cluster||{};return i?(0,Le.jsx)(Iu,{value:n,capacity:r,formatValues:ks.JD}):FT}},{name:AT.HOSTS,header:MT[AT.HOSTS],width:80,defaultOrder:Hc.ZP.DESCENDING,sortAccessor:e=>{let{cluster:t}=e;return Number(null===t||void 0===t?void 0:t.Hosts)||0},render:e=>{var t;let{row:n}=e;return Number(null===(t=n.cluster)||void 0===t?void 0:t.Hosts)||FT}},{name:AT.TENANTS,header:MT[AT.TENANTS],width:80,defaultOrder:Hc.ZP.DESCENDING,sortAccessor:e=>{let{cluster:t}=e;return Number(null===t||void 0===t?void 0:t.Tenants)||0},render:e=>{var t;let{row:n}=e;return Number(null===(t=n.cluster)||void 0===t?void 0:t.Tenants)||FT}},{name:AT.OWNER,header:MT[AT.OWNER],sortable:!1,width:120,render:e=>{var t;let{row:n}=e;const r=null===(t=n.owner)||void 0===t?void 0:t.split(", ");return null!==r&&void 0!==r&&r.length?r.map((e=>(0,Le.jsx)(kT,{login:e},e))):FT}},{name:AT.DESCRIPTION,header:MT[AT.DESCRIPTION],sortable:!1,width:150,render:e=>{let{row:t}=e;return t.description?(0,Le.jsx)("div",{className:nT("description"),children:t.description}):FT}},{name:AT.BALANCER,header:MT[AT.BALANCER],sortable:!1,width:290,render:e=>{let{row:t}=e;if(!t.balancer)return FT;const n=PT(t.balancer);return(0,Le.jsxs)("div",{className:nT("balancer-cell"),children:[(0,Le.jsx)("div",{className:nT("balancer-text"),children:n}),(0,Le.jsx)(OT,{size:"s",text:n,className:nT("balancer-icon")})]})}}],BT=(e,t,n,r,i)=>{const[o,a]=Mo(t,r),s=e.map((e=>e.name));return{columnsToShow:e.filter((e=>o.find((t=>t===e.name)))),columnsToSelect:s.map((e=>{const t=null===i||void 0===i?void 0:i.includes(e);return{id:e,title:n[e],selected:o.includes(e),required:t,sticky:t?"start":void 0}})),setColumns:e=>{const t=e.filter((e=>e.selected)).map((e=>e.id));a(t)}}};function UT(){const e=GE.W1.useGetClustersListQuery(void 0,{pollingInterval:Lo.ME}),t=Ao(),n=Do(WE),r=Do(qE),i=Do(ZE),o=Do(YE),{columnsToShow:s,columnsToSelect:l,setColumns:c}=BT(zT,DT,MT,RT,[AT.TITLE]),u=e.data,{servicesToSelect:d,versions:h}=a.useMemo((()=>{const e=new Set,t=new Set;return(null!==u&&void 0!==u?u:[]).forEach((n=>{var r,i;n.service&&e.add(n.service),null===(r=n.cluster)||void 0===r||null===(i=r.Versions)||void 0===i||i.forEach((e=>{t.add((0,Ll.H)(e))}))})),{servicesToSelect:Array.from(e).map((e=>({value:e,content:e}))),versions:Array.from(t).map((e=>({value:e,content:e})))}}),[u]),p=a.useMemo((()=>function(e,t){return e.filter((e=>KE(e,t.status)&&QE(e,t.service)&&XE(e,t.version)&&$E(e,t.clusterName)))}(null!==u&&void 0!==u?u:[],{clusterName:n,status:r,service:i,version:o})),[n,u,i,r,o]),f=a.useMemo((()=>function(e){let t=0,n=0,r=0,i=0,o=0,a=0,s=0;const l=new Set;return e.filter((e=>{let{cluster:t}=e;return!(null!==t&&void 0!==t&&t.error)})).forEach((e=>{let{cluster:c,hosts:u={}}=e;t+=(null===c||void 0===c?void 0:c.NodesTotal)||0,n+=(null===c||void 0===c?void 0:c.NodesAlive)||0,Object.keys(u).forEach((e=>l.add(e))),s+=Number(null===c||void 0===c?void 0:c.Tenants)||0,r+=Number(null===c||void 0===c?void 0:c.LoadAverage)||0,i+=(null===c||void 0===c?void 0:c.NumberOfCpus)||0,o+=null!==c&&void 0!==c&&c.StorageUsed?Math.floor(parseInt(c.StorageUsed,10)):0,a+=null!==c&&void 0!==c&&c.StorageTotal?Math.floor(parseInt(c.StorageTotal,10)):0})),{NodesTotal:t,NodesAlive:n,Hosts:l.size,Tenants:s,LoadAverage:r,NumberOfCpus:i,StorageUsed:o,StorageTotal:a}}(p)),[p]),m=a.useMemo((()=>Array.from(new Set((null!==u&&void 0!==u?u:[]).map((e=>e.status)).filter(Boolean))).sort().map((e=>({value:e,content:e})))),[u]);return e.isLoading?(0,Le.jsx)(N_,{size:"l"}):(0,Le.jsxs)("div",{className:nT(),children:[(0,Le.jsx)(oe,{children:(0,Le.jsx)("title",{children:tT("page_title")})}),(0,Le.jsx)(rT,{stats:f,count:p.length}),(0,Le.jsxs)("div",{className:nT("controls"),children:[(0,Le.jsx)("div",{className:nT("control",{wide:!0}),children:(0,Le.jsx)(Yc,{placeholder:tT("controls_search-placeholder"),onChange:e=>{t((0,GE.g_)({clusterName:e}))},value:n})}),(0,Le.jsx)("div",{className:nT("control"),children:(0,Le.jsx)(ww,{multiple:!0,filterable:!0,hasClear:!0,placeholder:tT("controls_select-placeholder"),label:tT("controls_status-select-label"),value:r,options:m,onUpdate:e=>{t((0,GE.g_)({status:e}))},width:"max"})}),(0,Le.jsx)("div",{className:nT("control"),children:(0,Le.jsx)(ww,{multiple:!0,filterable:!0,hasClear:!0,placeholder:tT("controls_select-placeholder"),label:tT("controls_service-select-label"),value:i,options:d,onUpdate:e=>{t((0,GE.g_)({service:e}))},width:"max"})}),(0,Le.jsx)("div",{className:nT("control"),children:(0,Le.jsx)(ww,{multiple:!0,filterable:!0,hasClear:!0,placeholder:tT("controls_select-placeholder"),label:tT("controls_version-select-label"),value:o,options:h,onUpdate:e=>{t((0,GE.g_)({version:e}))},width:"max"})}),(0,Le.jsx)("div",{className:nT("control"),children:(0,Le.jsx)(VE,{popupWidth:242,items:l,showStatus:!0,onUpdate:c,sortable:!1},"TableColumnSetup")})]}),e.isError?(0,Le.jsx)(zc,{error:e.error,className:nT("error")}):null,(0,Le.jsx)("div",{className:nT("table-wrapper"),children:(0,Le.jsx)("div",{className:nT("table-content"),children:(0,Le.jsx)(qc,{columnsWidthLSKey:LT,wrapperClassName:nT("table"),data:p,columns:s,settings:{...Lo.LE,dynamicRender:!1},initialSortOrder:{columnId:AT.TITLE,order:Hc.ZP.ASCENDING}})})})]})}const HT=(0,le.Ge)("breadcrumbs");function VT(e){return a.createElement("button",Object.assign({},e,{type:"button",className:HT("switcher",{more:!0})}))}const GT=(0,le.Ge)("breadcrumbs");const WT=a.memo((function(e){let{item:t,isCurrent:n,isPrevCurrent:r,renderItemContent:i,renderItem:o}=e;const s=i?i(t,n,r):t.text;if(o)return o({item:t,children:s,isCurrent:n,isPrevCurrent:r});const l=t.title||t.text;return r||!n?void 0!==t.href?a.createElement(si,{key:t.text,view:"secondary",href:t.href,title:l,onClick:t.action,className:GT("item",{"prev-current":r})},s):a.createElement(VT,{key:t.text,title:l,onClick:t.action},s):a.createElement("div",{title:l,className:GT("item",{current:!0})},s)}));WT.displayName="Breadcrumbs.Item";const qT=JSON.parse('{"label_more":"Show more"}'),ZT=JSON.parse('{"label_more":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435"}'),YT=(0,mi.e)({en:qT,ru:ZT},"Breadcrumbs"),KT=(0,le.Ge)("breadcrumbs");function QT(e){let{popupStyle:t,popupPlacement:n,items:r}=e;return a.createElement(nC,{items:r,popupProps:{className:KT("popup",{staircase:"staircase"===t}),placement:n},renderSwitcher:e=>{let{onClick:t}=e;return a.createElement(VT,{title:YT("label_more"),onClick:t},"...")}})}QT.displayName="Breadcrumbs.More";const XT=(0,le.Ge)("breadcrumbs");function $T(e){let{renderItemDivider:t}=e;return a.createElement("div",{"aria-hidden":!0,className:XT("divider")},t?t():"/")}$T.displayName="Breadcrumbs.Separator";const JT=(0,le.Ge)("breadcrumbs");var eO,tO;!function(e){e[e.One=1]="One",e[e.Two=2]="Two"}(eO||(eO={})),function(e){e[e.Zero=0]="Zero",e[e.One=1]="One"}(tO||(tO={}));class nO extends a.Component{static prepareInitialState(e){const{firstDisplayedItemsCount:t}=e;return{calculated:!1,rootItem:t?e.items[0]:void 0,visibleItems:e.items.slice(t),hiddenItems:[],allItems:e.items}}static getDerivedStateFromProps(e,t){return t.allItems!==e.items?nO.prepareInitialState(e):null}constructor(e){super(e),this.handleResize=()=>{const e=nO.prepareInitialState(this.props);this.setState(e,this.recalculate)},this.handleResize=kt()(this.handleResize,200),"undefined"!==typeof window&&(this.resizeObserver=new ResizeObserver(this.handleResize)),this.container=a.createRef(),this.state=nO.prepareInitialState(e)}componentDidMount(){var e;this.recalculate(),null===(e=this.resizeObserver)||void 0===e||e.observe(this.container.current)}componentDidUpdate(e){e.items!==this.state.allItems&&this.recalculate()}componentWillUnmount(){var e;null===(e=this.resizeObserver)||void 0===e||e.disconnect()}render(){const{className:e,qa:t}=this.props,{calculated:n}=this.state;return a.createElement("div",{className:JT({calculated:n?"yes":"no"},e),"data-qa":t},a.createElement("div",{className:JT("inner"),ref:this.container},this.renderRootItem(),this.renderMoreItem(),this.renderVisibleItems()))}renderItem(e,t,n,r){return a.createElement(WT,{item:e,isCurrent:t,isPrevCurrent:n,renderItemContent:r||this.props.renderItemContent,renderItem:this.props.renderItem})}renderItemDivider(){const{renderItemDivider:e}=this.props;return a.createElement($T,{renderItemDivider:e})}renderRootItem(){const{renderRootContent:e}=this.props,{rootItem:t,visibleItems:n}=this.state,r=0===n.length;return t?this.renderItem(t,r,!1,e):null}renderVisibleItems(){const{visibleItems:e}=this.state;return e.map(((e,t,n)=>{const r=t===n.length-1,i=t===n.length-2;return a.createElement(a.Fragment,{key:t},this.renderItemDivider(),this.renderItem(e,r,i))}))}renderMoreItem(){const{hiddenItems:e}=this.state;if(0===e.length)return null;const{popupStyle:t,popupPlacement:n,renderItemDivider:r}=this.props;return a.createElement(a.Fragment,null,a.createElement($T,{renderItemDivider:r}),a.createElement(QT,{items:e,popupPlacement:n,popupStyle:t}))}recalculate(){var e;const{items:t,lastDisplayedItemsCount:n,firstDisplayedItemsCount:r}=this.props;let i=(null===(e=this.container.current)||void 0===e?void 0:e.offsetWidth)||0;if(this.container.current&&i>0){i+=4;const e=Array.from(this.container.current.querySelectorAll(".".concat(JT("divider")))),o=[...Array.from(this.container.current.querySelectorAll(".".concat(JT("switcher")))),...Array.from(this.container.current.querySelectorAll(".".concat(JT("item"))))],a=o.map(((e,t)=>e.scrollWidth+(t===o.length-1?4:8))),s=e.map((e=>e.offsetWidth)),l=a.reduce(((e,t,r,i)=>{const o=i.length-1===r,a=n===eO.Two&&i.length-2===r;return o||a?e+Math.min(t,200):e+t}),0);let c=l+s.reduce(((e,t)=>e+t),0),u=1;for(;c>i&&u<o.length-n;)1===u&&(c+=34+s[u]),c-=a[u]+s[u],u++;this.setState({calculated:!0,visibleItems:t.slice(u-(1-r)),hiddenItems:t.slice(r,u-(1-r))})}}}nO.defaultProps={popupPlacement:["bottom","top"]};const rO=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M11 2.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM14 4a3 3 0 1 0-5.895.79L6.15 5.908a3 3 0 1 0 0 4.185l1.955 1.117A3.003 3.003 0 0 0 11 15a3 3 0 1 0-2.15-5.092L6.895 8.79a3.003 3.003 0 0 0 0-1.58L8.85 6.092A3 3 0 0 0 14 4Zm-3 6.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM2.5 8a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Z",clipRule:"evenodd"})),iO=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M11.615 4.888c.814-.375.885-.714.885-.888 0-.174-.071-.513-.885-.888C10.8 2.737 9.538 2.5 8 2.5c-1.538 0-2.799.237-3.615.612-.814.375-.885.714-.885.888 0 .174.071.513.885.888C5.2 5.263 6.462 5.5 8 5.5c1.538 0 2.799-.237 3.615-.612Zm.885 1.235C11.4 6.708 9.792 7 8 7c-1.792 0-3.4-.292-4.5-.877V8c0 .174.071.513.885.888C5.2 9.263 6.462 9.5 8 9.5c1.538 0 2.799-.237 3.615-.612.814-.375.885-.714.885-.888V6.123Zm0 4C11.4 10.708 9.792 11 8 11c-1.792 0-3.4-.293-4.5-.877V12c0 .174.071.513.885.887.816.377 2.077.613 3.615.613 1.538 0 2.799-.236 3.615-.613.814-.374.885-.713.885-.887v-1.877ZM14 4c0-2-2.686-3-6-3S2 2 2 4v8c0 2 2.686 3 6 3s6-1 6-3V4Z",clipRule:"evenodd"})),oO=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M12 8.5a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5H4A1.5 1.5 0 0 1 2.5 11v-1A1.5 1.5 0 0 1 4 8.5h8Zm.89-1.366L11.488 4.33a1.5 1.5 0 0 0-1.342-.829H5.854a1.5 1.5 0 0 0-1.342.83L3.11 7.133A3 3 0 0 1 4 7h8a3 3 0 0 1 .89.134ZM15 9.18V11a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V9.18a5 5 0 0 1 .528-2.236L3.17 3.658A3 3 0 0 1 5.854 2h4.292a3 3 0 0 1 2.683 1.658l1.643 3.286A5 5 0 0 1 15 9.18Zm-6 .57a.75.75 0 0 0 0 1.5h2.5a.75.75 0 0 0 0-1.5H9Z",clipRule:"evenodd"})),aO=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M7 1.25a.75.75 0 0 0-1.5 0V2.5a3 3 0 0 0-3 3H1.25a.75.75 0 0 0 0 1.5H2.5v2H1.25a.75.75 0 0 0 0 1.5H2.5a3 3 0 0 0 3 3v1.25a.75.75 0 0 0 1.5 0V13.5h2v1.25a.75.75 0 0 0 1.5 0V13.5a3 3 0 0 0 3-3h1.25a.75.75 0 1 0 0-1.5H13.5V7h1.25a.75.75 0 1 0 0-1.5H13.5a3 3 0 0 0-3-3V1.25a.75.75 0 0 0-1.5 0V2.5H7V1.25ZM10.5 4h-5A1.5 1.5 0 0 0 4 5.5v5A1.5 1.5 0 0 0 5.5 12h5a1.5 1.5 0 0 0 1.5-1.5v-5A1.5 1.5 0 0 0 10.5 4Zm0 2.25a.75.75 0 0 0-.75-.75h-3.5a.75.75 0 0 0-.75.75v3.5a.75.75 0 0 0 .75.75h3.5a.75.75 0 0 0 .75-.75v-3.5ZM7 7h2v2H7V7Z",clipRule:"evenodd"})),sO=JSON.parse('{"breadcrumbs.tenant":"Tenant","breadcrumbs.node":"Node","breadcrumbs.pDisk":"PDisk","breadcrumbs.vDisk":"VDisk","breadcrumbs.tablet":"Tablet","breadcrumbs.tablets":"Tablets"}'),lO=(0,We.wZ)("ydb-header",{en:sO}),cO=e=>e.startsWith("/")?e.slice(1):e,uO=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{clusterName:n,clusterTab:r}=e;return[{text:n||Lo.DO,link:(0,$C.B7)(r,t),icon:(0,Le.jsx)(rO,{})}]},dO=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{tenantName:n}=e,r=n?cO(n):lO("breadcrumbs.tenant"),i=n?fs({...t,name:n}):void 0;return[...uO(e,t),{text:r,link:i,icon:(0,Le.jsx)(iO,{})}]},hO=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{tenantName:n,nodeId:r}=e;let i;const o=!n,a={...t,[us.bS]:us.m2.diagnostics,[ds.diagnosticsTab]:us.qQ.nodes};i=o?uO(e,t):dO(e,a);const s=r?"".concat(lO("breadcrumbs.node")," ").concat(r):lO("breadcrumbs.node"),l=r?bu(r,t):void 0,c=o?(0,Le.jsx)(oO,{}):(0,Le.jsx)(aO,{});return i.push({text:s,link:l,icon:c}),i},pO=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{nodeId:n,pDiskId:r}=e,i=hO({tenantName:void 0,nodeId:n}),o=r?"".concat(lO("breadcrumbs.pDisk")," ").concat(r):lO("breadcrumbs.pDisk"),a=r&&n?(0,Ta.ds)(r,n,t):void 0;return i.push({text:o,link:a}),i},fO=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{vDiskSlotId:n}=e,r=pO(e,t),i=n?"".concat(lO("breadcrumbs.vDisk")," ").concat(n):lO("breadcrumbs.vDisk");return r.push({text:i}),r},mO=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{tenantName:n,nodeIds:r}=e,i={...t,[us.bS]:us.m2.diagnostics,[ds.diagnosticsTab]:us.qQ.tablets};let o;o=n?dO(e,i):uO(e,t);const a=(0,Ta.ax)(Ta.ZP.tabletsFilters,void 0,{...t,nodeIds:r,path:n});return o.push({text:lO("breadcrumbs.tablets"),link:a}),o},gO=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{tabletId:n,tabletType:r}=e,i=mO(e,t);return i.push({text:n||lO("breadcrumbs.tablet"),icon:(0,Le.jsx)(DC,{text:(0,Lo.qV)(r)})}),i},vO=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};switch(e){case"cluster":return[...n,...uO(t,r)];case"tenant":return[...n,...dO(t,r)];case"node":return[...n,...hO(t,r)];case"pDisk":return[...n,...pO(t,r)];case"vDisk":return[...n,...fO(t,r)];case"tablets":return[...n,...mO(t,r)];case"tablet":return[...n,...gO(t,r)];default:return n}},yO=Me("header"),bO=e=>e&&!h_.j4?"/internal":h_.y3+"/internal";const xO=function(e){var t;let{mainPage:n}=e;const r=_a(),i=Ca(),o=Do((e=>e.singleClusterMode)),{page:s,pageBreadcrumbsOptions:l}=Do((e=>e.header)),c=(0,Ta.mB)(i),u=null===(t=c.clusterName)||void 0===t?void 0:t.toString(),{currentData:{clusterData:d}={}}=Pl.UM.useGetClusterInfoQuery(u),h=(null===d||void 0===d?void 0:d.Name)||u,p=a.useMemo((()=>{const e=[];let t=l;n&&e.push(n),h&&(t={...l,clusterName:h});return vO(s,t,e,c).map((e=>({...e,action:()=>{e.link&&r.push(e.link)}})))}),[h,n,r,c,s,l]);return(0,Le.jsxs)("header",{className:yO(),children:[(0,Le.jsx)("div",{children:(0,Le.jsx)(nO,{items:p,lastDisplayedItemsCount:1,firstDisplayedItemsCount:1,renderItemContent:e=>{let{icon:t,text:n}=e;return t?(0,Le.jsxs)("span",{className:yO("breadcrumb"),children:[(0,Le.jsx)("div",{className:yO("breadcrumb__icon"),children:t}),n]}):n}})}),(0,Le.jsx)(IC,{title:Lo.Ah,url:bO(o)})]})};var wO=n(48169);const SO=Me("basic-node-viewer"),_O=e=>{let t,{node:n,additionalNodesProps:r,className:i}=e;return null!==r&&void 0!==r&&r.getNodeRef?t=r.getNodeRef(n)+"internal":n.NodeId&&(t=(0,wO.wq)(n.NodeId)+"internal"),(0,Le.jsx)("div",{className:SO(null,i),children:n?(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("div",{className:SO("title"),children:"Node"}),(0,Le.jsx)(Il,{status:n.SystemState,name:n.Host}),t&&(0,Le.jsx)("a",{rel:"noopener noreferrer",className:SO("link",{external:!0}),href:t,target:"_blank",children:(0,Le.jsx)(we.J,{data:pu})}),(0,Le.jsxs)("div",{className:SO("id"),children:[(0,Le.jsx)("label",{className:SO("label"),children:"NodeID"}),(0,Le.jsx)("label",{children:n.NodeId})]}),n.DC&&(0,Le.jsx)(zC,{tags:[n.DC]}),n.Roles&&(0,Le.jsx)(zC,{tags:n.Roles,tagsType:"blue"})]}):(0,Le.jsx)("div",{className:"error",children:"no data"})})},CO=Me("ydb-pool-usage"),EO=e=>{let t="green";return e>60&&e<=80?t="yellow":e>80&&(t="red"),t},TO=e=>{let{data:t={}}=e;const{Threads:n,Name:r="Unknown",Usage:i=0}=t,o=i&&n,a=Math.floor(100*i),s=a>100?100:a;return(0,Le.jsxs)("div",{className:CO(),children:[(0,Le.jsxs)("div",{className:CO("info"),children:[(0,Le.jsx)("div",{className:CO("pool-name"),children:r}),o&&(0,Le.jsxs)("div",{className:CO("value"),children:[(0,Le.jsxs)("div",{className:CO("percents"),children:[a<1?"<1":a,"%"]}),(0,Le.jsxs)("div",{className:CO("threads"),children:["(\xd7",n,")"]})]})]}),(0,Le.jsx)("div",{className:CO("visual"),children:(0,Le.jsx)("div",{className:CO("usage-line",{type:EO(s)}),style:{width:"".concat(s,"%")}})})]})},OO=Me("full-node-viewer"),NO=e=>{var t,n,r,i;let{node:o,className:a}=e;const s=null===o||void 0===o||null===(t=o.Endpoints)||void 0===t?void 0:t.map((e=>{let{Name:t,Address:n}=e;return{label:t,value:n}})),l=[];null!==o&&void 0!==o&&null!==(n=o.Tenants)&&void 0!==n&&n.length&&l.push({label:"Database",value:o.Tenants[0]}),l.push({label:"Version",value:null===o||void 0===o?void 0:o.Version},{label:"Uptime",value:null===o||void 0===o?void 0:o.Uptime},{label:"DC",value:(null===o||void 0===o?void 0:o.DataCenterDescription)||(null===o||void 0===o?void 0:o.DC)},{label:"Rack",value:null===o||void 0===o?void 0:o.Rack});const c=null===o||void 0===o||null===(r=o.LoadAverage)||void 0===r?void 0:r.map(((e,t)=>({label:Lo.x5[t],value:(0,Le.jsx)(Iu,{value:e,percents:!0,colorizeProgress:!0,capacity:100})})));return(0,Le.jsx)("div",{className:"".concat(OO()," ").concat(a),children:o?(0,Le.jsxs)("div",{className:OO("common-info"),children:[(0,Le.jsxs)("div",{children:[(0,Le.jsx)("div",{className:OO("section-title"),children:"Pools"}),(0,Le.jsx)("div",{className:OO("section",{pools:!0}),children:null===o||void 0===o||null===(i=o.PoolStats)||void 0===i?void 0:i.map(((e,t)=>(0,Le.jsx)(TO,{data:e},t)))})]}),s&&s.length&&(0,Le.jsx)(Ss,{title:"Endpoints",className:OO("section"),info:s}),(0,Le.jsx)(Ss,{title:"Common info",className:OO("section"),info:l}),(0,Le.jsx)(Ss,{title:"Load average",className:OO("section",{average:!0}),info:c})]}):(0,Le.jsx)("div",{className:"error",children:"no data"})})},kO=e=>{var t;if(null===(t=e.SystemStateInfo)||void 0===t||!t.length)return{};const n=e.SystemStateInfo[0];return(0,Na.Ns)(n)},jO=Dl.h.injectEndpoints({endpoints:e=>({getNodeInfo:e.query({queryFn:async(e,t)=>{let{nodeId:n}=e,{signal:r}=t;try{const e=await window.api.getNodeInfo(n,{signal:r});return{data:kO(e)}}catch(i){return{error:i}}},providesTags:["All"]}),getNodeStructure:e.query({queryFn:async(e,t)=>{let{nodeId:n}=e,{signal:r}=t;try{return{data:await window.api.getStorageInfo({nodeId:n},{signal:r})}}catch(i){return{error:i}}},providesTags:["All"]})}),overrideExisting:"throw"}),IO=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 1.5a6.501 6.501 0 0 0-6.445 5.649.75.75 0 1 0 1.488.194A5.001 5.001 0 0 1 11.57 4.5h-1.32a.75.75 0 0 0 0 1.5h3a.75.75 0 0 0 .75-.75v-3a.75.75 0 0 0-1.5 0v1.06A6.48 6.48 0 0 0 8 1.5Zm-5.25 13a.75.75 0 0 1-.75-.75v-3a.75.75 0 0 1 .75-.75h3a.75.75 0 0 1 0 1.5H4.43a5.001 5.001 0 0 0 8.528-2.843.75.75 0 1 1 1.487.194A6.501 6.501 0 0 1 3.5 12.691v1.059a.75.75 0 0 1-.75.75Z",clipRule:"evenodd"}));var PO=n(76506);const DO=(0,le.Ge)("modal");function AO(e){let{open:t=!1,keepMounted:n=!1,disableBodyScrollLock:r=!1,disableEscapeKeyDown:i,disableOutsideClick:o,disableFocusTrap:s,disableAutoFocus:l,focusTrap:c=!0,autoFocus:u=!0,restoreFocusRef:d,onEscapeKeyDown:h,onEnterKeyDown:p,onOutsideClick:f,onClose:m,onTransitionEnter:g,onTransitionEntered:v,onTransitionExit:y,onTransitionExited:b,children:x,style:w,contentOverflow:S="visible",className:_,contentClassName:C,"aria-labelledby":E,"aria-label":T,container:O,qa:N}=e;const k=a.useRef(null),j=a.useRef(null),[I,P]=a.useState(!1);Jx({enabled:!r&&(t||I)});const D=kr({enabled:t||I,restoreFocusRef:d,focusTrapped:!0});return Qr({open:t,disableEscapeKeyDown:i,disableOutsideClick:o,onEscapeKeyDown:h,onEnterKeyDown:p,onOutsideClick:f,onClose:m,contentRefs:[j],type:"modal"}),a.createElement(me.Z,{nodeRef:k,in:t,addEndListener:e=>{var t;return null===(t=k.current)||void 0===t?void 0:t.addEventListener("animationend",e)},classNames:(0,ge.Y)(DO),mountOnEnter:!n,unmountOnExit:!n,appear:!0,onEnter:()=>{P(!0),null===g||void 0===g||g()},onExit:()=>{P(!0),null===y||void 0===y||y()},onEntered:()=>{P(!1),null===v||void 0===v||v()},onExited:()=>{P(!1),null===b||void 0===b||b()}},a.createElement(jr.h,{container:O},a.createElement("div",{ref:k,style:w,className:DO({open:t},_),"data-qa":N},a.createElement("div",{className:DO("content-aligner")},a.createElement("div",{className:DO("content-wrapper")},a.createElement(qr,{enabled:!s&&c&&t&&!I,autoFocus:!l&&u},a.createElement("div",Object.assign({ref:j,tabIndex:-1,role:"dialog","aria-modal":t,"aria-label":T,"aria-labelledby":E,className:DO("content",{"has-scroll":"auto"===S},C)},D),x)))))))}const RO=JSON.parse('{"close":"Close dialog"}'),MO=JSON.parse('{"close":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e"}'),LO=(0,mi.e)({en:RO,ru:MO},"Dialog"),FO=(0,le.Ge)("dialog-btn-close");function zO(e){let{onClose:t}=e;return a.createElement("div",{className:FO()},a.createElement(Ie.z,{view:"flat",size:"l",className:FO("btn"),onClick:e=>t(e,{isOutsideClick:!1}),extraProps:{"aria-label":LO("close")}},a.createElement(we.J,{data:tt.Z,size:20})))}const BO=(0,le.Ge)("dialog-body");const UO=(0,le.Ge)("dialog-divider");const HO=(0,le.Ge)("dialog-footer");class VO extends a.Component{constructor(){super(...arguments),this.errorTooltipRef=a.createRef(),this.handleKeyDown=e=>{"Enter"===e.key&&(e.preventDefault(),this.props.onClickButtonApply&&this.props.onClickButtonApply(e))}}componentDidMount(){this.props.listenKeyEnter&&this.attachKeyDownListeners()}componentDidUpdate(e){!this.props.listenKeyEnter&&e.listenKeyEnter&&this.detachKeyDownListeners(),this.props.listenKeyEnter&&!e.listenKeyEnter&&this.attachKeyDownListeners()}componentWillUnmount(){this.detachKeyDownListeners()}render(){const{onClickButtonCancel:e,onClickButtonApply:t,loading:n,textButtonCancel:r,textButtonApply:i,propsButtonCancel:o,propsButtonApply:s,preset:l,children:c,errorText:u,showError:d,renderButtons:h}=this.props,p=a.createElement("div",{className:HO("button",{action:"cancel"})},a.createElement(Ie.z,Object.assign({view:i?"flat":"normal",size:"l",width:"max",onClick:e,disabled:n},o),r)),f=a.createElement("div",{className:HO("button",{action:"apply"})},a.createElement(Ie.z,Object.assign({ref:this.errorTooltipRef,type:"submit",view:"action",size:"l",width:"max",onClick:t,loading:n,className:HO("button-apply",{preset:l})},s),i),u&&a.createElement(ti,{open:d,anchorRef:this.errorTooltipRef,placement:["bottom","top"],disableLayer:!0,hasArrow:!0},a.createElement("div",{className:HO("error")},u)));return a.createElement("div",{className:HO()},a.createElement("div",{className:HO("children")},c),a.createElement("div",{className:HO("bts-wrapper")},h?h(f,p):a.createElement(a.Fragment,null,r&&p,i&&f)))}attachKeyDownListeners(){setTimeout((()=>{window.addEventListener("keydown",this.handleKeyDown)}),0)}detachKeyDownListeners(){window.removeEventListener("keydown",this.handleKeyDown)}}VO.defaultProps={preset:"default",showError:!1,listenKeyEnter:!1};const GO=(0,le.Ge)("dialog-header");const WO=(0,le.Ge)("dialog");class qO extends a.Component{constructor(){super(...arguments),this.handleCloseButtonClick=e=>{const{onClose:t}=this.props;t(e.nativeEvent,"closeButtonClick")}}render(){const{container:e,children:t,open:n,disableBodyScrollLock:r,disableEscapeKeyDown:i,disableOutsideClick:o,disableFocusTrap:s,disableAutoFocus:l,restoreFocusRef:c,keepMounted:u,size:d,contentOverflow:h="visible",className:p,modalClassName:f,hasCloseButton:m,onEscapeKeyDown:g,onEnterKeyDown:v,onOutsideClick:y,onClose:b,onTransitionEnter:x,onTransitionEntered:w,onTransitionExit:S,onTransitionExited:_,"aria-label":C,"aria-labelledby":E,qa:T}=this.props;return a.createElement(AO,{open:n,contentOverflow:h,disableBodyScrollLock:r,disableEscapeKeyDown:i,disableOutsideClick:o,disableFocusTrap:s,disableAutoFocus:l,restoreFocusRef:c,keepMounted:u,onEscapeKeyDown:g,onEnterKeyDown:v,onOutsideClick:y,onClose:b,onTransitionEnter:x,onTransitionEntered:w,onTransitionExit:S,onTransitionExited:_,className:WO("modal",f),"aria-label":C,"aria-labelledby":E,container:e,qa:T},a.createElement("div",{className:WO({size:d,"has-close":m,"has-scroll":"auto"===h},p)},t,m&&a.createElement(zO,{onClose:this.handleCloseButtonClick})))}}qO.defaultProps={disableBodyScrollLock:!1,disableEscapeKeyDown:!1,disableOutsideClick:!1,keepMounted:!1,hasCloseButton:!0},qO.Footer=VO,qO.Header=function(e){const{caption:t="",insertBefore:n,insertAfter:r,className:i,id:o}=e;return a.createElement("div",{className:GO(null,i)},n,a.createElement("div",{className:GO("caption"),id:o},t),r)},qO.Body=function(e){const{className:t,hasBorders:n=!1}=e;return a.createElement("div",{className:BO({"has-borders":n},t)},e.children)},qO.Divider=function(e){let{className:t}=e;return a.createElement("div",{className:UO(null,t)})};const ZO=JSON.parse('{"default-error":"Something went wrong, action cannot be completed","no-rights-error":"You don\'t have enough rights to complete the operation","button-confirm":"Confirm","button-cancel":"Cancel","button-close":"Close"}'),YO=(0,We.wZ)("ydb-critical-action-dialog",{en:ZO}),KO=Me("ydb-critical-dialog"),QO=e=>403===e.status?YO("no-rights-error"):e.statusText?e.statusText:YO("default-error");function XO(e){let{visible:t,text:n,onClose:r,onConfirm:i,onConfirmActionSuccess:o,onConfirmActionError:s}=e;const[l,c]=a.useState(!1),[u,d]=a.useState(),h=async e=>(e.preventDefault(),c(!0),i().then((()=>{o(),r()})).catch((e=>{s(),d(e)})).finally((()=>{c(!1)})));return(0,Le.jsx)(qO,{open:t,hasCloseButton:!1,className:KO(),size:"s",onClose:r,onTransitionExited:()=>d(void 0),children:u?(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsxs)(qO.Body,{className:KO("body"),children:[(0,Le.jsx)("span",{className:KO("error-icon"),children:(0,Le.jsx)(PO.Z,{width:"24",height:"22"})}),QO(u)]}),(0,Le.jsx)(qO.Footer,{loading:!1,preset:"default",textButtonCancel:YO("button-close"),onClickButtonCancel:r})]}):(0,Le.jsxs)("form",{onSubmit:h,children:[(0,Le.jsxs)(qO.Body,{className:KO("body"),children:[(0,Le.jsx)("span",{className:KO("warning-icon"),children:(0,Le.jsx)(we.J,{data:Tl.Z,size:24})}),n]}),(0,Le.jsx)(qO.Footer,{loading:l,preset:"default",textButtonApply:YO("button-confirm"),textButtonCancel:YO("button-cancel"),propsButtonApply:{type:"submit"},onClickButtonCancel:r,onClickButtonApply:()=>{}})]})})}function $O(e){let{children:t,onConfirmAction:n,onConfirmActionSuccess:r,dialogContent:i,buttonDisabled:o=!1,buttonView:s="action",buttonClassName:l,withPopover:c=!1,popoverContent:u,popoverPlacement:d="right",popoverDisabled:h=!0}=e;const[p,f]=a.useState(!1),[m,g]=a.useState(!1),v=()=>(0,Le.jsx)(Ie.z,{onClick:()=>f(!0),view:s,disabled:o,loading:!o&&m,className:l,children:t});return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(XO,{visible:p,text:i,onConfirm:async()=>{g(!0),await n(),g(!1)},onConfirmActionSuccess:async()=>{if(r){g(!0);try{await r()}catch{}finally{g(!1)}}},onConfirmActionError:()=>{g(!1)},onClose:()=>{f(!1)}}),c?(0,Le.jsx)(fi,{content:u,placement:d,disabled:h,children:v()}):v()]})}var JO=n(99399);const eN=JSON.parse('{"noTabletsData":"No tablets data","Type":"Type","Tablet":"Tablet","State":"State","Node ID":"Node ID","Node FQDN":"Node FQDN","Generation":"Generation","Uptime":"Uptime","dialog.kill":"The tablet will be restarted. Do you want to proceed?","controls.kill-not-allowed":"You don\'t have enough rights to restart tablet"}'),tN=(0,We.wZ)("ydb-tablets",{en:eN}),nN=Me("tablets"),rN=[{name:"Type",get header(){return tN("Type")},render:e=>{let{row:t}=e;return(0,Le.jsxs)("span",{children:[t.Type," ",t.Leader?(0,Le.jsx)(Fi.x,{color:"secondary",children:"leader"}):""]})}},{name:"TabletId",get header(){return tN("Tablet")},render:e=>{let{row:t}=e;const n=t.TabletId&&(0,Ta.ax)(Ta.ZP.tablet,{id:t.TabletId},{nodeId:t.NodeId,type:t.Type});return(0,Le.jsx)(_l,{to:n,children:t.TabletId})}},{name:"State",get header(){return tN("State")},render:e=>{let{row:t}=e;return(0,Le.jsx)(ft,{theme:Lu(t.State),children:t.State})}},{name:"NodeId",get header(){return tN("Node ID")},render:e=>{let{row:t}=e;const n=void 0===t.NodeId?void 0:bu(t.NodeId);return(0,Le.jsx)(_l,{to:n,children:t.NodeId})},align:"right"},{name:"FQDN",get header(){return tN("Node FQDN")},render:e=>{let{row:t}=e;return t.fqdn?(0,Le.jsx)(Il,{name:t.fqdn,showStatus:!1,hasClipboardButton:!0}):(0,Le.jsx)("span",{children:"\u2014"})}},{name:"Generation",get header(){return tN("Generation")},align:"right"},{name:"Uptime",get header(){return tN("Uptime")},render:e=>{let{row:t}=e;return(0,ks.fG)(t.ChangeTime)},sortAccessor:e=>-Number(e.ChangeTime),align:"right"},{name:"Actions",sortable:!1,resizeable:!1,header:"",render:e=>{let{row:t}=e;return(0,Le.jsx)(iN,{...t})}}];function iN(e){const t=e.State===Pu.g.Stopped,n=Ao(),{isUserAllowedToMakeChanges:r}=Do((e=>e.authentication));return(0,Le.jsx)($O,{buttonView:"outlined",dialogContent:tN("dialog.kill"),onConfirmAction:()=>window.api.killTablet(e.TabletId),onConfirmActionSuccess:()=>{n(JO.zg.util.invalidateTags(["All"]))},buttonDisabled:t||!r,withPopover:!0,popoverContent:tN("controls.kill-not-allowed"),popoverDisabled:r,children:(0,Le.jsx)(we.J,{data:IO})})}function oN(e){let{nodeId:t,path:n,className:r}=e;const{autorefresh:i}=Do((e=>e.schema));let o=zl.CN;const a=void 0===t?void 0:String(t);void 0!==a?o={nodes:[String(a)]}:n&&(o={path:n});const{currentData:s,isFetching:l,error:c}=JO.zg.useGetTabletsInfoQuery(o,{pollingInterval:i}),u=l&&void 0===s,d=Do((e=>(0,JO.Sq)(e,a,n)));return u?(0,Le.jsx)(Qc,{}):c?(0,Le.jsx)(zc,{error:c}):(0,Le.jsx)("div",{className:nN(null,r),children:(0,Le.jsx)(qc,{columns:rN,data:d,settings:Lo.LE,emptyDataMessage:tN("noTabletsData")})})}var aN=n(92820);const sN=(0,p_.P1)((e=>e),(e=>jO.endpoints.getNodeStructure.select({nodeId:e}))),lN=(0,p_.P1)((e=>e),((e,t)=>sN(t)),((e,t)=>t(e).data)),cN=(0,p_.P1)(((e,t)=>Number(t)),((e,t)=>lN(e,t)),((e,t)=>{const n=null===t||void 0===t?void 0:t.StoragePools,r={};null===n||void 0===n||n.forEach((t=>{const n=t.Groups;null===n||void 0===n||n.forEach((n=>{var i;const o=null===(i=n.VDisks)||void 0===i?void 0:i.filter((t=>t.NodeId===e));null===o||void 0===o||o.forEach((n=>{const i=(0,ks.a2)(n.VDiskId),o=kh(n.PDisk),a=o.PDiskId;r[String(a)]||(r[String(a)]={vDisks:{},...o}),r[String(a)].vDisks[i]={...n,PDiskId:a,NodeId:e,StoragePoolName:t.Name}}))}))}));const i=Object.keys(r).reduce(((e,t)=>{const n=r[t].vDisks,i=Object.keys(n).reduce(((e,t,r)=>(e.push({...n[t],id:t,order:r}),e)),[]);return e[t]={...r[t],vDisks:i},e}),{});return i})),uN=JSON.parse('{"path":"Path","guid":"GUID","category":"Category","type":"Type","size":"Size","state":"State","device":"Device","realtime":"Realtime","serial-number":"SerialNumber","links":"Links","developer-ui":"Developer UI","pdisk-page":"PDisk page"}'),dN=(0,We.wZ)("ydb-pDisk-info",{en:uN}),hN=Me("ydb-pdisk-info");function pN(e){let{pDisk:t,nodeId:n,isPDiskPage:r=!1,...i}=e;const{PDiskId:o,Path:a,Guid:s,Category:l,Type:c,Device:u,Realtime:d,State:h,SerialNumber:p,TotalSize:f,AvailableSize:m}=t,g=Number(f),v=Number(m),y=[];if(Td(a)&&y.push({label:dN("path"),value:a}),Td(s)&&y.push({label:dN("guid"),value:s}),Td(l)&&(y.push({label:dN("category"),value:l}),y.push({label:dN("type"),value:c})),g>=0&&v>=0&&y.push({label:dN("size"),value:(0,Le.jsx)(Iu,{value:g-v,capacity:g,formatValues:ks.q3,colorizeProgress:!0})}),Td(h)&&y.push({label:dN("state"),value:h}),Td(u)&&y.push({label:dN("device"),value:(0,Le.jsx)(Il,{status:u})}),Td(d)&&y.push({label:dN("realtime"),value:(0,Le.jsx)(Il,{status:d})}),Td(p)&&y.push({label:dN("serial-number"),value:p||Lo.jX}),Td(o)&&Td(n)){const e=(0,Ta.ds)(o,n),t=(0,wO.ok)({nodeId:n,pDiskId:o});y.push({label:dN("links"),value:(0,Le.jsxs)("span",{className:hN("links"),children:[!r&&(0,Le.jsx)(IC,{title:dN("pdisk-page"),url:e,external:!1}),(0,Le.jsx)(IC,{title:dN("developer-ui"),url:t})]})})}return(0,Le.jsx)(ws,{info:y,...i})}const fN=JSON.parse('{"pdisk.developer-ui-button-title":"PDisk Developer UI page","vdisk.developer-ui-button-title":"VDisk Developer UI page"}'),mN=JSON.parse('{"pdisk.developer-ui-button-title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 PDisk \u0432 Developer UI","vdisk.developer-ui-button-title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 VDisk \u0432 Developer UI"}'),gN=(0,We.wZ)("ydb-node-page",{en:fN,ru:mN}),vN=Me("kv-node-structure");function yN(e){let{label:t,value:n,className:r}=e;return(0,Le.jsxs)("span",{className:vN("pdisk-title-item",r),children:[t&&(0,Le.jsxs)("span",{className:vN("pdisk-title-item-label"),children:[t,":"]}),(0,Le.jsx)("span",{className:vN("pdisk-title-item-value"),children:n})]})}const bN=JSON.parse('{"slot-id":"VDisk Slot Id","pool-name":"Storage Pool Name","kind":"Kind","guid":"GUID","incarnation-guid":"Incarnation GUID","instance-guid":"Instance GUID","replication-status":"Replicated","state-status":"VDisk State","space-status":"Disk Space","fresh-rank-satisfaction":"Fresh Rank Satisfaction","level-rank-satisfaction":"Level Rank Satisfaction","front-queues":"Front Queues","has-unreadable-blobs":"Has Unreadable Blobs","size":"Size","read-throughput":"Read Throughput","write-throughput":"Write Throughput","links":"Links","vdisk-page":"VDisk Page","developer-ui":"Developer UI","yes":"Yes","no":"No"}'),xN=(0,We.wZ)("ydb-vDisk-info",{en:bN}),wN=Me("ydb-vdisk-info");function SN(e){var t,n;let{data:r,isVDiskPage:i=!1,...o}=e;const{AllocatedSize:a,DiskSpace:s,FrontQueues:l,Guid:c,Replicated:u,VDiskState:d,VDiskSlotId:h,Kind:p,SatisfactionRank:f,AvailableSize:m,HasUnreadableBlobs:g,IncarnationGuid:v,InstanceGuid:y,StoragePoolName:b,ReadThroughput:x,WriteThroughput:w,PDiskId:S,NodeId:_}=r,C=[];var E,T;(Td(h)&&C.push({label:xN("slot-id"),value:h}),Td(b)&&C.push({label:xN("pool-name"),value:b}),Td(d)&&C.push({label:xN("state-status"),value:d}),Number(a)>=0&&Number(m)>=0&&C.push({label:xN("size"),value:(0,Le.jsx)(Iu,{value:a,capacity:Number(a)+Number(m),formatValues:ks.q3,colorizeProgress:!0})}),Td(p)&&C.push({label:xN("kind"),value:p}),Td(c)&&C.push({label:xN("guid"),value:c}),Td(v)&&C.push({label:xN("incarnation-guid"),value:v}),Td(y)&&C.push({label:xN("instance-guid"),value:y}),Td(u)&&C.push({label:xN("replication-status"),value:xN(u?"yes":"no")}),Td(s)&&C.push({label:xN("space-status"),value:(0,Le.jsx)(Il,{status:s})}),Td(null===f||void 0===f||null===(t=f.FreshRank)||void 0===t?void 0:t.Flag))&&C.push({label:xN("fresh-rank-satisfaction"),value:(0,Le.jsx)(Il,{status:null===f||void 0===f||null===(E=f.FreshRank)||void 0===E?void 0:E.Flag})});Td(null===f||void 0===f||null===(n=f.LevelRank)||void 0===n?void 0:n.Flag)&&C.push({label:xN("level-rank-satisfaction"),value:(0,Le.jsx)(Il,{status:null===f||void 0===f||null===(T=f.LevelRank)||void 0===T?void 0:T.Flag})});if(Td(l)&&C.push({label:xN("front-queues"),value:(0,Le.jsx)(Il,{status:l})}),Td(g)&&C.push({label:xN("has-unreadable-blobs"),value:xN(g?"yes":"no")}),Td(x)&&C.push({label:xN("read-throughput"),value:(0,Ou.Qt)(x)}),Td(w)&&C.push({label:xN("write-throughput"),value:(0,Ou.Qt)(w)}),Td(S)&&Td(_)&&Td(h)){const e=(0,Ta.By)(h,S,_),t=(0,wO.yf)({nodeId:_,pDiskId:S,vDiskSlotId:h});C.push({label:xN("links"),value:(0,Le.jsxs)("span",{className:wN("links"),children:[!i&&(0,Le.jsx)(IC,{title:xN("vdisk-page"),url:e,external:!1}),(0,Le.jsx)(IC,{title:xN("developer-ui"),url:t})]})})}return(0,Le.jsx)(Ss,{info:C,...o})}const _N=Me("kv-node-structure");function CN(e){let{data:t}=e;const{VDiskState:n,VDiskId:r}=t;return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsxs)("div",{className:_N("row"),children:[(0,Le.jsx)("span",{className:_N("title"),children:"VDisk "}),(0,Le.jsx)(Il,{status:n===ph.OK?al.K.Green:al.K.Red,name:(0,ks.a2)(r)})]}),(0,Le.jsx)("div",{className:_N("column"),children:(0,Le.jsx)(SN,{className:_N("section"),data:t})})]})}const EN=Me("kv-node-structure");var TN;!function(e){e.slotId="VDiskSlotId",e.VDiskState="VDiskState",e.Size="Size",e.Info="Info"}(TN||(TN={}));const ON={VDiskSlotId:"Slot id",VDiskState:"Status",Size:"Size",Info:""};function NN(e){let{pDiskId:t,selectedVdiskId:n,nodeId:r}=e;return[{name:TN.slotId,header:ON[TN.slotId],width:100,render:e=>{let{row:i}=e;const o=i.VDiskSlotId;let a=null;return Td(r)&&Td(t)&&Td(o)&&(a=(0,wO.yf)({nodeId:r,pDiskId:t,vDiskSlotId:o})),(0,Le.jsxs)("div",{className:EN("vdisk-id",{selected:i.id===n}),children:[(0,Le.jsx)("span",{children:o}),a&&(0,Le.jsx)(Ie.z,{size:"s",className:EN("external-button",{hidden:!0}),href:a,target:"_blank",title:gN("vdisk.developer-ui-button-title"),children:(0,Le.jsx)(we.J,{data:pu})})]})},align:Hc.ZP.LEFT},{name:TN.VDiskState,header:ON[TN.VDiskState],width:70,render:e=>{let{row:t}=e;return(0,Le.jsx)(Il,{status:t.VDiskState===ph.OK?al.K.Green:al.K.Red})},sortAccessor:e=>e.VDiskState===ph.OK?1:0,align:Hc.ZP.CENTER},{name:TN.Size,header:ON[TN.Size],width:100,render:e=>{let{row:t}=e;return(0,Le.jsx)(Iu,{value:t.AllocatedSize,capacity:Number(t.AllocatedSize)+Number(t.AvailableSize),formatValues:ks.q3,colorizeProgress:!0})},sortAccessor:e=>Number(e.AllocatedSize),align:Hc.ZP.CENTER},{name:TN.Info,header:ON[TN.Info],width:70,render:e=>{let{row:t}=e;return(0,Le.jsx)(fi,{placement:["right"],content:(0,Le.jsx)(CN,{data:t}),tooltipContentClassName:EN("vdisk-details"),children:(0,Le.jsx)(Ie.z,{view:"flat-secondary",className:EN("vdisk-details-button",{selected:t.id===n}),children:(0,Le.jsx)(we.J,{data:Cl.Z,size:18})})})},sortable:!1}]}function kN(e){let{id:t,data:n,selectedVdiskId:r,nodeId:i,unfolded:o}=e;const[s,l]=a.useState(null!==o&&void 0!==o&&o),{TotalSize:c=0,AvailableSize:u=0,Device:d,PDiskId:h,Type:p,vDisks:f}=n,m=Number(c),g=Number(u);return(0,Le.jsxs)("div",{className:EN("pdisk"),id:t,children:[(0,Le.jsxs)("div",{className:EN("pdisk-header"),children:[(0,Le.jsxs)("div",{className:EN("pdisk-title-wrapper"),children:[(0,Le.jsx)(Il,{status:d}),(0,Le.jsx)(yN,{label:"PDiskID",value:h,className:EN("pdisk-title-id")}),(0,Le.jsx)(yN,{value:p,className:EN("pdisk-title-type")}),(0,Le.jsx)(Iu,{value:m-g,capacity:m,formatValues:ks.q3,colorizeProgress:!0,className:EN("pdisk-title-size")}),(0,Le.jsx)(yN,{label:"VDisks",value:f.length})]}),(0,Le.jsx)(Ie.z,{onClick:s?()=>{l(!1)}:()=>{l(!0)},view:"flat-secondary",children:(0,Le.jsx)(_e,{direction:s?"top":"bottom"})})]}),s&&(Vx()(n)?(0,Le.jsx)("div",{children:"No information about PDisk"}):(0,Le.jsxs)("div",{children:[(0,Le.jsx)(pN,{pDisk:n,nodeId:i,className:EN("pdisk-details")}),(0,Le.jsxs)("div",{className:EN("vdisks-container"),children:[(0,Le.jsx)("div",{className:EN("vdisks-header"),children:"VDisks"}),(0,Le.jsx)(Hc.ZP,{theme:"yandex-cloud",data:f,columns:NN({nodeId:i,pDiskId:h,selectedVdiskId:r}),settings:{...Lo.LE,dynamicRender:!1},rowClassName:e=>e.id===r?EN("selected-vdisk"):""})]})]}))]})}const jN=Me("kv-node-structure");function IN(e){let{type:t,id:n}=e;return"".concat(t,"-").concat(n)}const PN=function(e){let{nodeId:t,className:n}=e;const r=Do((e=>cN(e,t))),{currentData:i,isFetching:o,error:s}=jO.useGetNodeStructureQuery({nodeId:t},{pollingInterval:Lo.ME}),l=o&&void 0===i,{pdiskId:c,vdiskId:u}=aN.parse(window.location.href,!0).query,d=a.useRef(null),h=a.useRef(!1);return a.useEffect((()=>{if(!Vx()(r)&&!h.current&&d.current){const t=document.getElementById(IN({type:"pdisk",id:c}));let n=0;if(u){var e;const t=null===(e=r[c])||void 0===e?void 0:e.vDisks,i=null===t||void 0===t?void 0:t.find((e=>e.id===u)),o=i?document.querySelector(".data-table"):void 0,a=(null===i||void 0===i?void 0:i.order)||0;o&&(n+=o.offsetTop+40*a)}t&&(d.current.scrollTo({behavior:"smooth",top:n||t.offsetTop}),h.current=!0)}}),[r,c,u]),(0,Le.jsx)("div",{className:jN(),ref:d,children:(0,Le.jsx)("div",{className:n,children:l?(0,Le.jsx)(N_,{size:"m"}):s?(0,Le.jsx)(zc,{error:s}):(()=>{const e=Object.keys(r);return e.length>0?e.map((e=>(0,Le.jsx)(kN,{data:r[e],id:IN({type:"pdisk",id:e}),unfolded:c===e,selectedVdiskId:u,nodeId:t},e))):"There is no information about node structure."})()})})},DN=Me("node"),AN="Storage";const RN=function(e){var t;const n=a.useRef(null),r=Ao(),i=Ca(),o=null!==(t=Ea(Ta.ZP.node))&&void 0!==t?t:Object.create(null),{id:s,activeTab:l}=o.params,{tenantName:c}=(0,Ta.mB)(i),{currentData:u,isFetching:d,error:h}=jO.useGetNodeInfoQuery({nodeId:s},{pollingInterval:Lo.ME}),p=d&&void 0===u,f=u,{activeTabVerified:m,nodeTabs:g}=a.useMemo((()=>{var e;const t=((null===f||void 0===f||null===(e=f.Roles)||void 0===e?void 0:e.find((e=>e===AN)))?yu:yu.filter((e=>e.id!==fu))).map((e=>({...e,title:e.name})));let n=t.find((e=>{let{id:t}=e;return t===l}));return n||(n=t[0]),{activeTabVerified:n,nodeTabs:t}}),[l,f]);a.useEffect((()=>{var e;const t=(null===f||void 0===f||null===(e=f.Tenants)||void 0===e?void 0:e[0])||(null===c||void 0===c?void 0:c.toString());r((0,Rl.J)("node",{tenantName:t,nodeId:s}))}),[r,f,s,c]);const v=()=>{switch(m.id){case fu:return(0,Le.jsx)("div",{className:DN("storage"),children:(0,Le.jsx)(d_,{nodeId:s,parentContainer:n.current})});case mu:return(0,Le.jsx)(oN,{nodeId:s,className:DN("node-page-wrapper")});case gu:return(0,Le.jsx)(NO,{node:f,className:DN("overview-wrapper")});case vu:return(0,Le.jsx)(PN,{className:DN("node-page-wrapper"),nodeId:s});default:return!1}};return p?(0,Le.jsx)(N_,{size:"l"}):h?(0,Le.jsx)(zc,{error:h}):f?(0,Le.jsxs)("div",{className:DN(null,e.className),ref:n,children:[(0,Le.jsx)(oe,{titleTemplate:"%s \u2014 ".concat(f.Host," \u2014 YDB Monitoring"),defaultTitle:"".concat(f.Host," \u2014 YDB Monitoring"),children:(0,Le.jsx)("title",{children:m.title})}),(0,Le.jsx)(_O,{node:f,additionalNodesProps:e.additionalNodesProps,className:DN("header")}),(0,Le.jsx)("div",{className:DN("tabs"),children:(0,Le.jsx)(wt,{size:"l",items:g,activeTab:m.id,wrapTo:(e,t)=>{let{id:n}=e;return(0,Le.jsx)(bl,{to:(0,Ta.ax)(Ta.ZP.node,{id:s,activeTab:n}),className:DN("tab"),children:t},n)},allowNotSelected:!0})}),(0,Le.jsx)("div",{className:DN("content"),children:v()})]}):(0,Le.jsx)("div",{className:"error",children:"no node data"})},MN=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 1.5a6.5 6.5 0 1 1-6.445 7.348.75.75 0 1 1 1.487-.194A5.001 5.001 0 1 0 4.43 4.5h1.32a.75.75 0 0 1 0 1.5h-3A.75.75 0 0 1 2 5.25v-3a.75.75 0 0 1 1.5 0v1.06A6.48 6.48 0 0 1 8 1.5Z",clipRule:"evenodd"})),LN=Me("ydb-disk-page-title");function FN(e){let{entityName:t,status:n,id:r,className:i}=e;return(0,Le.jsxs)("div",{className:LN(null,i),children:[(0,Le.jsx)("span",{className:LN("prefix"),children:t}),(0,Le.jsx)(kl,{className:LN("icon"),status:n,size:"s"}),r]})}const zN=Me("ydb-page-meta");function BN(e){let{items:t,loading:n,className:r}=e;return(0,Le.jsx)("div",{className:zN(null,r),children:n?(0,Le.jsx)(rl,{className:zN("skeleton")}):t.filter((e=>Boolean(e))).join("\xa0\xa0\xb7\xa0\xa0")})}const UN=Dl.h.injectEndpoints({endpoints:e=>({getPdiskInfo:e.query({queryFn:async(e,t)=>{let{nodeId:n,pDiskId:r}=e,{signal:i}=t;try{const e=function(e){var t,n,r,i;let[o,a]=e;const s=kh(null===(t=o.PDiskStateInfo)||void 0===t?void 0:t[0]),l=null===(n=a.SystemStateInfo)||void 0===n?void 0:n[0],c=(0,Na.Ns)(l);return{...s,NodeId:null!==(r=s.NodeId)&&void 0!==r?r:c.NodeId,NodeHost:c.Host,NodeType:null===(i=c.Roles)||void 0===i?void 0:i[0],NodeDC:c.DC}}(await Promise.all([window.api.getPDiskInfo({nodeId:n,pDiskId:r},{signal:i}),window.api.getNodeInfo(n,{signal:i})]));return{data:e}}catch(o){return{error:o}}},providesTags:["All"]}),getStorageInfo:e.query({queryFn:async(e,t)=>{let{nodeId:n,pDiskId:r}=e,{signal:i}=t;try{const e=function(e,t,n){var r;const i=[];return null===(r=e.StoragePools)||void 0===r||r.forEach((e=>{var r;return null===(r=e.Groups)||void 0===r?void 0:r.forEach((r=>{var o;(null===(o=r.VDisks)||void 0===o?void 0:o.some((e=>{var r,i,o,a;const s=null!==(r=e.PDiskId)&&void 0!==r?r:null===(i=e.PDisk)||void 0===i?void 0:i.PDiskId,l=null!==(o=e.NodeId)&&void 0!==o?o:null===(a=e.PDisk)||void 0===a?void 0:a.NodeId;return s===Number(t)&&l===Number(n)})))&&i.push(Ph(r,e))}))})),i}(await window.api.getStorageInfo({nodeId:n,version:ka.v1},{signal:i}),r,n);return{data:e}}catch(o){return{error:o}}},providesTags:["All"]})}),overrideExisting:"throw"}),HN=JSON.parse('{"fqdn":"FQDN","pdisk":"PDisk","groups":"Groups","node":"Node","restart-pdisk-button":"Restart PDisk","restart-pdisk-dialog":"PDisk will be restarted. Do you want to proceed?","restart-pdisk-not-allowed":"You don\'t have enough rights to restart PDisk"}'),VN=(0,We.wZ)("ydb-pDisk-page",{en:HN}),GN=Me("ydb-pdisk-page");function WN(e){let{data:t,nodesMap:n,loading:r}=e;const i=a.useMemo((()=>RS(n)),[n]);return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("div",{className:GN("groups-title"),children:VN("groups")}),(0,Le.jsx)("div",{children:r?(0,Le.jsx)(Qc,{}):(0,Le.jsx)(qc,{columnsWidthLSKey:uS,data:t,columns:i,settings:Lo.LE})})]})}const qN=Dl.h.injectEndpoints({endpoints:e=>({getTablet:e.query({queryFn:async(e,t)=>{let{id:n}=e,{signal:r}=t;try{const[e,t,i]=await Promise.all([window.api.getTablet({id:n},{signal:r}),window.api.getTabletHistory({id:n},{signal:r}),window.api.getNodesList({signal:r})]),o=(0,Na.dn)(i),a=Object.keys(t).reduce(((e,n)=>{var r;const i=null===(r=t[n])||void 0===r?void 0:r.TabletStateInfo;if(i&&i.length){const t=i.find((e=>e.Leader))||i[0],{ChangeTime:r,Generation:a,State:s,Leader:l,FollowerId:c}=t,u=o&&n?o.get(Number(n)):void 0;e.push({nodeId:n,generation:a,changeTime:r,state:s,leader:l,followerId:c,fqdn:u})}return e}),[]),{TabletStateInfo:s=[]}=e,[l={}]=s,{TabletId:c}=l;return{data:{id:c,data:l,history:a}}}catch(i){return{error:i}}},providesTags:["All"]}),getTabletDescribe:e.query({queryFn:async(e,t)=>{let{tenantId:n}=e,{signal:r}=t;try{const e=await window.api.getTabletDescribe(n,{signal:r}),{SchemeShard:t,PathId:i}=n;return{data:(null===e||void 0===e?void 0:e.Path)||"".concat(t,":").concat(i)}}catch(i){return{error:i}}},providesTags:["All"]})}),overrideExisting:"throw"}),ZN=JSON.parse('{"tablet.header":"Tablet","controls.kill":"Restart","controls.stop":"Stop","controls.resume":"Resume","controls.kill-not-allowed":"You don\'t have enough rights to restart tablet","controls.stop-not-allowed":"You don\'t have enough rights to stop tablet","controls.resume-not-allowed":"You don\'t have enough rights to resume tablet","dialog.kill":"The tablet will be restarted. Do you want to proceed?","dialog.stop":"The tablet will be stopped. Do you want to proceed?","dialog.resume":"The tablet will be resumed. Do you want to proceed?","emptyState":"The tablet was not found"}'),YN=(0,We.wZ)("ydb-tablet-page",{en:ZN}),KN=e=>{let{tablet:t,fetchData:n}=e;const{TabletId:r,HiveId:i}=t,{isUserAllowedToMakeChanges:o}=Do((e=>e.authentication)),s=t.State===Pu.g.Stopped,l=t.State!==Pu.g.Stopped&&t.State!==Pu.g.Dead,c=t.State===Pu.g.Stopped||t.State===Pu.g.Deleted;return(0,Le.jsxs)("div",{className:ek("controls"),children:[(0,Le.jsx)($O,{dialogContent:YN("dialog.kill"),onConfirmAction:()=>window.api.killTablet(r),onConfirmActionSuccess:n,buttonClassName:ek("control"),buttonDisabled:s||!o,withPopover:!0,popoverContent:YN("controls.kill-not-allowed"),popoverPlacement:"bottom",popoverDisabled:o,children:YN("controls.kill")}),i&&"0"!==i?(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)($O,{dialogContent:YN("dialog.stop"),onConfirmAction:()=>window.api.stopTablet(r,i),onConfirmActionSuccess:n,buttonClassName:ek("control"),buttonDisabled:c||!o,withPopover:!0,popoverContent:YN("controls.stop-not-allowed"),popoverPlacement:"bottom",popoverDisabled:o,children:YN("controls.stop")}),(0,Le.jsx)($O,{dialogContent:YN("dialog.resume"),onConfirmAction:()=>window.api.resumeTablet(r,i),onConfirmActionSuccess:n,buttonClassName:ek("control"),buttonDisabled:l||!o,withPopover:!0,popoverContent:YN("controls.resume-not-allowed"),popoverPlacement:"bottom",popoverDisabled:o,children:YN("controls.resume")})]}):null]})},QN=e=>{let{tablet:t,tenantPath:n}=e;const{ChangeTime:r,Generation:i,FollowerId:o,NodeId:a,HiveId:s,State:l,Type:c,TenantId:{SchemeShard:u}={}}=t,d=s&&"0"!==s,h=l===Pu.g.Active,p=[{label:"Database",value:n||"-"}];return d&&p.push({label:"HiveId",value:(0,Le.jsx)(si,{href:(0,Ta.ax)(Ta.ZP.tablet,{id:s}),target:"_blank",children:s})}),u&&p.push({label:"SchemeShard",value:(0,Le.jsx)(si,{href:(0,Ta.ax)(Ta.ZP.tablet,{id:u}),target:"_blank",children:u})}),p.push({label:"Type",value:c},{label:"State",value:l}),h&&p.push({label:"Uptime",value:(0,ks.fG)(r)}),p.push({label:"Generation",value:i},{label:"Node",value:(0,Le.jsx)(bl,{className:ek("link"),to:bu(String(a)),children:a})}),o&&p.push({label:"Follower",value:o}),(0,Le.jsx)(Ss,{info:p})},XN=[{name:"Generation",align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return t.generation}},{name:"Change time",align:Hc.ZP.RIGHT,sortable:!1,render:e=>{let{row:t}=e;return(0,ks.fG)(t.changeTime)}},{name:"State",sortable:!1,render:e=>{let{row:t}=e;return t.state}},{name:"Follower ID",sortable:!1,render:e=>{let{row:t}=e;return t.leader?"leader":t.followerId}},{name:"Node ID",align:Hc.ZP.RIGHT,sortable:!1,render:e=>{let{row:t}=e;return(0,Le.jsx)(_l,{to:bu(t.nodeId),children:t.nodeId})}},{name:"Node FQDN",sortable:!1,width:300,render:e=>{let{row:t}=e;return t.fqdn?(0,Le.jsx)(Il,{name:t.fqdn,showStatus:!1,hasClipboardButton:!0}):(0,Le.jsx)("span",{children:"\u2014"})}}],$N={displayIndices:!1},JN=e=>{let{history:t}=e;return(0,Le.jsx)(qc,{columnsWidthLSKey:"tabletTableColumnsWidth",data:t,columns:XN,settings:$N,initialSortOrder:{columnId:"Generation",order:Hc.ZP.DESCENDING}})},ek=Me("tablet-page");var tk=n(99090),nk=n.n(tk),rk=n(83570),ik=n.n(rk),ok=n(40510);const ak=JSON.parse('{"page.title":"Tablets"}'),sk=JSON.parse('{"page.title":"\u0422\u0430\u0431\u043b\u0435\u0442\u043a\u0438"}'),lk=(0,We.wZ)("ydb-tablets-filters-page",{en:ak,ru:sk}),ck=Me("tablets-filters");class uk extends a.Component{constructor(){super(...arguments),this.state={nodeFilter:[],tenantPath:"",clusterName:""},this.reloadDescriptor=-1,this.makeRequest=()=>{const{nodeFilter:e,tenantPath:t}=this.state;this.props.getTabletsInfo({nodes:e,path:[t]})},this.getTablets=()=>{const{timeoutForRequest:e}=this.props;clearInterval(this.reloadDescriptor),this.reloadDescriptor=setTimeout((()=>{this.makeRequest(),this.reloadDescriptor=-1}),e)},this.handleNodeFilterChange=e=>{this.setState({nodeFilter:e},(()=>{this.props.clearWasLoadingFlag(),this.makeRequest()}))},this.handleStateFilterChange=e=>{const{setStateFilter:t}=this.props;t(e)},this.handleTypeFilterChange=e=>{const{setTypeFilter:t}=this.props;t(e)},this.renderTablet=(e,t)=>{const{filteredTablets:n,size:r}=this.props;return(0,Le.jsx)(RC,{tablet:n[e],tenantName:this.state.tenantPath,size:r,className:ck("tablet")},t)},this.renderContent=()=>{const{nodeFilter:e,tenantPath:t}=this.state,{tablets:n,filteredTablets:r,nodes:i,stateFilter:o,typeFilter:s,error:l}=this.props,c=Au.map((e=>({value:e,content:e}))),u=Array.from(new Set(...[nk()(n,(e=>e.Type))])).map((e=>({value:e,content:e}))),d=nk()(i,(e=>({content:e.Id,value:e.Id,meta:e.Host})));return(0,Le.jsxs)("div",{className:ck(),children:[t?(0,Le.jsx)("div",{className:ck("tenant"),children:(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("span",{className:ck("label"),children:"Database: "})," ",t]})}):null,(0,Le.jsx)(hk,{nodesForSelect:d,nodeFilter:e,onChangeNodes:this.handleNodeFilterChange,states:c,stateFilter:o,onChangeStates:this.handleStateFilterChange,types:u,typeFilter:s,onChangeTypes:this.handleTypeFilterChange}),l&&(0,Le.jsx)("div",{className:"error",children:l}),r.length>0?(0,Le.jsx)("div",{className:ck("items"),children:(0,Le.jsx)(ik(),{itemRenderer:this.renderTablet,length:r.length,type:"uniform"})}):!l&&(0,Le.jsx)("div",{className:ck("empty-message"),children:"no tablets"})]})},this.renderView=()=>{const{loading:e,wasLoaded:t,error:n}=this.props;return e&&!t?uk.renderLoader():n&&"object"===typeof n?403===n.status?(0,Le.jsx)(Fc,{}):(0,Le.jsx)("div",{children:n.statusText}):this.renderContent()}}static renderLoader(){return(0,Le.jsx)("div",{className:"loader",children:(0,Le.jsx)(Di,{size:"l"})})}componentDidMount(){const{setStateFilter:e,setTypeFilter:t,setHeaderBreadcrumbs:n}=this.props,r=(0,Ta.mB)(this.props.location),{nodeIds:i,type:o,path:a,state:s,clusterName:l}=r,c=uk.parseNodes(i);if(s){e(uk.getStateFiltersFromColor(s))}o&&t([o]),this.setState({nodeFilter:c,tenantPath:a,clusterName:l},(()=>{this.makeRequest()})),n("tablets",{tenantName:a})}componentDidUpdate(e){const{loading:t,error:n}=this.props;!n&&e.path&&this.props.path&&e.path!==this.props.path&&(this.props.clearWasLoadingFlag(),this.getTablets()),n||t||-1!==this.reloadDescriptor||this.getTablets()}componentWillUnmount(){clearInterval(this.reloadDescriptor)}render(){const{tenantPath:e,clusterName:t}=this.state;return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(oe,{children:(0,Le.jsx)("title",{children:"".concat(lk("page.title")," \u2014 ").concat(e||t||Lo.DO)})}),this.renderView()]})}}uk.parseNodes=e=>{if(Array.isArray(e))return e.map(Number).filter(Number.isInteger)},uk.getStateFiltersFromColor=e=>Ru[e]||[e],uk.CONTROL_WIDTH=220,uk.POPUP_WIDTH=300;const dk=e=>{let{nodesForSelect:t,nodeFilter:n,onChangeNodes:r,states:i,stateFilter:o,onChangeStates:a,types:s,typeFilter:l,onChangeTypes:c}=e;return(0,Le.jsxs)("div",{className:ck("filters"),children:[(0,Le.jsx)("div",{className:ck("filter-wrapper"),children:(0,Le.jsx)(ww,{multiple:!0,label:"Node ID",width:uk.CONTROL_WIDTH,popupWidth:uk.POPUP_WIDTH,placeholder:"All",options:t,value:n,onUpdate:r,renderOption:e=>(0,Le.jsxs)("div",{className:ck("node"),children:[(0,Le.jsx)("div",{children:e.content}),(0,Le.jsx)("div",{className:ck("node-meta"),title:e.meta,children:e.meta})]}),getOptionHeight:()=>40})}),(0,Le.jsx)("div",{className:ck("filter-wrapper"),children:(0,Le.jsx)(ww,{multiple:!0,label:"multiple",width:uk.CONTROL_WIDTH,placeholder:"All",options:i,value:o,onUpdate:a})}),(0,Le.jsx)("div",{className:ck("filter-wrapper"),children:(0,Le.jsx)(ww,{multiple:!0,label:"Types",width:uk.CONTROL_WIDTH,placeholder:"All",options:s,value:l,onUpdate:c})})]})},hk=a.memo(dk,((e,t)=>pp()(e.nodeFilter,t.nodeFilter)&&pp()(e.stateFilter,t.stateFilter)&&pp()(e.typeFilter,t.typeFilter))),pk={getTabletsInfo:ok.NM,clearWasLoadingFlag:ok.$S,setStateFilter:ok.nq,setTypeFilter:ok.jk,setHeaderBreadcrumbs:Rl.J},fk=(0,ae.$j)((e=>{const{nodes:t,wasLoaded:n,loading:r,timeoutForRequest:i,stateFilter:o,typeFilter:a,error:s}=e.tabletsFilters;return{tablets:(0,ok.ct)(e),filteredTablets:(0,ok.TI)(e),nodes:t,timeoutForRequest:i,wasLoaded:n,loading:r,stateFilter:o,typeFilter:a,error:s}}),pk)(uk);var mk="undefined"!==typeof window?window:null,gk=null===mk,vk=gk?void 0:mk.document,yk="addEventListener",bk="removeEventListener",xk="getBoundingClientRect",wk="_a",Sk="_b",_k="_c",Ck="horizontal",Ek=function(){return!1},Tk=gk?"calc":["","-webkit-","-moz-","-o-"].filter((function(e){var t=vk.createElement("div");return t.style.cssText="width:"+e+"calc(9px)",!!t.style.length})).shift()+"calc",Ok=function(e){return"string"===typeof e||e instanceof String},Nk=function(e){if(Ok(e)){var t=vk.querySelector(e);if(!t)throw new Error("Selector "+e+" did not match a DOM element");return t}return e},kk=function(e,t,n){var r=e[t];return void 0!==r?r:n},jk=function(e,t,n,r){if(t){if("end"===r)return 0;if("center"===r)return e/2}else if(n){if("start"===r)return 0;if("center"===r)return e/2}return e},Ik=function(e,t){var n=vk.createElement("div");return n.className="gutter gutter-"+t,n},Pk=function(e,t,n){var r={};return Ok(t)?r[e]=t:r[e]=Tk+"("+t+"% - "+n+"px)",r},Dk=function(e,t){var n;return(n={})[e]=t+"px",n};const Ak=function(e,t){if(void 0===t&&(t={}),gk)return{};var n,r,i,o,a,s,l=e;Array.from&&(l=Array.from(l));var c=Nk(l[0]).parentNode,u=getComputedStyle?getComputedStyle(c):null,d=u?u.flexDirection:null,h=kk(t,"sizes")||l.map((function(){return 100/l.length})),p=kk(t,"minSize",100),f=Array.isArray(p)?p:l.map((function(){return p})),m=kk(t,"maxSize",1/0),g=Array.isArray(m)?m:l.map((function(){return m})),v=kk(t,"expandToMin",!1),y=kk(t,"gutterSize",10),b=kk(t,"gutterAlign","center"),x=kk(t,"snapOffset",30),w=Array.isArray(x)?x:l.map((function(){return x})),S=kk(t,"dragInterval",1),_=kk(t,"direction",Ck),C=kk(t,"cursor",_===Ck?"col-resize":"row-resize"),E=kk(t,"gutter",Ik),T=kk(t,"elementStyle",Pk),O=kk(t,"gutterStyle",Dk);function N(e,t,r,i){var o=T(n,t,r,i);Object.keys(o).forEach((function(t){e.style[t]=o[t]}))}function k(){return s.map((function(e){return e.size}))}function j(e){return"touches"in e?e.touches[0][r]:e[r]}function I(e){var t=s[this.a],n=s[this.b],r=t.size+n.size;t.size=e/this.size*r,n.size=r-e/this.size*r,N(t.element,t.size,this[Sk],t.i),N(n.element,n.size,this[_k],n.i)}function P(e){var n,r=s[this.a],i=s[this.b];this.dragging&&(n=j(e)-this.start+(this[Sk]-this.dragOffset),S>1&&(n=Math.round(n/S)*S),n<=r.minSize+r.snapOffset+this[Sk]?n=r.minSize+this[Sk]:n>=this.size-(i.minSize+i.snapOffset+this[_k])&&(n=this.size-(i.minSize+this[_k])),n>=r.maxSize-r.snapOffset+this[Sk]?n=r.maxSize+this[Sk]:n<=this.size-(i.maxSize-i.snapOffset+this[_k])&&(n=this.size-(i.maxSize+this[_k])),I.call(this,n),kk(t,"onDrag",Ek)(k()))}function D(){var e=s[this.a].element,t=s[this.b].element,r=e[xk](),a=t[xk]();this.size=r[n]+a[n]+this[Sk]+this[_k],this.start=r[i],this.end=r[o]}function A(e){var t=function(e){if(!getComputedStyle)return null;var t=getComputedStyle(e);if(!t)return null;var n=e[a];return 0===n?null:n-=_===Ck?parseFloat(t.paddingLeft)+parseFloat(t.paddingRight):parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)}(c);if(null===t)return e;if(f.reduce((function(e,t){return e+t}),0)>t)return e;var n=0,r=[],i=e.map((function(i,o){var a=t*i/100,s=jk(y,0===o,o===e.length-1,b),l=f[o]+s;return a<l?(n+=l-a,r.push(0),l):(r.push(a-l),a)}));return 0===n?e:i.map((function(e,i){var o=e;if(n>0&&r[i]-n>0){var a=Math.min(n,r[i]-n);n-=a,o=e-a}return o/t*100}))}function R(){var e=this,n=s[e.a].element,r=s[e.b].element;e.dragging&&kk(t,"onDragEnd",Ek)(k()),e.dragging=!1,mk[bk]("mouseup",e.stop),mk[bk]("touchend",e.stop),mk[bk]("touchcancel",e.stop),mk[bk]("mousemove",e.move),mk[bk]("touchmove",e.move),e.stop=null,e.move=null,n[bk]("selectstart",Ek),n[bk]("dragstart",Ek),r[bk]("selectstart",Ek),r[bk]("dragstart",Ek),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",e.gutter.style.cursor="",e.parent.style.cursor="",vk.body.style.cursor=""}function M(e){if(!("button"in e)||0===e.button){var n=this,r=s[n.a].element,i=s[n.b].element;n.dragging||kk(t,"onDragStart",Ek)(k()),e.preventDefault(),n.dragging=!0,n.move=P.bind(n),n.stop=R.bind(n),mk[yk]("mouseup",n.stop),mk[yk]("touchend",n.stop),mk[yk]("touchcancel",n.stop),mk[yk]("mousemove",n.move),mk[yk]("touchmove",n.move),r[yk]("selectstart",Ek),r[yk]("dragstart",Ek),i[yk]("selectstart",Ek),i[yk]("dragstart",Ek),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",i.style.userSelect="none",i.style.webkitUserSelect="none",i.style.MozUserSelect="none",i.style.pointerEvents="none",n.gutter.style.cursor=C,n.parent.style.cursor=C,vk.body.style.cursor=C,D.call(n),n.dragOffset=j(e)-n.end}}_===Ck?(n="width",r="clientX",i="left",o="right",a="clientWidth"):"vertical"===_&&(n="height",r="clientY",i="top",o="bottom",a="clientHeight"),h=A(h);var L=[];function F(e){var t=e.i===L.length,n=t?L[e.i-1]:L[e.i];D.call(n);var r=t?n.size-e.minSize-n[_k]:e.minSize+n[Sk];I.call(n,r)}return s=l.map((function(e,t){var r,i={element:Nk(e),size:h[t],minSize:f[t],maxSize:g[t],snapOffset:w[t],i:t};if(t>0&&((r={a:t-1,b:t,dragging:!1,direction:_,parent:c})[Sk]=jk(y,t-1===0,!1,b),r[_k]=jk(y,!1,t===l.length-1,b),"row-reverse"===d||"column-reverse"===d)){var o=r.a;r.a=r.b,r.b=o}if(t>0){var a=E(t,_,i.element);!function(e,t,r){var i=O(n,t,r);Object.keys(i).forEach((function(t){e.style[t]=i[t]}))}(a,y,t),r[wk]=M.bind(r),a[yk]("mousedown",r[wk]),a[yk]("touchstart",r[wk]),c.insertBefore(a,i.element),r.gutter=a}return N(i.element,i.size,jk(y,0===t,t===l.length-1,b),t),t>0&&L.push(r),i})),s.forEach((function(e){var t=e.element[xk]()[n];t<e.minSize&&(v?F(e):e.minSize=t)})),{setSizes:function(e){var t=A(e);t.forEach((function(e,n){if(n>0){var r=L[n-1],i=s[r.a],o=s[r.b];i.size=t[n-1],o.size=e,N(i.element,i.size,r[Sk],i.i),N(o.element,o.size,r[_k],o.i)}}))},getSizes:k,collapse:function(e){F(s[e])},destroy:function(e,t){L.forEach((function(r){if(!0!==t?r.parent.removeChild(r.gutter):(r.gutter[bk]("mousedown",r[wk]),r.gutter[bk]("touchstart",r[wk])),!0!==e){var i=T(n,r.a.size,r[Sk]);Object.keys(i).forEach((function(e){s[r.a].element.style[e]="",s[r.b].element.style[e]=""}))}}))},parent:c,pairs:L}};function Rk(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(n[r]=e[r]);return n}var Mk=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentDidMount=function(){var e=this.props;e.children;var t=e.gutter,n=Rk(e,["children","gutter"]);n.gutter=function(e,n){var r;return t?r=t(e,n):(r=document.createElement("div")).className="gutter gutter-"+n,r.__isSplitGutter=!0,r},this.split=Ak(this.parent.children,n)},t.prototype.componentDidUpdate=function(e){var t=this,n=this.props;n.children;var r=n.minSize,i=n.sizes,o=n.collapsed,a=Rk(n,["children","minSize","sizes","collapsed"]),s=e.minSize,l=e.sizes,c=e.collapsed,u=["maxSize","expandToMin","gutterSize","gutterAlign","snapOffset","dragInterval","direction","cursor"].map((function(n){return t.props[n]!==e[n]})).reduce((function(e,t){return e||t}),!1);if(Array.isArray(r)&&Array.isArray(s)){var d=!1;r.forEach((function(e,t){d=d||e!==s[t]})),u=u||d}else u=!(!Array.isArray(r)&&!Array.isArray(s))||(u||r!==s);if(u)a.minSize=r,a.sizes=i||this.split.getSizes(),this.split.destroy(!0,!0),a.gutter=function(e,t,n){return n.previousSibling},this.split=Ak(Array.from(this.parent.children).filter((function(e){return!e.__isSplitGutter})),a);else if(i){var h=!1;i.forEach((function(e,t){h=h||e!==l[t]})),h&&this.split.setSizes(this.props.sizes)}Number.isInteger(o)&&(o!==c||u)&&this.split.collapse(o)},t.prototype.componentWillUnmount=function(){this.split.destroy(),delete this.split},t.prototype.render=function(){var e=this,t=this.props;t.sizes,t.minSize,t.maxSize,t.expandToMin,t.gutterSize,t.gutterAlign,t.snapOffset,t.dragInterval,t.direction,t.cursor,t.gutter,t.elementStyle,t.gutterStyle,t.onDrag,t.onDragStart,t.onDragEnd,t.collapsed;var n=t.children,r=Rk(t,["sizes","minSize","maxSize","expandToMin","gutterSize","gutterAlign","snapOffset","dragInterval","direction","cursor","gutter","elementStyle","gutterStyle","onDrag","onDragStart","onDragEnd","collapsed","children"]);return a.createElement("div",Object.assign({},{ref:function(t){e.parent=t}},r),n)},t}(a.Component);Mk.propTypes={sizes:Vo().arrayOf(Vo().number),minSize:Vo().oneOfType([Vo().number,Vo().arrayOf(Vo().number)]),maxSize:Vo().oneOfType([Vo().number,Vo().arrayOf(Vo().number)]),expandToMin:Vo().bool,gutterSize:Vo().number,gutterAlign:Vo().string,snapOffset:Vo().oneOfType([Vo().number,Vo().arrayOf(Vo().number)]),dragInterval:Vo().number,direction:Vo().string,cursor:Vo().string,gutter:Vo().func,elementStyle:Vo().func,gutterStyle:Vo().func,onDrag:Vo().func,onDragStart:Vo().func,onDragEnd:Vo().func,collapsed:Vo().number,children:Vo().arrayOf(Vo().element)},Mk.defaultProps={sizes:void 0,minSize:void 0,maxSize:void 0,expandToMin:void 0,gutterSize:void 0,gutterAlign:void 0,snapOffset:void 0,dragInterval:void 0,direction:void 0,cursor:void 0,gutter:void 0,elementStyle:void 0,gutterStyle:void 0,onDrag:void 0,onDragStart:void 0,onDragEnd:void 0,collapsed:void 0,children:void 0};const Lk=Mk,Fk=Me("kv-split"),zk=[0,100],Bk=[50,50];const Uk=function(e){const[t,n]=a.useState(),r=t=>{const{defaultSizePaneKey:n}=e;localStorage.setItem(n,t.join(","))};return a.useEffect((()=>{const{collapsedSizes:t,triggerCollapse:i}=e;if(i){const e=t||zk;r(e),n(e)}}),[e.triggerCollapse]),a.useEffect((()=>{const{triggerExpand:t,defaultSizes:i}=e,o=i||Bk;t&&(r(o),n(o))}),[e.triggerExpand]),(0,Le.jsx)(a.Fragment,{children:(0,Le.jsx)(Lk,{direction:e.direction||"horizontal",sizes:t||(()=>{var t;const{defaultSizePaneKey:n,defaultSizes:r=Bk,initialSizes:i}=e;if(i)return i;return(null===(t=localStorage.getItem(n))||void 0===t?void 0:t.split(",").map(Number))||r})(),minSize:e.minSize||[0,0],onDrag:t=>{const{onSplitDragAdditional:n}=e;n&&n(),r(t)},className:Fk(null,e.direction||"horizontal"),gutterSize:8,onDragStart:()=>{const{onSplitStartDragAdditional:t}=e;t&&t(),n(void 0)},expandToMin:!0,children:e.children})})},Hk=Uk;var Vk=n(6748),Gk=n(8511),Wk=n(93717);const qk=Me("heatmap"),Zk={width:0,height:0},Yk=10,Kk=2,Qk=e=>{const[t,n]=a.useState(Zk),{tablets:r}=e,i=a.useRef(null),o=a.useRef(null);a.useEffect((()=>{const e=i.current,n=e.getContext("2d");n.clearRect(0,0,e.offsetWidth,e.offsetHeight),r.map(function(e){return(n,r)=>{const{columnsCount:i}=t,o=r%i*(Yk+Kk),a=Math.floor(r/i)*(Yk+Kk);e.fillStyle=n.color||"grey",e.fillRect(o,a,Yk,Yk)}}(n))})),a.useLayoutEffect((()=>{const e=o.current;if(e){const t=e.offsetWidth-15,i=Math.floor(t/(Yk+Kk)),o=Math.ceil(r.length/i);n({width:t,height:o*(Yk+Kk),columnsCount:i,rowsCount:o})}}),[]);const s=()=>{let e=i.current,t=0;for(;e;)t+=e.offsetTop,e=e.offsetParent;return t},l=()=>{let e=i.current,t=0;for(;e;)t+=e.offsetLeft,e=e.offsetParent;return t},c=(e,n)=>{const{columnsCount:r}=t,i=Yk+Kk,o=Yk+Kk,a=Math.floor(e/i);return r*Math.floor(n/o)+a},u=kt()(((t,n)=>{const i=new CustomEvent("scroll");window.dispatchEvent(i);const o=e.parentRef.current,a=t-l()+o.scrollLeft,u=n-s()+o.scrollTop,d=c(a,u),h=r[d];if(h){const r={name:h.currentMetric,value:h.formattedValue};e.showTooltip(void 0,h,"tablet",r,{left:t-20,top:n-20})}else e.hideTooltip()}),20);return(0,Le.jsx)("div",{ref:o,className:qk("canvas-container"),onMouseLeave:()=>{setTimeout((()=>{e.hideTooltip()}),40)},children:(0,Le.jsx)("canvas",{ref:i,width:t.width,height:t.height,onClick:t=>{const n=e.parentRef.current,i=t.clientX-l()+n.scrollLeft,o=t.clientY-s()+n.scrollTop,a=c(i,o),u=r[a];u&&window.open((e=>{const{TabletId:t}=e,n=window.location.hostname,r=(0,Ta.ax)(Ta.ZP.tablet,{id:t}),i=[n,h_.EZ,r].map((e=>e.startsWith("/")?e.slice(1):e)).filter(Boolean).join("/");return"".concat("https://").concat(i)})(u),"_blank")},onMouseMove:e=>u(e.clientX,e.clientY)})})},Xk={r:255,g:4,b:0},$k={r:255,g:219,b:77},Jk={r:59,g:201,b:53},ej={CPU:{min:0,max:1e6},Network:{min:0,max:1e9},Storage:{min:0,max:2e9},DataSize:{min:0,max:2e9},RowCount:{min:0},IndexSize:{min:0}},tj=e=>{const t=e.toString(16);return 1===t.length?"0".concat(t):t},nj=(e,t,n)=>{if(1===e)return[t];if(2===e)return[t,n];const r=(t.r-n.r)/(e-1),i=(t.g-n.g)/(e-1),o=(t.b-n.b)/(e-1),a=[];for(let s=0;s<e;s++)a.push({r:Math.round(t.r-r*s),g:Math.round(t.g-i*s),b:Math.round(t.b-o*s)});return a.map((e=>(e=>{let{r:t,g:n,b:r}=e;return"#".concat(tj(t)).concat(tj(n)).concat(tj(r))})(e)))},rj=e=>{const t=Math.floor(e/2),n=t+1;return[...nj(e%2===0?t:t+1,Jk,$k),...nj(n,$k,Xk).slice(1)]},ij=(e,t)=>{const n=new Set,r=ej[e]||{};t.forEach((t=>{n.add(Number(t.metrics[e]))})),Number.isInteger(r.min)&&n.add(r.min),Number.isInteger(r.max)&&n.add(r.max);const i=Array.from(n.values()).sort(((e,t)=>e-t));return{min:i[0],max:i[i.length-1]}},oj=Me("histogram"),aj=e=>{const t=a.useRef(),{data:n={},maxCount:r}=e,{count:i,leftBound:o,rightBound:s,color:l}=n,c=i/r*100;return(0,Le.jsx)("div",{ref:t,className:oj("item"),style:{backgroundColor:l,height:"".concat(c,"%")},onMouseEnter:()=>{const n=t.current;e.showTooltip(n,{count:i,leftBound:o,rightBound:s},"histogram")},onMouseLeave:e.hideTooltip})},sj=e=>{const{tablets:t,currentMetric:n}=e,{min:r,max:i}=ij(n,t),o=rj(50),a=(i-r)/50,s=o.map(((e,t)=>({color:e,count:0,leftBound:(0,ks.uf)(r+t*a),rightBound:(0,ks.uf)(r+(t+1)*a)})));let l=0;t.forEach((e=>{var t;const r=n&&Number(e.metrics[n]),i=Math.floor(r/a),o=(null===(t=s[i])||void 0===t?void 0:t.count)+1;o>l&&(l=o),s[i]={...s[i],count:o}}));return(0,Le.jsx)("div",{className:oj(),children:(0,Le.jsxs)("div",{className:oj("chart"),children:[Boolean(i)&&s.map(((t,n)=>(0,Le.jsx)(aj,{data:t,maxCount:l,showTooltip:e.showTooltip,hideTooltip:e.hideTooltip},n))),(0,Le.jsx)("div",{className:oj("x-min"),children:(0,ks.uf)(r)}),(0,Le.jsx)("div",{className:oj("x-max"),children:(0,ks.uf)(i)}),(0,Le.jsx)("div",{className:oj("y-min"),children:"0"}),(0,Le.jsx)("div",{className:oj("y-max"),children:(0,ks.uf)(l)})]})})},lj=Me("heatmap"),cj=rj(500),uj=e=>{let{path:t}=e;const n=Ao(),r=a.createRef(),{autorefresh:i}=Do((e=>e.schema)),{currentData:o,isFetching:s,error:l}=Wk.Vc.useGetHeatmapTabletsInfoQuery({path:t},{pollingInterval:i}),c=s&&void 0===o,{tablets:u=[],metrics:d}=o||{},{sort:h,heatmap:p,currentMetric:f}=Do((e=>e.heatmap)),m=function(){n((0,vs.hJ)(...arguments))},g=()=>{n((0,vs.i8)())},v=e=>{n((0,Wk.U_)({currentMetric:e[0]}))},y=()=>{n((0,Wk.U_)({sort:!h}))},b=()=>{n((0,Wk.U_)({heatmap:!p}))},x=()=>{const{min:e,max:t}=ij(f,u),n=u.map((n=>{var r;const i=f&&Number(null===(r=n.metrics)||void 0===r?void 0:r[f]),o=((e,t,n)=>0===n?0:Math.round((e-t)/(n-t)*499))(i,e,t),a=cj[o];return{...n,color:a,value:i,formattedValue:(0,ks.uf)(i),currentMetric:f}})),i=h?n.sort(((e,t)=>Number(t.value)-Number(e.value))):n;return(0,Le.jsx)("div",{ref:r,className:lj("items"),children:(0,Le.jsx)(Qk,{tablets:i,parentRef:r,showTooltip:m,hideTooltip:g})})};return c?(0,Le.jsx)(N_,{}):l?(0,Le.jsx)(zc,{error:l}):(()=>{const{min:e,max:t}=ij(f,u);return(0,Le.jsxs)("div",{className:lj(),children:[(0,Le.jsxs)("div",{className:lj("filters"),children:[(0,Le.jsx)(ww,{className:lj("heatmap-select"),value:f?[f]:[],options:d,onUpdate:v,width:200}),(0,Le.jsx)("div",{className:lj("sort-checkbox"),children:(0,Le.jsx)(T_,{onUpdate:y,checked:h,children:"Sort"})}),(0,Le.jsx)("div",{className:lj("histogram-checkbox"),children:(0,Le.jsx)(T_,{onUpdate:b,checked:p,children:"Heatmap"})}),(0,Le.jsxs)("div",{className:lj("limits"),children:[(0,Le.jsxs)("div",{className:lj("limits-block"),children:[(0,Le.jsx)("div",{className:lj("limits-title"),children:"min:"}),(0,Le.jsx)("div",{className:lj("limits-value"),children:Number.isInteger(e)?(0,ks.uf)(e):"\u2014"})]}),(0,Le.jsxs)("div",{className:lj("limits-block"),children:[(0,Le.jsx)("div",{className:lj("limits-title"),children:"max:"}),(0,Le.jsx)("div",{className:lj("limits-value"),children:Number.isInteger(t)?(0,ks.uf)(t):"\u2014"})]}),(0,Le.jsxs)("div",{className:lj("limits-block"),children:[(0,Le.jsx)("div",{className:lj("limits-title"),children:"count:"}),(0,Le.jsx)("div",{className:lj("limits-value"),children:(0,ks.uf)(u.length)})]})]})]}),p?x():(0,Le.jsx)(sj,{tablets:u,currentMetric:f,showTooltip:m,hideTooltip:g})]})})()};var dj,hj=n(35638),pj=n(6523);function fj(){return fj=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},fj.apply(this,arguments)}const mj=function(e){return a.createElement("svg",fj({viewBox:"0 0 12 7",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},e),dj||(dj=a.createElement("path",{d:"M8 7h3V5h1V2H6.66C6.085.79 4.86 0 3.5 0 1.57 0 0 1.57 0 3.5S1.57 7 3.5 7c1.36 0 2.59-.79 3.16-2H8v2zm2-1H9V4H5.97l-.115.335a2.5 2.5 0 110-1.67L5.97 3H11v1h-1v2zM3.5 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zM3 3.5a.5.5 0 111 0 .5.5 0 01-1 0z"})))},gj={id:"Id",name:"Name",key:"Key",type:"Type",notNull:"NotNull",familyName:"Family",preferredPoolKind:"Media",columnCodec:"Compression"};function vj(e){const t=e.keyColumnIds.reduce(((t,n,r)=>(t[n]=r-e.keyColumnIds.length,t)),{}),n=[{name:gj.id,width:60}];return(0,pj.uL)(e.type)||n.push({name:gj.key,width:70,resizeMinWidth:70,defaultOrder:Hc.ZP.ASCENDING,sortAccessor:e=>e.Id&&t[e.Id]||1,render:t=>{let{row:n}=t;return n.Id&&e.keyColumnIds.includes(n.Id)?(0,Le.jsx)("div",{className:e.b("key-icon"),children:(0,Le.jsx)(we.J,{data:mj,width:12,height:7})}):null}}),n.push({name:gj.name,width:100},{name:gj.type,width:100},{name:gj.notNull,width:100,defaultOrder:Hc.ZP.DESCENDING,render:e=>{let{row:t}=e;if(t.NotNull)return"\u2713"}}),e.withFamilies&&(0,pj.fd)(e.type)&&n.push({name:gj.familyName,width:100,render:t=>{let{row:n}=t;return n.Family?e.families[n.Family].Name:void 0},sortAccessor:t=>t.Family?e.families[t.Family].Name:void 0},{name:gj.preferredPoolKind,width:100,render:t=>{var n,r;let{row:i}=t;return i.Family?null===(n=e.families[i.Family].StorageConfig)||void 0===n||null===(r=n.Data)||void 0===r?void 0:r.PreferredPoolKind:void 0},sortAccessor:t=>{var n,r;return t.Family?null===(n=e.families[t.Family].StorageConfig)||void 0===n||null===(r=n.Data)||void 0===r?void 0:r.PreferredPoolKind:void 0}},{name:gj.columnCodec,width:100,render:t=>{let{row:n}=t;return n.Family?(r=e.families[n.Family].ColumnCodec)?r===hj.C6.ColumnCodecPlain?"None":r.replace("ColumnCodec","").toLocaleLowerCase():null:void 0;var r},sortAccessor:t=>t.Family?e.families[t.Family].ColumnCodec:void 0}),n}const yj=Me("schema-viewer"),bj=e=>{let{type:t,path:n,withFamilies:r=!1}=e;const{data:i,loading:o}=Do((e=>e.schema)),a=n?i[n]:void 0,{columns:s,keyColumnIds:l}=function(e,t){let n=[],r=[];if((0,pj.vp)(e)&&(0,pj.Jp)(e)){var i,o,a;const e=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{Name:t,Schema:n}=e;if(n){const{Columns:e,KeyColumnNames:r}=n,i=null===r||void 0===r?void 0:r.map((t=>{const n=null===e||void 0===e?void 0:e.find((e=>e.Name===t));return null===n||void 0===n?void 0:n.Id})).filter((e=>void 0!==e));return{Columns:e,KeyColumnNames:r,Name:t,KeyColumnIds:i}}return{Name:t}}(null===t||void 0===t||null===(i=t.PathDescription)||void 0===i?void 0:i.ColumnTableDescription);n=null!==(o=e.KeyColumnIds)&&void 0!==o?o:[],r=null!==(a=e.Columns)&&void 0!==a?a:[]}else if((0,pj.uL)(e)){var s,l,c;r=null!==(s=null===t||void 0===t||null===(l=t.PathDescription)||void 0===l||null===(c=l.ExternalTableDescription)||void 0===c?void 0:c.Columns)&&void 0!==s?s:[]}else{var u,d,h,p,f,m;n=null!==(u=null===t||void 0===t||null===(d=t.PathDescription)||void 0===d||null===(h=d.Table)||void 0===h?void 0:h.KeyColumnIds)&&void 0!==u?u:[],r=null!==(p=null===t||void 0===t||null===(f=t.PathDescription)||void 0===f||null===(m=f.Table)||void 0===m?void 0:m.Columns)&&void 0!==p?p:[]}return{columns:r,keyColumnIds:n}}(t,a),c=function(e){var t,n,r,i,o;return null!==(t=null===e||void 0===e||null===(n=e.PathDescription)||void 0===n||null===(r=n.Table)||void 0===r||null===(i=r.PartitionConfig)||void 0===i||null===(o=i.ColumnFamilies)||void 0===o?void 0:o.reduce(((e,t)=>(t.Id&&(e[t.Id]=t),e)),{}))&&void 0!==t?t:{}}(a);return(0,Le.jsx)("div",{className:yj(null),children:o?(0,Le.jsx)(Qc,{}):(0,Le.jsx)(qc,{columnsWidthLSKey:"schemaTableColumnsWidth",data:s,columns:vj({type:t,b:yj,families:c,keyColumnIds:l,withFamilies:r}),settings:Lo.LE,initialSortOrder:{columnId:gj.key,order:Hc.ZP.ASCENDING}})})},xj=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 1.5a6.501 6.501 0 0 1 6.445 5.649.75.75 0 1 1-1.488.194A5.001 5.001 0 0 0 4.43 4.5h1.32a.75.75 0 0 1 0 1.5h-3A.75.75 0 0 1 2 5.25v-3a.75.75 0 1 1 1.5 0v1.06A6.48 6.48 0 0 1 8 1.5Zm5.25 13a.75.75 0 0 0 .75-.75v-3a.75.75 0 0 0-.75-.75h-3a.75.75 0 1 0 0 1.5h1.32a5.001 5.001 0 0 1-8.528-2.843.75.75 0 1 0-1.487.194 6.501 6.501 0 0 0 10.945 3.84v1.059c0 .414.336.75.75.75Z",clipRule:"evenodd"})),wj=JSON.parse('{"None":"None","15 sec":"15 sec","1 min":"1 min","2 min":"2 min","5 min":"5 min","Refresh":"Refresh"}'),Sj=(0,We.wZ)("ydb-diagnostics-autorefresh-control",{en:wj}),_j=Me("autorefresh-control");function Cj(e){let{className:t}=e;const n=Ao(),r=Do((e=>e.schema.autorefresh));return(0,Le.jsxs)("div",{className:_j(null,t),children:[(0,Le.jsx)(Ie.z,{view:"flat",onClick:()=>{n(Dl.h.util.invalidateTags(["All"]))},extraProps:{"aria-label":Sj("Refresh")},children:(0,Le.jsx)(Ie.z.Icon,{children:(0,Le.jsx)(xj,{})})}),(0,Le.jsxs)(ww,{value:[String(r)],onUpdate:e=>{n((0,Vk.w4)(Number(e)))},width:85,children:[(0,Le.jsx)(ww.Option,{value:"0",children:Sj("None")}),(0,Le.jsx)(ww.Option,{value:"15000",children:Sj("15 sec")}),(0,Le.jsx)(ww.Option,{value:"60000",children:Sj("1 min")}),(0,Le.jsx)(ww.Option,{value:"120000",children:Sj("2 min")}),(0,Le.jsx)(ww.Option,{value:"300000",children:Sj("5 min")})]})]})}var Ej=n(1504);const Tj=Dl.h.injectEndpoints({endpoints:e=>({getTopic:e.query({queryFn:async e=>{try{const t=await window.api.getTopic(e);return"object"!==typeof t?{error:{}}:{data:t}}catch(t){return{error:t}}},providesTags:["All"]})}),overrideExisting:"throw"}),Oj=(0,p_.P1)((e=>e),(e=>Tj.endpoints.getTopic.select({path:e}))),Nj=(0,p_.P1)((e=>e),((e,t)=>Oj(t)),((e,t)=>{var n;return null===(n=t(e).data)||void 0===n?void 0:n.topic_stats})),kj=(0,p_.P1)((e=>e),((e,t)=>Oj(t)),((e,t)=>{var n;return null===(n=t(e).data)||void 0===n?void 0:n.consumers})),jj=(0,p_.P1)(kj,(e=>null===e||void 0===e?void 0:e.map((e=>null===e||void 0===e?void 0:e.name)).filter((e=>void 0!==e)))),Ij=(0,p_.P1)(Nj,(e=>{if(!e)return;const{store_size_bytes:t="0",min_last_write_time:n,max_write_time_lag:r,bytes_written:i}=e||{};return{storeSize:t,partitionsIdleTime:(0,Ej.lE)(n),partitionsWriteLag:(0,Ej.DA)(r),writeSpeed:(0,BC.c4)(i)}})),Pj=(0,p_.P1)(kj,(e=>null===e||void 0===e?void 0:e.map((e=>{const{name:t,consumer_stats:n}=e||{},{min_partitions_last_read_time:r,max_read_time_lag:i,max_write_time_lag:o,bytes_read:a}=n||{};return{name:t,readSpeed:(0,BC.c4)(a),writeLag:(0,Ej.DA)(o),readLag:(0,Ej.DA)(i),readIdleTime:(0,Ej.lE)(r)}})))),Dj=JSON.parse('{"averageSpeed":"Average speed","perMinute":"per minute","perHour":"per hour","perDay":"per day"}'),Aj=JSON.parse('{"averageSpeed":"\u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c","perMinute":"\u0437\u0430 \u043c\u0438\u043d\u0443\u0442\u0443","perHour":"\u0437\u0430 \u0447\u0430\u0441","perDay":"\u0437\u0430 \u0434\u0435\u043d\u044c"}'),Rj=(0,We.wZ)("ydb-components-speed-multimeter",{ru:Aj,en:Dj}),Mj=Me("speed-multimeter"),Lj=e=>{let{data:t,speedSize:n="kb",withValue:r=!0,withPopover:i=!0}=e;const{perMinute:o=0,perHour:s=0,perDay:l=0}=t||{},c=[o,s,l],u=e=>(0,BC.td)({value:e,size:n,withSpeedLabel:!0}),d=[{value:u(o),label:Rj("perMinute")},{value:u(s),label:Rj("perHour")},{value:u(l),label:Rj("perDay")}],[h,p]=a.useState(o),[f,m]=a.useState(r?0:void 0),[g,v]=a.useState(),y=(e,t)=>{p(e[t]),m(t),v(t)},b=e=>f===e,x=e=>g===e;return(0,Le.jsx)("div",{className:Mj(),children:(0,Le.jsxs)("div",{className:Mj("content"),children:[r&&(0,Le.jsx)("div",{className:Mj("displayed-value"),children:u(h)}),(0,Le.jsx)(fi,{content:(0,Le.jsxs)("div",{className:Mj("popover-content"),children:[(0,Le.jsx)("span",{className:Mj("popover-header"),children:Rj("averageSpeed")}),d.map(((e,t)=>{return(0,Le.jsx)("span",{className:Mj("popover-row",(n=b(t),n?{color:"primary"}:{color:"secondary"})),children:"".concat(e.label,": ").concat(e.value)},t);var n}))]}),className:Mj("popover-container"),placement:"bottom",disabled:!i,hasArrow:!0,size:"s",children:(0,Le.jsx)("div",{className:Mj("bars"),onMouseLeave:()=>{p(o),m(r?0:void 0),v(void 0)},children:(()=>{const e=Math.max(...c,0)||1;return c.map(((t,n)=>(0,Le.jsx)("div",{className:Mj("bar-container",{highlighted:x(n)}),onMouseEnter:y.bind(null,c,n),children:(0,Le.jsx)("div",{className:Mj("bar",{color:b(n)?"dark":"light"}),style:{width:"".concat(100*t/e,"%")}})},n)))})()})})]})})},Fj=Me("ydb-diagnostics-consumers-topic-stats"),zj=e=>{let{data:t}=e;const{writeSpeed:n,partitionsWriteLag:r,partitionsIdleTime:i}=t||{},o=[{label:"Write speed",value:(0,Le.jsx)(Lj,{data:n})},{label:"Write lag",value:(0,ks.gC)(r||0)},{label:"Write idle time",value:(0,ks.gC)(i||0)}];return(0,Le.jsx)("div",{className:Fj("wrapper"),children:o.map(((e,t)=>(0,Le.jsxs)("div",{className:Fj("item"),children:[(0,Le.jsx)("div",{className:Fj("label"),children:e.label}),(0,Le.jsx)("div",{className:Fj("value"),children:e.value})]},t)))})},Bj=70,Uj=54,Hj=268,Vj="#ADE8F5",Gj="#f5be9d",Wj=e=>{let{width:t,height:n,transform:r}=e;return(0,Le.jsx)("path",{d:"M-".concat(t/2," 0 c0 -").concat(n,", ").concat(t," -").concat(n,", ").concat(t," 0"),fill:"none",strokeDasharray:"4,6",stroke:"#28f",strokeWidth:"1.6",transform:r})},qj=e=>{let{width:t}=e;return(0,Le.jsx)("path",{fill:"none",strokeWidth:"2",d:"M0 0 h".concat(t," l-10 -5 m0 10 l10 -5")})},Zj=()=>(0,Le.jsxs)("g",{fill:"var(--g-color-text-primary)",fontSize:"12",children:[(0,Le.jsx)("g",{transform:"translate(0, ".concat(27,")"),stroke:Gj,children:(0,Le.jsx)(qj,{width:203})}),(0,Le.jsxs)("g",{transform:"translate(".concat(30,", 0)"),children:[(0,Le.jsxs)("g",{transform:"translate(".concat(35,", ").concat(27,")"),children:[(0,Le.jsx)(Wj,{width:Bj,height:15}),(0,Le.jsx)("text",{x:"0",y:"-15",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"write lag"})})]}),(0,Le.jsxs)("g",{transform:"translate(".concat(119,", ").concat(27,")"),children:[(0,Le.jsx)(Wj,{width:98,height:15}),(0,Le.jsx)("text",{x:"0",y:"-15",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"write idle time"})})]})]}),(0,Le.jsxs)("g",{transform:"translate(".concat(30,", 0)"),children:[(0,Le.jsxs)("g",{transform:"translate(".concat(0,", ",27,")"),children:[(0,Le.jsx)("use",{y:"-10",xlinkHref:"#check",stroke:Gj}),(0,Le.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"create time"})})]}),(0,Le.jsxs)("g",{transform:"translate(".concat(Bj,", ").concat(27,")"),children:[(0,Le.jsx)("use",{y:"-10",xlinkHref:"#check",stroke:Gj}),(0,Le.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"write time"})})]}),(0,Le.jsx)("g",{transform:"translate(".concat(168,", ").concat(27,")"),children:(0,Le.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"now"})})})]})]}),Yj=()=>(0,Le.jsxs)("g",{fill:"var(--g-color-text-primary)",fontSize:"12",children:[(0,Le.jsx)("g",{transform:"translate(0, ".concat(27,")"),stroke:Vj,children:(0,Le.jsx)(qj,{width:Hj})}),(0,Le.jsxs)("g",{transform:"translate(".concat(30,", 0)"),children:[(0,Le.jsxs)("g",{transform:"translate(".concat(105,", ").concat(27,")"),children:[(0,Le.jsx)(Wj,{width:Bj,height:15}),(0,Le.jsx)("text",{x:"0",y:"-15",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"read lag"})})]}),(0,Le.jsxs)("g",{transform:"translate(".concat(35,", ").concat(27,")"),children:[(0,Le.jsx)(Wj,{width:Bj,height:15}),(0,Le.jsx)("text",{x:"0",y:"-15",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"write lag"})})]}),(0,Le.jsxs)("g",{transform:"translate(".concat(182,", ").concat(27,")"),children:[(0,Le.jsx)(Wj,{width:91,height:15}),(0,Le.jsx)("text",{x:"0",y:"-15",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"read idle time"})})]})]}),(0,Le.jsxs)("g",{transform:"translate(".concat(30,", ").concat(27,")"),children:[(0,Le.jsxs)("g",{transform:"translate(".concat(0,", 0)"),children:[(0,Le.jsx)("use",{y:"-10",xlinkHref:"#check",stroke:Vj}),(0,Le.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"create time"})})]}),(0,Le.jsxs)("g",{transform:"translate(".concat(Bj,", 0)"),children:[(0,Le.jsx)("use",{y:"-10",xlinkHref:"#check",stroke:Vj}),(0,Le.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"write time"})})]}),(0,Le.jsxs)("g",{transform:"translate(".concat(140,", 0)"),children:[(0,Le.jsx)("use",{x:"-2",y:"-10",xlinkHref:"#check",stroke:Vj}),(0,Le.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"read time"})})]}),(0,Le.jsx)("g",{transform:"translate(".concat(224,", 0)"),children:(0,Le.jsx)("text",{x:"0",y:"20",textAnchor:"middle",children:(0,Le.jsx)("tspan",{x:"0",dy:"0",children:"now"})})})]})]}),Kj=e=>{let{id:t,fill:n}=e;return(0,Le.jsx)("pattern",{id:t,x:"0",y:"0",width:"8",height:"8",patternUnits:"userSpaceOnUse",children:(0,Le.jsx)("path",{d:"M0 5L5 0H8L0 8V5M5 8L8 5V8Z",fill:n})})},Qj=()=>(0,Le.jsxs)("svg",{className:"paint",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 ".concat(Hj," ").concat(Uj),width:Hj,height:Uj,children:[(0,Le.jsxs)("defs",{children:[(0,Le.jsx)("g",{id:"check",children:(0,Le.jsx)("path",{d:"M0 3 v14",strokeWidth:"2"})}),(0,Le.jsx)(Kj,{id:"latest-read",fill:Vj}),(0,Le.jsx)(Kj,{id:"latest-write",fill:Gj})]}),(0,Le.jsx)(Zj,{})]}),Xj=()=>(0,Le.jsxs)("svg",{className:"paint",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 ".concat(Hj," ").concat(Uj),width:Hj,height:Uj,children:[(0,Le.jsxs)("defs",{children:[(0,Le.jsx)("g",{id:"check",children:(0,Le.jsx)("path",{d:"M0 3 v14",strokeWidth:"2"})}),(0,Le.jsx)(Kj,{id:"latest-read",fill:Vj}),(0,Le.jsx)(Kj,{id:"latest-write",fill:Gj})]}),(0,Le.jsx)(Yj,{})]}),$j=Me("ydb-lag-popover-content"),Jj=e=>{let{text:t,type:n}=e;return(0,Le.jsxs)("div",{className:$j({type:n}),children:[(0,Le.jsx)("div",{className:$j("text"),children:t}),(0,Le.jsx)("div",{children:"read"===n?(0,Le.jsx)(Xj,{}):(0,Le.jsx)(Qj,{})})]})},eI=JSON.parse('{"noConsumersMessage.topic":"This topic has no consumers","noConsumersMessage.stream":"This changefeed has no consumers","lagsPopover.readLags":"Read lags statistics, maximum among all consumer partitions (time format dd hh:mm:ss)","table.emptyDataMessage":"No consumers match the current search","controls.search":"Consumer"}'),tI=JSON.parse('{"noConsumersMessage.topic":"\u0423 \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u043f\u0438\u043a\u0430 \u043d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439","noConsumersMessage.stream":"\u0423 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0440\u0438\u043c\u0430 \u043d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439","lagsPopover.readLags":"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043b\u0430\u0433\u043e\u0432 \u0447\u0442\u0435\u043d\u0438\u044f, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f (\u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u0434 \u0447\u0447:\u043c\u043c:\u0441\u0441)","table.emptyDataMessage":"\u041f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0438\u0441\u043a\u0443 \u043d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439","controls.search":"Consumer"}'),nI=(0,We.wZ)("ydb-diagnostics-consumers",{ru:tI,en:eI}),rI="consumer",iI="readSpeed",oI="readLags",aI={[rI]:"Consumer",[iI]:"Read speed",[oI]:"Read lags, duration"},sI="writeLag",lI="readLag",cI="readIdleTime",uI={[sI]:"write lag",[lI]:"read lag",[cI]:"read idle time"},dI=Me("ydb-diagnostics-consumers-columns-header"),hI=()=>(0,Le.jsx)(Po,{className:dI("lags"),text:aI[oI],popoverContent:(0,Le.jsx)(Jj,{text:nI("lagsPopover.readLags"),type:"read"})}),pI=Me("ydb-diagnostics-consumers-columns"),fI=[{name:rI,header:aI[rI],align:Hc.ZP.LEFT,render:e=>{let{row:t}=e;if(!t.name)return"\u2013";const n=ol().parse(location.search,{ignoreQueryPrefix:!0});return(0,Le.jsx)(_l,{to:(0,Ta.ax)(Ta.ZP.tenant,void 0,{...n,[ds.diagnosticsTab]:us.qQ.partitions,selectedConsumer:t.name}),children:t.name})}},{name:iI,header:aI[iI],align:Hc.ZP.RIGHT,resizeMinWidth:140,sortAccessor:e=>e.readSpeed.perMinute,render:e=>{let{row:t}=e;return(0,Le.jsx)(Lj,{data:t.readSpeed})}},{name:oI,header:(0,Le.jsx)(hI,{}),className:pI("lags-header"),sub:[{name:sI,header:uI[sI],align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return(0,ks.gC)(t.writeLag)}},{name:lI,header:uI[lI],align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return(0,ks.gC)(t.readLag)}},{name:cI,header:uI[cI],align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return(0,ks.gC)(t.readIdleTime)}}]}],mI=Me("ydb-diagnostics-consumers"),gI=e=>{let{path:t,type:n}=e;const r=(0,pj.zf)(n),[i,o]=a.useState(""),{autorefresh:s}=Do((e=>e.schema)),{currentData:l,isFetching:c,error:u}=Tj.useGetTopicQuery({path:t},{pollingInterval:s}),d=c&&void 0===l,h=Do((e=>Pj(e,t))),p=Do((e=>Ij(e,t))),f=a.useMemo((()=>{if(!h)return[];const e=new RegExp(m_()(i),"i");return h.filter((t=>e.test(String(t.name))))}),[h,i]);return d?(0,Le.jsx)(N_,{size:"m"}):u?(0,Le.jsx)(zc,{error:u}):h&&h.length?(0,Le.jsxs)("div",{className:mI(),children:[(0,Le.jsxs)("div",{className:mI("controls"),children:[(0,Le.jsx)(Yc,{onChange:e=>{o(e)},placeholder:nI("controls.search"),className:mI("search"),value:i}),p&&(0,Le.jsx)(zj,{data:p})]}),(0,Le.jsx)("div",{className:mI("table-wrapper"),children:(0,Le.jsx)("div",{className:mI("table-content"),children:(0,Le.jsx)(qc,{columnsWidthLSKey:"consumersColumnsWidth",wrapperClassName:mI("table"),data:f,columns:fI,settings:Lo.LE,emptyDataMessage:nI("table.emptyDataMessage")})})})]}):(0,Le.jsx)("div",{children:nI("noConsumersMessage.".concat(r?"stream":"topic"))})},vI=Dl.h.injectEndpoints({endpoints:e=>({getDescribe:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{const t=await Promise.all(e.map((e=>window.api.getDescribe({path:e},{signal:n}))));return{data:t.reduce(((e,t)=>(null!==t&&void 0!==t&&t.Path&&(e[t.Path]=t),e)),{})}}catch(r){return{error:r}}},providesTags:["All"]})}),overrideExisting:"throw"}),yI=Me("kv-describe"),bI=new Map,xI=e=>{let{tenant:t,type:n}=e;const{autorefresh:r,currentSchemaPath:i}=Do((e=>e.schema)),o=(0,pj.St)(n),a=Do((e=>(0,Vk.eU)(e,i,n)),ae.wU),s=i||t;let l=zl.CN;o?a&&(l=[s,...a]):l=[s];const{currentData:c,isFetching:u,error:d}=vI.useGetDescribeQuery(l,{pollingInterval:r}),h=u&&void 0===c,p=c;let f;if(p){const e=Object.keys(p);f=1===e.length?p[e[0]]:p}return h||o&&!a?(0,Le.jsx)(N_,{size:"m"}):d?(0,Le.jsx)(zc,{error:d,className:yI("message-container")}):h||f?(0,Le.jsx)("div",{className:yI(),children:(0,Le.jsx)("div",{className:yI("result"),children:(0,Le.jsx)(bs(),{data:f,className:yI("tree"),onClick:e=>{let{path:t}=e;const n=!bI.get(t);bI.set(t,n)},searchOptions:{debounceTime:300},isExpanded:e=>bI.get(e)||!1})})}):(0,Le.jsx)("div",{className:yI("message-container"),children:"Empty"})},wI=e=>{const{PathType:t,PathSubType:n}=(null===e||void 0===e?void 0:e.Self)||{};return(0,pj.d)(t,n)},SI=JSON.parse('{"common.created":"Created","common.type":"Type"}'),_I=JSON.parse('{"common.created":"\u0421\u043e\u0437\u0434\u0430\u043d\u043e","common.type":"\u0422\u0438\u043f"}'),CI=(0,We.wZ)("ydb-components-info-viewer",{ru:_I,en:SI}),EI=Es({values:{PathType:e=>null===e||void 0===e?void 0:e.substring("EPathType".length),CreateStep:ks.o0},labels:{PathType:CI("common.type"),CreateStep:CI("common.created")}}),TI=e=>{let{value:t,withSpeedLabel:n,...r}=e;const i=(0,BC.td)({value:t,withSpeedLabel:n,...r}),o=(0,BC.td)({value:t,withSpeedLabel:n,size:"b"});return(0,Le.jsx)("span",{title:o,children:i})},OI=(e,t)=>e?(0,Le.jsx)(TI,{value:e,significantDigits:2,...t}):null,NI=Es({values:{Type:e=>null===e||void 0===e?void 0:e.substring(10),State:e=>null===e||void 0===e?void 0:e.substring(11),KeyColumnNames:e=>null===e||void 0===e?void 0:e.join(", "),DataColumnNames:e=>null===e||void 0===e?void 0:e.join(", "),DataSize:OI},labels:{KeyColumnNames:"Columns",DataColumnNames:"Includes"}}),kI={[hj.tB.METERING_MODE_REQUEST_UNITS]:"request-units",[hj.tB.METERING_MODE_RESERVED_CAPACITY]:"reserved-capacity"},jI=Es({values:{Partitions:e=>(0,ks.uf)((null===e||void 0===e?void 0:e.length)||0),PQTabletConfig:e=>{const t=Math.round(e.PartitionConfig.LifetimeSeconds/Lo.RQ*100)/100;return"".concat((0,ks.uf)(t)," hours")}},labels:{Partitions:"Partitions count",PQTabletConfig:"Retention"}}),II=Es({values:{Codecs:e=>e&&Object.values(e.Codecs||{}).join(", "),MeteringMode:e=>e&&kI[e]},labels:{MeteringMode:"Metering mode"}}),PI=Es({values:{StorageLimitBytes:ks.td,WriteSpeedInBytesPerSecond:ks.t$},labels:{StorageLimitBytes:"Retention storage",WriteSpeedInBytesPerSecond:"Partitions write speed"}}),DI=Es({values:{Mode:e=>null===e||void 0===e?void 0:e.substring("ECdcStreamMode".length),Format:e=>null===e||void 0===e?void 0:e.substring("ECdcStreamFormat".length)}}),AI=Es({values:{CPU:ks.LO,Memory:OI,Storage:OI,Network:ks.t$,ReadThroughput:ks.t$,WriteThroughput:ks.t$},defaultValueFormatter:ks.uf}),RI=Es({values:{FollowerCount:ks.uf},labels:{FollowerCountPerDataCenter:"FollowerCountPerDC"},defaultValueFormatter:e=>e&&String(e)}),MI=Es({values:{FollowerCount:ks.uf,CrossDataCenterFollowerCount:ks.uf}}),LI=Es({values:{DataSize:OI,IndexSize:OI,LastAccessTime:ks.o0,LastUpdateTime:ks.o0},defaultValueFormatter:ks.uf}),FI=new Set(["Type","State","DataSize","KeyColumnNames","DataColumnNames"]),zI=e=>{var t;let{data:n}=e;const r=wI(null===n||void 0===n?void 0:n.PathDescription);if(!n)return(0,Le.jsxs)("div",{className:"error",children:["No ",r," data"]});const i=null===(t=n.PathDescription)||void 0===t?void 0:t.TableIndex,o=[];let a;for(a in i)FI.has(a)&&o.push(NI(a,null===i||void 0===i?void 0:i[a]));return(0,Le.jsx)(Ss,{title:r,info:o})};var BI=n(39623);function UI(e){return"SELECT * FROM `".concat(e,"/.sys/primary_index_stats`")}const HI="execute-scan",VI=Dl.h.injectEndpoints({endpoints:e=>({getOlapStats:e.query({queryFn:async function(){let{path:e=""}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{signal:t}=arguments.length>1?arguments[1]:void 0;try{const n=await window.api.sendQuery({schema:"modern",query:UI(e),database:e,action:HI},{signal:t});return(0,BI.gW)(n)?{error:n}:{data:(0,BI.gY)(n)}}catch(n){return{error:n||new Error("Unauthorized")}}},providesTags:["All"]})}),overrideExisting:"throw"}),GI=Dl.h.injectEndpoints({endpoints:e=>({getOverview:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{const[t,...r]=await Promise.all(e.map((e=>window.api.getDescribe({path:e},{signal:n}))));return{data:{data:t,additionalData:r}}}catch(r){return{error:r}}}})})}),WI=JSON.parse('{"external-objects.source-type":"Source Type","external-objects.data-source":"Data Source","external-objects.location":"Location","external-objects.auth-method":"Auth Method","external-objects.auth-method.none":"None","external-objects.auth-method.service-account":"Service Account"}'),qI=JSON.parse('{"external-objects.source-type":"\u0422\u0438\u043f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430","external-objects.data-source":"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a","external-objects.location":"\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435","external-objects.auth-method":"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f","external-objects.auth-method.none":"\u041d\u0435\u0442","external-objects.auth-method.service-account":"\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442"}'),ZI=(0,We.wZ)("ydb-tenant-objects-info",{ru:qI,en:WI}),YI=Me("ydb-external-data-source-info"),KI=e=>{var t,n,r,i;return[{label:ZI("external-objects.source-type"),value:null===(t=e.PathDescription)||void 0===t||null===(n=t.ExternalDataSourceDescription)||void 0===n?void 0:n.SourceType},EI("CreateStep",null===(r=e.PathDescription)||void 0===r||null===(i=r.Self)||void 0===i?void 0:i.CreateStep)]},QI=e=>{var t;const{Location:n,Auth:r}=(null===(t=e.PathDescription)||void 0===t?void 0:t.ExternalDataSourceDescription)||{};return[...KI(e),{label:ZI("external-objects.location"),value:(0,Le.jsx)(Il,{name:n,showStatus:!1,hasClipboardButton:!0,clipboardButtonAlwaysVisible:!0,className:YI("location")})},{label:ZI("external-objects.auth-method"),value:null!==r&&void 0!==r&&r.ServiceAccount?ZI("external-objects.auth-method.service-account"):ZI("external-objects.auth-method.none")}]},XI=e=>{let{data:t,prepareData:n}=e;const r=wI(null===t||void 0===t?void 0:t.PathDescription),{error:i}=Do((e=>e.schema));return i?(0,Le.jsx)(zc,{error:i}):t?(0,Le.jsx)(Ss,{title:r,info:n(t)}):(0,Le.jsxs)("div",{className:"error",children:["No ",r," data"]})},$I=e=>{let{data:t}=e;return(0,Le.jsx)(XI,{data:t,prepareData:QI})},JI=e=>{let{data:t}=e;return(0,Le.jsx)(XI,{data:t,prepareData:KI})},eP=Me("ydb-external-table-info"),tP=(e,t)=>{var n,r;const{CreateStep:i}=(null===(n=e.PathDescription)||void 0===n?void 0:n.Self)||{},{SourceType:o,DataSourcePath:a}=(null===(r=e.PathDescription)||void 0===r?void 0:r.ExternalTableDescription)||{},s=null===a||void 0===a?void 0:a.split("/").pop();return[{label:ZI("external-objects.source-type"),value:o},EI("CreateStep",i),{label:ZI("external-objects.data-source"),value:a&&(0,Le.jsx)("span",{title:a,children:(0,Le.jsx)(IC,{title:s||"",url:t})})}]},nP=(e,t)=>{var n,r;const i=null===(n=e.PathDescription)||void 0===n||null===(r=n.ExternalTableDescription)||void 0===r?void 0:r.Location;return[...tP(e,t),{label:ZI("external-objects.location"),value:(0,Le.jsx)(Il,{name:i,showStatus:!1,hasClipboardButton:!0,clipboardButtonAlwaysVisible:!0,className:eP("location")})}]},rP=e=>{var t,n;let{data:r,prepareData:i}=e;const o=Ca(),a=(0,Ta.mB)(o),s=(0,Ta.vF)({...a,schema:null===r||void 0===r||null===(t=r.PathDescription)||void 0===t||null===(n=t.ExternalTableDescription)||void 0===n?void 0:n.DataSourcePath}),l=wI(null===r||void 0===r?void 0:r.PathDescription),{error:c}=Do((e=>e.schema));return c?(0,Le.jsx)(zc,{error:c}):r?(0,Le.jsx)(Ss,{title:l,info:i(r,s)}):(0,Le.jsxs)("div",{className:"error",children:["No ",l," data"]})},iP=e=>{let{data:t}=e;return(0,Le.jsx)(rP,{data:t,prepareData:nP})},oP=e=>{let{data:t}=e;return(0,Le.jsx)(rP,{data:t,prepareData:tP})};function aP(e){let{state:t}=e;return t?"StandBy"in t?(0,Le.jsx)(ft,{theme:"info",children:"Standby"}):"Paused"in t?(0,Le.jsx)(ft,{theme:"info",children:"Paused"}):"Done"in t?(0,Le.jsx)(ft,{theme:"success",children:"Done"}):"Error"in t?(0,Le.jsx)(ft,{theme:"danger",children:"Error"}):(0,Le.jsx)(ft,{size:"s",children:"Unknown"}):null}const sP=JSON.parse('{"column.dstPath.name":"Dist","column.srcPath.name":"Source","everythingWithPrefix":"Everything with prefix:","noData":"No data.","title":"Replicated Paths"}'),lP=(0,We.wZ)("ydb-diagnostics-async-replication-paths",{en:sP}),cP=Me("ydb-async-replication-paths"),uP=[{name:lP("column.srcPath.name"),render:e=>{let{row:t}=e;return t.SrcPath},sortAccessor:e=>e.SrcPath},{name:lP("column.dstPath.name"),render:e=>{let{row:t}=e;return t.DstPath},sortAccessor:e=>e.DstPath}];function dP(e){let{config:t}=e;if(!t)return null;let n=lP("noData");var r,i;t.Everything&&(n=(0,Le.jsxs)("span",{children:[lP("everythingWithPrefix")," ",(0,Le.jsx)(Fi.x,{variant:"code-inline-2",children:null!==(r=null===(i=t.Everything)||void 0===i?void 0:i.DstPrefix)&&void 0!==r?r:"undefined"}),"."]}));return t.Specific&&(n=(0,Le.jsx)(qc,{data:t.Specific.Targets,settings:Lo.E6,columns:uP})),(0,Le.jsxs)("div",{className:cP(),children:[(0,Le.jsx)("div",{className:cP("title"),children:lP("title")}),n]})}function hP(e){let{connection:t}=e;return t?t.StaticCredentials?(0,Le.jsx)(ft,{value:t.StaticCredentials.User,theme:"normal",children:"user"}):"OAuthToken"in t?"OAuth":"unknown":null}const pP=JSON.parse('{"credentials.label":"Credentials","noData":"No data for entity:","srcConnection.database.label":"Source Database Path","srcConnection.endpoint.label":"Source Cluster Endpoint","state.label":"State"}'),fP=(0,We.wZ)("ydb-diagnostics-async-replication-info",{en:pP});function mP(e){var t,n,r,i,o,a,s,l,c,u,d,h,p,f,m;let{data:g}=e;const v=wI(null===g||void 0===g?void 0:g.PathDescription),{error:y}=Do((e=>e.schema));return y?(0,Le.jsx)("div",{className:"error",children:y.statusText}):g?(0,Le.jsxs)(Ai.k,{direction:"column",gap:"4",children:[(0,Le.jsx)(Ss,{title:v,info:[{label:fP("state.label"),value:(0,Le.jsx)(aP,{state:null===(t=g.PathDescription)||void 0===t||null===(n=t.ReplicationDescription)||void 0===n?void 0:n.State})},{label:fP("srcConnection.endpoint.label"),value:(0,Le.jsx)(Fi.x,{variant:"code-inline-2",children:null===(r=g.PathDescription)||void 0===r||null===(i=r.ReplicationDescription)||void 0===i||null===(o=i.Config)||void 0===o||null===(a=o.SrcConnectionParams)||void 0===a?void 0:a.Endpoint})},{label:fP("srcConnection.database.label"),value:(0,Le.jsx)(Fi.x,{variant:"code-inline-2",children:null===(s=g.PathDescription)||void 0===s||null===(l=s.ReplicationDescription)||void 0===l||null===(c=l.Config)||void 0===c||null===(u=c.SrcConnectionParams)||void 0===u?void 0:u.Database})},{label:fP("credentials.label"),value:(0,Le.jsx)(hP,{connection:null===(d=g.PathDescription)||void 0===d||null===(h=d.ReplicationDescription)||void 0===h||null===(p=h.Config)||void 0===p?void 0:p.SrcConnectionParams})}]}),(0,Le.jsx)(dP,{config:null===(f=g.PathDescription)||void 0===f||null===(m=f.ReplicationDescription)||void 0===m?void 0:m.Config})]}):(0,Le.jsxs)("div",{className:"error",children:[fP("noData")," ",v]})}const gP=JSON.parse('{"writeLagPopover":"Write lag, maximum among all topic partitions","writeIdleTimePopover":"Write idle time, maximum among all topic partitions"}'),vP=JSON.parse('{"writeLagPopover":"\u041b\u0430\u0433 \u0437\u0430\u043f\u0438\u0441\u0438, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0442\u043e\u043f\u0438\u043a\u0430","writeIdleTimePopover":"\u0412\u0440\u0435\u043c\u044f \u0431\u0435\u0437 \u0437\u0430\u043f\u0438\u0441\u0438, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0442\u043e\u043f\u0438\u043a\u0430"}'),yP=(0,We.wZ)("ydb-diagnostics-overview-topic-stats",{ru:vP,en:gP}),bP=Me("ydb-overview-topic-stats"),xP=e=>[{label:"Store size",value:(0,ks.td)(e.storeSize)},{label:(0,Le.jsx)(Po,{text:"Write idle time",popoverContent:(0,Le.jsx)(Jj,{text:yP("writeIdleTimePopover"),type:"write"})}),value:(0,Ej.tt)(e.partitionsIdleTime)},{label:(0,Le.jsx)(Po,{text:"Write lag",popoverContent:(0,Le.jsx)(Jj,{text:yP("writeLagPopover"),type:"write"})}),value:(0,Ej.tt)(e.partitionsWriteLag)},{label:"Average write speed",value:(0,Le.jsx)(Lj,{data:e.writeSpeed,withValue:!1})}],wP=e=>{const t=e.writeSpeed;return[{label:"per minute",value:(0,ks.t$)(t.perMinute)},{label:"per hour",value:(0,ks.t$)(t.perHour)},{label:"per day",value:(0,ks.t$)(t.perDay)}]},SP=()=>{const{autorefresh:e,currentSchemaPath:t}=Do((e=>e.schema)),{currentData:n,isFetching:r,error:i}=Tj.useGetTopicQuery({path:t},{pollingInterval:e}),o=r&&void 0===n,a=Do((e=>Ij(e,t)));return o?(0,Le.jsx)("div",{className:bP(),children:(0,Le.jsx)(N_,{size:"s"})}):i||!a?(0,Le.jsxs)("div",{className:bP(),children:[(0,Le.jsx)("div",{className:bP("title"),children:"Stats"}),(0,Le.jsx)(zc,{error:i})]}):(0,Le.jsxs)("div",{className:bP(),children:[(0,Le.jsx)("div",{className:bP("title"),children:"Stats"}),(0,Le.jsx)("div",{className:bP("info"),children:(0,Le.jsx)(Ss,{info:xP(a),multilineLabels:!0})}),(0,Le.jsx)("div",{className:bP("bytes-written"),children:(0,Le.jsx)(Ss,{info:wP(a)})})]})},_P=e=>{var t;const n=null===e||void 0===e||null===(t=e.PathDescription)||void 0===t?void 0:t.PersQueueGroup;if(!n)return[];const{Partitions:r=[],PQTabletConfig:i={PartitionConfig:{LifetimeSeconds:0}}}=n,{Codecs:o,MeteringMode:a}=i,{WriteSpeedInBytesPerSecond:s,StorageLimitBytes:l}=i.PartitionConfig;return[...Ts(jI,{Partitions:r,PQTabletConfig:i}),...Ts(PI,{StorageLimitBytes:l,WriteSpeedInBytesPerSecond:s}),...Ts(II,{Codecs:o,MeteringMode:a})]},CP=(e,t)=>{var n,r,i;if(!e&&!t)return[];const o=null===e||void 0===e||null===(n=e.PathDescription)||void 0===n?void 0:n.CdcStreamDescription,{Mode:a,Format:s}=o||{};return[EI("CreateStep",null===e||void 0===e||null===(r=e.PathDescription)||void 0===r||null===(i=r.Self)||void 0===i?void 0:i.CreateStep),...Ts(DI,{Mode:a,Format:s}),..._P(t)]},EP=e=>{let{data:t,topic:n}=e;const r=wI(null===t||void 0===t?void 0:t.PathDescription),{error:i}=Do((e=>e.schema));return i?(0,Le.jsx)("div",{className:"error",children:i.statusText}):t&&n?(0,Le.jsxs)("div",{children:[(0,Le.jsx)(Ss,{title:r,info:CP(t,n)}),(0,Le.jsx)(SP,{})]}):(0,Le.jsxs)("div",{className:"error",children:["No ",r," data"]})},TP=JSON.parse('{"tableStats":"Table Stats","tabletMetrics":"Tablet Metrics","partitionConfig":"Partition Config"}'),OP=JSON.parse('{"tableStats":"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","tabletMetrics":"\u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u0442\u0430\u0431\u043b\u0435\u0442\u043a\u0438","partitionConfig":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438"}'),NP=(0,We.wZ)("ydb-diagnostics-overview-table-info",{ru:OP,en:TP}),kP=e=>e.SchemaPresetName&&void 0!==e.SchemaPresetId,jP=e=>{var t,n,r;const i=null===e||void 0===e?void 0:e.reduce(((e,t)=>e+((0,Ou.kE)(t.Bytes)?Number(t.Bytes):0)),0),o=null===e||void 0===e?void 0:e.reduce(((e,t)=>e+((0,Ou.kE)(t.Rows)?Number(t.Rows):0)),0),a=null===e||void 0===e?void 0:e.reduce(((e,t)=>(e.add(t.TabletId),e)),new Set);return[{label:"PartCount",value:null!==(t=null===a||void 0===a?void 0:a.size)&&void 0!==t?t:0},{label:"RowCount",value:null!==(n=(0,ks.uf)(o))&&void 0!==n?n:0},{label:"DataSize",value:null!==(r=(0,ks.td)(i))&&void 0!==r?r:0}]},IP=e=>{if(e.Enabled&&e.Enabled.ColumnName&&void 0!==e.Enabled.ExpireAfterSeconds){return{label:"TTL for rows",value:"column: '".concat(e.Enabled.ColumnName,"', expire after: ").concat((0,Ej.tt)(1e3*e.Enabled.ExpireAfterSeconds,1))}}};const PP=(e,t,n)=>{if(!e)return{};const{PathDescription:r={}}=e,{TableStats:i={},TabletMetrics:o={},Table:{PartitionConfig:a={},TTLSettings:s}={},ColumnTableDescription:l={}}=r,{PartCount:c,RowCount:u,DataSize:d,IndexSize:h,LastAccessTime:p,LastUpdateTime:f,ImmediateTxCompleted:m,PlannedTxCompleted:g,TxRejectedByOverload:v,TxRejectedBySpace:y,TxCompleteLagMsec:b,InFlightTxCount:x,RowUpdates:w,RowDeletes:S,RowReads:_,RangeReads:C,RangeReadRows:E}=i,{FollowerGroups:T,FollowerCount:O,CrossDataCenterFollowerCount:N}=a;let k,j=[];switch(t){case hj.gb.EPathTypeTable:j=((e,t)=>{var n;const{PartitioningPolicy:r={},FollowerGroups:i,EnableFilterByKey:o}=e,a=[],s=r.SizeToSplit&&Number(r.SizeToSplit)>0?"Enabled, split size: ".concat((0,ks.td)(r.SizeToSplit)):"Disabled",l=null!==(n=r.SplitByLoadSettings)&&void 0!==n&&n.Enabled?"Enabled":"Disabled";if(a.push({label:"Partitioning by size",value:s},{label:"Partitioning by load",value:l},{label:"Min number of partitions",value:(0,ks.uf)(r.MinPartitionsCount||0)}),r.MaxPartitionsCount&&a.push({label:"Max number of partitions",value:(0,ks.uf)(r.MaxPartitionsCount)}),i&&i.length){const{RequireAllDataCenters:e,FollowerCountPerDataCenter:t,FollowerCount:n}=i[0];let r;r=e&&t?"PER_AZ: ".concat(n):"ANY_AZ: ".concat(n),a.push({label:"Read replicas (followers)",value:r})}if(t){const e=IP(t);e&&a.push(e)}return a.push({label:"Bloom filter",value:o?"Enabled":"Disabled"}),a})(a,s);break;case hj.gb.EPathTypeColumnTable:j=function(e){const t=[];if(t.push({label:"Standalone",value:String(!kP(e))}),e.Sharding&&e.Sharding.HashSharding&&t.push({label:"Sharding",value:"hash"}),e.TtlSettings){const n=IP(null===e||void 0===e?void 0:e.TtlSettings);n&&t.push(n)}return t}(l)}k=t===hj.gb.EPathTypeColumnTable&&kP(l)?[jP(n)]:[Ts(LI,{PartCount:c,RowCount:u,DataSize:d,IndexSize:h}),Ts(LI,{LastAccessTime:p,LastUpdateTime:f}),Ts(LI,{ImmediateTxCompleted:m,PlannedTxCompleted:g,TxRejectedByOverload:v,TxRejectedBySpace:y,TxCompleteLagMsec:b,InFlightTxCount:x}),Ts(LI,{RowUpdates:w,RowDeletes:S,RowReads:_,RangeReads:C,RangeReadRows:E})];const I=Ts(AI,o);let P=[];return Array.isArray(T)&&T.length>0?P=Ts(RI,T[0]):void 0!==O?P.push(MI("FollowerCount",O)):void 0!==N&&P.push(MI("CrossDataCenterFollowerCount",N)),{generalInfo:j,tableStatsInfo:k,tabletMetricsInfo:I,partitionConfigInfo:P}},DP=Me("ydb-diagnostics-table-info"),AP=e=>{let{data:t,type:n,olapStats:r}=e;const i=wI(null===t||void 0===t?void 0:t.PathDescription),{generalInfo:o=[],tableStatsInfo:s=[],tabletMetricsInfo:l=[],partitionConfigInfo:c=[]}=a.useMemo((()=>PP(t,n,r)),[t,n,r]);return(0,Le.jsxs)("div",{className:DP(),children:[(0,Le.jsx)(Ss,{info:o,title:i,className:DP("info-block"),renderEmptyState:()=>(0,Le.jsx)("div",{className:DP("title"),children:i})}),(0,Le.jsxs)("div",{className:DP("row"),children:[(0,Le.jsx)("div",{className:DP("col"),children:s.map(((e,t)=>(0,Le.jsx)(Ss,{info:e,title:0===t?NP("tableStats"):void 0,className:DP("info-block"),renderEmptyState:()=>null},t)))}),l.length>0||c.length>0?(0,Le.jsxs)("div",{className:DP("col"),children:[(0,Le.jsx)(Ss,{info:l,title:NP("tabletMetrics"),className:DP("info-block"),renderEmptyState:()=>null}),(0,Le.jsx)(Ss,{info:c,title:NP("partitionConfig"),className:DP("info-block"),renderEmptyState:()=>null})]}):null]})]})},RP=e=>{let{data:t}=e;const n=wI(null===t||void 0===t?void 0:t.PathDescription),{error:r}=Do((e=>e.schema));return r?(0,Le.jsx)("div",{className:"error",children:r.statusText}):t?(0,Le.jsxs)("div",{children:[(0,Le.jsx)(Ss,{title:n,info:_P(t)}),(0,Le.jsx)(SP,{})]}):(0,Le.jsxs)("div",{className:"error",children:["No ",n," data"]})};const MP=function(e){let{type:t,tenantName:n}=e;const{autorefresh:r,currentSchemaPath:i}=Do((e=>e.schema)),o=i||n,a=(0,pj.vp)(t)&&(0,pj.Jp)(t)?{path:o}:zl.CN,{currentData:s,isFetching:l}=VI.useGetOlapStatsQuery(a,{pollingInterval:r}),c=l&&void 0===s,{result:u}=s||{result:void 0},d=(0,pj.St)(t),h=Do((e=>(0,Vk.eU)(e,i,t)),ae.wU);let p=zl.CN;o&&(d?h&&(p=[o,...h]):p=[o]);const{currentData:f,isFetching:m,error:g}=GI.useGetOverviewQuery(p,{pollingInterval:r}),v=m&&void 0===f,{data:y,additionalData:b}=f||{};return v||c||d&&!h?(0,Le.jsx)(N_,{size:"m"}):g?(0,Le.jsx)(zc,{error:g}):(0,Le.jsx)("div",{children:(()=>{var e;const n=null!==y&&void 0!==y?y:void 0,r={[hj.gb.EPathTypeInvalid]:void 0,[hj.gb.EPathTypeDir]:void 0,[hj.gb.EPathTypeTable]:void 0,[hj.gb.EPathTypeSubDomain]:void 0,[hj.gb.EPathTypeTableIndex]:()=>(0,Le.jsx)(zI,{data:n}),[hj.gb.EPathTypeExtSubDomain]:void 0,[hj.gb.EPathTypeColumnStore]:void 0,[hj.gb.EPathTypeColumnTable]:void 0,[hj.gb.EPathTypeCdcStream]:()=>{var e;return(0,Le.jsx)(EP,{data:n,topic:null!==(e=null===b||void 0===b?void 0:b[0])&&void 0!==e?e:void 0})},[hj.gb.EPathTypePersQueueGroup]:()=>(0,Le.jsx)(RP,{data:n}),[hj.gb.EPathTypeExternalTable]:()=>(0,Le.jsx)(iP,{data:n}),[hj.gb.EPathTypeExternalDataSource]:()=>(0,Le.jsx)($I,{data:n}),[hj.gb.EPathTypeView]:void 0,[hj.gb.EPathTypeReplication]:()=>(0,Le.jsx)(mP,{data:n})};return t&&(null===(e=r[t])||void 0===e?void 0:e.call(r))||(0,Le.jsx)(AP,{data:n,type:t,olapStats:u})})()})};var LP=n(30696),FP=n(8978),zP=n(66307),BP=n(30746);const UP=()=>"ck.".concat(((e,t)=>{let n="";for(let r=e;r>0;--r)n+=t[Math.floor(Math.random()*t.length)];return n})(10,"0123456789abcdefghijklmnopqrstuvwxyz")),HP=a.memo,VP=(0,Re.withNaming)({e:"__",m:"_"}),GP=(0,Re.withNaming)({n:"chartkit-",e:"__",m:"_"});class WP extends a.Component{constructor(){super(...arguments),this.state={error:void 0},this.resetError=()=>{this.state.error&&this.setState({error:void 0})}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(){var e,t;const{error:n}=this.state;n&&(null===(t=(e=this.props).onError)||void 0===t||t.call(e,{error:n}))}componentDidUpdate(e){if(e.data!==this.props.data){const{error:e}=this.state;e&&"code"in e&&e.code===BP.Wn.NO_DATA&&this.resetError()}}render(){const{error:e}=this.state;if(e){const t=function(e){const t="code"in e&&e.code;return(e.message||t||(0,zP.a)("error","label_unknown-error")).toString()}(e);return this.props.renderError?this.props.renderError({error:e,message:t,resetError:this.resetError}):a.createElement("div",null,t)}return this.props.children}}const qP=GP("loader"),ZP=e=>{var{renderPluginLoader:t}=e,n=(0,nt._T)(e,["renderPluginLoader"]);const r=null===t||void 0===t?void 0:t();return"undefined"!==typeof r?r:a.createElement("div",{className:qP()},a.createElement(Di,Object.assign({},n)))},YP=VP("chartkit"),KP=e=>{const t=a.useRef(),{instanceRef:n,id:r,type:i,isMobile:o,renderPluginLoader:s}=e,l=(0,nt._T)(e,["instanceRef","id","type","isMobile","renderPluginLoader"]),c=a.useMemo((()=>UP()),[]),u=r||c,d=FP.X.get("lang"),h=FP.X.get("plugins").find((e=>e.type===i));if(!h)throw new BP.Dx({code:BP.Wn.UNKNOWN_PLUGIN,message:(0,zP.a)("error","label_unknown-plugin",{type:i})});const p=h.renderer;return a.useImperativeHandle(n,(()=>({reflow(e){var n;(null===(n=t.current)||void 0===n?void 0:n.reflow)&&t.current.reflow(e)}})),[]),a.createElement(a.Suspense,{fallback:a.createElement(ZP,{renderPluginLoader:s})},a.createElement("div",{className:YP({mobile:o},"chartkit-theme_common")},a.createElement(p,Object.assign({ref:t,id:u,lang:d},l))))},QP=HP(a.forwardRef((function(e,t){return a.createElement(WP,{onError:e.onError,data:e.data,renderError:e.renderError},a.createElement(KP,Object.assign({instanceRef:t},e)))}))),XP={type:"yagr",renderer:a.lazy((()=>Promise.all([n.e(7645),n.e(4983)]).then(n.bind(n,87645))))};var $P={grad:.9,turn:360,rad:360/(2*Math.PI)},JP=function(e){return"string"==typeof e?e.length>0:"number"==typeof e},eD=function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*e)/n+0},tD=function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),e>n?n:e>t?e:t},nD=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},rD=function(e){return{r:tD(e.r,0,255),g:tD(e.g,0,255),b:tD(e.b,0,255),a:tD(e.a)}},iD=function(e){return{r:eD(e.r),g:eD(e.g),b:eD(e.b),a:eD(e.a,3)}},oD=/^#([0-9a-f]{3,8})$/i,aD=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},sD=function(e){var t=e.r,n=e.g,r=e.b,i=e.a,o=Math.max(t,n,r),a=o-Math.min(t,n,r),s=a?o===t?(n-r)/a:o===n?2+(r-t)/a:4+(t-n)/a:0;return{h:60*(s<0?s+6:s),s:o?a/o*100:0,v:o/255*100,a:i}},lD=function(e){var t=e.h,n=e.s,r=e.v,i=e.a;t=t/360*6,n/=100,r/=100;var o=Math.floor(t),a=r*(1-n),s=r*(1-(t-o)*n),l=r*(1-(1-t+o)*n),c=o%6;return{r:255*[r,s,a,a,l,r][c],g:255*[l,r,r,s,a,a][c],b:255*[a,a,l,r,r,s][c],a:i}},cD=function(e){return{h:nD(e.h),s:tD(e.s,0,100),l:tD(e.l,0,100),a:tD(e.a)}},uD=function(e){return{h:eD(e.h),s:eD(e.s),l:eD(e.l),a:eD(e.a,3)}},dD=function(e){return lD((n=(t=e).s,{h:t.h,s:(n*=((r=t.l)<50?r:100-r)/100)>0?2*n/(r+n)*100:0,v:r+n,a:t.a}));var t,n,r},hD=function(e){return{h:(t=sD(e)).h,s:(i=(200-(n=t.s))*(r=t.v)/100)>0&&i<200?n*r/100/(i<=100?i:200-i)*100:0,l:i/2,a:t.a};var t,n,r,i},pD=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,fD=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,mD=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,gD=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,vD={string:[[function(e){var t=oD.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:4===e.length?eD(parseInt(e[3]+e[3],16)/255,2):1}:6===e.length||8===e.length?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:8===e.length?eD(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=mD.exec(e)||gD.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:rD({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=pD.exec(e)||fD.exec(e);if(!t)return null;var n,r,i=cD({h:(n=t[1],r=t[2],void 0===r&&(r="deg"),Number(n)*($P[r]||1)),s:Number(t[3]),l:Number(t[4]),a:void 0===t[5]?1:Number(t[5])/(t[6]?100:1)});return dD(i)},"hsl"]],object:[[function(e){var t=e.r,n=e.g,r=e.b,i=e.a,o=void 0===i?1:i;return JP(t)&&JP(n)&&JP(r)?rD({r:Number(t),g:Number(n),b:Number(r),a:Number(o)}):null},"rgb"],[function(e){var t=e.h,n=e.s,r=e.l,i=e.a,o=void 0===i?1:i;if(!JP(t)||!JP(n)||!JP(r))return null;var a=cD({h:Number(t),s:Number(n),l:Number(r),a:Number(o)});return dD(a)},"hsl"],[function(e){var t=e.h,n=e.s,r=e.v,i=e.a,o=void 0===i?1:i;if(!JP(t)||!JP(n)||!JP(r))return null;var a=function(e){return{h:nD(e.h),s:tD(e.s,0,100),v:tD(e.v,0,100),a:tD(e.a)}}({h:Number(t),s:Number(n),v:Number(r),a:Number(o)});return lD(a)},"hsv"]]},yD=function(e,t){for(var n=0;n<t.length;n++){var r=t[n][0](e);if(r)return[r,t[n][1]]}return[null,void 0]},bD=function(e){return"string"==typeof e?yD(e.trim(),vD.string):"object"==typeof e&&null!==e?yD(e,vD.object):[null,void 0]},xD=function(e,t){var n=hD(e);return{h:n.h,s:tD(n.s+100*t,0,100),l:n.l,a:n.a}},wD=function(e){return(299*e.r+587*e.g+114*e.b)/1e3/255},SD=function(e,t){var n=hD(e);return{h:n.h,s:n.s,l:tD(n.l+100*t,0,100),a:n.a}},_D=function(){function e(e){this.parsed=bD(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return e.prototype.isValid=function(){return null!==this.parsed},e.prototype.brightness=function(){return eD(wD(this.rgba),2)},e.prototype.isDark=function(){return wD(this.rgba)<.5},e.prototype.isLight=function(){return wD(this.rgba)>=.5},e.prototype.toHex=function(){return t=(e=iD(this.rgba)).r,n=e.g,r=e.b,o=(i=e.a)<1?aD(eD(255*i)):"","#"+aD(t)+aD(n)+aD(r)+o;var e,t,n,r,i,o},e.prototype.toRgb=function(){return iD(this.rgba)},e.prototype.toRgbString=function(){return t=(e=iD(this.rgba)).r,n=e.g,r=e.b,(i=e.a)<1?"rgba("+t+", "+n+", "+r+", "+i+")":"rgb("+t+", "+n+", "+r+")";var e,t,n,r,i},e.prototype.toHsl=function(){return uD(hD(this.rgba))},e.prototype.toHslString=function(){return t=(e=uD(hD(this.rgba))).h,n=e.s,r=e.l,(i=e.a)<1?"hsla("+t+", "+n+"%, "+r+"%, "+i+")":"hsl("+t+", "+n+"%, "+r+"%)";var e,t,n,r,i},e.prototype.toHsv=function(){return e=sD(this.rgba),{h:eD(e.h),s:eD(e.s),v:eD(e.v),a:eD(e.a,3)};var e},e.prototype.invert=function(){return CD({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},e.prototype.saturate=function(e){return void 0===e&&(e=.1),CD(xD(this.rgba,e))},e.prototype.desaturate=function(e){return void 0===e&&(e=.1),CD(xD(this.rgba,-e))},e.prototype.grayscale=function(){return CD(xD(this.rgba,-1))},e.prototype.lighten=function(e){return void 0===e&&(e=.1),CD(SD(this.rgba,e))},e.prototype.darken=function(e){return void 0===e&&(e=.1),CD(SD(this.rgba,-e))},e.prototype.rotate=function(e){return void 0===e&&(e=15),this.hue(this.hue()+e)},e.prototype.alpha=function(e){return"number"==typeof e?CD({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):eD(this.rgba.a,3);var t},e.prototype.hue=function(e){var t=hD(this.rgba);return"number"==typeof e?CD({h:e,s:t.s,l:t.l,a:t.a}):eD(t.h)},e.prototype.isEqual=function(e){return this.toHex()===CD(e).toHex()},e}(),CD=function(e){return e instanceof _D?e:new _D(e)};const ED=["#7EB26D","#EAB839","#6ED0E0","#EF843C","#E24D42","#1F78C1","#BA43A9","#705DA0","#508642","#CCA300"];const TD=e=>{switch(e){case"ms":return OD;case"size":return ND;case"percent":return kD;default:return}};function OD(e){return null===e?Lo.jX:(0,Ej.zm)((0,ks.W0)(jD(e),2))}function ND(e){return null===e?Lo.jX:(0,BC.td)({value:jD(e),precision:3})}function kD(e){return null===e?Lo.jX:Math.round(100*jD(e))+"%"}function jD(e){return(0,Ou.kE)(e)?Number(e):0}const ID={"30m":30*Lo.sU,"1h":Lo.RQ,"1d":Lo.ii,"1w":7*Lo.ii},PD=JSON.parse('{"not-supported":"Charts are not supported on current ydb version"}'),DD=(0,We.wZ)("ydb-metric-chart",{en:PD}),AD=Dl.h.injectEndpoints({endpoints:e=>({getChartData:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{const t=await async function(e){let{database:t,metrics:n,timeFrame:r,maxDataPoints:i}=e,{signal:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=n.map((e=>"target=".concat(e.target))).join("&"),s=Math.round(Date.now()/1e3),l=s-ID[r];return window.api.getChartData({target:a,from:l,until:s,maxDataPoints:i,database:t},{signal:o})}(e,{signal:n});if(Array.isArray(t)){const n=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;const n=e.map((e=>{let{datapoints:n,target:r}=e;const i=t.find((e=>e.target===r));if(!i)return;const o=n.map((e=>e[0]));return{...i,data:o}})).filter((e=>void 0!==e));return{timeline:e[0].datapoints.map((e=>1e3*e[1])),metrics:n}}(t,e.metrics);return{data:n}}return{error:new Error("string"===typeof t?DD("not-supported"):t.error)}}catch(r){return{error:r}}},providesTags:["All"],keepUnusedDataFor:0})}),overrideExisting:"throw"}),RD=Me("ydb-metric-chart");FP.X.set({plugins:[XP]});const MD=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{dataType:n,scaleRange:r}=t,i=TD(n),o=!e.metrics.length,a=e.metrics.map(((e,t)=>{const n=e.color||ED[t],r=function(e,t){const n=CD(e);if(!n.isValid())throw new Error("Invalid color is passed");return n.alpha(t).toRgbString()}(n,.1);return{id:e.target,name:e.title||e.target,data:e.data,formatter:i,lineColor:n,color:r,legendColorKey:"lineColor"}}));return{data:{timeline:e.timeline,graphs:a},libraryConfig:{chart:{size:{padding:o?[10,0,10,0]:void 0},series:{type:"area",spanGaps:!0,lineWidth:1.5},select:{zoom:!1}},scales:{y:{type:"linear",range:"nice",min:(null===r||void 0===r?void 0:r.min)||0,max:null===r||void 0===r?void 0:r.max}},axes:{y:{values:i?(e,t)=>t.map(i):void 0}},tooltip:{show:!0,tracking:"sticky"}}}},LD={timeline:[],metrics:[]},FD=e=>{let{database:t,title:n,metrics:r,timeFrame:i="1h",autorefresh:o,width:s=400,height:l=s/1.5,chartOptions:c,onChartDataStatusChange:u,isChartVisible:d}=e;const{currentData:h,error:p,isFetching:f,status:m}=AD.useGetChartDataQuery({database:t,metrics:r,timeFrame:i,maxDataPoints:s/2},{pollingInterval:o}),g=f&&!h;a.useEffect((()=>null===u||void 0===u?void 0:u("fulfilled"===m?"success":"loading")),[m,u]);const v=MD(h||LD,c);return(0,Le.jsxs)("div",{className:RD(null),style:{height:l,width:s},children:[(0,Le.jsx)("div",{className:RD("title"),children:n}),g?(0,Le.jsx)(N_,{}):d?(0,Le.jsxs)("div",{className:RD("chart"),children:[(0,Le.jsx)(QP,{type:"yagr",data:v}),p?(0,Le.jsx)(zc,{className:RD("error"),error:p}):null]}):null]})},zD=Me("ydb-timeframe-selector"),BD=e=>{let{value:t,onChange:n,className:r}=e;return(0,Le.jsx)("div",{className:zD(null,r),children:Object.keys(ID).map((e=>(0,Le.jsx)(Ie.z,{view:"flat",selected:t===e,onClick:()=>n(e),children:e},e)))})},UD=Me("ydb-tenant-dashboard"),HD=e=>{let{database:t,charts:n}=e;const[r,i]=a.useState(!0),[o="1h",s]=((e,t,n)=>{const r=(0,a.useMemo)((()=>({[e]:null!=t?t:"inherit"})),[e,t]),[i,o]=gc(r,n);return[i[e],(0,a.useCallback)(((t,n)=>o("function"===typeof t?n=>{const r=t(n[e]);return{[e]:r}}:{[e]:t},n)),[e,o])]})("timeframe",Gl),{autorefresh:l}=Do((e=>e.schema)),c=r?0:l,u=e=>{"success"===e&&i(!1)},d=1===n.length?872:428;return(0,Le.jsxs)("div",{className:UD(null),style:{display:r?"none":void 0},children:[(0,Le.jsx)("div",{className:UD("controls"),children:(0,Le.jsx)(BD,{value:o,onChange:s})}),(0,Le.jsx)("div",{className:UD("charts"),children:n.map((e=>{const n=e.metrics.map((e=>{let{target:t}=e;return t})).join("&");return(0,Le.jsx)(FD,{database:t,title:e.title,metrics:e.metrics,timeFrame:o,chartOptions:e.options,autorefresh:c,width:d,height:285.3333333333333,onChartDataStatusChange:u,isChartVisible:!r},n)}))})]})},VD=JSON.parse('{"no-data":"No data","no-pools-data":"No pools data","top-nodes.empty-data":"No such nodes","top-groups.empty-data":"No such groups","top":"Top","nodes":"nodes","shards":"shards","groups":"groups","queries":"queries","tables":"tables","by-pools-usage":"by pools usage","by-cpu-time":"by cpu time","by-cpu-usage":"by cpu usage","by-load":"by load","by-memory":"by memory","by-usage":"by usage","by-size":"by size","cards.cpu-label":"CPU","cards.storage-label":"Storage","cards.memory-label":"Memory","charts.queries-per-second":"Queries per second","charts.transaction-latency":"Transactions latencies {{percentile}}","charts.cpu-usage":"CPU usage by pool","charts.storage-usage":"Tablet storage usage","charts.memory-usage":"Memory usage","storage.tablet-storage-title":"Tablet storage","storage.tablet-storage-description":"Size of user data and indexes stored in schema objects (tables, topics, etc.)","storage.db-storage-title":"Database storage","storage.db-storage-description":"Size of data stored in distributed storage with all overheads for redundancy"}'),GD=(0,We.wZ)("ydb-diagnostics-tenant-overview",{en:VD}),WD=[{title:GD("charts.queries-per-second"),metrics:[{target:"queries.requests",title:GD("charts.queries-per-second")}]},{title:GD("charts.transaction-latency",{percentile:""}),metrics:[{target:"queries.latencies.p50",title:GD("charts.transaction-latency",{percentile:"p50"})},{target:"queries.latencies.p75",title:GD("charts.transaction-latency",{percentile:"p75"})},{target:"queries.latencies.p90",title:GD("charts.transaction-latency",{percentile:"p90"})},{target:"queries.latencies.p99",title:GD("charts.transaction-latency",{percentile:"p99"})}],options:{dataType:"ms"}}],qD=e=>{let{database:t}=e;return(0,Le.jsx)(HD,{database:t,charts:WD})};var ZD=n(87863),YD=n.n(ZD);let KD,QD;!function(e){e.UNSPECIFIED="UNSPECIFIED",e.GOOD="GOOD",e.DEGRADED="DEGRADED",e.MAINTENANCE_REQUIRED="MAINTENANCE_REQUIRED",e.EMERGENCY="EMERGENCY"}(KD||(KD={})),function(e){e.UNSPECIFIED="UNSPECIFIED",e.GREY="GREY",e.GREEN="GREEN",e.BLUE="BLUE",e.YELLOW="YELLOW",e.ORANGE="ORANGE",e.RED="RED"}(QD||(QD={}));const XD={[QD.UNSPECIFIED]:al.K.Grey,[QD.GREY]:al.K.Grey,[QD.GREEN]:al.K.Green,[QD.BLUE]:al.K.Blue,[QD.YELLOW]:al.K.Yellow,[QD.ORANGE]:al.K.Orange,[QD.RED]:al.K.Red},$D=Me("issue-tree-item"),JD=e=>{let{status:t,message:n,type:r,onClick:i}=e;return(0,Le.jsxs)("div",{className:$D(),onClick:i,children:[(0,Le.jsx)("div",{className:$D("field",{status:!0}),children:(0,Le.jsx)(Il,{mode:"icons",status:t,name:r})}),(0,Le.jsx)("div",{className:$D("field",{message:!0}),children:n})]})},eA=Me("issue-tree"),tA=e=>{let{issueTree:t}=e;const[n,r]=a.useState({}),i=a.useCallback((e=>e?(0,Le.jsx)("div",{className:eA("info-panel"),children:(0,Le.jsx)(bs(),{data:e,search:!1,isExpanded:()=>!0,className:eA("inspector")})}):null),[]),o=a.useCallback((e=>e.map((e=>{const{id:t}=e,{status:a,message:s,type:l,reasonsItems:c,level:u,...d}=e,h="undefined"===typeof n[t]||n[t],p=()=>{r((e=>({...e,[t]:!h})))};return(0,Le.jsxs)(aC,{name:(0,Le.jsx)(JD,{status:XD[a],message:s,type:l}),collapsed:h,hasArrow:!0,onClick:p,onArrowClick:p,level:u-1,children:[i(YD()(d,["reason"])),o(c||[])]},t)}))),[n,i]);return(0,Le.jsx)("div",{className:eA(),children:(0,Le.jsx)("div",{className:eA("block"),children:o([t])})})},nA=JSON.parse('{"title.healthcheck":"Healthcheck","label.update":"Update","label.show-details":"Show details","label.issues":"Issues:","status_message.ok":"No issues","no-data":"no healthcheck data"}'),rA=JSON.parse('{"title.healthcheck":"Healthcheck","label.update":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c","label.show-details":"\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438","label.issues":"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:","status_message.ok":"\u041d\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c","no-data":"\u043d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 healthcheck"}'),iA=(0,We.wZ)("ydb-diagnostics-healthcheck",{ru:rA,en:nA}),oA=Me("healthcheck");function aA(e){const{issueTrees:t,loading:n,error:r}=e;return(0,Le.jsx)("div",{className:oA("details"),children:(0,Le.jsx)("div",{className:oA("details-content-wrapper"),children:r?(0,Le.jsx)(zc,{error:r,defaultMessage:iA("no-data")}):n?(0,Le.jsx)(N_,{size:"m"}):t&&t.length?(0,Le.jsx)(a.Fragment,{children:t.map((e=>(0,Le.jsx)(tA,{issueTree:e},e.id)))}):iA("status_message.ok")})})}var sA=n(35240);const lA=Me("ydb-diagnostic-card");function cA(e){let{children:t,className:n,active:r}=e;return(0,Le.jsx)("div",{className:lA({active:r},n),children:t})}const uA=Me("healthcheck");function dA(e){const{selfCheckResult:t,issuesStatistics:n,loading:r,onUpdate:i,error:o,active:s}=e;return(0,Le.jsxs)(cA,{className:uA("preview"),active:s,children:[(()=>{const e=t.toLowerCase();return r?null:(0,Le.jsxs)("div",{className:uA("preview-header"),children:[(0,Le.jsxs)("div",{className:uA("preview-title-wrapper"),children:[(0,Le.jsx)("div",{className:uA("preview-title"),children:iA("title.healthcheck")}),(0,Le.jsx)(Ie.z,{size:"s",onClick:e=>{e.preventDefault(),i()},loading:r,view:"flat-secondary",children:(0,Le.jsx)(we.J,{data:IO,size:20})})]}),(0,Le.jsx)("div",{className:uA("self-check-status-indicator",{[e]:!0}),children:t})]})})(),o?(0,Le.jsx)(zc,{error:o,defaultMessage:iA("no-data")}):r?(0,Le.jsx)(N_,{size:"m"}):(0,Le.jsx)("div",{className:uA("preview-content"),children:n&&n.length?(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("div",{children:iA("label.issues")}),(0,Le.jsx)("div",{className:uA("issues-statistics"),children:n.map((e=>{let[t,n]=e;return(0,Le.jsx)(Il,{mode:"icons",status:XD[t],label:n.toString(),size:"l"},t)}))})]}):iA("status_message.ok")})]})}const hA=Me("ydb-metrics-card"),pA=e=>{let t;return"Warning"===e&&(t=al.K.Yellow),"Danger"===e&&(t=al.K.Red),t?(0,Le.jsx)(kl,{status:t,mode:"icons",size:"l"}):null};function fA(e){let{active:t,label:n,status:r,metrics:i}=e;return(0,Le.jsxs)(cA,{className:hA({active:t}),active:t,children:[(0,Le.jsxs)("div",{className:hA("header"),children:[n&&(0,Le.jsx)("div",{className:hA("label"),children:n}),pA(r)]}),(0,Le.jsx)("div",{className:hA("content"),children:i.map(((e,t)=>{let{title:n,...r}=e;return(0,Le.jsxs)("div",{className:hA("metric"),children:[(0,Le.jsx)("div",{className:hA("metric-title"),children:n}),(0,Le.jsx)(Iu,{size:"xs",colorizeProgress:!0,...r})]},t)}))})]})}const mA=Me("metrics-cards");function gA(e){let{poolsCpuStats:t,memoryStats:n,blobStorageStats:r,tabletStorageStats:i,issuesStatistics:o,selfCheckResult:a,fetchHealthcheck:s,healthcheckLoading:l,healthcheckError:c}=e;const u=Ca(),{metricsTab:d}=Do((e=>e.tenant)),h=(0,Ta.mB)(u),p=e=>e===d?"":e,f={[us.Xk.cpu]:fs({...h,[ds.metricsTab]:p(us.Xk.cpu)}),[us.Xk.storage]:fs({...h,[ds.metricsTab]:p(us.Xk.storage)}),[us.Xk.memory]:fs({...h,[ds.metricsTab]:p(us.Xk.memory)}),[us.Xk.healthcheck]:fs({...h,[ds.metricsTab]:p(us.Xk.healthcheck)})};return(0,Le.jsxs)("div",{className:mA(),children:[(0,Le.jsx)(bl,{to:f.cpu,className:mA("tab"),children:(0,Le.jsx)(vA,{poolsCpuStats:t,active:d===us.Xk.cpu})}),(0,Le.jsx)(bl,{to:f.storage,className:mA("tab"),children:(0,Le.jsx)(yA,{blobStorageStats:r,tabletStorageStats:i,active:d===us.Xk.storage})}),(0,Le.jsx)(bl,{to:f.memory,className:mA("tab"),children:(0,Le.jsx)(bA,{memoryStats:n,active:d===us.Xk.memory})}),(0,Le.jsx)(bl,{to:f.healthcheck,className:mA("tab"),children:(0,Le.jsx)(dA,{selfCheckResult:a,issuesStatistics:o,onUpdate:s,loading:l,error:c,active:d===us.Xk.healthcheck})})]})}function vA(e){let{poolsCpuStats:t=[],active:n}=e,r=sA.L.Unspecified;const i=t.filter((e=>!("Batch"===e.name||"IO"===e.name))).map((e=>{const{name:t,usage:n,limit:i,used:o}=e,a=(0,LP.Vn)(n);return sA.l[a]>sA.l[r]&&(r=a),{title:t,value:o,capacity:i,warningThreshold:LP.hJ,dangerThreshold:LP.Gz}}));return(0,Le.jsx)(fA,{label:GD("cards.cpu-label"),active:n,metrics:i,status:r})}function yA(e){let{blobStorageStats:t=[],tabletStorageStats:n,active:r}=e,i=sA.L.Unspecified;const o=(n||t).map((e=>{const{name:t,used:n,limit:r,usage:o}=e,a=(0,LP._W)(o);return sA.l[a]>sA.l[i]&&(i=a),{title:t,value:n,capacity:r,warningThreshold:LP._g,dangerThreshold:LP.nD,formatValues:ks.QO}}));return(0,Le.jsx)(fA,{label:GD("cards.storage-label"),active:r,metrics:o,status:i})}function bA(e){let{active:t,memoryStats:n=[]}=e,r=sA.L.Unspecified;const i=n.map((e=>{const{name:t,used:n,limit:i,usage:o}=e,a=(0,LP.Lv)(o);return sA.l[a]>sA.l[r]&&(r=a),{title:t,value:n,capacity:i,warningThreshold:LP.B8,dangerThreshold:LP.nr,formatValues:ks.QO}}));return(0,Le.jsx)(fA,{label:GD("cards.memory-label"),active:t,metrics:i,status:r})}const xA=Dl.h.injectEndpoints({endpoints:e=>({getTopNodes:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{const t=await window.api.getNodes({type:"any",sortOrder:-1,limit:Lo.fl,...e},{signal:n});return{data:iu(t).Nodes}}catch(r){return{error:r}}},providesTags:["All"]})}),overrideExisting:"throw"}),wA=Me("tenant-overview");function SA(e){let{title:t,error:n,loading:r,tableClassNameModifiers:i={},...o}=e;return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("div",{className:wA("title"),children:t}),(0,Le.jsx)("div",{className:wA("table",i),children:n?(0,Le.jsx)(zc,{error:n}):r?(0,Le.jsx)(Qc,{rows:Lo.fl}):(0,Le.jsx)(qc,{settings:Lo.E6,...o})})]})}const _A=e=>{let{prefix:t=GD("top"),entity:n,postfix:r,link:i}=e;return i?(0,Le.jsxs)(a.Fragment,{children:[t," ",(0,Le.jsx)(_l,{to:i,children:n})," ",r]}):"".concat(t," ").concat(n," ").concat(r)};function CA(e){let{path:t,additionalNodesProps:n}=e;const r=Oa(),{autorefresh:i}=Do((e=>e.schema)),o=(a=null===n||void 0===n?void 0:n.getNodeRef,[dd,rd,od(a)]);var a;const{currentData:s,isFetching:l,error:c}=xA.useGetTopNodesQuery({tenant:t,sortValue:"CPU"},{pollingInterval:i}),u=l&&void 0===s,d=s,h=_A({entity:GD("nodes"),postfix:GD("by-pools-usage"),link:fs({...r,[ds.diagnosticsTab]:us.qQ.nodes})});return(0,Le.jsx)(SA,{columnsWidthLSKey:Hu,data:d||[],columns:o,title:h,loading:u,error:c,emptyDataMessage:GD("top-nodes.empty-data")})}function EA(e){let{path:t,additionalNodesProps:n}=e;const r=Oa(),{autorefresh:i}=Do((e=>e.schema)),o=(a=null===n||void 0===n?void 0:n.getNodeRef,[fd,rd,od(a),ld]);var a;const{currentData:s,isFetching:l,error:c}=xA.useGetTopNodesQuery({tenant:t,sortValue:"LoadAverage"},{pollingInterval:i}),u=l&&void 0===s,d=s,h=_A({entity:GD("nodes"),postfix:GD("by-load"),link:fs({...r,[ds.diagnosticsTab]:us.qQ.nodes})});return(0,Le.jsx)(SA,{columnsWidthLSKey:Hu,data:d||[],columns:o,title:h,loading:u,error:c,emptyDataMessage:GD("top-nodes.empty-data")})}var TA=n(83786);const OA=Dl.h.injectEndpoints({endpoints:e=>({getOverviewTopQueries:e.query({queryFn:async(e,t)=>{let{database:n}=e,{signal:r}=t;try{const e=await window.api.sendQuery({schema:"modern",query:(i=n,"\nSELECT\n CPUTime as CPUTimeUs,\n QueryText,\nFROM `".concat(i,"/.sys/top_queries_by_cpu_time_one_hour`\nORDER BY CPUTimeUs DESC\nLIMIT ").concat(Lo.fl,"\n")),database:n,action:"execute-scan"},{signal:r});return(0,BI.gW)(e)?{error:e}:{data:(0,BI.gY)(e)}}catch(o){return{error:o||new Error("Unauthorized")}}var i},providesTags:["All"]})}),overrideExisting:"throw"}),NA=Me("kv-truncated-query"),kA=e=>{let{value:t="",maxQueryHeight:n=6}=e;const r=t.split("\n");if(r.length>n){const e=r.slice(0,n).join("\n"),t="\n...\nThe request was truncated. Click on the line to show the full query on the query tab";return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("span",{className:NA(),children:e}),(0,Le.jsx)("span",{className:NA("message",{color:"secondary"}),children:t})]})}return(0,Le.jsx)(a.Fragment,{children:t})},jA=e=>{let{value:t=""}=e;return(0,Le.jsx)(hu,{contentClassName:NA("popover-content"),content:t,children:t})};var IA=n(47694),PA=n.n(IA);const DA=6,AA={...Lo.LE,dynamicRenderType:"variable"},RA=Me("kv-top-queries"),MA="topQueriesColumnsWidth",LA="QueryText",FA="EndTime",zA="ReadRows",BA="ReadBytes",UA="UserSID",HA="OneLineQueryText",VA="QueryHash",GA="Duration",WA={name:"CPUTimeUs",sortAccessor:e=>Number(e.CPUTimeUs),width:120,align:Hc.ZP.RIGHT,sortable:!1},qA={name:LA,sortAccessor:e=>Number(e.CPUTimeUs),render:e=>{var t;let{row:n}=e;return(0,Le.jsx)("div",{className:RA("query"),children:(0,Le.jsx)(kA,{value:null===(t=n.QueryText)||void 0===t?void 0:t.toString(),maxQueryHeight:DA})})},sortable:!1,width:500},ZA={name:FA,render:e=>{let{row:t}=e;return(0,ks.o0)(new Date(t.EndTime).getTime())},align:Hc.ZP.RIGHT,width:200},YA={name:zA,render:e=>{let{row:t}=e;return(0,ks.uf)(t.ReadRows)},sortAccessor:e=>Number(e.ReadRows),align:Hc.ZP.RIGHT,width:150},KA={name:BA,render:e=>{let{row:t}=e;return(0,ks.uf)(t.ReadBytes)},sortAccessor:e=>Number(e.ReadBytes),align:Hc.ZP.RIGHT,width:150},QA={name:UA,render:e=>{let{row:t}=e;return(0,Le.jsx)("div",{className:RA("user-sid"),children:t.UserSID||"\u2013"})},sortAccessor:e=>String(e.UserSID),align:Hc.ZP.LEFT},XA={name:HA,header:"QueryText",render:e=>{var t;let{row:n}=e;return(0,Le.jsx)(jA,{value:null===(t=n.QueryText)||void 0===t?void 0:t.toString()})},sortable:!1,width:500},$A={name:VA,render:e=>{let{row:t}=e;return n=String(t.QueryText),(PA().str(n)>>>0).toString(16).toUpperCase().padStart(8,"0");var n},width:130,sortable:!1},JA={name:GA,header:"Duration, ms",render:e=>{var t;let{row:n}=e;return(0,ks.uf)((0,Ej.BO)(null!==(t=n.Duration)&&void 0!==t?t:void 0))},sortAccessor:e=>Number(e.Duration),align:Hc.ZP.RIGHT,width:150},eR=()=>[$A,XA,WA];function tR(e){let{path:t}=e;const n=Ao(),r=Ca(),i=_a(),o=(0,Ta.mB)(r),{autorefresh:s}=Do((e=>e.schema)),l=eR(),{currentData:c,isFetching:u,error:d}=OA.useGetOverviewTopQueriesQuery({database:t},{pollingInterval:s}),h=u&&void 0===c,{result:p}=c||{},f=a.useCallback((e=>{const{QueryText:t}=e;n((0,TA.B8)({input:t}));const o=(0,Ta.mB)(r),a=fs({...o,[us.bS]:us.m2.query,[ds.queryTab]:us._0.newQuery});i.push(a)}),[n,i,r]),m=_A({entity:GD("queries"),postfix:GD("by-cpu-time"),link:fs({...o,[ds.diagnosticsTab]:us.qQ.topQueries})});return(0,Le.jsx)(SA,{columnsWidthLSKey:MA,data:p||[],columns:l,onRowClick:f,title:m,loading:h,error:(0,BI.fV)(d),rowClassName:()=>wA("top-queries-row")})}function nR(e,t){const n=t?"CAST(SUBSTRING(CAST(Path AS String), ".concat(t.length,") AS Utf8) AS Path"):"Path";return"SELECT\n ".concat(n,",\n TabletId,\n CPUCores,\nFROM `.sys/partition_stats`\nWHERE\n Path='").concat(e,"'\n OR Path LIKE '").concat(e,"/%'\nORDER BY CPUCores DESC\nLIMIT ").concat(Lo.fl)}const rR=Dl.h.injectEndpoints({endpoints:e=>({getTopShards:e.query({queryFn:async(e,t)=>{let{database:n,path:r=""}=e,{signal:i}=t;try{const e=await window.api.sendQuery({schema:"modern",query:nR(r,n),database:n,action:"execute-scan"},{signal:i});return(0,BI.gW)(e)?{error:e}:{data:(0,BI.gY)(e)}}catch(o){return{error:o||new Error("Unauthorized")}}},providesTags:["All"]})}),overrideExisting:"throw"});function iR(e){let{path:t,location:n,...r}=e;const i=(0,Ta.mB)(n),o=(0,Ta.vF)({...i,schema:t});return(0,Le.jsx)(si,{view:"normal",...r,href:o})}const oR=tu(60,80,["success","warning","danger"]),aR="topShardsColumnsWidth",sR="TabletId",lR="CPUCores",cR="DataSize",uR="Path",dR="NodeId",hR="InFlightTxCount",pR={TabletId:"TabletId",CPUCores:"CPUCores",DataSize:"DataSize (B)",Path:"Path",NodeId:"NodeId",PeakTime:"PeakTime",InFlightTxCount:"InFlightTxCount",IntervalEnd:"IntervalEnd"};const fR=(e,t)=>({name:uR,header:pR[uR],render:n=>{let{row:r}=n;return(0,Le.jsx)(iR,{path:e+r.Path,location:t,children:r.Path})},sortable:!1,width:300}),mR={name:lR,header:pR[lR],render:e=>{let{row:t}=e;return n=t.CPUCores||0,"".concat((0,ks.W0)(100*Number(n),2),"%");var n},align:Hc.ZP.RIGHT},gR={name:cR,header:pR[cR],render:e=>{let{row:t}=e;return(0,ks.uf)(t.DataSize)},align:Hc.ZP.RIGHT},vR={name:sR,header:pR[sR],render:e=>{let{row:t}=e;return t.TabletId?(0,Le.jsx)(_l,{to:(0,Ta.ax)(Ta.ZP.tablet,{id:t.TabletId}),children:t.TabletId}):"\u2013"},sortable:!1,width:190},yR={name:dR,header:pR[dR],render:e=>{let{row:t}=e;return t.NodeId?(0,Le.jsx)(_l,{to:bu(t.NodeId),children:t.NodeId}):"\u2013"},align:Hc.ZP.RIGHT},bR={name:lR,header:pR[lR],render:e=>{let{row:t}=e;return(0,Le.jsx)(Uu,{value:(0,ks.W0)(100*Number(t.CPUCores),2),theme:oR(100*Number(t.CPUCores))})},align:Hc.ZP.RIGHT,sortable:!1,width:140,resizeMinWidth:140},xR={name:hR,header:pR[hR],render:e=>{let{row:t}=e;return(0,ks.uf)(t.InFlightTxCount)},align:Hc.ZP.RIGHT},wR=e=>{let{path:t}=e;const n=Ca(),r=(0,Ta.mB)(n),{autorefresh:i,currentSchemaPath:o}=Do((e=>e.schema)),{currentData:a,isFetching:s,error:l}=rR.useGetTopShardsQuery({database:t,path:o},{pollingInterval:i}),c=s&&void 0===a,{result:u}=a||{},d=((e,t)=>[vR,fR(e,t),bR])(t,n),h=_A({entity:GD("shards"),postfix:GD("by-cpu-usage"),link:fs({...r,[ds.diagnosticsTab]:us.qQ.topShards})});return(0,Le.jsx)(SA,{columnsWidthLSKey:aR,data:u||[],columns:d,title:h,loading:c,error:(0,BI.fV)(l)})},SR=[{title:GD("charts.cpu-usage"),metrics:["IC","IO","Batch","User","System"].map((e=>({target:"resources.cpu.".concat(e,".usage"),title:e}))),options:{dataType:"percent",scaleRange:{min:0,max:1}}}];function _R(e){let{path:t,additionalNodesProps:n}=e;return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(HD,{database:t,charts:SR}),(0,Le.jsx)(EA,{path:t,additionalNodesProps:n}),(0,Le.jsx)(CA,{path:t,additionalNodesProps:n}),(0,Le.jsx)(wR,{path:t}),(0,Le.jsx)(tR,{path:t})]})}function CR(e){let{path:t,additionalNodesProps:n}=e;const r=Oa(),{autorefresh:i}=Do((e=>e.schema)),o=function(e){let{tabletsPath:t,getNodeRef:n}=e;return[rd,id(n),cd,fd,md,gd,vd,yd,pd(t)]}({getNodeRef:null===n||void 0===n?void 0:n.getNodeRef}),{currentData:a,isFetching:s,error:l}=xA.useGetTopNodesQuery({tenant:t,sortValue:"Memory"},{pollingInterval:i}),c=s&&void 0===a,u=a,d=_A({entity:GD("nodes"),postfix:GD("by-memory"),link:fs({...r,[ds.diagnosticsTab]:us.qQ.nodes})});return(0,Le.jsx)(SA,{columnsWidthLSKey:Hu,data:u||[],columns:o,title:d,loading:c,error:l,emptyDataMessage:GD("top-nodes.empty-data")})}const ER=[{title:GD("charts.memory-usage"),metrics:[{target:"resources.memory.used_bytes",title:GD("charts.memory-usage")}],options:{dataType:"size"}}];function TR(e){let{path:t}=e;return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(HD,{database:t,charts:ER}),(0,Le.jsx)(CR,{path:t})]})}const OR=e=>{const{StoragePools:t,StorageGroups:n}=e,r=Ah(n,t);return t&&r.sort(((e,t)=>t.Usage-e.Usage)),{groups:r.slice(0,Lo.fl)}},NR=Dl.h.injectEndpoints({endpoints:e=>({getTopStorageGroups:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{const t=await window.api.getStorageInfo({visibleEntities:"all",sortOrder:-1,sortValue:"Usage",limit:Lo.fl,version:ka.v2,...e},{signal:n});return{data:OR(t).groups||[]}}catch(r){return{error:r}}},providesTags:["All"]})}),overrideExisting:"throw"});function kR(e){let{tenant:t}=e;const n=Oa(),{autorefresh:r}=Do((e=>e.schema)),i=AS(),{currentData:o,isFetching:a,error:s}=NR.useGetTopStorageGroupsQuery({tenant:t},{pollingInterval:r}),l=a&&void 0===o,c=o,u=_A({entity:GD("groups"),postfix:GD("by-usage"),link:fs({...n,[ds.diagnosticsTab]:us.qQ.storage})});return(0,Le.jsx)(SA,{columnsWidthLSKey:uS,data:c||[],columns:i,title:u,loading:l,error:s})}const jR=e=>"\nSELECT\n Path, SUM(DataSize) as Size\nFROM `".concat(e,"/.sys/partition_stats`\nGROUP BY Path\n ORDER BY Size DESC\n LIMIT ").concat(Lo.fl,"\n"),IR=Dl.h.injectEndpoints({endpoints:e=>({getTopTables:e.query({queryFn:async(e,t)=>{let{path:n}=e,{signal:r}=t;try{const e=await window.api.sendQuery({schema:"modern",query:jR(n),database:n,action:"execute-scan"},{signal:r});return(0,BI.gW)(e)?{error:e}:{data:(0,BI.gY)(e)}}catch(i){return{error:i||"Unauthorized"}}},providesTags:["All"]})}),overrideExisting:"throw"}),PR="topTablesTableColumnsWidth";function DR(e){let{path:t}=e;const n=Ca(),{autorefresh:r}=Do((e=>e.schema)),{currentData:i,error:o,isFetching:a}=IR.useGetTopTablesQuery({path:t},{pollingInterval:r}),s=a&&void 0===i,{result:l}=i||{},c=[{name:"Size",width:100,sortable:!1,render:e=>{let{row:t}=e;return(e=>{const t=(0,BC.dT)(null!==l&&void 0!==l&&l.length?Number(l[0].Size):0,0);return(0,BC.td)({value:e,size:t,precision:1})})(Number(t.Size))},align:Hc.ZP.RIGHT},{name:"Path",width:700,sortable:!1,render:e=>{let{row:t}=e;return t.Path?(0,Le.jsx)(hu,{content:t.Path,children:(0,Le.jsx)(iR,{path:String(t.Path),location:n,children:t.Path})}):null}}],u=_A({entity:GD("tables"),postfix:GD("by-size")});return(0,Le.jsx)(SA,{columnsWidthLSKey:PR,data:l||[],columns:c,title:u,loading:s,error:(0,BI.fV)(o)})}const AR=[{title:GD("charts.storage-usage"),metrics:[{target:"resources.storage.used_bytes",title:GD("charts.storage-usage")}],options:{dataType:"size"}}];function RR(e){let{tenantName:t,metrics:n}=e;const{blobStorageUsed:r,tabletStorageUsed:i,blobStorageLimit:o,tabletStorageLimit:s}=n,l=[{label:(0,Le.jsx)(Po,{text:GD("storage.tablet-storage-title"),popoverContent:GD("storage.tablet-storage-description")}),value:(0,Le.jsx)(Iu,{value:i,capacity:s,formatValues:ks.QO,colorizeProgress:!0,warningThreshold:75,dangerThreshold:85})},{label:(0,Le.jsx)(Po,{text:GD("storage.db-storage-title"),popoverContent:GD("storage.db-storage-description")}),value:(0,Le.jsx)(Iu,{value:r,capacity:o,formatValues:ks.QO,colorizeProgress:!0,warningThreshold:75,dangerThreshold:85})}];return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(HD,{database:t,charts:AR}),(0,Le.jsx)(Ss,{className:wA("storage-info"),title:"Storage details",info:l}),(0,Le.jsx)(DR,{path:t}),(0,Le.jsx)(kR,{tenant:t})]})}const MR=Dl.h.injectEndpoints({endpoints:e=>({getHealthcheckInfo:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{return{data:await window.api.getHealthcheckInfo(e,{signal:n})}}catch(r){return{error:r}}},providesTags:["All"]})}),overrideExisting:"throw"}),LR={RED:0,ORANGE:1,YELLOW:2,BLUE:3,GREEN:4},FR=e=>e.sort(((e,t)=>(LR[e.status]||0)-(LR[t.status]||0))),zR=e=>{let{issue:t,data:n}=e;return FR(n.filter((e=>t.reason&&-1!==t.reason.indexOf(e.id))))},BR=e=>FR(e.filter((t=>!e.find((e=>e.reason&&-1!==e.reason.indexOf(t.id)))))),UR=e=>{let{data:t,roots:n}=e;return n?n.map((e=>{const n=UR({roots:zR({issue:e,data:t}),data:t});return{...e,reasonsItems:n}})):[]},HR=e=>{const t={};for(const n of e)t[n.status]||(t[n.status]=0),t[n.status]++;return Object.entries(t).sort(((e,t)=>{let[n]=e,[r]=t;return(LR[n]||0)-(LR[r]||0)}))},VR=(0,p_.P1)((e=>e),(e=>MR.endpoints.getHealthcheckInfo.select(e))),GR=(0,p_.P1)((e=>e),((e,t)=>VR(t)),((e,t)=>{var n;return(null===(n=t(e).data)||void 0===n?void 0:n.issue_log)||[]})),WR=(0,p_.P1)(GR,(function(){return BR(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[])})),qR=(0,p_.P1)([GR,WR],(function(){return UR({data:arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],roots:arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]})})),ZR=(0,p_.P1)(GR,(function(){return HR(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[])})),YR=function(e){let{autorefresh:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{currentData:n,isFetching:r,error:i,refetch:o}=MR.useGetHealthcheckInfoQuery(e,{pollingInterval:t}),a=(null===n||void 0===n?void 0:n.self_check_result)||KD.UNSPECIFIED,s=Do((t=>ZR(t,e)));return{issueTrees:Do((t=>qR(t,e))),issuesStatistics:s,loading:void 0===n&&r,error:i,refetch:o,selfCheckResult:a}};function KR(e){var t;let{tenantName:n,additionalTenantProps:r,additionalNodesProps:i}=e;const{metricsTab:o}=Do((e=>e.tenant)),{autorefresh:a}=Do((e=>e.schema)),{issueTrees:s,issuesStatistics:l,selfCheckResult:c,loading:u,error:d,refetch:h}=YR(n,{autorefresh:a}),{currentData:p,isFetching:f}=Gk.$1.useGetTenantInfoQuery({path:n},{pollingInterval:a}),m=f&&void 0===p,{Name:g,Type:v,Overall:y}=p||{},b=(0,pj.TV)(v),{blobStorage:x,tabletStorage:w,blobStorageLimit:S,tabletStorageLimit:_,poolsStats:C,memoryStats:E,blobStorageStats:T,tabletStorageStats:O}=(0,LP.HH)(null!==p&&void 0!==p?p:void 0),N={blobStorageUsed:x,blobStorageLimit:S,tabletStorageUsed:w,tabletStorageLimit:_};return m?(0,Le.jsx)("div",{className:wA("loader"),children:(0,Le.jsx)(Di,{size:"m"})}):(0,Le.jsxs)("div",{className:wA(),children:[(0,Le.jsxs)("div",{className:wA("info"),children:[(0,Le.jsx)("div",{className:wA("top-label"),children:b}),(0,Le.jsxs)("div",{className:wA("top"),children:[(0,Le.jsx)("div",{className:wA("tenant-name-wrapper"),children:(0,Le.jsx)(Il,{status:y,name:g||Lo.FU,withLeftTrim:!0,hasClipboardButton:Boolean(p),clipboardButtonAlwaysVisible:!0})}),null===r||void 0===r||null===(t=r.getMonitoringLink)||void 0===t?void 0:t.call(r,g,v)]}),(0,Le.jsx)(gA,{poolsCpuStats:C,memoryStats:E,blobStorageStats:T,tabletStorageStats:O,issuesStatistics:l,selfCheckResult:c,fetchHealthcheck:h,healthcheckLoading:u,healthcheckError:d})]}),(()=>{switch(o){case us.Xk.cpu:return(0,Le.jsx)(_R,{path:n,additionalNodesProps:i});case us.Xk.storage:return(0,Le.jsx)(RR,{tenantName:n,metrics:N});case us.Xk.memory:return(0,Le.jsx)(TR,{path:n});case us.Xk.healthcheck:return(0,Le.jsx)(aA,{issueTrees:s,loading:u,error:d});default:return(0,Le.jsx)(qD,{database:n})}})()]})}const QR=Me("kv-detailed-overview");const XR=function(e){const{type:t,tenantName:n,additionalTenantProps:r,additionalNodesProps:i}=e,{currentSchemaPath:o}=(0,ae.v9)((e=>e.schema)),a=n===o;return(0,Le.jsx)("div",{className:QR(),children:a?(0,Le.jsx)("div",{className:QR("section"),children:(0,Le.jsx)(KR,{tenantName:n,additionalTenantProps:r,additionalNodesProps:i})}):(0,Le.jsx)(MP,{type:t,tenantName:n})})},$R={id:us.qQ.overview,title:"Info"},JR={id:us.qQ.schema,title:"Schema"},eM={id:us.qQ.topQueries,title:"Top queries"},tM={id:us.qQ.topShards,title:"Top shards"},nM={id:us.qQ.nodes,title:"Nodes"},rM={id:us.qQ.tablets,title:"Tablets"},iM={id:us.qQ.storage,title:"Storage"},oM={id:us.qQ.network,title:"Network"},aM={id:us.qQ.describe,title:"Describe"},sM={id:us.qQ.hotKeys,title:"Hot keys"},lM={id:us.qQ.graph,title:"Graph"},cM={id:us.qQ.consumers,title:"Consumers"},uM={id:us.qQ.partitions,title:"Partitions"},dM=[$R,aM],hM=[$R,eM,tM,nM,rM,iM,oM,aM],pM=[$R,JR,tM,nM,lM,rM,sM,aM],fM=[$R,JR,tM,nM,lM,rM,aM],mM=[$R,tM,nM,aM],gM=[$R,cM,uM,nM,aM],vM=[$R,cM,uM,nM,aM],yM=[$R,aM],bM=[$R,aM],xM=[$R,aM],wM={[hj.gb.EPathTypeInvalid]:void 0,[hj.gb.EPathTypeSubDomain]:hM,[hj.gb.EPathTypeExtSubDomain]:hM,[hj.gb.EPathTypeColumnStore]:hM,[hj.gb.EPathTypeTable]:pM,[hj.gb.EPathTypeColumnTable]:fM,[hj.gb.EPathTypeDir]:mM,[hj.gb.EPathTypeTableIndex]:mM,[hj.gb.EPathTypeCdcStream]:gM,[hj.gb.EPathTypePersQueueGroup]:vM,[hj.gb.EPathTypeExternalDataSource]:yM,[hj.gb.EPathTypeExternalTable]:bM,[hj.gb.EPathTypeView]:xM,[hj.gb.EPathTypeReplication]:dM},SM=e=>e&&wM[e]||mM;var _M=n(91387),CM=n(77952);const EM=JSON.parse('{"hot-keys-collecting":"Please wait a little while we are collecting hot keys samples...","no-data":"No information about hot keys","help":"Hot keys contains a list of table primary key values that are accessed most often. Sample is collected upon request to the tab during 5s time interval. Samples column indicates how many requests to the particular key value were registered during collection phase."}'),TM=(0,We.wZ)("ydb-hot-keys",{en:EM}),OM=Me("ydb-hot-keys"),NM={accessSample:"accessSample",keyValues:"keyValues"},kM=function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).map(((e,t)=>({name:e,header:(0,Le.jsxs)("div",{className:OM("primary-key-column"),children:[(0,Le.jsx)(we.J,{data:mj,width:12,height:7}),e]}),render:e=>{let{row:n}=e;return n.keyValues[t]},align:Hc.ZP.RIGHT,sortable:!1})));return[...e,{name:NM.accessSample,header:"Samples",render:e=>{let{row:t}=e;return t.accessSample},align:Hc.ZP.RIGHT,sortable:!1}]};function jM(e){var t,n,r;let{path:i}=e;const o=Ao(),[s,l]=Mo(Lo.JZ),c=a.useRef(),{loading:u,wasLoaded:d,data:h,error:p}=Do((e=>e.hotKeys)),{loading:f,data:m}=Do((e=>e.schema)),g=null===(t=m[i])||void 0===t||null===(n=t.PathDescription)||void 0===n||null===(r=n.Table)||void 0===r?void 0:r.KeyColumnNames,v=a.useMemo((()=>kM(g)),[g]);a.useEffect((()=>{const e=async e=>{try{return await window.api.getHotKeys(i,e)}catch(t){return void o((0,CM.Ou)(t))}};(async()=>{void 0!==c.current&&window.clearInterval(c.current),o((0,CM.eE)()),o((0,CM.AE)());const t=await e(!0);if(t&&t.hotkeys)o((0,CM.Vd)(t));else if(t){const t=setTimeout((async()=>{const t=await e(!1);t&&o((0,CM.Vd)(t))}),5e3);c.current=t}})()}),[o,i]);return(0,Le.jsxs)(a.Fragment,{children:[s?null:(0,Le.jsxs)(_M.Z,{theme:"info",view:"filled",type:"container",className:OM("help-card"),children:[TM("help"),(0,Le.jsx)(Ie.z,{className:OM("help-card__close-button"),view:"flat",onClick:()=>l(!0),children:(0,Le.jsx)(we.J,{data:tt.Z,size:18})})]}),u&&!d||f?(0,Le.jsx)("div",{children:TM("hot-keys-collecting")}):p?(0,Le.jsx)(zc,{error:p}):h?(0,Le.jsx)(qc,{wrapperClassName:OM("table"),columns:v,data:h,settings:Lo.LE,initialSortOrder:{columnId:NM.accessSample,order:Hc.ZP.DESCENDING}}):(0,Le.jsx)("div",{children:TM("no-data")})]})}const IM=Dl.h.injectEndpoints({endpoints:e=>({getNetworkInfo:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{return{data:await window.api.getNetwork(e,{signal:n})}}catch(r){return{error:r}}},providesTags:["All"]})}),overrideExisting:"throw"}),PM=Me("node-network");function DM(){}function AM(e){let{nodeId:t,connected:n,capacity:r,rack:i,status:o,onClick:s=DM,onMouseEnter:l=DM,onMouseLeave:c=DM,showID:u,isBlurred:d}=e;const h=a.useRef(null),p=o||function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const n=Math.floor(e/t*100);return 100===n?al.K.Green:n>=70?al.K.Yellow:n>=1?al.K.Red:al.K.Grey}(n,r);return(0,Le.jsx)("div",{ref:h,className:PM({[p.toLowerCase()]:!0,id:u,blur:d}),onMouseEnter:()=>{l(h.current,{nodeId:t,connected:n,capacity:r,rack:i},"node")},onMouseLeave:()=>{c()},onClick:()=>s(t),children:u?t:null})}const RM=e=>null===e||void 0===e?void 0:e.reduce(((e,t)=>t.Connected?e+1:e),0);var MM,LM,FM,zM,BM,UM,HM,VM,GM,WM,qM,ZM,YM,KM,QM;function XM(){return XM=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},XM.apply(this,arguments)}const $M=function(e){return a.createElement("svg",XM({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 221 204"},e),MM||(MM=a.createElement("path",{d:"M68.46 2.529v25.227c0 1.227.876 2.278 2.102 2.511 16.643 2.979 29.14 17.812 28.498 35.448-.642 18.045-15.359 32.703-33.345 33.403-17.636.643-32.41-11.854-35.448-28.44a2.562 2.562 0 00-2.51-2.102H2.528c-1.519 0-2.687 1.285-2.512 2.745 3.446 32.703 31.243 58.106 64.939 57.814 35.155-.292 63.829-29.024 64.121-64.18.292-33.695-25.17-61.492-57.873-64.938-1.46-.175-2.744.993-2.744 2.512z",fill:"#EBF2FA"})),LM||(LM=a.createElement("path",{d:"M22.736 18.354l17.811 17.812c.876.876 2.278.992 3.329.233 4.146-3.095 9.052-5.197 14.366-6.19 1.226-.233 2.102-1.226 2.102-2.511V2.528a2.502 2.502 0 00-2.803-2.51C44.46 1.418 32.488 6.674 22.91 14.674c-1.168.935-1.226 2.628-.175 3.68zm-9.403 6.133C6.093 33.83 1.303 45.16.02 57.54c-.176 1.46 1.05 2.745 2.51 2.745H27.7a2.562 2.562 0 002.511-2.103c.818-4.672 2.628-9.051 5.14-12.847a2.642 2.642 0 00-.293-3.212L17.13 24.312c-1.05-1.11-2.861-.993-3.796.175zm67.275 107.392h32.995c1.868 0 3.387 1.518 3.445 3.445v65.231a3.451 3.451 0 01-3.445 3.445H80.608a3.452 3.452 0 01-3.446-3.445v-65.231a3.451 3.451 0 013.446-3.445zm77.844 27.097h-32.878a3.514 3.514 0 00-3.503 3.504v37.959a3.514 3.514 0 003.503 3.504h32.878a3.515 3.515 0 003.504-3.504V162.48a3.515 3.515 0 00-3.504-3.504zm12.205 18.28h32.586a3.639 3.639 0 013.621 3.62v19.388a3.639 3.639 0 01-3.621 3.621h-32.586a3.639 3.639 0 01-3.62-3.621v-19.388a3.638 3.638 0 013.62-3.62z",fill:"#EBF2FA"})),FM||(FM=a.createElement("path",{d:"M134.275 171.532h-113c-5.84 0-10.628-4.789-10.628-10.629v-73.23c0-5.84 4.788-10.629 10.628-10.629h112.941c5.84 0 10.629 4.789 10.629 10.629v73.23c.058 5.899-4.731 10.629-10.57 10.629v0z",stroke:"#2EE5C0",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),zM||(zM=a.createElement("path",{d:"M21.625 90.769a3.037 3.037 0 100-6.074 3.037 3.037 0 000 6.074zM31.494 90.769a3.037 3.037 0 100-6.074 3.037 3.037 0 000 6.074zM41.363 90.769a3.037 3.037 0 100-6.074 3.037 3.037 0 000 6.074z",fill:"#2EE5C0"})),BM||(BM=a.createElement("path",{d:"M10.822 98.592h133.673",stroke:"#2EE5C0",strokeWidth:4,strokeLinecap:"round",strokeLinejoin:"round"})),UM||(UM=a.createElement("path",{d:"M184.555 149.164L57.89 156.172c-4.263.234-7.767-3.037-7.767-7.3V51.114c0-4.263 3.504-7.533 7.767-7.3l126.665 7.008c3.27.176 5.898 3.33 5.898 7.008v84.327c0 3.679-2.628 6.832-5.898 7.007z",fill:"#027BF3"})),HM||(HM=a.createElement("path",{d:"M65.13 54.151c0 1.986-1.576 3.504-3.562 3.387-1.985-.058-3.562-1.752-3.562-3.737 0-1.986 1.635-3.504 3.562-3.387 1.927.058 3.562 1.752 3.562 3.737zm11.506.466a3.38 3.38 0 01-3.504 3.388c-1.927-.059-3.504-1.753-3.504-3.68a3.38 3.38 0 013.504-3.387c1.927.117 3.504 1.752 3.504 3.68zm7.825 3.855c1.869.117 3.387-1.402 3.387-3.329 0-1.927-1.518-3.562-3.387-3.62-1.927-.117-3.445 1.401-3.445 3.328 0 1.927 1.576 3.562 3.445 3.62z",fill:"#fff"})),VM||(VM=a.createElement("path",{d:"M75.467 142.974V85.277c-3.971-.525-8.584-.409-13.899.7v57.64l13.899-.643zM88.84 90.651v51.799l-11.096.467v-57.23c4.322.934 7.942 2.745 11.096 4.964zm13.431 13.899a1.618 1.618 0 01-.146-.176 1.487 1.487 0 00-.146-.175c-.42-.51-.841-1.026-1.265-1.546-2.875-3.522-5.874-7.197-9.538-10.25v49.93l11.095-.467V104.55zm13.432 5.722c-3.913-.058-7.709-.701-11.096-3.445v34.922l11.096-.468v-31.009zm13.431-.409c-2.764-.173-5.529.006-8.246.181-.957.062-1.907.123-2.849.169v30.951l11.095-.467v-30.834zm24.002 29.841l-8.234.35v-22.191c8.176 9.285 8.234 21.841 8.234 21.841zM140.113 113.6a19.774 19.774 0 012.453 1.927v24.644l-11.096.467v-30.483c2.92.467 5.782 1.46 8.643 3.445z",fill:"#00236B"})),GM||(GM=a.createElement("path",{d:"M55.745 76.436a2 2 0 103.123 2.499l-3.123-2.499zm5.766-4.006l1.575-1.233a2 2 0 00-3.136-.017l1.561 1.25zm2.63 6.605a2 2 0 103.15-2.465l-3.15 2.465zm107.94 53.502a2 2 0 00-2.499 3.123l2.499-3.123zm4.006 5.766l1.214 1.59a1.999 1.999 0 00.036-3.151l-1.25 1.561zm-6.644 2.557a1.999 1.999 0 102.427 3.179l-2.427-3.179zM58.868 78.935l4.205-5.256-3.123-2.499-4.205 5.256 3.123 2.499zm1.068-5.273l4.205 5.373 3.15-2.465-4.205-5.373-3.15 2.465zm109.646 61.998l5.256 4.205 2.499-3.123-5.256-4.205-2.499 3.123zm5.292 1.054l-5.431 4.146 2.427 3.179 5.431-4.146-2.427-3.179zM147.137 69.146a2 2 0 10-.149 3.998l.149-3.998zm29.634 5.107a2 2 0 10.149-3.997l-.149 3.997zm-29.657 5.404a2 2 0 00-.102 3.999l.102-3.999zm29.681 4.758a2 2 0 00.102-3.999l-.102 4zm-29.72 5.928a2 2 0 10-.023 4l.023-4zm29.759 4.176a2 2 0 10.024-4l-.024 4zm-29.846-21.375l29.783 1.11.149-3.998-29.783-1.11-.149 3.998zm.024 10.512l29.783.76.102-4-29.783-.759-.102 3.999zm.04 10.687l29.782.176.024-4-29.783-.175-.023 4zM143.442 71.202a2.458 2.458 0 01-2.57 2.453c-1.401-.058-2.569-1.285-2.569-2.686 0-1.402 1.168-2.57 2.569-2.453 1.46.058 2.57 1.285 2.57 2.686zm.001 10.396a2.458 2.458 0 01-2.57 2.453c-1.401-.059-2.569-1.285-2.569-2.686 0-1.46 1.168-2.57 2.569-2.453 1.46.058 2.57 1.284 2.57 2.686zm-2.57 12.848a2.458 2.458 0 002.57-2.453c0-1.402-1.11-2.628-2.57-2.686-1.401-.117-2.569 1.05-2.569 2.452s1.168 2.628 2.569 2.687z",fill:"#fff"})),WM||(WM=a.createElement("path",{opacity:.2,d:"M190.452 91.875V57.771c0-3.68-2.628-6.833-5.899-7.008l-23.651-1.285a35.18 35.18 0 00-1.752 10.98c0 17.635 12.79 31.826 28.09 31.65 1.051.06 2.16-.058 3.212-.233z",fill:"#00236B"})),qM||(qM=a.createElement("path",{d:"M220.645 58.883c0-16.585-11.621-30.775-26.454-31.651-15.3-.876-28.089 12.672-28.089 30.308s12.789 31.827 28.089 31.652c14.833-.117 26.454-13.724 26.454-30.309z",fill:"#FF4645"})),ZM||(ZM=a.createElement("path",{d:"M215.329 40.372c-4.788-7.475-12.38-12.614-21.14-13.14v31.01l21.14-17.87z",fill:"#FC0"})),YM||(YM=a.createElement("path",{d:"M215.329 40.372l-21.14 17.87 26.455.642c0-6.89-1.986-13.315-5.315-18.512z",fill:"#00236B"})),KM||(KM=a.createElement("path",{d:"M194.248 58.24V27.233c-15.301-.876-28.09 12.672-28.09 30.308l28.09.7z",fill:"#FF4645"})),QM||(QM=a.createElement("path",{d:"M161.151 14.734a2 2 0 10-4 0h4zm-4 4.204a2 2 0 004 0h-4zm4 8.876a2 2 0 10-4 0h4zm-4 4.555a2 2 0 004 0h-4zm10.819-6.816a2 2 0 000-4v4zm-4.263-4a2 2 0 100 4v-4zm-9.169 4a2 2 0 100-4v4zm-4.263-4a2 2 0 000 4v-4zm6.876-6.82v4.205h4v-4.204h-4zm0 13.08v4.556h4v-4.555h-4zm10.819-6.26h-4.263v4h4.263v-4zm-13.432 0h-4.263v4h4.263v-4z",fill:"#2EE5C0"})))},JM=Me("network");function eL(e){var t,n;let{path:r}=e;const{autorefresh:i}=Do((e=>e.schema)),o=Do(Ro.qz),s=Ao(),[l,c]=a.useState(),[u,d]=a.useState(!1),[h,p]=a.useState(!1),{currentData:f,isFetching:m,error:g}=IM.useGetNetworkInfoQuery(r,{pollingInterval:i});if(m&&void 0===f)return(0,Le.jsx)("div",{className:"loader",children:(0,Le.jsx)(Di,{size:"l"})});if(g)return(0,Le.jsx)(zc,{error:g});const v=f,y=null!==(t=(null===v||void 0===v?void 0:v.Tenants)&&v.Tenants[0].Nodes)&&void 0!==t?t:[];if(0===y.length)return(0,Le.jsx)("div",{className:"error",children:"no nodes data"});const b=nL(y,"NodeType"),x=l?nL(null!==(n=l.Peers)&&void 0!==n?n:[],"NodeType"):{};return(0,Le.jsx)("div",{className:JM(),children:(0,Le.jsx)("div",{className:JM("inner"),children:(0,Le.jsxs)("div",{className:JM("nodes-row"),children:[(0,Le.jsxs)("div",{className:JM("left"),children:[(0,Le.jsx)("div",{className:JM("controls-wrapper"),children:(0,Le.jsxs)("div",{className:JM("controls"),children:[(0,Le.jsx)(Bc,{value:o,onChange:e=>{s((0,Ro.M6)(e))},className:JM("problem-filter")}),(0,Le.jsx)("div",{className:JM("checkbox-wrapper"),children:(0,Le.jsx)(T_,{onUpdate:()=>{d(!u)},checked:u,children:"ID"})}),(0,Le.jsx)("div",{className:JM("checkbox-wrapper"),children:(0,Le.jsx)(T_,{onUpdate:()=>{p(!h)},checked:h,children:"Racks"})})]})}),(0,Le.jsx)(tL,{nodes:b,showId:u,showRacks:h,clickedNode:l,onClickNode:c})]}),(0,Le.jsx)("div",{className:JM("right"),children:l?(0,Le.jsxs)("div",{children:[(0,Le.jsxs)("div",{className:JM("label"),children:["Connectivity of node"," ",(0,Le.jsx)(bl,{className:JM("link"),to:bu(l.NodeId),children:l.NodeId})," ","to other nodes"]}),(0,Le.jsx)("div",{className:JM("nodes-row"),children:(0,Le.jsx)(tL,{nodes:x,isRight:!0,showId:u,showRacks:h,clickedNode:l,onClickNode:c})})]}):(0,Le.jsxs)("div",{className:JM("placeholder"),children:[(0,Le.jsx)("div",{className:JM("placeholder-img"),children:(0,Le.jsx)(we.J,{data:$M,width:221,height:204})}),(0,Le.jsx)("div",{className:JM("placeholder-text"),children:"Select node to see its connectivity to other nodes"})]})})]})})})}function tL(e){let{nodes:t,isRight:n,showId:r,showRacks:i,clickedNode:o,onClickNode:a}=e;const s=Do(Ro.qz),l=Ao();let c=0;const u=Object.keys(t).map(((e,u)=>{const d=nL(t[e],"Rack");return(0,Le.jsxs)("div",{className:JM("nodes-container",{right:n}),children:[(0,Le.jsxs)("div",{className:JM("nodes-title"),children:[e," nodes"]}),(0,Le.jsx)("div",{className:JM("nodes"),children:i?Object.keys(d).map(((e,t)=>(0,Le.jsxs)("div",{className:JM("rack-column"),children:[(0,Le.jsx)("div",{className:JM("rack-index"),children:"undefined"===e?"?":e}),d[e].map(((e,t)=>{let i,u;return!n&&"Peers"in e&&e.Peers&&(i=Object.keys(e.Peers).length,u=RM(e.Peers)),s===Ro.pu.PROBLEMS&&i!==u||s===Ro.pu.ALL||n?(c++,(0,Le.jsx)(AM,{nodeId:e.NodeId,showID:r,rack:e.Rack,status:"ConnectStatus"in e?e.ConnectStatus:void 0,capacity:i,connected:u,onMouseEnter:function(){l((0,vs.hJ)(...arguments))},onMouseLeave:()=>{l((0,vs.i8)())},onClick:n?void 0:()=>{a(o&&e.NodeId===o.NodeId?void 0:e)},isBlurred:!n&&o&&o.NodeId!==e.NodeId},t)):null}))]},t))):t[e].map(((e,t)=>{let i,u;const d=e&&"Peers"in e?e.Peers:void 0;return!n&&"Peers"in e&&e.Peers&&(i=e.Peers.length,u=RM(d)),s===Ro.pu.PROBLEMS&&i!==u||s===Ro.pu.ALL||n?(c++,(0,Le.jsx)(AM,{nodeId:e.NodeId,showID:r,rack:e.Rack,status:"ConnectStatus"in e?e.ConnectStatus:void 0,capacity:null===d||void 0===d?void 0:d.length,connected:u,onMouseEnter:function(){l((0,vs.hJ)(...arguments))},onMouseLeave:()=>{l((0,vs.i8)())},onClick:n?void 0:()=>{a(o&&e.NodeId===o.NodeId?void 0:e)},isBlurred:!n&&o&&o.NodeId!==e.NodeId},t)):null}))})]},u)}));return s===Ro.pu.PROBLEMS&&0===c?(0,Le.jsx)(Ge,{name:"thumbsUp",width:"200"}):u}function nL(e,t){return e.reduce(((e,n)=>(e[n[t]]?e[n[t]].push(n):e[n[t]]=[n],e)),{})}var rL=n(42703);const iL=JSON.parse('{"lagsPopover.writeLags":"Write lags statistics (time format dd hh:mm:ss)","lagsPopover.readLags":"Read lags statistics (time format dd hh:mm:ss)","headers.unread":"End offset - Last read offset","headers.uncommited":"End offset - Committed offset","controls.consumerSelector":"Consumer:","controls.consumerSelector.emptyOption":"No consumer","controls.partitionSearch":"Partition ID","controls.generalSearch":"Host, Host ID, Reader, Read Session ID","table.emptyDataMessage":"No partitions match the current search","noConsumersMessage.topic":"This topic has no consumers","noConsumersMessage.stream":"This changefeed has no consumers"}'),oL=JSON.parse('{"lagsPopover.writeLags":"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043b\u0430\u0433\u043e\u0432 \u0437\u0430\u043f\u0438\u0441\u0438 (\u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u0434 \u0447\u0447:\u043c\u043c:\u0441\u0441)","lagsPopover.readLags":"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043b\u0430\u0433\u043e\u0432 \u0447\u0442\u0435\u043d\u0438\u044f (\u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u0434 \u0447\u0447:\u043c\u043c:\u0441\u0441)","headers.unread":"End offset - Last read offset","headers.uncommited":"End offset - Committed offset","controls.consumerSelector":"\u0427\u0438\u0442\u0430\u0442\u0435\u043b\u044c:","controls.consumerSelector.emptyOption":"\u041d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f","controls.partitionSearch":"Partition ID","controls.generalSearch":"Host, Host ID, Reader, Read Session ID","table.emptyDataMessage":"\u041f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0438\u0441\u043a\u0443 \u043d\u0435\u0442 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439","noConsumersMessage.topic":"\u0423 \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u043f\u0438\u043a\u0430 \u043d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439","noConsumersMessage.stream":"\u0423 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0440\u0438\u043c\u0430 \u043d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439"}'),aL=(0,We.wZ)("ydb-diagnostics-partitions",{ru:oL,en:iL}),sL={PARTITION_ID:"partitionId",STORE_SIZE:"storeSize",WRITE_SPEED:"writeSpeed",READ_SPEED:"readSpeed",WRITE_LAGS:"writeLags",READ_LAGS:"readLags",UNCOMMITED_MESSAGES:"uncommitedMessages",UNREAD_MESSAGES:"unreadMessages",START_OFFSET:"startOffset",END_OFFSET:"endOffset",COMMITED_OFFSET:"commitedOffset",READ_SESSION_ID:"readSessionId",READER_NAME:"readerName",PARTITION_HOST:"partitionHost",CONNECTION_HOST:"connectionHost"},lL={[sL.PARTITION_ID]:"Partition ID",[sL.STORE_SIZE]:"Store size",[sL.WRITE_SPEED]:"Write speed",[sL.READ_SPEED]:"Read speed",[sL.WRITE_LAGS]:"Write lags, duration",[sL.READ_LAGS]:"Read lags, duration",[sL.UNCOMMITED_MESSAGES]:"Uncommited messages",[sL.UNREAD_MESSAGES]:"Unread messages",[sL.START_OFFSET]:"Start offset",[sL.END_OFFSET]:"End offset",[sL.COMMITED_OFFSET]:"Commited offset",[sL.READ_SESSION_ID]:"Read session ID",[sL.READER_NAME]:"Reader name",[sL.PARTITION_HOST]:"Partition host",[sL.CONNECTION_HOST]:"Connection host"},cL="partitionWriteLag",uL="partitionWriteIdleTime",dL={[cL]:"write lag",[uL]:"write idle time"},hL="consumerWriteLag",pL="consumerReadLag",fL="consumerReadIdleTime",mL={[hL]:"write lag",[pL]:"read lag",[fL]:"read idle time"},gL=[sL.PARTITION_ID,sL.STORE_SIZE,sL.WRITE_SPEED,sL.WRITE_LAGS,sL.START_OFFSET,sL.END_OFFSET,sL.PARTITION_HOST],vL=Object.values(sL),yL=e=>{let{consumers:t,selectedConsumer:n,onSelectedConsumerChange:r,selectDisabled:i,partitions:o,onSearchChange:s,hiddenColumns:l,onHiddenColumnsChange:c,initialColumnsIds:u}=e;const[d,h]=a.useState(""),[p,f]=a.useState("");a.useEffect((()=>{if(!o)return;const e=new RegExp(m_()(p),"i"),t=new RegExp(m_()(d),"i"),n=o.filter((n=>{const{partitionId:r,readerName:i,readSessionId:o,partitionNodeId:a,connectionNodeId:s,partitionHost:l,connectionHost:c}=n,u=e.test(r),d=[i,o,a,s,l,c].filter(Boolean).map(String),h=0===d.length||d.some((e=>t.test(e)));return u&&h}));s(n)}),[p,d,o,s]);const m=a.useMemo((()=>{const e=t&&t.length?t.map((e=>({value:e,content:e}))):[];return[{value:"",content:aL("controls.consumerSelector.emptyOption")},...e]}),[t]),g=a.useMemo((()=>{const e=[];for(const t of u){const n=t===sL.PARTITION_ID,r={title:lL[t],selected:Boolean(!l.includes(t)),id:t,required:n,sticky:n?"start":void 0};n?e.unshift(r):e.push(r)}return e}),[u,l]),v=e=>(0,Le.jsx)("div",{className:kL("select-option",{empty:""===e.value}),children:e.content});return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(ww,{className:kL("consumer-select"),label:aL("controls.consumerSelector"),options:m,value:[n],onUpdate:e=>{r(e[0])},filterable:t&&t.length>5,disabled:i||!t||!t.length,renderOption:v,renderSelectedOption:v}),(0,Le.jsx)(Yc,{onChange:e=>{f(e)},placeholder:aL("controls.partitionSearch"),className:kL("search",{partition:!0}),value:p}),(0,Le.jsx)(Yc,{onChange:e=>{h(e)},placeholder:aL("controls.generalSearch"),className:kL("search",{general:!0}),value:d}),(0,Le.jsx)(VE,{popupWidth:242,items:g,showStatus:!0,onUpdate:e=>{const t=[...l];e.forEach((e=>{e.selected||l.includes(e.id)?e.selected&&l.includes(e.id)&&t.splice(l.indexOf(e.id)):t.push(e.id)})),c(t)},sortable:!1},"TableColumnSetup")]})},bL=Me("ydb-diagnostics-partitions-columns-header"),xL=e=>{let{title:t}=e;return(0,Le.jsx)("div",{className:bL("multiline"),children:t})},wL=()=>(0,Le.jsx)("div",{className:bL("read-session"),children:lL[sL.READ_SESSION_ID]}),SL=()=>(0,Le.jsx)(Po,{className:bL("lags"),text:lL[sL.WRITE_LAGS],popoverContent:(0,Le.jsx)(Jj,{text:aL("lagsPopover.writeLags"),type:"write"})}),_L=()=>(0,Le.jsx)(Po,{className:bL("lags"),text:lL[sL.READ_LAGS],popoverContent:(0,Le.jsx)(Jj,{text:aL("lagsPopover.readLags"),type:"read"})}),CL=()=>(0,Le.jsx)(Po,{className:bL("messages"),text:lL[sL.UNREAD_MESSAGES],popoverContent:(0,Le.jsx)("div",{className:bL("messages-popover-content"),children:aL("headers.unread")})}),EL=()=>(0,Le.jsx)(Po,{className:bL("messages"),text:lL[sL.UNCOMMITED_MESSAGES],popoverContent:(0,Le.jsx)("div",{className:bL("messages-popover-content"),children:aL("headers.uncommited")})}),TL=Me("ydb-diagnostics-partitions-columns"),OL=[{name:sL.PARTITION_ID,header:(0,Le.jsx)(xL,{title:lL[sL.PARTITION_ID]}),sortAccessor:e=>(0,Ou.kE)(e.partitionId)&&Number(e.partitionId),align:Hc.ZP.LEFT,render:e=>{let{row:t}=e;return t.partitionId}},{name:sL.STORE_SIZE,header:(0,Le.jsx)(xL,{title:lL[sL.STORE_SIZE]}),align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return(0,ks.td)(t.storeSize)}},{name:sL.WRITE_SPEED,header:lL[sL.WRITE_SPEED],align:Hc.ZP.LEFT,resizeMinWidth:140,sortAccessor:e=>e.writeSpeed.perMinute,render:e=>{let{row:t}=e;return(0,Le.jsx)(Lj,{data:t.writeSpeed})}},{name:sL.READ_SPEED,header:lL[sL.READ_SPEED],align:Hc.ZP.LEFT,resizeMinWidth:140,sortAccessor:e=>{var t;return null===(t=e.readSpeed)||void 0===t?void 0:t.perMinute},render:e=>{let{row:t}=e;return(0,Le.jsx)(Lj,{data:t.readSpeed})}},{name:sL.WRITE_LAGS,header:(0,Le.jsx)(SL,{}),className:TL("lags-header"),sub:[{name:cL,header:dL[cL],align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return(0,ks.gC)(t.partitionWriteLag)}},{name:uL,header:dL[uL],align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return(0,ks.gC)(t.partitionWriteIdleTime)}}]},{name:sL.READ_LAGS,header:(0,Le.jsx)(_L,{}),className:TL("lags-header"),sub:[{name:hL,header:mL[hL],align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return(0,ks.gC)(t.consumerWriteLag)}},{name:pL,header:mL[pL],align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return(0,ks.gC)(t.consumerReadLag)}},{name:fL,header:mL[fL],align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return(0,ks.gC)(t.consumerReadIdleTime)}}]},{name:sL.UNCOMMITED_MESSAGES,header:(0,Le.jsx)(EL,{}),align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return t.uncommitedMessages}},{name:sL.UNREAD_MESSAGES,header:(0,Le.jsx)(CL,{}),align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return t.unreadMessages}},{name:sL.START_OFFSET,header:(0,Le.jsx)(xL,{title:lL[sL.START_OFFSET]}),sortAccessor:e=>(0,Ou.kE)(e.startOffset)&&Number(e.startOffset),align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return t.startOffset}},{name:sL.END_OFFSET,header:(0,Le.jsx)(xL,{title:lL[sL.END_OFFSET]}),sortAccessor:e=>(0,Ou.kE)(e.endOffset)&&Number(e.endOffset),align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return t.endOffset}},{name:sL.COMMITED_OFFSET,header:(0,Le.jsx)(xL,{title:lL[sL.COMMITED_OFFSET]}),sortAccessor:e=>(0,Ou.kE)(e.commitedOffset)&&Number(e.commitedOffset),align:Hc.ZP.RIGHT,render:e=>{let{row:t}=e;return t.commitedOffset}},{name:sL.READ_SESSION_ID,header:(0,Le.jsx)(wL,{}),align:Hc.ZP.LEFT,width:150,render:e=>{let{row:t}=e;return t.readSessionId?(0,Le.jsx)(Il,{name:t.readSessionId,showStatus:!1,hasClipboardButton:!0}):"\u2013"}},{name:sL.READER_NAME,header:(0,Le.jsx)(xL,{title:lL[sL.READER_NAME]}),align:Hc.ZP.LEFT,width:150,render:e=>{let{row:t}=e;return t.readerName?(0,Le.jsx)(Il,{name:t.readerName,showStatus:!1,hasClipboardButton:!0}):"\u2013"}},{name:sL.PARTITION_HOST,header:(0,Le.jsx)(xL,{title:lL[sL.PARTITION_HOST]}),align:Hc.ZP.LEFT,width:200,render:e=>{let{row:t}=e;return t.partitionNodeId&&t.partitionHost?(0,Le.jsx)(Il,{name:t.partitionHost,path:bu(t.partitionNodeId),showStatus:!1,hasClipboardButton:!0}):"\u2013"}},{name:sL.CONNECTION_HOST,header:(0,Le.jsx)(xL,{title:lL[sL.CONNECTION_HOST]}),align:Hc.ZP.LEFT,width:200,render:e=>{let{row:t}=e;return t.connectionNodeId&&t.connectionHost?(0,Le.jsx)(Il,{name:t.connectionHost,path:bu(t.connectionNodeId),showStatus:!1,hasClipboardButton:!0}):"\u2013"}}],NL=OL.filter((e=>gL.includes(e.name))),kL=Me("ydb-diagnostics-partitions"),jL=e=>{let{path:t}=e;const n=Ao(),[r,i]=a.useState(t),[o,s]=a.useState([]),l=Do((e=>jj(e,t))),{autorefresh:c}=Do((e=>e.schema)),{selectedConsumer:u}=Do((e=>e.partitions)),{currentData:d,isFetching:h,error:p}=Tj.useGetTopicQuery({path:t}),f=h&&void 0===d,{currentData:m,isFetching:g,error:v}=Zs.W.useGetNodesListQuery(void 0),y=g&&void 0===m,b=Do(Zs.d),[x,w]=Mo(Lo.ZY),[S,_]=(e=>{const[t,n]=a.useState([]),[r,i]=a.useState([]);return a.useEffect((()=>{e?(n(OL),i(vL)):(n(NL),i(gL))}),[e]),[t,r]})(u);a.useEffect((()=>{i(t)}),[n,t]);const C=!f&&r?{path:r,consumerName:u}:zl.CN,{currentData:E,isFetching:T,error:O}=rL.TB.useGetPartitionsQuery(C,{pollingInterval:c}),N=T&&void 0===E,k=E,j=a.useMemo((()=>function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return null===e||void 0===e?void 0:e.map((e=>{const n=e.partitionNodeId&&t?t.get(e.partitionNodeId):void 0,r=e.connectionNodeId&&t?t.get(e.connectionNodeId):void 0;return{...e,partitionHost:n,connectionHost:r}}))}(k,b)),[k,b]);a.useEffect((()=>{const e=!f&&!l,t=u&&l&&!l.includes(u);(e||t)&&n((0,rL.M$)(""))}),[n,f,u,l]);const I=a.useMemo((()=>S.filter((e=>!x.includes(e.name)))),[S,x]),P=e=>{w(e)},D=e=>{n((0,rL.M$)(e))},A=f||y||N,R=v||p||O;return(0,Le.jsxs)("div",{className:kL(),children:[(0,Le.jsx)("div",{className:kL("controls"),children:(0,Le.jsx)(yL,{consumers:l,selectedConsumer:u,onSelectedConsumerChange:D,selectDisabled:Boolean(R)||A,partitions:j,onSearchChange:s,hiddenColumns:x,onHiddenColumnsChange:P,initialColumnsIds:_})}),(0,Le.jsx)("div",{className:kL("table-wrapper"),children:(0,Le.jsx)("div",{className:kL("table-content"),children:A?(0,Le.jsx)(Qc,{className:kL("loader")}):R?(0,Le.jsx)(zc,{error:R}):(0,Le.jsx)(qc,{columnsWidthLSKey:"partitionsColumnsWidth",wrapperClassName:kL("table"),data:o,columns:I,settings:Lo.LE,emptyDataMessage:aL("table.emptyDataMessage")})})})]})},IL=Me("date-range"),PL=e=>{if(!e||isNaN(e))return;const t=e-60*(new Date).getTimezoneOffset()*1e3;return new Date(t).toISOString().substring(0,"yyyy-MM-DDThh:mm".length)},DL=e=>{let{from:t,to:n,className:r,onChange:i}=e;const o=PL(t),a=PL(n);return(0,Le.jsxs)("div",{className:IL(null,r),children:[(0,Le.jsx)("input",{type:"datetime-local",value:o||"",max:a,onChange:e=>{let{target:{value:t}}=e,r=t?new Date(t).getTime():void 0;r&&n&&r>n&&(r=n),null===i||void 0===i||i({from:r,to:n})},className:IL("input")}),"\u2014",(0,Le.jsx)("input",{type:"datetime-local",min:o,value:a||"",onChange:e=>{let{target:{value:n}}=e,r=n?new Date(n).getTime():void 0;t&&r&&t>r&&(r=t),null===i||void 0===i||i({from:t,to:r})},className:IL("input")})]})};var AL=n(30667);const RL={CPUCores:"CPUCores",DataSize:"DataSize",InFlightTxCount:"InFlightTxCount"},ML={CPUTimeUs:"CPUTimeUs",EndTime:"EndTime",ReadRows:"ReadRows",ReadBytes:"ReadBytes",UserSID:"UserSID",Duration:"Duration"},LL=e=>Object.values(RL).includes(e),FL=JSON.parse('{"no-data":"No data","filter.text.placeholder":"Search by query text..."}'),zL=JSON.parse('{"no-data":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445","filter.text.placeholder":"\u0418\u0441\u043a\u0430\u0442\u044c \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0430..."}'),BL=(0,We.wZ)("ydb-diagnostics-top-queries",{ru:zL,en:FL}),UL=Me("kv-top-queries"),HL=e=>{let{path:t,type:n}=e;const r=Ao(),i=Ca(),o=_a(),{autorefresh:s}=Do((e=>e.schema)),l=Do((e=>e.executeTopQueries)),{currentData:c,isFetching:u,error:d}=AL.MU.useGetTopQueriesQuery({database:t,filters:l},{pollingInterval:s}),h=u&&void 0===c,{result:p}=c||{},f=[WA,qA,ZA,JA,YA,KA,QA].map((e=>{return{...e,sortable:(t=e.name,Object.values(ML).includes(t))};var t})),m=a.useCallback((e=>{const{QueryText:t}=e;r((0,TA.B8)({input:t}));const n=(0,Ta.mB)(i),a=fs({...n,[us.bS]:us.m2.query,[ds.queryTab]:us._0.newQuery});o.push(a)}),[r,o,i]),g=e=>{r((0,AL.Im)({text:e}))},v=e=>{r((0,AL.Im)(e))};return(0,Le.jsxs)($c,{children:[(0,Le.jsx)($c.Controls,{children:(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(Yc,{value:l.text,onChange:g,placeholder:BL("filter.text.placeholder"),className:UL("search")}),(0,Le.jsx)(DL,{from:l.from,to:l.to,onChange:v})]})}),(0,Le.jsx)($c.Table,{loading:h,children:d?(0,Le.jsx)("div",{className:"error",children:(0,BI.fV)(d)}):!p||(0,pj.Jp)(n)?BL("no-data"):(0,Le.jsx)(qc,{columnsWidthLSKey:MA,columns:f,data:p,settings:AA,onRowClick:m,rowClassName:()=>UL("row")})})]})};var VL=n(9345),GL=n(58660);const WL=JSON.parse('{"no-data":"No data","filters.mode.immediate":"Immediate","filters.mode.history":"Historical","description":"Historical data only tracks shards with CPU load over 70%"}'),qL=JSON.parse('{"no-data":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445","filters.mode.immediate":"\u041c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0435","filters.mode.history":"\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435","description":"\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0448\u0430\u0440\u0434\u0430\u0445 \u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 CPU \u0432\u044b\u0448\u0435 70%"}'),ZL=(0,We.wZ)("ydb-diagnostics-top-shards",{ru:qL,en:WL}),YL=e=>{let{value:t,onChange:n}=e;const r=t.mode===GL.F.Immediate?void 0:t.from,i=t.mode===GL.F.Immediate?void 0:t.to;return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsxs)(Oo,{value:t.mode,onUpdate:e=>{if(!((e,t)=>Object.values(e).includes(t))(GL.F,e)){const t=Object.values(GL.F).join(", ");throw new Error('Unexpected TopShards mode "'.concat(e,'". Should be one of: ').concat(t))}n({mode:e})},children:[(0,Le.jsx)(Oo.Option,{value:GL.F.Immediate,children:ZL("filters.mode.immediate")}),(0,Le.jsx)(Oo.Option,{value:GL.F.History,children:ZL("filters.mode.history")})]}),(0,Le.jsx)(DL,{from:r,to:i,onChange:e=>{n({mode:GL.F.History,...e})}})]})},KL=Me("top-shards"),QL={...Lo.LE,dynamicRender:!1,externalSort:!0,disableSortReset:!0,defaultOrder:Hc.ZP.DESCENDING},XL="CPUCores",$L="PeakTime",JL="IntervalEnd";function eF(e){return e?(0,ks.o0)(new Date(e).getTime()):"\u2013"}function tF(e){return e?e.split(",").map((e=>({columnId:e,order:Hc.ZP.DESCENDING}))):void 0}function nF(e){return e.to=Date.now(),e.from=e.to-1e3*Lo.RQ,e}const rF=e=>{let{tenantPath:t,type:n}=e;const r=Ao(),i=Ca(),{autorefresh:o,currentSchemaPath:s}=Do((e=>e.schema)),l=Do((e=>e.shardsWorkload)),[c,u]=a.useState((()=>{const e={...l};return e.mode||(e.mode=GL.F.Immediate),e.from||e.to||nF(e),e})),[d,h]=a.useState(XL),{data:p,isFetching:f,error:m}=VL.Ag.useSendShardQueryQuery({database:t,path:s,sortOrder:(g=d,g?g.split(",").map((e=>({columnId:e,order:"DESC"}))):void 0),filters:c},{pollingInterval:o});var g;const v=f&&void 0===p,{result:y}=null!==p&&void 0!==p?p:{},b=e=>{h(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(Array.isArray(e)?e:[e]).map((e=>{let{columnId:t}=e;return t})).join(",")}(e))},x=e=>{const t={...e};if(!l.from&&!l.to&&!e.from&&!e.to)switch(e.mode){case GL.F.Immediate:t.from=t.to=void 0;break;case GL.F.History:nF(t)}r((0,VL.K2)(e)),u((e=>({...e,...t})))},w=a.useMemo((()=>{const e=((e,t)=>[fR(e,t),mR,gR,vR,yR,xR])(t,i),n=e.map((e=>({...e,sortable:LL(e.name)})));return c.mode===GL.F.History&&(n.splice(5,0,{name:$L,render:e=>{let{row:t}=e;return eF(t.PeakTime)},sortable:!1}),n.push({name:JL,render:e=>{let{row:t}=e;return eF(t.IntervalEnd)}})),n}),[c.mode,t,i]);return(0,Le.jsxs)($c,{children:[(0,Le.jsx)($c.Controls,{children:(0,Le.jsx)(YL,{value:c,onChange:x})}),c.mode===GL.F.History&&(0,Le.jsx)("div",{className:KL("hint"),children:ZL("description")}),(0,Le.jsx)($c.Table,{loading:v,children:m?(0,Le.jsx)("div",{className:"error",children:(0,BI.fV)(m)}):!y||(0,pj.Jp)(n)?ZL("no-data"):(0,Le.jsx)(qc,{columnsWidthLSKey:aR,columns:w,data:y,settings:QL,onSort:b,sortOrder:tF(d)})})]})},iF=Me("kv-tenant-diagnostics");const oF=function(e){const t=a.useRef(null),n=Ao(),{currentSchemaPath:r,wasLoaded:i}=Do((e=>e.schema)),{diagnosticsTab:o=us.qQ.overview}=Do((e=>e.tenant)),[s]=mc({name:Gl,backend:Gl,clusterName:Gl}),{name:l}=s,c=(0,pj.dw)(e.type)?r:l,u=(0,pj.dw)(e.type)||r===l,d=a.useMemo((()=>u?hM:SM(e.type)),[e.type,u]),h=a.useMemo((()=>{if(i){let e=d.find((e=>e.id===o));return e||(e=d[0]),e&&e.id!==o&&(e=>{n((0,Gk.$v)(e))})(e.id),e}}),[d,o,i]);return i?(0,Le.jsxs)("div",{className:iF(),ref:t,children:[h?(0,Le.jsx)(oe,{children:(0,Le.jsx)("title",{children:h.title})}):null,(0,Le.jsx)("div",{className:iF("header-wrapper"),children:(0,Le.jsxs)("div",{className:iF("tabs"),children:[(0,Le.jsx)(wt,{size:"l",items:d,activeTab:null===h||void 0===h?void 0:h.id,wrapTo:(e,t)=>{let{id:n}=e;const r=(0,Ta.ax)(Ta.ZP.tenant,void 0,{...s,[ds.diagnosticsTab]:n});return(0,Le.jsx)(bl,{to:r,className:iF("tab"),children:t},n)},allowNotSelected:!0}),(0,Le.jsx)(Cj,{})]})}),(0,Le.jsx)("div",{className:iF("page-wrapper"),children:(()=>{const{type:n}=e,i=c;switch(null===h||void 0===h?void 0:h.id){case us.qQ.overview:return(0,Le.jsx)(XR,{type:n,tenantName:i,additionalTenantProps:e.additionalTenantProps,additionalNodesProps:e.additionalNodesProps});case us.qQ.schema:return(0,Le.jsx)(bj,{path:r,type:n,withFamilies:!0});case us.qQ.topQueries:return(0,Le.jsx)(HL,{path:i,type:n});case us.qQ.topShards:return(0,Le.jsx)(rF,{tenantPath:i,type:n});case us.qQ.nodes:return(0,Le.jsx)(rh,{path:r,additionalNodesProps:e.additionalNodesProps,parentContainer:t.current});case us.qQ.tablets:return(0,Le.jsx)(oN,{path:r});case us.qQ.storage:return(0,Le.jsx)(d_,{tenant:i,parentContainer:t.current});case us.qQ.network:return(0,Le.jsx)(eL,{path:i});case us.qQ.describe:return(0,Le.jsx)(xI,{tenant:i,type:n});case us.qQ.hotKeys:return(0,Le.jsx)(jM,{path:r});case us.qQ.graph:return(0,Le.jsx)(uj,{path:r});case us.qQ.consumers:return(0,Le.jsx)(gI,{path:r,type:n});case us.qQ.partitions:return(0,Le.jsx)(jL,{path:r});default:return(0,Le.jsx)("div",{children:"No data..."})}})()})]}):(0,Le.jsx)(N_,{size:"l"})},aF=JSON.parse('{"controls.query-mode-selector_type":"Query type:","tabs.newQuery":"Query","tabs.history":"History","tabs.saved":"Saved","history.empty":"History is empty","saved.empty":"There are no saved queries","delete-dialog.header":"Delete query","delete-dialog.question":"Are you sure you want to delete query","delete-dialog.delete":"Delete","delete-dialog.cancel":"Cancel","preview.title":"Preview","preview.not-available":"Preview is not available","preview.close":"Close preview","method-description.script":"For YQL-scripts combining DDL and DML.\\nAPI call: schema.scripting","method-description.scan":"Read-only queries, potentially reading a lot of data.\\nAPI call: table.ExecuteScan","method-description.data":"DML queries for changing and fetching data in serialization mode.\\nAPI call: table.executeDataQuery","method-description.query":"Any query. An experimental API call supposed to replace all existing methods.\\nAPI Call: query.ExecuteScript","method-description.pg":"Queries in postgresql syntax.\\nAPI call: query.ExecuteScript","query-duration.description":"Duration of server-side query execution","action.send-query":"Send query","action.send-selected-query":"Send selected query","action.previous-query":"Previous query in history","action.next-query":"Next query in history"}'),sF=(0,We.wZ)("ydb-query-editor",{en:aF}),lF=Me("ydb-queries-history"),cF="queriesHistoryTableColumnsWidth";const uF=function(e){let{changeUserInput:t}=e;const n=Ao(),[r,i]=Fo(),o=[...Do(TA.qV)].reverse(),a=[{name:"queryText",header:"Query Text",render:e=>{let{row:t}=e;return(0,Le.jsx)("div",{className:lF("query"),children:(0,Le.jsx)(kA,{value:t.queryText,maxQueryHeight:DA})})},sortable:!1,width:600},{name:"syntax",header:"Syntax",render:e=>{let{row:t}=e;return t.syntax===BI.jM.pg?"PostgreSQL":"YQL"},sortable:!1,width:200}];return(0,Le.jsx)("div",{className:lF(),children:(0,Le.jsx)(qc,{columnsWidthLSKey:cF,columns:a,data:o,settings:AA,emptyDataMessage:sF("history.empty"),onRowClick:e=>{return(o=e).syntax===BI.jM.pg&&r!==BI.wZ.pg?i(BI.wZ.pg):o.syntax!==BI.jM.pg&&r===BI.wZ.pg&&i(BI.wZ.script),t({input:o.queryText}),void n((0,Gk.jk)(us._0.newQuery));var o},rowClassName:()=>lF("table-row")})})};function dF(){return(0,Le.jsx)("div",{style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,Le.jsx)(Di,{size:"l"})})}const hF=function(e,t,n){const r=a.lazy((()=>e().then((e=>({default:e[t]}))).catch((e=>({default:()=>(0,Le.jsx)($e,{error:e})}))))),i=(e,t)=>{const i=Be("ErrorBoundary");return(0,Le.jsx)(i,{children:(0,Le.jsx)(a.Suspense,{fallback:null!==n&&void 0!==n?n:(0,Le.jsx)(dF,{}),children:(0,Le.jsx)(r,{ref:t,...e})})})};return i.displayName=t,a.forwardRef(i)}((async()=>{const e=(await Promise.all([n.e(1551),n.e(3757)]).then(n.bind(n,93757))).default,{registerLanguages:t}=await Promise.all([n.e(1551),n.e(8424),n.e(4842)]).then(n.bind(n,14842));return t(),{Editor:e}}),"Editor"),pF=new Set(["PlanNodeId","PlanNodeType","Node Type","Plans"]);function fF(e){const t=[];if(e.Operators){const n=[];for(const t of e.Operators){const e={name:t.Name,items:[]};for(const[n,r]of Object.entries(t)){if("Name"===n)continue;const t=Array.isArray(r)?r.join(", "):r;e.items.push({name:n,value:t})}n.push(e)}t.push({group:"Operators",stats:n})}if("Connection"===e.PlanNodeType){const n=[];for(const[t,r]of Object.entries(e))pF.has(t)||n.push({name:t,value:String(r)});n.length>0&&t.push({group:"Attributes",stats:n})}return t}function mF(e){switch(e.PlanNodeType){case"Connection":return"connection";case"ResultSet":return"result";case"Query":return"query";default:return"stage"}}const gF={v2:"0.2"},vF=Object.values(gF),yF=e=>{const{plan:t,ast:n}=(0,BI.CC)(e);if(!t)return{ast:n};const{tables:r,meta:i,Plan:o}=(0,BI.y5)(t);if(-1===vF.indexOf(i.version))return{plan:{pristine:t,version:i.version},ast:n};let a=[],s=[];if(o){const e=function(e){const t=[],n=[],r=e,i={name:String(r.PlanNodeId),data:{id:r.PlanNodeId,type:mF(r),name:r["Node Type"]}};return t.push(i),function e(){let r=arguments.length>1?arguments[1]:void 0;(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach((i=>{var o;const a={name:String(i.PlanNodeId),data:{id:i.PlanNodeId,type:mF(i),name:i["Node Type"],operators:null===(o=i.Operators)||void 0===o?void 0:o.map((e=>e.Name)),stats:fF(i),tables:i.Tables}};t.push(a),n.push({from:r,to:a.name}),e(i.Plans,a.name)}))}(r.Plans,i.name),{nodes:t,links:n}}(o);a=e.links,s=e.nodes}return{plan:{links:a,nodes:s,tables:r,version:i.version,pristine:t},ast:n}},bF=Dl.h.injectEndpoints({endpoints:e=>({explainQuery:e.mutation({queryFn:async e=>{let{query:t,database:n,mode:r}=e,i="explain",o=BI.jM.yql;"pg"===r?(i="explain-query",o=BI.jM.pg):r&&(i="explain-".concat(r));try{const e=await window.api.getExplainQuery(t,n,i,o);if((0,BI.gW)(e))return{error:e};return{data:yF(e)}}catch(a){return{error:a}}}})}),overrideExisting:"throw"});var xF=n(62729);const wF=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M10.97 12.53a.75.75 0 1 0 1.06-1.06l-3.5-3.5a.75.75 0 0 0-1.06 0l-3.5 3.5a.75.75 0 1 0 1.06 1.06L8 9.56l2.97 2.97Zm0-5a.75.75 0 1 0 1.06-1.06l-3.5-3.5a.75.75 0 0 0-1.06 0l-3.5 3.5a.75.75 0 0 0 1.06 1.06L8 4.56l2.97 2.97Z",clipRule:"evenodd"}));let SF;!function(e){e.triggerCollapse="triggerCollapse",e.triggerExpand="triggerExpand",e.clear="clear"}(SF||(SF={}));const _F=e=>{localStorage.setItem(e,"true")},CF=e=>{localStorage.removeItem(e)};function EF(e){return function(t,n){switch(n){case SF.triggerCollapse:return _F(e),{...t,triggerCollapse:!0,triggerExpand:!1,collapsed:!0};case SF.triggerExpand:return CF(e),{...t,triggerCollapse:!1,triggerExpand:!0,collapsed:!1};case SF.clear:return CF(e),{triggerCollapse:!1,triggerExpand:!1,collapsed:!1};default:return t}}}const TF=Me("kv-pane-visibility-button");function OF(e){let{onCollapse:t,onExpand:n,isCollapsed:r,initialDirection:i="top",className:o}=e;return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(Ie.z,{view:"flat-secondary",onClick:t,className:TF({hidden:r},o),title:"Collapse",children:(0,Le.jsx)(we.J,{data:wF,className:TF({[i]:!0})})}),(0,Le.jsx)(Ie.z,{view:"flat-secondary",onClick:n,className:TF({hidden:!r},o),title:"Expand",children:(0,Le.jsx)(we.J,{data:wF,className:TF({[i]:!0},"rotate")})})]})}const NF=Me("kv-divider");const kF=function(){return(0,Le.jsx)("div",{className:NF()})},jF=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M4.5 3A1.5 1.5 0 0 0 3 4.5v1.75a.75.75 0 0 1-1.5 0V4.5a3 3 0 0 1 3-3h1.75a.75.75 0 0 1 0 1.5H4.5ZM9 2.25a.75.75 0 0 1 .75-.75h1.75a3 3 0 0 1 3 3v1.75a.75.75 0 0 1-1.5 0V4.5A1.5 1.5 0 0 0 11.5 3H9.75A.75.75 0 0 1 9 2.25ZM2.25 9a.75.75 0 0 1 .75.75v1.75A1.5 1.5 0 0 0 4.5 13h1.75a.75.75 0 0 1 0 1.5H4.5a3 3 0 0 1-3-3V9.75A.75.75 0 0 1 2.25 9Zm11.5 0a.75.75 0 0 1 .75.75v1.75a3 3 0 0 1-3 3H9.75a.75.75 0 0 1 0-1.5h1.75a1.5 1.5 0 0 0 1.5-1.5V9.75a.75.75 0 0 1 .75-.75Z",clipRule:"evenodd"}));var IF=n(56963);const PF=function(e){let{disabled:t}=e;const n=Ao();return(0,Le.jsx)(Ie.z,{onClick:()=>{n((0,IF.Xl)())},view:"flat-secondary",disabled:t,title:"Fullscreen",children:(0,Le.jsx)(we.J,{data:jF})})};var DF;function AF(){return AF=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},AF.apply(this,arguments)}const RF=function(e){return a.createElement("svg",AF({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16"},e),DF||(DF=a.createElement("path",{fill:"currentColor",d:"M13.383 6.5a.309.309 0 00.305-.305V5.18a.328.328 0 00-.305-.305H11.25V2.742a.328.328 0 00-.305-.304H9.93a.309.309 0 00-.305.304v3.149c0 .355.254.609.61.609h3.148zm-7.008-.61V2.743a.328.328 0 00-.305-.304H5.055a.309.309 0 00-.305.304v2.133H2.617a.309.309 0 00-.304.305v1.015c0 .178.126.305.304.305h3.149c.33 0 .609-.254.609-.61zm0 7.618v-3.149c0-.33-.28-.609-.61-.609H2.618a.309.309 0 00-.304.305v1.015c0 .178.126.305.304.305H4.75v2.133c0 .178.127.305.305.305H6.07a.309.309 0 00.305-.305zm4.875 0v-2.133h2.133a.309.309 0 00.305-.305v-1.015a.328.328 0 00-.305-.305h-3.149c-.355 0-.609.28-.609.61v3.148c0 .178.127.305.305.305h1.015a.309.309 0 00.305-.305z"})))},MF=Me("kv-fullscreen");class LF extends a.Component{constructor(e){super(e),this.modalRoot=null,this.el=void 0,this.el=document.createElement("div")}componentDidMount(){this.modalRoot=document.getElementById("fullscreen-root"),this.modalRoot&&this.modalRoot.appendChild(this.el)}componentWillUnmount(){this.modalRoot&&this.modalRoot.removeChild(this.el)}render(){return Dt.createPortal(this.props.children,this.el)}}const FF=function(e){const t=Ao(),n=a.useCallback((()=>{t((0,IF.vj)())}),[t]);return a.useEffect((()=>{const e=e=>{"Escape"===e.key&&n()};return document.addEventListener("keydown",e,!1),()=>{document.removeEventListener("keydown",e,!1)}}),[n]),(0,Le.jsx)(LF,{children:(0,Le.jsxs)("div",{className:MF(null,e.className),children:[(0,Le.jsx)(Ie.z,{onClick:n,view:"raised",className:MF("close-button"),children:(0,Le.jsx)(we.J,{data:RF})}),e.children]})})},zF=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM6.44 4.54c.43-.354.994-.565 1.56-.565 1.217 0 2.34.82 2.34 2.14 0 .377-.079.745-.298 1.1-.208.339-.513.614-.875.867-.217.153-.326.257-.379.328-.038.052-.038.07-.038.089a.75.75 0 0 1-1.5 0c0-.794.544-1.286 1.056-1.645.28-.196.402-.332.46-.425a.543.543 0 0 0 .073-.313c0-.3-.243-.641-.839-.641a.997.997 0 0 0-.608.224c-.167.137-.231.286-.231.417a.75.75 0 0 1-1.5 0c0-.673.345-1.22.78-1.577ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z",clipRule:"evenodd"}));var BF=n(80518),UF=n(96261),HF=n(52369);const VF=Me("kv-query-execution-status"),GF=e=>{let t,n,{className:r,error:i}=e;if((0,HF.IZ)(i)&&"ECONNABORTED"===i.code)t=(0,Le.jsx)(we.J,{data:zF}),n="Connection aborted";else{const e=Boolean(i);t=(0,Le.jsx)(we.J,{data:e?BF.Z:UF.Z,className:VF("result-status-icon",{error:e})}),n=e?"Failed":"Completed"}return(0,Le.jsxs)("div",{className:VF(null,r),children:[t,n]})},WF=a.memo((function(e){const{className:t,value:n}=e,r=Ao();return a.useEffect((()=>()=>{r((0,vs.i8)())}),[r]),(0,Le.jsx)("span",{className:QF("cell",t),onClick:e=>r((0,vs.hJ)(e.target,n,"cell")),children:n})})),qF=JSON.parse('{"empty":"Table is empty"}'),ZF=JSON.parse('{"empty":"\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0443\u0441\u0442\u0430\u044f"}'),YF=(0,We.wZ)("ydb-query-result-table",{ru:ZF,en:qF}),KF={...Lo.LE,stripedRows:!0,dynamicRenderType:"variable",dynamicItemSizeGetter:()=>40},QF=Me("ydb-query-result-table"),XF=(e,t)=>t,$F=e=>{const{columns:t,data:n,settings:r,...i}=e,o=a.useMemo((()=>(0,BI.Xh)(n)),[n]),s=a.useMemo((()=>t?(e=>e.length?e.map((e=>{let{name:t,type:n}=e;const r=(0,BI.T$)(n);return{name:t,align:"number"===r?Hc.ZP.RIGHT:Hc.ZP.LEFT,sortAccessor:e=>{const n=e[t];return void 0===n||null===n?null:"number"===r?BigInt(n):n},render:e=>{let{row:n}=e;return(0,Le.jsx)(WF,{value:String(n[t])})}}})):[])(t):(e=>e.length?Object.keys(e[0]).map((t=>({name:t,align:(0,Ou.kE)(e[0][t])?Hc.ZP.RIGHT:Hc.ZP.LEFT,sortAccessor:e=>(0,Ou.kE)(e[t])?Number(e[t]):e[t],render:e=>{let{row:n}=e;return(0,Le.jsx)(WF,{value:String(n[t])})}}))):[])(o)),[o,t]),l=a.useMemo((()=>({...KF,...r})),[r]);return Array.isArray(n)?s.length?(0,Le.jsx)(qc,{data:o,columns:s,settings:l,rowKey:XF,...i}):(0,Le.jsx)("div",{className:QF("message"),children:YF("empty")}):null},JF=JSON.parse('{"default_collapse_label":"Show less","default_expand_label":"Show more","chars_count":[" ({{count}} symbol)"," ({{count}} symbols)"," ({{count}} symbols)"," ({{count}} symbols)"]}'),ez=JSON.parse('{"default_collapse_label":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435","default_expand_label":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0449\u0451","chars_count":[" ({{count}} \u0441\u0438\u043c\u0432\u043e\u043b)"," ({{count}} \u0441\u0438\u043c\u0432\u043e\u043b\u0430)"," ({{count}} \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432)"," ({{count}} \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432)"]}'),tz=(0,We.wZ)("ydb-shorty-string",{ru:ez,en:JF}),nz=Me("kv-shorty-string");function rz(e){let{value:t="",limit:n=200,strict:r=!1,displayLength:i=!0,render:o=(e=>e),onToggle:s,expandLabel:l=tz("default_expand_label"),collapseLabel:c=tz("default_collapse_label")}=e;const[u,d]=a.useState(!1),h=(u?c:l)+(i&&!u?tz("chars_count",{count:t.length}):""),p=t.length>n+(r?0:h.length),f=u||!p?t:t.slice(0,n-4)+"\xa0...";return(0,Le.jsxs)("div",{className:nz(),children:[o(f),p?(0,Le.jsx)(si,{className:nz("toggle"),href:"#",onClick:e=>{e.stopPropagation(),e.preventDefault(),d((e=>!e)),null===s||void 0===s||s()},children:h}):null]})}const iz=["S_FATAL","S_ERROR","S_WARNING","S_INFO"];function oz(e){return function(e){return!!e&&void 0!==iz[e]}(e)?iz[e]:"S_INFO"}const az=Me("kv-result-issues"),sz=Me("kv-issues"),lz=Me("kv-issue");function cz(e){let{data:t}=e;const[n,r]=a.useState(!1),i="string"===typeof t||null===t||void 0===t?void 0:t.issues,o=Array.isArray(i)&&i.length>0;return(0,Le.jsxs)("div",{className:az(),children:[(0,Le.jsxs)("div",{className:az("error-message"),children:[(()=>{let e;if("string"===typeof t)e=t;else{var n,r;const i=oz(null===t||void 0===t||null===(n=t.error)||void 0===n?void 0:n.severity);e=(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(mz,{severity:i})," ",(0,Le.jsx)("span",{className:az("error-message-text"),children:null===t||void 0===t||null===(r=t.error)||void 0===r?void 0:r.message})]})}return e})(),o&&(0,Le.jsx)(Ie.z,{view:"normal",onClick:()=>r(!n),children:n?"Hide details":"Show details"})]}),o&&n&&(0,Le.jsx)(uz,{issues:i})]})}function uz(e){let{issues:t}=e;const n=null===t||void 0===t?void 0:t.reduce(((e,t)=>{var n;const r=null!==(n=t.severity)&&void 0!==n?n:10;return Math.min(e,r)}),10);return(0,Le.jsx)("div",{className:sz(null),children:null===t||void 0===t?void 0:t.map(((e,t)=>(0,Le.jsx)(dz,{issue:e,expanded:e===n},t)))})}function dz(e){let{issue:t,level:n=0}=e;const[r,i]=a.useState(!0),o=oz(t.severity),s=function(e){const{position:t={}}=e;if(!t)return!1;const{file:n,row:r,column:i}=t;return"".concat(n?"file:":"").concat(r,":").concat(i)}(t),l=t.issues,c=Array.isArray(l)&&l.length>0,u=r?"bottom":"right";return(0,Le.jsxs)("div",{className:lz({leaf:!c,"has-issues":c}),children:[(0,Le.jsxs)("div",{className:lz("line"),children:[c&&(0,Le.jsx)(Ie.z,{view:"flat-secondary",onClick:()=>i(!r),className:lz("arrow-toggle"),children:(0,Le.jsx)(_e,{direction:u,size:16})}),(0,Le.jsx)(mz,{severity:o}),(0,Le.jsxs)("span",{className:lz("message"),children:[s&&(0,Le.jsx)("span",{className:lz("place-text"),title:"Position",children:s}),(0,Le.jsx)("div",{className:lz("message-text"),children:(0,Le.jsx)(rz,{value:t.message,expandLabel:"Show full message"})})]}),t.issue_code?(0,Le.jsxs)("span",{className:lz("code"),children:["Code: ",t.issue_code]}):null]}),c&&r&&(0,Le.jsx)("div",{className:lz("issues"),children:(0,Le.jsx)(hz,{issues:l,level:n+1,expanded:r})})]})}function hz(e){const{issues:t,level:n,expanded:r}=e;return(0,Le.jsx)("div",{className:lz("list"),children:t.map(((e,t)=>(0,Le.jsx)(dz,{issue:e,level:n,expanded:r},t)))})}const pz={S_INFO:Cl.Z,S_WARNING:El,S_ERROR:Tl.Z,S_FATAL:PO.Z},fz=Me("yql-issue-severity");function mz(e){let{severity:t}=e;const n=t.slice(2).toLowerCase();return(0,Le.jsxs)("span",{className:fz({severity:n}),children:[(0,Le.jsx)(we.J,{className:fz("icon"),data:pz[t]}),(0,Le.jsx)("span",{className:fz("title"),children:n})]})}const gz=Me("ydb-query-duration"),vz=e=>{let{duration:t}=e;if(!t)return null;const n=(0,Ej.tt)((0,Ej.BO)(t),1);return(0,Le.jsx)("span",{className:gz(),children:(0,Le.jsx)(Po,{className:gz("item-with-popover"),contentClassName:gz("popover"),text:n,popoverContent:sF("query-duration.description")})})};function yz(e){return e.replaceAll("\\","\\\\").replaceAll("\n","\\n").replaceAll("\r","\\r").replaceAll("\t","\\t")}const bz=Me("ydb-query-execute-result"),xz={result:"result",stats:"stats"},wz=[{value:xz.result,content:"Result"},{value:xz.stats,content:"Stats"}];function Sz(e){var t,n,r;let{data:i,stats:o,error:s,isResultsCollapsed:l,onCollapseResults:c,onExpandResults:u}=e;const[d,h]=a.useState(0),[p,f]=a.useState(xz.result),m=Do((e=>e.fullscreen)),g=Ao(),v=null===i||void 0===i||null===(t=i.resultSets)||void 0===t?void 0:t.length,y=v&&v>0,b=y?null===i||void 0===i||null===(n=i.resultSets)||void 0===n?void 0:n[d].result:null===i||void 0===i?void 0:i.result,x=y?null===i||void 0===i||null===(r=i.resultSets)||void 0===r?void 0:r[d].columns:null===i||void 0===i?void 0:i.columns,w=function(e){if(null===e||void 0===e||!e.length)return"";const t=Object.keys(e[0]),n=[t.map(yz).join("\t")];for(const r of e){const e=[];for(const n of t){const t=r[n];e.push(yz("object"===typeof t?JSON.stringify(t):"".concat(t)))}n.push(e.join("\t"))}return n.join("\n")}(b),S=!w.length,_=(0,BI.dt)(s);a.useEffect((()=>()=>{g((0,IF.vj)())}),[g]);const C=(e,t)=>(0,Le.jsx)($F,{data:e,columns:t,settings:{sortable:!1}}),E=()=>{const e=(0,Le.jsx)(bs(),{data:o,isExpanded:()=>!0,className:bz("inspector"),searchOptions:{debounceTime:300}});return(0,Le.jsxs)(a.Fragment,{children:[e,m&&(0,Le.jsx)(FF,{children:(0,Le.jsx)("div",{className:bz("inspector",{fullscreen:!0}),children:e})})]})},T=()=>{const e=(0,Le.jsxs)(a.Fragment,{children:[y&&v>1&&(0,Le.jsx)("div",{children:(0,Le.jsx)(wt,{className:bz("result-tabs"),size:"l",items:Ed(v).map((e=>({id:String(e),title:"Result #".concat(e+1)}))),activeTab:String(d),onSelectTab:e=>h(Number(e))})}),(0,Le.jsx)("div",{className:bz("result"),children:C(b,x)})]});return(0,Le.jsxs)(a.Fragment,{children:[e,m&&(0,Le.jsx)(FF,{children:(0,Le.jsx)("div",{className:bz("result-fullscreen-wrapper"),children:e})})]})},O=()=>{if(!_)return null;if("object"===typeof _){const e=(0,Le.jsx)(cz,{data:_});return(0,Le.jsxs)(a.Fragment,{children:[e,m&&(0,Le.jsx)(FF,{children:(0,Le.jsx)("div",{className:bz("result-fullscreen-wrapper",bz("result")),children:e})})]})}return(0,Le.jsx)("div",{className:bz("error"),children:_})};return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsxs)("div",{className:bz("controls"),children:[(0,Le.jsxs)("div",{className:bz("controls-right"),children:[(0,Le.jsx)(GF,{error:s}),o&&!s&&(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(vz,{duration:null===o||void 0===o?void 0:o.DurationUs}),(0,Le.jsx)(kF,{}),(0,Le.jsx)(Oo,{options:wz,value:p,onUpdate:e=>{f(e)}})]})]}),(0,Le.jsxs)("div",{className:bz("controls-left"),children:[(0,Le.jsx)(pl,{text:w,view:"flat-secondary",title:"Copy results",disabled:S}),(0,Le.jsx)(PF,{}),(0,Le.jsx)(OF,{onCollapse:c,onExpand:u,isCollapsed:l,initialDirection:"bottom"})]})]}),p!==xz.result||s?(0,Le.jsxs)("div",{className:bz("result"),children:[p===xz.stats&&!s&&E(),O()]}):T()]})}var _z=n(14702);function Cz(e,t){const n=document.createElement("button");return n.innerText=e,n.className="paranoid-button paranoid-button_".concat(t),n}const Ez="ParanoidC";function Tz(e,t){const n=document.getElementById(e);if(!n)throw new Error("Not found element with id ".concat(e));n.style.position="relative";const r=Cz("+","plus"),i=Cz("-","minus"),o=Cz("1:1","normal"),a=function(e,t){const n=document.createElement("canvas");n.setAttribute("id",Ez),n.setAttribute("width",String(e.offsetWidth)),n.setAttribute("height",String(e.offsetHeight)),e.appendChild(n);const r=t.colors||{};return new _z.fabric.Canvas(Ez,{selection:!1,backgroundColor:r.fill,defaultCursor:"grab"})}(n,t),s=function(e,t,n,r){const i=document.createElement("div");i.className="paranoid-controls";const o=document.createElement("style");return o.innerText=function(e){return"\n .paranoid-controls {\n position: absolute;\n top: 10px;\n right: 10px;\n }\n .paranoid-button {\n margin-left: 12px;\n border-radius: 4px;\n height: 36px;\n width: 36px;\n line-height: 13px;\n font-family: Arial, sans-serif;\n font-size: 13px;\n text-align: center;\n padding: 0;\n box-shadow: 0px 5px 6px ".concat(e.nodeShadow,";\n border: 1px solid ").concat(e.buttonBorderColor,";\n background-color: ").concat(e.nodeFill,";\n color: ").concat(e.textColor,";\n cursor: pointer;\n }\n .paranoid-button:focus {\n outline: none;\n }\n .paranoid-button:active {\n border: 1px solid ").concat(e.buttonBorderColor,";\n }\n .paranoid-button_plus {\n margin-left: 0;\n border-left: none;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .paranoid-button_minus {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n")}(r),i.appendChild(o),i.appendChild(t),i.appendChild(e),i.appendChild(n),i}(r,i,o,t.colors);return n.appendChild(s),function(e,t,n,r,i){const o=i.minZoom||.2,a=i.zoomStep||.2,s=i.maxZoom||2,l=i.startZoom||1;e.setZoom(l),n.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation();let n=e.getZoom();n-=a,n<o&&(n=o),e.setZoom(n)})),t.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation();let n=e.getZoom();n+=a,n>s&&(n=s),e.setZoom(n)})),r.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),e.setZoom(1)}))}(a,r,i,o,t),function(e){let t=!1,n=0,r=0;e.on("mouse:down",(i=>{i.target||(e.setCursor("grabbing"),t=!0,n=i.pointer.x,r=i.pointer.y)})),e.on("mouse:move",(i=>{t&&(e.viewportTransform[4]+=i.pointer.x-n,e.viewportTransform[5]+=i.pointer.y-r,e.setCursor("grabbing"),e.getObjects().forEach((e=>e.setCoords())),e.requestRenderAll(),n=i.pointer.x,r=i.pointer.y)})),e.on("mouse:up",(()=>{t&&(e.setCursor("grab"),t=!1)}))}(a),a}const Oz={success:"rgba(59, 201, 53, 0.75)",error:"#ff0400",warning:"#ff7700",errorBackground:"rgba(235,50,38,0.08)",warningBackground:"rgba(255,219,77,0.3)",mute:"rgba(0,0,0,0.15)",stroke:"rgba(0,0,0,0.3)",fill:"#fafafa",nodeFill:"#ffffff",nodeShadow:"rgba(0,0,0,0.15)",titleColor:"#000000",textColor:"rgba(0,0,0,0.7)",buttonBorderColor:"rgba(0,0,0,0.07)",groupBorderColor:"rgba(2, 123, 243, 0.14)",groupFill:"rgba(2, 123, 243, 0.08)",titleHoverColor:"#004080",nodeHover:"#f3f3f3",specialHover:"rgba(2,123,243,1)"},Nz={hasControls:!1,hasRotatingPoint:!1,lockMovementX:!0,lockMovementY:!0,selectable:!1,hoverCursor:"default",subTargetCheck:!0},kz="Arial, sans-serif",jz=13,Iz=1.38;var Pz;!function(e){e.Group="GROUP"}(Pz||(Pz={}));var Dz=n(69886),Az=n.n(Dz);class Rz{constructor(e,t){this.children=[],this.members=[],this.data=e,this.canvasNode=t}add(e,t){const n=new Rz(e,t);n.addParent(this),this.children.push(n)}addNode(e){e.addParent(this),this.children.push(e)}addNodes(e){e.forEach((e=>{e.addParent(this)})),this.children=this.children.concat(e)}addCanvasNode(e){this.canvasNode=e}addShapeInstance(e){this.shapeInstance=e}hasChildren(){return this.children.length>0}addParent(e){this.parent=e}getLeftSibling(){if(!this.parent)return;const e=this.parent.children.findIndex((e=>e===this));return this.parent.children[e-1]}getRightSibling(){if(!this.parent)return;const e=this.parent.children.findIndex((e=>e===this));return this.parent.children[e+1]}}class Mz{constructor(e){this.nodesWithChildren=[],this.root=e}traverseBF(e){const t=[this.root];for(;t.length>0;){const n=t.shift();n&&(t.push(...n.children),e(n))}}traverseDF(e){const t=[this.root];for(;t.length;){const n=t.shift();let r=!1;n&&(n.children.length>0?t.unshift(...n.children):r=!0,e(n,r))}}traverseByLevels(e){let t=0,n=this.root.children;for(e([this.root],0);n.length>0;)t++,e(n,t),n=n.reduce(((e,t)=>e.concat(t.children)),[])}getTreeDepth(){let e=0;return this.traverseByLevels(((t,n)=>{e=n})),e}setCanvas(e){this.canvas=e}setNodesWithChildren(e){this.nodesWithChildren=e}}class Lz{constructor(e,t){this.nodes=new Map,this.data=e,this.opts=t}parseData(){const e=this.data,t=this.getGroups(e),n=[...e.nodes];t.forEach(((e,t)=>{n.push({name:t,children:e,type:Pz.Group})}));const r=this.findSources(n,e.links);let i=[],o={},a=new Map;return r.forEach((t=>{const r=this.mapNodesToTree(t,n,e.links);o=Object.assign(Object.assign({},r.groups),o),a=new Map([...a,...r.notGroupMemebersChildren]),i.push(r.tree)})),a.forEach(((e,t)=>{o[t]&&o[t].addNodes(e)})),i=i.reduce(((e,t)=>{const n=t.root.data.group;return n?o[n].members.push(t):e.push(t),e}),[]),i}getGroups(e){let{nodes:t}=e;const n=new Map;return t.forEach((e=>{if(e.group){const t=n.get(e.group);t?t.push(e.name):n.set(e.group,[e.name])}})),n}findSources(e,t){const n=t.map((e=>{let{to:t}=e;return t}));return e.reduce(((e,t)=>(n.includes(t.name)||e.push(t),e)),[])}mapNodesToTree(e,t,n){var r;const i=this.createNode(e),o={};this.appendGoup(o,i);const a=t.map((e=>{const t=n.reduce(((t,n)=>(n.from===e.name&&t.push(n.to),t)),[]);return Object.assign(Object.assign({},e),{children:t})})),s=this.getAppender(a,o)(i,(null===(r=a.find((t=>t.name===e.name)))||void 0===r?void 0:r.children)||[]);return{tree:new Mz(i),groups:o,notGroupMemebersChildren:s}}appendGoup(e,t){const n=t.data;t.data.type===Pz.Group&&(e[n.name]=t)}getAppender(e,t){const n=new Map,r=(i,o)=>{const a=o.map((n=>{const i=e.find((e=>{let{name:t}=e;return t===n})),o=this.createNode(i);return this.appendGoup(t,o),i.children.length>0&&r(o,i.children),o})),s=i.data.group,l=Boolean(s),c=[],u=[];if(a.forEach((e=>{const t=e.data.group;l?s===t?c.push(e):u.push(e):c.push(e)})),i.addNodes(c),s&&u.length>0){const e=n.get(s);e?e.push(...u):n.set(s,u)}return n};return r}createNode(e){const t=new Rz(e);return this.nodes.set(e.name,t),t}}class Fz extends CustomEvent{}class zz extends EventTarget{dispatch(e,t){this.dispatchEvent(new Fz(e,{detail:t}))}}const Bz=16,Uz=16,Hz=24;function Vz(e){switch(e){case 0:return 0;case 1:return Uz;default:return Hz}}function Gz(e,t,n,r,i,o){const a=function(e,t,n,r,i,o,a){const s=new Map,l=new Map,c=new Map,u=[];return r.traverseBF((r=>{const{object:i,width:o,height:l}=function(e,t,n,r,i,o,a){var s,l;const c=null!==(s=t.shapeInstance)&&void 0!==s?s:o.node(e,{top:n,left:r},t,i,a),u=null!==(l=t.canvasNode)&&void 0!==l?l:c.getShape();return t.addShapeInstance(c),t.addCanvasNode(u),{object:u,top:n,left:r,width:u.getScaledWidth(),height:u.getScaledHeight()}}(e,r,0,0,t,n,a);s.set(r,{width:o,height:l}),u.push(i)})),function e(t){const{width:n}=s.get(t);let r=n,i=0;if(t.parent&&1===t.parent.children.length&&l.has(t.parent)){const e=l.get(t.parent);r<e&&(r=e)}return l.set(t,r),t.children.length>0&&(i=(t.children.length-1)*Bz+t.children.reduce(((t,n)=>t+e(n)),0),c.set(t,i)),r=Math.max(r,i),l.set(t,r),r}(r.root),function e(t,n,r){let i=r,o=r;for(const a of t){const{width:t,height:r}=s.get(a),u=l.get(a),d=n,h=i+Math.floor(u/2)-Math.floor(t/2);if(a.canvasNode.set({top:d,left:h}),a.canvasNode.setCoords(),i=i+u+Bz,a.children.length){let t=0;const i=c.get(a);i<u&&(t=Math.floor((u-i)/2));const s=n+r+Vz(a.children.length),l=o+t;e(a.children,s,l)}o=i}}([r.root],i,o),u}(e.canvas,r,i,e,t,n,o);let s=0,l=0;return a.forEach((e=>{s=Math.max(s,(e.left||0)+e.getScaledWidth()),l=Math.max(l,(e.top||0)+e.getScaledHeight())})),{nodes:a,bottom:l,right:s}}function Wz(e){const t=e.canvasNode;if(t){const e=t.left||0,n=(t.top||0)+t.getScaledHeight();return{x:e+t.getScaledWidth()/2,y:n}}return{x:0,y:0}}function qz(e){const t=e.canvasNode;if(t){const e=t.left||0,n=t.top||0;return{x:e+t.getScaledWidth()/2,y:n}}return{x:0,y:0}}class Zz{constructor(e,t,n,r){this.canvas=Tz(e,t),this.parser=new Lz(n,t),this.opts=t,this.shapes=r,this.em=new zz,this.trees=[],this.nodes=[],this.links=[],this.listenNodeResize()}render(){requestAnimationFrame((()=>{this.trees=this.parser.parseData(),this.renderIntoCanvas(),this.opts.initialZoomFitsCanvas&&this.zoomObjectsToFitCanvas()}))}destroy(){const e=document.getElementById(Ez);e&&(this.canvas.dispose(),e.remove())}getEventEmmiter(){return this.em}getGraphNode(e){return this.parser.nodes.get(e)}getOpts(){return this.opts}getColors(){return this.opts.colors}getCanvas(){return this.canvas}renderIntoCanvas(){this.nodes.forEach((e=>{this.canvas.remove(e)})),this.nodes=[],this.links.forEach((e=>{this.canvas.remove(e)})),this.links=[];const e=this.canvas.getHeight()||0,t=this.canvas.getWidth()||0;let n=e,r=t;const i=this.opts.initialTop;let o=this.opts.initialLeft;this.trees.forEach((e=>{e.setCanvas(this.canvas);const{nodes:t,bottom:a,right:s}=Gz(e,i,o,this.opts,this.shapes,this.em);o=s+15,n=Math.max(a,n),r=Math.max(s,r),this.nodes.push(...t),this.canvas.add(...t)}));const a=function(e,t){const n=t.colors,r=[];return e.data.links.reduce(((t,i)=>{let{from:o}=i;const a=e.nodes.get(o);if(a&&1===a.children.length&&!r.includes(o)){const{x:e,y:i}=Wz(a),s=new _z.fabric.Path("M ".concat(e," ").concat(i,"\n V ").concat(i+Uz),{fill:"",stroke:n.stroke,strokeWidth:1});t.push(new _z.fabric.Group([s],Object.assign({},Nz))),r.push(o)}if(a&&a.children.length>1&&!r.includes(o)){const{x:e,y:i}=Wz(a),s=Hz/2,l=6,c=[new _z.fabric.Path("M ".concat(e," ").concat(i,"\n V ").concat(i+s),{fill:"",stroke:n.stroke,strokeWidth:1})],{x:u,y:d}=qz(a.children[0]),{x:h,y:p}=qz(a.children[a.children.length-1]),f=new _z.fabric.Path("M ".concat(u," ").concat(d,"\n V ").concat(d-s+l,"\n Q ").concat(u," ").concat(d-s," ").concat(u+l," ").concat(d-s,"\n H ").concat(h-l,"\n Q ").concat(h," ").concat(p-s," ").concat(h," ").concat(p+l-s,"\n V ").concat(p,"\n "),{fill:"",stroke:n.stroke,strokeWidth:1});c.push(f),a.children.forEach(((e,t)=>{if(0===t||t===a.children.length-1)return;const{x:r,y:i}=qz(e),o=new _z.fabric.Path("M ".concat(r," ").concat(i,"\n V ").concat(i-s,"\n "),{fill:"",stroke:n.stroke,strokeWidth:1});c.push(o)})),t.push(new _z.fabric.Group(c,Object.assign({},Nz))),r.push(o)}return t}),[])}(this.parser,this.opts);this.links.push(...a),this.canvas.add(...a),this.bringNodesToFront()}bringNodesToFront(){var e;const t=null===(e=this.parser)||void 0===e?void 0:e.nodes;t&&t.forEach((e=>{e.canvasNode&&e.canvasNode.bringToFront()}))}listenNodeResize(){this.em.addEventListener("node:resize",(()=>{this.renderIntoCanvas()}))}zoomObjectsToFitCanvas(){let e=0,t=0;this.canvas.getObjects().forEach((n=>{const{top:r,left:i,height:o,width:a}=n.getBoundingRect(),s=i+a,l=r+o;s>e&&(e=s),l>t&&(t=l)})),e+=this.opts.initialLeft,t+=this.opts.initialTop;const n=this.canvas.getWidth()/e,r=this.canvas.getHeight()/t,i=Math.min(n,r);if(i<1){this.canvas.setZoom(i);const e=this.opts.initialTop*i,t=this.opts.initialLeft*i,n=this.opts.initialTop-e,r=this.opts.initialLeft-t;this.canvas.relativePan(new _z.fabric.Point(r,n))}}}function Yz(){const e={success:"--g-color-text-positive",error:"--g-color-text-danger",warning:"--g-color-text-warning",errorBackground:"--g-color-base-danger-light",warningBackground:"--g-color-base-warning-light",mute:"--g-color-line-generic",stroke:"--g-color-text-hint",fill:"--g-color-base-generic-ultralight",nodeFill:"--g-color-base-float",nodeShadow:"--g-color-sfx-shadow",titleColor:"--g-color-text-primary",textColor:"--g-color-text-complementary",buttonBorderColor:"--g-color-line-generic",groupBorderColor:"--g-color-base-info-light-hover",groupFill:"--g-color-base-info-light",titleHoverColor:"--g-color-text-link-hover",nodeHover:"--g-color-base-float-hover",specialHover:"--g-color-line-brand"},t=getComputedStyle(document.body),n=Object.keys(e).reduce(((n,r)=>{const i=t.getPropertyValue(e[r]).replace(/ /g,"");return i&&(n[r]=i),n}),{});return Object.assign(Object.assign(Object.assign({},Oz),n),{getCommonColor:e=>t.getPropertyValue("--g-color-".concat(e)).replace(/ /g,"")})}const Kz={linkType:"arrow"};function Qz(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Kz;const t=e.colors||{};return Object.assign(Object.assign({initialTop:10,initialLeft:10},e),{colors:Object.assign(Object.assign(Object.assign({},Oz),Yz()),t)})}n(57002);var Xz=function(){if("undefined"!==typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,r){return e[0]===t&&(n=r,!0)})),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,r=this.__entries__;n<r.length;n++){var i=r[n];e.call(t,i[1],i[0])}},t}()}(),$z="undefined"!==typeof window&&"undefined"!==typeof document&&window.document===document,Jz="undefined"!==typeof n.g&&n.g.Math===Math?n.g:"undefined"!==typeof self&&self.Math===Math?self:"undefined"!==typeof window&&window.Math===Math?window:Function("return this")(),eB="function"===typeof requestAnimationFrame?requestAnimationFrame.bind(Jz):function(e){return setTimeout((function(){return e(Date.now())}),1e3/60)},tB=2;var nB=20,rB=["top","right","bottom","left","width","height","size","weight"],iB="undefined"!==typeof MutationObserver,oB=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var n=!1,r=!1,i=0;function o(){n&&(n=!1,e()),r&&s()}function a(){eB(o)}function s(){var e=Date.now();if(n){if(e-i<tB)return;r=!0}else n=!0,r=!1,setTimeout(a,t);i=e}return s}(this.refresh.bind(this),nB)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter((function(e){return e.gatherActive(),e.hasActive()}));return e.forEach((function(e){return e.broadcastActive()})),e.length>0},e.prototype.connect_=function(){$z&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),iB?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){$z&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t,r=rB.some((function(e){return!!~n.indexOf(e)}));r&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),aB=function(e,t){for(var n=0,r=Object.keys(t);n<r.length;n++){var i=r[n];Object.defineProperty(e,i,{value:t[i],enumerable:!1,writable:!1,configurable:!0})}return e},sB=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||Jz},lB=fB(0,0,0,0);function cB(e){return parseFloat(e)||0}function uB(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce((function(t,n){return t+cB(e["border-"+n+"-width"])}),0)}function dB(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return lB;var r=sB(e).getComputedStyle(e),i=function(e){for(var t={},n=0,r=["top","right","bottom","left"];n<r.length;n++){var i=r[n],o=e["padding-"+i];t[i]=cB(o)}return t}(r),o=i.left+i.right,a=i.top+i.bottom,s=cB(r.width),l=cB(r.height);if("border-box"===r.boxSizing&&(Math.round(s+o)!==t&&(s-=uB(r,"left","right")+o),Math.round(l+a)!==n&&(l-=uB(r,"top","bottom")+a)),!function(e){return e===sB(e).document.documentElement}(e)){var c=Math.round(s+o)-t,u=Math.round(l+a)-n;1!==Math.abs(c)&&(s-=c),1!==Math.abs(u)&&(l-=u)}return fB(i.left,i.top,s,l)}var hB="undefined"!==typeof SVGGraphicsElement?function(e){return e instanceof sB(e).SVGGraphicsElement}:function(e){return e instanceof sB(e).SVGElement&&"function"===typeof e.getBBox};function pB(e){return $z?hB(e)?function(e){var t=e.getBBox();return fB(0,0,t.width,t.height)}(e):dB(e):lB}function fB(e,t,n,r){return{x:e,y:t,width:n,height:r}}var mB=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=fB(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=pB(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),gB=function(e,t){var n=function(e){var t=e.x,n=e.y,r=e.width,i=e.height,o="undefined"!==typeof DOMRectReadOnly?DOMRectReadOnly:Object,a=Object.create(o.prototype);return aB(a,{x:t,y:n,width:r,height:i,top:n,right:t+r,bottom:i+n,left:t}),a}(t);aB(this,{target:e,contentRect:n})},vB=function(){function e(e,t,n){if(this.activeObservations_=[],this.observations_=new Xz,"function"!==typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=n}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!==typeof Element&&Element instanceof Object){if(!(e instanceof sB(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new mB(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!==typeof Element&&Element instanceof Object){if(!(e instanceof sB(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach((function(t){t.isActive()&&e.activeObservations_.push(t)}))},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map((function(e){return new gB(e.target,e.broadcastRect())}));this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),yB="undefined"!==typeof WeakMap?new WeakMap:new Xz,bB=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=oB.getInstance(),r=new vB(t,n,this);yB.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){bB.prototype[e]=function(){var t;return(t=yB.get(this))[e].apply(t,arguments)}}));"undefined"!==typeof Jz.ResizeObserver&&Jz.ResizeObserver;class xB extends a.Component{constructor(e){super(e),this.handleResize=debounce((e=>{var t,n,r;const{contentRect:i}=e[0];null===this.paranoid||void 0===t||t.getCanvas().setWidth(i.width),null===this.paranoid||void 0===n||n.getCanvas().setHeight(i.height),null===this.paranoid||void 0===r||r.getCanvas().renderAll()}),300),this.container=React.createRef(),this.resizeObserver=new ResizeObserver(this.handleResize)}componentDidMount(){this.paranoid=getTopology(paranoidRoot,this.props.data,this.props.opts,this.props.shapes),this.paranoid.render(),this.resizeObserver.observe(this.container.current),this.props.initListeners&&this.props.initListeners(this.paranoid)}componentDidUpdate(e){let{data:t,opts:n}=e;var r;!this.paranoid||isEqual(t,this.props.data)&&isEqual(n,this.props.opts)||(null===this.paranoid||void 0===r||r.destroy(),this.paranoid=getTopology(paranoidRoot,this.props.data,this.props.opts,this.props.shapes),this.paranoid.render(),this.props.initListeners&&this.props.initListeners(this.paranoid))}componentWillUnmount(){this.paranoid&&(this.paranoid.destroy(),this.paranoid=void 0),this.resizeObserver.disconnect()}render(){const{styles:e}=this.props;return React.createElement("div",{ref:this.container,id:paranoidRoot,style:e||{height:"100%"}})}}class wB extends a.Component{componentDidMount(){this.paranoid=getCompactTopology(CompactTopology_paranoidRoot,this.props.data,this.props.opts),this.paranoid.renderCompactTopology()}componentDidUpdate(e){let{data:t,opts:n}=e;var r;!this.paranoid||isEqual(t,this.props.data)&&isEqual(n,this.props.opts)||(null===this.paranoid||void 0===r||r.destroy(),this.paranoid=getCompactTopology(CompactTopology_paranoidRoot,this.props.data,this.props.opts),this.paranoid.renderCompactTopology())}componentWillUnmount(){this.paranoid&&this.paranoid.destroy()}render(){const{styles:e}=this.props;return React.createElement("div",{id:CompactTopology_paranoidRoot,style:e||{height:"100%"}})}}const SB={width:280,expandedWidth:360,borderRadius:4,titleFontSize:jz,titleLineHeight:Iz,textFontSize:jz,textLineHeight:Iz,padding:12,timeMaxWidth:25,percentageMaxWidth:25,textOffset:8,tagLeftOffset:4,tagTopOffset:5,statsOffset:24};class _B{constructor(e,t,n,r){this.top=0,this.left=0,this.canvas=e,this.stats=t,this.coords=n,this.colors=r,this.textProps={fontSize:SB.textFontSize,lineHeight:SB.textLineHeight,fontFamily:kz,fill:null===r||void 0===r?void 0:r.titleColor},this.selectedGroup=t[0].group;const i=this.createTitles(),o=i.map((e=>e.getScaledHeight())),a=Math.max.apply(null,o);this.lineTop=this.top+a+SB.textOffset;const s=this.createLine();this.content=this.createContent(i),this.group=this.createGroup(i,s,this.content),this.initListeners()}getCanvasObject(){return this.group}createTitles(){let e=this.left;return this.stats.map((e=>{let{group:t}=e;return t})).map((t=>{var n,r;const i=new _z.fabric.Text(t,Object.assign(Object.assign({left:e,top:this.top},this.textProps),{fill:t===this.selectedGroup?null===(n=this.colors)||void 0===n?void 0:n.titleColor:null===(r=this.colors)||void 0===r?void 0:r.textColor}));return e+=i.getScaledWidth()+SB.statsOffset,i}))}createLine(){return new _z.fabric.Path("M ".concat(this.left," ").concat(this.lineTop,"\n H ").concat(SB.expandedWidth-2*SB.padding),{fill:"",stroke:this.colors.stroke,strokeWidth:1})}createContent(e){return this.stats.map(((t,n)=>{let{group:r,stats:i}=t;const o=this.getContentItems(i,this.lineTop),a=e[n],s=a.left||0,l=s+a.getScaledWidth();return{group:r,items:new _z.fabric.Group(o,{opacity:this.selectedGroup===r?1:0}),title:a,hoverLine:this.createHoverLine(s,l,r)}}))}getContentItems(e,t){let n=t+2*SB.textOffset;const r=[],i=e=>{e.forEach((e=>{let{name:t,value:i}=e;var o;const a=new _z.fabric.Text(t,Object.assign({left:this.left,top:n},this.textProps)),s=SB.expandedWidth/2-SB.padding,l=SB.expandedWidth-2*SB.padding,c=new _z.fabric.Textbox(String(i),Object.assign(Object.assign({left:s,top:n},this.textProps),{fill:null===(o=this.colors)||void 0===o?void 0:o.textColor,splitByGrapheme:!0,width:l-s}));r.push(a,c),n+=Math.max(a.getScaledHeight(),c.getScaledHeight())+SB.textOffset}))};return!function(e){var t;return Boolean(null===(t=e[0])||void 0===t?void 0:t.items)}(e)?i(e):e.forEach(((t,o)=>{let{name:a,items:s}=t;const l=new _z.fabric.Text(a,Object.assign(Object.assign({left:this.left,top:n},this.textProps),{fontWeight:"bold"}));if(r.push(l),n+=l.getScaledHeight()+SB.textOffset,i(s),o!==e.length-1){const e=new _z.fabric.Path("M ".concat(this.left," ").concat(n,"\n H ").concat(SB.expandedWidth-2*SB.padding),{fill:"",stroke:this.colors.stroke,strokeWidth:1,strokeDashArray:[6,4]});r.push(e),n+=e.getScaledHeight()+SB.textOffset}})),r}createGroup(e,t,n){const r=n.map((e=>{let{items:t}=e;return t})),i=n.map((e=>{let{hoverLine:t}=e;return t}));return new _z.fabric.Group([...e,t,...r,...i],Object.assign({left:this.coords.left,top:this.coords.top},Nz))}createHoverLine(e,t,n){return new _z.fabric.Path("M ".concat(e," ").concat(this.lineTop-1,"\n H ").concat(t),{fill:"",stroke:this.colors.specialHover,strokeWidth:2,opacity:this.selectedGroup===n?1:0})}initListeners(){this.content.forEach((e=>{let{group:t,title:n,items:r,hoverLine:i}=e;n.on("mousedown",(()=>{const e=this.selectedGroup,o=this.content.find((t=>t.group===e));o&&(o.title.set({fill:this.colors.textColor}),o.items.set({opacity:0}),o.hoverLine.set({opacity:0}),n.set({fill:this.colors.titleColor}),r.set({opacity:1}),i.set({opacity:1}),this.selectedGroup=t,this.canvas.requestRenderAll())}))}))}}function CB(e,t,n,r,i){return new _B(e,t,{top:n,left:r},i).getCanvasObject()}function EB(e,t,n){return new _z.fabric.Textbox(e?"#".concat(e):"",{fontSize:12,lineHeight:14,textAlign:"right",fontFamily:kz,fill:n.getCommonColor("text-secondary"),hoverCursor:t?"pointer":"default"})}const TB={width:112,expandedWidth:360,borderRadius:6,titleFontSize:jz,titleLineHeight:Iz,textFontSize:jz,textLineHeight:Iz,padding:16,textOffset:8},OB={scaleX:16/512,scaleY:16/512,originY:"center"};function NB(e,t,n){const r=new _z.fabric.Text(e,{fontSize:TB.textFontSize,lineHeight:TB.textFontSize,fontFamily:kz,fill:n.getCommonColor("text-misc"),originY:"center"}),i=[r];let o;switch(e){case"Merge":o=new _z.fabric.Path("M232.5 5.171C247.4-1.718 264.6-1.718 279.5 5.171L498.1 106.2C506.6 110.1 512 118.6 512 127.1C512 137.3 506.6 145.8 498.1 149.8L279.5 250.8C264.6 257.7 247.4 257.7 232.5 250.8L13.93 149.8C5.438 145.8 0 137.3 0 127.1C0 118.6 5.437 110.1 13.93 106.2L232.5 5.171zM498.1 234.2C506.6 238.1 512 246.6 512 255.1C512 265.3 506.6 273.8 498.1 277.8L279.5 378.8C264.6 385.7 247.4 385.7 232.5 378.8L13.93 277.8C5.438 273.8 0 265.3 0 255.1C0 246.6 5.437 238.1 13.93 234.2L67.13 209.6L219.1 279.8C242.5 290.7 269.5 290.7 292.9 279.8L444.9 209.6L498.1 234.2zM292.9 407.8L444.9 337.6L498.1 362.2C506.6 366.1 512 374.6 512 383.1C512 393.3 506.6 401.8 498.1 405.8L279.5 506.8C264.6 513.7 247.4 513.7 232.5 506.8L13.93 405.8C5.438 401.8 0 393.3 0 383.1C0 374.6 5.437 366.1 13.93 362.2L67.13 337.6L219.1 407.8C242.5 418.7 269.5 418.7 292.9 407.8V407.8z",OB);break;case"UnionAll":o=new _z.fabric.Path("M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z",OB);break;case"HashShuffle":o=new _z.fabric.Path("M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z",OB);break;case"Map":o=new _z.fabric.Path("M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z",OB);break;case"Broadcast":o=new _z.fabric.Path("M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z",OB)}return o&&(o.set({fill:n.getCommonColor("text-misc"),top:0,left:0,originY:"center"}),r.set({left:22}),i.push(o)),new _z.fabric.Group(i,Object.assign(Object.assign({},Nz),{hoverCursor:t?"pointer":"default"}))}class kB{constructor(e,t,n,r,i){this.expanded=!1,this.expandedNodeHeight=0,this.nodeHeight=0,this.canvas=e,this.coords=t,this.treeNode=n,this.opts=r,this.em=i,this.data=gw()(n,["data","data"]),this.objects=this.prepareShapeObjects(),this.setShapeObjectsCoords(),this.body=this.prepareNodeBody(),this.group=this.createGroup(),this.initListeners()}getShape(){return this.group}getFillColor(){return this.opts.colors.getCommonColor("base-misc-light")}getHoverFillColor(){return this.opts.colors.getCommonColor("base-misc-light-hover")}getShadow(){}getHoverShadow(){}toggleHighlight(e){this.isExpandable()&&!this.expanded&&this.body.set({fill:e?this.getHoverFillColor():this.getFillColor()}),this.canvas.requestRenderAll()}prepareNodeBody(){const e=this.opts.colors,t=this.objects[this.objects.length-1];return this.nodeHeight=(t.top||0)+t.getScaledHeight()+TB.padding,new _z.fabric.Rect({width:TB.width,height:this.nodeHeight,fill:this.getFillColor(),shadow:this.getShadow(),stroke:e.getCommonColor("line-misc"),rx:TB.borderRadius,ry:TB.borderRadius,hoverCursor:this.isExpandable()?"pointer":"default"})}prepareShapeObjects(){return[EB(this.data.id,this.isExpandable(),this.opts.colors),NB(this.data.name||"",this.isExpandable(),this.opts.colors)]}setShapeObjectsCoords(){const[e,t]=this.objects,n=TB.padding,r=this.expanded?TB.expandedWidth:TB.width,i=t.getScaledWidth();e.set({left:0,top:4,width:r-4}),t.set({left:r/2-i/2,top:n})}createGroup(){const{top:e,left:t}=this.coords;return new _z.fabric.Group([this.body,...this.objects],Object.assign({top:e,left:t},Nz))}initListeners(){this.initHover(),this.isExpandable()&&this.initExpand()}initHover(){this.group.on("mouseover",(()=>{this.em.dispatch("node:mouseover",this.treeNode),this.toggleHighlight(!0)})),this.group.on("mouseout",(()=>{this.em.dispatch("node:mouseout",this.treeNode),this.toggleHighlight(!1)}))}initExpand(){this.group.on("mousedown",(e=>{var t;this.stats&&(null===(t=e.subTargets)||void 0===t?void 0:t.includes(this.stats))||(this.expanded=!this.expanded,this.updateDimensions(),this.em.dispatch("node:resize",this.treeNode))}))}updateDimensions(){const e=this.opts.colors,[t,n]=this.objects,r=n.getScaledWidth();let i,o;this.expanded?(this.stats=CB(this.canvas,this.data.stats,(this.group.top||0)+this.body.getScaledHeight()+TB.padding,(this.group.left||0)+TB.padding,e),this.expandedNodeHeight=this.nodeHeight+this.stats.getScaledHeight()+2*TB.padding,i=TB.expandedWidth,o=this.expandedNodeHeight,this.group.addWithUpdate(this.stats)):(i=TB.width,o=this.nodeHeight,this.group.removeWithUpdate(this.stats),this.stats=void 0);const a=function(e,t){const n=[];return t.forEachObject((r=>{n.push(r),t.removeWithUpdate(r),e.add(r)})),()=>{n.forEach((n=>{e.remove(n),t.addWithUpdate(n)}))}}(this.canvas,this.group);this.body.set({width:i,height:o,fill:this.getFillColor(),shadow:this.getShadow()}),t.set({width:i-4}),n.set({left:(this.body.left||0)+(this.body.width||0)/2-r/2}),a()}isExpandable(){return Boolean(this.data.stats&&this.data.stats.length>0)}}const jB={width:190,bevelSize:10,titleFontSize:jz,titleLineHeight:Iz,padding:12};class IB{constructor(e,t,n,r,i){this.nodeHeight=0,this.coords=t,this.opts=r,this.data=gw()(n,["data","data"]),this.shadow=new _z.fabric.Shadow({color:r.colors.nodeShadow,offsetY:1,blur:5}),this.hoverShadow=new _z.fabric.Shadow({color:r.colors.nodeShadow,offsetY:3,blur:8}),this.objects=this.prepareShapeObjects(),this.setShapeObjectsCoords(),this.body=this.prepareNodeBody(),this.group=this.createGroup()}getShape(){return this.group}getFillColor(){return this.opts.colors.nodeFill}getHoverFillColor(){return this.opts.colors.nodeHover}getShadow(){return this.shadow}getHoverShadow(){return this.hoverShadow}toggleHighlight(){}prepareNodeBody(){const e=this.opts.colors,t=this.objects[this.objects.length-1];return this.nodeHeight=(t.top||0)+t.getScaledHeight()+jB.padding,new _z.fabric.Polygon([{x:jB.bevelSize,y:0},{x:jB.width-jB.bevelSize,y:0},{x:jB.width,y:jB.bevelSize},{x:jB.width,y:this.nodeHeight-jB.bevelSize},{x:jB.width-jB.bevelSize,y:this.nodeHeight},{x:jB.bevelSize,y:this.nodeHeight},{x:0,y:this.nodeHeight-jB.bevelSize},{x:0,y:jB.bevelSize}],{fill:this.getFillColor(),stroke:null===e||void 0===e?void 0:e.nodeShadow,shadow:this.getShadow(),hoverCursor:"default"})}prepareShapeObjects(){const e=function(e,t){return new _z.fabric.Text(e.join("\n"),{fontSize:jB.titleFontSize,lineHeight:jB.titleLineHeight,left:0,top:26,fontFamily:kz,fontStyle:"italic",fill:t.getCommonColor("text-primary")})}([this.data.name||""],this.opts.colors);return[e]}setShapeObjectsCoords(){const[e]=this.objects,t=jB.padding,n=e.getScaledWidth();e.set({left:jB.width/2-n/2,top:t})}createGroup(){const{top:e,left:t}=this.coords;return new _z.fabric.Group([this.body,...this.objects],Object.assign({top:e,left:t},Nz))}}const PB=40,DB=40,AB=20;class RB{constructor(e,t,n,r,i){this.coords=t,this.opts=r,this.shadow=new _z.fabric.Shadow({color:r.colors.nodeShadow,offsetY:1,blur:5}),this.hoverShadow=new _z.fabric.Shadow({color:r.colors.nodeShadow,offsetY:3,blur:8}),this.body=this.prepareNodeBody(),this.group=this.createGroup()}getShape(){return this.group}getFillColor(){return this.opts.colors.nodeFill}getHoverFillColor(){return this.opts.colors.nodeHover}getShadow(){return this.shadow}getHoverShadow(){return this.hoverShadow}toggleHighlight(){}prepareNodeBody(){const e=this.opts.colors;return new _z.fabric.Rect({width:PB,height:DB,fill:this.getFillColor(),stroke:null===e||void 0===e?void 0:e.nodeShadow,rx:AB,ry:AB,shadow:this.getShadow(),hoverCursor:"default"})}createGroup(){const{top:e,left:t}=this.coords;return new _z.fabric.Group([this.body],Object.assign({top:e,left:t},Nz))}}const MB={width:112,borderRadius:6,titleFontSize:jz,titleLineHeight:Iz,textFontSize:jz,textLineHeight:Iz,padding:12,textOffset:8};class LB{constructor(e,t,n,r,i){this.nodeHeight=0,this.coords=t,this.opts=r,this.data=gw()(n,["data","data"]),this.shadow=new _z.fabric.Shadow({color:r.colors.nodeShadow,offsetY:1,blur:5}),this.hoverShadow=new _z.fabric.Shadow({color:r.colors.nodeShadow,offsetY:3,blur:8}),this.objects=this.prepareShapeObjects(),this.setShapeObjectsCoords(),this.body=this.prepareNodeBody(),this.group=this.createGroup()}getShape(){return this.group}getFillColor(){return this.opts.colors.nodeFill}getHoverFillColor(){return this.opts.colors.nodeHover}getShadow(){return this.shadow}getHoverShadow(){return this.hoverShadow}toggleHighlight(){}prepareNodeBody(){const e=this.opts.colors,t=this.objects[this.objects.length-1];return this.nodeHeight=(t.top||0)+t.getScaledHeight()+MB.padding,new _z.fabric.Rect({width:MB.width,height:this.nodeHeight,fill:this.getFillColor(),stroke:null===e||void 0===e?void 0:e.nodeShadow,shadow:this.getShadow(),hoverCursor:"default"})}prepareShapeObjects(){const e=function(e,t){return new _z.fabric.Text(e.join("\n"),{fontSize:MB.textFontSize,lineHeight:MB.textLineHeight,left:0,top:26,fontFamily:kz,fill:t.getCommonColor("text-primary")})}([this.data.name||""],this.opts.colors);return[e]}setShapeObjectsCoords(){const[e]=this.objects,t=MB.padding,n=e.getScaledWidth();e.set({left:MB.width/2-n/2,top:t})}createGroup(){const{top:e,left:t}=this.coords;return new _z.fabric.Group([this.body,...this.objects],Object.assign({top:e,left:t},Nz))}}const FB={width:248,expandedWidth:360,borderRadius:6,titleFontSize:jz,titleLineHeight:Iz,textFontSize:jz,textLineHeight:Iz,padding:12,textOffset:8};class zB{constructor(e,t,n,r,i){this.expanded=!1,this.expandedNodeHeight=0,this.nodeHeight=0,this.canvas=e,this.coords=t,this.treeNode=n,this.opts=r,this.em=i,this.data=gw()(n,["data","data"]),this.shadow=new _z.fabric.Shadow({color:r.colors.nodeShadow,offsetY:1,blur:5}),this.hoverShadow=new _z.fabric.Shadow({color:r.colors.nodeShadow,offsetY:3,blur:8}),this.objects=this.prepareShapeObjects(),this.setShapeObjectsCoords(),this.body=this.prepareNodeBody(),this.group=this.createGroup(),this.initListeners()}getShape(){return this.group}getFillColor(){return this.opts.colors.nodeFill}getHoverFillColor(){return this.opts.colors.nodeHover}getShadow(){return this.shadow}getHoverShadow(){return this.hoverShadow}toggleHighlight(e){this.isExpandable()&&!this.expanded&&this.body.set({fill:e?this.getHoverFillColor():this.getFillColor(),shadow:e?this.getHoverShadow():this.getShadow()}),this.canvas.requestRenderAll()}prepareNodeBody(){const e=this.opts.colors,t=this.objects[this.objects.length-1];return this.nodeHeight=(t.top||0)+t.getScaledHeight()+FB.padding,new _z.fabric.Rect({width:FB.width,height:this.nodeHeight,fill:this.getFillColor(),stroke:null===e||void 0===e?void 0:e.nodeShadow,rx:FB.borderRadius,ry:FB.borderRadius,shadow:this.getShadow(),hoverCursor:this.isExpandable()?"pointer":"default"})}prepareShapeObjects(){const e=EB(this.data.id,this.isExpandable(),this.opts.colors),t=function(e,t,n){return new _z.fabric.Text(e.join("\n"),{fontSize:FB.textFontSize,lineHeight:FB.textLineHeight,fontFamily:kz,fill:n.getCommonColor("text-primary"),hoverCursor:t?"pointer":"default"})}(this.data.operators||[this.data.name||""],this.isExpandable(),this.opts.colors),n=function(e,t){if(0===e.length)return new _z.fabric.Group([],Object.assign({top:0,left:0},Nz));const n=new _z.fabric.Text("Tables:",{fontSize:FB.textFontSize,lineHeight:FB.textLineHeight,fontFamily:kz,fill:t.getCommonColor("text-secondary"),hoverCursor:"pointer"}),r=n.getScaledWidth()+2,i=FB.width-2*FB.padding-r,o=new _z.fabric.Textbox(e.join("\n"),{left:r,width:i,fontSize:FB.textFontSize,lineHeight:FB.textLineHeight,fontFamily:kz,fill:t.getCommonColor("text-primary"),splitByGrapheme:!0,hoverCursor:"pointer"});return new _z.fabric.Group([n,o],Object.assign({top:0,left:0},Nz))}(this.data.tables||[],this.opts.colors),r=function(e,t){if(!e)return new _z.fabric.Group([],Object.assign({top:0,left:0},Nz));const n=new _z.fabric.Text("CTE:",{fontSize:FB.textFontSize,lineHeight:FB.textLineHeight,fontFamily:kz,fill:t.getCommonColor("text-secondary"),hoverCursor:"pointer"}),r=n.getScaledWidth()+2,i=FB.width-2*FB.padding-r,o=new _z.fabric.Textbox(e,{left:r,width:i,fontSize:FB.textFontSize,lineHeight:FB.textLineHeight,fontFamily:kz,fill:t.getCommonColor("text-primary"),splitByGrapheme:!0,hoverCursor:"pointer"});return new _z.fabric.Group([n,o],Object.assign({top:0,left:0},Nz))}(this.data.cte||"",this.opts.colors);return[e,t,n,r]}setShapeObjectsCoords(){const[e,t,n,r]=this.objects;let i=FB.padding;const o=FB.padding;e.set({left:0,top:4,width:(this.expanded?FB.expandedWidth:FB.width)-4}),t.set({left:o,top:i}),i+=t.getScaledHeight(),n.set({left:o,top:i+(0===n.size()?0:FB.textOffset)}),i+=n.getScaledHeight(),r.set({left:o,top:i+(0===r.size()?0:FB.textOffset)})}createGroup(){const{top:e,left:t}=this.coords;return new _z.fabric.Group([this.body,...this.objects],Object.assign({top:e,left:t},Nz))}initListeners(){this.initHover(),this.isExpandable()&&this.initExpand()}initHover(){this.group.on("mouseover",(()=>{this.em.dispatch("node:mouseover",this.treeNode),this.toggleHighlight(!0)})),this.group.on("mouseout",(()=>{this.em.dispatch("node:mouseout",this.treeNode),this.toggleHighlight(!1)}))}initExpand(){this.group.on("mousedown",(e=>{var t;this.stats&&(null===(t=e.subTargets)||void 0===t?void 0:t.includes(this.stats))||(this.updateDimensions(),this.expanded=!this.expanded,this.em.dispatch("node:resize",this.treeNode))}))}updateDimensions(){const e=this.opts.colors;if(this.expanded){const e=FB.width,t=this.nodeHeight;this.body.set({width:e,height:t,fill:this.getFillColor(),shadow:this.getShadow()}).setCoords(),this.objects[0].set({width:e-4}).setCoords(),this.group.removeWithUpdate(this.stats),this.stats=void 0}else{this.stats=CB(this.canvas,this.data.stats,(this.group.top||0)+this.body.getScaledHeight()+FB.padding,(this.group.left||0)+FB.padding,e),this.expandedNodeHeight=this.nodeHeight+this.stats.getScaledHeight()+2*FB.padding;const t=FB.expandedWidth,n=this.expandedNodeHeight;this.body.set({width:t,height:n,fill:this.getFillColor(),shadow:this.getShadow()}).setCoords(),this.objects[0].set({width:t-4}).setCoords(),this.group.addWithUpdate(this.stats)}}isExpandable(){return Boolean(this.data.stats&&this.data.stats.length>0)}}function BB(e,t,n,r,i){return function(e){const t=gw()(e,["data","data"]);return"connection"===(null===t||void 0===t?void 0:t.type)}(n)?new kB(e,t,n,r,i):function(e){const t=gw()(e,["data","data"]);return"result"===(null===t||void 0===t?void 0:t.type)}(n)?new LB(e,t,n,r,i):function(e){const t=gw()(e,["data","data"]);return"query"===(null===t||void 0===t?void 0:t.type)}(n)?new RB(e,t,n,r,i):function(e){const t=gw()(e,["data","data"]);return"materialize"===(null===t||void 0===t?void 0:t.type)}(n)?new IB(e,t,n,r,i):new zB(e,t,n,r,i)}var UB=n(60749);const HB=e=>{const t=e.name.split("|");return t.length>1?t[1]:e.name},VB=Me("ydb-query-explain-result"),GB={automaticLayout:!0,selectOnLineNumbers:!0,readOnly:!0,minimap:{enabled:!1},wrappingIndent:"indent"},WB={schema:"schema",json:"json",ast:"ast"},qB=[{value:WB.schema,content:"Schema"},{value:WB.json,content:"JSON"},{value:WB.ast,content:"AST"}];function ZB(e){const t=a.useRef(),{data:n,opts:r,shapes:i,theme:o}=e;return a.useEffect((()=>{const e=document.getElementById("graphRoot");if(!e)throw new Error("Can't find element with id #graphRoot");return e.innerHTML="",t.current=function(e,t,n,r){const i=Qz(n);return new Zz(e,i,t,r)}("graphRoot",n,r,i),t.current.render(),()=>{t.current=void 0}}),[o]),a.useEffect((()=>{var n,r;null===(n=t.current)||void 0===n||null===(r=n.updateData)||void 0===r||r.call(n,e.data)}),[e.data]),(0,Le.jsx)("div",{id:"graphRoot",style:{height:"100vh"}})}function YB(e){const t=Ao(),[n,r]=a.useState(WB.schema),i=Do((e=>e.fullscreen));a.useEffect((()=>()=>{t((0,IF.vj)())}),[t]);const o=()=>{var t,r;switch(n){case WB.schema:return Boolean(null===(t=e.explain)||void 0===t||null===(r=t.nodes)||void 0===r?void 0:r.length);case WB.json:return Boolean(e.explain);case WB.ast:return Boolean(e.ast);default:return!1}};return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("div",{className:VB("controls"),children:!e.loading&&(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsxs)("div",{className:VB("controls-right"),children:[(0,Le.jsx)(GF,{error:e.error}),!e.error&&(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(kF,{}),(0,Le.jsx)(Oo,{options:qB,value:n,onUpdate:e=>{r(e)}})]})]}),(0,Le.jsxs)("div",{className:VB("controls-left"),children:[(0,Le.jsx)(PF,{disabled:Boolean(e.error)||!o()}),(0,Le.jsx)(OF,{onCollapse:e.onCollapseResults,onExpand:e.onExpandResults,isCollapsed:e.isResultsCollapsed,initialDirection:"bottom"})]})]})}),(0,Le.jsx)("div",{className:VB("result"),children:(()=>{const{error:t,loading:r}=e;if(r)return(0,Le.jsx)("div",{className:VB("loader"),children:(0,Le.jsx)(Di,{size:"m"})});if(t)return(0,Le.jsx)("div",{className:VB("text-message"),children:(0,BI.fV)(e.error)});if(!o())return(0,Le.jsx)("div",{className:VB("text-message"),children:"There is no ".concat(n," for the request")});switch(n){case WB.json:return(()=>{var t;const n=(0,Le.jsx)(bs(),{data:null===(t=e.explain)||void 0===t?void 0:t.pristine,isExpanded:()=>!0,className:VB("inspector"),searchOptions:{debounceTime:300}});return(0,Le.jsxs)(a.Fragment,{children:[n,i&&(0,Le.jsx)(FF,{children:n})]})})();case WB.ast:return(()=>{const t=(0,Le.jsx)("div",{className:VB("ast"),children:(0,Le.jsx)(hF,{language:UB.K,value:e.ast,options:GB,wrappingIndent:"indent",theme:"vs-".concat(e.theme)})});return(0,Le.jsxs)(a.Fragment,{children:[t,i&&(0,Le.jsx)(FF,{children:t})]})})();case WB.schema:return(()=>{const{explain:t={},theme:r}=e,{links:o,nodes:s,version:l}=t,c=l===gF.v2,u=o&&s&&s.length,d=c&&u?(0,Le.jsx)("div",{className:VB("explain-canvas-container",{hidden:n!==WB.schema}),children:(0,Le.jsx)(ZB,{theme:r,data:{links:o,nodes:s},opts:{renderNodeTitle:HB,textOverflow:"normal",initialZoomFitsCanvas:!0},shapes:{node:BB}})}):null;return(0,Le.jsxs)(a.Fragment,{children:[!i&&d,i&&(0,Le.jsx)(FF,{children:d})]})})();default:return null}})()})]})}const KB=Dl.h.injectEndpoints({endpoints:e=>({sendQuery:e.query({queryFn:async(e,t)=>{let{query:n,database:r,action:i}=e,{signal:o}=t;try{const e=await window.api.sendQuery({schema:"modern",query:n,database:r,action:i},{signal:o});return(0,BI.gW)(e)?{error:e}:{data:(0,BI.gY)(e)}}catch(a){return{error:a||new Error("Unauthorized")}}},providesTags:["All"]})}),overrideExisting:"throw"}),QB=Me("kv-preview"),XB=e=>{var t;let{database:n,type:r}=e;const i=Ao(),o=(0,pj.vp)(r),{autorefresh:a,currentSchemaPath:s}=Do((e=>e.schema)),l=Do((e=>e.fullscreen)),c="--!syntax_v1\nselect * from `".concat(s,"` limit 32"),{currentData:u,isFetching:d,error:h}=KB.useSendQueryQuery({database:n,query:c,action:(0,pj.uL)(r)?"execute-query":"execute-scan"},{pollingInterval:a,skip:!o}),p=null!==u&&void 0!==u?u:{},f=()=>{i((0,Vk.m7)(!1))};if(d&&void 0===u)return(0,Le.jsx)("div",{className:QB("loader-container"),children:(0,Le.jsx)(Di,{size:"m"})});let m;o?h&&(m=(0,Le.jsx)("div",{className:QB("message-container","error"),children:(0,BI.fV)(h)})):m=(0,Le.jsx)("div",{className:QB("message-container"),children:sF("preview.not-available")});const g=null!==(t=m)&&void 0!==t?t:(0,Le.jsx)("div",{className:QB("result"),children:(0,Le.jsx)($F,{data:p.result,columns:p.columns})});return(0,Le.jsxs)("div",{className:QB(),children:[(0,Le.jsxs)("div",{className:QB("header"),children:[(0,Le.jsxs)("div",{className:QB("title"),children:[sF("preview.title")," ",(0,Le.jsx)("div",{className:QB("table-name"),children:s})]}),(0,Le.jsxs)("div",{className:QB("controls-left"),children:[(0,Le.jsx)(PF,{disabled:Boolean(h)}),(0,Le.jsx)(Ie.z,{view:"flat-secondary",onClick:f,title:sF("preview.close"),children:(0,Le.jsx)(we.J,{data:tt.Z,size:18})})]})]}),l?(0,Le.jsx)(FF,{children:g}):g]})},$B=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("g",{clipPath:"url(#a)"},a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M14.756 10.164c1.665-.962 1.665-3.366 0-4.329L6.251.918C4.585-.045 2.5 1.158 2.5 3.083v9.834c0 1.925 2.085 3.128 3.751 2.164l8.505-4.917Z",clipRule:"evenodd"})),a.createElement("defs",null,a.createElement("clipPath",{id:"a"},a.createElement("path",{fill:"currentColor",d:"M0 0h16v16H0z"}))));var JB=n(26364),eU=n.n(JB),tU=n(97894);const nU=Me("kv-save-query");const rU=function(e){let{savedQueries:t,onSaveQuery:n,saveButtonDisabled:r}=e;const i=Do((e=>e.singleClusterMode)),[o,s]=a.useState(!1),[l,c]=a.useState(""),[u,d]=a.useState(null),h=Do((e=>e.saveQuery)),p=Ao(),f=()=>{s(!0),p((0,tU.GC)(null))},m=()=>{s(!1),c(""),d(null)},g=e=>{c(e),d(v(e))},v=e=>eU()(t,(t=>t.name.toLowerCase()===e.trim().toLowerCase()))?"This name already exists":null,y=()=>{l&&!u&&(n(l),m())},b=()=>{n(h),p((0,tU.GC)(null))},x=e=>(0,Le.jsx)(Ie.z,{onClick:e,disabled:r,children:h?"Edit query":"Save query"});return(0,Le.jsxs)(a.Fragment,{children:[h?(()=>{const e=[{action:b,text:"Edit existing"},{action:f,text:"Save as new"}];return(0,Le.jsx)(nC,{items:e,switcher:x(),popupPlacement:["top"]})})():x(f),o&&(0,Le.jsxs)(qO,{open:o,hasCloseButton:!1,size:"s",onClose:m,onEnterKeyDown:y,children:[(0,Le.jsx)(qO.Header,{caption:"Save query"}),(0,Le.jsxs)(qO.Body,{className:nU("dialog-body"),children:[i&&(0,Le.jsx)("div",{className:nU("dialog-row"),children:"The query will be saved in your browser"}),(0,Le.jsxs)("div",{className:nU("dialog-row"),children:[(0,Le.jsx)("label",{htmlFor:"queryName",className:nU("field-title","required"),children:"Query name"}),(0,Le.jsxs)("div",{className:nU("control-wrapper"),children:[(0,Le.jsx)(Ii,{id:"queryName",placeholder:"Enter query name",value:l,onUpdate:g,hasClear:!0,autoFocus:!0}),(0,Le.jsx)("span",{className:nU("error"),children:u})]})]})]}),(0,Le.jsx)(qO.Footer,{textButtonApply:"Save",textButtonCancel:"Cancel",onClickButtonCancel:m,onClickButtonApply:y,propsButtonApply:{disabled:!l||Boolean(u)}})]})]})},iU=Me("ydb-query-editor-controls"),oU={[BI.wZ.script]:{title:BI.U4[BI.wZ.script],description:sF("method-description.script")},[BI.wZ.scan]:{title:BI.U4[BI.wZ.scan],description:sF("method-description.scan")},[BI.wZ.data]:{title:BI.U4[BI.wZ.data],description:sF("method-description.data")},[BI.wZ.query]:{title:BI.U4[BI.wZ.query],description:sF("method-description.query")},[BI.wZ.pg]:{title:BI.U4[BI.wZ.pg],description:sF("method-description.pg")}},aU=e=>{let{onRunButtonClick:t,runIsLoading:n,onExplainButtonClick:r,explainIsLoading:i,onSaveQueryClick:o,savedQueries:s,disabled:l,onUpdateQueryMode:c,queryMode:u,highlightedAction:d}=e;const h=a.useMemo((()=>Object.entries(oU).map((e=>{let[t,{title:n,description:r}]=e;return{text:(0,Le.jsx)(Po,{className:iU("item-with-popover"),contentClassName:iU("popover"),text:n,popoverContent:r}),action:()=>{c(t)}}}))),[c]),p="execute"===d?"action":void 0,f="explain"===d?"action":void 0;return(0,Le.jsxs)("div",{className:iU(),children:[(0,Le.jsxs)("div",{className:iU("left"),children:[(0,Le.jsxs)(Ie.z,{onClick:()=>{t(u)},disabled:l,loading:n,view:p,children:[(0,Le.jsx)(we.J,{data:$B,size:14}),"Run"]}),(0,Le.jsx)(Ie.z,{onClick:()=>{r(u)},disabled:l,loading:i,view:f,children:"Explain"}),(0,Le.jsx)("div",{className:iU("mode-selector"),children:(0,Le.jsx)(nC,{items:h,popupProps:{className:iU("mode-selector__popup"),qa:"query-mode-selector-popup"},switcher:(0,Le.jsx)(Ie.z,{className:iU("mode-selector__button"),qa:"query-mode-selector",children:(0,Le.jsxs)("span",{className:iU("mode-selector__button-content"),children:["".concat(sF("controls.query-mode-selector_type")," ").concat(oU[u].title),(0,Le.jsx)(we.J,{data:xe})]})})})})]}),(0,Le.jsx)(rU,{savedQueries:s,onSaveQuery:o,saveButtonDisabled:l})]})},sU={automaticLayout:!0,selectOnLineNumbers:!0,minimap:{enabled:!1}};const lU="navigation",cU={EXECUTE:"execute",EXPLAIN:"explain"},uU={sendQuery:"sendQuery",sendSelectedQuery:"sendSelectedQuery"},dU=Me("query-editor"),hU={triggerExpand:!1,triggerCollapse:!1,collapsed:!0};const pU={saveQueryToHistory:TA.hO,goToPreviousQuery:TA.NU,goToNextQuery:TA.AJ,setShowPreview:Vk.m7,setTenantPath:TA.K0},fU=(0,ae.$j)((e=>({executeQuery:e.executeQuery,showPreview:e.schema.showPreview})),pU)((function(e){const t=function(){const[e]=Mo(Lo.y6),[t]=Mo(Lo.XX);return a.useMemo((()=>{const n=Boolean(e);return{quickSuggestions:n,suggestOnTriggerCharacters:n,acceptSuggestionOnEnter:t?"on":"off",...sU}}),[e,t])}(),{path:n,setTenantPath:r,executeQuery:i,type:o,theme:s,changeUserInput:l,showPreview:c}=e,{tenantPath:u}=i,[d,h]=a.useState(cU.EXECUTE),[p,f]=a.useState(!1),[m,g]=Fo(),[v]=Mo(Lo.Rq),[y,b]=Mo(Lo.w7),[x,w]=Mo(Lo.DG),[S,_]=a.useState(null),[C,E]=TA.mg.useExecuteQueryMutation(),[T,O]=bF.useExplainQueryMutation();a.useEffect((()=>{u!==n&&(u&&l({input:""}),r(n))}),[l,r,n,u]);const[N,k]=a.useReducer(EF(Lo.eG),hU),j=a.useRef();a.useEffect((()=>{const e=()=>{j.current&&j.current.layout()},t=kt()((()=>{e()}),100);return e(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}}),[]),a.useEffect((()=>{const e=e=>{if(e.key===Lo.DG){const t=(0,Ou.Mo)(e.newValue);w(t)}};return window.addEventListener("storage",e),()=>{window.removeEventListener("storage",e)}}),[w]),a.useEffect((()=>{k(SF.triggerCollapse)}),[]),a.useEffect((()=>{e.showPreview||p?k(SF.triggerExpand):k(SF.triggerCollapse)}),[e.showPreview,p]),a.useEffect((()=>{var e;const{input:t,history:n}=i,r=!!t&&t!==(null===(e=n.queries[n.queries.length-1])||void 0===e?void 0:e.queryText);return window.onbeforeunload=r?e=>{e.preventDefault(),e.returnValue=""}:null,()=>{window.onbeforeunload=null}}),[i]);const I=(t,r)=>{if(!t)return;const{input:o,history:a}=i,s=v?"multi":"modern",l=null!==r&&void 0!==r?r:o;if(b(BI.Jf.execute),h(cU.EXECUTE),C({query:l,database:n,mode:t,schema:s}),f(!0),e.setShowPreview(!1),!r){var c;const{queries:n,currentIndex:r}=a;l!==(null===(c=n[r])||void 0===c?void 0:c.queryText)&&e.saveQueryToHistory(o,t)}k(SF.triggerExpand)},P=t=>{const{input:r}=i;b(BI.Jf.explain),h(cU.EXPLAIN),T({query:r,database:n,mode:t}),f(!0),e.setShowPreview(!1),k(SF.triggerExpand)};a.useEffect((()=>{if(null!==S)switch(_(null),S){case uU.sendQuery:y===BI.Jf.explain?P(m):I(m);break;case uU.sendSelectedQuery:{var e,t;const n=null===(e=j.current)||void 0===e?void 0:e.getSelection(),r=null===(t=j.current)||void 0===t?void 0:t.getModel();if(n&&r){const e=r.getValueInRange({startLineNumber:n.getSelectionStart().lineNumber,startColumn:n.getSelectionStart().column,endLineNumber:n.getPosition().lineNumber,endColumn:n.getPosition().column});I(m,e)}break}}}),[S]);const D=e=>{const{input:t}=i,n=x.findIndex((t=>t.name.toLowerCase()===e.toLowerCase())),r=[...x],o={name:e,body:t};-1===n?r.push(o):r[n]=o,w(r)};return(0,Le.jsx)("div",{className:dU(),children:(0,Le.jsxs)(Hk,{direction:"vertical",defaultSizePaneKey:Lo.XN,triggerCollapse:N.triggerCollapse,triggerExpand:N.triggerExpand,minSize:[0,52],collapsedSizes:[100,0],onSplitStartDragAdditional:()=>{k(SF.clear)},children:[(0,Le.jsxs)("div",{className:dU("pane-wrapper",{top:!0}),children:[(0,Le.jsx)("div",{className:dU("monaco-wrapper"),children:(0,Le.jsx)("div",{className:dU("monaco"),children:(0,Le.jsx)(hF,{language:xF.Oo,value:i.input,options:t,onChange:t=>{e.changeUserInput({input:t})},editorDidMount:(t,n)=>{j.current=t,t.focus(),t.addAction({id:"sendQuery",label:sF("action.send-query"),keybindings:[n.KeyMod.CtrlCmd|n.KeyCode.Enter],precondition:void 0,keybindingContext:void 0,contextMenuGroupId:lU,contextMenuOrder:1,run:()=>_(uU.sendQuery)});const r=t.createContextKey("canSendSelectedText",!1);t.onDidChangeCursorSelection((e=>{let{selection:t,secondarySelections:n}=e;const i=t.selectionStartLineNumber!==t.positionLineNumber||t.selectionStartColumn!==t.positionColumn,o=n.length>0;r.set(i&&!o)})),t.addAction({id:"sendSelectedQuery",label:sF("action.send-selected-query"),keybindings:[n.KeyMod.CtrlCmd|n.KeyMod.Shift|n.KeyCode.Enter],precondition:"canSendSelectedText",contextMenuGroupId:lU,contextMenuOrder:1,run:()=>_(uU.sendSelectedQuery)}),t.addAction({id:"previous-query",label:sF("action.previous-query"),keybindings:[n.KeyMod.CtrlCmd|n.KeyCode.UpArrow],contextMenuGroupId:lU,contextMenuOrder:2,run:()=>{e.goToPreviousQuery()}}),t.addAction({id:"next-query",label:sF("action.next-query"),keybindings:[n.KeyMod.CtrlCmd|n.KeyCode.DownArrow],contextMenuGroupId:lU,contextMenuOrder:3,run:()=>{e.goToNextQuery()}})},theme:"vs-".concat(s)})})}),(0,Le.jsx)(aU,{onRunButtonClick:I,runIsLoading:E.isLoading,onExplainButtonClick:P,explainIsLoading:O.isLoading,onSaveQueryClick:D,savedQueries:x,disabled:!i.input,onUpdateQueryMode:g,queryMode:m,highlightedAction:y})]}),(0,Le.jsx)("div",{className:dU("pane-wrapper"),children:(0,Le.jsx)(mU,{executeQueryData:E.data,executeQueryError:E.error,explainQueryData:O.data,explainQueryError:O.error,explainQueryLoading:O.isLoading,resultVisibilityState:N,onExpandResultHandler:()=>{k(SF.triggerExpand)},onCollapseResultHandler:()=>{k(SF.triggerCollapse)},type:o,theme:s,resultType:d,path:n,showPreview:c})})]})})}));function mU(e){let{executeQueryData:t,executeQueryError:n,explainQueryData:r,explainQueryError:i,explainQueryLoading:o,resultVisibilityState:a,onExpandResultHandler:s,onCollapseResultHandler:l,type:c,theme:u,resultType:d,path:h,showPreview:p}=e;if(p)return(0,Le.jsx)(XB,{database:h,type:c});if(d===cU.EXECUTE){if(t||n){const{stats:e,...r}=t||{};return(0,Le.jsx)(Sz,{data:r,stats:e,error:n,isResultsCollapsed:a.collapsed,onExpandResults:s,onCollapseResults:l})}return null}if(d===cU.EXPLAIN){const{plan:e,ast:t}=r||{};return(0,Le.jsx)(YB,{error:i,explain:e,ast:t,loading:o,theme:u,isResultsCollapsed:a.collapsed,onExpandResults:s,onCollapseResults:l})}return null}const gU=[{id:us._0.newQuery,title:sF("tabs.newQuery")},{id:us._0.history,title:sF("tabs.history")},{id:us._0.saved,title:sF("tabs.saved")}],vU=e=>{let{className:t,activeTab:n}=e;const r=Ca(),i=(0,Ta.mB)(r);return(0,Le.jsx)("div",{className:t,children:(0,Le.jsx)(wt,{size:"l",allowNotSelected:!0,activeTab:n,items:gU,wrapTo:(e,t)=>{let{id:n}=e;const r=fs({...i,[ds.queryTab]:n});return(0,Le.jsx)(_l,{to:r,children:t},n)}})})},yU=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M11.423 1A3.577 3.577 0 0 1 15 4.577c0 .27-.108.53-.3.722l-.528.529-1.971 1.971-5.059 5.059a3 3 0 0 1-1.533.82l-2.638.528a1 1 0 0 1-1.177-1.177l.528-2.638a3 3 0 0 1 .82-1.533l5.059-5.059 2.5-2.5c.191-.191.451-.299.722-.299Zm-2.31 4.009-4.91 4.91a1.5 1.5 0 0 0-.41.766l-.38 1.903 1.902-.38a1.5 1.5 0 0 0 .767-.41l4.91-4.91a2.077 2.077 0 0 0-1.88-1.88Zm3.098.658a3.59 3.59 0 0 0-1.878-1.879l1.28-1.28c.995.09 1.788.884 1.878 1.88l-1.28 1.28Z",clipRule:"evenodd"})),bU=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M9 2H7a.5.5 0 0 0-.5.5V3h3v-.5A.5.5 0 0 0 9 2Zm2 1v-.5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2V3H2.251a.75.75 0 0 0 0 1.5h.312l.317 7.625A3 3 0 0 0 5.878 15h4.245a3 3 0 0 0 2.997-2.875l.318-7.625h.312a.75.75 0 0 0 0-1.5H11Zm.936 1.5H4.064l.315 7.562A1.5 1.5 0 0 0 5.878 13.5h4.245a1.5 1.5 0 0 0 1.498-1.438l.315-7.562Zm-6.186 2v5a.75.75 0 0 0 1.5 0v-5a.75.75 0 0 0-1.5 0Zm3.75-.75a.75.75 0 0 1 .75.75v5a.75.75 0 0 1-1.5 0v-5a.75.75 0 0 1 .75-.75Z",clipRule:"evenodd"})),xU=Me("ydb-saved-queries"),wU=e=>{let{visible:t,queryName:n,onCancelClick:r,onConfirmClick:i}=e;return(0,Le.jsxs)(qO,{open:t,hasCloseButton:!1,size:"s",onClose:r,onEnterKeyDown:i,children:[(0,Le.jsx)(qO.Header,{caption:sF("delete-dialog.header")}),(0,Le.jsxs)(qO.Body,{className:xU("dialog-body"),children:[sF("delete-dialog.question"),(0,Le.jsx)("span",{className:xU("dialog-query-name"),children:" ".concat(n,"?")})]}),(0,Le.jsx)(qO.Footer,{textButtonApply:sF("delete-dialog.delete"),textButtonCancel:sF("delete-dialog.cancel"),onClickButtonCancel:r,onClickButtonApply:i})]})},SU=e=>{let{savedQueries:t,changeUserInput:n,onDeleteQuery:r}=e;const i=Ao(),[o,s]=a.useState(!1),[l,c]=a.useState(""),u=()=>{s(!1),c("")},d=[{name:"name",header:"Name",render:e=>{let{row:t}=e;return(0,Le.jsx)("div",{className:xU("query-name"),children:t.name})},width:200},{name:"body",header:"Query Text",render:e=>{let{row:t}=e;return(0,Le.jsxs)("div",{className:xU("query"),children:[(0,Le.jsx)("div",{className:xU("query-body"),children:(0,Le.jsx)(kA,{value:t.body,maxQueryHeight:DA})}),(0,Le.jsxs)("span",{className:xU("controls"),children:[(0,Le.jsx)(Ie.z,{view:"flat-secondary",children:(0,Le.jsx)(we.J,{data:yU})}),(0,Le.jsx)(Ie.z,{view:"flat-secondary",onClick:(n=t.name,e=>{e.stopPropagation(),s(!0),c(n)}),children:(0,Le.jsx)(we.J,{data:bU})})]})]});var n},sortable:!1,resizeMinWidth:650}];return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("div",{className:xU(),children:(0,Le.jsx)(qc,{columnsWidthLSKey:"savedQueriesTableColumnsWidth",columns:d,data:t,settings:AA,emptyDataMessage:sF("saved.empty"),rowClassName:()=>xU("row"),onRowClick:e=>{return t=e.body,r=e.name,n({input:t}),i((0,tU.GC)(r)),void i((0,Gk.jk)(us._0.newQuery));var t,r},initialSortOrder:{columnId:"name",order:Hc.ZP.ASCENDING}})}),(0,Le.jsx)(wU,{visible:o,queryName:l,onCancelClick:()=>{u()},onConfirmClick:()=>{u(),r(l),c("")}})]})},_U=Me("ydb-query"),CU=e=>{const t=Ao(),{queryTab:n=us._0.newQuery}=Do((e=>e.tenant)),[r,i]=Mo(Lo.DG,[]),o=e=>{const t=r.filter((t=>t.name.toLowerCase()!==e.toLowerCase()));i(t)},s=e=>{t((0,TA.B8)(e))},l=a.useMemo((()=>gU.find((e=>{let{id:t}=e;return t===n}))),[n]);return(0,Le.jsxs)("div",{className:_U(),children:[l?(0,Le.jsx)(oe,{children:(0,Le.jsx)("title",{children:l.title})}):null,(0,Le.jsx)(vU,{className:_U("tabs"),activeTab:n}),(0,Le.jsx)("div",{className:_U("content"),children:(()=>{switch(n){case us._0.newQuery:return(0,Le.jsx)(fU,{changeUserInput:s,...e});case us._0.history:return(0,Le.jsx)(uF,{changeUserInput:s});case us._0.saved:return(0,Le.jsx)(SU,{changeUserInput:s,savedQueries:r,onDeleteQuery:o});default:return null}})()})]})},EU=Me("object-general");const TU=function(e){const t=(0,Ue.C)(),{tenantPage:n}=Do((e=>e.tenant)),r=()=>{const{type:r,additionalTenantProps:i,additionalNodesProps:o,tenantName:a}=e;return n===us.m2.query?(0,Le.jsx)(CU,{path:a,theme:t,type:r}):(0,Le.jsx)(oF,{type:r,additionalTenantProps:i,additionalNodesProps:o})};return(()=>{const{tenantName:t}=e;return t?(0,Le.jsx)("div",{className:EU(),children:r()}):null})()},OU=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M13.5 6H8.75v2.5h4.75V6ZM7.25 6H2.5v2.5h4.75V6ZM1 6V5a3 3 0 0 1 3-3h8a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V6Zm7.75 4h4.75v1a1.5 1.5 0 0 1-1.5 1.5H8.75V10ZM2.5 10h4.75v2.5H4A1.5 1.5 0 0 1 2.5 11v-1Z",clipRule:"evenodd"})),NU=e=>{var t,n,r,i,o;let{data:s}=e;if(!s)return(0,Le.jsx)("div",{className:"error",children:"No CDC Stream data"});const l=null===(t=s.PathDescription)||void 0===t?void 0:t.CdcStreamDescription,c=[];c.push(EI("PathType",null===(n=s.PathDescription)||void 0===n||null===(r=n.Self)||void 0===r?void 0:r.PathType)),c.push(EI("CreateStep",null===(i=s.PathDescription)||void 0===i||null===(o=i.Self)||void 0===o?void 0:o.CreateStep));const{Mode:u,Format:d}=l||{};return c.push(...Ts(DI,{Mode:u,Format:d})),(0,Le.jsx)(a.Fragment,{children:c.length?(0,Le.jsx)(Ss,{info:c}):"Empty"})},kU=e=>{var t,n,r,i,o;let{data:s}=e;if(!s)return(0,Le.jsx)("div",{className:"error",children:"No PersQueueGroup data"});const l=null===(t=s.PathDescription)||void 0===t?void 0:t.PersQueueGroup,c=[];return c.push(EI("PathType",null===(n=s.PathDescription)||void 0===n||null===(r=n.Self)||void 0===r?void 0:r.PathType)),c.push(EI("CreateStep",null===(i=s.PathDescription)||void 0===i||null===(o=i.Self)||void 0===o?void 0:o.CreateStep)),c.push(jI("Partitions",(null===l||void 0===l?void 0:l.Partitions)||[])),c.push(jI("PQTabletConfig",(null===l||void 0===l?void 0:l.PQTabletConfig)||{PartitionConfig:{LifetimeSeconds:0}})),(0,Le.jsx)(a.Fragment,{children:c.length?(0,Le.jsx)(Ss,{info:c}):"Empty"})};var jU=n(71336);const IU=JSON.parse('{"page.title":"Database","acl.owner":"Owner","acl.empty":"No Acl data","summary.navigation":"Navigation","summary.showPreview":"Show preview","summary.copySchemaPath":"Copy schema path","actions.copied":"The path is copied to the clipboard","actions.notCopied":"Couldn\u2019t copy the path","actions.copyPath":"Copy path","actions.openPreview":"Open preview","actions.createTable":"Create table...","actions.createExternalTable":"Create external table...","actions.createTopic":"Create topic...","actions.createView":"Create view...","actions.dropTable":"Drop table...","actions.dropTopic":"Drop topic...","actions.dropView":"Drop view...","actions.alterTable":"Alter table...","actions.alterTopic":"Alter topic...","actions.selectQuery":"Select query...","actions.upsertQuery":"Upsert query..."}'),PU=(0,We.wZ)("ydb-tenant",{en:IU}),DU=Me("ydb-acl"),AU={...Lo.LE,dynamicRender:!1,stickyTop:36},RU=e=>{if(e&&e.endsWith("@staff")&&!e.startsWith("svc_")){return e.split("@")[0]}return e},MU=[{name:"AccessType",header:"Access Type",sortable:!1,render:e=>{let{row:t}=e;return t.AccessType}},{name:"AccessRights",header:"Access Rights",render:e=>{var t;let{row:n}=e;return null===(t=n.AccessRights)||void 0===t?void 0:t.map(((e,t)=>(0,Le.jsx)("div",{children:e},t)))},sortable:!1},{name:"Subject",sortable:!1,render:e=>{let{row:t}=e;return RU(t.Subject)},width:140},{name:"InheritanceType",header:"Inheritance Type",render:e=>{var t;let{row:n}=e;return null===(t=n.InheritanceType)||void 0===t?void 0:t.map(((e,t)=>(0,Le.jsx)("div",{children:e},t)))},sortable:!1}],LU=()=>{const e=Ao(),{currentSchemaPath:t}=Do((e=>e.schema)),{loading:n,error:r,acl:i,owner:o,wasLoaded:s}=Do((e=>e.schemaAcl));a.useEffect((()=>(t&&e((0,jU.Y)({path:t})),()=>{e((0,jU.Yg)())})),[t,e]);return n&&!s?(0,Le.jsx)(N_,{}):r?(0,Le.jsx)(zc,{error:r}):n||i||o?(0,Le.jsx)("div",{className:DU(),children:(0,Le.jsxs)("div",{className:DU("result"),children:[o?(0,Le.jsxs)("div",{className:DU("owner-container"),children:[(0,Le.jsx)("span",{className:DU("owner-label"),children:"".concat(PU("acl.owner"),": ")}),RU(o)]}):null,i&&i.length?(0,Le.jsx)(qc,{columnsWidthLSKey:"aclTableColumnsWidth",columns:MU,data:i,settings:AU}):null]})}):(0,Le.jsx)(a.Fragment,{children:PU("acl.empty")})},FU=JSON.parse('{"label_error":"Error","label_empty":"No data"}'),zU=JSON.parse('{"label_error":"\u041e\u0448\u0438\u0431\u043a\u0430","label_empty":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445"}'),BU=(0,mi.e)({en:FU,ru:zU},"ydb-navigation-tree"),UU=rC("ydb-navigation-tree-view-empty");function HU(e){let{level:t}=e;return(0,Le.jsx)(aC,{name:(0,Le.jsx)("span",{className:UU(),children:BU("label_empty")}),level:t})}const VU=rC("ydb-navigation-tree-view-error");function GU(e){let{level:t}=e;return(0,Le.jsx)(aC,{name:(0,Le.jsx)("span",{className:VU(),children:BU("label_error")}),level:t})}const WU=(0,le.Ge)("spin"),qU=a.forwardRef((function(e,t){const{size:n="m",style:r,className:i,qa:o}=e;return a.createElement("div",{ref:t,style:r,className:WU({size:n},i),"data-qa":o},a.createElement("div",{className:WU("inner")}))})),ZU=rC("ydb-navigation-tree-view-loader");function YU(e){let{level:t}=e;return(0,Le.jsx)(aC,{name:(0,Le.jsx)("div",{className:ZU(),children:(0,Le.jsx)(qU,{size:"xs"})}),level:t})}function KU(e){return(0,Le.jsx)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},e,{children:(0,Le.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.22 15.03s-.001 0 0 0a.75.75 0 0 0 1.06-1.06l-.47-.47H10a3.016 3.016 0 0 0 1.507-.405A2.999 2.999 0 0 0 13 10.5V7.896h.003a2.735 2.735 0 0 0 .785-.366 2.75 2.75 0 1 0-2.288.366V10.5A1.5 1.5 0 0 1 10 12h-.19l.47-.47s0 .001 0 0a.75.75 0 0 0-1.06-1.06l-.47.47-1.28 1.28a.75.75 0 0 0 0 1.06l1.75 1.75ZM5.72 2.97a.75.75 0 0 1 1.06 0l.47.47 1.28 1.28a.748.748 0 0 1 0 1.06L6.78 7.53c.001 0 0 0 0 0a.751.751 0 0 1-1.06-1.06L6.19 6H6a1.5 1.5 0 0 0-1.5 1.5v2.604a2.757 2.757 0 0 1 2 2.646 2.738 2.738 0 0 1-1.212 2.28 2.737 2.737 0 0 1-1.538.47A2.747 2.747 0 0 1 1 12.75a2.751 2.751 0 0 1 2-2.646V7.5a2.999 2.999 0 0 1 3-3h.19l-.47-.47a.75.75 0 0 1 0-1.06Zm-.908 9.121A1.246 1.246 0 0 1 5 12.75a1.25 1.25 0 1 1-.188-.659ZM11 5.25a1.25 1.25 0 1 1 2.5 0 1.25 1.25 0 0 1-2.5 0Z"})}))}function QU(e){return(0,Le.jsx)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},e,{children:(0,Le.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.01033 3.79551C2.11275 2.787 2.96447 2 4 2H5.5H7H9H10.5H12C13.1046 2 14 2.89543 14 4V5.5V12C14 13.1046 13.1046 14 12 14H10.5H9H7H5.5H4C2.89543 14 2 13.1046 2 12V5.5V4C2 3.93096 2.0035 3.86275 2.01033 3.79551ZM10.5 12.5H11.5C12.0523 12.5 12.5 12.0523 12.5 11.5V5.5H10.5L10.5 12.5ZM9 5.5L9 12.5H7L7 5.5H9ZM3.5 5.5H5.5L5.5 12.5H4.5C3.94772 12.5 3.5 12.0523 3.5 11.5V5.5Z"})}))}function XU(e){return(0,Le.jsx)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",fill:"currentColor"},e,{children:(0,Le.jsx)("path",{d:"M448 80V128C448 172.2 347.7 208 224 208C100.3 208 0 172.2 0 128V80C0 35.82 100.3 0 224 0C347.7 0 448 35.82 448 80zM393.2 214.7C413.1 207.3 433.1 197.8 448 186.1V288C448 332.2 347.7 368 224 368C100.3 368 0 332.2 0 288V186.1C14.93 197.8 34.02 207.3 54.85 214.7C99.66 230.7 159.5 240 224 240C288.5 240 348.3 230.7 393.2 214.7V214.7zM54.85 374.7C99.66 390.7 159.5 400 224 400C288.5 400 348.3 390.7 393.2 374.7C413.1 367.3 433.1 357.8 448 346.1V432C448 476.2 347.7 512 224 512C100.3 512 0 476.2 0 432V346.1C14.93 357.8 34.02 367.3 54.85 374.7z"})}))}function $U(e){return(0,Le.jsx)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},e,{children:(0,Le.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M0 6.75C0 6.35156 0.338542 6 0.722222 6L3.61111 6V3L0.722222 3C0.338542 3 0 2.67188 0 2.25C0 1.85156 0.338542 1.5 0.722222 1.5L3.61111 1.5V0.750001C3.61111 0.351563 3.94965 0 4.33333 0C4.73958 0 5.05556 0.351563 5.05556 0.750001H5.77778C7.53819 0.750001 8.98264 2.03906 9.32118 3.75H12V5.25H9.32118C9.29095 5.4049 9.25189 5.55606 9.20457 5.70291C9.10459 5.73587 9.00778 5.77066 8.9144 5.80723C8.505 5.96755 8.12646 6.17556 7.83841 6.44187C7.5498 6.70871 7.3 7.08678 7.3 7.56255V7.90902C6.83862 8.12843 6.32337 8.25 5.77778 8.25H5.05556C5.05556 8.67188 4.73958 9 4.33333 9C3.94965 9 3.61111 8.67188 3.61111 8.25V7.5L0.722222 7.5C0.338542 7.5 0 7.17188 0 6.75ZM16 8.5V7.5625C16 6.70312 14.1964 6 12 6C9.78571 6 8 6.70312 8 7.5625V8.5C8 9.37891 9.78571 10.0625 12 10.0625C14.1964 10.0625 16 9.37891 16 8.5ZM16 9.65234C15.7321 9.86719 15.375 10.0625 15.0179 10.1992C14.2143 10.5117 13.1429 10.6875 12 10.6875C10.8393 10.6875 9.76786 10.5117 8.96429 10.1992C8.60714 10.0625 8.25 9.86719 8 9.65234V11.625C8 12.5039 9.78571 13.1875 12 13.1875C14.1964 13.1875 16 12.5039 16 11.625V9.65234ZM12 13.8125C10.8393 13.8125 9.76786 13.6367 8.96429 13.3242C8.60714 13.1875 8.25 12.9922 8 12.7773V14.4375C8 15.3164 9.78571 16 12 16C14.1964 16 16 15.3164 16 14.4375V12.7773C15.7321 12.9922 15.375 13.1875 15.0179 13.3242C14.2143 13.6367 13.1429 13.8125 12 13.8125Z"})}))}function JU(e){return(0,Le.jsx)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},e,{children:(0,Le.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M0 6.75C0 6.35156 0.351562 6 0.75 6L3.75 6V3L0.75 3C0.351562 3 0 2.67188 0 2.25C0 1.85156 0.351562 1.5 0.75 1.5L3.75 1.5V0.750001C3.75 0.351563 4.10156 0 4.5 0C4.92188 0 5.25 0.351563 5.25 0.750001H6C7.82812 0.750001 9.32812 2.03906 9.67969 3.75H12V5.25H9.67969C9.60376 5.62455 9.47428 5.97724 9.2995 6.30005H7.19969C6.09701 6.30005 5.26846 7.20143 5.25 8.25C5.25 8.67188 4.92188 9 4.5 9C4.10156 9 3.75 8.67188 3.75 8.25V7.5L0.75 7.5C0.351562 7.5 0 7.17188 0 6.75ZM16 8.28571C16 7.58259 15.4336 7 14.75 7H7.25C6.54688 7 6 7.58259 6 8.28571V14.7143C6 15.4375 6.54688 16 7.25 16H14.75C15.4336 16 16 15.4375 16 14.7143V8.28571ZM10.375 9.57143V11.5H7.25V9.57143H10.375ZM7.25 14.7143V12.7857H10.375V14.7143H7.25ZM14.75 14.7143H11.625V12.7857H14.75V14.7143ZM14.75 9.57143V11.5H11.625V9.57143H14.75Z"})}))}function eH(e){return(0,Le.jsx)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},e,{children:(0,Le.jsx)("path",{d:"M13.2812 4.875H8.40625L6.78125 3.25H2.71875C2.0332 3.25 1.5 3.80859 1.5 4.46875V11.7812C1.5 12.4668 2.0332 13 2.71875 13H13.2812C13.9414 13 14.5 12.4668 14.5 11.7812V6.09375C14.5 5.43359 13.9414 4.875 13.2812 4.875Z"})}))}function tH(e){return(0,Le.jsx)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},e,{children:(0,Le.jsx)("path",{d:"M15.2109 9.06445C15.4648 8.6582 15.1602 8.125 14.6777 8.125H4.54688C4.01367 8.125 3.37891 8.50586 3.125 8.9375L1.29688 12.0859C1.04297 12.4922 1.34766 13 1.83008 13H11.9609C12.4941 13 13.1289 12.6445 13.3828 12.2129L15.2109 9.06445ZM4.54688 7.3125H12.875V6.09375C12.875 5.43359 12.3164 4.875 11.6562 4.875H7.59375L5.96875 3.25H1.90625C1.2207 3.25 0.6875 3.80859 0.6875 4.46875V11.5527L2.43945 8.53125C2.87109 7.79492 3.6582 7.3125 4.54688 7.3125Z"})}))}function nH(e){return(0,Le.jsx)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},e,{children:(0,Le.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.24935 2.94323L8.5 9.5H12.1L11.1446 14.2772C11.0322 14.839 11.7994 15.1177 12.0738 14.6147L15.9111 7.57956C16.1765 7.09311 15.8244 6.5 15.2703 6.5H12.9L13.5325 3.33728C13.6192 2.90413 13.2879 2.5 12.8461 2.5H9.74611C9.49194 2.5 9.27821 2.69069 9.24935 2.94323ZM7.40003 10.5L8.25717 3H1.625C0.710938 3 0 3.73633 0 4.625V12.75C0 13.6641 0.710938 14.375 1.625 14.375H10.1517C10.1538 14.2803 10.1646 14.1822 10.1848 14.0811L10.901 10.5H7.40003ZM5.6875 8.6875V6.25H1.625V8.6875H5.6875ZM1.625 10.3125V12.75H5.6875V10.3125H1.625Z"})}))}function rH(e){return(0,Le.jsx)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},e,{children:(0,Le.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.01033 3.79551C2.11275 2.787 2.96447 2 4 2H7.3H8.8H12C13.1046 2 14 2.89543 14 4V5.5V8.2002V9.7002V12C14 13.1046 13.1046 14 12 14H8.8H7.3H4C2.89543 14 2 13.1046 2 12V9.7002V8.2002V5.5V4C2 3.93096 2.0035 3.86275 2.01033 3.79551ZM8.8 12.5H11.5C12.0523 12.5 12.5 12.0523 12.5 11.5V9.7002H8.8V12.5ZM7.3 9.7002V12.5H4.5C3.94772 12.5 3.5 12.0523 3.5 11.5V9.7002H7.3ZM8.8 8.2002H12.5V5.5H8.8L8.8 8.2002ZM7.3 5.5L7.3 8.2002H3.5V5.5H7.3Z"})}))}function iH(e){return(0,Le.jsxs)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},e,{children:[(0,Le.jsx)("rect",{x:"2",y:"2.20001",width:"9",height:"2.5",rx:"0.5"}),(0,Le.jsx)("rect",{x:"5",y:"6.70001",width:"9",height:"2.5",rx:"0.5"}),(0,Le.jsx)("rect",{x:"2",y:"11.2",width:"9",height:"2.5",rx:"0.5"})]}))}function oH(e){return(0,Le.jsxs)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor"},e,{children:[(0,Le.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.625 2H7.49951C6.47457 2.77006 5.7552 3.92488 5.55588 5.25H1.625V7.6875H5.79193C6.48417 9.6186 8.33076 11 10.5 11C10.877 11 11.2443 10.9583 11.5974 10.8792L12.7748 12.5799C12.4905 13.0601 11.9665 13.375 11.375 13.375H1.625C0.710938 13.375 0 12.6641 0 11.75V3.625C0 2.73633 0.710938 2 1.625 2ZM1.625 11.75V9.3125H5.6875V11.75H1.625Z"}),(0,Le.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M13.4411 8.71106C14.0985 7.9983 14.5 7.04604 14.5 6C14.5 3.79086 12.7091 2 10.5 2C8.29086 2 6.5 3.79086 6.5 6C6.5 8.20914 8.29086 10 10.5 10C11.0316 10 11.5389 9.89631 12.0029 9.70806L14.2807 12.9981C14.5557 13.3955 15.1008 13.4946 15.4981 13.2195C15.8955 12.9444 15.9946 12.3993 15.7195 12.002L13.4411 8.71106ZM12.5 6C12.5 7.10457 11.6046 8 10.5 8C9.39543 8 8.5 7.10457 8.5 6C8.5 4.89543 9.39543 4 10.5 4C11.6046 4 12.5 4.89543 12.5 6Z"})]}))}function aH(e){return"status"in e}function sH(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;const i=e[t];if(i&&(n(i,r,t,e),!i.collapsed))for(const o of i.children)sH(e,"".concat(t,"/").concat(o),n,r+1)}var lH;function cH(e){return Object.assign(Object.assign(Object.assign({},{collapsed:!0,loading:!1,loaded:!1,error:!1,children:[]}),{expandable:"database"===e.type||"directory"===e.type}),e)}function uH(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;var n,r;switch(t.type){case lH.ToggleCollapsed:return Object.assign(Object.assign({},e),{[t.payload.path]:Object.assign(Object.assign({},e[t.payload.path]),{collapsed:!e[t.payload.path].collapsed})});case lH.StartLoading:return Object.assign(Object.assign({},e),{[t.payload.path]:Object.assign(Object.assign({},e[t.payload.path]),{loading:!0,loaded:!1,error:!1,children:[]})});case lH.FinishLoading:{const i=Object.assign(Object.assign({},e),{[t.payload.path]:Object.assign(Object.assign({},e[t.payload.path]),{loading:!1,loaded:Boolean(t.payload.data),error:!1})});if(t.payload.data){i[t.payload.path].children=t.payload.data.map((e=>{let{name:t}=e;return t}));for(const o of t.payload.data){const a="".concat(t.payload.path,"/").concat(o.name),{activePath:s=""}=t.payload,l=null!==(r=null===(n=e[a])||void 0===n?void 0:n.collapsed)&&void 0!==r?r:!s.startsWith("".concat(a,"/"));i[a]=cH(Object.assign(Object.assign({},o),{collapsed:l,path:a}))}}return i}case lH.ErrorLoading:return Object.assign(Object.assign({},e),{[t.payload.path]:Object.assign(Object.assign({},e[t.payload.path]),{loading:!1,loaded:!1,error:!0})});case lH.ResetNode:return Object.assign(Object.assign({},e),{[t.payload.path]:Object.assign(Object.assign({},e[t.payload.path]),{collapsed:!0,loading:!1,loaded:!1,error:!1,children:[]})});default:return e}}function dH(e,t){const n=[];return sH(e,t,((e,t)=>{n.push(Object.assign(Object.assign({},e),{level:t}));const r=function(e,t){if(!e.collapsed)return e.loading?{path:e.path,status:"loading",level:t+1}:e.error?{path:e.path,status:"error",level:t+1}:e.loaded&&0===e.children.length?{path:e.path,status:"empty",level:t+1}:void 0}(e,t);r&&n.push(r)})),n}function hH(e,t){switch(e){case"async_replication":return(0,Le.jsx)(KU,{height:16});case"database":return(0,Le.jsx)(XU,{height:14});case"directory":return t?(0,Le.jsx)(eH,{height:16}):(0,Le.jsx)(tH,{height:16});case"index":return(0,Le.jsx)(nH,{height:16});case"table":case"index_table":return(0,Le.jsx)(rH,{height:16});case"column_table":return(0,Le.jsx)(QU,{height:16});case"stream":case"topic":return(0,Le.jsx)(iH,{height:16});case"external_table":return(0,Le.jsx)(JU,{height:16});case"external_data_source":return(0,Le.jsx)($U,{height:16});case"view":return(0,Le.jsx)(oH,{height:16});default:return null}}function pH(e){let{path:t,fetchPath:n,activePath:r,state:i,level:o,dispatch:s,children:l,onActivate:c,getActions:u,renderAdditionalNodeElements:d,cache:h}=e;const p=i[t];a.useEffect((()=>{p.collapsed?h||s({type:lH.ResetNode,payload:{path:t}}):p.loaded||p.loading||(s({type:lH.StartLoading,payload:{path:t}}),n(t).then((e=>{s({type:lH.FinishLoading,payload:{path:t,activePath:r,data:e}})})).catch((e=>{s({type:lH.ErrorLoading,payload:{path:t,error:e}})})))}),[p.collapsed]);const f=a.useCallback((()=>{c&&c(t)}),[t,c]),m=a.useCallback((()=>{s({type:lH.ToggleCollapsed,payload:{path:t}})}),[s,t]),g=a.useMemo((()=>null===d||void 0===d?void 0:d(p.path,p.type)),[d,p]),v=a.useMemo((()=>null===u||void 0===u?void 0:u(p.path,p.type)),[u,p]);return(0,Le.jsx)(aC,{name:p.name,icon:hH(p.type,p.collapsed),collapsed:p.collapsed,active:p.path===r,actions:v,additionalNodeElements:g,hasArrow:p.expandable,onClick:f,onArrowClick:m,level:o,children:l})}!function(e){e.ToggleCollapsed="toggle-collapsed",e.StartLoading="start-loading",e.FinishLoading="finish-loading",e.ErrorLoading="error-loading",e.ResetNode="reset-node"}(lH||(lH={}));const fH=e=>{const t="".concat(e.path,"|").concat(e.status);return"loading"===e.status?(0,Le.jsx)(YU,{level:e.level},t):"error"===e.status?(0,Le.jsx)(GU,{level:e.level},t):(0,Le.jsx)(HU,{level:e.level},t)};function mH(e){let{rootState:t,fetchPath:n,getActions:r,renderAdditionalNodeElements:i,activePath:o,onActivePathUpdate:s,cache:l=!0,virtualize:c=!1}=e;const[u,d]=a.useReducer(uH,{[t.path]:cH(t)}),h=a.useMemo((()=>dH(u,t.path)),[t.path,u]),p=e=>(0,Le.jsx)(pH,{state:u,path:e.path,activePath:o,fetchPath:n,dispatch:d,onActivate:s,getActions:r,renderAdditionalNodeElements:i,cache:l,level:e.level},e.path);return c?(0,Le.jsx)(ik(),{type:"uniform",length:h.length,useStaticSize:!0,itemRenderer:e=>{const t=h[e];return aH(t)?fH(t):p(t)}}):(0,Le.jsx)(a.Fragment,{children:h.map((e=>aH(e)?fH(e):p(e)))})}var gH=n(80977);const vH=e=>"-- docs: https://ydb.tech/en/docs/yql/reference/syntax/create_table\nCREATE TABLE `".concat(e,"/ydb_row_table` (\n category_id Uint64 NOT NULL,\n id Uint64,\n expire_at Datetime,\n updated_on Datetime,\n name Text,\n `binary-payload` Bytes,\n attributes JsonDocument,\n -- uncomment to add a secondary index\n -- INDEX idx_row_table_id GLOBAL SYNC ON ( id ) COVER ( name, attributes ), -- Secondary indexes docs https://ydb.tech/en/docs/yql/reference/syntax/create_table#secondary_index\n PRIMARY KEY (category_id, id)\n) \nWITH (\n AUTO_PARTITIONING_BY_SIZE = ENABLED,\n AUTO_PARTITIONING_PARTITION_SIZE_MB = 2048,\n AUTO_PARTITIONING_BY_LOAD = ENABLED,\n AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 4,\n AUTO_PARTITIONING_MAX_PARTITIONS_COUNT = 1024,\n -- uncomment to create a table with predefined partitions\n -- UNIFORM_PARTITIONS = 4, -- The number of partitions for uniform initial table partitioning.\n -- The primary key's first column must have type Uint64 or Uint32.\n -- A created table is immediately divided into the specified number of partitions\n -- uncomment to launch read only replicas in every AZ\n -- READ_REPLICAS_SETTINGS = 'PER_AZ:1', -- Enable read replicas for stale read, launch one replica in every availability zone\n -- uncomment to enable ttl\n -- TTL = Interval(\"PT1H\") ON expire_at, -- Enable background deletion of expired rows https://ydb.tech/en/docs/concepts/ttl\n KEY_BLOOM_FILTER = ENABLED -- With a Bloom filter, you can more efficiently determine\n -- if some keys are missing in a table when making multiple single queries by the primary key.\n)"),yH=e=>"ALTER TABLE `".concat(e,"`\n ADD COLUMN is_deleted Bool;"),bH=e=>"SELECT *\n FROM `".concat(e,"`\n LIMIT 10;"),xH=e=>"UPSERT INTO `".concat(e,"`\n ( `id`, `name` )\nVALUES ( );"),wH=e=>"DROP EXTERNAL TABLE `".concat(e,"`;"),SH=e=>{const t=e.split("/").slice(0,-1).join("/");return"CREATE EXTERNAL TABLE `".concat(t,'/my_external_table` (\n column1 Int,\n column2 Int\n) WITH (\n DATA_SOURCE="').concat(e,'",\n LOCATION="",\n FORMAT="json_as_string",\n `file_pattern`=""\n);')},_H=e=>"-- docs: https://ydb.tech/en/docs/yql/reference/syntax/create_topic\nCREATE TOPIC `".concat(e,"/my_topic` (\n CONSUMER consumer1,\n CONSUMER consumer2 WITH (read_from = Datetime('1970-01-01T00:00:00Z')) -- Sets up the message write time starting from which the consumer will receive data.\n -- Value type: Datetime OR Timestamp OR integer (unix-timestamp in the numeric format). \n -- Default value: now\n) WITH (\n min_active_partitions = 1, -- Minimum number of topic partitions.\n partition_count_limit = 0, -- Maximum number of active partitions in the topic. 0 is interpreted as unlimited.\n retention_period = Interval('PT18H'), -- Data retention period in the topic. Value type: Interval.\n retention_storage_mb = 0, -- Limit on the maximum disk space occupied by the topic data. \n -- When this value is exceeded, the older data is cleared, like under a retention policy. \n -- 0 is interpreted as unlimited.\n partition_write_speed_bytes_per_second = 1048576, -- Maximum allowed write speed per partition.\n partition_write_burst_bytes = 0 -- Write quota allocated for write bursts. \n -- When set to zero, the actual write_burst value is equalled to \n -- the quota value (this allows write bursts of up to one second).\n);"),CH=e=>"-- docs: https://ydb.tech/en/docs/yql/reference/syntax/alter_topic\nALTER TOPIC `".concat(e,"`\n ADD CONSUMER new_consumer WITH (read_from = Datetime('1970-01-01T00:00:00Z')), -- Sets up the message write time starting from which the consumer will receive data.\n -- Value type: Datetime OR Timestamp OR integer (unix-timestamp in the numeric format).\n -- Default value: now\n ALTER CONSUMER consumer1 SET (read_from = Datetime('1970-01-01T00:00:00Z')),\n DROP CONSUMER consumer2,\n SET (\n min_active_partitions = 1, -- Minimum number of topic partitions.\n partition_count_limit = 0, -- Maximum number of active partitions in the topic. 0 is interpreted as unlimited.\n retention_period = Interval('PT18H'), -- Data retention period in the topic. Value type: Interval.\n retention_storage_mb = 0, -- Limit on the maximum disk space occupied by the topic data. \n -- When this value is exceeded, the older data is cleared, like under a retention policy. \n -- 0 is interpreted as unlimited.\n partition_write_speed_bytes_per_second = 1048576, -- Maximum allowed write speed per partition.\n partition_write_burst_bytes = 0 -- Write quota allocated for write bursts. \n -- When set to zero, the actual write_burst value is equalled to\n -- the quota value (this allows write bursts of up to one second).\n );"),EH=e=>"DROP TOPIC `".concat(e,"`;"),TH=e=>"CREATE VIEW `".concat(e,"/my_view` WITH (security_invoker = TRUE) AS SELECT 1;"),OH=e=>"DROP VIEW `".concat(e,"`;"),NH=(e,t)=>(n,r)=>{const i=((e,t,n)=>{const{setActivePath:r,setQueryMode:i}=n,o=(n,o)=>()=>{o&&i(o),t((0,TA.B8)({input:n(e)})),t((0,Gk.Cs)(us.m2.query)),t((0,Gk.jk)(us._0.newQuery)),r(e)};return{createTable:o(vH,"script"),alterTable:o(yH,"script"),selectQuery:o(bH),upsertQuery:o(xH),createExternalTable:o(SH,"script"),dropExternalTable:o(wH,"script"),selectQueryFromExternalTable:o(bH,"query"),createTopic:o(_H,"script"),alterTopic:o(CH,"script"),dropTopic:o(EH,"script"),createView:o(TH,"script"),dropView:o(OH,"script"),copyPath:()=>{try{Az()(e),(0,gH.Z)({name:"Copied",title:PU("actions.copied"),type:"success"})}catch{(0,gH.Z)({name:"Not copied",title:PU("actions.notCopied"),type:"error"})}}}})(n,e,t),o={text:PU("actions.copyPath"),action:i.copyPath},a=[[o],[{text:PU("actions.createTable"),action:i.createTable},{text:PU("actions.createTopic"),action:i.createTopic},{text:PU("actions.createView"),action:i.createView}]],s=[[o],[{text:PU("actions.alterTable"),action:i.alterTable},{text:PU("actions.selectQuery"),action:i.selectQuery},{text:PU("actions.upsertQuery"),action:i.upsertQuery}]],l=[o];return{async_replication:l,database:a,directory:a,table:s,column_table:s,index_table:l,topic:[[o],[{text:PU("actions.alterTopic"),action:i.alterTopic},{text:PU("actions.dropTopic"),action:i.dropTopic}]],stream:l,index:l,external_table:[[o],[{text:PU("actions.selectQuery"),action:i.selectQueryFromExternalTable}],[{text:PU("actions.dropTable"),action:i.dropExternalTable}]],external_data_source:[[o],[{text:PU("actions.createExternalTable"),action:i.createExternalTable}]],view:[[o],[{text:PU("actions.selectQuery"),action:i.selectQuery}],[{text:PU("actions.dropView"),action:i.dropView}]]}[r]},kH=(e,t)=>(n,r)=>{const i=((e,t,n)=>{const{setActivePath:r}=n;return{openPreview:()=>{t((0,Vk.m7)(!0)),t((0,Gk.Cs)(us.m2.query)),t((0,Gk.jk)(us._0.newQuery)),r(e)}}})(n,e,t),o=(0,Le.jsx)(Ie.z,{view:"flat-secondary",onClick:i.openPreview,title:PU("actions.openPreview"),size:"s",children:(0,Le.jsx)(we.J,{data:OU})});return{async_replication:void 0,database:void 0,directory:void 0,table:o,column_table:o,index_table:void 0,topic:void 0,stream:void 0,index:void 0,external_table:o,external_data_source:void 0,view:o}[r]};function jH(e){const{rootPath:t,rootName:n,rootType:r,currentPath:i}=e,o=Ao(),[s,l]=Fo(),c=e=>{o((0,Vk.Ii)(e))};return a.useEffect((()=>{null!==i&&void 0!==i&&i.startsWith(t)||c(t)}),[]),(0,Le.jsx)(mH,{rootState:{path:t,name:n,type:(0,pj.lZ)(r),collapsed:!1},fetchPath:e=>window.api.getSchema({path:e},{concurrentId:"NavigationTree.getSchema|".concat(e)}).then((t=>{if(!t)throw new Error("no describe data about path ".concat(e));const{PathDescription:{Children:n=[]}={}}=t,r={[e]:t},i=n.map((t=>{const{Name:n="",PathType:i,PathSubType:o}=t;return r["".concat(e,"/").concat(n)]={PathDescription:{Self:t}},{name:n,type:(0,pj.lZ)(i,o),expandable:!(0,pj.Sb)(i,o)}}));return o((0,Vk.yM)(r)),i})),getActions:NH(o,{setActivePath:c,setQueryMode:l}),renderAdditionalNodeElements:kH(o,{setActivePath:c}),activePath:i,onActivePathUpdate:c,cache:!1,virtualize:!0})}const IH=Me("object-summary"),PH=()=>({triggerExpand:!1,triggerCollapse:!1,collapsed:Boolean(localStorage.getItem(Lo.Mn))});function DH(e){var t,n,r;let{type:i,subType:o,onCollapseSummary:s,onExpandSummary:l,isCollapsed:c}=e;const u=Ao(),[d,h]=a.useReducer(EF(Lo.Mn),void 0,PH),{data:p,currentSchemaPath:f,currentSchema:m={}}=Do((e=>e.schema)),{summaryTab:g=us.uw.overview}=Do((e=>e.tenant)),v=Ca(),y=ol().parse(v.search,{ignoreQueryPrefix:!0}),{name:b}=y,x=b?null===(t=p[b.toString()])||void 0===t||null===(n=t.PathDescription)||void 0===n?void 0:n.Self:void 0,w=f?p[f]:void 0,S=null===w||void 0===w||null===(r=w.PathDescription)||void 0===r?void 0:r.Self;a.useEffect((()=>{const e=(0,pj.vp)(i)&&!(0,pj.$J)(i);!i||e||hs.find((e=>e.id===g))||u((0,Gk.Tu)(us.uw.overview))}),[u,i,g]);const _=()=>{const e=(0,pj.vp)(i)&&!(0,pj.$J)(i)?[...hs,...ps]:hs;return(0,Le.jsx)("div",{className:IH("tabs"),children:(0,Le.jsx)(wt,{size:"l",items:e,activeTab:g,wrapTo:(e,t)=>{let{id:n}=e;const r=(0,Ta.ax)(Ta.ZP.tenant,void 0,{...y,name:b,[ds.summaryTab]:n});return(0,Le.jsx)(bl,{to:r,className:IH("tab"),children:t},n)},allowNotSelected:!0})})},C=()=>{switch(g){case us.uw.acl:return(0,Le.jsx)(LU,{});case us.uw.schema:return(0,Le.jsx)(bj,{type:i,path:f});default:return(()=>{var e;const t=Number(null===S||void 0===S?void 0:S.CreateStep),n=t?(0,ks.o0)(t):"unknown",r="Created At",i={[hj.gb.EPathTypeInvalid]:void 0,[hj.gb.EPathTypeDir]:void 0,[hj.gb.EPathTypeTable]:void 0,[hj.gb.EPathTypeSubDomain]:void 0,[hj.gb.EPathTypeTableIndex]:void 0,[hj.gb.EPathTypeExtSubDomain]:void 0,[hj.gb.EPathTypeColumnStore]:void 0,[hj.gb.EPathTypeColumnTable]:void 0,[hj.gb.EPathTypeCdcStream]:()=>(0,Le.jsx)(NU,{data:w}),[hj.gb.EPathTypePersQueueGroup]:()=>(0,Le.jsx)(kU,{data:w}),[hj.gb.EPathTypeExternalTable]:()=>(0,Le.jsx)(oP,{data:w}),[hj.gb.EPathTypeExternalDataSource]:()=>(0,Le.jsx)(JI,{data:w}),[hj.gb.EPathTypeView]:void 0,[hj.gb.EPathTypeReplication]:()=>{var e,t;return(0,Le.jsx)(Ss,{info:[{label:r,value:n},{label:"State",value:(0,Le.jsx)(aP,{state:null===w||void 0===w||null===(e=w.PathDescription)||void 0===e||null===(t=e.ReplicationDescription)||void 0===t?void 0:t.State})}]})}};let o=(null===S||void 0===S?void 0:S.PathType)&&(null===(e=i[S.PathType])||void 0===e?void 0:e.call(i));return o||(o=(0,Le.jsx)(Ss,{info:[{label:r,value:n}]})),o})()}},E=()=>{h(SF.triggerCollapse)},T=()=>{h(SF.triggerExpand)},O=()=>{h(SF.clear)},N=()=>{u((0,Vk.m7)(!0)),u((0,Gk.Cs)(us.m2.query)),u((0,Gk.jk)(us._0.newQuery))},k=()=>{const e=(0,pj.vp)(i)&&!(0,pj.dC)(o);return(0,Le.jsxs)(a.Fragment,{children:[e&&(0,Le.jsx)(Ie.z,{view:"flat-secondary",onClick:N,title:PU("summary.showPreview"),children:(0,Le.jsx)(we.J,{data:OU})}),f&&(0,Le.jsx)(pl,{text:f,view:"flat-secondary",title:PU("summary.copySchemaPath")}),(0,Le.jsx)(OF,{onCollapse:E,onExpand:T,isCollapsed:d.collapsed,initialDirection:"bottom"})]})},j=()=>{const{Status:e,Reason:t}=m;let n;return!i&&e&&t&&(n="".concat(e,": ").concat(t)),i?(0,Le.jsx)("div",{className:IH("entity-type"),children:i.replace("EPathType","")}):(0,Le.jsx)("div",{className:IH("entity-type",{error:!0}),children:(0,Le.jsx)(Io,{content:n,offset:{left:0}})})};return b?(0,Le.jsxs)("div",{className:IH(),children:[(0,Le.jsx)("div",{className:IH({hidden:c}),children:(0,Le.jsxs)(Hk,{direction:"vertical",defaultSizePaneKey:Lo.wr,onSplitStartDragAdditional:O,triggerCollapse:d.triggerCollapse,triggerExpand:d.triggerExpand,minSize:[200,52],collapsedSizes:[100,0],children:[f?(0,Le.jsxs)("div",{className:IH("tree-wrapper"),children:[(0,Le.jsx)("div",{className:IH("tree-header"),children:PU("summary.navigation")}),(0,Le.jsx)("div",{className:IH("tree"),children:x&&(0,Le.jsx)(jH,{rootPath:b,rootName:x.Name||String(b),rootType:x.PathType,currentPath:f})})]}):(0,Le.jsx)("div",{children:(0,Le.jsx)(N_,{})}),(0,Le.jsxs)("div",{className:IH("info"),children:[(0,Le.jsxs)("div",{className:IH("sticky-top"),children:[(0,Le.jsxs)("div",{className:IH("info-header"),children:[(0,Le.jsxs)("div",{className:IH("info-title"),children:[j(),(0,Le.jsx)("div",{className:IH("path-name"),children:f})]}),(0,Le.jsx)("div",{className:IH("info-controls"),children:k()})]}),_()]}),(0,Le.jsx)("div",{className:IH("overview-wrapper"),children:C()})]})]})}),(0,Le.jsx)(OF,{onCollapse:s,onExpand:l,isCollapsed:c,initialDirection:"left",className:IH("action-button")})]}):null}const AH=Me("tenant-page"),RH=()=>({triggerExpand:!1,triggerCollapse:!1,collapsed:Boolean(localStorage.getItem(Lo.sO))});const MH=function(e){var t;const[r,i]=a.useReducer(EF(Lo.sO),void 0,RH),o=a.useRef(),{currentSchemaPath:s,currentSchema:l={}}=Do((e=>e.schema)),{PathType:c,PathSubType:u}=Do((e=>{var t,n;return s?null===(t=e.schema.data[s])||void 0===t||null===(n=t.PathDescription)||void 0===n?void 0:n.Self:void 0}))||{},{PathType:d,PathSubType:h}=(null===(t=l.PathDescription)||void 0===t?void 0:t.Self)||{},{error:{status:p=200}={}}=Do((e=>e.schema)),f=Ao(),m=Ca(),g=ol().parse(m.search,{ignoreQueryPrefix:!0}),{name:v}=g,y=v;a.useEffect((()=>{if(y&&"string"===typeof y&&o.current!==y){(async()=>{const{registerYQLCompletionItemProvider:e}=await Promise.all([n.e(1551),n.e(8424),n.e(6531)]).then(n.bind(n,16531));e(y)})().catch(console.error),o.current=y}}),[y]),a.useEffect((()=>{f((0,Vk.J1)({path:y}))}),[y,f]),a.useEffect((()=>{s&&s!==y&&f((0,Vk.J1)({path:s}))}),[s,f,y]),a.useEffect((()=>{y&&f((0,Rl.J)("tenant",{tenantName:y}))}),[y,f]);const b=403===p,x=s||y||PU("page.title");return(0,Le.jsxs)("div",{className:AH(),children:[(0,Le.jsx)(oe,{defaultTitle:"".concat(x," \u2014 YDB Monitoring"),titleTemplate:"%s \u2014 ".concat(x," \u2014 YDB Monitoring")}),b?(0,Le.jsx)(Fc,{}):(0,Le.jsxs)(Hk,{defaultSizePaneKey:Lo.z4,defaultSizes:[25,75],triggerCollapse:r.triggerCollapse,triggerExpand:r.triggerExpand,minSize:[36,200],onSplitStartDragAdditional:()=>{i(SF.clear)},children:[(0,Le.jsx)(DH,{type:c||d,subType:u||h,onCollapseSummary:()=>{i(SF.triggerCollapse)},onExpandSummary:()=>{i(SF.triggerExpand)},isCollapsed:r.collapsed}),(0,Le.jsx)(TU,{type:c||d,additionalTenantProps:e.additionalTenantProps,additionalNodesProps:e.additionalNodesProps,tenantName:y})]})]})},LH=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M9.28 4.78a.75.75 0 0 0 0-1.06l-2.5-2.5a.75.75 0 1 0-1.06 1.06L6.94 3.5H1.75a.75.75 0 1 0 0 1.5h5.19L5.72 6.22a.75.75 0 1 0 1.06 1.06l2.5-2.5Zm-.06 3.94-2.5 2.5a.75.75 0 0 0 0 1.06l2.5 2.5a.75.75 0 1 0 1.06-1.06L9.06 12.5h5.19a.75.75 0 0 0 0-1.5H9.06l1.22-1.22a.75.75 0 1 0-1.06-1.06ZM14 4.25a1.75 1.75 0 1 1-3.5 0 1.75 1.75 0 0 1 3.5 0ZM3.75 13.5a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5Z",clipRule:"evenodd"})),FH=JSON.parse('{"group-id":"Group ID","pool-name":"Storage Pool Name","size":"Size","erasure":"Erasure"}'),zH=(0,We.wZ)("ydb-group-info",{en:FH});function BH(e){let{data:t,...n}=e;const{GroupID:r,PoolName:i,Used:o,Limit:a,ErasureSpecies:s}=t,l=[];return Td(r)&&l.push({label:zH("group-id"),value:r}),Td(i)&&l.push({label:zH("pool-name"),value:i}),Td(s)&&l.push({label:zH("erasure"),value:s}),Number(o)>=0&&Number(a)>=0&&l.push({label:zH("size"),value:(0,Le.jsx)(Iu,{value:o,capacity:a,formatValues:ks.q3,colorizeProgress:!0})}),(0,Le.jsx)(Ss,{info:l,...n})}const UH=Dl.h.injectEndpoints({endpoints:e=>({getVDiskData:e.query({queryFn:async e=>{let{nodeId:t,pDiskId:n,vDiskSlotId:r}=e;try{const{vDiskData:e,groupData:i}=await async function(e){let{nodeId:t,pDiskId:n,vDiskSlotId:r}=e,{signal:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=await Promise.all([window.api.getVDiskInfo({nodeId:t,pDiskId:n,vDiskSlotId:r},{signal:i}),window.api.getPDiskInfo({nodeId:t,pDiskId:n},{signal:i}),window.api.getNodeInfo(t,{signal:i})]),a=function(e){var t,n,r,i,o,a,s;let[l,c,u]=e;const d=Nh(null===(t=l.VDiskStateInfo)||void 0===t?void 0:t[0]),h=kh(null===(n=c.PDiskStateInfo)||void 0===n?void 0:n[0]),p=null===(r=u.SystemStateInfo)||void 0===r?void 0:r[0],f=(0,Na.Ns)(p),m=null!==(i=null!==(o=d.NodeId)&&void 0!==o?o:h.NodeId)&&void 0!==i?i:f.NodeId,g=f.Host,v=null===(a=f.Roles)||void 0===a?void 0:a[0],y=f.DC,b=null!==(s=d.PDiskId)&&void 0!==s?s:h.PDiskId,x=h.Type;return{...d,NodeId:m,NodeHost:g,NodeType:v,NodeDC:y,PDiskId:b,PDiskType:x}}(o),{StoragePoolName:s,VDiskId:l={}}=a,{GroupID:c}=l;let u;if(Td(s)&&Td(c)){u=function(e,t,n){var r,i;const o=null===(r=e.StoragePools)||void 0===r?void 0:r.find((e=>e.Name===t)),a=null===o||void 0===o||null===(i=o.Groups)||void 0===i?void 0:i.find((e=>e.GroupID===n));if(a&&o)return Ph(a,o)}(await window.api.getStorageInfo({nodeId:t,poolName:s,groupId:c,version:ka.v1},{signal:i}),s,c)}return{vDiskData:a,groupData:u}}({nodeId:t,pDiskId:n,vDiskSlotId:r});return{data:{vDiskData:e,groupData:i}}}catch(i){return{error:i}}},providesTags:["All"]})}),overrideExisting:"throw"});const HH=JSON.parse('{"fqdn":"FQDN","node":"Node","pdisk":"PDisk","vdisk":"VDisk","group":"Group","evict-vdisk-button":"Evict VDisk","evict-vdisk-dialog":"VDisk will be evicted. Do you want to proceed?","evict-vdisk-not-allowed":"You don\'t have enough rights to evict VDisk"}'),VH=(0,We.wZ)("ydb-vDisk-page",{en:HH}),GH=Me("ydb-vdisk-page");const WH=Gs("clusters"),qH=Gs("cluster"),ZH=Gs("tenant"),YH=Gs("node"),KH=Gs("pDisk"),QH=Gs("vDisk"),XH=Gs("tablet"),$H=Gs("tabletsFilters"),JH=Gs("routes"),eV=Gs("redirect"),tV=JSON.parse('{"pages.clusters":"All clusters"}'),nV=JSON.parse('{"pages.clusters":"\u0412\u0441\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b"}'),rV=(0,We.wZ)("ydb-app-content",{ru:nV,en:tV}),iV=Me("app"),oV=[{path:Ta.ZP.cluster,slot:qH,component:eE},{path:Ta.ZP.tenant,slot:ZH,component:MH},{path:Ta.ZP.node,slot:YH,component:RN},{path:Ta.ZP.pDisk,slot:KH,component:function(){var e;const t=Ao(),n=Do(Zs.d),{isUserAllowedToMakeChanges:r}=Do((e=>e.authentication)),[{nodeId:i,pDiskId:o}]=mc({nodeId:Gl,pDiskId:Gl});a.useEffect((()=>{t((0,Rl.J)("pDisk",{nodeId:i,pDiskId:o}))}),[t,i,o]);const s=Td(i)&&Td(o)?{nodeId:i,pDiskId:o}:zl.CN,l=UN.useGetPdiskInfoQuery(s,{pollingInterval:Lo.ME}),c=l.isFetching&&void 0===l.currentData,u=l.currentData||{},{NodeHost:d,NodeId:h,NodeType:p,NodeDC:f,Severity:m}=u,g=UN.useGetStorageInfoQuery(s,{pollingInterval:Lo.ME}),v=g.isFetching&&void 0===g.currentData,y=null!==(e=g.currentData)&&void 0!==e?e:[],b=async()=>{if(Td(i)&&Td(o))return window.api.restartPDisk(i,o).then((e=>{if(!1===(null===e||void 0===e?void 0:e.result)){throw{statusText:e.error}}}))},x=async()=>Promise.all([l.refetch(),g.refetch()]);return(0,Le.jsxs)("div",{className:GN(null),children:[(()=>{const e=o?"".concat(VN("pdisk")," ").concat(o):VN("pdisk"),t=d||VN("node");return(0,Le.jsx)(oe,{titleTemplate:"%s - ".concat(e," \u2014 ").concat(t," \u2014 YDB Monitoring"),defaultTitle:"".concat(e," \u2014 ").concat(t," \u2014 YDB Monitoring")})})(),(()=>{const e=d?"".concat(VN("fqdn"),": ").concat(d):void 0,t=h?"".concat(VN("node"),": ").concat(h):void 0;return(0,Le.jsx)(BN,{className:GN("meta"),loading:c,items:[e,t,p,f]})})(),(0,Le.jsx)(FN,{entityName:VN("pdisk"),status:_h(m),id:o,className:GN("title")}),(0,Le.jsx)("div",{className:GN("controls"),children:(0,Le.jsxs)($O,{onConfirmAction:b,onConfirmActionSuccess:x,buttonDisabled:!i||!o||!r,buttonView:"normal",dialogContent:VN("restart-pdisk-dialog"),withPopover:!0,popoverContent:VN("restart-pdisk-not-allowed"),popoverDisabled:r,children:[(0,Le.jsx)(we.J,{data:MN}),VN("restart-pdisk-button")]})}),c?(0,Le.jsx)(kC,{className:GN("info"),rows:10}):(0,Le.jsx)(pN,{pDisk:u,nodeId:i,className:GN("info"),isPDiskPage:!0}),(0,Le.jsx)(WN,{data:y,nodesMap:n,loading:v})]})}},{path:Ta.ZP.vDisk,slot:QH,component:function(){const e=Ao(),t=Do(Zs.d),{isUserAllowedToMakeChanges:n}=Do((e=>e.authentication)),[{nodeId:r,pDiskId:i,vDiskSlotId:o}]=mc({nodeId:Gl,pDiskId:Gl,vDiskSlotId:Gl});a.useEffect((()=>{e((0,Rl.J)("vDisk",{nodeId:r,pDiskId:i,vDiskSlotId:o}))}),[e,r,i,o]);const s=Td(r)&&Td(i)&&Td(o)?{nodeId:r,pDiskId:i,vDiskSlotId:o}:zl.CN,{currentData:l,isFetching:c,refetch:u}=UH.useGetVDiskDataQuery(s,{pollingInterval:Lo.ME}),d=c&&void 0===l,{vDiskData:h={},groupData:p}=l||{},{NodeHost:f,NodeId:m,NodeType:g,NodeDC:v,PDiskId:y,PDiskType:b,Severity:x,VDiskId:w}=h,S=async()=>{const{GroupID:e,GroupGeneration:t,Ring:n,Domain:r,VDisk:i}=w||{};if(Td(e)&&Td(t)&&Td(n)&&Td(r)&&Td(i))return window.api.evictVDisk({groupId:e,groupGeneration:t,failRealmIdx:n,failDomainIdx:r,vDiskIdx:i})},_=async()=>u(),C=()=>{var e;return p?(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)("div",{className:GH("group-title"),children:VH("group")}),(0,Le.jsx)(BH,{data:p}),(0,Le.jsx)("div",{className:GH("group-disks"),children:null===(e=p.VDisks)||void 0===e?void 0:e.map((e=>(0,Le.jsx)(lS,{data:e,nodes:t,className:GH("group-disk")},(0,ks.a2)(e.VDiskId))))})]}):null};return(0,Le.jsxs)("div",{className:GH(null),children:[(()=>{const e=o?"".concat(VH("vdisk")," ").concat(o):VH("vdisk"),t=i?"".concat(VH("pdisk")," ").concat(i):VH("pdisk"),n=f||VH("node");return(0,Le.jsx)(oe,{titleTemplate:"%s - ".concat(e," - ").concat(t," \u2014 ").concat(n," \u2014 YDB Monitoring"),defaultTitle:"".concat(e," - ").concat(t," \u2014 ").concat(n," \u2014 YDB Monitoring")})})(),(()=>{const e=f?"".concat(VH("fqdn"),": ").concat(f):void 0,t=m?"".concat(VH("node"),": ").concat(m):void 0,n=m?"".concat(VH("pdisk"),": ").concat(y):void 0;return(0,Le.jsx)(BN,{loading:d,items:[e,t,g,v,n,b]})})(),(0,Le.jsx)(FN,{entityName:VH("vdisk"),status:_h(x),id:(0,ks.a2)(null===h||void 0===h?void 0:h.VDiskId)}),(0,Le.jsx)("div",{children:(0,Le.jsxs)($O,{onConfirmAction:S,onConfirmActionSuccess:_,buttonDisabled:!w||!n,buttonView:"normal",dialogContent:VH("evict-vdisk-dialog"),withPopover:!0,popoverContent:VH("evict-vdisk-not-allowed"),popoverDisabled:n,children:[(0,Le.jsx)(we.J,{data:LH}),VH("evict-vdisk-button")]})}),d?(0,Le.jsx)(kC,{rows:20}):(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(SN,{data:h,isVDiskPage:!0}),C()]})]})}},{path:Ta.ZP.tablet,slot:XH,component:()=>{var e;const t=a.useRef(!0),n=Ao(),r=Ca(),i=function(){var e=Sa(ra).match;return e?e.params:{}}(),{id:o}=i,{nodeId:s,tenantName:l,type:c,clusterName:u}=(0,Ta.mB)(r),{currentData:d,isFetching:h,error:p,refetch:f}=qN.useGetTabletQuery({id:o},{pollingInterval:Lo.ME}),m=h&&void 0===d,{id:g,data:v={},history:y=[]}=d||{},{currentData:b}=qN.useGetTabletDescribeQuery(v.TenantId?{tenantId:v.TenantId}:zl.CN),x=(null===(e=v.NodeId)||void 0===e?void 0:e.toString())||(null===s||void 0===s?void 0:s.toString()),w=b||(null===l||void 0===l?void 0:l.toString()),S=v.Type||(null===c||void 0===c?void 0:c.toString());a.useEffect((()=>{n((0,Rl.J)("tablet",{nodeIds:x?[x]:[],tenantName:w,tabletId:o,tabletType:S}))}),[n,w,o,x,S]);const _=(e,t)=>(0,Le.jsx)("li",{className:ek("link",{external:!0}),children:(0,Le.jsx)(si,{href:"".concat(h_.y3).concat(e.path),target:"_blank",children:e.name})},t);return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(oe,{children:(0,Le.jsx)("title",{children:"".concat(o," \u2014 ").concat(YN("tablet.header")," \u2014 ").concat(w||u||Lo.DO)})}),(()=>{if(m&&o!==g&&t.current)return(0,Le.jsx)(N_,{size:"l"});if(p)return(0,Le.jsx)(zc,{error:p});if(!v||!Object.keys(v).length)return(0,Le.jsx)("div",{className:ek("placeholder"),children:(0,Le.jsx)(Ac,{title:YN("emptyState")})});const{TabletId:e,Overall:n,Leader:r}=v,i=[{name:"".concat(Lo.Ah," - tablet"),path:"/tablets?TabletID=".concat(e)}];return(0,Le.jsx)("div",{className:ek(),children:(0,Le.jsxs)("div",{className:ek("pane-wrapper"),children:[(0,Le.jsxs)("div",{className:ek("left-pane"),children:[(0,Le.jsx)("ul",{className:ek("links"),children:i.map(_)}),(0,Le.jsxs)("div",{className:ek("row",{header:!0}),children:[(0,Le.jsx)("span",{className:ek("title"),children:YN("tablet.header")}),(0,Le.jsx)(Il,{status:n,name:e}),(0,Le.jsx)("a",{rel:"noopener noreferrer",className:ek("link",{external:!0}),href:"".concat(h_.y3,"/tablets?TabletID=").concat(e),target:"_blank",children:(0,Le.jsx)(we.J,{data:pu})}),r&&(0,Le.jsx)(LC,{text:"Leader",type:"blue"}),(0,Le.jsx)("span",{className:ek("loader"),children:m&&(0,Le.jsx)(N_,{size:"s"})})]}),(0,Le.jsx)(QN,{tablet:v,tenantPath:w}),(0,Le.jsx)(KN,{tablet:v,fetchData:f})]}),(0,Le.jsx)("div",{className:ek("rigth-pane"),children:(0,Le.jsx)(JN,{history:y})})]})})})()]})}},{path:Ta.ZP.tabletsFilters,slot:$H,component:fk}];function aV(e,t){return(0,Le.jsx)(ma,{path:t.path,exact:t.exact,render:n=>{const r=e.get(t.slot);let i;if(r)i="function"===typeof r.rendered?r.rendered({component:t.component,...n}):r.rendered;else{const e=t.component;i=(0,Le.jsx)(e,{...n})}return(0,Le.jsx)("main",{className:iV("main"),children:i})}},t.path)}function sV(e){var t;const{singleClusterMode:n}=e,r=function(e){const{children:t}=e;return a.useMemo((()=>new qs(t)),[t])}(e),i=r.get(JH),o=r.get(eV),s=null!==(t=null===o||void 0===o?void 0:o.props)&&void 0!==t?t:n?{to:(0,$C.B7)()}:{to:Ta.ZP.clusters};let l;return n||(l={text:rV("pages.clusters"),link:Ta.ZP.clusters}),(0,Le.jsxs)(wa,{children:[n?null:aV(r,{path:Ta.ZP.clusters,exact:!0,component:UT,slot:WH}),null===i||void 0===i?void 0:i.rendered,(0,Le.jsxs)(ma,{children:[(0,Le.jsx)(lV,{}),(0,Le.jsx)(cV,{}),(0,Le.jsx)(xO,{mainPage:l}),(0,Le.jsxs)(wa,{children:[oV.map((e=>aV(r,e))),(0,Le.jsx)(ua,{...s})]})]},"single-cluster")]})}function lV(){const e=Ao(),{isAuthenticated:t,isInternalUser:n}=Do((e=>({isAuthenticated:e.authentication.isAuthenticated,isInternalUser:Boolean(e.authentication.user)})),ae.wU);return a.useEffect((()=>{t&&!n&&e((0,ns.PR)())}),[e,t,n]),null}function cV(){return Zs.W.useGetNodesListQuery(void 0),null}const uV=(0,ae.$j)((function(e){return{isAuthenticated:e.authentication.isAuthenticated,singleClusterMode:e.singleClusterMode}}))((function(e){const{singleClusterMode:t,isAuthenticated:n}=e;return(0,Le.jsxs)(wa,{children:[(0,Le.jsx)(ma,{path:Ta.ZP.auth,children:(0,Le.jsx)(tl,{closable:!0})}),(0,Le.jsx)(ma,{children:(0,Le.jsx)("div",{className:iV({embedded:t}),children:n?e.children:(0,Le.jsx)(tl,{})})})]})}));var dV=n(87720);const hV=e=>{let{children:t}=e;Ca();const n=_a();return t({replace(e){n.replace(e.search||"?",e.state)},push(e){n.push(e.search||"?",e.state)},get location(){return n.location}})},pV=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M10 4.5a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm1.5 0a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0Zm-9 8c0-.204.22-.809 1.32-1.459C4.838 10.44 6.32 10 8 10c1.68 0 3.162.44 4.18 1.041 1.1.65 1.32 1.255 1.32 1.459a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1Zm5.5-4c-3.85 0-7 2-7 4A2.5 2.5 0 0 0 3.5 15h9a2.5 2.5 0 0 0 2.5-2.5c0-2-3.15-4-7-4Z",clipRule:"evenodd"})),fV=a.createContext(void 0);fV.displayName="AsideHeaderInnerContext";const mV=fV.Provider,gV=()=>{const e=a.useContext(fV);if(void 0===e)throw new Error("AsideHeaderInnerContext is not initialized.\n Please check if you wrapped your component with AsideHeaderInnerContext.Provider");return e},vV=a.createContext({compact:!1,size:0});vV.displayName="AsideHeaderContext";const yV=vV.Provider,bV=()=>{const e=a.useContext(vV);if(void 0===e)throw new Error("AsideHeaderContext is not initialized.\n Please check if you wrapped your component with AsideHeader\n Context.Provider");return e},xV=40;Mi('.gn-composite-bar-highlighted-item{--_--background-color:var(--g-color-base-background);--_--item-icon-background-size:38px;--_--item-background-color-hover:var(--g-color-base-selection-hover);--_--item-selected-background-color-active:var(--g-color-base-selection);display:flex;justify-content:center;position:absolute;z-index:10000}.gn-composite-bar-highlighted-item__icon{align-items:center;background-color:var(--gn-aside-header-background-color,var(--_--background-color));border-radius:7px;box-shadow:0 8px 20px 0 var(--g-color-sfx-shadow);cursor:pointer;display:flex;height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));justify-content:center;overflow:hidden;position:relative;transform:translateY(1px);width:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size))}.gn-composite-bar-highlighted-item__icon:before{background-color:var(--gn-aside-header-item-current-background-color,var(--_--item-selected-background-color-active));content:"";height:100%;position:absolute;width:100%;z-index:-1}.gn-composite-bar-highlighted-item__icon:hover:before{background-color:var(--gn-aside-header-item-background-color-hover,var(--_--item-background-color-hover))}');const wV=(0,Ri.b)("composite-bar-highlighted-item"),SV=e=>{let{iconRef:t,iconNode:n,onClick:r,onClickCapture:i}=e;const{openModalSubscriber:o}=gV(),[{top:s,left:l,width:c,height:u},d]=(0,a.useState)({top:0,left:0,width:0,height:0}),[h,p]=(0,a.useState)(!1),f=(0,a.useMemo)((()=>(0,Li.d)((()=>{var e;const{top:n=0,left:r=0,width:i=0,height:o=0}=(null===(e=null===t||void 0===t?void 0:t.current)||void 0===e?void 0:e.getBoundingClientRect())||{};d({top:n+window.scrollY,left:r+window.scrollX,width:i,height:o})}),200,{leading:!0})),[t]),m=(0,a.useCallback)((()=>f()),[f]);return(0,a.useEffect)((()=>{if(h)return m(),window.addEventListener("resize",m),()=>window.removeEventListener("resize",m)}),[m,h]),null===o||void 0===o||o((e=>{p(e)})),n&&h?a.createElement(jr.h,null,a.createElement("div",{className:wV(),style:{left:l,top:s,width:c,height:u},onClick:r,onClickCapture:i,"data-toast":!0},a.createElement("div",{className:wV("icon")},n))):null};SV.displayName="HighlightedItem";const _V="collapse-item-id",CV=["right-start","right-end","right"],EV=28;function TV(e){if(!kV(e))return xV;switch(e.type){case"action":return 50;case"divider":return 15;default:return xV}}function OV(e){return e.reduce(((e,t)=>e+TV(t)),0)}function NV(e){const t=e.findIndex((e=>{let{current:t}=e;return Boolean(t)}));return-1===t?void 0:t}function kV(e){return void 0!==(null===e||void 0===e?void 0:e.id)}Mi('.gn-composite-bar-item{--gn-composite-bar-item-action-size:36px;--_--horizontal-divider-line-color:var(--g-color-line-generic);--_--item-background-color-hover:var(--g-color-base-simple-hover);--_--item-general-icon-color:var(--g-color-text-primary);--_--item-icon-color:var(--g-color-text-misc);--_--item-text-color:var(--g-color-text-primary);--_--item-selected-text-color:var(--g-color-text-primary);--_--item-selected-background-color-active:var(--g-color-base-selection);align-items:center;cursor:pointer;display:flex;height:100%;width:100%}.gn-composite-bar-item__icon{color:var(--gn-aside-header-item-icon-color,var(--_--item-icon-color))}.gn-composite-bar-item_current .gn-composite-bar-item__icon{color:var(--gn-aside-header-item-current-icon-color,var(--gn-aside-header-item-icon-color,var(--_--item-icon-color)))}.gn-composite-bar-highlighted-item .gn-composite-bar-item__icon,.gn-composite-bar_subheader .gn-composite-bar-item__icon,.gn-footer-item .gn-composite-bar-item__icon{color:var(--gn-aside-header-general-item-icon-color,var(--_--item-general-icon-color))}.gn-composite-bar-highlighted-item.gn-composite-bar-item_current .gn-composite-bar-item__icon,.gn-composite-bar_subheader .gn-composite-bar-item_current .gn-composite-bar-item__icon,.gn-footer-item.gn-composite-bar-item_current .gn-composite-bar-item__icon{color:var(--gn-aside-header-item-current-icon-color,var(--gn-aside-header-general-item-icon-color,var(--_--item-general-icon-color)))}.gn-composite-bar-item__icon-tooltip .g-action-tooltip__description{color:var(--g-color-text-light-primary);margin-block-start:0}.gn-composite-bar-item__icon-place{align-items:center;display:flex;flex-shrink:0;height:100%;justify-content:center;width:var(--gn-aside-header-min-width)}.gn-composite-bar-item__title{display:flex;overflow:hidden}.gn-composite-bar-item__title-text{color:var(--gn-aside-header-item-text-color,var(--_--item-text-color));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gn-composite-bar-item_current .gn-composite-bar-item__title-text{color:var(--gn-aside-header-item-current-text-color,var(--_--item-selected-text-color))}.gn-composite-bar-item__title-adornment{margin:0 10px}.gn-composite-bar-item__collapse-item{align-items:center;cursor:pointer;display:flex;height:100%;padding:0 16px;width:100%}.gn-composite-bar-item__collapse-item .gn-composite-bar-item__title-adornment{margin-right:0}.gn-composite-bar-item__menu-divider{border-top:1px solid var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));cursor:default;margin:0 8px;width:100%}.gn-composite-bar-item__collapse-items-popup-content{padding:4px 0}.gn-composite-bar-item__link{align-items:center;display:flex;height:100%;width:100%}.gn-composite-bar-item__link,.gn-composite-bar-item__link:active,.gn-composite-bar-item__link:focus,.gn-composite-bar-item__link:hover,.gn-composite-bar-item__link:visited{color:inherit;outline:none;text-decoration:none}.gn-composite-bar-item__btn-icon{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.gn-composite-bar-item_type_action{background:var(--g-color-base-float);border-radius:var(--gn-composite-bar-item-action-size);box-shadow:0 0 0 1px rgba(0,0,0,.03),0 5px 6px rgba(0,0,0,.12);height:var(--gn-composite-bar-item-action-size);justify-content:center;margin:0 10px 8px;transition:transform .1s ease-out,background-color .15s linear}.gn-composite-bar-item_type_action:focus-visible{box-shadow:0 0 0 2px var(--g-color-line-misc)}.gn-composite-bar-item_type_action:hover{background-color:var(--g-color-base-float-hover)}.gn-composite-bar-item_type_action:active{box-shadow:0 1px 2px var(--g-color-sfx-shadow);transform:scale(.96);transition:none}.gn-composite-bar-item_type_action .gn-composite-bar-item__icon-place{width:var(--gn-composite-bar-item-action-size)}.gn-composite-bar-item_type_action .gn-composite-bar-item__title{margin-right:16px}.gn-composite-bar-item__icon-tooltip_item-type_action{margin-left:10px}.gn-composite-bar-item:not(.gn-composite-bar-item_compact).gn-composite-bar-item_current.gn-composite-bar-item_type_regular{background-color:var(--gn-aside-header-item-current-background-color,var(--_--item-selected-background-color-active))}.gn-composite-bar-item:not(.gn-composite-bar-item_compact):hover.gn-composite-bar-item_type_regular{background-color:var(--gn-aside-header-item-current-background-color-hover,var(--gn-aside-header-item-current-background-color,var(--_--item-selected-background-color-active)))}.gn-composite-bar-item:not(.gn-composite-bar-item_compact):not(.gn-composite-bar-item_current):hover.gn-composite-bar-item_type_regular{background-color:var(--gn-aside-header-item-background-color-hover,var(--_--item-background-color-hover))}.gn-composite-bar-item_compact.gn-composite-bar-item_type_action{width:var(--gn-composite-bar-item-action-size)}.gn-composite-bar-item_compact.gn-composite-bar-item_type_action .gn-composite-bar-item__title{margin:0}.gn-composite-bar-item_compact.gn-composite-bar-item_current.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon{background-color:transparent;position:relative}.gn-composite-bar-item_compact.gn-composite-bar-item_current.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon:before{background-color:var(--gn-aside-header-item-current-background-color,var(--_--item-selected-background-color-active));border-radius:7px;content:"";height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));left:50%;margin-left:-19px;margin-top:-19px;position:absolute;top:50%;width:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));z-index:-1}.gn-composite-bar-item_compact:hover.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon{background-color:transparent;position:relative}.gn-composite-bar-item_compact:hover.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon:before{background-color:var(--gn-aside-header-item-current-background-color-hover,var(--gn-aside-header-item-current-background-color,var(--_--item-selected-background-color-active)));border-radius:7px;content:"";height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));left:50%;margin-left:-19px;margin-top:-19px;position:absolute;top:50%;width:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));z-index:-1}.gn-composite-bar-item_compact:not(.gn-composite-bar-item_current):hover.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon{background-color:transparent;position:relative}.gn-composite-bar-item_compact:not(.gn-composite-bar-item_current):hover.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon:before{background-color:var(--gn-aside-header-item-background-color-hover,var(--_--item-background-color-hover));border-radius:7px;content:"";height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));left:50%;margin-left:-19px;margin-top:-19px;position:absolute;top:50%;width:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));z-index:-1}');const jV=(0,Ri.b)("composite-bar-item");function IV(e){let t=a.createElement("div",{className:jV("title-text")},e.title);return e.rightAdornment&&(t=a.createElement(a.Fragment,null,t,a.createElement("div",{className:jV("title-adornment")},e.rightAdornment))),t}const PV=["right-end"],DV=[-20,8],AV=e=>{const{item:t,className:n,collapseItems:r,onMouseLeave:i,onMouseEnter:o,enableTooltip:s=!0,popupVisible:l=!1,popupAnchor:c,popupPlacement:u=PV,popupOffset:d=DV,popupKeepMounted:h,popupContentClassName:p,renderPopupContent:f,onClosePopup:m,onItemClick:g,onItemClickCapture:v,bringForward:y}=e,{compact:b}=bV(),[x,w]=a.useState(!1),S=a.useRef(null),_=c||S,C=a.useRef(null),E=t.type||"regular",T=t.current||!1,O=t.tooltipText||t.title,N=t.icon,k=t.iconSize||18,j=t.iconQa,I=t.id===_V,P=a.useMemo((()=>[{name:"compact",enabled:!0,options:{compact:b},phase:"main",fn(){}}]),[b]),D=a.useCallback((e=>{var t;e instanceof MouseEvent&&e.target&&(null===(t=S.current)||void 0===t?void 0:t.contains(e.target))||null===m||void 0===m||m()}),[m]);if("divider"===t.type)return a.createElement("div",{className:jV("menu-divider")});const A=e=>b?a.createElement(xT,{title:"",description:O,disabled:!s||I&&x||l,placement:"right",className:jV("icon-tooltip",{"item-type":E})},a.createElement("div",{onMouseEnter:()=>null===o||void 0===o?void 0:o(),onMouseLeave:()=>null===i||void 0===i?void 0:i(),className:jV("btn-icon")},e)):e,R=e=>{let{icon:r,title:s}=e;const c=a.createElement(a.Fragment,null,a.createElement("div",{className:jV({type:E,current:T,compact:b},n),ref:S,onClick:e=>{I?w(!x):null===g||void 0===g||g(t,!1,e)},onClickCapture:v,onMouseEnter:()=>{b||null===o||void 0===o||o()},onMouseLeave:()=>{b||null===i||void 0===i||i()}},a.createElement("div",{className:jV("icon-place"),ref:C},A(r)),a.createElement("div",{className:jV("title"),title:"string"===typeof t.title?t.title:void 0},s)),f&&Boolean(null===_||void 0===_?void 0:_.current)&&a.createElement(ti,{contentClassName:jV("popup",p),open:l,keepMounted:h,placement:u,offset:d,anchorRef:_,onClose:D,modifiers:P},f()));return t.link?a.createElement("a",{href:t.link,className:jV("link")},c):c},M=N?a.createElement(we.J,{qa:j,data:N,size:k,className:jV("icon")}):null,L={icon:M,title:IV(t)};let F,z=null;const B={compact:Boolean(b),collapsed:!1,item:t,ref:S};return"function"===typeof t.itemWrapper?(F=t.itemWrapper(L,R,B),z=y&&t.itemWrapper(L,(e=>{let{icon:t}=e;return A(t)}),B)):(F=R(L),z=y&&A(M)),a.createElement(a.Fragment,null,y&&a.createElement(SV,{iconNode:z,iconRef:C,onClick:e=>null===g||void 0===g?void 0:g(t,!1,e),onClickCapture:v}),F,x&&I&&(null===r||void 0===r?void 0:r.length)&&Boolean(null===_||void 0===_?void 0:_.current)&&a.createElement(RV,Object.assign({},e,{anchorRef:S,onClose:()=>w(!1)})))};function RV(e){let{onItemClick:t,collapseItems:n,anchorRef:r,onClose:i}=e;const{compact:o}=bV();return(null===n||void 0===n?void 0:n.length)?a.createElement(ti,{placement:CV,open:!0,anchorRef:r,onClose:i},a.createElement("div",{className:jV("collapse-items-popup-content")},a.createElement(Sx,{itemClassName:jV("root-collapse-item"),items:n,selectedItemIndex:NV(n),itemHeight:EV,itemsHeight:n.length*EV,virtualized:!1,filterable:!1,sortable:!1,onItemClick:i,renderItem:e=>{const n=n=>{let{title:r}=n;const i=a.createElement("div",{className:jV("collapse-item"),onClick:n=>{null===t||void 0===t||t(e,!0,n)}},r);return e.link?a.createElement("a",{href:e.link,className:jV("link")},i):i},i={title:IV(e)},s={compact:Boolean(o),collapsed:!0,item:e,ref:r};return"function"===typeof e.itemWrapper?e.itemWrapper(i,n,s):n(i)}}))):null}AV.displayName="Item";Mi(".gn-footer-item{height:40px;width:100%}");const MV=(0,Ri.b)("footer-item"),LV=e=>{var{item:t}=e,n=Je(e,["item"]);return a.createElement(AV,Object.assign({},n,{item:Object.assign({iconSize:18},t),className:MV({compact:n.compact}),onItemClick:t.onItemClick,onItemClickCapture:t.onItemClickCapture}))},FV=a.memo((e=>{let{renderContent:t,size:n}=e;return a.createElement(a.Fragment,null,t({size:n}))}));FV.displayName="RenderContent";const zV=e=>{let{size:t,className:n,cssSizeVariableName:r="--gn-aside-header-size",renderContent:i,children:o}=e;return a.createElement("div",{className:n,style:Object.assign({},{[r]:"".concat(t,"px")})},"function"===typeof i?a.createElement(FV,{size:t,renderContent:i}):o)};var BV=n(50528);Mi('.g-root{--gn-aside-top-panel-height:0px}.gn-aside-header{--gn-aside-header-min-width:56px;--_--item-icon-background-size:38px;--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.gn-aside-header__aside{background-color:var(--gn-aside-header-background-color,var(--_--background-color));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-aside-top-panel-height);max-height:calc(100vh - var(--gn-aside-top-panel-height));position:sticky;top:var(--gn-aside-top-panel-height);width:inherit;z-index:100}.gn-aside-header__aside:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:"";height:100%;position:absolute;right:0;top:0;width:1px;z-index:2}.gn-aside-header__aside-popup-anchor{inset:0;position:absolute;z-index:1}.gn-aside-header__aside-content{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;overflow-x:hidden;position:relative;user-select:none;width:inherit;z-index:2}.gn-aside-header__aside-content>.gn-aside-header-logo{margin:8px 0}.gn-aside-header__aside-content_with-decoration{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.gn-aside-header__aside-custom-background{bottom:0;display:flex;position:absolute;top:0;z-index:-1}.gn-aside-header_compact .gn-aside-header__aside-content{background:transparent}.gn-aside-header__header{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.gn-aside-header__header .gn-aside-header__header-divider{bottom:0;color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;z-index:-2}.gn-aside-header__header_with-decoration:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:"";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.gn-aside-header__header:after{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:"";height:1px;left:0;position:absolute;width:100%;z-index:-2}.gn-aside-header_compact .gn-aside-header__header:before,.gn-aside-header_compact .gn-aside-header__header_with-decoration .gn-aside-header__header-divider{display:block}.gn-aside-header_compact .gn-aside-header__header_with-decoration:after{display:none}.gn-aside-header__logo-button-wrapper{width:var(--gn-aside-header-min-width)}.gn-aside-header__logo-button[class],.gn-aside-header__logo-button[class] .g-button__icon{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size))}.gn-aside-header__menu-items{flex-grow:1}.gn-aside-header__footer{display:flex;flex-direction:column;flex-shrink:0;margin:8px 0;width:100%}.gn-aside-header__panels{inset:var(--gn-aside-top-panel-height) 0 0;max-height:calc(100vh - var(--gn-aside-top-panel-height));overflow:auto;position:fixed;z-index:98}.gn-aside-header__panel{height:100%}.gn-aside-header__pane-container{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.gn-aside-header__pane-top-divider{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));height:1px;margin-top:-1px}.gn-aside-header__pane-top{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:98}.gn-aside-header__pane-top-alert_centered{display:flex;justify-content:space-around}.gn-aside-header__pane-top-alert_dense{padding-bottom:var(--g-spacing-2);padding-top:var(--g-spacing-2)}.gn-aside-header__content{margin-top:var(--gn-aside-top-panel-height);width:calc(100% - var(--gn-aside-header-size));z-index:95}.gn-aside-header__collapse-button{--g-button-background-color-hover:transparent;border-top:1px solid var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));box-sizing:border-box;flex:none;height:20px;margin-top:auto;overflow:hidden;width:100%}.gn-aside-header__collapse-button>.g-button__text{align-items:center;display:flex;height:20px;justify-content:center}.gn-aside-header__collapse-button:not(.gn-aside-header__collapse-button_compact) .gn-aside-header__collapse-icon{transform:rotate(180deg)}.gn-aside-header__collapse-button .gn-aside-header__collapse-icon{color:var(--g-color-text-secondary)}.gn-aside-header__collapse-button:hover .gn-aside-header__collapse-icon{color:var(--g-color-text-primary)}');const UV=a.lazy((()=>n.e(328).then(n.bind(n,30328)).then((e=>({default:e.TopPanel}))))),HV=Object.assign((e=>{let{compact:t,className:n,children:r,topAlert:i}=e;const o=t?56:236,s=(0,a.useMemo)((()=>({size:o,compact:t})),[t,o]);return a.createElement(yV,{value:s},a.createElement("div",{className:(0,BV.b)({compact:t},n),style:Object.assign({},{"--gn-aside-header-size":"".concat(o,"px")})},i&&a.createElement(a.Suspense,{fallback:null},a.createElement(UV,{topAlert:i})),a.createElement("div",{className:(0,BV.b)("pane-container")},r)))}),{Content:e=>{let{children:t,renderContent:n}=e;const{size:r}=bV();return a.createElement(zV,{size:r,className:(0,BV.b)("content"),renderContent:n},t)}}),VV=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M10.5 2.255v-.01c.003-.03.013-.157-.361-.35C9.703 1.668 8.966 1.5 8 1.5c-.967 0-1.703.169-2.138.394-.375.194-.365.32-.362.351v.01c-.003.03-.013.157.362.35C6.297 2.832 7.033 3 8 3c.967 0 1.703-.169 2.139-.394.374-.194.364-.32.361-.351ZM8 4.5c.506 0 .99-.04 1.436-.118l.84 2.352.253.707.717.221c.648.2 1.055.44 1.277.65.192.18.227.31.227.438 0 .14-.055.488-.937.878-.869.384-2.2.622-3.813.622s-2.944-.238-3.813-.622c-.882-.39-.937-.738-.937-.878 0-.128.035-.259.227-.439.222-.209.629-.448 1.277-.649l.717-.221.253-.707.84-2.352c.445.079.93.118 1.436.118Zm4-2.25c0 .738-.433 1.294-1.136 1.669l.825 2.31c1.553.48 2.561 1.32 2.561 2.52 0 1.854-2.402 2.848-5.5 2.985V15a.75.75 0 0 1-1.5 0v-3.266c-3.098-.136-5.5-1.131-5.5-2.984 0-1.2 1.008-2.04 2.561-2.52l.825-2.311C4.433 3.544 4 2.988 4 2.25 4 .75 5.79 0 8 0s4 .75 4 2.25Z",clipRule:"evenodd"})),GV=e=>a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M10.5 2.255v-.01c.003-.03.013-.157-.361-.35C9.703 1.668 8.966 1.5 8 1.5c-.967 0-1.703.169-2.138.394-.375.194-.365.32-.362.351v.01c-.003.03-.013.157.362.35C6.297 2.832 7.033 3 8 3c.967 0 1.703-.169 2.139-.394.374-.194.364-.32.361-.351ZM12 2.25c0 .738-.433 1.294-1.136 1.669l.825 2.31c1.553.48 2.561 1.32 2.561 2.52 0 1.854-2.402 2.848-5.5 2.985V15a.75.75 0 0 1-1.5 0v-3.266c-3.098-.136-5.5-1.131-5.5-2.984 0-1.2 1.008-2.04 2.561-2.52l.825-2.311C4.433 3.544 4 2.988 4 2.25 4 .75 5.79 0 8 0s4 .75 4 2.25Z",clipRule:"evenodd"}));var WV;function qV(){return qV=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},qV.apply(this,arguments)}var ZV=function(e){return a.createElement("svg",qV({width:56,height:29,viewBox:"0 0 56 29",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},e),WV||(WV=a.createElement("path",{d:"M56 0v29c-.8-1-7-6.1-17.7-8.4L13 15.7A16 16 0 0 1 0 0Z"})))};function YV(){return YV=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},YV.apply(this,arguments)}function KV(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}function QV(e,t){return QV=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},QV(e,t)}function XV(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,QV(e,t)}var $V,JV,eG,tG;function nG(){if(JV)return $V;JV=1;return $V="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}function rG(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}(function(){if(tG)return eG;tG=1;var e=nG();function t(){}function n(){}return n.resetWarningCache=t,eG=function(){function r(t,n,r,i,o,a){if(a!==e){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function i(){return r}r.isRequired=r;var o={array:r,bigint:r,bool:r,func:r,number:r,object:r,string:r,symbol:r,any:r,arrayOf:i,element:r,elementType:r,instanceOf:i,node:r,objectOf:i,oneOf:i,oneOfType:i,shape:i,exact:i,checkPropTypes:n,resetWarningCache:t};return o.PropTypes=o,o}})()();var iG=!1,oG=a.createContext(null),aG=function(e){return e.scrollTop},sG="unmounted",lG="exited",cG="entering",uG="entered",dG="exiting",hG=function(e){function t(t,n){var r;r=e.call(this,t,n)||this;var i,o=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?o?(i=lG,r.appearStatus=cG):i=uG:i=t.unmountOnExit||t.mountOnEnter?sG:lG,r.state={status:i},r.nextCallback=null,r}XV(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===sG?{status:lG}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==cG&&n!==uG&&(t=cG):n!==cG&&n!==uG||(t=dG)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!==typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===cG){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:Dt.findDOMNode(this);n&&aG(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===lG&&this.setState({status:sG})},n.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,i=this.props.nodeRef?[r]:[Dt.findDOMNode(this),r],o=i[0],a=i[1],s=this.getTimeouts(),l=r?s.appear:s.enter;!e&&!n||iG?this.safeSetState({status:uG},(function(){t.props.onEntered(o)})):(this.props.onEnter(o,a),this.safeSetState({status:cG},(function(){t.props.onEntering(o,a),t.onTransitionEnd(l,(function(){t.safeSetState({status:uG},(function(){t.props.onEntered(o,a)}))}))})))},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:Dt.findDOMNode(this);t&&!iG?(this.props.onExit(r),this.safeSetState({status:dG},(function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,(function(){e.safeSetState({status:lG},(function(){e.props.onExited(r)}))}))}))):this.safeSetState({status:lG},(function(){e.props.onExited(r)}))},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:Dt.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],o=i[0],a=i[1];this.props.addEndListener(o,a)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===sG)return null;var t=this.props,n=t.children;t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef;var r=KV(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return a.createElement(oG.Provider,{value:null},"function"===typeof n?n(e,r):a.cloneElement(a.Children.only(n),r))},t}(a.Component);function pG(){}hG.contextType=oG,hG.propTypes={},hG.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:pG,onEntering:pG,onEntered:pG,onExit:pG,onExiting:pG,onExited:pG},hG.UNMOUNTED=sG,hG.EXITED=lG,hG.ENTERING=cG,hG.ENTERED=uG,hG.EXITING=dG;var fG=function(e,t){return e&&t&&t.split(" ").forEach((function(t){return r=t,void((n=e).classList?n.classList.add(r):function(e,t){return e.classList?!!t&&e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")}(n,r)||("string"===typeof n.className?n.className=n.className+" "+r:n.setAttribute("class",(n.className&&n.className.baseVal||"")+" "+r)));var n,r}))},mG=function(e,t){return e&&t&&t.split(" ").forEach((function(t){return r=t,void((n=e).classList?n.classList.remove(r):"string"===typeof n.className?n.className=rG(n.className,r):n.setAttribute("class",rG(n.className&&n.className.baseVal||"",r)));var n,r}))},gG=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).appliedClasses={appear:{},enter:{},exit:{}},t.onEnter=function(e,n){var r=t.resolveArguments(e,n),i=r[0],o=r[1];t.removeClasses(i,"exit"),t.addClass(i,o?"appear":"enter","base"),t.props.onEnter&&t.props.onEnter(e,n)},t.onEntering=function(e,n){var r=t.resolveArguments(e,n),i=r[0],o=r[1]?"appear":"enter";t.addClass(i,o,"active"),t.props.onEntering&&t.props.onEntering(e,n)},t.onEntered=function(e,n){var r=t.resolveArguments(e,n),i=r[0],o=r[1]?"appear":"enter";t.removeClasses(i,o),t.addClass(i,o,"done"),t.props.onEntered&&t.props.onEntered(e,n)},t.onExit=function(e){var n=t.resolveArguments(e)[0];t.removeClasses(n,"appear"),t.removeClasses(n,"enter"),t.addClass(n,"exit","base"),t.props.onExit&&t.props.onExit(e)},t.onExiting=function(e){var n=t.resolveArguments(e)[0];t.addClass(n,"exit","active"),t.props.onExiting&&t.props.onExiting(e)},t.onExited=function(e){var n=t.resolveArguments(e)[0];t.removeClasses(n,"exit"),t.addClass(n,"exit","done"),t.props.onExited&&t.props.onExited(e)},t.resolveArguments=function(e,n){return t.props.nodeRef?[t.props.nodeRef.current,e]:[e,n]},t.getClassNames=function(e){var n=t.props.classNames,r="string"===typeof n,i=r?""+(r&&n?n+"-":"")+e:n[e];return{baseClassName:i,activeClassName:r?i+"-active":n[e+"Active"],doneClassName:r?i+"-done":n[e+"Done"]}},t}XV(t,e);var n=t.prototype;return n.addClass=function(e,t,n){var r=this.getClassNames(t)[n+"ClassName"],i=this.getClassNames("enter").doneClassName;"appear"===t&&"done"===n&&i&&(r+=" "+i),"active"===n&&e&&aG(e),r&&(this.appliedClasses[t][n]=r,fG(e,r))},n.removeClasses=function(e,t){var n=this.appliedClasses[t],r=n.base,i=n.active,o=n.done;this.appliedClasses[t]={},r&&mG(e,r),i&&mG(e,i),o&&mG(e,o)},n.render=function(){var e=this.props;e.classNames;var t=KV(e,["classNames"]);return a.createElement(hG,YV({},t,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},t}(a.Component);function vG(e,t){var n=Object.create(null);return e&&a.Children.map(e,(function(e){return e})).forEach((function(e){n[e.key]=function(e){return t&&(0,a.isValidElement)(e)?t(e):e}(e)})),n}function yG(e,t,n){return null!=n[t]?n[t]:e.props[t]}function bG(e,t,n){var r=vG(e.children),i=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,i=Object.create(null),o=[];for(var a in e)a in t?o.length&&(i[a]=o,o=[]):o.push(a);var s={};for(var l in t){if(i[l])for(r=0;r<i[l].length;r++){var c=i[l][r];s[i[l][r]]=n(c)}s[l]=n(l)}for(r=0;r<o.length;r++)s[o[r]]=n(o[r]);return s}(t,r);return Object.keys(i).forEach((function(o){var s=i[o];if((0,a.isValidElement)(s)){var l=o in t,c=o in r,u=t[o],d=(0,a.isValidElement)(u)&&!u.props.in;!c||l&&!d?c||!l||d?c&&l&&(0,a.isValidElement)(u)&&(i[o]=(0,a.cloneElement)(s,{onExited:n.bind(null,s),in:u.props.in,exit:yG(s,"exit",e),enter:yG(s,"enter",e)})):i[o]=(0,a.cloneElement)(s,{in:!1}):i[o]=(0,a.cloneElement)(s,{onExited:n.bind(null,s),in:!0,exit:yG(s,"exit",e),enter:yG(s,"enter",e)})}})),i}gG.defaultProps={classNames:""},gG.propTypes={};var xG,wG,SG=Object.values||function(e){return Object.keys(e).map((function(t){return e[t]}))},_G=function(e){function t(t,n){var r,i=(r=e.call(this,t,n)||this).handleExited.bind(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(r));return r.state={contextValue:{isMounting:!0},handleExited:i,firstRender:!0},r}XV(t,e);var n=t.prototype;return n.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},n.componentWillUnmount=function(){this.mounted=!1},t.getDerivedStateFromProps=function(e,t){var n,r,i=t.children,o=t.handleExited;return{children:t.firstRender?(n=e,r=o,vG(n.children,(function(e){return(0,a.cloneElement)(e,{onExited:r.bind(null,e),in:!0,appear:yG(e,"appear",n),enter:yG(e,"enter",n),exit:yG(e,"exit",n)})}))):bG(e,i,o),firstRender:!1}},n.handleExited=function(e,t){var n=vG(this.props.children);e.key in n||(e.props.onExited&&e.props.onExited(t),this.mounted&&this.setState((function(t){var n=YV({},t.children);return delete n[e.key],{children:n}})))},n.render=function(){var e=this.props,t=e.component,n=e.childFactory,r=KV(e,["component","childFactory"]),i=this.state.contextValue,o=SG(this.state.children).map(n);return delete r.appear,delete r.enter,delete r.exit,null===t?a.createElement(oG.Provider,{value:i},o):a.createElement(oG.Provider,{value:i},a.createElement(t,r,o))},t}(a.Component);_G.propTypes={},_G.defaultProps={component:"div",childFactory:function(e){return e}},(function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).handleEnter=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return t.handleLifecycle("onEnter",0,n)},t.handleEntering=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return t.handleLifecycle("onEntering",0,n)},t.handleEntered=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return t.handleLifecycle("onEntered",0,n)},t.handleExit=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return t.handleLifecycle("onExit",1,n)},t.handleExiting=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return t.handleLifecycle("onExiting",1,n)},t.handleExited=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return t.handleLifecycle("onExited",1,n)},t}XV(t,e);var n=t.prototype;return n.handleLifecycle=function(e,t,n){var r,i=this.props.children,o=a.Children.toArray(i)[t];if(o.props[e]&&(r=o.props)[e].apply(r,n),this.props[e]){var s=o.props.nodeRef?void 0:Dt.findDOMNode(this);this.props[e](s)}},n.render=function(){var e=this.props,t=e.children,n=e.in,r=KV(e,["children","in"]),i=a.Children.toArray(t),o=i[0],s=i[1];return delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,a.createElement(_G,r,n?a.cloneElement(o,{key:"first",onEnter:this.handleEnter,onEntering:this.handleEntering,onEntered:this.handleEntered}):a.cloneElement(s,{key:"second",onEnter:this.handleExit,onEntering:this.handleExiting,onEntered:this.handleExited}))},t}(a.Component)).propTypes={};var CG="out-in",EG="in-out",TG=function(e,t,n){return function(){var r;e.props[t]&&(r=e.props)[t].apply(r,arguments),n()}},OG=((xG={})[CG]=function(e){var t=e.current,n=e.changeState;return a.cloneElement(t,{in:!1,onExited:TG(t,"onExited",(function(){n(cG,null)}))})},xG[EG]=function(e){var t=e.current,n=e.changeState,r=e.children;return[t,a.cloneElement(r,{in:!0,onEntered:TG(r,"onEntered",(function(){n(cG)}))})]},xG),NG=((wG={})[CG]=function(e){var t=e.children,n=e.changeState;return a.cloneElement(t,{in:!0,onEntered:TG(t,"onEntered",(function(){n(uG,a.cloneElement(t,{in:!0}))}))})},wG[EG]=function(e){var t=e.current,n=e.children,r=e.changeState;return[a.cloneElement(t,{in:!1,onExited:TG(t,"onExited",(function(){r(uG,a.cloneElement(n,{in:!0}))}))}),a.cloneElement(n,{in:!0})]},wG),kG=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).state={status:uG,current:null},t.appeared=!1,t.changeState=function(e,n){void 0===n&&(n=t.state.current),t.setState({status:e,current:n})},t}XV(t,e);var n=t.prototype;return n.componentDidMount=function(){this.appeared=!0},t.getDerivedStateFromProps=function(e,t){return null==e.children?{current:null}:t.status===cG&&e.mode===EG?{status:cG}:!t.current||(n=t.current,r=e.children,n===r||a.isValidElement(n)&&a.isValidElement(r)&&null!=n.key&&n.key===r.key)?{current:a.cloneElement(e.children,{in:!0})}:{status:dG};var n,r},n.render=function(){var e,t=this.props,n=t.children,r=t.mode,i=this.state,o=i.status,s=i.current,l={children:n,current:s,changeState:this.changeState,status:o};switch(o){case cG:e=NG[r](l);break;case dG:e=OG[r](l);break;case uG:e=s}return a.createElement(oG.Provider,{value:{isMounting:!this.appeared}},e)},t}(a.Component);kG.propTypes={},kG.defaultProps={mode:CG};Mi(".gn-drawer__item{background-color:var(--g-color-base-background);bottom:0;height:100%;left:0;position:absolute;top:0;will-change:transform}.gn-drawer__item_direction_right{left:auto;right:0}.gn-drawer__item-transition-enter{transform:translate(-100%)}.gn-drawer__item-transition_direction_right-enter{transform:translate(100%)}.gn-drawer__item-transition-enter-active,.gn-drawer__item-transition_direction_right-enter-active{transform:translate(0);transition:transform .3s}.gn-drawer__item-transition-enter-done,.gn-drawer__item-transition_direction_right-enter-done{filter:blur(0);transform:translateZ(0)}.gn-drawer__item-transition-exit,.gn-drawer__item-transition_direction_right-exit{transform:translate(0)}.gn-drawer__item-transition-exit-active,.gn-drawer__item-transition_direction_right-exit-active{transition:transform .3s}.gn-drawer__item-transition-exit-active{transform:translate(-100%)}.gn-drawer__item-transition_direction_right-exit-active{transform:translate(100%)}.gn-drawer__item-transition-exit-done,.gn-drawer__item-transition_direction_right-exit-done{visibility:hidden}.gn-drawer__veil{background-color:var(--g-color-sfx-veil);inset:0;position:absolute}.gn-drawer__veil-transition-enter{opacity:0}.gn-drawer__veil-transition-enter-active{opacity:1;transition:opacity .3s}.gn-drawer__veil-transition-exit{opacity:1}.gn-drawer__veil-transition-exit-active{opacity:0;transition:opacity .3s}.gn-drawer__veil-transition-exit-done{visibility:hidden}");const jG=(0,Ri.b)("drawer"),IG=e=>{let{visible:t,content:n,direction:r,className:i}=e;const o=a.useRef(null),s="left"===r?void 0:r;return a.createElement(gG,{in:t,timeout:300,unmountOnExit:!0,classNames:jG("item-transition",{direction:s}),nodeRef:o},a.createElement("div",{ref:o,className:jG("item",{direction:s},i)},n))},PG=e=>{let{className:t,children:n,style:r,onVeilClick:i,onEscape:o,preventScrollBody:s=!0}=e,l=!1;a.Children.forEach(n,(e=>{const t=e;if(t.type===IG){Boolean(t.props.visible)&&(l=!0)}})),a.useEffect((()=>{function e(e){"Escape"===e.key&&(null===o||void 0===o||o())}return l&&window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}}),[o,l]),Jx({enabled:s&&l});const c=a.useRef(null),u=a.useRef(null);return a.createElement(hG,{in:l,timeout:{enter:0,exit:300},mountOnEnter:!0,unmountOnExit:!0,nodeRef:c},(e=>{const o=l&&"entered"===e;return a.createElement("div",{ref:c,className:jG(null,t),style:r},a.createElement(gG,{in:o,timeout:300,unmountOnExit:!0,classNames:jG("veil-transition"),nodeRef:u},a.createElement("div",{ref:u,className:jG("veil"),onClick:i})),a.Children.map(n,(e=>{const t=e;if(t.type===IG){const e=Boolean(t.props.visible);return a.cloneElement(t,Object.assign(Object.assign({},t.props),{visible:e&&o}))}return e})))}))};Mi(".gn-all-pages-list-item{align-items:center;column-gap:var(--g-spacing-4);display:flex;height:40px;padding:0 var(--g-spacing-6);width:100%}.gn-all-pages-list-item__text{flex:1}.gn-all-pages-list-item__icon{color:var(--g-color-text-misc)}");const DG=(0,Ri.b)("all-pages-list-item"),AG=e=>{const{item:t,editMode:n,onToggle:r}=e,i=(0,a.useCallback)((e=>{e.stopPropagation(),e.preventDefault(),r()}),[r]);return a.createElement("div",{className:DG(),onClick:e=>{n&&(e.stopPropagation(),e.preventDefault())}},t.icon?a.createElement(we.J,{className:DG("icon"),data:t.icon,size:t.iconSize}):null,a.createElement("span",{className:DG("text")},t.title),n&&a.createElement(Ie.z,{onClick:i,view:t.hidden?"flat-secondary":"flat-action"},a.createElement(Ie.z.Icon,null,t.hidden?a.createElement(VV,null):a.createElement(GV,null))))};var RG=(0,mi.e)({en:{"menu-item.all-pages.title":"All pages","all-panel.menu.category.allOther":"All other","all-panel.resetToDefault":"Reset to default","all-panel.title.editing":"Editing","all-panel.title.main":"All pages"},ru:{"menu-item.all-pages.title":"\u0412\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","all-panel.menu.category.allOther":"\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435","all-panel.resetToDefault":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","all-panel.title.editing":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","all-panel.title.main":"\u0412\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b"}},"".concat(Ri.N).concat("AllPagesPanel"));const MG="all-pages";Mi(".gn-all-pages-panel{box-sizing:border-box;height:100%;min-width:300px;padding:var(--g-spacing-4) var(--g-spacing-6)}.gn-all-pages-panel__content{flex:1;margin:0 calc(var(--g-spacing-6)*-1);overflow:auto}.gn-all-pages-panel__category{padding:0 var(--g-spacing-6)}.gn-all-pages-panel__discoverable-feature-wrapper{display:flex}");const LG=(0,Ri.b)("all-pages-panel"),FG=e=>{const{startEditIcon:t,onEditModeChanged:n,className:r}=e,{menuItems:i,onMenuItemsChanged:o}=gV(),s=(0,a.useRef)(i);s.current=i;const[l,c]=(0,a.useState)(!1),u=(0,a.useCallback)((()=>{c((e=>!e))}),[]),d=(e=>{const t=(0,a.useMemo)((()=>{const t=e.filter((e=>"divider"!==e.type&&e.id!==MG));return t.sort(((e,t)=>"action"===e.type?1:"action"===t.type?-1:0)),t.reduce(((e,t)=>{const n=t.category||RG("all-panel.menu.category.allOther");return e[n]||(e[n]=[]),e[n].push(t),e}),{})}),[e]);return t})(i);(0,a.useEffect)((()=>{null===n||void 0===n||n(l)}),[l,n]);const h=(0,a.useCallback)((e=>{var t;null===(t=e.onItemClick)||void 0===t||t.call(e,e,!1)}),[]),p=(0,a.useCallback)((e=>{if(!o)return;const t=Object.assign(Object.assign({},e),{hidden:!e.hidden}),n=s.current.filter((e=>e.id!==MG));o(n.map((e=>e.id!==t.id?e:t)))}),[o]),f=(0,a.useCallback)(((e,t,n)=>a.createElement(AG,{item:e,editMode:l,onToggle:()=>p(e)})),[l,p]),m=(0,a.useCallback)((()=>{if(!o)return;const e=s.current.filter((e=>e.id!==MG));o(e.map((e=>Object.assign(Object.assign({},e),{hidden:!1}))))}),[o]);return a.createElement(Ai.k,{className:LG(null,r),gap:"5",direction:"column"},a.createElement(Ai.k,{gap:"4",alignItems:"center",justifyContent:"space-between"},a.createElement(Fi.x,{variant:"subheader-2"},RG(l?"all-panel.title.editing":"all-panel.title.main")),a.createElement(Ie.z,{selected:l,view:"normal",onClick:u},t||a.createElement(we.J,{data:tE}))),a.createElement(Ai.k,{className:LG("content"),gap:"5",direction:"column"},Object.keys(d).map((e=>a.createElement(Ai.k,{key:e,direction:"column",gap:"3"},a.createElement(Fi.x,{className:LG("category"),variant:"body-1",color:"secondary"},e),a.createElement(Sx,{virtualized:!1,filterable:!1,items:d[e],onItemClick:h,renderItem:f}))))),l&&a.createElement(Ie.z,{onClick:m},RG("all-panel.resetToDefault")))};let zG;zG="undefined"!==typeof window?window:"undefined"!==typeof self?self:n.g;let BG=null,UG=null;const HG=zG.clearTimeout,VG=zG.setTimeout,GG=zG.cancelAnimationFrame||zG.mozCancelAnimationFrame||zG.webkitCancelAnimationFrame,WG=zG.requestAnimationFrame||zG.mozRequestAnimationFrame||zG.webkitRequestAnimationFrame;function qG(e){let t,n,r,i,o,a,s;const l="undefined"!==typeof document&&document.attachEvent;if(!l){a=function(e){const t=e.__resizeTriggers__,n=t.firstElementChild,r=t.lastElementChild,i=n.firstElementChild;r.scrollLeft=r.scrollWidth,r.scrollTop=r.scrollHeight,i.style.width=n.offsetWidth+1+"px",i.style.height=n.offsetHeight+1+"px",n.scrollLeft=n.scrollWidth,n.scrollTop=n.scrollHeight},o=function(e){return e.offsetWidth!==e.__resizeLast__.width||e.offsetHeight!==e.__resizeLast__.height},s=function(e){if(e.target.className&&"function"===typeof e.target.className.indexOf&&e.target.className.indexOf("contract-trigger")<0&&e.target.className.indexOf("expand-trigger")<0)return;const t=this;a(this),this.__resizeRAF__&&BG(this.__resizeRAF__),this.__resizeRAF__=UG((function(){o(t)&&(t.__resizeLast__.width=t.offsetWidth,t.__resizeLast__.height=t.offsetHeight,t.__resizeListeners__.forEach((function(n){n.call(t,e)})))}))};let e=!1,l="";r="animationstart";const c="Webkit Moz O ms".split(" ");let u="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),d="";{const t=document.createElement("fakeelement");if(void 0!==t.style.animationName&&(e=!0),!1===e)for(let n=0;n<c.length;n++)if(void 0!==t.style[c[n]+"AnimationName"]){d=c[n],l="-"+d.toLowerCase()+"-",r=u[n],e=!0;break}}n="resizeanim",t="@"+l+"keyframes "+n+" { from { opacity: 0; } to { opacity: 0; } } ",i=l+"animation: 1ms "+n+"; "}return{addResizeListener:function(o,c){if(l)o.attachEvent("onresize",c);else{if(!o.__resizeTriggers__){const l=o.ownerDocument,c=zG.getComputedStyle(o);c&&"static"===c.position&&(o.style.position="relative"),function(n){if(!n.getElementById("detectElementResize")){const r=(t||"")+".resize-triggers { "+(i||"")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',o=n.head||n.getElementsByTagName("head")[0],a=n.createElement("style");a.id="detectElementResize",a.type="text/css",null!=e&&a.setAttribute("nonce",e),a.styleSheet?a.styleSheet.cssText=r:a.appendChild(n.createTextNode(r)),o.appendChild(a)}}(l),o.__resizeLast__={},o.__resizeListeners__=[],(o.__resizeTriggers__=l.createElement("div")).className="resize-triggers";const u=l.createElement("div");u.className="expand-trigger",u.appendChild(l.createElement("div"));const d=l.createElement("div");d.className="contract-trigger",o.__resizeTriggers__.appendChild(u),o.__resizeTriggers__.appendChild(d),o.appendChild(o.__resizeTriggers__),a(o),o.addEventListener("scroll",s,!0),r&&(o.__resizeTriggers__.__animationListener__=function(e){e.animationName===n&&a(o)},o.__resizeTriggers__.addEventListener(r,o.__resizeTriggers__.__animationListener__))}o.__resizeListeners__.push(c)}},removeResizeListener:function(e,t){if(l)e.detachEvent("onresize",t);else if(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),!e.__resizeListeners__.length){e.removeEventListener("scroll",s,!0),e.__resizeTriggers__.__animationListener__&&(e.__resizeTriggers__.removeEventListener(r,e.__resizeTriggers__.__animationListener__),e.__resizeTriggers__.__animationListener__=null);try{e.__resizeTriggers__=!e.removeChild(e.__resizeTriggers__)}catch(tD){}}}}}null==GG||null==WG?(BG=HG,UG=function(e){return VG(e,20)}):(BG=function(e){let[t,n]=e;GG(t),HG(n)},UG=function(e){const t=WG((function(){HG(n),e()})),n=VG((function(){GG(t),e()}),20);return[t,n]});class ZG extends a.Component{constructor(){super(...arguments),this.state={height:this.props.defaultHeight||0,scaledHeight:this.props.defaultHeight||0,scaledWidth:this.props.defaultWidth||0,width:this.props.defaultWidth||0},this._autoSizer=null,this._detectElementResize=null,this._parentNode=null,this._resizeObserver=null,this._timeoutId=null,this._onResize=()=>{this._timeoutId=null;const{disableHeight:e,disableWidth:t,onResize:n}=this.props;if(this._parentNode){const r=window.getComputedStyle(this._parentNode)||{},i=parseFloat(r.paddingLeft||"0"),o=parseFloat(r.paddingRight||"0"),a=parseFloat(r.paddingTop||"0"),s=parseFloat(r.paddingBottom||"0"),l=this._parentNode.getBoundingClientRect(),c=l.height-a-s,u=l.width-i-o,d=this._parentNode.offsetHeight-a-s,h=this._parentNode.offsetWidth-i-o;(e||this.state.height===d&&this.state.scaledHeight===c)&&(t||this.state.width===h&&this.state.scaledWidth===u)||(this.setState({height:d,width:h,scaledHeight:c,scaledWidth:u}),"function"===typeof n&&n({height:d,scaledHeight:c,scaledWidth:u,width:h}))}},this._setRef=e=>{this._autoSizer=e}}componentDidMount(){const{nonce:e}=this.props;this._autoSizer&&this._autoSizer.parentNode&&this._autoSizer.parentNode.ownerDocument&&this._autoSizer.parentNode.ownerDocument.defaultView&&this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement&&(this._parentNode=this._autoSizer.parentNode,null!=this._parentNode&&("undefined"!==typeof ResizeObserver?(this._resizeObserver=new ResizeObserver((()=>{this._timeoutId=setTimeout(this._onResize,0)})),this._resizeObserver.observe(this._parentNode)):(this._detectElementResize=qG(e),this._detectElementResize.addResizeListener(this._parentNode,this._onResize)),this._onResize()))}componentWillUnmount(){this._parentNode&&(this._detectElementResize&&this._detectElementResize.removeResizeListener(this._parentNode,this._onResize),null!==this._timeoutId&&clearTimeout(this._timeoutId),this._resizeObserver&&(this._resizeObserver.observe(this._parentNode),this._resizeObserver.disconnect()))}render(){const{children:e,defaultHeight:t,defaultWidth:n,disableHeight:r=!1,disableWidth:i=!1,nonce:o,onResize:s,style:l={},tagName:c="div",...u}=this.props,{height:d,scaledHeight:h,scaledWidth:p,width:f}=this.state,m={overflow:"visible"},g={};let v=!1;return r||(0===d&&(v=!0),m.height=0,g.height=d,g.scaledHeight=h),i||(0===f&&(v=!0),m.width=0,g.width=f,g.scaledWidth=p),(0,a.createElement)(c,{ref:this._setRef,style:{...m,...l},...u},!v&&e(g))}}const YG={active:!1,activeIndex:void 0,hideCollapseItemTooltip:!1,lastClickedItemIndex:void 0,setValue:()=>{}},KG=a.createContext(YG);class QG extends a.PureComponent{constructor(){super(...arguments),this.state=Object.assign({},YG),this.setValue=e=>{this.setState(Object.assign({},e))}}render(){const{children:e}=this.props;return a.createElement(KG.Provider,{value:Object.assign(Object.assign({},this.state),{setValue:this.setValue})},e)}}Mi('.g-root_theme_dark .gn-multiple-tooltip,.g-root_theme_dark-hc .gn-multiple-tooltip{--multiple-tooltip-item-active-bg-color:var(--g-color-base-float-heavy);--multiple-tooltip-backdrop-background:linear-gradient(90deg,var(--g-color-base-background) 50%,transparent);--multiple-tooltip-backdrop-filter:blur(16px)}.g-root_theme_light .gn-multiple-tooltip,.g-root_theme_light-hc .gn-multiple-tooltip{--multiple-tooltip-item-active-bg-color:var(--g-color-base-float-heavy);--multiple-tooltip-backdrop-background:linear-gradient(90deg,var(--g-color-base-background) 50%,transparent);--multiple-tooltip-backdrop-filter:blur(12px)}.gn-multiple-tooltip.gn-multiple-tooltip{background-color:transparent;box-shadow:none}.gn-multiple-tooltip:before{background:var(--multiple-tooltip-backdrop-background);box-shadow:none;content:"";filter:var(--multiple-tooltip-backdrop-filter);height:100%;opacity:.7;position:absolute;width:100%;z-index:-1}.gn-multiple-tooltip__items-container{align-items:flex-start;display:flex;flex-direction:column;padding:32px 40px 32px 12px}.gn-multiple-tooltip__item{align-items:center;background-color:var(--g-color-base-float-medium);border-radius:5px;box-sizing:border-box;color:var(--g-color-text-light-primary);display:flex;height:30px;margin-bottom:5px;padding:8px 12px;position:relative;transition:transform .1s ease-in-out}.gn-multiple-tooltip__item:first-child,.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider)+.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider){margin-top:5px}.gn-multiple-tooltip__item_divider+.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider){margin-top:4px}.gn-multiple-tooltip__item_active{background-color:var(--multiple-tooltip-item-active-bg-color);transform:translateX(-12px)}.gn-multiple-tooltip__item_divider{height:15px;margin:0;visibility:hidden}');const XG=(0,Ri.b)("multiple-tooltip"),$G=[-32,4],JG=[{name:"preventOverflow",enabled:!1}],eW=e=>{let{items:t,open:n,anchorRef:r,placement:i}=e;const{activeIndex:o,hideCollapseItemTooltip:s}=a.useContext(KG),l=void 0===o?null:t[o];return a.createElement(ti,{open:n,anchorRef:r,placement:i,offset:$G,contentClassName:XG(null),modifiers:JG,disableLayer:!0},a.createElement("div",{className:XG("items-container")},t.filter((e=>{let{type:t="regular",id:n}=e;return!s||n!==_V&&"action"!==t})).map(((e,t)=>"divider"===e.type?a.createElement("div",{className:XG("item",{divider:!0}),key:t},e.title):a.createElement("div",{className:XG("item",{active:e===l}),key:t},e.title)))))};Mi(".gn-composite-bar{flex:1 0 auto;min-height:40px;width:100%}.gn-composite-bar .gn-composite-bar__root-menu-item[class]{background-color:transparent}");const tW=(0,Ri.b)("composite-bar"),nW=e=>{let{type:t,items:n,onItemClick:r,collapseItems:i,multipleTooltip:o=!1}=e;const s=(0,a.useRef)(null),l=(0,a.useRef)(null),{setValue:c,active:u,activeIndex:d,lastClickedItemIndex:h}=(0,a.useContext)(KG),{compact:p}=bV();a.useEffect((()=>{function e(){o&&u&&c({active:!1})}return window.addEventListener("blur",e),()=>{window.removeEventListener("blur",e)}}),[o,u,c]);const f=(0,a.useCallback)((e=>{o&&p&&!u&&document.hasFocus()&&d!==h&&e.clientX<=56&&(null===c||void 0===c||c({active:!0}))}),[o,p,u,d,h,c]),m=(0,a.useCallback)((()=>{o&&u&&document.hasFocus()&&(null===c||void 0===c||c({active:!1,lastClickedItemIndex:void 0}))}),[o,u,c]),g=(0,a.useCallback)((e=>()=>{if(o&&document.hasFocus()){let t=u;if(u||e===h||(t=!0),d===e&&u===t)return;c({activeIndex:e,active:t})}}),[o,u,h,d,c]),v=(0,a.useCallback)((()=>{var e;p&&document.hasFocus()&&(null===(e=s.current)||void 0===e||e.activateItem(void 0),!o||void 0===d&&void 0===h||c({activeIndex:void 0,lastClickedItemIndex:void 0}))}),[d,p,h,o,c]),y=(0,a.useCallback)((e=>(t,n,i)=>{p&&o&&e!==h&&t.id!==_V&&c({lastClickedItemIndex:e,active:!1}),null===r||void 0===r||r(t,n,i)}),[p,h,o,r,c]);return a.createElement(a.Fragment,null,a.createElement("div",{ref:l,onMouseEnter:f,onMouseLeave:m},a.createElement(Sx,{ref:s,items:n,selectedItemIndex:"menu"===t?NV(n):void 0,itemHeight:TV,itemsHeight:OV,itemClassName:tW("root-menu-item"),virtualized:!1,filterable:!1,sortable:!1,renderItem:(e,t,n)=>{const r=kV(e)?{item:e}:e,s=kV(e)?!o:e.enableTooltip;return a.createElement(AV,Object.assign({},r,{enableTooltip:s,onMouseEnter:g(n),onMouseLeave:v,onItemClick:y(n),collapseItems:i}))}})),"menu"===t&&o&&a.createElement(eW,{open:p&&u,anchorRef:l,placement:["right-start"],items:n}))},rW=e=>{let t,{type:n,items:r,menuMoreTitle:i,onItemClick:o,multipleTooltip:s=!1}=e;if(0===r.length)return null;if("menu"===n){const e=function(e){const t=function(e){const t=[];for(const n of e)(n.pinned||"divider"===n.type&&t.length>0&&"divider"!==t[t.length-1].type)&&t.push(n);return t}(e),n=e.filter((e=>e.afterMoreButton));return OV(t)+OV(n)+(t.length===e.length?0:xV)}(r),n=function(e){return{id:_V,title:e,icon:k_,iconSize:18}}(i);t=a.createElement("div",{className:tW({autosizer:!0}),style:{minHeight:e}},0!==r.length&&a.createElement(ZG,null,(e=>{const t=Number.isNaN(e.width)?0:e.width,i=Number.isNaN(e.height)?0:e.height,{listItems:l,collapseItems:c}=function(e,t,n){var r,i,o;const a=e.filter((e=>e.afterMoreButton)),s=e.filter((e=>!e.afterMoreButton)),l=[...s,...a],c=OV(l);if(c<=t)return{listItems:l,collapseItems:[]};const u=TV(n);l.splice(s.length,0,n);const d=[];let h=c+u,p=l.length;for(;h>t&&0!==p;){p--;const e=l[p];e.pinned||e.id===_V||e.afterMoreButton||("divider"!==e.type?(h-=TV(e),d.unshift(...l.splice(p,1))):p+1<l.length&&"divider"===(null===(r=l[p+1])||void 0===r?void 0:r.type)&&(h-=TV(e),l.splice(p,1)))}return"divider"!==(null===(i=l[p])||void 0===i?void 0:i.type)||0!==p&&"divider"!==(null===(o=l[p-1])||void 0===o?void 0:o.type)||l.splice(p,1),{listItems:l,collapseItems:d}}(r,i,n);return a.createElement("div",{style:{width:t,height:i}},a.createElement(nW,{type:"menu",items:l,onItemClick:o,collapseItems:c,multipleTooltip:s}))})))}else t=a.createElement("div",{className:tW({subheader:!0})},a.createElement(nW,{type:"subheader",items:r,onItemClick:o}));return a.createElement(QG,null,t)};var iW={button_collapse:"Collapse",button_expand:"Expand",label_more:"More"},oW={button_collapse:"\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c",button_expand:"\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c",label_more:"\u0415\u0449\u0451"};var aW,sW=(0,mi.e)({en:iW,ru:oW},"".concat(Ri.N).concat("AsideHeader"));function lW(){return lW=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},lW.apply(this,arguments)}var cW=function(e){return a.createElement("svg",lW({width:8,height:8,viewBox:"0 0 8 8",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},e),aW||(aW=a.createElement("path",{d:"m.72 7.64 6.39-3.2a.5.5 0 0 0 0-.89L.72.36A.5.5 0 0 0 0 .81v6.38c0 .37.4.61.72.45Z"})))};const uW=function(e,t){const n=e=>a.createElement(t,Object.assign({},e));return n.displayName=e,n}("NotIcon",we.J),dW=()=>{const{onChangeCompact:e,compact:t,expandTitle:n,collapseTitle:r}=gV(),i=(0,a.useCallback)((()=>{null===e||void 0===e||e(!t)}),[t,e]),o=t?n||sW("button_expand"):r||sW("button_collapse");return a.createElement(Ie.z,{className:(0,BV.b)("collapse-button",{compact:t}),view:"flat",pin:"brick-brick",onClick:i,title:o},a.createElement(uW,{data:cW,className:(0,BV.b)("collapse-icon"),width:"16",height:"10"}))};Mi(".gn-logo{height:40px}.gn-logo,.gn-logo__logo-btn-place{align-items:center;display:flex;flex-shrink:0}.gn-logo__logo-btn-place{cursor:pointer;justify-content:center}.gn-logo__logo-btn-place .g-button:before{background-color:transparent}.gn-logo__logo{cursor:pointer;font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height);vertical-align:middle}.gn-logo__logo-link,.gn-logo__logo-link:active,.gn-logo__logo-link:focus,.gn-logo__logo-link:hover,.gn-logo__logo-link:visited{color:inherit;outline:none;text-decoration:none}.g-root .gn-logo__btn-logo.button2_theme_flat.button2_hovered_yes:before{background-color:transparent}");const hW=(0,Ri.b)("logo"),pW=e=>{let{text:t,icon:n,iconSrc:r,iconClassName:i,iconSize:o=24,textSize:s=15,href:l,target:c="_self",wrapper:u,onClick:d,compact:h,className:p,buttonWrapperClassName:f,buttonClassName:m,"aria-label":g,"aria-labelledby":v}=e;const y="function"===typeof u;let b;r?b=a.createElement(Ie.z.Icon,{className:i},a.createElement("img",{alt:"logo icon",src:r,width:o,height:o})):n&&(b=a.createElement(we.J,{data:n,size:o,className:i}));const x=a.createElement(Ie.z,{view:"flat",size:"l",className:hW("btn-logo",m),component:y?"span":void 0,onClick:d,target:c,rel:"_self"===c?void 0:"noreferrer",href:l,extraProps:{"aria-label":g,"aria-labelledby":v}},b);let w;return w="function"===typeof t?t():a.createElement("div",{className:hW("logo"),style:{fontSize:s}},t),a.createElement("div",{className:hW(null,p)},a.createElement("div",{className:hW("logo-btn-place",f)},y?u(x,Boolean(h)):x),!h&&(y?a.createElement("div",{onClick:d},u(w,Boolean(h))):a.createElement("a",{href:null!==l&&void 0!==l?l:"/",target:c,rel:"_self"===c?void 0:"noreferrer",className:hW("logo-link"),onClick:d},w)))},fW=[],mW=()=>{const{logo:e,onItemClick:t,onClosePanel:n,headerDecoration:r,subheaderItems:i}=gV(),{compact:o}=bV(),{onClick:s}=e,l=(0,a.useCallback)((e=>{null===n||void 0===n||n(),null===s||void 0===s||s(e)}),[n,s]);return a.createElement("div",{className:(0,BV.b)("header",{"with-decoration":r})},a.createElement(pW,Object.assign({},e,{onClick:l,compact:o,buttonWrapperClassName:(0,BV.b)("logo-button-wrapper"),buttonClassName:(0,BV.b)("logo-button")})),a.createElement(rW,{type:"subheader",items:i||fW,onItemClick:t}),a.createElement(we.J,{data:ZV,className:(0,BV.b)("header-divider"),width:56,height:29}))},gW=()=>{const{panelItems:e,onClosePanel:t,size:n}=gV();return e?a.createElement(PG,{className:(0,BV.b)("panels"),onVeilClick:t,onEscape:t,style:{left:n}},e.map((e=>a.createElement(IG,Object.assign({key:e.id},e))))):null},vW=a.forwardRef(((e,t)=>{const{size:n,onItemClick:r,headerDecoration:i,multipleTooltip:o,menuMoreTitle:s,renderFooter:l,compact:c,customBackground:u,customBackgroundClassName:d,className:h,hideCollapseButton:p}=gV(),f=(()=>{const{menuItems:e,allPagesIsAvailable:t}=gV();return(0,a.useMemo)((()=>{if(!t)return e;let n=0;return e.filter(((e,t,r)=>!e.hidden&&(!(t>0&&"divider"===e.type)||"divider"!==r[n].type&&!r[n].hidden)&&(n=t,!0)))}),[t,e])})(),m=(0,a.useRef)(null);return a.useEffect((()=>{Ct(t,m.current)}),[t]),a.createElement(a.Fragment,null,a.createElement("div",{className:(0,BV.b)("aside",h),style:{width:n}},a.createElement("div",{className:(0,BV.b)("aside-popup-anchor"),ref:m}),a.createElement("div",{className:(0,BV.b)("aside-content",{"with-decoration":i})},u&&a.createElement("div",{className:(0,BV.b)("aside-custom-background",d)},u),a.createElement(mW,null),(null===f||void 0===f?void 0:f.length)?a.createElement(rW,{type:"menu",items:f,menuMoreTitle:null!==s&&void 0!==s?s:sW("label_more"),onItemClick:r,multipleTooltip:o}):a.createElement("div",{className:(0,BV.b)("menu-items")}),a.createElement("div",{className:(0,BV.b)("footer")},null===l||void 0===l?void 0:l({size:n,compact:Boolean(c),asideRef:m})),!p&&a.createElement(dW,null))),a.createElement(gW,null))}));var yW;vW.displayName="FirstPanel",function(e){e.AllPages="all-pages"}(yW||(yW={}));const bW=[],xW=e=>{const{size:t,onClosePanel:n,menuItems:r,panelItems:i,onMenuItemsChanged:o}=e,[s,l]=(0,a.useState)(),c=a.useMemo((()=>({id:MG,title:RG("menu-item.all-pages.title"),tooltipText:RG("menu-item.all-pages.title"),icon:k_})),[]),u=Boolean(o)&&(!r||(null===r||void 0===r?void 0:r.length)>0);(0,a.useEffect)((()=>{(null===i||void 0===i?void 0:i.some((e=>e.visible)))&&l(void 0)}),[i]);const d=(0,a.useCallback)((()=>{l(void 0),null===n||void 0===n||n()}),[n]),h=(0,a.useCallback)(((e,t,n)=>{var r;e.id===c.id?l((e=>e===yW.AllPages?void 0:yW.AllPages)):d(),null===(r=e.onItemClick)||void 0===r||r.call(e,e,t,n)}),[d,c]),p=(0,a.useMemo)((()=>u?[...r||bW,Object.assign(Object.assign({},c),{current:s===yW.AllPages})]:r||bW),[u,r,s,c]),f=(0,a.useMemo)((()=>u?[...i||[],{id:yW.AllPages,content:a.createElement(FG,null),visible:s===yW.AllPages}]:i),[u,i,s]);return Object.assign(Object.assign({},e),{onClosePanel:d,allPagesIsAvailable:u,menuItems:p,panelItems:f,size:t,onItemClick:h})},wW=a.forwardRef(((e,t)=>{const{size:n,compact:r}=bV(),i=xW(Object.assign({size:n,compact:r},e));return a.createElement(mV,{value:i},a.createElement(vW,{ref:t}))}));wW.displayName="PageLayoutAside";const SW=a.forwardRef(((e,t)=>{var{compact:n,className:r,topAlert:i}=e,o=Je(e,["compact","className","topAlert"]);return a.createElement(HV,{compact:n,className:r,topAlert:i},a.createElement(wW,Object.assign({ref:t},o)),a.createElement(HV.Content,{renderContent:o.renderContent}))}));var _W;function CW(){return CW=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},CW.apply(this,arguments)}SW.displayName="AsideHeader";const EW=function(e){return a.createElement("svg",CW({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},e),_W||(_W=a.createElement("path",{d:"M560 448h-48V113.5c0-27.25-21.5-49.5-48-49.5l-112 .01V128h96v384h112c8.875 0 16-7.125 16-15.1v-31.1c0-10.7-7.1-17.8-16-17.8zM280.3 1.007l-192 49.75C73.1 54.51 64 67.76 64 82.88V448H16c-8.875 0-16 7.125-16 15.1v31.1C0 504.9 7.125 512 16 512h304V33.13c0-21.5-19.5-37.373-39.7-32.123zM232 288c-13.25 0-24-14.37-24-31.1 0-17.62 10.75-31.1 24-31.1s24 12.6 24 30.2-10.7 32-24 32z"})))},TW=Me("kv-navigation");function OW(e){let{isCompact:t,popupAnchor:n,ydbUser:r,children:i}=e;const[o,s]=a.useState(!1),l=r.login?pV:EW;return(0,Le.jsx)(LV,{compact:t,item:{id:"user-popup",title:r.login?r.login:os("navigation-item.account"),current:o,icon:l,onItemClick:()=>s(!0)},enableTooltip:!o,popupAnchor:n,popupVisible:o,onClosePopup:()=>s(!1),renderPopupContent:()=>(0,Le.jsx)("div",{className:TW("ydb-user-wrapper"),children:i})})}var NW;!function(e){e.UserSettings="UserSettings"}(NW||(NW={}));const kW=(new class{constructor(){this.type=void 0,this.entities={}}set(e,t){return this.entities[e]=t,this}get(e){return this.entities[e]}register(e,t){return this.entities[e]=t,this}}).register("StaffCard",(function(e){let{children:t}=e;return(0,Le.jsx)(a.Fragment,{children:t})})).register("AsideNavigation",(function(e){const t=_a(),[n,r]=a.useState(),{user:i}=Do((e=>e.authentication)),[o,s]=Mo(Lo.Ac);return(0,Le.jsx)(a.Fragment,{children:(0,Le.jsx)(SW,{logo:{text:"YDB",icon:Js,onClick:()=>t.push("/")},menuItems:e.menuItems,compact:o,onChangeCompact:s,className:TW(),renderContent:()=>e.content,renderFooter:t=>{let{compact:o,asideRef:s}=t;return(0,Le.jsxs)(a.Fragment,{children:[(0,Le.jsx)(LV,{compact:o,item:{id:"documentation",title:os("navigation-item.documentation"),icon:No,onItemClick:()=>{window.open("https://ydb.tech/docs","_blank","noreferrer")}}}),(0,Le.jsx)(LV,{item:{id:"user-settings",title:os("navigation-item.settings"),icon:tE,current:n===NW.UserSettings,onItemClick:()=>{r(n===NW.UserSettings?void 0:NW.UserSettings)}},compact:o}),(0,Le.jsx)(OW,{isCompact:o,popupAnchor:s,ydbUser:{login:i},children:e.ydbInternalUser})]})},panelItems:[{id:"user-settings",visible:n===NW.UserSettings,content:e.settings}],onClosePanel:()=>{r(void 0)}})})})).register("ErrorBoundary",Xe);function jW(e){let{store:t,history:n,componentsRegistry:r=kW,children:i}=e;return(0,Le.jsx)($,{children:(0,Le.jsx)(ae.zt,{store:t,children:(0,Le.jsx)(ia,{history:n,children:(0,Le.jsx)(uc,{adapter:hV,children:(0,Le.jsx)(IW,{children:(0,Le.jsx)(ze,{registry:r,children:i})})})})})})}function IW(e){let{children:t}=e;const[n]=Mo(Lo.bw);return(0,Le.jsx)(dV.f,{theme:n,children:t})}const PW=(0,ae.$j)((function(e){return{singleClusterMode:e.singleClusterMode}}))((function(e){let{store:t,history:n,singleClusterMode:r,children:i,userSettings:o=Xa}=e;return(0,Le.jsxs)(jW,{store:t,history:n,children:[(0,Le.jsx)(oe,{defaultTitle:"YDB Monitoring",titleTemplate:"%s \u2014 YDB Monitoring"}),(0,Le.jsx)(uV,{children:(0,Le.jsx)(ms,{userSettings:o,children:(0,Le.jsxs)(Qe,{children:[(0,Le.jsx)(sV,{singleClusterMode:r,children:i}),(0,Le.jsx)("div",{id:"fullscreen-root"})]})})}),(0,Le.jsx)(Vs,{})]})}));var DW,AW=n(9416);function RW(e){let{monitoring:t,dbName:n,dbType:r,clusterName:i}=e;try{const e=LW(t);if(e){var o,a;const t=null!==(o=e.host)&&void 0!==o?o:"cluster",s=null!==(a=e.slot)&&void 0!==a?a:"static",l=e.cluster_name||i||"",c=new URL(e.monitoring_url);if(!c.search){const t=r===AW.Hi.Serverless?e.serverless_dashboard:e.dedicated_dashboard;c.pathname+="/".concat(t)}return c.searchParams.has("p.cluster")||c.searchParams.set("p.cluster",l),c.searchParams.set("p.host",t),c.searchParams.set("p.slot",s),c.searchParams.set("p.database",n),c.toString()}}catch{}return""}function MW(e,t){try{const n=LW(e);if(n){const e=n.cluster_dashboard,r=n.cluster_name||t||"",i=new URL(n.monitoring_url);return!i.search&&e&&(i.pathname+="/".concat(e,"/view")),i.searchParams.has("p.cluster")||i.searchParams.set("p.cluster",r),i.searchParams.set("p.database","-"),i.toString()}}catch{}return""}function LW(e){try{const t=JSON.parse(e);if("object"===typeof t&&"monitoring_url"in t)return t}catch{}}function FW(){return FW=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},FW.apply(this,arguments)}const zW=function(e){return a.createElement("svg",FW({fill:"currentColor",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"},e),DW||(DW=a.createElement("path",{d:"M14.195 11.375H3.125v-7.82a.328.328 0 00-.305-.305H1.805a.309.309 0 00-.305.305v9.14c0 .178.127.305.305.305h12.39a.309.309 0 00.305-.305V11.68a.328.328 0 00-.305-.305zm-3.25-5.688L8.812 7.11 6.63 4.24c-.127-.178-.38-.178-.508.026L3.937 7.922v2.64h9.75l-2.285-4.748c-.101-.177-.304-.228-.457-.127z"})))},BW=Me("kv-monitoring-button");function UW(e){let{href:t,visible:n=!1,className:r}=e;return(0,Le.jsx)(Ie.z,{href:t,target:"_blank",className:BW({visible:n},r),size:"s",title:"Monitoring dashboard",children:(0,Le.jsx)(we.J,{data:zW})})}var HW=n(90860);const VW="https://",GW=(e,t)=>{const n=null!==(r=e)&&void 0!==r&&r.startsWith("vm-")?"u-".concat(r):r;var r;const i=IT(t).proxy;return i?VW+i+"/"+n:VW+n},WW=(e,t,n)=>{const{Host:r,Endpoints:i,NodeId:o}=e;if(n&&o){const e=jT(t);return"".concat(e,"/node/").concat(o,"/")}if(r&&i){var a;const e=null===(a=i.find((e=>"http-mon"===e.Name)))||void 0===a?void 0:a.Address;if(!e||!r)return null;return GW(r+e,t)+"/"}return null},qW=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h_.y3,t=arguments.length>1?arguments[1]:void 0;return{getNodeRef:function(){return WW(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},null!==e&&void 0!==e?e:"",t)}}};function ZW(){const e=Ca(),{clusterName:t}=(0,Ta.mB)(e),{data:n}=GE.W1.useGetClustersListQuery(void 0),r=a.useMemo((()=>(n||[]).find((e=>e.name===t))),[n,t]),{solomon:i,balancer:o,versions:s,cluster:l}=r||{},[c]=Mo(Lo.IG);return{monitoring:i,balancer:o,versions:s,cluster:l,useClusterBalancerAsBackend:c,additionalNodesProps:qW(o,c)}}const YW=Me("extended-cluster"),KW=e=>{const t=PT(e);return{label:"Balancer",value:(0,Le.jsxs)("div",{className:YW("balancer"),children:[t,(0,Le.jsx)(OT,{text:t,size:"s",className:YW("clipboard-button")})]})}},QW=(e,t,n,r)=>{const i={};if(t&&r){const n=r(t,e);n&&(i.links=[{title:"Monitoring",url:n}])}return n&&(i.info=[KW(n)]),i},XW=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{getVersionToColorMap:()=>(0,HW.n$)((0,HW.kn)(e))}},$W=(e,t,n,r,i)=>{const o={prepareTenantBackend:e=>{if(n){if(r)return jT(n);if(e)return GW(e,n)}}};return t&&i&&(o.getMonitoringLink=(n,r)=>{if(n&&r){const o=i({monitoring:t,dbName:n,dbType:r,clusterName:e});return(0,Le.jsx)(UW,{href:o})}return null}),o};function JW(e){let{component:t,getMonitoringLink:n,getMonitoringClusterLink:r}=e;const{monitoring:i,balancer:o,versions:a,cluster:s,useClusterBalancerAsBackend:l,additionalNodesProps:c}=ZW();return(0,Le.jsx)("div",{className:YW(),children:(0,Le.jsx)(t,{additionalClusterProps:QW(null===s||void 0===s?void 0:s.Name,i,o,r),additionalVersionsProps:XW(a),additionalTenantsProps:$W(null===s||void 0===s?void 0:s.Name,i,o,l,n),additionalNodesProps:c})})}function eq(e){let{component:t}=e;const{additionalNodesProps:n}=ZW();return(0,Le.jsx)(t,{additionalNodesProps:n})}function tq(e){let{component:t,getMonitoringLink:n}=e;const{additionalNodesProps:r,cluster:i,monitoring:o}=ZW(),a={getMonitoringLink:(e,t)=>{if(o&&e&&t&&n){const r=n({monitoring:o,dbName:e,dbType:t,clusterName:null===i||void 0===i?void 0:i.Name});return r?(0,Le.jsx)(UW,{href:r,visible:!0}):null}return null}};return(0,Le.jsx)(t,{additionalTenantProps:a,additionalNodesProps:r})}const nq=JSON.parse('{"settings.useClusterBalancerAsBackend.title":"Use cluster balancer as backend","settings.useClusterBalancerAsBackend.popover":"By default random cluster node is used as backend. It causes saved links to become invalid after some time, when node is restarted. Using balancer as backend fixes it"}'),rq=JSON.parse('{"settings.useClusterBalancerAsBackend.title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u043b\u0430\u043d\u0441\u0435\u0440 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043a\u0430\u043a \u0431\u044d\u043a\u0435\u043d\u0434","settings.useClusterBalancerAsBackend.popover":"\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c\u0438 \u0441\u043f\u0443\u0441\u0442\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u0443\u0437\u0435\u043b \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0430\u043b\u0430\u043d\u0441\u0435\u0440\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u044d\u0442\u043e"}'),iq=(0,We.wZ)("ydb-extended-user-settings",{ru:rq,en:nq}),oq=Xa;function aq(e){let{store:t,history:n,getMonitoringLink:r=RW,getMonitoringClusterLink:i=MW,userSettings:o=oq,children:a}=e;return(0,Le.jsxs)(PW,{store:t,history:n,userSettings:o,children:[(0,Le.jsx)(qH,{children:e=>{let{component:t}=e;return(0,Le.jsx)(JW,{component:t,getMonitoringLink:r,getMonitoringClusterLink:i})}}),(0,Le.jsx)(YH,{children:e=>{let{component:t}=e;return(0,Le.jsx)(eq,{component:t})}}),(0,Le.jsx)(ZH,{children:e=>{let{component:t}=e;return(0,Le.jsx)(tq,{component:t,getMonitoringLink:r})}}),a]})}oq[2].sections[0].settings.push({title:iq("settings.useClusterBalancerAsBackend.title"),helpPopoverContent:iq("settings.useClusterBalancerAsBackend.popover"),settingKey:Lo.IG});var sq=n(43066),lq=n(63660),cq=n(90058)},90058:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=e=>{e&&e instanceof Function&&n.e(599).then(n.bind(n,40599)).then((t=>{let{getCLS:n,getFID:r,getFCP:i,getLCP:o,getTTFB:a}=t;n(e),r(e),i(e),o(e),a(e)}))}},54665:(e,t,n)=>{"use strict";n.d(t,{By:()=>v,Fz:()=>m,ZP:()=>u,ax:()=>p,ds:()=>g,mB:()=>d,vF:()=>f});var r=n(85198),i=n.n(r),o=n(7856),a=n(63041),s=n.n(a),l=n(27102);const c={clusters:"/".concat("clusters"),cluster:"/".concat("cluster","/:activeTab?"),tenant:"/".concat("tenant"),node:"/".concat("node","/:id/:activeTab?"),pDisk:"/".concat("pDisk"),vDisk:"/".concat("vDisk"),tablet:"/".concat("tablet","/:id"),tabletsFilters:"/tabletsFilters",auth:"/auth"},u=c,d=e=>s().parse(e.search,{ignoreQueryPrefix:!0}),h=e=>{let t=e;const n=/:\d{3,5}/g,r=e.match(n);if(r){const i=r[0];t=e.replace(n,":\\"+i.slice(1))}return t};function p(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n;const a=Boolean(n.backend);l.y3&&!a&&l.dx&&(r={...n,backend:l.y3});const c=Boolean(n.clusterName);l.qw&&!c&&l.dx&&(r={...r,clusterName:l.qw});const u=i()(r)?"":"?".concat(s().stringify(r,{encode:!1})),d=h(e);return"".concat((0,o.compile)(d)(t)).concat(u)}const f=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return p(window.location.pathname,void 0,e)};function m(e){const{pathname:t,search:n,hash:r}=new URL(e,"http://localhost");return{pathname:t,search:n,hash:r}}function g(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(c.pDisk,void 0,{...n,nodeId:t,pDiskId:e})}function v(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return p(c.vDisk,void 0,{...r,nodeId:n,pDiskId:t,vDiskSlotId:e})}},43066:(e,t,n)=>{"use strict";n.d(t,{su:()=>m,Iy:()=>g,LC:()=>v});var r=n(63585),i=n.n(r),o=n(52369),a=n(27208);class s{constructor(){var e=this;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.setApiEndpoint=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";"undefined"!==typeof location&&(t=t.replace("%CURRENT_HOST%",location.host)),e.apiEndpoint=t},this.setCSRFToken=e=>{this._axios.defaults.headers.post["X-CSRF-Token"]=e,this._axios.defaults.headers.put["X-CSRF-Token"]=e,this._axios.defaults.headers.delete["X-CSRF-Token"]=e},this.setDefaultHeader=e=>{let{name:t,value:n,methods:r}=e;const i=this._axios.defaults.headers;Array.isArray(r)?r.forEach((e=>{const r=i[e];r&&r instanceof o.uu&&(r[t]=n)})):i.common[t]=n},this.apiPath=e=>"".concat(this.apiEndpoint).concat(e);const{config:n={},apiEndpoint:r="/api",collector:l={}}=t,c=Object.assign({xsrfCookieName:"",timeout:s.DEFAULT_TIMEOUT,withCredentials:!0},n);this._axios=a.Z.create(c),this._axios.defaults.headers=i()(this._axios.defaults.headers),this.requestTokens={},this.setApiEndpoint(r),this.collectorSettings=l,this.collector={errors:[],requests:[]}}collectRequest(e){let{method:t,url:n,data:r,requestStart:i,response:o,responseError:a,error:s=!1,cancelled:l=!1}=e;const{collectErrors:c,collectRequests:u}=this.collectorSettings;if(!c&&!u)return;const{responseText:d="",responseURL:h=n}=o&&o.request||{},p=s&&a instanceof Error?a.message:"",f={method:t,url:h,time:{start:i,end:Number(new Date)},status:o&&o.status,size:d.length,requestData:r&&JSON.stringify(r,null,2)||"",responseData:o&&o.data&&JSON.stringify(o.data,null,2)||p,isError:s,isCancelled:l};c&&s&&(this.collector.errors=[...this.collector.errors,f].slice(-c)),u&&(this.collector.requests=[...this.collector.requests,f].slice(-u))}getCollectedRequests(){return{errors:[...this.collector.errors],requests:[...this.collector.requests]}}async request(e){const{method:t,url:n,data:r=null,params:i,options:o={},retries:s=0}=e,l=o.requestConfig||{},{concurrentId:c,collectRequest:u=!0,timeout:d,headers:h,onDownloadProgress:p}=o;c&&(this.cancelRequest(c),l.cancelToken=this.createRequestToken(c)),h&&(l.headers=h),"undefined"!==typeof d&&(l.timeout=d);const f=Number(new Date),m={method:t,url:n,data:r,params:i,onDownloadProgress:p};try{const e=await this._axios.request(Object.assign(Object.assign({},l),m));return this.clearRequestToken(c),u&&this.collectRequest(Object.assign(Object.assign({},m),{requestStart:f,response:e})),e.data}catch(g){if(a.Z.isCancel(g))throw{isCancelled:!0,error:g};let t;return this.clearRequestToken(c),t=g.response?g.response:"function"===typeof g.toJSON?g.toJSON():g,u&&this.collectRequest(Object.assign(Object.assign({},m),{requestStart:f,response:t,error:!0,cancelled:a.Z.isCancel(g),responseError:g})),this.handleRequestError(t,(()=>this.request(Object.assign(Object.assign({},e),{retries:s+1}))),s,new Error(g instanceof Error?g.message:"Unknown error"))}}cancelRequest(e){e&&this.requestTokens[e]&&this.requestTokens[e].cancel("Concurrent request")}get(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.request({method:"GET",url:e,params:t,options:n})}post(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.request({method:"POST",url:e,data:t,params:n,options:r})}put(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.request({method:"PUT",url:e,data:t,params:n,options:r})}patch(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.request({method:"PATCH",url:e,data:t,params:n,options:r})}delete(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.request({method:"DELETE",url:e,data:t,params:n,options:r})}head(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.request({method:"HEAD",url:e,params:t,options:n})}handleRequestError(e){throw e}createRequestToken(e){if(e){const t=a.Z.CancelToken.source();return this.requestTokens[e]=t,t.token}}clearRequestToken(e){e&&this.requestTokens[e]&&delete this.requestTokens[e]}}s.DEFAULT_TIMEOUT=6e4;var l=n(27102),c=n(52317),u=n(48169),d=n(27070);const h=e=>{const{cluster:t={}}=e,{cluster:n,balancer:r,solomon:i}=t;return{...n,Name:t.title||(null===n||void 0===n?void 0:n.Name),Balancer:r,Solomon:i}},p=e=>({TenantInfo:null===e||void 0===e?void 0:e.databases});var f=n(18193);class m extends s{getPath(e){return"".concat(null!==l.y3&&void 0!==l.y3?l.y3:"").concat(e)}getClusterInfo(e){let{concurrentId:t,signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/cluster"),{name:e,tablets:!0},{concurrentId:t||"getClusterInfo",requestConfig:{signal:n}})}getClusterNodes(){let{concurrentId:e,signal:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.get(this.getPath("/viewer/json/sysinfo"),{},{concurrentId:e||"getClusterNodes",requestConfig:{signal:t}})}getNodeInfo(e){let{concurrentId:t,signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/sysinfo?enums=true"),{node_id:e},{concurrentId:t,requestConfig:{signal:n}})}getTenants(e){let{concurrentId:t,signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/tenantinfo"),{tablets:1,storage:1,cluster_name:e},{concurrentId:t,requestConfig:{signal:n}})}getTenantInfo(e){let{path:t}=e,{concurrentId:n,signal:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/tenantinfo"),{path:t,tablets:!0,storage:!0},{concurrentId:n||"getTenantInfo|".concat(t),requestConfig:{signal:r}})}getNodes(e){let{visibleEntities:t,type:n="any",tablets:r=!0,sortOrder:i,sortValue:o,...a}=e,{concurrentId:s,signal:l}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const c=(0,d.A)(o,i);return this.get(this.getPath("/viewer/json/nodes?enums=true"),{with:t,type:n,tablets:r,sort:c,...a},{concurrentId:s,requestConfig:{signal:l}})}getCompute(e){let{sortOrder:t,sortValue:n,...r}=e,{concurrentId:i,signal:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=(0,d.A)(n,t);return this.get(this.getPath("/viewer/json/compute?enums=true"),{sort:a,...r},{concurrentId:i,requestConfig:{signal:o}})}getStorageInfo(e){let{tenant:t,visibleEntities:n,nodeId:r,poolName:i,groupId:o,sortOrder:a,sortValue:s,...l}=e,{concurrentId:c,signal:u}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const h=(0,d.A)(s,a);return this.get(this.getPath("/viewer/json/storage?enums=true"),{tenant:t,node_id:r,pool:i,group_id:o,with:n,sort:h,...l},{concurrentId:c,requestConfig:{signal:u}})}getPDiskInfo(e){let{nodeId:t,pDiskId:n}=e,{concurrentId:r,signal:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/pdiskinfo?enums=true"),{filter:"(NodeId=".concat(t).concat(n?";PDiskId=".concat(n):"",")")},{concurrentId:r,requestConfig:{signal:i}})}getVDiskInfo(e){let{vDiskSlotId:t,pDiskId:n,nodeId:r}=e,{concurrentId:i,signal:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/vdiskinfo?enums=true"),{node_id:r,filter:"(PDiskId=".concat(n,";VDiskSlotId=").concat(t,")")},{concurrentId:i,requestConfig:{signal:o}})}getGroupInfo(e){let{concurrentId:t,signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/storage?enums=true"),{group_id:e},{concurrentId:t,requestConfig:{signal:n}})}getHostInfo(){let{concurrentId:e,signal:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.get(this.getPath("/viewer/json/sysinfo?node_id=.&enums=true"),{concurrentId:e,requestConfig:{signal:t}})}getTabletsInfo(e){let{nodes:t=[],path:n}=e,{concurrentId:r,signal:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=t.length>0&&"(NodeId=[".concat(t.join(","),"])");return this.get(this.getPath("/viewer/json/tabletinfo"),{filter:o,path:n,enums:!0},{concurrentId:r,requestConfig:{signal:i}})}getSchema(e){let{path:t}=e,{concurrentId:n,signal:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/describe"),{path:t,enums:!0,backup:!1,private:!0,partition_config:!0,partition_stats:!0,partitioning_info:!0,subs:1},{concurrentId:n||"getSchema|".concat(t),requestConfig:{signal:r}})}getDescribe(e){let{path:t}=e,{concurrentId:n,signal:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/describe"),{path:t,enums:!0,partition_stats:!0,subs:0},{concurrentId:n||"getDescribe|".concat(t),requestConfig:{signal:r}})}getSchemaAcl(e){let{path:t}=e,{concurrentId:n,signal:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/acl"),{path:t},{concurrentId:n||"getSchemaAcl",requestConfig:{signal:r}})}getHeatmapData(e){let{path:t}=e,{concurrentId:n,signal:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/describe"),{path:t,enums:!0,backup:!1,children:!1,partition_config:!1,partition_stats:!0},{concurrentId:n,requestConfig:{signal:r}})}getNetwork(e){let{concurrentId:t,signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/netinfo"),{enums:!0,path:e},{concurrentId:t,requestConfig:{signal:n}})}getTopic(e){let{path:t}=e,{concurrentId:n,signal:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/describe_topic"),{enums:!0,include_stats:!0,path:t},{concurrentId:n,requestConfig:{signal:r}})}getConsumer(e){let{path:t,consumer:n}=e,{concurrentId:r,signal:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/describe_consumer"),{enums:!0,include_stats:!0,path:t,consumer:n},{concurrentId:r||"getConsumer",requestConfig:{signal:i}})}getPoolInfo(e){let{concurrentId:t,signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/storage"),{pool:e,enums:!0},{concurrentId:t,requestConfig:{signal:n}})}getTablet(e){let{id:t}=e,{concurrentId:n,signal:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/tabletinfo?filter=(TabletId=".concat(t,")")),{enums:!0},{concurrentId:n,requestConfig:{signal:r}})}getTabletHistory(e){let{id:t}=e,{concurrentId:n,signal:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/tabletinfo?filter=(TabletId=".concat(t,")")),{enums:!0,merge:!1},{concurrentId:n,requestConfig:{signal:r}})}getNodesList(){let{concurrentId:e,signal:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.get(this.getPath("/viewer/json/nodelist"),{enums:!0},{concurrentId:e,requestConfig:{signal:t}})}getTenantsList(){let{concurrentId:e,signal:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.get(this.getPath("/viewer/json/tenants"),{enums:!0,state:0},{concurrentId:e,requestConfig:{signal:t}})}sendQuery(e){let{schema:t,...n}=e,{concurrentId:r,signal:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=!f.r.readUserSettingsValue(c.N1,!0);return this.post(this.getPath("/viewer/json/query?timeout=".concat(6e5,"&base64=").concat(o).concat(t?"&schema=".concat(t):"")),n,{},{concurrentId:r,timeout:54e4,requestConfig:{signal:i}})}getExplainQuery(e,t,n,r){return this.post(this.getPath("/viewer/json/query"),{query:e,database:t,action:n||"explain",syntax:r,timeout:6e5},{})}getExplainQueryAst(e,t){return this.post(this.getPath("/viewer/json/query"),{query:e,database:t,action:"explain-ast",timeout:6e5},{})}getHotKeys(e,t){let{concurrentId:n,signal:r}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.get(this.getPath("/viewer/json/hotkeys"),{path:e,enable_sampling:t},{concurrentId:n||"getHotKeys",requestConfig:{signal:r}})}getHealthcheckInfo(e){let{concurrentId:t,signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/healthcheck?merge_records=true"),{tenant:e},{concurrentId:t,requestConfig:{signal:n}})}evictVDisk(e){let{groupId:t,groupGeneration:n,failRealmIdx:r,failDomainIdx:i,vDiskIdx:o}=e;return this.post(this.getPath("/tablets/app?TabletID=".concat("72057594037932033","&exec=1")),{Command:{ReassignGroupDisk:{GroupId:t,GroupGeneration:n,FailRealmIdx:r,FailDomainIdx:i,VDiskIdx:o}}},{},{headers:{Accept:"application/json"}})}restartPDisk(e,t){const n=(0,u.ok)({nodeId:e,pDiskId:t,host:this.getPath("")});return this.post(n,"restartPDisk=",{},{headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}})}killTablet(e){return this.get(this.getPath("/tablets?KillTabletID=".concat(e)),{})}stopTablet(e,t){return this.get(this.getPath("/tablets/app?TabletID=".concat(t,"&page=StopTablet&tablet=").concat(e)),{})}resumeTablet(e,t){return this.get(this.getPath("/tablets/app?TabletID=".concat(t,"&page=ResumeTablet&tablet=").concat(e)),{})}getTabletDescribe(e){let{concurrentId:t,signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get(this.getPath("/viewer/json/describe"),{schemeshard_id:null===e||void 0===e?void 0:e.SchemeShard,path_id:null===e||void 0===e?void 0:e.PathId},{concurrentId:t,requestConfig:{signal:n}})}getChartData(e){let{target:t,from:n,until:r,maxDataPoints:i,database:o}=e,{concurrentId:a,signal:s}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const l="".concat(t,"&from=").concat(n,"&until=").concat(r,"&maxDataPoints=").concat(i,"&format=json");return this.post(this.getPath("/viewer/json/render?database=".concat(o)),l,{},{concurrentId:a,headers:{"Content-Type":"application/x-www-form-urlencoded"},requestConfig:{signal:s}})}postSetting(e,t,n){return this.request({method:"PATCH",url:e,data:{[t]:n}})}authenticate(e,t){return this.post(this.getPath("/login"),{user:e,password:t},{})}logout(){return this.post(this.getPath("/logout"),{},{})}whoami(){return this.get(this.getPath("/viewer/json/whoami"),{})}autocomplete(e){const{table:t,...n}=e,r=null===t||void 0===t?void 0:t.join(",");return this.get(this.getPath("/viewer/json/autocomplete"),{...n,table:r},{concurrentId:"sql-autocomplete"})}getClustersList(e){let{signal:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get("".concat(l.Vq||"","/meta/clusters"),null,{requestConfig:{signal:t}})}}class g extends m{getClusterInfo(e){let{signal:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get("".concat(l.Vq||"","/meta/cluster"),{name:e},{concurrentId:"getCluster".concat(e),requestConfig:{signal:t}}).then(h)}getTenants(e){let{concurrentId:t,signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get("".concat(l.Vq||"","/meta/cp_databases"),{cluster_name:e},{concurrentId:t,requestConfig:{signal:n}}).then(p)}}function v(){let{webVersion:e=!1,withCredentials:t=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n={withCredentials:t};return e?new g({config:n}):new m({config:n})}},18193:(e,t,n)=>{"use strict";n.d(t,{r:()=>l,t:()=>s});var r=n(24015),i=n(52317),o=n(39623),a=n(47651);const s={[i.bw]:"system",[i.Px]:void 0,[i.yT]:!1,[i.UF]:!1,[i.Rq]:!1,[i.N1]:!0,[i.DG]:[],[i.pf]:r.m2.query,[i.Wm]:o.wZ.script,[i.w7]:o.Jf.execute,[i.Ac]:!0,[i.ZY]:[],[i.ET]:!1,[i.IG]:!0,[i.y6]:!1,[i.XX]:!0,[i.JZ]:!1};const l=new class{constructor(){this.extractSettingsFromLS=e=>Object.entries(e).reduce(((e,t)=>{let[n,r]=t;return e[n]=this.readUserSettingsValue(n,r),e}),{}),this.readValueFromLS=e=>{try{const t=localStorage.getItem(e);return(0,a.Mo)(t)}catch{return}},this.setValueToLS=(e,t)=>{try{"string"===typeof t?localStorage.setItem(e,t):localStorage.setItem(e,JSON.stringify(t))}catch{}}}readUserSettingsValue(e,t){var n;return null!==(n=this.readValueFromLS(e))&&void 0!==n?n:t}setUserSettingsValue(e,t){return this.setValueToLS(e,t)}}},67510:(e,t,n)=>{"use strict";n.d(t,{y3:()=>O,EZ:()=>N,qw:()=>k,xC:()=>F,j4:()=>R,Vq:()=>M,dx:()=>A});var r=n(1399),i=n(91668),o=n(91087),a=n(43066),s=n(92820);const l=e=>{let{href:t,singleClusterMode:n,customBackend:r}=e;if(n){if(r){const{backend:e}=s.parse(t,!0).query;return{basename:"/",backend:e?String(e):r}}{const e=window.location.pathname.match(/.*(?=\/monitoring)/)||[],t=e.length>0?e[0]:"";return{basename:[t,"monitoring"].filter(Boolean).join("/"),backend:t||""}}}{const{backend:e,clusterName:n}=s.parse(t,!0).query;return{basename:"/",backend:e?String(e):e,clusterName:n?String(n):n}}};var c=n(9869),u=n(905),d=n(3027),h=n(84142),p=n.n(h),f=n(25484),m=n.n(f),g=n(3186),v=n.n(g),y=n(63041),b=n.n(y),x=n(94909),w=n(58102),S=n(43903),_=n(78103),C=n(93717);const E={global:{problemFilter:{stateKey:"settings.problemFilter",initialState:n(80839).E3.problemFilter}},"/tenant":{sort:{stateKey:"heatmap.sort",initialState:C.E3.sort,type:"bool"},heatmap:{stateKey:"heatmap.heatmap",initialState:C.E3.heatmap,type:"bool"},currentMetric:{stateKey:"heatmap.currentMetric",initialState:C.E3.currentMetric},schema:{stateKey:"schema.currentSchemaPath"},stateFilter:{stateKey:"tablets.stateFilter",type:"array"},typeFilter:{stateKey:"tablets.typeFilter",type:"array"},tenantPage:{stateKey:"tenant.tenantPage"},queryTab:{stateKey:"tenant.queryTab"},diagnosticsTab:{stateKey:"tenant.diagnosticsTab"},summaryTab:{stateKey:"tenant.summaryTab"},metricsTab:{stateKey:"tenant.metricsTab"},shardsMode:{stateKey:"shardsWorkload.mode"},shardsDateFrom:{stateKey:"shardsWorkload.from",type:"number"},shardsDateTo:{stateKey:"shardsWorkload.to",type:"number"},topQueriesDateFrom:{stateKey:"executeTopQueries.from",type:"number"},topQueriesDateTo:{stateKey:"executeTopQueries.to",type:"number"},selectedConsumer:{stateKey:"partitions.selectedConsumer"}},"/cluster/tenants":{search:{stateKey:"tenants.searchValue"}}};function T(e,t){return v()({},e,t.query)}let O,N,k,j="";function I(e,t,n){const r=(0,_.stateToParams)(e,t,n);let{location:i}=r;if(i.search===j)return{location:n,shouldPush:!1};{const e=/\?\w+/;return j=i.search,e.test(n.search)&&(i=function(e,t){const{search:n,...r}=e,i=b().parse(t.search.slice(1)),o=(0,w.getMatchingDeclaredPath)(E,e),a=o&&E[o];p()(m()(a),(e=>{delete i[e]})),p()(m()(E.global||{}),(e=>{delete i[e]}));const s=b().stringify(i,{encoder:encodeURIComponent}),l=n.startsWith("?")?"&":"?";return{search:"".concat(n).concat(l).concat(s),...r}}(i,n)),{...r,location:i}}}function P(e,t,n){return(r,i)=>{const o=((n,r)=>{const{type:i,payload:o}=r;if(!o)return n;if(x.LOCATION_POP===i||x.LOCATION_PUSH===i){const r=o;return r.query=(0,S.parseQuery)(e,o),t(n,r)}return n})(n(r,i),i);return o!==r?o:r}}function D(e,t,n,i){const{locationMiddleware:a,reducersWithLocation:s}=function(e,t){const{locationMiddleware:n}=(0,o.zl)(E,T,e,t,I);return{locationMiddleware:n,reducersWithLocation:P(E,T,t)}}(t,e);return(0,r.xC)({reducer:s,preloadedState:n,middleware:e=>e({immutableCheck:{ignoredPaths:["tooltip.currentHoveredRef"]},serializableCheck:{ignoredPaths:["tooltip.currentHoveredRef","api"],ignoredActions:[d.MB,"api/executeQuery/rejected"]}}).concat(a,...i)})}const A=window.web_version,R=window.custom_backend,M=window.meta_backend,L="undefined"==="".concat(M);function F(){let{aRootReducer:e=c.Z,singleClusterMode:t=L,api:n=(0,a.LC)({webVersion:A,withCredentials:!R})}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};({backend:O,basename:N,clusterName:k}=l({href:window.location.href,singleClusterMode:t,customBackend:R}));const r=(0,i.lX)({basename:N}),s=D(e,r,{singleClusterMode:t},[u.h.middleware]);return(0,o.C1)(s,r),n._axios.interceptors.response.use((function(e){return Promise.resolve(e)}),(function(e){var t;const n=e.response;return n&&401===n.status&&null!==(t=n.data)&&void 0!==t&&t.authUrl?window.location.assign(n.data.authUrl):Promise.reject(e)})),window.api=n,{history:r,store:s}}},27102:(e,t,n)=>{"use strict";n.d(t,{EZ:()=>r.EZ,QW:()=>i.Q,Vq:()=>r.Vq,dx:()=>r.dx,j4:()=>r.j4,qw:()=>r.qw,xC:()=>r.xC,y3:()=>r.y3});var r=n(67510),i=n(9869)},905:(e,t,n)=>{"use strict";n.d(t,{h:()=>x});var r=n(17095),i=n(38907),o=n(1399),a=n(68963),s=n(87555),l=n(36313);function c(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return Object.assign(e,...n)}function u(e){return e.replace(e[0],e[0].toUpperCase())}var d=WeakMap?new WeakMap:void 0,h=e=>{let{endpointName:t,queryArgs:n}=e,r="";const o=null===d||void 0===d?void 0:d.get(n);if("string"===typeof o)r=o;else{const e=JSON.stringify(n,((e,t)=>(0,i.PO)(t)?Object.keys(t).sort().reduce(((e,n)=>(e[n]=t[n],e)),{}):t));(0,i.PO)(n)&&(null===d||void 0===d||d.set(n,e)),r=e}return"".concat(t,"(").concat(r,")")},p=Symbol();function f(e,t,n,r){const i=(0,a.useMemo)((()=>({queryArgs:e,serialized:"object"==typeof e?t({queryArgs:e,endpointDefinition:n,endpointName:r}):e})),[e,t,n,r]),o=(0,a.useRef)(i);return(0,a.useEffect)((()=>{o.current.serialized!==i.serialized&&(o.current=i)}),[i]),o.current.serialized===i.serialized?o.current.queryArgs:e}function m(e){const t=(0,a.useRef)(e);return(0,a.useEffect)((()=>{(0,s.wU)(t.current,e)||(t.current=e)}),[e]),(0,s.wU)(t.current,e)?t.current:e}var g="undefined"!==typeof window&&window.document&&window.document.createElement?a.useLayoutEffect:a.useEffect,v=e=>e.isUninitialized?{...e,isUninitialized:!1,isFetching:!0,isLoading:void 0===e.data,status:r.oZ.pending}:e;var y=Symbol();var b=(0,r.Tk)((0,r.hF)(),function(){let{batch:e=s.dC,hooks:t={useDispatch:s.I0,useSelector:s.v9,useStore:s.oR},createSelector:n=l.P1,unstable__sideEffectsInRender:i=!1,...d}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{name:y,init(l,d,y){let{serializeQueryArgs:b}=d;const x=l,{buildQueryHooks:w,buildMutationHook:S,usePrefetch:_}=function(e){let{api:t,moduleOptions:{batch:n,hooks:{useDispatch:i,useSelector:l,useStore:c},unstable__sideEffectsInRender:u,createSelector:d},serializeQueryArgs:y,context:b}=e;const x=u?e=>e():a.useEffect;return{buildQueryHooks:function(e){const u=function(n){let{refetchOnReconnect:s,refetchOnFocus:l,refetchOnMountOrArgChange:c,skip:u=!1,pollingInterval:d=0,skipPollingIfUnfocused:p=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{initiate:g}=t.endpoints[e],v=i(),y=(0,a.useRef)();if(!y.current){const e=v(t.internalActions.internal_getRTKQSubscriptions());y.current=e}const w=f(u?r.CN:n,h,b.endpointDefinitions[e],e),S=m({refetchOnReconnect:s,refetchOnFocus:l,pollingInterval:d,skipPollingIfUnfocused:p}),_=(0,a.useRef)(!1),C=(0,a.useRef)();let{queryCacheKey:E,requestId:T}=C.current||{},O=!1;E&&T&&(O=y.current.isRequestSubscribed(E,T));const N=!O&&_.current;return x((()=>{_.current=O})),x((()=>{N&&(C.current=void 0)}),[N]),x((()=>{var e;const t=C.current;if(w===r.CN)return null===t||void 0===t||t.unsubscribe(),void(C.current=void 0);const n=null===(e=C.current)||void 0===e?void 0:e.subscriptionOptions;if(t&&t.arg===w)S!==n&&t.updateSubscriptionOptions(S);else{null===t||void 0===t||t.unsubscribe();const e=v(g(w,{subscriptionOptions:S,forceRefetch:c}));C.current=e}}),[v,g,c,w,S,N]),(0,a.useEffect)((()=>()=>{var e;null===(e=C.current)||void 0===e||e.unsubscribe(),C.current=void 0}),[]),(0,a.useMemo)((()=>({refetch:()=>{var e;if(!C.current)throw new Error((0,o.rJ)(38));return null===(e=C.current)||void 0===e?void 0:e.refetch()}})),[])},S=function(){let{refetchOnReconnect:r,refetchOnFocus:o,pollingInterval:s=0,skipPollingIfUnfocused:l=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{initiate:c}=t.endpoints[e],u=i(),[d,h]=(0,a.useState)(p),f=(0,a.useRef)(),g=m({refetchOnReconnect:r,refetchOnFocus:o,pollingInterval:s,skipPollingIfUnfocused:l});x((()=>{var e;const t=null===(e=f.current)||void 0===e?void 0:e.subscriptionOptions;var n;g!==t&&(null===(n=f.current)||void 0===n||n.updateSubscriptionOptions(g))}),[g]);const v=(0,a.useRef)(g);x((()=>{v.current=g}),[g]);const y=(0,a.useCallback)((function(e){let t,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return n((()=>{var n;null===(n=f.current)||void 0===n||n.unsubscribe(),f.current=t=u(c(e,{subscriptionOptions:v.current,forceRefetch:!r})),h(e)})),t}),[u,c]);return(0,a.useEffect)((()=>()=>{var e;null===f||void 0===f||null===(e=f.current)||void 0===e||e.unsubscribe()}),[]),(0,a.useEffect)((()=>{d===p||f.current||y(d,!0)}),[d,y]),(0,a.useMemo)((()=>[y,d]),[y,d])},_=function(n){let{skip:i=!1,selectFromResult:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{select:u}=t.endpoints[e],h=f(i?r.CN:n,y,b.endpointDefinitions[e],e),p=(0,a.useRef)(),m=(0,a.useMemo)((()=>d([u(h),(e,t)=>t,e=>h],w,{memoizeOptions:{resultEqualityCheck:s.wU}})),[u,h]),v=(0,a.useMemo)((()=>o?d([m],o,{devModeChecks:{identityFunctionCheck:"never"}}):m),[m,o]),x=l((e=>v(e,p.current)),s.wU),S=c(),_=m(S.getState(),p.current);return g((()=>{p.current=_}),[_]),x};return{useQueryState:_,useQuerySubscription:u,useLazyQuerySubscription:S,useLazyQuery(e){const[t,n]=S(e),r=_(n,{...e,skip:n===p}),i=(0,a.useMemo)((()=>({lastArg:n})),[n]);return(0,a.useMemo)((()=>[t,r,i]),[t,r,i])},useQuery(e,t){const n=u(e,t),i=_(e,{selectFromResult:e===r.CN||null!==t&&void 0!==t&&t.skip?void 0:v,...t}),{data:o,status:s,isLoading:l,isSuccess:c,isError:d,error:h}=i;return(0,a.useDebugValue)({data:o,status:s,isLoading:l,isSuccess:c,isError:d,error:h}),(0,a.useMemo)((()=>({...i,...n})),[i,n])}}},buildMutationHook:function(e){return function(){let{selectFromResult:r,fixedCacheKey:o}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{select:c,initiate:u}=t.endpoints[e],h=i(),[p,f]=(0,a.useState)();(0,a.useEffect)((()=>()=>{null!==p&&void 0!==p&&p.arg.fixedCacheKey||null===p||void 0===p||p.reset()}),[p]);const m=(0,a.useCallback)((function(e){const t=h(u(e,{fixedCacheKey:o}));return f(t),t}),[h,u,o]),{requestId:g}=p||{},v=(0,a.useMemo)((()=>c({fixedCacheKey:o,requestId:null===p||void 0===p?void 0:p.requestId})),[o,p,c]),y=(0,a.useMemo)((()=>r?d([v],r):v),[r,v]),b=l(y,s.wU),x=null==o?null===p||void 0===p?void 0:p.arg.originalArgs:void 0,w=(0,a.useCallback)((()=>{n((()=>{p&&f(void 0),o&&h(t.internalActions.removeMutationResult({requestId:g,fixedCacheKey:o}))}))}),[h,o,p,g]),{endpointName:S,data:_,status:C,isLoading:E,isSuccess:T,isError:O,error:N}=b;(0,a.useDebugValue)({endpointName:S,data:_,status:C,isLoading:E,isSuccess:T,isError:O,error:N});const k=(0,a.useMemo)((()=>({...b,originalArgs:x,reset:w})),[b,x,w]);return(0,a.useMemo)((()=>[m,k]),[m,k])}},usePrefetch:function(e,n){const r=i(),o=m(n);return(0,a.useCallback)(((n,i)=>r(t.util.prefetch(e,n,{...o,...i}))),[e,r,o])}};function w(e,t,n){var r,i;if(null!==(r=t)&&void 0!==r&&r.endpointName&&e.isUninitialized){const{endpointName:e}=t,r=b.endpointDefinitions[e];y({queryArgs:t.originalArgs,endpointDefinition:r,endpointName:e})===y({queryArgs:n,endpointDefinition:r,endpointName:e})&&(t=void 0)}let o=e.isSuccess?e.data:null===(i=t)||void 0===i?void 0:i.data;void 0===o&&(o=e.data);const a=void 0!==o,s=e.isLoading,l=!a&&s,c=e.isSuccess||s&&a;return{...e,data:o,currentData:e.data,isFetching:s,isLoading:l,isSuccess:c}}}({api:l,moduleOptions:{batch:e,hooks:t,unstable__sideEffectsInRender:i,createSelector:n},serializeQueryArgs:b,context:y});return c(x,{usePrefetch:_}),c(y,{batch:e}),{injectEndpoint(e,t){if("query"===t.type){const{useQuery:t,useLazyQuery:n,useLazyQuerySubscription:r,useQueryState:i,useQuerySubscription:o}=w(e);c(x.endpoints[e],{useQuery:t,useLazyQuery:n,useLazyQuerySubscription:r,useQueryState:i,useQuerySubscription:o}),l["use".concat(u(e),"Query")]=t,l["useLazy".concat(u(e),"Query")]=n}else if(function(e){return"mutation"===e.type}(t)){const t=S(e);c(x.endpoints[e],{useMutation:t}),l["use".concat(u(e),"Mutation")]=t}}}}}}());const x=b({baseQuery:function(){throw new Error("When using `fakeBaseQuery`, all queries & mutations must use the `queryFn` definition syntax.")},endpoints:()=>({}),refetchOnMountOrArgChange:!0,invalidationBehavior:"immediately",tagTypes:["All"]});Symbol()},14146:(e,t,n)=>{"use strict";n.d(t,{PR:()=>u,Pq:()=>i,YR:()=>l,ZP:()=>d,kS:()=>c});var r=n(76765);const i=(0,r.U)("authentication","SET_UNAUTHENTICATED"),o=(0,r.U)("authentication","SET_AUTHENTICATED"),a=(0,r.U)("authentication","FETCH_USER"),s={isAuthenticated:!0,user:"",error:void 0},l=(e,t)=>(0,r.Sz)({request:window.api.authenticate(e,t),actions:o}),c=()=>(0,r.Sz)({request:window.api.logout(),actions:i}),u=()=>(0,r.Sz)({request:window.api.whoami(),actions:a,dataHandler:e=>{const{UserSID:t,AuthType:n,IsMonitoringAllowed:r}=e;return{user:"Login"===n?t:void 0,isUserAllowedToMakeChanges:!1!==r}}}),d=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case i.SUCCESS:return{...e,isAuthenticated:!1,user:"",error:void 0};case o.SUCCESS:return{...e,isAuthenticated:!0,error:void 0};case o.FAILURE:return{...e,error:t.error};case a.SUCCESS:{const{user:n,isUserAllowedToMakeChanges:r}=t.data;return{...e,user:n,isUserAllowedToMakeChanges:r}}default:return{...e}}}},77915:(e,t,n)=>{"use strict";n.d(t,{UM:()=>g,ZP:()=>m,LQ:()=>f});var r=n(1399),i=n(81003),o=n(52317),a=n(39623),s=n(905);const l=e=>"\nSELECT \n PDiskFilter,\n ErasureSpecies,\n CurrentAvailableSize,\n CurrentAllocatedSize,\n CurrentGroupsCreated,\n AvailableGroupsToCreate\n FROM `".concat(e,"/.sys/ds_storage_stats`\n ORDER BY CurrentGroupsCreated DESC;\n"),c=e=>{const t=(0,a.gY)(e).result,n={};return null===t||void 0===t||t.forEach((e=>{const{PDiskFilter:t,ErasureSpecies:r,CurrentAvailableSize:i,CurrentAllocatedSize:o,CurrentGroupsCreated:a,AvailableGroupsToCreate:s}=e,l=Number(a)||0,c=l+(Number(s)||0),u=Number(o)||0,d=Number(i)||0,h=t&&"string"===typeof t&&(e=>{var t,n;const r=null===(t=e.match(/^Type:(?<type>[A-Za-z]+)/))||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.type;return"ROT"===r?"HDD":r})(t);if(h&&r&&"string"===typeof r&&l){const e={diskType:h,erasure:r,createdGroups:l,totalGroups:c,allocatedSize:u,availableSize:d};if(n[h])if(n[h][r]){const e={...n[h][r]};n[h][r]={diskType:h,erasure:r,createdGroups:e.createdGroups+l,totalGroups:e.totalGroups+c,allocatedSize:e.allocatedSize+u,availableSize:e.availableSize+d}}else n[h][r]=e;else n[h]={[r]:e}}})),n},u=localStorage.getItem(o.S7);let d;d=(0,i.V2)(u)?u:i.xu.overview;const h={defaultClusterTab:d},p=(0,r.oM)({name:"cluster",initialState:h,reducers:{setDefaultClusterTab(e,t){e.defaultClusterTab=t.payload}}});function f(e){return t=>{(0,i.V2)(e)&&(localStorage.setItem(o.S7,e),t(p.actions.setDefaultClusterTab(e)))}}const m=p.reducer,g=s.h.injectEndpoints({endpoints:e=>({getClusterInfo:e.query({queryFn:async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",{signal:t}=arguments.length>1?arguments[1]:void 0;try{const n=await window.api.getClusterInfo(e,{signal:t}),r=n.Domain;if(!r)return{data:{clusterData:n}};try{const e=l(r),t=await window.api.sendQuery({schema:"modern",query:e,database:r,action:"execute-scan"});return(0,a.gW)(t)?{data:{clusterData:n}}:{data:{clusterData:n,groupsStats:c(t)}}}catch{return{data:{clusterData:n}}}}catch(n){return{error:n}}},providesTags:["All"]})}),overrideExisting:"throw"})},20163:(e,t,n)=>{"use strict";n.d(t,{g_:()=>c,W1:()=>u,ZP:()=>l});var r=n(1399),i=n(905),o=n(90860);const a=e=>{const{clusters:t=[]}=e;let n=new Map;t.forEach((e=>{let{versions:t=[]}=e;n=(0,o.kn)(t,n)}));const r=(0,o.n$)(n);return t.map((e=>({...e,preparedVersions:(0,o.B_)(e.versions,r)})))},s=(0,r.oM)({name:"clusters",initialState:{clusterName:"",status:[],service:[],version:[]},reducers:{changeClustersFilters:(e,t)=>({...e,...t.payload})}}),l=s.reducer,{changeClustersFilters:c}=s.actions,u=i.h.injectEndpoints({endpoints:e=>({getClustersList:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{const e=await window.api.getClustersList(void 0,{signal:n});return{data:a(e)}}catch(r){return{error:r}}},providesTags:["All"]})}),overrideExisting:"throw"})},83786:(e,t,n)=>{"use strict";n.d(t,{AJ:()=>x,B8:()=>w,K0:()=>S,NU:()=>b,ZP:()=>C,hO:()=>y,mg:()=>v,qV:()=>_});var r=n(18193),i=n(52317),o=n(39623),a=n(76765),s=n(905);const l=20,c=((0,a.U)("query","SEND_QUERY"),"query/CHANGE_USER_INPUT"),u="query/SAVE_QUERY_TO_HISTORY",d="query/GO_TO_PREVIOUS_QUERY",h="query/GO_TO_NEXT_QUERY",p="query/SET_TENANT_PATH",f=r.r.readUserSettingsValue(i.if,[]),m=f.length-l,g={loading:!1,input:"",history:{queries:f.slice(m<0?0:m).map((function(e){if("string"===typeof e)return{queryText:e};return e})),currentIndex:f.length>l?l-1:f.length-1}},v=s.h.injectEndpoints({endpoints:e=>({executeQuery:e.mutation({queryFn:async e=>{let{query:t,database:n,mode:r,schema:i="modern"}=e,a="execute",s=o.jM.yql;"pg"===r?(a="execute-query",s=o.jM.pg):r&&(a="execute-".concat(r));try{const e=await window.api.sendQuery({schema:i,query:t,database:n,action:a,syntax:s,stats:"full"});if((0,o.gW)(e))return{error:e};return{data:(0,o.gY)(e)}}catch(l){return{error:l}}}})}),overrideExisting:"throw"}),y=(e,t)=>({type:u,data:{queryText:e,mode:t}}),b=()=>({type:d}),x=()=>({type:h}),w=e=>{let{input:t}=e;return{type:c,data:{input:t}}},S=e=>({type:p,data:e}),_=e=>e.executeQuery.history.queries;const C=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case c:return{...e,input:t.data.input};case u:{const n=t.data.queryText,a=t.data.mode===o.wZ.pg?o.jM.pg:void 0,s=[...e.history.queries,{queryText:n,syntax:a}].slice(e.history.queries.length>=l?1:0);r.r.setUserSettingsValue(i.if,s);const c=s.length-1;return{...e,history:{queries:s,currentIndex:c}}}case d:{const t=e.history.currentIndex;if(t<=0)return e;const n=t-1,r=e.history.queries[n];return{...e,history:{...e.history,currentIndex:n},input:r.queryText}}case h:{const t=e.history.queries.length-1,n=e.history.currentIndex;if(n>=t)return e;const r=n+1,i=e.history.queries[r];return{...e,history:{...e.history,currentIndex:r},input:i.queryText}}case p:return{...e,tenantPath:t.data};default:return e}}},30667:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>h,Im:()=>d,MU:()=>f});var r=n(1399),i=n(52317),o=n(39623),a=n(905);const s="EndTime",l="IntervalEnd",c=e=>"(\n SELECT\n MAX(".concat(l,")\n FROM `").concat(e,"/.sys/top_queries_by_cpu_time_one_hour`\n)");const u=(0,r.oM)({name:"executeTopQueries",initialState:{},reducers:{setTopQueriesFilters:(e,t)=>({...e,...t.payload})}}),{setTopQueriesFilters:d}=u.actions,h=u.reducer,p=(e,t)=>{const n=function(e,t){const n=[];if(null!==t&&void 0!==t&&t.from&&null!==t&&void 0!==t&&t.to&&t.from>t.to)throw new Error("Invalid date range");if(null!==t&&void 0!==t&&t.from){const e=t.to===t.from?">=":">";n.push("".concat(s," ").concat(e," Timestamp('").concat(new Date(t.from).toISOString(),"')"))}return null!==t&&void 0!==t&&t.to&&n.push("".concat(s," <= Timestamp('").concat(new Date(t.to).toISOString(),"')")),null!==t&&void 0!==t&&t.from||null!==t&&void 0!==t&&t.to||n.push("".concat(l," IN ").concat(c(e))),null!==t&&void 0!==t&&t.text&&n.push("QueryText ILIKE '%".concat(t.text,"%'")),n.join(" AND ")}(e,t);return"\nSELECT\n CPUTime as CPUTimeUs,\n QueryText,\n IntervalEnd,\n EndTime,\n ReadRows,\n ReadBytes,\n UserSID,\n Duration\nFROM `".concat(e,"/.sys/top_queries_by_cpu_time_one_hour`\nWHERE ").concat(n||"true","\n")},f=a.h.injectEndpoints({endpoints:e=>({getTopQueries:e.query({queryFn:async(e,t)=>{let{database:n,filters:r}=e,{signal:a,dispatch:s}=t;try{const e=await window.api.sendQuery({schema:"modern",query:p(n,r),database:n,action:"execute-scan"},{signal:a});if((0,o.gW)(e))return{error:e};const t=(0,o.gY)(e);if((null===r||void 0===r||!r.from)&&(null===r||void 0===r||!r.to)){var l,c;const e=null===t||void 0===t||null===(l=t.result)||void 0===l||null===(c=l[0])||void 0===c?void 0:c.IntervalEnd;if(e){const t=new Date(e).getTime(),n=new Date(t-1e3*i.RQ).getTime();s(d({from:n,to:t}))}}return{data:t}}catch(u){return{error:u}}}})}),overrideExisting:"throw"})},56963:(e,t,n)=>{"use strict";n.d(t,{Xl:()=>a,ZP:()=>l,vj:()=>s});const r="ENABLE_FULLSCREEN_MODE",i="DISABLE_FULLSCREEN_MODE",o=!1;function a(){return{type:r}}function s(){return{type:i}}const l=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;switch((arguments.length>1?arguments[1]:void 0).type){case i:return!1;case r:return!0;default:return e}}},79061:(e,t,n)=>{"use strict";n.d(t,{J:()=>o,Z:()=>a});const r="header/SET_HEADER_BREADCRUMBS",i={pageBreadcrumbsOptions:{}};function o(e,t){return{type:r,page:e,options:t}}const a=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,t=arguments.length>1?arguments[1]:void 0;return t.type===r?{page:t.page,pageBreadcrumbsOptions:t.options}:e}},93717:(e,t,n)=>{"use strict";n.d(t,{E3:()=>o,U_:()=>l,Vc:()=>c,ZP:()=>s});var r=n(1399),i=n(905);const o={currentMetric:void 0,sort:!1,heatmap:!1},a=(0,r.oM)({name:"heatmap",initialState:o,reducers:{setHeatmapOptions:(e,t)=>({...e,...t.payload})}}),s=a.reducer,{setHeatmapOptions:l}=a.actions,c=i.h.injectEndpoints({endpoints:e=>({getHeatmapTabletsInfo:e.query({queryFn:async(e,t)=>{let{nodes:n,path:r}=e,{signal:i,getState:o,dispatch:a}=t;try{var s;const e=function(e){let[t,n]=e;const{TabletStateInfo:r=[]}=t,i=new Map,{PathDescription:o={}}=null!==n&&void 0!==n?n:{},{TablePartitions:a=[],TablePartitionStats:s=[],TablePartitionMetrics:l=[]}=o;r.forEach((e=>{e.TabletId&&i.set(e.TabletId,e)})),a.forEach(((e,t)=>{const n=Object.assign({},s[t],l[t]);e.DatashardId&&i.set(e.DatashardId,{...i.get(e.DatashardId),metrics:n})}));const c=Array.from(i.values()),u=c[0]&&c[0].metrics&&Object.keys(c[0].metrics).map((e=>({value:e,content:e})));return{tablets:c,metrics:u}}(await Promise.all([window.api.getTabletsInfo({nodes:n,path:r},{signal:i}),window.api.getHeatmapData({path:r},{signal:i})]));if(null!==(s=e.metrics)&&void 0!==s&&s.length){const t=o().heatmap.currentMetric;t&&e.metrics.find((e=>e.value===t))||a(l({currentMetric:e.metrics[0].value}))}return{data:e}}catch(c){return{error:c}}},providesTags:["All"]})}),overrideExisting:"throw"})},77952:(e,t,n)=>{"use strict";n.d(t,{AE:()=>s,Ou:()=>c,Vd:()=>l,ZP:()=>u,eE:()=>a});const r=(0,n(76765).U)("hot_keys","FETCH_HOT_KEYS"),i="hot_keys/SET_DATA_WAS_NOT_LOADED",o={loading:!0,wasLoaded:!1,data:null};function a(){return{type:i}}function s(){return{type:r.REQUEST}}function l(e){return{type:r.SUCCESS,data:e}}function c(e){return{type:r.FAILURE,error:e}}const u=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case r.REQUEST:return{...e,loading:!0};case r.SUCCESS:return{...e,data:t.data.hotkeys,loading:!1,error:void 0,wasLoaded:!0};case r.FAILURE:var n;return null!==(n=t.error)&&void 0!==n&&n.isCancelled?e:{...e,error:t.error,loading:!1};case i:return{...e,wasLoaded:!1};default:return e}}},9869:(e,t,n)=>{"use strict";n.d(t,{Z:()=>j,Q:()=>k});var r=n(38907),i=n(905),o=n(14146),a=n(77915),s=n(20163),l=n(83786),c=n(30667),u=n(56963),d=n(79061),h=n(93717);const p=(0,n(76765).U)("host","FETCH_HOST"),f={loading:!0,wasLoaded:!1,data:{}};const m=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case p.REQUEST:return{...e,loading:!0};case p.SUCCESS:var n;return{...e,data:null===(n=t.data.SystemStateInfo)||void 0===n?void 0:n[0],loading:!1,wasLoaded:!0,error:void 0};case p.FAILURE:return{...e,error:t.error,loading:!1};default:return e}};var g=n(77952),v=n(42703),y=n(97894),b=n(6748),x=n(71336),w=n(80839),S=n(9345);const _=function(){return!(arguments.length>0&&void 0!==arguments[0])||arguments[0]};var C=n(99399),E=n(40510),T=n(8511),O=n(53809),N=n(3027);const k={[i.h.reducerPath]:i.h.reducer,singleClusterMode:_,cluster:a.ZP,tenant:T.ZP,tooltip:N.ZP,tablets:C.ZP,schema:b.ZP,host:m,tenants:O.ZP,partitions:v.ZP,executeQuery:l.ZP,tabletsFilters:E.ZP,heatmap:h.ZP,settings:w.ZP,schemaAcl:x.ZP,executeTopQueries:c.ZP,shardsWorkload:S.ZP,hotKeys:g.ZP,authentication:o.ZP,header:d.Z,saveQuery:y.ZP,fullscreen:u.ZP,clusters:s.ZP},j=(0,r.UY)({...k})},99337:(e,t,n)=>{"use strict";n.d(t,{W:()=>o,d:()=>s});var r=n(36313),i=n(51688);const o=n(905).h.injectEndpoints({endpoints:e=>({getNodesList:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{return{data:await window.api.getNodesList({signal:n})}}catch(r){return{error:r}}},providesTags:["All"]})}),overrideExisting:"throw"}),a=o.endpoints.getNodesList.select(void 0),s=(0,r.P1)((e=>a(e).data),(e=>(0,i.dn)(e)))},42703:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>d,TB:()=>h,M$:()=>u});var r=n(1399),i=n(905),o=n(81854),a=n(1504),s=n(47651);const l=e=>{const{partition_offsets:t,store_size_bytes:n="0",last_write_time:r,max_write_time_lag:i,bytes_written:s,partition_node_id:l=0}=e||{},{start:c="0",end:u="0"}=t||{};return{storeSize:n,writeSpeed:(0,o.c4)(s),partitionWriteLag:(0,a.DA)(i),partitionWriteIdleTime:(0,a.lE)(r),startOffset:c,endOffset:u,partitionNodeId:l}},c=(0,r.oM)({name:"partitions",initialState:{selectedConsumer:""},reducers:{setSelectedConsumer:(e,t)=>{e.selectedConsumer=t.payload}}}),{setSelectedConsumer:u}=c.actions,d=c.reducer,h=i.h.injectEndpoints({endpoints:e=>({getPartitions:e.query({queryFn:async(e,t)=>{let{path:n,consumerName:r}=e,{signal:i}=t;try{if(r){const e=await window.api.getConsumer({path:n,consumer:r},{signal:i}),t=(e=>null===e||void 0===e?void 0:e.map((e=>{const{partition_id:t="0",partition_stats:n,partition_consumer_stats:r}=e,i=l(n),{endOffset:c}=i,{last_read_offset:u="0",committed_offset:d="0",read_session_id:h,last_read_time:p,max_read_time_lag:f,max_write_time_lag:m,bytes_read:g,reader_name:v,connection_node_id:y=0}=r||{},b=(0,s.kE)(c)&&(0,s.kE)(d)?Number(c)-Number(d):0,x=(0,s.kE)(c)&&(0,s.kE)(u)?Number(c)-Number(u):0;return{...i,partitionId:t,readSpeed:(0,o.c4)(g),consumerWriteLag:(0,a.DA)(m),consumerReadLag:(0,a.DA)(f),consumerReadIdleTime:(0,a.lE)(p),uncommitedMessages:b,unreadMessages:x,commitedOffset:d,readSessionId:h,readerName:v,connectionNodeId:y}})))(e.partitions);return{data:t}}{const e=await window.api.getTopic({path:n},{signal:i}),t=(e=>null===e||void 0===e?void 0:e.map((e=>{const{partition_id:t="0",partition_stats:n}=e;return{partitionId:t,...l(n)}})))(e.partitions);return{data:t}}}catch(c){return{error:c}}},providesTags:["All"]})}),overrideExisting:"throw"})},97894:(e,t,n)=>{"use strict";n.d(t,{GC:()=>a,ZP:()=>s});const r="SET_QUERY_NAME_TO_EDIT",i="CLEAR_QUERY_NAME_TO_EDIT",o=null;function a(e){return{type:r,data:e}}const s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case r:return t.data;case i:return null;default:return e}}},6748:(e,t,n)=>{"use strict";n.d(t,{Ii:()=>v,J1:()=>g,ZP:()=>S,eU:()=>w,m7:()=>b,w4:()=>y,yM:()=>x});var r=n(36313),i=n(6523),o=n(18193),a=n(52317),s=n(76765);const l=(0,s.U)("schema","FETCH_SCHEMA"),c="schema/PRELOAD_SCHEMAS",u="schema/SET_SCHEMA",d="schema/SET_SHOW_PREVIEW",h="schema/SET_AUTOREFRESH_INTERVAL",p="schema/RESET_LOADING_STATE",f=Number(o.r.readUserSettingsValue(a.KU,0)),m={loading:!0,wasLoaded:!1,data:{},currentSchemaPath:void 0,autorefresh:isNaN(f)?0:f,showPreview:!1};function g(e){let{path:t}=e;const n=window.api.getSchema({path:t});return(0,s.Sz)({request:n,actions:l,dataHandler:e=>{const t={};return null!==e&&void 0!==e&&e.Path&&(t[e.Path]=e),{path:null===e||void 0===e?void 0:e.Path,currentSchema:null!==e&&void 0!==e?e:void 0,data:t}}})}function v(e){return{type:u,data:e}}function y(e){return t=>{o.r.setUserSettingsValue(a.KU,e),t({type:h,data:e})}}function b(e){return{type:d,data:e}}function x(e){return{type:c,data:e}}const w=(0,r.P1)([(e,t)=>t,(e,t,n)=>n,(e,t)=>{var n,r;return t?null===(n=e.schema.data[t])||void 0===n||null===(r=n.PathDescription)||void 0===r?void 0:r.Children:void 0}],((e,t,n)=>(0,i.St)(t)?null===n||void 0===n?void 0:n.map((t=>{let{Name:n}=t;return e+"/"+n})):void 0)),S=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case l.REQUEST:return{...e,loading:!0};case l.SUCCESS:{const n=!e.currentSchemaPath||e.currentSchemaPath===t.data.path,r={...e.data,...t.data.data};return n?{...e,error:void 0,data:r,currentSchema:t.data.currentSchema,currentSchemaPath:t.data.path,loading:!1,wasLoaded:!0}:{...e,data:r}}case l.FAILURE:var n;return null!==(n=t.error)&&void 0!==n&&n.isCancelled?e:{...e,error:t.error,loading:!1};case c:return{...e,data:{...t.data,...e.data}};case u:return{...e,currentSchemaPath:t.data};case h:return{...e,autorefresh:t.data};case d:return{...e,showPreview:t.data};case p:return{...e,wasLoaded:m.wasLoaded};default:return e}}},71336:(e,t,n)=>{"use strict";n.d(t,{Y:()=>s,Yg:()=>l,ZP:()=>c});var r=n(76765);const i=(0,r.U)("schemaAcl","FETCH_SCHEMA_ACL"),o="schemaAcl/SET_DATA_WAS_NOT_LOADED",a={loading:!1,wasLoaded:!1};function s(e){let{path:t}=e;return(0,r.Sz)({request:window.api.getSchemaAcl({path:t}),actions:i})}const l=()=>({type:o}),c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case i.REQUEST:return{...e,loading:!0};case i.SUCCESS:{var n,r;const i=null===(n=t.data.Common)||void 0===n?void 0:n.ACL,o=null===(r=t.data.Common)||void 0===r?void 0:r.Owner;return{...e,acl:i,owner:o,loading:!1,wasLoaded:!0,error:void 0}}case i.FAILURE:var s;return null!==(s=t.error)&&void 0!==s&&s.isCancelled?e:{...e,error:t.error,loading:!1};case o:return{...e,wasLoaded:!1};default:return e}}},80839:(e,t,n)=>{"use strict";n.d(t,{Cx:()=>p,E3:()=>u,M6:()=>f,ZP:()=>g,m9:()=>h,pu:()=>s,qz:()=>m,xI:()=>d});var r=n(18193);const i="settings/CHANGE_PROBLEM_FILTER",o="settings/SET_VALUE",a="settings/SET_USER_SETTINGS",s={ALL:"All",PROBLEMS:"With problems"},l=r.r.extractSettingsFromLS(r.t),c=window.systemSettings||{},u={problemFilter:s.ALL,userSettings:l,systemSettings:c},d=(e,t)=>n=>{n({type:o,data:{name:e,value:t}}),r.r.setUserSettingsValue(e,t)},h=e=>({type:a,data:e}),p=(e,t)=>e.settings.userSettings[t],f=e=>({type:i,data:e}),m=e=>e.settings.problemFilter,g=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case i:return{...e,problemFilter:t.data};case o:{const n={...e.userSettings,[t.data.name]:t.data.value};return{...e,userSettings:n}}case a:return{...e,userSettings:{...e.userSettings,...t.data}};default:return e}}},9345:(e,t,n)=>{"use strict";n.d(t,{Ag:()=>p,K2:()=>d,ZP:()=>h});var r=n(1399),i=n(39623),o=n(905),a=n(58660);function s(e){let{columnId:t,order:n}=e;return"".concat(t," ").concat(n)}function l(e,t,n,r){const i=r?"CAST(SUBSTRING(CAST(Path AS String), ".concat(r.length,") AS Utf8) AS Path"):"Path";let o="Path='".concat(e,"' OR Path LIKE '").concat(e,"/%'");const a=function(e){const t=[];if(null!==e&&void 0!==e&&e.from&&null!==e&&void 0!==e&&e.to&&e.from>e.to)throw new Error("Invalid date range");if(null!==e&&void 0!==e&&e.from){const n=e.to===e.from?">=":">";t.push("IntervalEnd ".concat(n," Timestamp('").concat(new Date(e.from).toISOString(),"')"))}return null!==e&&void 0!==e&&e.to&&t.push("IntervalEnd <= Timestamp('".concat(new Date(e.to).toISOString(),"')")),t.join(" AND ")}(t);a.length&&(o="(".concat(o,") AND ").concat(a));const l=n?"ORDER BY ".concat(n.map(s).join(", ")):"";return"SELECT\n ".concat(i,",\n TabletId,\n CPUCores,\n DataSize,\n NodeId,\n PeakTime,\n InFlightTxCount,\n IntervalEnd\nFROM `.sys/top_partitions_one_hour`\nWHERE ").concat(o,"\n").concat(l,"\nLIMIT 20")}function c(e,t,n){const r=n?"CAST(SUBSTRING(CAST(Path AS String), ".concat(n.length,") AS Utf8) AS Path"):"Path",i=t?"ORDER BY ".concat(t.map(s).join(", ")):"";return"SELECT\n ".concat(r,",\n TabletId,\n CPUCores,\n DataSize,\n NodeId,\n InFlightTxCount\nFROM `.sys/partition_stats`\nWHERE\n Path='").concat(e,"'\n OR Path LIKE '").concat(e,"/%'\n").concat(i,"\nLIMIT 20")}const u=(0,r.oM)({name:"shardsWorkload",initialState:{},reducers:{setShardsQueryFilters:(e,t)=>({...e,...t.payload})}}),{setShardsQueryFilters:d}=u.actions,h=u.reducer,p=o.h.injectEndpoints({endpoints:e=>({sendShardQuery:e.query({queryFn:async(e,t)=>{let{database:n,path:r="",sortOrder:o,filters:s}=e,{signal:u}=t;try{const e=await window.api.sendQuery({schema:"modern",query:(null===s||void 0===s?void 0:s.mode)===a.F.Immediate?c(r,o,n):l(r,s,o,n),database:n,action:"execute-scan"},{signal:u});if((0,i.gW)(e))return{error:e};return{data:(0,i.gY)(e)}}catch(d){return{error:d}}},providesTags:["All"]})}),overrideExisting:"throw"})},58660:(e,t,n)=>{"use strict";let r;n.d(t,{F:()=>r}),function(e){e.Immediate="immediate",e.History="history"}(r||(r={}))},99399:(e,t,n)=>{"use strict";n.d(t,{Sq:()=>f,ZP:()=>u,zg:()=>d});var r=n(1399),i=n(36313),o=n(905),a=n(99337);const s=(0,r.oM)({name:"tablets",initialState:{stateFilter:[],typeFilter:[]},reducers:{setStateFilter:(e,t)=>{e.stateFilter=t.payload},setTypeFilter:(e,t)=>{e.typeFilter=t.payload}}}),{setStateFilter:l,setTypeFilter:c}=s.actions,u=s.reducer,d=o.h.injectEndpoints({endpoints:e=>({getTabletsInfo:e.query({queryFn:async(e,t)=>{let{signal:n}=t;try{return{data:await window.api.getTabletsInfo(e,{signal:n})}}catch(r){return{error:r}}},providesTags:["All"]})}),overrideExisting:"throw"}),h=(0,i.P1)(((e,t)=>({nodeId:e,path:t})),(e=>{let{nodeId:t,path:n}=e;return d.endpoints.getTabletsInfo.select(void 0===t?{path:n}:{nodes:[t]})})),p=(0,i.P1)((e=>e),((e,t,n)=>h(t,n)),((e,t)=>t(e).data)),f=(0,i.P1)(((e,t,n)=>p(e,t,n)),(e=>(0,a.d)(e)),((e,t)=>null!==e&&void 0!==e&&e.TabletStateInfo?t?e.TabletStateInfo.map((e=>{const n=void 0===e.NodeId?void 0:t.get(e.NodeId);return{...e,fqdn:n}})):e.TabletStateInfo:[]))},40510:(e,t,n)=>{"use strict";n.d(t,{$S:()=>l,NM:()=>d,TI:()=>p,ZP:()=>f,ct:()=>h,jk:()=>u,nq:()=>c});var r=n(36313),i=n(52317),o=n(76765);const a=(0,o.U)("tabletsFilters","FETCH_TABLETS_FILTERS"),s={data:void 0,loading:!0,wasLoaded:!1,stateFilter:[],typeFilter:[]},l=()=>({type:"CLEAR_WAS_LOADING_TABLETS"}),c=e=>({type:"SET_STATE_FILTER",data:e}),u=e=>({type:"SET_TYPE_FILTER",data:e});function d(e){return(0,o.Sz)({request:Promise.all([window.api.getTabletsInfo(e),window.api.getNodesList()]),actions:a})}const h=e=>{const{tabletsData:t}=e.tabletsFilters;return(null===t||void 0===t?void 0:t.TabletStateInfo)||[]},p=(0,r.P1)([h,e=>e.tabletsFilters.stateFilter,e=>e.tabletsFilters.typeFilter],((e,t,n)=>{let r=e;return n.length>0&&(r=r.filter((e=>n.some((t=>e.Type===t))))),t.length>0&&(r=r.filter((e=>t.some((t=>e.State===t))))),r})),f=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case a.REQUEST:return{...e,loading:!0,requestTime:(new Date).getTime()};case a.SUCCESS:{const n=(new Date).getTime()-e.requestTime,[r,o]=t.data;return{...e,tabletsData:r,nodes:o,loading:!1,wasLoaded:!0,timeoutForRequest:n>i.t_?n:i.t_,error:void 0}}case a.FAILURE:return{...e,error:t.error||"Request-URI Too Large. Please reload the page",loading:!1};case"CLEAR_WAS_LOADING_TABLETS":{const{stateFilter:t,typeFilter:n}=e;return{...s,stateFilter:t,typeFilter:n}}case"SET_STATE_FILTER":return{...e,stateFilter:t.data};case"SET_TYPE_FILTER":return{...e,typeFilter:t.data};default:return e}}},24015:(e,t,n)=>{"use strict";n.d(t,{Xk:()=>l,_0:()=>o,bS:()=>r,m2:()=>i,qQ:()=>a,uw:()=>s});const r="tenantPage",i={query:"query",diagnostics:"diagnostics"},o={newQuery:"newQuery",history:"history",saved:"saved"},a={overview:"overview",schema:"schema",topQueries:"topQueries",topShards:"topShards",nodes:"nodes",tablets:"tablets",storage:"storage",network:"network",describe:"describe",hotKeys:"hotKeys",graph:"graph",consumers:"consumers",partitions:"partitions"},s={overview:"overview",acl:"acl",schema:"schema"},l={cpu:"cpu",storage:"storage",memory:"memory",healthcheck:"healthcheck"}},8511:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>d,$v:()=>f,jk:()=>p,Tu:()=>m,Cs:()=>h,$1:()=>v});var r=n(1399),i=n(18193),o=n(52317),a=n(905),s=n(95408),l=n(24015);const c={tenantPage:s.z.nativeEnum(l.m2).catch(i.t[o.pf]).parse(i.r.readUserSettingsValue(o.pf))},u=(0,r.oM)({name:"tenant",initialState:c,reducers:{setTenantPage:(e,t)=>{e.tenantPage=t.payload},setQueryTab:(e,t)=>{e.queryTab=t.payload},setDiagnosticsTab:(e,t)=>{e.diagnosticsTab=t.payload},setSummaryTab:(e,t)=>{e.summaryTab=t.payload},setMetricsTab:(e,t)=>{e.metricsTab=t.payload}}}),d=u.reducer,{setTenantPage:h,setQueryTab:p,setDiagnosticsTab:f,setSummaryTab:m,setMetricsTab:g}=u.actions,v=a.h.injectEndpoints({endpoints:e=>({getTenantInfo:e.query({queryFn:async(e,t)=>{let{path:n}=e,{signal:r}=t;try{var i,o;return{data:null!==(i=null===(o=(await window.api.getTenantInfo({path:n},{signal:r})).TenantInfo)||void 0===o?void 0:o[0])&&void 0!==i?i:null}}catch(a){return{error:a}}},providesTags:["All"]})}),overrideExisting:"throw"})},35240:(e,t,n)=>{"use strict";n.d(t,{L:()=>r,l:()=>i});const r={Unspecified:"Unspecified",Good:"Good",Warning:"Warning",Danger:"Danger"},i={[r.Unspecified]:0,[r.Good]:1,[r.Warning]:2,[r.Danger]:3}},53809:(e,t,n)=>{"use strict";n.d(t,{Xv:()=>c,ZP:()=>l,gI:()=>s});var r=n(1399),i=n(905),o=n(30696);const a=(0,r.oM)({name:"tenants",initialState:{searchValue:""},reducers:{setSearchValue:(e,t)=>{e.searchValue=t.payload}}}),{setSearchValue:s}=a.actions,l=a.reducer,c=i.h.injectEndpoints({endpoints:e=>({getTenantsInfo:e.query({queryFn:async(e,t)=>{let{clusterName:n}=e,{signal:r,getState:i}=t;try{const e=await window.api.getTenants(n,{signal:r});let t;if(Array.isArray(e.TenantInfo)){const{singleClusterMode:n}=i();t=(0,o.Rp)(e.TenantInfo,n)}else t=[];return{data:t}}catch(a){return{error:a}}},providesTags:["All"]})}),overrideExisting:"throw"})},30696:(e,t,n)=>{"use strict";n.d(t,{B8:()=>m,Gz:()=>u,HH:()=>s,Lv:()=>y,Rp:()=>l,Vn:()=>g,_W:()=>v,_g:()=>p,hJ:()=>d,nD:()=>h,nr:()=>f});var r=n(9416),i=(n(81854),n(4119),n(47651)),o=n(35240);const a=e=>{if(e)return e.map((e=>{if(e.Name){const t=Number(e.Usage)||0,n=Number(e.Threads),r=n*t;return{name:e.Name,usage:100*t,limit:n,used:r}}})).filter((e=>void 0!==e))},s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{CoresUsed:t,MemoryUsed:n,StorageAllocatedSize:o,MemoryLimit:s,StorageAllocatedLimit:l,PoolStats:u,Metrics:d={},DatabaseQuotas:h={},StorageUsage:p,QuotaUsage:f}=e,m=1e6*Number(t)||0,g=Number(n)||0,v=Number(o)||0,y=Number(d.Storage)||0,b=(0,i.kE)(s)?Number(s):void 0,x=(0,i.kE)(l)?Number(l):void 0,w=(0,i.kE)(h.data_size_soft_quota)?Number(h.data_size_soft_quota):void 0,S=a(u);let _,C;_=p?p.map((e=>{const{Type:t,Size:n,Limit:r}=e,i=Number(n),o=Number(r);return{name:t,used:i,limit:o,usage:c(i,o)}})):[{name:r.Fx.SSD,used:v,limit:x,usage:c(v,x)}],f?C=f.map((e=>{const{Type:t,Size:n,Limit:r}=e,i=Number(n),o=Number(r);return{name:t,used:i,limit:o,usage:c(i,o)}})):w&&(C=[{name:r.Fx.SSD,used:y,limit:w,usage:c(y,w)}]);return{memory:g,blobStorage:v,tabletStorage:y,memoryLimit:b,blobStorageLimit:x,tabletStorageLimit:w,cpu:m,poolsStats:S,memoryStats:[{name:"Process",used:g,limit:b,usage:c(g,b)}],blobStorageStats:_,tabletStorageStats:C}},l=(e,t)=>e.map((n=>{var r;const o=t?(e=>{var t;const n=e.Nodes?e.Nodes[0]:{},r=n.Host&&n.Endpoints?null===(t=n.Endpoints.find((e=>"http-mon"===e.Name)))||void 0===t?void 0:t.Address:void 0;return n.Host?"".concat(n.Host).concat(r||""):void 0})(n):void 0,a=null===(r=e.find((e=>e.Id===n.ResourceId)))||void 0===r?void 0:r.Name,l=(e=>{var t,n;const r=null===(t=e.Name)||void 0===t?void 0:t.split("/"),i=null!==r&&void 0!==r&&r.length?r[r.length-1]:"\u2014",o=null===(n=e.ControlPlane)||void 0===n?void 0:n.name;return null!==o&&void 0!==o?o:i})(n),{cpu:c,memory:u,blobStorage:d}=s(n),{nodesCount:h,groupsCount:p}=(e=>{var t;const{StorageGroups:n,NodeIds:r}=e;return{nodesCount:null!==(t=null===r||void 0===r?void 0:r.length)&&void 0!==t?t:0,groupsCount:(0,i.kE)(n)?Number(n):0}})(n);return{...n,backend:o,sharedTenantName:a,controlPlaneName:l,cpu:c,memory:u,storage:d,nodesCount:h,groupsCount:p}}));function c(e,t){if(e&&t)return 100*e/t}const u=70,d=60,h=85,p=75,f=70,m=60,g=e=>e?e>u?o.L.Danger:e>d?o.L.Warning:o.L.Good:o.L.Unspecified,v=e=>e?e>h?o.L.Danger:e>p?o.L.Warning:o.L.Good:o.L.Unspecified,y=e=>e?e>f?o.L.Danger:e>m?o.L.Warning:o.L.Good:o.L.Unspecified},3027:(e,t,n)=>{"use strict";n.d(t,{MB:()=>a,ZP:()=>u,hJ:()=>c,i8:()=>l});var r=n(85690),i=n.n(r);const o="tooltip/HIDE_TOOLTIP",a="tooltip/UPDATE_REF",s={toolTipVisible:!1,currentHoveredRef:void 0,data:void 0,templateType:"pool"},l=()=>({type:o}),c=(e,t,n,r,i)=>({type:a,node:e,data:t,templateType:n,additionalData:r,positions:i}),u=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case o:return{...e,currentHoveredRef:void 0,toolTipVisible:!1};case a:return"cell"===t.templateType&&i()(t.node,e.currentHoveredRef)?{...e,currentHoveredRef:void 0,toolTipVisible:!1}:{...e,toolTipVisible:!0,currentHoveredRef:t.node,positions:t.positions,data:t.data,additionalData:t.additionalData,templateType:t.templateType};default:return e}}},76765:(e,t,n)=>{"use strict";n.d(t,{Sz:()=>l,U:()=>s});var r=n(80977),i=n(30490),o=n(14146);const a=e=>e;function s(e,t){return{REQUEST:"".concat(e,"/").concat(t,"_REQUEST"),SUCCESS:"".concat(e,"/").concat(t,"_SUCCESS"),FAILURE:"".concat(e,"/").concat(t,"_FAILURE")}}function l(e){let{actions:t,request:n,dataHandler:s=a}=e;return async function(e,a){e({type:t.REQUEST});try{const r=await n,i=s(r,a);return e({type:t.SUCCESS,data:i}),i}catch(l){return(0,i.$)(l)&&401===l.status?e({type:o.Pq.SUCCESS}):(0,i.$)(l)&&l.status>=500&&l.statusText&&(0,r.Z)({name:"Request failure",title:"Request failure",type:"error",content:"".concat(l.status," ").concat(l.statusText)}),void e({type:t.FAILURE,error:l})}}}},75850:(e,t,n)=>{"use strict";let r;n.d(t,{K:()=>r}),function(e){e.Grey="Grey",e.Green="Green",e.Blue="Blue",e.Yellow="Yellow",e.Orange="Orange",e.Red="Red"}(r||(r={}))},35638:(e,t,n)=>{"use strict";var r,i;let o,a;var s;let l,c;var u,d,h,p,f;let m;var g,v,y,b,x,w,S;n.d(t,{C6:()=>l,tB:()=>m,mR:()=>a,gb:()=>o}),function(e){e.StatusSuccess="StatusSuccess",e.StatusAccepted="StatusAccepted",e.StatusPathDoesNotExist="StatusPathDoesNotExist",e.StatusPathIsNotDirectory="StatusPathIsNotDirectory",e.StatusAlreadyExists="StatusAlreadyExists",e.StatusSchemeError="StatusSchemeError",e.StatusNameConflict="StatusNameConflict",e.StatusInvalidParameter="StatusInvalidParameter",e.StatusMultipleModifications="StatusMultipleModifications",e.StatusReadOnly="StatusReadOnly",e.StatusTxIdNotExists="StatusTxIdNotExists",e.StatusTxIsNotCancellable="StatusTxIsNotCancellable",e.StatusAccessDenied="StatusAccessDenied",e.StatusNotAvailable="StatusNotAvailable",e.StatusPreconditionFailed="StatusPreconditionFailed",e.StatusRedirectDomain="StatusRedirectDomain",e.StatusQuotaExceeded="StatusQuotaExceeded",e.StatusResourceExhausted="StatusResourceExhausted"}(r||(r={})),function(e){e.UNKNOWN="UNKNOWN",e.USER="USER",e.GROUP="GROUP"}(i||(i={})),function(e){e.EPathTypeInvalid="EPathTypeInvalid",e.EPathTypeDir="EPathTypeDir",e.EPathTypeTable="EPathTypeTable",e.EPathTypePersQueueGroup="EPathTypePersQueueGroup",e.EPathTypeSubDomain="EPathTypeSubDomain",e.EPathTypeTableIndex="EPathTypeTableIndex",e.EPathTypeExtSubDomain="EPathTypeExtSubDomain",e.EPathTypeColumnStore="EPathTypeColumnStore",e.EPathTypeColumnTable="EPathTypeColumnTable",e.EPathTypeCdcStream="EPathTypeCdcStream",e.EPathTypeExternalDataSource="EPathTypeExternalDataSource",e.EPathTypeExternalTable="EPathTypeExternalTable",e.EPathTypeView="EPathTypeView",e.EPathTypeReplication="EPathTypeReplication"}(o||(o={})),function(e){e.EPathSubTypeEmpty="EPathSubTypeEmpty",e.EPathSubTypeSyncIndexImplTable="EPathSubTypeSyncIndexImplTable",e.EPathSubTypeAsyncIndexImplTable="EPathSubTypeAsyncIndexImplTable",e.EPathSubTypeStreamImpl="EPathSubTypeStreamImpl"}(a||(a={})),function(e){e.EPathStateNotExist="EPathStateNotExist",e.EPathStateNoChanges="EPathStateNoChanges",e.EPathStateCreate="EPathStateCreate",e.EPathStateAlter="EPathStateAlter",e.EPathStateDrop="EPathStateDrop",e.EPathStateCopying="EPathStateCopying",e.EPathStateBackup="EPathStateBackup",e.EPathStateUpgrade="EPathStateUpgrade",e.EPathStateMigrated="EPathStateMigrated",e.EPathStateRestore="EPathStateRestore",e.EPathStateMoving="EPathStateMoving"}(s||(s={})),function(e){e.ColumnCodecPlain="ColumnCodecPlain",e.ColumnCodecLZ4="ColumnCodecLZ4",e.ColumnCodecZSTD="ColumnCodecZSTD"}(l||(l={})),function(e){e.UNIT_AUTO="UNIT_AUTO",e.UNIT_SECONDS="UNIT_SECONDS",e.UNIT_MILLISECONDS="UNIT_MILLISECONDS",e.UNIT_MICROSECONDS="UNIT_MICROSECONDS",e.UNIT_NANOSECONDS="UNIT_NANOSECONDS"}(c||(c={})),function(e){e.ECdcStreamModeInvalid="ECdcStreamModeInvalid",e.ECdcStreamModeKeysOnly="ECdcStreamModeKeysOnly",e.ECdcStreamModeUpdate="ECdcStreamModeUpdate",e.ECdcStreamModeNewImage="ECdcStreamModeNewImage",e.ECdcStreamModeOldImage="ECdcStreamModeOldImage",e.ECdcStreamModeNewAndOldImages="ECdcStreamModeNewAndOldImages"}(u||(u={})),function(e){e.ECdcStreamFormatInvalid="ECdcStreamFormatInvalid",e.ECdcStreamFormatProto="ECdcStreamFormatProto",e.ECdcStreamFormatJson="ECdcStreamFormatJson"}(d||(d={})),function(e){e.ECdcStreamStateInvalid="ECdcStreamStateInvalid",e.ECdcStreamStateReady="ECdcStreamStateReady",e.ECdcStreamStateDisabled="ECdcStreamStateDisabled"}(h||(h={})),function(e){e.HASH_FUNCTION_MODULO_N="HASH_FUNCTION_MODULO_N",e.HASH_FUNCTION_CLOUD_LOGS="HASH_FUNCTION_CLOUD_LOGS"}(p||(p={})),function(e){e.COLUMN_ENGINE_NONE="COLUMN_ENGINE_NONE",e.COLUMN_ENGINE_REPLACING_TIMESERIES="COLUMN_ENGINE_REPLACING_TIMESERIES"}(f||(f={})),function(e){e.METERING_MODE_RESERVED_CAPACITY="METERING_MODE_RESERVED_CAPACITY",e.METERING_MODE_REQUEST_UNITS="METERING_MODE_REQUEST_UNITS"}(m||(m={})),function(e){e.SysLog="SysLog",e.Log="Log",e.Data="Data",e.External="External"}(g||(g={})),function(e){e.Unspecified="Unspecified",e.Freeze="Freeze",e.Unfreeze="Unfreeze"}(v||(v={})),function(e){e.ColumnCacheNone="ColumnCacheNone",e.ColumnCacheOnce="ColumnCacheOnce",e.ColumnCacheEver="ColumnCacheEver"}(y||(y={})),function(e){e.ColumnStorage1="ColumnStorage1",e.ColumnStorage2="ColumnStorage2",e.ColumnStorage1Ext1="ColumnStorage1Ext1",e.ColumnStorage1Ext2="ColumnStorage1Ext2",e.ColumnStorage2Ext1="ColumnStorage2Ext1",e.ColumnStorage2Ext2="ColumnStorage2Ext2",e.ColumnStorage1Med2Ext2="ColumnStorage1Med2Ext2",e.ColumnStorage2Med2Ext2="ColumnStorage2Med2Ext2",e.ColumnStorageTest_1_2_1k="ColumnStorageTest_1_2_1k"}(b||(b={})),function(e){e.CompactionStrategyUnset="CompactionStrategyUnset",e.CompactionStrategyGenerational="CompactionStrategyGenerational",e.CompactionStrategySharded="CompactionStrategySharded"}(x||(x={})),function(e){e.EIndexTypeInvalid="EIndexTypeInvalid",e.EIndexTypeGlobal="EIndexTypeGlobal",e.EIndexTypeGlobalAsync="EIndexTypeGlobalAsync"}(w||(w={})),function(e){e.EIndexStateInvalid="EIndexStateInvalid",e.EIndexStateReady="EIndexStateReady",e.EIndexStateNotReady="EIndexStateNotReady",e.EIndexStateWriteOnly="EIndexStateWriteOnly"}(S||(S={}))},28164:(e,t,n)=>{"use strict";let r,i;n.d(t,{F:()=>r,g:()=>i}),function(e){e.Unknown="Unknown",e.OldSchemeShard="OldSchemeShard",e.OldDataShard="OldDataShard",e.OldHive="OldHive",e.OldCoordinator="OldCoordinator",e.Mediator="Mediator",e.OldTxProxy="OldTxProxy",e.OldBSController="OldBSController",e.Dummy="Dummy",e.RTMRPartition="RTMRPartition",e.OldKeyValue="OldKeyValue",e.KeyValue="KeyValue",e.Coordinator="Coordinator",e.Hive="Hive",e.BSController="BSController",e.SchemeShard="SchemeShard",e.TxProxy="TxProxy",e.DataShard="DataShard",e.PersQueue="PersQueue",e.Cms="Cms",e.NodeBroker="NodeBroker",e.TxAllocator="TxAllocator",e.PersQueueReadBalancer="PersQueueReadBalancer",e.BlockStoreVolume="BlockStoreVolume",e.BlockStorePartition="BlockStorePartition",e.TenantSlotBroker="TenantSlotBroker",e.Console="Console",e.Kesus="Kesus",e.BlockStorePartition2="BlockStorePartition2",e.BlockStoreDiskRegistry="BlockStoreDiskRegistry",e.SysViewProcessor="SysViewProcessor",e.FileStore="FileStore",e.ColumnShard="ColumnShard",e.TestShard="TestShard",e.SequenceShard="SequenceShard",e.ReplicationController="ReplicationController",e.BlobDepot="BlobDepot",e.UserTypeStart="UserTypeStart",e.TypeInvalid="TypeInvalid"}(r||(r={})),function(e){e.Created="Created",e.ResolveStateStorage="ResolveStateStorage",e.Candidate="Candidate",e.BlockBlobStorage="BlockBlobStorage",e.RebuildGraph="RebuildGraph",e.WriteZeroEntry="WriteZeroEntry",e.Restored="Restored",e.Discover="Discover",e.Lock="Lock",e.Dead="Dead",e.Active="Active",e.ResolveLeader="ResolveLeader",e.Deleted="Deleted",e.Stopped="Stopped"}(i||(i={}))},9416:(e,t,n)=>{"use strict";let r,i,o,a;n.d(t,{Fx:()=>a,Hi:()=>r}),function(e){e.UnknownTenantType="UnknownTenantType",e.Domain="Domain",e.Dedicated="Dedicated",e.Shared="Shared",e.Serverless="Serverless"}(r||(r={})),function(e){e.STATE_UNSPECIFIED="STATE_UNSPECIFIED",e.CREATING="CREATING",e.RUNNING="RUNNING",e.REMOVING="REMOVING",e.PENDING_RESOURCES="PENDING_RESOURCES",e.CONFIGURING="CONFIGURING"}(i||(i={})),function(e){e.TABLET_VOLATILE_STATE_UNKNOWN="TABLET_VOLATILE_STATE_UNKNOWN",e.TABLET_VOLATILE_STATE_STOPPED="TABLET_VOLATILE_STATE_STOPPED",e.TABLET_VOLATILE_STATE_BOOTING="TABLET_VOLATILE_STATE_BOOTING",e.TABLET_VOLATILE_STATE_STARTING="TABLET_VOLATILE_STATE_STARTING",e.TABLET_VOLATILE_STATE_RUNNING="TABLET_VOLATILE_STATE_RUNNING"}(o||(o={})),function(e){e.None="None",e.HDD="HDD",e.SSD="SSD"}(a||(a={}))},57510:(e,t,n)=>{"use strict";n.d(t,{t:()=>p,d:()=>d});var r=n(52317),i=n(4119),o=n(47651),a=n(30817);const s=JSON.parse('{"b":"B","kb":"KB","mb":"MB","gb":"GB","tb":"TB","perSecond":"/s"}'),l=JSON.parse('{"b":"\u0411","kb":"\u041a\u0411","mb":"\u041c\u0411","gb":"\u0413\u0411","tb":"\u0422\u0411","perSecond":"/\u0441"}'),c=(0,a.wZ)("ydb-bytes-parsers",{ru:l,en:s}),u={b:{value:1,label:c("b")},kb:{value:r.h0,label:c("kb")},mb:{value:r.nQ,label:c("mb")},gb:{value:r.GS,label:c("gb")},tb:{value:r.Bp,label:c("tb")}},d=(e,t)=>{const n=10**t,r=u.tb.value*n,i=u.gb.value*n,o=u.mb.value*n;let a="b";return e>=u.kb.value*n&&(a="kb"),e>=o&&(a="mb"),e>=i&&(a="gb"),e>=r&&(a="tb"),a},h=(e,t)=>e+" ".concat(u[t].label),p=e=>{let{value:t,size:n,withSpeedLabel:r=!1,withSizeLabel:a=!0,significantDigits:s=0,...l}=e;if(!(0,o.kE)(t))return"";const p=Number(t),f=null!==n&&void 0!==n?n:d(p,s),m=(e=>{let{value:t,size:n="mb",precision:r=0}=e;const o=(0,i.W0)(Number(t)/u[n].value,r);return(0,i.uf)(o)})({value:p,size:f,...l});return r?((e,t)=>h(e,t)+c("perSecond"))(m,f):a?h(m,f):m}},81854:(e,t,n)=>{"use strict";n.d(t,{c4:()=>o,td:()=>r.t,dT:()=>r.d});var r=n(57510),i=n(52317);const o=e=>({perMinute:e&&e.per_minute?Math.round(Number(e.per_minute)/i.sU):0,perHour:e&&e.per_hour?Math.round(Number(e.per_hour)/i.RQ):0,perDay:e&&e.per_day?Math.round(Number(e.per_day)/i.ii):0})},90860:(e,t,n)=>{"use strict";n.d(t,{B_:()=>u,kn:()=>l,n$:()=>c});var r=n(60619),i=n.n(r),o=n(30601),a=n(94076);const s="__no_color__",l=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Map;return e.forEach((e=>{var n;let{version:r,version_base_color_index:i=s}=e;const a=(0,o.H)(r);t.has(i)||t.set(i,new Set),null===(n=t.get(i))||void 0===n||n.add(a)})),t},c=e=>{const t=new Map;for(const[n,r]of e)Array.from(r).sort(((e,t)=>(0,a.un)(t)-(0,a.un)(e))).forEach(((e,i)=>{if(n===s)t.set(e,a.HD);else{const o=Number(n)%a.DM.length,s=r.size,l=a.DM[o],c=Math.max(100-i*(100/s),20),u=Math.round(255*c/100).toString(16),d="".concat(l).concat(u);t.set(e,d)}}));return t},u=function(){let e=arguments.length>1?arguments[1]:void 0;const t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).filter((e=>e.version));return i()(t,"version").map((e=>({...e,minorVersion:(0,o.H)(e.version)}))).reduce(((t,n)=>{const r=e.get(n.minorVersion);return t.push({...n,color:r}),t}),[])}},52317:(e,t,n)=>{"use strict";n.d(t,{Ac:()=>j,Ah:()=>S,Bp:()=>u,DG:()=>k,DO:()=>_,E6:()=>V,ET:()=>Y,FU:()=>C,GS:()=>c,HN:()=>m,IG:()=>Q,JZ:()=>J,KS:()=>P,KU:()=>A,LE:()=>H,ME:()=>a,Mn:()=>z,N1:()=>D,Px:()=>T,RQ:()=>h,Rq:()=>K,S7:()=>U,UF:()=>N,Wm:()=>G,XN:()=>R,XX:()=>$,ZY:()=>q,bw:()=>E,eG:()=>B,fl:()=>x,h0:()=>s,if:()=>I,ii:()=>p,jX:()=>w,nQ:()=>l,pf:()=>Z,qV:()=>v,sO:()=>F,sU:()=>d,sl:()=>b,tV:()=>g,t_:()=>o,w7:()=>W,wr:()=>M,x5:()=>y,y6:()=>X,yD:()=>f,yT:()=>O,z4:()=>L});var r=n(19812),i=n(28164);const o=1e4,a=3e4,s=1e3,l=1e6,c=1e9,u=1e12,d=60,h=60*d,p=24*h,f=1e6,m={Created:"grey",ResolveStateStorage:"lightgrey",Candidate:"lightgrey",BlockBlobStorage:"lightgrey",RebuildGraph:"yellow",Restored:"yellow",Discover:"orange",Lock:"lightblue",Dead:"black",Active:"lightgreen"},g={[i.F.OldTxProxy]:"P",[i.F.TxProxy]:"P",[i.F.BSController]:"BS",[i.F.Dummy]:"DY",[i.F.RTMRPartition]:"RP",[i.F.PersQueueReadBalancer]:"PB",[i.F.Cms]:"CM",[i.F.BlockStorePartition]:"BP",[i.F.BlockStoreVolume]:"BV",[i.F.Console]:"CN",[i.F.TenantSlotBroker]:"TB",[i.F.BlockStoreDiskRegistry]:"BDR"},v=e=>{var t;if(!e)return;const n=null===(t=e.match(/[A-Z]/g))||void 0===t?void 0:t.join("");return(e=>e in g)(e)?g[e]:n},y=["1 min","5 min","15 min"],b={green:5,yellow:4,orange:3,red:2,blue:1,grey:1},x=5,w="\u2014",S="Developer UI",_="Cluster",C="Database",E="theme",T="language",O="invertedDisks",N="useNodesEndpointInDiagnostics",k="saved_queries",j="asideHeaderCompact",I="queries_history",P="tune-columns-popup",D="binaryDataInPlainTextDisplay",A="auto-refresh-interval",R="default-size-result-pane",M="default-size-tenant-summary-pane",L="default-size-tenant-pane",F="default-is-tenant-summary-collapsed",z="default-is-tenant-common-info-collapsed",B="default-is-query-result-collapsed",U="default-cluster-tab",H={displayIndices:!1,stickyHead:r.ZP.MOVING,syncHeadOnResize:!0,dynamicRender:!0,highlightRows:!0},V={...H,stickyHead:"fixed",dynamicRender:!1},G="query_initial_mode",W="last_used_query_action",q="partitionsHiddenColumns",Z="saved_tenant_initial_tab",Y="useBackendParamsForTables",K="queryUseMultiSchema",Q="useClusterBalancerAsBacked",X="enableAutocomplete",$="autocompleteOnEnter",J="isHotKeysHelpHidden"},80977:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(63660);const i=function(e){let{name:t,title:n,type:i,content:o}=e;return r.m.add({name:null!==t&&void 0!==t?t:"Request succeeded",title:null!==n&&void 0!==n?n:"Request succeeded",theme:"error"===i?"danger":"success",content:o,isClosable:!0,autoHiding:"success"===i&&5e3})}},4119:(e,t,n)=>{"use strict";n.d(t,{fG:()=>k,OW:()=>N,t$:()=>f,td:()=>p,SX:()=>m,LO:()=>T,o0:()=>O,gC:()=>b,uf:()=>_,QO:()=>x,q3:()=>w,JD:()=>S,CH:()=>v,W0:()=>C,a2:()=>g});var r=n(396),i=n(57510),o=n(52317),a=n(36453),s=n.n(a),l=(n(40022),n(30817));Object.values(l.Uo).forEach((e=>{s().locales[e]&&(s().locales[e].delimiters.thousands=" ")})),s().locale(l.ag.lang);const c=s();var u=n(47651);const d=JSON.parse('{"format-cpu.cores":["core","cores","cores","cores"]}'),h=JSON.parse('{"format-cpu.cores":["\u044f\u0434\u0440\u043e","\u044f\u0434\u0440\u0430","\u044f\u0434\u0435\u0440","\u044f\u0434\u0435\u0440"]}'),p=((0,l.wZ)("ydb-format-cpu",{ru:h,en:d}),e=>(0,u.kE)(e)?c(e).format("0 b"):""),f=e=>{const t=p(e);return t?t+"/s":""},m=e=>"".concat(Math.floor(Number(e)/o.GS)," GB"),g=e=>e?Object.values(e).join("-"):"",v=e=>e.NodeId&&e.PDiskId?"".concat(e.NodeId,"-").concat(e.PDiskId):void 0,y=e=>{const t=Math.floor(e/o.ii),n=e%o.ii;return[t&&"".concat(t,"d"),c(n).format("00:00:00")].filter(Boolean).join(" ")},b=e=>e&&y(e/1e3),x=(e,t,n)=>{let r=(0,i.d)(Number(e),0),o=!0,a=0;(0,u.kE)(t)&&(r=(0,i.d)(Number(t),0),o=!1,a=1);return[(0,i.t)({value:e,withSizeLabel:o,size:n||r,precision:a}),(0,i.t)({value:t,size:n||r})]},w=(e,t)=>x(e,t,"gb"),S=(e,t)=>x(e,t,"tb"),_=e=>(0,u.kE)(e)?c(e).format("0,0.[00000]"):"",C=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,[n]=String(e).split(".");return Number(e)<1&&(n=""),n.length>=t?Math.round(Number(e)):Number(Number(e).toFixed(t-n.length))},E=e=>{const t=Number(e)/1e6;return C(t,3)},T=e=>{if(void 0!==e)return c(E(e)).format("0.[000]")},O=e=>{var t;if(!(0,u.kE)(e))return"";const n=null===(t=(0,r.J)(Number(e)))||void 0===t?void 0:t.format("YYYY-MM-DD HH:mm");return Number(e)>0&&n?n:"N/A"},N=e=>{const t=(new Date).getTime()-Number(e);return t<=0?0:t/1e3},k=e=>y(N(Number(e)))},48169:(e,t,n)=>{"use strict";n.d(t,{ok:()=>a,wq:()=>o,yf:()=>s});var r=n(27102),i=n(47651);const o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.y3;const n=/\/node\/\d+\/?$/g;return n.test(String(t))?String(t).replace(n,"/node/".concat(e,"/")):"".concat(null!==t&&void 0!==t?t:"","/node/").concat(e,"/")},a=e=>{let{nodeId:t,pDiskId:n,host:r}=e;const a="actors/pdisks/pdisk"+(0,i.bJ)(n);return o(t,r)+a},s=e=>{let{nodeId:t,pDiskId:n,vDiskSlotId:r,host:a}=e;const s="actors/vdisks/vdisk"+(0,i.bJ)(n)+"_"+(0,i.bJ)(r);return o(t,a)+s}},27070:(e,t,n)=>{"use strict";n.d(t,{A:()=>a,Y:()=>s});var r=n(81413),i=n(43680),o=n.n(i);const a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.hr;return e?t===r.hr?"-"+e:e:""},s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return new RegExp(o()(e),"i")}},30817:(e,t,n)=>{"use strict";n.d(t,{Uo:()=>r,Fp:()=>l,ag:()=>u,wZ:()=>d});var r,i=n(31329),o=n(24205),a=n(18193),s=n(52317);!function(e){e.En="en",e.Ru="ru"}(r||(r={}));const l=r.En,c=a.r.readUserSettingsValue(s.Px,l),u=new i.mb({lang:c,fallbackLang:r.En});function d(e,t){for(const n of Object.keys(t))u.registerKeyset(n,e,t[n]);return u.keyset(e)}(0,o.jQ)({lang:c})},60749:(e,t,n)=>{"use strict";n.d(t,{K:()=>r});const r="s-expression"},62729:(e,t,n)=>{"use strict";n.d(t,{EQ:()=>u,JX:()=>l,Oo:()=>r,Ot:()=>a,S8:()=>d,j:()=>o,t6:()=>s,vy:()=>i,yJ:()=>c});const r="yql",i=["String","Bool","Int32","Uint32","Int64","Uint64","Float","Double","Void","Yson","Utf8","Unit","Json","Date","Datetime","Timestamp","Interval","Null","Int8","Uint8","Int16","Uint16","TzDate","TzDatetime","TzTimestamp","Uuid","EmptyList","EmptyDict","JsonDocument","DyNumber"],o=["CAST","COALESCE","LENGTH","LEN","SUBSTRING","FIND","RFIND","StartsWith","EndsWith","IF","NANVL","Random","RandomNumber","RandomUuid","CurrentUtcDate","CurrentUtcDatetime","CurrentUtcTimestamp","CurrentTzDate","CurrentTzDatetime","CurrentTzTimestamp","AddTimezone","RemoveTimezone","MAX_OF","MIN_OF","GREATEST","LEAST","AsTuple","AsStruct","AsList","AsDict","AsSet","AsListStrict","AsDictStrict","AsSetStrict","Variant","AsVariant","Enum","AsEnum","AsTagged","Untag","TableRow","JoinTableRow","Ensure","EnsureType","EnsureConvertibleTo","ToBytes","FromBytes","ByteAt","TestBit","ClearBit","SetBit","FlipBit","Abs","Just","Unwrap","Nothing","Callable","StaticMap","StaticZip","ListCreate","AsListStrict","ListLength","ListHasItems","ListCollect","ListSort","ListSortAsc","ListSortDesc","ListExtend","ListExtendStrict","ListUnionAll","ListZip","ListZipAll","ListEnumerate","ListReverse","ListSkip","ListTake","ListIndexOf","ListMap","ListFilter","ListFlatMap","ListNotNull","ListFlatten","ListUniq","ListAny","ListAll","ListHas","ListHead","ListLast","ListMin","ListMax","ListSum","ListAvg","ListFold","ListFold1","ListFoldMap","ListFold1Map","ListFromRange","ListReplicate","ListConcat","ListExtract","ListTakeWhile","ListSkipWhile","ListAggregate","ToDict","ToMultiDict","ToSet","DictCreate","SetCreate","DictLength","DictHasItems","DictItems","DictKeys","DictPayloads","DictLookup","DictContains","DictAggregate","SetIsDisjoint","SetIntersection","SetIncludes","SetUnion","SetDifference","SetSymmetricDifference","TryMember","ExpandStruct","AddMember","RemoveMember","ForceRemoveMember","ChooseMembers","RemoveMembers","ForceRemoveMembers","CombineMembers","FlattenMembers","StructMembers","RenameMembers","ForceRenameMembers","GatherMembers","SpreadMembers","ForceSpreadMembers","FormatType","ParseType","TypeOf","InstanceOf","DataType","OptionalType","ListType","StreamType","DictType","TupleType","StructType","VariantType","ResourceType","CallableType","GenericType","UnitType","VoidType","OptionalItemType","ListItemType","StreamItemType","DictKeyType","DictPayloadType","TupleElementType","StructMemberType","CallableResultType","CallableArgumentType","VariantUnderlyingType","JSON_EXISTS","JSON_VALUE","JSON_QUERY"],a=["COUNT","MIN","MAX","SUM","AVG","COUNT_IF","SUM_IF","AVG_IF","SOME","CountDistinctEstimate","HyperLogLog","AGGREGATE_LIST","AGGREGATE_LIST_DISTINCT","AGG_LIST","AGG_LIST_DISTINCT","MAX_BY","MIN_BY","AGGREGATE_BY","MULTI_AGGREGATE_BY","TOP","BOTTOM","TOP_BY","BOTTOM_BY","TOPFREQ","MODE","STDDEV","VARIANCE","CORRELATION","COVARIANCE","PERCENTILE","MEDIAN","HISTOGRAM","LogarithmicHistogram","LogHistogram","LinearHistogram","BOOL_AND","BOOL_OR","BOOL_XOR","BIT_AND","BIT_OR","BIT_XOR","SessionStart"],s=Object.entries({DateTime:["EndOfMonth","Format","FromMicroseconds","FromMilliseconds","FromSeconds","GetDayOfMonth","GetDayOfWeek","GetDayOfWeekName","GetDayOfYear","GetHour","GetMicrosecondOfSecond","GetMillisecondOfSecond","GetMinute","GetMonth","GetMonthName","GetSecond","GetTimezoneId","GetTimezoneName","GetWeekOfYear","GetWeekOfYearIso8601","GetYear","IntervalFromDays","IntervalFromHours","IntervalFromMicroseconds","IntervalFromMilliseconds","IntervalFromMinutes","IntervalFromSeconds","MakeDate","MakeDatetime","MakeTimestamp","MakeTzDate","MakeTzDatetime","MakeTzTimestamp","Parse","ParseHttp","ParseIso8601","ParseRfc822","ParseX509","ShiftMonths","ShiftQuarters","ShiftYears","Split","StartOf","StartOfDay","StartOfMonth","StartOfQuarter","StartOfWeek","StartOfYear","TimeOfDay","ToDays","ToHours","ToMicroseconds","ToMilliseconds","ToMinutes","ToSeconds","Update"],Dsv:["Parse","ReadRecord","Serialize"],String:["AsciiToLower","AsciiToTitle","AsciiToUpper","Base32Decode","Base32Encode","Base32StrictDecode","Base64Decode","Base64Encode","Base64EncodeUrl","Base64StrictDecode","Bin","BinText","CgiEscape","CgiUnescape","Collapse","CollapseText","Contains","DecodeHtml","EncodeHtml","EndsWith","EndsWithIgnoreCase","EscapeC","FromByteList","HasPrefix","HasPrefixIgnoreCase","HasSuffix","HasSuffixIgnoreCase","Hex","HexDecode","HexEncode","HexText","HumanReadableBytes","HumanReadableDuration","HumanReadableQuantity","IsAscii","IsAsciiAlnum","IsAsciiAlpha","IsAsciiDigit","IsAsciiHex","IsAsciiLower","IsAsciiSpace","IsAsciiUpper","JoinFromList","LeftPad","LevensteinDistance","Prec","RemoveAll","RemoveFirst","RemoveLast","ReplaceAll","ReplaceFirst","ReplaceLast","RightPad","SBin","SHex","SplitToList","StartsWith","StartsWithIgnoreCase","Strip","ToByteList","UnescapeC"],Unicode:["Find","Fold","FromCodePointList","GetLength","IsAlnum","IsAlpha","IsAscii","IsDigit","IsHex","IsLower","IsSpace","IsUnicodeSet","IsUpper","IsUtf","JoinFromList","LevensteinDistance","Normalize","NormalizeNFC","NormalizeNFD","NormalizeNFKC","NormalizeNFKD","RFind","RemoveAll","RemoveFirst","RemoveLast","ReplaceAll","ReplaceFirst","ReplaceLast","Reverse","SplitToList","Strip","Substring","ToCodePointList","ToLower","ToTitle","ToUint64","ToUpper","Translit","TryToUint64"],Url:["BuildQueryString","CanBePunycodeHostName","CutQueryStringAndFragment","CutScheme","CutWWW","CutWWW2","Decode","Encode","ForceHostNameToPunycode","ForcePunycodeToHostName","GetCGIParam","GetDomain","GetDomainLevel","GetFragment","GetHost","GetHostPort","GetOwner","GetPath","GetPort","GetScheme","GetSchemeHost","GetSchemeHostPort","GetSignificantDomain","GetTLD","GetTail","HostNameToPunycode","IsAllowedByRobotsTxt","IsKnownTLD","IsWellKnownTLD","Normalize","NormalizeWithDefaultHttpScheme","Parse","PunycodeToHostName","QueryStringToDict","QueryStringToList"],Yson:["Attributes","Contains","ConvertTo","ConvertToBool","ConvertToBoolDict","ConvertToBoolList","ConvertToDict","ConvertToDouble","ConvertToDoubleDict","ConvertToDoubleList","ConvertToInt64","ConvertToInt64Dict","ConvertToInt64List","ConvertToList","ConvertToString","ConvertToStringDict","ConvertToStringList","ConvertToUint64","ConvertToUint64Dict","ConvertToUint64List","Equals","From","GetHash","GetLength","IsBool","IsDict","IsDouble","IsEntity","IsInt64","IsList","IsString","IsUint64","Lookup","LookupBool","LookupDict","LookupDouble","LookupInt64","LookupList","LookupString","LookupUint64","Options","Parse","ParseJson","ParseJsonDecodeUtf8","Serialize","SerializeJson","SerializePretty","SerializeText","WithAttributes","YPath","YPathBool","YPathDict","YPathDouble","YPathInt64","YPathList","YPathString","YPathUint64"],HyperLogLog:["AddValue","Create","Deserialize","GetResult","Merge","Serialize"],Hyperscan:["BacktrackingGrep","BacktrackingMatch","Capture","Grep","Match","MultiGrep","MultiMatch","Replace"],Ip:["ConvertToIPv6","FromString","GetSubnet","GetSubnetByMask","IsEmbeddedIPv4","IsIPv4","IsIPv6","SubnetFromString","SubnetMatch","SubnetToString","ToFixedIPv6String","ToString"],Json:["BoolAsJsonNode","CompilePath","DoubleAsJsonNode","JsonAsJsonNode","JsonDocumentSqlExists","JsonDocumentSqlQuery","JsonDocumentSqlQueryConditionalWrap","JsonDocumentSqlQueryWrap","JsonDocumentSqlTryExists","JsonDocumentSqlValueBool","JsonDocumentSqlValueConvertToUtf8","JsonDocumentSqlValueInt64","JsonDocumentSqlValueNumber","JsonDocumentSqlValueUtf8","Parse","Serialize","SerializeToJsonDocument","SqlExists","SqlQuery","SqlQueryConditionalWrap","SqlQueryWrap","SqlTryExists","SqlValueBool","SqlValueConvertToUtf8","SqlValueInt64","SqlValueNumber","SqlValueUtf8","Utf8AsJsonNode"],Math:["Abs","Acos","Asin","Asinh","Atan","Atan2","Cbrt","Ceil","Cos","Cosh","E","Eps","Erf","ErfInv","ErfcInv","Exp","Exp2","Fabs","Floor","Fmod","FuzzyEquals","Hypot","IsFinite","IsInf","IsNaN","Ldexp","Lgamma","Log","Log10","Log2","Mod","NearbyInt","Pi","Pow","Rem","Remainder","Rint","Round","RoundDownward","RoundToNearest","RoundTowardZero","RoundUpward","Sigmoid","Sin","Sinh","Sqrt","Tan","Tanh","Tgamma","Trunc"],Pire:["Capture","Grep","Match","MultiGrep","MultiMatch","Replace"],Re2:["Capture","Count","Escape","FindAndConsume","Grep","Match","Options","PatternFromLike","Replace"],Re2posix:["Capture","Count","Escape","FindAndConsume","Grep","Match","Options","PatternFromLike","Replace"],Digest:["Argon2","Blake2B","CityHash","CityHash128","Crc32c","Crc64","FarmHashFingerprint","FarmHashFingerprint128","FarmHashFingerprint2","FarmHashFingerprint32","FarmHashFingerprint64","Fnv32","Fnv64","HighwayHash","IntHash64","Md5HalfMix","Md5Hex","Md5Raw","MurMurHash","MurMurHash2A","MurMurHash2A32","MurMurHash32","NumericHash","Sha1","Sha256","SipHash","SuperFastHash","XXH3","XXH3_128"],Histogram:["CalcLowerBound","CalcLowerBoundSafe","CalcUpperBound","CalcUpperBoundSafe","GetSumAboveBound","GetSumBelowBound","GetSumInRange","Normalize","Print","ToCumulativeDistributionFunction"]}).reduce(((e,t)=>{let[n,r]=t;const i=r.map((e=>"".concat(n,"::").concat(e)));return e.concat(i)}),[]),l=["ROW_NUMBER","LAG","LEAD","FIRST_VALUE","LAST_VALUE","RANK","DENSE_RANK","SessionState"],c=[],u=["TablePathPrefix","Warning"],d={table:["AUTO_PARTITIONING_BY_SIZE","AUTO_PARTITIONING_PARTITION_SIZE_MB","AUTO_PARTITIONING_BY_LOAD","AUTO_PARTITIONING_MIN_PARTITIONS_COUNT","AUTO_PARTITIONING_MAX_PARTITIONS_COUNT","UNIFORM_PARTITIONS","READ_REPLICAS_SETTINGS","TTL","KEY_BLOOM_FILTER","STORE"],view:["security_invoker"],topic:["min_active_partitions","partition_count_limit","retention_period","retention_storage_mb","partition_write_speed_bytes_per_second","partition_write_burst_bytes","metering_mode"],object:[],user:[],group:[],externalDataSource:[],externalTable:[],tableStore:[],replication:["ENDPOINT","DATABASE","USER","PASSWORD"],tableIndex:[],topicConsumer:["important","read_from"]}},51688:(e,t,n)=>{"use strict";n.d(t,{Hk:()=>g,Ns:()=>p,RW:()=>m,TA:()=>d,U8:()=>c,Uu:()=>l,dn:()=>h,eV:()=>f,oh:()=>v,qU:()=>u});var r=n(95408),i=n(80839),o=n(75850),a=n(52317),s=n(4119);let l;!function(e){e.All="All",e.SmallUptime="SmallUptime"}(l||(l={}));const c=r.z.nativeEnum(l).catch(l.All),u={[l.All]:"All",[l.SmallUptime]:"Uptime < 1h"},d=e=>!e.SystemState||e.SystemState===o.K.Grey,h=e=>null===e||void 0===e?void 0:e.reduce(((e,t)=>(t.Id&&t.Host&&e.set(Number(t.Id),t.Host),e)),new Map),p=function(){var e,t;let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const r=(null===(e=n.Location)||void 0===e?void 0:e.Rack)||n.Rack,i=(null===(t=n.Location)||void 0===t?void 0:t.DataCenter)||n.DataCenter,o=(0,s.fG)(n.StartTime);return{...n,Rack:r,DC:i,Uptime:o}},f=e=>e===i.pu.PROBLEMS,m=e=>e===l.SmallUptime?a.RQ:void 0,g={NodeId:"NodeId",Host:"Host",DC:"DC",Rack:"Rack",Version:"Version",Uptime:"Uptime",Memory:"Memory",CPU:"CPU",LoadAverage:"LoadAverage"},v=e=>Object.values(g).includes(e)},39623:(e,t,n)=>{"use strict";let r;n.d(t,{Jf:()=>o,wZ:()=>a,U4:()=>s,jM:()=>l,T$:()=>c,gW:()=>h,gY:()=>p,CC:()=>f,dt:()=>v,fV:()=>y,y5:()=>m,Xh:()=>g}),function(e){e.Bool="Bool",e.Int8="Int8",e.Int16="Int16",e.Int32="Int32",e.Int64="Int64",e.Uint8="Uint8",e.Uint16="Uint16",e.Uint32="Uint32",e.Uint64="Uint64",e.Float="Float",e.Double="Double",e.Decimal="Decimal",e.String="String",e.Utf8="Utf8",e.Json="Json",e.JsonDocument="JsonDocument",e.Yson="Yson",e.Uuid="Uuid",e.Date="Date",e.Datetime="Datetime",e.Timestamp="Timestamp",e.Interval="Interval",e.TzDate="TzDate",e.TzDateTime="TzDateTime",e.TzTimestamp="TzTimestamp"}(r||(r={}));var i=n(30490);const o={execute:"execute",explain:"explain"},a={scan:"scan",script:"script",data:"data",query:"query",pg:"pg"},s={scan:"Scan",script:"YQL Script",data:"Data",query:"YQL - QueryService",pg:"PostgreSQL"},l={yql:"yql_v1",pg:"pg"},c=e=>{switch(e.replace(/\?$/,"")){case r.Bool:return"boolean";case r.Int8:case r.Int16:case r.Int32:case r.Int64:case r.Uint8:case r.Uint16:case r.Uint32:case r.Uint64:case r.Float:case r.Double:case r.Decimal:return"number";case r.String:case r.Utf8:case r.Json:case r.JsonDocument:case r.Yson:case r.Uuid:return"string";case r.Date:case r.Datetime:case r.Timestamp:case r.Interval:case r.TzDate:case r.TzDateTime:case r.TzTimestamp:return"date";default:return}},u=(e,t)=>e.map((e=>e.reduce(((e,n,r)=>{const{name:i}=t[r];return e[i]=n,e}),{}))),d=e=>Boolean(!e||"object"!==typeof e||Array.isArray(e)||"result"in e&&!Array.isArray(e.result));function h(e){return Boolean(e&&"object"===typeof e&&"error"in e&&"issues"in e)}const p=e=>d(e)?{}:(e=>Boolean(e&&!Array.isArray(e)&&Array.isArray(e.result)&&"object"===typeof e.result[0]&&"rows"in e.result[0]&&"columns"in e.result[0]))(e)?(e=>{const{result:t,...n}=e;return{resultSets:null===t||void 0===t?void 0:t.map((e=>{const{rows:t,columns:n}=e;let r;return n&&(r=[]),t&&n&&(r=u(t,n)),{columns:n,result:r}})),...n}})(e):(e=>Boolean(e&&!Array.isArray(e)&&Array.isArray(e.result)&&Array.isArray(e.columns)))(e)?(e=>{const{result:t,columns:n,...r}=e;return{result:t&&n&&u(t,n),columns:n,...r}})(e):e,f=e=>d(e)?{}:e,m=e=>(e=>Boolean(e&&"queries"in e))(e)?e.queries&&e.queries.length?{Plan:e.queries[0].Plan,tables:e.queries[0].tables,meta:e.meta}:{meta:e.meta}:e,g=e=>Array.isArray(e)?e.map((e=>{const t={};for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)){const r=typeof e[n];null!==e[n]&&"object"===r||"boolean"===r||Array.isArray(e[n])?t[n]=JSON.stringify(e[n]):t[n]=e[n]}return t})):[],v=e=>"string"===typeof e||h(e)?e:(0,i.e)(e)?e.message:(0,i.$)(e)?"data"in e&&h(e.data)?e.data:e.statusText:void 0,y=e=>{var t;const n=v(e);return"string"===typeof n?n:null===n||void 0===n||null===(t=n.error)||void 0===t?void 0:t.message}},30490:(e,t,n)=>{"use strict";n.d(t,{$:()=>i,e:()=>r});const r=e=>Boolean(e&&"object"===typeof e&&"message"in e&&"Network Error"===e.message),i=e=>Boolean(e&&"object"===typeof e&&"status"in e)},1504:(e,t,n)=>{"use strict";n.d(t,{tt:()=>c,zm:()=>u,DA:()=>p,lE:()=>f,BO:()=>m});var r=n(52317),i=n(4119),o=n(30817);const a=JSON.parse('{"daysHours":"{{days}}\xa0d\xa0{{hours}}\xa0h","hoursMin":"{{hours}}\xa0h\xa0{{minutes}}\xa0m","minSec":"{{minutes}}\xa0m\xa0{{seconds}}\xa0s","secMs":"{{seconds}}\xa0s\xa0{{ms}}\xa0ms","days":"{{days}}\xa0d","hours":"{{hours}}\xa0h","min":"{{minutes}}\xa0m","sec":"{{seconds}}\xa0s","ms":"{{ms}}\xa0ms"}'),s=JSON.parse('{"daysHours":"{{days}}\xa0\u0434\xa0{{hours}}\xa0\u0447","hoursMin":"{{hours}}\xa0\u0447\xa0{{minutes}}\xa0\u043c","minSec":"{{minutes}}\xa0\u043c\xa0{{seconds}}\xa0\u0441","secMs":"{{seconds}}\xa0\u0441\xa0{{ms}}\xa0\u043c\u0441","days":"{{days}}\xa0\u0434","hours":"{{hours}}\xa0\u0447","min":"{{minutes}}\xa0\u043c","sec":"{{seconds}}\xa0\u0441","ms":"{{ms}}\xa0\u043c\u0441"}'),l=(0,o.wZ)("ydb-time-parsers",{ru:s,en:a}),c=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;const n=e%1e3;let i=Math.floor(e/1e3);const o=Math.floor(i/r.ii);i%=r.ii;const a=Math.floor(i/r.RQ);i%=r.RQ;const s=Math.floor(i/60);i%=60;const c=i,u={days:o,hours:a,minutes:s,seconds:c,ms:n};if(2===t){if(o>0)return l("daysHours",u);if(a>0)return l("hoursMin",u);if(s>0)return l("minSec",u);if(c>0)return l("secMs",u)}if(1===t){if(o>0)return l("days",u);if(a>0)return l("hours",u);if(s>0)return l("min",u);if(c>0)return l("sec",u)}return l("ms",u)},u=e=>l("ms",{ms:(0,i.uf)(e)}),d=e=>(e.seconds?1e3*Number(e.seconds):0)+(e.nanos?e.nanos/r.yD:0);var h=n(47651);const p=e=>e?(e=>"string"===typeof e?1e3*parseInt(e,10):d(e))(e):0,f=e=>{if(!e)return 0;const t=Date.now()-(e=>"string"===typeof e?Date.parse(e):d(e))(e);return t<0?0:t},m=e=>e&&(0,h.kE)(e)?Math.round(Number(e)/1e3):0},47651:(e,t,n)=>{"use strict";function r(e){if(e)try{return JSON.parse(e)}catch(t){return e}}n.d(t,{Mo:()=>r,Qt:()=>a,Uz:()=>s,bJ:()=>l,kE:()=>c});const i=[" B"," KB"," MB"," GB"," TB"," PB"," EB"],o=1e3;function a(e){return"".concat(function(e){if(isNaN(e))return"";const t=e/o**2;return t<10?t.toFixed(2)+i[2]:t<100?t.toFixed(1)+i[2]:t.toFixed()+i[2]}(e)).concat(e?"ps":"")}function s(e,t){if(isNaN(e))return"N/A";const n=e/1e9;return t?n.toFixed()+i[3]:n<10?n.toFixed(2)+i[3]:n<100?n.toFixed(1)+i[3]:n.toFixed()+i[3]}function l(e){let t=e;for(let n=String(e).length;n<9;n++)t="0"+t;return t}function c(e){return!isNaN(e)&&!isNaN(parseFloat(e))}},94076:(e,t,n)=>{"use strict";n.d(t,{DM:()=>o,HD:()=>a,ZP:()=>c,un:()=>i});var r=n(30601);const i=e=>e.split("").reduce(((e,t)=>{const n=(e<<5)-e+t.charCodeAt(0);return n&n}),0),o=["#008000","#4169e1","#ffd700","#ff8c00","#808000","#e9967a","#ff1493","#00bfff","#da70d6","#3cb371","#b22222"],a="#bfbfbf",s=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Map;return e.forEach((e=>{var n;const i=(0,r.X)(e),o=(0,r.H)(e);t.has(i)||t.set(i,new Set),null===(n=t.get(i))||void 0===n||n.add(o)})),t},l=e=>{const t=Array.from(e.keys()).map((e=>({version:e,hash:i(e)}))),n=new Map;let r=o.length-1;return t.sort(((e,t)=>e.hash-t.hash)).forEach((t=>{if(/^(\w+-)?stable/.test(t.version)){r=(r+1)%o.length,n.set(t.version,o[r]);const a=Array.from(e.get(t.version)||[]).filter((e=>e!==t.version)).map((e=>({version:e,hash:i(e)}))),s=a.length;a.sort(((e,t)=>t.hash-e.hash)).forEach(((e,t)=>{const i=o[r],a=Math.max(100-t*(100/s),20),l=Math.round(255*a/100).toString(16),c="".concat(i).concat(l);n.set(e.version,c)}))}else n.set(t.version,a)})),n},c=function(){return l(s(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]))}},30601:(e,t,n)=>{"use strict";n.d(t,{H:()=>r,X:()=>i});const r=e=>{let t=e;/\d{1,}-\d{1,}(-\d){0,}(-hotfix-\d{1,}(-\d{1,})?)?\.[0-9a-zA-Z]+$/.test(e)&&(t=t.replace(/(-hotfix-\d{1,}(-\d{1,})?)?\.[0-9a-zA-Z]+$/,""));return/\d{1,}-\d{1,}-\d{1,}-\d{1,}$/.test(e)&&(t=t.replace(/-\d{1,}$/,"")),t},i=e=>{const t=r(e);return/\d{1,}-\d{1,}-\d{1,}/.test(t)?t.replace(/-\d{1,}$/,""):t}},36767:(e,t)=>{"use strict";function n(e){function t(t,i,o,a){var s=i?n+t+e.e+i:n+t,l=s;if(o){var c=" "+l+e.m;for(var u in o)if(o.hasOwnProperty(u)){var d=o[u];!0===d?l+=c+u:d&&(l+=c+u+r+d)}}if(void 0!==a)for(var h=0,p=(a=Array.isArray(a)?a:[a]).length;h<p;h++){var f=a[h];if(f&&"string"==typeof f.valueOf())for(var m=f.valueOf().split(" "),g=0;g<m.length;g++){var v=m[g];v!==s&&(l+=" "+v)}}return l}var n=e.n||"",r=e.v||e.m;return function(e,n){return function(r,i,o){return"string"==typeof r?"string"==typeof i||Array.isArray(i)?t(e,r,void 0,i):t(e,r,i,o):t(e,n,r,i)}}}n({e:"-",m:"_"}),t.withNaming=n},5247:(e,t,n)=>{"use strict";e.exports=n(36767)},66307:(e,t,n)=>{"use strict";n.d(t,{a:()=>s,p:()=>a});var r=n(31329);const i=JSON.parse('{"common":{"tooltip-sum":"Sum","tooltip-rest":"Rest"},"chartkit":{"error":"Error","legend-series-hide":"Hide all lines","legend-series-show":"Show all lines","tooltip-point-format-size":"Size","tooltip-sum":"Sum","tooltip-rest":"Rest","error-incorrect-key-value-intro":"Incorrect notation of an object passed to","error-incorrect-key":", object keys must be convertible to integer","error-incorrect-value":", object values must be a string or a function which returns a string"},"chartkit-table":{"message-no-data":"No data","paginator-rows":"Rows"},"chartkit-ymap-legend":{"label-more":"Show more {{count}}","label-hide":"Hide","label-heatmap":"Heatmap"},"error":{"label_no-data":"No data","label_unknown-plugin":"Unknown plugin type \\"{{type}}\\"","label_unknown-error":"Unknown error","label_invalid-axis-category-data-point":"It seems you are trying to use inappropriate data type for \\"{{key}}\\" value in series \\"{{seriesName}}\\" for axis with type \\"category\\". Strings and numbers are allowed.","label_invalid-axis-datetime-data-point":"It seems you are trying to use inappropriate data type for \\"{{key}}\\" value in series \\"{{seriesName}}\\" for axis with type \\"datetime\\". Only numbers are allowed.","label_invalid-axis-linear-data-point":"It seems you are trying to use inappropriate data type for \\"{{key}}\\" value in series \\"{{seriesName}}\\" for axis with type \\"linear\\". Numbers and nulls are allowed.","label_invalid-pie-data-value":"It seems you are trying to use inappropriate data type for \\"value\\" value. Only numbers are allowed.","label_invalid-series-type":"It seems you haven\'t defined \\"series.type\\" property, or defined it incorrectly. Available values: [{{types}}].","label_invalid-series-property":"It seems you are trying to use inappropriate value for \\"{{key}}\\", or defined it incorrectly. Available values: [{{values}}].","label_invalid-treemap-redundant-value":"It seems you are trying to set \\"value\\" for container node. Check node with this properties: { id: \\"{{id}}\\", name: \\"{{name}}\\" }","label_invalid-treemap-missing-value":"It seems you are trying to use node without \\"value\\". Check node with this properties: { id: \\"{{id}}\\", name: \\"{{name}}\\" }"},"highcharts":{"reset-zoom-title":"Reset zoom","decimal-point":".","thousands-sep":" ","Mon":"Mon","Tue":"Tue","Wed":"Wed","Thu":"Thu","Fri":"Fri","Sat":"Sat","Sun":"Sun","Jan":"Jan","January":"January","Feb":"Feb","February":"February","Mar":"Mar","March":"March","Apr":"Apr","April":"April","May":"May","Jun":"Jun","June":"June","Jul":"Jul","July":"July","Aug":"Aug","August":"August","Sep":"Sep","September":"September","Oct":"Oct","October":"October","Nov":"Nov","November":"November","Dec":"Dec","December":"December"}}'),o=JSON.parse('{"common":{"tooltip-sum":"\u0421\u0443\u043c\u043c\u0430","tooltip-rest":"\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435"},"chartkit":{"error":"\u041e\u0448\u0438\u0431\u043a\u0430","legend-series-hide":"\u0421\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u0435 \u043b\u0438\u043d\u0438\u0438","legend-series-show":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u043b\u0438\u043d\u0438\u0438","loading":"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430","tooltip-point-format-size":"\u0420\u0430\u0437\u043c\u0435\u0440","tooltip-sum":"\u0421\u0443\u043c\u043c\u0430","tooltip-rest":"\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435","error-incorrect-key-value-intro":"\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432","error-incorrect-key":", \u043a\u043b\u044e\u0447\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c\u044b \u0432 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e","error-incorrect-value":", \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e \u0441\u0442\u0440\u043e\u043a\u0430, \u043b\u0438\u0431\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0443"},"chartkit-table":{"message-no-data":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445","paginator-rows":"\u0421\u0442\u0440\u043e\u043a\u0438"},"chartkit-ymap-legend":{"label-more":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0449\u0451 {{count}}","label-hide":"\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c","label-heatmap":"\u0422\u0435\u043f\u043b\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430"},"error":{"label_no-data":"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445","label_unknown-plugin":"\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0442\u0438\u043f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \\"{{type}}\\"","label_unknown-error":"\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430","label_invalid-axis-category-data-point":"\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \\"{{key}}\\" \u0432 \u0441\u0435\u0440\u0438\u0438 \\"{{seriesName}}\\" \u0434\u043b\u044f \u043e\u0441\u0438 \u0441 \u0442\u0438\u043f\u043e\u043c \\"category\\". \u0414\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u0438 \u0447\u0438\u0441\u0435\u043b.","label_invalid-axis-datetime-data-point":"\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \\"{{key}}\\" \u0432 \u0441\u0435\u0440\u0438\u0438 \\"{{seriesName}}\\" \u0434\u043b\u044f \u043e\u0441\u0438 \u0441 \u0442\u0438\u043f\u043e\u043c \\"datetime\\". \u0414\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0438\u0441\u0435\u043b.","label_invalid-axis-linear-data-point":"\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \\"{{key}}\\" \u0432 \u0441\u0435\u0440\u0438\u0438 \\"{{seriesName}}\\" \u0434\u043b\u044f \u043e\u0441\u0438 \u0441 \u0442\u0438\u043f\u043e\u043c \\"linear\\". \u0414\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0438\u0441\u0435\u043b \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 null.","label_invalid-pie-data-value":"\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \\"value\\". \u0414\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0438\u0441\u0435\u043b.","label_invalid-series-type":"\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u0432\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \\"series.type\\" \u0438\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0435\u0433\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: [{{types}}].","label_invalid-series-property":"\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \\"{{key}}\\", \u0438\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0435\u0433\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: [{{values}}].","label_invalid-treemap-redundant-value":"\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \\"value\\" \u0434\u043b\u044f \u0443\u0437\u043b\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0443\u0437\u0435\u043b \u0441 \u044d\u0442\u0438\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438: { id: \\"{{id}}\\", name: \\"{{name}}\\" }","label_invalid-treemap-missing-value":"\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0437\u0435\u043b \u0431\u0435\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \\"value\\". \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0443\u0437\u0435\u043b \u0441 \u044d\u0442\u0438\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438: { id: \\"{{id}}\\", name: \\"{{name}}\\" }"},"highcharts":{"reset-zoom-title":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435","decimal-point":",","thousands-sep":" ","Mon":"\u041f\u043d","Tue":"\u0412\u0442","Wed":"\u0421\u0440","Thu":"\u0427\u0442","Fri":"\u041f\u0442","Sat":"\u0421\u0431","Sun":"\u0412\u0441","Jan":"\u042f\u043d\u0432","January":"\u042f\u043d\u0432\u0430\u0440\u044c","Feb":"\u0424\u0435\u0432","February":"\u0424\u0435\u0432\u0440\u0430\u043b\u044c","Mar":"\u041c\u0430\u0440","March":"\u041c\u0430\u0440\u0442","Apr":"\u0410\u043f\u0440","April":"\u0410\u043f\u0440\u0435\u043b\u044c","May":"\u041c\u0430\u0439","Jun":"\u0418\u044e\u043d","June":"\u0418\u044e\u043d\u044c","Jul":"\u0418\u044e\u043b","July":"\u0418\u044e\u043b\u044c","Aug":"\u0410\u0432\u0433","August":"\u0410\u0432\u0433\u0443\u0441\u0442","Sep":"\u0421\u0435\u043d","September":"\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c","Oct":"\u041e\u043a\u0442","October":"\u041e\u043a\u0442\u044f\u0431\u0440\u044c","Nov":"\u041d\u043e\u044f","November":"\u041d\u043e\u044f\u0431\u0440\u044c","Dec":"\u0414\u0435\u043a","December":"\u0414\u0435\u043a\u0430\u0431\u0440\u044c"}}'),a=new r.mb;a.registerKeysets("en",i),a.registerKeysets("ru",o);const s=a.i18n.bind(a)},30746:(e,t,n)=>{"use strict";n.d(t,{Dx:()=>i,Wn:()=>r});const r={NO_DATA:"ERR.CK.NO_DATA",INVALID_DATA:"ERR.CK.INVALID_DATA",UNKNOWN:"ERR.CK.UNKNOWN_ERROR",UNKNOWN_PLUGIN:"ERR.CK.UNKNOWN_PLUGIN",TOO_MANY_LINES:"ERR.CK.TOO_MANY_LINES"};class i extends Error{constructor(){let{originalError:e,message:t,code:n=r.UNKNOWN}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(t),this.isCustomError=!0,this.code=n,e&&(this.name=e.name,this.stack=e.stack)}}},8978:(e,t,n)=>{"use strict";n.d(t,{X:()=>f});var r=n(24205),i=n(63639),o=n.n(i),a=n(51804),s=n.n(a),l=n(66307);var c=n(95188),u=n.n(c);function d(e,t,n){if("plugins"===n){const n=[...e],r=[...t];let i=n.map((e=>{const t=r.findIndex((t=>{let{type:n}=t;return n===e.type}));if(-1!==t){const n=r[t];return r.splice(t,1),{type:e.type,renderer:n.renderer}}return e}));return r.length>0&&(i=[...i,...r]),i}return u()(e)?s()(e,t,d):t}const h=new class{constructor(){this.events={}}on(e,t){this.events[e]?this.events[e].push(t):this.events[e]=[t]}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter((e=>{let{id:n}=e;return n!==t})))}dispatch(e,t){this.events[e]&&this.events[e].forEach((e=>{let{action:n}=e;n(t)}))}},p=e=>{(0,r.jQ)({lang:e}),l.p.setLang(e)};const f=new class{constructor(){this.settings={plugins:[],lang:"en"},p(this.get("lang"))}get(e){return o()(this.settings,e)}set(e){const t=(n=e,Object.entries(n).reduce(((e,t)=>{let[n,r]=t;return"undefined"!==typeof r&&(e[n]=r),e}),{}));var n;if(this.settings=s()(this.settings,t,d),t.lang){const e=t.lang||this.get("lang");p(e),h.dispatch("change-lang",e)}}}},66857:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.STRICT=void 0,t.STRICT=!0},85688:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_SYSTEM_DATE_FORMAT=void 0,t.DEFAULT_SYSTEM_DATE_FORMAT="YYYY-MM-DD"},20843:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n(66857),t),i(n(85688),t),i(n(38346),t)},38346:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UtcTimeZone=void 0,t.UtcTimeZone="UTC"},79376:function(e,t,n){"use strict";var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},r.apply(this,arguments)},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.dateTimeUtc=t.dateTime=t.isDateTime=void 0;var o=n(20843),a=i(n(4796)),s=n(98507),l=n(14783),c=n(87116),u=n(59318),d=Symbol("isDateTime"),h=function(){function e(e){this[d]=!0,this._timestamp=e.ts,this._locale=e.locale,this._timeZone=e.timeZone,this._offset=e.offset,this._date=e.date}return e.isDateTime=function(e){return"object"===typeof e&&e&&d in e&&!0===e[d]||!1},e.prototype.format=function(e){return this._date.format(e)},e.prototype.toISOString=function(e){return e?this._date.format("YYYY-MM-DDTHH:mm:ss.SSSZ"):this._date.toISOString()},e.prototype.utcOffset=function(e,t){var n=void 0!==e&&null!==e;if(!this.isValid())return n?this:NaN;if(n){var r=void 0;if("string"===typeof e){if(null===(r=(0,u.offsetFromString)(e)))return this}else r=Math.abs(e)<16?60*e:e;var i=this.valueOf();return t&&(i-=60*(r-this._offset)*1e3),f({ts:i,timeZone:o.UtcTimeZone,offset:r,locale:this._locale})}return this._offset},e.prototype.timeZone=function(e,t){var n;if(void 0===e)return"system"===this._timeZone?(0,c.guessUserTimeZone)():this._timeZone;var r=(0,c.normalizeTimeZone)(e,l.settings.getDefaultTimeZone()),i=this.valueOf(),o=(0,c.timeZoneOffset)(r,i);return t&&(i+=60*this._offset*1e3,i=(n=(0,c.fixOffset)(i,o,r))[0],o=n[1]),f({ts:i,timeZone:r,offset:o,locale:this._locale})},e.prototype.add=function(e,t){return this.addSubtract(e,t,1)},e.prototype.subtract=function(e,t){return this.addSubtract(e,t,-1)},e.prototype.startOf=function(e){if(!this.isValid())return this;var t={},n=(0,u.normalizeComponent)(e);switch(n){case"year":case"quarter":t.month="quarter"===n?this.month()-this.month()%3:0;case"month":case"weekNumber":case"isoWeekNumber":t.date="weekNumber"===n?this.date()-this.weekday():"isoWeekNumber"===n?this.date()-(this.isoWeekday()-1):1;case"day":case"date":case"isoWeekday":t.hour=0;case"hour":t.minute=0;case"minute":t.second=0;case"second":t.millisecond=0}return this.set(t)},e.prototype.endOf=function(e){var t;if(!this.isValid())return this;var n={},r=(0,u.normalizeComponent)(e);switch(r){case"year":case"quarter":n.month="quarter"===r?this.month()-this.month()%3+2:11;case"month":case"weekNumber":case"isoWeekNumber":n.date="weekNumber"===r?this.date()-this.weekday()+6:"isoWeekNumber"===r?this.date()-(this.isoWeekday()-1)+6:(0,u.daysInMonth)(this.year(),null!==(t=n.month)&&void 0!==t?t:this.month());case"day":case"date":case"isoWeekday":n.hour=23;case"hour":n.minute=59;case"minute":n.second=59;case"second":n.millisecond=999}return this.set(n)},e.prototype.local=function(e){return this.timeZone("system",e)},e.prototype.valueOf=function(){return this._timestamp},e.prototype.isSame=function(e,t){var n=m(e);return!(!this.isValid()||isNaN(n))&&(!this.isBefore(n,t)&&!this.isAfter(n,t))},e.prototype.isBefore=function(e,t){var n=m(e);if(!this.isValid()||isNaN(n))return!1;var r=(0,u.normalizeComponent)(null!==t&&void 0!==t?t:"millisecond");return("millisecond"===r?this.valueOf():this.endOf(r).valueOf())<n},e.prototype.isAfter=function(e,t){var n=m(e);if(!this.isValid()||isNaN(n))return!1;var r=(0,u.normalizeComponent)(null!==t&&void 0!==t?t:"millisecond");return("millisecond"===r?this.valueOf():this.startOf(r).valueOf())>n},e.prototype.isValid=function(){return this._date.isValid()},e.prototype.diff=function(t,n,r){var i=e.isDateTime(t)?t.valueOf():t;return this._date.diff(i,n,r)},e.prototype.fromNow=function(e){return this._date.fromNow(e)},e.prototype.from=function(t,n){var r=e.isDateTime(t)?t.valueOf():t;return this._date.from(r,n)},e.prototype.locale=function(e){return e?f({ts:this.valueOf(),timeZone:this._timeZone,offset:this._offset,locale:a.default.locale(e,void 0,!0)}):this._locale},e.prototype.toDate=function(){return new Date(this.valueOf())},e.prototype.unix=function(){return Math.floor(this.valueOf()/1e3)},e.prototype.utc=function(e){return this.timeZone(o.UtcTimeZone,e)},e.prototype.daysInMonth=function(){return this._date.daysInMonth()},e.prototype.set=function(e,t){var n,i,s,l=(0,u.tsToObject)(this._timestamp,this._offset),d=(0,u.normalizeDateComponents)("object"===typeof e?e:((n={})[e]=t,n),u.normalizeComponent),h=void 0!==d.weekNumber||void 0!==d.day||void 0!==d.isoWeekNumber||void 0!==d.isoWeekday,p=void 0!==d.year||void 0!==d.month||void 0!==d.date;if(h&&p)throw new Error("Can't mix weekYear/weekNumber units with year/month/day");if(h){for(var m=a.default.utc((0,u.objToTS)(r(r({},l),d))),g={weekNumber:"week",day:"day",isoWeekNumber:"isoWeek",isoWeekday:"isoWeekday"},v=0,y=["weekNumber","day","isoWeekNumber","isoWeekday"];v<y.length;v++){var b=y[v],x=d[b];void 0!==x&&(m=m[g[b]](x))}s=(0,u.tsToObject)(m.valueOf(),0)}else s=r(r({},l),d),void 0===d.date&&(s.date=Math.min((0,u.daysInMonth)(s.year,s.month),s.date));var w=(0,u.objToTS)(s),S=this._offset;return this._timeZone===o.UtcTimeZone?w-=60*S*1e3:(w=(i=(0,c.fixOffset)(w,S,this._timeZone))[0],S=i[1]),f({ts:w,timeZone:this._timeZone,offset:S,locale:this._locale})},e.prototype.date=function(e){return"number"===typeof e?this.set("date",e):this._date.date()},e.prototype.month=function(e){return"number"===typeof e?this.set("month",e):this._date.month()},e.prototype.quarter=function(e){return"number"===typeof e?this.set("quarter",e):this._date.quarter()},e.prototype.year=function(e){return"number"===typeof e?this.set("year",e):this._date.year()},e.prototype.day=function(e){return"number"===typeof e?this.set("day",e):this._date.day()},e.prototype.isoWeekday=function(e){return void 0===e?this._date.isoWeekday():this.day(this.day()%7?e:e-7)},e.prototype.hour=function(e){return"number"===typeof e?this.set("hour",e):this._date.hour()},e.prototype.minute=function(e){return"number"===typeof e?this.set("minute",e):this._date.minute()},e.prototype.second=function(e){return"number"===typeof e?this.set("second",e):this._date.second()},e.prototype.millisecond=function(e){return"number"===typeof e?this.set("millisecond",e):this._date.millisecond()},e.prototype.week=function(e){return"number"===typeof e?this.set("week",e):this._date.week()},e.prototype.isoWeek=function(e){return"number"===typeof e?this.set("isoWeek",e):this._date.isoWeek()},e.prototype.weekday=function(){var e=this._date.$locale().weekStart||0,t=this.day();return(t<e?t+7:t)-e},e.prototype.toString=function(){return this._date.toString()},e.prototype.addSubtract=function(e,t,n){var i;if(!this.isValid())return this;var a=this._timeZone,l=this.valueOf(),d=this._offset,h=(0,s.duration)(e,t),m=(0,u.tsToObject)(l,d),g=p(h.months()+3*h.quarters()+12*h.years()),v=p(h.days()+7*h.weeks()),y=h.milliseconds()+1e3*h.seconds()+60*h.minutes()*1e3+60*h.hours()*60*1e3;if(g||v){var b=m.month+n*g,x=Math.min(m.date,(0,u.daysInMonth)(m.year,b))+n*v;l=(0,u.objToTS)(r(r({},m),{month:b,date:x})),a===o.UtcTimeZone?l-=60*d*1e3:(l=(i=(0,c.fixOffset)(l,d,a))[0],d=i[1])}return y&&(l+=n*y,a!==o.UtcTimeZone&&(d=(0,c.timeZoneOffset)(a,l))),f({ts:l,timeZone:a,offset:d,locale:this._locale})},e}();function p(e){var t=e<0?-1:1;return Math.round(t*e)*t}function f(e){var t,n,r=e.ts,i=e.timeZone,o=e.offset,s=e.locale;if("system"===i)n=(0,a.default)(r,{locale:s});else{var l=(0,c.timeZoneOffset)("system",r),u=r;0!==o&&l!==o&&(u+=60*o*1e3,u=(t=(0,c.fixOffset)(u,l,"system"))[0],l=t[1]),n=(0,a.default)(u,{locale:s,utc:0===o,$offset:o||void 0,x:{$timezone:i,$localOffset:-l}})}return new h({ts:r,timeZone:i,offset:o,locale:s,date:n})}function m(e,t,n){var r,i=a.default.locale(n||l.settings.getLocale(),void 0,!0);h.isDateTime(e)||"number"===typeof e||e instanceof Date?r=Number(e):r=(t?(0,a.default)(e,t,i,o.STRICT):(0,a.default)(e,void 0,i)).valueOf();return r}t.isDateTime=function(e){return h.isDateTime(e)},t.dateTime=function(e){var t=e||{},n=t.input,r=t.format,i=t.timeZone,o=t.lang,s=(0,c.normalizeTimeZone)(i,l.settings.getDefaultTimeZone()),u=a.default.locale(o||l.settings.getLocale(),void 0,!0),d=m(n,r,o);return f({ts:d,timeZone:s,offset:(0,c.timeZoneOffset)(s,d),locale:u})},t.dateTimeUtc=function(e){var t=e||{},n=t.input,r=t.format,i=t.lang,s=a.default.locale(i||l.settings.getLocale(),void 0,!0);return f({ts:h.isDateTime(n)||"number"===typeof n||n instanceof Date?Number(n):a.default.utc(n,r,o.STRICT).valueOf(),timeZone:o.UtcTimeZone,offset:0,locale:s})}},18916:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n(79376),t)},43104:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseDateMath=t.parse=t.isLikeRelative=void 0;var r=n(18916),i=["y","Q","M","w","d","h","m","s"];function o(e,t,n){for(var r=e.replace(/\s/g,""),o=t,a=0,s=r.length;a<s;){var l=r.charAt(a++),c=void 0,u=void 0;if("/"===l)c=0;else if("+"===l)c=1;else{if("-"!==l)return;c=2}if(isNaN(parseInt(r.charAt(a),10)))u=1;else if(2===r.length)u=parseInt(r.charAt(a),10);else{for(var d=a;!isNaN(parseInt(r.charAt(a),10));)if(++a>10)return;u=parseInt(r.substring(d,a),10)}if(0===c&&1!==u)return;var h=r.charAt(a++);if(!i.includes(h))return;0===c?o=n?o.endOf(h):o.startOf(h):1===c?o=o.add(u,h):2===c&&(o=o.subtract(u,h))}return o}t.isLikeRelative=function(e){return e.startsWith("now")},t.parse=function(e,t){if(void 0===t&&(t={}),e){var n,i,a,s=t.roundUp,l=t.timeZone,c="";if("now"===e.substring(0,3)?(n=(0,r.dateTime)({timeZone:l}),c=e.substring("now".length)):(-1===(i=e.indexOf("||"))?(a=e,c=""):(a=e.substring(0,i),c=e.substring(i+2)),n=(0,r.dateTime)({input:a,timeZone:l})),n.isValid())return c.length?o(c,n,s):n}},t.parseDateMath=o},97553:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n(43104),t)},4796:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(22877)),o=r(n(46770)),a=r(n(9817)),s=r(n(52703)),l=r(n(46635)),c=r(n(13708)),u=r(n(93876)),d=r(n(87134)),h=r(n(72209)),p=r(n(85226)),f=r(n(1035)),m=r(n(54591)),g=r(n(8901));i.default.extend(a.default),i.default.extend(s.default),i.default.extend(g.default),i.default.extend(l.default),i.default.extend(d.default),i.default.extend(h.default),i.default.extend(c.default),i.default.extend(o.default),i.default.extend(m.default),i.default.extend(p.default),i.default.extend(f.default),i.default.extend(u.default),t.default=i.default},48132:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createDuration=void 0;var r=n(39232),i=n(46808),o=n(90390),a=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]+)?)?S)?)?$/;function s(e){var t=e?parseFloat(e.replace(",",".")):0;return isNaN(t)?0:t}t.createDuration=function(e,t,n){void 0===n&&(n={});var l={},c=null,u=(t&&"object"===typeof t?t:n).lang,d="string"===typeof t?t:"milliseconds";if((0,i.isDuration)(e))return e;if(isNaN(Number(e)))if("string"===typeof e&&(c=a.exec(e))){var h="-"===c[1]?-1:1,p=c[8]&&"-"===c[8][0]?-1:1;l=(0,o.removeZeros)({y:s(c[2])*h,M:s(c[3])*h,w:s(c[4])*h,d:s(c[5])*h,h:s(c[6])*h,m:s(c[7])*h,s:s(c[8])*h,ms:Math.floor(1e3*s(c[9]?"0.".concat(c[9]):c[9]))*p*h})}else{if(!e||"object"!==typeof e)throw new Error("Unknown duration: ".concat(e));l=e}else l[d]=Number(e);return new i.DurationImpl({values:(0,r.normalizeDateComponents)(l,r.normalizeDurationUnit),locale:u})}},46808:function(e,t,n){"use strict";var r,i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},i.apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.isDuration=t.DurationImpl=void 0;var o=n(18916),a=n(14783),s=n(59318),l=n(55353),c=n(48132),u=n(90390),d=Symbol("isDuration"),h=function(){function e(e){this[r]=!0,this._values=e.values,this._locale=e.locale||a.settings.getLocale(),this._isValid=e.isValid||!0}return e.isDuration=function(e){return"object"===typeof e&&e&&d in e&&!0===e[d]||!1},e.prototype.get=function(e){if(!this.isValid())return NaN;var t=(0,s.normalizeDurationUnit)(e);return this._values[t]||0},e.prototype.set=function(t){return this.isValid()?new e({values:i(i({},this._values),(0,s.normalizeDateComponents)(t,s.normalizeDurationUnit)),locale:this._locale}):this},e.prototype.as=function(e){if(!this.isValid())return NaN;var t=(0,s.normalizeDurationUnit)(e),n=this.days()+7*this.weeks()+this.hours()/24+this.minutes()/1440+this.seconds()/86400,r=this.months()+3*this.quarters()+12*this.years(),i=this.milliseconds();if("months"===t||"quarters"===t||"years"===t){var o=r+function(e){return 4800*e/146097}(n+i/864e5);switch(t){case"months":return o;case"quarters":return o/3;case"years":return o/12}}var a=n+function(e){return 146097*e/4800}(r);switch(t){case"weeks":return a/7+i/6048e5;case"days":return a+i/864e5;case"hours":return 24*a+i/36e5;case"minutes":return 1440*a+i/6e4;case"seconds":return 86400*a+i/1e3;case"milliseconds":return Math.floor(864e5*a)+i;default:throw new Error("Unknown unit "+t)}},e.prototype.milliseconds=function(){return this.isValid()?this._values.milliseconds||0:NaN},e.prototype.asMilliseconds=function(){return this.as("milliseconds")},e.prototype.seconds=function(){return this.isValid()?this._values.seconds||0:NaN},e.prototype.asSeconds=function(){return this.as("seconds")},e.prototype.minutes=function(){return this.isValid()?this._values.minutes||0:NaN},e.prototype.asMinutes=function(){return this.as("minutes")},e.prototype.hours=function(){return this.isValid()?this._values.hours||0:NaN},e.prototype.asHours=function(){return this.as("hours")},e.prototype.days=function(){return this.isValid()?this._values.days||0:NaN},e.prototype.asDays=function(){return this.as("days")},e.prototype.weeks=function(){return this.isValid()?this._values.weeks||0:NaN},e.prototype.asWeeks=function(){return this.as("weeks")},e.prototype.months=function(){return this.isValid()?this._values.months||0:NaN},e.prototype.asMonths=function(){return this.as("months")},e.prototype.quarters=function(){return this.isValid()?this._values.quarters||0:NaN},e.prototype.asQuarters=function(){return this.as("quarters")},e.prototype.years=function(){return this.isValid()?this._values.years||0:NaN},e.prototype.asYears=function(){return this.as("years")},e.prototype.add=function(t,n){if(!this.isValid())return this;for(var r=this.toObject(),i=(0,c.createDuration)(t,n).toObject(),o=0,a=Object.entries(i);o<a.length;o++){var s=a[o],l=s[0],u=s[1],d=l;r[d]=(r[d]||0)+u}return new e({values:r,locale:this._locale})},e.prototype.subtract=function(e,t){var n=(0,c.createDuration)(e,t).negate();return this.add(n)},e.prototype.negate=function(){for(var t={},n=0,r=Object.entries(this._values);n<r.length;n++){var i=r[n],o=i[0],a=i[1];t[o]=a?-a:0}return new e({values:t,locale:this._locale})},e.prototype.normalize=function(t){return this.isValid()?new e({values:(0,u.normalizeValues)(this._values,t),locale:this._locale}):this},e.prototype.shiftTo=function(t,n){if(!this.isValid())return this;var r=t.map((function(e){return(0,s.normalizeDurationUnit)(e)}));return new e({values:(0,u.shiftTo)(this._values,r,n),locale:this._locale})},e.prototype.rescale=function(t){return this.isValid()?new e({values:(0,u.rescale)(this._values,t),locale:this._locale}):this},e.prototype.toISOString=function(){if(!this.isValid())return"Invalid Duration";var e="P";return 0!==this.years()&&(e+=this.years()+"Y"),0===this.months()&&0===this.quarters()||(e+=this.months()+3*this.quarters()+"M"),0!==this.weeks()&&(e+=this.weeks()+"W"),0!==this.days()&&(e+=this.days()+"D"),0===this.hours()&&0===this.minutes()&&0===this.seconds()&&0===this.milliseconds()||(e+="T"),0!==this.hours()&&(e+=this.hours()+"H"),0!==this.minutes()&&(e+=this.minutes()+"M"),0===this.seconds()&&0===this.milliseconds()||(e+=Math.round(1e3*this.seconds()+this.milliseconds())/1e3+"S"),"P"===e&&(e+="T0S"),e},e.prototype.toJSON=function(){return this.toISOString()},e.prototype.toObject=function(){return this.isValid()?i({},this._values):{}},e.prototype.toString=function(){return this.toISOString()},e.prototype.valueOf=function(){return this.asMilliseconds()},e.prototype[(r=d,Symbol.for("nodejs.util.inspect.custom"))]=function(){return this.isValid()?"Duration { values: ".concat(JSON.stringify(this._values)," }"):"Duration { Invalid Duration }"},e.prototype.humanize=function(e){if(!this.isValid())return"Invalid Duration";var t=(0,o.dateTimeUtc)({lang:this._locale});return t.add(this.valueOf(),"ms").from(t,!e)},e.prototype.humanizeIntl=function(e){var t=this;if(void 0===e&&(e={}),!this.isValid())return"Invalid Duration";var n=u.orderedUnits.map((function(n){var r=t._values[n];return void 0===r?null:(0,l.getNumberFormat)(t._locale,i(i({style:"unit",unitDisplay:"long"},e),{unit:n.slice(0,-1)})).format(r)})).filter(Boolean);return(0,l.getListFormat)(this._locale,{type:"conjunction",style:e.listStyle||"narrow"}).format(n)},e.prototype.isValid=function(){return this._isValid},e.prototype.locale=function(t){return t?new e({values:this._values,locale:t}):this._locale},e}();t.DurationImpl=h,t.isDuration=function(e){return h.isDuration(e)}},98507:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isDuration=t.duration=void 0;var r=n(48132);Object.defineProperty(t,"duration",{enumerable:!0,get:function(){return r.createDuration}});var i=n(46808);Object.defineProperty(t,"isDuration",{enumerable:!0,get:function(){return i.isDuration}})},90390:function(e,t){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},n.apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.rescale=t.shiftTo=t.removeZeros=t.normalizeValues=t.orderedUnits=void 0;var r=365.2425,i=30.436875,o=n({years:{quarters:4,months:12,weeks:52.1775,days:r,hours:8765.82,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:4.3481250000000005,days:i,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3}},{weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}});t.orderedUnits=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"];var a=t.orderedUnits.slice(0).reverse();function s(e,r){for(var i,s,l,c,u,d,h,p=(void 0===r?{}:r).roundUp,f=n({},e),m=function(e){for(var t,n=null!==(t=e.milliseconds)&&void 0!==t?t:0,r=0,i=a.slice(1);r<i.length;r++){var s=i[r],l=e[s];l&&(n+=l*o[s].milliseconds)}return n}(e)<0?-1:1,g=null,v=0;v<a.length;v++){if(void 0!==f[w=a[v]]&&null!==f[w])if(g){var y=(null!==(i=f[g])&&void 0!==i?i:0)*m,b=o[w][g],x=Math.floor(y/b);f[w]=(null!==(s=f[w])&&void 0!==s?s:0)+x*m,f[g]=(null!==(l=f[g])&&void 0!==l?l:0)-x*b*m,g=w}else g=w}g=null;for(v=0;v<t.orderedUnits.length;v++){var w;if(void 0!==f[w=t.orderedUnits[v]]&&null!==f[w])if(g){var S=(null!==(c=f[g])&&void 0!==c?c:0)%1;f[g]=(null!==(u=f[g])&&void 0!==u?u:0)-S,f[w]=(null!==(d=f[w])&&void 0!==d?d:0)+S*o[g][w],g=w}else g=w}return p&&g&&f[g]&&(f[g]=Math.round(null!==(h=f[g])&&void 0!==h?h:0)),f}function l(e){for(var t={},n=0,r=Object.entries(e);n<r.length;n++){var i=r[n],o=i[0],a=i[1];0!==a&&(t[o]=a)}return t}function c(e,n,r){var i;if(!n.length)return e;for(var a,l={},c={},u=0,d=t.orderedUnits;u<d.length;u++){var h=d[u];if(n.includes(h)){a=h;for(var p=0,f=0,m=Object.keys(c);f<m.length;f++){var g=m[f];p+=o[g][h]*c[g],c[g]=0}var v=e[h];v&&(p+=v);var y=Math.trunc(p);l[h]=y,c[h]=(1e3*p-1e3*y)/1e3}else e[h]&&(c[h]=e[h])}for(var b=0,x=Object.entries(c);b<x.length;b++){var w=x[b],S=w[0],_=w[1];0!==_&&(l[a]=(null!==(i=l[a])&&void 0!==i?i:0)+(S===a?_:_/o[a][S]))}return s(l,r)}t.normalizeValues=s,t.removeZeros=l,t.shiftTo=c,t.rescale=function(e,t){return l(c(s(e),["years","months","weeks","days","hours","minutes","seconds","milliseconds"],t))}},396:(e,t,n)=>{"use strict";t.J=t.CQ=void 0,n(14783).settings;var r=n(18916);Object.defineProperty(t,"CQ",{enumerable:!0,get:function(){return r.dateTime}});var i=n(97553);var o=n(77757);Object.defineProperty(t,"J",{enumerable:!0,get:function(){return o.dateTimeParse}});var a=n(87116);var s=n(20843);var l=n(98507)},77757:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n(4093),t)},4093:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isValid=t.dateTimeParse=t.isLikeRelative=void 0;var r=n(18916),i=n(14783);function o(e){return"string"===typeof e&&i.settings.getRelativeParser().isLikeRelative(e)}t.isLikeRelative=o;t.dateTimeParse=function(e,t){if(e){var n=function(e,t){var n;if(o(e)){if(null!==(n=null===t||void 0===t?void 0:t.allowRelative)&&void 0!==n&&!n)return;return i.settings.getRelativeParser().parse(e,t)}var a=t||{},s=a.format,l=a.lang,c=(0,r.dateTime)({input:e,format:s,lang:l,timeZone:null===t||void 0===t?void 0:t.timeZone});return c.isValid()?c:void 0}(e,t);return n}},t.isValid=function(e){if((0,r.isDateTime)(e))return e.isValid();var n=(0,t.dateTimeParse)(e,{allowRelative:!0});return!!n&&n.isValid()}},14783:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n(82936),t)},24033:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.localeLoaders=void 0,t.localeLoaders={af:function(){return n.e(6392).then(n.t.bind(n,80246,23))},am:function(){return n.e(4618).then(n.t.bind(n,24618,23))},"ar-dz":function(){return n.e(704).then(n.t.bind(n,704,23))},"ar-iq":function(){return n.e(515).then(n.t.bind(n,60515,23))},"ar-kw":function(){return n.e(8858).then(n.t.bind(n,48858,23))},"ar-ly":function(){return n.e(6887).then(n.t.bind(n,96887,23))},"ar-ma":function(){return n.e(4848).then(n.t.bind(n,94848,23))},"ar-sa":function(){return n.e(4198).then(n.t.bind(n,34198,23))},"ar-tn":function(){return n.e(620).then(n.t.bind(n,20620,23))},ar:function(){return n.e(9204).then(n.t.bind(n,89204,23))},az:function(){return n.e(1736).then(n.t.bind(n,11736,23))},be:function(){return n.e(8747).then(n.t.bind(n,38747,23))},bg:function(){return n.e(1528).then(n.t.bind(n,31528,23))},bi:function(){return n.e(6877).then(n.t.bind(n,36877,23))},bm:function(){return n.e(4814).then(n.t.bind(n,34814,23))},"bn-bd":function(){return n.e(202).then(n.t.bind(n,10202,23))},bn:function(){return n.e(9280).then(n.t.bind(n,9280,23))},bo:function(){return n.e(5863).then(n.t.bind(n,65863,23))},br:function(){return n.e(6058).then(n.t.bind(n,46058,23))},bs:function(){return n.e(632).then(n.t.bind(n,70632,23))},ca:function(){return n.e(7202).then(n.t.bind(n,47202,23))},cs:function(){return n.e(7999).then(n.t.bind(n,47999,23))},cv:function(){return n.e(2367).then(n.t.bind(n,52367,23))},cy:function(){return n.e(5373).then(n.t.bind(n,45373,23))},da:function(){return n.e(6393).then(n.t.bind(n,66393,23))},"de-at":function(){return n.e(5448).then(n.t.bind(n,45448,23))},"de-ch":function(){return n.e(6679).then(n.t.bind(n,96679,23))},de:function(){return n.e(4132).then(n.t.bind(n,84132,23))},dv:function(){return n.e(9219).then(n.t.bind(n,29219,23))},el:function(){return n.e(556).then(n.t.bind(n,20556,23))},"en-au":function(){return n.e(8850).then(n.t.bind(n,98850,23))},"en-ca":function(){return n.e(9297).then(n.t.bind(n,29297,23))},"en-gb":function(){return n.e(3630).then(n.t.bind(n,63630,23))},"en-ie":function(){return n.e(3231).then(n.t.bind(n,83231,23))},"en-il":function(){return n.e(6815).then(n.t.bind(n,6815,23))},"en-in":function(){return n.e(2620).then(n.t.bind(n,12620,23))},"en-nz":function(){return n.e(6961).then(n.t.bind(n,96961,23))},"en-sg":function(){return n.e(7257).then(n.t.bind(n,7257,23))},"en-tt":function(){return n.e(8702).then(n.t.bind(n,58702,23))},en:function(){return n.e(3304).then(n.t.bind(n,73304,23))},eo:function(){return n.e(1508).then(n.t.bind(n,11508,23))},"es-do":function(){return n.e(3271).then(n.t.bind(n,53271,23))},"es-mx":function(){return n.e(30).then(n.t.bind(n,50030,23))},"es-pr":function(){return n.e(5117).then(n.t.bind(n,85117,23))},"es-us":function(){return n.e(5387).then(n.t.bind(n,95387,23))},es:function(){return n.e(5670).then(n.t.bind(n,5670,23))},et:function(){return n.e(7388).then(n.t.bind(n,27388,23))},eu:function(){return n.e(3333).then(n.t.bind(n,3333,23))},fa:function(){return n.e(1278).then(n.t.bind(n,61278,23))},fi:function(){return n.e(178).then(n.t.bind(n,10178,23))},fo:function(){return n.e(6892).then(n.t.bind(n,46892,23))},"fr-ca":function(){return n.e(2229).then(n.t.bind(n,62229,23))},"fr-ch":function(){return n.e(4326).then(n.t.bind(n,94326,23))},fr:function(){return n.e(7276).then(n.t.bind(n,97276,23))},fy:function(){return n.e(7803).then(n.t.bind(n,67803,23))},ga:function(){return n.e(5720).then(n.t.bind(n,85720,23))},gd:function(){return n.e(6954).then(n.t.bind(n,6954,23))},gl:function(){return n.e(9413).then(n.t.bind(n,19413,23))},"gom-latn":function(){return n.e(3945).then(n.t.bind(n,53945,23))},gu:function(){return n.e(2981).then(n.t.bind(n,72981,23))},he:function(){return n.e(1150).then(n.t.bind(n,11150,23))},hi:function(){return n.e(3926).then(n.t.bind(n,3926,23))},hr:function(){return n.e(5643).then(n.t.bind(n,45643,23))},ht:function(){return n.e(5161).then(n.t.bind(n,25161,23))},hu:function(){return n.e(2238).then(n.t.bind(n,42238,23))},"hy-am":function(){return n.e(8133).then(n.t.bind(n,18133,23))},id:function(){return n.e(4949).then(n.t.bind(n,84949,23))},is:function(){return n.e(383).then(n.t.bind(n,20383,23))},"it-ch":function(){return n.e(2701).then(n.t.bind(n,32701,23))},it:function(){return n.e(3645).then(n.t.bind(n,73645,23))},ja:function(){return n.e(2677).then(n.t.bind(n,92677,23))},jv:function(){return n.e(2477).then(n.t.bind(n,22477,23))},ka:function(){return n.e(5399).then(n.t.bind(n,45399,23))},kk:function(){return n.e(4985).then(n.t.bind(n,34985,23))},km:function(){return n.e(674).then(n.t.bind(n,10674,23))},kn:function(){return n.e(9207).then(n.t.bind(n,89207,23))},ko:function(){return n.e(7779).then(n.t.bind(n,77779,23))},ku:function(){return n.e(1148).then(n.t.bind(n,61148,23))},ky:function(){return n.e(8011).then(n.t.bind(n,8011,23))},lb:function(){return n.e(96).then(n.t.bind(n,80096,23))},lo:function(){return n.e(8167).then(n.t.bind(n,68167,23))},lt:function(){return n.e(4347).then(n.t.bind(n,64347,23))},lv:function(){return n.e(2223).then(n.t.bind(n,62223,23))},me:function(){return n.e(2033).then(n.t.bind(n,2033,23))},mi:function(){return n.e(8695).then(n.t.bind(n,68695,23))},mk:function(){return n.e(8140).then(n.t.bind(n,18140,23))},ml:function(){return n.e(6227).then(n.t.bind(n,36227,23))},mn:function(){return n.e(148).then(n.t.bind(n,50148,23))},mr:function(){return n.e(9572).then(n.t.bind(n,59572,23))},"ms-my":function(){return n.e(1179).then(n.t.bind(n,81179,23))},ms:function(){return n.e(1746).then(n.t.bind(n,81746,23))},mt:function(){return n.e(3466).then(n.t.bind(n,33466,23))},my:function(){return n.e(4684).then(n.t.bind(n,44684,23))},nb:function(){return n.e(5226).then(n.t.bind(n,45226,23))},ne:function(){return n.e(115).then(n.t.bind(n,50115,23))},"nl-be":function(){return n.e(4964).then(n.t.bind(n,14964,23))},nl:function(){return n.e(1869).then(n.t.bind(n,11869,23))},nn:function(){return n.e(9917).then(n.t.bind(n,59917,23))},"oc-lnc":function(){return n.e(163).then(n.t.bind(n,51343,23))},"pa-in":function(){return n.e(3025).then(n.t.bind(n,73025,23))},pl:function(){return n.e(6156).then(n.t.bind(n,26156,23))},"pt-br":function(){return n.e(6361).then(n.t.bind(n,56361,23))},pt:function(){return n.e(4663).then(n.t.bind(n,74663,23))},rn:function(){return n.e(7992).then(n.t.bind(n,17992,23))},ro:function(){return n.e(3756).then(n.t.bind(n,83756,23))},ru:function(){return n.e(678).then(n.t.bind(n,40678,23))},rw:function(){return n.e(436).then(n.t.bind(n,75643,23))},sd:function(){return n.e(5112).then(n.t.bind(n,5112,23))},se:function(){return n.e(9555).then(n.t.bind(n,49555,23))},si:function(){return n.e(5809).then(n.t.bind(n,25809,23))},sk:function(){return n.e(5450).then(n.t.bind(n,95450,23))},sl:function(){return n.e(5491).then(n.t.bind(n,75491,23))},sq:function(){return n.e(8591).then(n.t.bind(n,98591,23))},"sr-cyrl":function(){return n.e(7016).then(n.t.bind(n,77016,23))},sr:function(){return n.e(9308).then(n.t.bind(n,69308,23))},ss:function(){return n.e(9411).then(n.t.bind(n,99411,23))},"sv-fi":function(){return n.e(6521).then(n.t.bind(n,86521,23))},sv:function(){return n.e(4159).then(n.t.bind(n,14159,23))},sw:function(){return n.e(9528).then(n.t.bind(n,99528,23))},ta:function(){return n.e(4826).then(n.t.bind(n,14826,23))},te:function(){return n.e(5352).then(n.t.bind(n,45352,23))},tet:function(){return n.e(9292).then(n.t.bind(n,49292,23))},tg:function(){return n.e(7684).then(n.t.bind(n,77684,23))},th:function(){return n.e(9212).then(n.t.bind(n,89212,23))},tk:function(){return n.e(6065).then(n.t.bind(n,16065,23))},"tl-ph":function(){return n.e(5341).then(n.t.bind(n,45341,23))},tlh:function(){return n.e(4583).then(n.t.bind(n,4583,23))},tr:function(){return n.e(3920).then(n.t.bind(n,33920,23))},tzl:function(){return n.e(7119).then(n.t.bind(n,97119,23))},"tzm-latn":function(){return n.e(6144).then(n.t.bind(n,36144,23))},tzm:function(){return n.e(1350).then(n.t.bind(n,31350,23))},"ug-cn":function(){return n.e(2590).then(n.t.bind(n,92590,23))},uk:function(){return n.e(6291).then(n.t.bind(n,26291,23))},ur:function(){return n.e(3397).then(n.t.bind(n,53397,23))},"uz-latn":function(){return n.e(1168).then(n.t.bind(n,51168,23))},uz:function(){return n.e(8853).then(n.t.bind(n,8853,23))},vi:function(){return n.e(4535).then(n.t.bind(n,44535,23))},"x-pseudo":function(){return n.e(9101).then(n.t.bind(n,79101,23))},yo:function(){return n.e(2986).then(n.t.bind(n,42986,23))},"zh-cn":function(){return n.e(4080).then(n.t.bind(n,4080,23))},"zh-hk":function(){return n.e(3898).then(n.t.bind(n,73898,23))},"zh-tw":function(){return n.e(1616).then(n.t.bind(n,33739,23))},zh:function(){return n.e(7522).then(n.t.bind(n,87522,23))}}},82936:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{l(r.next(e))}catch(t){o(t)}}function s(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"===typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(l){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(a=0)),a;)try{if(n=1,r&&(i=2&s[0]?r.return:s[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,s[1])).done)return i;switch(r=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){a.label=s[1];break}if(6===s[0]&&a.label<i[1]){a.label=i[1],i=s;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(s);break}i[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(l){s=[6,l],r=0}finally{n=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,l])}}},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.settings=void 0;var a=o(n(63585)),s=n(97553),l=o(n(4796)),c=n(87116),u=n(24033),d=function(){function e(){this.loadedLocales=new Set(["en"]),this.defaultLocale="en",this.defaultTimeZone="system",this.parser={parse:s.parse,isLikeRelative:s.isLikeRelative},this.updateLocale({weekStart:1,yearStart:1})}return e.prototype.loadLocale=function(e){return r(this,void 0,void 0,(function(){var t;return i(this,(function(n){switch(n.label){case 0:if(this.isLocaleLoaded(e))return[3,4];n.label=1;case 1:return n.trys.push([1,3,,4]),t=e.toLocaleLowerCase(),[4,(0,u.localeLoaders[t])()];case 2:return n.sent(),this.loadedLocales.add(t),[3,4];case 3:throw n.sent(),new Error("Can't load locale \"".concat(e,'". Either it does not exist, or there was a connection problem. Check the dayjs locations list: https://github.com/iamkun/dayjs/tree/dev/src/locale'));case 4:return[2]}}))}))},e.prototype.getLocale=function(){return this.defaultLocale},e.prototype.getLocaleData=function(){var e=l.default.Ls,t=e[this.getLocale()];if(t||(t=e.en),!t)throw new Error("There is something really wrong happening. Locale data is absent.");return(0,a.default)(t)},e.prototype.setLocale=function(e){if(!this.isLocaleLoaded(e))throw new Error('Seems you are trying to set an unloaded locale "'.concat(e,"\". Load it first by calling settings.loadLocale('").concat(e,"'). Check the dayjs locations list: https://github.com/iamkun/dayjs/tree/dev/src/locale"));this.defaultLocale=e},e.prototype.updateLocale=function(e){var t=this.getLocale();l.default.updateLocale(t,e)},e.prototype.setDefaultTimeZone=function(e){this.defaultTimeZone=(0,c.normalizeTimeZone)(e,"system")},e.prototype.getDefaultTimeZone=function(){return this.defaultTimeZone},e.prototype.setRelativeParser=function(e){this.parser=e},e.prototype.getRelativeParser=function(){return this.parser},e.prototype.isLocaleLoaded=function(e){var t=e.toLocaleLowerCase();return this.loadedLocales.has(t)},e}();t.settings=new d},87116:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n(94693),t)},94693:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.fixOffset=t.normalizeTimeZone=t.timeZoneOffset=t.isValidTimeZone=t.getTimeZonesList=t.guessUserTimeZone=void 0;var i=n(20843),o=r(n(4796)),a=n(55353);t.guessUserTimeZone=function(){return o.default.tz.guess()};t.getTimeZonesList=function(){var e;return(null===(e=Intl.supportedValuesOf)||void 0===e?void 0:e.call(Intl,"timeZone"))||[]};var s={};function l(e){if(!e)return!1;if(Object.prototype.hasOwnProperty.call(s,e))return s[e];try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),s[e]=!0,!0}catch(t){return s[e]=!1,!1}}t.isValidTimeZone=l;var c=["year","month","day","hour","minute","second","era"];function u(e,t){var n=new Date(t);if(isNaN(n.valueOf())||"system"!==e&&!l(e))return NaN;if("system"===e)return-n.getTimezoneOffset();for(var r,i={year:1,month:1,day:1,hour:0,minute:0,second:0,era:"AD"},o=0,s=(0,a.getDateTimeFormat)("en-US",{hour12:!1,timeZone:"system"===e?void 0:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"}).formatToParts(n);o<s.length;o++){var u=s[o],d=u.type,h=u.value;"era"===d?i.era=h:(r=d,c.includes(r)&&(i[d]=parseInt(h,10)))}var p="BC"===i.era?1-Math.abs(i.year):i.year,f=i.month-1,m=24===i.hour?0:i.hour,g=Date.UTC(p,f,i.day,m,i.minute,i.second,0);if(p<100&&p>=0){var v=new Date(g);v.setUTCFullYear(p,f,i.day),g=v.valueOf()}var y=n.valueOf(),b=y%1e3;return(g-(y-=b>=0?b:1e3+b))/6e4}t.timeZoneOffset=u,t.normalizeTimeZone=function(e,t){if(void 0===e||null===e)return t;var n=e.toLowerCase();if("utc"===n||"gmt"===n)return i.UtcTimeZone;if("system"===n)return"system";if("default"===n)return t;if(l(e))return e;throw new Error("InvalidZone: ".concat(e))},t.fixOffset=function(e,t,n){var r=e-60*t*1e3,i=u(n,r);if(t===i)return[r,t];var o=u(n,r-=60*(i-t)*1e3);return i===o?[r,i]:[e-60*Math.min(i,o)*1e3,Math.min(i,o)]}},59318:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n(39232),t)},55353:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getNumberFormat=t.getListFormat=t.getDateTimeFormat=void 0;var n=new Map;t.getDateTimeFormat=function(e,t){void 0===t&&(t={});var r=JSON.stringify([e,t]),i=n.get(r);return i||(i=new Intl.DateTimeFormat(e,t),n.set(r,i)),i};var r=new Map;t.getListFormat=function(e,t){void 0===t&&(t={});var n=JSON.stringify([e,t]),i=r.get(n);return i||(i=new Intl.ListFormat(e,t),r.set(n,i)),i};var i=new Map;t.getNumberFormat=function(e,t){void 0===t&&(t={});var n=JSON.stringify([e,t]),r=i.get(n);return r||(r=new Intl.NumberFormat(e,t),i.set(n,r)),r}},39232:(e,t)=>{"use strict";function n(e,t){return e-t*Math.floor(e/t)}function r(e){return e%4===0&&(e%100!==0||e%400===0)}Object.defineProperty(t,"__esModule",{value:!0}),t.offsetFromString=t.normalizeDateComponents=t.normalizeComponent=t.normalizeDurationUnit=t.objToTS=t.tsToObject=t.daysInMonth=t.isLeapYear=t.floorMod=void 0,t.floorMod=n,t.isLeapYear=r,t.daysInMonth=function(e,t){var i=n(t,12);return 1===i?r(e+(t-i)/12)?29:28:[31,-1,31,30,31,30,31,31,30,31,30,31][i]},t.tsToObject=function(e,t){var n=new Date(e+60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth(),date:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}},t.objToTS=function(e){var t=Date.UTC(e.year,e.month,e.date,e.hour,e.minute,e.second,e.millisecond);if(e.year<100&&e.year>=0){var n=new Date(t);return n.setUTCFullYear(e.year,e.month,e.date),n.valueOf()}return t};var i={y:"years",year:"years",years:"years",Q:"quarters",quarter:"quarters",quarters:"quarters",M:"months",month:"months",months:"months",w:"weeks",week:"weeks",weeks:"weeks",d:"days",day:"days",days:"days",h:"hours",hour:"hours",hours:"hours",m:"minutes",minute:"minutes",minutes:"minutes",s:"seconds",second:"seconds",seconds:"seconds",ms:"milliseconds",millisecond:"milliseconds",milliseconds:"milliseconds"};t.normalizeDurationUnit=function(e){var t=["d","D","m","M","w","W","E","Q"].includes(e)?e:e.toLowerCase();if(t in i)return i[t];throw new Error("Invalid unit ".concat(e))};var o={y:"year",year:"year",years:"year",M:"month",month:"month",months:"month",D:"date",date:"date",dates:"date",h:"hour",hour:"hour",hours:"hour",m:"minute",minute:"minute",minutes:"minute",Q:"quarter",quarter:"quarter",quarters:"quarter",s:"second",second:"second",seconds:"second",ms:"millisecond",millisecond:"millisecond",milliseconds:"millisecond",d:"day",day:"day",days:"day",weeknumber:"weekNumber",w:"weekNumber",week:"weekNumber",weeks:"weekNumber",isoweeknumber:"isoWeekNumber",W:"isoWeekNumber",isoweek:"isoWeekNumber",isoweeks:"isoWeekNumber",E:"isoWeekday",isoweekday:"isoWeekday",isoweekdays:"isoWeekday",weekday:"day",weekdays:"day",e:"day"};function a(e){var t=Number(e);if("boolean"===typeof e||""===e||Number.isNaN(t))throw new Error("Invalid unit value ".concat(e));return t}t.normalizeComponent=function(e){var t=["d","D","m","M","w","W","E","Q"].includes(e)?e:e.toLowerCase();if(t in o)return o[t];throw new Error("Invalid unit ".concat(e))},t.normalizeDateComponents=function(e,t){for(var n={},r=0,i=Object.entries(e);r<i.length;r++){var o=i[r],s=o[0],l=o[1];void 0!==l&&null!==l&&(n[t(s)]=a(l))}return n};var s=/Z|[+-]\d\d(?::?\d\d)?/gi,l=/([+-]|\d\d)/gi;t.offsetFromString=function(e){var t=(e||"").match(s);if(null===t)return null;var n=t[t.length-1]||"",r=String(n).match(l)||["-",0,0],i=r[0],o=r[1],a=r[2],c=Number(60*Number(o))+(isFinite(Number(a))?Number(a):0);return"+"===i?c:-c}},31329:(e,t,n)=>{"use strict";n.d(t,{mb:()=>u});const r=/{{(.*?)}}/g;const i={EmptyKeyset:"EMPTY_KEYSET",EmptyLanguageData:"EMPTY_LANGUAGE_DATA",KeysetNotFound:"KEYSET_NOT_FOUND",MissingKey:"MISSING_KEY",MissingKeyFor0:"MISSING_KEY_FOR_0",MissingKeyParamsCount:"MISSING_KEY_PARAMS_COUNT",MissingKeyPlurals:"MISSING_KEY_PLURALS",NoLanguageData:"NO_LANGUAGE_DATA"};Object.values(i);function o(e){const{code:t,fallbackLang:n,lang:r}=e;let o="Using language ".concat(r,". ");switch(t){case i.EmptyKeyset:o+="Keyset is empty.";break;case i.EmptyLanguageData:o+="Language data is empty.";break;case i.KeysetNotFound:o+="Keyset not found.";break;case i.MissingKey:o+="Missing key.";break;case i.MissingKeyFor0:return o+="Missing key for 0",o;case i.MissingKeyParamsCount:o+="Missing params.count for key.";break;case i.MissingKeyPlurals:o+="Missing required plurals.";break;case i.NoLanguageData:o='Language "'.concat(r,'" is not defined, make sure you call setLang for the same language you called registerKeysets for!')}return n&&(o+=' Trying to use fallback language "'.concat(n,'"...')),o}var a;function s(e,t){return 0===e?t.None:1===e||-1===e?t.One:t.Many}function l(e,t){const n=Math.abs(e%10),r=Math.abs(e%100);return 0===e?t.None:1===n&&11!==r?t.One:n>1&&n<5&&(r<10||r>20)?t.Few:t.Many}function c(e){let{value:t,count:n,lang:r,pluralizers:i,log:o,key:s}=e;if(!Array.isArray(t))return function(e,t,n,r){if("undefined"===typeof t.other)throw new Error("Missing required plural form 'other' for key '".concat(e,"'"));if(t.zero&&0===n)return t.zero;if(!Intl.PluralRules)throw new Error("Intl.PluralRules is not available. Use polyfill.");const i=new Intl.PluralRules(r).select(n);return"other"===i&&"undefined"===typeof t.other?t.many||t.few:t[i]||t.other}(s,t,n,r)||s;if(!i)return o("Can not use deprecated plural format without pluralizers"),s;if(i[r]||o("Pluralization is not configured for language '".concat(r,"', falling back to the english ruleset")),t.length<3)return o("Missing required plurals"),s;const l=i[r]||i.en;return l?t[l(n,a)]||t[a.Many]||s:(o("Fallback pluralization is not configured!"),s)}!function(e){e[e.One=0]="One",e[e.Few=1]="Few",e[e.Many=2]="Many",e[e.None=3]="None"}(a||(a={}));class u{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.data={},this.pluralizers={en:s,ru:l},this.logger=null;const{data:t,fallbackLang:n,lang:r,logger:i=null}=e;this.fallbackLang=n,this.lang=r,this.logger=i,t&&Object.entries(t).forEach((e=>{let[t,n]=e;this.registerKeysets(t,n)}))}setLang(e){this.lang=e}setFallbackLang(e){this.fallbackLang=e}configurePluralization(e){this.pluralizers=Object.assign({},this.pluralizers,e)}registerKeyset(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=this.data[e]&&Object.prototype.hasOwnProperty.call(this.data[e],t);if(r)throw new Error("Keyset '".concat(t,"' is already registered, aborting!"));r&&this.warn("Keyset '".concat(t,"' is already registered.")),this.data[e]=Object.assign({},this.data[e],{[t]:n})}registerKeysets(e,t){Object.keys(t).forEach((n=>{this.registerKeyset(e,n,t[n])}))}has(e,t,n){var r;const i=this.getLanguageData(n);return Boolean(i&&i[e]&&(null===(r=i[e])||void 0===r?void 0:r[t]))}i18n(e,t,n){if(!this.lang&&!this.fallbackLang)throw new Error('Language is not specified. You should set at least one of these: "lang", "fallbackLang"');let r,i;if(this.lang){if(({text:r,details:i}=this.getTranslationData({keysetName:e,key:t,params:n,lang:this.lang})),i){const e=o({code:i.code,lang:this.lang,fallbackLang:this.fallbackLang===this.lang?void 0:this.fallbackLang});this.warn(e,i.keysetName,i.key)}}else this.warn("Target language is not specified.");if(void 0===r&&this.fallbackLang&&this.fallbackLang!==this.lang&&(({text:r,details:i}=this.getTranslationData({keysetName:e,key:t,params:n,lang:this.fallbackLang})),i)){const e=o({code:i.code,lang:this.fallbackLang});this.warn(e,i.keysetName,i.key)}return null!==r&&void 0!==r?r:t}keyset(e){return(t,n)=>this.i18n(e,t,n)}warn(e,t,n){var r;let i="";t?(i+=t,n&&(i+=".".concat(n))):i="languageData",null===(r=this.logger)||void 0===r||r.log("I18n: ".concat(e),{level:"info",logger:i,extra:{type:"i18n"}})}getLanguageData(e){const t=e||this.lang;return t?this.data[t]:void 0}getTranslationData(e){const{lang:t,key:n,keysetName:o,params:a}=e,s=this.getLanguageData(t);if("undefined"===typeof s)return{details:{code:i.NoLanguageData}};if(0===Object.keys(s).length)return{details:{code:i.EmptyLanguageData}};const l=s[o];if(!l)return{details:{code:i.KeysetNotFound,keysetName:o}};if(0===Object.keys(l).length)return{details:{code:i.EmptyKeyset,keysetName:o}};const u=l&&l[n],d={};if(void 0===u)return{details:{code:i.MissingKey,keysetName:o,key:n}};if("string"!==typeof u){const e=Number(null===a||void 0===a?void 0:a.count);if(Number.isNaN(e))return{details:{code:i.MissingKeyParamsCount,keysetName:o,key:n}};d.text=c({key:n,value:u,count:e,lang:this.lang||"en",pluralizers:this.pluralizers,log:e=>this.warn(e,o,n)})}else d.text=u;return a&&(d.text=function(e,t){let n,i="",o=r.lastIndex=0;for(;n=r.exec(e);){o!==n.index&&(i+=e.slice(o,n.index)),o=r.lastIndex;const[a,s]=n;s&&Object.prototype.hasOwnProperty.call(t,s)?i+=t[s]:i+=a}return o<e.length&&(i+=e.slice(o)),i}(d.text,a)),d}}},96261:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(68963);const i=e=>r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M13.5 8a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0Zm-3.9-1.55a.75.75 0 1 0-1.2-.9L7.419 8.858 6.03 7.47a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.13-.08l3-4Z",clipRule:"evenodd"}))},68010:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(68963);const i=e=>r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 13.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11ZM8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm-.25 3a.75.75 0 0 0-1.5 0V11a.75.75 0 0 0 1.5 0V8.5Z",clipRule:"evenodd"}))},67585:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(68963);const i=e=>r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM8 7.75a.75.75 0 0 1 .75.75V11a.75.75 0 0 1-1.5 0V8.5A.75.75 0 0 1 8 7.75Z",clipRule:"evenodd"}))},80518:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(68963);const i=e=>r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M13.5 8a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z",clipRule:"evenodd"}))},76506:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(68963);const i=e=>r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z",clipRule:"evenodd"}))},3442:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(68963);const i=e=>r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"m7.835 6 .76-2.027L9.336 2H5.5a.716.716 0 0 0-.664.45L2.513 8.257a.177.177 0 0 0 .164.243h4.965l-.732 2.013-1.082 2.975a.382.382 0 0 0 .637.392l6.956-7.391A.29.29 0 0 0 13.21 6H7.835Zm1.558-4.154ZM10.563 3l.235-.627A1.386 1.386 0 0 0 9.5.5h-4c-.906 0-1.72.552-2.057 1.393L1.12 7.7A1.677 1.677 0 0 0 2.677 10H5.5l-.545 1.5-.537 1.475a1.882 1.882 0 0 0 3.14 1.933l6.956-7.391A1.79 1.79 0 0 0 13.21 4.5H10l.563-1.5Z",clipRule:"evenodd"}))},93316:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(68963);const i=e=>r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M7.134 2.994 2.217 11.5a1 1 0 0 0 .866 1.5h9.834a1 1 0 0 0 .866-1.5L8.866 2.993a1 1 0 0 0-1.732 0Zm3.03-.75c-.962-1.665-3.366-1.665-4.328 0L.919 10.749c-.964 1.666.239 3.751 2.164 3.751h9.834c1.925 0 3.128-2.085 2.164-3.751l-4.917-8.505ZM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2A.75.75 0 0 1 8 5Zm1 5.75a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z",clipRule:"evenodd"}))},71586:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(68963);const i=e=>r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.836 2.244c.962-1.665 3.366-1.665 4.328 0l4.917 8.505c.964 1.666-.239 3.751-2.164 3.751H3.083c-1.925 0-3.128-2.085-2.164-3.751l4.917-8.505ZM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 1 1-1.5 0v-2A.75.75 0 0 1 8 5Zm1 5.75a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z",clipRule:"evenodd"}))},77280:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(68963);const i=e=>r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M3.47 3.47a.75.75 0 0 1 1.06 0L8 6.94l3.47-3.47a.75.75 0 1 1 1.06 1.06L9.06 8l3.47 3.47a.75.75 0 1 1-1.06 1.06L8 9.06l-3.47 3.47a.75.75 0 0 1-1.06-1.06L6.94 8 3.47 4.53a.75.75 0 0 1 0-1.06Z",clipRule:"evenodd"}))},5718:(e,t,n)=>{"use strict";n.d(t,{N:()=>i,b:()=>o});var r=n(5247);const i="gn-";(0,r.withNaming)({e:"__",m:"_"});const o=(0,r.withNaming)({n:i,e:"__",m:"_"})},5687:(e,t,n)=>{"use strict";n.d(t,{d:()=>G});var r="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:"undefined"!==typeof self?self:{};var i=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},o="object"==typeof r&&r&&r.Object===Object&&r,a="object"==typeof self&&self&&self.Object===Object&&self,s=o||a||Function("return this")(),l=s,c=function(){return l.Date.now()},u=/\s/;var d=function(e){for(var t=e.length;t--&&u.test(e.charAt(t)););return t},h=/^\s+/;var p=function(e){return e?e.slice(0,d(e)+1).replace(h,""):e},f=s.Symbol,m=f,g=Object.prototype,v=g.hasOwnProperty,y=g.toString,b=m?m.toStringTag:void 0;var x=function(e){var t=v.call(e,b),n=e[b];try{e[b]=void 0;var r=!0}catch(o){}var i=y.call(e);return r&&(t?e[b]=n:delete e[b]),i},w=Object.prototype.toString;var S=x,_=function(e){return w.call(e)},C="[object Null]",E="[object Undefined]",T=f?f.toStringTag:void 0;var O=function(e){return null==e?void 0===e?E:C:T&&T in Object(e)?S(e):_(e)},N=function(e){return null!=e&&"object"==typeof e},k="[object Symbol]";var j=p,I=i,P=function(e){return"symbol"==typeof e||N(e)&&O(e)==k},D=NaN,A=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,M=/^0o[0-7]+$/i,L=parseInt;var F=i,z=c,B=function(e){if("number"==typeof e)return e;if(P(e))return D;if(I(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=I(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=j(e);var n=R.test(e);return n||M.test(e)?L(e.slice(2),n?2:8):A.test(e)?D:+e},U="Expected a function",H=Math.max,V=Math.min;var G=function(e,t,n){var r,i,o,a,s,l,c=0,u=!1,d=!1,h=!0;if("function"!=typeof e)throw new TypeError(U);function p(t){var n=r,o=i;return r=i=void 0,c=t,a=e.apply(o,n)}function f(e){var n=e-l;return void 0===l||n>=t||n<0||d&&e-c>=o}function m(){var e=z();if(f(e))return g(e);s=setTimeout(m,function(e){var n=t-(e-l);return d?V(n,o-(e-c)):n}(e))}function g(e){return s=void 0,h&&r?p(e):(r=i=void 0,a)}function v(){var e=z(),n=f(e);if(r=arguments,i=this,l=e,n){if(void 0===s)return function(e){return c=e,s=setTimeout(m,t),u?p(e):a}(l);if(d)return clearTimeout(s),s=setTimeout(m,t),p(l)}return void 0===s&&(s=setTimeout(m,t)),a}return t=B(t)||0,F(n)&&(u=!!n.leading,o=(d="maxWait"in n)?H(B(n.maxWait)||0,t):o,h="trailing"in n?!!n.trailing:h),v.cancel=function(){void 0!==s&&clearTimeout(s),c=0,r=l=i=s=void 0},v.flush=function(){return void 0===s?a:g(z())},v}},50528:(e,t,n)=>{"use strict";n.d(t,{b:()=>r});const r=(0,n(5718).b)("aside-header")},81413:(e,t,n)=>{"use strict";n.d(t,{RL:()=>o,dv:()=>a,hA:()=>l,hr:()=>i,oc:()=>u,pX:()=>s,qA:()=>c,zE:()=>r});const r=1,i=-1,o="left",a="center",s="right",l="fixed",c="moving",u="__index__"},19812:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>D});var r=n(95097),i=n(68963),o=n(83570),a=n.n(o),s=n(5247),l=n(81413);const c=(0,s.withNaming)({e:"__",m:"_"})("data-table");function u(e,t){let{name:n,defaultOrder:i}=e,{sortOrder:o={},sortColumns:a=[]}=t,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],{defaultOrder:c,disableSortReset:u}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const d=i||c,h={sortOrder:{},sortColumns:[]};if(!n)return s?{sortOrder:o,sortColumns:a}:h;let p=a;const f=o[n];let m=d;if(f&&(m=f===d||u?f===l.zE?l.hr:l.zE:void 0),!s)return m?{sortOrder:{[n]:m},sortColumns:[n]}:h;const g=o,v=n,y=(g[v],(0,r._T)(g,["symbol"===typeof v?v:v+""]));return m?(y[n]=m,new Set(a).has(n)||(p=[...a,n])):p=a.filter((e=>e!==n)),{sortOrder:y,sortColumns:p}}function d(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=t,{sortAscending:i}=e;return"function"===typeof i?(e,t)=>r*i(e,t):(t,i)=>{const o=e._getSortValue(t.row),a=e._getSortValue(i.row);return null==o&&null!=a?n.nullBeforeNumbers?-r:1:null==a&&null!=o?n.nullBeforeNumbers?r:-1:o<a?Number(-r):o>a?Number(r):0}}function h(e,t,n,r){let{sortOrder:i,sortColumns:o}=n;const a={};t.forEach((e=>{i[e.name]?a[e.name]=d(e,i[e.name],r):e.group&&e.autogroup&&(a[e.name]=d(e,l.zE,r))}));const s=t.filter((e=>e.group)),c=s.length>0,u=[...s.map((e=>a[e.name])).filter(Boolean),...o.map((e=>a[e])).filter(Boolean)],h=e.map(((e,t)=>c?{row:e,index:t,span:{}}:{row:e,index:t}));if(u.length&&!r.externalSort&&h.sort(((e,t)=>{let n=0;return u.some((r=>(n=r(e,t),Boolean(n)))),n||e.index-t.index})),h.length>1&&c){const e=[],t=[];h.forEach((n=>{s.every(((r,i)=>{const o=r._getValue(n.row);return e[i]&&o===t[i]?(e[i].span[r.name]+=1,n.span[r.name]=0,!0):(s.slice(i).forEach(((r,o)=>{e[i+o]=n,t[i+o]=r._getValue(n.row),n.span[r.name]=1})),!1)}))}))}return h}function p(e,t){return(Array.isArray(e)?e:[e]).reduce(((e,n)=>{let{columnId:r,order:i}=n;return u({name:r,defaultOrder:i},e,!0,t)}),{sortOrder:{},sortColumns:[]})}function f(e){let{getColumn:t,columnIndex:n,columnId:r,minWidth:o,maxWidth:a,onResize:s}=e;const l=i.useRef(null),[u,d]=i.useState(!1);return i.useEffect((()=>{const e=l.current;if(!e)return;let i,c,u;const h=function(e){let t,n=null;return function(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];t=i,"number"!==typeof n&&(n=requestAnimationFrame((()=>{e(...t),n=null})))}}((e=>{if(m(e),"number"!==typeof i||"number"!==typeof c)return;const t=e.clientX-i,n=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:40,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1/0;return Math.max(t,Math.min(e,n))}(c+t,o,a);n!==u&&(u=n,null===s||void 0===s||s(r,u))})),p=e=>{m(e),void 0!==u&&(null===s||void 0===s||s(r,u)),d(!1),i=void 0,document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",p)},f=e=>{var r;c=null===(r=t(n))||void 0===r?void 0:r.getBoundingClientRect().width,m(e),i=e.clientX,d(!0),document.addEventListener("mousemove",h),document.addEventListener("mouseup",p)};return e.addEventListener("mousedown",f),()=>{e.removeEventListener("mousedown",f),document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",p)}}),[r,s,o,a,t,n]),i.createElement("span",{ref:l,className:c("resize-handler",{resizing:u}),onClick:e=>m(e)})}function m(e){e.preventDefault(),e.stopPropagation()}const g=function(){const e=document.createElement("a").style;return e.cssText="position:sticky; position:-webkit-sticky;",-1!==e.position.indexOf("sticky")}(),v={getSrcElement:()=>null,onHeightChange:()=>{}};class y{constructor(e){this.prevHeight=0,this.params=v,this.checkAndUpdateHeight=()=>{this.node?requestAnimationFrame((()=>{const e=this.node;e?this.updateHeight(e.offsetHeight):this.updateHeight(0)})):this.updateHeight(0)},this.params=Object.assign({},e)}destroy(){this.updateHeight(0),this.params=v}get node(){return this.params.getSrcElement()}updateHeight(e){this.prevHeight!==e&&(this.prevHeight=e,this.params.onHeightChange(e))}}const b=i.createElement("svg",{className:c("icon"),viewBox:"0 0 10 6",width:"10",height:"6"},i.createElement("path",{fill:"currentColor",d:"M0 5h10l-5 -5z"})),x=i.createElement("svg",{className:c("icon"),viewBox:"0 0 10 6",width:"10",height:"6"},i.createElement("path",{fill:"currentColor",d:"M0 1h10l-5 5z"})),w={ICON_ASC:b,ICON_DESC:x};const S=e=>{let{sortOrder:t,sortIndex:n,sortable:r,defaultOrder:o}=e;return r?i.createElement("span",{className:c("sort-icon",{shadow:!t}),"data-index":n},function(e){switch(e){case l.zE:return w.ICON_ASC;case l.hr:return w.ICON_DESC;default:return!1}}(t||o)):null};class _ extends i.PureComponent{constructor(){super(...arguments),this.onClick=e=>{if(this.props.onClick){const{row:t,index:n}=this.props;this.props.onClick(t,n,e)}}}render(){const{className:e,columns:t,row:n,index:r,odd:o,footer:a,span:s,getColSpansOfRow:l,headerData:u}=this.props,d=l?l(this.props):void 0;let h=0;return i.createElement("tr",{className:c("row",{odd:o,footer:a,"header-data":u},e),onClick:this.onClick},t.map(((e,t)=>{if(d){if(--h>0)return null;d[e.name]>1&&(h=d[e.name])}let o;if(s){if(0===s[e.name])return null;o=s[e.name]}const l=e._getValue(n);let c=e.customStyle({row:n,index:r,name:e.name,header:!1,footer:a,headerData:u});return e.resizeable&&(c=Object.assign(Object.assign({},c),{width:e.width,maxWidth:e.width})),i.createElement("td",{key:t,className:e._className,title:e._getTitle(n),style:c,colSpan:d?d[e.name]:void 0,rowSpan:o,onClick:e._getOnClick({row:n,index:r,footer:a,headerData:u})},e._renderValue({value:l,row:n,index:r,footer:a,headerData:u}))})))}}_.defaultProps={footer:!1};class C extends i.Component{constructor(){super(...arguments),this._dataRowsRef=null,this.renderedColumns=[],this.renderHeadCell=e=>{var t;const{onResize:n}=this.props,{column:r,rowSpan:o,colSpan:a}=e,{sortable:s=!1,header:l=r.name,className:u,index:d,columnIndex:h,align:p,name:m,width:g,resizeable:v,resizeMinWidth:y,resizeMaxWidth:b}=r,{headerTitle:x="string"===typeof l&&l||void 0}=r;let w=null===(t=r.customStyle)||void 0===t?void 0:t.call(r,{header:!0,name:m});return v&&(w=Object.assign(Object.assign({},w),{width:g,maxWidth:g})),i.createElement("th",{ref:r.dataColumn?this._getColumnRef(h):null,className:c("th",{sortable:s,align:p},u),key:m,title:x,"data-index":d,colSpan:a,rowSpan:o,style:w,onClick:this._getOnSortClick(r)},i.createElement("div",{className:c("head-cell")},l,i.createElement(S,Object.assign({},r))),v&&i.createElement(f,{getColumn:this._getRenderedColumn,columnIndex:h,onResize:n,columnId:m,minWidth:y,maxWidth:b}))},this.renderHeadLevel=(e,t)=>i.createElement("tr",{key:t,className:c("head-row")},e.map(this.renderHeadCell)),this.dataRowsRef=e=>{var t;this._dataRowsRef=e,e&&(null===(t=this.dataRowsHeightObserver)||void 0===t||t.checkAndUpdateHeight())},this._getColumnRef=e=>t=>{this.renderedColumns[e]=t},this._getRenderedColumn=e=>{if(void 0!==e)return this.renderedColumns[e]}}componentDidMount(){this._calculateColumnsWidth(),"function"===typeof this.props.onDataRowsHeightChange&&(this.dataRowsHeightObserver=new y({getSrcElement:()=>this._dataRowsRef,onHeightChange:e=>{"function"===typeof this.props.onDataRowsHeightChange&&this.props.onDataRowsHeightChange(e)}}))}componentDidUpdate(){var e;this._calculateColumnsWidth(),null===(e=this.dataRowsHeightObserver)||void 0===e||e.checkAndUpdateHeight()}componentWillUnmount(){var e;null===(e=this.dataRowsHeightObserver)||void 0===e||e.destroy()}render(){const{headColumns:e,dataColumns:t,renderedDataRows:n}=this.props;return this.renderedColumns.length=t.length,i.createElement(i.Fragment,null,i.createElement("thead",{className:c("head")},e.map(this.renderHeadLevel)),void 0===n?null:i.createElement("tbody",{ref:this.dataRowsRef},n))}_calculateColumnsWidth(){const{onColumnsUpdated:e}=this.props;"function"===typeof e&&requestAnimationFrame((()=>{const t=this.renderedColumns.map((e=>e&&e.getBoundingClientRect().width));e(t)}))}onSort(e,t){const{onSort:n}=this.props;"function"===typeof n&&n(e,t)}_getOnSortClick(e){const{sortable:t=!1,name:n}=e;return n===l.oc?()=>{this.onSort()}:t?t=>{this.onSort(e,t.ctrlKey||t.metaKey)}:void 0}}class E extends i.Component{constructor(){super(...arguments),this.state={style:{top:E.defaultProps.top}},this.onDataRowsHeightChange=e=>{this.props.onDataRowsHeightChange(e+1)},this._nodeRef=e=>{this._node=e}}static getDerivedStateFromProps(e,t){var n;return e.top!==(null===(n=t.style)||void 0===n?void 0:n.top)?void 0===e.top?null:{style:{top:e.top}}:null}render(){const e=this.props,{mode:t,top:n}=e,o=(0,r._T)(e,["mode","top"]);if(t===l.qA){const{style:e}=this.state;return i.createElement("div",{className:c("sticky",{moving:!0,head:!0}),style:e},this.renderHeader(o))}{const{widths:e=[],right:t=0}=this.state,n=e.reduce(((e,t)=>e+t),0);return i.createElement("div",{ref:this._nodeRef,className:c("sticky",{fixed:!0,head:!0}),style:{right:t,display:n?void 0:"none"}},this.renderHeader(o))}}setScrollLeft(e){requestAnimationFrame((()=>{this._node&&(this._node.scrollLeft=e)}))}setRightPosition(e){this.state.right===e||this.props.top||this.props.mode===l.qA||this.setState({right:e})}renderHeader(e){const{widths:t=[]}=this.state,n=t.reduce(((e,t)=>e+t),0);return i.createElement("div",{className:c("table-wrapper",{sticky:!0})},i.createElement("table",{className:c("table",{sticky:!0}),style:{width:n||"auto"}},i.createElement("colgroup",null,t.map(((e,t)=>i.createElement("col",{key:t,style:{width:e}})))),i.createElement(C,Object.assign({},e,{onDataRowsHeightChange:this.onDataRowsHeightChange}))))}updateWidths(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const{widths:t=[]}=this.state;e.some(((e,n)=>e!==t[n]))&&this.setState({widths:e})}}E.defaultProps={top:0};class T extends i.PureComponent{constructor(){super(...arguments),this.state={style:{bottom:0}},this._nodeFixed=null,this._nodeMoving=null,this._nodeFixedRef=e=>{this._nodeFixed=e},this._nodeMovingRef=e=>{var t;this._nodeMoving=e,e&&(null===(t=this.heightObserver)||void 0===t||t.checkAndUpdateHeight())}}static getDerivedStateFromProps(e,t){var n;return e.bottom!==(null===(n=t.style)||void 0===n?void 0:n.bottom)?void 0===e.bottom?null:{style:{bottom:e.bottom}}:null}componentDidMount(){this.heightObserver=new y({getSrcElement:()=>this._nodeMoving,onHeightChange:this.props.onMovingHeightChange})}componentDidUpdate(){var e;null===(e=this.heightObserver)||void 0===e||e.checkAndUpdateHeight()}componentWillUnmount(){var e;null===(e=this.heightObserver)||void 0===e||e.destroy()}render(){if(!this.props.renderedRows)return null;const{mode:e,renderedRows:t}=this.props;if(e===l.qA){const{style:e}=this.state;return i.createElement("div",{ref:this._nodeMovingRef,className:c("sticky",{footer:!0,moving:!0}),style:e},this.renderFooter(t))}{const{widths:e=[],right:n=0}=this.state,r=e.reduce(((e,t)=>e+t),0);return i.createElement("div",{ref:this._nodeFixedRef,className:c("sticky",{footer:!0,fixed:!0}),style:{right:n,display:r?void 0:"none"}},this.renderFooter(t))}}setScrollLeft(e){requestAnimationFrame((()=>{this._nodeFixed&&(this._nodeFixed.scrollLeft=e)}))}setRightPosition(e){this.state.right!==e&&!this.props.bottom&&this._nodeFixed&&this.setState({right:e})}renderFooter(e){const{widths:t=[]}=this.state,n=t.reduce(((e,t)=>e+t),0);return i.createElement("div",{className:c("table-wrapper",{sticky:!0})},i.createElement("table",{className:c("table",{sticky:!0}),style:{width:n||"auto"}},i.createElement("colgroup",null,t.map(((e,t)=>i.createElement("col",{key:t,style:{width:e}})))),i.createElement("tbody",null,e)))}updateWidths(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const{widths:t=[]}=this.state;e.some(((e,n)=>e!==t[n]))&&this.setState({widths:e})}}T.defaultProps={bottom:0};class O extends i.PureComponent{constructor(){var e;super(...arguments),e=this,this.state={},this._refBody=e=>{this._body=e},this._refBox=e=>{this._box=e},this._refHead=e=>{this._head=e},this._refStickyHead=e=>{this._stickyHead=e},this._refStickyFooter=e=>{this._stickyFooter=e},this._onBoxScroll=()=>{this._updateBoxConstraints()},this._onColumnsUpdated=e=>{this._stickyHead&&this._stickyHead.updateWidths(e),this._stickyFooter&&this._stickyFooter.updateWidths(e)},this.onMovingHeaderDataRowsHeightChange=e=>{var t;-e!==(null===(t=this.state.movingHeaderStyle)||void 0===t?void 0:t.marginTop)&&this.setState({movingHeaderStyle:{marginTop:-e}})},this.onMovingFooterHeightChange=e=>{var t;-e!==(null===(t=this.state.movingFooterStyle)||void 0===t?void 0:t.marginBottom)&&this.setState({movingFooterStyle:{marginBottom:-e}})},this.renderRow=e=>{const{data:t,onRowClick:n}=this.props,{row:r,index:i,span:o}=t[e];return this.renderRowImpl(r,i,{onRowClick:n,odd:e%2===0,span:o})},this.renderFooterRow=(e,t)=>this.renderRowImpl(e,t,{footer:!0}),this.renderHeaderRow=(e,t)=>this.renderRowImpl(e,t,{headerData:!0}),this.renderRowImpl=function(t,n){let{onRowClick:r,odd:o,span:a,footer:s,headerData:l}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{columns:{dataColumns:c},rowClassName:u,rowKey:d,getColSpansOfRow:h}=e.props,p="function"===typeof u?u(t,n,s,l):"";return i.createElement(_,{getColSpansOfRow:h,key:d(t,n),className:p,columns:c,row:t,index:n,span:a,odd:o,onClick:r,footer:s,headerData:l})},this.renderTable=(e,t)=>{const{footerData:n,columns:{dataColumns:r},settings:{stickyHead:o}}=this.props,{movingHeaderStyle:a,movingFooterStyle:s}=this.state,u=this.getStickyFooterMode();return i.createElement("div",{className:c("table-wrapper"),style:u===l.qA?s:void 0},i.createElement("table",{className:c("table"),style:o===l.qA?a:void 0},i.createElement("colgroup",null,r.map(((e,t)=>{let{width:n}=e;return i.createElement("col",{key:t,width:n})}))),this.renderHead(),i.createElement("tbody",{ref:t},e.length?e:this._getEmptyRow()),n&&i.createElement("tfoot",{className:c("foot",{"has-sticky-footer":u})},n.map(this.renderFooterRow))))}}componentDidMount(){const{stickyHead:e,syncHeadOnResize:t}=this.props.settings;this._updateBoxConstraints(),e&&t&&!this._onWindowResize&&(this._onWindowResize=()=>{this.syncHeadWidths()},window.addEventListener("resize",this._onWindowResize))}componentDidUpdate(){this._updateBoxConstraints()}componentWillUnmount(){this._onWindowResize&&(window.removeEventListener("resize",this._onWindowResize),delete this._onWindowResize)}render(){const{className:e}=this.props,{stickyHead:t,dynamicRender:n}=this.props.settings,r=this.getStickyFooterMode();return i.createElement("div",{className:e,ref:this._refBody},t&&this.renderStickyHead(),i.createElement("div",{ref:this._refBox,className:c("box",{"sticky-head":t,"sticky-footer":r}),onScroll:this._onBoxScroll},n?this.renderTableDynamic():this.renderTableSimple()),r&&this.renderStickyFooter())}_updateBoxConstraints(){const e=this._stickyHead||this._stickyFooter;if(this._box&&e){const e=this._box.offsetWidth-this._box.clientWidth;this._stickyHead&&(this._stickyHead.setRightPosition(e),this._stickyHead.setScrollLeft(this._box.scrollLeft)),this._stickyFooter&&(this._stickyFooter.setRightPosition(e),this._stickyFooter.setScrollLeft(this._box.scrollLeft))}}syncHeadWidths(){this._head&&this._head._calculateColumnsWidth()}_getEmptyRow(){const{columns:{dataColumns:e},emptyDataMessage:t,renderEmptyRow:n}=this.props;return"function"===typeof n?n(e):i.createElement("tr",{className:c("row")},i.createElement("td",{className:c("td",c("no-data")),colSpan:e.length},t))}renderHead(){const{columns:e,onSort:t,onResize:n}=this.props,{displayIndices:r}=this.props.settings,o=this.renderHeaderRows();return i.createElement(C,Object.assign({ref:this._refHead},e,{displayIndices:Boolean(r),onSort:t,onResize:n,onColumnsUpdated:this._onColumnsUpdated,renderedDataRows:o}))}renderStickyHead(){const{columns:e,onSort:t,onResize:n}=this.props,{displayIndices:r,stickyTop:o,stickyHead:a}=this.props.settings,s="auto"===o&&this._body&&this._body.parentNode?this._body.parentNode.offsetTop:Number(o)||0,l=this.renderHeaderRows();return i.createElement(E,Object.assign({mode:a,top:s,ref:this._refStickyHead},e,{displayIndices:r,onSort:t,onResize:n,renderedDataRows:l,onDataRowsHeightChange:this.onMovingHeaderDataRowsHeightChange}))}renderStickyFooter(){const{columns:e}=this.props,{stickyBottom:t}=this.props.settings;let n=Number(t)||0;if("auto"===t&&this._body&&this._body.parentNode){const e=this._body.parentNode;n=e.offsetTop+e.offsetHeight}const r=this.renderFooterRows();return i.createElement(T,{ref:this._refStickyFooter,mode:this.getStickyFooterMode(),bottom:n,dataColumns:e.dataColumns,renderedRows:r,onMovingHeightChange:this.onMovingFooterHeightChange})}renderTableDynamic(){const{data:e,settings:{dynamicInnerRef:t,dynamicRenderType:n="uniform",dynamicRenderUseStaticSize:r,dynamicRenderThreshold:o,dynamicRenderMinSize:s,dynamicRenderScrollParentGetter:l,dynamicRenderScrollParentViewportSizeGetter:c,dynamicItemSizeEstimator:u,dynamicItemSizeGetter:d}={}}=this.props;return i.createElement(a(),{ref:t,type:n,useStaticSize:r,threshold:o,minSize:s,itemSizeEstimator:u,itemSizeGetter:d,length:e.length,itemRenderer:this.renderRow,itemsRenderer:this.renderTable,scrollParentGetter:l,scrollParentViewportSizeGetter:c})}renderTableSimple(){const{data:e}=this.props,t=e.map(((e,t)=>this.renderRow(t)));return this.renderTable(t,null)}renderHeaderRows(){const{headerData:e}=this.props;return e&&e.map(this.renderHeaderRow)}renderFooterRows(){const{footerData:e}=this.props;return null===e||void 0===e?void 0:e.map(this.renderFooterRow)}getStickyFooterMode(){const{footerData:e}=this.props;if(!(null===e||void 0===e?void 0:e.length))return!1;const{stickyFooter:t}=this.props.settings;return t}}const N=i.memo((function(e){const{column:t,value:n,row:r,index:o,footer:a,headerData:s}=e;return i.createElement(i.Fragment,null,t.render({value:n,row:r,index:o,footer:a,headerData:s}))}));class k extends i.Component{constructor(){super(...arguments),this.state=Object.assign({settings:{}},p(this.props.initialSortOrder,this.props.settings)),this._tableRef=e=>{this.table=e},this.renderMemoizedCell=e=>{let{column:t,value:n,row:r,index:o,footer:a,headerData:s}=e;return i.createElement(N,{column:t,value:n,row:r,index:o,footer:a,headerData:s})},this.getColumn=(e,t)=>{var n;const{onResize:r}=this.props,{settings:i}=this.state,{defaultOrder:o}=i,{sortOrder:a={},sortColumns:s,indexColumn:l}=this.state,u=Number(Boolean(l)),d=this.isSortEnabled(),{name:h,accessor:p=e.name,align:f,sortable:m=i.sortable,group:g,autogroup:v=!0}=e,{sortAccessor:y,onClick:b}=e,x=c("td",{align:f},e.className),w=(null!==(n=e.resizeable)&&void 0!==n?n:i.defaultResizeable)&&Boolean(r),S="function"===typeof p?e=>p(e):e=>Object.prototype.hasOwnProperty.call(e,p)?e[p]:void 0,_="function"===typeof e.title?t=>e.title(t):()=>"string"===typeof e.title&&e.title||void 0,C="function"===typeof y?e=>y(e):S,E="function"===typeof e.render?t=>{let{value:n,row:r,index:i,footer:o,headerData:a}=t;return this.renderMemoizedCell({column:e,value:n,row:r,index:i,footer:o,headerData:a})}:e=>{let{value:t}=e;return t},T="function"===typeof e.customStyle?e.customStyle:()=>{},O="function"===typeof b?t=>n=>b(t,e,n):()=>{};return Object.assign(Object.assign({index:t-u,columnIndex:t,dataColumn:!0,defaultOrder:o},e),{resizeable:w,sortable:m&&d,_className:x,_getValue:S,_getTitle:_,_getSortValue:C,_renderValue:E,_getOnClick:O,customStyle:T,group:g,autogroup:v,sortOrder:a[h]||void 0,sortIndex:s.length>1?s.indexOf(h)+1:void 0})},this.isSortEnabled=()=>{const{data:e}=this.props;return Array.isArray(e)&&e.length>1},this.onSort=(e,t)=>{if(e){const{sortOrder:n,sortColumns:r}=u(e,this.state,t,this.props.settings);this.setState({sortOrder:n,sortColumns:r});const{onSort:i}=this.props;if("function"===typeof i){const e=function(e){return Object.keys(e).map((t=>({columnId:t,order:e[t]})))}(n);i(e)}}else{this.setState({sortOrder:{},sortColumns:[]});const{onSort:e}=this.props;"function"===typeof e&&e([])}}}static normalizeStickyHead(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return e!==l.qA||g?e:(console.warn("Your browser does not support position: sticky, moving sticky headers will be disabled."),!1)}static calculateSettings(e){return Object.assign(Object.assign(Object.assign({},k.defaultProps.settings),e),{stickyHead:k.normalizeStickyHead(e.stickyHead),stickyFooter:k.normalizeStickyHead(e.stickyFooter)})}static getIndexColumn(e){let{startIndex:t,data:n,visibleRowIndex:r}=e;const i=t+n.length+1;return{name:l.oc,header:"#",className:c("index"),render:e=>{let{row:n,index:i,footer:o,headerData:a}=e;var s,l;return a?null!==(s=n.headerIndex)&&void 0!==s?s:t+i:o?null!==(l=n.footerIndex)&&void 0!==l?l:t+i:"function"===typeof r?r(n,i):t+i},sortable:!1,resizeable:!1,width:20+10*Math.ceil(Math.log10(i))}}static getDerivedStateFromProps(e){const t=k.calculateSettings(e.settings);return Object.assign({settings:t,indexColumn:Boolean(t.displayIndices)&&k.getIndexColumn(e)},e.sortOrder?Object.assign({},p(e.sortOrder,e.settings)):void 0)}render(){const{getColSpansOfRow:e,headerData:t,data:n,footerData:r,columns:o,startIndex:a,emptyDataMessage:s,rowClassName:l,rowKey:u,onRowClick:d,onResize:p,theme:f,renderEmptyRow:m,nullBeforeNumbers:g}=this.props,{settings:v,sortOrder:y,sortColumns:b}=this.state,{highlightRows:x=!1,stripedRows:w=!1,headerMod:S=!1}=v,_=c({"highlight-rows":x,"striped-rows":w,header:S,theme:f}),C=this.getComplexColumns(o);return v.dynamicRender&&C.dataColumns.some((e=>e.group))&&console.warn("Simultaneously used grouping cells and dynamic render. The table will render unpredictable."),i.createElement(O,{ref:this._tableRef,getColSpansOfRow:e,className:_,settings:v,startIndex:a,columns:C,emptyDataMessage:s,renderEmptyRow:m,rowClassName:l,rowKey:u||k.defaultProps.rowKey,onRowClick:d,headerData:t,data:h(n,C.dataColumns,{sortOrder:y,sortColumns:b},{nullBeforeNumbers:g,externalSort:null===v||void 0===v?void 0:v.externalSort}),footerData:r,onSort:this.onSort,onResize:p})}getComplexColumns(e){const t=[],n=[],r=[],{indexColumn:i}=this.state,o=i?[i,...e]:e,a=(e,i)=>{t[i]||(t[i]=[]);const o=t[i];return e.reduce(((e,t)=>{let s=1,l=-1,c=t;if(Array.isArray(t.sub))s=a(t.sub,i+1);else{const e=this.getColumn(t,n.length);n.push(e),l=i,c=e}const u={column:c,itemLevel:l,colSpan:s,rowSpan:0};return r.push(u),o.push(u),s+e}),0)};return a(o,0),r.forEach((e=>{e.rowSpan=e.itemLevel<0?1:t.length-e.itemLevel})),{headColumns:t,dataColumns:n}}resize(){this.table&&this.table.syncHeadWidths()}}function j(e){return new Set(e.map((e=>e.name))).size!==e.length}k.defaultProps={startIndex:0,emptyDataMessage:"No data",settings:{displayIndices:!0,dynamicRenderMinSize:1,stickyHead:!1,stickyFooter:!1,sortable:!0,externalSort:!1,defaultOrder:l.zE,defaultResizeable:!1},rowKey:(e,t)=>Object.prototype.hasOwnProperty.call(e,"id")?e.id:t,initialSortOrder:{},initialSortColumns:[],theme:"yandex-cloud"},k.getSortedData=h;const I="It is strongly recommended against using duplicate column names. They act as default accessors and titles, so doing so may lead to confusing titles and the wrong data being extracted.";class P extends i.PureComponent{constructor(){super(...arguments),this.state={},this._tableRef=e=>{this.table=e}}static setCustomIcons(e){w.ICON_ASC=e.ICON_ASC||b,w.ICON_DESC=e.ICON_DESC||x}componentDidMount(){j(this.props.columns)&&console.warn(I)}componentDidUpdate(e){const{columns:t}=this.props;t!==e.columns&&j(t)&&console.warn(I)}componentDidCatch(e){console.error(e),this.setState({error:e});const{onError:t}=this.props;"function"===typeof t&&t(e)}render(){const{error:e}=this.state;return e?i.createElement("pre",{className:c("error")},"DataTable got stuck in invalid state. Please tell developers about it.","\n\n",e.stack&&String(e.stack)||String(e)):i.createElement(k,Object.assign({ref:this._tableRef},this.props))}resize(){this.table&&this.table.resize()}}P.FIXED=l.hA,P.MOVING=l.qA,P.ASCENDING=l.zE,P.DESCENDING=l.hr,P.LEFT=l.RL,P.CENTER=l.dv,P.RIGHT=l.pX;const D=P},17176:(e,t,n)=>{"use strict";n.d(t,{z:()=>f});var r=n(68963),i=n(36951),o=n(99742),a=n(93404),s=n(70292),l=n(12913);const c=(0,i.Ge)("button");function u(){(0,l.O)('[Button.Icon] Physical values (left, right) of "side" property are deprecated. Use logical values (start, end) instead.')}const d=e=>{let{side:t,className:n,children:i}=e,o=t;return"left"===o&&(u(),o="start"),"right"===o&&(u(),o="end"),r.createElement("span",{className:c("icon",{side:o},n)},r.createElement("span",{className:c("icon-inner")},i))};d.displayName="Button.Icon";const h=(0,i.Ge)("button"),p=r.forwardRef((function(e,t){let{view:n="normal",size:i="m",pin:o="round-round",selected:s,disabled:l=!1,loading:c=!1,width:u,title:d,tabIndex:p,type:f="button",component:m,href:v,target:y,rel:b,extraProps:x,onClick:w,onMouseEnter:S,onMouseLeave:_,onFocus:C,onBlur:E,children:T,id:O,style:N,className:k,qa:j}=e;const I={title:d,tabIndex:p,onClick:w,onClickCapture:r.useCallback((e=>{a.P.publish({componentId:"Button",eventId:"click",domEvent:e,meta:{content:e.currentTarget.textContent,view:n}})}),[n]),onMouseEnter:S,onMouseLeave:_,onFocus:C,onBlur:E,id:O,style:N,className:h({view:n,size:i,pin:o,selected:s,disabled:l||c,loading:c,width:u},k),"data-qa":j};if("string"===typeof v||m){const e={href:v,target:y,rel:"_blank"!==y||b?b:"noopener noreferrer"};return r.createElement(m||"a",Object.assign(Object.assign(Object.assign(Object.assign({},x),I),m?{}:e),{ref:t,"aria-disabled":l||c}),g(T))}return r.createElement("button",Object.assign({},x,I,{ref:t,type:f,disabled:l||c,"aria-pressed":s}),g(T))}));p.displayName="Button";const f=Object.assign(p,{Icon:d}),m=(0,s.s)(d);function g(e){const t=r.Children.toArray(e);if(1===t.length){const e=t[0];return m(e)?e:(0,o.y)(e)?r.createElement(f.Icon,{key:"icon"},e):r.createElement("span",{key:"text",className:h("text")},e)}{let e,n,i;const a=[];for(const s of t){const t=(0,o.y)(s),i=m(s);if(t||i)if(e||0!==a.length){if(!n&&0!==a.length){const e="icon-end",i="end";n=t?r.createElement(f.Icon,{key:e,side:i},s):r.cloneElement(s,{side:i})}}else{const n="icon-start",i="start";e=t?r.createElement(f.Icon,{key:n,side:i},s):r.cloneElement(s,{side:i})}else a.push(s)}return a.length>0&&(i=r.createElement("span",{key:"text",className:h("text")},a)),[e,n,i]}}},91387:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var r=n(95097),i=n(68963),o=n(68512),a=n(28989);const s=(0,n(36951).Ge)("card"),l=i.forwardRef((function(e,t){const{type:n="container",theme:l,view:c,size:u="m",children:d,className:h,onClick:p,disabled:f,selected:m}=e,g=(0,r._T)(e,["type","theme","view","size","children","className","onClick","disabled","selected"]),v="selection"===n,y="container"===n,b=("action"===n||v)&&Boolean(p)&&!(f||m),x=y?"normal":void 0,w=y||v?"outlined":void 0,S=b?p:void 0,{onKeyDown:_}=(0,o.b)(p);return i.createElement(a.x,Object.assign({ref:t,role:b?"button":void 0,className:s({theme:l||x,view:c||w,type:n,selected:m,size:u,disabled:f,clickable:b},h),onClick:S,onKeyDown:b?_:void 0,tabIndex:b?0:void 0},g),d)}))},88776:(e,t,n)=>{"use strict";n.d(t,{J:()=>c});var r=n(68963),i=n(36951);const o={"aria-hidden":!0};function a(e){return"object"===typeof e}function s(e){return"string"===typeof e}const l=(0,i.Ge)("icon"),c=r.forwardRef(((e,t)=>{let n,i,u,{data:d,width:h,height:p,size:f,className:m,fill:g="currentColor",stroke:v="none",qa:y}=e;if(f&&(n=f,i=f),h&&(n=h),p&&(i=p),a(d))({viewBox:u}=d);else if(s(d))u=function(e){const t=e.match(/viewBox=(["']?)([\d\s,-]+)\1/);return t?t[2]:void 0}(d);else if(function(e){return"object"===typeof e&&"defaultProps"in e}(d))({viewBox:u}=d.defaultProps);else if(function(e){return"function"===typeof e&&(!e.prototype||!e.prototype.render)}(d)){const e=d({});e&&({viewBox:u}=e.props)}if(u&&(!n||!i)){const e=u.split(/\s+|\s*,\s*/);n||(n=e[2]),i||(i=e[3])}const b=Object.assign({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:n,height:i,className:l(null,m),fill:g,stroke:v,"data-qa":y},o);if(s(d)){const e=function(e){return e.replace(/<svg[^>]*>/,(e=>e.replace(/(width|height)=(["']?)\d+\2/g,"").replace(/(\s){2,}\b/g,"$1").replace(/(\s)+>/g,">")))}(d);return r.createElement("svg",Object.assign({},b,{ref:t,dangerouslySetInnerHTML:{__html:e}}))}if(a(d)){const e=c.prefix+(d.url||"#".concat(d.id));return r.createElement("svg",Object.assign({},b,{viewBox:u,ref:t}),r.createElement("use",{href:e,xlinkHref:e}))}const x=d;return x.defaultProps&&(x.defaultProps.width=x.defaultProps.height=void 0),r.createElement("svg",Object.assign({},b,{ref:t}),r.createElement(x,{width:void 0,height:void 0}))}));c.displayName="Icon",c.prefix=""},57107:(e,t,n)=>{"use strict";n.d(t,{h:()=>c});var r=n(68963),i=n(38886);const o=r.createContext({current:null});o.displayName="PortalContext";var a=n(87720),s=n(40797);const l=(0,n(36951).Ge)("portal");function c(e){let{container:t,children:n,disablePortal:c}=e;const u=function(){var e;const t=r.useContext(o);let n=null;return"object"===typeof window&&(n=window.document.body),null!==(e=t.current)&&void 0!==e?e:n}(),{scoped:d}=(0,s.T)(),h=null!==t&&void 0!==t?t:u;return c?r.createElement(r.Fragment,null,n):h?i.createPortal(d?r.createElement(a.f,{rootClassName:l("theme-wrapper"),scoped:!0},n):n,h):null}},10288:(e,t,n)=>{"use strict";n.d(t,{x:()=>l});var r=n(95097),i=n(68963),o=n(39137);const a=(0,n(36951).Ge)("text"),s=(e,t)=>{let{variant:n="body-1",ellipsis:r,ellipsisLines:i,whiteSpace:o,wordBreak:s}=e;return a({variant:n,ellipsis:r,ws:o,wb:s,"ellipsis-lines":i},t)},l=i.forwardRef((function(e,t){var{as:n,children:a,variant:l,className:c,ellipsis:u,color:d,whiteSpace:h,wordBreak:p,ellipsisLines:f,style:m,qa:g}=e,v=(0,r._T)(e,["as","children","variant","className","ellipsis","color","whiteSpace","wordBreak","ellipsisLines","style","qa"]);const y=n||"span",b=Object.assign({},m);return"number"===typeof f&&(b.WebkitLineClamp=f),i.createElement(y,Object.assign({ref:t,className:s({variant:l,ellipsis:u,whiteSpace:h,wordBreak:p,ellipsisLines:"number"===typeof f},d?(0,o.V)({color:d},c):c),style:b,"data-qa":g},v),a)}));l.displayName="Text"},39137:(e,t,n)=>{"use strict";n.d(t,{V:()=>i});const r=(0,n(36951).Ge)("color-text"),i=(e,t)=>{let{color:n}=e;return r({color:n},t)}},28989:(e,t,n)=>{"use strict";n.d(t,{x:()=>l});var r=n(95097),i=n(68963),o=n(36951),a=n(95216);const s=(0,o.Ge)("box"),l=i.forwardRef((function(e,t){var{as:n,children:o,qa:l,className:c,width:u,height:d,minWidth:h,minHeight:p,maxHeight:f,maxWidth:m,style:g,spacing:v,overflow:y}=e,b=(0,r._T)(e,["as","children","qa","className","width","height","minWidth","minHeight","maxHeight","maxWidth","style","spacing","overflow"]);const x=n||"div",w=Object.assign({width:u,height:d,minWidth:h,minHeight:p,maxHeight:f,maxWidth:m},g);return i.createElement(x,Object.assign({},b,{"data-qa":l,style:w,ref:t,className:s({overflow:y},v?(0,a.sp)(v,c):c)}),o)}))},77796:(e,t,n)=>{"use strict";n.d(t,{k:()=>u});var r=n(95097),i=n(68963),o=n(36951),a=n(28989),s=n(35490),l=n(34293);const c=(0,o.Ge)("flex"),u=i.forwardRef((function(e,t){const{direction:n,grow:o,basis:u,children:d,style:h,alignContent:p,alignItems:f,alignSelf:m,justifyContent:g,justifyItems:v,justifySelf:y,shrink:b,wrap:x,inline:w,gap:S,gapRow:_,className:C,space:E,centerContent:T}=e,O=(0,r._T)(e,["direction","grow","basis","children","style","alignContent","alignItems","alignSelf","justifyContent","justifyItems","justifySelf","shrink","wrap","inline","gap","gapRow","className","space","centerContent"]),{getClosestMediaProps:N,theme:{spaceBaseSize:k}}=(()=>{const{activeMediaQuery:e,theme:t}=i.useContext(s.V),{isMediaActive:n,getClosestMediaProps:r}=i.useMemo((()=>({isMediaActive:(0,l.ur)(e),getClosestMediaProps:(0,l.GD)(e)})),[e]);return{theme:t,activeMediaQuery:e,isMediaActive:n,getClosestMediaProps:r}})(),j=e=>"object"===typeof e&&null!==e?N(e):e,I=j(S),P=I?k*Number(I):void 0,D=j(_)||I,A=D?k*Number(D):void 0,R=j(E),M=S||_||!R?void 0:(0,l.cA)(R);return i.createElement(a.x,Object.assign({className:c({"center-content":T,inline:w,s:M},C),style:Object.assign({flexDirection:j(n),flexGrow:!0===o?1:o,flexWrap:!0===x?"wrap":x,flexBasis:u,flexShrink:b,columnGap:P,rowGap:A,alignContent:j(p),alignItems:j(f),alignSelf:j(m),justifyContent:j(g),justifyItems:j(v),justifySelf:j(y)},h),ref:t},O),E?i.Children.map(d,(e=>e?i.createElement("div",{className:c("wr")},e):e)):d)}))},14399:(e,t,n)=>{"use strict";n.d(t,{A:()=>i,Q:()=>r});const r={.5:"half"},i={breakpoints:{s:576,m:768,l:1080,xl:1200,xxl:1400,xxxl:1920},spaceBaseSize:4,components:{container:{gutters:"3",media:{l:{gutters:"5"}}}}}},35490:(e,t,n)=>{"use strict";n.d(t,{V:()=>o});var r=n(68963),i=n(14399);const o=r.createContext({theme:i.A,activeMediaQuery:"s"})},95216:(e,t,n)=>{"use strict";n.d(t,{sp:()=>s,W:()=>a});var r=n(36951),i=n(34293);const o=(0,r.Ge)("s"),a=(e,t)=>{const n=[];for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)){const t=e[r];"undefined"!==typeof t&&n.push(o("".concat(r,"_").concat((0,i.cA)(t))))}return t&&n.push(t),n.join(" ")},s=a},34293:(e,t,n)=>{"use strict";n.d(t,{GD:()=>s,cA:()=>l,ur:()=>o});var r=n(14399);const i={s:0,m:1,l:2,xl:3,xxl:4,xxxl:5},o=e=>t=>e in i&&i[e]-i[t]>=0,a=["s","m","l","xl","xxl","xxxl"],s=e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e)return;let n=e;for(;n;){if(t[n])return t[n];n=a[i[n]-1]}},l=e=>e in r.Q?r.Q[e]:String(e)},84584:(e,t,n)=>{"use strict";n.d(t,{z:()=>o});var r=n(68963);const i={mobile:!1,platform:n(66573).t.BROWSER,useHistory:()=>({action:"",replace(){},push(){},goBack(){}}),useLocation:()=>({pathname:"",search:"",hash:""})},o=r.createContext(i)},66573:(e,t,n)=>{"use strict";n.d(t,{t:()=>r});var r,i=n(36951);!function(e){e.IOS="ios",e.ANDROID="android",e.BROWSER="browser"}(r||(r={}));(0,i.Ge)("root")({mobile:!0}).split(/\s+/)[1]},79805:(e,t,n)=>{"use strict";n.d(t,{X:()=>o});var r=n(68963),i=n(84584);function o(){return r.useContext(i.z).mobile}},57840:(e,t,n)=>{"use strict";n.d(t,{N:()=>r});const r=n(68963).createContext(void 0);r.displayName="ThemeContext"},87720:(e,t,n)=>{"use strict";n.d(t,{f:()=>O});var r=n(68963),i=n(35490);const o={media:"",matches:!1,onchange:()=>{},addListener:()=>{},removeListener:()=>{},addEventListener:()=>{},removeEventListener:()=>{},dispatchEvent:e=>!0},a=e=>"undefined"===typeof window||"function"!==typeof window.matchMedia?o:window.matchMedia(e);class s{constructor(e){this.queryListsDecl=[];const t={s:"(max-width: ".concat((n=e).m-1,"px)"),m:"(min-width: ".concat(n.m,"px) and (max-width: ").concat(n.l-1,"px)"),l:"(min-width: ".concat(n.l,"px) and (max-width: ").concat(n.xl-1,"px)"),xl:"(min-width: ".concat(n.xl,"px) and (max-width: ").concat(n.xxl-1,"px)"),xxl:"(min-width: ".concat(n.xxl,"px) and (max-width: ").concat(n.xxxl-1,"px)"),xxxl:"(min-width: ".concat(n.xxxl,"px)")};var n;this.queryListsDecl=[["s",a(t.s)],["m",a(t.m)],["l",a(t.l)],["xl",a(t.xl)],["xxl",a(t.xxl)],["xxxl",a(t.xxxl)]]}getCurrentActiveMedia(){const e=this.queryListsDecl.find((e=>{let[t,n]=e;return n.matches}));return e?e[0]:"s"}addListeners(e){this.queryListsDecl.forEach((t=>{let[n,r]=t;return r.addEventListener("change",e)}))}removeListeners(e){this.queryListsDecl.forEach((t=>{let[n,r]=t;return r.removeEventListener("change",e)}))}}const l=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"s";const[n,i]=r.useState(t);return r.useLayoutEffect((()=>{const t=new s(e),n=()=>{i(t.getCurrentActiveMedia())};return t.addListeners(n),n(),()=>{t.removeListeners(n)}}),[e]),n};var c=n(3186),u=n.n(c);function d(e){let{children:t,config:n,initialMediaQuery:o}=e;const a=r.useContext(i.V),s=r.useMemo((()=>function(e){let{theme:t,override:n}=e;return u()(t,n)}({theme:a.theme,override:n})),[n,a.theme]),c=l(s.breakpoints,o),d=r.useMemo((()=>({activeMediaQuery:c,theme:s})),[c,s]);return r.createElement(i.V.Provider,{value:d},t)}var h=n(36951),p=n(57840);const f=r.createContext(void 0);f.displayName="ThemeSettingsContext";const m="system",g="light",v="dark",y="root",b="ltr",x=(0,h.Ge)(y),w=x();function S(e){let{theme:t,nativeScrollbar:n=!1,className:r,prevClassName:i}=e;const o=document.body;if(o.classList.contains(w)||o.classList.add(w),i){i.split(" ").forEach((e=>{e&&o.classList.remove(e)}))}if(r){r.split(" ").forEach((e=>{e&&!o.classList.contains(e)&&o.classList.add(e)}))}[...o.classList].forEach((e=>{e.startsWith((0,h.Ui)(x({theme:!0})))&&o.classList.remove(e)})),o.classList.add((0,h.Ui)(x({theme:t})));const a={"native-scrollbar":n};for(const[s,l]of Object.entries(a))o.classList.toggle((0,h.Ui)(x({[s]:!0})),l)}const _="undefined"!==typeof window&&"function"===typeof window.matchMedia,C=()=>window.matchMedia("(prefers-color-scheme: dark)");function E(){const[e,t]=r.useState(_&&C().matches?"dark":"light");return r.useEffect((()=>{if(!_)return;const e=function(e,t){const n="function"!==typeof e.addEventListener;return n?e.addListener(t):e.addEventListener("change",t),()=>{n?e.removeListener(t):e.removeEventListener("change",t)}}(C(),(function(e){t(e.matches?"dark":"light")}));return()=>e()}),[]),e}const T=(0,h.Ge)(y);function O(e){let{theme:t,systemLightTheme:n,systemDarkTheme:i,direction:o,nativeScrollbar:a,scoped:s=!1,rootClassName:l="",children:c,layout:u}=e;var h,y,x,w;const _=r.useContext(p.N),C=r.useContext(f),O=void 0!==_||s,N=null!==(h=null===_||void 0===_?void 0:_.theme)&&void 0!==h?h:m,k=null!==t&&void 0!==t?t:N,j=null!==(y=null!==n&&void 0!==n?n:null===C||void 0===C?void 0:C.systemLightTheme)&&void 0!==y?y:g,I=null!==(x=null!==i&&void 0!==i?i:null===C||void 0===C?void 0:C.systemDarkTheme)&&void 0!==x?x:v,P=null!==(w=null===_||void 0===_?void 0:_.direction)&&void 0!==w?w:b,D=null!==o&&void 0!==o?o:P,A="light"===E()?j:I,R="system"===k?A:k,M=r.useRef("");r.useLayoutEffect((()=>{O||(S({theme:R,nativeScrollbar:a,className:l,prevClassName:M.current}),function(e){const t=document.body;e===b?t.removeAttribute("dir"):t.setAttribute("dir",e)}(D),M.current=l)}),[O,R,D,a,l]);const L=r.useMemo((()=>({theme:k,themeValue:R,direction:D,scoped:O})),[k,R,D,O]),F=r.useMemo((()=>({systemLightTheme:j,systemDarkTheme:I})),[j,I]);return r.createElement(d,Object.assign({},u),r.createElement(p.N.Provider,{value:L},r.createElement(f.Provider,{value:F},O?r.createElement("div",{className:T({theme:R,"native-scrollbar":!1!==a},l),dir:D},c):c)))}O.displayName="ThemeProvider"},40797:(e,t,n)=>{"use strict";n.d(t,{T:()=>o});var r=n(68963),i=n(57840);function o(){const e=r.useContext(i.N);if(void 0===e)throw new Error("useTheme* hooks must be used within ThemeProvider");return e}},64270:(e,t,n)=>{"use strict";n.d(t,{C:()=>i});var r=n(40797);function i(){return(0,r.T)().themeValue}},54973:(e,t,n)=>{"use strict";n.d(t,{e:()=>s});var r=n(31329),i=n(24205);const o=(0,i.iE)().lang,a=new r.mb({lang:o,fallbackLang:o});function s(e,t){return Object.entries(e).forEach((e=>{let[n,r]=e;return a.registerKeyset(n,t,r)})),a.keyset(t)}(0,i.Pe)((e=>{a.setLang(e.lang)}))},36951:(e,t,n)=>{"use strict";n.d(t,{A7:()=>i,Ge:()=>o,Ui:()=>a});var r=n(5247);const i="g-",o=((0,r.withNaming)({e:"__",m:"_"}),(0,r.withNaming)({n:i,e:"__",m:"_"}));function a(e){return e.split(/\s(.*)/)[1]}},99742:(e,t,n)=>{"use strict";n.d(t,{x:()=>s,y:()=>l});var r=n(88776),i=n(36951),o=n(70292);let a=1;function s(){return"".concat(i.A7,"uniq-").concat(a++)}const l=(0,o.s)(r.J)},24205:(e,t,n)=>{"use strict";var r;n.d(t,{Pe:()=>s,iE:()=>l,jQ:()=>a}),function(e){e.Ru="ru",e.En="en"}(r||(r={}));let i=[];const o={lang:r.En},a=e=>{Object.assign(o,e),i.forEach((e=>{e(o)}))},s=e=>(i.push(e),()=>{i=i.filter((t=>t!==e))}),l=()=>o},93404:(e,t,n)=>{"use strict";n.d(t,{P:()=>o});var r=n(95097),i=n(36951);const o=new class{constructor(e){this.subscriptions=[],this.componentPrefix=e}subscribe(e){this.subscriptions.push(e)}unsubscribe(e){const t=this.subscriptions.indexOf(e);t>-1&&this.subscriptions.splice(t,1)}publish(e){var{componentId:t}=e,n=(0,r._T)(e,["componentId"]);this.subscriptions.forEach((e=>e(Object.assign(Object.assign({},n),{componentId:this.componentPrefix?"".concat(this.componentPrefix).concat(t):t}))))}withEventPublisher(e,t){return n=>{this.publish(Object.assign(Object.assign({},n),{componentId:e,qa:t}))}}}(i.A7)},70292:(e,t,n)=>{"use strict";n.d(t,{s:()=>i});var r=n(68963);function i(e){return function(t){if(!r.isValidElement(t))return!1;const{type:n}=t;if(n===e)return!0;if("string"===typeof e||"string"===typeof n)return!1;const i=n.displayName;return Boolean(i&&i===e.displayName)}}},31445:(e,t,n)=>{"use strict";n.d(t,{Y:()=>i});var r=n(36951);function i(e){return{appear:(0,r.Ui)(e({appear:!0})),appearActive:(0,r.Ui)(e({appear:"active"})),appearDone:(0,r.Ui)(e({appear:"done"})),enter:(0,r.Ui)(e({enter:!0})),enterActive:(0,r.Ui)(e({enter:"active"})),enterDone:(0,r.Ui)(e({enter:"done"})),exit:(0,r.Ui)(e({exit:!0})),exitActive:(0,r.Ui)(e({exit:"active"})),exitDone:(0,r.Ui)(e({exit:"done"}))}}},12913:(e,t,n)=>{"use strict";n.d(t,{O:()=>i});const r=new Map;function i(e){!e||r.has(e)}},59926:(e,t,n)=>{"use strict";n.d(t,{V:()=>r});const r={BACKSPACE:"Backspace",ENTER:"Enter",TAB:"Tab",SPACEBAR:" ",SPACEBAR_OLD:"Spacebar",ESCAPE:"Escape",ARROW_UP:"ArrowUp",ARROW_DOWN:"ArrowDown"}},68512:(e,t,n)=>{"use strict";n.d(t,{S:()=>o,b:()=>a});var r=n(68963),i=n(59926);function o(e){return t=>{e&&[i.V.ENTER,i.V.SPACEBAR,i.V.SPACEBAR_OLD].includes(t.key)&&(t.preventDefault(),e(t))}}function a(e){return{onKeyDown:r.useMemo((()=>o(e)),[e])}}},63660:(e,t,n)=>{"use strict";n.d(t,{m:()=>re});var r=n(63609),i=n(68963),o=n(63639),a=n.n(o),s=n(38886),l=n(36951);function c(e,t){return e.findIndex((e=>e.name===t))}function u(e,t){return-1!==c(e,t)}function d(e,t){return u(e,t)?e.filter((e=>e.name!==t)):e}const h=i.createContext(null);h.displayName="ToasterContext";const p=i.createContext([]);p.displayName="ToastsContext";const f=i.forwardRef((function(e,t){let{children:n}=e;const[r,o]=i.useState([]),a=i.useCallback((e=>{const{name:t}=e;o((n=>{let r=n;return u(n,t)&&(r=d(n,t)),[...r,Object.assign(Object.assign({},e),{addedAt:Date.now(),ref:i.createRef()})]}))}),[]),s=i.useCallback((e=>{o((t=>d(t,e)))}),[]),l=i.useCallback((()=>{o((()=>[]))}),[]),f=i.useCallback(((e,t)=>{o((n=>{if(!u(n,e))return n;const r=c(n,e);return[...n.slice(0,r),Object.assign(Object.assign({},n[r]),t),...n.slice(r+1)]}))}),[]),m=i.useRef(r);i.useEffect((()=>{m.current=r}),[r]);const g=i.useCallback((e=>!!m.current&&u(m.current,e)),[]),v=i.useMemo((()=>({add:a,remove:s,removeAll:l,update:f,has:g})),[a,s,l,f,g]);return i.useImperativeHandle(t,(()=>({add:a,remove:s,removeAll:l,update:f,has:g}))),i.createElement(h.Provider,{value:v},i.createElement(p.Provider,{value:r},n))}));f.displayName="ToasterProvider";var m=n(79805),g=n(63366),v=n(87462),y=n(97326),b=n(51721),x=n(24330);function w(e,t){var n=Object.create(null);return e&&i.Children.map(e,(function(e){return e})).forEach((function(e){n[e.key]=function(e){return t&&(0,i.isValidElement)(e)?t(e):e}(e)})),n}function S(e,t,n){return null!=n[t]?n[t]:e.props[t]}function _(e,t,n){var r=w(e.children),o=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,i=Object.create(null),o=[];for(var a in e)a in t?o.length&&(i[a]=o,o=[]):o.push(a);var s={};for(var l in t){if(i[l])for(r=0;r<i[l].length;r++){var c=i[l][r];s[i[l][r]]=n(c)}s[l]=n(l)}for(r=0;r<o.length;r++)s[o[r]]=n(o[r]);return s}(t,r);return Object.keys(o).forEach((function(a){var s=o[a];if((0,i.isValidElement)(s)){var l=a in t,c=a in r,u=t[a],d=(0,i.isValidElement)(u)&&!u.props.in;!c||l&&!d?c||!l||d?c&&l&&(0,i.isValidElement)(u)&&(o[a]=(0,i.cloneElement)(s,{onExited:n.bind(null,s),in:u.props.in,exit:S(s,"exit",e),enter:S(s,"enter",e)})):o[a]=(0,i.cloneElement)(s,{in:!1}):o[a]=(0,i.cloneElement)(s,{onExited:n.bind(null,s),in:!0,exit:S(s,"exit",e),enter:S(s,"enter",e)})}})),o}var C=Object.values||function(e){return Object.keys(e).map((function(t){return e[t]}))},E=function(e){function t(t,n){var r,i=(r=e.call(this,t,n)||this).handleExited.bind((0,y.Z)(r));return r.state={contextValue:{isMounting:!0},handleExited:i,firstRender:!0},r}(0,b.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},n.componentWillUnmount=function(){this.mounted=!1},t.getDerivedStateFromProps=function(e,t){var n,r,o=t.children,a=t.handleExited;return{children:t.firstRender?(n=e,r=a,w(n.children,(function(e){return(0,i.cloneElement)(e,{onExited:r.bind(null,e),in:!0,appear:S(e,"appear",n),enter:S(e,"enter",n),exit:S(e,"exit",n)})}))):_(e,o,a),firstRender:!1}},n.handleExited=function(e,t){var n=w(this.props.children);e.key in n||(e.props.onExited&&e.props.onExited(t),this.mounted&&this.setState((function(t){var n=(0,v.Z)({},t.children);return delete n[e.key],{children:n}})))},n.render=function(){var e=this.props,t=e.component,n=e.childFactory,r=(0,g.Z)(e,["component","childFactory"]),o=this.state.contextValue,a=C(this.state.children).map(n);return delete r.appear,delete r.enter,delete r.exit,null===t?i.createElement(x.Z.Provider,{value:o},a):i.createElement(x.Z.Provider,{value:o},i.createElement(t,r,a))},t}(i.Component);E.propTypes={},E.defaultProps={component:"div",childFactory:function(e){return e}};const T=E;var O=n(62685),N=n(31445),k=n(68010),j=n(96261),I=n(93316),P=n(3442),D=n(77280);function A(e){let{onClose:t,timeout:n}=e;const[r,o,a]=function(){const[e,t]=i.useState(!1);return[i.useCallback((()=>{t(!0)}),[]),i.useCallback((()=>{t(!1)}),[]),e]}();var s,l;return s=t,l=a?null:n,i.useEffect((()=>{if("number"!==typeof l)return;const e=setTimeout((()=>{s()}),l);return()=>{clearTimeout(e)}}),[s,l]),{onMouseOver:r,onMouseLeave:o}}var R=n(17176),M=n(88776),L=n(54973);const F=JSON.parse('{"label_close-button":"Close"}'),z=JSON.parse('{"label_close-button":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c"}'),B=(0,L.e)({en:F,ru:z},"Toaster"),U=(0,l.Ge)("toast"),H=5e3,V={normal:null,info:k.Z,success:j.Z,warning:I.Z,danger:I.Z,utility:P.Z};const G=i.forwardRef((function(e,t){const{name:n,content:r,actions:o,title:a,className:s,theme:l="normal",renderIcon:c,autoHiding:u=H,isClosable:d=!0,mobile:h=!1,removeCallback:p}=e,f=i.useCallback((()=>p(n)),[p,n]),m=A({onClose:f,timeout:"number"===typeof u?u:void 0}),g={mobile:h,theme:l},v=Boolean(a),y=Boolean(r),b=c?c(e):function(e){let{theme:t}=e;return t&&V[t]?i.createElement(M.J,{data:V[t],size:20,className:U("icon",{[t]:!0})}):null}({theme:l});return i.createElement("div",Object.assign({ref:t,className:U(g,s)},m,{"data-toast":!0}),b&&i.createElement("div",{className:U("icon-container")},b),i.createElement("div",{className:U("container")},v&&i.createElement("h3",{className:U("title")},a),d&&i.createElement(R.z,{size:"s",view:"flat",className:U("btn-close"),onClick:f,extraProps:{"aria-label":B("label_close-button")}},i.createElement(M.J,{data:D.Z})),y&&i.createElement("div",{className:U("content",{"without-title":!v})},r),function(e){let{actions:t,onClose:n}=e;return t&&t.length?i.createElement("div",{className:U("actions")},t.map(((e,t)=>{let{label:r,onClick:o,view:a="outlined",removeAfterClick:s=!0}=e;return i.createElement(R.z,{key:"".concat(r,"__").concat(t),className:U("action"),onClick:()=>{o(),s&&n()},type:"button",size:"l",view:a,width:"auto"},r)}))):null}({actions:o,onClose:f})))})),W=(0,N.Y)((0,l.Ge)("toast-animation-desktop")),q=(0,N.Y)((0,l.Ge)("toast-animation-mobile"));function Z(e){const{toasts:t,mobile:n,removeCallback:r}=e;return i.createElement(T,{component:null},t.map((e=>i.createElement(O.Z,{key:"".concat(e.name,"_").concat(e.addedAt),nodeRef:e.ref,classNames:n?q:W,addEndListener:t=>{var n,r;return null===(r=null===(n=e.ref)||void 0===n?void 0:n.current)||void 0===r?void 0:r.addEventListener("animationend",t)},onEnter:()=>Y(e),onExit:()=>Y(e)},i.createElement(G,Object.assign({},e,{mobile:n,removeCallback:r}))))))}function Y(e){var t;(null===(t=e.ref)||void 0===t?void 0:t.current)&&e.ref.current.style.setProperty("--_--item-height","".concat(e.ref.current.offsetHeight,"px"))}var K=n(57107);const Q=(0,l.Ge)("toaster");function X(e){let{children:t,className:n,mobile:r}=e;const o=i.useRef("undefined"===typeof document?void 0:document.createElement("div"));return i.useEffect((()=>{const e=o.current;if(e)return document.body.appendChild(e),()=>{document.body.removeChild(e)}}),[]),i.useEffect((()=>{o.current&&(o.current.className=Q({mobile:r},n))}),[n,r]),i.createElement(K.h,{container:o.current},t)}function $(e){let{className:t,mobile:n,hasPortal:r=!0}=e;const o=(0,m.X)(),{remove:a}=function(){const e=i.useContext(h);if(null===e)throw new Error("Toaster: `useToaster` hook is used out of context");return i.useMemo((()=>e),[e])}(),s=i.useContext(p),l=i.createElement(Z,{toasts:s,removeCallback:a,mobile:null!==n&&void 0!==n?n:o});return r?i.createElement(X,{className:t||"",mobile:null!==n&&void 0!==n?n:o},l):l}X.displayName="ToasterPortal",$.displayName="ToasterComponent";const J=Symbol("Toaster instance key"),ee=(0,l.Ge)("toaster");let te;class ne{static injectReactDOMClient(e){te=e}constructor(e){this.className="",this.mobile=!1,this.componentAPI=null,this.add=e=>{var t;null===(t=this.componentAPI)||void 0===t||t.add(e)},this.remove=e=>{var t;null===(t=this.componentAPI)||void 0===t||t.remove(e)},this.removeAll=()=>{var e;null===(e=this.componentAPI)||void 0===e||e.removeAll()},this.update=(e,t)=>{var n;null===(n=this.componentAPI)||void 0===n||n.update(e,t)},this.has=e=>{var t,n;return null!==(n=null===(t=this.componentAPI)||void 0===t?void 0:t.has(e))&&void 0!==n&&n};const t=a()(e,["className"],""),n=a()(e,["mobile"],!1);if(window[J]instanceof ne){const e=window[J];return e.className=t,e.mobile=n,e.setRootNodeClassName(),e}this.className=t,this.mobile=n,this.createRootNode(),this.createReactRoot(),this.render(),window[J]=this}destroy(){s.unmountComponentAtNode(this.rootNode),document.body.removeChild(this.rootNode)}createRootNode(){this.rootNode=document.createElement("div"),this.setRootNodeClassName(),document.body.appendChild(this.rootNode)}createReactRoot(){te&&(this.reactRoot=te.createRoot(this.rootNode))}render(){const e=i.createElement(f,{ref:e=>{this.componentAPI=e}},i.createElement($,{hasPortal:!1,mobile:this.mobile}));this.reactRoot?this.reactRoot.render(e):s.render(e,this.rootNode,(()=>Promise.resolve()))}setRootNodeClassName(){this.rootNode.className=ee({mobile:this.mobile},this.className)}}ne.injectReactDOMClient(r);const re="object"===typeof window?new ne:{}},69039:(e,t,n)=>{"use strict";var r=n(42780),i=n(9371),o=i(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"===typeof n&&o(e,".prototype.")>-1?i(n):n}},9371:(e,t,n)=>{"use strict";var r=n(88050),i=n(42780),o=n(18083),a=n(84968),s=i("%Function.prototype.apply%"),l=i("%Function.prototype.call%"),c=i("%Reflect.apply%",!0)||r.call(l,s),u=n(85122),d=i("%Math.max%");e.exports=function(e){if("function"!==typeof e)throw new a("a function is required");var t=c(r,l,arguments);return o(t,1+d(0,e.length-(arguments.length-1)),!0)};var h=function(){return c(r,s,arguments)};u?u(e.exports,"apply",{value:h}):e.exports.apply=h},69886:(e,t,n)=>{"use strict";var r=n(21034),i={"text/plain":"Text","text/html":"Url",default:"Text"},o="Copy to clipboard: #{key}, Enter";e.exports=function(e,t){var n,a,s,l,c,u,d=!1;t||(t={}),n=t.debug||!1;try{if(s=r(),l=document.createRange(),c=document.getSelection(),(u=document.createElement("span")).textContent=e,u.ariaHidden="true",u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=i[t.format]||i.default;window.clipboardData.setData(o,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(u),l.selectNodeContents(u),c.addRange(l),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");d=!0}catch(h){n&&console.error("unable to copy using execCommand: ",h),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(h){n&&console.error("unable to copy using clipboardData: ",h),n&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:o),window.prompt(a,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(l):c.removeAllRanges()),u&&document.body.removeChild(u),s()}return d}},47694:(e,t)=>{var n;n=function(e){e.version="1.2.2";var t=function(){for(var e=0,t=new Array(256),n=0;256!=n;++n)e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=n)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1,t[n]=e;return"undefined"!==typeof Int32Array?new Int32Array(t):t}(),n=function(e){var t=0,n=0,r=0,i="undefined"!==typeof Int32Array?new Int32Array(4096):new Array(4096);for(r=0;256!=r;++r)i[r]=e[r];for(r=0;256!=r;++r)for(n=e[r],t=256+r;t<4096;t+=256)n=i[t]=n>>>8^e[255&n];var o=[];for(r=1;16!=r;++r)o[r-1]="undefined"!==typeof Int32Array?i.subarray(256*r,256*r+256):i.slice(256*r,256*r+256);return o}(t),r=n[0],i=n[1],o=n[2],a=n[3],s=n[4],l=n[5],c=n[6],u=n[7],d=n[8],h=n[9],p=n[10],f=n[11],m=n[12],g=n[13],v=n[14];e.table=t,e.bstr=function(e,n){for(var r=-1^n,i=0,o=e.length;i<o;)r=r>>>8^t[255&(r^e.charCodeAt(i++))];return~r},e.buf=function(e,n){for(var y=-1^n,b=e.length-15,x=0;x<b;)y=v[e[x++]^255&y]^g[e[x++]^y>>8&255]^m[e[x++]^y>>16&255]^f[e[x++]^y>>>24]^p[e[x++]]^h[e[x++]]^d[e[x++]]^u[e[x++]]^c[e[x++]]^l[e[x++]]^s[e[x++]]^a[e[x++]]^o[e[x++]]^i[e[x++]]^r[e[x++]]^t[e[x++]];for(b+=15;x<b;)y=y>>>8^t[255&(y^e[x++])];return~y},e.str=function(e,n){for(var r=-1^n,i=0,o=e.length,a=0,s=0;i<o;)(a=e.charCodeAt(i++))<128?r=r>>>8^t[255&(r^a)]:a<2048?r=(r=r>>>8^t[255&(r^(192|a>>6&31))])>>>8^t[255&(r^(128|63&a))]:a>=55296&&a<57344?(a=64+(1023&a),s=1023&e.charCodeAt(i++),r=(r=(r=(r=r>>>8^t[255&(r^(240|a>>8&7))])>>>8^t[255&(r^(128|a>>2&63))])>>>8^t[255&(r^(128|s>>6&15|(3&a)<<4))])>>>8^t[255&(r^(128|63&s))]):r=(r=(r=r>>>8^t[255&(r^(224|a>>12&15))])>>>8^t[255&(r^(128|a>>6&63))])>>>8^t[255&(r^(128|63&a))];return~r}},"undefined"===typeof DO_NOT_EXPORT_CRC?n(t):n({})},44937:(e,t,n)=>{"use strict";var r=n(29335),i={};var o=function(e){};function a(e,t,n,r,i,a,s,l){if(o(t),!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,i,a,s,l],d=0;(c=new Error(t.replace(/%s/g,(function(){return u[d++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}var s="mixins";e.exports=function(e,t,n){var o=[],l={mixins:"DEFINE_MANY",statics:"DEFINE_MANY",propTypes:"DEFINE_MANY",contextTypes:"DEFINE_MANY",childContextTypes:"DEFINE_MANY",getDefaultProps:"DEFINE_MANY_MERGED",getInitialState:"DEFINE_MANY_MERGED",getChildContext:"DEFINE_MANY_MERGED",render:"DEFINE_ONCE",componentWillMount:"DEFINE_MANY",componentDidMount:"DEFINE_MANY",componentWillReceiveProps:"DEFINE_MANY",shouldComponentUpdate:"DEFINE_ONCE",componentWillUpdate:"DEFINE_MANY",componentDidUpdate:"DEFINE_MANY",componentWillUnmount:"DEFINE_MANY",UNSAFE_componentWillMount:"DEFINE_MANY",UNSAFE_componentWillReceiveProps:"DEFINE_MANY",UNSAFE_componentWillUpdate:"DEFINE_MANY",updateComponent:"OVERRIDE_BASE"},c={getDerivedStateFromProps:"DEFINE_MANY_MERGED"},u={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n<t.length;n++)h(e,t[n])},childContextTypes:function(e,t){e.childContextTypes=r({},e.childContextTypes,t)},contextTypes:function(e,t){e.contextTypes=r({},e.contextTypes,t)},getDefaultProps:function(e,t){e.getDefaultProps?e.getDefaultProps=f(e.getDefaultProps,t):e.getDefaultProps=t},propTypes:function(e,t){e.propTypes=r({},e.propTypes,t)},statics:function(e,t){!function(e,t){if(!t)return;for(var n in t){var r=t[n];if(t.hasOwnProperty(n)){if(a(!(n in u),'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n),n in e)return a("DEFINE_MANY_MERGED"===(c.hasOwnProperty(n)?c[n]:null),"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),void(e[n]=f(e[n],r));e[n]=r}}}(e,t)},autobind:function(){}};function d(e,t){var n=l.hasOwnProperty(t)?l[t]:null;b.hasOwnProperty(t)&&a("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",t),e&&a("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",t)}function h(e,n){if(n){a("function"!==typeof n,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),a(!t(n),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var r=e.prototype,i=r.__reactAutoBindPairs;for(var o in n.hasOwnProperty(s)&&u.mixins(e,n.mixins),n)if(n.hasOwnProperty(o)&&o!==s){var c=n[o],h=r.hasOwnProperty(o);if(d(h,o),u.hasOwnProperty(o))u[o](e,c);else{var p=l.hasOwnProperty(o);if("function"===typeof c&&!p&&!h&&!1!==n.autobind)i.push(o,c),r[o]=c;else if(h){var g=l[o];a(p&&("DEFINE_MANY_MERGED"===g||"DEFINE_MANY"===g),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",g,o),"DEFINE_MANY_MERGED"===g?r[o]=f(r[o],c):"DEFINE_MANY"===g&&(r[o]=m(r[o],c))}else r[o]=c}}}else;}function p(e,t){for(var n in a(e&&t&&"object"===typeof e&&"object"===typeof t,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects."),t)t.hasOwnProperty(n)&&(a(void 0===e[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),e[n]=t[n]);return e}function f(e,t){return function(){var n=e.apply(this,arguments),r=t.apply(this,arguments);if(null==n)return r;if(null==r)return n;var i={};return p(i,n),p(i,r),i}}function m(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function g(e,t){return t.bind(e)}var v={componentDidMount:function(){this.__isMounted=!0}},y={componentWillUnmount:function(){this.__isMounted=!1}},b={replaceState:function(e,t){this.updater.enqueueReplaceState(this,e,t)},isMounted:function(){return!!this.__isMounted}},x=function(){};return r(x.prototype,e.prototype,b),function(e){var t=function(e,r,o){this.__reactAutoBindPairs.length&&function(e){for(var t=e.__reactAutoBindPairs,n=0;n<t.length;n+=2){var r=t[n],i=t[n+1];e[r]=g(e,i)}}(this),this.props=e,this.context=r,this.refs=i,this.updater=o||n,this.state=null;var s=this.getInitialState?this.getInitialState():null;a("object"===typeof s&&!Array.isArray(s),"%s.getInitialState(): must return an object or null",t.displayName||"ReactCompositeComponent"),this.state=s};for(var r in t.prototype=new x,t.prototype.constructor=t,t.prototype.__reactAutoBindPairs=[],o.forEach(h.bind(null,t)),h(t,v),h(t,e),h(t,y),t.getDefaultProps&&(t.defaultProps=t.getDefaultProps()),a(t.prototype.render,"createClass(...): Class specification must implement a `render` method."),l)t.prototype[r]||(t.prototype[r]=null);return t}}},77065:(e,t,n)=>{"use strict";var r=n(68963),i=n(44937);if("undefined"===typeof r)throw Error("create-react-class could not find the React object. If you are using script tags, make sure that React is being loaded before create-react-class.");var o=(new r.Component).updater;e.exports=i(r.Component,r.isValidElement,o)},75812:e=>{e.exports=Date.now||function(){return(new Date).getTime()}},22877:function(e){e.exports=function(){"use strict";var e=1e3,t=6e4,n=36e5,r="millisecond",i="second",o="minute",a="hour",s="day",l="week",c="month",u="quarter",d="year",h="date",p="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},v=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},y={s:v,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+v(r,2,"0")+":"+v(i,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(r,c),o=n-i<0,a=t.clone().add(r+(o?-1:1),c);return+(-(r+(n-i)/(o?i-a:a-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:c,y:d,w:l,d:s,D:h,h:a,m:o,s:i,ms:r,Q:u}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},b="en",x={};x[b]=g;var w="$isDayjsObject",S=function(e){return e instanceof T||!(!e||!e[w])},_=function e(t,n,r){var i;if(!t)return b;if("string"==typeof t){var o=t.toLowerCase();x[o]&&(i=o),n&&(x[o]=n,i=o);var a=t.split("-");if(!i&&a.length>1)return e(a[0])}else{var s=t.name;x[s]=t,i=s}return!r&&i&&(b=i),i||!r&&b},C=function(e,t){if(S(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new T(n)},E=y;E.l=_,E.i=S,E.w=function(e,t){return C(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var T=function(){function g(e){this.$L=_(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[w]=!0}var v=g.prototype;return v.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(E.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(f);if(r){var i=r[2]-1||0,o=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(e),this.init()},v.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},v.$utils=function(){return E},v.isValid=function(){return!(this.$d.toString()===p)},v.isSame=function(e,t){var n=C(e);return this.startOf(t)<=n&&n<=this.endOf(t)},v.isAfter=function(e,t){return C(e)<this.startOf(t)},v.isBefore=function(e,t){return this.endOf(t)<C(e)},v.$g=function(e,t,n){return E.u(e)?this[t]:this.set(n,e)},v.unix=function(){return Math.floor(this.valueOf()/1e3)},v.valueOf=function(){return this.$d.getTime()},v.startOf=function(e,t){var n=this,r=!!E.u(t)||t,u=E.p(e),p=function(e,t){var i=E.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return r?i:i.endOf(s)},f=function(e,t){return E.w(n.toDate()[e].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},m=this.$W,g=this.$M,v=this.$D,y="set"+(this.$u?"UTC":"");switch(u){case d:return r?p(1,0):p(31,11);case c:return r?p(1,g):p(0,g+1);case l:var b=this.$locale().weekStart||0,x=(m<b?m+7:m)-b;return p(r?v-x:v+(6-x),g);case s:case h:return f(y+"Hours",0);case a:return f(y+"Minutes",1);case o:return f(y+"Seconds",2);case i:return f(y+"Milliseconds",3);default:return this.clone()}},v.endOf=function(e){return this.startOf(e,!1)},v.$set=function(e,t){var n,l=E.p(e),u="set"+(this.$u?"UTC":""),p=(n={},n[s]=u+"Date",n[h]=u+"Date",n[c]=u+"Month",n[d]=u+"FullYear",n[a]=u+"Hours",n[o]=u+"Minutes",n[i]=u+"Seconds",n[r]=u+"Milliseconds",n)[l],f=l===s?this.$D+(t-this.$W):t;if(l===c||l===d){var m=this.clone().set(h,1);m.$d[p](f),m.init(),this.$d=m.set(h,Math.min(this.$D,m.daysInMonth())).$d}else p&&this.$d[p](f);return this.init(),this},v.set=function(e,t){return this.clone().$set(e,t)},v.get=function(e){return this[E.p(e)]()},v.add=function(r,u){var h,p=this;r=Number(r);var f=E.p(u),m=function(e){var t=C(p);return E.w(t.date(t.date()+Math.round(e*r)),p)};if(f===c)return this.set(c,this.$M+r);if(f===d)return this.set(d,this.$y+r);if(f===s)return m(1);if(f===l)return m(7);var g=(h={},h[o]=t,h[a]=n,h[i]=e,h)[f]||1,v=this.$d.getTime()+r*g;return E.w(v,this)},v.subtract=function(e,t){return this.add(-1*e,t)},v.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||p;var r=e||"YYYY-MM-DDTHH:mm:ssZ",i=E.z(this),o=this.$H,a=this.$m,s=this.$M,l=n.weekdays,c=n.months,u=n.meridiem,d=function(e,n,i,o){return e&&(e[n]||e(t,r))||i[n].slice(0,o)},h=function(e){return E.s(o%12||12,e,"0")},f=u||function(e,t,n){var r=e<12?"AM":"PM";return n?r.toLowerCase():r};return r.replace(m,(function(e,r){return r||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return E.s(t.$y,4,"0");case"M":return s+1;case"MM":return E.s(s+1,2,"0");case"MMM":return d(n.monthsShort,s,c,3);case"MMMM":return d(c,s);case"D":return t.$D;case"DD":return E.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return d(n.weekdaysMin,t.$W,l,2);case"ddd":return d(n.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$W];case"H":return String(o);case"HH":return E.s(o,2,"0");case"h":return h(1);case"hh":return h(2);case"a":return f(o,a,!0);case"A":return f(o,a,!1);case"m":return String(a);case"mm":return E.s(a,2,"0");case"s":return String(t.$s);case"ss":return E.s(t.$s,2,"0");case"SSS":return E.s(t.$ms,3,"0");case"Z":return i}return null}(e)||i.replace(":","")}))},v.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},v.diff=function(r,h,p){var f,m=this,g=E.p(h),v=C(r),y=(v.utcOffset()-this.utcOffset())*t,b=this-v,x=function(){return E.m(m,v)};switch(g){case d:f=x()/12;break;case c:f=x();break;case u:f=x()/3;break;case l:f=(b-y)/6048e5;break;case s:f=(b-y)/864e5;break;case a:f=b/n;break;case o:f=b/t;break;case i:f=b/e;break;default:f=b}return p?f:E.a(f)},v.daysInMonth=function(){return this.endOf(c).$D},v.$locale=function(){return x[this.$L]},v.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=_(e,t,!0);return r&&(n.$L=r),n},v.clone=function(){return E.w(this.$d,this)},v.toDate=function(){return new Date(this.valueOf())},v.toJSON=function(){return this.isValid()?this.toISOString():null},v.toISOString=function(){return this.$d.toISOString()},v.toString=function(){return this.$d.toUTCString()},g}(),O=T.prototype;return C.prototype=O,[["$ms",r],["$s",i],["$m",o],["$H",a],["$W",s],["$M",c],["$y",d],["$D",h]].forEach((function(e){O[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),C.extend=function(e,t){return e.$i||(e(t,T,C),e.$i=!0),C},C.locale=_,C.isDayjs=S,C.unix=function(e){return C(1e3*e)},C.en=x[b],C.Ls=x,C.p={},C}()},46770:function(e){e.exports=function(){"use strict";return function(e,t){var n=t.prototype,r=n.format;n.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return r.bind(this)(e);var i=this.$utils(),o=(e||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case"Q":return Math.ceil((t.$M+1)/3);case"Do":return n.ordinal(t.$D);case"gggg":return t.weekYear();case"GGGG":return t.isoWeekYear();case"wo":return n.ordinal(t.week(),"W");case"w":case"ww":return i.s(t.week(),"w"===e?1:2,"0");case"W":case"WW":return i.s(t.isoWeek(),"W"===e?1:2,"0");case"k":case"kk":return i.s(String(0===t.$H?24:t.$H),"k"===e?1:2,"0");case"X":return Math.floor(t.$d.getTime()/1e3);case"x":return t.$d.getTime();case"z":return"["+t.offsetName()+"]";case"zzz":return"["+t.offsetName("long")+"]";default:return e}}));return r.bind(this)(o)}}}()},9817:function(e){e.exports=function(){"use strict";return function(e,t,n){var r=t.prototype,i=function(e){var t=e.date,r=e.utc;return Array.isArray(t)?r?t.length?new Date(Date.UTC.apply(null,t)):new Date:1===t.length?n(String(t[0])).toDate():new(Function.prototype.bind.apply(Date,[null].concat(t))):t},o=r.parse;r.parse=function(e){e.date=i.bind(this)(e),o.bind(this)(e)}}}()},52703:function(e){e.exports=function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d\d/,r=/\d\d?/,i=/\d*[^-_:/,()\s\d]+/,o={},a=function(e){return(e=+e)+(e>68?1900:2e3)},s=function(e){return function(t){this[e]=+t}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:"+"===t[0]?-n:n}(e)}],c=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?"pm":"PM");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[r,s("seconds")],ss:[r,s("seconds")],m:[r,s("minutes")],mm:[r,s("minutes")],H:[r,s("hours")],h:[r,s("hours")],HH:[r,s("hours")],hh:[r,s("hours")],D:[r,s("day")],DD:[n,s("day")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,"")===e&&(this.day=r)}],M:[r,s("month")],MM:[n,s("month")],MMM:[i,function(e){var t=c("months"),n=(c("monthsShort")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=c("months").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\d+/,s("year")],YY:[n,function(e){this.year=a(e)}],YYYY:[/\d{4}/,s("year")],Z:l,ZZ:l};function h(n){var r,i;r=n,i=o&&o.formats;for(var a=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),s=a.length,l=0;l<s;l+=1){var c=a[l],u=d[c],h=u&&u[0],p=u&&u[1];a[l]=p?{regex:h,parser:p}:c.replace(/^\[|\]$/g,"")}return function(e){for(var t={},n=0,r=0;n<s;n+=1){var i=a[n];if("string"==typeof i)r+=i.length;else{var o=i.regex,l=i.parser,c=e.slice(r),u=o.exec(c)[0];l.call(t,u),e=e.replace(u,"")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,a=e.args;this.$u=r;var s=a[1];if("string"==typeof s){var l=!0===a[2],c=!0===a[3],u=l||c,d=a[2];c&&(d=a[2]),o=this.$locale(),!l&&d&&(o=n.Ls[d]),this.$d=function(e,t,n){try{if(["x","X"].indexOf(t)>-1)return new Date(("X"===t?1e3:1)*e);var r=h(t)(e),i=r.year,o=r.month,a=r.day,s=r.hours,l=r.minutes,c=r.seconds,u=r.milliseconds,d=r.zone,p=new Date,f=a||(i||o?1:p.getDate()),m=i||p.getFullYear(),g=0;i&&!o||(g=o>0?o-1:p.getMonth());var v=s||0,y=l||0,b=c||0,x=u||0;return d?new Date(Date.UTC(m,g,f,v,y,b,x+60*d.offset*1e3)):n?new Date(Date.UTC(m,g,f,v,y,b,x)):new Date(m,g,f,v,y,b,x)}catch(e){return new Date("")}}(t,s,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(s)&&(this.$d=new Date("")),o={}}else if(s instanceof Array)for(var p=s.length,f=1;f<=p;f+=1){a[1]=s[f-1];var m=n.apply(this,a);if(m.isValid()){this.$d=m.$d,this.$L=m.$L,this.init();break}f===p&&(this.$d=new Date(""))}else i.call(this,e)}}}()},46635:function(e){e.exports=function(){"use strict";var e="day";return function(t,n,r){var i=function(t){return t.add(4-t.isoWeekday(),e)},o=n.prototype;o.isoWeekYear=function(){return i(this).year()},o.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var n,o,a,s=i(this),l=(n=this.isoWeekYear(),a=4-(o=(this.$u?r.utc:r)().year(n).startOf("year")).isoWeekday(),o.isoWeekday()>4&&(a+=7),o.add(a,e));return s.diff(l,"week")+1},o.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var a=o.startOf;o.startOf=function(e,t){var n=this.$utils(),r=!!n.u(t)||t;return"isoweek"===n.p(e)?r?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):a.bind(this)(e,t)}}}()},13708:function(e){e.exports=function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};return function(t,n,r){var i=n.prototype,o=i.format;r.en.formats=e,i.format=function(t){void 0===t&&(t="YYYY-MM-DDTHH:mm:ssZ");var n=this.$locale().formats,r=function(t,n){return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,r,i){var o=i&&i.toUpperCase();return r||n[i]||e[i]||n[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))}(t,void 0===n?{}:n);return o.call(this,r)}}}()},93876:function(e){e.exports=function(){"use strict";return function(e,t,n){var r=t.prototype,i=function(e){var t,i=e.date,o=e.utc,a={};if(!(null===(t=i)||t instanceof Date||t instanceof Array||r.$utils().u(t)||"Object"!==t.constructor.name)){if(!Object.keys(i).length)return new Date;var s=o?n.utc():n();Object.keys(i).forEach((function(e){var t,n;a[(t=e,n=r.$utils().p(t),"date"===n?"day":n)]=i[e]}));var l=a.day||(a.year||a.month>=0?1:s.date()),c=a.year||s.year(),u=a.month>=0?a.month:a.year||a.day?0:s.month(),d=a.hour||0,h=a.minute||0,p=a.second||0,f=a.millisecond||0;return o?new Date(Date.UTC(c,u,l,d,h,p,f)):new Date(c,u,l,d,h,p,f)}return i},o=r.parse;r.parse=function(e){e.date=i.bind(this)(e),o.bind(this)(e)};var a=r.set,s=r.add,l=r.subtract,c=function(e,t,n,r){void 0===r&&(r=1);var i=Object.keys(t),o=this;return i.forEach((function(n){o=e.bind(o)(t[n]*r,n)})),o};r.set=function(e,t){return t=void 0===t?e:t,"Object"===e.constructor.name?c.bind(this)((function(e,t){return a.bind(this)(t,e)}),t,e):a.bind(this)(e,t)},r.add=function(e,t){return"Object"===e.constructor.name?c.bind(this)(s,e,t):s.bind(this)(e,t)},r.subtract=function(e,t){return"Object"===e.constructor.name?c.bind(this)(s,e,t,-1):l.bind(this)(e,t)}}}()},87134:function(e){e.exports=function(){"use strict";var e="month",t="quarter";return function(n,r){var i=r.prototype;i.quarter=function(e){return this.$utils().u(e)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(e-1))};var o=i.add;i.add=function(n,r){return n=Number(n),this.$utils().p(r)===t?this.add(3*n,e):o.bind(this)(n,r)};var a=i.startOf;i.startOf=function(n,r){var i=this.$utils(),o=!!i.u(r)||r;if(i.p(n)===t){var s=this.quarter()-1;return o?this.month(3*s).startOf(e).startOf("day"):this.month(3*s+2).endOf(e).endOf("day")}return a.bind(this)(n,r)}}}()},72209:function(e){e.exports=function(){"use strict";return function(e,t,n){e=e||{};var r=t.prototype,i={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function o(e,t,n,i){return r.fromToBase(e,t,n,i)}n.en.relativeTime=i,r.fromToBase=function(t,r,o,a,s){for(var l,c,u,d=o.$locale().relativeTime||i,h=e.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],p=h.length,f=0;f<p;f+=1){var m=h[f];m.d&&(l=a?n(t).diff(o,m.d,!0):o.diff(t,m.d,!0));var g=(e.rounding||Math.round)(Math.abs(l));if(u=l>0,g<=m.r||!m.r){g<=1&&f>0&&(m=h[f-1]);var v=d[m.l];s&&(g=s(""+g)),c="string"==typeof v?v.replace("%d",g):v(g,r,m.l,u);break}}if(r)return c;var y=u?d.future:d.past;return"function"==typeof y?y(c):y.replace("%s",c)},r.to=function(e,t){return o(e,t,this,!0)},r.from=function(e,t){return o(e,t,this)};var a=function(e){return e.$u?n.utc():n()};r.toNow=function(e){return this.to(a(this),e)},r.fromNow=function(e){return this.from(a(this),e)}}}()},85226:function(e){e.exports=function(){"use strict";var e={year:0,month:1,day:2,hour:3,minute:4,second:5},t={};return function(n,r,i){var o,a=function(e,n,r){void 0===r&&(r={});var i=new Date(e),o=function(e,n){void 0===n&&(n={});var r=n.timeZoneName||"short",i=e+"|"+r,o=t[i];return o||(o=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:r}),t[i]=o),o}(n,r);return o.formatToParts(i)},s=function(t,n){for(var r=a(t,n),o=[],s=0;s<r.length;s+=1){var l=r[s],c=l.type,u=l.value,d=e[c];d>=0&&(o[d]=parseInt(u,10))}var h=o[3],p=24===h?0:h,f=o[0]+"-"+o[1]+"-"+o[2]+" "+p+":"+o[4]+":"+o[5]+":000",m=+t;return(i.utc(f).valueOf()-(m-=m%1e3))/6e4},l=r.prototype;l.tz=function(e,t){void 0===e&&(e=o);var n=this.utcOffset(),r=this.toDate(),a=r.toLocaleString("en-US",{timeZone:e}),s=Math.round((r-new Date(a))/1e3/60),l=i(a,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(15*-Math.round(r.getTimezoneOffset()/15)-s,!0);if(t){var c=l.utcOffset();l=l.add(n-c,"minute")}return l.$x.$timezone=e,l},l.offsetName=function(e){var t=this.$x.$timezone||i.tz.guess(),n=a(this.valueOf(),t,{timeZoneName:e}).find((function(e){return"timezonename"===e.type.toLowerCase()}));return n&&n.value};var c=l.startOf;l.startOf=function(e,t){if(!this.$x||!this.$x.$timezone)return c.call(this,e,t);var n=i(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return c.call(n,e,t).tz(this.$x.$timezone,!0)},i.tz=function(e,t,n){var r=n&&t,a=n||t||o,l=s(+i(),a);if("string"!=typeof e)return i(e).tz(a);var c=function(e,t,n){var r=e-60*t*1e3,i=s(r,n);if(t===i)return[r,t];var o=s(r-=60*(i-t)*1e3,n);return i===o?[r,i]:[e-60*Math.min(i,o)*1e3,Math.max(i,o)]}(i.utc(e,r).valueOf(),l,a),u=c[0],d=c[1],h=i(u).utcOffset(d);return h.$x.$timezone=a,h},i.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},i.tz.setDefault=function(e){o=e}}}()},1035:function(e){e.exports=function(){"use strict";return function(e,t,n){n.updateLocale=function(e,t){var r=n.Ls[e];if(r)return(t?Object.keys(t):[]).forEach((function(e){r[e]=t[e]})),r}}}()},54591:function(e){e.exports=function(){"use strict";var e="minute",t=/[+-]\d\d(?::?\d\d)?/g,n=/([+-]|\d\d)/g;return function(r,i,o){var a=i.prototype;o.utc=function(e){return new i({date:e,utc:!0,args:arguments})},a.utc=function(t){var n=o(this.toDate(),{locale:this.$L,utc:!0});return t?n.add(this.utcOffset(),e):n},a.local=function(){return o(this.toDate(),{locale:this.$L,utc:!1})};var s=a.parse;a.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),s.call(this,e)};var l=a.init;a.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else l.call(this)};var c=a.utcOffset;a.utcOffset=function(r,i){var o=this.$utils().u;if(o(r))return this.$u?0:o(this.$offset)?c.call(this):this.$offset;if("string"==typeof r&&(r=function(e){void 0===e&&(e="");var r=e.match(t);if(!r)return null;var i=(""+r[0]).match(n)||["-",0,0],o=i[0],a=60*+i[1]+ +i[2];return 0===a?0:"+"===o?a:-a}(r),null===r))return this;var a=Math.abs(r)<=16?60*r:r,s=this;if(i)return s.$offset=a,s.$u=0===r,s;if(0!==r){var l=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(s=this.local().add(a+l,e)).$offset=a,s.$x.$localOffset=l}else s=this.utc();return s};var u=a.format;a.format=function(e){var t=e||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return u.call(this,t)},a.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},a.isUTC=function(){return!!this.$u},a.toISOString=function(){return this.toDate().toISOString()},a.toString=function(){return this.toDate().toUTCString()};var d=a.toDate;a.toDate=function(e){return"s"===e&&this.$offset?o(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():d.call(this)};var h=a.diff;a.diff=function(e,t,n){if(e&&this.$u===e.$u)return h.call(this,e,t,n);var r=this.local(),i=o(e).local();return h.call(r,i,t,n)}}}()},8901:function(e){e.exports=function(){"use strict";var e="week",t="year";return function(n,r,i){var o=r.prototype;o.week=function(n){if(void 0===n&&(n=null),null!==n)return this.add(7*(n-this.week()),"day");var r=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var o=i(this).startOf(t).add(1,t).date(r),a=i(this).endOf(e);if(o.isBefore(a))return 1}var s=i(this).startOf(t).date(r).startOf(e).subtract(1,"millisecond"),l=this.diff(s,e,!0);return l<0?i(this).startOf("week").week():Math.ceil(l)},o.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}()},60305:(e,t,n)=>{var r=n(75812);e.exports=function(e,t,n){var i,o,a,s,l;function c(){var u=r()-s;u<t&&u>0?i=setTimeout(c,t-u):(i=null,n||(l=e.apply(a,o),i||(a=o=null)))}return null==t&&(t=100),function(){a=this,o=arguments,s=r();var u=n&&!i;return i||(i=setTimeout(c,t)),u&&(l=e.apply(a,o),a=o=null),l}}},10854:(e,t,n)=>{"use strict";var r=n(85122),i=n(47849),o=n(84968),a=n(81687);e.exports=function(e,t,n){if(!e||"object"!==typeof e&&"function"!==typeof e)throw new o("`obj` must be an object or a function`");if("string"!==typeof t&&"symbol"!==typeof t)throw new o("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!==typeof arguments[3]&&null!==arguments[3])throw new o("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!==typeof arguments[4]&&null!==arguments[4])throw new o("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!==typeof arguments[5]&&null!==arguments[5])throw new o("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!==typeof arguments[6])throw new o("`loose`, if provided, must be a boolean");var s=arguments.length>3?arguments[3]:null,l=arguments.length>4?arguments[4]:null,c=arguments.length>5?arguments[5]:null,u=arguments.length>6&&arguments[6],d=!!a&&a(e,t);if(r)r(e,t,{configurable:null===c&&d?d.configurable:!c,enumerable:null===s&&d?d.enumerable:!s,value:n,writable:null===l&&d?d.writable:!l});else{if(!u&&(s||l||c))throw new i("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");e[t]=n}}},85122:(e,t,n)=>{"use strict";var r=n(42780)("%Object.defineProperty%",!0)||!1;if(r)try{r({},"a",{value:1})}catch(i){r=!1}e.exports=r},16101:e=>{"use strict";e.exports=EvalError},41830:e=>{"use strict";e.exports=Error},69715:e=>{"use strict";e.exports=RangeError},64546:e=>{"use strict";e.exports=ReferenceError},47849:e=>{"use strict";e.exports=SyntaxError},84968:e=>{"use strict";e.exports=TypeError},68344:e=>{"use strict";e.exports=URIError},14702:(e,t,n)=>{var r,i=i||{version:"5.3.0"};if(t.fabric=i,"undefined"!==typeof document&&"undefined"!==typeof window)document instanceof("undefined"!==typeof HTMLDocument?HTMLDocument:Document)?i.document=document:i.document=document.implementation.createHTMLDocument(""),i.window=window;else{var o=new(n(24960).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;i.document=o.document,i.jsdomImplForWrapper=n(26759).implForWrapper,i.nodeCanvas=n(56272).Canvas,i.window=o,DOMParser=i.window.DOMParser}function a(e,t){var n=e.canvas,r=t.targetCanvas,i=r.getContext("2d");i.translate(0,r.height),i.scale(1,-1);var o=n.height-r.height;i.drawImage(n,0,o,r.width,r.height,0,0,r.width,r.height)}function s(e,t){var n=t.targetCanvas.getContext("2d"),r=t.destinationWidth,i=t.destinationHeight,o=r*i*4,a=new Uint8Array(this.imageBuffer,0,o),s=new Uint8ClampedArray(this.imageBuffer,0,o);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a);var l=new ImageData(s,r,i);n.putImageData(l,0,0)}i.isTouchSupported="ontouchstart"in i.window||"ontouchstart"in i.document||i.window&&i.window.navigator&&i.window.navigator.maxTouchPoints>0,i.isLikelyNode="undefined"!==typeof Buffer&&"undefined"===typeof window,i.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],i.DPI=96,i.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",i.commaWsp="(?:\\s+,?\\s*|,\\s*)",i.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,i.reNonWord=/[ \n\.,;!\?\-]/,i.fontPaths={},i.iMatrix=[1,0,0,1,0,0],i.svgNS="http://www.w3.org/2000/svg",i.perfLimitSizeTotal=2097152,i.maxCacheSideLimit=4096,i.minCacheSideLimit=256,i.charWidthsCache={},i.textureSize=2048,i.disableStyleCopyPaste=!1,i.enableGLFiltering=!0,i.devicePixelRatio=i.window.devicePixelRatio||i.window.webkitDevicePixelRatio||i.window.mozDevicePixelRatio||1,i.browserShadowBlurConstant=1,i.arcToSegmentsCache={},i.boundsOfCurveCache={},i.cachesBoundsOfCurve=!0,i.forceGLPutImageData=!1,i.initFilterBackend=function(){return i.enableGLFiltering&&i.isWebglSupported&&i.isWebglSupported(i.textureSize)?(console.log("max texture size: "+i.maxTextureSize),new i.WebglFilterBackend({tileSize:i.textureSize})):i.Canvas2dFilterBackend?new i.Canvas2dFilterBackend:void 0},"undefined"!==typeof document&&"undefined"!==typeof window&&(window.fabric=i),function(){function e(e,t){if(this.__eventListeners[e]){var n=this.__eventListeners[e];t?n[n.indexOf(t)]=!1:i.util.array.fill(n,!1)}}function t(e,t){var n=function(){t.apply(this,arguments),this.off(e,n)}.bind(this);this.on(e,n)}i.Observable={fire:function(e,t){if(!this.__eventListeners)return this;var n=this.__eventListeners[e];if(!n)return this;for(var r=0,i=n.length;r<i;r++)n[r]&&n[r].call(this,t||{});return this.__eventListeners[e]=n.filter((function(e){return!1!==e})),this},on:function(e,t){if(this.__eventListeners||(this.__eventListeners={}),1===arguments.length)for(var n in e)this.on(n,e[n]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(t);return this},once:function(e,n){if(1===arguments.length)for(var r in e)t.call(this,r,e[r]);else t.call(this,e,n);return this},off:function(t,n){if(!this.__eventListeners)return this;if(0===arguments.length)for(t in this.__eventListeners)e.call(this,t);else if(1===arguments.length&&"object"===typeof arguments[0])for(var r in t)e.call(this,r,t[r]);else e.call(this,t,n);return this}}}(),i.Collection={_objects:[],add:function(){if(this._objects.push.apply(this._objects,arguments),this._onObjectAdded)for(var e=0,t=arguments.length;e<t;e++)this._onObjectAdded(arguments[e]);return this.renderOnAddRemove&&this.requestRenderAll(),this},insertAt:function(e,t,n){var r=this._objects;return n?r[t]=e:r.splice(t,0,e),this._onObjectAdded&&this._onObjectAdded(e),this.renderOnAddRemove&&this.requestRenderAll(),this},remove:function(){for(var e,t=this._objects,n=!1,r=0,i=arguments.length;r<i;r++)-1!==(e=t.indexOf(arguments[r]))&&(n=!0,t.splice(e,1),this._onObjectRemoved&&this._onObjectRemoved(arguments[r]));return this.renderOnAddRemove&&n&&this.requestRenderAll(),this},forEachObject:function(e,t){for(var n=this.getObjects(),r=0,i=n.length;r<i;r++)e.call(t,n[r],r,n);return this},getObjects:function(e){return"undefined"===typeof e?this._objects.concat():this._objects.filter((function(t){return t.type===e}))},item:function(e){return this._objects[e]},isEmpty:function(){return 0===this._objects.length},size:function(){return this._objects.length},contains:function(e,t){return this._objects.indexOf(e)>-1||!!t&&this._objects.some((function(t){return"function"===typeof t.contains&&t.contains(e,!0)}))},complexity:function(){return this._objects.reduce((function(e,t){return e+=t.complexity?t.complexity():0}),0)}},i.CommonMethods={_setOptions:function(e){for(var t in e)this.set(t,e[t])},_initGradient:function(e,t){!e||!e.colorStops||e instanceof i.Gradient||this.set(t,new i.Gradient(e))},_initPattern:function(e,t,n){!e||!e.source||e instanceof i.Pattern?n&&n():this.set(t,new i.Pattern(e,n))},_setObject:function(e){for(var t in e)this._set(t,e[t])},set:function(e,t){return"object"===typeof e?this._setObject(e):this._set(e,t),this},_set:function(e,t){this[e]=t},toggle:function(e){var t=this.get(e);return"boolean"===typeof t&&this.set(e,!t),this},get:function(e){return this[e]}},function(e){var t=Math.sqrt,n=Math.atan2,r=Math.pow,o=Math.PI/180,a=Math.PI/2;i.util={cos:function(e){if(0===e)return 1;switch(e<0&&(e=-e),e/a){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},sin:function(e){if(0===e)return 0;var t=1;switch(e<0&&(t=-1),e/a){case 1:return t;case 2:return 0;case 3:return-t}return Math.sin(e)},removeFromArray:function(e,t){var n=e.indexOf(t);return-1!==n&&e.splice(n,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*o},radiansToDegrees:function(e){return e/o},rotatePoint:function(e,t,n){var r=new i.Point(e.x-t.x,e.y-t.y),o=i.util.rotateVector(r,n);return new i.Point(o.x,o.y).addEquals(t)},rotateVector:function(e,t){var n=i.util.sin(t),r=i.util.cos(t);return{x:e.x*r-e.y*n,y:e.x*n+e.y*r}},createVector:function(e,t){return new i.Point(t.x-e.x,t.y-e.y)},calcAngleBetweenVectors:function(e,t){return Math.acos((e.x*t.x+e.y*t.y)/(Math.hypot(e.x,e.y)*Math.hypot(t.x,t.y)))},getHatVector:function(e){return new i.Point(e.x,e.y).multiply(1/Math.hypot(e.x,e.y))},getBisector:function(e,t,n){var r=i.util.createVector(e,t),o=i.util.createVector(e,n),a=i.util.calcAngleBetweenVectors(r,o),s=a*(0===i.util.calcAngleBetweenVectors(i.util.rotateVector(r,a),o)?1:-1)/2;return{vector:i.util.getHatVector(i.util.rotateVector(r,s)),angle:a}},projectStrokeOnPoints:function(e,t,n){var r=[],o=t.strokeWidth/2,a=t.strokeUniform?new i.Point(1/t.scaleX,1/t.scaleY):new i.Point(1,1),s=function(e){var t=o/Math.hypot(e.x,e.y);return new i.Point(e.x*t*a.x,e.y*t*a.y)};return e.length<=1||e.forEach((function(l,c){var u,d,h=new i.Point(l.x,l.y);0===c?(d=e[c+1],u=n?s(i.util.createVector(d,h)).addEquals(h):e[e.length-1]):c===e.length-1?(u=e[c-1],d=n?s(i.util.createVector(u,h)).addEquals(h):e[0]):(u=e[c-1],d=e[c+1]);var p,f,m=i.util.getBisector(h,u,d),g=m.vector,v=m.angle;if("miter"===t.strokeLineJoin&&(p=-o/Math.sin(v/2),f=new i.Point(g.x*p*a.x,g.y*p*a.y),Math.hypot(f.x,f.y)/o<=t.strokeMiterLimit))return r.push(h.add(f)),void r.push(h.subtract(f));p=-o*Math.SQRT2,f=new i.Point(g.x*p*a.x,g.y*p*a.y),r.push(h.add(f)),r.push(h.subtract(f))})),r},transformPoint:function(e,t,n){return n?new i.Point(t[0]*e.x+t[2]*e.y,t[1]*e.x+t[3]*e.y):new i.Point(t[0]*e.x+t[2]*e.y+t[4],t[1]*e.x+t[3]*e.y+t[5])},makeBoundingBoxFromPoints:function(e,t){if(t)for(var n=0;n<e.length;n++)e[n]=i.util.transformPoint(e[n],t);var r=[e[0].x,e[1].x,e[2].x,e[3].x],o=i.util.array.min(r),a=i.util.array.max(r)-o,s=[e[0].y,e[1].y,e[2].y,e[3].y],l=i.util.array.min(s);return{left:o,top:l,width:a,height:i.util.array.max(s)-l}},invertTransform:function(e){var t=1/(e[0]*e[3]-e[1]*e[2]),n=[t*e[3],-t*e[1],-t*e[2],t*e[0]],r=i.util.transformPoint({x:e[4],y:e[5]},n,!0);return n[4]=-r.x,n[5]=-r.y,n},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},parseUnit:function(e,t){var n=/\D{0,2}$/.exec(e),r=parseFloat(e);switch(t||(t=i.Text.DEFAULT_SVG_FONT_SIZE),n[0]){case"mm":return r*i.DPI/25.4;case"cm":return r*i.DPI/2.54;case"in":return r*i.DPI;case"pt":return r*i.DPI/72;case"pc":return r*i.DPI/72*12;case"em":return r*t;default:return r}},falseFunction:function(){return!1},getKlass:function(e,t){return e=i.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),i.util.resolveNamespace(t)[e]},getSvgAttributes:function(e){var t=["instantiated_by_use","style","id","class"];switch(e){case"linearGradient":t=t.concat(["x1","y1","x2","y2","gradientUnits","gradientTransform"]);break;case"radialGradient":t=t.concat(["gradientUnits","gradientTransform","cx","cy","r","fx","fy","fr"]);break;case"stop":t=t.concat(["offset","stop-color","stop-opacity"])}return t},resolveNamespace:function(t){if(!t)return i;var n,r=t.split("."),o=r.length,a=e||i.window;for(n=0;n<o;++n)a=a[r[n]];return a},loadImage:function(e,t,n,r){if(e){var o=i.util.createImage(),a=function(){t&&t.call(n,o,!1),o=o.onload=o.onerror=null};o.onload=a,o.onerror=function(){i.log("Error loading "+o.src),t&&t.call(n,null,!0),o=o.onload=o.onerror=null},0!==e.indexOf("data")&&void 0!==r&&null!==r&&(o.crossOrigin=r),"data:image/svg"===e.substring(0,14)&&(o.onload=null,i.util.loadImageInDom(o,a)),o.src=e}else t&&t.call(n,e)},loadImageInDom:function(e,t){var n=i.document.createElement("div");n.style.width=n.style.height="1px",n.style.left=n.style.top="-100%",n.style.position="absolute",n.appendChild(e),i.document.querySelector("body").appendChild(n),e.onload=function(){t(),n.parentNode.removeChild(n),n=null}},enlivenObjects:function(e,t,n,r){var o=[],a=0,s=(e=e||[]).length;function l(){++a===s&&t&&t(o.filter((function(e){return e})))}s?e.forEach((function(e,t){e&&e.type?i.util.getKlass(e.type,n).fromObject(e,(function(n,i){i||(o[t]=n),r&&r(e,n,i),l()})):l()})):t&&t(o)},enlivenObjectEnlivables:function(e,t,n){var r=i.Object.ENLIVEN_PROPS.filter((function(t){return!!e[t]}));i.util.enlivenObjects(r.map((function(t){return e[t]})),(function(e){var i={};r.forEach((function(n,r){i[n]=e[r],t&&(t[n]=e[r])})),n&&n(i)}))},enlivenPatterns:function(e,t){function n(){++o===a&&t&&t(r)}var r=[],o=0,a=(e=e||[]).length;a?e.forEach((function(e,t){e&&e.source?new i.Pattern(e,(function(e){r[t]=e,n()})):(r[t]=e,n())})):t&&t(r)},groupSVGElements:function(e,t,n){var r;return e&&1===e.length?("undefined"!==typeof n&&(e[0].sourcePath=n),e[0]):(t&&(t.width&&t.height?t.centerPoint={x:t.width/2,y:t.height/2}:(delete t.width,delete t.height)),r=new i.Group(e,t),"undefined"!==typeof n&&(r.sourcePath=n),r)},populateWithProperties:function(e,t,n){if(n&&Array.isArray(n))for(var r=0,i=n.length;r<i;r++)n[r]in e&&(t[n[r]]=e[n[r]])},createCanvasElement:function(){return i.document.createElement("canvas")},copyCanvasElement:function(e){var t=i.util.createCanvasElement();return t.width=e.width,t.height=e.height,t.getContext("2d").drawImage(e,0,0),t},toDataURL:function(e,t,n){return e.toDataURL("image/"+t,n)},createImage:function(){return i.document.createElement("img")},multiplyTransformMatrices:function(e,t,n){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],n?0:e[0]*t[4]+e[2]*t[5]+e[4],n?0:e[1]*t[4]+e[3]*t[5]+e[5]]},qrDecompose:function(e){var i=n(e[1],e[0]),a=r(e[0],2)+r(e[1],2),s=t(a),l=(e[0]*e[3]-e[2]*e[1])/s,c=n(e[0]*e[2]+e[1]*e[3],a);return{angle:i/o,scaleX:s,scaleY:l,skewX:c/o,skewY:0,translateX:e[4],translateY:e[5]}},calcRotateMatrix:function(e){if(!e.angle)return i.iMatrix.concat();var t=i.util.degreesToRadians(e.angle),n=i.util.cos(t),r=i.util.sin(t);return[n,r,-r,n,0,0]},calcDimensionsMatrix:function(e){var t="undefined"===typeof e.scaleX?1:e.scaleX,n="undefined"===typeof e.scaleY?1:e.scaleY,r=[e.flipX?-t:t,0,0,e.flipY?-n:n,0,0],o=i.util.multiplyTransformMatrices,a=i.util.degreesToRadians;return e.skewX&&(r=o(r,[1,0,Math.tan(a(e.skewX)),1],!0)),e.skewY&&(r=o(r,[1,Math.tan(a(e.skewY)),0,1],!0)),r},composeMatrix:function(e){var t=[1,0,0,1,e.translateX||0,e.translateY||0],n=i.util.multiplyTransformMatrices;return e.angle&&(t=n(t,i.util.calcRotateMatrix(e))),(1!==e.scaleX||1!==e.scaleY||e.skewX||e.skewY||e.flipX||e.flipY)&&(t=n(t,i.util.calcDimensionsMatrix(e))),t},resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.skewX=0,e.skewY=0,e.flipX=!1,e.flipY=!1,e.rotate(0)},saveObjectTransform:function(e){return{scaleX:e.scaleX,scaleY:e.scaleY,skewX:e.skewX,skewY:e.skewY,angle:e.angle,left:e.left,flipX:e.flipX,flipY:e.flipY,top:e.top}},isTransparent:function(e,t,n,r){r>0&&(t>r?t-=r:t=0,n>r?n-=r:n=0);var i,o=!0,a=e.getImageData(t,n,2*r||1,2*r||1),s=a.data.length;for(i=3;i<s&&!1!==(o=a.data[i]<=0);i+=4);return a=null,o},parsePreserveAspectRatioAttribute:function(e){var t,n="meet",r=e.split(" ");return r&&r.length&&("meet"!==(n=r.pop())&&"slice"!==n?(t=n,n="meet"):r.length&&(t=r.pop())),{meetOrSlice:n,alignX:"none"!==t?t.slice(1,4):"none",alignY:"none"!==t?t.slice(5,8):"none"}},clearFabricFontCache:function(e){(e=(e||"").toLowerCase())?i.charWidthsCache[e]&&delete i.charWidthsCache[e]:i.charWidthsCache={}},limitDimsByArea:function(e,t){var n=Math.sqrt(t*e),r=Math.floor(t/n);return{x:Math.floor(n),y:r}},capValue:function(e,t,n){return Math.max(e,Math.min(t,n))},findScaleToFit:function(e,t){return Math.min(t.width/e.width,t.height/e.height)},findScaleToCover:function(e,t){return Math.max(t.width/e.width,t.height/e.height)},matrixToSVG:function(e){return"matrix("+e.map((function(e){return i.util.toFixed(e,i.Object.NUM_FRACTION_DIGITS)})).join(" ")+")"},removeTransformFromObject:function(e,t){var n=i.util.invertTransform(t),r=i.util.multiplyTransformMatrices(n,e.calcOwnMatrix());i.util.applyTransformToObject(e,r)},addTransformToObject:function(e,t){i.util.applyTransformToObject(e,i.util.multiplyTransformMatrices(t,e.calcOwnMatrix()))},applyTransformToObject:function(e,t){var n=i.util.qrDecompose(t),r=new i.Point(n.translateX,n.translateY);e.flipX=!1,e.flipY=!1,e.set("scaleX",n.scaleX),e.set("scaleY",n.scaleY),e.skewX=n.skewX,e.skewY=n.skewY,e.angle=n.angle,e.setPositionByOrigin(r,"center","center")},sizeAfterTransform:function(e,t,n){var r=e/2,o=t/2,a=[{x:-r,y:-o},{x:r,y:-o},{x:-r,y:o},{x:r,y:o}],s=i.util.calcDimensionsMatrix(n),l=i.util.makeBoundingBoxFromPoints(a,s);return{x:l.width,y:l.height}},mergeClipPaths:function(e,t){var n=e,r=t;n.inverted&&!r.inverted&&(n=t,r=e),i.util.applyTransformToObject(r,i.util.multiplyTransformMatrices(i.util.invertTransform(n.calcTransformMatrix()),r.calcTransformMatrix()));var o=n.inverted&&r.inverted;return o&&(n.inverted=r.inverted=!1),new i.Group([n],{clipPath:r,inverted:o})},hasStyleChanged:function(e,t,n){return n=n||!1,e.fill!==t.fill||e.stroke!==t.stroke||e.strokeWidth!==t.strokeWidth||e.fontSize!==t.fontSize||e.fontFamily!==t.fontFamily||e.fontWeight!==t.fontWeight||e.fontStyle!==t.fontStyle||e.textBackgroundColor!==t.textBackgroundColor||e.deltaY!==t.deltaY||n&&(e.overline!==t.overline||e.underline!==t.underline||e.linethrough!==t.linethrough)},stylesToArray:function(e,t){e=i.util.object.clone(e,!0);for(var n=t.split("\n"),r=-1,o={},a=[],s=0;s<n.length;s++)if(e[s])for(var l=0;l<n[s].length;l++){r++;var c=e[s][l];if(c&&Object.keys(c).length>0)i.util.hasStyleChanged(o,c,!0)?a.push({start:r,end:r+1,style:c}):a[a.length-1].end++;o=c||{}}else r+=n[s].length;return a},stylesFromArray:function(e,t){if(!Array.isArray(e))return e;for(var n=t.split("\n"),r=-1,i=0,o={},a=0;a<n.length;a++)for(var s=0;s<n[a].length;s++)r++,e[i]&&e[i].start<=r&&r<e[i].end&&(o[a]=o[a]||{},o[a][s]=Object.assign({},e[i].style),r===e[i].end-1&&i++);return o}}}(t),function(){var e=Array.prototype.join,t={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},n={m:"l",M:"L"};function r(e,t,n,r,o,a,s,l,c,u,d){var h=i.util.cos(e),p=i.util.sin(e),f=i.util.cos(t),m=i.util.sin(t),g=n*o*f-r*a*m+s,v=r*o*f+n*a*m+l;return["C",u+c*(-n*o*p-r*a*h),d+c*(-r*o*p+n*a*h),g+c*(n*o*m+r*a*f),v+c*(r*o*m-n*a*f),g,v]}function o(e,t,n,r){var i=Math.atan2(t,e),o=Math.atan2(r,n);return o>=i?o-i:2*Math.PI-(i-o)}function a(e,t,n){for(var a=n[1],s=n[2],l=n[3],c=n[4],u=n[5],d=function(e,t,n,a,s,l,c){var u=Math.PI,d=c*u/180,h=i.util.sin(d),p=i.util.cos(d),f=0,m=0,g=-p*e*.5-h*t*.5,v=-p*t*.5+h*e*.5,y=(n=Math.abs(n))*n,b=(a=Math.abs(a))*a,x=v*v,w=g*g,S=y*b-y*x-b*w,_=0;if(S<0){var C=Math.sqrt(1-S/(y*b));n*=C,a*=C}else _=(s===l?-1:1)*Math.sqrt(S/(y*x+b*w));var E=_*n*v/a,T=-_*a*g/n,O=p*E-h*T+.5*e,N=h*E+p*T+.5*t,k=o(1,0,(g-E)/n,(v-T)/a),j=o((g-E)/n,(v-T)/a,(-g-E)/n,(-v-T)/a);0===l&&j>0?j-=2*u:1===l&&j<0&&(j+=2*u);for(var I=Math.ceil(Math.abs(j/u*2)),P=[],D=j/I,A=8/3*Math.sin(D/4)*Math.sin(D/4)/Math.sin(D/2),R=k+D,M=0;M<I;M++)P[M]=r(k,R,p,h,n,a,O,N,A,f,m),f=P[M][5],m=P[M][6],k=R,R+=D;return P}(n[6]-e,n[7]-t,a,s,c,u,l),h=0,p=d.length;h<p;h++)d[h][1]+=e,d[h][2]+=t,d[h][3]+=e,d[h][4]+=t,d[h][5]+=e,d[h][6]+=t;return d}function s(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))}function l(e,t,n,r,i,o,a,s){return function(l){var c,u=(c=l)*c*c,d=function(e){return 3*e*e*(1-e)}(l),h=function(e){return 3*e*(1-e)*(1-e)}(l),p=function(e){return(1-e)*(1-e)*(1-e)}(l);return{x:a*u+i*d+n*h+e*p,y:s*u+o*d+r*h+t*p}}}function c(e,t,n,r,i,o,a,s){return function(l){var c=1-l,u=3*c*c*(n-e)+6*c*l*(i-n)+3*l*l*(a-i),d=3*c*c*(r-t)+6*c*l*(o-r)+3*l*l*(s-o);return Math.atan2(d,u)}}function u(e,t,n,r,i,o){return function(a){var s,l=(s=a)*s,c=function(e){return 2*e*(1-e)}(a),u=function(e){return(1-e)*(1-e)}(a);return{x:i*l+n*c+e*u,y:o*l+r*c+t*u}}}function d(e,t,n,r,i,o){return function(a){var s=1-a,l=2*s*(n-e)+2*a*(i-n),c=2*s*(r-t)+2*a*(o-r);return Math.atan2(c,l)}}function h(e,t,n){var r,i,o={x:t,y:n},a=0;for(i=1;i<=100;i+=1)r=e(i/100),a+=s(o.x,o.y,r.x,r.y),o=r;return a}function p(e,t){for(var n,r,i,o=0,a=0,l=e.iterator,c={x:e.x,y:e.y},u=.01,d=e.angleFinder;a<t&&u>1e-4;)n=l(o),i=o,(r=s(c.x,c.y,n.x,n.y))+a>t?(o-=u,u/=2):(c=n,o+=u,a+=r);return n.angle=d(i),n}function f(e){for(var t,n,r,i,o=0,a=e.length,p=0,f=0,m=0,g=0,v=[],y=0;y<a;y++){switch(r={x:p,y:f,command:(t=e[y])[0]},t[0]){case"M":r.length=0,m=p=t[1],g=f=t[2];break;case"L":r.length=s(p,f,t[1],t[2]),p=t[1],f=t[2];break;case"C":n=l(p,f,t[1],t[2],t[3],t[4],t[5],t[6]),i=c(p,f,t[1],t[2],t[3],t[4],t[5],t[6]),r.iterator=n,r.angleFinder=i,r.length=h(n,p,f),p=t[5],f=t[6];break;case"Q":n=u(p,f,t[1],t[2],t[3],t[4]),i=d(p,f,t[1],t[2],t[3],t[4]),r.iterator=n,r.angleFinder=i,r.length=h(n,p,f),p=t[3],f=t[4];break;case"Z":case"z":r.destX=m,r.destY=g,r.length=s(p,f,m,g),p=m,f=g}o+=r.length,v.push(r)}return v.push({length:o,x:p,y:f}),v}i.util.joinPath=function(e){return e.map((function(e){return e.join(" ")})).join(" ")},i.util.parsePath=function(e){var r,o,a,s,l,c=[],u=[],d=i.rePathCommand,h="[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?\\s*",p="("+h+")"+i.commaWsp,f="([01])"+i.commaWsp+"?",m=new RegExp(p+"?"+p+"?"+p+f+f+p+"?("+h+")","g");if(!e||!e.match)return c;for(var g,v=0,y=(l=e.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi)).length;v<y;v++){s=(r=l[v]).slice(1).trim(),u.length=0;var b=r.charAt(0);if(g=[b],"a"===b.toLowerCase())for(var x;x=m.exec(s);)for(var w=1;w<x.length;w++)u.push(x[w]);else for(;a=d.exec(s);)u.push(a[0]);w=0;for(var S=u.length;w<S;w++)o=parseFloat(u[w]),isNaN(o)||g.push(o);var _=t[b.toLowerCase()],C=n[b]||b;if(g.length-1>_)for(var E=1,T=g.length;E<T;E+=_)c.push([b].concat(g.slice(E,E+_))),b=C;else c.push(g)}return c},i.util.makePathSimpler=function(e){var t,n,r,i,o,s,l=0,c=0,u=e.length,d=0,h=0,p=[];for(n=0;n<u;++n){switch(r=!1,(t=e[n].slice(0))[0]){case"l":t[0]="L",t[1]+=l,t[2]+=c;case"L":l=t[1],c=t[2];break;case"h":t[1]+=l;case"H":t[0]="L",t[2]=c,l=t[1];break;case"v":t[1]+=c;case"V":t[0]="L",c=t[1],t[1]=l,t[2]=c;break;case"m":t[0]="M",t[1]+=l,t[2]+=c;case"M":l=t[1],c=t[2],d=t[1],h=t[2];break;case"c":t[0]="C",t[1]+=l,t[2]+=c,t[3]+=l,t[4]+=c,t[5]+=l,t[6]+=c;case"C":o=t[3],s=t[4],l=t[5],c=t[6];break;case"s":t[0]="S",t[1]+=l,t[2]+=c,t[3]+=l,t[4]+=c;case"S":"C"===i?(o=2*l-o,s=2*c-s):(o=l,s=c),l=t[3],c=t[4],t[0]="C",t[5]=t[3],t[6]=t[4],t[3]=t[1],t[4]=t[2],t[1]=o,t[2]=s,o=t[3],s=t[4];break;case"q":t[0]="Q",t[1]+=l,t[2]+=c,t[3]+=l,t[4]+=c;case"Q":o=t[1],s=t[2],l=t[3],c=t[4];break;case"t":t[0]="T",t[1]+=l,t[2]+=c;case"T":"Q"===i?(o=2*l-o,s=2*c-s):(o=l,s=c),t[0]="Q",l=t[1],c=t[2],t[1]=o,t[2]=s,t[3]=l,t[4]=c;break;case"a":t[0]="A",t[6]+=l,t[7]+=c;case"A":r=!0,p=p.concat(a(l,c,t)),l=t[6],c=t[7];break;case"z":case"Z":l=d,c=h}r||p.push(t),i=t[0]}return p},i.util.getSmoothPathFromPoints=function(e,t){var n,r=[],o=new i.Point(e[0].x,e[0].y),a=new i.Point(e[1].x,e[1].y),s=e.length,l=1,c=0,u=s>2;for(t=t||0,u&&(l=e[2].x<a.x?-1:e[2].x===a.x?0:1,c=e[2].y<a.y?-1:e[2].y===a.y?0:1),r.push(["M",o.x-l*t,o.y-c*t]),n=1;n<s;n++){if(!o.eq(a)){var d=o.midPointFrom(a);r.push(["Q",o.x,o.y,d.x,d.y])}o=e[n],n+1<e.length&&(a=e[n+1])}return u&&(l=o.x>e[n-2].x?1:o.x===e[n-2].x?0:-1,c=o.y>e[n-2].y?1:o.y===e[n-2].y?0:-1),r.push(["L",o.x+l*t,o.y+c*t]),r},i.util.getPathSegmentsInfo=f,i.util.getBoundsOfCurve=function(t,n,r,o,a,s,l,c){var u;if(i.cachesBoundsOfCurve&&(u=e.call(arguments),i.boundsOfCurveCache[u]))return i.boundsOfCurveCache[u];var d,h,p,f,m,g,v,y,b=Math.sqrt,x=Math.min,w=Math.max,S=Math.abs,_=[],C=[[],[]];h=6*t-12*r+6*a,d=-3*t+9*r-9*a+3*l,p=3*r-3*t;for(var E=0;E<2;++E)if(E>0&&(h=6*n-12*o+6*s,d=-3*n+9*o-9*s+3*c,p=3*o-3*n),S(d)<1e-12){if(S(h)<1e-12)continue;0<(f=-p/h)&&f<1&&_.push(f)}else(v=h*h-4*p*d)<0||(0<(m=(-h+(y=b(v)))/(2*d))&&m<1&&_.push(m),0<(g=(-h-y)/(2*d))&&g<1&&_.push(g));for(var T,O,N,k=_.length,j=k;k--;)T=(N=1-(f=_[k]))*N*N*t+3*N*N*f*r+3*N*f*f*a+f*f*f*l,C[0][k]=T,O=N*N*N*n+3*N*N*f*o+3*N*f*f*s+f*f*f*c,C[1][k]=O;C[0][j]=t,C[1][j]=n,C[0][j+1]=l,C[1][j+1]=c;var I=[{x:x.apply(null,C[0]),y:x.apply(null,C[1])},{x:w.apply(null,C[0]),y:w.apply(null,C[1])}];return i.cachesBoundsOfCurve&&(i.boundsOfCurveCache[u]=I),I},i.util.getPointOnPath=function(e,t,n){n||(n=f(e));for(var r=0;t-n[r].length>0&&r<n.length-2;)t-=n[r].length,r++;var o,a=n[r],s=t/a.length,l=a.command,c=e[r];switch(l){case"M":return{x:a.x,y:a.y,angle:0};case"Z":case"z":return(o=new i.Point(a.x,a.y).lerp(new i.Point(a.destX,a.destY),s)).angle=Math.atan2(a.destY-a.y,a.destX-a.x),o;case"L":return(o=new i.Point(a.x,a.y).lerp(new i.Point(c[1],c[2]),s)).angle=Math.atan2(c[2]-a.y,c[1]-a.x),o;case"C":case"Q":return p(a,t)}},i.util.transformPath=function(e,t,n){return n&&(t=i.util.multiplyTransformMatrices(t,[1,0,0,1,-n.x,-n.y])),e.map((function(e){for(var n=e.slice(0),r={},o=1;o<e.length-1;o+=2)r.x=e[o],r.y=e[o+1],r=i.util.transformPoint(r,t),n[o]=r.x,n[o+1]=r.y;return n}))}}(),function(){var e=Array.prototype.slice;function t(e,t,n){if(e&&0!==e.length){var r=e.length-1,i=t?e[r][t]:e[r];if(t)for(;r--;)n(e[r][t],i)&&(i=e[r][t]);else for(;r--;)n(e[r],i)&&(i=e[r]);return i}}i.util.array={fill:function(e,t){for(var n=e.length;n--;)e[n]=t;return e},invoke:function(t,n){for(var r=e.call(arguments,2),i=[],o=0,a=t.length;o<a;o++)i[o]=r.length?t[o][n].apply(t[o],r):t[o][n].call(t[o]);return i},min:function(e,n){return t(e,n,(function(e,t){return e<t}))},max:function(e,n){return t(e,n,(function(e,t){return e>=t}))}}}(),function(){function e(t,n,r){if(r)if(!i.isLikelyNode&&n instanceof Element)t=n;else if(n instanceof Array){t=[];for(var o=0,a=n.length;o<a;o++)t[o]=e({},n[o],r)}else if(n&&"object"===typeof n)for(var s in n)"canvas"===s||"group"===s?t[s]=null:n.hasOwnProperty(s)&&(t[s]=e({},n[s],r));else t=n;else for(var s in n)t[s]=n[s];return t}i.util.object={extend:e,clone:function(t,n){return e({},t,n)}},i.util.object.extend(i.util,i.Observable)}(),function(){function e(e,t){var n=e.charCodeAt(t);if(isNaN(n))return"";if(n<55296||n>57343)return e.charAt(t);if(55296<=n&&n<=56319){if(e.length<=t+1)throw"High surrogate without following low surrogate";var r=e.charCodeAt(t+1);if(56320>r||r>57343)throw"High surrogate without following low surrogate";return e.charAt(t)+e.charAt(t+1)}if(0===t)throw"Low surrogate without preceding high surrogate";var i=e.charCodeAt(t-1);if(55296>i||i>56319)throw"Low surrogate without preceding high surrogate";return!1}i.util.string={camelize:function(e){return e.replace(/-+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))},capitalize:function(e,t){return e.charAt(0).toUpperCase()+(t?e.slice(1):e.slice(1).toLowerCase())},escapeXml:function(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")},graphemeSplit:function(t){var n,r=0,i=[];for(r=0;r<t.length;r++)!1!==(n=e(t,r))&&i.push(n);return i}}}(),function(){var e=Array.prototype.slice,t=function(){},n=function(){for(var e in{toString:1})if("toString"===e)return!1;return!0}(),r=function(e,t,r){for(var i in t)i in e.prototype&&"function"===typeof e.prototype[i]&&(t[i]+"").indexOf("callSuper")>-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);if(this.constructor.superclass=n,"initialize"!==e)return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};function o(){}function a(t){for(var n=null,r=this;r.constructor.superclass;){var i=r.constructor.superclass.prototype[t];if(r[t]!==i){n=i;break}r=r.constructor.superclass.prototype}return n?arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this):console.log("tried to callSuper "+t+", method not found in prototype chain",this)}i.util.createClass=function(){var n=null,i=e.call(arguments,0);function s(){this.initialize.apply(this,arguments)}"function"===typeof i[0]&&(n=i.shift()),s.superclass=n,s.subclasses=[],n&&(o.prototype=n.prototype,s.prototype=new o,n.subclasses.push(s));for(var l=0,c=i.length;l<c;l++)r(s,i[l],n);return s.prototype.initialize||(s.prototype.initialize=t),s.prototype.constructor=s,s.prototype.callSuper=a,s}}(),function(){var e=!!i.document.createElement("div").attachEvent,t=["touchstart","touchmove","touchend"];i.util.addListener=function(t,n,r,i){t&&t.addEventListener(n,r,!e&&i)},i.util.removeListener=function(t,n,r,i){t&&t.removeEventListener(n,r,!e&&i)},i.util.getPointer=function(e){var t=e.target,n=i.util.getScrollLeftTop(t),r=function(e){var t=e.changedTouches;return t&&t[0]?t[0]:e}(e);return{x:r.clientX+n.left,y:r.clientY+n.top}},i.util.isTouchEvent=function(e){return t.indexOf(e.type)>-1||"touch"===e.pointerType}}(),function(){var e=i.document.createElement("div"),t="string"===typeof e.style.opacity,n="string"===typeof e.style.filter,r=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,o=function(e){return e};t?o=function(e,t){return e.style.opacity=t,e}:n&&(o=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),r.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+100*t+")",n.filter=n.filter.replace(r,t)):n.filter+=" alpha(opacity="+100*t+")",e}),i.util.setStyle=function(e,t){var n=e.style;if(!n)return e;if("string"===typeof t)return e.style.cssText+=";"+t,t.indexOf("opacity")>-1?o(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if("opacity"===r)o(e,t[r]);else{var i="float"===r||"cssFloat"===r?"undefined"===typeof n.styleFloat?"cssFloat":"styleFloat":r;n.setProperty(i,t[r])}return e}}(),function(){var e=Array.prototype.slice;var t,n,r=function(t){return e.call(t,0)};try{t=r(i.document.childNodes)instanceof Array}catch(s){}function o(e,t){var n=i.document.createElement(e);for(var r in t)"class"===r?n.className=t[r]:"for"===r?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function a(e){for(var t=0,n=0,r=i.document.documentElement,o=i.document.body||{scrollLeft:0,scrollTop:0};e&&(e.parentNode||e.host)&&((e=e.parentNode||e.host)===i.document?(t=o.scrollLeft||r.scrollLeft||0,n=o.scrollTop||r.scrollTop||0):(t+=e.scrollLeft||0,n+=e.scrollTop||0),1!==e.nodeType||"fixed"!==e.style.position););return{left:t,top:n}}t||(r=function(e){for(var t=new Array(e.length),n=e.length;n--;)t[n]=e[n];return t}),n=i.document.defaultView&&i.document.defaultView.getComputedStyle?function(e,t){var n=i.document.defaultView.getComputedStyle(e,null);return n?n[t]:void 0}:function(e,t){var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n},function(){var e=i.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";i.util.makeElementUnselectable=function(e){return"undefined"!==typeof e.onselectstart&&(e.onselectstart=i.util.falseFunction),t?e.style[t]="none":"string"===typeof e.unselectable&&(e.unselectable="on"),e},i.util.makeElementSelectable=function(e){return"undefined"!==typeof e.onselectstart&&(e.onselectstart=null),t?e.style[t]="":"string"===typeof e.unselectable&&(e.unselectable=""),e}}(),i.util.setImageSmoothing=function(e,t){e.imageSmoothingEnabled=e.imageSmoothingEnabled||e.webkitImageSmoothingEnabled||e.mozImageSmoothingEnabled||e.msImageSmoothingEnabled||e.oImageSmoothingEnabled,e.imageSmoothingEnabled=t},i.util.getById=function(e){return"string"===typeof e?i.document.getElementById(e):e},i.util.toArray=r,i.util.addClass=function(e,t){e&&-1===(" "+e.className+" ").indexOf(" "+t+" ")&&(e.className+=(e.className?" ":"")+t)},i.util.makeElement=o,i.util.wrapElement=function(e,t,n){return"string"===typeof t&&(t=o(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t},i.util.getScrollLeftTop=a,i.util.getElementOffset=function(e){var t,r,i=e&&e.ownerDocument,o={left:0,top:0},s={left:0,top:0},l={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return s;for(var c in l)s[l[c]]+=parseInt(n(e,c),10)||0;return t=i.documentElement,"undefined"!==typeof e.getBoundingClientRect&&(o=e.getBoundingClientRect()),r=a(e),{left:o.left+r.left-(t.clientLeft||0)+s.left,top:o.top+r.top-(t.clientTop||0)+s.top}},i.util.getNodeCanvas=function(e){var t=i.jsdomImplForWrapper(e);return t._canvas||t._image},i.util.cleanUpJsdomNode=function(e){if(i.isLikelyNode){var t=i.jsdomImplForWrapper(e);t&&(t._image=null,t._canvas=null,t._currentSrc=null,t._attributes=null,t._classList=null)}}}(),function(){function e(){}i.util.request=function(t,n){n||(n={});var r=n.method?n.method.toUpperCase():"GET",o=n.onComplete||function(){},a=new i.window.XMLHttpRequest,s=n.body||n.parameters;return a.onreadystatechange=function(){4===a.readyState&&(o(a),a.onreadystatechange=e)},"GET"===r&&(s=null,"string"===typeof n.parameters&&(t=function(e,t){return e+(/\?/.test(e)?"&":"?")+t}(t,n.parameters))),a.open(r,t,!0),"POST"!==r&&"PUT"!==r||a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.send(s),a}}(),i.log=console.log,i.warn=console.warn,function(){var e=i.util.object.extend,t=i.util.object.clone,n=[];function r(){return!1}function o(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}i.util.object.extend(n,{cancelAll:function(){var e=this.splice(0);return e.forEach((function(e){e.cancel()})),e},cancelByCanvas:function(e){if(!e)return[];var t=this.filter((function(t){return"object"===typeof t.target&&t.target.canvas===e}));return t.forEach((function(e){e.cancel()})),t},cancelByTarget:function(e){var t=this.findAnimationsByTarget(e);return t.forEach((function(e){e.cancel()})),t},findAnimationIndex:function(e){return this.indexOf(this.findAnimation(e))},findAnimation:function(e){return this.find((function(t){return t.cancel===e}))},findAnimationsByTarget:function(e){return e?this.filter((function(t){return t.target===e})):[]}});var a=i.window.requestAnimationFrame||i.window.webkitRequestAnimationFrame||i.window.mozRequestAnimationFrame||i.window.oRequestAnimationFrame||i.window.msRequestAnimationFrame||function(e){return i.window.setTimeout(e,1e3/60)},s=i.window.cancelAnimationFrame||i.window.clearTimeout;function l(){return a.apply(i.window,arguments)}i.util.animate=function(n){n||(n={});var a,s=!1,c=function(){var e=i.runningAnimations.indexOf(a);return e>-1&&i.runningAnimations.splice(e,1)[0]};return a=e(t(n),{cancel:function(){return s=!0,c()},currentValue:"startValue"in n?n.startValue:0,completionRate:0,durationRate:0}),i.runningAnimations.push(a),l((function(e){var t,i=e||+new Date,u=n.duration||500,d=i+u,h=n.onChange||r,p=n.abort||r,f=n.onComplete||r,m=n.easing||o,g="startValue"in n&&n.startValue.length>0,v="startValue"in n?n.startValue:0,y="endValue"in n?n.endValue:100,b=n.byValue||(g?v.map((function(e,t){return y[t]-v[t]})):y-v);n.onStart&&n.onStart(),function e(n){var r=(t=n||+new Date)>d?u:t-i,o=r/u,x=g?v.map((function(e,t){return m(r,v[t],b[t],u)})):m(r,v,b,u),w=g?Math.abs((x[0]-v[0])/b[0]):Math.abs((x-v)/b);if(a.currentValue=g?x.slice():x,a.completionRate=w,a.durationRate=o,!s){if(!p(x,w,o))return t>d?(a.currentValue=g?y.slice():y,a.completionRate=1,a.durationRate=1,h(g?y.slice():y,1,1),f(y,1,1),void c()):(h(x,w,o),void l(e));c()}}(i)})),a.cancel},i.util.requestAnimFrame=l,i.util.cancelAnimFrame=function(){return s.apply(i.window,arguments)},i.runningAnimations=n}(),function(){function e(e,t,n){var r="rgba("+parseInt(e[0]+n*(t[0]-e[0]),10)+","+parseInt(e[1]+n*(t[1]-e[1]),10)+","+parseInt(e[2]+n*(t[2]-e[2]),10);return r+=","+(e&&t?parseFloat(e[3]+n*(t[3]-e[3])):1),r+=")"}i.util.animateColor=function(t,n,r,o){var a=new i.Color(t).getSource(),s=new i.Color(n).getSource(),l=o.onComplete,c=o.onChange;return o=o||{},i.util.animate(i.util.object.extend(o,{duration:r||500,startValue:a,endValue:s,byValue:s,easing:function(t,n,r,i){return e(n,r,o.colorEasing?o.colorEasing(t,i):1-Math.cos(t/i*(Math.PI/2)))},onComplete:function(t,n,r){if(l)return l(e(s,s,0),n,r)},onChange:function(t,n,r){if(c){if(Array.isArray(t))return c(e(t,t,0),n,r);c(t,n,r)}}}))}}(),function(){function e(e,t,n,r){return e<Math.abs(t)?(e=t,r=n/4):r=0===t&&0===e?n/(2*Math.PI)*Math.asin(1):n/(2*Math.PI)*Math.asin(t/e),{a:e,c:t,p:n,s:r}}function t(e,t,n){return e.a*Math.pow(2,10*(t-=1))*Math.sin((t*n-e.s)*(2*Math.PI)/e.p)}function n(e,t,n,i){return n-r(i-e,0,n,i)+t}function r(e,t,n,r){return(e/=r)<1/2.75?n*(7.5625*e*e)+t:e<2/2.75?n*(7.5625*(e-=1.5/2.75)*e+.75)+t:e<2.5/2.75?n*(7.5625*(e-=2.25/2.75)*e+.9375)+t:n*(7.5625*(e-=2.625/2.75)*e+.984375)+t}i.util.ease={easeInQuad:function(e,t,n,r){return n*(e/=r)*e+t},easeOutQuad:function(e,t,n,r){return-n*(e/=r)*(e-2)+t},easeInOutQuad:function(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t},easeInCubic:function(e,t,n,r){return n*(e/=r)*e*e+t},easeOutCubic:function(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t},easeInOutCubic:function(e,t,n,r){return(e/=r/2)<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t},easeInQuart:function(e,t,n,r){return n*(e/=r)*e*e*e+t},easeOutQuart:function(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t},easeInOutQuart:function(e,t,n,r){return(e/=r/2)<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t},easeInQuint:function(e,t,n,r){return n*(e/=r)*e*e*e*e+t},easeOutQuint:function(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t},easeInOutQuint:function(e,t,n,r){return(e/=r/2)<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t},easeInSine:function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},easeOutSine:function(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t},easeInOutSine:function(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t},easeInExpo:function(e,t,n,r){return 0===e?t:n*Math.pow(2,10*(e/r-1))+t},easeOutExpo:function(e,t,n,r){return e===r?t+n:n*(1-Math.pow(2,-10*e/r))+t},easeInOutExpo:function(e,t,n,r){return 0===e?t:e===r?t+n:(e/=r/2)<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(2-Math.pow(2,-10*--e))+t},easeInCirc:function(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t},easeOutCirc:function(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t},easeInOutCirc:function(e,t,n,r){return(e/=r/2)<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t},easeInElastic:function(n,r,i,o){var a=0;return 0===n?r:1===(n/=o)?r+i:(a||(a=.3*o),-t(e(i,i,a,1.70158),n,o)+r)},easeOutElastic:function(t,n,r,i){var o=0;if(0===t)return n;if(1===(t/=i))return n+r;o||(o=.3*i);var a=e(r,r,o,1.70158);return a.a*Math.pow(2,-10*t)*Math.sin((t*i-a.s)*(2*Math.PI)/a.p)+a.c+n},easeInOutElastic:function(n,r,i,o){var a=0;if(0===n)return r;if(2===(n/=o/2))return r+i;a||(a=o*(.3*1.5));var s=e(i,i,a,1.70158);return n<1?-.5*t(s,n,o)+r:s.a*Math.pow(2,-10*(n-=1))*Math.sin((n*o-s.s)*(2*Math.PI)/s.p)*.5+s.c+r},easeInBack:function(e,t,n,r,i){return void 0===i&&(i=1.70158),n*(e/=r)*e*((i+1)*e-i)+t},easeOutBack:function(e,t,n,r,i){return void 0===i&&(i=1.70158),n*((e=e/r-1)*e*((i+1)*e+i)+1)+t},easeInOutBack:function(e,t,n,r,i){return void 0===i&&(i=1.70158),(e/=r/2)<1?n/2*(e*e*((1+(i*=1.525))*e-i))+t:n/2*((e-=2)*e*((1+(i*=1.525))*e+i)+2)+t},easeInBounce:n,easeOutBounce:r,easeInOutBounce:function(e,t,i,o){return e<o/2?.5*n(2*e,0,i,o)+t:.5*r(2*e-o,0,i,o)+.5*i+t}}}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,o=t.util.parseUnit,a=t.util.multiplyTransformMatrices,s={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","letter-spacing":"charSpacing","paint-order":"paintFirst","stroke-dasharray":"strokeDashArray","stroke-dashoffset":"strokeDashOffset","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"textAnchor",opacity:"opacity","clip-path":"clipPath","clip-rule":"clipRule","vector-effect":"strokeUniform","image-rendering":"imageSmoothing"},l={stroke:"strokeOpacity",fill:"fillOpacity"},c="font-size",u="clip-path";function d(e){return e in s?s[e]:e}function h(e,n,r,i){var s,l=Array.isArray(n);if("fill"!==e&&"stroke"!==e||"none"!==n){if("strokeUniform"===e)return"non-scaling-stroke"===n;if("strokeDashArray"===e)n="none"===n?null:n.replace(/,/g," ").split(/\s+/).map(parseFloat);else if("transformMatrix"===e)n=r&&r.transformMatrix?a(r.transformMatrix,t.parseTransformAttribute(n)):t.parseTransformAttribute(n);else if("visible"===e)n="none"!==n&&"hidden"!==n,r&&!1===r.visible&&(n=!1);else if("opacity"===e)n=parseFloat(n),r&&"undefined"!==typeof r.opacity&&(n*=r.opacity);else if("textAnchor"===e)n="start"===n?"left":"end"===n?"right":"center";else if("charSpacing"===e)s=o(n,i)/i*1e3;else if("paintFirst"===e){var c=n.indexOf("fill"),u=n.indexOf("stroke");n="fill";(c>-1&&u>-1&&u<c||-1===c&&u>-1)&&(n="stroke")}else{if("href"===e||"xlink:href"===e||"font"===e)return n;if("imageSmoothing"===e)return"optimizeQuality"===n;s=l?n.map(o):o(n,i)}}else n="";return!l&&isNaN(s)?n:s}function p(e){return new RegExp("^("+e.join("|")+")\\b","i")}function f(e,t){var n,r,i,o,a=[];for(i=0,o=t.length;i<o;i++)n=t[i],r=e.getElementsByTagName(n),a=a.concat(Array.prototype.slice.call(r));return a}function m(e,t){var n,r=!0;return(n=g(e,t.pop()))&&t.length&&(r=function(e,t){var n,r=!0;for(;e.parentNode&&1===e.parentNode.nodeType&&t.length;)r&&(n=t.pop()),r=g(e=e.parentNode,n);return 0===t.length}(e,t)),n&&r&&0===t.length}function g(e,t){var n,r,i=e.nodeName,o=e.getAttribute("class"),a=e.getAttribute("id");if(n=new RegExp("^"+i,"i"),t=t.replace(n,""),a&&t.length&&(n=new RegExp("#"+a+"(?![a-zA-Z\\-]+)","i"),t=t.replace(n,"")),o&&t.length)for(r=(o=o.split(" ")).length;r--;)n=new RegExp("\\."+o[r]+"(?![a-zA-Z\\-]+)","i"),t=t.replace(n,"");return 0===t.length}function v(e,t){var n;if(e.getElementById&&(n=e.getElementById(t)),n)return n;var r,i,o,a=e.getElementsByTagName("*");for(i=0,o=a.length;i<o;i++)if(t===(r=a[i]).getAttribute("id"))return r}t.svgValidTagNamesRegEx=p(["path","circle","polygon","polyline","ellipse","rect","line","image","text"]),t.svgViewBoxElementsRegEx=p(["symbol","image","marker","pattern","view","svg"]),t.svgInvalidAncestorsRegEx=p(["pattern","defs","symbol","metadata","clipPath","mask","desc"]),t.svgValidParentsRegEx=p(["symbol","g","a","svg","clipPath","defs"]),t.cssRules={},t.gradientDefs={},t.clipPaths={},t.parseTransformAttribute=function(){function e(e,n,r){e[r]=Math.tan(t.util.degreesToRadians(n[0]))}var n=t.iMatrix,r=t.reNum,i=t.commaWsp,o="(?:"+("(?:(matrix)\\s*\\(\\s*("+r+")"+i+"("+r+")"+i+"("+r+")"+i+"("+r+")"+i+"("+r+")"+i+"("+r+")\\s*\\))")+"|"+("(?:(translate)\\s*\\(\\s*("+r+")(?:"+i+"("+r+"))?\\s*\\))")+"|"+("(?:(scale)\\s*\\(\\s*("+r+")(?:"+i+"("+r+"))?\\s*\\))")+"|"+("(?:(rotate)\\s*\\(\\s*("+r+")(?:"+i+"("+r+")"+i+"("+r+"))?\\s*\\))")+"|"+("(?:(skewX)\\s*\\(\\s*("+r+")\\s*\\))")+"|"+("(?:(skewY)\\s*\\(\\s*("+r+")\\s*\\))")+")",a=new RegExp("^\\s*(?:"+("(?:"+o+"(?:"+i+"*"+o+")*)")+"?)\\s*$"),s=new RegExp(o,"g");return function(r){var i=n.concat(),l=[];if(!r||r&&!a.test(r))return i;r.replace(s,(function(r){var a=new RegExp(o).exec(r).filter((function(e){return!!e})),s=a[1],c=a.slice(2).map(parseFloat);switch(s){case"translate":!function(e,t){e[4]=t[0],2===t.length&&(e[5]=t[1])}(i,c);break;case"rotate":c[0]=t.util.degreesToRadians(c[0]),function(e,n){var r=t.util.cos(n[0]),i=t.util.sin(n[0]),o=0,a=0;3===n.length&&(o=n[1],a=n[2]),e[0]=r,e[1]=i,e[2]=-i,e[3]=r,e[4]=o-(r*o-i*a),e[5]=a-(i*o+r*a)}(i,c);break;case"scale":!function(e,t){var n=t[0],r=2===t.length?t[1]:t[0];e[0]=n,e[3]=r}(i,c);break;case"skewX":e(i,c,2);break;case"skewY":e(i,c,1);break;case"matrix":i=c}l.push(i.concat()),i=n.concat()}));for(var c=l[0];l.length>1;)l.shift(),c=t.util.multiplyTransformMatrices(c,l[0]);return c}}();var y=new RegExp("^\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*$");function b(e){if(!t.svgViewBoxElementsRegEx.test(e.nodeName))return{};var n,r,i,a,s,l,c=e.getAttribute("viewBox"),u=1,d=1,h=e.getAttribute("width"),p=e.getAttribute("height"),f=e.getAttribute("x")||0,m=e.getAttribute("y")||0,g=e.getAttribute("preserveAspectRatio")||"",v=!c||!(c=c.match(y)),b=!h||!p||"100%"===h||"100%"===p,x=v&&b,w={},S="",_=0,C=0;if(w.width=0,w.height=0,w.toBeParsed=x,v&&(f||m)&&e.parentNode&&"#document"!==e.parentNode.nodeName&&(S=" translate("+o(f)+" "+o(m)+") ",s=(e.getAttribute("transform")||"")+S,e.setAttribute("transform",s),e.removeAttribute("x"),e.removeAttribute("y")),x)return w;if(v)return w.width=o(h),w.height=o(p),w;if(n=-parseFloat(c[1]),r=-parseFloat(c[2]),i=parseFloat(c[3]),a=parseFloat(c[4]),w.minX=n,w.minY=r,w.viewBoxWidth=i,w.viewBoxHeight=a,b?(w.width=i,w.height=a):(w.width=o(h),w.height=o(p),u=w.width/i,d=w.height/a),"none"!==(g=t.util.parsePreserveAspectRatioAttribute(g)).alignX&&("meet"===g.meetOrSlice&&(d=u=u>d?d:u),"slice"===g.meetOrSlice&&(d=u=u>d?u:d),_=w.width-i*u,C=w.height-a*u,"Mid"===g.alignX&&(_/=2),"Mid"===g.alignY&&(C/=2),"Min"===g.alignX&&(_=0),"Min"===g.alignY&&(C=0)),1===u&&1===d&&0===n&&0===r&&0===f&&0===m)return w;if((f||m)&&"#document"!==e.parentNode.nodeName&&(S=" translate("+o(f)+" "+o(m)+") "),s=S+" matrix("+u+" 0 0 "+d+" "+(n*u+_)+" "+(r*d+C)+") ","svg"===e.nodeName){for(l=e.ownerDocument.createElementNS(t.svgNS,"g");e.firstChild;)l.appendChild(e.firstChild);e.appendChild(l)}else(l=e).removeAttribute("x"),l.removeAttribute("y"),s=l.getAttribute("transform")+s;return l.setAttribute("transform",s),w}function x(e,t){var n="xlink:href",r=v(e,t.getAttribute(n).slice(1));if(r&&r.getAttribute(n)&&x(e,r),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(e){r&&!t.hasAttribute(e)&&r.hasAttribute(e)&&t.setAttribute(e,r.getAttribute(e))})),!t.children.length)for(var i=r.cloneNode(!0);i.firstChild;)t.appendChild(i.firstChild);t.removeAttribute(n)}t.parseSVGDocument=function(e,n,i,o){if(e){!function(e){for(var n=f(e,["use","svg:use"]),r=0;n.length&&r<n.length;){var i=n[r],o=i.getAttribute("xlink:href")||i.getAttribute("href");if(null===o)return;var a,s,l,c,u=o.slice(1),d=i.getAttribute("x")||0,h=i.getAttribute("y")||0,p=v(e,u).cloneNode(!0),m=(p.getAttribute("transform")||"")+" translate("+d+", "+h+")",g=n.length,y=t.svgNS;if(b(p),/^svg$/i.test(p.nodeName)){var x=p.ownerDocument.createElementNS(y,"g");for(s=0,c=(l=p.attributes).length;s<c;s++)a=l.item(s),x.setAttributeNS(y,a.nodeName,a.nodeValue);for(;p.firstChild;)x.appendChild(p.firstChild);p=x}for(s=0,c=(l=i.attributes).length;s<c;s++)"x"!==(a=l.item(s)).nodeName&&"y"!==a.nodeName&&"xlink:href"!==a.nodeName&&"href"!==a.nodeName&&("transform"===a.nodeName?m=a.nodeValue+" "+m:p.setAttribute(a.nodeName,a.nodeValue));p.setAttribute("transform",m),p.setAttribute("instantiated_by_use","1"),p.removeAttribute("id"),i.parentNode.replaceChild(p,i),n.length===g&&r++}}(e);var a,s,l=t.Object.__uid++,c=b(e),u=t.util.toArray(e.getElementsByTagName("*"));if(c.crossOrigin=o&&o.crossOrigin,c.svgUid=l,0===u.length&&t.isLikelyNode){var d=[];for(a=0,s=(u=e.selectNodes('//*[name(.)!="svg"]')).length;a<s;a++)d[a]=u[a];u=d}var h=u.filter((function(e){return b(e),t.svgValidTagNamesRegEx.test(e.nodeName.replace("svg:",""))&&!function(e,t){for(;e&&(e=e.parentNode);)if(e.nodeName&&t.test(e.nodeName.replace("svg:",""))&&!e.getAttribute("instantiated_by_use"))return!0;return!1}(e,t.svgInvalidAncestorsRegEx)}));if(!h||h&&!h.length)n&&n([],{});else{var p={};u.filter((function(e){return"clipPath"===e.nodeName.replace("svg:","")})).forEach((function(e){var n=e.getAttribute("id");p[n]=t.util.toArray(e.getElementsByTagName("*")).filter((function(e){return t.svgValidTagNamesRegEx.test(e.nodeName.replace("svg:",""))}))})),t.gradientDefs[l]=t.getGradientDefs(e),t.cssRules[l]=t.getCSSRules(e),t.clipPaths[l]=p,t.parseElements(h,(function(e,r){n&&(n(e,c,r,u),delete t.gradientDefs[l],delete t.cssRules[l],delete t.clipPaths[l])}),r(c),i,o)}}};var w=new RegExp("(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*("+t.reNum+"(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|"+t.reNum+"))?\\s+(.*)");n(t,{parseFontDeclaration:function(e,t){var n=e.match(w);if(n){var r=n[1],i=n[3],a=n[4],s=n[5],l=n[6];r&&(t.fontStyle=r),i&&(t.fontWeight=isNaN(parseFloat(i))?i:parseFloat(i)),a&&(t.fontSize=o(a)),l&&(t.fontFamily=l),s&&(t.lineHeight="normal"===s?1:s)}},getGradientDefs:function(e){var t,n=f(e,["linearGradient","radialGradient","svg:linearGradient","svg:radialGradient"]),r=0,i={};for(r=n.length;r--;)(t=n[r]).getAttribute("xlink:href")&&x(e,t),i[t.getAttribute("id")]=t;return i},parseAttributes:function(e,r,a){if(e){var s,p,f,g={};"undefined"===typeof a&&(a=e.getAttribute("svgUid")),e.parentNode&&t.svgValidParentsRegEx.test(e.parentNode.nodeName)&&(g=t.parseAttributes(e.parentNode,r,a));var v=r.reduce((function(t,n){return(s=e.getAttribute(n))&&(t[n]=s),t}),{}),y=n(function(e,n){var r={};for(var i in t.cssRules[n])if(m(e,i.split(" ")))for(var o in t.cssRules[n][i])r[o]=t.cssRules[n][i][o];return r}(e,a),t.parseStyleAttribute(e));v=n(v,y),y[u]&&e.setAttribute(u,y[u]),p=f=g.fontSize||t.Text.DEFAULT_SVG_FONT_SIZE,v[c]&&(v[c]=p=o(v[c],f));var b,x,w={};for(var S in v)x=h(b=d(S),v[S],g,p),w[b]=x;w&&w.font&&t.parseFontDeclaration(w.font,w);var _=n(g,w);return t.svgValidParentsRegEx.test(e.nodeName)?_:function(e){for(var n in l)if("undefined"!==typeof e[l[n]]&&""!==e[n]){if("undefined"===typeof e[n]){if(!t.Object.prototype[n])continue;e[n]=t.Object.prototype[n]}if(0!==e[n].indexOf("url(")){var r=new t.Color(e[n]);e[n]=r.setAlpha(i(r.getAlpha()*e[l[n]],2)).toRgba()}}return e}(_)}},parseElements:function(e,n,r,i,o){new t.ElementsParser(e,n,r,i,o).parse()},parseStyleAttribute:function(e){var t={},n=e.getAttribute("style");return n?("string"===typeof n?function(e,t){var n,r;e.replace(/;\s*$/,"").split(";").forEach((function(e){var i=e.split(":");n=i[0].trim().toLowerCase(),r=i[1].trim(),t[n]=r}))}(n,t):function(e,t){var n,r;for(var i in e)"undefined"!==typeof e[i]&&(n=i.toLowerCase(),r=e[i],t[n]=r)}(n,t),t):t},parsePointsAttribute:function(e){if(!e)return null;var t,n,r=[];for(t=0,n=(e=(e=e.replace(/,/g," ").trim()).split(/\s+/)).length;t<n;t+=2)r.push({x:parseFloat(e[t]),y:parseFloat(e[t+1])});return r},getCSSRules:function(e){var n,r,i=e.getElementsByTagName("style"),o={};for(n=0,r=i.length;n<r;n++){var a=i[n].textContent;""!==(a=a.replace(/\/\*[\s\S]*?\*\//g,"")).trim()&&a.split("}").filter((function(e){return e.trim()})).forEach((function(e){var i=e.split("{"),a={},s=i[1].trim().split(";").filter((function(e){return e.trim()}));for(n=0,r=s.length;n<r;n++){var l=s[n].split(":"),c=l[0].trim(),u=l[1].trim();a[c]=u}(e=i[0].trim()).split(",").forEach((function(e){""!==(e=e.replace(/^svg/i,"").trim())&&(o[e]?t.util.object.extend(o[e],a):o[e]=t.util.object.clone(a))}))}))}return o},loadSVGFromURL:function(e,n,r,i){e=e.replace(/^\n\s*/,"").trim(),new t.util.request(e,{method:"get",onComplete:function(e){var o=e.responseXML;if(!o||!o.documentElement)return n&&n(null),!1;t.parseSVGDocument(o.documentElement,(function(e,t,r,i){n&&n(e,t,r,i)}),r,i)}})},loadSVGFromString:function(e,n,r,i){var o=(new t.window.DOMParser).parseFromString(e.trim(),"text/xml");t.parseSVGDocument(o.documentElement,(function(e,t,r,i){n(e,t,r,i)}),r,i)}})}(t),i.ElementsParser=function(e,t,n,r,i,o){this.elements=e,this.callback=t,this.options=n,this.reviver=r,this.svgUid=n&&n.svgUid||0,this.parsingOptions=i,this.regexUrl=/^url\(['"]?#([^'"]+)['"]?\)/g,this.doc=o},(r=i.ElementsParser.prototype).parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},r.createObjects=function(){var e=this;this.elements.forEach((function(t,n){t.setAttribute("svgUid",e.svgUid),e.createObject(t,n)}))},r.findTag=function(e){return i[i.util.string.capitalize(e.tagName.replace("svg:",""))]},r.createObject=function(e,t){var n=this.findTag(e);if(n&&n.fromElement)try{n.fromElement(e,this.createCallback(t,e),this.options)}catch(r){i.log(r)}else this.checkIfDone()},r.createCallback=function(e,t){var n=this;return function(r){var o;n.resolveGradient(r,t,"fill"),n.resolveGradient(r,t,"stroke"),r instanceof i.Image&&r._originalElement&&(o=r.parsePreserveAspectRatioAttribute(t)),r._removeTransformMatrix(o),n.resolveClipPath(r,t),n.reviver&&n.reviver(t,r),n.instances[e]=r,n.checkIfDone()}},r.extractPropertyDefinition=function(e,t,n){var r=e[t],o=this.regexUrl;if(o.test(r)){o.lastIndex=0;var a=o.exec(r)[1];return o.lastIndex=0,i[n][this.svgUid][a]}},r.resolveGradient=function(e,t,n){var r=this.extractPropertyDefinition(e,n,"gradientDefs");if(r){var o=t.getAttribute(n+"-opacity"),a=i.Gradient.fromElement(r,e,o,this.options);e.set(n,a)}},r.createClipPathCallback=function(e,t){return function(e){e._removeTransformMatrix(),e.fillRule=e.clipRule,t.push(e)}},r.resolveClipPath=function(e,t){var n,r,o,a,s=this.extractPropertyDefinition(e,"clipPath","clipPaths");if(s){o=[],r=i.util.invertTransform(e.calcTransformMatrix());for(var l=s[0].parentNode,c=t;c.parentNode&&c.getAttribute("clip-path")!==e.clipPath;)c=c.parentNode;c.parentNode.appendChild(l);for(var u=0;u<s.length;u++)n=s[u],this.findTag(n).fromElement(n,this.createClipPathCallback(e,o),this.options);s=1===o.length?o[0]:new i.Group(o),a=i.util.multiplyTransformMatrices(r,s.calcTransformMatrix()),s.clipPath&&this.resolveClipPath(s,c);var d=i.util.qrDecompose(a);s.flipX=!1,s.flipY=!1,s.set("scaleX",d.scaleX),s.set("scaleY",d.scaleY),s.angle=d.angle,s.skewX=d.skewX,s.skewY=0,s.setPositionByOrigin({x:d.translateX,y:d.translateY},"center","center"),e.clipPath=s}else delete e.clipPath},r.checkIfDone=function(){0===--this.numElements&&(this.instances=this.instances.filter((function(e){return null!=e})),this.callback(this.instances,this.elements))},function(e){"use strict";var t=e.fabric||(e.fabric={});function n(e,t){this.x=e,this.y=t}t.Point?t.warn("fabric.Point is already defined"):(t.Point=n,n.prototype={type:"point",constructor:n,add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.x<e.x&&this.y<e.y},lte:function(e){return this.x<=e.x&&this.y<=e.y},gt:function(e){return this.x>e.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return"undefined"===typeof t&&(t=.5),t=Math.max(Math.min(1,t),0),new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return this.lerp(e)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){return this.x=e,this.y=t,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setFromPoint:function(e){return this.x=e.x,this.y=e.y,this},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n},clone:function(){return new n(this.x,this.y)}})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={});function n(e){this.status=e,this.points=[]}t.Intersection?t.warn("fabric.Intersection is already defined"):(t.Intersection=n,t.Intersection.prototype={constructor:n,appendPoint:function(e){return this.points.push(e),this},appendPoints:function(e){return this.points=this.points.concat(e),this}},t.Intersection.intersectLineLine=function(e,r,i,o){var a,s=(o.x-i.x)*(e.y-i.y)-(o.y-i.y)*(e.x-i.x),l=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),c=(o.y-i.y)*(r.x-e.x)-(o.x-i.x)*(r.y-e.y);if(0!==c){var u=s/c,d=l/c;0<=u&&u<=1&&0<=d&&d<=1?(a=new n("Intersection")).appendPoint(new t.Point(e.x+u*(r.x-e.x),e.y+u*(r.y-e.y))):a=new n}else a=new n(0===s||0===l?"Coincident":"Parallel");return a},t.Intersection.intersectLinePolygon=function(e,t,r){var i,o,a,s,l=new n,c=r.length;for(s=0;s<c;s++)i=r[s],o=r[(s+1)%c],a=n.intersectLineLine(e,t,i,o),l.appendPoints(a.points);return l.points.length>0&&(l.status="Intersection"),l},t.Intersection.intersectPolygonPolygon=function(e,t){var r,i=new n,o=e.length;for(r=0;r<o;r++){var a=e[r],s=e[(r+1)%o],l=n.intersectLinePolygon(a,s,t);i.appendPoints(l.points)}return i.points.length>0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonRectangle=function(e,r,i){var o=r.min(i),a=r.max(i),s=new t.Point(a.x,o.y),l=new t.Point(o.x,a.y),c=n.intersectLinePolygon(o,s,e),u=n.intersectLinePolygon(s,a,e),d=n.intersectLinePolygon(a,l,e),h=n.intersectLinePolygon(l,o,e),p=new n;return p.appendPoints(c.points),p.appendPoints(u.points),p.appendPoints(d.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={});function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}t.Color?t.warn("fabric.Color is already defined."):(t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),"transparent"===e&&(t=[255,255,255,0]),t||(t=n.sourceFromHex(e)),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t||(t=[0,0,0,1]),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,o,a,s=t.util.array.max([e,n,r]),l=t.util.array.min([e,n,r]);if(a=(s+l)/2,s===l)i=o=0;else{var c=s-l;switch(o=a>.5?c/(2-s-l):c/(s+l),s){case e:i=(n-r)/c+(n<r?6:0);break;case n:i=(r-e)/c+2;break;case r:i=(e-n)/c+4}i/=6}return[Math.round(360*i),Math.round(100*o),Math.round(100*a)]},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHsl:function(){var e=this.getSource(),t=this._rgbToHsl(e[0],e[1],e[2]);return"hsl("+t[0]+","+t[1]+"%,"+t[2]+"%)"},toHsla:function(){var e=this.getSource(),t=this._rgbToHsl(e[0],e[1],e[2]);return"hsla("+t[0]+","+t[1]+"%,"+t[2]+"%,"+e[3]+")"},toHex:function(){var e,t,n,r=this.getSource();return e=1===(e=r[0].toString(16)).length?"0"+e:e,t=1===(t=r[1].toString(16)).length?"0"+t:t,n=1===(n=r[2].toString(16)).length?"0"+n:n,e.toUpperCase()+t.toUpperCase()+n.toUpperCase()},toHexa:function(){var e,t=this.getSource();return e=1===(e=(e=Math.round(255*t[3])).toString(16)).length?"0"+e:e,this.toHex()+e.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var t=this.getSource();return t[3]=e,this.setSource(t),this},toGrayscale:function(){var e=this.getSource(),t=parseInt((.3*e[0]+.59*e[1]+.11*e[2]).toFixed(0),10),n=e[3];return this.setSource([t,t,t,n]),this},toBlackWhite:function(e){var t=this.getSource(),n=(.3*t[0]+.59*t[1]+.11*t[2]).toFixed(0),r=t[3];return e=e||127,n=Number(n)<Number(e)?0:255,this.setSource([n,n,n,r]),this},overlayWith:function(e){e instanceof n||(e=new n(e));var t,r=[],i=this.getAlpha(),o=this.getSource(),a=e.getSource();for(t=0;t<3;t++)r.push(Math.round(.5*o[t]+.5*a[t]));return r[3]=i,this.setSource(r),this}},t.Color.reRGBa=/^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i,t.Color.reHSLa=/^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i,t.Color.reHex=/^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i,t.Color.colorNameMap={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",darkgreen:"#006400",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",lightgreen:"#90EE90",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"},t.Color.fromRgb=function(e){return n.fromSource(n.sourceFromRgb(e))},t.Color.sourceFromRgb=function(e){var t=e.match(n.reRGBa);if(t){var r=parseInt(t[1],10)/(/%$/.test(t[1])?100:1)*(/%$/.test(t[1])?255:1),i=parseInt(t[2],10)/(/%$/.test(t[2])?100:1)*(/%$/.test(t[2])?255:1),o=parseInt(t[3],10)/(/%$/.test(t[3])?100:1)*(/%$/.test(t[3])?255:1);return[parseInt(r,10),parseInt(i,10),parseInt(o,10),t[4]?parseFloat(t[4]):1]}},t.Color.fromRgba=n.fromRgb,t.Color.fromHsl=function(e){return n.fromSource(n.sourceFromHsl(e))},t.Color.sourceFromHsl=function(e){var t=e.match(n.reHSLa);if(t){var i,o,a,s=(parseFloat(t[1])%360+360)%360/360,l=parseFloat(t[2])/(/%$/.test(t[2])?100:1),c=parseFloat(t[3])/(/%$/.test(t[3])?100:1);if(0===l)i=o=a=c;else{var u=c<=.5?c*(l+1):c+l-c*l,d=2*c-u;i=r(d,u,s+1/3),o=r(d,u,s),a=r(d,u,s-1/3)}return[Math.round(255*i),Math.round(255*o),Math.round(255*a),t[4]?parseFloat(t[4]):1]}},t.Color.fromHsla=n.fromHsl,t.Color.fromHex=function(e){return n.fromSource(n.sourceFromHex(e))},t.Color.sourceFromHex=function(e){if(e.match(n.reHex)){var t=e.slice(e.indexOf("#")+1),r=3===t.length||4===t.length,i=8===t.length||4===t.length,o=r?t.charAt(0)+t.charAt(0):t.substring(0,2),a=r?t.charAt(1)+t.charAt(1):t.substring(2,4),s=r?t.charAt(2)+t.charAt(2):t.substring(4,6),l=i?r?t.charAt(3)+t.charAt(3):t.substring(6,8):"FF";return[parseInt(o,16),parseInt(a,16),parseInt(s,16),parseFloat((parseInt(l,16)/255).toFixed(2))]}},t.Color.fromSource=function(e){var t=new n;return t.setSource(e),t})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=["e","se","s","sw","w","nw","n","ne","e"],r=["ns","nesw","ew","nwse"],i={},o="left",a="top",s="right",l="bottom",c="center",u={top:l,bottom:a,left:s,right:o,center:c},d=t.util.radiansToDegrees,h=Math.sign||function(e){return(e>0)-(e<0)||+e};function p(e,t){var n=e.angle+d(Math.atan2(t.y,t.x))+360;return Math.round(n%360/45)}function f(e,n){var r=n.transform.target,i=r.canvas,o=t.util.object.clone(n);o.target=r,i&&i.fire("object:"+e,o),r.fire(e,n)}function m(e,t){var n=t.canvas,r=e[n.uniScaleKey];return n.uniformScaling&&!r||!n.uniformScaling&&r}function g(e){return e.originX===c&&e.originY===c}function v(e,t,n){var r=e.lockScalingX,i=e.lockScalingY;return!(!r||!i)||(!(t||!r&&!i||!n)||(!(!r||"x"!==t)||!(!i||"y"!==t)))}function y(e,t,n,r){return{e:e,transform:t,pointer:{x:n,y:r}}}function b(e){return function(t,n,r,i){var o=n.target,a=o.getCenterPoint(),s=o.translateToOriginPoint(a,n.originX,n.originY),l=e(t,n,r,i);return o.setPositionByOrigin(s,n.originX,n.originY),l}}function x(e,t){return function(n,r,i,o){var a=t(n,r,i,o);return a&&f(e,y(n,r,i,o)),a}}function w(e,n,r,i,o){var a=e.target,s=a.controls[e.corner],l=a.canvas.getZoom(),c=a.padding/l,u=a.toLocalPoint(new t.Point(i,o),n,r);return u.x>=c&&(u.x-=c),u.x<=-c&&(u.x+=c),u.y>=c&&(u.y-=c),u.y<=c&&(u.y+=c),u.x-=s.offsetX,u.y-=s.offsetY,u}function S(e){return e.flipX!==e.flipY}function _(e,t,n,r,i){if(0!==e[t]){var o=i/e._getTransformedDimensions()[r]*e[n];e.set(n,o)}}function C(e,t,n,r){var i,c=t.target,u=c._getTransformedDimensions(0,c.skewY),h=w(t,t.originX,t.originY,n,r),p=Math.abs(2*h.x)-u.x,f=c.skewX;p<2?i=0:(i=d(Math.atan2(p/c.scaleX,u.y/c.scaleY)),t.originX===o&&t.originY===l&&(i=-i),t.originX===s&&t.originY===a&&(i=-i),S(c)&&(i=-i));var m=f!==i;if(m){var g=c._getTransformedDimensions().y;c.set("skewX",i),_(c,"skewY","scaleY","y",g)}return m}function E(e,t,n,r){var i,c=t.target,u=c._getTransformedDimensions(c.skewX,0),h=w(t,t.originX,t.originY,n,r),p=Math.abs(2*h.y)-u.y,f=c.skewY;p<2?i=0:(i=d(Math.atan2(p/c.scaleY,u.x/c.scaleX)),t.originX===o&&t.originY===l&&(i=-i),t.originX===s&&t.originY===a&&(i=-i),S(c)&&(i=-i));var m=f!==i;if(m){var g=c._getTransformedDimensions().x;c.set("skewY",i),_(c,"skewX","scaleX","x",g)}return m}function T(e,t,n,r,i){i=i||{};var o,a,s,l,c,d,p=t.target,f=p.lockScalingX,y=p.lockScalingY,b=i.by,x=m(e,p),S=v(p,b,x),_=t.gestureScale;if(S)return!1;if(_)a=t.scaleX*_,s=t.scaleY*_;else{if(o=w(t,t.originX,t.originY,n,r),c="y"!==b?h(o.x):1,d="x"!==b?h(o.y):1,t.signX||(t.signX=c),t.signY||(t.signY=d),p.lockScalingFlip&&(t.signX!==c||t.signY!==d))return!1;if(l=p._getTransformedDimensions(),x&&!b){var C=Math.abs(o.x)+Math.abs(o.y),E=t.original,T=C/(Math.abs(l.x*E.scaleX/p.scaleX)+Math.abs(l.y*E.scaleY/p.scaleY));a=E.scaleX*T,s=E.scaleY*T}else a=Math.abs(o.x*p.scaleX/l.x),s=Math.abs(o.y*p.scaleY/l.y);g(t)&&(a*=2,s*=2),t.signX!==c&&"y"!==b&&(t.originX=u[t.originX],a*=-1,t.signX=c),t.signY!==d&&"x"!==b&&(t.originY=u[t.originY],s*=-1,t.signY=d)}var O=p.scaleX,N=p.scaleY;return b?("x"===b&&p.set("scaleX",a),"y"===b&&p.set("scaleY",s)):(!f&&p.set("scaleX",a),!y&&p.set("scaleY",s)),O!==p.scaleX||N!==p.scaleY}i.scaleCursorStyleHandler=function(e,t,r){var i=m(e,r),o="";if(0!==t.x&&0===t.y?o="x":0===t.x&&0!==t.y&&(o="y"),v(r,o,i))return"not-allowed";var a=p(r,t);return n[a]+"-resize"},i.skewCursorStyleHandler=function(e,t,n){var i="not-allowed";if(0!==t.x&&n.lockSkewingY)return i;if(0!==t.y&&n.lockSkewingX)return i;var o=p(n,t)%4;return r[o]+"-resize"},i.scaleSkewCursorStyleHandler=function(e,t,n){return e[n.canvas.altActionKey]?i.skewCursorStyleHandler(e,t,n):i.scaleCursorStyleHandler(e,t,n)},i.rotationWithSnapping=x("rotating",b((function(e,t,n,r){var i=t,o=i.target,a=o.translateToOriginPoint(o.getCenterPoint(),i.originX,i.originY);if(o.lockRotation)return!1;var s,l=Math.atan2(i.ey-a.y,i.ex-a.x),c=Math.atan2(r-a.y,n-a.x),u=d(c-l+i.theta);if(o.snapAngle>0){var h=o.snapAngle,p=o.snapThreshold||h,f=Math.ceil(u/h)*h,m=Math.floor(u/h)*h;Math.abs(u-m)<p?u=m:Math.abs(u-f)<p&&(u=f)}return u<0&&(u=360+u),u%=360,s=o.angle!==u,o.angle=u,s}))),i.scalingEqually=x("scaling",b((function(e,t,n,r){return T(e,t,n,r)}))),i.scalingX=x("scaling",b((function(e,t,n,r){return T(e,t,n,r,{by:"x"})}))),i.scalingY=x("scaling",b((function(e,t,n,r){return T(e,t,n,r,{by:"y"})}))),i.scalingYOrSkewingX=function(e,t,n,r){return e[t.target.canvas.altActionKey]?i.skewHandlerX(e,t,n,r):i.scalingY(e,t,n,r)},i.scalingXOrSkewingY=function(e,t,n,r){return e[t.target.canvas.altActionKey]?i.skewHandlerY(e,t,n,r):i.scalingX(e,t,n,r)},i.changeWidth=x("resizing",b((function(e,t,n,r){var i=t.target,o=w(t,t.originX,t.originY,n,r),a=i.strokeWidth/(i.strokeUniform?i.scaleX:1),s=g(t)?2:1,l=i.width,c=Math.abs(o.x*s/i.scaleX)-a;return i.set("width",Math.max(c,0)),l!==c}))),i.skewHandlerX=function(e,t,n,r){var i,l=t.target,u=l.skewX,d=t.originY;return!l.lockSkewingX&&(0===u?i=w(t,c,c,n,r).x>0?o:s:(u>0&&(i=d===a?o:s),u<0&&(i=d===a?s:o),S(l)&&(i=i===o?s:o)),t.originX=i,x("skewing",b(C))(e,t,n,r))},i.skewHandlerY=function(e,t,n,r){var i,s=t.target,u=s.skewY,d=t.originX;return!s.lockSkewingY&&(0===u?i=w(t,c,c,n,r).y>0?a:l:(u>0&&(i=d===o?a:l),u<0&&(i=d===o?l:a),S(s)&&(i=i===a?l:a)),t.originY=i,x("skewing",b(E))(e,t,n,r))},i.dragHandler=function(e,t,n,r){var i=t.target,o=n-t.offsetX,a=r-t.offsetY,s=!i.get("lockMovementX")&&i.left!==o,l=!i.get("lockMovementY")&&i.top!==a;return s&&i.set("left",o),l&&i.set("top",a),(s||l)&&f("moving",y(e,t,n,r)),s||l},i.scaleOrSkewActionName=function(e,t,n){var r=e[n.canvas.altActionKey];return 0===t.x?r?"skewX":"scaleY":0===t.y?r?"skewY":"scaleX":void 0},i.rotationStyleHandler=function(e,t,n){return n.lockRotation?"not-allowed":t.cursorStyle},i.fireEvent=f,i.wrapWithFixedAnchor=b,i.wrapWithFireEvent=x,i.getLocalPoint=w,t.controlsUtils=i}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.degreesToRadians,r=t.controlsUtils;r.renderCircleControl=function(e,t,n,r,i){r=r||{};var o,a=this.sizeX||r.cornerSize||i.cornerSize,s=this.sizeY||r.cornerSize||i.cornerSize,l="undefined"!==typeof r.transparentCorners?r.transparentCorners:i.transparentCorners,c=l?"stroke":"fill",u=!l&&(r.cornerStrokeColor||i.cornerStrokeColor),d=t,h=n;e.save(),e.fillStyle=r.cornerColor||i.cornerColor,e.strokeStyle=r.cornerStrokeColor||i.cornerStrokeColor,a>s?(o=a,e.scale(1,s/a),h=n*a/s):s>a?(o=s,e.scale(a/s,1),d=t*s/a):o=a,e.lineWidth=1,e.beginPath(),e.arc(d,h,o/2,0,2*Math.PI,!1),e[c](),u&&e.stroke(),e.restore()},r.renderSquareControl=function(e,t,r,i,o){i=i||{};var a=this.sizeX||i.cornerSize||o.cornerSize,s=this.sizeY||i.cornerSize||o.cornerSize,l="undefined"!==typeof i.transparentCorners?i.transparentCorners:o.transparentCorners,c=l?"stroke":"fill",u=!l&&(i.cornerStrokeColor||o.cornerStrokeColor),d=a/2,h=s/2;e.save(),e.fillStyle=i.cornerColor||o.cornerColor,e.strokeStyle=i.cornerStrokeColor||o.cornerStrokeColor,e.lineWidth=1,e.translate(t,r),e.rotate(n(o.angle)),e[c+"Rect"](-d,-h,a,s),u&&e.strokeRect(-d,-h,a,s),e.restore()}}(t),function(e){"use strict";var t=e.fabric||(e.fabric={});t.Control=function(e){for(var t in e)this[t]=e[t]},t.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(e,t){return t.cursorStyle},getActionName:function(e,t){return t.actionName},getVisibility:function(e,t){var n=e._controlsVisibility;return n&&"undefined"!==typeof n[t]?n[t]:this.visible},setVisibility:function(e){this.visible=e},positionHandler:function(e,n){return t.util.transformPoint({x:this.x*e.x+this.offsetX,y:this.y*e.y+this.offsetY},n)},calcCornerCoords:function(e,n,r,i,o){var a,s,l,c,u=o?this.touchSizeX:this.sizeX,d=o?this.touchSizeY:this.sizeY;if(u&&d&&u!==d){var h=Math.atan2(d,u),p=Math.sqrt(u*u+d*d)/2,f=h-t.util.degreesToRadians(e),m=Math.PI/2-h-t.util.degreesToRadians(e);a=p*t.util.cos(f),s=p*t.util.sin(f),l=p*t.util.cos(m),c=p*t.util.sin(m)}else{p=.7071067812*(u&&d?u:n);f=t.util.degreesToRadians(45-e);a=l=p*t.util.cos(f),s=c=p*t.util.sin(f)}return{tl:{x:r-c,y:i-l},tr:{x:r+a,y:i-s},bl:{x:r-a,y:i+s},br:{x:r+c,y:i+l}}},render:function(e,n,r,i,o){if("circle"===((i=i||{}).cornerStyle||o.cornerStyle))t.controlsUtils.renderCircleControl.call(this,e,n,r,i,o);else t.controlsUtils.renderSquareControl.call(this,e,n,r,i,o)}}}(t),function(){function e(e,t){var n,r,o,a,s=e.getAttribute("style"),l=e.getAttribute("offset")||0;if(l=(l=parseFloat(l)/(/%$/.test(l)?100:1))<0?0:l>1?1:l,s){var c=s.split(/\s*;\s*/);for(""===c[c.length-1]&&c.pop(),a=c.length;a--;){var u=c[a].split(/\s*:\s*/),d=u[0].trim(),h=u[1].trim();"stop-color"===d?n=h:"stop-opacity"===d&&(o=h)}}return n||(n=e.getAttribute("stop-color")||"rgb(0,0,0)"),o||(o=e.getAttribute("stop-opacity")),r=(n=new i.Color(n)).getAlpha(),o=isNaN(parseFloat(o))?1:parseFloat(o),o*=r*t,{offset:l,color:n.toRgb(),opacity:o}}var t=i.util.object.clone;i.Gradient=i.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(e){e||(e={}),e.coords||(e.coords={});var t,n=this;Object.keys(e).forEach((function(t){n[t]=e[t]})),this.id?this.id+="_"+i.Object.__uid++:this.id=i.Object.__uid++,t={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},"radial"===this.type&&(t.r1=e.coords.r1||0,t.r2=e.coords.r2||0),this.coords=t,this.colorStops=e.colorStops.slice()},addColorStop:function(e){for(var t in e){var n=new i.Color(e[t]);this.colorStops.push({offset:parseFloat(t),color:n.toRgb(),opacity:n.getAlpha()})}return this},toObject:function(e){var t={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return i.util.populateWithProperties(this,t,e),t},toSVG:function(e,n){var r,o,a,s,l=t(this.coords,!0),c=(n=n||{},t(this.colorStops,!0)),u=l.r1>l.r2,d=this.gradientTransform?this.gradientTransform.concat():i.iMatrix.concat(),h=-this.offsetX,p=-this.offsetY,f=!!n.additionalTransform,m="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(c.sort((function(e,t){return e.offset-t.offset})),"objectBoundingBox"===m?(h/=e.width,p/=e.height):(h+=e.width/2,p+=e.height/2),"path"===e.type&&"percentage"!==this.gradientUnits&&(h-=e.pathOffset.x,p-=e.pathOffset.y),d[4]-=h,d[5]-=p,s='id="SVGID_'+this.id+'" gradientUnits="'+m+'"',s+=' gradientTransform="'+(f?n.additionalTransform+" ":"")+i.util.matrixToSVG(d)+'" ',"linear"===this.type?a=["<linearGradient ",s,' x1="',l.x1,'" y1="',l.y1,'" x2="',l.x2,'" y2="',l.y2,'">\n']:"radial"===this.type&&(a=["<radialGradient ",s,' cx="',u?l.x1:l.x2,'" cy="',u?l.y1:l.y2,'" r="',u?l.r1:l.r2,'" fx="',u?l.x2:l.x1,'" fy="',u?l.y2:l.y1,'">\n']),"radial"===this.type){if(u)for((c=c.concat()).reverse(),r=0,o=c.length;r<o;r++)c[r].offset=1-c[r].offset;var g=Math.min(l.r1,l.r2);if(g>0){var v=g/Math.max(l.r1,l.r2);for(r=0,o=c.length;r<o;r++)c[r].offset+=v*(1-c[r].offset)}}for(r=0,o=c.length;r<o;r++){var y=c[r];a.push("<stop ",'offset="',100*y.offset+"%",'" style="stop-color:',y.color,"undefined"!==typeof y.opacity?";stop-opacity: "+y.opacity:";",'"/>\n')}return a.push("linear"===this.type?"</linearGradient>\n":"</radialGradient>\n"),a.join("")},toLive:function(e){var t,n,r,o=i.util.object.clone(this.coords);if(this.type){for("linear"===this.type?t=e.createLinearGradient(o.x1,o.y1,o.x2,o.y2):"radial"===this.type&&(t=e.createRadialGradient(o.x1,o.y1,o.r1,o.x2,o.y2,o.r2)),n=0,r=this.colorStops.length;n<r;n++){var a=this.colorStops[n].color,s=this.colorStops[n].opacity,l=this.colorStops[n].offset;"undefined"!==typeof s&&(a=new i.Color(a).setAlpha(s).toRgba()),t.addColorStop(l,a)}return t}}}),i.util.object.extend(i.Gradient,{fromElement:function(t,n,r,o){var a=parseFloat(r)/(/%$/.test(r)?100:1);a=a<0?0:a>1?1:a,isNaN(a)&&(a=1);var s,l,c,u,d=t.getElementsByTagName("stop"),h="userSpaceOnUse"===t.getAttribute("gradientUnits")?"pixels":"percentage",p=t.getAttribute("gradientTransform")||"",f=[],m=0,g=0;for("linearGradient"===t.nodeName||"LINEARGRADIENT"===t.nodeName?(s="linear",l=function(e){return{x1:e.getAttribute("x1")||0,y1:e.getAttribute("y1")||0,x2:e.getAttribute("x2")||"100%",y2:e.getAttribute("y2")||0}}(t)):(s="radial",l=function(e){return{x1:e.getAttribute("fx")||e.getAttribute("cx")||"50%",y1:e.getAttribute("fy")||e.getAttribute("cy")||"50%",r1:0,x2:e.getAttribute("cx")||"50%",y2:e.getAttribute("cy")||"50%",r2:e.getAttribute("r")||"50%"}}(t)),c=d.length;c--;)f.push(e(d[c],a));return u=i.parseTransformAttribute(p),function(e,t,n,r){var i,o;Object.keys(t).forEach((function(e){"Infinity"===(i=t[e])?o=1:"-Infinity"===i?o=0:(o=parseFloat(t[e],10),"string"===typeof i&&/^(\d+\.\d+)%|(\d+)%$/.test(i)&&(o*=.01,"pixels"===r&&("x1"!==e&&"x2"!==e&&"r2"!==e||(o*=n.viewBoxWidth||n.width),"y1"!==e&&"y2"!==e||(o*=n.viewBoxHeight||n.height)))),t[e]=o}))}(0,l,o,h),"pixels"===h&&(m=-n.left,g=-n.top),new i.Gradient({id:t.getAttribute("id"),type:s,coords:l,colorStops:f,gradientUnits:h,gradientTransform:u,offsetX:m,offsetY:g})}})}(),function(){"use strict";var e=i.util.toFixed;i.Pattern=i.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(e,t){if(e||(e={}),this.id=i.Object.__uid++,this.setOptions(e),!e.source||e.source&&"string"!==typeof e.source)t&&t(this);else{var n=this;this.source=i.util.createImage(),i.util.loadImage(e.source,(function(e,r){n.source=e,t&&t(n,r)}),null,this.crossOrigin)}},toObject:function(t){var n,r,o=i.Object.NUM_FRACTION_DIGITS;return"string"===typeof this.source.src?n=this.source.src:"object"===typeof this.source&&this.source.toDataURL&&(n=this.source.toDataURL()),r={type:"pattern",source:n,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:e(this.offsetX,o),offsetY:e(this.offsetY,o),patternTransform:this.patternTransform?this.patternTransform.concat():null},i.util.populateWithProperties(this,r,t),r},toSVG:function(e){var t="function"===typeof this.source?this.source():this.source,n=t.width/e.width,r=t.height/e.height,i=this.offsetX/e.width,o=this.offsetY/e.height,a="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(r=1,o&&(r+=Math.abs(o))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(n=1,i&&(n+=Math.abs(i))),t.src?a=t.src:t.toDataURL&&(a=t.toDataURL()),'<pattern id="SVGID_'+this.id+'" x="'+i+'" y="'+o+'" width="'+n+'" height="'+r+'">\n<image x="0" y="0" width="'+t.width+'" height="'+t.height+'" xlink:href="'+a+'"></image>\n</pattern>\n'},setOptions:function(e){for(var t in e)this[t]=e[t]},toLive:function(e){var t=this.source;if(!t)return"";if("undefined"!==typeof t.src){if(!t.complete)return"";if(0===t.naturalWidth||0===t.naturalHeight)return""}return e.createPattern(t,this.repeat)}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;t.Shadow?t.warn("fabric.Shadow is already defined."):(t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(e){for(var n in"string"===typeof e&&(e=this._parseShadow(e)),e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[];return{color:(n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(r[1],10)||0,offsetY:parseFloat(r[2],10)||0,blur:parseFloat(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var r=40,i=40,o=t.Object.NUM_FRACTION_DIGITS,a=t.util.rotateVector({x:this.offsetX,y:this.offsetY},t.util.degreesToRadians(-e.angle)),s=new t.Color(this.color);return e.width&&e.height&&(r=100*n((Math.abs(a.x)+this.blur)/e.width,o)+20,i=100*n((Math.abs(a.y)+this.blur)/e.height,o)+20),e.flipX&&(a.x*=-1),e.flipY&&(a.y*=-1),'<filter id="SVGID_'+this.id+'" y="-'+i+'%" height="'+(100+2*i)+'%" x="-'+r+'%" width="'+(100+2*r)+'%" >\n\t<feGaussianBlur in="SourceAlpha" stdDeviation="'+n(this.blur?this.blur/2:0,o)+'"></feGaussianBlur>\n\t<feOffset dx="'+n(a.x,o)+'" dy="'+n(a.y,o)+'" result="oBlur" ></feOffset>\n\t<feFlood flood-color="'+s.toRgb()+'" flood-opacity="'+s.getAlpha()+'"/>\n\t<feComposite in2="oBlur" operator="in" />\n\t<feMerge>\n\t\t<feMergeNode></feMergeNode>\n\t\t<feMergeNode in="SourceGraphic"></feMergeNode>\n\t</feMerge>\n</filter>\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var e={},n=t.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(t){this[t]!==n[t]&&(e[t]=this[t])}),this),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(t),function(){"use strict";if(i.StaticCanvas)i.warn("fabric.StaticCanvas is already defined.");else{var e=i.util.object.extend,t=i.util.getElementOffset,n=i.util.removeFromArray,r=i.util.toFixed,o=i.util.transformPoint,a=i.util.invertTransform,s=i.util.getNodeCanvas,l=i.util.createCanvasElement,c=new Error("Could not initialize `canvas` element");i.StaticCanvas=i.util.createClass(i.CommonMethods,{initialize:function(e,t){t||(t={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(e,t)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:i.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(e,t){var n=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(e),this._initOptions(t),this.interactive||this._initRetinaScaling(),t.overlayImage&&this.setOverlayImage(t.overlayImage,n),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,n),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,n),t.overlayColor&&this.setOverlayColor(t.overlayColor,n),this.calcOffset()},_isRetinaScaling:function(){return i.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,i.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var e=i.devicePixelRatio;this.__initRetinaScaling(e,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(e,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(e,t,n){t.setAttribute("width",this.width*e),t.setAttribute("height",this.height*e),n.scale(e,e)},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return"string"===typeof t?i.util.loadImage(t,(function(t,o){if(t){var a=new i.Image(t,r);this[e]=a,a.canvas=this}n&&n(t,o)}),this,r&&r.crossOrigin):(r&&t.setOptions(r),this[e]=t,t&&(t.canvas=this),n&&n(t,!1)),this},__setBgOverlayColor:function(e,t,n){return this[e]=t,this._initGradient(t,e),this._initPattern(t,e,n),this},_createCanvasElement:function(){var e=l();if(!e)throw c;if(e.style||(e.style={}),"undefined"===typeof e.getContext)throw c;return e},_initOptions:function(e){var t=this.lowerCanvasEl;this._setOptions(e),this.width=this.width||parseInt(t.width,10)||0,this.height=this.height||parseInt(t.height,10)||0,this.lowerCanvasEl.style&&(t.width=this.width,t.height=this.height,t.style.width=this.width+"px",t.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(e){e&&e.getContext?this.lowerCanvasEl=e:this.lowerCanvasEl=i.util.getById(e)||this._createCanvasElement(),i.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e,t){return this.setDimensions({width:e},t)},setHeight:function(e,t){return this.setDimensions({height:e},t)},setDimensions:function(e,t){var n;for(var r in t=t||{},e)n=e[r],t.cssOnly||(this._setBackstoreDimension(r,e[r]),n+="px",this.hasLostContext=!0),t.backstoreOnly||this._setCssDimension(r,n);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),t.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.upperCanvasEl&&(this.upperCanvasEl[e]=t),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this[e]=t,this},_setCssDimension:function(e,t){return this.lowerCanvasEl.style[e]=t,this.upperCanvasEl&&(this.upperCanvasEl.style[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(e){var t,n,r,i=this._activeObject,o=this.backgroundImage,a=this.overlayImage;for(this.viewportTransform=e,n=0,r=this._objects.length;n<r;n++)(t=this._objects[n]).group||t.setCoords(!0);return i&&i.setCoords(),o&&o.setCoords(!0),a&&a.setCoords(!0),this.calcViewportBoundaries(),this.renderOnAddRemove&&this.requestRenderAll(),this},zoomToPoint:function(e,t){var n=e,r=this.viewportTransform.slice(0);e=o(e,a(this.viewportTransform)),r[0]=t,r[3]=t;var i=o(e,r);return r[4]+=n.x-i.x,r[5]+=n.y-i.y,this.setViewportTransform(r)},setZoom:function(e){return this.zoomToPoint(new i.Point(0,0),e),this},absolutePan:function(e){var t=this.viewportTransform.slice(0);return t[4]=-e.x,t[5]=-e.y,this.setViewportTransform(t)},relativePan:function(e){return this.absolutePan(new i.Point(-e.x-this.viewportTransform[4],-e.y-this.viewportTransform[5]))},getElement:function(){return this.lowerCanvasEl},_onObjectAdded:function(e){this.stateful&&e.setupState(),e._set("canvas",this),e.setCoords(),this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.fire("object:removed",{target:e}),e.fire("removed"),delete e.canvas},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this.remove.apply(this,this.getObjects()),this.backgroundImage=null,this.overlayImage=null,this.backgroundColor="",this.overlayColor="",this._hasITextHandlers&&(this.off("mouse:up",this._mouseUpITextHandler),this._iTextInstances=null,this._hasITextHandlers=!1),this.clearContext(this.contextContainer),this.fire("canvas:cleared"),this.renderOnAddRemove&&this.requestRenderAll(),this},renderAll:function(){var e=this.contextContainer;return this.renderCanvas(e,this._objects),this},renderAndReset:function(){this.isRendering=0,this.renderAll()},requestRenderAll:function(){return this.isRendering||(this.isRendering=i.util.requestAnimFrame(this.renderAndResetBound)),this},calcViewportBoundaries:function(){var e={},t=this.width,n=this.height,r=a(this.viewportTransform);return e.tl=o({x:0,y:0},r),e.br=o({x:t,y:n},r),e.tr=new i.Point(e.br.x,e.tl.y),e.bl=new i.Point(e.tl.x,e.br.y),this.vptCoords=e,e},cancelRequestedRender:function(){this.isRendering&&(i.util.cancelAnimFrame(this.isRendering),this.isRendering=0)},renderCanvas:function(e,t){var n=this.viewportTransform,r=this.clipPath;this.cancelRequestedRender(),this.calcViewportBoundaries(),this.clearContext(e),i.util.setImageSmoothing(e,this.imageSmoothingEnabled),this.fire("before:render",{ctx:e}),this._renderBackground(e),e.save(),e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this._renderObjects(e,t),e.restore(),!this.controlsAboveOverlay&&this.interactive&&this.drawControls(e),r&&(r.canvas=this,r.shouldCache(),r._transformDone=!0,r.renderCache({forClipping:!0}),this.drawClipPathOnCanvas(e)),this._renderOverlay(e),this.controlsAboveOverlay&&this.interactive&&this.drawControls(e),this.fire("after:render",{ctx:e})},drawClipPathOnCanvas:function(e){var t=this.viewportTransform,n=this.clipPath;e.save(),e.transform(t[0],t[1],t[2],t[3],t[4],t[5]),e.globalCompositeOperation="destination-in",n.transform(e),e.scale(1/n.zoomX,1/n.zoomY),e.drawImage(n._cacheCanvas,-n.cacheTranslationX,-n.cacheTranslationY),e.restore()},_renderObjects:function(e,t){var n,r;for(n=0,r=t.length;n<r;++n)t[n]&&t[n].render(e)},_renderBackgroundOrOverlay:function(e,t){var n=this[t+"Color"],r=this[t+"Image"],i=this.viewportTransform,o=this[t+"Vpt"];if(n||r){if(n){e.save(),e.beginPath(),e.moveTo(0,0),e.lineTo(this.width,0),e.lineTo(this.width,this.height),e.lineTo(0,this.height),e.closePath(),e.fillStyle=n.toLive?n.toLive(e,this):n,o&&e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),e.transform(1,0,0,1,n.offsetX||0,n.offsetY||0);var a=n.gradientTransform||n.patternTransform;a&&e.transform(a[0],a[1],a[2],a[3],a[4],a[5]),e.fill(),e.restore()}r&&(e.save(),o&&e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),r.render(e),e.restore())}},_renderBackground:function(e){this._renderBackgroundOrOverlay(e,"background")},_renderOverlay:function(e){this._renderBackgroundOrOverlay(e,"overlay")},getCenter:function(){return{top:this.height/2,left:this.width/2}},getCenterPoint:function(){return new i.Point(this.width/2,this.height/2)},centerObjectH:function(e){return this._centerObject(e,new i.Point(this.getCenterPoint().x,e.getCenterPoint().y))},centerObjectV:function(e){return this._centerObject(e,new i.Point(e.getCenterPoint().x,this.getCenterPoint().y))},centerObject:function(e){var t=this.getCenterPoint();return this._centerObject(e,t)},viewportCenterObject:function(e){var t=this.getVpCenter();return this._centerObject(e,t)},viewportCenterObjectH:function(e){var t=this.getVpCenter();return this._centerObject(e,new i.Point(t.x,e.getCenterPoint().y)),this},viewportCenterObjectV:function(e){var t=this.getVpCenter();return this._centerObject(e,new i.Point(e.getCenterPoint().x,t.y))},getVpCenter:function(){var e=this.getCenterPoint(),t=a(this.viewportTransform);return o(e,t)},_centerObject:function(e,t){return e.setPositionByOrigin(t,"center","center"),e.setCoords(),this.renderOnAddRemove&&this.requestRenderAll(),this},toDatalessJSON:function(e){return this.toDatalessObject(e)},toObject:function(e){return this._toObjectMethod("toObject",e)},toDatalessObject:function(e){return this._toObjectMethod("toDatalessObject",e)},_toObjectMethod:function(t,n){var r=this.clipPath,o={version:i.version,objects:this._toObjects(t,n)};return r&&!r.excludeFromExport&&(o.clipPath=this._toObject(this.clipPath,t,n)),e(o,this.__serializeBgOverlay(t,n)),i.util.populateWithProperties(this,o,n),o},_toObjects:function(e,t){return this._objects.filter((function(e){return!e.excludeFromExport})).map((function(n){return this._toObject(n,e,t)}),this)},_toObject:function(e,t,n){var r;this.includeDefaultValues||(r=e.includeDefaultValues,e.includeDefaultValues=!1);var i=e[t](n);return this.includeDefaultValues||(e.includeDefaultValues=r),i},__serializeBgOverlay:function(e,t){var n={},r=this.backgroundImage,i=this.overlayImage,o=this.backgroundColor,a=this.overlayColor;return o&&o.toObject?o.excludeFromExport||(n.background=o.toObject(t)):o&&(n.background=o),a&&a.toObject?a.excludeFromExport||(n.overlay=a.toObject(t)):a&&(n.overlay=a),r&&!r.excludeFromExport&&(n.backgroundImage=this._toObject(r,e,t)),i&&!i.excludeFromExport&&(n.overlayImage=this._toObject(i,e,t)),n},svgViewportTransformation:!0,toSVG:function(e,t){e||(e={}),e.reviver=t;var n=[];return this._setSVGPreamble(n,e),this._setSVGHeader(n,e),this.clipPath&&n.push('<g clip-path="url(#'+this.clipPath.clipPathId+')" >\n'),this._setSVGBgOverlayColor(n,"background"),this._setSVGBgOverlayImage(n,"backgroundImage",t),this._setSVGObjects(n,t),this.clipPath&&n.push("</g>\n"),this._setSVGBgOverlayColor(n,"overlay"),this._setSVGBgOverlayImage(n,"overlayImage",t),n.push("</svg>"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('<?xml version="1.0" encoding="',t.encoding||"UTF-8",'" standalone="no" ?>\n','<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" ','"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')},_setSVGHeader:function(e,t){var n,o=t.width||this.width,a=t.height||this.height,s='viewBox="0 0 '+this.width+" "+this.height+'" ',l=i.Object.NUM_FRACTION_DIGITS;t.viewBox?s='viewBox="'+t.viewBox.x+" "+t.viewBox.y+" "+t.viewBox.width+" "+t.viewBox.height+'" ':this.svgViewportTransformation&&(n=this.viewportTransform,s='viewBox="'+r(-n[4]/n[0],l)+" "+r(-n[5]/n[3],l)+" "+r(this.width/n[0],l)+" "+r(this.height/n[3],l)+'" '),e.push("<svg ",'xmlns="http://www.w3.org/2000/svg" ','xmlns:xlink="http://www.w3.org/1999/xlink" ','version="1.1" ','width="',o,'" ','height="',a,'" ',s,'xml:space="preserve">\n',"<desc>Created with Fabric.js ",i.version,"</desc>\n","<defs>\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(t),"</defs>\n")},createSVGClipPathMarkup:function(e){var t=this.clipPath;return t?(t.clipPathId="CLIPPATH_"+i.Object.__uid++,'<clipPath id="'+t.clipPathId+'" >\n'+this.clipPath.toClipPathSVG(e.reviver)+"</clipPath>\n"):""},createSVGRefElementsMarkup:function(){var e=this;return["background","overlay"].map((function(t){var n=e[t+"Color"];if(n&&n.toLive){var r=e[t+"Vpt"],o=e.viewportTransform,a={width:e.width/(r?o[0]:1),height:e.height/(r?o[3]:1)};return n.toSVG(a,{additionalTransform:r?i.util.matrixToSVG(o):""})}})).join("")},createSVGFontFacesMarkup:function(){var e,t,n,r,o,a,s,l,c="",u={},d=i.fontPaths,h=[];for(this._objects.forEach((function e(t){h.push(t),t._objects&&t._objects.forEach(e)})),s=0,l=h.length;s<l;s++)if(t=(e=h[s]).fontFamily,-1!==e.type.indexOf("text")&&!u[t]&&d[t]&&(u[t]=!0,e.styles))for(o in n=e.styles)for(a in r=n[o])!u[t=r[a].fontFamily]&&d[t]&&(u[t]=!0);for(var p in u)c+=["\t\t@font-face {\n","\t\t\tfont-family: '",p,"';\n","\t\t\tsrc: url('",d[p],"');\n","\t\t}\n"].join("");return c&&(c=['\t<style type="text/css">',"<![CDATA[\n",c,"]]>","</style>\n"].join("")),c},_setSVGObjects:function(e,t){var n,r,i,o=this._objects;for(r=0,i=o.length;r<i;r++)(n=o[r]).excludeFromExport||this._setSVGObject(e,n,t)},_setSVGObject:function(e,t,n){e.push(t.toSVG(n))},_setSVGBgOverlayImage:function(e,t,n){this[t]&&!this[t].excludeFromExport&&this[t].toSVG&&e.push(this[t].toSVG(n))},_setSVGBgOverlayColor:function(e,t){var n=this[t+"Color"],r=this.viewportTransform,o=this.width,a=this.height;if(n)if(n.toLive){var s=n.repeat,l=i.util.invertTransform(r),c=this[t+"Vpt"]?i.util.matrixToSVG(l):"";e.push('<rect transform="'+c+" translate(",o/2,",",a/2,')"',' x="',n.offsetX-o/2,'" y="',n.offsetY-a/2,'" ','width="',"repeat-y"===s||"no-repeat"===s?n.source.width:o,'" height="',"repeat-x"===s||"no-repeat"===s?n.source.height:a,'" fill="url(#SVGID_'+n.id+')"',"></rect>\n")}else e.push('<rect x="0" y="0" width="100%" height="100%" ','fill="',n,'"',"></rect>\n")},sendToBack:function(e){if(!e)return this;var t,r,i,o=this._activeObject;if(e===o&&"activeSelection"===e.type)for(t=(i=o._objects).length;t--;)r=i[t],n(this._objects,r),this._objects.unshift(r);else n(this._objects,e),this._objects.unshift(e);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(e){if(!e)return this;var t,r,i,o=this._activeObject;if(e===o&&"activeSelection"===e.type)for(i=o._objects,t=0;t<i.length;t++)r=i[t],n(this._objects,r),this._objects.push(r);else n(this._objects,e),this._objects.push(e);return this.renderOnAddRemove&&this.requestRenderAll(),this},sendBackwards:function(e,t){if(!e)return this;var r,i,o,a,s,l=this._activeObject,c=0;if(e===l&&"activeSelection"===e.type)for(s=l._objects,r=0;r<s.length;r++)i=s[r],(o=this._objects.indexOf(i))>0+c&&(a=o-1,n(this._objects,i),this._objects.splice(a,0,i)),c++;else 0!==(o=this._objects.indexOf(e))&&(a=this._findNewLowerIndex(e,o,t),n(this._objects,e),this._objects.splice(a,0,e));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(e,t,n){var r,i;if(n)for(r=t,i=t-1;i>=0;--i){if(e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e)){r=i;break}}else r=t-1;return r},bringForward:function(e,t){if(!e)return this;var r,i,o,a,s,l=this._activeObject,c=0;if(e===l&&"activeSelection"===e.type)for(r=(s=l._objects).length;r--;)i=s[r],(o=this._objects.indexOf(i))<this._objects.length-1-c&&(a=o+1,n(this._objects,i),this._objects.splice(a,0,i)),c++;else(o=this._objects.indexOf(e))!==this._objects.length-1&&(a=this._findNewUpperIndex(e,o,t),n(this._objects,e),this._objects.splice(a,0,e));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewUpperIndex:function(e,t,n){var r,i,o;if(n)for(r=t,i=t+1,o=this._objects.length;i<o;++i){if(e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e)){r=i;break}}else r=t+1;return r},moveTo:function(e,t){return n(this._objects,e),this._objects.splice(t,0,e),this.renderOnAddRemove&&this.requestRenderAll()},dispose:function(){return this.isRendering&&(i.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(e){e.dispose&&e.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),i.util.setStyle(this.lowerCanvasEl,this._originalCanvasStyle),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),i.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},toString:function(){return"#<fabric.Canvas ("+this.complexity()+"): { objects: "+this._objects.length+" }>"}}),e(i.StaticCanvas.prototype,i.Observable),e(i.StaticCanvas.prototype,i.Collection),e(i.StaticCanvas.prototype,i.DataURLExporter),e(i.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=l();if(!t||!t.getContext)return null;var n=t.getContext("2d");return n&&"setLineDash"===e?"undefined"!==typeof n.setLineDash:null}}),i.StaticCanvas.prototype.toJSON=i.StaticCanvas.prototype.toObject,i.isLikelyNode&&(i.StaticCanvas.prototype.createPNGStream=function(){var e=s(this.lowerCanvasEl);return e&&e.createPNGStream()},i.StaticCanvas.prototype.createJPEGStream=function(e){var t=s(this.lowerCanvasEl);return t&&t.createJPEGStream(e)})}}(),i.BaseBrush=i.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(e){e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.miterLimit=this.strokeMiterLimit,e.lineJoin=this.strokeLineJoin,e.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(e){var t=this.canvas.viewportTransform;e.save(),e.transform(t[0],t[1],t[2],t[3],t[4],t[5])},_setShadow:function(){if(this.shadow){var e=this.canvas,t=this.shadow,n=e.contextTop,r=e.getZoom();e&&e._isRetinaScaling()&&(r*=i.devicePixelRatio),n.shadowColor=t.color,n.shadowBlur=t.blur*r,n.shadowOffsetX=t.offsetX*r,n.shadowOffsetY=t.offsetY*r}},needsFullRender:function(){return new i.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_isOutSideCanvas:function(e){return e.x<0||e.x>this.canvas.getWidth()||e.y<0||e.y>this.canvas.getHeight()}}),i.PencilBrush=i.util.createClass(i.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(e){this.canvas=e,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(e,t,n){var r=t.midPointFrom(n);return e.quadraticCurveTo(t.x,t.y,r.x,r.y),r},onMouseDown:function(e,t){this.canvas._isMainEvent(t.e)&&(this.drawStraightLine=t.e[this.straightLineKey],this._prepareForDrawing(e),this._captureDrawingPath(e),this._render())},onMouseMove:function(e,t){if(this.canvas._isMainEvent(t.e)&&(this.drawStraightLine=t.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(e))&&this._captureDrawingPath(e)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var n=this._points,r=n.length,i=this.canvas.contextTop;this._saveAndTransform(i),this.oldEnd&&(i.beginPath(),i.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(i,n[r-2],n[r-1],!0),i.stroke(),i.restore()}},onMouseUp:function(e){return!this.canvas._isMainEvent(e.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(e){var t=new i.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){return!(this._points.length>1&&e.eq(this._points[this._points.length-1]))&&(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(e),!0)},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(e){var t=new i.Point(e.x,e.y);return this._addPoint(t)},_render:function(e){var t,n,r=this._points[0],o=this._points[1];if(e=e||this.canvas.contextTop,this._saveAndTransform(e),e.beginPath(),2===this._points.length&&r.x===o.x&&r.y===o.y){var a=this.width/1e3;r=new i.Point(r.x,r.y),o=new i.Point(o.x,o.y),r.x-=a,o.x+=a}for(e.moveTo(r.x,r.y),t=1,n=this._points.length;t<n;t++)this._drawSegment(e,r,o),r=this._points[t],o=this._points[t+1];e.lineTo(r.x,r.y),e.stroke(),e.restore()},convertPointsToSVGPath:function(e){var t=this.width/1e3;return i.util.getSmoothPathFromPoints(e,t)},_isEmptySVGPath:function(e){return"M 0 0 Q 0 0 0 0 L 0 0"===i.util.joinPath(e)},createPath:function(e){var t=new i.Path(e,{fill:null,stroke:this.color,strokeWidth:this.width,strokeLineCap:this.strokeLineCap,strokeMiterLimit:this.strokeMiterLimit,strokeLineJoin:this.strokeLineJoin,strokeDashArray:this.strokeDashArray});return this.shadow&&(this.shadow.affectStroke=!0,t.shadow=new i.Shadow(this.shadow)),t},decimatePoints:function(e,t){if(e.length<=2)return e;var n,r=this.canvas.getZoom(),i=Math.pow(t/r,2),o=e.length-1,a=e[0],s=[a];for(n=1;n<o-1;n++)Math.pow(a.x-e[n].x,2)+Math.pow(a.y-e[n].y,2)>=i&&(a=e[n],s.push(a));return s.push(e[o]),s},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var e=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(e))this.canvas.requestRenderAll();else{var t=this.createPath(e);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:t}),this.canvas.add(t),this.canvas.requestRenderAll(),t.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:t})}}}),i.CircleBrush=i.util.createClass(i.BaseBrush,{width:10,initialize:function(e){this.canvas=e,this.points=[]},drawDot:function(e){var t=this.addPoint(e),n=this.canvas.contextTop;this._saveAndTransform(n),this.dot(n,t),n.restore()},dot:function(e,t){e.fillStyle=t.fill,e.beginPath(),e.arc(t.x,t.y,t.radius,0,2*Math.PI,!1),e.closePath(),e.fill()},onMouseDown:function(e){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(e)},_render:function(){var e,t,n=this.canvas.contextTop,r=this.points;for(this._saveAndTransform(n),e=0,t=r.length;e<t;e++)this.dot(n,r[e]);n.restore()},onMouseMove:function(e){!0===this.limitedToCanvasSize&&this._isOutSideCanvas(e)||(this.needsFullRender()?(this.canvas.clearContext(this.canvas.contextTop),this.addPoint(e),this._render()):this.drawDot(e))},onMouseUp:function(){var e,t,n=this.canvas.renderOnAddRemove;this.canvas.renderOnAddRemove=!1;var r=[];for(e=0,t=this.points.length;e<t;e++){var o=this.points[e],a=new i.Circle({radius:o.radius,left:o.x,top:o.y,originX:"center",originY:"center",fill:o.fill});this.shadow&&(a.shadow=new i.Shadow(this.shadow)),r.push(a)}var s=new i.Group(r);s.canvas=this.canvas,this.canvas.fire("before:path:created",{path:s}),this.canvas.add(s),this.canvas.fire("path:created",{path:s}),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderOnAddRemove=n,this.canvas.requestRenderAll()},addPoint:function(e){var t=new i.Point(e.x,e.y),n=i.util.getRandomInt(Math.max(0,this.width-20),this.width+20)/2,r=new i.Color(this.color).setAlpha(i.util.getRandomInt(0,100)/100).toRgba();return t.radius=n,t.fill=r,this.points.push(t),t}}),i.SprayBrush=i.util.createClass(i.BaseBrush,{width:10,density:20,dotWidth:1,dotWidthVariance:1,randomOpacity:!1,optimizeOverlapping:!0,initialize:function(e){this.canvas=e,this.sprayChunks=[]},onMouseDown:function(e){this.sprayChunks.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.addSprayChunk(e),this.render(this.sprayChunkPoints)},onMouseMove:function(e){!0===this.limitedToCanvasSize&&this._isOutSideCanvas(e)||(this.addSprayChunk(e),this.render(this.sprayChunkPoints))},onMouseUp:function(){var e=this.canvas.renderOnAddRemove;this.canvas.renderOnAddRemove=!1;for(var t=[],n=0,r=this.sprayChunks.length;n<r;n++)for(var o=this.sprayChunks[n],a=0,s=o.length;a<s;a++){var l=new i.Rect({width:o[a].width,height:o[a].width,left:o[a].x+1,top:o[a].y+1,originX:"center",originY:"center",fill:this.color});t.push(l)}this.optimizeOverlapping&&(t=this._getOptimizedRects(t));var c=new i.Group(t);this.shadow&&c.set("shadow",new i.Shadow(this.shadow)),this.canvas.fire("before:path:created",{path:c}),this.canvas.add(c),this.canvas.fire("path:created",{path:c}),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderOnAddRemove=e,this.canvas.requestRenderAll()},_getOptimizedRects:function(e){var t,n,r,i={};for(n=0,r=e.length;n<r;n++)i[t=e[n].left+""+e[n].top]||(i[t]=e[n]);var o=[];for(t in i)o.push(i[t]);return o},render:function(e){var t,n,r=this.canvas.contextTop;for(r.fillStyle=this.color,this._saveAndTransform(r),t=0,n=e.length;t<n;t++){var i=e[t];"undefined"!==typeof i.opacity&&(r.globalAlpha=i.opacity),r.fillRect(i.x,i.y,i.width,i.width)}r.restore()},_render:function(){var e,t,n=this.canvas.contextTop;for(n.fillStyle=this.color,this._saveAndTransform(n),e=0,t=this.sprayChunks.length;e<t;e++)this.render(this.sprayChunks[e]);n.restore()},addSprayChunk:function(e){this.sprayChunkPoints=[];var t,n,r,o,a=this.width/2;for(o=0;o<this.density;o++){t=i.util.getRandomInt(e.x-a,e.x+a),n=i.util.getRandomInt(e.y-a,e.y+a),r=this.dotWidthVariance?i.util.getRandomInt(Math.max(1,this.dotWidth-this.dotWidthVariance),this.dotWidth+this.dotWidthVariance):this.dotWidth;var s=new i.Point(t,n);s.width=r,this.randomOpacity&&(s.opacity=i.util.getRandomInt(0,100)/100),this.sprayChunkPoints.push(s)}this.sprayChunks.push(this.sprayChunkPoints)}}),i.PatternBrush=i.util.createClass(i.PencilBrush,{getPatternSrc:function(){var e=i.util.createCanvasElement(),t=e.getContext("2d");return e.width=e.height=25,t.fillStyle=this.color,t.beginPath(),t.arc(10,10,10,0,2*Math.PI,!1),t.closePath(),t.fill(),e},getPatternSrcFunction:function(){return String(this.getPatternSrc).replace("this.color",'"'+this.color+'"')},getPattern:function(e){return e.createPattern(this.source||this.getPatternSrc(),"repeat")},_setBrushStyles:function(e){this.callSuper("_setBrushStyles",e),e.strokeStyle=this.getPattern(e)},createPath:function(e){var t=this.callSuper("createPath",e),n=t._getLeftTopCoords().scalarAdd(t.strokeWidth/2);return t.stroke=new i.Pattern({source:this.source||this.getPatternSrcFunction(),offsetX:-n.x,offsetY:-n.y}),t}}),function(){var e=i.util.getPointer,t=i.util.degreesToRadians,n=i.util.isTouchEvent;for(var r in i.Canvas=i.util.createClass(i.StaticCanvas,{initialize:function(e,t){t||(t={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(e,t),this._initInteractive(),this._createCacheCanvas()},uniformScaling:!0,uniScaleKey:"shiftKey",centeredScaling:!1,centeredRotation:!1,centeredKey:"altKey",altActionKey:"shiftKey",interactive:!0,selection:!0,selectionKey:"shiftKey",altSelectionKey:null,selectionColor:"rgba(100, 100, 255, 0.3)",selectionDashArray:[],selectionBorderColor:"rgba(255, 255, 255, 0.3)",selectionLineWidth:1,selectionFullyContained:!1,hoverCursor:"move",moveCursor:"move",defaultCursor:"default",freeDrawingCursor:"crosshair",notAllowedCursor:"not-allowed",containerClass:"canvas-container",perPixelTargetFind:!1,targetFindTolerance:0,skipTargetFind:!1,isDrawingMode:!1,preserveObjectStacking:!1,snapAngle:0,snapThreshold:null,stopContextMenu:!1,fireRightClick:!1,fireMiddleClick:!1,targets:[],enablePointerEvents:!1,_hoveredTarget:null,_hoveredTargets:[],_initInteractive:function(){this._currentTransform=null,this._groupSelector=null,this._initWrapperElement(),this._createUpperCanvas(),this._initEventListeners(),this._initRetinaScaling(),this.freeDrawingBrush=i.PencilBrush&&new i.PencilBrush(this),this.calcOffset()},_chooseObjectsToRender:function(){var e,t,n,r=this.getActiveObjects();if(r.length>0&&!this.preserveObjectStacking){t=[],n=[];for(var i=0,o=this._objects.length;i<o;i++)e=this._objects[i],-1===r.indexOf(e)?t.push(e):n.push(e);r.length>1&&(this._activeObject._objects=n),t.push.apply(t,n)}else t=this._objects;return t},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var e=this.contextContainer;return this.renderCanvas(e,this._chooseObjectsToRender()),this},renderTopLayer:function(e){e.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(e),this.contextTopDirty=!0),e.restore()},renderTop:function(){var e=this.contextTop;return this.clearContext(e),this.renderTopLayer(e),this.fire("after:render"),this},_normalizePointer:function(e,t){var n=e.calcTransformMatrix(),r=i.util.invertTransform(n),o=this.restorePointerVpt(t);return i.util.transformPoint(o,r)},isTargetTransparent:function(e,t,n){if(e.shouldCache()&&e._cacheCanvas&&e!==this._activeObject){var r=this._normalizePointer(e,{x:t,y:n}),o=Math.max(e.cacheTranslationX+r.x*e.zoomX,0),a=Math.max(e.cacheTranslationY+r.y*e.zoomY,0);return i.util.isTransparent(e._cacheContext,Math.round(o),Math.round(a),this.targetFindTolerance)}var s=this.contextCache,l=e.selectionBackgroundColor,c=this.viewportTransform;return e.selectionBackgroundColor="",this.clearContext(s),s.save(),s.transform(c[0],c[1],c[2],c[3],c[4],c[5]),e.render(s),s.restore(),e.selectionBackgroundColor=l,i.util.isTransparent(s,t,n,this.targetFindTolerance)},_isSelectionKeyPressed:function(e){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(t){return!0===e[t]})):e[this.selectionKey]},_shouldClearSelection:function(e,t){var n=this.getActiveObjects(),r=this._activeObject;return!t||t&&r&&n.length>1&&-1===n.indexOf(t)&&r!==t&&!this._isSelectionKeyPressed(e)||t&&!t.evented||t&&!t.selectable&&r&&r!==t},_shouldCenterTransform:function(e,t,n){var r;if(e)return"scale"===t||"scaleX"===t||"scaleY"===t||"resizing"===t?r=this.centeredScaling||e.centeredScaling:"rotate"===t&&(r=this.centeredRotation||e.centeredRotation),r?!n:n},_getOriginFromCorner:function(e,t){var n={x:e.originX,y:e.originY};return"ml"===t||"tl"===t||"bl"===t?n.x="right":"mr"!==t&&"tr"!==t&&"br"!==t||(n.x="left"),"tl"===t||"mt"===t||"tr"===t?n.y="bottom":"bl"!==t&&"mb"!==t&&"br"!==t||(n.y="top"),n},_getActionFromCorner:function(e,t,n,r){if(!t||!e)return"drag";var i=r.controls[t];return i.getActionName(n,i,r)},_setupCurrentTransform:function(e,n,r){if(n){var o=this.getPointer(e),a=n.__corner,s=n.controls[a],l=r&&a?s.getActionHandler(e,n,s):i.controlsUtils.dragHandler,c=this._getActionFromCorner(r,a,e,n),u=this._getOriginFromCorner(n,a),d=e[this.centeredKey],h={target:n,action:c,actionHandler:l,corner:a,scaleX:n.scaleX,scaleY:n.scaleY,skewX:n.skewX,skewY:n.skewY,offsetX:o.x-n.left,offsetY:o.y-n.top,originX:u.x,originY:u.y,ex:o.x,ey:o.y,lastX:o.x,lastY:o.y,theta:t(n.angle),width:n.width*n.scaleX,shiftKey:e.shiftKey,altKey:d,original:i.util.saveObjectTransform(n)};this._shouldCenterTransform(n,c,d)&&(h.originX="center",h.originY="center"),h.original.originX=u.x,h.original.originY=u.y,this._currentTransform=h,this._beforeTransform(e)}},setCursor:function(e){this.upperCanvasEl.style.cursor=e},_drawSelection:function(e){var t=this._groupSelector,n=new i.Point(t.ex,t.ey),r=i.util.transformPoint(n,this.viewportTransform),o=new i.Point(t.ex+t.left,t.ey+t.top),a=i.util.transformPoint(o,this.viewportTransform),s=Math.min(r.x,a.x),l=Math.min(r.y,a.y),c=Math.max(r.x,a.x),u=Math.max(r.y,a.y),d=this.selectionLineWidth/2;this.selectionColor&&(e.fillStyle=this.selectionColor,e.fillRect(s,l,c-s,u-l)),this.selectionLineWidth&&this.selectionBorderColor&&(e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor,s+=d,l+=d,c-=d,u-=d,i.Object.prototype._setLineDash.call(this,e,this.selectionDashArray),e.strokeRect(s,l,c-s,u-l))},findTarget:function(e,t){if(!this.skipTargetFind){var r,i,o=this.getPointer(e,!0),a=this._activeObject,s=this.getActiveObjects(),l=n(e),c=s.length>1&&!t||1===s.length;if(this.targets=[],c&&a._findTargetCorner(o,l))return a;if(s.length>1&&!t&&a===this._searchPossibleTargets([a],o))return a;if(1===s.length&&a===this._searchPossibleTargets([a],o)){if(!this.preserveObjectStacking)return a;r=a,i=this.targets,this.targets=[]}var u=this._searchPossibleTargets(this._objects,o);return e[this.altSelectionKey]&&u&&r&&u!==r&&(u=r,this.targets=i),u}},_checkTarget:function(e,t,n){if(t&&t.visible&&t.evented&&t.containsPoint(e)){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||t.isEditing)return!0;if(!this.isTargetTransparent(t,n.x,n.y))return!0}},_searchPossibleTargets:function(e,t){for(var n,r,o=e.length;o--;){var a=e[o],s=a.group?this._normalizePointer(a.group,t):t;if(this._checkTarget(s,a,t)){(n=e[o]).subTargetCheck&&n instanceof i.Group&&(r=this._searchPossibleTargets(n._objects,t))&&this.targets.push(r);break}}return n},restorePointerVpt:function(e){return i.util.transformPoint(e,i.util.invertTransform(this.viewportTransform))},getPointer:function(t,n){if(this._absolutePointer&&!n)return this._absolutePointer;if(this._pointer&&n)return this._pointer;var r,i=e(t),o=this.upperCanvasEl,a=o.getBoundingClientRect(),s=a.width||0,l=a.height||0;s&&l||("top"in a&&"bottom"in a&&(l=Math.abs(a.top-a.bottom)),"right"in a&&"left"in a&&(s=Math.abs(a.right-a.left))),this.calcOffset(),i.x=i.x-this._offset.left,i.y=i.y-this._offset.top,n||(i=this.restorePointerVpt(i));var c=this.getRetinaScaling();return 1!==c&&(i.x/=c,i.y/=c),r=0===s||0===l?{width:1,height:1}:{width:o.width/s,height:o.height/l},{x:i.x*r.width,y:i.y*r.height}},_createUpperCanvas:function(){var e=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),t=this.lowerCanvasEl,n=this.upperCanvasEl;n?n.className="":(n=this._createCanvasElement(),this.upperCanvasEl=n),i.util.addClass(n,"upper-canvas "+e),this.wrapperEl.appendChild(n),this._copyCanvasStyle(t,n),this._applyCanvasStyle(n),this.contextTop=n.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=i.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),i.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),i.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(e){var t=this.width||e.width,n=this.height||e.height;i.util.setStyle(e,{position:"absolute",width:t+"px",height:n+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),e.width=t,e.height=n,i.util.makeElementUnselectable(e)},_copyCanvasStyle:function(e,t){t.style.cssText=e.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var e=this._activeObject;return e?"activeSelection"===e.type&&e._objects?e._objects.slice(0):[e]:[]},_onObjectRemoved:function(e){e===this._activeObject&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared",{target:e}),e.fire("deselected")),e===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",e)},_fireSelectionEvents:function(e,t){var n=!1,r=this.getActiveObjects(),i=[],o=[];e.forEach((function(e){-1===r.indexOf(e)&&(n=!0,e.fire("deselected",{e:t,target:e}),o.push(e))})),r.forEach((function(r){-1===e.indexOf(r)&&(n=!0,r.fire("selected",{e:t,target:r}),i.push(r))})),e.length>0&&r.length>0?n&&this.fire("selection:updated",{e:t,selected:i,deselected:o}):r.length>0?this.fire("selection:created",{e:t,selected:i}):e.length>0&&this.fire("selection:cleared",{e:t,deselected:o})},setActiveObject:function(e,t){var n=this.getActiveObjects();return this._setActiveObject(e,t),this._fireSelectionEvents(n,t),this},_setActiveObject:function(e,t){return this._activeObject!==e&&(!!this._discardActiveObject(t,e)&&(!e.onSelect({e:t})&&(this._activeObject=e,!0)))},_discardActiveObject:function(e,t){var n=this._activeObject;if(n){if(n.onDeselect({e:e,object:t}))return!1;this._activeObject=null}return!0},discardActiveObject:function(e){var t=this.getActiveObjects(),n=this.getActiveObject();return t.length&&this.fire("before:selection:cleared",{target:n,e:e}),this._discardActiveObject(e),this._fireSelectionEvents(t,e),this},dispose:function(){var e=this.wrapperEl;return this.removeListeners(),e.removeChild(this.upperCanvasEl),e.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(e){i.util.cleanUpJsdomNode(this[e]),this[e]=void 0}.bind(this)),e.parentNode&&e.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,i.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(e){var t=this._activeObject;t&&t._renderControls(e)},_toObject:function(e,t,n){var r=this._realizeGroupTransformOnObject(e),i=this.callSuper("_toObject",e,t,n);return this._unwindGroupTransformOnObject(e,r),i},_realizeGroupTransformOnObject:function(e){if(e.group&&"activeSelection"===e.group.type&&this._activeObject===e.group){var t={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(n){t[n]=e[n]})),i.util.addTransformToObject(e,this._activeObject.calcOwnMatrix()),t}return null},_unwindGroupTransformOnObject:function(e,t){t&&e.set(t)},_setSVGObject:function(e,t,n){var r=this._realizeGroupTransformOnObject(t);this.callSuper("_setSVGObject",e,t,n),this._unwindGroupTransformOnObject(t,r)},setViewportTransform:function(e){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),i.StaticCanvas.prototype.setViewportTransform.call(this,e)}}),i.StaticCanvas)"prototype"!==r&&(i.Canvas[r]=i.StaticCanvas[r])}(),function(){var e=i.util.addListener,t=i.util.removeListener,n={passive:!1};function r(e,t){return e.button&&e.button===t-1}i.util.object.extend(i.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(e,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(e,t){var r=this.upperCanvasEl,o=this._getEventPrefix();e(i.window,"resize",this._onResize),e(r,o+"down",this._onMouseDown),e(r,o+"move",this._onMouseMove,n),e(r,o+"out",this._onMouseOut),e(r,o+"enter",this._onMouseEnter),e(r,"wheel",this._onMouseWheel),e(r,"contextmenu",this._onContextMenu),e(r,"dblclick",this._onDoubleClick),e(r,"dragover",this._onDragOver),e(r,"dragenter",this._onDragEnter),e(r,"dragleave",this._onDragLeave),e(r,"drop",this._onDrop),this.enablePointerEvents||e(r,"touchstart",this._onTouchStart,n),"undefined"!==typeof eventjs&&t in eventjs&&(eventjs[t](r,"gesture",this._onGesture),eventjs[t](r,"drag",this._onDrag),eventjs[t](r,"orientation",this._onOrientationChange),eventjs[t](r,"shake",this._onShake),eventjs[t](r,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(t,"remove");var e=this._getEventPrefix();t(i.document,e+"up",this._onMouseUp),t(i.document,"touchend",this._onTouchEnd,n),t(i.document,e+"move",this._onMouseMove,n),t(i.document,"touchmove",this._onMouseMove,n)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(e,t){this.__onTransformGesture&&this.__onTransformGesture(e,t)},_onDrag:function(e,t){this.__onDrag&&this.__onDrag(e,t)},_onMouseWheel:function(e){this.__onMouseWheel(e)},_onMouseOut:function(e){var t=this._hoveredTarget;this.fire("mouse:out",{target:t,e:e}),this._hoveredTarget=null,t&&t.fire("mouseout",{e:e});var n=this;this._hoveredTargets.forEach((function(r){n.fire("mouse:out",{target:t,e:e}),r&&t.fire("mouseout",{e:e})})),this._hoveredTargets=[]},_onMouseEnter:function(e){this._currentTransform||this.findTarget(e)||(this.fire("mouse:over",{target:null,e:e}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(e,t){this.__onOrientationChange&&this.__onOrientationChange(e,t)},_onShake:function(e,t){this.__onShake&&this.__onShake(e,t)},_onLongPress:function(e,t){this.__onLongPress&&this.__onLongPress(e,t)},_onDragOver:function(e){e.preventDefault();var t=this._simpleEventHandler("dragover",e);this._fireEnterLeaveEvents(t,e)},_onDrop:function(e){return this._simpleEventHandler("drop:before",e),this._simpleEventHandler("drop",e)},_onContextMenu:function(e){return this.stopContextMenu&&(e.stopPropagation(),e.preventDefault()),!1},_onDoubleClick:function(e){this._cacheTransformEventData(e),this._handleEvent(e,"dblclick"),this._resetTransformEventData(e)},getPointerId:function(e){var t=e.changedTouches;return t?t[0]&&t[0].identifier:this.enablePointerEvents?e.pointerId:-1},_isMainEvent:function(e){return!0===e.isPrimary||!1!==e.isPrimary&&("touchend"===e.type&&0===e.touches.length||(!e.changedTouches||e.changedTouches[0].identifier===this.mainTouchId))},_onTouchStart:function(r){r.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(r)),this.__onMouseDown(r),this._resetTransformEventData();var o=this.upperCanvasEl,a=this._getEventPrefix();e(i.document,"touchend",this._onTouchEnd,n),e(i.document,"touchmove",this._onMouseMove,n),t(o,a+"down",this._onMouseDown)},_onMouseDown:function(r){this.__onMouseDown(r),this._resetTransformEventData();var o=this.upperCanvasEl,a=this._getEventPrefix();t(o,a+"move",this._onMouseMove,n),e(i.document,a+"up",this._onMouseUp),e(i.document,a+"move",this._onMouseMove,n)},_onTouchEnd:function(r){if(!(r.touches.length>0)){this.__onMouseUp(r),this._resetTransformEventData(),this.mainTouchId=null;var o=this._getEventPrefix();t(i.document,"touchend",this._onTouchEnd,n),t(i.document,"touchmove",this._onMouseMove,n);var a=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){e(a.upperCanvasEl,o+"down",a._onMouseDown),a._willAddMouseDown=0}),400)}},_onMouseUp:function(r){this.__onMouseUp(r),this._resetTransformEventData();var o=this.upperCanvasEl,a=this._getEventPrefix();this._isMainEvent(r)&&(t(i.document,a+"up",this._onMouseUp),t(i.document,a+"move",this._onMouseMove,n),e(o,a+"move",this._onMouseMove,n))},_onMouseMove:function(e){!this.allowTouchScrolling&&e.preventDefault&&e.preventDefault(),this.__onMouseMove(e)},_onResize:function(){this.calcOffset()},_shouldRender:function(e){var t=this._activeObject;return!!(!!t!==!!e||t&&e&&t!==e)||(t&&t.isEditing,!1)},__onMouseUp:function(e){var t,n=this._currentTransform,o=this._groupSelector,a=!1,s=!o||0===o.left&&0===o.top;if(this._cacheTransformEventData(e),t=this._target,this._handleEvent(e,"up:before"),r(e,3))this.fireRightClick&&this._handleEvent(e,"up",3,s);else{if(r(e,2))return this.fireMiddleClick&&this._handleEvent(e,"up",2,s),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(e);else if(this._isMainEvent(e)){if(n&&(this._finalizeCurrentTransform(e),a=n.actionPerformed),!s){var l=t===this._activeObject;this._maybeGroupObjects(e),a||(a=this._shouldRender(t)||!l&&t===this._activeObject)}var c,u;if(t){if(c=t._findTargetCorner(this.getPointer(e,!0),i.util.isTouchEvent(e)),t.selectable&&t!==this._activeObject&&"up"===t.activeOn)this.setActiveObject(t,e),a=!0;else{var d=t.controls[c],h=d&&d.getMouseUpHandler(e,t,d);h&&h(e,n,(u=this.getPointer(e)).x,u.y)}t.isMoving=!1}if(n&&(n.target!==t||n.corner!==c)){var p=n.target&&n.target.controls[n.corner],f=p&&p.getMouseUpHandler(e,t,d);u=u||this.getPointer(e),f&&f(e,n,u.x,u.y)}this._setCursorFromEvent(e,t),this._handleEvent(e,"up",1,s),this._groupSelector=null,this._currentTransform=null,t&&(t.__corner=0),a?this.requestRenderAll():s||this.renderTop()}}},_simpleEventHandler:function(e,t){var n=this.findTarget(t),r=this.targets,i={e:t,target:n,subTargets:r};if(this.fire(e,i),n&&n.fire(e,i),!r)return n;for(var o=0;o<r.length;o++)r[o].fire(e,i);return n},_handleEvent:function(e,t,n,r){var i=this._target,o=this.targets||[],a={e:e,target:i,subTargets:o,button:n||1,isClick:r||!1,pointer:this._pointer,absolutePointer:this._absolutePointer,transform:this._currentTransform};"up"===t&&(a.currentTarget=this.findTarget(e),a.currentSubTargets=this.targets),this.fire("mouse:"+t,a),i&&i.fire("mouse"+t,a);for(var s=0;s<o.length;s++)o[s].fire("mouse"+t,a)},_finalizeCurrentTransform:function(e){var t=this._currentTransform,n=t.target,r={e:e,target:n,transform:t,action:t.action};n._scaling&&(n._scaling=!1),n.setCoords(),(t.actionPerformed||this.stateful&&n.hasStateChanged())&&this._fire("modified",r)},_onMouseDownInDrawingMode:function(e){this._isCurrentlyDrawing=!0,this.getActiveObject()&&this.discardActiveObject(e).requestRenderAll();var t=this.getPointer(e);this.freeDrawingBrush.onMouseDown(t,{e:e,pointer:t}),this._handleEvent(e,"down")},_onMouseMoveInDrawingMode:function(e){if(this._isCurrentlyDrawing){var t=this.getPointer(e);this.freeDrawingBrush.onMouseMove(t,{e:e,pointer:t})}this.setCursor(this.freeDrawingCursor),this._handleEvent(e,"move")},_onMouseUpInDrawingMode:function(e){var t=this.getPointer(e);this._isCurrentlyDrawing=this.freeDrawingBrush.onMouseUp({e:e,pointer:t}),this._handleEvent(e,"up")},__onMouseDown:function(e){this._cacheTransformEventData(e),this._handleEvent(e,"down:before");var t=this._target;if(r(e,3))this.fireRightClick&&this._handleEvent(e,"down",3);else if(r(e,2))this.fireMiddleClick&&this._handleEvent(e,"down",2);else if(this.isDrawingMode)this._onMouseDownInDrawingMode(e);else if(this._isMainEvent(e)&&!this._currentTransform){var n=this._pointer;this._previousPointer=n;var o=this._shouldRender(t),a=this._shouldGroup(e,t);if(this._shouldClearSelection(e,t)?this.discardActiveObject(e):a&&(this._handleGrouping(e,t),t=this._activeObject),!this.selection||t&&(t.selectable||t.isEditing||t===this._activeObject)||(this._groupSelector={ex:this._absolutePointer.x,ey:this._absolutePointer.y,top:0,left:0}),t){var s=t===this._activeObject;t.selectable&&"down"===t.activeOn&&this.setActiveObject(t,e);var l=t._findTargetCorner(this.getPointer(e,!0),i.util.isTouchEvent(e));if(t.__corner=l,t===this._activeObject&&(l||!a)){this._setupCurrentTransform(e,t,s);var c=t.controls[l],u=(n=this.getPointer(e),c&&c.getMouseDownHandler(e,t,c));u&&u(e,this._currentTransform,n.x,n.y)}}this._handleEvent(e,"down"),(o||a)&&this.requestRenderAll()}},_resetTransformEventData:function(){this._target=null,this._pointer=null,this._absolutePointer=null},_cacheTransformEventData:function(e){this._resetTransformEventData(),this._pointer=this.getPointer(e,!0),this._absolutePointer=this.restorePointerVpt(this._pointer),this._target=this._currentTransform?this._currentTransform.target:this.findTarget(e)||null},_beforeTransform:function(e){var t=this._currentTransform;this.stateful&&t.target.saveState(),this.fire("before:transform",{e:e,transform:t})},__onMouseMove:function(e){var t,n;if(this._handleEvent(e,"move:before"),this._cacheTransformEventData(e),this.isDrawingMode)this._onMouseMoveInDrawingMode(e);else if(this._isMainEvent(e)){var r=this._groupSelector;r?(n=this._absolutePointer,r.left=n.x-r.ex,r.top=n.y-r.ey,this.renderTop()):this._currentTransform?this._transformObject(e):(t=this.findTarget(e)||null,this._setCursorFromEvent(e,t),this._fireOverOutEvents(t,e)),this._handleEvent(e,"move"),this._resetTransformEventData()}},_fireOverOutEvents:function(e,t){var n=this._hoveredTarget,r=this._hoveredTargets,i=this.targets,o=Math.max(r.length,i.length);this.fireSyntheticInOutEvents(e,t,{oldTarget:n,evtOut:"mouseout",canvasEvtOut:"mouse:out",evtIn:"mouseover",canvasEvtIn:"mouse:over"});for(var a=0;a<o;a++)this.fireSyntheticInOutEvents(i[a],t,{oldTarget:r[a],evtOut:"mouseout",evtIn:"mouseover"});this._hoveredTarget=e,this._hoveredTargets=this.targets.concat()},_fireEnterLeaveEvents:function(e,t){var n=this._draggedoverTarget,r=this._hoveredTargets,i=this.targets,o=Math.max(r.length,i.length);this.fireSyntheticInOutEvents(e,t,{oldTarget:n,evtOut:"dragleave",evtIn:"dragenter"});for(var a=0;a<o;a++)this.fireSyntheticInOutEvents(i[a],t,{oldTarget:r[a],evtOut:"dragleave",evtIn:"dragenter"});this._draggedoverTarget=e},fireSyntheticInOutEvents:function(e,t,n){var r,i,o,a=n.oldTarget,s=a!==e,l=n.canvasEvtIn,c=n.canvasEvtOut;s&&(r={e:t,target:e,previousTarget:a},i={e:t,target:a,nextTarget:e}),o=e&&s,a&&s&&(c&&this.fire(c,i),a.fire(n.evtOut,i)),o&&(l&&this.fire(l,r),e.fire(n.evtIn,r))},__onMouseWheel:function(e){this._cacheTransformEventData(e),this._handleEvent(e,"wheel"),this._resetTransformEventData()},_transformObject:function(e){var t=this.getPointer(e),n=this._currentTransform;n.reset=!1,n.shiftKey=e.shiftKey,n.altKey=e[this.centeredKey],this._performTransformAction(e,n,t),n.actionPerformed&&this.requestRenderAll()},_performTransformAction:function(e,t,n){var r=n.x,i=n.y,o=t.action,a=!1,s=t.actionHandler;s&&(a=s(e,t,r,i)),"drag"===o&&a&&(t.target.isMoving=!0,this.setCursor(t.target.moveCursor||this.moveCursor)),t.actionPerformed=t.actionPerformed||a},_fire:i.controlsUtils.fireEvent,_setCursorFromEvent:function(e,t){if(!t)return this.setCursor(this.defaultCursor),!1;var n=t.hoverCursor||this.hoverCursor,r=this._activeObject&&"activeSelection"===this._activeObject.type?this._activeObject:null,i=(!r||!r.contains(t))&&t._findTargetCorner(this.getPointer(e,!0));i?this.setCursor(this.getCornerCursor(i,t,e)):(t.subTargetCheck&&this.targets.concat().reverse().map((function(e){n=e.hoverCursor||n})),this.setCursor(n))},getCornerCursor:function(e,t,n){var r=t.controls[e];return r.cursorStyleHandler(n,r,t)}})}(),function(){var e=Math.min,t=Math.max;i.util.object.extend(i.Canvas.prototype,{_shouldGroup:function(e,t){var n=this._activeObject;return n&&this._isSelectionKeyPressed(e)&&t&&t.selectable&&this.selection&&(n!==t||"activeSelection"===n.type)&&!t.onSelect({e:e})},_handleGrouping:function(e,t){var n=this._activeObject;n.__corner||(t!==n||(t=this.findTarget(e,!0))&&t.selectable)&&(n&&"activeSelection"===n.type?this._updateActiveSelection(t,e):this._createActiveSelection(t,e))},_updateActiveSelection:function(e,t){var n=this._activeObject,r=n._objects.slice(0);n.contains(e)?(n.removeWithUpdate(e),this._hoveredTarget=e,this._hoveredTargets=this.targets.concat(),1===n.size()&&this._setActiveObject(n.item(0),t)):(n.addWithUpdate(e),this._hoveredTarget=n,this._hoveredTargets=this.targets.concat()),this._fireSelectionEvents(r,t)},_createActiveSelection:function(e,t){var n=this.getActiveObjects(),r=this._createGroup(e);this._hoveredTarget=r,this._setActiveObject(r,t),this._fireSelectionEvents(n,t)},_createGroup:function(e){var t=this._objects,n=t.indexOf(this._activeObject)<t.indexOf(e)?[this._activeObject,e]:[e,this._activeObject];return this._activeObject.isEditing&&this._activeObject.exitEditing(),new i.ActiveSelection(n,{canvas:this})},_groupSelectedObjects:function(e){var t,n=this._collectObjects(e);1===n.length?this.setActiveObject(n[0],e):n.length>1&&(t=new i.ActiveSelection(n.reverse(),{canvas:this}),this.setActiveObject(t,e))},_collectObjects:function(n){for(var r,o=[],a=this._groupSelector.ex,s=this._groupSelector.ey,l=a+this._groupSelector.left,c=s+this._groupSelector.top,u=new i.Point(e(a,l),e(s,c)),d=new i.Point(t(a,l),t(s,c)),h=!this.selectionFullyContained,p=a===l&&s===c,f=this._objects.length;f--&&!((r=this._objects[f])&&r.selectable&&r.visible&&(h&&r.intersectsWithRect(u,d,!0)||r.isContainedWithinRect(u,d,!0)||h&&r.containsPoint(u,null,!0)||h&&r.containsPoint(d,null,!0))&&(o.push(r),p)););return o.length>1&&(o=o.filter((function(e){return!e.onSelect({e:n})}))),o},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e),this.setCursor(this.defaultCursor),this._groupSelector=null}})}(),i.util.object.extend(i.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",n=e.quality||1,r=(e.multiplier||1)*(e.enableRetinaScaling?this.getRetinaScaling():1),o=this.toCanvasElement(r,e);return i.util.toDataURL(o,t,n)},toCanvasElement:function(e,t){e=e||1;var n=((t=t||{}).width||this.width)*e,r=(t.height||this.height)*e,o=this.getZoom(),a=this.width,s=this.height,l=o*e,c=this.viewportTransform,u=(c[4]-(t.left||0))*e,d=(c[5]-(t.top||0))*e,h=this.interactive,p=[l,0,0,l,u,d],f=this.enableRetinaScaling,m=i.util.createCanvasElement(),g=this.contextTop;return m.width=n,m.height=r,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=p,this.width=n,this.height=r,this.calcViewportBoundaries(),this.renderCanvas(m.getContext("2d"),this._objects),this.viewportTransform=c,this.width=a,this.height=s,this.calcViewportBoundaries(),this.interactive=h,this.enableRetinaScaling=f,this.contextTop=g,m}}),i.util.object.extend(i.StaticCanvas.prototype,{loadFromJSON:function(e,t,n){if(e){var r="string"===typeof e?JSON.parse(e):i.util.object.clone(e),o=this,a=r.clipPath,s=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete r.clipPath,this._enlivenObjects(r.objects,(function(e){o.clear(),o._setBgOverlay(r,(function(){a?o._enlivenObjects([a],(function(n){o.clipPath=n[0],o.__setupCanvas.call(o,r,e,s,t)})):o.__setupCanvas.call(o,r,e,s,t)}))}),n),this}},__setupCanvas:function(e,t,n,r){var i=this;t.forEach((function(e,t){i.insertAt(e,t)})),this.renderOnAddRemove=n,delete e.objects,delete e.backgroundImage,delete e.overlayImage,delete e.background,delete e.overlay,this._setOptions(e),this.renderAll(),r&&r()},_setBgOverlay:function(e,t){var n={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(e.backgroundImage||e.overlayImage||e.background||e.overlay){var r=function(){n.backgroundImage&&n.overlayImage&&n.backgroundColor&&n.overlayColor&&t&&t()};this.__setBgOverlay("backgroundImage",e.backgroundImage,n,r),this.__setBgOverlay("overlayImage",e.overlayImage,n,r),this.__setBgOverlay("backgroundColor",e.background,n,r),this.__setBgOverlay("overlayColor",e.overlay,n,r)}else t&&t()},__setBgOverlay:function(e,t,n,r){var o=this;if(!t)return n[e]=!0,void(r&&r());"backgroundImage"===e||"overlayImage"===e?i.util.enlivenObjects([t],(function(t){o[e]=t[0],n[e]=!0,r&&r()})):this["set"+i.util.string.capitalize(e,!0)](t,(function(){n[e]=!0,r&&r()}))},_enlivenObjects:function(e,t,n){e&&0!==e.length?i.util.enlivenObjects(e,(function(e){t&&t(e)}),null,n):t&&t([])},_toDataURL:function(e,t){this.clone((function(n){t(n.toDataURL(e))}))},_toDataURLWithMultiplier:function(e,t,n){this.clone((function(r){n(r.toDataURLWithMultiplier(e,t))}))},clone:function(e,t){var n=JSON.stringify(this.toJSON(t));this.cloneWithoutData((function(t){t.loadFromJSON(n,(function(){e&&e(t)}))}))},cloneWithoutData:function(e){var t=i.util.createCanvasElement();t.width=this.width,t.height=this.height;var n=new i.Canvas(t);this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,(function(){n.renderAll(),e&&e(n)})),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):e&&e(n)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,o=t.util.string.capitalize,a=t.util.degreesToRadians,s=!t.isLikelyNode;t.Object||(t.Object=t.util.createClass(t.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:s,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(e){e&&this.setOptions(e)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=t.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(e){var n=t.perfLimitSizeTotal,r=e.width,i=e.height,o=t.maxCacheSideLimit,a=t.minCacheSideLimit;if(r<=o&&i<=o&&r*i<=n)return r<a&&(e.width=a),i<a&&(e.height=a),e;var s=r/i,l=t.util.limitDimsByArea(s,n),c=t.util.capValue,u=c(a,l.x,o),d=c(a,l.y,o);return r>u&&(e.zoomX/=r/u,e.width=u,e.capped=!0),i>d&&(e.zoomY/=i/d,e.height=d,e.capped=!0),e},_getCacheCanvasDimensions:function(){var e=this.getTotalObjectScaling(),t=this._getTransformedDimensions(0,0),n=t.x*e.scaleX/this.scaleX,r=t.y*e.scaleY/this.scaleY;return{width:n+2,height:r+2,zoomX:e.scaleX,zoomY:e.scaleY,x:n,y:r}},_updateCacheCanvas:function(){var e=this.canvas;if(this.noScaleCache&&e&&e._currentTransform){var n=e._currentTransform.target,r=e._currentTransform.action;if(this===n&&r.slice&&"scale"===r.slice(0,5))return!1}var i,o,a=this._cacheCanvas,s=this._limitCacheSize(this._getCacheCanvasDimensions()),l=t.minCacheSideLimit,c=s.width,u=s.height,d=s.zoomX,h=s.zoomY,p=c!==this.cacheWidth||u!==this.cacheHeight,f=this.zoomX!==d||this.zoomY!==h,m=p||f,g=0,v=0,y=!1;if(p){var b=this._cacheCanvas.width,x=this._cacheCanvas.height,w=c>b||u>x;y=w||(c<.9*b||u<.9*x)&&b>l&&x>l,w&&!s.capped&&(c>l||u>l)&&(g=.1*c,v=.1*u)}return this instanceof t.Text&&this.path&&(m=!0,y=!0,g+=this.getHeightOfLine(0)*this.zoomX,v+=this.getHeightOfLine(0)*this.zoomY),!!m&&(y?(a.width=Math.ceil(c+g),a.height=Math.ceil(u+v)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,a.width,a.height)),i=s.x/2,o=s.y/2,this.cacheTranslationX=Math.round(a.width/2-i)+i,this.cacheTranslationY=Math.round(a.height/2-o)+o,this.cacheWidth=c,this.cacheHeight=u,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(d,h),this.zoomX=d,this.zoomY=h,!0)},setOptions:function(e){this._setOptions(e),this._initGradient(e.fill,"fill"),this._initGradient(e.stroke,"stroke"),this._initPattern(e.fill,"fill"),this._initPattern(e.stroke,"stroke")},transform:function(e){var t=this.group&&!this.group._transformDone||this.group&&this.canvas&&e===this.canvas.contextTop,n=this.calcTransformMatrix(!t);e.transform(n[0],n[1],n[2],n[3],n[4],n[5])},toObject:function(e){var n=t.Object.NUM_FRACTION_DIGITS,r={type:this.type,version:t.version,originX:this.originX,originY:this.originY,left:i(this.left,n),top:i(this.top,n),width:i(this.width,n),height:i(this.height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:i(this.strokeWidth,n),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:i(this.strokeMiterLimit,n),scaleX:i(this.scaleX,n),scaleY:i(this.scaleY,n),angle:i(this.angle,n),flipX:this.flipX,flipY:this.flipY,opacity:i(this.opacity,n),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:i(this.skewX,n),skewY:i(this.skewY,n)};return this.clipPath&&!this.clipPath.excludeFromExport&&(r.clipPath=this.clipPath.toObject(e),r.clipPath.inverted=this.clipPath.inverted,r.clipPath.absolutePositioned=this.clipPath.absolutePositioned),t.util.populateWithProperties(this,r,e),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var n=t.util.getKlass(e.type).prototype;return n.stateProperties.forEach((function(t){"left"!==t&&"top"!==t&&(e[t]===n[t]&&delete e[t],Array.isArray(e[t])&&Array.isArray(n[t])&&0===e[t].length&&0===n[t].length&&delete e[t])})),e},toString:function(){return"#<fabric."+o(this.type)+">"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var e=t.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(e.scaleX),scaleY:Math.abs(e.scaleY)}},getTotalObjectScaling:function(){var e=this.getObjectScaling(),t=e.scaleX,n=e.scaleY;if(this.canvas){var r=this.canvas.getZoom(),i=this.canvas.getRetinaScaling();t*=r*i,n*=r*i}return{scaleX:t,scaleY:n}},getObjectOpacity:function(){var e=this.opacity;return this.group&&(e*=this.group.getObjectOpacity()),e},_set:function(e,n){var r="scaleX"===e||"scaleY"===e,i=this[e]!==n,o=!1;return r&&(n=this._constrainScale(n)),"scaleX"===e&&n<0?(this.flipX=!this.flipX,n*=-1):"scaleY"===e&&n<0?(this.flipY=!this.flipY,n*=-1):"shadow"!==e||!n||n instanceof t.Shadow?"dirty"===e&&this.group&&this.group.set("dirty",n):n=new t.Shadow(n),this[e]=n,i&&(o=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(e)>-1?(this.dirty=!0,o&&this.group.set("dirty",!0)):o&&this.stateProperties.indexOf(e)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:t.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(e){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(e.save(),this._setupCompositeOperation(e),this.drawSelectionBackground(e),this.transform(e),this._setOpacity(e),this._setShadow(e,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(e)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(e),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),e.restore())},renderCache:function(e){e=e||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,e.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!==typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(e,n){if(e.save(),n.inverted?e.globalCompositeOperation="destination-out":e.globalCompositeOperation="destination-in",n.absolutePositioned){var r=t.util.invertTransform(this.calcTransformMatrix());e.transform(r[0],r[1],r[2],r[3],r[4],r[5])}n.transform(e),e.scale(1/n.zoomX,1/n.zoomY),e.drawImage(n._cacheCanvas,-n.cacheTranslationX,-n.cacheTranslationY),e.restore()},drawObject:function(e,t){var n=this.fill,r=this.stroke;t?(this.fill="black",this.stroke="",this._setClippingProperties(e)):this._renderBackground(e),this._render(e),this._drawClipPath(e,this.clipPath),this.fill=n,this.stroke=r},_drawClipPath:function(e,t){t&&(t.canvas=this.canvas,t.shouldCache(),t._transformDone=!0,t.renderCache({forClipping:!0}),this.drawClipPathOnCache(e,t))},drawCacheOnCanvas:function(e){e.scale(1/this.zoomX,1/this.zoomY),e.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(e){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!e&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!e){var t=this.cacheWidth/this.zoomX,n=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-t/2,-n/2,t,n)}return!0}return!1},_renderBackground:function(e){if(this.backgroundColor){var t=this._getNonTransformedDimensions();e.fillStyle=this.backgroundColor,e.fillRect(-t.x/2,-t.y/2,t.x,t.y),this._removeShadow(e)}},_setOpacity:function(e){this.group&&!this.group._transformDone?e.globalAlpha=this.getObjectOpacity():e.globalAlpha*=this.opacity},_setStrokeStyles:function(e,t){var n=t.stroke;n&&(e.lineWidth=t.strokeWidth,e.lineCap=t.strokeLineCap,e.lineDashOffset=t.strokeDashOffset,e.lineJoin=t.strokeLineJoin,e.miterLimit=t.strokeMiterLimit,n.toLive?"percentage"===n.gradientUnits||n.gradientTransform||n.patternTransform?this._applyPatternForTransformedGradient(e,n):(e.strokeStyle=n.toLive(e,this),this._applyPatternGradientTransform(e,n)):e.strokeStyle=t.stroke)},_setFillStyles:function(e,t){var n=t.fill;n&&(n.toLive?(e.fillStyle=n.toLive(e,this),this._applyPatternGradientTransform(e,t.fill)):e.fillStyle=n)},_setClippingProperties:function(e){e.globalAlpha=1,e.strokeStyle="transparent",e.fillStyle="#000000"},_setLineDash:function(e,t){t&&0!==t.length&&(1&t.length&&t.push.apply(t,t),e.setLineDash(t))},_renderControls:function(e,n){var r,i,o,s=this.getViewportTransform(),l=this.calcTransformMatrix();i="undefined"!==typeof(n=n||{}).hasBorders?n.hasBorders:this.hasBorders,o="undefined"!==typeof n.hasControls?n.hasControls:this.hasControls,l=t.util.multiplyTransformMatrices(s,l),r=t.util.qrDecompose(l),e.save(),e.translate(r.translateX,r.translateY),e.lineWidth=1*this.borderScaleFactor,this.group||(e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(r.angle-=180),e.rotate(a(this.group?r.angle:this.angle)),n.forActiveSelection||this.group?i&&this.drawBordersInGroup(e,r,n):i&&this.drawBorders(e,n),o&&this.drawControls(e,n),e.restore()},_setShadow:function(e){if(this.shadow){var n,r=this.shadow,i=this.canvas,o=i&&i.viewportTransform[0]||1,a=i&&i.viewportTransform[3]||1;n=r.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),i&&i._isRetinaScaling()&&(o*=t.devicePixelRatio,a*=t.devicePixelRatio),e.shadowColor=r.color,e.shadowBlur=r.blur*t.browserShadowBlurConstant*(o+a)*(n.scaleX+n.scaleY)/4,e.shadowOffsetX=r.offsetX*o*n.scaleX,e.shadowOffsetY=r.offsetY*a*n.scaleY}},_removeShadow:function(e){this.shadow&&(e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0)},_applyPatternGradientTransform:function(e,t){if(!t||!t.toLive)return{offsetX:0,offsetY:0};var n=t.gradientTransform||t.patternTransform,r=-this.width/2+t.offsetX||0,i=-this.height/2+t.offsetY||0;return"percentage"===t.gradientUnits?e.transform(this.width,0,0,this.height,r,i):e.transform(1,0,0,1,r,i),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),{offsetX:r,offsetY:i}},_renderPaintInOrder:function(e){"stroke"===this.paintFirst?(this._renderStroke(e),this._renderFill(e)):(this._renderFill(e),this._renderStroke(e))},_render:function(){},_renderFill:function(e){this.fill&&(e.save(),this._setFillStyles(e,this),"evenodd"===this.fillRule?e.fill("evenodd"):e.fill(),e.restore())},_renderStroke:function(e){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this.strokeUniform&&this.group){var t=this.getObjectScaling();e.scale(1/t.scaleX,1/t.scaleY)}else this.strokeUniform&&e.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(e,this.strokeDashArray),this._setStrokeStyles(e,this),e.stroke(),e.restore()}},_applyPatternForTransformedGradient:function(e,n){var r,i=this._limitCacheSize(this._getCacheCanvasDimensions()),o=t.util.createCanvasElement(),a=this.canvas.getRetinaScaling(),s=i.x/this.scaleX/a,l=i.y/this.scaleY/a;o.width=s,o.height=l,(r=o.getContext("2d")).beginPath(),r.moveTo(0,0),r.lineTo(s,0),r.lineTo(s,l),r.lineTo(0,l),r.closePath(),r.translate(s/2,l/2),r.scale(i.zoomX/this.scaleX/a,i.zoomY/this.scaleY/a),this._applyPatternGradientTransform(r,n),r.fillStyle=n.toLive(e),r.fill(),e.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),e.scale(a*this.scaleX/i.zoomX,a*this.scaleY/i.zoomY),e.strokeStyle=r.createPattern(o,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var e=t.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",e.scaleX),this.set("scaleY",e.scaleY),this.angle=e.angle,this.skewX=e.skewX,this.skewY=0}},_removeTransformMatrix:function(e){var n=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),n=t.util.transformPoint(n,this.transformMatrix)),this.transformMatrix=null,e&&(this.scaleX*=e.scaleX,this.scaleY*=e.scaleY,this.cropX=e.cropX,this.cropY=e.cropY,n.x+=e.offsetLeft,n.y+=e.offsetTop,this.width=e.width,this.height=e.height),this.setPositionByOrigin(n,"center","center")},clone:function(e,n){var r=this.toObject(n);this.constructor.fromObject?this.constructor.fromObject(r,e):t.Object._fromObject("Object",r,e)},cloneAsImage:function(e,n){var r=this.toCanvasElement(n);return e&&e(new t.Image(r)),this},toCanvasElement:function(e){e||(e={});var n=t.util,r=n.saveObjectTransform(this),i=this.group,o=this.shadow,a=Math.abs,s=(e.multiplier||1)*(e.enableRetinaScaling?t.devicePixelRatio:1);delete this.group,e.withoutTransform&&n.resetObjectTransform(this),e.withoutShadow&&(this.shadow=null);var l,c,u,d,h=t.util.createCanvasElement(),p=this.getBoundingRect(!0,!0),f=this.shadow,m={x:0,y:0};f&&(c=f.blur,l=f.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),m.x=2*Math.round(a(f.offsetX)+c)*a(l.scaleX),m.y=2*Math.round(a(f.offsetY)+c)*a(l.scaleY)),u=p.width+m.x,d=p.height+m.y,h.width=Math.ceil(u),h.height=Math.ceil(d);var g=new t.StaticCanvas(h,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===e.format&&(g.backgroundColor="#fff"),this.setPositionByOrigin(new t.Point(g.width/2,g.height/2),"center","center");var v=this.canvas;g.add(this);var y=g.toCanvasElement(s||1,e);return this.shadow=o,this.set("canvas",v),i&&(this.group=i),this.set(r).setCoords(),g._objects=[],g.dispose(),g=null,y},toDataURL:function(e){return e||(e={}),t.util.toDataURL(this.toCanvasElement(e),e.format||"png",e.quality||1)},isType:function(e){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===e},complexity:function(){return 1},toJSON:function(e){return this.toObject(e)},rotate:function(e){var t=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return t&&this._setOriginToCenter(),this.set("angle",e),t&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(e,n){n=n||this.canvas.getPointer(e);var r=new t.Point(n.x,n.y),i=this._getLeftTopCoords();return this.angle&&(r=t.util.rotatePoint(r,i,a(-this.angle))),{x:r.x-i.x,y:r.y-i.y}},_setupCompositeOperation:function(e){this.globalCompositeOperation&&(e.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){t.runningAnimations&&t.runningAnimations.cancelByTarget(this)}}),t.util.createAccessors&&t.util.createAccessors(t.Object),n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.ENLIVEN_PROPS=["clipPath"],t.Object._fromObject=function(e,n,i,o){var a=t[e];n=r(n,!0),t.util.enlivenPatterns([n.fill,n.stroke],(function(e){"undefined"!==typeof e[0]&&(n.fill=e[0]),"undefined"!==typeof e[1]&&(n.stroke=e[1]),t.util.enlivenObjectEnlivables(n,n,(function(){var e=o?new a(n[o],n):new a(n);i&&i(e)}))}))},t.Object.__uid=0)}(t),function(){var e=i.util.degreesToRadians,t={left:-.5,center:0,right:.5},n={top:-.5,center:0,bottom:.5};i.util.object.extend(i.Object.prototype,{translateToGivenOrigin:function(e,r,o,a,s){var l,c,u,d=e.x,h=e.y;return"string"===typeof r?r=t[r]:r-=.5,"string"===typeof a?a=t[a]:a-=.5,"string"===typeof o?o=n[o]:o-=.5,"string"===typeof s?s=n[s]:s-=.5,c=s-o,((l=a-r)||c)&&(u=this._getTransformedDimensions(),d=e.x+l*u.x,h=e.y+c*u.y),new i.Point(d,h)},translateToCenterPoint:function(t,n,r){var o=this.translateToGivenOrigin(t,n,r,"center","center");return this.angle?i.util.rotatePoint(o,t,e(this.angle)):o},translateToOriginPoint:function(t,n,r){var o=this.translateToGivenOrigin(t,"center","center",n,r);return this.angle?i.util.rotatePoint(o,t,e(this.angle)):o},getCenterPoint:function(){var e=new i.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var o,a,s=this.getCenterPoint();return o="undefined"!==typeof n&&"undefined"!==typeof r?this.translateToGivenOrigin(s,"center","center",n,r):new i.Point(this.left,this.top),a=new i.Point(t.x,t.y),this.angle&&(a=i.util.rotatePoint(a,s,-e(this.angle))),a.subtractEquals(o)},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(n){var r,o,a=e(this.angle),s=this.getScaledWidth(),l=i.util.cos(a)*s,c=i.util.sin(a)*s;r="string"===typeof this.originX?t[this.originX]:this.originX-.5,o="string"===typeof n?t[n]:n-.5,this.left+=l*(o-r),this.top+=c*(o-r),this.setCoords(),this.originX=n},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var e=this.getCenterPoint();this.originX="center",this.originY="center",this.left=e.x,this.top=e.y},_resetOrigin:function(){var e=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=e.x,this.top=e.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}})}(),function(){var e=i.util,t=e.degreesToRadians,n=e.multiplyTransformMatrices,r=e.transformPoint;e.object.extend(i.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(e,t){return t?e?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),e?this.aCoords:this.lineCoords)},getCoords:function(e,t){return n=this._getCoords(e,t),[new i.Point(n.tl.x,n.tl.y),new i.Point(n.tr.x,n.tr.y),new i.Point(n.br.x,n.br.y),new i.Point(n.bl.x,n.bl.y)];var n},intersectsWithRect:function(e,t,n,r){var o=this.getCoords(n,r);return"Intersection"===i.Intersection.intersectPolygonRectangle(o,e,t).status},intersectsWithObject:function(e,t,n){return"Intersection"===i.Intersection.intersectPolygonPolygon(this.getCoords(t,n),e.getCoords(t,n)).status||e.isContainedWithinObject(this,t,n)||this.isContainedWithinObject(e,t,n)},isContainedWithinObject:function(e,t,n){for(var r=this.getCoords(t,n),i=t?e.aCoords:e.lineCoords,o=0,a=e._getImageLines(i);o<4;o++)if(!e.containsPoint(r[o],a))return!1;return!0},isContainedWithinRect:function(e,t,n,r){var i=this.getBoundingRect(n,r);return i.left>=e.x&&i.left+i.width<=t.x&&i.top>=e.y&&i.top+i.height<=t.y},containsPoint:function(e,t,n,r){var i=this._getCoords(n,r),o=(t=t||this._getImageLines(i),this._findCrossPoints(e,t));return 0!==o&&o%2===1},isOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,n=this.canvas.vptCoords.br;return!!this.getCoords(!0,e).some((function(e){return e.x<=n.x&&e.x>=t.x&&e.y<=n.y&&e.y>=t.y}))||(!!this.intersectsWithRect(t,n,!0,e)||this._containsCenterOfCanvas(t,n,e))},_containsCenterOfCanvas:function(e,t,n){var r={x:(e.x+t.x)/2,y:(e.y+t.y)/2};return!!this.containsPoint(r,null,!0,n)},isPartiallyOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,n=this.canvas.vptCoords.br;return!!this.intersectsWithRect(t,n,!0,e)||this.getCoords(!0,e).every((function(e){return(e.x>=n.x||e.x<=t.x)&&(e.y>=n.y||e.y<=t.y)}))&&this._containsCenterOfCanvas(t,n,e)},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_findCrossPoints:function(e,t){var n,r,i,o=0;for(var a in t)if(!((i=t[a]).o.y<e.y&&i.d.y<e.y)&&!(i.o.y>=e.y&&i.d.y>=e.y)&&(i.o.x===i.d.x&&i.o.x>=e.x?r=i.o.x:(0,n=(i.d.y-i.o.y)/(i.d.x-i.o.x),r=-(e.y-0*e.x-(i.o.y-n*i.o.x))/(0-n)),r>=e.x&&(o+=1),2===o))break;return o},getBoundingRect:function(t,n){var r=this.getCoords(t,n);return e.makeBoundingBoxFromPoints(r)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(e){return Math.abs(e)<this.minScaleLimit?e<0?-this.minScaleLimit:this.minScaleLimit:0===e?1e-4:e},scale:function(e){return this._set("scaleX",e),this._set("scaleY",e),this.setCoords()},scaleToWidth:function(e,t){var n=this.getBoundingRect(t).width/this.getScaledWidth();return this.scale(e/this.width/n)},scaleToHeight:function(e,t){var n=this.getBoundingRect(t).height/this.getScaledHeight();return this.scale(e/this.height/n)},calcLineCoords:function(){var n=this.getViewportTransform(),i=this.padding,o=t(this.angle),a=e.cos(o)*i,s=e.sin(o)*i,l=a+s,c=a-s,u=this.calcACoords(),d={tl:r(u.tl,n),tr:r(u.tr,n),bl:r(u.bl,n),br:r(u.br,n)};return i&&(d.tl.x-=c,d.tl.y-=l,d.tr.x+=l,d.tr.y-=c,d.bl.x-=l,d.bl.y+=c,d.br.x+=c,d.br.y+=l),d},calcOCoords:function(){var e=this._calcRotateMatrix(),t=this._calcTranslateMatrix(),r=this.getViewportTransform(),i=n(r,t),o=n(i,e),a=(o=n(o,[1/r[0],0,0,1/r[3],0,0]),this._calculateCurrentDimensions()),s={};return this.forEachControl((function(e,t,n){s[t]=e.positionHandler(a,o,n)})),s},calcACoords:function(){var e=this._calcRotateMatrix(),t=this._calcTranslateMatrix(),i=n(t,e),o=this._getTransformedDimensions(),a=o.x/2,s=o.y/2;return{tl:r({x:-a,y:-s},i),tr:r({x:a,y:-s},i),bl:r({x:-a,y:s},i),br:r({x:a,y:s},i)}},setCoords:function(e){return this.aCoords=this.calcACoords(),this.lineCoords=this.group?this.aCoords:this.calcLineCoords(),e||(this.oCoords=this.calcOCoords(),this._setCornerCoords&&this._setCornerCoords()),this},_calcRotateMatrix:function(){return e.calcRotateMatrix(this)},_calcTranslateMatrix:function(){var e=this.getCenterPoint();return[1,0,0,1,e.x,e.y]},transformMatrixKey:function(e){var t="_",n="";return!e&&this.group&&(n=this.group.transformMatrixKey(e)+t),n+this.top+t+this.left+t+this.scaleX+t+this.scaleY+t+this.skewX+t+this.skewY+t+this.angle+t+this.originX+t+this.originY+t+this.width+t+this.height+t+this.strokeWidth+this.flipX+this.flipY},calcTransformMatrix:function(e){var t=this.calcOwnMatrix();if(e||!this.group)return t;var r=this.transformMatrixKey(e),i=this.matrixCache||(this.matrixCache={});return i.key===r?i.value:(this.group&&(t=n(this.group.calcTransformMatrix(!1),t)),i.key=r,i.value=t,t)},calcOwnMatrix:function(){var t=this.transformMatrixKey(!0),n=this.ownMatrixCache||(this.ownMatrixCache={});if(n.key===t)return n.value;var r=this._calcTranslateMatrix(),i={angle:this.angle,translateX:r[4],translateY:r[5],scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,flipX:this.flipX,flipY:this.flipY};return n.key=t,n.value=e.composeMatrix(i),n.value},_getNonTransformedDimensions:function(){var e=this.strokeWidth;return{x:this.width+e,y:this.height+e}},_getTransformedDimensions:function(t,n){"undefined"===typeof t&&(t=this.skewX),"undefined"===typeof n&&(n=this.skewY);var r,i,o,a=0===t&&0===n;if(this.strokeUniform?(i=this.width,o=this.height):(i=(r=this._getNonTransformedDimensions()).x,o=r.y),a)return this._finalizeDimensions(i*this.scaleX,o*this.scaleY);var s=e.sizeAfterTransform(i,o,{scaleX:this.scaleX,scaleY:this.scaleY,skewX:t,skewY:n});return this._finalizeDimensions(s.x,s.y)},_finalizeDimensions:function(e,t){return this.strokeUniform?{x:e+this.strokeWidth,y:t+this.strokeWidth}:{x:e,y:t}},_calculateCurrentDimensions:function(){var e=this.getViewportTransform(),t=this._getTransformedDimensions();return r(t,e,!0).scalarAdd(2*this.padding)}})}(),i.util.object.extend(i.Object.prototype,{sendToBack:function(){return this.group?i.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas&&this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?i.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas&&this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?i.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas&&this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?i.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas&&this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group&&"activeSelection"!==this.group.type?i.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas&&this.canvas.moveTo(this,e),this}}),function(){function e(e,t){if(t){if(t.toLive)return e+": url(#SVGID_"+t.id+"); ";var n=new i.Color(t),r=e+": "+n.toRgb()+"; ",o=n.getAlpha();return 1!==o&&(r+=e+"-opacity: "+o.toString()+"; "),r}return e+": none; "}var t=i.util.toFixed;i.util.object.extend(i.Object.prototype,{getSvgStyles:function(t){var n=this.fillRule?this.fillRule:"nonzero",r=this.strokeWidth?this.strokeWidth:"0",i=this.strokeDashArray?this.strokeDashArray.join(" "):"none",o=this.strokeDashOffset?this.strokeDashOffset:"0",a=this.strokeLineCap?this.strokeLineCap:"butt",s=this.strokeLineJoin?this.strokeLineJoin:"miter",l=this.strokeMiterLimit?this.strokeMiterLimit:"4",c="undefined"!==typeof this.opacity?this.opacity:"1",u=this.visible?"":" visibility: hidden;",d=t?"":this.getSvgFilter(),h=e("fill",this.fill);return[e("stroke",this.stroke),"stroke-width: ",r,"; ","stroke-dasharray: ",i,"; ","stroke-linecap: ",a,"; ","stroke-dashoffset: ",o,"; ","stroke-linejoin: ",s,"; ","stroke-miterlimit: ",l,"; ",h,"fill-rule: ",n,"; ","opacity: ",c,";",d,u].join("")},getSvgSpanStyles:function(t,n){var r="; ",i=t.fontFamily?"font-family: "+(-1===t.fontFamily.indexOf("'")&&-1===t.fontFamily.indexOf('"')?"'"+t.fontFamily+"'":t.fontFamily)+r:"",o=t.strokeWidth?"stroke-width: "+t.strokeWidth+r:"",a=(i=i,t.fontSize?"font-size: "+t.fontSize+"px"+r:""),s=t.fontStyle?"font-style: "+t.fontStyle+r:"",l=t.fontWeight?"font-weight: "+t.fontWeight+r:"",c=t.fill?e("fill",t.fill):"",u=t.stroke?e("stroke",t.stroke):"",d=this.getSvgTextDecoration(t);return d&&(d="text-decoration: "+d+r),[u,o,i,a,s,l,d,c,t.deltaY?"baseline-shift: "+-t.deltaY+"; ":"",n?"white-space: pre; ":""].join("")},getSvgTextDecoration:function(e){return["overline","underline","line-through"].filter((function(t){return e[t.replace("-","")]})).join(" ")},getSvgFilter:function(){return this.shadow?"filter: url(#SVGID_"+this.shadow.id+");":""},getSvgCommons:function(){return[this.id?'id="'+this.id+'" ':"",this.clipPath?'clip-path="url(#'+this.clipPath.clipPathId+')" ':""].join("")},getSvgTransform:function(e,t){var n=e?this.calcTransformMatrix():this.calcOwnMatrix();return'transform="'+i.util.matrixToSVG(n)+(t||"")+'" '},_setSVGBg:function(e){if(this.backgroundColor){var n=i.Object.NUM_FRACTION_DIGITS;e.push("\t\t<rect ",this._getFillAttributes(this.backgroundColor),' x="',t(-this.width/2,n),'" y="',t(-this.height/2,n),'" width="',t(this.width,n),'" height="',t(this.height,n),'"></rect>\n')}},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(e),{reviver:e})},toClipPathSVG:function(e){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(e),{reviver:e})},_createBaseClipPathSVGMarkup:function(e,t){var n=(t=t||{}).reviver,r=t.additionalTransform||"",i=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),o=e.indexOf("COMMON_PARTS");return e[o]=i,n?n(e.join("")):e.join("")},_createBaseSVGMarkup:function(e,t){var n,r,o=(t=t||{}).noStyle,a=t.reviver,s=o?"":'style="'+this.getSvgStyles()+'" ',l=t.withShadow?'style="'+this.getSvgFilter()+'" ':"",c=this.clipPath,u=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",d=c&&c.absolutePositioned,h=this.stroke,p=this.fill,f=this.shadow,m=[],g=e.indexOf("COMMON_PARTS"),v=t.additionalTransform;return c&&(c.clipPathId="CLIPPATH_"+i.Object.__uid++,r='<clipPath id="'+c.clipPathId+'" >\n'+c.toClipPathSVG(a)+"</clipPath>\n"),d&&m.push("<g ",l,this.getSvgCommons()," >\n"),m.push("<g ",this.getSvgTransform(!1),d?"":l+this.getSvgCommons()," >\n"),n=[s,u,o?"":this.addPaintOrder()," ",v?'transform="'+v+'" ':""].join(""),e[g]=n,p&&p.toLive&&m.push(p.toSVG(this)),h&&h.toLive&&m.push(h.toSVG(this)),f&&m.push(f.toSVG(this)),c&&m.push(r),m.push(e.join("")),m.push("</g>\n"),d&&m.push("</g>\n"),a?a(m.join("")):m.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var e=i.util.object.extend,t="stateProperties";function n(t,n,r){var i={};r.forEach((function(e){i[e]=t[e]})),e(t[n],i,!0)}function r(e,t,n){if(e===t)return!0;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(var i=0,o=e.length;i<o;i++)if(!r(e[i],t[i]))return!1;return!0}if(e&&"object"===typeof e){var a,s=Object.keys(e);if(!t||"object"!==typeof t||!n&&s.length!==Object.keys(t).length)return!1;for(i=0,o=s.length;i<o;i++)if("canvas"!==(a=s[i])&&"group"!==a&&!r(e[a],t[a]))return!1;return!0}}i.util.object.extend(i.Object.prototype,{hasStateChanged:function(e){var n="_"+(e=e||t);return Object.keys(this[n]).length<this[e].length||!r(this[n],this,!0)},saveState:function(e){var r=e&&e.propertySet||t,i="_"+r;return this[i]?(n(this,i,this[r]),e&&e.stateProperties&&n(this,i,e.stateProperties),this):this.setupState(e)},setupState:function(e){var n=(e=e||{}).propertySet||t;return e.propertySet=n,this["_"+n]={},this.saveState(e),this}})}(),function(){var e=i.util.degreesToRadians;i.util.object.extend(i.Object.prototype,{_findTargetCorner:function(e,t){if(!this.hasControls||this.group||!this.canvas||this.canvas._activeObject!==this)return!1;var n,r,i,o=e.x,a=e.y,s=Object.keys(this.oCoords),l=s.length-1;for(this.__corner=0;l>=0;l--)if(i=s[l],this.isControlVisible(i)&&(r=this._getImageLines(t?this.oCoords[i].touchCorner:this.oCoords[i].corner),0!==(n=this._findCrossPoints({x:o,y:a},r))&&n%2===1))return this.__corner=i,i;return!1},forEachControl:function(e){for(var t in this.controls)e(this.controls[t],t,this)},_setCornerCoords:function(){var e=this.oCoords;for(var t in e){var n=this.controls[t];e[t].corner=n.calcCornerCoords(this.angle,this.cornerSize,e[t].x,e[t].y,!1),e[t].touchCorner=n.calcCornerCoords(this.angle,this.touchCornerSize,e[t].x,e[t].y,!0)}},drawSelectionBackground:function(t){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;t.save();var n=this.getCenterPoint(),r=this._calculateCurrentDimensions(),i=this.canvas.viewportTransform;return t.translate(n.x,n.y),t.scale(1/i[0],1/i[3]),t.rotate(e(this.angle)),t.fillStyle=this.selectionBackgroundColor,t.fillRect(-r.x/2,-r.y/2,r.x,r.y),t.restore(),this},drawBorders:function(e,t){t=t||{};var n=this._calculateCurrentDimensions(),r=this.borderScaleFactor,i=n.x+r,o=n.y+r,a="undefined"!==typeof t.hasControls?t.hasControls:this.hasControls,s=!1;return e.save(),e.strokeStyle=t.borderColor||this.borderColor,this._setLineDash(e,t.borderDashArray||this.borderDashArray),e.strokeRect(-i/2,-o/2,i,o),a&&(e.beginPath(),this.forEachControl((function(t,n,r){t.withConnection&&t.getVisibility(r,n)&&(s=!0,e.moveTo(t.x*i,t.y*o),e.lineTo(t.x*i+t.offsetX,t.y*o+t.offsetY))})),s&&e.stroke()),e.restore(),this},drawBordersInGroup:function(e,t,n){n=n||{};var r=i.util.sizeAfterTransform(this.width,this.height,t),o=this.strokeWidth,a=this.strokeUniform,s=this.borderScaleFactor,l=r.x+o*(a?this.canvas.getZoom():t.scaleX)+s,c=r.y+o*(a?this.canvas.getZoom():t.scaleY)+s;return e.save(),this._setLineDash(e,n.borderDashArray||this.borderDashArray),e.strokeStyle=n.borderColor||this.borderColor,e.strokeRect(-l/2,-c/2,l,c),e.restore(),this},drawControls:function(e,t){t=t||{},e.save();var n,r,o=this.canvas.getRetinaScaling();return e.setTransform(o,0,0,o,0,0),e.strokeStyle=e.fillStyle=t.cornerColor||this.cornerColor,this.transparentCorners||(e.strokeStyle=t.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(e,t.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(n=this.group.calcTransformMatrix()),this.forEachControl((function(o,a,s){r=s.oCoords[a],o.getVisibility(s,a)&&(n&&(r=i.util.transformPoint(r,n)),o.render(e,r.x,r.y,t,s))})),e.restore(),this},isControlVisible:function(e){return this.controls[e]&&this.controls[e].getVisibility(this,e)},setControlVisible:function(e,t){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[e]=t,this},setControlsVisibility:function(e){for(var t in e||(e={}),e)this.setControlVisible(t,e[t]);return this},onDeselect:function(){},onSelect:function(){}})}(),i.util.object.extend(i.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){var n=function(){},r=(t=t||{}).onComplete||n,o=t.onChange||n,a=this;return i.util.animate({target:this,startValue:e.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),a.requestRenderAll(),o()},onComplete:function(){e.setCoords(),r()}})},fxCenterObjectV:function(e,t){var n=function(){},r=(t=t||{}).onComplete||n,o=t.onChange||n,a=this;return i.util.animate({target:this,startValue:e.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),a.requestRenderAll(),o()},onComplete:function(){e.setCoords(),r()}})},fxRemove:function(e,t){var n=function(){},r=(t=t||{}).onComplete||n,o=t.onChange||n,a=this;return i.util.animate({target:this,startValue:e.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(t){e.set("opacity",t),a.requestRenderAll(),o()},onComplete:function(){a.remove(e),r()}})}}),i.util.object.extend(i.Object.prototype,{animate:function(){if(arguments[0]&&"object"===typeof arguments[0]){var e,t,n=[],r=[];for(e in arguments[0])n.push(e);for(var i=0,o=n.length;i<o;i++)e=n[i],t=i!==o-1,r.push(this._animate(e,arguments[0][e],arguments[1],t));return r}return this._animate.apply(this,arguments)},_animate:function(e,t,n,r){var o,a=this;t=t.toString(),n=n?i.util.object.clone(n):{},~e.indexOf(".")&&(o=e.split("."));var s=a.colorProperties.indexOf(e)>-1||o&&a.colorProperties.indexOf(o[1])>-1,l=o?this.get(o[0])[o[1]]:this.get(e);"from"in n||(n.from=l),s||(t=~t.indexOf("=")?l+parseFloat(t.replace("=","")):parseFloat(t));var c={target:this,startValue:n.from,endValue:t,byValue:n.by,easing:n.easing,duration:n.duration,abort:n.abort&&function(e,t,r){return n.abort.call(a,e,t,r)},onChange:function(t,i,s){o?a[o[0]][o[1]]=t:a.set(e,t),r||n.onChange&&n.onChange(t,i,s)},onComplete:function(e,t,i){r||(a.setCoords(),n.onComplete&&n.onComplete(e,t,i))}};return s?i.util.animateColor(c.startValue,c.endValue,c.duration,c):i.util.animate(c)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i={x1:1,x2:1,y1:1,y2:1};function o(e,t){var n=e.origin,r=e.axis1,i=e.axis2,o=e.dimension,a=t.nearest,s=t.center,l=t.farthest;return function(){switch(this.get(n)){case a:return Math.min(this.get(r),this.get(i));case s:return Math.min(this.get(r),this.get(i))+.5*this.get(o);case l:return Math.max(this.get(r),this.get(i))}}}t.Line?t.warn("fabric.Line is already defined"):(t.Line=t.util.createClass(t.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:t.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(e,t){e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in e?e.left:this._getLeftToOriginX(),this.top="top"in e?e.top:this._getTopToOriginY()},_set:function(e,t){return this.callSuper("_set",e,t),"undefined"!==typeof i[e]&&this._setWidthHeight(),this},_getLeftToOriginX:o({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:o({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(e){e.beginPath();var t=this.calcLinePoints();e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2),e.lineWidth=this.strokeWidth;var n=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this.stroke&&this._renderStroke(e),e.strokeStyle=n},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(e){return n(this.callSuper("toObject",e),this.calcLinePoints())},_getNonTransformedDimensions:function(){var e=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(e.y-=this.strokeWidth),0===this.height&&(e.x-=this.strokeWidth)),e},calcLinePoints:function(){var e=this.x1<=this.x2?-1:1,t=this.y1<=this.y2?-1:1,n=e*this.width*.5,r=t*this.height*.5;return{x1:n,x2:e*this.width*-.5,y1:r,y2:t*this.height*-.5}},_toSVG:function(){var e=this.calcLinePoints();return["<line ","COMMON_PARTS",'x1="',e.x1,'" y1="',e.y1,'" x2="',e.x2,'" y2="',e.y2,'" />\n']}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r,i){i=i||{};var o=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),a=[o.x1||0,o.y1||0,o.x2||0,o.y2||0];r(new t.Line(a,n(o,i)))},t.Line.fromObject=function(e,n){var i=r(e,!0);i.points=[e.x1,e.y1,e.x2,e.y2],t.Object._fromObject("Line",i,(function(e){delete e.points,n&&n(e)}),"points")})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.degreesToRadians;t.Circle?t.warn("fabric.Circle is already defined."):(t.Circle=t.util.createClass(t.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:t.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(e,t){return this.callSuper("_set",e,t),"radius"===e&&this.setRadius(t),this},toObject:function(e){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(e))},_toSVG:function(){var e,r=(this.endAngle-this.startAngle)%360;if(0===r)e=["<circle ","COMMON_PARTS",'cx="0" cy="0" ','r="',this.radius,'" />\n'];else{var i=n(this.startAngle),o=n(this.endAngle),a=this.radius;e=['<path d="M '+t.util.cos(i)*a+" "+t.util.sin(i)*a," A "+a+" "+a," 0 ",+(r>180?"1":"0")+" 1"," "+t.util.cos(o)*a+" "+t.util.sin(o)*a,'" ',"COMMON_PARTS"," />\n"]}return e},_render:function(e){e.beginPath(),e.arc(0,0,this.radius,n(this.startAngle),n(this.endAngle),!1),this._renderPaintInOrder(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){return this.radius=e,this.set("width",2*e).set("height",2*e)}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){var r,i=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!("radius"in(r=i)&&r.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");i.left=(i.left||0)-i.radius,i.top=(i.top||0)-i.radius,n(new t.Circle(i))},t.Circle.fromObject=function(e,n){t.Object._fromObject("Circle",e,n)})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={});t.Triangle?t.warn("fabric.Triangle is already defined"):(t.Triangle=t.util.createClass(t.Object,{type:"triangle",width:100,height:100,_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderPaintInOrder(e)},_toSVG:function(){var e=this.width/2,t=this.height/2;return["<polygon ","COMMON_PARTS",'points="',[-e+" "+t,"0 "+-t,e+" "+t].join(","),'" />']}}),t.Triangle.fromObject=function(e,n){return t.Object._fromObject("Triangle",e,n)})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=2*Math.PI;t.Ellipse?t.warn("fabric.Ellipse is already defined."):(t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this.set("rx",e&&e.rx||0),this.set("ry",e&&e.ry||0)},_set:function(e,t){switch(this.callSuper("_set",e,t),e){case"rx":this.rx=t,this.set("width",2*t);break;case"ry":this.ry=t,this.set("height",2*t)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["<ellipse ","COMMON_PARTS",'cx="0" cy="0" ','rx="',this.rx,'" ry="',this.ry,'" />\n']},_render:function(e){e.beginPath(),e.save(),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(0,0,this.rx,0,n,!1),e.restore(),this._renderPaintInOrder(e)}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){var r=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES);r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,n(new t.Ellipse(r))},t.Ellipse.fromObject=function(e,n){t.Object._fromObject("Ellipse",e,n)})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Rect?t.warn("fabric.Rect is already defined"):(t.Rect=t.util.createClass(t.Object,{stateProperties:t.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx?Math.min(this.rx,this.width/2):0,n=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,i=this.height,o=-this.width/2,a=-this.height/2,s=0!==t||0!==n,l=.4477152502;e.beginPath(),e.moveTo(o+t,a),e.lineTo(o+r-t,a),s&&e.bezierCurveTo(o+r-l*t,a,o+r,a+l*n,o+r,a+n),e.lineTo(o+r,a+i-n),s&&e.bezierCurveTo(o+r,a+i-l*n,o+r-l*t,a+i,o+r-t,a+i),e.lineTo(o+t,a+i),s&&e.bezierCurveTo(o+l*t,a+i,o,a+i-l*n,o,a+i-n),e.lineTo(o,a+n),s&&e.bezierCurveTo(o,a+l*n,o+l*t,a,o+t,a),e.closePath(),this._renderPaintInOrder(e)},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["<rect ","COMMON_PARTS",'x="',-this.width/2,'" y="',-this.height/2,'" rx="',this.rx,'" ry="',this.ry,'" width="',this.width,'" height="',this.height,'" />\n']}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r,i){if(!e)return r(null);i=i||{};var o=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);o.left=o.left||0,o.top=o.top||0,o.height=o.height||0,o.width=o.width||0;var a=new t.Rect(n(i?t.util.object.clone(i):{},o));a.visible=a.visible&&a.width>0&&a.height>0,r(a)},t.Rect.fromObject=function(e,n){return t.Object._fromObject("Rect",e,n)})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,o=t.util.toFixed,a=t.util.projectStrokeOnPoints;t.Polyline?t.warn("fabric.Polyline is already defined"):(t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:t.Object.prototype.cacheProperties.concat("points"),initialize:function(e,t){t=t||{},this.points=e||[],this.callSuper("initialize",t),this._setPositionDimensions(t)},_projectStrokeOnPoints:function(){return a(this.points,this,!0)},_setPositionDimensions:function(e){var t,n=this._calcDimensions(e),r=this.exactBoundingBox?this.strokeWidth:0;this.width=n.width-r,this.height=n.height-r,e.fromSVG||(t=this.translateToGivenOrigin({x:n.left-this.strokeWidth/2+r/2,y:n.top-this.strokeWidth/2+r/2},"left","top",this.originX,this.originY)),"undefined"===typeof e.left&&(this.left=e.fromSVG?n.left:t.x),"undefined"===typeof e.top&&(this.top=e.fromSVG?n.top:t.y),this.pathOffset={x:n.left+this.width/2+r/2,y:n.top+this.height/2+r/2}},_calcDimensions:function(){var e=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,t=r(e,"x")||0,n=r(e,"y")||0;return{left:t,top:n,width:(i(e,"x")||0)-t,height:(i(e,"y")||0)-n}},toObject:function(e){return n(this.callSuper("toObject",e),{points:this.points.concat()})},_toSVG:function(){for(var e=[],n=this.pathOffset.x,r=this.pathOffset.y,i=t.Object.NUM_FRACTION_DIGITS,a=0,s=this.points.length;a<s;a++)e.push(o(this.points[a].x-n,i),",",o(this.points[a].y-r,i)," ");return["<"+this.type+" ","COMMON_PARTS",'points="',e.join(""),'" />\n']},commonRender:function(e){var t,n=this.points.length,r=this.pathOffset.x,i=this.pathOffset.y;if(!n||isNaN(this.points[n-1].y))return!1;e.beginPath(),e.moveTo(this.points[0].x-r,this.points[0].y-i);for(var o=0;o<n;o++)t=this.points[o],e.lineTo(t.x-r,t.y-i);return!0},_render:function(e){this.commonRender(e)&&this._renderPaintInOrder(e)},complexity:function(){return this.get("points").length}}),t.Polyline.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(),t.Polyline.fromElementGenerator=function(e){return function(r,i,o){if(!r)return i(null);o||(o={});var a=t.parsePointsAttribute(r.getAttribute("points")),s=t.parseAttributes(r,t[e].ATTRIBUTE_NAMES);s.fromSVG=!0,i(new t[e](a,n(s,o)))}},t.Polyline.fromElement=t.Polyline.fromElementGenerator("Polyline"),t.Polyline.fromObject=function(e,n){return t.Object._fromObject("Polyline",e,n,"points")})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.projectStrokeOnPoints;t.Polygon?t.warn("fabric.Polygon is already defined"):(t.Polygon=t.util.createClass(t.Polyline,{type:"polygon",_projectStrokeOnPoints:function(){return n(this.points,this)},_render:function(e){this.commonRender(e)&&(e.closePath(),this._renderPaintInOrder(e))}}),t.Polygon.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(),t.Polygon.fromElement=t.Polyline.fromElementGenerator("Polygon"),t.Polygon.fromObject=function(e,n){t.Object._fromObject("Polygon",e,n,"points")})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.array.min,r=t.util.array.max,i=t.util.object.extend,o=t.util.object.clone,a=t.util.toFixed;t.Path?t.warn("fabric.Path is already defined"):(t.Path=t.util.createClass(t.Object,{type:"path",path:null,cacheProperties:t.Object.prototype.cacheProperties.concat("path","fillRule"),stateProperties:t.Object.prototype.stateProperties.concat("path"),initialize:function(e,t){delete(t=o(t||{})).path,this.callSuper("initialize",t),this._setPath(e||[],t)},_setPath:function(e,n){this.path=t.util.makePathSimpler(Array.isArray(e)?e:t.util.parsePath(e)),t.Polyline.prototype._setPositionDimensions.call(this,n||{})},_renderPathCommands:function(e){var t,n=0,r=0,i=0,o=0,a=0,s=0,l=-this.pathOffset.x,c=-this.pathOffset.y;e.beginPath();for(var u=0,d=this.path.length;u<d;++u)switch((t=this.path[u])[0]){case"L":i=t[1],o=t[2],e.lineTo(i+l,o+c);break;case"M":n=i=t[1],r=o=t[2],e.moveTo(i+l,o+c);break;case"C":i=t[5],o=t[6],a=t[3],s=t[4],e.bezierCurveTo(t[1]+l,t[2]+c,a+l,s+c,i+l,o+c);break;case"Q":e.quadraticCurveTo(t[1]+l,t[2]+c,t[3]+l,t[4]+c),i=t[3],o=t[4],a=t[1],s=t[2];break;case"z":case"Z":i=n,o=r,e.closePath()}},_render:function(e){this._renderPathCommands(e),this._renderPaintInOrder(e)},toString:function(){return"#<fabric.Path ("+this.complexity()+'): { "top": '+this.top+', "left": '+this.left+" }>"},toObject:function(e){return i(this.callSuper("toObject",e),{path:this.path.map((function(e){return e.slice()}))})},toDatalessObject:function(e){var t=this.toObject(["sourcePath"].concat(e));return t.sourcePath&&delete t.path,t},_toSVG:function(){return["<path ","COMMON_PARTS",'d="',t.util.joinPath(this.path),'" stroke-linecap="round" ',"/>\n"]},_getOffsetTransform:function(){var e=t.Object.NUM_FRACTION_DIGITS;return" translate("+a(-this.pathOffset.x,e)+", "+a(-this.pathOffset.y,e)+")"},toClipPathSVG:function(e){var t=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},toSVG:function(e){var t=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var e,i,o=[],a=[],s=0,l=0,c=0,u=0,d=0,h=this.path.length;d<h;++d){switch((e=this.path[d])[0]){case"L":c=e[1],u=e[2],i=[];break;case"M":s=c=e[1],l=u=e[2],i=[];break;case"C":i=t.util.getBoundsOfCurve(c,u,e[1],e[2],e[3],e[4],e[5],e[6]),c=e[5],u=e[6];break;case"Q":i=t.util.getBoundsOfCurve(c,u,e[1],e[2],e[1],e[2],e[3],e[4]),c=e[3],u=e[4];break;case"z":case"Z":c=s,u=l}i.forEach((function(e){o.push(e.x),a.push(e.y)})),o.push(c),a.push(u)}var p=n(o)||0,f=n(a)||0;return{left:p,top:f,width:(r(o)||0)-p,height:(r(a)||0)-f}}}),t.Path.fromObject=function(e,n){if("string"===typeof e.sourcePath){var r=e.sourcePath;t.loadSVGFromURL(r,(function(r){var i=r[0];i.setOptions(e),e.clipPath?t.util.enlivenObjects([e.clipPath],(function(e){i.clipPath=e[0],n&&n(i)})):n&&n(i)}))}else t.Object._fromObject("Path",e,n,"path")},t.Path.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat(["d"]),t.Path.fromElement=function(e,n,r){var o=t.parseAttributes(e,t.Path.ATTRIBUTE_NAMES);o.fromSVG=!0,n(new t.Path(o.d,i(o,r)))})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.array.min,r=t.util.array.max;t.Group||(t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",strokeWidth:0,subTargetCheck:!1,cacheProperties:[],useSetOnGroup:!1,initialize:function(e,t,n){t=t||{},this._objects=[],n&&this.callSuper("initialize",t),this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;if(n)this._updateObjectsACoords();else{var i=t&&t.centerPoint;void 0!==t.originX&&(this.originX=t.originX),void 0!==t.originY&&(this.originY=t.originY),i||this._calcBounds(),this._updateObjectsCoords(i),delete t.centerPoint,this.callSuper("initialize",t)}this.setCoords()},_updateObjectsACoords:function(){for(var e=this._objects.length;e--;)this._objects[e].setCoords(true)},_updateObjectsCoords:function(e){e=e||this.getCenterPoint();for(var t=this._objects.length;t--;)this._updateObjectCoords(this._objects[t],e)},_updateObjectCoords:function(e,t){var n=e.left,r=e.top;e.set({left:n-t.x,top:r-t.y}),e.group=this,e.setCoords(!0)},toString:function(){return"#<fabric.Group: ("+this.complexity()+")>"},addWithUpdate:function(e){var n=!!this.group;return this._restoreObjectsState(),t.util.resetObjectTransform(this),e&&(n&&t.util.removeTransformFromObject(e,this.group.calcTransformMatrix()),this._objects.push(e),e.group=this,e._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,n?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),t.util.resetObjectTransform(this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(e){this.dirty=!0,e.group=this,e._set("canvas",this.canvas)},_onObjectRemoved:function(e){this.dirty=!0,delete e.group},_set:function(e,n){var r=this._objects.length;if(this.useSetOnGroup)for(;r--;)this._objects[r].setOnGroup(e,n);if("canvas"===e)for(;r--;)this._objects[r]._set(e,n);t.Object.prototype._set.call(this,e,n)},toObject:function(e){var n=this.includeDefaultValues,r=this._objects.filter((function(e){return!e.excludeFromExport})).map((function(t){var r=t.includeDefaultValues;t.includeDefaultValues=n;var i=t.toObject(e);return t.includeDefaultValues=r,i})),i=t.Object.prototype.toObject.call(this,e);return i.objects=r,i},toDatalessObject:function(e){var n,r=this.sourcePath;if(r)n=r;else{var i=this.includeDefaultValues;n=this._objects.map((function(t){var n=t.includeDefaultValues;t.includeDefaultValues=i;var r=t.toDatalessObject(e);return t.includeDefaultValues=n,r}))}var o=t.Object.prototype.toDatalessObject.call(this,e);return o.objects=n,o},render:function(e){this._transformDone=!0,this.callSuper("render",e),this._transformDone=!1},shouldCache:function(){var e=t.Object.prototype.shouldCache.call(this);if(e)for(var n=0,r=this._objects.length;n<r;n++)if(this._objects[n].willDrawShadow())return this.ownCaching=!1,!1;return e},willDrawShadow:function(){if(t.Object.prototype.willDrawShadow.call(this))return!0;for(var e=0,n=this._objects.length;e<n;e++)if(this._objects[e].willDrawShadow())return!0;return!1},isOnACache:function(){return this.ownCaching||this.group&&this.group.isOnACache()},drawObject:function(e){for(var t=0,n=this._objects.length;t<n;t++)this._objects[t].render(e);this._drawClipPath(e,this.clipPath)},isCacheDirty:function(e){if(this.callSuper("isCacheDirty",e))return!0;if(!this.statefullCache)return!1;for(var t=0,n=this._objects.length;t<n;t++)if(this._objects[t].isCacheDirty(!0)){if(this._cacheCanvas){var r=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-r/2,-i/2,r,i)}return!0}return!1},_restoreObjectsState:function(){var e=this.calcOwnMatrix();return this._objects.forEach((function(n){t.util.addTransformToObject(n,e),delete n.group,n.setCoords()})),this},destroy:function(){return this._objects.forEach((function(e){e.set("dirty",!0)})),this._restoreObjectsState()},dispose:function(){this.callSuper("dispose"),this.forEachObject((function(e){e.dispose&&e.dispose()})),this._objects=[]},toActiveSelection:function(){if(this.canvas){var e=this._objects,n=this.canvas;this._objects=[];var r=this.toObject();delete r.objects;var i=new t.ActiveSelection([]);return i.set(r),i.type="activeSelection",n.remove(this),e.forEach((function(e){e.group=i,e.dirty=!0,n.add(e)})),i.canvas=n,i._objects=e,n._activeObject=i,i.setCoords(),i}},ungroupOnCanvas:function(){return this._restoreObjectsState()},setObjectsCoords:function(){return this.forEachObject((function(e){e.setCoords(true)})),this},_calcBounds:function(e){for(var t,n,r,i,o=[],a=[],s=["tr","br","bl","tl"],l=0,c=this._objects.length,u=s.length;l<c;++l){for(r=(t=this._objects[l]).calcACoords(),i=0;i<u;i++)n=s[i],o.push(r[n].x),a.push(r[n].y);t.aCoords=r}this._getBounds(o,a,e)},_getBounds:function(e,i,o){var a=new t.Point(n(e),n(i)),s=new t.Point(r(e),r(i)),l=a.y||0,c=a.x||0,u=s.x-a.x||0,d=s.y-a.y||0;this.width=u,this.height=d,o||this.setPositionByOrigin({x:c,y:l},"left","top")},_toSVG:function(e){for(var t=["<g ","COMMON_PARTS"," >\n"],n=0,r=this._objects.length;n<r;n++)t.push("\t\t",this._objects[n].toSVG(e));return t.push("</g>\n"),t},getSvgStyles:function(){var e="undefined"!==typeof this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",t=this.visible?"":" visibility: hidden;";return[e,this.getSvgFilter(),t].join("")},toClipPathSVG:function(e){for(var t=[],n=0,r=this._objects.length;n<r;n++)t.push("\t",this._objects[n].toClipPathSVG(e));return this._createBaseClipPathSVGMarkup(t,{reviver:e})}}),t.Group.fromObject=function(e,n){var r=e.objects,i=t.util.object.clone(e,!0);delete i.objects,"string"!==typeof r?t.util.enlivenObjects(r,(function(r){t.util.enlivenObjectEnlivables(e,i,(function(){n&&n(new t.Group(r,i,!0))}))})):t.loadSVGFromURL(r,(function(o){var a=t.util.groupSVGElements(o,e,r),s=i.clipPath;delete i.clipPath,a.set(i),s?t.util.enlivenObjects([s],(function(e){a.clipPath=e[0],n&&n(a)})):n&&n(a)}))})}(t),function(e){"use strict";var t=e.fabric||(e.fabric={});t.ActiveSelection||(t.ActiveSelection=t.util.createClass(t.Group,{type:"activeSelection",initialize:function(e,n){n=n||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;n.originX&&(this.originX=n.originX),n.originY&&(this.originY=n.originY),this._calcBounds(),this._updateObjectsCoords(),t.Object.prototype.initialize.call(this,n),this.setCoords()},toGroup:function(){var e=this._objects.concat();this._objects=[];var n=t.Object.prototype.toObject.call(this),r=new t.Group([]);if(delete n.type,r.set(n),e.forEach((function(e){e.canvas.remove(e),e.group=r})),r._objects=e,!this.canvas)return r;var i=this.canvas;return i.add(r),i._activeObject=r,r.setCoords(),r},onDeselect:function(){return this.destroy(),!1},toString:function(){return"#<fabric.ActiveSelection: ("+this.complexity()+")>"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(e,t,n){e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",e,t),"undefined"===typeof(n=n||{}).hasControls&&(n.hasControls=!1),n.forActiveSelection=!0;for(var r=0,i=this._objects.length;r<i;r++)this._objects[r]._renderControls(e,n);e.restore()}}),t.ActiveSelection.fromObject=function(e,n){t.util.enlivenObjects(e.objects,(function(r){delete e.objects,n&&n(new t.ActiveSelection(r,e,!0))}))})}(t),function(e){"use strict";var t=i.util.object.extend;e.fabric||(e.fabric={}),e.fabric.Image?i.warn("fabric.Image is already defined."):(i.Image=i.util.createClass(i.Object,{type:"image",strokeWidth:0,srcFromAttribute:!1,_lastScaleX:1,_lastScaleY:1,_filterScalingX:1,_filterScalingY:1,minimumScaleTrigger:.5,stateProperties:i.Object.prototype.stateProperties.concat("cropX","cropY"),cacheProperties:i.Object.prototype.cacheProperties.concat("cropX","cropY"),cacheKey:"",cropX:0,cropY:0,imageSmoothing:!0,initialize:function(e,t){t||(t={}),this.filters=[],this.cacheKey="texture"+i.Object.__uid++,this.callSuper("initialize",t),this._initElement(e,t)},getElement:function(){return this._element||{}},setElement:function(e,t){return this.removeTexture(this.cacheKey),this.removeTexture(this.cacheKey+"_filtered"),this._element=e,this._originalElement=e,this._initConfig(t),0!==this.filters.length&&this.applyFilters(),this.resizeFilter&&this.applyResizeFilters(),this},removeTexture:function(e){var t=i.filterBackend;t&&t.evictCachesForKey&&t.evictCachesForKey(e)},dispose:function(){this.callSuper("dispose"),this.removeTexture(this.cacheKey),this.removeTexture(this.cacheKey+"_filtered"),this._cacheContext=void 0,["_originalElement","_element","_filteredEl","_cacheCanvas"].forEach(function(e){i.util.cleanUpJsdomNode(this[e]),this[e]=void 0}.bind(this))},getCrossOrigin:function(){return this._originalElement&&(this._originalElement.crossOrigin||null)},getOriginalSize:function(){var e=this.getElement();return{width:e.naturalWidth||e.width,height:e.naturalHeight||e.height}},_stroke:function(e){if(this.stroke&&0!==this.strokeWidth){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,-n),e.lineTo(t,-n),e.lineTo(t,n),e.lineTo(-t,n),e.lineTo(-t,-n),e.closePath()}},toObject:function(e){var n=[];this.filters.forEach((function(e){e&&n.push(e.toObject())}));var r=t(this.callSuper("toObject",["cropX","cropY"].concat(e)),{src:this.getSrc(),crossOrigin:this.getCrossOrigin(),filters:n});return this.resizeFilter&&(r.resizeFilter=this.resizeFilter.toObject()),r},hasCrop:function(){return this.cropX||this.cropY||this.width<this._element.width||this.height<this._element.height},_toSVG:function(){var e,t=[],n=[],r=this._element,o=-this.width/2,a=-this.height/2,s="",l="";if(!r)return[];if(this.hasCrop()){var c=i.Object.__uid++;t.push('<clipPath id="imageCrop_'+c+'">\n','\t<rect x="'+o+'" y="'+a+'" width="'+this.width+'" height="'+this.height+'" />\n',"</clipPath>\n"),s=' clip-path="url(#imageCrop_'+c+')" '}if(this.imageSmoothing||(l='" image-rendering="optimizeSpeed'),n.push("\t<image ","COMMON_PARTS",'xlink:href="',this.getSvgSrc(!0),'" x="',o-this.cropX,'" y="',a-this.cropY,'" width="',r.width||r.naturalWidth,'" height="',r.height||r.height,l,'"',s,"></image>\n"),this.stroke||this.strokeDashArray){var u=this.fill;this.fill=null,e=["\t<rect ",'x="',o,'" y="',a,'" width="',this.width,'" height="',this.height,'" style="',this.getSvgStyles(),'"/>\n'],this.fill=u}return t="fill"!==this.paintFirst?t.concat(e,n):t.concat(n,e)},getSrc:function(e){var t=e?this._element:this._originalElement;return t?t.toDataURL?t.toDataURL():this.srcFromAttribute?t.getAttribute("src"):t.src:this.src||""},setSrc:function(e,t,n){return i.util.loadImage(e,(function(e,r){this.setElement(e,n),this._setWidthHeight(),t&&t(this,r)}),this,n&&n.crossOrigin),this},toString:function(){return'#<fabric.Image: { src: "'+this.getSrc()+'" }>'},applyResizeFilters:function(){var e=this.resizeFilter,t=this.minimumScaleTrigger,n=this.getTotalObjectScaling(),r=n.scaleX,o=n.scaleY,a=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!e||r>t&&o>t)return this._element=a,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=o);i.filterBackend||(i.filterBackend=i.initFilterBackend());var s=i.util.createCanvasElement(),l=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,c=a.width,u=a.height;s.width=c,s.height=u,this._element=s,this._lastScaleX=e.scaleX=r,this._lastScaleY=e.scaleY=o,i.filterBackend.applyFilters([e],a,c,u,this._element,l),this._filterScalingX=s.width/this._originalElement.width,this._filterScalingY=s.height/this._originalElement.height},applyFilters:function(e){if(e=(e=e||this.filters||[]).filter((function(e){return e&&!e.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===e.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var t=this._originalElement,n=t.naturalWidth||t.width,r=t.naturalHeight||t.height;if(this._element===this._originalElement){var o=i.util.createCanvasElement();o.width=n,o.height=r,this._element=o,this._filteredEl=o}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,n,r),this._lastScaleX=1,this._lastScaleY=1;return i.filterBackend||(i.filterBackend=i.initFilterBackend()),i.filterBackend.applyFilters(e,this._originalElement,n,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(e){i.util.setImageSmoothing(e,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(e),this._renderPaintInOrder(e)},drawCacheOnCanvas:function(e){i.util.setImageSmoothing(e,this.imageSmoothing),i.Object.prototype.drawCacheOnCanvas.call(this,e)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(e){var t=this._element;if(t){var n=this._filterScalingX,r=this._filterScalingY,i=this.width,o=this.height,a=Math.min,s=Math.max,l=s(this.cropX,0),c=s(this.cropY,0),u=t.naturalWidth||t.width,d=t.naturalHeight||t.height,h=l*n,p=c*r,f=a(i*n,u-h),m=a(o*r,d-p),g=-i/2,v=-o/2,y=a(i,u/n-l),b=a(o,d/r-c);t&&e.drawImage(t,h,p,f,m,g,v,y,b)}},_needsResize:function(){var e=this.getTotalObjectScaling();return e.scaleX!==this._lastScaleX||e.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(e,t){this.setElement(i.util.getById(e),t),i.util.addClass(this.getElement(),i.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e,t){e&&e.length?i.util.enlivenObjects(e,(function(e){t&&t(e)}),"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){e||(e={});var t=this.getElement();this.width=e.width||t.naturalWidth||t.width||0,this.height=e.height||t.naturalHeight||t.height||0},parsePreserveAspectRatioAttribute:function(){var e,t=i.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),n=this._element.width,r=this._element.height,o=1,a=1,s=0,l=0,c=0,u=0,d=this.width,h=this.height,p={width:d,height:h};return!t||"none"===t.alignX&&"none"===t.alignY?(o=d/n,a=h/r):("meet"===t.meetOrSlice&&(e=(d-n*(o=a=i.util.findScaleToFit(this._element,p)))/2,"Min"===t.alignX&&(s=-e),"Max"===t.alignX&&(s=e),e=(h-r*a)/2,"Min"===t.alignY&&(l=-e),"Max"===t.alignY&&(l=e)),"slice"===t.meetOrSlice&&(e=n-d/(o=a=i.util.findScaleToCover(this._element,p)),"Mid"===t.alignX&&(c=e/2),"Max"===t.alignX&&(c=e),e=r-h/a,"Mid"===t.alignY&&(u=e/2),"Max"===t.alignY&&(u=e),n=d/o,r=h/a)),{width:n,height:r,scaleX:o,scaleY:a,offsetLeft:s,offsetTop:l,cropX:c,cropY:u}}}),i.Image.CSS_CANVAS="canvas-img",i.Image.prototype.getSvgSrc=i.Image.prototype.getSrc,i.Image.fromObject=function(e,t){var n=i.util.object.clone(e);i.util.loadImage(n.src,(function(e,r){r?t&&t(null,!0):i.Image.prototype._initFilters.call(n,n.filters,(function(r){n.filters=r||[],i.Image.prototype._initFilters.call(n,[n.resizeFilter],(function(r){n.resizeFilter=r[0],i.util.enlivenObjectEnlivables(n,n,(function(){var r=new i.Image(e,n);t(r,!1)}))}))}))}),null,n.crossOrigin)},i.Image.fromURL=function(e,t,n){i.util.loadImage(e,(function(e,r){t&&t(new i.Image(e,n),r)}),null,n&&n.crossOrigin)},i.Image.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),i.Image.fromElement=function(e,n,r){var o=i.parseAttributes(e,i.Image.ATTRIBUTE_NAMES);i.Image.fromURL(o["xlink:href"],n,t(r?i.util.object.clone(r):{},o))})}(t),i.util.object.extend(i.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.angle%360;return e>0?90*Math.round((e-1)/90):90*Math.round(e/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(e){var t=function(){},n=(e=e||{}).onComplete||t,r=e.onChange||t,o=this;return i.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){o.rotate(e),r()},onComplete:function(){o.setCoords(),n()}})}}),i.util.object.extend(i.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){"use strict";function e(e,t){var n="precision "+t+" float;\nvoid main(){}",r=e.createShader(e.FRAGMENT_SHADER);return e.shaderSource(r,n),e.compileShader(r),!!e.getShaderParameter(r,e.COMPILE_STATUS)}function t(e){e&&e.tileSize&&(this.tileSize=e.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}i.isWebglSupported=function(t){if(i.isLikelyNode)return!1;t=t||i.WebglFilterBackend.prototype.tileSize;var n=document.createElement("canvas"),r=n.getContext("webgl")||n.getContext("experimental-webgl"),o=!1;if(r){i.maxTextureSize=r.getParameter(r.MAX_TEXTURE_SIZE),o=i.maxTextureSize>=t;for(var a=["highp","mediump","lowp"],s=0;s<3;s++)if(e(r,a[s])){i.webGlPrecision=a[s];break}}return this.isSupported=o,o},i.WebglFilterBackend=t,t.prototype={tileSize:2048,resources:{},setupGLContext:function(e,t){this.dispose(),this.createWebGLCanvas(e,t),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(e,t)},chooseFastestCopyGLTo2DMethod:function(e,t){var n,r="undefined"!==typeof window.performance;try{new ImageData(1,1),n=!0}catch(f){n=!1}var o="undefined"!==typeof ArrayBuffer,l="undefined"!==typeof Uint8ClampedArray;if(r&&n&&o&&l){var c=i.util.createCanvasElement(),u=new ArrayBuffer(e*t*4);if(i.forceGLPutImageData)return this.imageBuffer=u,void(this.copyGLTo2D=s);var d,h,p={imageBuffer:u,destinationWidth:e,destinationHeight:t,targetCanvas:c};c.width=e,c.height=t,d=window.performance.now(),a.call(p,this.gl,p),h=window.performance.now()-d,d=window.performance.now(),s.call(p,this.gl,p),h>window.performance.now()-d?(this.imageBuffer=u,this.copyGLTo2D=s):this.copyGLTo2D=a}},createWebGLCanvas:function(e,t){var n=i.util.createCanvasElement();n.width=e,n.height=t;var r={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},o=n.getContext("webgl",r);o||(o=n.getContext("experimental-webgl",r)),o&&(o.clearColor(0,0,0,0),this.canvas=n,this.gl=o)},applyFilters:function(e,t,n,r,i,o){var a,s=this.gl;o&&(a=this.getCachedTexture(o,t));var l={originalWidth:t.width||t.originalWidth,originalHeight:t.height||t.originalHeight,sourceWidth:n,sourceHeight:r,destinationWidth:n,destinationHeight:r,context:s,sourceTexture:this.createTexture(s,n,r,!a&&t),targetTexture:this.createTexture(s,n,r),originalTexture:a||this.createTexture(s,n,r,!a&&t),passes:e.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:i},c=s.createFramebuffer();return s.bindFramebuffer(s.FRAMEBUFFER,c),e.forEach((function(e){e&&e.applyTo(l)})),function(e){var t=e.targetCanvas,n=t.width,r=t.height,i=e.destinationWidth,o=e.destinationHeight;n===i&&r===o||(t.width=i,t.height=o)}(l),this.copyGLTo2D(s,l),s.bindTexture(s.TEXTURE_2D,null),s.deleteTexture(l.sourceTexture),s.deleteTexture(l.targetTexture),s.deleteFramebuffer(c),i.getContext("2d").setTransform(1,0,0,1,0,0),l},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(e,t,n,r,i){var o=e.createTexture();return e.bindTexture(e.TEXTURE_2D,o),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,i||e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,i||e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),r?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,t,n,0,e.RGBA,e.UNSIGNED_BYTE,null),o},getCachedTexture:function(e,t){if(this.textureCache[e])return this.textureCache[e];var n=this.createTexture(this.gl,t.width,t.height,t);return this.textureCache[e]=n,n},evictCachesForKey:function(e){this.textureCache[e]&&(this.gl.deleteTexture(this.textureCache[e]),delete this.textureCache[e])},copyGLTo2D:a,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var e=this.gl,t={renderer:"",vendor:""};if(!e)return t;var n=e.getExtension("WEBGL_debug_renderer_info");if(n){var r=e.getParameter(n.UNMASKED_RENDERER_WEBGL),i=e.getParameter(n.UNMASKED_VENDOR_WEBGL);r&&(t.renderer=r.toLowerCase()),i&&(t.vendor=i.toLowerCase())}return this.gpuInfo=t,t}}}(),function(){"use strict";var e=function(){};function t(){}i.Canvas2dFilterBackend=t,t.prototype={evictCachesForKey:e,dispose:e,clearWebGLCaches:e,resources:{},applyFilters:function(e,t,n,r,i){var o=i.getContext("2d");o.drawImage(t,0,0,n,r);var a={sourceWidth:n,sourceHeight:r,imageData:o.getImageData(0,0,n,r),originalEl:t,originalImageData:o.getImageData(0,0,n,r),canvasEl:i,ctx:o,filterBackend:this};return e.forEach((function(e){e.applyTo(a)})),a.imageData.width===n&&a.imageData.height===r||(i.width=a.imageData.width,i.height=a.imageData.height),o.putImageData(a.imageData,0,0),a}}}(),i.Image=i.Image||{},i.Image.filters=i.Image.filters||{},i.Image.filters.BaseFilter=i.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(e){e&&this.setOptions(e)},setOptions:function(e){for(var t in e)this[t]=e[t]},createProgram:function(e,t,n){t=t||this.fragmentSource,n=n||this.vertexSource,"highp"!==i.webGlPrecision&&(t=t.replace(/precision highp float/g,"precision "+i.webGlPrecision+" float"));var r=e.createShader(e.VERTEX_SHADER);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+e.getShaderInfoLog(r));var o=e.createShader(e.FRAGMENT_SHADER);if(e.shaderSource(o,t),e.compileShader(o),!e.getShaderParameter(o,e.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+e.getShaderInfoLog(o));var a=e.createProgram();if(e.attachShader(a,r),e.attachShader(a,o),e.linkProgram(a),!e.getProgramParameter(a,e.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+e.getProgramInfoLog(a));var s=this.getAttributeLocations(e,a),l=this.getUniformLocations(e,a)||{};return l.uStepW=e.getUniformLocation(a,"uStepW"),l.uStepH=e.getUniformLocation(a,"uStepH"),{program:a,attributeLocations:s,uniformLocations:l}},getAttributeLocations:function(e,t){return{aPosition:e.getAttribLocation(t,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(e,t,n){var r=t.aPosition,i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.enableVertexAttribArray(r),e.vertexAttribPointer(r,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,n,e.STATIC_DRAW)},_setupFrameBuffer:function(e){var t,n,r=e.context;e.passes>1?(t=e.destinationWidth,n=e.destinationHeight,e.sourceWidth===t&&e.sourceHeight===n||(r.deleteTexture(e.targetTexture),e.targetTexture=e.filterBackend.createTexture(r,t,n)),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e.targetTexture,0)):(r.bindFramebuffer(r.FRAMEBUFFER,null),r.finish())},_swapTextures:function(e){e.passes--,e.pass++;var t=e.targetTexture;e.targetTexture=e.sourceTexture,e.sourceTexture=t},isNeutralState:function(){var e=this.mainParameter,t=i.Image.filters[this.type].prototype;if(e){if(Array.isArray(t[e])){for(var n=t[e].length;n--;)if(this[e][n]!==t[e][n])return!1;return!0}return t[e]===this[e]}return!1},applyTo:function(e){e.webgl?(this._setupFrameBuffer(e),this.applyToWebGL(e),this._swapTextures(e)):this.applyTo2d(e)},retrieveShader:function(e){return e.programCache.hasOwnProperty(this.type)||(e.programCache[this.type]=this.createProgram(e.context)),e.programCache[this.type]},applyToWebGL:function(e){var t=e.context,n=this.retrieveShader(e);0===e.pass&&e.originalTexture?t.bindTexture(t.TEXTURE_2D,e.originalTexture):t.bindTexture(t.TEXTURE_2D,e.sourceTexture),t.useProgram(n.program),this.sendAttributeData(t,n.attributeLocations,e.aPosition),t.uniform1f(n.uniformLocations.uStepW,1/e.sourceWidth),t.uniform1f(n.uniformLocations.uStepH,1/e.sourceHeight),this.sendUniformData(t,n.uniformLocations),t.viewport(0,0,e.destinationWidth,e.destinationHeight),t.drawArrays(t.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(e,t,n){e.activeTexture(n),e.bindTexture(e.TEXTURE_2D,t),e.activeTexture(e.TEXTURE0)},unbindAdditionalTexture:function(e,t){e.activeTexture(t),e.bindTexture(e.TEXTURE_2D,null),e.activeTexture(e.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(e){this[this.mainParameter]=e},sendUniformData:function(){},createHelpLayer:function(e){if(!e.helpLayer){var t=document.createElement("canvas");t.width=e.sourceWidth,t.height=e.sourceHeight,e.helpLayer=t}},toObject:function(){var e={type:this.type},t=this.mainParameter;return t&&(e[t]=this[t]),e},toJSON:function(){return this.toObject()}}),i.Image.filters.BaseFilter.fromObject=function(e,t){var n=new i.Image.filters[e.type](e);return t&&t(n),n},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.ColorMatrix=r(n.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(e){this.callSuper("initialize",e),this.matrix=this.matrix.slice(0)},applyTo2d:function(e){var t,n,r,i,o,a=e.imageData.data,s=a.length,l=this.matrix,c=this.colorsOnly;for(o=0;o<s;o+=4)t=a[o],n=a[o+1],r=a[o+2],c?(a[o]=t*l[0]+n*l[1]+r*l[2]+255*l[4],a[o+1]=t*l[5]+n*l[6]+r*l[7]+255*l[9],a[o+2]=t*l[10]+n*l[11]+r*l[12]+255*l[14]):(i=a[o+3],a[o]=t*l[0]+n*l[1]+r*l[2]+i*l[3]+255*l[4],a[o+1]=t*l[5]+n*l[6]+r*l[7]+i*l[8]+255*l[9],a[o+2]=t*l[10]+n*l[11]+r*l[12]+i*l[13]+255*l[14],a[o+3]=t*l[15]+n*l[16]+r*l[17]+i*l[18]+255*l[19])},getUniformLocations:function(e,t){return{uColorMatrix:e.getUniformLocation(t,"uColorMatrix"),uConstants:e.getUniformLocation(t,"uConstants")}},sendUniformData:function(e,t){var n=this.matrix,r=[n[0],n[1],n[2],n[3],n[5],n[6],n[7],n[8],n[10],n[11],n[12],n[13],n[15],n[16],n[17],n[18]],i=[n[4],n[9],n[14],n[19]];e.uniformMatrix4fv(t.uColorMatrix,!1,r),e.uniform4fv(t.uConstants,i)}}),t.Image.filters.ColorMatrix.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.Brightness=r(n.BaseFilter,{type:"Brightness",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uBrightness;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor.rgb += uBrightness;\ngl_FragColor = color;\n}",brightness:0,mainParameter:"brightness",applyTo2d:function(e){if(0!==this.brightness){var t,n=e.imageData.data,r=n.length,i=Math.round(255*this.brightness);for(t=0;t<r;t+=4)n[t]=n[t]+i,n[t+1]=n[t+1]+i,n[t+2]=n[t+2]+i}},getUniformLocations:function(e,t){return{uBrightness:e.getUniformLocation(t,"uBrightness")}},sendUniformData:function(e,t){e.uniform1f(t.uBrightness,this.brightness)}}),t.Image.filters.Brightness.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.Image.filters,i=t.util.createClass;r.Convolute=i(r.BaseFilter,{type:"Convolute",opaque:!1,matrix:[0,0,0,0,1,0,0,0,0],fragmentSource:{Convolute_3_1:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[9];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 3.0; h+=1.0) {\nfor (float w = 0.0; w < 3.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\n}\n}\ngl_FragColor = color;\n}",Convolute_3_0:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[9];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 3.0; h+=1.0) {\nfor (float w = 0.0; w < 3.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",Convolute_5_1:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[25];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 5.0; h+=1.0) {\nfor (float w = 0.0; w < 5.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\n}\n}\ngl_FragColor = color;\n}",Convolute_5_0:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[25];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 5.0; h+=1.0) {\nfor (float w = 0.0; w < 5.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",Convolute_7_1:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[49];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 7.0; h+=1.0) {\nfor (float w = 0.0; w < 7.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\n}\n}\ngl_FragColor = color;\n}",Convolute_7_0:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[49];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 7.0; h+=1.0) {\nfor (float w = 0.0; w < 7.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",Convolute_9_1:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[81];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 9.0; h+=1.0) {\nfor (float w = 0.0; w < 9.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\n}\n}\ngl_FragColor = color;\n}",Convolute_9_0:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[81];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 9.0; h+=1.0) {\nfor (float w = 0.0; w < 9.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}"},retrieveShader:function(e){var t=Math.sqrt(this.matrix.length),n=this.type+"_"+t+"_"+(this.opaque?1:0),r=this.fragmentSource[n];return e.programCache.hasOwnProperty(n)||(e.programCache[n]=this.createProgram(e.context,r)),e.programCache[n]},applyTo2d:function(e){var t,n,r,i,o,a,s,l,c,u,d,h,p,f=e.imageData,m=f.data,g=this.matrix,v=Math.round(Math.sqrt(g.length)),y=Math.floor(v/2),b=f.width,x=f.height,w=e.ctx.createImageData(b,x),S=w.data,_=this.opaque?1:0;for(d=0;d<x;d++)for(u=0;u<b;u++){for(o=4*(d*b+u),t=0,n=0,r=0,i=0,p=0;p<v;p++)for(h=0;h<v;h++)a=u+h-y,(s=d+p-y)<0||s>=x||a<0||a>=b||(l=4*(s*b+a),c=g[p*v+h],t+=m[l]*c,n+=m[l+1]*c,r+=m[l+2]*c,_||(i+=m[l+3]*c));S[o]=t,S[o+1]=n,S[o+2]=r,S[o+3]=_?m[o+3]:i}e.imageData=w},getUniformLocations:function(e,t){return{uMatrix:e.getUniformLocation(t,"uMatrix"),uOpaque:e.getUniformLocation(t,"uOpaque"),uHalfSize:e.getUniformLocation(t,"uHalfSize"),uSize:e.getUniformLocation(t,"uSize")}},sendUniformData:function(e,t){e.uniform1fv(t.uMatrix,this.matrix)},toObject:function(){return n(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.Grayscale=r(n.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(e){var t,n,r=e.imageData.data,i=r.length,o=this.mode;for(t=0;t<i;t+=4)"average"===o?n=(r[t]+r[t+1]+r[t+2])/3:"lightness"===o?n=(Math.min(r[t],r[t+1],r[t+2])+Math.max(r[t],r[t+1],r[t+2]))/2:"luminosity"===o&&(n=.21*r[t]+.72*r[t+1]+.07*r[t+2]),r[t]=n,r[t+1]=n,r[t+2]=n},retrieveShader:function(e){var t=this.type+"_"+this.mode;if(!e.programCache.hasOwnProperty(t)){var n=this.fragmentSource[this.mode];e.programCache[t]=this.createProgram(e.context,n)}return e.programCache[t]},getUniformLocations:function(e,t){return{uMode:e.getUniformLocation(t,"uMode")}},sendUniformData:function(e,t){e.uniform1i(t.uMode,1)},isNeutralState:function(){return!1}}),t.Image.filters.Grayscale.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.Invert=r(n.BaseFilter,{type:"Invert",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uInvert;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nif (uInvert == 1) {\ngl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\n} else {\ngl_FragColor = color;\n}\n}",invert:!0,mainParameter:"invert",applyTo2d:function(e){var t,n=e.imageData.data,r=n.length;for(t=0;t<r;t+=4)n[t]=255-n[t],n[t+1]=255-n[t+1],n[t+2]=255-n[t+2]},isNeutralState:function(){return!this.invert},getUniformLocations:function(e,t){return{uInvert:e.getUniformLocation(t,"uInvert")}},sendUniformData:function(e,t){e.uniform1i(t.uInvert,this.invert)}}),t.Image.filters.Invert.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.Image.filters,i=t.util.createClass;r.Noise=i(r.BaseFilter,{type:"Noise",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uStepH;\nuniform float uNoise;\nuniform float uSeed;\nvarying vec2 vTexCoord;\nfloat rand(vec2 co, float seed, float vScale) {\nreturn fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\n}\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\ngl_FragColor = color;\n}",mainParameter:"noise",noise:0,applyTo2d:function(e){if(0!==this.noise){var t,n,r=e.imageData.data,i=r.length,o=this.noise;for(t=0,i=r.length;t<i;t+=4)n=(.5-Math.random())*o,r[t]+=n,r[t+1]+=n,r[t+2]+=n}},getUniformLocations:function(e,t){return{uNoise:e.getUniformLocation(t,"uNoise"),uSeed:e.getUniformLocation(t,"uSeed")}},sendUniformData:function(e,t){e.uniform1f(t.uNoise,this.noise/255),e.uniform1f(t.uSeed,Math.random())},toObject:function(){return n(this.callSuper("toObject"),{noise:this.noise})}}),t.Image.filters.Noise.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.Pixelate=r(n.BaseFilter,{type:"Pixelate",blocksize:4,mainParameter:"blocksize",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uBlocksize;\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nfloat blockW = uBlocksize * uStepW;\nfloat blockH = uBlocksize * uStepW;\nint posX = int(vTexCoord.x / blockW);\nint posY = int(vTexCoord.y / blockH);\nfloat fposX = float(posX);\nfloat fposY = float(posY);\nvec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\nvec4 color = texture2D(uTexture, squareCoords);\ngl_FragColor = color;\n}",applyTo2d:function(e){var t,n,r,i,o,a,s,l,c,u,d,h=e.imageData,p=h.data,f=h.height,m=h.width;for(n=0;n<f;n+=this.blocksize)for(r=0;r<m;r+=this.blocksize)for(i=p[t=4*n*m+4*r],o=p[t+1],a=p[t+2],s=p[t+3],u=Math.min(n+this.blocksize,f),d=Math.min(r+this.blocksize,m),l=n;l<u;l++)for(c=r;c<d;c++)p[t=4*l*m+4*c]=i,p[t+1]=o,p[t+2]=a,p[t+3]=s},isNeutralState:function(){return 1===this.blocksize},getUniformLocations:function(e,t){return{uBlocksize:e.getUniformLocation(t,"uBlocksize"),uStepW:e.getUniformLocation(t,"uStepW"),uStepH:e.getUniformLocation(t,"uStepH")}},sendUniformData:function(e,t){e.uniform1f(t.uBlocksize,this.blocksize)}}),t.Image.filters.Pixelate.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.Image.filters,i=t.util.createClass;r.RemoveColor=i(r.BaseFilter,{type:"RemoveColor",color:"#FFFFFF",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec4 uLow;\nuniform vec4 uHigh;\nvarying vec2 vTexCoord;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\nif(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\ngl_FragColor.a = 0.0;\n}\n}",distance:.02,useAlpha:!1,applyTo2d:function(e){var n,r,i,o,a=e.imageData.data,s=255*this.distance,l=new t.Color(this.color).getSource(),c=[l[0]-s,l[1]-s,l[2]-s],u=[l[0]+s,l[1]+s,l[2]+s];for(n=0;n<a.length;n+=4)r=a[n],i=a[n+1],o=a[n+2],r>c[0]&&i>c[1]&&o>c[2]&&r<u[0]&&i<u[1]&&o<u[2]&&(a[n+3]=0)},getUniformLocations:function(e,t){return{uLow:e.getUniformLocation(t,"uLow"),uHigh:e.getUniformLocation(t,"uHigh")}},sendUniformData:function(e,n){var r=new t.Color(this.color).getSource(),i=parseFloat(this.distance),o=[0+r[0]/255-i,0+r[1]/255-i,0+r[2]/255-i,1],a=[r[0]/255+i,r[1]/255+i,r[2]/255+i,1];e.uniform4fv(n.uLow,o),e.uniform4fv(n.uHigh,a)},toObject:function(){return n(this.callSuper("toObject"),{color:this.color,distance:this.distance})}}),t.Image.filters.RemoveColor.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass,i={Brownie:[.5997,.34553,-.27082,0,.186,-.0377,.86095,.15059,0,-.1449,.24113,-.07441,.44972,0,-.02965,0,0,0,1,0],Vintage:[.62793,.32021,-.03965,0,.03784,.02578,.64411,.03259,0,.02926,.0466,-.08512,.52416,0,.02023,0,0,0,1,0],Kodachrome:[1.12855,-.39673,-.03992,0,.24991,-.16404,1.08352,-.05498,0,.09698,-.16786,-.56034,1.60148,0,.13972,0,0,0,1,0],Technicolor:[1.91252,-.85453,-.09155,0,.04624,-.30878,1.76589,-.10601,0,-.27589,-.2311,-.75018,1.84759,0,.12137,0,0,0,1,0],Polaroid:[1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0],Sepia:[.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0],BlackWhite:[1.5,1.5,1.5,0,-1,1.5,1.5,1.5,0,-1,1.5,1.5,1.5,0,-1,0,0,0,1,0]};for(var o in i)n[o]=r(n.ColorMatrix,{type:o,matrix:i[o],mainParameter:!1,colorsOnly:!0}),t.Image.filters[o].fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric,n=t.Image.filters,r=t.util.createClass;n.BlendColor=r(n.BaseFilter,{type:"BlendColor",color:"#F95C63",mode:"multiply",alpha:1,fragmentSource:{multiply:"gl_FragColor.rgb *= uColor.rgb;\n",screen:"gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\n",add:"gl_FragColor.rgb += uColor.rgb;\n",diff:"gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\n",subtract:"gl_FragColor.rgb -= uColor.rgb;\n",lighten:"gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\n",darken:"gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\n",exclusion:"gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\n",overlay:"if (uColor.r < 0.5) {\ngl_FragColor.r *= 2.0 * uColor.r;\n} else {\ngl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\n}\nif (uColor.g < 0.5) {\ngl_FragColor.g *= 2.0 * uColor.g;\n} else {\ngl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\n}\nif (uColor.b < 0.5) {\ngl_FragColor.b *= 2.0 * uColor.b;\n} else {\ngl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\n}\n",tint:"gl_FragColor.rgb *= (1.0 - uColor.a);\ngl_FragColor.rgb += uColor.rgb;\n"},buildSource:function(e){return"precision highp float;\nuniform sampler2D uTexture;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ngl_FragColor = color;\nif (color.a > 0.0) {\n"+this.fragmentSource[e]+"}\n}"},retrieveShader:function(e){var t,n=this.type+"_"+this.mode;return e.programCache.hasOwnProperty(n)||(t=this.buildSource(this.mode),e.programCache[n]=this.createProgram(e.context,t)),e.programCache[n]},applyTo2d:function(e){var n,r,i,o,a,s,l,c=e.imageData.data,u=c.length,d=1-this.alpha;n=(l=new t.Color(this.color).getSource())[0]*this.alpha,r=l[1]*this.alpha,i=l[2]*this.alpha;for(var h=0;h<u;h+=4)switch(o=c[h],a=c[h+1],s=c[h+2],this.mode){case"multiply":c[h]=o*n/255,c[h+1]=a*r/255,c[h+2]=s*i/255;break;case"screen":c[h]=255-(255-o)*(255-n)/255,c[h+1]=255-(255-a)*(255-r)/255,c[h+2]=255-(255-s)*(255-i)/255;break;case"add":c[h]=o+n,c[h+1]=a+r,c[h+2]=s+i;break;case"diff":case"difference":c[h]=Math.abs(o-n),c[h+1]=Math.abs(a-r),c[h+2]=Math.abs(s-i);break;case"subtract":c[h]=o-n,c[h+1]=a-r,c[h+2]=s-i;break;case"darken":c[h]=Math.min(o,n),c[h+1]=Math.min(a,r),c[h+2]=Math.min(s,i);break;case"lighten":c[h]=Math.max(o,n),c[h+1]=Math.max(a,r),c[h+2]=Math.max(s,i);break;case"overlay":c[h]=n<128?2*o*n/255:255-2*(255-o)*(255-n)/255,c[h+1]=r<128?2*a*r/255:255-2*(255-a)*(255-r)/255,c[h+2]=i<128?2*s*i/255:255-2*(255-s)*(255-i)/255;break;case"exclusion":c[h]=n+o-2*n*o/255,c[h+1]=r+a-2*r*a/255,c[h+2]=i+s-2*i*s/255;break;case"tint":c[h]=n+o*d,c[h+1]=r+a*d,c[h+2]=i+s*d}},getUniformLocations:function(e,t){return{uColor:e.getUniformLocation(t,"uColor")}},sendUniformData:function(e,n){var r=new t.Color(this.color).getSource();r[0]=this.alpha*r[0]/255,r[1]=this.alpha*r[1]/255,r[2]=this.alpha*r[2]/255,r[3]=this.alpha,e.uniform4fv(n.uColor,r)},toObject:function(){return{type:this.type,color:this.color,mode:this.mode,alpha:this.alpha}}}),t.Image.filters.BlendColor.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric,n=t.Image.filters,r=t.util.createClass;n.BlendImage=r(n.BaseFilter,{type:"BlendImage",image:null,mode:"multiply",alpha:1,vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nuniform mat3 uTransformMatrix;\nvoid main() {\nvTexCoord = aPosition;\nvTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:{multiply:"precision highp float;\nuniform sampler2D uTexture;\nuniform sampler2D uImage;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec4 color2 = texture2D(uImage, vTexCoord2);\ncolor.rgba *= color2.rgba;\ngl_FragColor = color;\n}",mask:"precision highp float;\nuniform sampler2D uTexture;\nuniform sampler2D uImage;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec4 color2 = texture2D(uImage, vTexCoord2);\ncolor.a = color2.a;\ngl_FragColor = color;\n}"},retrieveShader:function(e){var t=this.type+"_"+this.mode,n=this.fragmentSource[this.mode];return e.programCache.hasOwnProperty(t)||(e.programCache[t]=this.createProgram(e.context,n)),e.programCache[t]},applyToWebGL:function(e){var t=e.context,n=this.createTexture(e.filterBackend,this.image);this.bindAdditionalTexture(t,n,t.TEXTURE1),this.callSuper("applyToWebGL",e),this.unbindAdditionalTexture(t,t.TEXTURE1)},createTexture:function(e,t){return e.getCachedTexture(t.cacheKey,t._element)},calculateMatrix:function(){var e=this.image,t=e._element.width,n=e._element.height;return[1/e.scaleX,0,0,0,1/e.scaleY,0,-e.left/t,-e.top/n,1]},applyTo2d:function(e){var n,r,i,o,a,s,l,c,u,d,h,p=e.imageData,f=e.filterBackend.resources,m=p.data,g=m.length,v=p.width,y=p.height,b=this.image;f.blendImage||(f.blendImage=t.util.createCanvasElement()),d=(u=f.blendImage).getContext("2d"),u.width!==v||u.height!==y?(u.width=v,u.height=y):d.clearRect(0,0,v,y),d.setTransform(b.scaleX,0,0,b.scaleY,b.left,b.top),d.drawImage(b._element,0,0,v,y),h=d.getImageData(0,0,v,y).data;for(var x=0;x<g;x+=4)switch(a=m[x],s=m[x+1],l=m[x+2],c=m[x+3],n=h[x],r=h[x+1],i=h[x+2],o=h[x+3],this.mode){case"multiply":m[x]=a*n/255,m[x+1]=s*r/255,m[x+2]=l*i/255,m[x+3]=c*o/255;break;case"mask":m[x+3]=o}},getUniformLocations:function(e,t){return{uTransformMatrix:e.getUniformLocation(t,"uTransformMatrix"),uImage:e.getUniformLocation(t,"uImage")}},sendUniformData:function(e,t){var n=this.calculateMatrix();e.uniform1i(t.uImage,1),e.uniformMatrix3fv(t.uTransformMatrix,!1,n)},toObject:function(){return{type:this.type,image:this.image&&this.image.toObject(),mode:this.mode,alpha:this.alpha}}}),t.Image.filters.BlendImage.fromObject=function(e,n){t.Image.fromObject(e.image,(function(r){var i=t.util.object.clone(e);i.image=r,n(new t.Image.filters.BlendImage(i))}))}}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.pow,r=Math.floor,i=Math.sqrt,o=Math.abs,a=Math.round,s=Math.sin,l=Math.ceil,c=t.Image.filters,u=t.util.createClass;c.Resize=u(c.BaseFilter,{type:"Resize",resizeType:"hermite",scaleX:1,scaleY:1,lanczosLobes:3,getUniformLocations:function(e,t){return{uDelta:e.getUniformLocation(t,"uDelta"),uTaps:e.getUniformLocation(t,"uTaps")}},sendUniformData:function(e,t){e.uniform2fv(t.uDelta,this.horizontal?[1/this.width,0]:[0,1/this.height]),e.uniform1fv(t.uTaps,this.taps)},retrieveShader:function(e){var t=this.getFilterWindow(),n=this.type+"_"+t;if(!e.programCache.hasOwnProperty(n)){var r=this.generateShader(t);e.programCache[n]=this.createProgram(e.context,r)}return e.programCache[n]},getFilterWindow:function(){var e=this.tempScale;return Math.ceil(this.lanczosLobes/e)},getTaps:function(){for(var e=this.lanczosCreate(this.lanczosLobes),t=this.tempScale,n=this.getFilterWindow(),r=new Array(n),i=1;i<=n;i++)r[i-1]=e(i*t);return r},generateShader:function(e){for(var t=new Array(e),n=this.fragmentSourceTOP,r=1;r<=e;r++)t[r-1]=r+".0 * uDelta";return n+="uniform float uTaps["+e+"];\n",n+="void main() {\n",n+=" vec4 color = texture2D(uTexture, vTexCoord);\n",n+=" float sum = 1.0;\n",t.forEach((function(e,t){n+=" color += texture2D(uTexture, vTexCoord + "+e+") * uTaps["+t+"];\n",n+=" color += texture2D(uTexture, vTexCoord - "+e+") * uTaps["+t+"];\n",n+=" sum += 2.0 * uTaps["+t+"];\n"})),n+=" gl_FragColor = color / sum;\n",n+="}"},fragmentSourceTOP:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec2 uDelta;\nvarying vec2 vTexCoord;\n",applyTo:function(e){e.webgl?(e.passes++,this.width=e.sourceWidth,this.horizontal=!0,this.dW=Math.round(this.width*this.scaleX),this.dH=e.sourceHeight,this.tempScale=this.dW/this.width,this.taps=this.getTaps(),e.destinationWidth=this.dW,this._setupFrameBuffer(e),this.applyToWebGL(e),this._swapTextures(e),e.sourceWidth=e.destinationWidth,this.height=e.sourceHeight,this.horizontal=!1,this.dH=Math.round(this.height*this.scaleY),this.tempScale=this.dH/this.height,this.taps=this.getTaps(),e.destinationHeight=this.dH,this._setupFrameBuffer(e),this.applyToWebGL(e),this._swapTextures(e),e.sourceHeight=e.destinationHeight):this.applyTo2d(e)},isNeutralState:function(){return 1===this.scaleX&&1===this.scaleY},lanczosCreate:function(e){return function(t){if(t>=e||t<=-e)return 0;if(t<1.1920929e-7&&t>-1.1920929e-7)return 1;var n=(t*=Math.PI)/e;return s(t)/t*s(n)/n}},applyTo2d:function(e){var t=e.imageData,n=this.scaleX,r=this.scaleY;this.rcpScaleX=1/n,this.rcpScaleY=1/r;var i,o=t.width,s=t.height,l=a(o*n),c=a(s*r);"sliceHack"===this.resizeType?i=this.sliceByTwo(e,o,s,l,c):"hermite"===this.resizeType?i=this.hermiteFastResize(e,o,s,l,c):"bilinear"===this.resizeType?i=this.bilinearFiltering(e,o,s,l,c):"lanczos"===this.resizeType&&(i=this.lanczosResize(e,o,s,l,c)),e.imageData=i},sliceByTwo:function(e,n,i,o,a){var s,l,c=e.imageData,u=.5,d=!1,h=!1,p=n*u,f=i*u,m=t.filterBackend.resources,g=0,v=0,y=n,b=0;for(m.sliceByTwo||(m.sliceByTwo=document.createElement("canvas")),((s=m.sliceByTwo).width<1.5*n||s.height<i)&&(s.width=1.5*n,s.height=i),(l=s.getContext("2d")).clearRect(0,0,1.5*n,i),l.putImageData(c,0,0),o=r(o),a=r(a);!d||!h;)n=p,i=f,o<r(p*u)?p=r(p*u):(p=o,d=!0),a<r(f*u)?f=r(f*u):(f=a,h=!0),l.drawImage(s,g,v,n,i,y,b,p,f),g=y,v=b,b+=f;return l.getImageData(g,v,o,a)},lanczosResize:function(e,t,a,s,c){var u=e.imageData.data,d=e.ctx.createImageData(s,c),h=d.data,p=this.lanczosCreate(this.lanczosLobes),f=this.rcpScaleX,m=this.rcpScaleY,g=2/this.rcpScaleX,v=2/this.rcpScaleY,y=l(f*this.lanczosLobes/2),b=l(m*this.lanczosLobes/2),x={},w={},S={};return function e(l){var _,C,E,T,O,N,k,j,I,P,D;for(w.x=(l+.5)*f,S.x=r(w.x),_=0;_<c;_++){for(w.y=(_+.5)*m,S.y=r(w.y),O=0,N=0,k=0,j=0,I=0,C=S.x-y;C<=S.x+y;C++)if(!(C<0||C>=t)){P=r(1e3*o(C-w.x)),x[P]||(x[P]={});for(var A=S.y-b;A<=S.y+b;A++)A<0||A>=a||(D=r(1e3*o(A-w.y)),x[P][D]||(x[P][D]=p(i(n(P*g,2)+n(D*v,2))/1e3)),(E=x[P][D])>0&&(O+=E,N+=E*u[T=4*(A*t+C)],k+=E*u[T+1],j+=E*u[T+2],I+=E*u[T+3]))}h[T=4*(_*s+l)]=N/O,h[T+1]=k/O,h[T+2]=j/O,h[T+3]=I/O}return++l<s?e(l):d}(0)},bilinearFiltering:function(e,t,n,i,o){var a,s,l,c,u,d,h,p,f,m=0,g=this.rcpScaleX,v=this.rcpScaleY,y=4*(t-1),b=e.imageData.data,x=e.ctx.createImageData(i,o),w=x.data;for(l=0;l<o;l++)for(c=0;c<i;c++)for(u=g*c-(a=r(g*c)),d=v*l-(s=r(v*l)),f=4*(s*t+a),h=0;h<4;h++)p=b[f+h]*(1-u)*(1-d)+b[f+4+h]*u*(1-d)+b[f+y+h]*d*(1-u)+b[f+y+4+h]*u*d,w[m++]=p;return x},hermiteFastResize:function(e,t,n,a,s){for(var c=this.rcpScaleX,u=this.rcpScaleY,d=l(c/2),h=l(u/2),p=e.imageData.data,f=e.ctx.createImageData(a,s),m=f.data,g=0;g<s;g++)for(var v=0;v<a;v++){for(var y=4*(v+g*a),b=0,x=0,w=0,S=0,_=0,C=0,E=0,T=(g+.5)*u,O=r(g*u);O<(g+1)*u;O++)for(var N=o(T-(O+.5))/h,k=(v+.5)*c,j=N*N,I=r(v*c);I<(v+1)*c;I++){var P=o(k-(I+.5))/d,D=i(j+P*P);D>1&&D<-1||(b=2*D*D*D-3*D*D+1)>0&&(E+=b*p[(P=4*(I+O*t))+3],w+=b,p[P+3]<255&&(b=b*p[P+3]/250),S+=b*p[P],_+=b*p[P+1],C+=b*p[P+2],x+=b)}m[y]=S/x,m[y+1]=_/x,m[y+2]=C/x,m[y+3]=E/w}return f},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),t.Image.filters.Resize.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.Contrast=r(n.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(e){if(0!==this.contrast){var t,n=e.imageData.data,r=n.length,i=Math.floor(255*this.contrast),o=259*(i+255)/(255*(259-i));for(t=0;t<r;t+=4)n[t]=o*(n[t]-128)+128,n[t+1]=o*(n[t+1]-128)+128,n[t+2]=o*(n[t+2]-128)+128}},getUniformLocations:function(e,t){return{uContrast:e.getUniformLocation(t,"uContrast")}},sendUniformData:function(e,t){e.uniform1f(t.uContrast,this.contrast)}}),t.Image.filters.Contrast.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.Saturation=r(n.BaseFilter,{type:"Saturation",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uSaturation;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat rgMax = max(color.r, color.g);\nfloat rgbMax = max(rgMax, color.b);\ncolor.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\ncolor.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\ncolor.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\ngl_FragColor = color;\n}",saturation:0,mainParameter:"saturation",applyTo2d:function(e){if(0!==this.saturation){var t,n,r=e.imageData.data,i=r.length,o=-this.saturation;for(t=0;t<i;t+=4)n=Math.max(r[t],r[t+1],r[t+2]),r[t]+=n!==r[t]?(n-r[t])*o:0,r[t+1]+=n!==r[t+1]?(n-r[t+1])*o:0,r[t+2]+=n!==r[t+2]?(n-r[t+2])*o:0}},getUniformLocations:function(e,t){return{uSaturation:e.getUniformLocation(t,"uSaturation")}},sendUniformData:function(e,t){e.uniform1f(t.uSaturation,-this.saturation)}}),t.Image.filters.Saturation.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.Vibrance=r(n.BaseFilter,{type:"Vibrance",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uVibrance;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat max = max(color.r, max(color.g, color.b));\nfloat avg = (color.r + color.g + color.b) / 3.0;\nfloat amt = (abs(max - avg) * 2.0) * uVibrance;\ncolor.r += max != color.r ? (max - color.r) * amt : 0.00;\ncolor.g += max != color.g ? (max - color.g) * amt : 0.00;\ncolor.b += max != color.b ? (max - color.b) * amt : 0.00;\ngl_FragColor = color;\n}",vibrance:0,mainParameter:"vibrance",applyTo2d:function(e){if(0!==this.vibrance){var t,n,r,i,o=e.imageData.data,a=o.length,s=-this.vibrance;for(t=0;t<a;t+=4)n=Math.max(o[t],o[t+1],o[t+2]),r=(o[t]+o[t+1]+o[t+2])/3,i=2*Math.abs(n-r)/255*s,o[t]+=n!==o[t]?(n-o[t])*i:0,o[t+1]+=n!==o[t+1]?(n-o[t+1])*i:0,o[t+2]+=n!==o[t+2]?(n-o[t+2])*i:0}},getUniformLocations:function(e,t){return{uVibrance:e.getUniformLocation(t,"uVibrance")}},sendUniformData:function(e,t){e.uniform1f(t.uVibrance,-this.vibrance)}}),t.Image.filters.Vibrance.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.Blur=r(n.BaseFilter,{type:"Blur",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec2 uDelta;\nvarying vec2 vTexCoord;\nconst float nSamples = 15.0;\nvec3 v3offset = vec3(12.9898, 78.233, 151.7182);\nfloat random(vec3 scale) {\nreturn fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\n}\nvoid main() {\nvec4 color = vec4(0.0);\nfloat total = 0.0;\nfloat offset = random(v3offset);\nfor (float t = -nSamples; t <= nSamples; t++) {\nfloat percent = (t + offset - 0.5) / nSamples;\nfloat weight = 1.0 - abs(percent);\ncolor += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\ntotal += weight;\n}\ngl_FragColor = color / total;\n}",blur:0,mainParameter:"blur",applyTo:function(e){e.webgl?(this.aspectRatio=e.sourceWidth/e.sourceHeight,e.passes++,this._setupFrameBuffer(e),this.horizontal=!0,this.applyToWebGL(e),this._swapTextures(e),this._setupFrameBuffer(e),this.horizontal=!1,this.applyToWebGL(e),this._swapTextures(e)):this.applyTo2d(e)},applyTo2d:function(e){e.imageData=this.simpleBlur(e)},simpleBlur:function(e){var n,r,i=e.filterBackend.resources,o=e.imageData.width,a=e.imageData.height;i.blurLayer1||(i.blurLayer1=t.util.createCanvasElement(),i.blurLayer2=t.util.createCanvasElement()),n=i.blurLayer1,r=i.blurLayer2,n.width===o&&n.height===a||(r.width=n.width=o,r.height=n.height=a);var s,l,c,u,d=n.getContext("2d"),h=r.getContext("2d"),p=15,f=.06*this.blur*.5;for(d.putImageData(e.imageData,0,0),h.clearRect(0,0,o,a),u=-15;u<=p;u++)c=f*(l=u/p)*o+(s=(Math.random()-.5)/4),h.globalAlpha=1-Math.abs(l),h.drawImage(n,c,s),d.drawImage(r,0,0),h.globalAlpha=1,h.clearRect(0,0,r.width,r.height);for(u=-15;u<=p;u++)c=f*(l=u/p)*a+(s=(Math.random()-.5)/4),h.globalAlpha=1-Math.abs(l),h.drawImage(n,s,c),d.drawImage(r,0,0),h.globalAlpha=1,h.clearRect(0,0,r.width,r.height);e.ctx.drawImage(n,0,0);var m=e.ctx.getImageData(0,0,n.width,n.height);return d.globalAlpha=1,d.clearRect(0,0,n.width,n.height),m},getUniformLocations:function(e,t){return{delta:e.getUniformLocation(t,"uDelta")}},sendUniformData:function(e,t){var n=this.chooseRightDelta();e.uniform2fv(t.delta,n)},chooseRightDelta:function(){var e,t=1,n=[0,0];return this.horizontal?this.aspectRatio>1&&(t=1/this.aspectRatio):this.aspectRatio<1&&(t=this.aspectRatio),e=t*this.blur*.12,this.horizontal?n[0]=e:n[1]=e,n}}),n.Blur.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.Gamma=r(n.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(e){this.gamma=[1,1,1],n.BaseFilter.prototype.initialize.call(this,e)},applyTo2d:function(e){var t,n=e.imageData.data,r=this.gamma,i=n.length,o=1/r[0],a=1/r[1],s=1/r[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),t=0,i=256;t<i;t++)this.rVals[t]=255*Math.pow(t/255,o),this.gVals[t]=255*Math.pow(t/255,a),this.bVals[t]=255*Math.pow(t/255,s);for(t=0,i=n.length;t<i;t+=4)n[t]=this.rVals[n[t]],n[t+1]=this.gVals[n[t+1]],n[t+2]=this.bVals[n[t+2]]},getUniformLocations:function(e,t){return{uGamma:e.getUniformLocation(t,"uGamma")}},sendUniformData:function(e,t){e.uniform3fv(t.uGamma,this.gamma)}}),t.Image.filters.Gamma.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.Composed=r(n.BaseFilter,{type:"Composed",subFilters:[],initialize:function(e){this.callSuper("initialize",e),this.subFilters=this.subFilters.slice(0)},applyTo:function(e){e.passes+=this.subFilters.length-1,this.subFilters.forEach((function(t){t.applyTo(e)}))},toObject:function(){return t.util.object.extend(this.callSuper("toObject"),{subFilters:this.subFilters.map((function(e){return e.toObject()}))})},isNeutralState:function(){return!this.subFilters.some((function(e){return!e.isNeutralState()}))}}),t.Image.filters.Composed.fromObject=function(e,n){var r=(e.subFilters||[]).map((function(e){return new t.Image.filters[e.type](e)})),i=new t.Image.filters.Composed({subFilters:r});return n&&n(i),i}}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.Image.filters,r=t.util.createClass;n.HueRotation=r(n.ColorMatrix,{type:"HueRotation",rotation:0,mainParameter:"rotation",calculateMatrix:function(){var e=this.rotation*Math.PI,n=t.util.cos(e),r=t.util.sin(e),i=1/3,o=Math.sqrt(i)*r,a=1-n;this.matrix=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],this.matrix[0]=n+a/3,this.matrix[1]=i*a-o,this.matrix[2]=i*a+o,this.matrix[5]=i*a+o,this.matrix[6]=n+i*a,this.matrix[7]=i*a-o,this.matrix[10]=i*a-o,this.matrix[11]=i*a+o,this.matrix[12]=n+i*a},isNeutralState:function(e){return this.calculateMatrix(),n.BaseFilter.prototype.isNeutralState.call(this,e)},applyTo:function(e){this.calculateMatrix(),n.BaseFilter.prototype.applyTo.call(this,e)}}),t.Image.filters.HueRotation.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.clone;if(t.Text)t.warn("fabric.Text is already defined");else{var r="fontFamily fontWeight fontSize text underline overline linethrough textAlign fontStyle lineHeight textBackgroundColor charSpacing styles direction path pathStartOffset pathSide pathAlign".split(" ");t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:["fontSize","fontWeight","fontFamily","fontStyle","lineHeight","text","charSpacing","textAlign","styles","path","pathStartOffset","pathSide","pathAlign"],_reNewline:/\r?\n/,_reSpacesAndTabs:/[ \t\r]/g,_reSpaceAndTab:/[ \t\r]/,_reWords:/\S+/g,type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",underline:!1,overline:!1,linethrough:!1,textAlign:"left",fontStyle:"normal",lineHeight:1.16,superscript:{size:.6,baseline:-.35},subscript:{size:.6,baseline:.11},textBackgroundColor:"",stateProperties:t.Object.prototype.stateProperties.concat(r),cacheProperties:t.Object.prototype.cacheProperties.concat(r),stroke:null,shadow:null,path:null,pathStartOffset:0,pathSide:"left",pathAlign:"baseline",_fontSizeFraction:.222,offsets:{underline:.1,linethrough:-.315,overline:-.88},_fontSizeMult:1.13,charSpacing:0,styles:null,_measuringContext:null,deltaY:0,direction:"ltr",_styleProperties:["stroke","strokeWidth","fill","fontFamily","fontSize","fontWeight","fontStyle","underline","overline","linethrough","deltaY","textBackgroundColor"],__charBounds:[],CACHE_FONT_SIZE:400,MIN_TEXT_WIDTH:2,initialize:function(e,t){this.styles=t&&t.styles||{},this.text=e,this.__skipDimension=!0,this.callSuper("initialize",t),this.path&&this.setPathInfo(),this.__skipDimension=!1,this.initDimensions(),this.setCoords(),this.setupState({propertySet:"_dimensionAffectingProps"})},setPathInfo:function(){var e=this.path;e&&(e.segmentsInfo=t.util.getPathSegmentsInfo(e.path))},getMeasuringContext:function(){return t._measuringContext||(t._measuringContext=this.canvas&&this.canvas.contextCache||t.util.createCanvasElement().getContext("2d")),t._measuringContext},_splitText:function(){var e=this._splitTextIntoLines(this.text);return this.textLines=e.lines,this._textLines=e.graphemeLines,this._unwrappedTextLines=e._unwrappedLines,this._text=e.graphemeText,e},initDimensions:function(){this.__skipDimension||(this._splitText(),this._clearCache(),this.path?(this.width=this.path.width,this.height=this.path.height):(this.width=this.calcTextWidth()||this.cursorWidth||this.MIN_TEXT_WIDTH,this.height=this.calcTextHeight()),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.saveState({propertySet:"_dimensionAffectingProps"}))},enlargeSpaces:function(){for(var e,t,n,r,i,o,a,s=0,l=this._textLines.length;s<l;s++)if(("justify"===this.textAlign||s!==l-1&&!this.isEndOfWrapping(s))&&(r=0,i=this._textLines[s],(t=this.getLineWidth(s))<this.width&&(a=this.textLines[s].match(this._reSpacesAndTabs)))){n=a.length,e=(this.width-t)/n;for(var c=0,u=i.length;c<=u;c++)o=this.__charBounds[s][c],this._reSpaceAndTab.test(i[c])?(o.width+=e,o.kernedWidth+=e,o.left+=r,r+=e):o.left+=r}},isEndOfWrapping:function(e){return e===this._textLines.length-1},missingNewlineOffset:function(){return 1},toString:function(){return"#<fabric.Text ("+this.complexity()+'): { "text": "'+this.text+'", "fontFamily": "'+this.fontFamily+'" }>'},_getCacheCanvasDimensions:function(){var e=this.callSuper("_getCacheCanvasDimensions"),t=this.fontSize;return e.width+=t*e.zoomX,e.height+=t*e.zoomY,e},_render:function(e){var t=this.path;t&&!t.isNotVisible()&&t._render(e),this._setTextStyles(e),this._renderTextLinesBackground(e),this._renderTextDecoration(e,"underline"),this._renderText(e),this._renderTextDecoration(e,"overline"),this._renderTextDecoration(e,"linethrough")},_renderText:function(e){"stroke"===this.paintFirst?(this._renderTextStroke(e),this._renderTextFill(e)):(this._renderTextFill(e),this._renderTextStroke(e))},_setTextStyles:function(e,t,n){if(e.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":e.textBaseline="middle";break;case"ascender":e.textBaseline="top";break;case"descender":e.textBaseline="bottom"}e.font=this._getFontDeclaration(t,n)},calcTextWidth:function(){for(var e=this.getLineWidth(0),t=1,n=this._textLines.length;t<n;t++){var r=this.getLineWidth(t);r>e&&(e=r)}return e},_renderTextLine:function(e,t,n,r,i,o){this._renderChars(e,t,n,r,i,o)},_renderTextLinesBackground:function(e){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var t,n,r,i,o,a,s,l=e.fillStyle,c=this._getLeftOffset(),u=this._getTopOffset(),d=0,h=0,p=this.path,f=0,m=this._textLines.length;f<m;f++)if(t=this.getHeightOfLine(f),this.textBackgroundColor||this.styleHas("textBackgroundColor",f)){r=this._textLines[f],n=this._getLineLeftOffset(f),h=0,d=0,i=this.getValueOfPropertyAt(f,0,"textBackgroundColor");for(var g=0,v=r.length;g<v;g++)o=this.__charBounds[f][g],a=this.getValueOfPropertyAt(f,g,"textBackgroundColor"),p?(e.save(),e.translate(o.renderLeft,o.renderTop),e.rotate(o.angle),e.fillStyle=a,a&&e.fillRect(-o.width/2,-t/this.lineHeight*(1-this._fontSizeFraction),o.width,t/this.lineHeight),e.restore()):a!==i?(s=c+n+d,"rtl"===this.direction&&(s=this.width-s-h),e.fillStyle=i,i&&e.fillRect(s,u,h,t/this.lineHeight),d=o.left,h=o.width,i=a):h+=o.kernedWidth;a&&!p&&(s=c+n+d,"rtl"===this.direction&&(s=this.width-s-h),e.fillStyle=a,e.fillRect(s,u,h,t/this.lineHeight)),u+=t}else u+=t;e.fillStyle=l,this._removeShadow(e)}},getFontCache:function(e){var n=e.fontFamily.toLowerCase();t.charWidthsCache[n]||(t.charWidthsCache[n]={});var r=t.charWidthsCache[n],i=e.fontStyle.toLowerCase()+"_"+(e.fontWeight+"").toLowerCase();return r[i]||(r[i]={}),r[i]},_measureChar:function(e,t,n,r){var i,o,a,s,l=this.getFontCache(t),c=n+e,u=this._getFontDeclaration(t)===this._getFontDeclaration(r),d=t.fontSize/this.CACHE_FONT_SIZE;if(n&&void 0!==l[n]&&(a=l[n]),void 0!==l[e]&&(s=i=l[e]),u&&void 0!==l[c]&&(s=(o=l[c])-a),void 0===i||void 0===a||void 0===o){var h=this.getMeasuringContext();this._setTextStyles(h,t,!0)}return void 0===i&&(s=i=h.measureText(e).width,l[e]=i),void 0===a&&u&&n&&(a=h.measureText(n).width,l[n]=a),u&&void 0===o&&(o=h.measureText(c).width,l[c]=o,s=o-a),{width:i*d,kernedWidth:s*d}},getHeightOfChar:function(e,t){return this.getValueOfPropertyAt(e,t,"fontSize")},measureLine:function(e){var t=this._measureLine(e);return 0!==this.charSpacing&&(t.width-=this._getWidthOfCharSpacing()),t.width<0&&(t.width=0),t},_measureLine:function(e){var n,r,i,o,a,s,l=0,c=this._textLines[e],u=new Array(c.length),d=0,h=this.path,p="right"===this.pathSide;for(this.__charBounds[e]=u,n=0;n<c.length;n++)r=c[n],o=this._getGraphemeBox(r,e,n,i),u[n]=o,l+=o.kernedWidth,i=r;if(u[n]={left:o?o.left+o.width:0,width:0,kernedWidth:0,height:this.fontSize},h){switch(s=h.segmentsInfo[h.segmentsInfo.length-1].length,(a=t.util.getPointOnPath(h.path,0,h.segmentsInfo)).x+=h.pathOffset.x,a.y+=h.pathOffset.y,this.textAlign){case"left":d=p?s-l:0;break;case"center":d=(s-l)/2;break;case"right":d=p?0:s-l}for(d+=this.pathStartOffset*(p?-1:1),n=p?c.length-1:0;p?n>=0:n<c.length;p?n--:n++)o=u[n],d>s?d%=s:d<0&&(d+=s),this._setGraphemeOnPath(d,o,a),d+=o.kernedWidth}return{width:l,numOfSpaces:0}},_setGraphemeOnPath:function(e,n,r){var i=e+n.kernedWidth/2,o=this.path,a=t.util.getPointOnPath(o.path,i,o.segmentsInfo);n.renderLeft=a.x-r.x,n.renderTop=a.y-r.y,n.angle=a.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(e,t,n,r,i){var o,a=this.getCompleteStyleDeclaration(t,n),s=r?this.getCompleteStyleDeclaration(t,n-1):{},l=this._measureChar(e,a,r,s),c=l.kernedWidth,u=l.width;0!==this.charSpacing&&(u+=o=this._getWidthOfCharSpacing(),c+=o);var d={width:u,left:0,height:a.fontSize,kernedWidth:c,deltaY:a.deltaY};if(n>0&&!i){var h=this.__charBounds[t][n-1];d.left=h.left+h.width+l.kernedWidth-l.width}return d},getHeightOfLine:function(e){if(this.__lineHeights[e])return this.__lineHeights[e];for(var t=this._textLines[e],n=this.getHeightOfChar(e,0),r=1,i=t.length;r<i;r++)n=Math.max(this.getHeightOfChar(e,r),n);return this.__lineHeights[e]=n*this.lineHeight*this._fontSizeMult},calcTextHeight:function(){for(var e,t=0,n=0,r=this._textLines.length;n<r;n++)e=this.getHeightOfLine(n),t+=n===r-1?e/this.lineHeight:e;return t},_getLeftOffset:function(){return"ltr"===this.direction?-this.width/2:this.width/2},_getTopOffset:function(){return-this.height/2},_renderTextCommon:function(e,t){e.save();for(var n=0,r=this._getLeftOffset(),i=this._getTopOffset(),o=0,a=this._textLines.length;o<a;o++){var s=this.getHeightOfLine(o),l=s/this.lineHeight,c=this._getLineLeftOffset(o);this._renderTextLine(t,e,this._textLines[o],r+c,i+n+l,o),n+=s}e.restore()},_renderTextFill:function(e){(this.fill||this.styleHas("fill"))&&this._renderTextCommon(e,"fillText")},_renderTextStroke:function(e){(this.stroke&&0!==this.strokeWidth||!this.isEmptyStyles())&&(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this._setLineDash(e,this.strokeDashArray),e.beginPath(),this._renderTextCommon(e,"strokeText"),e.closePath(),e.restore())},_renderChars:function(e,n,r,i,o,a){var s,l,c,u,d,h=this.getHeightOfLine(a),p=-1!==this.textAlign.indexOf("justify"),f="",m=0,g=this.path,v=!p&&0===this.charSpacing&&this.isEmptyStyles(a)&&!g,y="ltr"===this.direction,b="ltr"===this.direction?1:-1,x=n.canvas.getAttribute("dir");if(n.save(),x!==this.direction&&(n.canvas.setAttribute("dir",y?"ltr":"rtl"),n.direction=y?"ltr":"rtl",n.textAlign=y?"left":"right"),o-=h*this._fontSizeFraction/this.lineHeight,v)return this._renderChar(e,n,a,0,r.join(""),i,o,h),void n.restore();for(var w=0,S=r.length-1;w<=S;w++)u=w===S||this.charSpacing||g,f+=r[w],c=this.__charBounds[a][w],0===m?(i+=b*(c.kernedWidth-c.width),m+=c.width):m+=c.kernedWidth,p&&!u&&this._reSpaceAndTab.test(r[w])&&(u=!0),u||(s=s||this.getCompleteStyleDeclaration(a,w),l=this.getCompleteStyleDeclaration(a,w+1),u=t.util.hasStyleChanged(s,l,!1)),u&&(g?(n.save(),n.translate(c.renderLeft,c.renderTop),n.rotate(c.angle),this._renderChar(e,n,a,w,f,-m/2,0,h),n.restore()):(d=i,this._renderChar(e,n,a,w,f,d,o,h)),f="",s=l,i+=b*m,m=0);n.restore()},_applyPatternGradientTransformText:function(e){var n,r=t.util.createCanvasElement(),i=this.width+this.strokeWidth,o=this.height+this.strokeWidth;return r.width=i,r.height=o,(n=r.getContext("2d")).beginPath(),n.moveTo(0,0),n.lineTo(i,0),n.lineTo(i,o),n.lineTo(0,o),n.closePath(),n.translate(i/2,o/2),n.fillStyle=e.toLive(n),this._applyPatternGradientTransform(n,e),n.fill(),n.createPattern(r,"no-repeat")},handleFiller:function(e,t,n){var r,i;return n.toLive?"percentage"===n.gradientUnits||n.gradientTransform||n.patternTransform?(r=-this.width/2,i=-this.height/2,e.translate(r,i),e[t]=this._applyPatternGradientTransformText(n),{offsetX:r,offsetY:i}):(e[t]=n.toLive(e,this),this._applyPatternGradientTransform(e,n)):(e[t]=n,{offsetX:0,offsetY:0})},_setStrokeStyles:function(e,t){return e.lineWidth=t.strokeWidth,e.lineCap=this.strokeLineCap,e.lineDashOffset=this.strokeDashOffset,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,this.handleFiller(e,"strokeStyle",t.stroke)},_setFillStyles:function(e,t){return this.handleFiller(e,"fillStyle",t.fill)},_renderChar:function(e,t,n,r,i,o,a){var s,l,c=this._getStyleDeclaration(n,r),u=this.getCompleteStyleDeclaration(n,r),d="fillText"===e&&u.fill,h="strokeText"===e&&u.stroke&&u.strokeWidth;(h||d)&&(t.save(),d&&(s=this._setFillStyles(t,u)),h&&(l=this._setStrokeStyles(t,u)),t.font=this._getFontDeclaration(u),c&&c.textBackgroundColor&&this._removeShadow(t),c&&c.deltaY&&(a+=c.deltaY),d&&t.fillText(i,o-s.offsetX,a-s.offsetY),h&&t.strokeText(i,o-l.offsetX,a-l.offsetY),t.restore())},setSuperscript:function(e,t){return this._setScript(e,t,this.superscript)},setSubscript:function(e,t){return this._setScript(e,t,this.subscript)},_setScript:function(e,t,n){var r=this.get2DCursorLocation(e,!0),i=this.getValueOfPropertyAt(r.lineIndex,r.charIndex,"fontSize"),o=this.getValueOfPropertyAt(r.lineIndex,r.charIndex,"deltaY"),a={fontSize:i*n.size,deltaY:o+i*n.baseline};return this.setSelectionStyles(a,e,t),this},_getLineLeftOffset:function(e){var t=this.getLineWidth(e),n=this.width-t,r=this.textAlign,i=this.direction,o=0,a=this.isEndOfWrapping(e);return"justify"===r||"justify-center"===r&&!a||"justify-right"===r&&!a||"justify-left"===r&&!a?0:("center"===r&&(o=n/2),"right"===r&&(o=n),"justify-center"===r&&(o=n/2),"justify-right"===r&&(o=n),"rtl"===i&&(o-=n),o)},_clearCache:function(){this.__lineWidths=[],this.__lineHeights=[],this.__charBounds=[]},_shouldClearDimensionCache:function(){var e=this._forceClearCache;return e||(e=this.hasStateChanged("_dimensionAffectingProps")),e&&(this.dirty=!0,this._forceClearCache=!1),e},getLineWidth:function(e){if(void 0!==this.__lineWidths[e])return this.__lineWidths[e];var t=this.measureLine(e).width;return this.__lineWidths[e]=t,t},_getWidthOfCharSpacing:function(){return 0!==this.charSpacing?this.fontSize*this.charSpacing/1e3:0},getValueOfPropertyAt:function(e,t,n){var r=this._getStyleDeclaration(e,t);return r&&"undefined"!==typeof r[n]?r[n]:this[n]},_renderTextDecoration:function(e,t){if(this[t]||this.styleHas(t)){for(var n,r,i,o,a,s,l,c,u,d,h,p,f,m,g,v,y=this._getLeftOffset(),b=this._getTopOffset(),x=this.path,w=this._getWidthOfCharSpacing(),S=this.offsets[t],_=0,C=this._textLines.length;_<C;_++)if(n=this.getHeightOfLine(_),this[t]||this.styleHas(t,_)){l=this._textLines[_],m=n/this.lineHeight,o=this._getLineLeftOffset(_),d=0,h=0,c=this.getValueOfPropertyAt(_,0,t),v=this.getValueOfPropertyAt(_,0,"fill"),u=b+m*(1-this._fontSizeFraction),r=this.getHeightOfChar(_,0),a=this.getValueOfPropertyAt(_,0,"deltaY");for(var E=0,T=l.length;E<T;E++)if(p=this.__charBounds[_][E],f=this.getValueOfPropertyAt(_,E,t),g=this.getValueOfPropertyAt(_,E,"fill"),i=this.getHeightOfChar(_,E),s=this.getValueOfPropertyAt(_,E,"deltaY"),x&&f&&g)e.save(),e.fillStyle=v,e.translate(p.renderLeft,p.renderTop),e.rotate(p.angle),e.fillRect(-p.kernedWidth/2,S*i+s,p.kernedWidth,this.fontSize/15),e.restore();else if((f!==c||g!==v||i!==r||s!==a)&&h>0){var O=y+o+d;"rtl"===this.direction&&(O=this.width-O-h),c&&v&&(e.fillStyle=v,e.fillRect(O,u+S*r+a,h,this.fontSize/15)),d=p.left,h=p.width,c=f,v=g,r=i,a=s}else h+=p.kernedWidth;O=y+o+d;"rtl"===this.direction&&(O=this.width-O-h),e.fillStyle=g,f&&g&&e.fillRect(O,u+S*r+a,h-w,this.fontSize/15),b+=n}else b+=n;this._removeShadow(e)}},_getFontDeclaration:function(e,n){var r=e||this,i=this.fontFamily,o=t.Text.genericFonts.indexOf(i.toLowerCase())>-1,a=void 0===i||i.indexOf("'")>-1||i.indexOf(",")>-1||i.indexOf('"')>-1||o?r.fontFamily:'"'+r.fontFamily+'"';return[t.isLikelyNode?r.fontWeight:r.fontStyle,t.isLikelyNode?r.fontStyle:r.fontWeight,n?this.CACHE_FONT_SIZE+"px":r.fontSize+"px",a].join(" ")},render:function(e){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",e)))},_splitTextIntoLines:function(e){for(var n=e.split(this._reNewline),r=new Array(n.length),i=["\n"],o=[],a=0;a<n.length;a++)r[a]=t.util.string.graphemeSplit(n[a]),o=o.concat(r[a],i);return o.pop(),{_unwrappedLines:r,lines:n,graphemeText:o,graphemeLines:r}},toObject:function(e){var n=r.concat(e),i=this.callSuper("toObject",n);return i.styles=t.util.stylesToArray(this.styles,this.text),i.path&&(i.path=this.path.toObject()),i},set:function(e,t){this.callSuper("set",e,t);var n=!1,r=!1;if("object"===typeof e)for(var i in e)"path"===i&&this.setPathInfo(),n=n||-1!==this._dimensionAffectingProps.indexOf(i),r=r||"path"===i;else n=-1!==this._dimensionAffectingProps.indexOf(e),r="path"===e;return r&&this.setPathInfo(),n&&(this.initDimensions(),this.setCoords()),this},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor".split(" ")),t.Text.DEFAULT_SVG_FONT_SIZE=16,t.Text.fromElement=function(e,r,i){if(!e)return r(null);var o=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES),a=o.textAnchor||"left";if((i=t.util.object.extend(i?n(i):{},o)).top=i.top||0,i.left=i.left||0,o.textDecoration){var s=o.textDecoration;-1!==s.indexOf("underline")&&(i.underline=!0),-1!==s.indexOf("overline")&&(i.overline=!0),-1!==s.indexOf("line-through")&&(i.linethrough=!0),delete i.textDecoration}"dx"in o&&(i.left+=o.dx),"dy"in o&&(i.top+=o.dy),"fontSize"in i||(i.fontSize=t.Text.DEFAULT_SVG_FONT_SIZE);var l="";"textContent"in e?l=e.textContent:"firstChild"in e&&null!==e.firstChild&&"data"in e.firstChild&&null!==e.firstChild.data&&(l=e.firstChild.data),l=l.replace(/^\s+|\s+$|\n+/g,"").replace(/\s+/g," ");var c=i.strokeWidth;i.strokeWidth=0;var u=new t.Text(l,i),d=u.getScaledHeight()/u.height,h=((u.height+u.strokeWidth)*u.lineHeight-u.height)*d,p=u.getScaledHeight()+h,f=0;"center"===a&&(f=u.getScaledWidth()/2),"right"===a&&(f=u.getScaledWidth()),u.set({left:u.left-f,top:u.top-(p-u.fontSize*(.07+u._fontSizeFraction))/u.lineHeight,strokeWidth:"undefined"!==typeof c?c:1}),r(u)},t.Text.fromObject=function(e,r){var i=n(e),o=e.path;return delete i.path,t.Object._fromObject("Text",i,(function(n){n.styles=t.util.stylesFromArray(e.styles,e.text),o?t.Object._fromObject("Path",o,(function(e){n.set("path",e),r(n)}),"path"):r(n)}),"text")},t.Text.genericFonts=["sans-serif","serif","cursive","fantasy","monospace"],t.util.createAccessors&&t.util.createAccessors(t.Text)}}(t),i.util.object.extend(i.Text.prototype,{isEmptyStyles:function(e){if(!this.styles)return!0;if("undefined"!==typeof e&&!this.styles[e])return!0;var t="undefined"===typeof e?this.styles:{line:this.styles[e]};for(var n in t)for(var r in t[n])for(var i in t[n][r])return!1;return!0},styleHas:function(e,t){if(!this.styles||!e||""===e)return!1;if("undefined"!==typeof t&&!this.styles[t])return!1;var n="undefined"===typeof t?this.styles:{0:this.styles[t]};for(var r in n)for(var i in n[r])if("undefined"!==typeof n[r][i][e])return!0;return!1},cleanStyle:function(e){if(!this.styles||!e||""===e)return!1;var t,n,r=this.styles,i=0,o=!0,a=0;for(var s in r){for(var l in t=0,r[s]){var c;i++,(c=r[s][l]).hasOwnProperty(e)?(n?c[e]!==n&&(o=!1):n=c[e],c[e]===this[e]&&delete c[e]):o=!1,0!==Object.keys(c).length?t++:delete r[s][l]}0===t&&delete r[s]}for(var u=0;u<this._textLines.length;u++)a+=this._textLines[u].length;o&&i===a&&(this[e]=n,this.removeStyle(e))},removeStyle:function(e){if(this.styles&&e&&""!==e){var t,n,r,i=this.styles;for(n in i){for(r in t=i[n])delete t[r][e],0===Object.keys(t[r]).length&&delete t[r];0===Object.keys(t).length&&delete i[n]}}},_extendStyles:function(e,t){var n=this.get2DCursorLocation(e);this._getLineStyle(n.lineIndex)||this._setLineStyle(n.lineIndex),this._getStyleDeclaration(n.lineIndex,n.charIndex)||this._setStyleDeclaration(n.lineIndex,n.charIndex,{}),i.util.object.extend(this._getStyleDeclaration(n.lineIndex,n.charIndex),t)},get2DCursorLocation:function(e,t){"undefined"===typeof e&&(e=this.selectionStart);for(var n=t?this._unwrappedTextLines:this._textLines,r=n.length,i=0;i<r;i++){if(e<=n[i].length)return{lineIndex:i,charIndex:e};e-=n[i].length+this.missingNewlineOffset(i)}return{lineIndex:i-1,charIndex:n[i-1].length<e?n[i-1].length:e}},getSelectionStyles:function(e,t,n){"undefined"===typeof e&&(e=this.selectionStart||0),"undefined"===typeof t&&(t=this.selectionEnd||e);for(var r=[],i=e;i<t;i++)r.push(this.getStyleAtPosition(i,n));return r},getStyleAtPosition:function(e,t){var n=this.get2DCursorLocation(e);return(t?this.getCompleteStyleDeclaration(n.lineIndex,n.charIndex):this._getStyleDeclaration(n.lineIndex,n.charIndex))||{}},setSelectionStyles:function(e,t,n){"undefined"===typeof t&&(t=this.selectionStart||0),"undefined"===typeof n&&(n=this.selectionEnd||t);for(var r=t;r<n;r++)this._extendStyles(r,e);return this._forceClearCache=!0,this},_getStyleDeclaration:function(e,t){var n=this.styles&&this.styles[e];return n?n[t]:null},getCompleteStyleDeclaration:function(e,t){for(var n,r=this._getStyleDeclaration(e,t)||{},i={},o=0;o<this._styleProperties.length;o++)i[n=this._styleProperties[o]]="undefined"===typeof r[n]?this[n]:r[n];return i},_setStyleDeclaration:function(e,t,n){this.styles[e][t]=n},_deleteStyleDeclaration:function(e,t){delete this.styles[e][t]},_getLineStyle:function(e){return!!this.styles[e]},_setLineStyle:function(e){this.styles[e]={}},_deleteLineStyle:function(e){delete this.styles[e]}}),function(){function e(e){e.textDecoration&&(e.textDecoration.indexOf("underline")>-1&&(e.underline=!0),e.textDecoration.indexOf("line-through")>-1&&(e.linethrough=!0),e.textDecoration.indexOf("overline")>-1&&(e.overline=!0),delete e.textDecoration)}i.IText=i.util.createClass(i.Text,i.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(e,t){this.callSuper("initialize",e,t),this.initBehavior()},setSelectionStart:function(e){e=Math.max(e,0),this._updateAndFire("selectionStart",e)},setSelectionEnd:function(e){e=Math.min(e,this.text.length),this._updateAndFire("selectionEnd",e)},_updateAndFire:function(e,t){this[e]!==t&&(this._fireSelectionChanged(),this[e]=t),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(e){this.clearContextTop(),this.callSuper("render",e),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(e){this.callSuper("_render",e)},clearContextTop:function(e){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this.canvas.contextTop,n=this.canvas.viewportTransform;t.save(),t.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this.transform(t),this._clearTextArea(t),e||t.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this._getCursorBoundaries(),t=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(e,t):this.renderSelection(e,t),t.restore()}},_clearTextArea:function(e){var t=this.width+4,n=this.height+4;e.clearRect(-t/2,-n/2,t,n)},_getCursorBoundaries:function(e){"undefined"===typeof e&&(e=this.selectionStart);var t=this._getLeftOffset(),n=this._getTopOffset(),r=this._getCursorBoundariesOffsets(e);return{left:t,top:n,leftOffset:r.left,topOffset:r.top}},_getCursorBoundariesOffsets:function(e){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var t,n,r,i,o=0,a=0,s=this.get2DCursorLocation(e);r=s.charIndex,n=s.lineIndex;for(var l=0;l<n;l++)o+=this.getHeightOfLine(l);t=this._getLineLeftOffset(n);var c=this.__charBounds[n][r];return c&&(a=c.left),0!==this.charSpacing&&r===this._textLines[n].length&&(a-=this._getWidthOfCharSpacing()),i={top:o,left:t+(a>0?a:0)},"rtl"===this.direction&&(i.left*=-1),this.cursorOffsetCache=i,this.cursorOffsetCache},renderCursor:function(e,t){var n=this.get2DCursorLocation(),r=n.lineIndex,i=n.charIndex>0?n.charIndex-1:0,o=this.getValueOfPropertyAt(r,i,"fontSize"),a=this.scaleX*this.canvas.getZoom(),s=this.cursorWidth/a,l=e.topOffset,c=this.getValueOfPropertyAt(r,i,"deltaY");l+=(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-o*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(e,t),t.fillStyle=this.cursorColor||this.getValueOfPropertyAt(r,i,"fill"),t.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,t.fillRect(e.left+e.leftOffset-s/2,l+e.top+c,s,o)},renderSelection:function(e,t){for(var n=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,r=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,i=-1!==this.textAlign.indexOf("justify"),o=this.get2DCursorLocation(n),a=this.get2DCursorLocation(r),s=o.lineIndex,l=a.lineIndex,c=o.charIndex<0?0:o.charIndex,u=a.charIndex<0?0:a.charIndex,d=s;d<=l;d++){var h,p=this._getLineLeftOffset(d)||0,f=this.getHeightOfLine(d),m=0,g=0;if(d===s&&(m=this.__charBounds[s][c].left),d>=s&&d<l)g=i&&!this.isEndOfWrapping(d)?this.width:this.getLineWidth(d)||5;else if(d===l)if(0===u)g=this.__charBounds[l][u].left;else{var v=this._getWidthOfCharSpacing();g=this.__charBounds[l][u-1].left+this.__charBounds[l][u-1].width-v}h=f,(this.lineHeight<1||d===l&&this.lineHeight>1)&&(f/=this.lineHeight);var y=e.left+p+m,b=g-m,x=f,w=0;this.inCompositionMode?(t.fillStyle=this.compositionColor||"black",x=1,w=f):t.fillStyle=this.selectionColor,"rtl"===this.direction&&(y=this.width-y-b),t.fillRect(y,e.top+e.topOffset+w,b,x),e.topOffset+=h}},getCurrentCharFontSize:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fontSize")},getCurrentCharColor:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fill")},_getCurrentCharIndex:function(){var e=this.get2DCursorLocation(this.selectionStart,!0),t=e.charIndex>0?e.charIndex-1:0;return{l:e.lineIndex,c:t}}}),i.IText.fromObject=function(t,n){var r=i.util.stylesFromArray(t.styles,t.text),o=Object.assign({},t,{styles:r});if(e(o),o.styles)for(var a in o.styles)for(var s in o.styles[a])e(o.styles[a][s]);i.Object._fromObject("IText",o,n,"text")}}(),function(){var e=i.util.object.clone;i.util.object.extend(i.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var e=this;this.on("added",(function(){var t=e.canvas;t&&(t._hasITextHandlers||(t._hasITextHandlers=!0,e._initCanvasHandlers(t)),t._iTextInstances=t._iTextInstances||[],t._iTextInstances.push(e))}))},initRemovedHandler:function(){var e=this;this.on("removed",(function(){var t=e.canvas;t&&(t._iTextInstances=t._iTextInstances||[],i.util.removeFromArray(t._iTextInstances,e),0===t._iTextInstances.length&&(t._hasITextHandlers=!1,e._removeCanvasHandlers(t)))}))},_initCanvasHandlers:function(e){e._mouseUpITextHandler=function(){e._iTextInstances&&e._iTextInstances.forEach((function(e){e.__isMousedown=!1}))},e.on("mouse:up",e._mouseUpITextHandler)},_removeCanvasHandlers:function(e){e.off("mouse:up",e._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(e,t,n,r){var i;return i={isAborted:!1,abort:function(){this.isAborted=!0}},e.animate("_currentCursorOpacity",t,{duration:n,onComplete:function(){i.isAborted||e[r]()},onChange:function(){e.canvas&&e.selectionStart===e.selectionEnd&&e.renderCursorOrSelection()},abort:function(){return i.isAborted}}),i},_onTickComplete:function(){var e=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){e._currentTickCompleteState=e._animateCursor(e,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(e){var t=this,n=e?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){t._tick()}),n)},abortCursorAnimation:function(){var e=this._currentTickState||this._currentTickCompleteState,t=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,e&&t&&t.clearContext(t.contextTop||t.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(e){var t=0,n=e-1;if(this._reSpace.test(this._text[n]))for(;this._reSpace.test(this._text[n]);)t++,n--;for(;/\S/.test(this._text[n])&&n>-1;)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this._text[n]))for(;this._reSpace.test(this._text[n]);)t++,n++;for(;/\S/.test(this._text[n])&&n<this._text.length;)t++,n++;return e+t},findLineBoundaryLeft:function(e){for(var t=0,n=e-1;!/\n/.test(this._text[n])&&n>-1;)t++,n--;return e-t},findLineBoundaryRight:function(e){for(var t=0,n=e;!/\n/.test(this._text[n])&&n<this._text.length;)t++,n++;return e+t},searchWordBoundary:function(e,t){for(var n=this._text,r=this._reSpace.test(n[e])?e-1:e,o=n[r],a=i.reNonWord;!a.test(o)&&r>0&&r<n.length;)o=n[r+=t];return a.test(o)&&(r+=1===t?0:1),r},selectWord:function(e){e=e||this.selectionStart;var t=this.searchWordBoundary(e,-1),n=this.searchWordBoundary(e,1);this.selectionStart=t,this.selectionEnd=n,this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()},selectLine:function(e){e=e||this.selectionStart;var t=this.findLineBoundaryLeft(e),n=this.findLineBoundaryRight(e);return this.selectionStart=t,this.selectionEnd=n,this._fireSelectionChanged(),this._updateTextarea(),this},enterEditing:function(e){if(!this.isEditing&&this.editable)return this.canvas&&(this.canvas.calcOffset(),this.exitEditingOnOthers(this.canvas)),this.isEditing=!0,this.initHiddenTextarea(e),this.hiddenTextarea.focus(),this.hiddenTextarea.value=this.text,this._updateTextarea(),this._saveEditingProps(),this._setEditingProps(),this._textBeforeEdit=this.text,this._tick(),this.fire("editing:entered"),this._fireSelectionChanged(),this.canvas?(this.canvas.fire("text:editing:entered",{target:this}),this.initMouseMoveHandler(),this.canvas.requestRenderAll(),this):this},exitEditingOnOthers:function(e){e._iTextInstances&&e._iTextInstances.forEach((function(e){e.selected=!1,e.isEditing&&e.exitEditing()}))},initMouseMoveHandler:function(){this.canvas.on("mouse:move",this.mouseMoveHandler)},mouseMoveHandler:function(e){if(this.__isMousedown&&this.isEditing){document.activeElement!==this.hiddenTextarea&&this.hiddenTextarea.focus();var t=this.getSelectionStartFromPointer(e.e),n=this.selectionStart,r=this.selectionEnd;(t===this.__selectionStartOnMouseDown&&n!==r||n!==t&&r!==t)&&(t>this.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=t):(this.selectionStart=t,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===n&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(e,t,n){var r=n.slice(0,e),o=i.util.string.graphemeSplit(r).length;if(e===t)return{selectionStart:o,selectionEnd:o};var a=n.slice(e,t);return{selectionStart:o,selectionEnd:o+i.util.string.graphemeSplit(a).length}},fromGraphemeToStringSelection:function(e,t,n){var r=n.slice(0,e).join("").length;return e===t?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+n.slice(e,t).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var e=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=e.selectionStart,this.hiddenTextarea.selectionEnd=e.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var e=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=e.selectionEnd,this.inCompositionMode||(this.selectionStart=e.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var e=this._calcTextareaPosition();this.hiddenTextarea.style.left=e.left,this.hiddenTextarea.style.top=e.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var e=this.inCompositionMode?this.compositionStart:this.selectionStart,t=this._getCursorBoundaries(e),n=this.get2DCursorLocation(e),r=n.lineIndex,o=n.charIndex,a=this.getValueOfPropertyAt(r,o,"fontSize")*this.lineHeight,s=t.leftOffset,l=this.calcTransformMatrix(),c={x:t.left+s,y:t.top+t.topOffset+a},u=this.canvas.getRetinaScaling(),d=this.canvas.upperCanvasEl,h=d.width/u,p=d.height/u,f=h-a,m=p-a,g=d.clientWidth/h,v=d.clientHeight/p;return c=i.util.transformPoint(c,l),(c=i.util.transformPoint(c,this.canvas.viewportTransform)).x*=g,c.y*=v,c.x<0&&(c.x=0),c.x>f&&(c.x=f),c.y<0&&(c.y=0),c.y>m&&(c.y=m),c.x+=this.canvas._offset.left,c.y+=this.canvas._offset.top,{left:c.x+"px",top:c.y+"px",fontSize:a+"px",charHeight:a}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var e=this._textBeforeEdit!==this.text,t=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,t&&(t.blur&&t.blur(),t.parentNode&&t.parentNode.removeChild(t)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),e&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),e&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var e in this.styles)this._textLines[e]||delete this.styles[e]},removeStyleFromTo:function(e,t){var n,r,i=this.get2DCursorLocation(e,!0),o=this.get2DCursorLocation(t,!0),a=i.lineIndex,s=i.charIndex,l=o.lineIndex,c=o.charIndex;if(a!==l){if(this.styles[a])for(n=s;n<this._unwrappedTextLines[a].length;n++)delete this.styles[a][n];if(this.styles[l])for(n=c;n<this._unwrappedTextLines[l].length;n++)(r=this.styles[l][n])&&(this.styles[a]||(this.styles[a]={}),this.styles[a][s+n-c]=r);for(n=a+1;n<=l;n++)delete this.styles[n];this.shiftLineStyles(l,a-l)}else if(this.styles[a]){r=this.styles[a];var u,d,h=c-s;for(n=s;n<c;n++)delete r[n];for(d in this.styles[a])(u=parseInt(d,10))>=c&&(r[u-h]=r[d],delete r[d])}},shiftLineStyles:function(t,n){var r=e(this.styles);for(var i in this.styles){var o=parseInt(i,10);o>t&&(this.styles[o+n]=r[o],r[o-n]||delete this.styles[o])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(t,n,r,i){var o,a={},s=!1,l=this._unwrappedTextLines[t].length===n;for(var c in r||(r=1),this.shiftLineStyles(t,r),this.styles[t]&&(o=this.styles[t][0===n?n:n-1]),this.styles[t]){var u=parseInt(c,10);u>=n&&(s=!0,a[u-n]=this.styles[t][c],l&&0===n||delete this.styles[t][c])}var d=!1;for(s&&!l&&(this.styles[t+r]=a,d=!0),d&&r--;r>0;)i&&i[r-1]?this.styles[t+r]={0:e(i[r-1])}:o?this.styles[t+r]={0:e(o)}:delete this.styles[t+r],r--;this._forceClearCache=!0},insertCharStyleObject:function(t,n,r,i){this.styles||(this.styles={});var o=this.styles[t],a=o?e(o):{};for(var s in r||(r=1),a){var l=parseInt(s,10);l>=n&&(o[l+r]=a[l],a[l-r]||delete o[l])}if(this._forceClearCache=!0,i)for(;r--;)Object.keys(i[r]).length&&(this.styles[t]||(this.styles[t]={}),this.styles[t][n+r]=e(i[r]));else if(o)for(var c=o[n?n-1:1];c&&r--;)this.styles[t][n+r]=e(c)},insertNewStyleBlock:function(e,t,n){for(var r=this.get2DCursorLocation(t,!0),i=[0],o=0,a=0;a<e.length;a++)"\n"===e[a]?i[++o]=0:i[o]++;i[0]>0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,i[0],n),n=n&&n.slice(i[0]+1)),o&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+i[0],o);for(a=1;a<o;a++)i[a]>0?this.insertCharStyleObject(r.lineIndex+a,0,i[a],n):n&&this.styles[r.lineIndex+a]&&n[0]&&(this.styles[r.lineIndex+a][0]=n[0]),n=n&&n.slice(i[a]+1);i[a]>0&&this.insertCharStyleObject(r.lineIndex+a,0,i[a],n)},setSelectionStartEndWithShift:function(e,t,n){n<=e?(t===e?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=e),this.selectionStart=n):n>e&&n<t?"right"===this._selectionDirection?this.selectionEnd=n:this.selectionStart=n:(t===e?this._selectionDirection="right":"left"===this._selectionDirection&&(this._selectionDirection="right",this.selectionStart=t),this.selectionEnd=n)},setSelectionInBoundaries:function(){var e=this.text.length;this.selectionStart>e?this.selectionStart=e:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>e?this.selectionEnd=e:this.selectionEnd<0&&(this.selectionEnd=0)}})}(),i.util.object.extend(i.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(e){if(this.canvas){this.__newClickTime=+new Date;var t=e.pointer;this.isTripleClick(t)&&(this.fire("tripleclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(e){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(e.e))},tripleClickHandler:function(e){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(e.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(e.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(e){if(this.__isMousedown=!1,!(!this.editable||this.group||e.transform&&e.transform.actionPerformed||e.e.button&&1!==e.e.button)){if(this.canvas){var t=this.canvas._activeObject;if(t&&t!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(e.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e),n=this.selectionStart,r=this.selectionEnd;e.shiftKey?this.setSelectionStartEndWithShift(n,r,t):(this.selectionStart=t,this.selectionEnd=t),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(e){for(var t,n=this.getLocalPointer(e),r=0,i=0,o=0,a=0,s=0,l=0,c=this._textLines.length;l<c&&o<=n.y;l++)o+=this.getHeightOfLine(l)*this.scaleY,s=l,l>0&&(a+=this._textLines[l-1].length+this.missingNewlineOffset(l-1));i=this._getLineLeftOffset(s)*this.scaleX,t=this._textLines[s],"rtl"===this.direction&&(n.x=this.width*this.scaleX-n.x+i);for(var u=0,d=t.length;u<d&&(r=i,(i+=this.__charBounds[s][u].kernedWidth*this.scaleX)<=n.x);u++)a++;return this._getNewSelectionStartFromOffset(n,r,i,a,d)},_getNewSelectionStartFromOffset:function(e,t,n,r,i){var o=e.x-t,a=n-e.x,s=r+(a>o||a<0?0:1);return this.flipX&&(s=i-s),s>this._text.length&&(s=this._text.length),s}}),i.util.object.extend(i.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=i.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var e=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+e.top+"; left: "+e.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; padding-top: "+e.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):i.document.body.appendChild(this.hiddenTextarea),i.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),i.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),i.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),i.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),i.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),i.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),i.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),i.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),i.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(i.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(e){if(this.isEditing){var t="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(e.keyCode in t)this[t[e.keyCode]](e);else{if(!(e.keyCode in this.ctrlKeysMapDown)||!e.ctrlKey&&!e.metaKey)return;this[this.ctrlKeysMapDown[e.keyCode]](e)}e.stopImmediatePropagation(),e.preventDefault(),e.keyCode>=33&&e.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(e){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:e.keyCode in this.ctrlKeysMapUp&&(e.ctrlKey||e.metaKey)&&(this[this.ctrlKeysMapUp[e.keyCode]](e),e.stopImmediatePropagation(),e.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(e){var t=this.fromPaste;if(this.fromPaste=!1,e&&e.stopPropagation(),this.isEditing){var n,r,o,a,s,l=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,c=this._text.length,u=l.length,d=u-c,h=this.selectionStart,p=this.selectionEnd,f=h!==p;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var m=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),g=h>m.selectionStart;f?(n=this._text.slice(h,p),d+=p-h):u<c&&(n=g?this._text.slice(p+d,p):this._text.slice(h,h-d)),r=l.slice(m.selectionEnd-d,m.selectionEnd),n&&n.length&&(r.length&&(o=this.getSelectionStyles(h,h+1,!1),o=r.map((function(){return o[0]}))),f?(a=h,s=p):g?(a=p-n.length,s=p):(a=p,s=p+n.length),this.removeStyleFromTo(a,s)),r.length&&(t&&r.join("")===i.copiedText&&!i.disableStyleCopyPaste&&(o=i.copiedTextStyle),this.insertNewStyleBlock(r,h,o)),this.updateFromTextArea(),this.fire("changed"),this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll())}},onCompositionStart:function(){this.inCompositionMode=!0},onCompositionEnd:function(){this.inCompositionMode=!1},onCompositionUpdate:function(e){this.compositionStart=e.target.selectionStart,this.compositionEnd=e.target.selectionEnd,this.updateTextareaPosition()},copy:function(){this.selectionStart!==this.selectionEnd&&(i.copiedText=this.getSelectedText(),i.disableStyleCopyPaste?i.copiedTextStyle=null:i.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd,!0),this._copyDone=!0)},paste:function(){this.fromPaste=!0},_getClipboardData:function(e){return e&&e.clipboardData||i.window.clipboardData},_getWidthBeforeCursor:function(e,t){var n,r=this._getLineLeftOffset(e);return t>0&&(r+=(n=this.__charBounds[e][t-1]).left+n.width),r},getDownCursorOffset:function(e,t){var n=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(n),i=r.lineIndex;if(i===this._textLines.length-1||e.metaKey||34===e.keyCode)return this._text.length-n;var o=r.charIndex,a=this._getWidthBeforeCursor(i,o),s=this._getIndexOnLine(i+1,a);return this._textLines[i].slice(o).length+s+1+this.missingNewlineOffset(i)},_getSelectionForOffset:function(e,t){return e.shiftKey&&this.selectionStart!==this.selectionEnd&&t?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(e,t){var n=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(n),i=r.lineIndex;if(0===i||e.metaKey||33===e.keyCode)return-n;var o=r.charIndex,a=this._getWidthBeforeCursor(i,o),s=this._getIndexOnLine(i-1,a),l=this._textLines[i].slice(0,o),c=this.missingNewlineOffset(i-1);return-this._textLines[i-1].length+s-l.length+(1-c)},_getIndexOnLine:function(e,t){for(var n,r,i=this._textLines[e],o=this._getLineLeftOffset(e),a=0,s=0,l=i.length;s<l;s++)if((o+=n=this.__charBounds[e][s].width)>t){r=!0;var c=o-n,u=o,d=Math.abs(c-t);a=Math.abs(u-t)<d?s:s-1;break}return r||(a=i.length-1),a},moveCursorDown:function(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",e)},moveCursorUp:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",e)},_moveCursorUpOrDown:function(e,t){var n=this["get"+e+"CursorOffset"](t,"right"===this._selectionDirection);t.shiftKey?this.moveCursorWithShift(n):this.moveCursorWithoutShift(n),0!==n&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(e){var t="left"===this._selectionDirection?this.selectionStart+e:this.selectionEnd+e;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,t),0!==e},moveCursorWithoutShift:function(e){return e<0?(this.selectionStart+=e,this.selectionEnd=this.selectionStart):(this.selectionEnd+=e,this.selectionStart=this.selectionEnd),0!==e},moveCursorLeft:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",e)},_move:function(e,t,n){var r;if(e.altKey)r=this["findWordBoundary"+n](this[t]);else{if(!e.metaKey&&35!==e.keyCode&&36!==e.keyCode)return this[t]+="Left"===n?-1:1,!0;r=this["findLineBoundary"+n](this[t])}if("undefined"!==typeof r&&this[t]!==r)return this[t]=r,!0},_moveLeft:function(e,t){return this._move(e,t,"Left")},_moveRight:function(e,t){return this._move(e,t,"Right")},moveCursorLeftWithoutShift:function(e){var t=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(t=this._moveLeft(e,"selectionStart")),this.selectionEnd=this.selectionStart,t},moveCursorLeftWithShift:function(e){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(e,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(e,"selectionStart")):void 0},moveCursorRight:function(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",e)},_moveCursorLeftOrRight:function(e,t){var n="moveCursor"+e+"With";this._currentCursorOpacity=1,t.shiftKey?n+="Shift":n+="outShift",this[n](t)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(e){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(e,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(e){var t=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(t=this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,t},removeChars:function(e,t){"undefined"===typeof t&&(t=e+1),this.removeStyleFromTo(e,t),this._text.splice(e,t-e),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(e,t,n,r){"undefined"===typeof r&&(r=n),r>n&&this.removeStyleFromTo(n,r);var o=i.util.string.graphemeSplit(e);this.insertNewStyleBlock(o,n,t),this._text=[].concat(this._text.slice(0,n),o,this._text.slice(r)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var e=i.util.toFixed,t=/ +/g;i.util.object.extend(i.Text.prototype,{_toSVG:function(){var e=this._getSVGLeftTopOffsets(),t=this._getSVGTextAndBg(e.textTop,e.textLeft);return this._wrapSVGTextAndBg(t)},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(e){var t=this.getSvgTextDecoration(this);return[e.textBgRects.join(""),'\t\t<text xml:space="preserve" ',this.fontFamily?'font-family="'+this.fontFamily.replace(/"/g,"'")+'" ':"",this.fontSize?'font-size="'+this.fontSize+'" ':"",this.fontStyle?'font-style="'+this.fontStyle+'" ':"",this.fontWeight?'font-weight="'+this.fontWeight+'" ':"",t?'text-decoration="'+t+'" ':"",'style="',this.getSvgStyles(!0),'"',this.addPaintOrder()," >",e.textSpans.join(""),"</text>\n"]},_getSVGTextAndBg:function(e,t){var n,r=[],i=[],o=e;this._setSVGBg(i);for(var a=0,s=this._textLines.length;a<s;a++)n=this._getLineLeftOffset(a),(this.textBackgroundColor||this.styleHas("textBackgroundColor",a))&&this._setSVGTextLineBg(i,a,t+n,o),this._setSVGTextLineText(r,a,t+n,o),o+=this.getHeightOfLine(a);return{textSpans:r,textBgRects:i}},_createTextCharSpan:function(n,r,o,a){var s=n!==n.trim()||n.match(t),l=this.getSvgSpanStyles(r,s),c=l?'style="'+l+'"':"",u=r.deltaY,d="",h=i.Object.NUM_FRACTION_DIGITS;return u&&(d=' dy="'+e(u,h)+'" '),['<tspan x="',e(o,h),'" y="',e(a,h),'" ',d,c,">",i.util.string.escapeXml(n),"</tspan>"].join("")},_setSVGTextLineText:function(e,t,n,r){var o,a,s,l,c,u=this.getHeightOfLine(t),d=-1!==this.textAlign.indexOf("justify"),h="",p=0,f=this._textLines[t];r+=u*(1-this._fontSizeFraction)/this.lineHeight;for(var m=0,g=f.length-1;m<=g;m++)c=m===g||this.charSpacing,h+=f[m],s=this.__charBounds[t][m],0===p?(n+=s.kernedWidth-s.width,p+=s.width):p+=s.kernedWidth,d&&!c&&this._reSpaceAndTab.test(f[m])&&(c=!0),c||(o=o||this.getCompleteStyleDeclaration(t,m),a=this.getCompleteStyleDeclaration(t,m+1),c=i.util.hasStyleChanged(o,a,!0)),c&&(l=this._getStyleDeclaration(t,m)||{},e.push(this._createTextCharSpan(h,l,n,r)),h="",o=a,n+=p,p=0)},_pushTextBgRect:function(t,n,r,o,a,s){var l=i.Object.NUM_FRACTION_DIGITS;t.push("\t\t<rect ",this._getFillAttributes(n),' x="',e(r,l),'" y="',e(o,l),'" width="',e(a,l),'" height="',e(s,l),'"></rect>\n')},_setSVGTextLineBg:function(e,t,n,r){for(var i,o,a=this._textLines[t],s=this.getHeightOfLine(t)/this.lineHeight,l=0,c=0,u=this.getValueOfPropertyAt(t,0,"textBackgroundColor"),d=0,h=a.length;d<h;d++)i=this.__charBounds[t][d],(o=this.getValueOfPropertyAt(t,d,"textBackgroundColor"))!==u?(u&&this._pushTextBgRect(e,u,n+c,r,l,s),c=i.left,l=i.width,u=o):l+=i.kernedWidth;o&&this._pushTextBgRect(e,o,n+c,r,l,s)},_getFillAttributes:function(e){var t=e&&"string"===typeof e?new i.Color(e):"";return t&&t.getSource()&&1!==t.getAlpha()?'opacity="'+t.getAlpha()+'" fill="'+t.setAlpha(1).toRgb()+'"':'fill="'+e+'"'},_getSVGLineTopOffset:function(e){for(var t,n=0,r=0;r<e;r++)n+=this.getHeightOfLine(r);return t=this.getHeightOfLine(r),{lineTop:n,offset:(this._fontSizeMult-this._fontSizeFraction)*t/(this.lineHeight*this._fontSizeMult)}},getSvgStyles:function(e){return i.Object.prototype.getSvgStyles.call(this,e)+" white-space: pre;"}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={});t.Textbox=t.util.createClass(t.IText,t.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:2,__cachedLines:null,lockScalingFlip:!0,noScaleCache:!1,_dimensionAffectingProps:t.Text.prototype._dimensionAffectingProps.concat("width"),_wordJoiners:/[ \t\r]/,splitByGrapheme:!1,initDimensions:function(){this.__skipDimension||(this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this._clearCache(),this.dynamicMinWidth=0,this._styleMap=this._generateStyleMap(this._splitText()),this.dynamicMinWidth>this.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(e){for(var t=0,n=0,r=0,i={},o=0;o<e.graphemeLines.length;o++)"\n"===e.graphemeText[r]&&o>0?(n=0,r++,t++):!this.splitByGrapheme&&this._reSpaceAndTab.test(e.graphemeText[r])&&o>0&&(n++,r++),i[o]={line:t,offset:n},r+=e.graphemeLines[o].length,n+=e.graphemeLines[o].length;return i},styleHas:function(e,n){if(this._styleMap&&!this.isWrapping){var r=this._styleMap[n];r&&(n=r.line)}return t.Text.prototype.styleHas.call(this,e,n)},isEmptyStyles:function(e){if(!this.styles)return!0;var t,n,r=0,i=!1,o=this._styleMap[e],a=this._styleMap[e+1];for(var s in o&&(e=o.line,r=o.offset),a&&(i=a.line===e,t=a.offset),n="undefined"===typeof e?this.styles:{line:this.styles[e]})for(var l in n[s])if(l>=r&&(!i||l<t))for(var c in n[s][l])return!1;return!0},_getStyleDeclaration:function(e,t){if(this._styleMap&&!this.isWrapping){var n=this._styleMap[e];if(!n)return null;e=n.line,t=n.offset+t}return this.callSuper("_getStyleDeclaration",e,t)},_setStyleDeclaration:function(e,t,n){var r=this._styleMap[e];e=r.line,t=r.offset+t,this.styles[e][t]=n},_deleteStyleDeclaration:function(e,t){var n=this._styleMap[e];e=n.line,t=n.offset+t,delete this.styles[e][t]},_getLineStyle:function(e){var t=this._styleMap[e];return!!this.styles[t.line]},_setLineStyle:function(e){var t=this._styleMap[e];this.styles[t.line]={}},_wrapText:function(e,t){var n,r=[];for(this.isWrapping=!0,n=0;n<e.length;n++)r=r.concat(this._wrapLine(e[n],n,t));return this.isWrapping=!1,r},_measureWord:function(e,t,n){var r,i=0;n=n||0;for(var o=0,a=e.length;o<a;o++){i+=this._getGraphemeBox(e[o],t,o+n,r,true).kernedWidth,r=e[o]}return i},_wrapLine:function(e,n,r,i){var o=0,a=this.splitByGrapheme,s=[],l=[],c=a?t.util.string.graphemeSplit(e):e.split(this._wordJoiners),u="",d=0,h=a?"":" ",p=0,f=0,m=0,g=!0,v=this._getWidthOfCharSpacing();i=i||0;0===c.length&&c.push([]),r-=i;for(var y=0;y<c.length;y++)u=a?c[y]:t.util.string.graphemeSplit(c[y]),p=this._measureWord(u,n,d),d+=u.length,(o+=f+p-v)>r&&!g?(s.push(l),l=[],o=p,g=!0):o+=v,g||a||l.push(h),l=l.concat(u),f=a?0:this._measureWord([h],n,d),d++,g=!1,p>m&&(m=p);return y&&s.push(l),m+i>this.dynamicMinWidth&&(this.dynamicMinWidth=m-v+i),s},isEndOfWrapping:function(e){return!this._styleMap[e+1]||this._styleMap[e+1].line!==this._styleMap[e].line},missingNewlineOffset:function(e){return this.splitByGrapheme?this.isEndOfWrapping(e)?1:0:1},_splitTextIntoLines:function(e){for(var n=t.Text.prototype._splitTextIntoLines.call(this,e),r=this._wrapText(n.lines,this.width),i=new Array(r.length),o=0;o<r.length;o++)i[o]=r[o].join("");return n.lines=i,n.graphemeLines=r,n},getMinWidth:function(){return Math.max(this.minWidth,this.dynamicMinWidth)},_removeExtraneousStyles:function(){var e={};for(var t in this._styleMap)this._textLines[t]&&(e[this._styleMap[t].line]=1);for(var t in this.styles)e[t]||delete this.styles[t]},toObject:function(e){return this.callSuper("toObject",["minWidth","splitByGrapheme"].concat(e))}}),t.Textbox.fromObject=function(e,n){var r=t.util.stylesFromArray(e.styles,e.text),i=Object.assign({},e,{styles:r});return t.Object._fromObject("Textbox",i,n,"text")}}(t),function(){var e=i.controlsUtils,t=e.scaleSkewCursorStyleHandler,n=e.scaleCursorStyleHandler,r=e.scalingEqually,o=e.scalingYOrSkewingX,a=e.scalingXOrSkewingY,s=e.scaleOrSkewActionName,l=i.Object.prototype.controls;if(l.ml=new i.Control({x:-.5,y:0,cursorStyleHandler:t,actionHandler:a,getActionName:s}),l.mr=new i.Control({x:.5,y:0,cursorStyleHandler:t,actionHandler:a,getActionName:s}),l.mb=new i.Control({x:0,y:.5,cursorStyleHandler:t,actionHandler:o,getActionName:s}),l.mt=new i.Control({x:0,y:-.5,cursorStyleHandler:t,actionHandler:o,getActionName:s}),l.tl=new i.Control({x:-.5,y:-.5,cursorStyleHandler:n,actionHandler:r}),l.tr=new i.Control({x:.5,y:-.5,cursorStyleHandler:n,actionHandler:r}),l.bl=new i.Control({x:-.5,y:.5,cursorStyleHandler:n,actionHandler:r}),l.br=new i.Control({x:.5,y:.5,cursorStyleHandler:n,actionHandler:r}),l.mtr=new i.Control({x:0,y:-.5,actionHandler:e.rotationWithSnapping,cursorStyleHandler:e.rotationStyleHandler,offsetY:-40,withConnection:!0,actionName:"rotate"}),i.Textbox){var c=i.Textbox.prototype.controls={};c.mtr=l.mtr,c.tr=l.tr,c.br=l.br,c.tl=l.tl,c.bl=l.bl,c.mt=l.mt,c.mb=l.mb,c.mr=new i.Control({x:.5,y:0,actionHandler:e.changeWidth,cursorStyleHandler:t,actionName:"resizing"}),c.ml=new i.Control({x:-.5,y:0,actionHandler:e.changeWidth,cursorStyleHandler:t,actionName:"resizing"})}}()},12406:e=>{"use strict";var t="Function.prototype.bind called on incompatible ",n=Object.prototype.toString,r=Math.max,i="[object Function]",o=function(e,t){for(var n=[],r=0;r<e.length;r+=1)n[r]=e[r];for(var i=0;i<t.length;i+=1)n[i+e.length]=t[i];return n},a=function(e,t){for(var n=[],r=t||0,i=0;r<e.length;r+=1,i+=1)n[i]=e[r];return n},s=function(e,t){for(var n="",r=0;r<e.length;r+=1)n+=e[r],r+1<e.length&&(n+=t);return n};e.exports=function(e){var l=this;if("function"!==typeof l||n.apply(l)!==i)throw new TypeError(t+l);for(var c,u=a(arguments,1),d=r(0,l.length-u.length),h=[],p=0;p<d;p++)h[p]="$"+p;if(c=Function("binder","return function ("+s(h,",")+"){ return binder.apply(this,arguments); }")((function(){if(this instanceof c){var t=l.apply(this,o(u,arguments));return Object(t)===t?t:this}return l.apply(e,o(u,arguments))})),l.prototype){var f=function(){};f.prototype=l.prototype,c.prototype=new f,f.prototype=null}return c}},88050:(e,t,n)=>{"use strict";var r=n(12406);e.exports=Function.prototype.bind||r},42780:(e,t,n)=>{"use strict";var r,i=n(41830),o=n(16101),a=n(69715),s=n(64546),l=n(47849),c=n(84968),u=n(68344),d=Function,h=function(e){try{return d('"use strict"; return ('+e+").constructor;")()}catch(t){}},p=Object.getOwnPropertyDescriptor;if(p)try{p({},"")}catch(M){p=null}var f=function(){throw new c},m=p?function(){try{return f}catch(e){try{return p(arguments,"callee").get}catch(t){return f}}}():f,g=n(83895)(),v=n(29571)(),y=Object.getPrototypeOf||(v?function(e){return e.__proto__}:null),b={},x="undefined"!==typeof Uint8Array&&y?y(Uint8Array):r,w={__proto__:null,"%AggregateError%":"undefined"===typeof AggregateError?r:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"===typeof ArrayBuffer?r:ArrayBuffer,"%ArrayIteratorPrototype%":g&&y?y([][Symbol.iterator]()):r,"%AsyncFromSyncIteratorPrototype%":r,"%AsyncFunction%":b,"%AsyncGenerator%":b,"%AsyncGeneratorFunction%":b,"%AsyncIteratorPrototype%":b,"%Atomics%":"undefined"===typeof Atomics?r:Atomics,"%BigInt%":"undefined"===typeof BigInt?r:BigInt,"%BigInt64Array%":"undefined"===typeof BigInt64Array?r:BigInt64Array,"%BigUint64Array%":"undefined"===typeof BigUint64Array?r:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"===typeof DataView?r:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":i,"%eval%":eval,"%EvalError%":o,"%Float32Array%":"undefined"===typeof Float32Array?r:Float32Array,"%Float64Array%":"undefined"===typeof Float64Array?r:Float64Array,"%FinalizationRegistry%":"undefined"===typeof FinalizationRegistry?r:FinalizationRegistry,"%Function%":d,"%GeneratorFunction%":b,"%Int8Array%":"undefined"===typeof Int8Array?r:Int8Array,"%Int16Array%":"undefined"===typeof Int16Array?r:Int16Array,"%Int32Array%":"undefined"===typeof Int32Array?r:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":g&&y?y(y([][Symbol.iterator]())):r,"%JSON%":"object"===typeof JSON?JSON:r,"%Map%":"undefined"===typeof Map?r:Map,"%MapIteratorPrototype%":"undefined"!==typeof Map&&g&&y?y((new Map)[Symbol.iterator]()):r,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"===typeof Promise?r:Promise,"%Proxy%":"undefined"===typeof Proxy?r:Proxy,"%RangeError%":a,"%ReferenceError%":s,"%Reflect%":"undefined"===typeof Reflect?r:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"===typeof Set?r:Set,"%SetIteratorPrototype%":"undefined"!==typeof Set&&g&&y?y((new Set)[Symbol.iterator]()):r,"%SharedArrayBuffer%":"undefined"===typeof SharedArrayBuffer?r:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":g&&y?y(""[Symbol.iterator]()):r,"%Symbol%":g?Symbol:r,"%SyntaxError%":l,"%ThrowTypeError%":m,"%TypedArray%":x,"%TypeError%":c,"%Uint8Array%":"undefined"===typeof Uint8Array?r:Uint8Array,"%Uint8ClampedArray%":"undefined"===typeof Uint8ClampedArray?r:Uint8ClampedArray,"%Uint16Array%":"undefined"===typeof Uint16Array?r:Uint16Array,"%Uint32Array%":"undefined"===typeof Uint32Array?r:Uint32Array,"%URIError%":u,"%WeakMap%":"undefined"===typeof WeakMap?r:WeakMap,"%WeakRef%":"undefined"===typeof WeakRef?r:WeakRef,"%WeakSet%":"undefined"===typeof WeakSet?r:WeakSet};if(y)try{null.error}catch(M){var S=y(y(M));w["%Error.prototype%"]=S}var _=function e(t){var n;if("%AsyncFunction%"===t)n=h("async function () {}");else if("%GeneratorFunction%"===t)n=h("function* () {}");else if("%AsyncGeneratorFunction%"===t)n=h("async function* () {}");else if("%AsyncGenerator%"===t){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if("%AsyncIteratorPrototype%"===t){var i=e("%AsyncGenerator%");i&&y&&(n=y(i.prototype))}return w[t]=n,n},C={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},E=n(88050),T=n(17652),O=E.call(Function.call,Array.prototype.concat),N=E.call(Function.apply,Array.prototype.splice),k=E.call(Function.call,String.prototype.replace),j=E.call(Function.call,String.prototype.slice),I=E.call(Function.call,RegExp.prototype.exec),P=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,D=/\\(\\)?/g,A=function(e){var t=j(e,0,1),n=j(e,-1);if("%"===t&&"%"!==n)throw new l("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new l("invalid intrinsic syntax, expected opening `%`");var r=[];return k(e,P,(function(e,t,n,i){r[r.length]=n?k(i,D,"$1"):t||e})),r},R=function(e,t){var n,r=e;if(T(C,r)&&(r="%"+(n=C[r])[0]+"%"),T(w,r)){var i=w[r];if(i===b&&(i=_(r)),"undefined"===typeof i&&!t)throw new c("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:n,name:r,value:i}}throw new l("intrinsic "+e+" does not exist!")};e.exports=function(e,t){if("string"!==typeof e||0===e.length)throw new c("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!==typeof t)throw new c('"allowMissing" argument must be a boolean');if(null===I(/^%?[^%]*%?$/,e))throw new l("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=A(e),r=n.length>0?n[0]:"",i=R("%"+r+"%",t),o=i.name,a=i.value,s=!1,u=i.alias;u&&(r=u[0],N(n,O([0,1],u)));for(var d=1,h=!0;d<n.length;d+=1){var f=n[d],m=j(f,0,1),g=j(f,-1);if(('"'===m||"'"===m||"`"===m||'"'===g||"'"===g||"`"===g)&&m!==g)throw new l("property names with quotes must have matching quotes");if("constructor"!==f&&h||(s=!0),T(w,o="%"+(r+="."+f)+"%"))a=w[o];else if(null!=a){if(!(f in a)){if(!t)throw new c("base intrinsic for "+e+" exists, but the property is not available.");return}if(p&&d+1>=n.length){var v=p(a,f);a=(h=!!v)&&"get"in v&&!("originalValue"in v.get)?v.get:a[f]}else h=T(a,f),a=a[f];h&&!s&&(w[o]=a)}}return a}},81687:(e,t,n)=>{"use strict";var r=n(42780)("%Object.getOwnPropertyDescriptor%",!0);if(r)try{r([],"length")}catch(i){r=null}e.exports=r},43597:(e,t,n)=>{"use strict";var r=n(85122),i=function(){return!!r};i.hasArrayLengthDefineBug=function(){if(!r)return null;try{return 1!==r([],"length",{value:1}).length}catch(e){return!0}},e.exports=i},29571:e=>{"use strict";var t={__proto__:null,foo:{}},n=Object;e.exports=function(){return{__proto__:t}.foo===t.foo&&!(t instanceof n)}},83895:(e,t,n)=>{"use strict";var r="undefined"!==typeof Symbol&&Symbol,i=n(75687);e.exports=function(){return"function"===typeof r&&("function"===typeof Symbol&&("symbol"===typeof r("foo")&&("symbol"===typeof Symbol("bar")&&i())))}},75687:e=>{"use strict";e.exports=function(){if("function"!==typeof Symbol||"function"!==typeof Object.getOwnPropertySymbols)return!1;if("symbol"===typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"===typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(t in e[t]=42,e)return!1;if("function"===typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"===typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"===typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},17652:(e,t,n)=>{"use strict";var r=Function.prototype.call,i=Object.prototype.hasOwnProperty,o=n(88050);e.exports=o.call(r,i)},91668:(e,t,n)=>{"use strict";n.d(t,{lX:()=>_,q_:()=>k,ob:()=>m,PP:()=>I,Ep:()=>f,Hp:()=>g});var r=n(87462);function i(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,i=e.length;r<i;n+=1,r+=1)e[n]=e[r];e.pop()}const a=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],a=t&&t.split("/")||[],s=e&&i(e),l=t&&i(t),c=s||l;if(e&&i(e)?a=r:r.length&&(a.pop(),a=a.concat(r)),!a.length)return"/";if(a.length){var u=a[a.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,h=a.length;h>=0;h--){var p=a[h];"."===p?o(a,h):".."===p?(o(a,h),d++):d&&(o(a,h),d--)}if(!c)for(;d--;d)a.unshift("..");!c||""===a[0]||a[0]&&i(a[0])||a.unshift("");var f=a.join("/");return n&&"/"!==f.substr(-1)&&(f+="/"),f};function s(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"===typeof t||"object"===typeof n){var r=s(t),i=s(n);return r!==t||i!==n?e(r,i):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var c=n(35731);function u(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function h(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,i=t||"/";return n&&"?"!==n&&(i+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(i+="#"===r.charAt(0)?r:"#"+r),i}function m(e,t,n,i){var o;"string"===typeof e?(o=function(e){var t=e||"/",n="",r="",i=t.indexOf("#");-1!==i&&(r=t.substr(i),t=t.substr(0,i));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(o.key=n),i?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=a(o.pathname,i.pathname)):o.pathname=i.pathname:o.pathname||(o.pathname="/"),o}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function v(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,i){if(null!=e){var o="function"===typeof e?e(t,n):e;"string"===typeof o?"function"===typeof r?r(o,i):i(!0):i(!1!==o)}else i(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var y=!("undefined"===typeof window||!window.document||!window.document.createElement);function b(e,t){t(window.confirm(e))}var x="popstate",w="hashchange";function S(){try{return window.history.state||{}}catch(e){return{}}}function _(e){void 0===e&&(e={}),y||(0,c.Z)(!1);var t=window.history,n=function(){var e=window.navigator.userAgent;return(-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history}(),i=!(-1===window.navigator.userAgent.indexOf("Trident")),o=e,a=o.forceRefresh,s=void 0!==a&&a,l=o.getUserConfirmation,d=void 0===l?b:l,g=o.keyLength,_=void 0===g?6:g,C=e.basename?p(u(e.basename)):"";function E(e){var t=e||{},n=t.key,r=t.state,i=window.location,o=i.pathname+i.search+i.hash;return C&&(o=h(o,C)),m(o,r,n)}function T(){return Math.random().toString(36).substr(2,_)}var O=v();function N(e){(0,r.Z)(B,e),B.length=t.length,O.notifyListeners(B.location,B.action)}function k(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||P(E(e.state))}function j(){P(E(S()))}var I=!1;function P(e){if(I)I=!1,N();else{O.confirmTransitionTo(e,"POP",d,(function(t){t?N({action:"POP",location:e}):function(e){var t=B.location,n=A.indexOf(t.key);-1===n&&(n=0);var r=A.indexOf(e.key);-1===r&&(r=0);var i=n-r;i&&(I=!0,M(i))}(e)}))}}var D=E(S()),A=[D.key];function R(e){return C+f(e)}function M(e){t.go(e)}var L=0;function F(e){1===(L+=e)&&1===e?(window.addEventListener(x,k),i&&window.addEventListener(w,j)):0===L&&(window.removeEventListener(x,k),i&&window.removeEventListener(w,j))}var z=!1;var B={length:t.length,action:"POP",location:D,createHref:R,push:function(e,r){var i="PUSH",o=m(e,r,T(),B.location);O.confirmTransitionTo(o,i,d,(function(e){if(e){var r=R(o),a=o.key,l=o.state;if(n)if(t.pushState({key:a,state:l},null,r),s)window.location.href=r;else{var c=A.indexOf(B.location.key),u=A.slice(0,c+1);u.push(o.key),A=u,N({action:i,location:o})}else window.location.href=r}}))},replace:function(e,r){var i="REPLACE",o=m(e,r,T(),B.location);O.confirmTransitionTo(o,i,d,(function(e){if(e){var r=R(o),a=o.key,l=o.state;if(n)if(t.replaceState({key:a,state:l},null,r),s)window.location.replace(r);else{var c=A.indexOf(B.location.key);-1!==c&&(A[c]=o.key),N({action:i,location:o})}else window.location.replace(r)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=O.setPrompt(e);return z||(F(1),z=!0),function(){return z&&(z=!1,F(-1)),t()}},listen:function(e){var t=O.appendListener(e);return F(1),function(){F(-1),t()}}};return B}var C="hashchange",E={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+d(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:d,decodePath:u},slash:{encodePath:u,decodePath:u}};function T(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function O(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function N(e){window.location.replace(T(window.location.href)+"#"+e)}function k(e){void 0===e&&(e={}),y||(0,c.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),i=n.getUserConfirmation,o=void 0===i?b:i,a=n.hashType,s=void 0===a?"slash":a,l=e.basename?p(u(e.basename)):"",d=E[s],g=d.encodePath,x=d.decodePath;function w(){var e=x(O());return l&&(e=h(e,l)),m(e)}var S=v();function _(e){(0,r.Z)(B,e),B.length=t.length,S.notifyListeners(B.location,B.action)}var k=!1,j=null;function I(){var e,t,n=O(),r=g(n);if(n!==r)N(r);else{var i=w(),a=B.location;if(!k&&(t=i,(e=a).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(j===f(i))return;j=null,function(e){if(k)k=!1,_();else{var t="POP";S.confirmTransitionTo(e,t,o,(function(n){n?_({action:t,location:e}):function(e){var t=B.location,n=R.lastIndexOf(f(t));-1===n&&(n=0);var r=R.lastIndexOf(f(e));-1===r&&(r=0);var i=n-r;i&&(k=!0,M(i))}(e)}))}}(i)}}var P=O(),D=g(P);P!==D&&N(D);var A=w(),R=[f(A)];function M(e){t.go(e)}var L=0;function F(e){1===(L+=e)&&1===e?window.addEventListener(C,I):0===L&&window.removeEventListener(C,I)}var z=!1;var B={length:t.length,action:"POP",location:A,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=T(window.location.href)),n+"#"+g(l+f(e))},push:function(e,t){var n="PUSH",r=m(e,void 0,void 0,B.location);S.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),i=g(l+t);if(O()!==i){j=t,function(e){window.location.hash=e}(i);var o=R.lastIndexOf(f(B.location)),a=R.slice(0,o+1);a.push(t),R=a,_({action:n,location:r})}else _()}}))},replace:function(e,t){var n="REPLACE",r=m(e,void 0,void 0,B.location);S.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),i=g(l+t);O()!==i&&(j=t,N(i));var o=R.indexOf(f(B.location));-1!==o&&(R[o]=t),_({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=S.setPrompt(e);return z||(F(1),z=!0),function(){return z&&(z=!1,F(-1)),t()}},listen:function(e){var t=S.appendListener(e);return F(1),function(){F(-1),t()}}};return B}function j(e,t,n){return Math.min(Math.max(e,t),n)}function I(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,i=t.initialEntries,o=void 0===i?["/"]:i,a=t.initialIndex,s=void 0===a?0:a,l=t.keyLength,c=void 0===l?6:l,u=v();function d(e){(0,r.Z)(x,e),x.length=x.entries.length,u.notifyListeners(x.location,x.action)}function h(){return Math.random().toString(36).substr(2,c)}var p=j(s,0,o.length-1),g=o.map((function(e){return m(e,void 0,"string"===typeof e?h():e.key||h())})),y=f;function b(e){var t=j(x.index+e,0,x.entries.length-1),r=x.entries[t];u.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var x={length:g.length,action:"POP",location:g[p],index:p,entries:g,createHref:y,push:function(e,t){var r="PUSH",i=m(e,t,h(),x.location);u.confirmTransitionTo(i,r,n,(function(e){if(e){var t=x.index+1,n=x.entries.slice(0);n.length>t?n.splice(t,n.length-t,i):n.push(i),d({action:r,location:i,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",i=m(e,t,h(),x.location);u.confirmTransitionTo(i,r,n,(function(e){e&&(x.entries[x.index]=i,d({action:r,location:i}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=x.index+e;return t>=0&&t<x.entries.length},block:function(e){return void 0===e&&(e=!1),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return x}},15170:(e,t,n)=>{"use strict";var r=n(70248),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?a:s[e.$$typeof]||i}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=a;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,h=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,f=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(f){var i=p(n);i&&i!==f&&e(t,i,r)}var a=u(n);d&&(a=a.concat(d(n)));for(var s=l(t),m=l(n),g=0;g<a.length;++g){var v=a[g];if(!o[v]&&(!r||!r[v])&&(!m||!m[v])&&(!s||!s[v])){var y=h(n,v);try{c(t,v,y)}catch(b){}}}}return t}},17943:(e,t)=>{"use strict";var n="function"===typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,a=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,h=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,f=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,y=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,x=n?Symbol.for("react.scope"):60119;function w(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case o:case s:case a:case p:return e;default:switch(e=e&&e.$$typeof){case c:case h:case g:case m:case l:return e;default:return t}}case i:return t}}}function S(e){return w(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=l,t.Element=r,t.ForwardRef=h,t.Fragment=o,t.Lazy=g,t.Memo=m,t.Portal=i,t.Profiler=s,t.StrictMode=a,t.Suspense=p,t.isAsyncMode=function(e){return S(e)||w(e)===u},t.isConcurrentMode=S,t.isContextConsumer=function(e){return w(e)===c},t.isContextProvider=function(e){return w(e)===l},t.isElement=function(e){return"object"===typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return w(e)===h},t.isFragment=function(e){return w(e)===o},t.isLazy=function(e){return w(e)===g},t.isMemo=function(e){return w(e)===m},t.isPortal=function(e){return w(e)===i},t.isProfiler=function(e){return w(e)===s},t.isStrictMode=function(e){return w(e)===a},t.isSuspense=function(e){return w(e)===p},t.isValidElementType=function(e){return"string"===typeof e||"function"===typeof e||e===o||e===d||e===s||e===a||e===p||e===f||"object"===typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===l||e.$$typeof===c||e.$$typeof===h||e.$$typeof===y||e.$$typeof===b||e.$$typeof===x||e.$$typeof===v)},t.typeOf=w},70248:(e,t,n)=>{"use strict";e.exports=n(17943)},32733:e=>{"use strict";e.exports=function(e,t,n,r,i,o,a,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,i,o,a,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},49099:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},22849:(e,t,n)=>{var r=n(72892)(n(57849),"DataView");e.exports=r},90145:(e,t,n)=>{var r=n(29076),i=n(76009),o=n(86992),a=n(59120),s=n(25899);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=o,l.prototype.has=a,l.prototype.set=s,e.exports=l},18084:(e,t,n)=>{var r=n(29917),i=n(43490),o=n(64872),a=n(21744),s=n(88820);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=o,l.prototype.has=a,l.prototype.set=s,e.exports=l},44086:(e,t,n)=>{var r=n(72892)(n(57849),"Map");e.exports=r},47059:(e,t,n)=>{var r=n(27161),i=n(65317),o=n(93297),a=n(25771),s=n(633);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=o,l.prototype.has=a,l.prototype.set=s,e.exports=l},42115:(e,t,n)=>{var r=n(72892)(n(57849),"Promise");e.exports=r},70607:(e,t,n)=>{var r=n(72892)(n(57849),"Set");e.exports=r},75304:(e,t,n)=>{var r=n(47059),i=n(93648),o=n(56683);function a(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}a.prototype.add=a.prototype.push=i,a.prototype.has=o,e.exports=a},15004:(e,t,n)=>{var r=n(18084),i=n(41662),o=n(97368),a=n(87454),s=n(16596),l=n(32052);function c(e){var t=this.__data__=new r(e);this.size=t.size}c.prototype.clear=i,c.prototype.delete=o,c.prototype.get=a,c.prototype.has=s,c.prototype.set=l,e.exports=c},62279:(e,t,n)=>{var r=n(57849).Symbol;e.exports=r},91385:(e,t,n)=>{var r=n(57849).Uint8Array;e.exports=r},20177:(e,t,n)=>{var r=n(72892)(n(57849),"WeakMap");e.exports=r},12539:e=>{e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},38626:e=>{e.exports=function(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i<o;){var a=e[i];t(r,a,n(a),e)}return r}},35219:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},82169:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,i=0,o=[];++n<r;){var a=e[n];t(a,n,e)&&(o[i++]=a)}return o}},73784:(e,t,n)=>{var r=n(34698);e.exports=function(e,t){return!!(null==e?0:e.length)&&r(e,t,0)>-1}},58713:e=>{e.exports=function(e,t,n){for(var r=-1,i=null==e?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}},34087:(e,t,n)=>{var r=n(94558),i=n(38492),o=n(46296),a=n(98267),s=n(64764),l=n(34057),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),u=!n&&i(e),d=!n&&!u&&a(e),h=!n&&!u&&!d&&l(e),p=n||u||d||h,f=p?r(e.length,String):[],m=f.length;for(var g in e)!t&&!c.call(e,g)||p&&("length"==g||d&&("offset"==g||"parent"==g)||h&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||s(g,m))||f.push(g);return f}},40341:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}},17174:e=>{e.exports=function(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}},7138:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},58961:e=>{e.exports=function(e){return e.split("")}},17509:(e,t,n)=>{var r=n(69519),i=n(83272);e.exports=function(e,t,n){(void 0!==n&&!i(e[t],n)||void 0===n&&!(t in e))&&r(e,t,n)}},49237:(e,t,n)=>{var r=n(69519),i=n(83272),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var a=e[t];o.call(e,t)&&i(a,n)&&(void 0!==n||t in e)||r(e,t,n)}},11786:(e,t,n)=>{var r=n(83272);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},30277:(e,t,n)=>{var r=n(46067);e.exports=function(e,t,n,i){return r(e,(function(e,r,o){t(i,e,n(e),o)})),i}},74671:(e,t,n)=>{var r=n(81742),i=n(25484);e.exports=function(e,t){return e&&r(t,i(t),e)}},67950:(e,t,n)=>{var r=n(81742),i=n(71973);e.exports=function(e,t){return e&&r(t,i(t),e)}},69519:(e,t,n)=>{var r=n(5216);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},1952:(e,t,n)=>{var r=n(15004),i=n(35219),o=n(49237),a=n(74671),s=n(67950),l=n(78002),c=n(10073),u=n(62877),d=n(5963),h=n(20922),p=n(99970),f=n(5313),m=n(84279),g=n(96579),v=n(93750),y=n(46296),b=n(98267),x=n(92142),w=n(95188),S=n(77411),_=n(25484),C=n(71973),E=1,T=2,O=4,N="[object Arguments]",k="[object Function]",j="[object GeneratorFunction]",I="[object Object]",P={};P[N]=P["[object Array]"]=P["[object ArrayBuffer]"]=P["[object DataView]"]=P["[object Boolean]"]=P["[object Date]"]=P["[object Float32Array]"]=P["[object Float64Array]"]=P["[object Int8Array]"]=P["[object Int16Array]"]=P["[object Int32Array]"]=P["[object Map]"]=P["[object Number]"]=P[I]=P["[object RegExp]"]=P["[object Set]"]=P["[object String]"]=P["[object Symbol]"]=P["[object Uint8Array]"]=P["[object Uint8ClampedArray]"]=P["[object Uint16Array]"]=P["[object Uint32Array]"]=!0,P["[object Error]"]=P[k]=P["[object WeakMap]"]=!1,e.exports=function e(t,n,D,A,R,M){var L,F=n&E,z=n&T,B=n&O;if(D&&(L=R?D(t,A,R,M):D(t)),void 0!==L)return L;if(!w(t))return t;var U=y(t);if(U){if(L=m(t),!F)return c(t,L)}else{var H=f(t),V=H==k||H==j;if(b(t))return l(t,F);if(H==I||H==N||V&&!R){if(L=z||V?{}:v(t),!F)return z?d(t,s(L,t)):u(t,a(L,t))}else{if(!P[H])return R?t:{};L=g(t,H,F)}}M||(M=new r);var G=M.get(t);if(G)return G;M.set(t,L),S(t)?t.forEach((function(r){L.add(e(r,n,D,r,t,M))})):x(t)&&t.forEach((function(r,i){L.set(i,e(r,n,D,i,t,M))}));var W=U?void 0:(B?z?p:h:z?C:_)(t);return i(W||t,(function(r,i){W&&(r=t[i=r]),o(L,i,e(r,n,D,i,t,M))})),L}},16925:(e,t,n)=>{var r=n(95188),i=Object.create,o=function(){function e(){}return function(t){if(!r(t))return{};if(i)return i(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},46067:(e,t,n)=>{var r=n(56713),i=n(79607)(r);e.exports=i},81601:e=>{e.exports=function(e,t,n,r){for(var i=e.length,o=n+(r?1:-1);r?o--:++o<i;)if(t(e[o],o,e))return o;return-1}},54412:(e,t,n)=>{var r=n(17174),i=n(85157);e.exports=function e(t,n,o,a,s){var l=-1,c=t.length;for(o||(o=i),s||(s=[]);++l<c;){var u=t[l];n>0&&o(u)?n>1?e(u,n-1,o,a,s):r(s,u):a||(s[s.length]=u)}return s}},97539:(e,t,n)=>{var r=n(15375)();e.exports=r},56713:(e,t,n)=>{var r=n(97539),i=n(25484);e.exports=function(e,t){return e&&r(e,t,i)}},8013:(e,t,n)=>{var r=n(31534),i=n(6996);e.exports=function(e,t){for(var n=0,o=(t=r(t,e)).length;null!=e&&n<o;)e=e[i(t[n++])];return n&&n==o?e:void 0}},49178:(e,t,n)=>{var r=n(17174),i=n(46296);e.exports=function(e,t,n){var o=t(e);return i(e)?o:r(o,n(e))}},59704:(e,t,n)=>{var r=n(62279),i=n(6419),o=n(66949),a="[object Null]",s="[object Undefined]",l=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?s:a:l&&l in Object(e)?i(e):o(e)}},61964:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},34698:(e,t,n)=>{var r=n(81601),i=n(49690),o=n(44395);e.exports=function(e,t,n){return t===t?o(e,t,n):r(e,i,n)}},43562:(e,t,n)=>{var r=n(59704),i=n(22542),o="[object Arguments]";e.exports=function(e){return i(e)&&r(e)==o}},94193:(e,t,n)=>{var r=n(17345),i=n(22542);e.exports=function e(t,n,o,a,s){return t===n||(null==t||null==n||!i(t)&&!i(n)?t!==t&&n!==n:r(t,n,o,a,e,s))}},17345:(e,t,n)=>{var r=n(15004),i=n(89886),o=n(63811),a=n(80163),s=n(5313),l=n(46296),c=n(98267),u=n(34057),d=1,h="[object Arguments]",p="[object Array]",f="[object Object]",m=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,g,v,y){var b=l(e),x=l(t),w=b?p:s(e),S=x?p:s(t),_=(w=w==h?f:w)==f,C=(S=S==h?f:S)==f,E=w==S;if(E&&c(e)){if(!c(t))return!1;b=!0,_=!1}if(E&&!_)return y||(y=new r),b||u(e)?i(e,t,n,g,v,y):o(e,t,w,n,g,v,y);if(!(n&d)){var T=_&&m.call(e,"__wrapped__"),O=C&&m.call(t,"__wrapped__");if(T||O){var N=T?e.value():e,k=O?t.value():t;return y||(y=new r),v(N,k,n,g,y)}}return!!E&&(y||(y=new r),a(e,t,n,g,v,y))}},90247:(e,t,n)=>{var r=n(5313),i=n(22542),o="[object Map]";e.exports=function(e){return i(e)&&r(e)==o}},56358:(e,t,n)=>{var r=n(15004),i=n(94193),o=1,a=2;e.exports=function(e,t,n,s){var l=n.length,c=l,u=!s;if(null==e)return!c;for(e=Object(e);l--;){var d=n[l];if(u&&d[2]?d[1]!==e[d[0]]:!(d[0]in e))return!1}for(;++l<c;){var h=(d=n[l])[0],p=e[h],f=d[1];if(u&&d[2]){if(void 0===p&&!(h in e))return!1}else{var m=new r;if(s)var g=s(p,f,h,e,t,m);if(!(void 0===g?i(f,p,o|a,s,m):g))return!1}}return!0}},49690:e=>{e.exports=function(e){return e!==e}},70270:(e,t,n)=>{var r=n(81188),i=n(28502),o=n(95188),a=n(21616),s=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,u=l.toString,d=c.hasOwnProperty,h=RegExp("^"+u.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||i(e))&&(r(e)?h:s).test(a(e))}},81594:(e,t,n)=>{var r=n(5313),i=n(22542),o="[object Set]";e.exports=function(e){return i(e)&&r(e)==o}},77088:(e,t,n)=>{var r=n(59704),i=n(18564),o=n(22542),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&i(e.length)&&!!a[r(e)]}},67173:(e,t,n)=>{var r=n(61059),i=n(31451),o=n(5887),a=n(46296),s=n(90310);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?a(e)?i(e[0],e[1]):r(e):s(e)}},36539:(e,t,n)=>{var r=n(55241),i=n(8848),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return i(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},35487:(e,t,n)=>{var r=n(95188),i=n(55241),o=n(97122),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=i(e),n=[];for(var s in e)("constructor"!=s||!t&&a.call(e,s))&&n.push(s);return n}},16484:(e,t,n)=>{var r=n(46067),i=n(75345);e.exports=function(e,t){var n=-1,o=i(e)?Array(e.length):[];return r(e,(function(e,r,i){o[++n]=t(e,r,i)})),o}},61059:(e,t,n)=>{var r=n(56358),i=n(58428),o=n(41452);e.exports=function(e){var t=i(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},31451:(e,t,n)=>{var r=n(94193),i=n(63639),o=n(32183),a=n(32014),s=n(62752),l=n(41452),c=n(6996),u=1,d=2;e.exports=function(e,t){return a(e)&&s(t)?l(c(e),t):function(n){var a=i(n,e);return void 0===a&&a===t?o(n,e):r(t,a,u|d)}}},28141:(e,t,n)=>{var r=n(15004),i=n(17509),o=n(97539),a=n(13149),s=n(95188),l=n(71973),c=n(49864);e.exports=function e(t,n,u,d,h){t!==n&&o(n,(function(o,l){if(h||(h=new r),s(o))a(t,n,l,u,e,d,h);else{var p=d?d(c(t,l),o,l+"",t,n,h):void 0;void 0===p&&(p=o),i(t,l,p)}}),l)}},13149:(e,t,n)=>{var r=n(17509),i=n(78002),o=n(39044),a=n(10073),s=n(93750),l=n(38492),c=n(46296),u=n(55109),d=n(98267),h=n(81188),p=n(95188),f=n(39010),m=n(34057),g=n(49864),v=n(78226);e.exports=function(e,t,n,y,b,x,w){var S=g(e,n),_=g(t,n),C=w.get(_);if(C)r(e,n,C);else{var E=x?x(S,_,n+"",e,t,w):void 0,T=void 0===E;if(T){var O=c(_),N=!O&&d(_),k=!O&&!N&&m(_);E=_,O||N||k?c(S)?E=S:u(S)?E=a(S):N?(T=!1,E=i(_,!0)):k?(T=!1,E=o(_,!0)):E=[]:f(_)||l(_)?(E=S,l(S)?E=v(S):p(S)&&!h(S)||(E=s(_))):T=!1}T&&(w.set(_,E),b(E,_,y,x,w),w.delete(_)),r(e,n,E)}}},16076:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},9270:(e,t,n)=>{var r=n(8013);e.exports=function(e){return function(t){return r(t,e)}}},55199:e=>{var t=Math.ceil,n=Math.max;e.exports=function(e,r,i,o){for(var a=-1,s=n(t((r-e)/(i||1)),0),l=Array(s);s--;)l[o?s:++a]=e,e+=i;return l}},42872:(e,t,n)=>{var r=n(5887),i=n(60485),o=n(37232);e.exports=function(e,t){return o(i(e,t,r),e+"")}},93848:(e,t,n)=>{var r=n(49237),i=n(31534),o=n(64764),a=n(95188),s=n(6996);e.exports=function(e,t,n,l){if(!a(e))return e;for(var c=-1,u=(t=i(t,e)).length,d=u-1,h=e;null!=h&&++c<u;){var p=s(t[c]),f=n;if("__proto__"===p||"constructor"===p||"prototype"===p)return e;if(c!=d){var m=h[p];void 0===(f=l?l(m,p,h):void 0)&&(f=a(m)?m:o(t[c+1])?[]:{})}r(h,p,f),h=h[p]}return e}},24609:(e,t,n)=>{var r=n(71715),i=n(5216),o=n(5887),a=i?function(e,t){return i(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:o;e.exports=a},12287:e=>{e.exports=function(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(i);++r<i;)o[r]=e[r+t];return o}},40424:(e,t,n)=>{var r=n(46067);e.exports=function(e,t){var n;return r(e,(function(e,r,i){return!(n=t(e,r,i))})),!!n}},94558:e=>{e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},60139:(e,t,n)=>{var r=n(62279),i=n(40341),o=n(46296),a=n(36197),s=1/0,l=r?r.prototype:void 0,c=l?l.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return i(t,e)+"";if(a(t))return c?c.call(t):"";var n=t+"";return"0"==n&&1/t==-s?"-0":n}},10480:(e,t,n)=>{var r=n(86948),i=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(i,""):e}},31702:e=>{e.exports=function(e){return function(t){return e(t)}}},28241:(e,t,n)=>{var r=n(75304),i=n(73784),o=n(58713),a=n(58024),s=n(54289),l=n(35886),c=200;e.exports=function(e,t,n){var u=-1,d=i,h=e.length,p=!0,f=[],m=f;if(n)p=!1,d=o;else if(h>=c){var g=t?null:s(e);if(g)return l(g);p=!1,d=a,m=new r}else m=t?[]:f;e:for(;++u<h;){var v=e[u],y=t?t(v):v;if(v=n||0!==v?v:0,p&&y===y){for(var b=m.length;b--;)if(m[b]===y)continue e;t&&m.push(y),f.push(v)}else d(m,y,n)||(m!==f&&m.push(y),f.push(v))}return f}},32684:(e,t,n)=>{var r=n(31534),i=n(10207),o=n(25472),a=n(6996);e.exports=function(e,t){return t=r(t,e),null==(e=o(e,t))||delete e[a(i(t))]}},58024:e=>{e.exports=function(e,t){return e.has(t)}},44499:(e,t,n)=>{var r=n(5887);e.exports=function(e){return"function"==typeof e?e:r}},31534:(e,t,n)=>{var r=n(46296),i=n(32014),o=n(18502),a=n(51001);e.exports=function(e,t){return r(e)?e:i(e,t)?[e]:o(a(e))}},94864:(e,t,n)=>{var r=n(12287);e.exports=function(e,t,n){var i=e.length;return n=void 0===n?i:n,!t&&n>=i?e:r(e,t,n)}},83226:(e,t,n)=>{var r=n(91385);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},78002:(e,t,n)=>{e=n.nmd(e);var r=n(57849),i=t&&!t.nodeType&&t,o=i&&e&&!e.nodeType&&e,a=o&&o.exports===i?r.Buffer:void 0,s=a?a.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=s?s(n):new e.constructor(n);return e.copy(r),r}},83544:(e,t,n)=>{var r=n(83226);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},51970:e=>{var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},16754:(e,t,n)=>{var r=n(62279),i=r?r.prototype:void 0,o=i?i.valueOf:void 0;e.exports=function(e){return o?Object(o.call(e)):{}}},39044:(e,t,n)=>{var r=n(83226);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},10073:e=>{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},81742:(e,t,n)=>{var r=n(49237),i=n(69519);e.exports=function(e,t,n,o){var a=!n;n||(n={});for(var s=-1,l=t.length;++s<l;){var c=t[s],u=o?o(n[c],e[c],c,n,e):void 0;void 0===u&&(u=e[c]),a?i(n,c,u):r(n,c,u)}return n}},62877:(e,t,n)=>{var r=n(81742),i=n(2760);e.exports=function(e,t){return r(e,i(e),t)}},5963:(e,t,n)=>{var r=n(81742),i=n(68825);e.exports=function(e,t){return r(e,i(e),t)}},81401:(e,t,n)=>{var r=n(57849)["__core-js_shared__"];e.exports=r},81670:(e,t,n)=>{var r=n(38626),i=n(30277),o=n(67173),a=n(46296);e.exports=function(e,t){return function(n,s){var l=a(n)?r:i,c=t?t():{};return l(n,e,o(s,2),c)}}},89490:(e,t,n)=>{var r=n(42872),i=n(10335);e.exports=function(e){return r((function(t,n){var r=-1,o=n.length,a=o>1?n[o-1]:void 0,s=o>2?n[2]:void 0;for(a=e.length>3&&"function"==typeof a?(o--,a):void 0,s&&i(n[0],n[1],s)&&(a=o<3?void 0:a,o=1),t=Object(t);++r<o;){var l=n[r];l&&e(t,l,r,a)}return t}))}},79607:(e,t,n)=>{var r=n(75345);e.exports=function(e,t){return function(n,i){if(null==n)return n;if(!r(n))return e(n,i);for(var o=n.length,a=t?o:-1,s=Object(n);(t?a--:++a<o)&&!1!==i(s[a],a,s););return n}}},15375:e=>{e.exports=function(e){return function(t,n,r){for(var i=-1,o=Object(t),a=r(t),s=a.length;s--;){var l=a[e?s:++i];if(!1===n(o[l],l,o))break}return t}}},57918:(e,t,n)=>{var r=n(94864),i=n(98099),o=n(92606),a=n(51001);e.exports=function(e){return function(t){t=a(t);var n=i(t)?o(t):void 0,s=n?n[0]:t.charAt(0),l=n?r(n,1).join(""):t.slice(1);return s[e]()+l}}},77529:(e,t,n)=>{var r=n(55199),i=n(10335),o=n(85850);e.exports=function(e){return function(t,n,a){return a&&"number"!=typeof a&&i(t,n,a)&&(n=a=void 0),t=o(t),void 0===n?(n=t,t=0):n=o(n),a=void 0===a?t<n?1:-1:o(a),r(t,n,a,e)}}},411:(e,t,n)=>{var r=n(57849),i=n(94100),o=n(57630),a=n(51001),s=r.isFinite,l=Math.min;e.exports=function(e){var t=Math[e];return function(e,n){if(e=o(e),(n=null==n?0:l(i(n),292))&&s(e)){var r=(a(e)+"e").split("e"),c=t(r[0]+"e"+(+r[1]+n));return+((r=(a(c)+"e").split("e"))[0]+"e"+(+r[1]-n))}return t(e)}}},54289:(e,t,n)=>{var r=n(70607),i=n(91200),o=n(35886),a=r&&1/o(new r([,-0]))[1]==1/0?function(e){return new r(e)}:i;e.exports=a},96274:(e,t,n)=>{var r=n(39010);e.exports=function(e){return r(e)?void 0:e}},5216:(e,t,n)=>{var r=n(72892),i=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();e.exports=i},89886:(e,t,n)=>{var r=n(75304),i=n(7138),o=n(58024),a=1,s=2;e.exports=function(e,t,n,l,c,u){var d=n&a,h=e.length,p=t.length;if(h!=p&&!(d&&p>h))return!1;var f=u.get(e),m=u.get(t);if(f&&m)return f==t&&m==e;var g=-1,v=!0,y=n&s?new r:void 0;for(u.set(e,t),u.set(t,e);++g<h;){var b=e[g],x=t[g];if(l)var w=d?l(x,b,g,t,e,u):l(b,x,g,e,t,u);if(void 0!==w){if(w)continue;v=!1;break}if(y){if(!i(t,(function(e,t){if(!o(y,t)&&(b===e||c(b,e,n,l,u)))return y.push(t)}))){v=!1;break}}else if(b!==x&&!c(b,x,n,l,u)){v=!1;break}}return u.delete(e),u.delete(t),v}},63811:(e,t,n)=>{var r=n(62279),i=n(91385),o=n(83272),a=n(89886),s=n(69278),l=n(35886),c=1,u=2,d="[object Boolean]",h="[object Date]",p="[object Error]",f="[object Map]",m="[object Number]",g="[object RegExp]",v="[object Set]",y="[object String]",b="[object Symbol]",x="[object ArrayBuffer]",w="[object DataView]",S=r?r.prototype:void 0,_=S?S.valueOf:void 0;e.exports=function(e,t,n,r,S,C,E){switch(n){case w:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case x:return!(e.byteLength!=t.byteLength||!C(new i(e),new i(t)));case d:case h:case m:return o(+e,+t);case p:return e.name==t.name&&e.message==t.message;case g:case y:return e==t+"";case f:var T=s;case v:var O=r&c;if(T||(T=l),e.size!=t.size&&!O)return!1;var N=E.get(e);if(N)return N==t;r|=u,E.set(e,t);var k=a(T(e),T(t),r,S,C,E);return E.delete(e),k;case b:if(_)return _.call(e)==_.call(t)}return!1}},80163:(e,t,n)=>{var r=n(20922),i=1,o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,a,s,l){var c=n&i,u=r(e),d=u.length;if(d!=r(t).length&&!c)return!1;for(var h=d;h--;){var p=u[h];if(!(c?p in t:o.call(t,p)))return!1}var f=l.get(e),m=l.get(t);if(f&&m)return f==t&&m==e;var g=!0;l.set(e,t),l.set(t,e);for(var v=c;++h<d;){var y=e[p=u[h]],b=t[p];if(a)var x=c?a(b,y,p,t,e,l):a(y,b,p,e,t,l);if(!(void 0===x?y===b||s(y,b,n,a,l):x)){g=!1;break}v||(v="constructor"==p)}if(g&&!v){var w=e.constructor,S=t.constructor;w==S||!("constructor"in e)||!("constructor"in t)||"function"==typeof w&&w instanceof w&&"function"==typeof S&&S instanceof S||(g=!1)}return l.delete(e),l.delete(t),g}},65573:(e,t,n)=>{var r=n(83298),i=n(60485),o=n(37232);e.exports=function(e){return o(i(e,void 0,r),e+"")}},46099:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},20922:(e,t,n)=>{var r=n(49178),i=n(2760),o=n(25484);e.exports=function(e){return r(e,o,i)}},99970:(e,t,n)=>{var r=n(49178),i=n(68825),o=n(71973);e.exports=function(e){return r(e,o,i)}},89511:(e,t,n)=>{var r=n(50565);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},58428:(e,t,n)=>{var r=n(62752),i=n(25484);e.exports=function(e){for(var t=i(e),n=t.length;n--;){var o=t[n],a=e[o];t[n]=[o,a,r(a)]}return t}},72892:(e,t,n)=>{var r=n(70270),i=n(97453);e.exports=function(e,t){var n=i(e,t);return r(n)?n:void 0}},36842:(e,t,n)=>{var r=n(38007)(Object.getPrototypeOf,Object);e.exports=r},6419:(e,t,n)=>{var r=n(62279),i=Object.prototype,o=i.hasOwnProperty,a=i.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(l){}var i=a.call(e);return r&&(t?e[s]=n:delete e[s]),i}},2760:(e,t,n)=>{var r=n(82169),i=n(92128),o=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(e){return null==e?[]:(e=Object(e),r(a(e),(function(t){return o.call(e,t)})))}:i;e.exports=s},68825:(e,t,n)=>{var r=n(17174),i=n(36842),o=n(2760),a=n(92128),s=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,o(e)),e=i(e);return t}:a;e.exports=s},5313:(e,t,n)=>{var r=n(22849),i=n(44086),o=n(42115),a=n(70607),s=n(20177),l=n(59704),c=n(21616),u="[object Map]",d="[object Promise]",h="[object Set]",p="[object WeakMap]",f="[object DataView]",m=c(r),g=c(i),v=c(o),y=c(a),b=c(s),x=l;(r&&x(new r(new ArrayBuffer(1)))!=f||i&&x(new i)!=u||o&&x(o.resolve())!=d||a&&x(new a)!=h||s&&x(new s)!=p)&&(x=function(e){var t=l(e),n="[object Object]"==t?e.constructor:void 0,r=n?c(n):"";if(r)switch(r){case m:return f;case g:return u;case v:return d;case y:return h;case b:return p}return t}),e.exports=x},97453:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},5538:(e,t,n)=>{var r=n(31534),i=n(38492),o=n(46296),a=n(64764),s=n(18564),l=n(6996);e.exports=function(e,t,n){for(var c=-1,u=(t=r(t,e)).length,d=!1;++c<u;){var h=l(t[c]);if(!(d=null!=e&&n(e,h)))break;e=e[h]}return d||++c!=u?d:!!(u=null==e?0:e.length)&&s(u)&&a(h,u)&&(o(e)||i(e))}},98099:e=>{var t=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return t.test(e)}},29076:(e,t,n)=>{var r=n(18501);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},76009:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},86992:(e,t,n)=>{var r=n(18501),i="__lodash_hash_undefined__",o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return n===i?void 0:n}return o.call(t,e)?t[e]:void 0}},59120:(e,t,n)=>{var r=n(18501),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:i.call(t,e)}},25899:(e,t,n)=>{var r=n(18501),i="__lodash_hash_undefined__";e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?i:t,this}},84279:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,r=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},96579:(e,t,n)=>{var r=n(83226),i=n(83544),o=n(51970),a=n(16754),s=n(39044),l="[object Boolean]",c="[object Date]",u="[object Map]",d="[object Number]",h="[object RegExp]",p="[object Set]",f="[object String]",m="[object Symbol]",g="[object ArrayBuffer]",v="[object DataView]",y="[object Float32Array]",b="[object Float64Array]",x="[object Int8Array]",w="[object Int16Array]",S="[object Int32Array]",_="[object Uint8Array]",C="[object Uint8ClampedArray]",E="[object Uint16Array]",T="[object Uint32Array]";e.exports=function(e,t,n){var O=e.constructor;switch(t){case g:return r(e);case l:case c:return new O(+e);case v:return i(e,n);case y:case b:case x:case w:case S:case _:case C:case E:case T:return s(e,n);case u:return new O;case d:case f:return new O(e);case h:return o(e);case p:return new O;case m:return a(e)}}},93750:(e,t,n)=>{var r=n(16925),i=n(36842),o=n(55241);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:r(i(e))}},85157:(e,t,n)=>{var r=n(62279),i=n(38492),o=n(46296),a=r?r.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||i(e)||!!(a&&e&&e[a])}},64764:e=>{var t=9007199254740991,n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,r){var i=typeof e;return!!(r=null==r?t:r)&&("number"==i||"symbol"!=i&&n.test(e))&&e>-1&&e%1==0&&e<r}},10335:(e,t,n)=>{var r=n(83272),i=n(75345),o=n(64764),a=n(95188);e.exports=function(e,t,n){if(!a(n))return!1;var s=typeof t;return!!("number"==s?i(n)&&o(t,n.length):"string"==s&&t in n)&&r(n[t],e)}},32014:(e,t,n)=>{var r=n(46296),i=n(36197),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!i(e))||(a.test(e)||!o.test(e)||null!=t&&e in Object(t))}},50565:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},28502:(e,t,n)=>{var r=n(81401),i=function(){var e=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();e.exports=function(e){return!!i&&i in e}},55241:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},62752:(e,t,n)=>{var r=n(95188);e.exports=function(e){return e===e&&!r(e)}},29917:e=>{e.exports=function(){this.__data__=[],this.size=0}},43490:(e,t,n)=>{var r=n(11786),i=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():i.call(t,n,1),--this.size,!0)}},64872:(e,t,n)=>{var r=n(11786);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},21744:(e,t,n)=>{var r=n(11786);e.exports=function(e){return r(this.__data__,e)>-1}},88820:(e,t,n)=>{var r=n(11786);e.exports=function(e,t){var n=this.__data__,i=r(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this}},27161:(e,t,n)=>{var r=n(90145),i=n(18084),o=n(44086);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||i),string:new r}}},65317:(e,t,n)=>{var r=n(89511);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},93297:(e,t,n)=>{var r=n(89511);e.exports=function(e){return r(this,e).get(e)}},25771:(e,t,n)=>{var r=n(89511);e.exports=function(e){return r(this,e).has(e)}},633:(e,t,n)=>{var r=n(89511);e.exports=function(e,t){var n=r(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this}},69278:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},41452:e=>{e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},75103:(e,t,n)=>{var r=n(9161),i=500;e.exports=function(e){var t=r(e,(function(e){return n.size===i&&n.clear(),e})),n=t.cache;return t}},18501:(e,t,n)=>{var r=n(72892)(Object,"create");e.exports=r},8848:(e,t,n)=>{var r=n(38007)(Object.keys,Object);e.exports=r},97122:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},24542:(e,t,n)=>{e=n.nmd(e);var r=n(46099),i=t&&!t.nodeType&&t,o=i&&e&&!e.nodeType&&e,a=o&&o.exports===i&&r.process,s=function(){try{var e=o&&o.require&&o.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(t){}}();e.exports=s},66949:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},38007:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},60485:(e,t,n)=>{var r=n(12539),i=Math.max;e.exports=function(e,t,n){return t=i(void 0===t?e.length-1:t,0),function(){for(var o=arguments,a=-1,s=i(o.length-t,0),l=Array(s);++a<s;)l[a]=o[t+a];a=-1;for(var c=Array(t+1);++a<t;)c[a]=o[a];return c[t]=n(l),r(e,this,c)}}},25472:(e,t,n)=>{var r=n(8013),i=n(12287);e.exports=function(e,t){return t.length<2?e:r(e,i(t,0,-1))}},57849:(e,t,n)=>{var r=n(46099),i="object"==typeof self&&self&&self.Object===Object&&self,o=r||i||Function("return this")();e.exports=o},49864:e=>{e.exports=function(e,t){if(("constructor"!==t||"function"!==typeof e[t])&&"__proto__"!=t)return e[t]}},93648:e=>{var t="__lodash_hash_undefined__";e.exports=function(e){return this.__data__.set(e,t),this}},56683:e=>{e.exports=function(e){return this.__data__.has(e)}},35886:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},37232:(e,t,n)=>{var r=n(24609),i=n(26552)(r);e.exports=i},26552:e=>{var t=800,n=16,r=Date.now;e.exports=function(e){var i=0,o=0;return function(){var a=r(),s=n-(a-o);if(o=a,s>0){if(++i>=t)return arguments[0]}else i=0;return e.apply(void 0,arguments)}}},41662:(e,t,n)=>{var r=n(18084);e.exports=function(){this.__data__=new r,this.size=0}},97368:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},87454:e=>{e.exports=function(e){return this.__data__.get(e)}},16596:e=>{e.exports=function(e){return this.__data__.has(e)}},32052:(e,t,n)=>{var r=n(18084),i=n(44086),o=n(47059),a=200;e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var s=n.__data__;if(!i||s.length<a-1)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(s)}return n.set(e,t),this.size=n.size,this}},44395:e=>{e.exports=function(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}},92606:(e,t,n)=>{var r=n(58961),i=n(98099),o=n(55412);e.exports=function(e){return i(e)?o(e):r(e)}},18502:(e,t,n)=>{var r=n(75103),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,a=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(i,(function(e,n,r,i){t.push(r?i.replace(o,"$1"):n||e)})),t}));e.exports=a},6996:(e,t,n)=>{var r=n(36197),i=1/0;e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-i?"-0":t}},21616:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},86948:e=>{var t=/\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},55412:e=>{var t="\\ud800-\\udfff",n="["+t+"]",r="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",i="\\ud83c[\\udffb-\\udfff]",o="[^"+t+"]",a="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",l="(?:"+r+"|"+i+")"+"?",c="[\\ufe0e\\ufe0f]?",u=c+l+("(?:\\u200d(?:"+[o,a,s].join("|")+")"+c+l+")*"),d="(?:"+[o+r+"?",r,a,s,n].join("|")+")",h=RegExp(i+"(?="+i+")|"+d+u,"g");e.exports=function(e){return e.match(h)||[]}},6381:(e,t,n)=>{var r=n(51001),i=n(17445);e.exports=function(e){return i(r(e).toLowerCase())}},63585:(e,t,n)=>{var r=n(1952),i=1,o=4;e.exports=function(e){return r(e,i|o)}},71715:e=>{e.exports=function(e){return function(){return e}}},57002:(e,t,n)=>{var r=n(95188),i=n(44864),o=n(57630),a="Expected a function",s=Math.max,l=Math.min;e.exports=function(e,t,n){var c,u,d,h,p,f,m=0,g=!1,v=!1,y=!0;if("function"!=typeof e)throw new TypeError(a);function b(t){var n=c,r=u;return c=u=void 0,m=t,h=e.apply(r,n)}function x(e){var n=e-f;return void 0===f||n>=t||n<0||v&&e-m>=d}function w(){var e=i();if(x(e))return S(e);p=setTimeout(w,function(e){var n=t-(e-f);return v?l(n,d-(e-m)):n}(e))}function S(e){return p=void 0,y&&c?b(e):(c=u=void 0,h)}function _(){var e=i(),n=x(e);if(c=arguments,u=this,f=e,n){if(void 0===p)return function(e){return m=e,p=setTimeout(w,t),g?b(e):h}(f);if(v)return clearTimeout(p),p=setTimeout(w,t),b(f)}return void 0===p&&(p=setTimeout(w,t)),h}return t=o(t)||0,r(n)&&(g=!!n.leading,d=(v="maxWait"in n)?s(o(n.maxWait)||0,t):d,y="trailing"in n?!!n.trailing:y),_.cancel=function(){void 0!==p&&clearTimeout(p),m=0,c=f=u=p=void 0},_.flush=function(){return void 0===p?h:S(i())},_}},84142:(e,t,n)=>{e.exports=n(27663)},83272:e=>{e.exports=function(e,t){return e===t||e!==e&&t!==t}},43680:(e,t,n)=>{var r=n(51001),i=/[\\^$.*+?()[\]{}|]/g,o=RegExp(i.source);e.exports=function(e){return(e=r(e))&&o.test(e)?e.replace(i,"\\$&"):e}},83298:(e,t,n)=>{var r=n(54412);e.exports=function(e){return(null==e?0:e.length)?r(e,1):[]}},27663:(e,t,n)=>{var r=n(35219),i=n(46067),o=n(44499),a=n(46296);e.exports=function(e,t){return(a(e)?r:i)(e,o(t))}},63639:(e,t,n)=>{var r=n(8013);e.exports=function(e,t,n){var i=null==e?void 0:r(e,t);return void 0===i?n:i}},46754:(e,t,n)=>{var r=n(69519),i=n(81670),o=Object.prototype.hasOwnProperty,a=i((function(e,t,n){o.call(e,n)?e[n].push(t):r(e,n,[t])}));e.exports=a},32183:(e,t,n)=>{var r=n(61964),i=n(5538);e.exports=function(e,t){return null!=e&&i(e,t,r)}},5887:e=>{e.exports=function(e){return e}},38492:(e,t,n)=>{var r=n(43562),i=n(22542),o=Object.prototype,a=o.hasOwnProperty,s=o.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return i(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},46296:e=>{var t=Array.isArray;e.exports=t},75345:(e,t,n)=>{var r=n(81188),i=n(18564);e.exports=function(e){return null!=e&&i(e.length)&&!r(e)}},55109:(e,t,n)=>{var r=n(75345),i=n(22542);e.exports=function(e){return i(e)&&r(e)}},98267:(e,t,n)=>{e=n.nmd(e);var r=n(57849),i=n(53388),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,s=a&&a.exports===o?r.Buffer:void 0,l=(s?s.isBuffer:void 0)||i;e.exports=l},85198:(e,t,n)=>{var r=n(36539),i=n(5313),o=n(38492),a=n(46296),s=n(75345),l=n(98267),c=n(55241),u=n(34057),d="[object Map]",h="[object Set]",p=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(s(e)&&(a(e)||"string"==typeof e||"function"==typeof e.splice||l(e)||u(e)||o(e)))return!e.length;var t=i(e);if(t==d||t==h)return!e.size;if(c(e))return!r(e).length;for(var n in e)if(p.call(e,n))return!1;return!0}},85690:(e,t,n)=>{var r=n(94193);e.exports=function(e,t){return r(e,t)}},81188:(e,t,n)=>{var r=n(59704),i=n(95188),o="[object AsyncFunction]",a="[object Function]",s="[object GeneratorFunction]",l="[object Proxy]";e.exports=function(e){if(!i(e))return!1;var t=r(e);return t==a||t==s||t==o||t==l}},18564:e=>{var t=9007199254740991;e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=t}},92142:(e,t,n)=>{var r=n(90247),i=n(31702),o=n(24542),a=o&&o.isMap,s=a?i(a):r;e.exports=s},95188:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},22542:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},39010:(e,t,n)=>{var r=n(59704),i=n(36842),o=n(22542),a="[object Object]",s=Function.prototype,l=Object.prototype,c=s.toString,u=l.hasOwnProperty,d=c.call(Object);e.exports=function(e){if(!o(e)||r(e)!=a)return!1;var t=i(e);if(null===t)return!0;var n=u.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==d}},77411:(e,t,n)=>{var r=n(81594),i=n(31702),o=n(24542),a=o&&o.isSet,s=a?i(a):r;e.exports=s},36197:(e,t,n)=>{var r=n(59704),i=n(22542),o="[object Symbol]";e.exports=function(e){return"symbol"==typeof e||i(e)&&r(e)==o}},34057:(e,t,n)=>{var r=n(77088),i=n(31702),o=n(24542),a=o&&o.isTypedArray,s=a?i(a):r;e.exports=s},25484:(e,t,n)=>{var r=n(34087),i=n(36539),o=n(75345);e.exports=function(e){return o(e)?r(e):i(e)}},71973:(e,t,n)=>{var r=n(34087),i=n(35487),o=n(75345);e.exports=function(e){return o(e)?r(e,!0):i(e)}},10207:e=>{e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},99090:(e,t,n)=>{var r=n(40341),i=n(67173),o=n(16484),a=n(46296);e.exports=function(e,t){return(a(e)?r:o)(e,i(t,3))}},9161:(e,t,n)=>{var r=n(47059),i="Expected a function";function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError(i);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(o.Cache||r),n}o.Cache=r,e.exports=o},3186:(e,t,n)=>{var r=n(28141),i=n(89490)((function(e,t,n){r(e,t,n)}));e.exports=i},51804:(e,t,n)=>{var r=n(28141),i=n(89490)((function(e,t,n,i){r(e,t,n,i)}));e.exports=i},91200:e=>{e.exports=function(){}},44864:(e,t,n)=>{var r=n(57849);e.exports=function(){return r.Date.now()}},87863:(e,t,n)=>{var r=n(40341),i=n(1952),o=n(32684),a=n(31534),s=n(81742),l=n(96274),c=n(65573),u=n(99970),d=c((function(e,t){var n={};if(null==e)return n;var c=!1;t=r(t,(function(t){return t=a(t,e),c||(c=t.length>1),t})),s(e,u(e),n),c&&(n=i(n,7,l));for(var d=t.length;d--;)o(n,t[d]);return n}));e.exports=d},90310:(e,t,n)=>{var r=n(16076),i=n(9270),o=n(32014),a=n(6996);e.exports=function(e){return o(e)?r(a(e)):i(e)}},28925:(e,t,n)=>{var r=n(77529)();e.exports=r},54466:(e,t,n)=>{var r=n(411)("round");e.exports=r},9447:(e,t,n)=>{var r=n(93848);e.exports=function(e,t,n){return null==e?e:r(e,t,n)}},26364:(e,t,n)=>{var r=n(7138),i=n(67173),o=n(40424),a=n(46296),s=n(10335);e.exports=function(e,t,n){var l=a(e)?r:o;return n&&s(e,t,n)&&(t=void 0),l(e,i(t,3))}},92128:e=>{e.exports=function(){return[]}},53388:e=>{e.exports=function(){return!1}},43832:(e,t,n)=>{var r=n(57002),i=n(95188),o="Expected a function";e.exports=function(e,t,n){var a=!0,s=!0;if("function"!=typeof e)throw new TypeError(o);return i(n)&&(a="leading"in n?!!n.leading:a,s="trailing"in n?!!n.trailing:s),r(e,t,{leading:a,maxWait:t,trailing:s})}},85850:(e,t,n)=>{var r=n(57630),i=1/0,o=17976931348623157e292;e.exports=function(e){return e?(e=r(e))===i||e===-i?(e<0?-1:1)*o:e===e?e:0:0===e?e:0}},94100:(e,t,n)=>{var r=n(85850);e.exports=function(e){var t=r(e),n=t%1;return t===t?n?t-n:t:0}},57630:(e,t,n)=>{var r=n(10480),i=n(95188),o=n(36197),a=NaN,s=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return a;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=l.test(e);return n||c.test(e)?u(e.slice(2),n?2:8):s.test(e)?a:+e}},78226:(e,t,n)=>{var r=n(81742),i=n(71973);e.exports=function(e){return r(e,i(e))}},51001:(e,t,n)=>{var r=n(60139);e.exports=function(e){return null==e?"":r(e)}},60619:(e,t,n)=>{var r=n(67173),i=n(28241);e.exports=function(e,t){return e&&e.length?i(e,r(t,2)):[]}},17445:(e,t,n)=>{var r=n(57918)("toUpperCase");e.exports=r},5083:e=>{"use strict";e.exports=function(e){for(var t=function(e){var t,n=1+(e.length+8>>6),r=new Array(16*n);for(t=0;t<16*n;t++)r[t]=0;for(t=0;t<e.length;t++)r[t>>2]|=e.charCodeAt(t)<<(8*e.length+t)%4*8;r[t>>2]|=128<<(8*e.length+t)%4*8;var i=8*e.length;return r[16*n-2]=255&i,r[16*n-2]|=(i>>>8&255)<<8,r[16*n-2]|=(i>>>16&255)<<16,r[16*n-2]|=(i>>>24&255)<<24,r}(e),n=1732584193,r=-271733879,i=-1732584194,s=271733878,h=0;h<t.length;h+=16){var p=n,f=r,m=i,g=s;n=l(n,r,i,s,t[h+0],7,-680876936),s=l(s,n,r,i,t[h+1],12,-389564586),i=l(i,s,n,r,t[h+2],17,606105819),r=l(r,i,s,n,t[h+3],22,-1044525330),n=l(n,r,i,s,t[h+4],7,-176418897),s=l(s,n,r,i,t[h+5],12,1200080426),i=l(i,s,n,r,t[h+6],17,-1473231341),r=l(r,i,s,n,t[h+7],22,-45705983),n=l(n,r,i,s,t[h+8],7,1770035416),s=l(s,n,r,i,t[h+9],12,-1958414417),i=l(i,s,n,r,t[h+10],17,-42063),r=l(r,i,s,n,t[h+11],22,-1990404162),n=l(n,r,i,s,t[h+12],7,1804603682),s=l(s,n,r,i,t[h+13],12,-40341101),i=l(i,s,n,r,t[h+14],17,-1502002290),n=c(n,r=l(r,i,s,n,t[h+15],22,1236535329),i,s,t[h+1],5,-165796510),s=c(s,n,r,i,t[h+6],9,-1069501632),i=c(i,s,n,r,t[h+11],14,643717713),r=c(r,i,s,n,t[h+0],20,-373897302),n=c(n,r,i,s,t[h+5],5,-701558691),s=c(s,n,r,i,t[h+10],9,38016083),i=c(i,s,n,r,t[h+15],14,-660478335),r=c(r,i,s,n,t[h+4],20,-405537848),n=c(n,r,i,s,t[h+9],5,568446438),s=c(s,n,r,i,t[h+14],9,-1019803690),i=c(i,s,n,r,t[h+3],14,-187363961),r=c(r,i,s,n,t[h+8],20,1163531501),n=c(n,r,i,s,t[h+13],5,-1444681467),s=c(s,n,r,i,t[h+2],9,-51403784),i=c(i,s,n,r,t[h+7],14,1735328473),n=u(n,r=c(r,i,s,n,t[h+12],20,-1926607734),i,s,t[h+5],4,-378558),s=u(s,n,r,i,t[h+8],11,-2022574463),i=u(i,s,n,r,t[h+11],16,1839030562),r=u(r,i,s,n,t[h+14],23,-35309556),n=u(n,r,i,s,t[h+1],4,-1530992060),s=u(s,n,r,i,t[h+4],11,1272893353),i=u(i,s,n,r,t[h+7],16,-155497632),r=u(r,i,s,n,t[h+10],23,-1094730640),n=u(n,r,i,s,t[h+13],4,681279174),s=u(s,n,r,i,t[h+0],11,-358537222),i=u(i,s,n,r,t[h+3],16,-722521979),r=u(r,i,s,n,t[h+6],23,76029189),n=u(n,r,i,s,t[h+9],4,-640364487),s=u(s,n,r,i,t[h+12],11,-421815835),i=u(i,s,n,r,t[h+15],16,530742520),n=d(n,r=u(r,i,s,n,t[h+2],23,-995338651),i,s,t[h+0],6,-198630844),s=d(s,n,r,i,t[h+7],10,1126891415),i=d(i,s,n,r,t[h+14],15,-1416354905),r=d(r,i,s,n,t[h+5],21,-57434055),n=d(n,r,i,s,t[h+12],6,1700485571),s=d(s,n,r,i,t[h+3],10,-1894986606),i=d(i,s,n,r,t[h+10],15,-1051523),r=d(r,i,s,n,t[h+1],21,-2054922799),n=d(n,r,i,s,t[h+8],6,1873313359),s=d(s,n,r,i,t[h+15],10,-30611744),i=d(i,s,n,r,t[h+6],15,-1560198380),r=d(r,i,s,n,t[h+13],21,1309151649),n=d(n,r,i,s,t[h+4],6,-145523070),s=d(s,n,r,i,t[h+11],10,-1120210379),i=d(i,s,n,r,t[h+2],15,718787259),r=d(r,i,s,n,t[h+9],21,-343485551),n=o(n,p),r=o(r,f),i=o(i,m),s=o(s,g)}return a(n)+a(r)+a(i)+a(s)};var t="0123456789abcdef";function n(e,t){return(e>>>1|t>>>1)<<1|(1&e|1&t)}function r(e,t){return(e>>>1^t>>>1)<<1|1&e^1&t}function i(e,t){return(e>>>1&t>>>1)<<1|1&e&t}function o(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function a(e){var n,r="";for(n=0;n<=3;n++)r+=t.charAt(e>>8*n+4&15)+t.charAt(e>>8*n&15);return r}function s(e,t,n,r,i,a){return o((s=o(o(t,e),o(r,a)))<<(l=i)|s>>>32-l,n);var s,l}function l(e,t,r,o,a,l,c){return s(n(i(t,r),i(~t,o)),e,t,a,l,c)}function c(e,t,r,o,a,l,c){return s(n(i(t,o),i(r,~o)),e,t,a,l,c)}function u(e,t,n,i,o,a,l){return s(r(r(t,n),i),e,t,o,a,l)}function d(e,t,i,o,a,l,c){return s(r(i,n(t,~o)),e,t,a,l,c)}},40022:function(e,t,n){var r,i,o;i=[n(36453)],void 0===(o="function"===typeof(r=function(e){e.register("locale","bg",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"\u0445\u0438\u043b",million:"\u043c\u043b\u043d",billion:"\u043c\u043b\u0440\u0434",trillion:"\u0442\u0440\u043b\u043d"},ordinal:function(e){return""},currency:{symbol:"\u043b\u0432"}}),e.register("locale","chs",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"\u5343",million:"\u767e\u4e07",billion:"\u5341\u4ebf",trillion:"\u5146"},ordinal:function(e){return"."},currency:{symbol:"\xa5"}}),e.register("locale","cs",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"tis.",million:"mil.",billion:"b",trillion:"t"},ordinal:function(){return"."},currency:{symbol:"K\u010d"}}),e.register("locale","da-dk",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"mio",billion:"mia",trillion:"b"},ordinal:function(e){return"."},currency:{symbol:"DKK"}}),e.register("locale","de-ch",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return"."},currency:{symbol:"CHF"}}),e.register("locale","de",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","en-au",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"$"}}),e.register("locale","en-gb",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"\xa3"}}),e.register("locale","en-za",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"R"}}),e.register("locale","es-es",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"mm",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===t||3===t?"er":2===t?"do":7===t||0===t?"mo":8===t?"vo":9===t?"no":"to"},currency:{symbol:"\u20ac"}}),e.register("locale","es",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"mm",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===t||3===t?"er":2===t?"do":7===t||0===t?"mo":8===t?"vo":9===t?"no":"to"},currency:{symbol:"$"}}),e.register("locale","et",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:" tuh",million:" mln",billion:" mld",trillion:" trl"},ordinal:function(e){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","fi",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"M",billion:"G",trillion:"T"},ordinal:function(e){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","fr-ca",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"M",billion:"G",trillion:"T"},ordinal:function(e){return 1===e?"er":"e"},currency:{symbol:"$"}}),e.register("locale","fr-ch",{delimiters:{thousands:"'",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return 1===e?"er":"e"},currency:{symbol:"CHF"}}),e.register("locale","fr",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return 1===e?"er":"e"},currency:{symbol:"\u20ac"}}),e.register("locale","hu",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"E",million:"M",billion:"Mrd",trillion:"T"},ordinal:function(e){return"."},currency:{symbol:" Ft"}}),e.register("locale","it",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"mila",million:"mil",billion:"b",trillion:"t"},ordinal:function(e){return"\xba"},currency:{symbol:"\u20ac"}}),e.register("locale","ja",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"\u5343",million:"\u767e\u4e07",billion:"\u5341\u5104",trillion:"\u5146"},ordinal:function(e){return"."},currency:{symbol:"\xa5"}}),e.register("locale","lv",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:" t\u016bkst.",million:" milj.",billion:" mljrd.",trillion:" trilj."},ordinal:function(e){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","nl-be",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:" mln",billion:" mld",trillion:" bln"},ordinal:function(e){var t=e%100;return 0!==e&&t<=1||8===t||t>=20?"ste":"de"},currency:{symbol:"\u20ac "}}),e.register("locale","nl-nl",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"mln",billion:"mrd",trillion:"bln"},ordinal:function(e){var t=e%100;return 0!==e&&t<=1||8===t||t>=20?"ste":"de"},currency:{symbol:"\u20ac "}}),e.register("locale","no",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return"."},currency:{symbol:"kr"}}),e.register("locale","pl",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"tys.",million:"mln",billion:"mld",trillion:"bln"},ordinal:function(e){return"."},currency:{symbol:"PLN"}}),e.register("locale","pt-br",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"mil",million:"milh\xf5es",billion:"b",trillion:"t"},ordinal:function(e){return"\xba"},currency:{symbol:"R$"}}),e.register("locale","pt-pt",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return"\xba"},currency:{symbol:"\u20ac"}}),e.register("locale","ru-ua",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"\u0442\u044b\u0441.",million:"\u043c\u043b\u043d",billion:"b",trillion:"t"},ordinal:function(){return"."},currency:{symbol:"\u20b4"}}),e.register("locale","ru",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"\u0442\u044b\u0441.",million:"\u043c\u043b\u043d.",billion:"\u043c\u043b\u0440\u0434.",trillion:"\u0442\u0440\u043b\u043d."},ordinal:function(){return"."},currency:{symbol:"\u0440\u0443\u0431."}}),e.register("locale","sk",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"tis.",million:"mil.",billion:"b",trillion:"t"},ordinal:function(){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","sl",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"mio",billion:"mrd",trillion:"trilijon"},ordinal:function(){return"."},currency:{symbol:"\u20ac"}}),e.register("locale","th",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"\u0e1e\u0e31\u0e19",million:"\u0e25\u0e49\u0e32\u0e19",billion:"\u0e1e\u0e31\u0e19\u0e25\u0e49\u0e32\u0e19",trillion:"\u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"},ordinal:function(e){return"."},currency:{symbol:"\u0e3f"}}),function(){var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};e.register("locale","tr",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"bin",million:"milyon",billion:"milyar",trillion:"trilyon"},ordinal:function(e){if(0===e)return"'\u0131nc\u0131";var n=e%10,r=e%100-n,i=e>=100?100:null;return t[n]||t[r]||t[i]},currency:{symbol:"\u20ba"}})}(),e.register("locale","uk-ua",{delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"\u0442\u0438\u0441.",million:"\u043c\u043b\u043d",billion:"\u043c\u043b\u0440\u0434",trillion:"\u0431\u043b\u043d"},ordinal:function(){return""},currency:{symbol:"\u20b4"}}),e.register("locale","vi",{delimiters:{thousands:".",decimal:","},abbreviations:{thousand:" ngh\xecn",million:" tri\u1ec7u",billion:" t\u1ef7",trillion:" ngh\xecn t\u1ef7"},ordinal:function(){return"."},currency:{symbol:"\u20ab"}})})?r.apply(t,i):r)||(e.exports=o)},36453:function(e,t,n){var r,i;r=function(){var e,t,n="2.0.6",r={},i={},o={currentLocale:"en",zeroFormat:null,nullFormat:null,defaultFormat:"0,0",scalePercentBy100:!0},a={currentLocale:o.currentLocale,zeroFormat:o.zeroFormat,nullFormat:o.nullFormat,defaultFormat:o.defaultFormat,scalePercentBy100:o.scalePercentBy100};function s(e,t){this._input=e,this._value=t}return(e=function(n){var i,o,l,c;if(e.isNumeral(n))i=n.value();else if(0===n||"undefined"===typeof n)i=0;else if(null===n||t.isNaN(n))i=null;else if("string"===typeof n)if(a.zeroFormat&&n===a.zeroFormat)i=0;else if(a.nullFormat&&n===a.nullFormat||!n.replace(/[^0-9]+/g,"").length)i=null;else{for(o in r)if((c="function"===typeof r[o].regexps.unformat?r[o].regexps.unformat():r[o].regexps.unformat)&&n.match(c)){l=r[o].unformat;break}i=(l=l||e._.stringToNumber)(n)}else i=Number(n)||null;return new s(n,i)}).version=n,e.isNumeral=function(e){return e instanceof s},e._=t={numberToFormat:function(t,n,r){var o,a,s,l,c,u,d,h=i[e.options.currentLocale],p=!1,f=!1,m=0,g="",v=1e12,y=1e9,b=1e6,x=1e3,w="",S=!1;if(t=t||0,a=Math.abs(t),e._.includes(n,"(")?(p=!0,n=n.replace(/[\(|\)]/g,"")):(e._.includes(n,"+")||e._.includes(n,"-"))&&(c=e._.includes(n,"+")?n.indexOf("+"):t<0?n.indexOf("-"):-1,n=n.replace(/[\+|\-]/g,"")),e._.includes(n,"a")&&(o=!!(o=n.match(/a(k|m|b|t)?/))&&o[1],e._.includes(n," a")&&(g=" "),n=n.replace(new RegExp(g+"a[kmbt]?"),""),a>=v&&!o||"t"===o?(g+=h.abbreviations.trillion,t/=v):a<v&&a>=y&&!o||"b"===o?(g+=h.abbreviations.billion,t/=y):a<y&&a>=b&&!o||"m"===o?(g+=h.abbreviations.million,t/=b):(a<b&&a>=x&&!o||"k"===o)&&(g+=h.abbreviations.thousand,t/=x)),e._.includes(n,"[.]")&&(f=!0,n=n.replace("[.]",".")),s=t.toString().split(".")[0],l=n.split(".")[1],u=n.indexOf(","),m=(n.split(".")[0].split(",")[0].match(/0/g)||[]).length,l?(e._.includes(l,"[")?(l=(l=l.replace("]","")).split("["),w=e._.toFixed(t,l[0].length+l[1].length,r,l[1].length)):w=e._.toFixed(t,l.length,r),s=w.split(".")[0],w=e._.includes(w,".")?h.delimiters.decimal+w.split(".")[1]:"",f&&0===Number(w.slice(1))&&(w="")):s=e._.toFixed(t,0,r),g&&!o&&Number(s)>=1e3&&g!==h.abbreviations.trillion)switch(s=String(Number(s)/1e3),g){case h.abbreviations.thousand:g=h.abbreviations.million;break;case h.abbreviations.million:g=h.abbreviations.billion;break;case h.abbreviations.billion:g=h.abbreviations.trillion}if(e._.includes(s,"-")&&(s=s.slice(1),S=!0),s.length<m)for(var _=m-s.length;_>0;_--)s="0"+s;return u>-1&&(s=s.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+h.delimiters.thousands)),0===n.indexOf(".")&&(s=""),d=s+w+(g||""),p?d=(p&&S?"(":"")+d+(p&&S?")":""):c>=0?d=0===c?(S?"-":"+")+d:d+(S?"-":"+"):S&&(d="-"+d),d},stringToNumber:function(e){var t,n,r,o=i[a.currentLocale],s=e,l={thousand:3,million:6,billion:9,trillion:12};if(a.zeroFormat&&e===a.zeroFormat)n=0;else if(a.nullFormat&&e===a.nullFormat||!e.replace(/[^0-9]+/g,"").length)n=null;else{for(t in n=1,"."!==o.delimiters.decimal&&(e=e.replace(/\./g,"").replace(o.delimiters.decimal,".")),l)if(r=new RegExp("[^a-zA-Z]"+o.abbreviations[t]+"(?:\\)|(\\"+o.currency.symbol+")?(?:\\))?)?$"),s.match(r)){n*=Math.pow(10,l[t]);break}n*=(e.split("-").length+Math.min(e.split("(").length-1,e.split(")").length-1))%2?1:-1,e=e.replace(/[^0-9\.]+/g,""),n*=Number(e)}return n},isNaN:function(e){return"number"===typeof e&&isNaN(e)},includes:function(e,t){return-1!==e.indexOf(t)},insert:function(e,t,n){return e.slice(0,n)+t+e.slice(n)},reduce:function(e,t){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!==typeof t)throw new TypeError(t+" is not a function");var n,r=Object(e),i=r.length>>>0,o=0;if(3===arguments.length)n=arguments[2];else{for(;o<i&&!(o in r);)o++;if(o>=i)throw new TypeError("Reduce of empty array with no initial value");n=r[o++]}for(;o<i;o++)o in r&&(n=t(n,r[o],o,r));return n},multiplier:function(e){var t=e.toString().split(".");return t.length<2?1:Math.pow(10,t[1].length)},correctionFactor:function(){return Array.prototype.slice.call(arguments).reduce((function(e,n){var r=t.multiplier(n);return e>r?e:r}),1)},toFixed:function(e,t,n,r){var i,o,a,s,l=e.toString().split("."),c=t-(r||0);return i=2===l.length?Math.min(Math.max(l[1].length,c),t):c,a=Math.pow(10,i),s=(n(e+"e+"+i)/a).toFixed(i),r>t-i&&(o=new RegExp("\\.?0{1,"+(r-(t-i))+"}$"),s=s.replace(o,"")),s}},e.options=a,e.formats=r,e.locales=i,e.locale=function(e){return e&&(a.currentLocale=e.toLowerCase()),a.currentLocale},e.localeData=function(e){if(!e)return i[a.currentLocale];if(e=e.toLowerCase(),!i[e])throw new Error("Unknown locale : "+e);return i[e]},e.reset=function(){for(var e in o)a[e]=o[e]},e.zeroFormat=function(e){a.zeroFormat="string"===typeof e?e:null},e.nullFormat=function(e){a.nullFormat="string"===typeof e?e:null},e.defaultFormat=function(e){a.defaultFormat="string"===typeof e?e:"0.0"},e.register=function(e,t,n){if(t=t.toLowerCase(),this[e+"s"][t])throw new TypeError(t+" "+e+" already registered.");return this[e+"s"][t]=n,n},e.validate=function(t,n){var r,i,o,a,s,l,c,u;if("string"!==typeof t&&(t+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",t)),(t=t.trim()).match(/^\d+$/))return!0;if(""===t)return!1;try{c=e.localeData(n)}catch(d){c=e.localeData(e.locale())}return o=c.currency.symbol,s=c.abbreviations,r=c.delimiters.decimal,i="."===c.delimiters.thousands?"\\.":c.delimiters.thousands,(null===(u=t.match(/^[^\d]+/))||(t=t.substr(1),u[0]===o))&&(null===(u=t.match(/[^\d]+$/))||(t=t.slice(0,-1),u[0]===s.thousand||u[0]===s.million||u[0]===s.billion||u[0]===s.trillion))&&(l=new RegExp(i+"{2}"),!t.match(/[^\d.,]/g)&&!((a=t.split(r)).length>2)&&(a.length<2?!!a[0].match(/^\d+.*\d$/)&&!a[0].match(l):1===a[0].length?!!a[0].match(/^\d+$/)&&!a[0].match(l)&&!!a[1].match(/^\d+$/):!!a[0].match(/^\d+.*\d$/)&&!a[0].match(l)&&!!a[1].match(/^\d+$/)))},e.fn=s.prototype={clone:function(){return e(this)},format:function(t,n){var i,o,s,l=this._value,c=t||a.defaultFormat;if(n=n||Math.round,0===l&&null!==a.zeroFormat)o=a.zeroFormat;else if(null===l&&null!==a.nullFormat)o=a.nullFormat;else{for(i in r)if(c.match(r[i].regexps.format)){s=r[i].format;break}o=(s=s||e._.numberToFormat)(l,c,n)}return o},value:function(){return this._value},input:function(){return this._input},set:function(e){return this._value=Number(e),this},add:function(e){var n=t.correctionFactor.call(null,this._value,e);function r(e,t,r,i){return e+Math.round(n*t)}return this._value=t.reduce([this._value,e],r,0)/n,this},subtract:function(e){var n=t.correctionFactor.call(null,this._value,e);function r(e,t,r,i){return e-Math.round(n*t)}return this._value=t.reduce([e],r,Math.round(this._value*n))/n,this},multiply:function(e){function n(e,n,r,i){var o=t.correctionFactor(e,n);return Math.round(e*o)*Math.round(n*o)/Math.round(o*o)}return this._value=t.reduce([this._value,e],n,1),this},divide:function(e){function n(e,n,r,i){var o=t.correctionFactor(e,n);return Math.round(e*o)/Math.round(n*o)}return this._value=t.reduce([this._value,e],n),this},difference:function(t){return Math.abs(e(this._value).subtract(t).value())}},e.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"$"}}),e.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(t,n,r){var i,o=e._.includes(n," BPS")?" ":"";return t*=1e4,n=n.replace(/\s?BPS/,""),i=e._.numberToFormat(t,n,r),e._.includes(i,")")?((i=i.split("")).splice(-1,0,o+"BPS"),i=i.join("")):i=i+o+"BPS",i},unformat:function(t){return+(1e-4*e._.stringToNumber(t)).toFixed(15)}}),function(){var t={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]},n={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},r=t.suffixes.concat(n.suffixes.filter((function(e){return t.suffixes.indexOf(e)<0}))).join("|");r="("+r.replace("B","B(?!PS)")+")",e.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(r)},format:function(r,i,o){var a,s,l,c=e._.includes(i,"ib")?n:t,u=e._.includes(i," b")||e._.includes(i," ib")?" ":"";for(i=i.replace(/\s?i?b/,""),a=0;a<=c.suffixes.length;a++)if(s=Math.pow(c.base,a),l=Math.pow(c.base,a+1),null===r||0===r||r>=s&&r<l){u+=c.suffixes[a],s>0&&(r/=s);break}return e._.numberToFormat(r,i,o)+u},unformat:function(r){var i,o,a=e._.stringToNumber(r);if(a){for(i=t.suffixes.length-1;i>=0;i--){if(e._.includes(r,t.suffixes[i])){o=Math.pow(t.base,i);break}if(e._.includes(r,n.suffixes[i])){o=Math.pow(n.base,i);break}}a*=o||1}return a}})}(),e.register("format","currency",{regexps:{format:/(\$)/},format:function(t,n,r){var i,o,a=e.locales[e.options.currentLocale],s={before:n.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:n.match(/([\+|\-|\)|\s|\$]*)$/)[0]};for(n=n.replace(/\s?\$\s?/,""),i=e._.numberToFormat(t,n,r),t>=0?(s.before=s.before.replace(/[\-\(]/,""),s.after=s.after.replace(/[\-\)]/,"")):t<0&&!e._.includes(s.before,"-")&&!e._.includes(s.before,"(")&&(s.before="-"+s.before),o=0;o<s.before.length;o++)switch(s.before[o]){case"$":i=e._.insert(i,a.currency.symbol,o);break;case" ":i=e._.insert(i," ",o+a.currency.symbol.length-1)}for(o=s.after.length-1;o>=0;o--)switch(s.after[o]){case"$":i=o===s.after.length-1?i+a.currency.symbol:e._.insert(i,a.currency.symbol,-(s.after.length-(1+o)));break;case" ":i=o===s.after.length-1?i+" ":e._.insert(i," ",-(s.after.length-(1+o)+a.currency.symbol.length-1))}return i}}),e.register("format","exponential",{regexps:{format:/(e\+|e-)/,unformat:/(e\+|e-)/},format:function(t,n,r){var i=("number"!==typeof t||e._.isNaN(t)?"0e+0":t.toExponential()).split("e");return n=n.replace(/e[\+|\-]{1}0/,""),e._.numberToFormat(Number(i[0]),n,r)+"e"+i[1]},unformat:function(t){var n=e._.includes(t,"e+")?t.split("e+"):t.split("e-"),r=Number(n[0]),i=Number(n[1]);function o(t,n,r,i){var o=e._.correctionFactor(t,n);return t*o*(n*o)/(o*o)}return i=e._.includes(t,"e-")?i*=-1:i,e._.reduce([r,Math.pow(10,i)],o,1)}}),e.register("format","ordinal",{regexps:{format:/(o)/},format:function(t,n,r){var i=e.locales[e.options.currentLocale],o=e._.includes(n," o")?" ":"";return n=n.replace(/\s?o/,""),o+=i.ordinal(t),e._.numberToFormat(t,n,r)+o}}),e.register("format","percentage",{regexps:{format:/(%)/,unformat:/(%)/},format:function(t,n,r){var i,o=e._.includes(n," %")?" ":"";return e.options.scalePercentBy100&&(t*=100),n=n.replace(/\s?\%/,""),i=e._.numberToFormat(t,n,r),e._.includes(i,")")?((i=i.split("")).splice(-1,0,o+"%"),i=i.join("")):i=i+o+"%",i},unformat:function(t){var n=e._.stringToNumber(t);return e.options.scalePercentBy100?.01*n:n}}),e.register("format","time",{regexps:{format:/(:)/,unformat:/(:)/},format:function(e,t,n){var r=Math.floor(e/60/60),i=Math.floor((e-60*r*60)/60),o=Math.round(e-60*r*60-60*i);return r+":"+(i<10?"0"+i:i)+":"+(o<10?"0"+o:o)},unformat:function(e){var t=e.split(":"),n=0;return 3===t.length?(n+=60*Number(t[0])*60,n+=60*Number(t[1]),n+=Number(t[2])):2===t.length&&(n+=60*Number(t[0]),n+=Number(t[1])),Number(n)}}),e},void 0===(i="function"===typeof r?r.call(t,n,t,e):r)||(e.exports=i)},29335:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(i){return!1}}()?Object.assign:function(e,i){for(var o,a,s=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l<arguments.length;l++){for(var c in o=Object(arguments[l]))n.call(o,c)&&(s[c]=o[c]);if(t){a=t(o);for(var u=0;u<a.length;u++)r.call(o,a[u])&&(s[a[u]]=o[a[u]])}}return s}},68798:(e,t,n)=>{var r="function"===typeof Map&&Map.prototype,i=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,o=r&&i&&"function"===typeof i.get?i.get:null,a=r&&Map.prototype.forEach,s="function"===typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&s?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,c=s&&l&&"function"===typeof l.get?l.get:null,u=s&&Set.prototype.forEach,d="function"===typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h="function"===typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,p="function"===typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,f=Boolean.prototype.valueOf,m=Object.prototype.toString,g=Function.prototype.toString,v=String.prototype.match,y=String.prototype.slice,b=String.prototype.replace,x=String.prototype.toUpperCase,w=String.prototype.toLowerCase,S=RegExp.prototype.test,_=Array.prototype.concat,C=Array.prototype.join,E=Array.prototype.slice,T=Math.floor,O="function"===typeof BigInt?BigInt.prototype.valueOf:null,N=Object.getOwnPropertySymbols,k="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?Symbol.prototype.toString:null,j="function"===typeof Symbol&&"object"===typeof Symbol.iterator,I="function"===typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===j||"symbol")?Symbol.toStringTag:null,P=Object.prototype.propertyIsEnumerable,D=("function"===typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function A(e,t){if(e===1/0||e===-1/0||e!==e||e&&e>-1e3&&e<1e3||S.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"===typeof e){var r=e<0?-T(-e):T(e);if(r!==e){var i=String(r),o=y.call(t,i.length+1);return b.call(i,n,"$&_")+"."+b.call(b.call(o,/([0-9]{3})/g,"$&_"),/_$/,"")}}return b.call(t,n,"$&_")}var R=n(24654),M=R.custom,L=H(M)?M:null;function F(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}function z(e){return b.call(String(e),/"/g,""")}function B(e){return"[object Array]"===W(e)&&(!I||!("object"===typeof e&&I in e))}function U(e){return"[object RegExp]"===W(e)&&(!I||!("object"===typeof e&&I in e))}function H(e){if(j)return e&&"object"===typeof e&&e instanceof Symbol;if("symbol"===typeof e)return!0;if(!e||"object"!==typeof e||!k)return!1;try{return k.call(e),!0}catch(t){}return!1}e.exports=function e(t,r,i,s){var l=r||{};if(G(l,"quoteStyle")&&"single"!==l.quoteStyle&&"double"!==l.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(G(l,"maxStringLength")&&("number"===typeof l.maxStringLength?l.maxStringLength<0&&l.maxStringLength!==1/0:null!==l.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var m=!G(l,"customInspect")||l.customInspect;if("boolean"!==typeof m&&"symbol"!==m)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(G(l,"indent")&&null!==l.indent&&"\t"!==l.indent&&!(parseInt(l.indent,10)===l.indent&&l.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(G(l,"numericSeparator")&&"boolean"!==typeof l.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var x=l.numericSeparator;if("undefined"===typeof t)return"undefined";if(null===t)return"null";if("boolean"===typeof t)return t?"true":"false";if("string"===typeof t)return Z(t,l);if("number"===typeof t){if(0===t)return 1/0/t>0?"0":"-0";var S=String(t);return x?A(t,S):S}if("bigint"===typeof t){var T=String(t)+"n";return x?A(t,T):T}var N="undefined"===typeof l.depth?5:l.depth;if("undefined"===typeof i&&(i=0),i>=N&&N>0&&"object"===typeof t)return B(t)?"[Array]":"[Object]";var M=function(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"===typeof e.indent&&e.indent>0))return null;n=C.call(Array(e.indent+1)," ")}return{base:n,prev:C.call(Array(t+1),n)}}(l,i);if("undefined"===typeof s)s=[];else if(q(s,t)>=0)return"[Circular]";function V(t,n,r){if(n&&(s=E.call(s)).push(n),r){var o={depth:l.depth};return G(l,"quoteStyle")&&(o.quoteStyle=l.quoteStyle),e(t,o,i+1,s)}return e(t,l,i+1,s)}if("function"===typeof t&&!U(t)){var Y=function(e){if(e.name)return e.name;var t=v.call(g.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),ee=J(t,V);return"[Function"+(Y?": "+Y:" (anonymous)")+"]"+(ee.length>0?" { "+C.call(ee,", ")+" }":"")}if(H(t)){var te=j?b.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):k.call(t);return"object"!==typeof t||j?te:K(te)}if(function(e){if(!e||"object"!==typeof e)return!1;if("undefined"!==typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"===typeof e.nodeName&&"function"===typeof e.getAttribute}(t)){for(var ne="<"+w.call(String(t.nodeName)),re=t.attributes||[],ie=0;ie<re.length;ie++)ne+=" "+re[ie].name+"="+F(z(re[ie].value),"double",l);return ne+=">",t.childNodes&&t.childNodes.length&&(ne+="..."),ne+="</"+w.call(String(t.nodeName))+">"}if(B(t)){if(0===t.length)return"[]";var oe=J(t,V);return M&&!function(e){for(var t=0;t<e.length;t++)if(q(e[t],"\n")>=0)return!1;return!0}(oe)?"["+$(oe,M)+"]":"[ "+C.call(oe,", ")+" ]"}if(function(e){return"[object Error]"===W(e)&&(!I||!("object"===typeof e&&I in e))}(t)){var ae=J(t,V);return"cause"in Error.prototype||!("cause"in t)||P.call(t,"cause")?0===ae.length?"["+String(t)+"]":"{ ["+String(t)+"] "+C.call(ae,", ")+" }":"{ ["+String(t)+"] "+C.call(_.call("[cause]: "+V(t.cause),ae),", ")+" }"}if("object"===typeof t&&m){if(L&&"function"===typeof t[L]&&R)return R(t,{depth:N-i});if("symbol"!==m&&"function"===typeof t.inspect)return t.inspect()}if(function(e){if(!o||!e||"object"!==typeof e)return!1;try{o.call(e);try{c.call(e)}catch(ne){return!0}return e instanceof Map}catch(t){}return!1}(t)){var se=[];return a&&a.call(t,(function(e,n){se.push(V(n,t,!0)+" => "+V(e,t))})),X("Map",o.call(t),se,M)}if(function(e){if(!c||!e||"object"!==typeof e)return!1;try{c.call(e);try{o.call(e)}catch(t){return!0}return e instanceof Set}catch(n){}return!1}(t)){var le=[];return u&&u.call(t,(function(e){le.push(V(e,t))})),X("Set",c.call(t),le,M)}if(function(e){if(!d||!e||"object"!==typeof e)return!1;try{d.call(e,d);try{h.call(e,h)}catch(ne){return!0}return e instanceof WeakMap}catch(t){}return!1}(t))return Q("WeakMap");if(function(e){if(!h||!e||"object"!==typeof e)return!1;try{h.call(e,h);try{d.call(e,d)}catch(ne){return!0}return e instanceof WeakSet}catch(t){}return!1}(t))return Q("WeakSet");if(function(e){if(!p||!e||"object"!==typeof e)return!1;try{return p.call(e),!0}catch(t){}return!1}(t))return Q("WeakRef");if(function(e){return"[object Number]"===W(e)&&(!I||!("object"===typeof e&&I in e))}(t))return K(V(Number(t)));if(function(e){if(!e||"object"!==typeof e||!O)return!1;try{return O.call(e),!0}catch(t){}return!1}(t))return K(V(O.call(t)));if(function(e){return"[object Boolean]"===W(e)&&(!I||!("object"===typeof e&&I in e))}(t))return K(f.call(t));if(function(e){return"[object String]"===W(e)&&(!I||!("object"===typeof e&&I in e))}(t))return K(V(String(t)));if("undefined"!==typeof window&&t===window)return"{ [object Window] }";if(t===n.g)return"{ [object globalThis] }";if(!function(e){return"[object Date]"===W(e)&&(!I||!("object"===typeof e&&I in e))}(t)&&!U(t)){var ce=J(t,V),ue=D?D(t)===Object.prototype:t instanceof Object||t.constructor===Object,de=t instanceof Object?"":"null prototype",he=!ue&&I&&Object(t)===t&&I in t?y.call(W(t),8,-1):de?"Object":"",pe=(ue||"function"!==typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(he||de?"["+C.call(_.call([],he||[],de||[]),": ")+"] ":"");return 0===ce.length?pe+"{}":M?pe+"{"+$(ce,M)+"}":pe+"{ "+C.call(ce,", ")+" }"}return String(t)};var V=Object.prototype.hasOwnProperty||function(e){return e in this};function G(e,t){return V.call(e,t)}function W(e){return m.call(e)}function q(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}function Z(e,t){if(e.length>t.maxStringLength){var n=e.length-t.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return Z(y.call(e,0,t.maxStringLength),t)+r}return F(b.call(b.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,Y),"single",t)}function Y(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+x.call(t.toString(16))}function K(e){return"Object("+e+")"}function Q(e){return e+" { ? }"}function X(e,t,n,r){return e+" ("+t+") {"+(r?$(n,r):C.call(n,", "))+"}"}function $(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+C.call(e,","+n)+"\n"+t.prev}function J(e,t){var n=B(e),r=[];if(n){r.length=e.length;for(var i=0;i<e.length;i++)r[i]=G(e,i)?t(e[i],e):""}var o,a="function"===typeof N?N(e):[];if(j){o={};for(var s=0;s<a.length;s++)o["$"+a[s]]=a[s]}for(var l in e)G(e,l)&&(n&&String(Number(l))===l&&l<e.length||j&&o["$"+l]instanceof Symbol||(S.call(/[^\w$]/,l)?r.push(t(l,e)+": "+t(e[l],e)):r.push(l+": "+t(e[l],e))));if("function"===typeof N)for(var c=0;c<a.length;c++)P.call(e,a[c])&&r.push("["+t(a[c])+"]: "+t(e[a[c]],e));return r}},7856:e=>{e.exports=u,e.exports.match=function(e,t){var n=[];return i(u(e,n,t),n)},e.exports.regexpToFunction=i,e.exports.parse=r,e.exports.compile=function(e,t){return o(r(e,t),t)},e.exports.tokensToFunction=o,e.exports.tokensToRegExp=c;var t="/",n=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");function r(e,r){for(var i,o=[],l=0,c=0,u="",d=r&&r.delimiter||t,h=r&&r.whitelist||void 0,p=!1;null!==(i=n.exec(e));){var f=i[0],m=i[1],g=i.index;if(u+=e.slice(c,g),c=g+f.length,m)u+=m[1],p=!0;else{var v="",y=i[2],b=i[3],x=i[4],w=i[5];if(!p&&u.length){var S=u.length-1,_=u[S];(!h||h.indexOf(_)>-1)&&(v=_,u=u.slice(0,S))}u&&(o.push(u),u="",p=!1);var C="+"===w||"*"===w,E="?"===w||"*"===w,T=b||x,O=v||d;o.push({name:y||l++,prefix:v,delimiter:O,optional:E,repeat:C,pattern:T?s(T):"[^"+a(O===d?O:O+d)+"]+?"})}}return(u||c<e.length)&&o.push(u+e.substr(c)),o}function i(e,t){return function(n,r){var i=e.exec(n);if(!i)return!1;for(var o=i[0],a=i.index,s={},l=r&&r.decode||decodeURIComponent,c=1;c<i.length;c++)if(void 0!==i[c]){var u=t[c-1];u.repeat?s[u.name]=i[c].split(u.delimiter).map((function(e){return l(e,u)})):s[u.name]=l(i[c],u)}return{path:o,index:a,params:s}}}function o(e,t){for(var n=new Array(e.length),r=0;r<e.length;r++)"object"===typeof e[r]&&(n[r]=new RegExp("^(?:"+e[r].pattern+")$",l(t)));return function(t,r){for(var i="",o=r&&r.encode||encodeURIComponent,a=!r||!1!==r.validate,s=0;s<e.length;s++){var l=e[s];if("string"!==typeof l){var c,u=t?t[l.name]:void 0;if(Array.isArray(u)){if(!l.repeat)throw new TypeError('Expected "'+l.name+'" to not repeat, but got array');if(0===u.length){if(l.optional)continue;throw new TypeError('Expected "'+l.name+'" to not be empty')}for(var d=0;d<u.length;d++){if(c=o(u[d],l),a&&!n[s].test(c))throw new TypeError('Expected all "'+l.name+'" to match "'+l.pattern+'"');i+=(0===d?l.prefix:l.delimiter)+c}}else if("string"!==typeof u&&"number"!==typeof u&&"boolean"!==typeof u){if(!l.optional)throw new TypeError('Expected "'+l.name+'" to be '+(l.repeat?"an array":"a string"))}else{if(c=o(String(u),l),a&&!n[s].test(c))throw new TypeError('Expected "'+l.name+'" to match "'+l.pattern+'", but got "'+c+'"');i+=l.prefix+c}}else i+=l}return i}}function a(e){return e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function s(e){return e.replace(/([=!:$/()])/g,"\\$1")}function l(e){return e&&e.sensitive?"":"i"}function c(e,n,r){for(var i=(r=r||{}).strict,o=!1!==r.start,s=!1!==r.end,c=r.delimiter||t,u=[].concat(r.endsWith||[]).map(a).concat("$").join("|"),d=o?"^":"",h=0;h<e.length;h++){var p=e[h];if("string"===typeof p)d+=a(p);else{var f=p.repeat?"(?:"+p.pattern+")(?:"+a(p.delimiter)+"(?:"+p.pattern+"))*":p.pattern;n&&n.push(p),p.optional?p.prefix?d+="(?:"+a(p.prefix)+"("+f+"))?":d+="("+f+")?":d+=a(p.prefix)+"("+f+")"}}if(s)i||(d+="(?:"+a(c)+")?"),d+="$"===u?"$":"(?="+u+")";else{var m=e[e.length-1],g="string"===typeof m?m[m.length-1]===c:void 0===m;i||(d+="(?:"+a(c)+"(?="+u+"))?"),g||(d+="(?="+a(c)+"|"+u+")")}return new RegExp(d,l(r))}function u(e,t,n){return e instanceof RegExp?function(e,t){if(!t)return e;var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,pattern:null});return e}(e,t):Array.isArray(e)?function(e,t,n){for(var r=[],i=0;i<e.length;i++)r.push(u(e[i],t,n).source);return new RegExp("(?:"+r.join("|")+")",l(n))}(e,t,n):function(e,t,n){return c(r(e,n),t,n)}(e,t,n)}},62139:(e,t,n)=>{"use strict";var r=n(16630);function i(){}function o(){}o.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,o,a){if(a!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:i};return n.PropTypes=n,n}},50134:(e,t,n)=>{e.exports=n(62139)()},16630:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},21777:e=>{"use strict";var t=String.prototype.replace,n=/%20/g,r="RFC1738",i="RFC3986";e.exports={default:i,formatters:{RFC1738:function(e){return t.call(e,n,"+")},RFC3986:function(e){return String(e)}},RFC1738:r,RFC3986:i}},63041:(e,t,n)=>{"use strict";var r=n(84861),i=n(36840),o=n(21777);e.exports={formats:o,parse:i,stringify:r}},36840:(e,t,n)=>{"use strict";var r=n(92113),i=Object.prototype.hasOwnProperty,o=Array.isArray,a={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!0,decoder:r.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},s=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},l=function(e,t){return e&&"string"===typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},c=function(e,t,n,r){if(e){var o=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,a=/(\[[^[\]]*])/g,s=n.depth>0&&/(\[[^[\]]*])/.exec(o),c=s?o.slice(0,s.index):o,u=[];if(c){if(!n.plainObjects&&i.call(Object.prototype,c)&&!n.allowPrototypes)return;u.push(c)}for(var d=0;n.depth>0&&null!==(s=a.exec(o))&&d<n.depth;){if(d+=1,!n.plainObjects&&i.call(Object.prototype,s[1].slice(1,-1))&&!n.allowPrototypes)return;u.push(s[1])}return s&&u.push("["+o.slice(s.index)+"]"),function(e,t,n,r){for(var i=r?t:l(t,n),o=e.length-1;o>=0;--o){var a,s=e[o];if("[]"===s&&n.parseArrays)a=n.allowEmptyArrays&&""===i?[]:[].concat(i);else{a=n.plainObjects?Object.create(null):{};var c="["===s.charAt(0)&&"]"===s.charAt(s.length-1)?s.slice(1,-1):s,u=n.decodeDotInKeys?c.replace(/%2E/g,"."):c,d=parseInt(u,10);n.parseArrays||""!==u?!isNaN(d)&&s!==u&&String(d)===u&&d>=0&&n.parseArrays&&d<=n.arrayLimit?(a=[])[d]=i:"__proto__"!==u&&(a[u]=i):a={0:i}}i=a}return i}(u,t,n,r)}};e.exports=function(e,t){var n=function(e){if(!e)return a;if("undefined"!==typeof e.allowEmptyArrays&&"boolean"!==typeof e.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if("undefined"!==typeof e.decodeDotInKeys&&"boolean"!==typeof e.decodeDotInKeys)throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==e.decoder&&"undefined"!==typeof e.decoder&&"function"!==typeof e.decoder)throw new TypeError("Decoder has to be a function.");if("undefined"!==typeof e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t="undefined"===typeof e.charset?a.charset:e.charset,n="undefined"===typeof e.duplicates?a.duplicates:e.duplicates;if("combine"!==n&&"first"!==n&&"last"!==n)throw new TypeError("The duplicates option must be either combine, first, or last");return{allowDots:"undefined"===typeof e.allowDots?!0===e.decodeDotInKeys||a.allowDots:!!e.allowDots,allowEmptyArrays:"boolean"===typeof e.allowEmptyArrays?!!e.allowEmptyArrays:a.allowEmptyArrays,allowPrototypes:"boolean"===typeof e.allowPrototypes?e.allowPrototypes:a.allowPrototypes,allowSparse:"boolean"===typeof e.allowSparse?e.allowSparse:a.allowSparse,arrayLimit:"number"===typeof e.arrayLimit?e.arrayLimit:a.arrayLimit,charset:t,charsetSentinel:"boolean"===typeof e.charsetSentinel?e.charsetSentinel:a.charsetSentinel,comma:"boolean"===typeof e.comma?e.comma:a.comma,decodeDotInKeys:"boolean"===typeof e.decodeDotInKeys?e.decodeDotInKeys:a.decodeDotInKeys,decoder:"function"===typeof e.decoder?e.decoder:a.decoder,delimiter:"string"===typeof e.delimiter||r.isRegExp(e.delimiter)?e.delimiter:a.delimiter,depth:"number"===typeof e.depth||!1===e.depth?+e.depth:a.depth,duplicates:n,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"===typeof e.interpretNumericEntities?e.interpretNumericEntities:a.interpretNumericEntities,parameterLimit:"number"===typeof e.parameterLimit?e.parameterLimit:a.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"===typeof e.plainObjects?e.plainObjects:a.plainObjects,strictNullHandling:"boolean"===typeof e.strictNullHandling?e.strictNullHandling:a.strictNullHandling}}(t);if(""===e||null===e||"undefined"===typeof e)return n.plainObjects?Object.create(null):{};for(var u="string"===typeof e?function(e,t){var n,c={__proto__:null},u=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,d=t.parameterLimit===1/0?void 0:t.parameterLimit,h=u.split(t.delimiter,d),p=-1,f=t.charset;if(t.charsetSentinel)for(n=0;n<h.length;++n)0===h[n].indexOf("utf8=")&&("utf8=%E2%9C%93"===h[n]?f="utf-8":"utf8=%26%2310003%3B"===h[n]&&(f="iso-8859-1"),p=n,n=h.length);for(n=0;n<h.length;++n)if(n!==p){var m,g,v=h[n],y=v.indexOf("]="),b=-1===y?v.indexOf("="):y+1;-1===b?(m=t.decoder(v,a.decoder,f,"key"),g=t.strictNullHandling?null:""):(m=t.decoder(v.slice(0,b),a.decoder,f,"key"),g=r.maybeMap(l(v.slice(b+1),t),(function(e){return t.decoder(e,a.decoder,f,"value")}))),g&&t.interpretNumericEntities&&"iso-8859-1"===f&&(g=s(g)),v.indexOf("[]=")>-1&&(g=o(g)?[g]:g);var x=i.call(c,m);x&&"combine"===t.duplicates?c[m]=r.combine(c[m],g):x&&"last"!==t.duplicates||(c[m]=g)}return c}(e,n):e,d=n.plainObjects?Object.create(null):{},h=Object.keys(u),p=0;p<h.length;++p){var f=h[p],m=c(f,u[f],n,"string"===typeof e);d=r.merge(d,m,n)}return!0===n.allowSparse?d:r.compact(d)}},84861:(e,t,n)=>{"use strict";var r=n(50810),i=n(92113),o=n(21777),a=Object.prototype.hasOwnProperty,s={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},l=Array.isArray,c=Array.prototype.push,u=function(e,t){c.apply(e,l(t)?t:[t])},d=Date.prototype.toISOString,h=o.default,p={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:i.encode,encodeValuesOnly:!1,format:h,formatter:o.formatters[h],indices:!1,serializeDate:function(e){return d.call(e)},skipNulls:!1,strictNullHandling:!1},f={},m=function e(t,n,o,a,s,c,d,h,m,g,v,y,b,x,w,S,_,C){for(var E,T=t,O=C,N=0,k=!1;void 0!==(O=O.get(f))&&!k;){var j=O.get(t);if(N+=1,"undefined"!==typeof j){if(j===N)throw new RangeError("Cyclic object value");k=!0}"undefined"===typeof O.get(f)&&(N=0)}if("function"===typeof g?T=g(n,T):T instanceof Date?T=b(T):"comma"===o&&l(T)&&(T=i.maybeMap(T,(function(e){return e instanceof Date?b(e):e}))),null===T){if(c)return m&&!S?m(n,p.encoder,_,"key",x):n;T=""}if("string"===typeof(E=T)||"number"===typeof E||"boolean"===typeof E||"symbol"===typeof E||"bigint"===typeof E||i.isBuffer(T))return m?[w(S?n:m(n,p.encoder,_,"key",x))+"="+w(m(T,p.encoder,_,"value",x))]:[w(n)+"="+w(String(T))];var I,P=[];if("undefined"===typeof T)return P;if("comma"===o&&l(T))S&&m&&(T=i.maybeMap(T,m)),I=[{value:T.length>0?T.join(",")||null:void 0}];else if(l(g))I=g;else{var D=Object.keys(T);I=v?D.sort(v):D}var A=h?n.replace(/\./g,"%2E"):n,R=a&&l(T)&&1===T.length?A+"[]":A;if(s&&l(T)&&0===T.length)return R+"[]";for(var M=0;M<I.length;++M){var L=I[M],F="object"===typeof L&&"undefined"!==typeof L.value?L.value:T[L];if(!d||null!==F){var z=y&&h?L.replace(/\./g,"%2E"):L,B=l(T)?"function"===typeof o?o(R,z):R:R+(y?"."+z:"["+z+"]");C.set(t,N);var U=r();U.set(f,C),u(P,e(F,B,o,a,s,c,d,h,"comma"===o&&S&&l(T)?null:m,g,v,y,b,x,w,S,_,U))}}return P};e.exports=function(e,t){var n,i=e,c=function(e){if(!e)return p;if("undefined"!==typeof e.allowEmptyArrays&&"boolean"!==typeof e.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if("undefined"!==typeof e.encodeDotInKeys&&"boolean"!==typeof e.encodeDotInKeys)throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==e.encoder&&"undefined"!==typeof e.encoder&&"function"!==typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||p.charset;if("undefined"!==typeof e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var n=o.default;if("undefined"!==typeof e.format){if(!a.call(o.formatters,e.format))throw new TypeError("Unknown format option provided.");n=e.format}var r,i=o.formatters[n],c=p.filter;if(("function"===typeof e.filter||l(e.filter))&&(c=e.filter),r=e.arrayFormat in s?e.arrayFormat:"indices"in e?e.indices?"indices":"repeat":p.arrayFormat,"commaRoundTrip"in e&&"boolean"!==typeof e.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var u="undefined"===typeof e.allowDots?!0===e.encodeDotInKeys||p.allowDots:!!e.allowDots;return{addQueryPrefix:"boolean"===typeof e.addQueryPrefix?e.addQueryPrefix:p.addQueryPrefix,allowDots:u,allowEmptyArrays:"boolean"===typeof e.allowEmptyArrays?!!e.allowEmptyArrays:p.allowEmptyArrays,arrayFormat:r,charset:t,charsetSentinel:"boolean"===typeof e.charsetSentinel?e.charsetSentinel:p.charsetSentinel,commaRoundTrip:e.commaRoundTrip,delimiter:"undefined"===typeof e.delimiter?p.delimiter:e.delimiter,encode:"boolean"===typeof e.encode?e.encode:p.encode,encodeDotInKeys:"boolean"===typeof e.encodeDotInKeys?e.encodeDotInKeys:p.encodeDotInKeys,encoder:"function"===typeof e.encoder?e.encoder:p.encoder,encodeValuesOnly:"boolean"===typeof e.encodeValuesOnly?e.encodeValuesOnly:p.encodeValuesOnly,filter:c,format:n,formatter:i,serializeDate:"function"===typeof e.serializeDate?e.serializeDate:p.serializeDate,skipNulls:"boolean"===typeof e.skipNulls?e.skipNulls:p.skipNulls,sort:"function"===typeof e.sort?e.sort:null,strictNullHandling:"boolean"===typeof e.strictNullHandling?e.strictNullHandling:p.strictNullHandling}}(t);"function"===typeof c.filter?i=(0,c.filter)("",i):l(c.filter)&&(n=c.filter);var d=[];if("object"!==typeof i||null===i)return"";var h=s[c.arrayFormat],f="comma"===h&&c.commaRoundTrip;n||(n=Object.keys(i)),c.sort&&n.sort(c.sort);for(var g=r(),v=0;v<n.length;++v){var y=n[v];c.skipNulls&&null===i[y]||u(d,m(i[y],y,h,f,c.allowEmptyArrays,c.strictNullHandling,c.skipNulls,c.encodeDotInKeys,c.encode?c.encoder:null,c.filter,c.sort,c.allowDots,c.serializeDate,c.format,c.formatter,c.encodeValuesOnly,c.charset,g))}var b=d.join(c.delimiter),x=!0===c.addQueryPrefix?"?":"";return c.charsetSentinel&&("iso-8859-1"===c.charset?x+="utf8=%26%2310003%3B&":x+="utf8=%E2%9C%93&"),b.length>0?x+b:""}},92113:(e,t,n)=>{"use strict";var r=n(21777),i=Object.prototype.hasOwnProperty,o=Array.isArray,a=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),s=function(e,t){for(var n=t&&t.plainObjects?Object.create(null):{},r=0;r<e.length;++r)"undefined"!==typeof e[r]&&(n[r]=e[r]);return n};e.exports={arrayToObject:s,assign:function(e,t){return Object.keys(t).reduce((function(e,n){return e[n]=t[n],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],n=[],r=0;r<t.length;++r)for(var i=t[r],a=i.obj[i.prop],s=Object.keys(a),l=0;l<s.length;++l){var c=s[l],u=a[c];"object"===typeof u&&null!==u&&-1===n.indexOf(u)&&(t.push({obj:a,prop:c}),n.push(u))}return function(e){for(;e.length>1;){var t=e.pop(),n=t.obj[t.prop];if(o(n)){for(var r=[],i=0;i<n.length;++i)"undefined"!==typeof n[i]&&r.push(n[i]);t.obj[t.prop]=r}}}(t),e},decode:function(e,t,n){var r=e.replace(/\+/g," ");if("iso-8859-1"===n)return r.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(r)}catch(i){return r}},encode:function(e,t,n,i,o){if(0===e.length)return e;var s=e;if("symbol"===typeof e?s=Symbol.prototype.toString.call(e):"string"!==typeof e&&(s=String(e)),"iso-8859-1"===n)return escape(s).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var l="",c=0;c<s.length;++c){var u=s.charCodeAt(c);45===u||46===u||95===u||126===u||u>=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122||o===r.RFC1738&&(40===u||41===u)?l+=s.charAt(c):u<128?l+=a[u]:u<2048?l+=a[192|u>>6]+a[128|63&u]:u<55296||u>=57344?l+=a[224|u>>12]+a[128|u>>6&63]+a[128|63&u]:(c+=1,u=65536+((1023&u)<<10|1023&s.charCodeAt(c)),l+=a[240|u>>18]+a[128|u>>12&63]+a[128|u>>6&63]+a[128|63&u])}return l},isBuffer:function(e){return!(!e||"object"!==typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(o(e)){for(var n=[],r=0;r<e.length;r+=1)n.push(t(e[r]));return n}return t(e)},merge:function e(t,n,r){if(!n)return t;if("object"!==typeof n){if(o(t))t.push(n);else{if(!t||"object"!==typeof t)return[t,n];(r&&(r.plainObjects||r.allowPrototypes)||!i.call(Object.prototype,n))&&(t[n]=!0)}return t}if(!t||"object"!==typeof t)return[t].concat(n);var a=t;return o(t)&&!o(n)&&(a=s(t,r)),o(t)&&o(n)?(n.forEach((function(n,o){if(i.call(t,o)){var a=t[o];a&&"object"===typeof a&&n&&"object"===typeof n?t[o]=e(a,n,r):t.push(n)}else t[o]=n})),t):Object.keys(n).reduce((function(t,o){var a=n[o];return i.call(t,o)?t[o]=e(t[o],a,r):t[o]=a,t}),a)}}},63637:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var i=s(n(68963)),o=s(n(69886)),a=["text","onCopy","options","children"];function s(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){g(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function d(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function p(e){var t=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=m(e);if(t){var o=m(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return f(e)}(this,n)}}function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v=function(e){!function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&h(e,t)}(l,e);var t,n,r,s=p(l);function l(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return g(f(e=s.call.apply(s,[this].concat(n))),"onClick",(function(t){var n=e.props,r=n.text,a=n.onCopy,s=n.children,l=n.options,c=i.default.Children.only(s),u=(0,o.default)(r,l);a&&a(r,u),c&&c.props&&"function"===typeof c.props.onClick&&c.props.onClick(t)})),e}return t=l,(n=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),n=u(e,a),r=i.default.Children.only(t);return i.default.cloneElement(r,c(c({},n),{},{onClick:this.onClick}))}}])&&d(t.prototype,n),r&&d(t,r),Object.defineProperty(t,"prototype",{writable:!1}),l}(i.default.PureComponent);t.CopyToClipboard=v,g(v,"defaultProps",{onCopy:void 0,options:void 0})},15942:(e,t,n)=>{"use strict";var r=n(63637).CopyToClipboard;r.CopyToClipboard=r,e.exports=r},9314:(e,t,n)=>{"use strict";var r=n(68963),i=n(29558);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var a=new Set,s={};function l(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)a.add(t[e])}var u=!("undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement),d=Object.prototype.hasOwnProperty,h=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p={},f={};function m(e,t,n,r,i,o,a){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=a}var g={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){g[e]=new m(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];g[t]=new m(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){g[e]=new m(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){g[e]=new m(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){g[e]=new m(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){g[e]=new m(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){g[e]=new m(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){g[e]=new m(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){g[e]=new m(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function b(e,t,n,r){var i=g.hasOwnProperty(t)?g[t]:null;(null!==i?0!==i.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null===t||"undefined"===typeof t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,i,r)&&(n=null),r||null===i?function(e){return!!d.call(f,e)||!d.call(p,e)&&(h.test(e)?f[e]=!0:(p[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):i.mustUseProperty?e[i.propertyName]=null===n?3!==i.type&&"":n:(t=i.attributeName,r=i.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(i=i.type)||4===i&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(v,y);g[t]=new m(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(v,y);g[t]=new m(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(v,y);g[t]=new m(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){g[e]=new m(e,1,!1,e.toLowerCase(),null,!1,!1)})),g.xlinkHref=new m("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){g[e]=new m(e,1,!1,e.toLowerCase(),null,!0,!0)}));var x=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,w=Symbol.for("react.element"),S=Symbol.for("react.portal"),_=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),E=Symbol.for("react.profiler"),T=Symbol.for("react.provider"),O=Symbol.for("react.context"),N=Symbol.for("react.forward_ref"),k=Symbol.for("react.suspense"),j=Symbol.for("react.suspense_list"),I=Symbol.for("react.memo"),P=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var D=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var A=Symbol.iterator;function R(e){return null===e||"object"!==typeof e?null:"function"===typeof(e=A&&e[A]||e["@@iterator"])?e:null}var M,L=Object.assign;function F(e){if(void 0===M)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);M=t&&t[1]||""}return"\n"+M+e}var z=!1;function B(e,t){if(!e||z)return"";z=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"===typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(c){var r=c}Reflect.construct(e,[],t)}else{try{t.call()}catch(c){r=c}e.call(t.prototype)}else{try{throw Error()}catch(c){r=c}e()}}catch(c){if(c&&r&&"string"===typeof c.stack){for(var i=c.stack.split("\n"),o=r.stack.split("\n"),a=i.length-1,s=o.length-1;1<=a&&0<=s&&i[a]!==o[s];)s--;for(;1<=a&&0<=s;a--,s--)if(i[a]!==o[s]){if(1!==a||1!==s)do{if(a--,0>--s||i[a]!==o[s]){var l="\n"+i[a].replace(" at new "," at ");return e.displayName&&l.includes("<anonymous>")&&(l=l.replace("<anonymous>",e.displayName)),l}}while(1<=a&&0<=s);break}}}finally{z=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?F(e):""}function U(e){switch(e.tag){case 5:return F(e.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1);case 11:return e=B(e.type.render,!1);case 1:return e=B(e.type,!0);default:return""}}function H(e){if(null==e)return null;if("function"===typeof e)return e.displayName||e.name||null;if("string"===typeof e)return e;switch(e){case _:return"Fragment";case S:return"Portal";case E:return"Profiler";case C:return"StrictMode";case k:return"Suspense";case j:return"SuspenseList"}if("object"===typeof e)switch(e.$$typeof){case O:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case N:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case I:return null!==(t=e.displayName||null)?t:H(e.type)||"Memo";case P:t=e._payload,e=e._init;try{return H(e(t))}catch(n){}}return null}function V(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return H(t);case 8:return t===C?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"===typeof t)return t.displayName||t.name||null;if("string"===typeof t)return t}return null}function G(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function q(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&"undefined"!==typeof n&&"function"===typeof n.get&&"function"===typeof n.set){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Z(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Y(e){if("undefined"===typeof(e=e||("undefined"!==typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function K(e,t){var n=t.checked;return L({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Q(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=G(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function X(e,t){null!=(t=t.checked)&&b(e,"checked",t,!1)}function $(e,t){X(e,t);var n=G(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,G(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&Y(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t["$"+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty("$"+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=""+G(n),t=null,i=0;i<e.length;i++){if(e[i].value===n)return e[i].selected=!0,void(r&&(e[i].defaultSelected=!0));null!==t||e[i].disabled||(t=e[i])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return L({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ie(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(te(n)){if(1<n.length)throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:G(n)}}function oe(e,t){var n=G(t.value),r=G(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ae(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function se(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function le(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?se(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ce,ue,de=(ue=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ce=ce||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ce.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ue(e,t)}))}:ue);function he(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var pe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},fe=["Webkit","ms","Moz","O"];function me(e,t,n){return null==t||"boolean"===typeof t||""===t?"":n||"number"!==typeof t||0===t||pe.hasOwnProperty(e)&&pe[e]?(""+t).trim():t+"px"}function ge(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),i=me(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}Object.keys(pe).forEach((function(e){fe.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pe[t]=pe[e]}))}));var ve=L({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ye(e,t){if(t){if(ve[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!==typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!==typeof t.style)throw Error(o(62))}}function be(e,t){if(-1===e.indexOf("-"))return"string"===typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var xe=null;function we(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Se=null,_e=null,Ce=null;function Ee(e){if(e=bi(e)){if("function"!==typeof Se)throw Error(o(280));var t=e.stateNode;t&&(t=wi(t),Se(e.stateNode,e.type,t))}}function Te(e){_e?Ce?Ce.push(e):Ce=[e]:_e=e}function Oe(){if(_e){var e=_e,t=Ce;if(Ce=_e=null,Ee(e),t)for(e=0;e<t.length;e++)Ee(t[e])}}function Ne(e,t){return e(t)}function ke(){}var je=!1;function Ie(e,t,n){if(je)return e(t,n);je=!0;try{return Ne(e,t,n)}finally{je=!1,(null!==_e||null!==Ce)&&(ke(),Oe())}}function Pe(e,t){var n=e.stateNode;if(null===n)return null;var r=wi(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!==typeof n)throw Error(o(231,t,typeof n));return n}var De=!1;if(u)try{var Ae={};Object.defineProperty(Ae,"passive",{get:function(){De=!0}}),window.addEventListener("test",Ae,Ae),window.removeEventListener("test",Ae,Ae)}catch(ue){De=!1}function Re(e,t,n,r,i,o,a,s,l){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var Me=!1,Le=null,Fe=!1,ze=null,Be={onError:function(e){Me=!0,Le=e}};function Ue(e,t,n,r,i,o,a,s,l){Me=!1,Le=null,Re.apply(Be,arguments)}function He(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!==(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ve(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Ge(e){if(He(e)!==e)throw Error(o(188))}function We(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=He(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var i=n.return;if(null===i)break;var a=i.alternate;if(null===a){if(null!==(r=i.return)){n=r;continue}break}if(i.child===a.child){for(a=i.child;a;){if(a===n)return Ge(i),e;if(a===r)return Ge(i),t;a=a.sibling}throw Error(o(188))}if(n.return!==r.return)n=i,r=a;else{for(var s=!1,l=i.child;l;){if(l===n){s=!0,n=i,r=a;break}if(l===r){s=!0,r=i,n=a;break}l=l.sibling}if(!s){for(l=a.child;l;){if(l===n){s=!0,n=a,r=i;break}if(l===r){s=!0,r=a,n=i;break}l=l.sibling}if(!s)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e))?qe(e):null}function qe(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=qe(e);if(null!==t)return t;e=e.sibling}return null}var Ze=i.unstable_scheduleCallback,Ye=i.unstable_cancelCallback,Ke=i.unstable_shouldYield,Qe=i.unstable_requestPaint,Xe=i.unstable_now,$e=i.unstable_getCurrentPriorityLevel,Je=i.unstable_ImmediatePriority,et=i.unstable_UserBlockingPriority,tt=i.unstable_NormalPriority,nt=i.unstable_LowPriority,rt=i.unstable_IdlePriority,it=null,ot=null;var at=Math.clz32?Math.clz32:function(e){return e>>>=0,0===e?32:31-(st(e)/lt|0)|0},st=Math.log,lt=Math.LN2;var ct=64,ut=4194304;function dt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ht(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,a=268435455&n;if(0!==a){var s=a&~i;0!==s?r=dt(s):0!==(o&=a)&&(r=dt(o))}else 0!==(a=n&~i)?r=dt(a):0!==o&&(r=dt(o));if(0===r)return 0;if(0!==t&&t!==r&&0===(t&i)&&((i=r&-r)>=(o=t&-t)||16===i&&0!==(4194240&o)))return t;if(0!==(4&r)&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)i=1<<(n=31-at(t)),r|=e[n],t&=~i;return r}function pt(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function mt(){var e=ct;return 0===(4194240&(ct<<=1))&&(ct=64),e}function gt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function vt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-at(t)]=n}function yt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-at(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}var bt=0;function xt(e){return 1<(e&=-e)?4<e?0!==(268435455&e)?16:536870912:4:1}var wt,St,_t,Ct,Et,Tt=!1,Ot=[],Nt=null,kt=null,jt=null,It=new Map,Pt=new Map,Dt=[],At="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Rt(e,t){switch(e){case"focusin":case"focusout":Nt=null;break;case"dragenter":case"dragleave":kt=null;break;case"mouseover":case"mouseout":jt=null;break;case"pointerover":case"pointerout":It.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Pt.delete(t.pointerId)}}function Mt(e,t,n,r,i,o){return null===e||e.nativeEvent!==o?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:o,targetContainers:[i]},null!==t&&(null!==(t=bi(t))&&St(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==i&&-1===t.indexOf(i)&&t.push(i),e)}function Lt(e){var t=yi(e.target);if(null!==t){var n=He(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ve(n)))return e.blockedOn=t,void Et(e.priority,(function(){_t(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Ft(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=bi(n))&&St(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);xe=r,n.target.dispatchEvent(r),xe=null,t.shift()}return!0}function zt(e,t,n){Ft(e)&&n.delete(t)}function Bt(){Tt=!1,null!==Nt&&Ft(Nt)&&(Nt=null),null!==kt&&Ft(kt)&&(kt=null),null!==jt&&Ft(jt)&&(jt=null),It.forEach(zt),Pt.forEach(zt)}function Ut(e,t){e.blockedOn===t&&(e.blockedOn=null,Tt||(Tt=!0,i.unstable_scheduleCallback(i.unstable_NormalPriority,Bt)))}function Ht(e){function t(t){return Ut(t,e)}if(0<Ot.length){Ut(Ot[0],e);for(var n=1;n<Ot.length;n++){var r=Ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Nt&&Ut(Nt,e),null!==kt&&Ut(kt,e),null!==jt&&Ut(jt,e),It.forEach(t),Pt.forEach(t),n=0;n<Dt.length;n++)(r=Dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Dt.length&&null===(n=Dt[0]).blockedOn;)Lt(n),null===n.blockedOn&&Dt.shift()}var Vt=x.ReactCurrentBatchConfig,Gt=!0;function Wt(e,t,n,r){var i=bt,o=Vt.transition;Vt.transition=null;try{bt=1,Zt(e,t,n,r)}finally{bt=i,Vt.transition=o}}function qt(e,t,n,r){var i=bt,o=Vt.transition;Vt.transition=null;try{bt=4,Zt(e,t,n,r)}finally{bt=i,Vt.transition=o}}function Zt(e,t,n,r){if(Gt){var i=Kt(e,t,n,r);if(null===i)Gr(e,t,r,Yt,n),Rt(e,r);else if(function(e,t,n,r,i){switch(t){case"focusin":return Nt=Mt(Nt,e,t,n,r,i),!0;case"dragenter":return kt=Mt(kt,e,t,n,r,i),!0;case"mouseover":return jt=Mt(jt,e,t,n,r,i),!0;case"pointerover":var o=i.pointerId;return It.set(o,Mt(It.get(o)||null,e,t,n,r,i)),!0;case"gotpointercapture":return o=i.pointerId,Pt.set(o,Mt(Pt.get(o)||null,e,t,n,r,i)),!0}return!1}(i,e,t,n,r))r.stopPropagation();else if(Rt(e,r),4&t&&-1<At.indexOf(e)){for(;null!==i;){var o=bi(i);if(null!==o&&wt(o),null===(o=Kt(e,t,n,r))&&Gr(e,t,r,Yt,n),o===i)break;i=o}null!==i&&r.stopPropagation()}else Gr(e,t,r,null,n)}}var Yt=null;function Kt(e,t,n,r){if(Yt=null,null!==(e=yi(e=we(r))))if(null===(t=He(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=Ve(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Yt=e,null}function Qt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch($e()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Xt=null,$t=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=$t,r=n.length,i="value"in Xt?Xt.value:Xt.textContent,o=i.length;for(e=0;e<r&&n[e]===i[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===i[o-t];t++);return Jt=i.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function on(e){function t(t,n,r,i,o){for(var a in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(a)&&(t=e[a],this[a]=t?t(i):i[a]);return this.isDefaultPrevented=(null!=i.defaultPrevented?i.defaultPrevented:!1===i.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return L(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!==typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!==typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var an,sn,ln,cn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},un=on(cn),dn=L({},cn,{view:0,detail:0}),hn=on(dn),pn=L({},dn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:En,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==ln&&(ln&&"mousemove"===e.type?(an=e.screenX-ln.screenX,sn=e.screenY-ln.screenY):sn=an=0,ln=e),an)},movementY:function(e){return"movementY"in e?e.movementY:sn}}),fn=on(pn),mn=on(L({},pn,{dataTransfer:0})),gn=on(L({},dn,{relatedTarget:0})),vn=on(L({},cn,{animationName:0,elapsedTime:0,pseudoElement:0})),yn=L({},cn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),bn=on(yn),xn=on(L({},cn,{data:0})),wn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Sn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},_n={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=_n[e])&&!!t[e]}function En(){return Cn}var Tn=L({},dn,{key:function(e){if(e.key){var t=wn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Sn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:En,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),On=on(Tn),Nn=on(L({},pn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),kn=on(L({},dn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:En})),jn=on(L({},cn,{propertyName:0,elapsedTime:0,pseudoElement:0})),In=L({},pn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Pn=on(In),Dn=[9,13,27,32],An=u&&"CompositionEvent"in window,Rn=null;u&&"documentMode"in document&&(Rn=document.documentMode);var Mn=u&&"TextEvent"in window&&!Rn,Ln=u&&(!An||Rn&&8<Rn&&11>=Rn),Fn=String.fromCharCode(32),zn=!1;function Bn(e,t){switch(e){case"keyup":return-1!==Dn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Un(e){return"object"===typeof(e=e.detail)&&"data"in e?e.data:null}var Hn=!1;var Vn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Gn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Vn[e.type]:"textarea"===t}function Wn(e,t,n,r){Te(r),0<(t=qr(t,"onChange")).length&&(n=new un("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var qn=null,Zn=null;function Yn(e){Fr(e,0)}function Kn(e){if(Z(xi(e)))return e}function Qn(e,t){if("change"===e)return t}var Xn=!1;if(u){var $n;if(u){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"===typeof er.oninput}$n=Jn}else $n=!1;Xn=$n&&(!document.documentMode||9<document.documentMode)}function tr(){qn&&(qn.detachEvent("onpropertychange",nr),Zn=qn=null)}function nr(e){if("value"===e.propertyName&&Kn(Zn)){var t=[];Wn(t,Zn,e,we(e)),Ie(Yn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Zn=n,(qn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Kn(Zn)}function or(e,t){if("click"===e)return Kn(t)}function ar(e,t){if("input"===e||"change"===e)return Kn(t)}var sr="function"===typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e===1/t)||e!==e&&t!==t};function lr(e,t){if(sr(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!d.call(t,i)||!sr(e[i],t[i]))return!1}return!0}function cr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ur(e,t){var n,r=cr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=cr(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hr(){for(var e=window,t=Y();t instanceof e.HTMLIFrameElement;){try{var n="string"===typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Y((e=t.contentWindow).document)}return t}function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function fr(e){var t=hr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&pr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=void 0===r.end?o:Math.min(r.end,i),!e.extend&&o>r&&(i=r,r=o,o=i),i=ur(n,o);var a=ur(n,r);i&&a&&(1!==e.rangeCount||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&((t=t.createRange()).setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"===typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var mr=u&&"documentMode"in document&&11>=document.documentMode,gr=null,vr=null,yr=null,br=!1;function xr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;br||null==gr||gr!==Y(r)||("selectionStart"in(r=gr)&&pr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},yr&&lr(yr,r)||(yr=r,0<(r=qr(vr,"onSelect")).length&&(t=new un("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}function wr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Sr={animationend:wr("Animation","AnimationEnd"),animationiteration:wr("Animation","AnimationIteration"),animationstart:wr("Animation","AnimationStart"),transitionend:wr("Transition","TransitionEnd")},_r={},Cr={};function Er(e){if(_r[e])return _r[e];if(!Sr[e])return e;var t,n=Sr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Cr)return _r[e]=n[t];return e}u&&(Cr=document.createElement("div").style,"AnimationEvent"in window||(delete Sr.animationend.animation,delete Sr.animationiteration.animation,delete Sr.animationstart.animation),"TransitionEvent"in window||delete Sr.transitionend.transition);var Tr=Er("animationend"),Or=Er("animationiteration"),Nr=Er("animationstart"),kr=Er("transitionend"),jr=new Map,Ir="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Pr(e,t){jr.set(e,t),l(t,[e])}for(var Dr=0;Dr<Ir.length;Dr++){var Ar=Ir[Dr];Pr(Ar.toLowerCase(),"on"+(Ar[0].toUpperCase()+Ar.slice(1)))}Pr(Tr,"onAnimationEnd"),Pr(Or,"onAnimationIteration"),Pr(Nr,"onAnimationStart"),Pr("dblclick","onDoubleClick"),Pr("focusin","onFocus"),Pr("focusout","onBlur"),Pr(kr,"onTransitionEnd"),c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),l("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),l("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),l("onBeforeInput",["compositionend","keypress","textInput","paste"]),l("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Rr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Mr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Rr));function Lr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,i,a,s,l,c){if(Ue.apply(this,arguments),Me){if(!Me)throw Error(o(198));var u=Le;Me=!1,Le=null,Fe||(Fe=!0,ze=u)}}(r,t,void 0,e),e.currentTarget=null}function Fr(e,t){t=0!==(4&t);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var a=r.length-1;0<=a;a--){var s=r[a],l=s.instance,c=s.currentTarget;if(s=s.listener,l!==o&&i.isPropagationStopped())break e;Lr(i,s,c),o=l}else for(a=0;a<r.length;a++){if(l=(s=r[a]).instance,c=s.currentTarget,s=s.listener,l!==o&&i.isPropagationStopped())break e;Lr(i,s,c),o=l}}}if(Fe)throw e=ze,Fe=!1,ze=null,e}function zr(e,t){var n=t[mi];void 0===n&&(n=t[mi]=new Set);var r=e+"__bubble";n.has(r)||(Vr(t,e,2,!1),n.add(r))}function Br(e,t,n){var r=0;t&&(r|=4),Vr(n,e,r,t)}var Ur="_reactListening"+Math.random().toString(36).slice(2);function Hr(e){if(!e[Ur]){e[Ur]=!0,a.forEach((function(t){"selectionchange"!==t&&(Mr.has(t)||Br(t,!1,e),Br(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[Ur]||(t[Ur]=!0,Br("selectionchange",!1,t))}}function Vr(e,t,n,r){switch(Qt(t)){case 1:var i=Wt;break;case 4:i=qt;break;default:i=Zt}n=i.bind(null,t,n,e),i=void 0,!De||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(i=!0),r?void 0!==i?e.addEventListener(t,n,{capture:!0,passive:i}):e.addEventListener(t,n,!0):void 0!==i?e.addEventListener(t,n,{passive:i}):e.addEventListener(t,n,!1)}function Gr(e,t,n,r,i){var o=r;if(0===(1&t)&&0===(2&t)&&null!==r)e:for(;;){if(null===r)return;var a=r.tag;if(3===a||4===a){var s=r.stateNode.containerInfo;if(s===i||8===s.nodeType&&s.parentNode===i)break;if(4===a)for(a=r.return;null!==a;){var l=a.tag;if((3===l||4===l)&&((l=a.stateNode.containerInfo)===i||8===l.nodeType&&l.parentNode===i))return;a=a.return}for(;null!==s;){if(null===(a=yi(s)))return;if(5===(l=a.tag)||6===l){r=o=a;continue e}s=s.parentNode}}r=r.return}Ie((function(){var r=o,i=we(n),a=[];e:{var s=jr.get(e);if(void 0!==s){var l=un,c=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":l=On;break;case"focusin":c="focus",l=gn;break;case"focusout":c="blur",l=gn;break;case"beforeblur":case"afterblur":l=gn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":l=fn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":l=mn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":l=kn;break;case Tr:case Or:case Nr:l=vn;break;case kr:l=jn;break;case"scroll":l=hn;break;case"wheel":l=Pn;break;case"copy":case"cut":case"paste":l=bn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":l=Nn}var u=0!==(4&t),d=!u&&"scroll"===e,h=u?null!==s?s+"Capture":null:s;u=[];for(var p,f=r;null!==f;){var m=(p=f).stateNode;if(5===p.tag&&null!==m&&(p=m,null!==h&&(null!=(m=Pe(f,h))&&u.push(Wr(f,m,p)))),d)break;f=f.return}0<u.length&&(s=new l(s,c,null,n,i),a.push({event:s,listeners:u}))}}if(0===(7&t)){if(l="mouseout"===e||"pointerout"===e,(!(s="mouseover"===e||"pointerover"===e)||n===xe||!(c=n.relatedTarget||n.fromElement)||!yi(c)&&!c[fi])&&(l||s)&&(s=i.window===i?i:(s=i.ownerDocument)?s.defaultView||s.parentWindow:window,l?(l=r,null!==(c=(c=n.relatedTarget||n.toElement)?yi(c):null)&&(c!==(d=He(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(l=null,c=r),l!==c)){if(u=fn,m="onMouseLeave",h="onMouseEnter",f="mouse","pointerout"!==e&&"pointerover"!==e||(u=Nn,m="onPointerLeave",h="onPointerEnter",f="pointer"),d=null==l?s:xi(l),p=null==c?s:xi(c),(s=new u(m,f+"leave",l,n,i)).target=d,s.relatedTarget=p,m=null,yi(i)===r&&((u=new u(h,f+"enter",c,n,i)).target=p,u.relatedTarget=d,m=u),d=m,l&&c)e:{for(h=c,f=0,p=u=l;p;p=Zr(p))f++;for(p=0,m=h;m;m=Zr(m))p++;for(;0<f-p;)u=Zr(u),f--;for(;0<p-f;)h=Zr(h),p--;for(;f--;){if(u===h||null!==h&&u===h.alternate)break e;u=Zr(u),h=Zr(h)}u=null}else u=null;null!==l&&Yr(a,s,l,u,!1),null!==c&&null!==d&&Yr(a,d,c,u,!0)}if("select"===(l=(s=r?xi(r):window).nodeName&&s.nodeName.toLowerCase())||"input"===l&&"file"===s.type)var g=Qn;else if(Gn(s))if(Xn)g=ar;else{g=ir;var v=rr}else(l=s.nodeName)&&"input"===l.toLowerCase()&&("checkbox"===s.type||"radio"===s.type)&&(g=or);switch(g&&(g=g(e,r))?Wn(a,g,n,i):(v&&v(e,s,r),"focusout"===e&&(v=s._wrapperState)&&v.controlled&&"number"===s.type&&ee(s,"number",s.value)),v=r?xi(r):window,e){case"focusin":(Gn(v)||"true"===v.contentEditable)&&(gr=v,vr=r,yr=null);break;case"focusout":yr=vr=gr=null;break;case"mousedown":br=!0;break;case"contextmenu":case"mouseup":case"dragend":br=!1,xr(a,n,i);break;case"selectionchange":if(mr)break;case"keydown":case"keyup":xr(a,n,i)}var y;if(An)e:{switch(e){case"compositionstart":var b="onCompositionStart";break e;case"compositionend":b="onCompositionEnd";break e;case"compositionupdate":b="onCompositionUpdate";break e}b=void 0}else Hn?Bn(e,n)&&(b="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(b="onCompositionStart");b&&(Ln&&"ko"!==n.locale&&(Hn||"onCompositionStart"!==b?"onCompositionEnd"===b&&Hn&&(y=en()):($t="value"in(Xt=i)?Xt.value:Xt.textContent,Hn=!0)),0<(v=qr(r,b)).length&&(b=new xn(b,e,null,n,i),a.push({event:b,listeners:v}),y?b.data=y:null!==(y=Un(n))&&(b.data=y))),(y=Mn?function(e,t){switch(e){case"compositionend":return Un(t);case"keypress":return 32!==t.which?null:(zn=!0,Fn);case"textInput":return(e=t.data)===Fn&&zn?null:e;default:return null}}(e,n):function(e,t){if(Hn)return"compositionend"===e||!An&&Bn(e,t)?(e=en(),Jt=$t=Xt=null,Hn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Ln&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=qr(r,"onBeforeInput")).length&&(i=new xn("onBeforeInput","beforeinput",null,n,i),a.push({event:i,listeners:r}),i.data=y))}Fr(a,t)}))}function Wr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function qr(e,t){for(var n=t+"Capture",r=[];null!==e;){var i=e,o=i.stateNode;5===i.tag&&null!==o&&(i=o,null!=(o=Pe(e,n))&&r.unshift(Wr(e,o,i)),null!=(o=Pe(e,t))&&r.push(Wr(e,o,i))),e=e.return}return r}function Zr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Yr(e,t,n,r,i){for(var o=t._reactName,a=[];null!==n&&n!==r;){var s=n,l=s.alternate,c=s.stateNode;if(null!==l&&l===r)break;5===s.tag&&null!==c&&(s=c,i?null!=(l=Pe(n,o))&&a.unshift(Wr(n,l,s)):i||null!=(l=Pe(n,o))&&a.push(Wr(n,l,s))),n=n.return}0!==a.length&&e.push({event:t,listeners:a})}var Kr=/\r\n?/g,Qr=/\u0000|\uFFFD/g;function Xr(e){return("string"===typeof e?e:""+e).replace(Kr,"\n").replace(Qr,"")}function $r(e,t,n){if(t=Xr(t),Xr(e)!==t&&n)throw Error(o(425))}function Jr(){}var ei=null,ti=null;function ni(e,t){return"textarea"===e||"noscript"===e||"string"===typeof t.children||"number"===typeof t.children||"object"===typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ri="function"===typeof setTimeout?setTimeout:void 0,ii="function"===typeof clearTimeout?clearTimeout:void 0,oi="function"===typeof Promise?Promise:void 0,ai="function"===typeof queueMicrotask?queueMicrotask:"undefined"!==typeof oi?function(e){return oi.resolve(null).then(e).catch(si)}:ri;function si(e){setTimeout((function(){throw e}))}function li(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&8===i.nodeType)if("/$"===(n=i.data)){if(0===r)return e.removeChild(i),void Ht(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=i}while(n);Ht(t)}function ci(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function ui(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var di=Math.random().toString(36).slice(2),hi="__reactFiber$"+di,pi="__reactProps$"+di,fi="__reactContainer$"+di,mi="__reactEvents$"+di,gi="__reactListeners$"+di,vi="__reactHandles$"+di;function yi(e){var t=e[hi];if(t)return t;for(var n=e.parentNode;n;){if(t=n[fi]||n[hi]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=ui(e);null!==e;){if(n=e[hi])return n;e=ui(e)}return t}n=(e=n).parentNode}return null}function bi(e){return!(e=e[hi]||e[fi])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function xi(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function wi(e){return e[pi]||null}var Si=[],_i=-1;function Ci(e){return{current:e}}function Ei(e){0>_i||(e.current=Si[_i],Si[_i]=null,_i--)}function Ti(e,t){_i++,Si[_i]=e.current,e.current=t}var Oi={},Ni=Ci(Oi),ki=Ci(!1),ji=Oi;function Ii(e,t){var n=e.type.contextTypes;if(!n)return Oi;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i,o={};for(i in n)o[i]=t[i];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Pi(e){return null!==(e=e.childContextTypes)&&void 0!==e}function Di(){Ei(ki),Ei(Ni)}function Ai(e,t,n){if(Ni.current!==Oi)throw Error(o(168));Ti(Ni,t),Ti(ki,n)}function Ri(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!==typeof r.getChildContext)return n;for(var i in r=r.getChildContext())if(!(i in t))throw Error(o(108,V(e)||"Unknown",i));return L({},n,r)}function Mi(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Oi,ji=Ni.current,Ti(Ni,e),Ti(ki,ki.current),!0}function Li(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=Ri(e,t,ji),r.__reactInternalMemoizedMergedChildContext=e,Ei(ki),Ei(Ni),Ti(Ni,e)):Ei(ki),Ti(ki,n)}var Fi=null,zi=!1,Bi=!1;function Ui(e){null===Fi?Fi=[e]:Fi.push(e)}function Hi(){if(!Bi&&null!==Fi){Bi=!0;var e=0,t=bt;try{var n=Fi;for(bt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Fi=null,zi=!1}catch(i){throw null!==Fi&&(Fi=Fi.slice(e+1)),Ze(Je,Hi),i}finally{bt=t,Bi=!1}}return null}var Vi=[],Gi=0,Wi=null,qi=0,Zi=[],Yi=0,Ki=null,Qi=1,Xi="";function $i(e,t){Vi[Gi++]=qi,Vi[Gi++]=Wi,Wi=e,qi=t}function Ji(e,t,n){Zi[Yi++]=Qi,Zi[Yi++]=Xi,Zi[Yi++]=Ki,Ki=e;var r=Qi;e=Xi;var i=32-at(r)-1;r&=~(1<<i),n+=1;var o=32-at(t)+i;if(30<o){var a=i-i%5;o=(r&(1<<a)-1).toString(32),r>>=a,i-=a,Qi=1<<32-at(t)+i|n<<i|r,Xi=o+e}else Qi=1<<o|n<<i|r,Xi=e}function eo(e){null!==e.return&&($i(e,1),Ji(e,1,0))}function to(e){for(;e===Wi;)Wi=Vi[--Gi],Vi[Gi]=null,qi=Vi[--Gi],Vi[Gi]=null;for(;e===Ki;)Ki=Zi[--Yi],Zi[Yi]=null,Xi=Zi[--Yi],Zi[Yi]=null,Qi=Zi[--Yi],Zi[Yi]=null}var no=null,ro=null,io=!1,oo=null;function ao(e,t){var n=Pc(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function so(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,no=e,ro=ci(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,no=e,ro=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Ki?{id:Qi,overflow:Xi}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Pc(18,null,null,0)).stateNode=t,n.return=e,e.child=n,no=e,ro=null,!0);default:return!1}}function lo(e){return 0!==(1&e.mode)&&0===(128&e.flags)}function co(e){if(io){var t=ro;if(t){var n=t;if(!so(e,t)){if(lo(e))throw Error(o(418));t=ci(n.nextSibling);var r=no;t&&so(e,t)?ao(r,n):(e.flags=-4097&e.flags|2,io=!1,no=e)}}else{if(lo(e))throw Error(o(418));e.flags=-4097&e.flags|2,io=!1,no=e}}}function uo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;no=e}function ho(e){if(e!==no)return!1;if(!io)return uo(e),io=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!ni(e.type,e.memoizedProps)),t&&(t=ro)){if(lo(e))throw po(),Error(o(418));for(;t;)ao(e,t),t=ci(t.nextSibling)}if(uo(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){ro=ci(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}ro=null}}else ro=no?ci(e.stateNode.nextSibling):null;return!0}function po(){for(var e=ro;e;)e=ci(e.nextSibling)}function fo(){ro=no=null,io=!1}function mo(e){null===oo?oo=[e]:oo.push(e)}var go=x.ReactCurrentBatchConfig;function vo(e,t){if(e&&e.defaultProps){for(var n in t=L({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var yo=Ci(null),bo=null,xo=null,wo=null;function So(){wo=xo=bo=null}function _o(e){var t=yo.current;Ei(yo),e._currentValue=t}function Co(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Eo(e,t){bo=e,wo=xo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!==(e.lanes&t)&&(xs=!0),e.firstContext=null)}function To(e){var t=e._currentValue;if(wo!==e)if(e={context:e,memoizedValue:t,next:null},null===xo){if(null===bo)throw Error(o(308));xo=e,bo.dependencies={lanes:0,firstContext:e}}else xo=xo.next=e;return t}var Oo=null;function No(e){null===Oo?Oo=[e]:Oo.push(e)}function ko(e,t,n,r){var i=t.interleaved;return null===i?(n.next=n,No(t)):(n.next=i.next,i.next=n),t.interleaved=n,jo(e,r)}function jo(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Io=!1;function Po(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Do(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ao(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Ro(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!==(2&kl)){var i=r.pending;return null===i?t.next=t:(t.next=i.next,i.next=t),r.pending=t,jo(e,n)}return null===(i=r.interleaved)?(t.next=t,No(r)):(t.next=i.next,i.next=t),r.interleaved=t,jo(e,n)}function Mo(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!==(4194240&n))){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,yt(e,n)}}function Lo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var i=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var a={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?i=o=a:o=o.next=a,n=n.next}while(null!==n);null===o?i=o=t:o=o.next=t}else i=o=t;return n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Fo(e,t,n,r){var i=e.updateQueue;Io=!1;var o=i.firstBaseUpdate,a=i.lastBaseUpdate,s=i.shared.pending;if(null!==s){i.shared.pending=null;var l=s,c=l.next;l.next=null,null===a?o=c:a.next=c,a=l;var u=e.alternate;null!==u&&((s=(u=u.updateQueue).lastBaseUpdate)!==a&&(null===s?u.firstBaseUpdate=c:s.next=c,u.lastBaseUpdate=l))}if(null!==o){var d=i.baseState;for(a=0,u=c=l=null,s=o;;){var h=s.lane,p=s.eventTime;if((r&h)===h){null!==u&&(u=u.next={eventTime:p,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var f=e,m=s;switch(h=t,p=n,m.tag){case 1:if("function"===typeof(f=m.payload)){d=f.call(p,d,h);break e}d=f;break e;case 3:f.flags=-65537&f.flags|128;case 0:if(null===(h="function"===typeof(f=m.payload)?f.call(p,d,h):f)||void 0===h)break e;d=L({},d,h);break e;case 2:Io=!0}}null!==s.callback&&0!==s.lane&&(e.flags|=64,null===(h=i.effects)?i.effects=[s]:h.push(s))}else p={eventTime:p,lane:h,tag:s.tag,payload:s.payload,callback:s.callback,next:null},null===u?(c=u=p,l=d):u=u.next=p,a|=h;if(null===(s=s.next)){if(null===(s=i.shared.pending))break;s=(h=s).next,h.next=null,i.lastBaseUpdate=h,i.shared.pending=null}}if(null===u&&(l=d),i.baseState=l,i.firstBaseUpdate=c,i.lastBaseUpdate=u,null!==(t=i.shared.interleaved)){i=t;do{a|=i.lane,i=i.next}while(i!==t)}else null===o&&(i.shared.lanes=0);Ll|=a,e.lanes=a,e.memoizedState=d}}function zo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],i=r.callback;if(null!==i){if(r.callback=null,r=n,"function"!==typeof i)throw Error(o(191,i));i.call(r)}}}var Bo=(new r.Component).refs;function Uo(e,t,n,r){n=null===(n=n(r,t=e.memoizedState))||void 0===n?t:L({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var Ho={isMounted:function(e){return!!(e=e._reactInternals)&&He(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=tc(),i=nc(e),o=Ao(r,i);o.payload=t,void 0!==n&&null!==n&&(o.callback=n),null!==(t=Ro(e,o,i))&&(rc(t,e,i,r),Mo(t,e,i))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=tc(),i=nc(e),o=Ao(r,i);o.tag=1,o.payload=t,void 0!==n&&null!==n&&(o.callback=n),null!==(t=Ro(e,o,i))&&(rc(t,e,i,r),Mo(t,e,i))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=tc(),r=nc(e),i=Ao(n,r);i.tag=2,void 0!==t&&null!==t&&(i.callback=t),null!==(t=Ro(e,i,r))&&(rc(t,e,r,n),Mo(t,e,r))}};function Vo(e,t,n,r,i,o,a){return"function"===typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,a):!t.prototype||!t.prototype.isPureReactComponent||(!lr(n,r)||!lr(i,o))}function Go(e,t,n){var r=!1,i=Oi,o=t.contextType;return"object"===typeof o&&null!==o?o=To(o):(i=Pi(t)?ji:Ni.current,o=(r=null!==(r=t.contextTypes)&&void 0!==r)?Ii(e,i):Oi),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=Ho,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=o),t}function Wo(e,t,n,r){e=t.state,"function"===typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"===typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Ho.enqueueReplaceState(t,t.state,null)}function qo(e,t,n,r){var i=e.stateNode;i.props=n,i.state=e.memoizedState,i.refs=Bo,Po(e);var o=t.contextType;"object"===typeof o&&null!==o?i.context=To(o):(o=Pi(t)?ji:Ni.current,i.context=Ii(e,o)),i.state=e.memoizedState,"function"===typeof(o=t.getDerivedStateFromProps)&&(Uo(e,t,o,n),i.state=e.memoizedState),"function"===typeof t.getDerivedStateFromProps||"function"===typeof i.getSnapshotBeforeUpdate||"function"!==typeof i.UNSAFE_componentWillMount&&"function"!==typeof i.componentWillMount||(t=i.state,"function"===typeof i.componentWillMount&&i.componentWillMount(),"function"===typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount(),t!==i.state&&Ho.enqueueReplaceState(i,i.state,null),Fo(e,n,i,r),i.state=e.memoizedState),"function"===typeof i.componentDidMount&&(e.flags|=4194308)}function Zo(e,t,n){if(null!==(e=n.ref)&&"function"!==typeof e&&"object"!==typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var i=r,a=""+e;return null!==t&&null!==t.ref&&"function"===typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=i.refs;t===Bo&&(t=i.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!==typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function Yo(e,t){throw e=Object.prototype.toString.call(t),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Ko(e){return(0,e._init)(e._payload)}function Qo(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function i(e,t){return(e=Ac(e,t)).index=0,e.sibling=null,e}function a(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function s(t){return e&&null===t.alternate&&(t.flags|=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Fc(n,e.mode,r)).return=e,t):((t=i(t,n)).return=e,t)}function c(e,t,n,r){var o=n.type;return o===_?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===o||"object"===typeof o&&null!==o&&o.$$typeof===P&&Ko(o)===t.type)?((r=i(t,n.props)).ref=Zo(e,t,n),r.return=e,r):((r=Rc(n.type,n.key,n.props,null,e.mode,r)).ref=Zo(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=zc(n,e.mode,r)).return=e,t):((t=i(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Mc(n,e.mode,r,o)).return=e,t):((t=i(t,n)).return=e,t)}function h(e,t,n){if("string"===typeof t&&""!==t||"number"===typeof t)return(t=Fc(""+t,e.mode,n)).return=e,t;if("object"===typeof t&&null!==t){switch(t.$$typeof){case w:return(n=Rc(t.type,t.key,t.props,null,e.mode,n)).ref=Zo(e,null,t),n.return=e,n;case S:return(t=zc(t,e.mode,n)).return=e,t;case P:return h(e,(0,t._init)(t._payload),n)}if(te(t)||R(t))return(t=Mc(t,e.mode,n,null)).return=e,t;Yo(e,t)}return null}function p(e,t,n,r){var i=null!==t?t.key:null;if("string"===typeof n&&""!==n||"number"===typeof n)return null!==i?null:l(e,t,""+n,r);if("object"===typeof n&&null!==n){switch(n.$$typeof){case w:return n.key===i?c(e,t,n,r):null;case S:return n.key===i?u(e,t,n,r):null;case P:return p(e,t,(i=n._init)(n._payload),r)}if(te(n)||R(n))return null!==i?null:d(e,t,n,r,null);Yo(e,n)}return null}function f(e,t,n,r,i){if("string"===typeof r&&""!==r||"number"===typeof r)return l(t,e=e.get(n)||null,""+r,i);if("object"===typeof r&&null!==r){switch(r.$$typeof){case w:return c(t,e=e.get(null===r.key?n:r.key)||null,r,i);case S:return u(t,e=e.get(null===r.key?n:r.key)||null,r,i);case P:return f(e,t,n,(0,r._init)(r._payload),i)}if(te(r)||R(r))return d(t,e=e.get(n)||null,r,i,null);Yo(t,r)}return null}function m(i,o,s,l){for(var c=null,u=null,d=o,m=o=0,g=null;null!==d&&m<s.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var v=p(i,d,s[m],l);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(i,d),o=a(v,o,m),null===u?c=v:u.sibling=v,u=v,d=g}if(m===s.length)return n(i,d),io&&$i(i,m),c;if(null===d){for(;m<s.length;m++)null!==(d=h(i,s[m],l))&&(o=a(d,o,m),null===u?c=d:u.sibling=d,u=d);return io&&$i(i,m),c}for(d=r(i,d);m<s.length;m++)null!==(g=f(d,i,m,s[m],l))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),o=a(g,o,m),null===u?c=g:u.sibling=g,u=g);return e&&d.forEach((function(e){return t(i,e)})),io&&$i(i,m),c}function g(i,s,l,c){var u=R(l);if("function"!==typeof u)throw Error(o(150));if(null==(l=u.call(l)))throw Error(o(151));for(var d=u=null,m=s,g=s=0,v=null,y=l.next();null!==m&&!y.done;g++,y=l.next()){m.index>g?(v=m,m=null):v=m.sibling;var b=p(i,m,y.value,c);if(null===b){null===m&&(m=v);break}e&&m&&null===b.alternate&&t(i,m),s=a(b,s,g),null===d?u=b:d.sibling=b,d=b,m=v}if(y.done)return n(i,m),io&&$i(i,g),u;if(null===m){for(;!y.done;g++,y=l.next())null!==(y=h(i,y.value,c))&&(s=a(y,s,g),null===d?u=y:d.sibling=y,d=y);return io&&$i(i,g),u}for(m=r(i,m);!y.done;g++,y=l.next())null!==(y=f(m,i,g,y.value,c))&&(e&&null!==y.alternate&&m.delete(null===y.key?g:y.key),s=a(y,s,g),null===d?u=y:d.sibling=y,d=y);return e&&m.forEach((function(e){return t(i,e)})),io&&$i(i,g),u}return function e(r,o,a,l){if("object"===typeof a&&null!==a&&a.type===_&&null===a.key&&(a=a.props.children),"object"===typeof a&&null!==a){switch(a.$$typeof){case w:e:{for(var c=a.key,u=o;null!==u;){if(u.key===c){if((c=a.type)===_){if(7===u.tag){n(r,u.sibling),(o=i(u,a.props.children)).return=r,r=o;break e}}else if(u.elementType===c||"object"===typeof c&&null!==c&&c.$$typeof===P&&Ko(c)===u.type){n(r,u.sibling),(o=i(u,a.props)).ref=Zo(r,u,a),o.return=r,r=o;break e}n(r,u);break}t(r,u),u=u.sibling}a.type===_?((o=Mc(a.props.children,r.mode,l,a.key)).return=r,r=o):((l=Rc(a.type,a.key,a.props,null,r.mode,l)).ref=Zo(r,o,a),l.return=r,r=l)}return s(r);case S:e:{for(u=a.key;null!==o;){if(o.key===u){if(4===o.tag&&o.stateNode.containerInfo===a.containerInfo&&o.stateNode.implementation===a.implementation){n(r,o.sibling),(o=i(o,a.children||[])).return=r,r=o;break e}n(r,o);break}t(r,o),o=o.sibling}(o=zc(a,r.mode,l)).return=r,r=o}return s(r);case P:return e(r,o,(u=a._init)(a._payload),l)}if(te(a))return m(r,o,a,l);if(R(a))return g(r,o,a,l);Yo(r,a)}return"string"===typeof a&&""!==a||"number"===typeof a?(a=""+a,null!==o&&6===o.tag?(n(r,o.sibling),(o=i(o,a)).return=r,r=o):(n(r,o),(o=Fc(a,r.mode,l)).return=r,r=o),s(r)):n(r,o)}}var Xo=Qo(!0),$o=Qo(!1),Jo={},ea=Ci(Jo),ta=Ci(Jo),na=Ci(Jo);function ra(e){if(e===Jo)throw Error(o(174));return e}function ia(e,t){switch(Ti(na,t),Ti(ta,e),Ti(ea,Jo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:le(null,"");break;default:t=le(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Ei(ea),Ti(ea,t)}function oa(){Ei(ea),Ei(ta),Ei(na)}function aa(e){ra(na.current);var t=ra(ea.current),n=le(t,e.type);t!==n&&(Ti(ta,e),Ti(ea,n))}function sa(e){ta.current===e&&(Ei(ea),Ei(ta))}var la=Ci(0);function ca(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!==(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ua=[];function da(){for(var e=0;e<ua.length;e++)ua[e]._workInProgressVersionPrimary=null;ua.length=0}var ha=x.ReactCurrentDispatcher,pa=x.ReactCurrentBatchConfig,fa=0,ma=null,ga=null,va=null,ya=!1,ba=!1,xa=0,wa=0;function Sa(){throw Error(o(321))}function _a(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!sr(e[n],t[n]))return!1;return!0}function Ca(e,t,n,r,i,a){if(fa=a,ma=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,ha.current=null===e||null===e.memoizedState?ss:ls,e=n(r,i),ba){a=0;do{if(ba=!1,xa=0,25<=a)throw Error(o(301));a+=1,va=ga=null,t.updateQueue=null,ha.current=cs,e=n(r,i)}while(ba)}if(ha.current=as,t=null!==ga&&null!==ga.next,fa=0,va=ga=ma=null,ya=!1,t)throw Error(o(300));return e}function Ea(){var e=0!==xa;return xa=0,e}function Ta(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===va?ma.memoizedState=va=e:va=va.next=e,va}function Oa(){if(null===ga){var e=ma.alternate;e=null!==e?e.memoizedState:null}else e=ga.next;var t=null===va?ma.memoizedState:va.next;if(null!==t)va=t,ga=e;else{if(null===e)throw Error(o(310));e={memoizedState:(ga=e).memoizedState,baseState:ga.baseState,baseQueue:ga.baseQueue,queue:ga.queue,next:null},null===va?ma.memoizedState=va=e:va=va.next=e}return va}function Na(e,t){return"function"===typeof t?t(e):t}function ka(e){var t=Oa(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=ga,i=r.baseQueue,a=n.pending;if(null!==a){if(null!==i){var s=i.next;i.next=a.next,a.next=s}r.baseQueue=i=a,n.pending=null}if(null!==i){a=i.next,r=r.baseState;var l=s=null,c=null,u=a;do{var d=u.lane;if((fa&d)===d)null!==c&&(c=c.next={lane:0,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),r=u.hasEagerState?u.eagerState:e(r,u.action);else{var h={lane:d,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null};null===c?(l=c=h,s=r):c=c.next=h,ma.lanes|=d,Ll|=d}u=u.next}while(null!==u&&u!==a);null===c?s=r:c.next=l,sr(r,t.memoizedState)||(xs=!0),t.memoizedState=r,t.baseState=s,t.baseQueue=c,n.lastRenderedState=r}if(null!==(e=n.interleaved)){i=e;do{a=i.lane,ma.lanes|=a,Ll|=a,i=i.next}while(i!==e)}else null===i&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function ja(e){var t=Oa(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,i=n.pending,a=t.memoizedState;if(null!==i){n.pending=null;var s=i=i.next;do{a=e(a,s.action),s=s.next}while(s!==i);sr(a,t.memoizedState)||(xs=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function Ia(){}function Pa(e,t){var n=ma,r=Oa(),i=t(),a=!sr(r.memoizedState,i);if(a&&(r.memoizedState=i,xs=!0),r=r.queue,Ga(Ra.bind(null,n,r,e),[e]),r.getSnapshot!==t||a||null!==va&&1&va.memoizedState.tag){if(n.flags|=2048,za(9,Aa.bind(null,n,r,i,t),void 0,null),null===jl)throw Error(o(349));0!==(30&fa)||Da(n,t,i)}return i}function Da(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=ma.updateQueue)?(t={lastEffect:null,stores:null},ma.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Aa(e,t,n,r){t.value=n,t.getSnapshot=r,Ma(t)&&La(e)}function Ra(e,t,n){return n((function(){Ma(t)&&La(e)}))}function Ma(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!sr(e,n)}catch(r){return!0}}function La(e){var t=jo(e,1);null!==t&&rc(t,e,1,-1)}function Fa(e){var t=Ta();return"function"===typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Na,lastRenderedState:e},t.queue=e,e=e.dispatch=ns.bind(null,ma,e),[t.memoizedState,e]}function za(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=ma.updateQueue)?(t={lastEffect:null,stores:null},ma.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Ba(){return Oa().memoizedState}function Ua(e,t,n,r){var i=Ta();ma.flags|=e,i.memoizedState=za(1|t,n,void 0,void 0===r?null:r)}function Ha(e,t,n,r){var i=Oa();r=void 0===r?null:r;var o=void 0;if(null!==ga){var a=ga.memoizedState;if(o=a.destroy,null!==r&&_a(r,a.deps))return void(i.memoizedState=za(t,n,o,r))}ma.flags|=e,i.memoizedState=za(1|t,n,o,r)}function Va(e,t){return Ua(8390656,8,e,t)}function Ga(e,t){return Ha(2048,8,e,t)}function Wa(e,t){return Ha(4,2,e,t)}function qa(e,t){return Ha(4,4,e,t)}function Za(e,t){return"function"===typeof t?(e=e(),t(e),function(){t(null)}):null!==t&&void 0!==t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Ya(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,Ha(4,4,Za.bind(null,t,e),n)}function Ka(){}function Qa(e,t){var n=Oa();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&_a(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Xa(e,t){var n=Oa();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&_a(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function $a(e,t,n){return 0===(21&fa)?(e.baseState&&(e.baseState=!1,xs=!0),e.memoizedState=n):(sr(n,t)||(n=mt(),ma.lanes|=n,Ll|=n,e.baseState=!0),t)}function Ja(e,t){var n=bt;bt=0!==n&&4>n?n:4,e(!0);var r=pa.transition;pa.transition={};try{e(!1),t()}finally{bt=n,pa.transition=r}}function es(){return Oa().memoizedState}function ts(e,t,n){var r=nc(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rs(e))is(t,n);else if(null!==(n=ko(e,t,n,r))){rc(n,e,r,tc()),os(n,t,r)}}function ns(e,t,n){var r=nc(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rs(e))is(t,i);else{var o=e.alternate;if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var a=t.lastRenderedState,s=o(a,n);if(i.hasEagerState=!0,i.eagerState=s,sr(s,a)){var l=t.interleaved;return null===l?(i.next=i,No(t)):(i.next=l.next,l.next=i),void(t.interleaved=i)}}catch(c){}null!==(n=ko(e,t,i,r))&&(rc(n,e,r,i=tc()),os(n,t,r))}}function rs(e){var t=e.alternate;return e===ma||null!==t&&t===ma}function is(e,t){ba=ya=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function os(e,t,n){if(0!==(4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,yt(e,n)}}var as={readContext:To,useCallback:Sa,useContext:Sa,useEffect:Sa,useImperativeHandle:Sa,useInsertionEffect:Sa,useLayoutEffect:Sa,useMemo:Sa,useReducer:Sa,useRef:Sa,useState:Sa,useDebugValue:Sa,useDeferredValue:Sa,useTransition:Sa,useMutableSource:Sa,useSyncExternalStore:Sa,useId:Sa,unstable_isNewReconciler:!1},ss={readContext:To,useCallback:function(e,t){return Ta().memoizedState=[e,void 0===t?null:t],e},useContext:To,useEffect:Va,useImperativeHandle:function(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,Ua(4194308,4,Za.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ua(4194308,4,e,t)},useInsertionEffect:function(e,t){return Ua(4,2,e,t)},useMemo:function(e,t){var n=Ta();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ta();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=ts.bind(null,ma,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ta().memoizedState=e},useState:Fa,useDebugValue:Ka,useDeferredValue:function(e){return Ta().memoizedState=e},useTransition:function(){var e=Fa(!1),t=e[0];return e=Ja.bind(null,e[1]),Ta().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ma,i=Ta();if(io){if(void 0===n)throw Error(o(407));n=n()}else{if(n=t(),null===jl)throw Error(o(349));0!==(30&fa)||Da(r,t,n)}i.memoizedState=n;var a={value:n,getSnapshot:t};return i.queue=a,Va(Ra.bind(null,r,a,e),[e]),r.flags|=2048,za(9,Aa.bind(null,r,a,n,t),void 0,null),n},useId:function(){var e=Ta(),t=jl.identifierPrefix;if(io){var n=Xi;t=":"+t+"R"+(n=(Qi&~(1<<32-at(Qi)-1)).toString(32)+n),0<(n=xa++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=wa++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},ls={readContext:To,useCallback:Qa,useContext:To,useEffect:Ga,useImperativeHandle:Ya,useInsertionEffect:Wa,useLayoutEffect:qa,useMemo:Xa,useReducer:ka,useRef:Ba,useState:function(){return ka(Na)},useDebugValue:Ka,useDeferredValue:function(e){return $a(Oa(),ga.memoizedState,e)},useTransition:function(){return[ka(Na)[0],Oa().memoizedState]},useMutableSource:Ia,useSyncExternalStore:Pa,useId:es,unstable_isNewReconciler:!1},cs={readContext:To,useCallback:Qa,useContext:To,useEffect:Ga,useImperativeHandle:Ya,useInsertionEffect:Wa,useLayoutEffect:qa,useMemo:Xa,useReducer:ja,useRef:Ba,useState:function(){return ja(Na)},useDebugValue:Ka,useDeferredValue:function(e){var t=Oa();return null===ga?t.memoizedState=e:$a(t,ga.memoizedState,e)},useTransition:function(){return[ja(Na)[0],Oa().memoizedState]},useMutableSource:Ia,useSyncExternalStore:Pa,useId:es,unstable_isNewReconciler:!1};function us(e,t){try{var n="",r=t;do{n+=U(r),r=r.return}while(r);var i=n}catch(o){i="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:i,digest:null}}function ds(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function hs(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var ps="function"===typeof WeakMap?WeakMap:Map;function fs(e,t,n){(n=Ao(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Wl||(Wl=!0,ql=r),hs(0,t)},n}function ms(e,t,n){(n=Ao(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"===typeof r){var i=t.value;n.payload=function(){return r(i)},n.callback=function(){hs(0,t)}}var o=e.stateNode;return null!==o&&"function"===typeof o.componentDidCatch&&(n.callback=function(){hs(0,t),"function"!==typeof r&&(null===Zl?Zl=new Set([this]):Zl.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function gs(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new ps;var i=new Set;r.set(t,i)}else void 0===(i=r.get(t))&&(i=new Set,r.set(t,i));i.has(n)||(i.add(n),e=Tc.bind(null,e,t,n),t.then(e,e))}function vs(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function ys(e,t,n,r,i){return 0===(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=Ao(-1,1)).tag=2,Ro(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=i,e)}var bs=x.ReactCurrentOwner,xs=!1;function ws(e,t,n,r){t.child=null===e?$o(t,null,n,r):Xo(t,e.child,n,r)}function Ss(e,t,n,r,i){n=n.render;var o=t.ref;return Eo(t,i),r=Ca(e,t,n,r,o,i),n=Ea(),null===e||xs?(io&&n&&eo(t),t.flags|=1,ws(e,t,r,i),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,Ws(e,t,i))}function _s(e,t,n,r,i){if(null===e){var o=n.type;return"function"!==typeof o||Dc(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Rc(n.type,null,r,t,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Cs(e,t,o,r,i))}if(o=e.child,0===(e.lanes&i)){var a=o.memoizedProps;if((n=null!==(n=n.compare)?n:lr)(a,r)&&e.ref===t.ref)return Ws(e,t,i)}return t.flags|=1,(e=Ac(o,r)).ref=t.ref,e.return=t,t.child=e}function Cs(e,t,n,r,i){if(null!==e){var o=e.memoizedProps;if(lr(o,r)&&e.ref===t.ref){if(xs=!1,t.pendingProps=r=o,0===(e.lanes&i))return t.lanes=e.lanes,Ws(e,t,i);0!==(131072&e.flags)&&(xs=!0)}}return Os(e,t,n,r,i)}function Es(e,t,n){var r=t.pendingProps,i=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(0===(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ti(Al,Dl),Dl|=n;else{if(0===(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Ti(Al,Dl),Dl|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==o?o.baseLanes:n,Ti(Al,Dl),Dl|=r}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Ti(Al,Dl),Dl|=r;return ws(e,t,i,n),t.child}function Ts(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Os(e,t,n,r,i){var o=Pi(n)?ji:Ni.current;return o=Ii(t,o),Eo(t,i),n=Ca(e,t,n,r,o,i),r=Ea(),null===e||xs?(io&&r&&eo(t),t.flags|=1,ws(e,t,n,i),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,Ws(e,t,i))}function Ns(e,t,n,r,i){if(Pi(n)){var o=!0;Mi(t)}else o=!1;if(Eo(t,i),null===t.stateNode)Gs(e,t),Go(t,n,r),qo(t,n,r,i),r=!0;else if(null===e){var a=t.stateNode,s=t.memoizedProps;a.props=s;var l=a.context,c=n.contextType;"object"===typeof c&&null!==c?c=To(c):c=Ii(t,c=Pi(n)?ji:Ni.current);var u=n.getDerivedStateFromProps,d="function"===typeof u||"function"===typeof a.getSnapshotBeforeUpdate;d||"function"!==typeof a.UNSAFE_componentWillReceiveProps&&"function"!==typeof a.componentWillReceiveProps||(s!==r||l!==c)&&Wo(t,a,r,c),Io=!1;var h=t.memoizedState;a.state=h,Fo(t,r,a,i),l=t.memoizedState,s!==r||h!==l||ki.current||Io?("function"===typeof u&&(Uo(t,n,u,r),l=t.memoizedState),(s=Io||Vo(t,n,s,r,h,l,c))?(d||"function"!==typeof a.UNSAFE_componentWillMount&&"function"!==typeof a.componentWillMount||("function"===typeof a.componentWillMount&&a.componentWillMount(),"function"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"===typeof a.componentDidMount&&(t.flags|=4194308)):("function"===typeof a.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=c,r=s):("function"===typeof a.componentDidMount&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,Do(e,t),s=t.memoizedProps,c=t.type===t.elementType?s:vo(t.type,s),a.props=c,d=t.pendingProps,h=a.context,"object"===typeof(l=n.contextType)&&null!==l?l=To(l):l=Ii(t,l=Pi(n)?ji:Ni.current);var p=n.getDerivedStateFromProps;(u="function"===typeof p||"function"===typeof a.getSnapshotBeforeUpdate)||"function"!==typeof a.UNSAFE_componentWillReceiveProps&&"function"!==typeof a.componentWillReceiveProps||(s!==d||h!==l)&&Wo(t,a,r,l),Io=!1,h=t.memoizedState,a.state=h,Fo(t,r,a,i);var f=t.memoizedState;s!==d||h!==f||ki.current||Io?("function"===typeof p&&(Uo(t,n,p,r),f=t.memoizedState),(c=Io||Vo(t,n,c,r,h,f,l)||!1)?(u||"function"!==typeof a.UNSAFE_componentWillUpdate&&"function"!==typeof a.componentWillUpdate||("function"===typeof a.componentWillUpdate&&a.componentWillUpdate(r,f,l),"function"===typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,f,l)),"function"===typeof a.componentDidUpdate&&(t.flags|=4),"function"===typeof a.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!==typeof a.componentDidUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),"function"!==typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=f),a.props=r,a.state=f,a.context=l,r=c):("function"!==typeof a.componentDidUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),"function"!==typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),r=!1)}return ks(e,t,n,r,o,i)}function ks(e,t,n,r,i,o){Ts(e,t);var a=0!==(128&t.flags);if(!r&&!a)return i&&Li(t,n,!1),Ws(e,t,o);r=t.stateNode,bs.current=t;var s=a&&"function"!==typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&a?(t.child=Xo(t,e.child,null,o),t.child=Xo(t,null,s,o)):ws(e,t,s,o),t.memoizedState=r.state,i&&Li(t,n,!0),t.child}function js(e){var t=e.stateNode;t.pendingContext?Ai(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Ai(0,t.context,!1),ia(e,t.containerInfo)}function Is(e,t,n,r,i){return fo(),mo(i),t.flags|=256,ws(e,t,n,r),t.child}var Ps,Ds,As,Rs,Ms={dehydrated:null,treeContext:null,retryLane:0};function Ls(e){return{baseLanes:e,cachePool:null,transitions:null}}function Fs(e,t,n){var r,i=t.pendingProps,a=la.current,s=!1,l=0!==(128&t.flags);if((r=l)||(r=(null===e||null!==e.memoizedState)&&0!==(2&a)),r?(s=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(a|=1),Ti(la,1&a),null===e)return co(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0===(1&t.mode)?t.lanes=1:"$!"===e.data?t.lanes=8:t.lanes=1073741824,null):(l=i.children,e=i.fallback,s?(i=t.mode,s=t.child,l={mode:"hidden",children:l},0===(1&i)&&null!==s?(s.childLanes=0,s.pendingProps=l):s=Lc(l,i,0,null),e=Mc(e,i,n,null),s.return=t,e.return=t,s.sibling=e,t.child=s,t.child.memoizedState=Ls(n),t.memoizedState=Ms,e):zs(t,l));if(null!==(a=e.memoizedState)&&null!==(r=a.dehydrated))return function(e,t,n,r,i,a,s){if(n)return 256&t.flags?(t.flags&=-257,Bs(e,t,s,r=ds(Error(o(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(a=r.fallback,i=t.mode,r=Lc({mode:"visible",children:r.children},i,0,null),(a=Mc(a,i,s,null)).flags|=2,r.return=t,a.return=t,r.sibling=a,t.child=r,0!==(1&t.mode)&&Xo(t,e.child,null,s),t.child.memoizedState=Ls(s),t.memoizedState=Ms,a);if(0===(1&t.mode))return Bs(e,t,s,null);if("$!"===i.data){if(r=i.nextSibling&&i.nextSibling.dataset)var l=r.dgst;return r=l,Bs(e,t,s,r=ds(a=Error(o(419)),r,void 0))}if(l=0!==(s&e.childLanes),xs||l){if(null!==(r=jl)){switch(s&-s){case 4:i=2;break;case 16:i=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:i=32;break;case 536870912:i=268435456;break;default:i=0}0!==(i=0!==(i&(r.suspendedLanes|s))?0:i)&&i!==a.retryLane&&(a.retryLane=i,jo(e,i),rc(r,e,i,-1))}return gc(),Bs(e,t,s,r=ds(Error(o(421))))}return"$?"===i.data?(t.flags|=128,t.child=e.child,t=Nc.bind(null,e),i._reactRetry=t,null):(e=a.treeContext,ro=ci(i.nextSibling),no=t,io=!0,oo=null,null!==e&&(Zi[Yi++]=Qi,Zi[Yi++]=Xi,Zi[Yi++]=Ki,Qi=e.id,Xi=e.overflow,Ki=t),t=zs(t,r.children),t.flags|=4096,t)}(e,t,l,i,r,a,n);if(s){s=i.fallback,l=t.mode,r=(a=e.child).sibling;var c={mode:"hidden",children:i.children};return 0===(1&l)&&t.child!==a?((i=t.child).childLanes=0,i.pendingProps=c,t.deletions=null):(i=Ac(a,c)).subtreeFlags=14680064&a.subtreeFlags,null!==r?s=Ac(r,s):(s=Mc(s,l,n,null)).flags|=2,s.return=t,i.return=t,i.sibling=s,t.child=i,i=s,s=t.child,l=null===(l=e.child.memoizedState)?Ls(n):{baseLanes:l.baseLanes|n,cachePool:null,transitions:l.transitions},s.memoizedState=l,s.childLanes=e.childLanes&~n,t.memoizedState=Ms,i}return e=(s=e.child).sibling,i=Ac(s,{mode:"visible",children:i.children}),0===(1&t.mode)&&(i.lanes=n),i.return=t,i.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=i,t.memoizedState=null,i}function zs(e,t){return(t=Lc({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Bs(e,t,n,r){return null!==r&&mo(r),Xo(t,e.child,null,n),(e=zs(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Us(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Co(e.return,t,n)}function Hs(e,t,n,r,i){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i)}function Vs(e,t,n){var r=t.pendingProps,i=r.revealOrder,o=r.tail;if(ws(e,t,r.children,n),0!==(2&(r=la.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!==(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Us(e,n,t);else if(19===e.tag)Us(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Ti(la,r),0===(1&t.mode))t.memoizedState=null;else switch(i){case"forwards":for(n=t.child,i=null;null!==n;)null!==(e=n.alternate)&&null===ca(e)&&(i=n),n=n.sibling;null===(n=i)?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),Hs(t,!1,i,n,o);break;case"backwards":for(n=null,i=t.child,t.child=null;null!==i;){if(null!==(e=i.alternate)&&null===ca(e)){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}Hs(t,!0,n,null,o);break;case"together":Hs(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Gs(e,t){0===(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Ws(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ll|=t.lanes,0===(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=Ac(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Ac(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function qs(e,t){if(!io)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Zs(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;null!==i;)n|=i.lanes|i.childLanes,r|=14680064&i.subtreeFlags,r|=14680064&i.flags,i.return=e,i=i.sibling;else for(i=e.child;null!==i;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Ys(e,t,n){var r=t.pendingProps;switch(to(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Zs(t),null;case 1:case 17:return Pi(t.type)&&Di(),Zs(t),null;case 3:return r=t.stateNode,oa(),Ei(ki),Ei(Ni),da(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(ho(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0===(256&t.flags)||(t.flags|=1024,null!==oo&&(sc(oo),oo=null))),Ds(e,t),Zs(t),null;case 5:sa(t);var i=ra(na.current);if(n=t.type,null!==e&&null!=t.stateNode)As(e,t,n,r,i),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(o(166));return Zs(t),null}if(e=ra(ea.current),ho(t)){r=t.stateNode,n=t.type;var a=t.memoizedProps;switch(r[hi]=t,r[pi]=a,e=0!==(1&t.mode),n){case"dialog":zr("cancel",r),zr("close",r);break;case"iframe":case"object":case"embed":zr("load",r);break;case"video":case"audio":for(i=0;i<Rr.length;i++)zr(Rr[i],r);break;case"source":zr("error",r);break;case"img":case"image":case"link":zr("error",r),zr("load",r);break;case"details":zr("toggle",r);break;case"input":Q(r,a),zr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!a.multiple},zr("invalid",r);break;case"textarea":ie(r,a),zr("invalid",r)}for(var l in ye(n,a),i=null,a)if(a.hasOwnProperty(l)){var c=a[l];"children"===l?"string"===typeof c?r.textContent!==c&&(!0!==a.suppressHydrationWarning&&$r(r.textContent,c,e),i=["children",c]):"number"===typeof c&&r.textContent!==""+c&&(!0!==a.suppressHydrationWarning&&$r(r.textContent,c,e),i=["children",""+c]):s.hasOwnProperty(l)&&null!=c&&"onScroll"===l&&zr("scroll",r)}switch(n){case"input":q(r),J(r,a,!0);break;case"textarea":q(r),ae(r);break;case"select":case"option":break;default:"function"===typeof a.onClick&&(r.onclick=Jr)}r=i,t.updateQueue=r,null!==r&&(t.flags|=4)}else{l=9===i.nodeType?i:i.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=se(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=l.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"===typeof r.is?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),"select"===n&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[hi]=t,e[pi]=r,Ps(e,t,!1,!1),t.stateNode=e;e:{switch(l=be(n,r),n){case"dialog":zr("cancel",e),zr("close",e),i=r;break;case"iframe":case"object":case"embed":zr("load",e),i=r;break;case"video":case"audio":for(i=0;i<Rr.length;i++)zr(Rr[i],e);i=r;break;case"source":zr("error",e),i=r;break;case"img":case"image":case"link":zr("error",e),zr("load",e),i=r;break;case"details":zr("toggle",e),i=r;break;case"input":Q(e,r),i=K(e,r),zr("invalid",e);break;case"option":default:i=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},i=L({},r,{value:void 0}),zr("invalid",e);break;case"textarea":ie(e,r),i=re(e,r),zr("invalid",e)}for(a in ye(n,i),c=i)if(c.hasOwnProperty(a)){var u=c[a];"style"===a?ge(e,u):"dangerouslySetInnerHTML"===a?null!=(u=u?u.__html:void 0)&&de(e,u):"children"===a?"string"===typeof u?("textarea"!==n||""!==u)&&he(e,u):"number"===typeof u&&he(e,""+u):"suppressContentEditableWarning"!==a&&"suppressHydrationWarning"!==a&&"autoFocus"!==a&&(s.hasOwnProperty(a)?null!=u&&"onScroll"===a&&zr("scroll",e):null!=u&&b(e,a,u,l))}switch(n){case"input":q(e),J(e,r,!1);break;case"textarea":q(e),ae(e);break;case"option":null!=r.value&&e.setAttribute("value",""+G(r.value));break;case"select":e.multiple=!!r.multiple,null!=(a=r.value)?ne(e,!!r.multiple,a,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"===typeof i.onClick&&(e.onclick=Jr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Zs(t),null;case 6:if(e&&null!=t.stateNode)Rs(e,t,e.memoizedProps,r);else{if("string"!==typeof r&&null===t.stateNode)throw Error(o(166));if(n=ra(na.current),ra(ea.current),ho(t)){if(r=t.stateNode,n=t.memoizedProps,r[hi]=t,(a=r.nodeValue!==n)&&null!==(e=no))switch(e.tag){case 3:$r(r.nodeValue,n,0!==(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&$r(r.nodeValue,n,0!==(1&e.mode))}a&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[hi]=t,t.stateNode=r}return Zs(t),null;case 13:if(Ei(la),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(io&&null!==ro&&0!==(1&t.mode)&&0===(128&t.flags))po(),fo(),t.flags|=98560,a=!1;else if(a=ho(t),null!==r&&null!==r.dehydrated){if(null===e){if(!a)throw Error(o(318));if(!(a=null!==(a=t.memoizedState)?a.dehydrated:null))throw Error(o(317));a[hi]=t}else fo(),0===(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Zs(t),a=!1}else null!==oo&&(sc(oo),oo=null),a=!0;if(!a)return 65536&t.flags?t:null}return 0!==(128&t.flags)?(t.lanes=n,t):((r=null!==r)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,0!==(1&t.mode)&&(null===e||0!==(1&la.current)?0===Rl&&(Rl=3):gc())),null!==t.updateQueue&&(t.flags|=4),Zs(t),null);case 4:return oa(),Ds(e,t),null===e&&Hr(t.stateNode.containerInfo),Zs(t),null;case 10:return _o(t.type._context),Zs(t),null;case 19:if(Ei(la),null===(a=t.memoizedState))return Zs(t),null;if(r=0!==(128&t.flags),null===(l=a.rendering))if(r)qs(a,!1);else{if(0!==Rl||null!==e&&0!==(128&e.flags))for(e=t.child;null!==e;){if(null!==(l=ca(e))){for(t.flags|=128,qs(a,!1),null!==(r=l.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(a=n).flags&=14680066,null===(l=a.alternate)?(a.childLanes=0,a.lanes=e,a.child=null,a.subtreeFlags=0,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null,a.stateNode=null):(a.childLanes=l.childLanes,a.lanes=l.lanes,a.child=l.child,a.subtreeFlags=0,a.deletions=null,a.memoizedProps=l.memoizedProps,a.memoizedState=l.memoizedState,a.updateQueue=l.updateQueue,a.type=l.type,e=l.dependencies,a.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Ti(la,1&la.current|2),t.child}e=e.sibling}null!==a.tail&&Xe()>Vl&&(t.flags|=128,r=!0,qs(a,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ca(l))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),qs(a,!0),null===a.tail&&"hidden"===a.tailMode&&!l.alternate&&!io)return Zs(t),null}else 2*Xe()-a.renderingStartTime>Vl&&1073741824!==n&&(t.flags|=128,r=!0,qs(a,!1),t.lanes=4194304);a.isBackwards?(l.sibling=t.child,t.child=l):(null!==(n=a.last)?n.sibling=l:t.child=l,a.last=l)}return null!==a.tail?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=Xe(),t.sibling=null,n=la.current,Ti(la,r?1&n|2:1&n),t):(Zs(t),null);case 22:case 23:return hc(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&0!==(1&t.mode)?0!==(1073741824&Dl)&&(Zs(t),6&t.subtreeFlags&&(t.flags|=8192)):Zs(t),null;case 24:case 25:return null}throw Error(o(156,t.tag))}function Ks(e,t){switch(to(t),t.tag){case 1:return Pi(t.type)&&Di(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return oa(),Ei(ki),Ei(Ni),da(),0!==(65536&(e=t.flags))&&0===(128&e)?(t.flags=-65537&e|128,t):null;case 5:return sa(t),null;case 13:if(Ei(la),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(o(340));fo()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Ei(la),null;case 4:return oa(),null;case 10:return _o(t.type._context),null;case 22:case 23:return hc(),null;default:return null}}Ps=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ds=function(){},As=function(e,t,n,r){var i=e.memoizedProps;if(i!==r){e=t.stateNode,ra(ea.current);var o,a=null;switch(n){case"input":i=K(e,i),r=K(e,r),a=[];break;case"select":i=L({},i,{value:void 0}),r=L({},r,{value:void 0}),a=[];break;case"textarea":i=re(e,i),r=re(e,r),a=[];break;default:"function"!==typeof i.onClick&&"function"===typeof r.onClick&&(e.onclick=Jr)}for(u in ye(n,r),n=null,i)if(!r.hasOwnProperty(u)&&i.hasOwnProperty(u)&&null!=i[u])if("style"===u){var l=i[u];for(o in l)l.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==u&&"children"!==u&&"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(s.hasOwnProperty(u)?a||(a=[]):(a=a||[]).push(u,null));for(u in r){var c=r[u];if(l=null!=i?i[u]:void 0,r.hasOwnProperty(u)&&c!==l&&(null!=c||null!=l))if("style"===u)if(l){for(o in l)!l.hasOwnProperty(o)||c&&c.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in c)c.hasOwnProperty(o)&&l[o]!==c[o]&&(n||(n={}),n[o]=c[o])}else n||(a||(a=[]),a.push(u,n)),n=c;else"dangerouslySetInnerHTML"===u?(c=c?c.__html:void 0,l=l?l.__html:void 0,null!=c&&l!==c&&(a=a||[]).push(u,c)):"children"===u?"string"!==typeof c&&"number"!==typeof c||(a=a||[]).push(u,""+c):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&(s.hasOwnProperty(u)?(null!=c&&"onScroll"===u&&zr("scroll",e),a||l===c||(a=[])):(a=a||[]).push(u,c))}n&&(a=a||[]).push("style",n);var u=a;(t.updateQueue=u)&&(t.flags|=4)}},Rs=function(e,t,n,r){n!==r&&(t.flags|=4)};var Qs=!1,Xs=!1,$s="function"===typeof WeakSet?WeakSet:Set,Js=null;function el(e,t){var n=e.ref;if(null!==n)if("function"===typeof n)try{n(null)}catch(r){Ec(e,t,r)}else n.current=null}function tl(e,t,n){try{n()}catch(r){Ec(e,t,r)}}var nl=!1;function rl(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var i=r=r.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,void 0!==o&&tl(t,n,o)}i=i.next}while(i!==r)}}function il(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function ol(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"===typeof t?t(e):t.current=e}}function al(e){var t=e.alternate;null!==t&&(e.alternate=null,al(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[hi],delete t[pi],delete t[mi],delete t[gi],delete t[vi])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function sl(e){return 5===e.tag||3===e.tag||4===e.tag}function ll(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||sl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function cl(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!==(n=n._reactRootContainer)&&void 0!==n||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(cl(e,t,n),e=e.sibling;null!==e;)cl(e,t,n),e=e.sibling}function ul(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(ul(e,t,n),e=e.sibling;null!==e;)ul(e,t,n),e=e.sibling}var dl=null,hl=!1;function pl(e,t,n){for(n=n.child;null!==n;)fl(e,t,n),n=n.sibling}function fl(e,t,n){if(ot&&"function"===typeof ot.onCommitFiberUnmount)try{ot.onCommitFiberUnmount(it,n)}catch(s){}switch(n.tag){case 5:Xs||el(n,t);case 6:var r=dl,i=hl;dl=null,pl(e,t,n),hl=i,null!==(dl=r)&&(hl?(e=dl,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):dl.removeChild(n.stateNode));break;case 18:null!==dl&&(hl?(e=dl,n=n.stateNode,8===e.nodeType?li(e.parentNode,n):1===e.nodeType&&li(e,n),Ht(e)):li(dl,n.stateNode));break;case 4:r=dl,i=hl,dl=n.stateNode.containerInfo,hl=!0,pl(e,t,n),dl=r,hl=i;break;case 0:case 11:case 14:case 15:if(!Xs&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){i=r=r.next;do{var o=i,a=o.destroy;o=o.tag,void 0!==a&&(0!==(2&o)||0!==(4&o))&&tl(n,t,a),i=i.next}while(i!==r)}pl(e,t,n);break;case 1:if(!Xs&&(el(n,t),"function"===typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){Ec(n,t,s)}pl(e,t,n);break;case 21:pl(e,t,n);break;case 22:1&n.mode?(Xs=(r=Xs)||null!==n.memoizedState,pl(e,t,n),Xs=r):pl(e,t,n);break;default:pl(e,t,n)}}function ml(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new $s),t.forEach((function(t){var r=kc.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function gl(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var i=n[r];try{var a=e,s=t,l=s;e:for(;null!==l;){switch(l.tag){case 5:dl=l.stateNode,hl=!1;break e;case 3:case 4:dl=l.stateNode.containerInfo,hl=!0;break e}l=l.return}if(null===dl)throw Error(o(160));fl(a,s,i),dl=null,hl=!1;var c=i.alternate;null!==c&&(c.return=null),i.return=null}catch(u){Ec(i,t,u)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)vl(t,e),t=t.sibling}function vl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(gl(t,e),yl(e),4&r){try{rl(3,e,e.return),il(3,e)}catch(g){Ec(e,e.return,g)}try{rl(5,e,e.return)}catch(g){Ec(e,e.return,g)}}break;case 1:gl(t,e),yl(e),512&r&&null!==n&&el(n,n.return);break;case 5:if(gl(t,e),yl(e),512&r&&null!==n&&el(n,n.return),32&e.flags){var i=e.stateNode;try{he(i,"")}catch(g){Ec(e,e.return,g)}}if(4&r&&null!=(i=e.stateNode)){var a=e.memoizedProps,s=null!==n?n.memoizedProps:a,l=e.type,c=e.updateQueue;if(e.updateQueue=null,null!==c)try{"input"===l&&"radio"===a.type&&null!=a.name&&X(i,a),be(l,s);var u=be(l,a);for(s=0;s<c.length;s+=2){var d=c[s],h=c[s+1];"style"===d?ge(i,h):"dangerouslySetInnerHTML"===d?de(i,h):"children"===d?he(i,h):b(i,d,h,u)}switch(l){case"input":$(i,a);break;case"textarea":oe(i,a);break;case"select":var p=i._wrapperState.wasMultiple;i._wrapperState.wasMultiple=!!a.multiple;var f=a.value;null!=f?ne(i,!!a.multiple,f,!1):p!==!!a.multiple&&(null!=a.defaultValue?ne(i,!!a.multiple,a.defaultValue,!0):ne(i,!!a.multiple,a.multiple?[]:"",!1))}i[pi]=a}catch(g){Ec(e,e.return,g)}}break;case 6:if(gl(t,e),yl(e),4&r){if(null===e.stateNode)throw Error(o(162));i=e.stateNode,a=e.memoizedProps;try{i.nodeValue=a}catch(g){Ec(e,e.return,g)}}break;case 3:if(gl(t,e),yl(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ht(t.containerInfo)}catch(g){Ec(e,e.return,g)}break;case 4:default:gl(t,e),yl(e);break;case 13:gl(t,e),yl(e),8192&(i=e.child).flags&&(a=null!==i.memoizedState,i.stateNode.isHidden=a,!a||null!==i.alternate&&null!==i.alternate.memoizedState||(Hl=Xe())),4&r&&ml(e);break;case 22:if(d=null!==n&&null!==n.memoizedState,1&e.mode?(Xs=(u=Xs)||d,gl(t,e),Xs=u):gl(t,e),yl(e),8192&r){if(u=null!==e.memoizedState,(e.stateNode.isHidden=u)&&!d&&0!==(1&e.mode))for(Js=e,d=e.child;null!==d;){for(h=Js=d;null!==Js;){switch(f=(p=Js).child,p.tag){case 0:case 11:case 14:case 15:rl(4,p,p.return);break;case 1:el(p,p.return);var m=p.stateNode;if("function"===typeof m.componentWillUnmount){r=p,n=p.return;try{t=r,m.props=t.memoizedProps,m.state=t.memoizedState,m.componentWillUnmount()}catch(g){Ec(r,n,g)}}break;case 5:el(p,p.return);break;case 22:if(null!==p.memoizedState){Sl(h);continue}}null!==f?(f.return=p,Js=f):Sl(h)}d=d.sibling}e:for(d=null,h=e;;){if(5===h.tag){if(null===d){d=h;try{i=h.stateNode,u?"function"===typeof(a=i.style).setProperty?a.setProperty("display","none","important"):a.display="none":(l=h.stateNode,s=void 0!==(c=h.memoizedProps.style)&&null!==c&&c.hasOwnProperty("display")?c.display:null,l.style.display=me("display",s))}catch(g){Ec(e,e.return,g)}}}else if(6===h.tag){if(null===d)try{h.stateNode.nodeValue=u?"":h.memoizedProps}catch(g){Ec(e,e.return,g)}}else if((22!==h.tag&&23!==h.tag||null===h.memoizedState||h===e)&&null!==h.child){h.child.return=h,h=h.child;continue}if(h===e)break e;for(;null===h.sibling;){if(null===h.return||h.return===e)break e;d===h&&(d=null),h=h.return}d===h&&(d=null),h.sibling.return=h.return,h=h.sibling}}break;case 19:gl(t,e),yl(e),4&r&&ml(e);case 21:}}function yl(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(sl(n)){var r=n;break e}n=n.return}throw Error(o(160))}switch(r.tag){case 5:var i=r.stateNode;32&r.flags&&(he(i,""),r.flags&=-33),ul(e,ll(e),i);break;case 3:case 4:var a=r.stateNode.containerInfo;cl(e,ll(e),a);break;default:throw Error(o(161))}}catch(s){Ec(e,e.return,s)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function bl(e,t,n){Js=e,xl(e,t,n)}function xl(e,t,n){for(var r=0!==(1&e.mode);null!==Js;){var i=Js,o=i.child;if(22===i.tag&&r){var a=null!==i.memoizedState||Qs;if(!a){var s=i.alternate,l=null!==s&&null!==s.memoizedState||Xs;s=Qs;var c=Xs;if(Qs=a,(Xs=l)&&!c)for(Js=i;null!==Js;)l=(a=Js).child,22===a.tag&&null!==a.memoizedState?_l(i):null!==l?(l.return=a,Js=l):_l(i);for(;null!==o;)Js=o,xl(o,t,n),o=o.sibling;Js=i,Qs=s,Xs=c}wl(e)}else 0!==(8772&i.subtreeFlags)&&null!==o?(o.return=i,Js=o):wl(e)}}function wl(e){for(;null!==Js;){var t=Js;if(0!==(8772&t.flags)){var n=t.alternate;try{if(0!==(8772&t.flags))switch(t.tag){case 0:case 11:case 15:Xs||il(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Xs)if(null===n)r.componentDidMount();else{var i=t.elementType===t.type?n.memoizedProps:vo(t.type,n.memoizedProps);r.componentDidUpdate(i,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var a=t.updateQueue;null!==a&&zo(t,a,r);break;case 3:var s=t.updateQueue;if(null!==s){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}zo(t,s,n)}break;case 5:var l=t.stateNode;if(null===n&&4&t.flags){n=l;var c=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":c.autoFocus&&n.focus();break;case"img":c.src&&(n.src=c.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var u=t.alternate;if(null!==u){var d=u.memoizedState;if(null!==d){var h=d.dehydrated;null!==h&&Ht(h)}}}break;default:throw Error(o(163))}Xs||512&t.flags&&ol(t)}catch(p){Ec(t,t.return,p)}}if(t===e){Js=null;break}if(null!==(n=t.sibling)){n.return=t.return,Js=n;break}Js=t.return}}function Sl(e){for(;null!==Js;){var t=Js;if(t===e){Js=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Js=n;break}Js=t.return}}function _l(e){for(;null!==Js;){var t=Js;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{il(4,t)}catch(l){Ec(t,n,l)}break;case 1:var r=t.stateNode;if("function"===typeof r.componentDidMount){var i=t.return;try{r.componentDidMount()}catch(l){Ec(t,i,l)}}var o=t.return;try{ol(t)}catch(l){Ec(t,o,l)}break;case 5:var a=t.return;try{ol(t)}catch(l){Ec(t,a,l)}}}catch(l){Ec(t,t.return,l)}if(t===e){Js=null;break}var s=t.sibling;if(null!==s){s.return=t.return,Js=s;break}Js=t.return}}var Cl,El=Math.ceil,Tl=x.ReactCurrentDispatcher,Ol=x.ReactCurrentOwner,Nl=x.ReactCurrentBatchConfig,kl=0,jl=null,Il=null,Pl=0,Dl=0,Al=Ci(0),Rl=0,Ml=null,Ll=0,Fl=0,zl=0,Bl=null,Ul=null,Hl=0,Vl=1/0,Gl=null,Wl=!1,ql=null,Zl=null,Yl=!1,Kl=null,Ql=0,Xl=0,$l=null,Jl=-1,ec=0;function tc(){return 0!==(6&kl)?Xe():-1!==Jl?Jl:Jl=Xe()}function nc(e){return 0===(1&e.mode)?1:0!==(2&kl)&&0!==Pl?Pl&-Pl:null!==go.transition?(0===ec&&(ec=mt()),ec):0!==(e=bt)?e:e=void 0===(e=window.event)?16:Qt(e.type)}function rc(e,t,n,r){if(50<Xl)throw Xl=0,$l=null,Error(o(185));vt(e,n,r),0!==(2&kl)&&e===jl||(e===jl&&(0===(2&kl)&&(Fl|=n),4===Rl&&lc(e,Pl)),ic(e,r),1===n&&0===kl&&0===(1&t.mode)&&(Vl=Xe()+500,zi&&Hi()))}function ic(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,o=e.pendingLanes;0<o;){var a=31-at(o),s=1<<a,l=i[a];-1===l?0!==(s&n)&&0===(s&r)||(i[a]=pt(s,t)):l<=t&&(e.expiredLanes|=s),o&=~s}}(e,t);var r=ht(e,e===jl?Pl:0);if(0===r)null!==n&&Ye(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Ye(n),1===t)0===e.tag?function(e){zi=!0,Ui(e)}(cc.bind(null,e)):Ui(cc.bind(null,e)),ai((function(){0===(6&kl)&&Hi()})),n=null;else{switch(xt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=jc(n,oc.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function oc(e,t){if(Jl=-1,ec=0,0!==(6&kl))throw Error(o(327));var n=e.callbackNode;if(_c()&&e.callbackNode!==n)return null;var r=ht(e,e===jl?Pl:0);if(0===r)return null;if(0!==(30&r)||0!==(r&e.expiredLanes)||t)t=vc(e,r);else{t=r;var i=kl;kl|=2;var a=mc();for(jl===e&&Pl===t||(Gl=null,Vl=Xe()+500,pc(e,t));;)try{bc();break}catch(l){fc(e,l)}So(),Tl.current=a,kl=i,null!==Il?t=0:(jl=null,Pl=0,t=Rl)}if(0!==t){if(2===t&&(0!==(i=ft(e))&&(r=i,t=ac(e,i))),1===t)throw n=Ml,pc(e,0),lc(e,r),ic(e,Xe()),n;if(6===t)lc(e,r);else{if(i=e.current.alternate,0===(30&r)&&!function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var i=n[r],o=i.getSnapshot;i=i.value;try{if(!sr(o(),i))return!1}catch(s){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(i)&&(2===(t=vc(e,r))&&(0!==(a=ft(e))&&(r=a,t=ac(e,a))),1===t))throw n=Ml,pc(e,0),lc(e,r),ic(e,Xe()),n;switch(e.finishedWork=i,e.finishedLanes=r,t){case 0:case 1:throw Error(o(345));case 2:case 5:Sc(e,Ul,Gl);break;case 3:if(lc(e,r),(130023424&r)===r&&10<(t=Hl+500-Xe())){if(0!==ht(e,0))break;if(((i=e.suspendedLanes)&r)!==r){tc(),e.pingedLanes|=e.suspendedLanes&i;break}e.timeoutHandle=ri(Sc.bind(null,e,Ul,Gl),t);break}Sc(e,Ul,Gl);break;case 4:if(lc(e,r),(4194240&r)===r)break;for(t=e.eventTimes,i=-1;0<r;){var s=31-at(r);a=1<<s,(s=t[s])>i&&(i=s),r&=~a}if(r=i,10<(r=(120>(r=Xe()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*El(r/1960))-r)){e.timeoutHandle=ri(Sc.bind(null,e,Ul,Gl),r);break}Sc(e,Ul,Gl);break;default:throw Error(o(329))}}}return ic(e,Xe()),e.callbackNode===n?oc.bind(null,e):null}function ac(e,t){var n=Bl;return e.current.memoizedState.isDehydrated&&(pc(e,t).flags|=256),2!==(e=vc(e,t))&&(t=Ul,Ul=n,null!==t&&sc(t)),e}function sc(e){null===Ul?Ul=e:Ul.push.apply(Ul,e)}function lc(e,t){for(t&=~zl,t&=~Fl,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-at(t),r=1<<n;e[n]=-1,t&=~r}}function cc(e){if(0!==(6&kl))throw Error(o(327));_c();var t=ht(e,0);if(0===(1&t))return ic(e,Xe()),null;var n=vc(e,t);if(0!==e.tag&&2===n){var r=ft(e);0!==r&&(t=r,n=ac(e,r))}if(1===n)throw n=Ml,pc(e,0),lc(e,t),ic(e,Xe()),n;if(6===n)throw Error(o(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,Sc(e,Ul,Gl),ic(e,Xe()),null}function uc(e,t){var n=kl;kl|=1;try{return e(t)}finally{0===(kl=n)&&(Vl=Xe()+500,zi&&Hi())}}function dc(e){null!==Kl&&0===Kl.tag&&0===(6&kl)&&_c();var t=kl;kl|=1;var n=Nl.transition,r=bt;try{if(Nl.transition=null,bt=1,e)return e()}finally{bt=r,Nl.transition=n,0===(6&(kl=t))&&Hi()}}function hc(){Dl=Al.current,Ei(Al)}function pc(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,ii(n)),null!==Il)for(n=Il.return;null!==n;){var r=n;switch(to(r),r.tag){case 1:null!==(r=r.type.childContextTypes)&&void 0!==r&&Di();break;case 3:oa(),Ei(ki),Ei(Ni),da();break;case 5:sa(r);break;case 4:oa();break;case 13:case 19:Ei(la);break;case 10:_o(r.type._context);break;case 22:case 23:hc()}n=n.return}if(jl=e,Il=e=Ac(e.current,null),Pl=Dl=t,Rl=0,Ml=null,zl=Fl=Ll=0,Ul=Bl=null,null!==Oo){for(t=0;t<Oo.length;t++)if(null!==(r=(n=Oo[t]).interleaved)){n.interleaved=null;var i=r.next,o=n.pending;if(null!==o){var a=o.next;o.next=i,r.next=a}n.pending=r}Oo=null}return e}function fc(e,t){for(;;){var n=Il;try{if(So(),ha.current=as,ya){for(var r=ma.memoizedState;null!==r;){var i=r.queue;null!==i&&(i.pending=null),r=r.next}ya=!1}if(fa=0,va=ga=ma=null,ba=!1,xa=0,Ol.current=null,null===n||null===n.return){Rl=1,Ml=t,Il=null;break}e:{var a=e,s=n.return,l=n,c=t;if(t=Pl,l.flags|=32768,null!==c&&"object"===typeof c&&"function"===typeof c.then){var u=c,d=l,h=d.tag;if(0===(1&d.mode)&&(0===h||11===h||15===h)){var p=d.alternate;p?(d.updateQueue=p.updateQueue,d.memoizedState=p.memoizedState,d.lanes=p.lanes):(d.updateQueue=null,d.memoizedState=null)}var f=vs(s);if(null!==f){f.flags&=-257,ys(f,s,l,0,t),1&f.mode&&gs(a,u,t),c=u;var m=(t=f).updateQueue;if(null===m){var g=new Set;g.add(c),t.updateQueue=g}else m.add(c);break e}if(0===(1&t)){gs(a,u,t),gc();break e}c=Error(o(426))}else if(io&&1&l.mode){var v=vs(s);if(null!==v){0===(65536&v.flags)&&(v.flags|=256),ys(v,s,l,0,t),mo(us(c,l));break e}}a=c=us(c,l),4!==Rl&&(Rl=2),null===Bl?Bl=[a]:Bl.push(a),a=s;do{switch(a.tag){case 3:a.flags|=65536,t&=-t,a.lanes|=t,Lo(a,fs(0,c,t));break e;case 1:l=c;var y=a.type,b=a.stateNode;if(0===(128&a.flags)&&("function"===typeof y.getDerivedStateFromError||null!==b&&"function"===typeof b.componentDidCatch&&(null===Zl||!Zl.has(b)))){a.flags|=65536,t&=-t,a.lanes|=t,Lo(a,ms(a,l,t));break e}}a=a.return}while(null!==a)}wc(n)}catch(x){t=x,Il===n&&null!==n&&(Il=n=n.return);continue}break}}function mc(){var e=Tl.current;return Tl.current=as,null===e?as:e}function gc(){0!==Rl&&3!==Rl&&2!==Rl||(Rl=4),null===jl||0===(268435455&Ll)&&0===(268435455&Fl)||lc(jl,Pl)}function vc(e,t){var n=kl;kl|=2;var r=mc();for(jl===e&&Pl===t||(Gl=null,pc(e,t));;)try{yc();break}catch(i){fc(e,i)}if(So(),kl=n,Tl.current=r,null!==Il)throw Error(o(261));return jl=null,Pl=0,Rl}function yc(){for(;null!==Il;)xc(Il)}function bc(){for(;null!==Il&&!Ke();)xc(Il)}function xc(e){var t=Cl(e.alternate,e,Dl);e.memoizedProps=e.pendingProps,null===t?wc(e):Il=t,Ol.current=null}function wc(e){var t=e;do{var n=t.alternate;if(e=t.return,0===(32768&t.flags)){if(null!==(n=Ys(n,t,Dl)))return void(Il=n)}else{if(null!==(n=Ks(n,t)))return n.flags&=32767,void(Il=n);if(null===e)return Rl=6,void(Il=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(Il=t);Il=t=e}while(null!==t);0===Rl&&(Rl=5)}function Sc(e,t,n){var r=bt,i=Nl.transition;try{Nl.transition=null,bt=1,function(e,t,n,r){do{_c()}while(null!==Kl);if(0!==(6&kl))throw Error(o(327));n=e.finishedWork;var i=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null,e.callbackPriority=0;var a=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var i=31-at(n),o=1<<i;t[i]=0,r[i]=-1,e[i]=-1,n&=~o}}(e,a),e===jl&&(Il=jl=null,Pl=0),0===(2064&n.subtreeFlags)&&0===(2064&n.flags)||Yl||(Yl=!0,jc(tt,(function(){return _c(),null}))),a=0!==(15990&n.flags),0!==(15990&n.subtreeFlags)||a){a=Nl.transition,Nl.transition=null;var s=bt;bt=1;var l=kl;kl|=4,Ol.current=null,function(e,t){if(ei=Gt,pr(e=hr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var i=r.anchorOffset,a=r.focusNode;r=r.focusOffset;try{n.nodeType,a.nodeType}catch(w){n=null;break e}var s=0,l=-1,c=-1,u=0,d=0,h=e,p=null;t:for(;;){for(var f;h!==n||0!==i&&3!==h.nodeType||(l=s+i),h!==a||0!==r&&3!==h.nodeType||(c=s+r),3===h.nodeType&&(s+=h.nodeValue.length),null!==(f=h.firstChild);)p=h,h=f;for(;;){if(h===e)break t;if(p===n&&++u===i&&(l=s),p===a&&++d===r&&(c=s),null!==(f=h.nextSibling))break;p=(h=p).parentNode}h=f}n=-1===l||-1===c?null:{start:l,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(ti={focusedElem:e,selectionRange:n},Gt=!1,Js=t;null!==Js;)if(e=(t=Js).child,0!==(1028&t.subtreeFlags)&&null!==e)e.return=t,Js=e;else for(;null!==Js;){t=Js;try{var m=t.alternate;if(0!==(1024&t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==m){var g=m.memoizedProps,v=m.memoizedState,y=t.stateNode,b=y.getSnapshotBeforeUpdate(t.elementType===t.type?g:vo(t.type,g),v);y.__reactInternalSnapshotBeforeUpdate=b}break;case 3:var x=t.stateNode.containerInfo;1===x.nodeType?x.textContent="":9===x.nodeType&&x.documentElement&&x.removeChild(x.documentElement);break;default:throw Error(o(163))}}catch(w){Ec(t,t.return,w)}if(null!==(e=t.sibling)){e.return=t.return,Js=e;break}Js=t.return}m=nl,nl=!1}(e,n),vl(n,e),fr(ti),Gt=!!ei,ti=ei=null,e.current=n,bl(n,e,i),Qe(),kl=l,bt=s,Nl.transition=a}else e.current=n;if(Yl&&(Yl=!1,Kl=e,Ql=i),a=e.pendingLanes,0===a&&(Zl=null),function(e){if(ot&&"function"===typeof ot.onCommitFiberRoot)try{ot.onCommitFiberRoot(it,e,void 0,128===(128&e.current.flags))}catch(t){}}(n.stateNode),ic(e,Xe()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)i=t[n],r(i.value,{componentStack:i.stack,digest:i.digest});if(Wl)throw Wl=!1,e=ql,ql=null,e;0!==(1&Ql)&&0!==e.tag&&_c(),a=e.pendingLanes,0!==(1&a)?e===$l?Xl++:(Xl=0,$l=e):Xl=0,Hi()}(e,t,n,r)}finally{Nl.transition=i,bt=r}return null}function _c(){if(null!==Kl){var e=xt(Ql),t=Nl.transition,n=bt;try{if(Nl.transition=null,bt=16>e?16:e,null===Kl)var r=!1;else{if(e=Kl,Kl=null,Ql=0,0!==(6&kl))throw Error(o(331));var i=kl;for(kl|=4,Js=e.current;null!==Js;){var a=Js,s=a.child;if(0!==(16&Js.flags)){var l=a.deletions;if(null!==l){for(var c=0;c<l.length;c++){var u=l[c];for(Js=u;null!==Js;){var d=Js;switch(d.tag){case 0:case 11:case 15:rl(8,d,a)}var h=d.child;if(null!==h)h.return=d,Js=h;else for(;null!==Js;){var p=(d=Js).sibling,f=d.return;if(al(d),d===u){Js=null;break}if(null!==p){p.return=f,Js=p;break}Js=f}}}var m=a.alternate;if(null!==m){var g=m.child;if(null!==g){m.child=null;do{var v=g.sibling;g.sibling=null,g=v}while(null!==g)}}Js=a}}if(0!==(2064&a.subtreeFlags)&&null!==s)s.return=a,Js=s;else e:for(;null!==Js;){if(0!==(2048&(a=Js).flags))switch(a.tag){case 0:case 11:case 15:rl(9,a,a.return)}var y=a.sibling;if(null!==y){y.return=a.return,Js=y;break e}Js=a.return}}var b=e.current;for(Js=b;null!==Js;){var x=(s=Js).child;if(0!==(2064&s.subtreeFlags)&&null!==x)x.return=s,Js=x;else e:for(s=b;null!==Js;){if(0!==(2048&(l=Js).flags))try{switch(l.tag){case 0:case 11:case 15:il(9,l)}}catch(S){Ec(l,l.return,S)}if(l===s){Js=null;break e}var w=l.sibling;if(null!==w){w.return=l.return,Js=w;break e}Js=l.return}}if(kl=i,Hi(),ot&&"function"===typeof ot.onPostCommitFiberRoot)try{ot.onPostCommitFiberRoot(it,e)}catch(S){}r=!0}return r}finally{bt=n,Nl.transition=t}}return!1}function Cc(e,t,n){e=Ro(e,t=fs(0,t=us(n,t),1),1),t=tc(),null!==e&&(vt(e,1,t),ic(e,t))}function Ec(e,t,n){if(3===e.tag)Cc(e,e,n);else for(;null!==t;){if(3===t.tag){Cc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"===typeof t.type.getDerivedStateFromError||"function"===typeof r.componentDidCatch&&(null===Zl||!Zl.has(r))){t=Ro(t,e=ms(t,e=us(n,e),1),1),e=tc(),null!==t&&(vt(t,1,e),ic(t,e));break}}t=t.return}}function Tc(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=tc(),e.pingedLanes|=e.suspendedLanes&n,jl===e&&(Pl&n)===n&&(4===Rl||3===Rl&&(130023424&Pl)===Pl&&500>Xe()-Hl?pc(e,0):zl|=n),ic(e,t)}function Oc(e,t){0===t&&(0===(1&e.mode)?t=1:(t=ut,0===(130023424&(ut<<=1))&&(ut=4194304)));var n=tc();null!==(e=jo(e,t))&&(vt(e,t,n),ic(e,n))}function Nc(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Oc(e,n)}function kc(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;null!==i&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(o(314))}null!==r&&r.delete(t),Oc(e,n)}function jc(e,t){return Ze(e,t)}function Ic(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Pc(e,t,n,r){return new Ic(e,t,n,r)}function Dc(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ac(e,t){var n=e.alternate;return null===n?((n=Pc(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Rc(e,t,n,r,i,a){var s=2;if(r=e,"function"===typeof e)Dc(e)&&(s=1);else if("string"===typeof e)s=5;else e:switch(e){case _:return Mc(n.children,i,a,t);case C:s=8,i|=8;break;case E:return(e=Pc(12,n,t,2|i)).elementType=E,e.lanes=a,e;case k:return(e=Pc(13,n,t,i)).elementType=k,e.lanes=a,e;case j:return(e=Pc(19,n,t,i)).elementType=j,e.lanes=a,e;case D:return Lc(n,i,a,t);default:if("object"===typeof e&&null!==e)switch(e.$$typeof){case T:s=10;break e;case O:s=9;break e;case N:s=11;break e;case I:s=14;break e;case P:s=16,r=null;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Pc(s,n,t,i)).elementType=e,t.type=r,t.lanes=a,t}function Mc(e,t,n,r){return(e=Pc(7,e,r,t)).lanes=n,e}function Lc(e,t,n,r){return(e=Pc(22,e,r,t)).elementType=D,e.lanes=n,e.stateNode={isHidden:!1},e}function Fc(e,t,n){return(e=Pc(6,e,null,t)).lanes=n,e}function zc(e,t,n){return(t=Pc(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Bc(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=gt(0),this.expirationTimes=gt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gt(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Uc(e,t,n,r,i,o,a,s,l){return e=new Bc(e,t,n,s,l),1===t?(t=1,!0===o&&(t|=8)):t=0,o=Pc(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Po(o),e}function Hc(e){if(!e)return Oi;e:{if(He(e=e._reactInternals)!==e||1!==e.tag)throw Error(o(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Pi(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(o(171))}if(1===e.tag){var n=e.type;if(Pi(n))return Ri(e,n,t)}return t}function Vc(e,t,n,r,i,o,a,s,l){return(e=Uc(n,r,!0,e,0,o,0,s,l)).context=Hc(null),n=e.current,(o=Ao(r=tc(),i=nc(n))).callback=void 0!==t&&null!==t?t:null,Ro(n,o,i),e.current.lanes=i,vt(e,i,r),ic(e,r),e}function Gc(e,t,n,r){var i=t.current,o=tc(),a=nc(i);return n=Hc(n),null===t.context?t.context=n:t.pendingContext=n,(t=Ao(o,a)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Ro(i,t,a))&&(rc(e,i,a,o),Mo(e,i,a)),a}function Wc(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function qc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Zc(e,t){qc(e,t),(e=e.alternate)&&qc(e,t)}Cl=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||ki.current)xs=!0;else{if(0===(e.lanes&n)&&0===(128&t.flags))return xs=!1,function(e,t,n){switch(t.tag){case 3:js(t),fo();break;case 5:aa(t);break;case 1:Pi(t.type)&&Mi(t);break;case 4:ia(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,i=t.memoizedProps.value;Ti(yo,r._currentValue),r._currentValue=i;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Ti(la,1&la.current),t.flags|=128,null):0!==(n&t.child.childLanes)?Fs(e,t,n):(Ti(la,1&la.current),null!==(e=Ws(e,t,n))?e.sibling:null);Ti(la,1&la.current);break;case 19:if(r=0!==(n&t.childLanes),0!==(128&e.flags)){if(r)return Vs(e,t,n);t.flags|=128}if(null!==(i=t.memoizedState)&&(i.rendering=null,i.tail=null,i.lastEffect=null),Ti(la,la.current),r)break;return null;case 22:case 23:return t.lanes=0,Es(e,t,n)}return Ws(e,t,n)}(e,t,n);xs=0!==(131072&e.flags)}else xs=!1,io&&0!==(1048576&t.flags)&&Ji(t,qi,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Gs(e,t),e=t.pendingProps;var i=Ii(t,Ni.current);Eo(t,n),i=Ca(null,t,r,e,i,n);var a=Ea();return t.flags|=1,"object"===typeof i&&null!==i&&"function"===typeof i.render&&void 0===i.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Pi(r)?(a=!0,Mi(t)):a=!1,t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null,Po(t),i.updater=Ho,t.stateNode=i,i._reactInternals=t,qo(t,r,e,n),t=ks(null,t,r,!0,a,n)):(t.tag=0,io&&a&&eo(t),ws(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Gs(e,t),e=t.pendingProps,r=(i=r._init)(r._payload),t.type=r,i=t.tag=function(e){if("function"===typeof e)return Dc(e)?1:0;if(void 0!==e&&null!==e){if((e=e.$$typeof)===N)return 11;if(e===I)return 14}return 2}(r),e=vo(r,e),i){case 0:t=Os(null,t,r,e,n);break e;case 1:t=Ns(null,t,r,e,n);break e;case 11:t=Ss(null,t,r,e,n);break e;case 14:t=_s(null,t,r,vo(r.type,e),n);break e}throw Error(o(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,Os(e,t,r,i=t.elementType===r?i:vo(r,i),n);case 1:return r=t.type,i=t.pendingProps,Ns(e,t,r,i=t.elementType===r?i:vo(r,i),n);case 3:e:{if(js(t),null===e)throw Error(o(387));r=t.pendingProps,i=(a=t.memoizedState).element,Do(e,t),Fo(t,r,null,n);var s=t.memoizedState;if(r=s.element,a.isDehydrated){if(a={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=a,t.memoizedState=a,256&t.flags){t=Is(e,t,r,n,i=us(Error(o(423)),t));break e}if(r!==i){t=Is(e,t,r,n,i=us(Error(o(424)),t));break e}for(ro=ci(t.stateNode.containerInfo.firstChild),no=t,io=!0,oo=null,n=$o(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(fo(),r===i){t=Ws(e,t,n);break e}ws(e,t,r,n)}t=t.child}return t;case 5:return aa(t),null===e&&co(t),r=t.type,i=t.pendingProps,a=null!==e?e.memoizedProps:null,s=i.children,ni(r,i)?s=null:null!==a&&ni(r,a)&&(t.flags|=32),Ts(e,t),ws(e,t,s,n),t.child;case 6:return null===e&&co(t),null;case 13:return Fs(e,t,n);case 4:return ia(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Xo(t,null,r,n):ws(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,Ss(e,t,r,i=t.elementType===r?i:vo(r,i),n);case 7:return ws(e,t,t.pendingProps,n),t.child;case 8:case 12:return ws(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,a=t.memoizedProps,s=i.value,Ti(yo,r._currentValue),r._currentValue=s,null!==a)if(sr(a.value,s)){if(a.children===i.children&&!ki.current){t=Ws(e,t,n);break e}}else for(null!==(a=t.child)&&(a.return=t);null!==a;){var l=a.dependencies;if(null!==l){s=a.child;for(var c=l.firstContext;null!==c;){if(c.context===r){if(1===a.tag){(c=Ao(-1,n&-n)).tag=2;var u=a.updateQueue;if(null!==u){var d=(u=u.shared).pending;null===d?c.next=c:(c.next=d.next,d.next=c),u.pending=c}}a.lanes|=n,null!==(c=a.alternate)&&(c.lanes|=n),Co(a.return,n,t),l.lanes|=n;break}c=c.next}}else if(10===a.tag)s=a.type===t.type?null:a.child;else if(18===a.tag){if(null===(s=a.return))throw Error(o(341));s.lanes|=n,null!==(l=s.alternate)&&(l.lanes|=n),Co(s,n,t),s=a.sibling}else s=a.child;if(null!==s)s.return=a;else for(s=a;null!==s;){if(s===t){s=null;break}if(null!==(a=s.sibling)){a.return=s.return,s=a;break}s=s.return}a=s}ws(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,Eo(t,n),r=r(i=To(i)),t.flags|=1,ws(e,t,r,n),t.child;case 14:return i=vo(r=t.type,t.pendingProps),_s(e,t,r,i=vo(r.type,i),n);case 15:return Cs(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:vo(r,i),Gs(e,t),t.tag=1,Pi(r)?(e=!0,Mi(t)):e=!1,Eo(t,n),Go(t,r,i),qo(t,r,i,n),ks(null,t,r,!0,e,n);case 19:return Vs(e,t,n);case 22:return Es(e,t,n)}throw Error(o(156,t.tag))};var Yc="function"===typeof reportError?reportError:function(e){console.error(e)};function Kc(e){this._internalRoot=e}function Qc(e){this._internalRoot=e}function Xc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function $c(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Jc(){}function eu(e,t,n,r,i){var o=n._reactRootContainer;if(o){var a=o;if("function"===typeof i){var s=i;i=function(){var e=Wc(a);s.call(e)}}Gc(t,a,e,i)}else a=function(e,t,n,r,i){if(i){if("function"===typeof r){var o=r;r=function(){var e=Wc(a);o.call(e)}}var a=Vc(t,r,e,0,null,!1,0,"",Jc);return e._reactRootContainer=a,e[fi]=a.current,Hr(8===e.nodeType?e.parentNode:e),dc(),a}for(;i=e.lastChild;)e.removeChild(i);if("function"===typeof r){var s=r;r=function(){var e=Wc(l);s.call(e)}}var l=Uc(e,0,!1,null,0,!1,0,"",Jc);return e._reactRootContainer=l,e[fi]=l.current,Hr(8===e.nodeType?e.parentNode:e),dc((function(){Gc(t,l,n,r)})),l}(n,t,e,i,r);return Wc(a)}Qc.prototype.render=Kc.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(o(409));Gc(e,t,null,null)},Qc.prototype.unmount=Kc.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;dc((function(){Gc(null,e,null,null)})),t[fi]=null}},Qc.prototype.unstable_scheduleHydration=function(e){if(e){var t=Ct();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Dt.length&&0!==t&&t<Dt[n].priority;n++);Dt.splice(n,0,e),0===n&&Lt(e)}},wt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dt(t.pendingLanes);0!==n&&(yt(t,1|n),ic(t,Xe()),0===(6&kl)&&(Vl=Xe()+500,Hi()))}break;case 13:dc((function(){var t=jo(e,1);if(null!==t){var n=tc();rc(t,e,1,n)}})),Zc(e,1)}},St=function(e){if(13===e.tag){var t=jo(e,134217728);if(null!==t)rc(t,e,134217728,tc());Zc(e,134217728)}},_t=function(e){if(13===e.tag){var t=nc(e),n=jo(e,t);if(null!==n)rc(n,e,t,tc());Zc(e,t)}},Ct=function(){return bt},Et=function(e,t){var n=bt;try{return bt=e,t()}finally{bt=n}},Se=function(e,t,n){switch(t){case"input":if($(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var i=wi(r);if(!i)throw Error(o(90));Z(r),$(r,i)}}}break;case"textarea":oe(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Ne=uc,ke=dc;var tu={usingClientEntryPoint:!1,Events:[bi,xi,wi,Te,Oe,uc]},nu={findFiberByHostInstance:yi,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"},ru={bundleType:nu.bundleType,version:nu.version,rendererPackageName:nu.rendererPackageName,rendererConfig:nu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:x.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=We(e))?null:e.stateNode},findFiberByHostInstance:nu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var iu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!iu.isDisabled&&iu.supportsFiber)try{it=iu.inject(ru),ot=iu}catch(ue){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tu,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Xc(t))throw Error(o(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Xc(e))throw Error(o(299));var n=!1,r="",i=Yc;return null!==t&&void 0!==t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(i=t.onRecoverableError)),t=Uc(e,1,!1,null,0,n,0,r,i),e[fi]=t.current,Hr(8===e.nodeType?e.parentNode:e),new Kc(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"===typeof e.render)throw Error(o(188));throw e=Object.keys(e).join(","),Error(o(268,e))}return e=null===(e=We(t))?null:e.stateNode},t.flushSync=function(e){return dc(e)},t.hydrate=function(e,t,n){if(!$c(t))throw Error(o(200));return eu(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Xc(e))throw Error(o(405));var r=null!=n&&n.hydratedSources||null,i=!1,a="",s=Yc;if(null!==n&&void 0!==n&&(!0===n.unstable_strictMode&&(i=!0),void 0!==n.identifierPrefix&&(a=n.identifierPrefix),void 0!==n.onRecoverableError&&(s=n.onRecoverableError)),t=Vc(t,null,e,1,null!=n?n:null,i,0,a,s),e[fi]=t.current,Hr(e),r)for(e=0;e<r.length;e++)i=(i=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,i]:t.mutableSourceEagerHydrationData.push(n,i);return new Qc(t)},t.render=function(e,t,n){if(!$c(t))throw Error(o(200));return eu(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!$c(e))throw Error(o(40));return!!e._reactRootContainer&&(dc((function(){eu(null,null,e,!1,(function(){e._reactRootContainer=null,e[fi]=null}))})),!0)},t.unstable_batchedUpdates=uc,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!$c(n))throw Error(o(200));if(null==e||void 0===e._reactInternals)throw Error(o(38));return eu(e,t,n,!1,r)},t.version="18.2.0-next-9e3b772b8-20220608"},63609:(e,t,n)=>{"use strict";var r=n(38886);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},38886:(e,t,n)=>{"use strict";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(9314)},77808:e=>{var t="undefined"!==typeof Element,n="function"===typeof Map,r="function"===typeof Set,i="function"===typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,a){if(e===a)return!0;if(e&&a&&"object"==typeof e&&"object"==typeof a){if(e.constructor!==a.constructor)return!1;var s,l,c,u;if(Array.isArray(e)){if((s=e.length)!=a.length)return!1;for(l=s;0!==l--;)if(!o(e[l],a[l]))return!1;return!0}if(n&&e instanceof Map&&a instanceof Map){if(e.size!==a.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!a.has(l.value[0]))return!1;for(u=e.entries();!(l=u.next()).done;)if(!o(l.value[1],a.get(l.value[0])))return!1;return!0}if(r&&e instanceof Set&&a instanceof Set){if(e.size!==a.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!a.has(l.value[0]))return!1;return!0}if(i&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(a)){if((s=e.length)!=a.length)return!1;for(l=s;0!==l--;)if(e[l]!==a[l])return!1;return!0}if(e.constructor===RegExp)return e.source===a.source&&e.flags===a.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"===typeof e.valueOf&&"function"===typeof a.valueOf)return e.valueOf()===a.valueOf();if(e.toString!==Object.prototype.toString&&"function"===typeof e.toString&&"function"===typeof a.toString)return e.toString()===a.toString();if((s=(c=Object.keys(e)).length)!==Object.keys(a).length)return!1;for(l=s;0!==l--;)if(!Object.prototype.hasOwnProperty.call(a,c[l]))return!1;if(t&&e instanceof Element)return!1;for(l=s;0!==l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!e.$$typeof)&&!o(e[c[l]],a[c[l]]))return!1;return!0}return e!==e&&a!==a}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},9872:(e,t)=>{"use strict";var n=60103,r=60106,i=60107,o=60108,a=60114,s=60109,l=60110,c=60112,u=60113,d=60120,h=60115,p=60116,f=60121,m=60122,g=60117,v=60129,y=60131;if("function"===typeof Symbol&&Symbol.for){var b=Symbol.for;n=b("react.element"),r=b("react.portal"),i=b("react.fragment"),o=b("react.strict_mode"),a=b("react.profiler"),s=b("react.provider"),l=b("react.context"),c=b("react.forward_ref"),u=b("react.suspense"),d=b("react.suspense_list"),h=b("react.memo"),p=b("react.lazy"),f=b("react.block"),m=b("react.server.block"),g=b("react.fundamental"),v=b("react.debug_trace_mode"),y=b("react.legacy_hidden")}function x(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case i:case a:case o:case u:case d:return e;default:switch(e=e&&e.$$typeof){case l:case c:case p:case h:case s:return e;default:return t}}case r:return t}}}t.isContextConsumer=function(e){return x(e)===l}},60380:(e,t,n)=>{"use strict";e.exports=n(9872)},83326:(e,t,n)=>{var r=n(68963),i=n(77065),o=n(50134),a=n(60305),s=r.createElement,l=n(80254),c=n(62937),u=n(81702),d=n(96243),h=n(53767),p=n(68814);e.exports=i({propTypes:{data:o.any.isRequired,search:o.oneOfType([o.func,o.bool]),searchOptions:o.shape({debounceTime:o.number}),onClick:o.func,validateQuery:o.func,isExpanded:o.func,filterOptions:o.shape({cacheResults:o.bool,ignoreCase:o.bool}),query:o.string,verboseShowOriginal:o.bool},getDefaultProps:function(){return{data:null,search:c,searchOptions:{debounceTime:0},className:"",id:"json-"+Date.now(),onClick:p,filterOptions:{cacheResults:!0,ignoreCase:!1},validateQuery:function(e){return e.length>=2},isExpanded:function(e,t){return!1},verboseShowOriginal:!1}},getInitialState:function(){return{query:this.props.query||""}},render:function(){var e=this.props,t=this.state,n=""!==t.query&&e.validateQuery(t.query),r=n?t.filterer(t.query):e.data,i=n&&d(r);return s("div",{className:"json-inspector "+e.className},this.renderToolbar(),i?s("div",{className:"json-inspector__not-found"},"Nothing found"):s(l,{data:r,onClick:e.onClick,id:e.id,getOriginal:this.getOriginal,query:n?new RegExp(t.query,e.filterOptions.ignoreCase?"i":""):null,label:"root",root:!0,isExpanded:e.isExpanded,interactiveLabel:e.interactiveLabel,verboseShowOriginal:e.verboseShowOriginal}))},renderToolbar:function(){var e=this.props.search;if(e)return s("div",{className:"json-inspector__toolbar"},s(e,{onChange:a(this.search,this.props.searchOptions.debounceTime),data:this.props.data,query:this.state.query}))},search:function(e){this.setState({query:e})},componentWillMount:function(){this.createFilterer(this.props.data,this.props.filterOptions)},componentWillReceiveProps:function(e){this.createFilterer(e.data,e.filterOptions),"string"===typeof e.query&&e.query!==this.state.query&&this.setState({query:e.query})},shouldComponentUpdate:function(e,t){return e.query!==this.props.query||t.query!==this.state.query||e.data!==this.props.data||e.onClick!==this.props.onClick},createFilterer:function(e,t){this.setState({filterer:u(e,t)})},getOriginal:function(e){return h(this.props.data,e)}})},81702:(e,t,n)=>{var r=n(65263),i=Object.keys,o=n(20800),a=n(96243);function s(e,t,n){return i(e).reduce((function(i,c){var u,d=e[c];return o(d)?(l(t,c,n)||l(t,d,n))&&(i[c]=d):l(t,c,n)?i[c]=d:(u=s(d,t,n),a(u)||r(i,function(e,t){var n={};return n[e]=t,n}(c,u))),i}),{})}function l(e,t,n){if(t){var r=String(t),i=e;return n.ignoreCase&&(r=r.toLowerCase(),i=i.toLowerCase()),-1!==r.indexOf(i)}}e.exports=function(e,t){t||(t={cacheResults:!0});var n={};return function(r){if(!t.cacheResults)return s(e,r,t);var i;if(!n[r])for(var o=r.length-1;o>0;o-=1)if(i=r.substr(0,o),n[i]){n[r]=s(n[i],r,t);break}return n[r]||(n[r]=s(e,r,t)),n[r]}}},81139:(e,t,n)=>{var r=n(68963),i=n(77065),o=r.createElement;e.exports=i({getDefaultProps:function(){return{string:"",highlight:""}},shouldComponentUpdate:function(e){return e.highlight!==this.props.highlight},render:function(){var e=this.props,t=e.string.search(e.highlight);if(!e.highlight||-1===t)return o("span",null,e.string);var n=e.highlight.source.length,r=e.string.substr(t,n);return o("span",null,e.string.split(e.highlight).map((function(e,t){return o("span",{key:t},t>0?o("span",{className:"json-inspector__hl"},r):null,e)})))}})},96243:e=>{e.exports=function(e){return 0===Object.keys(e).length}},20800:(e,t,n)=>{var r=n(39032);e.exports=function(e){var t=r(e);return"Object"!==t&&"Array"!==t}},80254:(e,t,n)=>{var r=n(68963),i=n(77065),o=n(5083),a=n(88034),s=n(39032),l=n(20800),c=n(81139),u=r.createElement,d=i({getInitialState:function(){return{expanded:this._isInitiallyExpanded(this.props)}},getDefaultProps:function(){return{root:!1,prefix:""}},render:function(){var e="id_"+a(),t=this.props,n={path:this.keypath(),key:t.label.toString(),value:t.data},r=this._onClick.bind(this,n);return u("div",{className:this.getClassName(),id:"leaf-"+this._rootPath()},u("input",{className:"json-inspector__radio",type:"radio",name:t.id,id:e,tabIndex:-1}),u("label",{className:"json-inspector__line",htmlFor:e,onClick:r},u("div",{className:"json-inspector__flatpath"},n.path),u("span",{className:"json-inspector__key"},this.format(n.key),":",this.renderInteractiveLabel(n.key,!0)),this.renderTitle(),this.renderShowOriginalButton()),this.renderChildren())},renderTitle:function(){var e=this.data(),t=s(e);switch(t){case"Array":return u("span",{className:"json-inspector__value json-inspector__value_helper"},"[] "+h(e.length));case"Object":return u("span",{className:"json-inspector__value json-inspector__value_helper"},"{} "+h(Object.keys(e).length));default:return u("span",{className:"json-inspector__value json-inspector__value_"+t.toLowerCase()},this.format(String(e)),this.renderInteractiveLabel(e,!1))}},renderChildren:function(){var e=this.props,t=this._rootPath(),n=this.data();return this.state.expanded&&!l(n)?Object.keys(n).map((function(r){var i=n[r],o=!this.state.original||!!e.verboseShowOriginal&&e.query;return u(d,{data:i,label:r,prefix:t,onClick:e.onClick,id:e.id,query:e.query,getOriginal:o?e.getOriginal:null,key:p(r,i),isExpanded:e.isExpanded,interactiveLabel:e.interactiveLabel,verboseShowOriginal:e.verboseShowOriginal})}),this):null},renderShowOriginalButton:function(){var e=this.props;return l(e.data)||this.state.original||!e.getOriginal||!e.query||f(this.keypath(),e.query)?null:u("span",{className:"json-inspector__show-original",onClick:this._onShowOriginalClick})},renderInteractiveLabel:function(e,t){return"function"===typeof this.props.interactiveLabel?u(this.props.interactiveLabel,{value:String(e),originalValue:e,isKey:t,keypath:this.keypath()}):null},componentWillReceiveProps:function(e){e.query&&this.setState({expanded:!f(e.label,e.query)}),this.props.query&&!e.query&&this.setState({expanded:this._isInitiallyExpanded(e)})},_rootPath:function(){return this.props.prefix+"."+this.props.label},keypath:function(){return this._rootPath().substr(".root.".length)},data:function(){return this.state.original||this.props.data},format:function(e){return u(c,{string:e,highlight:this.props.query})},getClassName:function(){var e="json-inspector__leaf";return this.props.root&&(e+=" json-inspector__leaf_root"),this.state.expanded&&(e+=" json-inspector__leaf_expanded"),l(this.props.data)||(e+=" json-inspector__leaf_composite"),e},toggle:function(){this.setState({expanded:!this.state.expanded})},_onClick:function(e,t){this.toggle(),this.props.onClick(e),t.stopPropagation()},_onShowOriginalClick:function(e){this.setState({original:this.props.getOriginal(this.keypath())}),e.stopPropagation()},_isInitiallyExpanded:function(e){var t=this.keypath();return!!e.root||(e.query?!f(t,e.query)&&"function"===typeof e.getOriginal:e.isExpanded(t,e.data))}});function h(e){return e+(1===e?" item":" items")}function p(e,t){return l(t)?e+":"+o(String(t)):e+"["+s(t)+"]"}function f(e,t){return-1!==e.indexOf(t)}e.exports=d},53767:(e,t,n)=>{var r=n(39032),i=".";function o(e){return parseInt(e,10)}e.exports=function e(t,n){var a=n.split(i),s=a.shift();if(!s)return t;var l=r(t);return"Array"===l&&t[o(s)]?e(t[o(s)],a.join(i)):"Object"===l&&t[s]?e(t[s],a.join(i)):void 0}},68814:e=>{e.exports=function(){}},62937:(e,t,n)=>{var r=n(68963),i=n(77065),o=r.createElement,a=n(68814);e.exports=i({getDefaultProps:function(){return{onChange:a}},render:function(){return o("input",{className:"json-inspector__search",type:"search",placeholder:"Search",onChange:this.onChange})},onChange:function(e){this.props.onChange(e.target.value)}})},39032:e=>{e.exports=function(e){return Object.prototype.toString.call(e).slice(8,-1)}},88034:e=>{var t=Math.ceil(10*Math.random());e.exports=function(){return++t}},65263:e=>{"use strict";e.exports=Object.assign||function(e,t){for(var n,r,i=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),o=1;o<arguments.length;o++){n=arguments[o],r=Object.keys(Object(n));for(var a=0;a<r.length;a++)i[r[a]]=n[r[a]]}return i}},83570:function(e,t,n){var r,i,o;"undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self&&self,i=[n(50134),n(68963)],r=function(t,n){"use strict";var r,i;function o(){if("function"!==typeof WeakMap)return null;var e=new WeakMap;return o=function(){return e},e}function a(e){if(e&&e.__esModule)return e;if(null===e||"object"!==l(e)&&"function"!==typeof e)return{default:e};var t=o();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var a=r?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(n,i,a):n[i]=e[i]}return n.default=e,t&&t.set(e,n),n}function s(e){return e&&e.__esModule?e:{default:e}}function l(e){return l="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t,n){return t&&u(e.prototype,t),n&&u(e,n),e}function h(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&p(e,t)}function p(e,t){return p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},p(e,t)}function f(e){var t=v();return function(){var n,r=y(e);if(t){var i=y(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return m(this,n)}}function m(e,t){return!t||"object"!==l(t)&&"function"!==typeof t?g(e):t}function g(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function v(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function y(e){return y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},y(e)}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function x(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){w(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}t=s(t),n=a(n);var S={x:"clientWidth",y:"clientHeight"},_={x:"clientTop",y:"clientLeft"},C={x:"innerWidth",y:"innerHeight"},E={x:"offsetWidth",y:"offsetHeight"},T={x:"offsetLeft",y:"offsetTop"},O={x:"overflowX",y:"overflowY"},N={x:"scrollWidth",y:"scrollHeight"},k={x:"scrollLeft",y:"scrollTop"},j={x:"width",y:"height"},I=function(){},P=!!function(){if("undefined"===typeof window)return!1;var e=!1;try{document.createElement("div").addEventListener("test",I,{get passive(){return e=!0,!1}})}catch(t){}return e}()&&{passive:!0},D="ReactList failed to reach a stable state.",A=40,R=function(e,t){for(var n in t)if(e[n]!==t[n])return!1;return!0},M=function(e){for(var t=e.props.axis,n=e.getEl(),r=O[t];n=n.parentElement;)switch(window.getComputedStyle(n)[r]){case"auto":case"scroll":case"overlay":return n}return window},L=function(e){var t=e.props.axis,n=e.scrollParent;return n===window?window[C[t]]:n[S[t]]},F=function(e,t){var n=e.length,r=e.minSize,i=e.type,o=t.from,a=t.size,s=t.itemsPerRow,l=(a=Math.max(a,r))%s;return l&&(a+=s-l),a>n&&(a=n),(l=(o="simple"!==i&&o?Math.max(Math.min(o,n-a),0):0)%s)&&(o-=l,a+=l),o===t.from&&a==t.size?t:x(x({},t),{},{from:o,size:a})};e.exports=(i=r=function(e){h(r,e);var t=f(r);function r(e){var n;return c(this,r),(n=t.call(this,e)).state=F(e,{itemsPerRow:1,from:e.initialIndex,size:0}),n.cache={},n.cachedScrollPosition=null,n.prevPrevState={},n.unstable=!1,n.updateCounter=0,n}return d(r,null,[{key:"getDerivedStateFromProps",value:function(e,t){var n=F(e,t);return n===t?null:n}}]),d(r,[{key:"componentDidMount",value:function(){this.updateFrameAndClearCache=this.updateFrameAndClearCache.bind(this),window.addEventListener("resize",this.updateFrameAndClearCache),this.updateFrame(this.scrollTo.bind(this,this.props.initialIndex))}},{key:"componentDidUpdate",value:function(e){var t=this;if(this.props.axis!==e.axis&&this.clearSizeCache(),!this.unstable){if(++this.updateCounter>A)return this.unstable=!0,console.error(D);this.updateCounterTimeoutId||(this.updateCounterTimeoutId=setTimeout((function(){t.updateCounter=0,delete t.updateCounterTimeoutId}),0)),this.updateFrame()}}},{key:"maybeSetState",value:function(e,t){if(R(this.state,e))return t();this.setState(e,t)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.updateFrameAndClearCache),this.scrollParent.removeEventListener("scroll",this.updateFrameAndClearCache,P),this.scrollParent.removeEventListener("mousewheel",I,P)}},{key:"getOffset",value:function(e){var t=this.props.axis,n=e[_[t]]||0,r=T[t];do{n+=e[r]||0}while(e=e.offsetParent);return n}},{key:"getEl",value:function(){return this.el||this.items}},{key:"getScrollPosition",value:function(){if("number"===typeof this.cachedScrollPosition)return this.cachedScrollPosition;var e=this.scrollParent,t=this.props.axis,n=k[t],r=e===window?document.body[n]||document.documentElement[n]:e[n],i=this.getScrollSize()-this.props.scrollParentViewportSizeGetter(this),o=Math.max(0,Math.min(r,i)),a=this.getEl();return this.cachedScrollPosition=this.getOffset(e)+o-this.getOffset(a),this.cachedScrollPosition}},{key:"setScroll",value:function(e){var t=this.scrollParent,n=this.props.axis;if(e+=this.getOffset(this.getEl()),t===window)return window.scrollTo(0,e);e-=this.getOffset(this.scrollParent),t[k[n]]=e}},{key:"getScrollSize",value:function(){var e=this.scrollParent,t=document,n=t.body,r=t.documentElement,i=N[this.props.axis];return e===window?Math.max(n[i],r[i]):e[i]}},{key:"hasDeterminateSize",value:function(){var e=this.props,t=e.itemSizeGetter;return"uniform"===e.type||t}},{key:"getStartAndEnd",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.threshold,t=this.getScrollPosition(),n=Math.max(0,t-e),r=t+this.props.scrollParentViewportSizeGetter(this)+e;return this.hasDeterminateSize()&&(r=Math.min(r,this.getSpaceBefore(this.props.length))),{start:n,end:r}}},{key:"getItemSizeAndItemsPerRow",value:function(){var e=this.props,t=e.axis,n=e.useStaticSize,r=this.state,i=r.itemSize,o=r.itemsPerRow;if(n&&i&&o)return{itemSize:i,itemsPerRow:o};var a=this.items.children;if(!a.length)return{};var s=a[0],l=s[E[t]],c=Math.abs(l-i);if((isNaN(c)||c>=1)&&(i=l),!i)return{};for(var u=T[t],d=s[u],h=a[o=1];h&&h[u]===d;h=a[o])++o;return{itemSize:i,itemsPerRow:o}}},{key:"clearSizeCache",value:function(){this.cachedScrollPosition=null}},{key:"updateFrameAndClearCache",value:function(e){return this.clearSizeCache(),this.updateFrame(e)}},{key:"updateFrame",value:function(e){switch(this.updateScrollParent(),"function"!=typeof e&&(e=I),this.props.type){case"simple":return this.updateSimpleFrame(e);case"variable":return this.updateVariableFrame(e);case"uniform":return this.updateUniformFrame(e)}}},{key:"updateScrollParent",value:function(){var e=this.scrollParent;this.scrollParent=this.props.scrollParentGetter(this),e!==this.scrollParent&&(e&&(e.removeEventListener("scroll",this.updateFrameAndClearCache),e.removeEventListener("mousewheel",I)),this.clearSizeCache(),this.scrollParent.addEventListener("scroll",this.updateFrameAndClearCache,P),this.scrollParent.addEventListener("mousewheel",I,P))}},{key:"updateSimpleFrame",value:function(e){var t=this.getStartAndEnd().end,n=this.items.children,r=0;if(n.length){var i=this.props.axis,o=n[0],a=n[n.length-1];r=this.getOffset(a)+a[E[i]]-this.getOffset(o)}if(r>t)return e();var s=this.props,l=s.pageSize,c=s.length,u=Math.min(this.state.size+l,c);this.maybeSetState({size:u},e)}},{key:"updateVariableFrame",value:function(e){this.props.itemSizeGetter||this.cacheSizes();for(var t=this.getStartAndEnd(),n=t.start,r=t.end,i=this.props,o=i.length,a=i.pageSize,s=0,l=0,c=0,u=o-1;l<u;){var d=this.getSizeOfItem(l);if(null==d||s+d>n)break;s+=d,++l}for(var h=o-l;c<h&&s<r;){var p=this.getSizeOfItem(l+c);if(null==p){c=Math.min(c+a,h);break}s+=p,++c}this.maybeSetState(F(this.props,{from:l,itemsPerRow:1,size:c}),e)}},{key:"updateUniformFrame",value:function(e){var t=this.getItemSizeAndItemsPerRow(),n=t.itemSize,r=t.itemsPerRow;if(!n||!r)return e();var i=this.getStartAndEnd(),o=i.start,a=i.end,s=F(this.props,{from:Math.floor(o/n)*r,size:(Math.ceil((a-o)/n)+1)*r,itemsPerRow:r}),l=s.from,c=s.size;return this.maybeSetState({itemsPerRow:r,from:l,itemSize:n,size:c},e)}},{key:"getSpaceBefore",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null!=t[e])return t[e];var n=this.state,r=n.itemSize,i=n.itemsPerRow;if(r)return t[e]=Math.floor(e/i)*r;for(var o=e;o>0&&null==t[--o];);for(var a=t[o]||0,s=o;s<e;++s){t[s]=a;var l=this.getSizeOfItem(s);if(null==l)break;a+=l}return t[e]=a}},{key:"cacheSizes",value:function(){for(var e=this.cache,t=this.state.from,n=this.items.children,r=E[this.props.axis],i=0,o=n.length;i<o;++i)e[t+i]=n[i][r]}},{key:"getSizeOfItem",value:function(e){var t=this.cache,n=this.items,r=this.props,i=r.axis,o=r.itemSizeGetter,a=r.itemSizeEstimator,s=r.type,l=this.state,c=l.from,u=l.itemSize,d=l.size;if(u)return u;if(o)return o(e);if(e in t)return t[e];if("simple"===s&&e>=c&&e<c+d&&n){var h=n.children[e-c];if(h)return h[E[i]]}return a?a(e,t):void 0}},{key:"scrollTo",value:function(e){null!=e&&this.setScroll(this.getSpaceBefore(e))}},{key:"scrollAround",value:function(e){var t=this.getScrollPosition(),n=this.getSpaceBefore(e),r=n-this.props.scrollParentViewportSizeGetter(this)+this.getSizeOfItem(e),i=Math.min(r,n),o=Math.max(r,n);return t<=i?this.setScroll(i):t>o?this.setScroll(o):void 0}},{key:"getVisibleRange",value:function(){for(var e,t,n=this.state,r=n.from,i=n.size,o=this.getStartAndEnd(0),a=o.start,s=o.end,l={},c=r;c<r+i;++c){var u=this.getSpaceBefore(c,l),d=u+this.getSizeOfItem(c);null==e&&d>a&&(e=c),null!=e&&u<s&&(t=c)}return[e,t]}},{key:"renderItems",value:function(){for(var e=this,t=this.props,n=t.itemRenderer,r=t.itemsRenderer,i=this.state,o=i.from,a=i.size,s=[],l=0;l<a;++l)s.push(n(o+l,l));return r(s,(function(t){return e.items=t}))}},{key:"render",value:function(){var e=this,t=this.props,r=t.axis,i=t.length,o=t.type,a=t.useTranslate3d,s=this.state,l=s.from,c=s.itemsPerRow,u=this.renderItems();if("simple"===o)return u;var d={position:"relative"},h={},p=Math.ceil(i/c)*c,f=this.getSpaceBefore(p,h);f&&(d[j[r]]=f,"x"===r&&(d.overflowX="hidden"));var m=this.getSpaceBefore(l,h),g="x"===r?m:0,v="y"===r?m:0,y=a?"translate3d(".concat(g,"px, ").concat(v,"px, 0)"):"translate(".concat(g,"px, ").concat(v,"px)"),b={msTransform:y,WebkitTransform:y,transform:y};return n.default.createElement("div",{style:d,ref:function(t){return e.el=t}},n.default.createElement("div",{style:b},u))}}]),r}(n.Component),w(r,"displayName","ReactList"),w(r,"propTypes",{axis:t.default.oneOf(["x","y"]),initialIndex:t.default.number,itemRenderer:t.default.func,itemSizeEstimator:t.default.func,itemSizeGetter:t.default.func,itemsRenderer:t.default.func,length:t.default.number,minSize:t.default.number,pageSize:t.default.number,scrollParentGetter:t.default.func,scrollParentViewportSizeGetter:t.default.func,threshold:t.default.number,type:t.default.oneOf(["simple","variable","uniform"]),useStaticSize:t.default.bool,useTranslate3d:t.default.bool}),w(r,"defaultProps",{axis:"y",itemRenderer:function(e,t){return n.default.createElement("div",{key:t},e)},itemsRenderer:function(e,t){return n.default.createElement("div",{ref:t},e)},length:0,minSize:1,pageSize:10,scrollParentGetter:M,scrollParentViewportSizeGetter:L,threshold:100,type:"simple",useStaticSize:!1,useTranslate3d:!1}),i)},void 0===(o="function"===typeof r?r.apply(t,i):r)||(e.exports=o)},85528:(e,t,n)=>{var r=n(49099);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return s(o(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=h;var i=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,a=0,s="",u=t&&t.delimiter||"/";null!=(n=i.exec(e));){var d=n[0],h=n[1],p=n.index;if(s+=e.slice(a,p),a=p+d.length,h)s+=h[1];else{var f=e[a],m=n[2],g=n[3],v=n[4],y=n[5],b=n[6],x=n[7];s&&(r.push(s),s="");var w=null!=m&&null!=f&&f!==m,S="+"===b||"*"===b,_="?"===b||"*"===b,C=n[2]||u,E=v||y;r.push({name:g||o++,prefix:m||"",delimiter:C,optional:_,repeat:S,partial:w,asterisk:!!x,pattern:E?c(E):x?".*":"[^"+l(C)+"]+?"})}}return a<e.length&&(s+=e.substr(a)),s&&r.push(s),r}function a(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function s(e,t){for(var n=new Array(e.length),i=0;i<e.length;i++)"object"===typeof e[i]&&(n[i]=new RegExp("^(?:"+e[i].pattern+")$",d(t)));return function(t,i){for(var o="",s=t||{},l=(i||{}).pretty?a:encodeURIComponent,c=0;c<e.length;c++){var u=e[c];if("string"!==typeof u){var d,h=s[u.name];if(null==h){if(u.optional){u.partial&&(o+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(r(h)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(h)+"`");if(0===h.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var p=0;p<h.length;p++){if(d=l(h[p]),!n[c].test(d))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?u.prefix:u.delimiter)+d}}else{if(d=u.asterisk?encodeURI(h).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):l(h),!n[c].test(d))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+d+'"');o+=u.prefix+d}}else o+=u}return o}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function c(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function u(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function h(e,t,n){r(t)||(n=t||n,t=[]);for(var i=(n=n||{}).strict,o=!1!==n.end,a="",s=0;s<e.length;s++){var c=e[s];if("string"===typeof c)a+=l(c);else{var h=l(c.prefix),p="(?:"+c.pattern+")";t.push(c),c.repeat&&(p+="(?:"+h+p+")*"),a+=p=c.optional?c.partial?h+"("+p+")?":"(?:"+h+"("+p+"))?":h+"("+p+")"}}var f=l(n.delimiter||"/"),m=a.slice(-f.length)===f;return i||(a=(m?a.slice(0,-f.length):a)+"(?:"+f+"(?=$))?"),a+=o?"$":i&&m?"":"(?="+f+"|$)",u(new RegExp("^"+a,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return u(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],i=0;i<e.length;i++)r.push(p(e[i],t,n).source);return u(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return h(o(e,n),t,n)}(e,t,n)}},20261:(e,t)=>{"use strict";var n="function"===typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,a=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,h=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,f=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,y=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,x=n?Symbol.for("react.scope"):60119;function w(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case o:case s:case a:case p:return e;default:switch(e=e&&e.$$typeof){case c:case h:case g:case m:case l:return e;default:return t}}case i:return t}}}function S(e){return w(e)===d}},99898:(e,t,n)=>{"use strict";n(20261)},62685:(e,t,n)=>{"use strict";n.d(t,{Z:()=>S});var r=n(87462),i=n(63366),o=n(51721);function a(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}var s=n(68963),l=n(38886);const c=!1;var u=n(24330),d=function(e){return e.scrollTop},h="unmounted",p="exited",f="entering",m="entered",g="exiting",v=function(e){function t(t,n){var r;r=e.call(this,t,n)||this;var i,o=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?o?(i=p,r.appearStatus=f):i=m:i=t.unmountOnExit||t.mountOnEnter?h:p,r.state={status:i},r.nextCallback=null,r}(0,o.Z)(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===h?{status:p}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==f&&n!==m&&(t=f):n!==f&&n!==m||(t=g)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!==typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===f){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:l.findDOMNode(this);n&&d(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===p&&this.setState({status:h})},n.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,i=this.props.nodeRef?[r]:[l.findDOMNode(this),r],o=i[0],a=i[1],s=this.getTimeouts(),u=r?s.appear:s.enter;!e&&!n||c?this.safeSetState({status:m},(function(){t.props.onEntered(o)})):(this.props.onEnter(o,a),this.safeSetState({status:f},(function(){t.props.onEntering(o,a),t.onTransitionEnd(u,(function(){t.safeSetState({status:m},(function(){t.props.onEntered(o,a)}))}))})))},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:l.findDOMNode(this);t&&!c?(this.props.onExit(r),this.safeSetState({status:g},(function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,(function(){e.safeSetState({status:p},(function(){e.props.onExited(r)}))}))}))):this.safeSetState({status:p},(function(){e.props.onExited(r)}))},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:l.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],o=i[0],a=i[1];this.props.addEndListener(o,a)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===h)return null;var t=this.props,n=t.children,r=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,(0,i.Z)(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return s.createElement(u.Z.Provider,{value:null},"function"===typeof n?n(e,r):s.cloneElement(s.Children.only(n),r))},t}(s.Component);function y(){}v.contextType=u.Z,v.propTypes={},v.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:y,onEntering:y,onEntered:y,onExit:y,onExiting:y,onExited:y},v.UNMOUNTED=h,v.EXITED=p,v.ENTERING=f,v.ENTERED=m,v.EXITING=g;const b=v;var x=function(e,t){return e&&t&&t.split(" ").forEach((function(t){return r=t,void((n=e).classList?n.classList.remove(r):"string"===typeof n.className?n.className=a(n.className,r):n.setAttribute("class",a(n.className&&n.className.baseVal||"",r)));var n,r}))},w=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).appliedClasses={appear:{},enter:{},exit:{}},t.onEnter=function(e,n){var r=t.resolveArguments(e,n),i=r[0],o=r[1];t.removeClasses(i,"exit"),t.addClass(i,o?"appear":"enter","base"),t.props.onEnter&&t.props.onEnter(e,n)},t.onEntering=function(e,n){var r=t.resolveArguments(e,n),i=r[0],o=r[1]?"appear":"enter";t.addClass(i,o,"active"),t.props.onEntering&&t.props.onEntering(e,n)},t.onEntered=function(e,n){var r=t.resolveArguments(e,n),i=r[0],o=r[1]?"appear":"enter";t.removeClasses(i,o),t.addClass(i,o,"done"),t.props.onEntered&&t.props.onEntered(e,n)},t.onExit=function(e){var n=t.resolveArguments(e)[0];t.removeClasses(n,"appear"),t.removeClasses(n,"enter"),t.addClass(n,"exit","base"),t.props.onExit&&t.props.onExit(e)},t.onExiting=function(e){var n=t.resolveArguments(e)[0];t.addClass(n,"exit","active"),t.props.onExiting&&t.props.onExiting(e)},t.onExited=function(e){var n=t.resolveArguments(e)[0];t.removeClasses(n,"exit"),t.addClass(n,"exit","done"),t.props.onExited&&t.props.onExited(e)},t.resolveArguments=function(e,n){return t.props.nodeRef?[t.props.nodeRef.current,e]:[e,n]},t.getClassNames=function(e){var n=t.props.classNames,r="string"===typeof n,i=r?""+(r&&n?n+"-":"")+e:n[e];return{baseClassName:i,activeClassName:r?i+"-active":n[e+"Active"],doneClassName:r?i+"-done":n[e+"Done"]}},t}(0,o.Z)(t,e);var n=t.prototype;return n.addClass=function(e,t,n){var r=this.getClassNames(t)[n+"ClassName"],i=this.getClassNames("enter").doneClassName;"appear"===t&&"done"===n&&i&&(r+=" "+i),"active"===n&&e&&d(e),r&&(this.appliedClasses[t][n]=r,function(e,t){e&&t&&t.split(" ").forEach((function(t){return r=t,void((n=e).classList?n.classList.add(r):function(e,t){return e.classList?!!t&&e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")}(n,r)||("string"===typeof n.className?n.className=n.className+" "+r:n.setAttribute("class",(n.className&&n.className.baseVal||"")+" "+r)));var n,r}))}(e,r))},n.removeClasses=function(e,t){var n=this.appliedClasses[t],r=n.base,i=n.active,o=n.done;this.appliedClasses[t]={},r&&x(e,r),i&&x(e,i),o&&x(e,o)},n.render=function(){var e=this.props,t=(e.classNames,(0,i.Z)(e,["classNames"]));return s.createElement(b,(0,r.Z)({},t,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},t}(s.Component);w.defaultProps={classNames:""},w.propTypes={};const S=w},24330:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=n(68963).createContext(null)},74518:(e,t,n)=>{"use strict";var r=n(68963),i=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,o={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)a.call(t,r)&&!l.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:i,type:e,key:c,ref:u,props:o,_owner:s.current}}t.jsx=c,t.jsxs=c},61920:(e,t)=>{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),l=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),p=Symbol.iterator;var f={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,g={};function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||f}function y(){}function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||f}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!==typeof e&&"function"!==typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},y.prototype=v.prototype;var x=b.prototype=new y;x.constructor=b,m(x,v.prototype),x.isPureReactComponent=!0;var w=Array.isArray,S=Object.prototype.hasOwnProperty,_={current:null},C={key:!0,ref:!0,__self:!0,__source:!0};function E(e,t,r){var i,o={},a=null,s=null;if(null!=t)for(i in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(a=""+t.key),t)S.call(t,i)&&!C.hasOwnProperty(i)&&(o[i]=t[i]);var l=arguments.length-2;if(1===l)o.children=r;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];o.children=c}if(e&&e.defaultProps)for(i in l=e.defaultProps)void 0===o[i]&&(o[i]=l[i]);return{$$typeof:n,type:e,key:a,ref:s,props:o,_owner:_.current}}function T(e){return"object"===typeof e&&null!==e&&e.$$typeof===n}var O=/\/+/g;function N(e,t){return"object"===typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function k(e,t,i,o,a){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var l=!1;if(null===e)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case n:case r:l=!0}}if(l)return a=a(l=e),e=""===o?"."+N(l,0):o,w(a)?(i="",null!=e&&(i=e.replace(O,"$&/")+"/"),k(a,t,i,"",(function(e){return e}))):null!=a&&(T(a)&&(a=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(a,i+(!a.key||l&&l.key===a.key?"":(""+a.key).replace(O,"$&/")+"/")+e)),t.push(a)),1;if(l=0,o=""===o?".":o+":",w(e))for(var c=0;c<e.length;c++){var u=o+N(s=e[c],c);l+=k(s,t,i,u,a)}else if(u=function(e){return null===e||"object"!==typeof e?null:"function"===typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"===typeof u)for(e=u.call(e),c=0;!(s=e.next()).done;)l+=k(s=s.value,t,i,u=o+N(s,c++),a);else if("object"===s)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return l}function j(e,t,n){if(null==e)return e;var r=[],i=0;return k(e,r,"","",(function(e){return t.call(n,e,i++)})),r}function I(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var P={current:null},D={transition:null},A={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:D,ReactCurrentOwner:_};t.Children={map:j,forEach:function(e,t,n){j(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return j(e,(function(){t++})),t},toArray:function(e){return j(e,(function(e){return e}))||[]},only:function(e){if(!T(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=v,t.Fragment=i,t.Profiler=a,t.PureComponent=b,t.StrictMode=o,t.Suspense=u,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=A,t.cloneElement=function(e,t,r){if(null===e||void 0===e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var i=m({},e.props),o=e.key,a=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(a=t.ref,s=_.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(c in t)S.call(t,c)&&!C.hasOwnProperty(c)&&(i[c]=void 0===t[c]&&void 0!==l?l[c]:t[c])}var c=arguments.length-2;if(1===c)i.children=r;else if(1<c){l=Array(c);for(var u=0;u<c;u++)l[u]=arguments[u+2];i.children=l}return{$$typeof:n,type:e.type,key:o,ref:a,props:i,_owner:s}},t.createContext=function(e){return(e={$$typeof:l,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:s,_context:e},e.Consumer=e},t.createElement=E,t.createFactory=function(e){var t=E.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:c,render:e}},t.isValidElement=T,t.lazy=function(e){return{$$typeof:h,_payload:{_status:-1,_result:e},_init:I}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=D.transition;D.transition={};try{e()}finally{D.transition=t}},t.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.")},t.useCallback=function(e,t){return P.current.useCallback(e,t)},t.useContext=function(e){return P.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return P.current.useDeferredValue(e)},t.useEffect=function(e,t){return P.current.useEffect(e,t)},t.useId=function(){return P.current.useId()},t.useImperativeHandle=function(e,t,n){return P.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return P.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return P.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return P.current.useMemo(e,t)},t.useReducer=function(e,t,n){return P.current.useReducer(e,t,n)},t.useRef=function(e){return P.current.useRef(e)},t.useState=function(e){return P.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return P.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return P.current.useTransition()},t.version="18.2.0"},68963:(e,t,n)=>{"use strict";e.exports=n(61920)},75859:(e,t,n)=>{"use strict";e.exports=n(74518)},94909:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.LOCATION_POP="REDUX-LOCATION-POP-ACTION",t.LOCATION_PUSH="REDUX-LOCATION-PUSH-ACTION",t.OBJECT_KEY_DELIMITER="-"},45715:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};t.createReduxLocationActions=function(e,t,n,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:s.stateToParams;e[o.RLSCONFIG]&&e[o.RLSCONFIG][o.OVERWRITE_ACCESSORS]&&Object.keys(e[o.RLSCONFIG][o.OVERWRITE_ACCESSORS]).forEach((function(t){(0,o.overrideAccessors)(t,e[o.RLSCONFIG][o.OVERWRITE_ACCESSORS][t])}));var u={};return{locationMiddleware:function(t){return function(r){return function(i){var a=t.getState(),s=r(i),l=t.getState(),d=n.location,h=d.pathname!==u.pathname;if(l!==a||h){u=d;var p=c(e,l,d),f=p.shouldPush,m=p.location;(0,o.isEqual)(m,d)||(f&&!h?n.push(m):n.replace(m))}return s}}},reducersWithLocation:function(n,o){var s=function(n,o){var s=o.type,l=o.payload;if(s!==i.LOCATION_POP||!l)return n;var c=r({},l,{query:(0,a.parseQuery)(e,l)});return t(n,c)}(l(n,o),o);return s!==n?s:n}}};var i=n(94909),o=n(58102),a=n(43903),s=n(78103)},58102:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.paramDecoder=t.OVERWRITE_ACCESSORS=t.RLSCONFIG=void 0,t.setParamEncoder=function(e){c=e},t.setParamDecoder=function(e){t.paramDecoder=u=e},t.overrideAccessors=function(e,t){l[e]=t},t.get=function(){return l.get.apply(l,arguments)},t.set=function(){return l.set.apply(l,arguments)},t.isEqual=function(){return l.isEqual.apply(l,arguments)},t.getMatchingDeclaredPath=d,t.createObjectFromConfig=function(e,t){if(!e)return;var n=d(e,t);return e.global?Object.assign({},e.global,e[n]||{}):e[n]},t.getPath=function(){var e=window.location.href,t=e.indexOf("#")+1;if(t&&0===e.substring(t).indexOf("/"))return e.substring(t);return window.location.pathname+window.location.search+window.location.hash},t.createParamsString=function(e){var t=Object.keys(e).reduce((function(t,n){var r=n.toString(),i=e[n];if(function(e){return"undefined"===typeof e||null===e}(i)||Array.isArray(i)&&!i.length)return t;var o=e[n].toString();return[].concat(s(t),[c(r)+"="+c(o)])}),[]);return t.length?"?"+t.join("&"):""},t.parseParams=function(e,t){return e&&e.split("&").reduce((function(e,n){"?"===n[0]&&(n=n.substr(1));var r=t?t(n):n.split("=");return e[u(r[0])]=u(r[1])||"",e}),{})||{}};var r=a(n(63639)),i=a(n(85690)),o=a(n(9447));function a(e){return e&&e.__esModule?e:{default:e}}function s(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}t.RLSCONFIG="RLSCONFIG",t.OVERWRITE_ACCESSORS="overwrite-accessors";var l={get:r.default,set:o.default,isEqual:i.default},c=encodeURIComponent,u=t.paramDecoder=decodeURIComponent;function d(e,t){var n=t.pathname.split("/");return Object.keys(e).filter((function(e){var t=[].concat(s(n)),r=e.split("/"),i=[].concat(s(r)),o=0;return r.forEach((function(e,n){"*"===e&&(t.splice(n-o,1),i.splice(n-o,1),o++)})),t.join("/")===i.join("/")}))[0]}},91087:(e,t,n)=>{"use strict";var r=n(45715);Object.defineProperty(t,"zl",{enumerable:!0,get:function(){return r.createReduxLocationActions}});var i=n(28931);Object.defineProperty(t,"C1",{enumerable:!0,get:function(){return i.listenForHistoryChange}});var o=n(58102)},28931:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.listenForHistoryChange=function(e,t){var n=function(e){return{type:r.LOCATION_POP,payload:e}};t.listen((function(){t&&t.action&&"POP"===t.action&&e.dispatch(n(t.location))})),t.listen((function(){t&&t.action&&"PUSH"===t.action&&e.dispatch(function(e){return{type:r.LOCATION_PUSH,payload:e}}(t.location))})),e.dispatch(n(t.location))};var r=n(94909)},43903:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseQuery=function(e,t){var n=(0,r.createObjectFromConfig)(e,t),o=e[r.RLSCONFIG]&&e[r.RLSCONFIG].queryParser,a=(0,r.parseParams)(t.search,o);if(!n)return t.search;return Object.keys(n).reduce((function(e,t){var o=n[t],s=o.stateKey,l=o.options,c=void 0===l?{}:l,u=o.initialState,d=o.type,h=a[t],p=void 0;return"undefined"===typeof h||null===h?((0,r.set)(e,s,u),e):(p=c.parse?c.parse(h):d?i.typeHandles[d].parse(h,c):h,(0,r.set)(e,s,p),e)}),{})};var r=n(58102),i=n(88639)},78103:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};t.stateToParams=function(e,t,n){var s=(0,o.createObjectFromConfig)(e,n),l=e[o.RLSCONFIG]&&e[o.RLSCONFIG].queryParser,c=(0,o.parseParams)(n.search,l);if(!s)return{location:i({},n)};var u=!1,d=Object.keys(s).reduce((function(e,n){var i=s[n],l=i.stateKey,d=i.options,h=void 0===d?{}:d,p=i.initialState,f=i.type,m=(0,o.get)(t,l),g=void 0;if("date"===f?g=m.toISOString().substring(0,10)===(p&&p.toISOString().substring(0,10)):(m&&"object"===("undefined"===typeof m?"undefined":r(m))&&!Object.keys(m).length&&(m=void 0),g="object"===("undefined"===typeof m?"undefined":r(m))?(0,o.isEqual)(p,m):m===p),("undefined"===typeof m&&!h.serialize||g)&&!h.setAsEmptyItem)return e;if(h.serialize){var v=h.serialize(m);if("undefined"===typeof v)return e;m=v}else f&&(m=a.typeHandles[f].serialize(m,h));return e[n]=m,m!==c[n]&&h.shouldPush&&(u=!0),e}),{});return{location:i({},n,{search:(0,o.createParamsString)(d)}),shouldPush:u}};var o=n(58102),a=n(88639)},88639:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.typeHandles=void 0;var r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(l){i=!0,o=l}finally{try{!r&&s.return&&s.return()}finally{if(i)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},i=n(94909),o=n(58102);function a(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}t.typeHandles={number:{serialize:function(e,t){return e.toString()},parse:function(e,t){return parseFloat(e)}},date:{serialize:function(e,t){return e.toISOString().substring(0,10)},parse:function(e,t){return new Date(e)}},array:{serialize:function(e,t){return(t.keepOrder?[].concat(a(e)):[].concat(a(e)).sort()).join(t.delimiter||i.OBJECT_KEY_DELIMITER)},parse:function(e,t){return(0,o.paramDecoder)(e).split(t.delimiter||i.OBJECT_KEY_DELIMITER)}},bool:{serialize:function(e,t){return e.toString()},parse:function(e,t){return"true"===e}},object:{serialize:function(e,t){return t.isFlags?Object.keys(e).filter((function(t,n){return e[t]})).join(i.OBJECT_KEY_DELIMITER):Object.keys(e).sort().map((function(t,n){return""+t+i.OBJECT_KEY_DELIMITER+e[t]}))},parse:function(e,t){return t.isFlags?e.split(t.delimiter||i.OBJECT_KEY_DELIMITER).reduce((function(e,t){return""===t||(e[t]=!0),e}),{}):(0,o.paramDecoder)(e).split(",").reduce((function(e,t){var n=t.split(i.OBJECT_KEY_DELIMITER),o=r(n,2),a=o[0],s=o[1];return e[a]=s,e}),{})}}}},34812:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,i=e[r];if(!(0<o(i,t)))break e;e[r]=t,e[n]=i,n=r}}function r(e){return 0===e.length?null:e[0]}function i(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,i=e.length,a=i>>>1;r<a;){var s=2*(r+1)-1,l=e[s],c=s+1,u=e[c];if(0>o(l,n))c<i&&0>o(u,l)?(e[r]=u,e[c]=n,r=c):(e[r]=l,e[s]=n,r=s);else{if(!(c<i&&0>o(u,n)))break e;e[r]=u,e[c]=n,r=c}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"===typeof performance&&"function"===typeof performance.now){var a=performance;t.unstable_now=function(){return a.now()}}else{var s=Date,l=s.now();t.unstable_now=function(){return s.now()-l}}var c=[],u=[],d=1,h=null,p=3,f=!1,m=!1,g=!1,v="function"===typeof setTimeout?setTimeout:null,y="function"===typeof clearTimeout?clearTimeout:null,b="undefined"!==typeof setImmediate?setImmediate:null;function x(e){for(var t=r(u);null!==t;){if(null===t.callback)i(u);else{if(!(t.startTime<=e))break;i(u),t.sortIndex=t.expirationTime,n(c,t)}t=r(u)}}function w(e){if(g=!1,x(e),!m)if(null!==r(c))m=!0,D(S);else{var t=r(u);null!==t&&A(w,t.startTime-e)}}function S(e,n){m=!1,g&&(g=!1,y(T),T=-1),f=!0;var o=p;try{for(x(n),h=r(c);null!==h&&(!(h.expirationTime>n)||e&&!k());){var a=h.callback;if("function"===typeof a){h.callback=null,p=h.priorityLevel;var s=a(h.expirationTime<=n);n=t.unstable_now(),"function"===typeof s?h.callback=s:h===r(c)&&i(c),x(n)}else i(c);h=r(c)}if(null!==h)var l=!0;else{var d=r(u);null!==d&&A(w,d.startTime-n),l=!1}return l}finally{h=null,p=o,f=!1}}"undefined"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var _,C=!1,E=null,T=-1,O=5,N=-1;function k(){return!(t.unstable_now()-N<O)}function j(){if(null!==E){var e=t.unstable_now();N=e;var n=!0;try{n=E(!0,e)}finally{n?_():(C=!1,E=null)}}else C=!1}if("function"===typeof b)_=function(){b(j)};else if("undefined"!==typeof MessageChannel){var I=new MessageChannel,P=I.port2;I.port1.onmessage=j,_=function(){P.postMessage(null)}}else _=function(){v(j,0)};function D(e){E=e,C||(C=!0,_())}function A(e,n){T=v((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){m||f||(m=!0,D(S))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):O=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return p},t.unstable_getFirstCallbackNode=function(){return r(c)},t.unstable_next=function(e){switch(p){case 1:case 2:case 3:var t=3;break;default:t=p}var n=p;p=t;try{return e()}finally{p=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=p;p=e;try{return t()}finally{p=n}},t.unstable_scheduleCallback=function(e,i,o){var a=t.unstable_now();switch("object"===typeof o&&null!==o?o="number"===typeof(o=o.delay)&&0<o?a+o:a:o=a,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:d++,callback:i,priorityLevel:e,startTime:o,expirationTime:s=o+s,sortIndex:-1},o>a?(e.sortIndex=o,n(u,e),null===r(c)&&e===r(u)&&(g?(y(T),T=-1):g=!0,A(w,o-a))):(e.sortIndex=s,n(c,e),m||f||(m=!0,D(S))),e},t.unstable_shouldYield=k,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},29558:(e,t,n)=>{"use strict";e.exports=n(34812)},18083:(e,t,n)=>{"use strict";var r=n(42780),i=n(10854),o=n(43597)(),a=n(81687),s=n(84968),l=r("%Math.floor%");e.exports=function(e,t){if("function"!==typeof e)throw new s("`fn` is not a function");if("number"!==typeof t||t<0||t>4294967295||l(t)!==t)throw new s("`length` must be a positive 32-bit integer");var n=arguments.length>2&&!!arguments[2],r=!0,c=!0;if("length"in e&&a){var u=a(e,"length");u&&!u.configurable&&(r=!1),u&&!u.writable&&(c=!1)}return(r||c||!n)&&(o?i(e,"length",t,!0,!0):i(e,"length",t)),e}},69612:e=>{e.exports=function(e,t,n,r){var i=n?n.call(r,e,t):void 0;if(void 0!==i)return!!i;if(e===t)return!0;if("object"!==typeof e||!e||"object"!==typeof t||!t)return!1;var o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),l=0;l<o.length;l++){var c=o[l];if(!s(c))return!1;var u=e[c],d=t[c];if(!1===(i=n?n.call(r,u,d,c):void 0)||void 0===i&&u!==d)return!1}return!0}},50810:(e,t,n)=>{"use strict";var r=n(42780),i=n(69039),o=n(68798),a=n(84968),s=r("%WeakMap%",!0),l=r("%Map%",!0),c=i("WeakMap.prototype.get",!0),u=i("WeakMap.prototype.set",!0),d=i("WeakMap.prototype.has",!0),h=i("Map.prototype.get",!0),p=i("Map.prototype.set",!0),f=i("Map.prototype.has",!0),m=function(e,t){for(var n,r=e;null!==(n=r.next);r=n)if(n.key===t)return r.next=n.next,n.next=e.next,e.next=n,n};e.exports=function(){var e,t,n,r={assert:function(e){if(!r.has(e))throw new a("Side channel does not contain "+o(e))},get:function(r){if(s&&r&&("object"===typeof r||"function"===typeof r)){if(e)return c(e,r)}else if(l){if(t)return h(t,r)}else if(n)return function(e,t){var n=m(e,t);return n&&n.value}(n,r)},has:function(r){if(s&&r&&("object"===typeof r||"function"===typeof r)){if(e)return d(e,r)}else if(l){if(t)return f(t,r)}else if(n)return function(e,t){return!!m(e,t)}(n,r);return!1},set:function(r,i){s&&r&&("object"===typeof r||"function"===typeof r)?(e||(e=new s),u(e,r,i)):l?(t||(t=new l),p(t,r,i)):(n||(n={key:{},next:null}),function(e,t,n){var r=m(e,t);r?r.value=n:e.next={key:t,next:e.next,value:n}}(n,r,i))}};return r}},35731:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,i="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(i);var n="function"===typeof t?t():t;throw new Error(n?i+": "+n:i)}}},21034:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r<e.rangeCount;r++)n.push(e.getRangeAt(r));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((function(t){e.addRange(t)})),t&&t.focus()}}},46392:function(e,t,n){var r;e=n.nmd(e),function(i){t&&t.nodeType,e&&e.nodeType;var o="object"==typeof n.g&&n.g;o.global!==o&&o.window!==o&&o.self;var a,s=2147483647,l=36,c=1,u=26,d=38,h=700,p=72,f=128,m="-",g=/^xn--/,v=/[^\x20-\x7E]/,y=/[\x2E\u3002\uFF0E\uFF61]/g,b={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},x=l-c,w=Math.floor,S=String.fromCharCode;function _(e){throw new RangeError(b[e])}function C(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function E(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+C((e=e.replace(y,".")).split("."),t).join(".")}function T(e){for(var t,n,r=[],i=0,o=e.length;i<o;)(t=e.charCodeAt(i++))>=55296&&t<=56319&&i<o?56320==(64512&(n=e.charCodeAt(i++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),i--):r.push(t);return r}function O(e){return C(e,(function(e){var t="";return e>65535&&(t+=S((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=S(e)})).join("")}function N(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function k(e,t,n){var r=0;for(e=n?w(e/h):e>>1,e+=w(e/t);e>x*u>>1;r+=l)e=w(e/x);return w(r+(x+1)*e/(e+d))}function j(e){var t,n,r,i,o,a,d,h,g,v,y,b=[],x=e.length,S=0,C=f,E=p;for((n=e.lastIndexOf(m))<0&&(n=0),r=0;r<n;++r)e.charCodeAt(r)>=128&&_("not-basic"),b.push(e.charCodeAt(r));for(i=n>0?n+1:0;i<x;){for(o=S,a=1,d=l;i>=x&&_("invalid-input"),((h=(y=e.charCodeAt(i++))-48<10?y-22:y-65<26?y-65:y-97<26?y-97:l)>=l||h>w((s-S)/a))&&_("overflow"),S+=h*a,!(h<(g=d<=E?c:d>=E+u?u:d-E));d+=l)a>w(s/(v=l-g))&&_("overflow"),a*=v;E=k(S-o,t=b.length+1,0==o),w(S/t)>s-C&&_("overflow"),C+=w(S/t),S%=t,b.splice(S++,0,C)}return O(b)}function I(e){var t,n,r,i,o,a,d,h,g,v,y,b,x,C,E,O=[];for(b=(e=T(e)).length,t=f,n=0,o=p,a=0;a<b;++a)(y=e[a])<128&&O.push(S(y));for(r=i=O.length,i&&O.push(m);r<b;){for(d=s,a=0;a<b;++a)(y=e[a])>=t&&y<d&&(d=y);for(d-t>w((s-n)/(x=r+1))&&_("overflow"),n+=(d-t)*x,t=d,a=0;a<b;++a)if((y=e[a])<t&&++n>s&&_("overflow"),y==t){for(h=n,g=l;!(h<(v=g<=o?c:g>=o+u?u:g-o));g+=l)E=h-v,C=l-v,O.push(S(N(v+E%C,0))),h=w(E/C);O.push(S(N(h,0))),o=k(n,x,r==i),n=0,++r}++n,++t}return O.join("")}a={version:"1.4.1",ucs2:{decode:T,encode:O},decode:j,encode:I,toASCII:function(e){return E(e,(function(e){return v.test(e)?"xn--"+I(e):e}))},toUnicode:function(e){return E(e,(function(e){return g.test(e)?j(e.slice(4).toLowerCase()):e}))}},void 0===(r=function(){return a}.call(t,n,t,e))||(e.exports=r)}()},92820:(e,t,n)=>{"use strict";var r=n(46392);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var o=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,s=/^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/,l=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(l),u=["%","/","?",";","#"].concat(c),d=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},m={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=n(63041);function y(e,t,n){if(e&&"object"===typeof e&&e instanceof i)return e;var r=new i;return r.parse(e,t,n),r}i.prototype.parse=function(e,t,n){if("string"!==typeof e)throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var i=e.indexOf("?"),a=-1!==i&&i<e.indexOf("#")?"?":"#",l=e.split(a);l[0]=l[0].replace(/\\/g,"/");var y=e=l.join(a);if(y=y.trim(),!n&&1===e.split("#").length){var b=s.exec(y);if(b)return this.path=y,this.href=y,this.pathname=b[1],b[2]?(this.search=b[2],this.query=t?v.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var x=o.exec(y);if(x){var w=(x=x[0]).toLowerCase();this.protocol=w,y=y.substr(x.length)}if(n||x||y.match(/^\/\/[^@/]+@[^@/]+/)){var S="//"===y.substr(0,2);!S||x&&m[x]||(y=y.substr(2),this.slashes=!0)}if(!m[x]&&(S||x&&!g[x])){for(var _,C,E=-1,T=0;T<d.length;T++){-1!==(O=y.indexOf(d[T]))&&(-1===E||O<E)&&(E=O)}-1!==(C=-1===E?y.lastIndexOf("@"):y.lastIndexOf("@",E))&&(_=y.slice(0,C),y=y.slice(C+1),this.auth=decodeURIComponent(_)),E=-1;for(T=0;T<u.length;T++){var O;-1!==(O=y.indexOf(u[T]))&&(-1===E||O<E)&&(E=O)}-1===E&&(E=y.length),this.host=y.slice(0,E),y=y.slice(E),this.parseHost(),this.hostname=this.hostname||"";var N="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!N)for(var k=this.hostname.split(/\./),j=(T=0,k.length);T<j;T++){var I=k[T];if(I&&!I.match(h)){for(var P="",D=0,A=I.length;D<A;D++)I.charCodeAt(D)>127?P+="x":P+=I[D];if(!P.match(h)){var R=k.slice(0,T),M=k.slice(T+1),L=I.match(p);L&&(R.push(L[1]),M.unshift(L[2])),M.length&&(y="/"+M.join(".")+y),this.hostname=R.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),N||(this.hostname=r.toASCII(this.hostname));var F=this.port?":"+this.port:"",z=this.hostname||"";this.host=z+F,this.href+=this.host,N&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==y[0]&&(y="/"+y))}if(!f[w])for(T=0,j=c.length;T<j;T++){var B=c[T];if(-1!==y.indexOf(B)){var U=encodeURIComponent(B);U===B&&(U=escape(B)),y=y.split(B).join(U)}}var H=y.indexOf("#");-1!==H&&(this.hash=y.substr(H),y=y.slice(0,H));var V=y.indexOf("?");if(-1!==V?(this.search=y.substr(V),this.query=y.substr(V+1),t&&(this.query=v.parse(this.query)),y=y.slice(0,V)):t&&(this.search="",this.query={}),y&&(this.pathname=y),g[w]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){F=this.pathname||"";var G=this.search||"";this.path=F+G}return this.href=this.format(),this},i.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",i=!1,o="";this.host?i=e+this.host:this.hostname&&(i=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&"object"===typeof this.query&&Object.keys(this.query).length&&(o=v.stringify(this.query,{arrayFormat:"repeat",addQueryPrefix:!1}));var a=this.search||o&&"?"+o||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||g[t])&&!1!==i?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),r&&"#"!==r.charAt(0)&&(r="#"+r),a&&"?"!==a.charAt(0)&&(a="?"+a),t+i+(n=n.replace(/[?#]/g,(function(e){return encodeURIComponent(e)})))+(a=a.replace("#","%23"))+r},i.prototype.resolve=function(e){return this.resolveObject(y(e,!1,!0)).format()},i.prototype.resolveObject=function(e){if("string"===typeof e){var t=new i;t.parse(e,!1,!0),e=t}for(var n=new i,r=Object.keys(this),o=0;o<r.length;o++){var a=r[o];n[a]=this[a]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var s=Object.keys(e),l=0;l<s.length;l++){var c=s[l];"protocol"!==c&&(n[c]=e[c])}return g[n.protocol]&&n.hostname&&!n.pathname&&(n.pathname="/",n.path=n.pathname),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!g[e.protocol]){for(var u=Object.keys(e),d=0;d<u.length;d++){var h=u[d];n[h]=e[h]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||m[e.protocol])n.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==p[0]&&p.unshift(""),p.length<2&&p.unshift(""),n.pathname=p.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var f=n.pathname||"",v=n.search||"";n.path=f+v}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var y=n.pathname&&"/"===n.pathname.charAt(0),b=e.host||e.pathname&&"/"===e.pathname.charAt(0),x=b||y||n.host&&e.pathname,w=x,S=n.pathname&&n.pathname.split("/")||[],_=(p=e.pathname&&e.pathname.split("/")||[],n.protocol&&!g[n.protocol]);if(_&&(n.hostname="",n.port=null,n.host&&(""===S[0]?S[0]=n.host:S.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===p[0]?p[0]=e.host:p.unshift(e.host)),e.host=null),x=x&&(""===p[0]||""===S[0])),b)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,S=p;else if(p.length)S||(S=[]),S.pop(),S=S.concat(p),n.search=e.search,n.query=e.query;else if(null!=e.search){if(_)n.host=S.shift(),n.hostname=n.host,(N=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=N.shift(),n.hostname=N.shift(),n.host=n.hostname);return n.search=e.search,n.query=e.query,null===n.pathname&&null===n.search||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!S.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var C=S.slice(-1)[0],E=(n.host||e.host||S.length>1)&&("."===C||".."===C)||""===C,T=0,O=S.length;O>=0;O--)"."===(C=S[O])?S.splice(O,1):".."===C?(S.splice(O,1),T++):T&&(S.splice(O,1),T--);if(!x&&!w)for(;T--;T)S.unshift("..");!x||""===S[0]||S[0]&&"/"===S[0].charAt(0)||S.unshift(""),E&&"/"!==S.join("/").substr(-1)&&S.push("");var N,k=""===S[0]||S[0]&&"/"===S[0].charAt(0);_&&(n.hostname=k?"":S.length?S.shift():"",n.host=n.hostname,(N=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=N.shift(),n.hostname=N.shift(),n.host=n.hostname));return(x=x||n.host&&S.length)&&!k&&S.unshift(""),S.length>0?n.pathname=S.join("/"):(n.pathname=null,n.path=null),null===n.pathname&&null===n.search||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var e=this.host,t=a.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},t.parse=y,t.resolve=function(e,t){return y(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?y(e,!1,!0).resolveObject(t):t},t.format=function(e){return"string"===typeof e&&(e=y(e)),e instanceof i?e.format():i.prototype.format.call(e)},t.Url=i},28127:(e,t,n)=>{"use strict";var r=n(68963);var i="function"===typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e===1/t)||e!==e&&t!==t},o=r.useSyncExternalStore,a=r.useRef,s=r.useEffect,l=r.useMemo,c=r.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,n,r,u){var d=a(null);if(null===d.current){var h={hasValue:!1,value:null};d.current=h}else h=d.current;d=l((function(){function e(e){if(!s){if(s=!0,o=e,e=r(e),void 0!==u&&h.hasValue){var t=h.value;if(u(t,e))return a=t}return a=e}if(t=a,i(o,e))return t;var n=r(e);return void 0!==u&&u(t,n)?t:(o=e,a=n)}var o,a,s=!1,l=void 0===n?null:n;return[function(){return e(t())},null===l?void 0:function(){return e(l())}]}),[t,n,r,u]);var p=o(e,d[0],d[1]);return s((function(){h.hasValue=!0,h.value=p}),[p]),c(p),p}},29074:(e,t,n)=>{"use strict";e.exports=n(28127)},24960:()=>{},26759:()=>{},56272:()=>{},24654:()=>{},97326:(e,t,n)=>{"use strict";function r(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}n.d(t,{Z:()=>r})},64572:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function i(e){var t=function(e,t){if("object"!=r(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==r(t)?t:String(t)}function o(e,t,n){return(t=i(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,{Z:()=>o})},87462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},51721:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function i(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>i})},63366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}n.d(t,{Z:()=>r})},17095:(e,t,n)=>{"use strict";n.d(t,{CN:()=>j,Tk:()=>M,hF:()=>K,oZ:()=>s});var r=n(38907),i=n(1399),o=n(89900),a=n(36313),s=(e=>(e.uninitialized="uninitialized",e.pending="pending",e.fulfilled="fulfilled",e.rejected="rejected",e))(s||{});var l=e=>[].concat(...e);var c=r.PO;function u(e,t){if(e===t||!(c(e)&&c(t)||Array.isArray(e)&&Array.isArray(t)))return t;const n=Object.keys(t),r=Object.keys(e);let i=n.length===r.length;const o=Array.isArray(t)?[]:{};for(const a of n)o[a]=u(e[a],t[a]),i&&(i=e[a]===o[a]);return i?e:o}var d=class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;this.value=e,this.meta=t}};var h=(0,i.PH)("__rtkq/focused"),p=(0,i.PH)("__rtkq/unfocused"),f=(0,i.PH)("__rtkq/online"),m=(0,i.PH)("__rtkq/offline");function g(e){return"query"===e.type}function v(e,t,n,r,i,o){return"function"===typeof e?e(t,n,r,i).map(y).map(o):Array.isArray(e)?e.map(y).map(o):[]}function y(e){return"string"===typeof e?{type:e}:e}function b(e){return null!=e}function x(e){let t=0;for(const n in e)t++;return t}var w=Symbol("forceQueryFn"),S=e=>"function"===typeof e[w];function _(e){return e}function C(e,t,n,r){return v(n[e.meta.arg.endpointName][t],(0,i.KD)(e)?e.payload:void 0,(0,i.h_)(e)?e.payload:void 0,e.meta.arg.originalArgs,"baseQueryMeta"in e.meta?e.meta.baseQueryMeta:void 0,r)}function E(e,t,n){const r=e[t];r&&n(r)}function T(e){var t;return null!==(t="arg"in e?e.arg.fixedCacheKey:e.fixedCacheKey)&&void 0!==t?t:e.requestId}function O(e,t,n){const r=e[T(t)];r&&n(r)}var N={};function k(e){let{reducerPath:t,queryThunk:n,mutationThunk:a,context:{endpointDefinitions:s,apiUid:l,extractRehydrationInfo:c,hasRehydrationInfo:d},assertTagType:g,config:v}=e;const y=(0,i.PH)("".concat(t,"/resetApiState")),b=(0,i.oM)({name:"".concat(t,"/queries"),initialState:N,reducers:{removeQueryResult:{reducer(e,t){let{payload:{queryCacheKey:n}}=t;delete e[n]},prepare:(0,i.cw)()},queryResultPatched:{reducer(e,t){let{payload:{queryCacheKey:n,patches:r}}=t;E(e,n,(e=>{e.data=(0,o.QE)(e.data,r.concat())}))},prepare:(0,i.cw)()}},extraReducers(e){e.addCase(n.pending,((e,t)=>{var n,r;let{meta:i,meta:{arg:o}}=t;const a=S(o);null!==(r=e[n=o.queryCacheKey])&&void 0!==r||(e[n]={status:"uninitialized",endpointName:o.endpointName}),E(e,o.queryCacheKey,(e=>{e.status="pending",e.requestId=a&&e.requestId?e.requestId:i.requestId,void 0!==o.originalArgs&&(e.originalArgs=o.originalArgs),e.startedTimeStamp=i.startedTimeStamp}))})).addCase(n.fulfilled,((e,t)=>{let{meta:n,payload:r}=t;E(e,n.arg.queryCacheKey,(e=>{if(e.requestId!==n.requestId&&!S(n.arg))return;const{merge:t}=s[n.arg.endpointName];var i;if(e.status="fulfilled",t)if(void 0!==e.data){const{fulfilledTimeStamp:i,arg:a,baseQueryMeta:s,requestId:l}=n;let c=(0,o.Uy)(e.data,(e=>t(e,r,{arg:a.originalArgs,baseQueryMeta:s,fulfilledTimeStamp:i,requestId:l})));e.data=c}else e.data=r;else e.data=null===(i=s[n.arg.endpointName].structuralSharing)||void 0===i||i?u((0,o.mv)(e.data)?(0,o.Js)(e.data):e.data,r):r;delete e.error,e.fulfilledTimeStamp=n.fulfilledTimeStamp}))})).addCase(n.rejected,((e,t)=>{let{meta:{condition:n,arg:r,requestId:i},error:o,payload:a}=t;E(e,r.queryCacheKey,(e=>{if(n);else{if(e.requestId!==i)return;e.status="rejected",e.error=null!==a&&void 0!==a?a:o}}))})).addMatcher(d,((e,t)=>{const{queries:n}=c(t);for(const[r,i]of Object.entries(n))"fulfilled"!==(null===i||void 0===i?void 0:i.status)&&"rejected"!==(null===i||void 0===i?void 0:i.status)||(e[r]=i)}))}}),x=(0,i.oM)({name:"".concat(t,"/mutations"),initialState:N,reducers:{removeMutationResult:{reducer(e,t){let{payload:n}=t;const r=T(n);r in e&&delete e[r]},prepare:(0,i.cw)()}},extraReducers(e){e.addCase(a.pending,((e,t)=>{let{meta:n,meta:{requestId:r,arg:i,startedTimeStamp:o}}=t;i.track&&(e[T(n)]={requestId:r,status:"pending",endpointName:i.endpointName,startedTimeStamp:o})})).addCase(a.fulfilled,((e,t)=>{let{payload:n,meta:r}=t;r.arg.track&&O(e,r,(e=>{e.requestId===r.requestId&&(e.status="fulfilled",e.data=n,e.fulfilledTimeStamp=r.fulfilledTimeStamp)}))})).addCase(a.rejected,((e,t)=>{let{payload:n,error:r,meta:i}=t;i.arg.track&&O(e,i,(e=>{e.requestId===i.requestId&&(e.status="rejected",e.error=null!==n&&void 0!==n?n:r)}))})).addMatcher(d,((e,t)=>{const{mutations:n}=c(t);for(const[r,i]of Object.entries(n))"fulfilled"!==(null===i||void 0===i?void 0:i.status)&&"rejected"!==(null===i||void 0===i?void 0:i.status)||r===(null===i||void 0===i?void 0:i.requestId)||(e[r]=i)}))}}),w=(0,i.oM)({name:"".concat(t,"/invalidation"),initialState:N,reducers:{updateProvidedBy:{reducer(e,t){const{queryCacheKey:n,providedTags:r}=t.payload;for(const l of Object.values(e))for(const e of Object.values(l)){const t=e.indexOf(n);-1!==t&&e.splice(t,1)}for(const{type:l,id:c}of r){var i,o,a,s;const t=null!==(a=(i=null!==(s=e[l])&&void 0!==s?s:e[l]={})[o=c||"__internal_without_id"])&&void 0!==a?a:i[o]=[];t.includes(n)||t.push(n)}},prepare:(0,i.cw)()}},extraReducers(e){e.addCase(b.actions.removeQueryResult,((e,t)=>{let{payload:{queryCacheKey:n}}=t;for(const r of Object.values(e))for(const e of Object.values(r)){const t=e.indexOf(n);-1!==t&&e.splice(t,1)}})).addMatcher(d,((e,t)=>{const{provided:n}=c(t);for(const[s,l]of Object.entries(n))for(const[t,n]of Object.entries(l)){var r,i,o,a;const l=null!==(o=(r=null!==(a=e[s])&&void 0!==a?a:e[s]={})[i=t||"__internal_without_id"])&&void 0!==o?o:r[i]=[];for(const e of n){l.includes(e)||l.push(e)}}})).addMatcher((0,i.Q)((0,i.KD)(n),(0,i.h_)(n)),((e,t)=>{const n=C(t,"providesTags",s,g),{queryCacheKey:r}=t.meta.arg;w.caseReducers.updateProvidedBy(e,w.actions.updateProvidedBy({queryCacheKey:r,providedTags:n}))}))}}),_=(0,i.oM)({name:"".concat(t,"/subscriptions"),initialState:N,reducers:{updateSubscriptionOptions(e,t){},unsubscribeQueryResult(e,t){},internal_getRTKQSubscriptions(){}}}),k=(0,i.oM)({name:"".concat(t,"/internalSubscriptions"),initialState:N,reducers:{subscriptionsUpdated:{reducer:(e,t)=>(0,o.QE)(e,t.payload),prepare:(0,i.cw)()}}}),j=(0,i.oM)({name:"".concat(t,"/config"),initialState:{online:"undefined"===typeof navigator||void 0===navigator.onLine||navigator.onLine,focused:"undefined"===typeof document||"hidden"!==document.visibilityState,middlewareRegistered:!1,...v},reducers:{middlewareRegistered(e,t){let{payload:n}=t;e.middlewareRegistered="conflict"!==e.middlewareRegistered&&l===n||"conflict"}},extraReducers:e=>{e.addCase(f,(e=>{e.online=!0})).addCase(m,(e=>{e.online=!1})).addCase(h,(e=>{e.focused=!0})).addCase(p,(e=>{e.focused=!1})).addMatcher(d,(e=>({...e})))}}),I=(0,r.UY)({queries:b.reducer,mutations:x.reducer,provided:w.reducer,subscriptions:k.reducer,config:j.reducer});return{reducer:(e,t)=>I(y.match(t)?void 0:e,t),actions:{...j.actions,...b.actions,..._.actions,...k.actions,...x.actions,...w.actions,resetApiState:y}}}var j=Symbol.for("RTKQ/skipToken"),I={status:"uninitialized"},P=(0,o.Uy)(I,(()=>{})),D=(0,o.Uy)(I,(()=>{}));var A=WeakMap?new WeakMap:void 0,R=e=>{let{endpointName:t,queryArgs:n}=e,i="";const o=null===A||void 0===A?void 0:A.get(n);if("string"===typeof o)i=o;else{const e=JSON.stringify(n,((e,t)=>(0,r.PO)(t)?Object.keys(t).sort().reduce(((e,n)=>(e[n]=t[n],e)),{}):t));(0,r.PO)(n)&&(null===A||void 0===A||A.set(n,e)),i=e}return"".concat(t,"(").concat(i,")")};function M(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){const n=(0,a.kO)((t=>{var n,r;return null===(n=e.extractRehydrationInfo)||void 0===n?void 0:n.call(e,t,{reducerPath:null!==(r=e.reducerPath)&&void 0!==r?r:"api"})})),r={reducerPath:"api",keepUnusedDataFor:60,refetchOnMountOrArgChange:!1,refetchOnFocus:!1,refetchOnReconnect:!1,invalidationBehavior:"delayed",...e,extractRehydrationInfo:n,serializeQueryArgs(t){let n=R;if("serializeQueryArgs"in t.endpointDefinition){const e=t.endpointDefinition.serializeQueryArgs;n=t=>{const n=e(t);return"string"===typeof n?n:R({...t,queryArgs:n})}}else e.serializeQueryArgs&&(n=e.serializeQueryArgs);return n(t)},tagTypes:[...e.tagTypes||[]]},o={endpointDefinitions:{},batch(e){e()},apiUid:(0,i.x0)(),extractRehydrationInfo:n,hasRehydrationInfo:(0,a.kO)((e=>null!=n(e)))},s={injectEndpoints:function(e){const t=e.endpoints({query:e=>({...e,type:"query"}),mutation:e=>({...e,type:"mutation"})});for(const[n,r]of Object.entries(t))if(!0!==e.overrideExisting&&n in o.endpointDefinitions){if("throw"===e.overrideExisting)throw new Error((0,i.rJ)(39))}else{o.endpointDefinitions[n]=r;for(const e of l)e.injectEndpoint(n,r)}return s},enhanceEndpoints(e){let{addTagTypes:t,endpoints:n}=e;if(t)for(const i of t)r.tagTypes.includes(i)||r.tagTypes.push(i);if(n)for(const[r,i]of Object.entries(n))"function"===typeof i?i(o.endpointDefinitions[r]):Object.assign(o.endpointDefinitions[r]||{},i);return s}},l=t.map((e=>e.init(s,r,o)));return s.injectEndpoints({endpoints:e.endpoints})}}var L=2147482.647,F=e=>{let{reducerPath:t,api:n,queryThunk:r,context:o,internalState:a}=e;const{removeQueryResult:s,unsubscribeQueryResult:l}=n.internalActions,c=(0,i.Q)(l.match,r.fulfilled,r.rejected);function u(e){const t=a.currentSubscriptions[e];return!!t&&!function(e){for(let t in e)return!1;return!0}(t)}const d={};function h(e,t,n,r){var i;const a=o.endpointDefinitions[t],l=null!==(i=null===a||void 0===a?void 0:a.keepUnusedDataFor)&&void 0!==i?i:r.keepUnusedDataFor;if(l===1/0)return;const c=Math.max(0,Math.min(l,L));if(!u(e)){const t=d[e];t&&clearTimeout(t),d[e]=setTimeout((()=>{u(e)||n.dispatch(s({queryCacheKey:e})),delete d[e]}),1e3*c)}}return(e,r,i)=>{if(c(e)){var a;const n=r.getState()[t],{queryCacheKey:i}=l.match(e)?e.payload:e.meta.arg;h(i,null===(a=n.queries[i])||void 0===a?void 0:a.endpointName,r,n.config)}if(n.util.resetApiState.match(e))for(const[t,n]of Object.entries(d))n&&clearTimeout(n),delete d[t];if(o.hasRehydrationInfo(e)){const n=r.getState()[t],{queries:i}=o.extractRehydrationInfo(e);for(const[e,t]of Object.entries(i))h(e,null===t||void 0===t?void 0:t.endpointName,r,n.config)}}},z=e=>{let{reducerPath:t,context:n,context:{endpointDefinitions:r},mutationThunk:o,queryThunk:a,api:s,assertTagType:l,refetchQuery:c,internalState:u}=e;const{removeQueryResult:d}=s.internalActions,h=(0,i.Q)((0,i.KD)(o),(0,i.h_)(o)),p=(0,i.Q)((0,i.KD)(o,a),(0,i.Iv)(o,a));let f=[];function m(e,r){const i=r.getState(),o=i[t];if(f.push(...e),"delayed"===o.config.invalidationBehavior&&function(e){for(const r in e.queries){var t;if("pending"===(null===(t=e.queries[r])||void 0===t?void 0:t.status))return!0}for(const r in e.mutations){var n;if("pending"===(null===(n=e.mutations[r])||void 0===n?void 0:n.status))return!0}return!1}(o))return;const a=f;if(f=[],0===a.length)return;const l=s.util.selectInvalidatedBy(i,a);n.batch((()=>{const e=Array.from(l.values());for(const{queryCacheKey:n}of e){var t;const e=o.queries[n],i=null!==(t=u.currentSubscriptions[n])&&void 0!==t?t:{};e&&(0===x(i)?r.dispatch(d({queryCacheKey:n})):"uninitialized"!==e.status&&r.dispatch(c(e,n)))}}))}return(e,t)=>{h(e)?m(C(e,"invalidatesTags",r,l),t):p(e)?m([],t):s.util.invalidateTags.match(e)&&m(v(e.payload,void 0,void 0,void 0,void 0,l),t)}},B=e=>{let{reducerPath:t,queryThunk:n,api:r,refetchQuery:i,internalState:o}=e;const a={};function s(e,n){let{queryCacheKey:r}=e;const l=n.getState()[t],c=l.queries[r],d=o.currentSubscriptions[r];if(!c||"uninitialized"===c.status)return;const{lowestPollingInterval:h,skipPollingIfUnfocused:p}=u(d);if(!Number.isFinite(h))return;const f=a[r];null!==f&&void 0!==f&&f.timeout&&(clearTimeout(f.timeout),f.timeout=void 0);const m=Date.now()+h;a[r]={nextPollTimestamp:m,pollingInterval:h,timeout:setTimeout((()=>{!l.config.focused&&p||n.dispatch(i(c,r)),s({queryCacheKey:r},n)}),h)}}function l(e,n){let{queryCacheKey:r}=e;const i=n.getState()[t].queries[r],l=o.currentSubscriptions[r];if(!i||"uninitialized"===i.status)return;const{lowestPollingInterval:d}=u(l);if(!Number.isFinite(d))return void c(r);const h=a[r],p=Date.now()+d;(!h||p<h.nextPollTimestamp)&&s({queryCacheKey:r},n)}function c(e){const t=a[e];null!==t&&void 0!==t&&t.timeout&&clearTimeout(t.timeout),delete a[e]}function u(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=!1,n=Number.POSITIVE_INFINITY;for(let r in e)e[r].pollingInterval&&(n=Math.min(e[r].pollingInterval,n),t=e[r].skipPollingIfUnfocused||t);return{lowestPollingInterval:n,skipPollingIfUnfocused:t}}return(e,t)=>{(r.internalActions.updateSubscriptionOptions.match(e)||r.internalActions.unsubscribeQueryResult.match(e))&&l(e.payload,t),(n.pending.match(e)||n.rejected.match(e)&&e.meta.condition)&&l(e.meta.arg,t),(n.fulfilled.match(e)||n.rejected.match(e)&&!e.meta.condition)&&s(e.meta.arg,t),r.util.resetApiState.match(e)&&function(){for(const e of Object.keys(a))c(e)}()}},U=e=>{let{reducerPath:t,context:n,api:r,refetchQuery:i,internalState:o}=e;const{removeQueryResult:a}=r.internalActions;function s(e,r){const s=e.getState()[t],l=s.queries,c=o.currentSubscriptions;n.batch((()=>{for(const t of Object.keys(c)){const n=l[t],o=c[t];if(!o||!n)continue;(Object.values(o).some((e=>!0===e[r]))||Object.values(o).every((e=>void 0===e[r]))&&s.config[r])&&(0===x(o)?e.dispatch(a({queryCacheKey:t})):"uninitialized"!==n.status&&e.dispatch(i(n,t)))}}))}return(e,t)=>{h.match(e)&&s(t,"refetchOnFocus"),f.match(e)&&s(t,"refetchOnReconnect")}},H=new Error("Promise never resolved before cacheEntryRemoved."),V=e=>{let{api:t,reducerPath:n,context:r,queryThunk:o,mutationThunk:a,internalState:s}=e;const l=(0,i.Gx)(o),c=(0,i.Gx)(a),u=(0,i.KD)(o,a),d={};function h(e,n,i,o,a){const s=r.endpointDefinitions[e],l=null===s||void 0===s?void 0:s.onCacheEntryAdded;if(!l)return;let c={};const u=new Promise((e=>{c.cacheEntryRemoved=e})),h=Promise.race([new Promise((e=>{c.valueResolved=e})),u.then((()=>{throw H}))]);h.catch((()=>{})),d[i]=c;const p=t.endpoints[e].select("query"===s.type?n:i),f=o.dispatch(((e,t,n)=>n)),m={...o,getCacheEntry:()=>p(o.getState()),requestId:a,extra:f,updateCachedData:"query"===s.type?r=>o.dispatch(t.util.updateQueryData(e,n,r)):void 0,cacheDataLoaded:h,cacheEntryRemoved:u},g=l(n,m);Promise.resolve(g).catch((e=>{if(e!==H)throw e}))}return(e,r,i)=>{const s=function(e){return l(e)?e.meta.arg.queryCacheKey:c(e)?null!==(n=e.meta.arg.fixedCacheKey)&&void 0!==n?n:e.meta.requestId:t.internalActions.removeQueryResult.match(e)?e.payload.queryCacheKey:t.internalActions.removeMutationResult.match(e)?T(e.payload):"";var n}(e);if(o.pending.match(e)){const t=i[n].queries[s],o=r.getState()[n].queries[s];!t&&o&&h(e.meta.arg.endpointName,e.meta.arg.originalArgs,s,r,e.meta.requestId)}else if(a.pending.match(e)){r.getState()[n].mutations[s]&&h(e.meta.arg.endpointName,e.meta.arg.originalArgs,s,r,e.meta.requestId)}else if(u(e)){const t=d[s];null!==t&&void 0!==t&&t.valueResolved&&(t.valueResolved({data:e.payload,meta:e.meta.baseQueryMeta}),delete t.valueResolved)}else if(t.internalActions.removeQueryResult.match(e)||t.internalActions.removeMutationResult.match(e)){const e=d[s];e&&(delete d[s],e.cacheEntryRemoved())}else if(t.util.resetApiState.match(e))for(const[t,n]of Object.entries(d))delete d[t],n.cacheEntryRemoved()}},G=e=>{let{api:t,context:n,queryThunk:r,mutationThunk:o}=e;const a=(0,i.zR)(r,o),s=(0,i.Iv)(r,o),l=(0,i.KD)(r,o),c={};return(e,r)=>{if(a(e)){const{requestId:i,arg:{endpointName:o,originalArgs:a}}=e.meta,s=n.endpointDefinitions[o],l=null===s||void 0===s?void 0:s.onQueryStarted;if(l){const e={},n=new Promise(((t,n)=>{e.resolve=t,e.reject=n}));n.catch((()=>{})),c[i]=e;const u=t.endpoints[o].select("query"===s.type?a:i),d=r.dispatch(((e,t,n)=>n)),h={...r,getCacheEntry:()=>u(r.getState()),requestId:i,extra:d,updateCachedData:"query"===s.type?e=>r.dispatch(t.util.updateQueryData(o,a,e)):void 0,queryFulfilled:n};l(a,h)}}else if(l(e)){var i;const{requestId:t,baseQueryMeta:n}=e.meta;null===(i=c[t])||void 0===i||i.resolve({data:e.payload,meta:n}),delete c[t]}else if(s(e)){var o,u;const{requestId:t,rejectedWithValue:n,baseQueryMeta:r}=e.meta;null===(o=c[t])||void 0===o||o.reject({error:null!==(u=e.payload)&&void 0!==u?u:e.error,isUnhandledError:!n,meta:r}),delete c[t]}}},W=e=>{let{api:t,context:{apiUid:n},reducerPath:r}=e;return(e,r)=>{t.util.resetApiState.match(e)&&r.dispatch(t.internalActions.middlewareRegistered(n))}},q=e=>{let{api:t,queryThunk:n,internalState:r}=e;const i="".concat(t.reducerPath,"/subscriptions");let a=null,s=null;const{updateSubscriptionOptions:l,unsubscribeQueryResult:c}=t.internalActions,u=()=>r.currentSubscriptions,d={getSubscriptions:u,getSubscriptionCount:e=>{var t;return x(null!==(t=u()[e])&&void 0!==t?t:{})},isRequestSubscribed:(e,t)=>{var n;const r=u();return!(null===r||void 0===r||null===(n=r[e])||void 0===n||!n[t])}};return(e,u)=>{if(a||(a=JSON.parse(JSON.stringify(r.currentSubscriptions))),t.util.resetApiState.match(e))return a=r.currentSubscriptions={},s=null,[!0,!1];if(t.internalActions.internal_getRTKQSubscriptions.match(e))return[!1,d];const h=((e,r)=>{if(l.match(r)){var i;const{queryCacheKey:t,requestId:n,options:o}=r.payload;return null!==e&&void 0!==e&&null!==(i=e[t])&&void 0!==i&&i[n]&&(e[t][n]=o),!0}if(c.match(r)){const{queryCacheKey:t,requestId:n}=r.payload;return e[t]&&delete e[t][n],!0}if(t.internalActions.removeQueryResult.match(r))return delete e[r.payload.queryCacheKey],!0;if(n.pending.match(r)){var o,a;const{meta:{arg:t,requestId:n}}=r,i=null!==(a=e[o=t.queryCacheKey])&&void 0!==a?a:e[o]={};var s,u;return i["".concat(n,"_running")]={},t.subscribe&&(i[n]=null!==(s=null!==(u=t.subscriptionOptions)&&void 0!==u?u:i[n])&&void 0!==s?s:{}),!0}let d=!1;if(n.fulfilled.match(r)||n.rejected.match(r)){const t=e[r.meta.arg.queryCacheKey]||{},n="".concat(r.meta.requestId,"_running");d||(d=!!t[n]),delete t[n]}if(n.rejected.match(r)){const{meta:{condition:t,arg:n,requestId:i}}=r;if(t&&n.subscribe){var h,p,f,m;const t=null!==(p=e[h=n.queryCacheKey])&&void 0!==p?p:e[h]={};t[i]=null!==(f=null!==(m=n.subscriptionOptions)&&void 0!==m?m:t[i])&&void 0!==f?f:{},d=!0}}return d})(r.currentSubscriptions,e);let p=!0;if(h){s||(s=setTimeout((()=>{const e=JSON.parse(JSON.stringify(r.currentSubscriptions)),[,n]=(0,o.aS)(a,(()=>e));u.next(t.internalActions.subscriptionsUpdated(n)),a=e,s=null}),500));const l="string"==typeof e.type&&!!e.type.startsWith(i),c=n.rejected.match(e)&&e.meta.condition&&!!e.meta.arg.subscribe;p=!l&&!c}return[p,!1]}};function Z(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return Object.assign(e,...n)}var Y=Symbol(),K=function(){let{createSelector:e=a.P1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{name:Y,init(t,n,a){let{baseQuery:s,tagTypes:c,reducerPath:u,serializeQueryArgs:C,keepUnusedDataFor:E,refetchOnMountOrArgChange:O,refetchOnFocus:N,refetchOnReconnect:I,invalidationBehavior:A}=n;(0,o.vI)();const R=e=>e;Object.assign(t,{reducerPath:u,endpoints:{},internalActions:{onOnline:f,onOffline:m,onFocus:h,onFocusLost:p},util:{}});const{queryThunk:M,mutationThunk:L,patchQueryData:H,updateQueryData:K,upsertQueryData:Q,prefetch:X,buildMatchThunkActions:$}=function(e){let{reducerPath:t,baseQuery:n,context:{endpointDefinitions:r},serializeQueryArgs:a,api:s,assertTagType:l}=e;const c=async(e,t)=>{let{signal:o,abort:a,rejectWithValue:s,fulfillWithValue:l,dispatch:c,getState:h,extra:p}=t;const f=r[e.endpointName];try{let t,r=_;const s={signal:o,abort:a,dispatch:c,getState:h,extra:p,endpoint:e.endpointName,type:e.type,forced:"query"===e.type?u(e,h()):void 0},m="query"===e.type?e[w]:void 0;if(m?t=m():f.query?(t=await n(f.query(e.originalArgs),s,f.extraOptions),f.transformResponse&&(r=f.transformResponse)):t=await f.queryFn(e.originalArgs,s,f.extraOptions,(e=>n(e,s,f.extraOptions))),t.error)throw new d(t.error,t.meta);return l(await r(t.data,t.meta,e.originalArgs),{fulfilledTimeStamp:Date.now(),baseQueryMeta:t.meta,[i.s4]:!0})}catch(m){let t=m;if(t instanceof d){let n=_;f.query&&f.transformErrorResponse&&(n=f.transformErrorResponse);try{return s(await n(t.value,t.meta,e.originalArgs),{baseQueryMeta:t.meta,[i.s4]:!0})}catch(g){t=g}}throw console.error(t),t}};function u(e,n){var r,i,o,a;const s=null===(r=n[t])||void 0===r||null===(i=r.queries)||void 0===i?void 0:i[e.queryCacheKey],l=null===(o=n[t])||void 0===o?void 0:o.config.refetchOnMountOrArgChange,c=null===s||void 0===s?void 0:s.fulfilledTimeStamp,u=null!==(a=e.forceRefetch)&&void 0!==a?a:e.subscribe&&l;return!!u&&(!0===u||(Number(new Date)-Number(c))/1e3>=u)}const h=(0,i.hg)("".concat(t,"/executeQuery"),c,{getPendingMeta:()=>({startedTimeStamp:Date.now(),[i.s4]:!0}),condition(e,n){var i,o,a;let{getState:s}=n;const l=s(),c=null===(i=l[t])||void 0===i||null===(o=i.queries)||void 0===o?void 0:o[e.queryCacheKey],d=null===c||void 0===c?void 0:c.fulfilledTimeStamp,h=e.originalArgs,p=null===c||void 0===c?void 0:c.originalArgs,f=r[e.endpointName];return!!S(e)||"pending"!==(null===c||void 0===c?void 0:c.status)&&(!!u(e,l)||!(!g(f)||null===f||void 0===f||null===(a=f.forceRefetch)||void 0===a||!a.call(f,{currentArg:h,previousArg:p,endpointState:c,state:l}))||!d)},dispatchConditionRejection:!0}),p=(0,i.hg)("".concat(t,"/executeMutation"),c,{getPendingMeta:()=>({startedTimeStamp:Date.now(),[i.s4]:!0})});function f(e){return t=>{var n,r;return(null===t||void 0===t||null===(n=t.meta)||void 0===n||null===(r=n.arg)||void 0===r?void 0:r.endpointName)===e}}return{queryThunk:h,mutationThunk:p,prefetch:(e,t,n)=>(r,i)=>{const o=(e=>"force"in e)(n)&&n.force,a=(e=>"ifOlderThan"in e)(n)&&n.ifOlderThan,l=function(){const n={forceRefetch:!(arguments.length>0&&void 0!==arguments[0])||arguments[0],isPrefetch:!0};return s.endpoints[e].initiate(t,n)},c=s.endpoints[e].select(t)(i());if(o)r(l());else if(a){const e=null===c||void 0===c?void 0:c.fulfilledTimeStamp;if(!e)return void r(l());(Number(new Date)-Number(new Date(e)))/1e3>=a&&r(l())}else r(l(!1))},updateQueryData:function(e,t,n){let r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return(i,a)=>{const l=s.endpoints[e].select(t)(a());let c,u={patches:[],inversePatches:[],undo:()=>i(s.util.patchQueryData(e,t,u.inversePatches,r))};if("uninitialized"===l.status)return u;if("data"in l)if((0,o.o$)(l.data)){const[e,t,r]=(0,o.aS)(l.data,n);u.patches.push(...t),u.inversePatches.push(...r),c=e}else c=n(l.data),u.patches.push({op:"replace",path:[],value:c}),u.inversePatches.push({op:"replace",path:[],value:l.data});return 0===u.patches.length||i(s.util.patchQueryData(e,t,u.patches,r)),u}},upsertQueryData:(e,t,n)=>r=>r(s.endpoints[e].initiate(t,{subscribe:!1,forceRefetch:!0,[w]:()=>({data:n})})),patchQueryData:(e,t,n,i)=>(o,c)=>{const u=r[e],d=a({queryArgs:t,endpointDefinition:u,endpointName:e});if(o(s.internalActions.queryResultPatched({queryCacheKey:d,patches:n})),!i)return;const h=s.endpoints[e].select(t)(c()),p=v(u.providesTags,h.data,void 0,t,{},l);o(s.internalActions.updateProvidedBy({queryCacheKey:d,providedTags:p}))},buildMatchThunkActions:function(e,t){return{matchPending:(0,i.A6)((0,i.zR)(e),f(t)),matchFulfilled:(0,i.A6)((0,i.KD)(e),f(t)),matchRejected:(0,i.A6)((0,i.Iv)(e),f(t))}}}}({baseQuery:s,reducerPath:u,context:a,api:t,serializeQueryArgs:C,assertTagType:R}),{reducer:J,actions:ee}=k({context:a,queryThunk:M,mutationThunk:L,reducerPath:u,assertTagType:R,config:{refetchOnFocus:N,refetchOnReconnect:I,refetchOnMountOrArgChange:O,keepUnusedDataFor:E,reducerPath:u,invalidationBehavior:A}});Z(t.util,{patchQueryData:H,updateQueryData:K,upsertQueryData:Q,prefetch:X,resetApiState:ee.resetApiState}),Z(t.internalActions,ee);const{middleware:te,actions:ne}=function(e){const{reducerPath:t,queryThunk:n,api:o,context:a}=e,{apiUid:s}=a,l={invalidateTags:(0,i.PH)("".concat(t,"/invalidateTags"))},c=e=>e.type.startsWith("".concat(t,"/")),u=[W,F,z,B,V,G];return{middleware:n=>{let i=!1;const l={...e,internalState:{currentSubscriptions:{}},refetchQuery:d,isThisApiSliceAction:c},h=u.map((e=>e(l))),p=q(l),f=U(l);return e=>l=>{if(!(0,r.LG)(l))return e(l);i||(i=!0,n.dispatch(o.internalActions.middlewareRegistered(s)));const u={...n,next:e},d=n.getState(),[m,g]=p(l,u,d);let v;if(v=m?e(l):g,n.getState()[t]&&(f(l,u,d),c(l)||a.hasRehydrationInfo(l)))for(let e of h)e(l,u,d);return v}},actions:l};function d(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n({type:"query",endpointName:e.endpointName,originalArgs:e.originalArgs,subscribe:!1,forceRefetch:!0,queryCacheKey:t,...r})}}({reducerPath:u,context:a,queryThunk:M,mutationThunk:L,api:t,assertTagType:R});Z(t.util,ne),Z(t,{reducer:J,middleware:te});const{buildQuerySelector:re,buildMutationSelector:ie,selectInvalidatedBy:oe,selectCachedArgsForQuery:ae}=function(e){let{serializeQueryArgs:t,reducerPath:n,createSelector:r}=e;const i=e=>P,o=e=>D;return{buildQuerySelector:function(e,n){return o=>{const l=t({queryArgs:o,endpointDefinition:n,endpointName:e});return r(o===j?i:e=>{var t,n,r;return null!==(t=null===(n=s(e))||void 0===n||null===(r=n.queries)||void 0===r?void 0:r[l])&&void 0!==t?t:P},a)}},buildMutationSelector:function(){return e=>{let t;var n;return t="object"===typeof e?null!==(n=T(e))&&void 0!==n?n:j:e,r(t===j?o:e=>{var n,r,i;return null!==(n=null===(r=s(e))||void 0===r||null===(i=r.mutations)||void 0===i?void 0:i[t])&&void 0!==n?n:D},a)}},selectInvalidatedBy:function(e,t){const r=e[n],i=new Set;for(const n of t.map(y)){var o;const e=r.provided[n.type];if(!e)continue;let t=null!==(o=void 0!==n.id?e[n.id]:l(Object.values(e)))&&void 0!==o?o:[];for(const n of t)i.add(n)}return l(Array.from(i.values()).map((e=>{const t=r.queries[e];return t?[{queryCacheKey:e,endpointName:t.endpointName,originalArgs:t.originalArgs}]:[]})))},selectCachedArgsForQuery:function(e,t){return Object.values(e[n].queries).filter((e=>(null===e||void 0===e?void 0:e.endpointName)===t&&"uninitialized"!==e.status)).map((e=>e.originalArgs))}};function a(e){return{...e,...(t=e.status,{status:t,isUninitialized:"uninitialized"===t,isLoading:"pending"===t,isSuccess:"fulfilled"===t,isError:"rejected"===t})};var t}function s(e){return e[n]}}({serializeQueryArgs:C,reducerPath:u,createSelector:e});Z(t.util,{selectInvalidatedBy:oe,selectCachedArgsForQuery:ae});const{buildInitiateQuery:se,buildInitiateMutation:le,getRunningMutationThunk:ce,getRunningMutationsThunk:ue,getRunningQueriesThunk:de,getRunningQueryThunk:he}=function(e){let{serializeQueryArgs:t,queryThunk:n,mutationThunk:r,api:i,context:o}=e;const a=new Map,s=new Map,{unsubscribeQueryResult:l,removeMutationResult:c,updateSubscriptionOptions:u}=i.internalActions;return{buildInitiateQuery:function(e,r){const o=function(s){let{subscribe:c=!0,forceRefetch:h,subscriptionOptions:p,[w]:f,...m}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(g,v)=>{var y;const b=t({queryArgs:s,endpointDefinition:r,endpointName:e}),S=n({...m,type:"query",subscribe:c,forceRefetch:h,subscriptionOptions:p,endpointName:e,originalArgs:s,queryCacheKey:b,[w]:f}),_=i.endpoints[e].select(s),C=g(S),E=_(v());d(g);const{requestId:T,abort:O}=C,N=E.requestId!==T,k=null===(y=a.get(g))||void 0===y?void 0:y[b],j=()=>_(v()),I=Object.assign(f?C.then(j):N&&!k?Promise.resolve(E):Promise.all([k,C]).then(j),{arg:s,requestId:T,subscriptionOptions:p,queryCacheKey:b,abort:O,async unwrap(){const e=await I;if(e.isError)throw e.error;return e.data},refetch:()=>g(o(s,{subscribe:!1,forceRefetch:!0})),unsubscribe(){c&&g(l({queryCacheKey:b,requestId:T}))},updateSubscriptionOptions(t){I.subscriptionOptions=t,g(u({endpointName:e,requestId:T,queryCacheKey:b,options:t}))}});if(!k&&!N&&!f){const e=a.get(g)||{};e[b]=I,a.set(g,e),I.then((()=>{delete e[b],x(e)||a.delete(g)}))}return I}};return o},buildInitiateMutation:function(e){return function(t){let{track:n=!0,fixedCacheKey:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(o,a)=>{const l=r({type:"mutation",endpointName:e,originalArgs:t,track:n,fixedCacheKey:i}),u=o(l);d(o);const{requestId:h,abort:p,unwrap:f}=u,m=(g=e=>({error:e}),u.unwrap().then((e=>({data:e}))).catch(g));var g;const v=Object.assign(m,{arg:u.arg,requestId:h,abort:p,unwrap:f,reset:()=>{o(c({requestId:h,fixedCacheKey:i}))}}),y=s.get(o)||{};return s.set(o,y),y[h]=v,v.then((()=>{delete y[h],x(y)||s.delete(o)})),i&&(y[i]=v,v.then((()=>{y[i]===v&&(delete y[i],x(y)||s.delete(o))}))),v}}},getRunningQueryThunk:function(e,n){return r=>{var i;const s=o.endpointDefinitions[e],l=t({queryArgs:n,endpointDefinition:s,endpointName:e});return null===(i=a.get(r))||void 0===i?void 0:i[l]}},getRunningMutationThunk:function(e,t){return e=>{var n;return null===(n=s.get(e))||void 0===n?void 0:n[t]}},getRunningQueriesThunk:function(){return e=>Object.values(a.get(e)||{}).filter(b)},getRunningMutationsThunk:function(){return e=>Object.values(s.get(e)||{}).filter(b)}};function d(e){}}({queryThunk:M,mutationThunk:L,api:t,serializeQueryArgs:C,context:a});return Z(t.util,{getRunningMutationThunk:ce,getRunningMutationsThunk:ue,getRunningQueryThunk:he,getRunningQueriesThunk:de}),{name:Y,injectEndpoint(e,n){var r,i;const o=t;null!==(i=(r=o.endpoints)[e])&&void 0!==i||(r[e]={}),g(n)?Z(o.endpoints[e],{name:e,select:re(e,n),initiate:se(e,n)},$(M,e)):"mutation"===n.type&&Z(o.endpoints[e],{name:e,select:ie(),initiate:le(e)},$(L,e))}}}}};K()},1399:(e,t,n)=>{"use strict";n.d(t,{s4:()=>v,xC:()=>_,PH:()=>h,hg:()=>U,oM:()=>Z,rJ:()=>oe,A6:()=>k,Q:()=>N,Gx:()=>M,KD:()=>R,zR:()=>P,Iv:()=>D,h_:()=>A,x0:()=>T,cw:()=>y});var r=n(64572),i=n(89900),o=n(36313),a=n(38907);function s(e){return t=>{let{dispatch:n,getState:r}=t;return t=>i=>"function"===typeof i?i(n,r,e):t(i)}}var l=s(),c=s,u=(function(){const e=(0,o.wN)(...arguments),t=Object.assign((function(){const t=e(...arguments),n=function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return t((0,i.mv)(e)?(0,i.Vk)(e):e,...r)};return Object.assign(n,t),n}),{withTypes:()=>t})}(o.kO),"undefined"!==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"===typeof arguments[0]?a.qC:a.qC.apply(null,arguments)}),d=("undefined"!==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__,e=>e&&"function"===typeof e.match);function h(e,t){function n(){if(t){let n=t(...arguments);if(!n)throw new Error(oe(0));return{type:e,payload:n.payload,..."meta"in n&&{meta:n.meta},..."error"in n&&{error:n.error}}}return{type:e,payload:arguments.length<=0?void 0:arguments[0]}}return n.toString=()=>"".concat(e),n.type=e,n.match=t=>(0,a.LG)(t)&&t.type===e,n}var p=class e extends Array{constructor(){super(...arguments),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return super.concat.apply(this,t)}prepend(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return 1===n.length&&Array.isArray(n[0])?new e(...n[0].concat(this)):new e(...n.concat(this))}};function f(e){return(0,i.o$)(e)?(0,i.Uy)(e,(()=>{})):e}function m(e,t,n){if(e.has(t)){let r=e.get(t);return n.update&&(r=n.update(r,t,e),e.set(t,r)),r}if(!n.insert)throw new Error(oe(10));const r=n.insert(t,e);return e.set(t,r),r}var g=()=>function(e){const{thunk:t=!0,immutableCheck:n=!0,serializableCheck:r=!0,actionCreatorCheck:i=!0}=null!==e&&void 0!==e?e:{};let o=new p;return t&&("boolean"===typeof t?o.push(l):o.push(c(t.extraArgument))),o},v="RTK_autoBatch",y=()=>e=>({payload:e,meta:{[v]:!0}}),b=e=>t=>{setTimeout(t,e)},x="undefined"!==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:b(10),w=e=>function(t){const{autoBatch:n=!0}=null!==t&&void 0!==t?t:{};let r=new p(e);return n&&r.push(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{type:"raf"};return t=>function(){const n=t(...arguments);let r=!0,i=!1,o=!1;const a=new Set,s="tick"===e.type?queueMicrotask:"raf"===e.type?x:"callback"===e.type?e.queueNotification:b(e.timeout),l=()=>{o=!1,i&&(i=!1,a.forEach((e=>e())))};return Object.assign({},n,{subscribe(e){const t=n.subscribe((()=>r&&e()));return a.add(e),()=>{t(),a.delete(e)}},dispatch(e){try{var t;return r=!(null!==e&&void 0!==e&&null!==(t=e.meta)&&void 0!==t&&t[v]),i=!r,i&&(o||(o=!0,s(l))),n.dispatch(e)}finally{r=!0}}})}}("object"===typeof n?n:void 0)),r},S=!0;function _(e){const t=g(),{reducer:n,middleware:r,devTools:i=!0,preloadedState:o,enhancers:s}=e||{};let l,c;if("function"===typeof n)l=n;else{if(!(0,a.PO)(n))throw new Error(oe(1));l=(0,a.UY)(n)}if(!S&&r&&"function"!==typeof r)throw new Error(oe(2));if("function"===typeof r){if(c=r(t),!S&&!Array.isArray(c))throw new Error(oe(3))}else c=t();if(!S&&c.some((e=>"function"!==typeof e)))throw new Error(oe(4));let d=a.qC;i&&(d=u({trace:!S,..."object"===typeof i&&i}));const h=(0,a.md)(...c),p=w(h);if(!S&&s&&"function"!==typeof s)throw new Error(oe(5));let f="function"===typeof s?s(p):p();if(!S&&!Array.isArray(f))throw new Error(oe(6));if(!S&&f.some((e=>"function"!==typeof e)))throw new Error(oe(7));S||!c.length||f.includes(h)||console.error("middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`");const m=d(...f);return(0,a.MT)(l,o,m)}function C(e){const t={},n=[];let r;const i={addCase(e,n){const r="string"===typeof e?e:e.type;if(!r)throw new Error(oe(28));if(r in t)throw new Error(oe(29));return t[r]=n,i},addMatcher:(e,t)=>(n.push({matcher:e,reducer:t}),i),addDefaultCase:e=>(r=e,i)};return e(i),[t,n,r]}var E="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",T=function(){let e="",t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:21;for(;t--;)e+=E[64*Math.random()|0];return e},O=(e,t)=>d(e)?e.match(t):e(t);function N(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return e=>t.some((t=>O(t,e)))}function k(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return e=>t.every((t=>O(t,e)))}function j(e,t){if(!e||!e.meta)return!1;const n="string"===typeof e.meta.requestId,r=t.indexOf(e.meta.requestStatus)>-1;return n&&r}function I(e){return"function"===typeof e[0]&&"pending"in e[0]&&"fulfilled"in e[0]&&"rejected"in e[0]}function P(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?e=>j(e,["pending"]):I(t)?e=>N(...t.map((e=>e.pending)))(e):P()(t[0])}function D(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?e=>j(e,["rejected"]):I(t)?e=>N(...t.map((e=>e.rejected)))(e):D()(t[0])}function A(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];const r=e=>e&&e.meta&&e.meta.rejectedWithValue;return 0===t.length||I(t)?e=>k(D(...t),r)(e):A()(t[0])}function R(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?e=>j(e,["fulfilled"]):I(t)?e=>N(...t.map((e=>e.fulfilled)))(e):R()(t[0])}function M(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?e=>j(e,["pending","fulfilled","rejected"]):I(t)?e=>{const n=[];for(const r of t)n.push(r.pending,r.rejected,r.fulfilled);return N(...n)(e)}:M()(t[0])}var L=["name","message","stack","code"],F=class{constructor(e,t){(0,r.Z)(this,"_type",void 0),this.payload=e,this.meta=t}},z=class{constructor(e,t){(0,r.Z)(this,"_type",void 0),this.payload=e,this.meta=t}},B=e=>{if("object"===typeof e&&null!==e){const t={};for(const n of L)"string"===typeof e[n]&&(t[n]=e[n]);return t}return{message:String(e)}},U=(()=>{function e(e,t,n){const r=h(e+"/fulfilled",((e,t,n,r)=>({payload:e,meta:{...r||{},arg:n,requestId:t,requestStatus:"fulfilled"}}))),i=h(e+"/pending",((e,t,n)=>({payload:void 0,meta:{...n||{},arg:t,requestId:e,requestStatus:"pending"}}))),o=h(e+"/rejected",((e,t,r,i,o)=>({payload:i,error:(n&&n.serializeError||B)(e||"Rejected"),meta:{...o||{},arg:r,requestId:t,rejectedWithValue:!!i,requestStatus:"rejected",aborted:"AbortError"===(null===e||void 0===e?void 0:e.name),condition:"ConditionError"===(null===e||void 0===e?void 0:e.name)}})));return Object.assign((function(e){return(a,s,l)=>{const c=null!==n&&void 0!==n&&n.idGenerator?n.idGenerator(e):T(),u=new AbortController;let d,h;function p(e){h=e,u.abort()}const f=async function(){let f;try{var m,g;let o=null===n||void 0===n||null===(m=n.condition)||void 0===m?void 0:m.call(n,e,{getState:s,extra:l});if(null!==(v=o)&&"object"===typeof v&&"function"===typeof v.then&&(o=await o),!1===o||u.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const y=new Promise(((e,t)=>{d=()=>{t({name:"AbortError",message:h||"Aborted"})},u.signal.addEventListener("abort",d)}));a(i(c,e,null===n||void 0===n||null===(g=n.getPendingMeta)||void 0===g?void 0:g.call(n,{requestId:c,arg:e},{getState:s,extra:l}))),f=await Promise.race([y,Promise.resolve(t(e,{dispatch:a,getState:s,extra:l,requestId:c,signal:u.signal,abort:p,rejectWithValue:(e,t)=>new F(e,t),fulfillWithValue:(e,t)=>new z(e,t)})).then((t=>{if(t instanceof F)throw t;return t instanceof z?r(t.payload,c,e,t.meta):r(t,c,e)}))])}catch(y){f=y instanceof F?o(null,c,e,y.payload,y.meta):o(y,c,e)}finally{d&&u.signal.removeEventListener("abort",d)}var v;return n&&!n.dispatchConditionRejection&&o.match(f)&&f.meta.condition||a(f),f}();return Object.assign(f,{abort:p,requestId:c,arg:e,unwrap:()=>f.then(H)})}}),{pending:i,rejected:o,fulfilled:r,settled:N(o,r),typePrefix:e})}return e.withTypes=()=>e,e})();function H(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var V=Symbol.for("rtk-slice-createasyncthunk");function G(e,t){return"".concat(e,"/").concat(t)}function W(){var e;let{creators:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=null===t||void 0===t||null===(e=t.asyncThunk)||void 0===e?void 0:e[V];return function(e){const{name:t,reducerPath:r=t}=e;if(!t)throw new Error(oe(11));const o=("function"===typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name](){return e(...arguments)}}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},a=Object.keys(o),s={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},l={addCase(e,t){const n="string"===typeof e?e:e.type;if(!n)throw new Error(oe(12));if(n in s.sliceCaseReducersByType)throw new Error(oe(13));return s.sliceCaseReducersByType[n]=t,l},addMatcher:(e,t)=>(s.sliceMatchers.push({matcher:e,reducer:t}),l),exposeAction:(e,t)=>(s.actionCreators[e]=t,l),exposeCaseReducer:(e,t)=>(s.sliceCaseReducersByName[e]=t,l)};function c(){const[t={},n=[],r]="function"===typeof e.extraReducers?C(e.extraReducers):[e.extraReducers],o={...t,...s.sliceCaseReducersByType};return function(e,t){let n,[r,o,a]=C(t);if("function"===typeof e)n=()=>f(e());else{const t=f(e);n=()=>t}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n(),t=arguments.length>1?arguments[1]:void 0,s=[r[t.type],...o.filter((e=>{let{matcher:n}=e;return n(t)})).map((e=>{let{reducer:t}=e;return t}))];return 0===s.filter((e=>!!e)).length&&(s=[a]),s.reduce(((e,n)=>{if(n){if((0,i.mv)(e)){const r=n(e,t);return void 0===r?e:r}if((0,i.o$)(e))return(0,i.Uy)(e,(e=>n(e,t)));{const r=n(e,t);if(void 0===r){if(null===e)return e;throw new Error(oe(9))}return r}}return e}),e)}return s.getInitialState=n,s}(e.initialState,(e=>{for(let t in o)e.addCase(t,o[t]);for(let t of s.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of n)e.addMatcher(t.matcher,t.reducer);r&&e.addDefaultCase(r)}))}a.forEach((r=>{const i=o[r],a={reducerName:r,type:G(t,r),createNotation:"function"===typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(i)?function(e,t,n){let r,i,{type:o,reducerName:a,createNotation:s}=e;if("reducer"in t){if(s&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(t))throw new Error(oe(17));r=t.reducer,i=t.prepare}else r=t;n.addCase(o,r).exposeCaseReducer(a,r).exposeAction(a,i?h(o,i):h(o))}(a,i,l):function(e,t,n,r){let{type:i,reducerName:o}=e;if(!r)throw new Error(oe(18));const{payloadCreator:a,fulfilled:s,pending:l,rejected:c,settled:u,options:d}=t,h=r(i,a,d);n.exposeAction(o,h),s&&n.addCase(h.fulfilled,s);l&&n.addCase(h.pending,l);c&&n.addCase(h.rejected,c);u&&n.addMatcher(h.settled,u);n.exposeCaseReducer(o,{fulfilled:s||Y,pending:l||Y,rejected:c||Y,settled:u||Y})}(a,i,l,n)}));const u=e=>e,d=new Map;let p;function g(e,t){return p||(p=c()),p(e,t)}function v(){return p||(p=c()),p.getInitialState()}function y(t){let n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];function r(e){let r=e[t];return"undefined"===typeof r&&n&&(r=v()),r}function i(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u;const r=m(d,n,{insert:()=>new WeakMap});return m(r,t,{insert:()=>{const r={};for(const[o,a]of Object.entries(null!==(i=e.selectors)&&void 0!==i?i:{})){var i;r[o]=q(a,t,v,n)}return r}})}return{reducerPath:t,getSelectors:i,get selectors(){return i(r)},selectSlice:r}}const b={name:t,reducer:g,actions:s.actionCreators,caseReducers:s.sliceCaseReducersByName,getInitialState:v,...y(r),injectInto(e){let{reducerPath:t,...n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=null!==t&&void 0!==t?t:r;return e.inject({reducerPath:i,reducer:g},n),{...b,...y(i,!0)}}};return b}}function q(e,t,n,r){function i(i){let o=t(i);"undefined"===typeof o&&r&&(o=n());for(var a=arguments.length,s=new Array(a>1?a-1:0),l=1;l<a;l++)s[l-1]=arguments[l];return e(o,...s)}return i.unwrapped=e,i}var Z=W();function Y(){}i.mv;var K="listener",Q="completed",X="cancelled",$=("task-".concat(X),"task-".concat(Q),"".concat(K,"-").concat(X),"".concat(K,"-").concat(Q),(e,t)=>{if("function"!==typeof e)throw new Error(oe(32))});var{assign:J}=Object,ee="listenerMiddleware",te=e=>{let{type:t,actionCreator:n,matcher:r,predicate:i,effect:o}=e;if(t)i=h(t).match;else if(n)t=n.type,i=n.match;else if(r)i=r;else if(!i)throw new Error(oe(21));return $(o,"options.listener"),{predicate:i,type:t,effect:o}},ne=Object.assign((e=>{const{type:t,predicate:n,effect:r}=te(e);return{id:T(),effect:r,type:t,predicate:n,pending:new Set,unsubscribe:()=>{throw new Error(oe(22))}}}),{withTypes:()=>ne}),re=Object.assign(h("".concat(ee,"/add")),{withTypes:()=>re}),ie=(h("".concat(ee,"/removeAll")),Object.assign(h("".concat(ee,"/remove")),{withTypes:()=>ie}));Symbol.for("rtk-state-proxy-original");function oe(e){return"Minified Redux Toolkit error #".concat(e,"; visit https://redux-toolkit.js.org/Errors?code=").concat(e," for the full message or use the non-minified dev environment for full errors. ")}},89900:(e,t,n)=>{"use strict";n.d(t,{Js:()=>h,QE:()=>$,Uy:()=>Q,Vk:()=>q,aS:()=>X,mv:()=>l,o$:()=>c,vI:()=>Y});var r=Symbol.for("immer-nothing"),i=Symbol.for("immer-draftable"),o=Symbol.for("immer-state");function a(e){throw new Error("[Immer] minified error nr: ".concat(e,". Full error at: https://bit.ly/3cXEKWf"))}var s=Object.getPrototypeOf;function l(e){return!!e&&!!e[o]}function c(e){var t;return!!e&&(d(e)||Array.isArray(e)||!!e[i]||!(null===(t=e.constructor)||void 0===t||!t[i])||y(e)||b(e))}var u=Object.prototype.constructor.toString();function d(e){if(!e||"object"!==typeof e)return!1;const t=s(e);if(null===t)return!0;const n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return n===Object||"function"==typeof n&&Function.toString.call(n)===u}function h(e){return l(e)||a(15),e[o].base_}function p(e,t){0===f(e)?Object.entries(e).forEach((n=>{let[r,i]=n;t(r,i,e)})):e.forEach(((n,r)=>t(r,n,e)))}function f(e){const t=e[o];return t?t.type_:Array.isArray(e)?1:y(e)?2:b(e)?3:0}function m(e,t){return 2===f(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function g(e,t){return 2===f(e)?e.get(t):e[t]}function v(e,t,n){const r=f(e);2===r?e.set(t,n):3===r?e.add(n):e[t]=n}function y(e){return e instanceof Map}function b(e){return e instanceof Set}function x(e){return e.copy_||e.base_}function w(e,t){if(y(e))return new Map(e);if(b(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);if(!t&&d(e)){if(!s(e)){const t=Object.create(null);return Object.assign(t,e)}return{...e}}const n=Object.getOwnPropertyDescriptors(e);delete n[o];let r=Reflect.ownKeys(n);for(let i=0;i<r.length;i++){const t=r[i],o=n[t];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(n[t]={configurable:!0,writable:!0,enumerable:o.enumerable,value:e[t]})}return Object.create(s(e),n)}function S(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return C(e)||l(e)||!c(e)||(f(e)>1&&(e.set=e.add=e.clear=e.delete=_),Object.freeze(e),t&&p(e,((e,t)=>S(t,!0)))),e}function _(){a(2)}function C(e){return Object.isFrozen(e)}var E,T={};function O(e){const t=T[e];return t||a(0),t}function N(e,t){T[e]||(T[e]=t)}function k(){return E}function j(e,t){t&&(O("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function I(e){P(e),e.drafts_.forEach(A),e.drafts_=null}function P(e){e===E&&(E=e.parent_)}function D(e){return E={drafts_:[],parent_:E,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function A(e){const t=e[o];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function R(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];return void 0!==e&&e!==n?(n[o].modified_&&(I(t),a(4)),c(e)&&(e=M(t,e),t.parent_||F(t,e)),t.patches_&&O("Patches").generateReplacementPatches_(n[o].base_,e,t.patches_,t.inversePatches_)):e=M(t,n,[]),I(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==r?e:void 0}function M(e,t,n){if(C(t))return t;const r=t[o];if(!r)return p(t,((i,o)=>L(e,r,t,i,o,n))),t;if(r.scope_!==e)return t;if(!r.modified_)return F(e,r.base_,!0),r.base_;if(!r.finalized_){r.finalized_=!0,r.scope_.unfinalizedDrafts_--;const t=r.copy_;let i=t,o=!1;3===r.type_&&(i=new Set(t),t.clear(),o=!0),p(i,((i,a)=>L(e,r,t,i,a,n,o))),F(e,t,!1),n&&e.patches_&&O("Patches").generatePatches_(r,n,e.patches_,e.inversePatches_)}return r.copy_}function L(e,t,n,r,i,o,a){if(l(i)){const a=M(e,i,o&&t&&3!==t.type_&&!m(t.assigned_,r)?o.concat(r):void 0);if(v(n,r,a),!l(a))return;e.canAutoFreeze_=!1}else a&&n.add(i);if(c(i)&&!C(i)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;M(e,i),t&&t.scope_.parent_||F(e,i)}}function F(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&S(t,n)}var z={get(e,t){if(t===o)return e;const n=x(e);if(!m(n,t))return function(e,t,n){var r;const i=H(t,n);return i?"value"in i?i.value:null===(r=i.get)||void 0===r?void 0:r.call(e.draft_):void 0}(e,n,t);const r=n[t];return e.finalized_||!c(r)?r:r===U(e.base_,t)?(G(e),e.copy_[t]=W(r,e)):r},has:(e,t)=>t in x(e),ownKeys:e=>Reflect.ownKeys(x(e)),set(e,t,n){const r=H(x(e),t);if(null!==r&&void 0!==r&&r.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){const r=U(x(e),t),s=null===r||void 0===r?void 0:r[o];if(s&&s.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(((i=n)===(a=r)?0!==i||1/i===1/a:i!==i&&a!==a)&&(void 0!==n||m(e.base_,t)))return!0;G(e),V(e)}var i,a;return e.copy_[t]===n&&(void 0!==n||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==U(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,G(e),V(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const n=x(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:r.enumerable,value:n[t]}:r},defineProperty(){a(11)},getPrototypeOf:e=>s(e.base_),setPrototypeOf(){a(12)}},B={};function U(e,t){const n=e[o];return(n?x(n):e)[t]}function H(e,t){if(!(t in e))return;let n=s(e);for(;n;){const e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=s(n)}}function V(e){e.modified_||(e.modified_=!0,e.parent_&&V(e.parent_))}function G(e){e.copy_||(e.copy_=w(e.base_,e.scope_.immer_.useStrictShallowCopy_))}p(z,((e,t)=>{B[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),B.deleteProperty=function(e,t){return B.set.call(this,e,t,void 0)},B.set=function(e,t,n){return z.set.call(this,e[0],t,n,e[0])};function W(e,t){const n=y(e)?O("MapSet").proxyMap_(e,t):b(e)?O("MapSet").proxySet_(e,t):function(e,t){const n=Array.isArray(e),r={type_:n?1:0,scope_:t?t.scope_:k(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let i=r,o=z;n&&(i=[r],o=B);const{revoke:a,proxy:s}=Proxy.revocable(i,o);return r.draft_=s,r.revoke_=a,s}(e,t);return(t?t.scope_:k()).drafts_.push(n),n}function q(e){return l(e)||a(10),Z(e)}function Z(e){if(!c(e)||C(e))return e;const t=e[o];let n;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=w(e,t.scope_.immer_.useStrictShallowCopy_)}else n=w(e,!0);return p(n,((e,t)=>{v(n,e,Z(t))})),t&&(t.finalized_=!1),n}function Y(){const e=16;const t="replace",n="add",o="remove";function u(e){if(!c(e))return e;if(Array.isArray(e))return e.map(u);if(y(e))return new Map(Array.from(e.entries()).map((e=>{let[t,n]=e;return[t,u(n)]})));if(b(e))return new Set(Array.from(e).map(u));const t=Object.create(s(e));for(const n in e)t[n]=u(e[n]);return m(e,i)&&(t[i]=e[i]),t}function d(e){return l(e)?u(e):e}N("Patches",{applyPatches_:function(r,i){return i.forEach((i=>{const{path:s,op:l}=i;let c=r;for(let t=0;t<s.length-1;t++){const n=f(c);let r=s[t];"string"!==typeof r&&"number"!==typeof r&&(r=""+r),0!==n&&1!==n||"__proto__"!==r&&"constructor"!==r||a(e+3),"function"===typeof c&&"prototype"===r&&a(e+3),c=g(c,r),"object"!==typeof c&&a(e+2,s.join("/"))}const d=f(c),h=u(i.value),p=s[s.length-1];switch(l){case t:switch(d){case 2:return c.set(p,h);case 3:a(e);default:return c[p]=h}case n:switch(d){case 1:return"-"===p?c.push(h):c.splice(p,0,h);case 2:return c.set(p,h);case 3:return c.add(h);default:return c[p]=h}case o:switch(d){case 1:return c.splice(p,1);case 2:return c.delete(p);case 3:return c.delete(i.value);default:return delete c[p]}default:a(e+1)}})),r},generatePatches_:function(e,r,i,a){switch(e.type_){case 0:case 2:return function(e,r,i,a){const{base_:s,copy_:l}=e;p(e.assigned_,((e,c)=>{const u=g(s,e),h=g(l,e),p=c?m(s,e)?t:n:o;if(u===h&&p===t)return;const f=r.concat(e);i.push(p===o?{op:p,path:f}:{op:p,path:f,value:h}),a.push(p===n?{op:o,path:f}:p===o?{op:n,path:f,value:d(u)}:{op:t,path:f,value:d(u)})}))}(e,r,i,a);case 1:return function(e,r,i,a){let{base_:s,assigned_:l}=e,c=e.copy_;c.length<s.length&&([s,c]=[c,s],[i,a]=[a,i]);for(let n=0;n<s.length;n++)if(l[n]&&c[n]!==s[n]){const e=r.concat([n]);i.push({op:t,path:e,value:d(c[n])}),a.push({op:t,path:e,value:d(s[n])})}for(let t=s.length;t<c.length;t++){const e=r.concat([t]);i.push({op:n,path:e,value:d(c[t])})}for(let t=c.length-1;s.length<=t;--t){const e=r.concat([t]);a.push({op:o,path:e})}}(e,r,i,a);case 3:return function(e,t,r,i){let{base_:a,copy_:s}=e,l=0;a.forEach((e=>{if(!s.has(e)){const a=t.concat([l]);r.push({op:o,path:a,value:e}),i.unshift({op:n,path:a,value:e})}l++})),l=0,s.forEach((e=>{if(!a.has(e)){const a=t.concat([l]);r.push({op:n,path:a,value:e}),i.unshift({op:o,path:a,value:e})}l++}))}(e,r,i,a)}},generateReplacementPatches_:function(e,n,i,o){i.push({op:t,path:[],value:n===r?void 0:n}),o.push({op:t,path:[],value:e})}})}var K=new class{constructor(e){var t=this;this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,n)=>{if("function"===typeof e&&"function"!==typeof t){const n=t;t=e;const r=this;return function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n;for(var i=arguments.length,o=new Array(i>1?i-1:0),a=1;a<i;a++)o[a-1]=arguments[a];return r.produce(e,(e=>t.call(this,e,...o)))}}let i;if("function"!==typeof t&&a(6),void 0!==n&&"function"!==typeof n&&a(7),c(e)){const r=D(this),o=W(e,void 0);let a=!0;try{i=t(o),a=!1}finally{a?I(r):P(r)}return j(r,n),R(i,r)}if(!e||"object"!==typeof e){if(i=t(e),void 0===i&&(i=e),i===r&&(i=void 0),this.autoFreeze_&&S(i,!0),n){const t=[],r=[];O("Patches").generateReplacementPatches_(e,i,t,r),n(t,r)}return i}a(1)},this.produceWithPatches=(e,n)=>{if("function"===typeof e)return function(n){for(var r=arguments.length,i=new Array(r>1?r-1:0),o=1;o<r;o++)i[o-1]=arguments[o];return t.produceWithPatches(n,(t=>e(t,...i)))};let r,i;return[this.produce(e,n,((e,t)=>{r=e,i=t})),r,i]},"boolean"===typeof(null===e||void 0===e?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),"boolean"===typeof(null===e||void 0===e?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){c(e)||a(8),l(e)&&(e=q(e));const t=D(this),n=W(e,void 0);return n[o].isManual_=!0,P(t),n}finishDraft(e,t){const n=e&&e[o];n&&n.isManual_||a(9);const{scope_:r}=n;return j(r,t),R(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){const r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}n>-1&&(t=t.slice(n+1));const r=O("Patches").applyPatches_;return l(e)?r(e,t):this.produce(e,(e=>r(e,t)))}},Q=K.produce,X=K.produceWithPatches.bind(K),$=(K.setAutoFreeze.bind(K),K.setUseStrictShallowCopy.bind(K),K.applyPatches.bind(K));K.createDraft.bind(K),K.finishDraft.bind(K)},52369:(e,t,n)=>{"use strict";n.d(t,{IZ:()=>h,uu:()=>m});var r=n(27208);const{Axios:i,AxiosError:o,CanceledError:a,isCancel:s,CancelToken:l,VERSION:c,all:u,Cancel:d,isAxiosError:h,spread:p,toFormData:f,AxiosHeaders:m,HttpStatusCode:g,formToJSON:v,getAdapter:y,mergeConfig:b}=r.Z},27208:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Ke});var r={};function i(e,t){return function(){return e.apply(t,arguments)}}n.r(r),n.d(r,{hasBrowserEnv:()=>ie,hasStandardBrowserEnv:()=>oe,hasStandardBrowserWebWorkerEnv:()=>se});const{toString:o}=Object.prototype,{getPrototypeOf:a}=Object,s=(l=Object.create(null),e=>{const t=o.call(e);return l[t]||(l[t]=t.slice(8,-1).toLowerCase())});var l;const c=e=>(e=e.toLowerCase(),t=>s(t)===e),u=e=>t=>typeof t===e,{isArray:d}=Array,h=u("undefined");const p=c("ArrayBuffer");const f=u("string"),m=u("function"),g=u("number"),v=e=>null!==e&&"object"===typeof e,y=e=>{if("object"!==s(e))return!1;const t=a(e);return(null===t||t===Object.prototype||null===Object.getPrototypeOf(t))&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},b=c("Date"),x=c("File"),w=c("Blob"),S=c("FileList"),_=c("URLSearchParams");function C(e,t){let n,r,{allOwnKeys:i=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(null!==e&&"undefined"!==typeof e)if("object"!==typeof e&&(e=[e]),d(e))for(n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else{const r=i?Object.getOwnPropertyNames(e):Object.keys(e),o=r.length;let a;for(n=0;n<o;n++)a=r[n],t.call(null,e[a],a,e)}}function E(e,t){t=t.toLowerCase();const n=Object.keys(e);let r,i=n.length;for(;i-- >0;)if(r=n[i],t===r.toLowerCase())return r;return null}const T="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:global,O=e=>!h(e)&&e!==T;const N=(k="undefined"!==typeof Uint8Array&&a(Uint8Array),e=>k&&e instanceof k);var k;const j=c("HTMLFormElement"),I=(e=>{let{hasOwnProperty:t}=e;return(e,n)=>t.call(e,n)})(Object.prototype),P=c("RegExp"),D=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};C(n,((n,i)=>{let o;!1!==(o=t(n,i,e))&&(r[i]=o||n)})),Object.defineProperties(e,r)},A="abcdefghijklmnopqrstuvwxyz",R="0123456789",M={DIGIT:R,ALPHA:A,ALPHA_DIGIT:A+A.toUpperCase()+R};const L=c("AsyncFunction"),F={isArray:d,isArrayBuffer:p,isBuffer:function(e){return null!==e&&!h(e)&&null!==e.constructor&&!h(e.constructor)&&m(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"===typeof FormData&&e instanceof FormData||m(e.append)&&("formdata"===(t=s(e))||"object"===t&&m(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&p(e.buffer),t},isString:f,isNumber:g,isBoolean:e=>!0===e||!1===e,isObject:v,isPlainObject:y,isUndefined:h,isDate:b,isFile:x,isBlob:w,isRegExp:P,isFunction:m,isStream:e=>v(e)&&m(e.pipe),isURLSearchParams:_,isTypedArray:N,isFileList:S,forEach:C,merge:function e(){const{caseless:t}=O(this)&&this||{},n={},r=(r,i)=>{const o=t&&E(n,i)||i;y(n[o])&&y(r)?n[o]=e(n[o],r):y(r)?n[o]=e({},r):d(r)?n[o]=r.slice():n[o]=r};for(let i=0,o=arguments.length;i<o;i++)arguments[i]&&C(arguments[i],r);return n},extend:function(e,t,n){let{allOwnKeys:r}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return C(t,((t,r)=>{n&&m(t)?e[r]=i(t,n):e[r]=t}),{allOwnKeys:r}),e},trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let i,o,s;const l={};if(t=t||{},null==e)return t;do{for(i=Object.getOwnPropertyNames(e),o=i.length;o-- >0;)s=i[o],r&&!r(s,e,t)||l[s]||(t[s]=e[s],l[s]=!0);e=!1!==n&&a(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:s,kindOfTest:c,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(d(e))return e;let t=e.length;if(!g(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:j,hasOwnProperty:I,hasOwnProp:I,reduceDescriptors:D,freezeMethods:e=>{D(e,((t,n)=>{if(m(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];m(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return d(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:E,global:T,isContextDefined:O,ALPHABET:M,generateString:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:M.ALPHA_DIGIT,n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&m(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(v(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const i=d(e)?[]:{};return C(e,((e,t)=>{const o=n(e,r+1);!h(o)&&(i[t]=o)})),t[r]=void 0,i}}return e};return n(e,0)},isAsyncFn:L,isThenable:e=>e&&(v(e)||m(e))&&m(e.then)&&m(e.catch)};function z(e,t,n,r,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i)}F.inherits(z,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:F.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const B=z.prototype,U={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{U[e]={value:e}})),Object.defineProperties(z,U),Object.defineProperty(B,"isAxiosError",{value:!0}),z.from=(e,t,n,r,i,o)=>{const a=Object.create(B);return F.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),z.call(a,e.message,t,n,r,i),a.cause=e,a.name=e.name,o&&Object.assign(a,o),a};const H=z,V=null;function G(e){return F.isPlainObject(e)||F.isArray(e)}function W(e){return F.endsWith(e,"[]")?e.slice(0,-2):e}function q(e,t,n){return e?e.concat(t).map((function(e,t){return e=W(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const Z=F.toFlatObject(F,{},null,(function(e){return/^is[A-Z]/.test(e)}));const Y=function(e,t,n){if(!F.isObject(e))throw new TypeError("target must be an object");t=t||new(V||FormData);const r=(n=F.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!F.isUndefined(t[e])}))).metaTokens,i=n.visitor||c,o=n.dots,a=n.indexes,s=(n.Blob||"undefined"!==typeof Blob&&Blob)&&F.isSpecCompliantForm(t);if(!F.isFunction(i))throw new TypeError("visitor must be a function");function l(e){if(null===e)return"";if(F.isDate(e))return e.toISOString();if(!s&&F.isBlob(e))throw new H("Blob is not supported. Use a Buffer instead.");return F.isArrayBuffer(e)||F.isTypedArray(e)?s&&"function"===typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,n,i){let s=e;if(e&&!i&&"object"===typeof e)if(F.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(F.isArray(e)&&function(e){return F.isArray(e)&&!e.some(G)}(e)||(F.isFileList(e)||F.endsWith(n,"[]"))&&(s=F.toArray(e)))return n=W(n),s.forEach((function(e,r){!F.isUndefined(e)&&null!==e&&t.append(!0===a?q([n],r,o):null===a?n:n+"[]",l(e))})),!1;return!!G(e)||(t.append(q(i,n,o),l(e)),!1)}const u=[],d=Object.assign(Z,{defaultVisitor:c,convertValue:l,isVisitable:G});if(!F.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!F.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+r.join("."));u.push(n),F.forEach(n,(function(n,o){!0===(!(F.isUndefined(n)||null===n)&&i.call(t,n,F.isString(o)?o.trim():o,r,d))&&e(n,r?r.concat(o):[o])})),u.pop()}}(e),t};function K(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Q(e,t){this._pairs=[],e&&Y(e,this,t)}const X=Q.prototype;X.append=function(e,t){this._pairs.push([e,t])},X.toString=function(e){const t=e?function(t){return e.call(this,t,K)}:K;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const $=Q;function J(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ee(e,t,n){if(!t)return e;const r=n&&n.encode||J,i=n&&n.serialize;let o;if(o=i?i(t,n):F.isURLSearchParams(t)?t.toString():new $(t,n).toString(r),o){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}const te=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){F.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},ne={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},re={isBrowser:!0,classes:{URLSearchParams:"undefined"!==typeof URLSearchParams?URLSearchParams:$,FormData:"undefined"!==typeof FormData?FormData:null,Blob:"undefined"!==typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},ie="undefined"!==typeof window&&"undefined"!==typeof document,oe=(ae="undefined"!==typeof navigator&&navigator.product,ie&&["ReactNative","NativeScript","NS"].indexOf(ae)<0);var ae;const se="undefined"!==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"===typeof self.importScripts,le={...r,...re};const ce=function(e){function t(e,n,r,i){let o=e[i++];if("__proto__"===o)return!0;const a=Number.isFinite(+o),s=i>=e.length;if(o=!o&&F.isArray(r)?r.length:o,s)return F.hasOwnProp(r,o)?r[o]=[r[o],n]:r[o]=n,!a;r[o]&&F.isObject(r[o])||(r[o]=[]);return t(e,n,r[o],i)&&F.isArray(r[o])&&(r[o]=function(e){const t={},n=Object.keys(e);let r;const i=n.length;let o;for(r=0;r<i;r++)o=n[r],t[o]=e[o];return t}(r[o])),!a}if(F.isFormData(e)&&F.isFunction(e.entries)){const n={};return F.forEachEntry(e,((e,r)=>{t(function(e){return F.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null};const ue={transitional:ne,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,i=F.isObject(e);i&&F.isHTMLForm(e)&&(e=new FormData(e));if(F.isFormData(e))return r?JSON.stringify(ce(e)):e;if(F.isArrayBuffer(e)||F.isBuffer(e)||F.isStream(e)||F.isFile(e)||F.isBlob(e))return e;if(F.isArrayBufferView(e))return e.buffer;if(F.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let o;if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Y(e,new le.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return le.isNode&&F.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((o=F.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Y(o?{"files[]":e}:e,t&&new t,this.formSerializer)}}return i||r?(t.setContentType("application/json",!1),function(e,t,n){if(F.isString(e))try{return(t||JSON.parse)(e),F.trim(e)}catch(r){if("SyntaxError"!==r.name)throw r}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||ue.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&F.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(i){if(n){if("SyntaxError"===i.name)throw H.from(i,H.ERR_BAD_RESPONSE,this,null,this.response);throw i}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:le.classes.FormData,Blob:le.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};F.forEach(["delete","get","head","post","put","patch"],(e=>{ue.headers[e]={}}));const de=ue,he=F.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),pe=Symbol("internals");function fe(e){return e&&String(e).trim().toLowerCase()}function me(e){return!1===e||null==e?e:F.isArray(e)?e.map(me):String(e)}function ge(e,t,n,r,i){return F.isFunction(r)?r.call(this,t,n):(i&&(t=n),F.isString(t)?F.isString(r)?-1!==t.indexOf(r):F.isRegExp(r)?r.test(t):void 0:void 0)}class ve{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function i(e,t,n){const i=fe(t);if(!i)throw new Error("header name must be a non-empty string");const o=F.findKey(r,i);(!o||void 0===r[o]||!0===n||void 0===n&&!1!==r[o])&&(r[o||t]=me(e))}const o=(e,t)=>F.forEach(e,((e,n)=>i(e,n,t)));return F.isPlainObject(e)||e instanceof this.constructor?o(e,t):F.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?o((e=>{const t={};let n,r,i;return e&&e.split("\n").forEach((function(e){i=e.indexOf(":"),n=e.substring(0,i).trim().toLowerCase(),r=e.substring(i+1).trim(),!n||t[n]&&he[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t):null!=e&&i(t,e,n),this}get(e,t){if(e=fe(e)){const n=F.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(F.isFunction(t))return t.call(this,e,n);if(F.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=fe(e)){const n=F.findKey(this,e);return!(!n||void 0===this[n]||t&&!ge(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function i(e){if(e=fe(e)){const i=F.findKey(n,e);!i||t&&!ge(0,n[i],i,t)||(delete n[i],r=!0)}}return F.isArray(e)?e.forEach(i):i(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const i=t[n];e&&!ge(0,this[i],i,e,!0)||(delete this[i],r=!0)}return r}normalize(e){const t=this,n={};return F.forEach(this,((r,i)=>{const o=F.findKey(n,i);if(o)return t[o]=me(r),void delete t[i];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(i):String(i).trim();a!==i&&delete t[i],t[a]=me(r),n[a]=!0})),this}concat(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.constructor.concat(this,...t)}toJSON(e){const t=Object.create(null);return F.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&F.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((e=>{let[t,n]=e;return t+": "+n})).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e){const t=new this(e);for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return r.forEach((e=>t.set(e))),t}static accessor(e){const t=(this[pe]=this[pe]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=fe(e);t[r]||(!function(e,t){const n=F.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,i){return this[r].call(this,t,e,n,i)},configurable:!0})}))}(n,e),t[r]=!0)}return F.isArray(e)?e.forEach(r):r(e),this}}ve.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),F.reduceDescriptors(ve.prototype,((e,t)=>{let{value:n}=e,r=t[0].toUpperCase()+t.slice(1);return{get:()=>n,set(e){this[r]=e}}})),F.freezeMethods(ve);const ye=ve;function be(e,t){const n=this||de,r=t||n,i=ye.from(r.headers);let o=r.data;return F.forEach(e,(function(e){o=e.call(n,o,i.normalize(),t?t.status:void 0)})),i.normalize(),o}function xe(e){return!(!e||!e.__CANCEL__)}function we(e,t,n){H.call(this,null==e?"canceled":e,H.ERR_CANCELED,t,n),this.name="CanceledError"}F.inherits(we,H,{__CANCEL__:!0});const Se=we;const _e=le.hasStandardBrowserEnv?{write(e,t,n,r,i,o){const a=[e+"="+encodeURIComponent(t)];F.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),F.isString(r)&&a.push("path="+r),F.isString(i)&&a.push("domain="+i),!0===o&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Ce(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Ee=le.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=F.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0};const Te=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let i,o=0,a=0;return t=void 0!==t?t:1e3,function(s){const l=Date.now(),c=r[a];i||(i=l),n[o]=s,r[o]=l;let u=a,d=0;for(;u!==o;)d+=n[u++],u%=e;if(o=(o+1)%e,o===a&&(a=(a+1)%e),l-i<t)return;const h=c&&l-c;return h?Math.round(1e3*d/h):void 0}};function Oe(e,t){let n=0;const r=Te(50,250);return i=>{const o=i.loaded,a=i.lengthComputable?i.total:void 0,s=o-n,l=r(s);n=o;const c={loaded:o,total:a,progress:a?o/a:void 0,bytes:s,rate:l||void 0,estimated:l&&a&&o<=a?(a-o)/l:void 0,event:i};c[t?"download":"upload"]=!0,e(c)}}const Ne="undefined"!==typeof XMLHttpRequest,ke={http:V,xhr:Ne&&function(e){return new Promise((function(t,n){let r=e.data;const i=ye.from(e.headers).normalize();let o,a,{responseType:s,withXSRFToken:l}=e;function c(){e.cancelToken&&e.cancelToken.unsubscribe(o),e.signal&&e.signal.removeEventListener("abort",o)}if(F.isFormData(r))if(le.hasStandardBrowserEnv||le.hasStandardBrowserWebWorkerEnv)i.setContentType(!1);else if(!1!==(a=i.getContentType())){const[e,...t]=a?a.split(";").map((e=>e.trim())).filter(Boolean):[];i.setContentType([e||"multipart/form-data",...t].join("; "))}let u=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";i.set("Authorization","Basic "+btoa(t+":"+n))}const d=Ce(e.baseURL,e.url);function h(){if(!u)return;const r=ye.from("getAllResponseHeaders"in u&&u.getAllResponseHeaders());!function(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new H("Request failed with status code "+n.status,[H.ERR_BAD_REQUEST,H.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}((function(e){t(e),c()}),(function(e){n(e),c()}),{data:s&&"text"!==s&&"json"!==s?u.response:u.responseText,status:u.status,statusText:u.statusText,headers:r,config:e,request:u}),u=null}if(u.open(e.method.toUpperCase(),ee(d,e.params,e.paramsSerializer),!0),u.timeout=e.timeout,"onloadend"in u?u.onloadend=h:u.onreadystatechange=function(){u&&4===u.readyState&&(0!==u.status||u.responseURL&&0===u.responseURL.indexOf("file:"))&&setTimeout(h)},u.onabort=function(){u&&(n(new H("Request aborted",H.ECONNABORTED,e,u)),u=null)},u.onerror=function(){n(new H("Network Error",H.ERR_NETWORK,e,u)),u=null},u.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const r=e.transitional||ne;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new H(t,r.clarifyTimeoutError?H.ETIMEDOUT:H.ECONNABORTED,e,u)),u=null},le.hasStandardBrowserEnv&&(l&&F.isFunction(l)&&(l=l(e)),l||!1!==l&&Ee(d))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&_e.read(e.xsrfCookieName);t&&i.set(e.xsrfHeaderName,t)}void 0===r&&i.setContentType(null),"setRequestHeader"in u&&F.forEach(i.toJSON(),(function(e,t){u.setRequestHeader(t,e)})),F.isUndefined(e.withCredentials)||(u.withCredentials=!!e.withCredentials),s&&"json"!==s&&(u.responseType=e.responseType),"function"===typeof e.onDownloadProgress&&u.addEventListener("progress",Oe(e.onDownloadProgress,!0)),"function"===typeof e.onUploadProgress&&u.upload&&u.upload.addEventListener("progress",Oe(e.onUploadProgress)),(e.cancelToken||e.signal)&&(o=t=>{u&&(n(!t||t.type?new Se(null,e,u):t),u.abort(),u=null)},e.cancelToken&&e.cancelToken.subscribe(o),e.signal&&(e.signal.aborted?o():e.signal.addEventListener("abort",o)));const p=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(d);p&&-1===le.protocols.indexOf(p)?n(new H("Unsupported protocol "+p+":",H.ERR_BAD_REQUEST,e)):u.send(r||null)}))}};F.forEach(ke,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(n){}Object.defineProperty(e,"adapterName",{value:t})}}));const je=e=>"- ".concat(e),Ie=e=>F.isFunction(e)||null===e||!1===e,Pe={getAdapter:e=>{e=F.isArray(e)?e:[e];const{length:t}=e;let n,r;const i={};for(let o=0;o<t;o++){let t;if(n=e[o],r=n,!Ie(n)&&(r=ke[(t=String(n)).toLowerCase()],void 0===r))throw new H("Unknown adapter '".concat(t,"'"));if(r)break;i[t||"#"+o]=r}if(!r){const e=Object.entries(i).map((e=>{let[t,n]=e;return"adapter ".concat(t," ")+(!1===n?"is not supported by the environment":"is not available in the build")}));let n=t?e.length>1?"since :\n"+e.map(je).join("\n"):" "+je(e[0]):"as no adapter specified";throw new H("There is no suitable adapter to dispatch the request "+n,"ERR_NOT_SUPPORT")}return r},adapters:ke};function De(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Se(null,e)}function Ae(e){De(e),e.headers=ye.from(e.headers),e.data=be.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Pe.getAdapter(e.adapter||de.adapter)(e).then((function(t){return De(e),t.data=be.call(e,e.transformResponse,t),t.headers=ye.from(t.headers),t}),(function(t){return xe(t)||(De(e),t&&t.response&&(t.response.data=be.call(e,e.transformResponse,t.response),t.response.headers=ye.from(t.response.headers))),Promise.reject(t)}))}const Re=e=>e instanceof ye?{...e}:e;function Me(e,t){t=t||{};const n={};function r(e,t,n){return F.isPlainObject(e)&&F.isPlainObject(t)?F.merge.call({caseless:n},e,t):F.isPlainObject(t)?F.merge({},t):F.isArray(t)?t.slice():t}function i(e,t,n){return F.isUndefined(t)?F.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function o(e,t){if(!F.isUndefined(t))return r(void 0,t)}function a(e,t){return F.isUndefined(t)?F.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function s(n,i,o){return o in t?r(n,i):o in e?r(void 0,n):void 0}const l={url:o,method:o,data:o,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:(e,t)=>i(Re(e),Re(t),!0)};return F.forEach(Object.keys(Object.assign({},e,t)),(function(r){const o=l[r]||i,a=o(e[r],t[r],r);F.isUndefined(a)&&o!==s||(n[r]=a)})),n}const Le="1.6.8",Fe={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Fe[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const ze={};Fe.transitional=function(e,t,n){function r(e,t){return"[Axios v"+Le+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,i,o)=>{if(!1===e)throw new H(r(i," has been removed"+(t?" in "+t:"")),H.ERR_DEPRECATED);return t&&!ze[i]&&(ze[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,o)}};const Be={assertOptions:function(e,t,n){if("object"!==typeof e)throw new H("options must be an object",H.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let i=r.length;for(;i-- >0;){const o=r[i],a=t[o];if(a){const t=e[o],n=void 0===t||a(t,o,e);if(!0!==n)throw new H("option "+o+" must be "+n,H.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new H("Unknown option "+o,H.ERR_BAD_OPTION)}},validators:Fe},Ue=Be.validators;class He{constructor(e){this.defaults=e,this.interceptors={request:new te,response:new te}}async request(e,t){try{return await this._request(e,t)}catch(n){if(n instanceof Error){let e;Error.captureStackTrace?Error.captureStackTrace(e={}):e=new Error;const t=e.stack?e.stack.replace(/^.+\n/,""):"";n.stack?t&&!String(n.stack).endsWith(t.replace(/^.+\n.+\n/,""))&&(n.stack+="\n"+t):n.stack=t}throw n}}_request(e,t){"string"===typeof e?(t=t||{}).url=e:t=e||{},t=Me(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:i}=t;void 0!==n&&Be.assertOptions(n,{silentJSONParsing:Ue.transitional(Ue.boolean),forcedJSONParsing:Ue.transitional(Ue.boolean),clarifyTimeoutError:Ue.transitional(Ue.boolean)},!1),null!=r&&(F.isFunction(r)?t.paramsSerializer={serialize:r}:Be.assertOptions(r,{encode:Ue.function,serialize:Ue.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let o=i&&F.merge(i.common,i[t.method]);i&&F.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete i[e]})),t.headers=ye.concat(o,i);const a=[];let s=!0;this.interceptors.request.forEach((function(e){"function"===typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const l=[];let c;this.interceptors.response.forEach((function(e){l.push(e.fulfilled,e.rejected)}));let u,d=0;if(!s){const e=[Ae.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,l),u=e.length,c=Promise.resolve(t);d<u;)c=c.then(e[d++],e[d++]);return c}u=a.length;let h=t;for(d=0;d<u;){const e=a[d++],t=a[d++];try{h=e(h)}catch(p){t.call(this,p);break}}try{c=Ae.call(this,h)}catch(p){return Promise.reject(p)}for(d=0,u=l.length;d<u;)c=c.then(l[d++],l[d++]);return c}getUri(e){return ee(Ce((e=Me(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}F.forEach(["delete","get","head","options"],(function(e){He.prototype[e]=function(t,n){return this.request(Me(n||{},{method:e,url:t,data:(n||{}).data}))}})),F.forEach(["post","put","patch"],(function(e){function t(t){return function(n,r,i){return this.request(Me(i||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:r}))}}He.prototype[e]=t(),He.prototype[e+"Form"]=t(!0)}));const Ve=He;class Ge{constructor(e){if("function"!==typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const n=this;this.promise.then((e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,i){n.reason||(n.reason=new Se(e,r,i),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new Ge((function(t){e=t})),cancel:e}}}const We=Ge;const qe={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(qe).forEach((e=>{let[t,n]=e;qe[n]=t}));const Ze=qe;const Ye=function e(t){const n=new Ve(t),r=i(Ve.prototype.request,n);return F.extend(r,Ve.prototype,n,{allOwnKeys:!0}),F.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(Me(t,n))},r}(de);Ye.Axios=Ve,Ye.CanceledError=Se,Ye.CancelToken=We,Ye.isCancel=xe,Ye.VERSION=Le,Ye.toFormData=Y,Ye.AxiosError=H,Ye.Cancel=Ye.CanceledError,Ye.all=function(e){return Promise.all(e)},Ye.spread=function(e){return function(t){return e.apply(null,t)}},Ye.isAxiosError=function(e){return F.isObject(e)&&!0===e.isAxiosError},Ye.mergeConfig=Me,Ye.AxiosHeaders=ye,Ye.formToJSON=e=>ce(F.isHTMLForm(e)?new FormData(e):e),Ye.getAdapter=Pe.getAdapter,Ye.HttpStatusCode=Ze,Ye.default=Ye;const Ke=Ye},87555:(e,t,n)=>{"use strict";n.d(t,{$j:()=>se,I0:()=>pe,dC:()=>fe,oR:()=>ue,v9:()=>g,wU:()=>G,zt:()=>le});var r=n(68963),i=n(29074),o=r,a=Symbol.for("react-redux-context"),s="undefined"!==typeof globalThis?globalThis:{};function l(){var e;if(!o.createContext)return{};const t=null!==(e=s[a])&&void 0!==e?e:s[a]=new Map;let n=t.get(o.createContext);return n||(n=o.createContext(null),t.set(o.createContext,n)),n}var c=l(),u=()=>{throw new Error("uSES not initialized!")};function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c;return function(){return o.useContext(e)}}var h=d(),p=u,f=(e,t)=>e===t;function m(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c;const t=e===c?h:d(e),n=function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{equalityFn:r=f,devModeChecks:i={}}="function"===typeof n?{equalityFn:n}:n;const{store:a,subscription:s,getServerState:l,stabilityCheck:c,identityFunctionCheck:u}=t(),d=(o.useRef(!0),o.useCallback({[e.name]:t=>e(t)}[e.name],[e,c,i.stabilityCheck])),h=p(s.addNestedSub,a.getState,l||a.getState,d,r);return o.useDebugValue(h),h};return Object.assign(n,{withTypes:()=>n}),n}var g=m(),v=Symbol.for("react.element"),y=Symbol.for("react.portal"),b=Symbol.for("react.fragment"),x=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),S=Symbol.for("react.provider"),_=Symbol.for("react.context"),C=Symbol.for("react.server_context"),E=Symbol.for("react.forward_ref"),T=Symbol.for("react.suspense"),O=Symbol.for("react.suspense_list"),N=Symbol.for("react.memo"),k=Symbol.for("react.lazy"),j=(Symbol.for("react.offscreen"),Symbol.for("react.client.reference"),E),I=N;function P(e){if("object"===typeof e&&null!==e){const t=e.$$typeof;switch(t){case v:{const n=e.type;switch(n){case b:case w:case x:case T:case O:return n;default:{const e=n&&n.$$typeof;switch(e){case C:case _:case E:case k:case N:case S:return e;default:return t}}}}case y:return t}}}function D(e,t,n,r,i){let o,a,s,l,c,{areStatesEqual:u,areOwnPropsEqual:d,areStatePropsEqual:h}=i,p=!1;function f(i,p){const f=!d(p,a),m=!u(i,o,p,a);return o=i,a=p,f&&m?(s=e(o,a),t.dependsOnOwnProps&&(l=t(r,a)),c=n(s,l,a),c):f?(e.dependsOnOwnProps&&(s=e(o,a)),t.dependsOnOwnProps&&(l=t(r,a)),c=n(s,l,a),c):m?function(){const t=e(o,a),r=!h(t,s);return s=t,r&&(c=n(s,l,a)),c}():c}return function(i,u){return p?f(i,u):(o=i,a=u,s=e(o,a),l=t(r,a),c=n(s,l,a),p=!0,c)}}function A(e){return function(t){const n=e(t);function r(){return n}return r.dependsOnOwnProps=!1,r}}function R(e){return e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}function M(e,t){return function(t,n){let{displayName:r}=n;const i=function(e,t){return i.dependsOnOwnProps?i.mapToProps(e,t):i.mapToProps(e,void 0)};return i.dependsOnOwnProps=!0,i.mapToProps=function(t,n){i.mapToProps=e,i.dependsOnOwnProps=R(e);let r=i(t,n);return"function"===typeof r&&(i.mapToProps=r,i.dependsOnOwnProps=R(r),r=i(t,n)),r},i}}function L(e,t){return(n,r)=>{throw new Error("Invalid value of type ".concat(typeof e," for ").concat(t," argument when connecting component ").concat(r.wrappedComponentName,"."))}}function F(e,t,n){return{...n,...e,...t}}function z(e){e()}var B={notify(){},get:()=>[]};function U(e,t){let n,r=B,i=0,o=!1;function a(){c.onStateChange&&c.onStateChange()}function s(){i++,n||(n=t?t.addNestedSub(a):e.subscribe(a),r=function(){let e=null,t=null;return{clear(){e=null,t=null},notify(){z((()=>{let t=e;for(;t;)t.callback(),t=t.next}))},get(){const t=[];let n=e;for(;n;)t.push(n),n=n.next;return t},subscribe(n){let r=!0;const i=t={callback:n,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){r&&null!==e&&(r=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}())}function l(){i--,n&&0===i&&(n(),n=void 0,r.clear(),r=B)}const c={addNestedSub:function(e){s();const t=r.subscribe(e);let n=!1;return()=>{n||(n=!0,t(),l())}},notifyNestedSubs:function(){r.notify()},handleChangeWrapper:a,isSubscribed:function(){return o},trySubscribe:function(){o||(o=!0,s())},tryUnsubscribe:function(){o&&(o=!1,l())},getListeners:()=>r};return c}var H=!("undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement)?o.useLayoutEffect:o.useEffect;function V(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function G(e,t){if(V(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let i=0;i<n.length;i++)if(!Object.prototype.hasOwnProperty.call(t,n[i])||!V(e[n[i]],t[n[i]]))return!1;return!0}var W={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},q={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},Z={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},Y={[j]:{$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},[I]:Z};function K(e){return P(e)===N?Z:Y[e.$$typeof]||W}var Q=Object.defineProperty,X=Object.getOwnPropertyNames,$=Object.getOwnPropertySymbols,J=Object.getOwnPropertyDescriptor,ee=Object.getPrototypeOf,te=Object.prototype;function ne(e,t){if("string"!==typeof t){if(te){const n=ee(t);n&&n!==te&&ne(e,n)}let r=X(t);$&&(r=r.concat($(t)));const i=K(e),o=K(t);for(let a=0;a<r.length;++a){const s=r[a];if(!q[s]&&(!o||!o[s])&&(!i||!i[s])){const r=J(t,s);try{Q(e,s,r)}catch(n){}}}}return e}var re=u,ie=[null,null];function oe(e,t,n,r,i,o){e.current=r,n.current=!1,i.current&&(i.current=null,o())}function ae(e,t){return e===t}var se=function(e,t,n){let{pure:r,areStatesEqual:i=ae,areOwnPropsEqual:a=G,areStatePropsEqual:s=G,areMergedPropsEqual:l=G,forwardRef:u=!1,context:d=c}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const h=d,p=function(e){return e?"function"===typeof e?M(e):L(e,"mapStateToProps"):A((()=>({})))}(e),f=function(e){return e&&"object"===typeof e?A((t=>function(e,t){const n={};for(const r in e){const i=e[r];"function"===typeof i&&(n[r]=function(){return t(i(...arguments))})}return n}(e,t))):e?"function"===typeof e?M(e):L(e,"mapDispatchToProps"):A((e=>({dispatch:e})))}(t),m=function(e){return e?"function"===typeof e?function(e){return function(t,n){let r,{displayName:i,areMergedPropsEqual:o}=n,a=!1;return function(t,n,i){const s=e(t,n,i);return a?o(s,r)||(r=s):(a=!0,r=s),r}}}(e):L(e,"mergeProps"):()=>F}(n),g=Boolean(e);return e=>{const t=e.displayName||e.name||"Component",n="Connect(".concat(t,")"),r={shouldHandleStateChanges:g,displayName:n,wrappedComponentName:t,WrappedComponent:e,initMapStateToProps:p,initMapDispatchToProps:f,initMergeProps:m,areStatesEqual:i,areStatePropsEqual:s,areOwnPropsEqual:a,areMergedPropsEqual:l};function c(t){const[n,i,a]=o.useMemo((()=>{const{reactReduxForwardedRef:e,...n}=t;return[t.context,e,n]}),[t]),s=o.useMemo((()=>{let e=h;return null!==n&&void 0!==n&&n.Consumer,e}),[n,h]),l=o.useContext(s),c=Boolean(t.store)&&Boolean(t.store.getState)&&Boolean(t.store.dispatch),u=Boolean(l)&&Boolean(l.store);const d=c?t.store:l.store,p=u?l.getServerState:d.getState,f=o.useMemo((()=>function(e,t){let{initMapStateToProps:n,initMapDispatchToProps:r,initMergeProps:i,...o}=t;return D(n(e,o),r(e,o),i(e,o),e,o)}(d.dispatch,r)),[d]),[m,v]=o.useMemo((()=>{if(!g)return ie;const e=U(d,c?void 0:l.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[d,c,l]),y=o.useMemo((()=>c?l:{...l,subscription:m}),[c,l,m]),b=o.useRef(),x=o.useRef(a),w=o.useRef(),S=o.useRef(!1),_=(o.useRef(!1),o.useRef(!1)),C=o.useRef();H((()=>(_.current=!0,()=>{_.current=!1})),[]);const E=o.useMemo((()=>()=>w.current&&a===x.current?w.current:f(d.getState(),a)),[d,a]),T=o.useMemo((()=>e=>m?function(e,t,n,r,i,o,a,s,l,c,u){if(!e)return()=>{};let d=!1,h=null;const p=()=>{if(d||!s.current)return;const e=t.getState();let n,p;try{n=r(e,i.current)}catch(f){p=f,h=f}p||(h=null),n===o.current?a.current||c():(o.current=n,l.current=n,a.current=!0,u())};return n.onStateChange=p,n.trySubscribe(),p(),()=>{if(d=!0,n.tryUnsubscribe(),n.onStateChange=null,h)throw h}}(g,d,m,f,x,b,S,_,w,v,e):()=>{}),[m]);var O,N,k;let j;O=oe,N=[x,b,S,a,w,v],H((()=>O(...N)),k);try{j=re(T,E,p?()=>f(p(),a):E)}catch(P){throw C.current&&(P.message+="\nThe error may be correlated with this previous error:\n".concat(C.current.stack,"\n\n")),P}H((()=>{C.current=void 0,w.current=void 0,b.current=j}));const I=o.useMemo((()=>o.createElement(e,{...j,ref:i})),[i,e,j]);return o.useMemo((()=>g?o.createElement(s.Provider,{value:y},I):I),[s,I,y])}const d=o.memo(c);if(d.WrappedComponent=e,d.displayName=c.displayName=n,u){const t=o.forwardRef((function(e,t){return o.createElement(d,{...e,reactReduxForwardedRef:t})}));return t.displayName=n,t.WrappedComponent=e,ne(t,e)}return ne(d,e)}};var le=function(e){let{store:t,context:n,children:r,serverState:i,stabilityCheck:a="once",identityFunctionCheck:s="once"}=e;const l=o.useMemo((()=>{const e=U(t);return{store:t,subscription:e,getServerState:i?()=>i:void 0,stabilityCheck:a,identityFunctionCheck:s}}),[t,i,a,s]),u=o.useMemo((()=>t.getState()),[t]);H((()=>{const{subscription:e}=l;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),u!==t.getState()&&e.notifyNestedSubs(),()=>{e.tryUnsubscribe(),e.onStateChange=void 0}}),[l,u]);const d=n||c;return o.createElement(d.Provider,{value:l},r)};function ce(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c;const t=e===c?h:d(e),n=()=>{const{store:e}=t();return e};return Object.assign(n,{withTypes:()=>n}),n}var ue=ce();function de(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c;const t=e===c?ue:ce(e),n=()=>t().dispatch;return Object.assign(n,{withTypes:()=>n}),n}var he,pe=de(),fe=z;he=i.useSyncExternalStoreWithSelector,p=he,(e=>{re=e})(r.useSyncExternalStore)},38907:(e,t,n)=>{"use strict";function r(e){return"Minified Redux error #".concat(e,"; visit https://redux.js.org/Errors?code=").concat(e," for the full message or use the non-minified dev environment for full errors. ")}n.d(t,{DE:()=>d,LG:()=>f,MT:()=>l,PO:()=>s,UY:()=>c,md:()=>p,qC:()=>h});var i=(()=>"function"===typeof Symbol&&Symbol.observable||"@@observable")(),o=()=>Math.random().toString(36).substring(7).split("").join("."),a={INIT:"@@redux/INIT".concat(o()),REPLACE:"@@redux/REPLACE".concat(o()),PROBE_UNKNOWN_ACTION:()=>"@@redux/PROBE_UNKNOWN_ACTION".concat(o())};function s(e){if("object"!==typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function l(e,t,n){if("function"!==typeof e)throw new Error(r(2));if("function"===typeof t&&"function"===typeof n||"function"===typeof n&&"function"===typeof arguments[3])throw new Error(r(0));if("function"===typeof t&&"undefined"===typeof n&&(n=t,t=void 0),"undefined"!==typeof n){if("function"!==typeof n)throw new Error(r(1));return n(l)(e,t)}let o=e,c=t,u=new Map,d=u,h=0,p=!1;function f(){d===u&&(d=new Map,u.forEach(((e,t)=>{d.set(t,e)})))}function m(){if(p)throw new Error(r(3));return c}function g(e){if("function"!==typeof e)throw new Error(r(4));if(p)throw new Error(r(5));let t=!0;f();const n=h++;return d.set(n,e),function(){if(t){if(p)throw new Error(r(6));t=!1,f(),d.delete(n),u=null}}}function v(e){if(!s(e))throw new Error(r(7));if("undefined"===typeof e.type)throw new Error(r(8));if("string"!==typeof e.type)throw new Error(r(17));if(p)throw new Error(r(9));try{p=!0,c=o(c,e)}finally{p=!1}return(u=d).forEach((e=>{e()})),e}v({type:a.INIT});return{dispatch:v,subscribe:g,getState:m,replaceReducer:function(e){if("function"!==typeof e)throw new Error(r(10));o=e,v({type:a.REPLACE})},[i]:function(){const e=g;return{subscribe(t){if("object"!==typeof t||null===t)throw new Error(r(11));function n(){const e=t;e.next&&e.next(m())}n();return{unsubscribe:e(n)}},[i](){return this}}}}}function c(e){const t=Object.keys(e),n={};for(let r=0;r<t.length;r++){const i=t[r];0,"function"===typeof e[i]&&(n[i]=e[i])}const i=Object.keys(n);let o;try{!function(e){Object.keys(e).forEach((t=>{const n=e[t];if("undefined"===typeof n(void 0,{type:a.INIT}))throw new Error(r(12));if("undefined"===typeof n(void 0,{type:a.PROBE_UNKNOWN_ACTION()}))throw new Error(r(13))}))}(n)}catch(s){o=s}return function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;if(o)throw o;let a=!1;const s={};for(let o=0;o<i.length;o++){const l=i[o],c=n[l],u=e[l],d=c(u,t);if("undefined"===typeof d){t&&t.type;throw new Error(r(14))}s[l]=d,a=a||d!==u}return a=a||i.length!==Object.keys(e).length,a?s:e}}function u(e,t){return function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return t(e.apply(this,r))}}function d(e,t){if("function"===typeof e)return u(e,t);if("object"!==typeof e||null===e)throw new Error(r(16));const n={};for(const r in e){const i=e[r];"function"===typeof i&&(n[r]=u(i,t))}return n}function h(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?e=>e:1===t.length?t[0]:t.reduce(((e,t)=>function(){return e(t(...arguments))}))}function p(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return e=>(n,i)=>{const o=e(n,i);let a=()=>{throw new Error(r(15))};const s={getState:o.getState,dispatch:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return a(e,...n)}},l=t.map((e=>e(s)));return a=h(...l)(o.dispatch),{...o,dispatch:a}}}function f(e){return s(e)&&"type"in e&&"string"===typeof e.type}},36313:(e,t,n)=>{"use strict";n.d(t,{P1:()=>h,kO:()=>u,wN:()=>d});n(64572);function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"expected a function, instead received ".concat(typeof e);if("function"!==typeof e)throw new TypeError(t)}var i=e=>Array.isArray(e)?e:[e];function o(e){const t=Array.isArray(e[0])?e[0]:e;return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"expected all items to be functions, instead received the following types: ";if(!e.every((e=>"function"===typeof e))){const n=e.map((e=>"function"===typeof e?"function ".concat(e.name||"unnamed","()"):typeof e)).join(", ");throw new TypeError("".concat(t,"[").concat(n,"]"))}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}Symbol(),Object.getPrototypeOf({});var a="undefined"!==typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},s=0,l=1;function c(){return{s:s,v:void 0,o:null,p:null}}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=c();const{resultEqualityCheck:r}=t;let i,o=0;function s(){let t=n;const{length:s}=arguments;for(let e=0,n=s;e<n;e++){const n=arguments[e];if("function"===typeof n||"object"===typeof n&&null!==n){let e=t.o;null===e&&(t.o=e=new WeakMap);const r=e.get(n);void 0===r?(t=c(),e.set(n,t)):t=r}else{let e=t.p;null===e&&(t.p=e=new Map);const r=e.get(n);void 0===r?(t=c(),e.set(n,t)):t=r}}const u=t;let d;if(t.s===l?d=t.v:(d=e.apply(null,arguments),o++),u.s=l,r){var h,p,f;const e=null!==(h=null===(p=i)||void 0===p||null===(f=p.deref)||void 0===f?void 0:f.call(p))&&void 0!==h?h:i;null!=e&&r(e,d)&&(d=e,0!==o&&o--);i="object"===typeof d&&null!==d||"function"===typeof d?new a(d):d}return u.v=d,d}return s.clearCache=()=>{n=c(),s.resetResultsCount()},s.resultsCount=()=>o,s.resetResultsCount=()=>{o=0},s}function d(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];const s="function"===typeof e?{memoize:e,memoizeOptions:n}:e,l=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];let a,l=0,c=0,d={},h=t.pop();"object"===typeof h&&(d=h,h=t.pop()),r(h,"createSelector expects an output function after the inputs, but received: [".concat(typeof h,"]"));const p={...s,...d},{memoize:f,memoizeOptions:m=[],argsMemoize:g=u,argsMemoizeOptions:v=[],devModeChecks:y={}}=p,b=i(m),x=i(v),w=o(t),S=f((function(){return l++,h.apply(null,arguments)}),...b);const _=g((function(){c++;const e=function(e,t){const n=[],{length:r}=e;for(let i=0;i<r;i++)n.push(e[i].apply(null,t));return n}(w,arguments);return a=S.apply(null,e),a}),...x);return Object.assign(_,{resultFunc:h,memoizedResultFunc:S,dependencies:w,dependencyRecomputations:()=>c,resetDependencyRecomputations:()=>{c=0},lastResult:()=>a,recomputations:()=>l,resetRecomputations:()=>{l=0},memoize:f,argsMemoize:g})};return Object.assign(l,{withTypes:()=>l}),l}var h=d(u),p=Object.assign((function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h;!function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"expected an object, instead received ".concat(typeof e);if("object"!==typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ".concat(typeof e));const n=Object.keys(e),r=t(n.map((t=>e[t])),(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.reduce(((e,t,r)=>(e[n[r]]=t,e)),{})}));return r}),{withTypes:()=>p})},95097:(e,t,n)=>{"use strict";n.d(t,{_T:()=>r});function r(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n}Object.create;Object.create;"function"===typeof SuppressedError&&SuppressedError},95408:(e,t,n)=>{"use strict";var r,i;n.d(t,{z:()=>bt}),function(e){e.assertEqual=e=>e,e.assertIs=function(e){},e.assertNever=function(e){throw new Error},e.arrayToEnum=e=>{const t={};for(const n of e)t[n]=n;return t},e.getValidEnumValues=t=>{const n=e.objectKeys(t).filter((e=>"number"!==typeof t[t[e]])),r={};for(const e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map((function(e){return t[e]})),e.objectKeys="function"===typeof Object.keys?e=>Object.keys(e):e=>{const t=[];for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(const n of e)if(t(n))return n},e.isInteger="function"===typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"===typeof e&&isFinite(e)&&Math.floor(e)===e,e.joinValues=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" | ";return e.map((e=>"string"===typeof e?"'".concat(e,"'"):e)).join(t)},e.jsonStringifyReplacer=(e,t)=>"bigint"===typeof t?t.toString():t}(r||(r={})),function(e){e.mergeShapes=(e,t)=>({...e,...t})}(i||(i={}));const o=r.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),a=e=>{switch(typeof e){case"undefined":return o.undefined;case"string":return o.string;case"number":return isNaN(e)?o.nan:o.number;case"boolean":return o.boolean;case"function":return o.function;case"bigint":return o.bigint;case"symbol":return o.symbol;case"object":return Array.isArray(e)?o.array:null===e?o.null:e.then&&"function"===typeof e.then&&e.catch&&"function"===typeof e.catch?o.promise:"undefined"!==typeof Map&&e instanceof Map?o.map:"undefined"!==typeof Set&&e instanceof Set?o.set:"undefined"!==typeof Date&&e instanceof Date?o.date:o.object;default:return o.unknown}},s=r.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class l extends Error{constructor(e){var t;super(),t=this,this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];t.issues=[...t.issues,...e]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){const t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(const i of e.issues)if("invalid_union"===i.code)i.unionErrors.map(r);else if("invalid_return_type"===i.code)r(i.returnTypeError);else if("invalid_arguments"===i.code)r(i.argumentsError);else if(0===i.path.length)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){const n=i.path[r];r===i.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(this),n}static assert(e){if(!(e instanceof l))throw new Error("Not a ZodError: ".concat(e))}toString(){return this.message}get message(){return JSON.stringify(this.issues,r.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e=>e.message;const t={},n=[];for(const r of this.issues)r.path.length>0?(t[r.path[0]]=t[r.path[0]]||[],t[r.path[0]].push(e(r))):n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}}l.create=e=>new l(e);const c=(e,t)=>{let n;switch(e.code){case s.invalid_type:n=e.received===o.undefined?"Required":"Expected ".concat(e.expected,", received ").concat(e.received);break;case s.invalid_literal:n="Invalid literal value, expected ".concat(JSON.stringify(e.expected,r.jsonStringifyReplacer));break;case s.unrecognized_keys:n="Unrecognized key(s) in object: ".concat(r.joinValues(e.keys,", "));break;case s.invalid_union:n="Invalid input";break;case s.invalid_union_discriminator:n="Invalid discriminator value. Expected ".concat(r.joinValues(e.options));break;case s.invalid_enum_value:n="Invalid enum value. Expected ".concat(r.joinValues(e.options),", received '").concat(e.received,"'");break;case s.invalid_arguments:n="Invalid function arguments";break;case s.invalid_return_type:n="Invalid function return type";break;case s.invalid_date:n="Invalid date";break;case s.invalid_string:"object"===typeof e.validation?"includes"in e.validation?(n='Invalid input: must include "'.concat(e.validation.includes,'"'),"number"===typeof e.validation.position&&(n="".concat(n," at one or more positions greater than or equal to ").concat(e.validation.position))):"startsWith"in e.validation?n='Invalid input: must start with "'.concat(e.validation.startsWith,'"'):"endsWith"in e.validation?n='Invalid input: must end with "'.concat(e.validation.endsWith,'"'):r.assertNever(e.validation):n="regex"!==e.validation?"Invalid ".concat(e.validation):"Invalid";break;case s.too_small:n="array"===e.type?"Array must contain ".concat(e.exact?"exactly":e.inclusive?"at least":"more than"," ").concat(e.minimum," element(s)"):"string"===e.type?"String must contain ".concat(e.exact?"exactly":e.inclusive?"at least":"over"," ").concat(e.minimum," character(s)"):"number"===e.type?"Number must be ".concat(e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than ").concat(e.minimum):"date"===e.type?"Date must be ".concat(e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than ").concat(new Date(Number(e.minimum))):"Invalid input";break;case s.too_big:n="array"===e.type?"Array must contain ".concat(e.exact?"exactly":e.inclusive?"at most":"less than"," ").concat(e.maximum," element(s)"):"string"===e.type?"String must contain ".concat(e.exact?"exactly":e.inclusive?"at most":"under"," ").concat(e.maximum," character(s)"):"number"===e.type?"Number must be ".concat(e.exact?"exactly":e.inclusive?"less than or equal to":"less than"," ").concat(e.maximum):"bigint"===e.type?"BigInt must be ".concat(e.exact?"exactly":e.inclusive?"less than or equal to":"less than"," ").concat(e.maximum):"date"===e.type?"Date must be ".concat(e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"," ").concat(new Date(Number(e.maximum))):"Invalid input";break;case s.custom:n="Invalid input";break;case s.invalid_intersection_types:n="Intersection results could not be merged";break;case s.not_multiple_of:n="Number must be a multiple of ".concat(e.multipleOf);break;case s.not_finite:n="Number must be finite";break;default:n=t.defaultError,r.assertNever(e)}return{message:n}};let u=c;function d(){return u}const h=e=>{const{data:t,path:n,errorMaps:r,issueData:i}=e,o=[...n,...i.path||[]],a={...i,path:o};if(void 0!==i.message)return{...i,path:o,message:i.message};let s="";const l=r.filter((e=>!!e)).slice().reverse();for(const c of l)s=c(a,{data:t,defaultError:s}).message;return{...i,path:o,message:s}};function p(e,t){const n=d(),r=h({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===c?void 0:c].filter((e=>!!e))});e.common.issues.push(r)}class f{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(e,t){const n=[];for(const r of t){if("aborted"===r.status)return m;"dirty"===r.status&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,t){const n=[];for(const r of t){const e=await r.key,t=await r.value;n.push({key:e,value:t})}return f.mergeObjectSync(e,n)}static mergeObjectSync(e,t){const n={};for(const r of t){const{key:t,value:i}=r;if("aborted"===t.status)return m;if("aborted"===i.status)return m;"dirty"===t.status&&e.dirty(),"dirty"===i.status&&e.dirty(),"__proto__"===t.value||"undefined"===typeof i.value&&!r.alwaysSet||(n[t.value]=i.value)}return{status:e.value,value:n}}}const m=Object.freeze({status:"aborted"}),g=e=>({status:"dirty",value:e}),v=e=>({status:"valid",value:e}),y=e=>"aborted"===e.status,b=e=>"dirty"===e.status,x=e=>"valid"===e.status,w=e=>"undefined"!==typeof Promise&&e instanceof Promise;function S(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"===typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function _(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"===typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?i.call(e,n):i?i.value=n:t.set(e,n),n}var C,E,T;"function"===typeof SuppressedError&&SuppressedError,function(e){e.errToObj=e=>"string"===typeof e?{message:e}:e||{},e.toString=e=>"string"===typeof e?e:null===e||void 0===e?void 0:e.message}(C||(C={}));class O{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const N=(e,t)=>{if(x(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const t=new l(e.common.issues);return this._error=t,this._error}}};function k(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw new Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');if(t)return{errorMap:t,description:i};return{errorMap:(t,i)=>{var o,a;const{message:s}=e;return"invalid_enum_value"===t.code?{message:null!==s&&void 0!==s?s:i.defaultError}:"undefined"===typeof i.data?{message:null!==(o=null!==s&&void 0!==s?s:r)&&void 0!==o?o:i.defaultError}:"invalid_type"!==t.code?{message:i.defaultError}:{message:null!==(a=null!==s&&void 0!==s?s:n)&&void 0!==a?a:i.defaultError}},description:i}}class j{constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(e){return a(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:a(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new f,ctx:{common:e.parent.common,data:e.data,parsedType:a(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const t=this._parse(e);if(w(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){const t=this._parse(e);return Promise.resolve(t)}parse(e,t){const n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){var n;const r={common:{issues:[],async:null!==(n=null===t||void 0===t?void 0:t.async)&&void 0!==n&&n,contextualErrorMap:null===t||void 0===t?void 0:t.errorMap},path:(null===t||void 0===t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:a(e)},i=this._parseSync({data:e,path:r.path,parent:r});return N(r,i)}async parseAsync(e,t){const n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){const n={common:{issues:[],contextualErrorMap:null===t||void 0===t?void 0:t.errorMap,async:!0},path:(null===t||void 0===t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:a(e)},r=this._parse({data:e,path:n.path,parent:n}),i=await(w(r)?r:Promise.resolve(r));return N(n,i)}refine(e,t){const n=e=>"string"===typeof t||"undefined"===typeof t?{message:t}:"function"===typeof t?t(e):t;return this._refinement(((t,r)=>{const i=e(t),o=()=>r.addIssue({code:s.custom,...n(t)});return"undefined"!==typeof Promise&&i instanceof Promise?i.then((e=>!!e||(o(),!1))):!!i||(o(),!1)}))}refinement(e,t){return this._refinement(((n,r)=>!!e(n)||(r.addIssue("function"===typeof t?t(n,r):t),!1)))}_refinement(e){return new Ce({schema:this,typeName:Me.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}optional(){return Ee.create(this,this._def)}nullable(){return Te.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return oe.create(this,this._def)}promise(){return _e.create(this,this._def)}or(e){return le.create([this,e],this._def)}and(e){return he.create(this,e,this._def)}transform(e){return new Ce({...k(this._def),schema:this,typeName:Me.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const t="function"===typeof e?e:()=>e;return new Oe({...k(this._def),innerType:this,defaultValue:t,typeName:Me.ZodDefault})}brand(){return new Ie({typeName:Me.ZodBranded,type:this,...k(this._def)})}catch(e){const t="function"===typeof e?e:()=>e;return new Ne({...k(this._def),innerType:this,catchValue:t,typeName:Me.ZodCatch})}describe(e){return new(0,this.constructor)({...this._def,description:e})}pipe(e){return Pe.create(this,e)}readonly(){return De.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const I=/^c[^\s-]{8,}$/i,P=/^[0-9a-z]+$/,D=/^[0-9A-HJKMNP-TV-Z]{26}$/,A=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,R=/^[a-z0-9_-]{21}$/i,M=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,L=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;let F;const z=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,B=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,U=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,H="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",V=new RegExp("^".concat(H,"$"));function G(e){let t="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return e.precision?t="".concat(t,"\\.\\d{").concat(e.precision,"}"):null==e.precision&&(t="".concat(t,"(\\.\\d+)?")),t}function W(e){let t="".concat(H,"T").concat(G(e));const n=[];return n.push(e.local?"Z?":"Z"),e.offset&&n.push("([+-]\\d{2}:?\\d{2})"),t="".concat(t,"(").concat(n.join("|"),")"),new RegExp("^".concat(t,"$"))}class q extends j{_parse(e){this._def.coerce&&(e.data=String(e.data));if(this._getType(e)!==o.string){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.string,received:t.parsedType}),m}const t=new f;let n;for(const o of this._def.checks)if("min"===o.kind)e.data.length<o.value&&(n=this._getOrReturnCtx(e,n),p(n,{code:s.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),t.dirty());else if("max"===o.kind)e.data.length>o.value&&(n=this._getOrReturnCtx(e,n),p(n,{code:s.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),t.dirty());else if("length"===o.kind){const r=e.data.length>o.value,i=e.data.length<o.value;(r||i)&&(n=this._getOrReturnCtx(e,n),r?p(n,{code:s.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):i&&p(n,{code:s.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),t.dirty())}else if("email"===o.kind)L.test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{validation:"email",code:s.invalid_string,message:o.message}),t.dirty());else if("emoji"===o.kind)F||(F=new RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),F.test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{validation:"emoji",code:s.invalid_string,message:o.message}),t.dirty());else if("uuid"===o.kind)A.test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{validation:"uuid",code:s.invalid_string,message:o.message}),t.dirty());else if("nanoid"===o.kind)R.test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{validation:"nanoid",code:s.invalid_string,message:o.message}),t.dirty());else if("cuid"===o.kind)I.test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{validation:"cuid",code:s.invalid_string,message:o.message}),t.dirty());else if("cuid2"===o.kind)P.test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{validation:"cuid2",code:s.invalid_string,message:o.message}),t.dirty());else if("ulid"===o.kind)D.test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{validation:"ulid",code:s.invalid_string,message:o.message}),t.dirty());else if("url"===o.kind)try{new URL(e.data)}catch(l){n=this._getOrReturnCtx(e,n),p(n,{validation:"url",code:s.invalid_string,message:o.message}),t.dirty()}else if("regex"===o.kind){o.regex.lastIndex=0;o.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{validation:"regex",code:s.invalid_string,message:o.message}),t.dirty())}else if("trim"===o.kind)e.data=e.data.trim();else if("includes"===o.kind)e.data.includes(o.value,o.position)||(n=this._getOrReturnCtx(e,n),p(n,{code:s.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),t.dirty());else if("toLowerCase"===o.kind)e.data=e.data.toLowerCase();else if("toUpperCase"===o.kind)e.data=e.data.toUpperCase();else if("startsWith"===o.kind)e.data.startsWith(o.value)||(n=this._getOrReturnCtx(e,n),p(n,{code:s.invalid_string,validation:{startsWith:o.value},message:o.message}),t.dirty());else if("endsWith"===o.kind)e.data.endsWith(o.value)||(n=this._getOrReturnCtx(e,n),p(n,{code:s.invalid_string,validation:{endsWith:o.value},message:o.message}),t.dirty());else if("datetime"===o.kind){W(o).test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{code:s.invalid_string,validation:"datetime",message:o.message}),t.dirty())}else if("date"===o.kind){V.test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{code:s.invalid_string,validation:"date",message:o.message}),t.dirty())}else if("time"===o.kind){new RegExp("^".concat(G(o),"$")).test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{code:s.invalid_string,validation:"time",message:o.message}),t.dirty())}else"duration"===o.kind?M.test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{validation:"duration",code:s.invalid_string,message:o.message}),t.dirty()):"ip"===o.kind?(i=e.data,("v4"!==(a=o.version)&&a||!z.test(i))&&("v6"!==a&&a||!B.test(i))&&(n=this._getOrReturnCtx(e,n),p(n,{validation:"ip",code:s.invalid_string,message:o.message}),t.dirty())):"base64"===o.kind?U.test(e.data)||(n=this._getOrReturnCtx(e,n),p(n,{validation:"base64",code:s.invalid_string,message:o.message}),t.dirty()):r.assertNever(o);var i,a;return{status:t.value,value:e.data}}_regex(e,t,n){return this.refinement((t=>e.test(t)),{validation:t,code:s.invalid_string,...C.errToObj(n)})}_addCheck(e){return new q({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...C.errToObj(e)})}url(e){return this._addCheck({kind:"url",...C.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...C.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...C.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...C.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...C.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...C.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...C.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...C.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...C.errToObj(e)})}datetime(e){var t,n;return"string"===typeof e?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:"undefined"===typeof(null===e||void 0===e?void 0:e.precision)?null:null===e||void 0===e?void 0:e.precision,offset:null!==(t=null===e||void 0===e?void 0:e.offset)&&void 0!==t&&t,local:null!==(n=null===e||void 0===e?void 0:e.local)&&void 0!==n&&n,...C.errToObj(null===e||void 0===e?void 0:e.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return"string"===typeof e?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:"undefined"===typeof(null===e||void 0===e?void 0:e.precision)?null:null===e||void 0===e?void 0:e.precision,...C.errToObj(null===e||void 0===e?void 0:e.message)})}duration(e){return this._addCheck({kind:"duration",...C.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...C.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:null===t||void 0===t?void 0:t.position,...C.errToObj(null===t||void 0===t?void 0:t.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...C.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...C.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...C.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...C.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...C.errToObj(t)})}nonempty(e){return this.min(1,C.errToObj(e))}trim(){return new q({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new q({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new q({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((e=>"datetime"===e.kind))}get isDate(){return!!this._def.checks.find((e=>"date"===e.kind))}get isTime(){return!!this._def.checks.find((e=>"time"===e.kind))}get isDuration(){return!!this._def.checks.find((e=>"duration"===e.kind))}get isEmail(){return!!this._def.checks.find((e=>"email"===e.kind))}get isURL(){return!!this._def.checks.find((e=>"url"===e.kind))}get isEmoji(){return!!this._def.checks.find((e=>"emoji"===e.kind))}get isUUID(){return!!this._def.checks.find((e=>"uuid"===e.kind))}get isNANOID(){return!!this._def.checks.find((e=>"nanoid"===e.kind))}get isCUID(){return!!this._def.checks.find((e=>"cuid"===e.kind))}get isCUID2(){return!!this._def.checks.find((e=>"cuid2"===e.kind))}get isULID(){return!!this._def.checks.find((e=>"ulid"===e.kind))}get isIP(){return!!this._def.checks.find((e=>"ip"===e.kind))}get isBase64(){return!!this._def.checks.find((e=>"base64"===e.kind))}get minLength(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}function Z(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,i=n>r?n:r;return parseInt(e.toFixed(i).replace(".",""))%parseInt(t.toFixed(i).replace(".",""))/Math.pow(10,i)}q.create=e=>{var t;return new q({checks:[],typeName:Me.ZodString,coerce:null!==(t=null===e||void 0===e?void 0:e.coerce)&&void 0!==t&&t,...k(e)})};class Y extends j{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){this._def.coerce&&(e.data=Number(e.data));if(this._getType(e)!==o.number){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.number,received:t.parsedType}),m}let t;const n=new f;for(const i of this._def.checks)if("int"===i.kind)r.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),p(t,{code:s.invalid_type,expected:"integer",received:"float",message:i.message}),n.dirty());else if("min"===i.kind){(i.inclusive?e.data<i.value:e.data<=i.value)&&(t=this._getOrReturnCtx(e,t),p(t,{code:s.too_small,minimum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),n.dirty())}else if("max"===i.kind){(i.inclusive?e.data>i.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),p(t,{code:s.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),n.dirty())}else"multipleOf"===i.kind?0!==Z(e.data,i.value)&&(t=this._getOrReturnCtx(e,t),p(t,{code:s.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):"finite"===i.kind?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),p(t,{code:s.not_finite,message:i.message}),n.dirty()):r.assertNever(i);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,C.toString(t))}gt(e,t){return this.setLimit("min",e,!1,C.toString(t))}lte(e,t){return this.setLimit("max",e,!0,C.toString(t))}lt(e,t){return this.setLimit("max",e,!1,C.toString(t))}setLimit(e,t,n,r){return new Y({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:C.toString(r)}]})}_addCheck(e){return new Y({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:C.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:C.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:C.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:C.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:C.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:C.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:C.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:C.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:C.toString(e)})}get minValue(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find((e=>"int"===e.kind||"multipleOf"===e.kind&&r.isInteger(e.value)))}get isFinite(){let e=null,t=null;for(const n of this._def.checks){if("finite"===n.kind||"int"===n.kind||"multipleOf"===n.kind)return!0;"min"===n.kind?(null===t||n.value>t)&&(t=n.value):"max"===n.kind&&(null===e||n.value<e)&&(e=n.value)}return Number.isFinite(t)&&Number.isFinite(e)}}Y.create=e=>new Y({checks:[],typeName:Me.ZodNumber,coerce:(null===e||void 0===e?void 0:e.coerce)||!1,...k(e)});class K extends j{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){this._def.coerce&&(e.data=BigInt(e.data));if(this._getType(e)!==o.bigint){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.bigint,received:t.parsedType}),m}let t;const n=new f;for(const i of this._def.checks)if("min"===i.kind){(i.inclusive?e.data<i.value:e.data<=i.value)&&(t=this._getOrReturnCtx(e,t),p(t,{code:s.too_small,type:"bigint",minimum:i.value,inclusive:i.inclusive,message:i.message}),n.dirty())}else if("max"===i.kind){(i.inclusive?e.data>i.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),p(t,{code:s.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),n.dirty())}else"multipleOf"===i.kind?e.data%i.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),p(t,{code:s.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):r.assertNever(i);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,C.toString(t))}gt(e,t){return this.setLimit("min",e,!1,C.toString(t))}lte(e,t){return this.setLimit("max",e,!0,C.toString(t))}lt(e,t){return this.setLimit("max",e,!1,C.toString(t))}setLimit(e,t,n,r){return new K({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:C.toString(r)}]})}_addCheck(e){return new K({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:C.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:C.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:C.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:C.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:C.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}K.create=e=>{var t;return new K({checks:[],typeName:Me.ZodBigInt,coerce:null!==(t=null===e||void 0===e?void 0:e.coerce)&&void 0!==t&&t,...k(e)})};class Q extends j{_parse(e){this._def.coerce&&(e.data=Boolean(e.data));if(this._getType(e)!==o.boolean){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.boolean,received:t.parsedType}),m}return v(e.data)}}Q.create=e=>new Q({typeName:Me.ZodBoolean,coerce:(null===e||void 0===e?void 0:e.coerce)||!1,...k(e)});class X extends j{_parse(e){this._def.coerce&&(e.data=new Date(e.data));if(this._getType(e)!==o.date){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.date,received:t.parsedType}),m}if(isNaN(e.data.getTime())){return p(this._getOrReturnCtx(e),{code:s.invalid_date}),m}const t=new f;let n;for(const i of this._def.checks)"min"===i.kind?e.data.getTime()<i.value&&(n=this._getOrReturnCtx(e,n),p(n,{code:s.too_small,message:i.message,inclusive:!0,exact:!1,minimum:i.value,type:"date"}),t.dirty()):"max"===i.kind?e.data.getTime()>i.value&&(n=this._getOrReturnCtx(e,n),p(n,{code:s.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),t.dirty()):r.assertNever(i);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(e){return new X({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:C.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:C.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}X.create=e=>new X({checks:[],coerce:(null===e||void 0===e?void 0:e.coerce)||!1,typeName:Me.ZodDate,...k(e)});class $ extends j{_parse(e){if(this._getType(e)!==o.symbol){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.symbol,received:t.parsedType}),m}return v(e.data)}}$.create=e=>new $({typeName:Me.ZodSymbol,...k(e)});class J extends j{_parse(e){if(this._getType(e)!==o.undefined){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.undefined,received:t.parsedType}),m}return v(e.data)}}J.create=e=>new J({typeName:Me.ZodUndefined,...k(e)});class ee extends j{_parse(e){if(this._getType(e)!==o.null){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.null,received:t.parsedType}),m}return v(e.data)}}ee.create=e=>new ee({typeName:Me.ZodNull,...k(e)});class te extends j{constructor(){super(...arguments),this._any=!0}_parse(e){return v(e.data)}}te.create=e=>new te({typeName:Me.ZodAny,...k(e)});class ne extends j{constructor(){super(...arguments),this._unknown=!0}_parse(e){return v(e.data)}}ne.create=e=>new ne({typeName:Me.ZodUnknown,...k(e)});class re extends j{_parse(e){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.never,received:t.parsedType}),m}}re.create=e=>new re({typeName:Me.ZodNever,...k(e)});class ie extends j{_parse(e){if(this._getType(e)!==o.undefined){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.void,received:t.parsedType}),m}return v(e.data)}}ie.create=e=>new ie({typeName:Me.ZodVoid,...k(e)});class oe extends j{_parse(e){const{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==o.array)return p(t,{code:s.invalid_type,expected:o.array,received:t.parsedType}),m;if(null!==r.exactLength){const e=t.data.length>r.exactLength.value,i=t.data.length<r.exactLength.value;(e||i)&&(p(t,{code:e?s.too_big:s.too_small,minimum:i?r.exactLength.value:void 0,maximum:e?r.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:r.exactLength.message}),n.dirty())}if(null!==r.minLength&&t.data.length<r.minLength.value&&(p(t,{code:s.too_small,minimum:r.minLength.value,type:"array",inclusive:!0,exact:!1,message:r.minLength.message}),n.dirty()),null!==r.maxLength&&t.data.length>r.maxLength.value&&(p(t,{code:s.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map(((e,n)=>r.type._parseAsync(new O(t,e,t.path,n))))).then((e=>f.mergeArray(n,e)));const i=[...t.data].map(((e,n)=>r.type._parseSync(new O(t,e,t.path,n))));return f.mergeArray(n,i)}get element(){return this._def.type}min(e,t){return new oe({...this._def,minLength:{value:e,message:C.toString(t)}})}max(e,t){return new oe({...this._def,maxLength:{value:e,message:C.toString(t)}})}length(e,t){return new oe({...this._def,exactLength:{value:e,message:C.toString(t)}})}nonempty(e){return this.min(1,e)}}function ae(e){if(e instanceof se){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=Ee.create(ae(r))}return new se({...e._def,shape:()=>t})}return e instanceof oe?new oe({...e._def,type:ae(e.element)}):e instanceof Ee?Ee.create(ae(e.unwrap())):e instanceof Te?Te.create(ae(e.unwrap())):e instanceof pe?pe.create(e.items.map((e=>ae(e)))):e}oe.create=(e,t)=>new oe({type:e,minLength:null,maxLength:null,exactLength:null,typeName:Me.ZodArray,...k(t)});class se extends j{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;const e=this._def.shape(),t=r.objectKeys(e);return this._cached={shape:e,keys:t}}_parse(e){if(this._getType(e)!==o.object){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.object,received:t.parsedType}),m}const{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof re&&"strip"===this._def.unknownKeys))for(const o in n.data)i.includes(o)||a.push(o);const l=[];for(const o of i){const e=r[o],t=n.data[o];l.push({key:{status:"valid",value:o},value:e._parse(new O(n,t,n.path,o)),alwaysSet:o in n.data})}if(this._def.catchall instanceof re){const e=this._def.unknownKeys;if("passthrough"===e)for(const t of a)l.push({key:{status:"valid",value:t},value:{status:"valid",value:n.data[t]}});else if("strict"===e)a.length>0&&(p(n,{code:s.unrecognized_keys,keys:a}),t.dirty());else if("strip"!==e)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const e=this._def.catchall;for(const t of a){const r=n.data[t];l.push({key:{status:"valid",value:t},value:e._parse(new O(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then((async()=>{const e=[];for(const t of l){const n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e})).then((e=>f.mergeObjectSync(t,e))):f.mergeObjectSync(t,l)}get shape(){return this._def.shape()}strict(e){return C.errToObj,new se({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,n)=>{var r,i,o,a;const s=null!==(o=null===(i=(r=this._def).errorMap)||void 0===i?void 0:i.call(r,t,n).message)&&void 0!==o?o:n.defaultError;return"unrecognized_keys"===t.code?{message:null!==(a=C.errToObj(e).message)&&void 0!==a?a:s}:{message:s}}}:{}})}strip(){return new se({...this._def,unknownKeys:"strip"})}passthrough(){return new se({...this._def,unknownKeys:"passthrough"})}extend(e){return new se({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new se({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Me.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new se({...this._def,catchall:e})}pick(e){const t={};return r.objectKeys(e).forEach((n=>{e[n]&&this.shape[n]&&(t[n]=this.shape[n])})),new se({...this._def,shape:()=>t})}omit(e){const t={};return r.objectKeys(this.shape).forEach((n=>{e[n]||(t[n]=this.shape[n])})),new se({...this._def,shape:()=>t})}deepPartial(){return ae(this)}partial(e){const t={};return r.objectKeys(this.shape).forEach((n=>{const r=this.shape[n];e&&!e[n]?t[n]=r:t[n]=r.optional()})),new se({...this._def,shape:()=>t})}required(e){const t={};return r.objectKeys(this.shape).forEach((n=>{if(e&&!e[n])t[n]=this.shape[n];else{let e=this.shape[n];for(;e instanceof Ee;)e=e._def.innerType;t[n]=e}})),new se({...this._def,shape:()=>t})}keyof(){return xe(r.objectKeys(this.shape))}}se.create=(e,t)=>new se({shape:()=>e,unknownKeys:"strip",catchall:re.create(),typeName:Me.ZodObject,...k(t)}),se.strictCreate=(e,t)=>new se({shape:()=>e,unknownKeys:"strict",catchall:re.create(),typeName:Me.ZodObject,...k(t)}),se.lazycreate=(e,t)=>new se({shape:e,unknownKeys:"strip",catchall:re.create(),typeName:Me.ZodObject,...k(t)});class le extends j{_parse(e){const{ctx:t}=this._processInputParams(e),n=this._def.options;if(t.common.async)return Promise.all(n.map((async e=>{const n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}}))).then((function(e){for(const t of e)if("valid"===t.result.status)return t.result;for(const r of e)if("dirty"===r.result.status)return t.common.issues.push(...r.ctx.common.issues),r.result;const n=e.map((e=>new l(e.ctx.common.issues)));return p(t,{code:s.invalid_union,unionErrors:n}),m}));{let e;const r=[];for(const o of n){const n={...t,common:{...t.common,issues:[]},parent:null},i=o._parseSync({data:t.data,path:t.path,parent:n});if("valid"===i.status)return i;"dirty"!==i.status||e||(e={result:i,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;const i=r.map((e=>new l(e)));return p(t,{code:s.invalid_union,unionErrors:i}),m}}get options(){return this._def.options}}le.create=(e,t)=>new le({options:e,typeName:Me.ZodUnion,...k(t)});const ce=e=>e instanceof ye?ce(e.schema):e instanceof Ce?ce(e.innerType()):e instanceof be?[e.value]:e instanceof we?e.options:e instanceof Se?r.objectValues(e.enum):e instanceof Oe?ce(e._def.innerType):e instanceof J?[void 0]:e instanceof ee?[null]:e instanceof Ee?[void 0,...ce(e.unwrap())]:e instanceof Te?[null,...ce(e.unwrap())]:e instanceof Ie||e instanceof De?ce(e.unwrap()):e instanceof Ne?ce(e._def.innerType):[];class ue extends j{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==o.object)return p(t,{code:s.invalid_type,expected:o.object,received:t.parsedType}),m;const n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(p(t,{code:s.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),m)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,n){const r=new Map;for(const i of t){const t=ce(i.shape[e]);if(!t.length)throw new Error("A discriminator value for key `".concat(e,"` could not be extracted from all schema options"));for(const n of t){if(r.has(n))throw new Error("Discriminator property ".concat(String(e)," has duplicate value ").concat(String(n)));r.set(n,i)}}return new ue({typeName:Me.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:r,...k(n)})}}function de(e,t){const n=a(e),i=a(t);if(e===t)return{valid:!0,data:e};if(n===o.object&&i===o.object){const n=r.objectKeys(t),i=r.objectKeys(e).filter((e=>-1!==n.indexOf(e))),o={...e,...t};for(const r of i){const n=de(e[r],t[r]);if(!n.valid)return{valid:!1};o[r]=n.data}return{valid:!0,data:o}}if(n===o.array&&i===o.array){if(e.length!==t.length)return{valid:!1};const n=[];for(let r=0;r<e.length;r++){const i=de(e[r],t[r]);if(!i.valid)return{valid:!1};n.push(i.data)}return{valid:!0,data:n}}return n===o.date&&i===o.date&&+e===+t?{valid:!0,data:e}:{valid:!1}}class he extends j{_parse(e){const{status:t,ctx:n}=this._processInputParams(e),r=(e,r)=>{if(y(e)||y(r))return m;const i=de(e.value,r.value);return i.valid?((b(e)||b(r))&&t.dirty(),{status:t.value,value:i.data}):(p(n,{code:s.invalid_intersection_types}),m)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then((e=>{let[t,n]=e;return r(t,n)})):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}}he.create=(e,t,n)=>new he({left:e,right:t,typeName:Me.ZodIntersection,...k(n)});class pe extends j{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==o.array)return p(n,{code:s.invalid_type,expected:o.array,received:n.parsedType}),m;if(n.data.length<this._def.items.length)return p(n,{code:s.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),m;!this._def.rest&&n.data.length>this._def.items.length&&(p(n,{code:s.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());const r=[...n.data].map(((e,t)=>{const r=this._def.items[t]||this._def.rest;return r?r._parse(new O(n,e,n.path,t)):null})).filter((e=>!!e));return n.common.async?Promise.all(r).then((e=>f.mergeArray(t,e))):f.mergeArray(t,r)}get items(){return this._def.items}rest(e){return new pe({...this._def,rest:e})}}pe.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new pe({items:e,typeName:Me.ZodTuple,rest:null,...k(t)})};class fe extends j{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==o.object)return p(n,{code:s.invalid_type,expected:o.object,received:n.parsedType}),m;const r=[],i=this._def.keyType,a=this._def.valueType;for(const o in n.data)r.push({key:i._parse(new O(n,o,n.path,o)),value:a._parse(new O(n,n.data[o],n.path,o)),alwaysSet:o in n.data});return n.common.async?f.mergeObjectAsync(t,r):f.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(e,t,n){return new fe(t instanceof j?{keyType:e,valueType:t,typeName:Me.ZodRecord,...k(n)}:{keyType:q.create(),valueType:e,typeName:Me.ZodRecord,...k(t)})}}class me extends j{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==o.map)return p(n,{code:s.invalid_type,expected:o.map,received:n.parsedType}),m;const r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(((e,t)=>{let[o,a]=e;return{key:r._parse(new O(n,o,n.path,[t,"key"])),value:i._parse(new O(n,a,n.path,[t,"value"]))}}));if(n.common.async){const e=new Map;return Promise.resolve().then((async()=>{for(const n of a){const r=await n.key,i=await n.value;if("aborted"===r.status||"aborted"===i.status)return m;"dirty"!==r.status&&"dirty"!==i.status||t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}))}{const e=new Map;for(const n of a){const r=n.key,i=n.value;if("aborted"===r.status||"aborted"===i.status)return m;"dirty"!==r.status&&"dirty"!==i.status||t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}}me.create=(e,t,n)=>new me({valueType:t,keyType:e,typeName:Me.ZodMap,...k(n)});class ge extends j{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==o.set)return p(n,{code:s.invalid_type,expected:o.set,received:n.parsedType}),m;const r=this._def;null!==r.minSize&&n.data.size<r.minSize.value&&(p(n,{code:s.too_small,minimum:r.minSize.value,type:"set",inclusive:!0,exact:!1,message:r.minSize.message}),t.dirty()),null!==r.maxSize&&n.data.size>r.maxSize.value&&(p(n,{code:s.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());const i=this._def.valueType;function a(e){const n=new Set;for(const r of e){if("aborted"===r.status)return m;"dirty"===r.status&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}const l=[...n.data.values()].map(((e,t)=>i._parse(new O(n,e,n.path,t))));return n.common.async?Promise.all(l).then((e=>a(e))):a(l)}min(e,t){return new ge({...this._def,minSize:{value:e,message:C.toString(t)}})}max(e,t){return new ge({...this._def,maxSize:{value:e,message:C.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}ge.create=(e,t)=>new ge({valueType:e,minSize:null,maxSize:null,typeName:Me.ZodSet,...k(t)});class ve extends j{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==o.function)return p(t,{code:s.invalid_type,expected:o.function,received:t.parsedType}),m;function n(e,n){return h({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,d(),c].filter((e=>!!e)),issueData:{code:s.invalid_arguments,argumentsError:n}})}function r(e,n){return h({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,d(),c].filter((e=>!!e)),issueData:{code:s.invalid_return_type,returnTypeError:n}})}const i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof _e){const e=this;return v((async function(){for(var t=arguments.length,o=new Array(t),s=0;s<t;s++)o[s]=arguments[s];const c=new l([]),u=await e._def.args.parseAsync(o,i).catch((e=>{throw c.addIssue(n(o,e)),c})),d=await Reflect.apply(a,this,u);return await e._def.returns._def.type.parseAsync(d,i).catch((e=>{throw c.addIssue(r(d,e)),c}))}))}{const e=this;return v((function(){for(var t=arguments.length,o=new Array(t),s=0;s<t;s++)o[s]=arguments[s];const c=e._def.args.safeParse(o,i);if(!c.success)throw new l([n(o,c.error)]);const u=Reflect.apply(a,this,c.data),d=e._def.returns.safeParse(u,i);if(!d.success)throw new l([r(u,d.error)]);return d.data}))}}parameters(){return this._def.args}returnType(){return this._def.returns}args(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return new ve({...this._def,args:pe.create(t).rest(ne.create())})}returns(e){return new ve({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,n){return new ve({args:e||pe.create([]).rest(ne.create()),returns:t||ne.create(),typeName:Me.ZodFunction,...k(n)})}}class ye extends j{get schema(){return this._def.getter()}_parse(e){const{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}ye.create=(e,t)=>new ye({getter:e,typeName:Me.ZodLazy,...k(t)});class be extends j{_parse(e){if(e.data!==this._def.value){const t=this._getOrReturnCtx(e);return p(t,{received:t.data,code:s.invalid_literal,expected:this._def.value}),m}return{status:"valid",value:e.data}}get value(){return this._def.value}}function xe(e,t){return new we({values:e,typeName:Me.ZodEnum,...k(t)})}be.create=(e,t)=>new be({value:e,typeName:Me.ZodLiteral,...k(t)});class we extends j{constructor(){super(...arguments),E.set(this,void 0)}_parse(e){if("string"!==typeof e.data){const t=this._getOrReturnCtx(e),n=this._def.values;return p(t,{expected:r.joinValues(n),received:t.parsedType,code:s.invalid_type}),m}if(S(this,E,"f")||_(this,E,new Set(this._def.values),"f"),!S(this,E,"f").has(e.data)){const t=this._getOrReturnCtx(e),n=this._def.values;return p(t,{received:t.data,code:s.invalid_enum_value,options:n}),m}return v(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._def;return we.create(e,{...this._def,...t})}exclude(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._def;return we.create(this.options.filter((t=>!e.includes(t))),{...this._def,...t})}}E=new WeakMap,we.create=xe;class Se extends j{constructor(){super(...arguments),T.set(this,void 0)}_parse(e){const t=r.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==o.string&&n.parsedType!==o.number){const e=r.objectValues(t);return p(n,{expected:r.joinValues(e),received:n.parsedType,code:s.invalid_type}),m}if(S(this,T,"f")||_(this,T,new Set(r.getValidEnumValues(this._def.values)),"f"),!S(this,T,"f").has(e.data)){const e=r.objectValues(t);return p(n,{received:n.data,code:s.invalid_enum_value,options:e}),m}return v(e.data)}get enum(){return this._def.values}}T=new WeakMap,Se.create=(e,t)=>new Se({values:e,typeName:Me.ZodNativeEnum,...k(t)});class _e extends j{unwrap(){return this._def.type}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==o.promise&&!1===t.common.async)return p(t,{code:s.invalid_type,expected:o.promise,received:t.parsedType}),m;const n=t.parsedType===o.promise?t.data:Promise.resolve(t.data);return v(n.then((e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap}))))}}_e.create=(e,t)=>new _e({type:e,typeName:Me.ZodPromise,...k(t)});class Ce extends j{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Me.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:t,ctx:n}=this._processInputParams(e),i=this._def.effect||null,o={addIssue:e=>{p(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(o.addIssue=o.addIssue.bind(o),"preprocess"===i.type){const e=i.transform(n.data,o);if(n.common.async)return Promise.resolve(e).then((async e=>{if("aborted"===t.value)return m;const r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return"aborted"===r.status?m:"dirty"===r.status||"dirty"===t.value?g(r.value):r}));{if("aborted"===t.value)return m;const r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return"aborted"===r.status?m:"dirty"===r.status||"dirty"===t.value?g(r.value):r}}if("refinement"===i.type){const e=e=>{const t=i.refinement(e,o);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1===n.common.async){const r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return"aborted"===r.status?m:("dirty"===r.status&&t.dirty(),e(r.value),{status:t.value,value:r.value})}return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then((n=>"aborted"===n.status?m:("dirty"===n.status&&t.dirty(),e(n.value).then((()=>({status:t.value,value:n.value}))))))}if("transform"===i.type){if(!1===n.common.async){const e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!x(e))return e;const r=i.transform(e.value,o);if(r instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:r}}return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then((e=>x(e)?Promise.resolve(i.transform(e.value,o)).then((e=>({status:t.value,value:e}))):e))}r.assertNever(i)}}Ce.create=(e,t,n)=>new Ce({schema:e,typeName:Me.ZodEffects,effect:t,...k(n)}),Ce.createWithPreprocess=(e,t,n)=>new Ce({schema:t,effect:{type:"preprocess",transform:e},typeName:Me.ZodEffects,...k(n)});class Ee extends j{_parse(e){return this._getType(e)===o.undefined?v(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Ee.create=(e,t)=>new Ee({innerType:e,typeName:Me.ZodOptional,...k(t)});class Te extends j{_parse(e){return this._getType(e)===o.null?v(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Te.create=(e,t)=>new Te({innerType:e,typeName:Me.ZodNullable,...k(t)});class Oe extends j{_parse(e){const{ctx:t}=this._processInputParams(e);let n=t.data;return t.parsedType===o.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}Oe.create=(e,t)=>new Oe({innerType:e,typeName:Me.ZodDefault,defaultValue:"function"===typeof t.default?t.default:()=>t.default,...k(t)});class Ne extends j{_parse(e){const{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return w(r)?r.then((e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new l(n.common.issues)},input:n.data})}))):{status:"valid",value:"valid"===r.status?r.value:this._def.catchValue({get error(){return new l(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}}Ne.create=(e,t)=>new Ne({innerType:e,typeName:Me.ZodCatch,catchValue:"function"===typeof t.catch?t.catch:()=>t.catch,...k(t)});class ke extends j{_parse(e){if(this._getType(e)!==o.nan){const t=this._getOrReturnCtx(e);return p(t,{code:s.invalid_type,expected:o.nan,received:t.parsedType}),m}return{status:"valid",value:e.data}}}ke.create=e=>new ke({typeName:Me.ZodNaN,...k(e)});const je=Symbol("zod_brand");class Ie extends j{_parse(e){const{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}}class Pe extends j{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.common.async){return(async()=>{const e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return"aborted"===e.status?m:"dirty"===e.status?(t.dirty(),g(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})()}{const e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return"aborted"===e.status?m:"dirty"===e.status?(t.dirty(),{status:"dirty",value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(e,t){return new Pe({in:e,out:t,typeName:Me.ZodPipeline})}}class De extends j{_parse(e){const t=this._def.innerType._parse(e),n=e=>(x(e)&&(e.value=Object.freeze(e.value)),e);return w(t)?t.then((e=>n(e))):n(t)}unwrap(){return this._def.innerType}}function Ae(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return e?te.create().superRefine(((r,i)=>{var o,a;if(!e(r)){const e="function"===typeof t?t(r):"string"===typeof t?{message:t}:t,s=null===(a=null!==(o=e.fatal)&&void 0!==o?o:n)||void 0===a||a,l="string"===typeof e?{message:e}:e;i.addIssue({code:"custom",...l,fatal:s})}})):te.create()}De.create=(e,t)=>new De({innerType:e,typeName:Me.ZodReadonly,...k(t)});const Re={object:se.lazycreate};var Me;!function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"}(Me||(Me={}));const Le=q.create,Fe=Y.create,ze=ke.create,Be=K.create,Ue=Q.create,He=X.create,Ve=$.create,Ge=J.create,We=ee.create,qe=te.create,Ze=ne.create,Ye=re.create,Ke=ie.create,Qe=oe.create,Xe=se.create,$e=se.strictCreate,Je=le.create,et=ue.create,tt=he.create,nt=pe.create,rt=fe.create,it=me.create,ot=ge.create,at=ve.create,st=ye.create,lt=be.create,ct=we.create,ut=Se.create,dt=_e.create,ht=Ce.create,pt=Ee.create,ft=Te.create,mt=Ce.createWithPreprocess,gt=Pe.create,vt={string:e=>q.create({...e,coerce:!0}),number:e=>Y.create({...e,coerce:!0}),boolean:e=>Q.create({...e,coerce:!0}),bigint:e=>K.create({...e,coerce:!0}),date:e=>X.create({...e,coerce:!0})},yt=m;var bt=Object.freeze({__proto__:null,defaultErrorMap:c,setErrorMap:function(e){u=e},getErrorMap:d,makeIssue:h,EMPTY_PATH:[],addIssueToContext:p,ParseStatus:f,INVALID:m,DIRTY:g,OK:v,isAborted:y,isDirty:b,isValid:x,isAsync:w,get util(){return r},get objectUtil(){return i},ZodParsedType:o,getParsedType:a,ZodType:j,datetimeRegex:W,ZodString:q,ZodNumber:Y,ZodBigInt:K,ZodBoolean:Q,ZodDate:X,ZodSymbol:$,ZodUndefined:J,ZodNull:ee,ZodAny:te,ZodUnknown:ne,ZodNever:re,ZodVoid:ie,ZodArray:oe,ZodObject:se,ZodUnion:le,ZodDiscriminatedUnion:ue,ZodIntersection:he,ZodTuple:pe,ZodRecord:fe,ZodMap:me,ZodSet:ge,ZodFunction:ve,ZodLazy:ye,ZodLiteral:be,ZodEnum:we,ZodNativeEnum:Se,ZodPromise:_e,ZodEffects:Ce,ZodTransformer:Ce,ZodOptional:Ee,ZodNullable:Te,ZodDefault:Oe,ZodCatch:Ne,ZodNaN:ke,BRAND:je,ZodBranded:Ie,ZodPipeline:Pe,ZodReadonly:De,custom:Ae,Schema:j,ZodSchema:j,late:Re,get ZodFirstPartyTypeKind(){return Me},coerce:vt,any:qe,array:Qe,bigint:Be,boolean:Ue,date:He,discriminatedUnion:et,effect:ht,enum:ct,function:at,instanceof:function(e){return Ae((t=>t instanceof e),arguments.length>1&&void 0!==arguments[1]?arguments[1]:{message:"Input not instance of ".concat(e.name)})},intersection:tt,lazy:st,literal:lt,map:it,nan:ze,nativeEnum:ut,never:Ye,null:We,nullable:ft,number:Fe,object:Xe,oboolean:()=>Ue().optional(),onumber:()=>Fe().optional(),optional:pt,ostring:()=>Le().optional(),pipeline:gt,preprocess:mt,promise:dt,record:rt,set:ot,strictObject:$e,string:Le,symbol:Ve,transformer:ht,tuple:nt,undefined:Ge,union:Je,unknown:Ze,void:Ke,NEVER:yt,ZodIssueCode:s,quotelessJson:e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError:l})}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}n.m=e,n.amdO={},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;n.t=function(r,i){if(1&i&&(r=this(r)),8&i)return r;if("object"===typeof r&&r){if(4&i&&r.__esModule)return r;if(16&i&&"function"===typeof r.then)return r}var o=Object.create(null);n.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&i&&r;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>r[e]));return a.default=()=>r,n.d(o,a),o}})(),n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((t,r)=>(n.f[r](e,t),t)),[])),n.u=e=>"static/js/"+e+"."+{30:"b097cbb4",86:"ad271bdc",96:"6e1bf3f4",115:"2c4de87e",148:"b60f0e5e",163:"eea01641",178:"e0df04cc",185:"7d51fcfa",202:"52f13cd5",214:"99a17949",328:"f24db8bf",337:"b6fc715e",358:"d6300019",383:"4faec08b",425:"c6dd581a",436:"564ff0f8",451:"3b449e79",515:"cd9a8a90",556:"55f00ac6",598:"243fd68d",599:"c58caf58",619:"f27ddcbd",620:"7aea5425",632:"b6c03857",674:"e6536250",678:"b73063ff",704:"45771d88",785:"d2eae69c",919:"53e04507",924:"382f18b1",1148:"3c629236",1150:"2b47004d",1155:"4fce1854",1168:"91d9e2c2",1179:"15d7ac65",1278:"c0717a20",1350:"21b6a9ef",1478:"5044be66",1508:"f0158935",1528:"2a39d066",1551:"2e8e3e50",1616:"8a217b93",1736:"9f4a6b02",1746:"a8ba5c62",1747:"b4331799",1869:"d6661a03",1956:"0205a5bb",2033:"5c6dfca9",2104:"4f22ecac",2118:"bc169874",2141:"26c930aa",2183:"e2318c37",2190:"27f354f5",2194:"38bafdfc",2223:"63ae5a05",2229:"6687fc46",2238:"3cf88b79",2302:"7e7a2fb4",2322:"29255c22",2367:"052e678b",2403:"82cd0025",2435:"092e8d7f",2477:"e6121bfd",2492:"64b7d727",2521:"21bdfab9",2532:"30bb087d",2553:"5faabf5a",2590:"75b6626e",2620:"8e5c52fb",2677:"3d7ea3fc",2701:"86912840",2840:"b69eb597",2876:"afe7e47f",2931:"3ade3bc3",2962:"66e01691",2981:"6d027811",2986:"2100fcad",2994:"e6c77407",3025:"7e536c57",3074:"bbb8aaef",3231:"65396654",3271:"7b005742",3304:"f5897a96",3333:"ceb196e6",3358:"c777fe1f",3397:"9c0005a3",3457:"b193afe6",3466:"98f036ac",3498:"c7d39060",3621:"9b6c61ab",3630:"8eda2d3f",3644:"aeda46ca",3645:"bdd20200",3756:"67bd6b00",3757:"7c534899",3771:"764124c3",3898:"1fec42e6",3920:"11b8c9d7",3926:"8f2c9741",3945:"054c871d",4046:"5dac72a9",4080:"07be3744",4123:"64882a16",4132:"04be158e",4159:"5e0cfd91",4198:"d0671061",4326:"d5c34c54",4345:"9238776d",4347:"adf03999",4388:"edb51304",4535:"5d1c8322",4550:"2e04d705",4583:"1682cf86",4618:"131d9563",4635:"ffa9b6b7",4663:"b893c670",4684:"27f737c4",4789:"d52069de",4812:"73af8448",4814:"11309069",4826:"d2723706",4842:"57182d38",4848:"64f47dc3",4949:"6bf46e71",4964:"c7c75eb0",4983:"f6502102",4985:"991de003",5107:"8cac6a03",5112:"6189bbe0",5117:"896f7ffb",5161:"45b4f520",5168:"6fb23f08",5226:"675d55fb",5311:"a500a1ea",5341:"2c19c723",5352:"3d3187b7",5373:"90c95a6e",5378:"86805fba",5387:"8af1d694",5399:"f9398084",5448:"cef3c129",5450:"f0dcfc15",5491:"a460479e",5643:"00957838",5661:"c83a4eb0",5670:"5c30cef1",5720:"39a954f1",5790:"e3d88e2c",5809:"d78ebebb",5863:"e2cd2452",5868:"be04313a",6044:"2de9962d",6058:"7f474f92",6065:"b08e9640",6142:"b2452554",6144:"e1568f26",6156:"0c562627",6227:"fc562bbf",6230:"8e64216a",6289:"51f8741e",6291:"e7cdf7f2",6300:"dca75d45",6321:"aa3e44de",6329:"d78c1432",6361:"a9f11e7a",6390:"497d0ec8",6392:"134ee5e4",6393:"b0de2d9e",6521:"371403ec",6531:"7eac62d1",6619:"9e1de7a6",6679:"6e0a87d5",6692:"9322b59d",6795:"5ec0c96a",6815:"672badd5",6876:"867b698c",6877:"d2d51d98",6887:"0855fd66",6892:"2c3c2bcb",6898:"5580b941",6919:"84ed9ccc",6954:"e18be130",6961:"f4888ae1",7016:"4a34a027",7119:"e94f8dac",7202:"fefd43ee",7257:"8ce0d045",7276:"47f377a4",7388:"9f447514",7409:"4408962b",7520:"d245d6ac",7522:"1a0f9c02",7529:"ddf87a9a",7543:"3fcfd3ba",7554:"28f3da22",7645:"6565454c",7684:"a3920b72",7779:"9d9b07ae",7803:"a56cfca6",7992:"20690745",7999:"bdf4fe79",8011:"4fed4307",8065:"666ef449",8133:"2afc4db4",8140:"8d8e9309",8167:"b9a90da5",8424:"5b5c42b5",8450:"baf3a89d",8591:"93172fe9",8607:"1e377882",8622:"49f3054c",8695:"f17f8853",8702:"69a3e0d5",8747:"baf63d86",8791:"b209de42",8797:"f8f0ce13",8850:"97635389",8853:"c8f9e9d6",8858:"cd9d49a5",8905:"b8a9fd91",9101:"ce051539",9173:"71d773f2",9204:"77418f94",9207:"5881b206",9212:"870f16f0",9219:"24a20881",9280:"40cff028",9292:"91ed23f7",9297:"eadc4dba",9308:"c72b8585",9319:"40f9e46a",9371:"b42befbc",9411:"96fb3e2f",9413:"b2921c36",9433:"7ce648d0",9526:"10bb1684",9528:"9991c023",9555:"c9b5ee61",9572:"9f83f004",9621:"48073631",9876:"b336d1f5",9917:"67d792e3",9923:"270f0a19"}[e]+".chunk.js",n.miniCssF=e=>"static/css/"+e+"."+{328:"c0ade9c1",1551:"d5e5efc2",4983:"5c3e5de4",8424:"308a04db"}[e]+".chunk.css",n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="ydb-embedded-ui:";n.l=(r,i,o,a)=>{if(e[r])e[r].push(i);else{var s,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==t+o){s=d;break}}s||(l=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,n.nc&&s.setAttribute("nonce",n.nc),s.setAttribute("data-webpack",t+o),s.src=r),e[r]=[i];var h=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),l&&document.head.appendChild(s)}}})(),n.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.p="./",(()=>{if("undefined"!==typeof document){var e=e=>new Promise(((t,r)=>{var i=n.miniCssF(e),o=n.p+i;if(((e,t)=>{for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var i=(a=n[r]).getAttribute("data-href")||a.getAttribute("href");if("stylesheet"===a.rel&&(i===e||i===t))return a}var o=document.getElementsByTagName("style");for(r=0;r<o.length;r++){var a;if((i=(a=o[r]).getAttribute("data-href"))===e||i===t)return a}})(i,o))return t();((e,t,n,r,i)=>{var o=document.createElement("link");o.rel="stylesheet",o.type="text/css",o.onerror=o.onload=n=>{if(o.onerror=o.onload=null,"load"===n.type)r();else{var a=n&&("load"===n.type?"missing":n.type),s=n&&n.target&&n.target.href||t,l=new Error("Loading CSS chunk "+e+" failed.\n("+s+")");l.code="CSS_CHUNK_LOAD_FAILED",l.type=a,l.request=s,o.parentNode.removeChild(o),i(l)}},o.href=t,n?n.parentNode.insertBefore(o,n.nextSibling):document.head.appendChild(o)})(e,o,null,t,r)})),t={179:0};n.f.miniCss=(n,r)=>{t[n]?r.push(t[n]):0!==t[n]&&{328:1,1551:1,4983:1,8424:1}[n]&&r.push(t[n]=e(n).then((()=>{t[n]=0}),(e=>{throw delete t[n],e})))}}})(),(()=>{var e={179:0};n.f.j=(t,r)=>{var i=n.o(e,t)?e[t]:void 0;if(0!==i)if(i)r.push(i[2]);else if(4983!=t){var o=new Promise(((n,r)=>i=e[t]=[n,r]));r.push(i[2]=o);var a=n.p+n.u(t),s=new Error;n.l(a,(r=>{if(n.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,i[1](s)}}),"chunk-"+t,t)}else e[t]=0};var t=(t,r)=>{var i,o,a=r[0],s=r[1],l=r[2],c=0;if(a.some((t=>0!==e[t]))){for(i in s)n.o(s,i)&&(n.m[i]=s[i]);if(l)l(n)}for(t&&t(r);c<a.length;c++)o=a[c],n.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self.webpackChunkydb_embedded_ui=self.webpackChunkydb_embedded_ui||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";var e=n(63609),t=n(36084),r=n(90058),i=n(67510);const{store:o,history:a}=(0,i.xC)();var s=n(75859);!async function(){let r;r=await Promise.resolve().then(n.bind(n,36084)).then((e=>{let{SingleClusterApp:t}=e;return t}));const i=document.getElementById("root");if(!i)throw new Error("Can't find root element");e.createRoot(i).render((0,s.jsx)(t.ErrorBoundary,{children:(0,s.jsx)(r,{store:o,history:a})}))}(),(0,r.Z)()})()})(); \ No newline at end of file diff --git a/ydb/core/viewer/monitoring/static/js/main.62a60ecb.js.LICENSE.txt b/ydb/core/viewer/monitoring/static/js/main.62a60ecb.js.LICENSE.txt new file mode 100644 index 000000000000..55aa6eb2a480 --- /dev/null +++ b/ydb/core/viewer/monitoring/static/js/main.62a60ecb.js.LICENSE.txt @@ -0,0 +1,113 @@ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/ + +/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/ + +/*! @preserve + * numeral.js + * locales : 2.0.6 + * license : MIT + * http://adamwdraper.github.com/Numeral-js/ + */ + +/*! @preserve + * numeral.js + * version : 2.0.6 + * author : Adam Draper + * license : MIT + * http://adamwdraper.github.com/Numeral-js/ + */ + +/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */ + +/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ + +/*! https://mths.be/punycode v1.4.1 by @mathias */ + +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * use-sync-external-store-with-selector.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v17.0.2 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/ydb/core/viewer/monitoring/static/media/codicon.762fced46d6cddbda272.ttf b/ydb/core/viewer/monitoring/static/media/codicon.762fced46d6cddbda272.ttf new file mode 100644 index 0000000000000000000000000000000000000000..57eda48f1db732ce3cff0fccb9e75f57a58a965f GIT binary patch literal 79844 zcmeFa37lKic{hB{)zw{fucUh=T}h*5W;Bv!^NeSe#>?0qY_L7X7%*TK4>p?(7?>ff z4j}|P2?>NiLMCKsAS5MrLehjJgusN7W^bvXX`0eBO*1r26Uj}pI7?}O@BiE*&5TW& zzU}*c-}`%i?O1;uUFk08Jm;KeKgWzS#!Pk_3$W#<oO#wn>z&2@jPWYI-G17c{ezX$ zCQrffT{zx#@m0I0SKj^Dy^QHe#?qhJv+w51)(un?#>$s4_RBl=Ub_2|9q)edOq~0D zV016Okj|HWh0k+9$KI>1yD9mFS6;;Zjxwh9?z`sV-7Rn4@d3sP&oCCa|Ek?LO-o1l z8}K{s&swkEebuG!{PpK28PDK+{+sD*UUS`+^PfAJ@!Ss>OTNNTcixLL@&3vyue{9r z=$oZ~{LlPv@a=P%ryja6yy}<C6j$6*{N!zPCY8AMCEmxE;ZS1|eTzT3_n-0WndcwT zw+8+(_KJV(|BmD3Y@A8!Pu{Yf+52{1cQs2hdCBifKl6Q;@7ay}iz_+KqhC3`;S3b? z>nZadeh&-c=+D?U@!s7i?_oAOm7!|E0KWYlf7>qGa0z?5w(DoyZ(R#N1^p@Rxp=nU zGWz|0@V`TYS6=z=O~3!s?f;LS{~!JSzti{sbM1fcvHw5)|NHy@#JP9k@&7&agV-cF zOj49I49MzWt1qLOoW{4LXY`_kMu6|-z)x`Oun4}9YIoG`s(r2Yjk;dndUW7t{1s>n zwOzHh*4|$GM(vrpS>GnU!xc;aIIh2lUB<r6zRkDsZwKzjj{){C{1m>PeVPyRckp(8 zB@gi#b}E0G@8o;<W$Yd{0<GnZ?9bV6*;;50H?ahNlD(I`nXlz7+~F?&L-sZHhwMrI z2mE#Ht^96&1Aikwz;EPl;&0=3K-2mHzlFaQiiM2U8qfnn%z~~FMoS#%G8vX-Id(p~ zfbC>cY&YuH#@bndb+97qgm%&c8Z2Xdte*|AK{mvO*-BPrtJrF2MQhkPHo-QqQ`knf znQdohv9sAZXy0CT1-pvPu-CBb*!AoNb|br)?PsrLx3Jf-TiI>w4eS6r$lk>6V0W^+ z+1uGW*gM&M>|Jb@y_?<7-oxI<{(yaeJ-{AhA7l@)53`T3L+mil`6&As`#Ad?dmOsv zQ|wRJm)KX?*V#ANpF)TF3use+$-c$@3e^2;_B{J%_EYvVc8vX+{f7N3dy&1&Ug0ti za)q1R;x-TSD39|5Pw_O*@*FSnF5V5@tQT5hKVQxV_#hwRRX)a7@RfWOU(Lt)8orL7 z#5eGh`9{8pPx3ANRKAs;#?R*G@E!bIejdMo@8%cri}|H|FTa9c&9C9p{967ReiOf$ z@8_@OxANEX+xYGLAb&G|3%`@!$KS<2z#rfr<R9W6<`46a@I(AC|0w?i|0Mquf0Tcg zKgK`DKhK}wU*vznzr?@Hzrw%4|CIfl{eu0H{fb@4cCl;N7@KAnLw~=TUCZ{d^H_<M zxytTh_p&eZKf*Zn*d^>J&+s$&+j*INp6}up@>YHw@8qNGT>dyaiEHd_?2p+?JjpAp zi<fwwjj{^c#P8*w<{#%D<BzaE!iYVSd+bX7RsMDUHU4gXKYtH@FMl6@Kc8h$b_Q=_ z@8^HaE@#iOzh&QHf5W!1)7VxPW6!ZquurlbY!5$+eTZGk;_PYmMc%>ktd;#6bNOd@ zjMdq9+264jU{lPqAFzL9|HOXGYV7aX_xL;6Gkk=-1^TlJJz8f!V*kK?$XeJ}cmNZ0 z1xv9c+rmD@9_8n=Nj}A|Vn?{aALI|QllkTBVLr!}^8$}>olmgS*-!XpzK`9`UeB-R zm$1j!XV_=?Q~V2TJ>SkxXJ@h}xWqYo1U!uN_5bdFAtFHhK0yZ9S>SO3;99J<TY&uw z%8LYGld#&w0^n(^c8LJ{G|Ec__%O=L1o%5p?h)YaDEA8RD^Xr9z)_3Z6$0RltVX{9 zWG&V93Gk;;UM0YHqP$vw)4i_|054^=X#sFmR-=0XYy{=C0%RZ7ULydW%WBsNfcvuA z^#b6-tagI{TZ{5W0q|y4yGa0Cn$>O=U<s74w+Z0ftoB*~@NibUMS#5-<?94E-Sbuf z-h%S=0^C7)n*euFzCi%|pVe*`fFxkG0|Jl<taea<(Q~Oi0RID&ZxVpSU^RL+z}|}T z4gr2QN;(EOwe?N`PWQM=fYWo{F2IQf)P8`|z2QF~@VB9)J_b15`<()0|JN|C2<!_e z-zC6_9<u_FS*-SM0kYU@kd_3<F;;tz0Lkwf(GegyU3;GZq#UcgUjXus)u_z?Bp<86 z7eRmwWVHtbAPrgVK>^4`R{Nj;BqXanBmh~-Y9A7S)MT{}3qXFd+8+u)lCs*v0+6Y! z_7MR{S5`YD06EKQhXo*US?!|&kiD$-F#$+nR(nJM@|e{=E&$2QYM&5*jApez5`eU3 zwNDB_ZnN5_1R%j#?NI^9a#o{x2tcZ{+Ghkv_o;nW0Fs{79ut7fXSL4>K>D-V;{wnF zSncxy&<I%V2?6K^tVZJufR?~&a{|y8SnUe}&>UFpDFNsZtoFwO&?Z>zX#waJtoB6# zXc(;aCj!tlSnW#!&^lP{%L33pSnVqU&_r16s{+tTSnX>9&`wzG8v@W%SnU}BXe_Mu z=K|1OSnY@av=~-<Rsi}8t34+G&4$(fLI64rt9?@d+77Gzr2zCER{NF!G$2;{D*@<2 ztoCgIXhp2{*8<RwSnYWMXiBX1Hv-U^SnWFk(4JWBZv~)7vD$Y9pi!~f-w8msVzuuH zK+9sazZYP)q5Qr8G%r@07l01NYA*;t8)LP95P)9BYCjNwhQ@0DC;(lJ)qW@dt&P?G zNdWpAtNlm-njEYBSOEGOtJMUc-LYC-0D2y)9TkAa$7=s90Nsz(ej)%Zkk$T00Qw-S z{Zs&&A*=mN06HS8{agUrBCGvE0D2><9TQ*=qWq-*bV*kGl>oF#R{OO8^h;LzjQ})F zR{K{0=$x$fq5!l{R{J*rzg@q@X8;;0tGy%u-IUc{7J!z@YOe@DUxj)j0L_)vxd8b~ z>yiMpSym4SK(A$WSpXU?s|N+3>$18c0IiqRRRQR~tgZ<_6J~W?06H<Nn*z{|Sv@2` zUdOs60F9Z|Z2{=ctR5DC7R~D5g9PZ)tR5ABX3gr30Ca3tcLktrvwBPbdN-@b1)zbm zdO`rYIIDXC(8^goDFFSP)l&k{)LA_(0G*xHTLhrJvwB8=ytDPJ04F--1US(tFF@K` zy;Xn{4cY`awYyz_Q@aZSoZ8(Xz^Sc80Z#2G32<shS%6c0I|Vq^w@ZLiy}AWB)vHH< z)BSn{IGwvpfYZ5s0-Vn67a$9~zFYtvZ&n`=;Pm^T0H@!F1UUUZEWqja5dluWj|z~# zzg`jGV<_nu;44tlF~C=%q+@`uLP^H}UyYKE0X~kBjsd;~B^?8N9ZEU|_(>?&3h)gm z={JC%jB-MNZ$wGw0eln6^#XhnC0zsXEhy<4fS-!;6al^!C0!5j(@@g&06!b$W&wT< zO1c-occ7$u0sLH)bT5FPhm!6E@C#6G6X3g1o-V*ILV1P&zZm720{l{x+XeVulxGR> zD^OBB0Dd(}st3TYK}q!h_%uqY2f(jIN%a8uYfzpqz;8lHbprU!D0d3*{V1md_-j#K zD8O$;xl4e*9woH_;J2ZqHURu~l+*@*A4GYH0Dm(|Y7fBQg7Pu}ekaO30{lLd)J}lE z3+3ek`~xVd%>aJ@<&^^bgDCe2@DHK9N`QYDCD8@o52GZy0Q@5;i7o&?gmOlJA4W+u z0{BN!5{&@<36$3f@K2(=UVwiJ<qZP-QIt0d@Xw+ongaYWltfd2e-0(l6yTpnNi+rc z6DV&H;9o@fIsyJCD2dhp{}M`~HNd}&l4uR^ub_N`0RIL`qB{V~oz)Krz=mga>H`4Q zJgdJ^0CqjAzexZVKC4sT0I>C0{SE=P3nldv0Q;ZS-zor40IO4<0q_a1`dtF-Vw7(a zpg3RsZUJ}<SpDq+@Ex%FJp%9|u=>3M@F%ePI|SfaVD)zjurf*-69BvotWIMBfZu`D zX9eJaVD)zkFrv@>0`N+(`g;V(&sKl007c^J?-PK}g4N$Iz>cE)0|A~vNn;M+XP~4p z2XJb~g97k!usV%DfKi`5B*1r}{Ez@AdVW}dx1#(*0ZwCz#wEZzQGP@Kz7kfaaS5<< zQPQ{s;6Gt?8kYb&3FXHG;8S7sM+D$qVfBv-z|X?!G<E^@5=x>4K=IHzjbi{_7*?lo z46rVgj|y<2|EC4uqha;W2*6vz>NLIq_-$DIF#)y-<>v%A^##=x;B*h73&5#fG}Zx5 zb$?O-J|9+}6JS)wF9`5$D4!DGXQHI`0Pqd5`qKjJN|av|;9o`gCj$KID8D4YzlM^= z1i;^olI9G+??*}30Q@~D={$hb7@_L{PGjU70-VMO%_{(&C|3V70r;d?{TTs9<K)i; z;HP5sBLa-BeO3UzD^`C_0A4Is{|f>5vsnF`0`P3H`d<pb$HnU35`edh)&EKWelJ%4 zwg5a}tp3*m@P)DZ^8)aSu{vD?z(2<7bT0s&GFGQ&0PvZy`gaB3J!AF16JUE#eop`% zHCF$70r=Kf{rdv&va$NS0Q_yN{(=B|8s$F-FzTNl2*4Z1>i;MJzZ|RoP=K|f{3ikU z>RA0p0?bAEV*yTMuqFUc9;?>{Na?K~6@Yh-)&E%lem++Ji2yu)to|<ojOzYV0eAsf z{bvI32eSIl1>hNE^<N0UN66~O1mG=X^<N6WZ^-Ju5`YJh)qgF(h-SYLfLD>#|5bp| z7<o|uo<>%ub^`D@viffYD0*L~xeCA!$?7i)P^`cHiU53*#HM_}O9_Xo0Q{Bgs3ZW- zB|91rfDe-$l?52a{n4NRr{D2B0&c;M;&}x4I@wV?j{vVHJ4(+3;QwSt4FPyU*-=vf zK2dfwB*4Hwj#>inld_|>0GmV^7T{ATBLeWEvZI(k1a<_aBf#l7=z9Wx5GDGX0B<Wh zig89@C!<UVzyr&Uf-ex*!zih)0KBs7D767Veg!+47T^VxL>GWlT`~fk+L{%BAD11? z3BaSvj$*tL7{=7mRsp^lWt#x}z3gba06f3!C_MvUuSbb-Pe2X`J6aTgUzi;&3BW_l zj+O=BD`rPK1=wd%b_wvOP<9Kzlgy6x2(a}idj<G*l*<I*XJ$wH1mJOINBafX6DWxm z0GCh>2*4lBe%1hartx<lY_%Wp7$Ow=5Ht9`l$QFW3F&O<3h7qq9n!<n*QM`CzYS~+ z9146(?w0S7zaQ+wzYBt&2>z*Zg_={R)E{YzcD43>{eEMM@ebn&;~6t%mdvWT*}TB~ zu=$kvocUez#ZW1<J@k0!CzfP&TW45LTR*qg+WYPM>{@tz_^$9*!?nl_k%uB*kCvjl zqMwP@9NW3Y`HtJ+KJWfEc1G-$*d4JK<6Gm8Cz6T%iBBfJl{lLCtrzl=Uaz;poASQv z{VEwrP9={dUrdEkC#UX7J)QbaT1w~A!|BV?ccdRle?R@3mYZ4*wH(Q0GAlB>GPh+u zocUhn#cU?KC3|c3quFP&$8xQ?jk()$&*#s}-<5wj|Gm~#t+%$m&^F$7L)+Kem$%>4 z{#5(Rg-Z%=DtxB!)xrxMmvtQMc(7xxXcRXVZz+DXlqua^R?26TZz=z_v%T|B*Q&0^ zyVrKVwfjiVMLiGoJl|{gZt4BWvc1dh>MQjf>ic2ei~Vc+FX_Lh|GEBOE#JQU;PM|1 zv=3|>m>u}lU}<pu;5!DtI#?UpG4zR{+HiV!??~&&86%I6wvJvm`q=0XMt@t0RR$~P zRc@_3Sb3`Q-O7tqr@Fklv3gnc*6M8axv|jL)YxxUR99TE;;9wiUh(slcdUGH<<l#F zzUu5%*RA^Ms-LfJU47Z=yH-E4`pc`oH*SoNj$bf-*Z9#j%9;z-ykpJx)@p0luf1jM z+}fY6Tf6Ssbq}ul&br@BteUuFqIOcpNgp`rN9&*2Aa5Am@cs=?pKPBzee%~&kx$ut z$_F+kHeRuDZsRvMNt-rqx^2__o1WhE{mpAPU$^<?$qOc*n*8aOwOjUW`R1w8shy|Z zcIx|2{pi+9w*KkXpPaV$v>$Bi-uB*Y-#pzo{i4(FIsNG~ww>|OGnF%Uoq5NZkDU43 z_Rj4ax9{8j^jVp+&OU4Qthuv(dUp5O*PZ>%bL4Z{&zU->wqyH_Bj*mEd*6A+c@yW| za^APk-+cZ(=l}MCgF83x+`IElQ`b#BJT*7<!iBvTUVGs?F8uN?ZP)#~p4fG4_weo= zyASSuc=vZNy7r=nFZ$-i$%~)6_{B^1U-H<ct(R`R^!7`CbJ_4^H(mC`Wxv|9YR?^e zzQ0%AyLImmFCV{heBZIFTCZAv)hDld{%ZN^%+;H(e*e{fdQIk<C$2d*El<a$JEn)H z@0<SCOl)Rq=EK*<t{uPjuGcuP`NV6!cir;qF1qdm*B!fl^!nScf9QtT4Lfdl?+wRp zjNN#~jkn(T{Eff5>4}@WZ+>R~`u%t8|1x={DH0CLJqj=FFln#F;XdAO^LQ+g=ZV2J z2q3EM<;u7`G??RF!c)qn;c;m&C&g^8D&;=zEnkh`W4Tlwt>9mIv`=ccrFcx7tm342 zA0HVW=eRr`Q+RLZhBG#FW>Qw^f|8xg%yzZ&fMG}CMmQT+0#f@9S+kr()YddxcVn9U zW;q(t&7iCX4bIJ2I-7P)MbqS<p@*VDCstUsaaF;c?b^`UxuL6VRoqCYjrgjIlByB4 zji4E~H9dK!9&;>Rvz>U<mT|3pKIe8)SAzjr)gm!F9W#tr+BRHUlVw@elVR>GPj{>; z6jpVl!PqFl4S$Harr}QqH!UX6uHo`Huk;1*sZ<!3Kpsg2-O%vCaSj?55TuQ@CjzN< z&Li1E&Xsf{kSxZd`DEx(ubfDf`^uhI_P&xRCM81;6w}e1!^4?qAl@DeCG%+yC-`SU zERjfsy@KaMP8Q>ZcwwY4GBh$2=jx0*J?$Q*x9Mr>&qh5hL;(`y{pSTW?hWBp8No}% zWpNcK7ve)aa!l6^{fMFKnZKTYcCIu%%~N{SctF=5Fsl8f(&5?J83@hh^Brg%kh>L6 zEsx-Bs9f>lYPnMFw5nCBb50ZoP*`JjXQw@e4<Hsa1HbMnbd3c0|0^DzkLwHNiWqBx zW@U`1_C79#%B7ud$*x+}Pv(clhjKZ*<=s^8U~kHQyRUQK6(y@u3Fn9MjT7>z#&0P| zuj8KSQJkSt9vUfB${<Ar12JYp_Kb5czO=($byJSJFW&X|8sRroi93sRI_{Z`c7n#L zR~ad*3O&w$FfWVYA)b8yVncG`md8EwYYi&=QS&#@V(BAa{meByJ~ZN0$_3SHG!jo$ zmy-E+wPOis|AQJWj0G9iGxVDZ##LDzDa6Ywr>rS!tGo5U&YkwwFMoM!bIig^K<5$V z{XS^^{&SpfpXx52_cJ<g4F|P6qTAuADSPXezO=P-r@hnK>NL)S-*{f!52ME)N8jkT z`mMa1e`|lgmD{^FFP;nE@w5JUVx-0k-hTX^zx?w2#p3+j3FrAE8Iz;@kho9o2+p%} zZu5SP=dR&H82y-j>Qv*ok2dbRz$04lTuhqE!jl)<blR#_R_~90-1~+`>8!Hwh1+{W zqioQuLE9qrVukvX%YwM4Hi<%0YLO?YG%Jgkit(~H;+5lJ9`{CgYTack4)Lk8)5RY> zI8rQ5TKDj=V!CZIy1O|)+QCm+;1L<c)!^i6p<M}cB`2-qgQIJ}>`{(`srB=rikCt5 zNnxlkiUTlmFJVgs-a086>JG(_wn$P?4_1PP6siW59kL#ju9T#GW3g^Y=I3mXq%9jH zc?;)~B=yb*HLeEdgSr+_m9`$RU|r+ehF`}60j{X?IA@**Bs6Z3mt_&{8=+`hWvEmx zRECBt1u(O?HwqeKTF1fBQ0vMl@!&YPNS`zcNi|q0EAd#x8yy)g722y)rZ$;vk=%|F z*LChrJDVgP)UI{Ba3*f1x|g-;PAuv<;nR%dR<kYXxSBDh>l?S87LX-A={l2l2X$S3 zixrBuguPN!Z|&_qH^R-Wwv#;hw6No~QJ)B2XMnC@!F`L1H6(J5mi>ws)XES#b)z%w zZkA1B&M@zgN*!01v$tpa-sV5ch(_;`x1M&&<k;Baebb1ncO#Mso2sG|;;}q0R7O{W zV@lr8Xr)vx*;1Cr!rU8*B?d>q?#rbS70)ch5|zQx;ZnO2OB~Y;P5rE@TV6gK2&#%2 zD`g|9sZAvEi3#0=mL1|n^GvU;t*@=^eo0QJV)0a}E0T*FlCDZzvRXP~U5P}S6;33= zR$C%*m8ogwK{~z9rvWTL@cV9fec~8feTcADDGKT;YP;H~V58P~bU3t(g1T5=RcSAc z3?<N*iid_&N?x<#4;iX%ggr~nC~72Iik+n!lA`W+LZafz8A{kJ^6M4Vv~Iu8dY3vR zn!uBq5eUX}k*;Vo>n0Liv5po?x;MaGC+3PKM7Jnt!r!T?VeNUB^)7`kwndD=#kLHh z9Zfo`P1+|&6qZ)=3iXIuh@lB(RGY}Ia*sb7Z}DlI;zaXUWc5B(b5&CZ#pAr>ll!$? zw_g4=4@Tq$dE+Tv7c>uq9*L#W3AaJ=c-SFw>;47J@upy0q!Do+#<)N|hWn&f4}}I{ z%ZruHA%hGR{x=oMhI8B~xY#G<)nbt3TpBT##l4c#))JLO1-*Eq|I<XemUuEPYAYwq z7Q2Ko)0_+7*2j>ukf0m`4E@0bbU@YD1PkT(5C-XRp^Rd<)WfIN<Xa<F#A(lUcRR6S zPdO5E+){NeowVXXIT=l5cdU0J?XgJKCeDsAmWB+9!26nm?pngk=tE>5yo?vZykDq2 zkWQrZ;AjNW8sCpphE!r0KpF29k~IEN9O+hj)KEy>qw5z(?8wFXU9z(CTzmhNDp}{v zj)}jys`%q-AQTE1Pa2Vk@#N!yz+wA+0qKKQ$r*F1Zq;#J*Ae`g9Rn}WC~LzdJ*)z4 zKm}VL8LAyJqNko3b=TYLXQ6Z*Q_enHIrg`clizIc5Ng{gh|0eXbQ>r@rABAjl9~&k zBn}-fKvyacl*%Ke%E++zfcG8_B11170ADEKy)rP4lRa?B_Jwm+^HE$?9_W*Lpe=xB z`nU873DRG4P*lJ$XC%c?WeI9`&@T){lJtlL9!*?a4g`Y==Qu?|<{3D*715>pBuNQE zrC$8XKf}KX4|~y!r6k+)Zrd?gGnAAPGNEj1W(Xe*O?DJZ(^Rf$5xNHiK)?y&*-AvC zKMV65UvYXYzTql;<u2Ywin{ssq+(^FV8czhA?SB2WeENMM?uIS3~?cXRA@2~;Lv+2 z|F4sC)J9W9qbK5VJCU&c_x~?wo7UT!ohLP)gQrmzQ)3QVupV3Bf$f4GQ5eDSj{7zT z6kkj&C|3Sg<q?n6CcKj=Qi=1(gg&KD==w4J(B$Ooq*2u;50rLJ!v2_?&lpBVpEZox zjO*Inx?$)&R@HSUcl9W`u5@2Wj~4w*Hc>k=Zq6s$)g={xdoamHXabB&C8#yFl<?v) zFHTwkNlm4PFE0%AAvd<2nB^$Maso3zt;AH6i`R?{S4!g&v}d2A504Hec4XS~(0+JV zn;!LaSeT<@oq9T@=Q_2PYb7}-$2jcAps6{U8A$1hZgNw%Itppsv=kllHs|u388PwV ziklnGb*u<+-3;ihrE(+{5B01Vu>&EEn*(cCd?e5>2XVXppj^^SQ!B~R`C$t(Pful1 zx@{Qgj)EoO_Icbr6~QUE?*i{g!{2L?R_G3a{sp4_5PD;zkb%W_On2w;2d*=(>+=({ zvo0KmO<9rzJqHkx+eG}DRE8`s&^V?tzLG;+(~yRdOBy2dFK`&#b_9AM?0~`uktqwq ziY9^7-Y0>GBhR!hYmMa19M?;oT(+QI6r@nTJs;v7X3-9Im67_IGxJw@tzK5Q5-r(G zBBVWUCR$q)CS8_p2}N4sbQ!lJVH;PKc%mf|YDv>&X2kO%W`rkFUO5vEXUbkG!Kppu z1r|1Y82Y&9kI(`%k{;xR4I$pN5~JoM@YqR;cR)b+Ms;)KlATN@HVF$75M+{68YLZ* z;DA-_e}CdJjd~u*xU+7Ci0u%u=O7aNzml`~S89HVve^90RXV|-uKDXjt~=$DG!gFy z@rjN^IRzs_=$qu1SdGl9+tFtj?>sCirGAdFFRhWr(FNtcK%qU1i2%2ZLgHZ!C#4vt z-~}fR^c9>O7%BO`3=P8ZgBKJ@Tk^d?LxUCcHVoLjL_fso7ha)elObOZnuZ!sf&oqH zGEG_GQ0W6oKnt27OABdsP!AZ<WTv&fEn-A1#nu7=RhGlDrD}H0&Zn(JMCY;+G$A@< z)llIDGBKCr;08Su4C;yku>vC@h<nOL(C9yBe9ArNbx_`evLZt!l+9333kHHpK-HCy z9)w`gY{iNi;r6!HOe$)~TF}-)L6ov=%iATct4`X=<Z@xv*70>f(R5V~2F!qJm<Aq; zYT#M;S`KOf2s=|&|KS{WYW$of^w!`hzm4owq5=4tH<%BQUPDBKXjaJO1u~O(^?Zqd zPKhNv&@acSS5(mrWlWq>zl3=vF6@Ud4f;H;9PXE4w$Qf_`Y>m5{GoGJ?{szyg!Hhc z1_B_g9W^4<#$?n8XdrAzwJifx1|?)kkxjEp(ugh^SWyV1lOd{=K#&>>qN26IkiLN^ ztp<XUpn_;Eq`V$USn0f-`=cGs&ei7>G&tlyed<n>4!X0g4YQ8AQ!_0YJq3FXV*ou7 zGRx={^i42$9=@V(#bA&%pQPwmeS>U<bWj*)lkrF0Dw~#S=W`h=9o0y;6TDr5_DHsE z2W4_r3J@$X{ydD;0;uH`Mh27utcBq<e7MlAj)2y%e0|R)DV7hr;niWM5{)FFp>Xa! z7B!(fx98(dI2`MUCPN`p4@FMz?7ZjP@qnTP#w!swVrPSLIutQVVVP?tI6T5nqAo?~ zu?n(vLuA_*$#>;d)Jhrk0CS`xUVMkW!XCc!o-?d%j?ra?>FCEFKhxOs;j1n(rxM|K zIEn+X8lNwPktqgCsR-Q^cjDm(!fV3ScmHILpKG4>C`ITRvX!1``@Xy^=zu5<=zt6I z9HWl(Sl?HIvP^y$a-GnxFi8BPlP%Y>(ss-2!rx}A-A-FptN5W`96cYitQI>69#nEl z?%p;lZP{DsJL^393>x@#h9~EXRA(@LYVqvpp&jOq&^2d-&N(MU)ulS)45CxhM<{-5 zoVjq$v$zwTgQ~)5@df_|C!TW*{u??6{zZ6P8o!EDaUbFPAlXlR98wPAtpP|nK^eaU z|6btiBanj)w(gfO1;FD4YlWrZ|M~otcx=)C!-oS0c&hQ)*XtL5Y8=iUXtw<&WJbV0 zTWKhL)E{p=D|%M*HQW4vZ<=iYwT^+SAW}+>9+EoMId^vU*xcOV*(SYU3Ct4bf!}w8 ztIy85Zi5f0jcakY=GBn#e)C5P)x)Uzw0poU9X@jC(Ck469}nY}jedFoQEbF9D}!Jx zULr=0dZiuO65RXb$RFp>zT8YO5C~>mBj$e$28}3Ghb7;LkFFjyg2BeP7Cv(3Htwsy z!$59bxp`M7+BRUwx*pAi+dA5E$*3+q^OS51v_(7G!a4t|WDY<3pQ+A^zOHVHP`agd zb%1U?U~}+PkBk;FcA$)m!mwHL@{WIevsRx8=fbv?3d5ENXmI~z^BFn{K;sH%s%eBQ z`^*z-*dc1pB^W4LIAvw?b|ztj$r{0t9nRaf6*5d!3w+|lCN!G1R9=T*6C?iX3a7B} zd#ex-z5tI84VTI=lhF%)6apcR!m2Hn^+0N3WycG)D0#|{efVz&V#UY<aXnLMYkp|< z^BgjE!A&YL1%d_2*<7ME9&b&|f-RyzXrW=J(s>4DGF8ZUfviu&8lE$<2}d864O5e3 z-8MsNB4WC_98JXU3d)iO;cwbu!-TwuC!(@0#wIxT3*eP;v=U>?4~PhlH!9MOAvTyO z&&CR|SfP{NHe@@qcnwT8j`8JWjK0aXiq(!nk5l2{SdB=%udh*5L&P(3-1i`~E135r zjeQXS3E+E`$oHqH1;k^Z%+Ygw_lzip$yyWj@k1fd)eiT_jsdq&K2a?eH4|kCNI-K5 zE)PbH!!t(IG^0ip`gYVXZiZ!og6wx_dNpxDB3zyCl^qDsL<Gnu5MD7#hZ|SW`OVit z+c1wwTX&Haf!qON;NXouJ1@75w8a4r>giA%Z*vy(me$sAE@$Pw#+8>}BoKRFiyxZ5 z9dIYz3Ede3r)bKr1bAfvmQpWyNGe1o7zALAq~a6Zh@2y2?)b*5=ezV(P`C{4>-)RQ z2dcBKk#R77Vl9TT4u*??pq!}%-xPCWcG2p%#VXqPXq65X`*q*9=IV3$KL(*s8HRyH zjK(9eOD>679UbR)SpKI48;-1%6l)cc8WLkZ3x#O(%@^N-sjQU1+DCkW_mG`#v0Ctg zZ0iDFgWNjkKy*zyr2~@(58h|Dv^3Ay4-Sr>>G#P4)q|jikW)WGwhQs<1xl;l?0S2{ z27A5#{+8wk95&|&DEKRAB5=r7U<JmM!U#F8$_41z&_|$_z`qIY&iBob;R&8J>W$+Y z)elsV(EL7!SJDf|p$kZomv2#&NH7?)48=^^x^AcSkZQI>ZCfw(<S$IRNvjiaHQw6a z<|c9p9tkIc5!;4#W*eDw#5GN;(C!5Sax9_bZ%AHtsb_U|HhCrLI!LQkL|uKq(DAh; z&bXwu6?l=Uvd!)W=|yde#ot}u{(jUqESsvA@#`DNr<{Mc!rW@qIMU-FZtK@Lu`zYo zrAb5z7x+8s9H$jL%{s#{SxUx+qwoZJ4~c5tbv*T6e}LxStEuc$^Ekr222=C|%91?B zKp|O1vRTYc54Iy|8qh(Zb}dmd$Phwg(U-iKp~RNTQ&1BoCrgw5ABvqWY;M4DAi-e_ zHgtz0&eYViGc%6!tkaO`G4KKfE51mkV;Ufcgb*TT11yY6dB?y2Laq1OgM)VU@#s|a zO9O*`u+=YiX-|^sOj;A_-ix}&p)amOw$4t<taB03_l6)XVaN;Pk9^icab@YZ<QMe6 z#km6~o{OLbvCAIl*gX`fUCoIr#r(Ji^p6CFSD~tE9EO%FiY<_h{-L59L3Pr9cf?oI z&R1eBEwPZ&nXbm$<8z1GyfJvRppr*I;HQeFYC$7p7>cGqGciJN`~0tbHSK1~EvbC0 zJvIhUZL+OxTa`yW-xVPAcoo`I0Mr$n7EG1&OE8#M@fd{KCST234mjX8$1{{g-6TXA zlCF?*LguL>LcT8%;~jp?da3aK#k?QGrfx%~TBGl1)REUBkBGVOSRnr83ZaL9>yRJh zqmf3RDV#(NAT5w0t^W7K<AE~TNaLrh!W&UFj6N`DQC6v_>TVJ7euTOV(sHj}vBI_5 z+bwi~|6{dOD&ia*jFn3Lbh_SOEFREjbiAsiDYz}1P`lL*8vz<>W6n76$YZV`7LD-> zrJHI;TKG_2LJR;^A!*~wAbcoKx`_y?HgC8`GWrb#`aG-alM@HCdSZv$5?A}_c>Cl* zeWG2-7&{HT+{sBjjI=#LFY=WOJ1K^KB_Gc+_^_&|4GB$he35;GNt;C^6D~+Zt0@!! z%6JugfxZX4q18COf{J2(ll#V*M$oiaJdDN{OS;-==#kOj0cRfZ5SRsehAR#nJn+>( zwbnD_zX^1<858O#E~+{i9mN!#KxAo-5fwdJATHv?;kifcyf`At3dApt;H6u1z{63e z8S{Ncr)o;U(MZ33WWj;XRpT~Y**j~rbp~`}6!bZ~e~JHl@mVH~$7cQqwNw?&9ub)z z{gKhv>&||(tZyFoJgoPtqx#_os1;;;z`u*#r<Q?_^!jm?lW096;*O{`0!)y^;}VTG z_%~>TB}iNJGl!7P0f$kk($5j!>zDF;)Eivzi3_dfV~XOm^kpQ+k+REL8Xq}42n~(4 z!?t9rQrgm@SWbs?O1R<cR;|AFa3&H;mbtjnZCU2uB-7X8ge2Lro7!?f+uX9HRFSO? zr=w)>)+7-x)z-RZ89a_*x1o0sj}&cN^IvNjg;_~~`p>neAM(7dzx6-Wh_j$K;3^tR zf{!(2Q-Ly3D_%dR*ASdVzpH!5*|g9(hf7;Z+d<ZwB_i92-7wW8VPVzbEu}5nLBPdR zmePCwqV)lpLwkup=FmPJN#u<0LFDSSsF&|qhr&;Oc29Vd{m^t7hR!GqH;fA?nSLY^ z+6a;lVAH`2g%Bb~7>Od-jYAbUd0^X(QeFeD@x75FWjKFuBF-<gS4v2{LSNt{#rI94 zvDYI@ETm~?(_2Uzlz1RoDnu*<m+WvrQdLt?Lsr)rT~<g{OjVTv@GJ*{R-{nc#JLgb zIJqN)jI&Uz%~51oaoS=lwB_MYw<`t8YCv+kL*eB!x{|?D@TP|;F5w?M%B6rCl-+2~ z4Mo(HorD8Uhg%GxGzT#)xD??KRf0)7rA9(-F6zp`+of$>35LUnscn-Kmu~4^qy^nh zI~Gf5S|S#+J6%8AB6uwMJyhX|qI?ve^Anq=^d>O;N%zwAa6TWdPR-6a&du(;d(xc{ zTGc0i;mo;EG#17X`41HM#XEhQ04glBVd#J~kKs@&75r!l;<clyZ=Xsz30{JwL&^I{ zzn!t-ott#S$vIZY3VS)Ew54LfOL6SvI&x8t4~=X$B(r(<RC&gZFYnQl7Jdi@U1Yg+ zns!g~+zwnunQ<cV%~#bM;~n-S>0;!^_dOxt?C`=<d_rg-7%C;w#JEcS_IZk#%&Vrk zwp2ReIK`=1Q#(N4;ceP&*Z|K8zY6JdQ`6J4FqVYwq+_*C2$onU=GF>Yk?le;mMCWo zW0w5qpb!po@Z71$1oTtMR8oK7ji{*pm>x$28kQ%9rKci_<ZWtMx3WXdj;>o#lryDt zYo<SwC@$~oa0AKPtxh=@jfJI9%y5E+s>ytNIH=o*FAtj`P)WBUfl@WigAUyQx5-r2 ztvKZ17OC!>9%^0I-~CprOOJ&lI}X*lEg+jguBtt@X*prr?TdLqkT+~6$9h6dIqk=# zUD#VAn5BX>#KFfKfgQ*q@|2+KeV-8dZamCSan#R85|u>dn4kIv&#FAKaRi>_opCqf z;?*sRU7WjNr`rj;oEJJf3pFbd3MDM*VKwS`QT5?mP__*VK4RH2Y&rPlKrloHp<v*y z7^fAijrd|GWP1@@dIZs$lTlX{GDh(f7}1nI^UjUq#C6xziI0+5w51Wo}Q2UP|a z!IU8F+*9Ku{1LPA;%|w{sn(PnwGsi><uWo1ROEZBaVsfv$nnHvC{m3KO7U<w&L_LW z?%m5zIpy-V|KWj1I2H>>tb~NCbd2G+VVVZ6(hcsoQo@RaLXk;a!{g!1r?s=!U)bvP zM=nX6e4%%BWO3dlmbB@=+9GnDqAl^lf2t|2eR$v5cf0?oc6>~miEQ-7E?mFBH@bLl zqfgfUS9_!)Y7Zr-^7|Vg#gFTY$8WphA>FW>4Tw|sE$N7qMja7|AJ-APBBv)#+H->v zxYc*7`}_p!TmHe9RT+347~GxB`3<KVqQ?GArtt;ri*|N+lGE1Nkq9{1P$m_YEYs;q zYMUt+<Xa&r+TJ{2N|QofCZ(BLp?f84JfRaed|?sN#wts#1Ja5~;auVgb6_yeFM7eI z9O1<AbvmrWna8XkuLTkVhbpA-4|z|V-P?P1?}`<<+=}cxt{%c)gTIOMF~aD?f9#<X zXK@DlQQU7H_runmxF2Q+<i_k|;pD>9fqknR*NfkwT@+>~XXoFraNUB>nj!%hgzDJN zojZqzhi9jzc6JSqfTj418`6b*+qhmW<EN=(0Pf+-um=4FO~%1O!A_-7Ux<wi#TST5 zq(zpr=ZQ`bl#V9Iwr=o;40v@M_QrawB03wKx&k8uwh{at!=$6eO9hyzD%1&zHmG>P ziG*HN$hL-K8gABdg;a5H4myJzpWqpAAr1|z;3tJRJR+kzq)$OP!RrEb*CV>|rUFu3 zGRutNbD~z9Si!3qh~+bwxDt)%Rms5qO<*P1`3$%CloUqR<Rj-x7w|m=a<BIpLn|W| zMzX_=MV6A%kfi93WUw3r%M@D=Z8yT13~?7hL+rUmwychEjO-%Br^%`sfnhW0y5r&S zfyCvIg@2{asXHUumirsmgqK_cLM&X<pUGU1NE~e2iEIAGoI}9MoH*FHhWM2ZzYHuY z^mv2sfVo2S+Q=b7m><HIV*TUtU{0nCucljIWJ)lcI0BA{_eB5++7@DsMko|AG(}c3 z2?-lrNv|}y%&wrN`seu<sFoRlcg#eT5Eq%IVnh($M~YEX4~{|?io!~+P+R~#iP4DZ zt5SfFR7U!MoHxiX3UjFVmCh(bn8Cx*5FKksuu=7CI4iFNf+;ht>am!qWlzuQvgQR8 zXN7~TL*z-y%I-|4rH~0_%&e{j6*|?4$F=OJ772%x5S{n~T}_)QMS>*PaR<$e*{XjB zgc;#3i(H)zWeb3r)#CA}hGj%SMc1-vSvA92ly2ecdO{aTqoqwBR2;fBvNDjoPdx|5 z0eg0&D3b8wm6=1Bg*y)&dih2B(o1c3GrUTZ@B?FQfctUvr0{y}`iloJ{Tg%sd4FzF z+^KP|?b+<X4B}36bK)G>e$?-2-zN*Fun0&<ebCV{D=4FkyoH!Djq&iNRJouz#<IbJ zn(iM6yLxZZC=|U;`|!CZ-R(}s@|xqQUP>(v_PSQg8#G)j(8zrd-M%uhjD(BdXw2qg zuyAxg=DEyot%5{Lq+59Kw8o3@g?muIs1~R<M0=cSVS{Bu3vhQ!+|$jsTpkSUCb#(4 zoU{^cYt>^#En;<-6H2bT2u<Caamb;eIWw^2;ftF~wC6&ha762Nqh_?DC#PZvTS%U1 z@G;CYi}p*ZG^pU`RGdJEe<`gP38jtB!J#g%d;Nw)#$H#jM=FKcT%XmFF_UeU(b}Kx zSn0(x?UQyUl?bD8O<wr&k~xWaTn0(YBY8gZ((jp*5nQ7oE=&=dW^8Auk@biH4Swb| zLOt8JMK4SyFN|*6ec^?tHRC?#YRN}E?cB|ep4;$E(EW(&ta$uQcx37251)7)`z^+2 zkRnVzXMhK)vMn(?o5);!%)G?AB=qrj!fDX-e}s4l^=<Wg75zrJT1d(q!HOZ#o1Taa z#gw*8WO++=xK-j=DOv98GDo&L*GDLBm3Vrx-%Y?Gg$ubomT)u9J@joW6h<M_YTyS3 z#pq!+!Z!w2kD7-fEABjNY>EwJ24b7~DX5cA+>FEPuEX&<aq|=Jft*c`d>qg%y;t3% zMcjj@nm3tm+~kDzwt=Ro2ia6);!>1lFhM?(3UafddLu1lh?~E&#niBP<aae0n?SZA zv?hE#<kKX7A#*Wu$lpeHKZb$rIG=m;QLfU5IXC%ebB<xZNJwZ4zTr)@CqM;j2FUUw zkqGvPia}LQ#A$*J5Fho~WjjPD@y=42LJ5@Cg=<hkU?RW)8j*Dmf3S+2`<#Sz10%yd z=a;O`vQ_fmuZwh8?IGUVhdcIIUEJ;{b=bTs)Xl>|-q&ju;Hrsa+q2Ot&rKK8``^cP zJB1vvRQOJ$jfFZp={8-R);%HIhUfCOlTY!UP?r>ToQTwk+oW=i-J0RJPbiv2u6HyP za?|NS&eNIHvbJcnZCNVYpcnZIV<ID&d<NusBNrvK0CJTsj2mw<iul1<B8Tfry|0tj zndIz#*F^+4h~!`6<L<rin&Io4Z_ZoDQEAA_H1sO+;A2o0Me-wVia`Yb8>S^5#?93_ z{ECP5)%MQWS>*WtWua5o59)fUpkH~_^v=A|-s~%?tL4v{F50)O;pjzu{go)-!kDgM zUhpWlA5I?R%fm%aq23C8L++_>oI)+oPl>2i^_}w*YGiptU6+v+MGFSEAxJ_)OytTR zGY%PeMFN4(&jun9xG~^-hra?bKR;UREF{JY9gcFFMRa5_&k!}D*vNKD-qewS0B><K zJc=YZkf=c;;lnVAe=X!F(zOUhLP0|;1-Xjz2GZc%BS)s)Dzd7pxDRE;J^yTpj+Weu zd|^}%xcQH}7aZe-k%f%M+2V9*p(>@~OlhGm&Fjf~FWf19z9dag4C+{-d5f9Gk^&L# z)#v9AHwhwS7u|<=Xc}Xyh<oMX0Qbih@=VHp;8HXUvxI~${oKzVt12X-XJ!spXW%kM z9*SF>n!2+m=wKh$Sk*=j;JovTLt~TvF9+NsJ=T-%5vXE|zMufw4sk^q0m8NZGf6(r zO-(c@hzCqJh}RsW4Vu9nw9sbJcVtvHTRdN^PE8Tv{rL9$!Rq8Bp4`;Es1KX%{f}Dv zjcU-LT1+1vo2F*cYv<12)j+y`L-&C$AjX%--h_-1&8wiMG(wuQfm%z)C1e!iMMl)* ze*Yr^1(TCC8r6nAgP@x~!XGFVVFW>N;qTYj9RPVSuCLMfb|A4leDH(1BNO_>a>r^f zqzuE_ZCwQWzOA=60>1*n>sV8&rwWD8Mb_?UZ*Lni0xU#5me7|pbC~^ZAuM@oq!E>T z6cz6`E$<8TrcVvN_h_~y(l*=1Q|}F)n(hs}ujS9GEe5_g?jFQPp!H!bm<XHrD>+H; zLH-+<$`JbIZPe<1gxY^GIeR#xAAHo<uIumCz_|9z%<P=hpt>~13U-9ka6haHT}Z=N zkZTJcCZTZ~5pzl;DmRK*=-x;$MzY_MqA7o9+?#&p0){mPA@#)&#ibhE0;Y#SIq6Sg zx9ZN%%*^ZuPn!3q^-Ftp9zf=qafE`Gg0H*){%NAspoCD^g>)kQOC-vW$PrU>aP*Nx zBHDa)ELzU4n3~r#f5JJ5#e|cXn8^*gB(Q!a4sYKu`ijg1IHk$ig_Kxmp5w6pDx+lt z`tgrq=9G$wZfr=)a^-`Gu1F~tE+v+iW4TB`4VRprwo)o3MZ?*WTMD;&ZS9egyv$nG ze9_9_NLQt&?0B-CFx$KP;(e)5=$M{wFM8dPYyi0x$*mh*L%9Wu44W^Ir{Vk0g5Lee zUEW5!LPAHOe2F+&Gu{xCWM59hNw<b-i5Zh8HzjyY!XwXE7zVDVkco@5cq+%CgDtv0 z&}E+-HcF-RvSsN~$tc4_)9q3?rS$eHsc^~G6OBVtqZ2wpu8ie-rfqNyMyh4WaXV=j z+Pt8ZX>Uy^A#IAM{5y%8YUT;IX&k~HEYnk$+h#za0I_XyO%Hl44j+b9l_|6(f}xi7 zwj45A1g{lwTowH$JUAq}A-{i5G`EE5|Eg4x15Rmb3ViAKkZw~?fR{oe>zbx5lpkWR z@xm{At&>i&dcS~(-{ED}`jf0>ZuJ2AM(`|JOHVwjnQu-W37;jC9vSrYjK(o)3u(7f z8Yvuhksd&=m;cF~a*#T3#GQe!1Rp^?@e2&QX{3SEkJJ7S&9M;UG1iLJPa+Re!GbOt zx;ah*x8jisP(j25*~EOHTxv%|4w`VKUG*sS2?KeYBb!3?`gkTF4LND#zo{w@deMZP z?Fw&3-mY}p-hg&duby`DZZvEf#W5YeWvoyw45gRDqY;tRz>rl;$f_jEu~yTwyK=Y? zDaE+(x?bH)ogRz?`U<ivsd7tCvbW!b17Gl?C~|O!A0Yt*ks_gB`-%(+-ZCaRmYGr- zJ9&KJX6HyznT=<&-Pvs1a-1|6aAv5W`c>A)HZNA}$!u3H*Ohf#oRW6OlRYhd?F!45 zEmVVejUTfj-W5j<DGX3V*DHvhAQ%fh1QOa04wu!1&{=}~$&e1D_0k$yS~!J;f2bca z=tXK77_V`-Em`82;O*_Ye!m@Ya)o>}Vp$0gjk`#lwz!pa47kOEN@CD$X(_j~fQe^u z$y73F=oz(u(E6uzY#D$EN+GK&$hQkQhUK})$n-1&X+M!fm@X@WlJq|V;m_Y2fMjtJ zmTDQ%@0DyVTC}KvVDy#M7$rs{Sz7Ui2V?EN)I^)nVB*;D<U#d6{*<qd2fd+(U5 z?nRCxUXfUA)v|Ct5>77*M_TO|(u2jf+#6RP6T0%Du`R`zgI9Xc46RnIz_Kes%L10N zI@y7=n3$V}BHPq&g$_Yk)wF_fX^s8N1=7vQYZHe6#WX5cnl+NE)q`^r`sQ}4tIO)3 zxAuh^OpeXZ>JxVttS<apZ__*UY4|!oC+hDgwEqk=v@YZcAR7)jJy2PPM*1a@1y_Lm z<oO?=u_IN$U$6(}3d0A2sHqf|ru7LoFs|II>l4)j)#@H3Da`6l-b!>@)@k8vZl~K{ z6k0ZE3vQP>E<ufQ=f|pk_JlE+OLT_H+rpU^w{IOHEqFnjqB;^yY}7IZJ+c#iw+dn( zo0^t6r5X9v#ZoE?h(ZYfdC-Ayy5W5gz6)}r4i0+|TKH~g5Zb~hW*7Juok03Em#N<H ze@wWO)vxH-0m9Jd=4KTu7RLgDpfREITr6h6k!Kp(sgBhabN&Xk-!nz+kjEM=(5IZ8 zRd>wQkg^sn>7fj-Vu_9!#;T{pm`Q1K3$beQQ??<G#kXLfw}B7l8@imZzWgI-4zOn8 z9@QU$3u-bx;GNdY7-wqQl~hxthtNmE-J@yiXSDSzHEm|EyKe4E4f#4)p>4zNfHrj4 z2-?VX3EI_gcnrDi)ybWxk?;HW*NqzRon#PKT4GVb<5D48Dh}6yUlAC>VEi=d3O3do zz^1zQ^}a1NrM{8h7*V!gwx91;Bipt`22yrc57H6goON^FG2=<9Y2caco=9M3)(u3) zBAe3Kj;PyCaV*wr<wTpN9BYopR;*xcjDO5VjC<-X%26+?&A~{$j4yprG(<CDU3CI# zt$r_NL-v5KA24Vi5NFUDXse3Z;9??7Zr3NrrVRT1=IKneZNM6Y)(;tlKYy&z3WF0@ zMq#{>U4RirCJZ?gXohf93Y~(E@{MKG6W_vKKt1ucq+E$JVel5>;6S(z#K1yX9p1=E z#4>f=HFUS+I*`bVcuk}l4!B^2Q%ck)bLq(&BI@>j1D)SLPYHAWUy-h$l~akx>8FR) z{WnuH8u~5fjSfo)t!sL*gv||~8a7ejRcpp~haR4SF8W;<B*@4+bZCCk@fX>PvEf2~ zTmGtIsLixyw?TWFW?%|5fiUH$82Z~8EcbQZ?W~McbGg#&7|f1Y7)!lSap7<obKafH z%|8jF<H@S9HT-c0E(DT-Qf2JWuyb;XtF7nm-Ft59qApFo99VPBvpmp`2<e|aU7A9w zj<^CU!nsJhZ}_bK4Q*dWJ98lnN~$Wji3bmNA2P0>zS8<FzaTfMiUVka3CPs4hx9*u zL#e8zvW=iM3S8=EV#EjVV+j|34BOL~j%;I%P{1%_`6$*A$+{82vMB=#eXM+ouE<ex z)9b~R_)jZz%aB6|?qkglbl8v{lcG9IAYDcVs}WQ(u5D)YZ~_isOS5e`S&XT;#tPe- zVTMC++$2sZsv5!qZm}hne!Xg8HGC#4!#P`s=sH%QuS_J;R#=L8A;ZZV@Tnq`zM-?3 zpabPkGEQ!Obd@N$VNK6iH{zdP@Q^h<ZQZEYGc)#$3)kAsYsud5_fYW*m#(?Nx=9ot zv}R_kn|?&s-_)S}PcWbTXI8``RdMzAH&2F6H&6f2sary4nrFPSd9!)?=|{F~G0!-I z_z?D8>TCF+8hp`<Qy_{M5YjX;!F(RMz=;-hbkQWRBF(%ZqMWr$lCOc)tC|bUXlcN* zx-48yhFXsq+o67e8)3NxCgZ5jlO~qNF3(sQ8g^}%hJr7V--$RR<z$n723~+!?^iDV zs=8tF69b_5399AXh-o{8b@WT>gwz0V@uE|T9y8XtsE4yyjgjf;>C4qCNPiadxaj-5 zC?6cpg&9MpF9ZWr6_Ofpss(IxJQ6}8b3`B1<Ho+IGNrrQBI=&Al*lQ%`-La+8<faZ zCFNkK4-PHk$X6nPVj!Z94NL`Kl8fh18-*Oex@G?XBu!~@(w!+s5TEcw9(jF4g^f+p z8@Ioa?^lTFtNV}9opt@mcV%Y+5r^13ZY=263*UtcuDTYIn`R|ByD47QOr3?}6sqph z<duTzFSaFz6H>^@cZc*`(l#iTS!$T)n5(2GQ<yS7DdNVlMgf!7o29q?a**76at7|Z z3?)@$l(z_D-bKM-+aH4^jI7%jrOD!>+vZWKY_jUL6_2}2qZ>iK`<Jan8HNi0-LxP_ z(|+WQ+6cY_dSS*vV)$!>K{t$tN*TM~_-lj9m{SP8`erlIrD2Nt0oTfc-(kVs_Aw)2 zSjA{Euxwc{87_u3tg<PFlfm9)3Jzf@mRgoAYblkDVWV7xp_(d{wY6R@k;r+pR2puI z?=16AwQwW<%AVtHbdrC?l8f;Xw>*GlA34u!7o=+TBk5wayTlmc%iGY(!srOtE0TL) zlPD@aB2&s|n6U+w5rbx=Fj5*Jwp$q;^uTK2Q^2k@;ur^rNT`sb<idF=hb5PA#cIfY zj9ONd7E;2JmbsLpoY;dqcUH0K3KG_&unaECB^TQ-1dTvg3;O%%jKWTw*TN=}%CJF# z6pY2-n+||q2e9)Q`IsM^MTQx+K*3saTuBRM@rQMqSZs@>x<Ml-N&Zr^g?XRGxJ{tN z%gG;tY29E&lFyyMpuBP%GRe1T!J_;X-?Ta$pC~2<X;qz+&W6pPj0ZFm>d9Pn9rQ9V z9v1<Vp<ofo+{LMq!!eztadkNsOz9KYU1QQQCXx1QIB-cz3W9|Sb`h#ns|_AI54jvB zPZ+dyKQjrl)OT|)Y!LG{CsQhA{5M@J9^$=Q0^KXR16xG#TCvKgF@EvCvS!e?d1zgm z=zr888{b#;6l5JzO4pFza}>?SWE?6d#u57@r-?5x{T&|Ap_rLH6d{3Spu(aKBYQ-o zhTWN@phdFaX6#td^uoICXn{DA+eb76&9QHY6;Qu!8=-)%r86<b3~74QEYNBQn=S$+ zLn;>GMneHLQuUWr*h!vo_Xc8E`4P|%!HlK@dqUCo1tmKcR<Q#|<h21K)MkfF1*gDp z-y4ef*ICJy*rObR)>Z<cXvA2YzqHR(pc$#43<AtbGJwh10X9oYA6z35+Scn-dkQQZ ze~2a>!3JL~EnDrKhp^<P$qO{T4C7@Da)i$TEg{)xdcZOsgdYN_82&_|^(J22Uv~of zj*L=nmY^qWY%F&}h8^fvhL4XHB0=T$bL)^8qWmj03_FhGx&yLoMP$`M5|C#GV>W~! zicCwG>y8PXA|_`$l7}>-NfoS<CgNZfc=&BW+cp(B6t(q${63<*CCh<s+}^Vd-BINT zdLnS46x6UVL7_fFQr@z-iIk#vprtq{hnqcjyAh_2iN>tg2IYWm<3KSj*cXst7*}Lt zwm};k12xW~{~@OWg$f!Mtq=EChttv^ggyNbC>G^|P6!QR5u;R2P;eW`FhrJS(liaT zA&-LIlyf)=9$O(tav93T<(h>>?N&s!96jvQqcPeXOHJT=zwKCF->XI}tudT1>TGH$ z#++(6ri#Hx^^e4|c`M&)<?~i+-g+*iNK;@ZNgMkps)8{7(DR@4fU5ZvQ0(vrf|?z% zR2l0wF#c@UPBzEiNpDnR5gKw~Q+hscx3=2i?lk@yG7@ykV*ZVSPRQM9P)WF7X%IAt zG@4L}M&!3Rfk?EHW$FBbQcG$I7%=qnc!9{{8d#W~%q}60o8_R5W<>)Wv*rZiIE%9o zsk_Jq^u5+TIpjzP;{=!Z!^Ecs&&0wYMjRU*AVX&<G5RwL(=UQJ!B<4cO86jJ(C${) zp0qF4W@rZ&pzR{5ltRQbN2sHbXo?^z>GC5OIbz4c!N%l}Fgcn5=>@r27V*AzWu*CG z`|lnZ5sdqwLgRtBkc}O6FiyZ4bgo&?3CB`@D2in>QDmg}Lf?OXO2L%Cz*^FN6<ZL1 zOcI~EUbe$Ng9#f4z}-T!iqWS%fHgklOr}4QjNo;L&>%J<Ef+WR`H=5}BN-d^_vb+B zSjBf~z!yU@28JcNGmg)YD=>wjXOi*T(2=nEpSEuS)2h0MonX~27RL@BXvUUyy5PT6 zT2G|wwA6^W=nO2-LpChGG3+_x2iqpy_uw>C&P7FWMw6cjKM}2%>|3-ZOHf5oD|ph$ zGeHSv{xG8<w`A!C3{4x(+Dmlhtm!dBySj{ZHGaHndSMBNFg`Wog|QWZ;Ka0R?C~p8 zTC$9T=17B=h&gf&{eKAmg*kFOBYD+)X)+dR^uI7$7Fo$s@#RmP1;zr#_@AFXC-9O* zSw@rTqYcJFe7wm^R8G5sdEmR`*TX3Cvo?^w(e#lO{A@pX&d`OFFiaATc*FsB(3-F& z>`_v;j0rj2mJVFrd!$EeEw`>FiTBg?_Cb5yI(wxEE+WYz0!u#{k6(ZvF^GjNvH1M| zg=hc1Xa4l6tA6+6XudR`MSc!ytDg-9aa|}^{=IhozGr=W-@XBBV!}HA#HP`+ns#6s z5s;+64h_*w*nz(F=Vwd!+e~0rRkFs&QKeR}M+Z3~M~23hTPKU?{oa=D%dLDkJR0qZ z_KX%L_T`6+(KYE}-;7K8>3MC-53k$T+LAS=($m$eHj+aT#yeF2|F35o{huC1k_gx- z5XKTrAM9R+WG`Qp9zj%Nv<%r=QlW<{l%kG}o-p1K=D;lVPgY3v@E4PiKoLLUj0(0* z!w<B_6FejMdep-$vAGRLe!A1DVDm9-FcVBzQQbs{Ly5X-R~ORy6cxLvV1p+s5j3&A z8Gf)#tnT25cR)#30;(ENxuGE~RBer>qS(GhHX`w^?pOq=gL*C2vMd?JHVS=Ymi1}a zJ_X^fu#-(-Cl^P?eom%@T}X5-Ze*ij<UEFra6g%HX(%e1j9sH>*EIzjQqpca7M7IA zwxvXqJ(*ZKj&B1N!qiangNSG||Nr;J`mJ6+N(jN?Z^}$o<pND$#$eaX0ZPLnn)rK2 zf+Pban5#q+yn`xO2^!|24}2RoF+_r?kJF~h>AqYrXq(tlCJ?}8GXb5<3KJ!EsNz~K zl8C6fjOZR#hD5OmGpHBjh+gEe-%l{tpX%B`8$x%ruIM&oIfYvUu|W(rY~%_SInypd zSY8m)WXmmkQ8xysQ!p3`NZgHKQD@n)<bZ8-$+FS2B9FSD&CU5i5ja{siSY_updmt* z=0?moSamx#HUZD~5#5=atJ0A(Mb`Y0ugo=kNkqF4{f~Lat?9&GO0+JiRL1%@+C~Z6 zK;sQEDJ+##8fmmZ7TKl#V8rS;1dR~I>W6NN<S4}FFgkNs*pA&Iv6L1{AZ@0NbBLP$ z-q@WRXoo#HXn7Irq=XK~uBkBBbhWh=wA8WX5%%0uKyd8106S3)o7i*=p1B~GGzmix zjyU|tv%Rj-Q5mmv7;bO2vF)~h|CfIn2ozLHhWH0-CcPKlH&}t#nMaqY)X|$zux+H? z>KtpA0*LKmFEaE9ZZBcaF|3P9po@D~j1OiqgX1fDb(*feVd3k(A$X2*(CY>exmbtw zGpCXV#DxQ7A%Ks7V;OWHTe?6aYY00Mjt*mAAIx8TrX({Y5sy~<HDUOQCMxU^s79qS zhGZd8QOIZcKwGt~tvW$(uhVl*NI|++pqI=2(mF0}<nl=ptS3W{DzTvDB3~EVsmZ)| zxYsCoj^6JW73@Ffctw+^=q|0TbgM}uje0HBpd7Xg4eLA&7#47vA$4S3E}hP`BvnKe z?X2x$gV@c9OfZ!lNVK$Ma;ab@(HMWUt}wyM<j-&H{VNm}Y{J;bp|C)K$9h!csr#;V zNGc@r4$YKET_Ht9$0BGR4MAVIaM0ahjRjrg03Diit6wN%KY%0_IJ?kSlGY@tJoxFZ z$SuerYmC`6_VMudlPO}~2>QoUVvh)}%)teRerm?S!jK`9qn3pnp-7mYr|;Xbl+o)O z_~dt{SPdEb{$~+x!k&JGk<N(O+G>V>dPIjmzm#>WCzSJ1Gat%_!tPf;rfDD3qVIW6 z_KlkMMm>7{^{?BdX}dJI&>D4a#XM6mUuj(zrMA$51*myL5GtO^Q!gP0Y`2wPZ%^9! zT~^7eI{Hh;9^ai`Z%yWRm*DDc#@^HZeVY3v!Ijy(AH+QQCrN+wbx4%{ZL!D4fl_I* zR1zQj8zZ}{Si-+*aS5%cezXe{Wp>d{qr_K;tNeS!SxUgnOTTdOUpE*=G2<R+lv9ne z<Q#jc*i4msbWTSSk8}9&r~TE{E>=tUIR)4WN$e5S+=qa?GQRFY`peSKQ_wW=2hEoL zj!`p8bN)NpvKa3<zTZb+r>@34CC`d~R|@yQp@Ckf6%<Q9(|G+I-}gu~hT}t-QYKT< z_tSXL5vIATxo&*jtG;n)vn8IQ#ni|4_yfmqivEgoqc|&$-7$aNxn9Cn%}e4Z8T2Zc z2jv97-6&E6BrG{bmdm&_%sp&UY@}OKhGiM4mNfPZmcco%xd!Do!3VGp2?7n+wZ%{) z2r5R@tFNXH&A9`ANS5}QKJf{V^WqVZh9krNnu0zF9$ZLF=ni<aUy^bGUiPXwSV3%@ zLv@h#c)-|w5p;!s8dME8hJ^wtQ3jzl_!UG91r@}qGRsAVSwy+!8byn^I^wdscLzfu zFlDSE)wF<?N>K?FKrykr0R1Zg3_j)-k$nh@l2Q{OS<p2U>Tf2>tF+Jt-dBA464q=w z?y7ZFJYk~C-MG0=8kjuUiG-^Y<2^Ql1RK1uF)y8w+cL|*DciI0@l#hhZS8utq_p%} zqo+)QnTY4c@V`4p5idXvGWLt1fg-k4z&s|OAdMPC3jg3n%SE@A(AAE8<9aHKlib;7 zN0AUVfz3eoN9}z(ZpVj-+t;HxeoPLd{{@U*vY3~PnFscR;RaJ|s0_+iD2tlZJlf6{ zNpTRXh=cnI3%Rgv4u=OKk%24VQ2u|IdlUFJuKV7XX8_D#2ABabgPkA&5(Ger6gQ9r zs9myUTc)?zvK=QD6WOw5J6<H)u^l&S=_GApXX(N=Z5k(S7OPpBroDB0t=pz)+%;Ef zx~6w|E&IA%=iT<+M!h#TuW{e^e+D2aZ*kw}z4v(#1q=qWo;l}#{>$(G`$wVkgLF>j z$Ej2Wk7=!DIx12)bLP~^+1ZmbGqVun*_zJ~oA%^XT8%k)Os(5R&kyxsu~o;g2}AZs z(TBxO#T+C^%RTEqgadz4_5!{k{9Oh81SHeH1!a|~GbsQbx41YNy-zMnhji?n)9Gor zf`E`LqeJ1Tw-2sO+oRS339_UZ(xGAgydogH7_8e($A`3G-rA8|w0&3taxeg5S6hkL zvF^Rbwq|6?fg{lN=t_258!Dl0BzCRv(@Q=>yMt>U<vl0yOzp1^gC4Bxw1I%m$Dgq0 z&#zB=WKp}bYQat}d+~+YcQoxIA2QAN-(+_Su~;F96$-J(dOADL>Ky$58%UxUeV3{z zOv|z8yN2DF8F%<yiOktXG&bzbB%th1ClR#zIRlFu<jO*ZPL0GHMhnmgpvc|`c51In zYX_pjC!z}q$Xo;jFIDuDxuCOqFgu(v+;VfG=8q)(1RT<{?OdrGsg^TMzgpy_N)hJI zz5C0>lHmcq+c7y-PJAnxO<@$|{0uIQg<W$Viu;fFl4iEW4(e-_w4IV?jxf}L@h!_O zf#J1;!xNgewY9bW=XuDPCMJ-05&|bNhhTBI@B#gU4BhbgurE5N&WoeJ=%AZO`BtpO zw1{BV95U-ij|M9H_I7Pg1DOA*Q=F^z_MdN?H|*s&S{c)EeL;@r@T-h5W6gyu?482m ze9OvbCF#w|^Da=ZIg5T-ShVH=j1e<#lGQBC>v&|L&>v+NK3aX;%Rl&#H^dTYzitmt z#{8CVrbhPJbw88ZVfw(ueRDV?zwxc*$I|+@boz?W=ktyWcF4)0%%tA@%B&nH9rFh{ z7Q9(Ld{O<=><qn78*NmlpX87QOY}1|ZnE|wP-NCY>{@`Tt(F&=iZFF$ha;%y2%rte z*sXiq5_Z+#*!Z?aC9VAE++}-{lb;XQZQC|hNgDxd=wtO-!J4r4ydw++eWeuJZH)!h zY@Au3nH`(ATciF(d*TgQWw9!UXspP+R5HF_azZcHhAmR&DabR>R)jFsNsS!Is23-< zID|JY?}^6Vinnmt#oGajjqWJc=8Nv+o}G2r?pt9CsM5BJ56^p*J&n?2-CwWo+%xGG z=W9aVeqzI^rfuhezn~u>jZvjK@FnQ@zs~E&PH%=<^{_f^+-!KvMyA<B`A<@d%W>mo z(~R0XU|l6flzng7208~M&`jpu8`!4w(NNw?>~s(fpNJSTZyK&s2Bge@oGMZ!&jl=| zh(X-cGG0lvlmwDOyYS~fY!BK=^O~fJ88H*{RkFUX0VOc_!|$|*;`<_qt!yq3gL1!J zaYmfCS#ya&40400l?nNtZ4M^pthd>3v+FrnTZJDSnVzdlzYniXu%VYo^-6SB>|UV? zoW&uKl?5gTAW`DO<8Kz9f_MrFv)E}&kzpnym&&xV7k(oUKZ_#Zamow5;4D@O)-fvu z-ZCm=N&L-<OQJ`pE^a}M3&j2tc&*Nn<fQdehK-XQ6G}mbrn%Dz!fl~S$FdT>buqp$ z!6;2+UWt9y<6D<K*x<rFumNAN$N9j5M4cBL>V)-ti5p%(nQp2+XL=0Ai$o0WbsKlV z86jVXi1lUnvluBMXZr>F^~dAD&(hw)H6wG%mi*~HC~^ZG`FPZ^i9^QBRNTmfk=h=h zd|QM(6Hq46h?}}09Cbb5d0#F{o^OQ_e~58Jr6rGO09a;?MiN21Phld$vmg(N(S_}e zvs%;vJs0m&&^GWyMM9W_Q2w}3Pe#q@VK<So;O;>qF;=3Pp~j?7=(JeN<cH~;D-C<d zE@Vhlg<_4%OTc3naXnRx)h6;o&8Q!#2pDa`I_i3Uy<or3D`aX#I}#f!zytY);UT+X z2a)JOZW^%|wV;;_^?7Y0PZRYJy?Z|l)S&z6d?*R@9_c~ip5(eUXA!Qoc83XB+-e)Y zkgwWowM}ZFkUz)Bs~5r*kZnK}y%G#FSc+JrM!dSS5pP(hE#7xl<E*XXt$*4~CB+hM z1`ich3l9a&TDamgrAK^HMm-GNV0kS%ox=OH*84t0xfZju<NcM&`*u`7_Gr^Y;$6ZK zRP14%tLSKLo=_jKCPh4OyC8JxqOYSGk{tv$(2FU7KH}VWpYy<<tf1xIGxC}vqbaM@ ziU;Z3Yew#IveAhbQ2?pp73s?_Psa}&*mv;qPRAL_yPns%+_m>OFQ)tH&Eb<<t`l$3 z_q@t}80D3(EvRWapO?KL4@`zo_k=o5vUd%>&N|VmBWeUngJ6|VAq!!1eb9N}0q4F4 zS5}Vw;XTf&(Ic<9LbuAP-dUCo?AzD5ocn$Y|1a;$J<;uCByRA8p&GS;%E3B!=8U$s zB$a4=Lr%VEd&$`dw_kr|b9;8!)E(vcpwqT8kx3M!w-?DaTlQO*Q@ucc3c1)XK*je> z@(vw5RBw1c*K95|8b`?<GsAW3JqTd09sAcV$GhNah?V9<tL|M<BREOo)Rv1{Mk~|T z6+VxbJ&xSfmOInO=^y4Pj=}4t+C>Zk1QHG%y?_6H*8C+=3WWlY)9drUVw*~v^zJ~| zY)Av(A+84$Wb@H_UgCMY%z3-PTK~N3oLQbnfBt?!U)l2PIi0>zpZk2NbAiUjbZE&Q zTUuz@f2@C*=jEDT;ar>j@-g-a&!zk2E4Im&b3t(WYR|RhzF>0hpNp$|RqYTq`}*0l zn?9y6*S62icR}CN8hh{QTU(w;S5omwMOzZUsQdvr4Hx>!x#!5c*OncWBCFv~0!r0F zRtX1A-}VqbK)i~Zy{xbg--i^uDKJfJIp>OYqu7DJ&8#OciPe*H`~3sI)?fKu@q63P zo;d>vR_rVM|MC~jFG9B%uH4eUB*(nNye=M0F#!rK3$u$%Bh+k?K(v_$T2VkVc)`Wy z?d**R*iB+K>tULeQ7YPbIAbe?sy}2wdQpzVMx7KD9KB>L9psX5Mp@C-Fk|be?^n{* zYWmtp(cgx$6jv!{81pw#&5!|+N|^ap!S_)1!oDK8P`ju!O`NEw=8B7EDmv;#v0u<h zi5lsOX2dL7^=3<Z-NhblgTCnK_y#)O49PM2ANql~cSMopADW&90ZI5Nq$Qhw3Q!$- znz&uK@?tLFij-o)cPKv)8y0eXh5i<afa_{R2!cl2CPYm5dr)=a4p1z3<!y^UzEy1# zV3%p5@%0uS!QVgvRLo6b&2nfnk)nN|opB1T930P)gqw&p0O#694F8%UkXix)F%$4b z;5jC+Fmz1dD3D6%<3jas<E`hT*XIZRi8d27zHmKDP|ZS<c&P`tg~#JR67(VnFifVG zerl;8&r{30?QL?Wk@rDdGHkhoW?t%P4NvhPBl5g9$DHtA_dJe>5ylKW$9-gb<@)7y zA9xrR;5*#6-}<Nw+hxhae)QJ2yYCPmcJDZN8^$#Da0|K;*AF2s33Cgak}i-Frc!}h zF1!eVsi}H5K$t*s)OAa~B#-0qCwZJu<e<u>Q3!`VE^nEgTYuc?m*IIjpBc`eI{Lw& zAC+CAY1|8uv0{|<SM(RcZ8HAmHrzwlfBPKn%-S+@wUGNA8sgOQskOB;>qrgJ=fwTg zoA)-imyBPw&heie_5UVB@60Y|&yv<gm5^n<UnoPwUhCHqXiKGg^3tTi`-c!m23SqJ z0}KQWY1B#m`_vqwCZ95p^z{ORL58)^r66!HeLx51+xv`Z;oH$r-T5Zaam_G`I~GeQ ziyiH{R{NRo^@qe~6oZFOPFG1wSC#)kBa<L{8UCWJA{b%#L0(bPrerUAR)jJkD4_(m z2CSv+rhzA{8(d4@#|=u5j7&6bV6iJkWG><EWE?PH_(iIC=;O*_lEZ~Z=iQ|81uO9n zOB;vJq`cv851$E96nQ4W>C?h0a`x=zQ|b8xH@4T>NWV$tsmSw`UbcMt^y(^M#<OSf z-u0i3WaIK;G+yZ6ms(2L)$(L92zZx=BS)3b{&%#4{;P3z^L4&g#o<ivv)^y(s-|O7 zZ7_N~dz2K+_V78knuzQIk6ALmNpXenPef^(2piZqYL^lq-!$t!=N~`r$E&G)Hdlc8 zC|Vkyp@hq&my8vsGC5dt{Cui%Fga9C8*Va~pg58Ru*is8$#Tkso#mR$6?Q!mbyLHp z=anXF8Fiq(*d0-sOnyk9TE^u7{EI__R?;4u+=T^`%A~P2^5qRofMA92&{JlZ`A0e# zHTGh$>dfLyH5SAg-TmE0>~wjeSez)=+CxL_8cnPp?!aHFG@iBLftJ`PU=-`KqaOUE z?T$|G-6g_;`YoUW5EeK|Bs)@~yZuJ^JqPlo(X2}Da&{$E;(#*9<gsUFY*ibjEE%S& z9cjjMK8{;EIh=`o$4TZ!xBCx2Op^?HYNU{Mj~#R2S{RS%ZQWGX#4V8XnNmu_Vc&z7 zFP!U1?b|xb<9GmZtWmc3l!p|09sWi6W7Z6EwH(Wkg#iW*8Up2RG=%;d&uYI<i{Dx@ z%EU$oHAmn?WPi_2Yat$m7g_+x=L4NYjU{*{5PpM`Yt*7>Xs~!rl;GfGw^&o0VfAFc zZ<T3RsWm(-{&|U&QvnJEQM}*1r70d2?t1=*HzFuK&dIYI(j^WU$6&8fit4*>?siWD z2d+(xsP6Fm?)j=pQ-&ECxFXdW<r9X|b=0IFDAr(ckvdxZ^=o33RSI1xWMb~$o#10Q zH&1$>`bp>Q%q**Sl|Nqmv-NEJsd!GMmVeZ?f3&-AXz1Pdmr+hO+Dyi!_)yaqJ_}rG z^#XybFd^Vg$>V2Mp3@8iKl=FN*WP@1OPg<uYy9C5fRHIwAjz_MV7a?|@YyG}J@LgS z>ipaG#Fl3tay>CK3OpQJkbvchEnAXG$j%4k9ATgSXWCx&$%#EFb~fP%Tmpj0k(6-m zcmZHe{qBeB5A%0?GX6w-dQ!iCi0|J;f*!oYi!IxiTq^G#><*z_lpgr!Eyv~R5%qA3 ziKhj7UJ}EYr-&bLfCGBhOZ8#A?w4QsOq+A|IoeYrGnnakFo+T98hD(=0aEBZ+!|!4 z5VjtNkoBXDvCiVzM{m9LR%?34qZ1R+{K12Zi~T-b9{77?fo25734%lukR)30LP1Dq zNO)=i)NB52GI@U_#T;fbI`^wY+B07Jr+@nS{mv(x;Y7-er9t>QV|&n*l14l}x%9q0 zeLd;#2mT4K`9a#%Y*E3vgM&$MF{qIB(FO59Q3_qP7rFGdW#VBHG>AAHb5e~qkK375 zokct!UoBTNBc-JBs9QRgFI53SgPY8_1=mhRqL~!jW?rsQr8>9*st7&Q6`4djYL`6! zVh}LNQq9k{hEO-_!!6NFMu(t^i>G$GPBlMND{d>Ms9=r~+Aa8*F$!(=+h-CUg<gMZ z^y)|~@Tn%B|D(<SXJH@FWGY&x8u;eG^F+9JanB^a7CO0E{$&LoBq3Iv@r>|b!lyY< z+CdCWql_w#vXqh*tvb(+d*g0SFe?=J@&K`ysRL%YrfA8zd1m7%USHQrCSqlN{NwR) zH;Z36786xB6Hi&0z|CYxkWO13kmSTr_PQvrb_&&cR*HHE{1#*cwJxvc>HFf1sB^WU zun~Y5;|x8DS&IT7Qr`gQElWJE6{Hz|(<FsYl!EMN&PS>RrHS%4Bx`0_#O4zcmgZN@ z6p<}WFs6Fr3{*Ggl6)x1is;EUIh`;%ij5)XLC>60k(W9B2^}7<O!t^^eSdiHMOQ-c z-%16tw86oTXR4WHy{W&<;`4v|qATm^Dq61VO79@}wZs#nTxZ>Ad5%LVS6>TA$2t)l zvBt-(BiDTS%hk^awLpW6i`7-5=`|wDUCmU!c}xe1!t@bH26+ozL99%j=}8vWY&hDG zg1y9tPdpg)-uz}S`e5$FiQvSEx;HiD4xbu!`KaEnO3T*g;>*kN&soc#J-EjB<?VG8 z?PeP`k?P&y^VE7!z$`K<9#L)u2q#mX7Tcr{5J%>8i<q9Byaatz>7C{~gNamZIeyqo z?K^njpmJxe8TY`66DPhhH}~*LCRdJIqoeV7DOb8w4G*il<eO&3DLB!Sahx%Xg$lCK zLjHsqgLL~4JxZ=WB1zw5zu0~K%On1XJLApV>xK&pBL@zQxU;jj>34VJz^%3Y`)dR` zf7lHduBinzZ`PgJ!Af`5t4Yrd^+xeMNvuz55wN<)6tRG&Ek-~aal7eg5w-7>5aCZZ zDP{85H%T^koX1yrDRLr7{9VRc3BoL22i?$L-aL=QL!=guL{{m&4PnI;dtN%M6%sEn zayeVG9`a~QEn^4)zybAso?paKfxaS~15*ishO6}Kn%!GNJ;K##S({Fup0>eJtHI#< zuHeTD8K%}J93`Og?5Vha#A(>gCuGC0CPUcYN~)l-NTQqITHrBb4$|Gkzt4AzCm>Ng zijdDAPNxsg+n4RyWlc>z?bd4UNKM{rXD>6)o0r)uuif=qyNu<-Zf&IhW3O)sCM%7v z5Y1ZpG~RYvnKl(b3q6fFh*^k{%c?K!H-hCAvZn2~M;CKp0)Q$UAl|op&WA<GUqXow z38=#Bmt#w=BtB);&m)w>F;!YLBU3S7=*H+k8z<@K6rNbo8HGX6&nd(UBu59=7a>J5 zIAx?8M=BBMh>i2%S(Q9kG>d0@adskF1le+gowen=zBSJNEDQuycgC4<t6Spi<$*uI z@{kJUTybYnQf)-X7qEy1CyLq|!V|Y1crutO+b#ZIVrP9v#oX}Yqh|EVFs^@PGX1Qp zw}4Y5rW`+OyWvOU1>ydU{vYbPeV=gX)C#$`WZ?Czojw`WnYA^TgHGXMwuF4`8T<5U z;dG(Yvgi}Ey>PFD^IdpEv7=s?*M5<%_jw&zO0OSy19#5@$-Usen6Cxaip3S-H~Pjd zBUf*Si}IC9Ol{e!El3k)f4Xew@|E4B3(0?xyL}6-_X%Z;{7D8oRid%cd&_5W4hlDo z{7E4RUJ&M<WnNy=|9k6%45s(u80-y_fCR16r%!|IgEnkc+xvZdU+CZ6tbE#+FWNV~ z)jQd5XZdXE19I3kZB8Ij@W+L(O+T`jp86iR8wks2`cR&hscG04kZjOvkus=0INZcr zVBt`}s~|yGf}$ZrTL-1VQVEBDNbiqk#mY8*x6sGX>bo4<{RN7%X;d)vI+LD%&@cIR z%)*$@Wm47hb%WJZW_2W8OuFb1PM%PFj_Pa~H(5+y9*37Zne2UhB@U$kP69&7F)6uD zF$pJLsBJ6eoOs;H6}QzMfkHi53J6n*?*SVW%_9+wT$?FoHvW3|EcG!&hU+{LVN8%5 zZtc&KfO28fLZl+WI$}T*m_#ih>~DCgizso9=57|7?Kh}20M2~UowQM`t*DzLy-KH4 z;R2%?j(<FAtb8r!pF4N%l;yNCY)DbhbS_WIBzzl^y(P)>JO@XQgEFyFVIUd<)p^;# zEdvh^{LsM120lY?@1-q*tHD*Pv&<Ol9W+=;FycWhYOWwG&8*Bf;wIHtXX4%X0=4~# z!?)A(t&tT;lr>+#le&k9CCZQZgAqrv4+*gBg@LEld!5USc07S(X@^B2WYZS9lOQ7a z#p*|kKZ{sN7(nQUeX|(GP9<O*nXt3K-6h!$zh)L3IZmXH!m;C7iNG7RB1O{<jQ2a< zlouqZ$rrQ81-25fveVoK*{0?cNQe2+Q58YoEJmnx9waR93wD?lX_K)eM~wZknB-tl zFv+V;98R`GrK8Cd$Y?9(l0O(RopK&*1pJAg3S4J28Q<n+2@c1$FBrz7PS)EMPfilR zS4J{EnT+ptFW-kYtoH4pw^_zRT+hPx7~a&ZyDgp^b=*G-)9+I8WTvT)D!M_aA6UpU zvFik(E4mnYx5$|VvBmUMr9UIm&3IV-Q5^Dqh63UAnKMn2>-7s>3ZLK3i|mot^M8B3 ziEs&d6#L`%JUvLTM}iz-mXxppnxD{z!6}RVijPRE1)sP(X+7|OnRrul+1bC8`T3QV zQ!CBj{E+>2yH?|E2<qxgD)w;s?o#RQ@|&EQ*i3I8_8BjA`XyFXqXh{@FEtcBF9gSH z00~L%nnSdu3vlxjAbJdq<~+m|g2a>w3PO)e{$?YZFk{Iy<%=$+@U|0+9(C!eu$CEX z2nLGK`T?$Sb#WweEgo{f^U=$$-l=XbP?t7pq?3EP@dA5_Gd+5AJ1EU))QbNC&O)4u z(L(UE;#ItuyoT2-L=!~zZ6~sz?R#x2^|0;;-442c=u+Y00K{~#khhe4%D5Bm*wt>Z zSuy2Gy`pcY3ICi)n@@A3kgx)Ap~WCBE=KCh($GERUhiH#=HBqC80g-3gKYbOS4%zD zm+4%a$dbAsFFG2cAe|3z!lnS(;v*~Q(H*8`_T`24vNt;m*h<(<I4C6>?#Kof1gF`? zkO!g5`1KjAGMbH4%J$&GQ^6@_w?^>GTTmidQ^`0bBvKka6i9M2Ra4NojKH-Sc5|Md z3w6I9I7goop0RC$?G5@&V}!H>XhBFzOEwI6YM~*r5M*SBiAV}Xn52|$h_yZsVy}Fr z#nn>dU3vB}&?zqTauGDtdiS;1QC5g$@k6TMBY`(3!U1gZgucWh?fz9GAhhV#Z<FZj z;PHvE%P<#L+J*0^k?1U&{|h5TV;Ry7#|Ky5``-<w{b`1GAOUo=_fw}%IL?Xw|1-GQ zcrBwr2rFxE{L@Y`aPEUT8=wuSHWzk8DjniV5|4)lwRVJpn=o5_fr^Jlfj)ocusII* zZrfBR?djlVt36tpEKSsc!I@grfMy$$S`D|)433+JZ#LU?$3D3l)F#+wv~7J2M=j)> zMzl6FSZxpYVmlVTi;6@Z!SDlise2K0Ek+hC0&$(5ba1*ztgem*A(twbB+e;R*nEL; zlL)Lu1h?<lyMti2?PTKV_@Wgsjv+{hUI`{UnlepT6{5zK#OwfRpIrrh>p8Jy$6kg7 ziwQalgvyLTV+cHZm4qaw6v~sMGVq*28L)$AwJ6LGpy!1ufPo9z3}FTRgK+NDxmdBG z1q)`iC8CBo$@mZ#yFi2sfR<#ihm@0}awkpsZE<;(sfWti=sMKZmUF(|5bP9j!>FZJ zVvHYWnd~yI@^Q;c#XS<h4Coi}p?G<=Ruoj}w*s>k)xX2rq+BFOy8iuJ@e3R0#}R$R zPEw$iwj7Y;wZ2ab`l0Z-^zRqX&x`Kqf_s)b+Gq}aSJK2A7oXj7SF6g5#{0M1zxbDW zgj;W6%Olh=#;`B<IX$NYqZqt8af;mL>EPCUb(Eeh@5m9)-}&m<JU<)nrn~VsT-6Hu z&cJ`8Ej4$#plO&`7YdiAQl~%lL8>OM$4{nD{3-@Yzuo_mv6<7>E8|`mDGCS&QM|~w zWDOIfggNPhtNxJP81jc2b|q-;N{&{8ld9CU4^}23OG}Z7%0au^eIRMNl}xv*&8AS- za0mVYFLH`AwDdegCMSMwU2R>HfXlG!b#OlFEpU#wJH<((KR+I%_Ig1#lZIxCxX8WR zg1ndT{K0G~<55emkV@BA!cyyGNbc=?$WJAG;X_RMg?CMR$=u#~FNx#57Z0OdLY&c7 z>m{_Zu*}eRuvEBjv97i5)8e}*tW6D)q0;7A&=hNHuoW|HAmjv=6tbYRz8m<ftnXsF z^q#{v@p@|9l!%YMDR)quEfD%W2In+OPdxS*&mwHAt(YO2@CE$IL<hoXUEgk9C)?!| zbrc1Lq@xDUtp{WroB~^;ZF!#TdHe_3<0`G5V;V!~<1kqG&m%!S@8=hGJ8nLx584;4 zo_gES*Z9`l8y<VD$u41Em)K4cJ#ja-*M+%?A<P&p9RDW)FT!0`TgP3Dtaxp4nhSx; zK5P=EI~wqb&4jv<$_##-nJ$Gvrd2GJNjXtfzz<8!XVNZ7Jj_RN=29DNDhD^&X8zoI zWx6|4smP8Wi{aE2=!3ve<8~C6b}UIj4gNU^H@TAU$xug0jAfJ-z;`}JM-vA-Mj^hw z7p-_ty%vcDm2z%yXnOi1V;f&)rt;6_+hcHjZf`DJHCW%e-0xSVUOP3A2^UeN?pn<{ z!D(7LVUq^xFs}FrR~67}z_c(0X3Y*@62yB!)>x#&;*tWa$EE_}W)jqz#FUb7O@Uv! z>6DiVAUI2<vy??6zr*I^LnOsIP}{n$2a#slbJ=7WGjxB(yCap^4@T5Yxi-KNW+TGf z;G;9mQf4vz8@VRiPR>qdT(6l;S2<v@T%<x+^-51KxykBC^*#K!t+(MpCm#K9d}Jj4 zVN)0`Fd~^cz)$0SZ;g@cCUT|UmlMbp$=1}7;SPr1qG)#Lu?wNGii;2>No?=}T(TO< zO_OZ!U}AgFaYP?kXs@dvQroqEDp^^om8Xhko!sI_L!j?e)^qLBAb?}bpAJ`bLQU|= zXsotWNlxwGRRcLuoStvF!9*qmyic=}<U(2T>2O6?D}v}Ky!5zvB~K5YPSHWP)Q1z9 zA+n-3LbV*>>Se@=yM}*Sj-YSpbuuKBbuR8W@pF<~bM73lEexp8AG3P&DA|KVB*lBf z3y%)vQqOM|np<0yI=@}PdihvdVtM)EP6_cG+IL81(>hX5o&Z)vubp3-=(?wRUiTu7 z>(x-nByLM7bzM)rPjB6`xnwSka|S`{hv(q=y}BuJO$r1+{y+GtOpH@uEsm#NwT%(_ zGQX*M9PAP#4($p_<B-9H?zHgSOL4GgTwzsxIS%&F53*g`&tg4K=?bPh2lirjg17E4 zbhQUuOcOoa#l0VBXK<MH82a?Y&Y@>ZH<7L&pW+nM-3IJS{rwYOdAG!*5{Yc3lHFbQ zCJsH~IFC4w96x>u3v=Vgq08;PWFec~zCHgf_R5s}tb&h9vCH%S;(XlU@9{@?%RavQ zlJC#T>$kJJ`PZK#U|sIT?wO+ML?1&$Mh9O~M3{tLJ9oed%9--g{)yOFHCAf)(egxl zRzA*?y4(o%?XD(f4lFo+ygt*O9J12#A;T!tV{w^aAyKgcy)JaQbC%HSF1LQhpAn?P zOz(p-V#?YzlpY#R5AEDJlpbdB^+X&(nX*Iq%x8iHm#iZ_KWeX78;&$-Qfzk|KbQ@n z*({Tko|N<~#e=W}4~RcI^E|n5&mGHNwewBRpXSDLxv}l?mP-$&(}T6aRBA9?E|Zy! z5d&otF0{L?*bQH-l}W7p>fODK+2aRNY#i=E7{d00j32Q5#=Q^xBa$TKZzRfqDyGlA z(E7*a<>WQjeBsI~lh<DRmdlqD*CemGA>?x0n72>M2$R@qm}M;`B(auxY2ScI*5<%Y zxTRkU3)BNtM19A=d+2@OB8VKeq_?BUg(FfF&jM4PHkJ`uxDc3{>7-U}aSlus8@A_g zf9MD&eh_vJC&_(ke$+w}?955HMz)&+U61hA4z<DpW$6*!7)~3SO}M=9AEGeCQA|FO zh>~n$#U5`ZK^#s_Mq_?*m+MDusO({Ow@eCBQp41=CX)bhEYvy+nuiQ!QzK@yBa94I z9Or19+|;-Ay~ighitK;K_KGRXynG&?iU+3gs_|qngtyC#4Eag7Rse|=gJ1xL2;0Z+ z0ztS^KgSo!e<>6NoMwdtIwBBC(~o%3xCgl}q@d*#(pK2gj~>Mly%L<Fxi!WOe2>I< zg#UUc<NOj@noeZtMg{9cqqYj|yv*RE%-%WbJ%^;-qd2KW-)IWoMNZFjbGjdBkTacs z_rx|g;Hsf?%HF49IX96vRXR;fn?C~8=|JT(Nz=+CFfy4B#ErkY`Zp8X-C&q&PbY`7 z)3^kNGl|yCgBE;u8OL6WWz*1#1+hesh`nCpYJk@0uA|?eHP@rD7udm~(h>G4>aBGi zT3+_{jJ4*|!$GFGd)w$P6}`e;c6X=K)k{sYwbTrDatt7{y?!{ZGiT?C>Mz5@AdwFp z_n=KYD9lOu!<^;|cJw@LLWouOLS!97wI}*yj@N+?F~OxLAsuKlX+pg(t`y0Ml0264 zr<boWUC3S&jwv}y!Wls}*%y|NIMOou6^nIag@Z)crUM^kAOrIRIWjeBpDZn%TB8bT z()^MmuK57XF=9AU3yyRZ=LiJ8OrOwgSDu4XFu>Id$>>Q+=Eed6#`j|%!WCG>j@gH_ zzj5G=-0v*r%Pe~3EDw5?i+;iP7ykaj@0P?N#j!_wh_1)rWa1b#3yeqRDV2XxXj+8T z<z+r&!Nu+o_j)hc?M5534Y9@exSPPJg3y7WUAQ0oo8dt)?Zbse|EISc5_|LWpq^?) zc^lEuSX}+QLOVe05{YNmdEOw7`V2@LOC$@u%+;^;uI}Pjyvl#}eQx52o1B``*E0VK z*J7zS?H@9n4K#3$O5u#0hS%+(y)^zzR)}*%CNri2<_L1M<kwbzU`q39YW+?>JRq*& zLNx8g=I3KxI-0BG_!76;vOJWFq}@5nJ*S=tYnYq}HKU%sxt?OYRZ5Yp87Y?|W;Rl+ zfHf~hvT-jmSd11bK~O0~i)G|uHj>4iCwqSa<&TdKgh!IL4r9K;H6eVIVzs<ntG1Bu zVYgX%$*11!wf6Fh+HvJA;nUuFK6$n!eZKya{oc>>rF+{y-+sG(j`zIiymCG*OLhLR zFkOV26MoYM@cAAtSaU3eDUigBkOAVal8FnEA@{6RX)Q1atm|10E!uh7G+{zuJiC3d zfTy4*7|sxH3}1Eu(QxWX+c4SeOL`Z7s|@f-ibt;&DR80!JLuNFFFA;UrRZ7Y;%GzF zV5D*xIc$5mK*~x1+<V7jdfI;U(e)`Z=Owy{VSdJ5v?!wUrPHUKk@1hLG_bDw#}@ng z|D8HVoAN5G%Olm?Zy30pKGpB|R$oCVY%cW1gr)6coTKRS`@}lM7bAd6=*9a{I0+Vs zP9dH~8B<o@9+GheSZytIOm}<6)dk<CFjQ?Q2OO+T7cc5`u@?9v#glvlwc<4V-^KJ1 zL7ASEw>2q#2Q^waY6wnl`F1FhfS3wuD%&!i2Jxmw3fhJe*i~;qMN+WdPzo}2N?hyd zQz_B|`h8L4S_ZU&R4ShmpRkgSi0`RtFh|k%fH<0xI=9%#!3ZY3u_Iw;(^?ScSVs(6 zM9iW}Pfs<*uCgO1t*$*16uvcE2&}uT!NUIi>0EtmW;!xl7%N=X2%a`6Oz!eul?uU# z-L**Hy=ts6HGQNw$PPhaHn+dXro)lxnX!5fS5o&ww%);w^<=SdSWESW1#AxRV!e6? zZSo<ZH6qim3D};_IE_fwlZcjbIl-xIXu}(JcOaDbcRM+lt}n4-?HzZUP+DGpg31HV z^%`Z9Zt5x{nJP6y4(e%P@aap0a(^oM801^0P}PL}dNy_=Z44D7RmC$Is<VSZJHYG% zVrQeTOP)Xlt+kCeiD;Be_4;~=YjeRN8#(RDFPey2I@QZuwbV)wg<L%hPrMnDljC1s zvC=Ph%~CfZ?mUJQ*u)dS<yzdtPrbq=hq4&&nbZuG+9#sd%;j4-i95HMbgYe~m1a8M zoVsd9(7vH9@V{!i+suD1*m2bqE0zTXSZ!~`p~-j`pPWQrcu07BMDYQTYXxuh-n!R% ztF?FazJ&)D?wcDu@~OAJ)!Q41?0x9Ig@w`4>uAexj;PUZ#lOpO`W{}Kdbp0XX*J?` zr$70D8Nt5=Raceb>z4NULW)tn{r0NnH45#i!oatY%ISd`_7qAE*uECnUX&3bYT{ra zSY1+|38&6-*FxD=pb2L4;udCosJnEYeE28cbL(B+lNU|BhmqX$GTWxosUV))0jSa? znJ8Z$1`vCB9UAK7(DXIliQG*GKWE+L?Z{Pc+V4@xX|fOxviU*q2}MU4t_h*|P~5Ni znV=5PVyJiDkm%|A2B+V@Z%Qxgi=OAEKlQ;IKKaQHd|=bd{pNep_ZHqD&hA%eH&MRy zd^##V@(=8JQM-L0Y&Y#1>c;@2rfCJ40k5dWEb8X6B*#J8r`KW#$CqufUj5=oX<P`i z?TOh;I&0@=ysVE!ql#lSa_z5fc<|^{H!2vXRJoKaCi5kSi2ZO*#S<lItavt&sm6nm zAOJ_t_S|kyR!Dn=*NNW#uf0wni`dE-I-S<5x!6hawhGC7LEc~e6|-?s?@}lxH?Ldd zvgkk}FM1U>5Xw4UNi;*OTcULZNx;N(fYFsNDqk@_PI(rl+i83GDIYn1lv0e5in;Pb zh3`}%tc3+@+Wz?2r<RuTDY&dw%u1vwfr`GrvZQDEnnreoSU#z-DfWms_L%W>SOB#W zwE8|WBWci1>s*!Sf7LwI=sHtD@X>wE=A)JSmy(tHPdGs&bu6WVs%P4%+VV1`JI(}@ z<gB>&SKRLXuwD$Mj!CEL>wTgN_{>HjHa0vVH>xi|?pW>u72_Lc*9)Vo%S}}nGQT0I z0{;5%7DxeQ0B_D~f@HRkG*ZQ^F7kGv7ti1>1OuwQs`y`|G3%^ByXtC8M;F4T?zj9U zTwt)LuTutwgnj60a01x}NDdL#n0>IP%gJ*R|3;P>RPb=2^@naslc65zF!O@&V#sZD z!Zt)=<k|<P8=%8&K>m&CKWzl|lTxGfF`M(Ov&Lym+rgLEgk`u6ghRAKN1&akZ7~Tp zTYNxZ8YCkGMPIrpJ`9bNur~ZX%yvED6awk+imZ`Xm`ogUFUgfz%C~Ov!>Nk->iTi7 zA_bPH1Y2!vb5)uRGQ&x>^$M*Wt-_IvE}A88-#=b)b6|a|<whUxJE*F(v(!;#oOOtP zfJVdJha?pfPN%G5gD`EF`1x_H0oYmuj{=e(w@Rn5NM)7!=-mO}os^;MOT9}Av9SXO zw^6BXXnL-d-Zqwx_!O+q8yO!G(bUyW@hV6{M~eR62Mf>>*>=P{<Q^&=+F1%n^@rx) zC~wa?#}g5MWPGe(NOk+yQ(Gl*mFE{Pxth?}i1d}vKR2m%FxEiGN^9!26c`LSOt}qx z0o|egYt?qi&K~!U4_?&GXFDVKvI?!KW}(n5sL7G;?)(GE`*TKf|AFym@~tUp-KiFX zD?Eqf@n}C-m>-7e(rGb{0`J@3_J*>>uYbLGn~KLzW=_WMvv0iR4L2BCM-J@;;nEMW zmm!}ZeOc7)@IL?r$qv{knx^A+;h43+bIR+p&z~>WB|vc!O0!7)(<e`U+RLrwyz}4? z@$jvj#zRHm-ikieJa?W5Mt7rchkQw*7hXTGLi?bzXjvemMU;PWf$@l&0w5;l-p&!? zf#C?T*+OOBAm4eFn_)fp>#I*t31t0fjG{NbQofUkMT1z>x8)1ItXKg&n4Pe1lXX1M zjI8sweksJ0n5p<&oky1*qZG<?^K?!{oQxFTN)u=!qy}%Se9Pbh%S{6lVTXINMg(J2 zZxb<cIr+vm*t!uTJ8jA-ar%VMLu?jd=&92#`*Z~ok&I{zJy9u5q?<`Tv6Qy{Mx*K9 z^fm;h31~@tT8ncL=^Ou%;}EDGz;fdm1!tQ66MDtt;TKu`xK1g@QKPr;n`bqtp954~ zUif=fHS3=ZPK7V>>aFO-SXj|u421K!;Cl<)kHqfK%wAke1Q8;N2H62EODk<mj=<Up zCKM!`Dl-B0fsSN{kZ0tPkjF8izCAxbJTaNrotWG{G(SJIT`x||&dpgBh>M+)lb#@V zov%awM4GRxth_Pd`lamfU?N^JO*?5rfFAp`{vmotn;4b@-|dtVTMvLnu;uHrRq|6s z(;FJv0S$WsN_I4--aT97<CJ)cyR|<P=!*`I3aV64F;WSp1OBpI=woD|dwS6}gfrP@ zbCXlaT;vWIcq4a3a;02k2;W;YQjO%2s48L!#;;%l*2ZKd8{7dYuWTzW5&8MiG|tYL z5^8lIlY9oD{kYcu-v7O~zCU+|@z;iCy*VheP^c_OXA@L4mnlXn5=Z!Lpefeq9?7pE z4?|mZZ83sLZbL%ntht%`ECuNVB>xQEXZuJhXB|3Z<x)AIE-JVpJCc*Ar;{q!c$rP( z;)@~2T~caYG>q=_>66nV^JWo<@Zr*70K?f>#&XO@gIX|>N~EG{95&*^mjO<R{PgDB zUjb8lXy7$m`&1004u<{?7sfn-IvHVfWnmqFVqh2sEEuGsz+iEZNTzht@*)yF?)kl} z_D`lNWmumTW^^WHQQ$G4a7RqCU9pieg;FJTcRZCVy3B-bF$awwV5AJzk(aWG8asE` zPBfhbyyV0iMJlV5hU@-r+W@RYmcGy@!<7{=?A?BSxRej<ueZ}fgM}Q}ptzka3=XB+ za0Da><rB*XPo!Q0PSSM)KT3!&)N=;WNd<c<T8U&XinUEh7;8v!H>XKvkQ5E%J7RR9 zQvl6;+BR2`=p9Su#j95=FYi2h^RPEH?f$h2wmZ)6+BG|{w+G%w<HbKJeZDjmgsDID z^Ud=~CLg0+@(SgAv;8xQz0^M=T}2x{trws1`&N$Xl%u~M3PuUI|GGZqXfWA3<$gJ( zH?_sC8d5_VH!(_HjKrxnC;bqu4M2Ls53}Kk1gP8s48XVpHE`w7rTfOCwOxmJAKq5l zy*L^jZ13W|ygPIl_E@YArpxiP)7W0O(^f@Ava#x}OZK;-!@CdddpaE(oZGWF5*?h| zz3_&f`y~9h4zhbcr}9DE%k<kxbh$W@+}F}heIF4K9zgY?upyZ{4F4R_j-0?7cX6G# zdH55xrf!KZC``(gcP&Z;uB}}}@+J*G+FT29$kRb3o+H;Vm-H%B<<Wkb(~^XnPm_^$ zFr91$gN_|fNP(#MX?epPj~>`erk}%i4MKWiFzY39L1iRosRsLnW#m)&gX~X*2{PRr zxYWaz3aB;NwYkr}PfTia^*MJ(#iQNBLt+NDBqS;KE73Z-Btag$j(o=z8>Vnskf=Ns zN%`Pzh{+=!bW8@o!Ag*aLb&N-bCG2;6-n(3nvJE#a+vNwO}(Y&+GTmK+4RH##k_+q zD>&>)?a8?mJ4faV;1M7pXgZ0!^?lhPmR&N&1x1Q0`xV{TUa_3FqrMyS6OFutf(FM1 zBRSvCM@nNA)Awb)KLok^S@GBuNdVFxCy=@%Rz2$$l191&-vlM|ULT?6O>t}}a(}ck zRx<Kq!!ak3%NT=)!;QZZe%!m6ch%ST%G}qD^dw@2fPgTSq{xwQm`j4E$X)%PyA@2O z23EfEmS8P}-JGp&i@A;wry6Hj1d(Z#9P*hA$W2Y))G0e$YnFin!DRo4(7eO|?RznJ z#$%Bb2*(&jpde?6!h6SBNajiPh^b?+kd+;RfsmR|3ebiCzARjYR+P07g5<ImrhL;X zn^#lnD%{JmgwB8S_~F|4#z}i~t&FY7f&H*!yyIWfCa4v1%K$vFIHl=$^pZ#M3N5<X zPI~JX9N}Npc7WYuIj>yya&QNN|70oq(5r4w7zS+@w0p!Aj+k)iU(?3#l@kL+4NokW z5X=7dE3`WVj%u^rg|2<eiS;G)<^y>aJ+84nOMw`{5`zSh<NN3QRY^J^i<L#mj5&91 zV=j4_eHS+O)jRZeg<*wVH_q$BSO3w0PtyaMb+NBJyofTv&k1{^R60Wk=?Ib+t5yKx z6b6$yo(wu1q$DvF@~8x1UW06JiAmXP74q_Bf_N$3co4oV4uBUM{Y`|$K4psB2+J-o zgxazR-xujwqE&<%1c+EYyev*9`kt2UcMwG(-Dx-)%fua(2KW_$)v(3z$rPaHcw4%X zx5*7Bdj*9CUKFw;{21IEnPS<OV!u`@c^m>1umJZu@uKoQz|OlV!~nq9qH-MB-4!P~ zl7qp6f}d23BXKGkctP6D7;qXPek{}us&zWbRMsj{Op8G1ca)th+4Tafk?0se2&5sL zi0v3q;KWp-FqF<`C=X|YQ$|@sDp;Ak4`)$C;00DBkygI~_8-_a;4g|jz}I4+sKg>g z!*+7apfM@Sg<5YW1Ke`)!6f%bt_GsUu@Z%NBsuK5$&<`Mki+0O>idqwcjID5XV5gj zTf(tmb#Uww-Ax&&qXc=|fKRN>FAfjic5U^VYpU1&*K3P#?f>kx*G_ug<d`=$<~@DO zE&Gq}-Ftk$ef8Dz*F2Wlv7@r1QrXeRgwSs>!Zwe+d8myY`?|gKQ>j-go)Yo<h3CfP z2AzcMT7P8YDpoo3q<7b~8;7`*bM9zgz1eRC;}t<)lgKZVV~2htd31E%S4tqk_?~%H z$gVTXuO8IJMfKVnzr4hwrPlV8T-Sou_!l&`PCNrBlOg&gyG79o*9@zsk1kR1pOdhx z{Y+0I3U!5s{-&Juz<J8SL$$_dFV-7Yt4s`T#%ud?o%mS6=ZHs|3t5opINA<6Q$5Ft zrW=iCc?Y9w>53pwY-3oQ;lcFw=Uy!QSv)5l6yXuk%DueXzD_EU;2tr^`BPW4+-}z$ zzw&U)?R4DM;Zx6Pl8`44@ZIaU<Nmn*Y#pGzLi;vLe+cWX>Zd4|hs@I-qUP{F)OKX8 zjx5tvtZAcD_+xjj<c_Y?o9=SM%h|6jdVH_1T-{AJ^uG@k_mm!*b4#PeQLnM=HuLw` zPHE07)tBw<iDt5!Y$hKm?IC>9*S*U0B#B&IN@l}NWDtti38;vuy^_2r7N+*&aV10+ z$siO=4e5Lm4BjhQf8vYU&`-7Q%<4QO(kM$vF8!0N(LYHLX{|idfJ45Vtz=a;;-wPx zJ$3#RjA`UwRwvVzV??X%J(}#Lr!sbV$WqR9mCPFn(!am=UCNxwVkz60DaSoG3R(6b zNC7pr`_kQG|AbUb#?uqEbR6r)BJ86NdnW8*@8<&>w?{(T>rGPnltcEPQ=hL%u%~*o z6?pDj5mv%6xwdvTBo7SMrSJyCIYQS1p<?KtkvN;=<V%frsV~~^SM*CdRzV)UJZv$2 zHe%|c@va7^AQN0ZMG0)-;^FW8a4Re?H<y>m?h|^Pt~ghETtF!2U9eIc&sENu(M&yZ z&h11}IgNO9I5LBgPh?_Gr{>HW^(Z4mM2fNi-yksjlgk%dO#oPO@{=oaa@J~fTAx0! ztiCcWP9Kel(_?7hAL!o+9SxK4p#;K^b4Xz1f%X2(-qf}c?>)ogh0LXk?>@A5?|!J{ zhW6KfFn`&ged`adJSMU(94FFt8?`WCiqI||ygT3(8Pu%~qhg_>QY)EN$C0;>A30** z__iCZM<4yh^uf%LjJ$n#`z6hEYv1IJdk*7~4{gve&YzU0dO`hg9l>bhlG|&3So<5g zkDam){@Gqb{QSQZU0Po!S)eB;20`?OmAQcKF*r2Nak0}T%~kS$`!JUJH%g7j&S+uC z_lFA6okp%YT1gqu%Z1U~V7*p!(-9CYpj$G7UNji4S28DcZ9a+B_T}q0Y0U=yy~_t~ zqbH&ebZ}CmgQ8l{jW7l&YsEaEOMRQ9-!W3LT4^ub7IXO=(?btd*j`wa62lmOfH|0o z@On#oYNSB{m&^jBaLnN#Ki=z*9qYnMW2Q-(4T3aGh$f{<VHiw6Ruhk2V`nTQjt*iM zJbcFq+spvtg3A!(zY}~E7Y3y_?Lr#u1LkfgA6WR!-eBTc&g7|NY9;1BXkLLzYEv}I z#WkfeiA2(g<^jqRDsU9_pp;+s&6vF}U05R7o6KDmfzDVFz%;FFMYiOB+{$cEBhWT; zN?ynf06v^9E@PMfdJM}jkni+;`A*ICqa<%Y-Uh|m%E^;!Aih^m9zD9Q0pBY^>KQ;* zbpb!0?&BgEaI3?ib3xz4bAj7=q4V9N0l|`$;HdNH_19l>(@i(69617|Rr*v~-hO88 z*wlfAh1rYdZe!N$J!|o=#~HnXZ`_7F7B@DJ812Op-o66bVn1Rb&I>$Fi0S1u$37E` zQz`nPT4G{*s$R<)>EY38)<~6{Qo%ElPP&=L4ZW<Qw>&wr9R`7Ju>6Q)q=xIYz(@~` z){a<4B3I6nbyh=2g>&Km&-m5p#s5$9t0yz)%v<@@>8R%U{}1`q>Et5odb$VCUULEl zT3bOD(?9ipnJxG)ejkzJXGIv(E9FDppx)W|#-y=)RO(su$3q40isY7WW2QeiaJ8<{ zh4CUY_oz<3L3VVsa~!00M`FyJCOkFzj&$S}0-P>Q^lTL02gMe|#6kK1+ed&feire> zl01oz)p7*jDM>Bn702CMuk)wLPMyBn9U1BW?TjST(1lne23aZt(<AykdtkRe!HpCo zb%?lI0+La9RW1Cv1cPG6=<(#O@0COOjsAf+;z`^9B-vt+kd+(7TF?iAU4I_Y9?JR> zc^8Asyo@C<Bf?BTh*B_YB)X9Si~~*loFG1QP9Wd|QT5LHrUZJNCA1Q;WBikyiZ?pq zeWo(#jf|e5eA<a<EMSWh)Kh3&QE^AT5pQtN9q~ptpQSv>i#RKBJEXA4TgEO^77d&i zE>^m8i;oTp6^s197qa0)u`F(I;Y(;qL~FqdjCg%NiS4<}Hb1#o=#r|Mpk7eJzqn@q zAk~9npcEp}i|Y}N5|0cYj>S?nf)qH!XJ=-}3obd$z22}V>=yA@x3HK@)rN6Hg9tw~ z9RH_8B<3}_<%11)|BcAtG7xP_i^qUEnWhxW3Hv9Ug<-5I)UDB1Wx|wxx%EG?GE{(& zr&Qe9;0bS_C53DSJez*s4DB?@N7!UP2o)6~)Dey@y-V9Uy-(4a1a>%W;|{Q&^Cgxf zNjLJ22qy!&WPjt_xo_Cde}{EjUYj~^m~&XAM=TEP7X}k;DfI3JU~?agPjrH=ase2h zxkCC1YAh~U{Qo$ABx9<u6^0M$B%9|#Bt>!kXL|Vh<Q91S1W0_PG5G?9C){}mY&~@v zl2Ou*J<?q;boe`S`t;71#?EKW%c}ypuaHP4fcud?Xr9Rw)I8#3i|#2JQ~-9PrkN#r zDxY?%>PR3Ro|avpjRgS~e(7I4B<3_Mm;k@K67pC#0@%&Nl|h$m3?a9soMP{D^Sq2X zvBCPRJTGk#YHmTzJApk69s!Mxn4Z-HWPp|S946Ydy*p|iv8Q6ZT~nzf2KNmP9z1w9 zfD(&7wi-BVt@yOvsKlq^%^Ru0nMzmEHx88vo`++90&H@ohlIfEf~m~B%uN=k4?*eB zDMLn=sHejbR$3=g<voiv9KNkoD^*bC$=Us>@=lDLLaODBr}9RzHT6U8pSyocMd?br zn)h1cUZJ?XsD6QJ5ks>>>^Sb_iNr^K)%|_1C(|d$d6a9=xk&n4#-e1`AryKZY$;Yz zkgIF<&J)?TXDO8m4jrEP_pIUE1vPcqp=>I>b9d{*;Yq5~Zn=^e8P4pSE_mZDFW=Z1 z4Av5Z#q>-sFGc3=P3?IrL(*nF1jdp0*+}eOkTIpDK4VVLGrb`V5GD6rGGo^rVH<{x zbD94_ToryoU!_ZF+Ci5>di({AB?#;Y@e21t|2ed{7HI=v4HZQRdq?V@lhK0D%mQn{ zh>?^Gi37?50ij{$ya?*fw{J1ucFf)GZ*LR~mCeBaAYl2FdpKe=jy!Ngsx}&#!C~(Z zf-mwm_m=Grbbn5+k=#C_0~6zyt4Q<6gG;b#BN9s~!#t!--=1ErbuG!s({Z7f$;;dH zTzFeCo7ygBK4j8-amL<qNQnLun@k|9+Wy?z9v*JLIFIj&5zScGh4Hkv$BzuR_lm*F z4l<tm_K@Iv!e|M0B)yl(1e;BUGoq<|(VN`k%u|2$k%@bs(yuQZ^==qVZm&}Muz^<B z*D+1*JIuJQiERi^nh?McN#~El@+WG59+5IC!9<b=PL^1`^M{F6bZ;VZkrSCoc(Lh7 z^rA@Ygt^^va^0*`pBR~nE#>R*6V_BIdNfgv#w$^aAXp+BcZTALThio>PZf6*uMDmX z9(a9s`Pfy5`}gLnI-2yQ#9Z&iD#Hqqn1uLXi7^lg4spx?o=K6C!nUIeo%v2Xk3&Lq z7~;tgSP#K%MhX?>f107>&UUimLgBaB4pS^gg91c6xRTBSX#@67z5pmt4crv><2S`^ zo40V`O2P=(AwsV}wl2lvsAq!%6HSEzw#hN-2djLVyq0*(vThP`kDIKNc~e4&*#FBy zEVd9!+jrS%KKqML#_@qeF@=Yd^e4QWRQ08bkF11!%E0`gwy<H8qskMW`M1uKL4AS( zy9-edB(fJ>V3A_3hS)Z|z+DLrC-frC!1hO6lcbdvbVpQ4M2jexbuv~cUTENau>fE7 z26$(LIRG9Ji)1$W_cd4{uZt&f5Zg(g$~Q5KXg`w?Tv-H-ZJh!8#PffHCP4;XzryJ0 zm6b%yP7$`Gjt<_~WF||V7&mViaeM*KgxT*;Y09vHl+=DF_io1kiRI+W?NAH&!Y^0X zsB6`YYDL|uj;njsgY?5ua-Ir{3zq0*uu1S_h^>id(=ywg8F9p0*~M9_$qM}PvtR>s zJd}E|kwO!I4``n%Qk1ujS!fTdwuJ*r1Ts~h2+%`i+U(4?7JwhjV)bIIi<U*1ryQSn z=Gz^Cht5GaGMg7HEx!E1oGf61&9$hWTxibb@(_J2aI!j`4CQxrepb#mN_D850C7iA z3K)=P0lwSWytOzF0Er82nJkl!)Y09#rOA*uH##0Fv^Wn6ow)^3zjIuOWlHB<m~FB+ zv&0bKJSOciCurYhD_`i0*5~r|nO1>}z=H6!&l5$Es#jU|<5_p|3|fP$m)g5zdv(}k zv6Y)?&(1M^78b26$#R`{M<a%J8Kme+4W`{X+2bH}sS$=jL|`WlXds@#QBRiuLm+)u z=PAJ{LKFeCg!teUs1S-lOST6|g3xBgqFJjlSK*M#LX(82oe>jd5e`_F&YptWi^C9g z;5^Xr(#1Fev;$?p3`7V_IVgL}0pwlw*VV1~lp{e$z;=w3bTe!C)H~o>z*|v8&Mp@{ ze#uomx+InW36EUy5i^qT?ZKji2gtm#6Rb5k=^}^Y&Z3-B?yVFvL8Fyb3o0q@hI2;L z;|xmcFIeQNxZw%)A;Odd_XD~g`^e=9S&LkxDVLZ^!uw@MlbN`SOdu_eoX4m^l`pv? zXxyMOA=8qSe`!%|^ce9S`$x=V$}sXCOaLG{pjqJHgl=d~X>@%S_TZxQiK4MMRS1Lt zOJxbENW;tJaSrS#z6y_-7y`5|=YnOOyVBPfv$!Zl8AS9N%63~x<q*?JlsIo@Fo8g# zq;y14*MatoY~z@;j0xt9qM30g_KZ@G3L8J9IGm66;VuXc@ut*A)RSCxq`>WQmqjDx zdN<O1FhS&mY>SC2oNIl?|LX>Re&8H5Dv~LogU1p>#tuc)hn2nrL}M^S^e6#;A>lS- zesO^SJ0mm#eYqi4QEOg6hSY+<Rn6cKzT#ZAHOB&2U~~v^U&*0~xb2I~OGWN!5&6KU zL~+mJ)aH;=hS+`u5IgnJJ)DNAJZA|5GC#^J(Ok6V_C}<hx4|JjBZu3J*@*Gl(VT`I z2-7&Eo_ZLs?7$!HvuQ)-E*xrn9Tm1ShG;=%A48@a{fG63#6kn&rVNA~yVU#pu)WB& zl#$K<FBy3>C67e<g-wi2n2C6x(IHD*bA;5PLbL4>PaXw`()2=;XpvMIw^c0RQ?JYx znjfZ+Wc=+sV0NJ|>hUWj<}n+=tumq^?x0&rSK(YdJ=l48(h_K64No^5hVr=O+{FG^ zVG#GHqeUDk_0GN!<Hs(Fay2~mnC`zEOb#Kv3rRo+&q`qv<VRetgdry^(R6va0vNfS z{e&0kZd8Sb!Ga?g4swXT$Tf&0Q1<Hy{^41m$J4F3dz=jnmL7Sd5IZqa=$ovfunIzl zYqt%{$&!2O6ruDplc4#NK_Tf9$TodDn|GZLaz|XS+^q~bL?4v~r6HuPC{#ha=rJVM z3Lz5>%S(iv3`!Z7Y)GZqzmic)ExxqAA4;;KB_Q``eVUU|#-*uvRh%8t8vHL1FctA< z0a=JdTpExYwjjWeIBFclmOGI;wj7T(VB?$=Zbx+TipRjMG2Uq)d>zDt;WM-}6+);d zPG~z_Jm-?<A8L16qr;g4FcObWVfuW0G{Jvwy|#X3WX0HX$er6`Q!>^5M?2#D_rHt$ zx$#rJ5lnYdtriw#c-#<c+N)Z+QB_Tw#65E%G!-5@dX$L0#O$>qaO%XlbG_KRDY}3P zeViHe?iQNM#Ylrb!f7Mdh)J<!wj{VoP56zU3y6Vc%VbXFe`|DhFC<)|ClY&a*8fLg zq`=>&i}F#N%a1x4-<_>_Ug8+vS(^?_(@B}>OdNK}KTtkpi49fU<`KL$zm>`7NAmgG z!jA`|<scp%9=8n7S7g2Mi%}RV&E+$8bu{fI-dd|i@HhdP=6Q-b7Pe0xj}T@JV902b z8hc83WQanFfz>Y*w*GVO!h*Y30xDs-u=VvNS+mD!;~(iA4?9}WQNGT2B5Ey#kS$bl ziD1hz3IvRelO=n?DNPQhymt@p8TR&hL&x)U;KJ!smCC7u<KvH>o|rgz5#FAQdUo+< zZ5izumj@_FZDmo-OI~N8F*>E~1$}eqY=SV>o~(VUE)4k^w19?%N)6V*GH;JF_51V8 z@+wlNLPq>EiBu|4x;I`Y=X)Ddj%Qw8uoye3#6c%@LaVTSpQjvq@fDBW5*L|?UL__X zDa8Ab{fJG_ZZCUYsvjn5$fvz_R!>>?i;x6w{?eE8^;q>Hph!s@KI4dS2SfW{B%HS7 z;r8#JdXy;us#K*EhuuWajsQ%z_?s_z`{jG^xGP5*0B@%>fYZBwQx5xr`+xbP7xa9? zJk=u3gAX<(GgkpjO8aHcE4M$wRJ{jgJDIWd?IWm|C0_c1e*dLgKwl^`w#2KasU3eM z{<1s7J`;~{Q*4cbJQ*x@>TZfYi(PNb3;qS$gRcx=vy;bHhEghN0owmWL=fY0TA`vs zG)iPp9HO+SO!plQB_vfXrt(&y6>$g4*+gvT5@92xpKayFM$2x6b$`jEz(i)K?UyiJ z9X_pUlc^+r=Tz2-jn>`K->rDbq>3&kXf0<VTX~<m6DutRv}70cf{>$#@oz?2h4EB0 zksTazckYVkfYe$+V`R`I5>k1ZhBJ-HOQKd}`Q3$TDp^YbjH$cuCwQ(~jgJ|r<l_FJ z+~nKb-SK>!Nz#b!c6ZA~(SH~?y6v>jbd%kzML!oqOrE8P%n+xUlbjr#E79|E$~I>- zn9=Vh;$4aEc2`zcam*2D<^6ncS~EfmR}qdvVWC)E)m>G;S=8pH`wD`=syD4ah~Jg| zs^i?wZ+bkVgGt`rK)`TnEyyn@{<6^vekUG{Q~VBo50BB`pS|_*8{$g?r4|1J>&~=n z*4v-n@-LDN+dwd*G=YdlmCG-Z+K(-QErV!>n*qVjR|1tCR5-C!FiGe^SgVrMyQoSr zkKtq4Lt_&=w)?s5>12VKG6rfoZ6=d$0&NFtAnLfKYC5f=@tl*-#&L!F>A#M9rj@Qz z!>5=`CXIxbMA>B;Hte{^<<Lt!*D{k%j*tO5fz7AQU*M=M^IRCM$2&skT9BtYTD}o8 zuVZWXe5p9dB!VE0wC~pTWgTiQ*x9`!K+hdV?OX!$)OFUnD~+>INUhlXxNNV4$q_f) zpg$j7T3T)Jl1H~W&u*MQoM)}gi`Y0bo*(RZ&M%2D1UK5>?P8`c?Np8&cVustb2(0S zU(H!>taMj3EnU~?oz*!i7rM+x7f&mmz11e?4~3r0^L6It3C4U|w*dE#kGR(g!b{k1 z36aUT^R)j^dzINvH^oSeqPY%b0KoRxwNcQ*cI~1Xw51dg@Vi}{#%D<Psa-0C0_4Yr zb7@VMMr(TGX9LRLkg(4+g}&S{W*=zAQsV!d7XUtKJ@A#{NTs8q)o^Z}6JrPABtwXw z>I+W<L}y09y!SqDF%KOwufm79bLr~Xp+m8&mssq6iR!l_Y{gmGP8LoC9Rj{Pb_D%T zc|JNRQgi-@e_On&(n@Wedvg)qE5dGpT$rX*lDKVnee@xnctdmnN8RSK7U{I$3)W8< z=nRO0#qm_ZFSso-#N3uU?p{S}Hl*mo6ZEaF4dD6Ui`L+FZ8TJ=<>s$FQgmB?ckQ)# zx7BiQ(XH(G4V{MLG}glJ!IJKRHXsve>fW4WftSyL9+CPdP@WWEh!yWyzsE}pFRYZe z)vauN3ZgdsD4R{G9#yq+_@S-sLtzCe0gm+gREU8Kb-rnlg1va#0+<7G<%#kzG;z`c zYhc#EL(y8K6i8k#@OfcHh-Xutm&5=nd0vVfTV6qvNQmXdzuv14apSJv+!<MJ6t??r zYAk3~-ONOxT5_|~fyfINzCKqH1j6x_Q(1hE)4fUos8*zWKv~_Y)0?EPGr)9L67Q%~ zdjPkY6RkRjGrQG61FbKh5J@#mBeZ6vv5@WJw$zE*c!!v=>7E~QYdaj6v!`lqb=s*` zo$1InW2h3@W>$vG@yO6nWZbG$a!gJc<W*E^KqkbVCkz_R0Ql6_8K#Dr0xDi}cGSGu z6inQDVTTjQ&enLOQqhOeOQ$d%6=oOK7RO2==)}2TJFz(Aj&X!2=2!G6qQ4h262Ia> z@~&P78tnFgyLeLbi`ppOXJ9gqGSaYNxmiGm^-+x#vBcOGN`KG^h<Y)$n=P@JN1KE- zn9AFlP!x|I5*~74QW#$7guIQJSKJo@FoF3tGAJG>z#}%nOney_TF7q<H53?HfV!EO zUt*q7s6Nh@2ZT(@rDD>@V3@+Gnm+eJhvgA;AlW<Z4sseaB7&!JlX~66+-MpzK8i6a zni6&z`I^{b*(m6B{4^xt!NKU{%3i^-OKv&ml#+wlvs*lzp&l3ZA)NJ$bw)U2oDq+d z68T6EVx)_lYFR(kfACee_vrR{m$>`OZtrpSx`#(UnYqL}P<DIruir;SQ~uZX(D2N! zuJ1)JxSH?LxoY7R_Qz3JM=e3l^axkkn;(%CZ6>KcB$R+se~~aT7`IcWP6tCaO!D0j z2YQ~+9)G9TR+a;Dkb`d1C*wGb=aZu`h4vx&#>`e5RT$cvd~=)V7~R?h(m3OZzc`9q zKVg3|BiXl-gG>HycSovKOxEz0oUo$TovxMw-+AW2q)yHaH@bFLaz5~c*?|}S_VBzD z<m7Z-`rLSsaN*+C0Zh^3y3-CP6kH}G<}7B0t=DsQ3z1{0oZ^qDQEreVO8EC6u9LLU zEf;rUlMr$>RUR&<My5tC8pPiopYr47K^;;L=gQ4%eaSX@x$FF%*Y>@yN1BRj_?PE< z&naYOW(*MML&k4DCqyNhK7^{G_Y;WK_5moiR_=nUaG+Kdzo_AO6pA1vZsVJeYIR}r z#9p*bZx091B-gcRZ)rSdIGv%3(;r2*5$!>x0s5WjuF+Wt-gEqC929Ok#+OcS$Vc$O zB|YQsV!pplMq^m#0+UBPez^W5(@G*tBw`AbR=kj5tVuEewAm^%XhZZA@kh$$p&ig) zZZEG1Wsa3e0r+=Psf;CGbzT<bGSl9um$s9Zu<;P0mtrwctHz?!^0v0IbY7P_bMS3A z&Pb7fWROoSr}HMc!_-zzFQ@Vn$ZdovVBvdz99ybHug@^bw$anYb1|RmMdYdkCOV{) zWi1@BdlcRn{1Lzhx%K&{uO6R#9OoX{CDBjByl8YD2YW2~clqjIxYoa{I<m|BiMxyl z$iT>t#7qLq=Wt(=$nz;A{JVhe>Yw^{gy?*tftz9(_D(`@Qp!U}?2aoCFR#qC00=ZK z``4H(B5&NTPZt>*!?8xz(e_*L+|5O!yAL1U6N|RQoB7&Wcnu??Tu3rv)NW#B2^;g~ z1KrNlVbYHJ&s+4Cur9(3F}D5kyhVc1o9Q`%2f?YM*9gf%|BI#jfzDxF#2V)L3UUt# zAjpwxLsZHddJ{`k`Q~3vd5Xv5>0<ox_)i<yl5g<>c(GWbVh}G$jYlYkwRooD)OIXn z*uL;F2^G8r&O(oT8xa7ZJ|p(J@X?5;P9y-652+6_0);vJ1L^OJ|Bv|UoBret#iA<x zjq9HM9S#myCmg%H3(m(x|I^m0zSoujNJC9uPw8R_6wq~;?a>f{NIcP~1eJWLl*g)& z4=jsEx5%qty8F81<lJO(n{99FFR($M$d;3a^W4BX=kC=n4e-Njks4BtaUr<s^-vL2 zYW+l5HLn5~x?2HGo2{T3<4x1-NZ_K+t-yCgwop%g5ByJjX%+5C^2!J3E+g_E1EFqm zR0$FT{IM3u8YhULi7X^c00R`~%FVJ`w3tx={m6QO{Yb@y=l|%PY31b7nbB(APo=VB z=~6NQ33Pg2CX*~?^QG;Hv`eyYC9^_$VmA%{&QL5`26x!RhfA3OC*uvKe*B{BV6j}? z<+*+#mkF}HIbZy4FOeHXLxhq_C<=HXrzq!s_SwgLG2wc8ob+2^<v4^U_vpa;=(iZ# z0<g$2Y$PO%=*4lv%?NGae3Q_6D2l^CNk?=&GXxjwt;DUv0~g$%0d-#lyfN}y4y8fE zUPPkKsDLQ*vIzkjt`f~>qjun7Vgm$_pgT+?K-5_%UlCIypCD#Y2F1;B@<$_Y5@#V! zINukY*GgDXU*`r&tc`dA%9=7(@bH_|dye~57>L=fC-6fA9Y06^lhkv2Ys*_)^qTj7 zQ%Bz-k*uUiQ;C|X#PJErS+iE6iY_Vcc!|fMYa<w8CXGxzNXP*m?R45AOPuwD1fmY0 zIkZD62E7q4j}gm(1|V*ip$a<=sEnx4BrzuJD}A^sTkazH9$53?T-+e;H3o9~3Pz$# zdfM56tn#9gL>Qw6iH>QBzZ=({I2L&l!_mUt7^%<#%SfrJu}}S2oIEFsY|lb6kqAoF zkqmiYqr>IENfh%rCt3c1+&16N=X18dE$@)?HJp-6aNnMf$6r&4$Bi-SU%XyT%Iy%w zG}Pt!W_@_DK%~Mc3=UJC^$G%(1WvjtiGu{UNK!5NqqV_e4tGXrur}(KEcM2gVOee3 z>`nBuP}cPC@6Lf!Tka4r&*mMHI7gp*sXN5MzhN*Tq{Q0PHWOWyiX+71>Qb>7wIFYa zqk*p*?U09yS+@h^9N)VgGR_;(<wdWTDWSJu#8UJRzSDQSlsU{2f3Ms|1aV)vk<6rr z#YTWg&P5RqvAl4RiajGKa&e+&bkt*VCOXK4eFSY{qmR7G7KHu6LKZ_4CMGI>0O|g3 zx6!3mlnQ?FMk6kt7Jh_R>@VM|EfVo&Qy;1K*_ZM7PlmxHSMi*X%Rqe8VtNUgc}NrM zAXIvFs|66Dr=M_M{Y&L0uko&~T(%Tc_FX!2JX1}oBz!=c_T~@;>YBl?WSi-$y=w}_ z#G!-r<ia~$wy0)sGi%l$sS=@KX&dr2ypH<!zK#~!+AE&Fc=YHipZutHurMS4X3q;t zaeG=M^vD`4TfOCwDJonaWo@pvKE`}r=`EYAAMY(Y$d~EfvS2;0<L<x#u*SoJ50?#= zAM7nhSpNRrvasoWsJ9#=%Ji|`vdQ{i>Mc9emiuaNIWf>w$y@I`e&?<C-FxkAC*FMb zvHN@9dLK93cK-u+-gj?pc4~IEx9Z3px7B3(+U@t<`yg-k*KWA;fj1w!yLR1!Z$5tK zeYK13JAT_84?cKu=k&B}aogQ@-#2yZefJF9I&j~>@qs(_=e@)oZW}l;@aBQLVc5R^ z1;1Um<qd3kKP=pLvj4pUHS9I9LS|pE&k^DnxAANL_%+%}wttXyvUES6H}LBNobwoG zt<kOzvMg70AKxzG{WwRsgS8J1oE+H6Gnn2u#%=6zH(N~Uv)&Wh9{v8$=L=ry_wa6r zM}v8V2u)ns%25fGR4$rGN~Q4z`Q+AQ6(kX0s8HJ&Ll6q1`wEVtrbg7Ls;e>8P)$HA z<7%7QPJjw7DaO^bno+ZAPPNrM$g4%wQC+p9c4C+8MuQiLyI&np2h~ODVs%JeqApdJ zsl(v2mem#NN_CaG8l={1z-nEmj;QO^4Pdrjt8P-SQ?FMytE1qz-k{#7j;UMJt?IbC zP2H|es5{i1>Mr#rb+@`l-K*|XC)Fu+zj{DDsNSp|QV**~)LYb}>ig7N)!WqD)jQNX z)w|U9t5x-wdbfIydawEc^@Hkt>is})o=_i9A5<SwA67r4epvm8`cbu}eoXy1sFR;i zKdC;deoB2zJ*hsfKB0bE{fzpg`jq;#`iy!?omM}qKC3>bKCix@eolQ+{k-~;`UUli z>ffkeQctU2R==YDt$IeCQU6Z;s`@qcW%cXoE9y7YSJkuXH`Q;c-&Vh)ewSzRHTCb+ zS#?hRzWTcQ1NDdMkJKNlKT&_GzM=k1{Rj0Q)qhg|S^aP7&(&Y3b@i9(e^-B{{#yNw z`djsP>c6Px)Hl`tq5iA-d-V_Mzp4MO{!x8Pomc;){)hUX>f7pnsqd)&Q~k60u6kbm zi!s2ADzPk$p#gFb2T11_2_tE^kdvj1w2?6g#v55c00g3qqERx+#-LF#hA4ViHEPC) zF>2I}F{5ELjg~QPY%{hS6UL;m1N6$YF=Nacb4J^kHx`UVqhoZ9C1a<t%h+w~AzN*q zvEMjg95gPX0^T9x65~?iGUKpuxv^|qVO(ikWn67sW4y+=*0|0%Vq9<BVBBcD*0{-d zo$-3(X5*-_V!Xk4qjAi*#kkctZro<vZk#agFzz(>vm|ZQNtrYusm?G)@`!8xI%{ z8gDipG9ES_G2UW4YJ8vZR^x5P+l_Y^?=;?Je7~`3JZ8Mxc#rX3;|Gi%G~Q>t-+0`3 z!uWvkLE}Tlhm9XHe%SaC<427(<Hw92H$Gzggz=NcM~$B{K4v^=eBAhi@zci77@ssg zWqjKBjPaCl+W1-Hv&QF)&l_Jbe$M!!@$<%)j9)N*(fBvUFBwl8zij-9@o$Z1j5Ef+ zGk(?hHRH?1uNz-6e#7{x@vQNi#%~$FZTyb$yT<PsUmLKF-FoYNZ@%}z?6F%Pyz`-B z58k%pmiuoz_NJ5f-FfeW4@8a~KW-ra@3`}!+ni(f-+$l#)yI`BIj-B#s@swmdFgF3 zlT_VG@{p=L>7yu#mN=$J4i~%CU!MamZg+Z;hp_+<pg<Bh0M%7<Z9DC!=S23x_L8@Q zzN*g>$xr^}la3YR<R3qYg2^+IeJ06pm$ahAQ=;9>q>S(RBp~hl;-nF6j`udVm$)l4 zn=}&4p1lVP$N5DYS4U>oVbR>S&TF$u^riz)<E{P}2`8DGh;2UDipaW?Or5Jv%K<<7 zyrG|&+4HWmtUq&4Mu$Rk?4sRvR`65L90#S@0LrgHT^+X%T^Kh#lUxnV9ze)eC{zof z#>DC1N1V=hB>UEJ<pfTSZ~KY&=N9^Pq!KTM^Ly|Yt5w{=8$-KyC?j#_n!*KB;m8eC zt)6+?OYQh$W@h##X7T>P3l;fe9=9A@X!#)r$4N-Zhu6%Zn2x+nvi-fRFmaQMb~@D0 z+EKPjrtuv?c*G>L!xpi~EUkalOJU3c0sKxILevp_7~&>K?D;;i!4OkNW`lapTkTv$ z#H!b)6X$3Kq+}+|)PT{poiV(|nRG(&7d&UKaLU5<!BKB;xQQ%7CKN6xY>t)}K9DWh z9Pu>Fxi%&r-xU@CLn<_crx8+nxMUVMc;S|f(6oHO%6lxl8W5OU`ic9n8JK4sh1S3k zO0@pRLislC-)+SIJB@s#e2X>)6Jrrfwn5=-;w1R+=l|3D=a)fp;m-Omzg76x7wIV| zfDi)p<HdjbpGyDuG9vYOXZh`S<6qYilncga>-lg<7T5ut63_PFyifs&He)A`H<c*7 zvFTKv(kKOjR*LujB?%<Lr0tfLp1UM6EVx2jZi9MFa!Ma&eS5NO=Gmbv`(8BgGDKr> z>_-yAtUpJq98B4n4|#rboIgi|^W3x@4DWdWzs?Jb<G`EyVT!<}yi=Pxl6aXr13GWn zh2>mC4==F{%i4<=xW;nsWQCh`CnRqMaXPgqH+<MfQj7{Pf-@mG@-2p8=7RLXNS+ie zpW#xrvRvVX!!BAmfTZLV(Q7&r$`#6*1N|V2C0nqz4Io??C)}RT#xLzvC{(0f#OZYC zb)?t)t(Rfo4SzFC4H0NSB61+{gu;lMhA$Z}hX;@w;KxAwy90_L1cYLC*+!ZWrim2% z6>JkpGn|f*aG}GRgXG^6yUd84Ga$wys<d66KZ%J+6TAyk5m(cXJK)!&sNn$+UL~$R zNo>*fgmM*6YaJ;-K0Ocg1B--5$IMBA>SdQQs0~*%T~w_`%vOzn-f9%6-XjVQiW2b2 zHzOewkWP>|l7?BnCHlmDKSc`hG4dZIGXb^E@?QZtkc!Um8#%fY&%b}s9|&sy{zW|M z*6X&Pm>RkJ^UJW}*E0C@--C}NK(?UjGh^g(_~4B;(f2q?@+ow2&$OaNM^1X0fJi|w z3Vb<c-dOz;$GA#tJxbm2COJySwjM3(IwTpMW@@QU7ZUh!NK!<z$I;f2g9Qp6x6h;1 z0SUce7f-EU4Bt;U80>ZofI2ek2`7XQswUL-$4Oi94u}KVTZCH;f3>fL>h#+RiGUha z33bw-(VF-*9tN)OgmZwzxaY@2Tb{!rvTh|XrRY~b39FXsr_<_q<{j%=+6#fU=Hbkj z2g$Anq#=}Y$TgWm1zaWaM@rK)F8tD=$kU$u^*8d=X6At&&T~M>G4m+60miSHMG|w_ zCZ%tmWIu!R;<P+}64EQ5K1t9WynGVGx9{&o#dinzD}J}ID?Z%I%X*3|&PK|`xlaSd z6-1y94s+9P0nOGqSDz(y++C1}%i#4%yxmD0((o+#_NH@)=t3}NQTHq2cGNji;6MgN zq9ybDNNEd<pp8wrE)fv`zog|Y=V>4Sz@uIx(Vn($Lhi4r*#azYq(%V4r~z?KFk2D1 zn%Sth-_A@B7O<frs+pO|LHtT&iJ>gp-^(7rY^eRFd&PF<Ba%ofzNUT)FRUmG>Igc` zEc!gd1IX=6nCYRrngw;~`x)SlXp3!CMOEf$&ZQ?;30Kd-iN2bH=NrNj%HJju5ggYb zspvOKx0$Sz_WYTC=$g=a6dmj<tg~dJ0q`f*^F8HLYb<IezwWginG)}D&sI2RgQGSm zEa(L{hM{ElOzmPTnR2}%x&bC2@u;k>5?LF;l-?SFDuwg#4@Rgx{sGUaxcFt2m>ry2 z+SF!OMB^un2Y3S*z+uwWW1W3_G8Q)gx`MRsSD-`A09OOh9p6Me$IjQk0@k>*2mk`* zE8+?V97D(LP}dMGEieK9t#_hRtDl$(;iem)8sbj%+^s>vm#MaV<ZqAE1K{S0a*Xbr z+g0M@<AOJGtN^_T`Zw4`8g@W*OlVLXB#u0hu_|FUNbwa9CMLLv>?42X13U&zg{n|) zf^SCSUDOJ|HkYqdacZl9rz?xd=KjTMjWkLXHlgM2PV``L@vxy=wrB@i)=|7g3RSW6 z{p&1<D!6>=>z*WKxFIHXD{kW$4uqDR2v^Z_=TMjtRwu0BkZGhTTHC!trRXP&yuUBI z%*5MpqAOf9hnINzw&m&~aG|7>I%W~h9OvRzi9I;((IJnnrOseexH^Ks%1wgHVeQc4 zp*U{h6EVGVlz~g_6t3cr4%<oL-*Z%<o*$hKbRyLDS}l(m!*c$vGyCL>MAiPNYS1G= z0gMeI6uHf1Lv3&yJHBlsX-5(@F?rh2%5(f5TmTvbw0u|8^SxVUT=iRgOJK_}Ge~7z zK2;g(@u|Sw7`ib&W<_|9w<-UUd0^4p&U{9>-`$CdEx%xg3xj)@9EuhJ%~Q5O_H#>+ z(PRO#sCWkQio`nPk(v8R-zJ&S6qiY;Z^kClMyCbBGhF`q;yL2gGV~2aA0-49cyUoc z06@hr#a(JAY?;g{YEXP}!+DF~C{uw8y~h`sGS!7y!8$bfZc%-kZvquDHLkXjKX^8- zaDF5A8}w&qszY0RR_C~P8Ge9M_*#OF2Djj8f8+Xjc)T&F$3Vj4jR#7Hx7QnM2%g-8 ztHH-?ehzOR6NC;Q&BCTw;Pr3l7V%-E@e@)E@3!t4?cdxvDnvO>F<2yziA2Aa5PMVj z+9R4=?Jc}NV588w=C5oY9Cahd+gNNBb~iSdwMVGJwHN9ETVxyB_kLPhTr0kP5#iL1 zpM|S{mQN0^L49c`F%-*mP*n4pkBj=T99kP~9+7eJ%2rla_zj47RoY(W(({4J7v=^e zkRaAfkbpCVK>6b`|8cR87aT9X&!7iIJ7wJ}@zoW#vGtW%(yXrx_lo8^37?`FBvP}b z99X5B-InO~ir)Ge)H%j{iwMMBces-TbyhgH*AE?>chXwFYdsTi#V6dw-#Y#S)N(|B literal 0 HcmV?d00001 diff --git a/ydb/core/viewer/monitoring/static/media/codicon.80a4c25b73c1f97077ed.ttf b/ydb/core/viewer/monitoring/static/media/codicon.80a4c25b73c1f97077ed.ttf deleted file mode 100644 index 016e9a1e000af380e5512c4bdb85aec40db82477..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70964 zcmeFad3+nyy*GT$j26q<B}=koTcgF2Y)kSYS&~;Nv7OD?oXs&=oP8k)Ss;+GDC~rU zC6py>VQE<kDTS1l+_rWpZD|Q@Nofl_Eh*jLwp6-Jxozm;8xPO-%&`)O+xxul`#gWW zpXb{CYDS}((OG}X_xC$vLJ1*yavc##^NdAHdVIHqt|ElC;ppP|i<%NsZl3ip-rtV* zgX=C?vvYjZ{9Qt{c<&h8wC&1`7k#h1kq~K=kYCqr-mqqU_0o4w;@n>Y>CHHxeMdbH z`}myHZoXvq-W%#Z`2_d-fDrXF+jgv5lPQkBMMyQ?3-4UAX75hnHadpSD{;PW`<hEO z_@AA6Jt3d4&&zl2xNP^wcdfmHQ2G%e_FjUriyz`lyngb@C;uV-ksX=*L$@eLaCF@8 z3)?Dl*T+Q9ulU8&vqg3$+v3_W@sHvk@V1Ny6W8M!x`m!5F6BKtT8>{7<^1P(-%PSZ z=$k%gF)?jhvwJ)75Y?p5C-2j37jIgF`{T9>RLYqYM<~&hj*9<E?;>ivGYhQ6Zs%M2 zYtlkd0)eQNGUJm^{S0iJww_EWtS-K()NUE-Qo85Fne6y~<G<VBzsJCTkAeR?#=s|^ z{Qs?<5Y<ffGZ`NPpgmOcxJDCa;waM_F>IlQa9kx;<Go4ISenAEh1(0S6<#mSE56C} zYhiWaVBt{V^}-K}1MK~zABt;+$y)Lg@)P<Fj*H}r<nQETa)|sMTK|903i2Ij-wwKp z>Zp}k$YrDs+WcbjS@Jb#p){^F)0HGowvs=SH^~X|I-N<5kp1Ky+Czin652|uX_VH} z8XBWX+DIehJ{q9SP+lt3PD8XPu?}_669Y<OB{pIw6{Lssl0Gtx%p|jjgE*meD~X#_ z6EBg7kN8P|1W7FkkuZsnC|V&-8c7qhZ-OLAilj+~w39B<4Q-qwbI4pWpDZLx$wg!t zSx#1vm1GrJP1c~+>&SYtfovq3$Y!#IY$MyrE^;ZkoLoWnkiFzeauvCnTtoJe>&W%w z267|0iQG(XA-9qP<RH$u4I23lau@jwxtAO!50D4R!{ib2D0z%LPCiGTAWxE~$kXKW z<QeiTIZB=*&yyF(i{vG8ocs&<Dj9(l^bPVd`6l@`d6j&Ze2=_FzE6HYPLdy?H-1Wf zMt(uwBfliSBEKQOCGV3D$iI@`kpd}_e<Ob+r^%nlN95nhU&tBqSMoRV4>CsngPbMf zL?)k5k*cVgYN(c$Q3Ewn6E#yCwNnRmQWteo5A{-s`lz4Q(hv>PI@&<vw28LRcG^LE zX&;?Nr_&j97VW3A=^Q$jE})C(V!DJbr9<>0x}2_{tLYlLmae1g>1KK{IYz!jzD&MC zrjr?DF<C+eNk2`HMP!I9AX8xnRgqW74zim(L>FS@TF7kj1@dD`X^Ol{?xuQLPTr<f z<P`akOrgt2EBO}LN$w|KCvT8HkQ(xH@)oHl4Wx}`=pY@S^XPnXCnd0gen<xB2D*uE zq+PU|W@(O2p;KumF_KR54!M>N6WE)SSwH``{}@;USeeC%A6UYW3LKd8q_Bnqv!4{! zazGA{!a5E}1X5Vf0ogzb8#u`CvE9hQyoACg4)Q;+-OK?QLJAjikndp2z8hdxePJsH z>A-dy2VI5jB^*?T?RE}o#dZe=BoQg><bX^fg<TwwPNZ-t2lF}#>@xroixhTqKz5PB z<s6V=q;LfXX~A|62P7LQ?B#%rBZVtDh#6aWL=2F7q;NF{Bp@kV!vR@H3hX@qsYnX@ zI3OQM;aUzzN>aFvgS?LI^&F6%q;LZV<R~fJ$N`B;3O8|(d$7HkgZ5y13kT#aDX{YZ z!rJdv4%&+CK@JKnQMiqRMzMwG#z5<_W&H}!8f@?4pfPMe!$FhS-pxT9v1R1|Ak#_V zUJh~}wiBQM>>uWU#3zOOIhapXcz}axwZelOOxqP6;$Z$t0iGrUbOb4|wg8yNRCt5~ zdV>@m<zQN{@E8Yl2`N0z0j)v`tiJ*17gG2f2Q&>SJi!5-LkdrFK>LuwQykDkr0_Hc zG!iL%o&&mx6rSOLmLi2`IiRmd;V1_*7b$#!13HWpp5uTvBLz0c0O&PRc%Fm#m4z2L zpzBEC7zeZ-DSU|o`i~S|<bWn5g)ehJCz8TfIEWA1mpGs&N#QsLG$twh3kP&3DSVX! zT9g#n8~~tCN#W}p(5$2|!T}vi3Zop*wxsY44rY}UUgm%XCWUWuKo^t3D;&_ur0^{c z=x0*+HU~5{DSU?mI-3+;<$(4kh3|4ekCVdpIH1u<;WZBEc2anq16rOGe#ilRPYQ2v zK=YHrNe<Wmr0^pSSOcW+CI{>SQur|kECf>c2?uNiQurwctOineiv#upDZI@AOM(>M z;ebs+3jc!x)&(j2j01KCDg2xR76&Q3%RyFSdx`^A2r2x61NI0hyvG5{gcN?s0UL!B ze#HT6g%p0x0lS41e!~F^h7^9w0b7O?-sgZ-Lkb^oz`h}cf8~IsLkhp+fXzb+zvqDU zLkb^qzz!mXKXAa>A%y}5Y$H-Aa==O=g@5CKy+jIs<bdTw3a2?>Ly^LtIABeY!bcpi zt4QJBImmU`{+R=|7AgFN16CI)oZ*1|MG7Btz!D>czjDAPBZa?lz&ay^zjMG&BZYr( zz+xkXF%H;nr0^dcO1;ivAAmha3gaBG>_|c8fQ?5ApK!q1g8{|?yN?tp2P{BR6gXfD zlA_1~tB@2`9Iy{bQOyBMkrXu?uo+2F%K__=6w5eZN0OqBgFKFHIR|V@Qq*(6$|OYt z2kcE!G;+Z5Bt;VkY*11(bHExUMGFV)Qc|>Xz(OTO8wYGvQnYixY9+-A4%n}x=-_}Q zONveo*tDeR;(&Eaij^F&b4k(70gIOuJshxoNwJCpRxl}6b1+u0Si=F!m=wJnu#rho z;()bGiark5&7|n(fCWv80S?&Gq!{FYRZWVu9I&rRF~k8&n-s$wu(?Sw!U5}>6ze!( zhm&GG2P|?@Y~X-xPKr?uSm~q~<AA+Rig6BD?xfhr0UMqan>b+2lVURm?0Qmc;edrt ziU|(b`lOiTfYncmtsJobNioF%Pk<ED9PkN9F~h+IXR(a~egY}BbHHOD#SRYm4y4%0 z0WX3SyEx!akYYCnJPT6Ha=^zR#T*B`4N{!K0l$M3r*gmpA;lgJ_#&j(%K@*16#F>f zpOE4-4tOf0IGqDN3n|XvfcHX*GdUQyTAal}MQr;ys0!QJ98`_%91dpX7w2+NEw=MG zD4S0M9MpjA0uIXN%0dom!gdh{HDkM&gW9lN!a?oW4suX750-LJC$>Wz)P?Ou9F&dy zWgL`^{pB3gi|q;yDq*{lgR*fw%t6_>Ud2J#_+8CG+4x<<LD~3S%R$+gUB^M$I9<;{ z*?8Q*LD?AG$U)h-+r&ZH7}?B0*%-N)gR(x{!a-RdZsnk?54Ukp)`ypHP}YarIVkJ5 z9UPSP+fEM3`fV2nW&L(32W9<s83$$kvzvpmKDnHOvOc+jgR(x^!$Da;?B$@WAFkw} ztRJr8psek$=Af+Yui>DqUGp52wd+0(%G&i>4$9i~Iu6R(^?DA<+Uy1nc)+B1BL{q8 zQoM-+UNI@&%mM$H6mQ{xr%a0bIp8ys;;kI;o=Ncl2mEMKJjel$niOy2fNxETw{sBI zws&yA-zLR7IpBGd;vo+B;G}pL2fT4o{0s;Da#FmT10Fgl-opW3ofPloAg^G19|!z* zQasE7Po5O-=O7PZ`v3>Lds2LmgE3S^_89<=pA;YFfbUO=M>xO&km4g8<j2@P%0bz+ zk8yw_AjQWyz!s3=XE_Kf`{y{Q9@{54z$K94lN{u2Y@gx)zd(vlbAV|e#m{qqb0EcM zILH)ipXC4#L5fE?z(|lHD=PqQf)t<Q082rNU*rH^L5k0FfVm*W7dXISkRlrs0N4yt zWMcvVuR)40a)99=MK(SFa2=%h6%Mc-r1%mC_zzM%&OzF+{TB|J!S<^hl#PwAanJ#5 zSvdeY58DwAa3`cV%0bw8`347?oD^T?VDY8mH#xwukm4&Ggx!<XAD~RGe4B%A!uC5H zbR)K}a?mbpzso_pvHczg&0_l+2hCx7f`d-M_H_<A72EG~fYBkvA8>%%Aw^au04xtF zvi1eQ_mJXA4#MW{k2t^qk>Z;ij15wLz70OC0W8)v^e{a}e@K5z|1Ow>TA^Q9FB}o8 z#Vf>TR4P?iwMDH`ht-d3Jet$mAC|S2tuMQ(>_piw%g*Qwx?0_I-3r|n-JQBoU7>to z`E}*r*U!}N)Bns+X-F6zFv!Mb#_Nn<G5(urp6O20anrBOHnY$CyrtT5o#l5{ueHxQ zY~5+S!FreV8S7WAzqD<%-DDfH$Lu}!TkLOD7%E~FYb&m)c)a546=RNC$AIH*$1~2X zbGP$xr|j~%`dvF+kGfuQ{jSnmxv=u8%A=L<y35>qJ%XppGvs-+N~jvBdZpS|JzV|O znncYFHSc)6-h<v_-VeNEQnhqcIw}3xSK-^@d(!u=e{nzv3<e$##)7ZbF07S9J)yDi zy^$4>({-(NGwU9x`)z%B{kHmd8Y&z58y;woqpi`~qaVh)Vh3X{$DQ$?HJTc)YdqbQ zXu7xQXU#(M&gR>jpKDpsvbW{&mY*g15}OmRCdQIO$(xc#lW(<_wO-SDxb@GeKx%X9 z`P4`0hV<(6-RZY7)tNb&pS4xCJ>4dE2pv5g`#Mf{`Z^DGp6*)Mb+o&#dtY}UtIBp{ zZ_2)!{dLZgYt4N%cXrBMQ~o-2_0*F+LeCXF$9sO+o9$iQyS=Zc@8!PVP1`>0+ta(I zADy9^v3kb6Gv1upI`h$4npsn3ZJBlVtgp}dZGWJDXa7U}KbdWrebwxj=cwi!o~xOA z)7&@b4bFRD-n;Xs&%b-XHjo||TCiooGYei_@X^AB3$IxC+`_*udT!A>iz^qeUVQ7~ z(ZwGu2`u?=Fg&<o@R_AsmL47o53L{i#YJToO~2^-%gUB5T=u}SUoUT1e$Dcym;ZIe z*H`*heYCb=?TWRxuB%)(W!<Ig?p*iL`hg9a4Kp_^+pulJz72P67~7cLc*Dk%o1B{t zZhCoh#pWXyuekX6i+{JJVavfS?`*BxI&bUot?zF0Y@4_3&24|a<onyFZ~th=r8~a2 zvjU@9g>W>Y9EfuS;3Lmw{t|7Cgd<^}R-@H8DqK#9I$NA<<E4pojwVv+OqvF8N;;Fu zs*(wOhF=pE!>w7GNhiEQg-HlBQren|fV*es;WyISC<IIbyP@){(V8gkk1tBKvd<Ij zsG~w7e%RN$Yq$K-?p?io&5esFwUvunRrb)~L)j=@(AX>+rcKRes7e=T%=8A6t3rW_ za&_kV_l#9Bsb+dttjg2a-P_$rU!~@@I&aWobXo(nwr6nl(kZn%oyAaPv<AJAb~Ekv z2f8}eZ9KhkT}M|B{doW7yL$TidUjpDf9Hm^(<wD+1+}Un7Hja)8EZGlUw1gdWoGK@ zj0J4rV6d^u8>y!!rM|A13E$i`y`$0NiOWBwRBT%4by~_z&Z^AR=A~0Yp{Yxo{WX5K z%VR3HxV#IR1hISGz|bD{we0(^So#>_wh%;lPCN=N+Kl#hqG`gBtk@{<9U+tU3R-o5 z^@!4b3D#mtFNsHmsk>)TLuPr3wynNw!xW9zryICxdfVptQ9Ay@+^JJSkw|FD)CYTV zVf^HJgu7<s=WBdkP50_c*LJCs!|i%u+NDz|jn3cPCb2Ufyx<yEG$!PUxE1At#-t9v zHE8vx{MMvZ+$tZ)$_MD4tdPvHZI14d53n(X^N-?uBX}|=vlFOa>u@ElE`P?F%%rrq z+(E5=tLS(5#e-+xlJFxOlO*5pc#Cj)e1Whl&u%9k^^Hj5|Ax;hq>&@}{P;<FMmFGU zN@Y4Ee4eqZc9%Ai%DA-tNXF&RMlz$f#79Qrw+OrTv+aI*e1B{-HWIt#7QBqc_Os&g zI;|DAGDgsjFjIu0TJ*cLEk@g8@_0@jr^n^jlzrj$@!iasD78a`U86%_BtuaV`l<88 zi2PbiJ`tm07G6i`ngC-PLo|i(3hGQ<LXx)0C*o8b-!0rBpN-vwZ^CygUmPoyPk2N) z&Ay9jgQyuAJR>}EBz7daDYuFK@W_$aM!G_Naufd!;cLP%<y_tp4!?^YK5`_!NjZhi zekA%x43~ZCT&1;8hlo(kZYMuUS8NiFU3hM(44EWa8EvGc?I;7gnXr(3fpXEr7(OaK zk22U%)AOasq#{}u>a3;O6DMN#h~;PhdJld6_19zfoc)`qyQlL+?Dg2a*?Z`L*JJoN zdvB?oC;CQ5g9tyN?o?b`YS<hVKh=IL9)U5p4P(v$&eMkyh^b^Mm{L2E4pHM3lKw<i zpc!ihV^Ev%yTtW>$>rn|*}s$t)@rM;%YqlVSDU|5zU#Wx^w^pQ>CeWplxF`X*P49Q z7E85{o-`stCjYJQAEPje`1i3f-VNS%2?`AfsSPsG2a(rEQ|K{F(r&6qH@2J9Xq6eP z2)-Ixq1BkFKN4=DiDa6haH(L0SD+Op+9+g&gqMo(a&t&JWe>$$Tppv{eo6`()Maj? z-RfzW-jp)9jaq}DsooyY*~?T$w=m?^8w8i$BEMDcww32~HaC4GIk<5!NfXNJXfC=n zTG?1@*Ol9Bjg`@@33t8!;OvA{<#I<W?Dm8p=ydg_n5!vuAly{lHf@@JhFOrmTW)ih zOb%PQuq#=*S8{No{uhfcfK?7Ni;9N3X}VE}giV6hQDLU8B&x%zmCUF$fp9A6)P|Jy zNN2Lt<rQ&~MEzo4C9R)#ac6ISZHiWgyr=BJ#+If)#VN0R+}0Y(Q@i|mS9L60x1qIp zQO-xJUE@#FMYHDQJ9l2xrqwoFbY;)MIWxC6R5k|fxU{li&>r%5>|3WV96Xp>6Rh=X zH1Sy%HSb%xVA@2V34apfVD+7h0S{TBzMyopUW(VC=tw5gsn%db*@UB%w*O@FmSnuO zd*`Nuw|7q4cjt9&z1iHpQDN7Tg|S|{X?|w$YFhi7&eX1+bYp818-kdvitO78@5P0- z37~Zvz-}iPGfn+w1Wf%}j6qj216j!4Sus;_+?w&LgBYwp1g{}%waPn3P&_C<>#VPL z$j?X;?N7(jwBIL3^%W3L(I$GYe8Q=V(Wq<~;XlHzQT`)t)z#JMr13*iIxPvi#vjt_ zgk;nBS)ERB$MU(6+$est_(hSq4vJ$um$8_KQb--<ix>%Nt$xuseo{(PfeM-2`;G6@ zGmy+@-*Qk%{*6P7jfc*jWyxmhb9FZ&R#Jr)uE(8%sR)EW?!ttB2vt%$v?<)x5y9ld z1hu-L88Rt+)xmdt@(JmbB#ANK_#0zm^vswv;v1vK^YUwB(x@~hoF0~>VM#Wi9nK8r zvdy<kKA&_bKAO#r(W!@=l2mc0{Ot+-!(>4{eB*U2u7xOXa>B%bPEE0am=zjDljx-` zM}^bnXcW>^6T~Qp1QWp)m?hmb0JNq%X~M~7tGz;tZB}5D+ax$$Fk8Y|0Rtyu!kJl| z<)F2VTiP}*U6M#<FYOnr+UI*+Gq>jVZR)lA=C+y5>u>f9(Y(%JGxSo?tin#n)9nfA z7F65(wL;Jry<*Q`O)ze&QBB>jKD&|DwuTtQEs`&pSUj|0{+(MrqF5Ey`7XZh`fbx) z)%}-Td(8%)&R%O2YoGq<x5nSnJz}&`l}cxP#Aev%357iS3_9AJXz&I#(xT;y{V~69 zXwMb(>RNAX%OWYTG(~Yz66Z~pXIf}^rc?bcD-^2L1vMRliWo+xpwFc&^s|itLtxwn z)qMJ0sN^%*eCZxfq1`j!2^OK%Q>~3OU_v5C5ITUFlM-cPoQX<T#>EXvR|b+YM<J{; zn0!q%6M=aEQxYPu1_=k4pIXJ9WR_x%3eU7GS+k_2b#rI~^-+5LeoIWaDzsZwzxmRQ z^{PFgYlOIk-g*P2K4D#GvwS$%J*_*qN~m@^W-VW{e3rvmEeJoVZCTQSzgpZx99(X* ziLJuW4DssF<*KIEM5AhNXrDN9nb0cQY%2%FwV_S5!LA_wYExqW;#s{@RwWXvru5EQ z+z%ySofz{+(PnnccsA;TN`^@jVpJJO#vEdQGhkWISLQ;{;ZFrivq8k<Pcai>VzRri zwPS{`Et~vyY+e7wdlARQgDZ2gA&W_Y&dKp^LDwA0PW<F^=YR60gV>%sE^cKfNW33m zdL^?t`86gHvb2qFUQ#xA&v$UR)Xz-!^&!T57wXkWwI&r*8RiYTDU9xf;AaMEqYw<B z`?MNYg;xy|AHpBjY^G6E&J{K6e0Cc16PPE!k}=ZUr@+*5nyE>2u(T5|uEI?*iM=We z2<AP&XoD%5bWqV^3t3I>3TuVCY=0zV)a$6R+@ZG{s%>UlecWAF;|W!1V0X1GShaO~ zdphHjJh3`=H5JO8m8L3#-c(=dX@>mXvLxDH?Xj3OYNxrj+^lgMC6C@h%Pcyl-AK*G zKbUGmmYNE?&ZgJ8s-;SEx!r0CJR<+{4HyzIQ$7n5M{9H0OoHx)aJ|`V)aWgGyWZus z*VS0<j!;##Cmi=kzSbSvx2|5$VYN`I(Nu-qHFXw$b(PVj*PG-IHSj$wo{lB4;nwC< zQ;XYO;j;wGt$Md)s?_Mq?BzC(WUUCA{$MiGGNa3(Gg@3yjZ14{g>eagmES|(y+H#^ z4V@dCI&d)eF`G3AyFHkq5f_9ZT2*wRCDA((X0(*L0Xs@3rCo44;FLK{DwpDRFc&Z@ zX3`?mI-9HKt_TKT%V3gX1Tf<TT^MOq?uKy@z$eVpV|ReCRlGl;h6Ya3_MH67*vYz@ za$}XL(y6Dk+8v2iNxn?FBi-Jb8m^Cct63WvJQdcen!3uyhJdA-8tqP-nd<b$P-K6Z z+ithJO;($?&hK@Um+8ulHD-g+pw-)S_VP+8RBQT!(abK<!ECka4b>KdM`JFpHM!Ip zv&B<2JGx{`6Fk#dG=PDBQhqP?cy+nH(pXjFv((kNLseQWwb-h?b#<##$&OS<YbMkh zb=W;MlvYLR%{6s4sj|Xm(`$@obA9**onS)uYqj!QdZ$!TZqgczMstlpuPZa^Fd&U) z^ja`d<FV;&WqOUrz&^9l@}N0jce|TfQq9R#u_YZI3luQ-p&o{<qJ<@qWO)KGsl=d| z%-A7Bb7GP@lBw1(rWd?ItwWg_f<tQ(VRpfO$wV+;956?NfkvSf<|lott?&C&Uhhj? zE-pO2P!L6d{=KWW$5s*W>&xA_fVIY<-{p@>X0tb56YjL%WOc7FS4W&ykG))5uBR{F zBbdhjd=K^Me)TJz&L&^d@t3|?Dve34?RHd_yJ|faRfR9wh>;%jU!oC>VOK=5mRns_ zZXG<IiTeB)_0hl+GB6)OM<Zg!r4u4h2KZ%f#5d*2__vy#qd$^;)E1Nfo(tX@NU$TK zcKj8A+WlvQTKRt38<t<|Z=TW8sT^X%ocmd~h*Mb>h;nB;6>k~;Q{u<TuhYMYmE(s* z+E6S1O#s<krp$|H;rp?&m=qti23ZYJXg%g=Wnh>(lwUPo8PMtxEmWBDscYh0AvQG@ z8;Y$^d{X9@PQu?}JMdBL5`N0V{GIS-PqbkuX3OOvf%92<(e~I-G$v1tM~7na+qfVa zo2W;Fa3imW3t}Zh|3WPh`4<uSy)eCu?Y;+nTB@^fqtd3RvliZ^>--7yukxQFw3hvy zJNKB_z%pZC*ui^^P~i&Y6x<qlnv=f7QfkjQd`ji~2s~shr60>5P25ucX!6CS^Jj^( z7)PL^E_?-gffec-^7|QR@|ukNzVgD}o>7in@BzwLvO(jJT=-VILJ(N}Ft?%QU~|UD z55bCkgPtkXN8E~iNI43nDsCNL05b&YX+rL8MZ2*3Ktq@A6iPDj=SZ@9CbDurJof`x zdOQbWK{z)4hLFV9yp+qzvvWeS^c})!;ZH21h9(s81!Dx#ETCvCHm#ts=$U|T%1WC~ zXC0p6>r-}Z7Jqy76ydbawsMLzjem+=U*DAKwt&S}y0^lSFm`0(-fSkrnru`tB2Bq- zXZy}4B#TtjxvpjB6+71sbU+5zbgoV86pvb@Cw8{&-H}+^StCgu18aBg+0n8N`=xed z`niGS8qqLhFuQe&i7HZ9fOu#@*&(N4Z-pZ*ispvVi?b$weW_H!(&mlLw5ef9!tF6u zO%E(yy=fJDgDg=aHMrdY8mMn*qR#(R$SZj1#bKOhtV}G4uG-YJdU_z?slppv(Y&b% zx2?zZZnt6l>z}U4L=Aa=q90B}Znznn6iQ?%w=65XGy|6zbR)MIBlJw)Wxc(Z-O65m zADcZiJEpumF*b1wAB@E&4#s9*H!)UNTRFfQKmwpIpre?HfnJ7ERQ&fOg^vI$$0Vwu z*c3HL&oB<JvvYz&RCYjqHAV$X=GH?utxXB18>8bN@qO`ViEBK6fjqk>pA;-jac%d- zH_ycW_(y#IoF8=*qqiMdWV2aRkGqZVlKiP84Chh<z+Vi)2tv;)2UGC6OCM^q!A7R= z;lw1I74X4DzG+SSOFNu<6PfXN@{p;sw<8ef=<V>2=JVA7KlTE7<rN1zO`kJ$`h|pi zAkZGb-$*rk4bXe}R`Ca!8G80FrAq_2k8t`f+*P?ixvZ}}5Ui>SV!o9w54HsYZ9)Eu zX>qRZam5R<Bd@I*{q2HKj&KpoC^t-ZznX0vcoBBR)~`=&*^*elKDK^*i@5ddeGDaO z{5C#iCv4rCSdYm)mObUmjVNMbLMJ_fzOO_cTNBF>3xV2%UX27(K|a7(`@(fiTH)(~ zj%^e&R0|Rex*(aMB}OblkB`zbIp4}$pdD50Std!R;HU*1g3VW3V-n~{Z>~3fWqhx^ zHg;vKFWVQ}CnWMmd|BR>Ssz?<VXUG`Ym#autKjt8#=q1@=gD90ja_*qZQdL2lV7Cs z`r>FGZWnBY?$To}_*gC;Ra6sms4~!@%xw!gnCF)16kJT!x!`38Rk4ePVng`5D0UH( zdCUoboP!z~%jM<%F?lw9iT){e5kBVU(fhNIkjzy;tL5N?kIJ*p$t|_0W^$gM>lLkw zp7|j5LFtd4DDC0Ugj_!+wkm!hff3J4K_+X0sjPr@js)Q-z=VvzoMDH(w39l50cJun zN$ASr2vzt`7no3?D2Ds0YTfSIs=ly4<MU<w?b@>bP0Jk>NvlojK=akkYnG&@L0_aY zysV?KvF6&lHp|~$m>r1kkAW4g@zkzaUF)gI(Lnpu_5eJUep736lU`lv^sgLh&4q)p z-8<*$%k;f7D>lh{7t+P@^8;Xy+4$r-iq)l^<#bM}OO&RP|4+4n_oGxsREX3FDAfxp zbImpXWp$1mL3NsqweGnql<EwlHnCe``~Tn6CUq!Vm$vfSytYvOB3&>L+rNKuU8-3w z^`yE4Qx5;9n%~d3ynotP$qVWr$3NBXL-aUf=lmUkf6`0mi%;o=&3+xD^B_aOAzaWq z=mYN8JfPS;jA;Ttt^@%5%#O@3BPc?{PdybI8KJ+8vF-SgHrm!E-1gK{@zL05T-nI4 zR13SRC(S1jcT%JcGyeX|d6Z-^0Wib=d;%TMu@C;qw3!$;OwUwc))K0i?Vk?jSkLR8 zPpKCrR<uXqmXe7jOaGZZIs2Ayntk>|MnJJ>0~+c>d>`X;7&F0mi72F8lI6VGSvZC< z^Qol6OwaFYF(e%<+5jO4L5Fi7>Vl~xoW`U=NuqrtS`ZE+KHri2k%{dHdpja!^MYLh zPbW!v{K$vC{q0<A*RGfn#lacSDtY$ls5Fw#Kf*4M5YwT@eewbDd3*4=d;%;*F0?bY z6N<Rh&#cXCU{WI}bq3KLFzet-T__Q}f0r5sVufU+Y6gcOtsRlE+{_fpD4dqE;{(GI zJ+Pa-WwhbgyY!`DX(kQlE}G#y0v6HdlYbB4=X-az6DPLe?FlJ6HYO!zmgdJ%Mb;u# zs%YS(!^MbO5sWRg1ej4JdUYiAW%`USCvS1y;yWUo7Pm^{Z%9X+FG@mk{Ey|g?DQ!% zD<8Kkj;7@vkX@11{s@ggM6>3$`cZbe@Yh+{026dnK0(inAA$tF3#?o2H*!lB18)Sb zOgsmYM|c6mE!PJ}VWTozm+?=EH4J9NPyGRn!>Vy2^pQ?k8>zw=Z9T^l**sXs;}K4K zz%ss_&kM((3^2IQggo+WPi?J-9(RXe9-|)=-%2<(VQXV{V8sti9a!6hc`4|qUE(o} z>j=hH7c!HOJ7kA>so2Yq=AaiCzmrMZy)?;8W>5zRZGt<cE-hl6pbXefmf2U-8PYPw z4^k4AX^=;ZwNL|KT>rA-lC7)PUaiqKHUG=@EvwgErPVYxU)!)YxpH7$ylKY1#~!>g ztDjH56yI;QwohwO*Y!#rdbe5abelEQ*<_X)qq^W1Lv^u%tY2yj+5(F%y{28<(9Lf1 z)eCPu{zkQzHpS-+tXyztt<<pj@ME{pAIA1ey>*(FX>B(14lV9#Qae0%H%02Zl8sXy z=$mWyLn328b=BTgEds2T2|2|$br0qpv&3OMhQWt{&<a|W=1IWH&mr=d37wz%=gm$u z-8nn7iCSUnI@1|3zGV8WqqC+j!AdAmH`p`n(P=${I+0TO#EfifK#~Hj**i-+bgH28 z`jee^b|(E^mC$}|PtUdOqA@zd;dDA?M785@J40Ek&1TJpoI+H)0u+)X0N%}FF}o@P z4wuO~erXxFE0fu5a@eh9^liUS5PbfLad!lBBZQp(6w8;V=qIRe#`Ll%hQrCEF|5%v zGfa>yz`}7b;y{!KThmAw!0C}xQiLn2PKBWF>4}VS@wUarOl+nums1%BV$<9+2WGmb z#RiP3T(*4X7$UowC)LvviRtRGY%|=o`w@W%ft$><_Vl!}>#{k~TeBcG%~xCNn-*J8 zBdNNxx|y*|B$63xnW0k6Xc-pTJo16of1mvd?f#%Ne}0Ml2VRdU|GV{oLycNk!w^pY ztBR<zpRS0oNnS$Nj{mkM&`ghKlBh^qe1<NURY}#8E28eo>1M>0iX>*J)iV++X|7fN zsQ=e=seDC6Ielv4xdFmoguf_$QVm<n0s9GNtAOYRCLbam*mq`F=K%ELwp*_3*LCf> zY0vDk_VwYFi&`}e^Oi42Y9jBm0Fv-(Sl77|r<8T>ylJoennznVZ{?zds&3Bmg+B#H z%*XeHUuIz|Ul`Ya&i}9@xRU`Udt~inV+i7$cg5rrxd~%jv8x0bJ|4F$q09Xlrifr7 zT_XSLuDhuJu5W&4?b`3G5l-VK&*Eo7E{!YKVDusS?-#~DBmbJ6jM&lG80H|qFY_Jo z=mW?lzn&%|EV6Xj?=FKFdr5xq`xE!!=MZpA_*6Csr{#gt^<r#-OCWZgkb)ob4G<_9 z`Ss_Yf1ZBK;`s9G2cCc71)M&?-^7*k31;OP+AhB)pAh5hm9|Z^*`I|!qmOu-LGCeO zD5N9k6HEw)@M?&)``+1Qox5(@d;L88u&&zMuVe4$Xgj87^Ge-#yzNEtMfk2>Fobj2 z$`hLLOM=xbAcn%UiZ!gofYidnhXdtOBS`{20eWA<OeQ$aVK@(&FqA5$Cp#mHK$Z*g z+5~#BRm7|ff`50VX-Ff?)wGCWi$?yDi%uE;j?XX9moHcAY{T~lo|Aut$yc7usxO$d z>THh9J!Miasc38Ujp~BxF*bk27ucP~zpQBy%KVi=xBTNWN}DzE=XdMNY%3oMe(}`| zn*&{HY4T+Ds>h0X9dfEA-B$>WKVduw{5<0y7(J&-Lqm$RrVQSOa<+b_-LhG^JHr zj|>mfRDVBxX`B3gkVQ7(o$&af2yLGeevf{ALZ00YS#5`X)`5r(coXJwLSjP*n<-~x z*j@xOn`Jq%NELTV(OBRI6ls@XIZ~hw80ngWTGNP&boM2YCGHykG+(f4H8riNGMR)P zy}jdG9ri>f5pv2WRz_CtUWwGXHB~is`{M8tcZU?2UbW^c?zWb&!=aoh{JqAF+t_t_ z!DOmhBma4IRnRwWz^#1faE1~Y`GwVyHJ7gmufc7mhow&UlJF9H1+A`HGgR&f<D2ZA z-|hhITGH7^#l>hR9_@3$@<p`H?+8J=hu~gY0h&=e)Db&|&mM?cn7s^)B|CdxGaZnR zHD~{hR2+EJW4YY;8(HxFRliRC%0q9Kk3Tgr?|xL8H<a}ROR#aH7mg24P<f#9Sa~o< z@$?j?OMEO}H3ZfgszK`&CQ_g<23=4d%nRh&0xBa&UkUduS=?jma4x!d`-)Cupnuc$ zHG!OT_k7>wSI^tew8PuKfpQp&%}v>znYzm4ET5%&<@SpgG^i7?IZyj?nHK*B!Nrup zYqJkCWl)+=af}9?!VAOWwx|3WEsPc<EQKR@VGRTJr4jxs<`J8(tXw7mgT)I~K20ai zs|m|#I&9I&BaDa;9&8_~Xuo7zb<fqFRP^9YGi~edxTdDXJ|B%I`9_0P$e{B2vLHEg z<9GD$S|5odQdPH4X$z&VxnpC+w5b)*b6li&wYUpbJVBO7sfCzN23|s2Y9j~|v8H|F zb@}z4rNNs%|J<!}r(AaUk%P^{O{exq8?U}{736Wx?tv=b!mi-J&S>qHhll3hwWZZG zJ9pVw({Or*(?772^$DL#bI#8tSS(5S;2@b@YO6SBcv${Hf4@9?8%_V`$#m}e+i<-B zxfaYSolMh(VDVyJ`ZH9`3{_#5!kZ{B)GhzDLw*%9ud9QW%cJtESfyPKj+L=UAXftI zc3S6|H~zxBDq8okut5IVg#6xx!Gt+~!S`Hn<4L!e&<i3fAM0rrF_>H+WL*4{LJ0Mr z{^rtsW?(L<SzLh=>vn61md|1g)U1_sml%)8FM`a82)%N}U-@`P179OvjdrPHBaDq9 zCFlve5VDuiAh7!o-i(}QHqm^S45uGkw)P9DOc@=f+JPxkXAey434clck1o3ZeDes` zk3BY}e`wD9RTfj<PQO1C>K^WvYtFYYpPOPiWL-Ht20~eIL*cZf3mOk?ex~QC;ir1e z9PxK3E#C)s{N6LYPtqIZ{FA+Beh&A1;*<Y$&mg2BlD1&^*(Z1W`FjqXzo&Tg<DMtv zee{MWdOjYvPP*y2wz|61R>-SzfYgMU2|=8MAVyvlvz!rD&y;vi#Rd_t{-=#~jH<fi zEC0VV*10k;&h3J@L|!;OZ~S>-p)&qYkFRE-r3o4GKI}<~?8j+{`mbX>tcGf3x);`Q z1e%rYI<*yAu8NT?h2u;aH&LchCe*Q#?||zN=3@$nsv&wfDXGR_MMNF-R?KU~qq>VW z?Q6K@#^|-zMsL2UfnMKsMZ-=Sru3eN?XAL{4Y#VAFTZ|Ilj@d++l7Sv;d}59hszrF zbhWLzbXB|j5N)XITQIGTJ}8Wz6@0X^GFrcB=ca~+N;iE|^j#a>e^bM?*EZmlzTbfR zitDyG9Ac-qX@Tmlh6AcpM^{>n8><$q7rI1;W9upv?%mL~x($B~xOH7!-`y(J(v^$n z&dj9S5rLmMck$}d++qH;gJol7Qc7McvJn;kJ_6$fR^Yk8=^E?sR+g#d-<Pr-=tk+t z&5y)4WjDo+<g$8%>FvmJlBDsMbMyn|e;<i$Mt0OC__!p`j=~OPjFAJQ9!W@i%BL_= zSsIodIg8@eKky;dNfHviA2h*aL)d9-WJGx7ikrb7^n=*A+)Fpe_rd*rZHs@$x&CH# zFk&wGu%=mI(s=GnCW*WjWOrGEO*CkxL03Ri;Y_4k!)kQrxoMG^Y&8py{834>k^Y!+ zjyh$BaQc)p^|_Su)UeTJ^Vn?EaDMOxl7k5)w=X#;#!JOc>2%`{&@;MpT9>us0*{@O z(#rhLv4lW=4a&}CJo8T{a(*ZykJ0>g)*8@mc<KiuNDLA<V0kvknn^Ujl4nx72j?{O zOq!JPhS)uj(8hd?By;_S!N#yelPn@_1IQR29mU_d9HQ}r@IrnhH!=c0a-v*}_hIE? z@w-XoQX}Idn7SYviJn2W@P%aq{d52sNuRzKten!lSYFcw5@XUW<pW4{oM@_ZRYu`a z=aUl+j%J)FC#$=Na+)!wFhj*jWfgYGCr(YSH`1h$B0Z5e#p?X2x*{@ID&IsO#9``8 zD%rR#Kgt{q)^aRungv|osmvZ78ylJ6VvfS*;{D09k-(bqB4rd7FBJ@xO2`~?ATQB& zjPBQ@99*U`tZg~Rf{l%dMxQdUz|X<sn;2u`f6V8ZZ$*^`&WM+@RY`WmMuSB53dpr_ zQ3xePl`%n`IwhTYw6o!|-Ag22R33@bX&EGL*tgG~IdgU<CT=|?<vOB1Y4Pse4f1H5 z_GM<zoYlV_IjI$y=(UskkXiLCI1Q^_bcHeqcr$K+y2Q@q<7dn78A9%ipgQ}<;pOQa z^vn+N==fQa{K?Qg<$`MY_==Hb5<5EieoPiH%NL%KA`FxabtTytQMOFVFCO*E4PN=x znwm#zgv-5We+tiW{NySxeMwj-(JHT3E~}CM)$66p7$Jr%#hO*;#@sf<kjrp?588%B z-&hn*4Ymv6ILPt}4c{4K`FF_>T+!OrT9)zGHgVt#QuA7on#brlmI!!m=e*oJictri ziOp2_*{m;<B6Kb$UP}38lX*;;XW0=Dh%BQXILzdWa9WvwXTL&+VAUT-n8!E105W)D zJU)WF-YP_EdeJsY#*UJ6rI1n3PL0R`LPs->kNvV-AN;~%!7p?Y(@MzY;K~j@rQn%4 zy(gWoayK{UdS=a?F?&kyx^}IrWnb6bTeGRQ`Z~Kqok^~_F4r|Rv9-2B6sp>Hw(T<> zjvX%jiAU8zUuyqX`)BlJJHmA)vtC~t*>U?r(~c~x51)P8><c8*?YZ2XJCkd4YO|$w z-u1a`Pv=!r{dW53Be5foM2{SaB5|G#SI(Dy1#>o~<ZWNXMiaCzI4kDBxsqW7qry!B z^l%eR<>2hOAj2h$Gc9rvCFG>J7>Q+OZn6dp7E1+XTTqzis1_H*fH3En_xk+c{r3;% zulL^IuXNf3LED^fU0iYRy%mdF^UXE=HF&$o9@3XDtF3xqFn`^i$W)`(qYgLv#VVK0 z&=9vw&&My{F~=5Nxoca$JzP!O#G~v)iQl>^xJ+LjvM-u+vwQDV-f9KG=B)JJAYGRq z{A|3|U~^T8{>HG{<F(9N*6~8bQNQBy9kZ<U%P!rvE|;6ISxWZJME*RBf-tM_e;o<Q z=NKjZPlJg_t6(l8ati-hK!nH9jtU>c{x-51hz5>e#-$>VQexu1=x=`;yKnq9!~=xn zeX-yCCUzgqjUWQa`DV6WiOIN9z9nNl6xGEtJy<F=q`UH-;yrUQk^o9V+fkU;P~`Tr zgE`v9{&M3B*s2w9GYmKavgT;%Ebj3#FBeP|Bdh2hb^>-m<xGqvru(hnzS(m;3F0~~ zZjm~{pRj462GfaMkf6wc0|Bnkp-7O?ATbNEEj5H>6BCxmYy^dP=8jE?C6{a%LI@|< z)xK`y_)ph2w`Swf1EH3|*3gv7(df91`d$i$U<Dw7uDrWGXEc;qTL%;3*4eT4R>Xfc zD0vCl;r6@dO}nxw-!wHf*y5>tAtt;af9_c~tn2!j?csKHn~GB0lg$Zk2Qa<iLOi(z z5@phote{d0C0vDSD26DvTr%gFKG-k0P89Z|jqBRGa)?0<eV<iev}JHJGd4C4wjj{W z9SD?q&t7&KtK43tp6vV$sDN@JN_5`7nOwG`h+TCl&*k!pNGDEVsR4omAexbF3L(@e z!boPTCSX>Zga~4le7zZ4Qeh3kJBE)1{pWWuSDF4SIwM(?q2X!E)-CG`(=;*<Q%miV zQ}1n^K5u%;gn)sw=K5-IGaybB4knxsmTiABvwi8@@%KzsCVHv0ZT8Z5RaMKfzDQ`= zMainF_|nkafH7DfchyZxdA+GXN7hvz&^o}(B*Myl5@83D*ZQA)GP86kow-&}tDh?6 zqA?qS`Jt82q!IK$Cz*n=BvHj0!@>ZJ;)uFJS(X6b$JLss2rxz@rFDQ|6`ABmPCML+ z3r`X5djr}30|>6YFLz^Afc*4eL*wFDW4fp3wFg=*ZcQwHAd%eMGIcQ8xH!&^il05{ z8vk6$z7~=r<5y1YzPhJ-=`*2*A2_1=!}6mIhxJj%59aMvjt@R_PIj>Jv#dUk!aAQT zxi+bgkl;x~IGGMt4k-zk=aWii8bxA(u<Mlcw@YKU-WuB*J8&R&>7;^;jbOx|kxt3= zm&OmoZjF5a+#0)-jSb|8Vem3L(F*pt8Vr6t>~E~Iu=`<*IFhL*fm!%yDC!ETxv_6W zco6a)Ljoc_=*OxtFm|nBW|-&c9_duB{0*n<MgGPpB5fn!)|IsezTC#xtea!?RFho2 zLH=R((W|i_2gWrsU9tyUCv_8<@gt)W4`xbZ>-%r6ze)Z$v3h0h$SG#IdtlswXi&<` z`kOtu&<)<U0g{77&A>ME#UX5%D#h1=YEf7cYeZxLJ!Vd)locxosll*Lv_j`V`$i#P zoM})|X{XkSj}WM3;~i&+Yf+mTnD3}rc5HNf2Rs`rv%``Qn5Kq`Xiu=VqB3By1b$&M z(L|!Bry{(t!d*+L6|0A6cf+=xZsDh>o%}3qV>QJRlXEqM7^Ll^*%6<&+GbnP(Q&P* zwxTgULXFNnG+61eTWNUaNT3Pz<vN$iNfDzX%AVt7N2g%ThaZ`iik#*_UG@&kLj3TS zz&xV-IhO5%bQV-z%aYcif2%xn18mX-SO)^SqME(S$<I`IKA=~7KKQPu3bOo}sXs&Y zj(8BL&v|{8CMEKF1hH7j(unZv)t07_=BANGOKx<GwxfW&d|yEM$`NU<R@PwhVlhoZ zQ+5P<p;r7E6bxE1<ASncqc~_1T|tPQ3|4|a<CD(*6eVhR(r-}tij-6SJ)V1bn95sR zDftXFq@G&RbnsAYXs|Nsx6z!ZWoj++*$yckq8nc}Oo!4s7E|pmPmQKO9*o`=I~ZR~ zEBsMcaB9-4s7uaIva!R*yTX<#QUcv=#T-NQ8zsh^6DI~cTVTLsBr9wxsm!`lqo*)N z(UR|D<_*iUQRbJ>f@~3I?y30G+rKt3_p)r#jZwF6Y(zfc<LAj+=$_$`olnP~Vs0Ar zFMgDDp)8B`)2kk4v3cmSnz;~TOB!ICB8rLRB*k1s%)!b$L(J0%ikQKGO-<T%g6dIc zV1PiDB&|m<Y;`HtUSnA6lhWmVQWk&tYz_v<dC=?9qp9*NoFgoXO3On`lu7yVL-e+k zi@J_T7(qwIZMX#2;1xrPzsyWigZwc%Z8JSw(uZ6on=v9L<|SLd#2S=EX<Xt(qcKFs zVVz{NNJ(vnoh|%g#EwN6>=;<`(_`>vOJnOk*egb5MHoCK<Pl6P08ug*TtVCvjt3Tm zv3m<Y$8E8oiT<tYJDJgS>+-T;6bT7nBHBm95An(P?Ok0jchSGCTL*`9mwZcC4x)X+ z7h`h_QW1s(<Jwc=QMe?qXSQyZ-(kx%X~SmLWfQiSa<1aF^0O7c2V-dBD!M06+px@M z(#3FbVEE7mvw7kkJs69vEZ!fAq?Lq!?g40#CdZbEvtJ~c@*VKwf|kWZ;30tQf&-^v zo`RNfcwvO1U<HLEa2DAu9QX(c0~w*yU#$<;gtd)jTASV%?76s2q-qToNJudo^6;$= zwb~k+Hsq;r8PgODPRO^nKc7~4rG|hp(rq&vt8KY}v%%Y^y+u2}#za-=7RgdEoNKOK zSyMT+c1l}gygJ@&Ty$lxxx(S~hJ*DXo2xS5ud8hc)VJLJ<N{~48f#vzTGlsIPQUDq zF7(!{PMF%l?N_vVYt+$Y-|OFfu&j4ZosV{2?CbAecJcZ4-HW!-aNCxpK_^2>Hgr<l zi*X|#h|xRPUujp&$JrE&%a=JzJEeZQsdOJZOR9$J%Qv|wY|%Y2`HGml>)fv3i7_89 zM(;ZNkJ4W0K9%68d3oUO&?N5VVs{gYfB#2>8t^y%+fU?(d>Vh^qQCz=%%s*h9{n4k zHu*G@k)Mp?3HMu}X}w&AGtmvIQW1`Rr%R#jAi>W`$#edYodwE}A;_d;O+daP&4l9= zjZud5gTRbjASNfrq`z@r;`)UVByuB3$7#NZ2}r+}X)xW3ikSSx1p(^QuZ6xiwRx~K zf8Rt|jY^IrLB@_9DV-4}zqMeuP)Y}i4N6W8o(oE5Sa`wvly`<CA4b`b07MOGCp_cd zIa7c1W`#ZD_iX;anW9_rE_yt2#Ft`LmGGIgF0V^DU->L;)1@bD=<_-Rvt0QyMQAYn zg>Q+lrb@AIM|@!j(&jbDr?@l)29DdArU#)coLpI8?Y0<Kz6SbXmuwuSdvxh+ITLOe zU?qKe6s&0*IA%Pb1SymVOln=o<x<wxNfgxrHIkz#Wkp@Y#T;^n;*(=79z0kj+M7vU zz|Lz+rjXDs&Gtp}?F)^E58D?c@(K5B39k!mcOAAbOy(=48}myKA6}ZjQF_65V}9uH z;f48|+|P&4Tlx8FC8t+-8`m#P<YTxUu3u=!^^<P*o5Kt8H@YX?;sxc#a{qZBU^UMU zo@8gT47LG0mk?np8iZ^~DT0R)5MhOaP{;_j>P*R=G1CgT>=Ua`8Oxi3$AG0~OzM<= zmDC$1mf+x=KgN6s$R`&|1;-NMAiG$cvmS1f!B}2l(qI9$9S@XfkH*@tHC9&}9XhQ> zr4|L%di2_9NuJHz$5C7$s0EcqrBfSKI*nUXuJhTjk~>?bHrRYv2jtf1ty+~{r9lpl zN>IPVyk^=ioVGd)?l6|HsRgwG_Yli0Q>R)qqROtenYE@eYq{Itu(CumCCd!iSVn_U zYZEP^Ml93f`;Z?*Rr)HM-fFQ}^|mU#azv-bS2;CSt<iuiUiL(ViMC~Sv>ma!dbDqb z5a{EHDJ?iyKmrq89dRIe0Her{(Nl^_I3k)FEZ#(50;`bxsnIdD{2NT`_nmL(+#zOa zKs%kvf<;D>UrvenJZsNmeKV9xzFo~0F6vIY9t%0$(kU!o9?MB%$kJnHA{9Llx4UyW zo6n>@J~}!f$AmvamsYZ8hk{B&xg5$GUS{pH{>;)aI-dF6Y>66Mz=mOv5uSHXsm-=7 zZV_V(l7?)Rr#n<_lm;R@nj&_i=x+~L%u;6zkGOUT!ZEi`JvLU>wd~@RQ}knFD!n@s zUAO9kIz1K*`ln|bG=e}YV;$LchoVNATpSa>Bz^(he~ip!&-DzI%tIsrAn%T4x1k(t z3|T9jNzs`V;PZnw0<#A7$MWA;$*s(e2M5BQV*xHeaEPU~#yE?f9B8=t=Ggqpq>fl+ zyw@I@*NjJzRMP30Oyo<|y-ixXrM0b2?-U+s^rNIzOIPBYh})Zv?4BQE7w(qYW0g*K zokL}`q%!q-y&*L^5WP8eb9{bftX-nZ%X?N1r6_9F>1!L*%g?|^Q`xmmz15WteO+6t zyiw<`Lvz*IdRH#3vTEq^NM<00>th41Scf$Jf>0fAak!i~*Hhy=C!@BDe?Xq}bUYn( zjnZGr1jR!FSVu7zUJL2~Q_QMCGa%d#J_Jn@Nhus6780f!sT%um=vfA!2*L#U(+IYM z=4G9aK6Zg^7PG8mHjOy-lD;ytG1kgz;cuFcvNn3%b+vXBIb|?+g<IxyPb*8zoHr#* z-Q$1oSZ$i--YTp-tZOT;Zf4cQ+Dv0Bea8}Ss@3WB^_eP%x7;MCBdqU@ChfFKrV1L{ z{3d?~#!3optdqZ`v9iWy3Fkg<Z9;o^T13)By1ZqvzKGQJvcYw}bLfjc)<@;W&Yq~e z(Q4FrogUT`y4pqzW^UVmh;ihH|DVI^X)wvm7SbZ^k1fJf1`4FsqyZ(eNT`Xm0c%gu znM7U!6NVUD>LAtzP8v^4xPd2t69C7MMRrzsV!8?`Y4uQ}ZD93$G*TSns&;;})ETd& zvkY;MBV1Lk(xC4xCh?xiYER59n3YlH5FX8CB9~1Jtfu)kgTMke2$Ov!Vi(o&Ynq@Z z(&YEXQnYmljYPAh!4>cDHIJWmd2GIVM>U44%h@WJELHJV?6Fby$neCdiqCJ2)kxzz zSd1vk+6Hs%xpQr^hCNm8f4^<`yi*cS|MSFS4P}Q{&03K)?EhgyHTs>Ecwjx6!B$)6 z_FmX*L6_EMWn)5L7HW+DAGaQxqs|UV8Tc!QJd-BrM00-Mh3V`x)bVj$8gtJ<?i(Oc z`MPy@=2+#(1F%>+q{V}Af*H^yqRWmY=`<6B9hGDm;V*x-{tt?pLy9$BHgu4#Zrqq` z{c`)E_CsI3{1@^ATfX3b=_gC_55lix(Nv%O&h|&fPyU>4-nx8sNIo${_l(N-d<6a= zJK?)LEq;?d^;cQ&uVK$xU_lc+Qv``Mil%1I20+JPN|+(!ks|>g0h5A1QA&bDz=Ir= zD>O{}vvqCCFJ=Z)?I7>jCX)(haF{*3fq5oLb`WX;^lKVth}+udc5bno-BzqAx6g=m zcxzMIazW>+sBLiFdce6ftfP8ubxpwA9-n2lT11=M))A}q+B~AQ%xF}p)Ph){cR7p> zjl=9hLZ`ZNOV>cVPGhobEpDly<+g*(4L-M3Yp)TFeajEe?X>yR4`cnZ@!`rwYeHvt zCpuTp>XfQFs#Q9ZR}2KiR86N_s+t~L)sgU2=vr)1*JB6-8<!dk<yDq|SW#vW)n)o} zg8`0^-mR@M+BIc*bG*UXG4Jl>eRT^0W);<&q+rl*Hc*v$A@fgo-0lyM&2R_#N(8hb z6Ep0&7#iMgN(15rO~W7m#ab^t(ReLrLp%zMwWvaOD;<<{VZA<kl8Peb@e#Vvi4`x* z-in0jUvAxvM{LC#9$sVBm4$s(PKZE_s@zm=(AD5kHcq=)uk*G@0aew;)XY{b6|qLz zWUs9DC+2ka_-ZQcCcVxLOSvjolZj3>>&mUx^$#r(*yF<R(6F9eyKmjPcKD8fpwsFH zbt=(NZqggdJ$8Hvo{vLK<tAf7Et>194DqfT=e1Y3q7773>5Wda*=f|PM4IgptEY#S zwKcnKWd^6)cTjH;{fEA}MJe`#zsuqd739`Zt65kBV7+=KZDCauv1BQgfns9fn8(GK zO2a2nWX1}xPa8$-DT9_hG0mk>8l9y=o0#BcA7Vgbta?R!l1Z=?++g~Y_EVaewK!}B zrWWWK6s)(8Ri9c)d+gaCuum<~hG5cQq)w+=rPT<c%2ZS1Hf-H$@Ko2B)B*yuD(F>8 zjr!JLebitST#1MQUNs)2rqZaXT3?2~P#fC(dcDJ_6W7g};q&{uyOynZbH%c*Zol6* zW7fLK4{AGKh_kzmy33tWv&w8r)kYhAos|Z+!Ro_;eWSU|>xFvOQM1o#@aQW$eeqZ@ zZL+BJUW=YqIq+E-mZfV{Wm==zs`ui-TB=#7j&Ih?)oV{KTG-g!+_-Sj$+fFz&hoMU zq=p}b`>g=y90sS@jcDZ@<$t!UME@vb^HZxh)#w^DE_-r8kS#Juf-_BHANIWq`-uFp zm9j0c_0t*l-%m6+%tVDNh`AAlln6RA8pc-$_8r43(rs<&6~phXT9M9V(koWc$Gz*a z4Yp^f@g9}&i0)lc_3tWbeotHGY7^~touSP+)z*+*Csi7aM~tH9-r9Y0yRPl_ea&}D z>YkUc6^~wUxA$=W%s)DoI_D3KTFlLjwN<&S<WtpjgS?%R^_^NbC{Q}MZfL%9X-BSc zb-a6ur*>@mD$AnY{^iS;uU%wWHNE5qvo%1Ku<8;1q-^nyD`*lBx?%hp3rcrl@l+@n zVM)U*^@F8F1QAN0d#=AFHZT&M(a<m>DoGI-nj;J1H2e7+t&NS^z<DvAYb-k|TycGD ze|&&8%vdtBA(x()Sr8k`*+*jR1p0PLUd=LSN*u&d<mf3mRLlWqzv5B8T2tIA>;fHk zp3}b-OgYQbVOi{q)j$7?H*i}>3dbTxMh@bEUg!4he7RB(OM|R8wM8~>M$jRM@JHU~ z%MWKqKD8B2XCj*;o5QWS@k@lZnws$w)olVECB2${qq<t|t!_ge>(%sg^2;6%?WsyL zHiQkiQq18)a4GD`0Uod+><Lfc7*c4t3kpOh6=-syhs8N(f11rpdE^rfW5w9S4u}VS zB%ecC$5--`b8mzN3RS#|Ez}hf<If|Bgn3j-xDqA7k8lj}yHY+cTkl2id=!wb97>MB z#6E3j%d?Qe!8c-D+2WCV?1$azJg<9UAEaQ*ce5t|v%6u@G3*2izmP2%i-6BpPudqJ z?N2%$6~F?cP{aA*VWgcLX7!cW64SR!>%va`=R-MGF7YU%R^cwn&nm4X<??*d8Te79 zXMN~lWfdA8tbhjumN?FB7(W<R%w1??s?IDZij5@@YVlY&aA^>%ku=`v;D{l<3DKQ^ zkWe;Eyu<PqKUd~;`36@+>wIE;z38ipt{C(+n#-u!>!Q2pE|*!Nbh^POkH}xQIQ4p` zr83u>t6Z|AGK-D1+)35KH@s=5KWMYosOsxgHC9{DAIo~P9iW>I(Ou4}RMs~$iW|^r zmPkW98nIM*JnRN|wNymnPIPB!4t)i=83D`*f`u=NwSPhKuL({8OPx+LiU)bq;+*bi zU02U{e?HQdl};UKIQY~P`}$O~Z+z;>o3XayYrlNsj@XM?-S6gp<K_8-D-1h_4<i?6 z)~f2p?GHYC-{x>|<LsJs*EojmjlcNEG3WU*JRshK*@@f}Fq;ufMfO#AwIaC@87Rt# zNLnL;9t>v=>-_RS4s_=SZ2ez;OuSn@9BY?1Bg%${ebM{z$i*%4DS1BLoT6WPe}dnN zBUew4-eb>B!&t_!f&aoH2I?dfEPmlYDxQ86#5I_74O@VV4nta{1_3}ny*rtF0)KRE z`+&jVDc8_)o4&$Ru79X?xuh%KyxC!PP>pUbi-j>N^@%6s15Z5hqy|}pmI|BCt+Q%G z`M|>|)m7AFud)~%@)r=`KOci(E5^IX6lGl(W&q<wSR*J46d7Fth6H~oBFhhFac5+b zLm)ViP7={*QyQ$iP_j2!oQnlN1lyS8m+<$UBk3cOPm+B8F|&;-**`YZFJ!|J-%jU? zHwP2-3u<D%CCeB4KEdLdTn<drwNf`4_BrR_x-VnzR_Bbe8Y{~i@>r_N<Zq11pD8<V zZTZ8s<+QBQ8}|i+zM}|#l=K7Reb_S_y-bE7!hu96kv;JXNiQHRlZ;qo>5GVhu{^Zr zYvfqX3wY+6?XjjRT2meUEd6p-^dC)CUwV>0gDLHyzjQj}7Wp0D*XNlnbF-GY^UMN$ zX`)Y`#X3R8-L$a(*}^=3)?dn0g!XL|v+y#Q<%Ai@Mz+EV;8}rKxtI#N(EUPX|Nho_ zlH{nEK4rzSbsLuTY-ra;FUo(W-<#WB*JZVOJiXnYdv@l6rMk_7ZTsrk(i!oYvZ?8L zTQ*(1ZRz}mdQohy-F5r@pSfyDNPG4@LvNyg<+7pWec6n&rR~^vKi?$T=s$97bxnz5 zeGc*XCd4?9?tw@?N|vLn#3nZK8d*_Uc~K37JlG;0m$E1XS*sx?=&W$I>D$W(<}@}7 zU4~$AX8)^eR`<`DtuIe!j%`?T(X!51<86=KyQ$u{_Ra<L#)a{>2jiFEsW*sEjmBeh z=C0^kKfI!+H{o*SrjD*(vvBcRDm26v#(L)Ja#ud|Xns1SKV2AmXK8#Ja&6k=*?6o0 zFZT)YE6|;8Xip?~F#4T6y}*^k1Me_jq3;zT3=$4}6I&bx>5W7Q)C9zE{*B7dcy`?T z*o_Ozvf35*fA!e@V4`C&-Gwq`=?jZHlEDMVzIOj|O?KAxpL=Le^&OQz5R!{Kva@%z z+6QkLSozq+)#<C3URC-1FCadgefst4{L*XwCvR^8-&S>|59iz~>1yA1$+}uB$+jeK zvLr9Dl-Swr?0Z6-1t&lf2uXmjnX-hi4TPm-4QpGLP|8lHwV6U`3$!d<piBv!PNy@4 z4lQk`3@vVa`#tZulI;{a(|_mp`@BiMy34uep7Wk}dEVzO)a|@?lf2^ktq?1VySrDB z98uf3SKJGIT8-P!AUqjYh|#-<V$<a2IipBh!&|=5=cP0RTGCET2HmVCgI+ZFwFgcy zuR3zl`eiG2=rF@r6E#~*_f92^>X7Y8>7&~wUMpBv-2S!uhqan?<83%(CHp3kpJ8Bf zLH9o52bdE{DMpVS-!95qWeEgWxpP_Mcpf3IQ(o0K+x#Y%>k@}O+$6E6t{${U?n@mO z`DV9U&>8K)KK6}LoyBW(yY<GVxk|b0u)2(sYt$}0C(MT=)Gy4mQj%r`Is!<cVnx)# zr=P%lgrZY|+@PVy6GQ<O_aQg#J;f`pk2JcOu|X$EdV8ihW7kVYv4I(VO_2?XhkZ%j zT=#~kHCh6*7sMlei&6ihy3O*QD7(l1Kx(bqY6UH_!(j(2sKLFy{(ir*CBp8J_s^Gf zc5@(XwfW69>-_yP`b1q*cZs`Eo$9mbCMb}2QqY&%bfiw>4P-E22|gH%`0-$)j=zrx zT-$^@6#jL3m}DUdP_1!?#A5}&6%o?36-nF18z`kXH+X62r$GDh_ss%7J$$1&kB$ou z^oBrJp$oGEx;psN45BFNtsvRa>6~_l*(~X?!C-7E)nP*{0N)|g>20!X)9aWJ2{@dn zom^LHGXBMJ79BqhPC$N~9|>T8ahy(U?)5c=0-;bb<Z{GqQd!cQEp}#ig-W4dAeix$ zt-+Yf=khc(IP3lXdPhTJlPBD4(obAl_GN-_sg-I6N*49NVmKHGHQ~TOoDOVE^8=mf z>VbF$9IGXC;2D@Oa}Z5VQeG!4M5Io;NS`P7sHhTB;$FXRjYnL9&FXCn8%oIPJ^@L3 zrBSejV-bVZ)YQ(R{4;#sr2<fE*Me{Ram<4<RgK^hn+W6L06_9MJ}vzKQkBXg3GO_( zbn&syC*i58D<I@0a7$PO!SDf%ixq`$Ek4WZv00a&)z_46_s@)Of_8vtBwAZK`TQH| z8uZL0FWXgWUz%ggrc=H-0;tE5QX<uun(s4-Hh5oni^VV4cMi^-H+x4HGxwN=2oG|D zmz6TvS$mh&DeeAQ$<pqnF|(<>KA&lbE8iNXT`C4!@C8dkb_sSH^@*xGb33vH$RW~i zXYt%Wh{PC_8U*CAs^|G+#3DrCL}Y8kfDMHln)V5Ry{R-3XA>p*6mTOSTv6B{-nhNY z@q*>;euHhr@Cv)3?$j4X{3CuLk3S<XoLXnFFW<i0ZkRaYX=$<?F>9f}UcFcuSj?_2 zkDTUdZL}OQk)Z{s!g!^%ySudlEP(mW_Vzm|H$mO9*~I*A_sW}<He}bmdh?Lk??Hw` z_1=CAIYwB?8V3ZdKyET2vk#~PL<wDp9Ez@zn4Gp9h;Ximmn&De&Te?$c}~L@-|YF( z#HF>Z;vhgoK$ZzNkox3p$haoX#~<OMiKjinK*RJ8r|TJ%3q}H#mP$-|h*MWuDy5MR zlb2|10s*VH2c9}iXU@LL*H{`|aMD32l4}Vh7gIFE@`~m1z)7+A#(^EZTYP7m^y~Bv zNjDsCjmr(qjHR6&m4&InzFEn%*TSCRM96CPgYsgfvZZ6kjt=IuEbG2nGDquJYiu~T zB$D3IIoKz6B;7bXIje85yA6}9Ci_~TD<ydBNp&}p+?i}BWLK@BJYdN0rM*}Xek><g z$Y*m5$6FF|LoS7o^TO2P*|U>rmV5AO6Y4{l*mon#GQ<8xqwcS?V)%A6(p0T2&&MnE zB_Z92j6Kh7cd|c0eF8&thy{>mT_IE&C_a@9S$4njG-AqRM2)K%G{Eu<DC=|V{wZ52 zhitUvcsc|{h40RaBD{c`VP4a^$9+@e(Ic+hG<bWog$Q^Y`CbUjfGW4lS$p6%C!8y2 zbIY_b#az#KZ|&;Z))k2~Aj7C}PUG{9a~tLtJJz&;UwNzGDXebm+S>g*_P~!UV+V#E z`A%Z4duz7^n=1`-8ZG#wVQ!<Pw9-)4^=vFyaN6S)spq5)de^nJ%ZeS#bgTszz>BpA zO+&@D*0|tc*(OORBl7^kN_JqJAXiBC-iv;L8QMiZ7@#%%Wa>EJWT3yFkROZuuPHJO z;R8YmPv*i-%9SaO!4lQFb8(mx2*_3U2XPA`X;kIX1TzFABoC&Nz5xvYwkMq3kfaG3 z{q(6suwjANiSr)ruvKRfIpsO#mHP$>AB(XlR7*2p(i{$Cay~d;IDsA}EPtIPXp9=Y z&l0hE^<rK`lp3x=K_hA_BVB1YP(d#NK!MHVvKmBf9+c~FZ)@O86l^9zON%Nzi9+6_ zwYt47y+zV8lPIork6!K6!YmoBFo&pxAJ61B=yXP(0Uzo#0uzDX5sU_%c0oM*yr{9e zj0T@Ut22VL(=6%*EfWNdWYCMOK@fFVyFodv#l>7U$%xpx&SEk-ZKOL+VU|^&2eQXv zlh3sR7s+cp_x90=<tIMZn*BE2R|33L3|!PxzYvTGp4Iml=LqD?j!+|Wl?s4aFu4ex zg**@%CwlsW`8fT2wY(cF9HgpJo-o1R$SAE5O492zMqaS508#RZUtCe8ibQg-`lhNk zzlc}~`SglBLxUJJV1cL90fNv7$syRICE)5(G-xoIplC^xfE*01Di?$>b0%A=JU-LE zq@kw;L6DwVKsT(u?7r2RfnUFW?y_6D=SBMG^ek*Y>79nH>x#PE@}bp5UBfbecSlqc zZ0pL$M89}%o$_(_MBRR-(YZXC=EWY=?YMDwQTXv$PyEv!O;^{Vt(9n<LHZ~xH7(z^ zrl4tBHnjSOc1@tI8;1vQ66!)VCUHOHD^k><E0AVM=#FY-5TCfiw)5_%?%rvu*ebmz zZT`{blX@#QA;0eM^5uuu?Oe0EwXLmn^_rb({|LVmuYrFe2EQDT4DkJAu;M@~aphe+ zTg6v`HRP2{q__w^s7~k)tlyLUBYZKjv0a$6uODl`H{;)I5Yj)^YTH*qU`6h^2hsSp zRqMU^I#Z^-&UjIHPH##hclC8AwPA5qBF*~u%~>#0*~<>kT+qI;1;7np+lyJ{S=OH| zwy)_pWaGzW@_lY?UDuqMNujRP*E1=n2-`^<(lcldQxFo9S;YV+Rq%ZsxGe~YlB;kU z4d?~%oL1A)NSM*o7V;zg`{ywHUI=6-2J3;b_O<Q!0n-~hP#r@@(MRDK#30v;t8v-m z;SNjnI@R~k)l+Cn9sy;*9?AZpCj(o2Dn$TfxE~UxzX#w%HOp|6=PoF(0u$K|PzUb1 zZB<?zo6HOlukPvIwgZ$RXj&J?`oz`u=kD0n-810?`AE5f1)_CX%RmK50&N`~ZAcOz z!Cag7hoIA#p#h_xz#tF5MN$j*HF}17Ed)(e*+|$D-0zk(6Tey^{BXiKHz2eJ=8A_t zR-pc~-+k?SC!eg$Wfvlpwsz{glsiXAO-O1L0?ac?0RGWd=zLY2w{j%K7Ek;G>#pU; zvHwzX?1##4So?p~bcLhfPNf<ESWg`Z7npm!t~Mx*kmN}ymI;9GuDxudX3xN0fvq^y z+9nA4^Ur(cE5c*SDQr-AiVZd>@37kr-)LTR?ASBUOy0L2d4?okX1J2@fhWm&r$i+m zVi?e^OG&LmJ0glrP0D44_WAQWoW@InKN47dp;@oIBYbC~D9rv*Y~tP6$%%s7*)hL9 z7C-M5Ngry|hl4kcvG2TGwefsnGk7O~D@(%Bp~EErwW#sulkY>9#vcT`xB*x6`bv2T zJX2VUR7PTq5cpP0-jXj#840B#hhquXWwy0<?_SxU5!<$0G<UFfR(;CvU)erKa00GT z$|h5}NM3L0YBw3ZazVb}lx4Ge=P)tax4vc53bXQuuKJQSvRV%MLjMk+j;3M7>0NU# z-d3!uD|IjHE9Scy>keZgcbB%+MKrOx{7acw^YXSWyBpG1t!!D}AJb?uxnB-+cb*&Y zE~@tDd+;$<*AG&gYKe2=d&m7#zrtgfUl`lfzOjmf@CnhJL0H^}{0o4h(D#t3h}&Vh z0t<yn)2x9Q222<c(-zQ%l4#~1L7Nh;KLqB!IZV(Q^wuVSi$CRGXEZqNO}VBxh?e`m zWHS0~I(uWb$>B5@*ZWd_;oFA}<>t-`GncDA>8|ezwg*amnNlg6sgFhS%`F{rynfpp z<pYyBo^twg&G|^IK9en#GJT!MZmizx!;q~G=#0omgzW|lGI$}8YQPbKSeFVhACZ3m zM#jrbtShsC=gKQRKx&#NMuf|diKM1RjYP+RY-3OBN18_r<D)~-Di09XNsaJ2C2@W& zjZH0J1WA|Hk%Y9Mzb+LuAA{40Ku$5i&n~mID(5Tbw^-R_bC7HC5Rm+A-GSWgw`Yfy zt4_||en<8ccA<E5+&}SraC|%{RQ%%;-}(vr?_*Cq`4h$bFQ{6Sxg(36hw<l*%qf%i zO6#!)lC1%4NkTxt(1FXq2W%u@k%&i^B;fZu3V0ZRT_d2H&M_@u&#S%4n)3A!^Ugm8 zKXS6xAHMVUG3NK)>$?Xijvp&W*&4Q1IP|~+%2}+dYu;+3Q3~wY8wjnQxBPwW$-{zB zKPOx+hv(E^dg$OGv_<uCT~qb1Qf3cjohLl-z=1pzLnn{a^K?Sw3IcTsJloaG0^#D* z%e!;;W$#n2&+RUsp1m*o#OZInb$agJd)Z3<k~{q^Hn97xw{~amyN~@ctG-kIdv|4b z_TKD$w_-D1ch~&Y<m08xS>iX0q7_`WL83!vLa+~ta5c?@NL9H`dVo{o9T_2tQ1<lk z-$P)2h#cVz7?X)Ld69TE;!gu$$^(7_25vP!AWHOo<JIwYzj!x~;lX@z!N5ao009CQ zB?Lehg69##fN-cK-_VzTS1kVS%kpo(^)2s_Bf^&4>8Iy*@6OVX@Yrv>s5A0A8DsCA zZwjA#!7%<2KB(<6`MfE{X@}-O>n3tU2<U{t4gL&Dhk)ia4f!Ojcte5-{nEJd3*6M_ z%}>u&!As)j-wuEb71@BmZh|6qVwnm)I^i0W9YSNOhV3Ph0bnnDz0wr6ciP3KaK1nj ze_KWQR%T6y`If6!-&HVDQVW)9LvaKwIfmkB!EpSI$u_8C>8S7|o+D*hA({)1OO@Np zm%^fq+8SQ62GU75#1b($eLWam;Qs4nH#QA#=+tFa^S?i+>+gv<v-~gMY!+qWl-%8S z=e9%FDGJwzYrA1*k2BWOUzg>7M=rFucI57^zdO6Vlp2{DSE_G8t$o4sJ!(PZNlh2p z@AL%r!(?v}NS%I>U=FH8N`l!7AS=|C3YD8cm(#il!9{qB=`qbuudYG0HCBTAY9nFh z@T_sg6MxAdLgXbu#usJF`4WX5!IQ|VZ|UE>r;w+;@-f;rZRw}OR5c!;Imkx@PNu$) zJi_xwD31hI0SFZN4_wX|Mlc4eWT1Gh>iW2Iq>o}j8LfWPcASqgPOD%16r57&HK=y5 zW8f$uw)hcL;6Rtu;?GmOo@$?*ps#3g1BBA0sg0zuNeg5ICq%+4KQS04Df<=9DZG-^ ztA0^M5T3)rZCmxmsAaqfxPEmUioM7IAYSTCm<?Fq5me>Y2ed`fBspRQ017BOYUKwN zB~$89eb-!XfJFk324X6ciUrn4vBr>*ue}ksnFNjBWOIe!I!U%9PEE8Va}9C`a3Q}& zFwO7m*s+#**X`)&V#=aD#iglSUC52n4ZgPS-mW%ZeIVlQ%%zr={t!wdM<w-#P%4G! zl5lw_(bLPAR%>(0K>q*<Bs*<{neOdLga&tAv2>vv3dswXUa?Err?(`VR?6Lemn5OS zr$&-o?UfaoBx>t8yOwuN{#5(s{i>`@0!Phf1SkPx+&@E<4hU)ie}Q-rY!EWSD6&DZ z4kEZD*X<ZsJtHyYrFqKh^k6Vpu55@4p_J9+yeWH=yl{Sp$DE7R2Vy|-!8u(3IMdSr zzmD>>6^SYn>*iGi*u2Q~y-IM~J1UjXjk(Wy41wbOg$R%RNvz_8eV(>lcoIYNFwc`{ z;<)-VW*nSx?~F&N4m*Kt0m3Cd2Q-ix?S++8g1Scyl@MN`wD%I8VG(wL&P{j&a)yyJ zs4VvIJB1%9k7ORz1ViF3Fnb)Zmj{v$%P;UZKuvkb(?mzXswkE?5t4_dF^Mi{Q-sS& z=OZHF`%pDZM<6K`ES!>5S_QXG=n7Tsu$f6sIGnJ?$;Hdv-iO2eK8Mv<=M8qcZB~uP z88Pr|%!xnl+b3s2_2AWP^zQeYmbt@VZey?68@zXT8zT-@4~Uw71Uuk|IhxB%(r(vE z<*@4rDzS)<?L8A1{;+Gg$+zD_yC;L0iLceQ5RSMYm(nU-i|{SCHqr?zPgB>`*W<dw zC|b#XZ80{rTbw$-BiEb+(%5ZlXiA!f4agB?uHeLvD_MCjONXxXHbx!c1Pi;bd0Z>8 zTkJ?}mm9s`4yD-*vd=DR8pAhWw{LqJl|O!8t4I63|FS#GfU7eq=T#)_<JaK7M3~v5 zjovFmDahEY@O>GK3np)C7?HkOR%*>B@?JG&7~?ve2TL|BppcCmG|XSg^rT{bHR&$q zAnU+TtI7umE4Y@BN2^Nr+AGr5D#zb|l*>})9eo{ND`rQaQbVbpCR1`4k;I7zTmjc0 zwMo(-iFl!cnF<Tfkwp5gR1kvflt#aDiE@cA#des-<3AefnRtRG3*z{l7gfaEmO5oa z<h0Ww?Ebnfm9nL?-KFeX!%kVbQn_sn+Y!Ilem7lLwI#0yt~d^#?p$0oU0{V~QA$Bq zN2yILs2uZ1){KbifgEp+5iPkOsW`;61Fjbyiz4>{wEb%rD6cVVDB(;Oza9$x+~TOO zcUV|Qqo_mGp0G!!fQiItkxcgTY>m!r(rN$AXk<3zsKjKe!TMXKdqKn6m$>3V3WlU! z84WKE|J)+kY!Xg#wYAP?6)gTbVYSYphbzrtUQ(HOSu5ytg7)7GK?ActVRbv|^j0}$ zd>m%zWPFi0r(rRw@oTke4+(3|KFtfBfUbpCGnjcom4Z_Cy6m}3%2p<89DtHdt(e-w z1og9O9}-`P4!wxS$xCS>!3<reI_&wnfbRNRXhYbQSyq=-K0Y_gqJIx*2%B9y{Mg^i z7&2`<KEh*cF+MV2u|o~OL_jk6CmlvU)nyL(m6G6cBcVrujG8<|p<ID{d00e8l>hYR z!^RALN2(%gc280ha^D`wM=D|W?T|u}w!K}>hLVic0f&dBf21tzu;G|G{K9QS0;OK8 z>zv*5TO8Ef?1l%X&i(M~T4`2RzL7PAzKG4W`w$+-dZfq9ZsESdcHrJAI#?y0;)L}s z^66A%Gg^&kohq6^84ZC9Xe5xlR2ol>buci~R4Hku(zG&Yew~m+5#HfwmW7f6i{#(q zcY`#iVXa==rA8GiR9_;_cvT7IT{QEHp$6dwIom8>Uv0PYi-)J~N7BANIgWS1Ru2;n z1KFyGts(gu;Rzy$#X>=Y4NFRi#u{?$FxcqZ!TpEO&jIB3iMt%B+1@8Djro~!^yPB- z<*3{fEC!$S&Pqp(M!V6h{8_Tdwg3jLKVXYkQSAn<ZMzu`nMJWkU31JqiAgBz(p?v0 zb1-`yPGm?}Oh&D;NMkZtLMe|+Z?%w2QRC#lMBJ@J@f7%dY2l(a5_G)<P{6WKis645 zxzT7bzGF}eV3NXaA(u)Cu%QCh)=w!pLmp8SV?c|1E^A#-3^lo(23%J8fd*-0E>Aj0 zO=4Y6Gq6PC4tu-{&3(hun)kQPvq+L<UaP<Q*4k*LKAGiv(&BNrjdm=n>OI3}Z&3Tg z8lnF11*dmcUs4e*mgy%_&snIq;MUc9CkAx&Syk_yb9Vg2{gHf_)&cyHRr^N0!D^SQ z_kbRsc6-lgjl9SCt=I126Hm4;89nh%=*h|!J)40i>o8UIwHntEMSlNowj-^|l=}Bk z9UW`~>E*j^mFNF{o+F_rIMy*5WHS}zlIr+F<PT^y#3x)Z?lGJk>{qQ|MV&atj)}X1 z6V4zz(4ia^&Qo5PdTzggtnfjOlZOaI`sCJv%qt7M@O8m)k#JGoRWIxytWVEWhUBhc zEat;q@=$r?g~mOn5j{>=JURxliQV(`&pxZ4x4V2y2EoTA4c_cf*VtGRi|nNBi1{qR zn<;aI6)La5otA)y9uqf#c><>mn8In|P)fm6aaNe~h^clY1kaq#pLNXr?yT;WT9IkA zE7&bJ&t2A<Da_us=%h-%d;9!V#omj5^4ZS{4rTObPN&cEvsVO1e=*l@5p;8lb5^k* zKirmE{PTb6$iar0jN?qVXKR*~>Imknc%=8F;Va{aH0ZnOs&$1};557GF>=E5npLCY z;}GBYi!X5(SC!Q08)&a9D7#V~8HMVE>#H)uDq7Jeh*D1XJ|9zkFJ?Fgo*^<hPD%16 z`C+E|63<QLeB;R9=^Sz>U6UZN0&yWvx5H6|42l{-Yfog(LmQECOx8KaJF9US@~1g5 zD#V0|!Gb1Y4p%;ef^-Gp-}aWzS~zpz6EDln^JksCG4ij7vma2lvV!vavhN|~8|)vI zcYKxVT%($-9z<oxT30i;U=ZMYs-U^#n4-U*!tlEw9RRu#BqCBmm<kXeH^vA>M_?cT zlZSOIMfDBXn;e-BOx`qT{ux75Ab{xnN0%*WZfR*=vP|Rfgu8>js7+Yxuo{fW<JDV@ zUbEXWU^Dp4D0qCw!iD0|6Hh~!{7yFEYR2(6(X=xPHiyAvHq>W)wg9qtHD-sw5wV2K z!HA<#wg$~1Yc$o=pu7l54D~smBVK}jfDZ>olFkDQ7=1v4oLuUV@Y+w^>SNEH)6r>k zG%oP?*3MhMb=i_T*aU5HHqQ6>)~H(+h?arn>&_SJqxH=L>#x4}v4a<H*#F5b)$#ri zo(I*`N&=BN7r7H_W^BON!$J!GJ|g|dWhvnS;RW4}O@w8IIR?wst#bjrirML-EyOw_ zxg;P*)2?Q?1K^lKN(%}+@TuAiIE<9{VS10Uj<y^qxVmy}9epg*kV9IDoNZ`g|3dGg zxpXGeoNFr-_)Z^-F1_Kcu2$v#wyw9_CXb(N)~yD!MrSuzoJObCQ5;#-`BX``X3j-z z*{;vs`?;=c>qT=qPf6$MmakbJ$)->F^Ng&#OnrOiDeSpi>qS>y)XH~#Cmz=8l)Av~ z-2wJ<P?OtX7&eN6#eqa=i_s=scHWqZg;#B(qvGl4r8sn`PLB7b+!25&g@{-x=*V~n zqhBp|-bV~yq-0S)p<n~IjiH`EeS`$X3ZDmMenrY{y7an(+dDM9JFl3(_V#7ovyOh@ zWMwCZXeDonb$he&iVZ8}the_rbsOl^NPQGsHv9Z5cJ^vIwjaFi(oH$3VqAI0BbPOn zukQqaE7?(hXV908#p`2Pf9Otz|LJ#(>yXG-z!#5I|4+4QXE0tj1gXmK9rC&%u=xn; zM8D)gqgZwlau75_d8+43nlZVs37A=`zDM+YIS32`!ebnVOdbiu%~iG)yh3<UlKV4I zhXKR^qYF8o;6FpBi#c9^1k8u*>0lBLGhTRhjF8Tg^{TnMO7#<}HXN<tW_V`jU`DBk z2y%!<n2Sr7YDO9+71oyK|DC)LB*l|t(+mDCGvvS&6M}%yY4q>nF097Hts>{wWWbgq z1gkn?;HQ8@tYVL45WQHY5p1%#Ic4;(6Krz&%@YVV)m*Bd!Pgo<%sdIaeGx3SWkdky z!N-S~1=xes{v?w|&61!<g^T;weFRR8@g)Zh1ceQt;?+^WQ4iG-Lrm!j_WI$LH7|vl zL-<K1vkNkr1=*L@v>g70awclYT_01<WQ&z2f61<o#~(PPJki(xQuV73ul@bkT(eMY zI^420)KX{(^$E=bYX_PI9De+PnBa-WC*F^<AK)w#@5lPt4_^AEvb3+izpr1oqyMG; z7g=9b_MQ#BD8{|`ghI>H(gQ~nsh>!jz!C#|4GBQp3n1t0q-AGh>UZ6-cH{D;9mQ~6 zxIBBUbHQmXzIB%m_MgAL!8WHPfl#R|4%8of;NdF=n;I4@d}__A%B*mYf9JI~pEn1X z#!C+FPjw^tqI&%^aDA157?gB841yk0BO&BL6ZZAqLnwoLdhe0%y;r_R0SSS)>xFHd zTeo&@d!hQOyiWY9s%-kDcs=ZU%9H3I?qPZm+~XL700%OR(<zh74AViK8k9$`#`po= zq5zEKOOrn`-6<}KMH0t<&*sLW%JCPJ+hZ}|OY_g2H}BkQ>Ce2vhC*S(&h>@D`qG9C zAvn0<Ufi%jJRDVS_u82}@l40|rrEP&!Zk7Fyy`JHQ0XkJ-$e)E&t>azT)Df9<3PNr zu7zo=K~<g{P`P?QjR>lk0u$38f1KtVG-HaAA`TjMBbaKG4{2irOf}4jpXwYr3a(X1 z0*c|P8D*%(SIc9f*q06dj~wjZ#WS{{8vMn`;QWUfH(~!GS1}1{jAxMdAc#%6CAqLs zL#*WE?nqC9jAQf?s)u$UkPVHr*p6Lc;g{NBeR{mQgpSs2L>AiAw-weAmtaHZv0tIO zXR+XGFBJe2?SKQdkV?eq1j%WU2KBu|c+=V%jQD+~B<z2y-)iyc^-O8Lys?t6zv(8k zqo?swwxFTMVzZdMZOK-j8*GHAO|3V1&Tq7a+`g7nyVoFFdKv;Kh-|Sw6S3P6Wl!16 zp>#`D*)%-@a1}4@C(f?RrW@ORu8&TeYel(Ux8H2FE8~|pmWS%|;H7n%hj7hDb`5Gp zsmWER({}_SEYf4P`53AiixXo({2S=d>mu$ZonbHzS`iebW**04W6r|Dt#!=OqA%nc z+Q8hUqCAM+1c49y1277{)ciHFJ?t3A?cilyMinnz7?Khm0fE5@Zkg8Rfia-xgQtLn z)Iorhn(ic7flNt>YX4JSw}-kIi&%TfGa224oO=1Xt248lmd%?}B{qkh%^b00HkC-B zm<L>WPQ6WIG->PxySwObF3g_S)8O)kBlYn}Fn|)@)p!oYKLzF5YciE#iyH~*>EXU3 zb(N0RQvGGhD;qt&I=y5?jc&amteCB=zc6z?GnF05S@n({c3KsWgC+2)>e$^aZbMua zQkKGXh=tTJ1QZ&`fbi++Km95D(m9u`Uvp|(C0uvW@V0CAz94S<Q|?dMm&2i*4;=7% zFWGqVC357ORc=8V@02k~IW{wq5xaWEdLE@gK(r7e7!<61EQ>0{o>md0#FJ7D!3}OZ zG8WY3ob(knn3h(BJEjOJsE$;T*!y_rV)z3ST}Ysw$E)MYM{t|#_4TsbYquNqP6_Zp zL2~MiLO*!qWMY9;zZ{NH$KqowfD&@$3RNNNibg4^eF%;&a4sIe<YkVi$K{^*a;#+0 zmo<8a!4O4#UA^X_GNl+17d6bMfzi<+0C128SuR6e=!Cj(RT+fm3_(>ISE_s=9=8<v zjcQ9&fiF{}t$<1s!3ol7AoL3kQ2F^V=)jUxEnQH+6G{B1u#M;-$HpdJ9ec$cLgjDw zE3bGPWV>B%@D69s|3dEE@@KLSk7ORBN_Sv5N3f1!oQMrXU13&1c)=sAzyS`X{4jg| z#xG>fh4A|6MVT+HzA*bZwNs6$?H2donRP>l0q%yN(LnT5$OGtXsNs+%$X`@9!EFKq zoQv}mPy=cxC8<_<ZDyP|f&TFzAAmG*%nWf?-?qiJVyi*_$Rm0qYc81Q56w3hnnV7h zlkXo2gji$8#NjIc^cv`m&?xVkboL1!v@Ov0ZdqaKGuSj6)@kg<KJ$`ImCB|i=DtwQ zyl#bg$xyjGw8Xq(wYeoU$JF1%8LV0T#Cv!Hmg^w<?`n<#?pcjvegV&>33gB`&#>x4 zUJ0<66uXZhd`W8;`NrT*<*sV(Po?KX$s_p~vTHF?Ysx3GVW5)Y$pOniq8vk#Qf2p2 zdB2HgQLtPRMTu%OJ9w~0FUfc++a}J0(#gNrAMscYu)`N+9-nx6&^hK5uik_ze8=!K znK(KA#Ol*@yF5|H#0%_uHa-$rG<$C4GZ+9$_Yg?`)ODH0T@rWKjIlQp_Z0&L0H&Ur z3!|fH$0Zx(TdTKGa%kh80E{K@cGgB9W*2T{aN@4ofP1Aj1jkSxa15#ks$K(*n&yM> z@hpUtc+`P`Iq_w>&kEy%P#upWglt&MlvehAdqw$4Z5Te@LH-9WgE^O@nvJDO5BOTs zHJMRuIB812bx#u+N!$WyE_4@M<EuUZME39E5`iX)DiP=z=ncXgk_YfJpx$;>B*=r1 z38*vViq>Yn+We`hFJ4$db|_&7o>6E2L)6vPxkECK@?m)WPCn0Jib6E;x(>kHc}nE| zfGbONfhg;qETH(~&Ftn0=aJ|kFExVZ?qT@}6orI?=1~f~N6$RO6y-(kp83Re>gkEX zvG$32kQjV$L{N8dTklirL&6z!guMFP^@6MNN|CrKRf<H3W%Dd{4%vEB&xP*K1Js9% zxzY}HVAXd5XbU8PuMMcC68X9dERRqv(NB0dr8J%qpFhAH6%rnX%qx-_Me*u8?zr$A z<+yBs-Q^vPo?cme{EaUTR)TCexMA5_KPt}OciugB8HWci82k+)4_iI9S&K8a*@N(h zEUug$9Yqv)yljw}c;Lc2?oi%cwmzub5v&Y;alxBQ7oR^kY`p89^Y+dkgJ+BVG&-2! z2iKkxaq>mr@9ThV0X)6R|BBREk+8l1NT)zp2OSQ~c|IM<F*p<8f`pnnsj^Db&AWUB zz#uT^?Ud((zVCg%^XO-lTipS@mj#sv!T<Roi?dK^Ns*P7lty}n4{Y!5-hN=X=U8Tb zCPQ=uO$(ZYt?v`D=#jLt2!t){fZwABtzYr;4&|rdJXlh~@;-C8hmP&(+5Q$MIcQq2 zdVXd~ZWHGpaSyl8m_=iPqNb=8<%&uCW>hvrorHV!iGRZ#sZ_GcEq*5+m2wUXM!eoh ze#BTE@g)}j=Q~nqW#RSz3UXV#Mi3?5=kVhuCqDY$Zb-GIsdk+fqb-4mVWQBE>|2i- zhaf_8j#t3{<gdcNkOffXU@edAJ9Yb!Ot#YA^2nKIeP-3d`Hh(hVRpyxp|G@)%^cZ& z>i&z*I`fg1_VG%lasI+p9M)Tl!IFPbt++MAg#aQr3jwD>P8cwWsGm|{cjwsM-}5S4 zeXpYs$#svhgO4fKJ-AnSS4hLtcz5n~qw#eJ?|qLyzIU(k>uOB$Iq@Ox|Ayak(gO}u zJo42Oz@qJ``NHqc9m$?jIVCGTRP%{HB%H6jP=6$Ms`4ea>J&KX)PAA*WaLk$OpvNa z9mN32VEJ-e8|1}1?3nVeLX!OJO7br}?8>?9j1G3jfbxR!&D!}st$jQi3$$X%x0jz2 z=lV|eQ`@Jcu^EM_A3l|;mEnuyFKt``rZ5iCgVR}NiDDLDAk@n(<UQJi1I*X}e2VuB zc_!YM@8I~WBhm4RSK+~L8-&b*XV@?VDopm?fY>)=j2_`AEyzYU@)YvVJvZ0}{s_#y zA;ZXEb-g<(KENe#O6BX|I6TzYfl^7TI<W%~H8E%+kQ`_e(-jfi0mwdMY2k@eT~YZ| z4=T2dK_e^+hVQ{Oee;l@JY?|cMw>S2e0qRGAB@g6wzJu7;^$7yxuYGYjgJ%X0O0pO zKn=_&59)o|p{7v@`>s=Z%8@N?tPfQ7>a!#HX@CbC8B=JNifd3=)v0+D*A@FW8427i z3$No2KNvU@&iN7Xo=x6~HX;!Q?}k(O`~a$~V9in2N|n!Af>(_yCSbM@e=jK^a2=3J zNw8OSF`)G@hAnV`j7<V0#^4bcgOW1(wp@w64U%(mBcQwplF#u5pQ+jh7QM;qsdh5O z@`-DiBi+z;LX*Q0FXAT9yTBsiO&VFt)ZZwV?#UlJ0x1qrdFNPV<j#rqk+O_3%~Z^Y zm`A7{CpJe%?vyJNU&fwgRCON0XD9-*2{=D>Y(0t`Q1UQzk=*8rDPoy*@Ik?E0r#g! z{&>hc$`8=NeO!ely2t@sVr1yLD94GC2N<eKiNR32&TaU0^RL@8?qwI<bmN&7O-SB+ z*8`W94xKlkpNVRt1N!cAaBixnO&O2ZwKH8D$qO^ZK-1}G6}ymKXtGNG(fDrX;m=;Y z+}E`2%7H+@@6@lpZgxz0l2gK-J0NwVtf}&YAY{6(ttT~?X_WD{nK%okifR|U4gM=9 z$K-Og8Y2;aEU{Tgd};(jxM2IkE9HLWv1Ycc`|u6t4?45k4h;<URg&p+veI|kY~&as zUvReg-Wgwgc~H5miCx$n53aiC#_P`Loj9CIP21(RzDf#Hv^I{O#Mo3Zj&<l`@OqFg zMb-(PBv|XAxR6~EqnL*yuf-TcERN=sgzPo`CG;FWxa1t8!)IX!%wDJQoQXFHc_TEo z%vH>DTQJ5b6~6+mbD`bra~c_=eJ5TU5gtAM21;>rTWM-c6Hd4pk?YknhA_sko~imc z#uMC0D96qpdW!r;h*MLQU${oRgyw}~B(0XWitGNy-6$Z1nFWhFgThdN9I`HlrAO`- z#csLBYA@R@J<%Rf#2<@&Nhlo-r$cNpHrDpARi^%_?GXl~RN0AIAy9W8J2Eoy>KvUZ zUW_~FK1|xVbG0TCNDgc=>E;}9(K$oP=jP~)G1^JpTsx$?lRHG$o~9#9d=8e7%eoSM z1RIR-mUt|rXVrdj75ERUpK(fl{@5lzPY@dugfvVRnzASU9)TbNQU5WrbMXywo(j5% zZ&NbW4fF|nQ%$vv^4+ijnPe&r4shA@1uYX(owMt})PYV(UqEhG3%08}VK*9&>Rczx ztq;$C4zEan`y!zB37o-r;)r{2USZ@xe=6^A5`Gzq+fux^=u_P`+@ckG9(iQj;hW;$ ziQja1+tl07-+#Yv%gn>Y_{w<k@XRf~6aQ7dQJ+cAPR}0R&=6VS^hO$^?K!tixZp3( z!cVB&{^=*Fp7Ucr&Xiy3Zr!}~bLK|ygBtxUSSJkB0pdeg<EfSxMNujGn+D3Yg(R&5 zz+gN|SQ0fhBh|+Z)_u&=Bx*$=yamuA7COw@V}Ndsyc7t$6i^=JFK_dHhQE}3@M0kF zV&DjW4B{^3rFgk6iWqrCmhmh{kd6wYPVSNA9>E28^hkC6dKkPZsTqsm$(fO)%#vP^ z!vRAAou4!@UqnR1+>%v;w0j*-MZrc`$(ml^ZB_a>Qq^Ef!~X+ZN!61e<pr^I)0%-! zxH4j$g@QkkE>{}sT~2>T397l>-Z{8>s8zX*h1=qZrO3}oC38#Xw1;3!N27gRHd|P3 zZ<Rxl@~kM^K-8)I9hRsZ8d+9XS+wTlQcv$oQH>cyh!&?o=QNn?9<wI;Qg2Ubc+J8} zo$!xGJ5FAkYM2uV_<VuLoW<)-?l_8!Q)|*7S+$bY=yU}EYxytGr8YJ7^;kY%Tg$(U zXXL|*OIl6=#h6IXaiFqs0S|%RLh}(Js}QdDR8via$ICLzIY{`<hIi!hv!0)`r~foQ z{yZxxuka)j;W#T_D`O^I7~UNz%hy)GRS;e}QCTU>UN!M`c7IvTFX2Ok|C!zfk2;Mf z+mN2t1~O(KC?OmEN*mZM%FC>P)8CO5j&CjRpK8S3%JnBSVpnB2b6f5XsH0VV>nZU` z?k~;2&qu2=Uv>di<T`q(TJM|S#e~)Mc_(X-d6Gnv$sI(5;YAo%jrTIP^;bW<%y!zh z&)Ij%u7i@)-f?K<%TJ$a+3?`@ZR<Af)#)<XZ>u3jP(*Ow(6Ns7fnx0ZYtNB8{TszC zeU4MV`Th?tlcao}pJU>#PV4#yzVp<XS{(WiorINZo}lXM$E=u(l;??ql~8MU)h9%H z71fhaxz*x4N)FHmGE?A?hYuLQ6im4^RB(7J({SKAXbQq>$<u0pJbVVz>}g9oJgivT zMn>QrQE~YA0D5ItWl{Ds*^6@v0mm2{yWQCKJY?kP$aobAkD~}kItuo+-!063<}+Ei zq#zgntcbfI7mMg=LcJq$K!G?+HFPfAh?0ZyY2o0(76*leIkKA);t>ok3)R$3IP>DE z$>)FwvFfrDcd?cw>*q&pJx%tRiIMp1K#CIxFP)RoM|x7JnNeLs-_m(4R(~-?JIvhb zN|h56D+Af~OrW&5G>TvRu(h!7@J_fPH_#vzR;=x_M3XGwV>x{rIFFObSxXkQ>6L@} z)_F_%8Z^<~#fyq&IW@0Ko9X{qARE9>s#Kad4}WkLc7}S^sWDGFw2CpA!95@7eL@4% zFGYKyia(0DE-w(l%V`nW0N+Z%U;3S<i~q%WsHz4z{U*<YBh_Q3orD+XnmotVKr1{p z<EwZQaSV8ZkgEtgFR{>IymyhOqXd6Q0$w*@7-C+~ZmX=Ykeb9Xfp7AeOyOZkfd$(v z=XXK^4MEYVxD@mnJYj@*FimhE;)NB4d4vCa+zuub8{ZLUBXB(b26Pzn4nnt?xIGb9 z;#gu_fz|RF*hW#KZ;vh*wmFO8gfJ%&kTl33YxiGl*SXW>1hbmiy&aq9$FyP=ORy1y zoTA=n^7!JtRzq`gW@>d)ZzgUdXjh62N;+dM98qqJ`IoVoxpdI@vcawa4UpYpcb8oz zEpxOE)!R>BptVV6YqBHc5>28;XQ_*~L}rFEVVh(CpQKS2FxsrPl+zQ{8a;KoxFC2m z0cAjivWxvJl3o!$chDd6nIxu929qvJASM{<V!GVil-bFI)WEj<!fr#v>Xs$IU@RIb zieNz3!kH-#0#vzVYtUm%7TLtD?RBj|qrYB|bA4i`gaDV$7t|XOGMOjI@p+q&h9T<g z^Ak~>#=F?nC?n`*u!XWdr^m1L8+8)6@QqqYig{B5Awy%ar74$W=c>g{X}s1j8)WlY zV6Rg~^$ccW=*lGh#9Shp7t?au5nmeo@au+$l}DLl2MSFacQEJiUoywCWgRPolJXnn zgU>cMfA-wwbI)xSwz7rFSKd&bc<nW|<PG4!m5;xq{GNTa^X8j}Zr-%%7P@u~FGbg$ zcFn)M!ilHCaZ@(D0WG$3v{eXgbS3G>hX_2d=`nWw@Gx7Ue6U0LNcm_7(v6=+!#>;0 zwkp3l@r=LPbjzljA5uQ9&KJT*h|p(x&?X4bzY`V#d*kze4;(_+JN|z_LDcLuS{I0? zj(cBV=^~uPumC{z!?Qai%SQl?xgH@UI91_!UM7=k0MQue!vwpdXQSGE<ZF`97n2w} zz!^bt&BJf-j;PCZ3A*}Z!Z%1Kuln<4*{^;zdyvie@F2ap?Dy<IE%#e+y^Rm?eK{-R zLwsNMcJ+DQ3Yke6_6>X$Q?*3Y9OKF&azL?!!F1>ULjDmNAdTuB@Zgqw!nd*ytjg?D zUOamwH$IY`kILXHbN8>zo`vA4?%9SB{;fopy}E*3^+0yjzNPzfBjdS|1<K8GY~}sA zm1m7du1k-kN3kEfe#NUOE>?@VJR*JxcIHCJ&y6#N5e+{FV*)D|=(@N-M5O`*TY*=a z!sG$*2Q(8zA!Rv0cO(unydv~T5^oBnNAOUUd1`8rtD&MMl@6?!lr{twg%8)>dqF=F zV)D9J;-o%Nj+=b`*3>yWPVSybc?Jgr1O=IBvc!G9c%W~7U%(Wx8O$sXx8iqeoB%s| zRVaE#a#W35DFXo>Y+|oh0q3>P#fSPXxOZ(R=kr=(vN(HFB5_izUZW;7Z0nwR{0DZE ztKJgdxG@e!uYlPsf->5-W8JFue7=3vx>weMgg`h;g<>hK>MN5~eW<Md`(`avMtxnI z&nhnn;jIV<&huu}?AsXlmw+kf5e<rJd^oWj7H|zjim^KaUmQ#|L`c+qYW@P62WI%3 zsCHbOYr(KS!NI9wZ=fPkSRz&uarPvEZg>QVG^A$`ZU<-sHU`eE(n3%en!O$%Hv&9C zl+2?>=*NIgttv#cpjQG(<SXK%+89#XK(%evHh}+@{Ebl3D9VCB7KBV%QXAsng}iBt z2frkKVE0^wyMj2u<;Q;(00@l!<&A;rK&_z<xq?=0PdN~nuAp(#_d_(NI;ZO}&rDoq z!bAhs5Hl!|_K6GuY>~a*^=ijedvZ$u@MVLYzj}&2`|hi+{z$wcaq^FLDxC{{yCDR& zg_oi90qQjM+;-u7)vQ*^AV-&K^GRqt$%3|oWO0|akQA>_Ug}Z?5((DX#hy+~{1UnH z0a^J8yNA_#K(BPO@cNNsCFK{LM~-y@;2r*lUygJf{N9bqPrm!#V^z6KF+#O&;<OrL zc$5qQPylzU<@>k{LzP6T;>XMJaX;md8BRl#2L~Q_vL7B1eghA1lFw);retvg_5(!* z`EpQDPeA?%uNQ}U_0J<}Td5#w`@DYcDf>^#>t=52%1~s4her_eU0s}v5O=L_Hq9R1 zzon#H#bY2mhJtI?)>~qx$iizdG~-gVzzggn#ipTBK?#D;;3C`WD*6cR3YQTHiz@se z8Aq7gQ`Mh<t-)sql$N~Mf<eX4fI|?-)}>PjJyuW_q~t{=Kdc>o4lbMW?LfkzE<g&x z3|26EAzB~pc6mL5;Bq;Okzkv<T$WlLZhOS&7le=zADd9+Fo?=;GODu%>)TCUy>)SG z%7$_<4c?S&F!X>X&Yq13L9^`e+AWrlJWJ5mMO(m^5lOld<}jp$&6@PY!XXpL!)G-I z1i{<HdR>f#gCGKsdjmc{b2`7IB)mGrk(t$!$mE-B4vRIMOg754`A&y+z!w*o(clf4 zw6YZ}cM$-3Jd!^AgFu_x;e4(kYPN#GFKx4nh9e+l@@p5ky$n}v_T`**yVJf<V`rg! ze<D_aAEU-cM1G7ZL^$~}FhhAQMO5VUAUp;9X7!iBn@G5Js{01>2#$S9IvybvTzQF* z;E+G~0J=R!AiaZ_f-8gOBOpDXnHq((n3_8@rvJ*^acFbQ0&-b#kaOaZml-*(@Yd1H zQU1Wd{H6ReW+MI*J{TJ-DpwUoN5RrH@v{e6|7~wQ@x*;UeUPoVjjpARxyNuVJ*1%n zatI+g+?AII%uBws7)w^*>Oa95O;Z4AtdO};gfq&A=9Bb2usf01bzR#zJNu-<$@@>8 zEw!yotQu(1rRJ{~Xx7z>yT(Nmn?Lcv>DPe_0SSxcF?K`D(6Q~DowIcLZTnAE{?o5Z z&RaFutf`;3a?vE_<p08vStT|m%dtwa0uC_5J^xP}nV3C)BS)qm<M01Ykr^__P?G2W zSBgxeV<9+KTNB7$RmVN8JN&omnk_(k#4iu~K)eW#(TYRdZTO-;ARL+e59{SPiYOA? za&m4x4*i_YoPn2gZWS{Rkp}ag=-E(U1X_`gvl~*PGMGLLSoNq4JRmfk`T}Tq2u5(_ zz?(;AE94=sYD6j41h0MyrLWvhZ=k*%8GgQ))nK-Iyk=(g9#@{su*J+-zVpuVkt53O z**$x*d(O!1*^@it1tbY(j0TNAl}Y)<lFn>&>ouZAV{;pIT1mrxj2ryCB?=%+%4}^< z1T#j<1saFf2?Re1G41CkR?2kR@`brG)N|tG>}-EH?007p9#0|@GV3%Ny+&tr+cY@0 z-u)F40BWr5LFDy>pqWr4gAyV^&#mS{QbKnDxqAp4!4(gahWui1kCEyvJXUd9fXkCd zWs9@d;)FWz%t_gOd$JSXKWTk-&pzZXTU^S67AMMqS=c(41ywya=JsXx<TkF$?Lj$U zRkwebbEAW)w1j1W(=+px0m~5dYF`PxicZE%fK87ya{d+{&^EXT5Us+4qXLz9!69%B zAiR}&)Z1u_=z|B|bO=s+A<=cHoPKKQKRP_DA>|1aF6#OD&N}v;SsiXivp1x-uHSrG z(WtTNJx05E+ecPc+wQE}5s@|b-F>HfmeUbl86Ww6%gN2@iYH|XI{tC#Q|Y$dC#O8N zgw6YlZ6UEWVX-$~+~cyY-F#Y?J!t`0%XrcsZ3eGCVzEaCo80a@@4k<8OZ9$p7~>R+ z;5HGt!$9CdbdY>}(-@~;2x%bdcsi0|hI9w-KZbaf<pE$dDu~MI9q1X>)(_QoCY&;{ zNb`(vM7;s;#&4Qo?!ZFg*#Nay3U`pIc?5>nqhOx=J&|ERi$v4`e`#GInv3W}J9q57 z7CrvCTI@l6#kFhP7HSR_RSNC_7wg8UyMtQf_}@^tJ{8K_rb2tu@ie?Y7<VeD_mc?R zJR+W|+Kuqjzke#O_KV4+3dzO9Q}MX(o&c(aK3gq^LAg_?{rcQr!^-voV@qJ$Jlo`` zL2XYz5hY9U$*EWzt>7+bbWzgjT$m>@7>l%4OB9MgREB!L5S#wb^!q_AT3WF1bjPsL zB7<TSk9(B#YV`xG;<ORPyQ;5~*Tx(sTU)IOMJp?Y5_DkvC3vW+<WoIKEeNX%rDUGL z?kE8*iMWt7f(SCKanS-({7Ce>Hka~l-4UCM1?rTKHf^fk@WzG>Z@&!=6iQ^n$Ru1S zGTbf=-WeX*6gpBjqWnwe%Fd3`P*Hhj+uAMY4^^)Ghj=E|c^>&zIrTB0sRw*;*1LQl zDWlm+=5s^@YF1)vT33Jfsna!!S}tw9v}Lil_WCcr*|z%m2ZptSZI`uN*1Ax)?9yA6 zU`F_5MijCo)21(NU(|ZZ!PX@!{$Z&&@o;lav*in07Pnr?4z?~DymX0CI4?J`sJS}t z{zE(qGlTkN@|xriBsR8W)eVjGAc!2I&lss*P}_I<6$f|6@{O0@bMM6i!o!Ps%NB_X zNA9}&P$r+)bNS_`mD$g$*PMG`c{sA7H@RR-G_~V~Jxf~;UedZ~`3*ao!W-r#dlm=c ztItK(V0=&q?Gitkw^)r`)qJ%yYKX*-gfGogz93;9^L4N)D#%;}*wBeU;|DT~3lLH= zR9+lIabtXytFL3Ke}$})%IFAEcE%t*;AqDe$&p&j>PKjk6TS~9rDy|666Z_APed+P zI9jC|JR5@uy1xOyDZ~pQn}G~rVwW=JMdg_O+|}i4E?6RoeLdyoR)Pq(<vucKE>hlO zmoR@BC4vO0Yu)yicMak$gR(iRj9nA!+dtQCpLb#Ux-;y60(&n1Z>`}XM1C&)y1X=F zx8+ynb?$co1F6~PgsD)Y4L}~j^8#{wRIufpg%0~E8*Wmb+T5~V_@lzEXM2dFsP-$& zWrbGdU-xIOK9!eJsp+JrLME&6L$y9P@hgL@o&QuA?k)|DfWqha1?#dT0`!BBk(ek6 zU#~xCeJyGHX}$5D`kdoVv+buQ2Y_tX_~LU%=f=-Ie8%n8XBVDRK4<Pu@u*GtZvA>& z@FbJJ&vt6EFIc}NSg(Ao*i{(3ZP~3$l|NV5jIwg6^4hcGtWWvVhcryodp<0_42iN5 z6&cA&OCs3;<kcJ#u0<Xuii!XTokGERH~4!HXoSVZOE~+ySP}_(4+{)|{|;;fEkKcK ze(9umB1I+};=EqBu0)%FZ{@p4E}qOtkaOrp=_C@{9XLJ-w~-dX5?F@fYUQ7Uy+P%l zLvkd<8iM5@m;fS?(0^!b0?M$7;Dm)g*lsggOcs~X?6hOMV6~!BDnr3ktHoe8+1)PJ z)l3|~25}MobSUpdtPZPLuMc>XfA$6fUe@4g#~-I(lw_A^eAI4#)KQd`d*q`1F*|;W zGTVap6Ym7If&m<~0X<5&`9QM4G<vPeW6<fFl9r$rm?c3(il?CQf(chII$Sz;Q@TzR zb4*|^4a<V=limG@!{Mz{9&q_Z!Sa|T7hqcgIqRbq%VVa5$F4I~*E!-W6XCxhgs_@# zHG{!jp#>U+_(tG=^O0f#<Rf~#j1pZS4T5$E#3`S<wRx?^P6{#M!IA7m%CCZrvfjX~ zk;YK0PH(gMeUW0L!Q^e|iH75PquJuPkV4Pw&EsnTYdR{IC(AG8$+An?WM80=l^y1Y zBxsmB6_WeA8hy;5kx_Uy$bknOC4~Y-zenlwkr}o>{~7Y99#|TQUC2HIsN!Ah0YDGG z&c4CEi)^g7*gpf(_-l-`xRi!+rE@{KDoFT~ZtH-x4lRw`0|?G=Elko;8GtI)vE(fk z0V_f$AkP#+qPhnNgd{j96Qr@>H3iTK5GXQBQ6#3M^Odk!;uQ#}+7}da{>{VS)R(1H zsRODVRJ>xT3tkE|ihl54p;+?a6^+cJ^jeYFB#NkCP$GY5DGx-0FU?Qu^|hms<Zhr- z<3{Kug<JwJKF2LVzXS;gWi{hge4vquqlf`oL{p$GPJUK89APEgkPk5_Dw2R}!Mh5t z2vt+S<~06zaeWj%D5;y^>!7kI_~uO~>kwxo7mp7csFWOUJx)yrSfR|~9&k9EC9R$| zO8F@1aR2b^^5)`As^m%~+P%1ls~DHseaN)O<vZy7!1Cz4I38t9@;D9@h2Vn55#aeM zp;OU{Bz7%=p_=Z|2B}U*;*sK5iH(|#lHG1KjAIfRbf}yl!oA!d&+eCX7Ofb77uV_0 zg5?=R&_=t#<`(oC$sq^Aeh@=jm|oOi1_G)eYDAq;(mHeo3st1k=}a1%NkWl27PM+Z zC|hALx%E0|$U39N>-V~>QG3un^u^{jod6<h6UxX5qE^zw>=9h1AP~jgv@aLb>NHjn znE(c@9l<VxO+b+yoWU&E+)kszD}m%oZxTRe?9e#dn^5M7NUN<n=5jNwhUr8dD6E;N z)o4)D8I;(l90>UYDFvo#;<iQ!JKBUVe1toJ%)nF<j7AV_3&en})z}^S;_Ti&CN+41 z2BU-$eHu*7^88rH6<NEi8DT(F{fVF2%<PamMij+^iDhgxpjRZT@(Z^iIWw|;xl3bX zpyANloZ)&V7zEJ+1}N)Okf%6YG;3`pq=n)35vJBJGdVSSzeB%7r@K-x*bJy1Xw>Vp zTEQZ+H$}-CnD8(SnrZ@857VA8MA&|T_ClH|C~RT2Isq69`b?~;xpA%?DJi%!(3gr5 zs!rmrm=5=@k=!Es-GCGtIph#*0n~0V>)r0oP|g;V4B9#)n2L<D#-x+2l1Z;IxJ@Ce z!5%}M5)iFO1o|)vMlITgGMdy?fm=^GeUG~VAxSL){_!YUV{)Ml7Pr~Q+>+kyF(I%C zi4PJt^bneXM*zue)ag+5&;%ZF)Z)hIu!mYZN>+^t1^v=-?VLL7#q>@hFgF?;E{PdL zn+ea@=)^ggUJo87tI;5Vq6?$Sf@q`FZgg06M!nT4Y4v(UVMU4A?NUas_iHp!UnG(0 z(6}51s}xKN4x2w@Nv&uW1Z`JKHtrSCG`#^M22IJ}Sjj9MVxmoJ5iFi!oH^~1S+oSA zb_~~3(RM*lPIH@dxRLsR3lCj#=_O{;88qPP!ywk^@o*-7Wwv<qW)o~73m$~Wyja(k zX+~&}#-T~ijB~A4Eyg&=WogY<{bYwBpLfmpG1IbP_BqI6E;vaH5V;#9D=j%#z<HR5 zN6BHO<9}=fVu6cj1kaId2i1*oBFo63E~K$2K_w{BCcHz*YUJsVa3dOAkDFlwB`=Xm z=R<W-5W->SGOGw3P}L!b;*kDe<Hn(AjayCC!vz4q#I@b<rnHf)v#~gBOJh~ELEKUy zj*bMJz9fi>BHSkQX$y$za7sk6&}g7d>2wi+i)S<jSSga26}Z4b6afo`uE`~7GZZr% zNkWydsdUSH6R-pz&8N20(t>{AXZ1jYbCO>y2RbPtVimw0@wG!O^GV05=Rz4t^;Ff4 zrE|EwV%cVgsL&cTdYyrpK^YNn$~K4B6flRAR*eQ?I}q?>+*%AhlOtYl4_6{4k6i=$ zB%jY{x0=Dv<Bm0YLUl~zNX~3(>p|TVt7K{QHwKiGFvqBTCdRcHq+%M>gmt+@cfA9f z>IF<NjoED`$%2V%(%CJTH5y<5G$ywd>XBf;<#l>Vkj!R1hz%kCz$>Olg;Z!+qE5RR z^;u0?vqk4bI}AFz+hKRx%{CD;DG;&-ELKqmTC;z&+M;z9T!rSN2!3Oy83Ig))GM^i zAUQQCxr5Ox;Ra1{hcjO1H##KT6y}8m5`<|C8YilS84c#3*=qt&)nU^6>ta7Np=ygM zP;b|x-_RN}Tu+$ls4k$78(daB3JVxTa<4-Q;&HctR}YJWRcAn-+jV-K+2D1!ERx<8 zgj|ELMu}4^`UB;XtY%1YGlZ`#Y&UsK0iPtAtq#2ayzQJ>J;C_$oIB-CS8`sKp0&79 z@3ltjY>slYZ$VR>{fi#;WhJVFfR2I`ha5$0(}gw&VT)EGVPwVv2BC<m1y}^V79AD= zJP1?BZx03}J2Wa%7t!|~te_?vNJvlz7mbrp#nr5z(Bp|&^bWhj7_<e0CcW9_f=3n7 z$!)ND14LRWA)<hS4MMl51A+q_mcgJoVD)>jn-&X;;4_<SHnYd*)0)hZ-)A->u@%FD zxy&9tLMS3btwL`=Z^d00bfIz#$yp{m48S_fe!bZNm!U;BSJ2umbx5DnY7AJaGzJ$W zH;Oq(dJPm_YPHTRS)Jih(BLrm<taPk-??v!A_1sH<I*C>CrRbOT}kj1mZ*A_<U1nf zLi_5EzY*HkB7ATf(7&()I}NY?NA`;^*NG3A<m2ziCRt1#|JW$JYn=FfSyR62EA0nA zlb^I@DAqtc@WdK8qoxs)mx#lXIHag%&ME_>;Hm)(dIw(=h0!RsuRKIPDHUI&`d)4p zzX4B}8-ACLst1aoTOj1}Vtm1fr9>D!YmTIZj6{e{3%Dx^tZ}w<#GvAmuP8xMrZMq3 zPYON-Qr;I&L#c(_5Pc9GfF`}tK0nXe=eM(WO%2TrUXyc9*?GU2`5IapKzB8>U-?~S z*Bsr57FCH$EwZMiZO!6x%X6i+O6O9C$M5$zmULFyiXRr+%8S>uwP+))#b8UPc0|{I z8v8Jj&(F)}m0q{c*N}6|&cs~dRd;iv&+m!!CmdZp+spkIv=}wv9G0xpeg8FcXMAV! zjM<L%V!LDZ8OfcAonQ6sPBU{T7uFbCF6i$a2D?Dj7jv}wY^%97H6UIRSY}wz(_K(X z=Gd{!*QeZ#$A3sL?+3DPr{2kZbMiSJ<y=rk_zMCUD<T|=J}8_eA2L_@`y>Q7)|DUJ zv@&{aeDzHmTHDxHhhN^>@`KiG$`gyAc4(F&neeKO8`*)M96H2qop|l=;kSS0a5|hn zn{4w`Ef<Uw?k2?`0bjtb=|x<~=`jM}Abx5-R*H3piSIp0NV5vo3Gm^Qe>fk5zKraD zgjFyt`C<vh9m@^5<}fCZ`cTSyL8b?*ImT9pd;z;<=9j%`zi8YSHe^FWGxF<MzJ85z zQ(%Q;5uDkEtWKw~NUz1_qGYo}$1aGhHd%o~nE1gtc4trcN_R5r{=;AZc(cSi_3g^T zKH)1&FSVY$VWSCLl0v5LR=pkC@g`6~8s9N;x|f<?d^hfavQR0N%Ldy3Fb}@s$0)a$ za_m{r1*{_f#%;o}R-jUCaS3lJO&Yena1-5vxp&$vO#A@1&|bfWo&KqJASs8ccOdTK zH^4mgIoBWg9n>E~P-BgEVv$~IJ9$070oJ76fbx0V#xWz0<*4(Kc#7(Qb6tdJ%f=b| zaUW?o-YC{fH{m8jnUopkQ||zNCZSN|OEB(*-xNNhj6&?q0|RALq=P#(56X2P{4g!d zCJ+e*%6F7}ULdJq;Q-%`bHeKZYN@n%N9)0XOU#X#mNn7(r1OP;@`ysnEIT8<x##a$ zlNnmuU(Y72&?pU}B<W_Jy>q?6Yx%v<5eg8Z1k`|*d|$%8@0_On6Pq??Gff)nlgSRv z{@4w|oK5WYrf&oSu0p_W`c~!z@Z6bnde97uR`X?pSHO@<#^dX^W}o|ZFkbJspbnjT z_W64@IFobMwPq*og0Z00f)sW3*}K=7ea3P2wfepwA!gD$^YM<**_m_pUYcvloEAP? zQ%HX0N1Nx}q-<__F|;TMAud^7YI;$N;{~W9CQa4vOfiKT{$2I9!sEbGrpQZ3Lj{gH zD#S;~Paj}dlv+!_!rrk8Iddyx^}#V9M!@?9iXUYW!~qfi@B%t2_jCm~U{oh1cX>OG zpq=O!Q?<s4fZ7?*T!{sZB}Rh6Xh69qFI=05D-YN9LA_(j$D0Abt;7oIXOwj}7w#4; z5R6V%+lP2$;eb2|({N4gY_;>C@-)8|L&g-#Po6>Dxz?Ve;xf)HgjueJ`7lCM?18sP zp{7(C1EpE)g@#K1kOfWJHJRt6ZNha!6~*E85RbZYLFkWiYs>lb77i@Dw!Gl#&ZdEY z-QbAIkwSwfl}&n}Xqk1Ec+;v=JBm;y+WHpF3G^0>4Rysf;drRUWi}U2Yn$8Mxzvpy zRD(X9ZHW6qWNAlRdt|}O0${Dk<$Rt@tUrt~=`p5ewTB}ib2JK`dMw7OACT70DfA8r z+A1tfL?(lZN(-^-TMGD4Vm>*L#lhX*?+3S}EcbnHw@is7n&+O=%E&QM%y{BRKp~Vh z!usP;Di!e(s{3IlCM!SV@7OJ)qZkwT`t)|twN3C9R~zG+Y>W%rD0`9G0UtKnfvgto zbI)m_bl%<H>*H<e|Nd@xuF-%oVwb`qKPoH#%A#t%i}E5hdmKr$@+g86%D~tddwPUM z5%-}V<<SMo_`m=HA0e7RNd=VIL0&h^vT9>U!cz|sn2GW|2z;e>&6&I8AsO|?QN4Fa z-gTyodU?D4br=3pan{P%7$PlT2CR(l`ZczV(2gVWujzC7%w2qU;rjCU7@;euNt5lO zSPW{Q1MmXAQ=gRfAk~VBNTj6#d|jxe0o)?Bgrcb>z!~uoI_a%Sc3*CPt~|5)%H}(M z@e7ACKKiw>=buwPqJNn2xzVxbMup|$<?P=5*~-UX!<#er;SF0m>nqRBs@!r*W!5wQ zG^>2;t!3z0)F@i}sXY_{rx-&XQSb`5b><USlnagH`L!h%Ueq=+T1(JlL=;lXp5de+ zpT50TBmC)u?E{s8?7?>WlR21WI`q;Am6%{}@F9iB1Fsf-;wGT^>A4@w3@E>5f#sQl z$3JE+<<|q*%Pz~XdDPP*;B-*O!~a-2d>3NLgt0@fgZP<icR-IId{WIkkSG|6f!;WO z{pwk^+4dFtE*S1Ys1wjVw1FalBe|soTd+4Xb3?{HZ+GtrpgSVIQOBLypAPgUF|dDH ztqd$%Y4W`jp`4VU|BCQm;=Nma=lzQc8aL!ybEq|%%C_d&g|SEuUy;}dDvz3)!@}2o z>plKM_ir%=Y85p`1`l^<+YelPpe@^T-9Ub8LvGfcvvLhv@`YTpzZhu7z^loO+r?Xf z@oE8|%vQ`0sAeSsvtou|^wIo4DI7lZTA(KtKoSW}1r!B<c2SlX(4olBfs+;5FZ2($ z6;*L48r4zOq~SV*?%bA&>xgoO{WQ1h=IHKS@~yjar`{ghxifaV@d|14Cc_oJleTyd znl^7W9P|&J)UVaCPQk3Pd1Xf^<uk#nXxHgVW{1aNhBw8eH+Y=wrP8w9@-4fwyKa+r z?u_2LE4%v^xqP{I^N{zDVQ9#3$UC&zd%0orW_CdDHVR_IZ*<vVc{+j5l0yNH$zY1a z?LnW<=eHV-1`CWV<>gW>PD(!f)!>vm11Q?_XIzA_k}8q|1QBOAPw_*31|)_^1zHcN zsyrMeSV7=ufww_NE>)f*OKJ<07^}e75^`>&xmyPRYx$GUb0Z=FZ4E?Ic?z}oYUWNY z0Kk^BfCajM2%a3b!C=)1D8Q$&dcDRCP9r>GPE%NRnq5Jo!|B!AZDBYiB`u2ln&1P_ z>W%)8$Et%P4NgrhEMku_=nJ~pMZs`gu(_@-BsVLONVq!}42MF(V}BVvV1BDzLPCLP zGY2iGg{+%xwE)g9;86rD=5WX<djyL$XmFdo{{7Hz3|fmFdXm{>4Y-gQV7A#~R<qA$ ziP%sk(-B{~W@$XSeBI)>ygajEPJH?5WijEg6XOo5Y^;sP;{W?-#Mp%nDgBK@&652U zigRcGwxM+Duc#(>ZO*88a}#pUV;CP*;lWK*s8iLTIs&h?w+M)rYgky6odU3Zs61Ao z7x3Bx#KFNF6R!ff_R=^)=!+-@TZt+!$z@tE{yZW68hVjyMwDlW0~kEX1&4V>TySch z7y{Kr7w-Tc<={qQlzJPDjE|xClThDz=)6USnMj}>(04uix%Nv|q!D125s8E!Y~t1Y zmWDENYxgP_@m%Zk7U_GCv8{aYV)BvMt!pOb+I!V@G=B;&U9Bzf>P^wo>88=r!S=&S zMoK;wlux$s(K-A3dHFk(xNBdV&#&FSCXceP`VApa(%nO>bfHgc@PpN3uH4@bEMtD{ zFb-X_V@*5z>G~iJJW>vUpRTs<PPLzBL4Tqj|9ad1=Jx(SwUM{$&wr{u-xlzVe0sa! zcZE=)Oix%b+%HN}r|3(2KBZmpS)I-HfW@MZ=fauot<kCfx}OJ7<de_*L1*kQ_pBZl z|M)_n<Wzf;Y-WymSA`TJmVgHVr{W-CrBdRsbz|(qQMQ&dD|~=Ufd>a>0u8K*FN4kx zUo{*I;Yoea%?hx>=VA_Vq65H<5C;Vsg`%N+i%Z?a|B*Pb4i+HAy<mtJJHR23Lb(QC z31bS_AUCjcDl+Lqx@x(+o&Wm>OCp)DC|QfuYC-V@_C{#p-%&2az&@Lu<<7eC7Qhuc zfTz?~IIxNiyv>R)90s{=3DaRqCVqo*9_n#9x4{*hTtms0B_0v-TH#*E?g09MSR7F8 z#KV4EVz-8lzZwG3$sNMW$_q=Dh({+_b2D62+i)eox2k#}*=af;@WBLu9wBHWoDjHO zu9@;hgEUtv(2EeV%J+y2<Dv4<!d0slLJ6+Eu$!kQ1yTf#jI!pY8y>u&=?YoCLVbfu zUpuGf8}5V4UU0lm)v7Fj+zMX*|F5(w0g~f7%lp5%dhVIson5VVy;@znlC`Zn(P>GR zZOO8v#HX-iTS?E%o0-=3bhrE1)yPV00>*Z@DjbQ4O;LnE1t)|YsDQ*Ip}@vPL4e|@ z;s}Hz5RQNeV1mF4-~YO2cO^Mg4zE1@|9`*N{f__Y_x|_Z0c_3BJ&j<7=$!{Jqg};* zw~HS-AP>-fdEopZ+I#55^VoO?|IYI_;oRW^yeALZ6LDjUuc#e%)M~+%@n9UwydHgj z0{iJdz<kfKEZF}KJ_F8x;i&-?T#o4sJ_h$qySL#R6}FW}@gW5$%gm1LJMdk`)03DV z#n{bGKFn#O+Hf2pOz@o#^Lep}*+Yk3$gCM%Jux&no-ORzqiG`()wR3USG9*rHB5G8 zQic5F^u#a*U(*<B$0+MmZIJHgS@hS_TW@>+{^xJseh2OI5n}~i{a34JF|eJj<|{8P zZr^}W?Ckiq!y6|jr!%XEs>9lv(OMOAkRv$z7BiCtt&%TR7e9IU>f`j;#akc$;zw8p zB0I<O^oDCDF@E*#Xc#k+BOc3QS>mI)KlZvyR}NzwYgvxg!NWX-Q?i~Mz$_4Ns*U!+ zJVy;J!r=wb85qD47zct7?VeV%Ao$FUc6>$9##Zc(iX5t~Ay+CU8B;bHxN=*uM?8P& zP6`;9op5z9yMv>NFb#vKPdI~W_FnZDh7ho?5HDGYmuF|zezjPgm>#WR`XN`E-Y`f9 zYd6)B*<7-A(}t<S;rwnKpHit{+9ZMT{~XCwZT-lqp{%xVe||7qShZm+oj#B$REH{s zG+(N@%;L-0+Qd-4mL5N_ZC$m3V}3@aN~z*FW*rCf)nqC!zJM*rz}WS7&0e`O`wqI4 zs9;tyoy1AU;%FA9O$}#7c~yC84SJ_k8u`Ggjh%8nH<ZP&zLvw_JSHnn)HaUtJi>E} zk5$X5#K@*q;}c`6My7^ylr7itYs+Jpg{V#}eh$Y3YL(+j*v^?<ljGag4d=3nz3ChV zEw$uuv4Sn(7Gc1jS@WIxm06Uf-{+sloE`6Id=KQCbvhaxO^z)UF!387FBwfhfv4Y` z0*fn^$3FJ(WCCdqrLaXq22)aHT7w{D`r7K*Ei<F**B?K*X=cNb2c)~VT;A_A&m0~c zqUlZ3C$S!2^UXTFbm!9t*Bm=}eDdH^C)VyeeQxLW-Mi}NPVZa$(ec%buRbz%Q*xm+ zQKqelFQ-d`rP0zvDslDr6M;N?dTlnl?$p_qf8^*LR}-RID%Zw~rB5d|&0sRGHZzlY z@sQtn=pLL{IeGiN4|RfD?im$}pLsG_8+#!m(j@!-Qor8pQ(sf_QtBJ7_(tA)0{bCg zAQm5)Jm04jBJUy3`zZ6Q<Ia(U8mPsPU(_;dHy%5+X@=GxIn#W@rkSOexoM8ybz{>k zezt;{+S=$)fwHrRXBfjm-K<vKj=k<QT^m}vWrr@adKUkpRvRgQ>#cTob<0?7s4_l0 zTq}%ZvxtKk8`bjIAW^GUwOS#ot=_VBXn65OyiLOlaHK!_ZTjH1+@h=_VNPnJ_{ZyJ z@!7ZM+i$q9j1?cdTpYW6xqtok+h@Ic+U3iIvBw@8D_p+3q(eWP_ypz`Hp7d++9X6k zATk16%mJFbNFUKRYAHDH{Tm;Rv_~1$$h{D+CO2=P{Osaux4iG!$M4J>3g7$O<EIus zzPG(8v3YiS<B_A!9zDVvWE?sACAD>*=-l?s-HWfyQhwL;<oRcwe@|=6__?PRpV+cV zZ0hVi-QO+<djV~nxr(64<+#ayIeEP28!Bf4mh77--+jFG`ZrTNe6_MAstmjwjjH08 zBem5CEBw6-{vw#IbSZ|DfNL?Fg8w!V!)efGVmOD<qpdN_an5JKt(XG_r8Hp0umF51 zh7*9Fj^QNW_r`Dv-&P-t;WX%<is2k)3toxg{J=C#Hk_u}aO`_!JG2Zh#^TEv>G`H( zPwm*cJ*FI&w)BiZHmB;nDSy7bGYDE!Ezjvr9dqnJT9z~Add>ye2)1^Dz}>%XTPvn- zZ8+V5#(;zMwWhk-SZyl@+5;i#Wej-N-McpB8Km?u$6+GBjqkV}Xrt}d<v5Nswn}FV z1h_Vlu0GJiuMe%+#<xL$zZUQop5<Vb?-cfO=jU;13x5tMuDW*tlm_Tq2RbU3i#=$! z;jeXF`mL%AUG%*2@o`oA#^ZY3e{=z}+C0ymqBNvT!=!EwtM3a`gv6Dpf|F=)%pDD5 zM1BO3xvOXlTl$XE1a{fx@QNwKvaF-^gnfZ&8X>uxuq^CmtX-NVT}5YXryaBte)Dc@ z5{{i6`S42GkDWFSVnH&(OXvvQN=NB7x}ENzV|1MEq!V-(oupG(FY^|9E8UHOl6&bs zx}P54^L*(+I!ov1A$ph|q4V@MdOI0Zrv@TrB(<nb9Wqg)IkKorHaX<dqvVlK0d|j` z$Ktq))T2xE7@{BFLGMHa<P(TZeiwZgeK$Qx-$PH))AS6zo4%L6kG`LNfPN5R#P6XW zq93Lop&v!G<ooDZ`Z0PxJx9;ek0W;SC$M_-C+P$9Q}jXlY5Ez&QhtbjmR_I_(?{s% z=%e)W^fCH4eS$tozd%=T)XFc?FVQd4r|8r4BK-<|26304qhCer<*(7N(@XR+{RX{) z#jU@ISj^v|-=@#g@6hkk?;$Sp_vsJl59yCoeC8k1pU|JupV1fS&*?Adi}aU>*!*ky z8~PIcE&UyRnf{*sf&P*HiM~SrO#ec!(!bJI>EGzz=|AW-`cL{A{TE%O|EB+;*J+Xd zR}3H+jN|VRpexcMBQ(T><wRZ-L=oesWl<4WNF#>Cu&9X<F)CJxF|k^ViwSWPbnzN7 zCDw{{V!hZPHi~I6BQ}Z6;%2c$%nBW&7Td&jf!!9xF0os@NxWI?5qrfxv0oez2gNNM z;UkWSTg6dvo48%vA&!aT;!bfw+$BzmQ{uFEi+HQJTihe=759nz#RKAu_zv-)I4jPH zhs49;5piC;O}t$gqAnVuDWqtLw&(~`ToCZTjYh)>?O@nw1m-;Sf?oHeG3Pp_9ry{O z*~~ztbj*2~Gd#~((CbdniNU6`V8@^(TR}cb;F;}CP>Eo_Yv5R8PInD~Q&(4}P<cu# zDWMxb*<UbRExHrB={kxgJ*^Hkg~tX-29kBhYU0P4)A*-rcyrmhXUbN?@FgI}XaWi{ zfEIk|CF)^YYZ#Wan}$~eVCkj}&1Tx|2y?=qjoP<MoL~2)?VD&BnQe4rV@^l<l!7AM zGX0<ceBQ%4HLmCq!j&xc@2Cpq`dH{96*R8Y8<ykCa*TA1i)Ponw2Yg!!b|aePx^u5 z$zsFw8kW>sre(?IP>ezIxBIl=YiOvCW!kb76JxXxqrPSM9rei24A8rV*UaMShQ~Ec zH!Rb2dmx~gQPmkL0S}w1x)xfu5TT*VNJ=3|7#mq=IF@C&QO+C?$J4u@XVBVplxPsw zuCxQaY5I-OXFJ8Wn1uXpFW>NF6NPG^OvxsSndKi<M6GEAMjicAZc6kgiWcaK*|JOc zOav`+vkn`H$Kfr8rHA&s^vsqin-l+Ex~Us(@{3pGuDxM`4L49*p$+*0k1W4<?CU04 zbHg3WX|KpR{6_b0tVd}3q3b#xY<)4xffn!`OO}?fz_deIiBRqZ$F^bk2O|P=jb88R ze9cEB*9iSS>`5=Qhax(&rr`y8%QLz%epyT#>8C)0gB9=!_0rLZjBJfLl}lF&NXB(r zL5G~jC0r)P#ZfPfS-=mZtJm?gl{l1`6W3PV2lKDI?VwD#enA{Jr9iyQp9>s!iN8_D zd9#6{qi&v|&znu@ppGkOeXQ%$O-tsQW~-$`b;@Qzfo9u=+@ceh4hc|v7v1t?7lnw^ zdD6x!!0Skt;qG9@XAvm!52VL3dZ>X0rDwXn=@(?z4SM>5X+!g*B=obFkrx|Q*pxYW z(KYO*5@LX00#E|hWnh7v?8U05nE<G@q-=7_<)Kp0<ECwRy{v*+jB^S?xlBV-pxbPf z6yS$-)F!m#NQCyfV3j$Dvj-+}yk7MhG9%FgE}3qUu@wLKMf?WRi}hJL!cr{@O_6Ou zwX1%}C@4feP>TG691+L#F~@~x+e}CIl5ME4WZQ&UYC}asjYF9Pxi+g4s2G#U3Um!m zW*J7`w&f^8ZU~#;$wxylwT^5sik0i>MG!h+T@}Hx`MC<Sf^rO+tY9E{=?G7?EvGJX zZAT9ruBptlJ)>R+`{C+#bhZ{L1>y#DuJo#H&k4cNJrt#-2R&D&I;c~S>7YJn+++s^ zq}*{l^Abb~D$PSjq)-YcNSSusxtKKVmQyf&KkRpQDMCCMH<d#Dw29niBYlD8vzNT! zJ9cSK){VN(H85cz6LYecu#AO_W!63LM%7{)Uk@$RKMb6fc`>_0DJm9VUh|-5lZ@rr zNOGk?LqdivBPb}y@z9a7SyG5EEieu^G)fhCQbspI$d5{wvtWsJzk^Q8u(g4i)-0!C zaHb@HxpdcP+cL;@4U_xOXeJrb*ePJ^obAdsn%l8uhRqD;!Zl2(&d+w49Ru7<cTE<i zLKkuaOQ=jvk_ENW4Xwa*AtjN}`N?h=NX?cDs#9|cP|TULv1nZ`u<lISP9UrN!~TgL zKx$Ec<ccYp18Hd)4O!rR(OnO!MJ^N^uWi`oB~`aH#NG{qj0-6>+EQ~3Xtsu7=Uv11 z`PJ|Qk__j-Ip{#vKIsTdxTame|Bwxq%%GQ!kUR>}(<3h+$uNGxb`fuflY~ZQ?<W(N zrQ&+<MA!?`{YOJ?{P+_w1zGW>rbGpenR+xto$?+!h8cYU{f$0QUFzqd6wr%0c*##k za1uT5<iOrw0lOjn3_!fTlk#L+UM#b2gg*-P1<yfx$i%q1%;O~zg@#s!n}U1_Mn2c- z;eoEho|P@}2!JieLpnF~JDf@3bFzt&0cKh6Lw*MZavi*Y^(FGg8lYp?ZHY32y<{-x zISv>&Qb3U$<yVjrp6@5Uu-?nUIO;|nJd;rnzXlXItj>bw8)!)`cm()KzUF=C8uWh) zMJmQH_`Yjcc^`t`=;+{0Hyy!)s*^lj+Vdt{PiE#)OhVV7Eqx?JH+n^11~9m7UuTV| z^|7?yF{Rba_^?gze>HUllcjwYf?nB23os`(WRtt5<U1iZB3p0Iu`0f6K~XL%pHf8V zD+~=>0tu2<jxDsV%v4r^T)7D97*;FKHHvw#;P<-l<aPM^Mz0hj5E%HPcK==j&Z@tJ zutQmn6S8L$7<Moi;}GgDRC*U0Hot<@&nxHAV0{E$pw;ZBV%=Pcb3n$V$AX!Q3E<s+ z$p9{Zos03Et_(WP(nGqi-TjBKN%tYQXv3(2C>dPOM!)3XAq>YjUOzny5^~_h{RHSw zBnf)`;<BFi`VaGMHWop@7=GZPultVz7B+&=ll@1{8=h&@Es00j4Lx>Cl8mI_PFpe& z7;P;u{5e*~SquhAxP-1OqBQtEf{lU8-6<?#jc&8Ngur()4ZF02L-U0fhn7&6wSnJ( z>$3c`pc`IXen42qXK1MPbKvzCVYl%;lnXi#47}U(0fybW&#GLDz|c(vU=lwSc>E!Q z`a@cwpE=1g#^$xObWeSa<(JUV%>)Z(fEN$4nbjc~uyTz~Pltmud;<xcQM#6x4q<7n z=1^$gV6$;cnWfNXLy=qd{!9J7&{ZA{qNChG29%SQo$tmDP7YA)nKK9}Wvjv<G>VP> z7W3WY0=&J<g5fcqS}=k}C%4csgNXG2LXLE1*mPvLvJC4B@I9)4<`jeKU>A7F%@vf; cp0m-AL(6H<M^UQGCCBNq>QGk{3gcz}2Z2IE<^TWy diff --git a/ydb/core/viewer/ya.make b/ydb/core/viewer/ya.make index 6041359303e0..8c829a3843c4 100644 --- a/ydb/core/viewer/ya.make +++ b/ydb/core/viewer/ya.make @@ -68,100 +68,349 @@ SRCS( IF (NOT EXPORT_CMAKE) # GENERATED MONITORING RESOURCES START RESOURCE( + monitoring/asset-manifest.json monitoring/asset-manifest.json monitoring/index.html monitoring/index.html - monitoring/static/favicon.png monitoring/static/favicon.png - monitoring/static/css/8546.65946fb2.chunk.css monitoring/static/css/8546.65946fb2.chunk.css - monitoring/static/css/main.a322fb8b.css monitoring/static/css/main.a322fb8b.css - monitoring/static/js/1058.3df06184.chunk.js monitoring/static/js/1058.3df06184.chunk.js - monitoring/static/js/1115.1e053b1d.chunk.js monitoring/static/js/1115.1e053b1d.chunk.js - monitoring/static/js/1234.165715d4.chunk.js monitoring/static/js/1234.165715d4.chunk.js - monitoring/static/js/1474.80932b06.chunk.js monitoring/static/js/1474.80932b06.chunk.js - monitoring/static/js/1522.5645047d.chunk.js monitoring/static/js/1522.5645047d.chunk.js - monitoring/static/js/1593.571b4393.chunk.js monitoring/static/js/1593.571b4393.chunk.js - monitoring/static/js/1602.86ed3169.chunk.js monitoring/static/js/1602.86ed3169.chunk.js - monitoring/static/js/1876.2f512037.chunk.js monitoring/static/js/1876.2f512037.chunk.js - monitoring/static/js/1898.a0e4bd43.chunk.js monitoring/static/js/1898.a0e4bd43.chunk.js - monitoring/static/js/2056.b607e590.chunk.js monitoring/static/js/2056.b607e590.chunk.js - monitoring/static/js/2081.bd41025d.chunk.js monitoring/static/js/2081.bd41025d.chunk.js - monitoring/static/js/2119.9f7a5c06.chunk.js monitoring/static/js/2119.9f7a5c06.chunk.js - monitoring/static/js/2174.264d1736.chunk.js monitoring/static/js/2174.264d1736.chunk.js - monitoring/static/js/2205.e7f0b9ab.chunk.js monitoring/static/js/2205.e7f0b9ab.chunk.js - monitoring/static/js/2291.d410fd68.chunk.js monitoring/static/js/2291.d410fd68.chunk.js - monitoring/static/js/2406.180cb966.chunk.js monitoring/static/js/2406.180cb966.chunk.js - monitoring/static/js/245.6db2db52.chunk.js monitoring/static/js/245.6db2db52.chunk.js - monitoring/static/js/248.736ab237.chunk.js monitoring/static/js/248.736ab237.chunk.js - monitoring/static/js/2507.2d9c4b5c.chunk.js monitoring/static/js/2507.2d9c4b5c.chunk.js - monitoring/static/js/254.a91c0bf4.chunk.js monitoring/static/js/254.a91c0bf4.chunk.js - monitoring/static/js/2799.64ec0194.chunk.js monitoring/static/js/2799.64ec0194.chunk.js - monitoring/static/js/2862.29a56bf7.chunk.js monitoring/static/js/2862.29a56bf7.chunk.js - monitoring/static/js/2991.0db887ba.chunk.js monitoring/static/js/2991.0db887ba.chunk.js - monitoring/static/js/3001.b1a75b50.chunk.js monitoring/static/js/3001.b1a75b50.chunk.js - monitoring/static/js/3191.c6dbae35.chunk.js monitoring/static/js/3191.c6dbae35.chunk.js - monitoring/static/js/3254.78ce4d35.chunk.js monitoring/static/js/3254.78ce4d35.chunk.js - monitoring/static/js/3258.248867bd.chunk.js monitoring/static/js/3258.248867bd.chunk.js - monitoring/static/js/3451.774580b7.chunk.js monitoring/static/js/3451.774580b7.chunk.js - monitoring/static/js/371.93a1186d.chunk.js monitoring/static/js/371.93a1186d.chunk.js - monitoring/static/js/3771.0e0bb0f3.chunk.js monitoring/static/js/3771.0e0bb0f3.chunk.js - monitoring/static/js/3848.be131fc6.chunk.js monitoring/static/js/3848.be131fc6.chunk.js - monitoring/static/js/3883.62a3dee4.chunk.js monitoring/static/js/3883.62a3dee4.chunk.js - monitoring/static/js/4529.eb0068c3.chunk.js monitoring/static/js/4529.eb0068c3.chunk.js - monitoring/static/js/4546.6820709e.chunk.js monitoring/static/js/4546.6820709e.chunk.js - monitoring/static/js/4663.cc239299.chunk.js monitoring/static/js/4663.cc239299.chunk.js - monitoring/static/js/4712.4e557974.chunk.js monitoring/static/js/4712.4e557974.chunk.js - monitoring/static/js/4731.6929d6df.chunk.js monitoring/static/js/4731.6929d6df.chunk.js - monitoring/static/js/4952.58b99bba.chunk.js monitoring/static/js/4952.58b99bba.chunk.js - monitoring/static/js/5012.3afcd232.chunk.js monitoring/static/js/5012.3afcd232.chunk.js - monitoring/static/js/5210.6e07cb51.chunk.js monitoring/static/js/5210.6e07cb51.chunk.js - monitoring/static/js/5215.2d9f2122.chunk.js monitoring/static/js/5215.2d9f2122.chunk.js - monitoring/static/js/5444.f86e47ff.chunk.js monitoring/static/js/5444.f86e47ff.chunk.js - monitoring/static/js/5517.a1034916.chunk.js monitoring/static/js/5517.a1034916.chunk.js - monitoring/static/js/5646.ced0e1ae.chunk.js monitoring/static/js/5646.ced0e1ae.chunk.js - monitoring/static/js/569.abbf95fd.chunk.js monitoring/static/js/569.abbf95fd.chunk.js - monitoring/static/js/5695.d81b70ca.chunk.js monitoring/static/js/5695.d81b70ca.chunk.js - monitoring/static/js/5748.fa2a8e02.chunk.js monitoring/static/js/5748.fa2a8e02.chunk.js - monitoring/static/js/5784.26f46213.chunk.js monitoring/static/js/5784.26f46213.chunk.js - monitoring/static/js/5885.c5ee8345.chunk.js monitoring/static/js/5885.c5ee8345.chunk.js - monitoring/static/js/6060.eb821066.chunk.js monitoring/static/js/6060.eb821066.chunk.js - monitoring/static/js/6135.e49ec940.chunk.js monitoring/static/js/6135.e49ec940.chunk.js - monitoring/static/js/6266.db91261c.chunk.js monitoring/static/js/6266.db91261c.chunk.js - monitoring/static/js/6550.b5e85913.chunk.js monitoring/static/js/6550.b5e85913.chunk.js - monitoring/static/js/6559.41bbd3a3.chunk.js monitoring/static/js/6559.41bbd3a3.chunk.js - monitoring/static/js/6708.5cf2a45c.chunk.js monitoring/static/js/6708.5cf2a45c.chunk.js - monitoring/static/js/6892.3db15360.chunk.js monitoring/static/js/6892.3db15360.chunk.js - monitoring/static/js/698.746436d5.chunk.js monitoring/static/js/698.746436d5.chunk.js - monitoring/static/js/7168.ed7798a9.chunk.js monitoring/static/js/7168.ed7798a9.chunk.js - monitoring/static/js/7478.0bf003df.chunk.js monitoring/static/js/7478.0bf003df.chunk.js - monitoring/static/js/7548.8ef3bbc0.chunk.js monitoring/static/js/7548.8ef3bbc0.chunk.js - monitoring/static/js/758.2eb69c4e.chunk.js monitoring/static/js/758.2eb69c4e.chunk.js - monitoring/static/js/7661.dd104c3c.chunk.js monitoring/static/js/7661.dd104c3c.chunk.js - monitoring/static/js/7664.9f9f696d.chunk.js monitoring/static/js/7664.9f9f696d.chunk.js - monitoring/static/js/7768.2adb4751.chunk.js monitoring/static/js/7768.2adb4751.chunk.js - monitoring/static/js/7953.eb2256ce.chunk.js monitoring/static/js/7953.eb2256ce.chunk.js - monitoring/static/js/8005.9c209154.chunk.js monitoring/static/js/8005.9c209154.chunk.js - monitoring/static/js/805.d67f39bf.chunk.js monitoring/static/js/805.d67f39bf.chunk.js - monitoring/static/js/8206.d2f5a912.chunk.js monitoring/static/js/8206.d2f5a912.chunk.js - monitoring/static/js/8322.c2b160c6.chunk.js monitoring/static/js/8322.c2b160c6.chunk.js - monitoring/static/js/8335.9ed734ba.chunk.js monitoring/static/js/8335.9ed734ba.chunk.js - monitoring/static/js/842.bd21ee9f.chunk.js monitoring/static/js/842.bd21ee9f.chunk.js - monitoring/static/js/8520.616efa9f.chunk.js monitoring/static/js/8520.616efa9f.chunk.js - monitoring/static/js/8546.79cce20d.chunk.js monitoring/static/js/8546.79cce20d.chunk.js - monitoring/static/js/8558.47b3557b.chunk.js monitoring/static/js/8558.47b3557b.chunk.js - monitoring/static/js/8590.b8446f1d.chunk.js monitoring/static/js/8590.b8446f1d.chunk.js - monitoring/static/js/8794.5ad5fb7d.chunk.js monitoring/static/js/8794.5ad5fb7d.chunk.js - monitoring/static/js/9005.053ddf1a.chunk.js monitoring/static/js/9005.053ddf1a.chunk.js - monitoring/static/js/9011.f3cf1dfe.chunk.js monitoring/static/js/9011.f3cf1dfe.chunk.js - monitoring/static/js/9163.de992e19.chunk.js monitoring/static/js/9163.de992e19.chunk.js - monitoring/static/js/9292.3ccb6509.chunk.js monitoring/static/js/9292.3ccb6509.chunk.js - monitoring/static/js/939.4c5d6b68.chunk.js monitoring/static/js/939.4c5d6b68.chunk.js - monitoring/static/js/9803.e1567af5.chunk.js monitoring/static/js/9803.e1567af5.chunk.js - monitoring/static/js/983.18afe3d6.chunk.js monitoring/static/js/983.18afe3d6.chunk.js - monitoring/static/js/main.2c02e91d.js monitoring/static/js/main.2c02e91d.js - monitoring/static/media/403.271ae19f0d1101a2c67a904146bbd4d3.svg monitoring/static/media/403.271ae19f0d1101a2c67a904146bbd4d3.svg - monitoring/static/media/403.6367e52f9464706633f52a2488a41958.svg monitoring/static/media/403.6367e52f9464706633f52a2488a41958.svg - monitoring/static/media/codicon.80a4c25b73c1f97077ed.ttf monitoring/static/media/codicon.80a4c25b73c1f97077ed.ttf - monitoring/static/media/error.9bbd075178a739dcc30f2a7a3e2a3249.svg monitoring/static/media/error.9bbd075178a739dcc30f2a7a3e2a3249.svg - monitoring/static/media/error.ca9e31d5d3dc34da07e11a00f7af0842.svg monitoring/static/media/error.ca9e31d5d3dc34da07e11a00f7af0842.svg - monitoring/static/media/thumbsUp.d4a03fbaa64ce85a0045bf8ba77f8e2b.svg monitoring/static/media/thumbsUp.d4a03fbaa64ce85a0045bf8ba77f8e2b.svg + monitoring/static/css/1551.d5e5efc2.chunk.css monitoring/static/css/1551.d5e5efc2.chunk.css + monitoring/static/css/328.c0ade9c1.chunk.css monitoring/static/css/328.c0ade9c1.chunk.css + monitoring/static/css/4983.5c3e5de4.chunk.css monitoring/static/css/4983.5c3e5de4.chunk.css + monitoring/static/css/8424.308a04db.chunk.css monitoring/static/css/8424.308a04db.chunk.css + monitoring/static/css/main.c8ce3bba.css monitoring/static/css/main.c8ce3bba.css + monitoring/static/favicon.png monitoring/static/favicon.png + monitoring/static/js/1148.3c629236.chunk.js monitoring/static/js/1148.3c629236.chunk.js + monitoring/static/js/115.2c4de87e.chunk.js monitoring/static/js/115.2c4de87e.chunk.js + monitoring/static/js/1150.2b47004d.chunk.js monitoring/static/js/1150.2b47004d.chunk.js + monitoring/static/js/1155.4fce1854.chunk.js monitoring/static/js/1155.4fce1854.chunk.js + monitoring/static/js/1155.4fce1854.chunk.js.LICENSE.txt monitoring/static/js/1155.4fce1854.chunk.js.LICENSE.txt + monitoring/static/js/1168.91d9e2c2.chunk.js monitoring/static/js/1168.91d9e2c2.chunk.js + monitoring/static/js/1179.15d7ac65.chunk.js monitoring/static/js/1179.15d7ac65.chunk.js + monitoring/static/js/1278.c0717a20.chunk.js monitoring/static/js/1278.c0717a20.chunk.js + monitoring/static/js/1350.21b6a9ef.chunk.js monitoring/static/js/1350.21b6a9ef.chunk.js + monitoring/static/js/1478.5044be66.chunk.js monitoring/static/js/1478.5044be66.chunk.js + monitoring/static/js/1478.5044be66.chunk.js.LICENSE.txt monitoring/static/js/1478.5044be66.chunk.js.LICENSE.txt + monitoring/static/js/148.b60f0e5e.chunk.js monitoring/static/js/148.b60f0e5e.chunk.js + monitoring/static/js/1508.f0158935.chunk.js monitoring/static/js/1508.f0158935.chunk.js + monitoring/static/js/1528.2a39d066.chunk.js monitoring/static/js/1528.2a39d066.chunk.js + monitoring/static/js/1551.2e8e3e50.chunk.js monitoring/static/js/1551.2e8e3e50.chunk.js + monitoring/static/js/1551.2e8e3e50.chunk.js.LICENSE.txt monitoring/static/js/1551.2e8e3e50.chunk.js.LICENSE.txt + monitoring/static/js/1616.8a217b93.chunk.js monitoring/static/js/1616.8a217b93.chunk.js + monitoring/static/js/163.eea01641.chunk.js monitoring/static/js/163.eea01641.chunk.js + monitoring/static/js/1736.9f4a6b02.chunk.js monitoring/static/js/1736.9f4a6b02.chunk.js + monitoring/static/js/1746.a8ba5c62.chunk.js monitoring/static/js/1746.a8ba5c62.chunk.js + monitoring/static/js/1747.b4331799.chunk.js monitoring/static/js/1747.b4331799.chunk.js + monitoring/static/js/1747.b4331799.chunk.js.LICENSE.txt monitoring/static/js/1747.b4331799.chunk.js.LICENSE.txt + monitoring/static/js/178.e0df04cc.chunk.js monitoring/static/js/178.e0df04cc.chunk.js + monitoring/static/js/185.7d51fcfa.chunk.js monitoring/static/js/185.7d51fcfa.chunk.js + monitoring/static/js/185.7d51fcfa.chunk.js.LICENSE.txt monitoring/static/js/185.7d51fcfa.chunk.js.LICENSE.txt + monitoring/static/js/1869.d6661a03.chunk.js monitoring/static/js/1869.d6661a03.chunk.js + monitoring/static/js/1956.0205a5bb.chunk.js monitoring/static/js/1956.0205a5bb.chunk.js + monitoring/static/js/1956.0205a5bb.chunk.js.LICENSE.txt monitoring/static/js/1956.0205a5bb.chunk.js.LICENSE.txt + monitoring/static/js/202.52f13cd5.chunk.js monitoring/static/js/202.52f13cd5.chunk.js + monitoring/static/js/2033.5c6dfca9.chunk.js monitoring/static/js/2033.5c6dfca9.chunk.js + monitoring/static/js/2104.4f22ecac.chunk.js monitoring/static/js/2104.4f22ecac.chunk.js + monitoring/static/js/2104.4f22ecac.chunk.js.LICENSE.txt monitoring/static/js/2104.4f22ecac.chunk.js.LICENSE.txt + monitoring/static/js/2118.bc169874.chunk.js monitoring/static/js/2118.bc169874.chunk.js + monitoring/static/js/2118.bc169874.chunk.js.LICENSE.txt monitoring/static/js/2118.bc169874.chunk.js.LICENSE.txt + monitoring/static/js/214.99a17949.chunk.js monitoring/static/js/214.99a17949.chunk.js + monitoring/static/js/214.99a17949.chunk.js.LICENSE.txt monitoring/static/js/214.99a17949.chunk.js.LICENSE.txt + monitoring/static/js/2141.26c930aa.chunk.js monitoring/static/js/2141.26c930aa.chunk.js + monitoring/static/js/2141.26c930aa.chunk.js.LICENSE.txt monitoring/static/js/2141.26c930aa.chunk.js.LICENSE.txt + monitoring/static/js/2183.e2318c37.chunk.js monitoring/static/js/2183.e2318c37.chunk.js + monitoring/static/js/2183.e2318c37.chunk.js.LICENSE.txt monitoring/static/js/2183.e2318c37.chunk.js.LICENSE.txt + monitoring/static/js/2190.27f354f5.chunk.js monitoring/static/js/2190.27f354f5.chunk.js + monitoring/static/js/2190.27f354f5.chunk.js.LICENSE.txt monitoring/static/js/2190.27f354f5.chunk.js.LICENSE.txt + monitoring/static/js/2194.38bafdfc.chunk.js monitoring/static/js/2194.38bafdfc.chunk.js + monitoring/static/js/2194.38bafdfc.chunk.js.LICENSE.txt monitoring/static/js/2194.38bafdfc.chunk.js.LICENSE.txt + monitoring/static/js/2223.63ae5a05.chunk.js monitoring/static/js/2223.63ae5a05.chunk.js + monitoring/static/js/2229.6687fc46.chunk.js monitoring/static/js/2229.6687fc46.chunk.js + monitoring/static/js/2238.3cf88b79.chunk.js monitoring/static/js/2238.3cf88b79.chunk.js + monitoring/static/js/2302.7e7a2fb4.chunk.js monitoring/static/js/2302.7e7a2fb4.chunk.js + monitoring/static/js/2302.7e7a2fb4.chunk.js.LICENSE.txt monitoring/static/js/2302.7e7a2fb4.chunk.js.LICENSE.txt + monitoring/static/js/2322.29255c22.chunk.js monitoring/static/js/2322.29255c22.chunk.js + monitoring/static/js/2322.29255c22.chunk.js.LICENSE.txt monitoring/static/js/2322.29255c22.chunk.js.LICENSE.txt + monitoring/static/js/2367.052e678b.chunk.js monitoring/static/js/2367.052e678b.chunk.js + monitoring/static/js/2403.82cd0025.chunk.js monitoring/static/js/2403.82cd0025.chunk.js + monitoring/static/js/2403.82cd0025.chunk.js.LICENSE.txt monitoring/static/js/2403.82cd0025.chunk.js.LICENSE.txt + monitoring/static/js/2435.092e8d7f.chunk.js monitoring/static/js/2435.092e8d7f.chunk.js + monitoring/static/js/2477.e6121bfd.chunk.js monitoring/static/js/2477.e6121bfd.chunk.js + monitoring/static/js/2492.64b7d727.chunk.js monitoring/static/js/2492.64b7d727.chunk.js + monitoring/static/js/2492.64b7d727.chunk.js.LICENSE.txt monitoring/static/js/2492.64b7d727.chunk.js.LICENSE.txt + monitoring/static/js/2521.21bdfab9.chunk.js monitoring/static/js/2521.21bdfab9.chunk.js + monitoring/static/js/2521.21bdfab9.chunk.js.LICENSE.txt monitoring/static/js/2521.21bdfab9.chunk.js.LICENSE.txt + monitoring/static/js/2532.30bb087d.chunk.js monitoring/static/js/2532.30bb087d.chunk.js + monitoring/static/js/2532.30bb087d.chunk.js.LICENSE.txt monitoring/static/js/2532.30bb087d.chunk.js.LICENSE.txt + monitoring/static/js/2553.5faabf5a.chunk.js monitoring/static/js/2553.5faabf5a.chunk.js + monitoring/static/js/2553.5faabf5a.chunk.js.LICENSE.txt monitoring/static/js/2553.5faabf5a.chunk.js.LICENSE.txt + monitoring/static/js/2590.75b6626e.chunk.js monitoring/static/js/2590.75b6626e.chunk.js + monitoring/static/js/2620.8e5c52fb.chunk.js monitoring/static/js/2620.8e5c52fb.chunk.js + monitoring/static/js/2677.3d7ea3fc.chunk.js monitoring/static/js/2677.3d7ea3fc.chunk.js + monitoring/static/js/2701.86912840.chunk.js monitoring/static/js/2701.86912840.chunk.js + monitoring/static/js/2840.b69eb597.chunk.js monitoring/static/js/2840.b69eb597.chunk.js + monitoring/static/js/2840.b69eb597.chunk.js.LICENSE.txt monitoring/static/js/2840.b69eb597.chunk.js.LICENSE.txt + monitoring/static/js/2876.afe7e47f.chunk.js monitoring/static/js/2876.afe7e47f.chunk.js + monitoring/static/js/2876.afe7e47f.chunk.js.LICENSE.txt monitoring/static/js/2876.afe7e47f.chunk.js.LICENSE.txt + monitoring/static/js/2931.3ade3bc3.chunk.js monitoring/static/js/2931.3ade3bc3.chunk.js + monitoring/static/js/2931.3ade3bc3.chunk.js.LICENSE.txt monitoring/static/js/2931.3ade3bc3.chunk.js.LICENSE.txt + monitoring/static/js/2962.66e01691.chunk.js monitoring/static/js/2962.66e01691.chunk.js + monitoring/static/js/2962.66e01691.chunk.js.LICENSE.txt monitoring/static/js/2962.66e01691.chunk.js.LICENSE.txt + monitoring/static/js/2981.6d027811.chunk.js monitoring/static/js/2981.6d027811.chunk.js + monitoring/static/js/2986.2100fcad.chunk.js monitoring/static/js/2986.2100fcad.chunk.js + monitoring/static/js/2994.e6c77407.chunk.js monitoring/static/js/2994.e6c77407.chunk.js + monitoring/static/js/2994.e6c77407.chunk.js.LICENSE.txt monitoring/static/js/2994.e6c77407.chunk.js.LICENSE.txt + monitoring/static/js/30.b097cbb4.chunk.js monitoring/static/js/30.b097cbb4.chunk.js + monitoring/static/js/3025.7e536c57.chunk.js monitoring/static/js/3025.7e536c57.chunk.js + monitoring/static/js/3074.bbb8aaef.chunk.js monitoring/static/js/3074.bbb8aaef.chunk.js + monitoring/static/js/3074.bbb8aaef.chunk.js.LICENSE.txt monitoring/static/js/3074.bbb8aaef.chunk.js.LICENSE.txt + monitoring/static/js/3231.65396654.chunk.js monitoring/static/js/3231.65396654.chunk.js + monitoring/static/js/3271.7b005742.chunk.js monitoring/static/js/3271.7b005742.chunk.js + monitoring/static/js/328.f24db8bf.chunk.js monitoring/static/js/328.f24db8bf.chunk.js + monitoring/static/js/3304.f5897a96.chunk.js monitoring/static/js/3304.f5897a96.chunk.js + monitoring/static/js/3333.ceb196e6.chunk.js monitoring/static/js/3333.ceb196e6.chunk.js + monitoring/static/js/3358.c777fe1f.chunk.js monitoring/static/js/3358.c777fe1f.chunk.js + monitoring/static/js/3358.c777fe1f.chunk.js.LICENSE.txt monitoring/static/js/3358.c777fe1f.chunk.js.LICENSE.txt + monitoring/static/js/337.b6fc715e.chunk.js monitoring/static/js/337.b6fc715e.chunk.js + monitoring/static/js/337.b6fc715e.chunk.js.LICENSE.txt monitoring/static/js/337.b6fc715e.chunk.js.LICENSE.txt + monitoring/static/js/3397.9c0005a3.chunk.js monitoring/static/js/3397.9c0005a3.chunk.js + monitoring/static/js/3457.b193afe6.chunk.js monitoring/static/js/3457.b193afe6.chunk.js + monitoring/static/js/3466.98f036ac.chunk.js monitoring/static/js/3466.98f036ac.chunk.js + monitoring/static/js/3498.c7d39060.chunk.js monitoring/static/js/3498.c7d39060.chunk.js + monitoring/static/js/3498.c7d39060.chunk.js.LICENSE.txt monitoring/static/js/3498.c7d39060.chunk.js.LICENSE.txt + monitoring/static/js/358.d6300019.chunk.js monitoring/static/js/358.d6300019.chunk.js + monitoring/static/js/358.d6300019.chunk.js.LICENSE.txt monitoring/static/js/358.d6300019.chunk.js.LICENSE.txt + monitoring/static/js/3621.9b6c61ab.chunk.js monitoring/static/js/3621.9b6c61ab.chunk.js + monitoring/static/js/3621.9b6c61ab.chunk.js.LICENSE.txt monitoring/static/js/3621.9b6c61ab.chunk.js.LICENSE.txt + monitoring/static/js/3630.8eda2d3f.chunk.js monitoring/static/js/3630.8eda2d3f.chunk.js + monitoring/static/js/3644.aeda46ca.chunk.js monitoring/static/js/3644.aeda46ca.chunk.js + monitoring/static/js/3644.aeda46ca.chunk.js.LICENSE.txt monitoring/static/js/3644.aeda46ca.chunk.js.LICENSE.txt + monitoring/static/js/3645.bdd20200.chunk.js monitoring/static/js/3645.bdd20200.chunk.js + monitoring/static/js/3756.67bd6b00.chunk.js monitoring/static/js/3756.67bd6b00.chunk.js + monitoring/static/js/3757.7c534899.chunk.js monitoring/static/js/3757.7c534899.chunk.js + monitoring/static/js/3771.764124c3.chunk.js monitoring/static/js/3771.764124c3.chunk.js + monitoring/static/js/3771.764124c3.chunk.js.LICENSE.txt monitoring/static/js/3771.764124c3.chunk.js.LICENSE.txt + monitoring/static/js/383.4faec08b.chunk.js monitoring/static/js/383.4faec08b.chunk.js + monitoring/static/js/3898.1fec42e6.chunk.js monitoring/static/js/3898.1fec42e6.chunk.js + monitoring/static/js/3920.11b8c9d7.chunk.js monitoring/static/js/3920.11b8c9d7.chunk.js + monitoring/static/js/3926.8f2c9741.chunk.js monitoring/static/js/3926.8f2c9741.chunk.js + monitoring/static/js/3945.054c871d.chunk.js monitoring/static/js/3945.054c871d.chunk.js + monitoring/static/js/4046.5dac72a9.chunk.js monitoring/static/js/4046.5dac72a9.chunk.js + monitoring/static/js/4046.5dac72a9.chunk.js.LICENSE.txt monitoring/static/js/4046.5dac72a9.chunk.js.LICENSE.txt + monitoring/static/js/4080.07be3744.chunk.js monitoring/static/js/4080.07be3744.chunk.js + monitoring/static/js/4123.64882a16.chunk.js monitoring/static/js/4123.64882a16.chunk.js + monitoring/static/js/4123.64882a16.chunk.js.LICENSE.txt monitoring/static/js/4123.64882a16.chunk.js.LICENSE.txt + monitoring/static/js/4132.04be158e.chunk.js monitoring/static/js/4132.04be158e.chunk.js + monitoring/static/js/4159.5e0cfd91.chunk.js monitoring/static/js/4159.5e0cfd91.chunk.js + monitoring/static/js/4198.d0671061.chunk.js monitoring/static/js/4198.d0671061.chunk.js + monitoring/static/js/425.c6dd581a.chunk.js monitoring/static/js/425.c6dd581a.chunk.js + monitoring/static/js/425.c6dd581a.chunk.js.LICENSE.txt monitoring/static/js/425.c6dd581a.chunk.js.LICENSE.txt + monitoring/static/js/4326.d5c34c54.chunk.js monitoring/static/js/4326.d5c34c54.chunk.js + monitoring/static/js/4345.9238776d.chunk.js monitoring/static/js/4345.9238776d.chunk.js + monitoring/static/js/4345.9238776d.chunk.js.LICENSE.txt monitoring/static/js/4345.9238776d.chunk.js.LICENSE.txt + monitoring/static/js/4347.adf03999.chunk.js monitoring/static/js/4347.adf03999.chunk.js + monitoring/static/js/436.564ff0f8.chunk.js monitoring/static/js/436.564ff0f8.chunk.js + monitoring/static/js/4388.edb51304.chunk.js monitoring/static/js/4388.edb51304.chunk.js + monitoring/static/js/4388.edb51304.chunk.js.LICENSE.txt monitoring/static/js/4388.edb51304.chunk.js.LICENSE.txt + monitoring/static/js/451.3b449e79.chunk.js monitoring/static/js/451.3b449e79.chunk.js + monitoring/static/js/451.3b449e79.chunk.js.LICENSE.txt monitoring/static/js/451.3b449e79.chunk.js.LICENSE.txt + monitoring/static/js/4535.5d1c8322.chunk.js monitoring/static/js/4535.5d1c8322.chunk.js + monitoring/static/js/4550.2e04d705.chunk.js monitoring/static/js/4550.2e04d705.chunk.js + monitoring/static/js/4550.2e04d705.chunk.js.LICENSE.txt monitoring/static/js/4550.2e04d705.chunk.js.LICENSE.txt + monitoring/static/js/4583.1682cf86.chunk.js monitoring/static/js/4583.1682cf86.chunk.js + monitoring/static/js/4618.131d9563.chunk.js monitoring/static/js/4618.131d9563.chunk.js + monitoring/static/js/4635.ffa9b6b7.chunk.js monitoring/static/js/4635.ffa9b6b7.chunk.js + monitoring/static/js/4635.ffa9b6b7.chunk.js.LICENSE.txt monitoring/static/js/4635.ffa9b6b7.chunk.js.LICENSE.txt + monitoring/static/js/4663.b893c670.chunk.js monitoring/static/js/4663.b893c670.chunk.js + monitoring/static/js/4684.27f737c4.chunk.js monitoring/static/js/4684.27f737c4.chunk.js + monitoring/static/js/4789.d52069de.chunk.js monitoring/static/js/4789.d52069de.chunk.js + monitoring/static/js/4812.73af8448.chunk.js monitoring/static/js/4812.73af8448.chunk.js + monitoring/static/js/4812.73af8448.chunk.js.LICENSE.txt monitoring/static/js/4812.73af8448.chunk.js.LICENSE.txt + monitoring/static/js/4814.11309069.chunk.js monitoring/static/js/4814.11309069.chunk.js + monitoring/static/js/4826.d2723706.chunk.js monitoring/static/js/4826.d2723706.chunk.js + monitoring/static/js/4842.57182d38.chunk.js monitoring/static/js/4842.57182d38.chunk.js + monitoring/static/js/4848.64f47dc3.chunk.js monitoring/static/js/4848.64f47dc3.chunk.js + monitoring/static/js/4949.6bf46e71.chunk.js monitoring/static/js/4949.6bf46e71.chunk.js + monitoring/static/js/4964.c7c75eb0.chunk.js monitoring/static/js/4964.c7c75eb0.chunk.js + monitoring/static/js/4985.991de003.chunk.js monitoring/static/js/4985.991de003.chunk.js + monitoring/static/js/5107.8cac6a03.chunk.js monitoring/static/js/5107.8cac6a03.chunk.js + monitoring/static/js/5107.8cac6a03.chunk.js.LICENSE.txt monitoring/static/js/5107.8cac6a03.chunk.js.LICENSE.txt + monitoring/static/js/5112.6189bbe0.chunk.js monitoring/static/js/5112.6189bbe0.chunk.js + monitoring/static/js/5117.896f7ffb.chunk.js monitoring/static/js/5117.896f7ffb.chunk.js + monitoring/static/js/515.cd9a8a90.chunk.js monitoring/static/js/515.cd9a8a90.chunk.js + monitoring/static/js/5161.45b4f520.chunk.js monitoring/static/js/5161.45b4f520.chunk.js + monitoring/static/js/5168.6fb23f08.chunk.js monitoring/static/js/5168.6fb23f08.chunk.js + monitoring/static/js/5168.6fb23f08.chunk.js.LICENSE.txt monitoring/static/js/5168.6fb23f08.chunk.js.LICENSE.txt + monitoring/static/js/5226.675d55fb.chunk.js monitoring/static/js/5226.675d55fb.chunk.js + monitoring/static/js/5311.a500a1ea.chunk.js monitoring/static/js/5311.a500a1ea.chunk.js + monitoring/static/js/5311.a500a1ea.chunk.js.LICENSE.txt monitoring/static/js/5311.a500a1ea.chunk.js.LICENSE.txt + monitoring/static/js/5341.2c19c723.chunk.js monitoring/static/js/5341.2c19c723.chunk.js + monitoring/static/js/5352.3d3187b7.chunk.js monitoring/static/js/5352.3d3187b7.chunk.js + monitoring/static/js/5373.90c95a6e.chunk.js monitoring/static/js/5373.90c95a6e.chunk.js + monitoring/static/js/5378.86805fba.chunk.js monitoring/static/js/5378.86805fba.chunk.js + monitoring/static/js/5378.86805fba.chunk.js.LICENSE.txt monitoring/static/js/5378.86805fba.chunk.js.LICENSE.txt + monitoring/static/js/5387.8af1d694.chunk.js monitoring/static/js/5387.8af1d694.chunk.js + monitoring/static/js/5399.f9398084.chunk.js monitoring/static/js/5399.f9398084.chunk.js + monitoring/static/js/5448.cef3c129.chunk.js monitoring/static/js/5448.cef3c129.chunk.js + monitoring/static/js/5450.f0dcfc15.chunk.js monitoring/static/js/5450.f0dcfc15.chunk.js + monitoring/static/js/5491.a460479e.chunk.js monitoring/static/js/5491.a460479e.chunk.js + monitoring/static/js/556.55f00ac6.chunk.js monitoring/static/js/556.55f00ac6.chunk.js + monitoring/static/js/5643.00957838.chunk.js monitoring/static/js/5643.00957838.chunk.js + monitoring/static/js/5661.c83a4eb0.chunk.js monitoring/static/js/5661.c83a4eb0.chunk.js + monitoring/static/js/5661.c83a4eb0.chunk.js.LICENSE.txt monitoring/static/js/5661.c83a4eb0.chunk.js.LICENSE.txt + monitoring/static/js/5670.5c30cef1.chunk.js monitoring/static/js/5670.5c30cef1.chunk.js + monitoring/static/js/5720.39a954f1.chunk.js monitoring/static/js/5720.39a954f1.chunk.js + monitoring/static/js/5790.e3d88e2c.chunk.js monitoring/static/js/5790.e3d88e2c.chunk.js + monitoring/static/js/5790.e3d88e2c.chunk.js.LICENSE.txt monitoring/static/js/5790.e3d88e2c.chunk.js.LICENSE.txt + monitoring/static/js/5809.d78ebebb.chunk.js monitoring/static/js/5809.d78ebebb.chunk.js + monitoring/static/js/5863.e2cd2452.chunk.js monitoring/static/js/5863.e2cd2452.chunk.js + monitoring/static/js/5868.be04313a.chunk.js monitoring/static/js/5868.be04313a.chunk.js + monitoring/static/js/5868.be04313a.chunk.js.LICENSE.txt monitoring/static/js/5868.be04313a.chunk.js.LICENSE.txt + monitoring/static/js/598.243fd68d.chunk.js monitoring/static/js/598.243fd68d.chunk.js + monitoring/static/js/599.c58caf58.chunk.js monitoring/static/js/599.c58caf58.chunk.js + monitoring/static/js/6044.2de9962d.chunk.js monitoring/static/js/6044.2de9962d.chunk.js + monitoring/static/js/6044.2de9962d.chunk.js.LICENSE.txt monitoring/static/js/6044.2de9962d.chunk.js.LICENSE.txt + monitoring/static/js/6058.7f474f92.chunk.js monitoring/static/js/6058.7f474f92.chunk.js + monitoring/static/js/6065.b08e9640.chunk.js monitoring/static/js/6065.b08e9640.chunk.js + monitoring/static/js/6142.b2452554.chunk.js monitoring/static/js/6142.b2452554.chunk.js + monitoring/static/js/6142.b2452554.chunk.js.LICENSE.txt monitoring/static/js/6142.b2452554.chunk.js.LICENSE.txt + monitoring/static/js/6144.e1568f26.chunk.js monitoring/static/js/6144.e1568f26.chunk.js + monitoring/static/js/6156.0c562627.chunk.js monitoring/static/js/6156.0c562627.chunk.js + monitoring/static/js/619.f27ddcbd.chunk.js monitoring/static/js/619.f27ddcbd.chunk.js + monitoring/static/js/619.f27ddcbd.chunk.js.LICENSE.txt monitoring/static/js/619.f27ddcbd.chunk.js.LICENSE.txt + monitoring/static/js/620.7aea5425.chunk.js monitoring/static/js/620.7aea5425.chunk.js + monitoring/static/js/6227.fc562bbf.chunk.js monitoring/static/js/6227.fc562bbf.chunk.js + monitoring/static/js/6230.8e64216a.chunk.js monitoring/static/js/6230.8e64216a.chunk.js + monitoring/static/js/6230.8e64216a.chunk.js.LICENSE.txt monitoring/static/js/6230.8e64216a.chunk.js.LICENSE.txt + monitoring/static/js/6289.51f8741e.chunk.js monitoring/static/js/6289.51f8741e.chunk.js + monitoring/static/js/6289.51f8741e.chunk.js.LICENSE.txt monitoring/static/js/6289.51f8741e.chunk.js.LICENSE.txt + monitoring/static/js/6291.e7cdf7f2.chunk.js monitoring/static/js/6291.e7cdf7f2.chunk.js + monitoring/static/js/6300.dca75d45.chunk.js monitoring/static/js/6300.dca75d45.chunk.js + monitoring/static/js/6300.dca75d45.chunk.js.LICENSE.txt monitoring/static/js/6300.dca75d45.chunk.js.LICENSE.txt + monitoring/static/js/632.b6c03857.chunk.js monitoring/static/js/632.b6c03857.chunk.js + monitoring/static/js/6321.aa3e44de.chunk.js monitoring/static/js/6321.aa3e44de.chunk.js + monitoring/static/js/6321.aa3e44de.chunk.js.LICENSE.txt monitoring/static/js/6321.aa3e44de.chunk.js.LICENSE.txt + monitoring/static/js/6329.d78c1432.chunk.js monitoring/static/js/6329.d78c1432.chunk.js + monitoring/static/js/6329.d78c1432.chunk.js.LICENSE.txt monitoring/static/js/6329.d78c1432.chunk.js.LICENSE.txt + monitoring/static/js/6361.a9f11e7a.chunk.js monitoring/static/js/6361.a9f11e7a.chunk.js + monitoring/static/js/6390.497d0ec8.chunk.js monitoring/static/js/6390.497d0ec8.chunk.js + monitoring/static/js/6390.497d0ec8.chunk.js.LICENSE.txt monitoring/static/js/6390.497d0ec8.chunk.js.LICENSE.txt + monitoring/static/js/6392.134ee5e4.chunk.js monitoring/static/js/6392.134ee5e4.chunk.js + monitoring/static/js/6393.b0de2d9e.chunk.js monitoring/static/js/6393.b0de2d9e.chunk.js + monitoring/static/js/6521.371403ec.chunk.js monitoring/static/js/6521.371403ec.chunk.js + monitoring/static/js/6531.7eac62d1.chunk.js monitoring/static/js/6531.7eac62d1.chunk.js + monitoring/static/js/6619.9e1de7a6.chunk.js monitoring/static/js/6619.9e1de7a6.chunk.js + monitoring/static/js/6619.9e1de7a6.chunk.js.LICENSE.txt monitoring/static/js/6619.9e1de7a6.chunk.js.LICENSE.txt + monitoring/static/js/6679.6e0a87d5.chunk.js monitoring/static/js/6679.6e0a87d5.chunk.js + monitoring/static/js/6692.9322b59d.chunk.js monitoring/static/js/6692.9322b59d.chunk.js + monitoring/static/js/6692.9322b59d.chunk.js.LICENSE.txt monitoring/static/js/6692.9322b59d.chunk.js.LICENSE.txt + monitoring/static/js/674.e6536250.chunk.js monitoring/static/js/674.e6536250.chunk.js + monitoring/static/js/678.b73063ff.chunk.js monitoring/static/js/678.b73063ff.chunk.js + monitoring/static/js/6795.5ec0c96a.chunk.js monitoring/static/js/6795.5ec0c96a.chunk.js + monitoring/static/js/6795.5ec0c96a.chunk.js.LICENSE.txt monitoring/static/js/6795.5ec0c96a.chunk.js.LICENSE.txt + monitoring/static/js/6815.672badd5.chunk.js monitoring/static/js/6815.672badd5.chunk.js + monitoring/static/js/6876.867b698c.chunk.js monitoring/static/js/6876.867b698c.chunk.js + monitoring/static/js/6877.d2d51d98.chunk.js monitoring/static/js/6877.d2d51d98.chunk.js + monitoring/static/js/6887.0855fd66.chunk.js monitoring/static/js/6887.0855fd66.chunk.js + monitoring/static/js/6892.2c3c2bcb.chunk.js monitoring/static/js/6892.2c3c2bcb.chunk.js + monitoring/static/js/6898.5580b941.chunk.js monitoring/static/js/6898.5580b941.chunk.js + monitoring/static/js/6898.5580b941.chunk.js.LICENSE.txt monitoring/static/js/6898.5580b941.chunk.js.LICENSE.txt + monitoring/static/js/6919.84ed9ccc.chunk.js monitoring/static/js/6919.84ed9ccc.chunk.js + monitoring/static/js/6919.84ed9ccc.chunk.js.LICENSE.txt monitoring/static/js/6919.84ed9ccc.chunk.js.LICENSE.txt + monitoring/static/js/6954.e18be130.chunk.js monitoring/static/js/6954.e18be130.chunk.js + monitoring/static/js/6961.f4888ae1.chunk.js monitoring/static/js/6961.f4888ae1.chunk.js + monitoring/static/js/7016.4a34a027.chunk.js monitoring/static/js/7016.4a34a027.chunk.js + monitoring/static/js/704.45771d88.chunk.js monitoring/static/js/704.45771d88.chunk.js + monitoring/static/js/7119.e94f8dac.chunk.js monitoring/static/js/7119.e94f8dac.chunk.js + monitoring/static/js/7202.fefd43ee.chunk.js monitoring/static/js/7202.fefd43ee.chunk.js + monitoring/static/js/7257.8ce0d045.chunk.js monitoring/static/js/7257.8ce0d045.chunk.js + monitoring/static/js/7276.47f377a4.chunk.js monitoring/static/js/7276.47f377a4.chunk.js + monitoring/static/js/7388.9f447514.chunk.js monitoring/static/js/7388.9f447514.chunk.js + monitoring/static/js/7409.4408962b.chunk.js monitoring/static/js/7409.4408962b.chunk.js + monitoring/static/js/7520.d245d6ac.chunk.js monitoring/static/js/7520.d245d6ac.chunk.js + monitoring/static/js/7520.d245d6ac.chunk.js.LICENSE.txt monitoring/static/js/7520.d245d6ac.chunk.js.LICENSE.txt + monitoring/static/js/7522.1a0f9c02.chunk.js monitoring/static/js/7522.1a0f9c02.chunk.js + monitoring/static/js/7529.ddf87a9a.chunk.js monitoring/static/js/7529.ddf87a9a.chunk.js + monitoring/static/js/7529.ddf87a9a.chunk.js.LICENSE.txt monitoring/static/js/7529.ddf87a9a.chunk.js.LICENSE.txt + monitoring/static/js/7543.3fcfd3ba.chunk.js monitoring/static/js/7543.3fcfd3ba.chunk.js + monitoring/static/js/7543.3fcfd3ba.chunk.js.LICENSE.txt monitoring/static/js/7543.3fcfd3ba.chunk.js.LICENSE.txt + monitoring/static/js/7554.28f3da22.chunk.js monitoring/static/js/7554.28f3da22.chunk.js + monitoring/static/js/7554.28f3da22.chunk.js.LICENSE.txt monitoring/static/js/7554.28f3da22.chunk.js.LICENSE.txt + monitoring/static/js/7645.6565454c.chunk.js monitoring/static/js/7645.6565454c.chunk.js + monitoring/static/js/7684.a3920b72.chunk.js monitoring/static/js/7684.a3920b72.chunk.js + monitoring/static/js/7779.9d9b07ae.chunk.js monitoring/static/js/7779.9d9b07ae.chunk.js + monitoring/static/js/7803.a56cfca6.chunk.js monitoring/static/js/7803.a56cfca6.chunk.js + monitoring/static/js/785.d2eae69c.chunk.js monitoring/static/js/785.d2eae69c.chunk.js + monitoring/static/js/785.d2eae69c.chunk.js.LICENSE.txt monitoring/static/js/785.d2eae69c.chunk.js.LICENSE.txt + monitoring/static/js/7992.20690745.chunk.js monitoring/static/js/7992.20690745.chunk.js + monitoring/static/js/7999.bdf4fe79.chunk.js monitoring/static/js/7999.bdf4fe79.chunk.js + monitoring/static/js/8011.4fed4307.chunk.js monitoring/static/js/8011.4fed4307.chunk.js + monitoring/static/js/8065.666ef449.chunk.js monitoring/static/js/8065.666ef449.chunk.js + monitoring/static/js/8065.666ef449.chunk.js.LICENSE.txt monitoring/static/js/8065.666ef449.chunk.js.LICENSE.txt + monitoring/static/js/8133.2afc4db4.chunk.js monitoring/static/js/8133.2afc4db4.chunk.js + monitoring/static/js/8140.8d8e9309.chunk.js monitoring/static/js/8140.8d8e9309.chunk.js + monitoring/static/js/8167.b9a90da5.chunk.js monitoring/static/js/8167.b9a90da5.chunk.js + monitoring/static/js/8424.5b5c42b5.chunk.js monitoring/static/js/8424.5b5c42b5.chunk.js + monitoring/static/js/8424.5b5c42b5.chunk.js.LICENSE.txt monitoring/static/js/8424.5b5c42b5.chunk.js.LICENSE.txt + monitoring/static/js/8450.baf3a89d.chunk.js monitoring/static/js/8450.baf3a89d.chunk.js + monitoring/static/js/8450.baf3a89d.chunk.js.LICENSE.txt monitoring/static/js/8450.baf3a89d.chunk.js.LICENSE.txt + monitoring/static/js/8591.93172fe9.chunk.js monitoring/static/js/8591.93172fe9.chunk.js + monitoring/static/js/86.ad271bdc.chunk.js monitoring/static/js/86.ad271bdc.chunk.js + monitoring/static/js/86.ad271bdc.chunk.js.LICENSE.txt monitoring/static/js/86.ad271bdc.chunk.js.LICENSE.txt + monitoring/static/js/8607.1e377882.chunk.js monitoring/static/js/8607.1e377882.chunk.js + monitoring/static/js/8622.49f3054c.chunk.js monitoring/static/js/8622.49f3054c.chunk.js + monitoring/static/js/8695.f17f8853.chunk.js monitoring/static/js/8695.f17f8853.chunk.js + monitoring/static/js/8702.69a3e0d5.chunk.js monitoring/static/js/8702.69a3e0d5.chunk.js + monitoring/static/js/8747.baf63d86.chunk.js monitoring/static/js/8747.baf63d86.chunk.js + monitoring/static/js/8791.b209de42.chunk.js monitoring/static/js/8791.b209de42.chunk.js + monitoring/static/js/8791.b209de42.chunk.js.LICENSE.txt monitoring/static/js/8791.b209de42.chunk.js.LICENSE.txt + monitoring/static/js/8797.f8f0ce13.chunk.js monitoring/static/js/8797.f8f0ce13.chunk.js + monitoring/static/js/8797.f8f0ce13.chunk.js.LICENSE.txt monitoring/static/js/8797.f8f0ce13.chunk.js.LICENSE.txt + monitoring/static/js/8850.97635389.chunk.js monitoring/static/js/8850.97635389.chunk.js + monitoring/static/js/8853.c8f9e9d6.chunk.js monitoring/static/js/8853.c8f9e9d6.chunk.js + monitoring/static/js/8858.cd9d49a5.chunk.js monitoring/static/js/8858.cd9d49a5.chunk.js + monitoring/static/js/8905.b8a9fd91.chunk.js monitoring/static/js/8905.b8a9fd91.chunk.js + monitoring/static/js/8905.b8a9fd91.chunk.js.LICENSE.txt monitoring/static/js/8905.b8a9fd91.chunk.js.LICENSE.txt + monitoring/static/js/9101.ce051539.chunk.js monitoring/static/js/9101.ce051539.chunk.js + monitoring/static/js/9173.71d773f2.chunk.js monitoring/static/js/9173.71d773f2.chunk.js + monitoring/static/js/9173.71d773f2.chunk.js.LICENSE.txt monitoring/static/js/9173.71d773f2.chunk.js.LICENSE.txt + monitoring/static/js/919.53e04507.chunk.js monitoring/static/js/919.53e04507.chunk.js + monitoring/static/js/919.53e04507.chunk.js.LICENSE.txt monitoring/static/js/919.53e04507.chunk.js.LICENSE.txt + monitoring/static/js/9204.77418f94.chunk.js monitoring/static/js/9204.77418f94.chunk.js + monitoring/static/js/9207.5881b206.chunk.js monitoring/static/js/9207.5881b206.chunk.js + monitoring/static/js/9212.870f16f0.chunk.js monitoring/static/js/9212.870f16f0.chunk.js + monitoring/static/js/9219.24a20881.chunk.js monitoring/static/js/9219.24a20881.chunk.js + monitoring/static/js/924.382f18b1.chunk.js monitoring/static/js/924.382f18b1.chunk.js + monitoring/static/js/924.382f18b1.chunk.js.LICENSE.txt monitoring/static/js/924.382f18b1.chunk.js.LICENSE.txt + monitoring/static/js/9280.40cff028.chunk.js monitoring/static/js/9280.40cff028.chunk.js + monitoring/static/js/9292.91ed23f7.chunk.js monitoring/static/js/9292.91ed23f7.chunk.js + monitoring/static/js/9297.eadc4dba.chunk.js monitoring/static/js/9297.eadc4dba.chunk.js + monitoring/static/js/9308.c72b8585.chunk.js monitoring/static/js/9308.c72b8585.chunk.js + monitoring/static/js/9319.40f9e46a.chunk.js monitoring/static/js/9319.40f9e46a.chunk.js + monitoring/static/js/9319.40f9e46a.chunk.js.LICENSE.txt monitoring/static/js/9319.40f9e46a.chunk.js.LICENSE.txt + monitoring/static/js/9371.b42befbc.chunk.js monitoring/static/js/9371.b42befbc.chunk.js + monitoring/static/js/9371.b42befbc.chunk.js.LICENSE.txt monitoring/static/js/9371.b42befbc.chunk.js.LICENSE.txt + monitoring/static/js/9411.96fb3e2f.chunk.js monitoring/static/js/9411.96fb3e2f.chunk.js + monitoring/static/js/9413.b2921c36.chunk.js monitoring/static/js/9413.b2921c36.chunk.js + monitoring/static/js/9433.7ce648d0.chunk.js monitoring/static/js/9433.7ce648d0.chunk.js + monitoring/static/js/9433.7ce648d0.chunk.js.LICENSE.txt monitoring/static/js/9433.7ce648d0.chunk.js.LICENSE.txt + monitoring/static/js/9526.10bb1684.chunk.js monitoring/static/js/9526.10bb1684.chunk.js + monitoring/static/js/9526.10bb1684.chunk.js.LICENSE.txt monitoring/static/js/9526.10bb1684.chunk.js.LICENSE.txt + monitoring/static/js/9528.9991c023.chunk.js monitoring/static/js/9528.9991c023.chunk.js + monitoring/static/js/9555.c9b5ee61.chunk.js monitoring/static/js/9555.c9b5ee61.chunk.js + monitoring/static/js/9572.9f83f004.chunk.js monitoring/static/js/9572.9f83f004.chunk.js + monitoring/static/js/96.6e1bf3f4.chunk.js monitoring/static/js/96.6e1bf3f4.chunk.js + monitoring/static/js/9621.48073631.chunk.js monitoring/static/js/9621.48073631.chunk.js + monitoring/static/js/9621.48073631.chunk.js.LICENSE.txt monitoring/static/js/9621.48073631.chunk.js.LICENSE.txt + monitoring/static/js/9876.b336d1f5.chunk.js monitoring/static/js/9876.b336d1f5.chunk.js + monitoring/static/js/9876.b336d1f5.chunk.js.LICENSE.txt monitoring/static/js/9876.b336d1f5.chunk.js.LICENSE.txt + monitoring/static/js/9917.67d792e3.chunk.js monitoring/static/js/9917.67d792e3.chunk.js + monitoring/static/js/9923.270f0a19.chunk.js monitoring/static/js/9923.270f0a19.chunk.js + monitoring/static/js/9923.270f0a19.chunk.js.LICENSE.txt monitoring/static/js/9923.270f0a19.chunk.js.LICENSE.txt + monitoring/static/js/main.62a60ecb.js monitoring/static/js/main.62a60ecb.js + monitoring/static/js/main.62a60ecb.js.LICENSE.txt monitoring/static/js/main.62a60ecb.js.LICENSE.txt + monitoring/static/media/403.271ae19f0d1101a2c67a904146bbd4d3.svg monitoring/static/media/403.271ae19f0d1101a2c67a904146bbd4d3.svg + monitoring/static/media/403.6367e52f9464706633f52a2488a41958.svg monitoring/static/media/403.6367e52f9464706633f52a2488a41958.svg + monitoring/static/media/codicon.762fced46d6cddbda272.ttf monitoring/static/media/codicon.762fced46d6cddbda272.ttf + monitoring/static/media/error.9bbd075178a739dcc30f2a7a3e2a3249.svg monitoring/static/media/error.9bbd075178a739dcc30f2a7a3e2a3249.svg + monitoring/static/media/error.ca9e31d5d3dc34da07e11a00f7af0842.svg monitoring/static/media/error.ca9e31d5d3dc34da07e11a00f7af0842.svg + monitoring/static/media/thumbsUp.d4a03fbaa64ce85a0045bf8ba77f8e2b.svg monitoring/static/media/thumbsUp.d4a03fbaa64ce85a0045bf8ba77f8e2b.svg ) # GENERATED MONITORING RESOURCES END ENDIF() From 3e4dc18cca8d2cc2505009e9a779d14e48372728 Mon Sep 17 00:00:00 2001 From: Mikhail Surin <ssmike@ydb.tech> Date: Fri, 7 Jun 2024 15:52:51 +0300 Subject: [PATCH 070/110] Merge to 24.1 (#2584) --- .../kqp/compile_service/kqp_compile_actor.cpp | 2 + .../compile_service/kqp_compile_service.cpp | 6 +- ydb/core/kqp/expr_nodes/kqp_expr_nodes.json | 8 +- ydb/core/kqp/host/kqp_type_ann.cpp | 28 +- ydb/core/kqp/opt/logical/kqp_opt_cbo.cpp | 21 +- ydb/core/kqp/opt/logical/kqp_opt_log.cpp | 8 +- .../kqp/opt/logical/kqp_opt_log_extract.cpp | 4 + .../kqp/opt/logical/kqp_opt_log_helpers.cpp | 404 ++++++++++++++++++ ydb/core/kqp/opt/logical/kqp_opt_log_impl.h | 23 + ydb/core/kqp/opt/logical/kqp_opt_log_join.cpp | 341 +++++++-------- .../logical/kqp_opt_log_ranges_predext.cpp | 30 +- ydb/core/kqp/opt/logical/kqp_opt_log_rules.h | 2 +- .../kqp/opt/logical/kqp_opt_log_sqlin.cpp | 91 +--- .../kqp/provider/yql_kikimr_provider_impl.h | 3 + ydb/core/kqp/provider/yql_kikimr_settings.h | 2 + ydb/core/kqp/provider/yql_kikimr_type_ann.cpp | 14 + ydb/core/kqp/ut/join/kqp_join_ut.cpp | 171 ++++++++ ydb/core/protos/table_service_config.proto | 3 + 18 files changed, 906 insertions(+), 255 deletions(-) diff --git a/ydb/core/kqp/compile_service/kqp_compile_actor.cpp b/ydb/core/kqp/compile_service/kqp_compile_actor.cpp index 283c6a2cde88..2d1daba6b006 100644 --- a/ydb/core/kqp/compile_service/kqp_compile_actor.cpp +++ b/ydb/core/kqp/compile_service/kqp_compile_actor.cpp @@ -506,6 +506,8 @@ void ApplyServiceConfig(TKikimrConfiguration& kqpConfig, const TTableServiceConf kqpConfig.IndexAutoChooserMode = serviceConfig.GetIndexAutoChooseMode(); kqpConfig.EnablePgConstsToParams = serviceConfig.GetEnablePgConstsToParams(); kqpConfig.ExtractPredicateRangesLimit = serviceConfig.GetExtractPredicateRangesLimit(); + kqpConfig.IdxLookupJoinsPrefixPointLimit = serviceConfig.GetIdxLookupJoinPointsLimit(); + kqpConfig.OldLookupJoinBehaviour = serviceConfig.GetOldLookupJoinBehaviour(); if (const auto limit = serviceConfig.GetResourceManager().GetMkqlHeavyProgramMemoryLimit()) { kqpConfig._KqpYqlCombinerMemoryLimit = std::max(1_GB, limit - (limit >> 2U)); diff --git a/ydb/core/kqp/compile_service/kqp_compile_service.cpp b/ydb/core/kqp/compile_service/kqp_compile_service.cpp index b0da00f2e888..2b228f338074 100644 --- a/ydb/core/kqp/compile_service/kqp_compile_service.cpp +++ b/ydb/core/kqp/compile_service/kqp_compile_service.cpp @@ -474,6 +474,8 @@ class TKqpCompileService : public TActorBootstrapped<TKqpCompileService> { auto indexAutoChooser = TableServiceConfig.GetIndexAutoChooseMode(); ui64 rangesLimit = TableServiceConfig.GetExtractPredicateRangesLimit(); + ui64 idxLookupPointsLimit = TableServiceConfig.GetIdxLookupJoinPointsLimit(); + bool oldLookupJoinBehaviour = TableServiceConfig.GetOldLookupJoinBehaviour(); bool enableSequences = TableServiceConfig.GetEnableSequences(); bool enableColumnsWithDefault = TableServiceConfig.GetEnableColumnsWithDefault(); @@ -503,8 +505,10 @@ class TKqpCompileService : public TActorBootstrapped<TKqpCompileService> { TableServiceConfig.GetEnableSequences() != enableSequences || TableServiceConfig.GetEnableColumnsWithDefault() != enableColumnsWithDefault || TableServiceConfig.GetEnableOlapSink() != enableOlapSink || + TableServiceConfig.GetOldLookupJoinBehaviour() != oldLookupJoinBehaviour || TableServiceConfig.GetExtractPredicateRangesLimit() != rangesLimit || - TableServiceConfig.GetResourceManager().GetMkqlHeavyProgramMemoryLimit() != mkqlHeavyLimit) { + TableServiceConfig.GetResourceManager().GetMkqlHeavyProgramMemoryLimit() != mkqlHeavyLimit || + TableServiceConfig.GetIdxLookupJoinPointsLimit() != idxLookupPointsLimit) { QueryCache.Clear(); diff --git a/ydb/core/kqp/expr_nodes/kqp_expr_nodes.json b/ydb/core/kqp/expr_nodes/kqp_expr_nodes.json index e25e12ced530..0cf0a1611e7c 100644 --- a/ydb/core/kqp/expr_nodes/kqp_expr_nodes.json +++ b/ydb/core/kqp/expr_nodes/kqp_expr_nodes.json @@ -104,7 +104,9 @@ "Base": "TKqlReadTableRangesBase", "Match": {"Type": "Callable", "Name": "KqlReadTableRanges"}, "Children": [ - {"Index": 5, "Name": "PrefixPointsExpr", "Type": "TExprBase", "Optional": true} + {"Index": 5, "Name": "PrefixPointsExpr", "Type": "TExprBase", "Optional": true}, + {"Index": 6, "Name": "PredicateExpr", "Type": "TCoLambda", "Optional": true}, + {"Index": 7, "Name": "PredicateUsedColumns", "Type": "TCoAtomList", "Optional": true} ] }, { @@ -131,7 +133,9 @@ "Match": {"Type": "Callable", "Name": "TKqlReadTableIndexRanges"}, "Children": [ {"Index": 5, "Name": "Index", "Type": "TCoAtom"}, - {"Index": 6, "Name": "PrefixPointsExpr", "Type": "TExprBase", "Optional": true} + {"Index": 6, "Name": "PrefixPointsExpr", "Type": "TExprBase", "Optional": true}, + {"Index": 7, "Name": "PredicateExpr", "Type": "TCoLambda", "Optional": true}, + {"Index": 8, "Name": "PredicateUsedColumns", "Type": "TCoAtomList", "Optional": true} ] }, { diff --git a/ydb/core/kqp/host/kqp_type_ann.cpp b/ydb/core/kqp/host/kqp_type_ann.cpp index 40f2aef9b065..bed9f6024340 100644 --- a/ydb/core/kqp/host/kqp_type_ann.cpp +++ b/ydb/core/kqp/host/kqp_type_ann.cpp @@ -340,7 +340,7 @@ TStatus AnnotateReadTableRanges(const TExprNode::TPtr& node, TExprContext& ctx, size_t argCount = (olapTable || index) ? 6 : 5; // prefix - if (!EnsureMinArgsCount(*node, argCount, ctx) && EnsureMaxArgsCount(*node, argCount + 1, ctx)) { + if (!EnsureMinArgsCount(*node, argCount, ctx) && EnsureMaxArgsCount(*node, argCount + 3, ctx)) { return TStatus::Error; } @@ -375,8 +375,34 @@ TStatus AnnotateReadTableRanges(const TExprNode::TPtr& node, TExprContext& ctx, } if (TKqlReadTableRanges::Match(node.Get())) { + if (node->ChildrenSize() > TKqlReadTableRanges::idx_PredicateExpr) { + auto& lambda = node->ChildRef(TKqlReadTableRanges::idx_PredicateExpr); + auto rowType = GetReadTableRowType(ctx, tablesData, cluster, table.first, node->Pos(), withSystemColumns); + if (!rowType) { + return TStatus::Error; + } + if (!UpdateLambdaAllArgumentsTypes(lambda, {rowType}, ctx)) { + return IGraphTransformer::TStatus::Error; + } + if (!lambda->GetTypeAnn()) { + return IGraphTransformer::TStatus::Repeat; + } + } node->SetTypeAnn(ctx.MakeType<TListExprType>(rowType)); } else if (TKqlReadTableIndexRanges::Match(node.Get())) { + if (node->ChildrenSize() > TKqlReadTableIndexRanges::idx_PredicateExpr) { + auto& lambda = node->ChildRef(TKqlReadTableIndexRanges::idx_PredicateExpr); + auto rowType = GetReadTableRowType(ctx, tablesData, cluster, table.first, node->Pos(), withSystemColumns); + if (!rowType) { + return TStatus::Error; + } + if (!UpdateLambdaAllArgumentsTypes(lambda, {rowType}, ctx)) { + return IGraphTransformer::TStatus::Error; + } + if (!lambda->GetTypeAnn()) { + return IGraphTransformer::TStatus::Repeat; + } + } node->SetTypeAnn(ctx.MakeType<TListExprType>(rowType)); } else if (TKqpReadTableRanges::Match(node.Get())) { node->SetTypeAnn(ctx.MakeType<TFlowExprType>(rowType)); diff --git a/ydb/core/kqp/opt/logical/kqp_opt_cbo.cpp b/ydb/core/kqp/opt/logical/kqp_opt_cbo.cpp index fed03ea383db..8c30e3db9777 100644 --- a/ydb/core/kqp/opt/logical/kqp_opt_cbo.cpp +++ b/ydb/core/kqp/opt/logical/kqp_opt_cbo.cpp @@ -14,6 +14,25 @@ using namespace NYql::NNodes; namespace { +TMaybeNode<TKqlKeyInc> GetRightTableKeyPrefix(const TKqlKeyRange& range) { + if (!range.From().Maybe<TKqlKeyInc>() || !range.To().Maybe<TKqlKeyInc>()) { + return {}; + } + auto rangeFrom = range.From().Cast<TKqlKeyInc>(); + auto rangeTo = range.To().Cast<TKqlKeyInc>(); + + if (rangeFrom.ArgCount() != rangeTo.ArgCount()) { + return {}; + } + for (ui32 i = 0; i < rangeFrom.ArgCount(); ++i) { + if (rangeFrom.Arg(i).Raw() != rangeTo.Arg(i).Raw()) { + return {}; + } + } + + return rangeFrom; +} + /** * KQP specific rule to check if a LookupJoin is applicable */ @@ -163,4 +182,4 @@ double TKqpProviderContext::ComputeJoinCost(const TOptimizerStatistics& leftStat } -} \ No newline at end of file +} diff --git a/ydb/core/kqp/opt/logical/kqp_opt_log.cpp b/ydb/core/kqp/opt/logical/kqp_opt_log.cpp index 7ec98aa7f569..e53cc909468c 100644 --- a/ydb/core/kqp/opt/logical/kqp_opt_log.cpp +++ b/ydb/core/kqp/opt/logical/kqp_opt_log.cpp @@ -86,20 +86,20 @@ class TKqpLogicalOptTransformer : public TOptimizeTransformerBase { return output; } - TMaybeNode<TExprBase> PushExtractedPredicateToReadTable(TExprBase node, TExprContext& ctx) { + TMaybeNode<TExprBase> PushExtractedPredicateToReadTable(TExprBase node, TExprContext& ctx, const TGetParents& getParents) { if (!KqpCtx.Config->PredicateExtract20) { return node; } - TExprBase output = KqpPushExtractedPredicateToReadTable(node, ctx, KqpCtx, TypesCtx); + TExprBase output = KqpPushExtractedPredicateToReadTable(node, ctx, KqpCtx, TypesCtx, *getParents()); DumpAppliedRule("PushExtractedPredicateToReadTable", node.Ptr(), output.Ptr(), ctx); return output; } - TMaybeNode<TExprBase> LatePushExtractedPredicateToReadTable(TExprBase node, TExprContext& ctx) { + TMaybeNode<TExprBase> LatePushExtractedPredicateToReadTable(TExprBase node, TExprContext& ctx, const TGetParents& getParents) { if (KqpCtx.Config->PredicateExtract20) { return node; } - TExprBase output = KqpPushExtractedPredicateToReadTable(node, ctx, KqpCtx, TypesCtx); + TExprBase output = KqpPushExtractedPredicateToReadTable(node, ctx, KqpCtx, TypesCtx, *getParents()); DumpAppliedRule("PushExtractedPredicateToReadTable", node.Ptr(), output.Ptr(), ctx); return output; } diff --git a/ydb/core/kqp/opt/logical/kqp_opt_log_extract.cpp b/ydb/core/kqp/opt/logical/kqp_opt_log_extract.cpp index 72fe19fd8a11..22fd070e2194 100644 --- a/ydb/core/kqp/opt/logical/kqp_opt_log_extract.cpp +++ b/ydb/core/kqp/opt/logical/kqp_opt_log_extract.cpp @@ -121,6 +121,8 @@ TExprBase KqpApplyExtractMembersToReadTableRanges(TExprBase node, TExprContext& .ExplainPrompt(read.ExplainPrompt()) .Index(index.Index().Cast()) .PrefixPointsExpr(index.PrefixPointsExpr()) + .PredicateExpr(index.PredicateExpr()) + .PredicateUsedColumns(index.PredicateUsedColumns()) .Done(); } @@ -132,6 +134,8 @@ TExprBase KqpApplyExtractMembersToReadTableRanges(TExprBase node, TExprContext& .Settings(read.Settings()) .ExplainPrompt(read.ExplainPrompt()) .PrefixPointsExpr(readRange.PrefixPointsExpr()) + .PredicateExpr(readRange.PredicateExpr()) + .PredicateUsedColumns(readRange.PredicateUsedColumns()) .Done(); } diff --git a/ydb/core/kqp/opt/logical/kqp_opt_log_helpers.cpp b/ydb/core/kqp/opt/logical/kqp_opt_log_helpers.cpp index 17d577c2f330..9ce094d511bb 100644 --- a/ydb/core/kqp/opt/logical/kqp_opt_log_helpers.cpp +++ b/ydb/core/kqp/opt/logical/kqp_opt_log_helpers.cpp @@ -7,6 +7,397 @@ namespace NKikimr::NKqp::NOpt { using namespace NYql; using namespace NYql::NNodes; +namespace { + +TExprBase MakeLT(TExprBase left, TExprBase right, TExprContext& ctx, TPositionHandle pos) { + return Build<TCoOr>(ctx, pos) + .Add<TCoAnd>() + .Add<TCoNot>().Value<TCoExists>().Optional(left).Build().Build() + .Add<TCoExists>().Optional(right).Build() + .Build() + .Add<TCoCmpLess>() + .Left(left) + .Right(right) + .Build() + .Done(); +} + +TExprBase MakeEQ(TExprBase left, TExprBase right, TExprContext& ctx, TPositionHandle pos) { + return Build<TCoOr>(ctx, pos) + .Add<TCoAnd>() + .Add<TCoNot>().Value<TCoExists>().Optional(left).Build().Build() + .Add<TCoNot>().Value<TCoExists>().Optional(right).Build().Build() + .Build() + .Add<TCoCmpEqual>() + .Left(left) + .Right(right) + .Build() + .Done(); +} + +TExprBase MakeLE(TExprBase left, TExprBase right, TExprContext& ctx, TPositionHandle pos) { + return Build<TCoOr>(ctx, pos) + .Add<TCoNot>().Value<TCoExists>().Optional(left).Build().Build() + .Add<TCoCmpLessOrEqual>() + .Left(left) + .Right(right) + .Build() + .Done(); +} + +TCoAtomList MakeAllColumnsList(const NYql::TKikimrTableDescription & tableDesc, TExprContext& ctx, TPositionHandle pos) { + TVector<TCoAtom> columns; + for (auto& [column, _] : tableDesc.Metadata->Columns) { + columns.push_back(Build<TCoAtom>(ctx, pos).Value(column).Done()); + } + return Build<TCoAtomList>(ctx, pos).Add(columns).Done(); +}; + +TMaybe<TPrefixLookup> RewriteReadToPrefixLookup(TKqlReadTableBase read, TExprContext& ctx, const TKqpOptimizeContext& kqpCtx) { + TString lookupTable; + TString indexName; + + TMaybeNode<TCoAtomList> lookupColumns; + size_t prefixSize; + TMaybeNode<TExprBase> prefixExpr; + TMaybeNode<TCoLambda> extraFilter; + TMaybe<TSet<TString>> usedColumns; + + if (!read.template Maybe<TKqlReadTable>() && !read.template Maybe<TKqlReadTableIndex>()) { + return {}; + } + + if (!read.Table().SysView().Value().empty()) { + // Can't lookup in system views + return {}; + } + + if (auto indexRead = read.template Maybe<TKqlReadTableIndex>()) { + indexName = indexRead.Cast().Index().StringValue(); + lookupTable = GetIndexMetadata(indexRead.Cast(), *kqpCtx.Tables, kqpCtx.Cluster)->Name; + } else { + lookupTable = read.Table().Path().StringValue(); + } + const auto& rightTableDesc = kqpCtx.Tables->ExistingTable(kqpCtx.Cluster, lookupTable); + const auto& mainTableDesc = kqpCtx.Tables->ExistingTable(kqpCtx.Cluster, read.Table().Path().StringValue()); + + auto from = read.Range().From(); + auto to = read.Range().To(); + + usedColumns.ConstructInPlace(); + prefixSize = 0; + while (prefixSize < from.ArgCount() && prefixSize < to.ArgCount()) { + if (from.Arg(prefixSize).Raw() != to.Arg(prefixSize).Raw()) { + break; + } + usedColumns->insert(rightTableDesc.Metadata->KeyColumnNames[prefixSize]); + ++prefixSize; + } + + lookupColumns = read.Columns(); + + // we don't need to make filter for point selection + if (!(prefixSize == from.ArgCount() && + prefixSize == to.ArgCount() && + from.template Maybe<TKqlKeyInc>() && + to.template Maybe<TKqlKeyInc>())) + { + extraFilter = MakeFilterForRange(read.Range(), ctx, read.Range().Pos(), rightTableDesc.Metadata->KeyColumnNames); + lookupColumns = MakeAllColumnsList(mainTableDesc, ctx, read.Pos()); + } + + TVector<TExprBase> columns; + for (size_t i = 0; i < prefixSize; ++i) { + columns.push_back(TExprBase(from.Arg(i))); + } + + prefixExpr = Build<TCoAsList>(ctx, read.Pos()) + .Add<TExprList>() + .Add(columns) + .Build() + .Done(); + + Y_ENSURE(prefixExpr.IsValid()); + + return NKikimr::NKqp::NOpt::TPrefixLookup { + .LookupColumns = lookupColumns.Cast(), + .ResultColumns = read.Columns(), + + .Filter = extraFilter, + .FilterUsedColumnsHint = usedColumns, + + .PrefixSize = prefixSize, + .PrefixExpr = prefixExpr.Cast(), + + .LookupTableName = lookupTable, + .MainTable = read.Table(), + .IndexName = indexName, + }; +} + +TMaybe<TPrefixLookup> RewriteReadToPrefixLookup(TKqlReadTableRangesBase read, TExprContext& ctx, const TKqpOptimizeContext& kqpCtx, TMaybe<size_t> maxKeys) { + TString lookupTable; + TString indexName; + + TMaybeNode<TCoAtomList> lookupColumns; + size_t prefixSize; + TMaybeNode<TExprBase> prefixExpr; + TMaybeNode<TCoLambda> extraFilter; + TMaybe<TSet<TString>> usedColumns; + + if (!read.template Maybe<TKqlReadTableRanges>() && !read.template Maybe<TKqlReadTableIndexRanges>()) { + return {}; + } + + if (!read.Table().SysView().Value().empty()) { + // Can't lookup in system views + return {}; + } + + lookupColumns = read.Columns(); + + if (auto indexRead = read.template Maybe<TKqlReadTableIndexRanges>()) { + const auto& tableDesc = GetTableData(*kqpCtx.Tables, kqpCtx.Cluster, read.Table().Path()); + const auto& [indexMeta, _ ] = tableDesc.Metadata->GetIndexMetadata(indexRead.Index().Cast().StringValue()); + lookupTable = indexMeta->Name; + indexName = indexRead.Cast().Index().StringValue(); + } else { + lookupTable = read.Table().Path().StringValue(); + } + + if (TCoVoid::Match(read.Ranges().Raw())) { + prefixSize = 0; + prefixExpr = Build<TCoJust>(ctx, read.Pos()) + .Input<TCoAsList>().Build() + .Done(); + } else { + auto prompt = TKqpReadTableExplainPrompt::Parse(read); + + prefixSize = prompt.PointPrefixLen; + + const auto& rightTableDesc = kqpCtx.Tables->ExistingTable(kqpCtx.Cluster, lookupTable); + const auto& mainTableDesc = kqpCtx.Tables->ExistingTable(kqpCtx.Cluster, read.Table().Path().StringValue()); + + TMaybeNode<TExprBase> rowsExpr; + TMaybeNode<TCoLambda> filter; + TMaybeNode<TCoAtomList> usedColumnsList; + if (read.Maybe<TKqlReadTableRanges>()) { + rowsExpr = read.Cast<TKqlReadTableRanges>().PrefixPointsExpr(); + filter = read.Cast<TKqlReadTableRanges>().PredicateExpr(); + usedColumnsList = read.Cast<TKqlReadTableRanges>().PredicateUsedColumns(); + } + if (read.Maybe<TKqlReadTableIndexRanges>()) { + rowsExpr = read.Cast<TKqlReadTableIndexRanges>().PrefixPointsExpr(); + filter = read.Cast<TKqlReadTableIndexRanges>().PredicateExpr(); + usedColumnsList = read.Cast<TKqlReadTableIndexRanges>().PredicateUsedColumns(); + } + + if (!rowsExpr.IsValid()) { + return {}; + } + + if (maxKeys && (!prompt.ExpectedMaxRanges || *prompt.ExpectedMaxRanges > *maxKeys)) { + return {}; + } + + // we don't need to make filter for point selection + if (prompt.PointPrefixLen != prompt.UsedKeyColumns.size()) { + if (!filter.IsValid() || !usedColumnsList.IsValid()) { + return {}; + } + usedColumns.ConstructInPlace(); + for (auto&& column : usedColumnsList.Cast()) { + usedColumns->insert(column.StringValue()); + } + extraFilter = filter; + lookupColumns = MakeAllColumnsList(mainTableDesc, ctx, read.Pos()); + } + + size_t prefixLen = prompt.PointPrefixLen; + TVector<TString> keyColumns; + for (size_t i = 0; i < prefixLen; ++i) { + YQL_ENSURE(i < rightTableDesc.Metadata->KeyColumnNames.size()); + keyColumns.push_back(rightTableDesc.Metadata->KeyColumnNames[i]); + } + + + auto rowArg = Build<TCoArgument>(ctx, read.Pos()) + .Name("rowArg") + .Done(); + + TVector<TExprBase> components; + for (auto column : keyColumns) { + TCoAtom columnAtom(ctx.NewAtom(read.Ranges().Pos(), column)); + components.push_back( + Build<TCoMember>(ctx, read.Ranges().Pos()) + .Struct(rowArg) + .Name(columnAtom) + .Done()); + } + + prefixExpr = Build<TCoMap>(ctx, read.Pos()) + .Input(rowsExpr.Cast()) + .Lambda() + .Args({rowArg}) + .Body<TExprList>() + .Add(components) + .Build() + .Build() + .Done(); + } + + Y_ENSURE(prefixExpr.IsValid()); + + return TPrefixLookup{ + .LookupColumns = lookupColumns.Cast(), + .ResultColumns = read.Columns(), + + .Filter = extraFilter, + .FilterUsedColumnsHint = usedColumns, + + .PrefixSize = prefixSize, + .PrefixExpr = prefixExpr.Cast(), + + .LookupTableName = lookupTable, + .MainTable = read.Table(), + .IndexName = indexName, + }; +} + +} // namespace + +TCoLambda MakeFilterForRange(TKqlKeyRange range, TExprContext& ctx, TPositionHandle pos, TVector<TString> keyColumns) { + size_t prefix = 0; + auto arg = Build<TCoArgument>(ctx, pos).Name("_row_arg").Done(); + TVector<TExprBase> conds; + while (prefix < range.From().ArgCount() && prefix < range.To().ArgCount()) { + auto column = Build<TCoMember>(ctx, pos).Struct(arg).Name().Build(keyColumns[prefix]).Done(); + if (range.From().Arg(prefix).Raw() == range.To().Arg(prefix).Raw()) { + if (prefix + 1 == range.From().ArgCount() && range.From().Maybe<TKqlKeyExc>()) { + break; + } + if (prefix + 1 == range.To().ArgCount() && range.To().Maybe<TKqlKeyExc>()) { + break; + } + } else { + break; + } + conds.push_back(MakeEQ(column, range.From().Arg(prefix), ctx, pos)); + prefix += 1; + } + + { + TMaybeNode<TExprBase> tupleComparison; + for (ssize_t i = static_cast<ssize_t>(range.From().ArgCount()) - 1; i >= static_cast<ssize_t>(prefix); --i) { + auto column = Build<TCoMember>(ctx, pos).Struct(arg).Name().Build(keyColumns[i]).Done(); + if (tupleComparison.IsValid()) { + tupleComparison = Build<TCoOr>(ctx, pos) + .Add(MakeLT(range.From().Arg(i), column, ctx, pos)) + .Add<TCoAnd>() + .Add(MakeEQ(range.From().Arg(i), column, ctx, pos)) + .Add(tupleComparison.Cast()) + .Build() + .Done(); + } else { + if (range.From().Maybe<TKqlKeyInc>()) { + tupleComparison = MakeLE(range.From().Arg(i), column, ctx, pos); + } else { + tupleComparison = MakeLT(range.From().Arg(i), column, ctx, pos); + } + } + } + + if (tupleComparison.IsValid()) { + conds.push_back(tupleComparison.Cast()); + } + } + + { + TMaybeNode<TExprBase> tupleComparison; + for (ssize_t i = static_cast<ssize_t>(range.To().ArgCount()) - 1; i >= static_cast<ssize_t>(prefix); --i) { + auto column = Build<TCoMember>(ctx, pos).Struct(arg).Name().Build(keyColumns[i]).Done(); + if (tupleComparison.IsValid()) { + tupleComparison = Build<TCoOr>(ctx, pos) + .Add(MakeLT(column, range.To().Arg(i), ctx, pos)) + .Add<TCoAnd>() + .Add(MakeEQ(column, range.To().Arg(i), ctx, pos)) + .Add(tupleComparison.Cast()) + .Build() + .Done(); + } else { + if (range.To().Maybe<TKqlKeyInc>()) { + tupleComparison = MakeLE(column, range.To().Arg(i), ctx, pos); + } else { + tupleComparison = MakeLT(column, range.To().Arg(i), ctx, pos); + } + } + } + + if (tupleComparison.IsValid()) { + conds.push_back(tupleComparison.Cast()); + } + } + + return Build<TCoLambda>(ctx, pos) + .Args({arg}) + .Body<TCoOptionalIf>() + .Predicate<TCoCoalesce>() + .Predicate<TCoAnd>() + .Add(conds) + .Build() + .Value<TCoBool>() + .Literal().Build("false") + .Build() + .Build() + .Value(arg) + .Build() + .Done(); +} + +bool ExtractUsedFields(const TExprNode::TPtr& start, const TExprNode& arg, TSet<TString>& usedFields, const TParentsMap& parentsMap, bool allowDependsOn) { + const TTypeAnnotationNode* argType = RemoveOptionalType(arg.GetTypeAnn()); + if (argType->GetKind() != ETypeAnnotationKind::Struct) { + return false; + } + + if (&arg == start.Get()) { + return true; + } + + const auto inputStructType = argType->Cast<TStructExprType>(); + if (!IsDepended(*start, arg)) { + return true; + } + + TNodeSet nodes; + VisitExpr(start, [&](const TExprNode::TPtr& node) { + nodes.insert(node.Get()); + return true; + }); + + const auto parents = parentsMap.find(&arg); + YQL_ENSURE(parents != parentsMap.cend()); + for (const auto& parent : parents->second) { + if (nodes.cend() == nodes.find(parent)) { + continue; + } + + if (parent->IsCallable("Member")) { + usedFields.emplace(parent->Tail().Content()); + } else if (allowDependsOn && parent->IsCallable("DependsOn")) { + continue; + } else { + // unknown node + for (auto&& item : inputStructType->GetItems()) { + usedFields.emplace(item->GetName()); + } + return true; + } + } + + return true; +} + TExprBase TKqpMatchReadResult::BuildProcessNodes(TExprBase input, TExprContext& ctx) const { auto expr = input; @@ -81,4 +472,17 @@ TMaybe<TKqpMatchReadResult> MatchRead(TExprBase node, std::function<bool(TExprBa }; } +TMaybe<TPrefixLookup> RewriteReadToPrefixLookup(TExprBase read, TExprContext& ctx, const TKqpOptimizeContext& kqpCtx, TMaybe<size_t> maxKeys) { + if (maxKeys == TMaybe<size_t>(0)) { + return {}; + } + if (auto readTable = read.Maybe<TKqlReadTableBase>()) { + return RewriteReadToPrefixLookup(readTable.Cast(), ctx, kqpCtx); + } else { + auto readRanges = read.Maybe<TKqlReadTableRangesBase>(); + YQL_ENSURE(readRanges); + return RewriteReadToPrefixLookup(readRanges.Cast(), ctx, kqpCtx, maxKeys); + } +} + } // namespace NKikimr::NKqp::NOpt diff --git a/ydb/core/kqp/opt/logical/kqp_opt_log_impl.h b/ydb/core/kqp/opt/logical/kqp_opt_log_impl.h index 5ff32edc6eeb..701994659753 100644 --- a/ydb/core/kqp/opt/logical/kqp_opt_log_impl.h +++ b/ydb/core/kqp/opt/logical/kqp_opt_log_impl.h @@ -24,6 +24,29 @@ TMaybe<TKqpMatchReadResult> MatchRead(NYql::NNodes::TExprBase node) { NYql::NNodes::TMaybeNode<NYql::NNodes::TKqlKeyInc> GetRightTableKeyPrefix(const NYql::NNodes::TKqlKeyRange& range); +NYql::NNodes::TCoLambda MakeFilterForRange(NYql::NNodes::TKqlKeyRange range, NYql::TExprContext& ctx, NYql::TPositionHandle pos, TVector<TString> keyColumns); + +bool ExtractUsedFields(const NYql::TExprNode::TPtr& start, const NYql::TExprNode& arg, TSet<TString>& usedFields, const NYql::TParentsMap& parentsMap, bool allowDependsOn); + +struct TPrefixLookup { + NYql::NNodes::TCoAtomList LookupColumns; + NYql::NNodes::TCoAtomList ResultColumns; + + NYql::NNodes::TMaybeNode<NYql::NNodes::TCoLambda> Filter; + TMaybe<TSet<TString>> FilterUsedColumnsHint; + + size_t PrefixSize; + NYql::NNodes::TExprBase PrefixExpr; + + TString LookupTableName; + + NYql::NNodes::TKqpTable MainTable; + TString IndexName; +}; + +// Try to rewrite arbitrary table read to (ExtractMembers (Filter (Lookup LookupColumns) ResultColumns) +TMaybe<TPrefixLookup> RewriteReadToPrefixLookup(NYql::NNodes::TExprBase read, NYql::TExprContext& ctx, const TKqpOptimizeContext& kqpCtx, TMaybe<size_t> maxKeys); + } // NKikimr::NKqp::NOpt diff --git a/ydb/core/kqp/opt/logical/kqp_opt_log_join.cpp b/ydb/core/kqp/opt/logical/kqp_opt_log_join.cpp index 47affa3e19bc..874afc44c38b 100644 --- a/ydb/core/kqp/opt/logical/kqp_opt_log_join.cpp +++ b/ydb/core/kqp/opt/logical/kqp_opt_log_join.cpp @@ -320,22 +320,101 @@ bool IsParameterToListOfStructsRepack(const TExprBase& expr) { //#define DBG(...) YQL_CLOG(DEBUG, ProviderKqp) << __VA_ARGS__ #define DBG(...) -template<typename ReadType> -TMaybeNode<TExprBase> BuildKqpStreamIndexLookupJoin(const TDqJoin& join, TExprBase leftInput, const TKqpMatchReadResult& rightReadMatch, TExprContext& ctx) { +TMaybeNode<TExprBase> BuildKqpStreamIndexLookupJoin( + const TDqJoin& join, + TExprBase leftInput, + const TPrefixLookup& rightLookup, + + const TKqpMatchReadResult& rightReadMatch, + TExprContext& ctx) +{ TString leftLabel = join.LeftLabel().Maybe<TCoAtom>() ? TString(join.LeftLabel().Cast<TCoAtom>().Value()) : ""; TString rightLabel = join.RightLabel().Maybe<TCoAtom>() ? TString(join.RightLabel().Cast<TCoAtom>().Value()) : ""; - auto rightRead = rightReadMatch.Read.template Cast<ReadType>(); + + TMaybeNode<TCoAtomList> lookupColumns; + if (auto read = rightReadMatch.Read.Maybe<TKqlReadTableBase>()) { + lookupColumns = read.Columns().Cast(); + } else { + auto readRanges = rightReadMatch.Read.Maybe<TKqlReadTableRangesBase>(); + lookupColumns = readRanges.Columns().Cast(); + } + + TMaybeNode<TCoLambda> extraRightFilter = rightLookup.Filter; + + if (extraRightFilter.IsValid()) { + const TSet<TString>& usedColumns = *rightLookup.FilterUsedColumnsHint; + if (rightLookup.FilterUsedColumnsHint) { + TSet<TString> lookupColumnsSet; + for (auto&& column : lookupColumns.Cast()) { + lookupColumnsSet.insert(column.StringValue()); + } + bool rebuildColumns = false; + for (auto& column : usedColumns) { + if (!lookupColumnsSet.contains(column)) { + lookupColumnsSet.insert(column); + rebuildColumns = true; + } + } + // we should expand list of read columns + // narrow it immediately after filter + if (rebuildColumns) { + TVector<TCoAtom> newColumns; + auto pos = extraRightFilter.Cast().Pos(); + for (auto& column : lookupColumnsSet) { + newColumns.push_back(Build<TCoAtom>(ctx, pos).Value(column).Done()); + } + auto arg = Build<TCoArgument>(ctx, pos).Name("_extract_members_arg").Done(); + extraRightFilter = Build<TCoLambda>(ctx, pos) + .Args({arg}) + .Body<TCoExtractMembers>() + .Members(lookupColumns.Cast()) + .Input<TCoFlatMap>() + .Lambda(ctx.DeepCopyLambda(extraRightFilter.Cast().Ref())) + .Input<TCoJust>().Input(arg).Build() + .Build() + .Build() + .Done(); + lookupColumns = Build<TCoAtomList>(ctx, pos) + .Add(newColumns) + .Done(); + } + } else { + return {}; + } + } TExprBase lookupJoin = Build<TKqlStreamLookupTable>(ctx, join.Pos()) - .Table(rightRead.Table()) + .Table(rightLookup.MainTable) .LookupKeys(leftInput) - .Columns(rightRead.Columns()) + .Columns(lookupColumns.Cast()) .LookupStrategy().Build(TKqpStreamLookupJoinStrategyName) .Done(); // Stream lookup join output: stream<tuple<left_row_struct, optional<right_row_struct>>> // so we should apply filters to second element of tuple for each row + if (extraRightFilter.IsValid()) { + lookupJoin = Build<TCoMap>(ctx, join.Pos()) + .Input(lookupJoin) + .Lambda() + .Args({"tuple"}) + .Body<TExprList>() + .Add<TCoNth>() + .Tuple("tuple") + .Index().Value("0").Build() + .Build() + .Add<TCoFlatMap>() + .Input<TCoNth>() + .Tuple("tuple") + .Index().Value("1").Build() + .Build() + .Lambda(ctx.DeepCopyLambda(extraRightFilter.Cast().Ref())) + .Build() + .Build() + .Build() + .Done(); + } + if (rightReadMatch.ExtractMembers) { lookupJoin = Build<TCoMap>(ctx, join.Pos()) .Input(lookupJoin) @@ -432,10 +511,8 @@ TMaybeNode<TExprBase> BuildKqpStreamIndexLookupJoin(const TDqJoin& join, TExprBa .Done(); } -template<typename ReadType> -TMaybeNode<TExprBase> KqpJoinToIndexLookupImpl(const TDqJoin& join, TExprContext& ctx, const TKqpOptimizeContext& kqpCtx) { - static_assert(std::is_same_v<ReadType, TKqlReadTableBase> || std::is_same_v<ReadType, TKqlReadTableRangesBase>, "unsupported read type"); +TMaybeNode<TExprBase> KqpJoinToIndexLookupImpl(const TDqJoin& join, TExprContext& ctx, const TKqpOptimizeContext& kqpCtx) { if (!join.RightLabel().Maybe<TCoAtom>()) { // Lookup only in tables return {}; @@ -450,136 +527,41 @@ TMaybeNode<TExprBase> KqpJoinToIndexLookupImpl(const TDqJoin& join, TExprContext TString lookupTable; TString indexName; - auto rightReadMatch = MatchRead<ReadType>(join.RightInput()); + auto rightReadMatch = MatchRead(join.RightInput(), [](TExprBase node) { + return node.Maybe<TKqlReadTableBase>() || node.Maybe<TKqlReadTableRangesBase>(); + }); + if (!rightReadMatch || rightReadMatch->FlatMap && !IsPassthroughFlatMap(rightReadMatch->FlatMap.Cast(), nullptr)) { return {}; } - auto rightRead = rightReadMatch->Read.template Cast<ReadType>(); - + TMaybeNode<TCoAtomList> rightColumns; TMaybeNode<TCoAtomList> lookupColumns; size_t rightPrefixSize; TMaybeNode<TExprBase> rightPrefixExpr; - if constexpr (std::is_same_v<ReadType, TKqlReadTableBase>) { - Y_ENSURE(rightRead.template Maybe<TKqlReadTable>() || rightRead.template Maybe<TKqlReadTableIndex>()); - const TKqlReadTableBase read = rightRead; - if (!read.Table().SysView().Value().empty()) { - // Can't lookup in system views - return {}; - } - - auto maybeRightTableKeyPrefix = GetRightTableKeyPrefix(read.Range()); - if (!maybeRightTableKeyPrefix) { - return {}; - } - - lookupColumns = read.Columns(); - - rightPrefixSize = maybeRightTableKeyPrefix.Cast().ArgCount(); - TVector<TExprBase> columns; - for (auto& column : maybeRightTableKeyPrefix.Cast().Args()) { - columns.push_back(TExprBase(column)); - } - - rightPrefixExpr = Build<TCoAsList>(ctx, join.Pos()) - .Add<TExprList>() - .Add(columns) - .Build() - .Done(); - - if (auto indexRead = rightRead.template Maybe<TKqlReadTableIndex>()) { - indexName = indexRead.Cast().Index().StringValue(); - lookupTable = GetIndexMetadata(indexRead.Cast(), *kqpCtx.Tables, kqpCtx.Cluster)->Name; - } else { - lookupTable = read.Table().Path().StringValue(); - } - } else if constexpr (std::is_same_v<ReadType, TKqlReadTableRangesBase>){ - auto read = rightReadMatch->Read.template Cast<TKqlReadTableRangesBase>(); - if (!read.Table().SysView().Value().empty()) { - // Can't lookup in system views - return {}; - } - - lookupColumns = read.Columns(); - - if (auto indexRead = read.template Maybe<TKqlReadTableIndexRanges>()) { - const auto& tableDesc = GetTableData(*kqpCtx.Tables, kqpCtx.Cluster, read.Table().Path()); - const auto& [indexMeta, _ ] = tableDesc.Metadata->GetIndexMetadata(indexRead.Index().Cast().StringValue()); - lookupTable = indexMeta->Name; - indexName = indexRead.Cast().Index().StringValue(); - } else { - lookupTable = read.Table().Path().StringValue(); - } - - if (TCoVoid::Match(read.Ranges().Raw())) { - rightPrefixSize = 0; - rightPrefixExpr = Build<TCoJust>(ctx, join.Pos()) - .Input<TCoAsList>().Build() - .Done(); - } else { - auto prompt = TKqpReadTableExplainPrompt::Parse(read); - - if (prompt.PointPrefixLen != prompt.UsedKeyColumns.size()) { - return {}; - } - - if (prompt.ExpectedMaxRanges != TMaybe<ui64>(1)) { - return {}; - } - rightPrefixSize = prompt.PointPrefixLen; - - const auto& rightTableDesc = kqpCtx.Tables->ExistingTable(kqpCtx.Cluster, lookupTable); - - TMaybeNode<TExprBase> rowsExpr; - if (read.template Maybe<TKqlReadTableRanges>()) { - rowsExpr = read.template Cast<TKqlReadTableRanges>().PrefixPointsExpr(); - } - if (read.template Maybe<TKqlReadTableIndexRanges>()) { - rowsExpr = read.template Cast<TKqlReadTableIndexRanges>().PrefixPointsExpr(); - } - - size_t prefixLen = prompt.PointPrefixLen; - TVector<TString> keyColumns; - for (size_t i = 0; i < prefixLen; ++i) { - YQL_ENSURE(i < rightTableDesc.Metadata->KeyColumnNames.size()); - keyColumns.push_back(rightTableDesc.Metadata->KeyColumnNames[i]); - } - + auto prefixLookup = RewriteReadToPrefixLookup(rightReadMatch->Read, ctx, kqpCtx, kqpCtx.Config->IdxLookupJoinsPrefixPointLimit); + if (prefixLookup) { + lookupTable = prefixLookup->LookupTableName; + indexName = prefixLookup->IndexName; + lookupColumns = prefixLookup->LookupColumns; + rightColumns = prefixLookup->ResultColumns; - auto rowArg = Build<TCoArgument>(ctx, join.Pos()) - .Name("rowArg") - .Done(); - - TVector<TExprBase> components; - for (auto column : keyColumns) { - TCoAtom columnAtom(ctx.NewAtom(read.Ranges().Pos(), column)); - components.push_back( - Build<TCoMember>(ctx, read.Ranges().Pos()) - .Struct(rowArg) - .Name(columnAtom) - .Done()); - } - - rightPrefixExpr = Build<TCoMap>(ctx, join.Pos()) - .Input(rowsExpr.Cast()) - .Lambda() - .Args({rowArg}) - .Body<TExprList>() - .Add(components) - .Build() - .Build() - .Done(); - } + rightPrefixSize = prefixLookup->PrefixSize; + rightPrefixExpr = prefixLookup->PrefixExpr; + } else { + return {}; } - Y_ENSURE(rightPrefixExpr.IsValid()); - const auto& rightTableDesc = kqpCtx.Tables->ExistingTable(kqpCtx.Cluster, lookupTable); if (rightTableDesc.Metadata->Kind == NYql::EKikimrTableKind::Olap) { return {}; } + if ((!kqpCtx.Config->PredicateExtract20 || kqpCtx.Config->OldLookupJoinBehaviour) && prefixLookup->Filter.IsValid()) { + return {}; + } + TMap<std::string_view, TString> rightJoinKeyToLeft; TVector<TCoAtom> rightKeyColumns; rightKeyColumns.reserve(join.JoinKeys().Size()); @@ -615,6 +597,7 @@ TMaybeNode<TExprBase> KqpJoinToIndexLookupImpl(const TDqJoin& join, TExprContext TVector<TCoAtom> skipNullColumns; ui32 fixedPrefix = 0; TSet<TString> deduplicateLeftColumns; + TVector<TExprBase> prefixFilters; for (auto& rightColumnName : rightTableDesc.Metadata->KeyColumnNames) { TExprNode::TPtr member; @@ -622,7 +605,21 @@ TMaybeNode<TExprBase> KqpJoinToIndexLookupImpl(const TDqJoin& join, TExprContext if (fixedPrefix < rightPrefixSize) { if (leftColumn) { - return {}; + prefixFilters.push_back( + Build<TCoCmpEqual>(ctx, join.Pos()) + .Left<TCoNth>() + .Tuple(prefixRowArg) + .Index().Value(ToString(fixedPrefix)).Build() + .Build() + .Right<TCoMember>() + .Struct(leftRowArg) + .Name().Build(*leftColumn) + .Build() + .Done()); + deduplicateLeftColumns.insert(*leftColumn); + if ((!kqpCtx.Config->PredicateExtract20 || kqpCtx.Config->OldLookupJoinBehaviour)) { + return {}; + } } member = Build<TCoNth>(ctx, prefixRowArg.Pos()) @@ -696,7 +693,8 @@ TMaybeNode<TExprBase> KqpJoinToIndexLookupImpl(const TDqJoin& join, TExprContext const bool useStreamIndexLookupJoin = (kqpCtx.IsDataQuery() || kqpCtx.IsGenericQuery()) && kqpCtx.Config->EnableKqpDataQueryStreamIdxLookupJoin - && supportedStreamJoinKinds.contains(join.JoinType().Value()); + && supportedStreamJoinKinds.contains(join.JoinType().Value()) + && !indexName; bool needPrecomputeLeft = (kqpCtx.IsDataQuery() || kqpCtx.IsGenericQuery()) && !join.LeftInput().Maybe<TCoParameter>() @@ -749,27 +747,48 @@ TMaybeNode<TExprBase> KqpJoinToIndexLookupImpl(const TDqJoin& join, TExprContext .Done(); } + auto wrapWithPrefixFilters = [&](TExprBase body) -> TExprBase { + if (prefixFilters.empty()) { + return Build<TCoJust>(ctx, body.Pos()) + .Input(body) + .Done(); + } else { + return Build<TCoOptionalIf>(ctx, body.Pos()) + .Predicate<TCoCoalesce>() + .Predicate<TCoAnd>() + .Add(prefixFilters) + .Build() + .Value<TCoBool>() + .Literal().Build("false") + .Build() + .Build() + .Value(body) + .Done(); + } + }; + if (useStreamIndexLookupJoin) { auto leftInput = Build<TCoFlatMap>(ctx, join.Pos()) .Input(leftData) .Lambda() .Args({leftRowArg}) - .Body<TCoMap>() + .Body<TCoFlatMap>() .Input(rightPrefixExpr.Cast()) .Lambda() .Args({prefixRowArg}) - .Body<TExprList>() - .Add<TCoAsStruct>() - .Add(lookupMembers) - .Build() - .Add(leftRowArg) - .Build() + .Body(wrapWithPrefixFilters( + Build<TExprList>(ctx, join.Pos()) + .Add<TCoAsStruct>() + .Add(lookupMembers) + .Build() + .Add(leftRowArg) + .Done())) .Build() .Build() .Build() .Done(); - return BuildKqpStreamIndexLookupJoin<ReadType>(join, leftInput, *rightReadMatch, ctx); + return BuildKqpStreamIndexLookupJoin(join, leftInput, *prefixLookup, *rightReadMatch, ctx); } auto leftDataDeduplicated = DeduplicateByMembers(leftData, filter, deduplicateLeftColumns, ctx, join.Pos()); @@ -777,21 +796,33 @@ TMaybeNode<TExprBase> KqpJoinToIndexLookupImpl(const TDqJoin& join, TExprContext .Input(leftDataDeduplicated) .Lambda() .Args({leftRowArg}) - .Body<TCoMap>() + .Body<TCoFlatMap>() .Input(rightPrefixExpr.Cast()) .Lambda() .Args({prefixRowArg}) - .Body<TCoAsStruct>() - .Add(lookupMembers) - .Build() + .Body(wrapWithPrefixFilters(Build<TCoAsStruct>(ctx, join.Pos()).Add(lookupMembers).Done())) .Build() .Build() .Build() .Done(); TExprBase lookup = indexName - ? BuildLookupIndex(ctx, join.Pos(), rightRead.Table(), rightRead.Columns(), keysToLookup, skipNullColumns, indexName, kqpCtx) - : BuildLookupTable(ctx, join.Pos(), rightRead.Table(), rightRead.Columns(), keysToLookup, skipNullColumns, kqpCtx); + ? BuildLookupIndex(ctx, join.Pos(), prefixLookup->MainTable, lookupColumns.Cast(), keysToLookup, skipNullColumns, indexName, kqpCtx) + : BuildLookupTable(ctx, join.Pos(), prefixLookup->MainTable, lookupColumns.Cast(), keysToLookup, skipNullColumns, kqpCtx); + + if (prefixLookup->Filter.IsValid()) { + lookup = Build<TCoFlatMap>(ctx, join.Pos()) + .Input(lookup) + .Lambda(ctx.DeepCopyLambda(prefixLookup->Filter.Cast().Ref())) + .Done(); + } + + if (prefixLookup->LookupColumns.Raw() != prefixLookup->ResultColumns.Raw()) { + lookup = Build<TCoExtractMembers>(ctx, join.Pos()) + .Input(lookup) + .Members(prefixLookup->ResultColumns) + .Done(); + } // Skip null keys in lookup part as for equijoin semantics null != null, // so we can't have nulls in lookup part @@ -803,7 +834,7 @@ TMaybeNode<TExprBase> KqpJoinToIndexLookupImpl(const TDqJoin& join, TExprContext .Done(); if (rightReadMatch->ExtractMembers) { - lookupColumns = rightReadMatch->ExtractMembers.Cast().Members(); + rightColumns = rightReadMatch->ExtractMembers.Cast().Members(); } lookup = rightReadMatch->BuildProcessNodes(lookup, ctx); @@ -812,7 +843,7 @@ TMaybeNode<TExprBase> KqpJoinToIndexLookupImpl(const TDqJoin& join, TExprContext auto arg = TCoArgument(ctx.NewArgument(join.Pos(), "row")); auto rightLabel = join.RightLabel().Cast<TCoAtom>().Value(); - TVector<TExprBase> renames = CreateRenames(rightReadMatch->FlatMap, lookupColumns.Cast(), arg, rightLabel, + TVector<TExprBase> renames = CreateRenames(rightReadMatch->FlatMap, rightColumns.Cast(), arg, rightLabel, join.Pos(), ctx); lookup = Build<TCoMap>(ctx, join.Pos()) @@ -840,27 +871,7 @@ TMaybeNode<TExprBase> KqpJoinToIndexLookupImpl(const TDqJoin& join, TExprContext } // anonymous namespace -TMaybeNode<TKqlKeyInc> GetRightTableKeyPrefix(const TKqlKeyRange& range) { - if (!range.From().Maybe<TKqlKeyInc>() || !range.To().Maybe<TKqlKeyInc>()) { - return {}; - } - auto rangeFrom = range.From().Cast<TKqlKeyInc>(); - auto rangeTo = range.To().Cast<TKqlKeyInc>(); - - if (rangeFrom.ArgCount() != rangeTo.ArgCount()) { - return {}; - } - for (ui32 i = 0; i < rangeFrom.ArgCount(); ++i) { - if (rangeFrom.Arg(i).Raw() != rangeTo.Arg(i).Raw()) { - return {}; - } - } - - return rangeFrom; -} - -TExprBase KqpJoinToIndexLookup(const TExprBase& node, TExprContext& ctx, const TKqpOptimizeContext& kqpCtx) -{ +TExprBase KqpJoinToIndexLookup(const TExprBase& node, TExprContext& ctx, const TKqpOptimizeContext& kqpCtx) { if ((kqpCtx.IsScanQuery() && !kqpCtx.Config->EnableKqpScanQueryStreamIdxLookupJoin) || !node.Maybe<TDqJoin>()) { return node; } @@ -873,16 +884,12 @@ TExprBase KqpJoinToIndexLookup(const TExprBase& node, TExprContext& ctx, const T auto flipJoin = FlipLeftSemiJoin(join, ctx); DBG("-- Flip join"); - if (auto indexLookupJoin = KqpJoinToIndexLookupImpl<TKqlReadTableBase>(flipJoin, ctx, kqpCtx)) { - return indexLookupJoin.Cast(); - } else if (auto indexLookupJoin = KqpJoinToIndexLookupImpl<TKqlReadTableRangesBase>(flipJoin, ctx, kqpCtx)) { + if (auto indexLookupJoin = KqpJoinToIndexLookupImpl(flipJoin, ctx, kqpCtx)) { return indexLookupJoin.Cast(); } } - if (auto indexLookupJoin = KqpJoinToIndexLookupImpl<TKqlReadTableBase>(join, ctx, kqpCtx)) { - return indexLookupJoin.Cast(); - } else if (auto indexLookupJoin = KqpJoinToIndexLookupImpl<TKqlReadTableRangesBase>(join, ctx, kqpCtx)) { + if (auto indexLookupJoin = KqpJoinToIndexLookupImpl(join, ctx, kqpCtx)) { return indexLookupJoin.Cast(); } diff --git a/ydb/core/kqp/opt/logical/kqp_opt_log_ranges_predext.cpp b/ydb/core/kqp/opt/logical/kqp_opt_log_ranges_predext.cpp index c53270ac283d..3bdd83516c9b 100644 --- a/ydb/core/kqp/opt/logical/kqp_opt_log_ranges_predext.cpp +++ b/ydb/core/kqp/opt/logical/kqp_opt_log_ranges_predext.cpp @@ -179,7 +179,7 @@ TMaybeNode<TExprBase> TryBuildTrivialReadTable(TCoFlatMap& flatmap, TKqlReadTabl } // namespace TExprBase KqpPushExtractedPredicateToReadTable(TExprBase node, TExprContext& ctx, const TKqpOptimizeContext& kqpCtx, - TTypeAnnotationContext& typesCtx) + TTypeAnnotationContext& typesCtx, const NYql::TParentsMap& parentsMap) { if (!node.Maybe<TCoFlatMapBase>()) { return node; @@ -471,10 +471,33 @@ TExprBase KqpPushExtractedPredicateToReadTable(TExprBase node, TExprContext& ctx if (!input) { TMaybeNode<TExprBase> prefix; + TMaybeNode<TCoLambda> predicateExpr; + TMaybeNode<TCoAtomList> usedColumnsList; if (kqpCtx.Config->PredicateExtract20) { prefix = prefixPointsExpr; + if (prefix) { + predicateExpr = ctx.DeepCopyLambda(flatmap.Lambda().Ref()); + TSet<TString> usedColumns; + if (!ExtractUsedFields( + flatmap.Lambda().Body().Ptr(), + flatmap.Lambda().Args().Arg(0).Ref(), + usedColumns, + parentsMap, + true)) + { + prefix = {}; + predicateExpr = {}; + } else { + TVector<TCoAtom> columnAtoms; + for (auto&& column : usedColumns) { + columnAtoms.push_back(Build<TCoAtom>(ctx, read.Pos()).Value(column).Done()); + } + usedColumnsList = Build<TCoAtomList>(ctx, read.Pos()).Add(columnAtoms).Done(); + } + } } + if (indexName) { input = Build<TKqlReadTableIndexRanges>(ctx, read.Pos()) .Table(read.Table()) @@ -484,6 +507,8 @@ TExprBase KqpPushExtractedPredicateToReadTable(TExprBase node, TExprContext& ctx .ExplainPrompt(prompt.BuildNode(ctx, read.Pos())) .Index(indexName.Cast()) .PrefixPointsExpr(prefix) + .PredicateExpr(predicateExpr) + .PredicateUsedColumns(usedColumnsList) .Done(); } else { input = Build<TKqlReadTableRanges>(ctx, read.Pos()) @@ -493,12 +518,13 @@ TExprBase KqpPushExtractedPredicateToReadTable(TExprBase node, TExprContext& ctx .Settings(read.Settings()) .ExplainPrompt(prompt.BuildNode(ctx, read.Pos())) .PrefixPointsExpr(prefix) + .PredicateExpr(predicateExpr) + .PredicateUsedColumns(usedColumnsList) .Done(); } } *input = readMatch->BuildProcessNodes(*input, ctx); - if (node.Maybe<TCoFlatMap>()) { return Build<TCoFlatMap>(ctx, node.Pos()) .Input(*input) diff --git a/ydb/core/kqp/opt/logical/kqp_opt_log_rules.h b/ydb/core/kqp/opt/logical/kqp_opt_log_rules.h index 9f4852eff0c9..d311b41be980 100644 --- a/ydb/core/kqp/opt/logical/kqp_opt_log_rules.h +++ b/ydb/core/kqp/opt/logical/kqp_opt_log_rules.h @@ -22,7 +22,7 @@ NYql::NNodes::TExprBase KqpPushPredicateToReadTable(NYql::NNodes::TExprBase node const TKqpOptimizeContext &kqpCtx); NYql::NNodes::TExprBase KqpPushExtractedPredicateToReadTable(NYql::NNodes::TExprBase node, NYql::TExprContext& ctx, - const TKqpOptimizeContext& kqpCtx, NYql::TTypeAnnotationContext& typesCtx); + const TKqpOptimizeContext& kqpCtx, NYql::TTypeAnnotationContext& typesCtx, const NYql::TParentsMap& parentsMap); NYql::NNodes::TExprBase KqpJoinToIndexLookup(const NYql::NNodes::TExprBase& node, NYql::TExprContext& ctx, const TKqpOptimizeContext& kqpCtx); diff --git a/ydb/core/kqp/opt/logical/kqp_opt_log_sqlin.cpp b/ydb/core/kqp/opt/logical/kqp_opt_log_sqlin.cpp index 00d430ae7b40..ecd2e664d49a 100644 --- a/ydb/core/kqp/opt/logical/kqp_opt_log_sqlin.cpp +++ b/ydb/core/kqp/opt/logical/kqp_opt_log_sqlin.cpp @@ -76,88 +76,27 @@ TExprBase KqpRewriteSqlInToEquiJoin(const TExprBase& node, TExprContext& ctx, co const NYql::TKikimrTableDescription* tableDesc; - auto readMatch = MatchRead<TKqlReadTableBase>(flatMap.Input()); - auto rangesMatch = MatchRead<TKqlReadTableRangesBase>(flatMap.Input()); - ui64 fixedPrefixLen; - if (readMatch) { - TString lookupTable; - - if (readMatch->FlatMap) { - return node; - } - - auto readTable = readMatch->Read.Cast<TKqlReadTableBase>(); - - static const std::set<TStringBuf> supportedReads { - TKqlReadTable::CallableName(), - TKqlReadTableIndex::CallableName(), - }; - - if (!supportedReads.contains(readTable.CallableName())) { - return node; - } - - if (!readTable.Table().SysView().Value().empty()) { - return node; - } - - if (auto indexRead = readTable.Maybe<TKqlReadTableIndex>()) { - lookupTable = GetIndexMetadata(indexRead.Cast(), *kqpCtx.Tables, kqpCtx.Cluster)->Name; - } else if (!lookupTable) { - lookupTable = readTable.Table().Path().StringValue(); - } - - tableDesc = &kqpCtx.Tables->ExistingTable(kqpCtx.Cluster, lookupTable); - const auto& rangeFrom = readTable.Range().From(); - const auto& rangeTo = readTable.Range().To(); - - if (!rangeFrom.Maybe<TKqlKeyInc>() || !rangeTo.Maybe<TKqlKeyInc>()) { - return node; - } - if (rangeFrom.Raw() != rangeTo.Raw()) { - // not point selection - return node; - } - - fixedPrefixLen = rangeFrom.ArgCount(); - } else if (rangesMatch) { - if (rangesMatch->FlatMap) { - return node; - } - - auto read = rangesMatch->Read.template Cast<TKqlReadTableRangesBase>(); - - if (!read.Table().SysView().Value().empty()) { - return node; - } - - auto prompt = TKqpReadTableExplainPrompt::Parse(read); - if (prompt.PointPrefixLen != prompt.UsedKeyColumns.size()) { - return node; - } - - if (!TCoVoid::Match(read.Ranges().Raw()) && prompt.ExpectedMaxRanges != TMaybe<ui64>(1)) { - return node; - } + auto readMatch = MatchRead(flatMap.Input(), [](TExprBase node) { + return node.Maybe<TKqlReadTableBase>() || node.Maybe<TKqlReadTableRangesBase>(); + }); - TString lookupTable; - TString indexName; - if (auto indexRead = read.template Maybe<TKqlReadTableIndexRanges>()) { - const auto& tableDesc = GetTableData(*kqpCtx.Tables, kqpCtx.Cluster, read.Table().Path()); - const auto& [indexMeta, _ ] = tableDesc.Metadata->GetIndexMetadata(indexRead.Index().Cast().StringValue()); - lookupTable = indexMeta->Name; - indexName = indexRead.Cast().Index().StringValue(); - } else { - lookupTable = read.Table().Path().StringValue(); - } + if (!readMatch) { + return node; + } - tableDesc = &kqpCtx.Tables->ExistingTable(kqpCtx.Cluster, lookupTable); + ui64 fixedPrefixLen; + auto pointSelection = RewriteReadToPrefixLookup(readMatch->Read, ctx, kqpCtx, kqpCtx.Config->IdxLookupJoinsPrefixPointLimit); + if (!pointSelection) { + return node; + } - fixedPrefixLen = prompt.PointPrefixLen; - } else { + if ((!kqpCtx.Config->PredicateExtract20 || kqpCtx.Config->OldLookupJoinBehaviour) && pointSelection->Filter.IsValid()) { return node; } + fixedPrefixLen = pointSelection->PrefixSize; + tableDesc = &kqpCtx.Tables->ExistingTable(kqpCtx.Cluster, pointSelection->LookupTableName); + i64 keySuffixLen = (i64) tableDesc->Metadata->KeyColumnNames.size() - (i64) fixedPrefixLen; if (keySuffixLen <= 0) { return node; diff --git a/ydb/core/kqp/provider/yql_kikimr_provider_impl.h b/ydb/core/kqp/provider/yql_kikimr_provider_impl.h index 4ff9fe205c73..9e6f4f945d80 100644 --- a/ydb/core/kqp/provider/yql_kikimr_provider_impl.h +++ b/ydb/core/kqp/provider/yql_kikimr_provider_impl.h @@ -214,6 +214,9 @@ NNodes::TCoAtomList BuildColumnsList(const TKikimrTableDescription& table, TPosi const TTypeAnnotationNode* GetReadTableRowType(TExprContext& ctx, const TKikimrTablesData& tablesData, const TString& cluster, const TString& table, NNodes::TCoAtomList select, bool withSystemColumns = false); +const TTypeAnnotationNode* GetReadTableRowType(TExprContext& ctx, const TKikimrTablesData& tablesData, + const TString& cluster, const TString& table, TPositionHandle pos, bool withSystemColumns); + TYdbOperation GetTableOp(const NNodes::TKiWriteTable& write); TVector<NKqpProto::TKqpTableOp> TableOperationsToProto(const NNodes::TCoNameValueTupleList& operations, TExprContext& ctx); diff --git a/ydb/core/kqp/provider/yql_kikimr_settings.h b/ydb/core/kqp/provider/yql_kikimr_settings.h index f6fb2beb1e2e..e8ef355c7bc4 100644 --- a/ydb/core/kqp/provider/yql_kikimr_settings.h +++ b/ydb/core/kqp/provider/yql_kikimr_settings.h @@ -162,6 +162,8 @@ struct TKikimrConfiguration : public TKikimrSettings, public NCommon::TSettingDi bool EnableAstCache = false; bool EnablePgConstsToParams = false; ui64 ExtractPredicateRangesLimit = 0; + ui64 IdxLookupJoinsPrefixPointLimit = 1; + bool OldLookupJoinBehaviour = true; }; } diff --git a/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp b/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp index d5d5b95754bd..a41a9eb9f81c 100644 --- a/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp @@ -1870,6 +1870,20 @@ TAutoPtr<IGraphTransformer> CreateKiSinkTypeAnnotationTransformer(TIntrusivePtr< return new TKiSinkTypeAnnotationTransformer(gateway, sessionCtx, types); } +const TTypeAnnotationNode* GetReadTableRowType(TExprContext& ctx, const TKikimrTablesData& tablesData, + const TString& cluster, const TString& table, TPositionHandle pos, bool withSystemColumns) +{ + auto tableDesc = tablesData.EnsureTableExists(cluster, table, pos, ctx); + if (!tableDesc) { + return nullptr; + } + TVector<TCoAtom> columns; + for (auto&& [column, _] : tableDesc->Metadata->Columns) { + columns.push_back(Build<TCoAtom>(ctx, pos).Value(column).Done()); + } + return GetReadTableRowType(ctx, tablesData, cluster, table, Build<TCoAtomList>(ctx, pos).Add(columns).Done(), withSystemColumns); +} + const TTypeAnnotationNode* GetReadTableRowType(TExprContext& ctx, const TKikimrTablesData& tablesData, const TString& cluster, const TString& table, TCoAtomList select, bool withSystemColumns) { diff --git a/ydb/core/kqp/ut/join/kqp_join_ut.cpp b/ydb/core/kqp/ut/join/kqp_join_ut.cpp index fedaa77073ea..ed72f437ca9e 100644 --- a/ydb/core/kqp/ut/join/kqp_join_ut.cpp +++ b/ydb/core/kqp/ut/join/kqp_join_ut.cpp @@ -1303,6 +1303,177 @@ Y_UNIT_TEST_SUITE(KqpJoin) { UNIT_ASSERT(explain.GetAst().Contains("GraceJoinCore")); } + Y_UNIT_TEST(FullOuterJoinNotNullJoinKey) { + TKikimrRunner kikimr; + auto db = kikimr.GetTableClient(); + auto session = db.CreateSession().GetValueSync().GetSession(); + + { // init tables + AssertSuccessResult(session.ExecuteSchemeQuery(R"( + --!syntax_v1 + + CREATE TABLE left + ( + Key Int64 NOT NULL, + Value Int64, + PRIMARY KEY (Key) + ); + + CREATE TABLE right + ( + Key Int64 NOT NULL, + Value Int64, + PRIMARY KEY (Key) + ); + )").GetValueSync()); + + auto result = session.ExecuteDataQuery(R"( + --!syntax_v1 + + REPLACE INTO left (Key, Value) VALUES + (1, 10), + (2, 20), + (3, 30); + + REPLACE INTO right (Key, Value) VALUES + (1, 10), + (2, 200), + (3, 300), + (4, 40); + )", TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::SUCCESS); + } + + { + auto result = session.ExecuteDataQuery(R"( + --!syntax_v1 + + SELECT l.Key, l.Value, r.Key, r.Value FROM left as l FULL JOIN right as r + ON (l.Value = r.Value AND l.Key = r.Key) + ORDER BY l.Key, r.Key; + )", TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + CompareYson(R"([ + [#;#;[2];[200]]; + [#;#;[3];[300]]; + [#;#;[4];[40]]; + [[1];[10];[1];[10]]; + [[2];[20];#;#]; + [[3];[30];#;#] + ])", FormatResultSetYson(result.GetResultSet(0))); + } + } + + Y_UNIT_TEST_TWIN(AllowJoinsForComplexPredicates, StreamLookup) { + NKikimrConfig::TAppConfig appConfig; + appConfig.MutableTableServiceConfig()->SetEnableKqpDataQueryStreamIdxLookupJoin(StreamLookup); + appConfig.MutableTableServiceConfig()->SetOldLookupJoinBehaviour(false); + appConfig.MutableTableServiceConfig()->SetIdxLookupJoinPointsLimit(10); + //appConfig.MutableTableServiceConfig()->SetEnableKqpDataQueryStreamLookup(false); + + auto appsettings = TKikimrSettings().SetAppConfig(appConfig); + + TKikimrRunner kikimr(appsettings); + auto db = kikimr.GetTableClient(); + auto session = db.CreateSession().GetValueSync().GetSession(); + + NYdb::NTable::TExecDataQuerySettings settings; + settings.CollectQueryStats(ECollectQueryStatsMode::Profile); + + { + auto result = session.ExecuteDataQuery(R"( + --!syntax_v1 + + SELECT l.Fk21, l.Fk22, r.Key1, r.Key2, r.Name FROM Join1 as l JOIN Join2 as r + ON (l.Fk21 = r.Key1 AND l.Fk22 = r.Key2) + WHERE r.Key1 > 0 and r.Name > "" + ORDER BY l.Fk21 ASC, l.Fk22 ASC + )", TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + CompareYson(R"([ + [[101u];["One"];[101u];["One"];["Name1"]]; + [[101u];["Two"];[101u];["Two"];["Name1"]]; + [[103u];["One"];[103u];["One"];["Name1"]]; + [[105u];["One"];[105u];["One"];["Name2"]] + ])", FormatResultSetYson(result.GetResultSet(0))); + AssertTableReads(result, "/Root/Join2", 5); + UNIT_ASSERT(result.GetQueryPlan().Contains("Lookup")); + } + + { + auto result = session.ExecuteDataQuery(R"( + --!syntax_v1 + + SELECT l.Fk21, l.Fk22, r.Key1, r.Key2, r.Name FROM Join1 as l JOIN Join2 as r + ON (l.Fk21 = r.Key1 AND l.Fk22 = r.Key2) + WHERE r.Key1 = 101u and r.Key2 >= "One" and r.Key2 <= "Two" + ORDER BY l.Fk21 ASC, l.Fk22 ASC + )", TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + CompareYson(R"([ + [[101u];["One"];[101u];["One"];["Name1"]]; + [[101u];["Two"];[101u];["Two"];["Name1"]] + ])", FormatResultSetYson(result.GetResultSet(0))); + AssertTableReads(result, "/Root/Join2", 2); + UNIT_ASSERT(result.GetQueryPlan().Contains("Lookup")); + } + + { + auto result = session.ExecuteDataQuery(R"( + --!syntax_v1 + + SELECT l.Fk21, l.Fk22, r.Key1, r.Key2, r.Name FROM Join1 as l JOIN Join2 as r + ON (l.Fk21 = r.Key1 AND l.Fk22 = r.Key2) + WHERE r.Key1 >= 101u and r.Key1 <= 103u and r.Key2 >= "One" and r.Key2 <= "Two" + ORDER BY l.Fk21 ASC, l.Fk22 ASC + )", TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + CompareYson(R"([ + [[101u];["One"];[101u];["One"];["Name1"]]; + [[101u];["Two"];[101u];["Two"];["Name1"]]; + [[103u];["One"];[103u];["One"];["Name1"]] + ])", FormatResultSetYson(result.GetResultSet(0))); + AssertTableReads(result, "/Root/Join2", 3); + UNIT_ASSERT(result.GetQueryPlan().Contains("Lookup")); + } + + { + auto result = session.ExecuteDataQuery(R"( + --!syntax_v1 + + SELECT l.Fk21, l.Fk22, r.Key1, r.Key2, r.Name FROM Join1 as l JOIN Join2 as r + ON (l.Fk21 = r.Key1 AND l.Fk22 = r.Key2) + WHERE r.Key1 = 101u or r.Key1 = 105u + ORDER BY l.Fk21 ASC, l.Fk22 ASC + )", TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + CompareYson(R"([ + [[101u];["One"];[101u];["One"];["Name1"]]; + [[101u];["Two"];[101u];["Two"];["Name1"]]; + [[105u];["One"];[105u];["One"];["Name2"]] + ])", FormatResultSetYson(result.GetResultSet(0))); + AssertTableReads(result, "/Root/Join2", 3); + UNIT_ASSERT(result.GetQueryPlan().Contains("Lookup")); + } + + { + auto result = session.ExecuteDataQuery(R"( + --!syntax_v1 + + SELECT l.Fk21, l.Fk22, r.Key1, r.Key2, r.Name FROM Join1 as l JOIN Join2 as r + ON (l.Fk21 = r.Key1 AND l.Fk22 = r.Key2) + WHERE (r.Key1 = 101u AND r.Key2 = "One") OR r.Key1 = 105u + ORDER BY l.Fk21 ASC, l.Fk22 ASC + )", TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + CompareYson(R"([ + [[101u];["One"];[101u];["One"];["Name1"]]; + [[105u];["One"];[105u];["One"];["Name2"]] + ])", FormatResultSetYson(result.GetResultSet(0))); + AssertTableReads(result, "/Root/Join2", 2); + UNIT_ASSERT(result.GetQueryPlan().Contains("Lookup")); + } + } } } // namespace NKqp diff --git a/ydb/core/protos/table_service_config.proto b/ydb/core/protos/table_service_config.proto index 92fd3d3b1681..5207845e4028 100644 --- a/ydb/core/protos/table_service_config.proto +++ b/ydb/core/protos/table_service_config.proto @@ -273,4 +273,7 @@ message TTableServiceConfig { optional uint64 ExtractPredicateRangesLimit = 54 [default = 10000]; optional bool EnableOlapSink = 55 [default = false]; + + optional uint64 IdxLookupJoinPointsLimit = 58 [default = 1]; + optional bool OldLookupJoinBehaviour = 59 [default = true]; }; From 46c1851846b9b1e3fda556166727e368d54211ff Mon Sep 17 00:00:00 2001 From: Alexander Rutkovsky <alexvru@ydb.tech> Date: Fri, 7 Jun 2024 20:53:00 +0300 Subject: [PATCH 071/110] Fix SysView tests (merge from main #5117) (#5325) --- ydb/core/sys_view/ut_kqp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ydb/core/sys_view/ut_kqp.cpp b/ydb/core/sys_view/ut_kqp.cpp index bd930aa70402..aa59f8744186 100644 --- a/ydb/core/sys_view/ut_kqp.cpp +++ b/ydb/core/sys_view/ut_kqp.cpp @@ -974,7 +974,7 @@ Y_UNIT_TEST_SUITE(SystemView) { check.String("Default"); // Kind check.Uint64(env.GetServer().GetRuntime()->GetNodeId(0)); // NodeId check.Uint64(1u); // PDiskId - check.String("INIT_PENDING"); // Status + check.String("ERROR"); // Status check.Uint64(0u); // VDisk check.Uint64(1000u); // VSlotId } From 63b8e661b98321ecf871d14d85b45ef145cf021f Mon Sep 17 00:00:00 2001 From: Alexander Rutkovsky <alexvru@ydb.tech> Date: Fri, 7 Jun 2024 20:58:11 +0300 Subject: [PATCH 072/110] Merge BlobDepot monitoring fixes from main (#5284) --- ydb/core/blob_depot/assimilator.cpp | 184 +++++++++- ydb/core/blob_depot/assimilator.h | 12 + ydb/core/blob_depot/blob_depot.cpp | 4 + ydb/core/blob_depot/blob_depot_tablet.h | 31 ++ ydb/core/blob_depot/data_mon.cpp | 1 - ydb/core/blob_depot/defs.h | 1 + ydb/core/blob_depot/given_id_range.cpp | 1 + .../blob_depot/group_metrics_exchange.cpp | 37 +- ydb/core/blob_depot/mon_main.cpp | 336 +++++++++++++++++- ydb/core/blob_depot/mon_main.h | 58 +++ ydb/core/blob_depot/op_commit_blob_seq.cpp | 16 + ydb/core/blob_depot/ya.make | 2 + ydb/core/mind/bscontroller/config.cpp | 15 + ydb/core/mind/bscontroller/config.h | 1 + ydb/core/mind/bscontroller/defs.h | 1 + .../bscontroller/group_metrics_exchange.cpp | 5 + ydb/core/node_whiteboard/node_whiteboard.h | 12 +- ydb/core/protos/blobstorage.proto | 2 + ydb/core/protos/node_whiteboard.proto | 2 + ydb/core/tablet/node_whiteboard.cpp | 14 +- ydb/core/viewer/content/v2/storage.js | 17 +- ydb/core/viewer/content/v2/viewer.js | 5 +- 22 files changed, 696 insertions(+), 61 deletions(-) diff --git a/ydb/core/blob_depot/assimilator.cpp b/ydb/core/blob_depot/assimilator.cpp index a31fcc4c4207..5ad46d8f8e93 100644 --- a/ydb/core/blob_depot/assimilator.cpp +++ b/ydb/core/blob_depot/assimilator.cpp @@ -89,10 +89,12 @@ namespace NKikimr::NBlobDepot { if (stateBits & TStateBits::Blobs) { Load(&stream, SkipBlobsUpTo.emplace()); } + UpdateAssimilatorPosition(); } Become(&TThis::StateFunc); Action(); + UpdateBytesCopiedQ(); } void TAssimilator::PassAway() { @@ -115,8 +117,10 @@ namespace NKikimr::NBlobDepot { hFunc(TEvTabletPipe::TEvClientDestroyed, Handle); hFunc(TEvBlobStorage::TEvControllerGroupDecommittedResponse, Handle); cFunc(TEvPrivate::EvResume, Action); + cFunc(TEvPrivate::EvResumeScanDataForPlanning, HandleResumeScanDataForPlanning); cFunc(TEvPrivate::EvResumeScanDataForCopying, HandleResumeScanDataForCopying); fFunc(TEvPrivate::EvTxComplete, HandleTxComplete); + cFunc(TEvPrivate::EvUpdateBytesCopiedQ, UpdateBytesCopiedQ); cFunc(TEvents::TSystem::Poison, PassAway); default: @@ -133,7 +137,11 @@ namespace NKikimr::NBlobDepot { if (Self->DecommitState < EDecommitState::BlobsFinished) { SendAssimilateRequest(); } else if (Self->DecommitState < EDecommitState::BlobsCopied) { - ScanDataForCopying(); + if (PlanningComplete) { + ScanDataForCopying(); + } else { + ScanDataForPlanning(); + } } else if (Self->DecommitState == EDecommitState::BlobsCopied) { Y_ABORT_UNLESS(!PipeId); CreatePipe(); @@ -210,6 +218,7 @@ namespace NKikimr::NBlobDepot { Self->Self->Data->AddDataOnDecommit(blob, txc, this); Self->SkipBlobsUpTo.emplace(blob.Id); Self->Self->Data->LastAssimilatedBlobId = blob.Id; + Self->Self->JsonHandler.Invalidate(); BlocksFinished = BarriersFinished = true; // no blocks and no more barriers } @@ -226,6 +235,7 @@ namespace NKikimr::NBlobDepot { if (wasEmpty && decommitState < EDecommitState::BlobsFinished) { decommitState = EDecommitState::BlobsFinished; } + Self->Self->JsonHandler.Invalidate(); db.Table<Schema::Config>().Key(Schema::Config::Key::Value).Update( NIceDb::TUpdate<Schema::Config::DecommitState>(decommitState), @@ -255,6 +265,7 @@ namespace NKikimr::NBlobDepot { void Complete(const TActorContext&) override { Self->Self->Data->CommitTrash(this); + Self->UpdateAssimilatorPosition(); if (MoreData) { Self->Self->Execute(std::make_unique<TTxPutAssimilatedData>(*this)); @@ -281,7 +292,63 @@ namespace NKikimr::NBlobDepot { } } + void TAssimilator::ScanDataForPlanning() { + if (ResumeScanDataForPlanningInFlight) { + return; + } + + THPTimer timer; + ui32 numItems = 0; + bool timeout = false; + + if (!LastPlanScannedKey) { + ++Self->AsStats.CopyIteration; + Self->AsStats.BytesToCopy = 0; + Self->JsonHandler.Invalidate(); + } + + TData::TScanRange range{ + LastPlanScannedKey ? TData::TKey(*LastPlanScannedKey) : TData::TKey::Min(), + TData::TKey::Max(), + }; + Self->Data->ScanRange(range, nullptr, nullptr, [&](const TData::TKey& key, const TData::TValue& value) { + if (++numItems == 1000) { + numItems = 0; + if (TDuration::Seconds(timer.Passed()) >= TDuration::MilliSeconds(1)) { + timeout = true; + return false; + } + } + if (value.GoingToAssimilate) { + Self->AsStats.BytesToCopy += key.GetBlobId().BlobSize(); + Self->JsonHandler.Invalidate(); + } + LastPlanScannedKey.emplace(key.GetBlobId()); + return true; + }); + + if (timeout) { + ResumeScanDataForPlanningInFlight = true; + TActivationContext::Send(new IEventHandle(TEvPrivate::EvResumeScanDataForPlanning, 0, SelfId(), {}, nullptr, 0)); + return; + } + + ActionInProgress = false; + PlanningComplete = true; + Action(); + } + + void TAssimilator::HandleResumeScanDataForPlanning() { + Y_ABORT_UNLESS(ResumeScanDataForPlanningInFlight); + ResumeScanDataForPlanningInFlight = false; + ScanDataForPlanning(); + } + void TAssimilator::ScanDataForCopying() { + if (ResumeScanDataForCopyingInFlight) { + return; + } + STLOG(PRI_DEBUG, BLOB_DEPOT, BDT54, "TAssimilator::ScanDataForCopying", (Id, Self->GetLogId()), (LastScannedKey, LastScannedKey), (NumGetsUnprocessed, GetIdToUnprocessedPuts.size())); @@ -322,11 +389,8 @@ namespace NKikimr::NBlobDepot { (EntriesToProcess, EntriesToProcess), (Timeout, timeout), (NumGetsUnprocessed, GetIdToUnprocessedPuts.size())); if (timeout) { // timeout hit, reschedule work - if (!ResumeScanDataForCopyingInFlight) { - TActivationContext::Send(new IEventHandle(TEvPrivate::EvResumeScanDataForCopying, 0, SelfId(), {}, nullptr, 0)); - ResumeScanDataForCopyingInFlight = true; - } - break; + TActivationContext::Send(new IEventHandle(TEvPrivate::EvResumeScanDataForCopying, 0, SelfId(), {}, nullptr, 0)); + ResumeScanDataForCopyingInFlight = true; } else if (!ScanQ.empty()) { using TQuery = TEvBlobStorage::TEvGet::TQuery; const ui32 sz = ScanQ.size(); @@ -343,15 +407,18 @@ namespace NKikimr::NBlobDepot { GetIdToUnprocessedPuts.try_emplace(getId); ScanQ.clear(); TotalSize = 0; - } else if (!GetIdToUnprocessedPuts.empty()) { // there are some unprocessed get queries, still have to wait - break; + continue; + } else if (!GetIdToUnprocessedPuts.empty()) { + // there are some unprocessed get queries, still have to wait } else if (!EntriesToProcess) { // we have finished scanning the whole table without any entries, copying is done OnCopyDone(); - break; } else { // we have finished scanning, but we have replicated some data, restart scanning to ensure that nothing left LastScannedKey.reset(); - EntriesToProcess = false; + LastPlanScannedKey.reset(); + EntriesToProcess = PlanningComplete = ActionInProgress = false; + Action(); } + break; } } @@ -363,6 +430,8 @@ namespace NKikimr::NBlobDepot { void TAssimilator::Handle(TEvBlobStorage::TEvGetResult::TPtr ev) { auto& msg = *ev->Get(); + (msg.Status == NKikimrProto::OK ? Self->AsStats.LatestOkGet : Self->AsStats.LatestErrorGet) = TInstant::Now(); + Self->JsonHandler.Invalidate(); const auto it = GetIdToUnprocessedPuts.find(ev->Cookie); Y_ABORT_UNLESS(it != GetIdToUnprocessedPuts.end()); ui32 getBytes = 0; @@ -386,20 +455,29 @@ namespace NKikimr::NBlobDepot { ++it->second; } getBytes += resp.Id.BlobSize(); + ++Self->AsStats.BlobsReadOk; + Self->JsonHandler.Invalidate(); } else if (resp.Status == NKikimrProto::NODATA) { Self->Data->ExecuteTxCommitAssimilatedBlob(NKikimrProto::NODATA, TBlobSeqId(), TData::TKey(resp.Id), TEvPrivate::EvTxComplete, SelfId(), it->first); ++it->second; + ++Self->AsStats.BlobsReadNoData; + Self->AsStats.BytesToCopy -= resp.Id.BlobSize(); + Self->JsonHandler.Invalidate(); + } else { + ++Self->AsStats.BlobsReadError; + Self->JsonHandler.Invalidate(); + continue; } + Self->AsStats.LastReadBlobId = resp.Id; + Self->JsonHandler.Invalidate(); } if (getBytes) { Self->TabletCounters->Cumulative()[NKikimrBlobDepot::COUNTER_DECOMMIT_GET_BYTES] += getBytes; } if (!it->second) { GetIdToUnprocessedPuts.erase(it); - if (!ResumeScanDataForCopyingInFlight) { - ScanDataForCopying(); - } + ScanDataForCopying(); } } @@ -408,17 +486,23 @@ namespace NKikimr::NBlobDepot { Y_ABORT_UNLESS(it != GetIdToUnprocessedPuts.end()); if (!--it->second) { GetIdToUnprocessedPuts.erase(it); - if (!ResumeScanDataForCopyingInFlight) { - ScanDataForCopying(); - } + ScanDataForCopying(); } } void TAssimilator::Handle(TEvBlobStorage::TEvPutResult::TPtr ev) { auto& msg = *ev->Get(); + (msg.Status == NKikimrProto::OK ? Self->AsStats.LatestOkPut : Self->AsStats.LatestErrorPut) = TInstant::Now(); + Self->JsonHandler.Invalidate(); if (msg.Status == NKikimrProto::OK) { Self->TabletCounters->Cumulative()[NKikimrBlobDepot::COUNTER_DECOMMIT_PUT_OK_BYTES] += msg.Id.BlobSize(); + ++Self->AsStats.BlobsPutOk; + Self->AsStats.BytesToCopy -= msg.Id.BlobSize(); + Self->AsStats.BytesCopied += msg.Id.BlobSize(); + } else { + ++Self->AsStats.BlobsPutError; } + Self->JsonHandler.Invalidate(); const auto it = PutIdToKey.find(ev->Cookie); Y_ABORT_UNLESS(it != PutIdToKey.end()); const auto& [key, getId] = it->second; @@ -450,6 +534,7 @@ namespace NKikimr::NBlobDepot { db.Table<Schema::Config>().Key(Schema::Config::Key::Value).Update( NIceDb::TUpdate<Schema::Config::DecommitState>(Self->Self->DecommitState) ); + Self->Self->JsonHandler.Invalidate(); return true; } @@ -500,6 +585,7 @@ namespace NKikimr::NBlobDepot { bool Execute(TTransactionContext& txc, const TActorContext&) override { NIceDb::TNiceDb db(txc.DB); Self->DecommitState = EDecommitState::Done; + Self->JsonHandler.Invalidate(); db.Table<Schema::Config>().Key(Schema::Config::Key::Value).Update( NIceDb::TUpdate<Schema::Config::DecommitState>(Self->DecommitState) ); @@ -510,6 +596,7 @@ namespace NKikimr::NBlobDepot { }; Self->GroupAssimilatorId = {}; + Self->JsonHandler.Invalidate(); Self->Execute(std::make_unique<TTxFinishDecommission>(this)); PassAway(); } else { @@ -540,6 +627,70 @@ namespace NKikimr::NBlobDepot { return stream.Str(); } + void TAssimilator::UpdateAssimilatorPosition() const { + Self->AsStats.SkipBlocksUpTo = SkipBlocksUpTo; + Self->AsStats.SkipBarriersUpTo = SkipBarriersUpTo; + Self->AsStats.SkipBlobsUpTo = SkipBlobsUpTo; + Self->JsonHandler.Invalidate(); + } + + void TAssimilator::UpdateBytesCopiedQ() { + while (BytesCopiedQ.size() >= 3) { + BytesCopiedQ.pop_front(); + } + BytesCopiedQ.emplace_back(TActivationContext::Monotonic(), Self->AsStats.BytesCopied); + + Self->AsStats.CopySpeed = 0; + Self->AsStats.CopyTimeRemaining = TDuration::Max(); + + if (BytesCopiedQ.size() > 1) { + const auto& [frontTs, frontBytes] = BytesCopiedQ.front(); + const auto& [backTs, backBytes] = BytesCopiedQ.back(); + const TDuration deltaTs = backTs - frontTs; + const ui64 deltaBytes = backBytes - frontBytes; + if (deltaTs != TDuration::Zero()) { + Self->AsStats.CopySpeed = deltaBytes * 1'000'000 / deltaTs.MicroSeconds(); + } + if (deltaBytes) { + Self->AsStats.CopyTimeRemaining = TDuration::MicroSeconds(Self->AsStats.BytesToCopy * + deltaTs.MicroSeconds() / deltaBytes); + } + } + + Self->JsonHandler.Invalidate(); + TActivationContext::Schedule(TDuration::Seconds(1), new IEventHandle(TEvPrivate::EvUpdateBytesCopiedQ, 0, + SelfId(), {}, nullptr, 0)); + } + + void TBlobDepot::TAsStats::ToJson(NJson::TJsonValue& json, bool pretty) const { + auto formatSize = [&](ui64 size) { return pretty ? FormatByteSize(size) : ToString(size); }; + + json["d.skip_blocks_up_to"] = SkipBlocksUpTo + ? ToString(*SkipBlocksUpTo) + : "<null>"; + json["d.skip_barriers_up_to"] = SkipBarriersUpTo + ? TStringBuilder() << std::get<0>(*SkipBarriersUpTo) << ':' << (int)std::get<1>(*SkipBarriersUpTo) + : "<null>"_sb; + json["d.skip_blobs_up_to"] = SkipBlobsUpTo + ? SkipBlobsUpTo->ToString() + : "<null>"; + json["d.latest_error_get"] = LatestErrorGet.ToString(); + json["d.latest_ok_get"] = LatestOkGet.ToString(); + json["d.latest_error_put"] = LatestErrorPut.ToString(); + json["d.latest_ok_put"] = LatestOkPut.ToString(); + json["d.last_read_blob_id"] = LastReadBlobId.ToString(); + json["d.bytes_to_copy"] = formatSize(BytesToCopy); + json["d.bytes_copied"] = formatSize(BytesCopied); + json["d.copy_speed"] = TStringBuilder() << formatSize(CopySpeed) << "/s"; + json["d.copy_time_remaining"] = TStringBuilder() << CopyTimeRemaining; + json["d.blobs_read_ok"] = ToString(BlobsReadOk); + json["d.blobs_read_nodata"] = ToString(BlobsReadNoData); + json["d.blobs_read_error"] = ToString(BlobsReadError); + json["d.blobs_put_ok"] = ToString(BlobsPutOk); + json["d.blobs_put_error"] = ToString(BlobsPutError); + json["d.copy_iteration"] = ToString(CopyIteration); + } + void TBlobDepot::TData::ExecuteTxCommitAssimilatedBlob(NKikimrProto::EReplyStatus status, TBlobSeqId blobSeqId, TData::TKey key, ui32 notifyEventType, TActorId parentId, ui64 cookie, bool keep, bool doNotKeep) { Self->Execute(std::make_unique<TTxCommitAssimilatedBlob>(Self, status, blobSeqId, std::move(key), @@ -551,6 +702,7 @@ namespace NKikimr::NBlobDepot { Y_ABORT_UNLESS(!GroupAssimilatorId); Y_ABORT_UNLESS(Data->IsLoaded()); GroupAssimilatorId = RegisterWithSameMailbox(new TGroupAssimilator(this)); + JsonHandler.Invalidate(); } } diff --git a/ydb/core/blob_depot/assimilator.h b/ydb/core/blob_depot/assimilator.h index 7e4b570bcb63..d0e757e5eaee 100644 --- a/ydb/core/blob_depot/assimilator.h +++ b/ydb/core/blob_depot/assimilator.h @@ -10,8 +10,10 @@ namespace NKikimr::NBlobDepot { struct TEvPrivate { enum { EvResume = EventSpaceBegin(TEvents::ES_PRIVATE), + EvResumeScanDataForPlanning, EvResumeScanDataForCopying, EvTxComplete, + EvUpdateBytesCopiedQ, }; }; @@ -42,6 +44,12 @@ namespace NKikimr::NBlobDepot { bool ActionInProgress = false; bool ResumeScanDataForCopyingInFlight = false; + std::optional<TLogoBlobID> LastPlanScannedKey; + bool PlanningComplete = false; + bool ResumeScanDataForPlanningInFlight = false; + + std::deque<std::tuple<TMonotonic, ui64>> BytesCopiedQ; + public: static constexpr NKikimrServices::TActivity::EType ActorActivityType() { return NKikimrServices::TActivity::BLOB_DEPOT_ASSIMILATOR_ACTOR; @@ -62,6 +70,8 @@ namespace NKikimr::NBlobDepot { void Action(); void SendAssimilateRequest(); void Handle(TEvBlobStorage::TEvAssimilateResult::TPtr ev); + void ScanDataForPlanning(); + void HandleResumeScanDataForPlanning(); void ScanDataForCopying(); void HandleResumeScanDataForCopying(); void Handle(TEvBlobStorage::TEvGetResult::TPtr ev); @@ -73,6 +83,8 @@ namespace NKikimr::NBlobDepot { void Handle(TEvTabletPipe::TEvClientDestroyed::TPtr ev); void Handle(TEvBlobStorage::TEvControllerGroupDecommittedResponse::TPtr ev); TString SerializeAssimilatorState() const; + void UpdateAssimilatorPosition() const; + void UpdateBytesCopiedQ(); }; } // NKikimrBlobDepot::NBlobDepot diff --git a/ydb/core/blob_depot/blob_depot.cpp b/ydb/core/blob_depot/blob_depot.cpp index 32eb8d5ff97c..19cc2596242d 100644 --- a/ydb/core/blob_depot/blob_depot.cpp +++ b/ydb/core/blob_depot/blob_depot.cpp @@ -22,6 +22,7 @@ namespace NKikimr::NBlobDepot { , BarrierServer(new TBarrierServer(this)) , Data(new TData(this)) , SpaceMonitor(new TSpaceMonitor(this)) + , JsonHandler(std::bind(&TBlobDepot::RenderJson, this, std::placeholders::_1), TEvPrivate::EvJsonTimer, TEvPrivate::EvJsonUpdate) {} TBlobDepot::~TBlobDepot() @@ -128,6 +129,9 @@ namespace NKikimr::NBlobDepot { hFunc(TEvBlobStorage::TEvControllerGroupMetricsExchange, Handle); cFunc(TEvPrivate::EvUpdateThroughputs, UpdateThroughputs); + cFunc(TEvPrivate::EvJsonTimer, JsonHandler.HandleTimer); + cFunc(TEvPrivate::EvJsonUpdate, JsonHandler.HandleUpdate); + default: if (!HandleDefaultEvents(ev, SelfId())) { Y_ABORT("unexpected event Type# 0x%08" PRIx32, type); diff --git a/ydb/core/blob_depot/blob_depot_tablet.h b/ydb/core/blob_depot/blob_depot_tablet.h index c0b6efa3e08d..c41cc1b03c2f 100644 --- a/ydb/core/blob_depot/blob_depot_tablet.h +++ b/ydb/core/blob_depot/blob_depot_tablet.h @@ -4,6 +4,7 @@ #include "events.h" #include "types.h" #include "schema.h" +#include "mon_main.h" namespace NKikimr::NTesting { @@ -29,6 +30,8 @@ namespace NKikimr::NBlobDepot { EvKickSpaceMonitor, EvUpdateThroughputs, EvDeliver, + EvJsonTimer, + EvJsonUpdate, }; }; @@ -167,6 +170,7 @@ namespace NKikimr::NBlobDepot { } void StartOperation() { + JsonHandler.Setup(SelfId(), Executor()->Generation()); InitChannelKinds(); DoGroupMetricsExchange(); ProcessRegisterAgentQ(); @@ -278,9 +282,12 @@ namespace NKikimr::NBlobDepot { class TTxMonData; + TJsonHandler JsonHandler; + bool OnRenderAppHtmlPage(NMon::TEvRemoteHttpInfo::TPtr ev, const TActorContext&) override; void RenderMainPage(IOutputStream& s); + NJson::TJsonValue RenderJson(bool pretty); //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Group assimilation @@ -288,6 +295,28 @@ namespace NKikimr::NBlobDepot { TActorId GroupAssimilatorId; EDecommitState DecommitState = EDecommitState::Default; std::optional<TString> AssimilatorState; + struct TAsStats { + std::optional<ui64> SkipBlocksUpTo; + std::optional<std::tuple<ui64, ui8>> SkipBarriersUpTo; + std::optional<TLogoBlobID> SkipBlobsUpTo; + TInstant LatestErrorGet; + TInstant LatestOkGet; + TInstant LatestErrorPut; + TInstant LatestOkPut; + TLogoBlobID LastReadBlobId; + ui64 BytesToCopy = 0; + ui64 BytesCopied = 0; + ui64 CopySpeed = 0; + TDuration CopyTimeRemaining = TDuration::Max(); + ui64 BlobsReadOk = 0; + ui64 BlobsReadNoData = 0; + ui64 BlobsReadError = 0; + ui64 BlobsPutOk = 0; + ui64 BlobsPutError = 0; + ui32 CopyIteration = 0; + + void ToJson(NJson::TJsonValue& json, bool pretty) const; + } AsStats; class TGroupAssimilator; @@ -299,6 +328,8 @@ namespace NKikimr::NBlobDepot { ui64 BytesRead = 0; ui64 BytesWritten = 0; std::deque<std::tuple<TMonotonic, ui64, ui64>> MetricsQ; + ui64 ReadThroughput = 0; + ui64 WriteThroughput = 0; void DoGroupMetricsExchange(); void Handle(TEvBlobStorage::TEvControllerGroupMetricsExchange::TPtr ev); diff --git a/ydb/core/blob_depot/data_mon.cpp b/ydb/core/blob_depot/data_mon.cpp index 9a286b67813e..174ca8a53e6e 100644 --- a/ydb/core/blob_depot/data_mon.cpp +++ b/ydb/core/blob_depot/data_mon.cpp @@ -15,7 +15,6 @@ namespace NKikimr::NBlobDepot { DIV_CLASS("panel-body") { KEYVALUE_TABLE({ KEYVALUE_P("Loaded", Loaded ? "true" : "false"); - KEYVALUE_P("Last assimilated blob id", LastAssimilatedBlobId ? LastAssimilatedBlobId->ToString() : "<null>"); KEYVALUE_P("Data size, number of keys", Data.size()); KEYVALUE_P("RefCount size, number of blobs", RefCount.size()); KEYVALUE_P("Total stored data size, bytes", FormatByteSize(TotalStoredDataSize)); diff --git a/ydb/core/blob_depot/defs.h b/ydb/core/blob_depot/defs.h index bd9fbc66ddac..72360877fc89 100644 --- a/ydb/core/blob_depot/defs.h +++ b/ydb/core/blob_depot/defs.h @@ -19,5 +19,6 @@ #include <ydb/core/util/stlog.h> #include <library/cpp/monlib/service/pages/templates.h> +#include <library/cpp/json/json_writer.h> #include <util/generic/va_args.h> diff --git a/ydb/core/blob_depot/given_id_range.cpp b/ydb/core/blob_depot/given_id_range.cpp index fc56b348e397..75073a23a9e5 100644 --- a/ydb/core/blob_depot/given_id_range.cpp +++ b/ydb/core/blob_depot/given_id_range.cpp @@ -43,6 +43,7 @@ namespace NKikimr::NBlobDepot { Y_ABORT_UNLESS(it != Ranges.end()); TChunk& chunk = it->second; const size_t offset = value % BitsPerChunk; + Y_DEBUG_ABORT_UNLESS(chunk[offset]); chunk.Reset(offset); --NumAvailableItems; if (chunk.Empty()) { diff --git a/ydb/core/blob_depot/group_metrics_exchange.cpp b/ydb/core/blob_depot/group_metrics_exchange.cpp index 6fbb75eee5f2..e9810bf0089b 100644 --- a/ydb/core/blob_depot/group_metrics_exchange.cpp +++ b/ydb/core/blob_depot/group_metrics_exchange.cpp @@ -81,12 +81,16 @@ namespace NKikimr::NBlobDepot { } } - auto ev = std::make_unique<NNodeWhiteboard::TEvWhiteboard::TEvBSGroupStateUpdate>(); - auto& wb = ev->Record; - wb.SetGroupID(Config.GetVirtualGroupId()); - wb.SetAllocatedSize(Data->GetTotalStoredDataSize()); - wb.SetAvailableSize(params->GetAvailableSize()); - Send(NNodeWhiteboard::MakeNodeWhiteboardServiceId(SelfId().NodeId()), ev.release()); + auto *wb = record.MutableWhiteboardUpdate(); + wb->SetGroupID(Config.GetVirtualGroupId()); + wb->SetAllocatedSize(Data->GetTotalStoredDataSize()); + wb->SetAvailableSize(params->GetAvailableSize()); + wb->SetReadThroughput(ReadThroughput); + wb->SetWriteThroughput(WriteThroughput); + + if (ReadyForAgentQueries()) { + wb->SetBlobDepotOnlineTime(TInstant::Now().MilliSeconds()); + } params->SetAllocatedSize(Data->GetTotalStoredDataSize()); Send(MakeBlobStorageNodeWardenID(SelfId().NodeId()), response.release()); @@ -103,7 +107,9 @@ namespace NKikimr::NBlobDepot { const auto& record = ev->Get()->Record; BytesRead += record.GetBytesRead(); BytesWritten += record.GetBytesWritten(); - MetricsQ.emplace_back(TActivationContext::Monotonic(), BytesRead, BytesWritten); + if (Config.HasVirtualGroupId()) { + MetricsQ.emplace_back(TActivationContext::Monotonic(), BytesRead, BytesWritten); + } UpdateThroughputs(false); } @@ -128,24 +134,17 @@ namespace NKikimr::NBlobDepot { } } - ui64 readThroughput = 0; - ui64 writeThroughput = 0; const auto& [ts, read, written] = MetricsQ.front(); if (ts + TDuration::Seconds(1) < now) { - readThroughput = (BytesRead - read) * 1'000'000 / (now - ts).MicroSeconds(); - writeThroughput = (BytesWritten - written) * 1'000'000 / (now - ts).MicroSeconds(); + ReadThroughput = (BytesRead - read) * 1'000'000 / (now - ts).MicroSeconds(); + WriteThroughput = (BytesWritten - written) * 1'000'000 / (now - ts).MicroSeconds(); + } else { + ReadThroughput = WriteThroughput = 0; } - - auto ev = std::make_unique<NNodeWhiteboard::TEvWhiteboard::TEvBSGroupStateUpdate>(); - auto& wb = ev->Record; - wb.SetGroupID(Config.GetVirtualGroupId()); - wb.SetReadThroughput(readThroughput); - wb.SetWriteThroughput(writeThroughput); - Send(NNodeWhiteboard::MakeNodeWhiteboardServiceId(SelfId().NodeId()), ev.release()); } if (reschedule) { - TActivationContext::Schedule(TDuration::Seconds(1), new IEventHandle(TEvPrivate::EvUpdateThroughputs, 0, + TActivationContext::Schedule(Window, new IEventHandle(TEvPrivate::EvUpdateThroughputs, 0, SelfId(), {}, nullptr, 0)); } } diff --git a/ydb/core/blob_depot/mon_main.cpp b/ydb/core/blob_depot/mon_main.cpp index 2953d187e48b..fd3ac234e1d9 100644 --- a/ydb/core/blob_depot/mon_main.cpp +++ b/ydb/core/blob_depot/mon_main.cpp @@ -379,7 +379,11 @@ namespace NKikimr::NBlobDepot { TStringStream s; const TCgiParameters& cgi = ev->Get()->Cgi(); - if (cgi.Has("page")) { + + if (cgi.Has("json")) { + JsonHandler.ProcessRenderPage(cgi, ev->Sender, ev->Cookie); + return true; + } else if (cgi.Has("page")) { const TString& page = cgi.Get("page"); if (page == "data") { Execute(std::make_unique<TTxMonData>(this, ev)); @@ -405,6 +409,66 @@ namespace NKikimr::NBlobDepot { HTML(s) { s << "<a href='app?TabletID=" << TabletID() << "&page=data'>Contained data</a><br>"; + s << R"(<script> +function ready() { + doFetch(); +} + +function doFetch(gen, sequence) { + var p = { + "TabletID": ")" << TabletID() << R"(", + "json": 1, + "pretty": 1 + }; + if (gen !== undefined) { + p.generation = gen; + } + if (sequence !== undefined) { + p.sequence = sequence; + } + const params = new URLSearchParams(p); + var url = "app?" + params.toString(); + fetch(url) + .then((r) => { + try { + return r.json(); + } catch { + document.getElementById("error").textContent = "failed to fetch JSON"; + } + }) + .then((json) => { processJson(json); }); +} + +function processJson(json) { + //console.log("received " + JSON.stringify(json)); + if (json.error !== undefined) { + alert("json error: " + json.error); + location.reload(); + return; + } else if (!json.no_change) { + var data = json.data; + if (data !== undefined) { + for (const key in data) { + var elem = document.getElementById(key); + if (elem) { + elem.textContent = data[key]; + } else { + console.log("element not found: " + key); + } + } + } + } + doFetch(json.generation, json.sequence); +} + +document.addEventListener("DOMContentLoaded", ready); +</script> +)"; + +#define UP(NAME, VALUE) "<div class=synced id=" << NAME << '>' << VALUE << "</div>" + + s << "<strong><font color='red'><div id='error'/></font></strong>"; + DIV_CLASS("panel panel-info") { DIV_CLASS("panel-heading") { s << "Stats"; @@ -412,25 +476,19 @@ namespace NKikimr::NBlobDepot { DIV_CLASS("panel-body") { KEYVALUE_TABLE({ - TABLER() { - TABLED() { s << "Data, bytes"; } - TABLED() { - ui64 total = 0; - Data->EnumerateRefCount([&](TLogoBlobID id, ui32 /*refCount*/) { - total += id.BlobSize(); - }); - s << FormatByteSize(total); - } - } - + ui64 total = 0; ui64 trashInFlight = 0; ui64 trashPending = 0; + Data->EnumerateRefCount([&](TLogoBlobID id, ui32 /*refCount*/) { + total += id.BlobSize(); + }); Data->EnumerateTrash([&](ui32 /*groupId*/, TLogoBlobID id, bool inFlight) { (inFlight ? trashInFlight : trashPending) += id.BlobSize(); }); - KEYVALUE_P("Trash in flight, bytes", FormatByteSize(trashInFlight)); - KEYVALUE_P("Trash pending, bytes", FormatByteSize(trashPending)); + KEYVALUE_UP("Data, bytes", "data", FormatByteSize(total)); + KEYVALUE_UP("Trash in flight, bytes", "trash_in_flight", FormatByteSize(trashInFlight)); + KEYVALUE_UP("Trash pending, bytes", "trash_pending", FormatByteSize(trashPending)); std::vector<ui32> groups; for (const auto& [groupId, _] : Groups) { @@ -439,12 +497,51 @@ namespace NKikimr::NBlobDepot { std::sort(groups.begin(), groups.end()); for (const ui32 groupId : groups) { TGroupInfo& group = Groups[groupId]; - KEYVALUE_P(TStringBuilder() << "Data in GroupId# " << groupId << ", bytes", - FormatByteSize(group.AllocatedBytes)); + KEYVALUE_UP(TStringBuilder() << "Data in GroupId# " << groupId << ", bytes", + 'g' << groupId, FormatByteSize(group.AllocatedBytes)); } }) } } + + if (Configured && Config.GetIsDecommittingGroup()) { + DIV_CLASS("panel panel-info") { + DIV_CLASS("panel-heading") { + s << "Decommission"; + } + DIV_CLASS("panel-body") { + KEYVALUE_TABLE({ + KEYVALUE_UP("Decommit state", "d.state", DecommitState); + KEYVALUE_UP("Assimilator state", "d.running", GroupAssimilatorId ? "running" : "stopped"); + KEYVALUE_UP("Last assimilated blob id", "d.last_assimilated_blob_id", + Data->LastAssimilatedBlobId ? Data->LastAssimilatedBlobId->ToString() : "<null>"); + KEYVALUE_UP("Skip blocks up to", "d.skip_blocks_up_to", + AsStats.SkipBlocksUpTo ? ToString(*AsStats.SkipBlocksUpTo) : "<null>"); + KEYVALUE_UP("Skip barriers up to", "d.skip_barriers_up_to", + AsStats.SkipBarriersUpTo ? TStringBuilder() << std::get<0>(*AsStats.SkipBarriersUpTo) + << ':' << (int)std::get<1>(*AsStats.SkipBarriersUpTo) : "<null>"_sb); + KEYVALUE_UP("Skip blobs up to", "d.skip_blobs_up_to", + AsStats.SkipBlobsUpTo ? AsStats.SkipBlobsUpTo->ToString() : "<null>"); + KEYVALUE_UP("Copy iteration", "d.copy_iteration", AsStats.CopyIteration); + KEYVALUE_UP("Bytes to copy", "d.bytes_to_copy", FormatByteSize(AsStats.BytesToCopy)); + KEYVALUE_UP("Bytes already copied", "d.bytes_copied", FormatByteSize(AsStats.BytesCopied)); + KEYVALUE_UP("Copy speed, bytes per second", "d.copy_speed", FormatByteSize(AsStats.CopySpeed) + "/s"); + KEYVALUE_UP("Copy time remaining", "d.copy_time_remaining", AsStats.CopyTimeRemaining); + KEYVALUE_UP("Last read blob id", "d.last_read_blob_id", AsStats.LastReadBlobId); + KEYVALUE_UP("Latest successful get", "d.latest_ok_get", AsStats.LatestOkGet); + KEYVALUE_UP("Latest erroneous get", "d.latest_error_get", AsStats.LatestErrorGet); + KEYVALUE_UP("Latest successful put", "d.latest_ok_put", AsStats.LatestOkPut); + KEYVALUE_UP("Latest erroneous put", "d.latest_error_put", AsStats.LatestErrorPut); + KEYVALUE_UP("Blobs read with OK", "d.blobs_read_ok", AsStats.BlobsReadOk); + KEYVALUE_UP("Blobs read with NODATA", "d.blobs_read_nodata", AsStats.BlobsReadNoData); + KEYVALUE_UP("Blobs read with error", "d.blobs_read_error", AsStats.BlobsReadError); + KEYVALUE_UP("Blobs put with OK", "d.blobs_put_ok", AsStats.BlobsPutOk); + KEYVALUE_UP("Blobs put with error", "d.blobs_put_error", AsStats.BlobsPutError); + }) + } + } + } + DIV_CLASS("panel panel-info") { DIV_CLASS("panel-heading") { s << "Data"; @@ -456,4 +553,211 @@ namespace NKikimr::NBlobDepot { } } + NJson::TJsonValue TBlobDepot::RenderJson(bool pretty) { + NJson::TJsonMap json; + + const auto formatSize = [&](ui64 size) -> NJson::TJsonValue { + if (pretty) { + return FormatByteSize(size); + } else { + return size; + } + }; + + ui64 total = 0; + ui64 trashInFlight = 0; + ui64 trashPending = 0; + Data->EnumerateRefCount([&](TLogoBlobID id, ui32 /*refCount*/) { + total += id.BlobSize(); + }); + Data->EnumerateTrash([&](ui32 /*groupId*/, TLogoBlobID id, bool inFlight) { + (inFlight ? trashInFlight : trashPending) += id.BlobSize(); + }); + + NJson::TJsonMap data{ + {"data", formatSize(total)}, + {"trash_in_flight", formatSize(trashInFlight)}, + {"trash_pending", formatSize(trashPending)}, + }; + + for (const auto& [groupId, group] : Groups) { + data[TStringBuilder() << "g" << groupId] = formatSize(group.AllocatedBytes); + } + + if (Configured && Config.GetIsDecommittingGroup()) { + data["d.running"] = GroupAssimilatorId ? "running" : "stopped"; + data["d.state"] = TStringBuilder() << DecommitState; + data["d.last_assimilated_blob_id"] = Data->LastAssimilatedBlobId ? Data->LastAssimilatedBlobId->ToString() : "<null>"; + AsStats.ToJson(data, pretty); + } + + json["data"] = std::move(data); + + return json; + } + + TJsonHandler::TJsonHandler(TRenderJson renderJson, ui32 timerEv, ui32 updateEv) + : RenderJson(renderJson) + , TimerEv(timerEv) + , UpdateEv(updateEv) + {} + + void TJsonHandler::Setup(TActorId selfId, ui32 generation) { + SelfId = selfId; + Generation = generation; + } + + void TJsonHandler::ProcessRenderPage(const TCgiParameters& cgi, TActorId sender, ui64 cookie) { + const TMonotonic now = TActivationContext::Monotonic(); + + auto issueResponse = [&](const NJson::TJsonValue& json) { + TStringStream s; + NJson::WriteJson(&s, &json); + TActivationContext::Send(new IEventHandle(sender, SelfId, new NMon::TEvRemoteJsonInfoRes(s.Str()), 0, cookie)); + }; + + auto issueError = [&](TString message) { + issueResponse(NJson::TJsonMap{{"error", std::move(message)}}); + }; + + if (!cgi.Has("pretty")) { + return issueResponse(RenderJson(false)); + } + + UpdateHistory(now); + + if (cgi.Has("generation")) { + ui32 gen; + if (!TryFromString(cgi.Get("generation"), gen)) { + return issueError("incorrect 'generation' parameter"); + } else if (gen != Generation) { + return issueError("generation mismatch"); + } + } + + if (cgi.Has("sequence")) { + ui64 seq; + if (!TryFromString(cgi.Get("sequence"), seq)) { + return issueError("incorrect 'sequence' parameter"); + } else if (seq == Sequence) { + const TMonotonic when = now + LongPollTimeout; + LongPolls.emplace_back(when, sender, cookie, seq); + if (!LongPollTimerPending) { + TActivationContext::Schedule(when, new IEventHandle(TimerEv, 0, SelfId, {}, nullptr, 0)); + LongPollTimerPending = true; + } + return; + } else { + return IssueResponse({TMonotonic(), sender, cookie, seq}); + } + } + + IssueResponse({TMonotonic(), sender, cookie, 0}); + } + + void TJsonHandler::Invalidate() { + Invalid = true; + if (!LongPolls.empty() && !UpdateTimerPending) { + const TMonotonic when = LastUpdatedTimestamp + UpdateTimeout; + TActivationContext::Schedule(when, new IEventHandle(UpdateEv, 0, SelfId, {}, nullptr, 0)); + UpdateTimerPending = true; + } + } + + void TJsonHandler::HandleTimer() { + Y_ABORT_UNLESS(LongPollTimerPending); + + NJson::TJsonMap json{{"no_change", true}, {"generation", Generation}, {"sequence", Sequence}}; + TStringStream s; + NJson::WriteJson(&s, &json); + + const TMonotonic now = TActivationContext::Monotonic(); + for (; !LongPolls.empty() && LongPolls.front().When <= now; LongPolls.pop_front()) { + const auto& item = LongPolls.front(); + TActivationContext::Send(new IEventHandle(item.Sender, SelfId, new NMon::TEvRemoteJsonInfoRes(s.Str()), 0, item.Cookie)); + } + + if (LongPolls.empty()) { + LongPollTimerPending = false; + } else { + TActivationContext::Schedule(LongPolls.front().When, new IEventHandle(TimerEv, 0, SelfId, {}, nullptr, 0)); + } + } + + void TJsonHandler::HandleUpdate() { + Y_ABORT_UNLESS(UpdateTimerPending); + UpdateTimerPending = false; + if (!LongPolls.empty()) { + UpdateHistory(TActivationContext::Monotonic()); + } + } + + void TJsonHandler::UpdateHistory(TMonotonic now) { + if (LastUpdatedTimestamp + UpdateTimeout <= now && Invalid) { + NJson::TJsonValue json = RenderJson(true); + json["generation"] = Generation; + json["sequence"] = Sequence; + if (History.empty() || json != History.back().Json) { + json["sequence"] = ++Sequence; + History.emplace_back(THistory{Sequence, std::move(json)}); + while (History.size() > 3) { + History.pop_front(); + } + + TStringStream s; + NJson::WriteJson(&s, &History.back().Json); + + for (const auto& lp : LongPolls) { + IssueResponse(lp); + } + LongPolls.clear(); + } + + LastUpdatedTimestamp = now; + Invalid = false; + } + if (Invalid && !UpdateTimerPending) { + const TMonotonic when = LastUpdatedTimestamp + UpdateTimeout; + TActivationContext::Schedule(when, new IEventHandle(UpdateEv, 0, SelfId, {}, nullptr, 0)); + UpdateTimerPending = true; + } + } + + void TJsonHandler::IssueResponse(const TLongPoll& lp) { + const NJson::TJsonValue *base = nullptr; + + if (lp.BaseSequence) { + auto comp = [](const THistory& item, ui64 sequence) { return item.Sequence < sequence; }; + auto it = std::lower_bound(History.begin(), History.end(), lp.BaseSequence, comp); + if (it != History.end() && it->Sequence == lp.BaseSequence) { + base = &it->Json; + } + } + + Y_ABORT_UNLESS(!History.empty()); + + auto issueResponse = [&](const NJson::TJsonValue& json) { + TStringStream s; + NJson::WriteJson(&s, &json); + TActivationContext::Send(new IEventHandle(lp.Sender, SelfId, new NMon::TEvRemoteJsonInfoRes(s.Str()), 0, + lp.Cookie)); + }; + + if (base) { + NJson::TJsonValue response = History.back().Json; + const auto& baseMap = (*base)["data"].GetMapSafe(); + auto& map = response["data"].GetMapSafe(); + for (auto it = map.begin(); it != map.end(); ) { + if (const auto jt = baseMap.find(it->first); jt != baseMap.end() && jt->second == it->second) { + map.erase(it++); + } else { + ++it; + } + } + issueResponse(response); + } else { + issueResponse(History.back().Json); + } + } + } // NKikimr::NBlobDepot diff --git a/ydb/core/blob_depot/mon_main.h b/ydb/core/blob_depot/mon_main.h index b9aa0fd39bc9..499adda38cad 100644 --- a/ydb/core/blob_depot/mon_main.h +++ b/ydb/core/blob_depot/mon_main.h @@ -23,6 +23,14 @@ namespace NKikimr::NBlobDepot { TABLED() { __stream << (VALUE); } \ } + #define KEYVALUE_UP(KEY, NAME, VALUE) \ + TABLER() { \ + TABLED() { __stream << (KEY); } \ + TABLED() { \ + __stream << "<div class=synced id=" << NAME << '>' << (VALUE) << "</div>"; \ + } \ + } + inline TString FormatByteSize(ui64 size) { static const char *suffixes[] = {"B", "KiB", "MiB", "GiB", "TiB", "PiB", nullptr}; TStringStream s; @@ -30,4 +38,54 @@ namespace NKikimr::NBlobDepot { return s.Str(); } + class TJsonHandler { + public: + using TRenderJson = std::function<NJson::TJsonValue(bool pretty)>; + + private: + struct THistory { + ui64 Sequence; + NJson::TJsonValue Json; + }; + + struct TLongPoll { + TMonotonic When; + TActorId Sender; + ui64 Cookie; + ui64 BaseSequence; + }; + + private: + TRenderJson RenderJson; + ui32 TimerEv; + ui32 UpdateEv; + TActorId SelfId; + ui32 Generation; + std::deque<THistory> History; + ui64 Sequence = 0; + bool Invalid = true; + TMonotonic LastUpdatedTimestamp; + std::deque<TLongPoll> LongPolls; + bool LongPollTimerPending = false; + bool UpdateTimerPending = false; + + const TDuration LongPollTimeout = TDuration::Seconds(10); + const TDuration UpdateTimeout = TDuration::MilliSeconds(750); + + public: + TJsonHandler(TRenderJson renderJson, ui32 timerEv, ui32 updateEv); + + void Setup(TActorId selfId, ui32 generation); + + void ProcessRenderPage(const TCgiParameters& cgi, TActorId sender, ui64 cookie); + void Invalidate(); // called then RenderJson may generate another value + + void HandleTimer(); + void HandleUpdate(); + + private: + void UpdateHistory(TMonotonic now); + void IssueResponse(const TLongPoll& lp); + }; + } // NKikimr::NBlobDepot diff --git a/ydb/core/blob_depot/op_commit_blob_seq.cpp b/ydb/core/blob_depot/op_commit_blob_seq.cpp index 5011438d8932..e7aa4f6ec1f4 100644 --- a/ydb/core/blob_depot/op_commit_blob_seq.cpp +++ b/ydb/core/blob_depot/op_commit_blob_seq.cpp @@ -14,6 +14,8 @@ namespace NKikimr::NBlobDepot { std::unique_ptr<IEventHandle> Response; std::vector<TBlobSeqId> BlobSeqIds; std::set<TBlobSeqId> FailedBlobSeqIds; + std::set<TBlobSeqId> CanBeCollectedBlobSeqIds; + std::set<TBlobSeqId> AllowedBlobSeqIds; public: TTxType GetTxType() const override { return NKikimrBlobDepot::TXTYPE_COMMIT_BLOB_SEQ; } @@ -35,8 +37,11 @@ namespace NKikimr::NBlobDepot { Y_VERIFY_S(blobSeqId.Generation < generation, "committing trimmed BlobSeqId" << " BlobSeqId# " << blobSeqId.ToString() << " Id# " << Self->GetLogId()); + CanBeCollectedBlobSeqIds.insert(blobSeqId); } else if (!Self->Data->BeginCommittingBlobSeqId(agent, blobSeqId)) { FailedBlobSeqIds.insert(blobSeqId); + } else { + AllowedBlobSeqIds.insert(blobSeqId); } BlobSeqIds.push_back(blobSeqId); } @@ -102,6 +107,8 @@ namespace NKikimr::NBlobDepot { continue; } + Y_VERIFY_DEBUG_S(!CanBeCollectedBlobSeqIds.contains(blobSeqId), "BlobSeqId# " << blobSeqId); + TString error; if (!CheckKeyAgainstBarrier(key, &error)) { responseItem->SetStatus(NKikimrProto::ERROR); @@ -121,6 +128,15 @@ namespace NKikimr::NBlobDepot { responseItem->SetStatus(NKikimrProto::RACE); } } else { + Y_VERIFY_DEBUG_S(AllowedBlobSeqIds.contains(blobSeqId), "BlobSeqId# " << blobSeqId); + Y_VERIFY_DEBUG_S( + Self->Channels[blobSeqId.Channel].GetLeastExpectedBlobId(generation) <= blobSeqId, + "BlobSeqId# " << blobSeqId + << " LeastExpectedBlobId# " << Self->Channels[blobSeqId.Channel].GetLeastExpectedBlobId(generation) + << " Generation# " << generation); + Y_VERIFY_DEBUG_S(blobSeqId.Generation == generation, "BlobSeqId# " << blobSeqId << " Generation# " << generation); + Y_VERIFY_DEBUG_S(Self->Channels[blobSeqId.Channel].SequenceNumbersInFlight.contains(blobSeqId.ToSequentialNumber()), + "BlobSeqId# " << blobSeqId); Self->Data->UpdateKey(key, item, txc, this); } } diff --git a/ydb/core/blob_depot/ya.make b/ydb/core/blob_depot/ya.make index 9d3d3d9f6998..346426639341 100644 --- a/ydb/core/blob_depot/ya.make +++ b/ydb/core/blob_depot/ya.make @@ -51,6 +51,8 @@ LIBRARY() ydb/core/protos ) + GENERATE_ENUM_SERIALIZATION(schema.h) + END() RECURSE( diff --git a/ydb/core/mind/bscontroller/config.cpp b/ydb/core/mind/bscontroller/config.cpp index 0854afdb3a00..36ef61567e7c 100644 --- a/ydb/core/mind/bscontroller/config.cpp +++ b/ydb/core/mind/bscontroller/config.cpp @@ -232,6 +232,18 @@ namespace NKikimr::NBsController { NKikimrBlobStorage::TNodeWardenServiceSet *service = Services[nodeId].MutableServiceSet(); SerializeGroupInfo(service->AddGroups(), groupInfo, storagePoolName, scopeId); } + + // push group state notification to NodeWhiteboard (for virtual groups only) + if (groupInfo.VirtualGroupState) { + TBlobStorageGroupInfo::TDynamicInfo dynInfo(groupInfo.ID, groupInfo.Generation); + for (const auto& vdisk : groupInfo.VDisksInGroup) { + const auto& id = vdisk->VSlotId; + dynInfo.PushBackActorId(MakeBlobStorageVDiskID(id.NodeId, id.PDiskId, id.VSlotId)); + } + State.NodeWhiteboardOutbox.emplace_back(new NNodeWhiteboard::TEvWhiteboard::TEvBSGroupStateUpdate( + MakeIntrusive<TBlobStorageGroupInfo>(groupInfo.Topology, std::move(dynInfo), storagePoolName, + scopeId, NPDisk::DEVICE_TYPE_UNKNOWN))); + } } void ApplyGroupDeleted(const TGroupId &groupId, const TGroupInfo& /*groupInfo*/) { @@ -595,6 +607,9 @@ namespace NKikimr::NBsController { for (auto& ev : StatProcessorOutbox) { Self.SelfId().Send(Self.StatProcessorActorId, ev.release()); } + for (auto& ev : NodeWhiteboardOutbox) { + Self.SelfId().Send(NNodeWhiteboard::MakeNodeWhiteboardServiceId(Self.SelfId().NodeId()), ev.release()); + } if (UpdateSelfHealInfoMsg) { UpdateSelfHealInfoMsg->ConfigTxSeqNo = Self.NextConfigTxSeqNo; diff --git a/ydb/core/mind/bscontroller/config.h b/ydb/core/mind/bscontroller/config.h index e0e64654da84..a4e3b0dfd43a 100644 --- a/ydb/core/mind/bscontroller/config.h +++ b/ydb/core/mind/bscontroller/config.h @@ -91,6 +91,7 @@ namespace NKikimr { // outgoing messages std::deque<std::tuple<TNodeId, std::unique_ptr<IEventBase>, ui64>> Outbox; std::deque<std::unique_ptr<IEventBase>> StatProcessorOutbox; + std::deque<std::unique_ptr<IEventBase>> NodeWhiteboardOutbox; THolder<TEvControllerUpdateSelfHealInfo> UpdateSelfHealInfoMsg; // deferred callbacks diff --git a/ydb/core/mind/bscontroller/defs.h b/ydb/core/mind/bscontroller/defs.h index 586c8eccdc8c..10222948d569 100644 --- a/ydb/core/mind/bscontroller/defs.h +++ b/ydb/core/mind/bscontroller/defs.h @@ -19,6 +19,7 @@ #include <ydb/core/driver_lib/version/version.h> #include <ydb/core/engine/minikql/flat_local_tx_factory.h> #include <ydb/core/mind/table_adapter.h> +#include <ydb/core/node_whiteboard/node_whiteboard.h> #include <ydb/core/protos/blobstorage_config.pb.h> #include <ydb/core/protos/blobstorage_distributed_config.pb.h> #include <ydb/core/protos/blobstorage.pb.h> diff --git a/ydb/core/mind/bscontroller/group_metrics_exchange.cpp b/ydb/core/mind/bscontroller/group_metrics_exchange.cpp index 5b18807f6c9c..1f24f59f3089 100644 --- a/ydb/core/mind/bscontroller/group_metrics_exchange.cpp +++ b/ydb/core/mind/bscontroller/group_metrics_exchange.cpp @@ -59,6 +59,11 @@ namespace NKikimr::NBsController { }; void TBlobStorageController::Handle(TEvBlobStorage::TEvControllerGroupMetricsExchange::TPtr& ev) { + if (auto& record = ev->Get()->Record; record.HasWhiteboardUpdate()) { + auto ev = std::make_unique<NNodeWhiteboard::TEvWhiteboard::TEvBSGroupStateUpdate>(); + ev->Record.Swap(record.MutableWhiteboardUpdate()); + Send(NNodeWhiteboard::MakeNodeWhiteboardServiceId(SelfId().NodeId()), ev.release()); + } Execute(new TTxGroupMetricsExchange(this, ev)); } diff --git a/ydb/core/node_whiteboard/node_whiteboard.h b/ydb/core/node_whiteboard/node_whiteboard.h index 809a6c0f762e..61cd469053bd 100644 --- a/ydb/core/node_whiteboard/node_whiteboard.h +++ b/ydb/core/node_whiteboard/node_whiteboard.h @@ -304,10 +304,14 @@ struct TEvWhiteboard{ Record.SetGroupID(groupInfo->GroupID); Record.SetGroupGeneration(groupInfo->GroupGeneration); Record.SetErasureSpecies(groupInfo->Type.ErasureSpeciesName(groupInfo->Type.GetErasure())); - for (ui32 i = 0; i < groupInfo->GetTotalVDisksNum(); ++i) { - VDiskIDFromVDiskID(groupInfo->GetVDiskId(i), Record.AddVDiskIds()); - const TActorId& actorId = groupInfo->GetActorId(i); - Record.AddVDiskNodeIds(actorId.NodeId()); + if (ui32 numVDisks = groupInfo->GetTotalVDisksNum()) { + for (ui32 i = 0; i < numVDisks; ++i) { + VDiskIDFromVDiskID(groupInfo->GetVDiskId(i), Record.AddVDiskIds()); + const TActorId& actorId = groupInfo->GetActorId(i); + Record.AddVDiskNodeIds(actorId.NodeId()); + } + } else { + Record.SetNoVDisksInGroup(true); } Record.SetStoragePoolName(groupInfo->GetStoragePoolName()); if (groupInfo->GetEncryptionMode() != TBlobStorageGroupInfo::EEM_NONE) { diff --git a/ydb/core/protos/blobstorage.proto b/ydb/core/protos/blobstorage.proto index a37a468b331f..6ebe3305e7d1 100644 --- a/ydb/core/protos/blobstorage.proto +++ b/ydb/core/protos/blobstorage.proto @@ -8,6 +8,7 @@ import "ydb/core/protos/blobstorage_pdisk_config.proto"; import "ydb/core/protos/blobstorage_config.proto"; import "ydb/core/protos/blobstorage_disk.proto"; import "ydb/core/protos/blobstorage_disk_color.proto"; +import "ydb/core/protos/node_whiteboard.proto"; package NKikimrBlobStorage; option java_package = "ru.yandex.kikimr.proto"; @@ -1341,6 +1342,7 @@ message TGroupMetrics { message TEvControllerGroupMetricsExchange { repeated TGroupMetrics GroupMetrics = 1; repeated fixed32 GroupsToQuery = 2; // filled in by entities asking BSC to report some metrics in return + optional NKikimrWhiteboard.TBSGroupStateInfo WhiteboardUpdate = 3; } message TEvNodeWardenQueryGroupInfo { diff --git a/ydb/core/protos/node_whiteboard.proto b/ydb/core/protos/node_whiteboard.proto index 78cbacd99b7d..3126946f495f 100644 --- a/ydb/core/protos/node_whiteboard.proto +++ b/ydb/core/protos/node_whiteboard.proto @@ -247,6 +247,8 @@ message TBSGroupStateInfo { optional bool Encryption = 19; repeated uint32 VDiskNodeIds = 20; optional uint64 BlobDepotId = 21; // if set, then this is virtual group + optional bool NoVDisksInGroup = 22; + optional uint64 BlobDepotOnlineTime = 23; } message TEvBSGroupStateRequest { diff --git a/ydb/core/tablet/node_whiteboard.cpp b/ydb/core/tablet/node_whiteboard.cpp index ff7014089b01..691ccbb51a29 100644 --- a/ydb/core/tablet/node_whiteboard.cpp +++ b/ydb/core/tablet/node_whiteboard.cpp @@ -528,9 +528,17 @@ class TNodeWhiteboardService : public TActorBootstrapped<TNodeWhiteboardService> } void Handle(TEvWhiteboard::TEvBSGroupStateUpdate::TPtr &ev, const TActorContext &ctx) { - auto& bSGroupStateInfo = BSGroupStateInfo[ev->Get()->Record.GetGroupID()]; - if (CheckedMerge(bSGroupStateInfo, ev->Get()->Record) >= 100) { - bSGroupStateInfo.SetChangeTime(ctx.Now().MilliSeconds()); + const auto& from = ev->Get()->Record; + auto& to = BSGroupStateInfo[from.GetGroupID()]; + int modified = 0; + if (from.GetNoVDisksInGroup() && to.GetGroupGeneration() <= from.GetGroupGeneration()) { + modified += 100 * (2 - to.GetVDiskIds().empty() - to.GetVDiskNodeIds().empty()); + to.ClearVDiskIds(); + to.ClearVDiskNodeIds(); + } + modified += CheckedMerge(to, from); + if (modified >= 100) { + to.SetChangeTime(ctx.Now().MilliSeconds()); } } diff --git a/ydb/core/viewer/content/v2/storage.js b/ydb/core/viewer/content/v2/storage.js index f9c717071329..a527233cd278 100644 --- a/ydb/core/viewer/content/v2/storage.js +++ b/ydb/core/viewer/content/v2/storage.js @@ -140,10 +140,14 @@ Storage.prototype.appear = function() { } else if (!this.BlobDepotId) { erasureElem = $('<td>', {text: 'BlobDepot (error)'}); } else { + label = 'BlobDepot'; + if (this.BlobDepotOnlineTime === undefined || getTime() - this.BlobDepotOnlineTime >= 15000) { + label = 'BlobDepot (error)'; + } erasureElem = $('<td>'); var link = $('<a>', { 'href': '../../../tablets/app?TabletID=' + this.BlobDepotId, - 'text': 'BlobDepot', + 'text': label, 'title': this.BlobDepotId }); erasureElem.html(link); @@ -372,6 +376,14 @@ Storage.prototype.updateFromStorage = function(update) { //console.log(this); break; } + + var blobDepotError = false; + if (this.BlobDepotId !== undefined && (!this.BlobDepotId || this.BlobDepotOnlineTime === undefined || + getTime() - this.BlobDepotOnlineTime >= 15000)) { + this.color = red; // blob depot is ought to be working, but it does not + blobDepotError = true; + } + var usage = 0; var missingDisks = 0; for (var numDisk in this.VDisks) { @@ -412,6 +424,9 @@ Storage.prototype.updateFromStorage = function(update) { } } this.usage = usage; + if (blobDepotError) { + missingDisks = -1; + } this.missingDisks = missingDisks; if (this.visible) { this.update(); diff --git a/ydb/core/viewer/content/v2/viewer.js b/ydb/core/viewer/content/v2/viewer.js index 74686cbdbf99..eb96fddcb633 100644 --- a/ydb/core/viewer/content/v2/viewer.js +++ b/ydb/core/viewer/content/v2/viewer.js @@ -467,7 +467,10 @@ ViewerStorage.prototype.onStorageGroupChange = function(obj) { this.storageView.groupOrder = function(prev, next) { return Number(prev.substring(0, prev.length - 1)) > Number(next.substring(0, next.length - 1)); } break; case 'missing': - this.storageView.getStorageGroupName = function(storage) { var md = storage.getMissingDisks(); return md === 0 ? "Complete" : '-' + md; } + this.storageView.getStorageGroupName = function(storage) { + var md = storage.getMissingDisks(); + return md === -1 ? "BlobDepot error" : md === 0 ? "Complete" : '-' + md; + } this.storageView.getStorageGroupHeader = function(storageGroup) { return storageGroup.storageTotal + ' groups'; } this.storageView.groupOrder = function(prev, next) { return prev < next; } break; From fbdeb3c19b43a40b555f2eb869c344e0865884c4 Mon Sep 17 00:00:00 2001 From: Alexander Rutkovsky <alexvru@ydb.tech> Date: Fri, 7 Jun 2024 20:58:21 +0300 Subject: [PATCH 073/110] Hotfix: disable PDisk serial number management (#5329) --- ydb/core/blobstorage/nodewarden/node_warden_impl.cpp | 4 ++++ ydb/core/mind/bscontroller/cmds_drive_status.cpp | 2 +- ydb/core/mind/bscontroller/config.cpp | 6 +++--- ydb/core/mind/bscontroller/register_node.cpp | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp b/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp index ae71ba2387a1..579d14a060e6 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp +++ b/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp @@ -89,6 +89,9 @@ void TNodeWarden::RemoveDrivesWithBadSerialsAndReport(TVector<NPDisk::TDriveData } TVector<NPDisk::TDriveData> TNodeWarden::ListLocalDrives() { + return {}; + +#if 0 TStringStream details; TVector<NPDisk::TDriveData> drives = ListDevicesWithPartlabel(details); @@ -114,6 +117,7 @@ TVector<NPDisk::TDriveData> TNodeWarden::ListLocalDrives() { RemoveDrivesWithBadSerialsAndReport(drives, details); return drives; +#endif } void TNodeWarden::StartInvalidGroupProxy() { diff --git a/ydb/core/mind/bscontroller/cmds_drive_status.cpp b/ydb/core/mind/bscontroller/cmds_drive_status.cpp index 43c42725a2bd..f9da816720c4 100644 --- a/ydb/core/mind/bscontroller/cmds_drive_status.cpp +++ b/ydb/core/mind/bscontroller/cmds_drive_status.cpp @@ -85,7 +85,7 @@ namespace NKikimr::NBsController { item->SetPath(pdiskInfo.Path); item->SetStatus(pdiskInfo.Status); item->SetPDiskId(pdiskId.PDiskId); - item->SetSerial(pdiskInfo.ExpectedSerial); + //item->SetSerial(pdiskInfo.ExpectedSerial); item->SetStatusChangeTimestamp(pdiskInfo.StatusTimestamp.GetValue()); } return true; diff --git a/ydb/core/mind/bscontroller/config.cpp b/ydb/core/mind/bscontroller/config.cpp index 36ef61567e7c..83db6d3f033e 100644 --- a/ydb/core/mind/bscontroller/config.cpp +++ b/ydb/core/mind/bscontroller/config.cpp @@ -97,7 +97,7 @@ namespace NKikimr::NBsController { } pdisk->SetPDiskGuid(pdiskInfo.Guid); pdisk->SetPDiskCategory(pdiskInfo.Kind.GetRaw()); - pdisk->SetExpectedSerial(pdiskInfo.ExpectedSerial); + //pdisk->SetExpectedSerial(pdiskInfo.ExpectedSerial); pdisk->SetManagementStage(Self->SerialManagementStage); if (pdiskInfo.PDiskConfig && !pdisk->MutablePDiskConfig()->ParseFromString(pdiskInfo.PDiskConfig)) { // TODO(alexvru): report this somehow @@ -911,8 +911,8 @@ namespace NKikimr::NBsController { pb->SetDecommitStatus(pdisk.DecommitStatus); pb->MutablePDiskMetrics()->CopyFrom(pdisk.Metrics); pb->MutablePDiskMetrics()->ClearPDiskId(); - pb->SetExpectedSerial(pdisk.ExpectedSerial); - pb->SetLastSeenSerial(pdisk.LastSeenSerial); + //pb->SetExpectedSerial(pdisk.ExpectedSerial); + //pb->SetLastSeenSerial(pdisk.LastSeenSerial); } void TBlobStorageController::Serialize(NKikimrBlobStorage::TVSlotId *pb, TVSlotId id) { diff --git a/ydb/core/mind/bscontroller/register_node.cpp b/ydb/core/mind/bscontroller/register_node.cpp index 1b9bf3a2a73f..e8091e78b964 100644 --- a/ydb/core/mind/bscontroller/register_node.cpp +++ b/ydb/core/mind/bscontroller/register_node.cpp @@ -418,7 +418,7 @@ void TBlobStorageController::ReadPDisk(const TPDiskId& pdiskId, const TPDiskInfo (PDiskId, pdiskId.PDiskId)); } } - pDisk->SetExpectedSerial(pdisk.ExpectedSerial); + //pDisk->SetExpectedSerial(pdisk.ExpectedSerial); pDisk->SetManagementStage(SerialManagementStage); pDisk->SetSpaceColorBorder(PDiskSpaceColorBorder); pDisk->SetEntityStatus(entityStatus); From 99f00045335910229c1571797a2028f9e247e1ad Mon Sep 17 00:00:00 2001 From: andrew stalin <andrew.stalin@gmail.com> Date: Mon, 10 Jun 2024 17:34:54 +0700 Subject: [PATCH 074/110] Fix TExportToS3Tests.CorruptedDyNumber unit test (#5370) --- ydb/core/wrappers/ut_helpers/s3_mock.cpp | 20 ++++++++++++-------- ydb/core/wrappers/ut_helpers/s3_mock.h | 10 ++++++---- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/ydb/core/wrappers/ut_helpers/s3_mock.cpp b/ydb/core/wrappers/ut_helpers/s3_mock.cpp index f69f78709515..220e3f521c2a 100644 --- a/ydb/core/wrappers/ut_helpers/s3_mock.cpp +++ b/ydb/core/wrappers/ut_helpers/s3_mock.cpp @@ -20,13 +20,13 @@ TS3Mock::TSettings::TSettings() } TS3Mock::TSettings::TSettings(ui16 port) - : HttpOptions(TOptions(port).SetThreads(1)) + : HttpOptions(THttpServer::TOptions(port).SetThreads(1)) , CorruptETags(false) , RejectUploadParts(false) { } -TS3Mock::TSettings& TS3Mock::TSettings::WithHttpOptions(const TOptions& opts) { +TS3Mock::TSettings& TS3Mock::TSettings::WithHttpOptions(const THttpServer::TOptions& opts) { HttpOptions = opts; return *this; } @@ -388,23 +388,27 @@ bool TS3Mock::TRequest::DoReply(const TReplyParams& params) { } } +bool TS3Mock::Start() { + return HttpServer.Start(); +} + TS3Mock::TS3Mock(const TSettings& settings) - : THttpServer(this, settings.HttpOptions) - , Settings(settings) + : Settings(settings) + , HttpServer(this, settings.HttpOptions) { } TS3Mock::TS3Mock(THashMap<TString, TString>&& data, const TSettings& settings) - : THttpServer(this, settings.HttpOptions) - , Settings(settings) + : Settings(settings) , Data(std::move(data)) + , HttpServer(this, settings.HttpOptions) { } TS3Mock::TS3Mock(const THashMap<TString, TString>& data, const TSettings& settings) - : THttpServer(this, settings.HttpOptions) - , Settings(settings) + : Settings(settings) , Data(data) + , HttpServer(this, settings.HttpOptions) { } diff --git a/ydb/core/wrappers/ut_helpers/s3_mock.h b/ydb/core/wrappers/ut_helpers/s3_mock.h index 512b4d51f710..19162ef62fe6 100644 --- a/ydb/core/wrappers/ut_helpers/s3_mock.h +++ b/ydb/core/wrappers/ut_helpers/s3_mock.h @@ -11,17 +11,17 @@ namespace NKikimr { namespace NWrappers { namespace NTestHelpers { -class TS3Mock: public THttpServer, public THttpServer::ICallBack { +class TS3Mock: public THttpServer::ICallBack { public: struct TSettings { - TOptions HttpOptions; + THttpServer::TOptions HttpOptions; bool CorruptETags; bool RejectUploadParts; TSettings(); explicit TSettings(ui16 port); - TSettings& WithHttpOptions(const TOptions& opts); + TSettings& WithHttpOptions(const THttpServer::TOptions& opts); TSettings& WithCorruptETags(bool value); TSettings& WithRejectUploadParts(bool value); @@ -65,7 +65,8 @@ class TS3Mock: public THttpServer, public THttpServer::ICallBack { explicit TS3Mock(THashMap<TString, TString>&& data, const TSettings& settings = {}); explicit TS3Mock(const THashMap<TString, TString>& data, const TSettings& settings = {}); - TClientRequest* CreateClient() override; + TClientRequest* CreateClient(); + bool Start(); const THashMap<TString, TString>& GetData() const { return Data; } @@ -75,6 +76,7 @@ class TS3Mock: public THttpServer, public THttpServer::ICallBack { int NextUploadId = 1; THashMap<std::pair<TString, TString>, TVector<TString>> MultipartUploads; + THttpServer HttpServer; }; // TS3Mock From 9525b0f63c0ff786d13ea806b78cf3ba504fb117 Mon Sep 17 00:00:00 2001 From: Vitalii Gridnev <gridnevvvit@gmail.com> Date: Mon, 10 Jun 2024 14:12:29 +0300 Subject: [PATCH 075/110] fix when limit per node logic assigns incorrect shard hints in single shard scenario (#5362) --- .../kqp/executer_actor/kqp_executer_impl.h | 45 +++++++++++++------ ydb/core/kqp/runtime/kqp_read_actor.cpp | 7 ++- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/ydb/core/kqp/executer_actor/kqp_executer_impl.h b/ydb/core/kqp/executer_actor/kqp_executer_impl.h index f0706f346a95..3c407523c6de 100644 --- a/ydb/core/kqp/executer_actor/kqp_executer_impl.h +++ b/ydb/core/kqp/executer_actor/kqp_executer_impl.h @@ -76,6 +76,12 @@ inline bool IsDebugLogEnabled() { TlsActivationContext->LoggerSettings()->Satisfies(NActors::NLog::PRI_DEBUG, NKikimrServices::KQP_EXECUTER); } +struct TShardRangesWithShardId { + TMaybe<ui64> ShardId; + const TShardKeyRanges* Ranges; +}; + + TActorId ReportToRl(ui64 ru, const TString& database, const TString& userToken, const NKikimrKqp::TRlPath& path); @@ -986,21 +992,32 @@ class TKqpExecuterBase : public TActorBootstrapped<TDerived> { } } - TVector<TVector<const TShardKeyRanges*>> DistributeShardsToTasks(TVector<const TShardKeyRanges*> shardsRanges, const size_t tasksCount, const TVector<NScheme::TTypeInfo>& keyTypes) { - std::sort(std::begin(shardsRanges), std::end(shardsRanges), [&](const TShardKeyRanges* lhs, const TShardKeyRanges* rhs) { + TVector<TVector<TShardRangesWithShardId>> DistributeShardsToTasks(TVector<TShardRangesWithShardId> shardsRanges, const size_t tasksCount, const TVector<NScheme::TTypeInfo>& keyTypes) { + if (IsDebugLogEnabled()) { + TStringBuilder sb; + sb << "Distrubiting shards to tasks: ["; + for(size_t i = 0; i < shardsRanges.size(); i++) { + sb << "# " << i << ": " << shardsRanges[i].Ranges->ToString(keyTypes, *AppData()->TypeRegistry); + } + + sb << " ]."; + LOG_D(sb); + } + + std::sort(std::begin(shardsRanges), std::end(shardsRanges), [&](const TShardRangesWithShardId& lhs, const TShardRangesWithShardId& rhs) { // Special case for infinity - if (lhs->GetRightBorder().first->GetCells().empty() || rhs->GetRightBorder().first->GetCells().empty()) { - YQL_ENSURE(!lhs->GetRightBorder().first->GetCells().empty() || !rhs->GetRightBorder().first->GetCells().empty()); - return rhs->GetRightBorder().first->GetCells().empty(); + if (lhs.Ranges->GetRightBorder().first->GetCells().empty() || rhs.Ranges->GetRightBorder().first->GetCells().empty()) { + YQL_ENSURE(!lhs.Ranges->GetRightBorder().first->GetCells().empty() || !rhs.Ranges->GetRightBorder().first->GetCells().empty()); + return rhs.Ranges->GetRightBorder().first->GetCells().empty(); } return CompareTypedCellVectors( - lhs->GetRightBorder().first->GetCells().data(), - rhs->GetRightBorder().first->GetCells().data(), + lhs.Ranges->GetRightBorder().first->GetCells().data(), + rhs.Ranges->GetRightBorder().first->GetCells().data(), keyTypes.data(), keyTypes.size()) < 0; }); // One shard (ranges set) can be assigned only to one task. Otherwise, we can break some optimizations like removing unnecessary shuffle. - TVector<TVector<const TShardKeyRanges*>> result(tasksCount); + TVector<TVector<TShardRangesWithShardId>> result(tasksCount); size_t shardIndex = 0; for (size_t taskIndex = 0; taskIndex < tasksCount; ++taskIndex) { const size_t tasksLeft = tasksCount - taskIndex; @@ -1129,7 +1146,7 @@ class TKqpExecuterBase : public TActorBootstrapped<TDerived> { }; THashMap<ui64, TVector<ui64>> nodeIdToTasks; - THashMap<ui64, TVector<const TShardKeyRanges*>> nodeIdToShardKeyRanges; + THashMap<ui64, TVector<TShardRangesWithShardId>> nodeIdToShardKeyRanges; auto addPartiton = [&]( ui64 taskLocation, @@ -1155,11 +1172,11 @@ class TKqpExecuterBase : public TActorBootstrapped<TDerived> { const auto maxScanTasksPerNode = GetScanTasksPerNode(stageInfo, /* isOlapScan */ false, *nodeId); auto& nodeTasks = nodeIdToTasks[*nodeId]; if (nodeTasks.size() < maxScanTasksPerNode) { - const auto& task = createNewTask(nodeId, taskLocation, shardId, maxInFlightShards); + const auto& task = createNewTask(nodeId, taskLocation, {}, maxInFlightShards); nodeTasks.push_back(task.Id); } - nodeIdToShardKeyRanges[*nodeId].push_back(&*shardInfo.KeyReadRanges); + nodeIdToShardKeyRanges[*nodeId].push_back(TShardRangesWithShardId{shardId, &*shardInfo.KeyReadRanges}); } else { auto& task = createNewTask(nodeId, taskLocation, shardId, maxInFlightShards); const auto& stageSource = stage.GetSources(0); @@ -1186,12 +1203,12 @@ class TKqpExecuterBase : public TActorBootstrapped<TDerived> { const auto& shardsRangesForTask = rangesDistribution[taskIndex]; - if (shardsRangesForTask.size() > 1) { - settings->ClearShardIdHint(); + if (shardsRangesForTask.size() == 1 && shardsRangesForTask[0].ShardId) { + settings->SetShardIdHint(*shardsRangesForTask[0].ShardId); } for (const auto& shardRanges : shardsRangesForTask) { - shardRanges->SerializeTo(settings); + shardRanges.Ranges->SerializeTo(settings); } } } diff --git a/ydb/core/kqp/runtime/kqp_read_actor.cpp b/ydb/core/kqp/runtime/kqp_read_actor.cpp index 1b69097b7b48..75e09b43c8f7 100644 --- a/ydb/core/kqp/runtime/kqp_read_actor.cpp +++ b/ydb/core/kqp/runtime/kqp_read_actor.cpp @@ -308,8 +308,11 @@ class TKqpReadActor : public TActorBootstrapped<TKqpReadActor>, public NYql::NDq sb << ", "; } } - sb << "], " - << ", RetryAttempt: " << RetryAttempt << ", ResolveAttempt: " << ResolveAttempt << " }"; + sb << "], Points: ["; + for(size_t i = 0; i < Points.size(); ++i) { + sb << "# " << i << ": " << DebugPrintPoint(keyTypes, Points[i].GetCells(), *AppData()->TypeRegistry); + } + sb << "], RetryAttempt: " << RetryAttempt << ", ResolveAttempt: " << ResolveAttempt << " }"; return sb; } From f1632b2da92bbf7b23cf090e726b676099378e5d Mon Sep 17 00:00:00 2001 From: Nikolay Shumkov <shumkovnd@ydb.tech> Date: Tue, 11 Jun 2024 13:10:59 +0300 Subject: [PATCH 076/110] Sequences backup (#5018) --- ydb/core/kqp/ut/pg/kqp_pg_ut.cpp | 139 ++++ ydb/core/protos/counters_schemeshard.proto | 5 + ydb/core/protos/counters_sequenceshard.proto | 1 + ydb/core/protos/flat_scheme_op.proto | 12 + ydb/core/protos/out/out_sequenceshard.cpp | 4 + ydb/core/protos/tx_sequenceshard.proto | 37 + ydb/core/tx/datashard/export_common.cpp | 1 + .../tx/schemeshard/schemeshard__operation.cpp | 2 + ...meshard__operation_backup_restore_common.h | 2 +- .../schemeshard__operation_common.h | 8 +- ...hard__operation_consistent_copy_tables.cpp | 48 +- .../schemeshard__operation_copy_sequence.cpp | 763 ++++++++++++++++++ .../schemeshard__operation_copy_table.cpp | 123 ++- ...schemeshard__operation_create_sequence.cpp | 4 + .../schemeshard/schemeshard__operation_part.h | 6 +- .../schemeshard_export_flow_proposals.cpp | 34 +- ydb/core/tx/schemeshard/schemeshard_impl.cpp | 13 + ydb/core/tx/schemeshard/schemeshard_impl.h | 7 +- .../schemeshard_import__create.cpp | 5 +- .../schemeshard_import_flow_proposals.cpp | 47 +- ydb/core/tx/schemeshard/schemeshard_path.cpp | 17 + ydb/core/tx/schemeshard/schemeshard_path.h | 1 + .../schemeshard_path_describer.cpp | 13 +- .../tx/schemeshard/schemeshard_tx_infly.h | 6 + .../tx/schemeshard/ut_helpers/helpers.cpp | 20 + ydb/core/tx/schemeshard/ut_helpers/helpers.h | 8 + .../tx/schemeshard/ut_helpers/test_env.cpp | 8 + .../tx/schemeshard/ut_restore/ut_restore.cpp | 226 +++++- ydb/core/tx/schemeshard/ut_restore/ya.make | 2 +- .../schemeshard/ut_sequence/ut_sequence.cpp | 34 + ydb/core/tx/schemeshard/ut_sequence/ya.make | 1 + .../ut_sequence_reboots.cpp | 76 +- .../schemeshard/ut_sequence_reboots/ya.make | 2 +- ydb/core/tx/schemeshard/ya.make | 1 + ydb/core/tx/sequenceshard/public/events.h | 57 ++ .../tx/sequenceshard/sequenceshard_impl.cpp | 1 + .../tx/sequenceshard/sequenceshard_impl.h | 2 + .../tx/sequenceshard/tx_create_sequence.cpp | 27 +- ydb/core/tx/sequenceshard/tx_get_sequence.cpp | 93 +++ ydb/core/tx/sequenceshard/ut_helpers.cpp | 25 + ydb/core/tx/sequenceshard/ut_helpers.h | 4 + .../tx/sequenceshard/ut_sequenceshard.cpp | 9 + ydb/core/tx/sequenceshard/ya.make | 1 + ydb/core/ydb_convert/table_description.cpp | 78 +- ydb/core/ydb_convert/table_description.h | 13 +- ydb/public/api/protos/ydb_table.proto | 16 + 46 files changed, 1947 insertions(+), 55 deletions(-) create mode 100644 ydb/core/tx/schemeshard/schemeshard__operation_copy_sequence.cpp create mode 100644 ydb/core/tx/sequenceshard/tx_get_sequence.cpp diff --git a/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp b/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp index d1b7de5ca949..dac94b1aebe9 100644 --- a/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp +++ b/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp @@ -1694,6 +1694,145 @@ Y_UNIT_TEST_SUITE(KqpPg) { } } + Y_UNIT_TEST(CopyTableSerialColumns) { + NKikimrConfig::TAppConfig appConfig; + appConfig.MutableTableServiceConfig()->SetEnableSequences(true); + auto setting = NKikimrKqp::TKqpSetting(); + TKikimrRunner kikimr( + TKikimrSettings() + .SetAppConfig(appConfig) + .SetKqpSettings({setting}) + .SetWithSampleTables(false) + .SetEnableNotNullDataColumns(true) + ); + auto client = kikimr.GetTableClient(); + auto session = client.CreateSession().GetValueSync().GetSession(); + { + const auto query = Q_(R"( + --!syntax_pg + CREATE TABLE PgSerial ( + key serial PRIMARY KEY, + value int2 + ))"); + + auto result = session.ExecuteSchemeQuery(query).ExtractValueSync(); + UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); + } + + { + const auto query = Q_(R"( + --!syntax_pg + INSERT INTO PgSerial (value) values (1); + )"); + + auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); + } + + { + const auto result = session.CopyTable("/Root/PgSerial", "/Root/copy").GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + + auto desc = session.DescribeTable("/Root/copy").ExtractValueSync(); + UNIT_ASSERT_C(desc.IsSuccess(), desc.GetIssues().ToString()); + } + + { + const auto query = Q_(R"( + --!syntax_pg + SELECT * FROM copy; + )"); + + auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + + UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty"); + CompareYson(R"( + [["1";"1"]] + )", FormatResultSetYson(result.GetResultSet(0))); + } + + { + const auto query = Q_(R"( + --!syntax_pg + INSERT INTO copy (value) values (1); + )"); + + auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); + } + + { + const auto query = Q_(R"( + --!syntax_pg + SELECT * FROM copy; + )"); + + auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + + UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty"); + CompareYson(R"( + [["1";"1"];["2";"1"]] + )", FormatResultSetYson(result.GetResultSet(0))); + } + + { + const auto query = Q_(R"( + --!syntax_pg + SELECT * FROM PgSerial; + )"); + + auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + + UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty"); + CompareYson(R"( + [["1";"1"]] + )", FormatResultSetYson(result.GetResultSet(0))); + } + + { + const auto query = Q_(R"( + --!syntax_pg + INSERT INTO PgSerial (value) values (1); + )"); + + auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); + } + + { + const auto query = Q_(R"( + --!syntax_pg + SELECT * FROM copy; + )"); + + auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + + UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty"); + CompareYson(R"( + [["1";"1"];["2";"1"]] + )", FormatResultSetYson(result.GetResultSet(0))); + } + + { + const auto query = Q_(R"( + --!syntax_pg + SELECT * FROM PgSerial; + )"); + + auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + + UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty"); + CompareYson(R"( + [["1";"1"];["2";"1"]] + )", FormatResultSetYson(result.GetResultSet(0))); + } + } + Y_UNIT_TEST(CreateIndex) { NKikimrConfig::TAppConfig appConfig; appConfig.MutableTableServiceConfig()->SetEnablePreparedDdl(true);; diff --git a/ydb/core/protos/counters_schemeshard.proto b/ydb/core/protos/counters_schemeshard.proto index ca2a07a1d508..9ac6d2341844 100644 --- a/ydb/core/protos/counters_schemeshard.proto +++ b/ydb/core/protos/counters_schemeshard.proto @@ -195,6 +195,8 @@ enum ESimpleCounters { COUNTER_IN_FLIGHT_OPS_TxDropView = 157 [(CounterOpts) = {Name: "InFlightOps/DropView"}]; COUNTER_GRAPHSHARD_COUNT = 158 [(CounterOpts) = {Name: "GraphShards"}]; + + COUNTER_IN_FLIGHT_OPS_TxCopySequence = 159 [(CounterOpts) = {Name: "InFlightOps/CopySequence"}]; } enum ECumulativeCounters { @@ -315,6 +317,7 @@ enum ECumulativeCounters { COUNTER_FINISHED_OPS_TxCreateView = 95 [(CounterOpts) = {Name: "FinishedOps/CreateView"}]; COUNTER_FINISHED_OPS_TxDropView = 96 [(CounterOpts) = {Name: "FinishedOps/DropView"}]; COUNTER_FINISHED_OPS_TxAlterView = 97 [(CounterOpts) = {Name: "FinishedOps/AlterView"}]; + COUNTER_FINISHED_OPS_TxCopySequence = 98 [(CounterOpts) = {Name: "FinishedOps/TxCopySequence"}]; } enum EPercentileCounters { @@ -536,4 +539,6 @@ enum ETxTypes { TXTYPE_PERSQUEUE_PROPOSE_RESULT = 83 [(TxTypeOpts) = {Name: "TxPersQueueProposeResult"}]; TXTYPE_PERSQUEUE_PROPOSE_ATTACH_RESULT = 84 [(TxTypeOpts) = {Name: "TxProposeTransactionAttachResult"}]; TXTYPE_UPDATE_DOMAIN_REPLY = 85 [(TxTypeOpts) = {Name: "TxUpdateDomainReply"}]; + + TXTYPE_SEQUENCESHARD_GET_SEQUENCE_RESULT = 86 [(TxTypeOpts) = {Name: "TxSequenceShardGetSequenceResult"}]; } diff --git a/ydb/core/protos/counters_sequenceshard.proto b/ydb/core/protos/counters_sequenceshard.proto index 6ace98084695..ec396a082dac 100644 --- a/ydb/core/protos/counters_sequenceshard.proto +++ b/ydb/core/protos/counters_sequenceshard.proto @@ -34,4 +34,5 @@ enum ETxTypes { TXTYPE_FREEZE_SEQUENCE = 7 [(TxTypeOpts) = {Name: "TxFreezeSequence"}]; TXTYPE_RESTORE_SEQUENCE = 8 [(TxTypeOpts) = {Name: "TxRestoreSequence"}]; TXTYPE_REDIRECT_SEQUENCE = 9 [(TxTypeOpts) = {Name: "TxRedirectSequence"}]; + TXTYPE_GET_SEQUENCE = 10 [(TxTypeOpts) = {Name: "TxGetSequence"}]; } diff --git a/ydb/core/protos/flat_scheme_op.proto b/ydb/core/protos/flat_scheme_op.proto index ba7772bcca9c..d20f3b253de6 100644 --- a/ydb/core/protos/flat_scheme_op.proto +++ b/ydb/core/protos/flat_scheme_op.proto @@ -1275,6 +1275,10 @@ message TMoveIndex { } message TSequenceDescription { + message TSetVal { + optional sint64 NextValue = 1; + optional bool NextUsed = 2; + } optional string Name = 1; // mandatory optional NKikimrProto.TPathID PathId = 2; // sequence path id, assigned by schemeshard optional uint64 Version = 3; // incremented every time sequence is altered @@ -1286,6 +1290,7 @@ message TSequenceDescription { optional uint64 Cache = 8; // number of items to cache, defaults to 1 optional sint64 Increment = 9; // increment at each call, defaults to 1 optional bool Cycle = 10; // true when cycle on overflow is allowed + optional TSetVal SetVal = 11; // SetVal(NextValue, NextUsed) is executed atomically when creating } message TSequenceSharding { @@ -1571,6 +1576,12 @@ message TModifyScheme { optional TViewDescription CreateView = 64; optional NActorsProto.TActorId TempTableOwnerActorId = 65; + + optional TCopySequence CopySequence = 66; +} + +message TCopySequence { + optional string CopyFrom = 1; } // "Script", used by client to parse text files with multiple DDL commands @@ -1588,6 +1599,7 @@ message TDescribeOptions { optional bool ShowPrivateTable = 7 [default = false]; optional bool ReturnChannelsBinding = 8 [default = false]; optional bool ReturnRangeKey = 9 [default = true]; + optional bool ReturnSetVal = 10 [default = false]; } // Request to read scheme for a specific path diff --git a/ydb/core/protos/out/out_sequenceshard.cpp b/ydb/core/protos/out/out_sequenceshard.cpp index 066fa1309119..ce193e08a826 100644 --- a/ydb/core/protos/out/out_sequenceshard.cpp +++ b/ydb/core/protos/out/out_sequenceshard.cpp @@ -29,3 +29,7 @@ Y_DECLARE_OUT_SPEC(, NKikimrTxSequenceShard::TEvRestoreSequenceResult::EStatus, Y_DECLARE_OUT_SPEC(, NKikimrTxSequenceShard::TEvRedirectSequenceResult::EStatus, stream, value) { stream << NKikimrTxSequenceShard::TEvRedirectSequenceResult::EStatus_Name(value); } + +Y_DECLARE_OUT_SPEC(, NKikimrTxSequenceShard::TEvGetSequenceResult::EStatus, stream, value) { + stream << NKikimrTxSequenceShard::TEvGetSequenceResult::EStatus_Name(value); +} diff --git a/ydb/core/protos/tx_sequenceshard.proto b/ydb/core/protos/tx_sequenceshard.proto index 9a034f314fe9..e092dc447bd7 100644 --- a/ydb/core/protos/tx_sequenceshard.proto +++ b/ydb/core/protos/tx_sequenceshard.proto @@ -18,6 +18,11 @@ message TEvMarkSchemeShardPipe { } message TEvCreateSequence { + message TSetVal { + sint64 NextValue = 1; + bool NextUsed = 2; + } + NKikimrProto.TPathID PathId = 1; uint64 TxId = 2; uint64 TxPartId = 3; @@ -39,6 +44,8 @@ message TEvCreateSequence { oneof OptionalCycle { bool Cycle = 9; } + bool Frozen = 10; // defaults to false + TSetVal SetVal = 11; } message TEvCreateSequenceResult { @@ -224,3 +231,33 @@ message TEvRedirectSequenceResult { uint64 TxId = 3; uint64 TxPartId = 4; } + +message TEvGetSequence { + NKikimrProto.TPathID PathId = 1; + uint64 TxId = 2; + uint64 TxPartId = 3; +} + +message TEvGetSequenceResult { + enum EStatus { + UNKNOWN = 0; + SUCCESS = 1; + PIPE_OUTDATED = 2; + SEQUENCE_NOT_FOUND = 3; + SEQUENCE_MOVED = 4; + } + + EStatus Status = 1; + uint64 Origin = 2; + uint64 TxId = 3; + uint64 TxPartId = 4; + uint64 MovedTo = 5; // moved to a different sequence shard + sint64 MinValue = 6; + sint64 MaxValue = 7; + sint64 StartValue = 8; + sint64 NextValue = 9; + bool NextUsed = 10; + uint64 Cache = 11; + sint64 Increment = 12; + bool Cycle = 13; +} diff --git a/ydb/core/tx/datashard/export_common.cpp b/ydb/core/tx/datashard/export_common.cpp index bbedc5c02c86..5675d7de11e4 100644 --- a/ydb/core/tx/datashard/export_common.cpp +++ b/ydb/core/tx/datashard/export_common.cpp @@ -66,6 +66,7 @@ TMaybe<Ydb::Table::CreateTableRequest> GenYdbScheme( FillPartitioningSettings(scheme, tableDesc); FillKeyBloomFilter(scheme, tableDesc); FillReadReplicasSettings(scheme, tableDesc); + FillSequenceDescription(scheme, tableDesc); return scheme; } diff --git a/ydb/core/tx/schemeshard/schemeshard__operation.cpp b/ydb/core/tx/schemeshard/schemeshard__operation.cpp index 29da42f0791f..4c650607cbde 100644 --- a/ydb/core/tx/schemeshard/schemeshard__operation.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__operation.cpp @@ -1043,6 +1043,8 @@ ISubOperation::TPtr TOperation::RestorePart(TTxState::ETxType txType, TTxState:: Y_ABORT("TODO: implement"); case TTxState::ETxType::TxDropSequence: return CreateDropSequence(NextPartId(), txState); + case TTxState::ETxType::TxCopySequence: + return CreateCopySequence(NextPartId(), txState); case TTxState::ETxType::TxFillIndex: Y_ABORT("deprecated"); diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_backup_restore_common.h b/ydb/core/tx/schemeshard/schemeshard__operation_backup_restore_common.h index eb4ef7a61dfc..42667ec26505 100644 --- a/ydb/core/tx/schemeshard/schemeshard__operation_backup_restore_common.h +++ b/ydb/core/tx/schemeshard/schemeshard__operation_backup_restore_common.h @@ -619,7 +619,7 @@ class TBackupRestoreOperationBase: public TSubOperation { .NotAsyncReplicaTable() .NotUnderOperation() .IsCommonSensePath() //forbid alter impl index tables - .NotChildren(); //forbid backup table with indexes + .CanBackupTable(); //forbid backup table with indexes if (!checks) { result->SetError(checks.GetStatus(), checks.GetError()); diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_common.h b/ydb/core/tx/schemeshard/schemeshard__operation_common.h index 1910df417b58..8816ee761c78 100644 --- a/ydb/core/tx/schemeshard/schemeshard__operation_common.h +++ b/ydb/core/tx/schemeshard/schemeshard__operation_common.h @@ -43,6 +43,7 @@ void UpdatePartitioningForCopyTable(TOperationId operationId, TTxState& txState, class TProposedWaitParts: public TSubOperationState { private: TOperationId OperationId; + const TTxState::ETxState NextState; TString DebugHint() const override { return TStringBuilder() @@ -51,8 +52,9 @@ class TProposedWaitParts: public TSubOperationState { } public: - TProposedWaitParts(TOperationId id) + TProposedWaitParts(TOperationId id, TTxState::ETxState nextState = TTxState::Done) : OperationId(id) + , NextState(nextState) { IgnoreMessages(DebugHint(), { TEvHive::TEvCreateTabletReply::EventType @@ -124,7 +126,7 @@ class TProposedWaitParts: public TSubOperationState { // Got notifications from all datashards? if (txState->ShardsInProgress.empty()) { NTableState::AckAllSchemaChanges(OperationId, *txState, context); - context.SS->ChangeTxState(db, OperationId, TTxState::Done); + context.SS->ChangeTxState(db, OperationId, NextState); return true; } @@ -968,7 +970,7 @@ class TPropose: public TSubOperationState { TTxState* txState = context.SS->FindTx(OperationId); Y_ABORT_UNLESS(txState); Y_ABORT_UNLESS(txState->TxType == TTxState::TxCreatePQGroup || txState->TxType == TTxState::TxAlterPQGroup || txState->TxType == TTxState::TxAllocatePQ); - + TPathId pathId = txState->TargetPathId; TPathElement::TPtr path = context.SS->PathsById.at(pathId); diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_consistent_copy_tables.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_consistent_copy_tables.cpp index bb715ab8b955..c9b3a1ab0ca4 100644 --- a/ydb/core/tx/schemeshard/schemeshard__operation_consistent_copy_tables.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__operation_consistent_copy_tables.cpp @@ -115,13 +115,29 @@ TVector<ISubOperation::TPtr> CreateConsistentCopyTables(TOperationId nextId, con TPath dstPath = TPath::Resolve(dstStr, context.SS); TPath dstParentPath = dstPath.Parent(); - result.push_back(CreateCopyTable(NextPartId(nextId, result), - CopyTableTask(srcPath, dstPath, descr.GetOmitFollowers(), descr.GetIsBackup()))); + THashSet<TString> sequences; + for (const auto& child: srcPath.Base()->GetChildren()) { + auto name = child.first; + auto pathId = child.second; + + TPath childPath = srcPath.Child(name); + if (!childPath.IsSequence() || childPath.IsDeleted()) { + continue; + } - if (descr.GetOmitIndexes()) { - continue; + Y_ABORT_UNLESS(childPath.Base()->PathId == pathId); + + TSequenceInfo::TPtr sequenceInfo = context.SS->Sequences.at(pathId); + const auto& sequenceDesc = sequenceInfo->Description; + const auto& sequenceName = sequenceDesc.GetName(); + + sequences.emplace(sequenceName); } + result.push_back(CreateCopyTable(NextPartId(nextId, result), + CopyTableTask(srcPath, dstPath, descr.GetOmitFollowers(), descr.GetIsBackup()), sequences)); + + TVector<NKikimrSchemeOp::TSequenceDescription> sequenceDescriptions; for (const auto& child: srcPath.Base()->GetChildren()) { const auto& name = child.first; const auto& pathId = child.second; @@ -133,6 +149,17 @@ TVector<ISubOperation::TPtr> CreateConsistentCopyTables(TOperationId nextId, con continue; } + if (srcIndexPath.IsSequence()) { + TSequenceInfo::TPtr sequenceInfo = context.SS->Sequences.at(pathId); + const auto& sequenceDesc = sequenceInfo->Description; + sequenceDescriptions.push_back(sequenceDesc); + continue; + } + + if (descr.GetOmitIndexes()) { + continue; + } + if (!srcIndexPath.IsTableIndex()) { continue; } @@ -151,6 +178,19 @@ TVector<ISubOperation::TPtr> CreateConsistentCopyTables(TOperationId nextId, con result.push_back(CreateCopyTable(NextPartId(nextId, result), CopyTableTask(srcImplTable, dstImplTable, descr.GetOmitFollowers(), descr.GetIsBackup()))); } + + for (auto&& sequenceDescription : sequenceDescriptions) { + auto scheme = TransactionTemplate( + dstPath.PathString(), + NKikimrSchemeOp::EOperationType::ESchemeOpCreateSequence); + scheme.SetFailOnExist(true); + + auto* copySequence = scheme.MutableCopySequence(); + copySequence->SetCopyFrom(srcPath.PathString() + "/" + sequenceDescription.GetName()); + *scheme.MutableSequence() = std::move(sequenceDescription); + + result.push_back(CreateCopySequence(NextPartId(nextId, result), scheme)); + } } return result; diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_copy_sequence.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_copy_sequence.cpp new file mode 100644 index 000000000000..b1232aa0d6a8 --- /dev/null +++ b/ydb/core/tx/schemeshard/schemeshard__operation_copy_sequence.cpp @@ -0,0 +1,763 @@ +#include "schemeshard__operation_part.h" +#include "schemeshard__operation_common.h" +#include "schemeshard_impl.h" + +#include <ydb/core/tx/sequenceshard/public/events.h> +#include <ydb/core/mind/hive/hive.h> +#include <ydb/core/base/subdomain.h> + + +namespace { + +using namespace NKikimr; +using namespace NSchemeShard; + +class TConfigureParts : public TSubOperationState { +private: + TOperationId OperationId; + + TString DebugHint() const override { + return TStringBuilder() + << "TCopySequence TConfigureParts" + << " operationId#" << OperationId; + } + +public: + TConfigureParts(TOperationId id) + : OperationId(id) + { + IgnoreMessages(DebugHint(), { + TEvHive::TEvCreateTabletReply::EventType, + }); + } + + bool HandleReply(NSequenceShard::TEvSequenceShard::TEvCreateSequenceResult::TPtr& ev, TOperationContext& context) override { + auto ssId = context.SS->SelfTabletId(); + auto tabletId = TTabletId(ev->Get()->Record.GetOrigin()); + auto status = ev->Get()->Record.GetStatus(); + + LOG_DEBUG_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TConfigureParts HandleReply TEvCreateSequenceResult" + << " shardId# " << tabletId + << " status# " << status + << " operationId# " << OperationId + << " at tablet " << ssId); + + switch (status) { + case NKikimrTxSequenceShard::TEvCreateSequenceResult::SUCCESS: + case NKikimrTxSequenceShard::TEvCreateSequenceResult::SEQUENCE_ALREADY_EXISTS: + // Treat expected status as success + break; + + default: + // Treat all other replies as unexpected and spurious + LOG_WARN_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TConfigureParts HandleReply ignoring unexpected TEvCreateSequenceResult" + << " shardId# " << tabletId + << " status# " << status + << " operationId# " << OperationId + << " at tablet " << ssId); + return false; + } + + TTxState* txState = context.SS->FindTx(OperationId); + Y_ABORT_UNLESS(txState); + Y_ABORT_UNLESS(txState->TxType == TTxState::TxCopySequence); + Y_ABORT_UNLESS(txState->State == TTxState::ConfigureParts); + + auto shardIdx = context.SS->MustGetShardIdx(tabletId); + if (!txState->ShardsInProgress.erase(shardIdx)) { + LOG_WARN_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCreateSequence TConfigureParts HandleReply ignoring duplicate TEvCreateSequenceResult" + << " shardId# " << tabletId + << " status# " << status + << " operationId# " << OperationId + << " at tablet " << ssId); + return false; + } + + context.OnComplete.UnbindMsgFromPipe(OperationId, tabletId, txState->TargetPathId); + + if (txState->ShardsInProgress.empty()) { + NIceDb::TNiceDb db(context.GetDB()); + context.SS->ChangeTxState(db, OperationId, TTxState::Propose); + context.OnComplete.ActivateTx(OperationId); + return true; + } + + return false; + } + + bool ProgressState(TOperationContext& context) override { + auto ssId = context.SS->SelfTabletId(); + LOG_DEBUG_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TConfigureParts ProgressState" + << " operationId# " << OperationId + << " at tablet " << ssId); + + TTxState* txState = context.SS->FindTx(OperationId); + Y_ABORT_UNLESS(txState); + Y_ABORT_UNLESS(txState->TxType == TTxState::TxCopySequence); + Y_ABORT_UNLESS(!txState->Shards.empty()); + + txState->ClearShardsInProgress(); + + Y_ABORT_UNLESS(txState->Shards.size() == 1); + for (auto shard : txState->Shards) { + auto shardIdx = shard.Idx; + auto tabletId = context.SS->ShardInfos.at(shardIdx).TabletID; + Y_ABORT_UNLESS(shard.TabletType == ETabletType::SequenceShard); + Y_ABORT_UNLESS(tabletId != InvalidTabletId); + + auto event = MakeHolder<NSequenceShard::TEvSequenceShard::TEvCreateSequence>(txState->TargetPathId); + event->Record.SetTxId(ui64(OperationId.GetTxId())); + event->Record.SetTxPartId(OperationId.GetSubTxId()); + event->Record.SetFrozen(true); + + LOG_DEBUG_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TConfigureParts ProgressState" + << " sending TEvCreateSequence to tablet " << tabletId + << " operationId# " << OperationId + << " at tablet " << ssId); + + context.OnComplete.BindMsgToPipe(OperationId, tabletId, txState->TargetPathId, event.Release()); + + // Wait for results from this shard + txState->ShardsInProgress.insert(shardIdx); + } + + return false; + } +}; + + +class TPropose: public TSubOperationState { +private: + TOperationId OperationId; + + TString DebugHint() const override { + return TStringBuilder() + << "TCopySequence TPropose" + << " operationId#" << OperationId; + } + +public: + TPropose(TOperationId id) + : OperationId(id) + { + IgnoreMessages(DebugHint(), { + NSequenceShard::TEvSequenceShard::TEvCreateSequenceResult::EventType, + }); + } + + bool HandleReply(TEvPrivate::TEvOperationPlan::TPtr& ev, TOperationContext& context) override { + auto step = TStepId(ev->Get()->StepId); + auto ssId = context.SS->SelfTabletId(); + + LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + DebugHint() << " HandleReply TEvOperationPlan" + << ", at schemeshard: " << ssId); + + TTxState* txState = context.SS->FindTx(OperationId); + if (!txState) { + return false; + } + Y_ABORT_UNLESS(txState->TxType == TTxState::TxCopySequence); + + TPathId pathId = txState->TargetPathId; + TPathElement::TPtr path = context.SS->PathsById.at(pathId); + + Y_VERIFY_S(context.SS->Sequences.contains(pathId), "Sequence not found. PathId: " << pathId); + TSequenceInfo::TPtr sequenceInfo = context.SS->Sequences.at(pathId); + Y_ABORT_UNLESS(sequenceInfo); + TSequenceInfo::TPtr alterData = sequenceInfo->AlterData; + Y_ABORT_UNLESS(alterData); + + NIceDb::TNiceDb db(context.GetDB()); + + path->StepCreated = step; + context.SS->PersistCreateStep(db, pathId, step); + + context.SS->Sequences[pathId] = alterData; + context.SS->PersistSequenceAlterRemove(db, pathId); + context.SS->PersistSequence(db, pathId, *alterData); + + auto parentDir = context.SS->PathsById.at(path->ParentPathId); + if (parentDir->IsLikeDirectory()) { + ++parentDir->DirAlterVersion; + context.SS->PersistPathDirAlterVersion(db, parentDir); + } + context.SS->ClearDescribePathCaches(parentDir); + context.OnComplete.PublishToSchemeBoard(OperationId, parentDir->PathId); + + context.SS->ClearDescribePathCaches(path); + context.OnComplete.PublishToSchemeBoard(OperationId, pathId); + + context.SS->ChangeTxState(db, OperationId, TTxState::CopyTableBarrier); + return true; + } + + bool ProgressState(TOperationContext& context) override { + TTabletId ssId = context.SS->SelfTabletId(); + + LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + DebugHint() << " ProgressState" + << ", at schemeshard: " << ssId); + + TTxState* txState = context.SS->FindTx(OperationId); + Y_ABORT_UNLESS(txState); + Y_ABORT_UNLESS(txState->TxType == TTxState::TxCopySequence); + + context.OnComplete.ProposeToCoordinator(OperationId, txState->TargetPathId, TStepId(0)); + return false; + } +}; + +class TCopyTableBarrier: public TSubOperationState { +private: + TOperationId OperationId; + + TString DebugHint() const override { + return TStringBuilder() + << "TCopySequence TCopyTableBarrier" + << " operationId: " << OperationId; + } + +public: + TCopyTableBarrier(TOperationId id) + : OperationId(id) + { + IgnoreMessages(DebugHint(), { + TEvPrivate::TEvOperationPlan::EventType, + NSequenceShard::TEvSequenceShard::TEvCreateSequenceResult::EventType, + }); + } + + bool HandleReply(TEvPrivate::TEvCompleteBarrier::TPtr& ev, TOperationContext& context) override { + TTabletId ssId = context.SS->SelfTabletId(); + + LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + DebugHint() << " HandleReply TEvPrivate::TEvCompleteBarrier" + << ", msg: " << ev->Get()->ToString() + << ", at tablet" << ssId); + + NIceDb::TNiceDb db(context.GetDB()); + + TTxState* txState = context.SS->FindTx(OperationId); + Y_ABORT_UNLESS(txState); + + context.SS->ChangeTxState(db, OperationId, TTxState::ProposedCopySequence); + return true; + } + + bool ProgressState(TOperationContext& context) override { + TTxState* txState = context.SS->FindTx(OperationId); + Y_ABORT_UNLESS(txState); + + LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + DebugHint() << "ProgressState, operation type " + << TTxState::TypeName(txState->TxType)); + + context.OnComplete.Barrier(OperationId, "CopyTableBarrier"); + return false; + } +}; + +class TProposedCopySequence : public TSubOperationState { +private: + TOperationId OperationId; + NKikimrTxSequenceShard::TEvGetSequenceResult GetSequenceResult; + + TString DebugHint() const override { + return TStringBuilder() + << "TCopySequence TProposedCopySequence" + << " operationId#" << OperationId; + } + + void UpdateSequenceDescription(NKikimrSchemeOp::TSequenceDescription& descr) { + descr.SetStartValue(GetSequenceResult.GetStartValue()); + descr.SetMinValue(GetSequenceResult.GetMinValue()); + descr.SetMaxValue(GetSequenceResult.GetMaxValue()); + descr.SetCache(GetSequenceResult.GetCache()); + descr.SetIncrement(GetSequenceResult.GetIncrement()); + descr.SetCycle(GetSequenceResult.GetCycle()); + auto* setValMsg = descr.MutableSetVal(); + setValMsg->SetNextValue(GetSequenceResult.GetNextValue()); + setValMsg->SetNextUsed(GetSequenceResult.GetNextUsed()); + } + +public: + TProposedCopySequence(TOperationId id) + : OperationId(id) + { + IgnoreMessages(DebugHint(), { + TEvPrivate::TEvOperationPlan::EventType, + TEvPrivate::TEvCompleteBarrier::EventType, + NSequenceShard::TEvSequenceShard::TEvCreateSequenceResult::EventType, + }); + } + + bool HandleReply(NSequenceShard::TEvSequenceShard::TEvRestoreSequenceResult::TPtr& ev, TOperationContext& context) override { + auto ssId = context.SS->SelfTabletId(); + auto tabletId = TTabletId(ev->Get()->Record.GetOrigin()); + auto status = ev->Get()->Record.GetStatus(); + + LOG_DEBUG_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TProposedCopySequence HandleReply TEvRestoreSequenceResult" + << " shardId# " << tabletId + << " status# " << status + << " operationId# " << OperationId + << " at tablet " << ssId); + + switch (status) { + case NKikimrTxSequenceShard::TEvRestoreSequenceResult::SUCCESS: + case NKikimrTxSequenceShard::TEvRestoreSequenceResult::SEQUENCE_ALREADY_ACTIVE: break; + default: + // Treat all other replies as unexpected and spurious + LOG_WARN_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TProposedCopySequence HandleReply ignoring unexpected TEvRestoreSequenceResult" + << " shardId# " << tabletId + << " status# " << status + << " operationId# " << OperationId + << " at tablet " << ssId); + return false; + } + + TTxState* txState = context.SS->FindTx(OperationId); + context.OnComplete.UnbindMsgFromPipe(OperationId, tabletId, txState->TargetPathId); + + Y_ABORT_UNLESS(txState); + Y_ABORT_UNLESS(txState->TxType == TTxState::TxCopySequence); + Y_ABORT_UNLESS(txState->State == TTxState::ProposedCopySequence); + + auto shardIdx = context.SS->MustGetShardIdx(tabletId); + if (!txState->ShardsInProgress.erase(shardIdx)) { + LOG_WARN_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TProposedCopySequence HandleReply ignoring duplicate TEvRestoreSequenceResult" + << " shardId# " << tabletId + << " status# " << status + << " operationId# " << OperationId + << " at tablet " << ssId); + return false; + } + + if (!txState->ShardsInProgress.empty()) { + return false; + } + + TPathId pathId = txState->TargetPathId; + + NIceDb::TNiceDb db(context.GetDB()); + + auto sequenceInfo = context.SS->Sequences.at(pathId); + UpdateSequenceDescription(sequenceInfo->Description); + + context.SS->PersistSequence(db, pathId, *sequenceInfo); + + context.SS->ChangeTxState(db, OperationId, TTxState::Done); + context.OnComplete.ActivateTx(OperationId); + return true; + } + + bool HandleReply(NSequenceShard::TEvSequenceShard::TEvGetSequenceResult::TPtr& ev, TOperationContext& context) override { + auto ssId = context.SS->SelfTabletId(); + auto tabletId = TTabletId(ev->Get()->Record.GetOrigin()); + auto status = ev->Get()->Record.GetStatus(); + + LOG_DEBUG_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TProposedCopySequence HandleReply TEvGetSequenceResult" + << " shardId# " << tabletId + << " status# " << status + << " operationId# " << OperationId + << " at tablet " << ssId); + + switch (status) { + case NKikimrTxSequenceShard::TEvGetSequenceResult::SUCCESS: break; + default: + // Treat all other replies as unexpected and spurious + LOG_WARN_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TProposedCopySequence HandleReply ignoring unexpected TEvGetSequenceResult" + << " shardId# " << tabletId + << " status# " << status + << " operationId# " << OperationId + << " at tablet " << ssId); + return false; + } + + TTxState* txState = context.SS->FindTx(OperationId); + Y_ABORT_UNLESS(txState); + Y_ABORT_UNLESS(txState->TxType == TTxState::TxCopySequence); + Y_ABORT_UNLESS(txState->State == TTxState::ProposedCopySequence); + + auto shardIdx = context.SS->MustGetShardIdx(tabletId); + + context.OnComplete.UnbindMsgFromPipe(OperationId, tabletId, txState->SourcePathId); + + if (!txState->ShardsInProgress.erase(shardIdx)) { + LOG_WARN_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TProposedCopySequence HandleReply ignoring duplicate TEvGetSequenceResult" + << " shardId# " << tabletId + << " status# " << status + << " operationId# " << OperationId + << " at tablet " << ssId); + return false; + } + + if (!txState->ShardsInProgress.empty()) { + return false; + } + + GetSequenceResult = ev->Get()->Record; + + Y_ABORT_UNLESS(txState->Shards.size() == 1); + for (auto shard : txState->Shards) { + auto shardIdx = shard.Idx; + auto currentTabletId = context.SS->ShardInfos.at(shardIdx).TabletID; + + Y_ABORT_UNLESS(currentTabletId != InvalidTabletId); + + auto event = MakeHolder<NSequenceShard::TEvSequenceShard::TEvRestoreSequence>( + txState->TargetPathId, GetSequenceResult); + + event->Record.SetTxId(ui64(OperationId.GetTxId())); + event->Record.SetTxPartId(OperationId.GetSubTxId()); + + LOG_DEBUG_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TProposedCopySequence ProgressState" + << " sending TEvRestoreSequence to tablet " << currentTabletId + << " operationId# " << OperationId + << " at tablet " << ssId); + + context.OnComplete.BindMsgToPipe(OperationId, currentTabletId, txState->TargetPathId, event.Release()); + + // Wait for results from this shard + txState->ShardsInProgress.insert(shardIdx); + } + + return false; + } + + bool ProgressState(TOperationContext& context) override { + auto ssId = context.SS->SelfTabletId(); + LOG_DEBUG_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TProposedCopySequence ProgressState" + << " operationId# " << OperationId + << " at tablet " << ssId); + + TTxState* txState = context.SS->FindTx(OperationId); + Y_ABORT_UNLESS(txState); + Y_ABORT_UNLESS(txState->TxType == TTxState::TxCopySequence); + Y_ABORT_UNLESS(!txState->Shards.empty()); + Y_ABORT_UNLESS(txState->SourcePathId != InvalidPathId); + + Y_ABORT_UNLESS(txState->Shards.size() == 1); + for (auto shard : txState->Shards) { + auto shardIdx = shard.Idx; + auto tabletId = context.SS->ShardInfos.at(shardIdx).TabletID; + + auto event = MakeHolder<NSequenceShard::TEvSequenceShard::TEvGetSequence>(txState->SourcePathId); + event->Record.SetTxId(ui64(OperationId.GetTxId())); + event->Record.SetTxPartId(OperationId.GetSubTxId()); + + LOG_DEBUG_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence TProposedCopySequence ProgressState" + << " sending TEvGetSequence to tablet " << tabletId + << " operationId# " << OperationId + << " at tablet " << ssId); + + context.OnComplete.BindMsgToPipe(OperationId, tabletId, txState->SourcePathId, event.Release()); + + txState->ShardsInProgress.insert(shardIdx); + } + + return false; + } +}; + +class TCopySequence: public TSubOperation { + + static TTxState::ETxState NextState() { + return TTxState::CreateParts; + } + + TTxState::ETxState NextState(TTxState::ETxState state) const override { + switch (state) { + case TTxState::Waiting: + case TTxState::CreateParts: + return TTxState::ConfigureParts; + case TTxState::ConfigureParts: + return TTxState::Propose; + case TTxState::Propose: + return TTxState::CopyTableBarrier; + case TTxState::CopyTableBarrier: + return TTxState::ProposedCopySequence; + case TTxState::ProposedCopySequence: + return TTxState::Done; + default: + return TTxState::Invalid; + } + return TTxState::Invalid; + } + + TSubOperationState::TPtr SelectStateFunc(TTxState::ETxState state) override { + using TPtr = TSubOperationState::TPtr; + + switch (state) { + case TTxState::Waiting: + case TTxState::CreateParts: + return TPtr(new TCreateParts(OperationId)); + case TTxState::ConfigureParts: + return TPtr(new TConfigureParts(OperationId)); + case TTxState::Propose: + return TPtr(new TPropose(OperationId)); + case TTxState::CopyTableBarrier: + return TPtr(new TCopyTableBarrier(OperationId)); + case TTxState::ProposedCopySequence: + return TPtr(new TProposedCopySequence(OperationId)); + case TTxState::Done: + return TPtr(new TDone(OperationId)); + default: + return nullptr; + } + } + +public: + using TSubOperation::TSubOperation; + + THolder<TProposeResponse> Propose(const TString& owner, TOperationContext& context) override { + const TTabletId ssId = context.SS->SelfTabletId(); + + const auto acceptExisted = !Transaction.GetFailOnExist(); + const TString& parentPathStr = Transaction.GetWorkingDir(); + auto& copySequence = Transaction.GetCopySequence(); + auto& descr = Transaction.GetSequence(); + const TString& name = descr.GetName(); + + LOG_NOTICE_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "TCopySequence Propose" + << ", path: " << parentPathStr << "/" << name + << ", opId: " << OperationId + << ", at schemeshard: " << ssId); + + TEvSchemeShard::EStatus status = NKikimrScheme::StatusAccepted; + auto result = MakeHolder<TProposeResponse>(status, ui64(OperationId.GetTxId()), ui64(ssId)); + + NSchemeShard::TPath parentPath = NSchemeShard::TPath::Resolve(parentPathStr, context.SS); + { + NSchemeShard::TPath::TChecker checks = parentPath.Check(); + checks + .NotUnderDomainUpgrade() + .IsAtLocalSchemeShard() + .IsResolved() + .NotDeleted() + .NotUnderDeleting() + .IsCommonSensePath(); + + if (checks) { + if (parentPath->IsTable()) { + // allow immediately inside a normal table + if (parentPath.IsUnderOperation()) { + checks.IsUnderTheSameOperation(OperationId.GetTxId()); // allowed only as part of consistent operations + } + } else { + // otherwise don't allow unexpected object types + checks.IsLikeDirectory(); + } + } + + if (!checks) { + result->SetError(checks.GetStatus(), checks.GetError()); + return result; + } + } + + TPath srcPath = TPath::Resolve(copySequence.GetCopyFrom(), context.SS); + { + TPath::TChecker checks = srcPath.Check(); + checks + .NotEmpty() + .IsResolved() + .NotDeleted() + .NotUnderDeleting() + .IsSequence() + .NotUnderTheSameOperation(OperationId.GetTxId()) + .NotUnderOperation(); + + if (checks) { + if (!parentPath->IsTable()) { + // otherwise don't allow unexpected object types + checks.IsLikeDirectory(); + } + } + + if (!checks) { + result->SetError(checks.GetStatus(), checks.GetError()); + return result; + } + } + + auto domainPathId = parentPath.GetPathIdForDomain(); + auto domainInfo = parentPath.DomainInfo(); + + Y_ABORT_UNLESS(context.SS->Sequences.contains(srcPath.Base()->PathId)); + TSequenceInfo::TPtr srcSequence = context.SS->Sequences.at(srcPath.Base()->PathId); + Y_ABORT_UNLESS(!srcSequence->Sharding.GetSequenceShards().empty()); + + const auto& protoSequenceShard = *srcSequence->Sharding.GetSequenceShards().rbegin(); + TShardIdx sequenceShard = FromProto(protoSequenceShard); + + const TString acl = Transaction.GetModifyACL().GetDiffACL(); + + NSchemeShard::TPath dstPath = parentPath.Child(name); + { + NSchemeShard::TPath::TChecker checks = dstPath.Check(); + checks.IsAtLocalSchemeShard(); + if (dstPath.IsResolved()) { + checks + .IsResolved() + .NotUnderDeleting() + .FailOnExist(TPathElement::EPathType::EPathTypeSequence, acceptExisted); + } else { + checks + .NotEmpty() + .NotResolved(); + } + + if (checks) { + checks.IsValidLeafName(); + + if (!parentPath->IsTable()) { + checks.DepthLimit(); + } + + checks + .PathsLimit() + .DirChildrenLimit() + .IsTheSameDomain(srcPath) + .IsValidACL(acl); + } + + if (!checks) { + result->SetError(checks.GetStatus(), checks.GetError()); + if (dstPath.IsResolved()) { + result->SetPathCreateTxId(ui64(dstPath->CreateTxId)); + result->SetPathId(dstPath->PathId.LocalPathId); + } + return result; + } + } + + TString errStr; + + if (!TSequenceInfo::ValidateCreate(descr, errStr)) { + result->SetError(NKikimrScheme::StatusSchemeError, errStr); + return result; + } + + if (!context.SS->CheckApplyIf(Transaction, errStr)) { + result->SetError(NKikimrScheme::StatusPreconditionFailed, errStr); + return result; + } + + dstPath.MaterializeLeaf(owner); + result->SetPathId(dstPath->PathId.LocalPathId); + context.SS->TabletCounters->Simple()[COUNTER_SEQUENCE_COUNT].Add(1); + + srcPath.Base()->PathState = TPathElement::EPathState::EPathStateCopying; + srcPath.Base()->LastTxId = OperationId.GetTxId(); + + TPathId pathId = dstPath->PathId; + dstPath->CreateTxId = OperationId.GetTxId(); + dstPath->LastTxId = OperationId.GetTxId(); + dstPath->PathState = TPathElement::EPathState::EPathStateCreate; + dstPath->PathType = TPathElement::EPathType::EPathTypeSequence; + + if (parentPath->HasActiveChanges()) { + TTxId parentTxId = parentPath->PlannedToCreate() ? parentPath->CreateTxId : parentPath->LastTxId; + context.OnComplete.Dependence(parentTxId, OperationId.GetTxId()); + } + + TTxState& txState = + context.SS->CreateTx(OperationId, TTxState::TxCopySequence, pathId, srcPath.Base()->PathId); + txState.State = TTxState::Propose; + + TSequenceInfo::TPtr sequenceInfo = new TSequenceInfo(0); + TSequenceInfo::TPtr alterData = sequenceInfo->CreateNextVersion(); + alterData->Description = descr; + + txState.Shards.emplace_back(sequenceShard, ETabletType::SequenceShard, TTxState::ConfigureParts); + auto& shardInfo = context.SS->ShardInfos.at(sequenceShard); + if (shardInfo.CurrentTxId != OperationId.GetTxId()) { + context.OnComplete.Dependence(shardInfo.CurrentTxId, OperationId.GetTxId()); + } + + { + auto* p = alterData->Sharding.AddSequenceShards(); + p->SetOwnerId(sequenceShard.GetOwnerId()); + p->SetLocalId(ui64(sequenceShard.GetLocalId())); + } + + NIceDb::TNiceDb db(context.GetDB()); + + context.SS->ChangeTxState(db, OperationId, txState.State); + context.OnComplete.ActivateTx(OperationId); + + context.SS->PersistPath(db, dstPath->PathId); + if (!acl.empty()) { + dstPath->ApplyACL(acl); + context.SS->PersistACL(db, dstPath.Base()); + } + + context.SS->Sequences[pathId] = sequenceInfo; + context.SS->PersistSequence(db, pathId, *sequenceInfo); + context.SS->PersistSequenceAlter(db, pathId, *alterData); + context.SS->IncrementPathDbRefCount(pathId); + + context.SS->PersistTxState(db, OperationId); + context.SS->PersistUpdateNextPathId(db); + + for (auto shard : txState.Shards) { + if (shard.Operation == TTxState::CreateParts) { + context.SS->PersistChannelsBinding(db, shard.Idx, context.SS->ShardInfos.at(shard.Idx).BindedChannels); + context.SS->PersistShardMapping(db, shard.Idx, InvalidTabletId, domainPathId, OperationId.GetTxId(), shard.TabletType); + } + } + + ++parentPath->DirAlterVersion; + context.SS->PersistPathDirAlterVersion(db, parentPath.Base()); + context.SS->ClearDescribePathCaches(parentPath.Base()); + context.OnComplete.PublishToSchemeBoard(OperationId, parentPath->PathId); + + context.SS->ClearDescribePathCaches(dstPath.Base()); + context.OnComplete.PublishToSchemeBoard(OperationId, dstPath->PathId); + + domainInfo->IncPathsInside(); + parentPath->IncAliveChildren(); + + SetState(NextState()); + return result; + } + + void AbortPropose(TOperationContext&) override { + Y_ABORT("no AbortPropose for TCopySequence"); + } + + void AbortUnsafe(TTxId, TOperationContext&) override { + Y_ABORT("no AbortUnsafe for TCopySequence"); + } +}; + +} + +namespace NKikimr::NSchemeShard { + +ISubOperation::TPtr CreateCopySequence(TOperationId id, const TTxTransaction& tx) +{ + return MakeSubOperation<TCopySequence>(id, tx); +} + +ISubOperation::TPtr CreateCopySequence(TOperationId id, TTxState::ETxState state) { + return MakeSubOperation<TCopySequence>(id, state); +} + +} diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_copy_table.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_copy_table.cpp index d67b2bf91a00..a69fb2956a37 100644 --- a/ydb/core/tx/schemeshard/schemeshard__operation_copy_table.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__operation_copy_table.cpp @@ -1,6 +1,7 @@ #include "schemeshard__operation_part.h" #include "schemeshard__operation_common.h" #include "schemeshard_impl.h" +#include "schemeshard_tx_infly.h" #include <ydb/core/base/subdomain.h> @@ -225,7 +226,62 @@ class TPropose: public TSubOperationState { } }; +class TCopyTableBarrier: public TSubOperationState { +private: + TOperationId OperationId; + + TString DebugHint() const override { + return TStringBuilder() + << "TCopyTable TCopyTableBarrier" + << " operationId: " << OperationId; + } + +public: + TCopyTableBarrier(TOperationId id) + : OperationId(id) + { + IgnoreMessages(DebugHint(), + { TEvHive::TEvCreateTabletReply::EventType + , TEvDataShard::TEvProposeTransactionResult::EventType + , TEvPrivate::TEvOperationPlan::EventType + , TEvDataShard::TEvSchemaChanged::EventType } + ); + } + + bool HandleReply(TEvPrivate::TEvCompleteBarrier::TPtr& ev, TOperationContext& context) override { + TTabletId ssId = context.SS->SelfTabletId(); + + LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + DebugHint() << " HandleReply TEvPrivate::TEvCompleteBarrier" + << ", msg: " << ev->Get()->ToString() + << ", at tablet" << ssId); + + NIceDb::TNiceDb db(context.GetDB()); + + TTxState* txState = context.SS->FindTx(OperationId); + Y_ABORT_UNLESS(txState); + + context.SS->ChangeTxState(db, OperationId, TTxState::Done); + return true; + } + + bool ProgressState(TOperationContext& context) override { + TTxState* txState = context.SS->FindTx(OperationId); + Y_ABORT_UNLESS(txState); + + LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + DebugHint() << "ProgressState, operation type " + << TTxState::TypeName(txState->TxType)); + + context.OnComplete.Barrier(OperationId, "CopyTableBarrier"); + return false; + } +}; + class TCopyTable: public TSubOperation { + + THashSet<TString> LocalSequences; + static TTxState::ETxState NextState() { return TTxState::CreateParts; } @@ -240,6 +296,8 @@ class TCopyTable: public TSubOperation { case TTxState::Propose: return TTxState::ProposedWaitParts; case TTxState::ProposedWaitParts: + return TTxState::CopyTableBarrier; + case TTxState::CopyTableBarrier: return TTxState::Done; default: return TTxState::Invalid; @@ -256,7 +314,9 @@ class TCopyTable: public TSubOperation { case TTxState::Propose: return MakeHolder<TPropose>(OperationId); case TTxState::ProposedWaitParts: - return MakeHolder<NTableState::TProposedWaitParts>(OperationId); + return MakeHolder<NTableState::TProposedWaitParts>(OperationId, TTxState::ETxState::CopyTableBarrier); + case TTxState::CopyTableBarrier: + return MakeHolder<TCopyTableBarrier>(OperationId); case TTxState::Done: return MakeHolder<TDone>(OperationId); default: @@ -267,6 +327,12 @@ class TCopyTable: public TSubOperation { public: using TSubOperation::TSubOperation; + explicit TCopyTable(const TOperationId& id, const TTxTransaction& tx, const THashSet<TString>& localSequences) + : TSubOperation(id, tx) + , LocalSequences(localSequences) + { + } + bool IsShadowDataAllowed() const { return AppData()->AllowShadowDataInSchemeShardForTests; } @@ -459,7 +525,8 @@ class TCopyTable: public TSubOperation { const NScheme::TTypeRegistry* typeRegistry = AppData()->TypeRegistry; const TSchemeLimits& limits = domainInfo->GetSchemeLimits(); - TTableInfo::TAlterDataPtr alterData = TTableInfo::CreateAlterData(nullptr, schema, *typeRegistry, limits, *domainInfo, context.SS->EnableTablePgTypes, errStr); + TTableInfo::TAlterDataPtr alterData = TTableInfo::CreateAlterData(nullptr, schema, *typeRegistry, + limits, *domainInfo, context.SS->EnableTablePgTypes, errStr, LocalSequences); if (!alterData.Get()) { result->SetError(NKikimrScheme::StatusSchemeError, errStr); return result; @@ -626,8 +693,9 @@ class TCopyTable: public TSubOperation { namespace NKikimr::NSchemeShard { -ISubOperation::TPtr CreateCopyTable(TOperationId id, const TTxTransaction& tx) { - return MakeSubOperation<TCopyTable>(id, tx); +ISubOperation::TPtr CreateCopyTable(TOperationId id, const TTxTransaction& tx, const THashSet<TString>& localSequences) +{ + return MakeSubOperation<TCopyTable>(id, tx, localSequences); } ISubOperation::TPtr CreateCopyTable(TOperationId id, TTxState::ETxState state) { @@ -659,6 +727,25 @@ TVector<ISubOperation::TPtr> CreateCopyTable(TOperationId nextId, const TTxTrans } } + THashSet<TString> sequences; + for (auto& child: srcPath.Base()->GetChildren()) { + auto name = child.first; + auto pathId = child.second; + + TPath childPath = srcPath.Child(name); + if (!childPath.IsSequence() || childPath.IsDeleted()) { + continue; + } + + Y_ABORT_UNLESS(childPath.Base()->PathId == pathId); + + TSequenceInfo::TPtr sequenceInfo = context.SS->Sequences.at(pathId); + const auto& sequenceDesc = sequenceInfo->Description; + const auto& sequenceName = sequenceDesc.GetName(); + + sequences.emplace(sequenceName); + } + TPath workDir = TPath::Resolve(tx.GetWorkingDir(), context.SS); TPath dstPath = workDir.Child(copying.GetName()); @@ -674,15 +761,27 @@ TVector<ISubOperation::TPtr> CreateCopyTable(TOperationId nextId, const TTxTrans operation->SetIsBackup(copying.GetIsBackup()); operation->MutablePartitionConfig()->CopyFrom(copying.GetPartitionConfig()); - result.push_back(CreateCopyTable(NextPartId(nextId, result), schema)); + result.push_back(CreateCopyTable(NextPartId(nextId, result), schema, sequences)); } + TVector<NKikimrSchemeOp::TSequenceDescription> sequenceDescriptions; for (auto& child: srcPath.Base()->GetChildren()) { auto name = child.first; auto pathId = child.second; TPath childPath = srcPath.Child(name); - if (!childPath.IsTableIndex() || childPath.IsDeleted()) { + if (childPath.IsDeleted()) { + continue; + } + + if (childPath.IsSequence()) { + TSequenceInfo::TPtr sequenceInfo = context.SS->Sequences.at(pathId); + const auto& sequenceDesc = sequenceInfo->Description; + sequenceDescriptions.push_back(sequenceDesc); + continue; + } + + if (!childPath.IsTableIndex()) { continue; } @@ -727,6 +826,18 @@ TVector<ISubOperation::TPtr> CreateCopyTable(TOperationId nextId, const TTxTrans } } + for (auto&& sequenceDescription : sequenceDescriptions) { + auto scheme = TransactionTemplate( + tx.GetWorkingDir() + "/" + copying.GetName(), + NKikimrSchemeOp::EOperationType::ESchemeOpCreateSequence); + scheme.SetFailOnExist(tx.GetFailOnExist()); + + auto* copySequence = scheme.MutableCopySequence(); + copySequence->SetCopyFrom(copying.GetCopyFromTable() + "/" + sequenceDescription.GetName()); + *scheme.MutableSequence() = std::move(sequenceDescription); + + result.push_back(CreateCopySequence(NextPartId(nextId, result), scheme)); + } return result; } diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_create_sequence.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_create_sequence.cpp index 6c2a700a8a7f..8745837bd96a 100644 --- a/ydb/core/tx/schemeshard/schemeshard__operation_create_sequence.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__operation_create_sequence.cpp @@ -142,6 +142,10 @@ class TConfigureParts : public TSubOperationState { if (alterData->Description.HasCycle()) { event->Record.SetCycle(alterData->Description.GetCycle()); } + if (alterData->Description.HasSetVal()) { + event->Record.MutableSetVal()->SetNextValue(alterData->Description.GetSetVal().GetNextValue()); + event->Record.MutableSetVal()->SetNextUsed(alterData->Description.GetSetVal().GetNextUsed()); + } LOG_DEBUG_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, "TCreateSequence TConfigureParts ProgressState" diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_part.h b/ydb/core/tx/schemeshard/schemeshard__operation_part.h index 0a9cf8b6b8b3..1dadd2059f44 100644 --- a/ydb/core/tx/schemeshard/schemeshard__operation_part.h +++ b/ydb/core/tx/schemeshard/schemeshard__operation_part.h @@ -50,6 +50,7 @@ action(NSequenceShard::TEvSequenceShard::TEvFreezeSequenceResult, NSchemeShard::TXTYPE_SEQUENCESHARD_FREEZE_SEQUENCE_RESULT) \ action(NSequenceShard::TEvSequenceShard::TEvRestoreSequenceResult, NSchemeShard::TXTYPE_SEQUENCESHARD_RESTORE_SEQUENCE_RESULT) \ action(NSequenceShard::TEvSequenceShard::TEvRedirectSequenceResult, NSchemeShard::TXTYPE_SEQUENCESHARD_REDIRECT_SEQUENCE_RESULT) \ + action(NSequenceShard::TEvSequenceShard::TEvGetSequenceResult, NSchemeShard::TXTYPE_SEQUENCESHARD_GET_SEQUENCE_RESULT) \ \ action(NReplication::TEvController::TEvCreateReplicationResult, NSchemeShard::TXTYPE_CREATE_REPLICATION_RESULT) \ action(NReplication::TEvController::TEvDropReplicationResult, NSchemeShard::TXTYPE_DROP_REPLICATION_RESULT) \ @@ -340,7 +341,8 @@ ISubOperation::TPtr CreateForceDropUnsafe(TOperationId id, TTxState::ETxState st ISubOperation::TPtr CreateNewTable(TOperationId id, const TTxTransaction& tx, const THashSet<TString>& localSequences = { }); ISubOperation::TPtr CreateNewTable(TOperationId id, TTxState::ETxState state); -ISubOperation::TPtr CreateCopyTable(TOperationId id, const TTxTransaction& tx); +ISubOperation::TPtr CreateCopyTable(TOperationId id, const TTxTransaction& tx, + const THashSet<TString>& localSequences = { }); ISubOperation::TPtr CreateCopyTable(TOperationId id, TTxState::ETxState state); TVector<ISubOperation::TPtr> CreateCopyTable(TOperationId nextId, const TTxTransaction& tx, TOperationContext& context); @@ -583,6 +585,8 @@ ISubOperation::TPtr CreateNewSequence(TOperationId id, const TTxTransaction& tx) ISubOperation::TPtr CreateNewSequence(TOperationId id, TTxState::ETxState state); ISubOperation::TPtr CreateDropSequence(TOperationId id, const TTxTransaction& tx); ISubOperation::TPtr CreateDropSequence(TOperationId id, TTxState::ETxState state); +ISubOperation::TPtr CreateCopySequence(TOperationId id, const TTxTransaction& tx); +ISubOperation::TPtr CreateCopySequence(TOperationId id, TTxState::ETxState state); ISubOperation::TPtr CreateNewReplication(TOperationId id, const TTxTransaction& tx); ISubOperation::TPtr CreateNewReplication(TOperationId id, TTxState::ETxState state); diff --git a/ydb/core/tx/schemeshard/schemeshard_export_flow_proposals.cpp b/ydb/core/tx/schemeshard/schemeshard_export_flow_proposals.cpp index c4514bec9002..92f5d532f37c 100644 --- a/ydb/core/tx/schemeshard/schemeshard_export_flow_proposals.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_export_flow_proposals.cpp @@ -82,6 +82,30 @@ static NKikimrSchemeOp::TPathDescription GetTableDescription(TSchemeShard* ss, c return record.GetPathDescription(); } +void FillSetValForSequences(TSchemeShard* ss, NKikimrSchemeOp::TTableDescription& description, + const TPathId& exportItemPathId) { + NKikimrSchemeOp::TDescribeOptions opts; + opts.SetReturnSetVal(true); + + auto pathDescription = DescribePath(ss, TlsActivationContext->AsActorContext(), exportItemPathId, opts); + auto tableDescription = pathDescription->GetRecord().GetPathDescription().GetTable(); + + THashMap<TString, NKikimrSchemeOp::TSequenceDescription::TSetVal> setValForSequences; + + for (const auto& sequenceDescription : tableDescription.GetSequences()) { + if (sequenceDescription.HasSetVal()) { + setValForSequences[sequenceDescription.GetName()] = sequenceDescription.GetSetVal(); + } + } + + for (auto& sequenceDescription : *description.MutableSequences()) { + auto it = setValForSequences.find(sequenceDescription.GetName()); + if (it != setValForSequences.end()) { + *sequenceDescription.MutableSetVal() = it->second; + } + } +} + THolder<TEvSchemeShard::TEvModifySchemeTransaction> BackupPropose( TSchemeShard* ss, TTxId txId, @@ -105,8 +129,14 @@ THolder<TEvSchemeShard::TEvModifySchemeTransaction> BackupPropose( task.SetNeedToBill(!exportInfo->UserSID || !ss->SystemBackupSIDs.contains(*exportInfo->UserSID)); const TPath sourcePath = TPath::Init(exportInfo->Items[itemIdx].SourcePathId, ss); - if (sourcePath.IsResolved()) { - task.MutableTable()->CopyFrom(GetTableDescription(ss, sourcePath.Base()->PathId)); + const TPath exportItemPath = exportPath.Child(ToString(itemIdx)); + if (sourcePath.IsResolved() && exportItemPath.IsResolved()) { + auto sourceDescription = GetTableDescription(ss, sourcePath.Base()->PathId); + if (sourceDescription.HasTable()) { + FillSetValForSequences( + ss, *sourceDescription.MutableTable(), exportItemPath.Base()->PathId); + } + task.MutableTable()->CopyFrom(sourceDescription); } task.SetSnapshotStep(exportInfo->SnapshotStep); diff --git a/ydb/core/tx/schemeshard/schemeshard_impl.cpp b/ydb/core/tx/schemeshard/schemeshard_impl.cpp index fad1fc55ae99..b1e6b778f781 100644 --- a/ydb/core/tx/schemeshard/schemeshard_impl.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_impl.cpp @@ -1433,6 +1433,7 @@ TPathElement::EPathState TSchemeShard::CalcPathState(TTxState::ETxType txType, T case TTxState::TxCreateColumnTable: case TTxState::TxCreateCdcStream: case TTxState::TxCreateSequence: + case TTxState::TxCopySequence: case TTxState::TxCreateReplication: case TTxState::TxCreateBlobDepot: case TTxState::TxCreateExternalTable: @@ -4506,6 +4507,7 @@ void TSchemeShard::StateWork(STFUNC_SIG) { HFuncTraced(NSequenceShard::TEvSequenceShard::TEvFreezeSequenceResult, Handle); HFuncTraced(NSequenceShard::TEvSequenceShard::TEvRestoreSequenceResult, Handle); HFuncTraced(NSequenceShard::TEvSequenceShard::TEvRedirectSequenceResult, Handle); + HFuncTraced(NSequenceShard::TEvSequenceShard::TEvGetSequenceResult, Handle); // replication HFuncTraced(NReplication::TEvController::TEvCreateReplicationResult, Handle); @@ -5787,6 +5789,17 @@ void TSchemeShard::Handle(NSequenceShard::TEvSequenceShard::TEvRedirectSequenceR Execute(CreateTxOperationReply(TOperationId(txId, partId), ev), ctx); } +void TSchemeShard::Handle(NSequenceShard::TEvSequenceShard::TEvGetSequenceResult::TPtr &ev, const TActorContext &ctx) { + LOG_DEBUG_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "Handle TEvGetSequenceResult" + << ", at schemeshard: " << TabletID() + << ", message: " << ev->Get()->Record.ShortDebugString()); + + TTxId txId = TTxId(ev->Get()->Record.GetTxId()); + TSubTxId partId = TSubTxId(ev->Get()->Record.GetTxPartId()); + Execute(CreateTxOperationReply(TOperationId(txId, partId), ev), ctx); +} + void TSchemeShard::Handle(NReplication::TEvController::TEvCreateReplicationResult::TPtr &ev, const TActorContext &ctx) { LOG_DEBUG_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, "Handle TEvCreateReplicationResult" diff --git a/ydb/core/tx/schemeshard/schemeshard_impl.h b/ydb/core/tx/schemeshard/schemeshard_impl.h index 69126c4e7967..9b6a60adee34 100644 --- a/ydb/core/tx/schemeshard/schemeshard_impl.h +++ b/ydb/core/tx/schemeshard/schemeshard_impl.h @@ -992,8 +992,10 @@ class TSchemeShard void DescribeTableIndex(const TPathId& pathId, const TString& name, TTableIndexInfo::TPtr indexInfo, NKikimrSchemeOp::TIndexDescription& entry); void DescribeCdcStream(const TPathId& pathId, const TString& name, NKikimrSchemeOp::TCdcStreamDescription& desc); void DescribeCdcStream(const TPathId& pathId, const TString& name, TCdcStreamInfo::TPtr info, NKikimrSchemeOp::TCdcStreamDescription& desc); - void DescribeSequence(const TPathId& pathId, const TString& name, NKikimrSchemeOp::TSequenceDescription& desc); - void DescribeSequence(const TPathId& pathId, const TString& name, TSequenceInfo::TPtr info, NKikimrSchemeOp::TSequenceDescription& desc); + void DescribeSequence(const TPathId& pathId, const TString& name, + NKikimrSchemeOp::TSequenceDescription& desc, bool fillSetVal = false); + void DescribeSequence(const TPathId& pathId, const TString& name, TSequenceInfo::TPtr info, + NKikimrSchemeOp::TSequenceDescription& desc, bool fillSetVal = false); void DescribeReplication(const TPathId& pathId, const TString& name, NKikimrSchemeOp::TReplicationDescription& desc); void DescribeReplication(const TPathId& pathId, const TString& name, TReplicationInfo::TPtr info, NKikimrSchemeOp::TReplicationDescription& desc); void DescribeBlobDepot(const TPathId& pathId, const TString& name, NKikimrSchemeOp::TBlobDepotDescription& desc); @@ -1034,6 +1036,7 @@ class TSchemeShard void Handle(NSequenceShard::TEvSequenceShard::TEvFreezeSequenceResult::TPtr &ev, const TActorContext &ctx); void Handle(NSequenceShard::TEvSequenceShard::TEvRestoreSequenceResult::TPtr &ev, const TActorContext &ctx); void Handle(NSequenceShard::TEvSequenceShard::TEvRedirectSequenceResult::TPtr &ev, const TActorContext &ctx); + void Handle(NSequenceShard::TEvSequenceShard::TEvGetSequenceResult::TPtr &ev, const TActorContext &ctx); void Handle(NReplication::TEvController::TEvCreateReplicationResult::TPtr &ev, const TActorContext &ctx); void Handle(NReplication::TEvController::TEvDropReplicationResult::TPtr &ev, const TActorContext &ctx); void Handle(TEvDataShard::TEvProposeTransactionResult::TPtr &ev, const TActorContext &ctx); diff --git a/ydb/core/tx/schemeshard/schemeshard_import__create.cpp b/ydb/core/tx/schemeshard/schemeshard_import__create.cpp index adcae1ce16bb..1f4336fac255 100644 --- a/ydb/core/tx/schemeshard/schemeshard_import__create.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_import__create.cpp @@ -850,7 +850,10 @@ struct TSchemeShard::TImport::TTxProgress: public TSchemeShard::TXxport::TTxBase } if (item.State == EState::CreateTable) { - item.DstPathId = Self->MakeLocalId(TLocalPathId(record.GetPathId())); + auto createPath = TPath::Resolve(item.DstPathName, Self); + Y_ABORT_UNLESS(createPath); + + item.DstPathId = createPath.Base()->PathId; Self->PersistImportItemDstPathId(db, importInfo, itemIdx); } diff --git a/ydb/core/tx/schemeshard/schemeshard_import_flow_proposals.cpp b/ydb/core/tx/schemeshard/schemeshard_import_flow_proposals.cpp index 7d81246bd758..bed9631994bb 100644 --- a/ydb/core/tx/schemeshard/schemeshard_import_flow_proposals.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_import_flow_proposals.cpp @@ -25,7 +25,7 @@ THolder<TEvSchemeShard::TEvModifySchemeTransaction> CreateTablePropose( } auto& modifyScheme = *record.AddTransaction(); - modifyScheme.SetOperationType(NKikimrSchemeOp::ESchemeOpCreateTable); + modifyScheme.SetOperationType(NKikimrSchemeOp::ESchemeOpCreateIndexedTable); modifyScheme.SetInternal(true); const TPath domainPath = TPath::Init(importInfo->DomainPathId, ss); @@ -37,15 +37,56 @@ THolder<TEvSchemeShard::TEvModifySchemeTransaction> CreateTablePropose( modifyScheme.SetWorkingDir(wdAndPath.first); - auto& tableDesc = *modifyScheme.MutableCreateTable(); + auto* indexedTable = modifyScheme.MutableCreateIndexedTable(); + auto& tableDesc = *(indexedTable->MutableTableDescription()); tableDesc.SetName(wdAndPath.second); Y_ABORT_UNLESS(ss->TableProfilesLoaded); Ydb::StatusIds::StatusCode status; - if (!FillTableDescription(modifyScheme, item.Scheme, ss->TableProfiles, status, error)) { + if (!FillTableDescription(modifyScheme, item.Scheme, ss->TableProfiles, status, error, true)) { return nullptr; } + for(const auto& column: item.Scheme.columns()) { + switch (column.default_value_case()) { + case Ydb::Table::ColumnMeta::kFromSequence: { + const auto& fromSequence = column.from_sequence(); + + auto seqDesc = indexedTable->MutableSequenceDescription()->Add(); + seqDesc->SetName(fromSequence.name()); + if (fromSequence.has_min_value()) { + seqDesc->SetMinValue(fromSequence.min_value()); + } + if (fromSequence.has_max_value()) { + seqDesc->SetMaxValue(fromSequence.max_value()); + } + if (fromSequence.has_start_value()) { + seqDesc->SetStartValue(fromSequence.start_value()); + } + if (fromSequence.has_cache()) { + seqDesc->SetCache(fromSequence.cache()); + } + if (fromSequence.has_increment()) { + seqDesc->SetIncrement(fromSequence.increment()); + } + if (fromSequence.has_cycle()) { + seqDesc->SetCycle(fromSequence.cycle()); + } + if (fromSequence.has_set_val()) { + auto* setVal = seqDesc->MutableSetVal(); + setVal->SetNextUsed(fromSequence.set_val().next_used()); + setVal->SetNextValue(fromSequence.set_val().next_value()); + } + + break; + } + case Ydb::Table::ColumnMeta::kFromLiteral: { + break; + } + default: break; + } + } + return propose; } diff --git a/ydb/core/tx/schemeshard/schemeshard_path.cpp b/ydb/core/tx/schemeshard/schemeshard_path.cpp index cf5674c4ad1e..65c69d043ff4 100644 --- a/ydb/core/tx/schemeshard/schemeshard_path.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_path.cpp @@ -923,6 +923,23 @@ const TPath::TChecker& TPath::TChecker::NotChildren(EStatus status) const { << ", children: " << childrenCount); } +const TPath::TChecker& TPath::TChecker::CanBackupTable(EStatus status) const { + if (Failed) { + return *this; + } + + for (const auto& child: Path.Base()->GetChildren()) { + auto name = child.first; + + TPath childPath = Path.Child(name); + if (childPath->IsTableIndex()) { + return Fail(status, TStringBuilder() << "path has indexes, request doesn't accept it"); + } + } + + return *this; +} + const TPath::TChecker& TPath::TChecker::NotDeleted(EStatus status) const { if (Failed) { return *this; diff --git a/ydb/core/tx/schemeshard/schemeshard_path.h b/ydb/core/tx/schemeshard/schemeshard_path.h index 2087a853f06e..cc6e9cffd7b0 100644 --- a/ydb/core/tx/schemeshard/schemeshard_path.h +++ b/ydb/core/tx/schemeshard/schemeshard_path.h @@ -86,6 +86,7 @@ class TPath { const TChecker& ShardsLimit(ui64 delta = 1, EStatus status = EStatus::StatusResourceExhausted) const; const TChecker& PathShardsLimit(ui64 delta = 1, EStatus status = EStatus::StatusResourceExhausted) const; const TChecker& NotChildren(EStatus status = EStatus::StatusInvalidParameter) const; + const TChecker& CanBackupTable(EStatus status = EStatus::StatusInvalidParameter) const; const TChecker& IsValidACL(const TString& acl, EStatus status = EStatus::StatusInvalidParameter) const; const TChecker& PQPartitionsLimit(ui64 delta = 1, EStatus status = EStatus::StatusResourceExhausted) const; const TChecker& PQReservedStorageLimit(ui64 delta = 1, EStatus status = EStatus::StatusResourceExhausted) const; diff --git a/ydb/core/tx/schemeshard/schemeshard_path_describer.cpp b/ydb/core/tx/schemeshard/schemeshard_path_describer.cpp index 234706bba62c..f919818253e4 100644 --- a/ydb/core/tx/schemeshard/schemeshard_path_describer.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_path_describer.cpp @@ -210,6 +210,7 @@ void TPathDescriber::DescribeTable(const TActorContext& ctx, TPathId pathId, TPa bool returnBackupInfo = Params.GetBackupInfo(); bool returnBoundaries = false; bool returnRangeKey = true; + bool returnSetVal = Params.GetOptions().GetReturnSetVal(); if (Params.HasOptions()) { returnConfig = Params.GetOptions().GetReturnPartitionConfig(); returnPartitioning = Params.GetOptions().GetReturnPartitioningInfo(); @@ -360,7 +361,7 @@ void TPathDescriber::DescribeTable(const TActorContext& ctx, TPathId pathId, TPa Self->DescribeCdcStream(childPathId, childName, *entry->AddCdcStreams()); break; case NKikimrSchemeOp::EPathTypeSequence: - Self->DescribeSequence(childPathId, childName, *entry->AddSequences()); + Self->DescribeSequence(childPathId, childName, *entry->AddSequences(), returnSetVal); break; default: Y_FAIL_S("Unexpected table's child" @@ -1240,17 +1241,17 @@ void TSchemeShard::DescribeCdcStream(const TPathId& pathId, const TString& name, } void TSchemeShard::DescribeSequence(const TPathId& pathId, const TString& name, - NKikimrSchemeOp::TSequenceDescription& desc) + NKikimrSchemeOp::TSequenceDescription& desc, bool fillSetVal) { auto it = Sequences.find(pathId); Y_VERIFY_S(it != Sequences.end(), "Sequence not found" << " pathId# " << pathId << " name# " << name); - DescribeSequence(pathId, name, it->second, desc); + DescribeSequence(pathId, name, it->second, desc, fillSetVal); } void TSchemeShard::DescribeSequence(const TPathId& pathId, const TString& name, TSequenceInfo::TPtr info, - NKikimrSchemeOp::TSequenceDescription& desc) + NKikimrSchemeOp::TSequenceDescription& desc, bool fillSetVal) { Y_VERIFY_S(info, "Empty sequence info" << " pathId# " << pathId @@ -1258,6 +1259,10 @@ void TSchemeShard::DescribeSequence(const TPathId& pathId, const TString& name, desc = info->Description; + if (!fillSetVal) { + desc.ClearSetVal(); + } + desc.SetName(name); PathIdFromPathId(pathId, desc.MutablePathId()); desc.SetVersion(info->AlterVersion); diff --git a/ydb/core/tx/schemeshard/schemeshard_tx_infly.h b/ydb/core/tx/schemeshard/schemeshard_tx_infly.h index 849f91a9dee0..70c2728a5371 100644 --- a/ydb/core/tx/schemeshard/schemeshard_tx_infly.h +++ b/ydb/core/tx/schemeshard/schemeshard_tx_infly.h @@ -129,6 +129,7 @@ struct TTxState { item(TxCreateView, 83) \ item(TxAlterView, 84) \ item(TxDropView, 85) \ + item(TxCopySequence, 86) \ // TX_STATE_TYPE_ENUM @@ -193,6 +194,8 @@ struct TTxState { item(WaitShadowPathPublication, 136, "") \ item(DeletePathBarrier, 137, "") \ item(SyncHive, 138, "") \ + item(CopyTableBarrier, 139, "") \ + item(ProposedCopySequence, 140, "") \ item(Done, 240, "") \ item(Aborted, 250, "") @@ -342,6 +345,7 @@ struct TTxState { case TxCreateExternalTable: case TxCreateExternalDataSource: case TxCreateView: + case TxCopySequence: return true; case TxInitializeBuildIndex: //this is more like alter case TxCreateCdcStreamAtTable: @@ -472,6 +476,7 @@ struct TTxState { case TxCreateExternalTable: case TxCreateExternalDataSource: case TxCreateView: + case TxCopySequence: return false; case TxAlterPQGroup: case TxAlterTable: @@ -559,6 +564,7 @@ struct TTxState { case TxCreateCdcStreamAtTable: case TxCreateCdcStreamAtTableWithInitialScan: case TxCreateSequence: + case TxCopySequence: case TxCreateReplication: case TxCreateBlobDepot: case TxInitializeBuildIndex: diff --git a/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp b/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp index db27c43c06fc..16a2468863be 100644 --- a/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp +++ b/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp @@ -5,6 +5,7 @@ #include <ydb/core/tx/data_events/events.h> #include <ydb/core/tx/data_events/payload_helper.h> #include <ydb/core/tx/schemeshard/schemeshard.h> +#include <ydb/core/tx/sequenceproxy/sequenceproxy.h> #include <ydb/core/tx/tx_proxy/proxy.h> #include <ydb/core/persqueue/events/global.h> #include <ydb/core/persqueue/ut/common/pq_ut_common.h> @@ -2354,4 +2355,23 @@ namespace NSchemeShardUT_Private { UNIT_ASSERT_C(successIsExpected == (status == NKikimrDataEvents::TEvWriteResult::STATUS_COMPLETED), "Status: " << ev->Get()->Record.GetStatus() << " Issues: " << ev->Get()->Record.GetIssues()); } + + void SendNextValRequest(TTestActorRuntime& runtime, const TActorId& sender, const TString& path) { + auto request = MakeHolder<NSequenceProxy::TEvSequenceProxy::TEvNextVal>(path); + runtime.Send(new IEventHandle(NSequenceProxy::MakeSequenceProxyServiceID(), sender, request.Release())); + } + + i64 WaitNextValResult( + TTestActorRuntime& runtime, const TActorId& sender, Ydb::StatusIds::StatusCode expectedStatus) { + auto ev = runtime.GrabEdgeEventRethrow<NSequenceProxy::TEvSequenceProxy::TEvNextValResult>(sender); + auto* msg = ev->Get(); + UNIT_ASSERT_VALUES_EQUAL(msg->Status, expectedStatus); + return msg->Value; + } + + i64 DoNextVal(TTestActorRuntime& runtime, const TString& path, Ydb::StatusIds::StatusCode expectedStatus) { + auto sender = runtime.AllocateEdgeActor(0); + SendNextValRequest(runtime, sender, path); + return WaitNextValResult(runtime, sender, expectedStatus); + } } diff --git a/ydb/core/tx/schemeshard/ut_helpers/helpers.h b/ydb/core/tx/schemeshard/ut_helpers/helpers.h index ddd1153e6c3f..d3c79c0e6946 100644 --- a/ydb/core/tx/schemeshard/ut_helpers/helpers.h +++ b/ydb/core/tx/schemeshard/ut_helpers/helpers.h @@ -552,4 +552,12 @@ namespace NSchemeShardUT_Private { void UploadRows(TTestActorRuntime& runtime, const TString& tablePath, int partitionIdx, const TVector<ui32>& keyTags, const TVector<ui32>& valueTags, const TVector<ui32>& recordIds); void WriteRow(TTestActorRuntime& runtime, const ui64 txId, const TString& tablePath, int partitionIdx, const ui32 key, const TString& value, bool successIsExpected = true); + void SendNextValRequest(TTestActorRuntime& runtime, const TActorId& sender, const TString& path); + i64 WaitNextValResult( + TTestActorRuntime& runtime, const TActorId& sender, + Ydb::StatusIds::StatusCode expectedStatus = Ydb::StatusIds::SUCCESS); + i64 DoNextVal( + TTestActorRuntime& runtime, const TString& path, + Ydb::StatusIds::StatusCode expectedStatus = Ydb::StatusIds::SUCCESS); + } //NSchemeShardUT_Private diff --git a/ydb/core/tx/schemeshard/ut_helpers/test_env.cpp b/ydb/core/tx/schemeshard/ut_helpers/test_env.cpp index 1247239013b4..108fde82fd1a 100644 --- a/ydb/core/tx/schemeshard/ut_helpers/test_env.cpp +++ b/ydb/core/tx/schemeshard/ut_helpers/test_env.cpp @@ -8,6 +8,7 @@ #include <ydb/core/tablet_flat/tablet_flat_executed.h> #include <ydb/core/tx/datashard/datashard.h> #include <ydb/core/tx/schemeshard/schemeshard_private.h> +#include <ydb/core/tx/sequenceproxy/sequenceproxy.h> #include <ydb/core/tx/tx_allocator/txallocator.h> #include <ydb/core/tx/tx_proxy/proxy.h> #include <ydb/core/filestore/core/filestore.h> @@ -591,6 +592,13 @@ NSchemeShardUT_Private::TTestEnv::TTestEnv(TTestActorRuntime& runtime, const TTe runtime.RegisterService(MakeTxProxyID(), txProxyId, node); } + // Create sequence proxies + for (size_t i = 0; i < runtime.GetNodeCount(); ++i) { + IActor* sequenceProxy = NSequenceProxy::CreateSequenceProxy(); + TActorId sequenceProxyId = runtime.Register(sequenceProxy, i); + runtime.RegisterService(NSequenceProxy::MakeSequenceProxyServiceID(), sequenceProxyId, i); + } + //SetupBoxAndStoragePool(runtime, sender, TTestTxConfig::DomainUid); TxReliablePropose = runtime.Register(new TTxReliablePropose(schemeRoot)); diff --git a/ydb/core/tx/schemeshard/ut_restore/ut_restore.cpp b/ydb/core/tx/schemeshard/ut_restore/ut_restore.cpp index f033b17d3ffc..313dc72ffb25 100644 --- a/ydb/core/tx/schemeshard/ut_restore/ut_restore.cpp +++ b/ydb/core/tx/schemeshard/ut_restore/ut_restore.cpp @@ -373,6 +373,22 @@ Y_UNIT_TEST_SUITE(TRestoreTests) { NKqp::CompareYson(data.YsonStr, content); } + bool CheckDefaultFromSequence(const NKikimrSchemeOp::TTableDescription& desc) { + for (const auto& column: desc.GetColumns()) { + if (column.GetName() == "key") { + switch (column.GetDefaultValueCase()) { + case NKikimrSchemeOp::TColumnDescription::kDefaultFromSequence: { + const auto& fromSequence = column.GetDefaultFromSequence(); + return fromSequence == "myseq"; + } + default: break; + } + break; + } + } + return false; + } + bool CheckDefaultFromLiteral(const NKikimrSchemeOp::TTableDescription& desc) { for (const auto& column: desc.GetColumns()) { if (column.GetName() == "value") { @@ -877,6 +893,214 @@ value { UNIT_ASSERT_C(CheckDefaultFromLiteral(table), "Invalid default value"); } + Y_UNIT_TEST(ShouldRestoreDefaultValuesFromSequence) { + TPortManager portManager; + const ui16 port = portManager.GetPort(); + + TS3Mock s3Mock({}, TS3Mock::TSettings(port)); + UNIT_ASSERT(s3Mock.Start()); + + TTestBasicRuntime runtime; + TTestEnv env(runtime); + ui64 txId = 100; + + runtime.SetLogPriority(NKikimrServices::DATASHARD_BACKUP, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::DATASHARD_RESTORE, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::EXPORT, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::IMPORT, NActors::NLog::PRI_TRACE); + + TestCreateIndexedTable(runtime, ++txId, "/MyRoot", R"( + TableDescription { + Name: "Original" + Columns { Name: "key" Type: "Uint64" DefaultFromSequence: "myseq" } + Columns { Name: "value" Type: "Uint64" } + KeyColumnNames: ["key"] + } + SequenceDescription { + Name: "myseq" + } + )"); + + TestExport(runtime, ++txId, "/MyRoot", Sprintf(R"( + ExportToS3Settings { + endpoint: "localhost:%d" + scheme: HTTP + items { + source_path: "/MyRoot/Original" + destination_prefix: "" + } + } + )", port)); + env.TestWaitNotification(runtime, txId); + TestGetExport(runtime, txId, "/MyRoot"); + + TestImport(runtime, ++txId, "/MyRoot", Sprintf(R"( + ImportFromS3Settings { + endpoint: "localhost:%d" + scheme: HTTP + items { + source_prefix: "" + destination_path: "/MyRoot/Restored" + } + } + )", port)); + env.TestWaitNotification(runtime, txId); + TestGetImport(runtime, txId, "/MyRoot"); + + const auto desc = DescribePath(runtime, "/MyRoot/Restored", true, true); + UNIT_ASSERT_VALUES_EQUAL(desc.GetStatus(), NKikimrScheme::StatusSuccess); + + const auto& table = desc.GetPathDescription().GetTable(); + + UNIT_ASSERT_C(CheckDefaultFromSequence(table), "Invalid default value"); + } + + Y_UNIT_TEST(ShouldRestoreSequence) { + TPortManager portManager; + const ui16 port = portManager.GetPort(); + + TS3Mock s3Mock({}, TS3Mock::TSettings(port)); + UNIT_ASSERT(s3Mock.Start()); + + TTestBasicRuntime runtime; + TTestEnv env(runtime); + + ui64 txId = 100; + + runtime.SetLogPriority(NKikimrServices::DATASHARD_BACKUP, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::DATASHARD_RESTORE, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::EXPORT, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::IMPORT, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::SEQUENCEPROXY, NActors::NLog::PRI_TRACE); + + TestCreateIndexedTable(runtime, ++txId, "/MyRoot", R"( + TableDescription { + Name: "Original" + Columns { Name: "key" Type: "Uint64" DefaultFromSequence: "myseq" } + Columns { Name: "value" Type: "Uint64" } + KeyColumnNames: ["key"] + } + SequenceDescription { + Name: "myseq" + } + )"); + env.TestWaitNotification(runtime, txId); + + i64 value = DoNextVal(runtime, "/MyRoot/Original/myseq"); + UNIT_ASSERT_VALUES_EQUAL(value, 1); + + TestExport(runtime, ++txId, "/MyRoot", Sprintf(R"( + ExportToS3Settings { + endpoint: "localhost:%d" + scheme: HTTP + items { + source_path: "/MyRoot/Original" + destination_prefix: "" + } + } + )", port)); + env.TestWaitNotification(runtime, txId); + TestGetExport(runtime, txId, "/MyRoot"); + + TestImport(runtime, ++txId, "/MyRoot", Sprintf(R"( + ImportFromS3Settings { + endpoint: "localhost:%d" + scheme: HTTP + items { + source_prefix: "" + destination_path: "/MyRoot/Restored" + } + } + )", port)); + env.TestWaitNotification(runtime, txId); + TestGetImport(runtime, txId, "/MyRoot"); + + const auto desc = DescribePath(runtime, "/MyRoot/Restored", true, true); + UNIT_ASSERT_VALUES_EQUAL(desc.GetStatus(), NKikimrScheme::StatusSuccess); + + const auto& table = desc.GetPathDescription().GetTable(); + + value = DoNextVal(runtime, "/MyRoot/Restored/myseq"); + UNIT_ASSERT_VALUES_EQUAL(value, 2); + + UNIT_ASSERT_C(CheckDefaultFromSequence(table), "Invalid default value"); + } + + Y_UNIT_TEST(ShouldRestoreSequenceWithOverflow) { + TPortManager portManager; + const ui16 port = portManager.GetPort(); + + TS3Mock s3Mock({}, TS3Mock::TSettings(port)); + UNIT_ASSERT(s3Mock.Start()); + + TTestBasicRuntime runtime; + TTestEnv env(runtime); + + ui64 txId = 100; + + runtime.SetLogPriority(NKikimrServices::DATASHARD_BACKUP, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::DATASHARD_RESTORE, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::EXPORT, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::IMPORT, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::SEQUENCEPROXY, NActors::NLog::PRI_TRACE); + + TestCreateIndexedTable(runtime, ++txId, "/MyRoot", R"( + TableDescription { + Name: "Original" + Columns { Name: "key" Type: "Uint64" DefaultFromSequence: "myseq" } + Columns { Name: "value" Type: "Uint64" } + KeyColumnNames: ["key"] + } + SequenceDescription { + Name: "myseq" + MinValue: 1 + MaxValue: 2 + } + )"); + env.TestWaitNotification(runtime, txId); + + i64 value = DoNextVal(runtime, "/MyRoot/Original/myseq"); + UNIT_ASSERT_VALUES_EQUAL(value, 1); + + value = DoNextVal(runtime, "/MyRoot/Original/myseq"); + UNIT_ASSERT_VALUES_EQUAL(value, 2); + + TestExport(runtime, ++txId, "/MyRoot", Sprintf(R"( + ExportToS3Settings { + endpoint: "localhost:%d" + scheme: HTTP + items { + source_path: "/MyRoot/Original" + destination_prefix: "" + } + } + )", port)); + env.TestWaitNotification(runtime, txId); + TestGetExport(runtime, txId, "/MyRoot"); + + TestImport(runtime, ++txId, "/MyRoot", Sprintf(R"( + ImportFromS3Settings { + endpoint: "localhost:%d" + scheme: HTTP + items { + source_prefix: "" + destination_path: "/MyRoot/Restored" + } + } + )", port)); + env.TestWaitNotification(runtime, txId); + TestGetImport(runtime, txId, "/MyRoot"); + + const auto desc = DescribePath(runtime, "/MyRoot/Restored", true, true); + UNIT_ASSERT_VALUES_EQUAL(desc.GetStatus(), NKikimrScheme::StatusSuccess); + + const auto& table = desc.GetPathDescription().GetTable(); + + value = DoNextVal(runtime, "/MyRoot/Restored/myseq", Ydb::StatusIds::SCHEME_ERROR); + + UNIT_ASSERT_C(CheckDefaultFromSequence(table), "Invalid default value"); + } + Y_UNIT_TEST(ExportImportPg) { TTestBasicRuntime runtime; TTestEnv env(runtime, TTestEnvOptions().EnableTablePgTypes(true)); @@ -2538,7 +2762,7 @@ Y_UNIT_TEST_SUITE(TImportTests) { } return ev->Get<TEvSchemeShard::TEvModifySchemeTransaction>()->Record - .GetTransaction(0).GetOperationType() == NKikimrSchemeOp::ESchemeOpCreateTable; + .GetTransaction(0).GetOperationType() == NKikimrSchemeOp::ESchemeOpCreateIndexedTable; }); } diff --git a/ydb/core/tx/schemeshard/ut_restore/ya.make b/ydb/core/tx/schemeshard/ut_restore/ya.make index 308dd73133fa..7044d4283b5e 100644 --- a/ydb/core/tx/schemeshard/ut_restore/ya.make +++ b/ydb/core/tx/schemeshard/ut_restore/ya.make @@ -21,7 +21,7 @@ PEERDIR( ydb/core/wrappers/ut_helpers ydb/core/ydb_convert ydb/library/yql/sql/pg - ydb/library/yql/parser/pg_wrapper + ydb/library/yql/parser/pg_wrapper ) SRCS( diff --git a/ydb/core/tx/schemeshard/ut_sequence/ut_sequence.cpp b/ydb/core/tx/schemeshard/ut_sequence/ut_sequence.cpp index 2056b24ff823..d7ddeee9f041 100644 --- a/ydb/core/tx/schemeshard/ut_sequence/ut_sequence.cpp +++ b/ydb/core/tx/schemeshard/ut_sequence/ut_sequence.cpp @@ -1,3 +1,4 @@ +#include <ydb/core/tx/datashard/datashard_ut_common_kqp.h> #include <ydb/core/tx/schemeshard/ut_helpers/helpers.h> using namespace NKikimr::NSchemeShard; @@ -336,4 +337,37 @@ Y_UNIT_TEST_SUITE(TSequence) { TestLs(runtime, "/MyRoot/Table", false, NLs::PathNotExist); } + Y_UNIT_TEST(CopyTableWithSequence) { + TTestBasicRuntime runtime; + TTestEnv env(runtime); + ui64 txId = 100; + + runtime.SetLogPriority(NKikimrServices::FLAT_TX_SCHEMESHARD, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::SEQUENCESHARD, NActors::NLog::PRI_TRACE); + + TestCreateIndexedTable(runtime, ++txId, "/MyRoot", R"( + TableDescription { + Name: "Table" + Columns { Name: "key" Type: "Uint64" DefaultFromSequence: "myseq" } + Columns { Name: "value" Type: "Utf8" } + KeyColumnNames: ["key"] + } + IndexDescription { + Name: "ValueIndex" + KeyColumnNames: ["value"] + } + SequenceDescription { + Name: "myseq" + } + )"); + + env.TestWaitNotification(runtime, txId); + + TestCopyTable(runtime, ++txId, "/MyRoot", "copy", "/MyRoot/Table"); + env.TestWaitNotification(runtime, txId); + + TestLs(runtime, "/MyRoot/copy/myseq", TDescribeOptionsBuilder().SetShowPrivateTable(true), NLs::PathExist); + env.TestWaitNotification(runtime, txId); + } + } // Y_UNIT_TEST_SUITE(TSequence) diff --git a/ydb/core/tx/schemeshard/ut_sequence/ya.make b/ydb/core/tx/schemeshard/ut_sequence/ya.make index d6ba601923dd..d48d9e399ec9 100644 --- a/ydb/core/tx/schemeshard/ut_sequence/ya.make +++ b/ydb/core/tx/schemeshard/ut_sequence/ya.make @@ -20,6 +20,7 @@ PEERDIR( ydb/core/testlib/default ydb/core/tx ydb/core/tx/columnshard + ydb/core/tx/datashard ydb/core/tx/schemeshard/ut_helpers ydb/library/yql/public/udf/service/exception_policy ) diff --git a/ydb/core/tx/schemeshard/ut_sequence_reboots/ut_sequence_reboots.cpp b/ydb/core/tx/schemeshard/ut_sequence_reboots/ut_sequence_reboots.cpp index d0553d6ad40e..b6fa29f79618 100644 --- a/ydb/core/tx/schemeshard/ut_sequence_reboots/ut_sequence_reboots.cpp +++ b/ydb/core/tx/schemeshard/ut_sequence_reboots/ut_sequence_reboots.cpp @@ -23,11 +23,9 @@ Y_UNIT_TEST_SUITE(TSequenceReboots) { )"); t.TestEnv->TestWaitNotification(runtime, t.TxId); - TestLs(runtime, "/MyRoot/seq", false, NLs::PathExist); - { TInactiveZone inactive(activeZone); - // no inactive finalization + TestLs(runtime, "/MyRoot/seq", false, NLs::PathExist); } }); } @@ -105,14 +103,20 @@ Y_UNIT_TEST_SUITE(TSequenceReboots) { {NKikimrScheme::StatusAccepted, NKikimrScheme::StatusAlreadyExists, NKikimrScheme::StatusMultipleModifications}); t.TestEnv->TestWaitNotification(runtime, t.TxId); - TestLs(runtime, "/MyRoot/seq", false, NLs::PathExist); + { + TInactiveZone inactive(activeZone); + TestLs(runtime, "/MyRoot/seq", false, NLs::PathExist); + } t.TestEnv->ReliablePropose(runtime, DropSequenceRequest(++t.TxId, "/MyRoot", "seq"), {NKikimrScheme::StatusAccepted, NKikimrScheme::StatusMultipleModifications}); t.TestEnv->TestWaitNotification(runtime, t.TxId); - TestLs(runtime, "/MyRoot/seq", false, NLs::PathNotExist); + { + TInactiveZone inactive(activeZone); + TestLs(runtime, "/MyRoot/seq", false, NLs::PathNotExist); + } t.TestEnv->ReliablePropose(runtime, CreateSequenceRequest(++t.TxId, "/MyRoot", R"( @@ -121,11 +125,9 @@ Y_UNIT_TEST_SUITE(TSequenceReboots) { {NKikimrScheme::StatusAccepted, NKikimrScheme::StatusAlreadyExists, NKikimrScheme::StatusMultipleModifications}); t.TestEnv->TestWaitNotification(runtime, t.TxId); - TestLs(runtime, "/MyRoot/seq", false, NLs::PathExist); - { TInactiveZone inactive(activeZone); - // no inactive finalization + TestLs(runtime, "/MyRoot/seq", false, NLs::PathExist); } }); } @@ -163,19 +165,69 @@ Y_UNIT_TEST_SUITE(TSequenceReboots) { {NKikimrScheme::StatusAccepted, NKikimrScheme::StatusAlreadyExists, NKikimrScheme::StatusMultipleModifications}); t.TestEnv->TestWaitNotification(runtime, t.TxId); - TestLs(runtime, "/MyRoot/Table/seq1", TDescribeOptionsBuilder().SetShowPrivateTable(true), NLs::PathExist); - TestLs(runtime, "/MyRoot/Table/seq2", TDescribeOptionsBuilder().SetShowPrivateTable(true), NLs::PathExist); + { + TInactiveZone inactive(activeZone); + TestLs( + runtime, "/MyRoot/Table/seq1", TDescribeOptionsBuilder().SetShowPrivateTable(true), NLs::PathExist); + TestLs( + runtime, "/MyRoot/Table/seq2", TDescribeOptionsBuilder().SetShowPrivateTable(true), NLs::PathExist); + + } t.TestEnv->ReliablePropose(runtime, DropTableRequest(++t.TxId, "/MyRoot", "Table"), {NKikimrScheme::StatusAccepted, NKikimrScheme::StatusPathDoesNotExist, NKikimrScheme::StatusMultipleModifications}); t.TestEnv->TestWaitNotification(runtime, t.TxId); - TestLs(runtime, "/MyRoot/Table", false, NLs::PathNotExist); + { + TInactiveZone inactive(activeZone); + TestLs(runtime, "/MyRoot/Table", false, NLs::PathNotExist); + } + }); + } + + Y_UNIT_TEST(CopyTableWithSequence) { + TTestWithReboots t(false); + t.Run([&](TTestActorRuntime& runtime, bool& activeZone) { + runtime.SetLogPriority(NKikimrServices::FLAT_TX_SCHEMESHARD, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::SEQUENCESHARD, NActors::NLog::PRI_TRACE); + + { + TInactiveZone inactive(activeZone); + TestCreateIndexedTable(runtime, ++t.TxId, "/MyRoot", R"( + TableDescription { + Name: "Table" + Columns { Name: "key" Type: "Uint64" DefaultFromSequence: "myseq" } + Columns { Name: "value" Type: "Utf8" } + KeyColumnNames: ["key"] + } + IndexDescription { + Name: "ValueIndex" + KeyColumnNames: ["value"] + } + SequenceDescription { + Name: "myseq" + } + )"); + t.TestEnv->TestWaitNotification(runtime, t.TxId); + + i64 value = DoNextVal(runtime, "/MyRoot/Table/myseq"); + UNIT_ASSERT_VALUES_EQUAL(value, 1); + } + + t.TestEnv->ReliablePropose(runtime, CopyTableRequest(++t.TxId, "/MyRoot", "copy", "/MyRoot/Table"), + {NKikimrScheme::StatusAccepted, NKikimrScheme::StatusAlreadyExists, + NKikimrScheme::StatusMultipleModifications}); + t.TestEnv->TestWaitNotification(runtime, t.TxId); { TInactiveZone inactive(activeZone); - // no inactive finalization + + TestLs( + runtime, "/MyRoot/copy/myseq", TDescribeOptionsBuilder().SetShowPrivateTable(true), NLs::PathExist); + + i64 value = DoNextVal(runtime, "/MyRoot/copy/myseq"); + UNIT_ASSERT_VALUES_EQUAL(value, 2); } }); } diff --git a/ydb/core/tx/schemeshard/ut_sequence_reboots/ya.make b/ydb/core/tx/schemeshard/ut_sequence_reboots/ya.make index d431a016bb5d..8e9c98748570 100644 --- a/ydb/core/tx/schemeshard/ut_sequence_reboots/ya.make +++ b/ydb/core/tx/schemeshard/ut_sequence_reboots/ya.make @@ -2,7 +2,7 @@ UNITTEST_FOR(ydb/core/tx/schemeshard) FORK_SUBTESTS() -SPLIT_FACTOR(2) +SPLIT_FACTOR(6) IF (SANITIZER_TYPE == "thread" OR WITH_VALGRIND) TIMEOUT(3600) diff --git a/ydb/core/tx/schemeshard/ya.make b/ydb/core/tx/schemeshard/ya.make index b3b9e032a154..1c13a431f4a6 100644 --- a/ydb/core/tx/schemeshard/ya.make +++ b/ydb/core/tx/schemeshard/ya.make @@ -102,6 +102,7 @@ SRCS( schemeshard__operation_common_external_table.cpp schemeshard__operation_common_subdomain.h schemeshard__operation_consistent_copy_tables.cpp + schemeshard__operation_copy_sequence.cpp schemeshard__operation_copy_table.cpp schemeshard__operation_create_backup.cpp schemeshard__operation_create_bsv.cpp diff --git a/ydb/core/tx/sequenceshard/public/events.h b/ydb/core/tx/sequenceshard/public/events.h index 599bd718c180..62187515d291 100644 --- a/ydb/core/tx/sequenceshard/public/events.h +++ b/ydb/core/tx/sequenceshard/public/events.h @@ -24,6 +24,8 @@ namespace NSequenceShard { EvRestoreSequenceResult, EvRedirectSequence, EvRedirectSequenceResult, + EvGetSequence, + EvGetSequenceResult, EvEnd, }; @@ -97,6 +99,11 @@ namespace NSequenceShard { return std::move(*this); } + TBuilder&& SetFrozen(bool frozen) && { + Msg->Record.SetFrozen(frozen); + return std::move(*this); + } + THolder<TEvCreateSequence> Done() && { return std::move(Msg); } @@ -323,6 +330,11 @@ namespace NSequenceShard { InitFrom(record); } + TEvRestoreSequence(const TPathId& pathId, const NKikimrTxSequenceShard::TEvGetSequenceResult& record) { + SetPathId(pathId); + InitFrom(record); + } + void SetPathId(const TPathId& pathId) { auto* p = Record.MutablePathId(); p->SetOwnerId(pathId.OwnerId); @@ -344,6 +356,17 @@ namespace NSequenceShard { Record.SetIncrement(record.GetIncrement()); Record.SetCycle(record.GetCycle()); } + + void InitFrom(const NKikimrTxSequenceShard::TEvGetSequenceResult& record) { + Record.SetMinValue(record.GetMinValue()); + Record.SetMaxValue(record.GetMaxValue()); + Record.SetStartValue(record.GetStartValue()); + Record.SetNextValue(record.GetNextValue()); + Record.SetNextUsed(record.GetNextUsed()); + Record.SetCache(record.GetCache()); + Record.SetIncrement(record.GetIncrement()); + Record.SetCycle(record.GetCycle()); + } }; struct TEvRestoreSequenceResult @@ -394,6 +417,40 @@ namespace NSequenceShard { } }; + struct TEvGetSequence + : public TEventPB<TEvGetSequence, NKikimrTxSequenceShard::TEvGetSequence, EvGetSequence> + { + TEvGetSequence() = default; + + explicit TEvGetSequence(const TPathId& pathId) { + SetPathId(pathId); + } + + void SetPathId(const TPathId& pathId) { + auto* p = Record.MutablePathId(); + p->SetOwnerId(pathId.OwnerId); + p->SetLocalId(pathId.LocalPathId); + } + + TPathId GetPathId() const { + const auto& p = Record.GetPathId(); + return TPathId(p.GetOwnerId(), p.GetLocalId()); + } + }; + + struct TEvGetSequenceResult + : public TEventPB<TEvGetSequenceResult, NKikimrTxSequenceShard::TEvGetSequenceResult, EvGetSequenceResult> + { + using EStatus = NKikimrTxSequenceShard::TEvGetSequenceResult::EStatus; + + TEvGetSequenceResult() = default; + + TEvGetSequenceResult(EStatus status, ui64 origin) { + Record.SetStatus(status); + Record.SetOrigin(origin); + } + }; + }; } // namespace NSequenceShard diff --git a/ydb/core/tx/sequenceshard/sequenceshard_impl.cpp b/ydb/core/tx/sequenceshard/sequenceshard_impl.cpp index c23602e643c8..ed88fcbd4233 100644 --- a/ydb/core/tx/sequenceshard/sequenceshard_impl.cpp +++ b/ydb/core/tx/sequenceshard/sequenceshard_impl.cpp @@ -91,6 +91,7 @@ namespace NSequenceShard { HFunc(TEvSequenceShard::TEvFreezeSequence, Handle); HFunc(TEvSequenceShard::TEvRestoreSequence, Handle); HFunc(TEvSequenceShard::TEvRedirectSequence, Handle); + HFunc(TEvSequenceShard::TEvGetSequence, Handle); default: if (!HandleDefaultEvents(ev, SelfId())) { diff --git a/ydb/core/tx/sequenceshard/sequenceshard_impl.h b/ydb/core/tx/sequenceshard/sequenceshard_impl.h index c1da07235f53..b0bd3cd98e75 100644 --- a/ydb/core/tx/sequenceshard/sequenceshard_impl.h +++ b/ydb/core/tx/sequenceshard/sequenceshard_impl.h @@ -73,6 +73,7 @@ namespace NSequenceShard { struct TTxFreezeSequence; struct TTxRestoreSequence; struct TTxRedirectSequence; + struct TTxGetSequence; void RunTxInitSchema(const TActorContext& ctx); void RunTxInit(const TActorContext& ctx); @@ -99,6 +100,7 @@ namespace NSequenceShard { void Handle(TEvSequenceShard::TEvFreezeSequence::TPtr& ev, const TActorContext& ctx); void Handle(TEvSequenceShard::TEvRestoreSequence::TPtr& ev, const TActorContext& ctx); void Handle(TEvSequenceShard::TEvRedirectSequence::TPtr& ev, const TActorContext& ctx); + void Handle(TEvSequenceShard::TEvGetSequence::TPtr& ev, const TActorContext& ctx); private: struct TPipeInfo { diff --git a/ydb/core/tx/sequenceshard/tx_create_sequence.cpp b/ydb/core/tx/sequenceshard/tx_create_sequence.cpp index e362cda7beaa..8df1e6092ed3 100644 --- a/ydb/core/tx/sequenceshard/tx_create_sequence.cpp +++ b/ydb/core/tx/sequenceshard/tx_create_sequence.cpp @@ -64,8 +64,25 @@ namespace NSequenceShard { sequence.StartValue = sequence.MaxValue; } } - sequence.NextValue = sequence.StartValue; - sequence.NextUsed = false; + + bool frozen = msg->Record.GetFrozen(); + if (frozen) { + sequence.State = Schema::ESequenceState::Frozen; + } + + if (msg->Record.OptionalCycle_case() == NKikimrTxSequenceShard::TEvCreateSequence::kCycle) { + sequence.Cycle = msg->Record.GetCycle(); + } + + + if (msg->Record.HasSetVal()) { + sequence.NextValue = msg->Record.GetSetVal().GetNextValue(); + sequence.NextUsed = msg->Record.GetSetVal().GetNextUsed(); + } else { + sequence.NextUsed = false; + sequence.NextValue = sequence.StartValue; + } + if (msg->Record.OptionalCache_case() == NKikimrTxSequenceShard::TEvCreateSequence::kCache) { sequence.Cache = msg->Record.GetCache(); if (sequence.Cache < 1) { @@ -82,7 +99,8 @@ namespace NSequenceShard { NIceDb::TUpdate<Schema::Sequences::NextUsed>(sequence.NextUsed), NIceDb::TUpdate<Schema::Sequences::Cache>(sequence.Cache), NIceDb::TUpdate<Schema::Sequences::Increment>(sequence.Increment), - NIceDb::TUpdate<Schema::Sequences::Cycle>(sequence.Cycle)); + NIceDb::TUpdate<Schema::Sequences::Cycle>(sequence.Cycle), + NIceDb::TUpdate<Schema::Sequences::State>(sequence.State)); SetResult(NKikimrTxSequenceShard::TEvCreateSequenceResult::SUCCESS); SLOG_N("TTxCreateSequence.Execute SUCCESS" << " PathId# " << pathId @@ -91,7 +109,8 @@ namespace NSequenceShard { << " StartValue# " << sequence.StartValue << " Cache# " << sequence.Cache << " Increment# " << sequence.Increment - << " Cycle# " << (sequence.Cycle ? "true" : "false")); + << " Cycle# " << (sequence.Cycle ? "true" : "false") + << " State# " << (frozen ? "Frozen" : "Active")); return true; } diff --git a/ydb/core/tx/sequenceshard/tx_get_sequence.cpp b/ydb/core/tx/sequenceshard/tx_get_sequence.cpp new file mode 100644 index 000000000000..53a95cb8b017 --- /dev/null +++ b/ydb/core/tx/sequenceshard/tx_get_sequence.cpp @@ -0,0 +1,93 @@ +#include "sequenceshard_impl.h" + +namespace NKikimr { +namespace NSequenceShard { + + struct TSequenceShard::TTxGetSequence : public TTxBase { + explicit TTxGetSequence(TSelf* self, TEvSequenceShard::TEvGetSequence::TPtr&& ev) + : TTxBase(self) + , Ev(std::move(ev)) + { } + + TTxType GetTxType() const override { return TXTYPE_GET_SEQUENCE; } + + bool Execute(TTransactionContext& txc, const TActorContext&) override { + Y_UNUSED(txc); + + const auto* msg = Ev->Get(); + + auto pathId = msg->GetPathId(); + + SLOG_T("TTxGetSequence.Execute" + << " PathId# " << pathId); + + if (!Self->CheckPipeRequest(Ev->Recipient)) { + SetResult(NKikimrTxSequenceShard::TEvGetSequenceResult::PIPE_OUTDATED); + SLOG_T("TTxGetSequence.Execute PIPE_OUTDATED" + << " PathId# " << pathId); + return true; + } + + auto it = Self->Sequences.find(pathId); + if (it == Self->Sequences.end()) { + SetResult(NKikimrTxSequenceShard::TEvGetSequenceResult::SEQUENCE_NOT_FOUND); + SLOG_T("TTxGetSequence.Execute SEQUENCE_NOT_FOUND" + << " PathId# " << pathId); + return true; + } + + auto& sequence = it->second; + switch (sequence.State) { + case Schema::ESequenceState::Active: + break; + case Schema::ESequenceState::Frozen: + break; + case Schema::ESequenceState::Moved: { + SetResult(NKikimrTxSequenceShard::TEvGetSequenceResult::SEQUENCE_MOVED); + Result->Record.SetMovedTo(sequence.MovedTo); + SLOG_T("TTxGetSequence.Execute SEQUENCE_MOVED" + << " PathId# " << pathId + << " MovedTo# " << sequence.MovedTo); + return true; + } + } + + SetResult(NKikimrTxSequenceShard::TEvGetSequenceResult::SUCCESS); + Result->Record.SetMinValue(sequence.MinValue); + Result->Record.SetMaxValue(sequence.MaxValue); + Result->Record.SetStartValue(sequence.StartValue); + Result->Record.SetNextValue(sequence.NextValue); + Result->Record.SetNextUsed(sequence.NextUsed); + Result->Record.SetCache(sequence.Cache); + Result->Record.SetIncrement(sequence.Increment); + Result->Record.SetCycle(sequence.Cycle); + SLOG_N("TTxGetSequence.Execute SUCCESS" + << " PathId# " << pathId); + return true; + } + + void Complete(const TActorContext& ctx) override { + SLOG_T("TTxGetSequence.Complete"); + + if (Result) { + ctx.Send(Ev->Sender, Result.Release(), 0, Ev->Cookie); + } + } + + void SetResult(NKikimrTxSequenceShard::TEvGetSequenceResult::EStatus status) { + Result.Reset(new TEvSequenceShard::TEvGetSequenceResult(status, Self->TabletID())); + Result->Record.SetTxId(Ev->Get()->Record.GetTxId()); + Result->Record.SetTxPartId(Ev->Get()->Record.GetTxPartId()); + } + + TEvSequenceShard::TEvGetSequence::TPtr Ev; + THolder<TEvSequenceShard::TEvGetSequenceResult> Result; + }; + + + void TSequenceShard::Handle(TEvSequenceShard::TEvGetSequence::TPtr& ev, const TActorContext& ctx) { + Execute(new TTxGetSequence(this, std::move(ev)), ctx); + } + +} // namespace NSequenceShard +} // namespace NKikimr diff --git a/ydb/core/tx/sequenceshard/ut_helpers.cpp b/ydb/core/tx/sequenceshard/ut_helpers.cpp index 8736616f2704..a73622975575 100644 --- a/ydb/core/tx/sequenceshard/ut_helpers.cpp +++ b/ydb/core/tx/sequenceshard/ut_helpers.cpp @@ -268,5 +268,30 @@ namespace NSequenceShard { return NextRedirectSequenceResult(cookie, edge); } + void TTestContext::SendGetSequence(ui64 cookie, const TActorId& edge, const TPathId& pathId) + { + SendFromEdge( + edge, + new TEvSequenceShard::TEvGetSequence(pathId), + cookie); + } + + THolder<TEvSequenceShard::TEvGetSequenceResult> TTestContext::NextGetSequenceResult( + ui64 cookie, const TActorId& edge) + { + auto result = ExpectEdgeEvent<TEvSequenceShard::TEvGetSequenceResult>(edge, cookie); + UNIT_ASSERT_VALUES_EQUAL(result->Record.GetOrigin(), TabletId); + return result; + } + + THolder<TEvSequenceShard::TEvGetSequenceResult> TTestContext::GetSequence( + const TPathId& pathId) + { + ui64 cookie = RandomNumber<ui64>(); + auto edge = Runtime->AllocateEdgeActor(); + SendGetSequence(cookie, edge, pathId); + return NextGetSequenceResult(cookie, edge); + } + } // namespace NSequenceShard } // namespace NKikimr diff --git a/ydb/core/tx/sequenceshard/ut_helpers.h b/ydb/core/tx/sequenceshard/ut_helpers.h index f0274f2309e9..add323febe7a 100644 --- a/ydb/core/tx/sequenceshard/ut_helpers.h +++ b/ydb/core/tx/sequenceshard/ut_helpers.h @@ -101,6 +101,10 @@ namespace NSequenceShard { ui64 cookie, const TActorId& edge); THolder<TEvSequenceShard::TEvRedirectSequenceResult> RedirectSequence( const TPathId& pathId, ui64 redirectTo); + + void SendGetSequence(ui64 cookie, const TActorId& edge, const TPathId& pathId); + THolder<TEvSequenceShard::TEvGetSequenceResult> NextGetSequenceResult(ui64 cookie, const TActorId& edge); + THolder<TEvSequenceShard::TEvGetSequenceResult> GetSequence(const TPathId& pathId); }; } // namespace NSequenceShard diff --git a/ydb/core/tx/sequenceshard/ut_sequenceshard.cpp b/ydb/core/tx/sequenceshard/ut_sequenceshard.cpp index 9e082db7c6dc..1aa67fb78f4a 100644 --- a/ydb/core/tx/sequenceshard/ut_sequenceshard.cpp +++ b/ydb/core/tx/sequenceshard/ut_sequenceshard.cpp @@ -165,6 +165,15 @@ namespace NSequenceShard { UNIT_ASSERT_VALUES_EQUAL(allocateResult->Record.GetAllocationStart(), 200011); UNIT_ASSERT_VALUES_EQUAL(allocateResult->Record.GetAllocationCount(), 5u); } + + // get sequence + { + auto getResult = ctx.GetSequence(TPathId(123, 51)); + UNIT_ASSERT_VALUES_EQUAL(getResult->Record.GetStatus(), + NKikimrTxSequenceShard::TEvGetSequenceResult::SUCCESS); + UNIT_ASSERT_VALUES_EQUAL(getResult->Record.GetNextValue(), 200016); + UNIT_ASSERT_VALUES_EQUAL(getResult->Record.GetCache(), 5u); + } } Y_UNIT_TEST(MarkedPipeRetries) { diff --git a/ydb/core/tx/sequenceshard/ya.make b/ydb/core/tx/sequenceshard/ya.make index b47e4534140e..b4befe185615 100644 --- a/ydb/core/tx/sequenceshard/ya.make +++ b/ydb/core/tx/sequenceshard/ya.make @@ -17,6 +17,7 @@ SRCS( tx_create_sequence.cpp tx_drop_sequence.cpp tx_freeze_sequence.cpp + tx_get_sequence.cpp tx_init.cpp tx_init_schema.cpp tx_mark_schemeshard_pipe.cpp diff --git a/ydb/core/ydb_convert/table_description.cpp b/ydb/core/ydb_convert/table_description.cpp index e9350f2733f6..3ca7f16acd6b 100644 --- a/ydb/core/ydb_convert/table_description.cpp +++ b/ydb/core/ydb_convert/table_description.cpp @@ -438,6 +438,11 @@ Ydb::Type* AddColumn<NKikimrSchemeOp::TColumnDescription>(Ydb::Table::ColumnMeta *fromLiteral = column.GetDefaultFromLiteral(); break; } + case NKikimrSchemeOp::TColumnDescription::kDefaultFromSequence: { + auto* fromSequence = newColumn->mutable_from_sequence(); + fromSequence->set_name(column.GetDefaultFromSequence()); + break; + } default: break; } @@ -664,6 +669,11 @@ bool FillColumnDescription(NKikimrSchemeOp::TTableDescription& out, *fromLiteral = column.from_literal(); break; } + case Ydb::Table::ColumnMeta::kFromSequence: { + auto fromSequence = cd->MutableDefaultFromSequence(); + *fromSequence = column.from_sequence().name(); + break; + } default: break; } } @@ -1335,21 +1345,27 @@ void FillReadReplicasSettings(Ydb::Table::CreateTableRequest& out, bool FillTableDescription(NKikimrSchemeOp::TModifyScheme& out, const Ydb::Table::CreateTableRequest& in, const TTableProfiles& profiles, - Ydb::StatusIds::StatusCode& status, TString& error) + Ydb::StatusIds::StatusCode& status, TString& error, bool indexedTable) { - auto& tableDesc = *out.MutableCreateTable(); - if (!FillColumnDescription(tableDesc, in.columns(), status, error)) { + NKikimrSchemeOp::TTableDescription* tableDesc = nullptr; + if (indexedTable) { + tableDesc = out.MutableCreateIndexedTable()->MutableTableDescription(); + } else { + tableDesc = out.MutableCreateTable(); + } + + if (!FillColumnDescription(*tableDesc, in.columns(), status, error)) { return false; } - tableDesc.MutableKeyColumnNames()->CopyFrom(in.primary_key()); + tableDesc->MutableKeyColumnNames()->CopyFrom(in.primary_key()); - if (!profiles.ApplyTableProfile(in.profile(), tableDesc, status, error)) { + if (!profiles.ApplyTableProfile(in.profile(), *tableDesc, status, error)) { return false; } - TColumnFamilyManager families(tableDesc.MutablePartitionConfig()); + TColumnFamilyManager families(tableDesc->MutablePartitionConfig()); if (in.has_storage_settings() && !families.ApplyStorageSettings(in.storage_settings(), &status, &error)) { return false; } @@ -1366,11 +1382,59 @@ bool FillTableDescription(NKikimrSchemeOp::TModifyScheme& out, } TList<TString> warnings; - if (!FillCreateTableSettingsDesc(tableDesc, in, status, error, warnings, false)) { + if (!FillCreateTableSettingsDesc(*tableDesc, in, status, error, warnings, false)) { return false; } return true; } +void FillSequenceDescription(Ydb::Table::CreateTableRequest& out, const NKikimrSchemeOp::TTableDescription& in) { + THashMap<TString, NKikimrSchemeOp::TSequenceDescription> sequences; + + for (const auto& sequenceDescription : in.GetSequences()) { + sequences[sequenceDescription.GetName()] = sequenceDescription; + } + + for (auto& column : *out.mutable_columns()) { + + switch (column.default_value_case()) { + case Ydb::Table::ColumnMeta::kFromSequence: { + auto* fromSequence = column.mutable_from_sequence(); + + const auto& sequenceDescription = sequences.at(fromSequence->name()); + + if (sequenceDescription.HasMinValue()) { + fromSequence->set_min_value(sequenceDescription.GetMinValue()); + } + if (sequenceDescription.HasMaxValue()) { + fromSequence->set_max_value(sequenceDescription.GetMaxValue()); + } + if (sequenceDescription.HasStartValue()) { + fromSequence->set_start_value(sequenceDescription.GetStartValue()); + } + if (sequenceDescription.HasCache()) { + fromSequence->set_cache(sequenceDescription.GetCache()); + } + if (sequenceDescription.HasIncrement()) { + fromSequence->set_increment(sequenceDescription.GetIncrement()); + } + if (sequenceDescription.HasCycle()) { + fromSequence->set_cycle(sequenceDescription.GetCycle()); + } + if (sequenceDescription.HasSetVal()) { + auto* setVal = fromSequence->mutable_set_val(); + setVal->set_next_used(sequenceDescription.GetSetVal().GetNextUsed()); + setVal->set_next_value(sequenceDescription.GetSetVal().GetNextValue()); + } + break; + } + case Ydb::Table::ColumnMeta::kFromLiteral: { + break; + } + default: break; + } + } +} + } // namespace NKikimr diff --git a/ydb/core/ydb_convert/table_description.h b/ydb/core/ydb_convert/table_description.h index b3cd7d15a27c..8cbbe385214d 100644 --- a/ydb/core/ydb_convert/table_description.h +++ b/ydb/core/ydb_convert/table_description.h @@ -29,7 +29,7 @@ enum class EAlterOperationKind { struct TPathId; -THashSet<EAlterOperationKind> GetAlterOperationKinds(const Ydb::Table::AlterTableRequest* req); +THashSet<EAlterOperationKind> GetAlterOperationKinds(const Ydb::Table::AlterTableRequest* req); bool BuildAlterTableModifyScheme(const Ydb::Table::AlterTableRequest* req, NKikimrSchemeOp::TModifyScheme* modifyScheme, const TTableProfiles& profiles, const TPathId& resolvedPathId, Ydb::StatusIds::StatusCode& status, TString& error); @@ -125,6 +125,15 @@ void FillReadReplicasSettings(Ydb::Table::CreateTableRequest& out, // in bool FillTableDescription(NKikimrSchemeOp::TModifyScheme& out, const Ydb::Table::CreateTableRequest& in, const TTableProfiles& profiles, - Ydb::StatusIds::StatusCode& status, TString& error); + Ydb::StatusIds::StatusCode& status, TString& error, bool indexedTable = false); + + +// out +void FillSequenceDescription(Ydb::Table::CreateTableRequest& out, + const NKikimrSchemeOp::TTableDescription& in); + +// out +void FillSequenceDescription(Ydb::Table::CreateTableRequest& out, + const NKikimrSchemeOp::TTableDescription& in); } // namespace NKikimr diff --git a/ydb/public/api/protos/ydb_table.proto b/ydb/public/api/protos/ydb_table.proto index e878cb5bdf17..50887aadf3d2 100644 --- a/ydb/public/api/protos/ydb_table.proto +++ b/ydb/public/api/protos/ydb_table.proto @@ -333,6 +333,21 @@ message TableProfile { CachingPolicy caching_policy = 7; } +message SequenceDescription { + message SetVal { + optional sint64 next_value = 1; + optional bool next_used = 2; + } + optional string name = 1; // mandatorys + optional sint64 min_value = 2; // minimum value, defaults to 1 or Min<i64> + optional sint64 max_value = 3; // maximum value, defaults to Max<i64> or -1 + optional sint64 start_value = 4; // start value, defaults to min_value + optional uint64 cache = 5; // number of items to cache, defaults to 1 + optional sint64 increment = 6; // increment at each call, defaults to 1 + optional bool cycle = 7; // true when cycle on overflow is allowed + optional SetVal set_val = 8; // set_val(next_value, next_used) is executed atomically when creating +} + message ColumnMeta { // Name of column string name = 1; @@ -345,6 +360,7 @@ message ColumnMeta { // Column default value option oneof default_value { TypedValue from_literal = 5; + SequenceDescription from_sequence = 6; } } From 0224081ef81699b4ff181e543fa4ebd575f48b9a Mon Sep 17 00:00:00 2001 From: Sergey Belyakov <serg-belyakov@ydb.tech> Date: Tue, 11 Jun 2024 16:05:19 +0300 Subject: [PATCH 077/110] Merge CostMetrics changes from main (#5221) --- library/cpp/bucket_quoter/bucket_quoter.h | 2 +- ydb/core/base/blobstorage_grouptype.cpp | 6 +- ydb/core/base/blobstorage_grouptype.h | 1 + .../blobstorage/dsproxy/ut_fat/dsproxy_ut.cpp | 1 + .../nodewarden/node_warden_impl.cpp | 14 + .../blobstorage/nodewarden/node_warden_impl.h | 7 + .../nodewarden/node_warden_vdisk.cpp | 3 + .../blobstorage/pdisk/blobstorage_pdisk.h | 8 +- .../pdisk/blobstorage_pdisk_impl.cpp | 8 +- .../blobstorage/pdisk/blobstorage_pdisk_mon.h | 265 +------------ .../pdisk/blobstorage_pdisk_params.cpp | 3 +- .../pdisk/blobstorage_pdisk_params.h | 4 +- .../pdisk/blobstorage_pdisk_ut_env.h | 2 +- .../blobstorage/pdisk/mock/pdisk_mock.cpp | 18 +- ydb/core/blobstorage/pdisk/mock/pdisk_mock.h | 3 +- ydb/core/blobstorage/ut_blobstorage/lib/env.h | 70 +++- .../blobstorage/ut_blobstorage/monitoring.cpp | 355 +++++++----------- .../blobstorage/ut_blobstorage/ut_helpers.cpp | 15 + .../blobstorage/ut_blobstorage/ut_helpers.h | 226 +++++++++++ ydb/core/blobstorage/ut_blobstorage/ya.make | 1 + ydb/core/blobstorage/ut_group/main.cpp | 1 + ydb/core/blobstorage/ut_mirror3of4/main.cpp | 1 + ydb/core/blobstorage/ut_vdisk/lib/prepare.cpp | 1 + ydb/core/blobstorage/ut_vdisk2/env.h | 1 + .../vdisk/common/blobstorage_cost_tracker.cpp | 15 +- .../vdisk/common/blobstorage_cost_tracker.h | 104 ++++- .../blobstorage/vdisk/common/vdisk_config.cpp | 11 + .../blobstorage/vdisk/common/vdisk_config.h | 8 + .../vdisk/common/vdisk_context.cpp | 2 +- .../blobstorage/vdisk/common/vdisk_context.h | 16 +- .../vdisk/common/vdisk_performance_params.cpp | 10 + .../vdisk/common/vdisk_performance_params.h | 20 + ydb/core/blobstorage/vdisk/common/ya.make | 1 + .../vdisk/hullop/blobstorage_hullcompact.h | 6 + .../localrecovery/localrecovery_public.cpp | 15 + .../repl/blobstorage_hullreplwritesst_ut.cpp | 3 +- .../vdisk/scrub/scrub_actor_pdisk.cpp | 6 + .../vdisk/skeleton/blobstorage_skeleton.cpp | 16 + .../skeleton/blobstorage_skeletonfront.cpp | 13 +- .../vdisk/skeleton/skeleton_oos_tracker.cpp | 7 +- ydb/core/protos/config.proto | 44 +++ ydb/core/quoter/ut_helpers.cpp | 2 +- .../partition_stats/partition_stats_ut.cpp | 2 +- ydb/core/tablet_flat/test/libs/exec/runner.h | 2 +- ydb/core/testlib/actors/test_runtime.cpp | 4 + ydb/core/testlib/actors/test_runtime.h | 2 + ydb/core/testlib/actors/test_runtime_ut.cpp | 2 +- ydb/core/testlib/basics/appdata.cpp | 9 +- ydb/core/testlib/basics/appdata.h | 3 + ydb/core/testlib/basics/helpers.h | 2 + ydb/core/testlib/basics/services.cpp | 21 ++ ydb/core/testlib/tenant_runtime.cpp | 5 +- ydb/core/testlib/test_client.cpp | 7 +- ydb/core/util/hp_timer_helpers.h | 66 ++++ ydb/core/util/light.h | 213 +++++++++++ ydb/library/actors/util/datetime.h | 2 + ydb/library/pdisk_io/device_type.h | 11 +- ydb/library/pdisk_io/sector_map.h | 2 +- 58 files changed, 1130 insertions(+), 538 deletions(-) create mode 100644 ydb/core/blobstorage/ut_blobstorage/ut_helpers.cpp create mode 100644 ydb/core/blobstorage/ut_blobstorage/ut_helpers.h create mode 100644 ydb/core/blobstorage/vdisk/common/vdisk_performance_params.cpp create mode 100644 ydb/core/blobstorage/vdisk/common/vdisk_performance_params.h create mode 100644 ydb/core/util/hp_timer_helpers.h create mode 100644 ydb/core/util/light.h diff --git a/library/cpp/bucket_quoter/bucket_quoter.h b/library/cpp/bucket_quoter/bucket_quoter.h index f8396b7b7e6c..ce2d96b65d8b 100644 --- a/library/cpp/bucket_quoter/bucket_quoter.h +++ b/library/cpp/bucket_quoter/bucket_quoter.h @@ -172,8 +172,8 @@ class TBucketQuoter { i64 UseAndFill(ui64 tokens) { TGuard<Lock> g(BucketMutex); - UseNoLock(tokens); FillBucket(); + UseNoLock(tokens); return Bucket; } diff --git a/ydb/core/base/blobstorage_grouptype.cpp b/ydb/core/base/blobstorage_grouptype.cpp index 747a91ead9af..65effc85ffb1 100644 --- a/ydb/core/base/blobstorage_grouptype.cpp +++ b/ydb/core/base/blobstorage_grouptype.cpp @@ -196,7 +196,11 @@ ui64 TBlobStorageGroupType::PartSize(const TLogoBlobID &id) const { ui64 TBlobStorageGroupType::MaxPartSize(const TLogoBlobID &id) const { Y_ABORT_UNLESS(!id.PartId()); - return TErasureType::PartSize((TErasureType::ECrcMode)id.CrcMode(), id.BlobSize()); + return MaxPartSize((TErasureType::ECrcMode)id.CrcMode(), id.BlobSize()); +} + +ui64 TBlobStorageGroupType::MaxPartSize(TErasureType::ECrcMode crcMode, ui32 blobSize) const { + return TErasureType::PartSize(crcMode, blobSize); } bool TBlobStorageGroupType::PartFits(ui32 partId, ui32 idxInSubgroup) const { diff --git a/ydb/core/base/blobstorage_grouptype.h b/ydb/core/base/blobstorage_grouptype.h index aeca719493ad..5d067087fbe6 100644 --- a/ydb/core/base/blobstorage_grouptype.h +++ b/ydb/core/base/blobstorage_grouptype.h @@ -144,6 +144,7 @@ struct TBlobStorageGroupType : public TErasureType { ui64 PartSize(const TLogoBlobID &id) const; ui64 MaxPartSize(const TLogoBlobID &id) const; + ui64 MaxPartSize(TErasureType::ECrcMode crcMode, ui32 blobSize) const; bool PartFits(ui32 partId, ui32 idxInSubgroup) const; }; diff --git a/ydb/core/blobstorage/dsproxy/ut_fat/dsproxy_ut.cpp b/ydb/core/blobstorage/dsproxy/ut_fat/dsproxy_ut.cpp index abd56038b9a2..38b1698bed98 100644 --- a/ydb/core/blobstorage/dsproxy/ut_fat/dsproxy_ut.cpp +++ b/ydb/core/blobstorage/dsproxy/ut_fat/dsproxy_ut.cpp @@ -4252,6 +4252,7 @@ class TBlobStorageProxyTest: public TTestBase { vDiskConfig->GCOnlySynced = false; vDiskConfig->HullCompLevelRateThreshold = 0.1; vDiskConfig->SkeletonFrontQueueBackpressureCheckMsgId = false; + vDiskConfig->UseCostTracker = false; IActor* vDisk = CreateVDisk(vDiskConfig, bsInfo, counters); TActorSetupCmd vDiskSetup(vDisk, TMailboxType::Revolving, 0); diff --git a/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp b/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp index 579d14a060e6..5e7fb8cf3f56 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp +++ b/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp @@ -175,6 +175,20 @@ void TNodeWarden::Bootstrap() { if (actorSystem && actorSystem->AppData<TAppData>() && actorSystem->AppData<TAppData>()->Icb) { actorSystem->AppData<TAppData>()->Icb->RegisterLocalControl(EnablePutBatching, "BlobStorage_EnablePutBatching"); actorSystem->AppData<TAppData>()->Icb->RegisterLocalControl(EnableVPatch, "BlobStorage_EnableVPatch"); + const TIntrusivePtr<NKikimr::TControlBoard>& icb = actorSystem->AppData<TAppData>()->Icb; + + icb->RegisterSharedControl(CostMetricsParametersByMedia[NPDisk::DEVICE_TYPE_ROT].BurstThresholdNs, + "VDiskControls.BurstThresholdNsHDD"); + icb->RegisterSharedControl(CostMetricsParametersByMedia[NPDisk::DEVICE_TYPE_SSD].BurstThresholdNs, + "VDiskControls.BurstThresholdNsSSD"); + icb->RegisterSharedControl(CostMetricsParametersByMedia[NPDisk::DEVICE_TYPE_NVME].BurstThresholdNs, + "VDiskControls.BurstThresholdNsNVME"); + icb->RegisterSharedControl(CostMetricsParametersByMedia[NPDisk::DEVICE_TYPE_ROT].DiskTimeAvailableScale, + "VDiskControls.DiskTimeAvailableScaleHDD"); + icb->RegisterSharedControl(CostMetricsParametersByMedia[NPDisk::DEVICE_TYPE_SSD].DiskTimeAvailableScale, + "VDiskControls.DiskTimeAvailableScaleSSD"); + icb->RegisterSharedControl(CostMetricsParametersByMedia[NPDisk::DEVICE_TYPE_NVME].DiskTimeAvailableScale, + "VDiskControls.DiskTimeAvailableScaleNVME"); } // start replication broker diff --git a/ydb/core/blobstorage/nodewarden/node_warden_impl.h b/ydb/core/blobstorage/nodewarden/node_warden_impl.h index 1cc803bed339..2c9e91a37e31 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_impl.h +++ b/ydb/core/blobstorage/nodewarden/node_warden_impl.h @@ -125,6 +125,8 @@ namespace NKikimr::NStorage { TReplQuoter::TPtr ReplNodeRequestQuoter; TReplQuoter::TPtr ReplNodeResponseQuoter; + TCostMetricsParametersByMedia CostMetricsParametersByMedia; + public: struct TGroupRecord; @@ -137,6 +139,11 @@ namespace NKikimr::NStorage { : Cfg(cfg) , EnablePutBatching(Cfg->FeatureFlags.GetEnablePutBatchingForBlobStorage(), false, true) , EnableVPatch(Cfg->FeatureFlags.GetEnableVPatch(), false, true) + , CostMetricsParametersByMedia({ + TCostMetricsParameters{200}, + TCostMetricsParameters{50}, + TCostMetricsParameters{32}, + }) { Y_ABORT_UNLESS(Cfg->BlobStorageConfig.GetServiceSet().AvailabilityDomainsSize() <= 1); AvailDomainId = 1; diff --git a/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp b/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp index 781dd6070fba..1711ab36bec8 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp +++ b/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp @@ -174,6 +174,9 @@ namespace NKikimr::NStorage { vdiskConfig->EnableVDiskCooldownTimeout = Cfg->EnableVDiskCooldownTimeout; vdiskConfig->ReplPausedAtStart = Cfg->VDiskReplPausedAtStart; vdiskConfig->EnableVPatch = EnableVPatch; + + vdiskConfig->CostMetricsParametersByMedia = CostMetricsParametersByMedia; + vdiskConfig->FeatureFlags = Cfg->FeatureFlags; // issue initial report to whiteboard before creating actor to avoid races diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk.h b/ydb/core/blobstorage/pdisk/blobstorage_pdisk.h index 2c1654a83b36..f0a07545df36 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk.h +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk.h @@ -173,7 +173,7 @@ struct TEvYardInitResult : public TEventLocal<TEvYardInitResult, TEvBlobStorage: TEvYardInitResult(const NKikimrProto::EReplyStatus status, const TString &errorReason) : Status(status) , StatusFlags(0) - , PDiskParams(new TPDiskParams(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) + , PDiskParams(new TPDiskParams(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, DEVICE_TYPE_ROT)) , ErrorReason(errorReason) { Y_ABORT_UNLESS(status != NKikimrProto::OK, "Single-parameter constructor is for error responses only"); @@ -183,7 +183,7 @@ struct TEvYardInitResult : public TEventLocal<TEvYardInitResult, TEvBlobStorage: ui64 writeSpeedBps, ui64 readBlockSize, ui64 writeBlockSize, ui64 bulkWriteBlockSize, ui32 chunkSize, ui32 appendBlockSize, TOwner owner, TOwnerRound ownerRound, TStatusFlags statusFlags, TVector<TChunkIdx> ownedChunks, - const TString &errorReason) + EDeviceType trueMediaType, const TString &errorReason) : Status(status) , StatusFlags(statusFlags) , PDiskParams(new TPDiskParams( @@ -196,8 +196,8 @@ struct TEvYardInitResult : public TEventLocal<TEvYardInitResult, TEvBlobStorage: writeSpeedBps, readBlockSize, writeBlockSize, - bulkWriteBlockSize - )) + bulkWriteBlockSize, + trueMediaType)) , OwnedChunks(std::move(ownedChunks)) , ErrorReason(errorReason) {} diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp index 6a6c4700fd3d..310bdced23dc 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp @@ -1769,7 +1769,8 @@ void TPDisk::ReplyErrorYardInitResult(TYardInit &evYardInit, const TString &str) DriveModel.Speed(TDriveModel::OP_TYPE_WRITE), readBlockSize, writeBlockSize, DriveModel.BulkWriteBlockSize(), GetUserAccessibleChunkSize(), GetChunkAppendBlockSize(), OwnerSystem, 0, - GetStatusFlags(OwnerSystem, evYardInit.OwnerGroupType), TVector<TChunkIdx>(), error.Str())); + GetStatusFlags(OwnerSystem, evYardInit.OwnerGroupType), TVector<TChunkIdx>(), + Cfg->RetrieveDeviceType(), error.Str())); Mon.YardInit.CountResponse(); } @@ -1816,7 +1817,8 @@ bool TPDisk::YardInitForKnownVDisk(TYardInit &evYardInit, TOwner owner) { DriveModel.SeekTimeNs() / 1000ull, DriveModel.Speed(TDriveModel::OP_TYPE_READ), DriveModel.Speed(TDriveModel::OP_TYPE_WRITE), readBlockSize, writeBlockSize, DriveModel.BulkWriteBlockSize(), GetUserAccessibleChunkSize(), GetChunkAppendBlockSize(), owner, - ownerRound, GetStatusFlags(OwnerSystem, evYardInit.OwnerGroupType), ownedChunks, nullptr)); + ownerRound, GetStatusFlags(OwnerSystem, evYardInit.OwnerGroupType), ownedChunks, + Cfg->RetrieveDeviceType(), nullptr)); GetStartingPoints(owner, result->StartingPoints); ownerData.VDiskId = vDiskId; ownerData.CutLogId = evYardInit.CutLogId; @@ -1967,7 +1969,7 @@ void TPDisk::YardInitFinish(TYardInit &evYardInit) { DriveModel.Speed(TDriveModel::OP_TYPE_WRITE), readBlockSize, writeBlockSize, DriveModel.BulkWriteBlockSize(), GetUserAccessibleChunkSize(), GetChunkAppendBlockSize(), owner, ownerRound, GetStatusFlags(OwnerSystem, evYardInit.OwnerGroupType) | ui32(NKikimrBlobStorage::StatusNewOwner), TVector<TChunkIdx>(), - nullptr)); + Cfg->RetrieveDeviceType(), nullptr)); GetStartingPoints(result->PDiskParams->Owner, result->StartingPoints); WriteSysLogRestorePoint(new TCompletionEventSender( this, evYardInit.Sender, result.Release(), Mon.YardInit.Results), evYardInit.ReqId, {}); diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_mon.h b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_mon.h index 621d28c7d7b9..664451321e7e 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_mon.h +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_mon.h @@ -4,6 +4,7 @@ #include <ydb/core/blobstorage/lwtrace_probes/blobstorage_probes.h> #include <ydb/core/mon/mon.h> #include <ydb/core/protos/node_whiteboard.pb.h> +#include <ydb/core/util/light.h> #include <library/cpp/bucket_quoter/bucket_quoter.h> #include <library/cpp/containers/stack_vector/stack_vec.h> @@ -14,270 +15,6 @@ namespace NKikimr { struct TPDiskConfig; -inline NHPTimer::STime HPNow() { - NHPTimer::STime ret; - GetTimeFast(&ret); - return ret; -} - -inline double HPSecondsFloat(i64 cycles) { - if (cycles > 0) { - return double(cycles) / NHPTimer::GetClockRate(); - } else { - return 0.0; - } -} - -inline double HPMilliSecondsFloat(i64 cycles) { - if (cycles > 0) { - return double(cycles) * 1000.0 / NHPTimer::GetClockRate(); - } else { - return 0; - } -} - -inline ui64 HPMilliSeconds(i64 cycles) { - return (ui64)HPMilliSecondsFloat(cycles); -} - -inline ui64 HPMicroSecondsFloat(i64 cycles) { - if (cycles > 0) { - return double(cycles) * 1000000.0 / NHPTimer::GetClockRate(); - } else { - return 0; - } -} - -inline ui64 HPMicroSeconds(i64 cycles) { - return (ui64)HPMicroSecondsFloat(cycles); -} - -inline ui64 HPNanoSeconds(i64 cycles) { - if (cycles > 0) { - return ui64(double(cycles) * 1000000000.0 / NHPTimer::GetClockRate()); - } else { - return 0; - } -} - -inline ui64 HPCyclesNs(ui64 ns) { - return ui64(NHPTimer::GetClockRate() * double(ns) / 1000000000.0); -} - -inline ui64 HPCyclesUs(ui64 us) { - return ui64(NHPTimer::GetClockRate() * double(us) / 1000000.0); -} - -inline ui64 HPCyclesMs(ui64 ms) { - return ui64(NHPTimer::GetClockRate() * double(ms) / 1000.0); -} - -class TLightBase { -protected: - TString Name; - ::NMonitoring::TDynamicCounters::TCounterPtr State; // Current state (0=OFF=green, 1=ON=red) - ::NMonitoring::TDynamicCounters::TCounterPtr Count; // Number of switches to ON state - ::NMonitoring::TDynamicCounters::TCounterPtr RedMs; // Time elapsed in ON state - ::NMonitoring::TDynamicCounters::TCounterPtr GreenMs; // Time elapsed in OFF state -private: - ui64 RedCycles = 0; - ui64 GreenCycles = 0; - NHPTimer::STime AdvancedTill = 0; - NHPTimer::STime LastNow = 0; - ui64 UpdateThreshold = 0; -public: - void Initialize(TIntrusivePtr<::NMonitoring::TDynamicCounters>& counters, const TString& name) { - Name = name; - State = counters->GetCounter(name + "_state"); - Count = counters->GetCounter(name + "_count", true); - RedMs = counters->GetCounter(name + "_redMs", true); - GreenMs = counters->GetCounter(name + "_greenMs", true); - UpdateThreshold = HPCyclesMs(100); - AdvancedTill = Now(); - } - - void Initialize(TIntrusivePtr<::NMonitoring::TDynamicCounters>& counters, const TString& countName, - const TString& redMsName,const TString& greenMsName) { - Count = counters->GetCounter(countName, true); - RedMs = counters->GetCounter(redMsName, true); - GreenMs = counters->GetCounter(greenMsName, true); - UpdateThreshold = HPCyclesMs(100); - AdvancedTill = Now(); - } - - ui64 GetCount() const { - return *Count; - } - - ui64 GetRedMs() const { - return *RedMs; - } - - ui64 GetGreenMs() const { - return *GreenMs; - } -protected: - void Modify(bool state, bool prevState) { - if (state && !prevState) { // Switched to ON state - if (State) { - *State = true; - } - (*Count)++; - return; - } - if (!state && prevState) { // Switched to OFF state - if (State) { - *State = false; - } - return; - } - } - - void Advance(bool state, NHPTimer::STime now) { - if (now == AdvancedTill) { - return; - } - Elapsed(state, now - AdvancedTill); - if (RedCycles > UpdateThreshold) { - *RedMs += CutMs(RedCycles); - } - if (GreenCycles > UpdateThreshold) { - *GreenMs += CutMs(GreenCycles); - } - AdvancedTill = now; - } - - NHPTimer::STime Now() { - // Avoid time going backwards - NHPTimer::STime now = HPNow(); - if (now < LastNow) { - now = LastNow; - } - LastNow = now; - return now; - } -private: - void Elapsed(bool state, ui64 cycles) { - if (state) { - RedCycles += cycles; - } else { - GreenCycles += cycles; - } - } - - ui64 CutMs(ui64& src) { - ui64 ms = HPMilliSeconds(src); - ui64 cycles = HPCyclesMs(ms); - src -= cycles; - return ms; - } -}; - -// Thread-safe light -class TLight : public TLightBase { -private: - struct TItem { - bool State; - bool Filled; - TItem(bool state = false, bool filled = false) - : State(state) - , Filled(filled) - {} - }; - - // Cyclic buffer to enforce event ordering by seqno - TSpinLock Lock; - size_t HeadIdx = 0; // Index of current state - size_t FilledCount = 0; - ui16 Seqno = 0; // Current seqno - TStackVec<TItem, 32> Data; // In theory should have not more than thread count items -public: - TLight() { - InitData(); - } - - void Set(bool state, ui16 seqno) { - TGuard<TSpinLock> g(Lock); - Push(state, seqno); - bool prevState; - // Note that 'state' variable is being reused - NHPTimer::STime now = Now(); - while (Pop(state, prevState)) { - Modify(state, prevState); - Advance(prevState, now); - } - } - - void Update() { - TGuard<TSpinLock> g(Lock); - Advance(Data[HeadIdx].State, Now()); - } - -private: - void InitData(bool state = false, bool filled = false) { - Data.clear(); - Data.emplace_back(state, filled); - Data.resize(32); - HeadIdx = 0; - } - - void Push(bool state, ui16 seqno) { - FilledCount++; - if (FilledCount == 1) { // First event must initialize seqno - Seqno = seqno; - InitData(state, true); - if (state) { - Modify(true, false); - } - return; - } - Y_ABORT_UNLESS(seqno != Seqno, "ordering overflow or duplicate event headSeqno# %d seqno# %d state# %d filled# %d", - (int)Seqno, (int)seqno, (int)state, (int)CountFilled()); - ui16 diff = seqno; - diff -= Seqno; // Underflow is fine - size_t size = Data.size(); - if (size <= diff) { // Buffer is full -- extend and move wrapped part - Data.resize(size * 2); - for (size_t i = 0; i < HeadIdx; i++) { - Data[size + i] = Data[i]; - Data[i].Filled = false; - } - } - TItem& item = Data[(HeadIdx + diff) % Data.size()]; - Y_ABORT_UNLESS(!item.Filled, "ordering overflow or duplicate event headSeqno# %d seqno# %d state# %d filled# %d", - (int)Seqno, (int)seqno, (int)state, (int)CountFilled()); - item.Filled = true; - item.State = state; - } - - bool Pop(bool& state, bool& prevState) { - size_t nextIdx = (HeadIdx + 1) % Data.size(); - TItem& head = Data[HeadIdx]; - TItem& next = Data[nextIdx]; - if (!head.Filled || !next.Filled) { - return false; - } - state = next.State; - prevState = head.State; - head.Filled = false; - HeadIdx = nextIdx; - Seqno++; // Overflow is fine - FilledCount--; - if (FilledCount == 1 && Data.size() > 32) { - InitData(state, true); - } - return true; - } - - size_t CountFilled() const { - size_t ret = 0; - for (const TItem& item : Data) { - ret += item.Filled; - } - return ret; - } -}; - class TBurstmeter { private: TBucketQuoter<i64, TSpinLock, THPTimerUs> Bucket; diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_params.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_params.cpp index b8564ea0305e..4e7078f9a8d9 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_params.cpp +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_params.cpp @@ -11,7 +11,7 @@ namespace NKikimr { //////////////////////////////////////////////////////////////////////////// TPDiskParams::TPDiskParams(NPDisk::TOwner owner, ui64 ownerRound, ui32 chunkSize, ui32 appendBlockSize, ui64 seekTimeUs, ui64 readSpeedBps, ui64 writeSpeedBps, ui64 readBlockSize, - ui64 writeBlockSize, ui64 bulkWriteBlockSize) + ui64 writeBlockSize, ui64 bulkWriteBlockSize, NPDisk::EDeviceType trueMediaType) : Owner(owner) , OwnerRound(ownerRound) , ChunkSize(chunkSize) @@ -25,6 +25,7 @@ namespace NKikimr { , BulkWriteBlockSize(bulkWriteBlockSize) , PrefetchSizeBytes(CalculatePrefetchSizeBytes(seekTimeUs, readSpeedBps)) , GlueRequestDistanceBytes(CalculateGlueRequestDistanceBytes(seekTimeUs, readSpeedBps)) + , TrueMediaType(trueMediaType) { Y_DEBUG_ABORT_UNLESS(AppendBlockSize <= ChunkSize); } diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_params.h b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_params.h index 7e5017d87916..175bd3ec0ddd 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_params.h +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_params.h @@ -27,13 +27,15 @@ namespace NKikimr { const ui64 PrefetchSizeBytes; // Pdisk is expected to stream data of this size at 83% of max speed. const ui64 GlueRequestDistanceBytes; // It is faster to read unneeded data of this size than to seek over it. + const NPDisk::EDeviceType TrueMediaType; + static ui32 CalculateRecommendedReadSize(ui64 seekTimeUs, ui64 readSpeedBps, ui64 appendBlockSize); static ui64 CalculatePrefetchSizeBytes(ui64 seekTimeUs, ui64 readSpeedBps); static ui64 CalculateGlueRequestDistanceBytes(ui64 seekTimeUs, ui64 readSpeedBps); TPDiskParams(NPDisk::TOwner owner, ui64 ownerRound, ui32 chunkSize, ui32 appendBlockSize, ui64 seekTimeUs, ui64 readSpeedBps, ui64 writeSpeedBps, ui64 readBlockSize, - ui64 writeBlockSize, ui64 bulkWriteBlockSize); + ui64 writeBlockSize, ui64 bulkWriteBlockSize, NPDisk::EDeviceType trueMediaType); void OutputHtml(IOutputStream &str) const; TString ToString() const; }; diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut_env.h b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut_env.h index f1b5d2b0c042..0012985963f5 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut_env.h +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut_env.h @@ -72,7 +72,7 @@ struct TActorTestContext { appData->IoContextFactory = IoContext.get(); Runtime->SetLogBackend(IsLowVerbose ? CreateStderrBackend() : CreateNullBackend()); - Runtime->Initialize(TTestActorRuntime::TEgg{appData.Release(), nullptr, {}}); + Runtime->Initialize(TTestActorRuntime::TEgg{appData.Release(), nullptr, {}, {}}); Runtime->SetLogPriority(NKikimrServices::BS_PDISK, NLog::PRI_NOTICE); Runtime->SetLogPriority(NKikimrServices::BS_PDISK_SYSLOG, NLog::PRI_NOTICE); Runtime->SetLogPriority(NKikimrServices::BS_PDISK_TEST, NLog::PRI_DEBUG); diff --git a/ydb/core/blobstorage/pdisk/mock/pdisk_mock.cpp b/ydb/core/blobstorage/pdisk/mock/pdisk_mock.cpp index 90969f236cbe..ff6fc007ce9a 100644 --- a/ydb/core/blobstorage/pdisk/mock/pdisk_mock.cpp +++ b/ydb/core/blobstorage/pdisk/mock/pdisk_mock.cpp @@ -46,8 +46,9 @@ struct TPDiskMockState::TImpl { NPDisk::TStatusFlags StatusFlags; THashSet<ui32> ReadOnlyVDisks; TString StateErrorReason; + NPDisk::EDeviceType DeviceType; - TImpl(ui32 nodeId, ui32 pdiskId, ui64 pdiskGuid, ui64 size, ui32 chunkSize) + TImpl(ui32 nodeId, ui32 pdiskId, ui64 pdiskGuid, ui64 size, ui32 chunkSize, NPDisk::EDeviceType deviceType) : NodeId(nodeId) , PDiskId(pdiskId) , PDiskGuid(pdiskGuid) @@ -57,6 +58,7 @@ struct TPDiskMockState::TImpl { , AppendBlockSize(4096) , NextFreeChunk(1) , StatusFlags(NPDisk::TStatusFlags{}) + , DeviceType(deviceType) {} TImpl(const TImpl&) = default; @@ -280,8 +282,9 @@ struct TPDiskMockState::TImpl { } }; -TPDiskMockState::TPDiskMockState(ui32 nodeId, ui32 pdiskId, ui64 pdiskGuid, ui64 size, ui32 chunkSize) - : TPDiskMockState(std::make_unique<TImpl>(nodeId, pdiskId, pdiskGuid, size, chunkSize)) +TPDiskMockState::TPDiskMockState(ui32 nodeId, ui32 pdiskId, ui64 pdiskGuid, ui64 size, ui32 chunkSize, + NPDisk::EDeviceType deviceType) + : TPDiskMockState(std::make_unique<TImpl>(nodeId, pdiskId, pdiskGuid, size, chunkSize, deviceType)) {} TPDiskMockState::TPDiskMockState(std::unique_ptr<TImpl>&& impl) @@ -415,15 +418,16 @@ class TPDiskMockActor : public TActorBootstrapped<TPDiskMockActor> { // fill in the response TVector<TChunkIdx> ownedChunks(owner->CommittedChunks.begin(), owner->CommittedChunks.end()); - const ui64 seekTimeUs = 100; - const ui64 readSpeedBps = 100 * 1000 * 1000; - const ui64 writeSpeedBps = 100 * 1000 * 1000; + const auto& performanceParams = NPDisk::DevicePerformance.at(Impl.DeviceType); + const ui64 seekTimeUs = (performanceParams.SeekTimeNs + 1000) / 1000 - 1; + const ui64 readSpeedBps = performanceParams.FirstSectorReadBytesPerSec; + const ui64 writeSpeedBps = performanceParams.FirstSectorWriteBytesPerSec; const ui64 readBlockSize = 65536; const ui64 writeBlockSize = 65536; const ui64 bulkWriteBlockSize = 65536; res = std::make_unique<NPDisk::TEvYardInitResult>(NKikimrProto::OK, seekTimeUs, readSpeedBps, writeSpeedBps, readBlockSize, writeBlockSize, bulkWriteBlockSize, Impl.ChunkSize, Impl.AppendBlockSize, ownerId, - owner->OwnerRound, GetStatusFlags(), std::move(ownedChunks), TString()); + owner->OwnerRound, GetStatusFlags(), std::move(ownedChunks), NPDisk::DEVICE_TYPE_NVME, TString()); res->StartingPoints = owner->StartingPoints; } else { res = std::make_unique<NPDisk::TEvYardInitResult>(NKikimrProto::INVALID_ROUND, "invalid owner round"); diff --git a/ydb/core/blobstorage/pdisk/mock/pdisk_mock.h b/ydb/core/blobstorage/pdisk/mock/pdisk_mock.h index 2198b0615c34..919027fe4c0f 100644 --- a/ydb/core/blobstorage/pdisk/mock/pdisk_mock.h +++ b/ydb/core/blobstorage/pdisk/mock/pdisk_mock.h @@ -21,7 +21,8 @@ namespace NKikimr { using TPtr = TIntrusivePtr<TPDiskMockState>; public: - TPDiskMockState(ui32 nodeId, ui32 pdiskId, ui64 pdiskGuid, ui64 size, ui32 chunkSize = 128 << 20); + TPDiskMockState(ui32 nodeId, ui32 pdiskId, ui64 pdiskGuid, ui64 size, ui32 chunkSize = 128 << 20, + NPDisk::EDeviceType deviceType = NPDisk::EDeviceType::DEVICE_TYPE_NVME); TPDiskMockState(std::unique_ptr<TImpl>&& impl); ~TPDiskMockState(); diff --git a/ydb/core/blobstorage/ut_blobstorage/lib/env.h b/ydb/core/blobstorage/ut_blobstorage/lib/env.h index 470e1a7a8e92..f9c0ddd02fe1 100644 --- a/ydb/core/blobstorage/ut_blobstorage/lib/env.h +++ b/ydb/core/blobstorage/ut_blobstorage/lib/env.h @@ -23,6 +23,10 @@ struct TEnvironmentSetup { std::set<TActorId> CommencedReplication; std::unordered_map<ui32, TString> Cache; + using TIcbControlKey = std::pair<ui32, TString>; // { nodeId, name } + + std::unordered_map<TIcbControlKey, TControlWrapper> IcbControls; + struct TSettings { const ui32 NodeCount = 9; const bool VDiskReplPausedAtStart = false; @@ -38,6 +42,9 @@ struct TEnvironmentSetup { const bool SetupHive = false; const bool SuppressCompatibilityCheck = false; const TFeatureFlags FeatureFlags; + const NPDisk::EDeviceType DiskType = NPDisk::EDeviceType::DEVICE_TYPE_NVME; + const ui64 BurstThresholdNs = 0; + const float DiskTimeAvailableScale = 1; }; const TSettings Settings; @@ -55,7 +62,8 @@ struct TEnvironmentSetup { const auto key = std::make_pair(nodeId, pdiskId); TIntrusivePtr<TPDiskMockState>& state = Env.PDiskMockStates[key]; if (!state) { - state.Reset(new TPDiskMockState(nodeId, pdiskId, cfg->PDiskGuid, ui64(10) << 40, cfg->ChunkSize)); + state.Reset(new TPDiskMockState(nodeId, pdiskId, cfg->PDiskGuid, ui64(10) << 40, cfg->ChunkSize, + Env.Settings.DiskType)); } const TActorId& actorId = ctx.Register(CreatePDiskMockActor(state), TMailboxType::HTSwap, poolId); const TActorId& serviceId = MakeBlobStoragePDiskID(nodeId, pdiskId); @@ -321,6 +329,26 @@ struct TEnvironmentSetup { config->CacheAccessor = std::make_unique<TAccessor>(Cache[nodeId]); } config->FeatureFlags = Settings.FeatureFlags; + + TAppData* appData = Runtime->GetNode(nodeId)->AppData.get(); + +#define ADD_ICB_CONTROL(controlName, defaultVal, minVal, maxVal, currentValue) { \ + TControlWrapper control(defaultVal, minVal, maxVal); \ + appData->Icb->RegisterSharedControl(control, controlName); \ + control = currentValue; \ + IcbControls.insert({{nodeId, controlName}, std::move(control)}); \ + } + + if (Settings.BurstThresholdNs) { + ADD_ICB_CONTROL("VDiskControls.BurstThresholdNsHDD", 200'000'000, 1, 1'000'000'000'000, Settings.BurstThresholdNs); + ADD_ICB_CONTROL("VDiskControls.BurstThresholdNsSSD", 50'000'000, 1, 1'000'000'000'000, Settings.BurstThresholdNs); + ADD_ICB_CONTROL("VDiskControls.BurstThresholdNsNVME", 32'000'000, 1, 1'000'000'000'000, Settings.BurstThresholdNs); + } + ADD_ICB_CONTROL("VDiskControls.DiskTimeAvailableScaleHDD", 1'000, 1, 1'000'000, std::round(Settings.DiskTimeAvailableScale * 1'000)); + ADD_ICB_CONTROL("VDiskControls.DiskTimeAvailableScaleSSD", 1'000, 1, 1'000'000, std::round(Settings.DiskTimeAvailableScale * 1'000)); + ADD_ICB_CONTROL("VDiskControls.DiskTimeAvailableScaleNVME", 1'000, 1, 1'000'000, std::round(Settings.DiskTimeAvailableScale * 1'000)); +#undef ADD_ICB_CONTROL + warden.reset(CreateBSNodeWarden(config)); } @@ -817,4 +845,44 @@ struct TEnvironmentSetup { return SyncQueryFactory<TResult>(actorId, [&] { return std::make_unique<TQuery>(args...); }); } + ui64 AggregateVDiskCounters(TString storagePool, ui32 nodesCount, ui32 groupSize, ui32 groupId, + const std::vector<ui32>& pdiskLayout, TString subsystem, TString counter, bool derivative = false) { + ui64 ctr = 0; + + for (ui32 nodeId = 1; nodeId <= nodesCount; ++nodeId) { + auto* appData = Runtime->GetNode(nodeId)->AppData.get(); + for (ui32 i = 0; i < groupSize; ++i) { + TStringStream ss; + ss << LeftPad(i, 2, '0'); + TString orderNumber = ss.Str(); + ss.Clear(); + ss << LeftPad(pdiskLayout[i], 9, '0'); + TString pdisk = ss.Str(); + ctr += GetServiceCounters(appData->Counters, "vdisks")-> + GetSubgroup("storagePool", storagePool)-> + GetSubgroup("group", std::to_string(groupId))-> + GetSubgroup("orderNumber", orderNumber)-> + GetSubgroup("pdisk", pdisk)-> + GetSubgroup("media", "rot")-> + GetSubgroup("subsystem", subsystem)-> + GetCounter(counter, derivative)->Val(); + } + } + return ctr; + }; + + void SetIcbControl(ui32 nodeId, TString controlName, ui64 value) { + if (nodeId == 0) { + for (nodeId = 1; nodeId <= Settings.NodeCount; ++nodeId) { + auto it = IcbControls.find({nodeId, controlName}); + Y_ABORT_UNLESS(it != IcbControls.end()); + it->second = value; + } + } else { + auto it = IcbControls.find({nodeId, controlName}); + Y_ABORT_UNLESS(it != IcbControls.end()); + it->second = value; + } + } + }; diff --git a/ydb/core/blobstorage/ut_blobstorage/monitoring.cpp b/ydb/core/blobstorage/ut_blobstorage/monitoring.cpp index 2af16506ab5e..243991276d72 100644 --- a/ydb/core/blobstorage/ut_blobstorage/monitoring.cpp +++ b/ydb/core/blobstorage/ut_blobstorage/monitoring.cpp @@ -1,5 +1,6 @@ #include <ydb/core/blobstorage/ut_blobstorage/lib/env.h> #include <ydb/core/blobstorage/groupinfo/blobstorage_groupinfo.h> +#include "ut_helpers.h" constexpr bool VERBOSE = false; @@ -11,181 +12,118 @@ TString MakeData(ui32 dataSize) { return data; } -template <typename TDerived> -class TInflightActor : public TActorBootstrapped<TDerived> { -public: - TInflightActor(ui32 requests, ui32 inflight) - : RequestCount(requests) - , RequestInflight(inflight) - {} +ui64 AggregateVDiskCounters(std::unique_ptr<TEnvironmentSetup>& env, const NKikimrBlobStorage::TBaseConfig& baseConfig, + TString storagePool, ui32 groupSize, ui32 groupId, const std::vector<ui32>& pdiskLayout, TString subsystem, + TString counter, bool derivative = false) { + ui64 ctr = 0; - virtual ~TInflightActor() = default; - - void SetGroupId(ui32 groupId) { - GroupId = groupId; - } - void Bootstrap(const TActorContext &ctx) { - BootstrapImpl(ctx); - } - -protected: - void SendRequests() { - while (RequestInflight > 0 && RequestCount > 0) { - RequestInflight--; - RequestCount--; - SendRequest(); - } - } - - void HandleReply(NKikimrProto::EReplyStatus status) { - if (status == NKikimrProto::OK) { - OKs++; - } else { - Fails++; + for (const auto& vslot : baseConfig.GetVSlot()) { + auto* appData = env->Runtime->GetNode(vslot.GetVSlotId().GetNodeId())->AppData.get(); + for (ui32 i = 0; i < groupSize; ++i) { + ctr += GetServiceCounters(appData->Counters, "vdisks")-> + GetSubgroup("storagePool", storagePool)-> + GetSubgroup("group", std::to_string(groupId))-> + GetSubgroup("orderNumber", "0" + std::to_string(i))-> + GetSubgroup("pdisk", "00000" + std::to_string(pdiskLayout[i]))-> + GetSubgroup("media", "rot")-> + GetSubgroup("subsystem", subsystem)-> + GetCounter(counter, derivative)->Val(); } - ++RequestInflight; - SendRequests(); } - - virtual void BootstrapImpl(const TActorContext &ctx) = 0; - virtual void SendRequest() = 0; - -protected: - ui32 RequestCount; - ui32 RequestInflight; - ui32 GroupId; - -public: - ui32 OKs = 0; - ui32 Fails = 0; + return ctr; }; -template <typename TInflightActor> -void Test(const TBlobStorageGroupInfo::TTopology& topology, TInflightActor* actor) { - const ui32 groupSize = topology.TotalVDisks; - const auto& groupErasure = topology.GType; - TEnvironmentSetup env{{ +void SetupEnv(const TBlobStorageGroupInfo::TTopology& topology, std::unique_ptr<TEnvironmentSetup>& env, + NKikimrBlobStorage::TBaseConfig& baseConfig, ui32& groupSize, TBlobStorageGroupType& groupType, + ui32& groupId, std::vector<ui32>& pdiskLayout, ui32 burstThresholdNs = 0, float diskTimeAvailableScale = 1) { + groupSize = topology.TotalVDisks; + groupType = topology.GType; + env.reset(new TEnvironmentSetup({ .NodeCount = groupSize, - .Erasure = groupErasure, - }}; + .Erasure = groupType, + .DiskType = NPDisk::EDeviceType::DEVICE_TYPE_ROT, + .BurstThresholdNs = burstThresholdNs, + .DiskTimeAvailableScale = diskTimeAvailableScale, + })); - env.CreateBoxAndPool(1, 1); - env.Sim(TDuration::Seconds(30)); + env->CreateBoxAndPool(1, 1); + env->Sim(TDuration::Seconds(30)); NKikimrBlobStorage::TConfigRequest request; request.AddCommand()->MutableQueryBaseConfig(); - auto response = env.Invoke(request); + auto response = env->Invoke(request); - const auto& baseConfig = response.GetStatus(0).GetBaseConfig(); + baseConfig = response.GetStatus(0).GetBaseConfig(); UNIT_ASSERT_VALUES_EQUAL(baseConfig.GroupSize(), 1); - ui32 groupId = baseConfig.GetGroup(0).GetGroupId(); - std::vector<ui32> pdiskIds(groupSize); + groupId = baseConfig.GetGroup(0).GetGroupId(); + pdiskLayout.resize(groupSize); for (const auto& vslot : baseConfig.GetVSlot()) { const auto& vslotId = vslot.GetVSlotId(); ui32 orderNumber = topology.GetOrderNumber(TVDiskIdShort(vslot.GetFailRealmIdx(), vslot.GetFailDomainIdx(), vslot.GetVDiskIdx())); if (vslot.GetGroupId() == groupId) { - pdiskIds[orderNumber] = vslotId.GetPDiskId(); + pdiskLayout[orderNumber] = vslotId.GetPDiskId(); } } +} + +template <typename TInflightActor> +void TestDSProxyAndVDiskEqualCost(const TBlobStorageGroupInfo::TTopology& topology, TInflightActor* actor) { + std::unique_ptr<TEnvironmentSetup> env; + NKikimrBlobStorage::TBaseConfig baseConfig; + ui32 groupSize; + TBlobStorageGroupType groupType; + ui32 groupId; + std::vector<ui32> pdiskLayout; + SetupEnv(topology, env, baseConfig, groupSize, groupType, groupId, pdiskLayout); ui64 dsproxyCost = 0; ui64 vdiskCost = 0; - auto vdisksTotal = [&](TString subsystem, TString counter, bool derivative = false) { - ui64 ctr = 0; - for (const auto& vslot : baseConfig.GetVSlot()) { - auto* appData = env.Runtime->GetNode(vslot.GetVSlotId().GetNodeId())->AppData.get(); - for (ui32 i = 0; i < groupSize; ++i) { - ctr += GetServiceCounters(appData->Counters, "vdisks")-> - GetSubgroup("storagePool", env.StoragePoolName)-> - GetSubgroup("group", std::to_string(groupId))-> - GetSubgroup("orderNumber", "0" + std::to_string(i))-> - GetSubgroup("pdisk", "00000" + std::to_string(pdiskIds[i]))-> - GetSubgroup("media", "rot")-> - GetSubgroup("subsystem", subsystem)-> - GetCounter(counter, derivative)->Val(); - } - } - return ctr; - }; - auto updateCounters = [&]() { + dsproxyCost = 0; + for (const auto& vslot : baseConfig.GetVSlot()) { - auto* appData = env.Runtime->GetNode(vslot.GetVSlotId().GetNodeId())->AppData.get(); + auto* appData = env->Runtime->GetNode(vslot.GetVSlotId().GetNodeId())->AppData.get(); dsproxyCost += GetServiceCounters(appData->Counters, "dsproxynode")-> GetSubgroup("subsystem", "request")-> - GetSubgroup("storagePool", env.StoragePoolName)-> + GetSubgroup("storagePool", env->StoragePoolName)-> GetCounter("DSProxyDiskCostNs")->Val(); } - vdiskCost = vdisksTotal("cost", "SkeletonFrontUserCostNs"); + vdiskCost = AggregateVDiskCounters(env, baseConfig, env->StoragePoolName, groupSize, groupId, + pdiskLayout, "cost", "SkeletonFrontUserCostNs"); }; updateCounters(); UNIT_ASSERT_VALUES_EQUAL(dsproxyCost, vdiskCost); actor->SetGroupId(groupId); - env.Runtime->Register(actor, 1); - env.Sim(TDuration::Minutes(15)); + env->Runtime->Register(actor, 1); + env->Sim(TDuration::Minutes(15)); updateCounters(); TStringStream str; double proportion = 1. * dsproxyCost / vdiskCost; i64 diff = (i64)dsproxyCost - vdiskCost; - str << "OKs# " << actor->OKs << ", Fails# " << actor->Fails << ", Cost on dsproxy# " - << dsproxyCost << ", Cost on vdisks# " << vdiskCost << ", proportion# " << proportion + str << "OKs# " << actor->ResponsesByStatus[NKikimrProto::OK] << ", Errors# " << actor->ResponsesByStatus[NKikimrProto::ERROR] + << ", Cost on dsproxy# " << dsproxyCost << ", Cost on vdisks# " << vdiskCost << ", proportion# " << proportion << " diff# " << diff; if constexpr(VERBOSE) { Cerr << str.Str() << Endl; + // env->Runtime->GetAppData()->Counters->OutputPlainText(Cerr); } UNIT_ASSERT_VALUES_EQUAL_C(dsproxyCost, vdiskCost, str.Str()); } -class TInflightActorPut : public TInflightActor<TInflightActorPut> { -public: - TInflightActorPut(ui32 requests, ui32 inflight, ui32 dataSize = 1024) - : TInflightActor(requests, inflight) - , DataSize(dataSize) - {} - - STRICT_STFUNC(StateWork, - cFunc(TEvBlobStorage::TEvStatusResult::EventType, SendRequests); - hFunc(TEvBlobStorage::TEvPutResult, Handle); - ) - - virtual void BootstrapImpl(const TActorContext&/* ctx*/) override { - // dummy request to establish the session - auto ev = new TEvBlobStorage::TEvStatus(TInstant::Max()); - SendToBSProxy(SelfId(), GroupId, ev, 0); - Become(&TInflightActorPut::StateWork); - } - -protected: - virtual void SendRequest() override { - TString data = MakeData(DataSize); - auto ev = new TEvBlobStorage::TEvPut(TLogoBlobID(1, 1, 1, 10, DataSize, RequestCount + 1), - data, TInstant::Max(), NKikimrBlobStorage::UserData); - SendToBSProxy(SelfId(), GroupId, ev, 0); - } - - void Handle(TEvBlobStorage::TEvPutResult::TPtr res) { - HandleReply(res->Get()->Status); - } - -private: - std::string Data; - ui32 DataSize; -}; - #define MAKE_TEST(erasure, requestType, requests, inflight) \ Y_UNIT_TEST(Test##requestType##erasure##Requests##requests##Inflight##inflight) { \ auto groupType = TBlobStorageGroupType::Erasure##erasure; \ ui32 realms = (groupType == TBlobStorageGroupType::ErasureMirror3dc) ? 3 : 1; \ ui32 domains = (groupType == TBlobStorageGroupType::ErasureMirror3dc) ? 3 : 8; \ TBlobStorageGroupInfo::TTopology topology(groupType, realms, domains, 1, true); \ - auto actor = new TInflightActor##requestType(requests, inflight); \ - Test(topology, actor); \ + auto actor = new TInflightActor##requestType({requests, inflight}); \ + TestDSProxyAndVDiskEqualCost(topology, actor); \ } #define MAKE_TEST_W_DATASIZE(erasure, requestType, requests, inflight, dataSize) \ @@ -194,102 +132,10 @@ Y_UNIT_TEST(Test##requestType##erasure##Requests##requests##Inflight##inflight## ui32 realms = (groupType == TBlobStorageGroupType::ErasureMirror3dc) ? 3 : 1; \ ui32 domains = (groupType == TBlobStorageGroupType::ErasureMirror3dc) ? 3 : 8; \ TBlobStorageGroupInfo::TTopology topology(groupType, realms, domains, 1, true); \ - auto actor = new TInflightActor##requestType(requests, inflight, dataSize); \ - Test(topology, actor); \ + auto actor = new TInflightActor##requestType({requests, inflight}, dataSize); \ + TestDSProxyAndVDiskEqualCost(topology, actor); \ } -class TInflightActorGet : public TInflightActor<TInflightActorGet> { -public: - TInflightActorGet(ui32 requests, ui32 inflight, ui32 dataSize = 1024) - : TInflightActor(requests, inflight) - , DataSize(dataSize) - {} - - STRICT_STFUNC(StateWork, - cFunc(TEvBlobStorage::TEvPutResult::EventType, SendRequests); - hFunc(TEvBlobStorage::TEvGetResult, Handle); - ) - - virtual void BootstrapImpl(const TActorContext&/* ctx*/) override { - TString data = MakeData(DataSize); - BlobId = TLogoBlobID(1, 1, 1, 10, DataSize, 1); - auto ev = new TEvBlobStorage::TEvPut(BlobId, data, TInstant::Max()); - SendToBSProxy(SelfId(), GroupId, ev, 0); - Become(&TInflightActorGet::StateWork); - } - -protected: - virtual void SendRequest() override { - auto ev = new TEvBlobStorage::TEvGet(BlobId, 0, 10, TInstant::Max(), NKikimrBlobStorage::EGetHandleClass::FastRead); - SendToBSProxy(SelfId(), GroupId, ev, 0); - } - - void Handle(TEvBlobStorage::TEvGetResult::TPtr res) { - HandleReply(res->Get()->Status); - } - -private: - TLogoBlobID BlobId; - std::string Data; - ui32 DataSize; -}; - -class TInflightActorPatch : public TInflightActor<TInflightActorPatch> { -public: - TInflightActorPatch(ui32 requests, ui32 inflight, ui32 dataSize = 1024) - : TInflightActor(requests, inflight) - , DataSize(dataSize) - {} - - STRICT_STFUNC(StateWork, - hFunc(TEvBlobStorage::TEvPatchResult, Handle); - hFunc(TEvBlobStorage::TEvPutResult, Handle); - ) - - virtual void BootstrapImpl(const TActorContext&/* ctx*/) override { - TString data = MakeData(DataSize); - for (ui32 i = 0; i < RequestInflight; ++i) { - TLogoBlobID blobId(1, 1, 1, 10, DataSize, 1 + i); - auto ev = new TEvBlobStorage::TEvPut(blobId, data, TInstant::Max()); - SendToBSProxy(SelfId(), GroupId, ev, 0); - } - Become(&TInflightActorPatch::StateWork); - } - -protected: - virtual void SendRequest() override { - TLogoBlobID oldId = Blobs.front(); - Blobs.pop_front(); - TLogoBlobID newId(1, 1, oldId.Step() + 1, 10, DataSize, oldId.Cookie()); - Y_ABORT_UNLESS(TEvBlobStorage::TEvPatch::GetBlobIdWithSamePlacement(oldId, &newId, BlobIdMask, GroupId, GroupId)); - TArrayHolder<TEvBlobStorage::TEvPatch::TDiff> diffs(new TEvBlobStorage::TEvPatch::TDiff[1]); - char c = 'a' + RequestCount % 26; - diffs[0].Set(TString(DataSize, c), 0); - auto ev = new TEvBlobStorage::TEvPatch(GroupId, oldId, newId, BlobIdMask, std::move(diffs), 1, TInstant::Max()); - SendToBSProxy(SelfId(), GroupId, ev, 0); - } - - - void Handle(TEvBlobStorage::TEvPatchResult::TPtr res) { - Blobs.push_back(res->Get()->Id); - HandleReply(res->Get()->Status); - } - - void Handle(TEvBlobStorage::TEvPutResult::TPtr res) { - Blobs.push_back(res->Get()->Id); - if (++BlobsWritten == RequestInflight) { - SendRequests(); - } - } - -protected: - std::deque<TLogoBlobID> Blobs; - ui32 BlobIdMask = TLogoBlobID::MaxCookie & 0xfffff000; - ui32 BlobsWritten = 0; - std::string Data; - ui32 DataSize; -}; - Y_UNIT_TEST_SUITE(CostMetricsPutMirror3dc) { MAKE_TEST_W_DATASIZE(Mirror3dc, Put, 1, 1, 1000); MAKE_TEST_W_DATASIZE(Mirror3dc, Put, 10, 1, 1000); @@ -368,3 +214,82 @@ Y_UNIT_TEST_SUITE(CostMetricsPatchBlock4Plus2) { MAKE_TEST_W_DATASIZE(4Plus2Block, Patch, 100, 10, 1000); MAKE_TEST_W_DATASIZE(4Plus2Block, Patch, 10000, 100, 1000); } + +enum class ELoadDistribution : ui8 { + DistributionBurst = 0, + DistributionEvenly, +}; + +template <typename TInflightActor> +void TestBurst(ui32 requests, ui32 inflight, TDuration delay, ELoadDistribution loadDistribution, + ui32 burstThresholdNs = 0, float diskTimeAvailableScale = 1) { + TBlobStorageGroupInfo::TTopology topology(TBlobStorageGroupType::ErasureNone, 1, 1, 1, true); + auto* actor = new TInflightActor({requests, inflight, delay}, 8_MB); + std::unique_ptr<TEnvironmentSetup> env; + NKikimrBlobStorage::TBaseConfig baseConfig; + ui32 groupSize; + TBlobStorageGroupType groupType; + ui32 groupId; + std::vector<ui32> pdiskLayout; + SetupEnv(topology, env, baseConfig, groupSize, groupType, groupId, pdiskLayout, burstThresholdNs, diskTimeAvailableScale); + + actor->SetGroupId(groupId); + env->Runtime->Register(actor, 1); + env->Sim(TDuration::Minutes(10)); + + ui64 redMs = AggregateVDiskCounters(env, baseConfig, env->StoragePoolName, groupSize, groupId, + pdiskLayout, "advancedCost", "BurstDetector_redMs"); + + if (loadDistribution == ELoadDistribution::DistributionBurst) { + UNIT_ASSERT_VALUES_UNEQUAL(redMs, 0); + } else { + UNIT_ASSERT_VALUES_EQUAL(redMs, 0); + } +} + +Y_UNIT_TEST_SUITE(BurstDetection) { + Y_UNIT_TEST(TestPutEvenly) { + TestBurst<TInflightActorPut>(10, 1, TDuration::Seconds(1), ELoadDistribution::DistributionEvenly); + } + + Y_UNIT_TEST(TestPutBurst) { + TestBurst<TInflightActorPut>(10, 10, TDuration::MilliSeconds(1), ELoadDistribution::DistributionBurst); + } + + Y_UNIT_TEST(TestOverlySensitive) { + TestBurst<TInflightActorPut>(10, 1, TDuration::Seconds(1), ELoadDistribution::DistributionBurst, 1); + } +} + +void TestDiskTimeAvailableScaling() { + TBlobStorageGroupInfo::TTopology topology(TBlobStorageGroupType::ErasureNone, 1, 1, 1, true); + std::unique_ptr<TEnvironmentSetup> env; + NKikimrBlobStorage::TBaseConfig baseConfig; + ui32 groupSize; + TBlobStorageGroupType groupType; + ui32 groupId; + std::vector<ui32> pdiskLayout; + SetupEnv(topology, env, baseConfig, groupSize, groupType, groupId, pdiskLayout, 0, 1); + + i64 test1 = env->AggregateVDiskCounters(env->StoragePoolName, groupSize, groupSize, groupId, pdiskLayout, + "advancedCost", "DiskTimeAvailable"); + + env->SetIcbControl(0, "VDiskControls.DiskTimeAvailableScaleNVME", 2'000); + env->Sim(TDuration::Minutes(5)); + + i64 test2 = env->AggregateVDiskCounters(env->StoragePoolName, groupSize, groupSize, groupId, pdiskLayout, + "advancedCost", "DiskTimeAvailable"); + + i64 delta = test1 * 2 - test2; + + UNIT_ASSERT_LE_C(std::abs(delta), 10, "Total time available: with scale=1 time=" << test1 << + ", with scale=2 time=" << test2); +} + +Y_UNIT_TEST_SUITE(DiskTimeAvailable) { + Y_UNIT_TEST(Scaling) { + TestDiskTimeAvailableScaling(); + } +} + +#undef MAKE_BURST_TEST diff --git a/ydb/core/blobstorage/ut_blobstorage/ut_helpers.cpp b/ydb/core/blobstorage/ut_blobstorage/ut_helpers.cpp new file mode 100644 index 000000000000..5ed093531003 --- /dev/null +++ b/ydb/core/blobstorage/ut_blobstorage/ut_helpers.cpp @@ -0,0 +1,15 @@ +#include "ut_helpers.h" + +namespace NKikimr { + +TString MakeData(ui32 dataSize) { + TString data(dataSize, '\0'); + for (ui32 i = 0; i < dataSize; ++i) { + data[i] = 'A' + (i % 26); + } + return data; +} + +ui64 TInflightActor::Cookie = 1; + +} // namespace NKikimr diff --git a/ydb/core/blobstorage/ut_blobstorage/ut_helpers.h b/ydb/core/blobstorage/ut_blobstorage/ut_helpers.h new file mode 100644 index 000000000000..a42f754dc66f --- /dev/null +++ b/ydb/core/blobstorage/ut_blobstorage/ut_helpers.h @@ -0,0 +1,226 @@ +#pragma once + +#include <ydb/core/util/hp_timer_helpers.h> +#include <ydb/core/blobstorage/ut_blobstorage/lib/env.h> + +namespace NKikimr { + +TString MakeData(ui32 dataSize); + +class TInflightActor : public TActorBootstrapped<TInflightActor> { +public: + struct TSettings { + ui32 Requests; + ui32 MaxInFlight; + TDuration Delay = TDuration::Zero(); + ui32 GroupId = 0; + ui32 GroupGeneration = 1; + }; + +public: + TInflightActor(TSettings settings) + : RequestsToSend(settings.Requests) + , RequestInFlight(settings.MaxInFlight) + , GroupId(settings.GroupId) + , Settings(settings) + {} + + virtual ~TInflightActor() = default; + + void SetGroupId(ui32 groupId) { + GroupId = groupId; + } + + void Bootstrap(const TActorContext &ctx) { + LastTs = TAppData::TimeProvider->Now(); + BootstrapImpl(ctx); + } + +protected: + void ScheduleRequests() { + while (RequestInFlight > 0 && RequestsToSend > 0) { + TInstant now = TAppData::TimeProvider->Now(); + TDuration timePassed = now - LastTs; + if (timePassed >= Settings.Delay) { + LastTs = now; + RequestInFlight--; + RequestsToSend--; + RequestsSent++; + SendRequest(); + continue; + } else if (!WakeupScheduled) { + Schedule(Settings.Delay - timePassed, new TEvents::TEvWakeup); + WakeupScheduled = true; + } + break; + } + } + + void WakeupAndSchedule() { + WakeupScheduled = false; + ScheduleRequests(); + } + + void HandleReply(NKikimrProto::EReplyStatus status) { + ResponsesByStatus[status]++; + ++RequestInFlight; + ScheduleRequests(); + } + + virtual void BootstrapImpl(const TActorContext &ctx) = 0; + virtual void SendRequest() = 0; + +protected: + ui32 RequestsToSend; + ui32 RequestInFlight; + ui32 GroupId; + TInstant LastTs; + TSettings Settings; + bool WakeupScheduled = false; + +public: + std::unordered_map<NKikimrProto::EReplyStatus, ui32> ResponsesByStatus; + ui32 RequestsSent = 0; + +protected: + static ui64 Cookie; +}; + +/////////////////////////////////// TInflightActorPut /////////////////////////////////// + +class TInflightActorPut : public TInflightActor { +public: + TInflightActorPut(TSettings settings, ui32 dataSize = 1024) + : TInflightActor(settings) + , DataSize(dataSize) + {} + + STRICT_STFUNC(StateWork, + cFunc(TEvBlobStorage::TEvStatusResult::EventType, ScheduleRequests); + cFunc(TEvents::TEvWakeup::EventType, WakeupAndSchedule); + hFunc(TEvBlobStorage::TEvPutResult, Handle); + ) + + virtual void BootstrapImpl(const TActorContext&/* ctx*/) override { + // dummy request to establish the session + auto ev = new TEvBlobStorage::TEvStatus(TInstant::Max()); + SendToBSProxy(SelfId(), GroupId, ev, 0); + Become(&TInflightActorPut::StateWork); + } + +protected: + virtual void SendRequest() override { + TString data = MakeData(DataSize); + auto ev = new TEvBlobStorage::TEvPut(TLogoBlobID(1, 1, 1, 10, DataSize, Cookie++), + data, TInstant::Max(), NKikimrBlobStorage::UserData); + SendToBSProxy(SelfId(), GroupId, ev, 0); + } + + void Handle(TEvBlobStorage::TEvPutResult::TPtr res) { + HandleReply(res->Get()->Status); + } + +private: + std::string Data; + ui32 DataSize; +}; + +/////////////////////////////////// TInflightActorGet /////////////////////////////////// + +class TInflightActorGet : public TInflightActor { +public: + TInflightActorGet(TSettings settings, ui32 dataSize = 1024) + : TInflightActor(settings) + , DataSize(dataSize) + {} + + STRICT_STFUNC(StateWork, + cFunc(TEvBlobStorage::TEvPutResult::EventType, ScheduleRequests); + cFunc(TEvents::TEvWakeup::EventType, WakeupAndSchedule); + hFunc(TEvBlobStorage::TEvGetResult, Handle); + ) + + virtual void BootstrapImpl(const TActorContext&/* ctx*/) override { + TString data = MakeData(DataSize); + BlobId = TLogoBlobID(1, 1, 1, 10, DataSize, Cookie++); + auto ev = new TEvBlobStorage::TEvPut(BlobId, data, TInstant::Max()); + SendToBSProxy(SelfId(), GroupId, ev, 0); + Become(&TInflightActorGet::StateWork); + } + +protected: + virtual void SendRequest() override { + auto ev = new TEvBlobStorage::TEvGet(BlobId, 0, 10, TInstant::Max(), NKikimrBlobStorage::EGetHandleClass::FastRead); + SendToBSProxy(SelfId(), GroupId, ev, 0); + } + + void Handle(TEvBlobStorage::TEvGetResult::TPtr res) { + HandleReply(res->Get()->Status); + } + +private: + TLogoBlobID BlobId; + std::string Data; + ui32 DataSize; +}; + +/////////////////////////////////// TInflightActorPatch /////////////////////////////////// + +class TInflightActorPatch : public TInflightActor { +public: + TInflightActorPatch(TSettings settings, ui32 dataSize = 1024) + : TInflightActor(settings) + , DataSize(dataSize) + {} + + STRICT_STFUNC(StateWork, + cFunc(TEvents::TEvWakeup::EventType, WakeupAndSchedule); + hFunc(TEvBlobStorage::TEvPatchResult, Handle); + hFunc(TEvBlobStorage::TEvPutResult, Handle); + ) + + virtual void BootstrapImpl(const TActorContext&/* ctx*/) override { + TString data = MakeData(DataSize); + for (ui32 i = 0; i < RequestInFlight; ++i) { + TLogoBlobID blobId(1, 1, 1, 10, DataSize, Cookie++); + auto ev = new TEvBlobStorage::TEvPut(blobId, data, TInstant::Max()); + SendToBSProxy(SelfId(), GroupId, ev, 0); + } + Become(&TInflightActorPatch::StateWork); + } + +protected: + virtual void SendRequest() override { + TLogoBlobID oldId = Blobs.front(); + Blobs.pop_front(); + TLogoBlobID newId(1, 1, oldId.Step() + 1, 10, DataSize, oldId.Cookie()); + Y_ABORT_UNLESS(TEvBlobStorage::TEvPatch::GetBlobIdWithSamePlacement(oldId, &newId, BlobIdMask, GroupId, GroupId)); + TArrayHolder<TEvBlobStorage::TEvPatch::TDiff> diffs(new TEvBlobStorage::TEvPatch::TDiff[1]); + char c = 'a' + RequestsToSend % 26; + diffs[0].Set(TString(DataSize, c), 0); + auto ev = new TEvBlobStorage::TEvPatch(GroupId, oldId, newId, BlobIdMask, std::move(diffs), 1, TInstant::Max()); + SendToBSProxy(SelfId(), GroupId, ev, 0); + } + + + void Handle(TEvBlobStorage::TEvPatchResult::TPtr res) { + Blobs.push_back(res->Get()->Id); + HandleReply(res->Get()->Status); + } + + void Handle(TEvBlobStorage::TEvPutResult::TPtr res) { + Blobs.push_back(res->Get()->Id); + if (++BlobsWritten == RequestInFlight) { + ScheduleRequests(); + } + } + +protected: + std::deque<TLogoBlobID> Blobs; + ui32 BlobIdMask = TLogoBlobID::MaxCookie & 0xfffff000; + ui32 BlobsWritten = 0; + std::string Data; + ui32 DataSize; +}; + +} // namespace NKikimr diff --git a/ydb/core/blobstorage/ut_blobstorage/ya.make b/ydb/core/blobstorage/ut_blobstorage/ya.make index 7fa92b4924b7..0a23886ceb35 100644 --- a/ydb/core/blobstorage/ut_blobstorage/ya.make +++ b/ydb/core/blobstorage/ut_blobstorage/ya.make @@ -33,6 +33,7 @@ SRCS( snapshots.cpp space_check.cpp sync.cpp + ut_helpers.cpp ) IF (BUILD_TYPE != "DEBUG") diff --git a/ydb/core/blobstorage/ut_group/main.cpp b/ydb/core/blobstorage/ut_group/main.cpp index 81b1266c5bdc..a7e9e12a6702 100644 --- a/ydb/core/blobstorage/ut_group/main.cpp +++ b/ydb/core/blobstorage/ut_group/main.cpp @@ -417,6 +417,7 @@ class TTestEnv { TString()); auto vdiskConfig = AllVDiskKinds->MakeVDiskConfig(baseInfo); vdiskConfig->EnableVDiskCooldownTimeout = true; + vdiskConfig->UseCostTracker = false; auto counters = Counters->GetSubgroup("node", ToString(disk.NodeId))->GetSubgroup("vdisk", disk.VDiskId.ToString()); const TActorId& actorId = runtime.Register(CreateVDisk(vdiskConfig, Info, counters), TActorId(), 0, std::nullopt, disk.NodeId); runtime.RegisterService(disk.VDiskActorId, actorId); diff --git a/ydb/core/blobstorage/ut_mirror3of4/main.cpp b/ydb/core/blobstorage/ut_mirror3of4/main.cpp index b8f950d70ffe..b7fc225d63d0 100644 --- a/ydb/core/blobstorage/ut_mirror3of4/main.cpp +++ b/ydb/core/blobstorage/ut_mirror3of4/main.cpp @@ -273,6 +273,7 @@ class TTestEnv { "" ); const auto vcfg = MakeIntrusive<TVDiskConfig>(baseInfo); + vcfg->UseCostTracker = false; auto vdiskCounters = Counters->GetSubgroup("vdisk", ToString(i)); runtime.RegisterService(info.GetActorId(i), runtime.Register(CreateVDisk(vcfg, Info, vdiskCounters), TActorId(), 0, std::nullopt, pdisk.NodeId)); diff --git a/ydb/core/blobstorage/ut_vdisk/lib/prepare.cpp b/ydb/core/blobstorage/ut_vdisk/lib/prepare.cpp index a52190e897c9..7a3ef866095a 100644 --- a/ydb/core/blobstorage/ut_vdisk/lib/prepare.cpp +++ b/ydb/core/blobstorage/ut_vdisk/lib/prepare.cpp @@ -256,6 +256,7 @@ bool TDefaultVDiskSetup::SetUp(TAllVDisks::TVDiskInstance &vdisk, TAllPDisks *pd modifier(vdisk.Cfg.Get()); } vdisk.Cfg->RunRepl = runRepl; + vdisk.Cfg->UseCostTracker = false; return true; } diff --git a/ydb/core/blobstorage/ut_vdisk2/env.h b/ydb/core/blobstorage/ut_vdisk2/env.h index f1019a874082..608dc28b3965 100644 --- a/ydb/core/blobstorage/ut_vdisk2/env.h +++ b/ydb/core/blobstorage/ut_vdisk2/env.h @@ -112,6 +112,7 @@ namespace NKikimr { NPDisk::DEVICE_TYPE_SSD, VSlotId, NKikimrBlobStorage::TVDiskKind::Default, 1, "static"); VDiskConfig = AllVDiskKinds->MakeVDiskConfig(baseInfo); + VDiskConfig->UseCostTracker = false; // create and register actor std::unique_ptr<IActor> vdisk(NKikimr::CreateVDisk(VDiskConfig, Info, Counters->GetSubgroup("subsystem", "vdisk"))); diff --git a/ydb/core/blobstorage/vdisk/common/blobstorage_cost_tracker.cpp b/ydb/core/blobstorage/vdisk/common/blobstorage_cost_tracker.cpp index 87eeafc2e7fa..7e6787f76ddd 100644 --- a/ydb/core/blobstorage/vdisk/common/blobstorage_cost_tracker.cpp +++ b/ydb/core/blobstorage/vdisk/common/blobstorage_cost_tracker.cpp @@ -8,6 +8,12 @@ const TDiskOperationCostEstimator TBsCostModelBase::HDDEstimator{ { 6.089e+06, 8.1 }, // HugeWriteCoefficients }; +const TDiskOperationCostEstimator TBsCostModelBase::SSDEstimator{ + { 180000, 3.00 }, // ReadCoefficients + { 430, 4.2 }, // WriteCoefficients + { 110000, 3.6 }, // HugeWriteCoefficients +}; + const TDiskOperationCostEstimator TBsCostModelBase::NVMEEstimator{ { 10000, 1.3 }, // ReadCoefficients { 3300, 1.5 }, // WriteCoefficients @@ -36,7 +42,8 @@ class TBsCostModelMirror3of4 : public TBsCostModelBase { }; TBsCostTracker::TBsCostTracker(const TBlobStorageGroupType& groupType, NPDisk::EDeviceType diskType, - const TIntrusivePtr<::NMonitoring::TDynamicCounters>& counters) + const TIntrusivePtr<::NMonitoring::TDynamicCounters>& counters, + const TCostMetricsParameters& costMetricsParameters) : GroupType(groupType) , CostCounters(counters->GetSubgroup("subsystem", "advancedCost")) , UserDiskCost(CostCounters->GetCounter("UserDiskCost", true)) @@ -44,7 +51,13 @@ TBsCostTracker::TBsCostTracker(const TBlobStorageGroupType& groupType, NPDisk::E , ScrubDiskCost(CostCounters->GetCounter("ScrubDiskCost", true)) , DefragDiskCost(CostCounters->GetCounter("DefragDiskCost", true)) , InternalDiskCost(CostCounters->GetCounter("InternalDiskCost", true)) + , DiskTimeAvailableCtr(CostCounters->GetCounter("DiskTimeAvailable", false)) + , Bucket(&DiskTimeAvailable, &BucketCapacity, nullptr, nullptr, nullptr, nullptr, true) + , BurstThresholdNs(costMetricsParameters.BurstThresholdNs) + , DiskTimeAvailableScale(costMetricsParameters.DiskTimeAvailableScale) { + AtomicSet(BucketCapacity, GetDiskTimeAvailableScale() * BurstThresholdNs); + BurstDetector.Initialize(CostCounters, "BurstDetector"); switch (GroupType.GetErasure()) { case TBlobStorageGroupType::ErasureMirror3dc: CostModel = std::make_unique<TBsCostModelMirror3dc>(diskType); diff --git a/ydb/core/blobstorage/vdisk/common/blobstorage_cost_tracker.h b/ydb/core/blobstorage/vdisk/common/blobstorage_cost_tracker.h index baf9f6fa9f1e..6832df748826 100644 --- a/ydb/core/blobstorage/vdisk/common/blobstorage_cost_tracker.h +++ b/ydb/core/blobstorage/vdisk/common/blobstorage_cost_tracker.h @@ -4,9 +4,14 @@ #include "vdisk_costmodel.h" #include "vdisk_events.h" #include "vdisk_handle_class.h" +#include "vdisk_mongroups.h" +#include "vdisk_performance_params.h" +#include <library/cpp/bucket_quoter/bucket_quoter.h> #include <util/system/compiler.h> +#include <ydb/core/base/blobstorage.h> #include <ydb/core/blobstorage/base/blobstorage_events.h> +#include <ydb/core/util/light.h> namespace NKikimr { @@ -48,6 +53,8 @@ class TBsCostModelBase { virtual ~TBsCostModelBase() = default; + friend class TBsCostTracker; + protected: NPDisk::EDeviceType DeviceType = NPDisk::DEVICE_TYPE_UNKNOWN; @@ -63,6 +70,7 @@ class TBsCostModelBase { ui64 PDiskWriteBlockSize = 4ull * 1'000'000; // 4MB static const TDiskOperationCostEstimator HDDEstimator; + static const TDiskOperationCostEstimator SSDEstimator; static const TDiskOperationCostEstimator NVMEEstimator; private: @@ -100,6 +108,9 @@ class TBsCostModelBase { case NPDisk::DEVICE_TYPE_ROT: { return HDDEstimator.Write(chunkSize); } + case NPDisk::DEVICE_TYPE_SSD: { + return SSDEstimator.Write(chunkSize); + } case NPDisk::DEVICE_TYPE_NVME: { return NVMEEstimator.Write(chunkSize); } @@ -116,6 +127,9 @@ class TBsCostModelBase { case NPDisk::DEVICE_TYPE_ROT: { return HDDEstimator.HugeWrite(chunkSize); } + case NPDisk::DEVICE_TYPE_SSD: { + return SSDEstimator.HugeWrite(chunkSize); + } case NPDisk::DEVICE_TYPE_NVME: { return NVMEEstimator.HugeWrite(chunkSize); } @@ -133,6 +147,9 @@ class TBsCostModelBase { case NPDisk::DEVICE_TYPE_ROT: { return HDDEstimator.Read(chunkSize); } + case NPDisk::DEVICE_TYPE_SSD: { + return SSDEstimator.Read(chunkSize); + } case NPDisk::DEVICE_TYPE_NVME: { return NVMEEstimator.Read(chunkSize); } @@ -263,6 +280,29 @@ class TBsCostModelBase { } }; +struct TFailTimer { + using TTime = TInstant; + static TTime Now() { + Y_FAIL(); + } +}; + +template<class TBackupTimer = TFailTimer> +struct TAppDataTimerMs { + using TTime = TInstant; + static constexpr ui64 Resolution = 1000ull; // milliseconds + static TTime Now() { + if (NKikimr::TAppData::TimeProvider) { + return NKikimr::TAppData::TimeProvider->Now(); + } else { + return TBackupTimer::Now(); + } + } + static ui64 Duration(TTime from, TTime to) { + return (to - from).MilliSeconds(); + } +}; + using TBsCostModelErasureNone = TBsCostModelBase; class TBsCostModelMirror3dc; class TBsCostModel4Plus2Block; @@ -272,18 +312,29 @@ class TBsCostTracker { private: TBlobStorageGroupType GroupType; std::unique_ptr<TBsCostModelBase> CostModel; - - const TIntrusivePtr<::NMonitoring::TDynamicCounters> CostCounters; + TIntrusivePtr<::NMonitoring::TDynamicCounters> CostCounters; ::NMonitoring::TDynamicCounters::TCounterPtr UserDiskCost; ::NMonitoring::TDynamicCounters::TCounterPtr CompactionDiskCost; ::NMonitoring::TDynamicCounters::TCounterPtr ScrubDiskCost; ::NMonitoring::TDynamicCounters::TCounterPtr DefragDiskCost; ::NMonitoring::TDynamicCounters::TCounterPtr InternalDiskCost; + ::NMonitoring::TDynamicCounters::TCounterPtr DiskTimeAvailableCtr; + + TAtomic BucketCapacity = 1'000'000'000; // 10^9 nsec + TAtomic DiskTimeAvailable = 1'000'000'000; + TBucketQuoter<i64, TSpinLock, TAppDataTimerMs<TInstantTimerMs>> Bucket; + TLight BurstDetector; + std::atomic<ui64> SeqnoBurstDetector = 0; + static constexpr ui32 ConcurrentHugeRequestsAllowed = 3; + + TMemorizableControlWrapper BurstThresholdNs; + TMemorizableControlWrapper DiskTimeAvailableScale; public: TBsCostTracker(const TBlobStorageGroupType& groupType, NPDisk::EDeviceType diskType, - const TIntrusivePtr<::NMonitoring::TDynamicCounters>& counters); + const TIntrusivePtr<::NMonitoring::TDynamicCounters>& counters, + const TCostMetricsParameters& costMetricsParameters); template<class TEv> ui64 GetCost(const TEv& ev) const { @@ -296,9 +347,6 @@ class TBsCostTracker { return cost; } - /// SETTINGS - void UpdateFromVDiskSettings(NKikimrBlobStorage::TVDiskCostSettings &settings) const; - public: void UpdateCostModel(const TCostModel& costModel) { if (CostModel) { @@ -306,38 +354,72 @@ class TBsCostTracker { } } + void CountRequest(ui64 cost) { + AtomicSet(BucketCapacity, GetDiskTimeAvailableScale() * BurstThresholdNs.Update(TAppData::TimeProvider->Now())); + Bucket.UseAndFill(cost); + BurstDetector.Set(!Bucket.IsAvail(), SeqnoBurstDetector.fetch_add(1)); + } + + void SetTimeAvailable(ui64 diskTimeAvailableNSec) { + ui64 diskTimeAvailable = diskTimeAvailableNSec * GetDiskTimeAvailableScale(); + + AtomicSet(DiskTimeAvailable, diskTimeAvailable); + *DiskTimeAvailableCtr = diskTimeAvailable; + } + public: template<class TEvent> void CountUserRequest(const TEvent& ev) { - *UserDiskCost += GetCost(ev); + ui64 cost = GetCost(ev); + *UserDiskCost += cost; + CountRequest(cost); } void CountUserCost(ui64 cost) { *UserDiskCost += cost; + CountRequest(cost); } template<class TEvent> void CountCompactionRequest(const TEvent& ev) { - *CompactionDiskCost += GetCost(ev); + ui64 cost = GetCost(ev); + *CompactionDiskCost += cost; + CountRequest(cost); } template<class TEvent> void CountScrubRequest(const TEvent& ev) { - *UserDiskCost += GetCost(ev); + ui64 cost = GetCost(ev); + *UserDiskCost += cost; + CountRequest(cost); } template<class TEvent> void CountDefragRequest(const TEvent& ev) { - *DefragDiskCost += GetCost(ev); + ui64 cost = GetCost(ev); + *DefragDiskCost += cost; + CountRequest(cost); } template<class TEvent> void CountInternalRequest(const TEvent& ev) { - *InternalDiskCost += GetCost(ev); + ui64 cost = GetCost(ev); + *InternalDiskCost += cost; + CountRequest(cost); } void CountInternalCost(ui64 cost) { *InternalDiskCost += cost; + CountRequest(cost); + } + + void CountPDiskResponse() { + BurstDetector.Set(!Bucket.IsAvail(), SeqnoBurstDetector.fetch_add(1)); + } + +private: + float GetDiskTimeAvailableScale() { + return 0.001 * DiskTimeAvailableScale.Update(TAppData::TimeProvider->Now()); } }; diff --git a/ydb/core/blobstorage/vdisk/common/vdisk_config.cpp b/ydb/core/blobstorage/vdisk/common/vdisk_config.cpp index 49378e396817..618b384591ce 100644 --- a/ydb/core/blobstorage/vdisk/common/vdisk_config.cpp +++ b/ydb/core/blobstorage/vdisk/common/vdisk_config.cpp @@ -119,6 +119,7 @@ namespace NKikimr { #else BarrierValidation = true; // switch by default on debug builds #endif + } void TVDiskConfig::SetupHugeBytes() { @@ -160,6 +161,7 @@ namespace NKikimr { UPDATE_MACRO(ReplInterconnectChannel); UPDATE_MACRO(BarrierValidation); + #undef UPDATE_MACRO } @@ -180,6 +182,15 @@ namespace NKikimr { ParseConfig(); } + TAllVDiskKinds::TAllVDiskKinds(const NKikimrBlobStorage::TAllVDiskKinds &proto) + : AllKindsConfig() + , VDiskMegaBaseConfig(TVDiskConfig::TBaseInfo()) + , KindsMap() + { + AllKindsConfig.CopyFrom(proto); + ParseConfig(); + } + TIntrusivePtr<TVDiskConfig> TAllVDiskKinds::MakeVDiskConfig(const TVDiskConfig::TBaseInfo &baseInfo) { EKind k = baseInfo.Kind; TVector<const TKind *> merge; diff --git a/ydb/core/blobstorage/vdisk/common/vdisk_config.h b/ydb/core/blobstorage/vdisk/common/vdisk_config.h index 93efc58d34fa..4fed5f2e0ad8 100644 --- a/ydb/core/blobstorage/vdisk/common/vdisk_config.h +++ b/ydb/core/blobstorage/vdisk/common/vdisk_config.h @@ -1,5 +1,8 @@ #pragma once #include "defs.h" + +#include "vdisk_performance_params.h" + #include <ydb/core/blobstorage/groupinfo/blobstorage_groupinfo.h> #include <ydb/core/blobstorage/vdisk/repl/repl_quoter.h> #include <ydb/core/base/blobstorage.h> @@ -210,6 +213,10 @@ namespace NKikimr { bool EnableVDiskCooldownTimeout; TControlWrapper EnableVPatch = true; + ///////////// COST METRICS SETTINGS //////////////// + bool UseCostTracker = true; + TCostMetricsParametersByMedia CostMetricsParametersByMedia; + ///////////// FEATURE FLAGS //////////////////////// NKikimrConfig::TFeatureFlags FeatureFlags; @@ -228,6 +235,7 @@ namespace NKikimr { class TAllVDiskKinds : public TThrRefBase { public: TAllVDiskKinds(const TString &prototext = TString()); + TAllVDiskKinds(const NKikimrBlobStorage::TAllVDiskKinds &proto); TIntrusivePtr<TVDiskConfig> MakeVDiskConfig(const TVDiskConfig::TBaseInfo &baseInfo); void Merge(const NKikimrBlobStorage::TAllVDiskKinds &allVDiskKinds); diff --git a/ydb/core/blobstorage/vdisk/common/vdisk_context.cpp b/ydb/core/blobstorage/vdisk/common/vdisk_context.cpp index 6a6c80e8df0f..d1dcbccaec1a 100644 --- a/ydb/core/blobstorage/vdisk/common/vdisk_context.cpp +++ b/ydb/core/blobstorage/vdisk/common/vdisk_context.cpp @@ -57,7 +57,7 @@ namespace NKikimr { , ReplPDiskWriteQuoter(std::move(replPDiskWriteQuoter)) , ReplNodeRequestQuoter(std::move(replNodeRequestQuoter)) , ReplNodeResponseQuoter(std::move(replNodeResponseQuoter)) - , CostTracker(std::make_shared<TBsCostTracker>(Top->GType, type, vdiskCounters)) + , CostTracker() , OutOfSpaceState(Top->GetTotalVDisksNum(), Top->GetOrderNumber(ShortSelfVDisk)) , CostMonGroup(vdiskCounters, "subsystem", "cost") , Logger(as ? ActorSystemLogger(as) : DevNullLogger()) diff --git a/ydb/core/blobstorage/vdisk/common/vdisk_context.h b/ydb/core/blobstorage/vdisk/common/vdisk_context.h index 09a5f0b1bf96..e1ac1338599a 100644 --- a/ydb/core/blobstorage/vdisk/common/vdisk_context.h +++ b/ydb/core/blobstorage/vdisk/common/vdisk_context.h @@ -68,7 +68,7 @@ namespace NKikimr { TString LocalRecoveryErrorStr; std::unique_ptr<TCostModel> CostModel; - std::shared_ptr<TBsCostTracker> CostTracker; + std::unique_ptr<TBsCostTracker> CostTracker; private: // Managing disk space @@ -174,7 +174,9 @@ namespace NKikimr { if (CostModel) { CostMonGroup.DefragCostNs() += CostModel->GetCost(ev); } - CostTracker->CountDefragRequest(ev); + if (CostTracker) { + CostTracker->CountDefragRequest(ev); + } } template<class TEvent> @@ -182,7 +184,9 @@ namespace NKikimr { if (CostModel) { CostMonGroup.ScrubCostNs() += CostModel->GetCost(ev); } - CostTracker->CountScrubRequest(ev); + if (CostTracker) { + CostTracker->CountScrubRequest(ev); + } } template<class TEvent> @@ -190,12 +194,14 @@ namespace NKikimr { if (CostModel) { CostMonGroup.CompactionCostNs() += CostModel->GetCost(ev); } - CostTracker->CountCompactionRequest(ev); + if (CostTracker) { + CostTracker->CountCompactionRequest(ev); + } } void UpdateCostModel(std::unique_ptr<TCostModel>&& newCostModel) { CostModel = std::move(newCostModel); - if (CostModel) { + if (CostModel && CostTracker) { CostTracker->UpdateCostModel(*CostModel); } } diff --git a/ydb/core/blobstorage/vdisk/common/vdisk_performance_params.cpp b/ydb/core/blobstorage/vdisk/common/vdisk_performance_params.cpp new file mode 100644 index 000000000000..14bb5043763f --- /dev/null +++ b/ydb/core/blobstorage/vdisk/common/vdisk_performance_params.cpp @@ -0,0 +1,10 @@ +#include "vdisk_performance_params.h" + +namespace NKikimr { + +TCostMetricsParameters::TCostMetricsParameters(ui64 defaultBurstThresholdMs) + : BurstThresholdNs(defaultBurstThresholdMs * 1'000'000, 1, 1'000'000'000'000) + , DiskTimeAvailableScale(1'000, 1, 1'000'000) +{} + +} // namespace NKikimr diff --git a/ydb/core/blobstorage/vdisk/common/vdisk_performance_params.h b/ydb/core/blobstorage/vdisk/common/vdisk_performance_params.h new file mode 100644 index 000000000000..76e50d42ba0c --- /dev/null +++ b/ydb/core/blobstorage/vdisk/common/vdisk_performance_params.h @@ -0,0 +1,20 @@ +#pragma once + +#include <unordered_map> + +#include "defs.h" + +#include <ydb/library/pdisk_io/device_type.h> +#include <ydb/core/control/immediate_control_board_wrapper.h> + +namespace NKikimr { + +struct TCostMetricsParameters { + TCostMetricsParameters(ui64 defaultBurstThresholdMs = 100); + TControlWrapper BurstThresholdNs; + TControlWrapper DiskTimeAvailableScale; +}; + +using TCostMetricsParametersByMedia = TStackVec<TCostMetricsParameters, 3>; + +} // namespace NKikimr diff --git a/ydb/core/blobstorage/vdisk/common/ya.make b/ydb/core/blobstorage/vdisk/common/ya.make index 62f2b6ae0af8..3004482aef98 100644 --- a/ydb/core/blobstorage/vdisk/common/ya.make +++ b/ydb/core/blobstorage/vdisk/common/ya.make @@ -22,6 +22,7 @@ SRCS( blobstorage_vdisk_guids.h defs.h disk_part.h + vdisk_performance_params.cpp sublog.h vdisk_config.cpp vdisk_config.h diff --git a/ydb/core/blobstorage/vdisk/hullop/blobstorage_hullcompact.h b/ydb/core/blobstorage/vdisk/hullop/blobstorage_hullcompact.h index e208983b08ad..a064cf4efbd5 100644 --- a/ydb/core/blobstorage/vdisk/hullop/blobstorage_hullcompact.h +++ b/ydb/core/blobstorage/vdisk/hullop/blobstorage_hullcompact.h @@ -170,6 +170,9 @@ namespace NKikimr { // the same logic for every yard response: apply response and restart main cycle void HandleYardResponse(NPDisk::TEvChunkReadResult::TPtr& ev, const TActorContext &ctx) { --PendingResponses; + if (HullCtx->VCtx->CostTracker) { + HullCtx->VCtx->CostTracker->CountPDiskResponse(); + } if (ev->Get()->Status != NKikimrProto::CORRUPTED) { CHECK_PDISK_RESPONSE(HullCtx->VCtx, ev, ctx); } @@ -202,6 +205,9 @@ namespace NKikimr { void HandleYardResponse(NPDisk::TEvChunkWriteResult::TPtr& ev, const TActorContext &ctx) { --PendingResponses; + if (HullCtx->VCtx->CostTracker) { + HullCtx->VCtx->CostTracker->CountPDiskResponse(); + } CHECK_PDISK_RESPONSE(HullCtx->VCtx, ev, ctx); if (FinalizeIfAborting(ctx)) { return; diff --git a/ydb/core/blobstorage/vdisk/localrecovery/localrecovery_public.cpp b/ydb/core/blobstorage/vdisk/localrecovery/localrecovery_public.cpp index e90483d6a6e3..b6d328d7030f 100644 --- a/ydb/core/blobstorage/vdisk/localrecovery/localrecovery_public.cpp +++ b/ydb/core/blobstorage/vdisk/localrecovery/localrecovery_public.cpp @@ -505,6 +505,21 @@ namespace NKikimr { LocRecCtx->HullDbRecovery = std::make_shared<THullDbRecovery>(hullCtx); LocRecCtx->HullCtx = hullCtx; + if (Config->UseCostTracker) { + NPDisk::EDeviceType trueMediaType = LocRecCtx->PDiskCtx->Dsk->TrueMediaType; + if (trueMediaType == NPDisk::DEVICE_TYPE_UNKNOWN) { + // Unable to resolve type from PDisk's properties, using type from VDisk config + trueMediaType = Config->BaseInfo.DeviceType; + } + if (trueMediaType != NPDisk::DEVICE_TYPE_UNKNOWN) { + LocRecCtx->HullCtx->VCtx->CostTracker.reset(new TBsCostTracker( + LocRecCtx->HullCtx->VCtx->Top->GType, trueMediaType, + LocRecCtx->HullCtx->VCtx->VDiskCounters, + Config->CostMetricsParametersByMedia[trueMediaType] + )); + } + } + // store reported owned chunks LocRecCtx->ReportedOwnedChunks = std::move(m->OwnedChunks); diff --git a/ydb/core/blobstorage/vdisk/repl/blobstorage_hullreplwritesst_ut.cpp b/ydb/core/blobstorage/vdisk/repl/blobstorage_hullreplwritesst_ut.cpp index f38d872c6ec0..c2131faba130 100644 --- a/ydb/core/blobstorage/vdisk/repl/blobstorage_hullreplwritesst_ut.cpp +++ b/ydb/core/blobstorage/vdisk/repl/blobstorage_hullreplwritesst_ut.cpp @@ -15,7 +15,8 @@ std::shared_ptr<TReplCtx> CreateReplCtx(TVector<TVDiskID>& vdisks, const TIntrus auto vctx = MakeIntrusive<TVDiskContext>(TActorId(), info->PickTopology(), counters, TVDiskID(0, 1, 0, 0, 0), nullptr, NPDisk::DEVICE_TYPE_UNKNOWN); auto hugeBlobCtx = std::make_shared<THugeBlobCtx>(512u << 10u, nullptr); - auto dsk = MakeIntrusive<TPDiskParams>(ui8(1), 1u, 128u << 20, 4096u, 0u, 1000000000u, 1000000000u, 65536u, 65536u, 65536u); + auto dsk = MakeIntrusive<TPDiskParams>(ui8(1), 1u, 128u << 20, 4096u, 0u, 1000000000u, 1000000000u, 65536u, 65536u, 65536u, + NPDisk::DEVICE_TYPE_UNKNOWN); auto pdiskCtx = std::make_shared<TPDiskCtx>(dsk, TActorId(), TString()); auto replCtx = std::make_shared<TReplCtx>( vctx, diff --git a/ydb/core/blobstorage/vdisk/scrub/scrub_actor_pdisk.cpp b/ydb/core/blobstorage/vdisk/scrub/scrub_actor_pdisk.cpp index ef68ca83e0c4..22e93924194c 100644 --- a/ydb/core/blobstorage/vdisk/scrub/scrub_actor_pdisk.cpp +++ b/ydb/core/blobstorage/vdisk/scrub/scrub_actor_pdisk.cpp @@ -11,6 +11,9 @@ namespace NKikimr { Send(ScrubCtx->PDiskCtx->PDiskId, msg.release()); CurrentState = TStringBuilder() << "reading data from " << part.ToString(); auto res = WaitForPDiskEvent<NPDisk::TEvChunkReadResult>(); + if (ScrubCtx->VCtx->CostTracker) { + ScrubCtx->VCtx->CostTracker->CountPDiskResponse(); + } auto *m = res->Get(); Y_VERIFY_S(m->Status == NKikimrProto::OK || m->Status == NKikimrProto::CORRUPTED, "Status# " << NKikimrProto::EReplyStatus_Name(m->Status)); @@ -41,6 +44,9 @@ namespace NKikimr { Send(ScrubCtx->PDiskCtx->PDiskId, msg.release()); CurrentState = TStringBuilder() << "writing index to " << part.ToString(); auto res = WaitForPDiskEvent<NPDisk::TEvChunkWriteResult>(); + if (ScrubCtx->VCtx->CostTracker) { + ScrubCtx->VCtx->CostTracker->CountPDiskResponse(); + } Y_ABORT_UNLESS(res->Get()->Status == NKikimrProto::OK); // FIXME: good logic } diff --git a/ydb/core/blobstorage/vdisk/skeleton/blobstorage_skeleton.cpp b/ydb/core/blobstorage/vdisk/skeleton/blobstorage_skeleton.cpp index da904f927202..a8f380b04f92 100644 --- a/ydb/core/blobstorage/vdisk/skeleton/blobstorage_skeleton.cpp +++ b/ydb/core/blobstorage/vdisk/skeleton/blobstorage_skeleton.cpp @@ -2153,6 +2153,22 @@ namespace NKikimr { TABLED() {str << "VDiskIncarnationGuid";} TABLED() {str << Db->GetVDiskIncarnationGuid(true);} } + + if (PDiskCtx && PDiskCtx->Dsk) { + NPDisk::EDeviceType trueMedia = PDiskCtx->Dsk->TrueMediaType; + TABLER() { + TABLED() {str << "TrueMediaType";} + TABLED() {str << NPDisk::DeviceTypeStr(trueMedia, true); } + } + TABLER() { + TABLED() {str << "BurstThresholdNs";} + TABLED() {str << (i64)Config->CostMetricsParametersByMedia[trueMedia].BurstThresholdNs;} + } + TABLER() { + TABLED() {str << "DiskTimeAvailableScale";} + TABLED() {str << 0.001 * Config->CostMetricsParametersByMedia[trueMedia].DiskTimeAvailableScale;} + } + } } } diff --git a/ydb/core/blobstorage/vdisk/skeleton/blobstorage_skeletonfront.cpp b/ydb/core/blobstorage/vdisk/skeleton/blobstorage_skeletonfront.cpp index 290ac985d8a8..744daf28cde9 100644 --- a/ydb/core/blobstorage/vdisk/skeleton/blobstorage_skeletonfront.cpp +++ b/ydb/core/blobstorage/vdisk/skeleton/blobstorage_skeletonfront.cpp @@ -1233,7 +1233,7 @@ namespace NKikimr { void HandleRequestWithQoS(const TActorContext &ctx, TEventPtr &ev, const char *msgName, ui64 cost, TIntQueueClass &intQueue) { CheckEvent(ev, msgName); - const ui64 advancedCost = VCtx->CostTracker->GetCost(*ev->Get()); + const ui64 advancedCost = VCtx->CostTracker ? VCtx->CostTracker->GetCost(*ev->Get()) : 0; const ui32 recByteSize = ev->Get()->GetCachedByteSize(); auto &record = ev->Get()->Record; auto &msgQoS = *record.MutableMsgQoS(); @@ -1281,10 +1281,14 @@ namespace NKikimr { } else { if (clientId.GetType() == NBackpressure::EQueueClientType::DSProxy) { CostGroup.SkeletonFrontUserCostNs() += cost; - VCtx->CostTracker->CountUserCost(advancedCost); + if (VCtx->CostTracker) { + VCtx->CostTracker->CountUserCost(advancedCost); + } } else { CostGroup.SkeletonFrontInternalCostNs() += cost; - VCtx->CostTracker->CountInternalCost(advancedCost); + if (VCtx->CostTracker) { + VCtx->CostTracker->CountInternalCost(advancedCost); + } } } } @@ -1632,6 +1636,9 @@ namespace NKikimr { extQueue.Completed(ctx, msgCtx, event); TIntQueueClass &intQueue = GetIntQueue(msgCtx.IntQueueId); intQueue.Completed(ctx, msgCtx, *this, id); + if (VCtx->CostTracker) { + VCtx->CostTracker->CountPDiskResponse(); + } if (!ev->Get()->DoNotResend) { TActivationContext::Send(event.release()); } diff --git a/ydb/core/blobstorage/vdisk/skeleton/skeleton_oos_tracker.cpp b/ydb/core/blobstorage/vdisk/skeleton/skeleton_oos_tracker.cpp index a924e52057ad..a21d19f4bd42 100644 --- a/ydb/core/blobstorage/vdisk/skeleton/skeleton_oos_tracker.cpp +++ b/ydb/core/blobstorage/vdisk/skeleton/skeleton_oos_tracker.cpp @@ -91,8 +91,13 @@ namespace NKikimr { VCtx->OutOfSpaceState.UpdateLocalUsedChunks(msg->UsedChunks); MonGroup.DskTotalBytes() = msg->TotalChunks * PDiskCtx->Dsk->ChunkSize; MonGroup.DskFreeBytes() = msg->FreeChunks * PDiskCtx->Dsk->ChunkSize; + MonGroup.DskUsedBytes() = msg->UsedChunks * PDiskCtx->Dsk->ChunkSize; if (msg->NumSlots > 0) { - CostGroup.DiskTimeAvailableNs() = 1'000'000'000ull / msg->NumSlots; + ui32 timeAvailable = 1'000'000'000 / msg->NumSlots; + CostGroup.DiskTimeAvailableNs() = timeAvailable; + if (VCtx->CostTracker) { + VCtx->CostTracker->SetTimeAvailable(timeAvailable); + } } Become(&TThis::WaitFunc); diff --git a/ydb/core/protos/config.proto b/ydb/core/protos/config.proto index 5022698dc5c4..b7f023240eec 100644 --- a/ydb/core/protos/config.proto +++ b/ydb/core/protos/config.proto @@ -1,6 +1,7 @@ import "google/protobuf/descriptor.proto"; import "ydb/library/actors/protos/interconnect.proto"; import "ydb/core/protos/blobstorage.proto"; +import "ydb/core/protos/blobstorage_base3.proto"; import "ydb/core/protos/blobstorage_config.proto"; import "ydb/core/protos/blobstorage_vdisk_config.proto"; import "ydb/core/protos/blobstorage_pdisk_config.proto"; @@ -279,6 +280,8 @@ message TBlobStorageConfig { } optional TAutoconfigSettings AutoconfigSettings = 6; + + reserved 7; // TCostMetricsSettings, moved to ICB } message TBlobStorageFormatConfig { @@ -1294,6 +1297,46 @@ message TImmediateControlsConfig { optional TKeyValue KeyValue = 1; } + message TVDiskControls { + // SyncLog Data cutter options, not merged to 24-1 + reserved 1; + reserved 2; + reserved 3; + reserved 4; + reserved 5; + + optional uint64 BurstThresholdNsHDD = 6 [(ControlOptions) = { + Description: "Minumum operation queue size that is considered a burst, setting for HDD", + MinValue: 1, + MaxValue: 1000000000000, + DefaultValue: 200000000 }]; + optional uint64 BurstThresholdNsSSD = 7 [(ControlOptions) = { + Description: "Minumum operation queue size that is considered a burst, setting for SSD", + MinValue: 1, + MaxValue: 1000000000000, + DefaultValue: 50000000 }]; + optional uint64 BurstThresholdNsNVME = 8 [(ControlOptions) = { + Description: "Minumum operation queue size that is considered a burst, setting for NVME", + MinValue: 1, + MaxValue: 1000000000000, + DefaultValue: 32000000 }]; + optional uint64 DiskTimeAvailableScaleHDD = 9 [(ControlOptions) = { + Description: "Scale coefficient DiskTimeAvailableScale metric, this parameter will be converted to float and divided by 1'000, setting for HDD", + MinValue: 1, + MaxValue: 1000000, + DefaultValue: 1000 }]; + optional uint64 DiskTimeAvailableScaleSSD = 10 [(ControlOptions) = { + Description: "Scale coefficient for DiskTimeAvailableScale metric, this parameter will be converted to float and divided by 1'000, setting for SSD", + MinValue: 1, + MaxValue: 1000000, + DefaultValue: 1000 }]; + optional uint64 DiskTimeAvailableScaleNVME = 11 [(ControlOptions) = { + Description: "Scale coefficient DiskTimeAvailableScale metric, this parameter will be converted to float and divided by 1'000, setting for NVME", + MinValue: 1, + MaxValue: 1000000, + DefaultValue: 1000 }]; + } + message TTabletControls { optional uint64 MaxCommitRedoMB = 1 [(ControlOptions) = { Description: "Maximum redo size per commit in megabytes", @@ -1308,6 +1351,7 @@ message TImmediateControlsConfig { optional TSchemeShardControls SchemeShardControls = 4; optional TTCMallocControls TCMallocControls = 5; optional TTracingControls TracingControls = 6; + optional TVDiskControls VDiskControls = 7; optional TTabletControls TabletControls = 8; }; diff --git a/ydb/core/quoter/ut_helpers.cpp b/ydb/core/quoter/ut_helpers.cpp index ca36d439c90e..61b582b76ed4 100644 --- a/ydb/core/quoter/ut_helpers.cpp +++ b/ydb/core/quoter/ut_helpers.cpp @@ -180,7 +180,7 @@ TKesusProxyTestSetup::TKesusProxyTestSetup() { } TTestActorRuntime::TEgg MakeEgg() { - return { new TAppData(0, 0, 0, 0, { }, nullptr, nullptr, nullptr, nullptr), nullptr, nullptr }; + return { new TAppData(0, 0, 0, 0, { }, nullptr, nullptr, nullptr, nullptr), nullptr, nullptr, {} }; } void TKesusProxyTestSetup::Start() { diff --git a/ydb/core/sys_view/partition_stats/partition_stats_ut.cpp b/ydb/core/sys_view/partition_stats/partition_stats_ut.cpp index 83189b339dfc..ec7cd7e473cc 100644 --- a/ydb/core/sys_view/partition_stats/partition_stats_ut.cpp +++ b/ydb/core/sys_view/partition_stats/partition_stats_ut.cpp @@ -13,7 +13,7 @@ Y_UNIT_TEST_SUITE(PartitionStats) { TTestActorRuntime::TEgg MakeEgg() { - return { new TAppData(0, 0, 0, 0, { }, nullptr, nullptr, nullptr, nullptr), nullptr, nullptr }; + return { new TAppData(0, 0, 0, 0, { }, nullptr, nullptr, nullptr, nullptr), nullptr, nullptr, {} }; } void WaitForBootstrap(TTestActorRuntime &runtime) { diff --git a/ydb/core/tablet_flat/test/libs/exec/runner.h b/ydb/core/tablet_flat/test/libs/exec/runner.h index d6fd55c042fd..fc51f16b7db2 100644 --- a/ydb/core/tablet_flat/test/libs/exec/runner.h +++ b/ydb/core/tablet_flat/test/libs/exec/runner.h @@ -46,7 +46,7 @@ namespace NFake { auto *types = NTable::NTest::DbgRegistry(); auto *app = new TAppData(0, 0, 0, 0, { }, types, nullptr, nullptr, nullptr); - Env.Initialize({ app, nullptr, nullptr }); + Env.Initialize({ app, nullptr, nullptr, {} }); Env.SetDispatchTimeout(DEFAULT_DISPATCH_TIMEOUT); Env.SetLogPriority(NKikimrServices::FAKE_ENV, NActors::NLog::PRI_INFO); diff --git a/ydb/core/testlib/actors/test_runtime.cpp b/ydb/core/testlib/actors/test_runtime.cpp index 7a5dfb51cba7..1c77949d6b99 100644 --- a/ydb/core/testlib/actors/test_runtime.cpp +++ b/ydb/core/testlib/actors/test_runtime.cpp @@ -153,6 +153,10 @@ namespace NActors { nodeAppData->S3ProxyResolverConfig = app0->S3ProxyResolverConfig; nodeAppData->EnableMvccSnapshotWithLegacyDomainRoot = app0->EnableMvccSnapshotWithLegacyDomainRoot; nodeAppData->IoContextFactory = app0->IoContextFactory; + if (nodeIndex < egg.Icb.size()) { + nodeAppData->Icb = std::move(egg.Icb[nodeIndex]); + nodeAppData->InFlightLimiterRegistry.Reset(new NKikimr::NGRpcService::TInFlightLimiterRegistry(nodeAppData->Icb)); + } if (KeyConfigGenerator) { nodeAppData->KeyConfig = KeyConfigGenerator(nodeIndex); } else { diff --git a/ydb/core/testlib/actors/test_runtime.h b/ydb/core/testlib/actors/test_runtime.h index e43e636a4bf9..0a4a348da9f7 100644 --- a/ydb/core/testlib/actors/test_runtime.h +++ b/ydb/core/testlib/actors/test_runtime.h @@ -4,6 +4,7 @@ #include <ydb/core/mon/mon.h> #include <ydb/core/base/memobserver.h> +#include <ydb/core/control/immediate_control_board_impl.h> #include <ydb/library/actors/testlib/test_runtime.h> #include <library/cpp/testing/unittest/tests_data.h> #include <library/cpp/threading/future/future.h> @@ -46,6 +47,7 @@ namespace NActors { TAutoPtr<NKikimr::TAppData> App0; TAutoPtr<NActors::IDestructable> Opaque; TKeyConfigGenerator KeyConfigGenerator; + std::vector<TIntrusivePtr<NKikimr::TControlBoard>> Icb; }; TTestActorRuntime(THeSingleSystemEnv d); diff --git a/ydb/core/testlib/actors/test_runtime_ut.cpp b/ydb/core/testlib/actors/test_runtime_ut.cpp index b2c7ec58cfa8..d649df72fc89 100644 --- a/ydb/core/testlib/actors/test_runtime_ut.cpp +++ b/ydb/core/testlib/actors/test_runtime_ut.cpp @@ -12,7 +12,7 @@ Y_UNIT_TEST_SUITE(TActorTest) { TTestActorRuntime::TEgg MakeEgg() { return - { new TAppData(0, 0, 0, 0, { }, nullptr, nullptr, nullptr, nullptr), nullptr, nullptr }; + { new TAppData(0, 0, 0, 0, { }, nullptr, nullptr, nullptr, nullptr), nullptr, nullptr, {} }; } Y_UNIT_TEST(TestHandleEvent) { diff --git a/ydb/core/testlib/basics/appdata.cpp b/ydb/core/testlib/basics/appdata.cpp index e7b5363d8de0..130610c4721d 100644 --- a/ydb/core/testlib/basics/appdata.cpp +++ b/ydb/core/testlib/basics/appdata.cpp @@ -70,7 +70,7 @@ namespace NKikimr { NKikimrProto::TKeyConfig(); }; - return { app, Mine.Release(), keyGenerator}; + return { app, Mine.Release(), keyGenerator, std::move(Icb) }; } void TAppPrepare::AddDomain(TDomainsInfo::TDomain* domain) @@ -199,4 +199,11 @@ namespace NKikimr { { AwsCompatibilityConfig.SetAwsRegion(value); } + + void TAppPrepare::InitIcb(ui32 numNodes) + { + for (ui32 i = 0; i < numNodes; ++i) { + Icb.emplace_back(new TControlBoard); + } + } } diff --git a/ydb/core/testlib/basics/appdata.h b/ydb/core/testlib/basics/appdata.h index a17e2b0ac4ff..2a0417ba68e1 100644 --- a/ydb/core/testlib/basics/appdata.h +++ b/ydb/core/testlib/basics/appdata.h @@ -81,6 +81,7 @@ namespace NKikimr { void SetEnablePqBilling(std::optional<bool> value); void SetEnableDbCounters(bool value); void SetAwsRegion(const TString& value); + void InitIcb(ui32 numNodes); TIntrusivePtr<TChannelProfiles> Channels; NKikimrBlobStorage::TNodeWardenServiceSet BSConf; @@ -97,6 +98,8 @@ namespace NKikimr { NKikimrPQ::TPQConfig PQConfig; NKikimrConfig::TAwsCompatibilityConfig AwsCompatibilityConfig; NKikimrConfig::TS3ProxyResolverConfig S3ProxyResolverConfig; + NKikimrConfig::TImmediateControlsConfig ImmediateControlsConfig; + std::vector<TIntrusivePtr<NKikimr::TControlBoard>> Icb; private: TAutoPtr<TMine> Mine; diff --git a/ydb/core/testlib/basics/helpers.h b/ydb/core/testlib/basics/helpers.h index 96c9197e61b6..d2d28f36f1f8 100644 --- a/ydb/core/testlib/basics/helpers.h +++ b/ydb/core/testlib/basics/helpers.h @@ -54,6 +54,8 @@ namespace NFake { void SetupSchemeCache(TTestActorRuntime& runtime, ui32 nodeIndex, const TString& root); void SetupQuoterService(TTestActorRuntime& runtime, ui32 nodeIndex); void SetupSysViewService(TTestActorRuntime& runtime, ui32 nodeIndex); + void SetupIcb(TTestActorRuntime& runtime, ui32 nodeIndex, const NKikimrConfig::TImmediateControlsConfig& config, + const TIntrusivePtr<NKikimr::TControlBoard>& icb); // StateStorage, NodeWarden, TabletResolver, ResourceBroker, SharedPageCache void SetupBasicServices(TTestActorRuntime &runtime, TAppPrepare &app, bool mockDisk = false, diff --git a/ydb/core/testlib/basics/services.cpp b/ydb/core/testlib/basics/services.cpp index 560ca56f68c0..75a4532df2e8 100644 --- a/ydb/core/testlib/basics/services.cpp +++ b/ydb/core/testlib/basics/services.cpp @@ -9,6 +9,8 @@ #include <ydb/core/base/statestorage_impl.h> #include <ydb/core/base/tablet_pipe.h> #include <ydb/core/base/tablet_resolver.h> +#include <ydb/core/cms/console/immediate_controls_configurator.h> +#include <ydb/core/control/immediate_control_board_actor.h> #include <ydb/core/node_whiteboard/node_whiteboard.h> #include <ydb/core/blobstorage/pdisk/blobstorage_pdisk_tools.h> #include <ydb/core/quoter/quoter_service.h> @@ -40,6 +42,20 @@ namespace NPDisk { extern const ui64 YdbDefaultPDiskSequence = 0x7e5700007e570000; } + void SetupIcb(TTestActorRuntime& runtime, ui32 nodeIndex, const NKikimrConfig::TImmediateControlsConfig& config, + const TIntrusivePtr<NKikimr::TControlBoard>& icb) + { + runtime.AddLocalService(MakeIcbId(runtime.GetNodeId(nodeIndex)), + TActorSetupCmd(CreateImmediateControlActor(icb, runtime.GetDynamicCounters(nodeIndex)), + TMailboxType::ReadAsFilled, 0), + nodeIndex); + + runtime.AddLocalService(TActorId{}, + TActorSetupCmd(NConsole::CreateImmediateControlsConfigurator(icb, config), + TMailboxType::ReadAsFilled, 0), + nodeIndex); + } + void SetupBSNodeWarden(TTestActorRuntime& runtime, ui32 nodeIndex, TIntrusivePtr<TNodeWardenConfig> nodeWardenConfig) { runtime.AddLocalService(MakeBlobStorageNodeWardenID(runtime.GetNodeId(nodeIndex)), @@ -337,12 +353,17 @@ namespace NPDisk { app.AddHive(0, 0); } + while (app.Icb.size() < runtime.GetNodeCount()) { + app.Icb.emplace_back(new TControlBoard); + } + for (ui32 nodeIndex = 0; nodeIndex < runtime.GetNodeCount(); ++nodeIndex) { SetupStateStorageGroups(runtime, nodeIndex, app); NKikimrProto::TKeyConfig keyConfig; if (const auto it = app.Keys.find(nodeIndex); it != app.Keys.end()) { keyConfig = it->second; } + SetupIcb(runtime, nodeIndex, app.ImmediateControlsConfig, app.Icb[nodeIndex]); SetupBSNodeWarden(runtime, nodeIndex, disk.MakeWardenConf(*app.Domains, keyConfig)); SetupTabletResolver(runtime, nodeIndex); diff --git a/ydb/core/testlib/tenant_runtime.cpp b/ydb/core/testlib/tenant_runtime.cpp index 3f1d14f4a977..32af1d96c422 100644 --- a/ydb/core/testlib/tenant_runtime.cpp +++ b/ydb/core/testlib/tenant_runtime.cpp @@ -820,6 +820,7 @@ void TTenantTestRuntime::Setup(bool createTenantPools) TAppPrepare app; app.FeatureFlags = Extension.GetFeatureFlags(); + app.ImmediateControlsConfig = Extension.GetImmediateControlsConfig(); app.ClearDomainsAndHive(); ui32 planResolution = 500; @@ -853,7 +854,9 @@ void TTenantTestRuntime::Setup(bool createTenantPools) app.AddHive(i, Config.HiveId); } - for (size_t i = 0; i< Config.Nodes.size(); ++i) { + app.InitIcb(Config.Nodes.size()); + + for (size_t i = 0; i < Config.Nodes.size(); ++i) { AddLocalService(NNodeWhiteboard::MakeNodeWhiteboardServiceId(GetNodeId(i)), TActorSetupCmd(new TFakeNodeWhiteboardService, TMailboxType::Simple, 0), i); } diff --git a/ydb/core/testlib/test_client.cpp b/ydb/core/testlib/test_client.cpp index 978d3e3b1f97..f6816c4063da 100644 --- a/ydb/core/testlib/test_client.cpp +++ b/ydb/core/testlib/test_client.cpp @@ -191,6 +191,8 @@ namespace Tests { app.SetAwsRegion(Settings->AwsRegion); app.CompactionConfig = Settings->CompactionConfig; app.FeatureFlags = Settings->FeatureFlags; + app.ImmediateControlsConfig = Settings->Controls; + app.InitIcb(StaticNodes() + DynamicNodes()); Runtime = MakeHolder<TTestBasicRuntime>(StaticNodes() + DynamicNodes(), Settings->UseRealThreads); @@ -273,14 +275,9 @@ namespace Tests { // for (ui32 nodeIdx = 0; nodeIdx < StaticNodes(); ++nodeIdx) { SetupDomainLocalService(nodeIdx); - SetupConfigurators(nodeIdx); SetupProxies(nodeIdx); } - for (ui32 nodeIdx = StaticNodes(); nodeIdx < StaticNodes() + DynamicNodes(); ++nodeIdx) { - SetupConfigurators(nodeIdx); - } - CreateBootstrapTablets(); SetupStorage(); } diff --git a/ydb/core/util/hp_timer_helpers.h b/ydb/core/util/hp_timer_helpers.h new file mode 100644 index 000000000000..9503515f9c41 --- /dev/null +++ b/ydb/core/util/hp_timer_helpers.h @@ -0,0 +1,66 @@ +#pragma once + +#include <util/system/hp_timer.h> +#include <ydb/library/actors/util/datetime.h> + +namespace NKikimr { + +inline NHPTimer::STime HPNow() { + NHPTimer::STime ret; + GetTimeFast(&ret); + return ret; +} + +inline double HPSecondsFloat(i64 cycles) { + if (cycles > 0) { + return double(cycles) / NHPTimer::GetClockRate(); + } else { + return 0.0; + } +} + +inline double HPMilliSecondsFloat(i64 cycles) { + if (cycles > 0) { + return double(cycles) * 1000.0 / NHPTimer::GetClockRate(); + } else { + return 0; + } +} + +inline ui64 HPMilliSeconds(i64 cycles) { + return (ui64)HPMilliSecondsFloat(cycles); +} + +inline ui64 HPMicroSecondsFloat(i64 cycles) { + if (cycles > 0) { + return double(cycles) * 1000000.0 / NHPTimer::GetClockRate(); + } else { + return 0; + } +} + +inline ui64 HPMicroSeconds(i64 cycles) { + return (ui64)HPMicroSecondsFloat(cycles); +} + +inline ui64 HPNanoSeconds(i64 cycles) { + if (cycles > 0) { + return ui64(double(cycles) * 1000000000.0 / NHPTimer::GetClockRate()); + } else { + return 0; + } +} + +inline ui64 HPCyclesNs(ui64 ns) { + return ui64(NHPTimer::GetClockRate() * double(ns) / 1000000000.0); +} + +inline ui64 HPCyclesUs(ui64 us) { + return ui64(NHPTimer::GetClockRate() * double(us) / 1000000.0); +} + +inline ui64 HPCyclesMs(ui64 ms) { + return ui64(NHPTimer::GetClockRate() * double(ms) / 1000.0); +} + +} // namespace NKikimr diff --git a/ydb/core/util/light.h b/ydb/core/util/light.h new file mode 100644 index 000000000000..10a698a45e9f --- /dev/null +++ b/ydb/core/util/light.h @@ -0,0 +1,213 @@ +#include <ydb/core/mon/mon.h> + +#include "hp_timer_helpers.h" + +namespace NKikimr { + +class TLightBase { +protected: + TString Name; + ::NMonitoring::TDynamicCounters::TCounterPtr State; // Current state (0=OFF=green, 1=ON=red) + ::NMonitoring::TDynamicCounters::TCounterPtr Count; // Number of switches to ON state + ::NMonitoring::TDynamicCounters::TCounterPtr RedMs; // Time elapsed in ON state + ::NMonitoring::TDynamicCounters::TCounterPtr GreenMs; // Time elapsed in OFF state +private: + ui64 RedCycles = 0; + ui64 GreenCycles = 0; + NHPTimer::STime AdvancedTill = 0; + NHPTimer::STime LastNow = 0; + ui64 UpdateThreshold = 0; +public: + void Initialize(TIntrusivePtr<::NMonitoring::TDynamicCounters>& counters, const TString& name) { + Name = name; + State = counters->GetCounter(name + "_state"); + Count = counters->GetCounter(name + "_count", true); + RedMs = counters->GetCounter(name + "_redMs", true); + GreenMs = counters->GetCounter(name + "_greenMs", true); + UpdateThreshold = HPCyclesMs(100); + AdvancedTill = Now(); + } + + void Initialize(TIntrusivePtr<::NMonitoring::TDynamicCounters>& counters, const TString& countName, + const TString& redMsName,const TString& greenMsName) { + Count = counters->GetCounter(countName, true); + RedMs = counters->GetCounter(redMsName, true); + GreenMs = counters->GetCounter(greenMsName, true); + UpdateThreshold = HPCyclesMs(100); + AdvancedTill = Now(); + } + + ui64 GetCount() const { + return *Count; + } + + ui64 GetRedMs() const { + return *RedMs; + } + + ui64 GetGreenMs() const { + return *GreenMs; + } +protected: + void Modify(bool state, bool prevState) { + if (state && !prevState) { // Switched to ON state + if (State) { + *State = true; + } + (*Count)++; + return; + } + if (!state && prevState) { // Switched to OFF state + if (State) { + *State = false; + } + return; + } + } + + void Advance(bool state, NHPTimer::STime now) { + if (now == AdvancedTill) { + return; + } + Elapsed(state, now - AdvancedTill); + if (RedCycles > UpdateThreshold) { + *RedMs += CutMs(RedCycles); + } + if (GreenCycles > UpdateThreshold) { + *GreenMs += CutMs(GreenCycles); + } + AdvancedTill = now; + } + + NHPTimer::STime Now() { + // Avoid time going backwards + NHPTimer::STime now = HPNow(); + if (now < LastNow) { + now = LastNow; + } + LastNow = now; + return now; + } +private: + void Elapsed(bool state, ui64 cycles) { + if (state) { + RedCycles += cycles; + } else { + GreenCycles += cycles; + } + } + + ui64 CutMs(ui64& src) { + ui64 ms = HPMilliSeconds(src); + ui64 cycles = HPCyclesMs(ms); + src -= cycles; + return ms; + } +}; + +// Thread-safe light +class TLight : public TLightBase { +private: + struct TItem { + bool State; + bool Filled; + TItem(bool state = false, bool filled = false) + : State(state) + , Filled(filled) + {} + }; + + // Cyclic buffer to enforce event ordering by seqno + TSpinLock Lock; + size_t HeadIdx = 0; // Index of current state + size_t FilledCount = 0; + ui16 Seqno = 0; // Current seqno + TStackVec<TItem, 32> Data; // In theory should have not more than thread count items +public: + TLight() { + InitData(); + } + + void Set(bool state, ui16 seqno) { + TGuard<TSpinLock> g(Lock); + Push(state, seqno); + bool prevState; + // Note that 'state' variable is being reused + NHPTimer::STime now = Now(); + while (Pop(state, prevState)) { + Modify(state, prevState); + Advance(prevState, now); + } + } + + void Update() { + TGuard<TSpinLock> g(Lock); + Advance(Data[HeadIdx].State, Now()); + } + +private: + void InitData(bool state = false, bool filled = false) { + Data.clear(); + Data.emplace_back(state, filled); + Data.resize(32); + HeadIdx = 0; + } + + void Push(bool state, ui16 seqno) { + FilledCount++; + if (FilledCount == 1) { // First event must initialize seqno + Seqno = seqno; + InitData(state, true); + if (state) { + Modify(true, false); + } + return; + } + Y_ABORT_UNLESS(seqno != Seqno, "ordering overflow or duplicate event headSeqno# %d seqno# %d state# %d filled# %d", + (int)Seqno, (int)seqno, (int)state, (int)CountFilled()); + ui16 diff = seqno; + diff -= Seqno; // Underflow is fine + size_t size = Data.size(); + if (size <= diff) { // Buffer is full -- extend and move wrapped part + Data.resize(size * 2); + for (size_t i = 0; i < HeadIdx; i++) { + Data[size + i] = Data[i]; + Data[i].Filled = false; + } + } + TItem& item = Data[(HeadIdx + diff) % Data.size()]; + Y_ABORT_UNLESS(!item.Filled, "ordering overflow or duplicate event headSeqno# %d seqno# %d state# %d filled# %d", + (int)Seqno, (int)seqno, (int)state, (int)CountFilled()); + item.Filled = true; + item.State = state; + } + + bool Pop(bool& state, bool& prevState) { + size_t nextIdx = (HeadIdx + 1) % Data.size(); + TItem& head = Data[HeadIdx]; + TItem& next = Data[nextIdx]; + if (!head.Filled || !next.Filled) { + return false; + } + state = next.State; + prevState = head.State; + head.Filled = false; + HeadIdx = nextIdx; + Seqno++; // Overflow is fine + FilledCount--; + if (FilledCount == 1 && Data.size() > 32) { + InitData(state, true); + } + return true; + } + + size_t CountFilled() const { + size_t ret = 0; + for (const TItem& item : Data) { + ret += item.Filled; + } + return ret; + } +}; + +} // namespace NKikimr diff --git a/ydb/library/actors/util/datetime.h b/ydb/library/actors/util/datetime.h index cbec5965d623..c3fdaeedf6d4 100644 --- a/ydb/library/actors/util/datetime.h +++ b/ydb/library/actors/util/datetime.h @@ -1,5 +1,7 @@ #pragma once +#include <algorithm> + #include <util/system/defaults.h> #include <util/system/hp_timer.h> #include <util/system/platform.h> diff --git a/ydb/library/pdisk_io/device_type.h b/ydb/library/pdisk_io/device_type.h index c4e8bdc59b71..ed5c77ff5612 100644 --- a/ydb/library/pdisk_io/device_type.h +++ b/ydb/library/pdisk_io/device_type.h @@ -19,6 +19,7 @@ namespace NKikimr::NPDisk { ui64 LastSectorReadBytesPerSec; ui64 FirstSectorWriteBytesPerSec; ui64 LastSectorWriteBytesPerSec; + ui64 BurstThresholdNs; }; const static std::unordered_map<EDeviceType, TDevicePerformanceParams> DevicePerformance = { @@ -28,27 +29,31 @@ namespace NKikimr::NPDisk { .LastSectorReadBytesPerSec = 0, .FirstSectorWriteBytesPerSec = 0, .LastSectorWriteBytesPerSec = 0, + .BurstThresholdNs = 1'000'000'000, } }, { DEVICE_TYPE_ROT, TDevicePerformanceParams{ - .SeekTimeNs = 9000, + .SeekTimeNs = 8000000, .FirstSectorReadBytesPerSec = 200ull * 1024 * 1024, .LastSectorReadBytesPerSec = 66ull * 1024 * 1024, .FirstSectorWriteBytesPerSec = 200ull * 1024 * 1024, .LastSectorWriteBytesPerSec = 66ull * 1024 * 1024, + .BurstThresholdNs = 200'000'000, } }, { DEVICE_TYPE_SSD, TDevicePerformanceParams{ - .SeekTimeNs = 0, + .SeekTimeNs = 40000, .FirstSectorReadBytesPerSec = 500ull * 1024 * 1024, .LastSectorReadBytesPerSec = 500ull * 1024 * 1024, .FirstSectorWriteBytesPerSec = 500ull * 1024 * 1024, .LastSectorWriteBytesPerSec = 500ull * 1024 * 1024, + .BurstThresholdNs = 50'000'000, } }, { DEVICE_TYPE_NVME, TDevicePerformanceParams{ - .SeekTimeNs = 0, + .SeekTimeNs = 40000, .FirstSectorReadBytesPerSec = 1000ull * 1024 * 1024, .LastSectorReadBytesPerSec = 1000ull * 1024 * 1024, .FirstSectorWriteBytesPerSec = 1000ull * 1024 * 1024, .LastSectorWriteBytesPerSec = 1000ull * 1024 * 1024, + .BurstThresholdNs = 32'000'000, } }, }; diff --git a/ydb/library/pdisk_io/sector_map.h b/ydb/library/pdisk_io/sector_map.h index a66e68fe40eb..9b918ea215ff 100644 --- a/ydb/library/pdisk_io/sector_map.h +++ b/ydb/library/pdisk_io/sector_map.h @@ -114,7 +114,7 @@ class TSectorOperationThrottler { Y_ABORT_UNLESS((ui32)diskMode < DM_COUNT); EDeviceType deviceType = DiskModeToDeviceType(diskMode); - DiskModeParams.SeekSleepMicroSeconds = DevicePerformance.at(deviceType).SeekTimeNs; + DiskModeParams.SeekSleepMicroSeconds = (DevicePerformance.at(deviceType).SeekTimeNs + 1000) / 1000 - 1; DiskModeParams.FirstSectorReadRate = DevicePerformance.at(deviceType).FirstSectorReadBytesPerSec; DiskModeParams.LastSectorReadRate = DevicePerformance.at(deviceType).LastSectorReadBytesPerSec; DiskModeParams.FirstSectorWriteRate = DevicePerformance.at(deviceType).FirstSectorWriteBytesPerSec; From 53eadb0741688cbfa5586bb569bb0e085ce1a13c Mon Sep 17 00:00:00 2001 From: Sergey Belyakov <serg-belyakov@ydb.tech> Date: Thu, 13 Jun 2024 10:13:33 +0300 Subject: [PATCH 078/110] Merge tracing fixes to 24-1 (#5458) --- .../blobstorage_pdisk_completion_impl.cpp | 8 +- .../pdisk/blobstorage_pdisk_completion_impl.h | 2 +- .../pdisk/blobstorage_pdisk_impl.cpp | 24 +- .../pdisk/blobstorage_pdisk_impl_log.cpp | 6 +- .../pdisk/blobstorage_pdisk_req_creator.h | 8 +- .../pdisk/blobstorage_pdisk_requestimpl.h | 6 +- ydb/core/cms/console/configs_dispatcher.cpp | 3 +- .../console/jaeger_tracing_configurator.cpp | 221 +++++ .../cms/console/jaeger_tracing_configurator.h | 13 + .../jaeger_tracing_configurator_ut.cpp | 816 ++++++++++++++++++ ydb/core/cms/console/ut/ya.make | 1 + ydb/core/cms/console/ya.make | 2 + ydb/core/cms/json_proxy_proto.h | 10 - .../common_controls/tracing_control.cpp | 62 -- .../control/common_controls/tracing_control.h | 33 - ydb/core/control/common_controls/ya.make | 13 - .../control/immediate_control_board_sampler.h | 25 - .../immediate_control_board_sampler_ut.cpp | 62 -- .../immediate_control_board_throttler.h | 66 -- .../immediate_control_board_throttler_ut.cpp | 126 --- ydb/core/control/ut/ya.make | 2 - ydb/core/control/ya.make | 6 - ydb/core/driver_lib/run/factories.h | 2 +- .../run/kikimr_services_initializers.cpp | 85 +- ydb/core/driver_lib/run/ya.make | 1 + ydb/core/grpc_services/base/base.h | 47 +- ydb/core/grpc_services/base/ya.make | 1 + .../grpc_services/grpc_request_check_actor.h | 39 +- ydb/core/grpc_services/grpc_request_proxy.cpp | 91 +- ydb/core/grpc_services/grpc_request_proxy.h | 3 +- .../grpc_services/rpc_begin_transaction.cpp | 2 +- ydb/core/grpc_services/rpc_calls.h | 1 + .../grpc_services/rpc_commit_transaction.cpp | 2 +- .../rpc_common/rpc_common_kqp_session.cpp | 25 +- ydb/core/grpc_services/rpc_deferrable.h | 8 + ydb/core/grpc_services/rpc_discovery.cpp | 4 + .../grpc_services/rpc_execute_data_query.cpp | 2 +- .../rpc_execute_scheme_query.cpp | 2 +- .../grpc_services/rpc_execute_yql_script.cpp | 2 +- .../grpc_services/rpc_explain_data_query.cpp | 2 +- .../grpc_services/rpc_explain_yql_script.cpp | 2 +- ydb/core/grpc_services/rpc_load_rows.cpp | 9 +- .../grpc_services/rpc_prepare_data_query.cpp | 2 +- ydb/core/grpc_services/rpc_read_rows.cpp | 10 +- .../rpc_rollback_transaction.cpp | 2 +- ydb/core/grpc_services/ya.make | 1 + .../jaeger_tracing/request_discriminator.cpp | 10 + .../jaeger_tracing/request_discriminator.h | 127 +++ ydb/core/jaeger_tracing/sampler.h | 23 + ydb/core/jaeger_tracing/sampler_ut.cpp | 41 + .../sampling_throttling_configurator.cpp | 84 ++ .../sampling_throttling_configurator.h | 46 + .../sampling_throttling_control.cpp | 28 + .../sampling_throttling_control.h | 32 + .../sampling_throttling_control_internals.cpp | 62 ++ .../sampling_throttling_control_internals.h | 25 + ydb/core/jaeger_tracing/settings.h | 165 ++++ ydb/core/jaeger_tracing/throttler.cpp | 78 ++ ydb/core/jaeger_tracing/throttler.h | 27 + ydb/core/jaeger_tracing/throttler_ut.cpp | 175 ++++ ydb/core/jaeger_tracing/ut/ya.make | 14 + ydb/core/jaeger_tracing/ya.make | 26 + ydb/core/keyvalue/keyvalue_intermediate.cpp | 4 +- .../keyvalue_storage_read_request.cpp | 2 +- .../keyvalue/keyvalue_storage_request.cpp | 2 +- ydb/core/keyvalue/ya.make | 1 - ydb/core/kqp/session_actor/kqp_query_state.h | 2 +- ydb/core/protos/config.proto | 142 +-- ydb/core/tablet/tablet_req_writelog.cpp | 8 +- ydb/core/tablet_flat/flat_exec_seat.h | 4 +- ydb/core/tablet_flat/flat_executor.cpp | 2 +- ydb/core/tablet_flat/tablet_flat_executor.h | 10 +- ydb/core/testlib/test_client.cpp | 8 +- ydb/core/tx/datashard/datashard.cpp | 24 +- ydb/core/tx/datashard/datashard__op_rows.cpp | 2 +- .../tx/datashard/datashard__read_iterator.cpp | 2 +- ydb/core/tx/datashard/datashard_pipeline.cpp | 2 +- ydb/core/tx/datashard/datashard_ut_trace.cpp | 75 +- ydb/core/tx/datashard/export_common.h | 1 + .../tx/tx_proxy/upload_rows_common_impl.h | 34 +- ydb/core/util/wilson.h | 14 + ydb/core/util/ya.make | 2 + ydb/core/ya.make | 1 + ydb/library/actors/wilson/wilson_span.cpp | 14 + ydb/library/actors/wilson/wilson_span.h | 11 +- ydb/library/actors/wilson/wilson_trace.cpp | 4 +- ydb/library/actors/wilson/wilson_trace.h | 2 +- ydb/library/actors/wilson/wilson_uploader.cpp | 345 ++++++-- ydb/library/actors/wilson/wilson_uploader.h | 15 +- ydb/library/services/services.proto | 1 + ydb/library/wilson_ids/wilson.h | 94 +- ydb/services/keyvalue/grpc_service.cpp | 32 +- ydb/services/local_discovery/grpc_func_call.h | 8 + ydb/services/local_discovery/grpc_service.cpp | 24 +- ydb/services/ydb/ydb_query.cpp | 26 +- ydb/services/ydb/ydb_table.cpp | 69 +- ydb/tools/cfg/static.py | 155 +++- ydb/tools/cfg/validation.py | 94 +- 98 files changed, 3080 insertions(+), 979 deletions(-) create mode 100644 ydb/core/cms/console/jaeger_tracing_configurator.cpp create mode 100644 ydb/core/cms/console/jaeger_tracing_configurator.h create mode 100644 ydb/core/cms/console/jaeger_tracing_configurator_ut.cpp delete mode 100644 ydb/core/control/common_controls/tracing_control.cpp delete mode 100644 ydb/core/control/common_controls/tracing_control.h delete mode 100644 ydb/core/control/common_controls/ya.make delete mode 100644 ydb/core/control/immediate_control_board_sampler.h delete mode 100644 ydb/core/control/immediate_control_board_sampler_ut.cpp delete mode 100644 ydb/core/control/immediate_control_board_throttler.h delete mode 100644 ydb/core/control/immediate_control_board_throttler_ut.cpp create mode 100644 ydb/core/jaeger_tracing/request_discriminator.cpp create mode 100644 ydb/core/jaeger_tracing/request_discriminator.h create mode 100644 ydb/core/jaeger_tracing/sampler.h create mode 100644 ydb/core/jaeger_tracing/sampler_ut.cpp create mode 100644 ydb/core/jaeger_tracing/sampling_throttling_configurator.cpp create mode 100644 ydb/core/jaeger_tracing/sampling_throttling_configurator.h create mode 100644 ydb/core/jaeger_tracing/sampling_throttling_control.cpp create mode 100644 ydb/core/jaeger_tracing/sampling_throttling_control.h create mode 100644 ydb/core/jaeger_tracing/sampling_throttling_control_internals.cpp create mode 100644 ydb/core/jaeger_tracing/sampling_throttling_control_internals.h create mode 100644 ydb/core/jaeger_tracing/settings.h create mode 100644 ydb/core/jaeger_tracing/throttler.cpp create mode 100644 ydb/core/jaeger_tracing/throttler.h create mode 100644 ydb/core/jaeger_tracing/throttler_ut.cpp create mode 100644 ydb/core/jaeger_tracing/ut/ya.make create mode 100644 ydb/core/jaeger_tracing/ya.make create mode 100644 ydb/core/util/wilson.h diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_completion_impl.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_completion_impl.cpp index 90f22ebd94ae..9039624714c2 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_completion_impl.cpp +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_completion_impl.cpp @@ -15,7 +15,7 @@ namespace NPDisk { void TCompletionLogWrite::Exec(TActorSystem *actorSystem) { // bool isNewChunksCommited = false; if (CommitedLogChunks) { - NWilson::TSpan span(TWilson::PDisk, TraceId.Clone(), "PDisk.CommitLogChunks"); + NWilson::TSpan span(TWilson::PDiskBasic, TraceId.Clone(), "PDisk.CommitLogChunks"); auto* req = PDisk->ReqCreator.CreateFromArgs<TCommitLogChunks>(std::move(CommitedLogChunks), std::move(span)); PDisk->InputRequest(req); //isNewChunksCommited = true; @@ -146,7 +146,7 @@ TBuffer *TCompletionChunkReadPart::GetBuffer() { } void TCompletionChunkReadPart::Exec(TActorSystem *actorSystem) { - auto execSpan = Span.CreateChild(TWilson::PDisk, "PDisk.CompletionChunkReadPart.Exec"); + auto execSpan = Span.CreateChild(TWilson::PDiskDetailed, "PDisk.CompletionChunkReadPart.Exec"); Y_ABORT_UNLESS(actorSystem); Y_ABORT_UNLESS(CumulativeCompletion); if (TCompletionAction::Result != EIoResult::Ok) { @@ -306,7 +306,7 @@ TCompletionChunkRead::~TCompletionChunkRead() { } void TCompletionChunkRead::Exec(TActorSystem *actorSystem) { - auto execSpan = Span.CreateChild(TWilson::PDisk, "PDisk.CompletionChunkRead.Exec"); + auto execSpan = Span.CreateChild(TWilson::PDiskDetailed, "PDisk.CompletionChunkRead.Exec"); THolder<TEvChunkReadResult> result = MakeHolder<TEvChunkReadResult>(NKikimrProto::OK, Read->ChunkIdx, Read->Offset, Read->Cookie, PDisk->GetStatusFlags(Read->Owner, Read->OwnerGroupType), ""); result->Data = std::move(CommonBuffer); @@ -393,7 +393,7 @@ void TChunkTrimCompletion::Exec(TActorSystem *actorSystem) { << ui64(responseTimeMs) << " sizeBytes# " << SizeBytes); LWPROBE(PDiskTrimResponseTime, PDisk->PDiskId, ReqId.Id, responseTimeMs, SizeBytes); PDisk->Mon.Trim.CountResponse(); - NWilson::TSpan span(TWilson::PDisk, std::move(TraceId), "PDisk.TryTrimChunk", NWilson::EFlags::AUTO_END, actorSystem); + NWilson::TSpan span(TWilson::PDiskBasic, std::move(TraceId), "PDisk.TryTrimChunk", NWilson::EFlags::AUTO_END, actorSystem); span.Attribute("size", static_cast<i64>(SizeBytes)); TTryTrimChunk *tryTrim = PDisk->ReqCreator.CreateFromArgs<TTryTrimChunk>(SizeBytes, std::move(span)); PDisk->InputRequest(tryTrim); diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_completion_impl.h b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_completion_impl.h index 415f5a2549e3..5ae63cc4384f 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_completion_impl.h +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_completion_impl.h @@ -100,7 +100,7 @@ class TCompletionChunkWrite : public TCompletionAction { } void Exec(TActorSystem *actorSystem) override { - auto execSpan = Span.CreateChild(TWilson::PDisk, "PDisk.CompletionChunkWrite.Exec"); + auto execSpan = Span.CreateChild(TWilson::PDiskDetailed, "PDisk.CompletionChunkWrite.Exec"); double responseTimeMs = HPMilliSecondsFloat(HPNow() - StartTime); LOG_DEBUG_S(*actorSystem, NKikimrServices::BS_PDISK, "PDiskId# " << PDiskId << " ReqId# " << ReqId diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp index 310bdced23dc..e7249e8bb52b 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp @@ -1051,7 +1051,7 @@ TPDisk::EChunkReadPieceResult TPDisk::ChunkReadPiece(TIntrusivePtr<TChunkRead> & ui64 readOffset = Format.Offset(read->ChunkIdx, read->FirstSector, currentSectorOffset); // TODO: Get this from the drive - NWilson::TSpan span(TWilson::PDisk, std::move(traceId), "PDisk.CompletionChunkReadPart", NWilson::EFlags::NONE, ActorSystem); + NWilson::TSpan span(TWilson::PDiskBasic, std::move(traceId), "PDisk.CompletionChunkReadPart", NWilson::EFlags::NONE, ActorSystem); traceId = span.GetTraceId(); THolder<TCompletionChunkReadPart> completion(new TCompletionChunkReadPart(this, read, bytesToRead, payloadBytesToRead, payloadOffset, read->FinalCompletion, isTheLastPart, Cfg->UseT1ha0HashInFooter, std::move(span))); @@ -2250,7 +2250,7 @@ void TPDisk::ProcessChunkWriteQueue() { for (auto it = JointChunkWrites.begin(); it != JointChunkWrites.end(); ++it) { TRequestBase *req = (*it); req->SpanStack.PopOk(); - req->SpanStack.Push(TWilson::PDisk, "PDisk.InBlockDevice", NWilson::EFlags::AUTO_END); + req->SpanStack.Push(TWilson::PDiskDetailed, "PDisk.InBlockDevice", NWilson::EFlags::AUTO_END); switch (req->GetType()) { case ERequestType::RequestChunkWritePiece: { @@ -2281,7 +2281,7 @@ void TPDisk::ProcessChunkReadQueue() { for (auto& req : JointChunkReads) { req->SpanStack.PopOk(); - req->SpanStack.Push(TWilson::PDisk, "PDisk.InBlockDevice", NWilson::EFlags::AUTO_END); + req->SpanStack.Push(TWilson::PDiskDetailed, "PDisk.InBlockDevice", NWilson::EFlags::AUTO_END); switch (req->GetType()) { case ERequestType::RequestChunkReadPiece: { @@ -2353,7 +2353,7 @@ void TPDisk::ProcessChunkTrimQueue() { for (auto it = JointChunkTrims.begin(); it != JointChunkTrims.end(); ++it) { TChunkTrim *trim = (*it); trim->SpanStack.PopOk(); - trim->SpanStack.Push(TWilson::PDisk, "PDisk.InBlockDevice", NWilson::EFlags::AUTO_END); + trim->SpanStack.Push(TWilson::PDiskDetailed, "PDisk.InBlockDevice", NWilson::EFlags::AUTO_END); ui64 chunkOffset = Format.ChunkSize * ui64(trim->ChunkIdx); ui64 offset = chunkOffset + trim->Offset; ui64 trimSize = trim->Size; @@ -2890,7 +2890,7 @@ bool TPDisk::PreprocessRequest(TRequestBase *request) { --state.OperationsInProgress; --inFlight->ChunkReads; }; - auto completionSpan = request->SpanStack.CreateChild(TWilson::PDisk, "PDisk.CompletionChunkRead"); + auto completionSpan = request->SpanStack.CreateChild(TWilson::PDiskTopLevel, "PDisk.CompletionChunkRead"); read->FinalCompletion = new TCompletionChunkRead(this, read, std::move(onDestroy), state.Nonce, std::move(completionSpan)); static_cast<TChunkRead*>(request)->SelfPointer = std::move(read); @@ -2976,7 +2976,7 @@ bool TPDisk::PreprocessRequest(TRequestBase *request) { }; ev.Completion = MakeHolder<TCompletionChunkWrite>(ev.Sender, result.release(), &Mon, PDiskId, ev.CreationTime, ev.TotalSize, ev.PriorityClass, std::move(onDestroy), ev.ReqId, - ev.SpanStack.CreateChild(TWilson::PDisk, "PDisk.CompletionChunkWrite")); + ev.SpanStack.CreateChild(TWilson::PDiskTopLevel, "PDisk.CompletionChunkWrite")); return true; } @@ -3171,7 +3171,7 @@ void TPDisk::PushRequestToForseti(TRequestBase *request) { && static_cast<TRequestBase *>(job->Payload)->GetType() == ERequestType::RequestLogWrite) { TLogWrite &batch = *static_cast<TLogWrite*>(job->Payload); - if (auto span = request->SpanStack.Push(TWilson::PDisk, "PDisk.InScheduler.InLogWriteBatch")) { + if (auto span = request->SpanStack.Push(TWilson::PDiskDetailed, "PDisk.InScheduler.InLogWriteBatch")) { span->Attribute("Batch.ReqId", static_cast<i64>(batch.ReqId.Id)); } batch.AddToBatch(static_cast<TLogWrite*>(request)); @@ -3197,7 +3197,7 @@ void TPDisk::PushRequestToForseti(TRequestBase *request) { SplitChunkJobSize(whole->TotalSize, &smallJobSize, &largeJobSize, &smallJobCount); for (ui32 idx = 0; idx < smallJobCount; ++idx) { // Schedule small job. - auto span = request->SpanStack.CreateChild(TWilson::PDisk, "PDisk.ChunkWritePiece", NWilson::EFlags::AUTO_END); + auto span = request->SpanStack.CreateChild(TWilson::PDiskBasic, "PDisk.ChunkWritePiece", NWilson::EFlags::AUTO_END); span.Attribute("small_job_idx", idx) .Attribute("is_last_piece", false); TChunkWritePiece *piece = new TChunkWritePiece(whole, idx * smallJobSize, smallJobSize, std::move(span)); @@ -3205,7 +3205,7 @@ void TPDisk::PushRequestToForseti(TRequestBase *request) { AddJobToForseti(cbs, piece, request->JobKind); } // Schedule large job (there always is one) - auto span = request->SpanStack.CreateChild(TWilson::PDisk, "PDisk.ChunkWritePiece", NWilson::EFlags::AUTO_END); + auto span = request->SpanStack.CreateChild(TWilson::PDiskBasic, "PDisk.ChunkWritePiece", NWilson::EFlags::AUTO_END); span.Attribute("is_last_piece", true); TChunkWritePiece *piece = new TChunkWritePiece(whole, smallJobCount * smallJobSize, largeJobSize, std::move(span)); piece->EstimateCost(DriveModel); @@ -3225,7 +3225,7 @@ void TPDisk::PushRequestToForseti(TRequestBase *request) { ui32 largeJobSize = totalSectors - smallJobSize * smallJobCount; for (ui32 idx = 0; idx < smallJobCount; ++idx) { - auto span = request->SpanStack.CreateChild(TWilson::PDisk, "PDisk.ChunkReadPiece", NWilson::EFlags::AUTO_END); + auto span = request->SpanStack.CreateChild(TWilson::PDiskBasic, "PDisk.ChunkReadPiece", NWilson::EFlags::AUTO_END); span.Attribute("small_job_idx", idx) .Attribute("is_last_piece", false); // Schedule small job. @@ -3238,7 +3238,7 @@ void TPDisk::PushRequestToForseti(TRequestBase *request) { AddJobToForseti(cbs, piece, request->JobKind); } // Schedule large job (there always is one) - auto span = request->SpanStack.CreateChild(TWilson::PDisk, "PDisk.ChunkReadPiece"); + auto span = request->SpanStack.CreateChild(TWilson::PDiskBasic, "PDisk.ChunkReadPiece"); span.Attribute("is_last_piece", true); auto piece = new TChunkReadPiece(read, smallJobCount * smallJobSize, largeJobSize * Format.SectorSize, true, std::move(span)); @@ -3274,7 +3274,7 @@ void TPDisk::SplitChunkJobSize(ui32 totalSize, ui32 *outSmallJobSize, ui32 *outL void TPDisk::AddJobToForseti(NSchLab::TCbs *cbs, TRequestBase *request, NSchLab::EJobKind jobKind) { LWTRACK(PDiskAddToScheduler, request->Orbit, PDiskId, request->ReqId.Id, HPSecondsFloat(request->CreationTime), request->Owner, request->IsFast, request->PriorityClass); - request->SpanStack.Push(TWilson::PDisk, "PDisk.InScheduler"); + request->SpanStack.Push(TWilson::PDiskDetailed, "PDisk.InScheduler"); TIntrusivePtr<NSchLab::TJob> job = ForsetiScheduler.CreateJob(); job->Payload = request; job->Cost = request->Cost; diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl_log.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl_log.cpp index 44d5bb98a11c..d884c84ee794 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl_log.cpp +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl_log.cpp @@ -535,7 +535,7 @@ void TPDisk::ReadAndParseMainLog(const TActorId &pDiskActor) { void TPDisk::ProcessLogReadQueue() { for (auto& req : JointLogReads) { req->SpanStack.PopOk(); - req->SpanStack.Push(TWilson::PDisk, "PDisk.InBlockDevice", NWilson::EFlags::AUTO_END); + req->SpanStack.Push(TWilson::PDiskDetailed, "PDisk.InBlockDevice", NWilson::EFlags::AUTO_END); switch (req->GetType()) { case ERequestType::RequestLogRead: { @@ -736,7 +736,7 @@ void TPDisk::ProcessLogWriteQueueAndCommits() { TStringStream errorReason; NKikimrProto::EReplyStatus status = ValidateRequest(logWrite, errorReason); if (status == NKikimrProto::OK) { - logWrite->SpanStack.Push(TWilson::PDisk, "PDisk.InBlockDevice", NWilson::EFlags::AUTO_END); + logWrite->SpanStack.Push(TWilson::PDiskDetailed, "PDisk.InBlockDevice", NWilson::EFlags::AUTO_END); LogWrite(*logWrite, logChunksToCommit); logWrite->ScheduleTime = HPNow(); if (auto logWriteTraceId = logWrite->SpanStack.GetTraceId()) { @@ -1282,7 +1282,7 @@ void TPDisk::MarkChunksAsReleased(TReleaseChunks& req) { } if (req.IsChunksFromLogSplice) { - auto *releaseReq = ReqCreator.CreateFromArgs<TReleaseChunks>(std::move(req.ChunksToRelease), req.SpanStack.CreateChild(TWilson::PDisk, "PDisk.ReleaseChunks")); + auto *releaseReq = ReqCreator.CreateFromArgs<TReleaseChunks>(std::move(req.ChunksToRelease), req.SpanStack.CreateChild(TWilson::PDiskTopLevel, "PDisk.ReleaseChunks")); auto flushAction = MakeHolder<TCompletionEventSender>(this, THolder<TReleaseChunks>(releaseReq)); diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_req_creator.h b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_req_creator.h index c8ab252f8f7d..dc0d534b4e1a 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_req_creator.h +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_req_creator.h @@ -218,7 +218,7 @@ class TReqCreator { //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // TODO: Make all functions in style [[nodiscard]] TChunkTrim* CreateChunkTrim(ui32 chunkIdx, ui32 offset, ui64 size, const NWilson::TSpan& parent) { - NWilson::TSpan span = parent.CreateChild(TWilson::PDisk, "PDisk.ChunkTrim"); + NWilson::TSpan span = parent.CreateChild(TWilson::PDiskTopLevel, "PDisk.ChunkTrim"); span.Attribute("chunk_idx", chunkIdx) .Attribute("offset", offset) .Attribute("size", static_cast<i64>(size)) @@ -228,7 +228,7 @@ class TReqCreator { } [[nodiscard]] TLogWrite* CreateLogWrite(NPDisk::TEvLog &ev, const TActorId &sender, double& burstMs, NWilson::TTraceId traceId) { - NWilson::TSpan span(TWilson::PDisk, std::move(traceId), "PDisk.LogWrite", NWilson::EFlags::AUTO_END, ActorSystem); + NWilson::TSpan span(TWilson::PDiskTopLevel, std::move(traceId), "PDisk.LogWrite", NWilson::EFlags::AUTO_END, ActorSystem); span.Attribute("pdisk_id", PDiskId); TReqId reqId(TReqId::LogWrite, AtomicIncrement(LastReqId)); @@ -245,7 +245,7 @@ class TReqCreator { [[nodiscard]] TChunkRead* CreateChunkRead(const NPDisk::TEvChunkRead &ev, const TActorId &sender, double& burstMs, NWilson::TTraceId traceId) { - NWilson::TSpan span(TWilson::PDisk, std::move(traceId), "PDisk.ChunkRead", NWilson::EFlags::AUTO_END, ActorSystem); + NWilson::TSpan span(TWilson::PDiskTopLevel, std::move(traceId), "PDisk.ChunkRead", NWilson::EFlags::AUTO_END, ActorSystem); span.Attribute("pdisk_id", PDiskId); TReqId reqId(TReqId::ChunkRead, AtomicIncrement(LastReqId)); @@ -261,7 +261,7 @@ class TReqCreator { [[nodiscard]] TChunkWrite* CreateChunkWrite(const NPDisk::TEvChunkWrite &ev, const TActorId &sender, double& burstMs, NWilson::TTraceId traceId) { - NWilson::TSpan span(TWilson::PDisk, std::move(traceId), "PDisk.ChunkWrite", NWilson::EFlags::AUTO_END, ActorSystem); + NWilson::TSpan span(TWilson::PDiskTopLevel, std::move(traceId), "PDisk.ChunkWrite", NWilson::EFlags::AUTO_END, ActorSystem); span.Attribute("pdisk_id", PDiskId); TReqId reqId(TReqId::ChunkWrite, AtomicIncrement(LastReqId)); diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.h b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.h index ee89bc085331..d8d6da23393d 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.h +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.h @@ -185,7 +185,7 @@ class TLogRead : public TRequestBase { TLogRead(const NPDisk::TEvReadLog::TPtr &ev, ui32 pdiskId, TAtomicBase reqIdx) : TRequestBase(ev->Sender, TReqId(TReqId::LogRead, reqIdx), ev->Get()->Owner, ev->Get()->OwnerRound, NPriInternal::LogRead, - NWilson::TSpan(TWilson::PDisk, std::move(ev->TraceId), "PDisk.LogRead")) + NWilson::TSpan(TWilson::PDiskTopLevel, std::move(ev->TraceId), "PDisk.LogRead")) , Position(ev->Get()->Position) , SizeLimit(ev->Get()->SizeLimit) { @@ -214,7 +214,7 @@ class TLogReadContinue : public TRequestBase { TLogReadContinue(const NPDisk::TEvReadLogContinue::TPtr &ev, ui32 pdiskId, TAtomicBase /*reqIdx*/) : TRequestBase(ev->Sender, ev->Get()->ReqId, 0, 0, NPriInternal::LogRead, - NWilson::TSpan(TWilson::PDisk, std::move(ev->TraceId), "PDisk.LogReadContinue")) + NWilson::TSpan(TWilson::PDiskTopLevel, std::move(ev->TraceId), "PDisk.LogReadContinue")) , Data(ev->Get()->Data) , Size(ev->Get()->Size) , Offset(ev->Get()->Offset) @@ -850,7 +850,7 @@ class TAskForCutLog : public TRequestBase { public: TAskForCutLog(const NPDisk::TEvAskForCutLog::TPtr &ev, ui32 pdiskId, TAtomicBase reqIdx) : TRequestBase(ev->Sender, TReqId(TReqId::AskForCutLog, reqIdx), ev->Get()->Owner, ev->Get()->OwnerRound, NPriInternal::Other, - NWilson::TSpan(TWilson::PDisk, std::move(ev->TraceId), "PDisk.AskForCutLog") + NWilson::TSpan(TWilson::PDiskTopLevel, std::move(ev->TraceId), "PDisk.AskForCutLog") ) { if (auto span = SpanStack.PeekTop()) { diff --git a/ydb/core/cms/console/configs_dispatcher.cpp b/ydb/core/cms/console/configs_dispatcher.cpp index d1834fe1018d..f415cf3243c0 100644 --- a/ydb/core/cms/console/configs_dispatcher.cpp +++ b/ydb/core/cms/console/configs_dispatcher.cpp @@ -57,7 +57,8 @@ const THashSet<ui32> DYNAMIC_KINDS({ (ui32)NKikimrConsole::TConfigItem::TenantPoolConfigItem, (ui32)NKikimrConsole::TConfigItem::TenantSlotBrokerConfigItem, (ui32)NKikimrConsole::TConfigItem::AllowEditYamlInUiItem, - (ui32)NKikimrConsole::TConfigItem::BackgroundCleaningConfigItem + (ui32)NKikimrConsole::TConfigItem::BackgroundCleaningConfigItem, + (ui32)NKikimrConsole::TConfigItem::TracingConfigItem, }); const THashSet<ui32> NON_YAML_KINDS({ diff --git a/ydb/core/cms/console/jaeger_tracing_configurator.cpp b/ydb/core/cms/console/jaeger_tracing_configurator.cpp new file mode 100644 index 000000000000..b20fa0429eb5 --- /dev/null +++ b/ydb/core/cms/console/jaeger_tracing_configurator.cpp @@ -0,0 +1,221 @@ +#include "jaeger_tracing_configurator.h" + +#include "configs_dispatcher.h" +#include "console.h" + +#include <ydb/core/jaeger_tracing/sampling_throttling_configurator.h> +#include <ydb/core/jaeger_tracing/settings.h> +#include <ydb/library/actors/core/actor.h> + +namespace NKikimr::NConsole { + +using namespace NJaegerTracing; + +class TJaegerTracingConfigurator : public TActorBootstrapped<TJaegerTracingConfigurator> { +public: + static constexpr NKikimrServices::TActivity::EType ActorActivityType() { + return NKikimrServices::TActivity::JAEGER_TRACING_CONFIGURATOR; + } + + TJaegerTracingConfigurator(TSamplingThrottlingConfigurator tracingConfigurator, + NKikimrConfig::TTracingConfig cfg); + + void Bootstrap(const TActorContext& ctx); + +private: + void Handle(TEvConsole::TEvConfigNotificationRequest::TPtr& ev, const TActorContext& ctx); + + STRICT_STFUNC(StateWork, + HFunc(TEvConsole::TEvConfigNotificationRequest, Handle) + IgnoreFunc(TEvConfigsDispatcher::TEvSetConfigSubscriptionResponse) + ) + + void ApplyConfigs(const NKikimrConfig::TTracingConfig& cfg); + static TVector<ERequestType> GetRequestTypes(const NKikimrConfig::TTracingConfig::TSelectors& selectors); + static TMaybe<TString> GetDatabase(const NKikimrConfig::TTracingConfig::TSelectors& selectors); + static TSettings<double, TWithTag<TThrottlingSettings>> GetSettings(const NKikimrConfig::TTracingConfig& cfg); + + TSamplingThrottlingConfigurator TracingConfigurator; + NKikimrConfig::TTracingConfig initialConfig; +}; + +TJaegerTracingConfigurator::TJaegerTracingConfigurator( + TSamplingThrottlingConfigurator tracingConfigurator, + NKikimrConfig::TTracingConfig cfg) + : TracingConfigurator(std::move(tracingConfigurator)) + , initialConfig(std::move(cfg)) +{} + +void TJaegerTracingConfigurator::Bootstrap(const TActorContext& ctx) { + LOG_DEBUG_S(ctx, NKikimrServices::CMS_CONFIGS, "TJaegerTracingConfigurator: Bootstrap"); + Become(&TThis::StateWork); + + ApplyConfigs(initialConfig); + + LOG_DEBUG_S(ctx, NKikimrServices::CMS_CONFIGS, "TJaegerTracingConfigurator: subscribing to config updates"); + ui32 item = static_cast<ui32>(NKikimrConsole::TConfigItem::TracingConfigItem); + ctx.Send(MakeConfigsDispatcherID(SelfId().NodeId()), + new TEvConfigsDispatcher::TEvSetConfigSubscriptionRequest(item)); +} + +void TJaegerTracingConfigurator::Handle(TEvConsole::TEvConfigNotificationRequest::TPtr& ev, const TActorContext& ctx) { + auto& rec = ev->Get()->Record; + + LOG_INFO_S(ctx, NKikimrServices::CMS_CONFIGS, "TJaegerTracingConfigurator: got new config: " << rec.GetConfig().ShortDebugString()); + + ApplyConfigs(rec.GetConfig().GetTracingConfig()); + + auto resp = MakeHolder<TEvConsole::TEvConfigNotificationResponse>(rec); + LOG_TRACE_S(ctx, NKikimrServices::CMS_CONFIGS, + "TJaegerTracingConfigurator: Send TEvConfigNotificationResponse"); + ctx.Send(ev->Sender, resp.Release(), 0, ev->Cookie); +} + +void TJaegerTracingConfigurator::ApplyConfigs(const NKikimrConfig::TTracingConfig& cfg) { + auto settings = GetSettings(cfg); + return TracingConfigurator.UpdateSettings(std::move(settings)); +} + +TVector<ERequestType> TJaegerTracingConfigurator::GetRequestTypes(const NKikimrConfig::TTracingConfig::TSelectors& selectors) { + TVector<ERequestType> requestTypes; + bool hasErrors = false; + for (const auto& requestType: selectors.GetRequestTypes()) { + if (auto it = NameToRequestType.FindPtr(requestType)) { + requestTypes.push_back(*it); + } else { + ALOG_ERROR(NKikimrServices::CMS_CONFIGS, "Failed to parse request type \"" << requestType << "\""); + hasErrors = true; + } + } + + if (hasErrors) { + return {}; + } + if (requestTypes.empty()) { + requestTypes.push_back(ERequestType::UNSPECIFIED); + } + return requestTypes; +} + +TMaybe<TString> TJaegerTracingConfigurator::GetDatabase(const NKikimrConfig::TTracingConfig::TSelectors& selectors) { + if (selectors.HasDatabase()) { + return selectors.GetDatabase(); + } + return NothingObject; +} + +TSettings<double, TWithTag<TThrottlingSettings>> TJaegerTracingConfigurator::GetSettings(const NKikimrConfig::TTracingConfig& cfg) { + TSettings<double, TWithTag<TThrottlingSettings>> settings; + + size_t tag = 0; + + for (const auto& samplingRule : cfg.GetSampling()) { + const auto& scope = samplingRule.GetScope(); + + auto requestTypes = GetRequestTypes(scope); + if (requestTypes.empty()) { + ALOG_ERROR(NKikimrServices::CMS_CONFIGS, "failed to parse request type in the rule " + << samplingRule.ShortDebugString() << ". Skipping the rule"); + continue; + } + + if (!samplingRule.HasLevel() || !samplingRule.HasFraction() || !samplingRule.HasMaxTracesPerMinute()) { + ALOG_ERROR(NKikimrServices::CMS_CONFIGS, "missing required fields in rule " << samplingRule.ShortDebugString() + << " (required fields are: level, fraction, max_traces_per_minute). Skipping the rule"); + continue; + } + if (samplingRule.GetMaxTracesPerMinute() == 0) { + ALOG_ERROR(NKikimrServices::CMS_CONFIGS, "max_traces_per_minute should never be zero. Found in rule " << samplingRule.GetMaxTracesPerMinute() + << ". Skipping the rule"); + continue; + } + + ui64 level = samplingRule.GetLevel(); + double fraction = samplingRule.GetFraction(); + if (level > 15) { + ALOG_ERROR(NKikimrServices::CMS_CONFIGS, "sampling level exceeds maximum allowed value (" << level + << " provided, maximum is 15). Lowering the level"); + level = 15; + } + if (fraction < 0 || fraction > 1) { + ALOG_ERROR(NKikimrServices::CMS_CONFIGS, "provided fraction " << fraction + << " violated range [0; 1]. Clamping it to the range"); + fraction = std::min(1.0, std::max(0.0, fraction)); + } + + TSamplingRule<double, TWithTag<TThrottlingSettings>> rule { + .Level = static_cast<ui8>(level), + .Sampler = fraction, + .Throttler = TWithTag<TThrottlingSettings> { + .Value = TThrottlingSettings { + .MaxTracesPerMinute = samplingRule.GetMaxTracesPerMinute(), + .MaxTracesBurst = samplingRule.GetMaxTracesBurst(), + }, + .Tag = tag++, + }, + }; + + for (auto requestType: requestTypes) { + auto& requestTypeRules = settings.SamplingRules[static_cast<size_t>(requestType)]; + auto database = GetDatabase(scope); + if (database) { + requestTypeRules.DatabaseRules[*database].push_back(rule); + } else { + requestTypeRules.Global.push_back(rule); + } + } + } + + for (const auto& throttlingRule : cfg.GetExternalThrottling()) { + const auto& scope = throttlingRule.GetScope(); + + auto requestTypes = GetRequestTypes(throttlingRule.GetScope()); + if (requestTypes.empty()) { + ALOG_ERROR(NKikimrServices::CMS_CONFIGS, "failed to parse request type in rule " + << throttlingRule.ShortDebugString() << ". Skipping the rule"); + continue; + } + + if (!throttlingRule.HasMaxTracesPerMinute()) { + ALOG_ERROR(NKikimrServices::CMS_CONFIGS, "missing required field max_traces_per_minute in rule " + << throttlingRule.ShortDebugString() << ". Skipping the rule"); + continue; + } + if (throttlingRule.GetMaxTracesPerMinute() == 0) { + ALOG_ERROR(NKikimrServices::CMS_CONFIGS, "max_traces_per_minute should never be zero. Found in rule " << throttlingRule.GetMaxTracesPerMinute() + << ". Skipping the rule"); + continue; + } + + ui64 maxRatePerMinute = throttlingRule.GetMaxTracesPerMinute(); + ui64 maxBurst = throttlingRule.GetMaxTracesBurst(); + TExternalThrottlingRule<TWithTag<TThrottlingSettings>> rule { + .Throttler = TWithTag<TThrottlingSettings> { + .Value = TThrottlingSettings { + .MaxTracesPerMinute = maxRatePerMinute, + .MaxTracesBurst = maxBurst, + }, + .Tag = tag++, + } + }; + + for (auto requestType : requestTypes) { + auto& requestTypeRules = settings.ExternalThrottlingRules[static_cast<size_t>(requestType)]; + auto database = GetDatabase(scope); + if (database) { + requestTypeRules.DatabaseRules[*database].push_back(rule); + } else { + requestTypeRules.Global.push_back(rule); + } + } + } + + return settings; +} + +IActor* CreateJaegerTracingConfigurator(TSamplingThrottlingConfigurator tracingConfigurator, + NKikimrConfig::TTracingConfig cfg) { + return new TJaegerTracingConfigurator(std::move(tracingConfigurator), std::move(cfg)); +} + +} // namespace NKikimr::NConsole diff --git a/ydb/core/cms/console/jaeger_tracing_configurator.h b/ydb/core/cms/console/jaeger_tracing_configurator.h new file mode 100644 index 000000000000..54b22bd0741c --- /dev/null +++ b/ydb/core/cms/console/jaeger_tracing_configurator.h @@ -0,0 +1,13 @@ +#pragma once + +#include "defs.h" + +#include <ydb/core/jaeger_tracing/sampling_throttling_configurator.h> +#include <ydb/core/protos/config.pb.h> + +namespace NKikimr::NConsole { + +IActor* CreateJaegerTracingConfigurator(NJaegerTracing::TSamplingThrottlingConfigurator tracingConfigurator, + NKikimrConfig::TTracingConfig cfg); + +} // namespace NKikimr::NConsole diff --git a/ydb/core/cms/console/jaeger_tracing_configurator_ut.cpp b/ydb/core/cms/console/jaeger_tracing_configurator_ut.cpp new file mode 100644 index 000000000000..8867c49b4522 --- /dev/null +++ b/ydb/core/cms/console/jaeger_tracing_configurator_ut.cpp @@ -0,0 +1,816 @@ +#include "ut_helpers.h" +#include "jaeger_tracing_configurator.h" + +#include <ydb/core/jaeger_tracing/request_discriminator.h> + +#include <util/generic/ptr.h> +#include <util/random/random.h> + +#include <library/cpp/testing/unittest/registar.h> + +namespace NKikimr { + +using namespace NConsole; +using namespace NUT; +using namespace NJaegerTracing; + +namespace { + +TTenantTestConfig::TTenantPoolConfig StaticTenantPoolConfig() { + TTenantTestConfig::TTenantPoolConfig res = { + // Static slots {tenant, {cpu, memory, network}} + {{ {DOMAIN1_NAME, {1, 1, 1}} }}, + // NodeType + "type1" + }; + return res; +} + +TTenantTestConfig DefaultConsoleTestConfig() { + TTenantTestConfig res = { + // Domains {name, schemeshard {{ subdomain_names }}} + {{ {DOMAIN1_NAME, SCHEME_SHARD1_ID, TVector<TString>()} }}, + // HiveId + HIVE_ID, + // FakeTenantSlotBroker + true, + // FakeSchemeShard + false, + // CreateConsole + true, + // Nodes {tenant_pool_config, data_center} + {{ + {StaticTenantPoolConfig()}, + }}, + // DataCenterCount + 1, + // CreateConfigsDispatcher + true + }; + return res; +} + +void InitJaegerTracingConfigurator( + TTenantTestRuntime& runtime, + TSamplingThrottlingConfigurator configurator, + const NKikimrConfig::TTracingConfig& initCfg +) { + runtime.Register(CreateJaegerTracingConfigurator(std::move(configurator), initCfg)); + + TDispatchOptions options; + options.FinalEvents.emplace_back(TEvConfigsDispatcher::EvSetConfigSubscriptionResponse, 1); + runtime.DispatchEvents(std::move(options)); +} + +void WaitForUpdate(TTenantTestRuntime& runtime) { + TDispatchOptions options; + options.FinalEvents.emplace_back(TEvConsole::EvConfigNotificationResponse, 1); + runtime.DispatchEvents(std::move(options)); +} + +void ConfigureAndWaitUpdate(TTenantTestRuntime& runtime, const NKikimrConfig::TTracingConfig& cfg, ui32 order) { + auto configItem = MakeConfigItem(NKikimrConsole::TConfigItem::TracingConfigItem, + NKikimrConfig::TAppConfig(), {}, {}, "", "", order, + NKikimrConsole::TConfigItem::OVERWRITE, ""); + configItem.MutableConfig()->MutableTracingConfig()->CopyFrom(cfg); + + auto* event = new TEvConsole::TEvConfigureRequest; + event->Record.AddActions()->CopyFrom(MakeAddAction(configItem)); + + runtime.SendToConsole(event); + WaitForUpdate(runtime); +} + +auto& RandomChoice(auto& Container) { + return Container[RandomNumber<size_t>() % Container.size()]; +} + +class TTracingControls { +public: + enum ETraceState { + OFF, + SAMPLED, + EXTERNAL, + }; + + TTracingControls(TVector<TIntrusivePtr<TSamplingThrottlingControl>> controls) + : Controls(std::move(controls)) + {} + + std::pair<ETraceState, ui8> HandleTracing(bool isExternal, TRequestDiscriminator discriminator) { + auto& control = RandomChoice(Controls); + + NWilson::TTraceId traceId; + if (isExternal) { + traceId = NWilson::TTraceId::NewTraceId(TComponentTracingLevels::ProductionVerbose, Max<ui32>()); + } + auto before = traceId.Clone(); + + control->HandleTracing(traceId, discriminator); + if (!traceId) { + return {OFF, 0}; + } + + ETraceState state; + if (traceId == before) { + state = ETraceState::EXTERNAL; + } else { + state = ETraceState::SAMPLED; + } + + return {state, traceId.GetVerbosity()}; + } + +private: + TVector<TIntrusivePtr<TSamplingThrottlingControl>> Controls; +}; + +std::pair<TTracingControls, TSamplingThrottlingConfigurator> + CreateSamplingThrottlingConfigurator(size_t n, TIntrusivePtr<ITimeProvider> timeProvider) { + auto randomProvider = CreateDefaultRandomProvider(); + TSamplingThrottlingConfigurator configurator(timeProvider, randomProvider); + TVector<TIntrusivePtr<TSamplingThrottlingControl>> controls; + for (size_t i = 0; i < n; ++i) { + controls.emplace_back(configurator.GetControl()); + } + + return {TTracingControls(std::move(controls)), std::move(configurator)}; +} + +struct TTimeProviderMock : public ITimeProvider { + TTimeProviderMock(TInstant now) : Now_(now) {} + + TInstant Now() override { + return Now_; + } + + void Advance(TDuration delta) { + Now_ += delta; + } + + TInstant Now_; +}; + +} // namespace anonymous + +Y_UNIT_TEST_SUITE(TJaegerTracingConfiguratorTests) { + Y_UNIT_TEST(DefaultConfig) { + TTenantTestRuntime runtime(DefaultConsoleTestConfig()); + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + auto [controls, configurator] = CreateSamplingThrottlingConfigurator(10, timeProvider); + InitJaegerTracingConfigurator(runtime, std::move(configurator), {}); + + for (size_t i = 0; i < 100; ++i) { + auto [state, _] = controls.HandleTracing(false, {}); + UNIT_ASSERT_EQUAL(state, TTracingControls::OFF); // No requests are sampled + } + + for (size_t i = 0; i < 100; ++i) { + auto [state, _] = controls.HandleTracing(true, {}); + UNIT_ASSERT_EQUAL(state, TTracingControls::OFF); // No request with trace-id are traced + } + WaitForUpdate(runtime); // Initial update + } + + Y_UNIT_TEST(GlobalRules) { + TTenantTestRuntime runtime(DefaultConsoleTestConfig()); + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + auto [controls, configurator] = CreateSamplingThrottlingConfigurator(10, timeProvider); + NKikimrConfig::TTracingConfig cfg; + { + auto rule = cfg.AddExternalThrottling(); + rule->SetMaxTracesBurst(0); + rule->SetMaxTracesPerMinute(60); + } + { + auto rule = cfg.AddSampling(); + rule->SetFraction(1. / 3); + rule->SetLevel(5); + rule->SetMaxTracesBurst(10); + rule->SetMaxTracesPerMinute(30); + } + InitJaegerTracingConfigurator(runtime, std::move(configurator), cfg); + + std::array discriminators{ + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_READROWS, + .Database = "/Root/test3", + }, + TRequestDiscriminator{ + .RequestType = ERequestType::KEYVALUE_READ, + }, + TRequestDiscriminator{ + .Database = "/Root/test2", + }, + TRequestDiscriminator{}, + }; + + { + size_t sampled = 0; + size_t traced = 0; + for (size_t i = 0; i < 1000; ++i) { + auto [state, level] = controls.HandleTracing(true, RandomChoice(discriminators)); + + switch (state) { + case TTracingControls::OFF: + break; + case TTracingControls::SAMPLED: + UNIT_ASSERT_EQUAL(level, 5); + ++sampled; + break; + case TTracingControls::EXTERNAL: + ++traced; + break; + } + timeProvider->Advance(TDuration::MilliSeconds(250)); + } + UNIT_ASSERT_EQUAL(traced, 250); + UNIT_ASSERT(sampled >= 110 && sampled <= 135); + } + timeProvider->Advance(TDuration::Minutes(1)); + + { + for (size_t i = 0; i < 100; ++i) { + auto [state, _] = controls.HandleTracing(true, RandomChoice(discriminators)); + UNIT_ASSERT_EQUAL(state, TTracingControls::EXTERNAL); + timeProvider->Advance(TDuration::Seconds(1)); + } + } + timeProvider->Advance(TDuration::Minutes(1)); + + { + size_t sampled = 0; + for (size_t i = 0; i < 750; ++i) { + auto [state, level] = controls.HandleTracing(false, RandomChoice(discriminators)); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::EXTERNAL); + if (state == TTracingControls::SAMPLED) { + ++sampled; + UNIT_ASSERT_EQUAL(level, 5); + } + timeProvider->Advance(TDuration::Seconds(1)); + } + UNIT_ASSERT(sampled >= 210 && sampled <= 300); + } + } + + Y_UNIT_TEST(RequestTypeThrottler) { + TTenantTestRuntime runtime(DefaultConsoleTestConfig()); + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + auto [controls, configurator] = CreateSamplingThrottlingConfigurator(10, timeProvider); + NKikimrConfig::TTracingConfig cfg; + { + auto rule = cfg.AddExternalThrottling(); + rule->SetMaxTracesBurst(5); + rule->SetMaxTracesPerMinute(120); + rule->MutableScope()->AddRequestTypes()->assign("KeyValue.ExecuteTransaction"); + } + InitJaegerTracingConfigurator(runtime, std::move(configurator), cfg); + + for (size_t i = 0; i < 100; ++i) { + auto [state, _] = controls.HandleTracing(false, {}); + UNIT_ASSERT_EQUAL(state, TTracingControls::OFF); // No requests are sampled + } + + UNIT_ASSERT_EQUAL(controls.HandleTracing(true, {}).first, TTracingControls::OFF); // No request type + UNIT_ASSERT_EQUAL(controls.HandleTracing(true, {.RequestType = ERequestType::KEYVALUE_READ}).first, + TTracingControls::OFF); // Wrong request type + std::array executeTransactionDiscriminators{ + TRequestDiscriminator{ + .RequestType = ERequestType::KEYVALUE_EXECUTETRANSACTION, + }, + TRequestDiscriminator{ + .RequestType = ERequestType::KEYVALUE_EXECUTETRANSACTION, + .Database = "/Root/test", + } + }; + + for (size_t i = 0; i < 6; ++i) { + UNIT_ASSERT_EQUAL( + controls.HandleTracing(true, RandomChoice(executeTransactionDiscriminators)).first, + TTracingControls::EXTERNAL); + } + UNIT_ASSERT_EQUAL( + controls.HandleTracing(true, RandomChoice(executeTransactionDiscriminators)).first, + TTracingControls::OFF); + timeProvider->Advance(TDuration::MilliSeconds(1500)); + for (size_t i = 0; i < 3; ++i) { + UNIT_ASSERT_EQUAL( + controls.HandleTracing(true, RandomChoice(executeTransactionDiscriminators)).first, + TTracingControls::EXTERNAL); + } + UNIT_ASSERT_EQUAL( + controls.HandleTracing(true, RandomChoice(executeTransactionDiscriminators)).first, + TTracingControls::OFF); + + WaitForUpdate(runtime); // Initial update + cfg.MutableExternalThrottling(0)->SetMaxTracesPerMinute(10); + cfg.MutableExternalThrottling(0)->SetMaxTracesBurst(2); + ConfigureAndWaitUpdate(runtime, cfg, 1); + + for (size_t i = 0; i < 3; ++i) { + UNIT_ASSERT_EQUAL( + controls.HandleTracing(true, RandomChoice(executeTransactionDiscriminators)).first, + TTracingControls::EXTERNAL); + } + auto [state, _] = controls.HandleTracing(true, RandomChoice(executeTransactionDiscriminators)); + UNIT_ASSERT_EQUAL( + state, + TTracingControls::OFF); + + timeProvider->Advance(TDuration::Seconds(12)); + for (size_t i = 0; i < 2; ++i) { + UNIT_ASSERT_EQUAL( + controls.HandleTracing(true, RandomChoice(executeTransactionDiscriminators)).first, + TTracingControls::EXTERNAL); + } + UNIT_ASSERT_EQUAL( + controls.HandleTracing(true, RandomChoice(executeTransactionDiscriminators)).first, + TTracingControls::OFF); + + timeProvider->Advance(TDuration::Seconds(60)); + for (size_t i = 0; i < 3; ++i) { + UNIT_ASSERT_EQUAL( + controls.HandleTracing(true, RandomChoice(executeTransactionDiscriminators)).first, + TTracingControls::EXTERNAL); + } + UNIT_ASSERT_EQUAL( + controls.HandleTracing(true, RandomChoice(executeTransactionDiscriminators)).first, + TTracingControls::OFF); + } + + Y_UNIT_TEST(RequestTypeSampler) { + TTenantTestRuntime runtime(DefaultConsoleTestConfig()); + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + auto [controls, configurator] = CreateSamplingThrottlingConfigurator(10, timeProvider); + NKikimrConfig::TTracingConfig cfg; + { + auto rule = cfg.AddSampling(); + rule->SetMaxTracesBurst(5); + rule->SetMaxTracesPerMinute(120); + rule->SetFraction(0.5); + rule->SetLevel(10); + rule->MutableScope()->AddRequestTypes()->assign("KeyValue.ExecuteTransaction"); + } + InitJaegerTracingConfigurator(runtime, std::move(configurator), cfg); + + for (size_t i = 0; i < 1000; ++i) { + auto [state, level] = controls.HandleTracing(false, {}); + UNIT_ASSERT_EQUAL(state, TTracingControls::OFF); + } + + for (size_t i = 0; i < 10; ++i) { + UNIT_ASSERT_EQUAL(controls.HandleTracing(false, {}).first, TTracingControls::OFF); // No request type + UNIT_ASSERT_EQUAL(controls.HandleTracing(false, {.RequestType = ERequestType::KEYVALUE_READ}).first, + TTracingControls::OFF); // Wrong request type + } + std::array executeTransactionDiscriminators{ + TRequestDiscriminator { + .RequestType = ERequestType::KEYVALUE_EXECUTETRANSACTION, + }, + TRequestDiscriminator { + .RequestType = ERequestType::KEYVALUE_EXECUTETRANSACTION, + .Database = "/Root/test", + } + }; + + { + uint64_t sampled = 0; + for (size_t i = 0; i < 1000; ++i) { + auto [state, level] = controls.HandleTracing(false, RandomChoice(executeTransactionDiscriminators)); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::EXTERNAL); + if (state == TTracingControls::SAMPLED) { + ++sampled; + UNIT_ASSERT_EQUAL(level, 10); + timeProvider->Advance(TDuration::MilliSeconds(500)); + } + } + UNIT_ASSERT(sampled >= 400 && sampled <= 600); + } + + { + uint64_t sampled = 0; + for (size_t i = 0; i < 1000; ++i) { + auto [state, level] = controls.HandleTracing(false, RandomChoice(executeTransactionDiscriminators)); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::EXTERNAL); + if (state == TTracingControls::SAMPLED) { + ++sampled; + UNIT_ASSERT_EQUAL(level, 10); + } + timeProvider->Advance(TDuration::MilliSeconds(125)); + } + UNIT_ASSERT(sampled >= 190 && sampled <= 260); + } + for (size_t i = 0; i < 50; ++i) { + controls.HandleTracing(false, RandomChoice(executeTransactionDiscriminators)); + } + for (size_t i = 0; i < 50; ++i) { + UNIT_ASSERT_EQUAL(controls.HandleTracing(false, RandomChoice(executeTransactionDiscriminators)).first, TTracingControls::OFF); + } + timeProvider->Advance(TDuration::Seconds(10)); + + WaitForUpdate(runtime); // Initial update + { + auto& rule = *cfg.MutableSampling(0); + rule.SetMaxTracesPerMinute(10); + rule.SetMaxTracesBurst(2); + rule.SetLevel(9); + rule.SetFraction(0.25); + rule.MutableScope()->MutableRequestTypes(0)->assign("KeyValue.ReadRange"); + } + ConfigureAndWaitUpdate(runtime, cfg, 1); + + std::array readRangeDiscriminators{ + TRequestDiscriminator{ + .RequestType = ERequestType::KEYVALUE_READRANGE, + }, + TRequestDiscriminator{ + .RequestType = ERequestType::KEYVALUE_READRANGE, + .Database = "/Root/test2", + } + }; + + for (size_t i = 0; i < 20; ++i) { + UNIT_ASSERT_EQUAL(controls.HandleTracing(false, RandomChoice(executeTransactionDiscriminators)).first, TTracingControls::OFF); + } + { + uint64_t sampled = 0; + for (size_t i = 0; i < 1000; ++i) { + auto [state, level] = controls.HandleTracing(false, RandomChoice(readRangeDiscriminators)); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::EXTERNAL); + if (state == TTracingControls::SAMPLED) { + ++sampled; + UNIT_ASSERT_EQUAL(level, 9); + } + timeProvider->Advance(TDuration::Seconds(6)); + } + UNIT_ASSERT(sampled >= 190 && sampled <= 310); + } + } + + Y_UNIT_TEST(SamplingSameScope) { + TTenantTestRuntime runtime(DefaultConsoleTestConfig()); + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + auto [controls, configurator] = CreateSamplingThrottlingConfigurator(10, timeProvider); + NKikimrConfig::TTracingConfig cfg; + { + auto rule = cfg.AddSampling(); + rule->SetMaxTracesBurst(10); + rule->SetMaxTracesPerMinute(120); + rule->SetFraction(0.5); + rule->SetLevel(8); + } + { + auto rule = cfg.AddSampling(); + rule->SetMaxTracesBurst(10); + rule->SetMaxTracesPerMinute(60); + rule->SetFraction(1. / 3); + rule->SetLevel(10); + } + InitJaegerTracingConfigurator(runtime, std::move(configurator), cfg); + + { + size_t level8 = 0; + size_t level10 = 0; + for (size_t i = 0; i < 1500; ++i) { + auto [state, level] = controls.HandleTracing(false, {}); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::EXTERNAL); + if (state == TTracingControls::SAMPLED) { + UNIT_ASSERT(level == 8 || level == 10); + if (level == 8) { + ++level8; + } else { + ++level10; + } + } + timeProvider->Advance(TDuration::Seconds(1)); + } + UNIT_ASSERT(level8 >= 450 && level8 <= 570); + UNIT_ASSERT(level10 >= 450 && level10 <= 570); + } + timeProvider->Advance(TDuration::Minutes(1)); + + { + size_t level8 = 0; + size_t level10 = 0; + for (size_t i = 0; i < 1500; ++i) { + auto [state, level] = controls.HandleTracing(false, {}); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::EXTERNAL); + if (state == TTracingControls::SAMPLED) { + UNIT_ASSERT(level == 8 || level == 10); + if (level == 8) { + ++level8; + } else { + ++level10; + } + } + timeProvider->Advance(TDuration::MilliSeconds(250)); + } + UNIT_ASSERT(level8 >= 470 && level8 <= 760); + UNIT_ASSERT(level10 >= 340 && level10 <= 385); + } + } + + Y_UNIT_TEST(ThrottlingByDb) { + TTenantTestRuntime runtime(DefaultConsoleTestConfig()); + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + auto [controls, configurator] = CreateSamplingThrottlingConfigurator(10, timeProvider); + NKikimrConfig::TTracingConfig cfg; + { + auto rule = cfg.AddExternalThrottling(); + rule->SetMaxTracesBurst(10); + rule->SetMaxTracesPerMinute(60); + rule->MutableScope()->MutableDatabase()->assign("/Root/db1"); + } + InitJaegerTracingConfigurator(runtime, std::move(configurator), cfg); + + std::array discriminators{ + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_READROWS, + .Database = "/Root/db1", + }, + TRequestDiscriminator{ + .Database = "/Root/db1", + }, + }; + + { + size_t traced = 0; + for (size_t i = 0; i < 100; ++i) { + auto [state, _] = controls.HandleTracing(true, RandomChoice(discriminators)); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::SAMPLED); + if (state == TTracingControls::EXTERNAL) { + ++traced; + } + timeProvider->Advance(TDuration::Seconds(1)); + } + UNIT_ASSERT_EQUAL(traced, 100); + + for (size_t i = 0; i < 12; ++i) { + auto [state, _] = controls.HandleTracing(true, RandomChoice(discriminators)); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::SAMPLED); + if (state == TTracingControls::EXTERNAL) { + ++traced; + } + } + UNIT_ASSERT_EQUAL(traced, 111); + } + + cfg.MutableExternalThrottling(0)->MutableScope()->AddRequestTypes()->assign("Table.ReadRows"); + WaitForUpdate(runtime); // Initial update + ConfigureAndWaitUpdate(runtime, cfg, 1); + timeProvider->Advance(TDuration::Minutes(1)); + + { + size_t traced = 0; + for (size_t i = 0; i < 12; ++i) { + auto [state, _] = controls.HandleTracing(true, discriminators[0]); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::SAMPLED); + if (state == TTracingControls::EXTERNAL) { + ++traced; + } + } + UNIT_ASSERT_EQUAL(traced, 11); + timeProvider->Advance(TDuration::Minutes(1)); + + std::array notMatchingDiscriminators{ + discriminators[1], + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_DROPTABLE, + .Database = "/Root/db1", + }, + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_READROWS, + .Database = "/Root/db2", + }, + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_READROWS, + }, + TRequestDiscriminator{ + .Database = "/Root/db1", + }, + TRequestDiscriminator{}, + }; + + for (auto& discriminator : notMatchingDiscriminators) { + UNIT_ASSERT_EQUAL(controls.HandleTracing(true, discriminator).first, TTracingControls::OFF); + timeProvider->Advance(TDuration::Seconds(1)); + } + } + } + + Y_UNIT_TEST(SamplingByDb) { + TTenantTestRuntime runtime(DefaultConsoleTestConfig()); + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + auto [controls, configurator] = CreateSamplingThrottlingConfigurator(10, timeProvider); + NKikimrConfig::TTracingConfig cfg; + { + auto rule = cfg.AddSampling(); + rule->SetMaxTracesBurst(10); + rule->SetMaxTracesPerMinute(60); + rule->SetLevel(0); + rule->SetFraction(0.5); + rule->MutableScope()->MutableDatabase()->assign("/Root/db1"); + } + InitJaegerTracingConfigurator(runtime, std::move(configurator), cfg); + + std::array discriminators{ + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_READROWS, + .Database = "/Root/db1", + }, + TRequestDiscriminator{ + .Database = "/Root/db1", + }, + }; + + { + size_t sampled = 0; + for (size_t i = 0; i < 1000; ++i) { + auto [state, level] = controls.HandleTracing(false, RandomChoice(discriminators)); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::EXTERNAL); + if (state == TTracingControls::SAMPLED) { + UNIT_ASSERT_EQUAL(level, 0); + ++sampled; + } + timeProvider->Advance(TDuration::Seconds(1)); + } + UNIT_ASSERT(sampled >= 400 && sampled <= 600); + + } + { + size_t sampled = 0; + for (size_t i = 0; i < 60; ++i) { + auto [state, level] = controls.HandleTracing(false, RandomChoice(discriminators)); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::EXTERNAL); + if (state == TTracingControls::SAMPLED) { + UNIT_ASSERT_EQUAL(level, 0); + ++sampled; + } + } + UNIT_ASSERT_EQUAL(sampled, 11); + } + + cfg.MutableSampling(0)->MutableScope()->AddRequestTypes()->assign("Table.ReadRows"); + WaitForUpdate(runtime); // Initial update + ConfigureAndWaitUpdate(runtime, cfg, 1); + timeProvider->Advance(TDuration::Minutes(1)); + + { + size_t sampled = 0; + for (size_t i = 0; i < 1000; ++i) { + auto [state, level] = controls.HandleTracing(false, discriminators[0]); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::EXTERNAL); + if (state == TTracingControls::SAMPLED) { + UNIT_ASSERT_EQUAL(level, 0); + ++sampled; + } + timeProvider->Advance(TDuration::Seconds(1)); + } + UNIT_ASSERT(sampled >= 400 && sampled <= 600); + timeProvider->Advance(TDuration::Minutes(1)); + + std::array notMatchingDiscriminators{ + discriminators[1], + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_DROPTABLE, + .Database = "/Root/db1", + }, + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_READROWS, + .Database = "/Root/db2", + }, + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_READROWS, + }, + TRequestDiscriminator{ + .Database = "/Root/db1", + }, + TRequestDiscriminator{}, + }; + + for (size_t i = 0; i < 10; ++i) { + for (auto& discriminator : notMatchingDiscriminators) { + UNIT_ASSERT_EQUAL(controls.HandleTracing(false, discriminator).first, TTracingControls::OFF); + timeProvider->Advance(TDuration::Seconds(1)); + } + } + } + } + + Y_UNIT_TEST(SharedThrottlingLimits) { + TTenantTestRuntime runtime(DefaultConsoleTestConfig()); + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + auto [controls, configurator] = CreateSamplingThrottlingConfigurator(10, timeProvider); + NKikimrConfig::TTracingConfig cfg; + { + auto rule = cfg.AddExternalThrottling(); + rule->SetMaxTracesBurst(10); + rule->SetMaxTracesPerMinute(60); + auto scope = rule->MutableScope(); + scope->AddRequestTypes("Table.DropTable"); + scope->AddRequestTypes("Table.ReadRows"); + scope->AddRequestTypes("Table.AlterTable"); + } + InitJaegerTracingConfigurator(runtime, std::move(configurator), cfg); + + std::array matchingDiscriminators{ + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_DROPTABLE, + }, + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_ALTERTABLE, + .Database = "/Root/db1", + }, + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_READROWS, + .Database = "/Root/db2", + }, + }; + + std::array notMatchingDiscriminators{ + TRequestDiscriminator{}, + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_KEEPALIVE, + }, + }; + + for (size_t i = 0; i < 21; ++i) { + UNIT_ASSERT_EQUAL(controls.HandleTracing(false, RandomChoice(matchingDiscriminators)).first, TTracingControls::OFF); + UNIT_ASSERT_EQUAL(controls.HandleTracing(true, RandomChoice(matchingDiscriminators)).first, TTracingControls::EXTERNAL); + UNIT_ASSERT_EQUAL(controls.HandleTracing(true, RandomChoice(notMatchingDiscriminators)).first, TTracingControls::OFF); + timeProvider->Advance(TDuration::MilliSeconds(500)); + } + UNIT_ASSERT_EQUAL(controls.HandleTracing(true, RandomChoice(matchingDiscriminators)).first, TTracingControls::OFF); + } + + Y_UNIT_TEST(SharedSamplingLimits) { + TTenantTestRuntime runtime(DefaultConsoleTestConfig()); + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + auto [controls, configurator] = CreateSamplingThrottlingConfigurator(10, timeProvider); + NKikimrConfig::TTracingConfig cfg; + { + auto rule = cfg.AddSampling(); + rule->SetMaxTracesBurst(10); + rule->SetMaxTracesPerMinute(60); + rule->SetLevel(8); + rule->SetFraction(0.5); + auto scope = rule->MutableScope(); + scope->AddRequestTypes("Table.DropTable"); + scope->AddRequestTypes("Table.ReadRows"); + scope->AddRequestTypes("Table.AlterTable"); + } + InitJaegerTracingConfigurator(runtime, std::move(configurator), cfg); + + std::array matchingDiscriminators{ + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_DROPTABLE, + }, + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_ALTERTABLE, + .Database = "/Root/db1", + }, + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_READROWS, + .Database = "/Root/db2", + }, + }; + + std::array notMatchingDiscriminators{ + TRequestDiscriminator{}, + TRequestDiscriminator{ + .RequestType = ERequestType::TABLE_KEEPALIVE, + }, + }; + + { + size_t sampled = 0; + for (size_t i = 0; i < 1000; ++i) { + auto [state, level] = controls.HandleTracing(false, RandomChoice(matchingDiscriminators)); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::EXTERNAL); + if (state == TTracingControls::SAMPLED) { + UNIT_ASSERT_EQUAL(level, 8); + ++sampled; + } + UNIT_ASSERT_EQUAL(controls.HandleTracing(false, RandomChoice(notMatchingDiscriminators)).first, TTracingControls::OFF); + timeProvider->Advance(TDuration::Seconds(1)); + } + UNIT_ASSERT(sampled >= 400 && sampled <= 600); + } + timeProvider->Advance(TDuration::Minutes(1)); + + { + size_t sampled = 0; + for (size_t i = 0; i < 65; ++i) { + auto [state, level] = controls.HandleTracing(false, RandomChoice(matchingDiscriminators)); + UNIT_ASSERT_UNEQUAL(state, TTracingControls::EXTERNAL); + if (state == TTracingControls::SAMPLED) { + UNIT_ASSERT_EQUAL(level, 8); + ++sampled; + } + } + UNIT_ASSERT_EQUAL(sampled, 11); + } + } + +} +} // namespace NKikimr diff --git a/ydb/core/cms/console/ut/ya.make b/ydb/core/cms/console/ut/ya.make index 2daf90fac99a..88788f1b9324 100644 --- a/ydb/core/cms/console/ut/ya.make +++ b/ydb/core/cms/console/ut/ya.make @@ -25,6 +25,7 @@ SRCS( log_settings_configurator_ut.cpp modifications_validator_ut.cpp net_classifier_updater_ut.cpp + jaeger_tracing_configurator_ut.cpp ) END() diff --git a/ydb/core/cms/console/ya.make b/ydb/core/cms/console/ya.make index 1f786284e430..80a68a361dd9 100644 --- a/ydb/core/cms/console/ya.make +++ b/ydb/core/cms/console/ya.make @@ -56,6 +56,8 @@ SRCS( http.h immediate_controls_configurator.cpp immediate_controls_configurator.h + jaeger_tracing_configurator.cpp + jaeger_tracing_configurator.h log_settings_configurator.cpp log_settings_configurator.h logger.cpp diff --git a/ydb/core/cms/json_proxy_proto.h b/ydb/core/cms/json_proxy_proto.h index 918e7c638fcb..e5bceff34fba 100644 --- a/ydb/core/cms/json_proxy_proto.h +++ b/ydb/core/cms/json_proxy_proto.h @@ -76,16 +76,6 @@ class TJsonProxyProto : public TActorBootstrapped<TJsonProxyProto> { return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TSchemeShardControls::descriptor(), ctx); else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTCMallocControls") return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTCMallocControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTracingControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTracingControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTracingControls.TSamplingThrottlingOptions") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTracingControls::TSamplingThrottlingOptions::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTracingControls.TSamplingThrottlingOptions.TThrottlingOptions") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTracingControls::TSamplingThrottlingOptions::TThrottlingOptions::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTracingControls.TSamplingThrottlingOptions.TSamplingOptions") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTracingControls::TSamplingThrottlingOptions::TSamplingOptions::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTracingControls.TKeyValue") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTracingControls::TKeyValue::descriptor(), ctx); else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTabletControls") return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTabletControls::descriptor(), ctx); } diff --git a/ydb/core/control/common_controls/tracing_control.cpp b/ydb/core/control/common_controls/tracing_control.cpp deleted file mode 100644 index 536738dd289f..000000000000 --- a/ydb/core/control/common_controls/tracing_control.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include "tracing_control.h" - -#include <ydb/core/control/immediate_control_board_impl.h> -#include <ydb/core/protos/config.pb.h> -#include <library/cpp/random_provider/random_provider.h> - -namespace NKikimr { - -namespace { - -const NKikimrConfig::TImmediateControlOptions& GetImmediateControlOptionsForField( - const google::protobuf::Descriptor& descriptor, TString fieldName) { - auto field = descriptor.FindFieldByName(fieldName); - Y_ABORT_UNLESS(field); - auto& fieldOptions = field->options(); - return fieldOptions.GetExtension(NKikimrConfig::ControlOptions); -} - -TThrottler CreateThrottler(TIntrusivePtr<TControlBoard>& icb, TIntrusivePtr<ITimeProvider> timeProvider, TString domain) { - TControlWrapper maxRatePerMinute; - TControlWrapper maxBurst; - - const std::array<std::pair<TControlWrapper&, TStringBuf>, 2> controls = {{ - {maxRatePerMinute, "MaxRatePerMinute"}, - {maxBurst, "MaxBurst"}, - }}; - const auto& throttlingOptions = *NKikimrConfig::TImmediateControlsConfig::TTracingControls::TSamplingThrottlingOptions::TThrottlingOptions::descriptor(); - for (auto& [control, fieldName] : controls) { - const auto& controlOptions = GetImmediateControlOptionsForField(throttlingOptions, TString(fieldName)); - - control.Reset(controlOptions.GetDefaultValue(), controlOptions.GetMinValue(), controlOptions.GetMaxValue()); - icb->RegisterSharedControl(control, domain + "." + fieldName); - } - - return TThrottler(std::move(maxRatePerMinute), std::move(maxBurst), std::move(timeProvider)); -} - -} - -TTracingControl::TTracingControl(TIntrusivePtr<TControlBoard>& icb, TIntrusivePtr<ITimeProvider> timeProvider, - TIntrusivePtr<IRandomProvider>& randomProvider, TString controlDomain) -{ - SampledThrottler = CreateThrottler(icb, timeProvider, controlDomain + ".SampledThrottling"); - ExternalThrottler = CreateThrottler(icb, timeProvider, controlDomain + ".ExternalThrottling"); - - TControlWrapper samplingPPM; - const std::array<std::pair<TControlWrapper&, TStringBuf>, 2> controls = {{ - {samplingPPM, "PPM"}, - {SampledLevel, "Level"}, - }}; - - const auto& samplingOptions = *NKikimrConfig::TImmediateControlsConfig::TTracingControls::TSamplingThrottlingOptions::TSamplingOptions::descriptor(); - for (auto [control, name] : controls) { - const auto& controlOptions = GetImmediateControlOptionsForField(samplingOptions, TString(name)); - control.Reset(controlOptions.GetDefaultValue(), controlOptions.GetMinValue(), controlOptions.GetMaxValue()); - icb->RegisterSharedControl(control, controlDomain + ".Sampling." + name); - } - - Sampler = TSampler(std::move(samplingPPM), randomProvider->GenRand64()); -} - -} // namespace NKikimr diff --git a/ydb/core/control/common_controls/tracing_control.h b/ydb/core/control/common_controls/tracing_control.h deleted file mode 100644 index 56b7f45966da..000000000000 --- a/ydb/core/control/common_controls/tracing_control.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include <ydb/core/base/appdata_fwd.h> -#include <ydb/core/control/immediate_control_board_sampler.h> -#include <ydb/core/control/immediate_control_board_throttler.h> - -namespace NKikimr { - -class TTracingControl { -public: - TTracingControl(TIntrusivePtr<TControlBoard>& icb, TIntrusivePtr<ITimeProvider> timeProvider, - TIntrusivePtr<IRandomProvider>& randomProvider, TString controlDomain); - - bool SampleThrottle() { - return Sampler.Sample() && !SampledThrottler.Throttle(); - } - - bool ThrottleExternal() { - return ExternalThrottler.Throttle(); - } - - ui8 SampledVerbosity() const { - return SampledLevel; - } - -private: - TSampler Sampler; - TThrottler SampledThrottler; - TThrottler ExternalThrottler; - TControlWrapper SampledLevel; -}; - -} // namespace NKikimr diff --git a/ydb/core/control/common_controls/ya.make b/ydb/core/control/common_controls/ya.make deleted file mode 100644 index afc6df1f79d2..000000000000 --- a/ydb/core/control/common_controls/ya.make +++ /dev/null @@ -1,13 +0,0 @@ -LIBRARY() - -PEERDIR( - ydb/library/actors/wilson - ydb/core/protos -) - -SRCS( - tracing_control.h - tracing_control.cpp -) - -END() diff --git a/ydb/core/control/immediate_control_board_sampler.h b/ydb/core/control/immediate_control_board_sampler.h deleted file mode 100644 index e6d6784540b7..000000000000 --- a/ydb/core/control/immediate_control_board_sampler.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include <ydb/core/control/immediate_control_board_wrapper.h> - -namespace NKikimr { - -class TSampler { -public: - TSampler() : Rng(0) {} - - TSampler(TControlWrapper samplingPPM, ui64 seed) - : SamplingPPM(std::move(samplingPPM)) - , Rng(seed) - {} - - bool Sample() { - return Rng() % 1'000'000 < SamplingPPM; - } - -private: - TControlWrapper SamplingPPM; - TReallyFastRng32 Rng; -}; - -} // namespace NKikimr diff --git a/ydb/core/control/immediate_control_board_sampler_ut.cpp b/ydb/core/control/immediate_control_board_sampler_ut.cpp deleted file mode 100644 index 5df3cbe18bfd..000000000000 --- a/ydb/core/control/immediate_control_board_sampler_ut.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include "immediate_control_board_sampler.h" - -#include <library/cpp/testing/unittest/registar.h> - -namespace NKikimr { - -Y_UNIT_TEST_SUITE(SamplingControlTests) { - ui32 RunTrials(TSampler& sampler, ui32 trials) { - ui32 cnt = 0; - for (ui32 i = 0; i < trials; ++i) { - if (sampler.Sample()) { - ++cnt; - } - } - return cnt; - } - - Y_UNIT_TEST(Simple) { - TControlWrapper control(500'000, 0, 1'000'000); - TSampler sampler(control, 42); - - auto samples = RunTrials(sampler, 100'000); - UNIT_ASSERT_GE(samples, 48'000); - UNIT_ASSERT_LE(samples, 52'000); - } - - Y_UNIT_TEST(EdgeCaseLower) { - TControlWrapper control(0, 0, 1'000'000); - TSampler sampler(control, 42); - - auto samples = RunTrials(sampler, 100'000); - UNIT_ASSERT_EQUAL(samples, 0); - } - - Y_UNIT_TEST(EdgeCaseUpper) { - TControlWrapper control(1'000'000, 0, 1'000'000); - TSampler sampler(control, 42); - - auto samples = RunTrials(sampler, 100'000); - UNIT_ASSERT_EQUAL(samples, 100'000); - } - - Y_UNIT_TEST(ChangingControl) { - TControlWrapper control(250'000, 0, 1'000'000); - TSampler sampler(control, 42); - - { - auto samples = RunTrials(sampler, 100'000); - UNIT_ASSERT_GE(samples, 23'000); - UNIT_ASSERT_LE(samples, 27'000); - } - - control = 750'000; - { - auto samples = RunTrials(sampler, 100'000); - UNIT_ASSERT_GE(samples, 73'000); - UNIT_ASSERT_LE(samples, 77'000); - } - } -} - -} // namespace NKikimr diff --git a/ydb/core/control/immediate_control_board_throttler.h b/ydb/core/control/immediate_control_board_throttler.h deleted file mode 100644 index c3ee83bf0f43..000000000000 --- a/ydb/core/control/immediate_control_board_throttler.h +++ /dev/null @@ -1,66 +0,0 @@ -#pragma once - -#include <ydb/core/control/immediate_control_board_wrapper.h> -#include <library/cpp/time_provider/time_provider.h> - -namespace NKikimr { - -class TThrottler { -public: - TThrottler() = default; - - TThrottler(TControlWrapper maxRatePerMinute, TControlWrapper maxBurst, - TIntrusivePtr<ITimeProvider> timeProvider) - : TimeProvider(std::move(timeProvider)) - , MaxRatePerMinute(std::move(maxRatePerMinute)) - , MaxBurst(std::move(maxBurst)) - , LastUpdate(TimeProvider->Now()) - {} - - bool Throttle() { - auto maxRatePerMinute = static_cast<i64>(MaxRatePerMinute); - auto maxBurst = static_cast<i64>(MaxBurst); - auto maxTotal = maxBurst + 1; - CurrentBurst = std::min(CurrentBurst, maxTotal); - if (maxRatePerMinute == 0) { - return true; - } - - auto now = TimeProvider->Now(); - if (now < LastUpdate) { - return true; - } - - const auto deltaBetweenSends = TDuration::Minutes(1) / maxRatePerMinute; - UpdateStats(now, deltaBetweenSends); - - if (CurrentBurst < maxTotal) { - CurrentBurst += 1; - return false; - } - - return true; - } - -private: - void UpdateStats(TInstant now, TDuration deltaBetweenSends) { - i64 decrease = (now - LastUpdate) / deltaBetweenSends; - decrease = std::min(decrease, CurrentBurst); - Y_ABORT_UNLESS(decrease >= 0); - CurrentBurst -= decrease; - LastUpdate += decrease * deltaBetweenSends; - if (CurrentBurst == 0) { - LastUpdate = now; - } - } - - TIntrusivePtr<ITimeProvider> TimeProvider; - - TControlWrapper MaxRatePerMinute; - TControlWrapper MaxBurst; - - TInstant LastUpdate = TInstant::Zero(); - i64 CurrentBurst = 0; -}; - -} // namespace NKikimr diff --git a/ydb/core/control/immediate_control_board_throttler_ut.cpp b/ydb/core/control/immediate_control_board_throttler_ut.cpp deleted file mode 100644 index 3a5e40edf532..000000000000 --- a/ydb/core/control/immediate_control_board_throttler_ut.cpp +++ /dev/null @@ -1,126 +0,0 @@ -#include "immediate_control_board_throttler.h" - -#include <library/cpp/testing/unittest/registar.h> - -namespace NKikimr { - -class TTimeProviderMock : public ITimeProvider { -public: - TTimeProviderMock(TInstant now) : CurrentTime(now) {} - - void Advance(TDuration delta) { - CurrentTime += delta; - } - - TInstant Now() final { - return CurrentTime; - } - -private: - TInstant CurrentTime; -}; - -Y_UNIT_TEST_SUITE(ThrottlerControlTests) { - void CheckAtLeast(TThrottler& throttler, ui32 n) { - for (ui32 i = 0; i < n; ++i) { - UNIT_ASSERT(!throttler.Throttle()); - } - } - - void CheckExact(TThrottler& throttler, ui32 n) { - CheckAtLeast(throttler, n); - UNIT_ASSERT(throttler.Throttle()); - } - - Y_UNIT_TEST(Simple) { - TControlWrapper maxPerMinute(6, 0, 180); - TControlWrapper maxBurst(2, 0, 180); - - auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); - - TThrottler throttler(maxPerMinute, maxBurst, timeProvider); - CheckExact(throttler, 3); - CheckExact(throttler, 0); - - timeProvider->Advance(TDuration::Seconds(9)); - CheckExact(throttler, 0); - timeProvider->Advance(TDuration::Seconds(1)); - CheckExact(throttler, 1); - - timeProvider->Advance(TDuration::Seconds(15)); - CheckExact(throttler, 1); - - timeProvider->Advance(TDuration::Seconds(15)); - CheckExact(throttler, 2); - } - - Y_UNIT_TEST(LongIdle) { - TControlWrapper maxPerMinute(10, 0, 180); - TControlWrapper maxBurst(2, 0, 180); - - auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); - - TThrottler throttler(maxPerMinute, maxBurst, timeProvider); - CheckAtLeast(throttler, 3); - - timeProvider->Advance(TDuration::Hours(1)); - CheckExact(throttler, 3); - } - - Y_UNIT_TEST(Overflow) { - TControlWrapper maxPerMinute(6'000, 0, 6'000); - TControlWrapper maxBurst(6'000, 0, 6'000); - - auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); - - TThrottler throttler(maxPerMinute, maxBurst, timeProvider); - CheckExact(throttler, 6'001); - - timeProvider->Advance(TDuration::Days(365 * 10)); - - CheckExact(throttler, 6'001); - } - - Y_UNIT_TEST(ChangingControls) { - TControlWrapper maxPerMinute(6, 0, 180); - TControlWrapper maxBurst(2, 0, 180); - - auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); - - TThrottler throttler(maxPerMinute, maxBurst, timeProvider); - CheckExact(throttler, 3); - - maxBurst = 4; - CheckExact(throttler, 2); - - maxBurst = 0; - CheckExact(throttler, 0); - - timeProvider->Advance(TDuration::Seconds(9)); - CheckExact(throttler, 0); - timeProvider->Advance(TDuration::Seconds(1)); - CheckExact(throttler, 1); - - maxPerMinute = 12 * 60; - timeProvider->Advance(TDuration::Seconds(1)); - CheckExact(throttler, 1); - - maxBurst = 20; - - timeProvider->Advance(TDuration::Seconds(3)); - CheckExact(throttler, 21); - - maxBurst = 0; - timeProvider->Advance(TDuration::Seconds(59)); - CheckAtLeast(throttler, 1); - maxPerMinute = 1; - CheckExact(throttler, 0); - timeProvider->Advance(TDuration::Minutes(1)); - CheckExact(throttler, 1); - - maxBurst = 2; - CheckExact(throttler, 2); - } -} - -} // namespace NKikimr diff --git a/ydb/core/control/ut/ya.make b/ydb/core/control/ut/ya.make index ede54f7d8c00..1e4885a42485 100644 --- a/ydb/core/control/ut/ya.make +++ b/ydb/core/control/ut/ya.make @@ -22,8 +22,6 @@ PEERDIR( SRCS( immediate_control_board_ut.cpp immediate_control_board_actor_ut.cpp - immediate_control_board_sampler_ut.cpp - immediate_control_board_throttler_ut.cpp ) END() diff --git a/ydb/core/control/ya.make b/ydb/core/control/ya.make index 4faca2369cf5..8c1c83bff961 100644 --- a/ydb/core/control/ya.make +++ b/ydb/core/control/ya.make @@ -19,16 +19,10 @@ SRCS( immediate_control_board_impl.cpp immediate_control_board_impl.h immediate_control_board_wrapper.h - immediate_control_board_throttler.h - immediate_control_board_sampler.h ) END() -RECURSE( - common_controls -) - RECURSE_FOR_TESTS( ut ) diff --git a/ydb/core/driver_lib/run/factories.h b/ydb/core/driver_lib/run/factories.h index e309fda49a0f..f22be07ab484 100644 --- a/ydb/core/driver_lib/run/factories.h +++ b/ydb/core/driver_lib/run/factories.h @@ -56,7 +56,7 @@ struct TModuleFactories { std::shared_ptr<NHttpProxy::IAuthFactory> DataStreamsAuthFactory; std::vector<NKikimr::NMiniKQL::TComputationNodeFactory> AdditionalComputationNodeFactories; - std::unique_ptr<NWilson::IGrpcSigner>(*WilsonGrpcSignerFactory)(const NKikimrConfig::TTracingConfig::TAuthConfig&); + std::unique_ptr<NWilson::IGrpcSigner>(*WilsonGrpcSignerFactory)(const NKikimrConfig::TTracingConfig::TBackendConfig::TAuthConfig&); ~TModuleFactories(); }; diff --git a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp index 0dae3013e17b..4b10b0f64dc7 100644 --- a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp +++ b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp @@ -39,6 +39,7 @@ #include <ydb/core/cms/console/configs_cache.h> #include <ydb/core/cms/console/console.h> #include <ydb/core/cms/console/immediate_controls_configurator.h> +#include <ydb/core/cms/console/jaeger_tracing_configurator.h> #include <ydb/core/cms/console/log_settings_configurator.h> #include <ydb/core/cms/console/shared_cache_configurator.h> #include <ydb/core/cms/console/validators/core_validators.h> @@ -826,22 +827,69 @@ void TBasicServicesInitializer::InitializeServices(NActors::TActorSystemSetup* s } } - if (Config.HasTracingConfig()) { - const auto& tracing = Config.GetTracingConfig(); + if (Config.HasTracingConfig() && Config.GetTracingConfig().HasBackend()) { + const auto& tracingConfig = Config.GetTracingConfig(); + const auto& tracingBackend = tracingConfig.GetBackend(); + std::unique_ptr<NWilson::IGrpcSigner> grpcSigner; - if (tracing.HasAuthConfig() && Factories && Factories->WilsonGrpcSignerFactory) { - grpcSigner = Factories->WilsonGrpcSignerFactory(tracing.GetAuthConfig()); + if (tracingBackend.HasAuthConfig() && Factories && Factories->WilsonGrpcSignerFactory) { + grpcSigner = Factories->WilsonGrpcSignerFactory(tracingBackend.GetAuthConfig()); + if (!grpcSigner) { + Cerr << "Failed to initialize wilson grpc signer due to misconfiguration. Config provided: " + << tracingBackend.GetAuthConfig().DebugString() << Endl; + } + } + + std::unique_ptr<NActors::IActor> wilsonUploader; + switch (tracingBackend.GetBackendCase()) { + case NKikimrConfig::TTracingConfig::TBackendConfig::BackendCase::kOpentelemetry: { + const auto& opentelemetry = tracingBackend.GetOpentelemetry(); + if (!(opentelemetry.HasCollectorUrl() && opentelemetry.HasServiceName())) { + Cerr << "Both collector_url and service_name should be present in opentelemetry backend config" << Endl; + break; + } + + NWilson::TWilsonUploaderParams uploaderParams { + .CollectorUrl = opentelemetry.GetCollectorUrl(), + .ServiceName = opentelemetry.GetServiceName(), + .GrpcSigner = std::move(grpcSigner), + }; + + if (tracingConfig.HasUploader()) { + const auto& uploaderConfig = tracingConfig.GetUploader(); + +#ifdef GET_FIELD_FROM_CONFIG +#error Macro collision +#endif +#define GET_FIELD_FROM_CONFIG(field) \ + if (uploaderConfig.Has##field()) { \ + uploaderParams.field = uploaderConfig.Get##field(); \ + } + + GET_FIELD_FROM_CONFIG(MaxExportedSpansPerSecond) + GET_FIELD_FROM_CONFIG(MaxSpansInBatch) + GET_FIELD_FROM_CONFIG(MaxBytesInBatch) + GET_FIELD_FROM_CONFIG(MaxBatchAccumulationMilliseconds) + GET_FIELD_FROM_CONFIG(SpanExportTimeoutSeconds) + GET_FIELD_FROM_CONFIG(MaxExportRequestsInflight) + +#undef GET_FIELD_FROM_CONFIG + } + + wilsonUploader.reset(std::move(uploaderParams).CreateUploader()); + break; + } + + case NKikimrConfig::TTracingConfig::TBackendConfig::BackendCase::BACKEND_NOT_SET: { + Cerr << "No backend option was provided in tracing config" << Endl; + break; + } + } + if (wilsonUploader) { + setup->LocalServices.emplace_back( + NWilson::MakeWilsonUploaderId(), + TActorSetupCmd(wilsonUploader.release(), TMailboxType::ReadAsFilled, appData->BatchPoolId)); } - auto wilsonUploader = NWilson::WilsonUploaderParams { - .Host = tracing.GetHost(), - .Port = static_cast<ui16>(tracing.GetPort()), - .RootCA = tracing.GetRootCA(), - .ServiceName = tracing.GetServiceName(), - .GrpcSigner = std::move(grpcSigner), - }.CreateUploader(); - setup->LocalServices.emplace_back( - NWilson::MakeWilsonUploaderId(), - TActorSetupCmd(wilsonUploader, TMailboxType::ReadAsFilled, appData->BatchPoolId)); } } @@ -1616,15 +1664,22 @@ void TGRpcServicesInitializer::InitializeServices(NActors::TActorSystemSetup* se if (!IsServiceInitialized(setup, NGRpcService::CreateGRpcRequestProxyId(0))) { const size_t proxyCount = Config.HasGRpcConfig() ? Config.GetGRpcConfig().GetGRpcProxyCount() : 1UL; + NJaegerTracing::TSamplingThrottlingConfigurator tracingConfigurator(appData->TimeProvider, appData->RandomProvider); for (size_t i = 0; i < proxyCount; ++i) { auto grpcReqProxy = Config.HasGRpcConfig() && Config.GetGRpcConfig().GetSkipSchemeCheck() ? NGRpcService::CreateGRpcRequestProxySimple(Config) - : NGRpcService::CreateGRpcRequestProxy(Config, appData->Icb); + : NGRpcService::CreateGRpcRequestProxy(Config, tracingConfigurator.GetControl()); setup->LocalServices.push_back(std::pair<TActorId, TActorSetupCmd>(NGRpcService::CreateGRpcRequestProxyId(i), TActorSetupCmd(grpcReqProxy, TMailboxType::ReadAsFilled, appData->UserPoolId))); } + setup->LocalServices.push_back(std::pair<TActorId, TActorSetupCmd>( + TActorId(), + TActorSetupCmd( + NConsole::CreateJaegerTracingConfigurator(std::move(tracingConfigurator), Config.GetTracingConfig()), + TMailboxType::ReadAsFilled, + appData->UserPoolId))); } if (!IsServiceInitialized(setup, NKesus::MakeKesusProxyServiceId())) { diff --git a/ydb/core/driver_lib/run/ya.make b/ydb/core/driver_lib/run/ya.make index 63b1a7f4cc5c..62714d224329 100644 --- a/ydb/core/driver_lib/run/ya.make +++ b/ydb/core/driver_lib/run/ya.make @@ -74,6 +74,7 @@ PEERDIR( ydb/core/grpc_services/auth_processor ydb/core/health_check ydb/core/http_proxy + ydb/core/jaeger_tracing ydb/core/kesus/proxy ydb/core/kesus/tablet ydb/core/keyvalue diff --git a/ydb/core/grpc_services/base/base.h b/ydb/core/grpc_services/base/base.h index ccf75a8c5091..e70c07eb1c38 100644 --- a/ydb/core/grpc_services/base/base.h +++ b/ydb/core/grpc_services/base/base.h @@ -20,6 +20,7 @@ #include <ydb/library/yql/public/issue/yql_issue_manager.h> #include <ydb/library/aclib/aclib.h> +#include <ydb/core/jaeger_tracing/request_discriminator.h> #include <ydb/core/grpc_services/counters/proxy_counters.h> #include <ydb/core/grpc_streaming/grpc_streaming.h> #include <ydb/core/tx/scheme_board/events.h> @@ -347,6 +348,7 @@ struct TRequestAuxSettings { TRateLimiterMode RlMode = TRateLimiterMode::Off; void (*CustomAttributeProcessor)(const TSchemeBoardEvents::TDescribeSchemeResult& schemeData, ICheckerIface*) = nullptr; TAuditMode AuditMode = TAuditMode::Off; + NJaegerTracing::ERequestType RequestType = NJaegerTracing::ERequestType::UNSPECIFIED; }; // grpc_request_proxy part @@ -363,12 +365,17 @@ class IRequestProxyCtx : public virtual IRequestCtxBase { virtual void ReplyUnauthenticated(const TString& msg = "") = 0; virtual void ReplyUnavaliable() = 0; - //tracing + // tracing virtual void StartTracing(NWilson::TSpan&& span) = 0; - virtual void LegacyFinishSpan() = 0; + virtual void FinishSpan() = 0; + // Returns pointer to a state that denotes whether this request ever been a subject + // to tracing decision. CAN be nullptr + virtual bool* IsTracingDecided() = 0; // Used for per-type sampling - virtual const TString& GetInternalRequestType() const = 0; + virtual NJaegerTracing::TRequestDiscriminator GetRequestDiscriminator() const { + return NJaegerTracing::TRequestDiscriminator::EMPTY; + }; // validation virtual bool Validate(TString& error) = 0; @@ -487,10 +494,9 @@ class TRefreshTokenImpl } void StartTracing(NWilson::TSpan&& /*span*/) override {} - void LegacyFinishSpan() override {} - const TString& GetInternalRequestType() const final { - static const TString empty = ""; - return empty; + void FinishSpan() override {} + bool* IsTracingDecided() override { + return nullptr; } void UpdateAuthState(NYdbGrpc::TAuthState::EAuthState state) override { @@ -893,12 +899,12 @@ class TGRpcRequestBiStreamWrapper Span_ = std::move(span); } - void LegacyFinishSpan() override { + void FinishSpan() override { Span_.End(); } - const TString& GetInternalRequestType() const final { - return TRequest::descriptor()->full_name(); + bool* IsTracingDecided() override { + return &IsTracingDecided_; } // IRequestCtxBase @@ -919,6 +925,7 @@ class TGRpcRequestBiStreamWrapper bool RlAllowed_; IGRpcProxyCounters::TPtr Counters_; NWilson::TSpan Span_; + bool IsTracingDecided_ = false; }; template <typename TDerived> @@ -1311,10 +1318,12 @@ class TGRpcRequestWrapperImpl Span_ = std::move(span); } - void LegacyFinishSpan() override {} + void FinishSpan() override { + Span_.End(); + } - const TString& GetInternalRequestType() const final { - return TRequest::descriptor()->full_name(); + bool* IsTracingDecided() override { + return &IsTracingDecided_; } void ReplyGrpcError(grpc::StatusCode code, const TString& msg, const TString& details = "") { @@ -1374,6 +1383,7 @@ class TGRpcRequestWrapperImpl TAuditLogParts AuditLogParts; TAuditLogHook AuditLogHook; bool RequestFinished = false; + bool IsTracingDecided_ = false; }; template <ui32 TRpcId, typename TReq, typename TResp, bool IsOperation, typename TDerived> @@ -1418,7 +1428,7 @@ class TGrpcRequestCall using TRequestIface = typename std::conditional<IsOperation, IRequestOpCtx, IRequestNoOpCtx>::type; public: - static IActor* CreateRpcActor(typename std::conditional<IsOperation, IRequestOpCtx, IRequestNoOpCtx>::type* msg); + static IActor* CreateRpcActor(TRequestIface* msg); static constexpr bool IsOp = IsOperation; using TBase = std::conditional_t<TProtoHasValidate<TReq>::Value, @@ -1435,8 +1445,6 @@ class TGrpcRequestCall { } void Pass(const IFacilityProvider& facility) override { - this->Span_.End(); - try { PassMethod(std::move(std::unique_ptr<TRequestIface>(this)), facility); } catch (const std::exception& ex) { @@ -1460,6 +1468,13 @@ class TGrpcRequestCall } } + NJaegerTracing::TRequestDiscriminator GetRequestDiscriminator() const override { + return { + .RequestType = AuxSettings.RequestType, + .Database = TBase::GetDatabaseName(), + }; + } + // IRequestCtxBaseMtSafe // bool IsAuditable() const override { diff --git a/ydb/core/grpc_services/base/ya.make b/ydb/core/grpc_services/base/ya.make index 5151c40f90ba..1e94d4c16c71 100644 --- a/ydb/core/grpc_services/base/ya.make +++ b/ydb/core/grpc_services/base/ya.make @@ -11,6 +11,7 @@ PEERDIR( ydb/core/base ydb/core/grpc_services/counters ydb/core/grpc_streaming + ydb/core/jaeger_tracing ydb/public/api/protos ydb/public/sdk/cpp/client/resources ydb/library/yql/public/issue diff --git a/ydb/core/grpc_services/grpc_request_check_actor.h b/ydb/core/grpc_services/grpc_request_check_actor.h index a3e9ff044168..2e007749a916 100644 --- a/ydb/core/grpc_services/grpc_request_check_actor.h +++ b/ydb/core/grpc_services/grpc_request_check_actor.h @@ -17,6 +17,7 @@ #include <ydb/core/grpc_services/counters/proxy_counters.h> #include <ydb/core/security/secure_request.h> #include <ydb/core/tx/scheme_cache/scheme_cache.h> +#include <ydb/library/wilson_ids/wilson.h> #include <util/string/split.h> @@ -89,10 +90,11 @@ class TGrpcRequestCheckActor , Request_(std::move(request)) , Counters_(counters) , SecurityObject_(std::move(securityObject)) + , GrpcRequestBaseCtx_(Request_->Get()) , SkipCheckConnectRigths_(skipCheckConnectRigths) , FacilityProvider_(facilityProvider) + , Span_(TWilsonGrpc::RequestCheckActor, GrpcRequestBaseCtx_->GetWilsonTraceId(), "RequestCheckActor") { - GrpcRequestBaseCtx_ = Request_->Get(); TMaybe<TString> authToken = GrpcRequestBaseCtx_->GetYdbToken(); if (authToken) { TString peerName = GrpcRequestBaseCtx_->GetPeerName(); @@ -225,7 +227,8 @@ class TGrpcRequestCheckActor } void HandlePoison(TEvents::TEvPoisonPill::TPtr&) { - TBase::PassAway(); + GrpcRequestBaseCtx_->FinishSpan(); + PassAway(); } ui64 GetChannelBufferSize() const override { @@ -238,6 +241,11 @@ class TGrpcRequestCheckActor return this->RegisterWithSameMailbox(actor); } + void PassAway() override { + Span_.EndOk(); + TBase::PassAway(); + } + private: static NYql::TIssues GetRlIssues(const Ydb::RateLimiter::AcquireResourceResponse& resp) { NYql::TIssues opIssues; @@ -374,35 +382,40 @@ class TGrpcRequestCheckActor void ReplyUnauthorizedAndDie(const NYql::TIssue& issue) { GrpcRequestBaseCtx_->RaiseIssue(issue); GrpcRequestBaseCtx_->ReplyWithYdbStatus(Ydb::StatusIds::UNAUTHORIZED); - TBase::PassAway(); + GrpcRequestBaseCtx_->FinishSpan(); + PassAway(); } void ReplyUnavailableAndDie(const NYql::TIssue& issue) { GrpcRequestBaseCtx_->RaiseIssue(issue); GrpcRequestBaseCtx_->ReplyWithYdbStatus(Ydb::StatusIds::UNAVAILABLE); - TBase::PassAway(); + GrpcRequestBaseCtx_->FinishSpan(); + PassAway(); } void ReplyUnavailableAndDie(const NYql::TIssues& issue) { GrpcRequestBaseCtx_->RaiseIssues(issue); GrpcRequestBaseCtx_->ReplyWithYdbStatus(Ydb::StatusIds::UNAVAILABLE); - TBase::PassAway(); + GrpcRequestBaseCtx_->FinishSpan(); + PassAway(); } void ReplyUnauthenticatedAndDie() { GrpcRequestBaseCtx_->ReplyUnauthenticated("Unknown database"); - TBase::PassAway(); + GrpcRequestBaseCtx_->FinishSpan(); + PassAway(); } void ReplyOverloadedAndDie(const NYql::TIssue& issue) { GrpcRequestBaseCtx_->RaiseIssue(issue); GrpcRequestBaseCtx_->ReplyWithYdbStatus(Ydb::StatusIds::OVERLOADED); - TBase::PassAway(); + GrpcRequestBaseCtx_->FinishSpan(); + PassAway(); } void Continue() { if (!ValidateAndReplyOnError(GrpcRequestBaseCtx_)) { - TBase::PassAway(); + PassAway(); return; } HandleAndDie(Request_); @@ -413,8 +426,9 @@ class TGrpcRequestCheckActor // and authorization check against the database AuditRequest(GrpcRequestBaseCtx_, CheckedDatabaseName_, TBase::GetUserSID()); + GrpcRequestBaseCtx_->FinishSpan(); event->Release().Release()->Pass(*this); - TBase::PassAway(); + PassAway(); } void HandleAndDie(TAutoPtr<TEventHandle<TEvListEndpointsRequest>>&) { @@ -428,14 +442,14 @@ class TGrpcRequestCheckActor template <typename T> void HandleAndDie(T& event) { - GrpcRequestBaseCtx_->LegacyFinishSpan(); + GrpcRequestBaseCtx_->FinishSpan(); TGRpcRequestProxyHandleMethods::Handle(event, TlsActivationContext->AsActorContext()); - TBase::PassAway(); + PassAway(); } void ReplyBackAndDie() { TlsActivationContext->Send(Request_->Forward(Owner_)); - TBase::PassAway(); + PassAway(); } std::pair<bool, std::optional<NYql::TIssue>> CheckConnectRight() { @@ -512,6 +526,7 @@ class TGrpcRequestCheckActor const IFacilityProvider* FacilityProvider_; bool DmlAuditEnabled_ = false; std::unordered_set<TString> DmlAuditExpectedSubjects_; + NWilson::TSpan Span_; }; // default behavior - attributes in schema diff --git a/ydb/core/grpc_services/grpc_request_proxy.cpp b/ydb/core/grpc_services/grpc_request_proxy.cpp index ca2d67d49818..e9b9116c888e 100644 --- a/ydb/core/grpc_services/grpc_request_proxy.cpp +++ b/ydb/core/grpc_services/grpc_request_proxy.cpp @@ -8,14 +8,12 @@ #include <ydb/core/base/nameservice.h> #include <ydb/core/cms/console/configs_dispatcher.h> #include <ydb/core/cms/console/console.h> -#include <ydb/core/control/common_controls/tracing_control.h> #include <ydb/core/grpc_services/counters/proxy_counters.h> +#include <ydb/core/jaeger_tracing/sampling_throttling_control.h> #include <ydb/core/tx/tx_proxy/proxy.h> #include <ydb/core/tx/scheme_board/scheme_board.h> #include <ydb/library/wilson_ids/wilson.h> -#include <shared_mutex> - namespace NKikimr { namespace NGRpcService { @@ -61,9 +59,9 @@ class TGRpcRequestProxyImpl { using TBase = TActorBootstrapped<TGRpcRequestProxyImpl>; public: - explicit TGRpcRequestProxyImpl(const NKikimrConfig::TAppConfig& appConfig, TIntrusivePtr<TControlBoard> icb) + explicit TGRpcRequestProxyImpl(const NKikimrConfig::TAppConfig& appConfig, TIntrusivePtr<NJaegerTracing::TSamplingThrottlingControl> tracingControl) : ChannelBufferSize(appConfig.GetTableServiceConfig().GetResourceManager().GetChannelBufferSize()) - , Icb(std::move(icb)) + , TracingControl(std::move(tracingControl)) { } void Bootstrap(const TActorContext& ctx); @@ -82,8 +80,6 @@ class TGRpcRequestProxyImpl void HandleSchemeBoard(TSchemeBoardEvents::TEvNotifyDelete::TPtr& ev); void ReplayEvents(const TString& databaseName, const TActorContext& ctx); - static TString InternalRequestTypeToControlDomain(const TString& type); - TTracingControl& GetTracingControl(const TString& type); void MaybeStartTracing(IRequestProxyCtx& ctx); static bool IsAuthStateOK(const IRequestProxyCtx& ctx); @@ -92,7 +88,7 @@ class TGRpcRequestProxyImpl void Handle(TAutoPtr<TEventHandle<TEvent>>& event, const TActorContext& ctx) { IRequestProxyCtx* requestBaseCtx = event->Get(); if (ValidateAndReplyOnError(requestBaseCtx)) { - requestBaseCtx->LegacyFinishSpan(); + requestBaseCtx->FinishSpan(); TGRpcRequestProxyHandleMethods::Handle(event, ctx); } } @@ -100,7 +96,7 @@ class TGRpcRequestProxyImpl void Handle(TEvListEndpointsRequest::TPtr& event, const TActorContext& ctx) { IRequestProxyCtx* requestBaseCtx = event->Get(); if (ValidateAndReplyOnError(requestBaseCtx)) { - requestBaseCtx->LegacyFinishSpan(); + requestBaseCtx->FinishSpan(); TGRpcRequestProxy::Handle(event, ctx); } } @@ -108,6 +104,7 @@ class TGRpcRequestProxyImpl void Handle(TEvProxyRuntimeEvent::TPtr& event, const TActorContext&) { IRequestProxyCtx* requestBaseCtx = event->Get(); if (ValidateAndReplyOnError(requestBaseCtx)) { + requestBaseCtx->FinishSpan(); event->Release().Release()->Pass(*this); } } @@ -139,22 +136,21 @@ class TGRpcRequestProxyImpl return true; } - template <typename TEvent> + template<class TEvent> void PreHandle(TAutoPtr<TEventHandle<TEvent>>& event, const TActorContext& ctx) { - IRequestProxyCtx* requestBaseCtx = event->Get(); - LogRequest(event); + IRequestProxyCtx* requestBaseCtx = event->Get(); if (!SchemeCache) { const TString error = "Grpc proxy is not ready to accept request, no proxy service"; LOG_ERROR_S(ctx, NKikimrServices::GRPC_SERVER, error); const auto issue = MakeIssue(NKikimrIssues::TIssuesIds::GENERIC_TXPROXY_ERROR, error); requestBaseCtx->RaiseIssue(issue); requestBaseCtx->ReplyWithYdbStatus(Ydb::StatusIds::UNAVAILABLE); + requestBaseCtx->FinishSpan(); return; } - MaybeStartTracing(*requestBaseCtx); if (IsAuthStateOK(*requestBaseCtx)) { @@ -166,6 +162,7 @@ class TGRpcRequestProxyImpl if (state.State == NYdbGrpc::TAuthState::AS_FAIL) { requestBaseCtx->ReplyUnauthenticated(); + requestBaseCtx->FinishSpan(); return; } @@ -175,6 +172,7 @@ class TGRpcRequestProxyImpl const auto issue = MakeIssue(NKikimrIssues::TIssuesIds::YDB_AUTH_UNAVAILABLE, error); requestBaseCtx->RaiseIssue(issue); requestBaseCtx->ReplyUnavaliable(); + requestBaseCtx->FinishSpan(); return; } @@ -192,6 +190,7 @@ class TGRpcRequestProxyImpl } else { if (!AllowYdbRequestsWithoutDatabase && DynamicNode) { requestBaseCtx->ReplyUnauthenticated("Requests without specified database is not allowed"); + requestBaseCtx->FinishSpan(); return; } else { databaseName = RootDatabase; @@ -202,6 +201,7 @@ class TGRpcRequestProxyImpl if (databaseName.empty()) { Counters->IncDatabaseUnavailableCounter(); requestBaseCtx->ReplyUnauthenticated("Empty database name"); + requestBaseCtx->FinishSpan(); return; } auto it = Databases.find(databaseName); @@ -216,6 +216,8 @@ class TGRpcRequestProxyImpl const auto issue = MakeIssue(NKikimrIssues::TIssuesIds::YDB_DB_NOT_READY, error); requestBaseCtx->RaiseIssue(issue); requestBaseCtx->ReplyUnavaliable(); + requestBaseCtx->FinishSpan(); + return; } return; } @@ -236,6 +238,7 @@ class TGRpcRequestProxyImpl auto issue = MakeIssue(NKikimrIssues::TIssuesIds::ACCESS_DENIED, error); requestBaseCtx->RaiseIssue(issue); requestBaseCtx->ReplyWithYdbStatus(Ydb::StatusIds::UNAUTHORIZED); + requestBaseCtx->FinishSpan(); return; } } @@ -247,6 +250,7 @@ class TGRpcRequestProxyImpl auto issue = MakeIssue(NKikimrIssues::TIssuesIds::YDB_DB_NOT_READY, "database unavailable"); requestBaseCtx->RaiseIssue(issue); requestBaseCtx->ReplyWithYdbStatus(Ydb::StatusIds::UNAVAILABLE); + requestBaseCtx->FinishSpan(); return; } @@ -255,6 +259,7 @@ class TGRpcRequestProxyImpl LOG_DEBUG(*TlsActivationContext, NKikimrServices::GRPC_SERVER, "Client was disconnected before processing request (grpc request proxy)"); requestBaseCtx->ReplyWithYdbStatus(Ydb::StatusIds::UNAVAILABLE); + requestBaseCtx->FinishSpan(); return; } @@ -272,6 +277,8 @@ class TGRpcRequestProxyImpl const auto issue = MakeIssue(NKikimrIssues::TIssuesIds::GENERIC_TXPROXY_ERROR, "Can't authenticate request"); requestBaseCtx->RaiseIssue(issue); requestBaseCtx->ReplyWithYdbStatus(Ydb::StatusIds::BAD_REQUEST); + requestBaseCtx->FinishSpan(); + return; } void ForgetDatabase(const TString& database); @@ -291,6 +298,7 @@ class TGRpcRequestProxyImpl for (auto& [_, queue] : DeferredEvents) { for (TEventReqHolder& req : queue) { req.Ctx->ReplyUnavaliable(); + req.Ctx->FinishSpan(); } } @@ -315,8 +323,7 @@ class TGRpcRequestProxyImpl bool DynamicNode = false; TString RootDatabase; IGRpcProxyCounters::TPtr Counters; - THashMap<TString, TTracingControl> TracingControls; - TIntrusivePtr<TControlBoard> Icb; + TIntrusivePtr<NJaegerTracing::TSamplingThrottlingControl> TracingControl; }; void TGRpcRequestProxyImpl::Bootstrap(const TActorContext& ctx) { @@ -415,51 +422,26 @@ bool TGRpcRequestProxyImpl::IsAuthStateOK(const IRequestProxyCtx& ctx) { state.NeedAuth == false && !ctx.GetYdbToken(); } -TString TGRpcRequestProxyImpl::InternalRequestTypeToControlDomain(const TString& type) { - static constexpr TStringBuf ydbNamespacePrefix = "Ydb."; - static constexpr TStringBuf requestSuffix = "Request"; - - TString controlDomain = type; - if (controlDomain.StartsWith(ydbNamespacePrefix)) { - controlDomain.erase(0, ydbNamespacePrefix.size()); - } - if (controlDomain.EndsWith(requestSuffix)) { - controlDomain.erase(controlDomain.size() - requestSuffix.size()); - } - - return controlDomain; -} - -TTracingControl& TGRpcRequestProxyImpl::GetTracingControl(const TString& type) { - if (auto it = TracingControls.find(type); it != TracingControls.end()) { - return it->second; - } - auto tracingControlsDomain = InternalRequestTypeToControlDomain(type); - auto domain = TString::Join("TracingControls.", tracingControlsDomain); - TTracingControl control(Icb, TAppData::TimeProvider, TAppData::RandomProvider, std::move(domain)); - return TracingControls.emplace(type, std::move(control)).first->second; -} - void TGRpcRequestProxyImpl::MaybeStartTracing(IRequestProxyCtx& ctx) { - auto requestType = ctx.GetInternalRequestType(); - if (requestType.empty()) { + auto isTracingDecided = ctx.IsTracingDecided(); + if (!isTracingDecided) { return; } + if (std::exchange(*isTracingDecided, true)) { + return; + } + NWilson::TTraceId traceId; if (const auto otelHeader = ctx.GetPeerMetaValues(NYdb::OTEL_TRACE_HEADER)) { - traceId = NWilson::TTraceId::FromTraceparentHeader(otelHeader.GetRef()); - } - auto& control = GetTracingControl(requestType); - if (traceId && control.ThrottleExternal()) { - LOG_DEBUG_S(*TlsActivationContext, NKikimrServices::GRPC_SERVER, "Dropping external traceId " << traceId.GetHexTraceId() << " for request type " << requestType); - traceId = {}; - } - if (!traceId && control.SampleThrottle()) { - traceId = NWilson::TTraceId::NewTraceId(control.SampledVerbosity(), 4095); - LOG_DEBUG_S(*TlsActivationContext, NKikimrServices::GRPC_SERVER, "Created new traceId " << traceId.GetHexTraceId() << " for request type " << requestType); + traceId = NWilson::TTraceId::FromTraceparentHeader(otelHeader.GetRef(), TComponentTracingLevels::ProductionVerbose); } + TracingControl->HandleTracing(traceId, ctx.GetRequestDiscriminator()); if (traceId) { NWilson::TSpan grpcRequestProxySpan(TWilsonGrpc::RequestProxy, std::move(traceId), "GrpcRequestProxy"); + if (auto database = ctx.GetDatabaseName()) { + grpcRequestProxySpan.Attribute("database", std::move(*database)); + } + grpcRequestProxySpan.Attribute("request_type", ctx.GetRequestName()); ctx.StartTracing(std::move(grpcRequestProxySpan)); } } @@ -522,6 +504,7 @@ void TGRpcRequestProxyImpl::ForgetDatabase(const TString& database) { while (!queue.empty()) { Counters->IncDatabaseUnavailableCounter(); queue.front().Ctx->ReplyUnauthenticated("Unknown database"); + queue.front().Ctx->FinishSpan(); queue.pop_front(); } DeferredEvents.erase(itDeferredEvents); @@ -617,8 +600,8 @@ void TGRpcRequestProxyImpl::StateFunc(TAutoPtr<IEventHandle>& ev) { } } -IActor* CreateGRpcRequestProxy(const NKikimrConfig::TAppConfig& appConfig, TIntrusivePtr<TControlBoard> icb) { - return new TGRpcRequestProxyImpl(appConfig, std::move(icb)); +IActor* CreateGRpcRequestProxy(const NKikimrConfig::TAppConfig& appConfig, TIntrusivePtr<NJaegerTracing::TSamplingThrottlingControl> tracingControl) { + return new TGRpcRequestProxyImpl(appConfig, std::move(tracingControl)); } } // namespace NGRpcService diff --git a/ydb/core/grpc_services/grpc_request_proxy.h b/ydb/core/grpc_services/grpc_request_proxy.h index b4eedb51c5fc..c665ce1d4ddb 100644 --- a/ydb/core/grpc_services/grpc_request_proxy.h +++ b/ydb/core/grpc_services/grpc_request_proxy.h @@ -6,6 +6,7 @@ #include "grpc_request_proxy_handle_methods.h" #include <ydb/core/base/appdata_fwd.h> +#include <ydb/core/jaeger_tracing/sampling_throttling_control.h> #include <ydb/library/actors/core/actor.h> @@ -23,7 +24,7 @@ struct TAppData; namespace NGRpcService { TString DatabaseFromDomain(const TAppData* appdata); -IActor* CreateGRpcRequestProxy(const NKikimrConfig::TAppConfig& appConfig, TIntrusivePtr<TControlBoard> icb); +IActor* CreateGRpcRequestProxy(const NKikimrConfig::TAppConfig& appConfig, TIntrusivePtr<NJaegerTracing::TSamplingThrottlingControl> tracingControl); IActor* CreateGRpcRequestProxySimple(const NKikimrConfig::TAppConfig& appConfig); class TGRpcRequestProxy : public TGRpcRequestProxyHandleMethods, public IFacilityProvider { diff --git a/ydb/core/grpc_services/rpc_begin_transaction.cpp b/ydb/core/grpc_services/rpc_begin_transaction.cpp index 374593f22914..2cb6ad321660 100644 --- a/ydb/core/grpc_services/rpc_begin_transaction.cpp +++ b/ydb/core/grpc_services/rpc_begin_transaction.cpp @@ -87,7 +87,7 @@ class TBeginTransactionRPC : public TRpcKqpRequestActor<TBeginTransactionRPC, TE ev->Record.MutableRequest()->SetAction(NKikimrKqp::QUERY_ACTION_BEGIN_TX); ev->Record.MutableRequest()->MutableTxControl()->mutable_begin_tx()->CopyFrom(req->tx_settings()); - ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release()); + ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release(), 0, 0, Span_.GetTraceId()); } void Handle(NKqp::TEvKqp::TEvQueryResponse::TPtr& ev, const TActorContext& ctx) { diff --git a/ydb/core/grpc_services/rpc_calls.h b/ydb/core/grpc_services/rpc_calls.h index 1f92eb4f6b56..027243062acf 100644 --- a/ydb/core/grpc_services/rpc_calls.h +++ b/ydb/core/grpc_services/rpc_calls.h @@ -50,6 +50,7 @@ inline bool ValidateAndReplyOnError(IRequestProxyCtx* ctx) { const auto issue = MakeIssue(NKikimrIssues::TIssuesIds::YDB_API_VALIDATION_ERROR, validationError); ctx->RaiseIssue(issue); ctx->ReplyWithYdbStatus(Ydb::StatusIds::BAD_REQUEST); + ctx->FinishSpan(); return false; } else { return true; diff --git a/ydb/core/grpc_services/rpc_commit_transaction.cpp b/ydb/core/grpc_services/rpc_commit_transaction.cpp index d06731dd0edb..d555933d5091 100644 --- a/ydb/core/grpc_services/rpc_commit_transaction.cpp +++ b/ydb/core/grpc_services/rpc_commit_transaction.cpp @@ -75,7 +75,7 @@ class TCommitTransactionRPC : public TRpcKqpRequestActor<TCommitTransactionRPC, ev->Record.MutableRequest()->SetStatsMode(GetKqpStatsMode(req->collect_stats())); ev->Record.MutableRequest()->SetCollectStats(req->collect_stats()); - ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release()); + ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release(), 0, 0, Span_.GetTraceId()); } void Handle(NKqp::TEvKqp::TEvQueryResponse::TPtr& ev, const TActorContext& ctx) { diff --git a/ydb/core/grpc_services/rpc_common/rpc_common_kqp_session.cpp b/ydb/core/grpc_services/rpc_common/rpc_common_kqp_session.cpp index 041b1c9e1f9a..c99c5af2a273 100644 --- a/ydb/core/grpc_services/rpc_common/rpc_common_kqp_session.cpp +++ b/ydb/core/grpc_services/rpc_common/rpc_common_kqp_session.cpp @@ -7,7 +7,9 @@ #include "rpc_common.h" #include <ydb/core/grpc_services/local_rpc/local_rpc.h> +#include <ydb/core/util/wilson.h> +#include <ydb/library/wilson_ids/wilson.h> #include <ydb/library/yql/public/issue/yql_issue_message.h> #include <ydb/library/yql/public/issue/yql_issue.h> #include <ydb/public/sdk/cpp/client/resources/ydb_resources.h> @@ -33,7 +35,9 @@ using TEvDeleteSessionQueryRequest = TGrpcRequestOperationCall<Ydb::Query::Delet class TCreateSessionRPC : public TActorBootstrapped<TCreateSessionRPC> { public: TCreateSessionRPC(IRequestCtx* msg) - : Request(msg) {} + : Request(msg) + , Span(TWilsonGrpc::RequestActor, msg->GetWilsonTraceId(), "CreateSessionRpcActor") + {} void Bootstrap(const TActorContext&) { Become(&TCreateSessionRPC::StateWork); @@ -77,7 +81,7 @@ class TCreateSessionRPC : public TActorBootstrapped<TCreateSessionRPC> { SetDatabase(ev, *Request); - Send(NKqp::MakeKqpProxyID(SelfId().NodeId()), ev.Release()); + Send(NKqp::MakeKqpProxyID(SelfId().NodeId()), ev.Release(), 0, 0, Span.GetTraceId()); } void StateWork(TAutoPtr<IEventHandle>& ev) { @@ -88,6 +92,7 @@ class TCreateSessionRPC : public TActorBootstrapped<TCreateSessionRPC> { } void Handle(TEvents::TEvWakeup::TPtr&) { + Span.Event("client_lost", {}); ClientLost = true; } @@ -112,7 +117,9 @@ class TCreateSessionRPC : public TActorBootstrapped<TCreateSessionRPC> { void Handle(NKqp::TEvKqp::TEvCreateSessionResponse::TPtr& ev, const TActorContext& ctx) { const auto& record = ev->Get()->Record; if (record.GetResourceExhausted()) { - Request->ReplyWithRpcStatus(grpc::StatusCode::RESOURCE_EXHAUSTED, record.GetError()); + auto responseCode = grpc::StatusCode::RESOURCE_EXHAUSTED; + Request->ReplyWithRpcStatus(responseCode, record.GetError()); + Span.EndError("Resource exhausted"); Die(ctx); return; } @@ -125,6 +132,7 @@ class TCreateSessionRPC : public TActorBootstrapped<TCreateSessionRPC> { Reply(Ydb::StatusIds::INTERNAL_ERROR); } else { SendSessionResult(kqpResponse); + Span.EndOk(); PassAway(); return; } @@ -146,16 +154,19 @@ class TCreateSessionRPC : public TActorBootstrapped<TCreateSessionRPC> { void Reply(Ydb::StatusIds::StatusCode status) { Request->ReplyWithYdbStatus(status); + NWilson::EndSpanWithStatus(Span, status); this->PassAway(); } void Reply(Ydb::StatusIds::StatusCode status, NProtoBuf::Message* resp) { Request->Reply(resp, status); + NWilson::EndSpanWithStatus(Span, status); this->PassAway(); } protected: std::shared_ptr<IRequestCtx> Request; + NWilson::TSpan Span; private: bool ClientLost = false; @@ -202,7 +213,9 @@ class TCreateSessionQueryService : public TCreateSessionRPC { class TDeleteSessionRPC : public TActorBootstrapped<TDeleteSessionRPC> { public: TDeleteSessionRPC(IRequestCtx* msg) - : Request(msg) {} + : Request(msg) + , Span(TWilsonGrpc::RequestActor, msg->GetWilsonTraceId(), "DeleteSessionRpcActor") + {} void Bootstrap(const TActorContext&) { DeleteSessionImpl(); @@ -220,12 +233,13 @@ class TDeleteSessionRPC : public TActorBootstrapped<TDeleteSessionRPC> { return Reply(Ydb::StatusIds::BAD_REQUEST); } - Send(NKqp::MakeKqpProxyID(SelfId().NodeId()), ev.Release()); //no respose will be sended, so don't wait for anything + Send(NKqp::MakeKqpProxyID(SelfId().NodeId()), ev.Release(), 0, 0, Span.GetTraceId()); //no respose will be sended, so don't wait for anything Reply(Ydb::StatusIds::SUCCESS); } void Reply(Ydb::StatusIds::StatusCode status) { Request->ReplyWithYdbStatus(status); + NWilson::EndSpanWithStatus(Span, status); this->PassAway(); } @@ -233,6 +247,7 @@ class TDeleteSessionRPC : public TActorBootstrapped<TDeleteSessionRPC> { protected: std::shared_ptr<IRequestCtx> Request; + NWilson::TSpan Span; }; class TDeleteSessionTableService : public TDeleteSessionRPC { diff --git a/ydb/core/grpc_services/rpc_deferrable.h b/ydb/core/grpc_services/rpc_deferrable.h index 93550e2b11ef..11652e54322c 100644 --- a/ydb/core/grpc_services/rpc_deferrable.h +++ b/ydb/core/grpc_services/rpc_deferrable.h @@ -10,6 +10,7 @@ #include <ydb/core/protos/flat_tx_scheme.pb.h> #include <ydb/core/tx/schemeshard/schemeshard.h> #include <ydb/core/tx/tx_proxy/proxy.h> +#include <ydb/core/util/wilson.h> #include <ydb/library/wilson_ids/wilson.h> #include <ydb/library/ydb_issue/issue_helpers.h> #include <ydb/public/api/protos/ydb_status_codes.pb.h> @@ -202,12 +203,14 @@ class TRpcOperationRequestActor : public TRpcRequestWithOperationParamsActor<TDe const google::protobuf::RepeatedPtrField<TYdbIssueMessageType>& message, const TActorContext& ctx) { Request_->SendResult(status, message); + NWilson::EndSpanWithStatus(Span_, status); this->Die(ctx); } void Reply(Ydb::StatusIds::StatusCode status, const NYql::TIssues& issues, const TActorContext& ctx) { Request_->RaiseIssues(issues); Request_->ReplyWithYdbStatus(status); + NWilson::EndSpanWithStatus(Span_, status); this->Die(ctx); } @@ -219,6 +222,7 @@ class TRpcOperationRequestActor : public TRpcRequestWithOperationParamsActor<TDe void Reply(Ydb::StatusIds::StatusCode status, const TActorContext& ctx) { Request_->ReplyWithYdbStatus(status); + NWilson::EndSpanWithStatus(Span_, status); this->Die(ctx); } @@ -226,6 +230,7 @@ class TRpcOperationRequestActor : public TRpcRequestWithOperationParamsActor<TDe const google::protobuf::RepeatedPtrField<TYdbIssueMessageType>& message, const TActorContext &ctx) { Request_->SendResult(status, message); + NWilson::EndSpanWithStatus(Span_, status); this->Die(ctx); } @@ -236,6 +241,7 @@ class TRpcOperationRequestActor : public TRpcRequestWithOperationParamsActor<TDe const TActorContext& ctx) { Request_->SendResult(result, status, message); + NWilson::EndSpanWithStatus(Span_, status); this->Die(ctx); } @@ -244,12 +250,14 @@ class TRpcOperationRequestActor : public TRpcRequestWithOperationParamsActor<TDe const TResult& result, const TActorContext& ctx) { Request_->SendResult(result, status); + NWilson::EndSpanWithStatus(Span_, status); this->Die(ctx); } void ReplyOperation(Ydb::Operations::Operation& operation) { Request_->SendOperation(operation); + NWilson::EndSpanWithStatus(Span_, operation.status()); this->PassAway(); } diff --git a/ydb/core/grpc_services/rpc_discovery.cpp b/ydb/core/grpc_services/rpc_discovery.cpp index 2bc5cc74a46f..84c26fe124fe 100644 --- a/ydb/core/grpc_services/rpc_discovery.cpp +++ b/ydb/core/grpc_services/rpc_discovery.cpp @@ -29,6 +29,8 @@ class TListEndpointsRPC : public TActorBootstrapped<TListEndpointsRPC> { THolder<TEvDiscovery::TEvDiscoveryData> LookupResponse; THolder<TEvInterconnect::TEvNodeInfo> NameserviceResponse; + NWilson::TSpan Span; + public: static constexpr NKikimrServices::TActivity::EType ActorActivityType() { return NKikimrServices::TActivity::GRPC_REQ; @@ -37,6 +39,7 @@ class TListEndpointsRPC : public TActorBootstrapped<TListEndpointsRPC> { TListEndpointsRPC(TEvListEndpointsRequest::TPtr &msg, TActorId cacheId) : Request(msg->Release().Release()) , CacheId(cacheId) + , Span(TWilsonGrpc::RequestActor, Request->GetWilsonTraceId(), "ListEndpointsRpc") {} void Bootstrap() { @@ -54,6 +57,7 @@ class TListEndpointsRPC : public TActorBootstrapped<TListEndpointsRPC> { if (Discoverer) { Send(Discoverer, new TEvents::TEvPoisonPill()); } + Span.EndOk(); TActorBootstrapped<TListEndpointsRPC>::PassAway(); } diff --git a/ydb/core/grpc_services/rpc_execute_data_query.cpp b/ydb/core/grpc_services/rpc_execute_data_query.cpp index b96c36b1f7d6..7613a26ed444 100644 --- a/ydb/core/grpc_services/rpc_execute_data_query.cpp +++ b/ydb/core/grpc_services/rpc_execute_data_query.cpp @@ -146,7 +146,7 @@ class TExecuteDataQueryRPC : public TRpcKqpRequestActor<TExecuteDataQueryRPC, TE ReportCostInfo_ = req->operation_params().report_cost_info() == Ydb::FeatureFlag::ENABLED; - ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release()); + ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release(), 0, 0, Span_.GetTraceId()); } static void ConvertReadStats(const NKikimrQueryStats::TReadOpStats& from, Ydb::TableStats::OperationStats* to) { diff --git a/ydb/core/grpc_services/rpc_execute_scheme_query.cpp b/ydb/core/grpc_services/rpc_execute_scheme_query.cpp index 5625e318d1e1..00a12287f49d 100644 --- a/ydb/core/grpc_services/rpc_execute_scheme_query.cpp +++ b/ydb/core/grpc_services/rpc_execute_scheme_query.cpp @@ -73,7 +73,7 @@ class TExecuteSchemeQueryRPC : public TRpcKqpRequestActor<TExecuteSchemeQueryRPC ev->Record.MutableRequest()->SetType(NKikimrKqp::QUERY_TYPE_SQL_DDL); ev->Record.MutableRequest()->SetQuery(req->yql_text()); - ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release()); + ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release(), 0, 0, Span_.GetTraceId()); } void Handle(NKqp::TEvKqp::TEvQueryResponse::TPtr& ev, const TActorContext& ctx) { diff --git a/ydb/core/grpc_services/rpc_execute_yql_script.cpp b/ydb/core/grpc_services/rpc_execute_yql_script.cpp index 49db992aed7a..8f1a23be8a7d 100644 --- a/ydb/core/grpc_services/rpc_execute_yql_script.cpp +++ b/ydb/core/grpc_services/rpc_execute_yql_script.cpp @@ -76,7 +76,7 @@ class TExecuteYqlScriptRPC : public TRpcKqpRequestActor<TExecuteYqlScriptRPC, TE req->syntax() ); - ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release()); + ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release(), 0, 0, Span_.GetTraceId()); } void Handle(NKqp::TEvKqp::TEvQueryResponse::TPtr& ev, const TActorContext& ctx) { diff --git a/ydb/core/grpc_services/rpc_explain_data_query.cpp b/ydb/core/grpc_services/rpc_explain_data_query.cpp index 129ac5468bb9..92202713eda6 100644 --- a/ydb/core/grpc_services/rpc_explain_data_query.cpp +++ b/ydb/core/grpc_services/rpc_explain_data_query.cpp @@ -70,7 +70,7 @@ class TExplainDataQueryRPC : public TRpcKqpRequestActor<TExplainDataQueryRPC, TE ev->Record.MutableRequest()->SetQuery(req->yql_text()); ev->Record.MutableRequest()->SetCollectDiagnostics(req->Getcollect_full_diagnostics()); - ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release()); + ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release(), 0, 0, Span_.GetTraceId()); } void Handle(NKqp::TEvKqp::TEvQueryResponse::TPtr& ev, const TActorContext& ctx) { diff --git a/ydb/core/grpc_services/rpc_explain_yql_script.cpp b/ydb/core/grpc_services/rpc_explain_yql_script.cpp index 8494ad758ff8..884ad953fab1 100644 --- a/ydb/core/grpc_services/rpc_explain_yql_script.cpp +++ b/ydb/core/grpc_services/rpc_explain_yql_script.cpp @@ -77,7 +77,7 @@ class TExplainYqlScriptRPC : public TRpcKqpRequestActor<TExplainYqlScriptRPC, TE ev->Record.MutableRequest()->SetQuery(script); ev->Record.MutableRequest()->SetKeepSession(false); - ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release()); + ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release(), 0, 0, Span_.GetTraceId()); } void Handle(NKqp::TEvKqp::TEvQueryResponse::TPtr& ev, const TActorContext& ctx) { diff --git a/ydb/core/grpc_services/rpc_load_rows.cpp b/ydb/core/grpc_services/rpc_load_rows.cpp index 64e359be13ef..05cc85065298 100644 --- a/ydb/core/grpc_services/rpc_load_rows.cpp +++ b/ydb/core/grpc_services/rpc_load_rows.cpp @@ -117,8 +117,9 @@ const Ydb::Table::BulkUpsertRequest* GetProtoRequest(IRequestOpCtx* req) { class TUploadRowsRPCPublic : public NTxProxy::TUploadRowsBase<NKikimrServices::TActivity::GRPC_REQ> { using TBase = NTxProxy::TUploadRowsBase<NKikimrServices::TActivity::GRPC_REQ>; public: - explicit TUploadRowsRPCPublic(IRequestOpCtx* request, bool diskQuotaExceeded) - : TBase(GetDuration(GetProtoRequest(request)->operation_params().operation_timeout()), diskQuotaExceeded) + explicit TUploadRowsRPCPublic(IRequestOpCtx* request, bool diskQuotaExceeded, const char* name) + : TBase(GetDuration(GetProtoRequest(request)->operation_params().operation_timeout()), diskQuotaExceeded, + NWilson::TSpan(TWilsonKqp::BulkUpsertActor, request->GetWilsonTraceId(), name)) , Request(request) {} @@ -517,7 +518,7 @@ void DoBulkUpsertRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvid } else if (GetProtoRequest(p.get())->has_csv_settings()) { f.RegisterActor(new TUploadColumnsRPCPublic(p.release(), diskQuotaExceeded)); } else { - f.RegisterActor(new TUploadRowsRPCPublic(p.release(), diskQuotaExceeded)); + f.RegisterActor(new TUploadRowsRPCPublic(p.release(), diskQuotaExceeded, "BulkRowsUpsertActor")); } } @@ -530,7 +531,7 @@ IActor* TEvBulkUpsertRequest::CreateRpcActor(NKikimr::NGRpcService::IRequestOpCt } else if (GetProtoRequest(msg)->has_csv_settings()) { return new TUploadColumnsRPCPublic(msg, diskQuotaExceeded); } else { - return new TUploadRowsRPCPublic(msg, diskQuotaExceeded); + return new TUploadRowsRPCPublic(msg, diskQuotaExceeded, "BulkRowsUpsertActor"); } } diff --git a/ydb/core/grpc_services/rpc_prepare_data_query.cpp b/ydb/core/grpc_services/rpc_prepare_data_query.cpp index a18487cae8b5..673ee5a87f1d 100644 --- a/ydb/core/grpc_services/rpc_prepare_data_query.cpp +++ b/ydb/core/grpc_services/rpc_prepare_data_query.cpp @@ -79,7 +79,7 @@ class TPrepareDataQueryRPC : public TRpcKqpRequestActor<TPrepareDataQueryRPC, TE ev->Record.MutableRequest()->SetType(NKikimrKqp::QUERY_TYPE_SQL_DML); ev->Record.MutableRequest()->SetQuery(req->yql_text()); - ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release()); + ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release(), 0, 0, Span_.GetTraceId()); } void Handle(NKqp::TEvKqp::TEvQueryResponse::TPtr& ev, const TActorContext& ctx) { diff --git a/ydb/core/grpc_services/rpc_read_rows.cpp b/ydb/core/grpc_services/rpc_read_rows.cpp index 32465ee207a2..2769ff5a641f 100644 --- a/ydb/core/grpc_services/rpc_read_rows.cpp +++ b/ydb/core/grpc_services/rpc_read_rows.cpp @@ -85,6 +85,7 @@ class TReadRowsRPC : public TActorBootstrapped<TReadRowsRPC> { explicit TReadRowsRPC(std::unique_ptr<IRequestNoOpCtx> request) : Request(std::move(request)) , PipeCache(MakePipePeNodeCacheID(true)) + , Span(TWilsonGrpc::RequestActor, Request->GetWilsonTraceId(), "ReadRowsRpc") {} bool BuildSchema(NSchemeCache::TSchemeCacheNavigate* resolveNamesResult, TString& errorMessage) { @@ -355,7 +356,7 @@ class TReadRowsRPC : public TActorBootstrapped<TReadRowsRPC> { entry.ShowPrivatePath = false; auto request = std::make_unique<NSchemeCache::TSchemeCacheNavigate>(); request->ResultSet.emplace_back(entry); - Send(MakeSchemeCacheID(), new TEvTxProxySchemeCache::TEvNavigateKeySet(request.release())); + Send(MakeSchemeCacheID(), new TEvTxProxySchemeCache::TEvNavigateKeySet(request.release()), 0, 0, Span.GetTraceId()); return true; } @@ -439,7 +440,7 @@ class TReadRowsRPC : public TActorBootstrapped<TReadRowsRPC> { auto request = std::make_unique<NSchemeCache::TSchemeCacheRequest>(); request->ResultSet.emplace_back(std::move(keyRange)); - Send(MakeSchemeCacheID(), new TEvTxProxySchemeCache::TEvResolveKeySet(request.release())); + Send(MakeSchemeCacheID(), new TEvTxProxySchemeCache::TEvResolveKeySet(request.release()), 0, 0, Span.GetTraceId()); } void CreateShardToKeysMapping(TKeyDesc* keyRange) { @@ -495,7 +496,7 @@ class TReadRowsRPC : public TActorBootstrapped<TReadRowsRPC> { } LOG_DEBUG_S(TlsActivationContext->AsActorContext(), NKikimrServices::RPC_REQUEST, "TReadRowsRPC send TEvRead shardId : " << shardId << " keys.size(): " << keys.size()); - Send(PipeCache, new TEvPipeCache::TEvForward(request.release(), shardId, true), IEventHandle::FlagTrackDelivery); + Send(PipeCache, new TEvPipeCache::TEvForward(request.release(), shardId, true), IEventHandle::FlagTrackDelivery, 0, Span.GetTraceId()); ++ReadsInFlight; } @@ -672,6 +673,7 @@ class TReadRowsRPC : public TActorBootstrapped<TReadRowsRPC> { if (TimeoutTimerActorId) { Send(TimeoutTimerActorId, new TEvents::TEvPoisonPill()); } + Span.EndOk(); TBase::PassAway(); } @@ -724,6 +726,8 @@ class TReadRowsRPC : public TActorBootstrapped<TReadRowsRPC> { ui64 Retries = 0; const ui64 MaxTotalRetries = 5; + + NWilson::TSpan Span; }; void DoReadRowsRequest(std::unique_ptr<IRequestNoOpCtx> p, const IFacilityProvider& f) { diff --git a/ydb/core/grpc_services/rpc_rollback_transaction.cpp b/ydb/core/grpc_services/rpc_rollback_transaction.cpp index b1d4aaaddec9..9d17fa77dd0e 100644 --- a/ydb/core/grpc_services/rpc_rollback_transaction.cpp +++ b/ydb/core/grpc_services/rpc_rollback_transaction.cpp @@ -70,7 +70,7 @@ class TRollbackTransactionRPC : public TRpcKqpRequestActor<TRollbackTransactionR ev->Record.MutableRequest()->SetAction(NKikimrKqp::QUERY_ACTION_ROLLBACK_TX); ev->Record.MutableRequest()->MutableTxControl()->set_tx_id(req->tx_id()); - ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release()); + ctx.Send(NKqp::MakeKqpProxyID(ctx.SelfID.NodeId()), ev.Release(), 0, 0, Span_.GetTraceId()); } void Handle(NKqp::TEvKqp::TEvQueryResponse::TPtr& ev, const TActorContext& ctx) { diff --git a/ydb/core/grpc_services/ya.make b/ydb/core/grpc_services/ya.make index c3fd88321a38..4e6273649960 100644 --- a/ydb/core/grpc_services/ya.make +++ b/ydb/core/grpc_services/ya.make @@ -115,6 +115,7 @@ PEERDIR( ydb/core/tx/sharding ydb/core/tx/long_tx_service/public ydb/core/tx/data_events + ydb/core/util ydb/core/ydb_convert ydb/core/security ydb/library/aclib diff --git a/ydb/core/jaeger_tracing/request_discriminator.cpp b/ydb/core/jaeger_tracing/request_discriminator.cpp new file mode 100644 index 000000000000..79a647f89cd5 --- /dev/null +++ b/ydb/core/jaeger_tracing/request_discriminator.cpp @@ -0,0 +1,10 @@ +#include "request_discriminator.h" + +namespace NKikimr::NJaegerTracing { + +const TRequestDiscriminator TRequestDiscriminator::EMPTY { + .RequestType = ERequestType::UNSPECIFIED, + .Database = NothingObject, +}; + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/request_discriminator.h b/ydb/core/jaeger_tracing/request_discriminator.h new file mode 100644 index 000000000000..48e1284bef91 --- /dev/null +++ b/ydb/core/jaeger_tracing/request_discriminator.h @@ -0,0 +1,127 @@ +#pragma once + +#include <cstddef> + +#include <util/generic/hash.h> +#include <util/generic/maybe.h> +#include <util/generic/strbuf.h> +#include <util/generic/string.h> + +namespace NKikimr::NJaegerTracing { + +enum class ERequestType: size_t { + UNSPECIFIED, + + KEYVALUE_CREATEVOLUME, + KEYVALUE_DROPVOLUME, + KEYVALUE_ALTERVOLUME, + KEYVALUE_DESCRIBEVOLUME, + KEYVALUE_LISTLOCALPARTITIONS, + KEYVALUE_ACQUIRELOCK, + KEYVALUE_EXECUTETRANSACTION, + KEYVALUE_READ, + KEYVALUE_READRANGE, + KEYVALUE_LISTRANGE, + KEYVALUE_GETSTORAGECHANNELSTATUS, + + TABLE_CREATESESSION, + TABLE_KEEPALIVE, + TABLE_ALTERTABLE, + TABLE_CREATETABLE, + TABLE_DROPTABLE, + TABLE_DESCRIBETABLE, + TABLE_COPYTABLE, + TABLE_COPYTABLES, + TABLE_RENAMETABLES, + TABLE_EXPLAINDATAQUERY, + TABLE_EXECUTESCHEMEQUERY, + TABLE_BEGINTRANSACTION, + TABLE_DESCRIBETABLEOPTIONS, + TABLE_DELETESESSION, + TABLE_COMMITTRANSACTION, + TABLE_ROLLBACKTRANSACTION, + TABLE_PREPAREDATAQUERY, + TABLE_EXECUTEDATAQUERY, + TABLE_BULKUPSERT, + TABLE_STREAMEXECUTESCANQUERY, + TABLE_STREAMREADTABLE, + TABLE_READROWS, + + QUERY_EXECUTEQUERY, + QUERY_EXECUTESCRIPT, + QUERY_FETCHSCRIPTRESULTS, + QUERY_CREATESESSION, + QUERY_DELETESESSION, + QUERY_ATTACHSESSION, + QUERY_BEGINTRANSACTION, + QUERY_COMMITTRANSACTION, + QUERY_ROLLBACKTRANSACTION, + + DISCOVERY_WHOAMI, + DISCOVERY_NODEREGISTRATION, + DISCOVERY_LISTENDPOINTS, + + REQUEST_TYPES_CNT, // Add new types above this line +}; + +static constexpr size_t kRequestTypesCnt = static_cast<size_t>(ERequestType::REQUEST_TYPES_CNT); + +static const THashMap<TStringBuf, ERequestType> NameToRequestType = { + {"KeyValue.CreateVolume", ERequestType::KEYVALUE_CREATEVOLUME}, + {"KeyValue.DropVolume", ERequestType::KEYVALUE_DROPVOLUME}, + {"KeyValue.AlterVolume", ERequestType::KEYVALUE_ALTERVOLUME}, + {"KeyValue.DescribeVolume", ERequestType::KEYVALUE_DESCRIBEVOLUME}, + {"KeyValue.ListLocalPartitions", ERequestType::KEYVALUE_LISTLOCALPARTITIONS}, + {"KeyValue.AcquireLock", ERequestType::KEYVALUE_ACQUIRELOCK}, + {"KeyValue.ExecuteTransaction", ERequestType::KEYVALUE_EXECUTETRANSACTION}, + {"KeyValue.Read", ERequestType::KEYVALUE_READ}, + {"KeyValue.ReadRange", ERequestType::KEYVALUE_READRANGE}, + {"KeyValue.ListRange", ERequestType::KEYVALUE_LISTRANGE}, + {"KeyValue.GetStorageChannelStatus", ERequestType::KEYVALUE_GETSTORAGECHANNELSTATUS}, + + {"Table.CreateSession", ERequestType::TABLE_CREATESESSION}, + {"Table.KeepAlive", ERequestType::TABLE_KEEPALIVE}, + {"Table.AlterTable", ERequestType::TABLE_ALTERTABLE}, + {"Table.CreateTable", ERequestType::TABLE_CREATETABLE}, + {"Table.DropTable", ERequestType::TABLE_DROPTABLE}, + {"Table.DescribeTable", ERequestType::TABLE_DESCRIBETABLE}, + {"Table.CopyTable", ERequestType::TABLE_COPYTABLE}, + {"Table.CopyTables", ERequestType::TABLE_COPYTABLES}, + {"Table.RenameTables", ERequestType::TABLE_RENAMETABLES}, + {"Table.ExplainDataQuery", ERequestType::TABLE_EXPLAINDATAQUERY}, + {"Table.ExecuteSchemeQuery", ERequestType::TABLE_EXECUTESCHEMEQUERY}, + {"Table.BeginTransaction", ERequestType::TABLE_BEGINTRANSACTION}, + {"Table.DescribeTableOptions", ERequestType::TABLE_DESCRIBETABLEOPTIONS}, + {"Table.DeleteSession", ERequestType::TABLE_DELETESESSION}, + {"Table.CommitTransaction", ERequestType::TABLE_COMMITTRANSACTION}, + {"Table.RollbackTransaction", ERequestType::TABLE_ROLLBACKTRANSACTION}, + {"Table.PrepareDataQuery", ERequestType::TABLE_PREPAREDATAQUERY}, + {"Table.ExecuteDataQuery", ERequestType::TABLE_EXECUTEDATAQUERY}, + {"Table.BulkUpsert", ERequestType::TABLE_BULKUPSERT}, + {"Table.StreamExecuteScanQuery", ERequestType::TABLE_STREAMEXECUTESCANQUERY}, + {"Table.StreamReadTable", ERequestType::TABLE_STREAMREADTABLE}, + {"Table.ReadRows", ERequestType::TABLE_READROWS}, + + {"Query.ExecuteQuery", ERequestType::QUERY_EXECUTEQUERY}, + {"Query.ExecuteScript", ERequestType::QUERY_EXECUTESCRIPT}, + {"Query.FetchScriptResults", ERequestType::QUERY_FETCHSCRIPTRESULTS}, + {"Query.CreateSession", ERequestType::QUERY_CREATESESSION}, + {"Query.DeleteSession", ERequestType::QUERY_DELETESESSION}, + {"Query.AttachSession", ERequestType::QUERY_ATTACHSESSION}, + {"Query.BeginTransaction", ERequestType::QUERY_BEGINTRANSACTION}, + {"Query.CommitTransaction", ERequestType::QUERY_COMMITTRANSACTION}, + {"Query.RollbackTransaction", ERequestType::QUERY_ROLLBACKTRANSACTION}, + + {"Discovery.WhoAmI", ERequestType::DISCOVERY_WHOAMI}, + {"Discovery.NodeRegistration", ERequestType::DISCOVERY_NODEREGISTRATION}, + {"Discovery.ListEndpoints", ERequestType::DISCOVERY_LISTENDPOINTS}, +}; + +struct TRequestDiscriminator { + ERequestType RequestType = ERequestType::UNSPECIFIED; + TMaybe<TString> Database = NothingObject; + + static const TRequestDiscriminator EMPTY; +}; + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/sampler.h b/ydb/core/jaeger_tracing/sampler.h new file mode 100644 index 000000000000..1adaed88f2b5 --- /dev/null +++ b/ydb/core/jaeger_tracing/sampler.h @@ -0,0 +1,23 @@ +#pragma once + +#include <util/random/fast.h> + +namespace NKikimr::NJaegerTracing { + +class TSampler { +public: + TSampler(double fraction, ui64 seed) + : SamplingFraction(fraction) + , Rng(seed) + {} + + bool Sample() { + return Rng.GenRandReal1() < SamplingFraction; + } + +private: + const double SamplingFraction; + TFastRng64 Rng; +}; + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/sampler_ut.cpp b/ydb/core/jaeger_tracing/sampler_ut.cpp new file mode 100644 index 000000000000..2d1cd587b462 --- /dev/null +++ b/ydb/core/jaeger_tracing/sampler_ut.cpp @@ -0,0 +1,41 @@ +#include "sampler.h" + +#include <library/cpp/testing/unittest/registar.h> + +namespace NKikimr::NJaegerTracing { + +Y_UNIT_TEST_SUITE(SamplingControlTests) { + ui32 RunTrials(TSampler& sampler, ui32 trials) { + ui32 cnt = 0; + for (ui32 i = 0; i < trials; ++i) { + if (sampler.Sample()) { + ++cnt; + } + } + return cnt; + } + + Y_UNIT_TEST(Simple) { + TSampler sampler(0.5, 42); + + auto samples = RunTrials(sampler, 100'000); + UNIT_ASSERT_GE(samples, 48'000); + UNIT_ASSERT_LE(samples, 52'000); + } + + Y_UNIT_TEST(EdgeCaseLower) { + TSampler sampler(0, 42); + + auto samples = RunTrials(sampler, 100'000); + UNIT_ASSERT_EQUAL(samples, 0); + } + + Y_UNIT_TEST(EdgeCaseUpper) { + TSampler sampler(1, 42); + + auto samples = RunTrials(sampler, 100'000); + UNIT_ASSERT_EQUAL(samples, 100'000); + } +} + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/sampling_throttling_configurator.cpp b/ydb/core/jaeger_tracing/sampling_throttling_configurator.cpp new file mode 100644 index 000000000000..4a22d79bda29 --- /dev/null +++ b/ydb/core/jaeger_tracing/sampling_throttling_configurator.cpp @@ -0,0 +1,84 @@ +#include "sampling_throttling_configurator.h" + +#include "sampling_throttling_control.h" +#include "sampling_throttling_control_internals.h" + +#include <library/cpp/random_provider/random_provider.h> +#include <library/cpp/time_provider/time_provider.h> +#include <util/string/cast.h> + +namespace NKikimr::NJaegerTracing { + +namespace { + +template<class T> +void PropagateUnspecifiedRequest(TRulesContainer<T>& rules) { + constexpr auto unspecifiedRequestType = static_cast<size_t>(ERequestType::UNSPECIFIED); + const auto& unspecifiedRequestTypeRules = rules[unspecifiedRequestType]; + + for (size_t requestType = 0; requestType < kRequestTypesCnt; ++requestType) { + if (requestType == unspecifiedRequestType) { + continue; + } + + auto& requestTypeDatabaseRules = rules[requestType].DatabaseRules; + auto& requestTypeGlobalRules = rules[requestType].Global; + for (const auto& [database, unspecifiedDatabaseRules] : unspecifiedRequestTypeRules.DatabaseRules) { + auto& databaseRules = requestTypeDatabaseRules[database]; + databaseRules.insert(databaseRules.end(), unspecifiedDatabaseRules.begin(), + unspecifiedDatabaseRules.end()); + } + requestTypeGlobalRules.insert(requestTypeGlobalRules.end(), + unspecifiedRequestTypeRules.Global.begin(), + unspecifiedRequestTypeRules.Global.end()); + } +} + +} // namespace anonymous + +TSamplingThrottlingConfigurator::TSamplingThrottlingConfigurator(TIntrusivePtr<ITimeProvider> timeProvider, + TIntrusivePtr<IRandomProvider>& randomProvider) + : TimeProvider(std::move(timeProvider)) + , Rng(randomProvider->GenRand64()) + , CurrentSettings(GenerateThrottlers({})) +{} + +TIntrusivePtr<TSamplingThrottlingControl> TSamplingThrottlingConfigurator::GetControl() { + auto control = TIntrusivePtr(new TSamplingThrottlingControl(GenerateSetup())); + IssuedControls.push_back(control); + return control; +} + +void TSamplingThrottlingConfigurator::UpdateSettings(TSettings<double, TWithTag<TThrottlingSettings>> settings) { + auto enrichedSettings = GenerateThrottlers(std::move(settings)); + PropagateUnspecifiedRequest(enrichedSettings.SamplingRules); + PropagateUnspecifiedRequest(enrichedSettings.ExternalThrottlingRules); + CurrentSettings = std::move(enrichedSettings); + + for (auto& control : IssuedControls) { + control->UpdateImpl(GenerateSetup()); + } +} + +TSettings<double, TIntrusivePtr<TThrottler>> TSamplingThrottlingConfigurator::GenerateThrottlers( + TSettings<double, TWithTag<TThrottlingSettings>> settings) { + THashMap<size_t, TIntrusivePtr<TThrottler>> throttlers; + return settings.MapThrottler([this, &throttlers](const TWithTag<TThrottlingSettings>& settings) { + if (auto it = throttlers.FindPtr(settings.Tag)) { + return *it; + } + auto throttler = MakeIntrusive<TThrottler>(settings.Value.MaxTracesPerMinute, settings.Value.MaxTracesBurst, TimeProvider); + throttlers[settings.Tag] = throttler; + return throttler; + }); +} + +std::unique_ptr<TSamplingThrottlingControl::TSamplingThrottlingImpl> TSamplingThrottlingConfigurator::GenerateSetup() { + auto setup = CurrentSettings.MapSampler([this](double fraction) { + return TSampler(fraction, Rng()); + }); + + return std::make_unique<TSamplingThrottlingControl::TSamplingThrottlingImpl>(std::move(setup)); +} + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/sampling_throttling_configurator.h b/ydb/core/jaeger_tracing/sampling_throttling_configurator.h new file mode 100644 index 000000000000..642c37e0d16f --- /dev/null +++ b/ydb/core/jaeger_tracing/sampling_throttling_configurator.h @@ -0,0 +1,46 @@ +#pragma once + +#include "sampling_throttling_control.h" + +#include "throttler.h" +#include "settings.h" + +#include <ydb/core/protos/config.pb.h> + +#include <library/cpp/random_provider/random_provider.h> +#include <library/cpp/time_provider/time_provider.h> + +#include <util/generic/maybe.h> +#include <util/generic/vector.h> + +namespace NKikimr::NJaegerTracing { + +// Used to represent shared limits in throttlers and samplers +template<class T> +struct TWithTag { + T Value; + size_t Tag; +}; + +class TSamplingThrottlingConfigurator: private TMoveOnly { +public: + TSamplingThrottlingConfigurator(TIntrusivePtr<ITimeProvider> timeProvider, + TIntrusivePtr<IRandomProvider>& randomProvider); + + TIntrusivePtr<TSamplingThrottlingControl> GetControl(); + + void UpdateSettings(TSettings<double, TWithTag<TThrottlingSettings>> settings); + +private: + TSettings<double, TIntrusivePtr<TThrottler>> GenerateThrottlers( + TSettings<double, TWithTag<TThrottlingSettings>> settings); + + std::unique_ptr<TSamplingThrottlingControl::TSamplingThrottlingImpl> GenerateSetup(); + + TVector<TIntrusivePtr<TSamplingThrottlingControl>> IssuedControls; + TIntrusivePtr<ITimeProvider> TimeProvider; + TFastRng64 Rng; + TSettings<double, TIntrusivePtr<TThrottler>> CurrentSettings; +}; + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/sampling_throttling_control.cpp b/ydb/core/jaeger_tracing/sampling_throttling_control.cpp new file mode 100644 index 000000000000..584eeb54d4aa --- /dev/null +++ b/ydb/core/jaeger_tracing/sampling_throttling_control.cpp @@ -0,0 +1,28 @@ +#include "sampling_throttling_control.h" + +#include "sampling_throttling_control_internals.h" + +namespace NKikimr::NJaegerTracing { + +TSamplingThrottlingControl::TSamplingThrottlingControl(std::unique_ptr<TSamplingThrottlingImpl> initialImpl) + : Impl(std::move(initialImpl)) +{} + +TSamplingThrottlingControl::~TSamplingThrottlingControl() { + UpdateImpl(nullptr); +} + +void TSamplingThrottlingControl::HandleTracing(NWilson::TTraceId& traceId, const TRequestDiscriminator& discriminator) { + if (ImplUpdate.load(std::memory_order_relaxed)) { + auto newImpl = std::unique_ptr<TSamplingThrottlingImpl>(ImplUpdate.exchange(nullptr, std::memory_order_relaxed)); + Y_ABORT_UNLESS(newImpl); + Impl = std::move(newImpl); + } + Impl->HandleTracing(traceId, discriminator); +} + +void TSamplingThrottlingControl::UpdateImpl(std::unique_ptr<TSamplingThrottlingImpl> newImpl) { + std::unique_ptr<TSamplingThrottlingImpl> guard(ImplUpdate.exchange(newImpl.release(), std::memory_order_relaxed)); +} + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/sampling_throttling_control.h b/ydb/core/jaeger_tracing/sampling_throttling_control.h new file mode 100644 index 000000000000..fce17a0730dd --- /dev/null +++ b/ydb/core/jaeger_tracing/sampling_throttling_control.h @@ -0,0 +1,32 @@ +#pragma once + +#include "request_discriminator.h" + +#include <ydb/library/actors/wilson/wilson_trace.h> + +namespace NKikimr::NJaegerTracing { + +class TSamplingThrottlingControl: public TThrRefBase { + friend class TSamplingThrottlingConfigurator; + +public: + void HandleTracing(NWilson::TTraceId& traceId, const TRequestDiscriminator& discriminator); + + ~TSamplingThrottlingControl(); + +private: + struct TSamplingThrottlingImpl; + + // Should only be obtained from TSamplingThrottlingConfigurator + TSamplingThrottlingControl(std::unique_ptr<TSamplingThrottlingImpl> initialImpl); + + void UpdateImpl(std::unique_ptr<TSamplingThrottlingImpl> newParams); + + // Exclusively owned by the only thread, that may call HandleTracing + std::unique_ptr<TSamplingThrottlingImpl> Impl; + + // Shared between the thread calling HandleTracing and the thread calling UpdateParams + std::atomic<TSamplingThrottlingImpl*> ImplUpdate{nullptr}; +}; + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/sampling_throttling_control_internals.cpp b/ydb/core/jaeger_tracing/sampling_throttling_control_internals.cpp new file mode 100644 index 000000000000..d7de858ee588 --- /dev/null +++ b/ydb/core/jaeger_tracing/sampling_throttling_control_internals.cpp @@ -0,0 +1,62 @@ +#include "sampling_throttling_control_internals.h" + + +namespace NKikimr::NJaegerTracing { + +namespace { + +template<class T, class TAction> +void ForEachMatchingRule(TRequestTypeRules<T>& rules, const TMaybe<TString>& database, TAction&& action) { + for (auto& rule : rules.Global) { + action(rule); + } + if (database) { + if (auto databaseRules = rules.DatabaseRules.FindPtr(*database)) { + for (auto& rule : *databaseRules) { + action(rule); + } + } + } +} + +} // namespace anonymous + +void TSamplingThrottlingControl::TSamplingThrottlingImpl::HandleTracing( + NWilson::TTraceId& traceId, TRequestDiscriminator discriminator) { + auto requestType = static_cast<size_t>(discriminator.RequestType); + auto database = std::move(discriminator.Database); + + if (traceId) { + bool throttle = true; + + ForEachMatchingRule( + Setup.ExternalThrottlingRules[requestType], database, + [&throttle](auto& throttlingRule) { + throttle = throttlingRule.Throttler->Throttle() && throttle; + }); + + if (throttle) { + traceId = {}; + } + } + + if (!traceId) { + TMaybe<ui8> level; + ForEachMatchingRule( + Setup.SamplingRules[requestType], database, + [&level](auto& samplingRule) { + if (!samplingRule.Sampler.Sample() || samplingRule.Throttler->Throttle()) { + return; + } + if (!level || samplingRule.Level > *level) { + level = samplingRule.Level; + } + }); + + if (level) { + traceId = NWilson::TTraceId::NewTraceId(*level, Max<ui32>()); + } + } +} + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/sampling_throttling_control_internals.h b/ydb/core/jaeger_tracing/sampling_throttling_control_internals.h new file mode 100644 index 000000000000..34a9ba9ffe11 --- /dev/null +++ b/ydb/core/jaeger_tracing/sampling_throttling_control_internals.h @@ -0,0 +1,25 @@ +#pragma once + +#include "sampler.h" +#include "throttler.h" +#include "sampling_throttling_control.h" +#include "settings.h" + +#include <util/generic/maybe.h> +#include <util/generic/vector.h> + +#include <library/cpp/containers/stack_vector/stack_vec.h> + +namespace NKikimr::NJaegerTracing { + +struct TSamplingThrottlingControl::TSamplingThrottlingImpl { + TSamplingThrottlingImpl(TSettings<TSampler, TIntrusivePtr<TThrottler>>&& settings) + : Setup(std::move(settings)) + {} + + TSettings<TSampler, TIntrusivePtr<TThrottler>> Setup; + + void HandleTracing(NWilson::TTraceId& traceId, TRequestDiscriminator discriminator); +}; + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/settings.h b/ydb/core/jaeger_tracing/settings.h new file mode 100644 index 000000000000..22b68df3bca3 --- /dev/null +++ b/ydb/core/jaeger_tracing/settings.h @@ -0,0 +1,165 @@ +#pragma once + +#include "request_discriminator.h" + +#include <library/cpp/containers/stack_vector/stack_vec.h> + +#include <util/generic/hash.h> +#include <util/system/types.h> + +namespace NKikimr::NJaegerTracing { + +struct TThrottlingSettings { + ui64 MaxTracesPerMinute; + ui64 MaxTracesBurst; +}; + +template<class TSampling, class TThrottling> +struct TSamplingRule { + ui8 Level; + TSampling Sampler; + TThrottling Throttler; + + template<class TFunc> + auto MapSampler(TFunc&& f) const { + using TNewSamplingType = std::invoke_result_t<TFunc, const TSampling&>; + + return TSamplingRule<TNewSamplingType, TThrottling> { + .Level = Level, + .Sampler = std::forward<TFunc>(f)(Sampler), + .Throttler = Throttler, + }; + } + + template<class TFunc> + auto MapThrottler(TFunc&& f) const { + using TNewThrottlingType = std::invoke_result_t<TFunc, const TThrottling&>; + + return TSamplingRule<TSampling, TNewThrottlingType> { + .Level = Level, + .Sampler = Sampler, + .Throttler = std::forward<TFunc>(f)(Throttler), + }; + } +}; + +template<class TThrottling> +struct TExternalThrottlingRule { + TThrottling Throttler; + + template<class TFunc> + auto MapThrottler(TFunc&& f) const { + using TNewThrottlingType = std::invoke_result_t<TFunc, const TThrottling&>; + + return TExternalThrottlingRule<TNewThrottlingType> { + .Throttler = std::forward<TFunc>(f)(Throttler), + }; + } +}; + +template<class T> +struct TRequestTypeRules { + TStackVec<T, 4> Global; + THashMap<TString, TStackVec<T, 4>> DatabaseRules; +}; + +template<class T> +using TRulesContainer = std::array<TRequestTypeRules<T>, kRequestTypesCnt>; + +template<class TSampling, class TThrottling> +struct TSettings { +public: + TRulesContainer<TSamplingRule<TSampling, TThrottling>> SamplingRules; + TRulesContainer<TExternalThrottlingRule<TThrottling>> ExternalThrottlingRules; + + template<class TFunc> + auto MapSampler(TFunc&& f) const { + using TNewSamplingType = std::invoke_result_t<TFunc, const TSampling&>; + + return TSettings<TNewSamplingType, TThrottling> { + .SamplingRules = MapContainerValues( + SamplingRules, + [&f](const auto& v) { + return v.MapSampler(f); + } + ), + .ExternalThrottlingRules = ExternalThrottlingRules, + }; + } + + template<class TFunc> + auto MapThrottler(TFunc&& f) const { + using TNewThrottlingType = std::invoke_result_t<TFunc, const TThrottling&>; + + return TSettings<TSampling, TNewThrottlingType> { + .SamplingRules = MapContainerValues( + SamplingRules, + [&f](const auto& v) { + return v.MapThrottler(f); + } + ), + .ExternalThrottlingRules = MapContainerValues( + ExternalThrottlingRules, + [&f](const auto& v) { + return v.MapThrottler(f); + } + ), + }; + } + +private: + template<class T, size_t OnStack, class TFunc> + static auto MapValues(const TStackVec<T, OnStack>& v, TFunc&& f) { + using TResultValue = std::invoke_result_t<TFunc, const T&>; + + TStackVec<TResultValue, OnStack> result; + result.reserve(v.size()); + for (const auto& item : v) { + result.push_back(f(item)); + } + return result; + } + + template<class TKey, class TValue, class TFunc> + static auto MapValues(const THashMap<TKey, TValue>& m, TFunc&& f) { + using TResultValue = std::invoke_result_t<TFunc, const TValue&>; + + THashMap<TKey, TResultValue> result; + result.reserve(m.size()); + for (const auto& [key, value] : m) { + result.emplace(key, f(value)); + } + return result; + } + + template<class T, size_t Size, class TFunc> + static auto MapValues(const std::array<T, Size>& v, TFunc&& f) { + using TResultValue = std::invoke_result_t<TFunc, const T&>; + + return [&v, &f]<size_t... I>(std::index_sequence<I...>) -> std::array<TResultValue, Size> { + return { f(v[I])...}; + }(std::make_index_sequence<Size>()); + } + + template<class T, class TFunc> + static TRulesContainer<std::invoke_result_t<TFunc, const T&>> MapContainerValues(const TRulesContainer<T>& v, TFunc&& f) { + using TResultValue = std::invoke_result_t<TFunc, const T&>; + + return MapValues( + v, + [&f](const TRequestTypeRules<T>& reqTypeRules) { + return TRequestTypeRules<TResultValue> { + .Global = MapValues(reqTypeRules.Global, f), + .DatabaseRules = MapValues( + reqTypeRules.DatabaseRules, + [&f](const auto& dbSamplingRules) { + return MapValues(dbSamplingRules, f); + } + ), + }; + } + ); + } +}; + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/throttler.cpp b/ydb/core/jaeger_tracing/throttler.cpp new file mode 100644 index 000000000000..d361e9b053e6 --- /dev/null +++ b/ydb/core/jaeger_tracing/throttler.cpp @@ -0,0 +1,78 @@ +#include "throttler.h" + +#include <util/system/spinlock.h> + +namespace NKikimr::NJaegerTracing { + +TThrottler::TThrottler(ui64 maxRatePerMinute, ui64 maxBurst, TIntrusivePtr<ITimeProvider> timeProvider) + : MaxTracesPerMinute(maxRatePerMinute) + , MaxTracesBurst(maxBurst + 1) + , BetweenSends(TDuration::Minutes(1).MicroSeconds() / MaxTracesPerMinute) + , TimeProvider(std::move(timeProvider)) + , EffectiveTs(TimeProvider->Now().MicroSeconds()) +{} + +bool TThrottler::Throttle() { + auto now = TimeProvider->Now().MicroSeconds(); + auto ts = EffectiveTs.load(std::memory_order_relaxed); + auto maxFinalTs = ClampAdd(now, ClampMultiply(BetweenSends, MaxTracesBurst)); + while (true) { + if (ts < now) { + if (EffectiveTs.compare_exchange_weak(ts, now + BetweenSends, std::memory_order_relaxed)) { + return false; + } + SpinLockPause(); + } else if (ts + BetweenSends > maxFinalTs) { + return true; + } else if (EffectiveTs.fetch_add(BetweenSends, std::memory_order_relaxed) + BetweenSends > maxFinalTs) { + EffectiveTs.fetch_sub(BetweenSends, std::memory_order_relaxed); + return true; + } else { + return false; + } + } +} + +ui64 TThrottler::ClampAdd(ui64 a, ui64 b) { +#if defined(__has_builtin) && __has_builtin(__builtin_add_overflow) + + ui64 res; + if (__builtin_add_overflow(a, b, &res)) { + return Max<ui64>(); + } else { + return res; + } + +#else + + if (a > Max<ui64>() - b) { + return Max<ui64>(); + } + return a + b; + +#endif +} + +ui64 TThrottler::ClampMultiply(ui64 a, ui64 b) { +#if defined(__has_builtin) && __has_builtin(__builtin_mul_overflow) + + ui64 res; + if (__builtin_mul_overflow(a, b, &res)) { + return Max<ui64>(); + } else { + return res; + } + +#else + + ui128 prod = a; + prod *= b; + if (prod > Max<ui64>()) { + return Max<ui64>(); + } + return static_cast<ui64>(prod); + +#endif +} + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/throttler.h b/ydb/core/jaeger_tracing/throttler.h new file mode 100644 index 000000000000..c0b39913ccab --- /dev/null +++ b/ydb/core/jaeger_tracing/throttler.h @@ -0,0 +1,27 @@ +#pragma once + +#include <library/cpp/int128/int128.h> +#include <library/cpp/time_provider/time_provider.h> + +namespace NKikimr::NJaegerTracing { + +class TThrottler: public TThrRefBase { +public: + TThrottler(ui64 maxRatePerMinute, ui64 maxBurst, TIntrusivePtr<ITimeProvider> timeProvider); + + bool Throttle(); + +private: + static ui64 ClampAdd(ui64 a, ui64 b); + static ui64 ClampMultiply(ui64 a, ui64 b); + + const ui64 MaxTracesPerMinute; + const ui64 MaxTracesBurst; + const ui64 BetweenSends; + TIntrusivePtr<ITimeProvider> TimeProvider; + std::atomic<ui64> EffectiveTs; + + static_assert(decltype(EffectiveTs)::is_always_lock_free); +}; + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/throttler_ut.cpp b/ydb/core/jaeger_tracing/throttler_ut.cpp new file mode 100644 index 000000000000..aed397f09411 --- /dev/null +++ b/ydb/core/jaeger_tracing/throttler_ut.cpp @@ -0,0 +1,175 @@ +#include "throttler.h" + +#include <util/generic/scope.h> +#include <util/system/thread.h> + +#include <library/cpp/time_provider/time_provider.h> + +#include <library/cpp/testing/unittest/registar.h> + +namespace NKikimr::NJaegerTracing { + +class TTimeProviderMock : public ITimeProvider { +public: + TTimeProviderMock(TInstant now) : CurrentTimeUS(now.GetValue()) {} + + void Advance(TDuration delta) { + CurrentTimeUS.fetch_add(delta.GetValue()); + } + + TInstant Now() final { + return TInstant::FromValue(CurrentTimeUS.load()); + } + +private: + std::atomic<ui64> CurrentTimeUS; +}; + +Y_UNIT_TEST_SUITE(ThrottlerControlTests) { + void CheckAtLeast(TThrottler& throttler, ui32 n) { + for (ui32 i = 0; i < n; ++i) { + UNIT_ASSERT(!throttler.Throttle()); + } + } + + void CheckExact(TThrottler& throttler, ui32 n) { + CheckAtLeast(throttler, n); + UNIT_ASSERT(throttler.Throttle()); + } + + Y_UNIT_TEST(Simple) { + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + + TThrottler throttler(6, 2, timeProvider); + CheckExact(throttler, 3); + CheckExact(throttler, 0); + + timeProvider->Advance(TDuration::Seconds(9)); + CheckExact(throttler, 0); + timeProvider->Advance(TDuration::Seconds(1)); + CheckExact(throttler, 1); + + timeProvider->Advance(TDuration::Seconds(15)); + CheckExact(throttler, 1); + + timeProvider->Advance(TDuration::Seconds(15)); + CheckExact(throttler, 2); + } + + Y_UNIT_TEST(LongIdle) { + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + + TThrottler throttler(10, 2, timeProvider); + CheckAtLeast(throttler, 3); + + timeProvider->Advance(TDuration::Hours(1)); + CheckExact(throttler, 3); + } + + Y_UNIT_TEST(Overflow_1) { + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + + TThrottler throttler(1'000'000'000'000'000'000, 20'000, timeProvider); + + // TODO(pumpurum): switch back to CheckExact when we figure out how to limit properly + CheckAtLeast(throttler, 20'001); + + timeProvider->Advance(TDuration::Days(365 * 10)); + + CheckAtLeast(throttler, 20'001); + } + + Y_UNIT_TEST(Overflow_2) { + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + + TThrottler throttler(1'000'000'000'000'000'000, 1, timeProvider); + CheckAtLeast(throttler, 1); + + timeProvider->Advance(TDuration::Days(365 * 10)); + + CheckAtLeast(throttler, 1); + } + + void TestMultiThreaded(ui32 threads, ui64 ticks, ui64 init, ui64 step) { + constexpr std::array<TDuration, 4> delays = { + TDuration::MilliSeconds(1), + TDuration::MilliSeconds(10), + TDuration::MilliSeconds(100), + TDuration::Seconds(1) + }; + + auto timeProvider = MakeIntrusive<TTimeProviderMock>(TInstant::Now()); + + TThrottler throttler(60, init - 1, timeProvider); + + auto shouldStop = std::make_shared<std::atomic<bool>>(false); + TVector<THolder<TThread>> workers; + Y_SCOPE_EXIT(shouldStop, &workers) { + shouldStop->store(true); + + try { + for (auto& worker : workers) { + worker->Join(); + } + } catch (yexception& e) { + Cerr << "Failed to join worker:" << Endl; + Cerr << e.what() << Endl; + } + }; + + std::atomic<ui64> totalConsumed{0}; + workers.reserve(threads); + for (size_t i = 0; i < threads; ++i) { + workers.push_back(MakeHolder<TThread>([&]() { + while (!shouldStop->load(std::memory_order_relaxed)) { + if (!throttler.Throttle()) { + totalConsumed.fetch_add(1); + } + } + })); + } + for (auto& worker : workers) { + worker->Start(); + } + + auto waitForIncrease = [&](ui64 expected) -> bool { + for (const TDuration& delay : delays) { + Sleep(delay); + if (totalConsumed.load() == expected) { + return true; + } + } + return false; + }; + + ui64 expected = init; + UNIT_ASSERT(waitForIncrease(expected)); + + auto advance = [&](ui64 seconds, ui64 expectedIncrease) { + timeProvider->Advance(TDuration::Seconds(seconds)); + expected += expectedIncrease; + UNIT_ASSERT(waitForIncrease(expected)); + }; + + advance(1, 1); + + for (size_t i = 0; i < ticks; ++i) { + advance(step, step); + } + + advance(init + 1000, init); + } + + #define TEST_MULTI_THREADED(threads, ticks, init, step) \ + Y_UNIT_TEST(MultiThreaded##threads##Threads##ticks##Ticks##init##Init##step##Step) { \ + TestMultiThreaded(threads, ticks, init, step); \ + } + + TEST_MULTI_THREADED(2, 200, 30, 7); + TEST_MULTI_THREADED(5, 150, 500, 15); + TEST_MULTI_THREADED(10, 100, 1000, 22); + + #undef TEST_MULTI_THREADED +} + +} // namespace NKikimr::NJaegerTracing diff --git a/ydb/core/jaeger_tracing/ut/ya.make b/ydb/core/jaeger_tracing/ut/ya.make new file mode 100644 index 000000000000..a3b67286e633 --- /dev/null +++ b/ydb/core/jaeger_tracing/ut/ya.make @@ -0,0 +1,14 @@ +UNITTEST_FOR(ydb/core/jaeger_tracing) + +FORK_SUBTESTS() + +TIMEOUT(600) + +SIZE(MEDIUM) + +SRCS( + sampler_ut.cpp + throttler_ut.cpp +) + +END() diff --git a/ydb/core/jaeger_tracing/ya.make b/ydb/core/jaeger_tracing/ya.make new file mode 100644 index 000000000000..09da909d3bb8 --- /dev/null +++ b/ydb/core/jaeger_tracing/ya.make @@ -0,0 +1,26 @@ +LIBRARY() + +PEERDIR( + ydb/core/protos +) + +SRCS( + request_discriminator.h + request_discriminator.cpp + sampler.h + sampling_throttling_configurator.cpp + sampling_throttling_configurator.h + sampling_throttling_control.cpp + sampling_throttling_control.h + sampling_throttling_control_internals.cpp + sampling_throttling_control_internals.h + settings.h + throttler.h + throttler.cpp +) + +END() + +RECURSE_FOR_TESTS( + ut +) diff --git a/ydb/core/keyvalue/keyvalue_intermediate.cpp b/ydb/core/keyvalue/keyvalue_intermediate.cpp index ed8fa1c355f0..b48d35ef6261 100644 --- a/ydb/core/keyvalue/keyvalue_intermediate.cpp +++ b/ydb/core/keyvalue/keyvalue_intermediate.cpp @@ -80,7 +80,7 @@ TIntermediate::TIntermediate(TActorId respondTo, TActorId keyValueActorId, ui64 , CreatedAtGeneration(channelGeneration) , CreatedAtStep(channelStep) , IsReplied(false) - , Span(TWilsonTablet::Tablet, std::move(traceId), "KeyValue.Intermediate", NWilson::EFlags::AUTO_END) + , Span(TWilsonTablet::TabletTopLevel, std::move(traceId), "KeyValue.Intermediate", NWilson::EFlags::AUTO_END) { Stat.IntermediateCreatedAt = TAppData::TimeProvider->Now(); Stat.RequestType = requestType; @@ -106,7 +106,7 @@ void TIntermediate::UpdateStat() { } } } else { - Stat.IndexRangeRead++; + Stat.IndexRangeRead++; } }; diff --git a/ydb/core/keyvalue/keyvalue_storage_read_request.cpp b/ydb/core/keyvalue/keyvalue_storage_read_request.cpp index 4f2eff31c654..d93ac00aa091 100644 --- a/ydb/core/keyvalue/keyvalue_storage_read_request.cpp +++ b/ydb/core/keyvalue/keyvalue_storage_read_request.cpp @@ -511,7 +511,7 @@ class TKeyValueStorageReadRequest : public TActorBootstrapped<TKeyValueStorageRe : IntermediateResult(std::move(intermediate)) , TabletInfo(const_cast<TTabletStorageInfo*>(tabletInfo)) , TabletGeneration(tabletGeneration) - , Span(TWilsonTablet::Tablet, IntermediateResult->Span.GetTraceId(), "KeyValue.StorageReadRequest") + , Span(TWilsonTablet::TabletBasic, IntermediateResult->Span.GetTraceId(), "KeyValue.StorageReadRequest") {} }; diff --git a/ydb/core/keyvalue/keyvalue_storage_request.cpp b/ydb/core/keyvalue/keyvalue_storage_request.cpp index 5f2b434b004e..60e07849c1c9 100644 --- a/ydb/core/keyvalue/keyvalue_storage_request.cpp +++ b/ydb/core/keyvalue/keyvalue_storage_request.cpp @@ -88,7 +88,7 @@ class TKeyValueStorageRequest : public TActorBootstrapped<TKeyValueStorageReques , TabletGeneration(tabletGeneration) , IntermediateResults(std::move(intermediate)) , TabletInfo(const_cast<TTabletStorageInfo*>(tabletInfo)) - , Span(TWilsonTablet::Tablet, IntermediateResults->Span.GetTraceId(), "KeyValue.StorageRequest") + , Span(TWilsonTablet::TabletBasic, IntermediateResults->Span.GetTraceId(), "KeyValue.StorageRequest") { IntermediateResults->Stat.KeyvalueStorageRequestSentAt = TAppData::TimeProvider->Now(); } diff --git a/ydb/core/keyvalue/ya.make b/ydb/core/keyvalue/ya.make index 740eae043d01..3a014e31316d 100644 --- a/ydb/core/keyvalue/ya.make +++ b/ydb/core/keyvalue/ya.make @@ -45,7 +45,6 @@ PEERDIR( ydb/library/actors/protos ydb/core/base ydb/core/blobstorage/base - ydb/core/control/common_controls ydb/core/engine/minikql ydb/core/keyvalue/protos ydb/core/protos diff --git a/ydb/core/kqp/session_actor/kqp_query_state.h b/ydb/core/kqp/session_actor/kqp_query_state.h index 48f32a7342a2..353e1314601e 100644 --- a/ydb/core/kqp/session_actor/kqp_query_state.h +++ b/ydb/core/kqp/session_actor/kqp_query_state.h @@ -63,7 +63,7 @@ class TKqpQueryState : public TNonCopyable { SetQueryDeadlines(tableServiceConfig, queryServiceConfig); auto action = GetAction(); KqpSessionSpan = NWilson::TSpan( - TWilsonKqp::KqpSession, std::move(RequestEv->GetWilsonTraceId()), + TWilsonKqp::KqpSession, std::move(ev->TraceId), "Session.query." + NKikimrKqp::EQueryAction_Name(action), NWilson::EFlags::AUTO_END); if (RequestEv->GetUserRequestContext()) { UserRequestContext = RequestEv->GetUserRequestContext(); diff --git a/ydb/core/protos/config.proto b/ydb/core/protos/config.proto index b7f023240eec..ec5ce939a55f 100644 --- a/ydb/core/protos/config.proto +++ b/ydb/core/protos/config.proto @@ -1248,55 +1248,6 @@ message TImmediateControlsConfig { DefaultValue: 8388608 }]; } - message TTracingControls { - message TSamplingThrottlingOptions { - message TThrottlingOptions { - optional uint64 MaxRatePerMinute = 1 [(ControlOptions) = { - Description: "Maximum amount of traced requests per minute", - MinValue: 0, - MaxValue: 300, - DefaultValue: 0, - }]; - optional uint64 MaxBurst = 2 [(ControlOptions) = { - Description: "Maximum burst of traced events", - MinValue: 0, - MaxValue: 300, - DefaultValue: 0, - }]; - } - - message TSamplingOptions { - optional uint64 PPM = 1 [(ControlOptions) = { - Description: "Average amount of sampled requests per one million", - MinValue: 0, - MaxValue: 1000000, - DefaultValue: 0, - }]; - optional uint64 Level = 2 [(ControlOptions) = { - Description: "Tracing level of sampled requests", - MinValue: 1, - MaxValue: 15, - DefaultValue: 15, - }]; - } - - optional TSamplingOptions Sampling = 1; - optional TThrottlingOptions SampledThrottling = 2; - optional TThrottlingOptions ExternalThrottling = 3; - } - - message TKeyValue { - optional TSamplingThrottlingOptions AcquireLock = 1; - optional TSamplingThrottlingOptions ExecuteTransaction = 2; - optional TSamplingThrottlingOptions Read = 3; - optional TSamplingThrottlingOptions ReadRange = 4; - optional TSamplingThrottlingOptions ListRange = 5; - optional TSamplingThrottlingOptions GetStorageChannelStatus = 6; - } - - optional TKeyValue KeyValue = 1; - } - message TVDiskControls { // SyncLog Data cutter options, not merged to 24-1 reserved 1; @@ -1350,7 +1301,7 @@ message TImmediateControlsConfig { optional TCoordinatorControls CoordinatorControls = 3; optional TSchemeShardControls SchemeShardControls = 4; optional TTCMallocControls TCMallocControls = 5; - optional TTracingControls TracingControls = 6; + reserved 6; optional TVDiskControls VDiskControls = 7; optional TTabletControls TabletControls = 8; }; @@ -1658,33 +1609,88 @@ message TBackgroundCleaningConfig { } message TTracingConfig { - message TAuthConfig { - message TTvm { - optional string Host = 1; - optional uint32 Port = 2; + message TBackendConfig { + message TAuthConfig { + message TTvmAuth { + optional string Url = 1; + + optional uint32 SelfTvmId = 2; + optional uint32 TracingTvmId = 3; - required uint32 SelfTvmId = 3; - required uint32 TracingTvmId = 4; + optional string DiskCacheDir = 4; - optional string DiskCacheDir = 5; + oneof Secret { + string PlainTextSecret = 5; + string SecretFile = 6; + string SecretEnvironmentVariable = 7; + } + } - oneof Secret { - string PlainTextSecret = 6; - string SecretFile = 7; - string SecretEnvironmentVariable = 8; + oneof Method { + TTvmAuth Tvm = 1; } } - oneof Method { - TTvm Tvm = 1; + message TOpentelemetryBackend { + optional string CollectorUrl = 1; + optional string ServiceName = 2; + } + + + oneof Backend { + TOpentelemetryBackend Opentelemetry = 1; } + optional TAuthConfig AuthConfig = 2; } - optional string Host = 1; - optional uint32 Port = 2; - optional string RootCA = 3; - optional string ServiceName = 4; - optional TAuthConfig AuthConfig = 5; + message TSelectors { + reserved 1; + repeated string RequestTypes = 3; + optional string Database = 2; + } + + message TSamplingRule { + // scope to which the rule applies + optional TSelectors Scope = 1; + // fraction of requests sampled by this rule + optional float Fraction = 2; + // detalisation of traces sampled by this rule + optional uint32 Level = 3; + // maximum average amount of traces sampled by this rule + optional uint64 MaxTracesPerMinute = 4; + // maximum burst of traces sampled by this rule + optional uint64 MaxTracesBurst = 5; + } + + // field meaning is the same as in TSamplingRule + message TExternalThrottlingRule { + optional TSelectors Scope = 1; + optional uint64 MaxTracesPerMinute = 2; + optional uint64 MaxTracesBurst = 3; + } + + message TUploaderConfig { + // maximum average amount of spans uploaded from the node + optional uint64 MaxExportedSpansPerSecond = 1; + // maximum batch size in spans + optional uint64 MaxSpansInBatch = 2; + // maximum batch size in bytes + optional uint64 MaxBytesInBatch = 3; + // maximum batch accumulation time + optional uint64 MaxBatchAccumulationMilliseconds = 4; + // time after which generated span will be discarded and will + // not be sent to the collector + optional uint32 SpanExportTimeoutSeconds = 5; + // maximum batch export requests being run simultaneously + optional uint64 MaxExportRequestsInflight = 6; + } + + reserved 1 to 5; + + optional TBackendConfig Backend = 6; + repeated TSamplingRule Sampling = 7; + repeated TExternalThrottlingRule ExternalThrottling = 8; + optional TUploaderConfig Uploader = 9; } message TFailureInjectionConfig { diff --git a/ydb/core/tablet/tablet_req_writelog.cpp b/ydb/core/tablet/tablet_req_writelog.cpp index 864755528b60..619facd2dcd9 100644 --- a/ydb/core/tablet/tablet_req_writelog.cpp +++ b/ydb/core/tablet/tablet_req_writelog.cpp @@ -154,7 +154,7 @@ class TTabletReqWriteLog : public TActorBootstrapped<TTabletReqWriteLog> { , CommitTactic(commitTactic) , Info(info) , RepliesToWait(Max<ui32>()) - , RequestSpan(TWilsonTablet::Tablet, std::move(traceId), "Tablet.WriteLog") + , RequestSpan(TWilsonTablet::TabletDetailed, std::move(traceId), "Tablet.WriteLog") { References.swap(refs); Y_ABORT_UNLESS(Info); @@ -171,9 +171,9 @@ class TTabletReqWriteLog : public TActorBootstrapped<TTabletReqWriteLog> { NWilson::TTraceId innerTraceId; if (RequestSpan) { - auto res = BlobSpans.try_emplace(ref.Id, TWilsonTablet::Tablet, RequestSpan.GetTraceId(), "Tablet.WriteLog.Reference"); + auto res = BlobSpans.try_emplace(ref.Id, TWilsonTablet::TabletDetailed, RequestSpan.GetTraceId(), "Tablet.WriteLog.Reference"); - innerTraceId = std::move(res.first->second.GetTraceId()); + innerTraceId = res.first->second.GetTraceId(); } SendToBS(ref.Id, ref.Buffer, ctx, handleClass, ref.Tactic ? *ref.Tactic : CommitTactic, std::move(innerTraceId)); @@ -191,7 +191,7 @@ class TTabletReqWriteLog : public TActorBootstrapped<TTabletReqWriteLog> { NWilson::TTraceId traceId; if (RequestSpan) { - auto res = BlobSpans.try_emplace(actualLogEntryId, TWilsonTablet::Tablet, RequestSpan.GetTraceId(), "Tablet.WriteLog.LogEntry"); + auto res = BlobSpans.try_emplace(actualLogEntryId, TWilsonTablet::TabletDetailed, RequestSpan.GetTraceId(), "Tablet.WriteLog.LogEntry"); traceId = std::move(res.first->second.GetTraceId()); } diff --git a/ydb/core/tablet_flat/flat_exec_seat.h b/ydb/core/tablet_flat/flat_exec_seat.h index 500b711fadbd..2eef8f0c59f6 100644 --- a/ydb/core/tablet_flat/flat_exec_seat.h +++ b/ydb/core/tablet_flat/flat_exec_seat.h @@ -35,7 +35,7 @@ namespace NTabletFlatExecutor { void Terminate(ETerminationReason reason, const TActorContext& ctx) noexcept; void StartEnqueuedSpan() noexcept { - WaitingSpan = NWilson::TSpan(TWilsonTablet::Tablet, Self->TxSpan.GetTraceId(), "Tablet.Transaction.Enqueued"); + WaitingSpan = NWilson::TSpan(TWilsonTablet::TabletDetailed, Self->TxSpan.GetTraceId(), "Tablet.Transaction.Enqueued"); } void FinishEnqueuedSpan() noexcept { @@ -43,7 +43,7 @@ namespace NTabletFlatExecutor { } void CreatePendingSpan() noexcept { - WaitingSpan = NWilson::TSpan(TWilsonTablet::Tablet, Self->TxSpan.GetTraceId(), "Tablet.Transaction.Pending"); + WaitingSpan = NWilson::TSpan(TWilsonTablet::TabletDetailed, Self->TxSpan.GetTraceId(), "Tablet.Transaction.Pending"); } void FinishPendingSpan() noexcept { diff --git a/ydb/core/tablet_flat/flat_executor.cpp b/ydb/core/tablet_flat/flat_executor.cpp index d46455f49554..fbc8e7f45c47 100644 --- a/ydb/core/tablet_flat/flat_executor.cpp +++ b/ydb/core/tablet_flat/flat_executor.cpp @@ -4241,7 +4241,7 @@ TString TExecutor::CheckBorrowConsistency() { TTransactionWaitPad::TTransactionWaitPad(THolder<TSeat> seat) : Seat(std::move(seat)) - , WaitingSpan(NWilson::TSpan(TWilsonTablet::Tablet, Seat->GetTxTraceId(), "Tablet.Transaction.Wait")) + , WaitingSpan(NWilson::TSpan(TWilsonTablet::TabletDetailed, Seat->GetTxTraceId(), "Tablet.Transaction.Wait")) {} TTransactionWaitPad::~TTransactionWaitPad() diff --git a/ydb/core/tablet_flat/tablet_flat_executor.h b/ydb/core/tablet_flat/tablet_flat_executor.h index edd006ed266f..c099417b9d94 100644 --- a/ydb/core/tablet_flat/tablet_flat_executor.h +++ b/ydb/core/tablet_flat/tablet_flat_executor.h @@ -229,7 +229,7 @@ class TTransactionContext : public TTxMemoryProviderBase { } void StartExecutionSpan() noexcept { - TransactionExecutionSpan = NWilson::TSpan(TWilsonTablet::Tablet, TransactionSpan.GetTraceId(), "Tablet.Transaction.Execute"); + TransactionExecutionSpan = NWilson::TSpan(TWilsonTablet::TabletDetailed, TransactionSpan.GetTraceId(), "Tablet.Transaction.Execute"); } void FinishExecutionSpan() noexcept { @@ -289,7 +289,7 @@ class ITransaction : TNonCopyable { { } ITransaction(NWilson::TTraceId &&traceId) - : TxSpan(NWilson::TSpan(TWilsonTablet::Tablet, std::move(traceId), "Tablet.Transaction")) + : TxSpan(NWilson::TSpan(TWilsonTablet::TabletBasic, std::move(traceId), "Tablet.Transaction")) { } virtual ~ITransaction() = default; @@ -312,8 +312,10 @@ class ITransaction : TNonCopyable { } void SetupTxSpan(NWilson::TTraceId traceId) noexcept { - TxSpan = NWilson::TSpan(TWilsonTablet::Tablet, std::move(traceId), "Tablet.Transaction"); - TxSpan.Attribute("Type", TypeName(*this)); + TxSpan = NWilson::TSpan(TWilsonTablet::TabletBasic, std::move(traceId), "Tablet.Transaction"); + if (TxSpan) { + TxSpan.Attribute("Type", TypeName(*this)); + } } public: diff --git a/ydb/core/testlib/test_client.cpp b/ydb/core/testlib/test_client.cpp index f6816c4063da..9cb347017589 100644 --- a/ydb/core/testlib/test_client.cpp +++ b/ydb/core/testlib/test_client.cpp @@ -45,6 +45,7 @@ #include <ydb/core/cms/console/configs_dispatcher.h> #include <ydb/core/cms/console/console.h> #include <ydb/core/cms/console/immediate_controls_configurator.h> +#include <ydb/core/cms/console/jaeger_tracing_configurator.h> #include <ydb/core/formats/clickhouse_block.h> #include <ydb/core/security/ticket_parser.h> #include <ydb/core/security/ldap_auth_provider.h> @@ -306,14 +307,19 @@ namespace Tests { grpcRequestProxies.reserve(proxyCount); auto& appData = Runtime->GetAppData(); + NJaegerTracing::TSamplingThrottlingConfigurator tracingConfigurator(appData.TimeProvider, appData.RandomProvider); for (size_t i = 0; i < proxyCount; ++i) { - auto grpcRequestProxy = NGRpcService::CreateGRpcRequestProxy(*Settings->AppConfig, appData.Icb); + auto grpcRequestProxy = NGRpcService::CreateGRpcRequestProxy(*Settings->AppConfig, tracingConfigurator.GetControl()); auto grpcRequestProxyId = system->Register(grpcRequestProxy, TMailboxType::ReadAsFilled); system->RegisterLocalService(NGRpcService::CreateGRpcRequestProxyId(), grpcRequestProxyId); grpcRequestProxies.push_back(grpcRequestProxyId); } + system->Register( + NConsole::CreateJaegerTracingConfigurator(std::move(tracingConfigurator), Settings->AppConfig->GetTracingConfig()) + ); + auto grpcMon = system->Register(NGRpcService::CreateGrpcMonService(), TMailboxType::ReadAsFilled); system->RegisterLocalService(NGRpcService::GrpcMonServiceId(), grpcMon); diff --git a/ydb/core/tx/datashard/datashard.cpp b/ydb/core/tx/datashard/datashard.cpp index d78e5f7126ef..d3e1afb78ac8 100644 --- a/ydb/core/tx/datashard/datashard.cpp +++ b/ydb/core/tx/datashard/datashard.cpp @@ -2947,8 +2947,10 @@ void TDataShard::ProposeTransaction(TEvDataShard::TEvProposeTransaction::TPtr && UpdateProposeQueueSize(); } else { // Prepare planned transactions as soon as possible - NWilson::TSpan datashardTransactionSpan(TWilsonTablet::Tablet, std::move(ev->TraceId), "Datashard.Transaction", NWilson::EFlags::AUTO_END); - datashardTransactionSpan.Attribute("Shard", std::to_string(TabletID())); + NWilson::TSpan datashardTransactionSpan(TWilsonTablet::TabletTopLevel, std::move(ev->TraceId), "Datashard.Transaction", NWilson::EFlags::AUTO_END); + if (datashardTransactionSpan) { + datashardTransactionSpan.Attribute("Shard", std::to_string(TabletID())); + } Execute(new TTxProposeTransactionBase(this, std::move(ev), TAppData::TimeProvider->Now(), NextTieBreakerIndex++, /* delayed */ false, std::move(datashardTransactionSpan)), ctx); } @@ -2968,8 +2970,10 @@ void TDataShard::ProposeTransaction(NEvents::TDataEvents::TEvWrite::TPtr&& ev, c UpdateProposeQueueSize(); } else { // Prepare planned transactions as soon as possible - NWilson::TSpan datashardTransactionSpan(TWilsonTablet::Tablet, std::move(ev->TraceId), "Datashard.WriteTransaction", NWilson::EFlags::AUTO_END); - datashardTransactionSpan.Attribute("Shard", std::to_string(TabletID())); + NWilson::TSpan datashardTransactionSpan(TWilsonTablet::TabletTopLevel, std::move(ev->TraceId), "Datashard.WriteTransaction", NWilson::EFlags::AUTO_END); + if (datashardTransactionSpan) { + datashardTransactionSpan.Attribute("Shard", std::to_string(TabletID())); + } Execute(new TTxWrite(this, std::move(ev), TAppData::TimeProvider->Now(), NextTieBreakerIndex++, /* delayed */ false, std::move(datashardTransactionSpan)), ctx); } @@ -3036,16 +3040,20 @@ void TDataShard::Handle(TEvPrivate::TEvDelayedProposeTransaction::TPtr &ev, cons switch (item.Event->GetTypeRewrite()) { case TEvDataShard::TEvProposeTransaction::EventType: { auto event = IEventHandle::Downcast<TEvDataShard::TEvProposeTransaction>(std::move(item.Event)); - NWilson::TSpan datashardTransactionSpan(TWilsonTablet::Tablet, std::move(event->TraceId), "Datashard.Transaction", NWilson::EFlags::AUTO_END); - datashardTransactionSpan.Attribute("Shard", std::to_string(TabletID())); + NWilson::TSpan datashardTransactionSpan(TWilsonTablet::TabletTopLevel, std::move(event->TraceId), "Datashard.Transaction", NWilson::EFlags::AUTO_END); + if (datashardTransactionSpan) { + datashardTransactionSpan.Attribute("Shard", std::to_string(TabletID())); + } Execute(new TTxProposeTransactionBase(this, std::move(event), item.ReceivedAt, item.TieBreakerIndex, /* delayed */ true, std::move(datashardTransactionSpan)), ctx); return; } case NEvents::TDataEvents::TEvWrite::EventType: { auto event = IEventHandle::Downcast<NEvents::TDataEvents::TEvWrite>(std::move(item.Event)); - NWilson::TSpan datashardTransactionSpan(TWilsonTablet::Tablet, std::move(event->TraceId), "Datashard.WriteTransaction", NWilson::EFlags::AUTO_END); - datashardTransactionSpan.Attribute("Shard", std::to_string(TabletID())); + NWilson::TSpan datashardTransactionSpan(TWilsonTablet::TabletTopLevel, std::move(event->TraceId), "Datashard.WriteTransaction", NWilson::EFlags::AUTO_END); + if (datashardTransactionSpan) { + datashardTransactionSpan.Attribute("Shard", std::to_string(TabletID())); + } Execute(new TTxWrite(this, std::move(event), item.ReceivedAt, item.TieBreakerIndex, /* delayed */ true, std::move(datashardTransactionSpan)), ctx); return; diff --git a/ydb/core/tx/datashard/datashard__op_rows.cpp b/ydb/core/tx/datashard/datashard__op_rows.cpp index 5cee5d62acab..0372e649947e 100644 --- a/ydb/core/tx/datashard/datashard__op_rows.cpp +++ b/ydb/core/tx/datashard/datashard__op_rows.cpp @@ -16,7 +16,7 @@ class TTxDirectBase : public TTransactionBase<TDataShard> { public: TTxDirectBase(TDataShard* ds, TEvRequest ev) - : TBase(ds) + : TBase(ds, std::move(ev->TraceId)) , Ev(ev) { } diff --git a/ydb/core/tx/datashard/datashard__read_iterator.cpp b/ydb/core/tx/datashard/datashard__read_iterator.cpp index 2c2cff174e9d..e59adc95af56 100644 --- a/ydb/core/tx/datashard/datashard__read_iterator.cpp +++ b/ydb/core/tx/datashard/datashard__read_iterator.cpp @@ -2554,7 +2554,7 @@ void TDataShard::Handle(TEvDataShard::TEvRead::TPtr& ev, const TActorContext& ct auto* request = ev->Get(); if (!request->ReadSpan) { - request->ReadSpan = NWilson::TSpan(TWilsonTablet::Tablet, std::move(ev->TraceId), "Datashard.Read", NWilson::EFlags::AUTO_END); + request->ReadSpan = NWilson::TSpan(TWilsonTablet::TabletTopLevel, std::move(ev->TraceId), "Datashard.Read", NWilson::EFlags::AUTO_END); request->ReadSpan.Attribute("Shard", std::to_string(TabletID())); } diff --git a/ydb/core/tx/datashard/datashard_pipeline.cpp b/ydb/core/tx/datashard/datashard_pipeline.cpp index 15cfdc4c88f7..e0f8d2d2c2bd 100644 --- a/ydb/core/tx/datashard/datashard_pipeline.cpp +++ b/ydb/core/tx/datashard/datashard_pipeline.cpp @@ -1741,7 +1741,7 @@ EExecutionStatus TPipeline::RunExecutionPlan(TOperation::TPtr op, return EExecutionStatus::Reschedule; } - NWilson::TSpan unitSpan(TWilsonTablet::Tablet, txc.TransactionExecutionSpan.GetTraceId(), "Datashard.Unit"); + NWilson::TSpan unitSpan(TWilsonTablet::TabletDetailed, txc.TransactionExecutionSpan.GetTraceId(), "Datashard.Unit"); NCpuTime::TCpuTimer timer; auto status = unit.Execute(op, txc, ctx); diff --git a/ydb/core/tx/datashard/datashard_ut_trace.cpp b/ydb/core/tx/datashard/datashard_ut_trace.cpp index b7be979310cc..3eb2127496da 100644 --- a/ydb/core/tx/datashard/datashard_ut_trace.cpp +++ b/ydb/core/tx/datashard/datashard_ut_trace.cpp @@ -31,79 +31,8 @@ Y_UNIT_TEST_SUITE(TDataShardTrace) { auto &runtime = *server->GetRuntime(); TAutoPtr<IEventHandle> handle; - THolder<NKqp::TEvKqp::TEvQueryRequest> request; - if (traceId) { - struct RequestCtx : NGRpcService::IRequestCtxMtSafe { - RequestCtx(NWilson::TTraceId &&traceId) : TraceId(std::move(traceId)) {} - - NWilson::TTraceId GetWilsonTraceId() const override { - return TraceId.Clone(); - } - - TMaybe<TString> GetTraceId() const override { - return Nothing(); - } - - const TMaybe<TString> GetDatabaseName() const override { - return ""; - } - - const TIntrusiveConstPtr<NACLib::TUserToken>& GetInternalToken() const override { - return Ptr; - } - - const TString& GetSerializedToken() const override { - return Token; - } - - bool IsClientLost() const override { - return false; - }; - - virtual const google::protobuf::Message* GetRequest() const override { - return nullptr; - }; - - const TMaybe<TString> GetRequestType() const override { - return "_document_api_request"; - }; - - void SetFinishAction(std::function<void()>&& cb) override { - Y_UNUSED(cb); - }; - - google::protobuf::Arena* GetArena() override { - return nullptr; - }; - - TIntrusiveConstPtr<NACLib::TUserToken> Ptr; - TString Token; - NWilson::TTraceId TraceId; - }; - - auto *txControl = google::protobuf::Arena::CreateMessage<Ydb::Table::TransactionControl>(&arena); - txControl->mutable_begin_tx()->mutable_serializable_read_write(); - txControl->set_commit_tx(true); - - auto ptr = std::make_shared<RequestCtx>(std::move(traceId)); - request = MakeHolder<NKqp::TEvKqp::TEvQueryRequest>( - NKikimrKqp::QUERY_ACTION_EXECUTE, - NKikimrKqp::QUERY_TYPE_SQL_DML, - TActorId(), - ptr, - TString(), //sessionId - TString(sql), - TString(), //queryId - txControl, //tx_control - nullptr, //ydbParameters - Ydb::Table::QueryStatsCollection::STATS_COLLECTION_UNSPECIFIED, //collectStats - nullptr, // query_cache_policy - nullptr //operationParams - ); - } else { - request = MakeSQLRequest(sql, true); - } - runtime.Send(new IEventHandle(NKqp::MakeKqpProxyID(runtime.GetNodeId()), sender, request.Release(), 0, 0, nullptr)); + THolder<NKqp::TEvKqp::TEvQueryRequest> request = MakeSQLRequest(sql, true); + runtime.Send(new IEventHandle(NKqp::MakeKqpProxyID(runtime.GetNodeId()), sender, request.Release(), 0, 0, nullptr, std::move(traceId))); auto ev = runtime.GrabEdgeEventRethrow<NKqp::TEvKqp::TEvQueryResponse>(sender); UNIT_ASSERT_VALUES_EQUAL(ev->Get()->Record.GetRef().GetYdbStatus(), code); } diff --git a/ydb/core/tx/datashard/export_common.h b/ydb/core/tx/datashard/export_common.h index df3434a45cc7..631e8c71e1b9 100644 --- a/ydb/core/tx/datashard/export_common.h +++ b/ydb/core/tx/datashard/export_common.h @@ -3,6 +3,7 @@ #include "datashard_user_table.h" #include <ydb/core/protos/flat_scheme_op.pb.h> +#include <ydb/library/actors/core/log.h> #include <util/generic/map.h> #include <util/generic/maybe.h> diff --git a/ydb/core/tx/tx_proxy/upload_rows_common_impl.h b/ydb/core/tx/tx_proxy/upload_rows_common_impl.h index 16f4964299b5..0826905f9069 100644 --- a/ydb/core/tx/tx_proxy/upload_rows_common_impl.h +++ b/ydb/core/tx/tx_proxy/upload_rows_common_impl.h @@ -9,7 +9,6 @@ #include <ydb/core/formats/arrow/converter.h> #include <ydb/core/io_formats/arrow/csv_arrow.h> #include <ydb/core/base/tablet_pipecache.h> -#include <ydb/library/ydb_issue/issue_helpers.h> #include <ydb/core/base/path.h> #include <ydb/core/base/feature_flags.h> #include <ydb/core/scheme/scheme_tablecell.h> @@ -29,6 +28,8 @@ #undef INCLUDE_YDB_INTERNAL_H #include <ydb/library/actors/core/actor_bootstrapped.h> +#include <ydb/library/wilson_ids/wilson.h> +#include <ydb/library/ydb_issue/issue_helpers.h> #include <util/string/join.h> #include <util/string/vector.h> @@ -208,18 +209,21 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit std::shared_ptr<arrow::RecordBatch> Batch; float RuCost = 0.0; + NWilson::TSpan Span; + public: static constexpr NKikimrServices::TActivity::EType ActorActivityType() { return DerivedActivityType; } - explicit TUploadRowsBase(TDuration timeout = TDuration::Max(), bool diskQuotaExceeded = false) + explicit TUploadRowsBase(TDuration timeout = TDuration::Max(), bool diskQuotaExceeded = false, NWilson::TSpan span = {}) : TBase() , SchemeCache(MakeSchemeCacheID()) , LeaderPipeCache(MakePipePeNodeCacheID(false)) , Timeout((timeout && timeout <= DEFAULT_TIMEOUT) ? timeout : DEFAULT_TIMEOUT) , Status(Ydb::StatusIds::SUCCESS) , DiskQuotaExceeded(diskQuotaExceeded) + , Span(std::move(span)) {} void Bootstrap(const NActors::TActorContext& ctx) { @@ -232,10 +236,10 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit for (auto& pr : ShardUploadRetryStates) { if (pr.second.SentOverloadSeqNo) { auto* msg = new TEvDataShard::TEvOverloadUnsubscribe(pr.second.SentOverloadSeqNo); - ctx.Send(LeaderPipeCache, new TEvPipeCache::TEvForward(msg, pr.first, false)); + ctx.Send(LeaderPipeCache, new TEvPipeCache::TEvForward(msg, pr.first, false), 0, 0, Span.GetTraceId()); } } - ctx.Send(LeaderPipeCache, new TEvPipeCache::TEvUnlink(0)); + ctx.Send(LeaderPipeCache, new TEvPipeCache::TEvUnlink(0), 0, 0, Span.GetTraceId()); if (TimeoutTimerActorId) { ctx.Send(TimeoutTimerActorId, new TEvents::TEvPoisonPill()); } @@ -330,6 +334,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit private: void Handle(TEvents::TEvPoison::TPtr&, const TActorContext& ctx) { OnBeforePoison(ctx); + Span.EndError("poison"); Die(ctx); } @@ -595,7 +600,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit entry.SyncVersion = true; entry.ShowPrivatePath = AllowWriteToPrivateTable; request->ResultSet.emplace_back(entry); - ctx.Send(SchemeCache, new TEvTxProxySchemeCache::TEvNavigateKeySet(request)); + ctx.Send(SchemeCache, new TEvTxProxySchemeCache::TEvNavigateKeySet(request), 0, 0, Span.GetTraceId()); TimeoutTimerActorId = CreateLongTimer(ctx, Timeout, new IEventHandle(ctx.SelfID, ctx.SelfID, new TEvents::TEvWakeup())); @@ -743,7 +748,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit // Begin Long Tx for writing a batch into OLAP table TActorId longTxServiceId = NLongTxService::MakeLongTxServiceID(ctx.SelfID.NodeId()); NKikimrLongTxService::TEvBeginTx::EMode mode = NKikimrLongTxService::TEvBeginTx::MODE_WRITE_ONLY; - ctx.Send(longTxServiceId, new NLongTxService::TEvLongTxService::TEvBeginTx(GetDatabase(), mode)); + ctx.Send(longTxServiceId, new NLongTxService::TEvLongTxService::TEvBeginTx(GetDatabase(), mode), 0, 0, Span.GetTraceId()); TBase::Become(&TThis::StateWaitBeginLongTx); } @@ -861,7 +866,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit LogPrefix() << "rolling back LongTx '" << LongTxId.ToString() << "'"); TActorId longTxServiceId = NLongTxService::MakeLongTxServiceID(ctx.SelfID.NodeId()); - ctx.Send(longTxServiceId, new NLongTxService::TEvLongTxService::TEvRollbackTx(LongTxId)); + ctx.Send(longTxServiceId, new NLongTxService::TEvLongTxService::TEvRollbackTx(LongTxId), 0, 0, Span.GetTraceId()); } STFUNC(StateWaitWriteBatchResult) { @@ -887,7 +892,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit void CommitLongTx(const TActorContext& ctx) { TActorId longTxServiceId = NLongTxService::MakeLongTxServiceID(ctx.SelfID.NodeId()); - ctx.Send(longTxServiceId, new NLongTxService::TEvLongTxService::TEvCommitTx(LongTxId)); + ctx.Send(longTxServiceId, new NLongTxService::TEvLongTxService::TEvCommitTx(LongTxId), 0, 0, Span.GetTraceId()); TBase::Become(&TThis::StateWaitCommitLongTx); } @@ -966,7 +971,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit request->ResultSet.emplace_back(std::move(keyRange)); TAutoPtr<TEvTxProxySchemeCache::TEvResolveKeySet> resolveReq(new TEvTxProxySchemeCache::TEvResolveKeySet(request)); - ctx.Send(SchemeCache, resolveReq.Release()); + ctx.Send(SchemeCache, resolveReq.Release(), 0, 0, Span.GetTraceId()); TBase::Become(&TThis::StateWaitResolveShards); } @@ -1027,7 +1032,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit ev->Record.SetOverloadSubscribe(seqNo); state->SentOverloadSeqNo = seqNo; - ctx.Send(LeaderPipeCache, new TEvPipeCache::TEvForward(ev.release(), shardId, true), IEventHandle::FlagTrackDelivery); + ctx.Send(LeaderPipeCache, new TEvPipeCache::TEvForward(ev.release(), shardId, true), IEventHandle::FlagTrackDelivery, 0, Span.GetTraceId()); } void MakeShardRequests(const NActors::TActorContext& ctx) { @@ -1109,7 +1114,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit ev->Record.SetOverloadSubscribe(seqNo); uploadRetryStates[idx]->SentOverloadSeqNo = seqNo; - ctx.Send(LeaderPipeCache, new TEvPipeCache::TEvForward(ev.release(), shardId, true), IEventHandle::FlagTrackDelivery); + ctx.Send(LeaderPipeCache, new TEvPipeCache::TEvForward(ev.release(), shardId, true), IEventHandle::FlagTrackDelivery, 0, Span.GetTraceId()); auto res = ShardRepliesLeft.insert(shardId); if (!res.second) { @@ -1133,7 +1138,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit } void Handle(TEvPipeCache::TEvDeliveryProblem::TPtr &ev, const TActorContext &ctx) { - ctx.Send(SchemeCache, new TEvTxProxySchemeCache::TEvInvalidateTable(GetKeyRange()->TableId, TActorId())); + ctx.Send(SchemeCache, new TEvTxProxySchemeCache::TEvInvalidateTable(GetKeyRange()->TableId, TActorId()), 0, 0, Span.GetTraceId()); SetError(Ydb::StatusIds::UNAVAILABLE, Sprintf("Failed to connect to shard %" PRIu64, ev->Get()->TabletId)); ShardRepliesLeft.erase(ev->Get()->TabletId); @@ -1170,7 +1175,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit switch (shardResponse.GetStatus()) { case NKikimrTxDataShard::TError::WRONG_SHARD_STATE: case NKikimrTxDataShard::TError::SHARD_IS_BLOCKED: - ctx.Send(SchemeCache, new TEvTxProxySchemeCache::TEvInvalidateTable(GetKeyRange()->TableId, TActorId())); + ctx.Send(SchemeCache, new TEvTxProxySchemeCache::TEvInvalidateTable(GetKeyRange()->TableId, TActorId()), 0, 0, Span.GetTraceId()); status = Ydb::StatusIds::OVERLOADED; break; case NKikimrTxDataShard::TError::DISK_SPACE_EXHAUSTED: @@ -1203,7 +1208,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit } // Notify the cache that we are done with the pipe - ctx.Send(LeaderPipeCache, new TEvPipeCache::TEvUnlink(shardId)); + ctx.Send(LeaderPipeCache, new TEvPipeCache::TEvUnlink(shardId), 0, 0, Span.GetTraceId()); ShardRepliesLeft.erase(shardId); ShardUploadRetryStates.erase(shardId); @@ -1266,6 +1271,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit Y_DEBUG_ABORT_UNLESS(status != ::Ydb::StatusIds::SUCCESS); RollbackLongTx(ctx); } + Span.EndOk(); Die(ctx); } diff --git a/ydb/core/util/wilson.h b/ydb/core/util/wilson.h new file mode 100644 index 000000000000..1fbf9c4d51d7 --- /dev/null +++ b/ydb/core/util/wilson.h @@ -0,0 +1,14 @@ +#include <ydb/public/api/protos/ydb_status_codes.pb.h> +#include <ydb/library/actors/wilson/wilson_span.h> + +namespace NWilson { + +inline void EndSpanWithStatus(NWilson::TSpan& span, Ydb::StatusIds::StatusCode statusCode) { + if (statusCode == Ydb::StatusIds::SUCCESS) { + span.EndOk(); + } else { + span.EndError(Ydb::StatusIds_StatusCode_Name(statusCode)); + } +} + +} // namespace NWilson diff --git a/ydb/core/util/ya.make b/ydb/core/util/ya.make index b321355669a9..abcd51fb3586 100644 --- a/ydb/core/util/ya.make +++ b/ydb/core/util/ya.make @@ -60,12 +60,14 @@ SRCS( ui64id.cpp ui64id.h wildcard.h + wilson.h ) PEERDIR( ydb/library/actors/core ydb/library/actors/interconnect/mock ydb/library/actors/util + ydb/library/actors/wilson library/cpp/containers/stack_vector library/cpp/html/escape library/cpp/ipmath diff --git a/ydb/core/ya.make b/ydb/core/ya.make index ddc2239a6b06..448497f2b4cd 100644 --- a/ydb/core/ya.make +++ b/ydb/core/ya.make @@ -60,6 +60,7 @@ RECURSE( ymq driver_lib yql_testlib + jaeger_tracing ) RECURSE_FOR_TESTS( diff --git a/ydb/library/actors/wilson/wilson_span.cpp b/ydb/library/actors/wilson/wilson_span.cpp index ac66ac2ef002..233397a9abf2 100644 --- a/ydb/library/actors/wilson/wilson_span.cpp +++ b/ydb/library/actors/wilson/wilson_span.cpp @@ -1,5 +1,6 @@ #include "wilson_span.h" #include "wilson_uploader.h" +#include <util/system/backtrace.h> #include <google/protobuf/text_format.h> namespace NWilson { @@ -62,6 +63,19 @@ namespace NWilson { Data->Sent = true; } + TSpan& TSpan::operator=(TSpan&& other) { + if (this != &other) { + if (Y_UNLIKELY(*this)) { + TStringStream err; + err << "TSpan instance incorrectly overwritten at:\n"; + FormatBackTrace(&err); + EndError(std::move(err.Str())); + } + Data = std::exchange(other.Data, nullptr); + } + return *this; + } + const TSpan TSpan::Empty; } // NWilson diff --git a/ydb/library/actors/wilson/wilson_span.h b/ydb/library/actors/wilson/wilson_span.h index d8bd9116c6f3..20170a896ea7 100644 --- a/ydb/library/actors/wilson/wilson_span.h +++ b/ydb/library/actors/wilson/wilson_span.h @@ -126,16 +126,7 @@ namespace NWilson { } TSpan& operator =(const TSpan&) = delete; - - TSpan& operator =(TSpan&& other) { - if (this != &other) { - if (Y_UNLIKELY(*this)) { - EndError("TSpan instance incorrectly overwritten"); - } - Data = std::exchange(other.Data, nullptr); - } - return *this; - } + TSpan& operator=(TSpan&& other); explicit operator bool() const { return Data && !Data->Sent && !Data->Ignored; diff --git a/ydb/library/actors/wilson/wilson_trace.cpp b/ydb/library/actors/wilson/wilson_trace.cpp index ec244856bc43..28bdb7efa801 100644 --- a/ydb/library/actors/wilson/wilson_trace.cpp +++ b/ydb/library/actors/wilson/wilson_trace.cpp @@ -4,7 +4,7 @@ #include <util/string/hex.h> namespace NWilson { - TTraceId TTraceId::FromTraceparentHeader(const TStringBuf header) { + TTraceId TTraceId::FromTraceparentHeader(const TStringBuf header, ui8 verbosity) { constexpr size_t versionChars = 2; // Only version 0 is supported constexpr size_t versionStart = 0; @@ -61,7 +61,7 @@ namespace NWilson { return {}; } - return TTraceId(traceId, spanId, 15, Max<ui32>()); + return TTraceId(traceId, spanId, verbosity, Max<ui32>()); } TString TTraceId::GetHexTraceId() const { diff --git a/ydb/library/actors/wilson/wilson_trace.h b/ydb/library/actors/wilson/wilson_trace.h index 0db42776f922..841a4b9e40be 100644 --- a/ydb/library/actors/wilson/wilson_trace.h +++ b/ydb/library/actors/wilson/wilson_trace.h @@ -181,7 +181,7 @@ namespace NWilson { return TTraceId(); } - static TTraceId FromTraceparentHeader(const TStringBuf header); + static TTraceId FromTraceparentHeader(const TStringBuf header, ui8 verbosity = 15); TTraceId Span(ui8 verbosity) const { Validate(); diff --git a/ydb/library/actors/wilson/wilson_uploader.cpp b/ydb/library/actors/wilson/wilson_uploader.cpp index 778c2b24f772..938f856e75dd 100644 --- a/ydb/library/actors/wilson/wilson_uploader.cpp +++ b/ydb/library/actors/wilson/wilson_uploader.cpp @@ -1,12 +1,16 @@ #include "wilson_uploader.h" + #include <ydb/library/actors/core/actor_bootstrapped.h> #include <ydb/library/actors/core/hfunc.h> #include <ydb/library/actors/core/log.h> #include <contrib/libs/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.pb.h> #include <contrib/libs/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.grpc.pb.h> +#include <library/cpp/string_utils/url/url.h> #include <util/stream/file.h> #include <util/string/hex.h> + #include <chrono> +#include <queue> namespace NWilson { @@ -17,14 +21,92 @@ namespace NWilson { namespace { + struct TSpan { + TMonotonic ExpirationTimestamp; + NTraceProto::Span Span; + size_t Size; + }; + + class TBatch { + private: + ui64 MaxSpansInBatch; + ui64 MaxBytesInBatch; + + NServiceProto::ExportTraceServiceRequest Request; + NTraceProto::ScopeSpans* ScopeSpans; + ui64 SizeBytes = 0; + TMonotonic ExpirationTimestamp = TMonotonic::Zero(); + + public: + struct TData { + NServiceProto::ExportTraceServiceRequest Request; + ui64 SizeBytes; + ui64 SizeSpans; + TMonotonic ExpirationTimestamp; + }; + + TBatch(ui64 maxSpansInBatch, ui64 maxBytesInBatch, TString serviceName) + : MaxSpansInBatch(maxSpansInBatch) + , MaxBytesInBatch(maxBytesInBatch) + { + auto *rspan = Request.add_resource_spans(); + auto *serviceNameAttr = rspan->mutable_resource()->add_attributes(); + serviceNameAttr->set_key("service.name"); + serviceNameAttr->mutable_value()->set_string_value(std::move(serviceName)); + ScopeSpans = rspan->add_scope_spans(); + } + + size_t SizeSpans() const { + return ScopeSpans->spansSize(); + } + + bool IsEmpty() const { + return SizeSpans() == 0; + } + + bool Add(TSpan& span) { + if (SizeBytes + span.Size > MaxBytesInBatch || SizeSpans() == MaxSpansInBatch) { + return false; + } + SizeBytes += span.Size; + span.Span.Swap(ScopeSpans->add_spans()); + ExpirationTimestamp = span.ExpirationTimestamp; + return true; + } + + TData Complete() && { + return TData { + .Request = std::move(Request), + .SizeBytes = SizeBytes, + .SizeSpans = SizeSpans(), + .ExpirationTimestamp = ExpirationTimestamp, + }; + } + }; + + struct TExportRequestData : TIntrusiveListItem<TExportRequestData> { + std::unique_ptr<grpc::ClientContext> Context; + std::unique_ptr<grpc::ClientAsyncResponseReader<NServiceProto::ExportTraceServiceResponse>> Reader; + grpc::Status Status; + NServiceProto::ExportTraceServiceResponse Response; + }; + class TWilsonUploader : public TActorBootstrapped<TWilsonUploader> { static constexpr size_t WILSON_SERVICE_ID = 430; - TString Host; - ui16 Port; - TString RootCA; + ui64 MaxPendingSpanBytes = 100'000'000; + ui64 MaxSpansPerSecond; + ui64 MaxSpansInBatch; + ui64 MaxBytesInBatch; + TDuration MaxBatchAccumulation = TDuration::Seconds(1); + TDuration MaxSpanTimeInQueue; + ui64 MaxExportInflight; + + bool WakeupScheduled = false; + + TString CollectorUrl; TString ServiceName; std::shared_ptr<grpc::Channel> Channel; @@ -32,33 +114,30 @@ namespace NWilson { grpc::CompletionQueue CQ; std::unique_ptr<IGrpcSigner> GrpcSigner; - std::unique_ptr<grpc::ClientContext> Context; - std::unique_ptr<grpc::ClientAsyncResponseReader<NServiceProto::ExportTraceServiceResponse>> Reader; - NServiceProto::ExportTraceServiceResponse Response; - grpc::Status Status; - - struct TSpanQueueItem { - TMonotonic ExpirationTimestamp; - NTraceProto::Span Span; - ui32 Size; - }; - std::deque<TSpanQueueItem> Spans; - ui64 SpansSize = 0; + TBatch CurrentBatch; + std::queue<TBatch::TData> BatchQueue; + ui64 SpansSizeBytes = 0; TMonotonic NextSendTimestamp; - ui32 MaxSpansAtOnce = 25; - ui32 MaxSpansPerSecond = 10; - TDuration MaxSpanTimeInQueue = TDuration::Seconds(60); - bool WakeupScheduled = false; + bool BatchCompletionScheduled = false; + TMonotonic NextBatchCompletion; + + TIntrusiveListWithAutoDelete<TExportRequestData, TDelete> ExportRequests; + size_t ExportRequestsCount = 0; public: - TWilsonUploader(WilsonUploaderParams params) - : Host(std::move(params.Host)) - , Port(std::move(params.Port)) - , RootCA(std::move(params.RootCA)) + TWilsonUploader(TWilsonUploaderParams params) + : MaxSpansPerSecond(params.MaxExportedSpansPerSecond) + , MaxSpansInBatch(params.MaxSpansInBatch) + , MaxBytesInBatch(params.MaxBytesInBatch) + , MaxBatchAccumulation(TDuration::MilliSeconds(params.MaxBatchAccumulationMilliseconds)) + , MaxSpanTimeInQueue(TDuration::Seconds(params.SpanExportTimeoutSeconds)) + , MaxExportInflight(params.MaxExportRequestsInflight) + , CollectorUrl(std::move(params.CollectorUrl)) , ServiceName(std::move(params.ServiceName)) , GrpcSigner(std::move(params.GrpcSigner)) + , CurrentBatch(MaxSpansInBatch, MaxBytesInBatch, ServiceName) {} ~TWilsonUploader() { @@ -68,139 +147,227 @@ namespace NWilson { static constexpr char ActorName[] = "WILSON_UPLOADER_ACTOR"; void Bootstrap() { - Become(&TThis::StateFunc); + Become(&TThis::StateWork); + + if (MaxSpansPerSecond == 0) { + ALOG_WARN(WILSON_SERVICE_ID, "max_spans_per_second should be greater than 0, changing to 1"); + MaxSpansPerSecond = 1; + } + if (MaxSpansInBatch == 0) { + ALOG_WARN(WILSON_SERVICE_ID, "max_spans_in_batch shold be greater than 0, changing to 1"); + MaxSpansInBatch = 1; + } + if (MaxExportInflight == 0) { + ALOG_WARN(WILSON_SERVICE_ID, "max_span_export_inflight should be greater than 0, changing to 1"); + MaxExportInflight = 1; + } - Channel = grpc::CreateChannel(TStringBuilder() << Host << ":" << Port, RootCA ? grpc::SslCredentials({ - .pem_root_certs = TFileInput(RootCA).ReadAll(), - }) : grpc::InsecureChannelCredentials()); + TStringBuf scheme; + TStringBuf host; + ui16 port; + if (!TryGetSchemeHostAndPort(CollectorUrl, scheme, host, port)) { + ALOG_ERROR(WILSON_SERVICE_ID, "Failed to parse collector url (" << CollectorUrl << " was provided). Wilson wouldn't work"); + Become(&TThis::StateBroken); + return; + } else if (scheme != "grpc://" && scheme != "grpcs://") { + ALOG_ERROR(WILSON_SERVICE_ID, "Wrong scheme provided: " << scheme << " (only grpc:// and grpcs:// are supported). Wilson wouldn't work"); + Become(&TThis::StateBroken); + return; + } + Channel = grpc::CreateChannel(TStringBuilder() << host << ":" << port, + scheme == "grpcs://" ? grpc::SslCredentials({}) : grpc::InsecureChannelCredentials()); Stub = NServiceProto::TraceService::NewStub(Channel); - LOG_INFO_S(*TlsActivationContext, WILSON_SERVICE_ID, "TWilsonUploader::Bootstrap"); + ALOG_INFO(WILSON_SERVICE_ID, "TWilsonUploader::Bootstrap"); } void Handle(TEvWilson::TPtr ev) { - if (SpansSize >= 100'000'000) { - LOG_ERROR_S(*TlsActivationContext, WILSON_SERVICE_ID, "dropped span due to overflow"); + if (SpansSizeBytes >= MaxPendingSpanBytes) { + ALOG_ERROR(WILSON_SERVICE_ID, "dropped span due to overflow"); } else { - const TMonotonic expirationTimestamp = TActivationContext::Monotonic() + MaxSpanTimeInQueue; + const TMonotonic now = TActivationContext::Monotonic(); + const TMonotonic expirationTimestamp = now + MaxSpanTimeInQueue; auto& span = ev->Get()->Span; const ui32 size = span.ByteSizeLong(); - Spans.push_back(TSpanQueueItem{expirationTimestamp, std::move(span), size}); - SpansSize += size; + if (size > MaxBytesInBatch) { + ALOG_ERROR(WILSON_SERVICE_ID, "dropped span of size " << size << ", which exceeds max batch size " << MaxBytesInBatch); + return; + } + TSpan spanItem { + .ExpirationTimestamp = expirationTimestamp, + .Span = std::move(span), + .Size = size, + }; + SpansSizeBytes += size; + if (CurrentBatch.IsEmpty()) { + ScheduleBatchCompletion(now); + } + if (CurrentBatch.Add(spanItem)) { + return; + } + CompleteCurrentBatch(); TryMakeProgress(); + Y_ABORT_UNLESS(CurrentBatch.Add(spanItem), "failed to add span to empty batch"); + ScheduleBatchCompletion(now); + } + } + + void ScheduleBatchCompletionEvent() { + Y_ABORT_UNLESS(!BatchCompletionScheduled); + auto cookie = NextBatchCompletion.GetValue(); + TActivationContext::Schedule(NextBatchCompletion, new IEventHandle(TEvents::TSystem::Wakeup, 0, SelfId(), {}, nullptr, cookie)); + ALOG_TRACE(WILSON_SERVICE_ID, "scheduling batch completion w/ cookie=" << cookie); + BatchCompletionScheduled = true; + } + + void ScheduleBatchCompletion(TMonotonic now) { + NextBatchCompletion = now + MaxBatchAccumulation; + if (!BatchCompletionScheduled) { + ScheduleBatchCompletionEvent(); + } + } + + void CompleteCurrentBatch() { + if (CurrentBatch.IsEmpty()) { + return; } + BatchQueue.push(std::move(CurrentBatch).Complete()); + CurrentBatch = TBatch(MaxSpansInBatch, MaxBytesInBatch, ServiceName); } void TryToSend() { const TMonotonic now = TActivationContext::Monotonic(); ui32 numSpansDropped = 0; - while (!Spans.empty()) { - const TSpanQueueItem& item = Spans.front(); + while (!BatchQueue.empty()) { + const TBatch::TData& item = BatchQueue.front(); if (item.ExpirationTimestamp <= now) { - SpansSize -= item.Size; - Spans.pop_front(); - ++numSpansDropped; + SpansSizeBytes -= item.SizeBytes; + numSpansDropped += item.SizeSpans; + BatchQueue.pop(); } else { break; } } if (numSpansDropped) { - LOG_ERROR_S(*TlsActivationContext, WILSON_SERVICE_ID, + ALOG_ERROR(WILSON_SERVICE_ID, "dropped " << numSpansDropped << " span(s) due to expiration"); } - if (Context || Spans.empty()) { + if (ExportRequestsCount >= MaxExportInflight || BatchQueue.empty()) { return; } else if (now < NextSendTimestamp) { ScheduleWakeup(NextSendTimestamp); return; } - NServiceProto::ExportTraceServiceRequest request; - auto *rspan = request.add_resource_spans(); - auto *serviceNameAttr = rspan->mutable_resource()->add_attributes(); - serviceNameAttr->set_key("service.name"); - serviceNameAttr->mutable_value()->set_string_value(ServiceName); - auto *sspan = rspan->add_scope_spans(); - - NextSendTimestamp = now; - for (ui32 i = 0; i < MaxSpansAtOnce && !Spans.empty(); ++i, Spans.pop_front()) { - auto& item = Spans.front(); - auto& s = item.Span; - - LOG_DEBUG_S(*TlsActivationContext, WILSON_SERVICE_ID, "exporting span" - << " TraceId# " << HexEncode(s.trace_id()) - << " SpanId# " << HexEncode(s.span_id()) - << " ParentSpanId# " << HexEncode(s.parent_span_id()) - << " Name# " << s.name()); - - SpansSize -= item.Size; - s.Swap(sspan->add_spans()); - NextSendTimestamp += TDuration::MicroSeconds(1'000'000 / MaxSpansPerSecond); + TBatch::TData batch = std::move(BatchQueue.front()); + BatchQueue.pop(); + + ALOG_DEBUG(WILSON_SERVICE_ID, "exporting batch of " << batch.SizeSpans << " spans, total spans size: " << batch.SizeBytes); + Y_ABORT_UNLESS(batch.Request.resource_spansSize() == 1 && batch.Request.resource_spans(0).scope_spansSize() == 1); + for (const auto& span : batch.Request.resource_spans(0).scope_spans(0).spans()) { + ALOG_DEBUG(WILSON_SERVICE_ID, "exporting span" + << " TraceId# " << HexEncode(span.trace_id()) + << " SpanId# " << HexEncode(span.span_id()) + << " ParentSpanId# " << HexEncode(span.parent_span_id()) + << " Name# " << span.name()); } + NextSendTimestamp = now + TDuration::MicroSeconds((batch.SizeSpans * 1'000'000) / MaxSpansPerSecond); + SpansSizeBytes -= batch.SizeBytes; + ScheduleWakeup(NextSendTimestamp); - Context = std::make_unique<grpc::ClientContext>(); + + auto context = std::make_unique<grpc::ClientContext>(); if (GrpcSigner) { - GrpcSigner->SignClientContext(*Context); + GrpcSigner->SignClientContext(*context); } - Reader = Stub->AsyncExport(Context.get(), std::move(request), &CQ); - Reader->Finish(&Response, &Status, nullptr); + auto reader = Stub->AsyncExport(context.get(), std::move(batch.Request), &CQ); + auto uploadData = std::unique_ptr<TExportRequestData>(new TExportRequestData { + .Context = std::move(context), + .Reader = std::move(reader), + }); + uploadData->Reader->Finish(&uploadData->Response, &uploadData->Status, uploadData.get()); + ALOG_TRACE(WILSON_SERVICE_ID, "started export request " << (void*)uploadData.get()); + ExportRequests.PushBack(uploadData.release()); + ++ExportRequestsCount; } - void CheckIfDone() { - if (Context) { - void *tag; - bool ok; - if (CQ.AsyncNext(&tag, &ok, std::chrono::system_clock::now()) == grpc::CompletionQueue::GOT_EVENT) { - if (!Status.ok()) { - LOG_ERROR_S(*TlsActivationContext, WILSON_SERVICE_ID, - "failed to commit traces: " << Status.error_message()); - } - - Reader.reset(); - Context.reset(); - } else { - ScheduleWakeup(TDuration::MilliSeconds(100)); + void ReapCompletedRequests() { + if (ExportRequests.Empty()) { + return; + } + void* tag; + bool ok; + while (CQ.AsyncNext(&tag, &ok, std::chrono::system_clock::now()) == grpc::CompletionQueue::GOT_EVENT) { + auto node = std::unique_ptr<TExportRequestData>(static_cast<TExportRequestData*>(tag)); + ALOG_TRACE(WILSON_SERVICE_ID, "finished export request " << (void*)node.get()); + if (!node->Status.ok()) { + ALOG_ERROR(WILSON_SERVICE_ID, + "failed to commit traces: " << node->Status.error_message()); } + + --ExportRequestsCount; + node->Unlink(); + } + + if (!ExportRequests.Empty()) { + ScheduleWakeup(TDuration::MilliSeconds(100)); } } template<typename T> void ScheduleWakeup(T&& deadline) { if (!WakeupScheduled) { - TActivationContext::Schedule(deadline, new IEventHandle(TEvents::TSystem::Wakeup, 0, SelfId(), {}, - nullptr, 0)); + TActivationContext::Schedule(deadline, + new IEventHandle(TEvents::TSystem::Wakeup, 0, + SelfId(), {}, nullptr, 0)); WakeupScheduled = true; } } - void HandleWakeup() { - Y_ABORT_UNLESS(WakeupScheduled); - WakeupScheduled = false; + void HandleWakeup(TEvents::TEvWakeup::TPtr& ev) { + const auto cookie = ev->Cookie; + ALOG_TRACE(WILSON_SERVICE_ID, "wakeup received w/ cookie=" << cookie); + if (cookie == 0) { + Y_ABORT_UNLESS(WakeupScheduled); + WakeupScheduled = false; + } else { + Y_ABORT_UNLESS(BatchCompletionScheduled); + BatchCompletionScheduled = false; + if (cookie == NextBatchCompletion.GetValue()) { + CompleteCurrentBatch(); + } else { + ScheduleBatchCompletionEvent(); + } + } TryMakeProgress(); } void TryMakeProgress() { - CheckIfDone(); + ReapCompletedRequests(); TryToSend(); } - STRICT_STFUNC(StateFunc, + STRICT_STFUNC(StateWork, hFunc(TEvWilson, Handle); - cFunc(TEvents::TSystem::Wakeup, HandleWakeup); + hFunc(TEvents::TEvWakeup, HandleWakeup); + ); + + STRICT_STFUNC(StateBroken, + IgnoreFunc(TEvWilson); ); }; } // anonymous - IActor* CreateWilsonUploader(WilsonUploaderParams params) { + IActor* CreateWilsonUploader(TWilsonUploaderParams params) { return new TWilsonUploader(std::move(params)); } - IActor* WilsonUploaderParams::CreateUploader() && { + IActor* TWilsonUploaderParams::CreateUploader() && { return CreateWilsonUploader(std::move(*this)); } diff --git a/ydb/library/actors/wilson/wilson_uploader.h b/ydb/library/actors/wilson/wilson_uploader.h index f664292659eb..3ba1f6109d4b 100644 --- a/ydb/library/actors/wilson/wilson_uploader.h +++ b/ydb/library/actors/wilson/wilson_uploader.h @@ -25,16 +25,21 @@ namespace NWilson { return NActors::TActorId(0, TStringBuf("WilsonUpload", 12)); } - struct WilsonUploaderParams { - TString Host; - ui16 Port; - TString RootCA; + struct TWilsonUploaderParams { + TString CollectorUrl; TString ServiceName; std::unique_ptr<IGrpcSigner> GrpcSigner; + ui64 MaxExportedSpansPerSecond = Max<ui64>(); + ui64 MaxSpansInBatch = 150; + ui64 MaxBytesInBatch = 20'000'000; + ui64 MaxBatchAccumulationMilliseconds = 1'000; + ui32 SpanExportTimeoutSeconds = 60 * 60 * 24 * 365; + ui64 MaxExportRequestsInflight = 1; + NActors::IActor* CreateUploader() &&; }; - NActors::IActor* CreateWilsonUploader(WilsonUploaderParams params); + NActors::IActor* CreateWilsonUploader(TWilsonUploaderParams params); } // NWilson diff --git a/ydb/library/services/services.proto b/ydb/library/services/services.proto index 92c8eccd3357..41b130bf408b 100644 --- a/ydb/library/services/services.proto +++ b/ydb/library/services/services.proto @@ -1018,5 +1018,6 @@ message TActivity { GRAPH_SERVICE = 624; REPLICATION_WORKER = 625; SCHEMESHARD_BACKGROUND_CLEANING = 626; + JAEGER_TRACING_CONFIGURATOR = 627; }; }; diff --git a/ydb/library/wilson_ids/wilson.h b/ydb/library/wilson_ids/wilson.h index 32cfce06998b..3de4b9dc45df 100644 --- a/ydb/library/wilson_ids/wilson.h +++ b/ydb/library/wilson_ids/wilson.h @@ -1,60 +1,100 @@ #pragma once +#include <util/system/types.h> + namespace NKikimr { + struct TComponentTracingLevels { +#ifdef DEFINE_TRACING_LEVELS +#error "Macro collision: DEFINE_TRACING_LEVELS" +#endif + +#define DEFINE_TRACING_LEVELS(COMPONENT, MINIMAL, BASIC, DETAILED, DIAGNOSTIC, TRACE) \ + struct COMPONENT { \ + enum : ui8 { \ + TopLevel = MINIMAL, \ + Basic = BASIC, \ + Detailed = DETAILED, \ + Diagnostic = DIAGNOSTIC, \ + Trace = TRACE, \ + }; \ + }; + + + DEFINE_TRACING_LEVELS(TGrpcProxy, 0, 5, 10, 14, 15) + DEFINE_TRACING_LEVELS(TQueryProcessor, 1, 6, 10, 14, 15) + DEFINE_TRACING_LEVELS(TDistributedTransactions, 2, 7, 11, 14, 15) + DEFINE_TRACING_LEVELS(TTablet, 3, 8, 12, 14, 15) + DEFINE_TRACING_LEVELS(TDistributedStorage, 4, 9, 13, 14, 15) + +#undef DEFINE_TRACING_LEVELS + + enum : ui8 { + // The most verbose detalisation level used in production + ProductionVerbose = 13, + }; + }; + struct TWilson { enum { - BlobStorage = 8, // DS proxy and lower levels - DsProxyInternals = 9, - VDiskTopLevel = 12, - VDiskInternals = 13, - PDisk = 14, + BlobStorage = TComponentTracingLevels::TDistributedStorage::TopLevel, + DsProxyInternals = TComponentTracingLevels::TDistributedStorage::Detailed, + VDiskTopLevel = TComponentTracingLevels::TDistributedStorage::Basic, + VDiskInternals = TComponentTracingLevels::TDistributedStorage::Detailed, + PDiskTopLevel = TComponentTracingLevels::TDistributedStorage::Basic, + PDiskBasic = TComponentTracingLevels::TDistributedStorage::Detailed, + PDiskDetailed = TComponentTracingLevels::TDistributedStorage::Detailed, }; }; struct TWilsonKqp { enum { - KqpSession = 8, - CompileService = 9, - CompileActor = 9, - SessionAcquireSnapshot = 9, + KqpSession = TComponentTracingLevels::TQueryProcessor::TopLevel, + CompileService = TComponentTracingLevels::TQueryProcessor::Basic, + CompileActor = TComponentTracingLevels::TQueryProcessor::Basic, + SessionAcquireSnapshot = TComponentTracingLevels::TQueryProcessor::Basic, - ExecuterTableResolve = 10, - ExecuterShardsResolve = 10, + ExecuterTableResolve = TComponentTracingLevels::TQueryProcessor::Detailed, + ExecuterShardsResolve = TComponentTracingLevels::TQueryProcessor::Detailed, - LiteralExecuter = 9, + LiteralExecuter = TComponentTracingLevels::TQueryProcessor::Basic, - DataExecuter = 9, - DataExecuterAcquireSnapshot = 10, - DataExecuterRunTasks = 10, + DataExecuter = TComponentTracingLevels::TQueryProcessor::Basic, + DataExecuterAcquireSnapshot = TComponentTracingLevels::TQueryProcessor::Detailed, + DataExecuterRunTasks = TComponentTracingLevels::TQueryProcessor::Detailed, - ScanExecuter = 9, - ScanExecuterRunTasks = 10, + ScanExecuter = TComponentTracingLevels::TQueryProcessor::Basic, + ScanExecuterRunTasks = TComponentTracingLevels::TQueryProcessor::Detailed, - KqpNodeSendTasks = 9, + KqpNodeSendTasks = TComponentTracingLevels::TQueryProcessor::Basic, - ProposeTransaction = 9, + ProposeTransaction = TComponentTracingLevels::TQueryProcessor::Basic, - ComputeActor = 9, + ComputeActor = TComponentTracingLevels::TQueryProcessor::Basic, - ReadActor = 9, - ReadActorShardsResolve = 10, + ReadActor = TComponentTracingLevels::TQueryProcessor::Basic, + ReadActorShardsResolve = TComponentTracingLevels::TQueryProcessor::Detailed, - LookupActor = 9, - LookupActorShardsResolve = 10, + LookupActor = TComponentTracingLevels::TQueryProcessor::Basic, + LookupActorShardsResolve = TComponentTracingLevels::TQueryProcessor::Detailed, + + BulkUpsertActor = TComponentTracingLevels::TQueryProcessor::TopLevel, }; }; struct TWilsonTablet { enum { - Tablet = 15 + TabletTopLevel = TComponentTracingLevels::TTablet::TopLevel, + TabletBasic = TComponentTracingLevels::TTablet::Basic, + TabletDetailed = TComponentTracingLevels::TTablet::Detailed, }; }; struct TWilsonGrpc { enum { - RequestProxy = 9, - RequestActor = 9, + RequestProxy = TComponentTracingLevels::TGrpcProxy::TopLevel, + RequestActor = TComponentTracingLevels::TGrpcProxy::TopLevel, + RequestCheckActor = TComponentTracingLevels::TGrpcProxy::Basic, }; }; diff --git a/ydb/services/keyvalue/grpc_service.cpp b/ydb/services/keyvalue/grpc_service.cpp index 595da30097cf..4cd1cc62eaab 100644 --- a/ydb/services/keyvalue/grpc_service.cpp +++ b/ydb/services/keyvalue/grpc_service.cpp @@ -3,6 +3,7 @@ #include <ydb/core/grpc_services/grpc_helper.h> #include <ydb/core/grpc_services/base/base.h> #include <ydb/core/grpc_services/service_keyvalue.h> +#include <ydb/core/jaeger_tracing/request_discriminator.h> namespace NKikimr::NGRpcService { @@ -40,7 +41,7 @@ void TKeyValueGRpcService::SetupIncomingRequests(NYdbGrpc::TLoggerPtr logger) { #error SETUP_METHOD macro collision #endif -#define SETUP_METHOD(methodName, method, rlMode) \ +#define SETUP_METHOD(methodName, method, rlMode, requestType) \ MakeIntrusive<NGRpcService::TGRpcRequest< \ Ydb::KeyValue::Y_CAT(methodName, Request), \ Ydb::KeyValue::Y_CAT(methodName, Response), \ @@ -54,7 +55,10 @@ void TKeyValueGRpcService::SetupIncomingRequests(NYdbGrpc::TLoggerPtr logger) { ActorSystem->Send(GRpcRequestProxyId, new TGrpcRequestOperationCall< \ Ydb::KeyValue::Y_CAT(methodName, Request), \ Ydb::KeyValue::Y_CAT(methodName, Response)>(reqCtx, &method, \ - TRequestAuxSettings{rlMode, nullptr})); \ + TRequestAuxSettings { \ + .RlMode = TRateLimiterMode::rlMode, \ + .RequestType = NJaegerTracing::ERequestType::requestType, \ + })); \ }, \ &Ydb::KeyValue::V1::KeyValueService::AsyncService::Y_CAT(Request, methodName), \ "KeyValue/" Y_STRINGIZE(methodName), \ @@ -62,18 +66,18 @@ void TKeyValueGRpcService::SetupIncomingRequests(NYdbGrpc::TLoggerPtr logger) { getCounterBlock("keyvalue", Y_STRINGIZE(methodName)) \ )->Run() - SETUP_METHOD(CreateVolume, DoCreateVolumeKeyValue, TRateLimiterMode::Rps); - SETUP_METHOD(DropVolume, DoDropVolumeKeyValue, TRateLimiterMode::Rps); - SETUP_METHOD(AlterVolume, DoAlterVolumeKeyValue, TRateLimiterMode::Rps); - SETUP_METHOD(DescribeVolume, DoDescribeVolumeKeyValue, TRateLimiterMode::Rps); - SETUP_METHOD(ListLocalPartitions, DoListLocalPartitionsKeyValue, TRateLimiterMode::Rps); - - SETUP_METHOD(AcquireLock, DoAcquireLockKeyValue, TRateLimiterMode::Rps); - SETUP_METHOD(ExecuteTransaction, DoExecuteTransactionKeyValue, TRateLimiterMode::Rps); - SETUP_METHOD(Read, DoReadKeyValue, TRateLimiterMode::Rps); - SETUP_METHOD(ReadRange, DoReadRangeKeyValue, TRateLimiterMode::Rps); - SETUP_METHOD(ListRange, DoListRangeKeyValue, TRateLimiterMode::Rps); - SETUP_METHOD(GetStorageChannelStatus, DoGetStorageChannelStatusKeyValue, TRateLimiterMode::Rps); + SETUP_METHOD(CreateVolume, DoCreateVolumeKeyValue, Rps, KEYVALUE_CREATEVOLUME); + SETUP_METHOD(DropVolume, DoDropVolumeKeyValue, Rps, KEYVALUE_DROPVOLUME); + SETUP_METHOD(AlterVolume, DoAlterVolumeKeyValue, Rps, KEYVALUE_ALTERVOLUME); + SETUP_METHOD(DescribeVolume, DoDescribeVolumeKeyValue, Rps, KEYVALUE_DESCRIBEVOLUME); + SETUP_METHOD(ListLocalPartitions, DoListLocalPartitionsKeyValue, Rps, KEYVALUE_LISTLOCALPARTITIONS); + + SETUP_METHOD(AcquireLock, DoAcquireLockKeyValue, Rps, KEYVALUE_ACQUIRELOCK); + SETUP_METHOD(ExecuteTransaction, DoExecuteTransactionKeyValue, Rps, KEYVALUE_EXECUTETRANSACTION); + SETUP_METHOD(Read, DoReadKeyValue, Rps, KEYVALUE_READ); + SETUP_METHOD(ReadRange, DoReadRangeKeyValue, Rps, KEYVALUE_READRANGE); + SETUP_METHOD(ListRange, DoListRangeKeyValue, Rps, KEYVALUE_LISTRANGE); + SETUP_METHOD(GetStorageChannelStatus, DoGetStorageChannelStatusKeyValue, Rps, KEYVALUE_GETSTORAGECHANNELSTATUS); #undef SETUP_METHOD } diff --git a/ydb/services/local_discovery/grpc_func_call.h b/ydb/services/local_discovery/grpc_func_call.h index 8c501bf6a585..4efe50d5662f 100644 --- a/ydb/services/local_discovery/grpc_func_call.h +++ b/ydb/services/local_discovery/grpc_func_call.h @@ -49,6 +49,14 @@ class TGrpcRequestFunctionCall return true; } } + + NJaegerTracing::TRequestDiscriminator GetRequestDiscriminator() const override { + return { + .RequestType = AuxSettings.RequestType, + .Database = TBase::GetDatabaseName(), + }; + } + private: TFuncCallback PassMethod; const TRequestAuxSettings AuxSettings; diff --git a/ydb/services/local_discovery/grpc_service.cpp b/ydb/services/local_discovery/grpc_service.cpp index 0615355a286a..76cf65491395 100644 --- a/ydb/services/local_discovery/grpc_service.cpp +++ b/ydb/services/local_discovery/grpc_service.cpp @@ -87,22 +87,25 @@ void TGRpcLocalDiscoveryService::SetupIncomingRequests(NYdbGrpc::TLoggerPtr logg #error macro already defined #endif -#define ADD_REQUEST(NAME, CB) \ +#define ADD_REQUEST(NAME, CB, REQUEST_TYPE) \ MakeIntrusive<TGRpcRequest<Discovery::NAME##Request, Discovery::NAME##Response, TGRpcLocalDiscoveryService>> \ (this, &Service_, CQ_, \ - [this](NYdbGrpc::IRequestContextBase *ctx) { \ + [this](NYdbGrpc::IRequestContextBase *ctx) { \ NGRpcService::ReportGrpcReqToMon(*ActorSystem_, ctx->GetPeer(), GetSdkBuildInfo(ctx)); \ ActorSystem_->Send(GRpcRequestProxyId_, \ new TGrpcRequestOperationCall<Discovery::NAME##Request, Discovery::NAME##Response> \ - (ctx, CB, TRequestAuxSettings{TRateLimiterMode::Rps, nullptr})); \ + (ctx, CB, TRequestAuxSettings { \ + .RlMode = TRateLimiterMode::Rps, \ + .RequestType = NJaegerTracing::ERequestType::DISCOVERY_##REQUEST_TYPE, \ + })); \ }, &Ydb::Discovery::V1::DiscoveryService::AsyncService::Request ## NAME, \ #NAME, logger, getCounterBlock("discovery", #NAME))->Run(); - ADD_REQUEST(WhoAmI, &DoWhoAmIRequest) + ADD_REQUEST(WhoAmI, &DoWhoAmIRequest, WHOAMI) NodeRegistrationRequest = [authParams = this->DynamicNodeAuthorizationParams] (std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider& f) { DoNodeRegistrationRequest(std::move(p), f, authParams); }; - ADD_REQUEST(NodeRegistration, NodeRegistrationRequest) + ADD_REQUEST(NodeRegistration, NodeRegistrationRequest, NODEREGISTRATION) #undef ADD_REQUEST using namespace std::placeholders; @@ -111,19 +114,22 @@ using namespace std::placeholders; #error macro already defined #endif -#define ADD_METHOD(NAME, METHOD) \ +#define ADD_METHOD(NAME, METHOD, REQUEST_TYPE) \ MakeIntrusive<TGRpcRequest<Discovery::NAME##Request, Discovery::NAME##Response, TGRpcLocalDiscoveryService>> \ (this, &Service_, CQ_, \ - [this](NYdbGrpc::IRequestContextBase *ctx) { \ + [this](NYdbGrpc::IRequestContextBase *ctx) { \ NGRpcService::ReportGrpcReqToMon(*ActorSystem_, ctx->GetPeer(), GetSdkBuildInfo(ctx)); \ TFuncCallback cb = std::bind(&TGRpcLocalDiscoveryService::METHOD, this, _1, _2); \ ActorSystem_->Send(GRpcRequestProxyId_, \ new TGrpcRequestFunctionCall<Discovery::NAME##Request, Discovery::NAME##Response> \ - (ctx, cb, TRequestAuxSettings{TRateLimiterMode::Rps, nullptr})); \ + (ctx, cb, TRequestAuxSettings { \ + .RlMode = TRateLimiterMode::Rps, \ + .RequestType = NJaegerTracing::ERequestType::DISCOVERY_##REQUEST_TYPE, \ + })); \ }, &Ydb::Discovery::V1::DiscoveryService::AsyncService::Request ## NAME, \ #NAME, logger, getCounterBlock("discovery", #NAME))->Run(); - ADD_METHOD(ListEndpoints, DoListEndpointsRequest) + ADD_METHOD(ListEndpoints, DoListEndpointsRequest, LISTENDPOINTS) #undef ADD_METHOD } diff --git a/ydb/services/ydb/ydb_query.cpp b/ydb/services/ydb/ydb_query.cpp index 760599e68ccc..b8bc700e89f3 100644 --- a/ydb/services/ydb/ydb_query.cpp +++ b/ydb/services/ydb/ydb_query.cpp @@ -37,7 +37,7 @@ void TGRpcYdbQueryService::SetupIncomingRequests(NYdbGrpc::TLoggerPtr logger) { #ifdef ADD_REQUEST #error ADD_REQUEST macro already defined #endif -#define ADD_REQUEST(NAME, IN, OUT, CB, ...) \ +#define ADD_REQUEST(NAME, IN, OUT, CB, REQUEST_TYPE, ...) \ for (size_t i = 0; i < HandlersPerCompletionQueue; ++i) { \ for (auto* cq: CQS) { \ MakeIntrusive<TGRpcRequest<IN, OUT, TGRpcYdbQueryService>>(this, &Service_, cq, \ @@ -45,22 +45,26 @@ void TGRpcYdbQueryService::SetupIncomingRequests(NYdbGrpc::TLoggerPtr logger) { NGRpcService::ReportGrpcReqToMon(*ActorSystem_, ctx->GetPeer()); \ ActorSystem_->Send(GRpcProxies_[proxyCounter % GRpcProxies_.size()], \ new TGrpcRequestNoOperationCall<IN, OUT> \ - (ctx, &CB, TRequestAuxSettings{RLSWITCH(TRateLimiterMode::Rps), nullptr __VA_OPT__(, TAuditMode::__VA_ARGS__)})); \ + (ctx, &CB, TRequestAuxSettings { \ + .RlMode = RLSWITCH(TRateLimiterMode::Rps), \ + __VA_OPT__(.AuditMode = TAuditMode::__VA_ARGS__,) \ + .RequestType = NJaegerTracing::ERequestType::QUERY_##REQUEST_TYPE, \ + })); \ }, &Ydb::Query::V1::QueryService::AsyncService::Request ## NAME, \ #NAME, logger, getCounterBlock("query", #NAME))->Run(); \ ++proxyCounter; \ } \ } - ADD_REQUEST(ExecuteQuery, ExecuteQueryRequest, ExecuteQueryResponsePart, DoExecuteQuery, Auditable); - ADD_REQUEST(ExecuteScript, ExecuteScriptRequest, Ydb::Operations::Operation, DoExecuteScript, Auditable); - ADD_REQUEST(FetchScriptResults, FetchScriptResultsRequest, FetchScriptResultsResponse, DoFetchScriptResults); - ADD_REQUEST(CreateSession, CreateSessionRequest, CreateSessionResponse, DoCreateSession); - ADD_REQUEST(DeleteSession, DeleteSessionRequest, DeleteSessionResponse, DoDeleteSession); - ADD_REQUEST(AttachSession, AttachSessionRequest, SessionState, DoAttachSession); - ADD_REQUEST(BeginTransaction, BeginTransactionRequest, BeginTransactionResponse, DoBeginTransaction); - ADD_REQUEST(CommitTransaction, CommitTransactionRequest, CommitTransactionResponse, DoCommitTransaction); - ADD_REQUEST(RollbackTransaction, RollbackTransactionRequest, RollbackTransactionResponse, DoRollbackTransaction); + ADD_REQUEST(ExecuteQuery, ExecuteQueryRequest, ExecuteQueryResponsePart, DoExecuteQuery, EXECUTEQUERY, Auditable); + ADD_REQUEST(ExecuteScript, ExecuteScriptRequest, Ydb::Operations::Operation, DoExecuteScript, EXECUTESCRIPT, Auditable); + ADD_REQUEST(FetchScriptResults, FetchScriptResultsRequest, FetchScriptResultsResponse, DoFetchScriptResults, FETCHSCRIPTRESULTS); + ADD_REQUEST(CreateSession, CreateSessionRequest, CreateSessionResponse, DoCreateSession, CREATESESSION); + ADD_REQUEST(DeleteSession, DeleteSessionRequest, DeleteSessionResponse, DoDeleteSession, DELETESESSION); + ADD_REQUEST(AttachSession, AttachSessionRequest, SessionState, DoAttachSession, ATTACHSESSION); + ADD_REQUEST(BeginTransaction, BeginTransactionRequest, BeginTransactionResponse, DoBeginTransaction, BEGINTRANSACTION); + ADD_REQUEST(CommitTransaction, CommitTransactionRequest, CommitTransactionResponse, DoCommitTransaction, COMMITTRANSACTION); + ADD_REQUEST(RollbackTransaction, RollbackTransactionRequest, RollbackTransactionResponse, DoRollbackTransaction, ROLLBACKTRANSACTION); #undef ADD_REQUEST } diff --git a/ydb/services/ydb/ydb_table.cpp b/ydb/services/ydb/ydb_table.cpp index 9324baf4d1c2..37067b16e358 100644 --- a/ydb/services/ydb/ydb_table.cpp +++ b/ydb/services/ydb/ydb_table.cpp @@ -40,63 +40,70 @@ void TGRpcYdbTableService::SetupIncomingRequests(NYdbGrpc::TLoggerPtr logger) { #error ADD_STREAM_REQUEST_LIMIT macro already defined #endif -#define ADD_REQUEST_LIMIT(NAME, CB, LIMIT_TYPE, ...) \ +#define ADD_REQUEST_LIMIT(NAME, CB, LIMIT_TYPE, REQUEST_TYPE, ...) \ for (size_t i = 0; i < HandlersPerCompletionQueue; ++i) { \ for (auto* cq: CQS) { \ MakeIntrusive<TGRpcRequest<Ydb::Table::NAME##Request, Ydb::Table::NAME##Response, TGRpcYdbTableService>> \ (this, &Service_, cq, \ - [this, proxyCounter](NYdbGrpc::IRequestContextBase *ctx) { \ + [this, proxyCounter](NYdbGrpc::IRequestContextBase *ctx) { \ NGRpcService::ReportGrpcReqToMon(*ActorSystem_, ctx->GetPeer()); \ ActorSystem_->Send(GRpcProxies_[proxyCounter % GRpcProxies_.size()], \ new TGrpcRequestOperationCall<Ydb::Table::NAME##Request, Ydb::Table::NAME##Response> \ - (ctx, &CB, TRequestAuxSettings{RLSWITCH(TRateLimiterMode::LIMIT_TYPE), nullptr __VA_OPT__(, TAuditMode::__VA_ARGS__)})); \ + (ctx, &CB, TRequestAuxSettings { \ + .RlMode = RLSWITCH(TRateLimiterMode::LIMIT_TYPE), \ + __VA_OPT__(.AuditMode = TAuditMode::__VA_ARGS__,) \ + .RequestType = NJaegerTracing::ERequestType::TABLE_##REQUEST_TYPE, \ + })); \ }, &Ydb::Table::V1::TableService::AsyncService::Request ## NAME, \ #NAME, logger, getCounterBlock("table", #NAME))->Run(); \ ++proxyCounter; \ } \ } -#define ADD_STREAM_REQUEST_LIMIT(NAME, IN, OUT, CB, LIMIT_TYPE) \ +#define ADD_STREAM_REQUEST_LIMIT(NAME, IN, OUT, CB, LIMIT_TYPE, REQUEST_TYPE) \ for (size_t i = 0; i < HandlersPerCompletionQueue; ++i) { \ for (auto* cq: CQS) { \ MakeIntrusive<TGRpcRequest<Ydb::Table::IN, Ydb::Table::OUT, TGRpcYdbTableService>> \ (this, &Service_, cq, \ - [this, proxyCounter](NYdbGrpc::IRequestContextBase *ctx) { \ + [this, proxyCounter](NYdbGrpc::IRequestContextBase *ctx) { \ NGRpcService::ReportGrpcReqToMon(*ActorSystem_, ctx->GetPeer()); \ ActorSystem_->Send(GRpcProxies_[proxyCounter % GRpcProxies_.size()], \ new TGrpcRequestNoOperationCall<Ydb::Table::IN, Ydb::Table::OUT> \ - (ctx, &CB, TRequestAuxSettings{RLSWITCH(TRateLimiterMode::LIMIT_TYPE), nullptr})); \ + (ctx, &CB, TRequestAuxSettings { \ + .RlMode = RLSWITCH(TRateLimiterMode::LIMIT_TYPE), \ + .RequestType = NJaegerTracing::ERequestType::TABLE_##REQUEST_TYPE, \ + })); \ }, &Ydb::Table::V1::TableService::AsyncService::Request ## NAME, \ #NAME, logger, getCounterBlock("table", #NAME))->Run(); \ ++proxyCounter; \ } \ } - ADD_REQUEST_LIMIT(CreateSession, DoCreateSessionRequest, Rps) - ADD_REQUEST_LIMIT(KeepAlive, DoKeepAliveRequest, Rps) - ADD_REQUEST_LIMIT(AlterTable, DoAlterTableRequest, Rps) - ADD_REQUEST_LIMIT(CreateTable, DoCreateTableRequest, Rps) - ADD_REQUEST_LIMIT(DropTable, DoDropTableRequest, Rps) - ADD_REQUEST_LIMIT(DescribeTable, DoDescribeTableRequest, Rps) - ADD_REQUEST_LIMIT(CopyTable, DoCopyTableRequest, Rps) - ADD_REQUEST_LIMIT(CopyTables, DoCopyTablesRequest, Rps) - ADD_REQUEST_LIMIT(RenameTables, DoRenameTablesRequest, Rps) - ADD_REQUEST_LIMIT(ExplainDataQuery, DoExplainDataQueryRequest, Rps) - ADD_REQUEST_LIMIT(ExecuteSchemeQuery, DoExecuteSchemeQueryRequest, Rps) - ADD_REQUEST_LIMIT(BeginTransaction, DoBeginTransactionRequest, Rps, Auditable) - ADD_REQUEST_LIMIT(DescribeTableOptions, DoDescribeTableOptionsRequest, Rps) - - ADD_REQUEST_LIMIT(DeleteSession, DoDeleteSessionRequest, Off) - ADD_REQUEST_LIMIT(CommitTransaction, DoCommitTransactionRequest, Off, Auditable) - ADD_REQUEST_LIMIT(RollbackTransaction, DoRollbackTransactionRequest, Off, Auditable) - - ADD_REQUEST_LIMIT(PrepareDataQuery, DoPrepareDataQueryRequest, Ru, Auditable) - ADD_REQUEST_LIMIT(ExecuteDataQuery, DoExecuteDataQueryRequest, Ru, Auditable) - ADD_REQUEST_LIMIT(BulkUpsert, DoBulkUpsertRequest, Ru, Auditable) - - ADD_STREAM_REQUEST_LIMIT(StreamExecuteScanQuery, ExecuteScanQueryRequest, ExecuteScanQueryPartialResponse, DoExecuteScanQueryRequest, RuOnProgress) - ADD_STREAM_REQUEST_LIMIT(StreamReadTable, ReadTableRequest, ReadTableResponse, DoReadTableRequest, RuOnProgress) - ADD_STREAM_REQUEST_LIMIT(ReadRows, ReadRowsRequest, ReadRowsResponse, DoReadRowsRequest, Ru) + ADD_REQUEST_LIMIT(CreateSession, DoCreateSessionRequest, Rps, CREATESESSION) + ADD_REQUEST_LIMIT(KeepAlive, DoKeepAliveRequest, Rps, KEEPALIVE) + ADD_REQUEST_LIMIT(AlterTable, DoAlterTableRequest, Rps, ALTERTABLE) + ADD_REQUEST_LIMIT(CreateTable, DoCreateTableRequest, Rps, CREATETABLE) + ADD_REQUEST_LIMIT(DropTable, DoDropTableRequest, Rps, DROPTABLE) + ADD_REQUEST_LIMIT(DescribeTable, DoDescribeTableRequest, Rps, DESCRIBETABLE) + ADD_REQUEST_LIMIT(CopyTable, DoCopyTableRequest, Rps, COPYTABLE) + ADD_REQUEST_LIMIT(CopyTables, DoCopyTablesRequest, Rps, COPYTABLES) + ADD_REQUEST_LIMIT(RenameTables, DoRenameTablesRequest, Rps, RENAMETABLES) + ADD_REQUEST_LIMIT(ExplainDataQuery, DoExplainDataQueryRequest, Rps, EXPLAINDATAQUERY) + ADD_REQUEST_LIMIT(ExecuteSchemeQuery, DoExecuteSchemeQueryRequest, Rps, EXECUTESCHEMEQUERY) + ADD_REQUEST_LIMIT(BeginTransaction, DoBeginTransactionRequest, Rps, BEGINTRANSACTION, Auditable) + ADD_REQUEST_LIMIT(DescribeTableOptions, DoDescribeTableOptionsRequest, Rps, DESCRIBETABLEOPTIONS) + + ADD_REQUEST_LIMIT(DeleteSession, DoDeleteSessionRequest, Off, DELETESESSION) + ADD_REQUEST_LIMIT(CommitTransaction, DoCommitTransactionRequest, Off, COMMITTRANSACTION, Auditable) + ADD_REQUEST_LIMIT(RollbackTransaction, DoRollbackTransactionRequest, Off, ROLLBACKTRANSACTION, Auditable) + + ADD_REQUEST_LIMIT(PrepareDataQuery, DoPrepareDataQueryRequest, Ru, PREPAREDATAQUERY, Auditable) + ADD_REQUEST_LIMIT(ExecuteDataQuery, DoExecuteDataQueryRequest, Ru, EXECUTEDATAQUERY, Auditable) + ADD_REQUEST_LIMIT(BulkUpsert, DoBulkUpsertRequest, Ru, BULKUPSERT, Auditable) + + ADD_STREAM_REQUEST_LIMIT(StreamExecuteScanQuery, ExecuteScanQueryRequest, ExecuteScanQueryPartialResponse, DoExecuteScanQueryRequest, RuOnProgress, STREAMEXECUTESCANQUERY) + ADD_STREAM_REQUEST_LIMIT(StreamReadTable, ReadTableRequest, ReadTableResponse, DoReadTableRequest, RuOnProgress, STREAMREADTABLE) + ADD_STREAM_REQUEST_LIMIT(ReadRows, ReadRowsRequest, ReadRowsResponse, DoReadRowsRequest, Ru, READROWS) #undef ADD_REQUEST_LIMIT #undef ADD_STREAM_REQUEST_LIMIT diff --git a/ydb/tools/cfg/static.py b/ydb/tools/cfg/static.py index 84bf540891da..95faefd86e5a 100644 --- a/ydb/tools/cfg/static.py +++ b/ydb/tools/cfg/static.py @@ -113,14 +113,13 @@ def __init__( ) ) self._enable_cms_config_cache = template.get("enable_cms_config_cache", enable_cms_config_cache) - if "tracing" in template: - tracing = template["tracing"] + tracing = template.get("tracing_config") + if tracing is not None: self.__tracing = ( - tracing["host"], - tracing["port"], - tracing["root_ca"], - tracing["service_name"], - tracing.get("auth_config") + tracing["backend"], + tracing.get("uploader"), + tracing.get("sampling", []), + tracing.get("external_throttling", []), ) else: self.__tracing = None @@ -1121,37 +1120,131 @@ def __generate_sys_txt(self): self.__generate_sys_txt_advanced() def __generate_tracing_txt(self): + def get_selectors(selectors): + selectors_pb = config_pb2.TTracingConfig.TSelectors() + + request_type = selectors["request_type"] + if request_type is not None: + selectors_pb.RequestType = request_type + + return selectors_pb + + def get_sampling_scope(sampling): + sampling_scope_pb = config_pb2.TTracingConfig.TSamplingRule() + selectors = sampling.get("scope") + if selectors is not None: + sampling_scope_pb.Scope.CopyFrom(get_selectors(selectors)) + sampling_scope_pb.Fraction = sampling['fraction'] + sampling_scope_pb.Level = sampling['level'] + sampling_scope_pb.MaxTracesPerMinute = sampling['max_traces_per_minute'] + sampling_scope_pb.MaxTracesBurst = sampling.get('max_traces_burst', 0) + return sampling_scope_pb + + def get_external_throttling(throttling): + throttling_scope_pb = config_pb2.TTracingConfig.TExternalThrottlingRule() + selectors = throttling.get("scope") + if selectors is not None: + throttling_scope_pb.Scope.CopyFrom(get_selectors(selectors)) + throttling_scope_pb.MaxTracesPerMinute = throttling['max_traces_per_minute'] + throttling_scope_pb.MaxTracesBurst = throttling.get('max_traces_burst', 0) + return throttling_scope_pb + + def get_auth_config(auth): + auth_pb = config_pb2.TTracingConfig.TBackendConfig.TAuthConfig() + tvm = auth.get("tvm") + if tvm is not None: + tvm_pb = auth_pb.Tvm + + if "host" in tvm: + tvm_pb.Host = tvm["host"] + if "port" in tvm: + tvm_pb.Port = tvm["port"] + tvm_pb.SelfTvmId = tvm["self_tvm_id"] + tvm_pb.TracingTvmId = tvm["tracing_tvm_id"] + if "disk_cache_dir" in tvm: + tvm_pb.DiskCacheDir = tvm["disk_cache_dir"] + + if "plain_text_secret" in tvm: + tvm_pb.PlainTextSecret = tvm["plain_text_secret"] + elif "secret_file" in tvm: + tvm_pb.SecretFile = tvm["secret_file"] + elif "secret_environment_variable" in tvm: + tvm_pb.SecretEnvironmentVariable = tvm["secret_environment_variable"] + return auth_pb + + def get_opentelemetry(opentelemetry): + opentelemetry_pb = config_pb2.TTracingConfig.TBackendConfig.TOpentelemetryBackend() + + opentelemetry_pb.CollectorUrl = opentelemetry["collector_url"] + opentelemetry_pb.ServiceName = opentelemetry["service_name"] + + return opentelemetry_pb + + def get_backend(backend): + backend_pb = config_pb2.TTracingConfig.TBackendConfig() + + auth = backend.get("auth_config") + if auth is not None: + backend_pb.AuthConfig.CopyFrom(get_auth_config(auth)) + + opentelemetry = backend["opentelemetry"] + if opentelemetry is not None: + backend_pb.Opentelemetry.CopyFrom(get_opentelemetry(opentelemetry)) + + return backend_pb + + def get_uploader(uploader): + uploader_pb = config_pb2.TTracingConfig.TUploaderConfig() + + max_exported_spans_per_second = uploader.get("max_exported_spans_per_second") + if max_exported_spans_per_second is not None: + uploader_pb.MaxExportedSpansPerSecond = max_exported_spans_per_second + + max_spans_in_batch = uploader.get("max_spans_in_batch") + if max_spans_in_batch is not None: + uploader_pb.MaxSpansInBatch = max_spans_in_batch + + max_bytes_in_batch = uploader.get("max_bytes_in_batch") + if max_bytes_in_batch is not None: + uploader_pb.MaxBytesInBatch = max_bytes_in_batch + + max_batch_accumulation_milliseconds = uploader.get("max_batch_accumulation_milliseconds") + if max_batch_accumulation_milliseconds is not None: + uploader_pb.MaxBatchAccumulationMilliseconds = max_batch_accumulation_milliseconds + + span_export_timeout_seconds = uploader.get("span_export_timeout_seconds") + if span_export_timeout_seconds is not None: + uploader_pb.SpanExportTimeoutSeconds = span_export_timeout_seconds + + max_export_requests_inflight = uploader.get("max_export_requests_inflight") + if max_export_requests_inflight is not None: + uploader_pb.MaxExportRequestsInflight = max_export_requests_inflight + + return uploader_pb + pb = config_pb2.TAppConfig() if self.__tracing: tracing_pb = pb.TracingConfig ( - tracing_pb.Host, - tracing_pb.Port, - tracing_pb.RootCA, - tracing_pb.ServiceName, - auth_config + backend, + uploader, + sampling, + external_throttling ) = self.__tracing - if auth_config: - auth_pb = tracing_pb.AuthConfig - if "tvm" in auth_config: - tvm = auth_config.get("tvm") - tvm_pb = auth_pb.Tvm - - if "host" in tvm: - tvm_pb.Host = tvm["host"] - if "port" in tvm: - tvm_pb.Port = tvm["port"] - tvm_pb.SelfTvmId = tvm["self_tvm_id"] - tvm_pb.TracingTvmId = tvm["tracing_tvm_id"] - tvm_pb.DiskCacheDir = tvm["disk_cache_dir"] + assert isinstance(sampling, list) + assert isinstance(external_throttling, list) + + tracing_pb.Backend.CopyFrom(get_backend(backend)) + + if uploader is not None: + tracing_pb.Uploader.CopyFrom(get_uploader(uploader)) + + for sampling_scope in sampling: + tracing_pb.Sampling.append(get_sampling_scope(sampling_scope)) - if "plain_text_secret" in tvm: - tvm_pb.PlainTextSecret = tvm["plain_text_secret"] - elif "secret_file" in tvm: - tvm_pb.SecretFile = tvm["secret_file"] - elif "secret_environment_variable" in tvm: - tvm_pb.SecretEnvironmentVariable = tvm["secret_environment_variable"] + for throttling_scope in external_throttling: + tracing_pb.ExternalThrottling.append(get_external_throttling(throttling_scope)) self.__proto_configs["tracing.txt"] = pb diff --git a/ydb/tools/cfg/validation.py b/ydb/tools/cfg/validation.py index 4e17e4ac78b2..e1b4315c5e40 100644 --- a/ydb/tools/cfg/validation.py +++ b/ydb/tools/cfg/validation.py @@ -126,21 +126,91 @@ "additionalProperties": False, } +SELECTORS_CONFIGS = dict( + type="object", + properties=dict( + request_type=dict(type="string"), + ), + required=[], + additionalProperties=False, +) + TRACING_SCHEMA = dict( type="object", properties=dict( - host=dict(type="string"), - port=dict(type="integer"), - root_ca=dict(type="string"), - service_name=dict(type="string"), - auth_config=dict(type="object"), + backend=dict( + type="object", + properties=dict( + auth_config=dict( + type="object", + properties=dict( + tvm=dict( + type="object", + properties=dict( + url=dict(type="string"), + self_tvm_id=dict(type="integer"), + tracing_tvm_id=dict(type="integer"), + disc_cache_dir=dict(type="string"), + plain_text_secret=dict(type="string"), + secret_file=dict(type="string"), + secret_environment_variable=dict(type="string"), + ), + required=["self_tvm_id", "tracing_tvm_id"], + ) + ), + required=["tvm"], + ), + opentelemetry=dict( + type="object", + properties=dict( + collector_url=dict(type="string"), + service_name=dict(type="string"), + ) + ), + ), + required=["opentelemetry"], + additionalProperties=False, + ), + uploader=dict( + type="object", + properties=dict( + max_exported_spans_per_second=dict(type="integer", minimum=1), + max_spans_in_batch=dict(type="integer", minimum=1), + max_bytes_in_batch=dict(type="integer"), + max_batch_accumulation_milliseconds=dict(type="integer"), + span_export_timeout_seconds=dict(type="integer", minimum=1), + max_export_requests_inflight=dict(type="integer", minimum=1), + ), + additionalProperties=False, + ), + sampling=dict( + type="array", + items=dict( + type="object", + properties=dict( + scope=SELECTORS_CONFIGS, + fraction=dict(type="number", minimum=0, maximum=1), + level=dict(type="integer", minimum=0, maximum=15), + max_traces_per_minute=dict(type="integer", minimum=0), + max_traces_burst=dict(type="integer", minimum=0), + ), + required=["fraction", "level", "max_traces_per_minute"], + ), + ), + external_throttling=dict( + type="array", + items=dict( + type="object", + properties=dict( + scope=SELECTORS_CONFIGS, + max_traces_per_minute=dict(type="integer", minimum=0), + max_traces_burst=dict(type="integer", minimum=0), + ), + required=["max_traces_per_minute"], + ), + ), ), - required=[ - "host", - "port", - "root_ca", - "service_name", - ], + required=["backend"], additionalProperties=False, ) @@ -925,7 +995,7 @@ "features": copy.deepcopy(FEATURES_SCHEMA), "shared_cache": copy.deepcopy(SHARED_CACHE_SCHEMA), "sys": copy.deepcopy(SYS_SCHEMA), - "tracing": copy.deepcopy(TRACING_SCHEMA), + "tracing_config": copy.deepcopy(TRACING_SCHEMA), "failure_injection_config": copy.deepcopy(FAILURE_INJECTION_CONFIG_SCHEMA), "solomon": copy.deepcopy(SOLOMON_SCHEMA), "cms": copy.deepcopy(CMS_SCHEMA), From a4d6dd04107b4e098000bb09b8cf7890f14cec7a Mon Sep 17 00:00:00 2001 From: Nikolay Shestakov <tesseract@ydb.tech> Date: Thu, 13 Jun 2024 17:00:20 +0500 Subject: [PATCH 079/110] fix division by zero (#5487) --- ydb/core/persqueue/metering_sink.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ydb/core/persqueue/metering_sink.cpp b/ydb/core/persqueue/metering_sink.cpp index 87854dc81954..4531fc5c614f 100644 --- a/ydb/core/persqueue/metering_sink.cpp +++ b/ydb/core/persqueue/metering_sink.cpp @@ -165,7 +165,7 @@ const TMeteringSink::FlushParameters TMeteringSink::GetFlushParameters(const EMe case EMeteringJson::UsedStorageV1: { ui64 duration = (now - lastFlush).MilliSeconds(); - ui64 avgUsage = CurrentUsedStorage_ * 1_MB * 1000 / duration; + ui64 avgUsage = duration > 0 ? CurrentUsedStorage_ * 1_MB * 1000 / duration : 0; CurrentUsedStorage_ = 0; From 65d320a4182c5f749806be61f8b51804c8e101b4 Mon Sep 17 00:00:00 2001 From: Sergey Veselov <sergeyveselov@ydb.tech> Date: Thu, 13 Jun 2024 16:27:55 +0300 Subject: [PATCH 080/110] =?UTF-8?q?SQS-785:=20correct=20response=20to=20Ge?= =?UTF-8?q?tQueueUrl=20with=20custom=20queue=20name=20when=20=E2=80=A6=20(?= =?UTF-8?q?#5500)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ydb/core/ymq/actor/action.h | 24 ++++++++-------- ydb/core/ymq/actor/events.h | 16 +++++++++++ ydb/core/ymq/actor/service.cpp | 28 +++++++++++++------ .../sqs/cloud/test_yandex_cloud_mode.py | 7 ++--- ...onexistent_queue.py => test_throttling.py} | 21 +++++++++++++- ydb/tests/functional/sqs/common/ya.make | 2 +- 6 files changed, 71 insertions(+), 27 deletions(-) rename ydb/tests/functional/sqs/common/{test_throttling_nonexistent_queue.py => test_throttling.py} (74%) diff --git a/ydb/core/ymq/actor/action.h b/ydb/core/ymq/actor/action.h index 7efa47407050..b77c9f3a7d9f 100644 --- a/ydb/core/ymq/actor/action.h +++ b/ydb/core/ymq/actor/action.h @@ -77,11 +77,14 @@ class TActionActor if (TProxyActor::NeedCreateProxyActor(Action_)) { configurationFlags |= TSqsEvents::TEvGetConfiguration::EFlags::NeedQueueLeader; } + bool enableThrottling = (Action_ != EAction::CreateQueue); this->Send(MakeSqsServiceID(this->SelfId().NodeId()), MakeHolder<TSqsEvents::TEvGetConfiguration>( RequestId_, UserName_, GetQueueName(), + FolderId_, + enableThrottling, configurationFlags) ); } @@ -637,17 +640,16 @@ class TActionActor return; } - if (TDerived::NeedExistingQueue()) { - if (ev->Get()->Throttled) { - MakeError(MutableErrorDesc(), NErrors::THROTTLING_EXCEPTION, "Too many requests for nonexistent queue."); - SendReplyAndDie(); - return; - } - if (!ev->Get()->QueueExists) { - MakeError(MutableErrorDesc(), NErrors::NON_EXISTENT_QUEUE); - SendReplyAndDie(); - return; - } + if (ev->Get()->Throttled) { + MakeError(MutableErrorDesc(), NErrors::THROTTLING_EXCEPTION, "Too many requests for nonexistent queue."); + SendReplyAndDie(); + return; + } + + if (TDerived::NeedExistingQueue() && !ev->Get()->QueueExists) { + MakeError(MutableErrorDesc(), NErrors::NON_EXISTENT_QUEUE); + SendReplyAndDie(); + return; } Y_ABORT_UNLESS(SchemeCache_); diff --git a/ydb/core/ymq/actor/events.h b/ydb/core/ymq/actor/events.h index f8b1c2ca69a5..deef5ba29be8 100644 --- a/ydb/core/ymq/actor/events.h +++ b/ydb/core/ymq/actor/events.h @@ -160,6 +160,8 @@ struct TSqsEvents { TString RequestId; TString UserName; TString QueueName; + TString FolderId; + bool EnableThrottling = true; ui64 Flags = 0; enum EFlags { @@ -175,6 +177,20 @@ struct TSqsEvents { , QueueName(name) , Flags(flags) { } + TEvGetConfiguration( + TString requestId, + const TString& user, + const TString& name, + const TString& folderId, + bool enableThrottling, + ui64 flags = 0 + ) : RequestId(std::move(requestId)) + , UserName(user) + , QueueName(name) + , FolderId(folderId) + , EnableThrottling(enableThrottling) + , Flags(flags) + { } }; struct TQuoterResourcesForActions : public TAtomicRefCount<TQuoterResourcesForActions> { diff --git a/ydb/core/ymq/actor/service.cpp b/ydb/core/ymq/actor/service.cpp index 9181d88d9b64..5bb74f46c75d 100644 --- a/ydb/core/ymq/actor/service.cpp +++ b/ydb/core/ymq/actor/service.cpp @@ -579,18 +579,28 @@ void TSqsService::HandleGetConfiguration(TSqsEvents::TEvGetConfiguration::TPtr& } const auto queueIt = user->Queues_.find(queueName); - if (queueIt == user->Queues_.end()) { - if (RequestQueueListForUser(user, reqId)) { - LWPROBE(QueueRequestCacheMiss, userName, queueName, reqId, ev->Get()->ToStringHeader()); - RLOG_SQS_REQ_DEBUG(reqId, "Queue [" << userName << "/" << queueName << "] was not found in sqs service list. Requesting queues list"); - user->GetConfigurationRequests_.emplace(queueName, std::move(ev)); - } else { - AnswerThrottled(ev); - } + if (queueIt != user->Queues_.end()) { + ProcessConfigurationRequestForQueue(ev, user, queueIt->second); return; + } else if (ev->Get()->FolderId) { + const auto byNameAndFolderIt = user->QueueByNameAndFolder_ .find( + std::make_pair(ev->Get()->QueueName, ev->Get()->FolderId) + ); + if (byNameAndFolderIt != user->QueueByNameAndFolder_.end()) { + ProcessConfigurationRequestForQueue(ev, user, byNameAndFolderIt->second); + return; + } } - ProcessConfigurationRequestForQueue(ev, user, queueIt->second); + if (RequestQueueListForUser(user, reqId)) { + LWPROBE(QueueRequestCacheMiss, userName, queueName, reqId, ev->Get()->ToStringHeader()); + RLOG_SQS_REQ_DEBUG(reqId, "Queue [" << userName << "/" << queueName << "] was not found in sqs service list. Requesting queues list"); + user->GetConfigurationRequests_.emplace(queueName, std::move(ev)); + } else if (ev->Get()->EnableThrottling) { + AnswerThrottled(ev); + } else { + AnswerNotExists(ev, user); + } } void TSqsService::AnswerNotExists(TSqsEvents::TEvGetConfiguration::TPtr& ev, const TUserInfoPtr& userInfo) { diff --git a/ydb/tests/functional/sqs/cloud/test_yandex_cloud_mode.py b/ydb/tests/functional/sqs/cloud/test_yandex_cloud_mode.py index 415fcc54969d..ce34491b0946 100644 --- a/ydb/tests/functional/sqs/cloud/test_yandex_cloud_mode.py +++ b/ydb/tests/functional/sqs/cloud/test_yandex_cloud_mode.py @@ -880,8 +880,5 @@ def get_attributes_of_nonexistent_queue(): ) ) - # Check that getting queue url with custom name still works - assert_that( - lambda: self._sqs_api.get_queue_url(custom_queue_name), - not_(raises(RuntimeError)) - ) + received_queue_url = self._sqs_api.get_queue_url(custom_queue_name) + assert received_queue_url == queue_url diff --git a/ydb/tests/functional/sqs/common/test_throttling_nonexistent_queue.py b/ydb/tests/functional/sqs/common/test_throttling.py similarity index 74% rename from ydb/tests/functional/sqs/common/test_throttling_nonexistent_queue.py rename to ydb/tests/functional/sqs/common/test_throttling.py index 789d653e859b..516f6caebeef 100644 --- a/ydb/tests/functional/sqs/common/test_throttling_nonexistent_queue.py +++ b/ydb/tests/functional/sqs/common/test_throttling.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -from hamcrest import assert_that, raises +from hamcrest import assert_that, raises, not_ from ydb.tests.library.sqs.test_base import KikimrSqsTestBase @@ -68,3 +68,22 @@ def get_attributes_of_nonexistent_queue(): pattern=throttling_exception_pattern ) ) + + def test_that_queue_can_be_created_despite_lack_of_throttling_budget(self): + queue_url = self._create_queue_and_assert(self.queue_name, False, True) + nonexistent_queue_url = queue_url + "_nonex" + + def get_attributes_of_nonexistent_queue(): + self._sqs_api.get_queue_attributes(nonexistent_queue_url) + + # Draining budget + for _ in range(16): + try: + get_attributes_of_nonexistent_queue() + except Exception: + pass + + assert_that( + lambda: self._create_queue_and_assert("other_queue_name", False, True), + not_(raises(RuntimeError)) + ) diff --git a/ydb/tests/functional/sqs/common/ya.make b/ydb/tests/functional/sqs/common/ya.make index 664663fa2294..7fba7c875e3d 100644 --- a/ydb/tests/functional/sqs/common/ya.make +++ b/ydb/tests/functional/sqs/common/ya.make @@ -13,7 +13,7 @@ TEST_SRCS( test_queue_attributes_validation.py test_queues_managing.py test_format_without_version.py - test_throttling_nonexistent_queue.py + test_throttling.py test_queue_counters.py ) From 03d6c3613daea7748a5fed3ecf677e474df5cfef Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Thu, 1 Feb 2024 17:37:41 +0100 Subject: [PATCH 081/110] Update build_and_test_provisioned.yml --- .github/workflows/build_and_test_provisioned.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test_provisioned.yml b/.github/workflows/build_and_test_provisioned.yml index 371fb7cc9694..c453026b2434 100644 --- a/.github/workflows/build_and_test_provisioned.yml +++ b/.github/workflows/build_and_test_provisioned.yml @@ -24,6 +24,9 @@ on: extra_compile_flags: required: false type: string + checkout_ref: + required: false + type: string workflow_dispatch: inputs: runner_label: @@ -47,6 +50,9 @@ on: extra_compile_flags: required: false type: string + checkout_ref: + required: false + type: string jobs: main: @@ -56,7 +62,7 @@ jobs: - name: Checkout uses: actions/checkout@v3 with: - ref: cmakebuild + ref: ${{ inputs.checkout_ref }} - name: Build uses: ./.github/actions/build if: inputs.run_build From e7331b54a6ec5ec194e09f1d2884053b4bb25445 Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Thu, 1 Feb 2024 18:03:02 +0100 Subject: [PATCH 082/110] Enable cmake workflow to build a specified target (#1533) * Update action.yml * Update build_and_test_provisioned.yml --- .github/actions/build/action.yml | 5 ++++- .github/workflows/build_and_test_provisioned.yml | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index c3a56b3b95d0..85a05bbfa16d 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -11,6 +11,9 @@ inputs: required: false default: "" description: "extra compile flags will be added to the end of C_FLAGS and CXX_FLAGS" + ninja_target: + required: false + type: string runs: using: "composite" @@ -59,7 +62,7 @@ runs: export CCACHE_SLOPPINESS=locale export CCACHE_MAXSIZE=50G cd ../build - ninja + ninja ${{ inputs.ninja_target }} ccache -s df -h - name: report Build failed diff --git a/.github/workflows/build_and_test_provisioned.yml b/.github/workflows/build_and_test_provisioned.yml index c453026b2434..d610b9d0a7e9 100644 --- a/.github/workflows/build_and_test_provisioned.yml +++ b/.github/workflows/build_and_test_provisioned.yml @@ -27,6 +27,9 @@ on: checkout_ref: required: false type: string + ninja_target: + required: false + type: string workflow_dispatch: inputs: runner_label: @@ -53,6 +56,9 @@ on: checkout_ref: required: false type: string + ninja_target: + required: false + type: string jobs: main: @@ -70,6 +76,7 @@ jobs: sanitizer: ${{ inputs.sanitizer }} ccache_remote_path: ${{ vars.REMOTE_CACHE_URL && format('http://{0}{1}', secrets.REMOTE_CACHE_AUTH, vars.REMOTE_CACHE_URL) || ''}} extra_compile_flags: ${{ inputs.extra_compile_flags }} + ninja_target: ${{ inputs.ninja_target }} - name: Run tests uses: ./.github/actions/test with: From b05513760c449847c16415942ea273cb3fd4f9ff Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Thu, 8 Feb 2024 14:52:41 +0100 Subject: [PATCH 083/110] Add cmake check workflow (#1725) --- .github/workflows/postcommit_cmakebuild.yml | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/postcommit_cmakebuild.yml diff --git a/.github/workflows/postcommit_cmakebuild.yml b/.github/workflows/postcommit_cmakebuild.yml new file mode 100644 index 000000000000..60c9cb72b976 --- /dev/null +++ b/.github/workflows/postcommit_cmakebuild.yml @@ -0,0 +1,22 @@ +name: Postcommit_cmake +on: + push: + branches: + - 'cmakebuild' + paths-ignore: + - 'ydb/docs/**' + - '.github/**' +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true +jobs: + build_and_test: + if: ${{vars.CHECKS_SWITCH != '' && fromJSON(vars.CHECKS_SWITCH).postcommit_cmake == true}} + name: Build and test cmake + uses: ./.github/workflows/build_and_test_provisioned.yml + with: + runner_label: auto-provisioned + run_unit_tests: false + run_functional_tests: false + secrets: inherit + From b3c9a1d4058b7bd28abc582fbea614efc3728a5e Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Thu, 8 Feb 2024 15:55:57 +0100 Subject: [PATCH 084/110] Fix cmake postcommit (#1739) --- .github/workflows/postcommit_cmakebuild.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/postcommit_cmakebuild.yml b/.github/workflows/postcommit_cmakebuild.yml index 60c9cb72b976..7141ba9e2a65 100644 --- a/.github/workflows/postcommit_cmakebuild.yml +++ b/.github/workflows/postcommit_cmakebuild.yml @@ -3,12 +3,8 @@ on: push: branches: - 'cmakebuild' - paths-ignore: - - 'ydb/docs/**' - - '.github/**' -concurrency: - group: ${{ github.workflow }} - cancel-in-progress: true + paths: + - 'ydb/ci/cmakegen.txt' jobs: build_and_test: if: ${{vars.CHECKS_SWITCH != '' && fromJSON(vars.CHECKS_SWITCH).postcommit_cmake == true}} From 639057c3725021ec9c8a5effb88fe90ba9d83cf8 Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Thu, 8 Feb 2024 17:54:58 +0100 Subject: [PATCH 085/110] Create sync_cmakebuild.yml (#1747) --- .github/workflows/sync_cmakebuild.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/sync_cmakebuild.yml diff --git a/.github/workflows/sync_cmakebuild.yml b/.github/workflows/sync_cmakebuild.yml new file mode 100644 index 000000000000..878675d9efb3 --- /dev/null +++ b/.github/workflows/sync_cmakebuild.yml @@ -0,0 +1,23 @@ +name: Sync cmakebuild with main +on: + schedule: + - cron: "0 * * * *" + workflow_dispatch: + inputs: + test_label_regexp: + required: false + type: string +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + ref: cmakebuild + - name: Sync + run: | + git checkout main -- ydb/ci/sync_cmakebuild.sh + cp ydb/ci/sync_cmakebuild.sh ~ + git restore ydb/ci/sync_cmakebuild.sh + ~/sync_cmakebuild.sh + git push From dcaed531a03949042f4186593026437055d299b4 Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Fri, 9 Feb 2024 16:45:37 +0100 Subject: [PATCH 086/110] CMake regeneration workflow (#1774) * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml * Update sync_cmakebuild.yml --- .github/workflows/sync_cmakebuild.yml | 48 +++++++++++++++++++-------- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/.github/workflows/sync_cmakebuild.yml b/.github/workflows/sync_cmakebuild.yml index 878675d9efb3..ae227c2020e5 100644 --- a/.github/workflows/sync_cmakebuild.yml +++ b/.github/workflows/sync_cmakebuild.yml @@ -3,21 +3,43 @@ on: schedule: - cron: "0 * * * *" workflow_dispatch: - inputs: - test_label_regexp: - required: false - type: string +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true +env: + REPO: ${{ github.repository }} + TOKEN: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} jobs: - build: + sync: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - with: - ref: cmakebuild - name: Sync run: | - git checkout main -- ydb/ci/sync_cmakebuild.sh - cp ydb/ci/sync_cmakebuild.sh ~ - git restore ydb/ci/sync_cmakebuild.sh - ~/sync_cmakebuild.sh - git push + mainsha=$(curl -s -H "Accept: application/vnd.github.VERSION.sha" https://api.github.com/repos/$REPO/commits/main) + echo "Main sha: ${mainsha}" + lastsha=$(curl -s https://raw.githubusercontent.com/$REPO/cmakebuild/ydb/ci/cmakegen.txt) + echo "Last sha: ${lastsha}" + if [ ${mainsha} == ${lastsha} ];then + echo "No new commits on the main branch to merge, exiting" + exit 0 + fi + git clone -b main --shallow-exclude cmakebuild https://$TOKEN@github.com/$REPO.git ydb + git config --global user.email "alex@ydb.tech" + git config --global user.name "Alexander Smirnov" + cd ydb + git fetch --depth `expr $(git rev-list --count HEAD) + 1` + git fetch origin cmakebuild:cmakebuild --depth 3 # 1st with cmake generation, 2nd with previous merge, 3rd is common between main and cmakebuild + mainsha=$(git rev-parse HEAD) + git checkout cmakebuild + prevsha=$(git rev-parse HEAD) + git merge main --no-edit + currsha=$(git rev-parse HEAD) + if [ ${prevsha} == ${currsha} ];then + echo "Merge did not bring any changes, exiting" + exit + fi + ./generate_cmake -k + echo ${mainsha} > ydb/ci/cmakegen.txt + git add . + git commit -m "Generate cmake for ${mainsha}" + git push --set-upstream origin cmakebuild From 71bcc18d59540af43a2ee14588cf3bae3125a3e3 Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Fri, 9 Feb 2024 17:13:21 +0100 Subject: [PATCH 087/110] Update sync_cmakebuild.yml (#1776) --- .github/workflows/sync_cmakebuild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_cmakebuild.yml b/.github/workflows/sync_cmakebuild.yml index ae227c2020e5..d1ccd4991723 100644 --- a/.github/workflows/sync_cmakebuild.yml +++ b/.github/workflows/sync_cmakebuild.yml @@ -19,7 +19,7 @@ jobs: echo "Main sha: ${mainsha}" lastsha=$(curl -s https://raw.githubusercontent.com/$REPO/cmakebuild/ydb/ci/cmakegen.txt) echo "Last sha: ${lastsha}" - if [ ${mainsha} == ${lastsha} ];then + if [ "${mainsha}" == "${lastsha}" ];then echo "No new commits on the main branch to merge, exiting" exit 0 fi From ab6d829c5839379d1c9e10005c7dfbb252ebdd2e Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Fri, 16 Feb 2024 17:23:52 +0100 Subject: [PATCH 088/110] Increase commits depth on sync cmake workflow --- .github/workflows/sync_cmakebuild.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sync_cmakebuild.yml b/.github/workflows/sync_cmakebuild.yml index d1ccd4991723..710d2991b9aa 100644 --- a/.github/workflows/sync_cmakebuild.yml +++ b/.github/workflows/sync_cmakebuild.yml @@ -28,7 +28,9 @@ jobs: git config --global user.name "Alexander Smirnov" cd ydb git fetch --depth `expr $(git rev-list --count HEAD) + 1` - git fetch origin cmakebuild:cmakebuild --depth 3 # 1st with cmake generation, 2nd with previous merge, 3rd is common between main and cmakebuild + # Depth 10: 1st with cmake generation, 2nd with previous merge, 3rd is common between main and cmakebuild, + # others for possible commits directly on cmakebuild branch + git fetch origin cmakebuild:cmakebuild --depth 10 mainsha=$(git rev-parse HEAD) git checkout cmakebuild prevsha=$(git rev-parse HEAD) From 5d5831aacec9f4af5885dfcc81b4a78544622dbf Mon Sep 17 00:00:00 2001 From: nikita kozlovsky <nikitka@users.noreply.github.com> Date: Mon, 19 Feb 2024 10:16:23 +0100 Subject: [PATCH 089/110] ci: save test artifacts for fail tests (#1501) --- .github/actions/s3cmd/action.yml | 3 +- .github/actions/test_ya/action.yml | 11 +++-- .github/scripts/tests/transform-ya-junit.py | 49 ++++++++++++++++++++- 3 files changed, 56 insertions(+), 7 deletions(-) diff --git a/.github/actions/s3cmd/action.yml b/.github/actions/s3cmd/action.yml index a503423ac6d5..a4ebb583555e 100644 --- a/.github/actions/s3cmd/action.yml +++ b/.github/actions/s3cmd/action.yml @@ -54,9 +54,10 @@ runs: exit 1 ;; esac - echo "S3_BUCKET_PATH=s3://${{ inputs.s3_bucket }}/${{ github.repository }}/${{github.workflow}}/${{ github.run_id }}/${{ inputs.folder_prefix }}${folder}" >> $GITHUB_ENV echo "S3_URL_PREFIX=${{ inputs.s3_endpoint }}/${{ inputs.s3_bucket }}/${{ github.repository }}/${{ github.workflow }}/${{ github.run_id }}/${{ inputs.folder_prefix }}${folder}" >> $GITHUB_ENV + echo "S3_TEST_ARTIFACTS_BUCKET_PATH=s3://${{ inputs.s3_bucket }}/testing_out_stuff/${{ github.repository }}/${{github.workflow}}/${{ github.run_id }}/${{ inputs.folder_prefix }}${folder}" >> $GITHUB_ENV + echo "S3_TEST_ARTIFACTS_URL_PREFIX=${{ inputs.s3_endpoint }}/${{ inputs.s3_bucket }}/testing_out_stuff/${{ github.repository }}/${{ github.workflow }}/${{ github.run_id }}/${{ inputs.folder_prefix }}${folder}" >> $GITHUB_ENV env: s3_key_id: ${{ inputs.s3_key_id }} s3_secret_access_key: ${{ inputs.s3_key_secret }} diff --git a/.github/actions/test_ya/action.yml b/.github/actions/test_ya/action.yml index 46fa5370409d..1e75cc2914b4 100644 --- a/.github/actions/test_ya/action.yml +++ b/.github/actions/test_ya/action.yml @@ -60,6 +60,7 @@ runs: echo "LOG_DIR=$TMP_DIR/logs" >> $GITHUB_ENV echo "OUT_DIR=$TMP_DIR/out" >> $GITHUB_ENV echo "ARTIFACTS_DIR=$TMP_DIR/artifacts" >> $GITHUB_ENV + echo "TEST_ARTIFACTS_DIR=$TMP_DIR/test_artifacts" >> $GITHUB_ENV echo "REPORTS_ARTIFACTS_DIR=$TMP_DIR/artifacts/test_reports" >> $GITHUB_ENV echo "JUNIT_REPORT_XML=$TMP_DIR/junit.xml" >> $GITHUB_ENV echo "JUNIT_REPORT_PARTS=$TMP_DIR/junit-split" >> $GITHUB_ENV @@ -73,7 +74,7 @@ runs: shell: bash run: | rm -rf $TMP_DIR $JUNIT_REPORT_XML $JUNIT_REPORT_PARTS $REPORTS_ARTIFACTS_DIR - mkdir -p $TMP_DIR $OUT_DIR $ARTIFACTS_DIR $LOG_DIR $JUNIT_REPORT_PARTS $REPORTS_ARTIFACTS_DIR + mkdir -p $TMP_DIR $OUT_DIR $ARTIFACTS_DIR $TEST_ARTIFACTS_DIR $LOG_DIR $JUNIT_REPORT_PARTS $REPORTS_ARTIFACTS_DIR - name: Install Node required for Testmo CLI uses: actions/setup-node@v3 @@ -222,7 +223,7 @@ runs: ./ya test "${params[@]}" \ --bazel-remote-put --bazel-remote-username "${{ inputs.bazel_remote_username }}" --bazel-remote-password "${{ inputs.bazel_remote_password }}" -DCONSISTENT_DEBUG \ --log-file "$LOG_DIR/ya_log_prewarm.txt" --evlog-file "$LOG_DIR/ya_evlog_prewarm.jsonl" \ - --dist-cache-evict-bins --cache-tests --no-dir-outputs --test-node-output-limit 100000 --drop-graph-result-before-tests || ( + --dist-cache-evict-bins --cache-tests --no-dir-outputs --test-node-output-limit 1000000 --drop-graph-result-before-tests || ( RC=$? echo "::debug::ya test RC=$RC" ) @@ -231,7 +232,7 @@ runs: echo "::debug::save tests reports" ./ya test "${params[@]}" \ --stat --log-file "$LOG_DIR/ya_log.txt" --evlog-file "$LOG_DIR/ya_evlog.jsonl" -DCONSISTENT_DEBUG \ - --cache-tests --dist-cache-evict-bins --no-dir-outputs --test-node-output-limit 100000 --drop-graph-result-before-tests \ + --cache-tests --dist-cache-evict-bins --no-dir-outputs --test-node-output-limit 1000000 --drop-graph-result-before-tests \ --junit "$JUNIT_REPORT_XML" --output "$OUT_DIR" || ( RC=$? if [ $RC -ne 0 ]; then @@ -259,7 +260,8 @@ runs: -m .github/config/muted_ya.txt \ --ya-out "$OUT_DIR" \ --log-url-prefix "$S3_URL_PREFIX/logs/" \ - --log-out-dir "$ARTIFACTS_DIR/logs/" \ + --test-stuff-out "$TEST_ARTIFACTS_DIR/" \ + --test-stuff-prefix "$S3_TEST_ARTIFACTS_URL_PREFIX/" \ "$JUNIT_REPORT_XML" .github/scripts/tests/split-junit.py -o "$JUNIT_REPORT_PARTS" "$JUNIT_REPORT_XML" @@ -321,6 +323,7 @@ runs: run: | echo "::group::s3-sync" s3cmd sync -r --follow-symlinks --acl-public --no-progress --stats --no-check-md5 "$ARTIFACTS_DIR/" "$S3_BUCKET_PATH/" + s3cmd sync -r --follow-symlinks --acl-public --no-progress --stats --no-check-md5 "$TEST_ARTIFACTS_DIR/" "$S3_TEST_ARTIFACTS_BUCKET_PATH/" echo "::endgroup::" - name: sync logs results to s3 diff --git a/.github/scripts/tests/transform-ya-junit.py b/.github/scripts/tests/transform-ya-junit.py index ef479fe66e19..f75b0712d1c5 100755 --- a/.github/scripts/tests/transform-ya-junit.py +++ b/.github/scripts/tests/transform-ya-junit.py @@ -5,6 +5,7 @@ import os import sys import urllib.parse +import zipfile from xml.etree import ElementTree as ET from mute_utils import mute_target, pattern_to_re from junit_utils import add_junit_link_property, is_faulty_testcase @@ -53,6 +54,10 @@ class YTestReportTrace: def __init__(self, out_root): self.out_root = out_root self.traces = {} + self.logs_dir = None + + def abs_path(self, path): + return path.replace("$(BUILD_ROOT)", self.out_root) def load(self, subdir): test_results_dir = os.path.join(self.out_root, f"{subdir}/test-results/") @@ -61,6 +66,7 @@ def load(self, subdir): log_print(f"Directory {test_results_dir} doesn't exist") return + # find the test result for folder in os.listdir(test_results_dir): fn = os.path.join(self.out_root, test_results_dir, folder, "ytest.report.trace") @@ -76,6 +82,9 @@ def load(self, subdir): subtest = event["subtest"] cls = cls.replace("::", ".") self.traces[(cls, subtest)] = event + logs_dir = self.abs_path(event['logs']['logsdir']) + self.logs_dir = logs_dir + break def has(self, cls, name): return (cls, name) in self.traces @@ -93,7 +102,7 @@ def get_logs(self, cls, name): if k == "logsdir": continue - result[k] = path.replace("$(BUILD_ROOT)", self.out_root) + result[k] = self.abs_path(path) return result @@ -135,7 +144,26 @@ def save_log(build_root, fn, out_dir, log_url_prefix, trunc_size): return f"{log_url_prefix}{quoted_fpath}" -def transform(fp, mute_check: YaMuteCheck, ya_out_dir, save_inplace, log_url_prefix, log_out_dir, log_trunc_size): +def save_zip(suite_name, out_dir, url_prefix, logs_dir): + arc_name = f"{suite_name.replace('/', '-')}.zip" + + arc_fn = os.path.join(out_dir, arc_name) + + zf = zipfile.ZipFile(arc_fn, mode="w", compression=zipfile.ZIP_DEFLATED, compresslevel=9) + + log_print(f"put {logs_dir} into {arc_name}") + for root, dirs, files in os.walk(logs_dir): + for f in files: + filename = os.path.join(root, f) + zf.write(filename, os.path.relpath(filename, logs_dir)) + zf.close() + + quoted_fpath = urllib.parse.quote(arc_name) + return f"{url_prefix}{quoted_fpath}" + + +def transform(fp, mute_check: YaMuteCheck, ya_out_dir, save_inplace, log_url_prefix, log_out_dir, log_trunc_size, + test_stuff_out, test_stuff_prefix): tree = ET.parse(fp) root = tree.getroot() @@ -144,11 +172,14 @@ def transform(fp, mute_check: YaMuteCheck, ya_out_dir, save_inplace, log_url_pre traces = YTestReportTrace(ya_out_dir) traces.load(suite_name) + has_fail_tests = False + for case in suite.findall("testcase"): test_name = case.get("name") case.set("classname", suite_name) is_fail = is_faulty_testcase(case) + has_fail_tests |= is_fail if mute_check(suite_name, test_name): log_print("mute", suite_name, test_name) @@ -164,6 +195,16 @@ def transform(fp, mute_check: YaMuteCheck, ya_out_dir, save_inplace, log_url_pre url = save_log(ya_out_dir, fn, log_out_dir, log_url_prefix, log_trunc_size) add_junit_link_property(case, name, url) + if has_fail_tests: + if not traces.logs_dir: + log_print(f"no logsdir for {suite_name}") + continue + + url = save_zip(suite_name, test_stuff_out, test_stuff_prefix, traces.logs_dir) + + for case in suite.findall("testcase"): + add_junit_link_property(case, 'logsdir', url) + if save_inplace: tree.write(fp.name) else: @@ -187,6 +228,8 @@ def main(): help="truncate log after specific size, 0 disables truncation", ) parser.add_argument("--ya-out", help="ya make output dir (for searching logs and artifacts)") + parser.add_argument('--test-stuff-out', help='output folder for archive testing_out_stuff') + parser.add_argument('--test-stuff-prefix', help='url prefix for testing_out_stuff') parser.add_argument("in_file", type=argparse.FileType("r")) args = parser.parse_args() @@ -204,6 +247,8 @@ def main(): args.log_url_prefix, args.log_out_dir, args.log_trunc_size, + args.test_stuff_out, + args.test_stuff_prefix, ) From ac65d2fdb87201998b9315c7d0e0d8d657dcae20 Mon Sep 17 00:00:00 2001 From: nikita kozlovsky <nikitka@users.noreply.github.com> Date: Mon, 19 Feb 2024 16:22:00 +0100 Subject: [PATCH 090/110] ci: fix single file logs saving (#2077) --- .github/actions/test_ya/action.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/test_ya/action.yml b/.github/actions/test_ya/action.yml index 1e75cc2914b4..29b73205c2a3 100644 --- a/.github/actions/test_ya/action.yml +++ b/.github/actions/test_ya/action.yml @@ -260,6 +260,7 @@ runs: -m .github/config/muted_ya.txt \ --ya-out "$OUT_DIR" \ --log-url-prefix "$S3_URL_PREFIX/logs/" \ + --log-out-dir "$ARTIFACTS_DIR/logs/" \ --test-stuff-out "$TEST_ARTIFACTS_DIR/" \ --test-stuff-prefix "$S3_TEST_ARTIFACTS_URL_PREFIX/" \ "$JUNIT_REPORT_XML" From e6fe0154be62b62d69f97815f39e3e3d17da1d44 Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Fri, 23 Feb 2024 12:51:13 +0100 Subject: [PATCH 091/110] CMake14 build (#2207) --- .github/actions/build_ya/action.yml | 10 +++++++++- .../build_and_test_ya_provisioned.yml | 2 ++ .github/workflows/pr_check.yml | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/.github/actions/build_ya/action.yml b/.github/actions/build_ya/action.yml index 281701e7aeea..7e20d2a000f4 100644 --- a/.github/actions/build_ya/action.yml +++ b/.github/actions/build_ya/action.yml @@ -7,7 +7,7 @@ inputs: build_preset: required: true default: "relwithdebinfo" - description: "relwithdebinfo, release-asan, release-tsan" + description: "debug, relwithdebinfo, release-asan, release-tsan, release, release-cmake14" bazel_remote_uri: required: false description: "bazel-remote endpoint" @@ -67,6 +67,14 @@ runs: relwithdebinfo) build_type=relwithdebinfo ;; + release) + build_type=release + ;; + release-cmake14) + build_type=release + extra_params+=(--target-platform="CLANG14-LINUX-X86_64") + extra_params+=(-DLLD_VERSION=16) + ;; release-asan) build_type=release extra_params+=(--sanitize="address") diff --git a/.github/workflows/build_and_test_ya_provisioned.yml b/.github/workflows/build_and_test_ya_provisioned.yml index bbab9cf9b857..ee0c8cb8720a 100644 --- a/.github/workflows/build_and_test_ya_provisioned.yml +++ b/.github/workflows/build_and_test_ya_provisioned.yml @@ -13,10 +13,12 @@ on: description: "Build preset" options: - debug + - release - relwithdebinfo - release-asan - release-tsan - release-msan + - release-cmake14 test_size: type: choice default: "small,medium,large" diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index 8e1a03a83ee4..fe9e647c948f 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -199,3 +199,21 @@ jobs: put_build_results_to_cache: true commit_sha: ${{ needs.check-running-allowed.outputs.commit_sha }} secrets: inherit + build: + needs: + - check-running-allowed + if: needs.check-running-allowed.outputs.result == 'true' && needs.check-running-allowed.outputs.commit_sha != '' + strategy: + fail-fast: false + matrix: + build_preset: ["release-cmake14"] + name: Build and test ${{ matrix.build_preset }} + uses: ./.github/workflows/build_and_test_ya_provisioned.yml + with: + build_preset: ${{ matrix.build_preset }} + build_target: "ydb/" + run_tests: false + runner_label: auto-provisioned + put_build_results_to_cache: true + commit_sha: ${{ needs.check-running-allowed.outputs.commit_sha }} + secrets: inherit From 27e586edede91e60d775435cc3899429345e6ed5 Mon Sep 17 00:00:00 2001 From: nikita kozlovsky <nikitka@users.noreply.github.com> Date: Mon, 26 Feb 2024 14:15:48 +0100 Subject: [PATCH 092/110] ci: run relwithdebinfo and debug with build-preset labels too (#2245) --- .github/workflows/build_and_test_ya_provisioned.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test_ya_provisioned.yml b/.github/workflows/build_and_test_ya_provisioned.yml index ee0c8cb8720a..bdedc4320c61 100644 --- a/.github/workflows/build_and_test_ya_provisioned.yml +++ b/.github/workflows/build_and_test_ya_provisioned.yml @@ -101,8 +101,7 @@ jobs: with: # FIXME: always use auto-provisioned here? runner_label: ${{ inputs.runner_label }} - # naive check for -asan, -tsan, -msan - runner_additional_label: ${{ contains(inputs.build_preset, '-') && format('build-preset-{0}', inputs.build_preset) || '' }} + runner_additional_label: ${{ format('build-preset-{0}', inputs.build_preset) }} build_target: ${{ inputs.build_target }} build_preset: ${{ inputs.build_preset }} run_build: ${{ inputs.run_build }} From e7f90d93e2b518bab92bb53faeb3847b0dc66edb Mon Sep 17 00:00:00 2001 From: nikita kozlovsky <nikitka@users.noreply.github.com> Date: Wed, 6 Mar 2024 12:00:17 +0100 Subject: [PATCH 093/110] ci: add "external" label for PRs made by external contributors (#2488) --- .github/workflows/pr_check.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index fe9e647c948f..a7c35f93324a 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -79,12 +79,21 @@ jobs: uses: actions/github-script@v6 with: script: | + let externalContributorLabel = 'external'; + github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: 'Hi! Thank you for contributing!\nThe tests on this PR will run after a maintainer adds an `ok-to-test` label to this PR manually. Thank you for your patience!' }); + + github.rest.issues.addLabels({ + ...context.repo, + issue_number: context.issue.number, + labels: [externalContributorLabel] + }); + - name: cleanup-test-label uses: actions/github-script@v6 with: From 7255ed8ec60591a281fb82a71b1974cc915068df Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Fri, 8 Mar 2024 16:26:30 +0100 Subject: [PATCH 094/110] Add workflow to create a Pull Request to import libraries update (#2575) --- .github/workflows/libs_create_pr.yml | 61 ++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/libs_create_pr.yml diff --git a/.github/workflows/libs_create_pr.yml b/.github/workflows/libs_create_pr.yml new file mode 100644 index 000000000000..119aaa0f5706 --- /dev/null +++ b/.github/workflows/libs_create_pr.yml @@ -0,0 +1,61 @@ +name: Create PR to import libraries to main +on: + workflow_dispatch: +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true +env: + REPO: ${{ github.repository }} + TOKEN: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} +jobs: + sync: + runs-on: ubuntu-latest + steps: + - name: Get current date + id: date + run: echo "::set-output name=dtm::$(date +'%y%m%d-%H%M')" + - name: Sync + run: | + currsha=$(curl -s -H "Accept: application/vnd.github.VERSION.sha" https://api.github.com/repos/$REPO/commits/rightlib) + echo "Current rightlib sha: ${currsha}" + lastsha=$(curl -s https://raw.githubusercontent.com/$REPO/main/ydb/ci/rightlib.txt) + echo "Last imported rightlib sha: ${lastsha}" + if [ "${currsha}" == "${lastsha}" ];then + echo "No new commits on the rightlib branch to merge, exiting" + exit 0 + fi + echo "Git clone..." + git clone https://$TOKEN@github.com/$REPO.git ydb + git config --global user.email "alex@ydb.tech" + git config --global user.name "Alexander Smirnov" + cd ydb + # git fetch --depth `expr $(git rev-list --count HEAD) + 1` + # echo "Commits in rightlib: $(git rev-list --count HEAD)" + # echo "Fetch main..." + # git fetch origin main:main --shallow-exclude rightlib + # git fetch --depth `expr $(git rev-list --count main) + 1` + # echo "Commits in main: $(git rev-list --count main)" + git checkout rightlib + libsha=$(git rev-parse HEAD) + echo "Libs sha: $libsha" + echo "Dev branch..." + git checkout main + devbranch="mergelibs-${{ steps.date.outputs.dtm }}" + git checkout -b ${devbranch} + prevsha=$(git rev-parse HEAD) + git merge rightlib --no-edit + currsha=$(git rev-parse HEAD) + if [ ${prevsha} == ${currsha} ];then + echo "Merge did not bring any changes, exiting" + exit + fi + echo ${mainsha} > ydb/ci/rightlib.txt + git add . + git commit -m "Import libraries ${{ steps.date.outputs.dtm }}" + git push --set-upstream origin mergelibs-${{ steps.date.outputs.dtm }} + curl -L -X POST --fail-with-body \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $TOKEN" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/repos/$REPO/pulls \ + -d '{"title":"Library import ${{ steps.date.outputs.dtm }}","body":"","head":"'${devbranch}'","base":"main"}' From 6862187f5031113f2435414939d220ba80f582c6 Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Tue, 12 Mar 2024 11:40:23 +0100 Subject: [PATCH 095/110] Update libs_create_pr.yml --- .github/workflows/libs_create_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/libs_create_pr.yml b/.github/workflows/libs_create_pr.yml index 119aaa0f5706..89d9f29b48cf 100644 --- a/.github/workflows/libs_create_pr.yml +++ b/.github/workflows/libs_create_pr.yml @@ -49,7 +49,7 @@ jobs: echo "Merge did not bring any changes, exiting" exit fi - echo ${mainsha} > ydb/ci/rightlib.txt + echo ${libsha} > ydb/ci/rightlib.txt git add . git commit -m "Import libraries ${{ steps.date.outputs.dtm }}" git push --set-upstream origin mergelibs-${{ steps.date.outputs.dtm }} From cd8d537321222de81029b16bb7f2a3abd549c087 Mon Sep 17 00:00:00 2001 From: Semyon Danilov <senya@ydb.tech> Date: Wed, 13 Mar 2024 14:03:22 +0400 Subject: [PATCH 096/110] Update GitHub workflows to include stream-nb-* branches (#2669) --- .github/workflows/postcommit_asan.yml | 1 + .github/workflows/postcommit_relwithdebinfo.yml | 1 + .github/workflows/pr_check.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/workflows/postcommit_asan.yml b/.github/workflows/postcommit_asan.yml index 08b704115ebd..1664b3bbc121 100644 --- a/.github/workflows/postcommit_asan.yml +++ b/.github/workflows/postcommit_asan.yml @@ -5,6 +5,7 @@ on: branches: - 'main' - 'stable-*' + - 'stream-nb-*' paths-ignore: - 'ydb/docs/**' - '.github/**' diff --git a/.github/workflows/postcommit_relwithdebinfo.yml b/.github/workflows/postcommit_relwithdebinfo.yml index 53a56ed72a3e..48fa1f35ea9c 100644 --- a/.github/workflows/postcommit_relwithdebinfo.yml +++ b/.github/workflows/postcommit_relwithdebinfo.yml @@ -4,6 +4,7 @@ on: branches: - 'main' - 'stable-*' + - 'stream-nb-*' paths-ignore: - 'ydb/docs/**' - '.github/**' diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index a7c35f93324a..359b94e70255 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -4,6 +4,7 @@ on: branches: - 'main' - 'stable-*' + - 'stream-nb-*' paths-ignore: - 'ydb/docs/**' - '*' From bc090484192a8b56486eb5f541d9fcd067cf20a1 Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Fri, 15 Mar 2024 16:15:58 +0100 Subject: [PATCH 097/110] Remove reduntant call levels when running PR checks (#2778) --- .github/actions/build_and_test_ya/action.yml | 117 +++++++++++++++++++ .github/actions/build_ya/action.yml | 2 +- .github/workflows/pr_check.yml | 52 ++++----- 3 files changed, 140 insertions(+), 31 deletions(-) create mode 100644 .github/actions/build_and_test_ya/action.yml diff --git a/.github/actions/build_and_test_ya/action.yml b/.github/actions/build_and_test_ya/action.yml new file mode 100644 index 000000000000..e72ff8d7a3fb --- /dev/null +++ b/.github/actions/build_and_test_ya/action.yml @@ -0,0 +1,117 @@ +name: Ya-Build-and-Test +inputs: + build_target: + type: string + default: "ydb/" + description: "limit build and test to specific target" + build_preset: + type: string + run_build: + type: boolean + default: true + description: "run build" + run_tests: + type: boolean + default: true + description: "run tests" + test_threads: + type: string + default: 28 + description: "Test threads count" + link_threads: + type: string + default: 8 + description: "link threads count" + test_size: + type: string + default: "small,medium,large" + test_type: + type: string + default: "unittest,py3test,py2test,pytest" + folder_prefix: + type: string + default: "ya-" + cache_tests: + type: boolean + default: false + description: "Use cache for tests" + put_build_results_to_cache: + type: boolean + default: true + commit_sha: + type: string + default: "" + secs: + type: string + default: "" + vars: + type: string + default: "" +defaults: + run: + shell: bash +runs: + using: "composite" + steps: + - name: comment-build-start + if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target' + shell: bash + env: + BUILD_PRESET: ${{ inputs.build_preset }} + GITHUB_TOKEN: ${{ github.token }} + run: | + jobs_url="https://api.github.com/repos/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}/jobs" + # tricky: we are searching job with name that contains build_preset + check_url=$(curl -s $jobs_url | jq --arg n "$BUILD_PRESET" -r '.jobs[] | select(.name | contains($n)) | .html_url') + + echo "Pre-commit [check]($check_url) for ${{ inputs.commit_sha }} has started." | .github/scripts/tests/comment-pr.py --rewrite + + - name: Prepare s3cmd + uses: ./.github/actions/s3cmd + with: + s3_bucket: ${{ fromJSON( inputs.vars ).AWS_BUCKET }} + s3_endpoint: ${{ fromJSON( inputs.vars ).AWS_ENDPOINT }} + s3_key_id: ${{ fromJSON( inputs.secs ).AWS_KEY_ID }} + s3_key_secret: ${{ fromJSON( inputs.secs ).AWS_KEY_VALUE }} + folder_prefix: ya- + build_preset: ${{ inputs.build_preset }} + + - name: Build + uses: ./.github/actions/build_ya + if: ${{ inputs.run_build == 'true' }} + with: + build_target: ${{ inputs.build_target }} + build_preset: ${{ inputs.build_preset }} + bazel_remote_uri: ${{ fromJSON( inputs.vars ).REMOTE_CACHE_URL || '' }} + bazel_remote_username: ${{ inputs.put_build_results_to_cache && fromJSON( inputs.secs ).REMOTE_CACHE_USERNAME || '' }} + bazel_remote_password: ${{ inputs.put_build_results_to_cache && fromJSON( inputs.secs ).REMOTE_CACHE_PASSWORD || '' }} + link_threads: ${{ inputs.link_threads }} + + - name: debug1 + shell: bash + run: echo "Run tests? ${{ inputs.run_tests }}" + + - name: Run tests + uses: ./.github/actions/test_ya + if: ${{ inputs.run_tests == 'true' }} + with: + build_target: ${{ inputs.build_target }} + build_preset: ${{ inputs.build_preset }} + test_size: ${{ inputs.test_size }} + test_type: ${{ inputs.test_type }} + testman_token: ${{ fromJSON( inputs.secs ).TESTMO_TOKEN }} + testman_url: ${{ fromJSON( inputs.vars ).TESTMO_URL }} + testman_project_id: ${{ fromJSON( inputs.vars ).TESTMO_PROJECT_ID }} + bazel_remote_uri: ${{ fromJSON( inputs.vars ).REMOTE_CACHE_URL || '' }} + bazel_remote_username: ${{ inputs.put_build_results_to_cache && fromJSON( inputs.secs ).REMOTE_CACHE_USERNAME || '' }} + bazel_remote_password: ${{ inputs.put_build_results_to_cache && fromJSON( inputs.secs ).REMOTE_CACHE_PASSWORD || '' }} + link_threads: ${{ inputs.link_threads }} + test_threads: ${{ inputs.test_threads }} + + - name: comment-if-cancel + shell: bash + if: cancelled() && (github.event_name == 'pull_request' || github.event_name == 'pull_request_target') + env: + BUILD_PRESET: ${{ inputs.build_preset }} + GITHUB_TOKEN: ${{ github.token }} + run: echo "Check cancelled" | .github/scripts/tests/comment-pr.py --color black diff --git a/.github/actions/build_ya/action.yml b/.github/actions/build_ya/action.yml index 7e20d2a000f4..c1164124d6ed 100644 --- a/.github/actions/build_ya/action.yml +++ b/.github/actions/build_ya/action.yml @@ -70,7 +70,7 @@ runs: release) build_type=release ;; - release-cmake14) + release-clang14) build_type=release extra_params+=(--target-platform="CLANG14-LINUX-X86_64") extra_params+=(-DLLD_VERSION=16) diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index 359b94e70255..42352f8d35d0 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -196,34 +196,26 @@ jobs: strategy: fail-fast: false matrix: - build_preset: ["relwithdebinfo", "release-asan"] + build_preset: ["relwithdebinfo", "release-asan", "release-clang14"] + runs-on: [ self-hosted, auto-provisioned, "${{ format('build-preset-{0}', matrix.build_preset) }}" ] name: Build and test ${{ matrix.build_preset }} - uses: ./.github/workflows/build_and_test_ya_provisioned.yml - with: - build_preset: ${{ matrix.build_preset }} - build_target: "ydb/" - test_size: "small,medium" - test_type: "unittest,py3test,py2test,pytest" - test_threads: 52 - runner_label: auto-provisioned - put_build_results_to_cache: true - commit_sha: ${{ needs.check-running-allowed.outputs.commit_sha }} - secrets: inherit - build: - needs: - - check-running-allowed - if: needs.check-running-allowed.outputs.result == 'true' && needs.check-running-allowed.outputs.commit_sha != '' - strategy: - fail-fast: false - matrix: - build_preset: ["release-cmake14"] - name: Build and test ${{ matrix.build_preset }} - uses: ./.github/workflows/build_and_test_ya_provisioned.yml - with: - build_preset: ${{ matrix.build_preset }} - build_target: "ydb/" - run_tests: false - runner_label: auto-provisioned - put_build_results_to_cache: true - commit_sha: ${{ needs.check-running-allowed.outputs.commit_sha }} - secrets: inherit + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ needs.check-running-allowed.outputs.commit_sha }} + - name: Build and test + uses: ./.github/actions/build_and_test_ya + with: + build_preset: ${{ matrix.build_preset }} + build_target: "ydb/" + run_tests: ${{ contains(fromJSON('["relwithdebinfo", "release-asan"]'), matrix.build_preset) }} + test_size: "small,medium" + test_type: "unittest,py3test,py2test,pytest" + test_threads: 52 + put_build_results_to_cache: true + commit_sha: ${{ needs.check-running-allowed.outputs.commit_sha }} + secs: ${{ format('{{"TESTMO_TOKEN":"{0}","AWS_KEY_ID":"{1}","AWS_KEY_VALUE":"{2}","REMOTE_CACHE_USERNAME":"{3}","REMOTE_CACHE_PASSWORD":"{4}"}}', + secrets.TESTMO_TOKEN, secrets.AWS_KEY_ID, secrets.AWS_KEY_VALUE, secrets.REMOTE_CACHE_USERNAME, secrets.REMOTE_CACHE_PASSWORD ) }} + vars: ${{ format('{{"AWS_BUCKET":"{0}","AWS_ENDPOINT":"{1}","REMOTE_CACHE_URL":"{2}","TESTMO_URL":"{3}","TESTMO_PROJECT_ID":"{4}"}}', + vars.AWS_BUCKET, vars.AWS_ENDPOINT, vars.REMOTE_CACHE_URL_YA, vars.TESTMO_URL, vars.TESTMO_PROJECT_ID ) }} From 7bd3b4b7491585d2ccc9abcdad1270e8f6dfb770 Mon Sep 17 00:00:00 2001 From: nikita kozlovsky <nikitka@users.noreply.github.com> Date: Tue, 19 Mar 2024 16:27:17 +0100 Subject: [PATCH 098/110] ci: pr-checks: run tests only if build is success (#2954) --- .github/actions/build_and_test_ya/action.yml | 18 +++++++++++++++++- .github/actions/build_ya/action.yml | 19 ++++++++++++++----- .github/workflows/pr_check.yml | 1 + 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/.github/actions/build_and_test_ya/action.yml b/.github/actions/build_and_test_ya/action.yml index e72ff8d7a3fb..132852d4f2b5 100644 --- a/.github/actions/build_and_test_ya/action.yml +++ b/.github/actions/build_and_test_ya/action.yml @@ -14,6 +14,9 @@ inputs: type: boolean default: true description: "run tests" + run_tests_if_build_fails: + default: "true" + description: "run tests if build fails" test_threads: type: string default: 28 @@ -78,6 +81,7 @@ runs: - name: Build uses: ./.github/actions/build_ya + id: build if: ${{ inputs.run_build == 'true' }} with: build_target: ${{ inputs.build_target }} @@ -93,7 +97,7 @@ runs: - name: Run tests uses: ./.github/actions/test_ya - if: ${{ inputs.run_tests == 'true' }} + if: ${{ inputs.run_tests == 'true' && (steps.build.outputs.success == 'true' || inputs.run_tests_if_build_fails == 'true') }} with: build_target: ${{ inputs.build_target }} build_preset: ${{ inputs.build_preset }} @@ -107,6 +111,18 @@ runs: bazel_remote_password: ${{ inputs.put_build_results_to_cache && fromJSON( inputs.secs ).REMOTE_CACHE_PASSWORD || '' }} link_threads: ${{ inputs.link_threads }} test_threads: ${{ inputs.test_threads }} + + - name: Notify about failed build + if: ${{ steps.build.outputs.success != 'true' && inputs.run_tests == 'true' && inputs.run_tests_if_build_fails == 'false' }} + shell: bash + run: | + echo 'Build failed. See the [build log](${{ steps.build.outputs.log_url }}).' >> $GITHUB_STEP_SUMMARY + + if [[ "$GITHUB_EVENT_NAME" =~ ^pull_request ]]; then + echo "Tests run skipped." | .github/scripts/tests/comment-pr.py --fail + fi + + exit 1 - name: comment-if-cancel shell: bash diff --git a/.github/actions/build_ya/action.yml b/.github/actions/build_ya/action.yml index c1164124d6ed..df56694d0ee0 100644 --- a/.github/actions/build_ya/action.yml +++ b/.github/actions/build_ya/action.yml @@ -21,7 +21,13 @@ inputs: required: false default: "8" description: "link threads count" - +outputs: + success: + value: ${{ steps.build.outputs.status }} + description: "build success" + log_url: + value: ${{ steps.init.outputs.log_url }} + description: "build log url" runs: using: "composite" steps: @@ -34,10 +40,15 @@ runs: echo "SHELLOPTS=xtrace" >> $GITHUB_ENV export TMP_DIR=$(pwd)/tmp_build echo "TMP_DIR=$TMP_DIR" >> $GITHUB_ENV + + export log_url="$S3_URL_PREFIX/build_logs/ya_make.log" + rm -rf $TMP_DIR && mkdir $TMP_DIR echo "BUILD_PRESET=$build_preset" >> $GITHUB_ENV echo "GITHUB_TOKEN=${{ github.token }}" >> $GITHUB_ENV + echo "LOG_URL=$log_url" >> $GITHUB_ENV + echo "log_url=$log_url" >> $GITHUB_OUTPUT - name: build id: build @@ -107,7 +118,7 @@ runs: ./ya make -k --build "${build_type}" --force-build-depends -D'BUILD_LANGUAGES=CPP PY3 PY2 GO' -T --stat -DCONSISTENT_DEBUG \ --log-file "$TMP_DIR/ya_log.txt" --evlog-file "$TMP_DIR/ya_evlog.jsonl" \ --cache-size 512G --link-threads "${{ inputs.link_threads }}" \ - "${extra_params[@]}" |& tee $TMP_DIR/ya_make.log || ( + "${extra_params[@]}" |& tee $TMP_DIR/ya_make.log && echo "status=true" >> $GITHUB_OUTPUT || ( RC=$? echo "::debug::ya make RC=$RC" echo "status=failed" >> $GITHUB_OUTPUT @@ -126,10 +137,8 @@ runs: if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target' shell: bash run: | - log_url="$S3_URL_PREFIX/build_logs/ya_make.log" - if [ "${{ steps.build.outputs.status }}" == "failed" ]; then - echo "Build failed. see the [build logs]($log_url)." | .github/scripts/tests/comment-pr.py --fail + echo "Build failed. see the [build logs]($LOG_URL)." | .github/scripts/tests/comment-pr.py --fail else echo "Build successful." | .github/scripts/tests/comment-pr.py --ok fi diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index 42352f8d35d0..571f8af126f3 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -214,6 +214,7 @@ jobs: test_type: "unittest,py3test,py2test,pytest" test_threads: 52 put_build_results_to_cache: true + run_tests_if_build_fails: false commit_sha: ${{ needs.check-running-allowed.outputs.commit_sha }} secs: ${{ format('{{"TESTMO_TOKEN":"{0}","AWS_KEY_ID":"{1}","AWS_KEY_VALUE":"{2}","REMOTE_CACHE_USERNAME":"{3}","REMOTE_CACHE_PASSWORD":"{4}"}}', secrets.TESTMO_TOKEN, secrets.AWS_KEY_ID, secrets.AWS_KEY_VALUE, secrets.REMOTE_CACHE_USERNAME, secrets.REMOTE_CACHE_PASSWORD ) }} From 690eb6c3ea286bbad08343e18f70b4f686cd65f2 Mon Sep 17 00:00:00 2001 From: AlexSm <alex@ydb.tech> Date: Tue, 26 Mar 2024 18:03:28 +0100 Subject: [PATCH 099/110] Run tests based on build graph analysis, stop using cache for test results (#3171) --- .github/actions/build_and_test_ya/action.yml | 35 +++++----- .github/actions/graph_compare/action.yml | 18 ++++++ .github/actions/test_ya/action.yml | 60 +++-------------- .github/scripts/graph_compare.sh | 40 ++++++++++++ .github/workflows/build_and_test_ya.yml | 64 ++++--------------- .../build_and_test_ya_provisioned.yml | 8 +-- .github/workflows/postcommit_asan.yml | 31 ++++++--- .../workflows/postcommit_relwithdebinfo.yml | 31 ++++++--- .github/workflows/pr_check.yml | 3 +- 9 files changed, 146 insertions(+), 144 deletions(-) create mode 100644 .github/actions/graph_compare/action.yml create mode 100755 .github/scripts/graph_compare.sh diff --git a/.github/actions/build_and_test_ya/action.yml b/.github/actions/build_and_test_ya/action.yml index 132852d4f2b5..c8acc5d5f2cb 100644 --- a/.github/actions/build_and_test_ya/action.yml +++ b/.github/actions/build_and_test_ya/action.yml @@ -31,19 +31,16 @@ inputs: test_type: type: string default: "unittest,py3test,py2test,pytest" + increment: + type: boolean + required: true + description: If true, compares build graphs between the current and previous commits to find a list of test suites to run. Otherwise, runs all tests. folder_prefix: type: string default: "ya-" - cache_tests: - type: boolean - default: false - description: "Use cache for tests" put_build_results_to_cache: type: boolean default: true - commit_sha: - type: string - default: "" secs: type: string default: "" @@ -67,7 +64,7 @@ runs: # tricky: we are searching job with name that contains build_preset check_url=$(curl -s $jobs_url | jq --arg n "$BUILD_PRESET" -r '.jobs[] | select(.name | contains($n)) | .html_url') - echo "Pre-commit [check]($check_url) for ${{ inputs.commit_sha }} has started." | .github/scripts/tests/comment-pr.py --rewrite + echo "Pre-commit [check]($check_url) for $(git rev-parse HEAD) has started." | .github/scripts/tests/comment-pr.py --rewrite - name: Prepare s3cmd uses: ./.github/actions/s3cmd @@ -91,24 +88,32 @@ runs: bazel_remote_password: ${{ inputs.put_build_results_to_cache && fromJSON( inputs.secs ).REMOTE_CACHE_PASSWORD || '' }} link_threads: ${{ inputs.link_threads }} - - name: debug1 + - name: Generate ya.make with affected test suites list + if: inputs.run_tests == 'true' && inputs.increment == 'true' + uses: ./.github/actions/graph_compare + + - name: Check if there's a list of tests to run + id: test_run_choice shell: bash - run: echo "Run tests? ${{ inputs.run_tests }}" + run: | + if [ -f ya.make ];then + echo "target='.'" >> $GITHUB_OUTPUT + echo "Listed test targets: " + cat ya.make + else + echo "target=${{ inputs.build_target }}" >> $GITHUB_OUTPUT + fi - name: Run tests uses: ./.github/actions/test_ya if: ${{ inputs.run_tests == 'true' && (steps.build.outputs.success == 'true' || inputs.run_tests_if_build_fails == 'true') }} with: - build_target: ${{ inputs.build_target }} + build_target: ${{ steps.test_run_choice.outputs.target }} build_preset: ${{ inputs.build_preset }} test_size: ${{ inputs.test_size }} - test_type: ${{ inputs.test_type }} testman_token: ${{ fromJSON( inputs.secs ).TESTMO_TOKEN }} testman_url: ${{ fromJSON( inputs.vars ).TESTMO_URL }} testman_project_id: ${{ fromJSON( inputs.vars ).TESTMO_PROJECT_ID }} - bazel_remote_uri: ${{ fromJSON( inputs.vars ).REMOTE_CACHE_URL || '' }} - bazel_remote_username: ${{ inputs.put_build_results_to_cache && fromJSON( inputs.secs ).REMOTE_CACHE_USERNAME || '' }} - bazel_remote_password: ${{ inputs.put_build_results_to_cache && fromJSON( inputs.secs ).REMOTE_CACHE_PASSWORD || '' }} link_threads: ${{ inputs.link_threads }} test_threads: ${{ inputs.test_threads }} diff --git a/.github/actions/graph_compare/action.yml b/.github/actions/graph_compare/action.yml new file mode 100644 index 000000000000..388cb6d154a7 --- /dev/null +++ b/.github/actions/graph_compare/action.yml @@ -0,0 +1,18 @@ +name: graph_compare +description: Compare graphs between current and previous commits (merge commit base in case of a merge commit), and list affected tests in ya.make +runs: + using: "composite" + steps: + - name: original_ref + id: oref + shell: bash + run: | + echo "value=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT + - name: generate_ya_make + shell: bash + run: | + ./.github/scripts/graph_compare.sh ${{ steps.oref.outputs.value }}~1 ${{ steps.oref.outputs.value }} + - name: restore_ref + shell: bash + run: | + git checkout ${{ steps.oref.outputs.value }} diff --git a/.github/actions/test_ya/action.yml b/.github/actions/test_ya/action.yml index 29b73205c2a3..06c1e1e208a5 100644 --- a/.github/actions/test_ya/action.yml +++ b/.github/actions/test_ya/action.yml @@ -1,34 +1,24 @@ name: Run tests (ya make) -description: Run tests using ya make +description: Run test targets listed in repository root ya.make (to be created previously) inputs: build_target: - required: false - description: "build target" - + required: true build_preset: required: true default: "relwithdebinfo" description: "relwithdebinfo, release-asan, release-tsan" - test_size: required: false default: "small,medium,large" description: "small or small-medium or all" - - test_type: - required: false - default: "unittest,py3test,py2test,pytest" - description: "run " - test_threads: required: false - default: "28" + default: "56" description: "Test threads count" link_threads: required: false - default: "8" + default: "12" description: "link threads count" - testman_token: required: false description: "test manager auth token" @@ -38,15 +28,6 @@ inputs: testman_project_id: required: false description: "test manager project id" - bazel_remote_uri: - required: false - description: "bazel-remote endpoint" - bazel_remote_username: - required: false - description: "bazel-remote username" - bazel_remote_password: - required: false - description: "bazel-remote password" runs: using: "composite" steps: @@ -161,13 +142,12 @@ runs: shell: bash run: | readarray -d ',' -t test_size < <(printf "%s" "${{ inputs.test_size }}") - readarray -d ',' -t test_type < <(printf "%s" "${{ inputs.test_type }}") params=( - -T -k -D'BUILD_LANGUAGES=CPP PY3 PY2 GO' - ${test_size[@]/#/--test-size=} ${test_type[@]/#/--test-type=} + -T -k + ${test_size[@]/#/--test-size=} --cache-size 512G --do-not-output-stderrs - --stat --canonization-backend=ydb-canondata.storage.yandexcloud.net + --stat --test-threads "${{ inputs.test_threads }}" --link-threads "${{ inputs.link_threads }}" ) @@ -203,36 +183,14 @@ runs: ;; esac - if [ ! -z "${{ inputs.build_target }}" ]; then - params+=(--target="${{ inputs.build_target }}") - fi - - if [ ! -z "${{ inputs.bazel_remote_uri }}" ]; then - params+=(--bazel-remote-store) - params+=(--bazel-remote-base-uri "${{ inputs.bazel_remote_uri }}") - fi - echo "::debug::get version" ./ya --version echo "Tests are running..." | .github/scripts/tests/comment-pr.py - - if [ ! -z "${{ inputs.bazel_remote_username }}" ]; then - echo "::debug::start tests" - ./ya test "${params[@]}" \ - --bazel-remote-put --bazel-remote-username "${{ inputs.bazel_remote_username }}" --bazel-remote-password "${{ inputs.bazel_remote_password }}" -DCONSISTENT_DEBUG \ - --log-file "$LOG_DIR/ya_log_prewarm.txt" --evlog-file "$LOG_DIR/ya_evlog_prewarm.jsonl" \ - --dist-cache-evict-bins --cache-tests --no-dir-outputs --test-node-output-limit 1000000 --drop-graph-result-before-tests || ( - RC=$? - echo "::debug::ya test RC=$RC" - ) - fi - - echo "::debug::save tests reports" - ./ya test "${params[@]}" \ + ./ya test ${{ inputs.build_target }} "${params[@]}" \ --stat --log-file "$LOG_DIR/ya_log.txt" --evlog-file "$LOG_DIR/ya_evlog.jsonl" -DCONSISTENT_DEBUG \ - --cache-tests --dist-cache-evict-bins --no-dir-outputs --test-node-output-limit 1000000 --drop-graph-result-before-tests \ + --no-dir-outputs \ --junit "$JUNIT_REPORT_XML" --output "$OUT_DIR" || ( RC=$? if [ $RC -ne 0 ]; then diff --git a/.github/scripts/graph_compare.sh b/.github/scripts/graph_compare.sh new file mode 100755 index 000000000000..89ebd65fd567 --- /dev/null +++ b/.github/scripts/graph_compare.sh @@ -0,0 +1,40 @@ + +# Compares build graphs for two given refs in the current directory git repo +# Creates ya.make in the current directory listing affected ydb test suites +# Parameters: base_commit_sha head_commit_sha + +set -e + +workdir=$(mktemp -d) +echo Workdir: $workdir +echo Checkout base commit... +git checkout $1 +echo Build graph for base commit... +./ya make -Gj0 -ttt ydb --build release -k --cache-tests | jq '.graph[] | select( ."node-type"=="test")' > $workdir/graph_base + +echo Checkout head commit... +git checkout $2 +echo Build graph for head commit... +./ya make -Gj0 -ttt ydb --build release -k --cache-tests | jq '.graph[] | select( ."node-type"=="test")' > $workdir/graph_head + +echo Generate lists of uids for base and head... +cat $workdir/graph_base | jq '.uid' > $workdir/uid_base +cat $workdir/graph_head | jq '.uid' > $workdir/uid_head + +echo Create a list of changed uids in the head graph... +(cat $workdir/uid_head;(cat $workdir/uid_base;cat $workdir/uid_head) | sort | uniq -u) | sort | uniq -d > $workdir/uids_new + +echo Generate list of test shard names from the head graph based on the list of uids... +cat $workdir/graph_head | jq -r --slurpfile uids $workdir/uids_new 'select( any( .uid; .==$uids[] )) | .kv.path' | sort | uniq > $workdir/testsuites + +echo Number of test suites: +cat $workdir/testsuites | wc -l + +echo Removing test suite name from the list to get target names... +sed -E 's/\/[^/]*$//g;/^null$/d' $workdir/testsuites > $workdir/ts2 + +echo Generating temp ya.make with recurses to all required tests... +cat $workdir/ts2 | (echo 'RECURSE_FOR_TESTS(';cat;echo ')') > ya.make + +# echo Running ya test... +# ./ya make -A -R --build relwithdebinfo . \ No newline at end of file diff --git a/.github/workflows/build_and_test_ya.yml b/.github/workflows/build_and_test_ya.yml index 376a66e4959c..4226de9e35f8 100644 --- a/.github/workflows/build_and_test_ya.yml +++ b/.github/workflows/build_and_test_ya.yml @@ -27,11 +27,11 @@ on: description: "run tests" test_threads: type: string - default: 28 + default: 56 description: "Test threads count" link_threads: type: string - default: 8 + default: 12 description: "link threads count" test_size: type: string @@ -65,60 +65,18 @@ jobs: with: ref: ${{ inputs.commit_sha }} - - name: comment-build-start - if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target' - shell: bash - env: - BUILD_PRESET: ${{ inputs.build_preset }} - GITHUB_TOKEN: ${{ github.token }} - run: | - jobs_url="https://api.github.com/repos/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}/jobs" - # tricky: we are searching job with name that contains build_preset - check_url=$(curl -s $jobs_url | jq --arg n "$BUILD_PRESET" -r '.jobs[] | select(.name | contains($n)) | .html_url') - - echo "Pre-commit [check]($check_url) for ${{ inputs.commit_sha }} has started." | .github/scripts/tests/comment-pr.py --rewrite - - - name: Prepare s3cmd - uses: ./.github/actions/s3cmd + - name: Build and test + uses: ./.github/actions/build_and_test_ya with: - s3_bucket: ${{ vars.AWS_BUCKET }} - s3_endpoint: ${{ vars.AWS_ENDPOINT }} - s3_key_id: ${{ secrets.AWS_KEY_ID }} - s3_key_secret: ${{ secrets.AWS_KEY_VALUE }} - folder_prefix: ya- build_preset: ${{ inputs.build_preset }} - - - name: Build - uses: ./.github/actions/build_ya - if: inputs.run_build - with: build_target: ${{ inputs.build_target }} - build_preset: ${{ inputs.build_preset }} - bazel_remote_uri: ${{ vars.REMOTE_CACHE_URL_YA || '' }} - bazel_remote_username: ${{ inputs.put_build_results_to_cache && secrets.REMOTE_CACHE_USERNAME || '' }} - bazel_remote_password: ${{ inputs.put_build_results_to_cache && secrets.REMOTE_CACHE_PASSWORD || '' }} - link_threads: ${{ inputs.link_threads }} - - - name: Run tests - uses: ./.github/actions/test_ya - if: inputs.run_tests - with: - build_target: ${{ inputs.build_target }} - build_preset: ${{ inputs.build_preset }} + increment: false + run_tests: ${{ inputs.run_tests }} test_size: ${{ inputs.test_size }} test_type: ${{ inputs.test_type }} - testman_token: ${{ secrets.TESTMO_TOKEN }} - testman_url: ${{ vars.TESTMO_URL }} - testman_project_id: ${{ vars.TESTMO_PROJECT_ID }} - bazel_remote_uri: ${{ vars.REMOTE_CACHE_URL_YA || '' }} - bazel_remote_username: ${{ inputs.put_build_results_to_cache && secrets.REMOTE_CACHE_USERNAME || '' }} - bazel_remote_password: ${{ inputs.put_build_results_to_cache && secrets.REMOTE_CACHE_PASSWORD || '' }} - link_threads: ${{ inputs.link_threads }} test_threads: ${{ inputs.test_threads }} - - - name: comment-if-cancel - if: cancelled() && (github.event_name == 'pull_request' || github.event_name == 'pull_request_target') - env: - BUILD_PRESET: ${{ inputs.build_preset }} - GITHUB_TOKEN: ${{ github.token }} - run: echo "Check cancelled" | .github/scripts/tests/comment-pr.py --color black + put_build_results_to_cache: ${{ inputs.put_build_results_to_cache }} + secs: ${{ format('{{"TESTMO_TOKEN":"{0}","AWS_KEY_ID":"{1}","AWS_KEY_VALUE":"{2}","REMOTE_CACHE_USERNAME":"{3}","REMOTE_CACHE_PASSWORD":"{4}"}}', + secrets.TESTMO_TOKEN, secrets.AWS_KEY_ID, secrets.AWS_KEY_VALUE, secrets.REMOTE_CACHE_USERNAME, secrets.REMOTE_CACHE_PASSWORD ) }} + vars: ${{ format('{{"AWS_BUCKET":"{0}","AWS_ENDPOINT":"{1}","REMOTE_CACHE_URL":"{2}","TESTMO_URL":"{3}","TESTMO_PROJECT_ID":"{4}"}}', + vars.AWS_BUCKET, vars.AWS_ENDPOINT, vars.REMOTE_CACHE_URL_YA, vars.TESTMO_URL, vars.TESTMO_PROJECT_ID ) }} diff --git a/.github/workflows/build_and_test_ya_provisioned.yml b/.github/workflows/build_and_test_ya_provisioned.yml index bdedc4320c61..fe00ce167200 100644 --- a/.github/workflows/build_and_test_ya_provisioned.yml +++ b/.github/workflows/build_and_test_ya_provisioned.yml @@ -45,11 +45,11 @@ on: description: "run tests" test_threads: type: string - default: "28" + default: "56" description: "Test threads count" link_threads: type: string - default: "8" + default: "12" description: "link threads count" runner_label: type: string @@ -80,11 +80,11 @@ on: default: true test_threads: type: string - default: 28 + default: 56 description: "Test threads count" link_threads: type: string - default: 8 + default: 12 description: "link threads count" runner_label: type: string diff --git a/.github/workflows/postcommit_asan.yml b/.github/workflows/postcommit_asan.yml index 1664b3bbc121..5a540243829d 100644 --- a/.github/workflows/postcommit_asan.yml +++ b/.github/workflows/postcommit_asan.yml @@ -13,14 +13,25 @@ on: jobs: build_and_test: if: ${{vars.CHECKS_SWITCH != '' && fromJSON(vars.CHECKS_SWITCH).postcommit_asan == true}} + runs-on: [ self-hosted, auto-provisioned, build-preset-release-asan ] name: Build and test release-asan - uses: ./.github/workflows/build_and_test_ya_provisioned.yml - with: - build_preset: "release-asan" - build_target: "ydb/" - test_size: "small,medium" - test_type: "unittest,py3test,py2test,pytest" - test_threads: 52 - runner_label: auto-provisioned - put_build_results_to_cache: true - secrets: inherit + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 2 + - name: Build and test + uses: ./.github/actions/build_and_test_ya + with: + build_preset: "release-asan" + build_target: "ydb/" + increment: true + run_tests: true + test_size: "small,medium" + test_type: "unittest,py3test,py2test,pytest" + test_threads: 52 + put_build_results_to_cache: true + secs: ${{ format('{{"TESTMO_TOKEN":"{0}","AWS_KEY_ID":"{1}","AWS_KEY_VALUE":"{2}","REMOTE_CACHE_USERNAME":"{3}","REMOTE_CACHE_PASSWORD":"{4}"}}', + secrets.TESTMO_TOKEN, secrets.AWS_KEY_ID, secrets.AWS_KEY_VALUE, secrets.REMOTE_CACHE_USERNAME, secrets.REMOTE_CACHE_PASSWORD ) }} + vars: ${{ format('{{"AWS_BUCKET":"{0}","AWS_ENDPOINT":"{1}","REMOTE_CACHE_URL":"{2}","TESTMO_URL":"{3}","TESTMO_PROJECT_ID":"{4}"}}', + vars.AWS_BUCKET, vars.AWS_ENDPOINT, vars.REMOTE_CACHE_URL_YA, vars.TESTMO_URL, vars.TESTMO_PROJECT_ID ) }} diff --git a/.github/workflows/postcommit_relwithdebinfo.yml b/.github/workflows/postcommit_relwithdebinfo.yml index 48fa1f35ea9c..d12971aafd5c 100644 --- a/.github/workflows/postcommit_relwithdebinfo.yml +++ b/.github/workflows/postcommit_relwithdebinfo.yml @@ -12,14 +12,25 @@ on: jobs: build_and_test: if: ${{vars.CHECKS_SWITCH != '' && fromJSON(vars.CHECKS_SWITCH).postcommit_relwithdebinfo == true}} + runs-on: [ self-hosted, auto-provisioned, build-preset-relwithdebinfo ] name: Build and test relwithdebinfo - uses: ./.github/workflows/build_and_test_ya_provisioned.yml - with: - build_preset: "relwithdebinfo" - build_target: "ydb/" - test_size: "small,medium" - test_type: "unittest,py3test,py2test,pytest" - test_threads: 52 - runner_label: auto-provisioned - put_build_results_to_cache: true - secrets: inherit + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 2 + - name: Build and test + uses: ./.github/actions/build_and_test_ya + with: + build_preset: relwithdebinfo + build_target: "ydb/" + increment: true + run_tests: true + test_size: "small,medium" + test_type: "unittest,py3test,py2test,pytest" + test_threads: 52 + put_build_results_to_cache: true + secs: ${{ format('{{"TESTMO_TOKEN":"{0}","AWS_KEY_ID":"{1}","AWS_KEY_VALUE":"{2}","REMOTE_CACHE_USERNAME":"{3}","REMOTE_CACHE_PASSWORD":"{4}"}}', + secrets.TESTMO_TOKEN, secrets.AWS_KEY_ID, secrets.AWS_KEY_VALUE, secrets.REMOTE_CACHE_USERNAME, secrets.REMOTE_CACHE_PASSWORD ) }} + vars: ${{ format('{{"AWS_BUCKET":"{0}","AWS_ENDPOINT":"{1}","REMOTE_CACHE_URL":"{2}","TESTMO_URL":"{3}","TESTMO_PROJECT_ID":"{4}"}}', + vars.AWS_BUCKET, vars.AWS_ENDPOINT, vars.REMOTE_CACHE_URL_YA, vars.TESTMO_URL, vars.TESTMO_PROJECT_ID ) }} \ No newline at end of file diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index 571f8af126f3..19e962acb2da 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -204,18 +204,19 @@ jobs: uses: actions/checkout@v3 with: ref: ${{ needs.check-running-allowed.outputs.commit_sha }} + fetch-depth: 2 - name: Build and test uses: ./.github/actions/build_and_test_ya with: build_preset: ${{ matrix.build_preset }} build_target: "ydb/" + increment: true run_tests: ${{ contains(fromJSON('["relwithdebinfo", "release-asan"]'), matrix.build_preset) }} test_size: "small,medium" test_type: "unittest,py3test,py2test,pytest" test_threads: 52 put_build_results_to_cache: true run_tests_if_build_fails: false - commit_sha: ${{ needs.check-running-allowed.outputs.commit_sha }} secs: ${{ format('{{"TESTMO_TOKEN":"{0}","AWS_KEY_ID":"{1}","AWS_KEY_VALUE":"{2}","REMOTE_CACHE_USERNAME":"{3}","REMOTE_CACHE_PASSWORD":"{4}"}}', secrets.TESTMO_TOKEN, secrets.AWS_KEY_ID, secrets.AWS_KEY_VALUE, secrets.REMOTE_CACHE_USERNAME, secrets.REMOTE_CACHE_PASSWORD ) }} vars: ${{ format('{{"AWS_BUCKET":"{0}","AWS_ENDPOINT":"{1}","REMOTE_CACHE_URL":"{2}","TESTMO_URL":"{3}","TESTMO_PROJECT_ID":"{4}"}}', From d5bffd8b6cd6464df499e510c24a2043be4b658d Mon Sep 17 00:00:00 2001 From: Aleksandr Dmitriev <monster@ydb.tech> Date: Fri, 14 Jun 2024 11:52:28 +0300 Subject: [PATCH 100/110] merge to stable-24-1: fix statistics aggregator migration logic (#5515) --- ydb/core/tx/schemeshard/schemeshard_impl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ydb/core/tx/schemeshard/schemeshard_impl.cpp b/ydb/core/tx/schemeshard/schemeshard_impl.cpp index b1e6b778f781..5264e14fa8ac 100644 --- a/ydb/core/tx/schemeshard/schemeshard_impl.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_impl.cpp @@ -142,7 +142,7 @@ void TSchemeShard::InitializeTabletMigrations() { } if (EnableStatistics && - !IsServerlessDomain(subdomain) && + !IsServerlessDomainGlobal(pathId, subdomain) && subdomain->GetTenantStatisticsAggregatorID() == InvalidTabletId) { createSA = true; From 7487d615a7fc38f3aeb643c7379c3c76ad81acaf Mon Sep 17 00:00:00 2001 From: Aleksandr Dmitriev <monster@ydb.tech> Date: Fri, 14 Jun 2024 11:52:43 +0300 Subject: [PATCH 101/110] merge to stable-24-1: use proper compaction policy for SA tables (#5517) --- ydb/core/statistics/aggregator/tx_init_schema.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ydb/core/statistics/aggregator/tx_init_schema.cpp b/ydb/core/statistics/aggregator/tx_init_schema.cpp index 2ba697933006..4c77a9b5e9cb 100644 --- a/ydb/core/statistics/aggregator/tx_init_schema.cpp +++ b/ydb/core/statistics/aggregator/tx_init_schema.cpp @@ -14,6 +14,17 @@ struct TStatisticsAggregator::TTxInitSchema : public TTxBase { NIceDb::TNiceDb(txc.DB).Materialize<Schema>(); + static constexpr NIceDb::TTableId bigTableIds[] = { + Schema::BaseStats::TableId, + }; + + for (auto id : bigTableIds) { + const auto* tableInfo = txc.DB.GetScheme().GetTableInfo(id); + if (!tableInfo || !tableInfo->CompactionPolicy) { + txc.DB.Alter().SetCompactionPolicy(id, *NLocalDb::CreateDefaultUserTablePolicy()); + } + } + return true; } From 309333de5805d3c1b8b2d672b1578e1932df9f9c Mon Sep 17 00:00:00 2001 From: FloatingCrowbar <komels@ydb.tech> Date: Fri, 14 Jun 2024 12:50:40 +0300 Subject: [PATCH 102/110] Merge Deduplicated messages sensors: LOGBROKER-8733 (#3147) (#5328) --- ydb/core/persqueue/partition.h | 3 ++ ydb/core/persqueue/partition_init.cpp | 12 +++++++- ydb/core/persqueue/partition_write.cpp | 2 ++ ydb/core/persqueue/ut/counters_ut.cpp | 7 +++-- .../ut/resources/counters_datastreams.html | 4 ++- .../ut/resources/counters_pqproxy.html | 28 +++++++++++++------ .../persqueue_new_schemecache_ut.cpp | 20 +++++++------ ydb/services/persqueue_v1/persqueue_ut.cpp | 2 ++ 8 files changed, 56 insertions(+), 22 deletions(-) diff --git a/ydb/core/persqueue/partition.h b/ydb/core/persqueue/partition.h index 31cb40fd484a..8d5263939bb7 100644 --- a/ydb/core/persqueue/partition.h +++ b/ydb/core/persqueue/partition.h @@ -742,6 +742,9 @@ class TPartition : public TActorBootstrapped<TPartition> { NKikimr::NPQ::TMultiCounter MsgsWrittenTotal; NKikimr::NPQ::TMultiCounter MsgsWrittenGrpc;; + NKikimr::NPQ::TMultiCounter MsgsDiscarded; + NKikimr::NPQ::TMultiCounter BytesDiscarded; + // Writing blob with topic quota variables ui64 TopicQuotaRequestCookie = 0; diff --git a/ydb/core/persqueue/partition_init.cpp b/ydb/core/persqueue/partition_init.cpp index 305a6b7fce63..d07141b521c9 100644 --- a/ydb/core/persqueue/partition_init.cpp +++ b/ydb/core/persqueue/partition_init.cpp @@ -785,6 +785,10 @@ void TPartition::SetupTopicCounters(const TActorContext& ctx) { BytesWrittenUncompressed = NKikimr::NPQ::TMultiCounter(subGroup, labels, {}, {"UncompressedBytesWritten" + suffix}, true); BytesWrittenComp = NKikimr::NPQ::TMultiCounter(subGroup, labels, {}, {"CompactedBytesWritten" + suffix}, true); MsgsWrittenTotal = NKikimr::NPQ::TMultiCounter(subGroup, labels, {}, {"MessagesWritten" + suffix}, true); + if (IsLocalDC) { + MsgsDiscarded = NKikimr::NPQ::TMultiCounter(subGroup, labels, {}, {"DiscardedMessages"}, true); + BytesDiscarded = NKikimr::NPQ::TMultiCounter(subGroup, labels, {}, {"DiscardedBytes"}, true); + } TVector<NPersQueue::TPQLabelsInfo> aggr = {{{{"Account", TopicConverter->GetAccount()}}, {"total"}}}; ui32 border = AppData(ctx)->PQConfig.GetWriteLatencyBigMs(); @@ -872,8 +876,14 @@ void TPartition::SetupStreamCounters(const TActorContext& ctx) { {"topic.write.messages"}, true, "name"); - BytesWrittenUncompressed = NKikimr::NPQ::TMultiCounter( + MsgsDiscarded = NKikimr::NPQ::TMultiCounter( + NPersQueue::GetCountersForTopic(counters, IsServerless), {}, subgroups, + {"topic.write.discarded_messages"}, true, "name"); + BytesDiscarded = NKikimr::NPQ::TMultiCounter( + NPersQueue::GetCountersForTopic(counters, IsServerless), {}, subgroups, + {"topic.write.discarded_bytes"} , true, "name"); + BytesWrittenUncompressed = NKikimr::NPQ::TMultiCounter( NPersQueue::GetCountersForTopic(counters, IsServerless), {}, subgroups, {"topic.write.uncompressed_bytes"}, true, "name"); diff --git a/ydb/core/persqueue/partition_write.cpp b/ydb/core/persqueue/partition_write.cpp index 871956a019b1..2a11771db4e0 100644 --- a/ydb/core/persqueue/partition_write.cpp +++ b/ydb/core/persqueue/partition_write.cpp @@ -902,7 +902,9 @@ TPartition::ProcessResult TPartition::ProcessRequest(TWriteMsg& p, ProcessParame ); TabletCounters.Cumulative()[COUNTER_PQ_WRITE_ALREADY].Increment(1); + MsgsDiscarded.Inc(); TabletCounters.Cumulative()[COUNTER_PQ_WRITE_BYTES_ALREADY].Increment(p.Msg.Data.size()); + BytesDiscarded.Inc(p.Msg.Data.size()); } else { TabletCounters.Cumulative()[COUNTER_PQ_WRITE_SMALL_OFFSET].Increment(1); TabletCounters.Cumulative()[COUNTER_PQ_WRITE_BYTES_SMALL_OFFSET].Increment(p.Msg.Data.size()); diff --git a/ydb/core/persqueue/ut/counters_ut.cpp b/ydb/core/persqueue/ut/counters_ut.cpp index 6be6bb67bbb6..23ce8ae757b2 100644 --- a/ydb/core/persqueue/ut/counters_ut.cpp +++ b/ydb/core/persqueue/ut/counters_ut.cpp @@ -83,6 +83,8 @@ Y_UNIT_TEST(Partition) { CmdWrite(0, "sourceid0", TestData(), tc, false, {}, true); CmdWrite(0, "sourceid1", TestData(), tc, false); CmdWrite(0, "sourceid2", TestData(), tc, false); + CmdWrite(0, "sourceid1", TestData(), tc, false); + CmdWrite(0, "sourceid2", TestData(), tc, false); PQGetPartInfo(0, 30, tc); @@ -93,7 +95,7 @@ Y_UNIT_TEST(Partition) { dbGroup->OutputHtml(countersStr); TString referenceCounters = NResource::Find(TStringBuf("counters_pqproxy.html")); - UNIT_ASSERT_EQUAL(countersStr.Str() + "\n", referenceCounters); + UNIT_ASSERT_VALUES_EQUAL(countersStr.Str() + "\n", referenceCounters); } { @@ -101,7 +103,7 @@ Y_UNIT_TEST(Partition) { auto dbGroup = GetServiceCounters(counters, "datastreams"); TStringStream countersStr; dbGroup->OutputHtml(countersStr); - UNIT_ASSERT_EQUAL(countersStr.Str(), "<pre></pre>"); + UNIT_ASSERT_VALUES_EQUAL(countersStr.Str(), "<pre></pre>"); } } @@ -116,6 +118,7 @@ Y_UNIT_TEST(PartitionFirstClass) { CmdWrite(0, "sourceid0", TestData(), tc, false, {}, true); CmdWrite(0, "sourceid1", TestData(), tc, false); CmdWrite(0, "sourceid2", TestData(), tc, false); + CmdWrite(0, "sourceid0", TestData(), tc, false); PQGetPartInfo(0, 30, tc); { diff --git a/ydb/core/persqueue/ut/resources/counters_datastreams.html b/ydb/core/persqueue/ut/resources/counters_datastreams.html index 6f7e35c67c88..7f3e79ea88fb 100644 --- a/ydb/core/persqueue/ut/resources/counters_datastreams.html +++ b/ydb/core/persqueue/ut/resources/counters_datastreams.html @@ -3,6 +3,8 @@ name=api.grpc.topic.stream_write.bytes: 540 name=api.grpc.topic.stream_write.messages: 30 name=topic.write.bytes: 540 + name=topic.write.discarded_bytes: 90 + name=topic.write.discarded_messages: 10 name=topic.write.messages: 30 name=topic.write.uncompressed_bytes: 270 @@ -55,7 +57,7 @@ bin=99999999: 0 name=topic.write.partition_throttled_milliseconds: - bin=0: 30 + bin=0: 40 bin=1: 0 bin=10: 0 bin=100: 0 diff --git a/ydb/core/persqueue/ut/resources/counters_pqproxy.html b/ydb/core/persqueue/ut/resources/counters_pqproxy.html index de2bdae32895..2f09b696fccc 100644 --- a/ydb/core/persqueue/ut/resources/counters_pqproxy.html +++ b/ydb/core/persqueue/ut/resources/counters_pqproxy.html @@ -50,7 +50,7 @@ OriginDC=Dc1: sensor=PartitionWriteQuotaWaitOriginal: - Interval=0ms: 30 + Interval=0ms: 50 Interval=10000ms: 0 Interval=1000ms: 0 Interval=100ms: 0 @@ -67,7 +67,7 @@ OriginDC=cluster: sensor=PartitionWriteQuotaWaitOriginal: - Interval=0ms: 30 + Interval=0ms: 50 Interval=10000ms: 0 Interval=1000ms: 0 Interval=100ms: 0 @@ -88,7 +88,7 @@ OriginDC=cluster: sensor=PartitionWriteQuotaWaitOriginal: - Interval=0ms: 30 + Interval=0ms: 50 Interval=10000ms: 0 Interval=1000ms: 0 Interval=100ms: 0 @@ -111,7 +111,7 @@ OriginDC=cluster: sensor=PartitionWriteQuotaWaitOriginal: - Interval=0ms: 30 + Interval=0ms: 50 Interval=10000ms: 0 Interval=1000ms: 0 Interval=100ms: 0 @@ -136,7 +136,7 @@ OriginDC=cluster: sensor=PartitionWriteQuotaWaitOriginal: - Interval=0ms: 30 + Interval=0ms: 50 Interval=10000ms: 0 Interval=1000ms: 0 Interval=100ms: 0 @@ -470,17 +470,21 @@ TopicPath=asdfgs/topic: ClientDC=Unknown: - sensor=BytesWrittenFromDC: 1560 + sensor=BytesWrittenFromDC: 2600 OriginDC=Dc1: sensor=BytesWrittenOriginal: 540 sensor=CompactedBytesWrittenOriginal: 747 + sensor=DiscardedBytes: 180 + sensor=DiscardedMessages: 20 sensor=MessagesWrittenOriginal: 30 sensor=UncompressedBytesWrittenOriginal: 270 OriginDC=cluster: sensor=BytesWrittenOriginal: 540 sensor=CompactedBytesWrittenOriginal: 747 + sensor=DiscardedBytes: 180 + sensor=DiscardedMessages: 20 sensor=MessagesWrittenOriginal: 30 sensor=UncompressedBytesWrittenOriginal: 270 @@ -489,11 +493,13 @@ TopicPath=total: ClientDC=Unknown: - sensor=BytesWrittenFromDC: 1560 + sensor=BytesWrittenFromDC: 2600 OriginDC=cluster: sensor=BytesWrittenOriginal: 540 sensor=CompactedBytesWrittenOriginal: 747 + sensor=DiscardedBytes: 180 + sensor=DiscardedMessages: 20 sensor=MessagesWrittenOriginal: 30 sensor=UncompressedBytesWrittenOriginal: 270 @@ -504,11 +510,13 @@ TopicPath=total: ClientDC=Unknown: - sensor=BytesWrittenFromDC: 1560 + sensor=BytesWrittenFromDC: 2600 OriginDC=cluster: sensor=BytesWrittenOriginal: 540 sensor=CompactedBytesWrittenOriginal: 747 + sensor=DiscardedBytes: 180 + sensor=DiscardedMessages: 20 sensor=MessagesWrittenOriginal: 30 sensor=UncompressedBytesWrittenOriginal: 270 @@ -521,11 +529,13 @@ TopicPath=total: ClientDC=Unknown: - sensor=BytesWrittenFromDC: 1560 + sensor=BytesWrittenFromDC: 2600 OriginDC=cluster: sensor=BytesWrittenOriginal: 540 sensor=CompactedBytesWrittenOriginal: 747 + sensor=DiscardedBytes: 180 + sensor=DiscardedMessages: 20 sensor=MessagesWrittenOriginal: 30 sensor=UncompressedBytesWrittenOriginal: 270 diff --git a/ydb/services/persqueue_v1/persqueue_new_schemecache_ut.cpp b/ydb/services/persqueue_v1/persqueue_new_schemecache_ut.cpp index 8e617380ae17..7d4a33371514 100644 --- a/ydb/services/persqueue_v1/persqueue_new_schemecache_ut.cpp +++ b/ydb/services/persqueue_v1/persqueue_new_schemecache_ut.cpp @@ -223,7 +223,7 @@ namespace NKikimr::NPersQueueTests { Sleep(TDuration::MilliSeconds(10)); } - // Ts and firstOffset and expectingQuantities will be set in first iteration of reading by received messages. + // Ts and firstOffset and expectingQuantities will be set in first iteration of reading by received messages. // Each will contains shifts from the message: before, equals and after. // It allow check reading from different shift. First iteration read from zero. TVector<TInstant> ts { TInstant::Zero() }; @@ -254,10 +254,10 @@ namespace NKikimr::NPersQueueTests { ui32 lastOffset = 0; settings.EventHandlers_.SimpleDataHandlers([&](NYdb::NPersQueue::TReadSessionEvent::TDataReceivedEvent& event) mutable { - Cerr << ">>>>> Iteration: " << i << " TDataReceivedEvent: " << event.DebugString(false) + Cerr << ">>>>> Iteration: " << i << " TDataReceivedEvent: " << event.DebugString(false) << " size=" << event.GetMessages().size() << Endl << Flush; for (const auto& msg : event.GetMessages()) { - Cerr << ">>>>> Iteration: " << i << " Got message: " << msg.GetData().substr(0, 16) + Cerr << ">>>>> Iteration: " << i << " Got message: " << msg.GetData().substr(0, 16) << " :: " << msg.DebugString(false) << Endl << Flush; auto count = ++map[msg.GetData()]; @@ -281,12 +281,12 @@ namespace NKikimr::NPersQueueTests { } else { if (map.size() == 1) { auto expectedOffset = firstOffset[i]; - UNIT_ASSERT_EQUAL_C(msg.GetOffset(), expectedOffset, "Iteration: " << i - << " Expected first message offset " << expectedOffset + UNIT_ASSERT_EQUAL_C(msg.GetOffset(), expectedOffset, "Iteration: " << i + << " Expected first message offset " << expectedOffset << " but got " << msg.GetOffset()); } else { - UNIT_ASSERT_C(lastOffset < msg.GetOffset(), "Iteration: " << i - << " unexpected offset order. Last offset " << lastOffset + UNIT_ASSERT_C(lastOffset < msg.GetOffset(), "Iteration: " << i + << " unexpected offset order. Last offset " << lastOffset << " Message offset " << msg.GetOffset()); } @@ -310,8 +310,8 @@ namespace NKikimr::NPersQueueTests { if (i == 0) { for (ui32 j = 1; j < ts.size(); ++j) { - Cerr << ">>>>> Planed iteration: " << j - << ". Start reading from time: " << ts[j] + Cerr << ">>>>> Planed iteration: " << j + << ". Start reading from time: " << ts[j] << ". Expected first message offset: " << firstOffset[j] << ". Expected message quantity: " << expectingQuantities[j] << Endl; } @@ -462,6 +462,8 @@ namespace NKikimr::NPersQueueTests { "topic.read.lag_milliseconds", "topic.write.bytes", "topic.write.messages", + "topic.write.discarded_bytes", + "topic.write.discarded_messages", "api.grpc.topic.stream_write.bytes", "topic.write.partition_throttled_milliseconds", "topic.write.message_size_bytes", diff --git a/ydb/services/persqueue_v1/persqueue_ut.cpp b/ydb/services/persqueue_v1/persqueue_ut.cpp index c0cc198921cd..b4c8c96ca34d 100644 --- a/ydb/services/persqueue_v1/persqueue_ut.cpp +++ b/ydb/services/persqueue_v1/persqueue_ut.cpp @@ -3676,6 +3676,8 @@ Y_UNIT_TEST_SUITE(TPersQueueTest) { { "BytesWrittenOriginal", "CompactedBytesWrittenOriginal", + "DiscardedBytes", + "DiscardedMessages", "MessagesWrittenOriginal", "UncompressedBytesWrittenOriginal" }, From fbfd87dde5b93890e530c51db8d2e9324678dc66 Mon Sep 17 00:00:00 2001 From: Nikolay Shestakov <tesseract@ydb.tech> Date: Fri, 14 Jun 2024 16:51:19 +0500 Subject: [PATCH 103/110] retry scheme query in tests (#5403) --- ydb/core/testlib/test_pq_client.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/ydb/core/testlib/test_pq_client.h b/ydb/core/testlib/test_pq_client.h index dbf150ec9d4c..b48dd5a8868b 100644 --- a/ydb/core/testlib/test_pq_client.h +++ b/ydb/core/testlib/test_pq_client.h @@ -499,9 +499,18 @@ class TFlatMsgBusPQClient : public NFlatTests::TFlatMsgBusClient { public: void RunYqlSchemeQuery(TString query, bool expectSuccess = true) { auto tableClient = NYdb::NTable::TTableClient(*Driver); - auto result = tableClient.RetryOperationSync([&](NYdb::NTable::TSession session) { - return session.ExecuteSchemeQuery(query).GetValueSync(); - }); + + NYdb::TStatus result(NYdb::EStatus::SUCCESS, NYql::TIssues()); + for (size_t i = 0; i < 10; ++i) { + result = tableClient.RetryOperationSync([&](NYdb::NTable::TSession session) { + return session.ExecuteSchemeQuery(query).GetValueSync(); + }); + if (!expectSuccess || result.IsSuccess()) { + break; + } + Sleep(TDuration::Seconds(1)); + } + if (expectSuccess) { UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); } else { From 133903502e319d36510dd692586a0074ef49b65c Mon Sep 17 00:00:00 2001 From: zverevgeny <zverevgeny@ydb.tech> Date: Sun, 16 Jun 2024 13:16:04 +0300 Subject: [PATCH 104/110] Merge stable-24-1-16-analytics into stable-24-1 (#5596) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vitalii Gridnev <gridnevvvit@gmail.com> Co-authored-by: Andrey Neporada <aneporada@ydb.tech> Co-authored-by: niksaveliev <nik@saveliev.me> Co-authored-by: Sergey Veselov <sergeyveselov@ydb.tech> Co-authored-by: alexnick88 <alexnick@ydb.tech> Co-authored-by: Ilnaz Nizametdinov <ilnaz@ydb.tech> Co-authored-by: Iuliia Sidorina <yulia@ydb.tech> Co-authored-by: kungurtsev <kungasc@ydb.tech> Co-authored-by: Nikolay Shestakov <tesseract@ydb.tech> Co-authored-by: azevaykin <145343289+azevaykin@users.noreply.github.com> Co-authored-by: DimasKovas <34828390+DimasKovas@users.noreply.github.com> Co-authored-by: ijon <ijon@ydb.tech> Co-authored-by: vporyadke <zalyalov@ydb.tech> Co-authored-by: kruall <kruall@ydb.tech> Co-authored-by: ivanmorozov333 <ivanmorozov@ydb.tech> Co-authored-by: Alexander Rutkovsky <alexvru@ydb.tech> Co-authored-by: ildar-khisambeev <ikhis@ydb.tech> Co-authored-by: nsofya <nsofya@ydb.tech> Co-authored-by: nsofya <nsofya@yandex.ru> Co-authored-by: Sofya Novozhilova <nsofya@qavm-4bd1829b.qemu> Co-authored-by: Олег <150132506+iddqdex@users.noreply.github.com> Co-authored-by: Ivan Morozov <ivanmorozov@localhost.localdomain> Co-authored-by: Andrei Rykov <arykov@ydb.tech> Co-authored-by: qyryq <qyryq@ydb.tech> Co-authored-by: Daniil Cherednik <dcherednik@ydb.tech> Co-authored-by: Aleksei Borzenkov <snaury@ydb.tech> --- .github/config/muted_test.txt | 2 - .github/config/muted_ya.txt | 11 +- ydb/core/base/blobstorage.h | 4 +- .../formats/arrow/arrow_batch_builder.cpp | 18 +- ydb/core/formats/arrow/arrow_batch_builder.h | 10 +- ydb/core/formats/arrow/arrow_filter.cpp | 30 +- ydb/core/formats/arrow/arrow_filter.h | 7 + ydb/core/formats/arrow/arrow_helpers.cpp | 195 +- ydb/core/formats/arrow/arrow_helpers.h | 36 +- ydb/core/formats/arrow/common/accessor.cpp | 99 + ydb/core/formats/arrow/common/accessor.h | 199 + ydb/core/formats/arrow/common/adapter.cpp | 5 + ydb/core/formats/arrow/common/adapter.h | 96 + ydb/core/formats/arrow/common/container.cpp | 116 + ydb/core/formats/arrow/common/container.h | 61 + ydb/core/formats/arrow/common/ya.make | 5 + ydb/core/formats/arrow/converter.cpp | 45 +- ydb/core/formats/arrow/converter.h | 8 +- ydb/core/formats/arrow/dictionary/object.h | 6 +- ydb/core/formats/arrow/hash/calcer.cpp | 47 - ydb/core/formats/arrow/hash/calcer.h | 72 +- ydb/core/formats/arrow/hash/ya.make | 1 + .../arrow/merging_sorted_input_stream.cpp | 303 -- .../arrow/merging_sorted_input_stream.h | 54 - .../formats/arrow/one_batch_input_stream.h | 36 - ydb/core/formats/arrow/permutations.cpp | 56 +- ydb/core/formats/arrow/permutations.h | 42 +- ydb/core/formats/arrow/program.cpp | 113 +- ydb/core/formats/arrow/program.h | 31 +- .../formats/arrow/reader/batch_iterator.cpp | 51 + .../formats/arrow/reader/batch_iterator.h | 89 + ydb/core/formats/arrow/reader/heap.cpp | 5 + ydb/core/formats/arrow/reader/heap.h | 126 + .../arrow/reader/merger.cpp} | 102 +- ydb/core/formats/arrow/reader/merger.h | 103 + .../{read_filter_merger.cpp => position.cpp} | 31 +- .../{read_filter_merger.h => position.h} | 65 +- .../formats/arrow/reader/result_builder.cpp | 71 + .../formats/arrow/reader/result_builder.h | 38 + ydb/core/formats/arrow/reader/ya.make | 8 +- ydb/core/formats/arrow/replace_key.h | 112 +- ydb/core/formats/arrow/serializer/abstract.h | 68 +- ydb/core/formats/arrow/serializer/native.h | 20 + ydb/core/formats/arrow/size_calcer.cpp | 26 + ydb/core/formats/arrow/size_calcer.h | 2 + ydb/core/formats/arrow/sort_cursor.h | 262 -- ydb/core/formats/arrow/special_keys.cpp | 19 +- ydb/core/formats/arrow/special_keys.h | 3 + ydb/core/formats/arrow/switch/compare.cpp | 5 + ydb/core/formats/arrow/switch/compare.h | 115 + ydb/core/formats/arrow/switch/switch_type.h | 4 +- ydb/core/formats/arrow/switch/ya.make | 1 + ydb/core/formats/arrow/transformer/abstract.h | 10 + .../formats/arrow/transformer/dictionary.h | 20 + ydb/core/formats/arrow/{ => ut}/ut_arrow.cpp | 193 +- .../arrow/{ => ut}/ut_program_step.cpp | 12 +- ydb/core/formats/arrow/ut/ut_size_calcer.cpp | 6 + ydb/core/formats/arrow/ya.make | 4 - ydb/core/grpc_services/rpc_load_rows.cpp | 16 +- ydb/core/io_formats/arrow/csv_arrow.cpp | 44 +- ydb/core/io_formats/arrow/csv_arrow.h | 9 +- ydb/core/io_formats/arrow/csv_arrow_ut.cpp | 37 +- .../kqp/compute_actor/kqp_compute_events.h | 7 +- .../compute_actor/kqp_scan_compute_manager.h | 11 - ydb/core/kqp/compute_actor/kqp_scan_events.h | 6 +- .../compute_actor/kqp_scan_fetcher_actor.cpp | 11 +- .../tablestore/operations/add_column.cpp | 7 + .../tablestore/operations/add_column.h | 1 + .../tablestore/operations/alter_column.cpp | 7 + .../tablestore/operations/alter_column.h | 1 + .../tablestore/operations/drop_stat.cpp | 21 + .../tablestore/operations/drop_stat.h | 19 + .../tablestore/operations/upsert_index.cpp | 7 + .../tablestore/operations/upsert_index.h | 1 + .../tablestore/operations/upsert_opt.cpp | 20 + .../tablestore/operations/upsert_opt.h | 22 + .../tablestore/operations/upsert_stat.cpp | 49 + .../tablestore/operations/upsert_stat.h | 23 + .../behaviour/tablestore/operations/ya.make | 4 + ydb/core/kqp/runtime/kqp_scan_data.cpp | 104 +- ydb/core/kqp/runtime/kqp_scan_data.h | 19 +- ydb/core/kqp/runtime/kqp_write_actor.cpp | 2 +- ydb/core/kqp/ut/common/columnshard.cpp | 63 +- ydb/core/kqp/ut/common/columnshard.h | 7 +- ydb/core/kqp/ut/common/kqp_ut_common.cpp | 12 + ydb/core/kqp/ut/common/kqp_ut_common.h | 1 + ydb/core/kqp/ut/olap/aggregations_ut.cpp | 1354 +++++++ ydb/core/kqp/ut/olap/blobs_sharing_ut.cpp | 266 ++ ydb/core/kqp/ut/olap/clickbench_ut.cpp | 247 ++ ydb/core/kqp/ut/olap/helpers/aggregation.cpp | 140 + ydb/core/kqp/ut/olap/helpers/aggregation.h | 245 ++ ydb/core/kqp/ut/olap/helpers/get_value.cpp | 112 + ydb/core/kqp/ut/olap/helpers/get_value.h | 15 + ydb/core/kqp/ut/olap/helpers/local.cpp | 22 + ydb/core/kqp/ut/olap/helpers/local.h | 41 + .../kqp/ut/olap/helpers/query_executor.cpp | 73 + ydb/core/kqp/ut/olap/helpers/query_executor.h | 12 + ydb/core/kqp/ut/olap/helpers/typed_local.cpp | 161 + ydb/core/kqp/ut/olap/helpers/typed_local.h | 90 + ydb/core/kqp/ut/olap/helpers/writer.cpp | 16 + ydb/core/kqp/ut/olap/helpers/writer.h | 8 + ydb/core/kqp/ut/olap/helpers/ya.make | 18 + ydb/core/kqp/ut/olap/indexes_ut.cpp | 367 ++ ydb/core/kqp/ut/olap/kqp_olap_ut.cpp | 3296 +---------------- ydb/core/kqp/ut/olap/statistics_ut.cpp | 74 + ydb/core/kqp/ut/olap/sys_view_ut.cpp | 722 ++++ ydb/core/kqp/ut/olap/write_ut.cpp | 111 + ydb/core/kqp/ut/olap/ya.make | 10 +- ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp | 143 +- ydb/core/kqp/ut/scheme/ya.make | 1 + ydb/core/protos/config.proto | 10 +- ydb/core/protos/counters_columnshard.proto | 14 +- ydb/core/protos/flat_scheme_op.proto | 28 +- ydb/core/protos/tx_columnshard.proto | 11 + ydb/core/protos/ya.make | 1 + ydb/core/sys_view/common/schema.cpp | 4 + ydb/core/sys_view/common/schema.h | 87 + ydb/core/testlib/common_helper.cpp | 4 +- ydb/core/testlib/common_helper.h | 20 +- ydb/core/testlib/cs_helper.cpp | 10 +- ydb/core/testlib/cs_helper.h | 1 + .../tx/columnshard/background_controller.cpp | 37 +- .../tx/columnshard/background_controller.h | 75 +- ydb/core/tx/columnshard/blob.cpp | 186 - ydb/core/tx/columnshard/blob.h | 447 +-- ydb/core/tx/columnshard/blob_cache.cpp | 13 +- ydb/core/tx/columnshard/blob_cache.h | 4 +- .../blobs_action/abstract/action.cpp | 12 - .../blobs_action/abstract/action.h | 42 +- .../blobs_action/abstract/blob_set.cpp | 57 + .../blobs_action/abstract/blob_set.h | 512 +++ .../blobs_action/abstract/common.h | 6 +- .../columnshard/blobs_action/abstract/gc.cpp | 18 +- .../tx/columnshard/blobs_action/abstract/gc.h | 31 +- .../blobs_action/abstract/gc_actor.cpp | 5 + .../blobs_action/abstract/gc_actor.h | 72 + .../blobs_action/abstract/read.cpp | 86 +- .../columnshard/blobs_action/abstract/read.h | 226 +- .../blobs_action/abstract/remove.cpp | 12 +- .../blobs_action/abstract/remove.h | 31 +- .../blobs_action/abstract/storage.h | 50 +- .../abstract/storages_manager.cpp | 78 +- .../blobs_action/abstract/storages_manager.h | 53 +- .../blobs_action/abstract/write.cpp | 15 +- .../columnshard/blobs_action/abstract/write.h | 61 +- .../columnshard/blobs_action/abstract/ya.make | 8 +- .../blobs_action/blob_manager_db.cpp | 144 +- .../blobs_action/blob_manager_db.h | 69 +- .../{ => blobs_action/bs}/blob_manager.cpp | 281 +- .../{ => blobs_action/bs}/blob_manager.h | 82 +- .../tx/columnshard/blobs_action/bs/gc.cpp | 105 +- ydb/core/tx/columnshard/blobs_action/bs/gc.h | 35 +- .../columnshard/blobs_action/bs/gc_actor.cpp | 12 +- .../tx/columnshard/blobs_action/bs/gc_actor.h | 26 +- .../tx/columnshard/blobs_action/bs/read.cpp | 9 + .../tx/columnshard/blobs_action/bs/read.h | 12 +- .../tx/columnshard/blobs_action/bs/remove.h | 23 +- .../columnshard/blobs_action/bs/storage.cpp | 25 +- .../tx/columnshard/blobs_action/bs/storage.h | 20 +- .../tx/columnshard/blobs_action/bs/write.cpp | 2 +- .../tx/columnshard/blobs_action/bs/write.h | 13 +- .../tx/columnshard/blobs_action/bs/ya.make | 3 + .../columnshard/blobs_action/common/const.cpp | 5 + .../columnshard/blobs_action/common/const.h | 12 + .../columnshard/blobs_action/common/ya.make | 10 + .../blobs_action/counters/storage.cpp | 14 +- .../blobs_action/counters/storage.h | 22 +- .../columnshard/blobs_action/counters/ya.make | 2 + .../blobs_action/events/delete_blobs.cpp | 5 + .../blobs_action/events/delete_blobs.h | 32 + .../columnshard/blobs_action/events/ya.make | 13 + ydb/core/tx/columnshard/blobs_action/memory.h | 173 - .../blobs_action/protos/blobs.proto | 19 + .../blobs_action/protos/events.proto | 14 + .../columnshard/blobs_action/protos/ya.make | 12 + .../blobs_action/storages_manager/manager.cpp | 50 + .../blobs_action/storages_manager/manager.h | 31 + .../blobs_action/storages_manager/ya.make | 22 + .../columnshard/blobs_action/tier/adapter.cpp | 8 +- .../columnshard/blobs_action/tier/adapter.h | 8 + .../tx/columnshard/blobs_action/tier/gc.cpp | 31 +- .../tx/columnshard/blobs_action/tier/gc.h | 19 +- .../blobs_action/tier/gc_actor.cpp | 25 +- .../columnshard/blobs_action/tier/gc_actor.h | 18 +- .../columnshard/blobs_action/tier/gc_info.h | 24 +- .../tx/columnshard/blobs_action/tier/read.cpp | 20 +- .../tx/columnshard/blobs_action/tier/read.h | 5 +- .../tx/columnshard/blobs_action/tier/remove.h | 21 +- .../columnshard/blobs_action/tier/storage.cpp | 68 +- .../columnshard/blobs_action/tier/storage.h | 25 +- .../columnshard/blobs_action/tier/write.cpp | 11 +- .../tx/columnshard/blobs_action/tier/write.h | 7 +- .../tx/columnshard/blobs_action/tier/ya.make | 2 + .../blobs_action/transaction/tx_draft.cpp | 18 + .../blobs_action/transaction/tx_draft.h | 23 +- .../transaction/tx_gc_indexed.cpp | 4 +- .../transaction/tx_gc_insert_table.cpp | 18 +- .../transaction/tx_remove_blobs.cpp | 22 + .../transaction/tx_remove_blobs.h | 34 + .../blobs_action/transaction/tx_write.cpp | 45 +- .../blobs_action/transaction/tx_write.h | 11 +- .../transaction/tx_write_index.cpp | 41 +- .../blobs_action/transaction/tx_write_index.h | 1 - .../blobs_action/transaction/ya.make | 3 + ydb/core/tx/columnshard/blobs_action/ya.make | 14 +- .../tx/columnshard/blobs_reader/actor.cpp | 9 +- .../blobs_reader/read_coordinator.cpp | 102 +- .../blobs_reader/read_coordinator.h | 47 +- ydb/core/tx/columnshard/blobs_reader/task.cpp | 94 +- ydb/core/tx/columnshard/blobs_reader/task.h | 116 +- ydb/core/tx/columnshard/columnshard.cpp | 34 +- ydb/core/tx/columnshard/columnshard.h | 20 +- ydb/core/tx/columnshard/columnshard__init.cpp | 95 +- .../columnshard/columnshard__progress_tx.cpp | 6 + .../columnshard__propose_transaction.cpp | 96 +- .../tx/columnshard/columnshard__read_base.h | 32 - ydb/core/tx/columnshard/columnshard__scan.cpp | 931 +---- ydb/core/tx/columnshard/columnshard__scan.h | 115 - .../columnshard/columnshard__stats_scan.cpp | 122 - .../tx/columnshard/columnshard__stats_scan.h | 88 - .../tx/columnshard/columnshard__write.cpp | 143 +- .../columnshard/columnshard__write_index.cpp | 5 +- .../tx/columnshard/columnshard_common.cpp | 82 - ydb/core/tx/columnshard/columnshard_common.h | 11 +- ydb/core/tx/columnshard/columnshard_impl.cpp | 548 ++- ydb/core/tx/columnshard/columnshard_impl.h | 178 +- .../columnshard/columnshard_private_events.h | 12 +- ydb/core/tx/columnshard/columnshard_schema.h | 234 +- ydb/core/tx/columnshard/columnshard_ttl.h | 7 +- .../tx/columnshard/columnshard_ut_common.cpp | 83 +- .../tx/columnshard/columnshard_ut_common.h | 208 +- ydb/core/tx/columnshard/common/blob.cpp | 173 + ydb/core/tx/columnshard/common/blob.h | 410 ++ .../common/protos/blob_range.proto | 18 + ydb/core/tx/columnshard/common/protos/ya.make | 1 + ydb/core/tx/columnshard/common/tablet_id.cpp | 12 + ydb/core/tx/columnshard/common/tablet_id.h | 8 + .../columnshard/common/tests/shard_reader.h | 5 +- ydb/core/tx/columnshard/common/ya.make | 2 + ydb/core/tx/columnshard/config.clang-format | 41 + .../tx/columnshard/counters/blobs_manager.cpp | 2 +- .../tx/columnshard/counters/blobs_manager.h | 11 +- .../tx/columnshard/counters/columnshard.cpp | 20 +- .../tx/columnshard/counters/columnshard.h | 13 + .../columnshard/counters/common/histogram.cpp | 83 + .../columnshard/counters/common/histogram.h | 118 + .../tx/columnshard/counters/common/ya.make | 1 + .../tx/columnshard/counters/engine_logs.cpp | 61 +- .../tx/columnshard/counters/engine_logs.h | 219 +- .../tx/columnshard/counters/indexation.cpp | 1 + ydb/core/tx/columnshard/counters/indexation.h | 1 + ydb/core/tx/columnshard/counters/scan.cpp | 40 +- ydb/core/tx/columnshard/counters/scan.h | 100 +- ydb/core/tx/columnshard/counters/ya.make | 1 + .../columnshard/data_locks/locks/abstract.cpp | 5 + .../columnshard/data_locks/locks/abstract.h | 52 + .../data_locks/locks/composite.cpp | 5 + .../columnshard/data_locks/locks/composite.h | 54 + .../tx/columnshard/data_locks/locks/list.cpp | 5 + .../tx/columnshard/data_locks/locks/list.h | 96 + .../columnshard/data_locks/locks/snapshot.cpp | 5 + .../columnshard/data_locks/locks/snapshot.h | 36 + .../tx/columnshard/data_locks/locks/ya.make | 14 + .../data_locks/manager/manager.cpp | 48 + .../columnshard/data_locks/manager/manager.h | 46 + .../tx/columnshard/data_locks/manager/ya.make | 11 + ydb/core/tx/columnshard/data_locks/ya.make | 8 + .../data_sharing/common/context/context.cpp | 62 + .../data_sharing/common/context/context.h | 29 + .../data_sharing/common/context/ya.make | 13 + .../data_sharing/common/session/common.cpp | 66 + .../data_sharing/common/session/common.h | 110 + .../data_sharing/common/session/ya.make | 14 + .../common/transactions/tx_extension.cpp | 5 + .../common/transactions/tx_extension.h | 35 + .../data_sharing/common/transactions/ya.make | 17 + .../columnshard/data_sharing/common/ya.make | 9 + .../destination/events/control.cpp | 14 + .../data_sharing/destination/events/control.h | 33 + .../destination/events/status.cpp | 5 + .../data_sharing/destination/events/status.h | 16 + .../destination/events/transfer.cpp | 68 + .../destination/events/transfer.h | 107 + .../data_sharing/destination/events/ya.make | 16 + .../destination/session/destination.cpp | 187 + .../destination/session/destination.h | 134 + .../data_sharing/destination/session/ya.make | 14 + .../transactions/tx_data_from_source.cpp | 44 + .../transactions/tx_data_from_source.h | 28 + .../tx_finish_ack_from_initiator.cpp | 16 + .../tx_finish_ack_from_initiator.h | 26 + .../transactions/tx_finish_from_source.cpp | 17 + .../transactions/tx_finish_from_source.h | 28 + .../transactions/tx_start_from_initiator.cpp | 33 + .../transactions/tx_start_from_initiator.h | 44 + .../destination/transactions/ya.make | 16 + .../data_sharing/destination/ya.make | 9 + .../initiator/controller/abstract.cpp | 4 + .../initiator/controller/abstract.h | 75 + .../initiator/controller/test.cpp | 4 + .../data_sharing/initiator/controller/test.h | 37 + .../data_sharing/initiator/controller/ya.make | 13 + .../initiator/status/abstract.cpp | 5 + .../data_sharing/initiator/status/abstract.h | 70 + .../data_sharing/initiator/status/ya.make | 14 + .../data_sharing/initiator/ya.make | 8 + .../data_sharing/manager/sessions.cpp | 114 + .../data_sharing/manager/sessions.h | 54 + .../data_sharing/manager/shared_blobs.cpp | 127 + .../data_sharing/manager/shared_blobs.h | 247 ++ .../columnshard/data_sharing/manager/ya.make | 13 + .../modification/events/change_owning.cpp | 13 + .../modification/events/change_owning.h | 30 + .../data_sharing/modification/events/ya.make | 14 + .../modification/tasks/modification.cpp | 43 + .../modification/tasks/modification.h | 364 ++ .../data_sharing/modification/tasks/ya.make | 14 + .../transactions/tx_change_blobs_owning.cpp | 22 + .../transactions/tx_change_blobs_owning.h | 34 + .../modification/transactions/ya.make | 17 + .../data_sharing/modification/ya.make | 9 + .../data_sharing/protos/data.proto | 41 + .../data_sharing/protos/events.proto | 67 + .../data_sharing/protos/initiator.proto | 38 + .../data_sharing/protos/links.proto | 23 + .../data_sharing/protos/sessions.proto | 59 + .../data_sharing/protos/transfer.proto | 19 + .../columnshard/data_sharing/protos/ya.make | 19 + .../data_sharing/source/events/control.cpp | 10 + .../data_sharing/source/events/control.h | 18 + .../data_sharing/source/events/transfer.cpp | 5 + .../data_sharing/source/events/transfer.h | 25 + .../data_sharing/source/events/ya.make | 12 + .../data_sharing/source/session/cursor.cpp | 181 + .../data_sharing/source/session/cursor.h | 108 + .../data_sharing/source/session/source.cpp | 110 + .../data_sharing/source/session/source.h | 91 + .../data_sharing/source/session/ya.make | 14 + .../transactions/tx_data_ack_to_source.cpp | 40 + .../transactions/tx_data_ack_to_source.h | 28 + .../transactions/tx_finish_ack_to_source.cpp | 15 + .../transactions/tx_finish_ack_to_source.h | 27 + .../transactions/tx_start_to_source.cpp | 20 + .../source/transactions/tx_start_to_source.h | 28 + .../transactions/tx_write_source_cursor.cpp | 17 + .../transactions/tx_write_source_cursor.h | 27 + .../data_sharing/source/transactions/ya.make | 14 + .../columnshard/data_sharing/source/ya.make | 9 + ydb/core/tx/columnshard/data_sharing/ya.make | 13 + ydb/core/tx/columnshard/defs.h | 1 + .../engines/changes/abstract/abstract.cpp | 64 +- .../engines/changes/abstract/abstract.h | 153 +- .../engines/changes/abstract/settings.h | 7 - .../actualization/construction/context.cpp | 73 + .../actualization/construction/context.h | 62 + .../actualization/construction/ya.make | 11 + .../actualization/controller/controller.cpp | 15 + .../actualization/controller/controller.h | 31 + .../changes/actualization/controller/ya.make | 11 + .../engines/changes/actualization/ya.make | 8 + .../columnshard/engines/changes/cleanup.cpp | 62 - .../engines/changes/cleanup_portions.cpp | 63 + .../changes/{cleanup.h => cleanup_portions.h} | 28 +- .../engines/changes/cleanup_tables.cpp | 42 + .../engines/changes/cleanup_tables.h | 59 + .../engines/changes/compaction.cpp | 42 +- .../columnshard/engines/changes/compaction.h | 13 +- .../compaction/column_portion_chunk.cpp | 26 +- .../changes/compaction/column_portion_chunk.h | 101 +- .../changes/compaction/merge_context.h | 4 +- .../changes/compaction/merged_column.cpp | 2 +- .../engines/changes/general_compaction.cpp | 87 +- .../engines/changes/general_compaction.h | 14 +- .../engines/changes/indexation.cpp | 67 +- .../columnshard/engines/changes/indexation.h | 23 +- .../tx/columnshard/engines/changes/ttl.cpp | 68 +- ydb/core/tx/columnshard/engines/changes/ttl.h | 43 +- .../engines/changes/with_appended.cpp | 142 +- .../engines/changes/with_appended.h | 36 +- .../tx/columnshard/engines/changes/ya.make | 4 +- .../tx/columnshard/engines/column_engine.cpp | 22 +- .../tx/columnshard/engines/column_engine.h | 107 +- .../engines/column_engine_logs.cpp | 495 ++- .../columnshard/engines/column_engine_logs.h | 163 +- .../tx/columnshard/engines/db_wrapper.cpp | 15 +- ydb/core/tx/columnshard/engines/db_wrapper.h | 3 +- ydb/core/tx/columnshard/engines/defs.h | 8 - ydb/core/tx/columnshard/engines/filter.cpp | 20 +- ydb/core/tx/columnshard/engines/filter.h | 3 - .../columnshard/engines/insert_table/data.h | 13 +- .../engines/insert_table/insert_table.cpp | 41 +- .../engines/insert_table/insert_table.h | 23 +- .../columnshard/engines/insert_table/meta.h | 4 + .../engines/insert_table/path_info.cpp | 4 + .../engines/insert_table/path_info.h | 1 + .../engines/insert_table/rt_insertion.cpp | 16 + .../engines/insert_table/rt_insertion.h | 2 + .../engines/portions/column_record.cpp | 76 +- .../engines/portions/column_record.h | 112 +- .../tx/columnshard/engines/portions/common.h | 8 +- .../engines/portions/index_chunk.cpp | 39 + .../engines/portions/index_chunk.h | 73 + .../tx/columnshard/engines/portions/meta.cpp | 25 +- .../tx/columnshard/engines/portions/meta.h | 16 + .../engines/portions/portion_info.cpp | 617 ++- .../engines/portions/portion_info.h | 510 ++- .../engines/portions/with_blobs.cpp | 206 +- .../columnshard/engines/portions/with_blobs.h | 55 +- .../tx/columnshard/engines/portions/ya.make | 2 + .../engines/reader/abstract/abstract.cpp | 9 + .../engines/reader/abstract/abstract.h | 45 + .../reader/abstract/constructor.cpp} | 70 +- .../engines/reader/abstract/constructor.h | 37 + .../engines/reader/abstract/read_context.cpp | 9 + .../reader/{ => abstract}/read_context.h | 56 +- .../engines/reader/abstract/read_metadata.cpp | 31 + .../engines/reader/abstract/read_metadata.h | 151 + .../engines/reader/abstract/ya.make | 20 + .../engines/reader/actor/actor.cpp | 415 +++ .../columnshard/engines/reader/actor/actor.h | 184 + .../columnshard/engines/reader/actor/ya.make | 13 + .../engines/reader/common/conveyor_task.cpp | 9 + .../reader/{ => common}/conveyor_task.h | 10 +- .../reader/{ => common}/description.cpp | 0 .../engines/reader/{ => common}/description.h | 6 +- .../engines/reader/{ => common}/queue.cpp | 0 .../engines/reader/{ => common}/queue.h | 0 .../engines/reader/common/result.cpp | 51 + .../engines/reader/common/result.h | 87 + .../engines/reader/common/stats.cpp | 28 + .../columnshard/engines/reader/common/stats.h | 41 + .../columnshard/engines/reader/common/ya.make | 16 + .../engines/reader/conveyor_task.cpp | 10 - .../reader/plain_reader/column_assembler.cpp | 41 - .../reader/plain_reader/column_assembler.h | 38 - .../plain_reader/constructor/constructor.cpp | 42 + .../plain_reader/constructor/constructor.h | 17 + .../constructor/read_metadata.cpp | 57 + .../plain_reader/constructor/read_metadata.h | 87 + .../plain_reader/constructor/resolver.cpp | 5 + .../plain_reader/constructor/resolver.h | 32 + .../reader/plain_reader/constructor/ya.make | 13 + .../engines/reader/plain_reader/context.cpp | 177 - .../engines/reader/plain_reader/context.h | 51 - .../engines/reader/plain_reader/fetching.cpp | 98 - .../engines/reader/plain_reader/fetching.h | 220 -- .../engines/reader/plain_reader/interval.cpp | 200 - .../engines/reader/plain_reader/interval.h | 116 - .../{ => iterator}/columns_set.cpp | 6 +- .../plain_reader/{ => iterator}/columns_set.h | 17 +- .../{ => iterator}/constructor.cpp | 12 +- .../plain_reader/{ => iterator}/constructor.h | 14 +- .../reader/plain_reader/iterator/context.cpp | 235 ++ .../reader/plain_reader/iterator/context.h | 61 + .../{ => iterator}/fetched_data.cpp | 7 +- .../{ => iterator}/fetched_data.h | 53 +- .../reader/plain_reader/iterator/fetching.cpp | 141 + .../reader/plain_reader/iterator/fetching.h | 294 ++ .../reader/plain_reader/iterator/interval.cpp | 94 + .../reader/plain_reader/iterator/interval.h | 92 + .../plain_reader/iterator/iterator.cpp} | 28 +- .../reader/plain_reader/iterator/iterator.h} | 66 +- .../reader/plain_reader/iterator/merge.cpp | 157 + .../reader/plain_reader/iterator/merge.h | 110 + .../{ => iterator}/plain_read_data.cpp | 14 +- .../{ => iterator}/plain_read_data.h | 26 +- .../reader/plain_reader/iterator/scanner.cpp | 302 ++ .../reader/plain_reader/iterator/scanner.h | 123 + .../plain_reader/{ => iterator}/source.cpp | 132 +- .../plain_reader/{ => iterator}/source.h | 198 +- .../reader/plain_reader/iterator/ya.make | 23 + .../engines/reader/plain_reader/scanner.cpp | 143 - .../engines/reader/plain_reader/scanner.h | 76 - .../engines/reader/plain_reader/ya.make | 14 +- .../engines/reader/read_context.cpp | 16 - .../engines/reader/read_filter_merger.h | 423 --- .../engines/reader/read_metadata.cpp | 112 - .../engines/reader/read_metadata.h | 303 -- .../reader/sys_view/abstract/granule_view.cpp | 5 + .../reader/sys_view/abstract/granule_view.h | 43 + .../reader/sys_view/abstract/iterator.cpp | 5 + .../reader/sys_view/abstract/iterator.h | 155 + .../reader/sys_view/abstract/metadata.cpp | 5 + .../reader/sys_view/abstract/metadata.h | 26 + .../engines/reader/sys_view/abstract/ya.make | 14 + .../engines/reader/sys_view/chunks/chunks.cpp | 110 + .../engines/reader/sys_view/chunks/chunks.h | 39 + .../engines/reader/sys_view/chunks/ya.make | 12 + .../sys_view/constructor/constructor.cpp | 5 + .../reader/sys_view/constructor/constructor.h | 85 + .../reader/sys_view/constructor/ya.make | 11 + .../reader/sys_view/granules/granules.cpp | 33 + .../reader/sys_view/granules/granules.h | 42 + .../engines/reader/sys_view/granules/ya.make | 12 + .../reader/sys_view/portions/portions.cpp | 58 + .../reader/sys_view/portions/portions.h | 39 + .../engines/reader/sys_view/portions/ya.make | 12 + .../engines/reader/sys_view/ya.make | 15 + .../engines/reader/transaction/tx_scan.cpp | 274 ++ .../engines/reader/transaction/tx_scan.h | 28 + .../engines/reader/transaction/ya.make | 15 + .../tx/columnshard/engines/reader/ya.make | 14 +- .../engines/scheme/abstract/index_info.cpp | 20 + .../engines/scheme/abstract/index_info.h | 39 + .../engines/scheme/abstract/loader.cpp | 60 + .../engines/scheme/abstract/loader.h | 49 + .../engines/scheme/abstract/saver.cpp | 31 + .../engines/scheme/abstract/saver.h | 34 + .../engines/scheme/abstract/ya.make | 17 + .../engines/scheme/abstract_scheme.cpp | 118 - .../engines/scheme/abstract_scheme.h | 73 +- .../engines/scheme/column/info.cpp | 90 + .../columnshard/engines/scheme/column/info.h | 61 + .../columnshard/engines/scheme/column/ya.make | 18 + .../engines/scheme/column_features.cpp | 65 - .../engines/scheme/column_features.h | 168 +- .../engines/scheme/filtered_scheme.cpp | 93 - .../engines/scheme/filtered_scheme.h | 32 +- .../columnshard/engines/scheme/index_info.cpp | 180 +- .../columnshard/engines/scheme/index_info.h | 149 +- .../engines/scheme/indexes/abstract/meta.cpp | 20 +- .../engines/scheme/indexes/abstract/meta.h | 24 +- .../engines/scheme/snapshot_scheme.cpp | 52 - .../engines/scheme/snapshot_scheme.h | 38 +- .../scheme/statistics/abstract/common.cpp | 40 + .../scheme/statistics/abstract/common.h | 24 + .../statistics/abstract/constructor.cpp | 5 + .../scheme/statistics/abstract/constructor.h | 73 + .../scheme/statistics/abstract/operator.cpp | 12 + .../scheme/statistics/abstract/operator.h | 124 + .../statistics/abstract/portion_storage.cpp | 119 + .../statistics/abstract/portion_storage.h | 53 + .../scheme/statistics/abstract/ya.make | 20 + .../scheme/statistics/max/constructor.cpp | 45 + .../scheme/statistics/max/constructor.h | 33 + .../scheme/statistics/max/operator.cpp | 41 + .../engines/scheme/statistics/max/operator.h | 64 + .../engines/scheme/statistics/max/ya.make | 15 + .../scheme/statistics/protos/data.proto | 66 + .../engines/scheme/statistics/protos/ya.make | 11 + .../statistics/variability/constructor.cpp | 45 + .../statistics/variability/constructor.h | 33 + .../statistics/variability/operator.cpp | 164 + .../scheme/statistics/variability/operator.h | 67 + .../scheme/statistics/variability/ya.make | 15 + .../engines/scheme/statistics/ya.make | 10 + .../columnshard/engines/scheme/tier_info.cpp | 20 - .../tx/columnshard/engines/scheme/tier_info.h | 167 +- .../engines/scheme/tiering/common.cpp | 5 + .../engines/scheme/tiering/common.h | 9 + .../engines/scheme/tiering/tier_info.cpp | 42 + .../engines/scheme/tiering/tier_info.h | 215 ++ .../engines/scheme/tiering/ya.make | 12 + .../scheme/versions/abstract_scheme.cpp | 141 + .../engines/scheme/versions/abstract_scheme.h | 57 + .../scheme/versions/filtered_scheme.cpp | 94 + .../engines/scheme/versions/filtered_scheme.h | 32 + .../scheme/versions/snapshot_scheme.cpp | 53 + .../engines/scheme/versions/snapshot_scheme.h | 38 + .../scheme/versions/versioned_index.cpp | 31 + .../engines/scheme/versions/versioned_index.h | 68 + .../engines/scheme/versions/ya.make | 14 + .../tx/columnshard/engines/scheme/ya.make | 7 + .../storage/actualizer/abstract/abstract.cpp | 5 + .../storage/actualizer/abstract/abstract.h | 30 + .../storage/actualizer/abstract/context.cpp | 5 + .../storage/actualizer/abstract/context.h | 59 + .../storage/actualizer/abstract/ya.make | 12 + .../storage/actualizer/common/address.cpp | 33 + .../storage/actualizer/common/address.h | 34 + .../engines/storage/actualizer/common/ya.make | 11 + .../storage/actualizer/counters/counters.cpp | 5 + .../storage/actualizer/counters/counters.h | 109 + .../storage/actualizer/counters/ya.make | 13 + .../storage/actualizer/index/index.cpp | 54 + .../engines/storage/actualizer/index/index.h | 37 + .../engines/storage/actualizer/index/ya.make | 11 + .../storage/actualizer/scheme/counters.cpp | 5 + .../storage/actualizer/scheme/counters.h | 47 + .../storage/actualizer/scheme/scheme.cpp | 117 + .../storage/actualizer/scheme/scheme.h | 73 + .../engines/storage/actualizer/scheme/ya.make | 12 + .../storage/actualizer/tiering/counters.cpp | 5 + .../storage/actualizer/tiering/counters.h | 78 + .../storage/actualizer/tiering/tiering.cpp | 184 + .../storage/actualizer/tiering/tiering.h | 142 + .../storage/actualizer/tiering/ya.make | 12 + .../engines/storage/actualizer/ya.make | 12 + .../engines/storage/chunks/column.cpp | 18 + .../engines/storage/chunks/column.h | 68 + .../engines/storage/chunks/data.cpp | 11 + .../columnshard/engines/storage/chunks/data.h | 48 + .../engines/storage/chunks/null_column.cpp | 5 + .../engines/storage/chunks/null_column.h | 51 + .../engines/storage/chunks/ya.make | 17 + .../columnshard/engines/storage/granule.cpp | 71 +- .../tx/columnshard/engines/storage/granule.h | 143 +- .../storage/optimizer/abstract/optimizer.cpp | 11 +- .../storage/optimizer/abstract/optimizer.h | 18 +- .../storage/optimizer/intervals/blob_size.cpp | 43 - .../storage/optimizer/intervals/blob_size.h | 145 - .../storage/optimizer/intervals/counters.cpp | 5 - .../storage/optimizer/intervals/counters.h | 98 - .../storage/optimizer/intervals/optimizer.cpp | 212 -- .../storage/optimizer/intervals/optimizer.h | 256 -- .../storage/optimizer/intervals/ya.make | 16 - .../storage/optimizer/lbuckets/counters.cpp | 2 +- .../storage/optimizer/lbuckets/counters.h | 4 +- .../storage/optimizer/lbuckets/optimizer.h | 181 +- .../storage/optimizer/levels/counters.cpp | 5 - .../storage/optimizer/levels/counters.h | 107 - .../storage/optimizer/levels/optimizer.cpp | 5 - .../storage/optimizer/levels/optimizer.h | 523 --- .../engines/storage/optimizer/levels/ya.make | 15 - .../engines/storage/optimizer/ya.make | 2 - .../columnshard/engines/storage/storage.cpp | 55 +- .../tx/columnshard/engines/storage/storage.h | 140 +- .../tx/columnshard/engines/storage/ya.make | 2 + .../engines/ut/ut_insert_table.cpp | 4 +- .../columnshard/engines/ut/ut_logs_engine.cpp | 231 +- .../tx/columnshard/engines/ut/ut_program.cpp | 49 +- ydb/core/tx/columnshard/engines/ut/ya.make | 1 + .../engines/writer/blob_constructor.cpp | 12 + .../engines/writer/blob_constructor.h | 15 +- .../engines/writer/buffer/actor.cpp | 1 + .../columnshard/engines/writer/buffer/ya.make | 2 + .../writer/compacted_blob_constructor.cpp | 18 +- .../writer/compacted_blob_constructor.h | 4 + .../engines/writer/indexed_blob_constructor.h | 7 +- .../engines/writer/write_controller.cpp | 20 + .../engines/writer/write_controller.h | 40 +- ydb/core/tx/columnshard/engines/ya.make | 1 + .../columnshard/export/actor/export_actor.cpp | 36 + .../columnshard/export/actor/export_actor.h | 118 + .../tx/columnshard/export/actor/write.cpp | 26 + ydb/core/tx/columnshard/export/actor/write.h | 17 + ydb/core/tx/columnshard/export/actor/ya.make | 16 + .../columnshard/export/common/identifier.cpp | 49 + .../tx/columnshard/export/common/identifier.h | 48 + ydb/core/tx/columnshard/export/common/ya.make | 13 + .../tx/columnshard/export/events/events.cpp | 5 + .../tx/columnshard/export/events/events.h | 38 + ydb/core/tx/columnshard/export/events/ya.make | 13 + .../tx/columnshard/export/manager/manager.cpp | 67 + .../tx/columnshard/export/manager/manager.h | 58 + .../tx/columnshard/export/manager/ya.make | 14 + .../tx/columnshard/export/protos/cursor.proto | 7 + .../columnshard/export/protos/selector.proto | 17 + .../columnshard/export/protos/storage.proto | 21 + .../tx/columnshard/export/protos/task.proto | 16 + ydb/core/tx/columnshard/export/protos/ya.make | 15 + .../tx/columnshard/export/session/cursor.cpp | 36 + .../tx/columnshard/export/session/cursor.h | 55 + .../session/selector/abstract/selector.cpp | 16 + .../session/selector/abstract/selector.h | 62 + .../export/session/selector/abstract/ya.make | 14 + .../session/selector/backup/selector.cpp | 30 + .../export/session/selector/backup/selector.h | 80 + .../export/session/selector/backup/ya.make | 13 + .../export/session/selector/ya.make | 11 + .../tx/columnshard/export/session/session.cpp | 65 + .../tx/columnshard/export/session/session.h | 98 + .../session/storage/abstract/storage.cpp | 15 + .../export/session/storage/abstract/storage.h | 63 + .../export/session/storage/abstract/ya.make | 15 + .../export/session/storage/s3/storage.cpp | 25 + .../export/session/storage/s3/storage.h | 44 + .../export/session/storage/s3/ya.make | 23 + .../export/session/storage/tier/storage.cpp | 14 + .../export/session/storage/tier/storage.h | 40 + .../export/session/storage/tier/ya.make | 11 + .../export/session/storage/ya.make | 12 + .../tx/columnshard/export/session/task.cpp | 48 + ydb/core/tx/columnshard/export/session/task.h | 49 + .../tx/columnshard/export/session/ya.make | 20 + .../export/transactions/tx_save_cursor.cpp | 23 + .../export/transactions/tx_save_cursor.h | 26 + .../columnshard/export/transactions/ya.make | 14 + ydb/core/tx/columnshard/export/ya.make | 16 + .../tx/columnshard/hooks/abstract/abstract.h | 139 +- .../columnshard/hooks/testing/controller.cpp | 156 +- .../tx/columnshard/hooks/testing/controller.h | 254 +- .../columnshard/inflight_request_tracker.cpp | 90 + .../tx/columnshard/inflight_request_tracker.h | 89 +- .../normalizer/abstract/abstract.cpp | 39 +- .../normalizer/abstract/abstract.h | 125 +- .../columnshard/normalizer/abstract/ya.make | 2 + .../normalizer/granule/normalizer.cpp | 23 +- .../normalizer/granule/normalizer.h | 14 +- .../tx/columnshard/normalizer/granule/ya.make | 2 +- .../columnshard/normalizer/portion/chunks.cpp | 20 +- .../columnshard/normalizer/portion/chunks.h | 14 +- .../columnshard/normalizer/portion/clean.cpp | 91 + .../tx/columnshard/normalizer/portion/clean.h | 39 + .../normalizer/portion/min_max.cpp | 221 -- .../columnshard/normalizer/portion/min_max.h | 35 - .../normalizer/portion/normalizer.cpp | 108 +- .../normalizer/portion/normalizer.h | 33 +- .../normalizer/portion/portion.cpp | 75 + .../columnshard/normalizer/portion/portion.h | 39 + .../tx/columnshard/normalizer/portion/ya.make | 4 +- .../normalizer/tables/normalizer.cpp | 141 + .../normalizer/tables/normalizer.h | 23 + .../tx/columnshard/normalizer/tables/ya.make | 11 + ydb/core/tx/columnshard/operations/write.cpp | 180 +- ydb/core/tx/columnshard/operations/write.h | 26 +- .../tx/columnshard/operations/write_data.cpp | 2 +- .../tx/columnshard/operations/write_data.h | 2 +- ydb/core/tx/columnshard/operations/ya.make | 1 + .../columnshard/resource_subscriber/actor.cpp | 52 +- .../columnshard/resource_subscriber/actor.h | 1 + .../columnshard/resource_subscriber/task.cpp | 16 +- .../tx/columnshard/resource_subscriber/task.h | 1 + .../splitter/abstract/chunk_meta.cpp | 27 + .../splitter/abstract/chunk_meta.h | 44 + .../abstract/chunks.cpp} | 2 +- .../tx/columnshard/splitter/abstract/chunks.h | 125 + .../tx/columnshard/splitter/abstract/ya.make | 13 + .../tx/columnshard/splitter/batch_slice.cpp | 175 +- .../tx/columnshard/splitter/batch_slice.h | 85 +- ydb/core/tx/columnshard/splitter/blob_info.h | 7 + .../tx/columnshard/splitter/chunk_meta.cpp | 26 - ydb/core/tx/columnshard/splitter/chunk_meta.h | 53 +- ydb/core/tx/columnshard/splitter/chunks.cpp | 5 +- ydb/core/tx/columnshard/splitter/chunks.h | 90 +- .../tx/columnshard/splitter/rb_splitter.cpp | 71 - .../tx/columnshard/splitter/rb_splitter.h | 69 - .../tx/columnshard/splitter/scheme_info.cpp | 8 + .../tx/columnshard/splitter/scheme_info.h | 6 +- ydb/core/tx/columnshard/splitter/settings.cpp | 2 +- ydb/core/tx/columnshard/splitter/settings.h | 101 +- .../columnshard/splitter/similar_packer.cpp | 5 + .../tx/columnshard/splitter/similar_packer.h | 81 + ydb/core/tx/columnshard/splitter/simple.h | 4 + .../columnshard/splitter/ut/ut_splitter.cpp | 193 +- ydb/core/tx/columnshard/splitter/ut/ya.make | 4 + ydb/core/tx/columnshard/splitter/ya.make | 5 +- ydb/core/tx/columnshard/tables_manager.cpp | 160 +- ydb/core/tx/columnshard/tables_manager.h | 123 +- .../columnshard/test_helper/controllers.cpp | 22 + .../tx/columnshard/test_helper/controllers.h | 57 + .../tx/columnshard/test_helper/helper.cpp | 91 + ydb/core/tx/columnshard/test_helper/helper.h | 75 + ydb/core/tx/columnshard/test_helper/ya.make | 20 + .../transactions/operators/backup.cpp | 67 + .../transactions/operators/backup.h | 29 + .../transactions/operators/ev_write.h | 15 +- .../transactions/operators/schema.h | 74 +- .../transactions/operators/ya.make | 3 + .../transactions/propose_transaction_base.cpp | 37 + .../transactions/propose_transaction_base.h | 22 + .../transactions/tx_controller.cpp | 58 +- .../columnshard/transactions/tx_controller.h | 45 +- ydb/core/tx/columnshard/transactions/ya.make | 2 + ydb/core/tx/columnshard/ut_rw/ut_backup.cpp | 112 + .../ut_rw/ut_columnshard_read_write.cpp | 289 +- .../tx/columnshard/ut_rw/ut_normalizer.cpp | 128 +- ydb/core/tx/columnshard/ut_rw/ya.make | 3 + .../ut_schema/ut_columnshard_schema.cpp | 315 +- ydb/core/tx/columnshard/ut_schema/ya.make | 1 + ydb/core/tx/columnshard/write_actor.cpp | 6 +- ydb/core/tx/columnshard/ya.make | 11 +- .../tx/data_events/columnshard_splitter.h | 2 +- ydb/core/tx/data_events/events.h | 22 +- ydb/core/tx/data_events/payload_helper.h | 28 +- ydb/core/tx/datashard/datashard__kqp_scan.cpp | 8 +- .../datashard/datashard_ut_read_iterator.cpp | 2 +- ydb/core/tx/datashard/datashard_ut_write.cpp | 2 +- .../datashard/datashard_write_operation.cpp | 4 +- .../ut_common/datashard_ut_common.cpp | 4 +- ydb/core/tx/datashard/write_unit.cpp | 2 +- ydb/core/tx/program/program.h | 11 +- ydb/core/tx/schemeshard/common/validation.cpp | 30 + ydb/core/tx/schemeshard/common/validation.h | 13 + ydb/core/tx/schemeshard/common/ya.make | 12 + .../tx/schemeshard/olap/columns/update.cpp | 77 +- ydb/core/tx/schemeshard/olap/columns/update.h | 8 +- .../tx/schemeshard/olap/indexes/schema.cpp | 5 + ydb/core/tx/schemeshard/olap/indexes/schema.h | 1 + .../tx/schemeshard/olap/indexes/update.cpp | 11 +- ydb/core/tx/schemeshard/olap/indexes/update.h | 3 +- .../tx/schemeshard/olap/options/schema.cpp | 22 + ydb/core/tx/schemeshard/olap/options/schema.h | 18 + .../tx/schemeshard/olap/options/update.cpp | 5 + ydb/core/tx/schemeshard/olap/options/update.h | 22 + ydb/core/tx/schemeshard/olap/options/ya.make | 12 + .../tx/schemeshard/olap/schema/schema.cpp | 243 +- ydb/core/tx/schemeshard/olap/schema/schema.h | 11 +- .../tx/schemeshard/olap/schema/update.cpp | 8 + ydb/core/tx/schemeshard/olap/schema/update.h | 7 + ydb/core/tx/schemeshard/olap/schema/ya.make | 2 + .../tx/schemeshard/olap/statistics/schema.cpp | 92 + .../tx/schemeshard/olap/statistics/schema.h | 80 + .../tx/schemeshard/olap/statistics/update.cpp | 35 + .../tx/schemeshard/olap/statistics/update.h | 43 + .../tx/schemeshard/olap/statistics/ya.make | 12 + ydb/core/tx/schemeshard/olap/ya.make | 2 + .../tx/schemeshard/schemeshard_info_types.cpp | 2 +- .../schemeshard/schemeshard_validate_ttl.cpp | 128 +- .../tx/schemeshard/ut_helpers/helpers.cpp | 2 +- ydb/core/tx/schemeshard/ut_olap/ut_olap.cpp | 10 +- ydb/core/tx/schemeshard/ut_olap/ya.make | 2 + ydb/core/tx/schemeshard/ya.make | 1 + ydb/core/tx/tiering/abstract/manager.cpp | 12 + ydb/core/tx/tiering/abstract/manager.h | 18 + ydb/core/tx/tiering/abstract/ya.make | 11 + ydb/core/tx/tiering/manager.cpp | 16 +- ydb/core/tx/tiering/manager.h | 24 +- ydb/core/tx/tiering/rule/manager.cpp | 3 + ydb/core/tx/tiering/rule/object.cpp | 4 +- ydb/core/tx/tiering/tier/manager.cpp | 3 + ydb/core/tx/tiering/ut/ut_tiers.cpp | 21 +- .../tx/tx_proxy/upload_rows_common_impl.cpp | 16 +- .../tx/tx_proxy/upload_rows_common_impl.h | 54 +- ydb/core/wrappers/fake_storage.h | 41 +- ydb/core/wrappers/s3_storage_config.cpp | 39 +- ydb/library/actors/core/actor_bootstrapped.h | 2 +- ydb/library/actors/prof/tag.cpp | 12 +- ydb/library/actors/prof/tag.h | 2 +- ydb/library/conclusion/result.h | 10 +- ydb/library/conclusion/status.cpp | 5 + ydb/library/conclusion/status.h | 22 +- ydb/library/conclusion/ya.make | 1 + ydb/library/services/services.proto | 1 + .../ydb_cli/commands/ydb_service_scheme.cpp | 3 + .../lib/ydb_cli/commands/ydb_service_scheme.h | 1 + .../lib/ydb_cli/common/recursive_remove.cpp | 32 +- .../lib/ydb_cli/common/scheme_printers.cpp | 49 +- .../lib/ydb_cli/common/scheme_printers.h | 4 +- ydb/services/bg_tasks/abstract/interface.h | 2 +- ydb/services/metadata/common/ya.make | 2 +- ydb/services/metadata/manager/abstract.h | 2 +- ydb/services/metadata/secret/secret.h | 4 +- ydb/services/ydb/ydb_logstore_ut.cpp | 14 +- ydb/services/ydb/ydb_olapstore_ut.cpp | 72 +- .../queries-original-plan-column-0 | 83 + .../queries-original-plan-column-1 | 125 +- .../queries-original-plan-column-10 | 143 +- .../queries-original-plan-column-11 | 147 +- .../queries-original-plan-column-12 | 126 +- .../queries-original-plan-column-13 | 143 +- .../queries-original-plan-column-14 | 130 +- .../queries-original-plan-column-15 | 86 + .../queries-original-plan-column-16 | 90 + .../queries-original-plan-column-17 | 89 + .../queries-original-plan-column-18 | 94 + .../queries-original-plan-column-19 | 113 +- .../queries-original-plan-column-2 | 267 +- .../queries-original-plan-column-20 | 125 +- .../queries-original-plan-column-21 | 173 +- .../queries-original-plan-column-22 | 491 ++- .../queries-original-plan-column-23 | 530 ++- .../queries-original-plan-column-24 | 118 +- .../queries-original-plan-column-25 | 113 +- .../queries-original-plan-column-26 | 117 +- .../queries-original-plan-column-27 | 142 +- .../queries-original-plan-column-28 | 138 +- .../queries-original-plan-column-29 | 163 +- .../queries-original-plan-column-3 | 106 + .../queries-original-plan-column-30 | 139 +- .../queries-original-plan-column-31 | 139 +- .../queries-original-plan-column-32 | 98 + .../queries-original-plan-column-33 | 86 + .../queries-original-plan-column-34 | 90 + .../queries-original-plan-column-35 | 86 + .../queries-original-plan-column-36 | 313 +- .../queries-original-plan-column-37 | 313 +- .../queries-original-plan-column-38 | 338 +- .../queries-original-plan-column-39 | 240 +- .../queries-original-plan-column-4 | 95 + .../queries-original-plan-column-40 | 285 +- .../queries-original-plan-column-41 | 342 +- .../queries-original-plan-column-42 | 281 +- .../queries-original-plan-column-5 | 95 + .../queries-original-plan-column-6 | 211 +- .../queries-original-plan-column-7 | 126 +- .../queries-original-plan-column-8 | 103 + .../queries-original-plan-column-9 | 181 + .../queries-original-plan-row-0 | 66 + .../queries-original-plan-row-1 | 80 + .../queries-original-plan-row-10 | 98 + .../queries-original-plan-row-11 | 99 + .../queries-original-plan-row-12 | 84 + .../queries-original-plan-row-13 | 98 + .../queries-original-plan-row-14 | 85 + .../queries-original-plan-row-15 | 72 + .../queries-original-plan-row-16 | 73 + .../queries-original-plan-row-17 | 72 + .../queries-original-plan-row-18 | 74 + .../queries-original-plan-row-19 | 70 + .../queries-original-plan-row-2 | 137 +- .../queries-original-plan-row-20 | 80 + .../queries-original-plan-row-21 | 85 + .../queries-original-plan-row-22 | 159 + .../queries-original-plan-row-23 | 174 + .../queries-original-plan-row-24 | 71 + .../queries-original-plan-row-25 | 71 + .../queries-original-plan-row-26 | 72 + .../queries-original-plan-row-27 | 97 + .../queries-original-plan-row-28 | 96 + .../queries-original-plan-row-29 | 135 +- .../queries-original-plan-row-3 | 68 + .../queries-original-plan-row-30 | 88 + .../queries-original-plan-row-31 | 88 + .../queries-original-plan-row-32 | 75 + .../queries-original-plan-row-33 | 72 + .../queries-original-plan-row-34 | 73 + .../queries-original-plan-row-35 | 72 + .../queries-original-plan-row-36 | 88 + .../queries-original-plan-row-37 | 88 + .../queries-original-plan-row-38 | 113 + .../queries-original-plan-row-39 | 115 + .../queries-original-plan-row-4 | 81 + .../queries-original-plan-row-40 | 113 + .../queries-original-plan-row-41 | 114 + .../queries-original-plan-row-42 | 112 + .../queries-original-plan-row-5 | 81 + .../queries-original-plan-row-6 | 135 +- .../queries-original-plan-row-7 | 84 + .../queries-original-plan-row-8 | 86 + .../queries-original-plan-row-9 | 135 + 921 files changed, 44977 insertions(+), 17007 deletions(-) create mode 100644 ydb/core/formats/arrow/common/accessor.cpp create mode 100644 ydb/core/formats/arrow/common/accessor.h create mode 100644 ydb/core/formats/arrow/common/adapter.cpp create mode 100644 ydb/core/formats/arrow/common/adapter.h create mode 100644 ydb/core/formats/arrow/common/container.cpp create mode 100644 ydb/core/formats/arrow/common/container.h delete mode 100644 ydb/core/formats/arrow/merging_sorted_input_stream.cpp delete mode 100644 ydb/core/formats/arrow/merging_sorted_input_stream.h delete mode 100644 ydb/core/formats/arrow/one_batch_input_stream.h create mode 100644 ydb/core/formats/arrow/reader/batch_iterator.cpp create mode 100644 ydb/core/formats/arrow/reader/batch_iterator.h create mode 100644 ydb/core/formats/arrow/reader/heap.cpp create mode 100644 ydb/core/formats/arrow/reader/heap.h rename ydb/core/{tx/columnshard/engines/reader/read_filter_merger.cpp => formats/arrow/reader/merger.cpp} (71%) create mode 100644 ydb/core/formats/arrow/reader/merger.h rename ydb/core/formats/arrow/reader/{read_filter_merger.cpp => position.cpp} (75%) rename ydb/core/formats/arrow/reader/{read_filter_merger.h => position.h} (83%) create mode 100644 ydb/core/formats/arrow/reader/result_builder.cpp create mode 100644 ydb/core/formats/arrow/reader/result_builder.h delete mode 100644 ydb/core/formats/arrow/sort_cursor.h create mode 100644 ydb/core/formats/arrow/switch/compare.cpp create mode 100644 ydb/core/formats/arrow/switch/compare.h rename ydb/core/formats/arrow/{ => ut}/ut_arrow.cpp (79%) rename ydb/core/formats/arrow/{ => ut}/ut_program_step.cpp (99%) create mode 100644 ydb/core/kqp/gateway/behaviour/tablestore/operations/drop_stat.cpp create mode 100644 ydb/core/kqp/gateway/behaviour/tablestore/operations/drop_stat.h create mode 100644 ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_opt.cpp create mode 100644 ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_opt.h create mode 100644 ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_stat.cpp create mode 100644 ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_stat.h create mode 100644 ydb/core/kqp/ut/olap/aggregations_ut.cpp create mode 100644 ydb/core/kqp/ut/olap/blobs_sharing_ut.cpp create mode 100644 ydb/core/kqp/ut/olap/clickbench_ut.cpp create mode 100644 ydb/core/kqp/ut/olap/helpers/aggregation.cpp create mode 100644 ydb/core/kqp/ut/olap/helpers/aggregation.h create mode 100644 ydb/core/kqp/ut/olap/helpers/get_value.cpp create mode 100644 ydb/core/kqp/ut/olap/helpers/get_value.h create mode 100644 ydb/core/kqp/ut/olap/helpers/local.cpp create mode 100644 ydb/core/kqp/ut/olap/helpers/local.h create mode 100644 ydb/core/kqp/ut/olap/helpers/query_executor.cpp create mode 100644 ydb/core/kqp/ut/olap/helpers/query_executor.h create mode 100644 ydb/core/kqp/ut/olap/helpers/typed_local.cpp create mode 100644 ydb/core/kqp/ut/olap/helpers/typed_local.h create mode 100644 ydb/core/kqp/ut/olap/helpers/writer.cpp create mode 100644 ydb/core/kqp/ut/olap/helpers/writer.h create mode 100644 ydb/core/kqp/ut/olap/helpers/ya.make create mode 100644 ydb/core/kqp/ut/olap/indexes_ut.cpp create mode 100644 ydb/core/kqp/ut/olap/statistics_ut.cpp create mode 100644 ydb/core/kqp/ut/olap/sys_view_ut.cpp create mode 100644 ydb/core/kqp/ut/olap/write_ut.cpp create mode 100644 ydb/core/tx/columnshard/blobs_action/abstract/blob_set.cpp create mode 100644 ydb/core/tx/columnshard/blobs_action/abstract/blob_set.h create mode 100644 ydb/core/tx/columnshard/blobs_action/abstract/gc_actor.cpp create mode 100644 ydb/core/tx/columnshard/blobs_action/abstract/gc_actor.h rename ydb/core/tx/columnshard/{ => blobs_action/bs}/blob_manager.cpp (52%) rename ydb/core/tx/columnshard/{ => blobs_action/bs}/blob_manager.h (68%) create mode 100644 ydb/core/tx/columnshard/blobs_action/common/const.cpp create mode 100644 ydb/core/tx/columnshard/blobs_action/common/const.h create mode 100644 ydb/core/tx/columnshard/blobs_action/common/ya.make create mode 100644 ydb/core/tx/columnshard/blobs_action/events/delete_blobs.cpp create mode 100644 ydb/core/tx/columnshard/blobs_action/events/delete_blobs.h create mode 100644 ydb/core/tx/columnshard/blobs_action/events/ya.make delete mode 100644 ydb/core/tx/columnshard/blobs_action/memory.h create mode 100644 ydb/core/tx/columnshard/blobs_action/protos/blobs.proto create mode 100644 ydb/core/tx/columnshard/blobs_action/protos/events.proto create mode 100644 ydb/core/tx/columnshard/blobs_action/protos/ya.make create mode 100644 ydb/core/tx/columnshard/blobs_action/storages_manager/manager.cpp create mode 100644 ydb/core/tx/columnshard/blobs_action/storages_manager/manager.h create mode 100644 ydb/core/tx/columnshard/blobs_action/storages_manager/ya.make create mode 100644 ydb/core/tx/columnshard/blobs_action/transaction/tx_remove_blobs.cpp create mode 100644 ydb/core/tx/columnshard/blobs_action/transaction/tx_remove_blobs.h delete mode 100644 ydb/core/tx/columnshard/columnshard__read_base.h delete mode 100644 ydb/core/tx/columnshard/columnshard__stats_scan.cpp delete mode 100644 ydb/core/tx/columnshard/columnshard__stats_scan.h create mode 100644 ydb/core/tx/columnshard/common/blob.cpp create mode 100644 ydb/core/tx/columnshard/common/blob.h create mode 100644 ydb/core/tx/columnshard/common/protos/blob_range.proto create mode 100644 ydb/core/tx/columnshard/common/tablet_id.cpp create mode 100644 ydb/core/tx/columnshard/common/tablet_id.h create mode 100644 ydb/core/tx/columnshard/config.clang-format create mode 100644 ydb/core/tx/columnshard/counters/common/histogram.cpp create mode 100644 ydb/core/tx/columnshard/counters/common/histogram.h create mode 100644 ydb/core/tx/columnshard/data_locks/locks/abstract.cpp create mode 100644 ydb/core/tx/columnshard/data_locks/locks/abstract.h create mode 100644 ydb/core/tx/columnshard/data_locks/locks/composite.cpp create mode 100644 ydb/core/tx/columnshard/data_locks/locks/composite.h create mode 100644 ydb/core/tx/columnshard/data_locks/locks/list.cpp create mode 100644 ydb/core/tx/columnshard/data_locks/locks/list.h create mode 100644 ydb/core/tx/columnshard/data_locks/locks/snapshot.cpp create mode 100644 ydb/core/tx/columnshard/data_locks/locks/snapshot.h create mode 100644 ydb/core/tx/columnshard/data_locks/locks/ya.make create mode 100644 ydb/core/tx/columnshard/data_locks/manager/manager.cpp create mode 100644 ydb/core/tx/columnshard/data_locks/manager/manager.h create mode 100644 ydb/core/tx/columnshard/data_locks/manager/ya.make create mode 100644 ydb/core/tx/columnshard/data_locks/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/common/context/context.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/common/context/context.h create mode 100644 ydb/core/tx/columnshard/data_sharing/common/context/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/common/session/common.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/common/session/common.h create mode 100644 ydb/core/tx/columnshard/data_sharing/common/session/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h create mode 100644 ydb/core/tx/columnshard/data_sharing/common/transactions/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/common/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/events/control.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/events/control.h create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/events/status.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/events/status.h create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/events/transfer.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/events/transfer.h create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/events/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/session/destination.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/session/destination.h create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/session/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_data_from_source.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_data_from_source.h create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_ack_from_initiator.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_ack_from_initiator.h create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_from_source.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_from_source.h create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_start_from_initiator.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_start_from_initiator.h create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/transactions/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/destination/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/initiator/controller/abstract.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/initiator/controller/abstract.h create mode 100644 ydb/core/tx/columnshard/data_sharing/initiator/controller/test.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/initiator/controller/test.h create mode 100644 ydb/core/tx/columnshard/data_sharing/initiator/controller/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/initiator/status/abstract.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/initiator/status/abstract.h create mode 100644 ydb/core/tx/columnshard/data_sharing/initiator/status/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/initiator/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/manager/sessions.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/manager/sessions.h create mode 100644 ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h create mode 100644 ydb/core/tx/columnshard/data_sharing/manager/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/modification/events/change_owning.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/modification/events/change_owning.h create mode 100644 ydb/core/tx/columnshard/data_sharing/modification/events/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.h create mode 100644 ydb/core/tx/columnshard/data_sharing/modification/tasks/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/modification/transactions/tx_change_blobs_owning.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/modification/transactions/tx_change_blobs_owning.h create mode 100644 ydb/core/tx/columnshard/data_sharing/modification/transactions/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/modification/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/protos/data.proto create mode 100644 ydb/core/tx/columnshard/data_sharing/protos/events.proto create mode 100644 ydb/core/tx/columnshard/data_sharing/protos/initiator.proto create mode 100644 ydb/core/tx/columnshard/data_sharing/protos/links.proto create mode 100644 ydb/core/tx/columnshard/data_sharing/protos/sessions.proto create mode 100644 ydb/core/tx/columnshard/data_sharing/protos/transfer.proto create mode 100644 ydb/core/tx/columnshard/data_sharing/protos/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/source/events/control.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/source/events/control.h create mode 100644 ydb/core/tx/columnshard/data_sharing/source/events/transfer.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/source/events/transfer.h create mode 100644 ydb/core/tx/columnshard/data_sharing/source/events/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/source/session/cursor.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/source/session/cursor.h create mode 100644 ydb/core/tx/columnshard/data_sharing/source/session/source.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/source/session/source.h create mode 100644 ydb/core/tx/columnshard/data_sharing/source/session/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/source/transactions/tx_data_ack_to_source.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/source/transactions/tx_data_ack_to_source.h create mode 100644 ydb/core/tx/columnshard/data_sharing/source/transactions/tx_finish_ack_to_source.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/source/transactions/tx_finish_ack_to_source.h create mode 100644 ydb/core/tx/columnshard/data_sharing/source/transactions/tx_start_to_source.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/source/transactions/tx_start_to_source.h create mode 100644 ydb/core/tx/columnshard/data_sharing/source/transactions/tx_write_source_cursor.cpp create mode 100644 ydb/core/tx/columnshard/data_sharing/source/transactions/tx_write_source_cursor.h create mode 100644 ydb/core/tx/columnshard/data_sharing/source/transactions/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/source/ya.make create mode 100644 ydb/core/tx/columnshard/data_sharing/ya.make create mode 100644 ydb/core/tx/columnshard/engines/changes/actualization/construction/context.cpp create mode 100644 ydb/core/tx/columnshard/engines/changes/actualization/construction/context.h create mode 100644 ydb/core/tx/columnshard/engines/changes/actualization/construction/ya.make create mode 100644 ydb/core/tx/columnshard/engines/changes/actualization/controller/controller.cpp create mode 100644 ydb/core/tx/columnshard/engines/changes/actualization/controller/controller.h create mode 100644 ydb/core/tx/columnshard/engines/changes/actualization/controller/ya.make create mode 100644 ydb/core/tx/columnshard/engines/changes/actualization/ya.make delete mode 100644 ydb/core/tx/columnshard/engines/changes/cleanup.cpp create mode 100644 ydb/core/tx/columnshard/engines/changes/cleanup_portions.cpp rename ydb/core/tx/columnshard/engines/changes/{cleanup.h => cleanup_portions.h} (63%) create mode 100644 ydb/core/tx/columnshard/engines/changes/cleanup_tables.cpp create mode 100644 ydb/core/tx/columnshard/engines/changes/cleanup_tables.h create mode 100644 ydb/core/tx/columnshard/engines/portions/index_chunk.cpp create mode 100644 ydb/core/tx/columnshard/engines/portions/index_chunk.h create mode 100644 ydb/core/tx/columnshard/engines/reader/abstract/abstract.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/abstract/abstract.h rename ydb/core/tx/columnshard/{columnshard__read_base.cpp => engines/reader/abstract/constructor.cpp} (50%) create mode 100644 ydb/core/tx/columnshard/engines/reader/abstract/constructor.h create mode 100644 ydb/core/tx/columnshard/engines/reader/abstract/read_context.cpp rename ydb/core/tx/columnshard/engines/reader/{ => abstract}/read_context.h (80%) create mode 100644 ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h create mode 100644 ydb/core/tx/columnshard/engines/reader/abstract/ya.make create mode 100644 ydb/core/tx/columnshard/engines/reader/actor/actor.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/actor/actor.h create mode 100644 ydb/core/tx/columnshard/engines/reader/actor/ya.make create mode 100644 ydb/core/tx/columnshard/engines/reader/common/conveyor_task.cpp rename ydb/core/tx/columnshard/engines/reader/{ => common}/conveyor_task.h (70%) rename ydb/core/tx/columnshard/engines/reader/{ => common}/description.cpp (100%) rename ydb/core/tx/columnshard/engines/reader/{ => common}/description.h (93%) rename ydb/core/tx/columnshard/engines/reader/{ => common}/queue.cpp (100%) rename ydb/core/tx/columnshard/engines/reader/{ => common}/queue.h (100%) create mode 100644 ydb/core/tx/columnshard/engines/reader/common/result.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/common/result.h create mode 100644 ydb/core/tx/columnshard/engines/reader/common/stats.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/common/stats.h create mode 100644 ydb/core/tx/columnshard/engines/reader/common/ya.make delete mode 100644 ydb/core/tx/columnshard/engines/reader/conveyor_task.cpp delete mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/column_assembler.cpp delete mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/column_assembler.h create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/constructor.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/constructor.h create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/read_metadata.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/read_metadata.h create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/resolver.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/resolver.h create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/ya.make delete mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/context.cpp delete mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/context.h delete mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/fetching.cpp delete mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/fetching.h delete mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/interval.cpp delete mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/interval.h rename ydb/core/tx/columnshard/engines/reader/plain_reader/{ => iterator}/columns_set.cpp (89%) rename ydb/core/tx/columnshard/engines/reader/plain_reader/{ => iterator}/columns_set.h (88%) rename ydb/core/tx/columnshard/engines/reader/plain_reader/{ => iterator}/constructor.cpp (62%) rename ydb/core/tx/columnshard/engines/reader/plain_reader/{ => iterator}/constructor.h (54%) create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/context.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/context.h rename ydb/core/tx/columnshard/engines/reader/plain_reader/{ => iterator}/fetched_data.cpp (53%) rename ydb/core/tx/columnshard/engines/reader/plain_reader/{ => iterator}/fetched_data.h (62%) create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetching.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetching.h create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/interval.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/interval.h rename ydb/core/tx/columnshard/{columnshard__index_scan.cpp => engines/reader/plain_reader/iterator/iterator.cpp} (64%) rename ydb/core/tx/columnshard/{columnshard__index_scan.h => engines/reader/plain_reader/iterator/iterator.h} (54%) create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/merge.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/merge.h rename ydb/core/tx/columnshard/engines/reader/plain_reader/{ => iterator}/plain_read_data.cpp (86%) rename ydb/core/tx/columnshard/engines/reader/plain_reader/{ => iterator}/plain_read_data.h (65%) create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/scanner.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/scanner.h rename ydb/core/tx/columnshard/engines/reader/plain_reader/{ => iterator}/source.cpp (59%) rename ydb/core/tx/columnshard/engines/reader/plain_reader/{ => iterator}/source.h (51%) create mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/ya.make delete mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/scanner.cpp delete mode 100644 ydb/core/tx/columnshard/engines/reader/plain_reader/scanner.h delete mode 100644 ydb/core/tx/columnshard/engines/reader/read_context.cpp delete mode 100644 ydb/core/tx/columnshard/engines/reader/read_filter_merger.h delete mode 100644 ydb/core/tx/columnshard/engines/reader/read_metadata.cpp delete mode 100644 ydb/core/tx/columnshard/engines/reader/read_metadata.h create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/abstract/granule_view.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/abstract/granule_view.h create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.h create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/abstract/metadata.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/abstract/metadata.h create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/abstract/ya.make create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/chunks/chunks.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/chunks/chunks.h create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/chunks/ya.make create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.h create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/constructor/ya.make create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/granules/granules.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/granules/granules.h create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/granules/ya.make create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/portions/portions.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/portions/portions.h create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/portions/ya.make create mode 100644 ydb/core/tx/columnshard/engines/reader/sys_view/ya.make create mode 100644 ydb/core/tx/columnshard/engines/reader/transaction/tx_scan.cpp create mode 100644 ydb/core/tx/columnshard/engines/reader/transaction/tx_scan.h create mode 100644 ydb/core/tx/columnshard/engines/reader/transaction/ya.make create mode 100644 ydb/core/tx/columnshard/engines/scheme/abstract/index_info.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/abstract/index_info.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/abstract/loader.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/abstract/loader.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/abstract/saver.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/abstract/saver.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/abstract/ya.make create mode 100644 ydb/core/tx/columnshard/engines/scheme/column/info.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/column/info.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/column/ya.make create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/abstract/common.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/abstract/common.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/abstract/operator.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/abstract/operator.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/abstract/portion_storage.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/abstract/portion_storage.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/abstract/ya.make create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/max/constructor.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/max/constructor.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/max/operator.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/max/operator.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/max/ya.make create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/protos/data.proto create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/protos/ya.make create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/variability/constructor.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/variability/constructor.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/variability/operator.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/variability/operator.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/variability/ya.make create mode 100644 ydb/core/tx/columnshard/engines/scheme/statistics/ya.make create mode 100644 ydb/core/tx/columnshard/engines/scheme/tiering/common.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/tiering/common.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/tiering/tier_info.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/tiering/tier_info.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/tiering/ya.make create mode 100644 ydb/core/tx/columnshard/engines/scheme/versions/abstract_scheme.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/versions/abstract_scheme.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/versions/filtered_scheme.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/versions/filtered_scheme.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/versions/snapshot_scheme.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/versions/snapshot_scheme.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.cpp create mode 100644 ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.h create mode 100644 ydb/core/tx/columnshard/engines/scheme/versions/ya.make create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/abstract/abstract.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/abstract/abstract.h create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/abstract/context.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/abstract/context.h create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/abstract/ya.make create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/common/address.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/common/address.h create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/common/ya.make create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/counters/counters.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/counters/counters.h create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/counters/ya.make create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/index/index.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/index/index.h create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/index/ya.make create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/scheme/counters.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/scheme/counters.h create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/scheme/scheme.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/scheme/scheme.h create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/scheme/ya.make create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/tiering/counters.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/tiering/counters.h create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/tiering/tiering.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/tiering/tiering.h create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/tiering/ya.make create mode 100644 ydb/core/tx/columnshard/engines/storage/actualizer/ya.make create mode 100644 ydb/core/tx/columnshard/engines/storage/chunks/column.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/chunks/column.h create mode 100644 ydb/core/tx/columnshard/engines/storage/chunks/data.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/chunks/data.h create mode 100644 ydb/core/tx/columnshard/engines/storage/chunks/null_column.cpp create mode 100644 ydb/core/tx/columnshard/engines/storage/chunks/null_column.h create mode 100644 ydb/core/tx/columnshard/engines/storage/chunks/ya.make delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/intervals/blob_size.cpp delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/intervals/blob_size.h delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/intervals/counters.cpp delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/intervals/counters.h delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/intervals/optimizer.cpp delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/intervals/optimizer.h delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/intervals/ya.make delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/levels/counters.cpp delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/levels/counters.h delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/levels/optimizer.cpp delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/levels/optimizer.h delete mode 100644 ydb/core/tx/columnshard/engines/storage/optimizer/levels/ya.make create mode 100644 ydb/core/tx/columnshard/export/actor/export_actor.cpp create mode 100644 ydb/core/tx/columnshard/export/actor/export_actor.h create mode 100644 ydb/core/tx/columnshard/export/actor/write.cpp create mode 100644 ydb/core/tx/columnshard/export/actor/write.h create mode 100644 ydb/core/tx/columnshard/export/actor/ya.make create mode 100644 ydb/core/tx/columnshard/export/common/identifier.cpp create mode 100644 ydb/core/tx/columnshard/export/common/identifier.h create mode 100644 ydb/core/tx/columnshard/export/common/ya.make create mode 100644 ydb/core/tx/columnshard/export/events/events.cpp create mode 100644 ydb/core/tx/columnshard/export/events/events.h create mode 100644 ydb/core/tx/columnshard/export/events/ya.make create mode 100644 ydb/core/tx/columnshard/export/manager/manager.cpp create mode 100644 ydb/core/tx/columnshard/export/manager/manager.h create mode 100644 ydb/core/tx/columnshard/export/manager/ya.make create mode 100644 ydb/core/tx/columnshard/export/protos/cursor.proto create mode 100644 ydb/core/tx/columnshard/export/protos/selector.proto create mode 100644 ydb/core/tx/columnshard/export/protos/storage.proto create mode 100644 ydb/core/tx/columnshard/export/protos/task.proto create mode 100644 ydb/core/tx/columnshard/export/protos/ya.make create mode 100644 ydb/core/tx/columnshard/export/session/cursor.cpp create mode 100644 ydb/core/tx/columnshard/export/session/cursor.h create mode 100644 ydb/core/tx/columnshard/export/session/selector/abstract/selector.cpp create mode 100644 ydb/core/tx/columnshard/export/session/selector/abstract/selector.h create mode 100644 ydb/core/tx/columnshard/export/session/selector/abstract/ya.make create mode 100644 ydb/core/tx/columnshard/export/session/selector/backup/selector.cpp create mode 100644 ydb/core/tx/columnshard/export/session/selector/backup/selector.h create mode 100644 ydb/core/tx/columnshard/export/session/selector/backup/ya.make create mode 100644 ydb/core/tx/columnshard/export/session/selector/ya.make create mode 100644 ydb/core/tx/columnshard/export/session/session.cpp create mode 100644 ydb/core/tx/columnshard/export/session/session.h create mode 100644 ydb/core/tx/columnshard/export/session/storage/abstract/storage.cpp create mode 100644 ydb/core/tx/columnshard/export/session/storage/abstract/storage.h create mode 100644 ydb/core/tx/columnshard/export/session/storage/abstract/ya.make create mode 100644 ydb/core/tx/columnshard/export/session/storage/s3/storage.cpp create mode 100644 ydb/core/tx/columnshard/export/session/storage/s3/storage.h create mode 100644 ydb/core/tx/columnshard/export/session/storage/s3/ya.make create mode 100644 ydb/core/tx/columnshard/export/session/storage/tier/storage.cpp create mode 100644 ydb/core/tx/columnshard/export/session/storage/tier/storage.h create mode 100644 ydb/core/tx/columnshard/export/session/storage/tier/ya.make create mode 100644 ydb/core/tx/columnshard/export/session/storage/ya.make create mode 100644 ydb/core/tx/columnshard/export/session/task.cpp create mode 100644 ydb/core/tx/columnshard/export/session/task.h create mode 100644 ydb/core/tx/columnshard/export/session/ya.make create mode 100644 ydb/core/tx/columnshard/export/transactions/tx_save_cursor.cpp create mode 100644 ydb/core/tx/columnshard/export/transactions/tx_save_cursor.h create mode 100644 ydb/core/tx/columnshard/export/transactions/ya.make create mode 100644 ydb/core/tx/columnshard/export/ya.make create mode 100644 ydb/core/tx/columnshard/inflight_request_tracker.cpp create mode 100644 ydb/core/tx/columnshard/normalizer/portion/clean.cpp create mode 100644 ydb/core/tx/columnshard/normalizer/portion/clean.h delete mode 100644 ydb/core/tx/columnshard/normalizer/portion/min_max.cpp delete mode 100644 ydb/core/tx/columnshard/normalizer/portion/min_max.h create mode 100644 ydb/core/tx/columnshard/normalizer/portion/portion.cpp create mode 100644 ydb/core/tx/columnshard/normalizer/portion/portion.h create mode 100644 ydb/core/tx/columnshard/normalizer/tables/normalizer.cpp create mode 100644 ydb/core/tx/columnshard/normalizer/tables/normalizer.h create mode 100644 ydb/core/tx/columnshard/normalizer/tables/ya.make create mode 100644 ydb/core/tx/columnshard/splitter/abstract/chunk_meta.cpp create mode 100644 ydb/core/tx/columnshard/splitter/abstract/chunk_meta.h rename ydb/core/tx/columnshard/{blobs_action/memory.cpp => splitter/abstract/chunks.cpp} (60%) create mode 100644 ydb/core/tx/columnshard/splitter/abstract/chunks.h create mode 100644 ydb/core/tx/columnshard/splitter/abstract/ya.make delete mode 100644 ydb/core/tx/columnshard/splitter/rb_splitter.cpp delete mode 100644 ydb/core/tx/columnshard/splitter/rb_splitter.h create mode 100644 ydb/core/tx/columnshard/splitter/similar_packer.cpp create mode 100644 ydb/core/tx/columnshard/splitter/similar_packer.h create mode 100644 ydb/core/tx/columnshard/test_helper/controllers.cpp create mode 100644 ydb/core/tx/columnshard/test_helper/controllers.h create mode 100644 ydb/core/tx/columnshard/test_helper/helper.cpp create mode 100644 ydb/core/tx/columnshard/test_helper/helper.h create mode 100644 ydb/core/tx/columnshard/test_helper/ya.make create mode 100644 ydb/core/tx/columnshard/transactions/operators/backup.cpp create mode 100644 ydb/core/tx/columnshard/transactions/operators/backup.h create mode 100644 ydb/core/tx/columnshard/transactions/propose_transaction_base.cpp create mode 100644 ydb/core/tx/columnshard/transactions/propose_transaction_base.h create mode 100644 ydb/core/tx/columnshard/ut_rw/ut_backup.cpp create mode 100644 ydb/core/tx/schemeshard/common/validation.cpp create mode 100644 ydb/core/tx/schemeshard/common/validation.h create mode 100644 ydb/core/tx/schemeshard/common/ya.make create mode 100644 ydb/core/tx/schemeshard/olap/options/schema.cpp create mode 100644 ydb/core/tx/schemeshard/olap/options/schema.h create mode 100644 ydb/core/tx/schemeshard/olap/options/update.cpp create mode 100644 ydb/core/tx/schemeshard/olap/options/update.h create mode 100644 ydb/core/tx/schemeshard/olap/options/ya.make create mode 100644 ydb/core/tx/schemeshard/olap/statistics/schema.cpp create mode 100644 ydb/core/tx/schemeshard/olap/statistics/schema.h create mode 100644 ydb/core/tx/schemeshard/olap/statistics/update.cpp create mode 100644 ydb/core/tx/schemeshard/olap/statistics/update.h create mode 100644 ydb/core/tx/schemeshard/olap/statistics/ya.make create mode 100644 ydb/core/tx/tiering/abstract/manager.cpp create mode 100644 ydb/core/tx/tiering/abstract/manager.h create mode 100644 ydb/core/tx/tiering/abstract/ya.make diff --git a/.github/config/muted_test.txt b/.github/config/muted_test.txt index 5d653c79c40c..571b4754e87a 100644 --- a/.github/config/muted_test.txt +++ b/.github/config/muted_test.txt @@ -3,8 +3,6 @@ ydb-core-blobstorage-ut_blobstorage/SpaceCheckForDiskReassign::* ydb-services-ydb-sdk_sessions_pool_ut/YdbSdkSessionsPool::StressTestSync10 ydb-tests-functional-kqp-kqp_query_session/KqpQuerySession::NoLocalAttach ydb-core-blobstorage-ut_blobstorage/VDiskAssimilation::Test -ydb-core-tx-columnshard-ut_schema/TColumnShardTestSchema::ForgetAfterFail -ydb-core-tx-columnshard-ut_schema/TColumnShardTestSchema::RebootForgetAfterFail ydb-library-yql-sql-pg-ut/PgSqlParsingAutoparam::AutoParamValues_DifferentTypes ydb-core-blobstorage-ut_blobstorage/[6/10]* ydb/core/blobstorage/ut_blobstorage/Defragmentation::DoesItWork diff --git a/.github/config/muted_ya.txt b/.github/config/muted_ya.txt index 46a896df34a4..1e7f35682e24 100644 --- a/.github/config/muted_ya.txt +++ b/.github/config/muted_ya.txt @@ -19,7 +19,13 @@ ydb/core/kafka_proxy/ut KafkaProtocol.CreatePartitionsScenario ydb/core/kafka_proxy/ut KafkaProtocol.ProduceScenario ydb/core/kqp/provider/ut KikimrIcGateway.TestLoadBasicSecretValueFromExternalDataSourceMetadata ydb/core/kqp/ut/federated_query/generic * -ydb/core/kqp/ut/olap * +ydb/core/kqp/ut/olap KqpOlapAggregations.Json_Exists +ydb/core/kqp/ut/olap KqpOlapIndexes.Indexes +ydb/core/kqp/ut/olap KqpOlapIndexes.IndexesActualization +ydb/core/kqp/ut/olap KqpOlapBlobsSharing.* +ydb/core/kqp/ut/olap KqpOlap.ScanQueryOltpAndOlap +ydb/core/kqp/ut/olap KqpOlapStatistics.StatsUsageWithTTL +ydb/core/kqp/ut/olap KqpOlap.YqlScriptOltpAndOlap ydb/core/kqp/ut/pg KqpPg.CreateIndex ydb/core/kqp/ut/query KqpLimits.QueryReplySize ydb/core/kqp/ut/query KqpQuery.QueryTimeout @@ -32,9 +38,6 @@ ydb/core/kqp/ut/service KqpQueryService.QueryOnClosedSession ydb/core/kqp/ut/service KqpQueryServiceScripts.ForgetScriptExecutionRace ydb/core/kqp/ut/service KqpService.CloseSessionsWithLoad ydb/core/kqp/ut/service [38/50]* -ydb/core/tx/columnshard/ut_schema TColumnShardTestSchema.ForgetAfterFail -ydb/core/tx/columnshard/ut_schema TColumnShardTestSchema.RebootForgetAfterFail -ydb/core/tx/columnshard/engines/ut * ydb/core/tx/coordinator/ut Coordinator.RestoreTenantConfiguration ydb/core/tx/datashard/ut_change_exchange Cdc.InitialScanDebezium ydb/core/tx/replication/ydb_proxy/ut YdbProxyTests.ReadTopic diff --git a/ydb/core/base/blobstorage.h b/ydb/core/base/blobstorage.h index e7bfa37b25b7..f4037f27ca2c 100644 --- a/ydb/core/base/blobstorage.h +++ b/ydb/core/base/blobstorage.h @@ -981,14 +981,16 @@ struct TEvBlobStorage { bool WrittenBeyondBarrier = false; // was this blob written beyond the barrier? mutable NLWTrace::TOrbit Orbit; std::shared_ptr<TExecutionRelay> ExecutionRelay; + const TString StorageId; TEvPutResult(NKikimrProto::EReplyStatus status, const TLogoBlobID &id, const TStorageStatusFlags statusFlags, - ui32 groupId, float approximateFreeSpaceShare) + ui32 groupId, float approximateFreeSpaceShare, const TString& storageId = Default<TString>()) : Status(status) , Id(id) , StatusFlags(statusFlags) , GroupId(groupId) , ApproximateFreeSpaceShare(approximateFreeSpaceShare) + , StorageId(storageId) {} TString Print(bool isFull) const { diff --git a/ydb/core/formats/arrow/arrow_batch_builder.cpp b/ydb/core/formats/arrow/arrow_batch_builder.cpp index 76c19421555d..1e49120c0c7c 100644 --- a/ydb/core/formats/arrow/arrow_batch_builder.cpp +++ b/ydb/core/formats/arrow/arrow_batch_builder.cpp @@ -1,7 +1,7 @@ #include "arrow_batch_builder.h" +#include "switch/switch_type.h" #include <contrib/libs/apache/arrow/cpp/src/arrow/io/memory.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/ipc/reader.h> - namespace NKikimr::NArrow { namespace { @@ -195,12 +195,18 @@ TArrowBatchBuilder::TArrowBatchBuilder(arrow::Compression::type codec, const std WriteOptions.use_threads = false; } -bool TArrowBatchBuilder::Start(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& ydbColumns) { +arrow::Status TArrowBatchBuilder::Start(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& ydbColumns) { YdbSchema = ydbColumns; auto schema = MakeArrowSchema(ydbColumns, NotNullColumns); - auto status = arrow::RecordBatchBuilder::Make(schema, arrow::default_memory_pool(), RowsToReserve, &BatchBuilder); + if (!schema.ok()) { + return arrow::Status::FromArgs(schema.status().code(), "Cannot make arrow schema: ", schema.status().ToString()); + } + auto status = arrow::RecordBatchBuilder::Make(*schema, arrow::default_memory_pool(), RowsToReserve, &BatchBuilder); NumRows = NumBytes = 0; - return status.ok(); + if (!status.ok()) { + return arrow::Status::FromArgs(schema.status().code(), "Cannot make arrow builder: ", status.ToString()); + } + return arrow::Status::OK(); } void TArrowBatchBuilder::AppendCell(const TCell& cell, ui32 colNum) { @@ -259,7 +265,7 @@ void TArrowBatchBuilder::ReserveData(ui32 columnNo, size_t size) { Y_ABORT_UNLESS(columnNo < YdbSchema.size()); auto type = YdbSchema[columnNo].second; - SwitchYqlTypeToArrowType(type, [&](const auto& type) { + Y_ABORT_UNLESS(SwitchYqlTypeToArrowType(type, [&](const auto& type) { using TWrap = std::decay_t<decltype(type)>; using TBuilder = typename arrow::TypeTraits<typename TWrap::T>::BuilderType; @@ -270,7 +276,7 @@ void TArrowBatchBuilder::ReserveData(ui32 columnNo, size_t size) { Y_ABORT_UNLESS(status.ok()); } return true; - }); + })); } std::shared_ptr<arrow::RecordBatch> TArrowBatchBuilder::FlushBatch(bool reinitialize) { diff --git a/ydb/core/formats/arrow/arrow_batch_builder.h b/ydb/core/formats/arrow/arrow_batch_builder.h index 2d4e1f3ed6b0..cacf7fd7882f 100644 --- a/ydb/core/formats/arrow/arrow_batch_builder.h +++ b/ydb/core/formats/arrow/arrow_batch_builder.h @@ -2,6 +2,7 @@ #include "arrow_helpers.h" #include <ydb/core/formats/factory.h> #include <ydb/core/scheme/scheme_tablecell.h> +#include <ydb/library/conclusion/status.h> namespace NKikimr::NArrow { @@ -155,8 +156,11 @@ class TArrowBatchBuilder : public NKikimr::IBlockBuilder { ui64 maxRowsInBlock, ui64 maxBytesInBlock, TString& err) override { Y_UNUSED(maxRowsInBlock); Y_UNUSED(maxBytesInBlock); - Y_UNUSED(err); - return Start(columns); + const auto result = Start(columns); + if (!result.ok()) { + err = result.ToString(); + } + return result.ok(); } void AddRow(const NKikimr::TDbTupleRef& key, const NKikimr::TDbTupleRef& value) override; @@ -175,7 +179,7 @@ class TArrowBatchBuilder : public NKikimr::IBlockBuilder { return NumBytes; } - bool Start(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns); + arrow::Status Start(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns); std::shared_ptr<arrow::RecordBatch> FlushBatch(bool reinitialize); std::shared_ptr<arrow::RecordBatch> GetBatch() const { return Batch; } diff --git a/ydb/core/formats/arrow/arrow_filter.cpp b/ydb/core/formats/arrow/arrow_filter.cpp index 162bbb37b540..58cd7116baed 100644 --- a/ydb/core/formats/arrow/arrow_filter.cpp +++ b/ydb/core/formats/arrow/arrow_filter.cpp @@ -1,5 +1,8 @@ #include "arrow_filter.h" #include "switch_type.h" +#include "common/container.h" +#include "common/adapter.h" + #include <contrib/libs/apache/arrow/cpp/src/arrow/array/builder_primitive.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/chunked_array.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/compute/api_vector.h> @@ -307,7 +310,7 @@ NKikimr::NArrow::TColumnFilter TColumnFilter::MakePredicateFilter(const arrow::D return NArrow::TColumnFilter(std::move(bits)); } -template <arrow::Datum::Kind kindExpected, class TData> +template <class TData> bool ApplyImpl(const TColumnFilter& filter, std::shared_ptr<TData>& batch, const std::optional<ui32> startPos, const std::optional<ui32> count) { if (!batch || !batch->num_rows()) { return false; @@ -322,33 +325,26 @@ bool ApplyImpl(const TColumnFilter& filter, std::shared_ptr<TData>& batch, const } } if (filter.IsTotalDenyFilter()) { - batch = batch->Slice(0, 0); + batch = NAdapter::TDataBuilderPolicy<TData>::GetEmptySame(batch); return true; } if (filter.IsTotalAllowFilter()) { return true; } - auto res = arrow::compute::Filter(batch, filter.BuildArrowFilter(batch->num_rows(), startPos, count)); - Y_VERIFY_S(res.ok(), res.status().message()); - Y_ABORT_UNLESS((*res).kind() == kindExpected); - if constexpr (kindExpected == arrow::Datum::TABLE) { - batch = (*res).table(); - return batch->num_rows(); - } - if constexpr (kindExpected == arrow::Datum::RECORD_BATCH) { - batch = (*res).record_batch(); - return batch->num_rows(); - } - AFL_VERIFY(false); - return false; + batch = NAdapter::TDataBuilderPolicy<TData>::ApplyArrowFilter(batch, filter.BuildArrowFilter(batch->num_rows(), startPos, count)); + return batch->num_rows(); +} + +bool TColumnFilter::Apply(std::shared_ptr<TGeneralContainer>& batch, const std::optional<ui32> startPos, const std::optional<ui32> count) const { + return ApplyImpl(*this, batch, startPos, count); } bool TColumnFilter::Apply(std::shared_ptr<arrow::Table>& batch, const std::optional<ui32> startPos, const std::optional<ui32> count) const { - return ApplyImpl<arrow::Datum::TABLE>(*this, batch, startPos, count); + return ApplyImpl(*this, batch, startPos, count); } bool TColumnFilter::Apply(std::shared_ptr<arrow::RecordBatch>& batch, const std::optional<ui32> startPos, const std::optional<ui32> count) const { - return ApplyImpl<arrow::Datum::RECORD_BATCH>(*this, batch, startPos, count); + return ApplyImpl(*this, batch, startPos, count); } void TColumnFilter::Apply(const ui32 expectedRecordsCount, std::vector<arrow::Datum*>& datums) const { diff --git a/ydb/core/formats/arrow/arrow_filter.h b/ydb/core/formats/arrow/arrow_filter.h index 80e449ef05c1..a83b37a78333 100644 --- a/ydb/core/formats/arrow/arrow_filter.h +++ b/ydb/core/formats/arrow/arrow_filter.h @@ -8,6 +8,8 @@ namespace NKikimr::NArrow { +class TGeneralContainer; + enum class ECompareType { LESS = 1, LESS_OR_EQUAL, @@ -62,6 +64,10 @@ class TColumnFilter { return Filter.capacity() * sizeof(ui32) + Count * sizeof(bool); } + static ui64 GetPredictedMemorySize(const ui32 recordsCount) { + return 2 /* capacity */ * recordsCount * (sizeof(ui32) + sizeof(bool)); + } + class TIterator { private: i64 InternalPosition = 0; @@ -172,6 +178,7 @@ class TColumnFilter { // It makes a filter using composite predicate static TColumnFilter MakePredicateFilter(const arrow::Datum& datum, const arrow::Datum& border, ECompareType compareType); + bool Apply(std::shared_ptr<TGeneralContainer>& batch, const std::optional<ui32> startPos = {}, const std::optional<ui32> count = {}) const; bool Apply(std::shared_ptr<arrow::Table>& batch, const std::optional<ui32> startPos = {}, const std::optional<ui32> count = {}) const; bool Apply(std::shared_ptr<arrow::RecordBatch>& batch, const std::optional<ui32> startPos = {}, const std::optional<ui32> count = {}) const; void Apply(const ui32 expectedRecordsCount, std::vector<arrow::Datum*>& datums) const; diff --git a/ydb/core/formats/arrow/arrow_helpers.cpp b/ydb/core/formats/arrow/arrow_helpers.cpp index a49cf23e686e..b71c9a342a81 100644 --- a/ydb/core/formats/arrow/arrow_helpers.cpp +++ b/ydb/core/formats/arrow/arrow_helpers.cpp @@ -1,9 +1,8 @@ #include "arrow_helpers.h" #include "switch_type.h" -#include "one_batch_input_stream.h" #include "common/validation.h" -#include "merging_sorted_input_stream.h" #include "permutations.h" +#include "common/adapter.h" #include "serializer/native.h" #include "serializer/abstract.h" #include "serializer/stream.h" @@ -48,7 +47,7 @@ std::shared_ptr<arrow::DataType> CreateEmptyArrowImpl<arrow::DurationType>() { return arrow::duration(arrow::TimeUnit::TimeUnit::MICRO); } -std::shared_ptr<arrow::DataType> GetArrowType(NScheme::TTypeInfo typeId) { +arrow::Result<std::shared_ptr<arrow::DataType>> GetArrowType(NScheme::TTypeInfo typeId) { std::shared_ptr<arrow::DataType> result; bool success = SwitchYqlTypeToArrowType(typeId, [&]<typename TType>(TTypeWrapper<TType> typeHolder) { Y_UNUSED(typeHolder); @@ -58,10 +57,11 @@ std::shared_ptr<arrow::DataType> GetArrowType(NScheme::TTypeInfo typeId) { if (success) { return result; } - return std::make_shared<arrow::NullType>(); + + return arrow::Status::TypeError("unsupported type ", NKikimr::NScheme::TypeName(typeId.GetTypeId())); } -std::shared_ptr<arrow::DataType> GetCSVArrowType(NScheme::TTypeInfo typeId) { +arrow::Result<std::shared_ptr<arrow::DataType>> GetCSVArrowType(NScheme::TTypeInfo typeId) { std::shared_ptr<arrow::DataType> result; switch (typeId.GetTypeId()) { case NScheme::NTypeIds::Datetime: @@ -75,18 +75,31 @@ std::shared_ptr<arrow::DataType> GetCSVArrowType(NScheme::TTypeInfo typeId) { } } -std::vector<std::shared_ptr<arrow::Field>> MakeArrowFields(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns, const std::set<std::string>& notNullColumns) { +arrow::Result<arrow::FieldVector> MakeArrowFields(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns, const std::set<std::string>& notNullColumns) { std::vector<std::shared_ptr<arrow::Field>> fields; fields.reserve(columns.size()); + TVector<TString> errors; for (auto& [name, ydbType] : columns) { std::string colName(name.data(), name.size()); - fields.emplace_back(std::make_shared<arrow::Field>(colName, GetArrowType(ydbType), !notNullColumns.contains(colName))); + auto arrowType = GetArrowType(ydbType); + if (arrowType.ok()) { + fields.emplace_back(std::make_shared<arrow::Field>(colName, arrowType.ValueUnsafe(), !notNullColumns.contains(colName))); + } else { + errors.emplace_back(colName + " error: " + arrowType.status().ToString()); + } + } + if (errors.empty()) { + return fields; } - return fields; + return arrow::Status::TypeError(JoinSeq(", ", errors)); } -std::shared_ptr<arrow::Schema> MakeArrowSchema(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& ydbColumns, const std::set<std::string>& notNullColumns) { - return std::make_shared<arrow::Schema>(MakeArrowFields(ydbColumns, notNullColumns)); +arrow::Result<std::shared_ptr<arrow::Schema>> MakeArrowSchema(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& ydbColumns, const std::set<std::string>& notNullColumns) { + const auto fields = MakeArrowFields(ydbColumns, notNullColumns); + if (fields.ok()) { + return std::make_shared<arrow::Schema>(fields.ValueUnsafe()); + } + return fields.status(); } TString SerializeSchema(const arrow::Schema& schema) { @@ -136,30 +149,31 @@ std::shared_ptr<arrow::RecordBatch> MakeEmptyBatch(const std::shared_ptr<arrow:: columns.emplace_back(result); Y_ABORT_UNLESS(result); } - return arrow::RecordBatch::Make(schema, 0, columns); + return arrow::RecordBatch::Make(schema, rowsCount, columns); } namespace { - template <class TStringType> - std::shared_ptr<arrow::RecordBatch> ExtractColumnsImpl(const std::shared_ptr<arrow::RecordBatch>& srcBatch, - const std::vector<TStringType>& columnNames) { - std::vector<std::shared_ptr<arrow::Field>> fields; - fields.reserve(columnNames.size()); - std::vector<std::shared_ptr<arrow::Array>> columns; - columns.reserve(columnNames.size()); - - auto srcSchema = srcBatch->schema(); - for (auto& name : columnNames) { - int pos = srcSchema->GetFieldIndex(name); - if (pos < 0) { - return {}; - } - fields.push_back(srcSchema->field(pos)); - columns.push_back(srcBatch->column(pos)); - } - return arrow::RecordBatch::Make(std::make_shared<arrow::Schema>(std::move(fields)), srcBatch->num_rows(), std::move(columns)); +template <class TStringType, class TDataContainer> +std::shared_ptr<TDataContainer> ExtractColumnsImpl(const std::shared_ptr<TDataContainer>& srcBatch, + const std::vector<TStringType>& columnNames) { + std::vector<std::shared_ptr<arrow::Field>> fields; + fields.reserve(columnNames.size()); + std::vector<std::shared_ptr<typename NAdapter::TDataBuilderPolicy<TDataContainer>::TColumn>> columns; + columns.reserve(columnNames.size()); + + auto srcSchema = srcBatch->schema(); + for (auto& name : columnNames) { + int pos = srcSchema->GetFieldIndex(name); + if (pos < 0) { + return {}; + } + fields.push_back(srcSchema->field(pos)); + columns.push_back(srcBatch->column(pos)); } + + return NAdapter::TDataBuilderPolicy<TDataContainer>::Build(std::move(fields), std::move(columns), srcBatch->num_rows()); +} } std::shared_ptr<arrow::RecordBatch> ExtractColumns(const std::shared_ptr<arrow::RecordBatch>& srcBatch, @@ -172,7 +186,19 @@ std::shared_ptr<arrow::RecordBatch> ExtractColumns(const std::shared_ptr<arrow:: return ExtractColumnsImpl(srcBatch, columnNames); } -std::shared_ptr<arrow::RecordBatch> ExtractColumnsValidate(const std::shared_ptr<arrow::RecordBatch>& srcBatch, +std::shared_ptr<arrow::Table> ExtractColumns(const std::shared_ptr<arrow::Table>& srcBatch, + const std::vector<TString>& columnNames) { + return ExtractColumnsImpl(srcBatch, columnNames); +} + +std::shared_ptr<arrow::Table> ExtractColumns(const std::shared_ptr<arrow::Table>& srcBatch, + const std::vector<std::string>& columnNames) { + return ExtractColumnsImpl(srcBatch, columnNames); +} + +namespace { +template <class TDataContainer> +std::shared_ptr<TDataContainer> ExtractColumnsValidateImpl(const std::shared_ptr<TDataContainer>& srcBatch, const std::vector<TString>& columnNames) { if (!srcBatch) { return srcBatch; @@ -182,7 +208,7 @@ std::shared_ptr<arrow::RecordBatch> ExtractColumnsValidate(const std::shared_ptr } std::vector<std::shared_ptr<arrow::Field>> fields; fields.reserve(columnNames.size()); - std::vector<std::shared_ptr<arrow::Array>> columns; + std::vector<std::shared_ptr<typename NAdapter::TDataBuilderPolicy<TDataContainer>::TColumn>> columns; columns.reserve(columnNames.size()); auto srcSchema = srcBatch->schema(); @@ -193,7 +219,18 @@ std::shared_ptr<arrow::RecordBatch> ExtractColumnsValidate(const std::shared_ptr columns.push_back(srcBatch->column(pos)); } - return arrow::RecordBatch::Make(std::make_shared<arrow::Schema>(std::move(fields)), srcBatch->num_rows(), std::move(columns)); + return NAdapter::TDataBuilderPolicy<TDataContainer>::Build(std::move(fields), std::move(columns), srcBatch->num_rows()); +} +} + +std::shared_ptr<arrow::RecordBatch> ExtractColumnsValidate(const std::shared_ptr<arrow::RecordBatch>& srcBatch, + const std::vector<TString>& columnNames) { + return ExtractColumnsValidateImpl(srcBatch, columnNames); +} + +std::shared_ptr<arrow::Table> ExtractColumnsValidate(const std::shared_ptr<arrow::Table>& srcBatch, + const std::vector<TString>& columnNames) { + return ExtractColumnsValidateImpl(srcBatch, columnNames); } std::shared_ptr<arrow::RecordBatch> ExtractColumns(const std::shared_ptr<arrow::RecordBatch>& srcBatch, @@ -259,30 +296,18 @@ std::shared_ptr<arrow::RecordBatch> ExtractExistedColumns(const std::shared_ptr< return arrow::RecordBatch::Make(std::make_shared<arrow::Schema>(std::move(fields)), srcBatch->num_rows(), std::move(columns)); } -std::shared_ptr<arrow::Table> CombineInTable(const std::vector<std::shared_ptr<arrow::RecordBatch>>& batches) { - auto res = arrow::Table::FromRecordBatches(batches); - if (!res.ok()) { - return nullptr; - } - - res = (*res)->CombineChunks(); - if (!res.ok()) { - return nullptr; - } - - return res.ValueOrDie(); -} - std::shared_ptr<arrow::RecordBatch> CombineBatches(const std::vector<std::shared_ptr<arrow::RecordBatch>>& batches) { if (batches.empty()) { return nullptr; } - auto table = CombineInTable(batches); - return table ? ToBatch(table) : nullptr; + auto table = TStatusValidator::GetValid(arrow::Table::FromRecordBatches(batches)); + return table ? ToBatch(table, true) : nullptr; } std::shared_ptr<arrow::RecordBatch> ToBatch(const std::shared_ptr<arrow::Table>& tableExt, const bool combine) { - Y_ABORT_UNLESS(tableExt); + if (!tableExt) { + return nullptr; + } std::shared_ptr<arrow::Table> table; if (combine) { auto res = tableExt->CombineChunks(); @@ -294,74 +319,13 @@ std::shared_ptr<arrow::RecordBatch> ToBatch(const std::shared_ptr<arrow::Table>& std::vector<std::shared_ptr<arrow::Array>> columns; columns.reserve(table->num_columns()); for (auto& col : table->columns()) { - Y_ABORT_UNLESS(col->num_chunks() == 1); + AFL_VERIFY(col->num_chunks() == 1)("size", col->num_chunks())("size_bytes", GetTableDataSize(tableExt)) + ("schema", tableExt->schema()->ToString())("size_new", GetTableDataSize(table)); columns.push_back(col->chunk(0)); } return arrow::RecordBatch::Make(table->schema(), table->num_rows(), columns); } -std::shared_ptr<arrow::RecordBatch> CombineSortedBatches(const std::vector<std::shared_ptr<arrow::RecordBatch>>& batches, - const std::shared_ptr<TSortDescription>& description) { - std::vector<NArrow::IInputStream::TPtr> streams; - for (auto& batch : batches) { - streams.push_back(std::make_shared<NArrow::TOneBatchInputStream>(batch)); - } - - auto mergeStream = std::make_shared<NArrow::TMergingSortedInputStream>(streams, description, Max<ui64>()); - std::shared_ptr<arrow::RecordBatch> batch = mergeStream->Read(); - Y_ABORT_UNLESS(!mergeStream->Read()); - return batch; -} - -std::vector<std::shared_ptr<arrow::RecordBatch>> MergeSortedBatches(const std::vector<std::shared_ptr<arrow::RecordBatch>>& batches, - const std::shared_ptr<TSortDescription>& description, - size_t maxBatchRows) { - Y_ABORT_UNLESS(maxBatchRows); - ui64 numRows = 0; - std::vector<NArrow::IInputStream::TPtr> streams; - streams.reserve(batches.size()); - for (auto& batch : batches) { - if (batch->num_rows()) { - numRows += batch->num_rows(); - streams.push_back(std::make_shared<NArrow::TOneBatchInputStream>(batch)); - } - } - - std::vector<std::shared_ptr<arrow::RecordBatch>> out; - out.reserve(numRows / maxBatchRows + 1); - - auto mergeStream = std::make_shared<NArrow::TMergingSortedInputStream>(streams, description, maxBatchRows); - while (std::shared_ptr<arrow::RecordBatch> batch = mergeStream->Read()) { - Y_ABORT_UNLESS(batch->num_rows()); - out.push_back(batch); - } - return out; -} - -std::vector<std::shared_ptr<arrow::RecordBatch>> SliceSortedBatches(const std::vector<std::shared_ptr<arrow::RecordBatch>>& batches, - const std::shared_ptr<TSortDescription>& description, - size_t maxBatchRows) { - Y_ABORT_UNLESS(!description->Reverse); - - std::vector<NArrow::IInputStream::TPtr> streams; - streams.reserve(batches.size()); - for (auto& batch : batches) { - if (batch->num_rows()) { - streams.push_back(std::make_shared<NArrow::TOneBatchInputStream>(batch)); - } - } - - std::vector<std::shared_ptr<arrow::RecordBatch>> out; - out.reserve(streams.size()); - - auto dedupStream = std::make_shared<NArrow::TMergingSortedInputStream>(streams, description, maxBatchRows, true); - while (std::shared_ptr<arrow::RecordBatch> batch = dedupStream->Read()) { - Y_ABORT_UNLESS(batch->num_rows()); - out.push_back(batch); - } - return out; -} - // Check if the permutation doesn't reorder anything bool IsTrivial(const arrow::UInt64Array& permutation, const ui64 originalLength) { if ((ui64)permutation.length() != originalLength) { @@ -1008,4 +972,11 @@ std::vector<std::shared_ptr<arrow::RecordBatch>> SliceToRecordBatches(const std: return result; } +std::shared_ptr<arrow::Table> ToTable(const std::shared_ptr<arrow::RecordBatch>& batch) { + if (!batch) { + return nullptr; + } + return TStatusValidator::GetValid(arrow::Table::FromRecordBatches(batch->schema(), {batch})); +} + } diff --git a/ydb/core/formats/arrow/arrow_helpers.h b/ydb/core/formats/arrow/arrow_helpers.h index efa064ee71a3..f4871e126e04 100644 --- a/ydb/core/formats/arrow/arrow_helpers.h +++ b/ydb/core/formats/arrow/arrow_helpers.h @@ -13,8 +13,8 @@ namespace NKikimr::NArrow { using TArrayVec = std::vector<std::shared_ptr<arrow::Array>>; -std::shared_ptr<arrow::DataType> GetArrowType(NScheme::TTypeInfo typeInfo); -std::shared_ptr<arrow::DataType> GetCSVArrowType(NScheme::TTypeInfo typeId); +arrow::Result<std::shared_ptr<arrow::DataType>> GetArrowType(NScheme::TTypeInfo typeInfo); +arrow::Result<std::shared_ptr<arrow::DataType>> GetCSVArrowType(NScheme::TTypeInfo typeId); template <typename T> inline bool ArrayEqualValue(const std::shared_ptr<arrow::Array>& x, const std::shared_ptr<arrow::Array>& y) { @@ -42,8 +42,8 @@ inline bool ArrayEqualView(const std::shared_ptr<arrow::Array>& x, const std::sh struct TSortDescription; -std::vector<std::shared_ptr<arrow::Field>> MakeArrowFields(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns, const std::set<std::string>& notNullColumns = {}); -std::shared_ptr<arrow::Schema> MakeArrowSchema(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns, const std::set<std::string>& notNullColumns = {}); +arrow::Result<arrow::FieldVector> MakeArrowFields(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns, const std::set<std::string>& notNullColumns = {}); +arrow::Result<std::shared_ptr<arrow::Schema>> MakeArrowSchema(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns, const std::set<std::string>& notNullColumns = {}); TString SerializeSchema(const arrow::Schema& schema); std::shared_ptr<arrow::Schema> DeserializeSchema(const TString& str); @@ -54,13 +54,20 @@ TString SerializeBatchNoCompression(const std::shared_ptr<arrow::RecordBatch>& b std::shared_ptr<arrow::RecordBatch> DeserializeBatch(const TString& blob, const std::shared_ptr<arrow::Schema>& schema); std::shared_ptr<arrow::RecordBatch> MakeEmptyBatch(const std::shared_ptr<arrow::Schema>& schema, const ui32 rowsCount = 0); +std::shared_ptr<arrow::Table> ToTable(const std::shared_ptr<arrow::RecordBatch>& batch); std::shared_ptr<arrow::RecordBatch> ExtractColumns(const std::shared_ptr<arrow::RecordBatch>& srcBatch, - const std::vector<TString>& columnNames); + const std::vector<TString>& columnNames); std::shared_ptr<arrow::RecordBatch> ExtractColumns(const std::shared_ptr<arrow::RecordBatch>& srcBatch, - const std::vector<std::string>& columnNames); + const std::vector<std::string>& columnNames); +std::shared_ptr<arrow::Table> ExtractColumns(const std::shared_ptr<arrow::Table>& srcBatch, + const std::vector<TString>& columnNames); +std::shared_ptr<arrow::Table> ExtractColumns(const std::shared_ptr<arrow::Table>& srcBatch, + const std::vector<std::string>& columnNames); +std::shared_ptr<arrow::Table> ExtractColumnsValidate(const std::shared_ptr<arrow::Table>& srcBatch, + const std::vector<TString>& columnNames); std::shared_ptr<arrow::RecordBatch> ExtractColumnsValidate(const std::shared_ptr<arrow::RecordBatch>& srcBatch, - const std::vector<TString>& columnNames); + const std::vector<TString>& columnNames); std::shared_ptr<arrow::RecordBatch> ExtractColumns(const std::shared_ptr<arrow::RecordBatch>& srcBatch, const std::shared_ptr<arrow::Schema>& dstSchema, bool addNotExisted = false); @@ -72,18 +79,9 @@ inline std::shared_ptr<arrow::RecordBatch> ExtractExistedColumns(const std::shar return ExtractExistedColumns(srcBatch, dstSchema->fields()); } -std::shared_ptr<arrow::Table> CombineInTable(const std::vector<std::shared_ptr<arrow::RecordBatch>>& batches); -std::shared_ptr<arrow::RecordBatch> ToBatch(const std::shared_ptr<arrow::Table>& combinedTable, const bool combine = false); +std::shared_ptr<arrow::RecordBatch> ToBatch(const std::shared_ptr<arrow::Table>& combinedTable, const bool combine); std::shared_ptr<arrow::RecordBatch> CombineBatches(const std::vector<std::shared_ptr<arrow::RecordBatch>>& batches); -std::shared_ptr<arrow::RecordBatch> CombineSortedBatches(const std::vector<std::shared_ptr<arrow::RecordBatch>>& batches, - const std::shared_ptr<TSortDescription>& description); std::shared_ptr<arrow::RecordBatch> MergeColumns(const std::vector<std::shared_ptr<arrow::RecordBatch>>& rb); -std::vector<std::shared_ptr<arrow::RecordBatch>> MergeSortedBatches(const std::vector<std::shared_ptr<arrow::RecordBatch>>& batches, - const std::shared_ptr<TSortDescription>& description, - size_t maxBatchRows); -std::vector<std::shared_ptr<arrow::RecordBatch>> SliceSortedBatches(const std::vector<std::shared_ptr<arrow::RecordBatch>>& batches, - const std::shared_ptr<TSortDescription>& description, - size_t maxBatchRows = 0); std::vector<std::shared_ptr<arrow::RecordBatch>> ShardingSplit(const std::shared_ptr<arrow::RecordBatch>& batch, const std::vector<ui32>& sharding, ui32 numShards); @@ -103,8 +101,8 @@ bool MergeBatchColumns(const std::vector<std::shared_ptr<arrow::Table>>& batches std::shared_ptr<arrow::RecordBatch> SortBatch(const std::shared_ptr<arrow::RecordBatch>& batch, const std::shared_ptr<arrow::Schema>& sortingKey, const bool andUnique); bool IsSorted(const std::shared_ptr<arrow::RecordBatch>& batch, - const std::shared_ptr<arrow::Schema>& sortingKey, - bool desc = false); + const std::shared_ptr<arrow::Schema>& sortingKey, + bool desc = false); bool IsSortedAndUnique(const std::shared_ptr<arrow::RecordBatch>& batch, const std::shared_ptr<arrow::Schema>& sortingKey, bool desc = false); diff --git a/ydb/core/formats/arrow/common/accessor.cpp b/ydb/core/formats/arrow/common/accessor.cpp new file mode 100644 index 000000000000..450c3f40cf4c --- /dev/null +++ b/ydb/core/formats/arrow/common/accessor.cpp @@ -0,0 +1,99 @@ +#include "accessor.h" +#include <ydb/core/formats/arrow/switch/compare.h> +#include <ydb/core/formats/arrow/switch/switch_type.h> +#include <ydb/library/actors/core/log.h> +#include <ydb/core/formats/arrow/permutations.h> +#include <ydb/core/formats/arrow/arrow_helpers.h> + +namespace NKikimr::NArrow::NAccessor { + +void IChunkedArray::TReader::AppendPositionTo(arrow::ArrayBuilder& builder, const ui64 position, ui64* recordSize) const { + auto address = GetReadChunk(position); + AFL_VERIFY(NArrow::Append(builder, *address.GetArray(), address.GetPosition(), recordSize)); +} + +std::shared_ptr<arrow::Array> IChunkedArray::TReader::CopyRecord(const ui64 recordIndex) const { + auto address = GetReadChunk(recordIndex); + return NArrow::CopyRecords(address.GetArray(), {address.GetPosition()}); +} + +std::shared_ptr<arrow::ChunkedArray> IChunkedArray::TReader::Slice(const ui32 offset, const ui32 count) const { + AFL_VERIFY(offset + count <= (ui64)GetRecordsCount())("offset", offset)("count", count)("length", GetRecordsCount()); + ui32 currentOffset = offset; + ui32 countLeast = count; + std::vector<std::shared_ptr<arrow::Array>> chunks; + while (countLeast) { + auto address = GetReadChunk(currentOffset); + if (address.GetPosition() + countLeast <= (ui64)address.GetArray()->length()) { + chunks.emplace_back(address.GetArray()->Slice(address.GetPosition(), countLeast)); + break; + } else { + const ui32 deltaCount = address.GetArray()->length() - address.GetPosition(); + chunks.emplace_back(address.GetArray()->Slice(address.GetPosition(), deltaCount)); + AFL_VERIFY(countLeast >= deltaCount); + countLeast -= deltaCount; + currentOffset += deltaCount; + } + } + return std::make_shared<arrow::ChunkedArray>(chunks, ChunkedArray->DataType); +} + +TString IChunkedArray::TReader::DebugString(const ui32 position) const { + auto address = GetReadChunk(position); + return NArrow::DebugString(address.GetArray(), address.GetPosition()); +} + +std::partial_ordering IChunkedArray::TReader::CompareColumns(const std::vector<TReader>& l, const ui64 lPosition, const std::vector<TReader>& r, const ui64 rPosition) { + AFL_VERIFY(l.size() == r.size()); + for (ui32 i = 0; i < l.size(); ++i) { + const TAddress lAddress = l[i].GetReadChunk(lPosition); + const TAddress rAddress = r[i].GetReadChunk(rPosition); + auto cmp = lAddress.Compare(rAddress); + if (std::is_neq(cmp)) { + return cmp; + } + } + return std::partial_ordering::equivalent; +} + +IChunkedArray::TAddress IChunkedArray::TReader::GetReadChunk(const ui64 position) const { + AFL_VERIFY(position < ChunkedArray->GetRecordsCount()); + if (CurrentChunkAddress && position < CurrentChunkAddress->GetStartPosition() + CurrentChunkAddress->GetArray()->length() && CurrentChunkAddress->GetStartPosition() <= position) { + } else { + CurrentChunkAddress = ChunkedArray->DoGetChunk(CurrentChunkAddress, position); + } + return IChunkedArray::TAddress(CurrentChunkAddress->GetArray(), position - CurrentChunkAddress->GetStartPosition(), CurrentChunkAddress->GetChunkIndex()); +} + +const std::partial_ordering IChunkedArray::TAddress::Compare(const TAddress& item) const { + return TComparator::TypedCompare<true>(*Array, Position, *item.Array, item.Position); +} + +namespace { +class TChunkAccessor { +private: + std::shared_ptr<arrow::ChunkedArray> ChunkedArray; +public: + TChunkAccessor(const std::shared_ptr<arrow::ChunkedArray>& chunkedArray) + : ChunkedArray(chunkedArray) + { + + } + ui64 GetChunksCount() const { + return (ui64)ChunkedArray->num_chunks(); + } + ui64 GetChunkLength(const ui32 idx) const { + return (ui64)ChunkedArray->chunk(idx)->length(); + } + std::shared_ptr<arrow::Array> GetArray(const ui32 idx) const { + return ChunkedArray->chunk(idx); + } +}; +} + +IChunkedArray::TCurrentChunkAddress TTrivialChunkedArray::DoGetChunk(const std::optional<TCurrentChunkAddress>& chunkCurrent, const ui64 position) const { + TChunkAccessor accessor(Array); + return SelectChunk(chunkCurrent, position, accessor); +} + +} diff --git a/ydb/core/formats/arrow/common/accessor.h b/ydb/core/formats/arrow/common/accessor.h new file mode 100644 index 000000000000..acd7e3a650c2 --- /dev/null +++ b/ydb/core/formats/arrow/common/accessor.h @@ -0,0 +1,199 @@ +#pragma once +#include <ydb/library/accessor/accessor.h> +#include <ydb/library/actors/core/log.h> + +#include <contrib/libs/apache/arrow/cpp/src/arrow/chunked_array.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> +#include <util/system/types.h> + +namespace NKikimr::NArrow::NAccessor { + +class IChunkedArray { +public: + enum class EType { + Undefined, + Array, + ChunkedArray, + SerializedChunkedArray + }; + + class TCurrentChunkAddress { + private: + YDB_READONLY_DEF(std::shared_ptr<arrow::Array>, Array); + YDB_READONLY(ui64, StartPosition, 0); + YDB_READONLY(ui64, ChunkIndex, 0); + public: + ui64 GetLength() const { + return Array->length(); + } + + TCurrentChunkAddress(const std::shared_ptr<arrow::Array>& arr, const ui64 pos, const ui32 chunkIdx) + : Array(arr) + , StartPosition(pos) + , ChunkIndex(chunkIdx) + { + AFL_VERIFY(arr); + AFL_VERIFY(arr->length()); + } + + TString DebugString() const { + return TStringBuilder() + << "start=" << StartPosition << ";" + << "chunk_index=" << ChunkIndex << ";" + << "length=" << Array->length() << ";"; + } + }; + + class TAddress { + private: + YDB_READONLY_DEF(std::shared_ptr<arrow::Array>, Array); + YDB_READONLY(ui64, Position, 0); + YDB_READONLY(ui64, ChunkIdx, 0); + public: + bool NextPosition() { + if (Position + 1 < (ui32)Array->length()) { + ++Position; + return true; + } + return false; + } + + TAddress(const std::shared_ptr<arrow::Array>& arr, const ui64 position, const ui64 chunkIdx) + : Array(arr) + , Position(position) + , ChunkIdx(chunkIdx) + { + + } + + const std::partial_ordering Compare(const TAddress& item) const; + }; +private: + YDB_READONLY_DEF(std::shared_ptr<arrow::DataType>, DataType); + YDB_READONLY(ui64, RecordsCount, 0); + YDB_READONLY(EType, Type, EType::Undefined); +protected: + virtual std::shared_ptr<arrow::ChunkedArray> DoGetChunkedArray() const = 0; + virtual TCurrentChunkAddress DoGetChunk(const std::optional<TCurrentChunkAddress>& chunkCurrent, const ui64 position) const = 0; + + template <class TChunkAccessor> + TCurrentChunkAddress SelectChunk(const std::optional<TCurrentChunkAddress>& chunkCurrent, const ui64 position, const TChunkAccessor& accessor) const { + if (!chunkCurrent || position >= chunkCurrent->GetStartPosition() + chunkCurrent->GetLength()) { + ui32 startIndex = 0; + ui64 idx = 0; + if (chunkCurrent) { + AFL_VERIFY(chunkCurrent->GetChunkIndex() + 1 < accessor.GetChunksCount()); + startIndex = chunkCurrent->GetChunkIndex() + 1; + idx = chunkCurrent->GetStartPosition() + chunkCurrent->GetLength(); + } + for (ui32 i = startIndex; i < accessor.GetChunksCount(); ++i) { + const ui64 nextIdx = idx + accessor.GetChunkLength(i); + if (idx <= position && position < nextIdx) { + return TCurrentChunkAddress(accessor.GetArray(i), idx, i); + } + idx = nextIdx; + } + } else if (position < chunkCurrent->GetStartPosition()) { + AFL_VERIFY(chunkCurrent->GetChunkIndex() > 0); + ui64 idx = chunkCurrent->GetStartPosition(); + for (i32 i = chunkCurrent->GetChunkIndex() - 1; i >= 0; --i) { + AFL_VERIFY(idx >= accessor.GetChunkLength(i))("idx", idx)("length", accessor.GetChunkLength(i)); + const ui64 nextIdx = idx - accessor.GetChunkLength(i); + if (nextIdx <= position && position < idx) { + return TCurrentChunkAddress(accessor.GetArray(i), nextIdx, i); + } + idx = nextIdx; + } + } + TStringBuilder sb; + ui64 recordsCountChunks = 0; + for (ui32 i = 0; i < accessor.GetChunksCount(); ++i) { + sb << accessor.GetChunkLength(i) << ","; + recordsCountChunks += accessor.GetChunkLength(i); + } + TStringBuilder chunkCurrentInfo; + if (chunkCurrent) { + chunkCurrentInfo << chunkCurrent->DebugString(); + } + AFL_VERIFY(recordsCountChunks == GetRecordsCount())("pos", position)("count", GetRecordsCount())("chunks_map", sb)("chunk_current", chunkCurrentInfo); + AFL_VERIFY(false)("pos", position)("count", GetRecordsCount())("chunks_map", sb)("chunk_current", chunkCurrentInfo); + return TCurrentChunkAddress(nullptr, 0, 0); + } + +public: + + class TReader { + private: + std::shared_ptr<IChunkedArray> ChunkedArray; + mutable std::optional<TCurrentChunkAddress> CurrentChunkAddress; + public: + TReader(const std::shared_ptr<IChunkedArray>& data) + : ChunkedArray(data) + { + AFL_VERIFY(ChunkedArray); + } + + ui64 GetRecordsCount() const { + return ChunkedArray->GetRecordsCount(); + } + + TAddress GetReadChunk(const ui64 position) const; + static std::partial_ordering CompareColumns(const std::vector<TReader>& l, const ui64 lPosition, const std::vector<TReader>& r, const ui64 rPosition); + void AppendPositionTo(arrow::ArrayBuilder& builder, const ui64 position, ui64* recordSize) const; + std::shared_ptr<arrow::Array> CopyRecord(const ui64 recordIndex) const; + std::shared_ptr<arrow::ChunkedArray> Slice(const ui32 offset, const ui32 count) const; + TString DebugString(const ui32 position) const; + }; + + std::shared_ptr<arrow::ChunkedArray> GetChunkedArray() const { + return DoGetChunkedArray(); + } + virtual ~IChunkedArray() = default; + + IChunkedArray(const ui64 recordsCount, const EType type, const std::shared_ptr<arrow::DataType>& dataType) + : DataType(dataType) + , RecordsCount(recordsCount) + , Type(type) { + + } +}; + +class TTrivialArray: public IChunkedArray { +private: + using TBase = IChunkedArray; + const std::shared_ptr<arrow::Array> Array; +protected: + virtual TCurrentChunkAddress DoGetChunk(const std::optional<TCurrentChunkAddress>& /*chunkCurrent*/, const ui64 /*position*/) const override { + return TCurrentChunkAddress(Array, 0, 0); + } + virtual std::shared_ptr<arrow::ChunkedArray> DoGetChunkedArray() const override { + return std::make_shared<arrow::ChunkedArray>(Array); + } + +public: + TTrivialArray(const std::shared_ptr<arrow::Array>& data) + : TBase(data->length(), EType::Array, data->type()) + , Array(data) { + + } +}; + +class TTrivialChunkedArray: public IChunkedArray { +private: + using TBase = IChunkedArray; + const std::shared_ptr<arrow::ChunkedArray> Array; +protected: + virtual TCurrentChunkAddress DoGetChunk(const std::optional<TCurrentChunkAddress>& chunkCurrent, const ui64 position) const override; + virtual std::shared_ptr<arrow::ChunkedArray> DoGetChunkedArray() const override { + return Array; + } + +public: + TTrivialChunkedArray(const std::shared_ptr<arrow::ChunkedArray>& data) + : TBase(data->length(), EType::ChunkedArray, data->type()) + , Array(data) { + + } +}; + +} diff --git a/ydb/core/formats/arrow/common/adapter.cpp b/ydb/core/formats/arrow/common/adapter.cpp new file mode 100644 index 000000000000..ed02117a2e13 --- /dev/null +++ b/ydb/core/formats/arrow/common/adapter.cpp @@ -0,0 +1,5 @@ +#include "adapter.h" + +namespace NKikimr::NArrow::NAdapter { + +} diff --git a/ydb/core/formats/arrow/common/adapter.h b/ydb/core/formats/arrow/common/adapter.h new file mode 100644 index 000000000000..f3552019a20d --- /dev/null +++ b/ydb/core/formats/arrow/common/adapter.h @@ -0,0 +1,96 @@ +#pragma once +#include "container.h" +#include "accessor.h" +#include "validation.h" + +#include <ydb/library/yverify_stream/yverify_stream.h> + +#include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/chunked_array.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/table.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/datum.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/compute/api_vector.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_primitive.h> + +namespace NKikimr::NArrow::NAdapter { + +template <class T> +class TDataBuilderPolicy { +public: +}; + +template <> +class TDataBuilderPolicy<arrow::RecordBatch> { +public: + using TColumn = arrow::Array; + using TAccessor = NAccessor::TTrivialArray; + + [[nodiscard]] static std::shared_ptr<arrow::RecordBatch> AddColumn(const std::shared_ptr<arrow::RecordBatch>& batch, const std::shared_ptr<arrow::Field>& field, const std::shared_ptr<arrow::Array>& extCol) { + return TStatusValidator::GetValid(batch->AddColumn(batch->num_columns(), field, extCol)); + } + + [[nodiscard]] static std::shared_ptr<arrow::RecordBatch> Build(std::vector<std::shared_ptr<arrow::Field>>&& fields, std::vector<std::shared_ptr<TColumn>>&& columns, const ui32 count) { + return arrow::RecordBatch::Make(std::make_shared<arrow::Schema>(std::move(fields)), count, std::move(columns)); + } + [[nodiscard]] static std::shared_ptr<arrow::RecordBatch> ApplyArrowFilter(const std::shared_ptr<arrow::RecordBatch>& batch, const std::shared_ptr<arrow::BooleanArray>& filter) { + auto res = arrow::compute::Filter(batch, filter); + Y_VERIFY_S(res.ok(), res.status().message()); + Y_ABORT_UNLESS(res->kind() == arrow::Datum::RECORD_BATCH); + return res->record_batch(); + } + [[nodiscard]] static std::shared_ptr<arrow::RecordBatch> GetEmptySame(const std::shared_ptr<arrow::RecordBatch>& batch) { + return batch->Slice(0, 0); + } + +}; + +template <> +class TDataBuilderPolicy<arrow::Table> { +public: + using TColumn = arrow::ChunkedArray; + using TAccessor = NAccessor::TTrivialChunkedArray; + [[nodiscard]] static std::shared_ptr<arrow::Table> Build(std::vector<std::shared_ptr<arrow::Field>>&& fields, std::vector<std::shared_ptr<TColumn>>&& columns, const ui32 count) { + return arrow::Table::Make(std::make_shared<arrow::Schema>(std::move(fields)), std::move(columns), count); + } + [[nodiscard]] static std::shared_ptr<arrow::Table> AddColumn(const std::shared_ptr<arrow::Table>& batch, const std::shared_ptr<arrow::Field>& field, const std::shared_ptr<arrow::Array>& extCol) { + return TStatusValidator::GetValid(batch->AddColumn(batch->num_columns(), field, std::make_shared<arrow::ChunkedArray>(extCol))); + } + + [[nodiscard]] static std::shared_ptr<arrow::Table> ApplyArrowFilter(const std::shared_ptr<arrow::Table>& batch, const std::shared_ptr<arrow::BooleanArray>& filter) { + auto res = arrow::compute::Filter(batch, filter); + Y_VERIFY_S(res.ok(), res.status().message()); + Y_ABORT_UNLESS(res->kind() == arrow::Datum::TABLE); + return res->table(); + } + [[nodiscard]] static std::shared_ptr<arrow::Table> GetEmptySame(const std::shared_ptr<arrow::Table>& batch) { + return batch->Slice(0, 0); + } +}; + +template <> +class TDataBuilderPolicy<TGeneralContainer> { +public: + using TColumn = NAccessor::IChunkedArray; + [[nodiscard]] static std::shared_ptr<TGeneralContainer> Build(std::vector<std::shared_ptr<arrow::Field>>&& fields, std::vector<std::shared_ptr<TColumn>>&& columns, const ui32 count) { + Y_ABORT_UNLESS(columns.size()); + for (auto&& i : columns) { + Y_ABORT_UNLESS(i->GetRecordsCount() == count); + } + return std::make_shared<TGeneralContainer>(std::make_shared<arrow::Schema>(std::move(fields)), std::move(columns)); + } + [[nodiscard]] static std::shared_ptr<TGeneralContainer> AddColumn(const std::shared_ptr<TGeneralContainer>& batch, const std::shared_ptr<arrow::Field>& field, const std::shared_ptr<arrow::Array>& extCol) { + batch->AddField(field, std::make_shared<NAccessor::TTrivialArray>(extCol)).Validate(); + return batch; + } + [[nodiscard]] static std::shared_ptr<TGeneralContainer> ApplyArrowFilter(const std::shared_ptr<TGeneralContainer>& batch, const std::shared_ptr<arrow::BooleanArray>& filter) { + auto table = batch->BuildTable(); + return std::make_shared<TGeneralContainer>(TDataBuilderPolicy<arrow::Table>::ApplyArrowFilter(table, filter)); + } + [[nodiscard]] static std::shared_ptr<TGeneralContainer> GetEmptySame(const std::shared_ptr<TGeneralContainer>& batch) { + return batch->BuildEmptySame(); + } +}; + +} diff --git a/ydb/core/formats/arrow/common/container.cpp b/ydb/core/formats/arrow/common/container.cpp new file mode 100644 index 000000000000..58ce2dfb4447 --- /dev/null +++ b/ydb/core/formats/arrow/common/container.cpp @@ -0,0 +1,116 @@ +#include "container.h" +#include <ydb/library/actors/core/log.h> +#include <ydb/core/formats/arrow/simple_arrays_cache.h> + +namespace NKikimr::NArrow { + +NKikimr::TConclusionStatus TGeneralContainer::MergeColumnsStrictly(const TGeneralContainer& container) { + if (RecordsCount != container.RecordsCount) { + return TConclusionStatus::Fail(TStringBuilder() << "inconsistency records count in additional container: " << + container.GetSchema()->ToString() << ". expected: " << RecordsCount << ", reality: " << container.GetRecordsCount()); + } + for (i32 i = 0; i < container.Schema->num_fields(); ++i) { + auto addFieldResult = AddField(container.Schema->field(i), container.Columns[i]); + if (!addFieldResult) { + return addFieldResult; + } + } + return TConclusionStatus::Success(); +} + +NKikimr::TConclusionStatus TGeneralContainer::AddField(const std::shared_ptr<arrow::Field>& f, const std::shared_ptr<NAccessor::IChunkedArray>& data) { + AFL_VERIFY(f); + AFL_VERIFY(data); + if (data->GetRecordsCount() != RecordsCount) { + return TConclusionStatus::Fail(TStringBuilder() << "inconsistency records count in new column: " << + f->name() << ". expected: " << RecordsCount << ", reality: " << data->GetRecordsCount()); + } + if (!data->GetDataType()->Equals(f->type())) { + return TConclusionStatus::Fail("schema and data type are not equals: " + data->GetDataType()->ToString() + " vs " + f->type()->ToString()); + } + if (Schema->GetFieldByName(f->name())) { + return TConclusionStatus::Fail("field name duplication: " + f->name()); + } + auto resultAdd = Schema->AddField(Schema->num_fields(), f); + if (!resultAdd.ok()) { + return TConclusionStatus::Fail("internal schema error on add field: " + resultAdd.status().ToString()); + } + Schema = *resultAdd; + Columns.emplace_back(data); + return TConclusionStatus::Success(); +} + +TGeneralContainer::TGeneralContainer(const std::shared_ptr<arrow::Schema>& schema, std::vector<std::shared_ptr<NAccessor::IChunkedArray>>&& columns) + : Schema(schema) + , Columns(std::move(columns)) +{ + AFL_VERIFY(schema); + std::optional<ui64> recordsCount; + AFL_VERIFY(Schema->num_fields() == (i32)Columns.size())("schema", Schema->num_fields())("columns", Columns.size()); + for (i32 i = 0; i < Schema->num_fields(); ++i) { + AFL_VERIFY(Columns[i]); + AFL_VERIFY(Schema->field(i)->type()->Equals(Columns[i]->GetDataType())); + if (!recordsCount) { + recordsCount = Columns[i]->GetRecordsCount(); + } else { + AFL_VERIFY(*recordsCount == Columns[i]->GetRecordsCount()) + ("event", "inconsistency_records_count")("expect", *recordsCount)("real", Columns[i]->GetRecordsCount())("field_name", Schema->field(i)->name()); + } + } + AFL_VERIFY(recordsCount); + RecordsCount = *recordsCount; +} + +TGeneralContainer::TGeneralContainer(const std::shared_ptr<arrow::Table>& table) { + AFL_VERIFY(table); + Schema = table->schema(); + RecordsCount = table->num_rows(); + for (auto&& i : table->columns()) { + if (i->num_chunks() == 1) { + Columns.emplace_back(std::make_shared<NAccessor::TTrivialArray>(i->chunk(0))); + } else { + Columns.emplace_back(std::make_shared<NAccessor::TTrivialChunkedArray>(i)); + } + } +} + +TGeneralContainer::TGeneralContainer(const std::shared_ptr<arrow::RecordBatch>& table) { + AFL_VERIFY(table); + Schema = table->schema(); + RecordsCount = table->num_rows(); + for (auto&& i : table->columns()) { + Columns.emplace_back(std::make_shared<NAccessor::TTrivialArray>(i)); + } +} + +std::shared_ptr<NKikimr::NArrow::NAccessor::IChunkedArray> TGeneralContainer::GetAccessorByNameVerified(const std::string& fieldId) const { + auto result = GetAccessorByNameOptional(fieldId); + AFL_VERIFY(result)("event", "cannot_find_accessor_in_general_container")("field_id", fieldId)("schema", Schema->ToString()); + return result; +} + +std::shared_ptr<NKikimr::NArrow::TGeneralContainer> TGeneralContainer::BuildEmptySame() const { + std::vector<std::shared_ptr<NAccessor::IChunkedArray>> columns; + for (auto&& c : Columns) { + columns.emplace_back(std::make_shared<NAccessor::TTrivialArray>(NArrow::TThreadSimpleArraysCache::GetNull(c->GetDataType(), 0))); + } + return std::make_shared<TGeneralContainer>(Schema, std::move(columns)); +} + +std::shared_ptr<arrow::Table> TGeneralContainer::BuildTable(const std::optional<std::set<std::string>>& columnNames /*= {}*/) const { + std::vector<std::shared_ptr<arrow::ChunkedArray>> columns; + std::vector<std::shared_ptr<arrow::Field>> fields; + ui32 count = 0; + for (i32 i = 0; i < Schema->num_fields(); ++i) { + if (columnNames && !columnNames->contains(Schema->field(i)->name())) { + continue; + } + ++count; + columns.emplace_back(Columns[i]->GetChunkedArray()); + fields.emplace_back(Schema->field(i)); + } + AFL_VERIFY(!columnNames || count == columnNames->size()); + return arrow::Table::Make(std::make_shared<arrow::Schema>(fields), columns, RecordsCount); +} + +} diff --git a/ydb/core/formats/arrow/common/container.h b/ydb/core/formats/arrow/common/container.h new file mode 100644 index 000000000000..638ce85fe1ec --- /dev/null +++ b/ydb/core/formats/arrow/common/container.h @@ -0,0 +1,61 @@ +#pragma once +#include "accessor.h" + +#include <ydb/library/accessor/accessor.h> +#include <ydb/library/conclusion/status.h> + +#include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/table.h> + +#include <util/system/types.h> +#include <util/string/builder.h> + +namespace NKikimr::NArrow { + +class TGeneralContainer { +private: + YDB_READONLY(ui64, RecordsCount, 0); + YDB_READONLY_DEF(std::shared_ptr<arrow::Schema>, Schema); + std::vector<std::shared_ptr<NAccessor::IChunkedArray>> Columns; +public: + TString DebugString() const { + return TStringBuilder() + << "records_count=" << RecordsCount << ";" + << "schema=" << Schema->ToString() << ";" + ; + } + + ui64 num_rows() const { + return RecordsCount; + } + + std::shared_ptr<arrow::Table> BuildTable(const std::optional<std::set<std::string>>& columnNames = {}) const; + + std::shared_ptr<TGeneralContainer> BuildEmptySame() const; + + [[nodiscard]] TConclusionStatus MergeColumnsStrictly(const TGeneralContainer& container); + [[nodiscard]] TConclusionStatus AddField(const std::shared_ptr<arrow::Field>& f, const std::shared_ptr<NAccessor::IChunkedArray>& data); + + TGeneralContainer(const std::shared_ptr<arrow::Table>& table); + + TGeneralContainer(const std::shared_ptr<arrow::RecordBatch>& table); + + TGeneralContainer(const std::shared_ptr<arrow::Schema>& schema, std::vector<std::shared_ptr<NAccessor::IChunkedArray>>&& columns); + + arrow::Status ValidateFull() const { + return arrow::Status::OK(); + } + + std::shared_ptr<NAccessor::IChunkedArray> GetAccessorByNameOptional(const std::string& fieldId) const { + for (i32 i = 0; i < Schema->num_fields(); ++i) { + if (Schema->field(i)->name() == fieldId) { + return Columns[i]; + } + } + return nullptr; + } + + std::shared_ptr<NAccessor::IChunkedArray> GetAccessorByNameVerified(const std::string& fieldId) const; +}; + +} diff --git a/ydb/core/formats/arrow/common/ya.make b/ydb/core/formats/arrow/common/ya.make index e060fae10d8e..61f742b09b76 100644 --- a/ydb/core/formats/arrow/common/ya.make +++ b/ydb/core/formats/arrow/common/ya.make @@ -2,11 +2,16 @@ LIBRARY() PEERDIR( contrib/libs/apache/arrow + ydb/core/formats/arrow/switch ydb/library/actors/core + ydb/library/conclusion ) SRCS( + container.cpp validation.cpp + adapter.cpp + accessor.cpp ) END() diff --git a/ydb/core/formats/arrow/converter.cpp b/ydb/core/formats/arrow/converter.cpp index 02610aba6335..8d4be308e3e6 100644 --- a/ydb/core/formats/arrow/converter.cpp +++ b/ydb/core/formats/arrow/converter.cpp @@ -45,20 +45,20 @@ static bool ConvertData(TCell& cell, const NScheme::TTypeInfo& colType, TMemoryP return true; } -static bool ConvertColumn(const NScheme::TTypeInfo colType, std::shared_ptr<arrow::Array>& column, std::shared_ptr<arrow::Field>& field) { +static arrow::Status ConvertColumn(const NScheme::TTypeInfo colType, std::shared_ptr<arrow::Array>& column, std::shared_ptr<arrow::Field>& field) { switch (colType.GetTypeId()) { case NScheme::NTypeIds::Decimal: - return false; + return arrow::Status::TypeError("Cannot convert Decimal type"); case NScheme::NTypeIds::JsonDocument: { const static TSet<arrow::Type::type> jsonDocArrowTypes{ arrow::Type::BINARY, arrow::Type::STRING }; if (!jsonDocArrowTypes.contains(column->type()->id())) { - return false; + return arrow::Status::TypeError("Cannot convert JsonDocument to ", column->type()->ToString()); } break; } default: if (column->type()->id() != arrow::Type::BINARY) { - return false; + return arrow::Status::TypeError("Cannot convert ", NScheme::TypeName(colType), " to ", column->type()->ToString()); } break; } @@ -73,8 +73,12 @@ static bool ConvertColumn(const NScheme::TTypeInfo colType, std::shared_ptr<arro for (i32 i = 0; i < binaryArray.length(); ++i) { auto value = binaryArray.Value(i); const auto dyNumber = NDyNumber::ParseDyNumberString(TStringBuf(value.data(), value.size())); - if (!dyNumber.Defined() || !builder.Append((*dyNumber).data(), (*dyNumber).size()).ok()) { - return false; + if (!dyNumber.Defined()) { + return arrow::Status::SerializationError("Cannot parse dy number: ", value); + } + auto appendResult = builder.Append((*dyNumber).data(), (*dyNumber).size()); + if (appendResult.ok()) { + return appendResult; } } break; @@ -88,13 +92,18 @@ static bool ConvertColumn(const NScheme::TTypeInfo colType, std::shared_ptr<arro } const TStringBuf valueBuf(value.data(), value.size()); if (NBinaryJson::IsValidBinaryJson(valueBuf)) { - if (!builder.Append(value).ok()) { - return false; + auto appendResult = builder.Append(value); + if (!appendResult.ok()) { + return appendResult; } } else { const auto binaryJson = NBinaryJson::SerializeToBinaryJson(valueBuf); - if (!binaryJson.Defined() || !builder.Append(binaryJson->Data(), binaryJson->Size()).ok()) { - return false; + if (!binaryJson.Defined()) { + return arrow::Status::SerializationError("Cannot serialize json: ", valueBuf); + } + auto appendResult = builder.Append(binaryJson->Data(), binaryJson->Size()); + if (!appendResult.ok()) { + return appendResult; } } } @@ -105,8 +114,9 @@ static bool ConvertColumn(const NScheme::TTypeInfo colType, std::shared_ptr<arro } std::shared_ptr<arrow::BinaryArray> result; - if (!builder.Finish(&result).ok()) { - return false; + auto finishResult = builder.Finish(&result); + if (!finishResult.ok()) { + return finishResult; } column = result; @@ -114,10 +124,10 @@ static bool ConvertColumn(const NScheme::TTypeInfo colType, std::shared_ptr<arro field = std::make_shared<arrow::Field>(field->name(), std::make_shared<arrow::BinaryType>()); } - return true; + return arrow::Status::OK(); } -std::shared_ptr<arrow::RecordBatch> ConvertColumns(const std::shared_ptr<arrow::RecordBatch>& batch, +arrow::Result<std::shared_ptr<arrow::RecordBatch>> ConvertColumns(const std::shared_ptr<arrow::RecordBatch>& batch, const THashMap<TString, NScheme::TTypeInfo>& columnsToConvert) { std::vector<std::shared_ptr<arrow::Array>> columns = batch->columns(); @@ -127,8 +137,9 @@ std::shared_ptr<arrow::RecordBatch> ConvertColumns(const std::shared_ptr<arrow:: auto& colName = batch->column_name(i); auto it = columnsToConvert.find(TString(colName.data(), colName.size())); if (it != columnsToConvert.end()) { - if (!ConvertColumn(it->second, columns[i], fields[i])) { - return {}; + auto convertResult = ConvertColumn(it->second, columns[i], fields[i]); + if (!convertResult.ok()) { + return arrow::Status::FromArgs(convertResult.code(), "column ", colName, ": ", convertResult.ToString()); } } } @@ -173,7 +184,7 @@ static std::shared_ptr<arrow::Array> InplaceConvertColumn(const std::shared_ptr< } } -std::shared_ptr<arrow::RecordBatch> InplaceConvertColumns(const std::shared_ptr<arrow::RecordBatch>& batch, +arrow::Result<std::shared_ptr<arrow::RecordBatch>> InplaceConvertColumns(const std::shared_ptr<arrow::RecordBatch>& batch, const THashMap<TString, NScheme::TTypeInfo>& columnsToConvert) { std::vector<std::shared_ptr<arrow::Array>> columns = batch->columns(); std::vector<std::shared_ptr<arrow::Field>> fields; diff --git a/ydb/core/formats/arrow/converter.h b/ydb/core/formats/arrow/converter.h index 47906fb48150..b998a724bd01 100644 --- a/ydb/core/formats/arrow/converter.h +++ b/ydb/core/formats/arrow/converter.h @@ -71,9 +71,9 @@ class TArrowToYdbConverter { bool Process(const arrow::RecordBatch& batch, TString& errorMessage); }; -std::shared_ptr<arrow::RecordBatch> ConvertColumns(const std::shared_ptr<arrow::RecordBatch>& batch, - const THashMap<TString, NScheme::TTypeInfo>& columnsToConvert); -std::shared_ptr<arrow::RecordBatch> InplaceConvertColumns(const std::shared_ptr<arrow::RecordBatch>& batch, - const THashMap<TString, NScheme::TTypeInfo>& columnsToConvert); +arrow::Result<std::shared_ptr<arrow::RecordBatch>> ConvertColumns(const std::shared_ptr<arrow::RecordBatch>& batch, + const THashMap<TString, NScheme::TTypeInfo>& columnsToConvert); +arrow::Result<std::shared_ptr<arrow::RecordBatch>> InplaceConvertColumns(const std::shared_ptr<arrow::RecordBatch>& batch, + const THashMap<TString, NScheme::TTypeInfo>& columnsToConvert); } // namespace NKikimr::NArrow diff --git a/ydb/core/formats/arrow/dictionary/object.h b/ydb/core/formats/arrow/dictionary/object.h index ba8b39a4f683..2fd4d6a12924 100644 --- a/ydb/core/formats/arrow/dictionary/object.h +++ b/ydb/core/formats/arrow/dictionary/object.h @@ -13,7 +13,9 @@ class TEncodingSettings { TEncodingSettings() = default; friend class TEncodingDiff; public: - + bool IsEqualTo(const TEncodingSettings& item) const { + return Enabled == item.Enabled; + } NTransformation::ITransformer::TPtr BuildEncoder() const; NTransformation::ITransformer::TPtr BuildDecoder() const; @@ -21,7 +23,7 @@ class TEncodingSettings { static TConclusion<TEncodingSettings> BuildFromProto(const NKikimrSchemeOp::TDictionaryEncodingSettings& proto) { TEncodingSettings result; auto resultParse = result.DeserializeFromProto(proto); - if (!resultParse) { + if (resultParse.IsFail()) { return resultParse; } return result; diff --git a/ydb/core/formats/arrow/hash/calcer.cpp b/ydb/core/formats/arrow/hash/calcer.cpp index b9833216dc6d..71af0492cfea 100644 --- a/ydb/core/formats/arrow/hash/calcer.cpp +++ b/ydb/core/formats/arrow/hash/calcer.cpp @@ -83,53 +83,6 @@ TXX64::TXX64(const std::vector<std::string>& columnNames, const ENoColumnPolicy Y_ABORT_UNLESS(ColumnNames.size() >= 1); } -std::shared_ptr<arrow::Array> TXX64::ExecuteToArray(const std::shared_ptr<arrow::RecordBatch>& batch, const std::string& hashFieldName) const { - std::vector<std::shared_ptr<arrow::Array>> columns = GetColumns(batch); - if (columns.empty()) { - return nullptr; - } - - auto builder = NArrow::MakeBuilder(std::make_shared<arrow::Field>(hashFieldName, arrow::TypeTraits<arrow::UInt64Type>::type_singleton())); - auto& intBuilder = static_cast<arrow::UInt64Builder&>(*builder); - TStatusValidator::Validate(intBuilder.Reserve(batch->num_rows())); - { - NXX64::TStreamStringHashCalcer hashCalcer(Seed); - for (int row = 0; row < batch->num_rows(); ++row) { - hashCalcer.Start(); - for (auto& column : columns) { - AppendField(column, row, hashCalcer); - } - intBuilder.UnsafeAppend(hashCalcer.Finish()); - } - } - return NArrow::TStatusValidator::GetValid(builder->Finish()); -} - -std::vector<std::shared_ptr<arrow::Array>> TXX64::GetColumns(const std::shared_ptr<arrow::RecordBatch>& batch) const { - std::vector<std::shared_ptr<arrow::Array>> columns; - columns.reserve(ColumnNames.size()); - for (auto& colName : ColumnNames) { - auto array = batch->GetColumnByName(colName); - if (!array) { - switch (NoColumnPolicy) { - case ENoColumnPolicy::Ignore: - break; - case ENoColumnPolicy::Verify: - AFL_VERIFY(false)("reason", "no_column")("column_name", colName); - case ENoColumnPolicy::ReturnEmpty: - return {}; - } - } else { - columns.emplace_back(array); - } - } - if (columns.empty()) { - AFL_WARN(NKikimrServices::ARROW_HELPER)("event", "cannot_read_all_columns")("reason", "fields_not_found") - ("field_names", JoinSeq(",", ColumnNames))("batch_fields", JoinSeq(",", batch->schema()->field_names())); - } - return columns; -} - ui64 TXX64::CalcHash(const std::shared_ptr<arrow::Scalar>& scalar) { NXX64::TStreamStringHashCalcer calcer(0); calcer.Start(); diff --git a/ydb/core/formats/arrow/hash/calcer.h b/ydb/core/formats/arrow/hash/calcer.h index d7f49e2ef1ee..465549e22c1a 100644 --- a/ydb/core/formats/arrow/hash/calcer.h +++ b/ydb/core/formats/arrow/hash/calcer.h @@ -1,13 +1,21 @@ #pragma once -#include <util/system/types.h> -#include <util/generic/string.h> +#include "xx_hash.h" +#include <ydb/core/formats/arrow/common/adapter.h> +#include <ydb/core/formats/arrow/common/validation.h> +#include <ydb/core/formats/arrow/reader/position.h> + +#include <ydb/library/actors/core/log.h> +#include <ydb/library/services/services.pb.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> +#include <util/system/types.h> +#include <util/string/join.h> +#include <util/generic/string.h> + #include <vector> #include <optional> -#include "xx_hash.h" namespace NKikimr::NArrow::NHash { @@ -23,7 +31,31 @@ class TXX64 { const std::vector<TString> ColumnNames; const ENoColumnPolicy NoColumnPolicy; - std::vector<std::shared_ptr<arrow::Array>> GetColumns(const std::shared_ptr<arrow::RecordBatch>& batch) const; + template <class TDataContainer> + std::vector<std::shared_ptr<typename NAdapter::TDataBuilderPolicy<TDataContainer>::TColumn>> GetColumns(const std::shared_ptr<TDataContainer>& batch) const { + std::vector<std::shared_ptr<typename NAdapter::TDataBuilderPolicy<TDataContainer>::TColumn>> columns; + columns.reserve(ColumnNames.size()); + for (auto& colName : ColumnNames) { + auto array = batch->GetColumnByName(colName); + if (!array) { + switch (NoColumnPolicy) { + case ENoColumnPolicy::Ignore: + break; + case ENoColumnPolicy::Verify: + AFL_VERIFY(false)("reason", "no_column")("column_name", colName); + case ENoColumnPolicy::ReturnEmpty: + return {}; + } + } else { + columns.emplace_back(array); + } + } + if (columns.empty()) { + AFL_WARN(NKikimrServices::ARROW_HELPER)("event", "cannot_read_all_columns")("reason", "fields_not_found") + ("field_names", JoinSeq(",", ColumnNames))("batch_fields", JoinSeq(",", batch->schema()->field_names())); + } + return columns; + } public: TXX64(const std::vector<TString>& columnNames, const ENoColumnPolicy noColumnPolicy, const ui64 seed = 0); @@ -33,7 +65,37 @@ class TXX64 { static void AppendField(const std::shared_ptr<arrow::Scalar>& scalar, NXX64::TStreamStringHashCalcer& hashCalcer); static ui64 CalcHash(const std::shared_ptr<arrow::Scalar>& scalar); std::optional<std::vector<ui64>> Execute(const std::shared_ptr<arrow::RecordBatch>& batch) const; - std::shared_ptr<arrow::Array> ExecuteToArray(const std::shared_ptr<arrow::RecordBatch>& batch, const std::string& hashFieldName) const; + + template <class TDataContainer> + std::shared_ptr<arrow::Array> ExecuteToArray(const std::shared_ptr<TDataContainer>& batch, const std::string& hashFieldName) const { + std::vector<std::shared_ptr<typename NAdapter::TDataBuilderPolicy<TDataContainer>::TColumn>> columns = GetColumns(batch); + if (columns.empty()) { + return nullptr; + } + + std::vector<NAccessor::IChunkedArray::TReader> columnScanners; + for (auto&& i : columns) { + columnScanners.emplace_back(NAccessor::IChunkedArray::TReader(std::make_shared<typename NAdapter::TDataBuilderPolicy<TDataContainer>::TAccessor>(i))); + } + + + auto builder = NArrow::MakeBuilder(std::make_shared<arrow::Field>(hashFieldName, arrow::TypeTraits<arrow::UInt64Type>::type_singleton())); + auto& intBuilder = static_cast<arrow::UInt64Builder&>(*builder); + TStatusValidator::Validate(intBuilder.Reserve(batch->num_rows())); + { + NXX64::TStreamStringHashCalcer hashCalcer(Seed); + for (int row = 0; row < batch->num_rows(); ++row) { + hashCalcer.Start(); + for (auto& column : columnScanners) { + auto address = column.GetReadChunk(row); + AppendField(address.GetArray(), address.GetPosition(), hashCalcer); + } + intBuilder.UnsafeAppend(hashCalcer.Finish()); + } + } + return NArrow::TStatusValidator::GetValid(builder->Finish()); + } + }; } diff --git a/ydb/core/formats/arrow/hash/ya.make b/ydb/core/formats/arrow/hash/ya.make index 031034a4d2e6..6d9a98b836a6 100644 --- a/ydb/core/formats/arrow/hash/ya.make +++ b/ydb/core/formats/arrow/hash/ya.make @@ -4,6 +4,7 @@ PEERDIR( contrib/libs/apache/arrow ydb/core/formats/arrow/simple_builder ydb/core/formats/arrow/switch + ydb/core/formats/arrow/reader ydb/library/actors/core ydb/library/services ydb/library/actors/protos diff --git a/ydb/core/formats/arrow/merging_sorted_input_stream.cpp b/ydb/core/formats/arrow/merging_sorted_input_stream.cpp deleted file mode 100644 index 7cc56d695a05..000000000000 --- a/ydb/core/formats/arrow/merging_sorted_input_stream.cpp +++ /dev/null @@ -1,303 +0,0 @@ -// The code in this file is based on original ClickHouse source code -// which is licensed under Apache license v2.0 -// See: https://github.com/ClickHouse/ClickHouse/ - -#include <queue> -#include "merging_sorted_input_stream.h" -#include "switch_type.h" -#include "size_calcer.h" - -namespace NKikimr::NArrow { - -class TRowsBuffer : public IRowsBuffer { -public: - using TBuilders = std::vector<std::unique_ptr<arrow::ArrayBuilder>>; - - static constexpr const size_t BUFFER_SIZE = 256; - - TRowsBuffer(TBuilders& columns, size_t maxRows) - : Columns(columns) - , MaxRows(maxRows) - { - Rows.reserve(BUFFER_SIZE); - } - - bool AddRow(const TSortCursor& cursor) override { - Rows.emplace_back(cursor->all_columns, cursor->getRow()); - if (Rows.size() >= BUFFER_SIZE) { - Flush(); - } - ++AddedRows; - return true; - } - - void Flush() override { - if (Rows.empty()) { - return; - } - for (size_t i = 0; i < Columns.size(); ++i) { - arrow::ArrayBuilder& builder = *Columns[i]; - for (auto& [srcColumn, rowPosition] : Rows) { - Append(builder, *srcColumn->at(i), rowPosition); - } - } - Rows.clear(); - } - - bool Limit() const override { - return MaxRows && (AddedRows >= MaxRows); - } - - bool HasLimit() const override { - return MaxRows; - } - -private: - TBuilders& Columns; - std::vector<std::pair<const TArrayVec*, size_t>> Rows; - size_t MaxRows = 0; - size_t AddedRows = 0; -}; - -class TSlicedRowsBuffer : public IRowsBuffer { -public: - TSlicedRowsBuffer(size_t maxRows) - : MaxRows(maxRows) - {} - - bool AddRow(const TSortCursor& cursor) override { - if (!Batch) { - Batch = cursor->current_batch; - Offset = cursor->getRow(); - } - if (Batch.get() != cursor->current_batch.get()) { - // append from another batch - return false; - } else if (cursor->getRow() != (Offset + AddedRows)) { - // append from the same batch with data hole - return false; - } - ++AddedRows; - return true; - } - - void Flush() override { - } - - bool Limit() const override { - return MaxRows && (AddedRows >= MaxRows); - } - - bool HasLimit() const override { - return MaxRows; - } - - std::shared_ptr<arrow::RecordBatch> GetBatch() { - if (Batch) { - return Batch->Slice(Offset, AddedRows); - } - return {}; - } - -private: - std::shared_ptr<arrow::RecordBatch> Batch; - size_t Offset = 0; - size_t MaxRows = 0; - size_t AddedRows = 0; -}; - -TMergingSortedInputStream::TMergingSortedInputStream(const std::vector<IInputStream::TPtr>& inputs, - std::shared_ptr<TSortDescription> description, - size_t maxBatchRows, bool slice) - : Description(description) - , MaxBatchSize(maxBatchRows) - , SliceSources(slice) - , SourceBatches(inputs.size()) - , Cursors(inputs.size()) -{ - Children.insert(Children.end(), inputs.begin(), inputs.end()); - Header = Children.at(0)->Schema(); -} - -/// Read the first blocks, initialize the queue. -void TMergingSortedInputStream::Init() { - Y_ABORT_UNLESS(First); - First = false; - size_t totalRows = 0; - for (size_t i = 0; i < SourceBatches.size(); ++i) { - auto& batch = SourceBatches[i]; - if (batch) { - continue; - } - - batch = Children[i]->Read(); - if (!batch || batch->num_rows() == 0) { - continue; - } - - for (i32 i = 0; i < batch->num_columns(); ++i) { - ColumnSize[batch->column_name(i)] += NArrow::GetArrayDataSize(batch->column(i)); - } - - totalRows += batch->num_rows(); - Cursors[i] = TSortCursorImpl(batch, Description, i); - } - - ExpectedBatchSize = MaxBatchSize ? std::min(totalRows, MaxBatchSize) : totalRows; - if (MaxBatchSize && MaxBatchSize < totalRows) { - ColumnSize.clear(); - } - - Queue = TSortingHeap(Cursors, Description->NotNull); - - /// Let's check that all source blocks have the same structure. - for (const auto& batch : SourceBatches) { - if (batch) { - Y_DEBUG_ABORT_UNLESS(batch->schema()->Equals(*Header)); - } - } -} - -std::shared_ptr<arrow::RecordBatch> TMergingSortedInputStream::ReadImpl() { - if (Finished) { - return {}; - } - - if (Children.size() == 1 && !Description->Replace()) { - return Children[0]->Read(); - } - - if (First) { - Init(); - } - - if (SliceSources) { - Y_DEBUG_ABORT_UNLESS(!Description->Reverse); - TSlicedRowsBuffer rowsBuffer(MaxBatchSize); - Merge(rowsBuffer, Queue); - auto batch = rowsBuffer.GetBatch(); - Y_ABORT_UNLESS(batch); - if (!batch->num_rows()) { - Y_ABORT_UNLESS(Finished); - return {}; - } - return batch; - } else { - auto builders = NArrow::MakeBuilders(Header, ExpectedBatchSize, ColumnSize); - if (builders.empty()) { - return {}; - } - - Y_ABORT_UNLESS(builders.size() == (size_t)Header->num_fields()); - TRowsBuffer rowsBuffer(builders, MaxBatchSize); - Merge(rowsBuffer, Queue); - - auto arrays = NArrow::Finish(std::move(builders)); - Y_ABORT_UNLESS(arrays.size()); - if (!arrays[0]->length()) { - Y_ABORT_UNLESS(Finished); - return {}; - } - return arrow::RecordBatch::Make(Header, arrays[0]->length(), arrays); - } -} - -/// Get the next block from the corresponding source, if there is one. -void TMergingSortedInputStream::FetchNextBatch(const TSortCursor& current, TSortingHeap& queue) { - size_t order = current->order; - Y_ABORT_UNLESS(order < Cursors.size() && &Cursors[order] == current.Impl); - - while (true) { - SourceBatches[order] = Children[order]->Read(); - auto& batch = SourceBatches[order]; - - if (!batch) { - queue.RemoveTop(); - break; - } - - if (batch->num_rows()) { - Y_DEBUG_ABORT_UNLESS(batch->schema()->Equals(*Header)); - - Cursors[order].Reset(batch); - queue.ReplaceTop(TSortCursor(&Cursors[order], Description->NotNull)); - break; - } - } -} - -/// Take rows in required order and put them into `rowBuffer`, -/// while the number of rows are no more than `max_block_size` -template <bool replace, bool limit> -void TMergingSortedInputStream::MergeImpl(IRowsBuffer& rowsBuffer, TSortingHeap& queue) { - if constexpr (replace) { - if (!PrevKey && queue.IsValid()) { - auto current = queue.Current(); - PrevKey = std::make_shared<TReplaceKey>(current->replace_columns, current->getRow()); - if (!rowsBuffer.AddRow(current)) { - return; - } - // Do not get Next() for simplicity. Lead to a dup - } - } - - while (queue.IsValid()) { - if constexpr (limit) { - if (rowsBuffer.Limit()) { - return; - } - } - - auto current = queue.Current(); - - if constexpr (replace) { - TReplaceKey key(current->replace_columns, current->getRow()); - - if (key == *PrevKey) { - // do nothing - } else if (rowsBuffer.AddRow(current)) { - *PrevKey = key; - } else { - return; - } - } else { - if (!rowsBuffer.AddRow(current)) { - return; - } - } - - if (!current->isLast()) { - queue.Next(); - } else { - rowsBuffer.Flush(); - FetchNextBatch(current, queue); - } - } - - /// We have read all data. Ask children to cancel providing more data. - Cancel(); - Finished = true; -} - -void TMergingSortedInputStream::Merge(IRowsBuffer& rowsBuffer, TSortingHeap& queue) { - const bool replace = Description->Replace(); - const bool limit = rowsBuffer.HasLimit(); - - if (replace) { - if (limit) { - MergeImpl<true, true>(rowsBuffer, queue); - } else { - MergeImpl<true, false>(rowsBuffer, queue); - } - } else { - if (limit) { - MergeImpl<false, true>(rowsBuffer, queue); - } else { - MergeImpl<false, false>(rowsBuffer, queue); - } - } - - rowsBuffer.Flush(); -} - -} diff --git a/ydb/core/formats/arrow/merging_sorted_input_stream.h b/ydb/core/formats/arrow/merging_sorted_input_stream.h deleted file mode 100644 index 2a3a2f722775..000000000000 --- a/ydb/core/formats/arrow/merging_sorted_input_stream.h +++ /dev/null @@ -1,54 +0,0 @@ -// The code in this file is based on original ClickHouse source code -// which is licensed under Apache license v2.0 -// See: https://github.com/ClickHouse/ClickHouse/ - -#pragma once -#include "input_stream.h" -#include "sort_cursor.h" - -namespace NKikimr::NArrow { - -struct IRowsBuffer { - virtual bool AddRow(const TSortCursor& cursor) = 0; - virtual void Flush() = 0; - virtual bool Limit() const = 0; - virtual bool HasLimit() const = 0; -}; - -/// Merges several sorted streams into one sorted stream. -class TMergingSortedInputStream : public IInputStream { -public: - TMergingSortedInputStream(const std::vector<IInputStream::TPtr>& inputs, - std::shared_ptr<TSortDescription> description, - size_t maxBatchRows, bool slice = false); - - std::shared_ptr<arrow::Schema> Schema() const override { return Header; } - -protected: - std::shared_ptr<arrow::RecordBatch> ReadImpl() override; - -private: - std::shared_ptr<arrow::Schema> Header; - std::shared_ptr<TSortDescription> Description; - const ui64 MaxBatchSize; - const bool SliceSources; - bool First = true; - bool Finished = false; - ui64 ExpectedBatchSize = 0; /// May be smaller or equal to max_block_size. To do 'reserve' for columns. - std::map<std::string, ui64> ColumnSize; - - std::vector<std::shared_ptr<arrow::RecordBatch>> SourceBatches; - std::shared_ptr<TReplaceKey> PrevKey; - - std::vector<TSortCursorImpl> Cursors; - TSortingHeap Queue; - - void Init(); - void FetchNextBatch(const TSortCursor& current, TSortingHeap& queue); - void Merge(IRowsBuffer& rowsBuffer, TSortingHeap& queue); - - template <bool replace, bool limit> - void MergeImpl(IRowsBuffer& rowsBuffer, TSortingHeap& queue); -}; - -} diff --git a/ydb/core/formats/arrow/one_batch_input_stream.h b/ydb/core/formats/arrow/one_batch_input_stream.h deleted file mode 100644 index 647e70a3f6a7..000000000000 --- a/ydb/core/formats/arrow/one_batch_input_stream.h +++ /dev/null @@ -1,36 +0,0 @@ -// The code in this file is based on original ClickHouse source code -// which is licensed under Apache license v2.0 -// See: https://github.com/ClickHouse/ClickHouse/ - -#pragma once -#include "input_stream.h" - -namespace NKikimr::NArrow { - -class TOneBatchInputStream : public IInputStream { -public: - explicit TOneBatchInputStream(std::shared_ptr<arrow::RecordBatch> batch) - : Batch(batch) - , Header(Batch->schema()) - {} - - std::shared_ptr<arrow::Schema> Schema() const override { - return Header; - } - -protected: - std::shared_ptr<arrow::RecordBatch> ReadImpl() override { - if (Batch) { - auto out = Batch; - Batch.reset(); - return out; - } - return {}; - } - -private: - std::shared_ptr<arrow::RecordBatch> Batch; - std::shared_ptr<arrow::Schema> Header; -}; - -} diff --git a/ydb/core/formats/arrow/permutations.cpp b/ydb/core/formats/arrow/permutations.cpp index f1a68600bb70..ace1fad33663 100644 --- a/ydb/core/formats/arrow/permutations.cpp +++ b/ydb/core/formats/arrow/permutations.cpp @@ -1,5 +1,6 @@ -#include "arrow_helpers.h" #include "permutations.h" + +#include "arrow_helpers.h" #include "replace_key.h" #include "size_calcer.h" #include "hash/calcer.h" @@ -180,7 +181,10 @@ std::shared_ptr<arrow::Array> CopyRecords(const std::shared_ptr<arrow::Array>& s return result; } -bool THashConstructor::BuildHashUI64(std::shared_ptr<arrow::RecordBatch>& batch, const std::vector<std::string>& fieldNames, const std::string& hashFieldName) { +namespace { + +template <class TDataContainer> +bool BuildHashUI64Impl(std::shared_ptr<TDataContainer>& batch, const std::vector<std::string>& fieldNames, const std::string& hashFieldName) { if (fieldNames.size() == 0) { return false; } @@ -193,26 +197,43 @@ bool THashConstructor::BuildHashUI64(std::shared_ptr<arrow::RecordBatch>& batch, } Y_ABORT_UNLESS(column); if (column->type()->id() == arrow::Type::UINT64 || column->type()->id() == arrow::Type::UINT32 || column->type()->id() == arrow::Type::INT64 || column->type()->id() == arrow::Type::INT32) { - batch = TStatusValidator::GetValid(batch->AddColumn(batch->num_columns(), hashFieldName, column)); + batch = TStatusValidator::GetValid(batch->AddColumn(batch->num_columns(), std::make_shared<arrow::Field>(hashFieldName, column->type()), column)); return true; } } - std::shared_ptr<arrow::Array> hashColumn = NArrow::NHash::TXX64(fieldNames, NArrow::NHash::TXX64::ENoColumnPolicy::Verify, 34323543).ExecuteToArray(batch, hashFieldName); - batch = TStatusValidator::GetValid(batch->AddColumn(batch->num_columns(), hashFieldName, hashColumn)); + std::shared_ptr<arrow::Array> hashColumn = NArrow::NHash::TXX64(fieldNames, NArrow::NHash::TXX64::ENoColumnPolicy::Verify, 34323543) + .ExecuteToArray(batch, hashFieldName); + batch = NAdapter::TDataBuilderPolicy<TDataContainer>::AddColumn(batch, std::make_shared<arrow::Field>(hashFieldName, hashColumn->type()), hashColumn); return true; } +} + +bool THashConstructor::BuildHashUI64(std::shared_ptr<arrow::Table>& batch, const std::vector<std::string>& fieldNames, const std::string& hashFieldName) { + return BuildHashUI64Impl(batch, fieldNames, hashFieldName); +} + +bool THashConstructor::BuildHashUI64(std::shared_ptr<arrow::RecordBatch>& batch, const std::vector<std::string>& fieldNames, const std::string& hashFieldName) { + return BuildHashUI64Impl(batch, fieldNames, hashFieldName); +} + ui64 TShardedRecordBatch::GetMemorySize() const { - return NArrow::GetBatchMemorySize(RecordBatch); + return NArrow::GetTableMemorySize(RecordBatch); +} + +TShardedRecordBatch::TShardedRecordBatch(const std::shared_ptr<arrow::RecordBatch>& batch) { + AFL_VERIFY(batch); + RecordBatch = TStatusValidator::GetValid(arrow::Table::FromRecordBatches(batch->schema(), {batch})); } -TShardedRecordBatch::TShardedRecordBatch(const std::shared_ptr<arrow::RecordBatch>& batch) + +TShardedRecordBatch::TShardedRecordBatch(const std::shared_ptr<arrow::Table>& batch) : RecordBatch(batch) { AFL_VERIFY(RecordBatch); } -TShardedRecordBatch::TShardedRecordBatch(const std::shared_ptr<arrow::RecordBatch>& batch, std::vector<std::vector<ui32>>&& splittedByShards) +TShardedRecordBatch::TShardedRecordBatch(const std::shared_ptr<arrow::Table>& batch, std::vector<std::vector<ui32>>&& splittedByShards) : RecordBatch(batch) , SplittedByShards(std::move(splittedByShards)) { @@ -220,13 +241,13 @@ TShardedRecordBatch::TShardedRecordBatch(const std::shared_ptr<arrow::RecordBatc AFL_VERIFY(SplittedByShards.size()); } -std::vector<std::shared_ptr<arrow::RecordBatch>> TShardingSplitIndex::Apply(const std::shared_ptr<arrow::RecordBatch>& input) { +std::vector<std::shared_ptr<arrow::Table>> TShardingSplitIndex::Apply(const std::shared_ptr<arrow::Table>& input) { AFL_VERIFY(input); AFL_VERIFY(input->num_rows() == RecordsCount); auto permutation = BuildPermutation(); - auto resultBatch = NArrow::TStatusValidator::GetValid(arrow::compute::Take(input, *permutation)).record_batch(); + auto resultBatch = NArrow::TStatusValidator::GetValid(arrow::compute::Take(input, *permutation)).table(); AFL_VERIFY(resultBatch->num_rows() == RecordsCount); - std::vector<std::shared_ptr<arrow::RecordBatch>> result; + std::vector<std::shared_ptr<arrow::Table>> result; ui64 startIndex = 0; for (auto&& i : Remapping) { result.emplace_back(resultBatch->Slice(startIndex, i.size())); @@ -236,7 +257,7 @@ std::vector<std::shared_ptr<arrow::RecordBatch>> TShardingSplitIndex::Apply(cons return result; } -NKikimr::NArrow::TShardedRecordBatch TShardingSplitIndex::Apply(const ui32 shardsCount, const std::shared_ptr<arrow::RecordBatch>& input, const std::string& hashColumnName) { +NKikimr::NArrow::TShardedRecordBatch TShardingSplitIndex::Apply(const ui32 shardsCount, const std::shared_ptr<arrow::Table>& input, const std::string& hashColumnName) { AFL_VERIFY(input); if (shardsCount == 1) { return TShardedRecordBatch(input); @@ -261,6 +282,11 @@ NKikimr::NArrow::TShardedRecordBatch TShardingSplitIndex::Apply(const ui32 shard return TShardedRecordBatch(resultBatch, splitter->DetachRemapping()); } +TShardedRecordBatch TShardingSplitIndex::Apply(const ui32 shardsCount, const std::shared_ptr<arrow::RecordBatch>& input, const std::string& hashColumnName) { + return Apply(shardsCount, TStatusValidator::GetValid(arrow::Table::FromRecordBatches(input->schema(), {input})) + , hashColumnName); +} + std::shared_ptr<arrow::UInt64Array> TShardingSplitIndex::BuildPermutation() const { arrow::UInt64Builder builder; Y_ABORT_UNLESS(builder.Reserve(RecordsCount).ok()); @@ -282,4 +308,10 @@ std::shared_ptr<arrow::RecordBatch> ReverseRecords(const std::shared_ptr<arrow:: return NArrow::TStatusValidator::GetValid(arrow::compute::Take(batch, permutation)).record_batch(); } +std::shared_ptr<arrow::Table> ReverseRecords(const std::shared_ptr<arrow::Table>& batch) { + AFL_VERIFY(batch); + auto permutation = NArrow::MakePermutation(batch->num_rows(), true); + return NArrow::TStatusValidator::GetValid(arrow::compute::Take(batch, permutation)).table(); +} + } diff --git a/ydb/core/formats/arrow/permutations.h b/ydb/core/formats/arrow/permutations.h index 584db8350888..73a433ee52a2 100644 --- a/ydb/core/formats/arrow/permutations.h +++ b/ydb/core/formats/arrow/permutations.h @@ -1,4 +1,7 @@ #pragma once +#include "arrow_helpers.h" + +#include <ydb/library/accessor/accessor.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> #include <util/system/types.h> @@ -7,14 +10,17 @@ namespace NKikimr::NArrow { class THashConstructor { public: + static bool BuildHashUI64(std::shared_ptr<arrow::Table>& batch, const std::vector<std::string>& fieldNames, const std::string& hashFieldName); static bool BuildHashUI64(std::shared_ptr<arrow::RecordBatch>& batch, const std::vector<std::string>& fieldNames, const std::string& hashFieldName); + }; class TShardedRecordBatch { private: - YDB_READONLY_DEF(std::shared_ptr<arrow::RecordBatch>, RecordBatch); + YDB_READONLY_DEF(std::shared_ptr<arrow::Table>, RecordBatch); YDB_READONLY_DEF(std::vector<std::vector<ui32>>, SplittedByShards); public: + TShardedRecordBatch(const std::shared_ptr<arrow::Table>& batch); TShardedRecordBatch(const std::shared_ptr<arrow::RecordBatch>& batch); void Cut(const ui32 limit) { @@ -31,11 +37,7 @@ class TShardedRecordBatch { return SplittedByShards.size() > 1; } - TShardedRecordBatch(const std::shared_ptr<arrow::RecordBatch>& batch, std::vector<std::vector<ui32>>&& splittedByShards); - - void StripColumns(const std::shared_ptr<arrow::Schema>& schema) { - RecordBatch = NArrow::ExtractColumns(RecordBatch, schema); - } + TShardedRecordBatch(const std::shared_ptr<arrow::Table>& batch, std::vector<std::vector<ui32>>&& splittedByShards); ui64 GetMemorySize() const; @@ -74,17 +76,22 @@ class TShardingSplitIndex { } template <class TIntArrowArray> - void Initialize(const TIntArrowArray& arrowHashArray) { + void Initialize(const arrow::ChunkedArray& arrowHashArrayChunked) { Y_ABORT_UNLESS(ShardsCount); Remapping.resize(ShardsCount); - const ui32 expectation = arrowHashArray.length() / ShardsCount + 1; + const ui32 expectation = arrowHashArrayChunked.length() / ShardsCount + 1; for (auto&& i : Remapping) { i.reserve(2 * expectation); } - for (ui64 i = 0; i < (ui64)arrowHashArray.length(); ++i) { - const i64 v = arrowHashArray.GetView(i); - const ui32 idx = ((v < 0) ? (-v) : v) % ShardsCount; - Remapping[idx].emplace_back(i); + for (auto&& arrowHashArrayAbstract : arrowHashArrayChunked.chunks()) { + auto& arrowHashArray = static_cast<const TIntArrowArray&>(*arrowHashArrayAbstract); + ui64 offset = 0; + for (ui64 i = 0; i < (ui64)arrowHashArray.length(); ++i) { + const i64 v = arrowHashArray.GetView(i); + const ui32 idx = ((v < 0) ? (-v) : v) % ShardsCount; + Remapping[idx].emplace_back(offset + i); + } + offset += (ui64)arrowHashArray.length(); } std::deque<std::vector<ui32>*> sizeCorrection; for (auto&& i : Remapping) { @@ -112,7 +119,7 @@ class TShardingSplitIndex { } } - TShardingSplitIndex(const ui32 shardsCount, const arrow::Array& arrowHashArray) + TShardingSplitIndex(const ui32 shardsCount, const arrow::ChunkedArray& arrowHashArray) : ShardsCount(shardsCount) , RecordsCount(arrowHashArray.length()) { } @@ -124,16 +131,16 @@ class TShardingSplitIndex { } template <class TArrayClass> - static TShardingSplitIndex Build(const ui32 shardsCount, const arrow::Array& arrowHashArray) { + static TShardingSplitIndex Build(const ui32 shardsCount, const arrow::ChunkedArray& arrowHashArray) { TShardingSplitIndex result(shardsCount, arrowHashArray); - result.Initialize<TArrayClass>(static_cast<const TArrayClass&>(arrowHashArray)); + result.Initialize<TArrayClass>(arrowHashArray); return result; } std::shared_ptr<arrow::UInt64Array> BuildPermutation() const; - std::vector<std::shared_ptr<arrow::RecordBatch>> Apply(const std::shared_ptr<arrow::RecordBatch>& input); - + std::vector<std::shared_ptr<arrow::Table>> Apply(const std::shared_ptr<arrow::Table>& input); + static TShardedRecordBatch Apply(const ui32 shardsCount, const std::shared_ptr<arrow::Table>& input, const std::string& hashColumnName); static TShardedRecordBatch Apply(const ui32 shardsCount, const std::shared_ptr<arrow::RecordBatch>& input, const std::string& hashColumnName); }; @@ -142,6 +149,7 @@ std::shared_ptr<arrow::UInt64Array> MakeFilterPermutation(const std::vector<ui64 std::shared_ptr<arrow::UInt64Array> MakeFilterPermutation(const std::vector<ui32>& indexes); std::shared_ptr<arrow::UInt64Array> MakeSortPermutation(const std::shared_ptr<arrow::RecordBatch>& batch, const std::shared_ptr<arrow::Schema>& sortingKey, const bool andUnique); std::shared_ptr<arrow::RecordBatch> ReverseRecords(const std::shared_ptr<arrow::RecordBatch>& batch); +std::shared_ptr<arrow::Table> ReverseRecords(const std::shared_ptr<arrow::Table>& batch); std::shared_ptr<arrow::Array> CopyRecords(const std::shared_ptr<arrow::Array>& source, const std::vector<ui64>& indexes); std::shared_ptr<arrow::RecordBatch> CopyRecords(const std::shared_ptr<arrow::RecordBatch>& source, const std::vector<ui64>& indexes); diff --git a/ydb/core/formats/arrow/program.cpp b/ydb/core/formats/arrow/program.cpp index 6523d12b2c38..f84435bdefd5 100644 --- a/ydb/core/formats/arrow/program.cpp +++ b/ydb/core/formats/arrow/program.cpp @@ -33,6 +33,7 @@ struct GroupByOptions: public arrow::compute::ScalarAggregateOptions { }; } #endif +#include "common/container.h" #include <util/system/yassert.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/api.h> @@ -148,11 +149,11 @@ class TKernelFunction : public IStepFunction<TAssignObject> { if (!arguments) { return arrow::Status::Invalid("Error parsing args."); } -// try { + try { return Function->Execute(*arguments, assign.GetOptions(), TBase::Ctx); -// } catch (const std::exception& ex) { -// return arrow::Status::ExecutionError(ex.what()); -// } + } catch (const std::exception& ex) { + return arrow::Status::ExecutionError(ex.what()); + } } }; @@ -552,13 +553,36 @@ arrow::Result<arrow::Datum> TDatumBatch::GetColumnByName(const std::string& name return Datums[i]; } +std::shared_ptr<arrow::Table> TDatumBatch::ToTable() const { + std::vector<std::shared_ptr<arrow::ChunkedArray>> columns; + columns.reserve(Datums.size()); + for (auto col : Datums) { + if (col.is_scalar()) { + columns.push_back(std::make_shared<arrow::ChunkedArray>(NArrow::TStatusValidator::GetValid(arrow::MakeArrayFromScalar(*col.scalar(), Rows)))); + } else if (col.is_array()) { + if (col.length() == -1) { + return {}; + } + columns.push_back(std::make_shared<arrow::ChunkedArray>(col.make_array())); + } else if (col.is_arraylike()) { + if (col.length() == -1) { + return {}; + } + columns.push_back(col.chunked_array()); + } else { + AFL_VERIFY(false); + } + } + return arrow::Table::Make(Schema, columns, Rows); +} + std::shared_ptr<arrow::RecordBatch> TDatumBatch::ToRecordBatch() const { std::vector<std::shared_ptr<arrow::Array>> columns; columns.reserve(Datums.size()); for (auto col : Datums) { if (col.is_scalar()) { - columns.push_back(*arrow::MakeArrayFromScalar(*col.scalar(), Rows)); - } else if (col.is_array()){ + columns.push_back(NArrow::TStatusValidator::GetValid(arrow::MakeArrayFromScalar(*col.scalar(), Rows))); + } else if (col.is_array()) { if (col.length() == -1) { return {}; } @@ -838,10 +862,30 @@ arrow::Status TProgramStep::ApplyProjection(std::shared_ptr<arrow::RecordBatch>& arrow::Status TProgramStep::Apply(std::shared_ptr<arrow::RecordBatch>& batch, arrow::compute::ExecContext* ctx) const { auto rb = TDatumBatch::FromRecordBatch(batch); - NArrow::TStatusValidator::Validate(ApplyAssignes(*rb, ctx)); - NArrow::TStatusValidator::Validate(ApplyFilters(*rb)); - NArrow::TStatusValidator::Validate(ApplyAggregates(*rb, ctx)); - NArrow::TStatusValidator::Validate(ApplyProjection(*rb)); + { + auto status = ApplyAssignes(*rb, ctx); + if (!status.ok()) { + return status; + } + } + { + auto status = ApplyFilters(*rb); + if (!status.ok()) { + return status; + } + } + { + auto status = ApplyAggregates(*rb, ctx); + if (!status.ok()) { + return status; + } + } + { + auto status = ApplyProjection(*rb); + if (!status.ok()) { + return status; + } + } batch = (*rb).ToRecordBatch(); if (!batch) { @@ -850,20 +894,28 @@ arrow::Status TProgramStep::Apply(std::shared_ptr<arrow::RecordBatch>& batch, ar return arrow::Status::OK(); } -std::set<std::string> TProgramStep::GetColumnsInUsage() const { +std::set<std::string> TProgramStep::GetColumnsInUsage(const bool originalOnly/* = false*/) const { std::set<std::string> result; for (auto&& i : Filters) { - result.emplace(i.GetColumnName()); + if (!originalOnly || !i.IsGenerated()) { + result.emplace(i.GetColumnName()); + } } for (auto&& i : Assignes) { for (auto&& f : i.GetArguments()) { - result.emplace(f.GetColumnName()); + if (!originalOnly || !f.IsGenerated()) { + result.emplace(f.GetColumnName()); + } } } return result; } -std::shared_ptr<NArrow::TColumnFilter> TProgramStep::BuildFilter(const std::shared_ptr<arrow::Table>& t) const { +arrow::Result<std::shared_ptr<NArrow::TColumnFilter>> TProgramStep::BuildFilter(const std::shared_ptr<NArrow::TGeneralContainer>& t) const { + return BuildFilter(t->BuildTable(GetColumnsInUsage(true))); +} + +arrow::Result<std::shared_ptr<NArrow::TColumnFilter>> TProgramStep::BuildFilter(const std::shared_ptr<arrow::Table>& t) const { if (Filters.empty()) { return nullptr; } @@ -871,7 +923,12 @@ std::shared_ptr<NArrow::TColumnFilter> TProgramStep::BuildFilter(const std::shar NArrow::TColumnFilter fullLocal = NArrow::TColumnFilter::BuildAllowFilter(); for (auto&& rb : batches) { auto datumBatch = TDatumBatch::FromRecordBatch(rb); - NArrow::TStatusValidator::Validate(ApplyAssignes(*datumBatch, NArrow::GetCustomExecContext())); + { + auto statusAssign = ApplyAssignes(*datumBatch, NArrow::GetCustomExecContext()); + if (!statusAssign.ok()) { + return statusAssign; + } + } NArrow::TColumnFilter local = NArrow::TColumnFilter::BuildAllowFilter(); NArrow::TStatusValidator::Validate(MakeCombinedFilter(*datumBatch, local)); AFL_VERIFY(local.Size() == datumBatch->Rows)("local", local.Size())("datum", datumBatch->Rows); @@ -906,30 +963,4 @@ std::set<std::string> TProgram::GetProcessingColumns() const { return result; } -std::shared_ptr<NArrow::TColumnFilter> TProgram::ApplyEarlyFilter(std::shared_ptr<arrow::Table>& batch, const bool useFilter) const { - std::shared_ptr<NArrow::TColumnFilter> filter = std::make_shared<NArrow::TColumnFilter>(NArrow::TColumnFilter::BuildAllowFilter()); - for (ui32 i = 0; i < Steps.size(); ++i) { - try { - auto& step = Steps[i]; - if (!step->IsFilterOnly()) { - break; - } - - std::shared_ptr<NArrow::TColumnFilter> local = step->BuildFilter(batch); - AFL_VERIFY(local); - if (!useFilter) { - *filter = filter->And(*local); - } else { - *filter = filter->CombineSequentialAnd(*local); - if (!local->Apply(batch)) { - break; - } - } - } catch (const std::exception& ex) { - AFL_VERIFY(false); - } - } - return filter; -} - } diff --git a/ydb/core/formats/arrow/program.h b/ydb/core/formats/arrow/program.h index 000bd447b1e5..ed5f13403d02 100644 --- a/ydb/core/formats/arrow/program.h +++ b/ydb/core/formats/arrow/program.h @@ -44,6 +44,7 @@ struct TDatumBatch { arrow::Status AddColumn(const std::string& name, arrow::Datum&& column); arrow::Result<arrow::Datum> GetColumnByName(const std::string& name) const; + std::shared_ptr<arrow::Table> ToTable() const; std::shared_ptr<arrow::RecordBatch> ToRecordBatch() const; static std::shared_ptr<TDatumBatch> FromRecordBatch(const std::shared_ptr<arrow::RecordBatch>& batch); static std::shared_ptr<TDatumBatch> FromTable(const std::shared_ptr<arrow::Table>& batch); @@ -353,7 +354,7 @@ class TProgramStep { return sb; } - std::set<std::string> GetColumnsInUsage() const; + std::set<std::string> GetColumnsInUsage(const bool originalOnly = false) const; const std::set<ui32>& GetFilterOriginalColumnIds() const; @@ -390,7 +391,7 @@ class TProgramStep { arrow::Status Apply(std::shared_ptr<arrow::RecordBatch>& batch, arrow::compute::ExecContext* ctx) const; - arrow::Status ApplyAssignes(TDatumBatch& batch, arrow::compute::ExecContext* ctx) const; + [[nodiscard]] arrow::Status ApplyAssignes(TDatumBatch& batch, arrow::compute::ExecContext* ctx) const; arrow::Status ApplyAggregates(TDatumBatch& batch, arrow::compute::ExecContext* ctx) const; arrow::Status ApplyFilters(TDatumBatch& batch) const; arrow::Status ApplyProjection(std::shared_ptr<arrow::RecordBatch>& batch) const; @@ -402,7 +403,8 @@ class TProgramStep { return Filters.size() && (!GroupBy.size() && !GroupByKeys.size()); } - std::shared_ptr<NArrow::TColumnFilter> BuildFilter(const std::shared_ptr<arrow::Table>& t) const; + [[nodiscard]] arrow::Result<std::shared_ptr<NArrow::TColumnFilter>> BuildFilter(const std::shared_ptr<arrow::Table>& t) const; + [[nodiscard]] arrow::Result<std::shared_ptr<NArrow::TColumnFilter>> BuildFilter(const std::shared_ptr<NArrow::TGeneralContainer>& t) const; }; struct TProgram { @@ -416,6 +418,18 @@ struct TProgram { : Steps(std::move(steps)) {} + arrow::Status ApplyTo(std::shared_ptr<arrow::Table>& table, arrow::compute::ExecContext* ctx) const { + std::vector<std::shared_ptr<arrow::RecordBatch>> batches = NArrow::SliceToRecordBatches(table); + for (auto&& i : batches) { + auto status = ApplyTo(i, ctx); + if (!status.ok()) { + return status; + } + } + table = NArrow::TStatusValidator::GetValid(arrow::Table::FromRecordBatches(batches)); + return arrow::Status::OK(); + } + arrow::Status ApplyTo(std::shared_ptr<arrow::RecordBatch>& batch, arrow::compute::ExecContext* ctx) const { try { for (auto& step : Steps) { @@ -432,7 +446,6 @@ struct TProgram { std::set<std::string> GetEarlyFilterColumns() const; std::set<std::string> GetProcessingColumns() const; - std::shared_ptr<NArrow::TColumnFilter> ApplyEarlyFilter(std::shared_ptr<arrow::Table>& batch, const bool useFilter) const; TString DebugString() const { TStringBuilder sb; sb << "["; @@ -444,11 +457,17 @@ struct TProgram { } }; +inline arrow::Status ApplyProgram( + std::shared_ptr<arrow::Table>& batch, + const TProgram& program, + arrow::compute::ExecContext* ctx = nullptr) { + return program.ApplyTo(batch, ctx); +} + inline arrow::Status ApplyProgram( std::shared_ptr<arrow::RecordBatch>& batch, const TProgram& program, - arrow::compute::ExecContext* ctx = nullptr) -{ + arrow::compute::ExecContext* ctx = nullptr) { return program.ApplyTo(batch, ctx); } diff --git a/ydb/core/formats/arrow/reader/batch_iterator.cpp b/ydb/core/formats/arrow/reader/batch_iterator.cpp new file mode 100644 index 000000000000..5216691dd208 --- /dev/null +++ b/ydb/core/formats/arrow/reader/batch_iterator.cpp @@ -0,0 +1,51 @@ +#include "batch_iterator.h" + +namespace NKikimr::NArrow::NMerger { + +NJson::TJsonValue TBatchIterator::DebugJson() const { + NJson::TJsonValue result; + result["is_cp"] = IsControlPoint(); + result["key"] = KeyColumns.DebugJson(); + return result; +} + +NKikimr::NArrow::NMerger::TSortableBatchPosition::TFoundPosition TBatchIterator::SkipToLower(const TSortableBatchPosition& pos) { + const ui32 posStart = KeyColumns.GetPosition(); + auto result = KeyColumns.SkipToLower(pos); + const i32 delta = IsReverse() ? (posStart - KeyColumns.GetPosition()) : (KeyColumns.GetPosition() - posStart); + AFL_VERIFY(delta >= 0); + AFL_VERIFY(VersionColumns.InitPosition(KeyColumns.GetPosition()))("pos", KeyColumns.GetPosition()) + ("size", VersionColumns.GetRecordsCount())("key_size", KeyColumns.GetRecordsCount()); + if (FilterIterator && delta) { + AFL_VERIFY(FilterIterator->Next(delta)); + } + return result; +} + +bool TBatchIterator::Next() { + const bool result = KeyColumns.NextPosition(ReverseSortKff) && VersionColumns.NextPosition(ReverseSortKff); + if (FilterIterator) { + Y_ABORT_UNLESS(result == FilterIterator->Next(1)); + } + return result; +} + +bool TBatchIterator::operator<(const TBatchIterator& item) const { + const std::partial_ordering result = KeyColumns.Compare(item.KeyColumns); + if (result == std::partial_ordering::equivalent) { + if (IsControlPoint() && item.IsControlPoint()) { + return false; + } else if (IsControlPoint()) { + return false; + } else if (item.IsControlPoint()) { + return true; + } + //don't need inverse through we need maximal version at first (reverse analytic not included in VersionColumns) + return VersionColumns.Compare(item.VersionColumns) == std::partial_ordering::less; + } else { + //inverse logic through we use max heap, but need minimal element if not reverse (reverse analytic included in KeyColumns) + return result == std::partial_ordering::greater; + } +} + +} diff --git a/ydb/core/formats/arrow/reader/batch_iterator.h b/ydb/core/formats/arrow/reader/batch_iterator.h new file mode 100644 index 000000000000..eec3559eb2b9 --- /dev/null +++ b/ydb/core/formats/arrow/reader/batch_iterator.h @@ -0,0 +1,89 @@ +#pragma once +#include "position.h" +#include <ydb/core/formats/arrow/arrow_filter.h> + +namespace NKikimr::NArrow::NMerger { + +class TBatchIterator { +private: + bool ControlPointFlag; + TSortableBatchPosition KeyColumns; + TSortableBatchPosition VersionColumns; + i64 RecordsCount; + int ReverseSortKff; + + std::shared_ptr<NArrow::TColumnFilter> Filter; + std::shared_ptr<NArrow::TColumnFilter::TIterator> FilterIterator; + + i32 GetFirstPosition() const { + if (ReverseSortKff > 0) { + return 0; + } else { + return RecordsCount - 1; + } + } + +public: + NJson::TJsonValue DebugJson() const; + + const std::shared_ptr<NArrow::TColumnFilter>& GetFilter() const { + return Filter; + } + + bool IsControlPoint() const { + return ControlPointFlag; + } + + const TSortableBatchPosition& GetKeyColumns() const { + return KeyColumns; + } + + const TSortableBatchPosition& GetVersionColumns() const { + return VersionColumns; + } + + TBatchIterator(const TSortableBatchPosition& keyColumns) + : ControlPointFlag(true) + , KeyColumns(keyColumns) { + + } + + template <class TDataContainer> + TBatchIterator(std::shared_ptr<TDataContainer> batch, std::shared_ptr<NArrow::TColumnFilter> filter, + const std::vector<std::string>& keyColumns, const std::vector<std::string>& dataColumns, const bool reverseSort, const std::vector<std::string>& versionColumnNames) + : ControlPointFlag(false) + , KeyColumns(batch, 0, keyColumns, dataColumns, reverseSort) + , VersionColumns(batch, 0, versionColumnNames, {}, false) + , RecordsCount(batch->num_rows()) + , ReverseSortKff(reverseSort ? -1 : 1) + , Filter(filter) { + Y_ABORT_UNLESS(KeyColumns.InitPosition(GetFirstPosition())); + Y_ABORT_UNLESS(VersionColumns.InitPosition(GetFirstPosition())); + if (Filter) { + FilterIterator = std::make_shared<NArrow::TColumnFilter::TIterator>(Filter->GetIterator(reverseSort, RecordsCount)); + } + } + + bool CheckNextBatch(const TBatchIterator& nextIterator) { + return KeyColumns.Compare(nextIterator.KeyColumns) == std::partial_ordering::less; + } + + bool IsReverse() const { + return ReverseSortKff < 0; + } + + bool IsDeleted() const { + if (!FilterIterator) { + return false; + } + return !FilterIterator->GetCurrentAcceptance(); + } + + TSortableBatchPosition::TFoundPosition SkipToLower(const TSortableBatchPosition& pos); + + bool Next(); + + bool operator<(const TBatchIterator& item) const; +}; + +} diff --git a/ydb/core/formats/arrow/reader/heap.cpp b/ydb/core/formats/arrow/reader/heap.cpp new file mode 100644 index 000000000000..33f6a65369ec --- /dev/null +++ b/ydb/core/formats/arrow/reader/heap.cpp @@ -0,0 +1,5 @@ +#include "heap.h" + +namespace NKikimr::NArrow::NMerger { + +} diff --git a/ydb/core/formats/arrow/reader/heap.h b/ydb/core/formats/arrow/reader/heap.h new file mode 100644 index 000000000000..058066e9e7cb --- /dev/null +++ b/ydb/core/formats/arrow/reader/heap.h @@ -0,0 +1,126 @@ +#pragma once +#include <library/cpp/json/writer/json_value.h> + +#include <util/system/types.h> +#include <vector> + +namespace NKikimr::NArrow::NMerger { + +class TRecordBatchBuilder; + +template <class TSortCursor> +class TSortingHeap { +public: + TSortingHeap() = default; + + template <typename TCursors> + TSortingHeap(TCursors& cursors, bool notNull) { + Queue.reserve(cursors.size()); + for (auto& cur : cursors) { + if (!cur.Empty()) { + Queue.emplace_back(TSortCursor(&cur, notNull)); + } + } + std::make_heap(Queue.begin(), Queue.end()); + } + + const TSortCursor& Current() const { return Queue.front(); } + TSortCursor& MutableCurrent() { return Queue.front(); } + size_t Size() const { return Queue.size(); } + bool Empty() const { return Queue.empty(); } + TSortCursor& NextChild() { return Queue[NextChildIndex()]; } + + void Next() { + Y_ABORT_UNLESS(Size()); + + if (Queue.front().Next()) { + UpdateTop(); + } else { + RemoveTop(); + } + } + + void RemoveTop() { + std::pop_heap(Queue.begin(), Queue.end()); + Queue.pop_back(); + NextIdx = 0; + } + + void Push(TSortCursor&& cursor) { + Queue.emplace_back(cursor); + std::push_heap(Queue.begin(), Queue.end()); + NextIdx = 0; + } + + NJson::TJsonValue DebugJson() const { + NJson::TJsonValue result = NJson::JSON_ARRAY; + for (auto&& i : Queue) { + result.AppendValue(i.DebugJson()); + } + return result; + } + + /// This is adapted version of the function __sift_down from libc++. + /// Why cannot simply use std::priority_queue? + /// - because it doesn't support updating the top element and requires pop and push instead. + /// Also look at "Boost.Heap" library. + void UpdateTop() { + size_t size = Queue.size(); + if (size < 2) + return; + + auto begin = Queue.begin(); + + size_t child_idx = NextChildIndex(); + auto child_it = begin + child_idx; + + /// Check if we are in order. + if (*child_it < *begin) + return; + + NextIdx = 0; + + auto curr_it = begin; + auto top(std::move(*begin)); + do { + /// We are not in heap-order, swap the parent with it's largest child. + *curr_it = std::move(*child_it); + curr_it = child_it; + + // recompute the child based off of the updated parent + child_idx = 2 * child_idx + 1; + + if (child_idx >= size) + break; + + child_it = begin + child_idx; + + if ((child_idx + 1) < size && *child_it < *(child_it + 1)) { + /// Right child exists and is greater than left child. + ++child_it; + ++child_idx; + } + + /// Check if we are in order. + } while (!(*child_it < top)); + *curr_it = std::move(top); + } +private: + std::vector<TSortCursor> Queue; + /// Cache comparison between first and second child if the order in queue has not been changed. + size_t NextIdx = 0; + + size_t NextChildIndex() { + if (NextIdx == 0) { + NextIdx = 1; + if (Queue.size() > 2 && Queue[1] < Queue[2]) { + ++NextIdx; + } + } + + return NextIdx; + } + +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/read_filter_merger.cpp b/ydb/core/formats/arrow/reader/merger.cpp similarity index 71% rename from ydb/core/tx/columnshard/engines/reader/read_filter_merger.cpp rename to ydb/core/formats/arrow/reader/merger.cpp index 0ac89d8ef3bc..83a43630f42d 100644 --- a/ydb/core/tx/columnshard/engines/reader/read_filter_merger.cpp +++ b/ydb/core/formats/arrow/reader/merger.cpp @@ -1,9 +1,8 @@ -#include "read_filter_merger.h" -#include <ydb/core/formats/arrow/permutations.h> -#include <ydb/library/actors/core/log.h> -#include <contrib/libs/apache/arrow/cpp/src/arrow/compute/api_vector.h> +#include "merger.h" +#include "result_builder.h" +#include <ydb/library/services/services.pb.h> -namespace NKikimr::NOlap::NIndexedReader { +namespace NKikimr::NArrow::NMerger { void TMergePartialStream::PutControlPoint(std::shared_ptr<TSortableBatchPosition> point) { Y_ABORT_UNLESS(point); @@ -14,24 +13,6 @@ void TMergePartialStream::PutControlPoint(std::shared_ptr<TSortableBatchPosition SortHeap.Push(TBatchIterator(*point)); } -void TMergePartialStream::AddSource(std::shared_ptr<arrow::RecordBatch> batch, std::shared_ptr<NArrow::TColumnFilter> filter) { - if (!batch || !batch->num_rows()) { - return; - } - Y_DEBUG_ABORT_UNLESS(NArrow::IsSorted(batch, SortSchema)); - AddNewToHeap(batch, filter); -} - -void TMergePartialStream::AddNewToHeap(std::shared_ptr<arrow::RecordBatch> batch, std::shared_ptr<NArrow::TColumnFilter> filter) { - if (!filter || filter->IsTotalAllowFilter()) { - SortHeap.Push(TBatchIterator(batch, nullptr, SortSchema->field_names(), DataSchema ? DataSchema->field_names() : std::vector<std::string>(), Reverse)); - } else if (filter->IsTotalDenyFilter()) { - return; - } else { - SortHeap.Push(TBatchIterator(batch, filter, SortSchema->field_names(), DataSchema ? DataSchema->field_names() : std::vector<std::string>(), Reverse)); - } -} - void TMergePartialStream::RemoveControlPoint() { Y_ABORT_UNLESS(ControlPoints == 1); Y_ABORT_UNLESS(ControlPointEnriched()); @@ -56,16 +37,17 @@ void TMergePartialStream::CheckSequenceInDebug(const TSortableBatchPosition& nex #endif } -bool TMergePartialStream::DrainCurrentTo(TRecordBatchBuilder& builder, const TSortableBatchPosition& readTo, const bool includeFinish, std::optional<TSortableBatchPosition>* lastResultPosition) { +bool TMergePartialStream::DrainToControlPoint(TRecordBatchBuilder& builder, const bool includeFinish, std::optional<TSortableBatchPosition>* lastResultPosition) { + AFL_VERIFY(ControlPoints == 1); Y_ABORT_UNLESS((ui32)DataSchema->num_fields() == builder.GetBuildersCount()); builder.ValidateDataSchema(DataSchema); - PutControlPoint(std::make_shared<TSortableBatchPosition>(readTo)); bool cpReachedFlag = false; - while (SortHeap.Size() && !cpReachedFlag) { + while (SortHeap.Size() && !cpReachedFlag && !builder.IsBufferExhausted()) { if (SortHeap.Current().IsControlPoint()) { + auto keyColumns = SortHeap.Current().GetKeyColumns(); RemoveControlPoint(); cpReachedFlag = true; - if (SortHeap.Empty() || !includeFinish || SortHeap.Current().GetKeyColumns().Compare(readTo) == std::partial_ordering::greater) { + if (SortHeap.Empty() || !includeFinish || SortHeap.Current().GetKeyColumns().Compare(keyColumns) == std::partial_ordering::greater) { return true; } } @@ -78,11 +60,16 @@ bool TMergePartialStream::DrainCurrentTo(TRecordBatchBuilder& builder, const TSo } } } - return false; + return cpReachedFlag; +} + +bool TMergePartialStream::DrainCurrentTo(TRecordBatchBuilder& builder, const TSortableBatchPosition& readTo, const bool includeFinish, std::optional<TSortableBatchPosition>* lastResultPosition) { + PutControlPoint(std::make_shared<TSortableBatchPosition>(readTo)); + return DrainToControlPoint(builder, includeFinish, lastResultPosition); } -std::shared_ptr<arrow::RecordBatch> TMergePartialStream::SingleSourceDrain(const TSortableBatchPosition& readTo, const bool includeFinish, std::optional<TSortableBatchPosition>* lastResultPosition) { - std::shared_ptr<arrow::RecordBatch> result; +std::shared_ptr<arrow::Table> TMergePartialStream::SingleSourceDrain(const TSortableBatchPosition& readTo, const bool includeFinish, std::optional<TSortableBatchPosition>* lastResultPosition) { + std::shared_ptr<arrow::Table> result; if (SortHeap.Empty()) { return result; } @@ -147,14 +134,14 @@ std::shared_ptr<arrow::RecordBatch> TMergePartialStream::SingleSourceDrain(const SortHeap.UpdateTop(); } if (SortHeap.Empty()) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("pos", readTo.DebugJson().GetStringRobust())("heap", "EMPTY"); + AFL_DEBUG(NKikimrServices::ARROW_HELPER)("pos", readTo.DebugJson().GetStringRobust())("heap", "EMPTY"); } else { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("pos", readTo.DebugJson().GetStringRobust())("heap", SortHeap.Current().GetKeyColumns().DebugJson().GetStringRobust()); + AFL_DEBUG(NKikimrServices::ARROW_HELPER)("pos", readTo.DebugJson().GetStringRobust())("heap", SortHeap.Current().GetKeyColumns().DebugJson().GetStringRobust()); } return result; } -bool TMergePartialStream::DrainAll(TRecordBatchBuilder& builder) { +void TMergePartialStream::DrainAll(TRecordBatchBuilder& builder) { Y_ABORT_UNLESS((ui32)DataSchema->num_fields() == builder.GetBuildersCount()); while (SortHeap.Size()) { if (auto currentPosition = DrainCurrentPosition()) { @@ -162,7 +149,6 @@ bool TMergePartialStream::DrainAll(TRecordBatchBuilder& builder) { builder.AddRecord(*currentPosition); } } - return false; } std::optional<TSortableBatchPosition> TMergePartialStream::DrainCurrentPosition() { @@ -197,14 +183,14 @@ std::vector<std::shared_ptr<arrow::RecordBatch>> TMergePartialStream::DrainAllPa { std::vector<std::shared_ptr<arrow::RecordBatch>> result; for (auto&& i : positions) { - NIndexedReader::TRecordBatchBuilder indexesBuilder(resultFields); + TRecordBatchBuilder indexesBuilder(resultFields); DrainCurrentTo(indexesBuilder, i.first, i.second); result.emplace_back(indexesBuilder.Finalize()); if (result.back()->num_rows() == 0) { result.pop_back(); } } - NIndexedReader::TRecordBatchBuilder indexesBuilder(resultFields); + TRecordBatchBuilder indexesBuilder(resultFields); DrainAll(indexesBuilder); result.emplace_back(indexesBuilder.Finalize()); if (result.back()->num_rows() == 0) { @@ -213,25 +199,33 @@ std::vector<std::shared_ptr<arrow::RecordBatch>> TMergePartialStream::DrainAllPa return result; } -NJson::TJsonValue TMergePartialStream::TBatchIterator::DebugJson() const { - NJson::TJsonValue result; - result["is_cp"] = IsControlPoint(); - result["key"] = KeyColumns.DebugJson(); - return result; -} - -void TRecordBatchBuilder::ValidateDataSchema(const std::shared_ptr<arrow::Schema>& schema) { - AFL_VERIFY(IsSameFieldsSequence(schema->fields(), Fields)); -} - -void TRecordBatchBuilder::AddRecord(const TSortableBatchPosition& position) { - Y_DEBUG_ABORT_UNLESS(position.GetData().GetColumns().size() == Builders.size()); - Y_DEBUG_ABORT_UNLESS(IsSameFieldsSequence(position.GetData().GetFields(), Fields)); -// AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "record_add_on_read")("record", position.DebugJson()); - for (ui32 i = 0; i < position.GetData().GetColumns().size(); ++i) { - NArrow::Append(*Builders[i], *position.GetData().GetColumns()[i], position.GetPosition()); +void TMergePartialStream::SkipToLowerBound(const TSortableBatchPosition& pos, const bool include) { + if (SortHeap.Empty()) { + return; + } + AFL_DEBUG(NKikimrServices::ARROW_HELPER)("pos", pos.DebugJson().GetStringRobust())("heap", SortHeap.Current().GetKeyColumns().DebugJson().GetStringRobust()); + while (!SortHeap.Empty()) { + const auto cmpResult = SortHeap.Current().GetKeyColumns().Compare(pos); + if (cmpResult == std::partial_ordering::greater) { + break; + } + if (cmpResult == std::partial_ordering::equivalent && include) { + break; + } + const TSortableBatchPosition::TFoundPosition skipPos = SortHeap.MutableCurrent().SkipToLower(pos); + AFL_DEBUG(NKikimrServices::ARROW_HELPER)("pos", pos.DebugJson().GetStringRobust())("heap", SortHeap.Current().GetKeyColumns().DebugJson().GetStringRobust()); + if (skipPos.IsEqual()) { + if (!include && !SortHeap.MutableCurrent().Next()) { + SortHeap.RemoveTop(); + } else { + SortHeap.UpdateTop(); + } + } else if (skipPos.IsLess()) { + SortHeap.RemoveTop(); + } else { + SortHeap.UpdateTop(); + } } - ++RecordsCount; } } diff --git a/ydb/core/formats/arrow/reader/merger.h b/ydb/core/formats/arrow/reader/merger.h new file mode 100644 index 000000000000..5ff296cae0e8 --- /dev/null +++ b/ydb/core/formats/arrow/reader/merger.h @@ -0,0 +1,103 @@ +#pragma once +#include "position.h" +#include "heap.h" +#include "result_builder.h" +#include "batch_iterator.h" + +#include <ydb/core/formats/arrow/arrow_filter.h> + +namespace NKikimr::NArrow::NMerger { + +class TMergePartialStream { +private: +#ifndef NDEBUG + std::optional<TSortableBatchPosition> CurrentKeyColumns; +#endif + bool PossibleSameVersionFlag = true; + + std::shared_ptr<arrow::Schema> SortSchema; + std::shared_ptr<arrow::Schema> DataSchema; + const bool Reverse; + const std::vector<std::string> VersionColumnNames; + ui32 ControlPoints = 0; + + TSortingHeap<TBatchIterator> SortHeap; + + NJson::TJsonValue DebugJson() const { + NJson::TJsonValue result = NJson::JSON_MAP; +#ifndef NDEBUG + if (CurrentKeyColumns) { + result["current"] = CurrentKeyColumns->DebugJson(); + } +#endif + result.InsertValue("heap", SortHeap.DebugJson()); + return result; + } + + std::optional<TSortableBatchPosition> DrainCurrentPosition(); + + void CheckSequenceInDebug(const TSortableBatchPosition& nextKeyColumnsPosition); +public: + TMergePartialStream(std::shared_ptr<arrow::Schema> sortSchema, std::shared_ptr<arrow::Schema> dataSchema, const bool reverse, const std::vector<std::string>& versionColumnNames) + : SortSchema(sortSchema) + , DataSchema(dataSchema) + , Reverse(reverse) + , VersionColumnNames(versionColumnNames) + { + Y_ABORT_UNLESS(SortSchema); + Y_ABORT_UNLESS(SortSchema->num_fields()); + Y_ABORT_UNLESS(!DataSchema || DataSchema->num_fields()); + } + + void SkipToLowerBound(const TSortableBatchPosition& pos, const bool include); + + void SetPossibleSameVersion(const bool value) { + PossibleSameVersionFlag = value; + } + + bool IsValid() const { + return SortHeap.Size(); + } + + ui32 GetSourcesCount() const { + return SortHeap.Size(); + } + + TString DebugString() const { + return TStringBuilder() << "sort_heap=" << SortHeap.DebugJson(); + } + + void PutControlPoint(std::shared_ptr<TSortableBatchPosition> point); + + void RemoveControlPoint(); + + bool ControlPointEnriched() const { + return SortHeap.Size() && SortHeap.Current().IsControlPoint(); + } + + template <class TDataContainer> + void AddSource(const std::shared_ptr<TDataContainer>& batch, const std::shared_ptr<NArrow::TColumnFilter>& filter) { + if (!batch || !batch->num_rows()) { + return; + } + if (filter && filter->IsTotalDenyFilter()) { + return; + } +// Y_DEBUG_ABORT_UNLESS(NArrow::IsSorted(batch, SortSchema)); + auto filterImpl = (!filter || filter->IsTotalAllowFilter()) ? nullptr : filter; + SortHeap.Push(TBatchIterator(batch, filterImpl, SortSchema->field_names(), DataSchema ? DataSchema->field_names() : std::vector<std::string>(), Reverse, VersionColumnNames)); + } + + bool IsEmpty() const { + return !SortHeap.Size(); + } + + void DrainAll(TRecordBatchBuilder& builder); + std::shared_ptr<arrow::Table> SingleSourceDrain(const TSortableBatchPosition& readTo, const bool includeFinish, std::optional<TSortableBatchPosition>* lastResultPosition = nullptr); + bool DrainCurrentTo(TRecordBatchBuilder& builder, const TSortableBatchPosition& readTo, const bool includeFinish, std::optional<TSortableBatchPosition>* lastResultPosition = nullptr); + bool DrainToControlPoint(TRecordBatchBuilder& builder, const bool includeFinish, std::optional<TSortableBatchPosition>* lastResultPosition = nullptr); + std::vector<std::shared_ptr<arrow::RecordBatch>> DrainAllParts(const std::map<TSortableBatchPosition, bool>& positions, + const std::vector<std::shared_ptr<arrow::Field>>& resultFields); +}; + +} diff --git a/ydb/core/formats/arrow/reader/read_filter_merger.cpp b/ydb/core/formats/arrow/reader/position.cpp similarity index 75% rename from ydb/core/formats/arrow/reader/read_filter_merger.cpp rename to ydb/core/formats/arrow/reader/position.cpp index 726767dbecc0..a11863b32b91 100644 --- a/ydb/core/formats/arrow/reader/read_filter_merger.cpp +++ b/ydb/core/formats/arrow/reader/position.cpp @@ -1,7 +1,7 @@ -#include "read_filter_merger.h" -#include <ydb/library/actors/core/log.h> +#include "position.h" +#include <util/string/join.h> -namespace NKikimr::NOlap::NIndexedReader { +namespace NKikimr::NArrow::NMerger { NJson::TJsonValue TSortableBatchPosition::DebugJson() const { NJson::TJsonValue result; @@ -86,12 +86,35 @@ TSortableBatchPosition::TFoundPosition TSortableBatchPosition::SkipToLower(const return *pos; } +TSortableScanData::TSortableScanData(const std::shared_ptr<TGeneralContainer>& batch, const std::vector<std::string>& columns) { + for (auto&& i : columns) { + auto c = batch->GetAccessorByNameOptional(i); + AFL_VERIFY(c)("column_name", i)("columns", JoinSeq(",", columns))("batch", batch->DebugString()); + Columns.emplace_back(NAccessor::IChunkedArray::TReader(c)); + auto f = batch->GetSchema()->GetFieldByName(i); + AFL_VERIFY(f); + Fields.emplace_back(f); + } +} + TSortableScanData::TSortableScanData(const std::shared_ptr<arrow::RecordBatch>& batch, const std::vector<std::string>& columns) { for (auto&& i : columns) { auto c = batch->GetColumnByName(i); AFL_VERIFY(c)("column_name", i)("columns", JoinSeq(",", columns)); - Columns.emplace_back(c); + Columns.emplace_back(NAccessor::IChunkedArray::TReader(std::make_shared<NAccessor::TTrivialArray>(c))); + auto f = batch->schema()->GetFieldByName(i); + AFL_VERIFY(f); + Fields.emplace_back(f); + } +} + +TSortableScanData::TSortableScanData(const std::shared_ptr<arrow::Table>& batch, const std::vector<std::string>& columns) { + for (auto&& i : columns) { + auto c = batch->GetColumnByName(i); + AFL_VERIFY(c)("column_name", i)("columns", JoinSeq(",", columns)); + Columns.emplace_back(NAccessor::IChunkedArray::TReader(std::make_shared<NAccessor::TTrivialChunkedArray>(c))); auto f = batch->schema()->GetFieldByName(i); + AFL_VERIFY(f); Fields.emplace_back(f); } } diff --git a/ydb/core/formats/arrow/reader/read_filter_merger.h b/ydb/core/formats/arrow/reader/position.h similarity index 83% rename from ydb/core/formats/arrow/reader/read_filter_merger.h rename to ydb/core/formats/arrow/reader/position.h index 9ed0befd0442..f2a070d7b1f2 100644 --- a/ydb/core/formats/arrow/reader/read_filter_merger.h +++ b/ydb/core/formats/arrow/reader/position.h @@ -1,44 +1,49 @@ #pragma once -#include <ydb/library/accessor/accessor.h> -#include <ydb/core/formats/arrow/arrow_filter.h> -#include <ydb/core/formats/arrow/arrow_helpers.h> -#include <ydb/core/formats/arrow/switch/switch_type.h> +#include <ydb/core/formats/arrow/common/accessor.h> #include <ydb/core/formats/arrow/permutations.h> -#include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> +#include <ydb/core/formats/arrow/switch/switch_type.h> +#include <ydb/core/formats/arrow/switch/compare.h> +#include <ydb/core/formats/arrow/common/container.h> + +#include <ydb/library/accessor/accessor.h> #include <ydb/library/actors/core/log.h> -#include <util/generic/hash.h> -#include <util/string/join.h> -#include <set> -namespace NKikimr::NOlap::NIndexedReader { +#include <library/cpp/json/writer/json_value.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> +#include <util/system/types.h> + +namespace NKikimr::NArrow::NMerger { class TRecordBatchBuilder; class TSortableScanData { private: - YDB_READONLY_DEF(std::vector<std::shared_ptr<arrow::Array>>, Columns); + YDB_READONLY_DEF(std::vector<NAccessor::IChunkedArray::TReader>, Columns); YDB_READONLY_DEF(std::vector<std::shared_ptr<arrow::Field>>, Fields); public: TSortableScanData() = default; TSortableScanData(const std::shared_ptr<arrow::RecordBatch>& batch, const std::vector<std::string>& columns); + TSortableScanData(const std::shared_ptr<arrow::Table>& batch, const std::vector<std::string>& columns); + TSortableScanData(const std::shared_ptr<TGeneralContainer>& batch, const std::vector<std::string>& columns); std::shared_ptr<arrow::RecordBatch> ExtractPosition(const ui64 pos) const { std::vector<std::shared_ptr<arrow::Array>> columns; std::shared_ptr<arrow::Schema> schema = std::make_shared<arrow::Schema>(Fields); for (ui32 i = 0; i < Columns.size(); ++i) { - auto extracted = NArrow::CopyRecords(Columns[i], {pos}); + auto extracted = Columns[i].CopyRecord(pos); columns.emplace_back(extracted); } return arrow::RecordBatch::Make(schema, 1, columns); } - std::shared_ptr<arrow::RecordBatch> Slice(const ui64 offset, const ui64 count) const { - std::vector<std::shared_ptr<arrow::Array>> slicedArrays; + std::shared_ptr<arrow::Table> Slice(const ui64 offset, const ui64 count) const { + std::vector<std::shared_ptr<arrow::ChunkedArray>> slicedArrays; for (auto&& i : Columns) { - AFL_VERIFY(offset + count <= (ui64)i->length())("offset", offset)("count", count)("length", i->length()); - slicedArrays.emplace_back(i->Slice(offset, count)); + slicedArrays.emplace_back(i.Slice(offset, count)); } - return arrow::RecordBatch::Make(std::make_shared<arrow::Schema>(Fields), count, slicedArrays); + return arrow::Table::Make(std::make_shared<arrow::Schema>(Fields), slicedArrays, count); } bool IsSameSchema(const std::shared_ptr<arrow::Schema>& schema) const { @@ -65,8 +70,8 @@ class TSortableScanData { for (ui32 i = 0; i < Columns.size(); ++i) { auto& jsonColumn = result["sorting_columns"].AppendValue(NJson::JSON_MAP); jsonColumn["name"] = Fields[i]->name(); - if (position >= 0 && position < Columns[i]->length()) { - jsonColumn["value"] = NArrow::DebugString(Columns[i], position); + if (position >= 0 && (ui64)position < Columns[i].GetRecordsCount()) { + jsonColumn["value"] = Columns[i].DebugString(position); } } return result; @@ -84,7 +89,7 @@ class TSortableScanData { class TSortableBatchPosition { private: YDB_READONLY(i64, Position, 0); - i64 RecordsCount = 0; + YDB_READONLY(i64, RecordsCount, 0); bool ReverseSort = false; std::shared_ptr<TSortableScanData> Sorting; std::shared_ptr<TSortableScanData> Data; @@ -95,12 +100,12 @@ class TSortableBatchPosition { return Sorting->ExtractPosition(Position); } - std::shared_ptr<arrow::RecordBatch> SliceData(const ui64 offset, const ui64 count) const { + std::shared_ptr<arrow::Table> SliceData(const ui64 offset, const ui64 count) const { AFL_VERIFY(Data); return Data->Slice(offset, count); } - std::shared_ptr<arrow::RecordBatch> SliceKeys(const ui64 offset, const ui64 count) const { + std::shared_ptr<arrow::Table> SliceKeys(const ui64 offset, const ui64 count) const { AFL_VERIFY(Sorting); return Sorting->Slice(offset, count); } @@ -140,7 +145,9 @@ class TSortableBatchPosition { // (-inf, it1), [it1, it2), [it2, it3), ..., [itLast, +inf) template <class TBordersIterator> - static std::vector<std::shared_ptr<arrow::RecordBatch>> SplitByBorders(const std::shared_ptr<arrow::RecordBatch>& batch, const std::vector<std::string>& columnNames, TBordersIterator& it) { + static std::vector<std::shared_ptr<arrow::RecordBatch>> SplitByBorders(const std::shared_ptr<arrow::RecordBatch>& batch, + const std::vector<std::string>& columnNames, TBordersIterator& it) + { std::vector<std::shared_ptr<arrow::RecordBatch>> result; if (!batch || batch->num_rows() == 0) { while (it.IsValid()) { @@ -245,7 +252,7 @@ class TSortableBatchPosition { static std::optional<TFoundPosition> FindPosition(const std::shared_ptr<arrow::RecordBatch>& batch, const TSortableBatchPosition& forFound, const bool needGreater, const std::optional<ui32> includedStartPosition); static std::optional<TSortableBatchPosition::TFoundPosition> FindPosition(TSortableBatchPosition& position, const ui64 posStart, const ui64 posFinish, const TSortableBatchPosition& forFound, const bool greater); - TSortableBatchPosition::TFoundPosition SkipToLower(const TSortableBatchPosition & forFound); + TSortableBatchPosition::TFoundPosition SkipToLower(const TSortableBatchPosition& forFound); const TSortableScanData& GetData() const { return *Data; @@ -268,13 +275,16 @@ class TSortableBatchPosition { return Sorting->IsSameSchema(schema); } - TSortableBatchPosition(const std::shared_ptr<arrow::RecordBatch>& batch, const ui32 position, const std::vector<std::string>& sortingColumns, const std::vector<std::string>& dataColumns, const bool reverseSort) + template <class TRecords> + TSortableBatchPosition(const std::shared_ptr<TRecords>& batch, const ui32 position, const std::vector<std::string>& sortingColumns, + const std::vector<std::string>& dataColumns, const bool reverseSort) : Position(position) - , ReverseSort(reverseSort) + , ReverseSort(reverseSort) { Y_ABORT_UNLESS(batch); Y_ABORT_UNLESS(batch->num_rows()); RecordsCount = batch->num_rows(); + AFL_VERIFY(Position < RecordsCount)("position", Position)("count", RecordsCount); if (dataColumns.size()) { Data = std::make_shared<TSortableScanData>(batch, dataColumns); @@ -287,7 +297,7 @@ class TSortableBatchPosition { std::partial_ordering Compare(const TSortableBatchPosition& item) const { Y_ABORT_UNLESS(item.ReverseSort == ReverseSort); Y_ABORT_UNLESS(item.Sorting->GetColumns().size() == Sorting->GetColumns().size()); - const auto directResult = NArrow::ColumnsCompare(Sorting->GetColumns(), Position, item.Sorting->GetColumns(), item.Position); + const auto directResult = NAccessor::IChunkedArray::TReader::CompareColumns(Sorting->GetColumns(), Position, item.Sorting->GetColumns(), item.Position); if (ReverseSort) { if (directResult == std::partial_ordering::less) { return std::partial_ordering::greater; @@ -324,9 +334,8 @@ class TSortableBatchPosition { } else { return false; } - - } + } }; } diff --git a/ydb/core/formats/arrow/reader/result_builder.cpp b/ydb/core/formats/arrow/reader/result_builder.cpp new file mode 100644 index 000000000000..5a7d79a08fed --- /dev/null +++ b/ydb/core/formats/arrow/reader/result_builder.cpp @@ -0,0 +1,71 @@ +#include "result_builder.h" + +#include <ydb/core/formats/arrow/common/validation.h> + +#include <ydb/library/actors/core/log.h> +#include <ydb/library/services/services.pb.h> + +#include <util/string/builder.h> + +namespace NKikimr::NArrow::NMerger { + +void TRecordBatchBuilder::ValidateDataSchema(const std::shared_ptr<arrow::Schema>& schema) { + AFL_VERIFY(IsSameFieldsSequence(schema->fields(), Fields)); +} + +void TRecordBatchBuilder::AddRecord(const TSortableBatchPosition& position) { + AFL_VERIFY_DEBUG(position.GetData().GetColumns().size() == Builders.size()); + AFL_VERIFY_DEBUG(IsSameFieldsSequence(position.GetData().GetFields(), Fields)); +// AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "record_add_on_read")("record", position.DebugJson()); + for (ui32 i = 0; i < position.GetData().GetColumns().size(); ++i) { + position.GetData().GetColumns()[i].AppendPositionTo(*Builders[i], position.GetPosition(), MemoryBufferLimit ? &CurrentBytesUsed : nullptr); + } + ++RecordsCount; +} + +bool TRecordBatchBuilder::IsSameFieldsSequence(const std::vector<std::shared_ptr<arrow::Field>>& f1, const std::vector<std::shared_ptr<arrow::Field>>& f2) { + if (f1.size() != f2.size()) { + return false; + } + for (ui32 i = 0; i < f1.size(); ++i) { + if (!f1[i]->Equals(f2[i])) { + return false; + } + } + return true; +} + +TRecordBatchBuilder::TRecordBatchBuilder(const std::vector<std::shared_ptr<arrow::Field>>& fields, const std::optional<ui32> rowsCountExpectation /*= {}*/, const THashMap<std::string, ui64>& fieldDataSizePreallocated /*= {}*/) + : Fields(fields) +{ + AFL_VERIFY(Fields.size()); + for (auto&& f : fields) { + Builders.emplace_back(NArrow::MakeBuilder(f)); + auto it = fieldDataSizePreallocated.find(f->name()); + if (it != fieldDataSizePreallocated.end()) { + NArrow::ReserveData(*Builders.back(), it->second); + } + if (rowsCountExpectation) { + NArrow::TStatusValidator::Validate(Builders.back()->Reserve(*rowsCountExpectation)); + } + } +} + +std::shared_ptr<arrow::RecordBatch> TRecordBatchBuilder::Finalize() { + auto schema = std::make_shared<arrow::Schema>(Fields); + std::vector<std::shared_ptr<arrow::Array>> columns; + for (auto&& i : Builders) { + columns.emplace_back(NArrow::TStatusValidator::GetValid(i->Finish())); + } + return arrow::RecordBatch::Make(schema, columns.front()->length(), columns); +} + +TString TRecordBatchBuilder::GetColumnNames() const { + TStringBuilder result; + for (auto&& f : Fields) { + result << f->name() << ","; + } + return result; +} + +} diff --git a/ydb/core/formats/arrow/reader/result_builder.h b/ydb/core/formats/arrow/reader/result_builder.h new file mode 100644 index 000000000000..ba05e03cb934 --- /dev/null +++ b/ydb/core/formats/arrow/reader/result_builder.h @@ -0,0 +1,38 @@ +#pragma once +#include "position.h" +#include <ydb/library/accessor/accessor.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> +#include <util/system/types.h> +#include <optional> + +namespace NKikimr::NArrow::NMerger { + +class TRecordBatchBuilder { +private: + std::vector<std::unique_ptr<arrow::ArrayBuilder>> Builders; + YDB_READONLY_DEF(std::vector<std::shared_ptr<arrow::Field>>, Fields); + YDB_READONLY(ui32, RecordsCount, 0); + YDB_ACCESSOR_DEF(std::optional<ui32>, MemoryBufferLimit); + + ui64 CurrentBytesUsed = 0; + bool IsSameFieldsSequence(const std::vector<std::shared_ptr<arrow::Field>>& f1, const std::vector<std::shared_ptr<arrow::Field>>& f2); + +public: + ui32 GetBuildersCount() const { + return Builders.size(); + } + + TString GetColumnNames() const; + + TRecordBatchBuilder(const std::vector<std::shared_ptr<arrow::Field>>& fields, const std::optional<ui32> rowsCountExpectation = {}, const THashMap<std::string, ui64>& fieldDataSizePreallocated = {}); + + std::shared_ptr<arrow::RecordBatch> Finalize(); + + bool IsBufferExhausted() const { + return MemoryBufferLimit && *MemoryBufferLimit < CurrentBytesUsed; + } + void AddRecord(const TSortableBatchPosition& position); + void ValidateDataSchema(const std::shared_ptr<arrow::Schema>& schema); +}; + +} diff --git a/ydb/core/formats/arrow/reader/ya.make b/ydb/core/formats/arrow/reader/ya.make index 16e5877a6ee4..d57bb4e501ca 100644 --- a/ydb/core/formats/arrow/reader/ya.make +++ b/ydb/core/formats/arrow/reader/ya.make @@ -4,11 +4,17 @@ PEERDIR( contrib/libs/apache/arrow ydb/core/formats/arrow/simple_builder ydb/core/formats/arrow/switch + ydb/core/formats/arrow/common ydb/library/actors/core + ydb/library/services ) SRCS( - read_filter_merger.cpp + batch_iterator.cpp + merger.cpp + position.cpp + heap.cpp + result_builder.cpp ) END() diff --git a/ydb/core/formats/arrow/replace_key.h b/ydb/core/formats/arrow/replace_key.h index f92a677050fb..f3b710fc7392 100644 --- a/ydb/core/formats/arrow/replace_key.h +++ b/ydb/core/formats/arrow/replace_key.h @@ -1,7 +1,10 @@ #pragma once #include "arrow_helpers.h" #include "permutations.h" + #include "common/validation.h" +#include "switch/compare.h" + #include <ydb/core/base/defs.h> #include <ydb/library/actors/core/log.h> @@ -121,14 +124,14 @@ class TReplaceKeyTemplate { std::partial_ordering CompareColumnValueNotNull(int column, const TReplaceKeyTemplate<T>& key, int keyColumn) const { Y_DEBUG_ABORT_UNLESS(Column(column).type_id() == key.Column(keyColumn).type_id()); - return TypedCompare<true>(Column(column), Position, key.Column(keyColumn), key.Position); + return TComparator::TypedCompare<true>(Column(column), Position, key.Column(keyColumn), key.Position); } template<typename T> std::partial_ordering CompareColumnValue(int column, const TReplaceKeyTemplate<T>& key, int keyColumn) const { Y_DEBUG_ABORT_UNLESS(Column(column).type_id() == key.Column(keyColumn).type_id()); - return TypedCompare<false>(Column(column), Position, key.Column(keyColumn), key.Position); + return TComparator::TypedCompare<false>(Column(column), Position, key.Column(keyColumn), key.Position); } int Size() const { @@ -219,111 +222,6 @@ class TReplaceKeyTemplate { TArrayVecPtr Columns = nullptr; ui64 Position = 0; - template <bool notNull> - static std::partial_ordering TypedCompare(const arrow::Array& lhs, int lpos, const arrow::Array& rhs, int rpos) { - arrow::Type::type typeId = lhs.type_id(); - switch (typeId) { - case arrow::Type::NA: - case arrow::Type::BOOL: - break; - case arrow::Type::UINT8: - return CompareView<arrow::UInt8Array, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::INT8: - return CompareView<arrow::Int8Array, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::UINT16: - return CompareView<arrow::UInt16Array, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::INT16: - return CompareView<arrow::Int16Array, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::UINT32: - return CompareView<arrow::UInt32Array, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::INT32: - return CompareView<arrow::Int32Array, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::UINT64: - return CompareView<arrow::UInt64Array, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::INT64: - return CompareView<arrow::Int64Array, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::HALF_FLOAT: - break; - case arrow::Type::FLOAT: - return CompareView<arrow::FloatArray, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::DOUBLE: - return CompareView<arrow::DoubleArray, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::STRING: - return CompareView<arrow::StringArray, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::BINARY: - return CompareView<arrow::BinaryArray, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::FIXED_SIZE_BINARY: - case arrow::Type::DATE32: - case arrow::Type::DATE64: - break; - case arrow::Type::TIMESTAMP: - return CompareView<arrow::TimestampArray, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::TIME32: - return CompareView<arrow::Time32Array, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::TIME64: - return CompareView<arrow::Time64Array, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::DURATION: - return CompareView<arrow::DurationArray, notNull>(lhs, lpos, rhs, rpos); - case arrow::Type::DECIMAL256: - case arrow::Type::DECIMAL: - case arrow::Type::DENSE_UNION: - case arrow::Type::DICTIONARY: - case arrow::Type::EXTENSION: - case arrow::Type::FIXED_SIZE_LIST: - case arrow::Type::INTERVAL_DAY_TIME: - case arrow::Type::INTERVAL_MONTHS: - case arrow::Type::LARGE_BINARY: - case arrow::Type::LARGE_LIST: - case arrow::Type::LARGE_STRING: - case arrow::Type::LIST: - case arrow::Type::MAP: - case arrow::Type::MAX_ID: - case arrow::Type::SPARSE_UNION: - case arrow::Type::STRUCT: - Y_ABORT("not implemented"); - break; - } - return std::partial_ordering::equivalent; - } - - template <typename T, bool notNull> - static std::partial_ordering CompareView(const arrow::Array& lhs, int lpos, const arrow::Array& rhs, int rpos) { - auto& left = static_cast<const T&>(lhs); - auto& right = static_cast<const T&>(rhs); - if constexpr (notNull) { - return CompareValueNotNull(left.GetView(lpos), right.GetView(rpos)); - } else { - return CompareValue(left.GetView(lpos), right.GetView(rpos), left.IsNull(lpos), right.IsNull(rpos)); - } - } - - template <typename T> - static std::partial_ordering CompareValue(const T& x, const T& y, bool xIsNull, bool yIsNull) { - // TODO: std::partial_ordering::unordered for both nulls? - if (xIsNull) { - return std::partial_ordering::less; - } - if (yIsNull) { - return std::partial_ordering::greater; - } - return CompareValueNotNull(x, y); - } - - template <typename T> - static std::partial_ordering CompareValueNotNull(const T& x, const T& y) { - if constexpr (std::is_same_v<T, arrow::util::string_view>) { - size_t minSize = (x.size() < y.size()) ? x.size() : y.size(); - int cmp = memcmp(x.data(), y.data(), minSize); - if (cmp < 0) { - return std::partial_ordering::less; - } else if (cmp > 0) { - return std::partial_ordering::greater; - } - return CompareValueNotNull(x.size(), y.size()); - } else { - return x <=> y; - } - } }; using TReplaceKey = TReplaceKeyTemplate<std::shared_ptr<TArrayVec>>; diff --git a/ydb/core/formats/arrow/serializer/abstract.h b/ydb/core/formats/arrow/serializer/abstract.h index 6051f9fc90ce..1c8d9963dd7e 100644 --- a/ydb/core/formats/arrow/serializer/abstract.h +++ b/ydb/core/formats/arrow/serializer/abstract.h @@ -1,9 +1,12 @@ #pragma once +#include <ydb/core/protos/flat_scheme_op.pb.h> #include <ydb/library/conclusion/status.h> #include <ydb/services/metadata/abstract/request_features.h> #include <ydb/services/bg_tasks/abstract/interface.h> -#include <ydb/core/protos/flat_scheme_op.pb.h> +#include <ydb/core/formats/arrow/common/validation.h> + +#include <ydb/library/conclusion/result.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/status.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> @@ -32,6 +35,9 @@ class ISerializer { using TProto = NKikimrSchemeOp::TOlapColumn::TSerializer; virtual ~ISerializer() = default; + virtual bool IsCompatibleForExchangeWithSameClass(const ISerializer& item) const = 0; + virtual bool IsEqualToSameClass(const ISerializer& item) const = 0; + TConclusionStatus DeserializeFromRequest(NYql::TFeaturesExtractor& features) { return DoDeserializeFromRequest(features); } @@ -49,13 +55,30 @@ class ISerializer { } TString SerializeFull(const std::shared_ptr<arrow::RecordBatch>& batch) const { + if (!batch) { + return ""; + } return DoSerializeFull(batch); } TString SerializePayload(const std::shared_ptr<arrow::RecordBatch>& batch) const { + if (!batch) { + return ""; + } return DoSerializePayload(batch); } + std::shared_ptr<arrow::RecordBatch> Repack(const std::shared_ptr<arrow::RecordBatch>& batch) { + if (!batch) { + return batch; + } + return TStatusValidator::GetValid(Deserialize(SerializeFull(batch))); + } + + TString Repack(const TString& batchString) { + return SerializeFull(TStatusValidator::GetValid(Deserialize(batchString))); + } + arrow::Result<std::shared_ptr<arrow::RecordBatch>> Deserialize(const TString& data) const { if (!data) { return nullptr; @@ -87,6 +110,32 @@ class TSerializerContainer: public NBackgroundTasks::TInterfaceProtoContainer<IS } + bool IsCompatibleForExchange(const TSerializerContainer& item) const { + if (!GetObjectPtr() && !!item.GetObjectPtr()) { + return false; + } + if (!!GetObjectPtr() && !item.GetObjectPtr()) { + return false; + } + if (GetObjectPtr()->GetClassName() != item.GetObjectPtr()->GetClassName()) { + return false; + } + return GetObjectPtr()->IsCompatibleForExchangeWithSameClass(*item.GetObjectPtr()); + } + + bool IsEqualTo(const TSerializerContainer& item) const { + if (!GetObjectPtr() && !!item.GetObjectPtr()) { + return false; + } + if (!!GetObjectPtr() && !item.GetObjectPtr()) { + return false; + } + if (GetObjectPtr()->GetClassName() != item.GetObjectPtr()->GetClassName()) { + return false; + } + return GetObjectPtr()->IsEqualToSameClass(*item.GetObjectPtr()); + } + TString DebugString() const { if (GetObjectPtr()) { return GetObjectPtr()->DebugString(); @@ -101,6 +150,23 @@ class TSerializerContainer: public NBackgroundTasks::TInterfaceProtoContainer<IS TConclusionStatus DeserializeFromProto(const NKikimrSchemeOp::TCompressionOptions& proto); TConclusionStatus DeserializeFromRequest(NYql::TFeaturesExtractor& features); + + static TConclusion<TSerializerContainer> BuildFromProto(const NKikimrSchemeOp::TOlapColumn::TSerializer& proto) { + TSerializerContainer result; + if (!result.DeserializeFromProto(proto)) { + return TConclusionStatus::Fail("cannot parse proto for serializer construction: " + proto.DebugString()); + } + return result; + } + + static TConclusion<TSerializerContainer> BuildFromProto(const NKikimrSchemeOp::TCompressionOptions& proto) { + TSerializerContainer result; + auto parsed = result.DeserializeFromProto(proto); + if (!parsed) { + return parsed; + } + return result; + } }; } diff --git a/ydb/core/formats/arrow/serializer/native.h b/ydb/core/formats/arrow/serializer/native.h index ece3e9e34fc9..260b1f73c324 100644 --- a/ydb/core/formats/arrow/serializer/native.h +++ b/ydb/core/formats/arrow/serializer/native.h @@ -23,6 +23,26 @@ class TNativeSerializer: public ISerializer { TConclusion<std::shared_ptr<arrow::util::Codec>> BuildCodec(const arrow::Compression::type& cType, const std::optional<ui32> level) const; static const inline TFactory::TRegistrator<TNativeSerializer> Registrator = TFactory::TRegistrator<TNativeSerializer>(GetClassNameStatic()); protected: + virtual bool IsCompatibleForExchangeWithSameClass(const ISerializer& /*item*/) const override { + return true; + } + + virtual bool IsEqualToSameClass(const ISerializer& item) const override { + auto& itemOptions = static_cast<const TNativeSerializer&>(item).Options; + if (!!itemOptions.codec != !!Options.codec) { + return false; + } + if (!itemOptions.codec) { + return true; + } + if (itemOptions.codec->name() != Options.codec->name()) { + return false; + } + if (itemOptions.codec->compression_level() != Options.codec->compression_level()) { + return false; + } + return true; + } virtual TString DoSerializeFull(const std::shared_ptr<arrow::RecordBatch>& batch) const override; virtual TString DoSerializePayload(const std::shared_ptr<arrow::RecordBatch>& batch) const override; virtual arrow::Result<std::shared_ptr<arrow::RecordBatch>> DoDeserialize(const TString& data) const override; diff --git a/ydb/core/formats/arrow/size_calcer.cpp b/ydb/core/formats/arrow/size_calcer.cpp index 838511202514..bff5f06aed40 100644 --- a/ydb/core/formats/arrow/size_calcer.cpp +++ b/ydb/core/formats/arrow/size_calcer.cpp @@ -147,6 +147,32 @@ ui64 GetBatchMemorySize(const std::shared_ptr<arrow::RecordBatch>& batch) { return bytes; } +ui64 GetTableMemorySize(const std::shared_ptr<arrow::Table>& batch) { + if (!batch) { + return 0; + } + ui64 bytes = 0; + for (auto& column : batch->columns()) { + for (auto&& chunk : column->chunks()) { + bytes += GetArrayMemorySize(chunk->data()); + } + } + return bytes; +} + +ui64 GetTableDataSize(const std::shared_ptr<arrow::Table>& batch) { + if (!batch) { + return 0; + } + ui64 bytes = 0; + for (auto& column : batch->columns()) { + for (auto&& chunk : column->chunks()) { + bytes += GetArrayDataSize(chunk); + } + } + return bytes; +} + template <typename TType> ui64 GetArrayDataSizeImpl(const std::shared_ptr<arrow::Array>& column) { return sizeof(typename TType::c_type) * column->length(); diff --git a/ydb/core/formats/arrow/size_calcer.h b/ydb/core/formats/arrow/size_calcer.h index 2bf5120ed280..83ee4da3f0f0 100644 --- a/ydb/core/formats/arrow/size_calcer.h +++ b/ydb/core/formats/arrow/size_calcer.h @@ -130,9 +130,11 @@ TSplitBlobResult SplitByBlobSize(const std::shared_ptr<arrow::RecordBatch>& batc // Return size in bytes including size of bitmap mask ui64 GetBatchDataSize(const std::shared_ptr<arrow::RecordBatch>& batch); +ui64 GetTableDataSize(const std::shared_ptr<arrow::Table>& batch); // Return size in bytes including size of bitmap mask ui64 GetArrayMemorySize(const std::shared_ptr<arrow::ArrayData>& data); ui64 GetBatchMemorySize(const std::shared_ptr<arrow::RecordBatch>&batch); +ui64 GetTableMemorySize(const std::shared_ptr<arrow::Table>& batch); // Return size in bytes *not* including size of bitmap mask ui64 GetArrayDataSize(const std::shared_ptr<arrow::Array>& column); diff --git a/ydb/core/formats/arrow/sort_cursor.h b/ydb/core/formats/arrow/sort_cursor.h deleted file mode 100644 index f51f4145ae60..000000000000 --- a/ydb/core/formats/arrow/sort_cursor.h +++ /dev/null @@ -1,262 +0,0 @@ -// The code in this file is based on original ClickHouse source code -// which is licensed under Apache license v2.0 -// See: https://github.com/ClickHouse/ClickHouse/ - -#pragma once -#include "replace_key.h" -#include "arrow_helpers.h" -#include <contrib/libs/apache/arrow/cpp/src/arrow/api.h> -#include <algorithm> - -namespace NKikimr::NArrow { - -/// Description of the sorting rule for several columns. -struct TSortDescription { - /// @note In case you have PK and snapshot column you should sort with {ASC PK, DESC snap} key and replase with PK - std::shared_ptr<arrow::Schema> SortingKey; - std::shared_ptr<arrow::Schema> ReplaceKey; /// Keep first visited (SortingKey ordered) of dups - std::vector<int> Directions; /// 1 - ascending, -1 - descending. - bool NotNull{false}; - bool Reverse{false}; // Read sources from bottom to top. With inversed Directions leads to DESC dst for ASC src - - TSortDescription() = default; - - TSortDescription(const std::shared_ptr<arrow::Schema>& sortingKey, - const std::shared_ptr<arrow::Schema>& replaceKey = {}) - : SortingKey(sortingKey) - , ReplaceKey(replaceKey) - , Directions(sortingKey->num_fields(), 1) - {} - - size_t Size() const { return SortingKey->num_fields(); } - int Direction(size_t pos) const { return Directions[pos]; } - bool Replace() const { return ReplaceKey.get(); } - - void Inverse() { - Reverse = !Reverse; - for (int& dir : Directions) { - dir *= -1; - } - } -}; - - -/// Cursor allows to compare rows in different batches. -/// Cursor moves inside single block. It is used in priority queue. -struct TSortCursorImpl { - std::shared_ptr<TArrayVec> sort_columns; - std::shared_ptr<TSortDescription> desc; - ui32 order = 0; // Number of cursor. It determines an order if comparing columns are equal. - // - std::shared_ptr<arrow::RecordBatch> current_batch; - const TArrayVec* all_columns; - std::shared_ptr<TArrayVec> replace_columns; - - TSortCursorImpl() = default; - - TSortCursorImpl(std::shared_ptr<arrow::RecordBatch> batch, std::shared_ptr<TSortDescription> desc_, ui32 order_ = 0) - : desc(desc_) - , order(order_) - { - Reset(batch); - } - - bool Empty() const { return Rows() == 0; } - size_t Rows() const { return (!all_columns || all_columns->empty()) ? 0 : all_columns->front()->length(); } - size_t LastRow() const { return Rows() - 1; } - - void Reset(std::shared_ptr<arrow::RecordBatch> batch) { - current_batch = batch; - auto rbSorting = ExtractColumns(batch, desc->SortingKey); - Y_ABORT_UNLESS(rbSorting); - sort_columns = std::make_shared<TArrayVec>(rbSorting->columns()); - all_columns = &batch->columns(); - if (desc->ReplaceKey) { - auto rbReplace = ExtractColumns(batch, desc->ReplaceKey); - Y_ABORT_UNLESS(rbReplace); - replace_columns = std::make_shared<TArrayVec>(rbReplace->columns()); - } - pos = 0; - } - - size_t getRow() const { - return desc->Reverse ? (Rows() - pos - 1) : pos; - } - - bool isFirst() const { return pos == 0; } - bool isLast() const { return pos + 1 >= Rows(); } - bool isValid() const { return pos < Rows(); } - void next() { ++pos; } - -private: - size_t pos{0}; -}; - - -struct TSortCursor { - TSortCursorImpl* Impl; - bool NotNull; - - TSortCursor(TSortCursorImpl* impl, bool notNull) - : Impl(impl) - , NotNull(notNull) - {} - - TSortCursorImpl* operator-> () { return Impl; } - const TSortCursorImpl* operator-> () const { return Impl; } - - bool Greater(const TSortCursor& rhs) const { - return GreaterAt(rhs, Impl->getRow(), rhs.Impl->getRow()); - } - - /// Inverted so that the priority queue elements are removed in ascending order. - bool operator < (const TSortCursor& rhs) const { - return Greater(rhs); - } - -private: - /// The specified row of this cursor is greater than the specified row of another cursor. - bool GreaterAt(const TSortCursor& rhs, size_t lhs_pos, size_t rhs_pos) const { - TRawReplaceKey left(Impl->sort_columns.get(), lhs_pos); - TRawReplaceKey right(rhs.Impl->sort_columns.get(), rhs_pos); - - if (NotNull) { - for (size_t i = 0; i < Impl->desc->Size(); ++i) { - auto cmp = left.CompareColumnValueNotNull(i, right, i); - int res = Impl->desc->Direction(i) * (std::is_eq(cmp) ? 0 : (std::is_lt(cmp) ? -1 : 1)); - if (res > 0) - return true; - if (res < 0) - return false; - } - } else { - for (size_t i = 0; i < Impl->desc->Size(); ++i) { - auto cmp = left.CompareColumnValue(i, right, i); - int res = Impl->desc->Direction(i) * (std::is_eq(cmp) ? 0 : (std::is_lt(cmp) ? -1 : 1)); - if (res > 0) - return true; - if (res < 0) - return false; - } - } - return Impl->order > rhs.Impl->order; - } -}; - - -/// Allows to fetch data from multiple sort cursors in sorted order (merging sorted data stream). -/// TODO: Replace with "Loser Tree", see https://en.wikipedia.org/wiki/K-way_merge_algorithm -class TSortingHeap { -public: - TSortingHeap() = default; - - template <typename TCursors> - TSortingHeap(TCursors& cursors, bool notNull) { - Queue.reserve(cursors.size()); - for (auto& cur : cursors) { - if (!cur.Empty()) { - Queue.emplace_back(TSortCursor(&cur, notNull)); - } - } - std::make_heap(Queue.begin(), Queue.end()); - } - - bool IsValid() const { return !Queue.empty(); } - TSortCursor& Current() { return Queue.front(); } - size_t Size() { return Queue.size(); } - TSortCursor& NextChild() { return Queue[NextChildIndex()]; } - - void Next() { - Y_ABORT_UNLESS(IsValid()); - - if (!Current()->isLast()) { - Current()->next(); - UpdateTop(); - } - else { - RemoveTop(); - } - } - - void ReplaceTop(TSortCursor&& new_top) { - Current() = new_top; - UpdateTop(); - } - - void RemoveTop() { - std::pop_heap(Queue.begin(), Queue.end()); - Queue.pop_back(); - NextIdx = 0; - } - - void Push(TSortCursor&& cursor) { - Queue.emplace_back(cursor); - std::push_heap(Queue.begin(), Queue.end()); - NextIdx = 0; - } - -private: - std::vector<TSortCursor> Queue; - /// Cache comparison between first and second child if the order in queue has not been changed. - size_t NextIdx = 0; - - size_t NextChildIndex() { - if (NextIdx == 0) { - NextIdx = 1; - if (Queue.size() > 2 && Queue[1] < Queue[2]) { - ++NextIdx; - } - } - - return NextIdx; - } - - /// This is adapted version of the function __sift_down from libc++. - /// Why cannot simply use std::priority_queue? - /// - because it doesn't support updating the top element and requires pop and push instead. - /// Also look at "Boost.Heap" library. - void UpdateTop() { - size_t size = Queue.size(); - if (size < 2) - return; - - auto begin = Queue.begin(); - - size_t child_idx = NextChildIndex(); - auto child_it = begin + child_idx; - - /// Check if we are in order. - if (*child_it < *begin) - return; - - NextIdx = 0; - - auto curr_it = begin; - auto top(std::move(*begin)); - do { - /// We are not in heap-order, swap the parent with it's largest child. - *curr_it = std::move(*child_it); - curr_it = child_it; - - // recompute the child based off of the updated parent - child_idx = 2 * child_idx + 1; - - if (child_idx >= size) - break; - - child_it = begin + child_idx; - - if ((child_idx + 1) < size && *child_it < *(child_it + 1)) - { - /// Right child exists and is greater than left child. - ++child_it; - ++child_idx; - } - - /// Check if we are in order. - } while (!(*child_it < top)); - *curr_it = std::move(top); - } -}; - -} diff --git a/ydb/core/formats/arrow/special_keys.cpp b/ydb/core/formats/arrow/special_keys.cpp index b84fa44799c6..a654c4be6ef6 100644 --- a/ydb/core/formats/arrow/special_keys.cpp +++ b/ydb/core/formats/arrow/special_keys.cpp @@ -1,6 +1,9 @@ #include "special_keys.h" #include "permutations.h" -#include "reader/read_filter_merger.h" +#include "size_calcer.h" + +#include "reader/position.h" + #include <ydb/core/formats/arrow/serializer/abstract.h> #include <ydb/core/formats/arrow/arrow_helpers.h> #include <ydb/core/formats/arrow/arrow_filter.h> @@ -32,6 +35,14 @@ TString TSpecialKeys::SerializeToStringDataOnlyNoCompression() const { return NArrow::SerializeBatchNoCompression(Data); } +ui64 TSpecialKeys::GetMemoryBytes() const { + return Data ? NArrow::GetBatchDataSize(Data) : 0; +} + +ui64 TSpecialKeys::GetMemorySize() const { + return GetBatchMemorySize(Data); +} + TFirstLastSpecialKeys::TFirstLastSpecialKeys(const std::shared_ptr<arrow::RecordBatch>& batch, const std::vector<TString>& columnNames /*= {}*/) { Y_ABORT_UNLESS(batch); Y_ABORT_UNLESS(batch->num_rows()); @@ -53,9 +64,9 @@ TMinMaxSpecialKeys::TMinMaxSpecialKeys(std::shared_ptr<arrow::RecordBatch> batch Y_ABORT_UNLESS(batch->num_rows()); Y_ABORT_UNLESS(schema); - NOlap::NIndexedReader::TSortableBatchPosition record(batch, 0, schema->field_names(), {}, false); - std::optional<NOlap::NIndexedReader::TSortableBatchPosition> minValue; - std::optional<NOlap::NIndexedReader::TSortableBatchPosition> maxValue; + NMerger::TSortableBatchPosition record(batch, 0, schema->field_names(), {}, false); + std::optional<NMerger::TSortableBatchPosition> minValue; + std::optional<NMerger::TSortableBatchPosition> maxValue; while (true) { if (!minValue || minValue->Compare(record) == std::partial_ordering::greater) { minValue = record; diff --git a/ydb/core/formats/arrow/special_keys.h b/ydb/core/formats/arrow/special_keys.h index f157ce089fe4..d56e658fbb68 100644 --- a/ydb/core/formats/arrow/special_keys.h +++ b/ydb/core/formats/arrow/special_keys.h @@ -20,6 +20,8 @@ class TSpecialKeys { } public: + ui64 GetMemoryBytes() const; + TString SerializeToStringDataOnlyNoCompression() const; TSpecialKeys(const TString& data, const std::shared_ptr<arrow::Schema>& schema) { @@ -33,6 +35,7 @@ class TSpecialKeys { } TString SerializeToString() const; + ui64 GetMemorySize() const; }; class TFirstLastSpecialKeys: public TSpecialKeys { diff --git a/ydb/core/formats/arrow/switch/compare.cpp b/ydb/core/formats/arrow/switch/compare.cpp new file mode 100644 index 000000000000..4dacd9c5434f --- /dev/null +++ b/ydb/core/formats/arrow/switch/compare.cpp @@ -0,0 +1,5 @@ +#include "compare.h" + +namespace NKikimr::NArrow { + +} \ No newline at end of file diff --git a/ydb/core/formats/arrow/switch/compare.h b/ydb/core/formats/arrow/switch/compare.h new file mode 100644 index 000000000000..54beba09e6a8 --- /dev/null +++ b/ydb/core/formats/arrow/switch/compare.h @@ -0,0 +1,115 @@ +#pragma once +#include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> +#include <util/system/yassert.h> + +namespace NKikimr::NArrow { + +class TComparator { +public: + template <bool notNull> + static std::partial_ordering TypedCompare(const arrow::Array& lhs, const int lpos, const arrow::Array& rhs, const int rpos) { + arrow::Type::type typeId = lhs.type_id(); + switch (typeId) { + case arrow::Type::NA: + case arrow::Type::BOOL: + break; + case arrow::Type::UINT8: + return CompareView<arrow::UInt8Array, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::INT8: + return CompareView<arrow::Int8Array, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::UINT16: + return CompareView<arrow::UInt16Array, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::INT16: + return CompareView<arrow::Int16Array, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::UINT32: + return CompareView<arrow::UInt32Array, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::INT32: + return CompareView<arrow::Int32Array, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::UINT64: + return CompareView<arrow::UInt64Array, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::INT64: + return CompareView<arrow::Int64Array, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::HALF_FLOAT: + break; + case arrow::Type::FLOAT: + return CompareView<arrow::FloatArray, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::DOUBLE: + return CompareView<arrow::DoubleArray, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::STRING: + return CompareView<arrow::StringArray, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::BINARY: + return CompareView<arrow::BinaryArray, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::FIXED_SIZE_BINARY: + case arrow::Type::DATE32: + case arrow::Type::DATE64: + break; + case arrow::Type::TIMESTAMP: + return CompareView<arrow::TimestampArray, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::TIME32: + return CompareView<arrow::Time32Array, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::TIME64: + return CompareView<arrow::Time64Array, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::DURATION: + return CompareView<arrow::DurationArray, notNull>(lhs, lpos, rhs, rpos); + case arrow::Type::DECIMAL256: + case arrow::Type::DECIMAL: + case arrow::Type::DENSE_UNION: + case arrow::Type::DICTIONARY: + case arrow::Type::EXTENSION: + case arrow::Type::FIXED_SIZE_LIST: + case arrow::Type::INTERVAL_DAY_TIME: + case arrow::Type::INTERVAL_MONTHS: + case arrow::Type::LARGE_BINARY: + case arrow::Type::LARGE_LIST: + case arrow::Type::LARGE_STRING: + case arrow::Type::LIST: + case arrow::Type::MAP: + case arrow::Type::MAX_ID: + case arrow::Type::SPARSE_UNION: + case arrow::Type::STRUCT: + Y_ABORT("not implemented"); + break; + } + return std::partial_ordering::equivalent; + } + + template <typename T, bool notNull> + static std::partial_ordering CompareView(const arrow::Array& lhs, int lpos, const arrow::Array& rhs, int rpos) { + auto& left = static_cast<const T&>(lhs); + auto& right = static_cast<const T&>(rhs); + if constexpr (notNull) { + return CompareValueNotNull(left.GetView(lpos), right.GetView(rpos)); + } else { + return CompareValue(left.GetView(lpos), right.GetView(rpos), left.IsNull(lpos), right.IsNull(rpos)); + } + } + + template <typename T> + static std::partial_ordering CompareValue(const T& x, const T& y, bool xIsNull, bool yIsNull) { + // TODO: std::partial_ordering::unordered for both nulls? + if (xIsNull) { + return std::partial_ordering::less; + } + if (yIsNull) { + return std::partial_ordering::greater; + } + return CompareValueNotNull(x, y); + } + + template <typename T> + static std::partial_ordering CompareValueNotNull(const T& x, const T& y) { + if constexpr (std::is_same_v<T, arrow::util::string_view>) { + size_t minSize = (x.size() < y.size()) ? x.size() : y.size(); + int cmp = memcmp(x.data(), y.data(), minSize); + if (cmp < 0) { + return std::partial_ordering::less; + } else if (cmp > 0) { + return std::partial_ordering::greater; + } + return CompareValueNotNull(x.size(), y.size()); + } else { + return x <=> y; + } + } +}; +} \ No newline at end of file diff --git a/ydb/core/formats/arrow/switch/switch_type.h b/ydb/core/formats/arrow/switch/switch_type.h index a8627f4654c7..487144be7e9d 100644 --- a/ydb/core/formats/arrow/switch/switch_type.h +++ b/ydb/core/formats/arrow/switch/switch_type.h @@ -117,7 +117,7 @@ bool SwitchArrayType(const arrow::Datum& column, TFunc&& f) { * @return Result of execution of callback or false if the type typeId is not supported. */ template <typename TFunc> -bool SwitchYqlTypeToArrowType(const NScheme::TTypeInfo& typeInfo, TFunc&& callback) { +[[nodiscard]] bool SwitchYqlTypeToArrowType(const NScheme::TTypeInfo& typeInfo, TFunc&& callback) { switch (typeInfo.GetTypeId()) { case NScheme::NTypeIds::Bool: return callback(TTypeWrapper<arrow::BooleanType>()); @@ -227,7 +227,7 @@ bool Append(arrow::ArrayBuilder& builder, const std::vector<typename T::c_type>& } template <typename T> -bool Append(T& builder, const arrow::Array& array, int position, ui64* recordSize = nullptr) { +[[nodiscard]] bool Append(T& builder, const arrow::Array& array, int position, ui64* recordSize = nullptr) { return SwitchType(array.type_id(), [&](const auto& type) { using TWrap = std::decay_t<decltype(type)>; using TArray = typename arrow::TypeTraits<typename TWrap::T>::ArrayType; diff --git a/ydb/core/formats/arrow/switch/ya.make b/ydb/core/formats/arrow/switch/ya.make index b32eb15f2ed1..e11e5e070ca6 100644 --- a/ydb/core/formats/arrow/switch/ya.make +++ b/ydb/core/formats/arrow/switch/ya.make @@ -8,6 +8,7 @@ PEERDIR( SRCS( switch_type.cpp + compare.cpp ) END() diff --git a/ydb/core/formats/arrow/transformer/abstract.h b/ydb/core/formats/arrow/transformer/abstract.h index 6d99379f8b97..b4c397c2d773 100644 --- a/ydb/core/formats/arrow/transformer/abstract.h +++ b/ydb/core/formats/arrow/transformer/abstract.h @@ -10,14 +10,24 @@ class ITransformer { protected: virtual std::shared_ptr<arrow::RecordBatch> DoTransform(const std::shared_ptr<arrow::RecordBatch>& batch) const = 0; virtual TString DoDebugString() const = 0; + virtual bool IsEqualToSameClass(const ITransformer& item) const = 0; public: using TPtr = std::shared_ptr<ITransformer>; virtual ~ITransformer() = default; + virtual TString GetClassName() const = 0; + TString DebugString() const { return DoDebugString(); } + bool IsEqualTo(const ITransformer& item) const { + if (GetClassName() != item.GetClassName()) { + return false; + } + return IsEqualToSameClass(item); + } + std::shared_ptr<arrow::RecordBatch> Transform(const std::shared_ptr<arrow::RecordBatch>& batch) const { return DoTransform(batch); } diff --git a/ydb/core/formats/arrow/transformer/dictionary.h b/ydb/core/formats/arrow/transformer/dictionary.h index a029b956e0fc..da0c13a5189a 100644 --- a/ydb/core/formats/arrow/transformer/dictionary.h +++ b/ydb/core/formats/arrow/transformer/dictionary.h @@ -4,21 +4,41 @@ namespace NKikimr::NArrow::NTransformation { class TDictionaryPackTransformer: public ITransformer { +public: + static TString GetClassNameStatic() { + return "DICT_PACK"; + } protected: virtual std::shared_ptr<arrow::RecordBatch> DoTransform(const std::shared_ptr<arrow::RecordBatch>& batch) const override; virtual TString DoDebugString() const override { return "type=DICT_PACK;"; } + virtual bool IsEqualToSameClass(const ITransformer& /*item*/) const override { + return true; + } public: + virtual TString GetClassName() const override { + return GetClassNameStatic(); + } }; class TDictionaryUnpackTransformer: public ITransformer { +public: + static TString GetClassNameStatic() { + return "DICT_UNPACK"; + } protected: virtual std::shared_ptr<arrow::RecordBatch> DoTransform(const std::shared_ptr<arrow::RecordBatch>& batch) const override; virtual TString DoDebugString() const override { return "type=DICT_UNPACK;"; } + virtual bool IsEqualToSameClass(const ITransformer& /*item*/) const override { + return true; + } public: + virtual TString GetClassName() const override { + return GetClassNameStatic(); + } }; } diff --git a/ydb/core/formats/arrow/ut_arrow.cpp b/ydb/core/formats/arrow/ut/ut_arrow.cpp similarity index 79% rename from ydb/core/formats/arrow/ut_arrow.cpp rename to ydb/core/formats/arrow/ut/ut_arrow.cpp index 2ab400bf4917..da620d70fa30 100644 --- a/ydb/core/formats/arrow/ut_arrow.cpp +++ b/ydb/core/formats/arrow/ut/ut_arrow.cpp @@ -1,9 +1,10 @@ -#include "arrow_batch_builder.h" -#include "arrow_helpers.h" -#include "converter.h" -#include "one_batch_input_stream.h" -#include "merging_sorted_input_stream.h" -#include "arrow_filter.h" +#include <ydb/core/formats/arrow/arrow_batch_builder.h> +#include <ydb/core/formats/arrow/arrow_helpers.h> +#include <ydb/core/formats/arrow/converter.h> +#include <ydb/core/formats/arrow/arrow_filter.h> +#include <ydb/core/formats/arrow/permutations.h> +#include <ydb/core/formats/arrow/reader/merger.h> +#include <ydb/core/formats/arrow/reader/result_builder.h> #include <ydb/library/binary_json/write.h> #include <library/cpp/testing/unittest/registar.h> @@ -480,13 +481,6 @@ ui32 RestoreValue(ui32 a, ui32 b, ui32 c) { return ui32(a) * 100 + b * 10 + c; } -ui32 RestoreOne(const std::shared_ptr<arrow::RecordBatch>& batch, int pos) { - auto arrA = std::static_pointer_cast<arrow::Int8Array>(batch->GetColumnByName("i8")); - auto arrB = std::static_pointer_cast<arrow::Int16Array>(batch->GetColumnByName("i16")); - auto arrC = std::static_pointer_cast<arrow::Int32Array>(batch->GetColumnByName("i32")); - return RestoreValue(arrA->Value(pos), arrB->Value(pos), arrC->Value(pos)); -} - bool CheckSorted1000(const std::shared_ptr<arrow::RecordBatch>& batch, bool desc = false) { auto arrA = std::static_pointer_cast<arrow::Int8Array>(batch->GetColumnByName("i8")); auto arrB = std::static_pointer_cast<arrow::Int16Array>(batch->GetColumnByName("i16")); @@ -663,38 +657,26 @@ Y_UNIT_TEST_SUITE(ArrowTest) { UNIT_ASSERT(CheckSorted1000(batch)); std::vector<std::shared_ptr<arrow::RecordBatch>> batches; - batches.push_back(batch->Slice(0, 100)); // 0..100 - batches.push_back(batch->Slice(100, 200)); // 100..300 - batches.push_back(batch->Slice(200, 400)); // 200..600 - batches.push_back(batch->Slice(500, 50)); // 500..550 - batches.push_back(batch->Slice(600, 1)); // 600..601 - - auto descr = std::make_shared<NArrow::TSortDescription>(batch->schema()); - descr->NotNull = true; - - std::vector<std::shared_ptr<arrow::RecordBatch>> sorted; - { // maxBatchSize = 500, no limit - std::vector<NArrow::IInputStream::TPtr> streams; - for (auto& batch : batches) { - streams.push_back(std::make_shared<NArrow::TOneBatchInputStream>(batch)); - } + batches.push_back(batch->Slice(0, 100)); // 0..100 +100 + batches.push_back(batch->Slice(100, 200)); // 100..300 +200 + batches.push_back(batch->Slice(200, 400)); // 200..600 +300 + batches.push_back(batch->Slice(500, 50)); // 500..550 +50 + batches.push_back(batch->Slice(600, 1)); // 600..601 +1 - NArrow::IInputStream::TPtr mergeStream = - std::make_shared<NArrow::TMergingSortedInputStream>(streams, descr, 500); - - while (auto batch = mergeStream->Read()) { - sorted.emplace_back(batch); + std::shared_ptr<arrow::RecordBatch> sorted; + { + NArrow::NMerger::TRecordBatchBuilder builder(batch->schema()->fields()); + const std::vector<std::string> vColumns = {batch->schema()->field(0)->name()}; + auto merger = std::make_shared<NArrow::NMerger::TMergePartialStream>(batch->schema(), batch->schema(), false, vColumns); + for (auto&& i : batches) { + merger->AddSource(i, nullptr); } + merger->DrainAll(builder); + sorted = builder.Finalize(); } - - UNIT_ASSERT_VALUES_EQUAL(sorted.size(), 2); - UNIT_ASSERT_VALUES_EQUAL(sorted[0]->num_rows(), 500); - UNIT_ASSERT_VALUES_EQUAL(sorted[1]->num_rows(), 251); - UNIT_ASSERT(CheckSorted(sorted[0])); - UNIT_ASSERT(CheckSorted(sorted[1])); - UNIT_ASSERT(NArrow::IsSorted(sorted[0], descr->SortingKey)); - UNIT_ASSERT(NArrow::IsSorted(sorted[1], descr->SortingKey)); - UNIT_ASSERT(RestoreOne(sorted[0], 499) <= RestoreOne(sorted[1], 0)); + UNIT_ASSERT_VALUES_EQUAL(sorted->num_rows(), 601); + UNIT_ASSERT(NArrow::IsSorted(sorted, batch->schema())); + UNIT_ASSERT(CheckSorted(sorted)); } Y_UNIT_TEST(MergingSortedInputStreamReversed) { @@ -702,86 +684,29 @@ Y_UNIT_TEST_SUITE(ArrowTest) { UNIT_ASSERT(CheckSorted1000(batch)); std::vector<std::shared_ptr<arrow::RecordBatch>> batches; - batches.push_back(batch->Slice(0, 100)); // 0..100 - batches.push_back(batch->Slice(100, 200)); // 100..300 - batches.push_back(batch->Slice(200, 400)); // 200..600 - batches.push_back(batch->Slice(500, 50)); // 500..550 - batches.push_back(batch->Slice(600, 1)); // 600..601 - - auto descr = std::make_shared<NArrow::TSortDescription>(batch->schema()); - descr->NotNull = true; - descr->Inverse(); - - std::vector<std::shared_ptr<arrow::RecordBatch>> sorted; - { // maxBatchSize = 500, no limit - std::vector<NArrow::IInputStream::TPtr> streams; - for (auto& batch : batches) { - streams.push_back(std::make_shared<NArrow::TOneBatchInputStream>(batch)); - } - - NArrow::IInputStream::TPtr mergeStream = - std::make_shared<NArrow::TMergingSortedInputStream>(streams, descr, 500); + batches.push_back(batch->Slice(0, 100)); // 0..100 +100 + batches.push_back(batch->Slice(100, 200)); // 100..300 +200 + batches.push_back(batch->Slice(200, 400)); // 200..600 +300 + batches.push_back(batch->Slice(500, 50)); // 500..550 +50 + batches.push_back(batch->Slice(600, 1)); // 600..601 +1 - while (auto batch = mergeStream->Read()) { - sorted.emplace_back(batch); - } - } - - UNIT_ASSERT_VALUES_EQUAL(sorted.size(), 2); - UNIT_ASSERT_VALUES_EQUAL(sorted[0]->num_rows(), 500); - UNIT_ASSERT_VALUES_EQUAL(sorted[1]->num_rows(), 251); - UNIT_ASSERT(CheckSorted(sorted[0], true)); - UNIT_ASSERT(CheckSorted(sorted[1], true)); - UNIT_ASSERT(NArrow::IsSorted(sorted[0], descr->SortingKey, true)); - UNIT_ASSERT(NArrow::IsSorted(sorted[1], descr->SortingKey, true)); - UNIT_ASSERT(RestoreOne(sorted[0], 499) >= RestoreOne(sorted[1], 0)); - } - - Y_UNIT_TEST(MergingSortedInputStreamReplace) { - std::shared_ptr<arrow::RecordBatch> batch = ExtractBatch(MakeTable1000()); - UNIT_ASSERT(CheckSorted1000(batch)); - - std::vector<std::shared_ptr<arrow::RecordBatch>> batches; - batches.push_back(AddSnapColumn(batch->Slice(0, 400), 0)); - batches.push_back(AddSnapColumn(batch->Slice(200, 400), 1)); - batches.push_back(AddSnapColumn(batch->Slice(400, 400), 2)); - batches.push_back(AddSnapColumn(batch->Slice(600, 400), 3)); - - auto sortingKey = batches[0]->schema(); - auto replaceKey = batch->schema(); - - auto descr = std::make_shared<NArrow::TSortDescription>(sortingKey, replaceKey); - descr->Directions.back() = -1; // greater snapshot first - descr->NotNull = true; - - std::vector<std::shared_ptr<arrow::RecordBatch>> sorted; + std::shared_ptr<arrow::RecordBatch> sorted; { - std::vector<NArrow::IInputStream::TPtr> streams; - for (auto& batch : batches) { - streams.push_back(std::make_shared<NArrow::TOneBatchInputStream>(batch)); - } - - NArrow::IInputStream::TPtr mergeStream = - std::make_shared<NArrow::TMergingSortedInputStream>(streams, descr, 5000); - - while (auto batch = mergeStream->Read()) { - sorted.emplace_back(batch); + NArrow::NMerger::TRecordBatchBuilder builder(batch->schema()->fields()); + const std::vector<std::string> vColumns = {batch->schema()->field(0)->name()}; + auto merger = std::make_shared<NArrow::NMerger::TMergePartialStream>(batch->schema(), batch->schema(), true, vColumns); + for (auto&& i : batches) { + merger->AddSource(i, nullptr); } + merger->DrainAll(builder); + sorted = builder.Finalize(); } - - UNIT_ASSERT_VALUES_EQUAL(sorted.size(), 1); - UNIT_ASSERT_VALUES_EQUAL(sorted[0]->num_rows(), 1000); - UNIT_ASSERT(CheckSorted1000(sorted[0])); - UNIT_ASSERT(NArrow::IsSortedAndUnique(sorted[0], descr->SortingKey)); - - auto counts = CountValues(std::static_pointer_cast<arrow::UInt64Array>(sorted[0]->GetColumnByName("snap"))); - UNIT_ASSERT_VALUES_EQUAL(counts[0], 200); - UNIT_ASSERT_VALUES_EQUAL(counts[1], 200); - UNIT_ASSERT_VALUES_EQUAL(counts[2], 200); - UNIT_ASSERT_VALUES_EQUAL(counts[3], 400); + UNIT_ASSERT_VALUES_EQUAL(sorted->num_rows(), 601); + UNIT_ASSERT(NArrow::IsSorted(sorted, batch->schema(), true)); + UNIT_ASSERT(CheckSorted(sorted, true)); } - Y_UNIT_TEST(MergingSortedInputStreamReplaceReversed) { + Y_UNIT_TEST(MergingSortedInputStreamReplace) { std::shared_ptr<arrow::RecordBatch> batch = ExtractBatch(MakeTable1000()); UNIT_ASSERT(CheckSorted1000(batch)); @@ -791,35 +716,23 @@ Y_UNIT_TEST_SUITE(ArrowTest) { batches.push_back(AddSnapColumn(batch->Slice(400, 400), 2)); batches.push_back(AddSnapColumn(batch->Slice(600, 400), 3)); - auto sortingKey = batches[0]->schema(); - auto replaceKey = batch->schema(); - - auto descr = std::make_shared<NArrow::TSortDescription>(sortingKey, replaceKey); - descr->Directions.back() = 1; // greater snapshot last - descr->NotNull = true; - descr->Inverse(); - - std::vector<std::shared_ptr<arrow::RecordBatch>> sorted; + std::shared_ptr<arrow::RecordBatch> sorted; { - std::vector<NArrow::IInputStream::TPtr> streams; - for (auto& batch : batches) { - streams.push_back(std::make_shared<NArrow::TOneBatchInputStream>(batch)); - } - - NArrow::IInputStream::TPtr mergeStream = - std::make_shared<NArrow::TMergingSortedInputStream>(streams, descr, 5000); - - while (auto batch = mergeStream->Read()) { - sorted.emplace_back(batch); + NArrow::NMerger::TRecordBatchBuilder builder(batches[0]->schema()->fields()); + const std::vector<std::string> vColumns = {"snap"}; + auto merger = std::make_shared<NArrow::NMerger::TMergePartialStream>(batch->schema(), batches[0]->schema(), false, vColumns); + for (auto&& i : batches) { + merger->AddSource(i, nullptr); } + merger->DrainAll(builder); + sorted = builder.Finalize(); } - UNIT_ASSERT_VALUES_EQUAL(sorted.size(), 1); - UNIT_ASSERT_VALUES_EQUAL(sorted[0]->num_rows(), 1000); - UNIT_ASSERT(CheckSorted1000(sorted[0], true)); - UNIT_ASSERT(NArrow::IsSortedAndUnique(sorted[0], descr->SortingKey, true)); + UNIT_ASSERT_VALUES_EQUAL(sorted->num_rows(), 1000); + UNIT_ASSERT(CheckSorted1000(sorted)); + UNIT_ASSERT(NArrow::IsSortedAndUnique(sorted, batch->schema())); - auto counts = CountValues(std::static_pointer_cast<arrow::UInt64Array>(sorted[0]->GetColumnByName("snap"))); + auto counts = CountValues(std::static_pointer_cast<arrow::UInt64Array>(sorted->GetColumnByName("snap"))); UNIT_ASSERT_VALUES_EQUAL(counts[0], 200); UNIT_ASSERT_VALUES_EQUAL(counts[1], 200); UNIT_ASSERT_VALUES_EQUAL(counts[2], 200); diff --git a/ydb/core/formats/arrow/ut_program_step.cpp b/ydb/core/formats/arrow/ut/ut_program_step.cpp similarity index 99% rename from ydb/core/formats/arrow/ut_program_step.cpp rename to ydb/core/formats/arrow/ut/ut_program_step.cpp index 2ab52ed29bdc..d7f447a1b237 100644 --- a/ydb/core/formats/arrow/ut_program_step.cpp +++ b/ydb/core/formats/arrow/ut/ut_program_step.cpp @@ -2,14 +2,16 @@ #include <memory> #include <vector> +#include <ydb/core/formats/arrow/custom_registry.h> +#include <ydb/core/formats/arrow/program.h> +#include <ydb/core/formats/arrow/arrow_helpers.h> +#include <ydb/library/arrow_kernels/ut_common.h> + +#include <library/cpp/testing/unittest/registar.h> + #include <contrib/libs/apache/arrow/cpp/src/arrow/api.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/compute/exec.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/type_fwd.h> -#include <library/cpp/testing/unittest/registar.h> -#include <ydb/library/arrow_kernels/ut_common.h> -#include "custom_registry.h" -#include "program.h" -#include "arrow_helpers.h" using namespace NKikimr::NArrow; using namespace NKikimr::NSsa; diff --git a/ydb/core/formats/arrow/ut/ut_size_calcer.cpp b/ydb/core/formats/arrow/ut/ut_size_calcer.cpp index 24d2c52d9217..1db712f43c7a 100644 --- a/ydb/core/formats/arrow/ut/ut_size_calcer.cpp +++ b/ydb/core/formats/arrow/ut/ut_size_calcer.cpp @@ -16,6 +16,12 @@ Y_UNIT_TEST_SUITE(SizeCalcer) { std::shared_ptr<arrow::RecordBatch> batch = NConstruction::TRecordBatchConstructor({ column }).BuildBatch(2048); Cerr << GetBatchDataSize(batch) << Endl; UNIT_ASSERT(GetBatchDataSize(batch) == 2048 * 512 + 2048 * 4); + auto slice05 = batch->Slice(batch->num_rows() / 2, batch->num_rows() / 2); + Cerr << GetBatchDataSize(slice05) << Endl; + UNIT_ASSERT(GetBatchDataSize(slice05) == 0.5 * (2048 * 512 + 2048 * 4)); + auto slice025 = slice05->Slice(slice05->num_rows() / 3, slice05->num_rows() / 2); + Cerr << GetBatchDataSize(slice025) << Endl; + UNIT_ASSERT(GetBatchDataSize(slice025) == 0.25 * (2048 * 512 + 2048 * 4)); } Y_UNIT_TEST(DictionaryStrings) { diff --git a/ydb/core/formats/arrow/ya.make b/ydb/core/formats/arrow/ya.make index 146c5bae1e86..d55ccb5799e5 100644 --- a/ydb/core/formats/arrow/ya.make +++ b/ydb/core/formats/arrow/ya.make @@ -45,14 +45,10 @@ SRCS( converter.h custom_registry.cpp input_stream.h - merging_sorted_input_stream.cpp - merging_sorted_input_stream.h - one_batch_input_stream.h permutations.cpp program.cpp replace_key.cpp size_calcer.cpp - sort_cursor.h ssa_program_optimizer.cpp special_keys.cpp simple_arrays_cache.cpp diff --git a/ydb/core/grpc_services/rpc_load_rows.cpp b/ydb/core/grpc_services/rpc_load_rows.cpp index 05cc85065298..f1d17adef38e 100644 --- a/ydb/core/grpc_services/rpc_load_rows.cpp +++ b/ydb/core/grpc_services/rpc_load_rows.cpp @@ -462,8 +462,12 @@ class TUploadColumnsRPCPublic : public NTxProxy::TUploadRowsBase<NKikimrServices auto& nullValue = cvsSettings.null_value(); bool withHeader = cvsSettings.header(); - NFormats::TArrowCSV reader(SrcColumns, withHeader, NotNullColumns); - reader.SetSkipRows(skipRows); + auto reader = NFormats::TArrowCSV::Create(SrcColumns, withHeader, NotNullColumns); + if (!reader.ok()) { + errorMessage = reader.status().ToString(); + return false; + } + reader->SetSkipRows(skipRows); if (!delimiter.empty()) { if (delimiter.size() != 1) { @@ -471,20 +475,20 @@ class TUploadColumnsRPCPublic : public NTxProxy::TUploadRowsBase<NKikimrServices return false; } - reader.SetDelimiter(delimiter[0]); + reader->SetDelimiter(delimiter[0]); } if (!nullValue.empty()) { - reader.SetNullValue(nullValue); + reader->SetNullValue(nullValue); } if (data.size() > NFormats::TArrowCSV::DEFAULT_BLOCK_SIZE) { ui32 blockSize = NFormats::TArrowCSV::DEFAULT_BLOCK_SIZE; blockSize *= data.size() / blockSize + 1; - reader.SetBlockSize(blockSize); + reader->SetBlockSize(blockSize); } - Batch = reader.ReadSingleBatch(data, errorMessage); + Batch = reader->ReadSingleBatch(data, errorMessage); if (!Batch) { return false; } diff --git a/ydb/core/io_formats/arrow/csv_arrow.cpp b/ydb/core/io_formats/arrow/csv_arrow.cpp index 06b070d76db2..36113047b92f 100644 --- a/ydb/core/io_formats/arrow/csv_arrow.cpp +++ b/ydb/core/io_formats/arrow/csv_arrow.cpp @@ -5,6 +5,7 @@ #include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/util/value_parsing.h> +#include <util/string/join.h> namespace NKikimr::NFormats { @@ -42,7 +43,30 @@ class TimestampIntParser: public arrow::TimestampParser { } -TArrowCSV::TArrowCSV(const TVector<std::pair<TString, NScheme::TTypeInfo>>& columns, bool header, const std::set<std::string>& notNullColumns) +arrow::Result<TArrowCSV> TArrowCSV::Create(const TVector<std::pair<TString, NScheme::TTypeInfo>>& columns, bool header, const std::set<std::string>& notNullColumns) { + TVector<TString> errors; + TColummns convertedColumns; + convertedColumns.reserve(columns.size()); + for (auto& [name, type] : columns) { + const auto arrowType = NArrow::GetArrowType(type); + if (!arrowType.ok()) { + errors.emplace_back("column " + name + ": " + arrowType.status().ToString()); + continue; + } + const auto csvArrowType = NArrow::GetCSVArrowType(type); + if (!csvArrowType.ok()) { + errors.emplace_back("column " + name + ": " + csvArrowType.status().ToString()); + continue; + } + convertedColumns.emplace_back(TColumnInfo{name, *arrowType, *csvArrowType}); + } + if (!errors.empty()) { + return arrow::Status::TypeError(ErrorPrefix() + "columns errors: " + JoinSeq("; ", errors)); + } + return TArrowCSV(convertedColumns, header, notNullColumns); +} + +TArrowCSV::TArrowCSV(const TColummns& columns, bool header, const std::set<std::string>& notNullColumns) : ReadOptions(arrow::csv::ReadOptions::Defaults()) , ParseOptions(arrow::csv::ParseOptions::Defaults()) , ConvertOptions(arrow::csv::ConvertOptions::Defaults()) @@ -60,21 +84,19 @@ TArrowCSV::TArrowCSV(const TVector<std::pair<TString, NScheme::TTypeInfo>>& colu // !autogenerate + column_names.empty() => read from CSV ResultColumns.reserve(columns.size()); - for (auto& [name, type] : columns) { - ResultColumns.push_back(name); - std::string columnName(name.data(), name.size()); - ConvertOptions.column_types[columnName] = NArrow::GetCSVArrowType(type); - OriginalColumnTypes[columnName] = NArrow::GetArrowType(type); + for (const auto& col: columns) { + ResultColumns.push_back(col.Name); + ConvertOptions.column_types[col.Name] = col.CsvArrowType; + OriginalColumnTypes[col.Name] = col.ArrowType; } } else if (!columns.empty()) { // !autogenerate + !column_names.empty() => specified columns ReadOptions.column_names.reserve(columns.size()); - for (auto& [name, type] : columns) { - std::string columnName(name.data(), name.size()); - ReadOptions.column_names.push_back(columnName); - ConvertOptions.column_types[columnName] = NArrow::GetCSVArrowType(type); - OriginalColumnTypes[columnName] = NArrow::GetArrowType(type); + for (const auto& col: columns) { + ReadOptions.column_names.push_back(col.Name); + ConvertOptions.column_types[col.Name] = col.CsvArrowType; + OriginalColumnTypes[col.Name] = col.ArrowType; } #if 0 } else { diff --git a/ydb/core/io_formats/arrow/csv_arrow.h b/ydb/core/io_formats/arrow/csv_arrow.h index a4e5b912f664..49fd0cd84c62 100644 --- a/ydb/core/io_formats/arrow/csv_arrow.h +++ b/ydb/core/io_formats/arrow/csv_arrow.h @@ -13,7 +13,7 @@ class TArrowCSV { /// If header is true read column names from first line after skipRows. Parse columns as strings in this case. /// @note It's possible to skip header with skipRows and use typed columns instead. - TArrowCSV(const TVector<std::pair<TString, NScheme::TTypeInfo>>& columns, bool header = false, const std::set<std::string>& notNullColumns = {}); + static arrow::Result<TArrowCSV> Create(const TVector<std::pair<TString, NScheme::TTypeInfo>>& columns, bool header = false, const std::set<std::string>& notNullColumns = {}); std::shared_ptr<arrow::RecordBatch> ReadNext(const TString& csv, TString& errString); std::shared_ptr<arrow::RecordBatch> ReadSingleBatch(const TString& csv, TString& errString); @@ -50,6 +50,13 @@ class TArrowCSV { void SetNullValue(const TString& null = ""); private: + struct TColumnInfo { + TString Name; + std::shared_ptr<arrow::DataType> ArrowType; + std::shared_ptr<arrow::DataType>CsvArrowType; + }; + using TColummns = TVector<TColumnInfo>; + TArrowCSV(const TColummns& columns, bool header, const std::set<std::string>& notNullColumns); arrow::csv::ReadOptions ReadOptions; arrow::csv::ParseOptions ParseOptions; arrow::csv::ConvertOptions ConvertOptions; diff --git a/ydb/core/io_formats/arrow/csv_arrow_ut.cpp b/ydb/core/io_formats/arrow/csv_arrow_ut.cpp index 5716126eb83e..aa37ebbdbc2a 100644 --- a/ydb/core/io_formats/arrow/csv_arrow_ut.cpp +++ b/ydb/core/io_formats/arrow/csv_arrow_ut.cpp @@ -53,7 +53,9 @@ TestReadSingleBatch(TArrowCSV& reader, for (size_t i = 0; i < columns.size(); ++i) { UNIT_ASSERT_EQUAL(columns[i].first, batch->schema()->field(i)->name()); - UNIT_ASSERT(NArrow::GetArrowType(columns[i].second)->Equals(batch->schema()->field(i)->type())); + auto arrowType = NArrow::GetArrowType(columns[i].second); + UNIT_ASSERT_C(arrowType.ok(), arrowType.status().ToString()); + UNIT_ASSERT(arrowType.ValueUnsafe()->Equals(batch->schema()->field(i)->type())); // TODO: check data } return batch; @@ -62,16 +64,17 @@ TestReadSingleBatch(TArrowCSV& reader, std::shared_ptr<arrow::RecordBatch> TestReadSingleBatch(const TVector<std::pair<TString, NScheme::TTypeInfo>>& columns, const TString& data, char delimiter, bool header, ui32 numRows, ui32 skipRows = 0, std::optional<char> escape = {}) { - TArrowCSV reader(columns, header); - reader.SetDelimiter(delimiter); + auto reader = TArrowCSV::Create(columns, header); + UNIT_ASSERT_C(reader.ok(), reader.status().ToString()); + reader->SetDelimiter(delimiter); if (skipRows) { - reader.SetSkipRows(skipRows); + reader->SetSkipRows(skipRows); } if (escape) { - reader.SetEscaping(true, *escape); + reader->SetEscaping(true, *escape); } - return TestReadSingleBatch(reader, columns, data, numRows); + return TestReadSingleBatch(*reader, columns, data, numRows); } } @@ -95,10 +98,11 @@ Y_UNIT_TEST_SUITE(FormatCSV) { }; TInstant dtInstant; Y_ABORT_UNLESS(TInstant::TryParseIso8601(dateTimeString, dtInstant)); - TArrowCSV reader(columns, false); + auto reader = TArrowCSV::Create(columns, false); + UNIT_ASSERT_C(reader.ok(), reader.status().ToString()); TString errorMessage; - auto batch = reader.ReadNext(data, errorMessage); + auto batch = reader->ReadNext(data, errorMessage); Cerr << errorMessage << "\n"; UNIT_ASSERT(!!batch); UNIT_ASSERT(errorMessage.empty()); @@ -155,10 +159,11 @@ Y_UNIT_TEST_SUITE(FormatCSV) { TVector<std::pair<TString, NScheme::TTypeInfo>> columns; { - TArrowCSV reader(columns, false); + auto reader = TArrowCSV::Create(columns, false); + UNIT_ASSERT_C(reader.ok(), reader.status().ToString()); TString errorMessage; - auto batch = reader.ReadNext(data, errorMessage); + auto batch = reader->ReadNext(data, errorMessage); Cerr << errorMessage << "\n"; UNIT_ASSERT(!batch); UNIT_ASSERT(!errorMessage.empty()); @@ -170,10 +175,11 @@ Y_UNIT_TEST_SUITE(FormatCSV) { {"i64", NScheme::TTypeInfo(NScheme::NTypeIds::Int64)} }; - TArrowCSV reader(columns, false); + auto reader = TArrowCSV::Create(columns, false); + UNIT_ASSERT_C(reader.ok(), reader.status().ToString()); TString errorMessage; - auto batch = reader.ReadNext(data, errorMessage); + auto batch = reader->ReadNext(data, errorMessage); Cerr << errorMessage << "\n"; UNIT_ASSERT(!batch); UNIT_ASSERT(!errorMessage.empty()); @@ -291,14 +297,15 @@ Y_UNIT_TEST_SUITE(FormatCSV) { csv += TString() + null + delimiter + q + null + q + delimiter + q + null + q + endLine; csv += TString() + null + delimiter + null + delimiter + null + endLine; - TArrowCSV reader(columns, false); + auto reader = TArrowCSV::Create(columns, false); + UNIT_ASSERT_C(reader.ok(), reader.status().ToString()); if (!nulls.empty() || !defaultNull) { - reader.SetNullValue(null); + reader->SetNullValue(null); } else { defaultNull = false; } - auto batch = TestReadSingleBatch(reader, columns, csv, 3); + auto batch = TestReadSingleBatch(*reader, columns, csv, 3); Cerr << "src:\n" << csv; diff --git a/ydb/core/kqp/compute_actor/kqp_compute_events.h b/ydb/core/kqp/compute_actor/kqp_compute_events.h index f31f946d28fd..7516952c9437 100644 --- a/ydb/core/kqp/compute_actor/kqp_compute_events.h +++ b/ydb/core/kqp/compute_actor/kqp_compute_events.h @@ -1,6 +1,7 @@ #pragma once #include <ydb/core/formats/arrow/arrow_helpers.h> +#include <ydb/core/formats/arrow/common/validation.h> #include <ydb/core/kqp/common/kqp.h> #include <ydb/core/protos/tx_datashard.pb.h> #include <ydb/core/scheme/scheme_tabledefs.h> @@ -40,7 +41,7 @@ struct TEvKqpCompute { ui32 ScanId; ui32 Generation; TVector<TOwnedCellVec> Rows; - std::shared_ptr<arrow::RecordBatch> ArrowBatch; + std::shared_ptr<arrow::Table> ArrowBatch; std::vector<std::vector<ui32>> SplittedBatches; TOwnedCellVec LastKey; @@ -123,7 +124,7 @@ struct TEvKqpCompute { if (pbEv->Record.HasArrowBatch()) { auto batch = pbEv->Record.GetArrowBatch(); auto schema = NArrow::DeserializeSchema(batch.GetSchema()); - ev->ArrowBatch = NArrow::DeserializeBatch(batch.GetBatch(), schema); + ev->ArrowBatch = NArrow::TStatusValidator::GetValid(arrow::Table::FromRecordBatches({NArrow::DeserializeBatch(batch.GetBatch(), schema)})); } return ev.Release(); } @@ -160,7 +161,7 @@ struct TEvKqpCompute { Y_DEBUG_ABORT_UNLESS(ArrowBatch != nullptr); auto* protoArrowBatch = Remote->Record.MutableArrowBatch(); protoArrowBatch->SetSchema(NArrow::SerializeSchema(*ArrowBatch->schema())); - protoArrowBatch->SetBatch(NArrow::SerializeBatchNoCompression(ArrowBatch)); + protoArrowBatch->SetBatch(NArrow::SerializeBatchNoCompression(NArrow::ToBatch(ArrowBatch, true))); break; } } diff --git a/ydb/core/kqp/compute_actor/kqp_scan_compute_manager.h b/ydb/core/kqp/compute_actor/kqp_scan_compute_manager.h index c7a57d58d3e8..a88ac5736055 100644 --- a/ydb/core/kqp/compute_actor/kqp_scan_compute_manager.h +++ b/ydb/core/kqp/compute_actor/kqp_scan_compute_manager.h @@ -249,17 +249,6 @@ class TInFlightShards: public NComputeActor::TScanShardsStatistics { const IExternalObjectsProvider& ExternalObjectsProvider; public: - bool RestartScanner(TShardState& state) { - StopScanner(state.TabletId, false); - state.ResetRetry(); - static constexpr ui64 MAX_SHARD_RETRIES = 5; // retry after: 0, 250, 500, 1000, 2000 - if (++state.TotalRetries >= MAX_SHARD_RETRIES) { - return false; - } - StartScanner(state); - return true; - } - void AbortAllScanners(const TString& errorMessage) { for (auto&& itTablet : ShardScanners) { itTablet.second->Stop(true, errorMessage); diff --git a/ydb/core/kqp/compute_actor/kqp_scan_events.h b/ydb/core/kqp/compute_actor/kqp_scan_events.h index cfff8c3ad4dc..af455be7b7e7 100644 --- a/ydb/core/kqp/compute_actor/kqp_scan_events.h +++ b/ydb/core/kqp/compute_actor/kqp_scan_events.h @@ -39,7 +39,7 @@ struct TEvScanExchange { class TEvSendData: public NActors::TEventLocal<TEvSendData, EvSendData> { private: - YDB_READONLY_DEF(std::shared_ptr<arrow::RecordBatch>, ArrowBatch); + YDB_READONLY_DEF(std::shared_ptr<arrow::Table>, ArrowBatch); YDB_ACCESSOR_DEF(TVector<TOwnedCellVec>, Rows); YDB_READONLY(ui64, TabletId, 0); YDB_ACCESSOR_DEF(std::vector<ui32>, DataIndexes); @@ -48,7 +48,7 @@ struct TEvScanExchange { return ArrowBatch ? ArrowBatch->num_rows() : Rows.size(); } - TEvSendData(const std::shared_ptr<arrow::RecordBatch>& arrowBatch, const ui64 tabletId) + TEvSendData(const std::shared_ptr<arrow::Table>& arrowBatch, const ui64 tabletId) : ArrowBatch(arrowBatch) , TabletId(tabletId) { @@ -56,7 +56,7 @@ struct TEvScanExchange { Y_ABORT_UNLESS(ArrowBatch->num_rows()); } - TEvSendData(const std::shared_ptr<arrow::RecordBatch>& arrowBatch, const ui64 tabletId, std::vector<ui32>&& dataIndexes) + TEvSendData(const std::shared_ptr<arrow::Table>& arrowBatch, const ui64 tabletId, std::vector<ui32>&& dataIndexes) : ArrowBatch(arrowBatch) , TabletId(tabletId) , DataIndexes(std::move(dataIndexes)) diff --git a/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp b/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp index 5d29c47c9260..b4d23bbfb930 100644 --- a/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp +++ b/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp @@ -170,13 +170,10 @@ void TKqpScanFetcherActor::HandleExecute(TEvKqpCompute::TEvScanError::TPtr& ev) } if (state->State == EShardState::PostRunning || state->State == EShardState::Running) { - ++TotalRetries; - if (!InFlightShards.RestartScanner(*state) || TotalRetries >= MAX_TOTAL_SHARD_RETRIES) { - CA_LOG_E("TKqpScanFetcherActor: broken tablet for this request " << state->TabletId - << ", retries limit exceeded (" << state->TotalRetries << "/" << TotalRetries << ")"); - SendGlobalFail(NDqProto::COMPUTE_STATE_FAILURE, YdbStatusToDqStatus(status), issues); - return PassAway(); - } + CA_LOG_E("TKqpScanFetcherActor: broken tablet for this request " << state->TabletId + << ", retries limit exceeded (" << state->TotalRetries << "/" << TotalRetries << ")"); + SendGlobalFail(NDqProto::COMPUTE_STATE_FAILURE, YdbStatusToDqStatus(status), issues); + return PassAway(); } } diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/add_column.cpp b/ydb/core/kqp/gateway/behaviour/tablestore/operations/add_column.cpp index 0353207940b7..aeec2c01f225 100644 --- a/ydb/core/kqp/gateway/behaviour/tablestore/operations/add_column.cpp +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/add_column.cpp @@ -11,6 +11,10 @@ TConclusionStatus TAddColumnOperation::DoDeserialize(NYql::TObjectSettingsImpl:: } ColumnName = *fValue; } + StorageId = features.Extract("STORAGE_ID"); + if (StorageId && !*StorageId) { + return TConclusionStatus::Fail("STORAGE_ID cannot be empty string"); + } { auto fValue = features.Extract("TYPE"); if (!fValue) { @@ -31,6 +35,9 @@ void TAddColumnOperation::DoSerializeScheme(NKikimrSchemeOp::TAlterColumnTableSc auto column = schemaData.AddAddColumns(); column->SetName(ColumnName); column->SetType(ColumnType); + if (StorageId) { + column->SetStorageId(*StorageId); + } column->SetNotNull(NotNull); } diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/add_column.h b/ydb/core/kqp/gateway/behaviour/tablestore/operations/add_column.h index 6bf452c9f860..a78207845dea 100644 --- a/ydb/core/kqp/gateway/behaviour/tablestore/operations/add_column.h +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/add_column.h @@ -12,6 +12,7 @@ class TAddColumnOperation : public ITableStoreOperation { private: TString ColumnName; TString ColumnType; + std::optional<TString> StorageId; bool NotNull = false; public: TConclusionStatus DoDeserialize(NYql::TObjectSettingsImpl::TFeaturesExtractor& features) override; diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/alter_column.cpp b/ydb/core/kqp/gateway/behaviour/tablestore/operations/alter_column.cpp index c3b65e981194..bd430d71fc47 100644 --- a/ydb/core/kqp/gateway/behaviour/tablestore/operations/alter_column.cpp +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/alter_column.cpp @@ -10,6 +10,10 @@ TConclusionStatus TAlterColumnOperation::DoDeserialize(NYql::TObjectSettingsImpl } ColumnName = *fValue; } + StorageId = features.Extract("STORAGE_ID"); + if (StorageId && !*StorageId) { + return TConclusionStatus::Fail("STORAGE_ID cannot be empty string"); + } { auto result = DictionaryEncodingDiff.DeserializeFromRequestFeatures(features); if (!result) { @@ -28,6 +32,9 @@ TConclusionStatus TAlterColumnOperation::DoDeserialize(NYql::TObjectSettingsImpl void TAlterColumnOperation::DoSerializeScheme(NKikimrSchemeOp::TAlterColumnTableSchema& schemaData) const { auto* column = schemaData.AddAlterColumns(); column->SetName(ColumnName); + if (StorageId && !!*StorageId) { + column->SetStorageId(*StorageId); + } if (!!Serializer) { Serializer.SerializeToProto(*column->MutableSerializer()); } diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/alter_column.h b/ydb/core/kqp/gateway/behaviour/tablestore/operations/alter_column.h index 81c0e362be3d..c883ab035f9d 100644 --- a/ydb/core/kqp/gateway/behaviour/tablestore/operations/alter_column.h +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/alter_column.h @@ -13,6 +13,7 @@ class TAlterColumnOperation : public ITableStoreOperation { static inline auto Registrator = TFactory::TRegistrator<TAlterColumnOperation>(GetTypeName()); TString ColumnName; + std::optional<TString> StorageId; NArrow::NSerialization::TSerializerContainer Serializer; NArrow::NDictionary::TEncodingDiff DictionaryEncodingDiff; diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/drop_stat.cpp b/ydb/core/kqp/gateway/behaviour/tablestore/operations/drop_stat.cpp new file mode 100644 index 000000000000..94a18e7e4140 --- /dev/null +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/drop_stat.cpp @@ -0,0 +1,21 @@ +#include "drop_stat.h" +#include <util/string/type.h> + +namespace NKikimr::NKqp { + +TConclusionStatus TDropStatOperation::DoDeserialize(NYql::TObjectSettingsImpl::TFeaturesExtractor& features) { + { + auto fValue = features.Extract("NAME"); + if (!fValue) { + return TConclusionStatus::Fail("can't find parameter NAME"); + } + Name = *fValue; + } + return TConclusionStatus::Success(); +} + +void TDropStatOperation::DoSerializeScheme(NKikimrSchemeOp::TAlterColumnTableSchema& schemaData) const { + *schemaData.AddDropStatistics() = Name; +} + +} diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/drop_stat.h b/ydb/core/kqp/gateway/behaviour/tablestore/operations/drop_stat.h new file mode 100644 index 000000000000..777aae036858 --- /dev/null +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/drop_stat.h @@ -0,0 +1,19 @@ +#include "abstract.h" + +namespace NKikimr::NKqp { + +class TDropStatOperation : public ITableStoreOperation { + static TString GetTypeName() { + return "DROP_STAT"; + } + + static inline auto Registrator = TFactory::TRegistrator<TDropStatOperation>(GetTypeName()); +private: + TString Name; +public: + TConclusionStatus DoDeserialize(NYql::TObjectSettingsImpl::TFeaturesExtractor& features) override; + void DoSerializeScheme(NKikimrSchemeOp::TAlterColumnTableSchema& schemaData) const override; +}; + +} + diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_index.cpp b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_index.cpp index 61914cb6e005..ae0f08e3333d 100644 --- a/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_index.cpp +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_index.cpp @@ -12,6 +12,10 @@ TConclusionStatus TUpsertIndexOperation::DoDeserialize(NYql::TObjectSettingsImpl } IndexName = *fValue; } + StorageId = features.Extract("STORAGE_ID"); + if (StorageId && !*StorageId) { + return TConclusionStatus::Fail("STORAGE_ID cannot be empty string"); + } TString indexType; { auto fValue = features.Extract("TYPE"); @@ -42,6 +46,9 @@ TConclusionStatus TUpsertIndexOperation::DoDeserialize(NYql::TObjectSettingsImpl void TUpsertIndexOperation::DoSerializeScheme(NKikimrSchemeOp::TAlterColumnTableSchema& schemaData) const { auto* indexProto = schemaData.AddUpsertIndexes(); + if (StorageId) { + indexProto->SetStorageId(*StorageId); + } indexProto->SetName(IndexName); IndexMetaConstructor.SerializeToProto(*indexProto); } diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_index.h b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_index.h index 267829a1a5f4..12305f85f0ae 100644 --- a/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_index.h +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_index.h @@ -12,6 +12,7 @@ class TUpsertIndexOperation : public ITableStoreOperation { static inline auto Registrator = TFactory::TRegistrator<TUpsertIndexOperation>(GetTypeName()); private: TString IndexName; + std::optional<TString> StorageId; NBackgroundTasks::TInterfaceProtoContainer<NOlap::NIndexes::IIndexMetaConstructor> IndexMetaConstructor; public: TConclusionStatus DoDeserialize(NYql::TObjectSettingsImpl::TFeaturesExtractor& features) override; diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_opt.cpp b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_opt.cpp new file mode 100644 index 000000000000..e3474723d5aa --- /dev/null +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_opt.cpp @@ -0,0 +1,20 @@ +#include "upsert_opt.h" +#include <util/string/type.h> +#include <library/cpp/json/json_reader.h> + +namespace NKikimr::NKqp { + +TConclusionStatus TUpsertOptionsOperation::DoDeserialize(NYql::TObjectSettingsImpl::TFeaturesExtractor& features) { + auto value = features.Extract<bool>("SCHEME_NEED_ACTUALIZATION", false); + if (!value) { + TConclusionStatus::Fail("Incorrect value for SCHEME_NEED_ACTUALIZATION: cannot parse as boolean"); + } + SchemeNeedActualization = *value; + return TConclusionStatus::Success(); +} + +void TUpsertOptionsOperation::DoSerializeScheme(NKikimrSchemeOp::TAlterColumnTableSchema& schemaData) const { + schemaData.MutableOptions()->SetSchemeNeedActualization(SchemeNeedActualization); +} + +} diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_opt.h b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_opt.h new file mode 100644 index 000000000000..e0fdbe002ebd --- /dev/null +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_opt.h @@ -0,0 +1,22 @@ +#include "abstract.h" +#include <ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.h> + +namespace NKikimr::NKqp { + +class TUpsertOptionsOperation : public ITableStoreOperation { +private: + static TString GetTypeName() { + return "UPSERT_OPTIONS"; + } + + static inline const auto Registrator = TFactory::TRegistrator<TUpsertOptionsOperation>(GetTypeName()); +private: + bool SchemeNeedActualization = false; +public: + TConclusionStatus DoDeserialize(NYql::TObjectSettingsImpl::TFeaturesExtractor& features) override; + + void DoSerializeScheme(NKikimrSchemeOp::TAlterColumnTableSchema& schemaData) const override; +}; + +} + diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_stat.cpp b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_stat.cpp new file mode 100644 index 000000000000..9e8360dd5e35 --- /dev/null +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_stat.cpp @@ -0,0 +1,49 @@ +#include "upsert_stat.h" +#include <util/string/type.h> +#include <library/cpp/json/json_reader.h> + +namespace NKikimr::NKqp { + +TConclusionStatus TUpsertStatOperation::DoDeserialize(NYql::TObjectSettingsImpl::TFeaturesExtractor& features) { + { + auto fValue = features.Extract("NAME"); + if (!fValue) { + return TConclusionStatus::Fail("can't find alter parameter NAME"); + } + Name = *fValue; + } + TString type; + { + auto fValue = features.Extract("TYPE"); + if (!fValue) { + return TConclusionStatus::Fail("can't find alter parameter TYPE"); + } + type = *fValue; + } + { + auto fValue = features.Extract("FEATURES"); + if (!fValue) { + return TConclusionStatus::Fail("can't find alter parameter FEATURES"); + } + if (!Constructor.Initialize(type)) { + return TConclusionStatus::Fail("can't initialize stat constructor object for type \"" + type + "\""); + } + NJson::TJsonValue jsonData; + if (!NJson::ReadJsonFastTree(*fValue, &jsonData)) { + return TConclusionStatus::Fail("incorrect json in request FEATURES parameter"); + } + auto result = Constructor->DeserializeFromJson(jsonData); + if (result.IsFail()) { + return result; + } + } + return TConclusionStatus::Success(); +} + +void TUpsertStatOperation::DoSerializeScheme(NKikimrSchemeOp::TAlterColumnTableSchema& schemaData) const { + auto* proto = schemaData.AddUpsertStatistics(); + proto->SetName(Name); + Constructor.SerializeToProto(*proto); +} + +} diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_stat.h b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_stat.h new file mode 100644 index 000000000000..5d8abdffae8d --- /dev/null +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/upsert_stat.h @@ -0,0 +1,23 @@ +#include "abstract.h" +#include <ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.h> + +namespace NKikimr::NKqp { + +class TUpsertStatOperation : public ITableStoreOperation { +private: + static TString GetTypeName() { + return "UPSERT_STAT"; + } + + static inline const auto Registrator = TFactory::TRegistrator<TUpsertStatOperation>(GetTypeName()); +private: + TString Name; + NOlap::NStatistics::TConstructorContainer Constructor; +public: + TConclusionStatus DoDeserialize(NYql::TObjectSettingsImpl::TFeaturesExtractor& features) override; + + void DoSerializeScheme(NKikimrSchemeOp::TAlterColumnTableSchema& schemaData) const override; +}; + +} + diff --git a/ydb/core/kqp/gateway/behaviour/tablestore/operations/ya.make b/ydb/core/kqp/gateway/behaviour/tablestore/operations/ya.make index 3301f543b8f6..17d70abf65f2 100644 --- a/ydb/core/kqp/gateway/behaviour/tablestore/operations/ya.make +++ b/ydb/core/kqp/gateway/behaviour/tablestore/operations/ya.make @@ -7,11 +7,15 @@ SRCS( GLOBAL drop_column.cpp GLOBAL upsert_index.cpp GLOBAL drop_index.cpp + GLOBAL upsert_stat.cpp + GLOBAL drop_stat.cpp + GLOBAL upsert_opt.cpp ) PEERDIR( ydb/services/metadata/manager ydb/core/formats/arrow/serializer + ydb/core/tx/columnshard/engines/scheme/statistics/abstract ydb/core/kqp/gateway/utils ydb/core/protos ) diff --git a/ydb/core/kqp/runtime/kqp_scan_data.cpp b/ydb/core/kqp/runtime/kqp_scan_data.cpp index 7e8ef778f752..9ac41c01f221 100644 --- a/ydb/core/kqp/runtime/kqp_scan_data.cpp +++ b/ydb/core/kqp/runtime/kqp_scan_data.cpp @@ -3,6 +3,8 @@ #include <ydb/core/engine/minikql/minikql_engine_host.h> #include <ydb/core/protos/tx_datashard.pb.h> #include <ydb/core/scheme/scheme_types_proto.h> +#include <ydb/core/formats/arrow/common/accessor.h> +#include <ydb/core/formats/arrow/size_calcer.h> #include <ydb/library/yql/minikql/mkql_string_util.h> #include <ydb/library/yql/parser/pg_wrapper/interface/pack.h> @@ -210,11 +212,11 @@ template <class TArrayTypeExt, class TValueType = typename TArrayTypeExt::value_ class TElementAccessor { public: using TArrayType = TArrayTypeExt; - static NYql::NUdf::TUnboxedValue ExtractValue(TArrayType& array, const ui32 rowIndex) { + static NYql::NUdf::TUnboxedValue ExtractValue(const TArrayType& array, const ui32 rowIndex) { return NUdf::TUnboxedValuePod(static_cast<TValueType>(array.Value(rowIndex))); } - static void Validate(TArrayType& /*array*/) { + static void Validate(const TArrayType& /*array*/) { } @@ -227,13 +229,13 @@ template <> class TElementAccessor<arrow::Decimal128Array, NYql::NDecimal::TInt128> { public: using TArrayType = arrow::Decimal128Array; - static void Validate(arrow::Decimal128Array& array) { + static void Validate(const arrow::Decimal128Array& array) { const auto& type = arrow::internal::checked_cast<const arrow::Decimal128Type&>(*array.type()); YQL_ENSURE(type.precision() == NScheme::DECIMAL_PRECISION, "Unsupported Decimal precision."); YQL_ENSURE(type.scale() == NScheme::DECIMAL_SCALE, "Unsupported Decimal scale."); } - static NYql::NUdf::TUnboxedValue ExtractValue(arrow::Decimal128Array& array, const ui32 rowIndex) { + static NYql::NUdf::TUnboxedValue ExtractValue(const arrow::Decimal128Array& array, const ui32 rowIndex) { auto data = array.GetView(rowIndex); YQL_ENSURE(data.size() == sizeof(NYql::NDecimal::TInt128), "Wrong data size"); NYql::NDecimal::TInt128 val; @@ -249,10 +251,10 @@ template <> class TElementAccessor<arrow::BinaryArray, NUdf::TStringRef> { public: using TArrayType = arrow::BinaryArray; - static void Validate(arrow::BinaryArray& /*array*/) { + static void Validate(const arrow::BinaryArray& /*array*/) { } - static NYql::NUdf::TUnboxedValue ExtractValue(arrow::BinaryArray& array, const ui32 rowIndex) { + static NYql::NUdf::TUnboxedValue ExtractValue(const arrow::BinaryArray& array, const ui32 rowIndex) { auto data = array.GetView(rowIndex); return MakeString(NUdf::TStringRef(data.data(), data.size())); } @@ -265,10 +267,10 @@ template <> class TElementAccessor<arrow::FixedSizeBinaryArray, NUdf::TStringRef> { public: using TArrayType = arrow::FixedSizeBinaryArray; - static void Validate(arrow::FixedSizeBinaryArray& /*array*/) { + static void Validate(const arrow::FixedSizeBinaryArray& /*array*/) { } - static NYql::NUdf::TUnboxedValue ExtractValue(arrow::FixedSizeBinaryArray& array, const ui32 rowIndex) { + static NYql::NUdf::TUnboxedValue ExtractValue(const arrow::FixedSizeBinaryArray& array, const ui32 rowIndex) { auto data = array.GetView(rowIndex); return MakeString(NUdf::TStringRef(data.data(), data.size() - 1)); } @@ -281,26 +283,52 @@ class TElementAccessor<arrow::FixedSizeBinaryArray, NUdf::TStringRef> { template <class TElementAccessor, class TAccessor> TBytesStatistics WriteColumnValuesFromArrowSpecImpl(TAccessor editAccessor, - const TBatchDataAccessor& batch, const ui32 columnIndex, arrow::Array* arrayExt, NScheme::TTypeInfo columnType) { - auto& array = *reinterpret_cast<typename TElementAccessor::TArrayType*>(arrayExt); - TElementAccessor::Validate(array); + const TBatchDataAccessor& batch, const ui32 columnIndex, const std::shared_ptr<arrow::ChunkedArray>& chunkedArrayExt, NScheme::TTypeInfo columnType) { auto statAccumulator = TElementAccessor::BuildStatAccumulator(columnType); + auto trivialChunkedArray = std::make_shared<NArrow::NAccessor::TTrivialChunkedArray>(chunkedArrayExt); + NArrow::NAccessor::IChunkedArray::TReader reader(trivialChunkedArray); + + std::optional<ui32> chunkIdx; + std::optional<ui32> currentIdxFrom; + std::optional<NArrow::NAccessor::IChunkedArray::TAddress> address; + const typename TElementAccessor::TArrayType* currentArray = nullptr; const auto applyToIndex = [&](const ui32 rowIndexFrom, const ui32 rowIndexTo) { + if (!currentIdxFrom) { + address = reader.GetReadChunk(rowIndexFrom); + AFL_ENSURE(rowIndexFrom == 0)("real", rowIndexFrom); + } else { + AFL_ENSURE(rowIndexFrom == *currentIdxFrom + 1)("next", rowIndexFrom)("current", *currentIdxFrom); + if (!address->NextPosition()) { + address = reader.GetReadChunk(rowIndexFrom); + } + } + currentIdxFrom = rowIndexFrom; + + if (!chunkIdx || *chunkIdx != address->GetChunkIdx()) { + currentArray = static_cast<const typename TElementAccessor::TArrayType*>(address->GetArray().get()); + TElementAccessor::Validate(*currentArray); + chunkIdx = address->GetChunkIdx(); + } + auto& rowItem = editAccessor(rowIndexTo, columnIndex); - if (array.IsNull(rowIndexFrom)) { + if (currentArray->IsNull(address->GetPosition())) { statAccumulator.AddNull(); rowItem = NUdf::TUnboxedValue(); } else { - rowItem = TElementAccessor::ExtractValue(array, rowIndexFrom); + rowItem = TElementAccessor::ExtractValue(*currentArray, address->GetPosition()); statAccumulator.AddValue(rowItem); } }; if (batch.HasDataIndexes()) { ui32 idx = 0; - for (const i64 rowIndex: batch.GetDataIndexes()) { - applyToIndex(rowIndex, idx++); + std::map<ui64, ui64> remapIndexes; + for (const i64 rowIndex : batch.GetDataIndexes()) { + YQL_ENSURE(remapIndexes.emplace(rowIndex, idx++).second); + } + for (auto&& i : remapIndexes) { + applyToIndex(i.first, i.second); } } else { for (i64 rowIndex = 0; rowIndex < batch.GetRecordsCount(); ++rowIndex) { @@ -314,8 +342,7 @@ TBytesStatistics WriteColumnValuesFromArrowSpecImpl(TAccessor editAccessor, template <class TAccessor> TBytesStatistics WriteColumnValuesFromArrowImpl(TAccessor editAccessor, const TBatchDataAccessor& batch, i64 columnIndex, NScheme::TTypeInfo columnType) { - std::shared_ptr<arrow::Array> columnSharedPtr = batch.GetBatch()->column(columnIndex); - arrow::Array* columnPtr = columnSharedPtr.get(); + const std::shared_ptr<arrow::ChunkedArray> columnPtr = batch.GetBatch()->column(columnIndex); namespace NTypeIds = NScheme::NTypeIds; switch (columnType.GetTypeId()) { case NTypeIds::Bool: @@ -586,35 +613,36 @@ TBytesStatistics TKqpScanComputeContext::TScanData::TRowBatchReader::AddData(con return stats; } -TBytesStatistics TKqpScanComputeContext::TScanData::TBlockBatchReader::AddData(const TBatchDataAccessor& batch, TMaybe<ui64> /*shardId*/, +TBytesStatistics TKqpScanComputeContext::TScanData::TBlockBatchReader::AddData(const TBatchDataAccessor& dataAccessor, TMaybe<ui64> /*shardId*/, const THolderFactory& holderFactory) { TBytesStatistics stats; auto totalColsCount = TotalColumnsCount + 1; - TUnboxedValueVector batchValues; - batchValues.resize(totalColsCount); - std::shared_ptr<arrow::RecordBatch> filtered = batch.GetFiltered(); - for (int i = 0; i < filtered->num_columns(); ++i) { - batchValues[i] = holderFactory.CreateArrowBlock(arrow::Datum(filtered->column_data(i))); - } - const ui64 batchByteSize = NYql::NUdf::GetSizeOfArrowBatchInBytes(*filtered); - stats.AddStatistics({batchByteSize, batchByteSize}); - - // !!! TODO !!! - // if (!SystemColumns.empty()) { - // for (i64 rowIndex = 0; rowIndex < batch.num_rows(); ++rowIndex) { - // FillSystemColumns(&cells[rowIndex * ColumnsCount() + ResultColumns.size()], shardId, SystemColumns); - // } + auto batches = NArrow::SliceToRecordBatches(dataAccessor.GetFiltered()); + for (auto&& filtered : batches) { + TUnboxedValueVector batchValues; + batchValues.resize(totalColsCount); + for (int i = 0; i < filtered->num_columns(); ++i) { + batchValues[i] = holderFactory.CreateArrowBlock(arrow::Datum(filtered->column(i))); + } + const ui64 batchByteSize = NArrow::GetBatchDataSize(filtered); + stats.AddStatistics({batchByteSize, batchByteSize}); - // stats.AllocatedBytes += batch.num_rows() * SystemColumns.size() * sizeof(NUdf::TUnboxedValue); - // } + // !!! TODO !!! + // if (!SystemColumns.empty()) { + // for (i64 rowIndex = 0; rowIndex < batch.num_rows(); ++rowIndex) { + // FillSystemColumns(&cells[rowIndex * ColumnsCount() + ResultColumns.size()], shardId, SystemColumns); + // } - batchValues[totalColsCount - 1] = holderFactory.CreateArrowBlock(arrow::Datum(std::make_shared<arrow::UInt64Scalar>(batch.GetRecordsCount()))); - stats.AddStatistics({ sizeof(ui64) * batch.GetRecordsCount(), sizeof(ui64) * batch.GetRecordsCount()}); + // stats.AllocatedBytes += batch.num_rows() * SystemColumns.size() * sizeof(NUdf::TUnboxedValue); + // } - BlockBatches.emplace(TBlockBatch(totalColsCount, batch.GetRecordsCount(), std::move(batchValues), stats.AllocatedBytes)); - StoredBytes += stats.AllocatedBytes; + batchValues[totalColsCount - 1] = holderFactory.CreateArrowBlock(arrow::Datum(std::make_shared<arrow::UInt64Scalar>(filtered->num_rows()))); + stats.AddStatistics({sizeof(ui64) * filtered->num_rows(), sizeof(ui64) * filtered->num_rows()}); + BlockBatches.emplace(TBlockBatch(totalColsCount, filtered->num_rows(), std::move(batchValues), stats.AllocatedBytes)); + StoredBytes += stats.AllocatedBytes; + } return stats; } diff --git a/ydb/core/kqp/runtime/kqp_scan_data.h b/ydb/core/kqp/runtime/kqp_scan_data.h index fc091217c3aa..bb1e3fa44177 100644 --- a/ydb/core/kqp/runtime/kqp_scan_data.h +++ b/ydb/core/kqp/runtime/kqp_scan_data.h @@ -61,15 +61,15 @@ struct TBytesStatistics { class TBatchDataAccessor { private: - YDB_READONLY_DEF(std::shared_ptr<arrow::RecordBatch>, Batch); + YDB_READONLY_DEF(std::shared_ptr<arrow::Table>, Batch); YDB_READONLY_DEF(std::vector<ui32>, DataIndexes); - mutable std::shared_ptr<arrow::RecordBatch> FilteredBatch; + mutable std::shared_ptr<arrow::Table> FilteredBatch; public: - std::shared_ptr<arrow::RecordBatch> GetFiltered() const { + std::shared_ptr<arrow::Table> GetFiltered() const { if (!FilteredBatch) { if (DataIndexes.size()) { auto permutation = NArrow::MakeFilterPermutation(DataIndexes); - FilteredBatch = NArrow::TStatusValidator::GetValid(arrow::compute::Take(Batch, permutation)).record_batch(); + FilteredBatch = NArrow::TStatusValidator::GetValid(arrow::compute::Take(Batch, permutation)).table(); } else { FilteredBatch = Batch; } @@ -85,7 +85,7 @@ class TBatchDataAccessor { return DataIndexes.size() ? DataIndexes.size() : Batch->num_rows(); } - TBatchDataAccessor(const std::shared_ptr<arrow::RecordBatch>& batch, std::vector<ui32>&& dataIndexes) + TBatchDataAccessor(const std::shared_ptr<arrow::Table>& batch, std::vector<ui32>&& dataIndexes) : Batch(batch) , DataIndexes(std::move(dataIndexes)) { @@ -93,12 +93,19 @@ class TBatchDataAccessor { AFL_VERIFY(Batch->num_rows()); } - TBatchDataAccessor(const std::shared_ptr<arrow::RecordBatch>& batch) + TBatchDataAccessor(const std::shared_ptr<arrow::Table>& batch) : Batch(batch) { AFL_VERIFY(Batch); AFL_VERIFY(Batch->num_rows()); } + + TBatchDataAccessor(const std::shared_ptr<arrow::RecordBatch>& batch) + : Batch(NArrow::TStatusValidator::GetValid(arrow::Table::FromRecordBatches({batch}))) { + AFL_VERIFY(Batch); + AFL_VERIFY(Batch->num_rows()); + + } }; TBytesStatistics GetUnboxedValueSize(const NUdf::TUnboxedValue& value, const NScheme::TTypeInfo& type); diff --git a/ydb/core/kqp/runtime/kqp_write_actor.cpp b/ydb/core/kqp/runtime/kqp_write_actor.cpp index c6217022aeeb..6d375d38eef3 100644 --- a/ydb/core/kqp/runtime/kqp_write_actor.cpp +++ b/ydb/core/kqp/runtime/kqp_write_actor.cpp @@ -334,7 +334,7 @@ class TKqpWriteActor : public TActorBootstrapped<TKqpWriteActor>, public NYql::N auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>( inFlightBatch.TxId, NKikimrDataEvents::TEvWrite::MODE_PREPARE); - ui64 payloadIndex = NKikimr::NEvWrite::TPayloadHelper<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite) + ui64 payloadIndex = NKikimr::NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite) .AddDataToPayload(TString(inFlightBatch.Data)); evWrite->AddOperation( diff --git a/ydb/core/kqp/ut/common/columnshard.cpp b/ydb/core/kqp/ut/common/columnshard.cpp index e4e8132a5d05..9ff87240e3fa 100644 --- a/ydb/core/kqp/ut/common/columnshard.cpp +++ b/ydb/core/kqp/ut/common/columnshard.cpp @@ -3,6 +3,27 @@ namespace NKikimr { namespace NKqp { + + TString GetConfigProtoWithName(const TString & tierName) { + return TStringBuilder() << "Name : \"" << tierName << "\"\n" << + R"( + ObjectStorage : { + Endpoint: "fake" + Bucket: "fake" + SecretableAccessKey: { + Value: { + Data: "secretAccessKey" + } + } + SecretableSecretKey: { + Value: { + Data: "secretSecretKey" + } + } + } + )"; + } + using namespace NYdb; TTestHelper::TTestHelper(const TKikimrSettings& settings) @@ -23,9 +44,46 @@ namespace NKqp { return Session; } - void TTestHelper::CreateTable(const TColumnTableBase& table) { + void TTestHelper::CreateTable(const TColumnTableBase& table, const EStatus expectedStatus) { std::cerr << (table.BuildQuery()) << std::endl; auto result = Session.ExecuteSchemeQuery(table.BuildQuery()).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), expectedStatus, result.GetIssues().ToString()); + } + + void TTestHelper::CreateTier(const TString& tierName) { + auto result = Session.ExecuteSchemeQuery("CREATE OBJECT " + tierName + " (TYPE TIER) WITH tierConfig = `" + GetConfigProtoWithName(tierName) + "`").GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + } + + TString TTestHelper::CreateTieringRule(const TString& tierName, const TString& columnName) { + const TString ruleName = tierName + "_" + columnName; + const TString configTieringStr = TStringBuilder() << R"({ + "rules" : [ + { + "tierName" : ")" << tierName << R"(", + "durationForEvict" : "10d" + } + ] + })"; + auto result = Session.ExecuteSchemeQuery("CREATE OBJECT IF NOT EXISTS " + ruleName + " (TYPE TIERING_RULE) WITH (defaultColumn = " + columnName + ", description = `" + configTieringStr + "`)").GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + return ruleName; + } + + void TTestHelper::SetTiering(const TString& tableName, const TString& ruleName) { + auto alterQuery = TStringBuilder() << "ALTER TABLE `" << tableName << "` SET (TIERING = '" << ruleName << "')"; + auto result = Session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + } + + void TTestHelper::ResetTiering(const TString& tableName) { + auto alterQuery = TStringBuilder() << "ALTER TABLE `" << tableName << "` RESET (TIERING)"; + auto result = Session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + } + + void TTestHelper::DropTable(const TString& tableName) { + auto result = Session.DropTable(tableName).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); } @@ -62,7 +120,8 @@ namespace NKqp { } } for (auto shard : shards) { - RebootTablet(*runtime, shard, sender); + Kikimr.GetTestServer().GetRuntime()->Send(MakePipePeNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward( + new TEvents::TEvPoisonPill(), shard, false)); } } diff --git a/ydb/core/kqp/ut/common/columnshard.h b/ydb/core/kqp/ut/common/columnshard.h index adc2ea16989a..2ac738be7cd7 100644 --- a/ydb/core/kqp/ut/common/columnshard.h +++ b/ydb/core/kqp/ut/common/columnshard.h @@ -70,7 +70,12 @@ namespace NKqp { TKikimrRunner& GetKikimr(); TTestActorRuntime& GetRuntime(); NYdb::NTable::TSession& GetSession(); - void CreateTable(const TColumnTableBase& table); + void CreateTable(const TColumnTableBase& table, const NYdb::EStatus expectedStatus = NYdb::EStatus::SUCCESS); + void DropTable(const TString& tableName); + void CreateTier(const TString& tierName); + TString CreateTieringRule(const TString& tierName, const TString& columnName); + void SetTiering(const TString& tableName, const TString& ruleName); + void ResetTiering(const TString& tableName); void BulkUpsert(const TColumnTable& table, TTestHelper::TUpdatesBuilder& updates, const Ydb::StatusIds_StatusCode& opStatus = Ydb::StatusIds::SUCCESS); void BulkUpsert(const TColumnTable& table, std::shared_ptr<arrow::RecordBatch> batch, const Ydb::StatusIds_StatusCode& opStatus = Ydb::StatusIds::SUCCESS); void ReadData(const TString& query, const TString& expected, const NYdb::EStatus opStatus = NYdb::EStatus::SUCCESS); diff --git a/ydb/core/kqp/ut/common/kqp_ut_common.cpp b/ydb/core/kqp/ut/common/kqp_ut_common.cpp index adea3a31a098..46abedf3101f 100644 --- a/ydb/core/kqp/ut/common/kqp_ut_common.cpp +++ b/ydb/core/kqp/ut/common/kqp_ut_common.cpp @@ -1305,6 +1305,18 @@ TVector<ui64> GetTableShards(Tests::TServer* server, return shards; } +TVector<ui64> GetColumnTableShards(Tests::TServer* server, + TActorId sender, + const TString &path) +{ + TVector<ui64> shards; + auto lsResult = DescribeTable(server, sender, path); + for (auto &part : lsResult.GetPathDescription().GetColumnTableDescription().GetSharding().GetColumnShards()) + shards.push_back(part); + + return shards; +} + TVector<ui64> GetTableShards(Tests::TServer::TPtr server, TActorId sender, const TString &path) { diff --git a/ydb/core/kqp/ut/common/kqp_ut_common.h b/ydb/core/kqp/ut/common/kqp_ut_common.h index 10b01f158175..8af2defd13ad 100644 --- a/ydb/core/kqp/ut/common/kqp_ut_common.h +++ b/ydb/core/kqp/ut/common/kqp_ut_common.h @@ -325,6 +325,7 @@ NKikimrScheme::TEvDescribeSchemeResult DescribeTable(Tests::TServer* server, TAc TVector<ui64> GetTableShards(Tests::TServer* server, TActorId sender, const TString &path); TVector<ui64> GetTableShards(Tests::TServer::TPtr server, TActorId sender, const TString &path); +TVector<ui64> GetColumnTableShards(Tests::TServer* server, TActorId sender, const TString &path); void WaitForZeroSessions(const NKqp::TKqpCounters& counters); diff --git a/ydb/core/kqp/ut/olap/aggregations_ut.cpp b/ydb/core/kqp/ut/olap/aggregations_ut.cpp new file mode 100644 index 000000000000..841a04f9ca62 --- /dev/null +++ b/ydb/core/kqp/ut/olap/aggregations_ut.cpp @@ -0,0 +1,1354 @@ +#include <ydb/core/formats/arrow/ssa_runtime_version.h> + +#include "helpers/aggregation.h" + +#include <ydb/core/tx/columnshard/hooks/testing/controller.h> +#include <ydb/core/tx/columnshard/defs.h> +#include <ydb/core/wrappers/fake_storage.h> + +#include <library/cpp/testing/unittest/registar.h> +#include <contrib/libs/fmt/include/fmt/format.h> + +namespace NKikimr::NKqp { + +Y_UNIT_TEST_SUITE(KqpOlapAggregations) { + Y_UNIT_TEST(Aggregation) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + + TLocalHelper(kikimr).CreateTestOlapTable(); + + auto tableClient = kikimr.GetTableClient(); + + { + auto it = tableClient.StreamExecuteScanQuery(R"( + --!syntax_v1 + + SELECT + COUNT(*) + FROM `/Root/olapStore/olapTable` + )").GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cout << result << Endl; + CompareYson(result, R"([[0u;]])"); + } + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); + } + + { + auto it = tableClient.StreamExecuteScanQuery(R"( + --!syntax_v1 + + SELECT + COUNT(*), MAX(`resource_id`), MAX(`timestamp`), MIN(LENGTH(`message`)) + FROM `/Root/olapStore/olapTable` + )").GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cout << result << Endl; + CompareYson(result, R"([[23000u;["40999"];[3004999u];[1036u]]])"); + } + + { + auto it = tableClient.StreamExecuteScanQuery(R"( + --!syntax_v1 + + SELECT + COUNT(*) + FROM `/Root/olapStore/olapTable` + )").GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cout << result << Endl; + CompareYson(result, R"([[23000u;]])"); + } + } + + Y_UNIT_TEST(AggregationCountPushdown) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false) + .SetForceColumnTablesCompositeMarks(true); + TKikimrRunner kikimr(settings); + + TLocalHelper(kikimr).CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); + } + while (csController->GetInsertFinishedCounter().Val() == 0) { + Cout << "Wait indexation..." << Endl; + Sleep(TDuration::Seconds(2)); + } + AFL_VERIFY(Singleton<NWrappers::NExternalStorage::TFakeExternalStorage>()->GetSize()); + + { + TString query = R"( + --!syntax_v1 + SELECT + COUNT(level) + FROM `/Root/olapStore/olapTable` + )"; + auto opStartTime = Now(); + auto it = tableClient.StreamExecuteScanQuery(query).GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cerr << "!!!\nPushdown query execution time: " << (Now() - opStartTime).MilliSeconds() << "\n!!!\n"; + Cout << result << Endl; + CompareYson(result, R"([[23000u;]])"); + + // Check plan +#if SSA_RUNTIME_VERSION >= 2U + CheckPlanForAggregatePushdown(query, tableClient, { "TKqpOlapAgg" }, "TableFullScan"); +#else + CheckPlanForAggregatePushdown(query, tableClient, { "CombineCore" }, ""); +#endif + } + } + + Y_UNIT_TEST(AggregationCountGroupByPushdown) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false) + .SetForceColumnTablesCompositeMarks(true); + TKikimrRunner kikimr(settings); + + TLocalHelper(kikimr).CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); + } + + { + TString query = R"( + --!syntax_v1 + PRAGMA Kikimr.OptUseFinalizeByKey; + SELECT + level, COUNT(level) + FROM `/Root/olapStore/olapTable` + GROUP BY level + ORDER BY level + )"; + auto it = tableClient.StreamExecuteScanQuery(query).GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cout << result << Endl; + CompareYson(result, R"([[[0];4600u];[[1];4600u];[[2];4600u];[[3];4600u];[[4];4600u]])"); + + // Check plan +#if SSA_RUNTIME_VERSION >= 2U + CheckPlanForAggregatePushdown(query, tableClient, { "WideCombiner" }, "Aggregate-TableFullScan"); +// CheckPlanForAggregatePushdown(query, tableClient, { "TKqpOlapAgg" }, "TableFullScan"); +#else + CheckPlanForAggregatePushdown(query, tableClient, { "CombineCore" }, ""); +#endif + } + } + + Y_UNIT_TEST_TWIN(CountAllPushdown, UseLlvm) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false) + .SetForceColumnTablesCompositeMarks(true); + TKikimrRunner kikimr(settings); + + TLocalHelper(kikimr).CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); + } + + { + TString query = fmt::format(R"( + --!syntax_v1 + PRAGMA ydb.UseLlvm = "{}"; + + SELECT + COUNT(*) + FROM `/Root/olapStore/olapTable` + )", UseLlvm ? "true" : "false"); + auto it = tableClient.StreamExecuteScanQuery(query).GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cout << result << Endl; + CompareYson(result, R"([[23000u;]])"); + + // Check plan +#if SSA_RUNTIME_VERSION >= 2U + CheckPlanForAggregatePushdown(query, tableClient, { "TKqpOlapAgg" }, "TableFullScan"); +#else + CheckPlanForAggregatePushdown(query, tableClient, { "Condense" }, ""); +#endif + } + } + + Y_UNIT_TEST_TWIN(CountAllPushdownBackwardCompatibility, EnableLlvm) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false) + .SetForceColumnTablesCompositeMarks(true); + TKikimrRunner kikimr(settings); + + TLocalHelper(kikimr).CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); + } + + { + TString query = fmt::format(R"( + --!syntax_v1 + PRAGMA Kikimr.EnableLlvm = "{}"; + + SELECT + COUNT(*) + FROM `/Root/olapStore/olapTable` + )", EnableLlvm ? "true" : "false"); + auto it = tableClient.StreamExecuteScanQuery(query).GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cout << result << Endl; + CompareYson(result, R"([[23000u;]])"); + + // Check plan +#if SSA_RUNTIME_VERSION >= 2U + CheckPlanForAggregatePushdown(query, tableClient, { "TKqpOlapAgg" }, "TableFullScan"); +#else + CheckPlanForAggregatePushdown(query, tableClient, { "Condense" }, ""); +#endif + } + } + + Y_UNIT_TEST(CountAllNoPushdown) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false) + .SetForceColumnTablesCompositeMarks(true); + TKikimrRunner kikimr(settings); + + TLocalHelper(kikimr).CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); + } + + { + auto it = tableClient.StreamExecuteScanQuery(R"( + --!syntax_v1 + SELECT + COUNT(*) + FROM `/Root/olapStore/olapTable` + )").GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cout << result << Endl; + CompareYson(result, R"([[23000u;]])"); + } + } + + Y_UNIT_TEST(Filter_NotAllUsedFieldsInResultSet) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT id, resource_id FROM `/Root/tableWithNulls` + WHERE + level = 5; + )") + .SetExpectedReply("[[5;#]]") + .AddExpectedPlanOptions("KqpOlapFilter"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_ResultDistinctCountRI_GroupByL) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, COUNT(DISTINCT resource_id) + FROM `/Root/olapStore/olapTable` + GROUP BY level + ORDER BY level + )") + .SetExpectedReply("[[[0];4600u];[[1];4600u];[[2];4600u];[[3];4600u];[[4];4600u]]") + ; + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_ResultCountAll_FilterL) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + COUNT(*) + FROM `/Root/olapStore/olapTable` + WHERE level = 2 + )") + .SetExpectedReply("[[4600u;]]") + .AddExpectedPlanOptions("KqpOlapFilter") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg") + .MutableLimitChecker().SetExpectedResultCount(1) +#else + .AddExpectedPlanOptions("Condense") +#endif + ; + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_ResultCountL_FilterL) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + COUNT(level) + FROM `/Root/olapStore/olapTable` + WHERE level = 2 + )") + .SetExpectedReply("[[4600u;]]") + .AddExpectedPlanOptions("KqpOlapFilter") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg") + .MutableLimitChecker().SetExpectedResultCount(1) +#else + .AddExpectedPlanOptions("CombineCore") +#endif + ; + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_ResultCountT_FilterL) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + COUNT(timestamp) + FROM `/Root/olapStore/olapTable` + WHERE level = 2 + )") + .SetExpectedReply("[[4600u;]]") + .AddExpectedPlanOptions("KqpOlapFilter") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg") + .MutableLimitChecker().SetExpectedResultCount(1) +#else + .AddExpectedPlanOptions("CombineCore") + .AddExpectedPlanOptions("KqpOlapFilter") +#endif + ; + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_ResultTL_FilterL_Limit2) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + timestamp, level + FROM `/Root/olapStore/olapTable` + WHERE level = 2 + LIMIT 2 + )") + .AddExpectedPlanOptions("KqpOlapFilter") + .MutableLimitChecker().SetExpectedLimit(2); + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_ResultTL_FilterL_OrderT_Limit2) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + timestamp, level + FROM `/Root/olapStore/olapTable` + WHERE level = 2 + ORDER BY timestamp + LIMIT 2 + )") + .AddExpectedPlanOptions("KqpOlapFilter") + .MutableLimitChecker().SetExpectedLimit(2); + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_ResultT_FilterL_Limit2) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + timestamp + FROM `/Root/olapStore/olapTable` + WHERE level = 2 + LIMIT 2 + )") + .AddExpectedPlanOptions("KqpOlapFilter") + .AddExpectedPlanOptions("KqpOlapExtractMembers") + .MutableLimitChecker().SetExpectedLimit(2); + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_ResultT_FilterL_OrderT_Limit2) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + timestamp + FROM `/Root/olapStore/olapTable` + WHERE level = 2 + ORDER BY timestamp + LIMIT 2 + )") + .AddExpectedPlanOptions("KqpOlapFilter") + .AddExpectedPlanOptions("KqpOlapExtractMembers") + .MutableLimitChecker().SetExpectedLimit(2); + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_ResultL_FilterL_OrderL_Limit2) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + timestamp, level + FROM `/Root/olapStore/olapTable` + WHERE level > 1 + ORDER BY level + LIMIT 2 + )") + .AddExpectedPlanOptions("KqpOlapFilter"); + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_ResultCountExpr) { + auto g = NColumnShard::TLimits::MaxBlobSizeGuard(10000); + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + COUNT(level + 2) + FROM `/Root/olapStore/olapTable` + )") + .SetExpectedReply("[[23000u;]]") + .AddExpectedPlanOptions("Condense1"); + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Count_Null) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + COUNT(level) + FROM `/Root/tableWithNulls` + WHERE id > 5; + )") + .SetExpectedReply("[[0u]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Count_NullMix) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + COUNT(level) + FROM `/Root/tableWithNulls`; + )") + .SetExpectedReply("[[5u]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Count_GroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, COUNT(level) + FROM `/Root/tableWithNulls` + WHERE id BETWEEN 4 AND 5 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[4;1u];[5;1u]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Count_NullGroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, COUNT(level) + FROM `/Root/tableWithNulls` + WHERE id BETWEEN 6 AND 7 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[6;0u];[7;0u]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Count_NullMixGroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, COUNT(level) + FROM `/Root/tableWithNulls` + WHERE id > 4 AND id < 7 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[5;1u];[6;0u]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Count_GroupByNull) { + // Wait for KIKIMR-16940 fix + return; + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, COUNT(id), COUNT(level), COUNT(*) + FROM `/Root/tableWithNulls` + WHERE id > 5 + GROUP BY level + ORDER BY level; + )") + .SetExpectedReply("[[#;5u;0u;5u]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Count_GroupByNullMix) { + // Wait for KIKIMR-16940 fix + return; + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, COUNT(id), COUNT(level), COUNT(*) + FROM `/Root/tableWithNulls` + WHERE id >= 5 + GROUP BY level + ORDER BY level; + )") + .SetExpectedReply("[[#;5u;0u;5u];[[5];1u;1u;1u]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_NoPushdownOnDisabledEmitAggApply) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + PRAGMA DisableEmitAggApply; + SELECT + COUNT(level) + FROM `/Root/olapStore/olapTable` + )") + .SetExpectedReply("[[23000u;]]") + .AddExpectedPlanOptions("Condense1"); + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(AggregationAndFilterPushdownOnDiffCols) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + COUNT(`timestamp`) + FROM `/Root/olapStore/olapTable` + WHERE level = 2 + )") + .SetExpectedReply("[[4600u;]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg") +#else + .AddExpectedPlanOptions("CombineCore") +#endif + .AddExpectedPlanOptions("KqpOlapFilter"); + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Avg) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + AVG(level), MIN(level) + FROM `/Root/olapStore/olapTable` + )") + .SetExpectedReply("[[[2.];[0]]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Avg_Null) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + AVG(level) + FROM `/Root/tableWithNulls` + WHERE id > 5; + )") + .SetExpectedReply("[[#]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Avg_NullMix) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + AVG(level) + FROM `/Root/tableWithNulls`; + )") + .SetExpectedReply("[[[3.]]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Avg_GroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, AVG(level) + FROM `/Root/tableWithNulls` + WHERE id BETWEEN 4 AND 5 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[4;[4.]];[5;[5.]]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Avg_NullGroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, AVG(level) + FROM `/Root/tableWithNulls` + WHERE id BETWEEN 6 AND 7 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[6;#];[7;#]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Avg_NullMixGroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, AVG(level) + FROM `/Root/tableWithNulls` + WHERE id > 4 AND id < 7 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[5;[5.]];[6;#]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Avg_GroupByNull) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, AVG(id), AVG(level) + FROM `/Root/tableWithNulls` + WHERE id > 5 + GROUP BY level + ORDER BY level; + )") + .SetExpectedReply("[[#;8.;#]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Avg_GroupByNullMix) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, AVG(id), AVG(level) + FROM `/Root/tableWithNulls` + WHERE id >= 5 + GROUP BY level + ORDER BY level; + )") + .SetExpectedReply("[[#;8.;#];[[5];5.;[5.]]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Sum) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + SUM(level) + FROM `/Root/olapStore/olapTable` + )") + .SetExpectedReply("[[[46000;]]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Sum_Null) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + SUM(level) + FROM `/Root/tableWithNulls` + WHERE id > 5; + )") + .SetExpectedReply("[[#]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Sum_NullMix) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + SUM(level) + FROM `/Root/tableWithNulls`; + )") + .SetExpectedReply("[[[15]]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Sum_GroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, SUM(level) + FROM `/Root/tableWithNulls` + WHERE id BETWEEN 4 AND 5 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[4;[4]];[5;[5]]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Sum_NullGroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, SUM(level) + FROM `/Root/tableWithNulls` + WHERE id BETWEEN 6 AND 7 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[6;#];[7;#]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Sum_NullMixGroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, SUM(level) + FROM `/Root/tableWithNulls` + WHERE id > 4 AND id < 7 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[5;[5]];[6;#]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Sum_GroupByNull) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, SUM(id), SUM(level) + FROM `/Root/tableWithNulls` + WHERE id > 5 + GROUP BY level + ORDER BY level; + )") + .SetExpectedReply("[[#;40;#]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Sum_GroupByNullMix) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, SUM(id), SUM(level) + FROM `/Root/tableWithNulls` + WHERE id >= 5 + GROUP BY level + ORDER BY level; + )") + .SetExpectedReply("[[#;40;#];[[5];5;[5]]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_SumL_GroupL_OrderL) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, SUM(level) + FROM `/Root/olapStore/olapTable` + GROUP BY level + ORDER BY level + )") + .SetExpectedReply("[[[0];[0]];[[1];[4600]];[[2];[9200]];[[3];[13800]];[[4];[18400]]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_MinL) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + MIN(level) + FROM `/Root/olapStore/olapTable` + )") + .SetExpectedReply("[[[0]]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_MaxL) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + MAX(level) + FROM `/Root/olapStore/olapTable` + )") + .SetExpectedReply("[[[4]]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_MinR_GroupL_OrderL) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, MIN(resource_id) + FROM `/Root/olapStore/olapTable` + GROUP BY level + ORDER BY level + )") + .SetExpectedReply("[[[0];[\"10000\"]];[[1];[\"10001\"]];[[2];[\"10002\"]];[[3];[\"10003\"]];[[4];[\"10004\"]]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_MaxR_GroupL_OrderL) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, MAX(resource_id) + FROM `/Root/olapStore/olapTable` + GROUP BY level + ORDER BY level + )") + .SetExpectedReply("[[[0];[\"40995\"]];[[1];[\"40996\"]];[[2];[\"40997\"]];[[3];[\"40998\"]];[[4];[\"40999\"]]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_ProjectionOrder) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + resource_id, level, count(*) as c + FROM `/Root/olapStore/olapTable` + GROUP BY resource_id, level + ORDER BY c, resource_id DESC LIMIT 3 + )") + .SetExpectedReply("[[[\"40999\"];[4];1u];[[\"40998\"];[3];1u];[[\"40997\"];[2];1u]]") + .SetExpectedReadNodeType("Aggregate-TableFullScan"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + TestAggregations({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Some) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT SOME(level) FROM `/Root/tableWithNulls` WHERE id=1 + )") + .SetExpectedReply("[[[1]]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Some_Null) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT SOME(level) FROM `/Root/tableWithNulls` WHERE id > 5 + )") + .SetExpectedReply("[[#]]") +#if SSA_RUNTIME_VERSION >= 2U + .AddExpectedPlanOptions("TKqpOlapAgg"); +#else + .AddExpectedPlanOptions("CombineCore"); +#endif + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Some_GroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, SOME(level) + FROM `/Root/tableWithNulls` + WHERE id BETWEEN 4 AND 5 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[4;[4]];[5;[5]]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Some_NullGroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, SOME(level) + FROM `/Root/tableWithNulls` + WHERE id BETWEEN 6 AND 7 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[6;#];[7;#]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Some_NullMixGroupBy) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, SOME(level) + FROM `/Root/tableWithNulls` + WHERE id > 4 AND id < 7 + GROUP BY id + ORDER BY id; + )") + .SetExpectedReply("[[5;[5]];[6;#]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Some_GroupByNullMix) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, SOME(id), SOME(level) + FROM `/Root/tableWithNulls` + WHERE id BETWEEN 5 AND 6 + GROUP BY level + ORDER BY level; + )") + .SetExpectedReply("[[#;6;#];[[5];5;[5]]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Aggregation_Some_GroupByNull) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, SOME(id), SOME(level) + FROM `/Root/tableWithNulls` + WHERE id = 6 + GROUP BY level + ORDER BY level; + )") + .SetExpectedReply("[[#;6;#]]"); + testCase.FillExpectedAggregationGroupByPlanOptions(); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(NoErrorOnLegacyPragma) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + PRAGMA Kikimr.KqpPushOlapProcess = "false"; + SELECT id, resource_id FROM `/Root/tableWithNulls` + WHERE + level = 5; + )") + .SetExpectedReply("[[5;#]]") + .AddExpectedPlanOptions("KqpOlapFilter"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(BlocksRead) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + PRAGMA UseBlocks; + PRAGMA Kikimr.OptEnableOlapPushdown = "false"; + + SELECT + id, resource_id + FROM `/Root/tableWithNulls` + WHERE + level = 5; + )") + .SetExpectedReply("[[5;#]]"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Blocks_NoAggPushdown) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + PRAGMA UseBlocks; + SELECT + COUNT(DISTINCT id) + FROM `/Root/tableWithNulls`; + )") + .SetExpectedReply("[[10u]]"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Json_GetValue) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT id, JSON_VALUE(jsonval, "$.col1"), JSON_VALUE(jsondoc, "$.col1") FROM `/Root/tableWithNulls` + WHERE JSON_VALUE(jsonval, "$.col1") = "val1" AND id = 1; + )") +#if SSA_RUNTIME_VERSION >= 3U + .AddExpectedPlanOptions("KqpOlapJsonValue") +#else + .AddExpectedPlanOptions("Udf") +#endif + .SetExpectedReply(R"([[1;["val1"];#]])"); + + TestTableWithNulls({testCase}); + } + + Y_UNIT_TEST(Json_GetValue_Minus) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT id, JSON_VALUE(jsonval, "$.'col-abc'"), JSON_VALUE(jsondoc, "$.'col-abc'") FROM `/Root/tableWithNulls` + WHERE JSON_VALUE(jsonval, "$.'col-abc'") = "val-abc" AND id = 1; + )") +#if SSA_RUNTIME_VERSION >= 3U + .AddExpectedPlanOptions("KqpOlapJsonValue") +#else + .AddExpectedPlanOptions("Udf") +#endif + .SetExpectedReply(R"([[1;["val-abc"];#]])"); + + TestTableWithNulls({testCase}); + } + + Y_UNIT_TEST(Json_GetValue_ToString) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT id, JSON_VALUE(jsonval, "$.col1" RETURNING String), JSON_VALUE(jsondoc, "$.col1") FROM `/Root/tableWithNulls` + WHERE JSON_VALUE(jsonval, "$.col1" RETURNING String) = "val1" AND id = 1; + )") +#if SSA_RUNTIME_VERSION >= 3U + .AddExpectedPlanOptions("KqpOlapJsonValue") +#else + .AddExpectedPlanOptions("Udf") +#endif + .SetExpectedReply(R"([[1;["val1"];#]])"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Json_GetValue_ToInt) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT id, JSON_VALUE(jsonval, "$.obj.obj_col2_int" RETURNING Int), JSON_VALUE(jsondoc, "$.obj.obj_col2_int" RETURNING Int) FROM `/Root/tableWithNulls` + WHERE JSON_VALUE(jsonval, "$.obj.obj_col2_int" RETURNING Int) = 16 AND id = 1; + )") +#if SSA_RUNTIME_VERSION >= 3U + .AddExpectedPlanOptions("KqpOlapJsonValue") +#else + .AddExpectedPlanOptions("Udf") +#endif + .SetExpectedReply(R"([[1;[16];#]])"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(JsonDoc_GetValue) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT id, JSON_VALUE(jsonval, "$.col1"), JSON_VALUE(jsondoc, "$.col1") FROM `/Root/tableWithNulls` + WHERE JSON_VALUE(jsondoc, "$.col1") = "val1" AND id = 6; + )") +#if SSA_RUNTIME_VERSION >= 3U + .AddExpectedPlanOptions("KqpOlapJsonValue") +#else + .AddExpectedPlanOptions("Udf") +#endif + .SetExpectedReply(R"([[6;#;["val1"]]])"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(JsonDoc_GetValue_ToString) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT id, JSON_VALUE(jsonval, "$.col1"), JSON_VALUE(jsondoc, "$.col1" RETURNING String) FROM `/Root/tableWithNulls` + WHERE JSON_VALUE(jsondoc, "$.col1" RETURNING String) = "val1" AND id = 6; + )") +#if SSA_RUNTIME_VERSION >= 3U + .AddExpectedPlanOptions("KqpOlapJsonValue") +#else + .AddExpectedPlanOptions("Udf") +#endif + .SetExpectedReply(R"([[6;#;["val1"]]])"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(JsonDoc_GetValue_ToInt) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT id, JSON_VALUE(jsonval, "$.obj.obj_col2_int"), JSON_VALUE(jsondoc, "$.obj.obj_col2_int" RETURNING Int) FROM `/Root/tableWithNulls` + WHERE JSON_VALUE(jsondoc, "$.obj.obj_col2_int" RETURNING Int) = 16 AND id = 6; + )") +#if SSA_RUNTIME_VERSION >= 3U + .AddExpectedPlanOptions("KqpOlapJsonValue") +#else + .AddExpectedPlanOptions("Udf") +#endif + .SetExpectedReply(R"([[6;#;[16]]])"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Json_Exists) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT id, JSON_EXISTS(jsonval, "$.col1"), JSON_EXISTS(jsondoc, "$.col1") FROM `/Root/tableWithNulls` + WHERE + JSON_EXISTS(jsonval, "$.col1") AND level = 1; + )") +#if SSA_RUNTIME_VERSION >= 3U + .AddExpectedPlanOptions("KqpOlapJsonExists") +#else + .AddExpectedPlanOptions("Udf") +#endif + .SetExpectedReply(R"([[1;[%true];#]])"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(JsonDoc_Exists) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT id, JSON_EXISTS(jsonval, "$.col1"), JSON_EXISTS(jsondoc, "$.col1") FROM `/Root/tableWithNulls` + WHERE + JSON_EXISTS(jsondoc, "$.col1") AND id = 6; + )") +#if SSA_RUNTIME_VERSION >= 3U + .AddExpectedPlanOptions("KqpOlapJsonExists") +#else + .AddExpectedPlanOptions("Udf") +#endif + .SetExpectedReply(R"([[6;#;[%true]]])"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(Json_Query) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT id, JSON_QUERY(jsonval, "$.col1" WITH UNCONDITIONAL WRAPPER), + JSON_QUERY(jsondoc, "$.col1" WITH UNCONDITIONAL WRAPPER) + FROM `/Root/tableWithNulls` + WHERE + level = 1; + )") + .AddExpectedPlanOptions("Udf") + .SetExpectedReply(R"([[1;["[\"val1\"]"];#]])"); + + TestTableWithNulls({ testCase }); + } + + Y_UNIT_TEST(BlockGenericWithDistinct) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + COUNT(DISTINCT id) + FROM `/Root/tableWithNulls` + WHERE level = 5 AND Cast(id AS String) = "5"; + )") + .AddExpectedPlanOptions("KqpBlockReadOlapTableRanges") + .AddExpectedPlanOptions("WideFromBlocks") + .SetExpectedReply("[[1u]]"); + TestTableWithNulls({ testCase }, /* generic */ true); + } + + Y_UNIT_TEST(BlockGenericSimpleAggregation) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + level, COUNT(*), SUM(id) + FROM `/Root/tableWithNulls` + WHERE level = 5 + GROUP BY level + ORDER BY level; + )") + .AddExpectedPlanOptions("KqpBlockReadOlapTableRanges") + .AddExpectedPlanOptions("WideFromBlocks") + .SetExpectedReply(R"([[[5];1u;5]])"); + + TestTableWithNulls({ testCase }, /* generic */ true); + } + + Y_UNIT_TEST(BlockGenericSelectAll) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + SELECT + id, resource_id, level + FROM `/Root/tableWithNulls` + WHERE level != 5 OR level IS NULL + ORDER BY id, resource_id, level; + )") + .AddExpectedPlanOptions("KqpBlockReadOlapTableRanges") + .AddExpectedPlanOptions("WideFromBlocks") + .SetExpectedReply(R"([[1;#;[1]];[2;#;[2]];[3;#;[3]];[4;#;[4]];[6;["6"];#];[7;["7"];#];[8;["8"];#];[9;["9"];#];[10;["10"];#]])"); + + TestTableWithNulls({ testCase }, /* generic */ true); + } +} + +} diff --git a/ydb/core/kqp/ut/olap/blobs_sharing_ut.cpp b/ydb/core/kqp/ut/olap/blobs_sharing_ut.cpp new file mode 100644 index 000000000000..caa39a4c35b5 --- /dev/null +++ b/ydb/core/kqp/ut/olap/blobs_sharing_ut.cpp @@ -0,0 +1,266 @@ +#include "helpers/typed_local.h" +#include <ydb/core/tx/columnshard/data_sharing/initiator/controller/abstract.h> +#include <ydb/core/tx/columnshard/hooks/testing/controller.h> +#include <ydb/core/tx/columnshard/common/snapshot.h> +#include <ydb/core/tx/columnshard/data_sharing/initiator/status/abstract.h> +#include <ydb/core/tx/columnshard/data_sharing/common/context/context.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/session/destination.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/events/control.h> +#include <ydb/core/base/tablet_pipecache.h> + +namespace NKikimr::NKqp { + +Y_UNIT_TEST_SUITE(KqpOlapBlobsSharing) { + + namespace { + class TTransferStatus { + private: + YDB_ACCESSOR(bool, Proposed, false); + YDB_ACCESSOR(bool, Confirmed, false); + YDB_ACCESSOR(bool, Finished, false); + public: + void Reset() { + Confirmed = false; + Proposed = false; + Finished = false; + } + }; + + static TMutex CSTransferStatusesMutex; + static std::shared_ptr<TTransferStatus> CSTransferStatus = std::make_shared<TTransferStatus>(); + } + + class TTestController: public NOlap::NDataSharing::IInitiatorController { + private: + static const inline auto Registrator = TFactory::TRegistrator<TTestController>("test"); + protected: + virtual void DoProposeError(const TString& sessionId, const TString& message) const override { + AFL_VERIFY(false)("session_id", sessionId)("message", message); + } + virtual void DoProposeSuccess(const TString& sessionId) const override { + CSTransferStatus->SetProposed(true); + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", "sharing_proposed")("session_id", sessionId); + } + virtual void DoConfirmSuccess(const TString& sessionId) const override { + CSTransferStatus->SetConfirmed(true); + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", "sharing_confirmed")("session_id", sessionId); + } + virtual void DoFinished(const TString& sessionId) const override { + CSTransferStatus->SetFinished(true); + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", "sharing_finished")("session_id", sessionId); + } + virtual void DoStatus(const NOlap::NDataSharing::TStatusContainer& status) const override { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", "status")("info", status.SerializeToProto().DebugString()); + } + virtual TConclusionStatus DoDeserializeFromProto(const NKikimrColumnShardDataSharingProto::TInitiator::TController& /*proto*/) override { + return TConclusionStatus::Success(); + } + virtual void DoSerializeToProto(NKikimrColumnShardDataSharingProto::TInitiator::TController& /*proto*/) const override { + + } + + virtual TString GetClassName() const override { + return "test"; + } + }; + + class TSharingDataTestCase { + private: + const ui32 ShardsCount; + TKikimrRunner& Kikimr; + TTypedLocalHelper Helper; + NYDBTest::TControllers::TGuard<NYDBTest::NColumnShard::TController> Controller; + std::vector<ui64> ShardIds; + std::vector<ui64> PathIds; + YDB_ACCESSOR(bool, RebootTablet, false); + public: + const TTypedLocalHelper& GetHelper() const { + return Helper; + } + + void AddRecords(const ui32 recordsCount, const double kff = 0) { + Helper.FillPKOnly(kff, recordsCount); + } + + TSharingDataTestCase(const ui32 shardsCount, TKikimrRunner& kikimr) + : ShardsCount(shardsCount) + , Kikimr(kikimr) + , Helper("", Kikimr, "olapTable", "olapStore12") + , Controller(NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>()) { + Controller->SetCompactionControl(NYDBTest::EOptimizerCompactionWeightControl::Disable); + Controller->SetExpectedShardsCount(ShardsCount); + Controller->SetPeriodicWakeupActivationPeriod(TDuration::Seconds(1)); + Controller->SetReadTimeoutClean(TDuration::Seconds(1)); + + Tests::NCommon::TLoggerInit(Kikimr).SetComponents({NKikimrServices::TX_COLUMNSHARD}, "CS").Initialize(); + + Helper.CreateTestOlapTable(ShardsCount, ShardsCount); + ShardIds = Controller->GetShardActualIds(); + AFL_VERIFY(ShardIds.size() == ShardsCount)("count", ShardIds.size())("ids", JoinSeq(",", ShardIds)); + std::set<ui64> pathIdsSet; + for (auto&& i : ShardIds) { + auto pathIds = Controller->GetPathIds(i); + pathIdsSet.insert(pathIds.begin(), pathIds.end()); + } + PathIds = std::vector<ui64>(pathIdsSet.begin(), pathIdsSet.end()); + AFL_VERIFY(PathIds.size() == 1)("count", PathIds.size())("ids", JoinSeq(",", PathIds)); + } + + void WaitNormalization() { + Controller->SetCompactionControl(NYDBTest::EOptimizerCompactionWeightControl::Force); + const auto start = TInstant::Now(); + while (!Controller->IsTrivialLinks() && TInstant::Now() - start < TDuration::Seconds(30)) { + Cerr << "WAIT_TRIVIAL_LINKS..." << Endl; + Sleep(TDuration::Seconds(1)); + } + AFL_VERIFY(Controller->IsTrivialLinks()); + Controller->CheckInvariants(); + } + + void Execute(const ui64 destinationIdx, const std::vector<ui64>& sourceIdxs, const bool move, const NOlap::TSnapshot& snapshot, const std::set<ui64>& pathIdxs) { + AFL_VERIFY(destinationIdx < ShardIds.size()); + const ui64 destination = ShardIds[destinationIdx]; + std::vector<ui64> sources; + for (auto&& i : sourceIdxs) { + AFL_VERIFY(i < ShardIds.size()); + sources.emplace_back(ShardIds[i]); + } + std::set<ui64> pathIds; + for (auto&& i : pathIdxs) { + AFL_VERIFY(i < PathIds.size()); + AFL_VERIFY(pathIds.emplace(PathIds[i]).second); + } + Cerr << "SHARING: " << JoinSeq(",", sources) << "->" << destination << Endl; + THashMap<ui64, ui64> pathIdsRemap; + for (auto&& i : pathIds) { + pathIdsRemap.emplace(i, i); + } + THashSet<NOlap::TTabletId> sourceTablets; + for (auto&& i : sources) { + AFL_VERIFY(sourceTablets.emplace((NOlap::TTabletId)i).second); + } + const TString sessionId = TGUID::CreateTimebased().AsUuidString(); + NOlap::NDataSharing::TTransferContext transferContext((NOlap::TTabletId)destination, sourceTablets, snapshot, move); + NOlap::NDataSharing::TDestinationSession session(std::make_shared<TTestController>(), pathIdsRemap, sessionId, transferContext); + Kikimr.GetTestServer().GetRuntime()->Send(MakePipePeNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward( + new NOlap::NDataSharing::NEvents::TEvProposeFromInitiator(session), destination, false)); + { + const TInstant start = TInstant::Now(); + while (!CSTransferStatus->GetProposed() && TInstant::Now() - start < TDuration::Seconds(10)) { + Sleep(TDuration::Seconds(1)); + Cerr << "WAIT_PROPOSING..." << Endl; + } + AFL_VERIFY(CSTransferStatus->GetProposed()); + } + if (RebootTablet) { + Kikimr.GetTestServer().GetRuntime()->Send(MakePipePeNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward( + new TEvents::TEvPoisonPill(), destination, false)); + } + { + const TInstant start = TInstant::Now(); + while (!CSTransferStatus->GetConfirmed() && TInstant::Now() - start < TDuration::Seconds(10)) { + Kikimr.GetTestServer().GetRuntime()->Send(MakePipePeNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward( + new NOlap::NDataSharing::NEvents::TEvConfirmFromInitiator(sessionId), destination, false)); + Sleep(TDuration::Seconds(1)); + Cerr << "WAIT_CONFIRMED..." << Endl; + } + AFL_VERIFY(CSTransferStatus->GetConfirmed()); + } + if (RebootTablet) { + Kikimr.GetTestServer().GetRuntime()->Send(MakePipePeNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward( + new TEvents::TEvPoisonPill(), destination, false)); + for (auto&& i : sources) { + Kikimr.GetTestServer().GetRuntime()->Send(MakePipePeNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward( + new TEvents::TEvPoisonPill(), i, false)); + } + } + { + const TInstant start = TInstant::Now(); + while (!CSTransferStatus->GetFinished() && TInstant::Now() - start < TDuration::Seconds(10)) { + Sleep(TDuration::Seconds(1)); + Cerr << "WAIT_FINISHED..." << Endl; + } + AFL_VERIFY(CSTransferStatus->GetFinished()); + } + CSTransferStatus->Reset(); + AFL_VERIFY(!Controller->IsTrivialLinks()); + } + }; + + Y_UNIT_TEST(BlobsSharingSplit1_1) { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + TSharingDataTestCase tester(4, kikimr); + tester.AddRecords(800000); + Sleep(TDuration::Seconds(1)); + tester.Execute(0, {1}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + } + + Y_UNIT_TEST(BlobsSharingSplit1_1_clean) { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + TSharingDataTestCase tester(2, kikimr); + tester.AddRecords(80000); + CompareYson(tester.GetHelper().GetQueryResult("SELECT COUNT(*) FROM `/Root/olapStore12/olapTable`"), R"([[80000u;]])"); + Sleep(TDuration::Seconds(1)); + tester.Execute(0, {1}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + CompareYson(tester.GetHelper().GetQueryResult("SELECT COUNT(*) FROM `/Root/olapStore12/olapTable`"), R"([[119928u;]])"); + tester.AddRecords(80000, 0.8); + tester.WaitNormalization(); + CompareYson(tester.GetHelper().GetQueryResult("SELECT COUNT(*) FROM `/Root/olapStore12/olapTable`"), R"([[183928u;]])"); + } + + Y_UNIT_TEST(BlobsSharingSplit1_1_clean_with_restarts) { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + TSharingDataTestCase tester(2, kikimr); + tester.SetRebootTablet(true); + tester.AddRecords(80000); + CompareYson(tester.GetHelper().GetQueryResult("SELECT COUNT(*) FROM `/Root/olapStore12/olapTable`"), R"([[80000u;]])"); + Sleep(TDuration::Seconds(1)); + tester.Execute(0, {1}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + CompareYson(tester.GetHelper().GetQueryResult("SELECT COUNT(*) FROM `/Root/olapStore12/olapTable`"), R"([[119928u;]])"); + tester.AddRecords(80000, 0.8); + tester.WaitNormalization(); + CompareYson(tester.GetHelper().GetQueryResult("SELECT COUNT(*) FROM `/Root/olapStore12/olapTable`"), R"([[183928u;]])"); + } + + Y_UNIT_TEST(BlobsSharingSplit3_1) { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + TSharingDataTestCase tester(4, kikimr); + tester.AddRecords(800000); + Sleep(TDuration::Seconds(1)); + tester.Execute(0, {1, 2, 3}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + } + + Y_UNIT_TEST(BlobsSharingSplit1_3_1) { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + TSharingDataTestCase tester(4, kikimr); + tester.AddRecords(800000); + Sleep(TDuration::Seconds(1)); + tester.Execute(1, {0}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + tester.Execute(2, {0}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + tester.Execute(3, {0}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + tester.Execute(0, {1, 2, 3}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + } + + Y_UNIT_TEST(BlobsSharingSplit1_3_2_1_clean) { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + TSharingDataTestCase tester(4, kikimr); + tester.AddRecords(800000); + Sleep(TDuration::Seconds(1)); + tester.Execute(1, {0}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + tester.Execute(2, {0}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + tester.Execute(3, {0}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + tester.AddRecords(800000, 0.9); + Sleep(TDuration::Seconds(1)); + tester.Execute(3, {2}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + tester.Execute(0, {1, 2}, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), {0}); + tester.WaitNormalization(); + } +} + +} diff --git a/ydb/core/kqp/ut/olap/clickbench_ut.cpp b/ydb/core/kqp/ut/olap/clickbench_ut.cpp new file mode 100644 index 000000000000..9aaff9a75c53 --- /dev/null +++ b/ydb/core/kqp/ut/olap/clickbench_ut.cpp @@ -0,0 +1,247 @@ +#include "helpers/aggregation.h" + +#include <ydb/core/kqp/compute_actor/kqp_compute_events.h> +#include <ydb/core/testlib/cs_helper.h> +#include <ydb/core/tx/datashard/datashard.h> +#include <ydb/core/tx/datashard/datashard_ut_common_kqp.h> + +namespace NKikimr::NKqp { + +Y_UNIT_TEST_SUITE(KqpOlapClickbench) { + + class TClickHelper : public Tests::NCS::TCickBenchHelper { + private: + using TBase = Tests::NCS::TCickBenchHelper; + public: + using TBase::TBase; + + TClickHelper(TKikimrRunner& runner) + : TBase(runner.GetTestServer()) + {} + + void CreateClickBenchTable(TString tableName = "benchTable", ui32 shardsCount = 4) { + TActorId sender = Server.GetRuntime()->AllocateEdgeActor(); + + TBase::CreateTestOlapTable(sender, "", Sprintf(R"( + Name: "%s" + ColumnShardCount: %d + Schema { + %s + } + Sharding { + HashSharding { + Function: HASH_FUNCTION_CONSISTENCY_64 + Columns: "EventTime" + } + })", tableName.c_str(), shardsCount, PROTO_SCHEMA)); + } + }; + + void WriteTestDataForClickBench(TKikimrRunner& kikimr, TString testTable, ui64 pathIdBegin, ui64 tsBegin, size_t rowCount) { + UNIT_ASSERT(testTable == "/Root/benchTable"); // TODO: check schema instead + TClickHelper lHelper(kikimr.GetTestServer()); + auto batch = lHelper.TestArrowBatch(pathIdBegin, tsBegin, rowCount); + lHelper.SendDataViaActorSystem(testTable, batch); + } + + void TestClickBenchBase(const std::vector<TAggregationTestCase>& cases, const bool genericQuery) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false) + .SetForceColumnTablesCompositeMarks(true); + TKikimrRunner kikimr(settings); + + TClickHelper(kikimr).CreateClickBenchTable(); + auto tableClient = kikimr.GetTableClient(); + + + ui32 numIterations = 10; + const ui32 iterationPackSize = NSan::PlainOrUnderSanitizer(2000, 20); + for (ui64 i = 0; i < numIterations; ++i) { + WriteTestDataForClickBench(kikimr, "/Root/benchTable", 0, 1000000 + i * 1000000, iterationPackSize); + } + + if (!genericQuery) { + auto tableClient = kikimr.GetTableClient(); + for (auto&& i : cases) { + const TString queryFixed = i.GetFixedQuery(); + RunTestCaseWithClient(i, tableClient); + CheckPlanForAggregatePushdown(queryFixed, tableClient, i.GetExpectedPlanOptions(), i.GetExpectedReadNodeType()); + } + } else { + auto queryClient = kikimr.GetQueryClient(); + for (auto&& i : cases) { + const TString queryFixed = i.GetFixedQuery(); + RunTestCaseWithClient(i, queryClient); + CheckPlanForAggregatePushdown(queryFixed, queryClient, i.GetExpectedPlanOptions(), i.GetExpectedReadNodeType()); + } + } + } + + void TestClickBenchInternal(const std::vector<TAggregationTestCase>& cases) { + TPortManager tp; + ui16 mbusport = tp.GetPort(2134); + auto settings = Tests::TServerSettings(mbusport) + .SetDomainName("Root") + .SetUseRealThreads(false) + .SetNodeCount(2); + + Tests::TServer::TPtr server = new Tests::TServer(settings); + + auto runtime = server->GetRuntime(); + auto sender = runtime->AllocateEdgeActor(); + + InitRoot(server, sender); + + TClickHelper(*server).CreateClickBenchTable(); + + // write data + + ui32 numIterations = 10; + const ui32 iterationPackSize = NSan::PlainOrUnderSanitizer(2000, 20); + for (ui64 i = 0; i < numIterations; ++i) { + TClickHelper(*server).SendDataViaActorSystem("/Root/benchTable", 0, 1000000 + i * 1000000, + iterationPackSize); + } + + TAggregationTestCase currentTest; + auto captureEvents = [&](TAutoPtr<IEventHandle>& ev) -> auto { + switch (ev->GetTypeRewrite()) { + case NKqp::TKqpComputeEvents::EvScanData: + { + auto* msg = ev->Get<NKqp::TEvKqpCompute::TEvScanData>(); + Y_ABORT_UNLESS(currentTest.MutableLimitChecker().CheckExpectedLimitOnScanData(msg->ArrowBatch ? msg->ArrowBatch->num_rows() : 0)); + Y_ABORT_UNLESS(currentTest.MutableRecordChecker().CheckExpectedOnScanData(msg->ArrowBatch ? msg->ArrowBatch->num_columns() : 0)); + break; + } + case TEvDataShard::EvKqpScan: + { + auto* msg = ev->Get<TEvDataShard::TEvKqpScan>(); + Y_ABORT_UNLESS(currentTest.MutableLimitChecker().CheckExpectedLimitOnScanTask(msg->Record.GetItemsLimit())); + break; + } + } + return TTestActorRuntime::EEventAction::PROCESS; + }; + runtime->SetObserverFunc(captureEvents); + + // selects + + for (auto&& i : cases) { + const TString queryFixed = i.GetFixedQuery(); + currentTest = i; + auto streamSender = runtime->AllocateEdgeActor(); + NDataShard::NKqpHelpers::SendRequest(*runtime, streamSender, NDataShard::NKqpHelpers::MakeStreamRequest(streamSender, queryFixed, false)); + auto ev = runtime->GrabEdgeEventRethrow<NKqp::TEvKqpCompute::TEvScanData>(streamSender, TDuration::Seconds(10)); + Y_ABORT_UNLESS(currentTest.CheckFinished()); + } + } + + void TestClickBench(const std::vector<TAggregationTestCase>& cases, const bool genericQuery = false) { + TestClickBenchBase(cases, genericQuery); + if (!genericQuery) { + TestClickBenchInternal(cases); + } + } + + Y_UNIT_TEST(ClickBenchSmoke) { + TAggregationTestCase q7; + q7.SetQuery(R"( + SELECT + AdvEngineID, COUNT(*) as c + FROM `/Root/benchTable` + WHERE AdvEngineID != 0 + GROUP BY AdvEngineID + ORDER BY c DESC + )") + //.SetExpectedReply("[[[\"40999\"];[4];1u];[[\"40998\"];[3];1u];[[\"40997\"];[2];1u]]") + // Should be fixed in https://st.yandex-team.ru/KIKIMR-17009 + // .SetExpectedReadNodeType("TableFullScan"); + .SetExpectedReadNodeType("Aggregate-TableFullScan"); + q7.FillExpectedAggregationGroupByPlanOptions(); + + TAggregationTestCase q9; + q9.SetQuery(R"( + SELECT + RegionID, SUM(AdvEngineID), COUNT(*) AS c, avg(ResolutionWidth), COUNT(DISTINCT UserID) + FROM `/Root/benchTable` + GROUP BY RegionID + ORDER BY c DESC + LIMIT 10 + )") + //.SetExpectedReply("[[[\"40999\"];[4];1u];[[\"40998\"];[3];1u];[[\"40997\"];[2];1u]]") + // Should be fixed in https://st.yandex-team.ru/KIKIMR-17009 + // .SetExpectedReadNodeType("TableFullScan"); + .SetExpectedReadNodeType("Aggregate-TableFullScan"); + q9.FillExpectedAggregationGroupByPlanOptions(); + + TAggregationTestCase q12; + q12.SetQuery(R"( + SELECT + SearchPhrase, count(*) AS c + FROM `/Root/benchTable` + WHERE SearchPhrase != '' + GROUP BY SearchPhrase + ORDER BY c DESC + LIMIT 10; + )") + //.SetExpectedReply("[[[\"40999\"];[4];1u];[[\"40998\"];[3];1u];[[\"40997\"];[2];1u]]") + // Should be fixed in https://st.yandex-team.ru/KIKIMR-17009 + // .SetExpectedReadNodeType("TableFullScan"); + .SetExpectedReadNodeType("Aggregate-TableFullScan"); + q12.FillExpectedAggregationGroupByPlanOptions(); + + TAggregationTestCase q14; + q14.SetQuery(R"( + SELECT + SearchEngineID, SearchPhrase, count(*) AS c + FROM `/Root/benchTable` + WHERE SearchPhrase != '' + GROUP BY SearchEngineID, SearchPhrase + ORDER BY c DESC + LIMIT 10; + )") + //.SetExpectedReply("[[[\"40999\"];[4];1u];[[\"40998\"];[3];1u];[[\"40997\"];[2];1u]]") + // Should be fixed in https://st.yandex-team.ru/KIKIMR-17009 + // .SetExpectedReadNodeType("TableFullScan"); + .SetExpectedReadNodeType("Aggregate-TableFullScan"); + q14.FillExpectedAggregationGroupByPlanOptions(); + + TAggregationTestCase q22; + q22.SetQuery(R"( + SELECT + SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) + FROM `/Root/benchTable` + WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' + GROUP BY SearchPhrase + ORDER BY c DESC + LIMIT 10; + )") + .AddExpectedPlanOptions("KqpOlapFilter") + .SetExpectedReadNodeType("Aggregate-TableFullScan"); + q22.FillExpectedAggregationGroupByPlanOptions(); + + TAggregationTestCase q39; + q39.SetQuery(R"( + SELECT TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst, COUNT(*) AS PageViews + FROM `/Root/benchTable` + WHERE CounterID = 62 AND EventDate >= Date('2013-07-01') AND EventDate <= Date('2013-07-31') AND IsRefresh == 0 + GROUP BY + TraficSourceID, SearchEngineID, AdvEngineID, IF (SearchEngineID = 0 AND AdvEngineID = 0, Referer, '') AS Src, + URL AS Dst + ORDER BY PageViews DESC + LIMIT 10; + )") + .AddExpectedPlanOptions("KqpOlapFilter") + .SetExpectedReadNodeType("Aggregate-Filter-TableFullScan"); + q39.FillExpectedAggregationGroupByPlanOptions(); + + std::vector<TAggregationTestCase> cases = {q7, q9, q12, q14, q22, q39}; + for (auto&& c : cases) { + c.SetUseLlvm(NSan::PlainOrUnderSanitizer(true, false)); + } + + TestClickBench(cases); + } +} + +} diff --git a/ydb/core/kqp/ut/olap/helpers/aggregation.cpp b/ydb/core/kqp/ut/olap/helpers/aggregation.cpp new file mode 100644 index 000000000000..caee27934f5f --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/aggregation.cpp @@ -0,0 +1,140 @@ +#include "aggregation.h" +#include <ydb/core/kqp/common/simple/kqp_event_ids.h> +#include <ydb/core/kqp/compute_actor/kqp_compute_events.h> +#include <ydb/core/tx/datashard/datashard.h> +#include <ydb/core/tx/datashard/datashard_ut_common_kqp.h> + +namespace NKikimr::NKqp { + +void TestAggregationsBase(const std::vector<TAggregationTestCase>& cases) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false) + .SetForceColumnTablesCompositeMarks(true); + TKikimrRunner kikimr(settings); + + TLocalHelper(kikimr).CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); + } + + for (auto&& i : cases) { + const TString queryFixed = i.GetFixedQuery(); + { + auto it = tableClient.StreamExecuteScanQuery(queryFixed).GetValueSync(); + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + if (!i.GetExpectedReply().empty()) { + CompareYson(result, i.GetExpectedReply()); + } + } + CheckPlanForAggregatePushdown(queryFixed, tableClient, i.GetExpectedPlanOptions(), i.GetExpectedReadNodeType()); + } +} + +void TestAggregationsInternal(const std::vector<TAggregationTestCase>& cases) { + TPortManager tp; + ui16 mbusport = tp.GetPort(2134); + auto settings = Tests::TServerSettings(mbusport) + .SetDomainName("Root") + .SetUseRealThreads(false) + .SetNodeCount(2); + + Tests::TServer::TPtr server = new Tests::TServer(settings); + + auto runtime = server->GetRuntime(); + auto sender = runtime->AllocateEdgeActor(); + + InitRoot(server, sender); + Tests::NCommon::TLoggerInit(runtime).Initialize(); + + ui32 numShards = 1; + ui32 numIterations = 10; + TLocalHelper(*server).CreateTestOlapTable("olapTable", "olapStore", numShards, numShards); + const ui32 iterationPackSize = 2000; + for (ui64 i = 0; i < numIterations; ++i) { + TLocalHelper(*server).SendDataViaActorSystem("/Root/olapStore/olapTable", 0, 1000000 + i * 1000000, iterationPackSize); + } + + TAggregationTestCase currentTest; + auto captureEvents = [&](TAutoPtr<IEventHandle>& ev) -> auto { + switch (ev->GetTypeRewrite()) { + case NKqp::TKqpComputeEvents::EvScanData: + { + auto* msg = ev->Get<NKqp::TEvKqpCompute::TEvScanData>(); + Y_ABORT_UNLESS(currentTest.MutableLimitChecker().CheckExpectedLimitOnScanData(msg->ArrowBatch ? msg->ArrowBatch->num_rows() : 0)); + Y_ABORT_UNLESS(currentTest.MutableRecordChecker().CheckExpectedOnScanData(msg->ArrowBatch ? msg->ArrowBatch->num_columns() : 0)); + break; + } + case TEvDataShard::EvKqpScan: + { + auto* msg = ev->Get<TEvDataShard::TEvKqpScan>(); + Y_ABORT_UNLESS(currentTest.MutableLimitChecker().CheckExpectedLimitOnScanTask(msg->Record.GetItemsLimit())); + break; + } + } + return TTestActorRuntime::EEventAction::PROCESS; + }; + runtime->SetObserverFunc(captureEvents); + + for (auto&& i : cases) { + const TString queryFixed = i.GetFixedQuery(); + currentTest = i; + auto streamSender = runtime->AllocateEdgeActor(); + NDataShard::NKqpHelpers::SendRequest(*runtime, streamSender, NDataShard::NKqpHelpers::MakeStreamRequest(streamSender, queryFixed, false)); + auto ev = runtime->GrabEdgeEventRethrow<NKqp::TEvKqpCompute::TEvScanData>(streamSender, TDuration::Seconds(10)); + Y_ABORT_UNLESS(currentTest.CheckFinished()); + } +} + +void WriteTestDataForTableWithNulls(TKikimrRunner& kikimr, TString testTable) { + UNIT_ASSERT(testTable == "/Root/tableWithNulls"); // TODO: check schema instead + Tests::NCS::TTableWithNullsHelper lHelper(kikimr.GetTestServer()); + auto batch = lHelper.TestArrowBatch(); + lHelper.SendDataViaActorSystem(testTable, batch); +} + +void TestTableWithNulls(const std::vector<TAggregationTestCase>& cases, const bool genericQuery /*= false*/) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false) + .SetForceColumnTablesCompositeMarks(true); + TKikimrRunner kikimr(settings); + + Tests::NCommon::TLoggerInit(kikimr).Initialize(); + TTableWithNullsHelper(kikimr).CreateTableWithNulls(); + auto tableClient = kikimr.GetTableClient(); + + { + WriteTestDataForTableWithNulls(kikimr, "/Root/tableWithNulls"); + } + + if (!genericQuery) { + auto tableClient = kikimr.GetTableClient(); + for (auto&& i : cases) { + RunTestCaseWithClient(i, tableClient); + CheckPlanForAggregatePushdown(i.GetFixedQuery(), tableClient, + i.GetExpectedPlanOptions(), i.GetExpectedReadNodeType()); + } + } else { + auto queryClient = kikimr.GetQueryClient(); + for (auto&& i : cases) { + RunTestCaseWithClient(i, queryClient); + CheckPlanForAggregatePushdown(i.GetFixedQuery(), queryClient, + i.GetExpectedPlanOptions(), i.GetExpectedReadNodeType()); + } + } +} + +void TestAggregations(const std::vector<TAggregationTestCase>& cases) { + TestAggregationsBase(cases); + TestAggregationsInternal(cases); +} + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/aggregation.h b/ydb/core/kqp/ut/olap/helpers/aggregation.h new file mode 100644 index 000000000000..e83dcb32fd87 --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/aggregation.h @@ -0,0 +1,245 @@ +#pragma once +#include "writer.h" +#include "local.h" + +namespace NKikimr::NKqp { + +class TExpectedLimitChecker { +private: + std::optional<ui32> ExpectedLimit; + std::optional<ui32> ExpectedResultCount; + ui32 CheckScanData = 0; + ui32 CheckScanTask = 0; +public: + TExpectedLimitChecker& SetExpectedLimit(const ui32 value) { + ExpectedLimit = value; + ExpectedResultCount = value; + return *this; + } + TExpectedLimitChecker& SetExpectedResultCount(const ui32 value) { + ExpectedResultCount = value; + return *this; + } + bool CheckExpectedLimitOnScanData(const ui32 resultCount) { + if (!ExpectedResultCount) { + return true; + } + ++CheckScanData; + UNIT_ASSERT_LE(resultCount, *ExpectedResultCount); + return true; + } + bool CheckExpectedLimitOnScanTask(const ui32 taskLimit) { + if (!ExpectedLimit) { + return true; + } + ++CheckScanTask; + UNIT_ASSERT_EQUAL(taskLimit, *ExpectedLimit); + return true; + } + bool CheckFinish() const { + if (!ExpectedLimit) { + return true; + } + return CheckScanData && CheckScanTask; + } +}; + +class TExpectedRecordChecker { +private: + std::optional<ui32> ExpectedColumnsCount; + ui32 CheckScanData = 0; +public: + TExpectedRecordChecker& SetExpectedColumnsCount(const ui32 value) { + ExpectedColumnsCount = value; + return *this; + } + bool CheckExpectedOnScanData(const ui32 columnsCount) { + if (!ExpectedColumnsCount) { + return true; + } + ++CheckScanData; + UNIT_ASSERT_EQUAL(columnsCount, *ExpectedColumnsCount); + return true; + } + bool CheckFinish() const { + if (!ExpectedColumnsCount) { + return true; + } + return CheckScanData; + } +}; + +class TAggregationTestCase { +private: + TString Query; + TString ExpectedReply; + std::vector<std::string> ExpectedPlanOptions; + bool Pushdown = true; + std::string ExpectedReadNodeType; + TExpectedLimitChecker LimitChecker; + TExpectedRecordChecker RecordChecker; + bool UseLlvm = true; +public: + void FillExpectedAggregationGroupByPlanOptions() { +#if SSA_RUNTIME_VERSION >= 2U + // AddExpectedPlanOptions("TKqpOlapAgg"); + AddExpectedPlanOptions("WideCombiner"); +#else + AddExpectedPlanOptions("CombineCore"); +#endif + } + TString GetFixedQuery() const { + TStringBuilder queryFixed; + queryFixed << "--!syntax_v1" << Endl; + if (!Pushdown) { + queryFixed << "PRAGMA Kikimr.OptEnableOlapPushdown = \"false\";" << Endl; + } + if (!UseLlvm) { + queryFixed << "PRAGMA Kikimr.UseLlvm = \"false\";" << Endl; + } + queryFixed << "PRAGMA Kikimr.OptUseFinalizeByKey;" << Endl; + + queryFixed << Query << Endl; + Cerr << "REQUEST:\n" << queryFixed << Endl; + return queryFixed; + } + TAggregationTestCase() = default; + TExpectedLimitChecker& MutableLimitChecker() { + return LimitChecker; + } + TExpectedRecordChecker& MutableRecordChecker() { + return RecordChecker; + } + bool GetPushdown() const { + return Pushdown; + } + TAggregationTestCase& SetPushdown(const bool value = true) { + Pushdown = value; + return *this; + } + bool CheckFinished() const { + return LimitChecker.CheckFinish(); + } + + const TString& GetQuery() const { + return Query; + } + TAggregationTestCase& SetQuery(const TString& value) { + Query = value; + return *this; + } + TAggregationTestCase& SetUseLlvm(const bool value) { + UseLlvm = value; + return *this; + } + const TString& GetExpectedReply() const { + return ExpectedReply; + } + TAggregationTestCase& SetExpectedReply(const TString& value) { + ExpectedReply = value; + return *this; + } + + TAggregationTestCase& AddExpectedPlanOptions(const std::string& value) { + ExpectedPlanOptions.emplace_back(value); + return *this; + } + + const std::vector<std::string>& GetExpectedPlanOptions() const { + return ExpectedPlanOptions; + } + + TAggregationTestCase& SetExpectedReadNodeType(const std::string& value) { + ExpectedReadNodeType = value; + return *this; + } + + const std::string& GetExpectedReadNodeType() const { + return ExpectedReadNodeType; + } +}; + +template <typename TClient> +auto StreamExplainQuery(const TString& query, TClient& client) { + if constexpr (std::is_same_v<NYdb::NTable::TTableClient, TClient>) { + NYdb::NTable::TStreamExecScanQuerySettings scanSettings; + scanSettings.Explain(true); + return client.StreamExecuteScanQuery(query, scanSettings).GetValueSync(); + } else { + NYdb::NQuery::TExecuteQuerySettings scanSettings; + scanSettings.ExecMode(NYdb::NQuery::EExecMode::Explain); + return client.StreamExecuteQuery(query, NYdb::NQuery::TTxControl::BeginTx().CommitTx(), scanSettings).GetValueSync(); + } +} + +template <typename TClient> +void CheckPlanForAggregatePushdown( + const TString& query, + TClient& client, + const std::vector<std::string>& expectedPlanNodes, + const std::string& readNodeType) { + auto res = StreamExplainQuery(query, client); + UNIT_ASSERT_C(res.IsSuccess(), res.GetIssues().ToString()); + + auto planRes = CollectStreamResult(res); + auto ast = planRes.QueryStats->Getquery_ast(); + Cerr << "JSON Plan:" << Endl; + Cerr << planRes.PlanJson.GetOrElse("NO_PLAN") << Endl; + Cerr << "AST:" << Endl; + Cerr << ast << Endl; + for (auto planNode : expectedPlanNodes) { + UNIT_ASSERT_C(ast.find(planNode) != std::string::npos, + TStringBuilder() << planNode << " was not found. Query: " << query); + } + UNIT_ASSERT_C(ast.find("SqueezeToDict") == std::string::npos, TStringBuilder() << "SqueezeToDict denied for aggregation requests. Query: " << query); + + if (!readNodeType.empty()) { + NJson::TJsonValue planJson; + NJson::ReadJsonTree(*planRes.PlanJson, &planJson, true); + auto readNode = FindPlanNodeByKv(planJson, "Node Type", readNodeType.c_str()); + UNIT_ASSERT(readNode.IsDefined()); + + auto& operators = readNode.GetMapSafe().at("Operators").GetArraySafe(); + for (auto& op : operators) { + if (op.GetMapSafe().at("Name") == "TableFullScan") { + auto ssaProgram = op.GetMapSafe().at("SsaProgram"); + UNIT_ASSERT(ssaProgram.IsDefined()); + UNIT_ASSERT(FindPlanNodes(ssaProgram, "Projection").size()); + break; + } + } + } +} + +void TestAggregationsBase(const std::vector<TAggregationTestCase>& cases); + +void TestAggregationsInternal(const std::vector<TAggregationTestCase>& cases); + +void TestAggregations(const std::vector<TAggregationTestCase>& cases); + +template <typename TClient> +auto StreamExecuteQuery(const TAggregationTestCase& testCase, TClient& client) { + if constexpr (std::is_same_v<NYdb::NTable::TTableClient, TClient>) { + return client.StreamExecuteScanQuery(testCase.GetFixedQuery()).GetValueSync(); + } else { + return client.StreamExecuteQuery( + testCase.GetFixedQuery(), + NYdb::NQuery::TTxControl::BeginTx().CommitTx()).GetValueSync(); + } +} + +template <typename TClient> +void RunTestCaseWithClient(const TAggregationTestCase& testCase, TClient& client) { + auto it = StreamExecuteQuery(testCase, client); + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + if (!testCase.GetExpectedReply().empty()) { + CompareYson(result, testCase.GetExpectedReply()); + } +} + +void WriteTestDataForTableWithNulls(TKikimrRunner& kikimr, TString testTable); + +void TestTableWithNulls(const std::vector<TAggregationTestCase>& cases, const bool genericQuery = false); + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/get_value.cpp b/ydb/core/kqp/ut/olap/helpers/get_value.cpp new file mode 100644 index 000000000000..208e5e40e02e --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/get_value.cpp @@ -0,0 +1,112 @@ +#include "get_value.h" +#include <library/cpp/testing/unittest/registar.h> + +namespace NKikimr::NKqp { + +void PrintValue(IOutputStream& out, const NYdb::TValue& v) { + NYdb::TValueParser value(v); + + while (value.GetKind() == NYdb::TTypeParser::ETypeKind::Optional) { + if (value.IsNull()) { + out << "<NULL>"; + return; + } else { + value.OpenOptional(); + } + } + + if (value.IsNull()) { + out << "<NULL>"; + return; + } + + switch (value.GetPrimitiveType()) { + case NYdb::EPrimitiveType::Uint32: + { + out << value.GetUint32(); + break; + } + case NYdb::EPrimitiveType::Uint64: + { + out << value.GetUint64(); + break; + } + case NYdb::EPrimitiveType::Int64: + { + out << value.GetInt64(); + break; + } + case NYdb::EPrimitiveType::Utf8: + { + out << value.GetUtf8(); + break; + } + case NYdb::EPrimitiveType::Timestamp: + { + out << value.GetTimestamp(); + break; + } + case NYdb::EPrimitiveType::Bool: + { + out << value.GetBool(); + break; + } + default: + { + UNIT_ASSERT_C(false, "PrintValue not iplemented for this type"); + } + } +} + +ui64 GetUint32(const NYdb::TValue& v) { + NYdb::TValueParser value(v); + if (value.GetKind() == NYdb::TTypeParser::ETypeKind::Optional) { + return *value.GetOptionalUint32(); + } else { + return value.GetUint32(); + } +} + +ui64 GetUint64(const NYdb::TValue& v) { + NYdb::TValueParser value(v); + if (value.GetKind() == NYdb::TTypeParser::ETypeKind::Optional) { + return *value.GetOptionalUint64(); + } else { + return value.GetUint64(); + } +} + +TString GetUtf8(const NYdb::TValue& v) { + NYdb::TValueParser value(v); + if (value.GetKind() == NYdb::TTypeParser::ETypeKind::Optional) { + return *value.GetOptionalUtf8(); + } else { + return value.GetUtf8(); + } +} + +TInstant GetTimestamp(const NYdb::TValue& v) { + NYdb::TValueParser value(v); + if (value.GetKind() == NYdb::TTypeParser::ETypeKind::Optional) { + return *value.GetOptionalTimestamp(); + } else { + return value.GetTimestamp(); + } +} + +void PrintRow(IOutputStream& out, const THashMap<TString, NYdb::TValue>& fields) { + for (const auto& f : fields) { + out << f.first << ": "; + PrintValue(out, f.second); + out << " "; + } +} + +void PrintRows(IOutputStream& out, const TVector<THashMap<TString, NYdb::TValue>>& rows) { + for (const auto& r : rows) { + PrintRow(out, r); + out << "\n"; + } +} + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/get_value.h b/ydb/core/kqp/ut/olap/helpers/get_value.h new file mode 100644 index 000000000000..7902b816caef --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/get_value.h @@ -0,0 +1,15 @@ +#pragma once +#include <ydb/public/sdk/cpp/client/ydb_value/value.h> + +namespace NKikimr::NKqp { + +void PrintValue(IOutputStream& out, const NYdb::TValue& v); +void PrintRow(IOutputStream& out, const THashMap<TString, NYdb::TValue>& fields); +void PrintRows(IOutputStream& out, const TVector<THashMap<TString, NYdb::TValue>>& rows); + +ui64 GetUint32(const NYdb::TValue& v); +ui64 GetUint64(const NYdb::TValue& v); +TString GetUtf8(const NYdb::TValue& v); +TInstant GetTimestamp(const NYdb::TValue& v); + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/local.cpp b/ydb/core/kqp/ut/olap/helpers/local.cpp new file mode 100644 index 000000000000..373b62027e62 --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/local.cpp @@ -0,0 +1,22 @@ +#include "local.h" + +namespace NKikimr::NKqp { + +void TTableWithNullsHelper::CreateTableWithNulls(TString tableName /*= "tableWithNulls"*/, ui32 shardsCount /*= 4*/) { + TActorId sender = Server.GetRuntime()->AllocateEdgeActor(); + + TBase::CreateTestOlapTable(sender, "", Sprintf(R"( + Name: "%s" + ColumnShardCount: %d + Schema { + %s + } + Sharding { + HashSharding { + Function: HASH_FUNCTION_CONSISTENCY_64 + Columns: "id" + } + })", tableName.c_str(), shardsCount, PROTO_SCHEMA)); +} + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/local.h b/ydb/core/kqp/ut/olap/helpers/local.h new file mode 100644 index 000000000000..dc957f98220e --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/local.h @@ -0,0 +1,41 @@ +#pragma once +#include <ydb/core/testlib/cs_helper.h> +#include <ydb/core/kqp/ut/common/kqp_ut_common.h> + +namespace NKikimr::NKqp { + +class TTableWithNullsHelper: public Tests::NCS::TTableWithNullsHelper { +private: + using TBase = Tests::NCS::TTableWithNullsHelper; +public: + using TBase::TBase; + + TTableWithNullsHelper(TKikimrRunner& runner) + : TBase(runner.GetTestServer()) { + } + + void CreateTableWithNulls(TString tableName = "tableWithNulls", ui32 shardsCount = 4); +}; + +class TLocalHelper: public Tests::NCS::THelper { +private: + using TBase = Tests::NCS::THelper; +public: + TLocalHelper& SetShardingMethod(const TString& value) { + TBase::SetShardingMethod(value); + return *this; + } + + void CreateTestOlapTable(TString tableName = "olapTable", TString storeName = "olapStore", + ui32 storeShardsCount = 4, ui32 tableShardsCount = 3) { + CreateOlapTableWithStore(tableName, storeName, storeShardsCount, tableShardsCount); + } + using TBase::TBase; + + TLocalHelper(TKikimrRunner& runner) + : TBase(runner.GetTestServer()) { + + } +}; + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/query_executor.cpp b/ydb/core/kqp/ut/olap/helpers/query_executor.cpp new file mode 100644 index 000000000000..11ef90591b5e --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/query_executor.cpp @@ -0,0 +1,73 @@ +#include "query_executor.h" +#include "get_value.h" +#include <library/cpp/testing/unittest/registar.h> +#include <ydb/public/sdk/cpp/client/ydb_table/table.h> + +namespace NKikimr::NKqp { + +TVector<THashMap<TString, NYdb::TValue>> CollectRows(NYdb::NTable::TScanQueryPartIterator& it, NJson::TJsonValue* statInfo /*= nullptr*/, NJson::TJsonValue* diagnostics /*= nullptr*/) { + TVector<THashMap<TString, NYdb::TValue>> rows; + if (statInfo) { + *statInfo = NJson::JSON_NULL; + } + if (diagnostics) { + *diagnostics = NJson::JSON_NULL; + } + for (;;) { + auto streamPart = it.ReadNext().GetValueSync(); + if (!streamPart.IsSuccess()) { + UNIT_ASSERT_C(streamPart.EOS(), streamPart.GetIssues().ToString()); + break; + } + + UNIT_ASSERT_C(streamPart.HasResultSet() || streamPart.HasQueryStats(), + "Unexpected empty scan query response."); + + if (streamPart.HasQueryStats()) { + auto plan = streamPart.GetQueryStats().GetPlan(); + if (plan && statInfo) { + UNIT_ASSERT(NJson::ReadJsonFastTree(*plan, statInfo)); + } + } + + if (streamPart.HasDiagnostics()) { + TString diagnosticsString = streamPart.GetDiagnostics(); + if (!diagnosticsString.empty() && diagnostics) { + UNIT_ASSERT(NJson::ReadJsonFastTree(diagnosticsString, diagnostics)); + } + } + + if (streamPart.HasResultSet()) { + auto resultSet = streamPart.ExtractResultSet(); + NYdb::TResultSetParser rsParser(resultSet); + while (rsParser.TryNextRow()) { + THashMap<TString, NYdb::TValue> row; + for (size_t ci = 0; ci < resultSet.ColumnsCount(); ++ci) { + row.emplace(resultSet.GetColumnsMeta()[ci].Name, rsParser.GetValue(ci)); + } + rows.emplace_back(std::move(row)); + } + } + } + return rows; +} + +TVector<THashMap<TString, NYdb::TValue>> ExecuteScanQuery(NYdb::NTable::TTableClient& tableClient, const TString& query, const bool verbose /*= true*/) { + if (verbose) { + Cerr << "====================================\n" + << "QUERY:\n" << query + << "\n\nRESULT:\n"; + } + + NYdb::NTable::TStreamExecScanQuerySettings scanSettings; + auto it = tableClient.StreamExecuteScanQuery(query, scanSettings).GetValueSync(); + auto rows = CollectRows(it); + if (verbose) { + PrintRows(Cerr, rows); + Cerr << "\n"; + } + + return rows; +} + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/query_executor.h b/ydb/core/kqp/ut/olap/helpers/query_executor.h new file mode 100644 index 000000000000..18dad7f72f34 --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/query_executor.h @@ -0,0 +1,12 @@ +#pragma once +#include <ydb/core/testlib/cs_helper.h> +#include <ydb/public/sdk/cpp/client/ydb_value/value.h> +#include <ydb/public/sdk/cpp/client/ydb_table/table.h> +#include <library/cpp/json/writer/json_value.h> + +namespace NKikimr::NKqp { + +TVector<THashMap<TString, NYdb::TValue>> CollectRows(NYdb::NTable::TScanQueryPartIterator& it, NJson::TJsonValue* statInfo = nullptr, NJson::TJsonValue* diagnostics = nullptr); +TVector<THashMap<TString, NYdb::TValue>> ExecuteScanQuery(NYdb::NTable::TTableClient& tableClient, const TString& query, const bool verbose = true); + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/typed_local.cpp b/ydb/core/kqp/ut/olap/helpers/typed_local.cpp new file mode 100644 index 000000000000..e592ed398d2b --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/typed_local.cpp @@ -0,0 +1,161 @@ +#include "typed_local.h" +#include "query_executor.h" +#include "get_value.h" + +namespace NKikimr::NKqp { + +TString TTypedLocalHelper::GetTestTableSchema() const { + TString result; + if (TypeName) { + result = R"(Columns { Name: "field" Type: ")" + TypeName + "\"}"; + } + result += R"( + Columns { Name: "pk_int" Type: "Int64" NotNull: true } + Columns { Name: "ts" Type: "Timestamp" } + KeyColumnNames: "pk_int" + Engine: COLUMN_ENGINE_REPLACING_TIMESERIES + )"; + return result; +} + +void TTypedLocalHelper::ExecuteSchemeQuery(const TString& alterQuery, const NYdb::EStatus expectedStatus /*= EStatus::SUCCESS*/) const { + auto session = KikimrRunner.GetTableClient().CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), expectedStatus, alterResult.GetIssues().ToString()); +} + +TString TTypedLocalHelper::GetQueryResult(const TString& request) const { + auto db = KikimrRunner.GetQueryClient(); + auto result = db.ExecuteQuery(request, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), NYdb::EStatus::SUCCESS, result.GetIssues().ToString()); + const TString output = FormatResultSetYson(result.GetResultSet(0)); + Cout << output << Endl; + return output; +} + +void TTypedLocalHelper::PrintCount() { + const TString selectQuery = "SELECT COUNT(*), MAX(pk_int), MIN(pk_int) FROM `" + TablePath + "`"; + + auto tableClient = KikimrRunner.GetTableClient(); + auto rows = ExecuteScanQuery(tableClient, selectQuery); + for (auto&& r : rows) { + for (auto&& c : r) { + Cerr << c.first << ":" << Endl << c.second.GetProto().DebugString() << Endl; + } + } +} + +NKikimr::NKqp::TTypedLocalHelper::TDistribution TTypedLocalHelper::GetDistribution(const bool verbose /*= false*/) { + const TString selectQuery = "PRAGMA Kikimr.OptUseFinalizeByKey='true';SELECT COUNT(*) as c, field FROM `" + TablePath + "` GROUP BY field ORDER BY field"; + + auto tableClient = KikimrRunner.GetTableClient(); + auto rows = ExecuteScanQuery(tableClient, selectQuery, verbose); + ui32 count = 0; + std::optional<ui32> minCount; + std::optional<ui32> maxCount; + std::set<TString> groups; + for (auto&& r : rows) { + for (auto&& c : r) { + if (c.first == "c") { + const ui64 v = GetUint64(c.second); + count += v; + if (!minCount || *minCount > v) { + minCount = v; + } + if (!maxCount || *maxCount < v) { + maxCount = v; + } + } else if (c.first == "field") { + Y_ABORT_UNLESS(groups.emplace(c.second.GetProto().DebugString()).second); + } + if (verbose) { + Cerr << c.first << ":" << Endl << c.second.GetProto().DebugString() << Endl; + } + } + } + Y_ABORT_UNLESS(maxCount); + Y_ABORT_UNLESS(minCount); + return TDistribution(count, *minCount, *maxCount, groups.size()); +} + +void TTypedLocalHelper::GetVolumes(ui64& rawBytes, ui64& bytes, const bool verbose /*= false*/, const std::vector<TString> columnNames /*= {}*/) { + TString selectQuery = "SELECT * FROM `" + TablePath + "/.sys/primary_index_stats` WHERE Activity = true"; + if (columnNames.size()) { + selectQuery += " AND EntityName IN ('" + JoinSeq("','", columnNames) + "')"; + } + + auto tableClient = KikimrRunner.GetTableClient(); + + std::optional<ui64> rawBytesPred; + std::optional<ui64> bytesPred; + while (true) { + auto rows = ExecuteScanQuery(tableClient, selectQuery); + rawBytes = 0; + bytes = 0; + for (auto&& r : rows) { + if (verbose) { + Cerr << "-------" << Endl; + } + for (auto&& c : r) { + if (c.first == "RawBytes") { + rawBytes += GetUint64(c.second); + } + if (c.first == "BlobRangeSize") { + bytes += GetUint64(c.second); + } + if (verbose) { + Cerr << c.first << ":" << Endl << c.second.GetProto().DebugString() << Endl; + } + } + } + if (rawBytesPred && *rawBytesPred == rawBytes && bytesPred && *bytesPred == bytes) { + break; + } else { + rawBytesPred = rawBytes; + bytesPred = bytes; + Cerr << "Wait changes: " << bytes << "/" << rawBytes << Endl; + Sleep(TDuration::Seconds(5)); + } + } + Cerr << bytes << "/" << rawBytes << Endl; +} + +void TTypedLocalHelper::GetCount(ui64& count) { + const TString selectQuery = "SELECT COUNT(*) as a FROM `" + TablePath + "`"; + + auto tableClient = KikimrRunner.GetTableClient(); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + for (auto&& r : rows) { + for (auto&& c : r) { + if (c.first == "a") { + count = GetUint64(c.second); + } + } + } +} + +void TTypedLocalHelper::FillPKOnly(const double pkKff /*= 0*/, const ui32 numRows /*= 800000*/) const { + std::vector<NArrow::NConstruction::IArrayBuilder::TPtr> builders; + builders.emplace_back(NArrow::NConstruction::TSimpleArrayConstructor<NArrow::NConstruction::TIntSeqFiller<arrow::Int64Type>>::BuildNotNullable("pk_int", numRows * pkKff)); + NArrow::NConstruction::TRecordBatchConstructor batchBuilder(builders); + std::shared_ptr<arrow::RecordBatch> batch = batchBuilder.BuildBatch(numRows); + TBase::SendDataViaActorSystem(TablePath, batch); +} + +void TTypedLocalHelper::GetStats(std::vector<NKikimrColumnShardStatisticsProto::TPortionStorage>& stats, const bool verbose /*= false*/) { + TString selectQuery = "SELECT * FROM `" + TablePath + "/.sys/primary_index_portion_stats` WHERE Activity = true"; + auto tableClient = KikimrRunner.GetTableClient(); + auto rows = ExecuteScanQuery(tableClient, selectQuery, verbose); + for (auto&& r : rows) { + for (auto&& c : r) { + if (c.first == "Stats") { + NKikimrColumnShardStatisticsProto::TPortionStorage store; + AFL_VERIFY(google::protobuf::TextFormat::ParseFromString(GetUtf8(c.second), &store)); + stats.emplace_back(store); + } + } + } +} + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/typed_local.h b/ydb/core/kqp/ut/olap/helpers/typed_local.h new file mode 100644 index 000000000000..1afef6b7a19b --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/typed_local.h @@ -0,0 +1,90 @@ +#pragma once +#include <ydb/core/testlib/cs_helper.h> +#include <ydb/core/kqp/ut/common/kqp_ut_common.h> +#include <ydb/public/sdk/cpp/client/ydb_types/status_codes.h> +#include <ydb/core/formats/arrow/simple_builder/array.h> +#include <ydb/core/formats/arrow/simple_builder/batch.h> +#include <ydb/core/formats/arrow/simple_builder/filler.h> + +namespace NKikimr::NKqp { + +class TTypedLocalHelper: public Tests::NCS::THelper { +private: + using TBase = Tests::NCS::THelper; + const TString TypeName; + TKikimrRunner& KikimrRunner; + const TString TablePath; + const TString TableName; + const TString StoreName; +protected: + virtual TString GetTestTableSchema() const override; + virtual std::vector<TString> GetShardingColumns() const override { + return {"pk_int"}; + } +public: + TTypedLocalHelper(const TString& typeName, TKikimrRunner& kikimrRunner, const TString& tableName = "olapTable", const TString& storeName = "olapStore") + : TBase(kikimrRunner.GetTestServer()) + , TypeName(typeName) + , KikimrRunner(kikimrRunner) + , TablePath("/Root/" + storeName + "/" + tableName) + , TableName(tableName) + , StoreName(storeName) { + SetShardingMethod("HASH_FUNCTION_CONSISTENCY_64"); + } + + void ExecuteSchemeQuery(const TString& alterQuery, const NYdb::EStatus expectedStatus = NYdb::EStatus::SUCCESS) const; + + TString GetQueryResult(const TString& request) const; + + void PrintCount(); + + class TDistribution { + private: + YDB_READONLY(ui32, Count, 0); + YDB_READONLY(ui32, MinCount, 0); + YDB_READONLY(ui32, MaxCount, 0); + YDB_READONLY(ui32, GroupsCount, 0); + public: + TDistribution(const ui32 count, const ui32 minCount, const ui32 maxCount, const ui32 groupsCount) + : Count(count) + , MinCount(minCount) + , MaxCount(maxCount) + , GroupsCount(groupsCount) { + + } + + TString DebugString() const { + return TStringBuilder() + << "count=" << Count << ";" + << "min_count=" << MinCount << ";" + << "max_count=" << MaxCount << ";" + << "groups_count=" << GroupsCount << ";"; + } + }; + + TDistribution GetDistribution(const bool verbose = false); + + void GetVolumes(ui64& rawBytes, ui64& bytes, const bool verbose = false, const std::vector<TString> columnNames = {}); + + void GetStats(std::vector<NKikimrColumnShardStatisticsProto::TPortionStorage>& stats, const bool verbose = false); + + void GetCount(ui64& count); + + template <class TFiller> + void FillTable(const TFiller& fillPolicy, const ui32 pkKff = 0, const ui32 numRows = 800000) const { + std::vector<NArrow::NConstruction::IArrayBuilder::TPtr> builders; + builders.emplace_back(NArrow::NConstruction::TSimpleArrayConstructor<NArrow::NConstruction::TIntSeqFiller<arrow::Int64Type>>::BuildNotNullable("pk_int", numRows * pkKff)); + builders.emplace_back(std::make_shared<NArrow::NConstruction::TSimpleArrayConstructor<TFiller>>("field", fillPolicy)); + NArrow::NConstruction::TRecordBatchConstructor batchBuilder(builders); + std::shared_ptr<arrow::RecordBatch> batch = batchBuilder.BuildBatch(numRows); + TBase::SendDataViaActorSystem(TablePath, batch); + } + + void FillPKOnly(const double pkKff = 0, const ui32 numRows = 800000) const; + + void CreateTestOlapTable(ui32 storeShardsCount = 4, ui32 tableShardsCount = 3) { + CreateOlapTableWithStore(TableName, StoreName, storeShardsCount, tableShardsCount); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/writer.cpp b/ydb/core/kqp/ut/olap/helpers/writer.cpp new file mode 100644 index 000000000000..e82645f5e988 --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/writer.cpp @@ -0,0 +1,16 @@ +#include "writer.h" +#include "local.h" + +namespace NKikimr::NKqp { + +void WriteTestData(TKikimrRunner& kikimr, TString testTable, ui64 pathIdBegin, ui64 tsBegin, size_t rowCount, bool withSomeNulls /*= false*/) { + UNIT_ASSERT(testTable != "/Root/benchTable"); // TODO: check schema instead + TLocalHelper lHelper(kikimr); + if (withSomeNulls) { + lHelper.WithSomeNulls(); + } + auto batch = lHelper.TestArrowBatch(pathIdBegin, tsBegin, rowCount); + lHelper.SendDataViaActorSystem(testTable, batch); +} + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/writer.h b/ydb/core/kqp/ut/olap/helpers/writer.h new file mode 100644 index 000000000000..acaf73d151d4 --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/writer.h @@ -0,0 +1,8 @@ +#pragma once +#include <ydb/core/kqp/ut/common/kqp_ut_common.h> + +namespace NKikimr::NKqp { + +void WriteTestData(TKikimrRunner& kikimr, TString testTable, ui64 pathIdBegin, ui64 tsBegin, size_t rowCount, bool withSomeNulls = false); + +} \ No newline at end of file diff --git a/ydb/core/kqp/ut/olap/helpers/ya.make b/ydb/core/kqp/ut/olap/helpers/ya.make new file mode 100644 index 000000000000..33fc652a32db --- /dev/null +++ b/ydb/core/kqp/ut/olap/helpers/ya.make @@ -0,0 +1,18 @@ +LIBRARY() + +SRCS( + local.cpp + query_executor.cpp + typed_local.cpp + writer.cpp + get_value.cpp + aggregation.cpp +) + +PEERDIR( + ydb/core/testlib +) + +YQL_LAST_ABI_VERSION() + +END() diff --git a/ydb/core/kqp/ut/olap/indexes_ut.cpp b/ydb/core/kqp/ut/olap/indexes_ut.cpp new file mode 100644 index 000000000000..5db56eb19848 --- /dev/null +++ b/ydb/core/kqp/ut/olap/indexes_ut.cpp @@ -0,0 +1,367 @@ +#include "helpers/local.h" +#include "helpers/writer.h" + +#include <ydb/core/base/tablet_pipecache.h> +#include <ydb/core/kqp/ut/common/kqp_ut_common.h> +#include <ydb/core/tx/columnshard/hooks/testing/controller.h> +#include <ydb/public/sdk/cpp/client/ydb_types/status_codes.h> + +#include <library/cpp/testing/unittest/registar.h> + +namespace NKikimr::NKqp { + +Y_UNIT_TEST_SUITE(KqpOlapIndexes) { + Y_UNIT_TEST(IndexesActualization) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + csController->SetPeriodicWakeupActivationPeriod(TDuration::Seconds(1)); + csController->SetLagForCompactionBeforeTierings(TDuration::Seconds(1)); + + TLocalHelper(kikimr).CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + + Tests::NCommon::TLoggerInit(kikimr).SetComponents({NKikimrServices::TX_COLUMNSHARD}, "CS").SetPriority(NActors::NLog::PRI_DEBUG).Initialize(); + + std::vector<TString> uids; + std::vector<TString> resourceIds; + std::vector<ui32> levels; + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1000000, 300000000, 10000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1100000, 300100000, 10000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1200000, 300200000, 10000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1300000, 300300000, 10000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1400000, 300400000, 10000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 2000000, 200000000, 70000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 3000000, 100000000, 110000); + + const auto filler = [&](const ui32 startRes, const ui32 startUid, const ui32 count) { + for (ui32 i = 0; i < count; ++i) { + uids.emplace_back("uid_" + ::ToString(startUid + i)); + resourceIds.emplace_back(::ToString(startRes + i)); + levels.emplace_back(i % 5); + } + }; + + filler(1000000, 300000000, 10000); + filler(1100000, 300100000, 10000); + filler(1200000, 300200000, 10000); + filler(1300000, 300300000, 10000); + filler(1400000, 300400000, 10000); + filler(2000000, 200000000, 70000); + filler(3000000, 100000000, 110000); + + } + + { + auto alterQuery = TStringBuilder() << + R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_uid, TYPE=BLOOM_FILTER, + FEATURES=`{"column_names" : ["uid"], "false_positive_probability" : 0.05}`); + )"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + { + auto alterQuery = TStringBuilder() << + R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_resource_id, TYPE=BLOOM_FILTER, + FEATURES=`{"column_names" : ["resource_id", "level"], "false_positive_probability" : 0.05}`); + )"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + + { + auto alterQuery = TStringBuilder() << + "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_OPTIONS, SCHEME_NEED_ACTUALIZATION=`true`);"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + csController->WaitActualization(TDuration::Seconds(10)); + { + auto it = tableClient.StreamExecuteScanQuery(R"( + --!syntax_v1 + + SELECT + COUNT(*) + FROM `/Root/olapStore/olapTable` + WHERE ((resource_id = '2' AND level = 222222) OR (resource_id = '1' AND level = 111111) OR (resource_id LIKE '%11dd%')) AND uid = '222' + )").GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cerr << result << Endl; + Cerr << csController->GetIndexesSkippingOnSelect().Val() << " / " << csController->GetIndexesApprovedOnSelect().Val() << Endl; + CompareYson(result, R"([[0u;]])"); + AFL_VERIFY(csController->GetIndexesSkippedNoData().Val() == 0); + AFL_VERIFY(csController->GetIndexesApprovedOnSelect().Val() < csController->GetIndexesSkippingOnSelect().Val() * 0.4) + ("approve", csController->GetIndexesApprovedOnSelect().Val())("skip", csController->GetIndexesSkippingOnSelect().Val()); + } + } + + Y_UNIT_TEST(IndexesActualizationRebuildScheme) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + csController->SetPeriodicWakeupActivationPeriod(TDuration::Seconds(1)); + + TLocalHelper(kikimr).CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + + std::vector<TString> uids; + std::vector<TString> resourceIds; + std::vector<ui32> levels; + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1000000, 300000000, 10000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1100000, 300100000, 10000); + + const auto filler = [&](const ui32 startRes, const ui32 startUid, const ui32 count) { + for (ui32 i = 0; i < count; ++i) { + uids.emplace_back("uid_" + ::ToString(startUid + i)); + resourceIds.emplace_back(::ToString(startRes + i)); + levels.emplace_back(i % 5); + } + }; + + filler(1000000, 300000000, 10000); + filler(1100000, 300100000, 10000); + + } + + for (ui32 i = 0; i < 10; ++i) { + auto alterQuery = TStringBuilder() << + "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_OPTIONS, SCHEME_NEED_ACTUALIZATION=`true`);"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + const ui64 startCount = csController->GetActualizationRefreshSchemeCount().Val(); + AFL_VERIFY(startCount == 30); + + for (auto&& i : csController->GetShardActualIds()) { + kikimr.GetTestServer().GetRuntime()->Send(MakePipePeNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward( + new TEvents::TEvPoisonPill(), i, false)); + } + + { + auto it = tableClient.StreamExecuteScanQuery(R"( + --!syntax_v1 + SELECT + COUNT(*) + FROM `/Root/olapStore/olapTable` + )").GetValueSync(); + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cout << result << Endl; + CompareYson(result, R"([[20000u;]])"); + } + + AFL_VERIFY(startCount + 3 /*tables count*/ * 2 /*normalizers + main_load*/ == + (ui64)csController->GetActualizationRefreshSchemeCount().Val())("start", startCount)("count", csController->GetActualizationRefreshSchemeCount().Val()); + } + + Y_UNIT_TEST(Indexes) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + + TLocalHelper(kikimr).CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + +// Tests::NCommon::TLoggerInit(kikimr).Initialize(); + + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + + { + auto alterQuery = TStringBuilder() << + R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_uid, TYPE=BLOOM_FILTER, + FEATURES=`{"column_names" : ["uid"], "false_positive_probability" : 0.05}`); + )"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + { + auto alterQuery = TStringBuilder() << + R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_resource_id, TYPE=BLOOM_FILTER, + FEATURES=`{"column_names" : ["resource_id", "level"], "false_positive_probability" : 0.05}`); + )"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + + std::vector<TString> uids; + std::vector<TString> resourceIds; + std::vector<ui32> levels; + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1000000, 300000000, 10000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1100000, 300100000, 10000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1200000, 300200000, 10000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1300000, 300300000, 10000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 1400000, 300400000, 10000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 2000000, 200000000, 70000); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 3000000, 100000000, 110000); + + const auto filler = [&](const ui32 startRes, const ui32 startUid, const ui32 count) { + for (ui32 i = 0; i < count; ++i) { + uids.emplace_back("uid_" + ::ToString(startUid + i)); + resourceIds.emplace_back(::ToString(startRes + i)); + levels.emplace_back(i % 5); + } + }; + + filler(1000000, 300000000, 10000); + filler(1100000, 300100000, 10000); + filler(1200000, 300200000, 10000); + filler(1300000, 300300000, 10000); + filler(1400000, 300400000, 10000); + filler(2000000, 200000000, 70000); + filler(3000000, 100000000, 110000); + + } + + { + auto it = tableClient.StreamExecuteScanQuery(R"( + --!syntax_v1 + + SELECT + COUNT(*) + FROM `/Root/olapStore/olapTable` + )").GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cout << result << Endl; + CompareYson(result, R"([[230000u;]])"); + } + + AFL_VERIFY(csController->GetIndexesSkippingOnSelect().Val() == 0); + AFL_VERIFY(csController->GetIndexesApprovedOnSelect().Val() == 0); + TInstant start = Now(); + ui32 compactionsStart = csController->GetCompactionStartedCounter().Val(); + while (Now() - start < TDuration::Seconds(10)) { + if (compactionsStart != csController->GetCompactionStartedCounter().Val()) { + compactionsStart = csController->GetCompactionStartedCounter().Val(); + start = Now(); + } + Cerr << "WAIT_COMPACTION: " << csController->GetCompactionStartedCounter().Val() << Endl; + Sleep(TDuration::Seconds(1)); + } + + { + auto it = tableClient.StreamExecuteScanQuery(R"( + --!syntax_v1 + + SELECT + COUNT(*) + FROM `/Root/olapStore/olapTable` + WHERE ((resource_id = '2' AND level = 222222) OR (resource_id = '1' AND level = 111111) OR (resource_id LIKE '%11dd%')) AND uid = '222' + )").GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cout << result << Endl; + Cout << csController->GetIndexesSkippingOnSelect().Val() << " / " << csController->GetIndexesApprovedOnSelect().Val() << Endl; + CompareYson(result, R"([[0u;]])"); + AFL_VERIFY(csController->GetIndexesSkippedNoData().Val() == 0); + AFL_VERIFY(csController->GetIndexesApprovedOnSelect().Val() < csController->GetIndexesSkippingOnSelect().Val() * 0.3); + } + ui32 requestsCount = 100; + for (ui32 i = 0; i < requestsCount; ++i) { + const ui32 idx = RandomNumber<ui32>(uids.size()); + const auto query = [](const TString& res, const TString& uid, const ui32 level) { + TStringBuilder sb; + sb << "SELECT" << Endl; + sb << "COUNT(*)" << Endl; + sb << "FROM `/Root/olapStore/olapTable`" << Endl; + sb << "WHERE(" << Endl; + sb << "resource_id = '" << res << "' AND" << Endl; + sb << "uid= '" << uid << "' AND" << Endl; + sb << "level= " << level << Endl; + sb << ")"; + return sb; + }; + auto it = tableClient.StreamExecuteScanQuery(query(resourceIds[idx], uids[idx], levels[idx])).GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + Cout << csController->GetIndexesSkippingOnSelect().Val() << " / " << csController->GetIndexesApprovedOnSelect().Val() << " / " << csController->GetIndexesSkippedNoData().Val() << Endl; + CompareYson(result, R"([[1u;]])"); + } + + AFL_VERIFY(csController->GetIndexesApprovedOnSelect().Val() < 0.20 * csController->GetIndexesSkippingOnSelect().Val()); + + } + + Y_UNIT_TEST(IndexesModificationError) { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + + TLocalHelper(kikimr).CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + + // Tests::NCommon::TLoggerInit(kikimr).Initialize(); + + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + + { + auto alterQuery = TStringBuilder() << + R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_uid, TYPE=BLOOM_FILTER, + FEATURES=`{"column_names" : ["uid"], "false_positive_probability" : 0.05}`); + )"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + + { + auto alterQuery = TStringBuilder() << + R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_uid, TYPE=BLOOM_FILTER, + FEATURES=`{"column_names" : ["uid", "resource_id"], "false_positive_probability" : 0.05}`); + )"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_UNEQUAL(alterResult.GetStatus(), NYdb::EStatus::SUCCESS); + } + + { + auto alterQuery = TStringBuilder() << + R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_uid, TYPE=BLOOM_FILTER, + FEATURES=`{"column_names" : ["uid"], "false_positive_probability" : 0.005}`); + )"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_UNEQUAL(alterResult.GetStatus(), NYdb::EStatus::SUCCESS); + } + + { + auto alterQuery = TStringBuilder() << + R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_uid, TYPE=BLOOM_FILTER, + FEATURES=`{"column_names" : ["uid"], "false_positive_probability" : 0.01}`); + )"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + + { + auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=DROP_INDEX, NAME=index_uid);"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + + } +} + +} diff --git a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp index 417ba6527433..a8e14ea51c3e 100644 --- a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp +++ b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp @@ -1,423 +1,32 @@ -#include <ydb/core/kqp/ut/common/kqp_ut_common.h> -#include <ydb/core/kqp/ut/common/columnshard.h> - -#include <ydb/core/sys_view/service/query_history.h> -#include <ydb/core/tx/columnshard/columnshard_ut_common.h> +#include <ydb/core/formats/arrow/ssa_runtime_version.h> -#include <contrib/libs/apache/arrow/cpp/src/arrow/api.h> -#include <contrib/libs/apache/arrow/cpp/src/arrow/ipc/writer.h> +#include "helpers/get_value.h" +#include "helpers/query_executor.h" +#include "helpers/local.h" +#include "helpers/writer.h" +#include "helpers/aggregation.h" -#include <ydb/library/yql/dq/actors/compute/dq_compute_actor.h> -#include <ydb/core/formats/arrow/simple_builder/filler.h> -#include <ydb/core/formats/arrow/simple_builder/array.h> -#include <ydb/core/formats/arrow/simple_builder/batch.h> -#include <ydb/core/formats/arrow/ssa_runtime_version.h> +#include <ydb/core/base/tablet_pipecache.h> #include <ydb/core/kqp/executer_actor/kqp_executer.h> -#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> +#include <ydb/core/kqp/common/simple/kqp_event_ids.h> +#include <ydb/core/kqp/ut/common/columnshard.h> +#include <ydb/core/testlib/common_helper.h> #include <ydb/core/tx/columnshard/hooks/testing/controller.h> -#include <ydb/core/tx/datashard/datashard.h> #include <ydb/core/tx/datashard/datashard_ut_common_kqp.h> -#include <ydb/core/tx/datashard/ut_common/datashard_ut_common.h> -#include <ydb/core/grpc_services/local_rpc/local_rpc.h> -#include <ydb/core/grpc_services/base/base.h> -#include <ydb/core/tx/tx_proxy/proxy.h> -#include <ydb/core/tx/schemeshard/schemeshard.h> -#include <ydb/core/testlib/tablet_helpers.h> -#include <ydb/core/testlib/test_client.h> -#include <ydb/core/testlib/cs_helper.h> -#include <util/system/sanitizers.h> - -#include <fmt/format.h> -#include <contrib/libs/apache/arrow/cpp/src/arrow/type_traits.h> - -namespace NKikimr { -namespace NKqp { - -using namespace NKikimr::NDataShard::NKqpHelpers; + +#include <ydb/library/yql/dq/actors/dq_events_ids.h> +#include <ydb/library/yql/dq/actors/compute/dq_compute_actor.h> + +#include <library/cpp/testing/unittest/registar.h> + +namespace NKikimr::NKqp { using namespace NSchemeShard; using namespace NActors; using namespace NYdb; using namespace NYdb::NTable; using namespace NYdb::NScheme; -using TEvBulkUpsertRequest = NGRpcService::TGrpcRequestOperationCall<Ydb::Table::BulkUpsertRequest, - Ydb::Table::BulkUpsertResponse>; - Y_UNIT_TEST_SUITE(KqpOlap) { - void PrintValue(IOutputStream& out, const NYdb::TValue& v) { - NYdb::TValueParser value(v); - - while (value.GetKind() == NYdb::TTypeParser::ETypeKind::Optional) { - if (value.IsNull()) { - out << "<NULL>"; - return; - } else { - value.OpenOptional(); - } - } - - if (value.IsNull()) { - out << "<NULL>"; - return; - } - - switch (value.GetPrimitiveType()) { - case NYdb::EPrimitiveType::Uint32: - { - out << value.GetUint32(); - break; - } - case NYdb::EPrimitiveType::Uint64: - { - out << value.GetUint64(); - break; - } - case NYdb::EPrimitiveType::Int64: - { - out << value.GetInt64(); - break; - } - case NYdb::EPrimitiveType::Utf8: - { - out << value.GetUtf8(); - break; - } - case NYdb::EPrimitiveType::Timestamp: - { - out << value.GetTimestamp(); - break; - } - case NYdb::EPrimitiveType::Bool: - { - out << value.GetBool(); - break; - } - default: - { - UNIT_ASSERT_C(false, "PrintValue not iplemented for this type"); - } - } - } - - void PrintRow(IOutputStream& out, const THashMap<TString, NYdb::TValue>& fields) { - for (const auto& f : fields) { - out << f.first << ": "; - PrintValue(out, f.second); - out << " "; - } - } - - void PrintRows(IOutputStream& out, const TVector<THashMap<TString, NYdb::TValue>>& rows) { - for (const auto& r : rows) { - PrintRow(out, r); - out << "\n"; - } - } - - TVector<THashMap<TString, NYdb::TValue>> CollectRows(NYdb::NTable::TScanQueryPartIterator& it, NJson::TJsonValue* statInfo = nullptr, NJson::TJsonValue* diagnostics = nullptr) { - TVector<THashMap<TString, NYdb::TValue>> rows; - if (statInfo) { - *statInfo = NJson::JSON_NULL; - } - if (diagnostics) { - *diagnostics = NJson::JSON_NULL; - } - for (;;) { - auto streamPart = it.ReadNext().GetValueSync(); - if (!streamPart.IsSuccess()) { - UNIT_ASSERT_C(streamPart.EOS(), streamPart.GetIssues().ToString()); - break; - } - - UNIT_ASSERT_C(streamPart.HasResultSet() || streamPart.HasQueryStats(), - "Unexpected empty scan query response."); - - if (streamPart.HasQueryStats()) { - auto plan = streamPart.GetQueryStats().GetPlan(); - if (plan && statInfo) { - UNIT_ASSERT(NJson::ReadJsonFastTree(*plan, statInfo)); - } - } - - if (streamPart.HasDiagnostics()) { - TString diagnosticsString = streamPart.GetDiagnostics(); - if (!diagnosticsString.empty() && diagnostics) { - UNIT_ASSERT(NJson::ReadJsonFastTree(diagnosticsString, diagnostics)); - } - } - - if (streamPart.HasResultSet()) { - auto resultSet = streamPart.ExtractResultSet(); - NYdb::TResultSetParser rsParser(resultSet); - while (rsParser.TryNextRow()) { - THashMap<TString, NYdb::TValue> row; - for (size_t ci = 0; ci < resultSet.ColumnsCount(); ++ci) { - row.emplace(resultSet.GetColumnsMeta()[ci].Name, rsParser.GetValue(ci)); - } - rows.emplace_back(std::move(row)); - } - } - } - return rows; - } - - TVector<THashMap<TString, NYdb::TValue>> ExecuteScanQuery(NYdb::NTable::TTableClient& tableClient, const TString& query, const bool verbose = true) { - if (verbose) { - Cerr << "====================================\n" - << "QUERY:\n" << query - << "\n\nRESULT:\n"; - } - - TStreamExecScanQuerySettings scanSettings; - auto it = tableClient.StreamExecuteScanQuery(query, scanSettings).GetValueSync(); - auto rows = CollectRows(it); - if (verbose) { - PrintRows(Cerr, rows); - Cerr << "\n"; - } - - return rows; - } - - ui64 GetUint32(const NYdb::TValue& v) { - NYdb::TValueParser value(v); - if (value.GetKind() == NYdb::TTypeParser::ETypeKind::Optional) { - return *value.GetOptionalUint32(); - } else { - return value.GetUint32(); - } - } - - ui64 GetUint64(const NYdb::TValue& v) { - NYdb::TValueParser value(v); - if (value.GetKind() == NYdb::TTypeParser::ETypeKind::Optional) { - return *value.GetOptionalUint64(); - } else { - return value.GetUint64(); - } - } - - TString GetUtf8(const NYdb::TValue& v) { - NYdb::TValueParser value(v); - if (value.GetKind() == NYdb::TTypeParser::ETypeKind::Optional) { - return *value.GetOptionalUtf8(); - } else { - return value.GetUtf8(); - } - } - - TInstant GetTimestamp(const NYdb::TValue& v) { - NYdb::TValueParser value(v); - if (value.GetKind() == NYdb::TTypeParser::ETypeKind::Optional) { - return *value.GetOptionalTimestamp(); - } else { - return value.GetTimestamp(); - } - } - - class TTypedLocalHelper: public Tests::NCS::THelper { - private: - using TBase = Tests::NCS::THelper; - const TString TypeName; - TKikimrRunner& KikimrRunner; - const TString TablePath; - const TString TableName; - const TString StoreName; - protected: - virtual TString GetTestTableSchema() const override { - TString result; - if (TypeName) { - result = R"(Columns { Name: "field" Type: ")" + TypeName + "\"}"; - } - result += R"( - Columns { Name: "pk_int" Type: "Int64" } - KeyColumnNames: "pk_int" - Engine: COLUMN_ENGINE_REPLACING_TIMESERIES - )"; - return result; - } - virtual std::vector<TString> GetShardingColumns() const override { - return { "pk_int" }; - } - public: - TTypedLocalHelper(const TString& typeName, TKikimrRunner& kikimrRunner, const TString& tableName = "olapTable", const TString& storeName = "olapStore") - : TBase(kikimrRunner.GetTestServer()) - , TypeName(typeName) - , KikimrRunner(kikimrRunner) - , TablePath("/Root/" + storeName + "/" + tableName) - , TableName(tableName) - , StoreName(storeName) - { - SetShardingMethod("HASH_FUNCTION_CONSISTENCY_64"); - } - - void PrintCount() { - const TString selectQuery = "SELECT COUNT(*), MAX(pk_int), MIN(pk_int) FROM `" + TablePath + "`"; - - auto tableClient = KikimrRunner.GetTableClient(); - auto rows = ExecuteScanQuery(tableClient, selectQuery); - for (auto&& r : rows) { - for (auto&& c : r) { - Cerr << c.first << ":" << Endl << c.second.GetProto().DebugString() << Endl; - } - } - } - - class TDistribution { - private: - YDB_READONLY(ui32, Count, 0); - YDB_READONLY(ui32, MinCount, 0); - YDB_READONLY(ui32, MaxCount, 0); - YDB_READONLY(ui32, GroupsCount, 0); - public: - TDistribution(const ui32 count, const ui32 minCount, const ui32 maxCount, const ui32 groupsCount) - : Count(count) - , MinCount(minCount) - , MaxCount(maxCount) - , GroupsCount(groupsCount) - { - - } - - TString DebugString() const { - return TStringBuilder() - << "count=" << Count << ";" - << "min_count=" << MinCount << ";" - << "max_count=" << MaxCount << ";" - << "groups_count=" << GroupsCount << ";"; - } - }; - - TDistribution GetDistribution(const bool verbose = false) { - const TString selectQuery = "PRAGMA Kikimr.OptUseFinalizeByKey='true';SELECT COUNT(*) as c, field FROM `" + TablePath + "` GROUP BY field ORDER BY field"; - - auto tableClient = KikimrRunner.GetTableClient(); - auto rows = ExecuteScanQuery(tableClient, selectQuery, verbose); - ui32 count = 0; - std::optional<ui32> minCount; - std::optional<ui32> maxCount; - std::set<TString> groups; - for (auto&& r : rows) { - for (auto&& c : r) { - if (c.first == "c") { - const ui64 v = GetUint64(c.second); - count += v; - if (!minCount || *minCount > v) { - minCount = v; - } - if (!maxCount || *maxCount < v) { - maxCount = v; - } - } else if (c.first == "field") { - Y_ABORT_UNLESS(groups.emplace(c.second.GetProto().DebugString()).second); - } - if (verbose) { - Cerr << c.first << ":" << Endl << c.second.GetProto().DebugString() << Endl; - } - } - } - Y_ABORT_UNLESS(maxCount); - Y_ABORT_UNLESS(minCount); - return TDistribution(count, *minCount, *maxCount, groups.size()); - } - - void GetVolumes(ui64& rawBytes, ui64& bytes, const bool verbose = false) { - const TString selectQuery = "SELECT * FROM `" + TablePath + "/.sys/primary_index_stats`"; - - auto tableClient = KikimrRunner.GetTableClient(); - - std::optional<ui64> rawBytesPred; - std::optional<ui64> bytesPred; - while (true) { - auto rows = ExecuteScanQuery(tableClient, selectQuery); - rawBytes = 0; - bytes = 0; - for (auto&& r : rows) { - if (verbose) { - Cerr << "-------" << Endl; - } - for (auto&& c : r) { - if (c.first == "RawBytes") { - rawBytes += GetUint64(c.second); - } - if (c.first == "BlobRangeSize") { - bytes += GetUint64(c.second); - } - if (verbose) { - Cerr << c.first << ":" << Endl << c.second.GetProto().DebugString() << Endl; - } - } - } - if (rawBytesPred && *rawBytesPred == rawBytes && bytesPred && *bytesPred == bytes) { - break; - } else { - rawBytesPred = rawBytes; - bytesPred = bytes; - Cerr << "Wait changes: " << bytes << "/" << rawBytes << Endl; - Sleep(TDuration::Seconds(5)); - } - } - Cerr << bytes << "/" << rawBytes << Endl; - } - - void GetCount(ui64& count) { - const TString selectQuery = "SELECT COUNT(*) as a FROM `" + TablePath + "`"; - - auto tableClient = KikimrRunner.GetTableClient(); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - for (auto&& r : rows) { - for (auto&& c : r) { - if (c.first == "a") { - count = GetUint64(c.second); - } - } - } - } - - template <class TFiller> - void FillTable(const TFiller& fillPolicy, const ui32 pkKff = 0, const ui32 numRows = 800000) const { - std::vector<NArrow::NConstruction::IArrayBuilder::TPtr> builders; - builders.emplace_back(std::make_shared<NArrow::NConstruction::TSimpleArrayConstructor<NArrow::NConstruction::TIntSeqFiller<arrow::Int64Type>>>("pk_int", numRows * pkKff)); - builders.emplace_back(std::make_shared<NArrow::NConstruction::TSimpleArrayConstructor<TFiller>>("field", fillPolicy)); - NArrow::NConstruction::TRecordBatchConstructor batchBuilder(builders); - std::shared_ptr<arrow::RecordBatch> batch = batchBuilder.BuildBatch(numRows); - TBase::SendDataViaActorSystem(TablePath, batch); - } - - void FillPKOnly(const ui32 pkKff = 0, const ui32 numRows = 800000) const { - std::vector<NArrow::NConstruction::IArrayBuilder::TPtr> builders; - builders.emplace_back(std::make_shared<NArrow::NConstruction::TSimpleArrayConstructor<NArrow::NConstruction::TIntSeqFiller<arrow::Int64Type>>>("pk_int", numRows * pkKff)); - NArrow::NConstruction::TRecordBatchConstructor batchBuilder(builders); - std::shared_ptr<arrow::RecordBatch> batch = batchBuilder.BuildBatch(numRows); - TBase::SendDataViaActorSystem(TablePath, batch); - } - - void CreateTestOlapTable(ui32 storeShardsCount = 4, ui32 tableShardsCount = 3) { - CreateOlapTableWithStore(TableName, StoreName, storeShardsCount, tableShardsCount); - } - }; - - class TLocalHelper: public Tests::NCS::THelper { - private: - using TBase = Tests::NCS::THelper; - public: - TLocalHelper& SetShardingMethod(const TString& value) { - TBase::SetShardingMethod(value); - return *this; - } - - void CreateTestOlapTable(TString tableName = "olapTable", TString storeName = "olapStore", - ui32 storeShardsCount = 4, ui32 tableShardsCount = 3) { - CreateOlapTableWithStore(tableName, storeName, storeShardsCount, tableShardsCount); - } - using TBase::TBase; - - TLocalHelper(TKikimrRunner& runner) - : TBase(runner.GetTestServer()) { - - } - }; class TExtLocalHelper: public TLocalHelper { private: @@ -474,86 +83,6 @@ Y_UNIT_TEST_SUITE(KqpOlap) { } }; - class TClickHelper : public Tests::NCS::TCickBenchHelper { - private: - using TBase = Tests::NCS::TCickBenchHelper; - public: - using TBase::TBase; - - TClickHelper(TKikimrRunner& runner) - : TBase(runner.GetTestServer()) - {} - - void CreateClickBenchTable(TString tableName = "benchTable", ui32 shardsCount = 4) { - TActorId sender = Server.GetRuntime()->AllocateEdgeActor(); - - TBase::CreateTestOlapTable(sender, "", Sprintf(R"( - Name: "%s" - ColumnShardCount: %d - Schema { - %s - } - Sharding { - HashSharding { - Function: HASH_FUNCTION_CONSISTENCY_64 - Columns: "EventTime" - } - })", tableName.c_str(), shardsCount, PROTO_SCHEMA)); - } - }; - - class TTableWithNullsHelper : public Tests::NCS::TTableWithNullsHelper { - private: - using TBase = Tests::NCS::TTableWithNullsHelper; - public: - using TBase::TBase; - - TTableWithNullsHelper(TKikimrRunner& runner) - : TBase(runner.GetTestServer()) - {} - - void CreateTableWithNulls(TString tableName = "tableWithNulls", ui32 shardsCount = 4) { - TActorId sender = Server.GetRuntime()->AllocateEdgeActor(); - - TBase::CreateTestOlapTable(sender, "", Sprintf(R"( - Name: "%s" - ColumnShardCount: %d - Schema { - %s - } - Sharding { - HashSharding { - Function: HASH_FUNCTION_CONSISTENCY_64 - Columns: "id" - } - })", tableName.c_str(), shardsCount, PROTO_SCHEMA)); - } - }; - - void WriteTestData(TKikimrRunner& kikimr, TString testTable, ui64 pathIdBegin, ui64 tsBegin, size_t rowCount, bool withSomeNulls = false) { - UNIT_ASSERT(testTable != "/Root/benchTable"); // TODO: check schema instead - TLocalHelper lHelper(kikimr); - if (withSomeNulls) { - lHelper.WithSomeNulls(); - } - auto batch = lHelper.TestArrowBatch(pathIdBegin, tsBegin, rowCount); - lHelper.SendDataViaActorSystem(testTable, batch); - } - - void WriteTestDataForClickBench(TKikimrRunner& kikimr, TString testTable, ui64 pathIdBegin, ui64 tsBegin, size_t rowCount) { - UNIT_ASSERT(testTable == "/Root/benchTable"); // TODO: check schema instead - TClickHelper lHelper(kikimr.GetTestServer()); - auto batch = lHelper.TestArrowBatch(pathIdBegin, tsBegin, rowCount); - lHelper.SendDataViaActorSystem(testTable, batch); - } - - void WriteTestDataForTableWithNulls(TKikimrRunner& kikimr, TString testTable) { - UNIT_ASSERT(testTable == "/Root/tableWithNulls"); // TODO: check schema instead - TTableWithNullsHelper lHelper(kikimr.GetTestServer()); - auto batch = lHelper.TestArrowBatch(); - lHelper.SendDataViaActorSystem(testTable, batch); - } - void CreateTableOfAllTypes(TKikimrRunner& kikimr) { auto& legacyClient = kikimr.GetTestClient(); @@ -689,59 +218,6 @@ Y_UNIT_TEST_SUITE(KqpOlap) { }; } - template <typename TClient> - auto StreamExplainQuery(const TString& query, TClient& client) { - if constexpr (std::is_same_v<NYdb::NTable::TTableClient, TClient>) { - TStreamExecScanQuerySettings scanSettings; - scanSettings.Explain(true); - return client.StreamExecuteScanQuery(query, scanSettings).GetValueSync(); - } else { - NYdb::NQuery::TExecuteQuerySettings scanSettings; - scanSettings.ExecMode(NYdb::NQuery::EExecMode::Explain); - return client.StreamExecuteQuery(query, NYdb::NQuery::TTxControl::BeginTx().CommitTx(), scanSettings).GetValueSync(); - } - } - - template <typename TClient> - void CheckPlanForAggregatePushdown( - const TString& query, - TClient& client, - const std::vector<std::string>& expectedPlanNodes, - const std::string& readNodeType) - { - auto res = StreamExplainQuery(query, client); - UNIT_ASSERT_C(res.IsSuccess(), res.GetIssues().ToString()); - - auto planRes = CollectStreamResult(res); - auto ast = planRes.QueryStats->Getquery_ast(); - Cerr << "JSON Plan:" << Endl; - Cerr << planRes.PlanJson.GetOrElse("NO_PLAN") << Endl; - Cerr << "AST:" << Endl; - Cerr << ast << Endl; - for (auto planNode : expectedPlanNodes) { - UNIT_ASSERT_C(ast.find(planNode) != std::string::npos, - TStringBuilder() << planNode << " was not found. Query: " << query); - } - UNIT_ASSERT_C(ast.find("SqueezeToDict") == std::string::npos, TStringBuilder() << "SqueezeToDict denied for aggregation requests. Query: " << query); - - if (!readNodeType.empty()) { - NJson::TJsonValue planJson; - NJson::ReadJsonTree(*planRes.PlanJson, &planJson, true); - auto readNode = FindPlanNodeByKv(planJson, "Node Type", readNodeType.c_str()); - UNIT_ASSERT(readNode.IsDefined()); - - auto& operators = readNode.GetMapSafe().at("Operators").GetArraySafe(); - for (auto& op : operators) { - if (op.GetMapSafe().at("Name") == "TableFullScan") { - auto ssaProgram = op.GetMapSafe().at("SsaProgram"); - UNIT_ASSERT(ssaProgram.IsDefined()); - UNIT_ASSERT(FindPlanNodes(ssaProgram, "Projection").size()); - break; - } - } - } - } - Y_UNIT_TEST(SimpleQueryOlap) { auto settings = TKikimrSettings() .SetWithSampleTables(false); @@ -1170,308 +646,48 @@ Y_UNIT_TEST_SUITE(KqpOlap) { CompareYson(StreamResultToYson(it), "[]"); } - Y_UNIT_TEST(Aggregation) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false); - TKikimrRunner kikimr(settings); - - TLocalHelper(kikimr).CreateTestOlapTable(); + Y_UNIT_TEST(PushdownFilter) { + static bool enableLog = false; - auto tableClient = kikimr.GetTableClient(); + auto doTest = [](std::optional<bool> viaPragma, bool pushdownPresent) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false); - { - auto it = tableClient.StreamExecuteScanQuery(R"( - --!syntax_v1 + if (enableLog) { + Cerr << "Run test:" << Endl; + Cerr << "viaPragma is " << (viaPragma.has_value() ? "" : "not ") << "present."; + if (viaPragma.has_value()) { + Cerr << " Value: " << viaPragma.value(); + } + Cerr << Endl; + Cerr << "Expected result: " << pushdownPresent << Endl; + } - SELECT - COUNT(*) - FROM `/Root/olapStore/olapTable` - )").GetValueSync(); + TKikimrRunner kikimr(settings); + kikimr.GetTestServer().GetRuntime()->SetLogPriority(NKikimrServices::TX_COLUMNSHARD, NActors::NLog::PRI_DEBUG); - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - Cout << result << Endl; - CompareYson(result, R"([[0u;]])"); - } + auto client = kikimr.GetTableClient(); - { - WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); - } + TLocalHelper(kikimr).CreateTestOlapTable(); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 10); - { - auto it = tableClient.StreamExecuteScanQuery(R"( - --!syntax_v1 + TStreamExecScanQuerySettings scanSettings; + scanSettings.Explain(true); - SELECT - COUNT(*), MAX(`resource_id`), MAX(`timestamp`), MIN(LENGTH(`message`)) - FROM `/Root/olapStore/olapTable` - )").GetValueSync(); + { + TString query = TString(R"( + --!syntax_v1 + SELECT * FROM `/Root/olapStore/olapTable` WHERE resource_id = "5"u; + )"); - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - Cout << result << Endl; - CompareYson(result, R"([[23000u;["40999"];[3004999u];[1036u]]])"); - } + if (viaPragma.has_value() && !viaPragma.value()) { + TString pragma = TString(R"( + PRAGMA Kikimr.OptEnableOlapPushdown = "false"; + )"); + query = pragma + query; + } - { - auto it = tableClient.StreamExecuteScanQuery(R"( - --!syntax_v1 - - SELECT - COUNT(*) - FROM `/Root/olapStore/olapTable` - )").GetValueSync(); - - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - Cout << result << Endl; - CompareYson(result, R"([[23000u;]])"); - } - } - - Y_UNIT_TEST(Indexes) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false); - TKikimrRunner kikimr(settings); - - TLocalHelper(kikimr).CreateTestOlapTable(); - auto tableClient = kikimr.GetTableClient(); - -// Tests::NCommon::TLoggerInit(kikimr).Initialize(); - - auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); - - { - auto alterQuery = TStringBuilder() << - R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_uid, TYPE=BLOOM_FILTER, - FEATURES=`{"column_names" : ["uid"], "false_positive_probability" : 0.05}`); - )"; - auto session = tableClient.CreateSession().GetValueSync().GetSession(); - auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); - } - { - auto alterQuery = TStringBuilder() << - R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_resource_id, TYPE=BLOOM_FILTER, - FEATURES=`{"column_names" : ["resource_id", "level"], "false_positive_probability" : 0.05}`); - )"; - auto session = tableClient.CreateSession().GetValueSync().GetSession(); - auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); - } - - std::vector<TString> uids; - std::vector<TString> resourceIds; - std::vector<ui32> levels; - - { - WriteTestData(kikimr, "/Root/olapStore/olapTable", 1000000, 300000000, 10000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 1100000, 300100000, 10000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 1200000, 300200000, 10000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 1300000, 300300000, 10000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 1400000, 300400000, 10000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 2000000, 200000000, 70000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 3000000, 100000000, 110000); - - const auto filler = [&](const ui32 startRes, const ui32 startUid, const ui32 count) { - for (ui32 i = 0; i < count; ++i) { - uids.emplace_back("uid_" + ::ToString(startUid + i)); - resourceIds.emplace_back(::ToString(startRes + i)); - levels.emplace_back(i % 5); - } - }; - - filler(1000000, 300000000, 10000); - filler(1100000, 300100000, 10000); - filler(1200000, 300200000, 10000); - filler(1300000, 300300000, 10000); - filler(1400000, 300400000, 10000); - filler(2000000, 200000000, 70000); - filler(3000000, 100000000, 110000); - - } - - { - auto it = tableClient.StreamExecuteScanQuery(R"( - --!syntax_v1 - - SELECT - COUNT(*) - FROM `/Root/olapStore/olapTable` - )").GetValueSync(); - - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - Cout << result << Endl; - CompareYson(result, R"([[230000u;]])"); - } - - AFL_VERIFY(csController->GetIndexesSkippingOnSelect().Val() == 0); - AFL_VERIFY(csController->GetIndexesApprovedOnSelect().Val() == 0); - TInstant start = Now(); - ui32 compactionsStart = csController->GetCompactions().Val(); - while (Now() - start < TDuration::Seconds(10)) { - if (compactionsStart != csController->GetCompactions().Val()) { - compactionsStart = csController->GetCompactions().Val(); - start = Now(); - } - Cerr << "WAIT_COMPACTION: " << csController->GetCompactions().Val() << Endl; - Sleep(TDuration::Seconds(1)); - } - - { - auto it = tableClient.StreamExecuteScanQuery(R"( - --!syntax_v1 - - SELECT - COUNT(*) - FROM `/Root/olapStore/olapTable` - WHERE ((resource_id = '2' AND level = 222222) OR (resource_id = '1' AND level = 111111) OR (resource_id LIKE '%11dd%')) AND uid = '222' - )").GetValueSync(); - - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - Cout << result << Endl; - Cout << csController->GetIndexesSkippingOnSelect().Val() << " / " << csController->GetIndexesApprovedOnSelect().Val() << Endl; - CompareYson(result, R"([[0u;]])"); - AFL_VERIFY(csController->GetIndexesSkippedNoData().Val() == 0); - AFL_VERIFY(csController->GetIndexesApprovedOnSelect().Val() < csController->GetIndexesSkippingOnSelect().Val() * 0.3); - } - ui32 requestsCount = 100; - for (ui32 i = 0; i < requestsCount; ++i) { - const ui32 idx = RandomNumber<ui32>(uids.size()); - const auto query = [](const TString& res, const TString& uid, const ui32 level) { - TStringBuilder sb; - sb << "SELECT" << Endl; - sb << "COUNT(*)" << Endl; - sb << "FROM `/Root/olapStore/olapTable`" << Endl; - sb << "WHERE(" << Endl; - sb << "resource_id = '" << res << "' AND" << Endl; - sb << "uid= '" << uid << "' AND" << Endl; - sb << "level= " << level << Endl; - sb << ")"; - return sb; - }; - auto it = tableClient.StreamExecuteScanQuery(query(resourceIds[idx], uids[idx], levels[idx])).GetValueSync(); - - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - Cout << csController->GetIndexesSkippingOnSelect().Val() << " / " << csController->GetIndexesApprovedOnSelect().Val() << " / " << csController->GetIndexesSkippedNoData().Val() << Endl; - CompareYson(result, R"([[1u;]])"); - } - - AFL_VERIFY(csController->GetIndexesApprovedOnSelect().Val() < 0.20 * csController->GetIndexesSkippingOnSelect().Val()); - - } - - Y_UNIT_TEST(IndexesModificationError) { - auto settings = TKikimrSettings().SetWithSampleTables(false); - TKikimrRunner kikimr(settings); - - TLocalHelper(kikimr).CreateTestOlapTable(); - auto tableClient = kikimr.GetTableClient(); - - // Tests::NCommon::TLoggerInit(kikimr).Initialize(); - - auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); - - { - auto alterQuery = TStringBuilder() << - R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_uid, TYPE=BLOOM_FILTER, - FEATURES=`{"column_names" : ["uid"], "false_positive_probability" : 0.05}`); - )"; - auto session = tableClient.CreateSession().GetValueSync().GetSession(); - auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); - } - - { - auto alterQuery = TStringBuilder() << - R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_uid, TYPE=BLOOM_FILTER, - FEATURES=`{"column_names" : ["uid", "resource_id"], "false_positive_probability" : 0.05}`); - )"; - auto session = tableClient.CreateSession().GetValueSync().GetSession(); - auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_UNEQUAL(alterResult.GetStatus(), EStatus::SUCCESS); - } - - { - auto alterQuery = TStringBuilder() << - R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_uid, TYPE=BLOOM_FILTER, - FEATURES=`{"column_names" : ["uid"], "false_positive_probability" : 0.005}`); - )"; - auto session = tableClient.CreateSession().GetValueSync().GetSession(); - auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_UNEQUAL(alterResult.GetStatus(), EStatus::SUCCESS); - } - - { - auto alterQuery = TStringBuilder() << - R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=index_uid, TYPE=BLOOM_FILTER, - FEATURES=`{"column_names" : ["uid"], "false_positive_probability" : 0.01}`); - )"; - auto session = tableClient.CreateSession().GetValueSync().GetSession(); - auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); - } - - { - auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=DROP_INDEX, NAME=index_uid);"; - auto session = tableClient.CreateSession().GetValueSync().GetSession(); - auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); - } - - } - - Y_UNIT_TEST(PushdownFilter) { - static bool enableLog = false; - - auto doTest = [](std::optional<bool> viaPragma, bool pushdownPresent) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false); - - if (enableLog) { - Cerr << "Run test:" << Endl; - Cerr << "viaPragma is " << (viaPragma.has_value() ? "" : "not ") << "present."; - if (viaPragma.has_value()) { - Cerr << " Value: " << viaPragma.value(); - } - Cerr << Endl; - Cerr << "Expected result: " << pushdownPresent << Endl; - } - - TKikimrRunner kikimr(settings); - kikimr.GetTestServer().GetRuntime()->SetLogPriority(NKikimrServices::TX_COLUMNSHARD, NActors::NLog::PRI_DEBUG); - - auto client = kikimr.GetTableClient(); - - TLocalHelper(kikimr).CreateTestOlapTable(); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 10); - - TStreamExecScanQuerySettings scanSettings; - scanSettings.Explain(true); - - { - TString query = TString(R"( - --!syntax_v1 - SELECT * FROM `/Root/olapStore/olapTable` WHERE resource_id = "5"u; - )"); - - if (viaPragma.has_value() && !viaPragma.value()) { - TString pragma = TString(R"( - PRAGMA Kikimr.OptEnableOlapPushdown = "false"; - )"); - query = pragma + query; - } - - auto it = client.StreamExecuteScanQuery(query).GetValueSync(); + auto it = client.StreamExecuteScanQuery(query).GetValueSync(); UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); TString result = StreamResultToYson(it); @@ -1481,7 +697,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) { ["some prefix xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]; ["5"]; 1000005u; - ["uid_1000005"] + "uid_1000005" ]])"); } }; @@ -1586,7 +802,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) { ui32 i = 0; const ui32 rowsPack = 20; const TInstant start = Now(); - while (!csController->HasCompactions() && Now() - start < TDuration::Seconds(100)) { + while (!csController->GetCompactionFinishedCounter().Val() && Now() - start < TDuration::Seconds(100)) { WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000 + i * rowsPack, rowsPack); ++i; rowsCount += rowsPack; @@ -2064,1757 +1280,48 @@ Y_UNIT_TEST_SUITE(KqpOlap) { auto tableClient = kikimr.GetTableClient(); auto query = R"( - PRAGMA DisableAnsiLike; - SELECT id, resource_id FROM `/Root/tableWithNulls` WHERE resource_id LIKE "%5%" - )"; - auto it = tableClient.StreamExecuteScanQuery(query, scanSettings).GetValueSync(); - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - - auto result = CollectStreamResult(it); - auto ast = result.QueryStats->Getquery_ast(); - UNIT_ASSERT_C(ast.find("KqpOlapFilter") == std::string::npos, - TStringBuilder() << "Predicate pushed down. Query: " << query); - } - - Y_UNIT_TEST(PredicatePushdown_MixStrictAndNotStrict) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false); - TKikimrRunner kikimr(settings); - - TStreamExecScanQuerySettings scanSettings; - scanSettings.Explain(true); - - TLocalHelper(kikimr).CreateTestOlapTable(); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 5); - Tests::NCommon::TLoggerInit(kikimr).Initialize(); - - auto tableClient = kikimr.GetTableClient(); - auto query = R"( - PRAGMA Kikimr.OptEnablePredicateExtract = "false"; - SELECT `timestamp` FROM `/Root/olapStore/olapTable` WHERE - `resource_id` = "10001" AND Unwrap(`level`/1) = `level` AND `level` > 1; - )"; - - auto it = tableClient.StreamExecuteScanQuery(query, scanSettings).GetValueSync(); - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - - auto result = CollectStreamResult(it); - auto ast = result.QueryStats->Getquery_ast(); - UNIT_ASSERT_C(ast.find(R"(('eq '"resource_id")") != std::string::npos, - TStringBuilder() << "Predicate not pushed down. Query: " << query); - UNIT_ASSERT_C(ast.find(R"(('gt '"level")") == std::string::npos, - TStringBuilder() << "Predicate pushed down. Query: " << query); - UNIT_ASSERT_C(ast.find("NarrowMap") != std::string::npos, - TStringBuilder() << "NarrowMap was removed. Query: " << query); - } - - Y_UNIT_TEST(AggregationCountPushdown) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false) - .SetForceColumnTablesCompositeMarks(true); - TKikimrRunner kikimr(settings); - - TLocalHelper(kikimr).CreateTestOlapTable(); - auto tableClient = kikimr.GetTableClient(); - - { - WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); - } - - { - TString query = R"( - --!syntax_v1 - SELECT - COUNT(level) - FROM `/Root/olapStore/olapTable` - )"; - auto opStartTime = Now(); - auto it = tableClient.StreamExecuteScanQuery(query).GetValueSync(); - - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - Cerr << "!!!\nPushdown query execution time: " << (Now() - opStartTime).MilliSeconds() << "\n!!!\n"; - Cout << result << Endl; - CompareYson(result, R"([[23000u;]])"); - - // Check plan -#if SSA_RUNTIME_VERSION >= 2U - CheckPlanForAggregatePushdown(query, tableClient, { "TKqpOlapAgg" }, "TableFullScan"); -#else - CheckPlanForAggregatePushdown(query, tableClient, { "CombineCore" }, ""); -#endif - } - } - - Y_UNIT_TEST(AggregationCountGroupByPushdown) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false) - .SetForceColumnTablesCompositeMarks(true); - TKikimrRunner kikimr(settings); - - TLocalHelper(kikimr).CreateTestOlapTable(); - auto tableClient = kikimr.GetTableClient(); - - { - WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); - } - - { - TString query = R"( - --!syntax_v1 - PRAGMA Kikimr.OptUseFinalizeByKey; - SELECT - level, COUNT(level) - FROM `/Root/olapStore/olapTable` - GROUP BY level - ORDER BY level - )"; - auto it = tableClient.StreamExecuteScanQuery(query).GetValueSync(); - - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - Cout << result << Endl; - CompareYson(result, R"([[[0];4600u];[[1];4600u];[[2];4600u];[[3];4600u];[[4];4600u]])"); - - // Check plan -#if SSA_RUNTIME_VERSION >= 2U - CheckPlanForAggregatePushdown(query, tableClient, { "WideCombiner" }, "Aggregate-TableFullScan"); -// CheckPlanForAggregatePushdown(query, tableClient, { "TKqpOlapAgg" }, "TableFullScan"); -#else - CheckPlanForAggregatePushdown(query, tableClient, { "CombineCore" }, ""); -#endif - } - } - - Y_UNIT_TEST_TWIN(CountAllPushdown, UseLlvm) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false) - .SetForceColumnTablesCompositeMarks(true); - TKikimrRunner kikimr(settings); - - TLocalHelper(kikimr).CreateTestOlapTable(); - auto tableClient = kikimr.GetTableClient(); - - { - WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); - } - - { - TString query = fmt::format(R"( - --!syntax_v1 - PRAGMA ydb.UseLlvm = "{}"; - - SELECT - COUNT(*) - FROM `/Root/olapStore/olapTable` - )", UseLlvm ? "true" : "false"); - auto it = tableClient.StreamExecuteScanQuery(query).GetValueSync(); - - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - Cout << result << Endl; - CompareYson(result, R"([[23000u;]])"); - - // Check plan -#if SSA_RUNTIME_VERSION >= 2U - CheckPlanForAggregatePushdown(query, tableClient, { "TKqpOlapAgg" }, "TableFullScan"); -#else - CheckPlanForAggregatePushdown(query, tableClient, { "Condense" }, ""); -#endif - } - } - - Y_UNIT_TEST_TWIN(CountAllPushdownBackwardCompatibility, EnableLlvm) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false) - .SetForceColumnTablesCompositeMarks(true); - TKikimrRunner kikimr(settings); - - TLocalHelper(kikimr).CreateTestOlapTable(); - auto tableClient = kikimr.GetTableClient(); - - { - WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); - } - - { - TString query = fmt::format(R"( - --!syntax_v1 - PRAGMA Kikimr.EnableLlvm = "{}"; - - SELECT - COUNT(*) - FROM `/Root/olapStore/olapTable` - )", EnableLlvm ? "true" : "false"); - auto it = tableClient.StreamExecuteScanQuery(query).GetValueSync(); - - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - Cout << result << Endl; - CompareYson(result, R"([[23000u;]])"); - - // Check plan -#if SSA_RUNTIME_VERSION >= 2U - CheckPlanForAggregatePushdown(query, tableClient, { "TKqpOlapAgg" }, "TableFullScan"); -#else - CheckPlanForAggregatePushdown(query, tableClient, { "Condense" }, ""); -#endif - } - } - - Y_UNIT_TEST(CountAllNoPushdown) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false) - .SetForceColumnTablesCompositeMarks(true); - TKikimrRunner kikimr(settings); - - TLocalHelper(kikimr).CreateTestOlapTable(); - auto tableClient = kikimr.GetTableClient(); - - { - WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); - } - - { - auto it = tableClient.StreamExecuteScanQuery(R"( - --!syntax_v1 - SELECT - COUNT(*) - FROM `/Root/olapStore/olapTable` - )").GetValueSync(); - - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - Cout << result << Endl; - CompareYson(result, R"([[23000u;]])"); - } - } - - class TExpectedLimitChecker { - private: - std::optional<ui32> ExpectedLimit; - std::optional<ui32> ExpectedResultCount; - ui32 CheckScanData = 0; - ui32 CheckScanTask = 0; - public: - TExpectedLimitChecker& SetExpectedLimit(const ui32 value) { - ExpectedLimit = value; - ExpectedResultCount = value; - return *this; - } - TExpectedLimitChecker& SetExpectedResultCount(const ui32 value) { - ExpectedResultCount = value; - return *this; - } - bool CheckExpectedLimitOnScanData(const ui32 resultCount) { - if (!ExpectedResultCount) { - return true; - } - ++CheckScanData; - UNIT_ASSERT_LE(resultCount, *ExpectedResultCount); - return true; - } - bool CheckExpectedLimitOnScanTask(const ui32 taskLimit) { - if (!ExpectedLimit) { - return true; - } - ++CheckScanTask; - UNIT_ASSERT_EQUAL(taskLimit, *ExpectedLimit); - return true; - } - bool CheckFinish() const { - if (!ExpectedLimit) { - return true; - } - return CheckScanData && CheckScanTask; - } - }; - - class TExpectedRecordChecker { - private: - std::optional<ui32> ExpectedColumnsCount; - ui32 CheckScanData = 0; - public: - TExpectedRecordChecker& SetExpectedColumnsCount(const ui32 value) { - ExpectedColumnsCount = value; - return *this; - } - bool CheckExpectedOnScanData(const ui32 columnsCount) { - if (!ExpectedColumnsCount) { - return true; - } - ++CheckScanData; - UNIT_ASSERT_EQUAL(columnsCount, *ExpectedColumnsCount); - return true; - } - bool CheckFinish() const { - if (!ExpectedColumnsCount) { - return true; - } - return CheckScanData; - } - }; - - class TAggregationTestCase { - private: - TString Query; - TString ExpectedReply; - std::vector<std::string> ExpectedPlanOptions; - bool Pushdown = true; - std::string ExpectedReadNodeType; - TExpectedLimitChecker LimitChecker; - TExpectedRecordChecker RecordChecker; - bool UseLlvm = true; - public: - void FillExpectedAggregationGroupByPlanOptions() { -#if SSA_RUNTIME_VERSION >= 2U -// AddExpectedPlanOptions("TKqpOlapAgg"); - AddExpectedPlanOptions("WideCombiner"); -#else - AddExpectedPlanOptions("CombineCore"); -#endif - } - TString GetFixedQuery() const { - TStringBuilder queryFixed; - queryFixed << "--!syntax_v1" << Endl; - if (!Pushdown) { - queryFixed << "PRAGMA Kikimr.OptEnableOlapPushdown = \"false\";" << Endl; - } - if (!UseLlvm) { - queryFixed << "PRAGMA Kikimr.UseLlvm = \"false\";" << Endl; - } - queryFixed << "PRAGMA Kikimr.OptUseFinalizeByKey;" << Endl; - - queryFixed << Query << Endl; - Cerr << "REQUEST:\n" << queryFixed << Endl; - return queryFixed; - } - TAggregationTestCase() = default; - TExpectedLimitChecker& MutableLimitChecker() { - return LimitChecker; - } - TExpectedRecordChecker& MutableRecordChecker() { - return RecordChecker; - } - bool GetPushdown() const { - return Pushdown; - } - TAggregationTestCase& SetPushdown(const bool value = true) { - Pushdown = value; - return *this; - } - bool CheckFinished() const { - return LimitChecker.CheckFinish(); - } - - const TString& GetQuery() const { - return Query; - } - TAggregationTestCase& SetQuery(const TString& value) { - Query = value; - return *this; - } - TAggregationTestCase& SetUseLlvm(const bool value) { - UseLlvm = value; - return *this; - } - const TString& GetExpectedReply() const { - return ExpectedReply; - } - TAggregationTestCase& SetExpectedReply(const TString& value) { - ExpectedReply = value; - return *this; - } - - TAggregationTestCase& AddExpectedPlanOptions(const std::string& value) { - ExpectedPlanOptions.emplace_back(value); - return *this; - } - - const std::vector<std::string>& GetExpectedPlanOptions() const { - return ExpectedPlanOptions; - } - - TAggregationTestCase& SetExpectedReadNodeType(const std::string& value) { - ExpectedReadNodeType = value; - return *this; - } - - const std::string& GetExpectedReadNodeType() const { - return ExpectedReadNodeType; - } - }; - - void TestAggregationsBase(const std::vector<TAggregationTestCase>& cases) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false) - .SetForceColumnTablesCompositeMarks(true); - TKikimrRunner kikimr(settings); - - TLocalHelper(kikimr).CreateTestOlapTable(); - auto tableClient = kikimr.GetTableClient(); - - { - WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 11000, 3001000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 12000, 3002000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 13000, 3003000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 14000, 3004000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 20000, 2000000, 7000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); - } - - for (auto&& i : cases) { - const TString queryFixed = i.GetFixedQuery(); - { - auto it = tableClient.StreamExecuteScanQuery(queryFixed).GetValueSync(); - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - if (!i.GetExpectedReply().empty()) { - CompareYson(result, i.GetExpectedReply()); - } - } - CheckPlanForAggregatePushdown(queryFixed, tableClient, i.GetExpectedPlanOptions(), i.GetExpectedReadNodeType()); - } - } - - void TestAggregationsInternal(const std::vector<TAggregationTestCase>& cases) { - TPortManager tp; - ui16 mbusport = tp.GetPort(2134); - auto settings = Tests::TServerSettings(mbusport) - .SetDomainName("Root") - .SetUseRealThreads(false) - .SetNodeCount(2); - - Tests::TServer::TPtr server = new Tests::TServer(settings); - - auto runtime = server->GetRuntime(); - auto sender = runtime->AllocateEdgeActor(); - - InitRoot(server, sender); - Tests::NCommon::TLoggerInit(runtime).Initialize(); - - ui32 numShards = 1; - ui32 numIterations = 10; - TLocalHelper(*server).CreateTestOlapTable("olapTable", "olapStore", numShards, numShards); - const ui32 iterationPackSize = 2000; - for (ui64 i = 0; i < numIterations; ++i) { - TLocalHelper(*server).SendDataViaActorSystem("/Root/olapStore/olapTable", 0, 1000000 + i * 1000000, iterationPackSize); - } - - TAggregationTestCase currentTest; - auto captureEvents = [&](TAutoPtr<IEventHandle>& ev) -> auto { - switch (ev->GetTypeRewrite()) { - case NKqp::TKqpComputeEvents::EvScanData: - { - auto* msg = ev->Get<NKqp::TEvKqpCompute::TEvScanData>(); - Y_ABORT_UNLESS(currentTest.MutableLimitChecker().CheckExpectedLimitOnScanData(msg->ArrowBatch ? msg->ArrowBatch->num_rows() : 0)); - Y_ABORT_UNLESS(currentTest.MutableRecordChecker().CheckExpectedOnScanData(msg->ArrowBatch ? msg->ArrowBatch->num_columns() : 0)); - break; - } - case TEvDataShard::EvKqpScan: - { - auto* msg = ev->Get<TEvDataShard::TEvKqpScan>(); - Y_ABORT_UNLESS(currentTest.MutableLimitChecker().CheckExpectedLimitOnScanTask(msg->Record.GetItemsLimit())); - break; - } - } - return TTestActorRuntime::EEventAction::PROCESS; - }; - runtime->SetObserverFunc(captureEvents); - - for (auto&& i : cases) { - const TString queryFixed = i.GetFixedQuery(); - currentTest = i; - auto streamSender = runtime->AllocateEdgeActor(); - SendRequest(*runtime, streamSender, MakeStreamRequest(streamSender, queryFixed, false)); - auto ev = runtime->GrabEdgeEventRethrow<NKqp::TEvKqpCompute::TEvScanData>(streamSender, TDuration::Seconds(10)); - Y_ABORT_UNLESS(currentTest.CheckFinished()); - } - } - - void TestAggregations(const std::vector<TAggregationTestCase>& cases) { - TestAggregationsBase(cases); - TestAggregationsInternal(cases); - } - - template <typename TClient> - auto StreamExecuteQuery(const TAggregationTestCase& testCase, TClient& client) { - if constexpr (std::is_same_v<NYdb::NTable::TTableClient, TClient>) { - return client.StreamExecuteScanQuery(testCase.GetFixedQuery()).GetValueSync(); - } else { - return client.StreamExecuteQuery( - testCase.GetFixedQuery(), - NYdb::NQuery::TTxControl::BeginTx().CommitTx()).GetValueSync(); - } - } - - template <typename TClient> - void RunTestCaseWithClient(const TAggregationTestCase& testCase, TClient& client) { - auto it = StreamExecuteQuery(testCase, client); - UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - TString result = StreamResultToYson(it); - if (!testCase.GetExpectedReply().empty()) { - CompareYson(result, testCase.GetExpectedReply()); - } - } - - void TestClickBenchBase(const std::vector<TAggregationTestCase>& cases, const bool genericQuery) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false) - .SetForceColumnTablesCompositeMarks(true); - TKikimrRunner kikimr(settings); - - TClickHelper(kikimr).CreateClickBenchTable(); - auto tableClient = kikimr.GetTableClient(); - - - ui32 numIterations = 10; - const ui32 iterationPackSize = NSan::PlainOrUnderSanitizer(2000, 20); - for (ui64 i = 0; i < numIterations; ++i) { - WriteTestDataForClickBench(kikimr, "/Root/benchTable", 0, 1000000 + i * 1000000, iterationPackSize); - } - - if (!genericQuery) { - auto tableClient = kikimr.GetTableClient(); - for (auto&& i : cases) { - const TString queryFixed = i.GetFixedQuery(); - RunTestCaseWithClient(i, tableClient); - CheckPlanForAggregatePushdown(queryFixed, tableClient, i.GetExpectedPlanOptions(), i.GetExpectedReadNodeType()); - } - } else { - auto queryClient = kikimr.GetQueryClient(); - for (auto&& i : cases) { - const TString queryFixed = i.GetFixedQuery(); - RunTestCaseWithClient(i, queryClient); - CheckPlanForAggregatePushdown(queryFixed, queryClient, i.GetExpectedPlanOptions(), i.GetExpectedReadNodeType()); - } - } - } - - void TestClickBenchInternal(const std::vector<TAggregationTestCase>& cases) { - TPortManager tp; - ui16 mbusport = tp.GetPort(2134); - auto settings = Tests::TServerSettings(mbusport) - .SetDomainName("Root") - .SetUseRealThreads(false) - .SetNodeCount(2); - - Tests::TServer::TPtr server = new Tests::TServer(settings); - - auto runtime = server->GetRuntime(); - auto sender = runtime->AllocateEdgeActor(); - - InitRoot(server, sender); - - TClickHelper(*server).CreateClickBenchTable(); - - // write data - - ui32 numIterations = 10; - const ui32 iterationPackSize = NSan::PlainOrUnderSanitizer(2000, 20); - for (ui64 i = 0; i < numIterations; ++i) { - TClickHelper(*server).SendDataViaActorSystem("/Root/benchTable", 0, 1000000 + i * 1000000, - iterationPackSize); - } - - TAggregationTestCase currentTest; - auto captureEvents = [&](TAutoPtr<IEventHandle>& ev) -> auto { - switch (ev->GetTypeRewrite()) { - case NKqp::TKqpComputeEvents::EvScanData: - { - auto* msg = ev->Get<NKqp::TEvKqpCompute::TEvScanData>(); - Y_ABORT_UNLESS(currentTest.MutableLimitChecker().CheckExpectedLimitOnScanData(msg->ArrowBatch ? msg->ArrowBatch->num_rows() : 0)); - Y_ABORT_UNLESS(currentTest.MutableRecordChecker().CheckExpectedOnScanData(msg->ArrowBatch ? msg->ArrowBatch->num_columns() : 0)); - break; - } - case TEvDataShard::EvKqpScan: - { - auto* msg = ev->Get<TEvDataShard::TEvKqpScan>(); - Y_ABORT_UNLESS(currentTest.MutableLimitChecker().CheckExpectedLimitOnScanTask(msg->Record.GetItemsLimit())); - break; - } - } - return TTestActorRuntime::EEventAction::PROCESS; - }; - runtime->SetObserverFunc(captureEvents); - - // selects - - for (auto&& i : cases) { - const TString queryFixed = i.GetFixedQuery(); - currentTest = i; - auto streamSender = runtime->AllocateEdgeActor(); - SendRequest(*runtime, streamSender, MakeStreamRequest(streamSender, queryFixed, false)); - auto ev = runtime->GrabEdgeEventRethrow<NKqp::TEvKqpCompute::TEvScanData>(streamSender, TDuration::Seconds(10)); - Y_ABORT_UNLESS(currentTest.CheckFinished()); - } - } - - void TestClickBench(const std::vector<TAggregationTestCase>& cases, const bool genericQuery = false) { - TestClickBenchBase(cases, genericQuery); - if (!genericQuery) { - TestClickBenchInternal(cases); - } - } - - void TestTableWithNulls(const std::vector<TAggregationTestCase>& cases, const bool genericQuery = false) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false) - .SetForceColumnTablesCompositeMarks(true); - TKikimrRunner kikimr(settings); - - Tests::NCommon::TLoggerInit(kikimr).Initialize(); - TTableWithNullsHelper(kikimr).CreateTableWithNulls(); - auto tableClient = kikimr.GetTableClient(); - - { - WriteTestDataForTableWithNulls(kikimr, "/Root/tableWithNulls"); - } - - if (!genericQuery) { - auto tableClient = kikimr.GetTableClient(); - for (auto&& i : cases) { - RunTestCaseWithClient(i, tableClient); - CheckPlanForAggregatePushdown(i.GetFixedQuery(), tableClient, - i.GetExpectedPlanOptions(), i.GetExpectedReadNodeType()); - } - } else { - auto queryClient = kikimr.GetQueryClient(); - for (auto&& i : cases) { - RunTestCaseWithClient(i, queryClient); - CheckPlanForAggregatePushdown(i.GetFixedQuery(), queryClient, - i.GetExpectedPlanOptions(), i.GetExpectedReadNodeType()); - } - } - } - - Y_UNIT_TEST(Filter_NotAllUsedFieldsInResultSet) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT id, resource_id FROM `/Root/tableWithNulls` - WHERE - level = 5; - )") - .SetExpectedReply("[[5;#]]") - .AddExpectedPlanOptions("KqpOlapFilter"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_ResultDistinctCountRI_GroupByL) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, COUNT(DISTINCT resource_id) - FROM `/Root/olapStore/olapTable` - GROUP BY level - ORDER BY level - )") - .SetExpectedReply("[[[0];4600u];[[1];4600u];[[2];4600u];[[3];4600u];[[4];4600u]]") - ; - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_ResultCountAll_FilterL) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - COUNT(*) - FROM `/Root/olapStore/olapTable` - WHERE level = 2 - )") - .SetExpectedReply("[[4600u;]]") - .AddExpectedPlanOptions("KqpOlapFilter") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg") - .MutableLimitChecker().SetExpectedResultCount(1) -#else - .AddExpectedPlanOptions("Condense") -#endif - ; - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_ResultCountL_FilterL) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - COUNT(level) - FROM `/Root/olapStore/olapTable` - WHERE level = 2 - )") - .SetExpectedReply("[[4600u;]]") - .AddExpectedPlanOptions("KqpOlapFilter") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg") - .MutableLimitChecker().SetExpectedResultCount(1) -#else - .AddExpectedPlanOptions("CombineCore") -#endif - ; - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_ResultCountT_FilterL) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - COUNT(timestamp) - FROM `/Root/olapStore/olapTable` - WHERE level = 2 - )") - .SetExpectedReply("[[4600u;]]") - .AddExpectedPlanOptions("KqpOlapFilter") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg") - .MutableLimitChecker().SetExpectedResultCount(1) -#else - .AddExpectedPlanOptions("CombineCore") - .AddExpectedPlanOptions("KqpOlapFilter") -#endif - ; - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_ResultTL_FilterL_Limit2) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - timestamp, level - FROM `/Root/olapStore/olapTable` - WHERE level = 2 - LIMIT 2 - )") - .AddExpectedPlanOptions("KqpOlapFilter") - .MutableLimitChecker().SetExpectedLimit(2); - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_ResultTL_FilterL_OrderT_Limit2) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - timestamp, level - FROM `/Root/olapStore/olapTable` - WHERE level = 2 - ORDER BY timestamp - LIMIT 2 - )") - .AddExpectedPlanOptions("KqpOlapFilter") - .MutableLimitChecker().SetExpectedLimit(2); - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_ResultT_FilterL_Limit2) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - timestamp - FROM `/Root/olapStore/olapTable` - WHERE level = 2 - LIMIT 2 - )") - .AddExpectedPlanOptions("KqpOlapFilter") - .AddExpectedPlanOptions("KqpOlapExtractMembers") - .MutableLimitChecker().SetExpectedLimit(2); - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_ResultT_FilterL_OrderT_Limit2) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - timestamp - FROM `/Root/olapStore/olapTable` - WHERE level = 2 - ORDER BY timestamp - LIMIT 2 - )") - .AddExpectedPlanOptions("KqpOlapFilter") - .AddExpectedPlanOptions("KqpOlapExtractMembers") - .MutableLimitChecker().SetExpectedLimit(2); - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_ResultL_FilterL_OrderL_Limit2) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - timestamp, level - FROM `/Root/olapStore/olapTable` - WHERE level > 1 - ORDER BY level - LIMIT 2 - )") - .AddExpectedPlanOptions("KqpOlapFilter"); - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_ResultCountExpr) { - auto g = NColumnShard::TLimits::MaxBlobSizeGuard(10000); - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - COUNT(level + 2) - FROM `/Root/olapStore/olapTable` - )") - .SetExpectedReply("[[23000u;]]") - .AddExpectedPlanOptions("Condense1"); - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Count_Null) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - COUNT(level) - FROM `/Root/tableWithNulls` - WHERE id > 5; - )") - .SetExpectedReply("[[0u]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Count_NullMix) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - COUNT(level) - FROM `/Root/tableWithNulls`; - )") - .SetExpectedReply("[[5u]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Count_GroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, COUNT(level) - FROM `/Root/tableWithNulls` - WHERE id BETWEEN 4 AND 5 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[4;1u];[5;1u]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Count_NullGroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, COUNT(level) - FROM `/Root/tableWithNulls` - WHERE id BETWEEN 6 AND 7 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[6;0u];[7;0u]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Count_NullMixGroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, COUNT(level) - FROM `/Root/tableWithNulls` - WHERE id > 4 AND id < 7 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[5;1u];[6;0u]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Count_GroupByNull) { - // Wait for KIKIMR-16940 fix - return; - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, COUNT(id), COUNT(level), COUNT(*) - FROM `/Root/tableWithNulls` - WHERE id > 5 - GROUP BY level - ORDER BY level; - )") - .SetExpectedReply("[[#;5u;0u;5u]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Count_GroupByNullMix) { - // Wait for KIKIMR-16940 fix - return; - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, COUNT(id), COUNT(level), COUNT(*) - FROM `/Root/tableWithNulls` - WHERE id >= 5 - GROUP BY level - ORDER BY level; - )") - .SetExpectedReply("[[#;5u;0u;5u];[[5];1u;1u;1u]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_NoPushdownOnDisabledEmitAggApply) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - PRAGMA DisableEmitAggApply; - SELECT - COUNT(level) - FROM `/Root/olapStore/olapTable` - )") - .SetExpectedReply("[[23000u;]]") - .AddExpectedPlanOptions("Condense1"); - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(AggregationAndFilterPushdownOnDiffCols) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - COUNT(`timestamp`) - FROM `/Root/olapStore/olapTable` - WHERE level = 2 - )") - .SetExpectedReply("[[4600u;]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg") -#else - .AddExpectedPlanOptions("CombineCore") -#endif - .AddExpectedPlanOptions("KqpOlapFilter"); - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Avg) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - AVG(level), MIN(level) - FROM `/Root/olapStore/olapTable` - )") - .SetExpectedReply("[[[2.];[0]]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Avg_Null) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - AVG(level) - FROM `/Root/tableWithNulls` - WHERE id > 5; - )") - .SetExpectedReply("[[#]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Avg_NullMix) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - AVG(level) - FROM `/Root/tableWithNulls`; - )") - .SetExpectedReply("[[[3.]]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Avg_GroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, AVG(level) - FROM `/Root/tableWithNulls` - WHERE id BETWEEN 4 AND 5 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[4;[4.]];[5;[5.]]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Avg_NullGroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, AVG(level) - FROM `/Root/tableWithNulls` - WHERE id BETWEEN 6 AND 7 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[6;#];[7;#]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Avg_NullMixGroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, AVG(level) - FROM `/Root/tableWithNulls` - WHERE id > 4 AND id < 7 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[5;[5.]];[6;#]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Avg_GroupByNull) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, AVG(id), AVG(level) - FROM `/Root/tableWithNulls` - WHERE id > 5 - GROUP BY level - ORDER BY level; - )") - .SetExpectedReply("[[#;8.;#]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Avg_GroupByNullMix) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, AVG(id), AVG(level) - FROM `/Root/tableWithNulls` - WHERE id >= 5 - GROUP BY level - ORDER BY level; - )") - .SetExpectedReply("[[#;8.;#];[[5];5.;[5.]]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Sum) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - SUM(level) - FROM `/Root/olapStore/olapTable` - )") - .SetExpectedReply("[[[46000;]]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Sum_Null) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - SUM(level) - FROM `/Root/tableWithNulls` - WHERE id > 5; - )") - .SetExpectedReply("[[#]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Sum_NullMix) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - SUM(level) - FROM `/Root/tableWithNulls`; - )") - .SetExpectedReply("[[[15]]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Sum_GroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, SUM(level) - FROM `/Root/tableWithNulls` - WHERE id BETWEEN 4 AND 5 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[4;[4]];[5;[5]]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Sum_NullGroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, SUM(level) - FROM `/Root/tableWithNulls` - WHERE id BETWEEN 6 AND 7 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[6;#];[7;#]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Sum_NullMixGroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, SUM(level) - FROM `/Root/tableWithNulls` - WHERE id > 4 AND id < 7 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[5;[5]];[6;#]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Sum_GroupByNull) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, SUM(id), SUM(level) - FROM `/Root/tableWithNulls` - WHERE id > 5 - GROUP BY level - ORDER BY level; - )") - .SetExpectedReply("[[#;40;#]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Sum_GroupByNullMix) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, SUM(id), SUM(level) - FROM `/Root/tableWithNulls` - WHERE id >= 5 - GROUP BY level - ORDER BY level; - )") - .SetExpectedReply("[[#;40;#];[[5];5;[5]]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_SumL_GroupL_OrderL) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, SUM(level) - FROM `/Root/olapStore/olapTable` - GROUP BY level - ORDER BY level - )") - .SetExpectedReply("[[[0];[0]];[[1];[4600]];[[2];[9200]];[[3];[13800]];[[4];[18400]]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_MinL) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - MIN(level) - FROM `/Root/olapStore/olapTable` - )") - .SetExpectedReply("[[[0]]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_MaxL) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - MAX(level) - FROM `/Root/olapStore/olapTable` - )") - .SetExpectedReply("[[[4]]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_MinR_GroupL_OrderL) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, MIN(resource_id) - FROM `/Root/olapStore/olapTable` - GROUP BY level - ORDER BY level - )") - .SetExpectedReply("[[[0];[\"10000\"]];[[1];[\"10001\"]];[[2];[\"10002\"]];[[3];[\"10003\"]];[[4];[\"10004\"]]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_MaxR_GroupL_OrderL) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, MAX(resource_id) - FROM `/Root/olapStore/olapTable` - GROUP BY level - ORDER BY level - )") - .SetExpectedReply("[[[0];[\"40995\"]];[[1];[\"40996\"]];[[2];[\"40997\"]];[[3];[\"40998\"]];[[4];[\"40999\"]]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_ProjectionOrder) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - resource_id, level, count(*) as c - FROM `/Root/olapStore/olapTable` - GROUP BY resource_id, level - ORDER BY c, resource_id DESC LIMIT 3 - )") - .SetExpectedReply("[[[\"40999\"];[4];1u];[[\"40998\"];[3];1u];[[\"40997\"];[2];1u]]") - .SetExpectedReadNodeType("Aggregate-TableFullScan"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - TestAggregations({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Some) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT SOME(level) FROM `/Root/tableWithNulls` WHERE id=1 - )") - .SetExpectedReply("[[[1]]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Some_Null) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT SOME(level) FROM `/Root/tableWithNulls` WHERE id > 5 - )") - .SetExpectedReply("[[#]]") -#if SSA_RUNTIME_VERSION >= 2U - .AddExpectedPlanOptions("TKqpOlapAgg"); -#else - .AddExpectedPlanOptions("CombineCore"); -#endif - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Some_GroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, SOME(level) - FROM `/Root/tableWithNulls` - WHERE id BETWEEN 4 AND 5 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[4;[4]];[5;[5]]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Some_NullGroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, SOME(level) - FROM `/Root/tableWithNulls` - WHERE id BETWEEN 6 AND 7 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[6;#];[7;#]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Some_NullMixGroupBy) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, SOME(level) - FROM `/Root/tableWithNulls` - WHERE id > 4 AND id < 7 - GROUP BY id - ORDER BY id; - )") - .SetExpectedReply("[[5;[5]];[6;#]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Some_GroupByNullMix) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, SOME(id), SOME(level) - FROM `/Root/tableWithNulls` - WHERE id BETWEEN 5 AND 6 - GROUP BY level - ORDER BY level; - )") - .SetExpectedReply("[[#;6;#];[[5];5;[5]]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Aggregation_Some_GroupByNull) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, SOME(id), SOME(level) - FROM `/Root/tableWithNulls` - WHERE id = 6 - GROUP BY level - ORDER BY level; - )") - .SetExpectedReply("[[#;6;#]]"); - testCase.FillExpectedAggregationGroupByPlanOptions(); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(ClickBenchSmoke) { - TAggregationTestCase q7; - q7.SetQuery(R"( - SELECT - AdvEngineID, COUNT(*) as c - FROM `/Root/benchTable` - WHERE AdvEngineID != 0 - GROUP BY AdvEngineID - ORDER BY c DESC - )") - //.SetExpectedReply("[[[\"40999\"];[4];1u];[[\"40998\"];[3];1u];[[\"40997\"];[2];1u]]") - // Should be fixed in https://st.yandex-team.ru/KIKIMR-17009 - // .SetExpectedReadNodeType("TableFullScan"); - .SetExpectedReadNodeType("Aggregate-TableFullScan"); - q7.FillExpectedAggregationGroupByPlanOptions(); - - TAggregationTestCase q9; - q9.SetQuery(R"( - SELECT - RegionID, SUM(AdvEngineID), COUNT(*) AS c, avg(ResolutionWidth), COUNT(DISTINCT UserID) - FROM `/Root/benchTable` - GROUP BY RegionID - ORDER BY c DESC - LIMIT 10 - )") - //.SetExpectedReply("[[[\"40999\"];[4];1u];[[\"40998\"];[3];1u];[[\"40997\"];[2];1u]]") - // Should be fixed in https://st.yandex-team.ru/KIKIMR-17009 - // .SetExpectedReadNodeType("TableFullScan"); - .SetExpectedReadNodeType("Aggregate-TableFullScan"); - q9.FillExpectedAggregationGroupByPlanOptions(); - - TAggregationTestCase q12; - q12.SetQuery(R"( - SELECT - SearchPhrase, count(*) AS c - FROM `/Root/benchTable` - WHERE SearchPhrase != '' - GROUP BY SearchPhrase - ORDER BY c DESC - LIMIT 10; - )") - //.SetExpectedReply("[[[\"40999\"];[4];1u];[[\"40998\"];[3];1u];[[\"40997\"];[2];1u]]") - // Should be fixed in https://st.yandex-team.ru/KIKIMR-17009 - // .SetExpectedReadNodeType("TableFullScan"); - .SetExpectedReadNodeType("Aggregate-TableFullScan"); - q12.FillExpectedAggregationGroupByPlanOptions(); - - TAggregationTestCase q14; - q14.SetQuery(R"( - SELECT - SearchEngineID, SearchPhrase, count(*) AS c - FROM `/Root/benchTable` - WHERE SearchPhrase != '' - GROUP BY SearchEngineID, SearchPhrase - ORDER BY c DESC - LIMIT 10; - )") - //.SetExpectedReply("[[[\"40999\"];[4];1u];[[\"40998\"];[3];1u];[[\"40997\"];[2];1u]]") - // Should be fixed in https://st.yandex-team.ru/KIKIMR-17009 - // .SetExpectedReadNodeType("TableFullScan"); - .SetExpectedReadNodeType("Aggregate-TableFullScan"); - q14.FillExpectedAggregationGroupByPlanOptions(); - - TAggregationTestCase q22; - q22.SetQuery(R"( - SELECT - SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) - FROM `/Root/benchTable` - WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' - GROUP BY SearchPhrase - ORDER BY c DESC - LIMIT 10; - )") - .AddExpectedPlanOptions("KqpOlapFilter") - .SetExpectedReadNodeType("Aggregate-TableFullScan"); - q22.FillExpectedAggregationGroupByPlanOptions(); - - TAggregationTestCase q39; - q39.SetQuery(R"( - SELECT TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst, COUNT(*) AS PageViews - FROM `/Root/benchTable` - WHERE CounterID = 62 AND EventDate >= Date('2013-07-01') AND EventDate <= Date('2013-07-31') AND IsRefresh == 0 - GROUP BY - TraficSourceID, SearchEngineID, AdvEngineID, IF (SearchEngineID = 0 AND AdvEngineID = 0, Referer, '') AS Src, - URL AS Dst - ORDER BY PageViews DESC - LIMIT 10; - )") - .AddExpectedPlanOptions("KqpOlapFilter") - .SetExpectedReadNodeType("Aggregate-Filter-TableFullScan"); - q39.FillExpectedAggregationGroupByPlanOptions(); - - std::vector<TAggregationTestCase> cases = {q7, q9, q12, q14, q22, q39}; - for (auto&& c : cases) { - c.SetUseLlvm(NSan::PlainOrUnderSanitizer(true, false)); - } - - TestClickBench(cases); - } - - Y_UNIT_TEST(StatsSysView) { - auto settings = TKikimrSettings() - .SetWithSampleTables(false); - TKikimrRunner kikimr(settings); - auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); - static ui32 numKinds = 2; - - TLocalHelper(kikimr).CreateTestOlapTable(); - for (ui64 i = 0; i < 100; ++i) { - WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000 + i*10000, 1000); - } - - auto tableClient = kikimr.GetTableClient(); - auto selectQuery = TString(R"( - SELECT PathId, Kind, TabletId, Sum(Rows) as Rows - FROM `/Root/olapStore/.sys/store_primary_index_stats` - GROUP BY PathId, Kind, TabletId - ORDER BY TabletId, Kind, PathId - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); + PRAGMA DisableAnsiLike; + SELECT id, resource_id FROM `/Root/tableWithNulls` WHERE resource_id LIKE "%5%" + )"; + auto it = tableClient.StreamExecuteScanQuery(query, scanSettings).GetValueSync(); + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - UNIT_ASSERT_VALUES_EQUAL(rows.size(), numKinds*3); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[0].at("Kind")), "INSERTED"); - UNIT_ASSERT_GE(GetUint64(rows[0].at("TabletId")), 72075186224037888ull); - UNIT_ASSERT_GE(GetUint64(rows[2].at("TabletId")), 72075186224037889ull); - UNIT_ASSERT_GE(GetUint64(rows[4].at("TabletId")), 72075186224037890ull); - UNIT_ASSERT_GE(GetUint64(rows[1].at("TabletId")), GetUint64(rows[0].at("TabletId"))); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[2].at("Kind")), "INSERTED"); - UNIT_ASSERT_GE(GetUint64(rows[2].at("TabletId")), GetUint64(rows[1].at("TabletId"))); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[3].at("PathId")), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[3].at("Kind")), "SPLIT_COMPACTED"); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[3].at("TabletId")), GetUint64(rows[2].at("TabletId"))); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[4].at("Kind")), "INSERTED"); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[4].at("TabletId")), GetUint64(rows[5].at("TabletId"))); - UNIT_ASSERT_GE( - GetUint64(rows[0].at("Rows")) + GetUint64(rows[1].at("Rows")) + GetUint64(rows[2].at("Rows")) + - GetUint64(rows[3].at("Rows")) + GetUint64(rows[4].at("Rows")) + GetUint64(rows[5].at("Rows")), - 0.3*0.9*100*1000); // >= 90% of 100K inserted rows + auto result = CollectStreamResult(it); + auto ast = result.QueryStats->Getquery_ast(); + UNIT_ASSERT_C(ast.find("KqpOlapFilter") == std::string::npos, + TStringBuilder() << "Predicate pushed down. Query: " << query); } - Y_UNIT_TEST(StatsSysViewTable) { + Y_UNIT_TEST(PredicatePushdown_MixStrictAndNotStrict) { auto settings = TKikimrSettings() .SetWithSampleTables(false); TKikimrRunner kikimr(settings); - auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); - static ui32 numKinds = 5; - - TLocalHelper(kikimr).CreateTestOlapTable("olapTable_1"); - TLocalHelper(kikimr).CreateTestOlapTable("olapTable_2"); - for (ui64 i = 0; i < 10; ++i) { - WriteTestData(kikimr, "/Root/olapStore/olapTable_1", 0, 1000000 + i*10000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable_2", 0, 1000000 + i*10000, 2000); - } - auto tableClient = kikimr.GetTableClient(); - { - auto selectQuery = TString(R"( - SELECT PathId, Kind, TabletId - FROM `/Root/olapStore/olapTable_1/.sys/primary_index_stats` - GROUP BY PathId, TabletId, Kind - ORDER BY PathId, TabletId, Kind - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - - UNIT_ASSERT_GT(rows.size(), 1*numKinds); - UNIT_ASSERT_LE(rows.size(), 3*numKinds); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows.front().at("PathId")), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows.back().at("PathId")), 3ull); - } - { - auto selectQuery = TString(R"( - SELECT PathId, Kind, TabletId - FROM `/Root/olapStore/olapTable_2/.sys/primary_index_stats` - GROUP BY PathId, TabletId, Kind - ORDER BY PathId, TabletId, Kind - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - - UNIT_ASSERT_GT(rows.size(), 1*numKinds); - UNIT_ASSERT_LE(rows.size(), 3*numKinds); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows.front().at("PathId")), 4ull); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows.back().at("PathId")), 4ull); - } - { - auto selectQuery = TString(R"( - SELECT * - FROM `/Root/olapStore/olapTable_1/.sys/primary_index_stats` - WHERE - PathId > UInt64("3") - ORDER BY PathId, Kind, TabletId - )"); + TStreamExecScanQuerySettings scanSettings; + scanSettings.Explain(true); - auto rows = ExecuteScanQuery(tableClient, selectQuery); + TLocalHelper(kikimr).CreateTestOlapTable(); + WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 5); + Tests::NCommon::TLoggerInit(kikimr).Initialize(); - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 0); - } - } + auto tableClient = kikimr.GetTableClient(); + auto query = R"( + PRAGMA Kikimr.OptEnablePredicateExtract = "false"; + SELECT `timestamp` FROM `/Root/olapStore/olapTable` WHERE + `resource_id` = "10001" AND Unwrap(`level`/1) = `level` AND `level` > 1; + )"; - Y_UNIT_TEST(StatsSysViewEnumStringBytes) { - ui64 rawBytesPK1; - ui64 bytesPK1; - auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); - { - auto settings = TKikimrSettings() - .SetWithSampleTables(false); - TKikimrRunner kikimr(settings); - Tests::NCommon::TLoggerInit(kikimr).Initialize(); - TTypedLocalHelper helper("", kikimr, "olapTable", "olapStore12"); - helper.CreateTestOlapTable(); - helper.FillPKOnly(0, 800000); - helper.GetVolumes(rawBytesPK1, bytesPK1, false); - } + auto it = tableClient.StreamExecuteScanQuery(query, scanSettings).GetValueSync(); + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); - ui64 rawBytesUnpack1PK = 0; - ui64 bytesUnpack1PK = 0; - ui64 rawBytesPackAndUnpack2PK; - ui64 bytesPackAndUnpack2PK; - const ui32 rowsCount = 800000; - const ui32 groupsCount = 512; - { - auto settings = TKikimrSettings() - .SetWithSampleTables(false); - TKikimrRunner kikimr(settings); - Tests::NCommon::TLoggerInit(kikimr).Initialize(); - TTypedLocalHelper helper("Utf8", kikimr); - helper.CreateTestOlapTable(); - NArrow::NConstruction::TStringPoolFiller sPool(groupsCount, 52); - helper.FillTable(sPool, 0, rowsCount); - helper.PrintCount(); - { - auto d = helper.GetDistribution(); - Y_ABORT_UNLESS(d.GetCount() == rowsCount); - Y_ABORT_UNLESS(d.GetGroupsCount() == groupsCount); - Y_ABORT_UNLESS(d.GetMaxCount() - d.GetMinCount() <= 1); - } - helper.GetVolumes(rawBytesUnpack1PK, bytesUnpack1PK, false); - Sleep(TDuration::Seconds(5)); - auto tableClient = kikimr.GetTableClient(); - { - auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `ENCODING.DICTIONARY.ENABLED`=`true`);"; - auto session = tableClient.CreateSession().GetValueSync().GetSession(); - auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); - } - { - auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field1, `ENCODING.DICTIONARY.ENABLED`=`true`);"; - auto session = tableClient.CreateSession().GetValueSync().GetSession(); - auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SCHEME_ERROR, alterResult.GetIssues().ToString()); - } - { - auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `ENCODING.DICTIONARY.ENABLED1`=`true`);"; - auto session = tableClient.CreateSession().GetValueSync().GetSession(); - auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::GENERIC_ERROR, alterResult.GetIssues().ToString()); - } - Sleep(TDuration::Seconds(5)); - helper.FillTable(sPool, 1, rowsCount); - Sleep(TDuration::Seconds(5)); - { - helper.GetVolumes(rawBytesPackAndUnpack2PK, bytesPackAndUnpack2PK, false); - helper.PrintCount(); - { - auto d = helper.GetDistribution(); - Cerr << d.DebugString() << Endl; - Y_ABORT_UNLESS(d.GetCount() == 2 * rowsCount); - Y_ABORT_UNLESS(d.GetGroupsCount() == groupsCount); - Y_ABORT_UNLESS(d.GetMaxCount() - d.GetMinCount() <= 2); - } - } - { - auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `SERIALIZER.CLASS_NAME`=`ARROW_SERIALIZER`, `COMPRESSION.TYPE`=`zstd`);"; - auto session = tableClient.CreateSession().GetValueSync().GetSession(); - auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); - } - } - const ui64 rawBytesUnpack = rawBytesUnpack1PK - rawBytesPK1; - const ui64 bytesUnpack = bytesUnpack1PK - bytesPK1; - const ui64 rawBytesPack = rawBytesPackAndUnpack2PK - rawBytesUnpack1PK - rawBytesPK1; - const ui64 bytesPack = bytesPackAndUnpack2PK - bytesUnpack1PK - bytesPK1; - TStringBuilder result; - result << "unpacked data: " << rawBytesUnpack << " / " << bytesUnpack << Endl; - result << "packed data: " << rawBytesPack << " / " << bytesPack << Endl; - result << "frq_diff: " << 1.0 * bytesPack / bytesUnpack << Endl; - result << "frq_compression: " << 1.0 * bytesPack / rawBytesPack << Endl; - result << "pk_size : " << rawBytesPK1 << " / " << bytesPK1 << Endl; - Cerr << result << Endl; - Y_ABORT_UNLESS(bytesPack / bytesUnpack < 0.1); + auto result = CollectStreamResult(it); + auto ast = result.QueryStats->Getquery_ast(); + UNIT_ASSERT_C(ast.find(R"(('eq '"resource_id")") != std::string::npos, + TStringBuilder() << "Predicate not pushed down. Query: " << query); + UNIT_ASSERT_C(ast.find(R"(('gt '"level")") == std::string::npos, + TStringBuilder() << "Predicate pushed down. Query: " << query); + UNIT_ASSERT_C(ast.find("NarrowMap") != std::string::npos, + TStringBuilder() << "NarrowMap was removed. Query: " << query); } Y_UNIT_TEST(SelectLimit1ManyShards) { @@ -3837,7 +1344,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) { const ui32 numIterations = 10; TLocalHelper(*server).CreateTestOlapTable("selectTable", "selectStore", numShards, numShards); for(ui64 i = 0; i < numIterations; ++i) { - TLocalHelper(*server).SendDataViaActorSystem("/Root/selectStore/selectTable", 0, 1000000 + i*1000000, 2000); + TLocalHelper(*server).SendDataViaActorSystem("/Root/selectStore/selectTable", 0, 1000000 + i * 1000000, 2000); } ui64 result = 0; @@ -3899,7 +1406,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) { runtime->SetObserverFunc(captureEvents); auto streamSender = runtime->AllocateEdgeActor(); - SendRequest(*runtime, streamSender, MakeStreamRequest(streamSender, "SELECT * FROM `/Root/selectStore/selectTable` LIMIT 1;", false)); + NDataShard::NKqpHelpers::SendRequest(*runtime, streamSender, NDataShard::NKqpHelpers::MakeStreamRequest(streamSender, "SELECT * FROM `/Root/selectStore/selectTable` LIMIT 1;", false)); auto ev = runtime->GrabEdgeEventRethrow<NKqp::TEvKqp::TEvQueryResponse>(streamSender); UNIT_ASSERT_VALUES_EQUAL(result, 1); } @@ -3965,7 +1472,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) { runtime->SetObserverFunc(captureEvents); auto streamSender = runtime->AllocateEdgeActor(); - SendRequest(*runtime, streamSender, MakeStreamRequest(streamSender, "SELECT COUNT(*) FROM `/Root/largeOlapStore/largeOlapTable`;", false)); + NDataShard::NKqpHelpers::SendRequest(*runtime, streamSender, NDataShard::NKqpHelpers::MakeStreamRequest(streamSender, "SELECT COUNT(*) FROM `/Root/largeOlapStore/largeOlapTable`;", false)); runtime->GrabEdgeEventRethrow<NKqp::TEvKqp::TEvQueryResponse>(streamSender); UNIT_ASSERT_VALUES_EQUAL(result, insertRows); } @@ -4028,7 +1535,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) { runtime->SetObserverFunc(captureEvents); auto streamSender = runtime->AllocateEdgeActor(); - SendRequest(*runtime, streamSender, MakeStreamRequest(streamSender, "SELECT * FROM `/Root/largeOlapStore/largeOlapTable` where resource_id = Utf8(\"notfound\");", false)); + NDataShard::NKqpHelpers::SendRequest(*runtime, streamSender, NDataShard::NKqpHelpers::MakeStreamRequest(streamSender, "SELECT * FROM `/Root/largeOlapStore/largeOlapTable` where resource_id = Utf8(\"notfound\");", false)); auto ev = runtime->GrabEdgeEventRethrow<NKqp::TEvKqp::TEvQueryResponse>(streamSender); UNIT_ASSERT(hasResult); } @@ -4103,10 +1610,12 @@ Y_UNIT_TEST_SUITE(KqpOlap) { return TTestActorRuntime::EEventAction::PROCESS; } else { if (prevIsFinished) { - Cerr << (TStringBuilder() << "-- EvScanData from " << ev->Sender << ": hijack event"); + Cerr << (TStringBuilder() << "-- EvScanData from " << ev->Sender << ": hijack event" << Endl); Cerr.Flush(); - auto resp = std::make_unique<NKqp::TEvKqpCompute::TEvScanError>(msg->Generation, 0); - runtime->Send(new IEventHandle(ev->Recipient, ev->Sender, resp.release())); + for (auto&& i : csController->GetShardActualIds()) { + runtime->Send(MakePipePeNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward( + new TEvents::TEvPoisonPill(), i, false)); + } } else { prevIsFinished = msg->Finished; } @@ -4123,384 +1632,11 @@ Y_UNIT_TEST_SUITE(KqpOlap) { runtime->SetObserverFunc(captureEvents); auto streamSender = runtime->AllocateEdgeActor(); - SendRequest(*runtime, streamSender, MakeStreamRequest(streamSender, "SELECT COUNT(*) FROM `/Root/largeOlapStore/largeOlapTable`;", false)); + NDataShard::NKqpHelpers::SendRequest(*runtime, streamSender, NDataShard::NKqpHelpers::MakeStreamRequest(streamSender, "SELECT COUNT(*) FROM `/Root/largeOlapStore/largeOlapTable`;", false)); auto ev = runtime->GrabEdgeEventRethrow<NKqp::TEvKqp::TEvQueryResponse>(streamSender); UNIT_ASSERT_VALUES_EQUAL(result, insertRows); } - Y_UNIT_TEST(StatsSysViewColumns) { - auto settings = TKikimrSettings().SetWithSampleTables(false); - auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); - TKikimrRunner kikimr(settings); - - TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable(); - for (ui64 i = 0; i < 10; ++i) { - WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000 + i*10000, 2000); - } - - auto tableClient = kikimr.GetTableClient(); - - { - auto selectQuery = TString(R"( - SELECT TabletId, PathId, Kind - FROM `/Root/olapStore/.sys/store_primary_index_stats` - ORDER BY PathId, Kind, TabletId - LIMIT 4; - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 4); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[0].at("Kind")), "INSERTED"); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[3].at("PathId")), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[3].at("Kind")), "INSERTED"); - } - { - auto selectQuery = TString(R"( - SELECT SUM(BlobRangeSize) as Bytes, SUM(Rows) as Rows, PathId, TabletId - FROM `/Root/olapStore/.sys/store_primary_index_stats` - GROUP BY PathId, TabletId - ORDER BY Bytes - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3); - UNIT_ASSERT_LE(GetUint64(rows[0].at("Bytes")), GetUint64(rows[1].at("Bytes"))); - } - { - auto selectQuery = TString(R"( - SELECT Sum(Rows) as Rows, Kind, Sum(RawBytes) as RawBytes, Sum(Rows) as Rows2, Sum(Rows) as Rows3, PathId - FROM `/Root/olapStore/.sys/store_primary_index_stats` - GROUP BY Kind, PathId - ORDER BY PathId, Kind, Rows3 - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 2); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("Rows2")), GetUint64(rows[0].at("Rows3"))); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[1].at("Rows")), GetUint64(rows[1].at("Rows3"))); - } - } - - Y_UNIT_TEST(StatsSysViewRanges) { - auto settings = TKikimrSettings().SetWithSampleTables(false); - TKikimrRunner kikimr(settings); - auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); - csController->SetCompactionControl(NYDBTest::EOptimizerCompactionWeightControl::Disable); - Tests::NCommon::TLoggerInit(kikimr).Initialize(); - - TLocalHelper(kikimr).CreateTestOlapTable("olapTable_1"); - TLocalHelper(kikimr).CreateTestOlapTable("olapTable_2"); - TLocalHelper(kikimr).CreateTestOlapTable("olapTable_3"); - - for (ui64 i = 0; i < 10; ++i) { - WriteTestData(kikimr, "/Root/olapStore/olapTable_1", 0, 1000000 + i*10000, 2000); - WriteTestData(kikimr, "/Root/olapStore/olapTable_2", 0, 1000000 + i*10000, 3000); - WriteTestData(kikimr, "/Root/olapStore/olapTable_3", 0, 1000000 + i*10000, 5000); - } - - auto tableClient = kikimr.GetTableClient(); - - { - auto selectQuery = TString(R"( - SELECT * - FROM `/Root/olapStore/.sys/store_primary_index_stats` - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - } - - { - auto selectQuery = TString(R"( - SELECT PathId, Kind, TabletId - FROM `/Root/olapStore/.sys/store_primary_index_stats` - WHERE - PathId == UInt64("3") AND Activity = true - GROUP BY TabletId, PathId, Kind - ORDER BY TabletId, Kind - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[0].at("Kind")), "INSERTED"); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[1].at("PathId")), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[2].at("Kind")), "INSERTED"); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[2].at("PathId")), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[1].at("Kind")), "INSERTED"); - } - - { - auto selectQuery = TString(R"( - SELECT PathId, Kind, TabletId - FROM `/Root/olapStore/.sys/store_primary_index_stats` - GROUP BY PathId, Kind, TabletId - ORDER BY PathId DESC, Kind DESC, TabletId DESC - ; - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - - ui32 numExpected = 3*3; - UNIT_ASSERT_VALUES_EQUAL(rows.size(), numExpected); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 5ull); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[0].at("Kind")), "INSERTED"); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[numExpected-1].at("PathId")), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[numExpected-1].at("Kind")), "INSERTED"); - } - - { - auto selectQuery = TString(R"( - SELECT PathId, Kind, TabletId - FROM `/Root/olapStore/.sys/store_primary_index_stats` - WHERE - PathId > UInt64("0") AND PathId < UInt32("4") - OR PathId > UInt64("4") AND PathId <= UInt64("5") - GROUP BY PathId, Kind, TabletId - ORDER BY - PathId DESC, Kind DESC, TabletId DESC - ; - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - - ui32 numExpected = 2*3; - UNIT_ASSERT_VALUES_EQUAL(rows.size(), numExpected); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 5ull); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[0].at("Kind")), "INSERTED"); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[numExpected-1].at("PathId")), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[numExpected-1].at("Kind")), "INSERTED"); - } - } - - Y_UNIT_TEST(StatsSysViewFilter) { - auto settings = TKikimrSettings().SetWithSampleTables(false); - TKikimrRunner kikimr(settings); - auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); - - TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable(); - for (ui64 i = 0; i < 10; ++i) { - WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000 + i*10000, 2000); - } - - auto tableClient = kikimr.GetTableClient(); - - { - auto selectQuery = TString(R"( - SELECT PathId, Kind, TabletId, Sum(BlobRangeSize) as Bytes - FROM `/Root/olapStore/.sys/store_primary_index_stats` - GROUP BY PathId, Kind, TabletId - ORDER BY PathId, Kind, TabletId; - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - - UNIT_ASSERT_GE(rows.size(), 3); - } - - { - auto selectQuery = TString(R"( - SELECT PathId, Kind, TabletId, Sum(BlobRangeSize) as Bytes - FROM `/Root/olapStore/.sys/store_primary_index_stats` - GROUP BY PathId, Kind, TabletId - ORDER BY PathId, Kind, TabletId; - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - - UNIT_ASSERT_GE(rows.size(), 3); - } - - { - auto selectQuery = TString(R"( - SELECT * - FROM `/Root/olapStore/.sys/store_primary_index_stats` - WHERE Kind == 'EVICTED' - ORDER BY PathId, Kind, TabletId; - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - - UNIT_ASSERT_GE(rows.size(), 0); - } - - { - auto selectQuery = TString(R"( - SELECT PathId, Kind, TabletId - FROM `/Root/olapStore/.sys/store_primary_index_stats` - WHERE Kind IN ('SPLIT_COMPACTED', 'INACTIVE', 'EVICTED') - GROUP BY PathId, Kind, TabletId - ORDER BY PathId, Kind, TabletId; - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - - UNIT_ASSERT_GE(rows.size(), 3); - } - } - - Y_UNIT_TEST(StatsSysViewAggregation) { - auto settings = TKikimrSettings().SetWithSampleTables(false); - TKikimrRunner kikimr(settings); - auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); - - TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_1"); - TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_2"); - TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_3"); - - for (ui64 i = 0; i < 100; ++i) { - WriteTestData(kikimr, "/Root/olapStore/olapTable_1", 0, 1000000 + i*10000, 1000); - WriteTestData(kikimr, "/Root/olapStore/olapTable_2", 0, 1000000 + i*10000, 2000); - WriteTestData(kikimr, "/Root/olapStore/olapTable_3", 0, 1000000 + i*10000, 3000); - } - - Tests::NCommon::TLoggerInit(kikimr).Initialize(); - - auto tableClient = kikimr.GetTableClient(); - - { - auto selectQuery = TString(R"( - SELECT - SUM(Rows) as rows, - FROM `/Root/olapStore/.sys/store_primary_index_stats` - WHERE - Kind != 'INACTIVE' - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 1ull); - } - - { - auto selectQuery = TString(R"( - SELECT - PathId, - SUM(Rows) as rows, - FROM `/Root/olapStore/.sys/store_primary_index_stats` - WHERE - Kind != 'INACTIVE' - GROUP BY - PathId - ORDER BY - PathId - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 3); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[1].at("PathId")), 4); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[2].at("PathId")), 5); - } - - { - auto selectQuery = TString(R"( - SELECT - PathId, - SUM(Rows) as rows, - SUM(BlobRangeSize) as bytes, - SUM(RawBytes) as bytes_raw - FROM `/Root/olapStore/.sys/store_primary_index_stats` - WHERE - Kind IN ('INSERTED', 'SPLIT_COMPACTED', 'COMPACTED') - GROUP BY PathId - ORDER BY rows DESC - LIMIT 10 - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 5); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[1].at("PathId")), 4); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[2].at("PathId")), 3); - } - - { - auto selectQuery = TString(R"( - SELECT - PathId, - SUM(Rows) as rows, - SUM(BlobRangeSize) as bytes, - SUM(RawBytes) as bytes_raw - FROM `/Root/olapStore/.sys/store_primary_index_stats` - WHERE - PathId == UInt64("3") AND Kind IN ('INSERTED', 'SPLIT_COMPACTED', 'COMPACTED') - GROUP BY PathId - ORDER BY rows DESC - LIMIT 10 - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 1ull); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 3); - } - - { - auto selectQuery = TString(R"( - SELECT - PathId, - SUM(Rows) as rows, - SUM(BlobRangeSize) as bytes, - SUM(RawBytes) as bytes_raw - FROM `/Root/olapStore/.sys/store_primary_index_stats` - WHERE - PathId >= UInt64("4") AND Kind IN ('INSERTED', 'SPLIT_COMPACTED', 'COMPACTED') - GROUP BY PathId - ORDER BY rows DESC - LIMIT 10 - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 2ull); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 5); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[1].at("PathId")), 4); - } - - { - auto selectQuery = TString(R"( - SELECT PathId, TabletId, Kind - FROM `/Root/olapStore/.sys/store_primary_index_stats` - GROUP BY PathId, TabletId, Kind - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - // 3 Tables with 3 Shards each and 2 KindId-s of stats - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3 * 3 * 2); - } - - { - auto selectQuery = TString(R"( - SELECT - count(distinct(PathId)), - count(distinct(Kind)), - count(distinct(TabletId)) - FROM `/Root/olapStore/.sys/store_primary_index_stats` - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("column0")), 3ull); - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("column1")), 2); - UNIT_ASSERT_GE(GetUint64(rows[0].at("column2")), 3ull); - } - - { - auto selectQuery = TString(R"( - SELECT PathId, count(*), sum(Rows), sum(BlobRangeSize), sum(RawBytes) - FROM `/Root/olapStore/.sys/store_primary_index_stats` - GROUP BY PathId - ORDER BY PathId - )"); - - auto rows = ExecuteScanQuery(tableClient, selectQuery); - UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3ull); - for (ui64 pathId = 3, row = 0; pathId <= 5; ++pathId, ++row) { - UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[row].at("PathId")), pathId); - } - } - } - Y_UNIT_TEST(PredicatePushdownWithParameters) { constexpr bool logQueries = true; auto settings = TKikimrSettings() @@ -5083,195 +2219,6 @@ Y_UNIT_TEST_SUITE(KqpOlap) { UNIT_ASSERT_C(falsePositive.empty() && falseNegative.empty(), b); } - Y_UNIT_TEST(NoErrorOnLegacyPragma) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - PRAGMA Kikimr.KqpPushOlapProcess = "false"; - SELECT id, resource_id FROM `/Root/tableWithNulls` - WHERE - level = 5; - )") - .SetExpectedReply("[[5;#]]") - .AddExpectedPlanOptions("KqpOlapFilter"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(BlocksRead) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - PRAGMA UseBlocks; - PRAGMA Kikimr.OptEnableOlapPushdown = "false"; - - SELECT - id, resource_id - FROM `/Root/tableWithNulls` - WHERE - level = 5; - )") - .SetExpectedReply("[[5;#]]"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Blocks_NoAggPushdown) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - PRAGMA UseBlocks; - SELECT - COUNT(DISTINCT id) - FROM `/Root/tableWithNulls`; - )") - .SetExpectedReply("[[10u]]"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Json_GetValue) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT id, JSON_VALUE(jsonval, "$.col1"), JSON_VALUE(jsondoc, "$.col1") FROM `/Root/tableWithNulls` - WHERE JSON_VALUE(jsonval, "$.col1") = "val1" AND id = 1; - )") -#if SSA_RUNTIME_VERSION >= 3U - .AddExpectedPlanOptions("KqpOlapJsonValue") -#else - .AddExpectedPlanOptions("Udf") -#endif - .SetExpectedReply(R"([[1;["val1"];#]])"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Json_GetValue_ToString) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT id, JSON_VALUE(jsonval, "$.col1" RETURNING String), JSON_VALUE(jsondoc, "$.col1") FROM `/Root/tableWithNulls` - WHERE JSON_VALUE(jsonval, "$.col1" RETURNING String) = "val1" AND id = 1; - )") -#if SSA_RUNTIME_VERSION >= 3U - .AddExpectedPlanOptions("KqpOlapJsonValue") -#else - .AddExpectedPlanOptions("Udf") -#endif - .SetExpectedReply(R"([[1;["val1"];#]])"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Json_GetValue_ToInt) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT id, JSON_VALUE(jsonval, "$.obj.obj_col2_int" RETURNING Int), JSON_VALUE(jsondoc, "$.obj.obj_col2_int" RETURNING Int) FROM `/Root/tableWithNulls` - WHERE JSON_VALUE(jsonval, "$.obj.obj_col2_int" RETURNING Int) = 16 AND id = 1; - )") -#if SSA_RUNTIME_VERSION >= 3U - .AddExpectedPlanOptions("KqpOlapJsonValue") -#else - .AddExpectedPlanOptions("Udf") -#endif - .SetExpectedReply(R"([[1;[16];#]])"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(JsonDoc_GetValue) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT id, JSON_VALUE(jsonval, "$.col1"), JSON_VALUE(jsondoc, "$.col1") FROM `/Root/tableWithNulls` - WHERE JSON_VALUE(jsondoc, "$.col1") = "val1" AND id = 6; - )") -#if SSA_RUNTIME_VERSION >= 3U - .AddExpectedPlanOptions("KqpOlapJsonValue") -#else - .AddExpectedPlanOptions("Udf") -#endif - .SetExpectedReply(R"([[6;#;["val1"]]])"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(JsonDoc_GetValue_ToString) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT id, JSON_VALUE(jsonval, "$.col1"), JSON_VALUE(jsondoc, "$.col1" RETURNING String) FROM `/Root/tableWithNulls` - WHERE JSON_VALUE(jsondoc, "$.col1" RETURNING String) = "val1" AND id = 6; - )") -#if SSA_RUNTIME_VERSION >= 3U - .AddExpectedPlanOptions("KqpOlapJsonValue") -#else - .AddExpectedPlanOptions("Udf") -#endif - .SetExpectedReply(R"([[6;#;["val1"]]])"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(JsonDoc_GetValue_ToInt) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT id, JSON_VALUE(jsonval, "$.obj.obj_col2_int"), JSON_VALUE(jsondoc, "$.obj.obj_col2_int" RETURNING Int) FROM `/Root/tableWithNulls` - WHERE JSON_VALUE(jsondoc, "$.obj.obj_col2_int" RETURNING Int) = 16 AND id = 6; - )") -#if SSA_RUNTIME_VERSION >= 3U - .AddExpectedPlanOptions("KqpOlapJsonValue") -#else - .AddExpectedPlanOptions("Udf") -#endif - .SetExpectedReply(R"([[6;#;[16]]])"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Json_Exists) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT id, JSON_EXISTS(jsonval, "$.col1"), JSON_EXISTS(jsondoc, "$.col1") FROM `/Root/tableWithNulls` - WHERE - JSON_EXISTS(jsonval, "$.col1") AND level = 1; - )") -#if SSA_RUNTIME_VERSION >= 3U - .AddExpectedPlanOptions("KqpOlapJsonExists") -#else - .AddExpectedPlanOptions("Udf") -#endif - .SetExpectedReply(R"([[1;[%true];#]])"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(JsonDoc_Exists) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT id, JSON_EXISTS(jsonval, "$.col1"), JSON_EXISTS(jsondoc, "$.col1") FROM `/Root/tableWithNulls` - WHERE - JSON_EXISTS(jsondoc, "$.col1") AND id = 6; - )") -#if SSA_RUNTIME_VERSION >= 3U - .AddExpectedPlanOptions("KqpOlapJsonExists") -#else - .AddExpectedPlanOptions("Udf") -#endif - .SetExpectedReply(R"([[6;#;[%true]]])"); - - TestTableWithNulls({ testCase }); - } - - Y_UNIT_TEST(Json_Query) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT id, JSON_QUERY(jsonval, "$.col1" WITH UNCONDITIONAL WRAPPER), - JSON_QUERY(jsondoc, "$.col1" WITH UNCONDITIONAL WRAPPER) - FROM `/Root/tableWithNulls` - WHERE - level = 1; - )") - .AddExpectedPlanOptions("Udf") - .SetExpectedReply(R"([[1;["[\"val1\"]"];#]])"); - - TestTableWithNulls({ testCase }); - } - Y_UNIT_TEST(Olap_InsertFailsOnDataQuery) { auto settings = TKikimrSettings() .SetWithSampleTables(false) @@ -5409,7 +2356,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) { UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); TString output = FormatResultSetYson(result.GetResultSet(0)); Cout << output << Endl; - CompareYson(output, R"([[1000001u;["1"];["uid_1000001"];[1]]])"); + CompareYson(output, R"([[1000001u;["1"];"uid_1000001";[1]]])"); } Y_UNIT_TEST(OlapRead_GenericQuery) { @@ -5514,7 +2461,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) { tableInserter.AddRow().Add(2).Add("test_res_2").Add("val2").AddNull(); testHelper.BulkUpsert(testTable, tableInserter); } - while (csController->GetIndexations().Val() == 0) { + while (csController->GetInsertFinishedCounter().Val() == 0) { Cout << "Wait indexation..." << Endl; Sleep(TDuration::Seconds(2)); } @@ -5540,7 +2487,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) { tableInserter.AddRow().Add(1).Add(10); testHelper.BulkUpsert(testTable, tableInserter); } - while (csController->GetIndexations().Val() < 1) { + while (csController->GetInsertFinishedCounter().Val() < 1) { Cout << "Wait indexation..." << Endl; Sleep(TDuration::Seconds(2)); } @@ -5551,7 +2498,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) { testHelper.BulkUpsert(testTable, tableInserter); } testHelper.ReadData("SELECT value FROM `/Root/ColumnTableTest` WHERE id = 1", "[[110]]"); - while (csController->GetIndexations().Val() < 2) { + while (csController->GetInsertFinishedCounter().Val() < 2) { Cout << "Wait indexation..." << Endl; Sleep(TDuration::Seconds(2)); } @@ -6071,53 +3018,6 @@ Y_UNIT_TEST_SUITE(KqpOlap) { } } - Y_UNIT_TEST(BlockGenericWithDistinct) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - COUNT(DISTINCT id) - FROM `/Root/tableWithNulls` - WHERE level = 5 AND Cast(id AS String) = "5"; - )") - .AddExpectedPlanOptions("KqpBlockReadOlapTableRanges") - .AddExpectedPlanOptions("WideFromBlocks") - .SetExpectedReply("[[1u]]"); - TestTableWithNulls({ testCase }, /* generic */ true); - } - - Y_UNIT_TEST(BlockGenericSimpleAggregation) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - level, COUNT(*), SUM(id) - FROM `/Root/tableWithNulls` - WHERE level = 5 - GROUP BY level - ORDER BY level; - )") - .AddExpectedPlanOptions("KqpBlockReadOlapTableRanges") - .AddExpectedPlanOptions("WideFromBlocks") - .SetExpectedReply(R"([[[5];1u;5]])"); - - TestTableWithNulls({ testCase }, /* generic */ true); - } - - Y_UNIT_TEST(BlockGenericSelectAll) { - TAggregationTestCase testCase; - testCase.SetQuery(R"( - SELECT - id, resource_id, level - FROM `/Root/tableWithNulls` - WHERE level != 5 OR level IS NULL - ORDER BY id, resource_id, level; - )") - .AddExpectedPlanOptions("KqpBlockReadOlapTableRanges") - .AddExpectedPlanOptions("WideFromBlocks") - .SetExpectedReply(R"([[1;#;[1]];[2;#;[2]];[3;#;[3]];[4;#;[4]];[6;["6"];#];[7;["7"];#];[8;["8"];#];[9;["9"];#];[10;["10"];#]])"); - - TestTableWithNulls({ testCase }, /* generic */ true); - } } -} // namespace NKqp -} // namespace NKikimr +} diff --git a/ydb/core/kqp/ut/olap/statistics_ut.cpp b/ydb/core/kqp/ut/olap/statistics_ut.cpp new file mode 100644 index 000000000000..d79a07f9bc3b --- /dev/null +++ b/ydb/core/kqp/ut/olap/statistics_ut.cpp @@ -0,0 +1,74 @@ +#include "helpers/typed_local.h" +#include <ydb/core/tx/columnshard/hooks/testing/controller.h> + +namespace NKikimr::NKqp { + +Y_UNIT_TEST_SUITE(KqpOlapStatistics) { + Y_UNIT_TEST(StatsUsage) { + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + Tests::NCommon::TLoggerInit(kikimr).Initialize(); + TTypedLocalHelper helper("Utf8", kikimr); + helper.CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + { + auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_STAT, TYPE=max, NAME=max_pk_int, FEATURES=`{\"column_name\": \"pk_int\"}`);"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + { + auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_STAT, TYPE=max, NAME=max_field, FEATURES=`{\"column_name\": \"field\"}`);"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_UNEQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + { + auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_STAT, TYPE=max, NAME=max_pk_int, FEATURES=`{\"column_name\": \"pk_int\"}`);"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_UNEQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + { + auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=DROP_STAT, NAME=max_pk_int);"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + } + } + + Y_UNIT_TEST(StatsUsageWithTTL) { + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + Tests::NCommon::TLoggerInit(kikimr).Initialize(); + TTypedLocalHelper helper("Utf8", kikimr); + helper.CreateTestOlapTable(); + auto tableClient = kikimr.GetTableClient(); + { + auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_STAT, TYPE=max, NAME=max_ts, FEATURES=`{\"column_name\": \"ts\"}`);"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + { + auto alterQuery = TStringBuilder() << "ALTER TABLE `/Root/olapStore/olapTable` SET (TTL = Interval(\"P1D\") ON ts);"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + { + auto alterQuery = TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=DROP_STAT, NAME=max_ts);"; + auto session = tableClient.CreateSession().GetValueSync().GetSession(); + auto alterResult = session.ExecuteSchemeQuery(alterQuery).GetValueSync(); + UNIT_ASSERT_VALUES_UNEQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); + } + } + } +} + +} diff --git a/ydb/core/kqp/ut/olap/sys_view_ut.cpp b/ydb/core/kqp/ut/olap/sys_view_ut.cpp new file mode 100644 index 000000000000..866563f088f6 --- /dev/null +++ b/ydb/core/kqp/ut/olap/sys_view_ut.cpp @@ -0,0 +1,722 @@ +#include "helpers/local.h" +#include "helpers/query_executor.h" +#include "helpers/typed_local.h" +#include "helpers/writer.h" +#include "helpers/get_value.h" + +#include <library/cpp/testing/unittest/registar.h> +#include <ydb/core/tx/columnshard/hooks/testing/controller.h> + +namespace NKikimr::NKqp { + +Y_UNIT_TEST_SUITE(KqpOlapSysView) { + Y_UNIT_TEST(StatsSysView) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + static ui32 numKinds = 2; + + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + TLocalHelper(kikimr).CreateTestOlapTable(); + for (ui64 i = 0; i < 100; ++i) { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000 + i * 10000, 1000); + } + + auto tableClient = kikimr.GetTableClient(); + auto selectQuery = TString(R"( + SELECT PathId, Kind, TabletId, Sum(Rows) as Rows + FROM `/Root/olapStore/.sys/store_primary_index_stats` + GROUP BY PathId, Kind, TabletId + ORDER BY TabletId, Kind, PathId + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + UNIT_ASSERT_VALUES_EQUAL(rows.size(), numKinds*3); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[0].at("Kind")), "INSERTED"); + UNIT_ASSERT_GE(GetUint64(rows[0].at("TabletId")), 72075186224037888ull); + UNIT_ASSERT_GE(GetUint64(rows[2].at("TabletId")), 72075186224037889ull); + UNIT_ASSERT_GE(GetUint64(rows[4].at("TabletId")), 72075186224037890ull); + UNIT_ASSERT_GE(GetUint64(rows[1].at("TabletId")), GetUint64(rows[0].at("TabletId"))); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[2].at("Kind")), "INSERTED"); + UNIT_ASSERT_GE(GetUint64(rows[2].at("TabletId")), GetUint64(rows[1].at("TabletId"))); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[3].at("PathId")), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[3].at("Kind")), "SPLIT_COMPACTED"); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[3].at("TabletId")), GetUint64(rows[2].at("TabletId"))); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[4].at("Kind")), "INSERTED"); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[4].at("TabletId")), GetUint64(rows[5].at("TabletId"))); + UNIT_ASSERT_GE( + GetUint64(rows[0].at("Rows")) + GetUint64(rows[1].at("Rows")) + GetUint64(rows[2].at("Rows")) + + GetUint64(rows[3].at("Rows")) + GetUint64(rows[4].at("Rows")) + GetUint64(rows[5].at("Rows")), + 0.3*0.9*100*1000); // >= 90% of 100K inserted rows + } + + Y_UNIT_TEST(StatsSysViewTable) { + auto settings = TKikimrSettings() + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + static ui32 numKinds = 5; + + TLocalHelper(kikimr).CreateTestOlapTable("olapTable_1"); + TLocalHelper(kikimr).CreateTestOlapTable("olapTable_2"); + for (ui64 i = 0; i < 10; ++i) { + WriteTestData(kikimr, "/Root/olapStore/olapTable_1", 0, 1000000 + i*10000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable_2", 0, 1000000 + i*10000, 2000); + } + + auto tableClient = kikimr.GetTableClient(); + { + auto selectQuery = TString(R"( + SELECT PathId, Kind, TabletId + FROM `/Root/olapStore/olapTable_1/.sys/primary_index_stats` + GROUP BY PathId, TabletId, Kind + ORDER BY PathId, TabletId, Kind + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + UNIT_ASSERT_GT(rows.size(), 1*numKinds); + UNIT_ASSERT_LE(rows.size(), 3*numKinds); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows.front().at("PathId")), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows.back().at("PathId")), 3ull); + } + { + auto selectQuery = TString(R"( + SELECT PathId, Kind, TabletId + FROM `/Root/olapStore/olapTable_2/.sys/primary_index_stats` + GROUP BY PathId, TabletId, Kind + ORDER BY PathId, TabletId, Kind + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + UNIT_ASSERT_GT(rows.size(), 1*numKinds); + UNIT_ASSERT_LE(rows.size(), 3*numKinds); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows.front().at("PathId")), 4ull); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows.back().at("PathId")), 4ull); + } + { + auto selectQuery = TString(R"( + SELECT * + FROM `/Root/olapStore/olapTable_1/.sys/primary_index_stats` + WHERE + PathId > UInt64("3") + ORDER BY PathId, Kind, TabletId + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 0); + } + } + + Y_UNIT_TEST(StatsSysViewEnumStringBytes) { + ui64 rawBytesPK1; + ui64 bytesPK1; + { + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + csController->SetPeriodicWakeupActivationPeriod(TDuration::Seconds(1)); + auto settings = TKikimrSettings() + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + Tests::NCommon::TLoggerInit(kikimr).Initialize(); + TTypedLocalHelper helper("", kikimr, "olapTable", "olapStore12"); + helper.CreateTestOlapTable(); + helper.FillPKOnly(0, 800000); + helper.GetVolumes(rawBytesPK1, bytesPK1, false); + } + + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + ui64 rawBytesUnpack1PK = 0; + ui64 bytesUnpack1PK = 0; + ui64 rawBytesPackAndUnpack2PK; + ui64 bytesPackAndUnpack2PK; + const ui32 rowsCount = 800000; + const ui32 groupsCount = 512; + { + auto settings = TKikimrSettings() + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + Tests::NCommon::TLoggerInit(kikimr).Initialize(); + TTypedLocalHelper helper("Utf8", kikimr); + helper.CreateTestOlapTable(); + NArrow::NConstruction::TStringPoolFiller sPool(groupsCount, 52); + helper.FillTable(sPool, 0, rowsCount); + helper.PrintCount(); + { + auto d = helper.GetDistribution(); + Y_ABORT_UNLESS(d.GetCount() == rowsCount); + Y_ABORT_UNLESS(d.GetGroupsCount() == groupsCount); + Y_ABORT_UNLESS(d.GetMaxCount() - d.GetMinCount() <= 1); + } + helper.GetVolumes(rawBytesUnpack1PK, bytesUnpack1PK, false); + Sleep(TDuration::Seconds(5)); + auto tableClient = kikimr.GetTableClient(); + helper.ExecuteSchemeQuery(TStringBuilder() << "ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `ENCODING.DICTIONARY.ENABLED`=`true`);"); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field1, `ENCODING.DICTIONARY.ENABLED`=`true`);", NYdb::EStatus::SCHEME_ERROR); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `ENCODING.DICTIONARY.ENABLED1`=`true`);", NYdb::EStatus::GENERIC_ERROR); + Sleep(TDuration::Seconds(5)); + helper.FillTable(sPool, 1, rowsCount); + Sleep(TDuration::Seconds(5)); + { + helper.GetVolumes(rawBytesPackAndUnpack2PK, bytesPackAndUnpack2PK, false); + helper.PrintCount(); + { + auto d = helper.GetDistribution(); + Cerr << d.DebugString() << Endl; + Y_ABORT_UNLESS(d.GetCount() == 2 * rowsCount); + Y_ABORT_UNLESS(d.GetGroupsCount() == groupsCount); + Y_ABORT_UNLESS(d.GetMaxCount() - d.GetMinCount() <= 2); + } + } + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `SERIALIZER.CLASS_NAME`=`ARROW_SERIALIZER`, `COMPRESSION.TYPE`=`zstd`);"); + } + const ui64 rawBytesUnpack = rawBytesUnpack1PK - rawBytesPK1; + const ui64 bytesUnpack = bytesUnpack1PK - bytesPK1; + const ui64 rawBytesPack = rawBytesPackAndUnpack2PK - rawBytesUnpack1PK - rawBytesPK1; + const ui64 bytesPack = bytesPackAndUnpack2PK - bytesUnpack1PK - bytesPK1; + TStringBuilder result; + result << "unpacked data: " << rawBytesUnpack << " / " << bytesUnpack << Endl; + result << "packed data: " << rawBytesPack << " / " << bytesPack << Endl; + result << "frq_diff: " << 1.0 * bytesPack / bytesUnpack << Endl; + result << "frq_compression: " << 1.0 * bytesPack / rawBytesPack << Endl; + result << "pk_size : " << rawBytesPK1 << " / " << bytesPK1 << Endl; + Cerr << result << Endl; + Y_ABORT_UNLESS(bytesPack / bytesUnpack < 0.1); + } + + Y_UNIT_TEST(StatsSysViewBytesPackActualization) { + ui64 rawBytesPK1; + ui64 bytesPK1; + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + csController->SetPeriodicWakeupActivationPeriod(TDuration::Seconds(1)); + auto settings = TKikimrSettings() + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + Tests::NCommon::TLoggerInit(kikimr).Initialize(); + TTypedLocalHelper helper("", kikimr, "olapTable", "olapStore"); + helper.CreateTestOlapTable(); + helper.FillPKOnly(0, 800000); + helper.GetVolumes(rawBytesPK1, bytesPK1, false, {"pk_int"}); + auto tableClient = kikimr.GetTableClient(); + { + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=pk_int, `SERIALIZER.CLASS_NAME`=`ARROW_SERIALIZER`, `COMPRESSION.TYPE`=`zstd`);"); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_OPTIONS, SCHEME_NEED_ACTUALIZATION=`true`);"); + csController->WaitActualization(TDuration::Seconds(10)); + ui64 rawBytesPK2; + ui64 bytesPK2; + helper.GetVolumes(rawBytesPK2, bytesPK2, false, {"pk_int"}); + AFL_VERIFY(rawBytesPK2 == rawBytesPK1)("pk1", rawBytesPK1)("pk2", rawBytesPK2); + AFL_VERIFY(bytesPK2 < bytesPK1 / 3)("pk1", bytesPK1)("pk2", bytesPK2); + } + { + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=pk_int, `SERIALIZER.CLASS_NAME`=`ARROW_SERIALIZER`, `COMPRESSION.TYPE`=`lz4`);"); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_OPTIONS, SCHEME_NEED_ACTUALIZATION=`true`);"); + csController->WaitActualization(TDuration::Seconds(10)); + ui64 rawBytesPK2; + ui64 bytesPK2; + helper.GetVolumes(rawBytesPK2, bytesPK2, false, {"pk_int"}); + AFL_VERIFY(rawBytesPK2 == rawBytesPK1)("pk1", rawBytesPK1)("pk2", rawBytesPK2); + AFL_VERIFY(bytesPK2 < bytesPK1 * 1.01 && bytesPK1 < bytesPK2 * 1.01)("pk1", bytesPK1)("pk2", bytesPK2); + } + } + + Y_UNIT_TEST(StatsSysViewBytesColumnActualization) { + ui64 rawBytes1; + ui64 bytes1; + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + csController->SetPeriodicWakeupActivationPeriod(TDuration::Seconds(1)); + auto settings = TKikimrSettings() + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + Tests::NCommon::TLoggerInit(kikimr).Initialize(); + TTypedLocalHelper helper("Utf8", kikimr); + helper.CreateTestOlapTable(); + NArrow::NConstruction::TStringPoolFiller sPool(3, 52); + helper.FillTable(sPool, 0, 800000); + helper.GetVolumes(rawBytes1, bytes1, false, {"new_column_ui64"}); + AFL_VERIFY(rawBytes1 == 0); + AFL_VERIFY(bytes1 == 0); + auto tableClient = kikimr.GetTableClient(); + { + helper.ExecuteSchemeQuery("ALTER TABLESTORE `/Root/olapStore` ADD COLUMN new_column_ui64 Uint64;"); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_OPTIONS, SCHEME_NEED_ACTUALIZATION=`true`);"); + csController->WaitActualization(TDuration::Seconds(10)); + ui64 rawBytes2; + ui64 bytes2; + helper.GetVolumes(rawBytes2, bytes2, false, {"new_column_ui64"}); + AFL_VERIFY(rawBytes2 == 6500041)("real", rawBytes2); + AFL_VERIFY(bytes2 == 45360)("b", bytes2); + } + } + + Y_UNIT_TEST(StatsSysViewBytesDictActualization) { + ui64 rawBytes1; + ui64 bytes1; + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + csController->SetPeriodicWakeupActivationPeriod(TDuration::Seconds(1)); + auto settings = TKikimrSettings() + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + Tests::NCommon::TLoggerInit(kikimr).Initialize(); + TTypedLocalHelper helper("Utf8", kikimr); + helper.CreateTestOlapTable(); + NArrow::NConstruction::TStringPoolFiller sPool(3, 52); + helper.FillTable(sPool, 0, 800000); + helper.GetVolumes(rawBytes1, bytes1, false, {"field"}); + auto tableClient = kikimr.GetTableClient(); + { + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `ENCODING.DICTIONARY.ENABLED`=`true`);"); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_OPTIONS, SCHEME_NEED_ACTUALIZATION=`true`);"); + csController->WaitActualization(TDuration::Seconds(10)); + ui64 rawBytes2; + ui64 bytes2; + helper.GetVolumes(rawBytes2, bytes2, false, {"field"}); + AFL_VERIFY(rawBytes2 == rawBytes1)("f1", rawBytes1)("f2", rawBytes2); + AFL_VERIFY(bytes2 < bytes1 * 0.5)("f1", bytes1)("f2", bytes2); + } + { + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `ENCODING.DICTIONARY.ENABLED`=`false`);"); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_OPTIONS, SCHEME_NEED_ACTUALIZATION=`true`);"); + csController->WaitActualization(TDuration::Seconds(10)); + ui64 rawBytes2; + ui64 bytes2; + helper.GetVolumes(rawBytes2, bytes2, false, {"field"}); + AFL_VERIFY(rawBytes2 == rawBytes1)("f1", rawBytes1)("f2", rawBytes2); + AFL_VERIFY(bytes2 < bytes1 * 1.01 && bytes1 < bytes2 * 1.01)("f1", bytes1)("f2", bytes2); + } + } + + Y_UNIT_TEST(StatsSysViewBytesDictStatActualization) { + ui64 rawBytes1; + ui64 bytes1; + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + csController->SetPeriodicWakeupActivationPeriod(TDuration::Seconds(1)); + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + Tests::NCommon::TLoggerInit(kikimr).Initialize(); + TTypedLocalHelper helper("Utf8", kikimr); + helper.CreateTestOlapTable(); + NArrow::NConstruction::TStringPoolFiller sPool(3, 52); + helper.FillTable(sPool, 0, 800000); + helper.GetVolumes(rawBytes1, bytes1, false, {"field"}); + auto tableClient = kikimr.GetTableClient(); + { + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `ENCODING.DICTIONARY.ENABLED`=`true`);"); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_STAT, NAME=field_var, TYPE=variability, FEATURES=`{\"column_name\" : \"field\"}`);"); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_STAT, NAME=pk_int_max, TYPE=max, FEATURES=`{\"column_name\" : \"pk_int\"}`);"); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_OPTIONS, SCHEME_NEED_ACTUALIZATION=`true`);"); + csController->WaitActualization(TDuration::Seconds(10)); + ui64 rawBytes2; + ui64 bytes2; + helper.GetVolumes(rawBytes2, bytes2, false, {"field"}); + AFL_VERIFY(rawBytes2 == rawBytes1)("f1", rawBytes1)("f2", rawBytes2); + AFL_VERIFY(bytes2 < bytes1 * 0.5)("f1", bytes1)("f2", bytes2); + std::vector<NKikimrColumnShardStatisticsProto::TPortionStorage> stats; + helper.GetStats(stats, true); + for (auto&& i : stats) { + AFL_VERIFY(i.ScalarsSize() == 2); + AFL_VERIFY(i.GetScalars()[0].GetUint32() == 3); + } + } + { + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=DROP_STAT, NAME=pk_int_max);"); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_OPTIONS, SCHEME_NEED_ACTUALIZATION=`true`);"); + csController->WaitActualization(TDuration::Seconds(10)); + std::vector<NKikimrColumnShardStatisticsProto::TPortionStorage> stats; + helper.GetStats(stats, true); + for (auto&& i : stats) { + AFL_VERIFY(i.ScalarsSize() == 1); + AFL_VERIFY(i.GetScalars()[0].GetUint32() == 3); + } + } + { + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_STAT, NAME=pk_int_max, TYPE=max, FEATURES=`{\"column_name\" : \"pk_int\"}`);"); + helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_OPTIONS, SCHEME_NEED_ACTUALIZATION=`true`);"); + csController->WaitActualization(TDuration::Seconds(10)); + std::vector<NKikimrColumnShardStatisticsProto::TPortionStorage> stats; + helper.GetStats(stats, true); + for (auto&& i : stats) { + AFL_VERIFY(i.ScalarsSize() == 2); + AFL_VERIFY(i.GetScalars()[0].GetUint32() == 3); + } + } + } + + Y_UNIT_TEST(StatsSysViewColumns) { + auto settings = TKikimrSettings().SetWithSampleTables(false); + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + TKikimrRunner kikimr(settings); + + TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable(); + for (ui64 i = 0; i < 10; ++i) { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000 + i*10000, 2000); + } + + auto tableClient = kikimr.GetTableClient(); + + { + auto selectQuery = TString(R"( + SELECT TabletId, PathId, Kind + FROM `/Root/olapStore/.sys/store_primary_index_stats` + ORDER BY PathId, Kind, TabletId + LIMIT 4; + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 4); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[0].at("Kind")), "INSERTED"); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[3].at("PathId")), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[3].at("Kind")), "INSERTED"); + } + { + auto selectQuery = TString(R"( + SELECT SUM(BlobRangeSize) as Bytes, SUM(Rows) as Rows, PathId, TabletId + FROM `/Root/olapStore/.sys/store_primary_index_stats` + GROUP BY PathId, TabletId + ORDER BY Bytes + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3); + UNIT_ASSERT_LE(GetUint64(rows[0].at("Bytes")), GetUint64(rows[1].at("Bytes"))); + } + { + auto selectQuery = TString(R"( + SELECT Sum(Rows) as Rows, Kind, Sum(RawBytes) as RawBytes, Sum(Rows) as Rows2, Sum(Rows) as Rows3, PathId + FROM `/Root/olapStore/.sys/store_primary_index_stats` + GROUP BY Kind, PathId + ORDER BY PathId, Kind, Rows3 + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 2); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("Rows2")), GetUint64(rows[0].at("Rows3"))); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[1].at("Rows")), GetUint64(rows[1].at("Rows3"))); + } + } + + Y_UNIT_TEST(StatsSysViewRanges) { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + csController->SetCompactionControl(NYDBTest::EOptimizerCompactionWeightControl::Disable); + Tests::NCommon::TLoggerInit(kikimr).Initialize(); + + TLocalHelper(kikimr).CreateTestOlapTable("olapTable_1"); + TLocalHelper(kikimr).CreateTestOlapTable("olapTable_2"); + TLocalHelper(kikimr).CreateTestOlapTable("olapTable_3"); + + for (ui64 i = 0; i < 10; ++i) { + WriteTestData(kikimr, "/Root/olapStore/olapTable_1", 0, 1000000 + i*10000, 2000); + WriteTestData(kikimr, "/Root/olapStore/olapTable_2", 0, 1000000 + i*10000, 3000); + WriteTestData(kikimr, "/Root/olapStore/olapTable_3", 0, 1000000 + i*10000, 5000); + } + + auto tableClient = kikimr.GetTableClient(); + + { + auto selectQuery = TString(R"( + SELECT * + FROM `/Root/olapStore/.sys/store_primary_index_stats` + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + } + + { + auto selectQuery = TString(R"( + SELECT PathId, Kind, TabletId + FROM `/Root/olapStore/.sys/store_primary_index_stats` + WHERE + PathId == UInt64("3") AND Activity = true + GROUP BY TabletId, PathId, Kind + ORDER BY TabletId, Kind + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[0].at("Kind")), "INSERTED"); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[1].at("PathId")), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[2].at("Kind")), "INSERTED"); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[2].at("PathId")), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[1].at("Kind")), "INSERTED"); + } + + { + auto selectQuery = TString(R"( + SELECT PathId, Kind, TabletId + FROM `/Root/olapStore/.sys/store_primary_index_stats` + GROUP BY PathId, Kind, TabletId + ORDER BY PathId DESC, Kind DESC, TabletId DESC + ; + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + ui32 numExpected = 3*3; + UNIT_ASSERT_VALUES_EQUAL(rows.size(), numExpected); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 5ull); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[0].at("Kind")), "INSERTED"); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[numExpected-1].at("PathId")), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[numExpected-1].at("Kind")), "INSERTED"); + } + + { + auto selectQuery = TString(R"( + SELECT PathId, Kind, TabletId + FROM `/Root/olapStore/.sys/store_primary_index_stats` + WHERE + PathId > UInt64("0") AND PathId < UInt32("4") + OR PathId > UInt64("4") AND PathId <= UInt64("5") + GROUP BY PathId, Kind, TabletId + ORDER BY + PathId DESC, Kind DESC, TabletId DESC + ; + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + ui32 numExpected = 2*3; + UNIT_ASSERT_VALUES_EQUAL(rows.size(), numExpected); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 5ull); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[0].at("Kind")), "INSERTED"); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[numExpected-1].at("PathId")), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUtf8(rows[numExpected-1].at("Kind")), "INSERTED"); + } + } + + Y_UNIT_TEST(StatsSysViewFilter) { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + + TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable(); + for (ui64 i = 0; i < 10; ++i) { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000 + i*10000, 2000); + } + + auto tableClient = kikimr.GetTableClient(); + + { + auto selectQuery = TString(R"( + SELECT PathId, Kind, TabletId, Sum(BlobRangeSize) as Bytes + FROM `/Root/olapStore/.sys/store_primary_index_stats` + GROUP BY PathId, Kind, TabletId + ORDER BY PathId, Kind, TabletId; + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + UNIT_ASSERT_GE(rows.size(), 3); + } + + { + auto selectQuery = TString(R"( + SELECT PathId, Kind, TabletId, Sum(BlobRangeSize) as Bytes + FROM `/Root/olapStore/.sys/store_primary_index_stats` + GROUP BY PathId, Kind, TabletId + ORDER BY PathId, Kind, TabletId; + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + UNIT_ASSERT_GE(rows.size(), 3); + } + + { + auto selectQuery = TString(R"( + SELECT * + FROM `/Root/olapStore/.sys/store_primary_index_stats` + WHERE Kind == 'EVICTED' + ORDER BY PathId, Kind, TabletId; + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + UNIT_ASSERT_GE(rows.size(), 0); + } + + { + auto selectQuery = TString(R"( + SELECT PathId, Kind, TabletId + FROM `/Root/olapStore/.sys/store_primary_index_stats` + WHERE Kind IN ('SPLIT_COMPACTED', 'INACTIVE', 'EVICTED') + GROUP BY PathId, Kind, TabletId + ORDER BY PathId, Kind, TabletId; + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + + UNIT_ASSERT_GE(rows.size(), 3); + } + } + + Y_UNIT_TEST(StatsSysViewAggregation) { + auto settings = TKikimrSettings().SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + + TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_1"); + TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_2"); + TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_3"); + + for (ui64 i = 0; i < 100; ++i) { + WriteTestData(kikimr, "/Root/olapStore/olapTable_1", 0, 1000000 + i*10000, 1000); + WriteTestData(kikimr, "/Root/olapStore/olapTable_2", 0, 1000000 + i*10000, 2000); + WriteTestData(kikimr, "/Root/olapStore/olapTable_3", 0, 1000000 + i*10000, 3000); + } + + Tests::NCommon::TLoggerInit(kikimr).Initialize(); + + auto tableClient = kikimr.GetTableClient(); + + { + auto selectQuery = TString(R"( + SELECT + SUM(Rows) as rows, + FROM `/Root/olapStore/.sys/store_primary_index_stats` + WHERE + Kind != 'INACTIVE' + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 1ull); + } + + { + auto selectQuery = TString(R"( + SELECT + PathId, + SUM(Rows) as rows, + FROM `/Root/olapStore/.sys/store_primary_index_stats` + WHERE + Kind != 'INACTIVE' + GROUP BY + PathId + ORDER BY + PathId + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 3); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[1].at("PathId")), 4); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[2].at("PathId")), 5); + } + + { + auto selectQuery = TString(R"( + SELECT + PathId, + SUM(Rows) as rows, + SUM(BlobRangeSize) as bytes, + SUM(RawBytes) as bytes_raw + FROM `/Root/olapStore/.sys/store_primary_index_stats` + WHERE + Kind IN ('INSERTED', 'SPLIT_COMPACTED', 'COMPACTED') + GROUP BY PathId + ORDER BY rows DESC + LIMIT 10 + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 5); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[1].at("PathId")), 4); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[2].at("PathId")), 3); + } + + { + auto selectQuery = TString(R"( + SELECT + PathId, + SUM(Rows) as rows, + SUM(BlobRangeSize) as bytes, + SUM(RawBytes) as bytes_raw + FROM `/Root/olapStore/.sys/store_primary_index_stats` + WHERE + PathId == UInt64("3") AND Kind IN ('INSERTED', 'SPLIT_COMPACTED', 'COMPACTED') + GROUP BY PathId + ORDER BY rows DESC + LIMIT 10 + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 1ull); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 3); + } + + { + auto selectQuery = TString(R"( + SELECT + PathId, + SUM(Rows) as rows, + SUM(BlobRangeSize) as bytes, + SUM(RawBytes) as bytes_raw + FROM `/Root/olapStore/.sys/store_primary_index_stats` + WHERE + PathId >= UInt64("4") AND Kind IN ('INSERTED', 'SPLIT_COMPACTED', 'COMPACTED') + GROUP BY PathId + ORDER BY rows DESC + LIMIT 10 + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 2ull); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("PathId")), 5); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[1].at("PathId")), 4); + } + + { + auto selectQuery = TString(R"( + SELECT PathId, TabletId, Kind + FROM `/Root/olapStore/.sys/store_primary_index_stats` + GROUP BY PathId, TabletId, Kind + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + // 3 Tables with 3 Shards each and 2 KindId-s of stats + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3 * 3 * 2); + } + + { + auto selectQuery = TString(R"( + SELECT + count(distinct(PathId)), + count(distinct(Kind)), + count(distinct(TabletId)) + FROM `/Root/olapStore/.sys/store_primary_index_stats` + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("column0")), 3ull); + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[0].at("column1")), 2); + UNIT_ASSERT_GE(GetUint64(rows[0].at("column2")), 3ull); + } + + { + auto selectQuery = TString(R"( + SELECT PathId, count(*), sum(Rows), sum(BlobRangeSize), sum(RawBytes) + FROM `/Root/olapStore/.sys/store_primary_index_stats` + GROUP BY PathId + ORDER BY PathId + )"); + + auto rows = ExecuteScanQuery(tableClient, selectQuery); + UNIT_ASSERT_VALUES_EQUAL(rows.size(), 3ull); + for (ui64 pathId = 3, row = 0; pathId <= 5; ++pathId, ++row) { + UNIT_ASSERT_VALUES_EQUAL(GetUint64(rows[row].at("PathId")), pathId); + } + } + } +} + +} // namespace diff --git a/ydb/core/kqp/ut/olap/write_ut.cpp b/ydb/core/kqp/ut/olap/write_ut.cpp new file mode 100644 index 000000000000..42310b02eac9 --- /dev/null +++ b/ydb/core/kqp/ut/olap/write_ut.cpp @@ -0,0 +1,111 @@ +#include "helpers/local.h" +#include "helpers/writer.h" + +#include <library/cpp/testing/unittest/registar.h> +#include <ydb/core/tx/columnshard/hooks/testing/controller.h> +#include <ydb/core/base/tablet_pipecache.h> +#include <ydb/core/wrappers/fake_storage.h> + +namespace NKikimr::NKqp { + +Y_UNIT_TEST_SUITE(KqpOlapWrite) { + Y_UNIT_TEST(TierDraftsGC) { + auto csController = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<NKikimr::NYDBTest::NColumnShard::TController>(); + csController->SetIndexWriteControllerEnabled(false); + csController->SetPeriodicWakeupActivationPeriod(TDuration::Seconds(1)); + Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->ResetWriteCounters(); + + auto settings = TKikimrSettings() + .SetWithSampleTables(false) + .SetForceColumnTablesCompositeMarks(true); + TKikimrRunner kikimr(settings); + TLocalHelper(kikimr).CreateTestOlapTable(); + Tests::NCommon::TLoggerInit(kikimr).SetComponents({NKikimrServices::TX_COLUMNSHARD}, "CS").SetPriority(NActors::NLog::PRI_DEBUG).Initialize(); + auto tableClient = kikimr.GetTableClient(); + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); + } + while (csController->GetInsertStartedCounter().Val() == 0) { + Cout << "Wait indexation..." << Endl; + Sleep(TDuration::Seconds(2)); + } + while (!Singleton<NWrappers::NExternalStorage::TFakeExternalStorage>()->GetWritesCount() || !csController->GetIndexWriteControllerBrokeCount().Val()) { + Cout << "Wait errors on write... " << Singleton<NWrappers::NExternalStorage::TFakeExternalStorage>()->GetWritesCount() << "/" << csController->GetIndexWriteControllerBrokeCount().Val() << Endl; + Sleep(TDuration::Seconds(2)); + } + csController->DisableBackground(NKikimr::NYDBTest::ICSController::EBackground::Indexation); + csController->DisableBackground(NKikimr::NYDBTest::ICSController::EBackground::Compaction); + const auto startInstant = TMonotonic::Now(); + while (Singleton<NWrappers::NExternalStorage::TFakeExternalStorage>()->GetSize() && TMonotonic::Now() - startInstant < TDuration::Seconds(200)) { + Cerr << "Waiting empty... " << Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->GetSize() << Endl; + Sleep(TDuration::Seconds(2)); + } + + AFL_VERIFY(!Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->GetSize()); + } + + Y_UNIT_TEST(TierDraftsGCWithRestart) { + auto csController = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<NKikimr::NYDBTest::NColumnShard::TController>(); + csController->SetIndexWriteControllerEnabled(false); + csController->SetPeriodicWakeupActivationPeriod(TDuration::Seconds(1000)); + csController->DisableBackground(NKikimr::NYDBTest::ICSController::EBackground::GC); + Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->ResetWriteCounters(); + + auto settings = TKikimrSettings() + .SetWithSampleTables(false) + .SetForceColumnTablesCompositeMarks(true); + TKikimrRunner kikimr(settings); + TLocalHelper(kikimr).CreateTestOlapTable(); + Tests::NCommon::TLoggerInit(kikimr).SetComponents({NKikimrServices::TX_COLUMNSHARD}, "CS").SetPriority(NActors::NLog::PRI_DEBUG).Initialize(); + auto tableClient = kikimr.GetTableClient(); + + { + WriteTestData(kikimr, "/Root/olapStore/olapTable", 30000, 1000000, 11000); + } + while (csController->GetInsertStartedCounter().Val() == 0) { + Cout << "Wait indexation..." << Endl; + Sleep(TDuration::Seconds(2)); + } + while (Singleton<NWrappers::NExternalStorage::TFakeExternalStorage>()->GetWritesCount() < 20 || !csController->GetIndexWriteControllerBrokeCount().Val()) { + Cout << "Wait errors on write... " << Singleton<NWrappers::NExternalStorage::TFakeExternalStorage>()->GetWritesCount() << "/" << csController->GetIndexWriteControllerBrokeCount().Val() << Endl; + Sleep(TDuration::Seconds(2)); + } + csController->DisableBackground(NKikimr::NYDBTest::ICSController::EBackground::Indexation); + csController->DisableBackground(NKikimr::NYDBTest::ICSController::EBackground::Compaction); + AFL_VERIFY(Singleton<NWrappers::NExternalStorage::TFakeExternalStorage>()->GetSize()); + { + const auto startInstant = TMonotonic::Now(); + AFL_VERIFY(Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->GetDeletesCount() == 0)("count", Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->GetDeletesCount()); + while (Singleton<NWrappers::NExternalStorage::TFakeExternalStorage>()->GetSize() && TMonotonic::Now() - startInstant < TDuration::Seconds(200)) { + for (auto&& i : csController->GetShardActualIds()) { + kikimr.GetTestServer().GetRuntime()->Send(MakePipePeNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward( + new TEvents::TEvPoisonPill(), i, false)); + } + csController->EnableBackground(NKikimr::NYDBTest::ICSController::EBackground::GC); + Cerr << "Waiting empty... " << Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->GetSize() << Endl; + Sleep(TDuration::Seconds(2)); + } + } + + { + const auto startInstant = TMonotonic::Now(); + while (TMonotonic::Now() - startInstant < TDuration::Seconds(10)) { + for (auto&& i : csController->GetShardActualIds()) { + kikimr.GetTestServer().GetRuntime()->Send(MakePipePeNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward( + new TEvents::TEvPoisonPill(), i, false)); + } + Cerr << "Waiting empty... " << Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->GetWritesCount() << "/" << Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->GetDeletesCount() << Endl; + Sleep(TDuration::MilliSeconds(500)); + } + } + + AFL_VERIFY(!Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->GetSize()); + const auto writesCount = Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->GetWritesCount(); + const auto deletesCount = Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->GetDeletesCount(); + AFL_VERIFY(deletesCount <= writesCount + 1)("writes", writesCount)("deletes", deletesCount); + } + +} + +} // namespace diff --git a/ydb/core/kqp/ut/olap/ya.make b/ydb/core/kqp/ut/olap/ya.make index 8dfe183405bd..f359312ebdbb 100644 --- a/ydb/core/kqp/ut/olap/ya.make +++ b/ydb/core/kqp/ut/olap/ya.make @@ -14,7 +14,14 @@ ENDIF() SRCS( kqp_olap_stats_ut.cpp - kqp_olap_ut.cpp + GLOBAL kqp_olap_ut.cpp + sys_view_ut.cpp + indexes_ut.cpp + GLOBAL blobs_sharing_ut.cpp + statistics_ut.cpp + clickbench_ut.cpp + aggregations_ut.cpp + write_ut.cpp ) PEERDIR( @@ -22,6 +29,7 @@ PEERDIR( ydb/core/kqp/ut/common ydb/library/yql/sql/pg_dummy ydb/core/tx/columnshard/hooks/testing + ydb/core/kqp/ut/olap/helpers ydb/core/tx/datashard/ut_common ) diff --git a/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp b/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp index 3b7692a6ad30..d68616aecab4 100644 --- a/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp +++ b/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp @@ -1,5 +1,6 @@ #include <ydb/core/kqp/ut/common/kqp_ut_common.h> #include <ydb/core/kqp/ut/common/columnshard.h> +#include <ydb/core/tx/columnshard/hooks/testing/controller.h> #include <ydb/core/formats/arrow/arrow_helpers.h> #include <ydb/core/tx/tx_proxy/proxy.h> #include <ydb/public/sdk/cpp/client/ydb_proto/accessor.h> @@ -3994,7 +3995,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) { auto query = TStringBuilder() << R"( --!syntax_v1 CREATE TABLESTORE `)" << tableStoreName << R"(` ( - Key Uint64, + Key Uint64 NOT NULL, Value1 String, PRIMARY KEY (Key) ) @@ -4034,7 +4035,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) { auto query = TStringBuilder() << R"( --!syntax_v1 CREATE TABLE `)" << tableName << R"(` ( - Key Uint64, + Key Uint64 NOT NULL, Value1 String, PRIMARY KEY (Key) ) @@ -4049,7 +4050,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) { auto query2 = TStringBuilder() << R"( --!syntax_v1 CREATE TABLESTORE `)" << tableStoreName << R"(` ( - Key Uint64, + Key Uint64 NOT NULL, Value1 String, PRIMARY KEY (Key) ) @@ -4145,7 +4146,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) { auto query = TStringBuilder() << R"( --!syntax_v1 CREATE TABLESTORE `)" << tableStoreName << R"(` ( - Key Uint64, + Key Uint64 NOT NULL, Value1 String, PRIMARY KEY (Key) ) @@ -4160,7 +4161,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) { auto query2 = TStringBuilder() << R"( --!syntax_v1 CREATE TABLE `)" << tableName << R"(` ( - Key Uint64, + Key Uint64 NOT NULL, Value1 String, PRIMARY KEY (Key) ) @@ -5129,6 +5130,37 @@ Y_UNIT_TEST_SUITE(KqpScheme) { Y_UNIT_TEST_SUITE(KqpOlapScheme) { + Y_UNIT_TEST(DropTable) { + TKikimrSettings runnerSettings; + runnerSettings.WithSampleTables = false; + TTestHelper testHelper(runnerSettings); + + TVector<TTestHelper::TColumnSchema> schema = { + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) + }; + + TTestHelper::TColumnTable testTable; + testTable + .SetName("/Root/ColumnTableTest") + .SetPrimaryKey({ "id", "id_second" }) + .SetSharding({ "id" }) + .SetMinPartitionsCount(16) + .SetSchema(schema); + testHelper.CreateTable(testTable); + auto sender = testHelper.GetRuntime().AllocateEdgeActor(); + auto tabletIds = GetColumnTableShards(&testHelper.GetKikimr().GetTestServer(), sender, "/Root/ColumnTableTest"); + for (auto tablet: tabletIds) { + UNIT_ASSERT_C(testHelper.GetKikimr().GetTestClient().TabletExistsInHive(&testHelper.GetRuntime(), tablet), ToString(tablet) + " not alive"); + } + testHelper.DropTable("/Root/ColumnTableTest"); + for (auto tablet: tabletIds) { + UNIT_ASSERT_C(!testHelper.GetKikimr().GetTestClient().TabletExistsInHive(&testHelper.GetRuntime(), tablet), ToString(tablet) + " is alive"); + } + } + Y_UNIT_TEST(AddColumnLongPk) { TKikimrSettings runnerSettings; runnerSettings.WithSampleTables = false; @@ -5210,6 +5242,52 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { } } + Y_UNIT_TEST(InvalidColumnInTieringRule) { + auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>(); + + TKikimrSettings runnerSettings; + runnerSettings.WithSampleTables = false; + TTestHelper testHelper(runnerSettings); + Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); + + const TString tableName = "/Root/ColumnTableTest"; + + TVector<TTestHelper::TColumnSchema> schema = { + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) + }; + + TTestHelper::TColumnTable testTable; + testTable.SetName(tableName).SetPrimaryKey({"id", "id_second"}).SetSharding({"id"}).SetSchema(schema).SetTTL("created_at", "Interval(\"PT1H\")"); + testHelper.CreateTable(testTable); + testHelper.CreateTier("tier1"); + + { + TTestHelper::TUpdatesBuilder tableInserter(testTable.GetArrowSchema(schema)); + tableInserter.AddRow().Add(1).Add(1).Add(7).Add((TInstant::Now() - TDuration::Days(30)).MilliSeconds()); + tableInserter.AddRow().Add(1).Add(2).Add(7).Add((TInstant::Now() - TDuration::Days(30)).MilliSeconds()); + testHelper.BulkUpsert(testTable, tableInserter); + } + + while (csController->GetInsertFinishedCounter().Val() == 0) { + Cout << "Wait indexation..." << Endl; + Sleep(TDuration::Seconds(2)); + } + + // const auto ruleName = testHelper.CreateTieringRule("tier1", "created_att"); + const auto ruleName = testHelper.CreateTieringRule("tier1", "created_at"); + testHelper.SetTiering(tableName, ruleName); + + while (csController->GetTieringUpdates().Val() == 0) { + Cout << "Wait tiering..." << Endl; + Sleep(TDuration::Seconds(2)); + } + + testHelper.RebootTablets(tableName); + } + Y_UNIT_TEST(AddColumnWithTtl) { TKikimrSettings runnerSettings; runnerSettings.WithSampleTables = false; @@ -5242,7 +5320,6 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { UNIT_ASSERT_VALUES_EQUAL(description.GetTtlSettings()->GetDateTypeColumn().GetExpireAfter(), TDuration::Hours(1)); } { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "` ADD COLUMN new_column Uint64;"; auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); @@ -5257,12 +5334,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { UNIT_ASSERT_VALUES_EQUAL(columns.size(), 5); UNIT_ASSERT_VALUES_EQUAL(description.GetTtlSettings()->GetDateTypeColumn().GetExpireAfter(), TDuration::Hours(1)); } - { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); - auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << R"(` SET(TIERING = 'tiering1');)"; - auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); - } + testHelper.SetTiering("/Root/ColumnTableTest", "tiering1"); { auto settings = TDescribeTableSettings().WithTableStatistics(true); auto describeResult = testHelper.GetSession().DescribeTable("/Root/ColumnTableTest", settings).GetValueSync(); @@ -5274,7 +5346,6 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { UNIT_ASSERT_VALUES_EQUAL(description.GetTtlSettings()->GetDateTypeColumn().GetExpireAfter(), TDuration::Hours(1)); } { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << R"(` RESET (TTL);)"; auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); @@ -5289,12 +5360,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { UNIT_ASSERT_VALUES_EQUAL(*description.GetTiering(), "tiering1"); UNIT_ASSERT(!description.GetTtlSettings()); } - { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); - auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << R"(` RESET (TIERING);)"; - auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); - UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); - } + testHelper.ResetTiering("/Root/ColumnTableTest"); { auto settings = TDescribeTableSettings().WithTableStatistics(true); auto describeResult = testHelper.GetSession().DescribeTable("/Root/ColumnTableTest", settings).GetValueSync(); @@ -5368,7 +5434,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; - + Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); TTestHelper::TColumnTable testTable; @@ -5533,8 +5599,8 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { testHelper.ReadData("SELECT resource_id FROM `/Root/TableStoreTest/ColumnTableTest` WHERE id=3", "[[[\"test_res_3\"]]]"); testHelper.ReadData("SELECT new_column FROM `/Root/TableStoreTest/ColumnTableTest`", "[[#];[#];[[200u]]]"); - // testHelper.RebootTablets(testTable.GetName()); - // testHelper.ReadData("SELECT new_column FROM `/Root/TableStoreTest/ColumnTableTest`", "[[#];[#];[[200u]]]"); + testHelper.RebootTablets(testTable.GetName()); + testHelper.ReadData("SELECT new_column FROM `/Root/TableStoreTest/ColumnTableTest`", "[[#];[#];[[200u]]]"); } Y_UNIT_TEST(AddColumnErrors) { @@ -5593,6 +5659,19 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { testHelper.ReadData("SELECT * FROM `/Root/ColumnTableTest` WHERE id=1", "[]"); } + Y_UNIT_TEST(BulkError) { + TKikimrSettings runnerSettings; + runnerSettings.WithSampleTables = false; + TTestHelper testHelper(runnerSettings); + + TVector<TTestHelper::TColumnSchema> schema = { + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Uuid).SetNullable(true) + }; + TTestHelper::TColumnTable testTable; + testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema); + testHelper.CreateTable(testTable, NYdb::EStatus::SCHEME_ERROR); + } Y_UNIT_TEST(DropColumn) { TKikimrSettings runnerSettings; runnerSettings.WithSampleTables = false; @@ -5840,6 +5919,26 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { } testHelper.ReadData("SELECT COUNT(*) FROM `/Root/ColumnTableTest`", "[[10000u]]"); } + + Y_UNIT_TEST(NullKeySchema) { + TKikimrSettings runnerSettings; + runnerSettings.WithSampleTables = false; + TTestHelper testHelper(runnerSettings); + + TVector<TTestHelper::TColumnSchema> schema = { + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(true), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32).SetNullable(false) + }; + TTestHelper::TColumnTableStore testTableStore; + testTableStore.SetName("/Root/TableStoreTest").SetPrimaryKey({"id"}).SetSchema(schema); + testHelper.CreateTable(testTableStore, EStatus::SCHEME_ERROR); + + TTestHelper::TColumnTable testTable; + testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSchema(schema); + testHelper.CreateTable(testTable, EStatus::SCHEME_ERROR); + } + } Y_UNIT_TEST_SUITE(KqpOlapTypes) { diff --git a/ydb/core/kqp/ut/scheme/ya.make b/ydb/core/kqp/ut/scheme/ya.make index d086e49f2bcf..4b73a38eb2ea 100644 --- a/ydb/core/kqp/ut/scheme/ya.make +++ b/ydb/core/kqp/ut/scheme/ya.make @@ -23,6 +23,7 @@ PEERDIR( ydb/core/kqp ydb/core/kqp/ut/common ydb/library/yql/sql/pg_dummy + ydb/core/tx/columnshard/hooks/testing ) YQL_LAST_ABI_VERSION() diff --git a/ydb/core/protos/config.proto b/ydb/core/protos/config.proto index ec5ce939a55f..c4b01265d7da 100644 --- a/ydb/core/protos/config.proto +++ b/ydb/core/protos/config.proto @@ -1481,7 +1481,6 @@ message TColumnShardConfig { TMinimalTablesCountPolicy MinimalTables = 1; TIdentityGroupsPolicy IdentityGroups = 2; } - } optional TTablesStorageLayoutPolicy TablesStorageLayoutPolicy = 1; optional bool DisabledOnSchemeShard = 2 [default = true]; @@ -1494,6 +1493,15 @@ message TColumnShardConfig { optional bool UseChunkedMergeOnCompaction = 9 [default = true]; optional uint64 CompactionMemoryLimit = 10 [default = 536870912]; optional uint64 TieringsMemoryLimit = 11 [default = 536870912]; + message TIndexMetadataMemoryLimit { + oneof Value { + double TotalRatio = 1 [default = 0.3]; + uint64 AbsoluteValue = 2; + } + } + + optional TIndexMetadataMemoryLimit IndexMetadataMemoryLimit = 12; + optional bool CleanupEnabled = 13 [default = true]; } message TSchemeShardConfig { diff --git a/ydb/core/protos/counters_columnshard.proto b/ydb/core/protos/counters_columnshard.proto index 428621d0f20b..b2002ee2cca8 100644 --- a/ydb/core/protos/counters_columnshard.proto +++ b/ydb/core/protos/counters_columnshard.proto @@ -49,6 +49,7 @@ enum ESimpleCounters { COUNTER_EVICTED_BYTES = 39 [(CounterOpts) = {Name: "Index/EvictedBytes"}]; COUNTER_EVICTED_RAW_BYTES = 40 [(CounterOpts) = {Name: "Index/EvictedBytesRaw"}]; COUNTER_WRITES_IN_FLY = 41 [(CounterOpts) = {Name: "WritesInFly"}]; + COUNTER_TX_COMPLETE_LAG = 42 [(CounterOpts) = {Name: "TxCompleteLag"}]; } enum ECumulativeCounters { @@ -177,5 +178,16 @@ enum ETxTypes { TXTYPE_WRITE_DRAFT = 15 [(TxTypeOpts) = {Name: "TxWriteDraft"}]; TXTYPE_CLEANUP_INSERT_TABLE = 16 [(TxTypeOpts) = {Name: "TxInsertTableCleanup"}]; TXTYPE_GC_FINISHED = 17 [(TxTypeOpts) = {Name: "TxGarbageCollectionFinished"}]; - + TXTYPE_DELETE_SHARED_BLOBS = 18 [(TxTypeOpts) = {Name: "TxDeleteSharedBlobs"}]; + TXTYPE_DATA_SHARING_FINISH_ACK_TO_SOURCE = 19 [(TxTypeOpts) = {Name: "TxDataSharingFinishAckToSource"}]; + TXTYPE_DATA_SHARING_START_TO_SOURCE = 20 [(TxTypeOpts) = {Name: "TxDataSharingStartToSource"}]; + TXTYPE_DATA_SHARING_DATA_ACK_TO_SOURCE = 21 [(TxTypeOpts) = {Name: "TxDataSharingDataAckToSource"}]; + TXTYPE_DATA_SHARING_DATA_FROM_SOURCE = 22 [(TxTypeOpts) = {Name: "TxDataSharingDataFromSource"}]; + TXTYPE_DATA_SHARING_FINISH_ACK_FROM_INITIATOR = 23 [(TxTypeOpts) = {Name: "TxDataSharingFinishAckFromInitiator"}]; + TXTYPE_DATA_SHARING_FINISH_FROM_SOURCE = 24 [(TxTypeOpts) = {Name: "TxDataSharingFinishFromSource"}]; + TXTYPE_DATA_SHARING_PROPOSE_FROM_INITIATOR = 25 [(TxTypeOpts) = {Name: "TxDataSharingProposeFromInitiator"}]; + TXTYPE_DATA_SHARING_CONFIRM_FROM_INITIATOR = 26 [(TxTypeOpts) = {Name: "TxDataSharingConfirmFromInitiator"}]; + TXTYPE_DATA_SHARING_APPLY_LINKS_MODIFICATION = 27 [(TxTypeOpts) = {Name: "TxDataSharingApplyLinksModification"}]; + TXTYPE_DATA_SHARING_WRITE_SOURCE_CURSOR = 28 [(TxTypeOpts) = {Name: "TxDataSharingWriteSourceCursor"}]; + TXTYPE_EXPORT_SAVE_CURSOR = 29 [(TxTypeOpts) = {Name: "TxExportSaveCursor"}]; } diff --git a/ydb/core/protos/flat_scheme_op.proto b/ydb/core/protos/flat_scheme_op.proto index d20f3b253de6..399eda8924f0 100644 --- a/ydb/core/protos/flat_scheme_op.proto +++ b/ydb/core/protos/flat_scheme_op.proto @@ -17,6 +17,7 @@ import "ydb/public/api/protos/ydb_value.proto"; import "ydb/library/actors/protos/actors.proto"; import "ydb/library/mkql_proto/protos/minikql.proto"; import "ydb/core/protos/index_builder.proto"; +import "ydb/core/tx/columnshard/engines/scheme/statistics/protos/data.proto"; import "google/protobuf/empty.proto"; @@ -418,6 +419,7 @@ message TOlapColumnDiff { optional string Name = 1; optional TDictionaryEncodingSettings DictionaryEncoding = 4; optional TOlapColumn.TSerializer Serializer = 5; + optional string StorageId = 6; } message TOlapColumnDescription { @@ -435,6 +437,7 @@ message TOlapColumnDescription { optional TCompressionOptions Compression = 8[deprecated = true]; optional TDictionaryEncodingSettings DictionaryEncoding = 9; optional TOlapColumn.TSerializer Serializer = 10; + optional string StorageId = 11; } message TRequestedBloomFilter { @@ -445,8 +448,9 @@ message TRequestedBloomFilter { message TOlapIndexRequested { optional string Name = 1; optional TCompressionOptions Compression = 3; + optional string StorageId = 4; - optional string ClassName = 2; + optional string ClassName = 39; oneof Implementation { TRequestedBloomFilter BloomFilter = 40; } @@ -465,9 +469,11 @@ message TOlapIndexDescription { optional string Name = 2; optional TCompressionOptions Compression = 3; - optional string ClassName = 4; + optional string StorageId = 4; + + optional string ClassName = 40; oneof Implementation { - TBloomFilter BloomFilter = 40; + TBloomFilter BloomFilter = 41; } } @@ -487,6 +493,10 @@ message TStorageTierConfig { optional TCompressionOptions Compression = 3; } +message TColumnTableSchemeOptions { + optional bool SchemeNeedActualization = 1 [default = false]; +} + message TColumnTableSchema { // A list of columns for tables with this schema repeated TOlapColumnDescription Columns = 1; @@ -507,6 +517,12 @@ message TColumnTableSchema { optional bool CompositeMarks = 9 [ default = false ]; repeated TOlapIndexDescription Indexes = 10; + repeated NKikimrColumnShardStatisticsProto.TOperatorContainer Statistics = 11; + optional TColumnTableSchemeOptions Options = 12; +} + +message TColumnTableRequestedOptions { + optional bool SchemeNeedActualization = 1 [default = false]; } message TAlterColumnTableSchema { @@ -516,6 +532,9 @@ message TAlterColumnTableSchema { repeated TOlapColumnDiff AlterColumns = 7; repeated TOlapIndexRequested UpsertIndexes = 8; repeated string DropIndexes = 9; + repeated NKikimrColumnShardStatisticsProto.TConstructorContainer UpsertStatistics = 10; + repeated string DropStatistics = 11; + optional TColumnTableRequestedOptions Options = 12; } // Schema presets are used to manage multiple tables with the same schema @@ -1000,6 +1019,9 @@ message TS3Settings { optional uint32 RequestTimeoutMs = 101; optional uint32 HttpRequestTimeoutMs = 102; optional uint32 ConnectionTimeoutMs = 103; + + optional uint32 ExecutorThreadsCount = 104 [default = 32]; + optional uint32 MaxConnectionsCount = 105 [default = 32]; }; message TTaskCleaner { diff --git a/ydb/core/protos/tx_columnshard.proto b/ydb/core/protos/tx_columnshard.proto index 1700172483fa..2caec98084ab 100644 --- a/ydb/core/protos/tx_columnshard.proto +++ b/ydb/core/protos/tx_columnshard.proto @@ -1,4 +1,5 @@ import "ydb/library/actors/protos/actors.proto"; +import "ydb/core/tx/columnshard/engines/scheme/statistics/protos/data.proto"; import "ydb/core/protos/flat_scheme_op.proto"; import "ydb/core/protos/long_tx_service.proto"; import "ydb/core/protos/subdomains.proto"; @@ -128,6 +129,7 @@ enum ETransactionKind { TX_KIND_TTL = 3; // Immediate (not planned) TX_KIND_DATA = 4; TX_KIND_COMMIT_WRITE = 5; + TX_KIND_BACKUP = 6; } enum ETransactionFlag { @@ -181,6 +183,14 @@ message TCommitTxBody { repeated uint64 WriteIds = 2; } +message TBackupTxBody { + optional NKikimrSchemeOp.TBackupTask BackupTask = 1; +} + +message TCommitWriteTxBody { + optional uint64 LockId = 1; +} + message TSchemaPresetVersionInfo { optional uint64 Id = 1; optional uint64 SinceStep = 2; @@ -277,6 +287,7 @@ message TIndexPortionMeta { optional bytes PrimaryKeyBorders = 6; // arrow::RecordBatch with first and last ReplaceKey rows optional TSnapshot RecordSnapshotMin = 7; optional TSnapshot RecordSnapshotMax = 8; + optional NKikimrColumnShardStatisticsProto.TPortionStorage StatisticsStorage = 9; } message TIndexColumnMeta { diff --git a/ydb/core/protos/ya.make b/ydb/core/protos/ya.make index 13c7f54a784f..014ae2e924ac 100644 --- a/ydb/core/protos/ya.make +++ b/ydb/core/protos/ya.make @@ -158,6 +158,7 @@ PEERDIR( ydb/library/yql/public/types ydb/library/services ydb/library/ydb_issue/proto + ydb/core/tx/columnshard/engines/scheme/statistics/protos ) EXCLUDE_TAGS(GO_PROTO) diff --git a/ydb/core/sys_view/common/schema.cpp b/ydb/core/sys_view/common/schema.cpp index 80ef81d4dec3..66c0d9192327 100644 --- a/ydb/core/sys_view/common/schema.cpp +++ b/ydb/core/sys_view/common/schema.cpp @@ -215,7 +215,11 @@ class TSystemViewResolver : public ISystemViewResolver { RegisterSystemView<Schema::QueryMetrics>(QueryMetricsName); RegisterOlapStoreSystemView<Schema::PrimaryIndexStats>(StorePrimaryIndexStatsName); + RegisterOlapStoreSystemView<Schema::PrimaryIndexPortionStats>(StorePrimaryIndexPortionStatsName); + RegisterOlapStoreSystemView<Schema::PrimaryIndexGranuleStats>(StorePrimaryIndexGranuleStatsName); RegisterColumnTableSystemView<Schema::PrimaryIndexStats>(TablePrimaryIndexStatsName); + RegisterColumnTableSystemView<Schema::PrimaryIndexPortionStats>(TablePrimaryIndexPortionStatsName); + RegisterColumnTableSystemView<Schema::PrimaryIndexGranuleStats>(TablePrimaryIndexGranuleStatsName); RegisterSystemView<Schema::TopPartitions>(TopPartitions1MinuteName); RegisterSystemView<Schema::TopPartitions>(TopPartitions1HourName); diff --git a/ydb/core/sys_view/common/schema.h b/ydb/core/sys_view/common/schema.h index a3ef043fadc8..c2fbbc3a9f04 100644 --- a/ydb/core/sys_view/common/schema.h +++ b/ydb/core/sys_view/common/schema.h @@ -31,7 +31,11 @@ constexpr TStringBuf TabletsName = "hive_tablets"; constexpr TStringBuf QueryMetricsName = "query_metrics_one_minute"; constexpr TStringBuf StorePrimaryIndexStatsName = "store_primary_index_stats"; +constexpr TStringBuf StorePrimaryIndexPortionStatsName = "store_primary_index_portion_stats"; +constexpr TStringBuf StorePrimaryIndexGranuleStatsName = "store_primary_index_granule_stats"; constexpr TStringBuf TablePrimaryIndexStatsName = "primary_index_stats"; +constexpr TStringBuf TablePrimaryIndexPortionStatsName = "primary_index_portion_stats"; +constexpr TStringBuf TablePrimaryIndexGranuleStatsName = "primary_index_granule_stats"; constexpr TStringBuf TopPartitions1MinuteName = "top_partitions_one_minute"; constexpr TStringBuf TopPartitions1HourName = "top_partitions_one_hour"; @@ -463,6 +467,89 @@ struct Schema : NIceDb::Schema { IndexSize, InFlightTxCount>; }; + + struct QuerySessions : Table<13> { + struct SessionId : Column<1, NScheme::NTypeIds::Utf8> {}; + struct NodeId : Column<2, NScheme::NTypeIds::Uint32> {}; + struct State : Column<3, NScheme::NTypeIds::Utf8> {}; + struct Query : Column<4, NScheme::NTypeIds::Utf8> {}; + struct QueryCount : Column<5, NScheme::NTypeIds::Uint32> {}; + struct ClientAddress : Column<6, NScheme::NTypeIds::Utf8> {}; + struct ClientPID : Column<7, NScheme::NTypeIds::Utf8> {}; + struct ClientUserAgent : Column<8, NScheme::NTypeIds::Utf8> {}; + struct ClientSdkBuildInfo : Column<9, NScheme::NTypeIds::Utf8> {}; + struct ApplicationName : Column<10, NScheme::NTypeIds::Utf8> {}; + struct SessionStartAt : Column<11, NScheme::NTypeIds::Timestamp> {}; + struct QueryStartAt : Column<12, NScheme::NTypeIds::Timestamp> {}; + struct StateChangeAt : Column<13, NScheme::NTypeIds::Timestamp> {}; + struct UserSID : Column<14, NScheme::NTypeIds::Utf8> {}; + + using TKey = TableKey<SessionId>; + using TColumns = TableColumns< + SessionId, + NodeId, + State, + Query, + QueryCount, + ClientAddress, + ClientPID, + ClientUserAgent, + ClientSdkBuildInfo, + ApplicationName, + SessionStartAt, + QueryStartAt, + StateChangeAt, + UserSID>; + }; + + struct PrimaryIndexPortionStats: Table<14> { + struct PathId: Column<1, NScheme::NTypeIds::Uint64> {}; + struct Kind: Column<2, NScheme::NTypeIds::Utf8> {}; + struct TabletId: Column<3, NScheme::NTypeIds::Uint64> {}; + struct Rows: Column<4, NScheme::NTypeIds::Uint64> {}; + struct ColumnRawBytes: Column<5, NScheme::NTypeIds::Uint64> {}; + struct IndexRawBytes: Column<6, NScheme::NTypeIds::Uint64> {}; + struct ColumnBlobBytes: Column<7, NScheme::NTypeIds::Uint64> {}; + struct IndexBlobBytes: Column<8, NScheme::NTypeIds::Uint64> {}; + struct PortionId: Column<9, NScheme::NTypeIds::Uint64> {}; + struct Activity: Column<10, NScheme::NTypeIds::Bool> {}; + struct TierName: Column<11, NScheme::NTypeIds::Utf8> {}; + struct Stats: Column<12, NScheme::NTypeIds::Utf8> {}; + + using TKey = TableKey<PathId, TabletId, PortionId>; + using TColumns = TableColumns< + PathId, + Kind, + TabletId, + Rows, + ColumnRawBytes, + IndexRawBytes, + ColumnBlobBytes, + IndexBlobBytes, + PortionId, + Activity, + TierName, + Stats + >; + }; + + struct PrimaryIndexGranuleStats: Table<14> { + struct PathId: Column<1, NScheme::NTypeIds::Uint64> {}; + struct TabletId: Column<2, NScheme::NTypeIds::Uint64> {}; + struct PortionsCount: Column<3, NScheme::NTypeIds::Uint64> {}; + struct HostName: Column<4, NScheme::NTypeIds::Utf8> {}; + struct NodeId: Column<5, NScheme::NTypeIds::Uint64> {}; + + using TKey = TableKey<PathId, TabletId>; + using TColumns = TableColumns< + PathId, + TabletId, + PortionsCount, + HostName, + NodeId + >; + }; + }; bool MaybeSystemViewPath(const TVector<TString>& path); diff --git a/ydb/core/testlib/common_helper.cpp b/ydb/core/testlib/common_helper.cpp index 26841ce1af6b..d5267342d540 100644 --- a/ydb/core/testlib/common_helper.cpp +++ b/ydb/core/testlib/common_helper.cpp @@ -32,7 +32,7 @@ TLoggerInit::TLoggerInit(NKqp::TKikimrRunner& kikimr) void TLoggerInit::Initialize() { for (auto&& i : Services) { - for (auto&& s : i) { + for (auto&& s : i.second) { Runtime->SetLogPriority(s, Priority); } } @@ -60,7 +60,9 @@ void THelper::StartScanRequest(const TString& request, const bool expectSuccess, }); const TInstant start = TInstant::Now(); while (!resultReady && start + TDuration::Seconds(60) > TInstant::Now()) { + Cerr << "START_SLEEP" << Endl; Server.GetRuntime()->SimulateSleep(TDuration::Seconds(1)); + Cerr << "FINISHED_SLEEP" << Endl; if (scanIterator && !resultReady) { scanIterator->ReadNext().Subscribe([&](NThreading::TFuture<NYdb::NTable::TScanQueryPart> streamPartFuture) { NYdb::NTable::TScanQueryPart streamPart = streamPartFuture.GetValueSync(); diff --git a/ydb/core/testlib/common_helper.h b/ydb/core/testlib/common_helper.h index 0160f8e0e8a1..76b3eaf67938 100644 --- a/ydb/core/testlib/common_helper.h +++ b/ydb/core/testlib/common_helper.h @@ -16,10 +16,12 @@ class TLoggerInit { private: NActors::TTestActorRuntime* Runtime; NActors::NLog::EPriority Priority = NActors::NLog::EPriority::PRI_DEBUG; - std::vector<std::vector<NKikimrServices::EServiceKikimr>> Services = {KqpServices, CSServices}; + THashMap<TString, std::vector<NKikimrServices::EServiceKikimr>> Services; public: TLoggerInit(NActors::TTestActorRuntime* runtime) : Runtime(runtime) { + Services.emplace("KQP", KqpServices); + Services.emplace("CS", CSServices); } TLoggerInit(NActors::TTestActorRuntime& runtime) : Runtime(&runtime) { @@ -29,12 +31,20 @@ class TLoggerInit { ~TLoggerInit() { Initialize(); } - TLoggerInit& SetComponents(const std::vector<NKikimrServices::EServiceKikimr> services) { - Services = { services }; + TLoggerInit& Clear() { + Services.clear(); return *this; } - TLoggerInit& AddComponents(const std::vector<NKikimrServices::EServiceKikimr> services) { - Services.emplace_back(services); + TLoggerInit& SetComponents(const std::vector<NKikimrServices::EServiceKikimr> services, const TString& name) { + Services[name] = services; + return *this; + } + TLoggerInit& AddComponents(const std::vector<NKikimrServices::EServiceKikimr> services, const TString& name) { + AFL_VERIFY(Services.emplace(name, services).second); + return *this; + } + TLoggerInit& RemoveComponents(const TString& name) { + Services.erase(name); return *this; } TLoggerInit& SetPriority(const NActors::NLog::EPriority priority) { diff --git a/ydb/core/testlib/cs_helper.cpp b/ydb/core/testlib/cs_helper.cpp index 4853290f8637..65a1b1b87148 100644 --- a/ydb/core/testlib/cs_helper.cpp +++ b/ydb/core/testlib/cs_helper.cpp @@ -109,7 +109,7 @@ std::shared_ptr<arrow::Schema> THelper::GetArrowSchema() const { std::vector<std::shared_ptr<arrow::Field>> fields; fields.emplace_back(arrow::field("timestamp", arrow::timestamp(arrow::TimeUnit::TimeUnit::MICRO), false)); fields.emplace_back(arrow::field("resource_id", arrow::utf8())); - fields.emplace_back(arrow::field("uid", arrow::utf8())); + fields.emplace_back(arrow::field("uid", arrow::utf8(), false)); fields.emplace_back(arrow::field("level", arrow::int32())); fields.emplace_back(arrow::field("message", arrow::utf8())); if (GetWithJsonDocument()) { @@ -183,9 +183,9 @@ TString THelper::GetTestTableSchema() const { TStringBuilder sb; sb << R"(Columns{ Name: "timestamp" Type : "Timestamp" NotNull : true })"; sb << R"(Columns{ Name: "resource_id" Type : "Utf8" })"; - sb << R"(Columns{ Name: "uid" Type : "Utf8" })"; + sb << "Columns{ Name: \"uid\" Type : \"Utf8\" NotNull : true StorageId : \"" + OptionalStorageId + "\" }"; sb << R"(Columns{ Name: "level" Type : "Int32" })"; - sb << R"(Columns{ Name: "message" Type : "Utf8" })"; + sb << "Columns{ Name: \"message\" Type : \"Utf8\" StorageId : \"" + OptionalStorageId + "\" }"; if (GetWithJsonDocument()) { sb << R"(Columns{ Name: "json_payload" Type : "JsonDocument" })"; } @@ -425,11 +425,11 @@ std::shared_ptr<arrow::RecordBatch> TTableWithNullsHelper::TestArrowBatch(ui64, Y_ABORT_UNLESS(bResourceId.AppendNull().ok()); Y_ABORT_UNLESS(bLevel.Append(i).ok()); Y_ABORT_UNLESS(bBinaryStr.AppendNull().ok()); - Y_ABORT_UNLESS(bJsonVal.Append(std::string(R"({"col1": "val1", "obj": {"obj_col2_int": 16}})")).ok()); + Y_ABORT_UNLESS(bJsonVal.Append(std::string(R"({"col1": "val1", "col-abc": "val-abc", "obj": {"obj_col2_int": 16}})")).ok()); Y_ABORT_UNLESS(bJsonDoc.AppendNull().ok()); } - const auto maybeJsonDoc = std::string(R"({"col1": "val1", "obj": {"obj_col2_int": 16}})"); + const auto maybeJsonDoc = std::string(R"({"col1": "val1", "col-abc": "val-abc", "obj": {"obj_col2_int": 16}})"); for (size_t i = rowCount / 2 + 1; i <= rowCount; ++i) { Y_ABORT_UNLESS(bId.Append(i).ok()); Y_ABORT_UNLESS(bResourceId.Append(std::to_string(i)).ok()); diff --git a/ydb/core/testlib/cs_helper.h b/ydb/core/testlib/cs_helper.h index 8714eb0727d4..7a9e3dad1bf3 100644 --- a/ydb/core/testlib/cs_helper.h +++ b/ydb/core/testlib/cs_helper.h @@ -26,6 +26,7 @@ class THelper: public THelperSchemaless { std::shared_ptr<arrow::Schema> GetArrowSchema() const; YDB_FLAG_ACCESSOR(WithJsonDocument, false); + YDB_ACCESSOR(TString, OptionalStorageId, "__MEMORY"); TString ShardingMethod = "HASH_FUNCTION_CONSISTENCY_64"; bool WithSomeNulls_ = false; protected: diff --git a/ydb/core/tx/columnshard/background_controller.cpp b/ydb/core/tx/columnshard/background_controller.cpp index 99010cbaa203..542251c2c25a 100644 --- a/ydb/core/tx/columnshard/background_controller.cpp +++ b/ydb/core/tx/columnshard/background_controller.cpp @@ -3,37 +3,11 @@ namespace NKikimr::NColumnShard { -void TBackgroundController::StartTtl(const NOlap::TColumnEngineChanges& changes) { - Y_ABORT_UNLESS(TtlPortions.empty()); - TtlPortions = changes.GetTouchedPortions(); -} - -bool TBackgroundController::StartCompaction(const NOlap::TPlanCompactionInfo& info, const NOlap::TColumnEngineChanges& changes) { +bool TBackgroundController::StartCompaction(const NOlap::TPlanCompactionInfo& info) { Y_ABORT_UNLESS(ActiveCompactionInfo.emplace(info.GetPathId(), info).second); - Y_ABORT_UNLESS(CompactionInfoPortions.emplace(info.GetPathId(), changes.GetTouchedPortions()).second); return true; } -THashSet<NOlap::TPortionAddress> TBackgroundController::GetConflictTTLPortions() const { - THashSet<NOlap::TPortionAddress> result = TtlPortions; - for (auto&& i : CompactionInfoPortions) { - for (auto&& g : i.second) { - Y_ABORT_UNLESS(result.emplace(g).second); - } - } - return result; -} - -THashSet<NOlap::TPortionAddress> TBackgroundController::GetConflictCompactionPortions() const { - THashSet<NOlap::TPortionAddress> result = TtlPortions; - for (auto&& i : CompactionInfoPortions) { - for (auto&& g : i.second) { - Y_ABORT_UNLESS(result.emplace(g).second); - } - } - return result; -} - void TBackgroundController::CheckDeadlines() { for (auto&& i : ActiveCompactionInfo) { if (TMonotonic::Now() - i.second.GetStartTime() > NOlap::TCompactionLimits::CompactionTimeout) { @@ -73,13 +47,4 @@ TString TBackgroundController::DebugStringIndexation() const { return sb; } -TString TBackgroundActivity::DebugString() const { - return TStringBuilder() - << "indexation:" << HasIndexation() << ";" - << "compaction:" << HasCompaction() << ";" - << "cleanup:" << HasCleanup() << ";" - << "ttl:" << HasTtl() << ";" - ; -} - } diff --git a/ydb/core/tx/columnshard/background_controller.h b/ydb/core/tx/columnshard/background_controller.h index fad724213dd5..b88e1be3bcea 100644 --- a/ydb/core/tx/columnshard/background_controller.h +++ b/ydb/core/tx/columnshard/background_controller.h @@ -8,52 +8,15 @@ class TColumnEngineChanges; namespace NKikimr::NColumnShard { -class TBackgroundActivity { -public: - enum EBackActivity : ui32 { - NONE = 0x00, - INDEX = 0x01, - COMPACT = 0x02, - CLEAN = 0x04, - TTL = 0x08, - ALL = 0xffff - }; - - static TBackgroundActivity Indexation() { return TBackgroundActivity(INDEX); } - static TBackgroundActivity Compaction() { return TBackgroundActivity(COMPACT); } - static TBackgroundActivity Cleanup() { return TBackgroundActivity(CLEAN); } - static TBackgroundActivity Ttl() { return TBackgroundActivity(TTL); } - static TBackgroundActivity All() { return TBackgroundActivity(ALL); } - static TBackgroundActivity None() { return TBackgroundActivity(NONE); } - - TBackgroundActivity() = default; - - bool HasIndexation() const { return Activity & INDEX; } - bool HasCompaction() const { return Activity & COMPACT; } - bool HasCleanup() const { return Activity & CLEAN; } - bool HasTtl() const { return Activity & TTL; } - bool HasAll() const { return Activity == ALL; } - - TString DebugString() const; - -private: - EBackActivity Activity = NONE; - - TBackgroundActivity(EBackActivity activity) - : Activity(activity) - {} -}; - class TBackgroundController { private: THashMap<TString, TMonotonic> ActiveIndexationTasks; using TCurrentCompaction = THashMap<ui64, NOlap::TPlanCompactionInfo>; TCurrentCompaction ActiveCompactionInfo; - THashMap<ui64, THashSet<NOlap::TPortionAddress>> CompactionInfoPortions; - bool ActiveCleanup = false; - THashSet<NOlap::TPortionAddress> TtlPortions; + bool ActiveCleanupPortions = false; + bool ActiveCleanupTables = false; YDB_READONLY(TMonotonic, LastIndexationInstant, TMonotonic::Zero()); public: THashSet<NOlap::TPortionAddress> GetConflictTTLPortions() const; @@ -62,10 +25,9 @@ class TBackgroundController { void CheckDeadlines(); void CheckDeadlinesIndexation(); - bool StartCompaction(const NOlap::TPlanCompactionInfo& info, const NOlap::TColumnEngineChanges& changes); + bool StartCompaction(const NOlap::TPlanCompactionInfo& info); void FinishCompaction(const NOlap::TPlanCompactionInfo& info) { Y_ABORT_UNLESS(ActiveCompactionInfo.erase(info.GetPathId())); - Y_ABORT_UNLESS(CompactionInfoPortions.erase(info.GetPathId())); } const TCurrentCompaction& GetActiveCompaction() const { return ActiveCompactionInfo; @@ -81,25 +43,28 @@ class TBackgroundController { return ActiveIndexationTasks.size(); } - void StartCleanup() { - Y_ABORT_UNLESS(!ActiveCleanup); - ActiveCleanup = true; + void StartCleanupPortions() { + Y_ABORT_UNLESS(!ActiveCleanupPortions); + ActiveCleanupPortions = true; } - void FinishCleanup() { - Y_ABORT_UNLESS(ActiveCleanup); - ActiveCleanup = false; + void FinishCleanupPortions() { + Y_ABORT_UNLESS(ActiveCleanupPortions); + ActiveCleanupPortions = false; } - bool IsCleanupActive() const { - return ActiveCleanup; + bool IsCleanupPortionsActive() const { + return ActiveCleanupPortions; } - void StartTtl(const NOlap::TColumnEngineChanges& changes); - void FinishTtl() { - Y_ABORT_UNLESS(!TtlPortions.empty()); - TtlPortions.clear(); + void StartCleanupTables() { + Y_ABORT_UNLESS(!ActiveCleanupTables); + ActiveCleanupTables = true; + } + void FinishCleanupTables() { + Y_ABORT_UNLESS(ActiveCleanupTables); + ActiveCleanupTables = false; } - bool IsTtlActive() const { - return !TtlPortions.empty(); + bool IsCleanupTablesActive() const { + return ActiveCleanupTables; } }; diff --git a/ydb/core/tx/columnshard/blob.cpp b/ydb/core/tx/columnshard/blob.cpp index 0a7a3ecbdb04..ec92f317f225 100644 --- a/ydb/core/tx/columnshard/blob.cpp +++ b/ydb/core/tx/columnshard/blob.cpp @@ -1,187 +1 @@ #include "blob.h" -#include "defs.h" - -#include <charconv> - -namespace NKikimr::NOlap { - -// Format: "S3-f(logoBlobId)-group" -// Example: "S3-42-72075186224038245_51_31595_2_0_11952_0-2181038103" -TString DsIdToS3Key(const TUnifiedBlobId& dsid, const ui64 pathId) { - TString blobId = dsid.GetLogoBlobId().ToString(); - for (auto&& c : blobId) { - switch (c) { - case ':': - c = '_'; - break; - case '[': - case ']': - c = '-'; - } - } - TString result = - "S3-" + - ::ToString(pathId) + - blobId + - ::ToString(dsid.GetDsGroup()) - ; - return result; -} - -TUnifiedBlobId S3KeyToDsId(const TString& s, TString& error, ui64& pathId) { - TVector<TString> keyBucket; - Split(s, "-", keyBucket); - - ui32 dsGroup; - if (keyBucket.size() != 4 || keyBucket[0] != "S3" - || !TryFromString<ui32>(keyBucket[3], dsGroup) - || !TryFromString<ui64>(keyBucket[1], pathId)) - { - error = TStringBuilder() << "Wrong S3 key '" << s << "'"; - return TUnifiedBlobId(); - } - - TString blobId = "[" + keyBucket[2] + "]"; - for (size_t i = 0; i < blobId.size(); ++i) { - switch (blobId[i]) { - case '_': - blobId[i] = ':'; - break; - } - } - - TLogoBlobID logoBlobId; - if (!TLogoBlobID::Parse(logoBlobId, blobId, error)) { - return TUnifiedBlobId(); - } - - return TUnifiedBlobId(dsGroup, logoBlobId); -} - -namespace { - -#define PARSE_INT_COMPONENT(fieldType, fieldName, endChar) \ - if (pos >= endPos) { \ - error = "Failed to parse " #fieldName " component"; \ - return TUnifiedBlobId(); \ - } \ - fieldType fieldName = -1; \ - { \ - auto [ptr, ec] { std::from_chars(str + pos, str + endPos, fieldName) }; \ - if (ec != std::errc()) { \ - error = "Failed to parse " #fieldName " component"; \ - return TUnifiedBlobId(); \ - } else { \ - pos = ptr - str; \ - } \ - if (str[pos++] != endChar) { \ - error = #endChar " not found after " #fieldName; \ - return TUnifiedBlobId(); \ - } \ - } - -// Format: "DS:group:logoBlobId" -// Example: "DS:2181038103:[72075186224038245:51:31595:2:0:11952:0]" -TUnifiedBlobId ParseExtendedDsBlobId(const TString& s, TString& error) { - Y_ABORT_UNLESS(s.size() > 2); - const char* str = s.c_str(); - Y_ABORT_UNLESS(str[0] == 'D' && str[1] == 'S'); - i64 pos = 2; - i64 endPos = s.size(); - if (str[pos++] != ':') { - error = "Starting ':' not found"; - return TUnifiedBlobId(); - } - - PARSE_INT_COMPONENT(ui32, dsGroup, ':'); - - TLogoBlobID logoBlobId; - if (!TLogoBlobID::Parse(logoBlobId, s.substr(pos), error)) { - return TUnifiedBlobId(); - } - - return TUnifiedBlobId(dsGroup, logoBlobId); -} - -// Format: "SM[tabletId:generation:step:cookie:size]" -// Example: "SM[72075186224038245:51:31184:0:2528]" -TUnifiedBlobId ParseSmallBlobId(const TString& s, TString& error) { - Y_ABORT_UNLESS(s.size() > 2); - const char* str = s.c_str(); - Y_ABORT_UNLESS(str[0] == 'S' && str[1] == 'M'); - i64 pos = 2; - i64 endPos = s.size(); - if (str[pos++] != '[') { - error = "opening [ not found"; - return TUnifiedBlobId(); - } - - PARSE_INT_COMPONENT(ui64, tabletId, ':'); - PARSE_INT_COMPONENT(ui32, gen, ':'); - PARSE_INT_COMPONENT(ui32, step, ':'); - PARSE_INT_COMPONENT(ui32, cookie, ':'); - PARSE_INT_COMPONENT(ui32, size, ']'); - - if (pos != endPos) { - error = "Extra characters after closing ]"; - return TUnifiedBlobId(); - } - - return TUnifiedBlobId(tabletId, gen, step, cookie, size); -} - -// Format: "s = S3_key" -TUnifiedBlobId ParseS3BlobId(const TString& s, TString& error) { - ui64 pathId; - TUnifiedBlobId dsBlobId = S3KeyToDsId(s, error, pathId); - if (!dsBlobId.IsValid()) { - return TUnifiedBlobId(); - } - - return TUnifiedBlobId(dsBlobId, TUnifiedBlobId::S3_BLOB, pathId); -} - -} - -TUnifiedBlobId TUnifiedBlobId::ParseFromString(const TString& str, - const IBlobGroupSelector* dsGroupSelector, TString& error) -{ - if (str.size() <= 2) { - error = TStringBuilder() << "Wrong blob id: '" << str << "'"; - return TUnifiedBlobId(); - } - - if (str[0] == '[') { - // If blobId starts with '[' this must be a logoblobId and if channel is set to FAKE_CHANNEL - // this is a fake logoblobid used for small blob - TLogoBlobID logoBlobId; - bool parsed = TLogoBlobID::Parse(logoBlobId, str, error); - if (!parsed) { - error = "Cannot parse TLogoBlobID: " + error; - return TUnifiedBlobId(); - } - if (logoBlobId.Channel() == TSmallBlobId::FAKE_CHANNEL) { - // Small blob - return TUnifiedBlobId(logoBlobId.TabletID(), logoBlobId.Generation(), logoBlobId.Step(), - logoBlobId.Cookie(), logoBlobId.BlobSize()); - } else { - // DS blob - if (!dsGroupSelector) { - error = "Need TBlobGroupSelector to resolve DS group for the blob"; - return TUnifiedBlobId(); - } - return TUnifiedBlobId(dsGroupSelector->GetGroup(logoBlobId), logoBlobId); - } - } else if (str[0] == 'D' && str[1] == 'S') { - return ParseExtendedDsBlobId(str, error); - } else if (str[0] == 'S' && str[1] == 'M') { - return ParseSmallBlobId(str, error); - } else if (str[0] == 'S' && str[1] == '3') { - return ParseS3BlobId(str, error); - } - - error = TStringBuilder() << "Wrong blob id: '" << str << "'"; - return TUnifiedBlobId(); -} - -} diff --git a/ydb/core/tx/columnshard/blob.h b/ydb/core/tx/columnshard/blob.h index 0c3cb27bdb3c..4a2dad81a540 100644 --- a/ydb/core/tx/columnshard/blob.h +++ b/ydb/core/tx/columnshard/blob.h @@ -1,448 +1,3 @@ #pragma once -#include <ydb/core/base/logoblob.h> - -#include <util/generic/string.h> - -namespace NKikimr::NOlap { - -class IBlobGroupSelector; -class TUnifiedBlobId; - -TString DsIdToS3Key(const TUnifiedBlobId& dsid, const ui64 pathId); -TUnifiedBlobId S3KeyToDsId(const TString& s, TString& error, ui64& pathId); - -// Encapsulates different types of blob ids to simplify dealing with blobs for the -// components that do not need to know where the blob is stored -// Blob id formats: -// * Old DS blob id: just "logoBlobId" e.g. "[72075186224038245:51:31595:2:0:11952:0]" -// * DS blob id: "DS:dsGroup:logoBlobId" e.g. "DS:2181038103:[72075186224038245:51:31595:2:0:11952:0]" -// * Small blob id: "SM[tabletId:generation:step:cookie:size]" e.g. "SM[72075186224038245:51:31184:0:2528]" -class TUnifiedBlobId { - struct TInvalid { - bool operator == (const TInvalid&) const { return true; } - }; - - // Id of a blob in YDB distributed storage - struct TDsBlobId { - TLogoBlobID BlobId; - ui32 DsGroup; - - bool operator == (const TDsBlobId& other) const { - return BlobId == other.BlobId && DsGroup == other.DsGroup; - } - - TString ToStringNew() const { - return Sprintf( "DS:%" PRIu32 ":%s", DsGroup, BlobId.ToString().c_str()); - } - - TString ToStringLegacy() const { - return BlobId.ToString(); - } - - ui64 Hash() const { - return CombineHashes<ui64>(BlobId.Hash(), IntHash(DsGroup)); - } - }; - - // Id of a blob that is stored in Tablet local DB table - struct TSmallBlobId { - static constexpr ui8 FAKE_CHANNEL = 255; // Small blob id can be represented as - // a fake TLogoBlobID with channel = FAKE_CHANNEL - - ui64 TabletId; - ui32 Gen; - ui32 Step; - ui32 Cookie; - ui32 Size; - - bool operator == (const TSmallBlobId& other) const { - return TabletId == other.TabletId && - Gen == other.Gen && - Step == other.Step && - Cookie == other.Cookie && - Size == other.Size; - } - - TString ToStringNew() const { - return Sprintf( "SM[%" PRIu64 ":%" PRIu32 ":%" PRIu32 ":%" PRIu32 ":%" PRIu32 "]", - TabletId, Gen, Step, Cookie, Size); - } - - TString ToStringLegacy() const { - // For compatibility with preproduction version small blobs can also be - // addressed by fake TlogoBlobID with channel = 255 - return TLogoBlobID(TabletId, Gen, Step, FAKE_CHANNEL, Size, Cookie).ToString(); - } - - ui64 Hash() const { - ui64 hash = IntHash(TabletId); - hash = CombineHashes<ui64>(hash, IntHash(Gen)); - hash = CombineHashes<ui64>(hash, IntHash(Step)); - hash = CombineHashes<ui64>(hash, IntHash(Cookie)); - hash = CombineHashes<ui64>(hash, IntHash(Size)); - return hash; - } - }; - - struct TS3BlobId { - TDsBlobId DsBlobId; - TString Key; - - TS3BlobId() = default; - - TS3BlobId(const TUnifiedBlobId& dsBlob, const ui64 pathId) - { - Y_ABORT_UNLESS(dsBlob.IsDsBlob()); - DsBlobId = std::get<TDsBlobId>(dsBlob.Id); - Key = DsIdToS3Key(dsBlob, pathId); - } - - bool operator == (const TS3BlobId& other) const { - return Key == other.Key; - } - - TString ToStringNew() const { - return Sprintf("%s", Key.c_str()); - } - - ui64 Hash() const { - return IntHash(THash<TString>()(Key)); - } - }; - - std::variant< - TInvalid, - TDsBlobId, - TSmallBlobId, - TS3BlobId - > Id; - -public: - enum EBlobType { - INVALID = 0, - DS_BLOB = 1, - TABLET_SMALL_BLOB = 2, - S3_BLOB = 3, - }; - - TUnifiedBlobId() - : Id(TInvalid()) - {} - - // Initialize as DS blob Id - TUnifiedBlobId(ui32 dsGroup, const TLogoBlobID& logoBlobId) - : Id(TDsBlobId{logoBlobId, dsGroup}) - {} - - // Initialize as Small blob Id - TUnifiedBlobId(ui64 tabletId, ui32 gen, ui32 step, ui32 cookie, ui32 size) - : Id(TSmallBlobId{tabletId, gen, step, cookie, size}) - {} - - // Make S3 blob Id from DS one - TUnifiedBlobId(const TUnifiedBlobId& blob, EBlobType type, const ui64 pathId) - : Id(TS3BlobId(blob, pathId)) - { - Y_ABORT_UNLESS(type == S3_BLOB); - } - - TUnifiedBlobId(const TUnifiedBlobId& other) = default; - TUnifiedBlobId& operator = (const TUnifiedBlobId& logoBlobId) = default; - TUnifiedBlobId(TUnifiedBlobId&& other) = default; - TUnifiedBlobId& operator = (TUnifiedBlobId&& logoBlobId) = default; - - TUnifiedBlobId MakeS3BlobId(ui64 pathId) const { - Y_ABORT_UNLESS(IsDsBlob()); - return TUnifiedBlobId(*this, TUnifiedBlobId::S3_BLOB, pathId); - } - - static TUnifiedBlobId ParseFromString(const TString& str, - const IBlobGroupSelector* dsGroupSelector, TString& error); - - bool operator == (const TUnifiedBlobId& other) const { - return Id == other.Id; - } - - EBlobType GetType() const { - return (EBlobType)Id.index(); - } - - bool IsValid() const { - return Id.index() != INVALID; - } - - size_t BlobSize() const { - switch (Id.index()) { - case DS_BLOB: - return std::get<TDsBlobId>(Id).BlobId.BlobSize(); - case TABLET_SMALL_BLOB: - return std::get<TSmallBlobId>(Id).Size; - case S3_BLOB: - return std::get<TS3BlobId>(Id).DsBlobId.BlobId.BlobSize(); - case INVALID: - Y_ABORT("Invalid blob id"); - } - Y_ABORT(); - } - - bool IsSmallBlob() const { - return GetType() == TABLET_SMALL_BLOB; - } - - bool IsDsBlob() const { - return GetType() == DS_BLOB; - } - - bool IsS3Blob() const { - return GetType() == S3_BLOB; - } - - TLogoBlobID GetLogoBlobId() const { - Y_ABORT_UNLESS(IsDsBlob()); - return std::get<TDsBlobId>(Id).BlobId; - } - - ui32 GetDsGroup() const { - Y_ABORT_UNLESS(IsDsBlob()); - return std::get<TDsBlobId>(Id).DsGroup; - } - - TString GetS3Key() const { - Y_ABORT_UNLESS(IsS3Blob()); - return std::get<TS3BlobId>(Id).Key; - } - - ui64 GetTabletId() const { - switch (Id.index()) { - case DS_BLOB: - return std::get<TDsBlobId>(Id).BlobId.TabletID(); - case TABLET_SMALL_BLOB: - return std::get<TSmallBlobId>(Id).TabletId; - case S3_BLOB: - return std::get<TS3BlobId>(Id).DsBlobId.BlobId.TabletID(); - case INVALID: - Y_ABORT("Invalid blob id"); - } - Y_ABORT(); - } - - ui64 Hash() const noexcept { - switch (Id.index()) { - case INVALID: - return 0; - case DS_BLOB: - return std::get<TDsBlobId>(Id).Hash(); - case TABLET_SMALL_BLOB: - return std::get<TSmallBlobId>(Id).Hash(); - case S3_BLOB: - return std::get<TS3BlobId>(Id).Hash(); - } - Y_ABORT(); - } - - // This is only implemented for DS for backward compatibility with persisted data. - // All new functionality should rahter use string blob id representation - TString SerializeBinary() const { - Y_ABORT_UNLESS(IsDsBlob()); - return TString((const char*)GetLogoBlobId().GetRaw(), sizeof(TLogoBlobID)); - } - - TString ToStringLegacy() const { - switch (Id.index()) { - case DS_BLOB: - return std::get<TDsBlobId>(Id).ToStringLegacy(); - case TABLET_SMALL_BLOB: - return std::get<TSmallBlobId>(Id).ToStringLegacy(); - case S3_BLOB: - Y_ABORT("Not implemented"); - case INVALID: - return "<Invalid blob id>"; - } - Y_ABORT(); - } - - TString ToStringNew() const { - switch (Id.index()) { - case DS_BLOB: - return std::get<TDsBlobId>(Id).ToStringNew(); - case TABLET_SMALL_BLOB: - return std::get<TSmallBlobId>(Id).ToStringNew(); - case S3_BLOB: - return std::get<TS3BlobId>(Id).ToStringNew(); - case INVALID: - return "<Invalid blob id>"; - } - Y_ABORT(); - } -}; - - -// Describes a range of bytes in a blob. It is used for read requests and for caching. -struct TBlobRange { - TUnifiedBlobId BlobId; - ui32 Offset; - ui32 Size; - - const TUnifiedBlobId& GetBlobId() const { - return BlobId; - } - - bool IsValid() const { - return BlobId.IsValid() && Size && Offset + Size <= BlobId.BlobSize(); - } - - ui32 GetBlobSize() const { - return Size; - } - - bool IsFullBlob() const { - return Size == BlobId.BlobSize(); - } - - explicit TBlobRange(const TUnifiedBlobId& blobId = TUnifiedBlobId(), ui32 offset = 0, ui32 size = 0) - : BlobId(blobId) - , Offset(offset) - , Size(size) - { - if (Size > 0) { - Y_ABORT_UNLESS(Offset < BlobId.BlobSize()); - Y_ABORT_UNLESS(Offset + Size <= BlobId.BlobSize()); - } - } - - static TBlobRange FromBlobId(const TUnifiedBlobId& blobId) { - return TBlobRange(blobId, 0, blobId.BlobSize()); - } - - bool operator == (const TBlobRange& other) const { - return - BlobId == other.BlobId && - Offset == other.Offset && - Size == other.Size; - } - - ui64 Hash() const noexcept { - ui64 hash = BlobId.Hash(); - hash = CombineHashes<ui64>(hash, IntHash(Offset)); - hash = CombineHashes<ui64>(hash, IntHash(Size)); - return hash; - } - - TString ToString() const { - return Sprintf("{ Blob: %s Offset: %" PRIu32 " Size: %" PRIu32 " }", - BlobId.ToStringNew().c_str(), Offset, Size); - } -}; - -class IBlobInUseTracker { -private: - virtual bool DoFreeBlob(const NOlap::TUnifiedBlobId& blobId) = 0; - virtual bool DoUseBlob(const NOlap::TUnifiedBlobId& blobId) = 0; -public: - virtual ~IBlobInUseTracker() = default; - - bool FreeBlob(const NOlap::TUnifiedBlobId& blobId) { - return DoFreeBlob(blobId); - } - bool UseBlob(const NOlap::TUnifiedBlobId& blobId) { - return DoUseBlob(blobId); - } - - virtual bool IsBlobInUsage(const NOlap::TUnifiedBlobId& blobId) const = 0; -}; - -// Expected blob lifecycle: EVICTING -> SELF_CACHED -> EXTERN <-> CACHED -enum class EEvictState : ui8 { - UNKNOWN = 0, - EVICTING = 1, // source, extern, cached blobs: 1-- - SELF_CACHED = 2, // source, extern, cached blobs: 11- - EXTERN = 3, // source, extern, cached blobs: -1- - CACHED = 4, // source, extern, cached blobs: -11 - ERASING = 5, // source, extern, cached blobs: -?? - //ERASED = 6, // source, extern, cached blobs: --- -}; - -inline bool IsExported(EEvictState state) { - return state == EEvictState::SELF_CACHED || - state == EEvictState::EXTERN || - state == EEvictState::CACHED; -} - -inline bool CouldBeExported(EEvictState state) { - return state == EEvictState::SELF_CACHED || - state == EEvictState::EXTERN || - state == EEvictState::CACHED || - state == EEvictState::ERASING; -} - -inline bool IsDeleted(EEvictState state) { - return ui8(state) >= ui8(EEvictState::EXTERN); // !EVICTING and !SELF_CACHED -} - -struct TEvictedBlob { - EEvictState State = EEvictState::UNKNOWN; - TUnifiedBlobId Blob; - TUnifiedBlobId ExternBlob; - TUnifiedBlobId CachedBlob; - - bool operator == (const TEvictedBlob& other) const { - return Blob == other.Blob; - } - - ui64 Hash() const noexcept { - return Blob.Hash(); - } - - bool IsEvicting() const { - return State == EEvictState::EVICTING; - } - - bool IsExternal() const { - if (State == EEvictState::EXTERN) { - Y_ABORT_UNLESS(ExternBlob.IsValid()); - return true; - } - return false; - } - - TString ToString() const { - return TStringBuilder() << "state: " << (ui32)State - << " blob: " << Blob.ToStringNew() - << " extern: " << ExternBlob.ToStringNew() - << " cached: " << CachedBlob.ToStringNew(); - } -}; - -} - -inline -IOutputStream& operator <<(IOutputStream& out, const NKikimr::NOlap::TUnifiedBlobId& blobId) { - return out << blobId.ToStringNew(); -} - -inline -IOutputStream& operator <<(IOutputStream& out, const NKikimr::NOlap::TBlobRange& blobRange) { - return out << blobRange.ToString(); -} - -template<> -struct ::THash<NKikimr::NOlap::TUnifiedBlobId> { - inline ui64 operator()(const NKikimr::NOlap::TUnifiedBlobId& a) const { - return a.Hash(); - } -}; - -template <> -struct THash<NKikimr::NOlap::TBlobRange> { - inline size_t operator() (const NKikimr::NOlap::TBlobRange& key) const { - return key.Hash(); - } -}; - -template <> -struct THash<NKikimr::NOlap::TEvictedBlob> { - inline size_t operator() (const NKikimr::NOlap::TEvictedBlob& key) const { - return key.Hash(); - } -}; +#include "common/blob.h" diff --git a/ydb/core/tx/columnshard/blob_cache.cpp b/ydb/core/tx/columnshard/blob_cache.cpp index 123fefbbacea..0287b876d509 100644 --- a/ydb/core/tx/columnshard/blob_cache.cpp +++ b/ydb/core/tx/columnshard/blob_cache.cpp @@ -62,18 +62,8 @@ class TBlobCache: public TActorBootstrapped<TBlobCache> { // (e.g. DS blobs from the same tablet residing on the same DS group, or 2 small blobs from the same tablet) std::tuple<ui64, ui32, EReadVariant> BlobSource() const { const TUnifiedBlobId& blobId = BlobRange.BlobId; - Y_ABORT_UNLESS(blobId.IsValid()); - - if (blobId.IsDsBlob()) { - // Tablet & group restriction - return {blobId.GetTabletId(), blobId.GetDsGroup(), ReadVariant()}; - } else if (blobId.IsSmallBlob()) { - // Tablet restriction, no group restrictions - return {blobId.GetTabletId(), 0, ReadVariant()}; - } - - return {0, 0, EReadVariant::FAST}; + return {blobId.GetTabletId(), blobId.GetDsGroup(), ReadVariant()}; } }; @@ -409,7 +399,6 @@ class TBlobCache: public TActorBootstrapped<TBlobCache> { ui64 requestSize = 0; ui32 dsGroup = std::get<1>(target); TReadItem::EReadVariant readVariant = std::get<2>(target); - Y_ABORT_UNLESS(rangesGroup.begin()->BlobId.IsDsBlob()); std::vector<ui64> dsReads; diff --git a/ydb/core/tx/columnshard/blob_cache.h b/ydb/core/tx/columnshard/blob_cache.h index d65dc6aa6242..75e0ccf0a677 100644 --- a/ydb/core/tx/columnshard/blob_cache.h +++ b/ydb/core/tx/columnshard/blob_cache.h @@ -74,12 +74,14 @@ struct TEvBlobCache { TString Data; const bool FromCache = false; const TInstant ConstructTime = Now(); + const TString DataSourceId; - TEvReadBlobRangeResult(const TBlobRange& blobRange, NKikimrProto::EReplyStatus status, const TString& data, const bool fromCache = false) + TEvReadBlobRangeResult(const TBlobRange& blobRange, NKikimrProto::EReplyStatus status, const TString& data, const bool fromCache = false, const TString& dataSourceId = Default<TString>()) : BlobRange(blobRange) , Status(status) , Data(data) , FromCache(fromCache) + , DataSourceId(dataSourceId) {} }; diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/action.cpp b/ydb/core/tx/columnshard/blobs_action/abstract/action.cpp index fdd3fd5adba1..f1d2e4e051ee 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/action.cpp +++ b/ydb/core/tx/columnshard/blobs_action/abstract/action.cpp @@ -3,16 +3,4 @@ namespace NKikimr::NOlap { -std::shared_ptr<NKikimr::NOlap::IBlobsWritingAction> TBlobsAction::GetWriting(const TPortionInfo& portionInfo) { - return GetStorageAction(portionInfo.GetBlobsStorage()->GetStorageId()).GetWriting(ConsumerId); -} - -std::shared_ptr<NKikimr::NOlap::IBlobsReadingAction> TBlobsAction::GetReading(const TPortionInfo& portionInfo) { - return GetStorageAction(portionInfo.GetBlobsStorage()->GetStorageId()).GetReading(ConsumerId); -} - -std::shared_ptr<NKikimr::NOlap::IBlobsDeclareRemovingAction> TBlobsAction::GetRemoving(const TPortionInfo& portionInfo) { - return GetStorageAction(portionInfo.GetBlobsStorage()->GetStorageId()).GetRemoving(ConsumerId); -} - } diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/action.h b/ydb/core/tx/columnshard/blobs_action/abstract/action.h index 6f10c41d9169..90d5959e51c4 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/action.h +++ b/ydb/core/tx/columnshard/blobs_action/abstract/action.h @@ -22,13 +22,13 @@ class TStorageAction { } - const std::shared_ptr<IBlobsDeclareRemovingAction>& GetRemoving(const TString& consumerId) { + const std::shared_ptr<IBlobsDeclareRemovingAction>& GetRemoving(const NBlobOperations::EConsumer consumerId) { if (!Removing) { Removing = Storage->StartDeclareRemovingAction(consumerId); } return Removing; } - const std::shared_ptr<IBlobsWritingAction>& GetWriting(const TString& consumerId) { + const std::shared_ptr<IBlobsWritingAction>& GetWriting(const NBlobOperations::EConsumer consumerId) { if (!Writing) { Writing = Storage->StartWritingAction(consumerId); } @@ -37,7 +37,7 @@ class TStorageAction { const std::shared_ptr<IBlobsWritingAction>& GetWritingOptional() const { return Writing; } - const std::shared_ptr<IBlobsReadingAction>& GetReading(const TString& consumerId) { + const std::shared_ptr<IBlobsReadingAction>& GetReading(const NBlobOperations::EConsumer consumerId) { if (!Reading) { Reading = Storage->StartReadingAction(consumerId); } @@ -55,9 +55,9 @@ class TStorageAction { return !!Writing; } - void OnExecuteTxAfterAction(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { + void OnExecuteTxAfterAction(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { if (Removing) { - Removing->OnExecuteTxAfterRemoving(self, dbBlobs, blobsWroteSuccessfully); + Removing->OnExecuteTxAfterRemoving(dbBlobs, blobsWroteSuccessfully); } if (Writing) { Writing->OnExecuteTxAfterWrite(self, dbBlobs, blobsWroteSuccessfully); @@ -66,7 +66,7 @@ class TStorageAction { void OnCompleteTxAfterAction(NColumnShard::TColumnShard& self, const bool blobsWroteSuccessfully) { if (Removing) { - Removing->OnCompleteTxAfterRemoving(self, blobsWroteSuccessfully); + Removing->OnCompleteTxAfterRemoving(blobsWroteSuccessfully); } if (Writing) { Writing->OnCompleteTxAfterWrite(self, blobsWroteSuccessfully); @@ -78,7 +78,7 @@ class TBlobsAction { private: std::shared_ptr<IStoragesManager> Storages; THashMap<TString, TStorageAction> StorageActions; - const TString ConsumerId; + const NBlobOperations::EConsumer ConsumerId; TStorageAction& GetStorageAction(const TString& storageId) { auto it = StorageActions.find(storageId); @@ -88,13 +88,21 @@ class TBlobsAction { return it->second; } public: - explicit TBlobsAction(std::shared_ptr<IStoragesManager> storages, const TString& consumerId) + explicit TBlobsAction(std::shared_ptr<IStoragesManager> storages, const NBlobOperations::EConsumer consumerId) : Storages(storages) , ConsumerId(consumerId) { } + TString GetStorageIds() const { + TStringBuilder sb; + for (auto&& i : StorageActions) { + sb << i.first << ","; + } + return sb; + } + ui32 GetWritingBlobsCount() const { ui32 result = 0; for (auto&& [_, action] : StorageActions) { @@ -135,16 +143,22 @@ class TBlobsAction { return result; } - bool NeedDraftWritingTransaction() const { + [[nodiscard]] TConclusion<bool> NeedDraftWritingTransaction() const { + bool hasWriting = false; for (auto&& i : GetWritingActions()) { if (i->NeedDraftTransaction()) { return true; } + hasWriting = true; + } + if (hasWriting) { + return false; + } else { + return TConclusionStatus::Fail("has not writings"); } - return false; } - void OnExecuteTxAfterAction(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { + void OnExecuteTxAfterAction(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { for (auto&& i : StorageActions) { i.second.OnExecuteTxAfterAction(self, dbBlobs, blobsWroteSuccessfully); } @@ -160,20 +174,14 @@ class TBlobsAction { return GetStorageAction(storageId).GetRemoving(ConsumerId); } - std::shared_ptr<IBlobsDeclareRemovingAction> GetRemoving(const TPortionInfo& portionInfo); - std::shared_ptr<IBlobsWritingAction> GetWriting(const TString& storageId) { return GetStorageAction(storageId).GetWriting(ConsumerId); } - std::shared_ptr<IBlobsWritingAction> GetWriting(const TPortionInfo& portionInfo); - std::shared_ptr<IBlobsReadingAction> GetReading(const TString& storageId) { return GetStorageAction(storageId).GetReading(ConsumerId); } - std::shared_ptr<IBlobsReadingAction> GetReading(const TPortionInfo& portionInfo); - }; } diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/blob_set.cpp b/ydb/core/tx/columnshard/blobs_action/abstract/blob_set.cpp new file mode 100644 index 000000000000..b0952746b9ba --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/abstract/blob_set.cpp @@ -0,0 +1,57 @@ +#include "blob_set.h" + +#include <ydb/core/tx/columnshard/blobs_action/protos/blobs.pb.h> + +#include <util/generic/refcount.h> + +namespace NKikimr::NOlap { + +NKikimrColumnShardBlobOperationsProto::TTabletByBlob TTabletByBlob::SerializeToProto() const { + NKikimrColumnShardBlobOperationsProto::TTabletByBlob result; + for (auto&& i : Data) { + auto* blobsProto = result.AddBlobs(); + blobsProto->SetBlobId(i.first.ToStringNew()); + blobsProto->SetTabletId((ui64)i.second); + } + return result; +} + +NKikimr::TConclusionStatus TTabletByBlob::DeserializeFromProto(const NKikimrColumnShardBlobOperationsProto::TTabletByBlob& proto) { + for (auto&& i : proto.GetBlobs()) { + auto parse = TUnifiedBlobId::BuildFromString(i.GetBlobId(), nullptr); + if (!parse) { + return parse; + } + AFL_VERIFY(Data.emplace(*parse, (TTabletId)i.GetTabletId()).second); + } + return TConclusionStatus::Success(); +} + +NKikimrColumnShardBlobOperationsProto::TTabletsByBlob TTabletsByBlob::SerializeToProto() const { + NKikimrColumnShardBlobOperationsProto::TTabletsByBlob result; + for (auto&& i : Data) { + auto* blobsProto = result.AddBlobs(); + blobsProto->SetBlobId(i.first.ToStringNew()); + for (auto&& t : i.second) { + blobsProto->AddTabletIds((ui64)t); + } + } + return result; +} + +NKikimr::TConclusionStatus TTabletsByBlob::DeserializeFromProto(const NKikimrColumnShardBlobOperationsProto::TTabletsByBlob& proto) { + for (auto&& i : proto.GetBlobs()) { + auto parse = TUnifiedBlobId::BuildFromString(i.GetBlobId(), nullptr); + if (!parse) { + return parse; + } + auto it = Data.emplace(*parse, THashSet<TTabletId>()).first; + for (auto&& t : i.GetTabletIds()) { + AFL_VERIFY(it->second.emplace((TTabletId)t).second); + ++Size; + } + } + return TConclusionStatus::Success(); +} + +} diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/blob_set.h b/ydb/core/tx/columnshard/blobs_action/abstract/blob_set.h new file mode 100644 index 000000000000..7692dad22eb2 --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/abstract/blob_set.h @@ -0,0 +1,512 @@ +#pragma once +#include <ydb/core/tx/columnshard/common/tablet_id.h> +#include <ydb/core/tx/columnshard/blob.h> + +#include <ydb/library/accessor/accessor.h> +#include <ydb/library/services/services.pb.h> +#include <ydb/library/actors/core/log.h> + +#include <util/generic/string.h> +#include <util/generic/guid.h> +#include <util/generic/hash_set.h> +#include <util/system/types.h> + +namespace NKikimrColumnShardBlobOperationsProto { +class TTabletByBlob; +class TTabletsByBlob; +} + +namespace NKikimr::NOlap { + +class TTabletByBlob { +private: + THashMap<TUnifiedBlobId, TTabletId> Data; +public: + NKikimrColumnShardBlobOperationsProto::TTabletByBlob SerializeToProto() const; + + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardBlobOperationsProto::TTabletByBlob& proto); + + THashMap<TUnifiedBlobId, TTabletId>::const_iterator begin() const { + return Data.begin(); + } + + THashMap<TUnifiedBlobId, TTabletId>::const_iterator end() const { + return Data.end(); + } + + const THashMap<TUnifiedBlobId, TTabletId>* operator->() const { + return &Data; + } + + THashMap<TUnifiedBlobId, TTabletId>* operator->() { + return &Data; + } + +}; + +class TTabletsByBlob { +private: + THashMap<TUnifiedBlobId, THashSet<TTabletId>> Data; + i32 Size = 0; +public: + ui32 GetSize() const { + return Size; + } + + void Clear() { + Data.clear(); + Size = 0; + } + + NKikimrColumnShardBlobOperationsProto::TTabletsByBlob SerializeToProto() const; + + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardBlobOperationsProto::TTabletsByBlob& proto); + + THashMap<TUnifiedBlobId, THashSet<TTabletId>>::const_iterator begin() const { + return Data.begin(); + } + + THashMap<TUnifiedBlobId, THashSet<TTabletId>>::const_iterator end() const { + return Data.end(); + } + + bool Contains(const TTabletId tabletId, const TUnifiedBlobId& blobId) const { + auto it = Data.find(blobId); + if (it == Data.end()) { + return false; + } + return it->second.contains(tabletId); + } + + const THashSet<TTabletId>* Find(const TUnifiedBlobId& blobId) const { + auto it = Data.find(blobId); + if (it == Data.end()) { + return nullptr; + } + return &it->second; + } + + bool IsEmpty() const { + return Data.empty(); + } + + template <class TFilter> + TTabletsByBlob ExtractBlobs(const TFilter& filter, const std::optional<ui32> countLimit = {}) { + TTabletsByBlob result; + THashSet<TUnifiedBlobId> idsRemove; + ui32 count = 0; + for (auto&& i : Data) { + if (filter(i.first, i.second)) { + idsRemove.emplace(i.first); + Size -= i.second.size(); + result.Data.emplace(i.first, i.second); + result.Size += i.second.size(); + count += i.second.size(); + if (countLimit && count >= *countLimit) { + break; + } + } + } + for (auto&& i : idsRemove) { + Data.erase(i); + } + return result; + } + + class TIterator { + private: + const TTabletsByBlob& Owner; + THashMap<TUnifiedBlobId, THashSet<TTabletId>>::const_iterator BlobsIterator; + THashSet<TTabletId>::const_iterator TabletsIterator; + public: + TIterator(const TTabletsByBlob& owner) + : Owner(owner) { + BlobsIterator = Owner.Data.begin(); + if (BlobsIterator != Owner.Data.end()) { + TabletsIterator = BlobsIterator->second.begin(); + } + } + + const TUnifiedBlobId& GetBlobId() const { + AFL_VERIFY(IsValid()); + return BlobsIterator->first; + } + + TTabletId GetTabletId() const { + AFL_VERIFY(IsValid()); + return *TabletsIterator; + } + + bool IsValid() const { + return BlobsIterator != Owner.Data.end() && TabletsIterator != BlobsIterator->second.end(); + } + + void operator++() { + AFL_VERIFY(IsValid()); + ++TabletsIterator; + if (TabletsIterator == BlobsIterator->second.end()) { + ++BlobsIterator; + if (BlobsIterator != Owner.Data.end()) { + TabletsIterator = BlobsIterator->second.begin(); + } + } + } + }; + + TIterator GetIterator() const { + return TIterator(*this); + } + + bool ExtractFront(TTabletId& tabletId, TUnifiedBlobId& blobId) { + if (Data.empty()) { + return false; + } + auto& b = Data.begin()->second; + AFL_VERIFY(b.size()); + tabletId = *b.begin(); + blobId = Data.begin()->first; + b.erase(b.begin()); + if (b.empty()) { + Data.erase(Data.begin()); + } + AFL_VERIFY(--Size >= 0); + return true; + } + + bool ExtractFrontTo(TTabletsByBlob& dest) { + TTabletId tabletId; + TUnifiedBlobId blobId; + if (!ExtractFront(tabletId, blobId)) { + return false; + } + AFL_VERIFY(dest.Add(tabletId, blobId)); + return true; + } + + bool ExtractBlobTo(const TUnifiedBlobId& blobId, TTabletsByBlob& dest) { + auto it = Data.find(blobId); + if (it == Data.end()) { + return false; + } + AFL_VERIFY(dest.Add(blobId, it->second)); + Size -= it->second.size(); + AFL_VERIFY(Size >= 0); + Data.erase(it); + return true; + } + + bool Add(const TTabletId tabletId, const TUnifiedBlobId& blobId) { + THashSet<TUnifiedBlobId> hashSet = {blobId}; + return Add(tabletId, hashSet); + } + + bool Add(const TTabletsByBlob& blobs) { + bool uniqueOnly = true; + for (auto&& i : blobs.Data) { + if (!Add(i.first, i.second)) { + uniqueOnly = false; + } + } + return uniqueOnly; + } + + bool Add(const TTabletId tabletId, const THashSet<TUnifiedBlobId>& blobIds) { + bool hasSkipped = false; + for (auto&& i : blobIds) { + auto it = Data.find(i); + if (it == Data.end()) { + THashSet<TTabletId> tabletsLocal = {tabletId}; + it = Data.emplace(i, tabletsLocal).first; + Size += 1; + } else { + if (!it->second.emplace(tabletId).second) { + hasSkipped = true; + } else { + Size += 1; + } + } + } + return !hasSkipped; + } + + bool Add(const TUnifiedBlobId& blobId, const THashSet<TTabletId>& tabletIds) { + bool hasSkipped = false; + if (tabletIds.empty()) { + return true; + } + auto& hashSet = Data[blobId]; + for (auto&& i : tabletIds) { + if (!hashSet.emplace(i).second) { + hasSkipped = true; + } else { + Size += 1; + } + } + return !hasSkipped; + } + + bool Remove(const TTabletId tabletId, const TUnifiedBlobId& blobId) { + auto it = Data.find(blobId); + if (it == Data.end()) { + return false; + } + auto itTablet = it->second.find(tabletId); + if (itTablet == it->second.end()) { + return false; + } + it->second.erase(itTablet); + AFL_VERIFY(--Size >= 0); + if (it->second.empty()) { + Data.erase(it); + } + return true; + } +}; + +class TBlobsByTablet { +private: + THashMap<TTabletId, THashSet<TUnifiedBlobId>> Data; +public: + class TIterator { + private: + const TBlobsByTablet* Owner; + THashMap<TTabletId, THashSet<TUnifiedBlobId>>::const_iterator TabletsIterator; + THashSet<TUnifiedBlobId>::const_iterator BlobsIterator; + public: + TIterator(const TBlobsByTablet& owner) + : Owner(&owner) + { + TabletsIterator = Owner->Data.begin(); + if (TabletsIterator != Owner->Data.end()) { + BlobsIterator = TabletsIterator->second.begin(); + } + } + + const TUnifiedBlobId& GetBlobId() const { + AFL_VERIFY(IsValid()); + return *BlobsIterator; + } + + TTabletId GetTabletId() const { + AFL_VERIFY(IsValid()); + return TabletsIterator->first; + } + + bool IsValid() const { + return TabletsIterator != Owner->Data.end() && BlobsIterator != TabletsIterator->second.end(); + } + + void operator++() { + AFL_VERIFY(IsValid()); + ++BlobsIterator; + if (BlobsIterator == TabletsIterator->second.end()) { + ++TabletsIterator; + if (TabletsIterator != Owner->Data.end()) { + BlobsIterator = TabletsIterator->second.begin(); + } + } + } + }; + + TIterator GetIterator() const { + return TIterator(*this); + } + + THashMap<TTabletId, THashSet<TUnifiedBlobId>>::const_iterator begin() const { + return Data.begin(); + } + + THashMap<TTabletId, THashSet<TUnifiedBlobId>>::const_iterator end() const { + return Data.end(); + } + + void GetFront(const ui32 count, TBlobsByTablet& result) const { + TBlobsByTablet resultLocal; + ui32 countReady = 0; + for (auto&& i : Data) { + for (auto&& b : i.second) { + if (countReady >= count) { + std::swap(result, resultLocal); + return; + } + resultLocal.Add(i.first, b); + ++countReady; + } + } + std::swap(result, resultLocal); + } + + const THashSet<TUnifiedBlobId>* Find(const TTabletId tabletId) const { + auto it = Data.find(tabletId); + if (it == Data.end()) { + return nullptr; + } + return &it->second; + } + + void ExtractFront(const ui32 count, TBlobsByTablet* result) { + TBlobsByTablet resultLocal; + ui32 countLocal = 0; + while (Data.size()) { + auto& t = *Data.begin(); + while (t.second.size()) { + auto& b = *t.second.begin(); + if (result && countLocal >= count) { + std::swap(*result, resultLocal); + return; + } + if (countLocal >= count) { + return; + } + ++countLocal; + if (result) { + resultLocal.Add(t.first, b); + } + t.second.erase(t.second.begin()); + } + if (t.second.empty()) { + Data.erase(Data.begin()); + } + } + if (result) { + std::swap(*result, resultLocal); + } + } + + bool Add(const TTabletId tabletId, const TUnifiedBlobId& blobId) { + auto it = Data.find(tabletId); + if (it == Data.end()) { + THashSet<TUnifiedBlobId> hashSet = {blobId}; + Data.emplace(tabletId, std::move(hashSet)); + return true; + } else { + return it->second.emplace(blobId).second; + } + } + + bool IsEmpty() const { + return Data.empty(); + } + + bool Remove(const TTabletId tabletId, const TUnifiedBlobId& blobId) { + auto it = Data.find(tabletId); + if (it == Data.end()) { + return false; + } else { + const bool result = it->second.erase(blobId); + if (result && it->second.empty()) { + Data.erase(it); + } + return result; + } + } + + bool Remove(const TTabletId tabletId) { + auto it = Data.find(tabletId); + if (it == Data.end()) { + return false; + } else { + Data.erase(it); + return true; + } + } +}; + +class TBlobsCategories { +private: + TTabletId SelfTabletId; + YDB_READONLY_DEF(TBlobsByTablet, Sharing); + YDB_ACCESSOR_DEF(TBlobsByTablet, Direct); + YDB_READONLY_DEF(TBlobsByTablet, Borrowed); +public: + bool IsEmpty() const { + return Sharing.IsEmpty() && Direct.IsEmpty() && Borrowed.IsEmpty(); + } + + class TIterator { + private: + const TBlobsCategories* Owner; + std::optional<TBlobsByTablet::TIterator> Sharing; + std::optional<TBlobsByTablet::TIterator> Direct; + std::optional<TBlobsByTablet::TIterator> Borrowed; + TBlobsByTablet::TIterator* CurrentIterator = nullptr; + + void SwitchIterator() { + CurrentIterator = nullptr; + if (Sharing && Sharing->IsValid()) { + CurrentIterator = &*Sharing; + } else { + Sharing.reset(); + } + if (Direct && Direct->IsValid()) { + CurrentIterator = &*Direct; + } else { + Direct.reset(); + } + if (Borrowed && Borrowed->IsValid()) { + CurrentIterator = &*Borrowed; + } else { + Borrowed.reset(); + } + } + + public: + TIterator(const TBlobsCategories& owner) + : Owner(&owner) + { + Sharing = Owner->Sharing.GetIterator(); + Direct = Owner->Direct.GetIterator(); + Borrowed = Owner->Borrowed.GetIterator(); + SwitchIterator(); + } + + const TUnifiedBlobId& GetBlobId() const { + AFL_VERIFY(IsValid()); + return CurrentIterator->GetBlobId(); + } + + TTabletId GetTabletId() const { + AFL_VERIFY(IsValid()); + return CurrentIterator->GetTabletId(); + } + + bool IsValid() const { + return CurrentIterator && CurrentIterator->IsValid(); + } + + void operator++() { + AFL_VERIFY(IsValid()); + ++*CurrentIterator; + if (!CurrentIterator->IsValid()) { + SwitchIterator(); + } + } + }; + + TIterator GetIterator() const { + return TIterator(*this); + } + + void AddDirect(const TTabletId tabletId, const TUnifiedBlobId& id) { + AFL_VERIFY(Direct.Add(tabletId, id)); + } + void AddBorrowed(const TTabletId tabletId, const TUnifiedBlobId& id) { + AFL_VERIFY(Borrowed.Add(tabletId, id)); + } + void AddSharing(const TTabletId tabletId, const TUnifiedBlobId& id) { + AFL_VERIFY(Sharing.Add(tabletId, id)); + } + void RemoveSharing(const TTabletId tabletId, const TUnifiedBlobId& id) { + Y_UNUSED(Sharing.Remove(tabletId, id)); + } + void RemoveBorrowed(const TTabletId tabletId, const TUnifiedBlobId& id) { + Y_UNUSED(Borrowed.Remove(tabletId, id)); + } + TBlobsCategories(const TTabletId selfTabletId) + : SelfTabletId(selfTabletId) + { + Y_UNUSED(SelfTabletId); + } +}; + +} diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/common.h b/ydb/core/tx/columnshard/blobs_action/abstract/common.h index 80ec48f7c952..8aa3881fec99 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/common.h +++ b/ydb/core/tx/columnshard/blobs_action/abstract/common.h @@ -1,9 +1,11 @@ #pragma once -#include <util/system/types.h> #include <ydb/library/accessor/accessor.h> -#include <ydb/library/services/services.pb.h> +#include <ydb/library/actors/core/log.h> + #include <util/generic/string.h> #include <util/generic/guid.h> +#include <util/generic/hash_set.h> +#include <util/system/types.h> namespace NKikimr::NOlap { diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/gc.cpp b/ydb/core/tx/columnshard/blobs_action/abstract/gc.cpp index dc1783692635..816ac9a8dfd2 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/gc.cpp +++ b/ydb/core/tx/columnshard/blobs_action/abstract/gc.cpp @@ -1,20 +1,34 @@ #include "gc.h" #include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> namespace NKikimr::NOlap { void IBlobsGCAction::OnCompleteTxAfterCleaning(NColumnShard::TColumnShard& self, const std::shared_ptr<IBlobsGCAction>& taskAction) { if (!AbortedFlag) { + NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build()("tablet_id", self.TabletID()); AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "OnCompleteTxAfterCleaning")("action_guid", GetActionGuid()); + auto storage = self.GetStoragesManager()->GetOperator(GetStorageId()); + storage->GetSharedBlobs()->OnTransactionCompleteAfterCleaning(BlobsToRemove); + for (auto i = BlobsToRemove.GetIterator(); i.IsValid(); ++i) { + Counters->OnReply(i.GetBlobId().BlobSize()); + } if (!DoOnCompleteTxAfterCleaning(self, taskAction)) { return; } - taskAction->OnFinished(); + OnFinished(); + NYDBTest::TControllers::GetColumnShardController()->OnAfterGCAction(self, *taskAction); } } -void IBlobsGCAction::OnExecuteTxAfterCleaning(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs) { +void IBlobsGCAction::OnExecuteTxAfterCleaning(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs) { if (!AbortedFlag) { + const NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build()("tablet_id", self.TabletID()); + auto storage = self.GetStoragesManager()->GetOperator(GetStorageId()); + storage->GetSharedBlobs()->OnTransactionExecuteAfterCleaning(BlobsToRemove, dbBlobs.GetDatabase()); + for (auto i = BlobsToRemove.GetIterator(); i.IsValid(); ++i) { + RemoveBlobIdFromDB(i.GetTabletId(), i.GetBlobId(), dbBlobs); + } AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "OnExecuteTxAfterCleaning")("action_guid", GetActionGuid()); return DoOnExecuteTxAfterCleaning(self, dbBlobs); } diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/gc.h b/ydb/core/tx/columnshard/blobs_action/abstract/gc.h index e310b9c4e935..ad381063e79e 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/gc.h +++ b/ydb/core/tx/columnshard/blobs_action/abstract/gc.h @@ -1,35 +1,56 @@ #pragma once #include "common.h" #include <util/generic/string.h> +#include <ydb/library/actors/core/log.h> +#include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h> +#include <ydb/core/tx/columnshard/blobs_action/counters/remove_gc.h> namespace NKikimr::NColumnShard { class TColumnShard; -class TBlobManagerDb; } namespace NKikimr::NOlap { +class TBlobManagerDb; class IBlobsGCAction: public ICommonBlobsAction { private: using TBase = ICommonBlobsAction; +protected: + TBlobsCategories BlobsToRemove; + std::shared_ptr<NBlobOperations::TRemoveGCCounters> Counters; protected: bool AbortedFlag = false; bool FinishedFlag = false; - virtual void DoOnExecuteTxAfterCleaning(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs) = 0; + virtual void DoOnExecuteTxAfterCleaning(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs) = 0; virtual bool DoOnCompleteTxAfterCleaning(NColumnShard::TColumnShard& self, const std::shared_ptr<IBlobsGCAction>& taskAction) = 0; + virtual void RemoveBlobIdFromDB(const TTabletId tabletId, const TUnifiedBlobId& blobId, TBlobManagerDb& dbBlobs) = 0; + virtual bool DoIsEmpty() const = 0; public: - void OnExecuteTxAfterCleaning(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs); + void OnExecuteTxAfterCleaning(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs); void OnCompleteTxAfterCleaning(NColumnShard::TColumnShard& self, const std::shared_ptr<IBlobsGCAction>& taskAction); + const TBlobsCategories& GetBlobsToRemove() const { + return BlobsToRemove; + } + + bool IsEmpty() const { + return BlobsToRemove.IsEmpty() && DoIsEmpty(); + } + bool IsInProgress() const { return !AbortedFlag && !FinishedFlag; } - IBlobsGCAction(const TString& storageId) + IBlobsGCAction(const TString& storageId, TBlobsCategories&& blobsToRemove, const std::shared_ptr<NBlobOperations::TRemoveGCCounters>& counters) : TBase(storageId) + , BlobsToRemove(std::move(blobsToRemove)) + , Counters(counters) { - + for (auto i = BlobsToRemove.GetIterator(); i.IsValid(); ++i) { + Counters->OnRequest(i.GetBlobId().BlobSize()); + } } void Abort(); diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/gc_actor.cpp b/ydb/core/tx/columnshard/blobs_action/abstract/gc_actor.cpp new file mode 100644 index 000000000000..7877709b4558 --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/abstract/gc_actor.cpp @@ -0,0 +1,5 @@ +#include "gc_actor.h" + +namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { + +} diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/gc_actor.h b/ydb/core/tx/columnshard/blobs_action/abstract/gc_actor.h new file mode 100644 index 000000000000..009dee623caf --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/abstract/gc_actor.h @@ -0,0 +1,72 @@ +#pragma once +#include "blob_set.h" +#include "common.h" + +#include <ydb/core/base/tablet_pipecache.h> + +#include <ydb/core/tx/columnshard/common/tablet_id.h> +#include <ydb/core/tx/columnshard/blobs_action/events/delete_blobs.h> + +namespace NKikimr::NOlap::NBlobOperations { + +template <class TDerived> +class TSharedBlobsCollectionActor: public TActorBootstrapped<TDerived> { +private: + using TBase = TActorBootstrapped<TDerived>; + const TString OperatorId; + TBlobsByTablet BlobIdsByTablets; + const TTabletId SelfTabletId; + virtual void DoOnSharedRemovingFinished() = 0; + void OnSharedRemovingFinished() { + SharedRemovingFinished = true; + DoOnSharedRemovingFinished(); + } + void Handle(NEvents::TEvDeleteSharedBlobsFinished::TPtr& ev) { + AFL_VERIFY(BlobIdsByTablets.Remove((TTabletId)ev->Get()->Record.GetTabletId())); + if (BlobIdsByTablets.IsEmpty()) { + AFL_VERIFY(!SharedRemovingFinished); + OnSharedRemovingFinished(); + } + } + void Handle(NActors::TEvents::TEvUndelivered::TPtr& ev) { + auto* blobIds = BlobIdsByTablets.Find((TTabletId)ev->Cookie); + AFL_VERIFY(blobIds); + auto evResend = std::make_unique<NEvents::TEvDeleteSharedBlobs>(TBase::SelfId(), ev->Cookie, OperatorId, *blobIds); + NActors::TActivationContext::AsActorContext().Send(MakePipePeNodeCacheID(false), + new TEvPipeCache::TEvForward(evResend.release(), ev->Cookie, true), IEventHandle::FlagTrackDelivery, ev->Cookie); + } +protected: + bool SharedRemovingFinished = false; +public: + TSharedBlobsCollectionActor(const TString& operatorId, const TTabletId selfTabletId, const TBlobsByTablet& blobIds) + : OperatorId(operatorId) + , BlobIdsByTablets(blobIds) + , SelfTabletId(selfTabletId) + { + + } + + STFUNC(StateWork) { + switch (ev->GetTypeRewrite()) { + hFunc(NEvents::TEvDeleteSharedBlobsFinished, Handle); + hFunc(NActors::TEvents::TEvUndelivered, Handle); + default: + AFL_VERIFY(false)("problem", "unexpected event")("event_type", ev->GetTypeName()); + } + } + + void Bootstrap(const TActorContext& /*ctx*/) { + if (BlobIdsByTablets.IsEmpty()) { + OnSharedRemovingFinished(); + } else { + for (auto&& i : BlobIdsByTablets) { + auto ev = std::make_unique<NEvents::TEvDeleteSharedBlobs>(TBase::SelfId(), (ui64)SelfTabletId, OperatorId, i.second); + NActors::TActivationContext::AsActorContext().Send(MakePipePeNodeCacheID(false), + new TEvPipeCache::TEvForward(ev.release(), (ui64)i.first, true), IEventHandle::FlagTrackDelivery, (ui64)i.first); + } + } + } + +}; + +} diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/read.cpp b/ydb/core/tx/columnshard/blobs_action/abstract/read.cpp index 766dd21da79d..baba7ec7b6c9 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/read.cpp +++ b/ydb/core/tx/columnshard/blobs_action/abstract/read.cpp @@ -1,82 +1,96 @@ #include "read.h" #include <ydb/library/actors/core/log.h> +#include <util/string/join.h> namespace NKikimr::NOlap { -void IBlobsReadingAction::StartReading(THashMap<TUnifiedBlobId, THashSet<TBlobRange>>&& ranges) { +void IBlobsReadingAction::StartReading(std::vector<TBlobRange>&& ranges) { AFL_VERIFY(ranges.size()); AFL_VERIFY(Counters); for (auto&& i : ranges) { - AFL_VERIFY(i.second.size()); - for (auto&& br : i.second) { - Counters->OnRequest(br.Size); - } + Counters->OnRequest(i.Size); } - return DoStartReading(ranges); -} - -void IBlobsReadingAction::ExtractBlobsDataTo(THashMap<TBlobRange, TString>& result) { - AFL_VERIFY(Started); - if (result.empty()) { - std::swap(result, Replies); - } else { - for (auto&& i : Replies) { - AFL_VERIFY(result.emplace(i.first, std::move(i.second)).second); - } - Replies.clear(); + THashSet<TBlobRange> result; + Groups = GroupBlobsForOptimization(std::move(ranges)); + for (auto&& [range, _] :Groups) { + result.emplace(range); } - RangesForResult.clear(); + return DoStartReading(std::move(result)); } void IBlobsReadingAction::Start(const THashSet<TBlobRange>& rangesInProgress) { Y_ABORT_UNLESS(!Started); + Started = true; + Y_ABORT_UNLESS(RangesForRead.size() + RangesForResult.size()); StartWaitingRanges = TMonotonic::Now(); - for (auto&& i : RangesForRead) { - WaitingRangesCount += i.second.size(); - } - THashMap<TUnifiedBlobId, THashSet<TBlobRange>> rangesFiltered; + WaitingRangesCount = RangesForRead.size(); + std::vector<TBlobRange> rangesFiltered; if (rangesInProgress.empty()) { - rangesFiltered = RangesForRead; + rangesFiltered.insert(rangesFiltered.end(), RangesForRead.begin(), RangesForRead.end()); } else { - for (auto&& i : RangesForRead) { - for (auto&& r : i.second) { - if (!rangesInProgress.contains(r)) { - rangesFiltered[r.BlobId].emplace(r); - } + for (auto&& r : RangesForRead) { + if (!rangesInProgress.contains(r)) { + rangesFiltered.emplace_back(r); } } } if (rangesFiltered.size()) { StartReading(std::move(rangesFiltered)); } - Started = true; for (auto&& i : RangesForResult) { + AFL_VERIFY(i.second.size() == i.first.Size); AFL_VERIFY(Replies.emplace(i.first, i.second).second); } } void IBlobsReadingAction::OnReadResult(const TBlobRange& range, const TString& data) { + auto it = Groups.find(range); + AFL_VERIFY(it != Groups.end()); AFL_VERIFY(Counters); - AFL_VERIFY(--WaitingRangesCount >= 0); + WaitingRangesCount -= it->second.size(); + AFL_VERIFY(WaitingRangesCount >= 0); Counters->OnReply(range.Size, TMonotonic::Now() - StartWaitingRanges); - Replies.emplace(range, data); + AFL_VERIFY(data.size() == range.Size); + for (auto&& i : it->second) { + AFL_VERIFY(i.Offset + i.GetBlobSize() <= range.Offset + data.size()); + AFL_VERIFY(range.Offset <= i.Offset); + Replies.emplace(i, data.substr(i.Offset - range.Offset, i.GetBlobSize())); + } + Groups.erase(it); } void IBlobsReadingAction::OnReadError(const TBlobRange& range, const TErrorStatus& replyStatus) { + auto it = Groups.find(range); + AFL_VERIFY(it != Groups.end()); + AFL_VERIFY(Counters); - AFL_VERIFY(--WaitingRangesCount >= 0); + WaitingRangesCount -= it->second.size(); + AFL_VERIFY(WaitingRangesCount >= 0); Counters->OnFail(range.Size, TMonotonic::Now() - StartWaitingRanges); - Fails.emplace(range, replyStatus); + for (auto&& i : it->second) { + Fails.emplace(i, replyStatus); + } + Groups.erase(it); } -void IBlobsReadingAction::AddRange(const TBlobRange& range, const TString& result /*= Default<TString>()*/) { +void IBlobsReadingAction::AddRange(const TBlobRange& range, const std::optional<TString>& result /*= {}*/) { Y_ABORT_UNLESS(!Started); if (!result) { - AFL_VERIFY(RangesForRead[range.BlobId].emplace(range).second)("range", range.ToString()); + AFL_VERIFY(!RangesForResult.contains(range)); + AFL_VERIFY(RangesForRead.emplace(range).second)("range", range.ToString()); } else { - AFL_VERIFY(RangesForResult.emplace(range, result).second)("range", range.ToString()); + AFL_VERIFY(result->size() == range.Size); + AFL_VERIFY(RangesForResult.emplace(range, *result).second)("range", range.ToString()); + } +} + +TString TActionReadBlobs::DebugString() const { + THashSet<TBlobRange> ranges; + for (auto&& i : Blobs) { + ranges.emplace(i.first); } + return JoinSeq(",", ranges); } } diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/read.h b/ydb/core/tx/columnshard/blobs_action/abstract/read.h index 06a04c13c521..2a916305f87a 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/read.h +++ b/ydb/core/tx/columnshard/blobs_action/abstract/read.h @@ -8,26 +8,175 @@ namespace NKikimr::NOlap { +class TActionReadBlobs { +private: + THashMap<TBlobRange, TString> Blobs; +public: + TString DebugString() const; + + TActionReadBlobs() = default; + + TActionReadBlobs(THashMap<TBlobRange, TString>&& blobs) + : Blobs(std::move(blobs)) + { + for (auto&& i : Blobs) { + AFL_VERIFY(i.second.size()); + } + } + + void Merge(TActionReadBlobs&& item) { + for (auto&& i : item.Blobs) { + Add(i.first, std::move(i.second)); + } + } + + THashMap<TBlobRange, TString>::iterator begin() { + return Blobs.begin(); + } + + THashMap<TBlobRange, TString>::iterator end() { + return Blobs.end(); + } + + ui64 GetTotalBlobsSize() const { + ui64 result = 0; + for (auto&& i : Blobs) { + result += i.second.size(); + } + return result; + } + + void Add(THashMap<TBlobRange, TString>&& blobs) { + for (auto&& i : blobs) { + AFL_VERIFY(i.second.size()); + AFL_VERIFY(Blobs.emplace(i.first, std::move(i.second)).second); + } + } + + void Add(const TBlobRange& range, TString&& data) { + AFL_VERIFY(data.size()); + AFL_VERIFY(Blobs.emplace(range, std::move(data)).second); + } + + TString Extract(const TBlobRange& bRange) { + auto it = Blobs.find(bRange); + AFL_VERIFY(it != Blobs.end()); + TString result = it->second; + Blobs.erase(it); + return result; + } + + bool IsEmpty() const { + return Blobs.empty(); + } +}; + +class TBlobsGlueing { +public: + class TSequentialGluePolicy { + public: + bool Glue(TBlobRange& currentRange, const TBlobRange& addRange) const { + return currentRange.TryGlueWithNext(addRange); + } + }; + + class TBlobGluePolicy { + private: + const ui64 BlobLimitSize = 8LLU << 20; + public: + TBlobGluePolicy(const ui64 blobLimitSize) + : BlobLimitSize(blobLimitSize) + { + } + + bool Glue(TBlobRange& currentRange, const TBlobRange& addRange) const { + return currentRange.TryGlueSameBlob(addRange, BlobLimitSize); + } + }; + + template <class TGluePolicy> + static THashMap<TBlobRange, std::vector<TBlobRange>> GroupRanges(std::vector<TBlobRange>&& ranges, const TGluePolicy& policy) { + std::sort(ranges.begin(), ranges.end()); + THashMap<TBlobRange, std::vector<TBlobRange>> result; + std::optional<TBlobRange> currentRange; + std::vector<TBlobRange> currentList; + for (auto&& br : ranges) { + if (!currentRange) { + currentRange = br; + } + else if (!policy.Glue(*currentRange, br)) { + result.emplace(*currentRange, std::move(currentList)); + currentRange = br; + currentList.clear(); + } + currentList.emplace_back(br); + } + if (currentRange) { + result.emplace(*currentRange, std::move(currentList)); + } + return result; + } + +}; + class IBlobsReadingAction: public ICommonBlobsAction { public: using TErrorStatus = TConclusionSpecialStatus<NKikimrProto::EReplyStatus, NKikimrProto::EReplyStatus::OK, NKikimrProto::EReplyStatus::ERROR>; private: using TBase = ICommonBlobsAction; - THashMap<TUnifiedBlobId, THashSet<TBlobRange>> RangesForRead; + THashSet<TBlobRange> RangesForRead; THashMap<TBlobRange, TString> RangesForResult; TMonotonic StartWaitingRanges; i32 WaitingRangesCount = 0; THashMap<TBlobRange, TString> Replies; THashMap<TBlobRange, TErrorStatus> Fails; + THashMap<TBlobRange, std::vector<TBlobRange>> Groups; std::shared_ptr<NBlobOperations::TReadCounters> Counters; bool Started = false; + bool DataExtracted = false; YDB_ACCESSOR(bool, IsBackgroundProcess, true); protected: - virtual void DoStartReading(const THashMap<TUnifiedBlobId, THashSet<TBlobRange>>& range) = 0; - void StartReading(THashMap<TUnifiedBlobId, THashSet<TBlobRange>>&& ranges); + virtual void DoStartReading(THashSet<TBlobRange>&& range) = 0; + void StartReading(std::vector<TBlobRange>&& ranges); + virtual THashMap<TBlobRange, std::vector<TBlobRange>> GroupBlobsForOptimization(std::vector<TBlobRange>&& ranges) const = 0; public: + const THashMap<TBlobRange, std::vector<TBlobRange>>& GetGroups() const { + return Groups; + } + + void Merge(const std::shared_ptr<IBlobsReadingAction>& action) { + AFL_VERIFY(action); + AFL_VERIFY(!Started); + for (auto&& i : action->RangesForResult) { + RangesForResult.emplace(i.first, i.second); + auto it = RangesForRead.find(i.first); + if (it != RangesForRead.end()) { + RangesForRead.erase(it); + } + } + for (auto&& i : action->RangesForResult) { + RangesForResult.emplace(i.first, i.second); + } + for (auto&& i : action->RangesForRead) { + if (!RangesForResult.contains(i)) { + RangesForRead.emplace(i); + } + } + } + + TActionReadBlobs ExtractBlobsData() { + AFL_VERIFY(Started); + AFL_VERIFY(IsFinished()); + AFL_VERIFY(!DataExtracted); + DataExtracted = true; + auto result = TActionReadBlobs(std::move(Replies)); + RangesForResult.clear(); + Replies.clear(); + return result; + } + void SetCounters(std::shared_ptr<NBlobOperations::TReadCounters> counters) { Counters = counters; } @@ -38,14 +187,10 @@ class IBlobsReadingAction: public ICommonBlobsAction { } - void ExtractBlobsDataTo(THashMap<TBlobRange, TString>& result); - ui64 GetExpectedBlobsSize() const { ui64 result = 0; for (auto&& i : RangesForRead) { - for (auto&& b : i.second) { - result += b.Size; - } + result += i.Size; } for (auto&& i : RangesForResult) { result += i.first.Size; @@ -54,29 +199,10 @@ class IBlobsReadingAction: public ICommonBlobsAction { } ui64 GetExpectedBlobsCount() const { - ui64 result = 0; - for (auto&& i : RangesForRead) { - result += i.second.size(); - } - return result + RangesForResult.size(); + return RangesForRead.size() + RangesForResult.size(); } - void FillExpectedRanges(THashSet<TBlobRange>& ranges) const { - for (auto&& i : RangesForRead) { - for (auto&& b : i.second) { - Y_ABORT_UNLESS(ranges.emplace(b).second); - } - } - for (auto&& i : RangesForResult) { - Y_ABORT_UNLESS(ranges.emplace(i.first).second); - } - } - - const THashMap<TUnifiedBlobId, THashSet<TBlobRange>>& GetRangesForRead() const { - return RangesForRead; - } - - void AddRange(const TBlobRange& range, const TString& result = Default<TString>()); + void AddRange(const TBlobRange& range, const std::optional<TString>& result = {}); void Start(const THashSet<TBlobRange>& rangesInProgress); void OnReadResult(const TBlobRange& range, const TString& data); @@ -91,4 +217,46 @@ class IBlobsReadingAction: public ICommonBlobsAction { } }; +class TReadActionsCollection { +private: + THashMap<TString, std::shared_ptr<IBlobsReadingAction>> Actions; +public: + THashMap<TString, std::shared_ptr<IBlobsReadingAction>>::const_iterator begin() const { + return Actions.begin(); + } + + THashMap<TString, std::shared_ptr<IBlobsReadingAction>>::const_iterator end() const { + return Actions.end(); + } + + THashMap<TString, std::shared_ptr<IBlobsReadingAction>>::iterator begin() { + return Actions.begin(); + } + + THashMap<TString, std::shared_ptr<IBlobsReadingAction>>::iterator end() { + return Actions.end(); + } + + ui32 IsEmpty() const { + return Actions.empty(); + } + + void Add(const std::shared_ptr<IBlobsReadingAction>& action) { + auto it = Actions.find(action->GetStorageId()); + if (it == Actions.end()) { + Actions.emplace(action->GetStorageId(), action); + } else { + it->second->Merge(action); + } + } + + TReadActionsCollection() = default; + + TReadActionsCollection(const std::vector<std::shared_ptr<IBlobsReadingAction>>& actions) { + for (auto&& a: actions) { + Add(a); + } + } +}; + } diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/remove.cpp b/ydb/core/tx/columnshard/blobs_action/abstract/remove.cpp index f15292cdb3a6..3296333ebcc5 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/remove.cpp +++ b/ydb/core/tx/columnshard/blobs_action/abstract/remove.cpp @@ -3,12 +3,16 @@ namespace NKikimr::NOlap { -void IBlobsDeclareRemovingAction::DeclareRemove(const TUnifiedBlobId& blobId) { - if (DeclaredBlobs.emplace(blobId).second) { - ACFL_DEBUG("event", "DeclareRemove")("blob_id", blobId); +void IBlobsDeclareRemovingAction::DeclareRemove(const TTabletId tabletId, const TUnifiedBlobId& blobId) { + if (DeclaredBlobs.Add(tabletId, blobId)) { + ACFL_DEBUG("event", "DeclareRemove")("blob_id", blobId)("tablet_id", (ui64)tabletId); Counters->OnRequest(blobId.BlobSize()); - return DoDeclareRemove(blobId); + return DoDeclareRemove(tabletId, blobId); } } +void IBlobsDeclareRemovingAction::DeclareSelfRemove(const TUnifiedBlobId& blobId) { + DeclareRemove(SelfTabletId, blobId); +} + } diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/remove.h b/ydb/core/tx/columnshard/blobs_action/abstract/remove.h index 2b68a3753c02..e48ae7c2bb54 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/remove.h +++ b/ydb/core/tx/columnshard/blobs_action/abstract/remove.h @@ -1,4 +1,5 @@ #pragma once +#include "blob_set.h" #include "common.h" #include <util/generic/hash_set.h> #include <ydb/core/tx/columnshard/blob.h> @@ -7,37 +8,37 @@ namespace NKikimr::NColumnShard { class TColumnShard; -class TBlobManagerDb; } namespace NKikimr::NOlap { +class TBlobManagerDb; class IBlobsDeclareRemovingAction: public ICommonBlobsAction { private: + const TTabletId SelfTabletId; using TBase = ICommonBlobsAction; std::shared_ptr<NBlobOperations::TRemoveDeclareCounters> Counters; - YDB_READONLY_DEF(THashSet<TUnifiedBlobId>, DeclaredBlobs); + YDB_READONLY_DEF(TTabletsByBlob, DeclaredBlobs); protected: - virtual void DoDeclareRemove(const TUnifiedBlobId& blobId) = 0; - virtual void DoOnExecuteTxAfterRemoving(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) = 0; - virtual void DoOnCompleteTxAfterRemoving(NColumnShard::TColumnShard& self, const bool blobsWroteSuccessfully) = 0; + virtual void DoDeclareRemove(const TTabletId tabletId, const TUnifiedBlobId& blobId) = 0; + virtual void DoOnExecuteTxAfterRemoving(TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) = 0; + virtual void DoOnCompleteTxAfterRemoving(const bool blobsWroteSuccessfully) = 0; public: - IBlobsDeclareRemovingAction(const TString& storageId) + IBlobsDeclareRemovingAction(const TString& storageId, const TTabletId& selfTabletId, const std::shared_ptr<NBlobOperations::TRemoveDeclareCounters>& counters) : TBase(storageId) + , SelfTabletId(selfTabletId) + , Counters(counters) { } - void SetCounters(const std::shared_ptr<NBlobOperations::TRemoveDeclareCounters>& counters) { - Counters = counters; - } - - void DeclareRemove(const TUnifiedBlobId& blobId); - void OnExecuteTxAfterRemoving(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { - return DoOnExecuteTxAfterRemoving(self, dbBlobs, blobsWroteSuccessfully); + void DeclareRemove(const TTabletId tabletId, const TUnifiedBlobId& blobId); + void DeclareSelfRemove(const TUnifiedBlobId& blobId); + void OnExecuteTxAfterRemoving(TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { + return DoOnExecuteTxAfterRemoving(dbBlobs, blobsWroteSuccessfully); } - void OnCompleteTxAfterRemoving(NColumnShard::TColumnShard& self, const bool blobsWroteSuccessfully) { - return DoOnCompleteTxAfterRemoving(self, blobsWroteSuccessfully); + void OnCompleteTxAfterRemoving(const bool blobsWroteSuccessfully) { + return DoOnCompleteTxAfterRemoving(blobsWroteSuccessfully); } }; diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/storage.h b/ydb/core/tx/columnshard/blobs_action/abstract/storage.h index b0a565ee55bf..d99e949e308b 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/storage.h +++ b/ydb/core/tx/columnshard/blobs_action/abstract/storage.h @@ -7,11 +7,10 @@ #include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> #include <ydb/core/tx/columnshard/blobs_action/counters/storage.h> #include <ydb/core/tx/columnshard/blobs_action/counters/remove_gc.h> -#include <ydb/library/accessor/accessor.h> +#include <ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h> -namespace NKikimr::NColumnShard { -class TTiersManager; -} +#include <ydb/library/accessor/accessor.h> +#include <ydb/core/tx/tiering/abstract/manager.h> namespace NKikimr::NOlap { @@ -29,21 +28,25 @@ class TCommonBlobsTracker: public IBlobInUseTracker { class IBlobsStorageOperator { private: + YDB_READONLY_DEF(TTabletId, SelfTabletId); YDB_READONLY_DEF(TString, StorageId); - std::shared_ptr<IBlobsGCAction> CurrentGCAction; YDB_READONLY(bool, Stopped, false); std::shared_ptr<NBlobOperations::TStorageCounters> Counters; + YDB_ACCESSOR_DEF(std::shared_ptr<NDataSharing::TStorageSharedBlobsManager>, SharedBlobs); protected: - virtual std::shared_ptr<IBlobsDeclareRemovingAction> DoStartDeclareRemovingAction() = 0; + virtual std::shared_ptr<IBlobsDeclareRemovingAction> DoStartDeclareRemovingAction(const std::shared_ptr<NBlobOperations::TRemoveDeclareCounters>& counters) = 0; virtual std::shared_ptr<IBlobsWritingAction> DoStartWritingAction() = 0; virtual std::shared_ptr<IBlobsReadingAction> DoStartReadingAction() = 0; - virtual bool DoLoad(NColumnShard::IBlobManagerDb& dbBlobs) = 0; + virtual bool DoLoad(IBlobManagerDb& dbBlobs) = 0; virtual bool DoStop() { return true; } + virtual const NSplitter::TSplitSettings& DoGetBlobSplitSettings() const { + return Default<NSplitter::TSplitSettings>(); + } - virtual void DoOnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& tiers) = 0; + virtual void DoOnTieringModified(const std::shared_ptr<NColumnShard::ITiersManager>& tiers) = 0; virtual TString DoDebugString() const { return ""; } @@ -54,14 +57,21 @@ class IBlobsStorageOperator { } public: - IBlobsStorageOperator(const TString& storageId) - : StorageId(storageId) + IBlobsStorageOperator(const TString& storageId, const std::shared_ptr<NDataSharing::TStorageSharedBlobsManager>& sharedBlobs) + : SelfTabletId(sharedBlobs->GetSelfTabletId()) + , StorageId(storageId) + , SharedBlobs(sharedBlobs) { Counters = std::make_shared<NBlobOperations::TStorageCounters>(storageId); } void Stop(); + const NSplitter::TSplitSettings& GetBlobSplitSettings() const { + return DoGetBlobSplitSettings(); + } + + virtual TTabletsByBlob GetBlobsToDelete() const = 0; virtual std::shared_ptr<IBlobInUseTracker> GetBlobsTracker() const = 0; virtual ~IBlobsStorageOperator() = default; @@ -70,36 +80,38 @@ class IBlobsStorageOperator { return TStringBuilder() << "(storage_id=" << StorageId << ";details=(" << DoDebugString() << "))"; } - bool Load(NColumnShard::IBlobManagerDb& dbBlobs) { + bool Load(IBlobManagerDb& dbBlobs) { return DoLoad(dbBlobs); } - void OnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& tiers) { + void OnTieringModified(const std::shared_ptr<NColumnShard::ITiersManager>& tiers) { + AFL_VERIFY(tiers); return DoOnTieringModified(tiers); } - std::shared_ptr<IBlobsDeclareRemovingAction> StartDeclareRemovingAction(const TString& consumerId) { - auto result = DoStartDeclareRemovingAction(); - result->SetCounters(Counters->GetConsumerCounter(consumerId)->GetRemoveDeclareCounters()); - return result; + std::shared_ptr<IBlobsDeclareRemovingAction> StartDeclareRemovingAction(const NBlobOperations::EConsumer consumerId) { + return DoStartDeclareRemovingAction(Counters->GetConsumerCounter(consumerId)->GetRemoveDeclareCounters()); } - std::shared_ptr<IBlobsWritingAction> StartWritingAction(const TString& consumerId) { + std::shared_ptr<IBlobsWritingAction> StartWritingAction(const NBlobOperations::EConsumer consumerId) { auto result = DoStartWritingAction(); result->SetCounters(Counters->GetConsumerCounter(consumerId)->GetWriteCounters()); return result; } - std::shared_ptr<IBlobsReadingAction> StartReadingAction(const TString& consumerId) { + std::shared_ptr<IBlobsReadingAction> StartReadingAction(const NBlobOperations::EConsumer consumerId) { auto result = DoStartReadingAction(); result->SetCounters(Counters->GetConsumerCounter(consumerId)->GetReadCounters()); return result; } bool StartGC() { + NActors::TLogContextGuard gLogging = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("storage_id", GetStorageId())("tablet_id", GetSelfTabletId()); if (CurrentGCAction && CurrentGCAction->IsInProgress()) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "gc_in_progress"); return false; } if (Stopped) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "stopped_on_gc"); return false; } - auto task = StartGCAction(Counters->GetConsumerCounter("GC")->GetRemoveGCCounters()); + auto task = StartGCAction(Counters->GetConsumerCounter(NBlobOperations::EConsumer::GC)->GetRemoveGCCounters()); if (!task) { return false; } diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.cpp b/ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.cpp index 88b3ca44473c..8b80dd9be277 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.cpp +++ b/ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.cpp @@ -4,7 +4,25 @@ namespace NKikimr::NOlap { -std::shared_ptr<NKikimr::NOlap::IBlobsStorageOperator> IStoragesManager::GetOperator(const TString& storageId) { +std::shared_ptr<NKikimr::NOlap::IBlobsStorageOperator> IStoragesManager::GetOperatorOptional(const TString& storageId) const { + AFL_VERIFY(Initialized); + AFL_VERIFY(storageId); + TReadGuard rg(RWMutex); + auto it = Constructed.find(storageId); + if (it != Constructed.end()) { + return it->second; + } else { + return nullptr; + } +} + +std::shared_ptr<NKikimr::NOlap::IBlobsStorageOperator> IStoragesManager::GetOperatorVerified(const TString& storageId) const { + auto result = GetOperatorOptional(storageId); + AFL_VERIFY(result)("storage_id", storageId); + return result; +} + +std::shared_ptr<NKikimr::NOlap::IBlobsStorageOperator> IStoragesManager::GetOperatorGuarantee(const TString& storageId) { TReadGuard rg(RWMutex); auto it = Constructed.find(storageId); if (it == Constructed.end()) { @@ -19,23 +37,61 @@ std::shared_ptr<NKikimr::NOlap::IBlobsStorageOperator> IStoragesManager::GetOper return it->second; } -std::shared_ptr<IBlobsStorageOperator> IStoragesManager::InitializePortionOperator(const TPortionInfo& portionInfo) { - Y_ABORT_UNLESS(!portionInfo.HasStorageOperator()); - if (portionInfo.GetMeta().GetTierName()) { - return GetOperator(portionInfo.GetMeta().GetTierName()); - } else { - return GetOperator(DefaultStorageId); - } +std::shared_ptr<NKikimr::NOlap::IBlobsStorageOperator> IStoragesManager::GetOperator(const TString& storageId) { + return GetOperatorGuarantee(storageId); } -void IStoragesManager::OnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& tiers) { +void IStoragesManager::OnTieringModified(const std::shared_ptr<NColumnShard::ITiersManager>& tiers) { + AFL_VERIFY(tiers); for (auto&& i : tiers->GetManagers()) { - GetOperator(i.second.GetTierName())->OnTieringModified(tiers); + GetOperatorGuarantee(i.first)->OnTieringModified(tiers); } } -void IStoragesManager::InitializeNecessaryStorages() { +void IStoragesManager::DoInitialize() { GetOperator(DefaultStorageId); + GetOperator(MemoryStorageId); +} + +bool IStoragesManager::LoadIdempotency(NTable::TDatabase& database) { + AFL_VERIFY(Initialized); + if (!DoLoadIdempotency(database)) { + return false; + } + TBlobManagerDb blobsDB(database); + for (auto&& i : GetStorages()) { + if (!i.second->Load(blobsDB)) { + return false; + } + } + GetOperatorVerified(DefaultStorageId); + GetSharedBlobsManager()->GetStorageManagerVerified(DefaultStorageId); + return true; +} + +bool IStoragesManager::HasBlobsToDelete() const { + for (auto&& i : Constructed) { + if (!i.second->GetBlobsToDelete().IsEmpty()) { + return true; + } + } + return false; +} + +std::shared_ptr<NKikimr::NOlap::IBlobsStorageOperator> IStoragesManager::BuildOperator(const TString& storageId) { + auto result = DoBuildOperator(storageId); + AFL_VERIFY(result)("storage_id", storageId); + return result; +} + +void IStoragesManager::Stop() { + AFL_VERIFY(!Finished); + if (Initialized && !Finished) { + for (auto&& i : Constructed) { + i.second->Stop(); + } + Finished = true; + } } } diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h b/ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h index dd89f7ff2512..cc0e8f606d3f 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h +++ b/ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h @@ -1,5 +1,6 @@ #pragma once #include "storage.h" +#include <ydb/core/tx/columnshard/blobs_action/common/const.h> namespace NKikimr::NOlap { @@ -7,46 +8,60 @@ class TPortionInfo; class IStoragesManager { private: - TRWMutex RWMutex; + mutable TRWMutex RWMutex; + bool Initialized = false; + bool Finished = false; protected: virtual std::shared_ptr<IBlobsStorageOperator> DoBuildOperator(const TString& storageId) = 0; THashMap<TString, std::shared_ptr<IBlobsStorageOperator>> Constructed; - std::shared_ptr<IBlobsStorageOperator> BuildOperator(const TString& storageId) { - auto result = DoBuildOperator(storageId); - Y_ABORT_UNLESS(result); - return result; - } + std::shared_ptr<IBlobsStorageOperator> BuildOperator(const TString& storageId); + + virtual void DoInitialize(); + virtual bool DoLoadIdempotency(NTable::TDatabase& database) = 0; + virtual const std::shared_ptr<NDataSharing::TSharedBlobsManager>& DoGetSharedBlobsManager() const = 0; - virtual void InitializeNecessaryStorages(); public: - static const inline TString DefaultStorageId = "__DEFAULT"; + static const inline TString DefaultStorageId = NBlobOperations::TGlobal::DefaultStorageId; + static const inline TString MemoryStorageId = NBlobOperations::TGlobal::MemoryStorageId; virtual ~IStoragesManager() = default; - IStoragesManager() = default; + void Initialize() { + AFL_VERIFY(!Initialized); + Initialized = true; + DoInitialize(); + } - void Stop() { - for (auto&& i : Constructed) { - i.second->Stop(); - } + IStoragesManager() = default; + const std::shared_ptr<NDataSharing::TSharedBlobsManager>& GetSharedBlobsManager() const { + AFL_VERIFY(Initialized); + return DoGetSharedBlobsManager(); } - std::shared_ptr<IBlobsStorageOperator> GetDefaultOperator() { - return GetOperator(DefaultStorageId); + bool LoadIdempotency(NTable::TDatabase& database); + + bool HasBlobsToDelete() const; + + void Stop(); + + std::shared_ptr<IBlobsStorageOperator> GetDefaultOperator() const { + return GetOperatorVerified(DefaultStorageId); } - std::shared_ptr<IBlobsStorageOperator> GetInsertOperator() { + std::shared_ptr<IBlobsStorageOperator> GetInsertOperator() const { return GetDefaultOperator(); } const THashMap<TString, std::shared_ptr<IBlobsStorageOperator>>& GetStorages() { - InitializeNecessaryStorages(); + AFL_VERIFY(Initialized); return Constructed; } - void OnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& tiers); + void OnTieringModified(const std::shared_ptr<NColumnShard::ITiersManager>& tiers); std::shared_ptr<IBlobsStorageOperator> GetOperator(const TString& storageIdExt); - std::shared_ptr<IBlobsStorageOperator> InitializePortionOperator(const TPortionInfo& portionInfo); + std::shared_ptr<IBlobsStorageOperator> GetOperatorGuarantee(const TString& storageIdExt); + std::shared_ptr<IBlobsStorageOperator> GetOperatorVerified(const TString& storageIdExt) const; + std::shared_ptr<IBlobsStorageOperator> GetOperatorOptional(const TString& storageIdExt) const; }; diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/write.cpp b/ydb/core/tx/columnshard/blobs_action/abstract/write.cpp index 60a3635e3fd1..1319e97edf22 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/write.cpp +++ b/ydb/core/tx/columnshard/blobs_action/abstract/write.cpp @@ -3,14 +3,21 @@ namespace NKikimr::NOlap { -TUnifiedBlobId IBlobsWritingAction::AddDataForWrite(const TString& data) { +TUnifiedBlobId IBlobsWritingAction::AddDataForWrite(const TString& data, const std::optional<TUnifiedBlobId>& externalBlobId) { Y_ABORT_UNLESS(!WritingStarted); auto blobId = AllocateNextBlobId(data); - AFL_VERIFY(BlobsForWrite.emplace(blobId, data).second); + AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("generated_blob_id", blobId.ToStringNew()); + AddDataForWrite(externalBlobId.value_or(blobId), data); + return externalBlobId.value_or(blobId); +} + +void IBlobsWritingAction::AddDataForWrite(const TUnifiedBlobId& blobId, const TString& data) { + AFL_VERIFY(blobId.IsValid())("blob_id", blobId.ToStringNew()); + AFL_VERIFY(blobId.BlobSize() == data.size()); + AFL_VERIFY(BlobsForWrite.emplace(blobId, data).second)("blob_id", blobId.ToStringNew()); BlobsWaiting.emplace(blobId); BlobsWriteCount += 1; SumSize += data.size(); - return blobId; } void IBlobsWritingAction::OnBlobWriteResult(const TUnifiedBlobId& blobId, const NKikimrProto::EReplyStatus status) { @@ -34,7 +41,7 @@ bool IBlobsWritingAction::IsReady() const { } IBlobsWritingAction::~IBlobsWritingAction() { - AFL_VERIFY(!NActors::TlsActivationContext || BlobsWaiting.empty() || Aborted); +// AFL_VERIFY(!NActors::TlsActivationContext || BlobsWaiting.empty() || Aborted); } void IBlobsWritingAction::SendWriteBlobRequest(const TString& data, const TUnifiedBlobId& blobId) { diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/write.h b/ydb/core/tx/columnshard/blobs_action/abstract/write.h index 0ae4f57abb0c..f20d4183cefb 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/write.h +++ b/ydb/core/tx/columnshard/blobs_action/abstract/write.h @@ -4,10 +4,10 @@ #include <ydb/core/protos/base.pb.h> #include <ydb/core/tx/columnshard/blob.h> #include <ydb/core/tx/columnshard/blobs_action/counters/write.h> +#include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> namespace NKikimr::NColumnShard { class TColumnShard; -class TBlobManagerDb; } namespace NKikimr::NOlap { @@ -23,14 +23,15 @@ class IBlobsWritingAction: public ICommonBlobsAction { THashSet<TUnifiedBlobId> BlobsWaiting; bool Aborted = false; std::shared_ptr<NBlobOperations::TWriteCounters> Counters; + void AddDataForWrite(const TUnifiedBlobId& blobId, const TString& data); protected: - virtual void DoOnExecuteTxBeforeWrite(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs) = 0; + virtual void DoOnExecuteTxBeforeWrite(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs) = 0; virtual void DoOnCompleteTxBeforeWrite(NColumnShard::TColumnShard& self) = 0; virtual void DoSendWriteBlobRequest(const TString& data, const TUnifiedBlobId& blobId) = 0; virtual void DoOnBlobWriteResult(const TUnifiedBlobId& blobId, const NKikimrProto::EReplyStatus status) = 0; - virtual void DoOnExecuteTxAfterWrite(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) = 0; + virtual void DoOnExecuteTxAfterWrite(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) = 0; virtual void DoOnCompleteTxAfterWrite(NColumnShard::TColumnShard& self, const bool blobsWroteSuccessfully) = 0; virtual TUnifiedBlobId AllocateNextBlobId(const TString& data) = 0; @@ -43,6 +44,14 @@ class IBlobsWritingAction: public ICommonBlobsAction { virtual ~IBlobsWritingAction(); bool IsReady() const; + void Merge(const std::shared_ptr<IBlobsWritingAction>& action) { + AFL_VERIFY(action); + AFL_VERIFY(!WritingStarted); + for (auto&& i : action->BlobsForWrite) { + AddDataForWrite(i.first, i.second); + } + } + void SetCounters(std::shared_ptr<NBlobOperations::TWriteCounters> counters) { Counters = counters; } @@ -54,11 +63,10 @@ class IBlobsWritingAction: public ICommonBlobsAction { void Abort() { Aborted = true; } - TUnifiedBlobId AddDataForWrite(const TString& data); - + TUnifiedBlobId AddDataForWrite(const TString& data, const std::optional<TUnifiedBlobId>& externalBlobId = {}); void OnBlobWriteResult(const TUnifiedBlobId& blobId, const NKikimrProto::EReplyStatus status); - void OnExecuteTxBeforeWrite(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs) { + void OnExecuteTxBeforeWrite(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs) { return DoOnExecuteTxBeforeWrite(self, dbBlobs); } @@ -75,7 +83,7 @@ class IBlobsWritingAction: public ICommonBlobsAction { return DoOnCompleteTxBeforeWrite(self); } - void OnExecuteTxAfterWrite(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { + void OnExecuteTxAfterWrite(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { return DoOnExecuteTxAfterWrite(self, dbBlobs, blobsWroteSuccessfully); } @@ -86,4 +94,43 @@ class IBlobsWritingAction: public ICommonBlobsAction { void SendWriteBlobRequest(const TString& data, const TUnifiedBlobId& blobId); }; +class TWriteActionsCollection { +private: + THashMap<TString, std::shared_ptr<IBlobsWritingAction>> Actions; +public: + THashMap<TString, std::shared_ptr<IBlobsWritingAction>>::const_iterator begin() const { + return Actions.begin(); + } + + THashMap<TString, std::shared_ptr<IBlobsWritingAction>>::const_iterator end() const { + return Actions.end(); + } + + THashMap<TString, std::shared_ptr<IBlobsWritingAction>>::iterator begin() { + return Actions.begin(); + } + + THashMap<TString, std::shared_ptr<IBlobsWritingAction>>::iterator end() { + return Actions.end(); + } + + std::shared_ptr<IBlobsWritingAction> Add(const std::shared_ptr<IBlobsWritingAction>& action) { + auto it = Actions.find(action->GetStorageId()); + if (it == Actions.end()) { + return Actions.emplace(action->GetStorageId(), action).first->second; + } else if (action.get() != it->second.get()) { + it->second->Merge(action); + } + return it->second; + } + + TWriteActionsCollection() = default; + + TWriteActionsCollection(const std::vector<std::shared_ptr<IBlobsWritingAction>>& actions) { + for (auto&& a : actions) { + Add(a); + } + } +}; + } diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/ya.make b/ydb/core/tx/columnshard/blobs_action/abstract/ya.make index 2f0b074a602a..b3b4c20028c8 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/ya.make +++ b/ydb/core/tx/columnshard/blobs_action/abstract/ya.make @@ -2,7 +2,9 @@ LIBRARY() SRCS( gc.cpp + gc_actor.cpp common.cpp + blob_set.cpp read.cpp write.cpp remove.cpp @@ -15,7 +17,11 @@ PEERDIR( ydb/core/protos contrib/libs/apache/arrow ydb/core/tablet_flat - ydb/core/tx/tiering + ydb/core/tx/tiering/abstract + ydb/core/tx/columnshard/blobs_action/common + ydb/core/tx/columnshard/data_sharing/protos + ydb/core/tx/columnshard/blobs_action/events + ydb/core/tx/columnshard/blobs_action/protos ) END() diff --git a/ydb/core/tx/columnshard/blobs_action/blob_manager_db.cpp b/ydb/core/tx/columnshard/blobs_action/blob_manager_db.cpp index b13e664f6419..3bc5f2b8c3d6 100644 --- a/ydb/core/tx/columnshard/blobs_action/blob_manager_db.cpp +++ b/ydb/core/tx/columnshard/blobs_action/blob_manager_db.cpp @@ -1,14 +1,17 @@ #include "blob_manager_db.h" #include <ydb/core/tx/columnshard/columnshard_schema.h> +#include <ydb/core/tx/columnshard/common/tablet_id.h> -namespace NKikimr::NColumnShard { +namespace NKikimr::NOlap { + +using namespace NKikimr::NColumnShard; bool TBlobManagerDb::LoadLastGcBarrier(TGenStep& lastCollectedGenStep) { NIceDb::TNiceDb db(Database); ui64 gen = 0; ui64 step = 0; - if (!Schema::GetSpecialValue(db, Schema::EValueIds::LastGcBarrierGen, gen) || - !Schema::GetSpecialValue(db, Schema::EValueIds::LastGcBarrierStep, step)) + if (!Schema::GetSpecialValueOpt(db, Schema::EValueIds::LastGcBarrierGen, gen) || + !Schema::GetSpecialValueOpt(db, Schema::EValueIds::LastGcBarrierStep, step)) { return false; } @@ -22,11 +25,11 @@ void TBlobManagerDb::SaveLastGcBarrier(const TGenStep& lastCollectedGenStep) { Schema::SaveSpecialValue(db, Schema::EValueIds::LastGcBarrierStep, std::get<1>(lastCollectedGenStep)); } -bool TBlobManagerDb::LoadLists(std::vector<NOlap::TUnifiedBlobId>& blobsToKeep, std::vector<NOlap::TUnifiedBlobId>& blobsToDelete, - const NOlap::IBlobGroupSelector* dsGroupSelector) +bool TBlobManagerDb::LoadLists(std::vector<TUnifiedBlobId>& blobsToKeep, TTabletsByBlob& blobsToDelete, + const IBlobGroupSelector* dsGroupSelector, const TTabletId selfTabletId) { blobsToKeep.clear(); - blobsToDelete.clear(); + TTabletsByBlob blobsToDeleteLocal; NIceDb::TNiceDb db(Database); @@ -39,12 +42,13 @@ bool TBlobManagerDb::LoadLists(std::vector<NOlap::TUnifiedBlobId>& blobsToKeep, while (!rowset.EndOfSet()) { const TString blobIdStr = rowset.GetValue<Schema::BlobsToKeep::BlobId>(); - NOlap::TUnifiedBlobId unifiedBlobId = NOlap::TUnifiedBlobId::ParseFromString(blobIdStr, dsGroupSelector, error); - Y_ABORT_UNLESS(unifiedBlobId.IsValid(), "%s", error.c_str()); + TUnifiedBlobId unifiedBlobId = TUnifiedBlobId::ParseFromString(blobIdStr, dsGroupSelector, error); + AFL_VERIFY(unifiedBlobId.IsValid())("event", "cannot_parse_blob")("error", error)("original_string", blobIdStr); blobsToKeep.push_back(unifiedBlobId); - if (!rowset.Next()) + if (!rowset.Next()) { return false; + } } } @@ -57,102 +61,174 @@ bool TBlobManagerDb::LoadLists(std::vector<NOlap::TUnifiedBlobId>& blobsToKeep, while (!rowset.EndOfSet()) { const TString blobIdStr = rowset.GetValue<Schema::BlobsToDelete::BlobId>(); - NOlap::TUnifiedBlobId unifiedBlobId = NOlap::TUnifiedBlobId::ParseFromString(blobIdStr, dsGroupSelector, error); - Y_ABORT_UNLESS(unifiedBlobId.IsValid(), "%s", error.c_str()); - blobsToDelete.push_back(unifiedBlobId); - if (!rowset.Next()) + TUnifiedBlobId unifiedBlobId = TUnifiedBlobId::ParseFromString(blobIdStr, dsGroupSelector, error); + AFL_VERIFY(unifiedBlobId.IsValid())("event", "cannot_parse_blob")("error", error)("original_string", blobIdStr); + blobsToDeleteLocal.Add(selfTabletId, unifiedBlobId); + if (!rowset.Next()) { + return false; + } + } + } + + { + auto rowset = db.Table<Schema::BlobsToDeleteWT>().Select(); + if (!rowset.IsReady()) + return false; + + TString error; + + while (!rowset.EndOfSet()) { + const TString blobIdStr = rowset.GetValue<Schema::BlobsToDeleteWT::BlobId>(); + TUnifiedBlobId unifiedBlobId = TUnifiedBlobId::ParseFromString(blobIdStr, dsGroupSelector, error); + AFL_VERIFY(unifiedBlobId.IsValid())("event", "cannot_parse_blob")("error", error)("original_string", blobIdStr); + blobsToDeleteLocal.Add((TTabletId)rowset.GetValue<Schema::BlobsToDeleteWT::TabletId>(), unifiedBlobId); + if (!rowset.Next()) { return false; + } } } + std::swap(blobsToDeleteLocal, blobsToDelete); return true; } -void TBlobManagerDb::AddBlobToKeep(const NOlap::TUnifiedBlobId& blobId) { +void TBlobManagerDb::AddBlobToKeep(const TUnifiedBlobId& blobId) { NIceDb::TNiceDb db(Database); db.Table<Schema::BlobsToKeep>().Key(blobId.ToStringLegacy()).Update(); } -void TBlobManagerDb::EraseBlobToKeep(const NOlap::TUnifiedBlobId& blobId) { +void TBlobManagerDb::EraseBlobToKeep(const TUnifiedBlobId& blobId) { NIceDb::TNiceDb db(Database); db.Table<Schema::BlobsToKeep>().Key(blobId.ToStringLegacy()).Delete(); db.Table<Schema::BlobsToKeep>().Key(blobId.ToStringNew()).Delete(); } -void TBlobManagerDb::AddBlobToDelete(const NOlap::TUnifiedBlobId& blobId) { +void TBlobManagerDb::AddBlobToDelete(const TUnifiedBlobId& blobId, const TTabletId tabletId) { NIceDb::TNiceDb db(Database); + db.Table<Schema::BlobsToDeleteWT>().Key(blobId.ToStringLegacy(), (ui64)tabletId).Update(); db.Table<Schema::BlobsToDelete>().Key(blobId.ToStringLegacy()).Update(); } -void TBlobManagerDb::EraseBlobToDelete(const NOlap::TUnifiedBlobId& blobId) { +void TBlobManagerDb::EraseBlobToDelete(const TUnifiedBlobId& blobId, const TTabletId tabletId) { NIceDb::TNiceDb db(Database); db.Table<Schema::BlobsToDelete>().Key(blobId.ToStringLegacy()).Delete(); db.Table<Schema::BlobsToDelete>().Key(blobId.ToStringNew()).Delete(); + db.Table<Schema::BlobsToDeleteWT>().Key(blobId.ToStringLegacy(), (ui64)tabletId).Delete(); + db.Table<Schema::BlobsToDeleteWT>().Key(blobId.ToStringNew(), (ui64)tabletId).Delete(); } -bool TBlobManagerDb::LoadTierLists(const TString& storageId, std::deque<NOlap::TUnifiedBlobId>& blobsToDelete, std::deque<NOlap::TUnifiedBlobId>& draftBlobsToDelete) { - draftBlobsToDelete.clear(); - blobsToDelete.clear(); +bool TBlobManagerDb::LoadTierLists(const TString& storageId, TTabletsByBlob& blobsToDelete, std::deque<TUnifiedBlobId>& draftBlobsToDelete, const TTabletId selfTabletId) { + TTabletsByBlob localBlobsToDelete; + std::deque<TUnifiedBlobId> localDraftBlobsToDelete; NIceDb::TNiceDb db(Database); { auto rowset = db.Table<Schema::TierBlobsToDelete>().Prefix(storageId).Select(); - if (!rowset.IsReady()) + if (!rowset.IsReady()) { return false; + } TString error; while (!rowset.EndOfSet()) { const TString blobIdStr = rowset.GetValue<Schema::TierBlobsToDelete::BlobId>(); - NOlap::TUnifiedBlobId unifiedBlobId = NOlap::TUnifiedBlobId::ParseFromString(blobIdStr, nullptr, error); - Y_ABORT_UNLESS(unifiedBlobId.IsValid(), "%s", error.c_str()); + TUnifiedBlobId unifiedBlobId = TUnifiedBlobId::ParseFromString(blobIdStr, nullptr, error); + AFL_VERIFY(unifiedBlobId.IsValid())("event", "cannot_parse_blob")("error", error)("original_string", blobIdStr); + + localBlobsToDelete.Add(selfTabletId, unifiedBlobId); + if (!rowset.Next()) { + return false; + } + } + } + + { + auto rowset = db.Table<Schema::TierBlobsToDeleteWT>().Prefix(storageId).Select(); + if (!rowset.IsReady()) { + return false; + } + + TString error; + + while (!rowset.EndOfSet()) { + const TString blobIdStr = rowset.GetValue<Schema::TierBlobsToDeleteWT::BlobId>(); + TUnifiedBlobId unifiedBlobId = TUnifiedBlobId::ParseFromString(blobIdStr, nullptr, error); + AFL_VERIFY(unifiedBlobId.IsValid())("event", "cannot_parse_blob")("error", error)("original_string", blobIdStr); - blobsToDelete.emplace_back(std::move(unifiedBlobId)); - if (!rowset.Next()) + localBlobsToDelete.Add((TTabletId)rowset.GetValue<Schema::TierBlobsToDeleteWT::TabletId>(), unifiedBlobId); + if (!rowset.Next()) { return false; + } } } { auto rowset = db.Table<Schema::TierBlobsDraft>().Prefix(storageId).Select(); - if (!rowset.IsReady()) + if (!rowset.IsReady()) { return false; + } TString error; while (!rowset.EndOfSet()) { const TString blobIdStr = rowset.GetValue<Schema::TierBlobsDraft::BlobId>(); - NOlap::TUnifiedBlobId unifiedBlobId = NOlap::TUnifiedBlobId::ParseFromString(blobIdStr, nullptr, error); - Y_ABORT_UNLESS(unifiedBlobId.IsValid(), "%s", error.c_str()); + TUnifiedBlobId unifiedBlobId = TUnifiedBlobId::ParseFromString(blobIdStr, nullptr, error); + AFL_VERIFY(unifiedBlobId.IsValid())("event", "cannot_parse_blob")("error", error)("original_string", blobIdStr); - draftBlobsToDelete.emplace_back(std::move(unifiedBlobId)); - if (!rowset.Next()) + localDraftBlobsToDelete.emplace_back(std::move(unifiedBlobId)); + if (!rowset.Next()) { return false; + } } } + + std::swap(localBlobsToDelete, blobsToDelete); + std::swap(localDraftBlobsToDelete, draftBlobsToDelete); return true; } -void TBlobManagerDb::AddTierBlobToDelete(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) { +void TBlobManagerDb::AddTierBlobToDelete(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) { NIceDb::TNiceDb db(Database); + db.Table<Schema::TierBlobsToDeleteWT>().Key(storageId, blobId.ToStringNew(), (ui64)tabletId).Update(); db.Table<Schema::TierBlobsToDelete>().Key(storageId, blobId.ToStringNew()).Update(); } -void TBlobManagerDb::RemoveTierBlobToDelete(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) { +void TBlobManagerDb::RemoveTierBlobToDelete(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) { NIceDb::TNiceDb db(Database); + db.Table<Schema::TierBlobsToDeleteWT>().Key(storageId, blobId.ToStringNew(), (ui64)tabletId).Delete(); db.Table<Schema::TierBlobsToDelete>().Key(storageId, blobId.ToStringNew()).Delete(); } -void TBlobManagerDb::AddTierDraftBlobId(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) { +void TBlobManagerDb::AddTierDraftBlobId(const TString& storageId, const TUnifiedBlobId& blobId) { NIceDb::TNiceDb db(Database); db.Table<Schema::TierBlobsDraft>().Key(storageId, blobId.ToStringNew()).Update(); } -void TBlobManagerDb::RemoveTierDraftBlobId(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) { +void TBlobManagerDb::RemoveTierDraftBlobId(const TString& storageId, const TUnifiedBlobId& blobId) { NIceDb::TNiceDb db(Database); db.Table<Schema::TierBlobsDraft>().Key(storageId, blobId.ToStringNew()).Delete(); } +void TBlobManagerDb::RemoveBlobSharing(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) { + NIceDb::TNiceDb db(Database); + db.Table<Schema::SharedBlobIds>().Key(storageId, blobId.ToStringNew(), (ui64)tabletId).Delete(); +} + +void TBlobManagerDb::AddBlobSharing(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) { + NIceDb::TNiceDb db(Database); + db.Table<Schema::SharedBlobIds>().Key(storageId, blobId.ToStringNew(), (ui64)tabletId).Update(); +} + +void TBlobManagerDb::RemoveBorrowedBlob(const TString& storageId, const TUnifiedBlobId& blobId) { + NIceDb::TNiceDb db(Database); + db.Table<Schema::BorrowedBlobIds>().Key(storageId, blobId.ToStringNew()).Delete(); +} + +void TBlobManagerDb::AddBorrowedBlob(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) { + NIceDb::TNiceDb db(Database); + db.Table<Schema::BorrowedBlobIds>().Key(storageId, blobId.ToStringNew()).Update(NIceDb::TUpdate<Schema::BorrowedBlobIds::TabletId>((ui64)tabletId)); +} + } diff --git a/ydb/core/tx/columnshard/blobs_action/blob_manager_db.h b/ydb/core/tx/columnshard/blobs_action/blob_manager_db.h index bdfc4ddd12f4..6c52e6c9ff2f 100644 --- a/ydb/core/tx/columnshard/blobs_action/blob_manager_db.h +++ b/ydb/core/tx/columnshard/blobs_action/blob_manager_db.h @@ -1,13 +1,16 @@ #pragma once +#include "abstract/blob_set.h" +#include "abstract/common.h" #include <ydb/core/tx/columnshard/defs.h> #include <ydb/core/tablet_flat/flat_database.h> #include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/common/tablet_id.h> namespace NKikimr::NTable { class TDatabase; } -namespace NKikimr::NColumnShard { +namespace NKikimr::NOlap { // Garbage Collection generation and step using TGenStep = std::tuple<ui32, ui32>; @@ -16,22 +19,29 @@ class IBlobManagerDb { public: virtual ~IBlobManagerDb() = default; - virtual bool LoadLastGcBarrier(TGenStep& lastCollectedGenStep) = 0; + [[nodiscard]] virtual bool LoadLastGcBarrier(TGenStep& lastCollectedGenStep) = 0; virtual void SaveLastGcBarrier(const TGenStep& lastCollectedGenStep) = 0; - virtual bool LoadLists(std::vector<NOlap::TUnifiedBlobId>& blobsToKeep, std::vector<NOlap::TUnifiedBlobId>& blobsToDelete, - const NOlap::IBlobGroupSelector* dsGroupSelector) = 0; - virtual void AddBlobToKeep(const NOlap::TUnifiedBlobId& blobId) = 0; - virtual void EraseBlobToKeep(const NOlap::TUnifiedBlobId& blobId) = 0; - virtual void AddBlobToDelete(const NOlap::TUnifiedBlobId& blobId) = 0; - virtual void EraseBlobToDelete(const NOlap::TUnifiedBlobId& blobId) = 0; + [[nodiscard]] virtual bool LoadLists(std::vector<TUnifiedBlobId>& blobsToKeep, TTabletsByBlob& blobsToDelete, + const IBlobGroupSelector* dsGroupSelector, const TTabletId selfTabletId) = 0; + virtual void AddBlobToKeep(const TUnifiedBlobId& blobId) = 0; + virtual void EraseBlobToKeep(const TUnifiedBlobId& blobId) = 0; - virtual bool LoadTierLists(const TString& storageId, std::deque<NOlap::TUnifiedBlobId>& blobsToDelete, std::deque<NOlap::TUnifiedBlobId>& draftBlobsToDelete) = 0; + virtual void AddBlobToDelete(const TUnifiedBlobId& blobId, const TTabletId tabletId) = 0; + virtual void EraseBlobToDelete(const TUnifiedBlobId& blobId, const TTabletId tabletId) = 0; - virtual void AddTierBlobToDelete(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) = 0; - virtual void RemoveTierBlobToDelete(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) = 0; - virtual void AddTierDraftBlobId(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) = 0; - virtual void RemoveTierDraftBlobId(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) = 0; + [[nodiscard]] virtual bool LoadTierLists(const TString& storageId, TTabletsByBlob& blobsToDelete, std::deque<TUnifiedBlobId>& draftBlobsToDelete, const TTabletId selfTabletId) = 0; + + virtual void AddTierBlobToDelete(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) = 0; + virtual void RemoveTierBlobToDelete(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) = 0; + virtual void AddTierDraftBlobId(const TString& storageId, const TUnifiedBlobId& blobId) = 0; + virtual void RemoveTierDraftBlobId(const TString& storageId, const TUnifiedBlobId& blobId) = 0; + + virtual void AddBlobSharing(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) = 0; + virtual void RemoveBlobSharing(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) = 0; + + virtual void AddBorrowedBlob(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) = 0; + virtual void RemoveBorrowedBlob(const TString& storageId, const TUnifiedBlobId& blobId) = 0; }; @@ -41,25 +51,34 @@ class TBlobManagerDb : public IBlobManagerDb { : Database(db) {} - bool LoadLastGcBarrier(TGenStep& lastCollectedGenStep) override; + [[nodiscard]] bool LoadLastGcBarrier(TGenStep& lastCollectedGenStep) override; void SaveLastGcBarrier(const TGenStep& lastCollectedGenStep) override; - bool LoadLists(std::vector<NOlap::TUnifiedBlobId>& blobsToKeep, std::vector<NOlap::TUnifiedBlobId>& blobsToDelete, - const NOlap::IBlobGroupSelector* dsGroupSelector) override; + [[nodiscard]] bool LoadLists(std::vector<TUnifiedBlobId>& blobsToKeep, TTabletsByBlob& blobsToDelete, + const IBlobGroupSelector* dsGroupSelector, const TTabletId selfTabletId) override; + + void AddBlobToKeep(const TUnifiedBlobId& blobId) override; + void EraseBlobToKeep(const TUnifiedBlobId& blobId) override; + void AddBlobToDelete(const TUnifiedBlobId& blobId, const TTabletId tabletId) override; + void EraseBlobToDelete(const TUnifiedBlobId& blobId, const TTabletId tabletId) override; + + [[nodiscard]] bool LoadTierLists(const TString& storageId, TTabletsByBlob& blobsToDelete, std::deque<TUnifiedBlobId>& draftBlobsToDelete, const TTabletId selfTabletId) override; - void AddBlobToKeep(const NOlap::TUnifiedBlobId& blobId) override; - void EraseBlobToKeep(const NOlap::TUnifiedBlobId& blobId) override; - void AddBlobToDelete(const NOlap::TUnifiedBlobId& blobId) override; - void EraseBlobToDelete(const NOlap::TUnifiedBlobId& blobId) override; + void AddTierBlobToDelete(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) override; + void RemoveTierBlobToDelete(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) override; - bool LoadTierLists(const TString& storageId, std::deque<NOlap::TUnifiedBlobId>& blobsToDelete, std::deque<NOlap::TUnifiedBlobId>& draftBlobsToDelete) override; + void AddTierDraftBlobId(const TString& storageId, const TUnifiedBlobId& blobId) override; + void RemoveTierDraftBlobId(const TString& storageId, const TUnifiedBlobId& blobId) override; - void AddTierBlobToDelete(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) override; + void AddBlobSharing(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) override; + void RemoveBlobSharing(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) override; - void RemoveTierBlobToDelete(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) override; + void AddBorrowedBlob(const TString& storageId, const TUnifiedBlobId& blobId, const TTabletId tabletId) override; + void RemoveBorrowedBlob(const TString& storageId, const TUnifiedBlobId& blobId) override; - void AddTierDraftBlobId(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) override; - void RemoveTierDraftBlobId(const TString& storageId, const NOlap::TUnifiedBlobId& blobId) override; + NTable::TDatabase& GetDatabase() { + return Database; + } private: NTable::TDatabase& Database; diff --git a/ydb/core/tx/columnshard/blob_manager.cpp b/ydb/core/tx/columnshard/blobs_action/bs/blob_manager.cpp similarity index 52% rename from ydb/core/tx/columnshard/blob_manager.cpp rename to ydb/core/tx/columnshard/blobs_action/bs/blob_manager.cpp index 83aa1a03f1fc..ed3810ae1edf 100644 --- a/ydb/core/tx/columnshard/blob_manager.cpp +++ b/ydb/core/tx/columnshard/blobs_action/bs/blob_manager.cpp @@ -1,13 +1,10 @@ -#include "defs.h" -#include "columnshard_impl.h" #include "blob_manager.h" -#include "blob_cache.h" #include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> #include <ydb/core/base/blobstorage.h> -#include "blobs_action/bs/gc.h" +#include "gc.h" -namespace NKikimr::NColumnShard { +namespace NKikimr::NOlap { TLogoBlobID ParseLogoBlobId(TString blobId) { TLogoBlobID logoBlobId; @@ -28,7 +25,7 @@ struct TBlobBatch::TBatchInfo : TNonCopyable { TIntrusivePtr<TTabletStorageInfo> TabletInfo; TAllocatedGenStepConstPtr GenStepRef; - const TBlobsManagerCounters Counters; + const NColumnShard::TBlobsManagerCounters Counters; const ui32 Gen; const ui32 Step; const ui32 Channel; @@ -37,7 +34,7 @@ struct TBlobBatch::TBatchInfo : TNonCopyable { i32 InFlightCount; ui64 TotalSizeBytes; - TBatchInfo(TIntrusivePtr<TTabletStorageInfo> tabletInfo, TAllocatedGenStepConstPtr genStep, ui32 channel, const TBlobsManagerCounters& counters) + TBatchInfo(TIntrusivePtr<TTabletStorageInfo> tabletInfo, TAllocatedGenStepConstPtr genStep, ui32 channel, const NColumnShard::TBlobsManagerCounters& counters) : TabletInfo(tabletInfo) , GenStepRef(genStep) , Counters(counters) @@ -83,7 +80,7 @@ void TBlobBatch::SendWriteRequest(const TActorContext& ctx, ui32 groupId, const } void TBlobBatch::SendWriteBlobRequest(const TString& blobData, const TUnifiedBlobId& blobId, TInstant deadline, const TActorContext& ctx) { - Y_ABORT_UNLESS(blobData.size() <= TLimits::GetBlobSizeLimit(), "Blob %" PRISZT" size exceeds the limit %" PRIu64, blobData.size(), TLimits::GetBlobSizeLimit()); + Y_ABORT_UNLESS(blobData.size() <= NColumnShard::TLimits::GetBlobSizeLimit(), "Blob %" PRISZT" size exceeds the limit %" PRIu64, blobData.size(), NColumnShard::TLimits::GetBlobSizeLimit()); const ui32 groupId = blobId.GetDsGroup(); SendWriteRequest(ctx, groupId, blobId.GetLogoBlobId(), blobData, 0, deadline); @@ -125,8 +122,9 @@ TUnifiedBlobId TBlobBatch::AllocateNextBlobId(const TString& blobData) { return BatchInfo->NextBlobId(blobData.size()); } -TBlobManager::TBlobManager(TIntrusivePtr<TTabletStorageInfo> tabletInfo, ui32 gen) - : TabletInfo(tabletInfo) +TBlobManager::TBlobManager(TIntrusivePtr<TTabletStorageInfo> tabletInfo, ui32 gen, const TTabletId selfTabletId) + : SelfTabletId(selfTabletId) + , TabletInfo(tabletInfo) , CurrentGen(gen) , CurrentStep(0) , BlobCountToTriggerGC(BLOB_COUNT_TO_TRIGGER_GC_DEFAULT, 0, Max<i64>()) @@ -138,7 +136,7 @@ void TBlobManager::RegisterControls(NKikimr::TControlBoard& icb) { icb.RegisterSharedControl(GCIntervalSeconds, "ColumnShardControls.GCIntervalSeconds"); } -bool TBlobManager::LoadState(IBlobManagerDb& db) { +bool TBlobManager::LoadState(IBlobManagerDb& db, const TTabletId selfTabletId) { // Load last collected Generation if (!db.LoadLastGcBarrier(LastCollectedGenStep)) { return false; @@ -146,37 +144,29 @@ bool TBlobManager::LoadState(IBlobManagerDb& db) { // Load the keep and delete queues std::vector<TUnifiedBlobId> blobsToKeep; - std::vector<TUnifiedBlobId> blobsToDelete; - TBlobGroupSelector dsGroupSelector(TabletInfo); - if (!db.LoadLists(blobsToKeep, blobsToDelete, &dsGroupSelector)) { + NColumnShard::TBlobGroupSelector dsGroupSelector(TabletInfo); + if (!db.LoadLists(blobsToKeep, BlobsToDelete, &dsGroupSelector, selfTabletId)) { return false; } - for (const auto& unifiedBlobId : blobsToDelete) { - if (unifiedBlobId.IsDsBlob()) { - BlobsToDelete.insert(unifiedBlobId.GetLogoBlobId()); - BlobsManagerCounters.OnDeleteBlobMarker(unifiedBlobId.BlobSize()); - } else { - Y_ABORT("Unexpected blob id: %s", unifiedBlobId.ToStringNew().c_str()); - } + for (auto it = BlobsToDelete.GetIterator(); it.IsValid(); ++it) { + BlobsManagerCounters.OnDeleteBlobMarker(it.GetBlobId().BlobSize()); } BlobsManagerCounters.OnBlobsDelete(BlobsToDelete); // Build the list of steps that cannot be garbage collected before Keep flag is set on the blobs THashSet<TGenStep> genStepsWithBlobsToKeep; for (const auto& unifiedBlobId : blobsToKeep) { - Y_ABORT_UNLESS(unifiedBlobId.IsDsBlob(), "Not a DS blob id in Keep table: %s", unifiedBlobId.ToStringNew().c_str()); - TLogoBlobID blobId = unifiedBlobId.GetLogoBlobId(); TGenStep genStep{blobId.Generation(), blobId.Step()}; Y_ABORT_UNLESS(genStep > LastCollectedGenStep); BlobsToKeep.insert(blobId); BlobsManagerCounters.OnKeepMarker(blobId.BlobSize()); - + const ui64 groupId = dsGroupSelector.GetGroup(blobId); // Keep + DontKeep (probably in different gen:steps) // GC could go through it to a greater LastCollectedGenStep - if (BlobsToDelete.contains(blobId)) { + if (BlobsToDelete.Contains(SelfTabletId, TUnifiedBlobId(groupId, blobId))) { continue; } @@ -197,44 +187,51 @@ bool TBlobManager::LoadState(IBlobManagerDb& db) { return true; } -TGenStep TBlobManager::FindNewGCBarrier() { +void TBlobManager::PopGCBarriers(const TGenStep gs) { + while (AllocatedGenSteps.size() && AllocatedGenSteps.front()->GenStep <= gs) { + AllocatedGenSteps.pop_front(); + } +} + +std::vector<TGenStep> TBlobManager::FindNewGCBarriers() { + AFL_VERIFY(!CollectGenStepInFlight); TGenStep newCollectGenStep = LastCollectedGenStep; - size_t numFinished = 0; + std::vector<TGenStep> result; + if (AllocatedGenSteps.empty()) { + return {TGenStep(CurrentGen, CurrentStep)}; + } for (auto& allocated : AllocatedGenSteps) { + AFL_VERIFY(allocated->GenStep > newCollectGenStep); if (!allocated->Finished()) { break; } - - ++numFinished; + result.emplace_back(allocated->GenStep); newCollectGenStep = allocated->GenStep; - Y_ABORT_UNLESS(newCollectGenStep > CollectGenStepInFlight); - } - if (numFinished) { - AllocatedGenSteps.erase(AllocatedGenSteps.begin(), AllocatedGenSteps.begin() + numFinished); } - - if (AllocatedGenSteps.empty()) { - newCollectGenStep = TGenStep{CurrentGen, CurrentStep}; - } - return newCollectGenStep; + return result; } -std::shared_ptr<NOlap::NBlobOperations::NBlobStorage::TGCTask> TBlobManager::BuildGCTask(const TString& storageId, const std::shared_ptr<TBlobManager>& manager) { - if (BlobsToKeep.empty() && BlobsToDelete.empty() && LastCollectedGenStep == TGenStep{CurrentGen, CurrentStep}) { +std::shared_ptr<NBlobOperations::NBlobStorage::TGCTask> TBlobManager::BuildGCTask(const TString& storageId, + const std::shared_ptr<TBlobManager>& manager, const std::shared_ptr<NDataSharing::TStorageSharedBlobsManager>& sharedBlobsInfo, + const std::shared_ptr<NBlobOperations::TRemoveGCCounters>& counters) noexcept { + AFL_VERIFY(!CollectGenStepInFlight); + if (BlobsToKeep.empty() && BlobsToDelete.IsEmpty() && LastCollectedGenStep == TGenStep{CurrentGen, CurrentStep}) { ACFL_DEBUG("event", "TBlobManager::BuildGCTask skip")("current_gen", CurrentGen)("current_step", CurrentStep); return nullptr; } + std::vector<TGenStep> newCollectGenSteps = FindNewGCBarriers(); - TGenStep newCollectGenStep = FindNewGCBarrier(); - Y_ABORT_UNLESS(newCollectGenStep >= LastCollectedGenStep); + if (newCollectGenSteps.size()) { + if (AllocatedGenSteps.size()) { + AFL_VERIFY(newCollectGenSteps.front() > LastCollectedGenStep); + } else { + AFL_VERIFY(newCollectGenSteps.front() == LastCollectedGenStep); + } + } PreviousGCTime = AppData()->TimeProvider->Now(); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "PreparePerGroupGCRequests")("gen", std::get<0>(newCollectGenStep))("step", std::get<1>(newCollectGenStep)); - BlobsManagerCounters.OnNewCollectStep(std::get<0>(newCollectGenStep), std::get<1>(newCollectGenStep)); const ui32 channelIdx = BLOB_CHANNEL; - - NOlap::NBlobOperations::NBlobStorage::TGCTask::TGCListsByGroup perGroupGCListsInFlight; - + NBlobOperations::NBlobStorage::TGCTask::TGCListsByGroup perGroupGCListsInFlight; // Clear all possibly not kept trash in channel's groups: create an event for each group if (FirstGC) { FirstGC = false; @@ -247,64 +244,119 @@ std::shared_ptr<NOlap::NBlobOperations::NBlobStorage::TGCTask> TBlobManager::Bui } } - // Make per-group Keep/DontKeep lists - std::deque<TUnifiedBlobId> keepsToErase; - std::deque<TUnifiedBlobId> deletesToErase; - { - // Add all blobs to keep - auto keepBlobIt = BlobsToKeep.begin(); - for (; keepBlobIt != BlobsToKeep.end(); ++keepBlobIt) { - TGenStep genStep{keepBlobIt->Generation(), keepBlobIt->Step()}; - if (genStep > newCollectGenStep) { - break; - } - ui32 blobGroup = TabletInfo->GroupFor(keepBlobIt->Channel(), keepBlobIt->Generation()); - perGroupGCListsInFlight[blobGroup].KeepList.insert(*keepBlobIt); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("to_keep_gc", *keepBlobIt); + static const ui32 blobsGCCountLimit = 50000; + + const auto predShared = [&](const TUnifiedBlobId& id, const THashSet<TTabletId>& /*tabletIds*/) { + return id.GetLogoBlobId().TabletID() != (ui64)SelfTabletId; + }; + + TTabletsByBlob extractedToRemoveFromDB = BlobsToDelete.ExtractBlobs(predShared, blobsGCCountLimit); + if (extractedToRemoveFromDB.GetSize() >= blobsGCCountLimit) { + newCollectGenSteps.clear(); + } else { + const auto predRemoveOld = [&](const TUnifiedBlobId& id, const THashSet<TTabletId>& /*tabletIds*/) { + auto logoBlobId = id.GetLogoBlobId(); + TGenStep genStep{logoBlobId.Generation(), logoBlobId.Step()}; + return genStep < LastCollectedGenStep && id.GetLogoBlobId().TabletID() == (ui64)SelfTabletId; + }; + + TTabletsByBlob extractedOld = BlobsToDelete.ExtractBlobs(predRemoveOld, blobsGCCountLimit - extractedToRemoveFromDB.GetSize()); + extractedToRemoveFromDB.Add(extractedOld); + TTabletId tabletId; + TUnifiedBlobId unifiedBlobId; + while (extractedOld.ExtractFront(tabletId, unifiedBlobId)) { + auto logoBlobId = unifiedBlobId.GetLogoBlobId(); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("to_delete_gc", logoBlobId); + NBlobOperations::NBlobStorage::TGCTask::TGCLists& gl = perGroupGCListsInFlight[unifiedBlobId.GetDsGroup()]; + BlobsManagerCounters.OnCollectDropExplicit(logoBlobId.BlobSize()); + gl.DontKeepList.insert(logoBlobId); } - BlobsToKeep.erase(BlobsToKeep.begin(), keepBlobIt); - BlobsManagerCounters.OnBlobsKeep(BlobsToKeep); - - // Add all blobs to delete - auto blobIt = BlobsToDelete.begin(); - for (; blobIt != BlobsToDelete.end(); ++blobIt) { - TGenStep genStep{blobIt->Generation(), blobIt->Step()}; - if (genStep > newCollectGenStep) { - break; - } - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("to_delete_gc", *blobIt); - ui32 blobGroup = TabletInfo->GroupFor(blobIt->Channel(), blobIt->Generation()); - NOlap::NBlobOperations::NBlobStorage::TGCTask::TGCLists& gl = perGroupGCListsInFlight[blobGroup]; - bool skipDontKeep = false; - if (gl.KeepList.erase(*blobIt)) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("to_keep_gc_remove", *blobIt); - // Skipped blobs still need to be deleted from BlobsToKeep table - keepsToErase.emplace_back(TUnifiedBlobId(blobGroup, *blobIt)); - - if (CurrentGen == blobIt->Generation()) { - // If this blob was created and deleted in the current generation then - // we can skip sending both Keep and DontKeep flags. - // NOTE: its not safe to do this for older generations because there is - // a scenario when Keep flag was sent in the old generation and then tablet restarted - // before getting the result and removing the blob from the Keep list. - skipDontKeep = true; - deletesToErase.emplace_back(TUnifiedBlobId(blobGroup, *blobIt)); - ++CountersUpdate.BlobSkippedEntries; + if (extractedToRemoveFromDB.GetSize() >= blobsGCCountLimit) { + newCollectGenSteps.clear(); + } + } + + + std::deque<TUnifiedBlobId> keepsToErase; + for (auto&& newCollectGenStep : newCollectGenSteps) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "PreparePerGroupGCRequests")("gen", std::get<0>(newCollectGenStep))("step", std::get<1>(newCollectGenStep)); + BlobsManagerCounters.OnNewCollectStep(std::get<0>(newCollectGenStep), std::get<1>(newCollectGenStep)); + + // Make per-group Keep/DontKeep lists + + { + // Add all blobs to keep + auto keepBlobIt = BlobsToKeep.begin(); + for (; keepBlobIt != BlobsToKeep.end(); ++keepBlobIt) { + TGenStep genStep{keepBlobIt->Generation(), keepBlobIt->Step()}; + AFL_VERIFY(genStep > LastCollectedGenStep); + if (genStep > newCollectGenStep) { + break; } + ui32 blobGroup = TabletInfo->GroupFor(keepBlobIt->Channel(), keepBlobIt->Generation()); + perGroupGCListsInFlight[blobGroup].KeepList.insert(*keepBlobIt); + keepsToErase.emplace_back(TUnifiedBlobId(blobGroup, *keepBlobIt)); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("to_keep_gc", *keepBlobIt); } - if (!skipDontKeep) { - BlobsManagerCounters.OnCollectDropExplicit(blobIt->BlobSize()); - gl.DontKeepList.insert(*blobIt); - } else { - BlobsManagerCounters.OnCollectDropImplicit(blobIt->BlobSize()); + BlobsToKeep.erase(BlobsToKeep.begin(), keepBlobIt); + BlobsManagerCounters.OnBlobsKeep(BlobsToKeep); + + const auto predSelf = [&](const TUnifiedBlobId& id, const THashSet<TTabletId>& /*tabletIds*/) { + auto logoBlobId = id.GetLogoBlobId(); + TGenStep genStep{logoBlobId.Generation(), logoBlobId.Step()}; + return genStep <= newCollectGenStep && id.GetLogoBlobId().TabletID() == (ui64)SelfTabletId; + }; + TTabletsByBlob extractedSelf = BlobsToDelete.ExtractBlobs(predSelf); + extractedToRemoveFromDB.Add(extractedSelf); + TTabletId tabletId; + TUnifiedBlobId unifiedBlobId; + while (extractedSelf.ExtractFront(tabletId, unifiedBlobId)) { + auto logoBlobId = unifiedBlobId.GetLogoBlobId(); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("to_delete_gc", logoBlobId); + NBlobOperations::NBlobStorage::TGCTask::TGCLists& gl = perGroupGCListsInFlight[unifiedBlobId.GetDsGroup()]; + bool skipDontKeep = false; + if (gl.KeepList.erase(logoBlobId)) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("to_keep_gc_remove", logoBlobId); + // Skipped blobs still need to be deleted from BlobsToKeep table + if (CurrentGen == logoBlobId.Generation()) { + // If this blob was created and deleted in the current generation then + // we can skip sending both Keep and DontKeep flags. + // NOTE: its not safe to do this for older generations because there is + // a scenario when Keep flag was sent in the old generation and then tablet restarted + // before getting the result and removing the blob from the Keep list. + skipDontKeep = true; + ++CountersUpdate.BlobSkippedEntries; + } + } + if (!skipDontKeep) { + BlobsManagerCounters.OnCollectDropExplicit(logoBlobId.BlobSize()); + gl.DontKeepList.insert(logoBlobId); + } else { + BlobsManagerCounters.OnCollectDropImplicit(logoBlobId.BlobSize()); + } } + BlobsManagerCounters.OnBlobsDelete(BlobsToDelete); } - BlobsToDelete.erase(BlobsToDelete.begin(), blobIt); - BlobsManagerCounters.OnBlobsDelete(BlobsToDelete); + CollectGenStepInFlight = newCollectGenStep; + if (extractedToRemoveFromDB.GetSize() + keepsToErase.size() > blobsGCCountLimit) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "a lot of blobs to gc")("to_remove", extractedToRemoveFromDB.GetSize())("keeps_to_erase", keepsToErase.size())("limit", blobsGCCountLimit); + break; + } + } + if (CollectGenStepInFlight) { + PopGCBarriers(*CollectGenStepInFlight); + } else { + CollectGenStepInFlight = LastCollectedGenStep; } + auto removeCategories = sharedBlobsInfo->BuildRemoveCategories(std::move(extractedToRemoveFromDB)); - CollectGenStepInFlight = newCollectGenStep; - return std::make_shared<NOlap::NBlobOperations::NBlobStorage::TGCTask>(storageId, std::move(perGroupGCListsInFlight), newCollectGenStep, std::move(keepsToErase), std::move(deletesToErase), manager); + auto result = std::make_shared<NBlobOperations::NBlobStorage::TGCTask>(storageId, std::move(perGroupGCListsInFlight), *CollectGenStepInFlight, + std::move(keepsToErase), manager, std::move(removeCategories), counters, TabletInfo->TabletID, CurrentGen); + if (result->IsEmpty()) { + CollectGenStepInFlight = {}; + return nullptr; + } + return result; } TBlobBatch TBlobManager::StartBlobBatch(ui32 channel) { @@ -329,8 +381,6 @@ void TBlobManager::DoSaveBlobBatch(TBlobBatch&& blobBatch, IBlobManagerDb& db) { // Add this batch to KeepQueue TGenStep edgeGenStep = EdgeGenStep(); for (auto&& blobId: blobBatch.BatchInfo->GetBlobIds()) { - Y_DEBUG_ABORT_UNLESS(blobId.IsDsBlob(), "Not a DS blob id: %s", blobId.ToStringNew().c_str()); - auto logoBlobId = blobId.GetLogoBlobId(); TGenStep genStep{logoBlobId.Generation(), logoBlobId.Step()}; @@ -346,47 +396,46 @@ void TBlobManager::DoSaveBlobBatch(TBlobBatch&& blobBatch, IBlobManagerDb& db) { blobBatch.BatchInfo->GenStepRef.Reset(); } -void TBlobManager::DeleteBlobOnExecute(const TUnifiedBlobId& blobId, IBlobManagerDb& db) { +void TBlobManager::DeleteBlobOnExecute(const TTabletId tabletId, const TUnifiedBlobId& blobId, IBlobManagerDb& db) { // Persist deletion intent - db.AddBlobToDelete(blobId); + db.AddBlobToDelete(blobId, tabletId); AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("to_delete_on_execute", blobId); } -void TBlobManager::DeleteBlobOnComplete(const TUnifiedBlobId& blobId) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("to_delete_on_complete", blobId); +void TBlobManager::DeleteBlobOnComplete(const TTabletId tabletId, const TUnifiedBlobId& blobId) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("to_delete_on_complete", blobId)("tablet_id_delete", (ui64)tabletId); ++CountersUpdate.BlobsDeleted; // Check if the deletion needs to be delayed until the blob is no longer // used by in-flight requests if (!IsBlobInUsage(blobId)) { LOG_S_DEBUG("BlobManager at tablet " << TabletInfo->TabletID << " Delete Blob " << blobId); - TLogoBlobID logoBlobId = blobId.GetLogoBlobId(); - if (BlobsToDelete.emplace(logoBlobId).second) { - BlobsManagerCounters.OnDeleteBlobMarker(blobId.BlobSize()); - BlobsManagerCounters.OnBlobsDelete(BlobsToDelete); - } + Y_UNUSED(BlobsToDelete.Add(tabletId, blobId)); + BlobsManagerCounters.OnDeleteBlobMarker(blobId.BlobSize()); + BlobsManagerCounters.OnBlobsDelete(BlobsToDelete); } else { BlobsManagerCounters.OnDeleteBlobDelayedMarker(blobId.BlobSize()); LOG_S_DEBUG("BlobManager at tablet " << TabletInfo->TabletID << " Delay Delete Blob " << blobId); - BlobsToDeleteDelayed.insert(blobId.GetLogoBlobId()); + BlobsToDeleteDelayed.Add(tabletId, blobId); } } -void TBlobManager::OnGCFinished(const TGenStep& genStep, IBlobManagerDb& db) { +void TBlobManager::OnGCFinishedOnExecute(const TGenStep& genStep, IBlobManagerDb& db) { + db.SaveLastGcBarrier(genStep); +} + +void TBlobManager::OnGCFinishedOnComplete(const TGenStep& genStep) { LastCollectedGenStep = genStep; - db.SaveLastGcBarrier(LastCollectedGenStep); CollectGenStepInFlight.reset(); } void TBlobManager::OnBlobFree(const TUnifiedBlobId& blobId) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "blob_free")("blob_id", blobId); // Check if the blob is marked for delayed deletion - const TLogoBlobID logoBlobId = blobId.GetLogoBlobId(); - if (BlobsToDeleteDelayed.erase(logoBlobId)) { + if (BlobsToDeleteDelayed.ExtractBlobTo(blobId, BlobsToDelete)) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("blob_id", blobId)("event", "blob_delayed_deleted"); - BlobsToDelete.insert(logoBlobId); BlobsManagerCounters.OnBlobsDelete(BlobsToDelete); - BlobsManagerCounters.OnDeleteBlobMarker(logoBlobId.BlobSize()); + BlobsManagerCounters.OnDeleteBlobMarker(blobId.GetLogoBlobId().BlobSize()); } } diff --git a/ydb/core/tx/columnshard/blob_manager.h b/ydb/core/tx/columnshard/blobs_action/bs/blob_manager.h similarity index 68% rename from ydb/core/tx/columnshard/blob_manager.h rename to ydb/core/tx/columnshard/blobs_action/bs/blob_manager.h index a769a417aab7..c1228ea97c76 100644 --- a/ydb/core/tx/columnshard/blob_manager.h +++ b/ydb/core/tx/columnshard/blobs_action/bs/blob_manager.h @@ -1,9 +1,10 @@ #pragma once -#include "blob.h" -#include "blobs_action/blob_manager_db.h" -#include "blobs_action/abstract/storage.h" -#include "counters/blobs_manager.h" +#include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/storage.h> +#include <ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h> +#include <ydb/core/tx/columnshard/counters/blobs_manager.h> #include <ydb/core/tablet_flat/flat_executor.h> #include <ydb/core/util/backoff.h> @@ -15,12 +16,8 @@ namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { class TGCTask; } -namespace NKikimr::NColumnShard { +namespace NKikimr::NOlap { -using NOlap::TUnifiedBlobId; -using NOlap::TBlobRange; -using NOlap::TEvictedBlob; -using NOlap::EEvictState; using NKikimrTxColumnShard::TEvictMetadata; @@ -89,29 +86,8 @@ class IBlobManager { return DoSaveBlobBatch(std::move(blobBatch), db); } - virtual void DeleteBlobOnExecute(const TUnifiedBlobId& blobId, IBlobManagerDb& db) = 0; - virtual void DeleteBlobOnComplete(const TUnifiedBlobId& blobId) = 0; -}; - -// An interface for exporting and caching exported blobs out of ColumnShard index to external storages like S3. -// Just do not mix it with IBlobManager that use out storage model. -class IBlobExporter { -protected: - ~IBlobExporter() = default; - -public: - // Lazily export blob to external object store. Keep it available via blobId. - virtual bool ExportOneToOne(TEvictedBlob&& evict, const TEvictMetadata& meta, IBlobManagerDb& db) = 0; - virtual bool DropOneToOne(const TUnifiedBlobId& blobId, IBlobManagerDb& db) = 0; - virtual bool UpdateOneToOne(TEvictedBlob& evict, IBlobManagerDb& db, bool& dropped) = 0; - virtual bool EraseOneToOne(const TEvictedBlob& evict, IBlobManagerDb& db) = 0; - virtual bool LoadOneToOneExport(IBlobManagerDb& db, THashSet<TUnifiedBlobId>& droppedEvicting) = 0; - virtual TEvictedBlob GetEvicted(const TUnifiedBlobId& blob, TEvictMetadata& meta) = 0; - virtual TEvictedBlob GetDropped(const TUnifiedBlobId& blobId, TEvictMetadata& meta) = 0; - virtual void GetCleanupBlobs(THashMap<TString, THashSet<TEvictedBlob>>& tierBlobs, - const THashSet<TUnifiedBlobId>& allowList = {}) const = 0; - virtual void GetReexportBlobs(THashMap<TString, THashSet<TEvictedBlob>>& tierBlobs) const = 0; - virtual bool HasExternBlobs() const = 0; + virtual void DeleteBlobOnExecute(const TTabletId tabletId, const TUnifiedBlobId& blobId, IBlobManagerDb& db) = 0; + virtual void DeleteBlobOnComplete(const TTabletId tabletId, const TUnifiedBlobId& blobId) = 0; }; // A ref-counted object to keep track when GC barrier can be moved to some step. @@ -143,12 +119,13 @@ struct TBlobManagerCounters { }; // The implementation of BlobManager that hides all GC-related details -class TBlobManager : public IBlobManager, public NOlap::TCommonBlobsTracker { +class TBlobManager : public IBlobManager, public TCommonBlobsTracker { private: static constexpr size_t BLOB_COUNT_TO_TRIGGER_GC_DEFAULT = 1000; static constexpr ui64 GC_INTERVAL_SECONDS_DEFAULT = 60; private: + const TTabletId SelfTabletId; TIntrusivePtr<TTabletStorageInfo> TabletInfo; const ui32 CurrentGen; ui32 CurrentStep; @@ -158,10 +135,10 @@ class TBlobManager : public IBlobManager, public NOlap::TCommonBlobsTracker { // Lists of blobs that need Keep flag to be set TSet<TLogoBlobID> BlobsToKeep; // Lists of blobs that need DoNotKeep flag to be set - TSet<TLogoBlobID> BlobsToDelete; + TTabletsByBlob BlobsToDelete; // List of blobs that are marked for deletion but are still used by in-flight requests - TSet<TLogoBlobID> BlobsToDeleteDelayed; + TTabletsByBlob BlobsToDeleteDelayed; // Sorted queue of GenSteps that have in-flight BlobBatches TDeque<TAllocatedGenStepConstPtr> AllocatedGenSteps; @@ -172,26 +149,34 @@ class TBlobManager : public IBlobManager, public NOlap::TCommonBlobsTracker { // The barrier in the current in-flight GC request(s) bool FirstGC = true; - const TBlobsManagerCounters BlobsManagerCounters = TBlobsManagerCounters("BlobsManager"); + const NColumnShard::TBlobsManagerCounters BlobsManagerCounters = NColumnShard::TBlobsManagerCounters("BlobsManager"); // Stores counter updates since last call to GetCountersUpdate() // Then the counters are reset and start accumulating new delta TBlobManagerCounters CountersUpdate; - ui64 PerGenerationCounter = 1; - TInstant PreviousGCTime; // Used for delaying next GC if there are too few blobs to collect virtual void DoSaveBlobBatch(TBlobBatch&& blobBatch, IBlobManagerDb& db) override; public: - TBlobManager(TIntrusivePtr<TTabletStorageInfo> tabletInfo, ui32 gen); + TBlobManager(TIntrusivePtr<TTabletStorageInfo> tabletInfo, const ui32 gen, const TTabletId selfTabletId); + + TTabletsByBlob GetBlobsToDeleteAll() const { + auto result = BlobsToDelete; + result.Add(BlobsToDeleteDelayed); + return result; + } virtual void OnBlobFree(const TUnifiedBlobId& blobId) override; - const TBlobsManagerCounters& GetCounters() const { + const NColumnShard::TBlobsManagerCounters& GetCounters() const { return BlobsManagerCounters; } + TTabletId GetSelfTabletId() const { + return SelfTabletId; + } + ui64 GetTabletId() const { return TabletInfo->TabletID; } @@ -203,12 +188,15 @@ class TBlobManager : public IBlobManager, public NOlap::TCommonBlobsTracker { void RegisterControls(NKikimr::TControlBoard& icb); // Loads the state at startup - bool LoadState(IBlobManagerDb& db); + bool LoadState(IBlobManagerDb& db, const TTabletId selfTabletId); // Prepares Keep/DontKeep lists and GC barrier - std::shared_ptr<NOlap::NBlobOperations::NBlobStorage::TGCTask> BuildGCTask(const TString& storageId, const std::shared_ptr<TBlobManager>& manager); + std::shared_ptr<NBlobOperations::NBlobStorage::TGCTask> BuildGCTask(const TString& storageId, + const std::shared_ptr<TBlobManager>& manager, const std::shared_ptr<NDataSharing::TStorageSharedBlobsManager>& sharedBlobsInfo, + const std::shared_ptr<NBlobOperations::TRemoveGCCounters>& counters) noexcept; - void OnGCFinished(const TGenStep& genStep, IBlobManagerDb& db); + void OnGCFinishedOnExecute(const TGenStep& genStep, IBlobManagerDb& db); + void OnGCFinishedOnComplete(const TGenStep& genStep); TBlobManagerCounters GetCountersUpdate() { TBlobManagerCounters res = CountersUpdate; @@ -218,10 +206,12 @@ class TBlobManager : public IBlobManager, public NOlap::TCommonBlobsTracker { // Implementation of IBlobManager interface TBlobBatch StartBlobBatch(ui32 channel = BLOB_CHANNEL) override; - void DeleteBlobOnExecute(const TUnifiedBlobId& blobId, IBlobManagerDb& db) override; - void DeleteBlobOnComplete(const TUnifiedBlobId& blobId) override; + virtual void DeleteBlobOnExecute(const TTabletId tabletId, const TUnifiedBlobId& blobId, IBlobManagerDb& db) override; + virtual void DeleteBlobOnComplete(const TTabletId tabletId, const TUnifiedBlobId& blobId) override; private: - TGenStep FindNewGCBarrier(); + std::vector<TGenStep> FindNewGCBarriers(); + void PopGCBarriers(const TGenStep gs); + void PopGCBarriers(const ui32 count); bool ExtractEvicted(TEvictedBlob& evict, TEvictMetadata& meta, bool fromDropped = false); diff --git a/ydb/core/tx/columnshard/blobs_action/bs/gc.cpp b/ydb/core/tx/columnshard/blobs_action/bs/gc.cpp index 7d6a7456701b..4ee6598a206d 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/gc.cpp +++ b/ydb/core/tx/columnshard/blobs_action/bs/gc.cpp @@ -2,99 +2,64 @@ #include "storage.h" #include <ydb/core/tx/columnshard/columnshard_private_events.h> #include <ydb/core/tx/columnshard/columnshard_impl.h> -#include <ydb/core/tx/columnshard/blob_manager.h> #include <ydb/library/actors/core/log.h> namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { -void TGCTask::DoOnExecuteTxAfterCleaning(NColumnShard::TColumnShard& /*self*/, NColumnShard::TBlobManagerDb& dbBlobs) { - size_t numBlobs = 0; - - for (; KeepsToErase.size() && numBlobs < NColumnShard::TLimits::MAX_BLOBS_TO_DELETE; ++numBlobs) { - dbBlobs.EraseBlobToKeep(KeepsToErase.front()); - KeepsToErase.pop_front(); - } +void TGCTask::RemoveBlobIdFromDB(const TTabletId tabletId, const TUnifiedBlobId& blobId, TBlobManagerDb& dbBlobs) { + dbBlobs.EraseBlobToDelete(blobId, tabletId); +} - for (; DeletesToErase.size() && numBlobs < NColumnShard::TLimits::MAX_BLOBS_TO_DELETE; ++numBlobs) { - dbBlobs.EraseBlobToDelete(DeletesToErase.front()); - DeletesToErase.pop_front(); - } - if (KeepsToErase.empty() && DeletesToErase.empty()) { - Manager->OnGCFinished(CollectGenStepInFlight, dbBlobs); +void TGCTask::DoOnExecuteTxAfterCleaning(NColumnShard::TColumnShard& /*self*/, TBlobManagerDb& dbBlobs) { + for (auto&& i : KeepsToErase) { + dbBlobs.EraseBlobToKeep(i); } + Manager->OnGCFinishedOnExecute(CollectGenStepInFlight, dbBlobs); } -bool TGCTask::DoOnCompleteTxAfterCleaning(NColumnShard::TColumnShard& self, const std::shared_ptr<IBlobsGCAction>& taskAction) { - if (KeepsToErase.size() || DeletesToErase.size()) { - TActorContext::AsActorContext().Send(self.SelfId(), std::make_unique<NColumnShard::TEvPrivate::TEvGarbageCollectionFinished>(taskAction)); - return false; - } else { - return true; - } +bool TGCTask::DoOnCompleteTxAfterCleaning(NColumnShard::TColumnShard& /*self*/, const std::shared_ptr<IBlobsGCAction>& /*taskAction*/) { + Manager->OnGCFinishedOnComplete(CollectGenStepInFlight); + return true; } -TGCTask::TGCTask(const TString& storageId, TGCListsByGroup&& listsByGroupId, const NColumnShard::TGenStep& collectGenStepInFlight, std::deque<TUnifiedBlobId>&& keepsToErase, std::deque<TUnifiedBlobId>&& deletesToErase, - const std::shared_ptr<NColumnShard::TBlobManager>& manager) - : TBase(storageId) +TGCTask::TGCTask(const TString& storageId, TGCListsByGroup&& listsByGroupId, const TGenStep& collectGenStepInFlight, std::deque<TUnifiedBlobId>&& keepsToErase, + const std::shared_ptr<TBlobManager>& manager, TBlobsCategories&& blobsToRemove, const std::shared_ptr<TRemoveGCCounters>& counters, + const ui64 tabletId, const ui64 currentGen) + : TBase(storageId, std::move(blobsToRemove), counters) , ListsByGroupId(std::move(listsByGroupId)) , CollectGenStepInFlight(collectGenStepInFlight) + , TabletId(tabletId) + , CurrentGen(currentGen) , KeepsToErase(std::move(keepsToErase)) - , DeletesToErase(std::move(deletesToErase)) , Manager(manager) { } void TGCTask::OnGCResult(TEvBlobStorage::TEvCollectGarbageResult::TPtr ev) { AFL_VERIFY(ev->Get()->Status == NKikimrProto::OK)("status", ev->Get()->Status)("details", ev->Get()->ToString())("action_id", GetActionGuid()); - - // Find the group for this result - ui64 counterFromRequest = ev->Get()->PerGenerationCounter; - auto itCounter = CounterToGroupInFlight.find(counterFromRequest); - Y_ABORT_UNLESS(itCounter != CounterToGroupInFlight.end()); - const ui32 group = itCounter->second; - - auto itGroup = ListsByGroupId.find(group); + auto itGroup = ListsByGroupId.find(ev->Cookie); Y_ABORT_UNLESS(itGroup != ListsByGroupId.end()); - const auto& keepList = itGroup->second.KeepList; - const auto& dontKeepList = itGroup->second.DontKeepList; - - for (auto&& i : dontKeepList) { - Counters->OnReply(i.BlobSize()); - } - - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("actor", "OnGCResult")("keep_list", keepList.size())("dont_keep_list", dontKeepList.size()); - - for (const auto& blobId : keepList) { - KeepsToErase.emplace_back(TUnifiedBlobId(group, blobId)); - } - for (const auto& blobId : dontKeepList) { - DeletesToErase.emplace_back(TUnifiedBlobId(group, blobId)); - } - ListsByGroupId.erase(itGroup); - CounterToGroupInFlight.erase(itCounter); } -THashMap<ui32, std::unique_ptr<NKikimr::TEvBlobStorage::TEvCollectGarbage>> TGCTask::BuildRequests(ui64& perGenerationCounter, const ui64 tabletId, const ui64 currentGen) { - const ui32 channelIdx = NColumnShard::IBlobManager::BLOB_CHANNEL; - // Make per group requests - THashMap<ui32, std::unique_ptr<TEvBlobStorage::TEvCollectGarbage>> requests; - for (const auto& gl : ListsByGroupId) { - ui32 group = gl.first; - requests[group] = std::make_unique<TEvBlobStorage::TEvCollectGarbage>( - tabletId, currentGen, perGenerationCounter, - channelIdx, true, - std::get<0>(CollectGenStepInFlight), std::get<1>(CollectGenStepInFlight), - new TVector<TLogoBlobID>(gl.second.KeepList.begin(), gl.second.KeepList.end()), - new TVector<TLogoBlobID>(gl.second.DontKeepList.begin(), gl.second.DontKeepList.end()), - TInstant::Max(), true); - for (auto&& i : gl.second.DontKeepList) { - Counters->OnRequest(i.BlobSize()); - } - Y_ABORT_UNLESS(CounterToGroupInFlight.emplace(perGenerationCounter, group).second); - perGenerationCounter += requests[group]->PerGenerationCounterStepSize(); - } - return std::move(requests); +namespace { +static TAtomicCounter PerGenerationCounter = 1; +} + +std::unique_ptr<TEvBlobStorage::TEvCollectGarbage> TGCTask::BuildRequest(const ui64 groupId) const { + const ui32 channelIdx = IBlobManager::BLOB_CHANNEL; + auto it = ListsByGroupId.find(groupId); + AFL_VERIFY(it != ListsByGroupId.end()); + AFL_VERIFY(++it->second.RequestsCount < 10); + auto result = std::make_unique<TEvBlobStorage::TEvCollectGarbage>( + TabletId, CurrentGen, PerGenerationCounter.Val(), + channelIdx, true, + std::get<0>(CollectGenStepInFlight), std::get<1>(CollectGenStepInFlight), + new TVector<TLogoBlobID>(it->second.KeepList.begin(), it->second.KeepList.end()), + new TVector<TLogoBlobID>(it->second.DontKeepList.begin(), it->second.DontKeepList.end()), + TInstant::Max(), true); + result->PerGenerationCounter = PerGenerationCounter.Add(result->PerGenerationCounterStepSize()); + return std::move(result); } } diff --git a/ydb/core/tx/columnshard/blobs_action/bs/gc.h b/ydb/core/tx/columnshard/blobs_action/bs/gc.h index c8ee866acb63..86f348fe9fcd 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/gc.h +++ b/ydb/core/tx/columnshard/blobs_action/bs/gc.h @@ -1,9 +1,10 @@ #pragma once +#include "blob_manager.h" + #include <ydb/core/tx/columnshard/blob_cache.h> #include <ydb/core/tx/columnshard/blobs_action/abstract/gc.h> #include <ydb/core/tx/columnshard/blobs_action/counters/remove_gc.h> -#include <ydb/core/tx/columnshard/blob_manager.h> namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { @@ -14,31 +15,31 @@ class TGCTask: public IBlobsGCAction { struct TGCLists { THashSet<TLogoBlobID> KeepList; THashSet<TLogoBlobID> DontKeepList; + mutable ui32 RequestsCount = 0; }; using TGCListsByGroup = THashMap<ui32, TGCLists>; private: TGCListsByGroup ListsByGroupId; - NColumnShard::TGenStep CollectGenStepInFlight; - // Maps PerGenerationCounter value to the group in PerGroupGCListsInFlight - THashMap<ui64, ui32> CounterToGroupInFlight; + TGenStep CollectGenStepInFlight; + const ui64 TabletId; + const ui64 CurrentGen; std::deque<TUnifiedBlobId> KeepsToErase; - std::deque<TUnifiedBlobId> DeletesToErase; - std::shared_ptr<NColumnShard::TBlobManager> Manager; - std::shared_ptr<TRemoveGCCounters> Counters; + std::shared_ptr<TBlobManager> Manager; protected: - virtual void DoOnExecuteTxAfterCleaning(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs) override; + virtual void RemoveBlobIdFromDB(const TTabletId tabletId, const TUnifiedBlobId& blobId, TBlobManagerDb& dbBlobs) override; + virtual void DoOnExecuteTxAfterCleaning(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs) override; virtual bool DoOnCompleteTxAfterCleaning(NColumnShard::TColumnShard& self, const std::shared_ptr<IBlobsGCAction>& taskAction) override; -public: - bool IsEmpty() const { - return ListsByGroupId.empty(); + virtual bool DoIsEmpty() const override { + return false; } - void SetCounters(const std::shared_ptr<TRemoveGCCounters>& counters) { - Counters = counters; - } +public: + TGCTask(const TString& storageId, TGCListsByGroup&& listsByGroupId, const TGenStep& collectGenStepInFlight, std::deque<TUnifiedBlobId>&& keepsToErase, + const std::shared_ptr<TBlobManager>& manager, TBlobsCategories&& blobsToRemove, const std::shared_ptr<TRemoveGCCounters>& counters, const ui64 tabletId, const ui64 currentGen); - TGCTask(const TString& storageId, TGCListsByGroup&& listsByGroupId, const NColumnShard::TGenStep& collectGenStepInFlight, std::deque<TUnifiedBlobId>&& keepsToErase, std::deque<TUnifiedBlobId>&& deletesToErase, - const std::shared_ptr<NColumnShard::TBlobManager>& manager); + const TGCListsByGroup& GetListsByGroupId() const { + return ListsByGroupId; + } bool IsFinished() const { return ListsByGroupId.empty(); @@ -46,7 +47,7 @@ class TGCTask: public IBlobsGCAction { void OnGCResult(TEvBlobStorage::TEvCollectGarbageResult::TPtr ev); - THashMap<ui32, std::unique_ptr<TEvBlobStorage::TEvCollectGarbage>> BuildRequests(ui64& perGenerationCounter, const ui64 tabletId, const ui64 currentGen); + std::unique_ptr<TEvBlobStorage::TEvCollectGarbage> BuildRequest(const ui64 groupId) const; }; } diff --git a/ydb/core/tx/columnshard/blobs_action/bs/gc_actor.cpp b/ydb/core/tx/columnshard/blobs_action/bs/gc_actor.cpp index e0fd4d29f277..8c2e792024ee 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/gc_actor.cpp +++ b/ydb/core/tx/columnshard/blobs_action/bs/gc_actor.cpp @@ -9,9 +9,17 @@ void TGarbageCollectionActor::Handle(TEvBlobStorage::TEvCollectGarbageResult::TP auto g = PassAwayGuard(); ACFL_WARN("event", "blocked_gc_event"); return; + } else if (ev->Get()->Status == NKikimrProto::OK) { + GCTask->OnGCResult(ev); + CheckFinished(); + } else { + ACFL_ERROR()("event", "GC_ERROR")("details", ev->Get()->Print(true)); + SendToBSProxy(NActors::TActivationContext::AsActorContext(), ev->Cookie, GCTask->BuildRequest(ev->Cookie).release(), ev->Cookie); } - GCTask->OnGCResult(ev); - if (GCTask->IsFinished()) { +} + +void TGarbageCollectionActor::CheckFinished() { + if (SharedRemovingFinished && GCTask->IsFinished()) { auto g = PassAwayGuard(); ACFL_DEBUG("actor", "TGarbageCollectionActor")("event", "finished"); TActorContext::AsActorContext().Send(TabletActorId, std::make_unique<NColumnShard::TEvPrivate::TEvGarbageCollectionFinished>(GCTask)); diff --git a/ydb/core/tx/columnshard/blobs_action/bs/gc_actor.h b/ydb/core/tx/columnshard/blobs_action/bs/gc_actor.h index bcd5dfdbe06c..b2ebcfd35368 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/gc_actor.h +++ b/ydb/core/tx/columnshard/blobs_action/bs/gc_actor.h @@ -1,22 +1,27 @@ #pragma once #include "gc.h" -#include <ydb/core/tx/columnshard/blob_manager.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/gc_actor.h> #include <ydb/core/tx/columnshard/blob_cache.h> #include <ydb/core/base/blobstorage.h> namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { -class TGarbageCollectionActor: public TActorBootstrapped<TGarbageCollectionActor> { +class TGarbageCollectionActor: public TSharedBlobsCollectionActor<TGarbageCollectionActor> { private: + using TBase = TSharedBlobsCollectionActor<TGarbageCollectionActor>; const NActors::TActorId TabletActorId; - THashMap<ui32, std::unique_ptr<TEvBlobStorage::TEvCollectGarbage>> Requests; std::shared_ptr<TGCTask> GCTask; void Handle(TEvBlobStorage::TEvCollectGarbageResult::TPtr& ev); + void CheckFinished(); + + virtual void DoOnSharedRemovingFinished() override { + CheckFinished(); + } public: - TGarbageCollectionActor(const std::shared_ptr<TGCTask>& task, THashMap<ui32, std::unique_ptr<TEvBlobStorage::TEvCollectGarbage>>&& requests, const NActors::TActorId& tabletActorId) - : TabletActorId(tabletActorId) - , Requests(std::move(requests)) + TGarbageCollectionActor(const std::shared_ptr<TGCTask>& task, const NActors::TActorId& tabletActorId, const TTabletId selfTabletId) + : TBase(task->GetStorageId(), selfTabletId, task->GetBlobsToRemove().GetBorrowed()) + , TabletActorId(tabletActorId) , GCTask(task) { @@ -26,14 +31,19 @@ class TGarbageCollectionActor: public TActorBootstrapped<TGarbageCollectionActor NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("action_id", GCTask->GetActionGuid()); switch (ev->GetTypeRewrite()) { hFunc(TEvBlobStorage::TEvCollectGarbageResult, Handle); + default: + TBase::StateWork(ev); } } void Bootstrap(const TActorContext& ctx) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("actor", "TGarbageCollectionActor")("event", "starting")("action_id", GCTask->GetActionGuid()); - for (auto&& i : Requests) { - SendToBSProxy(ctx, i.first, i.second.release()); + for (auto&& i : GCTask->GetListsByGroupId()) { + auto request = GCTask->BuildRequest(i.first); + AFL_VERIFY(request); + SendToBSProxy(ctx, i.first, request.release(), i.first); } + TBase::Bootstrap(ctx); Become(&TGarbageCollectionActor::StateWork); } }; diff --git a/ydb/core/tx/columnshard/blobs_action/bs/read.cpp b/ydb/core/tx/columnshard/blobs_action/bs/read.cpp index 89852a31f4d3..93d6e45200c4 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/read.cpp +++ b/ydb/core/tx/columnshard/blobs_action/bs/read.cpp @@ -1,5 +1,14 @@ #include "read.h" +#include <ydb/core/tx/columnshard/blob_cache.h> +#include <util/string/join.h> namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { +void TReadingAction::DoStartReading(THashSet<TBlobRange>&& ranges) { + NBlobCache::TReadBlobRangeOptions readOpts{.CacheAfterRead = true, .IsBackgroud = GetIsBackgroundProcess(), .WithDeadline = false}; + std::vector<TBlobRange> rangesLocal(ranges.begin(), ranges.end()); + TActorContext::AsActorContext().Send(BlobCacheActorId, new NBlobCache::TEvBlobCache::TEvReadBlobRangeBatch(std::move(rangesLocal), std::move(readOpts))); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("blob_ids", JoinSeq(",", ranges))("count", ranges.size()); +} + } diff --git a/ydb/core/tx/columnshard/blobs_action/bs/read.h b/ydb/core/tx/columnshard/blobs_action/bs/read.h index e21c66866a05..1bd6bbc03dfc 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/read.h +++ b/ydb/core/tx/columnshard/blobs_action/bs/read.h @@ -1,8 +1,6 @@ #pragma once #include <ydb/core/tx/columnshard/blobs_action/abstract/read.h> -#include <ydb/core/tx/columnshard/blob_manager.h> -#include <ydb/core/tx/columnshard/blob_cache.h> namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { @@ -11,13 +9,9 @@ class TReadingAction: public IBlobsReadingAction { using TBase = IBlobsReadingAction; const TActorId BlobCacheActorId; protected: - virtual void DoStartReading(const THashMap<TUnifiedBlobId, THashSet<TBlobRange>>& ranges) override { - for (auto&& i : ranges) { - NBlobCache::TReadBlobRangeOptions readOpts{.CacheAfterRead = true, .IsBackgroud = GetIsBackgroundProcess(), .WithDeadline = false}; - std::vector<TBlobRange> rangesLocal(i.second.begin(), i.second.end()); - TActorContext::AsActorContext().Send(BlobCacheActorId, new NBlobCache::TEvBlobCache::TEvReadBlobRangeBatch(std::move(rangesLocal), std::move(readOpts))); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("blob_id", i.first)("count", i.second.size()); - } + virtual void DoStartReading(THashSet<TBlobRange>&& ranges) override; + virtual THashMap<TBlobRange, std::vector<TBlobRange>> GroupBlobsForOptimization(std::vector<TBlobRange>&& ranges) const override { + return TBlobsGlueing::GroupRanges(std::move(ranges), TBlobsGlueing::TSequentialGluePolicy()); } public: diff --git a/ydb/core/tx/columnshard/blobs_action/bs/remove.h b/ydb/core/tx/columnshard/blobs_action/bs/remove.h index 59c8bf38dcaf..4067b9c7e8cd 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/remove.h +++ b/ydb/core/tx/columnshard/blobs_action/bs/remove.h @@ -1,37 +1,36 @@ #pragma once +#include "blob_manager.h" #include <ydb/core/tx/columnshard/blobs_action/abstract/remove.h> -#include <ydb/core/tx/columnshard/blob_manager.h> -#include <ydb/core/tx/columnshard/blob_cache.h> namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { class TDeclareRemovingAction: public IBlobsDeclareRemovingAction { private: using TBase = IBlobsDeclareRemovingAction; - NColumnShard::TBlobManager* Manager; + TBlobManager* Manager; protected: - virtual void DoDeclareRemove(const TUnifiedBlobId& /*blobId*/) { + virtual void DoDeclareRemove(const TTabletId /*tabletId*/, const TUnifiedBlobId& /*blobId*/) { } - virtual void DoOnExecuteTxAfterRemoving(NColumnShard::TColumnShard& /*self*/, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { + virtual void DoOnExecuteTxAfterRemoving(TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { if (blobsWroteSuccessfully) { - for (auto&& i : GetDeclaredBlobs()) { - Manager->DeleteBlobOnExecute(i, dbBlobs); + for (auto i = GetDeclaredBlobs().GetIterator(); i.IsValid(); ++i) { + Manager->DeleteBlobOnExecute(i.GetTabletId(), i.GetBlobId(), dbBlobs); } } } - virtual void DoOnCompleteTxAfterRemoving(NColumnShard::TColumnShard& /*self*/, const bool blobsWroteSuccessfully) { + virtual void DoOnCompleteTxAfterRemoving(const bool blobsWroteSuccessfully) { if (blobsWroteSuccessfully) { - for (auto&& i : GetDeclaredBlobs()) { - Manager->DeleteBlobOnComplete(i); + for (auto i = GetDeclaredBlobs().GetIterator(); i.IsValid(); ++i) { + Manager->DeleteBlobOnComplete(i.GetTabletId(), i.GetBlobId()); } } } public: - TDeclareRemovingAction(const TString& storageId, NColumnShard::TBlobManager& manager) - : TBase(storageId) + TDeclareRemovingAction(const TString& storageId, const std::shared_ptr<NBlobOperations::TRemoveDeclareCounters>& counters, TBlobManager& manager) + : TBase(storageId, manager.GetSelfTabletId(), counters) , Manager(&manager) { diff --git a/ydb/core/tx/columnshard/blobs_action/bs/storage.cpp b/ydb/core/tx/columnshard/blobs_action/bs/storage.cpp index 7b9b864b8bb7..80a9c356ec40 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/storage.cpp +++ b/ydb/core/tx/columnshard/blobs_action/bs/storage.cpp @@ -8,8 +8,8 @@ namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { -std::shared_ptr<NKikimr::NOlap::IBlobsDeclareRemovingAction> TOperator::DoStartDeclareRemovingAction() { - return std::make_shared<TDeclareRemovingAction>(GetStorageId(), *Manager); +std::shared_ptr<NKikimr::NOlap::IBlobsDeclareRemovingAction> TOperator::DoStartDeclareRemovingAction(const std::shared_ptr<NBlobOperations::TRemoveDeclareCounters>& counters) { + return std::make_shared<TDeclareRemovingAction>(GetStorageId(), counters, *Manager); } std::shared_ptr<NKikimr::NOlap::IBlobsWritingAction> TOperator::DoStartWritingAction() { @@ -21,22 +21,23 @@ std::shared_ptr<NKikimr::NOlap::IBlobsReadingAction> TOperator::DoStartReadingAc } std::shared_ptr<IBlobsGCAction> TOperator::DoStartGCAction(const std::shared_ptr<TRemoveGCCounters>& counters) const { - auto gcTask = Manager->BuildGCTask(GetStorageId(), Manager); - if (!gcTask || gcTask->IsEmpty()) { + auto gcTask = Manager->BuildGCTask(GetStorageId(), Manager, GetSharedBlobs(), counters); + if (!gcTask) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "StartGCSkipped"); return nullptr; + } else { + AFL_VERIFY(!gcTask->IsEmpty()); } - gcTask->SetCounters(counters); - auto requests = gcTask->BuildRequests(PerGenerationCounter, Manager->GetTabletId(), Manager->GetCurrentGen()); - AFL_VERIFY(requests.size()); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "StartGC")("requests_count", requests.size()); - TActorContext::AsActorContext().Register(new TGarbageCollectionActor(gcTask, std::move(requests), TabletActorId)); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "StartGC")("requests_count", gcTask->GetListsByGroupId().size()); + TActorContext::AsActorContext().Register(new TGarbageCollectionActor(gcTask, TabletActorId, GetSelfTabletId())); return gcTask; } -TOperator::TOperator(const TString& storageId, const NActors::TActorId& tabletActorId, const TIntrusivePtr<TTabletStorageInfo>& tabletInfo, const ui64 generation) - : TBase(storageId) - , Manager(std::make_shared<NColumnShard::TBlobManager>(tabletInfo, generation)) +TOperator::TOperator(const TString& storageId, + const NActors::TActorId& tabletActorId, const TIntrusivePtr<TTabletStorageInfo>& tabletInfo, + const ui64 generation, const std::shared_ptr<NDataSharing::TStorageSharedBlobsManager>& sharedBlobs) + : TBase(storageId, sharedBlobs) + , Manager(std::make_shared<TBlobManager>(tabletInfo, generation, sharedBlobs->GetSelfTabletId())) , BlobCacheActorId(NBlobCache::MakeBlobCacheServiceId()) , TabletActorId(tabletActorId) { diff --git a/ydb/core/tx/columnshard/blobs_action/bs/storage.h b/ydb/core/tx/columnshard/blobs_action/bs/storage.h index 9e39e6173f0e..230b703020b8 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/storage.h +++ b/ydb/core/tx/columnshard/blobs_action/bs/storage.h @@ -1,8 +1,8 @@ #pragma once +#include "blob_manager.h" #include <ydb/core/tx/columnshard/blobs_action/abstract/storage.h> #include <ydb/core/tx/columnshard/blobs_action/abstract/gc.h> -#include <ydb/core/tx/columnshard/blob_manager.h> #include <ydb/core/tx/columnshard/blob_cache.h> namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { @@ -10,24 +10,30 @@ namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { class TOperator: public IBlobsStorageOperator { private: using TBase = IBlobsStorageOperator; - std::shared_ptr<NColumnShard::TBlobManager> Manager; + std::shared_ptr<TBlobManager> Manager; const TActorId BlobCacheActorId; mutable ui64 PerGenerationCounter = 1; const TActorId TabletActorId; protected: - virtual std::shared_ptr<IBlobsDeclareRemovingAction> DoStartDeclareRemovingAction() override; + virtual std::shared_ptr<IBlobsDeclareRemovingAction> DoStartDeclareRemovingAction(const std::shared_ptr<NBlobOperations::TRemoveDeclareCounters>& counters) override; virtual std::shared_ptr<IBlobsWritingAction> DoStartWritingAction() override; virtual std::shared_ptr<IBlobsReadingAction> DoStartReadingAction() override; virtual std::shared_ptr<IBlobsGCAction> DoStartGCAction(const std::shared_ptr<TRemoveGCCounters>& counters) const override; - virtual bool DoLoad(NColumnShard::IBlobManagerDb& dbBlobs) override { - return Manager->LoadState(dbBlobs); + virtual bool DoLoad(IBlobManagerDb& dbBlobs) override { + return Manager->LoadState(dbBlobs, GetSelfTabletId()); } - virtual void DoOnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& /*tiers*/) override { + virtual void DoOnTieringModified(const std::shared_ptr<NColumnShard::ITiersManager>& /*tiers*/) override { return; } public: - TOperator(const TString& storageId, const NActors::TActorId& tabletActorId, const TIntrusivePtr<TTabletStorageInfo>& tabletInfo, const ui64 generation); + TOperator(const TString& storageId, const NActors::TActorId& tabletActorId, + const TIntrusivePtr<TTabletStorageInfo>& tabletInfo, const ui64 generation, const std::shared_ptr<NDataSharing::TStorageSharedBlobsManager>& sharedBlobs); + + virtual TTabletsByBlob GetBlobsToDelete() const override { + return Manager->GetBlobsToDeleteAll(); + } + virtual std::shared_ptr<IBlobInUseTracker> GetBlobsTracker() const override { return Manager; } diff --git a/ydb/core/tx/columnshard/blobs_action/bs/write.cpp b/ydb/core/tx/columnshard/blobs_action/bs/write.cpp index cc3fd41bccd4..c72805d16b6c 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/write.cpp +++ b/ydb/core/tx/columnshard/blobs_action/bs/write.cpp @@ -3,7 +3,7 @@ namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { -void TWriteAction::DoOnExecuteTxAfterWrite(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { +void TWriteAction::DoOnExecuteTxAfterWrite(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { ui64 blobsWritten = BlobBatch.GetBlobCount(); ui64 bytesWritten = BlobBatch.GetTotalSize(); if (blobsWroteSuccessfully) { diff --git a/ydb/core/tx/columnshard/blobs_action/bs/write.h b/ydb/core/tx/columnshard/blobs_action/bs/write.h index d02f9b0dd7c6..049dbf1dd3c1 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/write.h +++ b/ydb/core/tx/columnshard/blobs_action/bs/write.h @@ -1,16 +1,15 @@ #pragma once +#include "blob_manager.h" #include <ydb/core/tx/columnshard/blobs_action/abstract/write.h> -#include <ydb/core/tx/columnshard/blob_manager.h> -#include <ydb/core/tx/columnshard/blob_cache.h> namespace NKikimr::NOlap::NBlobOperations::NBlobStorage { class TWriteAction: public IBlobsWritingAction { private: using TBase = IBlobsWritingAction; - NColumnShard::TBlobBatch BlobBatch; - std::shared_ptr<NColumnShard::IBlobManager> Manager; + TBlobBatch BlobBatch; + std::shared_ptr<IBlobManager> Manager; protected: virtual void DoSendWriteBlobRequest(const TString& data, const TUnifiedBlobId& blobId) override { return BlobBatch.SendWriteBlobRequest(data, blobId, TInstant::Max(), TActorContext::AsActorContext()); @@ -20,7 +19,7 @@ class TWriteAction: public IBlobsWritingAction { return BlobBatch.OnBlobWriteResult(blobId.GetLogoBlobId(), status); } - virtual void DoOnExecuteTxBeforeWrite(NColumnShard::TColumnShard& /*self*/, NColumnShard::TBlobManagerDb& /*dbBlobs*/) override { + virtual void DoOnExecuteTxBeforeWrite(NColumnShard::TColumnShard& /*self*/, TBlobManagerDb& /*dbBlobs*/) override { return; } @@ -28,7 +27,7 @@ class TWriteAction: public IBlobsWritingAction { return; } - virtual void DoOnExecuteTxAfterWrite(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) override; + virtual void DoOnExecuteTxAfterWrite(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) override; virtual void DoOnCompleteTxAfterWrite(NColumnShard::TColumnShard& /*self*/, const bool /*blobsWroteSuccessfully*/) override { } @@ -41,7 +40,7 @@ class TWriteAction: public IBlobsWritingAction { return BlobBatch.AllocateNextBlobId(data); } - TWriteAction(const TString& storageId, const std::shared_ptr<NColumnShard::IBlobManager>& manager) + TWriteAction(const TString& storageId, const std::shared_ptr<IBlobManager>& manager) : TBase(storageId) , BlobBatch(manager->StartBlobBatch()) , Manager(manager) diff --git a/ydb/core/tx/columnshard/blobs_action/bs/ya.make b/ydb/core/tx/columnshard/blobs_action/bs/ya.make index 5974c3731cee..96b89d123e9d 100644 --- a/ydb/core/tx/columnshard/blobs_action/bs/ya.make +++ b/ydb/core/tx/columnshard/blobs_action/bs/ya.make @@ -7,6 +7,7 @@ SRCS( read.cpp storage.cpp remove.cpp + blob_manager.cpp ) PEERDIR( @@ -14,6 +15,8 @@ PEERDIR( contrib/libs/apache/arrow ydb/core/tablet_flat ydb/core/tx/tiering + ydb/core/tx/columnshard/data_sharing/protos + ydb/core/tx/columnshard/blobs_action/abstract ) END() diff --git a/ydb/core/tx/columnshard/blobs_action/common/const.cpp b/ydb/core/tx/columnshard/blobs_action/common/const.cpp new file mode 100644 index 000000000000..0c63111e4497 --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/common/const.cpp @@ -0,0 +1,5 @@ +#include "const.h" + +namespace NKikimr::NOlap::NBlobOperations { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/blobs_action/common/const.h b/ydb/core/tx/columnshard/blobs_action/common/const.h new file mode 100644 index 000000000000..8901620b2dd0 --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/common/const.h @@ -0,0 +1,12 @@ +#pragma once +#include <util/generic/string.h> + +namespace NKikimr::NOlap::NBlobOperations { + +class TGlobal { +public: + static const inline TString DefaultStorageId = "__DEFAULT"; + static const inline TString MemoryStorageId = "__MEMORY"; +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/blobs_action/common/ya.make b/ydb/core/tx/columnshard/blobs_action/common/ya.make new file mode 100644 index 000000000000..0d6ae9574b16 --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/common/ya.make @@ -0,0 +1,10 @@ +LIBRARY() + +SRCS( + const.cpp +) + +PEERDIR( +) + +END() diff --git a/ydb/core/tx/columnshard/blobs_action/counters/storage.cpp b/ydb/core/tx/columnshard/blobs_action/counters/storage.cpp index 8d8d9733e40f..9fec504f7d38 100644 --- a/ydb/core/tx/columnshard/blobs_action/counters/storage.cpp +++ b/ydb/core/tx/columnshard/blobs_action/counters/storage.cpp @@ -1,4 +1,6 @@ #include "storage.h" +#include <util/generic/serialized_enum.h> +#include <ydb/library/actors/core/log.h> namespace NKikimr::NOlap::NBlobOperations { @@ -6,10 +8,18 @@ TStorageCounters::TStorageCounters(const TString& storageId) : TBase("BlobStorages") { DeepSubGroup("StorageId", storageId); + Consumers.resize((ui32)EConsumer::COUNT); + for (auto&& i : GetEnumAllValues<EConsumer>()) { + if (i == EConsumer::COUNT) { + continue; + } + Consumers[(ui32)i] = std::make_shared<TConsumerCounters>(::ToString(i), *this); + } } -std::shared_ptr<NKikimr::NOlap::NBlobOperations::TConsumerCounters> TStorageCounters::GetConsumerCounter(const TString& consumerId) { - return std::make_shared<TConsumerCounters>(consumerId, *this); +std::shared_ptr<NKikimr::NOlap::NBlobOperations::TConsumerCounters> TStorageCounters::GetConsumerCounter(const EConsumer consumer) { + AFL_VERIFY((ui32)consumer < Consumers.size()); + return Consumers[(ui32)consumer]; } TConsumerCounters::TConsumerCounters(const TString& consumerId, const TStorageCounters& parent) diff --git a/ydb/core/tx/columnshard/blobs_action/counters/storage.h b/ydb/core/tx/columnshard/blobs_action/counters/storage.h index 902766af1545..617c952c84c5 100644 --- a/ydb/core/tx/columnshard/blobs_action/counters/storage.h +++ b/ydb/core/tx/columnshard/blobs_action/counters/storage.h @@ -11,6 +11,25 @@ namespace NKikimr::NOlap::NBlobOperations { class TStorageCounters; +enum class EConsumer { + TTL = 0, + GENERAL_COMPACTION, + INDEXATION, + CLEANUP_TABLES, + CLEANUP_PORTIONS, + CLEANUP_INSERT_TABLE, + CLEANUP_SHARED_BLOBS, + EXPORT, + SCAN, + GC, + WRITING, + WRITING_BUFFER, + WRITING_OPERATOR, + NORMALIZER, + + COUNT +}; + class TConsumerCounters: public NColumnShard::TCommonCountersOwner { private: using TBase = NColumnShard::TCommonCountersOwner; @@ -25,10 +44,11 @@ class TConsumerCounters: public NColumnShard::TCommonCountersOwner { class TStorageCounters: public NColumnShard::TCommonCountersOwner { private: using TBase = NColumnShard::TCommonCountersOwner; + std::vector<std::shared_ptr<TConsumerCounters>> Consumers; public: TStorageCounters(const TString& storageId); - std::shared_ptr<TConsumerCounters> GetConsumerCounter(const TString& consumerId); + std::shared_ptr<TConsumerCounters> GetConsumerCounter(const EConsumer consumer); }; diff --git a/ydb/core/tx/columnshard/blobs_action/counters/ya.make b/ydb/core/tx/columnshard/blobs_action/counters/ya.make index 34b9f0747546..4c1aef6d35b8 100644 --- a/ydb/core/tx/columnshard/blobs_action/counters/ya.make +++ b/ydb/core/tx/columnshard/blobs_action/counters/ya.make @@ -14,4 +14,6 @@ PEERDIR( ydb/core/tablet_flat ) +GENERATE_ENUM_SERIALIZATION(storage.h) + END() diff --git a/ydb/core/tx/columnshard/blobs_action/events/delete_blobs.cpp b/ydb/core/tx/columnshard/blobs_action/events/delete_blobs.cpp new file mode 100644 index 000000000000..19bdbec65079 --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/events/delete_blobs.cpp @@ -0,0 +1,5 @@ +#include "delete_blobs.h" + +namespace NKikimr::NOlap::NBlobOperations::NEvents { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/blobs_action/events/delete_blobs.h b/ydb/core/tx/columnshard/blobs_action/events/delete_blobs.h new file mode 100644 index 000000000000..50e37bf7fe0f --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/events/delete_blobs.h @@ -0,0 +1,32 @@ +#pragma once +#include <ydb/library/actors/core/event_pb.h> +#include <ydb/core/tx/columnshard/blobs_action/protos/events.pb.h> +#include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/columnshard.h> +#include <ydb/core/tx/columnshard/common/tablet_id.h> + +namespace NKikimr::NOlap::NBlobOperations::NEvents { + +struct TEvDeleteSharedBlobs: public NActors::TEventPB<TEvDeleteSharedBlobs, NKikimrColumnShardBlobOperationsProto::TEvDeleteSharedBlobs, TEvColumnShard::EvDeleteSharedBlobs> { + TEvDeleteSharedBlobs() = default; + + TEvDeleteSharedBlobs(const NActors::TActorId sourceActorId, const ui64 sourceTabletId, const TString& storageId, const THashSet<NOlap::TUnifiedBlobId>& blobIds) { + Record.SetStorageId(storageId); + Record.SetSourceTabletId(sourceTabletId); + NActors::ActorIdToProto(sourceActorId, Record.MutableSourceActorId()); + for (auto&& i : blobIds) { + *Record.AddBlobIds() = i.ToStringNew(); + } + } +}; + +struct TEvDeleteSharedBlobsFinished: public NActors::TEventPB<TEvDeleteSharedBlobsFinished, + NKikimrColumnShardBlobOperationsProto::TEvDeleteSharedBlobsFinished, TEvColumnShard::EvDeleteSharedBlobsFinished> { + TEvDeleteSharedBlobsFinished() = default; + TEvDeleteSharedBlobsFinished(const TTabletId tabletId) + { + Record.SetTabletId((ui64)tabletId); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/blobs_action/events/ya.make b/ydb/core/tx/columnshard/blobs_action/events/ya.make new file mode 100644 index 000000000000..e46f5f0120be --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/events/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +SRCS( + delete_blobs.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/blobs_action/protos + ydb/library/actors/core + ydb/core/tx/datashard +) + +END() diff --git a/ydb/core/tx/columnshard/blobs_action/memory.h b/ydb/core/tx/columnshard/blobs_action/memory.h deleted file mode 100644 index 2eee28698811..000000000000 --- a/ydb/core/tx/columnshard/blobs_action/memory.h +++ /dev/null @@ -1,173 +0,0 @@ -#pragma once - -#include <ydb/core/tx/columnshard/blobs_action/abstract/storage.h> -#include <ydb/core/tx/columnshard/blob_manager.h> -#include <ydb/core/tx/columnshard/blob_cache.h> - -namespace NKikimr::NOlap { - -class TMemoryStorage { -private: - THashMap<TUnifiedBlobId, TString> Data; - THashMap<TUnifiedBlobId, TString> DataWriting; - THashSet<TUnifiedBlobId> DataForRemove; - TMutex Mutex; -public: - std::optional<TString> Read(const TUnifiedBlobId& id) { - TGuard<TMutex> g(Mutex); - auto it = Data.find(id); - if (it == Data.end()) { - return {}; - } else { - return it->second; - } - } - - void DeclareDataForRemove(const TUnifiedBlobId& id) { - TGuard<TMutex> g(Mutex); - DataForRemove.emplace(id); - } - - void StartWriting(const TUnifiedBlobId& id, const TString& data) { - TGuard<TMutex> g(Mutex); - Y_ABORT_UNLESS(DataWriting.emplace(id, data).second); - } - - void CommitWriting(const TUnifiedBlobId& id) { - TGuard<TMutex> g(Mutex); - auto it = DataWriting.find(id); - Y_ABORT_UNLESS(it != DataWriting.end()); - Y_ABORT_UNLESS(Data.emplace(id, it->second).second); - DataWriting.erase(it); - } - - TMemoryStorage() = default; -}; - -class TMemoryWriteAction: public IBlobsWritingAction { -private: - using TBase = IBlobsWritingAction; - const std::shared_ptr<TMemoryStorage> Storage; -protected: - virtual void DoSendWriteBlobRequest(const TString& data, const TUnifiedBlobId& blobId) override { - Storage->StartWriting(blobId, data); - TActorContext::AsActorContext().Send(TActorContext::AsActorContext().SelfID, std::make_unique<TEvBlobStorage::TEvPutResult>( - NKikimrProto::EReplyStatus::OK, blobId.GetLogoBlobId(), TStorageStatusFlags(), 0, 0)); - } - - virtual void DoOnBlobWriteResult(const TUnifiedBlobId& blobId, const NKikimrProto::EReplyStatus status) override { - Y_ABORT_UNLESS(status == NKikimrProto::EReplyStatus::OK); - Storage->CommitWriting(blobId); - } - - virtual void DoOnExecuteTxBeforeWrite(NColumnShard::TColumnShard& /*self*/, NColumnShard::TBlobManagerDb& /*dbBlobs*/) override { - return; - } - - virtual void DoOnCompleteTxBeforeWrite(NColumnShard::TColumnShard& /*self*/) override { - return; - } - - virtual void DoOnExecuteTxAfterWrite(NColumnShard::TColumnShard& /*self*/, NColumnShard::TBlobManagerDb& /*dbBlobs*/, const bool /*blobsWroteSuccessfully*/) override { - - } - virtual void DoOnCompleteTxAfterWrite(NColumnShard::TColumnShard& /*self*/, const bool /*blobsWroteSuccessfully*/) override { - - } -public: - virtual bool NeedDraftTransaction() const override { - return true; - } - - virtual TUnifiedBlobId AllocateNextBlobId(const TString& /*data*/) override { - return TUnifiedBlobId(); -// return BlobBatch.AllocateNextBlobId(data); - } - - TMemoryWriteAction(const TString& storageId, const std::shared_ptr<TMemoryStorage>& storage) - : TBase(storageId) - , Storage(storage) - { - - } -}; - -class TMemoryDeclareRemovingAction: public IBlobsDeclareRemovingAction { -private: - using TBase = IBlobsDeclareRemovingAction; - const std::shared_ptr<TMemoryStorage> Storage; -protected: - virtual void DoDeclareRemove(const TUnifiedBlobId& /*blobId*/) { - - } - - virtual void DoOnExecuteTxAfterRemoving(NColumnShard::TColumnShard& /*self*/, NColumnShard::TBlobManagerDb& /*dbBlobs*/, const bool /*blobsWroteSuccessfully*/) { - for (auto&& i : GetDeclaredBlobs()) { - Storage->DeclareDataForRemove(i); - } - } - virtual void DoOnCompleteTxAfterRemoving(NColumnShard::TColumnShard& /*self*/, const bool /*blobsWroteSuccessfully*/) { - - } -public: - - TMemoryDeclareRemovingAction(const TString& storageId, const std::shared_ptr<TMemoryStorage>& storage) - : TBase(storageId) - , Storage(storage) { - - } -}; - -class TMemoryReadingAction: public IBlobsReadingAction { -private: - using TBase = IBlobsReadingAction; - const std::shared_ptr<TMemoryStorage> Storage; -protected: - virtual void DoStartReading(const THashMap<TUnifiedBlobId, THashSet<TBlobRange>>& ranges) override { - for (auto&& i : ranges) { - auto data = Storage->Read(i.first); - for (auto&& r : i.second) { - if (!data) { - TActorContext::AsActorContext().Send(TActorContext::AsActorContext().SelfID, - new NBlobCache::TEvBlobCache::TEvReadBlobRangeResult(r, NKikimrProto::EReplyStatus::NODATA, "")); - } else { - Y_ABORT_UNLESS(r.Offset + r.Size <= data->size()); - TActorContext::AsActorContext().Send(TActorContext::AsActorContext().SelfID, - new NBlobCache::TEvBlobCache::TEvReadBlobRangeResult(r, NKikimrProto::EReplyStatus::OK, data->substr(r.Offset, r.Size))); - } - } - } - } -public: - - TMemoryReadingAction(const TString& storageId, const std::shared_ptr<TMemoryStorage>& storage) - : TBase(storageId) - , Storage(storage) - { - - } -}; - -class TMemoryOperator: public IBlobsStorageOperator { -private: - using TBase = IBlobsStorageOperator; - std::shared_ptr<TMemoryStorage> Storage; -protected: - virtual std::shared_ptr<IBlobsDeclareRemovingAction> DoStartDeclareRemovingAction() override { - return std::make_shared<TMemoryDeclareRemovingAction>(GetStorageId(), Storage); - } - virtual std::shared_ptr<IBlobsWritingAction> DoStartWritingAction() override { - return std::make_shared<TMemoryWriteAction>(GetStorageId(), Storage); - } - virtual std::shared_ptr<IBlobsReadingAction> DoStartReadingAction() override { - return std::make_shared<TMemoryReadingAction>(GetStorageId(), Storage); - } -public: - TMemoryOperator(const TString& storageId) - : TBase(storageId) - { - Storage = std::make_shared<TMemoryStorage>(); - } -}; - -} diff --git a/ydb/core/tx/columnshard/blobs_action/protos/blobs.proto b/ydb/core/tx/columnshard/blobs_action/protos/blobs.proto new file mode 100644 index 000000000000..7c866b54c7d1 --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/protos/blobs.proto @@ -0,0 +1,19 @@ +package NKikimrColumnShardBlobOperationsProto; + +message TBlobTablets { + optional string BlobId = 1; + repeated uint64 TabletIds = 2; +} + +message TTabletsByBlob { + repeated TBlobTablets Blobs = 1; +} + +message TBlobTablet { + optional string BlobId = 1; + optional uint64 TabletId = 2; +} + +message TTabletByBlob { + repeated TBlobTablet Blobs = 1; +} diff --git a/ydb/core/tx/columnshard/blobs_action/protos/events.proto b/ydb/core/tx/columnshard/blobs_action/protos/events.proto new file mode 100644 index 000000000000..34ae1fc57e8b --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/protos/events.proto @@ -0,0 +1,14 @@ +import "ydb/library/actors/protos/actors.proto"; + +package NKikimrColumnShardBlobOperationsProto; + +message TEvDeleteSharedBlobs { + optional uint64 SourceTabletId = 1; + optional NActorsProto.TActorId SourceActorId = 2; + optional string StorageId = 3; + repeated string BlobIds = 4; +} + +message TEvDeleteSharedBlobsFinished { + optional uint64 TabletId = 1; +} diff --git a/ydb/core/tx/columnshard/blobs_action/protos/ya.make b/ydb/core/tx/columnshard/blobs_action/protos/ya.make new file mode 100644 index 000000000000..705fd373a847 --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/protos/ya.make @@ -0,0 +1,12 @@ +PROTO_LIBRARY() + +SRCS( + events.proto + blobs.proto +) + +PEERDIR( + ydb/library/actors/protos +) + +END() diff --git a/ydb/core/tx/columnshard/blobs_action/storages_manager/manager.cpp b/ydb/core/tx/columnshard/blobs_action/storages_manager/manager.cpp new file mode 100644 index 000000000000..4d162527e8e6 --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/storages_manager/manager.cpp @@ -0,0 +1,50 @@ +#include "manager.h" +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/blobs_action/bs/storage.h> +#ifndef KIKIMR_DISABLE_S3_OPS +#include <ydb/core/tx/columnshard/blobs_action/tier/storage.h> +#endif +#include <ydb/core/wrappers/fake_storage_config.h> +#include <ydb/core/wrappers/fake_storage.h> + +namespace NKikimr::NOlap { + +std::shared_ptr<NKikimr::NOlap::IBlobsStorageOperator> TStoragesManager::DoBuildOperator(const TString& storageId) { + if (storageId == TBase::DefaultStorageId) { + return std::make_shared<NOlap::NBlobOperations::NBlobStorage::TOperator>(storageId, Shard.SelfId(), Shard.Info(), + Shard.Executor()->Generation(), SharedBlobsManager->GetStorageManagerGuarantee(storageId)); + } else if (storageId == TBase::MemoryStorageId) { +#ifndef KIKIMR_DISABLE_S3_OPS + { + static TMutex mutexLocal; + TGuard<TMutex> g(mutexLocal); + Singleton<NWrappers::NExternalStorage::TFakeExternalStorage>()->SetSecretKey("fakeSecret"); + } + return std::make_shared<NOlap::NBlobOperations::NTier::TOperator>(storageId, Shard.SelfId(), std::make_shared<NWrappers::NExternalStorage::TFakeExternalStorageConfig>("fakeBucket", "fakeSecret"), + SharedBlobsManager->GetStorageManagerGuarantee(storageId)); +#else + return nullptr; +#endif + } else if (!Shard.Tiers) { + return nullptr; + } else { +#ifndef KIKIMR_DISABLE_S3_OPS + return std::make_shared<NOlap::NBlobOperations::NTier::TOperator>(storageId, Shard, SharedBlobsManager->GetStorageManagerGuarantee(storageId)); +#else + return nullptr; +#endif + } +} + +bool TStoragesManager::DoLoadIdempotency(NTable::TDatabase& database) { + return SharedBlobsManager->LoadIdempotency(database); +} + +TStoragesManager::TStoragesManager(NColumnShard::TColumnShard& shard) + : Shard(shard) + , SharedBlobsManager(std::make_shared<NDataSharing::TSharedBlobsManager>((TTabletId)Shard.TabletID())) +{ + +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/blobs_action/storages_manager/manager.h b/ydb/core/tx/columnshard/blobs_action/storages_manager/manager.h new file mode 100644 index 000000000000..00828c89a713 --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/storages_manager/manager.h @@ -0,0 +1,31 @@ +#pragma once +#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> +#include <ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h> +#include <ydb/core/tx/columnshard/common/tablet_id.h> + +namespace NKikimr::NColumnShard { +class TColumnShard; +} + +namespace NKikimr::NOlap { + +class TStoragesManager: public IStoragesManager { +private: + using TBase = IStoragesManager; + NColumnShard::TColumnShard& Shard; + std::shared_ptr<NDataSharing::TSharedBlobsManager> SharedBlobsManager; +protected: + virtual std::shared_ptr<NOlap::IBlobsStorageOperator> DoBuildOperator(const TString& storageId) override; + virtual bool DoLoadIdempotency(NTable::TDatabase& database) override; + + virtual const std::shared_ptr<NDataSharing::TSharedBlobsManager>& DoGetSharedBlobsManager() const override { + AFL_VERIFY(SharedBlobsManager); + return SharedBlobsManager; + } + +public: + TStoragesManager(NColumnShard::TColumnShard& shard); +}; + + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/blobs_action/storages_manager/ya.make b/ydb/core/tx/columnshard/blobs_action/storages_manager/ya.make new file mode 100644 index 000000000000..b79b6720608b --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/storages_manager/ya.make @@ -0,0 +1,22 @@ +LIBRARY() + +SRCS( + manager.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/manager + ydb/core/tx/columnshard/blobs_action/bs +) + +IF (OS_WINDOWS) + CFLAGS( + -DKIKIMR_DISABLE_S3_OPS + ) +ELSE() + PEERDIR( + ydb/core/tx/columnshard/blobs_action/tier + ) +ENDIF() + +END() diff --git a/ydb/core/tx/columnshard/blobs_action/tier/adapter.cpp b/ydb/core/tx/columnshard/blobs_action/tier/adapter.cpp index 6cda6d152ec2..9d94dafe939d 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/adapter.cpp +++ b/ydb/core/tx/columnshard/blobs_action/tier/adapter.cpp @@ -16,9 +16,9 @@ std::unique_ptr<NActors::IEventBase> TRepliesAdapter::RebuildReplyEvent(std::uni } if (ev->IsSuccess()) { AFL_VERIFY(!!ev->Body)("key", ev->Key)("interval_from", ev->GetReadInterval().first)("interval_to", ev->GetReadInterval().second); - return std::make_unique<NBlobCache::TEvBlobCache::TEvReadBlobRangeResult>(bRange, NKikimrProto::EReplyStatus::OK, ev->Body); + return std::make_unique<NBlobCache::TEvBlobCache::TEvReadBlobRangeResult>(bRange, NKikimrProto::EReplyStatus::OK, ev->Body, false, StorageId); } else { - return std::make_unique<NBlobCache::TEvBlobCache::TEvReadBlobRangeResult>(bRange, NKikimrProto::EReplyStatus::ERROR, ""); + return std::make_unique<NBlobCache::TEvBlobCache::TEvReadBlobRangeResult>(bRange, NKikimrProto::EReplyStatus::ERROR, TStringBuilder() << ev->Result, false, StorageId); } } @@ -28,9 +28,9 @@ std::unique_ptr<NActors::IEventBase> TRepliesAdapter::RebuildReplyEvent(std::uni Y_ABORT_UNLESS(ev->Key); AFL_VERIFY(TLogoBlobID::Parse(logoBlobId, *ev->Key, error))("error", error)("str_blob_id", *ev->Key); if (ev->IsSuccess()) { - return std::make_unique<TEvBlobStorage::TEvPutResult>(NKikimrProto::EReplyStatus::OK, logoBlobId, 0, Max<ui32>(), 0); + return std::make_unique<TEvBlobStorage::TEvPutResult>(NKikimrProto::EReplyStatus::OK, logoBlobId, 0, Max<ui32>(), 0, StorageId); } else { - return std::make_unique<TEvBlobStorage::TEvPutResult>(NKikimrProto::EReplyStatus::ERROR, logoBlobId, 0, Max<ui32>(), 0); + return std::make_unique<TEvBlobStorage::TEvPutResult>(NKikimrProto::EReplyStatus::ERROR, logoBlobId, 0, Max<ui32>(), 0, StorageId); } } diff --git a/ydb/core/tx/columnshard/blobs_action/tier/adapter.h b/ydb/core/tx/columnshard/blobs_action/tier/adapter.h index 1c3e6af2e88e..4e146e019137 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/adapter.h +++ b/ydb/core/tx/columnshard/blobs_action/tier/adapter.h @@ -4,7 +4,15 @@ namespace NKikimr::NOlap::NBlobOperations::NTier { class TRepliesAdapter: public NWrappers::NExternalStorage::IReplyAdapter { +private: + const TString StorageId; public: + TRepliesAdapter(const TString& storageId) + : StorageId(storageId) + { + + } + virtual std::unique_ptr<IEventBase> RebuildReplyEvent(std::unique_ptr<NWrappers::NExternalStorage::TEvGetObjectResponse>&& ev) const override; virtual std::unique_ptr<IEventBase> RebuildReplyEvent(std::unique_ptr<NWrappers::NExternalStorage::TEvPutObjectResponse>&& ev) const override; virtual std::unique_ptr<IEventBase> RebuildReplyEvent(std::unique_ptr<NWrappers::NExternalStorage::TEvListObjectsResponse>&& ev) const override { diff --git a/ydb/core/tx/columnshard/blobs_action/tier/gc.cpp b/ydb/core/tx/columnshard/blobs_action/tier/gc.cpp index b44019f880ae..0d9c65f8ec82 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/gc.cpp +++ b/ydb/core/tx/columnshard/blobs_action/tier/gc.cpp @@ -5,33 +5,18 @@ namespace NKikimr::NOlap::NBlobOperations::NTier { -void TGCTask::DoOnExecuteTxAfterCleaning(NColumnShard::TColumnShard& /*self*/, NColumnShard::TBlobManagerDb& dbBlobs) { - size_t numBlobs = 0; - - for (; DraftBlobIds.size() && numBlobs < NColumnShard::TLimits::MAX_BLOBS_TO_DELETE; ++numBlobs) { - dbBlobs.RemoveTierDraftBlobId(GetStorageId(), DraftBlobIds.front()); - DraftBlobIds.pop_front(); - } +void TGCTask::RemoveBlobIdFromDB(const TTabletId tabletId, const TUnifiedBlobId& blobId, TBlobManagerDb& dbBlobs) { + dbBlobs.RemoveTierBlobToDelete(GetStorageId(), blobId, tabletId); +} - for (; DeleteBlobIds.size() && numBlobs < NColumnShard::TLimits::MAX_BLOBS_TO_DELETE; ++numBlobs) { - dbBlobs.RemoveTierBlobToDelete(GetStorageId(), DeleteBlobIds.front()); - DeleteBlobIds.pop_front(); +void TGCTask::DoOnExecuteTxAfterCleaning(NColumnShard::TColumnShard& /*self*/, TBlobManagerDb& dbBlobs) { + for (auto&& i : DraftBlobIds) { + dbBlobs.RemoveTierDraftBlobId(GetStorageId(), i); } } -bool TGCTask::DoOnCompleteTxAfterCleaning(NColumnShard::TColumnShard& self, const std::shared_ptr<IBlobsGCAction>& taskAction) { - if (DraftBlobIds.size() || DeleteBlobIds.size()) { - TActorContext::AsActorContext().Send(self.SelfId(), std::make_unique<NColumnShard::TEvPrivate::TEvGarbageCollectionFinished>(taskAction)); - return false; - } else { - for (auto&& i : DraftBlobIds) { - Counters->OnReply(i.BlobSize()); - } - for (auto&& i : DeleteBlobIds) { - Counters->OnReply(i.BlobSize()); - } - return true; - } +bool TGCTask::DoOnCompleteTxAfterCleaning(NColumnShard::TColumnShard& /*self*/, const std::shared_ptr<IBlobsGCAction>& /*taskAction*/) { + return true; } } diff --git a/ydb/core/tx/columnshard/blobs_action/tier/gc.h b/ydb/core/tx/columnshard/blobs_action/tier/gc.h index cdae1449f2de..bb97d0350200 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/gc.h +++ b/ydb/core/tx/columnshard/blobs_action/tier/gc.h @@ -12,27 +12,24 @@ class TGCTask: public IBlobsGCAction { using TBase = IBlobsGCAction; private: YDB_READONLY_DEF(std::deque<TUnifiedBlobId>, DraftBlobIds); - YDB_READONLY_DEF(std::deque<TUnifiedBlobId>, DeleteBlobIds); YDB_READONLY_DEF(NWrappers::NExternalStorage::IExternalStorageOperator::TPtr, ExternalStorageOperator); - const std::shared_ptr<TRemoveGCCounters> Counters; protected: - virtual void DoOnExecuteTxAfterCleaning(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs) override; + virtual void DoOnExecuteTxAfterCleaning(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs) override; virtual bool DoOnCompleteTxAfterCleaning(NColumnShard::TColumnShard& self, const std::shared_ptr<IBlobsGCAction>& taskAction) override; + virtual void RemoveBlobIdFromDB(const TTabletId tabletId, const TUnifiedBlobId& blobId, TBlobManagerDb& dbBlobs) override; + virtual bool DoIsEmpty() const override { + return DraftBlobIds.empty(); + } public: - TGCTask(const TString& storageId, std::deque<TUnifiedBlobId>&& draftBlobIds, std::deque<TUnifiedBlobId>&& deleteBlobIds, - const NWrappers::NExternalStorage::IExternalStorageOperator::TPtr& externalStorageOperator, const std::shared_ptr<TRemoveGCCounters>& counters) - : TBase(storageId) + TGCTask(const TString& storageId, std::deque<TUnifiedBlobId>&& draftBlobIds, const NWrappers::NExternalStorage::IExternalStorageOperator::TPtr& externalStorageOperator, + TBlobsCategories&& blobsToRemove, const std::shared_ptr<TRemoveGCCounters>& counters) + : TBase(storageId, std::move(blobsToRemove), counters) , DraftBlobIds(std::move(draftBlobIds)) - , DeleteBlobIds(std::move(deleteBlobIds)) , ExternalStorageOperator(externalStorageOperator) - , Counters(counters) { for (auto&& i : DraftBlobIds) { Counters->OnRequest(i.BlobSize()); } - for (auto&& i : DeleteBlobIds) { - Counters->OnRequest(i.BlobSize()); - } } }; diff --git a/ydb/core/tx/columnshard/blobs_action/tier/gc_actor.cpp b/ydb/core/tx/columnshard/blobs_action/tier/gc_actor.cpp index 0fce2762142f..2c91679895fd 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/gc_actor.cpp +++ b/ydb/core/tx/columnshard/blobs_action/tier/gc_actor.cpp @@ -9,19 +9,15 @@ void TGarbageCollectionActor::Handle(NWrappers::NExternalStorage::TEvDeleteObjec Y_ABORT_UNLESS(ev->Get()->Key); AFL_VERIFY(TLogoBlobID::Parse(logoBlobId, *ev->Get()->Key, errorMessage))("error", errorMessage); BlobIdsToRemove.erase(logoBlobId); - if (BlobIdsToRemove.empty()) { - auto g = PassAwayGuard(); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("actor", "TGarbageCollectionActor")("event", "finished"); - TActorContext::AsActorContext().Send(TabletActorId, std::make_unique<NColumnShard::TEvPrivate::TEvGarbageCollectionFinished>(GCTask)); - } + CheckFinished(); } -void TGarbageCollectionActor::Bootstrap(const TActorContext& /*ctx*/) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("actor", "TGarbageCollectionActor")("event", "starting"); - for (auto&& i : GCTask->GetDraftBlobIds()) { - BlobIdsToRemove.emplace(i.GetLogoBlobId()); +void TGarbageCollectionActor::Bootstrap(const TActorContext& ctx) { + for (auto i = GCTask->GetBlobsToRemove().GetDirect().GetIterator(); i.IsValid(); ++i) { + BlobIdsToRemove.emplace(i.GetBlobId().GetLogoBlobId()); } - for (auto&& i : GCTask->GetDeleteBlobIds()) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("actor", "TGarbageCollectionActor")("event", "starting")("storage_id", GCTask->GetStorageId())("drafts", GCTask->GetDraftBlobIds().size())("to_delete", BlobIdsToRemove.size()); + for (auto&& i : GCTask->GetDraftBlobIds()) { BlobIdsToRemove.emplace(i.GetLogoBlobId()); } for (auto&& i : BlobIdsToRemove) { @@ -31,7 +27,16 @@ void TGarbageCollectionActor::Bootstrap(const TActorContext& /*ctx*/) { TAutoPtr<TEventHandle<NWrappers::NExternalStorage::TEvDeleteObjectRequest>> evPtr((TEventHandle<NWrappers::NExternalStorage::TEvDeleteObjectRequest>*)hRequest.release()); GCTask->GetExternalStorageOperator()->Execute(evPtr); } + TBase::Bootstrap(ctx); Become(&TGarbageCollectionActor::StateWork); } +void TGarbageCollectionActor::CheckFinished() { + if (SharedRemovingFinished && BlobIdsToRemove.empty()) { + auto g = PassAwayGuard(); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("actor", "TGarbageCollectionActor")("event", "finished"); + TActorContext::AsActorContext().Send(TabletActorId, std::make_unique<NColumnShard::TEvPrivate::TEvGarbageCollectionFinished>(GCTask)); + } +} + } diff --git a/ydb/core/tx/columnshard/blobs_action/tier/gc_actor.h b/ydb/core/tx/columnshard/blobs_action/tier/gc_actor.h index 448c07899652..78ee58e9152d 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/gc_actor.h +++ b/ydb/core/tx/columnshard/blobs_action/tier/gc_actor.h @@ -1,22 +1,30 @@ #pragma once #include "gc.h" -#include <ydb/core/tx/columnshard/blob_manager.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/gc_actor.h> #include <ydb/core/tx/columnshard/blob_cache.h> +#include <ydb/core/tx/columnshard/columnshard_private_events.h> #include <ydb/core/base/blobstorage.h> namespace NKikimr::NOlap::NBlobOperations::NTier { -class TGarbageCollectionActor: public TActorBootstrapped<TGarbageCollectionActor> { +class TGarbageCollectionActor: public TSharedBlobsCollectionActor<TGarbageCollectionActor> { private: + using TBase = TSharedBlobsCollectionActor<TGarbageCollectionActor>; const NActors::TActorId TabletActorId; std::shared_ptr<TGCTask> GCTask; THashSet<TLogoBlobID> BlobIdsToRemove; void Handle(NWrappers::NExternalStorage::TEvDeleteObjectResponse::TPtr& ev); + void CheckFinished(); + + virtual void DoOnSharedRemovingFinished() override { + CheckFinished(); + } public: - TGarbageCollectionActor(const std::shared_ptr<TGCTask>& task, const NActors::TActorId& tabletActorId) - : TabletActorId(tabletActorId) + TGarbageCollectionActor(const std::shared_ptr<TGCTask>& task, const NActors::TActorId& tabletActorId, const TTabletId selfTabletId) + : TBase(task->GetStorageId(), selfTabletId, task->GetBlobsToRemove().GetBorrowed()) + , TabletActorId(tabletActorId) , GCTask(task) { @@ -25,6 +33,8 @@ class TGarbageCollectionActor: public TActorBootstrapped<TGarbageCollectionActor STFUNC(StateWork) { switch (ev->GetTypeRewrite()) { hFunc(NWrappers::NExternalStorage::TEvDeleteObjectResponse, Handle); + default: + TBase::StateWork(ev); } } diff --git a/ydb/core/tx/columnshard/blobs_action/tier/gc_info.h b/ydb/core/tx/columnshard/blobs_action/tier/gc_info.h index 8814ccabe2a7..2aad8beb5c03 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/gc_info.h +++ b/ydb/core/tx/columnshard/blobs_action/tier/gc_info.h @@ -7,28 +7,30 @@ namespace NKikimr::NOlap::NBlobOperations::NTier { class TGCInfo: public TCommonBlobsTracker { private: - YDB_ACCESSOR_DEF(std::deque<TUnifiedBlobId>, BlobsToDelete); + YDB_ACCESSOR_DEF(TTabletsByBlob, BlobsToDelete); YDB_ACCESSOR_DEF(std::deque<TUnifiedBlobId>, DraftBlobIdsToRemove); - YDB_ACCESSOR_DEF(THashSet<TUnifiedBlobId>, BlobsToDeleteInFuture); + YDB_ACCESSOR_DEF(TTabletsByBlob, BlobsToDeleteInFuture); public: virtual void OnBlobFree(const TUnifiedBlobId& blobId) override { - if (BlobsToDeleteInFuture.erase(blobId)) { - BlobsToDelete.emplace_back(blobId); - } + BlobsToDeleteInFuture.ExtractBlobTo(blobId, BlobsToDelete); } - bool ExtractForGC(std::deque<TUnifiedBlobId>& deleteDraftBlobIds, std::deque<TUnifiedBlobId>& deleteBlobIds, const ui32 blobsCountLimit) { - if (DraftBlobIdsToRemove.empty() && BlobsToDelete.empty()) { + bool ExtractForGC(std::deque<TUnifiedBlobId>& deleteDraftBlobIds, TTabletsByBlob& deleteBlobIds, const ui32 blobsCountLimit) { + if (DraftBlobIdsToRemove.empty() && BlobsToDelete.IsEmpty()) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "extract_for_gc_skip")("reason", "no_data"); return false; } - while (DraftBlobIdsToRemove.size() && deleteBlobIds.size() + deleteDraftBlobIds.size() < blobsCountLimit) { + ui32 count = 0; + TTabletsByBlob deleteBlobIdsLocal; + while (DraftBlobIdsToRemove.size() && count < blobsCountLimit) { deleteDraftBlobIds.emplace_back(DraftBlobIdsToRemove.front()); DraftBlobIdsToRemove.pop_front(); + ++count; } - while (BlobsToDelete.size() && deleteBlobIds.size() + deleteDraftBlobIds.size() < blobsCountLimit) { - deleteBlobIds.emplace_back(BlobsToDelete.front()); - BlobsToDelete.pop_front(); + while (BlobsToDelete.ExtractFrontTo(deleteBlobIdsLocal) && count < blobsCountLimit) { + ++count; } + std::swap(deleteBlobIdsLocal, deleteBlobIds); return true; } }; diff --git a/ydb/core/tx/columnshard/blobs_action/tier/read.cpp b/ydb/core/tx/columnshard/blobs_action/tier/read.cpp index 754dd289d730..7af0c28583af 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/read.cpp +++ b/ydb/core/tx/columnshard/blobs_action/tier/read.cpp @@ -2,17 +2,15 @@ namespace NKikimr::NOlap::NBlobOperations::NTier { -void TReadingAction::DoStartReading(const THashMap<TUnifiedBlobId, THashSet<TBlobRange>>& ranges) { - for (auto&& i : ranges) { - for (auto&& r : i.second) { - auto awsRequest = Aws::S3::Model::GetObjectRequest() - .WithKey(i.first.GetLogoBlobId().ToString()) - .WithRange(TStringBuilder() << "bytes=" << r.Offset << "-" << r.Offset + r.Size - 1); - auto request = std::make_unique<NWrappers::NExternalStorage::TEvGetObjectRequest>(awsRequest); - auto hRequest = std::make_unique<IEventHandle>(NActors::TActorId(), TActorContext::AsActorContext().SelfID, request.release()); - TAutoPtr<TEventHandle<NWrappers::NExternalStorage::TEvGetObjectRequest>> evPtr((TEventHandle<NWrappers::NExternalStorage::TEvGetObjectRequest>*)hRequest.release()); - ExternalStorageOperator->Execute(evPtr); - } +void TReadingAction::DoStartReading(THashSet<TBlobRange>&& ranges) { + for (auto&& r : ranges) { + auto awsRequest = Aws::S3::Model::GetObjectRequest() + .WithKey(r.BlobId.GetLogoBlobId().ToString()) + .WithRange(TStringBuilder() << "bytes=" << r.Offset << "-" << r.Offset + r.Size - 1); + auto request = std::make_unique<NWrappers::NExternalStorage::TEvGetObjectRequest>(awsRequest); + auto hRequest = std::make_unique<IEventHandle>(NActors::TActorId(), TActorContext::AsActorContext().SelfID, request.release()); + TAutoPtr<TEventHandle<NWrappers::NExternalStorage::TEvGetObjectRequest>> evPtr((TEventHandle<NWrappers::NExternalStorage::TEvGetObjectRequest>*)hRequest.release()); + ExternalStorageOperator->Execute(evPtr); } } diff --git a/ydb/core/tx/columnshard/blobs_action/tier/read.h b/ydb/core/tx/columnshard/blobs_action/tier/read.h index b9804d18b662..e4742cc285ee 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/read.h +++ b/ydb/core/tx/columnshard/blobs_action/tier/read.h @@ -10,7 +10,10 @@ class TReadingAction: public IBlobsReadingAction { using TBase = IBlobsReadingAction; const NWrappers::NExternalStorage::IExternalStorageOperator::TPtr ExternalStorageOperator; protected: - virtual void DoStartReading(const THashMap<TUnifiedBlobId, THashSet<TBlobRange>>& ranges) override; + virtual void DoStartReading(THashSet<TBlobRange>&& ranges) override; + virtual THashMap<TBlobRange, std::vector<TBlobRange>> GroupBlobsForOptimization(std::vector<TBlobRange>&& ranges) const override { + return TBlobsGlueing::GroupRanges(std::move(ranges), TBlobsGlueing::TBlobGluePolicy(8LLU << 20)); + } public: TReadingAction(const TString& storageId, const NWrappers::NExternalStorage::IExternalStorageOperator::TPtr& storageOperator) diff --git a/ydb/core/tx/columnshard/blobs_action/tier/remove.h b/ydb/core/tx/columnshard/blobs_action/tier/remove.h index 75924c6d5eba..9dbd6fb0be9f 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/remove.h +++ b/ydb/core/tx/columnshard/blobs_action/tier/remove.h @@ -1,7 +1,6 @@ #pragma once #include <ydb/core/tx/columnshard/blobs_action/abstract/remove.h> -#include <ydb/core/tx/columnshard/blob_manager.h> #include <ydb/core/tx/columnshard/blob_cache.h> #include "gc_info.h" @@ -12,31 +11,31 @@ class TDeclareRemovingAction: public IBlobsDeclareRemovingAction { using TBase = IBlobsDeclareRemovingAction; std::shared_ptr<TGCInfo> GCInfo; protected: - virtual void DoDeclareRemove(const TUnifiedBlobId& /*blobId*/) { + virtual void DoDeclareRemove(const TTabletId /*tabletId*/, const TUnifiedBlobId& /*blobId*/) { } - virtual void DoOnExecuteTxAfterRemoving(NColumnShard::TColumnShard& /*self*/, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { + virtual void DoOnExecuteTxAfterRemoving(TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { if (blobsWroteSuccessfully) { - for (auto&& i : GetDeclaredBlobs()) { - dbBlobs.AddTierBlobToDelete(GetStorageId(), i); + for (auto i = GetDeclaredBlobs().GetIterator(); i.IsValid(); ++i) { + dbBlobs.AddTierBlobToDelete(GetStorageId(), i.GetBlobId(), i.GetTabletId()); } } } - virtual void DoOnCompleteTxAfterRemoving(NColumnShard::TColumnShard& /*self*/, const bool blobsWroteSuccessfully) { + virtual void DoOnCompleteTxAfterRemoving(const bool blobsWroteSuccessfully) { if (blobsWroteSuccessfully) { for (auto&& i : GetDeclaredBlobs()) { - if (GCInfo->IsBlobInUsage(i)) { - Y_ABORT_UNLESS(GCInfo->MutableBlobsToDeleteInFuture().emplace(i).second); + if (GCInfo->IsBlobInUsage(i.first)) { + AFL_VERIFY(GCInfo->MutableBlobsToDeleteInFuture().Add(i.first, i.second)); } else { - GCInfo->MutableBlobsToDelete().emplace_back(i); + AFL_VERIFY(GCInfo->MutableBlobsToDelete().Add(i.first, i.second)); } } } } public: - TDeclareRemovingAction(const TString& storageId, const std::shared_ptr<TGCInfo>& gcInfo) - : TBase(storageId) + TDeclareRemovingAction(const TString& storageId, const TTabletId selfTabletId, const std::shared_ptr<NBlobOperations::TRemoveDeclareCounters>& counters, const std::shared_ptr<TGCInfo>& gcInfo) + : TBase(storageId, selfTabletId, counters) , GCInfo(gcInfo) { diff --git a/ydb/core/tx/columnshard/blobs_action/tier/storage.cpp b/ydb/core/tx/columnshard/blobs_action/tier/storage.cpp index 5c0db48f42a2..36d273111eff 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/storage.cpp +++ b/ydb/core/tx/columnshard/blobs_action/tier/storage.cpp @@ -15,12 +15,12 @@ NWrappers::NExternalStorage::IExternalStorageOperator::TPtr TOperator::GetCurren return ExternalStorageOperator; } -std::shared_ptr<IBlobsDeclareRemovingAction> TOperator::DoStartDeclareRemovingAction() { - return std::make_shared<TDeclareRemovingAction>(GetStorageId(), GCInfo); +std::shared_ptr<IBlobsDeclareRemovingAction> TOperator::DoStartDeclareRemovingAction(const std::shared_ptr<NBlobOperations::TRemoveDeclareCounters>& counters) { + return std::make_shared<TDeclareRemovingAction>(GetStorageId(), GetSelfTabletId(), counters, GCInfo); } std::shared_ptr<IBlobsWritingAction> TOperator::DoStartWritingAction() { - return std::make_shared<TWriteAction>(GetStorageId(), GetCurrentOperator(), TabletId, GCInfo); + return std::make_shared<TWriteAction>(GetStorageId(), GetCurrentOperator(), (ui64)GetSelfTabletId(), GCInfo); } std::shared_ptr<IBlobsReadingAction> TOperator::DoStartReadingAction() { @@ -29,12 +29,22 @@ std::shared_ptr<IBlobsReadingAction> TOperator::DoStartReadingAction() { std::shared_ptr<IBlobsGCAction> TOperator::DoStartGCAction(const std::shared_ptr<TRemoveGCCounters>& counters) const { std::deque<TUnifiedBlobId> draftBlobIds; - std::deque<TUnifiedBlobId> deleteBlobIds; - if (!GCInfo->ExtractForGC(draftBlobIds, deleteBlobIds, 100000)) { + AFL_VERIFY(!!TabletActorId); + TBlobsCategories categories(TTabletId(0)); + { + TTabletsByBlob deleteBlobIds; + if (!GCInfo->ExtractForGC(draftBlobIds, deleteBlobIds, 100000)) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "start_gc_skipped")("reason", "cannot_extract"); + return nullptr; + } + categories = GetSharedBlobs()->BuildRemoveCategories(std::move(deleteBlobIds)); + } + auto gcTask = std::make_shared<TGCTask>(GetStorageId(), std::move(draftBlobIds), GetCurrentOperator(), std::move(categories), counters); + if (gcTask->IsEmpty()) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "start_gc_skipped")("reason", "task_empty"); return nullptr; } - auto gcTask = std::make_shared<TGCTask>(GetStorageId(), std::move(draftBlobIds), std::move(deleteBlobIds), GetCurrentOperator(), counters); - TActorContext::AsActorContext().Register(new TGarbageCollectionActor(gcTask, TabletActorId)); + TActorContext::AsActorContext().Register(new TGarbageCollectionActor(gcTask, TabletActorId, GetSelfTabletId())); return gcTask; } @@ -45,23 +55,46 @@ void TOperator::InitNewExternalOperator(const NColumnShard::NTiers::TManager* ti } else { settings.SetEndpoint("nowhere"); } + { + TGuard<TSpinLock> changeLock(ChangeOperatorLock); + if (CurrentS3Settings && CurrentS3Settings->SerializeAsString() == settings.SerializeAsString()) { + return; + } + } auto extStorageConfig = NWrappers::NExternalStorage::IExternalStorageConfig::Construct(settings); AFL_VERIFY(extStorageConfig); auto extStorageOperator = extStorageConfig->ConstructStorageOperator(false); - extStorageOperator->InitReplyAdapter(std::make_shared<NOlap::NBlobOperations::NTier::TRepliesAdapter>()); + extStorageOperator->InitReplyAdapter(std::make_shared<NOlap::NBlobOperations::NTier::TRepliesAdapter>(GetStorageId())); + TGuard<TSpinLock> changeLock(ChangeOperatorLock); + CurrentS3Settings = settings; + ExternalStorageOperator = extStorageOperator; +} + +void TOperator::InitNewExternalOperator() { + AFL_VERIFY(InitializationConfig); + auto extStorageOperator = InitializationConfig->ConstructStorageOperator(false); + extStorageOperator->InitReplyAdapter(std::make_shared<NOlap::NBlobOperations::NTier::TRepliesAdapter>(GetStorageId())); TGuard<TSpinLock> changeLock(ChangeOperatorLock); ExternalStorageOperator = extStorageOperator; } -TOperator::TOperator(const TString& storageId, const NColumnShard::TColumnShard& shard) - : TBase(storageId) - , TabletId(shard.TabletID()) +TOperator::TOperator(const TString& storageId, const NColumnShard::TColumnShard& shard, const std::shared_ptr<NDataSharing::TStorageSharedBlobsManager>& storageSharedBlobsManager) + : TBase(storageId, storageSharedBlobsManager) , TabletActorId(shard.SelfId()) { InitNewExternalOperator(shard.GetTierManagerPointer(storageId)); } -void TOperator::DoOnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& tiers) { +TOperator::TOperator(const TString& storageId, const TActorId& shardActorId, const std::shared_ptr<NWrappers::IExternalStorageConfig>& storageConfig, + const std::shared_ptr<NDataSharing::TStorageSharedBlobsManager>& storageSharedBlobsManager) + : TBase(storageId, storageSharedBlobsManager) + , TabletActorId(shardActorId) + , InitializationConfig(storageConfig) +{ + InitNewExternalOperator(); +} + +void TOperator::DoOnTieringModified(const std::shared_ptr<NColumnShard::ITiersManager>& tiers) { auto* tierManager = tiers->GetManagerOptional(TBase::GetStorageId()); if (tierManager) { InitNewExternalOperator(tierManager); @@ -71,4 +104,15 @@ void TOperator::DoOnTieringModified(const std::shared_ptr<NColumnShard::TTiersMa } } +bool TOperator::DoLoad(IBlobManagerDb& dbBlobs) { + TTabletsByBlob blobsToDelete; + std::deque<TUnifiedBlobId> draftBlobIdsToRemove; + if (!dbBlobs.LoadTierLists(GetStorageId(), blobsToDelete, draftBlobIdsToRemove, GetSelfTabletId())) { + return false; + } + GCInfo->MutableBlobsToDelete() = std::move(blobsToDelete); + GCInfo->MutableDraftBlobIdsToRemove() = std::move(draftBlobIdsToRemove); + return true; +} + } diff --git a/ydb/core/tx/columnshard/blobs_action/tier/storage.h b/ydb/core/tx/columnshard/blobs_action/tier/storage.h index fd2cd725ac81..f149faa4a1ad 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/storage.h +++ b/ydb/core/tx/columnshard/blobs_action/tier/storage.h @@ -1,7 +1,6 @@ #pragma once #include <ydb/core/tx/columnshard/blobs_action/abstract/storage.h> -#include <ydb/core/tx/columnshard/blob_manager.h> #include <ydb/core/tx/columnshard/blob_cache.h> #include <ydb/core/tx/tiering/manager.h> #include <ydb/core/wrappers/abstract.h> @@ -12,33 +11,39 @@ namespace NKikimr::NOlap::NBlobOperations::NTier { class TOperator: public IBlobsStorageOperator { private: using TBase = IBlobsStorageOperator; - const ui64 TabletId; const NActors::TActorId TabletActorId; std::shared_ptr<TGCInfo> GCInfo = std::make_shared<TGCInfo>(); - + std::optional<NKikimrSchemeOp::TS3Settings> CurrentS3Settings; + NWrappers::NExternalStorage::IExternalStorageConfig::TPtr InitializationConfig; NWrappers::NExternalStorage::IExternalStorageConfig::TPtr ExternalStorageConfig; TSpinLock ChangeOperatorLock; NWrappers::NExternalStorage::IExternalStorageOperator::TPtr ExternalStorageOperator; NWrappers::NExternalStorage::IExternalStorageOperator::TPtr GetCurrentOperator() const; void InitNewExternalOperator(const NColumnShard::NTiers::TManager* tierManager); + void InitNewExternalOperator(); virtual TString DoDebugString() const override { return GetCurrentOperator()->DebugString(); } protected: - virtual std::shared_ptr<IBlobsDeclareRemovingAction> DoStartDeclareRemovingAction() override; + virtual std::shared_ptr<IBlobsDeclareRemovingAction> DoStartDeclareRemovingAction(const std::shared_ptr<NBlobOperations::TRemoveDeclareCounters>& counters) override; virtual std::shared_ptr<IBlobsWritingAction> DoStartWritingAction() override; virtual std::shared_ptr<IBlobsReadingAction> DoStartReadingAction() override; virtual std::shared_ptr<IBlobsGCAction> DoStartGCAction(const std::shared_ptr<TRemoveGCCounters>& counters) const override; - virtual bool DoLoad(NColumnShard::IBlobManagerDb& dbBlobs) override { - dbBlobs.LoadTierLists(GetStorageId(), GCInfo->MutableBlobsToDelete(), GCInfo->MutableDraftBlobIdsToRemove()); - return true; - } - virtual void DoOnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& tiers) override; + virtual bool DoLoad(IBlobManagerDb& dbBlobs) override; + virtual void DoOnTieringModified(const std::shared_ptr<NColumnShard::ITiersManager>& tiers) override; public: - TOperator(const TString& storageId, const NColumnShard::TColumnShard& shard); + TOperator(const TString& storageId, const NColumnShard::TColumnShard& shard, const std::shared_ptr<NDataSharing::TStorageSharedBlobsManager>& storageSharedBlobsManager); + TOperator(const TString& storageId, const TActorId& shardActorId, const std::shared_ptr<NWrappers::IExternalStorageConfig>& storageConfig, + const std::shared_ptr<NDataSharing::TStorageSharedBlobsManager>& storageSharedBlobsManager); + + virtual TTabletsByBlob GetBlobsToDelete() const override { + auto result = GCInfo->GetBlobsToDelete(); + result.Add(GCInfo->GetBlobsToDeleteInFuture()); + return result; + } virtual std::shared_ptr<IBlobInUseTracker> GetBlobsTracker() const override { return GCInfo; diff --git a/ydb/core/tx/columnshard/blobs_action/tier/write.cpp b/ydb/core/tx/columnshard/blobs_action/tier/write.cpp index 9620f8d37e55..5ae88eb577d2 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/write.cpp +++ b/ydb/core/tx/columnshard/blobs_action/tier/write.cpp @@ -15,20 +15,15 @@ void TWriteAction::DoSendWriteBlobRequest(const TString& data, const TUnifiedBlo ExternalStorageOperator->Execute(evPtr); } -void TWriteAction::DoOnExecuteTxAfterWrite(NColumnShard::TColumnShard& /*self*/, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { +void TWriteAction::DoOnExecuteTxAfterWrite(NColumnShard::TColumnShard& /*self*/, TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) { if (blobsWroteSuccessfully) { for (auto&& i : GetBlobsForWrite()) { dbBlobs.RemoveTierDraftBlobId(GetStorageId(), i.first); } - } else { - for (auto&& i : GetBlobsForWrite()) { - dbBlobs.RemoveTierDraftBlobId(GetStorageId(), i.first); - dbBlobs.AddTierBlobToDelete(GetStorageId(), i.first); - } } } -void TWriteAction::DoOnExecuteTxBeforeWrite(NColumnShard::TColumnShard& /*self*/, NColumnShard::TBlobManagerDb& dbBlobs) { +void TWriteAction::DoOnExecuteTxBeforeWrite(NColumnShard::TColumnShard& /*self*/, TBlobManagerDb& dbBlobs) { for (auto&& i : GetBlobsForWrite()) { dbBlobs.AddTierDraftBlobId(GetStorageId(), i.first); } @@ -43,7 +38,7 @@ NKikimr::NOlap::TUnifiedBlobId TWriteAction::AllocateNextBlobId(const TString& d void TWriteAction::DoOnCompleteTxAfterWrite(NColumnShard::TColumnShard& /*self*/, const bool blobsWroteSuccessfully) { if (!blobsWroteSuccessfully) { for (auto&& i : GetBlobsForWrite()) { - GCInfo->MutableBlobsToDelete().emplace_back(i.first); + GCInfo->MutableDraftBlobIdsToRemove().emplace_back(i.first); } } } diff --git a/ydb/core/tx/columnshard/blobs_action/tier/write.h b/ydb/core/tx/columnshard/blobs_action/tier/write.h index 425cabc27d51..cd1ebb65206c 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/write.h +++ b/ydb/core/tx/columnshard/blobs_action/tier/write.h @@ -1,7 +1,6 @@ #pragma once #include <ydb/core/tx/columnshard/blobs_action/abstract/write.h> -#include <ydb/core/tx/columnshard/blob_manager.h> #include <ydb/core/tx/columnshard/blob_cache.h> #include <ydb/core/wrappers/abstract.h> #include "gc_info.h" @@ -21,13 +20,13 @@ class TWriteAction: public IBlobsWritingAction { Y_ABORT_UNLESS(status == NKikimrProto::EReplyStatus::OK); } - virtual void DoOnExecuteTxBeforeWrite(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs) override; + virtual void DoOnExecuteTxBeforeWrite(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs) override; virtual void DoOnCompleteTxBeforeWrite(NColumnShard::TColumnShard& /*self*/) override { return; } - virtual void DoOnExecuteTxAfterWrite(NColumnShard::TColumnShard& self, NColumnShard::TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) override; - virtual void DoOnCompleteTxAfterWrite(NColumnShard::TColumnShard& /*self*/, const bool blobsWroteSuccessfully) override; + virtual void DoOnExecuteTxAfterWrite(NColumnShard::TColumnShard& self, TBlobManagerDb& dbBlobs, const bool blobsWroteSuccessfully) override; + virtual void DoOnCompleteTxAfterWrite(NColumnShard::TColumnShard& self, const bool blobsWroteSuccessfully) override; public: virtual bool NeedDraftTransaction() const override { return true; diff --git a/ydb/core/tx/columnshard/blobs_action/tier/ya.make b/ydb/core/tx/columnshard/blobs_action/tier/ya.make index 2df622ce24e0..6fd1d1cc0859 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/ya.make +++ b/ydb/core/tx/columnshard/blobs_action/tier/ya.make @@ -16,6 +16,8 @@ PEERDIR( contrib/libs/apache/arrow ydb/core/tablet_flat ydb/core/tx/tiering + ydb/core/tx/columnshard/data_sharing/protos + ydb/core/tx/columnshard/blobs_action/abstract ) END() diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.cpp b/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.cpp index c041f6cd412a..5d0b9b721f5d 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.cpp +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.cpp @@ -2,4 +2,22 @@ namespace NKikimr::NColumnShard { +bool TTxWriteDraft::Execute(TTransactionContext& txc, const TActorContext& /*ctx*/) { + TMemoryProfileGuard mpg("TTxWriteDraft::Execute"); + NOlap::TBlobManagerDb blobManagerDb(txc.DB); + for (auto&& action : WriteController->GetBlobActions()) { + action.second->OnExecuteTxBeforeWrite(*Self, blobManagerDb); + } + return true; +} + +void TTxWriteDraft::Complete(const TActorContext& ctx) { + TMemoryProfileGuard mpg("TTxWriteDraft::Complete"); + Completed = true; + for (auto&& action : WriteController->GetBlobActions()) { + action.second->OnCompleteTxBeforeWrite(*Self); + } + ctx.Register(NColumnShard::CreateWriteActor(Self->TabletID(), WriteController, TInstant::Max())); +} + } diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.h b/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.h index a90db85f0f73..1bd9762d7917 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.h +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.h @@ -7,26 +7,23 @@ using namespace NTabletFlatExecutor; class TTxWriteDraft: public TTransactionBase<TColumnShard> { private: + bool Completed = false; const IWriteController::TPtr WriteController; public: + ~TTxWriteDraft() { + if (!Completed) { + WriteController->Abort("TTxWriteDraft aborted before complete"); + } + } + TTxWriteDraft(TColumnShard* self, const IWriteController::TPtr writeController) : TBase(self) , WriteController(writeController) { + AFL_VERIFY(WriteController); } - bool Execute(TTransactionContext& txc, const TActorContext& /*ctx*/) override { - TBlobManagerDb blobManagerDb(txc.DB); - for (auto&& action : WriteController->GetBlobActions()) { - action->OnExecuteTxBeforeWrite(*Self, blobManagerDb); - } - return true; - } - void Complete(const TActorContext& ctx) override { - for (auto&& action : WriteController->GetBlobActions()) { - action->OnCompleteTxBeforeWrite(*Self); - } - ctx.Register(NColumnShard::CreateWriteActor(Self->TabletID(), WriteController, TInstant::Max())); - } + bool Execute(TTransactionContext& txc, const TActorContext& /*ctx*/) override; + void Complete(const TActorContext& ctx) override; TTxType GetTxType() const override { return TXTYPE_WRITE_DRAFT; } }; diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_gc_indexed.cpp b/ydb/core/tx/columnshard/blobs_action/transaction/tx_gc_indexed.cpp index 6c03ae44a96d..73baa553cab9 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/tx_gc_indexed.cpp +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_gc_indexed.cpp @@ -2,12 +2,14 @@ namespace NKikimr::NColumnShard { bool TTxGarbageCollectionFinished::Execute(TTransactionContext& txc, const TActorContext& /*ctx*/) { + TMemoryProfileGuard mpg("TTxGarbageCollectionFinished::Execute"); AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("tx", "TxGarbageCollectionFinished")("event", "execute"); - TBlobManagerDb blobManagerDb(txc.DB); + NOlap::TBlobManagerDb blobManagerDb(txc.DB); Action->OnExecuteTxAfterCleaning(*Self, blobManagerDb); return true; } void TTxGarbageCollectionFinished::Complete(const TActorContext& /*ctx*/) { + TMemoryProfileGuard mpg("TTxGarbageCollectionFinished::Complete"); AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("tx", "TxGarbageCollectionFinished")("event", "complete"); Action->OnCompleteTxAfterCleaning(*Self, Action); } diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_gc_insert_table.cpp b/ydb/core/tx/columnshard/blobs_action/transaction/tx_gc_insert_table.cpp index 307db45a5d24..ece65128719a 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/tx_gc_insert_table.cpp +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_gc_insert_table.cpp @@ -1,27 +1,35 @@ #include "tx_gc_insert_table.h" +#include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> namespace NKikimr::NColumnShard { bool TTxInsertTableCleanup::Execute(TTransactionContext& txc, const TActorContext& /*ctx*/) { + TMemoryProfileGuard mpg("TTxInsertTableCleanup::Execute"); TBlobGroupSelector dsGroupSelector(Self->Info()); NOlap::TDbWrapper dbTable(txc.DB, &dsGroupSelector); NIceDb::TNiceDb db(txc.DB); Self->TryAbortWrites(db, dbTable, std::move(WriteIdsToAbort)); - TBlobManagerDb blobManagerDb(txc.DB); + NOlap::TBlobManagerDb blobManagerDb(txc.DB); auto allAborted = Self->InsertTable->GetAborted(); auto storage = Self->StoragesManager->GetInsertOperator(); - BlobsAction = storage->StartDeclareRemovingAction("TX_CLEANUP"); + BlobsAction = storage->StartDeclareRemovingAction(NOlap::NBlobOperations::EConsumer::CLEANUP_INSERT_TABLE); for (auto& [abortedWriteId, abortedData] : allAborted) { - Self->InsertTable->EraseAborted(dbTable, abortedData, BlobsAction); + Self->InsertTable->EraseAbortedOnExecute(dbTable, abortedData, BlobsAction); } - BlobsAction->OnExecuteTxAfterRemoving(*Self, blobManagerDb, true); + BlobsAction->OnExecuteTxAfterRemoving(blobManagerDb, true); return true; } void TTxInsertTableCleanup::Complete(const TActorContext& /*ctx*/) { + TMemoryProfileGuard mpg("TTxInsertTableCleanup::Complete"); + auto allAborted = Self->InsertTable->GetAborted(); + for (auto& [abortedWriteId, abortedData] : allAborted) { + Self->InsertTable->EraseAbortedOnComplete(abortedData); + } + Y_ABORT_UNLESS(BlobsAction); - BlobsAction->OnCompleteTxAfterRemoving(*Self, true); + BlobsAction->OnCompleteTxAfterRemoving(true); Self->EnqueueBackgroundActivities(); } diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_remove_blobs.cpp b/ydb/core/tx/columnshard/blobs_action/transaction/tx_remove_blobs.cpp new file mode 100644 index 000000000000..74ad4c82b7e8 --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_remove_blobs.cpp @@ -0,0 +1,22 @@ +#include "tx_remove_blobs.h" +#include <ydb/core/tx/columnshard/blobs_action/events/delete_blobs.h> + +namespace NKikimr::NColumnShard { + +bool TTxRemoveSharedBlobs::Execute(TTransactionContext& txc, const TActorContext&) { + TMemoryProfileGuard mpg("TTxRemoveSharedBlobs::Execute"); + NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", Self->TabletID())("tx_state", "execute"); + NOlap::TBlobManagerDb blobManagerDb(txc.DB); + RemoveAction->OnExecuteTxAfterRemoving(blobManagerDb, true); + return true; +} + +void TTxRemoveSharedBlobs::Complete(const TActorContext& ctx) { + TMemoryProfileGuard mpg("TTxRemoveSharedBlobs::Complete"); + NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", Self->TabletID())("tx_state", "complete"); + RemoveAction->OnCompleteTxAfterRemoving(true); + + ctx.Send(InitiatorActorId, new NOlap::NBlobOperations::NEvents::TEvDeleteSharedBlobsFinished((NOlap::TTabletId)Self->TabletID())); +} + +} diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_remove_blobs.h b/ydb/core/tx/columnshard/blobs_action/transaction/tx_remove_blobs.h new file mode 100644 index 000000000000..d716ba89860f --- /dev/null +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_remove_blobs.h @@ -0,0 +1,34 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/engines/writer/indexed_blob_constructor.h> + +namespace NKikimr::NColumnShard { + +class TTxRemoveSharedBlobs: public TTransactionBase<TColumnShard> { +private: + std::shared_ptr<NOlap::IBlobsDeclareRemovingAction> RemoveAction; + const ui32 TabletTxNo; + const NActors::TActorId InitiatorActorId; + + TStringBuilder TxPrefix() const { + return TStringBuilder() << "TxWrite[" << ToString(TabletTxNo) << "] "; + } + + TString TxSuffix() const { + return TStringBuilder() << " at tablet " << Self->TabletID(); + } +public: + TTxRemoveSharedBlobs(TColumnShard* self, const std::shared_ptr<NOlap::IBlobsDeclareRemovingAction>& removeAction, const NActors::TActorId initiatorActorId) + : TBase(self) + , RemoveAction(removeAction) + , TabletTxNo(++Self->TabletTxCounter) + , InitiatorActorId(initiatorActorId) + {} + + bool Execute(TTransactionContext& txc, const TActorContext& ctx) override; + void Complete(const TActorContext& ctx) override; + TTxType GetTxType() const override { return TXTYPE_DELETE_SHARED_BLOBS; } +}; + + +} diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_write.cpp b/ydb/core/tx/columnshard/blobs_action/transaction/tx_write.cpp index 1701f5ae6a5a..9b80f0033865 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/tx_write.cpp +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_write.cpp @@ -1,6 +1,7 @@ #include "tx_write.h" namespace NKikimr::NColumnShard { + bool TTxWrite::InsertOneBlob(TTransactionContext& txc, const NOlap::TWideSerializedBatch& batch, const TWriteId writeId) { NKikimrTxColumnShard::TLogicalMetadata meta; meta.SetNumRows(batch->GetRowsCount()); @@ -28,8 +29,8 @@ bool TTxWrite::InsertOneBlob(TTransactionContext& txc, const NOlap::TWideSeriali return false; } - bool TTxWrite::Execute(TTransactionContext& txc, const TActorContext&) { + TMemoryProfileGuard mpg("TTxWrite::Execute"); NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", Self->TabletID())("tx_state", "execute"); ACFL_DEBUG("event", "start_execute"); const NOlap::TWritingBuffer& buffer = PutBlobResult->Get()->MutableWritesBuffer(); @@ -66,29 +67,30 @@ bool TTxWrite::Execute(TTransactionContext& txc, const TActorContext&) { } } - TBlobManagerDb blobManagerDb(txc.DB); + NOlap::TBlobManagerDb blobManagerDb(txc.DB); AFL_VERIFY(buffer.GetAddActions().size() == 1); for (auto&& i : buffer.GetAddActions()) { i->OnExecuteTxAfterWrite(*Self, blobManagerDb, true); } for (auto&& i : buffer.GetRemoveActions()) { - i->OnExecuteTxAfterRemoving(*Self, blobManagerDb, true); + i->OnExecuteTxAfterRemoving(blobManagerDb, true); } for (auto&& aggr : buffer.GetAggregations()) { const auto& writeMeta = aggr->GetWriteData()->GetWriteMeta(); - std::unique_ptr<TEvColumnShard::TEvWriteResult> result; - TWriteOperation::TPtr operation; if (!writeMeta.HasLongTxId()) { - operation = Self->OperationsManager->GetOperation((TWriteId)writeMeta.GetWriteId()); + auto operation = Self->OperationsManager->GetOperation((TWriteId)writeMeta.GetWriteId()); Y_ABORT_UNLESS(operation); Y_ABORT_UNLESS(operation->GetStatus() == EOperationStatus::Started); - } - if (operation) { operation->OnWriteFinish(txc, aggr->GetWriteIds()); - auto txInfo = Self->ProgressTxController->RegisterTxWithDeadline(operation->GetTxId(), NKikimrTxColumnShard::TX_KIND_COMMIT_WRITE, "", writeMeta.GetSource(), 0, txc); - Y_UNUSED(txInfo); - NEvents::TDataEvents::TCoordinatorInfo tInfo = Self->ProgressTxController->GetCoordinatorInfo(operation->GetTxId()); - Results.emplace_back(NEvents::TDataEvents::TEvWriteResult::BuildPrepared(Self->TabletID(), operation->GetTxId(), tInfo)); + if (operation->GetBehaviour() == EOperationBehaviour::InTxWrite) { + NKikimrTxColumnShard::TCommitWriteTxBody proto; + proto.SetLockId(operation->GetLockId()); + TString txBody; + Y_ABORT_UNLESS(proto.SerializeToString(&txBody)); + ProposeTransaction(TTxController::TBasicTxInfo(NKikimrTxColumnShard::TX_KIND_COMMIT_WRITE, operation->GetLockId()), txBody, writeMeta.GetSource(), operation->GetCookie(), txc); + } else { + Results.emplace_back(NEvents::TDataEvents::TEvWriteResult::BuildCompleted(Self->TabletID(), operation->GetLockId())); + } } else { Y_ABORT_UNLESS(aggr->GetWriteIds().size() == 1); Results.emplace_back(std::make_unique<TEvColumnShard::TEvWriteResult>(Self->TabletID(), writeMeta, (ui64)aggr->GetWriteIds().front(), NKikimrTxColumnShard::EResultStatus::SUCCESS)); @@ -97,7 +99,17 @@ bool TTxWrite::Execute(TTransactionContext& txc, const TActorContext&) { return true; } +void TTxWrite::OnProposeResult(TTxController::TProposeResult& proposeResult, const TTxController::TTxInfo& txInfo) { + Y_UNUSED(proposeResult); + Results.emplace_back(NEvents::TDataEvents::TEvWriteResult::BuildPrepared(Self->TabletID(), txInfo.TxId, Self->GetProgressTxController().BuildCoordinatorInfo(txInfo))); +} + +void TTxWrite::OnProposeError(TTxController::TProposeResult& proposeResult, const TTxController::TBasicTxInfo& txInfo) { + AFL_VERIFY("Unexpected behaviour")("tx_id", txInfo.TxId)("details", proposeResult.DebugString()); +} + void TTxWrite::Complete(const TActorContext& ctx) { + TMemoryProfileGuard mpg("TTxWrite::Complete"); NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", Self->TabletID())("tx_state", "complete"); const auto now = TMonotonic::Now(); const NOlap::TWritingBuffer& buffer = PutBlobResult->Get()->MutableWritesBuffer(); @@ -105,12 +117,17 @@ void TTxWrite::Complete(const TActorContext& ctx) { i->OnCompleteTxAfterWrite(*Self, true); } for (auto&& i : buffer.GetRemoveActions()) { - i->OnCompleteTxAfterRemoving(*Self, true); + i->OnCompleteTxAfterRemoving(true); } AFL_VERIFY(buffer.GetAggregations().size() == Results.size()); for (ui32 i = 0; i < buffer.GetAggregations().size(); ++i) { const auto& writeMeta = buffer.GetAggregations()[i]->GetWriteData()->GetWriteMeta(); - ctx.Send(writeMeta.GetSource(), Results[i].release()); + auto operation = Self->OperationsManager->GetOperation((TWriteId)writeMeta.GetWriteId()); + if (operation) { + ctx.Send(writeMeta.GetSource(), Results[i].release(), 0, operation->GetCookie()); + } else { + ctx.Send(writeMeta.GetSource(), Results[i].release()); + } Self->CSCounters.OnWriteTxComplete(now - writeMeta.GetWriteStartInstant()); Self->CSCounters.OnSuccessWriteResponse(); } diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_write.h b/ydb/core/tx/columnshard/blobs_action/transaction/tx_write.h index 6086542940f6..4af16dc94cee 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/tx_write.h +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_write.h @@ -1,13 +1,14 @@ #pragma once #include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/transactions/propose_transaction_base.h> #include <ydb/core/tx/columnshard/engines/writer/indexed_blob_constructor.h> namespace NKikimr::NColumnShard { -class TTxWrite : public TTransactionBase<TColumnShard> { +class TTxWrite : public TProposeTransactionBase { public: TTxWrite(TColumnShard* self, const TEvPrivate::TEvWriteBlobsResult::TPtr& putBlobResult) - : TBase(self) + : TProposeTransactionBase(self) , PutBlobResult(putBlobResult) , TabletTxNo(++Self->TabletTxCounter) {} @@ -16,13 +17,17 @@ class TTxWrite : public TTransactionBase<TColumnShard> { void Complete(const TActorContext& ctx) override; TTxType GetTxType() const override { return TXTYPE_WRITE; } - bool InsertOneBlob(TTransactionContext& txc, const NOlap::TWideSerializedBatch& batch, const TWriteId writeId); private: TEvPrivate::TEvWriteBlobsResult::TPtr PutBlobResult; const ui32 TabletTxNo; std::vector<std::unique_ptr<NActors::IEventBase>> Results; + + bool InsertOneBlob(TTransactionContext& txc, const NOlap::TWideSerializedBatch& batch, const TWriteId writeId); + void OnProposeResult(TTxController::TProposeResult& proposeResult, const TTxController::TTxInfo& txInfo) override; + void OnProposeError(TTxController::TProposeResult& proposeResult, const TTxController::TBasicTxInfo& txInfo) override; + TStringBuilder TxPrefix() const { return TStringBuilder() << "TxWrite[" << ToString(TabletTxNo) << "] "; } diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.cpp b/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.cpp index 429696ac9951..e6b9808493d2 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.cpp +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.cpp @@ -1,41 +1,46 @@ #include "tx_write_index.h" +#include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> #include <ydb/core/tx/columnshard/engines/changes/abstract/abstract.h> +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> #include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> namespace NKikimr::NColumnShard { bool TTxWriteIndex::Execute(TTransactionContext& txc, const TActorContext& ctx) { auto changes = Ev->Get()->IndexChanges; + TMemoryProfileGuard mpg("TTxWriteIndex::Execute::" + changes->TypeString()); TLogContextGuard gLogging = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", Self->TabletID())("external_task_id", changes->GetTaskIdentifier()); Y_ABORT_UNLESS(Self->InsertTable); Y_ABORT_UNLESS(Self->TablesManager.HasPrimaryIndex()); txc.DB.NoMoreReadsForTx(); - ACFL_DEBUG("event", "TTxWriteIndex::Execute")("change_type", changes->TypeString())("details", *changes); + ACFL_DEBUG("event", "TTxWriteIndex::Execute")("change_type", changes->TypeString())("details", changes->DebugString()); if (Ev->Get()->GetPutStatus() == NKikimrProto::OK) { NOlap::TSnapshot snapshot(Self->LastPlannedStep, Self->LastPlannedTxId); - Y_ABORT_UNLESS(Ev->Get()->IndexInfo.GetLastSchema()->GetSnapshot() <= snapshot); + Y_ABORT_UNLESS(Ev->Get()->IndexInfo->GetLastSchema()->GetSnapshot() <= snapshot); TBlobGroupSelector dsGroupSelector(Self->Info()); NOlap::TDbWrapper dbWrap(txc.DB, &dsGroupSelector); AFL_VERIFY(Self->TablesManager.MutablePrimaryIndex().ApplyChanges(dbWrap, changes, snapshot)); LOG_S_DEBUG(TxPrefix() << "(" << changes->TypeString() << ") apply" << TxSuffix()); - NOlap::TWriteIndexContext context(txc, dbWrap); - changes->WriteIndex(*Self, context); + NOlap::TWriteIndexContext context(&txc.DB, dbWrap, Self->MutableIndexAs<NOlap::TColumnEngineForLogs>()); + changes->WriteIndexOnExecute(Self, context); - changes->MutableBlobsAction().OnExecuteTxAfterAction(*Self, *context.BlobManagerDb, true); + NOlap::TBlobManagerDb blobManagerDb(txc.DB); + changes->MutableBlobsAction().OnExecuteTxAfterAction(*Self, blobManagerDb, true); Self->UpdateIndexCounters(); } else { TBlobGroupSelector dsGroupSelector(Self->Info()); - NColumnShard::TBlobManagerDb blobsDb(txc.DB); + NOlap::TBlobManagerDb blobsDb(txc.DB); changes->MutableBlobsAction().OnExecuteTxAfterAction(*Self, blobsDb, false); for (ui32 i = 0; i < changes->GetWritePortionsCount(); ++i) { - for (auto&& i : changes->GetWritePortionInfo(i)->GetPortionInfo().Records) { - LOG_S_WARN(TxPrefix() << "(" << changes->TypeString() << ":" << i.BlobRange << ") blob cannot apply changes: " << TxSuffix()); + auto& portion = changes->GetWritePortionInfo(i)->GetPortionInfo(); + for (auto&& i : portion.Records) { + LOG_S_WARN(TxPrefix() << "(" << changes->TypeString() << ":" << portion.RestoreBlobRange(i.BlobRange) << ") blob cannot apply changes: " << TxSuffix()); } } - NOlap::TChangesFinishContext context("cannot write index blobs"); + NOlap::TChangesFinishContext context("cannot write index blobs: " + ::ToString(Ev->Get()->GetPutStatus())); changes->Abort(*Self, context); LOG_S_ERROR(TxPrefix() << " (" << changes->TypeString() << ") cannot write index blobs" << TxSuffix()); } @@ -48,31 +53,27 @@ void TTxWriteIndex::Complete(const TActorContext& ctx) { TLogContextGuard gLogging(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", Self->TabletID())); CompleteReady = true; auto changes = Ev->Get()->IndexChanges; - ACFL_DEBUG("event", "TTxWriteIndex::Complete")("change_type", changes->TypeString())("details", *changes); + TMemoryProfileGuard mpg("TTxWriteIndex::Complete::" + changes->TypeString()); + ACFL_DEBUG("event", "TTxWriteIndex::Complete")("change_type", changes->TypeString())("details", changes->DebugString()); const ui64 blobsWritten = changes->GetBlobsAction().GetWritingBlobsCount(); const ui64 bytesWritten = changes->GetBlobsAction().GetWritingTotalSize(); if (!Ev->Get()->IndexChanges->IsAborted()) { - NOlap::TWriteIndexCompleteContext context(ctx, blobsWritten, bytesWritten, Ev->Get()->Duration, TriggerActivity); - Ev->Get()->IndexChanges->WriteIndexComplete(*Self, context); - } - - if (Ev->Get()->GetPutStatus() == NKikimrProto::TRYLATER) { - ctx.Schedule(Self->FailActivationDelay, new TEvPrivate::TEvPeriodicWakeup(true)); - } else { - Self->EnqueueBackgroundActivities(false, TriggerActivity); + NOlap::TWriteIndexCompleteContext context(ctx, blobsWritten, bytesWritten, Ev->Get()->Duration, Self->MutableIndexAs<NOlap::TColumnEngineForLogs>()); + Ev->Get()->IndexChanges->WriteIndexOnComplete(Self, context); } + Self->EnqueueBackgroundActivities(false); changes->MutableBlobsAction().OnCompleteTxAfterAction(*Self, Ev->Get()->GetPutStatus() == NKikimrProto::OK); - NYDBTest::TControllers::GetColumnShardController()->OnWriteIndexComplete(Self->TabletID(), changes->TypeString()); + NYDBTest::TControllers::GetColumnShardController()->OnWriteIndexComplete(*changes, *Self); } TTxWriteIndex::~TTxWriteIndex() { if (Ev) { auto changes = Ev->Get()->IndexChanges; if (!CompleteReady && changes) { - changes->AbortEmergency(); + changes->AbortEmergency("TTxWriteIndex destructor withno CompleteReady flag"); } } } diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.h b/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.h index 5c20461c402a..3cf5d29a7219 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.h +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.h @@ -22,7 +22,6 @@ class TTxWriteIndex: public TTransactionBase<TColumnShard> { TEvPrivate::TEvWriteIndex::TPtr Ev; const ui32 TabletTxNo; - TBackgroundActivity TriggerActivity = TBackgroundActivity::All(); bool CompleteReady = false; TStringBuilder TxPrefix() const { diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/ya.make b/ydb/core/tx/columnshard/blobs_action/transaction/ya.make index 27268e5fd7f1..c78e93ef3b7e 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/ya.make +++ b/ydb/core/tx/columnshard/blobs_action/transaction/ya.make @@ -6,6 +6,7 @@ SRCS( tx_write_index.cpp tx_gc_insert_table.cpp tx_gc_indexed.cpp + tx_remove_blobs.cpp ) PEERDIR( @@ -13,6 +14,8 @@ PEERDIR( contrib/libs/apache/arrow ydb/core/tablet_flat ydb/core/tx/tiering + ydb/core/tx/columnshard/data_sharing/protos + ydb/core/tx/columnshard/blobs_action/events ) END() diff --git a/ydb/core/tx/columnshard/blobs_action/ya.make b/ydb/core/tx/columnshard/blobs_action/ya.make index 320cb63e4e79..12470a0aa080 100644 --- a/ydb/core/tx/columnshard/blobs_action/ya.make +++ b/ydb/core/tx/columnshard/blobs_action/ya.make @@ -2,7 +2,6 @@ LIBRARY() SRCS( blob_manager_db.cpp - memory.cpp ) PEERDIR( @@ -11,19 +10,10 @@ PEERDIR( ydb/core/tablet_flat ydb/core/tx/tiering ydb/core/tx/columnshard/blobs_action/abstract - ydb/core/tx/columnshard/blobs_action/bs ydb/core/tx/columnshard/blobs_action/counters ydb/core/tx/columnshard/blobs_action/transaction + ydb/core/tx/columnshard/blobs_action/events + ydb/core/tx/columnshard/blobs_action/protos ) -IF (OS_WINDOWS) - CFLAGS( - -DKIKIMR_DISABLE_S3_OPS - ) -ELSE() - PEERDIR( - ydb/core/tx/columnshard/blobs_action/tier - ) -ENDIF() - END() diff --git a/ydb/core/tx/columnshard/blobs_reader/actor.cpp b/ydb/core/tx/columnshard/blobs_reader/actor.cpp index c934ddef6d1a..3d27b9d8a0e8 100644 --- a/ydb/core/tx/columnshard/blobs_reader/actor.cpp +++ b/ydb/core/tx/columnshard/blobs_reader/actor.cpp @@ -14,13 +14,13 @@ void TActor::Handle(NBlobCache::TEvBlobCache::TEvReadBlobRangeResult::TPtr& ev) bool aborted = false; if (event.Status != NKikimrProto::EReplyStatus::OK) { - WaitingBlobsCount.Sub(Task->GetWaitingCount()); - if (!Task->AddError(event.BlobRange, IBlobsReadingAction::TErrorStatus::Fail(event.Status, "cannot get blob: " + event.Data.substr(0, 1024)))) { + WaitingBlobsCount.Sub(Task->GetWaitingRangesCount()); + if (!Task->AddError(event.DataSourceId, event.BlobRange, IBlobsReadingAction::TErrorStatus::Fail(event.Status, "cannot get blob: " + event.Data.substr(0, 1024)))) { aborted = true; } } else { WaitingBlobsCount.Dec(); - Task->AddData(event.BlobRange, event.Data); + Task->AddData(event.DataSourceId, event.BlobRange, event.Data); } if (aborted || Task->IsFinished()) { Task = nullptr; @@ -46,8 +46,7 @@ void TActor::Bootstrap() { NActors::TLogContextGuard gLogging = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("external_task_id", externalTaskId); Task->StartBlobsFetching({}); ACFL_DEBUG("task", Task->DebugString()); - WaitingBlobsCount.Add(Task->GetReadRangesCount()); - AFL_VERIFY(Task->GetAllRangesSize()); + WaitingBlobsCount.Add(Task->GetWaitingRangesCount()); Become(&TThis::StateWait); if (Task->IsFinished()) { PassAway(); diff --git a/ydb/core/tx/columnshard/blobs_reader/read_coordinator.cpp b/ydb/core/tx/columnshard/blobs_reader/read_coordinator.cpp index 5b6a255faffb..df9a740d230c 100644 --- a/ydb/core/tx/columnshard/blobs_reader/read_coordinator.cpp +++ b/ydb/core/tx/columnshard/blobs_reader/read_coordinator.cpp @@ -1,63 +1,41 @@ -#include "read_coordinator.h" - -namespace NKikimr::NOlap::NBlobOperations::NRead { - -TAtomicCounter TReadCoordinatorActor::WaitingBlobsCount = 0; - -void TReadCoordinatorActor::Handle(TEvStartReadTask::TPtr& ev) { - const auto& externalTaskId = ev->Get()->GetTask()->GetExternalTaskId(); - NActors::TLogContextGuard gLogging = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("external_task_id", externalTaskId); - THashSet<TBlobRange> rangesInProgress; - for (auto&& agent : ev->Get()->GetTask()->GetAgents()) { - for (auto&& b : agent->GetRangesForRead()) { - for (auto&& r : b.second) { - auto it = BlobTasks.find(r); - if (it != BlobTasks.end()) { - ACFL_DEBUG("event", "TEvReadTask")("enqueued_blob_id", r); - rangesInProgress.emplace(r); - } else { - ACFL_DEBUG("event", "TEvReadTask")("blob_id", r); - it = BlobTasks.emplace(r, std::vector<std::shared_ptr<ITask>>()).first; - WaitingBlobsCount.Inc(); - } - it->second.emplace_back(ev->Get()->GetTask()); - } - } - } - ev->Get()->GetTask()->StartBlobsFetching(rangesInProgress); - ACFL_DEBUG("task", ev->Get()->GetTask()->DebugString()); - AFL_VERIFY(ev->Get()->GetTask()->GetAllRangesSize()); -} - -void TReadCoordinatorActor::Handle(NBlobCache::TEvBlobCache::TEvReadBlobRangeResult::TPtr& ev) { - ACFL_TRACE("event", "TEvReadBlobRangeResult")("blob_id", ev->Get()->BlobRange); - - auto& event = *ev->Get(); - auto it = BlobTasks.find(event.BlobRange); - AFL_VERIFY(it != BlobTasks.end())("blob_id", event.BlobRange); - for (auto&& i : it->second) { - if (event.Status != NKikimrProto::EReplyStatus::OK) { - i->AddError(event.BlobRange, IBlobsReadingAction::TErrorStatus::Fail(event.Status, "cannot get blob")); - } else { - i->AddData(event.BlobRange, event.Data); - } - } - WaitingBlobsCount.Dec(); - BlobTasks.erase(it); -} - -TReadCoordinatorActor::TReadCoordinatorActor(ui64 tabletId, const TActorId& parent) - : TabletId(tabletId) - , Parent(parent) { - -} - -TReadCoordinatorActor::~TReadCoordinatorActor() { - for (auto&& i : BlobTasks) { - for (auto&& t : i.second) { - t->Abort(); - } - } -} - +#include "read_coordinator.h" + +namespace NKikimr::NOlap::NBlobOperations::NRead { + +void TReadCoordinatorActor::Handle(TEvStartReadTask::TPtr& ev) { + const auto& externalTaskId = ev->Get()->GetTask()->GetExternalTaskId(); + NActors::TLogContextGuard gLogging = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("external_task_id", externalTaskId); + THashSet<TBlobRange> rangesInProgress; + BlobTasks.AddTask(ev->Get()->GetTask()); + ev->Get()->GetTask()->StartBlobsFetching(rangesInProgress); + ACFL_DEBUG("task", ev->Get()->GetTask()->DebugString()); +} + +void TReadCoordinatorActor::Handle(NBlobCache::TEvBlobCache::TEvReadBlobRangeResult::TPtr& ev) { + ACFL_TRACE("event", "TEvReadBlobRangeResult")("blob_id", ev->Get()->BlobRange); + + auto& event = *ev->Get(); + auto tasks = BlobTasks.Extract(event.DataSourceId, event.BlobRange); + for (auto&& i : tasks) { + if (event.Status != NKikimrProto::EReplyStatus::OK) { + i->AddError(event.DataSourceId, event.BlobRange, IBlobsReadingAction::TErrorStatus::Fail(event.Status, "cannot get blob")); + } else { + i->AddData(event.DataSourceId, event.BlobRange, event.Data); + } + } +} + +TReadCoordinatorActor::TReadCoordinatorActor(ui64 tabletId, const TActorId& parent) + : TabletId(tabletId) + , Parent(parent) { + +} + +TReadCoordinatorActor::~TReadCoordinatorActor() { + auto tasks = BlobTasks.ExtractTasksAll(); + for (auto&& i : tasks) { + i->Abort(); + } +} + } diff --git a/ydb/core/tx/columnshard/blobs_reader/read_coordinator.h b/ydb/core/tx/columnshard/blobs_reader/read_coordinator.h index e89a29aee1b0..abd93b724a6d 100644 --- a/ydb/core/tx/columnshard/blobs_reader/read_coordinator.h +++ b/ydb/core/tx/columnshard/blobs_reader/read_coordinator.h @@ -12,13 +12,54 @@ namespace NKikimr::NOlap::NBlobOperations::NRead { +class TBlobsForRead { +private: + THashMap<TString, THashMap<TBlobRange, std::vector<std::shared_ptr<ITask>>>> BlobTasks; +public: + std::vector<std::shared_ptr<ITask>> ExtractTasksAll() { + THashMap<ui64, std::shared_ptr<ITask>> tasks; + for (auto&& i : BlobTasks) { + for (auto&& r : i.second) { + for (auto&& t : r.second) { + tasks.emplace(t->GetTaskIdentifier(), t); + } + } + } + std::vector<std::shared_ptr<ITask>> result; + for (auto&& i : tasks) { + result.emplace_back(i.second); + } + return result; + } + + std::vector<std::shared_ptr<ITask>> Extract(const TString& storageId, const TBlobRange& bRange) { + auto it = BlobTasks.find(storageId); + AFL_VERIFY(it != BlobTasks.end()); + auto itBlobRange = it->second.find(bRange); + auto result = std::move(itBlobRange->second); + it->second.erase(itBlobRange); + if (it->second.empty()) { + BlobTasks.erase(it); + } + return result; + } + + void AddTask(const std::shared_ptr<ITask>& task) { + for (auto&& i : task->GetAgents()) { + auto& storage = BlobTasks[i.second->GetStorageId()]; + for (auto&& bRid : i.second->GetGroups()) { + storage[bRid.first].emplace_back(task); + } + } + } +}; + class TReadCoordinatorActor: public NActors::TActorBootstrapped<TReadCoordinatorActor> { private: ui64 TabletId; NActors::TActorId Parent; - THashMap<TBlobRange, std::vector<std::shared_ptr<ITask>>> BlobTasks; + TBlobsForRead BlobTasks; public: - static TAtomicCounter WaitingBlobsCount; TReadCoordinatorActor(ui64 tabletId, const TActorId& parent); void Handle(TEvStartReadTask::TPtr& ev); @@ -42,4 +83,4 @@ class TReadCoordinatorActor: public NActors::TActorBootstrapped<TReadCoordinator ~TReadCoordinatorActor(); }; -} +} diff --git a/ydb/core/tx/columnshard/blobs_reader/task.cpp b/ydb/core/tx/columnshard/blobs_reader/task.cpp index 8ea2c2fa9097..8306ccbc6309 100644 --- a/ydb/core/tx/columnshard/blobs_reader/task.cpp +++ b/ydb/core/tx/columnshard/blobs_reader/task.cpp @@ -5,52 +5,53 @@ namespace NKikimr::NOlap::NBlobOperations::NRead { -const std::vector<std::shared_ptr<IBlobsReadingAction>>& ITask::GetAgents() const { - Y_ABORT_UNLESS(!BlobsFetchingStarted); - return Agents; -} - -bool ITask::AddError(const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) { - ++BlobErrorsCount; +bool ITask::AddError(const TString& storageIdExt, const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) { + const TString storageId = storageIdExt ? storageIdExt : IStoragesManager::DefaultStorageId; + AFL_VERIFY(--BlobsWaitingCount >= 0); if (TaskFinishedWithError || AbortFlag) { - ACFL_WARN("event", "SkipError")("blob_range", range)("message", status.GetErrorMessage())("status", status.GetStatus())("external_task_id", ExternalTaskId)("consumer", TaskCustomer) + ACFL_WARN("event", "SkipError")("storage_id", storageId)("blob_range", range)("message", status.GetErrorMessage())("status", status.GetStatus())("external_task_id", ExternalTaskId)("consumer", TaskCustomer) ("abort", AbortFlag)("finished_with_error", TaskFinishedWithError); return false; } else { - ACFL_ERROR("event", "NewError")("blob_range", range)("message", status.GetErrorMessage())("status", status.GetStatus())("external_task_id", ExternalTaskId)("consumer", TaskCustomer); + ACFL_ERROR("event", "NewError")("storage_id", storageId)("blob_range", range)("message", status.GetErrorMessage())("status", status.GetStatus())("external_task_id", ExternalTaskId)("consumer", TaskCustomer); } { - auto it = BlobsWaiting.find(range); - AFL_VERIFY(it != BlobsWaiting.end()); + auto it = AgentsWaiting.find(storageId); + AFL_VERIFY(it != AgentsWaiting.end())("storage_id", storageId); it->second->OnReadError(range, status); - BlobsWaiting.erase(it); + if (it->second->IsFinished()) { + AgentsWaiting.erase(it); + } } - if (!OnError(range, status)) { + if (!OnError(storageId, range, status)) { TaskFinishedWithError = true; return false; } - if (BlobsWaiting.empty()) { + if (AgentsWaiting.empty()) { OnDataReady(); } return true; } -void ITask::AddData(const TBlobRange& range, const TString& data) { - ++BlobsDataCount; +void ITask::AddData(const TString& storageIdExt, const TBlobRange& range, const TString& data) { + const TString storageId = storageIdExt ? storageIdExt : IStoragesManager::DefaultStorageId; + AFL_VERIFY(--BlobsWaitingCount >= 0); if (TaskFinishedWithError || AbortFlag) { - ACFL_WARN("event", "SkipDataAfterError")("external_task_id", ExternalTaskId)("abort", AbortFlag)("finished_with_error", TaskFinishedWithError); + ACFL_WARN("event", "SkipDataAfterError")("storage_id", storageId)("external_task_id", ExternalTaskId)("abort", AbortFlag)("finished_with_error", TaskFinishedWithError); return; } else { - ACFL_TRACE("event", "NewData")("range", range.ToString())("external_task_id", ExternalTaskId); + ACFL_TRACE("event", "NewData")("storage_id", storageId)("range", range.ToString())("external_task_id", ExternalTaskId); } Y_ABORT_UNLESS(BlobsFetchingStarted); { - auto it = BlobsWaiting.find(range); - AFL_VERIFY(it != BlobsWaiting.end()); + auto it = AgentsWaiting.find(storageId); + AFL_VERIFY(it != AgentsWaiting.end())("storage_id", storageId); it->second->OnReadResult(range, data); - BlobsWaiting.erase(it); + if (it->second->IsFinished()) { + AgentsWaiting.erase(it); + } } - if (BlobsWaiting.empty()) { + if (AgentsWaiting.empty()) { OnDataReady(); } } @@ -59,24 +60,15 @@ void ITask::StartBlobsFetching(const THashSet<TBlobRange>& rangesInProgress) { ACFL_TRACE("task_id", ExternalTaskId)("event", "start"); Y_ABORT_UNLESS(!BlobsFetchingStarted); BlobsFetchingStarted = true; - ui64 allRangesSize = 0; - ui64 allRangesCount = 0; - ui64 readRangesCount = 0; + AFL_VERIFY(BlobsWaitingCount == 0); for (auto&& agent : Agents) { - allRangesSize += agent->GetExpectedBlobsSize(); - allRangesCount += agent->GetExpectedBlobsCount(); - for (auto&& b : agent->GetRangesForRead()) { - for (auto&& r : b.second) { - BlobsWaiting.emplace(r, agent); - ++readRangesCount; - } + agent.second->Start(rangesInProgress); + if (!agent.second->IsFinished()) { + AgentsWaiting.emplace(agent.second->GetStorageId(), agent.second); + BlobsWaitingCount += agent.second->GetGroups().size(); } - agent->Start(rangesInProgress); } - ReadRangesCount = readRangesCount; - AllRangesCount = allRangesCount; - AllRangesSize = allRangesSize; - if (BlobsWaiting.empty()) { + if (AgentsWaiting.empty()) { OnDataReady(); } } @@ -91,15 +83,15 @@ void ITask::TReadSubscriber::DoOnAllocationSuccess(const std::shared_ptr<NResour TActorContext::AsActorContext().Register(new NRead::TActor(Task)); } -ITask::ITask(const std::vector<std::shared_ptr<IBlobsReadingAction>>& actions, const TString& taskCustomer, const TString& externalTaskId) - : Agents(actions) - , TaskIdentifier(TaskIdentifierBuilder.Inc()) +ITask::ITask(const TReadActionsCollection& actions, const TString& taskCustomer, const TString& externalTaskId) + : TaskIdentifier(TaskIdentifierBuilder.Inc()) , ExternalTaskId(externalTaskId) , TaskCustomer(taskCustomer) { - AFL_VERIFY(Agents.size()); + Agents = actions; + AFL_VERIFY(!Agents.IsEmpty()); for (auto&& i : Agents) { - AFL_VERIFY(i->GetExpectedBlobsCount()); + AFL_VERIFY(i.second->GetExpectedBlobsCount()); } } @@ -108,11 +100,7 @@ TString ITask::DebugString() const { if (TaskFinishedWithError) { sb << "finished_with_error=" << TaskFinishedWithError << ";"; } - if (BlobErrorsCount) { - sb << "blob_errors=" << BlobErrorsCount << ";"; - } - sb << "data=" << BlobsDataCount << ";" - << "waiting=" << BlobsWaiting.size() << ";" + sb << "agents_waiting=" << AgentsWaiting.size() << ";" << "additional_info=(" << DoDebugString() << ");" ; return sb; @@ -125,22 +113,22 @@ void ITask::OnDataReady() { DoOnDataReady(ResourcesGuard); } -bool ITask::OnError(const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) { +bool ITask::OnError(const TString& storageId, const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) { ACFL_DEBUG("event", "OnError")("status", status.GetStatus())("task", DebugString()); - return DoOnError(range, status); + return DoOnError(storageId, range, status); } ITask::~ITask() { AFL_VERIFY(!NActors::TlsActivationContext || DataIsReadyFlag || TaskFinishedWithError || AbortFlag || !BlobsFetchingStarted); } -THashMap<NKikimr::NOlap::TBlobRange, TString> ITask::ExtractBlobsData() { - AFL_VERIFY(BlobsWaiting.empty()); +TCompositeReadBlobs ITask::ExtractBlobsData() { + AFL_VERIFY(AgentsWaiting.empty()); AFL_VERIFY(!ResultsExtracted); ResultsExtracted = true; - THashMap<TBlobRange, TString> result; + TCompositeReadBlobs result; for (auto&& i : Agents) { - i->ExtractBlobsDataTo(result); + result.Add(i.second->GetStorageId(), i.second->ExtractBlobsData()); } return std::move(result); } diff --git a/ydb/core/tx/columnshard/blobs_reader/task.h b/ydb/core/tx/columnshard/blobs_reader/task.h index 65525b03f434..bc2796e9dda1 100644 --- a/ydb/core/tx/columnshard/blobs_reader/task.h +++ b/ydb/core/tx/columnshard/blobs_reader/task.h @@ -9,47 +9,106 @@ namespace NKikimr::NOlap::NBlobOperations::NRead { +class TCompositeReadBlobs { +private: + THashMap<TString, TActionReadBlobs> BlobsByStorage; +public: + TString DebugString() const { + TStringBuilder sb; + sb << "{"; + for (auto&& i : BlobsByStorage) { + sb << "{storage_id:" << i.first << ";blobs:" << i.second.DebugString() << "};"; + } + sb << "}"; + return sb; + } + + void Merge(TCompositeReadBlobs&& blobs) { + for (auto&& i : blobs.BlobsByStorage) { + BlobsByStorage[i.first].Merge(std::move(i.second)); + } + } + + void Clear() { + BlobsByStorage.clear(); + } + + bool IsEmpty() const { + return BlobsByStorage.empty(); + } + + THashMap<TString, TActionReadBlobs>::iterator begin() { + return BlobsByStorage.begin(); + } + THashMap<TString, TActionReadBlobs>::iterator end() { + return BlobsByStorage.end(); + } + void Add(const TString& storageId, TActionReadBlobs&& data) { + AFL_VERIFY(BlobsByStorage.emplace(storageId, std::move(data)).second); + } + void Add(const TString& storageId, const TBlobRange& blobId, TString&& value) { + BlobsByStorage[storageId].Add(blobId, std::move(value)); + } + TString Extract(const TString& storageId, const TBlobRange& range) { + auto it = BlobsByStorage.find(storageId); + AFL_VERIFY(it != BlobsByStorage.end()); + auto result = it->second.Extract(range); + if (it->second.IsEmpty()) { + BlobsByStorage.erase(it); + } + return result; + } + + ui64 GetTotalBlobsSize() const { + ui64 result = 0; + for (auto&& i : BlobsByStorage) { + result += i.second.GetTotalBlobsSize(); + } + return result; + } +}; + class ITask: public NColumnShard::TMonitoringObjectsCounter<ITask> { private: - THashMap<TBlobRange, std::shared_ptr<IBlobsReadingAction>> BlobsWaiting; - std::vector<std::shared_ptr<IBlobsReadingAction>> Agents; + THashMap<TString, std::shared_ptr<IBlobsReadingAction>> AgentsWaiting; + YDB_READONLY_DEF(TReadActionsCollection, Agents); bool BlobsFetchingStarted = false; bool TaskFinishedWithError = false; bool DataIsReadyFlag = false; const ui64 TaskIdentifier = 0; const TString ExternalTaskId; bool AbortFlag = false; - std::optional<ui64> AllRangesSize; - std::optional<ui64> AllRangesCount; - std::optional<ui64> ReadRangesCount; TString TaskCustomer; std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard> ResourcesGuard; - ui32 BlobErrorsCount = 0; - ui32 BlobsDataCount = 0; + i64 BlobsWaitingCount = 0; bool ResultsExtracted = false; protected: bool IsFetchingStarted() const { return BlobsFetchingStarted; } - THashMap<TBlobRange, TString> ExtractBlobsData(); + TCompositeReadBlobs ExtractBlobsData(); virtual void DoOnDataReady(const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& resourcesGuard) = 0; - virtual bool DoOnError(const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) = 0; + virtual bool DoOnError(const TString& storageId, const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) = 0; void OnDataReady(); - bool OnError(const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status); + bool OnError(const TString& storageId, const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status); virtual TString DoDebugString() const { return ""; } public: + i64 GetWaitingRangesCount() const { + return BlobsWaitingCount; + } + void Abort() { AbortFlag = true; } bool IsFinished() const { - return BlobsWaiting.empty() && BlobsFetchingStarted; + return AgentsWaiting.empty() && BlobsFetchingStarted; } ui64 GetTaskIdentifier() const { @@ -62,43 +121,14 @@ class ITask: public NColumnShard::TMonitoringObjectsCounter<ITask> { TString DebugString() const; - ui64 GetAllRangesSize() const { - Y_ABORT_UNLESS(AllRangesSize); - return *AllRangesSize; - } - - ui64 GetAllRangesCount() const { - Y_ABORT_UNLESS(AllRangesCount); - return *AllRangesCount; - } - - ui64 GetReadRangesCount() const { - Y_ABORT_UNLESS(ReadRangesCount); - return *ReadRangesCount; - } - - ui32 GetWaitingCount() const { - return BlobsWaiting.size(); - } - - THashSet<TBlobRange> GetExpectedRanges() const { - THashSet<TBlobRange> result; - for (auto&& i : Agents) { - i->FillExpectedRanges(result); - } - return result; - } - - const std::vector<std::shared_ptr<IBlobsReadingAction>>& GetAgents() const; - virtual ~ITask(); - ITask(const std::vector<std::shared_ptr<IBlobsReadingAction>>& actions, const TString& taskCustomer, const TString& externalTaskId = ""); + ITask(const TReadActionsCollection& actions, const TString& taskCustomer, const TString& externalTaskId = ""); void StartBlobsFetching(const THashSet<TBlobRange>& rangesInProgress); - bool AddError(const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status); - void AddData(const TBlobRange& range, const TString& data); + bool AddError(const TString& storageId, const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status); + void AddData(const TString& storageId, const TBlobRange& range, const TString& data); class TReadSubscriber: public NResourceBroker::NSubscribe::ITask { private: diff --git a/ydb/core/tx/columnshard/columnshard.cpp b/ydb/core/tx/columnshard/columnshard.cpp index 7af0a0e384ed..a1f93cbe7ac2 100644 --- a/ydb/core/tx/columnshard/columnshard.cpp +++ b/ydb/core/tx/columnshard/columnshard.cpp @@ -3,6 +3,11 @@ #include "hooks/abstract/abstract.h" #include "resource_subscriber/actor.h" #include "engines/writer/buffer/actor.h" +#include "engines/column_engine_logs.h" +#include "export/manager/manager.h" + +#include <ydb/core/tx/tiering/manager.h> +#include <ydb/core/protos/table_stats.pb.h> namespace NKikimr { @@ -19,9 +24,12 @@ void TColumnShard::CleanupActors(const TActorContext& ctx) { ctx.Send(BufferizationWriteActorId, new TEvents::TEvPoisonPill); StoragesManager->Stop(); + ExportsManager->Stop(); + DataLocksManager->Stop(); if (Tiers) { Tiers->Stop(true); } + NYDBTest::TControllers::GetColumnShardController()->OnCleanupActors(TabletID()); } void TColumnShard::BecomeBroken(const TActorContext& ctx) { @@ -36,9 +44,8 @@ void TColumnShard::SwitchToWork(const TActorContext& ctx) { AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("event", "initialize_shard")("step", "SwitchToWork"); for (auto&& i : TablesManager.GetTables()) { - ActivateTiering(i.first, i.second.GetTieringUsage(), true); + ActivateTiering(i.first, i.second.GetTieringUsage()); } - OnTieringModified(); Become(&TThis::StateWork); SignalTabletActive(ctx); @@ -46,8 +53,10 @@ void TColumnShard::SwitchToWork(const TActorContext& ctx) { TryRegisterMediatorTimeCast(); EnqueueProgressTx(ctx); } + CSCounters.OnIndexMetadataLimit(NOlap::IColumnEngine::GetMetadataLimit()); EnqueueBackgroundActivities(); ctx.Send(SelfId(), new TEvPrivate::TEvPeriodicWakeup()); + NYDBTest::TControllers::GetColumnShardController()->OnSwitchToWork(TabletID()); } void TColumnShard::OnActivateExecutor(const TActorContext& ctx) { @@ -57,6 +66,7 @@ void TColumnShard::OnActivateExecutor(const TActorContext& ctx) { Executor()->RegisterExternalTabletCounters(TabletCountersPtr.release()); const auto selfActorId = SelfId(); + StoragesManager->Initialize(); Tiers = std::make_shared<TTiersManager>(TabletID(), SelfId(), [selfActorId](const TActorContext& ctx) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "tiering_new_event"); @@ -70,7 +80,6 @@ void TColumnShard::OnActivateExecutor(const TActorContext& ctx) { AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("event", "initialize_shard")("step", "initialize_tiring_finished"); auto& icb = *AppData(ctx)->Icb; Limits.RegisterControls(icb); - CompactionLimits.RegisterControls(icb); Settings.RegisterControls(icb); ResourceSubscribeActor = ctx.Register(new NOlap::NResourceBroker::NSubscribe::TActor(TabletID(), SelfId())); BufferizationWriteActorId = ctx.Register(new NColumnShard::NWriting::TActor(TabletID(), SelfId())); @@ -139,12 +148,14 @@ void TColumnShard::Handle(TEvPrivate::TEvReadFinished::TPtr& ev, const TActorCon Y_UNUSED(ctx); ui64 readCookie = ev->Get()->RequestCookie; LOG_S_DEBUG("Finished read cookie: " << readCookie << " at tablet " << TabletID()); - InFlightReadsTracker.RemoveInFlightRequest(ev->Get()->RequestCookie); + const NOlap::TVersionedIndex* index = nullptr; + if (HasIndex()) { + index = &GetIndexAs<NOlap::TColumnEngineForLogs>().GetVersionedIndex(); + } + InFlightReadsTracker.RemoveInFlightRequest(ev->Get()->RequestCookie, index); ui64 txId = ev->Get()->TxId; if (ScanTxInFlight.contains(txId)) { - TDuration duration = TAppData::TimeProvider->Now() - ScanTxInFlight[txId]; - IncCounter(COUNTER_SCAN_LATENCY, duration); ScanTxInFlight.erase(txId); SetCounter(COUNTER_SCAN_IN_FLY, ScanTxInFlight.size()); } @@ -214,7 +225,6 @@ void TColumnShard::UpdateIndexCounters() { auto& stats = TablesManager.MutablePrimaryIndex().GetTotalStats(); SetCounter(COUNTER_INDEX_TABLES, stats.Tables); SetCounter(COUNTER_INDEX_COLUMN_RECORDS, stats.ColumnRecords); - SetCounter(COUNTER_INDEX_COLUMN_METADATA_BYTES, stats.ColumnMetadataBytes); SetCounter(COUNTER_INSERTED_PORTIONS, stats.GetInsertedStats().Portions); SetCounter(COUNTER_INSERTED_BLOBS, stats.GetInsertedStats().Blobs); SetCounter(COUNTER_INSERTED_ROWS, stats.GetInsertedStats().Rows); @@ -247,7 +257,7 @@ void TColumnShard::UpdateIndexCounters() { << " s-compacted " << stats.GetSplitCompactedStats().DebugString() << " inactive " << stats.GetInactiveStats().DebugString() << " evicted " << stats.GetEvictedStats().DebugString() - << " column records " << stats.ColumnRecords << " meta bytes " << stats.ColumnMetadataBytes + << " column records " << stats.ColumnRecords << " at tablet " << TabletID()); } @@ -315,14 +325,6 @@ void TColumnShard::ConfigureStats(const NOlap::TColumnEngineStats& indexStats, tabletStats->SetLastUpdateTime(lastIndexUpdate.GetPlanStep()); } -TDuration TColumnShard::GetControllerPeriodicWakeupActivationPeriod() { - return NYDBTest::TControllers::GetColumnShardController()->GetPeriodicWakeupActivationPeriod(TSettings::DefaultPeriodicWakeupActivationPeriod); -} - -TDuration TColumnShard::GetControllerStatsReportInterval() { - return NYDBTest::TControllers::GetColumnShardController()->GetStatsReportInterval(TSettings::DefaultStatsReportInterval); -} - void TColumnShard::FillTxTableStats(::NKikimrTableStats::TTableStats* tableStats) const { tableStats->SetTxRejectedByOverload(TabletCounters->Cumulative()[COUNTER_WRITE_OVERLOAD].Get()); tableStats->SetTxRejectedBySpace(TabletCounters->Cumulative()[COUNTER_OUT_OF_SPACE].Get()); diff --git a/ydb/core/tx/columnshard/columnshard.h b/ydb/core/tx/columnshard/columnshard.h index 5e5e6f10a000..09348a4fd4ab 100644 --- a/ydb/core/tx/columnshard/columnshard.h +++ b/ydb/core/tx/columnshard/columnshard.h @@ -66,6 +66,22 @@ struct TEvColumnShard { EvWriteResult, EvReadResult, + EvDeleteSharedBlobs, + EvDeleteSharedBlobsFinished, + + EvDataSharingProposeFromInitiator, + EvDataSharingConfirmFromInitiator, + EvDataSharingAckFinishFromInitiator, + EvDataSharingStartToSource, + EvDataSharingSendDataFromSource, + EvDataSharingAckDataToSource, + EvDataSharingFinishedFromSource, + EvDataSharingAckFinishToSource, + EvDataSharingCheckStatusFromInitiator, + EvDataSharingCheckStatusResult, + EvApplyLinksModification, + EvApplyLinksModificationFinished, + EvEnd }; @@ -210,8 +226,7 @@ struct TEvColumnShard { } }; - struct TEvWriteResult : public TEventPB<TEvWriteResult, NKikimrTxColumnShard::TEvWriteResult, - TEvColumnShard::EvWriteResult> { + struct TEvWriteResult : public TEventPB<TEvWriteResult, NKikimrTxColumnShard::TEvWriteResult, TEvColumnShard::EvWriteResult> { TEvWriteResult() = default; TEvWriteResult(ui64 origin, const NEvWrite::TWriteMeta& writeMeta, ui32 status) @@ -235,6 +250,7 @@ struct TEvColumnShard { }; using TEvScan = TEvDataShard::TEvKqpScan; + }; inline auto& Proto(TEvColumnShard::TEvProposeTransaction* ev) { diff --git a/ydb/core/tx/columnshard/columnshard__init.cpp b/ydb/core/tx/columnshard/columnshard__init.cpp index 3e11ed9e9217..c2304240381a 100644 --- a/ydb/core/tx/columnshard/columnshard__init.cpp +++ b/ydb/core/tx/columnshard/columnshard__init.cpp @@ -2,7 +2,10 @@ #include "columnshard_ttl.h" #include "columnshard_private_events.h" #include "columnshard_schema.h" +#include "blobs_action/storages_manager/manager.h" #include "hooks/abstract/abstract.h" +#include "engines/column_engine_logs.h" +#include "export/manager/manager.h" #include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> #include <ydb/core/tablet/tablet_exception.h> @@ -60,16 +63,17 @@ bool TTxInit::Precharge(TTransactionContext& txc) { ready = ready & Schema::Precharge<Schema::IndexColumns>(db, txc.DB.GetScheme()); ready = ready & Schema::Precharge<Schema::IndexCounters>(db, txc.DB.GetScheme()); - ready = ready && Schema::GetSpecialValue(db, Schema::EValueIds::CurrentSchemeShardId, Self->CurrentSchemeShardId); - ready = ready && Schema::GetSpecialValue(db, Schema::EValueIds::LastSchemaSeqNoGeneration, Self->LastSchemaSeqNo.Generation); - ready = ready && Schema::GetSpecialValue(db, Schema::EValueIds::LastSchemaSeqNoRound, Self->LastSchemaSeqNo.Round); + ready = ready && Schema::GetSpecialValueOpt(db, Schema::EValueIds::CurrentSchemeShardId, Self->CurrentSchemeShardId); + ready = ready && Schema::GetSpecialValueOpt(db, Schema::EValueIds::LastSchemaSeqNoGeneration, Self->LastSchemaSeqNo.Generation); + ready = ready && Schema::GetSpecialValueOpt(db, Schema::EValueIds::LastSchemaSeqNoRound, Self->LastSchemaSeqNo.Round); ready = ready && Schema::GetSpecialProtoValue(db, Schema::EValueIds::ProcessingParams, Self->ProcessingParams); - ready = ready && Schema::GetSpecialValue(db, Schema::EValueIds::LastWriteId, Self->LastWriteId); - ready = ready && Schema::GetSpecialValue(db, Schema::EValueIds::LastPlannedStep, Self->LastPlannedStep); - ready = ready && Schema::GetSpecialValue(db, Schema::EValueIds::LastPlannedTxId, Self->LastPlannedTxId); - ready = ready && Schema::GetSpecialValue(db, Schema::EValueIds::LastExportNumber, Self->LastExportNo); - ready = ready && Schema::GetSpecialValue(db, Schema::EValueIds::OwnerPathId, Self->OwnerPathId); - ready = ready && Schema::GetSpecialValue(db, Schema::EValueIds::OwnerPath, Self->OwnerPath); + ready = ready && Schema::GetSpecialValueOpt(db, Schema::EValueIds::LastWriteId, Self->LastWriteId); + ready = ready && Schema::GetSpecialValueOpt(db, Schema::EValueIds::LastPlannedStep, Self->LastPlannedStep); + ready = ready && Schema::GetSpecialValueOpt(db, Schema::EValueIds::LastPlannedTxId, Self->LastPlannedTxId); + ready = ready && Schema::GetSpecialValueOpt(db, Schema::EValueIds::LastExportNumber, Self->LastExportNo); + ready = ready && Schema::GetSpecialValueOpt(db, Schema::EValueIds::OwnerPathId, Self->OwnerPathId); + ready = ready && Schema::GetSpecialValueOpt(db, Schema::EValueIds::OwnerPath, Self->OwnerPath); + if (!ready) { return false; @@ -86,53 +90,53 @@ bool TTxInit::ReadEverything(TTransactionContext& txc, const TActorContext& ctx) TBlobGroupSelector dsGroupSelector(Self->Info()); NOlap::TDbWrapper dbTable(txc.DB, &dsGroupSelector); { - ACFL_INFO("step", "TInsertTable::Load_Start"); + ACFL_DEBUG("step", "TInsertTable::Load_Start"); TMemoryProfileGuard g("TTxInit/InsertTable"); auto localInsertTable = std::make_unique<NOlap::TInsertTable>(); if (!localInsertTable->Load(dbTable, TAppData::TimeProvider->Now())) { ACFL_ERROR("step", "TInsertTable::Load_Fails"); return false; } - ACFL_INFO("step", "TInsertTable::Load_Finish"); + ACFL_DEBUG("step", "TInsertTable::Load_Finish"); Self->InsertTable.swap(localInsertTable); } { - ACFL_INFO("step", "TTxController::Load_Start"); + ACFL_DEBUG("step", "TTxController::Load_Start"); TMemoryProfileGuard g("TTxInit/TTxController"); auto localTxController = std::make_unique<TTxController>(*Self); if (!localTxController->Load(txc)) { ACFL_ERROR("step", "TTxController::Load_Fails"); return false; } - ACFL_INFO("step", "TTxController::Load_Finish"); + ACFL_DEBUG("step", "TTxController::Load_Finish"); Self->ProgressTxController.swap(localTxController); } { - ACFL_INFO("step", "TOperationsManager::Load_Start"); + ACFL_DEBUG("step", "TOperationsManager::Load_Start"); TMemoryProfileGuard g("TTxInit/TOperationsManager"); auto localOperationsManager = std::make_unique<TOperationsManager>(); if (!localOperationsManager->Load(txc)) { ACFL_ERROR("step", "TOperationsManager::Load_Fails"); return false; } - ACFL_INFO("step", "TOperationsManager::Load_Finish"); + ACFL_DEBUG("step", "TOperationsManager::Load_Finish"); Self->OperationsManager.swap(localOperationsManager); } { - TBlobManagerDb blobManagerDb(txc.DB); - TMemoryProfileGuard g("TTxInit/StoragesManager"); - for (auto&& i : Self->StoragesManager->GetStorages()) { - if (!i.second->Load(blobManagerDb)) { - ACFL_ERROR("event", "storages manager load")("storage", i.first); - return false; - } + ACFL_DEBUG("step", "TStoragesManager::Load_Start"); + AFL_VERIFY(Self->StoragesManager); + TMemoryProfileGuard g("TTxInit/NDataSharing::TStoragesManager"); + if (!Self->StoragesManager->LoadIdempotency(txc.DB)) { + return false; } + ACFL_DEBUG("step", "TStoragesManager::Load_Finish"); } + { - ACFL_INFO("step", "TTablesManager::Load_Start"); + ACFL_DEBUG("step", "TTablesManager::Load_Start"); TTablesManager tManagerLocal(Self->StoragesManager, Self->TabletID()); { TMemoryProfileGuard g("TTxInit/TTablesManager"); @@ -153,7 +157,7 @@ bool TTxInit::ReadEverything(TTransactionContext& txc, const TActorContext& ctx) Self->SetCounter(COUNTER_TABLES, Self->TablesManager.GetTables().size()); Self->SetCounter(COUNTER_TABLE_PRESETS, Self->TablesManager.GetSchemaPresets().size()); Self->SetCounter(COUNTER_TABLE_TTLS, Self->TablesManager.GetTtl().PathsCount()); - ACFL_INFO("step", "TTablesManager::Load_Finish"); + ACFL_DEBUG("step", "TTablesManager::Load_Finish"); } { @@ -178,6 +182,24 @@ bool TTxInit::ReadEverything(TTransactionContext& txc, const TActorContext& ctx) } } + { + TMemoryProfileGuard g("TTxInit/NDataSharing::TExportsManager"); + auto local = std::make_shared<NOlap::NExport::TExportsManager>(); + if (!local->Load(txc.DB)) { + return false; + } + Self->ExportsManager = local; + } + + { + TMemoryProfileGuard g("TTxInit/NDataSharing::TSessionsManager"); + auto local = std::make_shared<NOlap::NDataSharing::TSessionsManager>(); + if (!local->Load(txc.DB, Self->TablesManager.GetPrimaryIndexAsOptional<NOlap::TColumnEngineForLogs>())) { + return false; + } + Self->SharingSessionsManager = local; + } + Self->UpdateInsertTableCounters(); Self->UpdateIndexCounters(); Self->UpdateResourceMetrics(ctx, {}); @@ -207,6 +229,7 @@ bool TTxInit::Execute(TTransactionContext& txc, const TActorContext& ctx) { void TTxInit::Complete(const TActorContext& ctx) { Self->ProgressTxController->OnTabletInit(); Self->SwitchToWork(ctx); + NYDBTest::TControllers::GetColumnShardController()->OnTabletInitCompleted(*Self); } class TTxUpdateSchema : public TTransactionBase<TColumnShard> { @@ -231,8 +254,11 @@ bool TTxUpdateSchema::Execute(TTransactionContext& txc, const TActorContext&) { if (result.IsSuccess()) { NormalizerTasks = result.DetachResult(); if (!NormalizerTasks.empty()) { + ACFL_WARN("normalizer_controller", Self->NormalizerController.DebugString())("tasks_count", NormalizerTasks.size()); break; } + NIceDb::TNiceDb db(txc.DB); + Self->NormalizerController.UpdateControllerState(db); Self->NormalizerController.SwitchNormalizer(); } else { Self->NormalizerController.GetCounters().OnNormalizerFails(); @@ -253,7 +279,7 @@ void TTxUpdateSchema::Complete(const TActorContext& ctx) { } NOlap::TNormalizationContext nCtx; - nCtx.SetColumnshardActor(Self->SelfId()); + nCtx.SetShardActor(Self->SelfId()); nCtx.SetResourceSubscribeActor(Self->ResourceSubscribeActor); for (auto&& task : NormalizerTasks) { @@ -280,14 +306,24 @@ class TTxApplyNormalizer : public TTransactionBase<TColumnShard> { bool TTxApplyNormalizer::Execute(TTransactionContext& txc, const TActorContext&) { NActors::TLogContextGuard gLogging = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", Self->TabletID())("event", "initialize_shard"); AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("step", "TTxApplyNormalizer.Execute")("details", Self->NormalizerController.DebugString()); - return Changes->Apply(txc, Self->NormalizerController); + if (!Changes->ApplyOnExecute(txc, Self->NormalizerController)) { + return false; + } + + if (Self->NormalizerController.GetNormalizer()->GetActiveTasksCount() == 1) { + NIceDb::TNiceDb db(txc.DB); + Self->NormalizerController.UpdateControllerState(db); + } + return true; } void TTxApplyNormalizer::Complete(const TActorContext& ctx) { AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("step", "TTxApplyNormalizer.Complete")("tablet_id", Self->TabletID())("event", "initialize_shard"); AFL_VERIFY(!Self->NormalizerController.IsNormalizationFinished())("details", Self->NormalizerController.DebugString()); + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("tablet_id", Self->TabletID())("event", "apply_normalizer_changes")("details", Self->NormalizerController.DebugString())("size", Changes->GetSize()); + Changes->ApplyOnComplete(Self->NormalizerController); Self->NormalizerController.GetNormalizer()->OnResultReady(); - if (Self->NormalizerController.GetNormalizer()->WaitResult()) { + if (Self->NormalizerController.GetNormalizer()->HasActiveTasks()) { return; } @@ -328,6 +364,9 @@ bool TTxInitSchema::Execute(TTransactionContext& txc, const TActorContext&) { } } + // NIceDb::TNiceDb db(txc.DB); + // Self->NormalizerController.InitControllerState(db); + // Enable compression for the SmallBlobs table const auto* smallBlobsDefaultColumnFamily = txc.DB.GetScheme().DefaultFamilyFor(Schema::SmallBlobs::TableId); if (!smallBlobsDefaultColumnFamily || @@ -352,7 +391,7 @@ bool TTxInitSchema::Execute(TTransactionContext& txc, const TActorContext&) { } void TTxInitSchema::Complete(const TActorContext& ctx) { - LOG_S_DEBUG("TxInitSchema.Complete at tablet " << Self->TabletID();) + LOG_S_DEBUG("TxInitSchema.Complete at tablet " << Self->TabletID();); Self->Execute(new TTxUpdateSchema(Self), ctx); } diff --git a/ydb/core/tx/columnshard/columnshard__progress_tx.cpp b/ydb/core/tx/columnshard/columnshard__progress_tx.cpp index 42597d49275d..35d867caf4e4 100644 --- a/ydb/core/tx/columnshard/columnshard__progress_tx.cpp +++ b/ydb/core/tx/columnshard/columnshard__progress_tx.cpp @@ -18,6 +18,7 @@ class TColumnShard::TTxProgressTx : public TTransactionBase<TColumnShard> { bool Execute(TTransactionContext& txc, const TActorContext& ctx) override { NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", Self->TabletID())("tx_state", "execute"); Y_ABORT_UNLESS(Self->ProgressTxInFlight); + Self->TabletCounters->Simple()[COUNTER_TX_COMPLETE_LAG].Set(Self->GetTxCompleteLag().MilliSeconds()); size_t removedCount = Self->ProgressTxController->CleanExpiredTxs(txc); if (removedCount > 0) { @@ -29,6 +30,7 @@ class TColumnShard::TTxProgressTx : public TTransactionBase<TColumnShard> { // Process a single transaction at the front of the queue auto plannedItem = Self->ProgressTxController->StartPlannedTx(); if (!!plannedItem) { + PlannedQueueItem.emplace(plannedItem->PlanStep, plannedItem->TxId); ui64 step = plannedItem->PlanStep; ui64 txId = plannedItem->TxId; @@ -50,12 +52,16 @@ class TColumnShard::TTxProgressTx : public TTransactionBase<TColumnShard> { if (TxOperator) { TxOperator->Complete(*Self, ctx); } + if (PlannedQueueItem) { + Self->GetProgressTxController().CompleteRunningTx(*PlannedQueueItem); + } Self->SetupIndexation(); } private: TTxController::ITransactionOperatior::TPtr TxOperator; const ui32 TabletTxNo; + std::optional<TTxController::TPlanQueueItem> PlannedQueueItem; }; void TColumnShard::EnqueueProgressTx(const TActorContext& ctx) { diff --git a/ydb/core/tx/columnshard/columnshard__propose_transaction.cpp b/ydb/core/tx/columnshard/columnshard__propose_transaction.cpp index 4f04f60ff8d1..3688e74126ed 100644 --- a/ydb/core/tx/columnshard/columnshard__propose_transaction.cpp +++ b/ydb/core/tx/columnshard/columnshard__propose_transaction.cpp @@ -3,17 +3,17 @@ #include "columnshard_schema.h" #include <ydb/library/yql/dq/actors/compute/dq_compute_actor.h> #include <ydb/library/yql/dq/actors/dq.h> +#include <ydb/core/tx/columnshard/transactions/propose_transaction_base.h> namespace NKikimr::NColumnShard { using namespace NTabletFlatExecutor; -class TTxProposeTransaction : public NTabletFlatExecutor::TTransactionBase<TColumnShard> { +class TTxProposeTransaction : public TProposeTransactionBase { public: TTxProposeTransaction(TColumnShard* self, TEvColumnShard::TEvProposeTransaction::TPtr& ev) - : TBase(self) + : TProposeTransactionBase(self) , Ev(ev) - , TabletTxNo(++Self->TabletTxCounter) {} bool Execute(TTransactionContext& txc, const TActorContext& ctx) override; @@ -22,25 +22,16 @@ class TTxProposeTransaction : public NTabletFlatExecutor::TTransactionBase<TColu private: TEvColumnShard::TEvProposeTransaction::TPtr Ev; - const ui32 TabletTxNo; std::unique_ptr<TEvColumnShard::TEvProposeTransactionResult> Result; - TStringBuilder TxPrefix() const { - return TStringBuilder() << "TxProposeTransaction[" << ToString(TabletTxNo) << "] "; - } - - TString TxSuffix() const { - return TStringBuilder() << " at tablet " << Self->TabletID(); - } - - void ConstructResult(TTxController::TProposeResult& proposeResult, const TTxController::TBasicTxInfo& txInfo); + void OnProposeResult(TTxController::TProposeResult& proposeResult, const TTxController::TTxInfo& txInfo) override; + void OnProposeError(TTxController::TProposeResult& proposeResult, const TTxController::TBasicTxInfo& txInfo) override; TTxController::TProposeResult ProposeTtlDeprecated(const TString& txBody); }; bool TTxProposeTransaction::Execute(TTransactionContext& txc, const TActorContext& /*ctx*/) { Y_ABORT_UNLESS(Ev); - LOG_S_DEBUG(TxPrefix() << "execute" << TxSuffix()); txc.DB.NoMoreReadsForTx(); NIceDb::TNiceDb db(txc.DB); @@ -48,9 +39,9 @@ bool TTxProposeTransaction::Execute(TTransactionContext& txc, const TActorContex Self->IncCounter(COUNTER_PREPARE_REQUEST); auto& record = Proto(Ev->Get()); - auto txKind = record.GetTxKind(); - ui64 txId = record.GetTxId(); - auto& txBody = record.GetTxBody(); + const auto txKind = record.GetTxKind(); + const ui64 txId = record.GetTxId(); + const auto& txBody = record.GetTxBody(); if (txKind == NKikimrTxColumnShard::TX_KIND_TTL) { auto proposeResult = ProposeTtlDeprecated(txBody); @@ -71,39 +62,7 @@ bool TTxProposeTransaction::Execute(TTransactionContext& txc, const TActorContex Y_ABORT_UNLESS(Self->CurrentSchemeShardId == record.GetSchemeShardId()); } } - - TTxController::TBasicTxInfo fakeTxInfo; - fakeTxInfo.TxId = txId; - fakeTxInfo.TxKind = txKind; - - auto txOperator = TTxController::ITransactionOperatior::TFactory::MakeHolder(txKind, fakeTxInfo); - if (!txOperator || !txOperator->Parse(txBody)) { - TTxController::TProposeResult proposeResult(NKikimrTxColumnShard::EResultStatus::ERROR, TStringBuilder() << "Error processing commit TxId# " << txId - << (txOperator ? ". Parsing error " : ". Unknown operator for txKind")); - ConstructResult(proposeResult, fakeTxInfo); - return true; - } - - auto txInfoPtr = Self->ProgressTxController->GetTxInfo(txId); - if (!!txInfoPtr) { - if (txInfoPtr->Source != Ev->Get()->GetSource() || txInfoPtr->Cookie != Ev->Cookie) { - TTxController::TProposeResult proposeResult(NKikimrTxColumnShard::EResultStatus::ERROR, TStringBuilder() << "Another commit TxId# " << txId << " has already been proposed"); - ConstructResult(proposeResult, fakeTxInfo); - } - TTxController::TProposeResult proposeResult; - ConstructResult(proposeResult, *txInfoPtr); - } else { - auto proposeResult = txOperator->Propose(*Self, txc, false); - if (!!proposeResult) { - const auto& txInfo = txOperator->TxWithDeadline() ? Self->ProgressTxController->RegisterTxWithDeadline(txId, txKind, txBody, Ev->Get()->GetSource(), Ev->Cookie, txc) - : Self->ProgressTxController->RegisterTx(txId, txKind, txBody, Ev->Get()->GetSource(), Ev->Cookie, txc); - - ConstructResult(proposeResult, txInfo); - } else { - ConstructResult(proposeResult, fakeTxInfo); - } - } - AFL_VERIFY(!!Result); + ProposeTransaction(TTxController::TBasicTxInfo(txKind, txId), txBody, Ev->Get()->GetSource(), Ev->Cookie, txc); return true; } @@ -143,32 +102,33 @@ TTxController::TProposeResult TTxProposeTransaction::ProposeTtlDeprecated(const const TInstant now = TlsActivationContext ? AppData()->TimeProvider->Now() : TInstant::Now(); for (ui64 pathId : ttlBody.GetPathIds()) { NOlap::TTiering tiering; - tiering.Ttl = NOlap::TTierInfo::MakeTtl(now - unixTime, columnName); + AFL_VERIFY(tiering.Add(NOlap::TTierInfo::MakeTtl(now - unixTime, columnName))); pathTtls.emplace(pathId, std::move(tiering)); } } - if (!Self->SetupTtl(pathTtls, true)) { + if (!Self->SetupTtl(pathTtls)) { return TTxController::TProposeResult(NKikimrTxColumnShard::EResultStatus::SCHEMA_ERROR, "TTL not started"); } + Self->TablesManager.MutablePrimaryIndex().OnTieringModified(Self->Tiers, Self->TablesManager.GetTtl(), {}); return TTxController::TProposeResult(); } -void TTxProposeTransaction::ConstructResult(TTxController::TProposeResult& proposeResult, const TTxController::TBasicTxInfo& txInfo) { +void TTxProposeTransaction::OnProposeError(TTxController::TProposeResult& proposeResult, const TTxController::TBasicTxInfo& txInfo) { Result = std::make_unique<TEvColumnShard::TEvProposeTransactionResult>(Self->TabletID(), txInfo.TxKind, txInfo.TxId, proposeResult.GetStatus(), proposeResult.GetStatusMessage()); - if (proposeResult.GetStatus() == NKikimrTxColumnShard::EResultStatus::PREPARED) { - Self->IncCounter(COUNTER_PREPARE_SUCCESS); - Result->Record.SetMinStep(txInfo.MinStep); - Result->Record.SetMaxStep(txInfo.MaxStep); - if (Self->ProcessingParams) { - Result->Record.MutableDomainCoordinators()->CopyFrom(Self->ProcessingParams->GetCoordinators()); - } - } else if (proposeResult.GetStatus() == NKikimrTxColumnShard::EResultStatus::SUCCESS) { - Self->IncCounter(COUNTER_PREPARE_SUCCESS); - } else { - Self->IncCounter(COUNTER_PREPARE_ERROR); - LOG_S_INFO(TxPrefix() << "error txId " << txInfo.TxId << " " << proposeResult.GetStatusMessage() << TxSuffix()); + Self->IncCounter(COUNTER_PREPARE_ERROR); + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("message", proposeResult.GetStatusMessage())("tablet_id", Self->TabletID())("tx_id", txInfo.TxId); +} + +void TTxProposeTransaction::OnProposeResult(TTxController::TProposeResult& proposeResult, const TTxController::TTxInfo& txInfo) { + AFL_VERIFY(proposeResult.GetStatus() == NKikimrTxColumnShard::EResultStatus::PREPARED)("tx_id", txInfo.TxId)("details", proposeResult.DebugString()); + Result = std::make_unique<TEvColumnShard::TEvProposeTransactionResult>(Self->TabletID(), txInfo.TxKind, txInfo.TxId, proposeResult.GetStatus(), proposeResult.GetStatusMessage()); + Result->Record.SetMinStep(txInfo.MinStep); + Result->Record.SetMaxStep(txInfo.MaxStep); + if (Self->ProcessingParams) { + Result->Record.MutableDomainCoordinators()->CopyFrom(Self->ProcessingParams->GetCoordinators()); } + Self->IncCounter(COUNTER_PREPARE_SUCCESS); } void TTxProposeTransaction::Complete(const TActorContext& ctx) { @@ -180,12 +140,6 @@ void TTxProposeTransaction::Complete(const TActorContext& ctx) { void TColumnShard::Handle(TEvColumnShard::TEvProposeTransaction::TPtr& ev, const TActorContext& ctx) { - auto& record = Proto(ev->Get()); - auto txKind = record.GetTxKind(); - ui64 txId = record.GetTxId(); - LOG_S_DEBUG("ProposeTransaction " << NKikimrTxColumnShard::ETransactionKind_Name(txKind) - << " txId " << txId << " at tablet " << TabletID()); - Execute(new TTxProposeTransaction(this, ev), ctx); } diff --git a/ydb/core/tx/columnshard/columnshard__read_base.h b/ydb/core/tx/columnshard/columnshard__read_base.h deleted file mode 100644 index 15347cba87d0..000000000000 --- a/ydb/core/tx/columnshard/columnshard__read_base.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once -#include "engines/reader/description.h" -#include <ydb/core/tx/columnshard/columnshard_impl.h> - -namespace NKikimr::NColumnShard { - -/// Read portion of data in OLAP transaction -class TTxReadBase : public TTransactionBase<TColumnShard> { -protected: - explicit TTxReadBase(TColumnShard* self) - : TBase(self) - {} - - std::shared_ptr<NOlap::TReadMetadata> PrepareReadMetadata( - const NOlap::TReadDescription& readDescription, - const std::unique_ptr<NOlap::TInsertTable>& insertTable, - const std::unique_ptr<NOlap::IColumnEngine>& index, - TString& error, const bool isReverse) const; - -protected: - bool ParseProgram( - NKikimrSchemeOp::EOlapProgramType programType, - TString serializedProgram, - NOlap::TReadDescription& read, - const NOlap::IColumnResolver& columnResolver - ); - -protected: - TString ErrorDescription; -}; - -} diff --git a/ydb/core/tx/columnshard/columnshard__scan.cpp b/ydb/core/tx/columnshard/columnshard__scan.cpp index b881f6962cfa..9e00756d2ede 100644 --- a/ydb/core/tx/columnshard/columnshard__scan.cpp +++ b/ydb/core/tx/columnshard/columnshard__scan.cpp @@ -1,877 +1,10 @@ -#include "blobs_reader/actor.h" -#include "blobs_reader/events.h" -#include "blobs_reader/read_coordinator.h" -#include "engines/reader/read_context.h" -#include "resource_subscriber/actor.h" - -#include <ydb/core/actorlib_impl/long_timer.h> -#include <ydb/core/formats/arrow/converter.h> -#include <ydb/core/kqp/compute_actor/kqp_compute_events.h> -#include <ydb/core/tablet_flat/flat_row_celled.h> -#include <ydb/core/tx/columnshard/blob_cache.h> -#include <ydb/core/tx/columnshard/columnshard__index_scan.h> -#include <ydb/core/tx/columnshard/columnshard__read_base.h> -#include <ydb/core/tx/columnshard/columnshard__scan.h> -#include <ydb/core/tx/columnshard/columnshard__stats_scan.h> -#include <ydb/core/tx/columnshard/columnshard_impl.h> -#include <ydb/core/tx/columnshard/columnshard_private_events.h> -#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> -#include <ydb/core/tx/conveyor/usage/events.h> -#include <ydb/core/tx/conveyor/usage/service.h> -#include <ydb/core/tx/tracing/usage/tracing.h> - -#include <util/generic/noncopyable.h> -#include <ydb/library/chunks_limiter/chunks_limiter.h> -#include <ydb/library/yql/core/issue/yql_issue.h> -#include <ydb/library/yql/dq/actors/compute/dq_compute_actor.h> -#include <ydb/library/yql/public/issue/yql_issue_message.h> -#include <ydb/services/metadata/request/common.h> - -#include <tuple> +#include "columnshard__scan.h" +#include "columnshard.h" +#include "columnshard_impl.h" +#include "engines/reader/transaction/tx_scan.h" namespace NKikimr::NColumnShard { -using namespace NKqp; -using NBlobCache::TBlobRange; - -class TTxScan: public TTxReadBase { -public: - using TReadMetadataPtr = NOlap::TReadMetadataBase::TConstPtr; - - TTxScan(TColumnShard* self, TEvColumnShard::TEvScan::TPtr& ev) - : TTxReadBase(self) - , Ev(ev) { - } - - bool Execute(TTransactionContext& txc, const TActorContext& ctx) override; - void Complete(const TActorContext& ctx) override; - TTxType GetTxType() const override { return TXTYPE_START_SCAN; } - -private: - std::shared_ptr<NOlap::TReadMetadataBase> CreateReadMetadata(NOlap::TReadDescription& read, - bool isIndexStats, bool isReverse, ui64 limit); - -private: - TEvColumnShard::TEvScan::TPtr Ev; - std::vector<TReadMetadataPtr> ReadMetadataRanges; -}; - - -constexpr i64 DEFAULT_READ_AHEAD_BYTES = (i64)2 * 1024 * 1024 * 1024; -constexpr TDuration SCAN_HARD_TIMEOUT = TDuration::Minutes(10); -constexpr TDuration SCAN_HARD_TIMEOUT_GAP = TDuration::Seconds(5); - -class TColumnShardScan : public TActorBootstrapped<TColumnShardScan>, NArrow::IRowWriter { -private: - std::shared_ptr<NOlap::TActorBasedMemoryAccesor> MemoryAccessor; - TActorId ResourceSubscribeActorId; - TActorId ReadCoordinatorActorId; - const std::shared_ptr<NOlap::IStoragesManager> StoragesManager; -public: - static constexpr auto ActorActivityType() { - return NKikimrServices::TActivity::KQP_OLAP_SCAN; - } - -public: - virtual void PassAway() override { - Send(ResourceSubscribeActorId, new TEvents::TEvPoisonPill); - Send(ReadCoordinatorActorId, new TEvents::TEvPoisonPill); - IActor::PassAway(); - } - - TColumnShardScan(const TActorId& columnShardActorId, const TActorId& scanComputeActorId, - const std::shared_ptr<NOlap::IStoragesManager>& storagesManager, const NOlap::TComputeShardingPolicy& computeShardingPolicy, - ui32 scanId, ui64 txId, ui32 scanGen, ui64 requestCookie, - ui64 tabletId, TDuration timeout, std::vector<TTxScan::TReadMetadataPtr>&& readMetadataList, - NKikimrDataEvents::EDataFormat dataFormat, const TScanCounters& scanCountersPool) - : StoragesManager(storagesManager) - , ColumnShardActorId(columnShardActorId) - , ScanComputeActorId(scanComputeActorId) - , BlobCacheActorId(NBlobCache::MakeBlobCacheServiceId()) - , ScanId(scanId) - , TxId(txId) - , ScanGen(scanGen) - , RequestCookie(requestCookie) - , DataFormat(dataFormat) - , TabletId(tabletId) - , ReadMetadataRanges(std::move(readMetadataList)) - , ReadMetadataIndex(0) - , Deadline(TInstant::Now() + (timeout ? timeout + SCAN_HARD_TIMEOUT_GAP : SCAN_HARD_TIMEOUT)) - , ScanCountersPool(scanCountersPool) - , Stats(NTracing::TTraceClient::GetLocalClient("SHARD", ::ToString(TabletId)/*, "SCAN_TXID:" + ::ToString(TxId)*/)) - , ComputeShardingPolicy(computeShardingPolicy) - { - AFL_VERIFY(ReadMetadataRanges.size() == 1); - KeyYqlSchema = ReadMetadataRanges[ReadMetadataIndex]->GetKeyYqlSchema(); - } - - void Bootstrap(const TActorContext& ctx) { - TLogContextGuard gLogging(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD_SCAN) - ("SelfId", SelfId())("TabletId", TabletId)("ScanId", ScanId)("TxId", TxId)("ScanGen", ScanGen) - ); - auto g = Stats->MakeGuard("bootstrap"); - ScanActorId = ctx.SelfID; - Schedule(Deadline, new TEvents::TEvWakeup); - - Y_ABORT_UNLESS(!ScanIterator); - MemoryAccessor = std::make_shared<NOlap::TActorBasedMemoryAccesor>(SelfId(), "CSScan/Result"); - ResourceSubscribeActorId = ctx.Register(new NOlap::NResourceBroker::NSubscribe::TActor(TabletId, SelfId())); - ReadCoordinatorActorId = ctx.Register(new NOlap::NBlobOperations::NRead::TReadCoordinatorActor(TabletId, SelfId())); - - std::shared_ptr<NOlap::TReadContext> context = std::make_shared<NOlap::TReadContext>(StoragesManager, ScanCountersPool, - ReadMetadataRanges[ReadMetadataIndex], SelfId(), ResourceSubscribeActorId, ReadCoordinatorActorId, ComputeShardingPolicy); - ScanIterator = ReadMetadataRanges[ReadMetadataIndex]->StartScan(context); - - // propagate self actor id // TODO: FlagSubscribeOnSession ? - Send(ScanComputeActorId, new TEvKqpCompute::TEvScanInitActor(ScanId, ctx.SelfID, ScanGen, TabletId), IEventHandle::FlagTrackDelivery); - - Become(&TColumnShardScan::StateScan); - ContinueProcessing(); - } - -private: - STATEFN(StateScan) { - auto g = Stats->MakeGuard("processing"); - TLogContextGuard gLogging(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD_SCAN) - ("SelfId", SelfId())("TabletId", TabletId)("ScanId", ScanId)("TxId", TxId)("ScanGen", ScanGen) - ); - switch (ev->GetTypeRewrite()) { - hFunc(TEvKqpCompute::TEvScanDataAck, HandleScan); - hFunc(TEvKqp::TEvAbortExecution, HandleScan); - hFunc(TEvents::TEvUndelivered, HandleScan); - hFunc(TEvents::TEvWakeup, HandleScan); - hFunc(NConveyor::TEvExecution::TEvTaskProcessedResult, HandleScan); - default: - AFL_VERIFY(false)("unexpected_event", ev->GetTypeName()); - } - } - - bool ReadNextBlob() { - while (ScanIterator->ReadNextInterval()) { - } - return true; - } - - void HandleScan(NConveyor::TEvExecution::TEvTaskProcessedResult::TPtr& ev) { - --InFlightReads; - auto g = Stats->MakeGuard("task_result"); - if (ev->Get()->GetErrorMessage()) { - ACFL_ERROR("event", "TEvTaskProcessedResult")("error", ev->Get()->GetErrorMessage()); - SendScanError("task_error:" + ev->Get()->GetErrorMessage()); - Finish(); - } else { - ACFL_DEBUG("event", "TEvTaskProcessedResult"); - auto t = static_pointer_cast<IDataTasksProcessor::ITask>(ev->Get()->GetResult()); - Y_DEBUG_ABORT_UNLESS(dynamic_pointer_cast<IDataTasksProcessor::ITask>(ev->Get()->GetResult())); - if (!ScanIterator->Finished()) { - ScanIterator->Apply(t); - } - } - ContinueProcessing(); - } - - void HandleScan(TEvKqpCompute::TEvScanDataAck::TPtr& ev) { - auto g = Stats->MakeGuard("ack"); - Y_ABORT_UNLESS(!AckReceivedInstant); - AckReceivedInstant = TMonotonic::Now(); - - Y_ABORT_UNLESS(ev->Get()->Generation == ScanGen); - - ChunksLimiter = TChunksLimiter(ev->Get()->FreeSpace, ev->Get()->MaxChunksCount); - Y_ABORT_UNLESS(ev->Get()->MaxChunksCount == 1); - ACFL_DEBUG("event", "TEvScanDataAck")("info", ChunksLimiter.DebugString()); - if (ScanIterator) { - if (!!ScanIterator->GetAvailableResultsCount() && !*ScanIterator->GetAvailableResultsCount()) { - ScanCountersPool.OnEmptyAck(); - } else { - ScanCountersPool.OnNotEmptyAck(); - } - } - ContinueProcessing(); - } - - // Returns true if it was able to produce new batch - bool ProduceResults() noexcept { - auto g = Stats->MakeGuard("ProduceResults"); - TLogContextGuard gLogging(NActors::TLogContextBuilder::Build()("method", "produce result")); - - ACFL_DEBUG("stage", "start")("iterator", ScanIterator->DebugString()); - Y_ABORT_UNLESS(!Finished); - Y_ABORT_UNLESS(ScanIterator); - - if (ScanIterator->Finished()) { - ACFL_DEBUG("stage", "scan iterator is finished")("iterator", ScanIterator->DebugString()); - return false; - } - - if (!ChunksLimiter.HasMore()) { - ScanIterator->PrepareResults(); - ACFL_DEBUG("stage", "bytes limit exhausted")("limit", ChunksLimiter.DebugString()); - return false; - } - - auto resultOpt = ScanIterator->GetBatch(); - if (!resultOpt) { - ACFL_DEBUG("stage", "no data is ready yet")("iterator", ScanIterator->DebugString()); - return false; - } - auto& result = *resultOpt; - if (!result.ErrorString.empty()) { - ACFL_ERROR("stage", "got error")("iterator", ScanIterator->DebugString())("message", result.ErrorString); - SendAbortExecution(TString(result.ErrorString.data(), result.ErrorString.size())); - - ScanIterator.reset(); - Finish(); - return false; - } - - if (!result.GetRecordsCount()) { - ACFL_DEBUG("stage", "got empty batch")("iterator", ScanIterator->DebugString()); - return true; - } - - auto& shardedBatch = result.GetShardedBatch(); - auto batch = shardedBatch.GetRecordBatch(); - int numRows = batch->num_rows(); - int numColumns = batch->num_columns(); - ACFL_DEBUG("stage", "ready result")("iterator", ScanIterator->DebugString())("columns", numColumns)("rows", result.GetRecordsCount()); - - AFL_VERIFY(DataFormat == NKikimrDataEvents::FORMAT_ARROW); - { - MakeResult(0); - if (shardedBatch.IsSharded()) { - AFL_INFO(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "compute_sharding_success")("count", shardedBatch.GetSplittedByShards().size())("info", ComputeShardingPolicy.DebugString()); - Result->SplittedBatches = shardedBatch.GetSplittedByShards(); - Result->ArrowBatch = shardedBatch.GetRecordBatch(); - } else { - if (ComputeShardingPolicy.IsEnabled()) { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "compute_sharding_problems")("info", ComputeShardingPolicy.DebugString()); - } - Result->ArrowBatch = shardedBatch.GetRecordBatch(); - } - Rows += batch->num_rows(); - Bytes += NArrow::GetBatchDataSize(batch); - ACFL_DEBUG("stage", "data_format")("batch_size", NArrow::GetBatchDataSize(batch))("num_rows", numRows)("batch_columns", JoinSeq(",", batch->schema()->field_names())); - } - if (CurrentLastReadKey && ReadMetadataRanges.size() == 1) { - NOlap::NIndexedReader::TSortableBatchPosition pNew(result.GetLastReadKey(), 0, result.GetLastReadKey()->schema()->field_names(), {}, ReadMetadataRanges.front()->IsDescSorted()); - NOlap::NIndexedReader::TSortableBatchPosition pOld(CurrentLastReadKey, 0, CurrentLastReadKey->schema()->field_names(), {}, ReadMetadataRanges.front()->IsDescSorted()); - AFL_VERIFY(pOld < pNew)("old", pOld.DebugJson().GetStringRobust())("new", pNew.DebugJson().GetStringRobust()); - } - CurrentLastReadKey = result.GetLastReadKey(); - - Result->LastKey = ConvertLastKey(result.GetLastReadKey()); - SendResult(false, false); - ACFL_DEBUG("stage", "finished")("iterator", ScanIterator->DebugString()); - return true; - } - - void ContinueProcessingStep() { - if (!ScanIterator) { - ACFL_DEBUG("event", "ContinueProcessingStep")("stage", "iterator is not initialized"); - return; - } - const bool hasAck = !!AckReceivedInstant; - // Send new results if there is available capacity - while (ScanIterator && ProduceResults()) { - } - - // Switch to the next range if the current one is finished - if (ScanIterator && ScanIterator->Finished() && hasAck) { - NextReadMetadata(); - } - - if (ScanIterator) { - // Make read-ahead requests for the subsequent blobs - ReadNextBlob(); - } - } - - void ContinueProcessing() { - const i64 maxSteps = ReadMetadataRanges.size(); - for (i64 step = 0; step <= maxSteps; ++step) { - ContinueProcessingStep(); - if (!ScanIterator || !ChunksLimiter.HasMore() || InFlightReads || MemoryAccessor->InWaiting() || ScanCountersPool.InWaiting()) { - return; - } - } - ScanCountersPool.Hanging->Add(1); - // The loop has finished without any progress! - LOG_ERROR_S(*TlsActivationContext, NKikimrServices::TX_COLUMNSHARD_SCAN, - "Scan " << ScanActorId << " is hanging" - << " txId: " << TxId << " scanId: " << ScanId << " gen: " << ScanGen << " tablet: " << TabletId << " debug: " << ScanIterator->DebugString()); - Y_DEBUG_ABORT_UNLESS(false); - } - - void HandleScan(TEvKqp::TEvAbortExecution::TPtr& ev) noexcept { - auto& msg = ev->Get()->Record; - const TString reason = ev->Get()->GetIssues().ToOneLineString(); - - auto prio = msg.GetStatusCode() == NYql::NDqProto::StatusIds::SUCCESS ? NActors::NLog::PRI_DEBUG : NActors::NLog::PRI_WARN; - LOG_LOG_S(*TlsActivationContext, prio, NKikimrServices::TX_COLUMNSHARD_SCAN, - "Scan " << ScanActorId << " got AbortExecution" - << " txId: " << TxId << " scanId: " << ScanId << " gen: " << ScanGen << " tablet: " << TabletId - << " code: " << NYql::NDqProto::StatusIds_StatusCode_Name(msg.GetStatusCode()) - << " reason: " << reason); - - AbortReason = std::move(reason); - Finish(); - } - - void HandleScan(TEvents::TEvUndelivered::TPtr& ev) { - ui32 eventType = ev->Get()->SourceType; - switch (eventType) { - case TEvKqpCompute::TEvScanInitActor::EventType: - AbortReason = "init failed"; - break; - case TEvKqpCompute::TEvScanData::EventType: - AbortReason = "failed to send data batch"; - break; - } - - LOG_WARN_S(*TlsActivationContext, NKikimrServices::TX_COLUMNSHARD_SCAN, - "Scan " << ScanActorId << " undelivered event: " << eventType - << " txId: " << TxId << " scanId: " << ScanId << " gen: " << ScanGen << " tablet: " << TabletId - << " reason: " << ev->Get()->Reason - << " description: " << AbortReason); - - Finish(); - } - - void HandleScan(TEvents::TEvWakeup::TPtr& /*ev*/) { - LOG_ERROR_S(*TlsActivationContext, NKikimrServices::TX_COLUMNSHARD_SCAN, - "Scan " << ScanActorId << " guard execution timeout" - << " txId: " << TxId << " scanId: " << ScanId << " gen: " << ScanGen << " tablet: " << TabletId); - - Finish(); - } - -private: - void MakeResult(size_t reserveRows = 0) { - if (!Finished && !Result) { - Result = MakeHolder<TEvKqpCompute::TEvScanData>(ScanId, ScanGen); - if (reserveRows) { - Y_ABORT_UNLESS(DataFormat != NKikimrDataEvents::FORMAT_ARROW); - Result->Rows.reserve(reserveRows); - } - } - } - - void NextReadMetadata() { - auto g = Stats->MakeGuard("NextReadMetadata"); - if (++ReadMetadataIndex == ReadMetadataRanges.size()) { - // Send empty batch with "finished" flag - MakeResult(); - SendResult(false, true); - ScanIterator.reset(); - return Finish(); - } - - auto context = std::make_shared<NOlap::TReadContext>(StoragesManager, ScanCountersPool, ReadMetadataRanges[ReadMetadataIndex], SelfId(), - ResourceSubscribeActorId, ReadCoordinatorActorId, ComputeShardingPolicy); - ScanIterator = ReadMetadataRanges[ReadMetadataIndex]->StartScan(context); - } - - void AddRow(const TConstArrayRef<TCell>& row) override { - Result->Rows.emplace_back(TOwnedCellVec::Make(row)); - ++Rows; - - // NOTE: Some per-row overhead to deal with the case when no columns were requested - Bytes += std::max((ui64)8, (ui64)Result->Rows.back().DataSize()); - } - - TOwnedCellVec ConvertLastKey(const std::shared_ptr<arrow::RecordBatch>& lastReadKey) { - Y_ABORT_UNLESS(lastReadKey, "last key must be passed"); - - struct TSingeRowWriter : public IRowWriter { - TOwnedCellVec Row; - bool Done = false; - void AddRow(const TConstArrayRef<TCell>& row) override { - Y_ABORT_UNLESS(!Done); - Row = TOwnedCellVec::Make(row); - Done = true; - } - } singleRowWriter; - NArrow::TArrowToYdbConverter converter(KeyYqlSchema, singleRowWriter); - TString errStr; - bool ok = converter.Process(*lastReadKey, errStr); - Y_ABORT_UNLESS(ok, "%s", errStr.c_str()); - - Y_ABORT_UNLESS(singleRowWriter.Done); - return singleRowWriter.Row; - } - - class TScanStatsOwner: public NKqp::TEvKqpCompute::IShardScanStats { - private: - YDB_READONLY_DEF(NOlap::TReadStats, Stats); - public: - TScanStatsOwner(const NOlap::TReadStats& stats) - : Stats(stats) { - - } - - virtual THashMap<TString, ui64> GetMetrics() const override { - THashMap<TString, ui64> result; - result["compacted_bytes"] = Stats.CompactedPortionsBytes; - result["inserted_bytes"] = Stats.InsertedPortionsBytes; - result["committed_bytes"] = Stats.CommittedPortionsBytes; - return result; - } - }; - - bool SendResult(bool pageFault, bool lastBatch) { - if (Finished) { - return true; - } - - Result->PageFault = pageFault; - Result->PageFaults = PageFaults; - Result->Finished = lastBatch; - if (ScanIterator) { - Result->AvailablePacks = ScanIterator->GetAvailableResultsCount(); - } - TDuration totalElapsedTime = TDuration::Seconds(GetElapsedTicksAsSeconds()); - // Result->TotalTime = totalElapsedTime - LastReportedElapsedTime; - // TODO: Result->CpuTime = ... - LastReportedElapsedTime = totalElapsedTime; - - PageFaults = 0; - - LOG_DEBUG_S(*TlsActivationContext, NKikimrServices::TX_COLUMNSHARD_SCAN, - "Scan " << ScanActorId << " send ScanData to " << ScanComputeActorId - << " txId: " << TxId << " scanId: " << ScanId << " gen: " << ScanGen << " tablet: " << TabletId - << " bytes: " << Bytes << " rows: " << Rows << " page faults: " << Result->PageFaults - << " finished: " << Result->Finished << " pageFault: " << Result->PageFault - << " arrow schema:\n" << (Result->ArrowBatch ? Result->ArrowBatch->schema()->ToString() : "")); - - Finished = Result->Finished; - if (Finished) { - ALS_INFO(NKikimrServices::TX_COLUMNSHARD_SCAN) << - "Scanner finished " << ScanActorId << " and sent to " << ScanComputeActorId - << " packs: " << PacksSum << " txId: " << TxId << " scanId: " << ScanId << " gen: " << ScanGen << " tablet: " << TabletId - << " bytes: " << Bytes << "/" << BytesSum << " rows: " << Rows << "/" << RowsSum << " page faults: " << Result->PageFaults - << " finished: " << Result->Finished << " pageFault: " << Result->PageFault - << " stats:" << Stats->ToJson() << ";iterator:" << (ScanIterator ? ScanIterator->DebugString(false) : "NO"); - Result->StatsOnFinished = std::make_shared<TScanStatsOwner>(ScanIterator->GetStats()); - } else { - Y_ABORT_UNLESS(ChunksLimiter.Take(Bytes)); - Result->RequestedBytesLimitReached = !ChunksLimiter.HasMore(); - Y_ABORT_UNLESS(AckReceivedInstant); - ScanCountersPool.AckWaitingInfo(TMonotonic::Now() - *AckReceivedInstant); - } - AckReceivedInstant.reset(); - - Send(ScanComputeActorId, Result.Release(), IEventHandle::FlagTrackDelivery); // TODO: FlagSubscribeOnSession ? - - ReportStats(); - - return true; - } - - void SendScanError(TString reason = {}) { - TString msg = TStringBuilder() << "Scan failed at tablet " << TabletId; - if (!reason.empty()) { - msg += ", reason: " + reason; - } - - auto ev = MakeHolder<TEvKqpCompute::TEvScanError>(ScanGen, TabletId); - ev->Record.SetStatus(Ydb::StatusIds::GENERIC_ERROR); - auto issue = NYql::YqlIssue({}, NYql::TIssuesIds::KIKIMR_RESULT_UNAVAILABLE, msg); - NYql::IssueToMessage(issue, ev->Record.MutableIssues()->Add()); - - Send(ScanComputeActorId, ev.Release()); - } - - void SendAbortExecution(TString reason = {}) { - auto status = NYql::NDqProto::StatusIds::PRECONDITION_FAILED; - TString msg = TStringBuilder() << "Scan failed at tablet " << TabletId; - if (!reason.empty()) { - msg += ", reason: " + reason; - } - - Send(ScanComputeActorId, new TEvKqp::TEvAbortExecution(status, msg)); - } - - void Finish() { - LOG_DEBUG_S(*TlsActivationContext, NKikimrServices::TX_COLUMNSHARD_SCAN, - "Scan " << ScanActorId << " finished for tablet " << TabletId); - - Send(ColumnShardActorId, new TEvPrivate::TEvReadFinished(RequestCookie, TxId)); - ReportStats(); - PassAway(); - } - - void ReportStats() { - Send(ColumnShardActorId, new TEvPrivate::TEvScanStats(Rows, Bytes)); - Rows = 0; - Bytes = 0; - } - - class TInFlightGuard: NNonCopyable::TNonCopyable { - private: - static inline TAtomicCounter InFlightGlobal = 0; - i64 InFlightGuarded = 0; - public: - ~TInFlightGuard() { - Return(InFlightGuarded); - } - - bool CanTake() { - return InFlightGlobal.Val() < DEFAULT_READ_AHEAD_BYTES || !InFlightGuarded; - } - - void Take(const ui64 bytes) { - InFlightGlobal.Add(bytes); - InFlightGuarded += bytes; - } - - void Return(const ui64 bytes) { - Y_ABORT_UNLESS(InFlightGlobal.Sub(bytes) >= 0); - InFlightGuarded -= bytes; - Y_ABORT_UNLESS(InFlightGuarded >= 0); - } - }; - -private: - const TActorId ColumnShardActorId; - const TActorId ReadBlobsActorId; - const TActorId ScanComputeActorId; - std::optional<TMonotonic> AckReceivedInstant; - TActorId ScanActorId; - TActorId BlobCacheActorId; - const ui32 ScanId; - const ui64 TxId; - const ui32 ScanGen; - const ui64 RequestCookie; - const NKikimrDataEvents::EDataFormat DataFormat; - const ui64 TabletId; - - std::vector<NOlap::TReadMetadataBase::TConstPtr> ReadMetadataRanges; - ui32 ReadMetadataIndex; - std::unique_ptr<TScanIteratorBase> ScanIterator; - - std::vector<std::pair<TString, NScheme::TTypeInfo>> KeyYqlSchema; - const TSerializedTableRange TableRange; - const TSmallVec<bool> SkipNullKeys; - const TInstant Deadline; - TConcreteScanCounters ScanCountersPool; - - TMaybe<TString> AbortReason; - - TChunksLimiter ChunksLimiter; - THolder<TEvKqpCompute::TEvScanData> Result; - std::shared_ptr<arrow::RecordBatch> CurrentLastReadKey; - i64 InFlightReads = 0; - bool Finished = false; - - class TBlobStats { - private: - ui64 PartsCount = 0; - ui64 Bytes = 0; - TDuration ReadingDurationSum; - TDuration ReadingDurationMax; - NMonitoring::THistogramPtr BlobDurationsCounter; - NMonitoring::THistogramPtr ByteDurationsCounter; - public: - TBlobStats(const NMonitoring::THistogramPtr blobDurationsCounter, const NMonitoring::THistogramPtr byteDurationsCounter) - : BlobDurationsCounter(blobDurationsCounter) - , ByteDurationsCounter(byteDurationsCounter) - { - - } - void Received(const NBlobCache::TBlobRange& br, const TDuration d) { - ReadingDurationSum += d; - ReadingDurationMax = Max(ReadingDurationMax, d); - ++PartsCount; - Bytes += br.Size; - BlobDurationsCounter->Collect(d.MilliSeconds()); - ByteDurationsCounter->Collect((i64)d.MilliSeconds(), br.Size); - } - TString DebugString() const { - TStringBuilder sb; - if (PartsCount) { - sb << "p_count=" << PartsCount << ";"; - sb << "bytes=" << Bytes << ";"; - sb << "d_avg=" << ReadingDurationSum / PartsCount << ";"; - sb << "d_max=" << ReadingDurationMax << ";"; - } else { - sb << "NO_BLOBS;"; - } - return sb; - } - }; - - NTracing::TTraceClientGuard Stats; - const NOlap::TComputeShardingPolicy ComputeShardingPolicy; - ui64 Rows = 0; - ui64 BytesSum = 0; - ui64 RowsSum = 0; - ui64 PacksSum = 0; - ui64 Bytes = 0; - ui32 PageFaults = 0; - TDuration LastReportedElapsedTime; -}; - -static bool FillPredicatesFromRange(NOlap::TReadDescription& read, const ::NKikimrTx::TKeyRange& keyRange, - const std::vector<std::pair<TString, NScheme::TTypeInfo>>& ydbPk, ui64 tabletId, const NOlap::TIndexInfo* indexInfo, TString& error) { - TSerializedTableRange range(keyRange); - auto fromPredicate = std::make_shared<NOlap::TPredicate>(); - auto toPredicate = std::make_shared<NOlap::TPredicate>(); - std::tie(*fromPredicate, *toPredicate) = RangePredicates(range, ydbPk); - - LOG_S_DEBUG("TTxScan range predicate. From key size: " << range.From.GetCells().size() - << " To key size: " << range.To.GetCells().size() - << " greater predicate over columns: " << fromPredicate->ToString() - << " less predicate over columns: " << toPredicate->ToString() - << " at tablet " << tabletId); - - if (!read.PKRangesFilter.Add(fromPredicate, toPredicate, indexInfo)) { - error = "Error building filter"; - return false; - } - return true; -} - -std::shared_ptr<NOlap::TReadStatsMetadata> -PrepareStatsReadMetadata(ui64 tabletId, const NOlap::TReadDescription& read, const std::unique_ptr<NOlap::IColumnEngine>& index, TString& error, const bool isReverse) { - THashSet<ui32> readColumnIds(read.ColumnIds.begin(), read.ColumnIds.end()); - for (auto& [id, name] : read.GetProgram().GetSourceColumns()) { - readColumnIds.insert(id); - } - - for (ui32 colId : readColumnIds) { - if (!PrimaryIndexStatsSchema.Columns.contains(colId)) { - error = Sprintf("Columnd id %" PRIu32 " not found", colId); - return {}; - } - } - - auto out = std::make_shared<NOlap::TReadStatsMetadata>(tabletId, - isReverse ? NOlap::TReadStatsMetadata::ESorting::DESC : NOlap::TReadStatsMetadata::ESorting::ASC, - read.GetProgram(), index ? index->GetVersionedIndex().GetSchema(read.GetSnapshot()) : nullptr, read.GetSnapshot()); - - out->SetPKRangesFilter(read.PKRangesFilter); - out->ReadColumnIds.assign(readColumnIds.begin(), readColumnIds.end()); - out->ResultColumnIds = read.ColumnIds; - - const NOlap::TColumnEngineForLogs* logsIndex = dynamic_cast<const NOlap::TColumnEngineForLogs*>(index.get()); - if (!index || !logsIndex) { - return out; - } - THashMap<ui64, THashSet<ui64>> portionsInUse; - const auto predStatSchema = [](const std::shared_ptr<NOlap::TPortionInfo>& l, const std::shared_ptr<NOlap::TPortionInfo>& r) { - return std::tuple(l->GetPathId(), l->GetPortionId()) < std::tuple(r->GetPathId(), r->GetPortionId()); - }; - for (auto&& filter : read.PKRangesFilter) { - const ui64 fromPathId = *filter.GetPredicateFrom().Get<arrow::UInt64Array>(0, 0, 1); - const ui64 toPathId = *filter.GetPredicateTo().Get<arrow::UInt64Array>(0, 0, Max<ui64>()); - if (read.TableName.EndsWith(NOlap::TIndexInfo::TABLE_INDEX_STATS_TABLE)) { - if (fromPathId <= read.PathId && toPathId >= read.PathId) { - auto pathInfo = logsIndex->GetGranuleOptional(read.PathId); - if (!pathInfo) { - continue; - } - for (auto&& p : pathInfo->GetPortions()) { - if (portionsInUse[read.PathId].emplace(p.first).second) { - out->IndexPortions.emplace_back(p.second); - } - } - } - std::sort(out->IndexPortions.begin(), out->IndexPortions.end(), predStatSchema); - } else if (read.TableName.EndsWith(NOlap::TIndexInfo::STORE_INDEX_STATS_TABLE)) { - auto pathInfos = logsIndex->GetTables(fromPathId, toPathId); - for (auto&& pathInfo: pathInfos) { - for (auto&& p: pathInfo->GetPortions()) { - if (portionsInUse[p.second->GetPathId()].emplace(p.first).second) { - out->IndexPortions.emplace_back(p.second); - } - } - } - std::sort(out->IndexPortions.begin(), out->IndexPortions.end(), predStatSchema); - } - } - - return out; -} - -std::shared_ptr<NOlap::TReadMetadataBase> TTxScan::CreateReadMetadata(NOlap::TReadDescription& read, - bool indexStats, bool isReverse, ui64 itemsLimit) -{ - std::shared_ptr<NOlap::TReadMetadataBase> metadata; - if (indexStats) { - metadata = PrepareStatsReadMetadata(Self->TabletID(), read, Self->TablesManager.GetPrimaryIndex(), ErrorDescription, isReverse); - } else { - metadata = PrepareReadMetadata(read, Self->InsertTable, Self->TablesManager.GetPrimaryIndex(), - ErrorDescription, isReverse); - } - - if (!metadata) { - return nullptr; - } - - if (itemsLimit) { - metadata->Limit = itemsLimit; - } - - return metadata; -} - - -bool TTxScan::Execute(TTransactionContext& txc, const TActorContext& /*ctx*/) { - Y_UNUSED(txc); - - auto& record = Ev->Get()->Record; - const auto& snapshot = record.GetSnapshot(); - const auto scanId = record.GetScanId(); - const ui64 txId = record.GetTxId(); - - LOG_S_DEBUG("TTxScan prepare txId: " << txId << " scanId: " << scanId << " at tablet " << Self->TabletID()); - - ui64 itemsLimit = record.HasItemsLimit() ? record.GetItemsLimit() : 0; - - NOlap::TReadDescription read(NOlap::TSnapshot(snapshot.GetStep(), snapshot.GetTxId()), record.GetReverse()); - read.PathId = record.GetLocalPathId(); - read.ReadNothing = !(Self->TablesManager.HasTable(read.PathId)); - read.TableName = record.GetTablePath(); - bool isIndexStats = read.TableName.EndsWith(NOlap::TIndexInfo::STORE_INDEX_STATS_TABLE) || - read.TableName.EndsWith(NOlap::TIndexInfo::TABLE_INDEX_STATS_TABLE); - read.ColumnIds.assign(record.GetColumnTags().begin(), record.GetColumnTags().end()); - read.StatsMode = record.GetStatsMode(); - - const NOlap::TIndexInfo* indexInfo = nullptr; - if (!isIndexStats) { - indexInfo = &(Self->TablesManager.GetIndexInfo(NOlap::TSnapshot(snapshot.GetStep(), snapshot.GetTxId()))); - } - - bool parseResult; - - if (!isIndexStats) { - TIndexColumnResolver columnResolver(*indexInfo); - parseResult = ParseProgram(record.GetOlapProgramType(), record.GetOlapProgram(), read, columnResolver); - } else { - TStatsColumnResolver columnResolver; - parseResult = ParseProgram(record.GetOlapProgramType(), record.GetOlapProgram(), read, columnResolver); - } - - if (!parseResult) { - return true; - } - - if (!record.RangesSize()) { - auto range = CreateReadMetadata(read, isIndexStats, record.GetReverse(), itemsLimit); - if (range) { - ReadMetadataRanges = {range}; - } - return true; - } - - ReadMetadataRanges.reserve(record.RangesSize()); - - auto ydbKey = isIndexStats ? - NOlap::GetColumns(PrimaryIndexStatsSchema, PrimaryIndexStatsSchema.KeyColumns) : - indexInfo->GetPrimaryKeyColumns(); - - for (auto& range: record.GetRanges()) { - if (!FillPredicatesFromRange(read, range, ydbKey, Self->TabletID(), isIndexStats ? nullptr : indexInfo, ErrorDescription)) { - ReadMetadataRanges.clear(); - return true; - } - } - { - auto newRange = CreateReadMetadata(read, isIndexStats, record.GetReverse(), itemsLimit); - if (!newRange) { - ReadMetadataRanges.clear(); - return true; - } - ReadMetadataRanges.emplace_back(newRange); - } - Y_ABORT_UNLESS(ReadMetadataRanges.size() == 1); - - return true; -} - -template <typename T> -struct TContainerPrinter { - const T& Ref; - - TContainerPrinter(const T& ref) - : Ref(ref) - {} - - friend IOutputStream& operator << (IOutputStream& out, const TContainerPrinter& cont) { - for (auto& ptr : cont.Ref) { - out << *ptr << " "; - } - return out; - } -}; - -void TTxScan::Complete(const TActorContext& ctx) { - auto& request = Ev->Get()->Record; - auto scanComputeActor = Ev->Sender; - const auto& snapshot = request.GetSnapshot(); - const auto scanId = request.GetScanId(); - const ui64 txId = request.GetTxId(); - const ui32 scanGen = request.GetGeneration(); - TString table = request.GetTablePath(); - auto dataFormat = request.GetDataFormat(); - const TDuration timeout = TDuration::MilliSeconds(request.GetTimeoutMs()); - if (scanGen > 1) { - Self->IncCounter(COUNTER_SCAN_RESTARTED); - } - - TStringStream detailedInfo; - if (IS_LOG_PRIORITY_ENABLED(NActors::NLog::PRI_TRACE, NKikimrServices::TX_COLUMNSHARD)) { - detailedInfo << " read metadata: (" << TContainerPrinter(ReadMetadataRanges) << ")" << " req: " << request; - } - if (ReadMetadataRanges.empty()) { - LOG_S_DEBUG("TTxScan failed " - << " txId: " << txId - << " scanId: " << scanId - << " gen: " << scanGen - << " table: " << table - << " snapshot: " << snapshot - << " timeout: " << timeout - << detailedInfo.Str() - << " at tablet " << Self->TabletID()); - - auto ev = MakeHolder<TEvKqpCompute::TEvScanError>(scanGen, Self->TabletID()); - - ev->Record.SetStatus(Ydb::StatusIds::BAD_REQUEST); - auto issue = NYql::YqlIssue({}, NYql::TIssuesIds::KIKIMR_BAD_REQUEST, TStringBuilder() - << "Table " << table << " (shard " << Self->TabletID() << ") scan failed, reason: " << ErrorDescription ? ErrorDescription : "unknown error"); - NYql::IssueToMessage(issue, ev->Record.MutableIssues()->Add()); - - ctx.Send(scanComputeActor, ev.Release()); - return; - } - - ui64 requestCookie = Self->InFlightReadsTracker.AddInFlightRequest(ReadMetadataRanges); - auto statsDelta = Self->InFlightReadsTracker.GetSelectStatsDelta(); - - Self->IncCounter(COUNTER_READ_INDEX_PORTIONS, statsDelta.Portions); - Self->IncCounter(COUNTER_READ_INDEX_BLOBS, statsDelta.Blobs); - Self->IncCounter(COUNTER_READ_INDEX_ROWS, statsDelta.Rows); - Self->IncCounter(COUNTER_READ_INDEX_BYTES, statsDelta.Bytes); - - NOlap::TComputeShardingPolicy shardingPolicy; - AFL_VERIFY(shardingPolicy.DeserializeFromProto(request.GetComputeShardingPolicy())); - - auto scanActor = ctx.Register(new TColumnShardScan(Self->SelfId(), scanComputeActor, Self->GetStoragesManager(), - shardingPolicy, scanId, txId, scanGen, requestCookie, Self->TabletID(), timeout, std::move(ReadMetadataRanges), dataFormat, Self->ScanCounters)); - - LOG_S_DEBUG("TTxScan starting " << scanActor - << " txId: " << txId - << " scanId: " << scanId - << " gen: " << scanGen - << " table: " << table - << " snapshot: " << snapshot - << " timeout: " << timeout - << detailedInfo.Str() - << " at tablet " << Self->TabletID()); -} - - void TColumnShard::Handle(TEvColumnShard::TEvScan::TPtr& ev, const TActorContext& ctx) { auto& record = ev->Get()->Record; ui64 txId = record.GetTxId(); @@ -896,61 +29,7 @@ void TColumnShard::Handle(TEvColumnShard::TEvScan::TPtr& ev, const TActorContext LastAccessTime = TAppData::TimeProvider->Now(); ScanTxInFlight.insert({txId, LastAccessTime}); SetCounter(COUNTER_SCAN_IN_FLY, ScanTxInFlight.size()); - Execute(new TTxScan(this, ev), ctx); -} - -const NKikimr::NOlap::TReadStats& TScanIteratorBase::GetStats() const { - return Default<NOlap::TReadStats>(); -} - -} - -namespace NKikimr::NOlap { - -class TCurrentBatch { -private: - std::vector<TPartialReadResult> Results; - ui64 RecordsCount = 0; -public: - ui64 GetRecordsCount() const { - return RecordsCount; - } - - void AddChunk(TPartialReadResult&& res) { - RecordsCount += res.GetRecordsCount(); - Results.emplace_back(std::move(res)); - } - - void FillResult(std::vector<TPartialReadResult>& result) const { - if (Results.empty()) { - return; - } - for (auto&& i : Results) { - result.emplace_back(std::move(i)); - } - } -}; - -std::vector<NKikimr::NOlap::TPartialReadResult> TPartialReadResult::SplitResults(std::vector<TPartialReadResult>&& resultsExt, const ui32 maxRecordsInResult) { - std::vector<TCurrentBatch> resultBatches; - TCurrentBatch currentBatch; - for (auto&& i : resultsExt) { - AFL_VERIFY(i.GetRecordsCount()); - currentBatch.AddChunk(std::move(i)); - if (currentBatch.GetRecordsCount() >= maxRecordsInResult) { - resultBatches.emplace_back(std::move(currentBatch)); - currentBatch = TCurrentBatch(); - } - } - if (currentBatch.GetRecordsCount()) { - resultBatches.emplace_back(std::move(currentBatch)); - } - - std::vector<TPartialReadResult> result; - for (auto&& i : resultBatches) { - i.FillResult(result); - } - return result; + Execute(new NOlap::NReader::TTxScan(this, ev), ctx); } } diff --git a/ydb/core/tx/columnshard/columnshard__scan.h b/ydb/core/tx/columnshard/columnshard__scan.h index 2c6dd9c52a57..6f70f09beec2 100644 --- a/ydb/core/tx/columnshard/columnshard__scan.h +++ b/ydb/core/tx/columnshard/columnshard__scan.h @@ -1,116 +1 @@ #pragma once - -#include "blob_cache.h" -#include "blobs_reader/task.h" -#include "engines/reader/conveyor_task.h" -#include "resources/memory.h" -#include <ydb/core/formats/arrow/size_calcer.h> -#include <ydb/core/tx/program/program.h> -#include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> - -namespace NKikimr::NOlap { -struct TReadStats; -// Represents a batch of rows produced by ASC or DESC scan with applied filters and partial aggregation -class TPartialReadResult { -private: - YDB_READONLY_DEF(std::vector<std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>>, ResourcesGuards); - NArrow::TShardedRecordBatch ResultBatch; - - // This 1-row batch contains the last key that was read while producing the ResultBatch. - // NOTE: it might be different from the Key of last row in ResulBatch in case of filtering/aggregation/limit - std::shared_ptr<arrow::RecordBatch> LastReadKey; - -public: - void Cut(const ui32 limit) { - ResultBatch.Cut(limit); - } - - const arrow::RecordBatch& GetResultBatch() const { - return *ResultBatch.GetRecordBatch(); - } - - const std::shared_ptr<arrow::RecordBatch>& GetResultBatchPtrVerified() const { - return ResultBatch.GetRecordBatch(); - } - - const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& GetResourcesGuardOnly() const { - AFL_VERIFY(ResourcesGuards.size() == 1); - AFL_VERIFY(!!ResourcesGuards.front()); - return ResourcesGuards.front(); - } - - ui64 GetMemorySize() const { - return ResultBatch.GetMemorySize(); - } - - ui64 GetRecordsCount() const { - return ResultBatch.GetRecordsCount(); - } - - static std::vector<TPartialReadResult> SplitResults(std::vector<TPartialReadResult>&& resultsExt, const ui32 maxRecordsInResult); - - const NArrow::TShardedRecordBatch& GetShardedBatch() const { - return ResultBatch; - } - - const std::shared_ptr<arrow::RecordBatch>& GetLastReadKey() const { - return LastReadKey; - } - - std::string ErrorString; - - explicit TPartialReadResult( - const std::vector<std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>>& resourcesGuards, - const NArrow::TShardedRecordBatch& batch, std::shared_ptr<arrow::RecordBatch> lastKey) - : ResourcesGuards(resourcesGuards) - , ResultBatch(batch) - , LastReadKey(lastKey) { - for (auto&& i : ResourcesGuards) { - AFL_VERIFY(i); - } - Y_ABORT_UNLESS(ResultBatch.GetRecordsCount()); - Y_ABORT_UNLESS(LastReadKey); - Y_ABORT_UNLESS(LastReadKey->num_rows() == 1); - } - - explicit TPartialReadResult( - const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& resourcesGuards, - const NArrow::TShardedRecordBatch& batch, std::shared_ptr<arrow::RecordBatch> lastKey) - : TPartialReadResult(std::vector<std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>>({resourcesGuards}), batch, lastKey) { - AFL_VERIFY(resourcesGuards); - } - - explicit TPartialReadResult(const NArrow::TShardedRecordBatch& batch, std::shared_ptr<arrow::RecordBatch> lastKey) - : TPartialReadResult(std::vector<std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>>(), batch, lastKey) { - } -}; -} - -namespace NKikimr::NColumnShard { - -class TScanIteratorBase { -public: - virtual ~TScanIteratorBase() = default; - - virtual void Apply(IDataTasksProcessor::ITask::TPtr /*processor*/) { - - } - - virtual const NOlap::TReadStats& GetStats() const; - - virtual std::optional<ui32> GetAvailableResultsCount() const { - return {}; - } - virtual bool Finished() const = 0; - virtual std::optional<NOlap::TPartialReadResult> GetBatch() = 0; - virtual void PrepareResults() { - - } - virtual bool ReadNextInterval() { return false; } - virtual TString DebugString(const bool verbose = false) const { - Y_UNUSED(verbose); - return "NO_DATA"; - } -}; - -} diff --git a/ydb/core/tx/columnshard/columnshard__stats_scan.cpp b/ydb/core/tx/columnshard/columnshard__stats_scan.cpp deleted file mode 100644 index c7b189983a38..000000000000 --- a/ydb/core/tx/columnshard/columnshard__stats_scan.cpp +++ /dev/null @@ -1,122 +0,0 @@ -#include "columnshard__stats_scan.h" - -namespace NKikimr::NColumnShard { - -std::optional<NOlap::TPartialReadResult> TStatsIterator::GetBatch() { - // Take next raw batch - auto batch = FillStatsBatch(); - - // Extract the last row's PK - auto keyBatch = NArrow::ExtractColumns(batch, KeySchema); - auto lastKey = keyBatch->Slice(keyBatch->num_rows() - 1, 1); - - ApplyRangePredicates(batch); - if (!batch->num_rows()) { - return {}; - } - // Leave only requested columns - auto resultBatch = NArrow::ExtractColumns(batch, ResultSchema); - NArrow::TStatusValidator::Validate(ReadMetadata->GetProgram().ApplyProgram(resultBatch)); - if (!resultBatch->num_rows()) { - return {}; - } - NOlap::TPartialReadResult out(resultBatch, lastKey); - - return std::move(out); -} - -std::shared_ptr<arrow::RecordBatch> TStatsIterator::FillStatsBatch() { - std::vector<std::shared_ptr<NOlap::TPortionInfo>> portions; - ui32 recordsCount = 0; - while (IndexPortions.size()) { - auto& i = IndexPortions.front(); - recordsCount += i->Records.size(); - portions.emplace_back(i); - IndexPortions.pop_front(); - if (recordsCount > 10000) { - break; - } - } - std::vector<ui32> allColumnIds; - for (const auto& c : PrimaryIndexStatsSchema.Columns) { - allColumnIds.push_back(c.second.Id); - } - std::sort(allColumnIds.begin(), allColumnIds.end()); - auto schema = NOlap::MakeArrowSchema(PrimaryIndexStatsSchema.Columns, allColumnIds); - auto builders = NArrow::MakeBuilders(schema, recordsCount); - - for (auto&& p: portions) { - AppendStats(builders, *p); - } - - auto columns = NArrow::Finish(std::move(builders)); - return arrow::RecordBatch::Make(schema, recordsCount, columns); -} - -void TStatsIterator::ApplyRangePredicates(std::shared_ptr<arrow::RecordBatch>& batch) { - NArrow::TColumnFilter filter = ReadMetadata->GetPKRangesFilter().BuildFilter(batch); - filter.Apply(batch); -} - -void TStatsIterator::AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, const NOlap::TPortionInfo& portion) { - { - std::vector<const NOlap::TColumnRecord*> records; - for (auto&& r : portion.Records) { - records.emplace_back(&r); - } - if (Reverse) { - std::reverse(records.begin(), records.end()); - } - for (auto&& r : records) { - NArrow::Append<arrow::UInt64Type>(*builders[0], portion.GetPathId()); - const std::string prod = ::ToString(portion.GetMeta().Produced); - NArrow::Append<arrow::StringType>(*builders[1], prod); - NArrow::Append<arrow::UInt64Type>(*builders[2], ReadMetadata->TabletId); - NArrow::Append<arrow::UInt64Type>(*builders[3], r->GetMeta().GetNumRowsVerified()); - NArrow::Append<arrow::UInt64Type>(*builders[4], r->GetMeta().GetRawBytesVerified()); - NArrow::Append<arrow::UInt64Type>(*builders[5], portion.GetPortionId()); - NArrow::Append<arrow::UInt64Type>(*builders[6], r->GetChunkIdx()); - NArrow::Append<arrow::StringType>(*builders[7], ReadMetadata->GetColumnNameDef(r->GetColumnId()).value_or("undefined")); - NArrow::Append<arrow::UInt32Type>(*builders[8], r->GetColumnId()); - std::string blobIdString = r->BlobRange.BlobId.ToStringLegacy(); - NArrow::Append<arrow::StringType>(*builders[9], blobIdString); - NArrow::Append<arrow::UInt64Type>(*builders[10], r->BlobRange.Offset); - NArrow::Append<arrow::UInt64Type>(*builders[11], r->BlobRange.Size); - NArrow::Append<arrow::BooleanType>(*builders[12], !portion.HasRemoveSnapshot() || ReadMetadata->GetRequestSnapshot() < portion.GetRemoveSnapshot()); - std::string strTierName(portion.GetMeta().GetTierName().data(), portion.GetMeta().GetTierName().size()); - NArrow::Append<arrow::StringType>(*builders[13], strTierName); - NArrow::Append<arrow::StringType>(*builders[14], "COLUMN"); - } - } - { - std::vector<const NOlap::TIndexChunk*> indexes; - for (auto&& r : portion.GetIndexes()) { - indexes.emplace_back(&r); - } - if (Reverse) { - std::reverse(indexes.begin(), indexes.end()); - } - for (auto&& r : indexes) { - NArrow::Append<arrow::UInt64Type>(*builders[0], portion.GetPathId()); - const std::string prod = ::ToString(portion.GetMeta().Produced); - NArrow::Append<arrow::StringType>(*builders[1], prod); - NArrow::Append<arrow::UInt64Type>(*builders[2], ReadMetadata->TabletId); - NArrow::Append<arrow::UInt64Type>(*builders[3], r->GetRecordsCount()); - NArrow::Append<arrow::UInt64Type>(*builders[4], r->GetRawBytes()); - NArrow::Append<arrow::UInt64Type>(*builders[5], portion.GetPortionId()); - NArrow::Append<arrow::UInt64Type>(*builders[6], r->GetChunkIdx()); - NArrow::Append<arrow::StringType>(*builders[7], ReadMetadata->GetEntityName(r->GetIndexId()).value_or("undefined")); - NArrow::Append<arrow::UInt32Type>(*builders[8], r->GetIndexId()); - std::string blobIdString = r->GetBlobRange().BlobId.ToStringLegacy(); - NArrow::Append<arrow::StringType>(*builders[9], blobIdString); - NArrow::Append<arrow::UInt64Type>(*builders[10], r->GetBlobRange().Offset); - NArrow::Append<arrow::UInt64Type>(*builders[11], r->GetBlobRange().Size); - NArrow::Append<arrow::BooleanType>(*builders[12], !portion.HasRemoveSnapshot() || ReadMetadata->GetRequestSnapshot() < portion.GetRemoveSnapshot()); - std::string strTierName(portion.GetMeta().GetTierName().data(), portion.GetMeta().GetTierName().size()); - NArrow::Append<arrow::StringType>(*builders[13], strTierName); - NArrow::Append<arrow::StringType>(*builders[14], "INDEX"); - } - } -} - -} diff --git a/ydb/core/tx/columnshard/columnshard__stats_scan.h b/ydb/core/tx/columnshard/columnshard__stats_scan.h deleted file mode 100644 index 65fe0999ea70..000000000000 --- a/ydb/core/tx/columnshard/columnshard__stats_scan.h +++ /dev/null @@ -1,88 +0,0 @@ -#pragma once - -#include "columnshard__scan.h" -#include "columnshard_common.h" -#include "engines/reader/read_metadata.h" - -#include <ydb/core/tablet_flat/flat_cxx_database.h> -#include <ydb/core/sys_view/common/schema.h> -#include <ydb/core/formats/arrow/custom_registry.h> - -namespace NKikimr::NColumnShard { - -static const NTable::TScheme::TTableSchema PrimaryIndexStatsSchema = []() { - NTable::TScheme::TTableSchema schema; - NIceDb::NHelpers::TStaticSchemaFiller<NKikimr::NSysView::Schema::PrimaryIndexStats>::Fill(schema); - return schema; -}(); - - -class TStatsColumnResolver : public IColumnResolver { -public: - TString GetColumnName(ui32 id, bool required) const override { - auto it = PrimaryIndexStatsSchema.Columns.find(id); - if (it == PrimaryIndexStatsSchema.Columns.end()) { - Y_ABORT_UNLESS(!required, "No column '%" PRIu32 "' in primary_index_stats", id); - return {}; - } - return it->second.Name; - } - - std::optional<ui32> GetColumnIdOptional(const TString& name) const override { - auto it = PrimaryIndexStatsSchema.ColumnNames.find(name); - if (it == PrimaryIndexStatsSchema.ColumnNames.end()) { - return {}; - } else { - return it->second; - } - } - - const NTable::TScheme::TTableSchema& GetSchema() const override { - return PrimaryIndexStatsSchema; - } - - NSsa::TColumnInfo GetDefaultColumn() const override { - return NSsa::TColumnInfo::Original(1, "PathId"); - } -}; - - -class TStatsIterator : public TScanIteratorBase { -public: - TStatsIterator(const NOlap::TReadStatsMetadata::TConstPtr& readMetadata) - : ReadMetadata(readMetadata) - , Reverse(ReadMetadata->IsDescSorted()) - , KeySchema(NOlap::MakeArrowSchema(PrimaryIndexStatsSchema.Columns, PrimaryIndexStatsSchema.KeyColumns)) - , ResultSchema(NOlap::MakeArrowSchema(PrimaryIndexStatsSchema.Columns, ReadMetadata->ResultColumnIds)) - , IndexPortions(ReadMetadata->IndexPortions) - { - if (ResultSchema->num_fields() == 0) { - ResultSchema = KeySchema; - } - if (Reverse) { - std::reverse(IndexPortions.begin(), IndexPortions.end()); - } - } - - bool Finished() const override { - return IndexPortions.empty(); - } - - std::optional<NOlap::TPartialReadResult> GetBatch() override; - -private: - NOlap::TReadStatsMetadata::TConstPtr ReadMetadata; - bool Reverse{false}; - std::shared_ptr<arrow::Schema> KeySchema; - std::shared_ptr<arrow::Schema> ResultSchema; - - std::deque<std::shared_ptr<NOlap::TPortionInfo>> IndexPortions; - - std::shared_ptr<arrow::RecordBatch> FillStatsBatch(); - - void ApplyRangePredicates(std::shared_ptr<arrow::RecordBatch>& batch); - - void AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, const NOlap::TPortionInfo& portion); -}; - -} diff --git a/ydb/core/tx/columnshard/columnshard__write.cpp b/ydb/core/tx/columnshard/columnshard__write.cpp index 34c55c811cda..413b415fc79d 100644 --- a/ydb/core/tx/columnshard/columnshard__write.cpp +++ b/ydb/core/tx/columnshard/columnshard__write.cpp @@ -12,7 +12,7 @@ namespace NKikimr::NColumnShard { using namespace NTabletFlatExecutor; -void TColumnShard::OverloadWriteFail(const EOverloadStatus overloadReason, const NEvWrite::TWriteData& writeData, std::unique_ptr<NActors::IEventBase>&& event, const TActorContext& ctx) { +void TColumnShard::OverloadWriteFail(const EOverloadStatus overloadReason, const NEvWrite::TWriteData& writeData, const ui64 cookie, std::unique_ptr<NActors::IEventBase>&& event, const TActorContext& ctx) { IncCounter(COUNTER_WRITE_FAIL); switch (overloadReason) { case EOverloadStatus::Disk: @@ -22,6 +22,10 @@ void TColumnShard::OverloadWriteFail(const EOverloadStatus overloadReason, const IncCounter(COUNTER_WRITE_OVERLOAD); CSCounters.OnOverloadInsertTable(writeData.GetSize()); break; + case EOverloadStatus::OverloadMetadata: + IncCounter(COUNTER_WRITE_OVERLOAD); + CSCounters.OnOverloadMetadata(writeData.GetSize()); + break; case EOverloadStatus::ShardTxInFly: IncCounter(COUNTER_WRITE_OVERLOAD); CSCounters.OnOverloadShardTx(writeData.GetSize()); @@ -42,7 +46,7 @@ void TColumnShard::OverloadWriteFail(const EOverloadStatus overloadReason, const << " overload reason: [" << overloadReason << "]" << " at tablet " << TabletID()); - ctx.Send(writeData.GetWriteMeta().GetSource(), event.release()); + ctx.Send(writeData.GetWriteMeta().GetSource(), event.release(), 0, cookie); } TColumnShard::EOverloadStatus TColumnShard::CheckOverloaded(const ui64 tableId) const { @@ -54,6 +58,11 @@ TColumnShard::EOverloadStatus TColumnShard::CheckOverloaded(const ui64 tableId) return EOverloadStatus::InsertTable; } + CSCounters.OnIndexMetadataLimit(NOlap::IColumnEngine::GetMetadataLimit()); + if (TablesManager.GetPrimaryIndex() && TablesManager.GetPrimaryIndex()->IsOverloadedByMetadata(NOlap::IColumnEngine::GetMetadataLimit())) { + return EOverloadStatus::OverloadMetadata; + } + ui64 txLimit = Settings.OverloadTxInFlight; ui64 writesLimit = Settings.OverloadWritesInFlight; ui64 writesSizeLimit = Settings.OverloadWritesSizeInFlight; @@ -116,8 +125,8 @@ void TColumnShard::Handle(TEvPrivate::TEvWriteBlobsResult::TPtr& ev, const TActo } else { auto operation = OperationsManager->GetOperation((TWriteId)writeMeta.GetWriteId()); Y_ABORT_UNLESS(operation); - auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), operation->GetTxId(), NKikimrDataEvents::TEvWriteResult::STATUS_INTERNAL_ERROR, "put data fails"); - ctx.Send(writeMeta.GetSource(), result.release()); + auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), operation->GetLockId(), NKikimrDataEvents::TEvWriteResult::STATUS_INTERNAL_ERROR, "put data fails"); + ctx.Send(writeMeta.GetSource(), result.release(), 0, operation->GetCookie()); } CSCounters.OnFailedWriteResponse(EWriteFailReason::PutBlob); wBuffer.RemoveData(aggr, StoragesManager->GetInsertOperator()); @@ -149,6 +158,7 @@ void TColumnShard::Handle(TEvColumnShard::TEvWrite::TPtr& ev, const TActorContex const auto& record = Proto(ev->Get()); const ui64 tableId = record.GetTableId(); const ui64 writeId = record.GetWriteId(); + const ui64 cookie = ev->Cookie; const TString dedupId = record.GetDedupId(); const auto source = ev->Sender; @@ -188,11 +198,12 @@ void TColumnShard::Handle(TEvColumnShard::TEvWrite::TPtr& ev, const TActorContex return returnFail(COUNTER_WRITE_FAIL); } - NEvWrite::TWriteData writeData(writeMeta, arrowData, snapshotSchema->GetIndexInfo().GetReplaceKey(), StoragesManager->GetInsertOperator()->StartWritingAction("WRITING")); + NEvWrite::TWriteData writeData(writeMeta, arrowData, snapshotSchema->GetIndexInfo().GetReplaceKey(), + StoragesManager->GetInsertOperator()->StartWritingAction(NOlap::NBlobOperations::EConsumer::WRITING)); auto overloadStatus = CheckOverloaded(tableId); if (overloadStatus != EOverloadStatus::None) { std::unique_ptr<NActors::IEventBase> result = std::make_unique<TEvColumnShard::TEvWriteResult>(TabletID(), writeData.GetWriteMeta(), NKikimrTxColumnShard::EResultStatus::OVERLOADED); - OverloadWriteFail(overloadStatus, writeData, std::move(result), ctx); + OverloadWriteFail(overloadStatus, writeData, cookie, std::move(result), ctx); CSCounters.OnFailedWriteResponse(EWriteFailReason::Overload); } else { if (ui64 writeId = (ui64)HasLongTxWrite(writeMeta.GetLongTxIdUnsafe(), writeMeta.GetWritePartId())) { @@ -221,41 +232,124 @@ void TColumnShard::Handle(TEvColumnShard::TEvWrite::TPtr& ev, const TActorContex } } +class TCommitOperation { +public: + using TPtr = std::shared_ptr<TCommitOperation>; + + bool Parse(const NEvents::TDataEvents::TEvWrite& evWrite) { + LockId = evWrite.Record.GetLockTxId(); + TxId = evWrite.Record.GetTxId(); + KqpLocks = evWrite.Record.GetLocks(); + return !!LockId && !!TxId && KqpLocks.GetOp() == NKikimrDataEvents::TKqpLocks::Commit; + } + +private: + NKikimrDataEvents::TKqpLocks KqpLocks; + YDB_READONLY(ui64, LockId, 0); + YDB_READONLY(ui64, TxId, 0); +}; +class TProposeWriteTransaction : public TProposeTransactionBase { +public: + TProposeWriteTransaction(TColumnShard* self, TCommitOperation::TPtr op, const TActorId source, const ui64 cookie) + : TProposeTransactionBase(self) + , WriteCommit(op) + , Source(source) + , Cookie(cookie) + {} + + bool Execute(TTransactionContext& txc, const TActorContext& ctx) override; + void Complete(const TActorContext& ctx) override; + TTxType GetTxType() const override { return TXTYPE_PROPOSE; } + +private: + void OnProposeResult(TTxController::TProposeResult& proposeResult, const TTxController::TTxInfo& txInfo) override; + void OnProposeError(TTxController::TProposeResult& proposeResult, const TTxController::TBasicTxInfo& txInfo) override; + +private: + TCommitOperation::TPtr WriteCommit; + TActorId Source; + ui64 Cookie; + std::unique_ptr<NActors::IEventBase> Result; +}; + +bool TProposeWriteTransaction::Execute(TTransactionContext& txc, const TActorContext&) { + NKikimrTxColumnShard::TCommitWriteTxBody proto; + proto.SetLockId(WriteCommit->GetLockId()); + TString txBody; + Y_ABORT_UNLESS(proto.SerializeToString(&txBody)); + ProposeTransaction(TTxController::TBasicTxInfo(NKikimrTxColumnShard::TX_KIND_COMMIT_WRITE, WriteCommit->GetTxId()), txBody, Source, Cookie, txc); + return true; +} + +void TProposeWriteTransaction::Complete(const TActorContext& ctx) { + ctx.Send(Source, Result.release(), 0, Cookie); +} + +void TProposeWriteTransaction::OnProposeResult(TTxController::TProposeResult& proposeResult, const TTxController::TTxInfo& txInfo) { + Y_UNUSED(proposeResult); + Result = NEvents::TDataEvents::TEvWriteResult::BuildPrepared(Self->TabletID(), txInfo.TxId, Self->GetProgressTxController().BuildCoordinatorInfo(txInfo)); +} + +void TProposeWriteTransaction::OnProposeError(TTxController::TProposeResult& proposeResult, const TTxController::TBasicTxInfo& txInfo) { + Y_UNUSED(proposeResult); + Result = NEvents::TDataEvents::TEvWriteResult::BuildError(Self->TabletID(), txInfo.TxId, NKikimrDataEvents::TEvWriteResult::STATUS_INTERNAL_ERROR, proposeResult.GetStatusMessage()); +} + void TColumnShard::Handle(NEvents::TDataEvents::TEvWrite::TPtr& ev, const TActorContext& ctx) { NActors::TLogContextGuard gLogging = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", TabletID())("event", "TEvWrite"); const auto& record = ev->Get()->Record; - const ui64 txId = ev->Get()->GetTxId(); const auto source = ev->Sender; + const auto cookie = ev->Cookie; + const auto behaviour = TOperationsManager::GetBehaviour(*ev->Get()); + + if (behaviour == EOperationBehaviour::Undefined) { + IncCounter(COUNTER_WRITE_FAIL); + auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), 0, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "invalid write event"); + ctx.Send(source, result.release(), 0, cookie); + return; + } + + if (behaviour == EOperationBehaviour::CommitWriteLock) { + auto commitOperation = std::make_shared<TCommitOperation>(); + if (!commitOperation->Parse(*ev->Get())) { + IncCounter(COUNTER_WRITE_FAIL); + auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), 0, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "invalid commit event"); + ctx.Send(source, result.release(), 0, cookie); + } + Execute(new TProposeWriteTransaction(this, commitOperation, source, cookie), ctx); + return; + } + + const ui64 lockId = (behaviour == EOperationBehaviour::InTxWrite) ? record.GetTxId() : record.GetLockTxId(); if (record.GetOperations().size() != 1) { IncCounter(COUNTER_WRITE_FAIL); - auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), txId, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "only single operation is supported"); - ctx.Send(source, result.release()); + auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), 0, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "only single operation is supported"); + ctx.Send(source, result.release(), 0, cookie); return; } const auto& operation = record.GetOperations()[0]; - if (operation.GetType() != NKikimrDataEvents::TEvWrite::TOperation::OPERATION_REPLACE) { IncCounter(COUNTER_WRITE_FAIL); - auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), txId, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "only REPLACE operation is supported"); - ctx.Send(source, result.release()); + auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), 0, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "only REPLACE operation is supported"); + ctx.Send(source, result.release(), 0, cookie); return; } if (!operation.GetTableId().HasSchemaVersion()) { IncCounter(COUNTER_WRITE_FAIL); - auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), txId, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "schema version not set"); - ctx.Send(source, result.release()); + auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), 0, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "schema version not set"); + ctx.Send(source, result.release(), 0, cookie); return; } auto schema = TablesManager.GetPrimaryIndex()->GetVersionedIndex().GetSchema(operation.GetTableId().GetSchemaVersion()); if (!schema) { IncCounter(COUNTER_WRITE_FAIL); - auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), txId, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "unknown schema version"); - ctx.Send(source, result.release()); + auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), 0, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "unknown schema version"); + ctx.Send(source, result.release(), 0, cookie); return; } @@ -263,30 +357,31 @@ void TColumnShard::Handle(NEvents::TDataEvents::TEvWrite::TPtr& ev, const TActor if (!TablesManager.IsReadyForWrite(tableId)) { IncCounter(COUNTER_WRITE_FAIL); - auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), txId, NKikimrDataEvents::TEvWriteResult::STATUS_INTERNAL_ERROR, "table not writable"); - ctx.Send(source, result.release()); + auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), 0, NKikimrDataEvents::TEvWriteResult::STATUS_INTERNAL_ERROR, "table not writable"); + ctx.Send(source, result.release(), 0, cookie); return; } auto arrowData = std::make_shared<TArrowData>(schema); - if (!arrowData->Parse(operation, NEvWrite::TPayloadHelper<NEvents::TDataEvents::TEvWrite>(*ev->Get()))) { + if (!arrowData->Parse(operation, NEvWrite::TPayloadReader<NEvents::TDataEvents::TEvWrite>(*ev->Get()))) { IncCounter(COUNTER_WRITE_FAIL); - auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), txId, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "parsing data error"); - ctx.Send(source, result.release()); + auto result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), 0, NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST, "parsing data error"); + ctx.Send(source, result.release(), 0, cookie); } auto overloadStatus = CheckOverloaded(tableId); if (overloadStatus != EOverloadStatus::None) { NEvWrite::TWriteData writeData(NEvWrite::TWriteMeta(0, tableId, source), arrowData, nullptr, nullptr); - std::unique_ptr<NActors::IEventBase> result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), txId, NKikimrDataEvents::TEvWriteResult::STATUS_OVERLOADED, "overload data error"); - OverloadWriteFail(overloadStatus, writeData, std::move(result), ctx); + std::unique_ptr<NActors::IEventBase> result = NEvents::TDataEvents::TEvWriteResult::BuildError(TabletID(), 0, NKikimrDataEvents::TEvWriteResult::STATUS_OVERLOADED, "overload data error"); + OverloadWriteFail(overloadStatus, writeData, cookie, std::move(result), ctx); return; } auto wg = WritesMonitor.RegisterWrite(arrowData->GetSize()); - auto writeOperation = OperationsManager->RegisterOperation(txId); + auto writeOperation = OperationsManager->RegisterOperation(lockId, cookie); Y_ABORT_UNLESS(writeOperation); + writeOperation->SetBehaviour(behaviour); writeOperation->Start(*this, tableId, arrowData, source, ctx); } diff --git a/ydb/core/tx/columnshard/columnshard__write_index.cpp b/ydb/core/tx/columnshard/columnshard__write_index.cpp index fe423b8156d0..b98537ddbea7 100644 --- a/ydb/core/tx/columnshard/columnshard__write_index.cpp +++ b/ydb/core/tx/columnshard/columnshard__write_index.cpp @@ -26,9 +26,10 @@ void TColumnShard::Handle(TEvPrivate::TEvWriteIndex::TPtr& ev, const TActorConte ACFL_DEBUG("event", "TEvWriteIndex")("count", ev->Get()->IndexChanges->GetWritePortionsCount()); AFL_VERIFY(ev->Get()->IndexChanges->GetWritePortionsCount()); - const bool needDraftTransaction = ev->Get()->IndexChanges->GetBlobsAction().NeedDraftWritingTransaction(); auto writeController = std::make_shared<NOlap::TCompactedWriteController>(ctx.SelfID, ev->Release()); - if (needDraftTransaction) { + const TConclusion<bool> needDraftTransaction = writeController->GetBlobsAction().NeedDraftWritingTransaction(); + AFL_VERIFY(needDraftTransaction.IsSuccess())("error", needDraftTransaction.GetErrorMessage()); + if (*needDraftTransaction) { Execute(new TTxWriteDraft(this, writeController)); } else { ctx.Register(CreateWriteActor(TabletID(), writeController, TInstant::Max())); diff --git a/ydb/core/tx/columnshard/columnshard_common.cpp b/ydb/core/tx/columnshard/columnshard_common.cpp index dfd825f3b23d..d9f0dcc5e79b 100644 --- a/ydb/core/tx/columnshard/columnshard_common.cpp +++ b/ydb/core/tx/columnshard/columnshard_common.cpp @@ -10,91 +10,9 @@ using EAggregate = NArrow::EAggregate; using TAssign = NSsa::TAssign; using TAggregateAssign = NSsa::TAggregateAssign; -std::vector<NScheme::TTypeInfo> ExtractTypes(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns) { - std::vector<NScheme::TTypeInfo> types; - types.reserve(columns.size()); - for (auto& [name, type] : columns) { - types.push_back(type); - } - return types; -} - -TString FromCells(const TConstArrayRef<TCell>& cells, const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns) { - Y_ABORT_UNLESS(cells.size() == columns.size()); - if (cells.empty()) { - return {}; - } - - std::vector<NScheme::TTypeInfo> types = ExtractTypes(columns); - - NArrow::TArrowBatchBuilder batchBuilder; - batchBuilder.Reserve(1); - bool ok = batchBuilder.Start(columns); - Y_ABORT_UNLESS(ok); - - batchBuilder.AddRow(NKikimr::TDbTupleRef(), NKikimr::TDbTupleRef(types.data(), cells.data(), cells.size())); - - auto batch = batchBuilder.FlushBatch(false); - Y_ABORT_UNLESS(batch); - Y_ABORT_UNLESS(batch->num_columns() == (int)cells.size()); - Y_ABORT_UNLESS(batch->num_rows() == 1); - return NArrow::SerializeBatchNoCompression(batch); -} } using EOperation = NArrow::EOperation; using TPredicate = NOlap::TPredicate; -std::pair<TPredicate, TPredicate> RangePredicates(const TSerializedTableRange& range, - const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns) { - std::vector<TCell> leftCells; - std::vector<std::pair<TString, NScheme::TTypeInfo>> leftColumns; - bool leftTrailingNull = false; - { - TConstArrayRef<TCell> cells = range.From.GetCells(); - const size_t size = cells.size(); - Y_ASSERT(size <= columns.size()); - leftCells.reserve(size); - leftColumns.reserve(size); - for (size_t i = 0; i < size; ++i) { - if (!cells[i].IsNull()) { - leftCells.push_back(cells[i]); - leftColumns.push_back(columns[i]); - leftTrailingNull = false; - } else { - leftTrailingNull = true; - } - } - } - - std::vector<TCell> rightCells; - std::vector<std::pair<TString, NScheme::TTypeInfo>> rightColumns; - bool rightTrailingNull = false; - { - TConstArrayRef<TCell> cells = range.To.GetCells(); - const size_t size = cells.size(); - Y_ASSERT(size <= columns.size()); - rightCells.reserve(size); - rightColumns.reserve(size); - for (size_t i = 0; i < size; ++i) { - if (!cells[i].IsNull()) { - rightCells.push_back(cells[i]); - rightColumns.push_back(columns[i]); - rightTrailingNull = false; - } else { - rightTrailingNull = true; - } - } - } - - const bool fromInclusive = range.FromInclusive || leftTrailingNull; - const bool toInclusive = range.ToInclusive && !rightTrailingNull; - - TString leftBorder = FromCells(leftCells, leftColumns); - TString rightBorder = FromCells(rightCells, rightColumns); - return std::make_pair( - TPredicate(fromInclusive ? EOperation::GreaterEqual : EOperation::Greater, leftBorder, NArrow::MakeArrowSchema(leftColumns)), - TPredicate(toInclusive ? EOperation::LessEqual : EOperation::Less, rightBorder, NArrow::MakeArrowSchema(rightColumns))); -} - } diff --git a/ydb/core/tx/columnshard/columnshard_common.h b/ydb/core/tx/columnshard/columnshard_common.h index c2460be231d0..455f39a512cc 100644 --- a/ydb/core/tx/columnshard/columnshard_common.h +++ b/ydb/core/tx/columnshard/columnshard_common.h @@ -1,7 +1,7 @@ #pragma once -#include "defs.h" -#include "engines/reader/description.h" -#include <ydb/core/tx/columnshard/engines/predicate/predicate.h> +#include "engines/reader/common/description.h" +#include "engines/predicate/predicate.h" + #include <library/cpp/cache/cache.h> namespace NKikimr::NOlap { @@ -10,13 +10,10 @@ namespace NKikimr::NOlap { namespace NKikimr::NColumnShard { -using TReadDescription = NOlap::TReadDescription; +using TReadDescription = NOlap::NReader::TReadDescription; using IColumnResolver = NOlap::IColumnResolver; using NOlap::TWriteId; -std::pair<NOlap::TPredicate, NOlap::TPredicate> -RangePredicates(const TSerializedTableRange& range, const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns); - class TBatchCache { public: using TUnifiedBlobId = NOlap::TUnifiedBlobId; diff --git a/ydb/core/tx/columnshard/columnshard_impl.cpp b/ydb/core/tx/columnshard/columnshard_impl.cpp index daa499e55488..dd7aaf540533 100644 --- a/ydb/core/tx/columnshard/columnshard_impl.cpp +++ b/ydb/core/tx/columnshard/columnshard_impl.cpp @@ -1,9 +1,9 @@ #include "columnshard_impl.h" +#include "blob.h" #include "columnshard_schema.h" +#include "common/tablet_id.h" #include "blobs_reader/task.h" #include "blobs_reader/events.h" -#include "engines/changes/ttl.h" -#include "engines/changes/cleanup.h" #include "blobs_action/bs/storage.h" #include "resource_subscriber/task.h" @@ -11,9 +11,27 @@ #include "blobs_action/tier/storage.h" #endif +#include "blobs_reader/actor.h" +#include "blobs_action/storages_manager/manager.h" +#include "blobs_action/transaction/tx_remove_blobs.h" #include "blobs_action/transaction/tx_gc_insert_table.h" #include "blobs_action/transaction/tx_gc_indexed.h" + +#include "data_sharing/destination/session/destination.h" +#include "data_sharing/source/session/source.h" +#include "data_sharing/common/transactions/tx_extension.h" + +#include "engines/changes/indexation.h" +#include "engines/changes/cleanup_portions.h" +#include "engines/changes/cleanup_tables.h" +#include "engines/changes/ttl.h" + +#include "export/manager/manager.h" + +#include "resource_subscriber/counters.h" + #include "hooks/abstract/abstract.h" + #include <ydb/core/scheme/scheme_types_proto.h> #include <ydb/core/tablet/tablet_counters_protobuf.h> #include <ydb/core/tx/tiering/external_data.h> @@ -22,13 +40,6 @@ #include <ydb/services/metadata/service.h> #include <ydb/core/tx/tiering/manager.h> #include <ydb/core/tx/conveyor/usage/service.h> -#include "resource_subscriber/counters.h" -#include "blobs_reader/actor.h" - - -#include <ydb/core/tx/columnshard/normalizer/granule/normalizer.h> -#include <ydb/core/tx/columnshard/normalizer/portion/min_max.h> -#include <ydb/core/tx/columnshard/normalizer/portion/chunks.h> namespace NKikimr::NColumnShard { @@ -50,38 +61,15 @@ NTabletPipe::TClientConfig GetPipeClientConfig() { } -class TColumnShard::TStoragesManager: public NOlap::IStoragesManager { -private: - using TBase = NOlap::IStoragesManager; - TColumnShard& Shard; -protected: - virtual std::shared_ptr<NOlap::IBlobsStorageOperator> DoBuildOperator(const TString& storageId) override { - if (storageId == TBase::DefaultStorageId) { - return std::make_shared<NOlap::NBlobOperations::NBlobStorage::TOperator>(storageId, Shard.SelfId(), Shard.Info(), Shard.Executor()->Generation()); - } else if (!Shard.Tiers) { - return nullptr; - } else { -#ifndef KIKIMR_DISABLE_S3_OPS - return std::make_shared<NOlap::NBlobOperations::NTier::TOperator>(storageId, Shard); -#else - return nullptr; -#endif - } - } -public: - TStoragesManager(TColumnShard& shard) - : Shard(shard) { - - } -}; - TColumnShard::TColumnShard(TTabletStorageInfo* info, const TActorId& tablet) : TActor(&TThis::StateInit) , TTabletExecutedFlat(info, tablet, nullptr) , ProgressTxController(std::make_unique<TTxController>(*this)) - , PeriodicWakeupActivationPeriod(GetControllerPeriodicWakeupActivationPeriod()) - , StatsReportInterval(GetControllerStatsReportInterval()) - , StoragesManager(std::make_shared<TStoragesManager>(*this)) + , StoragesManager(std::make_shared<NOlap::TStoragesManager>(*this)) + , ExportsManager(std::make_shared<NOlap::NExport::TExportsManager>()) + , DataLocksManager(std::make_shared<NOlap::NDataLocks::TManager>()) + , PeriodicWakeupActivationPeriod(NYDBTest::TControllers::GetColumnShardController()->GetPeriodicWakeupActivationPeriod(TSettings::DefaultPeriodicWakeupActivationPeriod)) + , StatsReportInterval(NYDBTest::TControllers::GetColumnShardController()->GetStatsReportInterval(TSettings::DefaultStatsReportInterval)) , InFlightReadsTracker(StoragesManager) , TablesManager(StoragesManager, info->TabletID) , PipeClientCache(NTabletPipe::CreateBoundedClientCache(new NTabletPipe::TBoundedClientCacheConfig(), GetPipeClientConfig())) @@ -90,7 +78,6 @@ TColumnShard::TColumnShard(TTabletStorageInfo* info, const TActorId& tablet) , InsertTaskSubscription(NOlap::TInsertColumnEngineChanges::StaticTypeName(), SubscribeCounters) , CompactTaskSubscription(NOlap::TCompactColumnEngineChanges::StaticTypeName(), SubscribeCounters) , TTLTaskSubscription(NOlap::TTTLColumnEngineChanges::StaticTypeName(), SubscribeCounters) - , ReadCounters("Read") , ScanCounters("Scan") , WritesMonitor(*this) , NormalizerController(StoragesManager, SubscribeCounters) @@ -102,20 +89,16 @@ TColumnShard::TColumnShard(TTabletStorageInfo* info, const TActorId& tablet) ETxTypes_descriptor >()); TabletCounters = TabletCountersPtr.get(); - - NormalizerController.RegisterNormalizer(std::make_shared<NOlap::TGranulesNormalizer>()); - NormalizerController.RegisterNormalizer(std::make_shared<NOlap::TChunksNormalizer>(Info())); - NormalizerController.RegisterNormalizer(std::make_shared<NOlap::TPortionsNormalizer>(Info())); + NOlap::TNormalizationController::TInitContext initCtx(Info()); + NormalizerController.InitNormalizers(initCtx); } void TColumnShard::OnDetach(const TActorContext& ctx) { - CleanupActors(ctx); Die(ctx); } void TColumnShard::OnTabletDead(TEvTablet::TEvTabletDead::TPtr& ev, const TActorContext& ctx) { Y_UNUSED(ev); - CleanupActors(ctx); Die(ctx); } @@ -209,7 +192,8 @@ ui64 TColumnShard::GetOutdatedStep() const { } ui64 TColumnShard::GetMinReadStep() const { - ui64 delayMillisec = MaxReadStaleness.MilliSeconds(); + const TDuration maxReadStaleness = NYDBTest::TControllers::GetColumnShardController()->GetReadTimeoutClean(TDuration::Minutes(5)); + ui64 delayMillisec = maxReadStaleness.MilliSeconds(); ui64 passedStep = GetOutdatedStep(); ui64 minReadStep = (passedStep > delayMillisec ? passedStep - delayMillisec : 0); return minReadStep; @@ -393,7 +377,7 @@ void TColumnShard::RunEnsureTable(const NKikimrTxColumnShard::TCreateTable& tabl << " ttl settings: " << tableProto.GetTtlSettings() << " at tablet " << TabletID()); - TTableInfo::TTableVersionInfo tableVerProto; + NKikimrTxColumnShard::TTableVersionInfo tableVerProto; tableVerProto.SetPathId(pathId); // check schema changed @@ -414,21 +398,28 @@ void TColumnShard::RunEnsureTable(const NKikimrTxColumnShard::TCreateTable& tabl *tableVerProto.MutableSchema() = tableProto.GetSchema(); } - TTableInfo table(pathId); - if (tableProto.HasTtlSettings()) { - const auto& ttlSettings = tableProto.GetTtlSettings(); - *tableVerProto.MutableTtlSettings() = ttlSettings; - if (ttlSettings.HasUseTiering()) { - table.SetTieringUsage(ttlSettings.GetUseTiering()); - ActivateTiering(pathId, table.GetTieringUsage()); + { + bool needTieringActivation = false; + TTableInfo table(pathId); + if (tableProto.HasTtlSettings()) { + const auto& ttlSettings = tableProto.GetTtlSettings(); + *tableVerProto.MutableTtlSettings() = ttlSettings; + if (ttlSettings.HasUseTiering()) { + table.SetTieringUsage(ttlSettings.GetUseTiering()); + needTieringActivation = true; + } + } + const TString tieringName = table.GetTieringUsage(); + TablesManager.RegisterTable(std::move(table), db); + if (needTieringActivation) { + ActivateTiering(pathId, tieringName); } } tableVerProto.SetSchemaPresetVersionAdj(tableProto.GetSchemaPresetVersionAdj()); tableVerProto.SetTtlSettingsPresetVersionAdj(tableProto.GetTtlSettingsPresetVersionAdj()); - TablesManager.RegisterTable(std::move(table), db); - TablesManager.AddTableVersion(pathId, version, tableVerProto, db); + TablesManager.AddTableVersion(pathId, version, tableVerProto, db, Tiers); SetCounter(COUNTER_TABLES, TablesManager.GetTables().size()); SetCounter(COUNTER_TABLE_PRESETS, TablesManager.GetSchemaPresets().size()); @@ -447,7 +438,7 @@ void TColumnShard::RunAlterTable(const NKikimrTxColumnShard::TAlterTable& alterP << " ttl settings: " << alterProto.GetTtlSettings() << " at tablet " << TabletID()); - TTableInfo::TTableVersionInfo tableVerProto; + NKikimrTxColumnShard::TTableVersionInfo tableVerProto; if (alterProto.HasSchemaPreset()) { tableVerProto.SetSchemaPresetId(alterProto.GetSchemaPreset().GetId()); TablesManager.AddSchemaVersion(alterProto.GetSchemaPreset().GetId(), version, alterProto.GetSchemaPreset().GetSchema(), db); @@ -465,7 +456,7 @@ void TColumnShard::RunAlterTable(const NKikimrTxColumnShard::TAlterTable& alterP Schema::SaveTableInfo(db, pathId, tieringUsage); tableVerProto.SetSchemaPresetVersionAdj(alterProto.GetSchemaPresetVersionAdj()); - TablesManager.AddTableVersion(pathId, version, tableVerProto, db); + TablesManager.AddTableVersion(pathId, version, tableVerProto, db, Tiers); } void TColumnShard::RunDropTable(const NKikimrTxColumnShard::TDropTable& dropProto, const NOlap::TSnapshot& version, @@ -513,36 +504,29 @@ void TColumnShard::RunAlterStore(const NKikimrTxColumnShard::TAlterStore& proto, } } -void TColumnShard::EnqueueBackgroundActivities(bool periodic, TBackgroundActivity activity) { +void TColumnShard::EnqueueBackgroundActivities(const bool periodic) { TLogContextGuard gLogging(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", TabletID())); - ACFL_DEBUG("event", "EnqueueBackgroundActivities")("periodic", periodic)("activity", activity.DebugString()); + ACFL_DEBUG("event", "EnqueueBackgroundActivities")("periodic", periodic); + StoragesManager->GetOperatorVerified(NOlap::IStoragesManager::DefaultStorageId); + StoragesManager->GetSharedBlobsManager()->GetStorageManagerVerified(NOlap::IStoragesManager::DefaultStorageId); CSCounters.OnStartBackground(); - SendPeriodicStats(); if (!TablesManager.HasPrimaryIndex()) { LOG_S_NOTICE("Background activities cannot be started: no index at tablet " << TabletID()); return; } +// !!!!!! MUST BE FIRST THROUGH DATA HAVE TO BE SAME IN SESSIONS AFTER TABLET RESTART + SharingSessionsManager->Start(*this); - if (activity.HasIndexation()) { - SetupIndexation(); - } - - if (activity.HasCompaction()) { - SetupCompaction(); - } - - if (activity.HasCleanup()) { - SetupCleanup(); - } - - if (activity.HasTtl()) { - SetupTtl(); - } + ExportsManager->Start(this); + SetupIndexation(); + SetupCompaction(); + SetupCleanupPortions(); + SetupCleanupTables(); + SetupTtl(); SetupGC(); - SetupCleanupInsertTable(); } @@ -553,11 +537,12 @@ class TChangesTask: public NConveyor::ITask { const ui64 TabletId; const TActorId ParentActorId; TString ClassId; + NOlap::TSnapshot LastCompletedTx; protected: virtual bool DoExecute() override { NActors::TLogContextGuard g(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", TabletId)("parent_id", ParentActorId)); { - NOlap::TConstructionContext context(TxEvent->IndexInfo, Counters); + NOlap::TConstructionContext context(*TxEvent->IndexInfo, Counters, LastCompletedTx); Y_ABORT_UNLESS(TxEvent->IndexChanges->ConstructBlobs(context).Ok()); if (!TxEvent->IndexChanges->GetWritePortionsCount()) { TxEvent->SetPutStatus(NKikimrProto::OK); @@ -571,11 +556,12 @@ class TChangesTask: public NConveyor::ITask { return ClassId; } - TChangesTask(std::unique_ptr<TEvPrivate::TEvWriteIndex>&& txEvent, const TIndexationCounters& counters, const ui64 tabletId, const TActorId parentActorId) + TChangesTask(std::unique_ptr<TEvPrivate::TEvWriteIndex>&& txEvent, const TIndexationCounters& counters, const ui64 tabletId, const TActorId parentActorId, NOlap::TSnapshot lastCompletedTx) : TxEvent(std::move(txEvent)) , Counters(counters) , TabletId(tabletId) , ParentActorId(parentActorId) + , LastCompletedTx(lastCompletedTx) { Y_ABORT_UNLESS(TxEvent); Y_ABORT_UNLESS(TxEvent->IndexChanges); @@ -590,37 +576,62 @@ class TChangesReadTask: public NOlap::NBlobOperations::NRead::ITask { const ui64 TabletId; std::unique_ptr<TEvPrivate::TEvWriteIndex> TxEvent; TIndexationCounters Counters; + NOlap::TSnapshot LastCompletedTx; protected: virtual void DoOnDataReady(const std::shared_ptr<NOlap::NResourceBroker::NSubscribe::TResourcesGuard>& resourcesGuard) override { TxEvent->IndexChanges->Blobs = ExtractBlobsData(); TxEvent->IndexChanges->ResourcesGuard = resourcesGuard; const bool isInsert = !!dynamic_pointer_cast<NOlap::TInsertColumnEngineChanges>(TxEvent->IndexChanges); - std::shared_ptr<NConveyor::ITask> task = std::make_shared<TChangesTask>(std::move(TxEvent), Counters, TabletId, ParentActorId); + std::shared_ptr<NConveyor::ITask> task = std::make_shared<TChangesTask>(std::move(TxEvent), Counters, TabletId, ParentActorId, LastCompletedTx); if (isInsert) { NConveyor::TInsertServiceOperator::SendTaskToExecute(task); } else { NConveyor::TCompServiceOperator::SendTaskToExecute(task); } } - virtual bool DoOnError(const TBlobRange& range, const NOlap::IBlobsReadingAction::TErrorStatus& status) override { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "DoOnError")("blob_id", range)("status", status.GetErrorMessage())("status_code", status.GetStatus()); - AFL_VERIFY(false)("blob_id", range)("status", status.GetStatus()); + virtual bool DoOnError(const TString& storageId, const NOlap::TBlobRange& range, const NOlap::IBlobsReadingAction::TErrorStatus& status) override { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "DoOnError")("storage_id", storageId)("blob_id", range)("status", status.GetErrorMessage())("status_code", status.GetStatus()); + AFL_VERIFY(status.GetStatus() != NKikimrProto::EReplyStatus::NODATA)("blob_id", range)("status", status.GetStatus())("error", status.GetErrorMessage())("type", TxEvent->IndexChanges->TypeString())("task_id", TxEvent->IndexChanges->GetTaskIdentifier()) + ("debug", TxEvent->IndexChanges->DebugString()); TxEvent->SetPutStatus(NKikimrProto::ERROR); + Counters.ReadErrors->Add(1); TActorContext::AsActorContext().Send(ParentActorId, std::move(TxEvent)); return false; } public: - TChangesReadTask(std::unique_ptr<TEvPrivate::TEvWriteIndex>&& event, const TActorId parentActorId, const ui64 tabletId, const TIndexationCounters& counters) + TChangesReadTask(std::unique_ptr<TEvPrivate::TEvWriteIndex>&& event, const TActorId parentActorId, const ui64 tabletId, const TIndexationCounters& counters, NOlap::TSnapshot lastCompletedTx) : TBase(event->IndexChanges->GetReadingActions(), event->IndexChanges->TypeString(), event->IndexChanges->GetTaskIdentifier()) , ParentActorId(parentActorId) , TabletId(tabletId) , TxEvent(std::move(event)) , Counters(counters) + , LastCompletedTx(lastCompletedTx) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "start_changes")("type", TxEvent->IndexChanges->TypeString())("task_id", TxEvent->IndexChanges->GetTaskIdentifier()); } }; +class TInsertChangesReadTask: public TChangesReadTask, public TMonitoringObjectsCounter<TInsertChangesReadTask> { +private: + using TBase = TChangesReadTask; +public: + using TBase::TBase; +}; + +class TCompactChangesReadTask: public TChangesReadTask, public TMonitoringObjectsCounter<TCompactChangesReadTask> { +private: + using TBase = TChangesReadTask; +public: + using TBase::TBase; +}; + +class TTTLChangesReadTask: public TChangesReadTask, public TMonitoringObjectsCounter<TTTLChangesReadTask> { +private: + using TBase = TChangesReadTask; +public: + using TBase::TBase; +}; + void TColumnShard::StartIndexTask(std::vector<const NOlap::TInsertedData*>&& dataToIndex, const i64 bytesToIndex) { CSCounters.IndexationInput(bytesToIndex); @@ -634,9 +645,9 @@ void TColumnShard::StartIndexTask(std::vector<const NOlap::TInsertedData*>&& dat auto indexChanges = TablesManager.MutablePrimaryIndex().StartInsert(std::move(data)); Y_ABORT_UNLESS(indexChanges); - auto actualIndexInfo = TablesManager.GetPrimaryIndex()->GetVersionedIndex(); + auto actualIndexInfo = std::make_shared<NOlap::TVersionedIndex>(TablesManager.GetPrimaryIndex()->GetVersionedIndex()); indexChanges->Start(*this); - auto ev = std::make_unique<TEvPrivate::TEvWriteIndex>(std::move(actualIndexInfo), indexChanges, Settings.CacheDataAfterIndexing); + auto ev = std::make_unique<TEvPrivate::TEvWriteIndex>(actualIndexInfo, indexChanges, Settings.CacheDataAfterIndexing); const TString externalTaskId = indexChanges->GetTaskIdentifier(); AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "indexation")("bytes", bytesToIndex)("blobs_count", dataToIndex.size())("max_limit", (i64)Limits.MaxInsertBytes) @@ -644,11 +655,11 @@ void TColumnShard::StartIndexTask(std::vector<const NOlap::TInsertedData*>&& dat NOlap::NResourceBroker::NSubscribe::ITask::StartResourceSubscription( ResourceSubscribeActor, std::make_shared<NOlap::NBlobOperations::NRead::ITask::TReadSubscriber>( - std::make_shared<TChangesReadTask>(std::move(ev), SelfId(), TabletID(), IndexationCounters), 0, indexChanges->CalcMemoryForUsage(), externalTaskId, InsertTaskSubscription)); + std::make_shared<TInsertChangesReadTask>(std::move(ev), SelfId(), TabletID(), IndexationCounters, GetLastPlannedSnapshot()), 0, indexChanges->CalcMemoryForUsage(), externalTaskId, InsertTaskSubscription)); } void TColumnShard::SetupIndexation() { - if (!AppDataVerified().ColumnShardConfig.GetIndexationEnabled()) { + if (!AppDataVerified().ColumnShardConfig.GetIndexationEnabled() || !NYDBTest::TControllers::GetColumnShardController()->IsBackgroundEnabled(NYDBTest::ICSController::EBackground::Indexation)) { AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_indexation")("reason", "disabled"); return; } @@ -675,7 +686,8 @@ void TColumnShard::SetupIndexation() { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "start_indexation_tasks")("insert_overload_size", InsertTable->GetCountersCommitted().Bytes); CSCounters.OnSetupIndexation(); - i64 bytesToIndex = 0; + ui64 bytesToIndex = 0; + ui64 txBytesWrite = 0; std::vector<const NOlap::TInsertedData*> dataToIndex; dataToIndex.reserve(TLimits::MIN_SMALL_BLOBS_TO_INSERT); for (auto it = InsertTable->GetPathPriorities().rbegin(); it != InsertTable->GetPathPriorities().rend(); ++it) { @@ -683,11 +695,13 @@ void TColumnShard::SetupIndexation() { for (auto& data : pathInfo->GetCommitted()) { Y_ABORT_UNLESS(data.BlobSize()); bytesToIndex += data.BlobSize(); + txBytesWrite += data.GetTxVolume(); dataToIndex.push_back(&data); - if (bytesToIndex >= Limits.MaxInsertBytes) { + if (bytesToIndex >= (ui64)Limits.MaxInsertBytes || txBytesWrite >= NOlap::TGlobalLimits::TxWriteLimitBytes) { StartIndexTask(std::move(dataToIndex), bytesToIndex); dataToIndex.clear(); bytesToIndex = 0; + txBytesWrite = 0; } } } @@ -698,7 +712,7 @@ void TColumnShard::SetupIndexation() { } void TColumnShard::SetupCompaction() { - if (!AppDataVerified().ColumnShardConfig.GetCompactionEnabled()) { + if (!AppDataVerified().ColumnShardConfig.GetCompactionEnabled() || !NYDBTest::TControllers::GetColumnShardController()->IsBackgroundEnabled(NYDBTest::ICSController::EBackground::Compaction)) { AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_compaction")("reason", "disabled"); return; } @@ -706,8 +720,7 @@ void TColumnShard::SetupCompaction() { BackgroundController.CheckDeadlines(); while (BackgroundController.GetCompactionsCount() < TSettings::MAX_ACTIVE_COMPACTIONS) { - auto limits = CompactionLimits.Get(); - auto indexChanges = TablesManager.MutablePrimaryIndex().StartCompaction(limits, BackgroundController.GetConflictCompactionPortions()); + auto indexChanges = TablesManager.MutablePrimaryIndex().StartCompaction(DataLocksManager); if (!indexChanges) { LOG_S_DEBUG("Compaction not started: cannot prepare compaction at tablet " << TabletID()); break; @@ -715,83 +728,101 @@ void TColumnShard::SetupCompaction() { indexChanges->Start(*this); - auto actualIndexInfo = TablesManager.GetPrimaryIndex()->GetVersionedIndex(); - auto ev = std::make_unique<TEvPrivate::TEvWriteIndex>(std::move(actualIndexInfo), indexChanges, Settings.CacheDataAfterCompaction); + auto actualIndexInfo = std::make_shared<NOlap::TVersionedIndex>(TablesManager.GetPrimaryIndex()->GetVersionedIndex()); + auto ev = std::make_unique<TEvPrivate::TEvWriteIndex>(actualIndexInfo, indexChanges, Settings.CacheDataAfterCompaction); const TString externalTaskId = indexChanges->GetTaskIdentifier(); AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "compaction")("external_task_id", externalTaskId); NOlap::NResourceBroker::NSubscribe::ITask::StartResourceSubscription( ResourceSubscribeActor, std::make_shared<NOlap::NBlobOperations::NRead::ITask::TReadSubscriber>( - std::make_shared<TChangesReadTask>(std::move(ev), SelfId(), TabletID(), CompactionCounters), 0, indexChanges->CalcMemoryForUsage(), externalTaskId, CompactTaskSubscription)); + std::make_shared<TCompactChangesReadTask>(std::move(ev), SelfId(), TabletID(), CompactionCounters, GetLastPlannedSnapshot()), 0, indexChanges->CalcMemoryForUsage(), externalTaskId, CompactTaskSubscription)); } LOG_S_DEBUG("ActiveCompactions: " << BackgroundController.GetCompactionsCount() << " at tablet " << TabletID()); } -bool TColumnShard::SetupTtl(const THashMap<ui64, NOlap::TTiering>& pathTtls, const bool force) { - if (!AppDataVerified().ColumnShardConfig.GetTTLEnabled()) { +bool TColumnShard::SetupTtl(const THashMap<ui64, NOlap::TTiering>& pathTtls) { + if (!AppDataVerified().ColumnShardConfig.GetTTLEnabled() || !NYDBTest::TControllers::GetColumnShardController()->IsBackgroundEnabled(NYDBTest::ICSController::EBackground::TTL)) { AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_ttl")("reason", "disabled"); return false; } CSCounters.OnSetupTtl(); - if (BackgroundController.IsTtlActive()) { - ACFL_DEBUG("background", "ttl")("skip_reason", "in_progress"); - return false; - } - if (force) { - TablesManager.MutablePrimaryIndex().OnTieringModified(Tiers, TablesManager.GetTtl()); - } THashMap<ui64, NOlap::TTiering> eviction = pathTtls; for (auto&& i : eviction) { ACFL_DEBUG("background", "ttl")("path", i.first)("info", i.second.GetDebugString()); } - auto actualIndexInfo = TablesManager.GetPrimaryIndex()->GetVersionedIndex(); + auto actualIndexInfo = std::make_shared<NOlap::TVersionedIndex>(TablesManager.GetPrimaryIndex()->GetVersionedIndex()); const ui64 memoryUsageLimit = HasAppData() ? AppDataVerified().ColumnShardConfig.GetTieringsMemoryLimit() : ((ui64)512 * 1024 * 1024); - std::shared_ptr<NOlap::TTTLColumnEngineChanges> indexChanges = TablesManager.MutablePrimaryIndex().StartTtl( - eviction, BackgroundController.GetConflictTTLPortions(), memoryUsageLimit); + std::vector<std::shared_ptr<NOlap::TTTLColumnEngineChanges>> indexChanges = TablesManager.MutablePrimaryIndex().StartTtl(eviction, DataLocksManager, memoryUsageLimit); - if (!indexChanges) { + if (indexChanges.empty()) { ACFL_DEBUG("background", "ttl")("skip_reason", "no_changes"); return false; } - const TString externalTaskId = indexChanges->GetTaskIdentifier(); - const bool needWrites = indexChanges->NeedConstruction(); - ACFL_DEBUG("background", "ttl")("need_writes", needWrites); - - indexChanges->Start(*this); - auto ev = std::make_unique<TEvPrivate::TEvWriteIndex>(std::move(actualIndexInfo), indexChanges, false); - NYDBTest::TControllers::GetColumnShardController()->OnWriteIndexStart(TabletID(), indexChanges->TypeString()); - if (needWrites) { - NOlap::NResourceBroker::NSubscribe::ITask::StartResourceSubscription( - ResourceSubscribeActor, std::make_shared<NOlap::NBlobOperations::NRead::ITask::TReadSubscriber>( - std::make_shared<TChangesReadTask>(std::move(ev), SelfId(), TabletID(), CompactionCounters), 0, indexChanges->CalcMemoryForUsage(), externalTaskId, TTLTaskSubscription)); - } else { - ev->SetPutStatus(NKikimrProto::OK); - ActorContext().Send(SelfId(), std::move(ev)); + for (auto&& i : indexChanges) { + const TString externalTaskId = i->GetTaskIdentifier(); + const bool needWrites = i->NeedConstruction(); + ACFL_DEBUG("background", "ttl")("need_writes", needWrites); + i->Start(*this); + auto ev = std::make_unique<TEvPrivate::TEvWriteIndex>(actualIndexInfo, i, false); + if (needWrites) { + NOlap::NResourceBroker::NSubscribe::ITask::StartResourceSubscription( + ResourceSubscribeActor, std::make_shared<NOlap::NBlobOperations::NRead::ITask::TReadSubscriber>( + std::make_shared<TTTLChangesReadTask>(std::move(ev), SelfId(), TabletID(), CompactionCounters, GetLastPlannedSnapshot()), 0, i->CalcMemoryForUsage(), externalTaskId, TTLTaskSubscription)); + } else { + ev->SetPutStatus(NKikimrProto::OK); + ActorContext().Send(SelfId(), std::move(ev)); + } } return true; } -void TColumnShard::SetupCleanup() { +void TColumnShard::SetupCleanupPortions() { CSCounters.OnSetupCleanup(); - if (BackgroundController.IsCleanupActive()) { + if (!AppDataVerified().ColumnShardConfig.GetCleanupEnabled() || !NYDBTest::TControllers::GetColumnShardController()->IsBackgroundEnabled(NYDBTest::ICSController::EBackground::Cleanup)) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_cleanup")("reason", "disabled"); + return; + } + if (BackgroundController.IsCleanupPortionsActive()) { ACFL_DEBUG("background", "cleanup")("skip_reason", "in_progress"); return; } NOlap::TSnapshot cleanupSnapshot{GetMinReadStep(), 0}; - auto changes = - TablesManager.MutablePrimaryIndex().StartCleanup(cleanupSnapshot, TablesManager.MutablePathsToDrop(), TLimits::MAX_TX_RECORDS); + auto changes = TablesManager.MutablePrimaryIndex().StartCleanupPortions(cleanupSnapshot, TablesManager.GetPathsToDrop(), DataLocksManager); if (!changes) { ACFL_DEBUG("background", "cleanup")("skip_reason", "no_changes"); return; } ACFL_DEBUG("background", "cleanup")("changes_info", changes->DebugString()); - auto actualIndexInfo = TablesManager.GetPrimaryIndex()->GetVersionedIndex(); - auto ev = std::make_unique<TEvPrivate::TEvWriteIndex>(std::move(actualIndexInfo), changes, false); + auto actualIndexInfo = std::make_shared<NOlap::TVersionedIndex>(TablesManager.GetPrimaryIndex()->GetVersionedIndex()); + auto ev = std::make_unique<TEvPrivate::TEvWriteIndex>(actualIndexInfo, changes, false); + ev->SetPutStatus(NKikimrProto::OK); // No new blobs to write + + changes->Start(*this); + + Send(SelfId(), ev.release()); +} + +void TColumnShard::SetupCleanupTables() { + CSCounters.OnSetupCleanup(); + if (BackgroundController.IsCleanupTablesActive()) { + ACFL_DEBUG("background", "cleanup")("skip_reason", "in_progress"); + return; + } + + auto changes = TablesManager.MutablePrimaryIndex().StartCleanupTables(TablesManager.MutablePathsToDrop()); + if (!changes) { + ACFL_DEBUG("background", "cleanup")("skip_reason", "no_changes"); + return; + } + + ACFL_DEBUG("background", "cleanup")("changes_info", changes->DebugString()); + auto actualIndexInfo = std::make_shared<NOlap::TVersionedIndex>(TablesManager.GetPrimaryIndex()->GetVersionedIndex()); + auto ev = std::make_unique<TEvPrivate::TEvWriteIndex>(actualIndexInfo, changes, false); ev->SetPutStatus(NKikimrProto::OK); // No new blobs to write changes->Start(*this); @@ -800,6 +831,10 @@ void TColumnShard::SetupCleanup() { } void TColumnShard::SetupGC() { + if (!NYDBTest::TControllers::GetColumnShardController()->IsBackgroundEnabled(NYDBTest::ICSController::EBackground::GC)) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_gc")("reason", "disabled"); + return; + } for (auto&& i : StoragesManager->GetStorages()) { i.second->StartGC(); } @@ -825,27 +860,247 @@ void TColumnShard::Die(const TActorContext& ctx) { CleanupActors(ctx); NTabletPipe::CloseAndForgetClient(SelfId(), StatsReportPipe); UnregisterMediatorTimeCast(); + NYDBTest::TControllers::GetColumnShardController()->OnTabletStopped(*this); return IActor::Die(ctx); } +void TColumnShard::Handle(NActors::TEvents::TEvUndelivered::TPtr& ev, const TActorContext&) { + ui32 eventType = ev->Get()->SourceType; + switch (eventType) { + case NOlap::NDataSharing::NEvents::TEvSendDataFromSource::EventType: + case NOlap::NDataSharing::NEvents::TEvAckDataToSource::EventType: + case NOlap::NDataSharing::NEvents::TEvApplyLinksModification::EventType: + case NOlap::NDataSharing::NEvents::TEvStartToSource::EventType: + case NOlap::NDataSharing::NEvents::TEvAckFinishToSource::EventType: + case NOlap::NDataSharing::NEvents::TEvFinishedFromSource::EventType: + SharingSessionsManager->InitializeEventsExchange(*this, ev->Cookie); + break; + } +} + +void TColumnShard::Handle(NOlap::NDataSharing::NEvents::TEvProposeFromInitiator::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvProposeFromInitiator"); + auto reqSession = std::make_shared<NOlap::NDataSharing::TDestinationSession>(); + auto conclusion = reqSession->DeserializeDataFromProto(ev->Get()->Record.GetSession(), TablesManager.GetPrimaryIndexAsVerified<NOlap::TColumnEngineForLogs>()); + if (!conclusion) { + if (!reqSession->GetInitiatorController()) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "cannot_parse_start_data_sharing_from_initiator"); + } else { + reqSession->GetInitiatorController().ProposeError(ev->Get()->Record.GetSession().GetSessionId(), conclusion.GetErrorMessage()); + } + return; + } + + auto currentSession = SharingSessionsManager->GetDestinationSession(reqSession->GetSessionId()); + if (currentSession) { + reqSession->GetInitiatorController().ProposeError(ev->Get()->Record.GetSession().GetSessionId(), "Session exists already"); + return; + } + + auto txConclusion = SharingSessionsManager->ProposeDestSession(this, reqSession); + Execute(txConclusion.release(), ctx); +} + +void TColumnShard::Handle(NOlap::NDataSharing::NEvents::TEvConfirmFromInitiator::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvConfirmFromInitiator"); + auto currentSession = SharingSessionsManager->GetDestinationSession(ev->Get()->Record.GetSessionId()); + if (!currentSession) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvStartFromInitiator")("problem", "not_exists_session")("session_id", ev->Get()->Record.GetSessionId()); + return; + } + if (currentSession->IsConfirmed()) { + currentSession->GetInitiatorController().ConfirmSuccess(ev->Get()->Record.GetSessionId()); + } else { + + auto txConclusion = SharingSessionsManager->ConfirmDestSession(this, currentSession); + Execute(txConclusion.release(), ctx); + } +} + +void TColumnShard::Handle(NOlap::NDataSharing::NEvents::TEvStartToSource::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvStartToSource"); + auto reqSession = std::make_shared<NOlap::NDataSharing::TSourceSession>((NOlap::TTabletId)TabletID()); + reqSession->DeserializeFromProto(ev->Get()->Record.GetSession(), {}, {}).Validate(); + + auto currentSession = SharingSessionsManager->GetSourceSession(reqSession->GetSessionId()); + if (currentSession) { + AFL_VERIFY(currentSession->IsEqualTo(*reqSession))("session_current", currentSession->DebugString())("session_new", reqSession->DebugString()); + return; + } + + auto txConclusion = SharingSessionsManager->InitializeSourceSession(this, reqSession); + Execute(txConclusion.release(), ctx); +}; + +void TColumnShard::Handle(NOlap::NDataSharing::NEvents::TEvSendDataFromSource::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvSendDataFromSource"); + auto currentSession = SharingSessionsManager->GetDestinationSession(ev->Get()->Record.GetSessionId()); + if (!currentSession) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "ignore_inactual_sharing_session")("sesion_id", ev->Get()->Record.GetSessionId()); + return; + } + + THashMap<ui64, NOlap::NDataSharing::NEvents::TPathIdData> dataByPathId; + for (auto&& i : ev->Get()->Record.GetPathIdData()) { + auto schema = TablesManager.GetPrimaryIndexAsVerified<NOlap::TColumnEngineForLogs>().GetVersionedIndex().GetLastSchema(); + AFL_VERIFY(schema); + auto data = NOlap::NDataSharing::NEvents::TPathIdData::BuildFromProto(i, schema->GetIndexInfo()); + AFL_VERIFY(data.IsSuccess())("error", data.GetErrorMessage()); + AFL_VERIFY(dataByPathId.emplace(i.GetPathId(), data.DetachResult()).second); + } + + auto txConclusion = currentSession->ReceiveData(this, dataByPathId, ev->Get()->Record.GetPackIdx(), (NOlap::TTabletId)ev->Get()->Record.GetSourceTabletId(), currentSession); + if (!txConclusion) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_received_data"); + } else { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "on_received_data"); + Execute(txConclusion->release(), ctx); + } +}; + +void TColumnShard::Handle(NOlap::NDataSharing::NEvents::TEvAckDataToSource::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvAckDataToSource"); + auto currentSession = SharingSessionsManager->GetSourceSession(ev->Get()->Record.GetSessionId()); + if (!currentSession) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "ignore_inactual_sharing_session")("sesion_id", ev->Get()->Record.GetSessionId()); + return; + } + + auto txConclusion = currentSession->AckData(this, ev->Get()->Record.GetPackIdx(), currentSession); + if (!txConclusion) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_ack_data"); + } else { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "on_ack_data"); + Execute(txConclusion->release(), ctx); + } +}; + +void TColumnShard::Handle(NOlap::NDataSharing::NEvents::TEvAckFinishToSource::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvAckFinishToSource"); + auto currentSession = SharingSessionsManager->GetSourceSession(ev->Get()->Record.GetSessionId()); + if (!currentSession) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "ignore_inactual_sharing_session")("sesion_id", ev->Get()->Record.GetSessionId()); + return; + } + + auto txConclusion = currentSession->AckFinished(this, currentSession); + if (!txConclusion) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_ack_finish"); + } else { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "on_ack_finish"); + Execute(txConclusion->release(), ctx); + } +}; + +void TColumnShard::Handle(NOlap::NDataSharing::NEvents::TEvFinishedFromSource::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvFinishedFromSource"); + auto currentSession = SharingSessionsManager->GetDestinationSession(ev->Get()->Record.GetSessionId()); + if (!currentSession) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "ignore_inactual_sharing_session")("sesion_id", ev->Get()->Record.GetSessionId()); + return; + } + + auto txConclusion = currentSession->ReceiveFinished(this, (NOlap::TTabletId)ev->Get()->Record.GetSourceTabletId(), currentSession); + if (!txConclusion) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_finished_data")("error", txConclusion.GetErrorMessage()); + } else { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "on_finished_data"); + Execute(txConclusion->release(), ctx); + } +}; + +void TColumnShard::Handle(NOlap::NExport::NEvents::TEvExportSaveCursor::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "Export")("event", "NExport::NEvents::TEvExportSaveCursor"); + auto currentSession = ExportsManager->GetSessionOptional(ev->Get()->GetIdentifier()); + if (!currentSession) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "ignore_inactual_export_session")("sesion_id", ev->Get()->GetIdentifier().ToString()); + return; + } + + auto txConclusion = currentSession->SaveCursorTx(this, ev->Get()->DetachCursor(), currentSession); + AFL_VERIFY(txConclusion.IsSuccess())("error", txConclusion.GetErrorMessage()); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "on_save_cursor")("id", ev->Get()->GetIdentifier().ToString()); + Execute(txConclusion->release(), ctx); +} + +void TColumnShard::Handle(NOlap::NDataSharing::NEvents::TEvAckFinishFromInitiator::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvAckFinishFromInitiator"); + auto currentSession = SharingSessionsManager->GetDestinationSession(ev->Get()->Record.GetSessionId()); + if (!currentSession) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "ignore_inactual_sharing_session")("sesion_id", ev->Get()->Record.GetSessionId()); + return; + } + + auto txConclusion = currentSession->AckInitiatorFinished(this, currentSession); + if (!txConclusion) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_initiator_ack_finished_data"); + } else { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "on_initiator_ack_finished_data"); + Execute(txConclusion->release(), ctx); + } +}; + +void TColumnShard::Handle(NOlap::NDataSharing::NEvents::TEvApplyLinksModification::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvApplyLinksModification")("info", ev->Get()->Record.DebugString()); + NActors::TLogContextGuard gLogging = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", TabletID())("event", "TEvChangeBlobsOwning"); + + auto task = std::make_shared<NOlap::NDataSharing::TTaskForTablet>((NOlap::TTabletId)TabletID()); + auto parsed = task->DeserializeFromProto(ev->Get()->Record.GetTask()); + AFL_VERIFY(!!parsed)("error", parsed.GetErrorMessage()); + + AFL_VERIFY(task->GetTabletId() == (NOlap::TTabletId)TabletID()); + auto txConclusion = task->BuildModificationTransaction(this, (NOlap::TTabletId)ev->Get()->Record.GetInitiatorTabletId(), ev->Get()->Record.GetSessionId(), ev->Get()->Record.GetPackIdx(), task); + AFL_VERIFY(!!txConclusion)("error", txConclusion.GetErrorMessage()); + Execute(txConclusion->release(), ctx); +} + +void TColumnShard::Handle(NOlap::NDataSharing::NEvents::TEvApplyLinksModificationFinished::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvApplyLinksModificationFinished"); + auto currentSession = SharingSessionsManager->GetSourceSession(ev->Get()->Record.GetSessionId()); + if (!currentSession) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "ignore_inactual_sharing_session")("sesion_id", ev->Get()->Record.GetSessionId()); + return; + } + const NOlap::TTabletId modifiedTabletId = (NOlap::TTabletId)ev->Get()->Record.GetModifiedTabletId(); + auto txConclusion = currentSession->AckLinks(this, modifiedTabletId, ev->Get()->Record.GetPackIdx(), currentSession); + + if (!txConclusion) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_change_links_finish")("error", txConclusion.GetErrorMessage())("tablet_id", modifiedTabletId); + } else { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "on_change_links_finish")("tablet_id", modifiedTabletId); + Execute(txConclusion->release(), ctx); + } +} + +void TColumnShard::Handle(NOlap::NBlobOperations::NEvents::TEvDeleteSharedBlobs::TPtr& ev, const TActorContext& ctx) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("process", "BlobsSharing")("event", "TEvDeleteSharedBlobs"); + NActors::TLogContextGuard gLogging = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", TabletID())("event", "TEvDeleteSharedBlobs"); + auto removeAction = StoragesManager->GetOperator(ev->Get()->Record.GetStorageId())->StartDeclareRemovingAction(NOlap::NBlobOperations::EConsumer::CLEANUP_SHARED_BLOBS); + for (auto&& i : ev->Get()->Record.GetBlobIds()) { + auto blobId = NOlap::TUnifiedBlobId::BuildFromString(i, nullptr); + AFL_VERIFY(!!blobId)("problem", blobId.GetErrorMessage()); + removeAction->DeclareRemove((NOlap::TTabletId)ev->Get()->Record.GetSourceTabletId(), *blobId); + } + Execute(new TTxRemoveSharedBlobs(this, removeAction, NActors::ActorIdFromProto(ev->Get()->Record.GetSourceActorId())), ctx); +} + void TColumnShard::Handle(NMetadata::NProvider::TEvRefreshSubscriberData::TPtr& ev) { Y_ABORT_UNLESS(Tiers); AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("event", "TEvRefreshSubscriberData")("snapshot", ev->Get()->GetSnapshot()->SerializeToString()); Tiers->TakeConfigs(ev->Get()->GetSnapshot(), nullptr); } -void TColumnShard::ActivateTiering(const ui64 pathId, const TString& useTiering, const bool onTabletInit) { - Y_ABORT_UNLESS(!!Tiers); - if (!!Tiers) { - if (useTiering) { - Tiers->EnablePathId(pathId, useTiering); - } else { - Tiers->DisablePathId(pathId); - } +void TColumnShard::ActivateTiering(const ui64 pathId, const TString& useTiering) { + AFL_VERIFY(Tiers); + if (useTiering) { + AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("event", "activate_tiering")("path_id", pathId)("tiering", useTiering); } - if (!onTabletInit) { - OnTieringModified(); + if (useTiering) { + Tiers->EnablePathId(pathId, useTiering); + } else { + Tiers->DisablePathId(pathId); } + OnTieringModified(pathId); } void TColumnShard::Enqueue(STFUNC_SIG) { @@ -858,12 +1113,19 @@ void TColumnShard::Enqueue(STFUNC_SIG) { } } -void TColumnShard::OnTieringModified() { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "OnTieringModified"); - StoragesManager->OnTieringModified(Tiers); - if (TablesManager.HasPrimaryIndex()) { - TablesManager.MutablePrimaryIndex().OnTieringModified(Tiers, TablesManager.GetTtl()); +void TColumnShard::OnTieringModified(const std::optional<ui64> pathId) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "OnTieringModified")("path_id", pathId); + if (Tiers->IsReady()) { + StoragesManager->OnTieringModified(Tiers); + if (TablesManager.HasPrimaryIndex()) { + TablesManager.MutablePrimaryIndex().OnTieringModified(Tiers, TablesManager.GetTtl(), pathId); + } } } +const NKikimr::NColumnShard::NTiers::TManager* TColumnShard::GetTierManagerPointer(const TString& tierId) const { + Y_ABORT_UNLESS(!!Tiers); + return Tiers->GetManagerOptional(tierId); +} + } diff --git a/ydb/core/tx/columnshard/columnshard_impl.h b/ydb/core/tx/columnshard/columnshard_impl.h index 126e163c8fe3..6132d60043d7 100644 --- a/ydb/core/tx/columnshard/columnshard_impl.h +++ b/ydb/core/tx/columnshard/columnshard_impl.h @@ -6,8 +6,9 @@ #include "columnshard_common.h" #include "columnshard_ttl.h" #include "columnshard_private_events.h" -#include "blob_manager.h" #include "tables_manager.h" + +#include "blobs_action/events/delete_blobs.h" #include "transactions/tx_controller.h" #include "inflight_request_tracker.h" #include "counters/columnshard.h" @@ -15,6 +16,17 @@ #include "resource_subscriber/task.h" #include "normalizer/abstract/abstract.h" +#include "export/events/events.h" + +#include "data_sharing/destination/events/control.h" +#include "data_sharing/source/events/control.h" +#include "data_sharing/destination/events/transfer.h" +#include "data_sharing/source/events/transfer.h" +#include "data_sharing/manager/sessions.h" +#include "data_sharing/manager/shared_blobs.h" +#include "data_sharing/common/transactions/tx_extension.h" +#include "data_sharing/modification/events/change_owning.h" + #include <ydb/core/base/tablet_pipecache.h> #include <ydb/core/tablet/tablet_counters.h> #include <ydb/core/tablet/tablet_pipe_client_cache.h> @@ -22,17 +34,38 @@ #include <ydb/core/tablet_flat/tablet_flat_executed.h> #include <ydb/core/tx/data_events/events.h> #include <ydb/core/tx/tiering/common.h> -#include <ydb/core/tx/tiering/manager.h> #include <ydb/core/tx/time_cast/time_cast.h> #include <ydb/core/tx/tx_processing.h> #include <ydb/services/metadata/service.h> +#include <ydb/services/metadata/abstract/common.h> namespace NKikimr::NOlap { -class TCleanupColumnEngineChanges; +class TCleanupPortionsColumnEngineChanges; +class TCleanupTablesColumnEngineChanges; class TTTLColumnEngineChanges; class TChangesWithAppend; class TCompactColumnEngineChanges; class TInsertColumnEngineChanges; +class TStoragesManager; + +namespace NReader { +class TTxScan; +namespace NPlain { +class TIndexScannerConstructor; +} +} + +namespace NDataSharing { +class TTxDataFromSource; +class TTxDataAckToSource; +class TTxFinishAckToSource; +class TTxFinishAckFromInitiator; +} + +namespace NExport { +class TExportsManager; +} + namespace NBlobOperations { namespace NBlobStorage { class TWriteAction; @@ -49,7 +82,9 @@ class TGeneralCompactColumnEngineChanges; namespace NKikimr::NColumnShard { + class TTxInsertTableCleanup; +class TTxRemoveSharedBlobs; class TOperationsManager; extern bool gAllowLogBatchingDefaultValue; @@ -105,7 +140,6 @@ class TColumnShard friend class TTxWrite; friend class TTxReadBase; friend class TTxRead; - friend class TTxScan; friend class TTxWriteIndex; friend class TTxExportFinish; friend class TTxRunGC; @@ -113,8 +147,10 @@ class TColumnShard friend class TTxReadBlobRanges; friend class TTxApplyNormalizer; friend class TTxMonitoring; + friend class TTxRemoveSharedBlobs; - friend class NOlap::TCleanupColumnEngineChanges; + friend class NOlap::TCleanupPortionsColumnEngineChanges; + friend class NOlap::TCleanupTablesColumnEngineChanges; friend class NOlap::TTTLColumnEngineChanges; friend class NOlap::TChangesWithAppend; friend class NOlap::TCompactColumnEngineChanges; @@ -125,6 +161,16 @@ class TColumnShard friend class NOlap::NBlobOperations::NBlobStorage::TOperator; friend class NOlap::NBlobOperations::NTier::TOperator; + friend class NOlap::NDataSharing::TTxDataFromSource; + friend class NOlap::NDataSharing::TTxDataAckToSource; + friend class NOlap::NDataSharing::TTxFinishAckToSource; + friend class NOlap::NDataSharing::TTxFinishAckFromInitiator; + + friend class NOlap::TStoragesManager; + + friend class NOlap::NReader::TTxScan; + friend class NOlap::NReader::NPlain::TIndexScannerConstructor; + class TStoragesManager; friend class TTxController; @@ -134,6 +180,7 @@ class TColumnShard friend class TSchemaTransactionOperator; friend class TLongTxTransactionOperator; friend class TEvWriteTransactionOperator; + friend class TBackupTransactionOperator; class TTxProgressTx; class TTxProposeCancel; @@ -163,6 +210,24 @@ class TColumnShard void Handle(TEvPrivate::TEvTieringModified::TPtr& ev, const TActorContext&); void Handle(TEvPrivate::TEvNormalizerResult::TPtr& ev, const TActorContext&); + void Handle(NActors::TEvents::TEvUndelivered::TPtr& ev, const TActorContext&); + + void Handle(NOlap::NBlobOperations::NEvents::TEvDeleteSharedBlobs::TPtr& ev, const TActorContext& ctx); + + void Handle(NOlap::NDataSharing::NEvents::TEvApplyLinksModification::TPtr& ev, const TActorContext& ctx); + void Handle(NOlap::NDataSharing::NEvents::TEvApplyLinksModificationFinished::TPtr& ev, const TActorContext& ctx); + + void Handle(NOlap::NDataSharing::NEvents::TEvProposeFromInitiator::TPtr& ev, const TActorContext& ctx); + void Handle(NOlap::NDataSharing::NEvents::TEvConfirmFromInitiator::TPtr& ev, const TActorContext& ctx); + void Handle(NOlap::NDataSharing::NEvents::TEvStartToSource::TPtr& ev, const TActorContext& ctx); + void Handle(NOlap::NDataSharing::NEvents::TEvSendDataFromSource::TPtr& ev, const TActorContext& ctx); + void Handle(NOlap::NDataSharing::NEvents::TEvAckDataToSource::TPtr& ev, const TActorContext& ctx); + void Handle(NOlap::NDataSharing::NEvents::TEvFinishedFromSource::TPtr& ev, const TActorContext& ctx); + void Handle(NOlap::NDataSharing::NEvents::TEvAckFinishToSource::TPtr& ev, const TActorContext& ctx); + void Handle(NOlap::NDataSharing::NEvents::TEvAckFinishFromInitiator::TPtr& ev, const TActorContext& ctx); + + void Handle(NOlap::NExport::NEvents::TEvExportSaveCursor::TPtr& ev, const TActorContext& ctx); + ITransaction* CreateTxInitSchema(); void OnActivateExecutor(const TActorContext& ctx) override; @@ -175,10 +240,7 @@ class TColumnShard Y_UNUSED(ctx); } - const NTiers::TManager* GetTierManagerPointer(const TString& tierId) const { - Y_ABORT_UNLESS(!!Tiers); - return Tiers->GetManagerOptional(tierId); - } + const NTiers::TManager* GetTierManagerPointer(const TString& tierId) const; void Die(const TActorContext& ctx) override; @@ -206,24 +268,21 @@ class TColumnShard TabletCounters->Cumulative()[counter].Increment(num); } - void IncCounter(NColumnShard::EPercentileCounters counter, const TDuration& latency) const { - TabletCounters->Percentile()[counter].IncrementFor(latency.MicroSeconds()); - } - - void ActivateTiering(const ui64 pathId, const TString& useTiering, const bool onTabletInit = false); - void OnTieringModified(); + void ActivateTiering(const ui64 pathId, const TString& useTiering); + void OnTieringModified(const std::optional<ui64> pathId = {}); public: enum class EOverloadStatus { ShardTxInFly /* "shard_tx" */, ShardWritesInFly /* "shard_writes" */, ShardWritesSizeInFly /* "shard_writes_size" */, InsertTable /* "insert_table" */, + OverloadMetadata /* "overload_metadata" */, Disk /* "disk" */, None /* "none" */ }; private: - void OverloadWriteFail(const EOverloadStatus overloadReason, const NEvWrite::TWriteData& writeData, std::unique_ptr<NActors::IEventBase>&& event, const TActorContext& ctx); + void OverloadWriteFail(const EOverloadStatus overloadReason, const NEvWrite::TWriteData& writeData, const ui64 cookie, std::unique_ptr<NActors::IEventBase>&& event, const TActorContext& ctx); EOverloadStatus CheckOverloaded(const ui64 tableId) const; protected: @@ -240,7 +299,7 @@ class TColumnShard LOG_S_WARN("TColumnShard.StateBroken at " << TabletID() << " unhandled event type: " << ev->GetTypeRewrite() << " event: " << ev->ToString()); - Send(IEventHandle::ForwardOnNondelivery(std::move(ev), TEvents::TEvUndelivered::ReasonActorUnknown)); + Send(IEventHandle::ForwardOnNondelivery(std::move(ev), NActors::TEvents::TEvUndelivered::ReasonActorUnknown)); break; } } @@ -273,6 +332,23 @@ class TColumnShard HFunc(TEvPrivate::TEvWriteDraft, Handle); HFunc(TEvPrivate::TEvGarbageCollectionFinished, Handle); HFunc(TEvPrivate::TEvTieringModified, Handle); + + HFunc(NActors::TEvents::TEvUndelivered, Handle); + + HFunc(NOlap::NBlobOperations::NEvents::TEvDeleteSharedBlobs, Handle); + HFunc(NOlap::NDataSharing::NEvents::TEvApplyLinksModification, Handle); + HFunc(NOlap::NDataSharing::NEvents::TEvApplyLinksModificationFinished, Handle); + + HFunc(NOlap::NDataSharing::NEvents::TEvProposeFromInitiator, Handle); + HFunc(NOlap::NDataSharing::NEvents::TEvConfirmFromInitiator, Handle); + HFunc(NOlap::NDataSharing::NEvents::TEvStartToSource, Handle); + HFunc(NOlap::NDataSharing::NEvents::TEvSendDataFromSource, Handle); + HFunc(NOlap::NDataSharing::NEvents::TEvAckDataToSource, Handle); + HFunc(NOlap::NDataSharing::NEvents::TEvFinishedFromSource, Handle); + HFunc(NOlap::NDataSharing::NEvents::TEvAckFinishToSource, Handle); + HFunc(NOlap::NDataSharing::NEvents::TEvAckFinishFromInitiator, Handle); + + HFunc(NOlap::NExport::NEvents::TEvExportSaveCursor, Handle); default: if (!HandleDefaultEvents(ev, SelfId())) { LOG_S_WARN("TColumnShard.StateWork at " << TabletID() @@ -286,6 +362,10 @@ class TColumnShard private: std::unique_ptr<TTxController> ProgressTxController; std::unique_ptr<TOperationsManager> OperationsManager; + std::shared_ptr<NOlap::NDataSharing::TSessionsManager> SharingSessionsManager; + std::shared_ptr<NOlap::IStoragesManager> StoragesManager; + std::shared_ptr<NOlap::NExport::TExportsManager> ExportsManager; + std::shared_ptr<NOlap::NDataLocks::TManager> DataLocksManager; using TSchemaPreset = TSchemaPreset; using TTableInfo = TTableInfo; @@ -356,14 +436,12 @@ class TColumnShard ui64 LastExportNo = 0; ui64 OwnerPathId = 0; - ui64 TabletTxCounter = 0; ui64 StatsReportRound = 0; TString OwnerPath; TIntrusivePtr<TMediatorTimecastEntry> MediatorTimeCastEntry; bool MediatorTimeCastRegistered = false; TSet<ui64> MediatorTimeCastWaitingSteps; - TDuration MaxReadStaleness = TDuration::Minutes(5); // TODO: Make configurable? const TDuration PeriodicWakeupActivationPeriod; TDuration FailActivationDelay = TDuration::Seconds(1); const TDuration StatsReportInterval; @@ -374,7 +452,6 @@ class TColumnShard TActorId BufferizationWriteActorId; TActorId StatsReportPipe; - std::shared_ptr<NOlap::IStoragesManager> StoragesManager; TInFlightReadsTracker InFlightReadsTracker; TTablesManager TablesManager; std::shared_ptr<TTiersManager> Tiers; @@ -386,7 +463,6 @@ class TColumnShard NOlap::NResourceBroker::NSubscribe::TTaskContext InsertTaskSubscription; NOlap::NResourceBroker::NSubscribe::TTaskContext CompactTaskSubscription; NOlap::NResourceBroker::NSubscribe::TTaskContext TTLTaskSubscription; - const TScanCounters ReadCounters; const TScanCounters ScanCounters; const TIndexationCounters CompactionCounters = TIndexationCounters("GeneralCompaction"); const TIndexationCounters IndexationCounters = TIndexationCounters("Indexation"); @@ -394,7 +470,6 @@ class TColumnShard const TCSCounters CSCounters; TWritesMonitor WritesMonitor; - bool ProgressTxInFlight = false; THashMap<ui64, TInstant> ScanTxInFlight; THashMap<TWriteId, TLongTxWriteInfo> LongTxWrites; @@ -404,7 +479,6 @@ class TColumnShard TBackgroundController BackgroundController; TSettings Settings; TLimits Limits; - TCompactionLimits CompactionLimits; NOlap::TNormalizationController NormalizerController; void TryRegisterMediatorTimeCast(); @@ -416,6 +490,10 @@ class TColumnShard NOlap::TSnapshot GetMaxReadVersion() const; ui64 GetMinReadStep() const; ui64 GetOutdatedStep() const; + TDuration GetTxCompleteLag() const { + ui64 mediatorTime = MediatorTimeCastEntry ? MediatorTimeCastEntry->Get(TabletID()) : 0; + return ProgressTxController->GetTxCompleteLag(mediatorTime); + } TWriteId HasLongTxWrite(const NLongTxService::TLongTxId& longTxId, const ui32 partId); TWriteId GetLongTxWrite(NIceDb::TNiceDb& db, const NLongTxService::TLongTxId& longTxId, const ui32 partId); @@ -428,7 +506,7 @@ class TColumnShard TWriteId BuildNextWriteId(NIceDb::TNiceDb& db); void EnqueueProgressTx(const TActorContext& ctx); - void EnqueueBackgroundActivities(bool periodic = false, TBackgroundActivity activity = TBackgroundActivity::All()); + void EnqueueBackgroundActivities(const bool periodic = false); virtual void Enqueue(STFUNC_SIG) override; void UpdateSchemaSeqNo(const TMessageSeqNo& seqNo, NTabletFlatExecutor::TTransactionContext& txc); @@ -444,8 +522,9 @@ class TColumnShard void StartIndexTask(std::vector<const NOlap::TInsertedData*>&& dataToIndex, const i64 bytesToIndex); void SetupIndexation(); void SetupCompaction(); - bool SetupTtl(const THashMap<ui64, NOlap::TTiering>& pathTtls = {}, const bool force = false); - void SetupCleanup(); + bool SetupTtl(const THashMap<ui64, NOlap::TTiering>& pathTtls = {}); + void SetupCleanupPortions(); + void SetupCleanupTables(); void SetupCleanupInsertTable(); void SetupGC(); @@ -460,14 +539,55 @@ class TColumnShard void ConfigureStats(const NOlap::TColumnEngineStats& indexStats, ::NKikimrTableStats::TTableStats* tabletStats); void FillTxTableStats(::NKikimrTableStats::TTableStats* tableStats) const; - static TDuration GetControllerPeriodicWakeupActivationPeriod(); - static TDuration GetControllerStatsReportInterval(); - public: + ui64 TabletTxCounter = 0; + + template <class T> + const T& GetIndexAs() const { + return TablesManager.GetPrimaryIndexAsVerified<T>(); + } + + const NOlap::IColumnEngine* GetIndexOptional() const { + return TablesManager.GetPrimaryIndex() ? TablesManager.GetPrimaryIndex().get() : nullptr; + } + + template <class T> + T& MutableIndexAs() { + return TablesManager.MutablePrimaryIndexAsVerified<T>(); + } + + TTxController& GetProgressTxController() const { + AFL_VERIFY(ProgressTxController); + return *ProgressTxController; + } + + bool HasIndex() const { + return !!TablesManager.GetPrimaryIndex(); + } + + NOlap::TSnapshot GetLastPlannedSnapshot() const { + return NOlap::TSnapshot(LastPlannedStep, LastPlannedTxId); + } + + const std::shared_ptr<NOlap::NExport::TExportsManager>& GetExportsManager() const { + return ExportsManager; + } + const std::shared_ptr<NOlap::IStoragesManager>& GetStoragesManager() const { + AFL_VERIFY(StoragesManager); return StoragesManager; } + const std::shared_ptr<NOlap::NDataLocks::TManager>& GetDataLocksManager() const { + AFL_VERIFY(DataLocksManager); + return DataLocksManager; + } + + const NOlap::TInsertTable& GetInsertTable() const { + AFL_VERIFY(!!InsertTable); + return *InsertTable; + } + static constexpr NKikimrServices::TActivity::EType ActorActivityType() { return NKikimrServices::TActivity::TX_COLUMNSHARD_ACTOR; } diff --git a/ydb/core/tx/columnshard/columnshard_private_events.h b/ydb/core/tx/columnshard/columnshard_private_events.h index e258f724fcf3..70c1870aa34a 100644 --- a/ydb/core/tx/columnshard/columnshard_private_events.h +++ b/ydb/core/tx/columnshard/columnshard_private_events.h @@ -1,6 +1,5 @@ #pragma once -#include "blob_manager.h" #include "blobs_action/abstract/gc.h" #include "defs.h" @@ -37,6 +36,11 @@ struct TEvPrivate { EvWritingAddDataToBuffer, EvWritingFlushBuffer, + EvExportWritingFinished, + EvExportWritingFailed, + EvExportCursorSaved, + EvExportSaveCursor, + EvEnd }; @@ -76,7 +80,7 @@ struct TEvPrivate { /// Common event for Indexing and GranuleCompaction: write index data in TTxWriteIndex transaction. struct TEvWriteIndex : public TEventLocal<TEvWriteIndex, EvWriteIndex> { - NOlap::TVersionedIndex IndexInfo; + std::shared_ptr<NOlap::TVersionedIndex> IndexInfo; std::shared_ptr<NOlap::TColumnEngineChanges> IndexChanges; bool GranuleCompaction{false}; TUsage ResourceUsage; @@ -84,10 +88,10 @@ struct TEvPrivate { TDuration Duration; TBlobPutResult::TPtr PutResult; - TEvWriteIndex(NOlap::TVersionedIndex&& indexInfo, + TEvWriteIndex(const std::shared_ptr<NOlap::TVersionedIndex>& indexInfo, std::shared_ptr<NOlap::TColumnEngineChanges> indexChanges, bool cacheData) - : IndexInfo(std::move(indexInfo)) + : IndexInfo(indexInfo) , IndexChanges(indexChanges) , CacheData(cacheData) { diff --git a/ydb/core/tx/columnshard/columnshard_schema.h b/ydb/core/tx/columnshard/columnshard_schema.h index 1690fa0bfec7..25d7c11fcca4 100644 --- a/ydb/core/tx/columnshard/columnshard_schema.h +++ b/ydb/core/tx/columnshard/columnshard_schema.h @@ -38,13 +38,27 @@ struct Schema : NIceDb::Schema { ColumnsTableId, CountersTableId, OperationsTableId, - IndexesTableId + IndexesTableId, + + LocksTableId, + LockRangesTableId, + LockConflictsTableId, + LockVolatileDependenciesTableId, + + SharedBlobIdsTableId, + BorrowedBlobIdsTableId, + SourceSessionsTableId, + DestinationSessionsTableId, + OperationTxIdsId, + BackupIdsDeprecated, + ExportSessionsId }; enum class ETierTables: ui32 { TierBlobsDraft = 1024, TierBlobsToKeep, - TierBlobsToDelete + TierBlobsToDelete, + TierBlobsToDeleteWT }; enum class EValueIds : ui32 { @@ -60,6 +74,9 @@ struct Schema : NIceDb::Schema { LastExportNumber = 10, OwnerPathId = 11, OwnerPath = 12, + LastCompletedStep = 13, + LastCompletedTxId = 14, + LastNormalizerSequentialId = 15, }; enum class EInsertTableIds : ui8 { @@ -68,9 +85,26 @@ struct Schema : NIceDb::Schema { Aborted = 2, }; + enum class ECommonTables { + Value = 1, + TxInfo = 2, + SchemaPresetInfo = 3, + TtlSettingsPresetInfo = 4, + TableInfo = 5, + LongTxWrites = 6, + BlobsToKeep = 7, + BlobsToDelete = 8, + SchemaPresetVersionInfo = 9, + TtlSettingsPresetVersionInfo = 10, + TableVersionInfo = 11, + SmallBlobs = 12, + OneToOneEvictedBlobs = 13, + BlobsToDeleteWT = 14 + }; + // Tablet tables - struct Value : Table<1> { + struct Value : Table<(ui32)ECommonTables::Value> { struct Id : Column<1, NScheme::NTypeIds::Uint32> {}; // one of EValueIds struct Digit : Column<2, NScheme::NTypeIds::Uint64> {}; struct Bytes : Column<3, NScheme::NTypeIds::String> {}; @@ -79,7 +113,7 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<Id, Digit, Bytes>; }; - struct TxInfo : Table<2> { + struct TxInfo : Table<(ui32)ECommonTables::TxInfo> { struct TxId : Column<1, NScheme::NTypeIds::Uint64> {}; struct TxKind : Column<2, NScheme::NTypeIds::Uint32> { using Type = NKikimrTxColumnShard::ETransactionKind; }; struct TxBody : Column<3, NScheme::NTypeIds::String> {}; @@ -92,7 +126,7 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<TxId, TxKind, TxBody, MaxStep, PlanStep, Source, Cookie>; }; - struct SchemaPresetInfo : Table<3> { + struct SchemaPresetInfo : Table<(ui32)ECommonTables::SchemaPresetInfo> { struct Id : Column<1, NScheme::NTypeIds::Uint32> {}; struct Name : Column<2, NScheme::NTypeIds::Utf8> {}; struct DropStep : Column<3, NScheme::NTypeIds::Uint64> {}; @@ -102,7 +136,7 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<Id, Name, DropStep, DropTxId>; }; - struct SchemaPresetVersionInfo : Table<9> { + struct SchemaPresetVersionInfo : Table<(ui32)ECommonTables::SchemaPresetVersionInfo> { struct Id : Column<1, NScheme::NTypeIds::Uint32> {}; struct SinceStep : Column<2, NScheme::NTypeIds::Uint64> {}; struct SinceTxId : Column<3, NScheme::NTypeIds::Uint64> {}; @@ -112,7 +146,7 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<Id, SinceStep, SinceTxId, InfoProto>; }; - struct TtlSettingsPresetInfo : Table<4> { + struct TtlSettingsPresetInfo : Table<(ui32)ECommonTables::TtlSettingsPresetInfo> { struct Id : Column<1, NScheme::NTypeIds::Uint32> {}; struct Name : Column<2, NScheme::NTypeIds::Utf8> {}; struct DropStep : Column<3, NScheme::NTypeIds::Uint64> {}; @@ -122,7 +156,7 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<Id, Name, DropStep, DropTxId>; }; - struct TtlSettingsPresetVersionInfo : Table<10> { + struct TtlSettingsPresetVersionInfo : Table<(ui32)ECommonTables::TtlSettingsPresetVersionInfo> { struct Id : Column<1, NScheme::NTypeIds::Uint32> {}; struct SinceStep : Column<2, NScheme::NTypeIds::Uint64> {}; struct SinceTxId : Column<3, NScheme::NTypeIds::Uint64> {}; @@ -132,7 +166,7 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<Id, SinceStep, SinceTxId, InfoProto>; }; - struct TableInfo : Table<5> { + struct TableInfo : Table<(ui32)ECommonTables::TableInfo> { struct PathId : Column<1, NScheme::NTypeIds::Uint64> {}; struct DropStep : Column<2, NScheme::NTypeIds::Uint64> {}; struct DropTxId : Column<3, NScheme::NTypeIds::Uint64> {}; @@ -142,7 +176,7 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<PathId, DropStep, DropTxId, TieringUsage>; }; - struct TableVersionInfo : Table<11> { + struct TableVersionInfo : Table<(ui32)ECommonTables::TableVersionInfo> { struct PathId : Column<1, NScheme::NTypeIds::Uint64> {}; struct SinceStep : Column<2, NScheme::NTypeIds::Uint64> {}; struct SinceTxId : Column<3, NScheme::NTypeIds::Uint64> {}; @@ -152,7 +186,7 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<PathId, SinceStep, SinceTxId, InfoProto>; }; - struct LongTxWrites : Table<6> { + struct LongTxWrites : Table<(ui32)ECommonTables::LongTxWrites> { struct WriteId: Column<1, NScheme::NTypeIds::Uint64> {}; struct LongTxId : Column<2, NScheme::NTypeIds::String> {}; struct WritePartId: Column<3, NScheme::NTypeIds::Uint32> {}; @@ -161,21 +195,21 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<WriteId, LongTxId, WritePartId>; }; - struct BlobsToKeep : Table<7> { + struct BlobsToKeep : Table<(ui32)ECommonTables::BlobsToKeep> { struct BlobId : Column<1, NScheme::NTypeIds::String> {}; using TKey = TableKey<BlobId>; using TColumns = TableColumns<BlobId>; }; - struct BlobsToDelete : Table<8> { - struct BlobId : Column<1, NScheme::NTypeIds::String> {}; + struct BlobsToDelete: Table<(ui32)ECommonTables::BlobsToDelete> { + struct BlobId: Column<1, NScheme::NTypeIds::String> {}; using TKey = TableKey<BlobId>; using TColumns = TableColumns<BlobId>; }; - struct SmallBlobs : Table<12> { + struct SmallBlobs : Table<(ui32)ECommonTables::SmallBlobs> { struct BlobId : Column<1, NScheme::NTypeIds::String> {}; struct Data : Column<2, NScheme::NTypeIds::String> {}; @@ -183,7 +217,7 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<BlobId, Data>; }; - struct OneToOneEvictedBlobs : Table<13> { + struct OneToOneEvictedBlobs : Table<(ui32)ECommonTables::OneToOneEvictedBlobs> { struct BlobId : Column<1, NScheme::NTypeIds::String> {}; struct Size : Column<2, NScheme::NTypeIds::Uint32> {}; // extracted from BlobId for better introspection struct State : Column<3, NScheme::NTypeIds::Byte> {}; // evicting -> (self) cached <-> exported @@ -197,6 +231,14 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<BlobId, Size, State, Dropped, Metadata, ExternBlobId>; }; + struct BlobsToDeleteWT: Table<(ui32)ECommonTables::BlobsToDeleteWT> { + struct BlobId: Column<1, NScheme::NTypeIds::String> {}; + struct TabletId: Column<2, NScheme::NTypeIds::Uint64> {}; + + using TKey = TableKey<BlobId, TabletId>; + using TColumns = TableColumns<BlobId, TabletId>; + }; + // Index tables // InsertTable - common for all indices @@ -264,14 +306,33 @@ struct Schema : NIceDb::Schema { struct Operations : NIceDb::Schema::Table<OperationsTableId> { struct WriteId : Column<1, NScheme::NTypeIds::Uint64> {}; - struct TxId : Column<2, NScheme::NTypeIds::Uint64> {}; + struct LockId : Column<2, NScheme::NTypeIds::Uint64> {}; struct Status : Column<3, NScheme::NTypeIds::Uint32> {}; struct CreatedAt : Column<4, NScheme::NTypeIds::Uint64> {}; struct GlobalWriteId : Column<5, NScheme::NTypeIds::Uint64> {}; struct Metadata : Column<6, NScheme::NTypeIds::String> {}; + struct Cookie : Column<7, NScheme::NTypeIds::Uint64> {}; using TKey = TableKey<WriteId>; - using TColumns = TableColumns<TxId, WriteId, Status, CreatedAt, GlobalWriteId, Metadata>; + using TColumns = TableColumns<LockId, WriteId, Status, CreatedAt, GlobalWriteId, Metadata, Cookie>; + }; + + struct OperationTxIds : NIceDb::Schema::Table<OperationTxIdsId> { + struct TxId : Column<1, NScheme::NTypeIds::Uint64> {}; + struct LockId : Column<2, NScheme::NTypeIds::Uint64> {}; + + using TKey = TableKey<TxId, LockId>; + using TColumns = TableColumns<TxId, LockId>; + }; + + struct ExportPersistentSessions : NIceDb::Schema::Table<ExportSessionsId> { + struct Identifier : Column<1, NScheme::NTypeIds::String> {}; + struct Status: Column<2, NScheme::NTypeIds::String> {}; + struct Task: Column<3, NScheme::NTypeIds::String> {}; + struct Cursor: Column<4, NScheme::NTypeIds::String> {}; + + using TKey = TableKey<Identifier>; + using TColumns = TableColumns<Identifier, Status, Task, Cursor>; }; struct TierBlobsDraft: NIceDb::Schema::Table<(ui32)ETierTables::TierBlobsDraft> { @@ -290,6 +351,15 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<StorageId, BlobId>; }; + struct TierBlobsToDeleteWT: NIceDb::Schema::Table<(ui32)ETierTables::TierBlobsToDeleteWT> { + struct StorageId: Column<1, NScheme::NTypeIds::String> {}; + struct BlobId: Column<2, NScheme::NTypeIds::String> {}; + struct TabletId: Column<3, NScheme::NTypeIds::Uint64> {}; + + using TKey = TableKey<StorageId, BlobId, TabletId>; + using TColumns = TableColumns<StorageId, BlobId, TabletId>; + }; + struct IndexIndexes: NIceDb::Schema::Table<IndexesTableId> { struct PathId: Column<1, NScheme::NTypeIds::Uint64> {}; struct PortionId: Column<2, NScheme::NTypeIds::Uint64> {}; @@ -305,6 +375,83 @@ struct Schema : NIceDb::Schema { using TColumns = TableColumns<PathId, PortionId, IndexId, ChunkIdx, Blob, Offset, Size, RecordsCount, RawBytes>; }; + struct SharedBlobIds: NIceDb::Schema::Table<SharedBlobIdsTableId> { + struct StorageId: Column<1, NScheme::NTypeIds::String> {}; + struct BlobId: Column<2, NScheme::NTypeIds::String> {}; + struct TabletId: Column<3, NScheme::NTypeIds::Uint64> {}; + + using TKey = TableKey<StorageId, BlobId, TabletId>; + using TColumns = TableColumns<StorageId, BlobId, TabletId>; + }; + + struct BorrowedBlobIds: NIceDb::Schema::Table<BorrowedBlobIdsTableId> { + struct StorageId: Column<1, NScheme::NTypeIds::String> {}; + struct BlobId: Column<2, NScheme::NTypeIds::String> {}; + struct TabletId: Column<3, NScheme::NTypeIds::Uint64> {}; + + using TKey = TableKey<StorageId, BlobId>; + using TColumns = TableColumns<StorageId, BlobId, TabletId>; + }; + + struct SourceSessions: NIceDb::Schema::Table<SourceSessionsTableId> { + struct SessionId: Column<1, NScheme::NTypeIds::String> {}; + struct Details: Column<2, NScheme::NTypeIds::String> {}; + struct CursorDynamic: Column<3, NScheme::NTypeIds::String> {}; + struct CursorStatic: Column<4, NScheme::NTypeIds::String> {}; + + using TKey = TableKey<SessionId>; + using TColumns = TableColumns<SessionId, Details, CursorDynamic, CursorStatic>; + }; + + struct DestinationSessions: NIceDb::Schema::Table<DestinationSessionsTableId> { + struct SessionId: Column<1, NScheme::NTypeIds::String> {}; + struct Details: Column<2, NScheme::NTypeIds::String> {}; + struct Cursor: Column<3, NScheme::NTypeIds::String> {}; + + using TKey = TableKey<SessionId>; + using TColumns = TableColumns<SessionId, Details, Cursor>; + }; + + struct Locks : Table<LocksTableId> { + struct LockId : Column<1, NScheme::NTypeIds::Uint64> {}; + struct LockNodeId : Column<2, NScheme::NTypeIds::Uint32> {}; + struct Generation : Column<3, NScheme::NTypeIds::Uint32> {}; + struct Counter : Column<4, NScheme::NTypeIds::Uint64> {}; + struct CreateTimestamp : Column<5, NScheme::NTypeIds::Uint64> {}; + struct Flags : Column<6, NScheme::NTypeIds::Uint64> {}; + + using TKey = TableKey<LockId>; + using TColumns = TableColumns<LockId, LockNodeId, Generation, Counter, CreateTimestamp, Flags>; + }; + + struct LockRanges : Table<LockRangesTableId> { + struct LockId : Column<1, NScheme::NTypeIds::Uint64> {}; + struct RangeId : Column<2, NScheme::NTypeIds::Uint64> {}; + struct PathOwnerId : Column<3, NScheme::NTypeIds::Uint64> {}; + struct LocalPathId : Column<4, NScheme::NTypeIds::Uint64> {}; + struct Flags : Column<5, NScheme::NTypeIds::Uint64> {}; + struct Data : Column<6, NScheme::NTypeIds::String> {}; + + using TKey = TableKey<LockId, RangeId>; + using TColumns = TableColumns<LockId, RangeId, PathOwnerId, LocalPathId, Flags, Data>; + }; + + struct LockConflicts : Table<LockConflictsTableId> { + struct LockId : Column<1, NScheme::NTypeIds::Uint64> {}; + struct ConflictId : Column<2, NScheme::NTypeIds::Uint64> {}; + + using TKey = TableKey<LockId, ConflictId>; + using TColumns = TableColumns<LockId, ConflictId>; + }; + + struct LockVolatileDependencies : Table<LockVolatileDependenciesTableId> { + struct LockId : Column<1, NScheme::NTypeIds::Uint64> {}; + struct TxId : Column<2, NScheme::NTypeIds::Uint64> {}; + + using TKey = TableKey<LockId, TxId>; + using TColumns = TableColumns<LockId, TxId>; + }; + using TTables = SchemaTables< Value, TxInfo, @@ -317,6 +464,7 @@ struct Schema : NIceDb::Schema { LongTxWrites, BlobsToKeep, BlobsToDelete, + BlobsToDeleteWT, InsertTable, IndexGranules, IndexColumns, @@ -326,7 +474,14 @@ struct Schema : NIceDb::Schema { Operations, TierBlobsDraft, TierBlobsToDelete, - IndexIndexes + TierBlobsToDeleteWT, + IndexIndexes, + SharedBlobIds, + BorrowedBlobIds, + SourceSessions, + DestinationSessions, + OperationTxIds, + ExportPersistentSessions >; // @@ -347,8 +502,23 @@ struct Schema : NIceDb::Schema { auto rowset = db.Table<Value>().Key((ui32)key).Select<TSource>(); if (rowset.IsReady()) { - if (rowset.IsValid()) + if (rowset.IsValid()) { + value = T{rowset.template GetValue<TSource>()}; + return true; + } + } + return false; + } + + template <typename T> + static bool GetSpecialValueOpt(NIceDb::TNiceDb& db, EValueIds key, T& value) { + using TSource = std::conditional_t<std::is_integral_v<T> || std::is_enum_v<T>, Value::Digit, Value::Bytes>; + + auto rowset = db.Table<Value>().Key((ui32)key).Select<TSource>(); + if (rowset.IsReady()) { + if (rowset.IsValid()) { value = T{rowset.template GetValue<TSource>()}; + } return true; } return false; @@ -548,26 +718,6 @@ struct Schema : NIceDb::Schema { } return true; } - - // Operations - static void Operations_Write(NIceDb::TNiceDb& db, const TWriteOperation& operation) { - TString metadata; - NKikimrTxColumnShard::TInternalOperationData proto; - operation.ToProto(proto); - Y_ABORT_UNLESS(proto.SerializeToString(&metadata)); - - db.Table<Operations>().Key((ui64)operation.GetWriteId()).Update( - NIceDb::TUpdate<Operations::Status>((ui32)operation.GetStatus()), - NIceDb::TUpdate<Operations::CreatedAt>(operation.GetCreatedAt().Seconds()), - NIceDb::TUpdate<Operations::Metadata>(metadata), - NIceDb::TUpdate<Operations::TxId>(operation.GetTxId()) - ); - } - - static void Operations_Erase(NIceDb::TNiceDb& db, const TWriteId writeId) { - db.Table<Operations>().Key((ui64)writeId).Delete(); - } - }; } @@ -623,8 +773,8 @@ class TIndexChunkLoadContext { const ui32 RecordsCount; const ui32 RawBytes; public: - TIndexChunk BuildIndexChunk() const { - return TIndexChunk(Address.GetColumnId(), Address.GetChunkIdx(), RecordsCount, RawBytes, BlobRange); + TIndexChunk BuildIndexChunk(const TBlobRangeLink16::TLinkId blobLinkId) const { + return TIndexChunk(Address.GetColumnId(), Address.GetChunkIdx(), RecordsCount, RawBytes, BlobRange.BuildLink(blobLinkId)); } template <class TSource> diff --git a/ydb/core/tx/columnshard/columnshard_ttl.h b/ydb/core/tx/columnshard/columnshard_ttl.h index 77d401c64ade..de2378737e95 100644 --- a/ydb/core/tx/columnshard/columnshard_ttl.h +++ b/ydb/core/tx/columnshard/columnshard_ttl.h @@ -65,10 +65,13 @@ class TTtl { PathTtls.erase(pathId); } - void AddTtls(THashMap<ui64, NOlap::TTiering>& eviction) const { + bool AddTtls(THashMap<ui64, NOlap::TTiering>& eviction) const { for (auto& [pathId, descr] : PathTtls) { - eviction[pathId].Ttl = Convert(descr); + if (!eviction[pathId].Add(Convert(descr))) { + return false; + } } + return true; } const THashSet<TString>& TtlColumns() const { return Columns; } diff --git a/ydb/core/tx/columnshard/columnshard_ut_common.cpp b/ydb/core/tx/columnshard/columnshard_ut_common.cpp index 407aed03b43d..5e6794ff6cc3 100644 --- a/ydb/core/tx/columnshard/columnshard_ut_common.cpp +++ b/ydb/core/tx/columnshard/columnshard_ut_common.cpp @@ -1,11 +1,14 @@ #include "columnshard_ut_common.h" -#include "columnshard__stats_scan.h" #include "common/tests/shard_reader.h" +#include "engines/reader/sys_view/chunks/chunks.h" +#include <ydb/core/tx/columnshard/hooks/testing/controller.h> #include <ydb/core/base/tablet.h> #include <ydb/core/base/tablet_resolver.h> #include <ydb/core/scheme/scheme_types_proto.h> +#include <ydb/core/tx/tiering/snapshot.h> +#include <ydb/core/tx/tiering/tier/object.h> #include <library/cpp/testing/unittest/registar.h> namespace NKikimr::NTxUT { @@ -123,7 +126,7 @@ bool WriteDataImpl(TTestBasicRuntime& runtime, TActorId& sender, const ui64 shar } bool WriteData(TTestBasicRuntime& runtime, TActorId& sender, const ui64 shardId, const ui64 writeId, const ui64 tableId, const TString& data, - const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema, std::vector<ui64>* writeIds) { + const std::vector<NArrow::NTest::TTestColumn>& ydbSchema, std::vector<ui64>* writeIds) { NLongTxService::TLongTxId longTxId; UNIT_ASSERT(longTxId.ParseString("ydb://long-tx/01ezvvxjdk2hd4vdgjs68knvp8?node_id=1")); return WriteDataImpl(runtime, sender, shardId, tableId, longTxId, writeId, data, NArrow::MakeArrowSchema(ydbSchema), writeIds); @@ -131,7 +134,7 @@ bool WriteData(TTestBasicRuntime& runtime, TActorId& sender, const ui64 shardId, } bool WriteData(TTestBasicRuntime& runtime, TActorId& sender, const ui64 writeId, const ui64 tableId, const TString& data, - const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema, bool waitResult, std::vector<ui64>* writeIds) { + const std::vector<NArrow::NTest::TTestColumn>& ydbSchema, bool waitResult, std::vector<ui64>* writeIds) { NLongTxService::TLongTxId longTxId; UNIT_ASSERT(longTxId.ParseString("ydb://long-tx/01ezvvxjdk2hd4vdgjs68knvp8?node_id=1")); if (writeIds) { @@ -143,7 +146,7 @@ bool WriteData(TTestBasicRuntime& runtime, TActorId& sender, const ui64 writeId, std::optional<ui64> WriteData(TTestBasicRuntime& runtime, TActorId& sender, const NLongTxService::TLongTxId& longTxId, ui64 tableId, const ui64 writePartId, const TString& data, - const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema) + const std::vector<NArrow::NTest::TTestColumn>& ydbSchema) { auto write = std::make_unique<TEvColumnShard::TEvWrite>(sender, longTxId, tableId, "0", data, writePartId); write->SetArrowSchema(NArrow::SerializeSchema(*NArrow::MakeArrowSchema(ydbSchema))); @@ -174,7 +177,7 @@ void ScanIndexStats(TTestBasicRuntime& runtime, TActorId& sender, const std::vec // Schema: pathId, kind, rows, bytes, rawBytes. PK: {pathId, kind} //record.SetSchemaVersion(0); - auto ydbSchema = PrimaryIndexStatsSchema; + auto ydbSchema = NOlap::NReader::NSysView::NChunks::TStatsIterator::StatsSchema; for (const auto& col : ydbSchema.Columns) { record.AddColumnTags(col.second.Id); auto columnType = NScheme::ProtoColumnTypeFromTypeInfoMod(col.second.PType, col.second.PTypeMod); @@ -295,18 +298,17 @@ std::vector<TCell> MakeTestCells(const std::vector<TTypeInfo>& types, ui32 value } -TString MakeTestBlob(std::pair<ui64, ui64> range, const std::vector<std::pair<TString, TTypeInfo>>& columns, +TString MakeTestBlob(std::pair<ui64, ui64> range, const std::vector<NArrow::NTest::TTestColumn>& columns, const TTestBlobOptions& options, const std::set<std::string>& notNullColumns) { - TString err; NArrow::TArrowBatchBuilder batchBuilder(arrow::Compression::LZ4_FRAME, notNullColumns); - batchBuilder.Start(columns, 0, 0, err); - + const auto startStatus = batchBuilder.Start(NArrow::NTest::TTestColumn::ConvertToPairs(columns)); + UNIT_ASSERT_C(startStatus.ok(), startStatus.ToString()); std::vector<ui32> nullPositions; std::vector<ui32> samePositions; for (size_t i = 0; i < columns.size(); ++i) { - if (options.NullColumns.contains(columns[i].first)) { + if (options.NullColumns.contains(columns[i].GetName())) { nullPositions.push_back(i); - } else if (options.SameValueColumns.contains(columns[i].first)) { + } else if (options.SameValueColumns.contains(columns[i].GetName())) { samePositions.push_back(i); } } @@ -348,7 +350,7 @@ TString MakeTestBlob(std::pair<ui64, ui64> range, const std::vector<std::pair<TS } TSerializedTableRange MakeTestRange(std::pair<ui64, ui64> range, bool inclusiveFrom, bool inclusiveTo, - const std::vector<std::pair<TString, TTypeInfo>>& columns) { + const std::vector<NArrow::NTest::TTestColumn>& columns) { std::vector<TString> mem; std::vector<TTypeInfo> types = TTestSchema::ExtractTypes(columns); std::vector<TCell> cellsFrom = MakeTestCells(types, range.first, mem); @@ -392,31 +394,48 @@ NMetadata::NFetcher::ISnapshot::TPtr TTestSchema::BuildSnapshot(const TTableSpec } namespace NKikimr::NColumnShard { - NOlap::TIndexInfo BuildTableInfo(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& ydbSchema, - const std::vector<std::pair<TString, NScheme::TTypeInfo>>& key) { + NOlap::TIndexInfo BuildTableInfo(const std::vector<NArrow::NTest::TTestColumn>& ydbSchema, + const std::vector<NArrow::NTest::TTestColumn>& key) { NOlap::TIndexInfo indexInfo = NOlap::TIndexInfo::BuildDefault(); for (ui32 i = 0; i < ydbSchema.size(); ++i) { ui32 id = i + 1; - auto& name = ydbSchema[i].first; - auto& type = ydbSchema[i].second; + auto& name = ydbSchema[i].GetName(); + auto& type = ydbSchema[i].GetType(); indexInfo.Columns[id] = NTable::TColumn(name, id, type, ""); indexInfo.ColumnNames[name] = id; } - for (const auto& [keyName, keyType] : key) { - indexInfo.KeyColumns.push_back(indexInfo.ColumnNames[keyName]); + for (const auto& c : key) { + indexInfo.KeyColumns.push_back(indexInfo.ColumnNames[c.GetName()]); } - indexInfo.SetAllKeys(); + auto storage = std::make_shared<NOlap::TTestStoragesManager>(); + storage->Initialize(); + indexInfo.SetAllKeys(NOlap::TTestStoragesManager::GetInstance()); return indexInfo; } + void SetupSchema(TTestBasicRuntime& runtime, TActorId& sender, const TString& txBody, const NOlap::TSnapshot& snapshot, bool succeed) { + + auto controller = NYDBTest::TControllers::GetControllerAs<NYDBTest::NColumnShard::TController>(); + while (controller && !controller->IsActiveTablet(TTestTxConfig::TxTablet0)) { + runtime.SimulateSleep(TDuration::Seconds(1)); + } + + using namespace NTxUT; + bool ok = ProposeSchemaTx(runtime, sender, txBody, snapshot); + UNIT_ASSERT_VALUES_EQUAL(ok, succeed); + if (succeed) { + PlanSchemaTx(runtime, sender, snapshot); + } + } + void SetupSchema(TTestBasicRuntime& runtime, TActorId& sender, ui64 pathId, const TestTableDescription& table, TString codec) { using namespace NTxUT; - NOlap::TSnapshot snap(10, 10); + NOlap::TSnapshot snapshot(10, 10); TString txBody; auto specials = TTestSchema::TTableSpecials().WithCodec(codec); if (table.InStore) { @@ -424,13 +443,11 @@ namespace NKikimr::NColumnShard { } else { txBody = TTestSchema::CreateStandaloneTableTxBody(pathId, table.Schema, table.Pk, specials); } - bool ok = ProposeSchemaTx(runtime, sender, txBody, snap); - UNIT_ASSERT(ok); - - PlanSchemaTx(runtime, sender, snap); + SetupSchema(runtime, sender, txBody, snapshot, true); } - void PrepareTablet(TTestBasicRuntime& runtime, const ui64 tableId, const std::vector<std::pair<TString, NScheme::TTypeInfo>>& schema, const ui32 keySize) { + + void PrepareTablet(TTestBasicRuntime& runtime, const ui64 tableId, const std::vector<NArrow::NTest::TTestColumn>& schema, const ui32 keySize) { using namespace NTxUT; CreateTestBootstrapper(runtime, CreateTestTabletInfo(TTestTxConfig::TxTablet0, TTabletTypes::ColumnShard), &CreateColumnShard); @@ -449,10 +466,22 @@ namespace NKikimr::NColumnShard { SetupSchema(runtime, sender, tableId, tableDescription); } - std::shared_ptr<arrow::RecordBatch> ReadAllAsBatch(TTestBasicRuntime& runtime, const ui64 tableId, const NOlap::TSnapshot& snapshot, const std::vector<std::pair<TString, NScheme::TTypeInfo>>& schema) { + void PrepareTablet(TTestBasicRuntime& runtime, const TString& schemaTxBody, bool succeed) { + using namespace NTxUT; + CreateTestBootstrapper(runtime, CreateTestTabletInfo(TTestTxConfig::TxTablet0, TTabletTypes::ColumnShard), &CreateColumnShard); + + TDispatchOptions options; + options.FinalEvents.push_back(TDispatchOptions::TFinalEventCondition(TEvTablet::EvBoot)); + runtime.DispatchEvents(options); + + TActorId sender = runtime.AllocateEdgeActor(); + SetupSchema(runtime, sender, schemaTxBody, NOlap::TSnapshot(1000, 100), succeed); + } + + std::shared_ptr<arrow::RecordBatch> ReadAllAsBatch(TTestBasicRuntime& runtime, const ui64 tableId, const NOlap::TSnapshot& snapshot, const std::vector<NArrow::NTest::TTestColumn>& schema) { std::vector<TString> fields; for (auto&& f : schema) { - fields.emplace_back(f.first); + fields.emplace_back(f.GetName()); } NOlap::NTests::TShardReader reader(runtime, TTestTxConfig::TxTablet0, tableId, snapshot); diff --git a/ydb/core/tx/columnshard/columnshard_ut_common.h b/ydb/core/tx/columnshard/columnshard_ut_common.h index 58849aa342e1..e5bbe8d10997 100644 --- a/ydb/core/tx/columnshard/columnshard_ut_common.h +++ b/ydb/core/tx/columnshard/columnshard_ut_common.h @@ -3,15 +3,16 @@ #include "columnshard.h" #include "columnshard_impl.h" #include "blob_cache.h" +#include "engines/scheme/statistics/max/operator.h" #include <ydb/core/formats/arrow/arrow_batch_builder.h> +#include <ydb/core/tx/columnshard/test_helper/helper.h> #include <ydb/core/scheme/scheme_tabledefs.h> #include <ydb/core/scheme/scheme_types_proto.h> #include <ydb/core/testlib/tablet_helpers.h> #include <ydb/core/testlib/test_client.h> #include <library/cpp/testing/unittest/registar.h> - namespace NKikimr::NTxUT { // Private events of different actors reuse the same ES_PRIVATE range @@ -50,6 +51,10 @@ struct TTestSchema { : Name(name) {} + TString DebugString() const { + return TStringBuilder() << "{Column=" << TtlColumn << ";EvictAfter=" << EvictAfter.value_or(TDuration::Zero()) << ";Name=" << Name << ";Codec=" << Codec << "};"; + } + NKikimrSchemeOp::EColumnCodec GetCodecId() const { if (Codec == "none") { return NKikimrSchemeOp::EColumnCodec::ColumnCodecPlain; @@ -95,6 +100,7 @@ struct TTestSchema { s3Config.SetProxyScheme(NKikimrSchemeOp::TS3Settings::HTTP); #else s3Config.SetEndpoint("fake"); + s3Config.SetSecretKey("fakeSecret"); #endif s3Config.SetRequestTimeoutMs(10000); s3Config.SetHttpRequestTimeoutMs(10000); @@ -104,11 +110,22 @@ struct TTestSchema { }; struct TTableSpecials : public TStorageTier { + private: + bool NeedTestStatisticsFlag = true; + public: std::vector<TStorageTier> Tiers; bool WaitEmptyAfter = false; TTableSpecials() noexcept = default; + bool NeedTestStatistics() const { + return NeedTestStatisticsFlag; + } + + void SetNeedTestStatistics(const bool value) { + NeedTestStatisticsFlag = value; + } + bool HasTiers() const { return !Tiers.empty(); } @@ -127,107 +144,110 @@ struct TTestSchema { EvictAfter = ttl; return *this; } - }; - static auto YdbSchema(const std::pair<TString, TTypeInfo>& firstKeyItem = {"timestamp", TTypeInfo(NTypeIds::Timestamp) }) { - std::vector<std::pair<TString, TTypeInfo>> schema = { + TString DebugString() const { + auto result = TStringBuilder() << "WaitEmptyAfter=" << WaitEmptyAfter << ";Tiers="; + for (auto&& tier : Tiers) { + result << "{" << tier.DebugString() << "}"; + } + result << ";TTL=" << TStorageTier::DebugString(); + return result; + } + }; + using TTestColumn = NArrow::NTest::TTestColumn; + static auto YdbSchema(const TTestColumn& firstKeyItem = TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp))) { + std::vector<TTestColumn> schema = { // PK firstKeyItem, - {"resource_type", TTypeInfo(NTypeIds::Utf8) }, - {"resource_id", TTypeInfo(NTypeIds::Utf8) }, - {"uid", TTypeInfo(NTypeIds::Utf8) }, - {"level", TTypeInfo(NTypeIds::Int32) }, - {"message", TTypeInfo(NTypeIds::Utf8) }, - {"json_payload", TTypeInfo(NTypeIds::Json) }, - {"ingested_at", TTypeInfo(NTypeIds::Timestamp) }, - {"saved_at", TTypeInfo(NTypeIds::Timestamp) }, - {"request_id", TTypeInfo(NTypeIds::Utf8) } + TTestColumn("resource_type", TTypeInfo(NTypeIds::Utf8) ), + TTestColumn("resource_id", TTypeInfo(NTypeIds::Utf8) ), + TTestColumn("uid", TTypeInfo(NTypeIds::Utf8) ).SetStorageId("__MEMORY"), + TTestColumn("level", TTypeInfo(NTypeIds::Int32) ), + TTestColumn("message", TTypeInfo(NTypeIds::Utf8) ).SetStorageId("__MEMORY"), + TTestColumn("json_payload", TTypeInfo(NTypeIds::Json) ), + TTestColumn("ingested_at", TTypeInfo(NTypeIds::Timestamp) ), + TTestColumn("saved_at", TTypeInfo(NTypeIds::Timestamp) ), + TTestColumn("request_id", TTypeInfo(NTypeIds::Utf8) ) }; return schema; }; static auto YdbExoticSchema() { - std::vector<std::pair<TString, TTypeInfo>> schema = { + std::vector<TTestColumn> schema = { // PK - {"timestamp", TTypeInfo(NTypeIds::Timestamp) }, - {"resource_type", TTypeInfo(NTypeIds::Utf8) }, - {"resource_id", TTypeInfo(NTypeIds::Utf8) }, - {"uid", TTypeInfo(NTypeIds::Utf8) }, + TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp) ), + TTestColumn("resource_type", TTypeInfo(NTypeIds::Utf8) ), + TTestColumn("resource_id", TTypeInfo(NTypeIds::Utf8) ), + TTestColumn("uid", TTypeInfo(NTypeIds::Utf8) ).SetStorageId("__MEMORY"), // - {"level", TTypeInfo(NTypeIds::Int32) }, - {"message", TTypeInfo(NTypeIds::String4k) }, - {"json_payload", TTypeInfo(NTypeIds::JsonDocument) }, - {"ingested_at", TTypeInfo(NTypeIds::Timestamp) }, - {"saved_at", TTypeInfo(NTypeIds::Timestamp) }, - {"request_id", TTypeInfo(NTypeIds::Yson) } + TTestColumn("level", TTypeInfo(NTypeIds::Int32) ), + TTestColumn("message", TTypeInfo(NTypeIds::String4k) ).SetStorageId("__MEMORY"), + TTestColumn("json_payload", TTypeInfo(NTypeIds::JsonDocument) ), + TTestColumn("ingested_at", TTypeInfo(NTypeIds::Timestamp) ), + TTestColumn("saved_at", TTypeInfo(NTypeIds::Timestamp) ), + TTestColumn("request_id", TTypeInfo(NTypeIds::Yson) ) }; return schema; }; static auto YdbPkSchema() { - std::vector<std::pair<TString, TTypeInfo>> schema = { - {"timestamp", TTypeInfo(NTypeIds::Timestamp) }, - {"resource_type", TTypeInfo(NTypeIds::Utf8) }, - {"resource_id", TTypeInfo(NTypeIds::Utf8) }, - {"uid", TTypeInfo(NTypeIds::Utf8) } + std::vector<TTestColumn> schema = { + TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp) ), + TTestColumn("resource_type", TTypeInfo(NTypeIds::Utf8) ).SetStorageId("__MEMORY"), + TTestColumn("resource_id", TTypeInfo(NTypeIds::Utf8) ), + TTestColumn("uid", TTypeInfo(NTypeIds::Utf8) ).SetStorageId("__MEMORY") }; return schema; } static auto YdbAllTypesSchema() { - std::vector<std::pair<TString, TTypeInfo>> schema = { - { "ts", TTypeInfo(NTypeIds::Timestamp) }, - - { "i8", TTypeInfo(NTypeIds::Int8) }, - { "i16", TTypeInfo(NTypeIds::Int16) }, - { "i32", TTypeInfo(NTypeIds::Int32) }, - { "i64", TTypeInfo(NTypeIds::Int64) }, - { "u8", TTypeInfo(NTypeIds::Uint8) }, - { "u16", TTypeInfo(NTypeIds::Uint16) }, - { "u32", TTypeInfo(NTypeIds::Uint32) }, - { "u64", TTypeInfo(NTypeIds::Uint64) }, - { "float", TTypeInfo(NTypeIds::Float) }, - { "double", TTypeInfo(NTypeIds::Double) }, - - { "byte", TTypeInfo(NTypeIds::Byte) }, + std::vector<TTestColumn> schema = { + TTestColumn("ts", TTypeInfo(NTypeIds::Timestamp) ), + + TTestColumn( "i8", TTypeInfo(NTypeIds::Int8) ), + TTestColumn( "i16", TTypeInfo(NTypeIds::Int16) ), + TTestColumn( "i32", TTypeInfo(NTypeIds::Int32) ), + TTestColumn( "i64", TTypeInfo(NTypeIds::Int64) ), + TTestColumn( "u8", TTypeInfo(NTypeIds::Uint8) ), + TTestColumn( "u16", TTypeInfo(NTypeIds::Uint16) ), + TTestColumn( "u32", TTypeInfo(NTypeIds::Uint32) ), + TTestColumn( "u64", TTypeInfo(NTypeIds::Uint64) ), + TTestColumn( "float", TTypeInfo(NTypeIds::Float) ), + TTestColumn( "double", TTypeInfo(NTypeIds::Double) ), + + TTestColumn("byte", TTypeInfo(NTypeIds::Byte) ), //{ "bool", TTypeInfo(NTypeIds::Bool) }, //{ "decimal", TTypeInfo(NTypeIds::Decimal) }, //{ "dynum", TTypeInfo(NTypeIds::DyNumber) }, - { "date", TTypeInfo(NTypeIds::Date) }, - { "datetime", TTypeInfo(NTypeIds::Datetime) }, + TTestColumn( "date", TTypeInfo(NTypeIds::Date) ), + TTestColumn( "datetime", TTypeInfo(NTypeIds::Datetime) ), //{ "interval", TTypeInfo(NTypeIds::Interval) }, - {"text", TTypeInfo(NTypeIds::Text) }, - {"bytes", TTypeInfo(NTypeIds::Bytes) }, - {"yson", TTypeInfo(NTypeIds::Yson) }, - {"json", TTypeInfo(NTypeIds::Json) }, - {"jsondoc", TTypeInfo(NTypeIds::JsonDocument) } + TTestColumn("text", TTypeInfo(NTypeIds::Text) ), + TTestColumn("bytes", TTypeInfo(NTypeIds::Bytes) ), + TTestColumn("yson", TTypeInfo(NTypeIds::Yson) ), + TTestColumn("json", TTypeInfo(NTypeIds::Json) ), + TTestColumn("jsondoc", TTypeInfo(NTypeIds::JsonDocument) ) }; return schema; }; - static NKikimrSchemeOp::TOlapColumnDescription CreateColumn(ui32 id, const TString& name, TTypeInfo type) { - NKikimrSchemeOp::TOlapColumnDescription col; - col.SetId(id); - col.SetName(name); - auto columnType = NScheme::ProtoColumnTypeFromTypeInfoMod(type, ""); - col.SetTypeId(columnType.TypeId); - if (columnType.TypeInfo) { - *col.MutableTypeInfo() = *columnType.TypeInfo; - } - return col; - } - - static void InitSchema(const std::vector<std::pair<TString, TTypeInfo>>& columns, - const std::vector<std::pair<TString, TTypeInfo>>& pk, + static void InitSchema(const std::vector<NArrow::NTest::TTestColumn>& columns, + const std::vector<NArrow::NTest::TTestColumn>& pk, const TTableSpecials& specials, NKikimrSchemeOp::TColumnTableSchema* schema) { schema->SetEngine(NKikimrSchemeOp::COLUMN_ENGINE_REPLACING_TIMESERIES); for (ui32 i = 0; i < columns.size(); ++i) { - *schema->MutableColumns()->Add() = CreateColumn(i + 1, columns[i].first, columns[i].second); + *schema->MutableColumns()->Add() = columns[i].CreateColumn(i + 1); + if (!specials.NeedTestStatistics()) { + continue; + } + if (NOlap::NStatistics::NMax::TOperator::IsAvailableType(columns[i].GetType())) { + *schema->AddStatistics() = NOlap::NStatistics::TOperatorContainer("MAX::" + columns[i].GetName(), std::make_shared<NOlap::NStatistics::NMax::TOperator>(i + 1)).SerializeToProto(); + } } Y_ABORT_UNLESS(pk.size() > 0); @@ -261,12 +281,13 @@ struct TTestSchema { return specials.HasTiers() || specials.HasTtl(); } - static TString CreateTableTxBody(ui64 pathId, const std::vector<std::pair<TString, TTypeInfo>>& columns, - const std::vector<std::pair<TString, TTypeInfo>>& pk, - const TTableSpecials& specialsExt = {}) + static TString CreateTableTxBody(ui64 pathId, const std::vector<NArrow::NTest::TTestColumn>& columns, + const std::vector<NArrow::NTest::TTestColumn>& pk, + const TTableSpecials& specialsExt = {}, ui64 generation = 0) { auto specials = specialsExt; NKikimrTxColumnShard::TSchemaTxBody tx; + tx.MutableSeqNo()->SetGeneration(generation); auto* table = tx.MutableEnsureTables()->AddTables(); table->SetPathId(pathId); @@ -288,8 +309,8 @@ struct TTestSchema { return out; } - static TString CreateInitShardTxBody(ui64 pathId, const std::vector<std::pair<TString, TTypeInfo>>& columns, - const std::vector<std::pair<TString, TTypeInfo>>& pk, + static TString CreateInitShardTxBody(ui64 pathId, const std::vector<NArrow::NTest::TTestColumn>& columns, + const std::vector<NArrow::NTest::TTestColumn>& pk, const TTableSpecials& specials = {}, const TString& ownerPath = "/Root/olap") { NKikimrTxColumnShard::TSchemaTxBody tx; auto* table = tx.MutableInitShard()->AddTables(); @@ -306,8 +327,8 @@ struct TTestSchema { return out; } - static TString CreateStandaloneTableTxBody(ui64 pathId, const std::vector<std::pair<TString, TTypeInfo>>& columns, - const std::vector<std::pair<TString, TTypeInfo>>& pk, + static TString CreateStandaloneTableTxBody(ui64 pathId, const std::vector<NArrow::NTest::TTestColumn>& columns, + const std::vector<NArrow::NTest::TTestColumn>& pk, const TTableSpecials& specials = {}) { NKikimrTxColumnShard::TSchemaTxBody tx; auto* table = tx.MutableEnsureTables()->AddTables(); @@ -377,20 +398,20 @@ struct TTestSchema { return txBody; } - static std::vector<TString> ExtractNames(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns) { + static std::vector<TString> ExtractNames(const std::vector<NArrow::NTest::TTestColumn>& columns) { std::vector<TString> out; out.reserve(columns.size()); for (auto& col : columns) { - out.push_back(col.first); + out.push_back(col.GetName()); } return out; } - static std::vector<NScheme::TTypeInfo> ExtractTypes(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns) { + static std::vector<NScheme::TTypeInfo> ExtractTypes(const std::vector<NArrow::NTest::TTestColumn>& columns) { std::vector<NScheme::TTypeInfo> types; types.reserve(columns.size()); - for (auto& [name, type] : columns) { - types.push_back(type); + for (auto& i : columns) { + types.push_back(i.GetType()); } return types; } @@ -403,14 +424,14 @@ void PlanSchemaTx(TTestBasicRuntime& runtime, TActorId& sender, NOlap::TSnapshot void PlanWriteTx(TTestBasicRuntime& runtime, TActorId& sender, NOlap::TSnapshot snap, bool waitResult = true); bool WriteData(TTestBasicRuntime& runtime, TActorId& sender, const ui64 shardId, const ui64 writeId, const ui64 tableId, const TString& data, - const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema, std::vector<ui64>* writeIds); + const std::vector<NArrow::NTest::TTestColumn>& ydbSchema, std::vector<ui64>* writeIds); bool WriteData(TTestBasicRuntime& runtime, TActorId& sender, const ui64 writeId, const ui64 tableId, const TString& data, - const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema, bool waitResult = true, std::vector<ui64>* writeIds = nullptr); + const std::vector<NArrow::NTest::TTestColumn>& ydbSchema, bool waitResult = true, std::vector<ui64>* writeIds = nullptr); std::optional<ui64> WriteData(TTestBasicRuntime& runtime, TActorId& sender, const NLongTxService::TLongTxId& longTxId, ui64 tableId, const ui64 writePartId, const TString& data, - const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema); + const std::vector<NArrow::NTest::TTestColumn>& ydbSchema); ui32 WaitWriteResult(TTestBasicRuntime& runtime, ui64 shardId, std::vector<ui64>* writeIds = nullptr); @@ -436,10 +457,10 @@ struct TTestBlobOptions { }; TCell MakeTestCell(const TTypeInfo& typeInfo, ui32 value, std::vector<TString>& mem); -TString MakeTestBlob(std::pair<ui64, ui64> range, const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns, +TString MakeTestBlob(std::pair<ui64, ui64> range, const std::vector<NArrow::NTest::TTestColumn>& columns, const TTestBlobOptions& options = {}, const std::set<std::string>& notNullColumns = {}); TSerializedTableRange MakeTestRange(std::pair<ui64, ui64> range, bool inclusiveFrom, bool inclusiveTo, - const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns); + const std::vector<NArrow::NTest::TTestColumn>& columns); } @@ -508,6 +529,13 @@ namespace NKikimr::NColumnShard { Y_ABORT_UNLESS(Builders.size() == schema->fields().size()); } + TTableUpdatesBuilder(arrow::Result<std::shared_ptr<arrow::Schema>> schema) { + UNIT_ASSERT_C(schema.ok(), schema.status().ToString()); + Schema = schema.ValueUnsafe(); + Builders = NArrow::MakeBuilders(Schema); + Y_ABORT_UNLESS(Builders.size() == Schema->fields().size()); + } + TRowBuilder AddRow() { ++RowsCount; return TRowBuilder(0, *this); @@ -525,20 +553,22 @@ namespace NKikimr::NColumnShard { } }; - NOlap::TIndexInfo BuildTableInfo(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& ydbSchema, - const std::vector<std::pair<TString, NScheme::TTypeInfo>>& key); + NOlap::TIndexInfo BuildTableInfo(const std::vector<NArrow::NTest::TTestColumn>& ydbSchema, + const std::vector<NArrow::NTest::TTestColumn>& key); struct TestTableDescription { - std::vector<std::pair<TString, NScheme::TTypeInfo>> Schema = NTxUT::TTestSchema::YdbSchema(); - std::vector<std::pair<TString, NScheme::TTypeInfo>> Pk = NTxUT::TTestSchema::YdbPkSchema(); + std::vector<NArrow::NTest::TTestColumn> Schema = NTxUT::TTestSchema::YdbSchema(); + std::vector<NArrow::NTest::TTestColumn> Pk = NTxUT::TTestSchema::YdbPkSchema(); bool InStore = true; }; void SetupSchema(TTestBasicRuntime& runtime, TActorId& sender, ui64 pathId, const TestTableDescription& table = {}, TString codec = "none"); + void SetupSchema(TTestBasicRuntime& runtime, TActorId& sender, const TString& txBody, const NOlap::TSnapshot& snapshot, bool succeed = true); - void PrepareTablet(TTestBasicRuntime& runtime, const ui64 tableId, const std::vector<std::pair<TString, NScheme::TTypeInfo>>& schema, const ui32 keySize = 1); + void PrepareTablet(TTestBasicRuntime& runtime, const ui64 tableId, const std::vector<NArrow::NTest::TTestColumn>& schema, const ui32 keySize = 1); + void PrepareTablet(TTestBasicRuntime& runtime, const TString& schemaTxBody, bool succeed); - std::shared_ptr<arrow::RecordBatch> ReadAllAsBatch(TTestBasicRuntime& runtime, const ui64 tableId, const NOlap::TSnapshot& snapshot, const std::vector<std::pair<TString, NScheme::TTypeInfo>>& schema); + std::shared_ptr<arrow::RecordBatch> ReadAllAsBatch(TTestBasicRuntime& runtime, const ui64 tableId, const NOlap::TSnapshot& snapshot, const std::vector<NArrow::NTest::TTestColumn>& schema); } diff --git a/ydb/core/tx/columnshard/common/blob.cpp b/ydb/core/tx/columnshard/common/blob.cpp new file mode 100644 index 000000000000..6bcf397e339a --- /dev/null +++ b/ydb/core/tx/columnshard/common/blob.cpp @@ -0,0 +1,173 @@ +#include "blob.h" +#include <ydb/core/tx/columnshard/common/protos/blob_range.pb.h> +#include <ydb/library/actors/core/log.h> + +#include <charconv> + +namespace NKikimr::NOlap { + +namespace { + +#define PARSE_INT_COMPONENT(fieldType, fieldName, endChar) \ + if (pos >= endPos) { \ + error = "Failed to parse " #fieldName " component"; \ + return TUnifiedBlobId(); \ + } \ + fieldType fieldName = -1; \ + { \ + auto [ptr, ec] { std::from_chars(str + pos, str + endPos, fieldName) }; \ + if (ec != std::errc()) { \ + error = "Failed to parse " #fieldName " component"; \ + return TUnifiedBlobId(); \ + } else { \ + pos = ptr - str; \ + } \ + if (str[pos++] != endChar) { \ + error = #endChar " not found after " #fieldName; \ + return TUnifiedBlobId(); \ + } \ + } + +// Format: "DS:group:logoBlobId" +// Example: "DS:2181038103:[72075186224038245:51:31595:2:0:11952:0]" +TUnifiedBlobId ParseExtendedDsBlobId(const TString& s, TString& error) { + Y_ABORT_UNLESS(s.size() > 2); + const char* str = s.c_str(); + Y_ABORT_UNLESS(str[0] == 'D' && str[1] == 'S'); + i64 pos = 2; + i64 endPos = s.size(); + if (str[pos++] != ':') { + error = "Starting ':' not found"; + return TUnifiedBlobId(); + } + + PARSE_INT_COMPONENT(ui32, dsGroup, ':'); + + TLogoBlobID logoBlobId; + if (!TLogoBlobID::Parse(logoBlobId, s.substr(pos), error)) { + return TUnifiedBlobId(); + } + + return TUnifiedBlobId(dsGroup, logoBlobId); +} + +} + +TUnifiedBlobId TUnifiedBlobId::ParseFromString(const TString& str, + const IBlobGroupSelector* dsGroupSelector, TString& error) { + if (str.size() <= 2) { + error = TStringBuilder() << "Wrong blob id: '" << str << "'"; + return TUnifiedBlobId(); + } + + if (str[0] == '[') { + // If blobId starts with '[' this must be a logoblobId and if channel is set to FAKE_CHANNEL + // this is a fake logoblobid used for small blob + TLogoBlobID logoBlobId; + bool parsed = TLogoBlobID::Parse(logoBlobId, str, error); + if (!parsed) { + error = "Cannot parse TLogoBlobID: " + error; + return TUnifiedBlobId(); + } + // DS blob + if (!dsGroupSelector) { + error = "Need TBlobGroupSelector to resolve DS group for the blob"; + return TUnifiedBlobId(); + } + return TUnifiedBlobId(dsGroupSelector->GetGroup(logoBlobId), logoBlobId); + } else if (str[0] == 'D' && str[1] == 'S') { + return ParseExtendedDsBlobId(str, error); + } + + error = TStringBuilder() << "Wrong blob id: '" << str << "'"; + return TUnifiedBlobId(); +} + +NKikimr::TConclusionStatus TUnifiedBlobId::DeserializeFromProto(const NKikimrColumnShardProto::TUnifiedBlobId& proto) { + Id.DsGroup = proto.GetDsGroup(); + TStringBuf sb(proto.GetBlobId().data(), proto.GetBlobId().size()); + Id.BlobId = TLogoBlobID::FromBinary(sb); + return TConclusionStatus::Success(); +} + +NKikimr::TConclusion<NKikimr::NOlap::TUnifiedBlobId> TUnifiedBlobId::BuildFromProto(const NKikimrColumnShardProto::TUnifiedBlobId& proto) { + TUnifiedBlobId result; + auto parse = result.DeserializeFromProto(proto); + if (!parse) { + return parse; + } + return result; +} + +NKikimrColumnShardProto::TUnifiedBlobId TUnifiedBlobId::SerializeToProto() const { + NKikimrColumnShardProto::TUnifiedBlobId result; + result.SetDsGroup(Id.DsGroup); + result.SetBlobId(Id.BlobId.AsBinaryString()); + return result; +} + +NKikimr::TConclusionStatus TBlobRange::DeserializeFromProto(const NKikimrColumnShardProto::TBlobRange& proto) { + auto parsed = TUnifiedBlobId::BuildFromString(proto.GetBlobId(), nullptr); + if (!parsed) { + return parsed; + } + BlobId = parsed.DetachResult(); + + Offset = proto.GetOffset(); + Size = proto.GetSize(); + return TConclusionStatus::Success(); +} + +NKikimr::TConclusion<NKikimr::NOlap::TBlobRange> TBlobRange::BuildFromProto(const NKikimrColumnShardProto::TBlobRange& proto) { + TBlobRange result; + auto parsed = result.DeserializeFromProto(proto); + if (!parsed) { + return parsed; + } else { + return result; + } +} + +NKikimrColumnShardProto::TBlobRange TBlobRange::SerializeToProto() const { + NKikimrColumnShardProto::TBlobRange result; + result.SetBlobId(BlobId.ToStringNew()); + result.SetOffset(Offset); + result.SetSize(Size); + return result; +} + +NKikimr::TConclusionStatus TBlobRangeLink16::DeserializeFromProto(const NKikimrColumnShardProto::TBlobRangeLink16& proto) { + BlobIdx = proto.GetBlobIdx(); + Offset = proto.GetOffset(); + Size = proto.GetSize(); + return TConclusionStatus::Success(); +} + +NKikimr::TConclusion<NKikimr::NOlap::TBlobRangeLink16> TBlobRangeLink16::BuildFromProto(const NKikimrColumnShardProto::TBlobRangeLink16& proto) { + TBlobRangeLink16 result; + auto parsed = result.DeserializeFromProto(proto); + if (!parsed) { + return parsed; + } else { + return result; + } +} + +NKikimrColumnShardProto::TBlobRangeLink16 TBlobRangeLink16::SerializeToProto() const { + NKikimrColumnShardProto::TBlobRangeLink16 result; + result.SetBlobIdx(GetBlobIdxVerified()); + result.SetOffset(Offset); + result.SetSize(Size); + return result; +} + +ui16 TBlobRangeLink16::GetBlobIdxVerified() const { + AFL_VERIFY(BlobIdx); + return *BlobIdx; +} + +NKikimr::NOlap::TBlobRange TBlobRangeLink16::RestoreRange(const TUnifiedBlobId& blobId) const { + return TBlobRange(blobId, Offset, Size); +} + +} diff --git a/ydb/core/tx/columnshard/common/blob.h b/ydb/core/tx/columnshard/common/blob.h new file mode 100644 index 000000000000..d7deea1df72d --- /dev/null +++ b/ydb/core/tx/columnshard/common/blob.h @@ -0,0 +1,410 @@ +#pragma once + +#include <ydb/core/base/logoblob.h> +#include <ydb/library/conclusion/result.h> + +#include <util/generic/string.h> + +namespace NKikimrColumnShardProto { +class TBlobRange; +class TBlobRangeLink16; +class TUnifiedBlobId; +} + +namespace NKikimr::NOlap { + +class IBlobGroupSelector { +protected: + virtual ~IBlobGroupSelector() = default; + +public: + virtual ui32 GetGroup(const TLogoBlobID& blobId) const = 0; +}; + +class TUnifiedBlobId; + +class TUnifiedBlobId { + // Id of a blob in YDB distributed storage + struct TDsBlobId { + TLogoBlobID BlobId; + ui32 DsGroup; + + bool operator == (const TDsBlobId& other) const { + return BlobId == other.BlobId && DsGroup == other.DsGroup; + } + + TString ToStringNew() const { + return Sprintf( "DS:%" PRIu32 ":%s", DsGroup, BlobId.ToString().c_str()); + } + + TString ToStringLegacy() const { + return BlobId.ToString(); + } + + ui64 Hash() const { + return CombineHashes<ui64>(BlobId.Hash(), IntHash(DsGroup)); + } + }; + + TDsBlobId Id; + +public: + TUnifiedBlobId() = default; + + // Initialize as DS blob Id + TUnifiedBlobId(ui32 dsGroup, const TLogoBlobID& logoBlobId) + : Id(TDsBlobId{logoBlobId, dsGroup}) + {} + + // Initialize as Small blob Id + TUnifiedBlobId(ui64 tabletId, ui32 gen, ui32 step, ui32 cookie, ui32 channel, const ui32 groupId, ui32 size) + : Id(TDsBlobId{TLogoBlobID(tabletId, gen, step, channel, size, cookie), groupId}) + {} + + TUnifiedBlobId(const TUnifiedBlobId& other) = default; + TUnifiedBlobId& operator = (const TUnifiedBlobId& logoBlobId) = default; + TUnifiedBlobId(TUnifiedBlobId&& other) = default; + TUnifiedBlobId& operator = (TUnifiedBlobId&& logoBlobId) = default; + + static TUnifiedBlobId BuildRaw(const ui32 groupId, const ui64 tabletId, const ui64 r1, const ui64 r2) { + return TUnifiedBlobId(groupId, TLogoBlobID(tabletId, r1, r2)); + } + + NKikimrColumnShardProto::TUnifiedBlobId SerializeToProto() const; + + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardProto::TUnifiedBlobId& proto); + + static TConclusion<TUnifiedBlobId> BuildFromProto(const NKikimrColumnShardProto::TUnifiedBlobId& proto); + + static TConclusion<TUnifiedBlobId> BuildFromString(const TString& id, const IBlobGroupSelector* dsGroupSelector) { + TString error; + TUnifiedBlobId result = ParseFromString(id, dsGroupSelector, error); + if (!result.IsValid()) { + return TConclusionStatus::Fail(error); + } + return result; + } + + static TUnifiedBlobId ParseFromString(const TString& str, + const IBlobGroupSelector* dsGroupSelector, TString& error); + + bool operator == (const TUnifiedBlobId& other) const { + return Id == other.Id; + } + + bool IsValid() const { + return Id.BlobId.IsValid(); + } + + size_t BlobSize() const { + return Id.BlobId.BlobSize(); + } + + TLogoBlobID GetLogoBlobId() const { + return Id.BlobId; + } + + ui32 GetDsGroup() const { + return Id.DsGroup; + } + + ui64 GetTabletId() const { + return Id.BlobId.TabletID(); + } + + ui64 Hash() const noexcept { + return Id.Hash(); + } + + // This is only implemented for DS for backward compatibility with persisted data. + // All new functionality should rahter use string blob id representation + TString SerializeBinary() const { + return TString((const char*)GetLogoBlobId().GetRaw(), sizeof(TLogoBlobID)); + } + + TString ToStringLegacy() const { + return Id.ToStringLegacy(); + } + + TString ToStringNew() const { + return Id.ToStringNew(); + } +}; + + +// Describes a range of bytes in a blob. It is used for read requests and for caching. +struct TBlobRange; +class TBlobRangeLink16 { +public: + using TLinkId = ui16; + + std::optional<ui16> BlobIdx; + ui32 Offset; + ui32 Size; + + TBlobRangeLink16() = default; + + ui32 GetSize() const { + return Size; + } + + ui32 GetOffset() const { + return Offset; + } + + explicit TBlobRangeLink16(ui32 offset, ui32 size) + : Offset(offset) + , Size(size) { + } + + explicit TBlobRangeLink16(const ui16 blobIdx, ui32 offset, ui32 size) + : BlobIdx(blobIdx) + , Offset(offset) + , Size(size) { + } + + ui16 GetBlobIdxVerified() const; + + bool IsValid() const { + return !!BlobIdx; + } + + NKikimrColumnShardProto::TBlobRangeLink16 SerializeToProto() const; + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardProto::TBlobRangeLink16& proto); + static TConclusion<TBlobRangeLink16> BuildFromProto(const NKikimrColumnShardProto::TBlobRangeLink16& proto); + TString ToString() const { + TStringBuilder result; + result << "["; + if (BlobIdx) { + result << *BlobIdx; + } else { + result << "NO_BLOB"; + } + return result << ":" << Offset << ":" << Size << "]"; + } + + TBlobRange RestoreRange(const TUnifiedBlobId& blobId) const; +}; + +struct TBlobRange { + TUnifiedBlobId BlobId; + ui32 Offset; + ui32 Size; + + bool operator<(const TBlobRange& br) const { + if (BlobId != br.BlobId) { + return BlobId.GetLogoBlobId().Compare(br.BlobId.GetLogoBlobId()) < 0; + } else if (Offset != br.Offset) { + return Offset < br.Offset; + } else { + return Size < br.Size; + } + } + + const TUnifiedBlobId& GetBlobId() const { + return BlobId; + } + + bool IsNextRangeFor(const TBlobRange& br) const { + return BlobId == br.BlobId && br.Offset + br.Size == Offset; + } + + bool TryGlueSameBlob(const TBlobRange& br, const ui64 limit) { + if (GetBlobId() != br.GetBlobId()) { + return false; + } + const ui32 right = std::max<ui32>(Offset + Size, br.Offset + br.Size); + const ui32 offset = std::min<ui32>(Offset, br.Offset); + const ui32 size = right - offset; + if (size > limit) { + return false; + } + Size = size; + Offset = offset; + return true; + } + + bool TryGlueWithNext(const TBlobRange& br) { + if (!br.IsNextRangeFor(*this)) { + return false; + } + Size += br.Size; + return true; + } + + TBlobRangeLink16 BuildLink(const TBlobRangeLink16::TLinkId idx) const { + return TBlobRangeLink16(idx, Offset, Size); + } + + TBlobRangeLink16 IncorrectLink() const { + return TBlobRangeLink16(Offset, Size); + } + + bool IsValid() const { + return BlobId.IsValid() && Size && Offset + Size <= BlobId.BlobSize(); + } + + ui32 GetBlobSize() const { + return Size; + } + + bool IsFullBlob() const { + return Size == BlobId.BlobSize(); + } + + explicit TBlobRange(const TUnifiedBlobId& blobId = TUnifiedBlobId(), ui32 offset = 0, ui32 size = 0) + : BlobId(blobId) + , Offset(offset) + , Size(size) + { + if (Size > 0) { + Y_ABORT_UNLESS(Offset < BlobId.BlobSize()); + Y_ABORT_UNLESS(Offset + Size <= BlobId.BlobSize()); + } + } + + static TBlobRange FromBlobId(const TUnifiedBlobId& blobId) { + return TBlobRange(blobId, 0, blobId.BlobSize()); + } + + bool operator == (const TBlobRange& other) const { + return + BlobId == other.BlobId && + Offset == other.Offset && + Size == other.Size; + } + + ui64 Hash() const noexcept { + ui64 hash = BlobId.Hash(); + hash = CombineHashes<ui64>(hash, IntHash(Offset)); + hash = CombineHashes<ui64>(hash, IntHash(Size)); + return hash; + } + + TString ToString() const { + return Sprintf("{ Blob: %s Offset: %" PRIu32 " Size: %" PRIu32 " }", + BlobId.ToStringNew().c_str(), Offset, Size); + } + + NKikimrColumnShardProto::TBlobRange SerializeToProto() const; + + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardProto::TBlobRange& proto); + static TConclusion<TBlobRange> BuildFromProto(const NKikimrColumnShardProto::TBlobRange& proto); +}; + +class IBlobInUseTracker { +private: + virtual bool DoFreeBlob(const NOlap::TUnifiedBlobId& blobId) = 0; + virtual bool DoUseBlob(const NOlap::TUnifiedBlobId& blobId) = 0; +public: + virtual ~IBlobInUseTracker() = default; + + bool FreeBlob(const NOlap::TUnifiedBlobId& blobId) { + return DoFreeBlob(blobId); + } + bool UseBlob(const NOlap::TUnifiedBlobId& blobId) { + return DoUseBlob(blobId); + } + + virtual bool IsBlobInUsage(const NOlap::TUnifiedBlobId& blobId) const = 0; +}; + +// Expected blob lifecycle: EVICTING -> SELF_CACHED -> EXTERN <-> CACHED +enum class EEvictState : ui8 { + UNKNOWN = 0, + EVICTING = 1, // source, extern, cached blobs: 1-- + SELF_CACHED = 2, // source, extern, cached blobs: 11- + EXTERN = 3, // source, extern, cached blobs: -1- + CACHED = 4, // source, extern, cached blobs: -11 + ERASING = 5, // source, extern, cached blobs: -?? + //ERASED = 6, // source, extern, cached blobs: --- +}; + +inline bool IsExported(EEvictState state) { + return state == EEvictState::SELF_CACHED || + state == EEvictState::EXTERN || + state == EEvictState::CACHED; +} + +inline bool CouldBeExported(EEvictState state) { + return state == EEvictState::SELF_CACHED || + state == EEvictState::EXTERN || + state == EEvictState::CACHED || + state == EEvictState::ERASING; +} + +inline bool IsDeleted(EEvictState state) { + return ui8(state) >= ui8(EEvictState::EXTERN); // !EVICTING and !SELF_CACHED +} + +struct TEvictedBlob { + EEvictState State = EEvictState::UNKNOWN; + TUnifiedBlobId Blob; + TUnifiedBlobId ExternBlob; + TUnifiedBlobId CachedBlob; + + bool operator == (const TEvictedBlob& other) const { + return Blob == other.Blob; + } + + ui64 Hash() const noexcept { + return Blob.Hash(); + } + + bool IsEvicting() const { + return State == EEvictState::EVICTING; + } + + bool IsExternal() const { + if (State == EEvictState::EXTERN) { + Y_ABORT_UNLESS(ExternBlob.IsValid()); + return true; + } + return false; + } + + TString ToString() const { + return TStringBuilder() << "state: " << (ui32)State + << " blob: " << Blob.ToStringNew() + << " extern: " << ExternBlob.ToStringNew() + << " cached: " << CachedBlob.ToStringNew(); + } +}; + +} + +inline +IOutputStream& operator <<(IOutputStream& out, const NKikimr::NOlap::TUnifiedBlobId& blobId) { + return out << blobId.ToStringNew(); +} + +inline +IOutputStream& operator <<(IOutputStream& out, const NKikimr::NOlap::TBlobRange& blobRange) { + return out << blobRange.ToString(); +} + +inline +IOutputStream& operator <<(IOutputStream& out, const NKikimr::NOlap::TBlobRangeLink16& blobRange) { + return out << blobRange.ToString(); +} + +template<> +struct ::THash<NKikimr::NOlap::TUnifiedBlobId> { + inline ui64 operator()(const NKikimr::NOlap::TUnifiedBlobId& a) const { + return a.Hash(); + } +}; + +template <> +struct THash<NKikimr::NOlap::TBlobRange> { + inline size_t operator() (const NKikimr::NOlap::TBlobRange& key) const { + return key.Hash(); + } +}; + +template <> +struct THash<NKikimr::NOlap::TEvictedBlob> { + inline size_t operator() (const NKikimr::NOlap::TEvictedBlob& key) const { + return key.Hash(); + } +}; diff --git a/ydb/core/tx/columnshard/common/protos/blob_range.proto b/ydb/core/tx/columnshard/common/protos/blob_range.proto new file mode 100644 index 000000000000..fe72258f223c --- /dev/null +++ b/ydb/core/tx/columnshard/common/protos/blob_range.proto @@ -0,0 +1,18 @@ +package NKikimrColumnShardProto; + +message TUnifiedBlobId { + optional uint32 DsGroup = 1; + optional string BlobId = 2; +} + +message TBlobRange { + optional string BlobId = 1; + optional uint64 Offset = 2; + optional uint64 Size = 3; +} + +message TBlobRangeLink16 { + optional uint32 BlobIdx = 1; + optional uint64 Offset = 2; + optional uint64 Size = 3; +} diff --git a/ydb/core/tx/columnshard/common/protos/ya.make b/ydb/core/tx/columnshard/common/protos/ya.make index 500d562e466e..872e967bc018 100644 --- a/ydb/core/tx/columnshard/common/protos/ya.make +++ b/ydb/core/tx/columnshard/common/protos/ya.make @@ -2,6 +2,7 @@ PROTO_LIBRARY() SRCS( snapshot.proto + blob_range.proto ) PEERDIR( diff --git a/ydb/core/tx/columnshard/common/tablet_id.cpp b/ydb/core/tx/columnshard/common/tablet_id.cpp new file mode 100644 index 000000000000..37cff9105404 --- /dev/null +++ b/ydb/core/tx/columnshard/common/tablet_id.cpp @@ -0,0 +1,12 @@ +#include "tablet_id.h" +#include <util/stream/output.h> +#include <util/generic/typetraits.h> + +namespace NKikimr::NOlap { + +} + +template <> +void Out<NKikimr::NOlap::TTabletId>(IOutputStream& os, TTypeTraits<NKikimr::NOlap::TTabletId>::TFuncParam val) { + os << (ui64)val; +} diff --git a/ydb/core/tx/columnshard/common/tablet_id.h b/ydb/core/tx/columnshard/common/tablet_id.h new file mode 100644 index 000000000000..ca1f59d64c77 --- /dev/null +++ b/ydb/core/tx/columnshard/common/tablet_id.h @@ -0,0 +1,8 @@ +#pragma once +#include <util/system/types.h> + +namespace NKikimr::NOlap { +enum class TTabletId: ui64 { +}; + +} diff --git a/ydb/core/tx/columnshard/common/tests/shard_reader.h b/ydb/core/tx/columnshard/common/tests/shard_reader.h index 777c93d8f1f5..1bb3ad353835 100644 --- a/ydb/core/tx/columnshard/common/tests/shard_reader.h +++ b/ydb/core/tx/columnshard/common/tests/shard_reader.h @@ -6,7 +6,6 @@ #include <ydb/core/tx/datashard/datashard.h> #include <ydb/core/kqp/compute_actor/kqp_compute_events.h> #include <ydb/core/formats/arrow/arrow_helpers.h> -#include <ydb/core/tx/columnshard/engines/reader/read_metadata.h> #include <ydb/core/tx/columnshard/columnshard_private_events.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> #include <optional> @@ -220,8 +219,8 @@ class TShardReader { if (auto* evData = std::get<0>(event)) { auto b = evData->ArrowBatch; if (b) { - NArrow::TStatusValidator::Validate(b->ValidateFull()); - ResultBatches.push_back(b); + ResultBatches.push_back(NArrow::ToBatch(b, true)); + NArrow::TStatusValidator::Validate(ResultBatches.back()->ValidateFull()); } else { AFL_VERIFY(evData->Finished); } diff --git a/ydb/core/tx/columnshard/common/ya.make b/ydb/core/tx/columnshard/common/ya.make index a73340ea9681..993b47fff695 100644 --- a/ydb/core/tx/columnshard/common/ya.make +++ b/ydb/core/tx/columnshard/common/ya.make @@ -6,6 +6,8 @@ SRCS( scalars.cpp snapshot.cpp portion.cpp + tablet_id.cpp + blob.cpp ) PEERDIR( diff --git a/ydb/core/tx/columnshard/config.clang-format b/ydb/core/tx/columnshard/config.clang-format new file mode 100644 index 000000000000..f7d926ac1df2 --- /dev/null +++ b/ydb/core/tx/columnshard/config.clang-format @@ -0,0 +1,41 @@ +BasedOnStyle: Google +IndentWidth: 4 +ColumnLimit: 232 +SpacesBeforeTrailingComments: 3 +InsertBraces : true +DerivePointerAlignment: true +PointerAlignment: Left +AccessModifierOffset: -4 +IndentCaseLabels: true +ShortBlockStyle: SBS_Never +AllowShortCaseLabelsOnASingleLine : false +AllowShortCompoundRequirementOnASingleLine : false +AllowShortEnumsOnASingleLine : false +AllowShortFunctionsOnASingleLine : false +AllowShortLambdasOnASingleLine : false +ShortIfStyle: SIS_Never +ShortLambdaStyle: SLS_None +AllowShortLoopsOnASingleLine : false +AllowAllParametersOfDeclarationOnNextLine: true +ConstructorInitializerAllOnOneLineOrOnePerLine: false +PackConstructorInitializersNever: true +BreakConstructorInitializersBeforeComma: true +IncludeCategories: + - Regex: '^"[0-9,a-z,A-Z,_]*"' + Priority: 0 + SortPriority: 0 + - Regex: '^".*' + Priority: 3 + SortPriority: 3 + - Regex: '^<.*ydb/core.*' + Priority: 5 + SortPriority: 5 + - Regex: '^\<.*ydb/.*' + Priority: 10 + SortPriority: 10 + - Regex: '^\<.*\/.*' + Priority: 15 + SortPriority: 15 + - Regex: '.*' + Priority: 20 + SortPriority: 20 diff --git a/ydb/core/tx/columnshard/counters/blobs_manager.cpp b/ydb/core/tx/columnshard/counters/blobs_manager.cpp index 8e67ada3932c..1a590fb36387 100644 --- a/ydb/core/tx/columnshard/counters/blobs_manager.cpp +++ b/ydb/core/tx/columnshard/counters/blobs_manager.cpp @@ -52,7 +52,7 @@ void TBlobsManagerCounters::OnBlobsKeep(const TSet<TLogoBlobID>& blobs) const { // BlobsKeepBytes->Set(size); } -void TBlobsManagerCounters::OnBlobsDelete(const TSet<TLogoBlobID>& /*blobs*/) const { +void TBlobsManagerCounters::OnBlobsDelete(const NOlap::TTabletsByBlob& /*blobs*/) const { // BlobsDeleteCount->Set(blobs.size()); // ui64 size = 0; // for (auto&& i : blobs) { diff --git a/ydb/core/tx/columnshard/counters/blobs_manager.h b/ydb/core/tx/columnshard/counters/blobs_manager.h index ef11e508261f..8fdc25436267 100644 --- a/ydb/core/tx/columnshard/counters/blobs_manager.h +++ b/ydb/core/tx/columnshard/counters/blobs_manager.h @@ -1,7 +1,14 @@ #pragma once +#include "common/owner.h" + #include <ydb/core/base/logoblob.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/common.h> + #include <library/cpp/monlib/dynamic_counters/counters.h> -#include "common/owner.h" + +namespace NKikimr::NOlap { +class TTabletsByBlob; +} namespace NKikimr::NColumnShard { @@ -48,7 +55,7 @@ class TBlobsManagerCounters: public TCommonCountersOwner { void OnBlobsKeep(const TSet<TLogoBlobID>& blobs) const; - void OnBlobsDelete(const TSet<TLogoBlobID>& /*blobs*/) const; + void OnBlobsDelete(const NOlap::TTabletsByBlob& blobs) const; void OnAddSmallBlob(const ui32 bSize) const { AddSmallBlobBytes->Add(bSize); diff --git a/ydb/core/tx/columnshard/counters/columnshard.cpp b/ydb/core/tx/columnshard/counters/columnshard.cpp index e094fbbcd5ac..64c7e2931c5f 100644 --- a/ydb/core/tx/columnshard/counters/columnshard.cpp +++ b/ydb/core/tx/columnshard/counters/columnshard.cpp @@ -24,14 +24,18 @@ TCSCounters::TCSCounters() FutureIndexationInputBytes = TBase::GetDeriviative("FutureIndexationInput/Bytes"); IndexationInputBytes = TBase::GetDeriviative("IndexationInput/Bytes"); - OverloadInsertTableBytes = TBase::GetDeriviative("OverloadInsertTable/Bytes"); - OverloadInsertTableCount = TBase::GetDeriviative("OverloadInsertTable/Count"); - OverloadShardTxBytes = TBase::GetDeriviative("OverloadShard/Tx/Bytes"); - OverloadShardTxCount = TBase::GetDeriviative("OverloadShard/Tx/Count"); - OverloadShardWritesBytes = TBase::GetDeriviative("OverloadShard/Writes/Bytes"); - OverloadShardWritesCount = TBase::GetDeriviative("OverloadShard/Writes/Count"); - OverloadShardWritesSizeBytes = TBase::GetDeriviative("OverloadShard/WritesSize/Bytes"); - OverloadShardWritesSizeCount = TBase::GetDeriviative("OverloadShard/WritesSize/Count"); + IndexMetadataLimitBytes = TBase::GetValue("IndexMetadata/Limit/Bytes"); + + OverloadInsertTableBytes = TBase::GetDeriviative("Overload/InsertTable/Bytes"); + OverloadInsertTableCount = TBase::GetDeriviative("Overload/InsertTable/Count"); + OverloadMetadataBytes = TBase::GetDeriviative("Overload/Metadata/Bytes"); + OverloadMetadataCount = TBase::GetDeriviative("Overload/Metadata/Count"); + OverloadShardTxBytes = TBase::GetDeriviative("Overload/Shard/Tx/Bytes"); + OverloadShardTxCount = TBase::GetDeriviative("Overload/Shard/Tx/Count"); + OverloadShardWritesBytes = TBase::GetDeriviative("Overload/Shard/Writes/Bytes"); + OverloadShardWritesCount = TBase::GetDeriviative("Overload/Shard/Writes/Count"); + OverloadShardWritesSizeBytes = TBase::GetDeriviative("Overload/Shard/WritesSize/Bytes"); + OverloadShardWritesSizeCount = TBase::GetDeriviative("Overload/Shard/WritesSize/Count"); InternalCompactionGranuleBytes = TBase::GetValueAutoAggregationsClient("InternalCompaction/Bytes"); InternalCompactionGranulePortionsCount = TBase::GetValueAutoAggregationsClient("InternalCompaction/PortionsCount"); diff --git a/ydb/core/tx/columnshard/counters/columnshard.h b/ydb/core/tx/columnshard/counters/columnshard.h index 2441ca6fef3b..6bada377df17 100644 --- a/ydb/core/tx/columnshard/counters/columnshard.h +++ b/ydb/core/tx/columnshard/counters/columnshard.h @@ -34,8 +34,12 @@ class TCSCounters: public TCommonCountersOwner { NMonitoring::TDynamicCounters::TCounterPtr FutureIndexationInputBytes; NMonitoring::TDynamicCounters::TCounterPtr IndexationInputBytes; + NMonitoring::TDynamicCounters::TCounterPtr IndexMetadataLimitBytes; + NMonitoring::TDynamicCounters::TCounterPtr OverloadInsertTableBytes; NMonitoring::TDynamicCounters::TCounterPtr OverloadInsertTableCount; + NMonitoring::TDynamicCounters::TCounterPtr OverloadMetadataBytes; + NMonitoring::TDynamicCounters::TCounterPtr OverloadMetadataCount; NMonitoring::TDynamicCounters::TCounterPtr OverloadShardTxBytes; NMonitoring::TDynamicCounters::TCounterPtr OverloadShardTxCount; NMonitoring::TDynamicCounters::TCounterPtr OverloadShardWritesBytes; @@ -131,6 +135,11 @@ class TCSCounters: public TCommonCountersOwner { OverloadInsertTableCount->Add(1); } + void OnOverloadMetadata(const ui64 size) const { + OverloadMetadataBytes->Add(size); + OverloadMetadataCount->Add(1); + } + void OnOverloadShardTx(const ui64 size) const { OverloadShardTxBytes->Add(size); OverloadShardTxCount->Add(1); @@ -164,6 +173,10 @@ class TCSCounters: public TCommonCountersOwner { IndexationInputBytes->Add(size); } + void OnIndexMetadataLimit(const ui64 limit) const { + IndexMetadataLimitBytes->Set(limit); + } + void OnStartBackground() const { StartBackgroundCount->Add(1); } diff --git a/ydb/core/tx/columnshard/counters/common/histogram.cpp b/ydb/core/tx/columnshard/counters/common/histogram.cpp new file mode 100644 index 000000000000..096ea8dc5c08 --- /dev/null +++ b/ydb/core/tx/columnshard/counters/common/histogram.cpp @@ -0,0 +1,83 @@ +#include "histogram.h" + +namespace NKikimr::NColumnShard { + +TIncrementalHistogram::TIncrementalHistogram(const TString& moduleId, const TString& metricId, const TString& category, const std::set<i64>& values) + : TBase(moduleId) +{ + DeepSubGroup("metric", metricId); + if (category) { + DeepSubGroup("category", category); + } + std::optional<TString> predName; + for (auto&& i : values) { + if (!predName) { + Counters.emplace(i, TBase::GetValue("(-Inf," + ::ToString(i) + "]")); + } else { + Counters.emplace(i, TBase::GetValue("(" + *predName + "," + ::ToString(i) + "]")); + } + predName = ::ToString(i); + } + Y_ABORT_UNLESS(predName); + PlusInf = TBase::GetValue("(" + *predName + ",+Inf)"); +} + +TIncrementalHistogram::TIncrementalHistogram(const TString& moduleId, const TString& metricId, const TString& category, const std::map<i64, TString>& values) + : TBase(moduleId) +{ + DeepSubGroup("metric", metricId); + if (category) { + DeepSubGroup("category", category); + } + std::optional<TString> predName; + for (auto&& i : values) { + if (!predName) { + Counters.emplace(i.first, TBase::GetValue("(-Inf," + i.second + "]")); + } else { + Counters.emplace(i.first, TBase::GetValue("(" + *predName + "," + i.second + "]")); + } + predName = i.second; + } + Y_ABORT_UNLESS(predName); + PlusInf = TBase::GetValue("(" + *predName + ",+Inf)"); +} + +TDeriviativeHistogram::TDeriviativeHistogram(const TString& moduleId, const TString& signalName, const TString& category, const std::set<i64>& values) + : TBase(moduleId) +{ + if (category) { + DeepSubGroup("category", category); + } + std::optional<TString> predName; + for (auto&& i : values) { + if (!predName) { + Counters.emplace(i, CreateSubGroup("bin", "(-Inf," + ::ToString(i) + "]").GetDeriviative(signalName)); + } else { + Counters.emplace(i, CreateSubGroup("bin", "(" + *predName + "," + ::ToString(i) + "]").GetDeriviative(signalName)); + } + predName = ::ToString(i); + } + Y_ABORT_UNLESS(predName); + PlusInf = CreateSubGroup("bin", "(" + *predName + ",+Inf)").GetDeriviative(signalName); +} + +TDeriviativeHistogram::TDeriviativeHistogram(const TString& moduleId, const TString& signalName, const TString& category, const std::map<i64, TString>& values) + : TBase(moduleId) +{ + if (category) { + DeepSubGroup("category", category); + } + std::optional<TString> predName; + for (auto&& i : values) { + if (!predName) { + Counters.emplace(i.first, CreateSubGroup("bin", "(-Inf," + i.second + "]").GetDeriviative(signalName)); + } else { + Counters.emplace(i.first, CreateSubGroup("bin", "(" + *predName + "," + i.second + "]").GetDeriviative(signalName)); + } + predName = i.second; + } + Y_ABORT_UNLESS(predName); + PlusInf = CreateSubGroup("bin", "(" + *predName + ",+Inf)").GetDeriviative(signalName); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/counters/common/histogram.h b/ydb/core/tx/columnshard/counters/common/histogram.h new file mode 100644 index 000000000000..fcd1170ec142 --- /dev/null +++ b/ydb/core/tx/columnshard/counters/common/histogram.h @@ -0,0 +1,118 @@ +#pragma once +#include "owner.h" +#include <library/cpp/monlib/dynamic_counters/counters.h> +#include <set> +#include <map> + +namespace NKikimr::NColumnShard { + +class TIncrementalHistogram: public TCommonCountersOwner { +private: + using TBase = TCommonCountersOwner; + std::map<i64, NMonitoring::TDynamicCounters::TCounterPtr> Counters; + NMonitoring::TDynamicCounters::TCounterPtr PlusInf; + + NMonitoring::TDynamicCounters::TCounterPtr GetQuantile(const i64 value) const { + auto it = Counters.lower_bound(value); + if (it == Counters.end()) { + return PlusInf; + } else { + return it->second; + } + } +public: + + class TGuard { + private: + class TLineGuard { + private: + NMonitoring::TDynamicCounters::TCounterPtr Counter; + i64 Value = 0; + public: + TLineGuard(NMonitoring::TDynamicCounters::TCounterPtr counter) + : Counter(counter) { + + } + + ~TLineGuard() { + Sub(Value); + } + + void Add(const i64 value) { + Counter->Add(value); + Value += value; + } + + void Sub(const i64 value) { + Counter->Sub(value); + Value -= value; + Y_ABORT_UNLESS(Value >= 0); + } + }; + + std::map<i64, TLineGuard> Counters; + TLineGuard PlusInf; + + TLineGuard& GetLineGuard(const i64 value) { + auto it = Counters.lower_bound(value); + if (it == Counters.end()) { + return PlusInf; + } else { + return it->second; + } + } + public: + TGuard(const TIncrementalHistogram& owner) + : PlusInf(owner.PlusInf) { + for (auto&& i : owner.Counters) { + Counters.emplace(i.first, TLineGuard(i.second)); + } + } + void Add(const i64 value, const i64 count) { + GetLineGuard(value).Add(count); + } + + void Sub(const i64 value, const i64 count) { + GetLineGuard(value).Sub(count); + } + }; + + std::shared_ptr<TGuard> BuildGuard() const { + return std::make_shared<TGuard>(*this); + } + + TIncrementalHistogram(const TString& moduleId, const TString& metricId, const TString& category, const std::set<i64>& values); + + TIncrementalHistogram(const TString& moduleId, const TString& metricId, const TString& category, const std::map<i64, TString>& values); + +}; + +class TDeriviativeHistogram: public TCommonCountersOwner { +private: + using TBase = TCommonCountersOwner; + std::map<i64, NMonitoring::TDynamicCounters::TCounterPtr> Counters; + NMonitoring::TDynamicCounters::TCounterPtr PlusInf; + + NMonitoring::TDynamicCounters::TCounterPtr GetQuantile(const i64 value) const { + auto it = Counters.lower_bound(value); + if (it == Counters.end()) { + return PlusInf; + } else { + return it->second; + } + } +public: + + void Collect(const i64 volume, const ui32 count = 1) const { + GetQuantile(volume)->Add(count); + + } + + TDeriviativeHistogram(const TString& moduleId, const TString& signalName, const TString& category, const std::set<i64>& values); + + TDeriviativeHistogram(const TString& moduleId, const TString& signalName, const TString& category, const std::map<i64, TString>& values); + +}; + + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/counters/common/ya.make b/ydb/core/tx/columnshard/counters/common/ya.make index 804699ec52bd..b2e330fc8b9b 100644 --- a/ydb/core/tx/columnshard/counters/common/ya.make +++ b/ydb/core/tx/columnshard/counters/common/ya.make @@ -6,6 +6,7 @@ SRCS( owner.cpp private.cpp object_counter.cpp + histogram.cpp ) PEERDIR( diff --git a/ydb/core/tx/columnshard/counters/engine_logs.cpp b/ydb/core/tx/columnshard/counters/engine_logs.cpp index 07b2844e97de..e9daf966e196 100644 --- a/ydb/core/tx/columnshard/counters/engine_logs.cpp +++ b/ydb/core/tx/columnshard/counters/engine_logs.cpp @@ -2,6 +2,8 @@ #include <ydb/core/base/appdata.h> #include <ydb/core/base/counters.h> #include <ydb/core/tx/columnshard/engines/portions/portion_info.h> +#include <ydb/library/actors/core/log.h> + #include <util/generic/serialized_enum.h> namespace NKikimr::NColumnShard { @@ -38,35 +40,82 @@ TEngineLogsCounters::TEngineLogsCounters() PortionToDropCount = TBase::GetDeriviative("Ttl/PortionToDrop/Count"); PortionToDropBytes = TBase::GetDeriviative("Ttl/PortionToDrop/Bytes"); + PortionToDropLag = TBase::GetHistogram("Ttl/PortionToDrop/Lag/Duration", NMonitoring::ExponentialHistogram(18, 2, 5)); + SkipDeleteWithProcessMemory = TBase::GetHistogram("Ttl/PortionToDrop/Skip/ProcessMemory/Lag/Duration", NMonitoring::ExponentialHistogram(18, 2, 5)); + SkipDeleteWithTxLimit = TBase::GetHistogram("Ttl/PortionToDrop/Skip/TxLimit/Lag/Duration", NMonitoring::ExponentialHistogram(18, 2, 5)); PortionToEvictCount = TBase::GetDeriviative("Ttl/PortionToEvict/Count"); PortionToEvictBytes = TBase::GetDeriviative("Ttl/PortionToEvict/Bytes"); + PortionToEvictLag = TBase::GetHistogram("Ttl/PortionToEvict/Lag/Duration", NMonitoring::ExponentialHistogram(18, 2, 5)); + SkipEvictionWithProcessMemory = TBase::GetHistogram("Ttl/PortionToEvict/Skip/ProcessMemory/Lag/Duration", NMonitoring::ExponentialHistogram(18, 2, 5)); + SkipEvictionWithTxLimit = TBase::GetHistogram("Ttl/PortionToEvict/Skip/TxLimit/Lag/Duration", NMonitoring::ExponentialHistogram(18, 2, 5)); + + ActualizationTaskSizeRemove = TBase::GetHistogram("Actualization/RemoveTasks/Size", NMonitoring::ExponentialHistogram(18, 2)); + ActualizationTaskSizeEvict = TBase::GetHistogram("Actualization/EvictTasks/Size", NMonitoring::ExponentialHistogram(18, 2)); + + ActualizationSkipRWProgressCount = TBase::GetDeriviative("Actualization/Skip/RWProgress/Count"); + ActualizationSkipTooFreshPortion = TBase::GetHistogram("Actualization//Skip/TooFresh/Duration", NMonitoring::LinearHistogram(12, 0, 360)); PortionNoTtlColumnCount = TBase::GetDeriviative("Ttl/PortionNoTtlColumn/Count"); PortionNoTtlColumnBytes = TBase::GetDeriviative("Ttl/PortionNoTtlColumn/Bytes"); PortionNoBorderCount = TBase::GetDeriviative("Ttl/PortionNoBorder/Count"); PortionNoBorderBytes = TBase::GetDeriviative("Ttl/PortionNoBorder/Bytes"); + + GranuleOptimizerLocked = TBase::GetDeriviative("Optimizer/Granules/Locked"); + + IndexMetadataUsageBytes = TBase::GetValue("IndexMetadata/Usage/Bytes"); + + StatUsageForTTLCount = TBase::GetDeriviative("Ttl/StatUsageForTTLCount/Count"); + ChunkUsageForTTLCount = TBase::GetDeriviative("Ttl/ChunkUsageForTTLCount/Count"); +} + +void TEngineLogsCounters::OnActualizationTask(const ui32 evictCount, const ui32 removeCount) const { + AFL_VERIFY(evictCount * removeCount == 0)("evict", evictCount)("remove", removeCount); + AFL_VERIFY(evictCount + removeCount); + if (evictCount) { + ActualizationTaskSizeEvict->Collect(evictCount); + } else { + ActualizationTaskSizeRemove->Collect(removeCount); + } } void TEngineLogsCounters::TPortionsInfoGuard::OnNewPortion(const std::shared_ptr<NOlap::TPortionInfo>& portion) const { const ui32 producedId = (ui32)(portion->HasRemoveSnapshot() ? NOlap::NPortion::EProduced::INACTIVE : portion->GetMeta().Produced); Y_ABORT_UNLESS(producedId < BlobGuards.size()); - for (auto&& i : portion->GetBlobIds()) { - BlobGuards[producedId]->Add(i.BlobSize(), i.BlobSize()); + for (auto&& i : portion->GetRecords()) { + BlobGuards[producedId]->Add(i.GetBlobRange().Size, i.GetBlobRange().Size); + } + for (auto&& i : portion->GetIndexes()) { + BlobGuards[producedId]->Add(i.GetBlobRange().Size, i.GetBlobRange().Size); } PortionRecordCountGuards[producedId]->Add(portion->GetRecordsCount(), 1); - PortionSizeGuards[producedId]->Add(portion->GetBlobBytes(), 1); + PortionSizeGuards[producedId]->Add(portion->GetTotalBlobBytes(), 1); } void TEngineLogsCounters::TPortionsInfoGuard::OnDropPortion(const std::shared_ptr<NOlap::TPortionInfo>& portion) const { const ui32 producedId = (ui32)(portion->HasRemoveSnapshot() ? NOlap::NPortion::EProduced::INACTIVE : portion->GetMeta().Produced); Y_ABORT_UNLESS(producedId < BlobGuards.size()); - for (auto&& i : portion->GetBlobIds()) { - BlobGuards[producedId]->Sub(i.BlobSize(), i.BlobSize()); + for (auto&& i : portion->GetRecords()) { + BlobGuards[producedId]->Sub(i.GetBlobRange().Size, i.GetBlobRange().Size); + } + for (auto&& i : portion->GetIndexes()) { + BlobGuards[producedId]->Sub(i.GetBlobRange().Size, i.GetBlobRange().Size); } PortionRecordCountGuards[producedId]->Sub(portion->GetRecordsCount(), 1); - PortionSizeGuards[producedId]->Sub(portion->GetBlobBytes(), 1); + PortionSizeGuards[producedId]->Sub(portion->GetTotalBlobBytes(), 1); +} + +NKikimr::NColumnShard::TBaseGranuleDataClassSummary TBaseGranuleDataClassSummary::operator+(const TBaseGranuleDataClassSummary& item) const { + TBaseGranuleDataClassSummary result; + result.TotalPortionsSize = TotalPortionsSize + item.TotalPortionsSize; + result.ColumnPortionsSize = ColumnPortionsSize + item.ColumnPortionsSize; + AFL_VERIFY(result.TotalPortionsSize >= 0); + AFL_VERIFY(result.ColumnPortionsSize >= 0); + result.PortionsCount = PortionsCount + item.PortionsCount; + result.RecordsCount = RecordsCount + item.RecordsCount; + result.MetadataMemoryPortionsSize = MetadataMemoryPortionsSize + item.MetadataMemoryPortionsSize; + return result; } } diff --git a/ydb/core/tx/columnshard/counters/engine_logs.h b/ydb/core/tx/columnshard/counters/engine_logs.h index 20aa0a9757c8..97a4716652c3 100644 --- a/ydb/core/tx/columnshard/counters/engine_logs.h +++ b/ydb/core/tx/columnshard/counters/engine_logs.h @@ -1,5 +1,6 @@ #pragma once #include "common/owner.h" +#include "common/histogram.h" #include <ydb/core/tx/columnshard/common/portion.h> #include <library/cpp/monlib/dynamic_counters/counters.h> #include <util/string/builder.h> @@ -13,12 +14,17 @@ namespace NKikimr::NColumnShard { class TBaseGranuleDataClassSummary { protected: - i64 PortionsSize = 0; + i64 ColumnPortionsSize = 0; + i64 TotalPortionsSize = 0; i64 PortionsCount = 0; i64 RecordsCount = 0; + i64 MetadataMemoryPortionsSize = 0; public: - i64 GetPortionsSize() const { - return PortionsSize; + i64 GetColumnPortionsSize() const { + return ColumnPortionsSize; + } + i64 GetTotalPortionsSize() const { + return TotalPortionsSize; } i64 GetRecordsCount() const { return RecordsCount; @@ -26,18 +32,21 @@ class TBaseGranuleDataClassSummary { i64 GetPortionsCount() const { return PortionsCount; } + i64 GetMetadataMemoryPortionsSize() const { + return MetadataMemoryPortionsSize; + } TString DebugString() const { - return TStringBuilder() << "size:" << PortionsSize << ";count:" << PortionsCount << ";"; + return TStringBuilder() << + "columns_size:" << ColumnPortionsSize << + ";total_size:" << TotalPortionsSize << + ";count:" << PortionsCount << + ";metadata_portions_size:" << MetadataMemoryPortionsSize << + ";records_count:" << RecordsCount << + ";"; } - TBaseGranuleDataClassSummary operator+(const TBaseGranuleDataClassSummary& item) const { - TBaseGranuleDataClassSummary result; - result.PortionsSize = PortionsSize + item.PortionsSize; - result.PortionsCount = PortionsCount + item.PortionsCount; - result.RecordsCount = RecordsCount + item.RecordsCount; - return result; - } + TBaseGranuleDataClassSummary operator+(const TBaseGranuleDataClassSummary& item) const; }; class TDataClassCounters { @@ -53,7 +62,7 @@ class TDataClassCounters { } void OnPortionsInfo(const TBaseGranuleDataClassSummary& dataInfo) const { - PortionsSize->SetValue(dataInfo.GetPortionsSize()); + PortionsSize->SetValue(dataInfo.GetTotalPortionsSize()); PortionsCount->SetValue(dataInfo.GetPortionsCount()); } }; @@ -113,143 +122,45 @@ class TAgentGranuleDataCounters { } }; -class TIncrementalHistogram: public TCommonCountersOwner { -private: - using TBase = TCommonCountersOwner; - std::map<i64, NMonitoring::TDynamicCounters::TCounterPtr> Counters; - NMonitoring::TDynamicCounters::TCounterPtr PlusInf; - - NMonitoring::TDynamicCounters::TCounterPtr GetQuantile(const i64 value) const { - auto it = Counters.lower_bound(value); - if (it == Counters.end()) { - return PlusInf; - } else { - return it->second; - } - } -public: - - class TGuard { - private: - class TLineGuard { - private: - NMonitoring::TDynamicCounters::TCounterPtr Counter; - i64 Value = 0; - public: - TLineGuard(NMonitoring::TDynamicCounters::TCounterPtr counter) - : Counter(counter) - { - - } - - ~TLineGuard() { - Sub(Value); - } - - void Add(const i64 value) { - Counter->Add(value); - Value += value; - } - - void Sub(const i64 value) { - Counter->Sub(value); - Value -= value; - Y_ABORT_UNLESS(Value >= 0); - } - }; - - std::map<i64, TLineGuard> Counters; - TLineGuard PlusInf; - - TLineGuard& GetLineGuard(const i64 value) { - auto it = Counters.lower_bound(value); - if (it == Counters.end()) { - return PlusInf; - } else { - return it->second; - } - } - public: - TGuard(const TIncrementalHistogram& owner) - : PlusInf(owner.PlusInf) - { - for (auto&& i : owner.Counters) { - Counters.emplace(i.first, TLineGuard(i.second)); - } - } - void Add(const i64 value, const i64 count) { - GetLineGuard(value).Add(count); - } - - void Sub(const i64 value, const i64 count) { - GetLineGuard(value).Sub(count); - } - }; - - std::shared_ptr<TGuard> BuildGuard() const { - return std::make_shared<TGuard>(*this); - } - - TIncrementalHistogram(const TString& moduleId, const TString& metricId, const TString& category, const std::set<i64>& values) - : TBase(moduleId) { - DeepSubGroup("metric", metricId); - if (category) { - DeepSubGroup("category", category); - } - std::optional<TString> predName; - for (auto&& i : values) { - if (!predName) { - Counters.emplace(i, TBase::GetValue("(-Inf," + ::ToString(i) + "]")); - } else { - Counters.emplace(i, TBase::GetValue("(" + *predName + "," + ::ToString(i) + "]")); - } - predName = ::ToString(i); - } - Y_ABORT_UNLESS(predName); - PlusInf = TBase::GetValue("(" + *predName + ",+Inf)"); - } - - TIncrementalHistogram(const TString& moduleId, const TString& metricId, const TString& category, const std::map<i64, TString>& values) - : TBase(moduleId) - { - DeepSubGroup("metric", metricId); - if (category) { - DeepSubGroup("category", category); - } - std::optional<TString> predName; - for (auto&& i : values) { - if (!predName) { - Counters.emplace(i.first, TBase::GetValue("(-Inf," + i.second + "]")); - } else { - Counters.emplace(i.first, TBase::GetValue("(" + *predName + "," + i.second + "]")); - } - predName = i.second; - } - Y_ABORT_UNLESS(predName); - PlusInf = TBase::GetValue("(" + *predName + ",+Inf)"); - } - -}; - class TEngineLogsCounters: public TCommonCountersOwner { private: using TBase = TCommonCountersOwner; NMonitoring::TDynamicCounters::TCounterPtr PortionToDropCount; NMonitoring::TDynamicCounters::TCounterPtr PortionToDropBytes; + NMonitoring::THistogramPtr PortionToDropLag; + NMonitoring::THistogramPtr SkipDeleteWithProcessMemory; + NMonitoring::THistogramPtr SkipDeleteWithTxLimit; NMonitoring::TDynamicCounters::TCounterPtr PortionToEvictCount; NMonitoring::TDynamicCounters::TCounterPtr PortionToEvictBytes; + NMonitoring::THistogramPtr PortionToEvictLag; + NMonitoring::THistogramPtr SkipEvictionWithProcessMemory; + NMonitoring::THistogramPtr SkipEvictionWithTxLimit; + + NMonitoring::THistogramPtr ActualizationTaskSizeRemove; + NMonitoring::THistogramPtr ActualizationTaskSizeEvict; + + NMonitoring::TDynamicCounters::TCounterPtr ActualizationSkipRWProgressCount; + NMonitoring::THistogramPtr ActualizationSkipTooFreshPortion; NMonitoring::TDynamicCounters::TCounterPtr PortionNoTtlColumnCount; NMonitoring::TDynamicCounters::TCounterPtr PortionNoTtlColumnBytes; + NMonitoring::TDynamicCounters::TCounterPtr StatUsageForTTLCount; + NMonitoring::TDynamicCounters::TCounterPtr ChunkUsageForTTLCount; + NMonitoring::TDynamicCounters::TCounterPtr PortionNoBorderCount; NMonitoring::TDynamicCounters::TCounterPtr PortionNoBorderBytes; + NMonitoring::TDynamicCounters::TCounterPtr GranuleOptimizerLocked; + + NMonitoring::TDynamicCounters::TCounterPtr IndexMetadataUsageBytes; + TAgentGranuleDataCounters GranuleDataAgent; std::vector<std::shared_ptr<TIncrementalHistogram>> BlobSizeDistribution; std::vector<std::shared_ptr<TIncrementalHistogram>> PortionSizeDistribution; std::vector<std::shared_ptr<TIncrementalHistogram>> PortionRecordsDistribution; + public: class TPortionsInfoGuard { @@ -279,6 +190,8 @@ class TEngineLogsCounters: public TCommonCountersOwner { }; + void OnActualizationTask(const ui32 evictCount, const ui32 removeCount) const; + TPortionsInfoGuard BuildPortionBlobsGuard() const { return TPortionsInfoGuard(BlobSizeDistribution, PortionSizeDistribution, PortionRecordsDistribution); } @@ -287,14 +200,40 @@ class TEngineLogsCounters: public TCommonCountersOwner { return GranuleDataAgent.RegisterClient(); } - void OnPortionToEvict(const ui64 size) const { + void OnActualizationSkipRWProgress() const { + ActualizationSkipRWProgressCount->Add(1); + } + + void OnActualizationSkipTooFreshPortion(const TDuration dWait) const { + ActualizationSkipTooFreshPortion->Collect(dWait.Seconds()); + } + + void OnSkipDeleteWithProcessMemory(const TDuration lag) const { + SkipDeleteWithProcessMemory->Collect(lag.Seconds()); + } + + void OnSkipDeleteWithTxLimit(const TDuration lag) const { + SkipDeleteWithTxLimit->Collect(lag.Seconds()); + } + + void OnSkipEvictionWithProcessMemory(const TDuration lag) const { + SkipEvictionWithProcessMemory->Collect(lag.Seconds()); + } + + void OnSkipEvictionWithTxLimit(const TDuration lag) const { + SkipEvictionWithTxLimit->Collect(lag.Seconds()); + } + + void OnPortionToEvict(const ui64 size, const TDuration lag) const { PortionToEvictCount->Add(1); PortionToEvictBytes->Add(size); + PortionToEvictLag->Collect(lag.Seconds()); } - void OnPortionToDrop(const ui64 size) const { + void OnPortionToDrop(const ui64 size, const TDuration lag) const { PortionToDropCount->Add(1); PortionToDropBytes->Add(size); + PortionToDropLag->Collect(lag.Seconds()); } void OnPortionNoTtlColumn(const ui64 size) const { @@ -302,11 +241,27 @@ class TEngineLogsCounters: public TCommonCountersOwner { PortionNoTtlColumnBytes->Add(size); } + void OnChunkUsageForTTL() const { + ChunkUsageForTTLCount->Add(1); + } + + void OnStatUsageForTTL() const { + StatUsageForTTLCount->Add(1); + } + void OnPortionNoBorder(const ui64 size) const { PortionNoBorderCount->Add(1); PortionNoBorderBytes->Add(size); } + void OnIndexMetadataUsageBytes(const ui64 size) const { + IndexMetadataUsageBytes->Set(size); + } + + void OnGranuleOptimizerLocked() const { + GranuleOptimizerLocked->Add(1); + } + TEngineLogsCounters(); }; diff --git a/ydb/core/tx/columnshard/counters/indexation.cpp b/ydb/core/tx/columnshard/counters/indexation.cpp index cbe62ae08259..d8ee87920d23 100644 --- a/ydb/core/tx/columnshard/counters/indexation.cpp +++ b/ydb/core/tx/columnshard/counters/indexation.cpp @@ -8,6 +8,7 @@ TIndexationCounters::TIndexationCounters(const TString& module) : TBase(module) { ReadBytes = TBase::GetDeriviative("Read/Bytes"); + ReadErrors = TBase::GetDeriviative("Read/Errors/Count"); AnalizeInsertedPortions = TBase::GetDeriviative("AnalizeInsertion/Portions"); AnalizeInsertedBytes = TBase::GetDeriviative("AnalizeInsertion/Bytes"); RepackedInsertedPortions = TBase::GetDeriviative("RepackedInsertion/Portions"); diff --git a/ydb/core/tx/columnshard/counters/indexation.h b/ydb/core/tx/columnshard/counters/indexation.h index 4b926d260910..fdbbc659492b 100644 --- a/ydb/core/tx/columnshard/counters/indexation.h +++ b/ydb/core/tx/columnshard/counters/indexation.h @@ -13,6 +13,7 @@ class TIndexationCounters: public TCommonCountersOwner { public: NMonitoring::TDynamicCounters::TCounterPtr CompactionInputBytes; + NMonitoring::TDynamicCounters::TCounterPtr ReadErrors; NMonitoring::TDynamicCounters::TCounterPtr ReadBytes; NMonitoring::TDynamicCounters::TCounterPtr AnalizeCompactedPortions; NMonitoring::TDynamicCounters::TCounterPtr AnalizeInsertedPortions; diff --git a/ydb/core/tx/columnshard/counters/scan.cpp b/ydb/core/tx/columnshard/counters/scan.cpp index bf279913648e..075aa0e880ec 100644 --- a/ydb/core/tx/columnshard/counters/scan.cpp +++ b/ydb/core/tx/columnshard/counters/scan.cpp @@ -16,8 +16,6 @@ TScanCounters::TScanCounters(const TString& module) , NoResultsAckRequest(TBase::GetDeriviative("NoResultsAckRequest")) , AckWaitingDuration(TBase::GetDeriviative("AckWaitingDuration")) - , ScanDuration(TBase::GetDeriviative("ScanDuration")) - , NoScanRecords(TBase::GetDeriviative("NoScanRecords")) , NoScanIntervals(TBase::GetDeriviative("NoScanIntervals")) , LinearScanRecords(TBase::GetDeriviative("LinearScanRecords")) @@ -61,8 +59,44 @@ TScanCounters::TScanCounters(const TString& module) , BlobsReceivedCount(TBase::GetDeriviative("BlobsReceivedCount")) , BlobsReceivedBytes(TBase::GetDeriviative("BlobsReceivedBytes")) { + HistogramIntervalMemoryRequiredOnFail = TBase::GetHistogram("IntervalMemory/RequiredOnFail/Gb", NMonitoring::LinearHistogram(10, 1, 1)); + HistogramIntervalMemoryReduceSize = TBase::GetHistogram("IntervalMemory/Reduce/Gb", NMonitoring::ExponentialHistogram(8, 2, 1)); + HistogramIntervalMemoryRequiredAfterReduce = TBase::GetHistogram("IntervalMemory/RequiredAfterReduce/Mb", NMonitoring::ExponentialHistogram(10, 2, 64)); +/* + { + const std::map<i64, TString> borders = {{0, "0"}, {512LLU * 1024 * 1024, "0.5Gb"}, {1LLU * 1024 * 1024 * 1024, "1Gb"}, + {2LLU * 1024 * 1024 * 1024, "2Gb"}, {3LLU * 1024 * 1024 * 1024, "3Gb"}, + {4LLU * 1024 * 1024 * 1024, "4Gb"}, {5LLU * 1024 * 1024 * 1024, "5Gb"}, + {6LLU * 1024 * 1024 * 1024, "6Gb"}, {7LLU * 1024 * 1024 * 1024, "7Gb"}, {8LLU * 1024 * 1024 * 1024, "8Gb"}}; + HistogramIntervalMemoryRequiredOnFail = std::make_shared<TDeriviativeHistogram>(module, "IntervalMemory/RequiredOnFail/Bytes", "", borders); + } + { + const std::map<i64, TString> borders = {{0, "0"}, {512LLU * 1024 * 1024, "0.5Gb"}, {1LLU * 1024 * 1024 * 1024, "1Gb"}, + {2LLU * 1024 * 1024 * 1024, "2Gb"}, + {4LLU * 1024 * 1024 * 1024, "4Gb"}, + {8LLU * 1024 * 1024 * 1024, "8Gb"}, {16LLU * 1024 * 1024 * 1024, "16Gb"}, {32LLU * 1024 * 1024 * 1024, "32Gb"}}; + HistogramIntervalMemoryReduceSize = std::make_shared<TDeriviativeHistogram>(module, "IntervalMemory/Reduce/Bytes", "", borders); + } + { + const std::map<i64, TString> borders = {{0, "0"}, {64LLU * 1024 * 1024, "64Mb"}, + {128LLU * 1024 * 1024, "128Mb"}, {256LLU * 1024 * 1024, "256Mb"}, {512LLU * 1024 * 1024, "512Mb"}, + {1024LLU * 1024 * 1024, "1024Mb"}, {2LLU * 1024 * 1024 * 1024, "2Gb"}, {3LLU * 1024 * 1024 * 1024, "3Gb"} + }; + HistogramIntervalMemoryRequiredAfterReduce = std::make_shared<TDeriviativeHistogram>(module, "IntervalMemory/RequiredAfterReduce/Bytes", "", borders); + } +*/ + ScanIntervalState = std::make_shared<TScanIntervalState>(*this); ResourcesSubscriberCounters = std::make_shared<NOlap::NResourceBroker::NSubscribe::TSubscriberCounters>(); - + ScanDurationByStatus.resize((ui32)EStatusFinish::COUNT); + ui32 idx = 0; + for (auto&& i : GetEnumAllValues<EStatusFinish>()) { + if (i == EStatusFinish::COUNT) { + continue; + } + ScanDurationByStatus[(ui32)i] = TBase::GetHistogram("ScanDuration/" + ::ToString(i) + "/Milliseconds", NMonitoring::ExponentialHistogram(18, 2, 1)); + AFL_VERIFY(idx == (ui32)i); + ++idx; + } } NKikimr::NColumnShard::TScanAggregations TScanCounters::BuildAggregations() { diff --git a/ydb/core/tx/columnshard/counters/scan.h b/ydb/core/tx/columnshard/counters/scan.h index fd08804b10f6..d9bbd6b898ce 100644 --- a/ydb/core/tx/columnshard/counters/scan.h +++ b/ydb/core/tx/columnshard/counters/scan.h @@ -1,5 +1,6 @@ #pragma once #include "common/owner.h" +#include "common/histogram.h" #include <ydb/core/tx/columnshard/resources/memory.h> #include <ydb/core/tx/columnshard/resource_subscriber/counters.h> #include <library/cpp/monlib/dynamic_counters/counters.h> @@ -40,6 +41,77 @@ class TScanAggregations: public TCommonCountersOwner { }; class TScanCounters: public TCommonCountersOwner { +public: + enum class EIntervalStatus { + Undefined = 0, + WaitResources, + WaitSources, + WaitMergerStart, + WaitMergerContinue, + WaitPartialReply, + + COUNT + }; + + enum class EStatusFinish { + Success /* "Success" */ = 0, + ConveyorInternalError /* "ConveyorInternalError" */, + ExternalAbort /* "ExternalAbort" */, + IteratorInternalErrorScan /* "IteratorInternalErrorScan" */, + IteratorInternalErrorResult /* "IteratorInternalErrorResult" */, + Deadline /* "Deadline" */, + UndeliveredEvent /* "UndeliveredEvent" */, + CannotAddInFlight /* "CannotAddInFlight" */, + ProblemOnStart /*ProblemOnStart*/, + + COUNT + }; + + class TScanIntervalState { + private: + std::vector<NMonitoring::TDynamicCounters::TCounterPtr> ValuesByStatus; + public: + TScanIntervalState(const TScanCounters& counters) { + ValuesByStatus.resize((ui32)EIntervalStatus::COUNT); + for (auto&& i : GetEnumAllValues<EIntervalStatus>()) { + if (i == EIntervalStatus::COUNT) { + continue; + } + ValuesByStatus[(ui32)i] = counters.CreateSubGroup("status", ::ToString(i)).GetValue("Intervals/Count"); + } + } + void Add(const EIntervalStatus status) const { + AFL_VERIFY((ui32)status < ValuesByStatus.size()); + ValuesByStatus[(ui32)status]->Add(1); + } + void Remove(const EIntervalStatus status) const { + AFL_VERIFY((ui32)status < ValuesByStatus.size()); + ValuesByStatus[(ui32)status]->Sub(1); + } + }; + + class TScanIntervalStateGuard { + private: + EIntervalStatus Status = EIntervalStatus::Undefined; + const std::shared_ptr<TScanIntervalState> BaseCounters; + public: + TScanIntervalStateGuard(const std::shared_ptr<TScanIntervalState>& baseCounters) + : BaseCounters(baseCounters) + { + BaseCounters->Add(Status); + } + + ~TScanIntervalStateGuard() { + BaseCounters->Remove(Status); + } + + void SetStatus(const EIntervalStatus status) { + BaseCounters->Remove(Status); + Status = status; + BaseCounters->Add(Status); + } + }; + private: using TBase = TCommonCountersOwner; NMonitoring::TDynamicCounters::TCounterPtr ProcessingOverload; @@ -54,7 +126,7 @@ class TScanCounters: public TCommonCountersOwner { NMonitoring::TDynamicCounters::TCounterPtr NoResultsAckRequest; NMonitoring::TDynamicCounters::TCounterPtr AckWaitingDuration; - NMonitoring::TDynamicCounters::TCounterPtr ScanDuration; + std::vector<NMonitoring::THistogramPtr> ScanDurationByStatus; NMonitoring::TDynamicCounters::TCounterPtr NoScanRecords; NMonitoring::TDynamicCounters::TCounterPtr NoScanIntervals; @@ -62,11 +134,18 @@ class TScanCounters: public TCommonCountersOwner { NMonitoring::TDynamicCounters::TCounterPtr LinearScanIntervals; NMonitoring::TDynamicCounters::TCounterPtr LogScanRecords; NMonitoring::TDynamicCounters::TCounterPtr LogScanIntervals; + std::shared_ptr<TScanIntervalState> ScanIntervalState; + NMonitoring::THistogramPtr HistogramIntervalMemoryRequiredOnFail; + NMonitoring::THistogramPtr HistogramIntervalMemoryReduceSize; + NMonitoring::THistogramPtr HistogramIntervalMemoryRequiredAfterReduce; public: - std::shared_ptr<NOlap::NResourceBroker::NSubscribe::TSubscriberCounters> ResourcesSubscriberCounters; + TScanIntervalStateGuard CreateIntervalStateGuard() const { + return TScanIntervalStateGuard(ScanIntervalState); + } + std::shared_ptr<NOlap::NResourceBroker::NSubscribe::TSubscriberCounters> ResourcesSubscriberCounters; NMonitoring::TDynamicCounters::TCounterPtr PortionBytes; NMonitoring::TDynamicCounters::TCounterPtr FilterBytes; @@ -106,6 +185,18 @@ class TScanCounters: public TCommonCountersOwner { TScanCounters(const TString& module = "Scan"); + void OnOptimizedIntervalMemoryFailed(const ui64 memoryRequired) const { + HistogramIntervalMemoryRequiredOnFail->Collect(memoryRequired / (1024.0 * 1024.0 * 1024.0)); + } + + void OnOptimizedIntervalMemoryReduced(const ui64 memoryReduceVolume) const { + HistogramIntervalMemoryReduceSize->Collect(memoryReduceVolume / (1024.0 * 1024.0 * 1024.0)); + } + + void OnOptimizedIntervalMemoryRequired(const ui64 memoryRequired) const { + HistogramIntervalMemoryRequiredAfterReduce->Collect(memoryRequired / (1024.0 * 1024.0)); + } + void OnNoScanInterval(const ui32 recordsCount) const { NoScanRecords->Add(recordsCount); NoScanIntervals->Add(1); @@ -121,8 +212,9 @@ class TScanCounters: public TCommonCountersOwner { LogScanIntervals->Add(1); } - void OnScanDuration(const TDuration d) const { - ScanDuration->Add(d.MicroSeconds()); + void OnScanDuration(const EStatusFinish status, const TDuration d) const { + AFL_VERIFY((ui32)status < ScanDurationByStatus.size()); + ScanDurationByStatus[(ui32)status]->Collect(d.MilliSeconds()); } void AckWaitingInfo(const TDuration d) const { diff --git a/ydb/core/tx/columnshard/counters/ya.make b/ydb/core/tx/columnshard/counters/ya.make index 5a0dbc7c3256..65797cb34752 100644 --- a/ydb/core/tx/columnshard/counters/ya.make +++ b/ydb/core/tx/columnshard/counters/ya.make @@ -18,5 +18,6 @@ PEERDIR( ) GENERATE_ENUM_SERIALIZATION(columnshard.h) +GENERATE_ENUM_SERIALIZATION(scan.h) END() diff --git a/ydb/core/tx/columnshard/data_locks/locks/abstract.cpp b/ydb/core/tx/columnshard/data_locks/locks/abstract.cpp new file mode 100644 index 000000000000..d5c44aa83685 --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/locks/abstract.cpp @@ -0,0 +1,5 @@ +#include "abstract.h" + +namespace NKikimr::NOlap::NDataLocks { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_locks/locks/abstract.h b/ydb/core/tx/columnshard/data_locks/locks/abstract.h new file mode 100644 index 000000000000..2e301d62a512 --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/locks/abstract.h @@ -0,0 +1,52 @@ +#pragma once +#include <ydb/library/accessor/accessor.h> + +#include <util/generic/string.h> + +#include <optional> +#include <memory> +#include <vector> + +namespace NKikimr::NOlap { +class TPortionInfo; +class TGranuleMeta; +} + +namespace NKikimr::NOlap::NDataLocks { + +class ILock { +private: + YDB_READONLY_DEF(TString, LockName); + YDB_READONLY_FLAG(ReadOnly, false); +protected: + virtual std::optional<TString> DoIsLocked(const TPortionInfo& portion) const = 0; + virtual std::optional<TString> DoIsLocked(const TGranuleMeta& granule) const = 0; + virtual bool DoIsEmpty() const = 0; +public: + ILock(const TString& lockName, const bool isReadOnly = false) + : LockName(lockName) + , ReadOnlyFlag(isReadOnly) + { + + } + + virtual ~ILock() = default; + + std::optional<TString> IsLocked(const TPortionInfo& portion, const bool readOnly = false) const { + if (IsReadOnly() && readOnly) { + return {}; + } + return DoIsLocked(portion); + } + std::optional<TString> IsLocked(const TGranuleMeta& g, const bool readOnly = false) const { + if (IsReadOnly() && readOnly) { + return {}; + } + return DoIsLocked(g); + } + bool IsEmpty() const { + return DoIsEmpty(); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_locks/locks/composite.cpp b/ydb/core/tx/columnshard/data_locks/locks/composite.cpp new file mode 100644 index 000000000000..0663ff68fb20 --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/locks/composite.cpp @@ -0,0 +1,5 @@ +#include "composite.h" + +namespace NKikimr::NOlap::NDataLocks { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_locks/locks/composite.h b/ydb/core/tx/columnshard/data_locks/locks/composite.h new file mode 100644 index 000000000000..fd23ee15f85e --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/locks/composite.h @@ -0,0 +1,54 @@ +#pragma once +#include "abstract.h" + +namespace NKikimr::NOlap::NDataLocks { + +class TCompositeLock: public ILock { +private: + using TBase = ILock; + std::vector<std::shared_ptr<ILock>> Locks; +protected: + virtual std::optional<TString> DoIsLocked(const TPortionInfo& portion) const override { + for (auto&& i : Locks) { + if (auto lockName = i->IsLocked(portion)) { + return lockName; + } + } + return {}; + } + virtual std::optional<TString> DoIsLocked(const TGranuleMeta& granule) const override { + for (auto&& i : Locks) { + if (auto lockName = i->IsLocked(granule)) { + return lockName; + } + } + return {}; + } + bool DoIsEmpty() const override { + return Locks.empty(); + } +public: + TCompositeLock(const TString& lockName, const std::vector<std::shared_ptr<ILock>>& locks, const bool readOnly = false) + : TBase(lockName, readOnly) + { + for (auto&& l : locks) { + if (!l || l->IsEmpty()) { + continue; + } + Locks.emplace_back(l); + } + } + + TCompositeLock(const TString& lockName, std::initializer_list<std::shared_ptr<ILock>> locks, const bool readOnly = false) + : TBase(lockName, readOnly) + { + for (auto&& l : locks) { + if (!l || l->IsEmpty()) { + continue; + } + Locks.emplace_back(l); + } + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_locks/locks/list.cpp b/ydb/core/tx/columnshard/data_locks/locks/list.cpp new file mode 100644 index 000000000000..c0dbcb9ac327 --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/locks/list.cpp @@ -0,0 +1,5 @@ +#include "list.h" + +namespace NKikimr::NOlap::NDataLocks { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_locks/locks/list.h b/ydb/core/tx/columnshard/data_locks/locks/list.h new file mode 100644 index 000000000000..e74251e30b42 --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/locks/list.h @@ -0,0 +1,96 @@ +#pragma once +#include "abstract.h" +#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> +#include <ydb/core/tx/columnshard/engines/storage/granule.h> + +namespace NKikimr::NOlap::NDataLocks { + +class TListPortionsLock: public ILock { +private: + using TBase = ILock; + THashSet<TPortionAddress> Portions; + THashSet<ui64> Granules; +protected: + virtual std::optional<TString> DoIsLocked(const TPortionInfo& portion) const override { + if (Portions.contains(portion.GetAddress())) { + return GetLockName(); + } + return {}; + } + virtual std::optional<TString> DoIsLocked(const TGranuleMeta& granule) const override { + if (Granules.contains(granule.GetPathId())) { + return GetLockName(); + } + return {}; + } + bool DoIsEmpty() const override { + return Portions.empty(); + } +public: + TListPortionsLock(const TString& lockName, const std::vector<std::shared_ptr<TPortionInfo>>& portions, const bool readOnly = false) + : TBase(lockName, readOnly) + { + for (auto&& p : portions) { + Portions.emplace(p->GetAddress()); + Granules.emplace(p->GetPathId()); + } + } + + TListPortionsLock(const TString& lockName, const std::vector<TPortionInfo>& portions, const bool readOnly = false) + : TBase(lockName, readOnly) { + for (auto&& p : portions) { + Portions.emplace(p.GetAddress()); + Granules.emplace(p.GetPathId()); + } + } + + template <class T, class TGetter> + TListPortionsLock(const TString& lockName, const std::vector<T>& portions, const TGetter& g, const bool readOnly = false) + : TBase(lockName, readOnly) { + for (auto&& p : portions) { + const auto address = g(p); + Portions.emplace(address); + Granules.emplace(address.GetPathId()); + } + } + + template <class T> + TListPortionsLock(const TString& lockName, const THashMap<TPortionAddress, T>& portions, const bool readOnly = false) + : TBase(lockName, readOnly) { + for (auto&& p : portions) { + const auto address = p.first; + Portions.emplace(address); + Granules.emplace(address.GetPathId()); + } + } +}; + +class TListTablesLock: public ILock { +private: + using TBase = ILock; + THashSet<ui64> Tables; +protected: + virtual std::optional<TString> DoIsLocked(const TPortionInfo& portion) const override { + if (Tables.contains(portion.GetPathId())) { + return GetLockName(); + } + return {}; + } + virtual std::optional<TString> DoIsLocked(const TGranuleMeta& granule) const override { + if (Tables.contains(granule.GetPathId())) { + return GetLockName(); + } + return {}; + } + bool DoIsEmpty() const override { + return Tables.empty(); + } +public: + TListTablesLock(const TString& lockName, const THashSet<ui64>& tables, const bool readOnly = false) + : TBase(lockName, readOnly) + , Tables(tables) + { + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_locks/locks/snapshot.cpp b/ydb/core/tx/columnshard/data_locks/locks/snapshot.cpp new file mode 100644 index 000000000000..f2d702268364 --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/locks/snapshot.cpp @@ -0,0 +1,5 @@ +#include "snapshot.h" + +namespace NKikimr::NOlap::NDataLocks { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_locks/locks/snapshot.h b/ydb/core/tx/columnshard/data_locks/locks/snapshot.h new file mode 100644 index 000000000000..c1f6e10b06e7 --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/locks/snapshot.h @@ -0,0 +1,36 @@ +#pragma once +#include "abstract.h" +#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> +#include <ydb/core/tx/columnshard/engines/storage/granule.h> + +namespace NKikimr::NOlap::NDataLocks { + +class TSnapshotLock: public ILock { +private: + using TBase = ILock; + const TSnapshot SnapshotBarrier; + const THashSet<TTabletId> PathIds; +protected: + virtual std::optional<TString> DoIsLocked(const TPortionInfo& portion) const override { + if (PathIds.contains((TTabletId)portion.GetPathId()) && portion.RecordSnapshotMin() <= SnapshotBarrier) { + return GetLockName(); + } + return {}; + } + virtual std::optional<TString> DoIsLocked(const TGranuleMeta& granule) const override { + if (PathIds.contains((TTabletId)granule.GetPathId())) { + return GetLockName(); + } + return {}; + } +public: + TSnapshotLock(const TString& lockName, const TSnapshot& snapshotBarrier, const THashSet<TTabletId>& pathIds, const bool readOnly = false) + : TBase(lockName, readOnly) + , SnapshotBarrier(snapshotBarrier) + , PathIds(pathIds) + { + + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_locks/locks/ya.make b/ydb/core/tx/columnshard/data_locks/locks/ya.make new file mode 100644 index 000000000000..debee52e8724 --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/locks/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + abstract.cpp + list.cpp + snapshot.cpp + composite.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/storage +) + +END() diff --git a/ydb/core/tx/columnshard/data_locks/manager/manager.cpp b/ydb/core/tx/columnshard/data_locks/manager/manager.cpp new file mode 100644 index 000000000000..d97912d594f3 --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/manager/manager.cpp @@ -0,0 +1,48 @@ +#include "manager.h" +#include <ydb/library/actors/core/log.h> + +namespace NKikimr::NOlap::NDataLocks { + +std::shared_ptr<TManager::TGuard> TManager::RegisterLock(const std::shared_ptr<ILock>& lock) { + AFL_VERIFY(lock); + AFL_VERIFY(ProcessLocks.emplace(lock->GetLockName(), lock).second)("process_id", lock->GetLockName()); + return std::make_shared<TGuard>(lock->GetLockName(), StopFlag); +} + +void TManager::UnregisterLock(const TString& processId) { + AFL_VERIFY(ProcessLocks.erase(processId))("process_id", processId); +} + +std::optional<TString> TManager::IsLocked(const TPortionInfo& portion) const { + for (auto&& i : ProcessLocks) { + if (auto lockName = i.second->IsLocked(portion)) { + return lockName; + } + } + return {}; +} + +std::optional<TString> TManager::IsLocked(const TGranuleMeta& granule) const { + for (auto&& i : ProcessLocks) { + if (auto lockName = i.second->IsLocked(granule)) { + return lockName; + } + } + return {}; +} + +void TManager::Stop() { + AFL_VERIFY(StopFlag->Inc() == 1); +} + +TManager::TGuard::~TGuard() { + AFL_VERIFY(Released || !NActors::TlsActivationContext || StopFlag->Val() == 1); +} + +void TManager::TGuard::Release(TManager& manager) { + AFL_VERIFY(!Released); + manager.UnregisterLock(ProcessId); + Released = true; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_locks/manager/manager.h b/ydb/core/tx/columnshard/data_locks/manager/manager.h new file mode 100644 index 000000000000..9075397d67ec --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/manager/manager.h @@ -0,0 +1,46 @@ +#pragma once +#include <ydb/core/tx/columnshard/data_locks/locks/abstract.h> +#include <util/generic/hash.h> +#include <util/generic/string.h> +#include <optional> + +namespace NKikimr::NOlap::NDataLocks { + +class TManager { +private: + THashMap<TString, std::shared_ptr<ILock>> ProcessLocks; + std::shared_ptr<TAtomicCounter> StopFlag = std::make_shared<TAtomicCounter>(0); + void UnregisterLock(const TString& processId); +public: + TManager() = default; + + void Stop(); + + class TGuard { + private: + const TString ProcessId; + std::shared_ptr<TAtomicCounter> StopFlag; + bool Released = false; + public: + TGuard(const TString& processId, const std::shared_ptr<TAtomicCounter>& stopFlag) + : ProcessId(processId) + , StopFlag(stopFlag) + { + + } + ~TGuard(); + + void Release(TManager& manager); + }; + + [[nodiscard]] std::shared_ptr<TGuard> RegisterLock(const std::shared_ptr<ILock>& lock); + template <class TLock, class ...Args> + [[nodiscard]] std::shared_ptr<TGuard> RegisterLock(Args&&... args) { + return RegisterLock(std::make_shared<TLock>(args...)); + } + std::optional<TString> IsLocked(const TPortionInfo& portion) const; + std::optional<TString> IsLocked(const TGranuleMeta& granule) const; + +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_locks/manager/ya.make b/ydb/core/tx/columnshard/data_locks/manager/ya.make new file mode 100644 index 000000000000..4a5d8b2437f3 --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/manager/ya.make @@ -0,0 +1,11 @@ +LIBRARY() + +SRCS( + manager.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/data_locks/locks +) + +END() diff --git a/ydb/core/tx/columnshard/data_locks/ya.make b/ydb/core/tx/columnshard/data_locks/ya.make new file mode 100644 index 000000000000..9212eb1c9582 --- /dev/null +++ b/ydb/core/tx/columnshard/data_locks/ya.make @@ -0,0 +1,8 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/data_locks/manager + ydb/core/tx/columnshard/data_locks/locks +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/common/context/context.cpp b/ydb/core/tx/columnshard/data_sharing/common/context/context.cpp new file mode 100644 index 000000000000..64f32b59b920 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/common/context/context.cpp @@ -0,0 +1,62 @@ +#include "context.h" +#include <ydb/library/actors/core/log.h> + +namespace NKikimr::NOlap::NDataSharing { + +NKikimrColumnShardDataSharingProto::TTransferContext TTransferContext::SerializeToProto() const { + NKikimrColumnShardDataSharingProto::TTransferContext result; + result.SetDestinationTabletId((ui64)DestinationTabletId); + for (auto&& i : SourceTabletIds) { + result.AddSourceTabletIds((ui64)i); + } + SnapshotBarrier.SerializeToProto(*result.MutableSnapshotBarrier()); + result.SetMoving(Moving); + return result; +} + +NKikimr::TConclusionStatus TTransferContext::DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TTransferContext& proto) { + DestinationTabletId = (TTabletId)proto.GetDestinationTabletId(); + if (!(ui64)DestinationTabletId) { + return TConclusionStatus::Fail("incorrect DestinationTabletId in proto"); + } + for (auto&& i : proto.GetSourceTabletIds()) { + AFL_VERIFY(SourceTabletIds.emplace((TTabletId)i).second); + } + Moving = proto.GetMoving(); + { + if (!proto.HasSnapshotBarrier()) { + return TConclusionStatus::Fail("SnapshotBarrier not initialized in proto."); + } + auto snapshotParse = SnapshotBarrier.DeserializeFromProto(proto.GetSnapshotBarrier()); + if (!snapshotParse) { + return snapshotParse; + } + if (!SnapshotBarrier.Valid()) { + return TConclusionStatus::Fail("SnapshotBarrier must be valid in proto."); + } + } + return TConclusionStatus::Success(); +} + +bool TTransferContext::IsEqualTo(const TTransferContext& context) const { + return + DestinationTabletId == context.DestinationTabletId && + SourceTabletIds == context.SourceTabletIds && + Moving == context.Moving && + SnapshotBarrier == context.SnapshotBarrier; +} + +TString TTransferContext::DebugString() const { + return TStringBuilder() << "{from=" << (ui64)DestinationTabletId << ";moving=" << Moving << ";snapshot=" << SnapshotBarrier.DebugString() << "}"; +} + +TTransferContext::TTransferContext(const TTabletId destination, const THashSet<TTabletId>& sources, const TSnapshot& snapshotBarrier, const bool moving) + : DestinationTabletId(destination) + , SourceTabletIds(sources) + , Moving(moving) + , SnapshotBarrier(snapshotBarrier) +{ + AFL_VERIFY(!sources.contains(destination)); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/common/context/context.h b/ydb/core/tx/columnshard/data_sharing/common/context/context.h new file mode 100644 index 000000000000..b124bc7a07ea --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/common/context/context.h @@ -0,0 +1,29 @@ +#pragma once +#include <ydb/core/tx/columnshard/common/tablet_id.h> +#include <ydb/core/tx/columnshard/common/snapshot.h> +#include <ydb/core/tx/columnshard/data_sharing/protos/sessions.pb.h> + +#include <ydb/library/accessor/accessor.h> +#include <ydb/library/conclusion/status.h> + +#include <util/generic/hash_set.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TTransferContext { +private: + YDB_READONLY(TTabletId, DestinationTabletId, (TTabletId)0); + YDB_READONLY_DEF(THashSet<TTabletId>, SourceTabletIds); + YDB_READONLY(bool, Moving, false); + YDB_READONLY(TSnapshot, SnapshotBarrier, TSnapshot::Zero()); +public: + TTransferContext() = default; + bool IsEqualTo(const TTransferContext& context) const; + TString DebugString() const; + + TTransferContext(const TTabletId destination, const THashSet<TTabletId>& sources, const TSnapshot& snapshotBarrier, const bool moving); + NKikimrColumnShardDataSharingProto::TTransferContext SerializeToProto() const; + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TTransferContext& proto); +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/common/context/ya.make b/ydb/core/tx/columnshard/data_sharing/common/context/ya.make new file mode 100644 index 000000000000..c5f45338b5f6 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/common/context/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +SRCS( + context.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/protos + ydb/library/actors/core + ydb/library/conclusion +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/common/session/common.cpp b/ydb/core/tx/columnshard/data_sharing/common/session/common.cpp new file mode 100644 index 000000000000..bb22359d925a --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/common/session/common.cpp @@ -0,0 +1,66 @@ +#include "common.h" + +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/data_locks/locks/list.h> +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> + +#include <util/string/builder.h> + +namespace NKikimr::NOlap::NDataSharing { + +TString TCommonSession::DebugString() const { + return TStringBuilder() << "{id=" << SessionId << ";context=" << TransferContext.DebugString() << ";}"; +} + +bool TCommonSession::Start(const NColumnShard::TColumnShard& shard) { + const NActors::TLogContextGuard lGuard = NActors::TLogContextBuilder::Build()("info", Info); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("info", "Start"); + AFL_VERIFY(!IsStartingFlag); + IsStartingFlag = true; + AFL_VERIFY(!IsStartedFlag); + const auto& index = shard.GetIndexAs<TColumnEngineForLogs>(); + THashMap<ui64, std::vector<std::shared_ptr<TPortionInfo>>> portionsByPath; + std::vector<std::shared_ptr<TPortionInfo>> portionsLock; + THashMap<TString, THashSet<TUnifiedBlobId>> local; + for (auto&& i : GetPathIdsForStart()) { +// const auto insertTableSnapshot = shard.GetInsertTable().GetMinCommittedSnapshot(i); +// const auto shardSnapshot = shard.GetLastCompletedTx(); +// if (shard.GetInsertTable().GetMinCommittedSnapshot(i).value_or(shard.GetLastPlannedSnapshot()) <= GetSnapshotBarrier()) { +// AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("insert_table_snapshot", insertTableSnapshot)("last_completed_tx", shardSnapshot)("barrier", GetSnapshotBarrier()); +// IsStartingFlag = false; +// return false; +// } + auto& portionsVector = portionsByPath[i]; + const auto& g = index.GetGranuleVerified(i); + for (auto&& p : g.GetPortionsOlderThenSnapshot(GetSnapshotBarrier())) { + if (shard.GetDataLocksManager()->IsLocked(*p.second)) { + IsStartingFlag = false; + return false; + } + portionsVector.emplace_back(p.second); + portionsLock.emplace_back(p.second); + } + } + + IsStartedFlag = DoStart(shard, portionsByPath); + if (IsFinishedFlag) { + IsStartedFlag = false; + } + if (IsStartedFlag) { + AFL_VERIFY(!LockGuard); + LockGuard = shard.GetDataLocksManager()->RegisterLock<NDataLocks::TListPortionsLock>("sharing_session:" + GetSessionId(), portionsLock, true); + } + IsStartingFlag = false; + return IsStartedFlag; +} + +void TCommonSession::Finish(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) { + AFL_VERIFY(!IsFinishedFlag); + IsFinishedFlag = true; + if (IsStartedFlag) { + AFL_VERIFY(LockGuard); + LockGuard->Release(*dataLocksManager); + } +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/common/session/common.h b/ydb/core/tx/columnshard/data_sharing/common/session/common.h new file mode 100644 index 000000000000..c3070b5e7b8e --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/common/session/common.h @@ -0,0 +1,110 @@ +#pragma once +#include <ydb/core/tx/columnshard/common/snapshot.h> +#include <ydb/core/tx/columnshard/data_sharing/common/context/context.h> +#include <ydb/core/tx/columnshard/data_locks/manager/manager.h> +#include <ydb/core/tablet_flat/tablet_flat_executor.h> + +#include <ydb/library/accessor/accessor.h> +#include <ydb/library/conclusion/status.h> + +namespace NKikimr::NColumnShard { +class TColumnShard; +} + +namespace NKikimr::NOlap { +class TPortionInfo; +namespace NDataLocks { +class TManager; +} +} + +namespace NKikimr::NOlap::NDataSharing { + +class TCommonSession { +private: + static ui64 GetNextRuntimeId() { + static TAtomicCounter Counter = 0; + return (ui64)Counter.Inc(); + } + + YDB_READONLY_DEF(TString, SessionId); + const TString Info; + YDB_READONLY(ui64, RuntimeId, GetNextRuntimeId()); + std::shared_ptr<NDataLocks::TManager::TGuard> LockGuard; + bool IsStartedFlag = false; + bool IsStartingFlag = false; + bool IsFinishedFlag = false; +protected: + TTransferContext TransferContext; + virtual bool DoStart(const NColumnShard::TColumnShard& shard, const THashMap<ui64, std::vector<std::shared_ptr<TPortionInfo>>>& portions) = 0; + virtual THashSet<ui64> GetPathIdsForStart() const = 0; +public: + virtual ~TCommonSession() = default; + + TCommonSession(const TString& info) + : Info(info) + { + + } + + TCommonSession(const TString& sessionId, const TString& info, const TTransferContext& transferContext) + : SessionId(sessionId) + , Info(info) + , TransferContext(transferContext) { + } + + bool IsFinished() const { + return IsFinishedFlag; + } + + bool IsStarted() const { + return IsStartedFlag; + } + + bool IsStarting() const { + return IsStartingFlag; + } + + bool IsEqualTo(const TCommonSession& item) const { + return SessionId == item.SessionId && TransferContext.IsEqualTo(item.TransferContext); + } + + bool Start(const NColumnShard::TColumnShard& shard); + void Finish(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager); + + const TSnapshot& GetSnapshotBarrier() const { + return TransferContext.GetSnapshotBarrier(); + } + + TString DebugString() const; + + template <class TProto> + void SerializeToProto(TProto& proto) const { + AFL_VERIFY(SessionId); + *proto.MutableSessionId() = SessionId; + *proto.MutableTransferContext() = TransferContext.SerializeToProto(); + } + + template <class TProto> + TConclusionStatus DeserializeFromProto(const TProto& proto) { + { + SessionId = proto.GetSessionId(); + if (!SessionId) { + return TConclusionStatus::Fail("SessionId not initialized in proto."); + } + } + { + if (!proto.HasTransferContext()) { + return TConclusionStatus::Fail("TransferContext not initialized in proto."); + } + auto parsing = TransferContext.DeserializeFromProto(proto.GetTransferContext()); + if (!parsing) { + return parsing; + } + } + return TConclusionStatus::Success(); + } + +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/common/session/ya.make b/ydb/core/tx/columnshard/data_sharing/common/session/ya.make new file mode 100644 index 000000000000..2e68440a4a6b --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/common/session/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + common.cpp +) + +PEERDIR( + ydb/library/conclusion + ydb/core/tx/columnshard/common + ydb/core/tx/columnshard/data_sharing/common/context + ydb/core/tablet_flat +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.cpp b/ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.cpp new file mode 100644 index 000000000000..8a97c55b0ed3 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.cpp @@ -0,0 +1,5 @@ +#include "tx_extension.h" + +namespace NKikimr::NColumnShard::NDataSharing { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h b/ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h new file mode 100644 index 000000000000..055081e37173 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h @@ -0,0 +1,35 @@ +#pragma once +#include <ydb/core/tablet_flat/tablet_flat_executor.h> +#include <ydb/library/actors/core/actor.h> + +namespace NKikimr::NOlap::NDataSharing { + +template <class TShard> +class TExtendedTransactionBase: public NTabletFlatExecutor::TTransactionBase<TShard> { +private: + const TString TxInfo; + const ui32 TabletTxNo; + using TBase = NTabletFlatExecutor::TTransactionBase<TShard>; + virtual bool DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const NActors::TActorContext& ctx) = 0; + virtual void DoComplete(const NActors::TActorContext & ctx) = 0; + +public: + virtual bool Execute(NTabletFlatExecutor::TTransactionContext& txc, const NActors::TActorContext& ctx) override final { + NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build()("tablet_id", TBase::Self->TabletID())("tx_no", TabletTxNo)("tx_info", TxInfo); + return DoExecute(txc, ctx); + } + virtual void Complete(const NActors::TActorContext& ctx) override final { + NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build()("tablet_id", TBase::Self->TabletID())("tx_no", TabletTxNo)("tx_info", TxInfo); + return DoComplete(ctx); + } + + TExtendedTransactionBase(TShard* self, const TString& txInfo = Default<TString>()) + : TBase(self) + , TxInfo(txInfo) + , TabletTxNo(++TBase::Self->TabletTxCounter) + { + + } +}; + +} diff --git a/ydb/core/tx/columnshard/data_sharing/common/transactions/ya.make b/ydb/core/tx/columnshard/data_sharing/common/transactions/ya.make new file mode 100644 index 000000000000..30aa6d488922 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/common/transactions/ya.make @@ -0,0 +1,17 @@ +LIBRARY() + +SRCS( + tx_extension.cpp +) + +PEERDIR( + ydb/core/tablet_flat + ydb/core/tx/tiering + ydb/services/metadata/abstract + ydb/core/tx/columnshard/data_sharing/protos + ydb/core/tx/columnshard/blobs_action/protos + ydb/core/base + ydb/core/tx/tiering +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/common/ya.make b/ydb/core/tx/columnshard/data_sharing/common/ya.make new file mode 100644 index 000000000000..1d1caafc12c6 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/common/ya.make @@ -0,0 +1,9 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/common/session + ydb/core/tx/columnshard/data_sharing/common/transactions + ydb/core/tx/columnshard/data_sharing/common/context +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/destination/events/control.cpp b/ydb/core/tx/columnshard/data_sharing/destination/events/control.cpp new file mode 100644 index 000000000000..cb0407f1aba2 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/events/control.cpp @@ -0,0 +1,14 @@ +#include "control.h" +#include <ydb/core/tx/columnshard/data_sharing/destination/session/destination.h> + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +TEvProposeFromInitiator::TEvProposeFromInitiator(const TDestinationSession& session) { + *Record.MutableSession() = session.SerializeDataToProto(); +} + +TEvConfirmFromInitiator::TEvConfirmFromInitiator(const TString& sessionId) { + *Record.MutableSessionId() = sessionId; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/destination/events/control.h b/ydb/core/tx/columnshard/data_sharing/destination/events/control.h new file mode 100644 index 000000000000..eff9504fa0b5 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/events/control.h @@ -0,0 +1,33 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard.h> +#include <ydb/core/tx/columnshard/data_sharing/protos/events.pb.h> + +#include <ydb/library/actors/core/event_pb.h> + +namespace NKikimr::NOlap::NDataSharing { +class TDestinationSession; +} + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +struct TEvProposeFromInitiator: public NActors::TEventPB<TEvProposeFromInitiator, NKikimrColumnShardDataSharingProto::TEvProposeFromInitiator, TEvColumnShard::EvDataSharingProposeFromInitiator> { + TEvProposeFromInitiator() = default; + + TEvProposeFromInitiator(const TDestinationSession& session); +}; + +struct TEvConfirmFromInitiator: public NActors::TEventPB<TEvConfirmFromInitiator, NKikimrColumnShardDataSharingProto::TEvConfirmFromInitiator, TEvColumnShard::EvDataSharingConfirmFromInitiator> { + TEvConfirmFromInitiator() = default; + + TEvConfirmFromInitiator(const TString& sessionId); +}; + +struct TEvAckFinishFromInitiator: public NActors::TEventPB<TEvAckFinishFromInitiator, NKikimrColumnShardDataSharingProto::TEvAckFinishFromInitiator, TEvColumnShard::EvDataSharingAckFinishFromInitiator> { + TEvAckFinishFromInitiator() = default; + + TEvAckFinishFromInitiator(const TString& sharingId) { + Record.SetSessionId(sharingId); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/destination/events/status.cpp b/ydb/core/tx/columnshard/data_sharing/destination/events/status.cpp new file mode 100644 index 000000000000..e6af6b90d5ab --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/events/status.cpp @@ -0,0 +1,5 @@ +#include "status.h" + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/destination/events/status.h b/ydb/core/tx/columnshard/data_sharing/destination/events/status.h new file mode 100644 index 000000000000..7a1327be236d --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/events/status.h @@ -0,0 +1,16 @@ +#pragma once +#include <ydb/library/actors/core/event_pb.h> +#include <ydb/core/tx/columnshard/data_sharing/protos/events.pb.h> +#include <ydb/core/tx/columnshard/columnshard.h> + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +struct TEvCheckStatusFromInitiator: public NActors::TEventPB<TEvCheckStatusFromInitiator, NKikimrColumnShardDataSharingProto::TEvCheckStatusFromInitiator, TEvColumnShard::EvDataSharingCheckStatusFromInitiator> { + TEvCheckStatusFromInitiator() = default; + + TEvCheckStatusFromInitiator(const TString& sessionId) { + Record.SetSessionId(sessionId); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/destination/events/transfer.cpp b/ydb/core/tx/columnshard/data_sharing/destination/events/transfer.cpp new file mode 100644 index 000000000000..55d7e8e9ea7d --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/events/transfer.cpp @@ -0,0 +1,68 @@ +#include "transfer.h" +#include <ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.h> +#include <ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h> +#include <ydb/core/tx/columnshard/engines/column_engine.h> + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +THashMap<NKikimr::NOlap::TTabletId, NKikimr::NOlap::NDataSharing::TTaskForTablet> TPathIdData::BuildLinkTabletTasks( + const std::shared_ptr<TSharedBlobsManager>& sharedBlobs, const TTabletId selfTabletId, const TTransferContext& context, const TVersionedIndex& index) { + THashMap<TString, THashSet<TUnifiedBlobId>> blobIds; + for (auto&& i : Portions) { + auto schema = i.GetSchema(index); + i.FillBlobIdsByStorage(blobIds, schema->GetIndexInfo()); + } + + THashMap<TString, THashMap<TUnifiedBlobId, TBlobSharing>> blobsInfo; + + for (auto&& i : blobIds) { + auto storageManager = sharedBlobs->GetStorageManagerVerified(i.first); + auto storeCategories = storageManager->BuildStoreCategories(i.second); + auto& blobs = blobsInfo[i.first]; + for (auto it = storeCategories.GetDirect().GetIterator(); it.IsValid(); ++it) { + auto itSharing = blobs.find(it.GetBlobId()); + if (itSharing == blobs.end()) { + itSharing = blobs.emplace(it.GetBlobId(), TBlobSharing(i.first, it.GetBlobId())).first; + } + } + for (auto it = storeCategories.GetSharing().GetIterator(); it.IsValid(); ++it) { + auto itSharing = blobs.find(it.GetBlobId()); + if (itSharing == blobs.end()) { + itSharing = blobs.emplace(it.GetBlobId(), TBlobSharing(i.first, it.GetBlobId())).first; + } + itSharing->second.AddShared(it.GetTabletId()); + } + for (auto it = storeCategories.GetBorrowed().GetIterator(); it.IsValid(); ++it) { + auto itSharing = blobs.find(it.GetBlobId()); + if (itSharing == blobs.end()) { + itSharing = blobs.emplace(it.GetBlobId(), TBlobSharing(i.first, it.GetBlobId())).first; + } + itSharing->second.AddBorrowed(it.GetTabletId()); + } + } + + THashMap<TTabletId, TTaskForTablet> globalTabletTasks; + for (auto&& [storageId, blobs] : blobsInfo) { + THashMap<TTabletId, TStorageTabletTask> storageTabletTasks; + for (auto&& [_, blobInfo] : blobs) { + THashMap<TTabletId, TStorageTabletTask> blobTabletTasks = context.GetMoving() ? blobInfo.BuildTabletTasksOnMove(context, selfTabletId, storageId) : blobInfo.BuildTabletTasksOnCopy(context, selfTabletId, storageId); + for (auto&& [tId, tInfo] : blobTabletTasks) { + auto itTablet = storageTabletTasks.find(tId); + if (itTablet == storageTabletTasks.end()) { + itTablet = storageTabletTasks.emplace(tId, TStorageTabletTask(storageId, tId)).first; + } + itTablet->second.Merge(tInfo); + } + } + for (auto&& i : storageTabletTasks) { + auto it = globalTabletTasks.find(i.first); + if (it == globalTabletTasks.end()) { + it = globalTabletTasks.emplace(i.first, TTaskForTablet(i.first)).first; + } + it->second.AddStorage(std::move(i.second)); + } + } + return globalTabletTasks; +} + +} diff --git a/ydb/core/tx/columnshard/data_sharing/destination/events/transfer.h b/ydb/core/tx/columnshard/data_sharing/destination/events/transfer.h new file mode 100644 index 000000000000..d4205a0db65d --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/events/transfer.h @@ -0,0 +1,107 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> +#include <ydb/core/tx/columnshard/data_sharing/common/context/context.h> +#include <ydb/core/tx/columnshard/data_sharing/protos/events.pb.h> +#include <ydb/core/tx/columnshard/columnshard.h> + +#include <ydb/library/actors/core/event_pb.h> + +namespace NKikimr::NOlap { +class TVersionedIndex; +} + +namespace NKikimr::NOlap::NDataSharing { +class TSharedBlobsManager; +class TTaskForTablet; +} + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +class TPathIdData { +private: + YDB_READONLY(ui64, PathId, 0); + YDB_READONLY_DEF(std::vector<TPortionInfo>, Portions); + + TPathIdData() = default; + + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TPathIdData& proto, const TIndexInfo& indexInfo) { + if (!proto.HasPathId()) { + return TConclusionStatus::Fail("no path id in proto"); + } + PathId = proto.GetPathId(); + for (auto&& portionProto : proto.GetPortions()) { + TConclusion<TPortionInfo> portion = TPortionInfo::BuildFromProto(portionProto, indexInfo); + if (!portion) { + return portion.GetError(); + } + Portions.emplace_back(portion.DetachResult()); + } + return TConclusionStatus::Success(); + } +public: + TPathIdData(const ui64 pathId, const std::vector<TPortionInfo>& portions) + : PathId(pathId) + , Portions(portions) + { + + } + + std::vector<TPortionInfo> DetachPortions() { + return std::move(Portions); + } + THashMap<TTabletId, TTaskForTablet> BuildLinkTabletTasks(const std::shared_ptr<TSharedBlobsManager>& sharedBlobs, const TTabletId selfTabletId, + const TTransferContext& context, const TVersionedIndex& index); + + void InitPortionIds(ui64* lastPortionId, const std::optional<ui64> pathId = {}) { + AFL_VERIFY(lastPortionId); + for (auto&& i : Portions) { + i.SetPortion(++*lastPortionId); + if (pathId) { + i.SetPathId(*pathId); + } + } + } + + void SerializeToProto(NKikimrColumnShardDataSharingProto::TPathIdData& proto) const { + proto.SetPathId(PathId); + for (auto&& i : Portions) { + i.SerializeToProto(*proto.AddPortions()); + } + }; + + + static TConclusion<TPathIdData> BuildFromProto(const NKikimrColumnShardDataSharingProto::TPathIdData& proto, const TIndexInfo& indexInfo) { + TPathIdData result; + auto resultParsing = result.DeserializeFromProto(proto, indexInfo); + if (!resultParsing) { + return resultParsing; + } else { + return result; + } + } + +}; + +struct TEvSendDataFromSource: public NActors::TEventPB<TEvSendDataFromSource, NKikimrColumnShardDataSharingProto::TEvSendDataFromSource, TEvColumnShard::EvDataSharingSendDataFromSource> { + TEvSendDataFromSource() = default; + + TEvSendDataFromSource(const TString& sessionId, const ui32 packIdx, const TTabletId sourceTabletId, const THashMap<ui64, TPathIdData>& pathIdData) { + Record.SetSessionId(sessionId); + Record.SetPackIdx(packIdx); + Record.SetSourceTabletId((ui64)sourceTabletId); + for (auto&& i : pathIdData) { + i.second.SerializeToProto(*Record.AddPathIdData()); + } + } +}; + +struct TEvFinishedFromSource: public NActors::TEventPB<TEvFinishedFromSource, NKikimrColumnShardDataSharingProto::TEvFinishedFromSource, TEvColumnShard::EvDataSharingFinishedFromSource> { + TEvFinishedFromSource() = default; + + TEvFinishedFromSource(const TString& sessionId, const TTabletId sourceTabletId) { + Record.SetSessionId(sessionId); + Record.SetSourceTabletId((ui64)sourceTabletId); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/destination/events/ya.make b/ydb/core/tx/columnshard/data_sharing/destination/events/ya.make new file mode 100644 index 000000000000..89b02707d5f4 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/events/ya.make @@ -0,0 +1,16 @@ +LIBRARY() + +SRCS( + transfer.cpp + status.cpp + control.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/portions + ydb/core/tx/columnshard/data_sharing/destination/session + ydb/core/tx/columnshard/data_sharing/protos + ydb/library/actors/core +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/destination/session/destination.cpp b/ydb/core/tx/columnshard/data_sharing/destination/session/destination.cpp new file mode 100644 index 000000000000..d70fd05f9849 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/session/destination.cpp @@ -0,0 +1,187 @@ +#include "destination.h" +#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> +#include <ydb/core/tx/columnshard/data_locks/locks/list.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/events/transfer.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_ack_from_initiator.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_from_source.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_data_from_source.h> +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> + +namespace NKikimr::NOlap::NDataSharing { + +NKikimr::TConclusionStatus TDestinationSession::DataReceived(THashMap<ui64, NEvents::TPathIdData>&& data, TColumnEngineForLogs& index, const std::shared_ptr<IStoragesManager>& /*manager*/) { + auto guard = index.GranulesStorage->GetStats()->StartPackModification(); + for (auto&& i : data) { + auto it = PathIds.find(i.first); + AFL_VERIFY(it != PathIds.end())("path_id_undefined", i.first); + for (auto&& portion : i.second.DetachPortions()) { + ui32 contains = 0; + ui32 notContains = 0; + THashMap<TString, THashSet<TUnifiedBlobId>> blobIds; + portion.FillBlobIdsByStorage(blobIds, index.GetVersionedIndex()); + for (auto&& s : blobIds) { + auto it = CurrentBlobIds.find(s.first); + if (it == CurrentBlobIds.end()) { + notContains += s.second.size(); + continue; + } + for (auto&& b : s.second) { + if (it->second.contains(b)) { + ++contains; + } + } + } + AFL_VERIFY(!contains || !notContains); + if (!contains) { + portion.SetPathId(it->second); + index.UpsertPortion(std::move(portion)); + } + } + } + return TConclusionStatus::Success(); +} + +void TDestinationSession::SendCurrentCursorAck(const NColumnShard::TColumnShard& shard, const std::optional<TTabletId> tabletId) { + AFL_VERIFY(IsStarted() || IsStarting()); + bool found = false; + bool allTransfersFinished = true; + for (auto&& [_, cursor] : Cursors) { + if (!cursor.GetDataFinished()) { + allTransfersFinished = false; + } + if (tabletId && *tabletId != cursor.GetTabletId()) { + continue; + } + found = true; + if (cursor.GetDataFinished()) { + auto ev = std::make_unique<NEvents::TEvAckFinishToSource>(GetSessionId()); + NActors::TActivationContext::AsActorContext().Send(MakePipePeNodeCacheID(false), + new TEvPipeCache::TEvForward(ev.release(), (ui64)cursor.GetTabletId(), true), IEventHandle::FlagTrackDelivery, GetRuntimeId()); + } else if (cursor.GetPackIdx()) { + auto ev = std::make_unique<NEvents::TEvAckDataToSource>(GetSessionId(), cursor.GetPackIdx()); + NActors::TActivationContext::AsActorContext().Send(MakePipePeNodeCacheID(false), + new TEvPipeCache::TEvForward(ev.release(), (ui64)cursor.GetTabletId(), true), IEventHandle::FlagTrackDelivery, GetRuntimeId()); + } else { + std::set<ui64> pathIdsBase; + for (auto&& i : PathIds) { + pathIdsBase.emplace(i.first); + } + TSourceSession source(GetSessionId(), TransferContext, cursor.GetTabletId(), pathIdsBase, (TTabletId)shard.TabletID()); + auto ev = std::make_unique<NEvents::TEvStartToSource>(source); + NActors::TActivationContext::AsActorContext().Send(MakePipePeNodeCacheID(false), + new TEvPipeCache::TEvForward(ev.release(), (ui64)cursor.GetTabletId(), true), IEventHandle::FlagTrackDelivery, GetRuntimeId()); + } + } + if (allTransfersFinished && !IsFinished()) { + NYDBTest::TControllers::GetColumnShardController()->OnDataSharingFinished(shard.TabletID(), GetSessionId()); + Finish(shard.GetDataLocksManager()); + InitiatorController.Finished(GetSessionId()); + } + AFL_VERIFY(found); +} + +NKikimr::TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> TDestinationSession::ReceiveData( + NColumnShard::TColumnShard* self, const THashMap<ui64, NEvents::TPathIdData>& data, const ui32 receivedPackIdx, const TTabletId sourceTabletId, + const std::shared_ptr<TDestinationSession>& selfPtr) { + auto result = GetCursorVerified(sourceTabletId).ReceiveData(receivedPackIdx); + if (!result) { + return result; + } + return std::unique_ptr<NTabletFlatExecutor::ITransaction>(new TTxDataFromSource(self, selfPtr, data, sourceTabletId)); +} + +NKikimr::TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> TDestinationSession::ReceiveFinished(NColumnShard::TColumnShard* self, const TTabletId sourceTabletId, const std::shared_ptr<TDestinationSession>& selfPtr) { + auto result = GetCursorVerified(sourceTabletId).ReceiveFinished(); + if (!result) { + return result; + } + return std::unique_ptr<NTabletFlatExecutor::ITransaction>(new TTxFinishFromSource(self, sourceTabletId, selfPtr)); +} + +NKikimr::TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> TDestinationSession::AckInitiatorFinished(NColumnShard::TColumnShard* self, const std::shared_ptr<TDestinationSession>& selfPtr) { + return std::unique_ptr<NTabletFlatExecutor::ITransaction>(new TTxFinishAckFromInitiator(self, selfPtr)); +} + +NKikimr::TConclusionStatus TDestinationSession::DeserializeDataFromProto(const NKikimrColumnShardDataSharingProto::TDestinationSession& proto, const TColumnEngineForLogs& index) { + if (!InitiatorController.DeserializeFromProto(proto.GetInitiatorController())) { + return TConclusionStatus::Fail("cannot parse initiator controller: " + proto.GetInitiatorController().DebugString()); + } + auto parseBase = TBase::DeserializeFromProto(proto); + if (!parseBase) { + return parseBase; + } + + for (auto&& i : TransferContext.GetSourceTabletIds()) { + Cursors.emplace(i, TSourceCursorForDestination(i)); + } + + for (auto&& i : proto.GetPathIds()) { + auto g = index.GetGranuleOptional(i.GetDestPathId()); + if (!g) { + return TConclusionStatus::Fail("Incorrect remapping into undefined path id: " + ::ToString(i.GetDestPathId())); + } + if (!i.GetSourcePathId() || !i.GetDestPathId()) { + return TConclusionStatus::Fail("PathIds remapping contains incorrect ids: " + i.DebugString()); + } + if (!PathIds.emplace(i.GetSourcePathId(), i.GetDestPathId()).second) { + return TConclusionStatus::Fail("PathIds contains duplicated values."); + } + } + if (PathIds.empty()) { + return TConclusionStatus::Fail("PathIds empty."); + } + return TConclusionStatus::Success(); +} + +NKikimrColumnShardDataSharingProto::TDestinationSession TDestinationSession::SerializeDataToProto() const { + NKikimrColumnShardDataSharingProto::TDestinationSession result; + InitiatorController.SerializeToProto(*result.MutableInitiatorController()); + TBase::SerializeToProto(result); + for (auto&& i : PathIds) { + auto* pathIdRemap = result.AddPathIds(); + pathIdRemap->SetSourcePathId(i.first); + pathIdRemap->SetDestPathId(i.second); + } + return result; +} + +NKikimrColumnShardDataSharingProto::TDestinationSession::TFullCursor TDestinationSession::SerializeCursorToProto() const { + NKikimrColumnShardDataSharingProto::TDestinationSession::TFullCursor result; + result.SetConfirmedFlag(ConfirmedFlag); + for (auto&& i : Cursors) { + *result.AddSourceCursors() = i.second.SerializeToProto(); + } + return result; +} + +NKikimr::TConclusionStatus TDestinationSession::DeserializeCursorFromProto(const NKikimrColumnShardDataSharingProto::TDestinationSession::TFullCursor& proto) { + ConfirmedFlag = proto.GetConfirmedFlag(); + for (auto&& i : proto.GetSourceCursors()) { + TSourceCursorForDestination cursor; + auto parsed = cursor.DeserializeFromProto(i); + if (!parsed) { + return parsed; + } + auto it = Cursors.find(cursor.GetTabletId()); + AFL_VERIFY(it != Cursors.end()); + it->second = cursor; + } + return TConclusionStatus::Success(); +} + +bool TDestinationSession::DoStart(const NColumnShard::TColumnShard& shard, const THashMap<ui64, std::vector<std::shared_ptr<TPortionInfo>>>& portions) { + AFL_VERIFY(IsConfirmed()); + NYDBTest::TControllers::GetColumnShardController()->OnDataSharingStarted(shard.TabletID(), GetSessionId()); + THashMap<TString, THashSet<TUnifiedBlobId>> local; + for (auto&& i : portions) { + for (auto&& p : i.second) { + p->FillBlobIdsByStorage(local, shard.GetIndexAs<TColumnEngineForLogs>().GetVersionedIndex()); + } + } + std::swap(CurrentBlobIds, local); + SendCurrentCursorAck(shard, {}); + return true; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/destination/session/destination.h b/ydb/core/tx/columnshard/data_sharing/destination/session/destination.h new file mode 100644 index 000000000000..a2780449d498 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/session/destination.h @@ -0,0 +1,134 @@ +#pragma once +#include <ydb/core/tx/columnshard/common/tablet_id.h> + +#include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/data_sharing/common/session/common.h> +#include <ydb/core/tx/columnshard/data_sharing/initiator/controller/abstract.h> +#include <ydb/core/tx/columnshard/data_sharing/protos/sessions.pb.h> +#include <ydb/library/conclusion/result.h> + +namespace NKikimr::NColumnShard { +class TColumnShard; +} + +namespace NKikimr::NOlap { +class TColumnEngineForLogs; +class IStoragesManager; +} + +namespace NKikimr::NOlap::NDataSharing { + +namespace NEvents { +class TPathIdData; +} + +class TSourceCursorForDestination { +private: + YDB_READONLY(TTabletId, TabletId, (TTabletId)0); + YDB_READONLY(ui32, PackIdx, 0); + YDB_READONLY(bool, DataFinished, false); +public: + TSourceCursorForDestination() = default; + TSourceCursorForDestination(const TTabletId tabletId) + : TabletId(tabletId) + { + + } + + TConclusionStatus ReceiveData(const ui32 packIdxReceived) { + if (packIdxReceived != PackIdx + 1) { + return TConclusionStatus::Fail("inconsistency packIdx"); + } + PackIdx = packIdxReceived; + return TConclusionStatus::Success(); + } + + TConclusionStatus ReceiveFinished() { + if (DataFinished) { + return TConclusionStatus::Fail("inconsistency DataFinished"); + } + DataFinished = true; + return TConclusionStatus::Success(); + } + + [[nodiscard]] TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TDestinationSession::TSourceCursor& proto) { + TabletId = (TTabletId)proto.GetTabletId(); + PackIdx = proto.GetPackIdx(); + DataFinished = proto.GetFinished(); + return TConclusionStatus::Success(); + } + + [[nodiscard]] NKikimrColumnShardDataSharingProto::TDestinationSession::TSourceCursor SerializeToProto() const { + NKikimrColumnShardDataSharingProto::TDestinationSession::TSourceCursor result; + result.SetTabletId((ui64)TabletId); + result.SetPackIdx(PackIdx); + result.SetFinished(DataFinished); + return result; + } + +}; + +class TDestinationSession: public TCommonSession { +private: + using TBase = TCommonSession; + YDB_READONLY_DEF(TInitiatorControllerContainer, InitiatorController); + using TPathIdsRemapper = THashMap<ui64, ui64>; + YDB_READONLY_DEF(TPathIdsRemapper, PathIds); + YDB_READONLY_FLAG(Confirmed, false); + THashMap<TTabletId, TSourceCursorForDestination> Cursors; + THashMap<TString, THashSet<TUnifiedBlobId>> CurrentBlobIds; +protected: + virtual bool DoStart(const NColumnShard::TColumnShard& shard, const THashMap<ui64, std::vector<std::shared_ptr<TPortionInfo>>>& portions) override; + virtual THashSet<ui64> GetPathIdsForStart() const override { + THashSet<ui64> result; + for (auto&& i : PathIds) { + result.emplace(i.first); + } + return result; + } +public: + TSourceCursorForDestination& GetCursorVerified(const TTabletId& tabletId) { + auto it = Cursors.find(tabletId); + AFL_VERIFY(it != Cursors.end()); + return it->second; + } + + TDestinationSession(const TInitiatorControllerContainer& controller, const TPathIdsRemapper& remapper, const TString& sessionId, const TTransferContext& context) + : TBase(sessionId, "destination_base", context) + , InitiatorController(controller) + , PathIds(remapper) + { + + } + + TDestinationSession() + : TBase("dest_proto") + { + + } + + void Confirm(const bool allowRepeat = false) { + AFL_VERIFY(!ConfirmedFlag || allowRepeat); + ConfirmedFlag = true; + } + + [[nodiscard]] TConclusionStatus DataReceived(THashMap<ui64, NEvents::TPathIdData>&& data, TColumnEngineForLogs& index, const std::shared_ptr<IStoragesManager>& manager); + + void SendCurrentCursorAck(const NColumnShard::TColumnShard& shard, const std::optional<TTabletId> tabletId); + + NKikimrColumnShardDataSharingProto::TDestinationSession SerializeDataToProto() const; + + [[nodiscard]] TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> ReceiveFinished(NColumnShard::TColumnShard* self, const TTabletId sourceTabletId, const std::shared_ptr<TDestinationSession>& selfPtr); + + [[nodiscard]] TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> AckInitiatorFinished(NColumnShard::TColumnShard* self, const std::shared_ptr<TDestinationSession>& selfPtr); + + [[nodiscard]] TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> ReceiveData(NColumnShard::TColumnShard* self, const THashMap<ui64, NEvents::TPathIdData>& data, + const ui32 receivedPackIdx, const TTabletId sourceTabletId, const std::shared_ptr<TDestinationSession>& selfPtr); + + NKikimrColumnShardDataSharingProto::TDestinationSession::TFullCursor SerializeCursorToProto() const; + [[nodiscard]] TConclusionStatus DeserializeCursorFromProto(const NKikimrColumnShardDataSharingProto::TDestinationSession::TFullCursor& proto); + + [[nodiscard]] TConclusionStatus DeserializeDataFromProto(const NKikimrColumnShardDataSharingProto::TDestinationSession& proto, const TColumnEngineForLogs& index); +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/destination/session/ya.make b/ydb/core/tx/columnshard/data_sharing/destination/session/ya.make new file mode 100644 index 000000000000..92588efad0f8 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/session/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + destination.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/initiator/controller + ydb/core/tx/columnshard/data_sharing/common/session + ydb/core/tx/columnshard/data_sharing/common/transactions + ydb/core/tx/columnshard/data_sharing/destination/transactions +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_data_from_source.cpp b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_data_from_source.cpp new file mode 100644 index 000000000000..5c779525b3f3 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_data_from_source.cpp @@ -0,0 +1,44 @@ +#include "tx_data_from_source.h" +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> +#include <ydb/core/tx/columnshard/columnshard_schema.h> + +namespace NKikimr::NOlap::NDataSharing { + +bool TTxDataFromSource::DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& /*ctx*/) { + using namespace NKikimr::NColumnShard; + TDbWrapper dbWrapper(txc.DB, nullptr); + { + ui64* lastPortionPtr = Self->TablesManager.MutablePrimaryIndexAsVerified<NOlap::TColumnEngineForLogs>().GetLastPortionPointer(); + for (auto&& i : PortionsByPathId) { + auto it = Session->GetPathIds().find(i.first); + AFL_VERIFY(it != Session->GetPathIds().end()); + i.second.InitPortionIds(lastPortionPtr, it->second); + } + dbWrapper.WriteCounter(TColumnEngineForLogs::LAST_PORTION, *lastPortionPtr); + } + THashMap<TString, THashSet<NBlobCache::TUnifiedBlobId>> sharedBlobIds; + for (auto&& i : PortionsByPathId) { + for (auto&& p : i.second.GetPortions()) { + p.SaveToDatabase(dbWrapper); + } + } + NIceDb::TNiceDb db(txc.DB); + db.Table<Schema::DestinationSessions>().Key(Session->GetSessionId()) + .Update(NIceDb::TUpdate<Schema::DestinationSessions::Cursor>(Session->SerializeCursorToProto().SerializeAsString())); + return true; +} + +void TTxDataFromSource::DoComplete(const TActorContext& /*ctx*/) { + Session->DataReceived(std::move(PortionsByPathId), Self->TablesManager.MutablePrimaryIndexAsVerified<NOlap::TColumnEngineForLogs>(), Self->GetStoragesManager()).Validate(); + Session->SendCurrentCursorAck(*Self, SourceTabletId); +} + +TTxDataFromSource::TTxDataFromSource(NColumnShard::TColumnShard* self, const std::shared_ptr<TDestinationSession>& session, const THashMap<ui64, NEvents::TPathIdData>& portionsByPathId, const TTabletId sourceTabletId) + : TBase(self) + , Session(session) + , PortionsByPathId(portionsByPathId) + , SourceTabletId(sourceTabletId) +{ +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_data_from_source.h b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_data_from_source.h new file mode 100644 index 000000000000..82b69ac41fb6 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_data_from_source.h @@ -0,0 +1,28 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h> +#include <ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/session/destination.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/events/transfer.h> +#include <ydb/core/tx/columnshard/blob_cache.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TTxDataFromSource: public TExtendedTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = TExtendedTransactionBase<NColumnShard::TColumnShard>; + std::shared_ptr<TDestinationSession> Session; + THashMap<ui64, NEvents::TPathIdData> PortionsByPathId; + THashMap<TString, THashSet<NBlobCache::TUnifiedBlobId>> SharedBlobIds; + const TTabletId SourceTabletId; +protected: + virtual bool DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& ctx) override; + virtual void DoComplete(const TActorContext& ctx) override; +public: + TTxDataFromSource(NColumnShard::TColumnShard* self, const std::shared_ptr<TDestinationSession>& session, const THashMap<ui64, NEvents::TPathIdData>& portionsByPathId, const TTabletId sourceTabletId); + + TTxType GetTxType() const override { return NColumnShard::TXTYPE_DATA_SHARING_DATA_FROM_SOURCE; } +}; + + +} diff --git a/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_ack_from_initiator.cpp b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_ack_from_initiator.cpp new file mode 100644 index 000000000000..ecd5dfeac082 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_ack_from_initiator.cpp @@ -0,0 +1,16 @@ +#include "tx_finish_ack_from_initiator.h" + +namespace NKikimr::NOlap::NDataSharing { + +bool TTxFinishAckFromInitiator::DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& /*ctx*/) { + using namespace NKikimr::NColumnShard; + NIceDb::TNiceDb db(txc.DB); + db.Table<Schema::DestinationSessions>().Key(Session->GetSessionId()).Delete(); + return true; +} + +void TTxFinishAckFromInitiator::DoComplete(const TActorContext& /*ctx*/) { + Self->SharingSessionsManager->RemoveDestinationSession(Session->GetSessionId()); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_ack_from_initiator.h b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_ack_from_initiator.h new file mode 100644 index 000000000000..0d61359a1e8f --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_ack_from_initiator.h @@ -0,0 +1,26 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/session/destination.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TTxFinishAckFromInitiator: public TExtendedTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = TExtendedTransactionBase<NColumnShard::TColumnShard>; + std::shared_ptr<TDestinationSession> Session; +protected: + virtual bool DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& ctx) override; + virtual void DoComplete(const TActorContext& /*ctx*/) override; +public: + TTxFinishAckFromInitiator(NColumnShard::TColumnShard* self, const std::shared_ptr<TDestinationSession>& session) + : TBase(self) + , Session(session) + { + } + + TTxType GetTxType() const override { return NColumnShard::TXTYPE_DATA_SHARING_FINISH_ACK_FROM_INITIATOR; } +}; + + +} diff --git a/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_from_source.cpp b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_from_source.cpp new file mode 100644 index 000000000000..7229dafe789e --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_from_source.cpp @@ -0,0 +1,17 @@ +#include "tx_finish_from_source.h" + +namespace NKikimr::NOlap::NDataSharing { + +bool TTxFinishFromSource::DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& /*ctx*/) { + using namespace NColumnShard; + NIceDb::TNiceDb db(txc.DB); + db.Table<Schema::DestinationSessions>().Key(Session->GetSessionId()) + .Update(NIceDb::TUpdate<Schema::DestinationSessions::Cursor>(Session->SerializeCursorToProto().SerializeAsString())); + return true; +} + +void TTxFinishFromSource::DoComplete(const TActorContext& /*ctx*/) { + Session->SendCurrentCursorAck(*Self, SourceTabletId); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_from_source.h b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_from_source.h new file mode 100644 index 000000000000..92a0bb667988 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_finish_from_source.h @@ -0,0 +1,28 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/session/destination.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TTxFinishFromSource: public TExtendedTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = TExtendedTransactionBase<NColumnShard::TColumnShard>; + std::shared_ptr<TDestinationSession> Session; + const TTabletId SourceTabletId; +protected: + virtual bool DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& ctx) override; + virtual void DoComplete(const TActorContext& ctx) override; +public: + TTxFinishFromSource(NColumnShard::TColumnShard* self, const TTabletId sourceTabletId, const std::shared_ptr<TDestinationSession>& session) + : TBase(self) + , Session(session) + , SourceTabletId(sourceTabletId) + { + } + + TTxType GetTxType() const override { return NColumnShard::TXTYPE_DATA_SHARING_FINISH_FROM_SOURCE; } +}; + + +} diff --git a/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_start_from_initiator.cpp b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_start_from_initiator.cpp new file mode 100644 index 000000000000..4de8f6e30882 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_start_from_initiator.cpp @@ -0,0 +1,33 @@ +#include "tx_start_from_initiator.h" + +namespace NKikimr::NOlap::NDataSharing { + +bool TTxProposeFromInitiator::DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& /*ctx*/) { + using namespace NColumnShard; + NIceDb::TNiceDb db(txc.DB); + db.Table<Schema::DestinationSessions>().Key(Session->GetSessionId()) + .Update(NIceDb::TUpdate<Schema::DestinationSessions::Details>(Session->SerializeDataToProto().SerializeAsString())); + return true; +} + +void TTxProposeFromInitiator::DoComplete(const TActorContext& /*ctx*/) { + AFL_VERIFY(!Session->IsConfirmed()); + AFL_VERIFY(Sessions->emplace(Session->GetSessionId(), Session).second); + Session->GetInitiatorController().ProposeSuccess(Session->GetSessionId()); +} + +bool TTxConfirmFromInitiator::DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& /*ctx*/) { + using namespace NColumnShard; + NIceDb::TNiceDb db(txc.DB); + Session->Confirm(true); + db.Table<Schema::DestinationSessions>().Key(Session->GetSessionId()) + .Update(NIceDb::TUpdate<Schema::DestinationSessions::Cursor>(Session->SerializeCursorToProto().SerializeAsString())); + return true; +} + +void TTxConfirmFromInitiator::DoComplete(const TActorContext& /*ctx*/) { + Session->Start(*Self); + Session->GetInitiatorController().ConfirmSuccess(Session->GetSessionId()); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_start_from_initiator.h b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_start_from_initiator.h new file mode 100644 index 000000000000..e90a2af29935 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_start_from_initiator.h @@ -0,0 +1,44 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/session/destination.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TTxProposeFromInitiator: public TExtendedTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = TExtendedTransactionBase<NColumnShard::TColumnShard>; + std::shared_ptr<TDestinationSession> Session; + THashMap<TString, std::shared_ptr<TDestinationSession>>* Sessions; +protected: + virtual bool DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& ctx) override; + virtual void DoComplete(const TActorContext& ctx) override; +public: + TTxProposeFromInitiator(NColumnShard::TColumnShard* self, const std::shared_ptr<TDestinationSession>& session, THashMap<TString, std::shared_ptr<TDestinationSession>>& sessions, const TString& info) + : TBase(self, info) + , Session(session) + , Sessions(&sessions) { + } + + TTxType GetTxType() const override { return NColumnShard::TXTYPE_DATA_SHARING_PROPOSE_FROM_INITIATOR; } +}; + +class TTxConfirmFromInitiator: public TExtendedTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = TExtendedTransactionBase<NColumnShard::TColumnShard>; + std::shared_ptr<TDestinationSession> Session; +protected: + virtual bool DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& ctx) override; + virtual void DoComplete(const TActorContext& ctx) override; +public: + TTxConfirmFromInitiator(NColumnShard::TColumnShard* self, const std::shared_ptr<TDestinationSession>& session, const TString& info) + : TBase(self, info) + , Session(session) + { + } + + TTxType GetTxType() const override { return NColumnShard::TXTYPE_DATA_SHARING_CONFIRM_FROM_INITIATOR; } +}; + + +} diff --git a/ydb/core/tx/columnshard/data_sharing/destination/transactions/ya.make b/ydb/core/tx/columnshard/data_sharing/destination/transactions/ya.make new file mode 100644 index 000000000000..db1eca3269fa --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/transactions/ya.make @@ -0,0 +1,16 @@ +LIBRARY() + +SRCS( + tx_start_from_initiator.cpp + tx_data_from_source.cpp + tx_finish_from_source.cpp + tx_finish_ack_from_initiator.cpp +) + +PEERDIR( + ydb/core/tx/tiering + ydb/core/tx/columnshard/data_sharing/protos + ydb/core/tx/columnshard/data_sharing/common/transactions +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/destination/ya.make b/ydb/core/tx/columnshard/data_sharing/destination/ya.make new file mode 100644 index 000000000000..77349cb09cb2 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/destination/ya.make @@ -0,0 +1,9 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/destination/session + ydb/core/tx/columnshard/data_sharing/destination/transactions + ydb/core/tx/columnshard/data_sharing/destination/events +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/initiator/controller/abstract.cpp b/ydb/core/tx/columnshard/data_sharing/initiator/controller/abstract.cpp new file mode 100644 index 000000000000..f7eeaa175efb --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/initiator/controller/abstract.cpp @@ -0,0 +1,4 @@ +#include "abstract.h" + +namespace NKikimr::NOlap::NDataSharing { +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/initiator/controller/abstract.h b/ydb/core/tx/columnshard/data_sharing/initiator/controller/abstract.h new file mode 100644 index 000000000000..3eb908800729 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/initiator/controller/abstract.h @@ -0,0 +1,75 @@ +#pragma once +#include <ydb/core/tx/columnshard/data_sharing/initiator/status/abstract.h> +#include <ydb/core/tx/columnshard/data_sharing/protos/initiator.pb.h> + +#include <ydb/services/bg_tasks/abstract/interface.h> + +#include <library/cpp/object_factory/object_factory.h> + +namespace NKikimr::NOlap::NDataSharing { + +class IInitiatorController { +protected: + virtual void DoProposeError(const TString& sessionId, const TString& message) const = 0; + virtual void DoProposeSuccess(const TString& sessionId) const = 0; + virtual void DoConfirmSuccess(const TString& sessionId) const = 0; + virtual void DoFinished(const TString& sessionId) const = 0; + virtual void DoStatus(const TStatusContainer& status) const = 0; + virtual TConclusionStatus DoDeserializeFromProto(const NKikimrColumnShardDataSharingProto::TInitiator::TController& proto) = 0; + virtual void DoSerializeToProto(NKikimrColumnShardDataSharingProto::TInitiator::TController& proto) const = 0; +public: + using TProto = NKikimrColumnShardDataSharingProto::TInitiator::TController; + using TFactory = NObjectFactory::TObjectFactory<IInitiatorController, TString>; + + virtual ~IInitiatorController() = default; + + void SerializeToProto(NKikimrColumnShardDataSharingProto::TInitiator::TController& proto) const { + return DoSerializeToProto(proto); + } + + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TInitiator::TController& proto) { + return DoDeserializeFromProto(proto); + } + + void Status(const TStatusContainer& status) const { + DoStatus(status); + } + void ProposeError(const TString& sessionId, const TString& message) const { + DoProposeError(sessionId, message); + } + void ConfirmSuccess(const TString& sessionId) const { + DoConfirmSuccess(sessionId); + } + void ProposeSuccess(const TString& sessionId) const { + DoProposeSuccess(sessionId); + } + void Finished(const TString& sessionId) const { + DoFinished(sessionId); + } + virtual TString GetClassName() const = 0; +}; + +class TInitiatorControllerContainer: public NBackgroundTasks::TInterfaceProtoContainer<IInitiatorController> { +private: + using TBase = NBackgroundTasks::TInterfaceProtoContainer<IInitiatorController>; +public: + using TBase::TBase; + + void Status(const TStatusContainer& status) const { + TBase::GetObjectPtrVerified()->Status(status); + } + void ProposeSuccess(const TString& sessionId) const { + TBase::GetObjectPtrVerified()->ProposeSuccess(sessionId); + } + void ConfirmSuccess(const TString& sessionId) const { + TBase::GetObjectPtrVerified()->ConfirmSuccess(sessionId); + } + void ProposeError(const TString& sessionId, const TString& message) const { + TBase::GetObjectPtrVerified()->ProposeError(sessionId, message); + } + void Finished(const TString& sessionId) const { + TBase::GetObjectPtrVerified()->Finished(sessionId); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/initiator/controller/test.cpp b/ydb/core/tx/columnshard/data_sharing/initiator/controller/test.cpp new file mode 100644 index 000000000000..162ef65ff2c5 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/initiator/controller/test.cpp @@ -0,0 +1,4 @@ +#include "test.h" + +namespace NKikimr::NOlap::NDataSharing { +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/initiator/controller/test.h b/ydb/core/tx/columnshard/data_sharing/initiator/controller/test.h new file mode 100644 index 000000000000..95645fdba873 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/initiator/controller/test.h @@ -0,0 +1,37 @@ +#pragma once +#include "abstract.h" + +namespace NKikimr::NOlap::NDataSharing { + +class TTestInitiatorController: public IInitiatorController { +public: + static TString GetClassNameStatic() { + return "TEST"; + } +private: + static inline TFactory::TRegistrator<TTestInitiatorController> Registrator = TFactory::TRegistrator<TTestInitiatorController>(GetClassNameStatic()); +protected: + virtual TConclusionStatus DoDeserializeFromProto(const NKikimrColumnShardDataSharingProto::TInitiator::TController& /*proto*/) override { + return TConclusionStatus::Success(); + } + virtual void DoSerializeToProto(NKikimrColumnShardDataSharingProto::TInitiator::TController& /*proto*/) const override { + + } + + virtual void DoStatus(const TStatusContainer& /*status*/) const override { + + } + virtual void DoProposeError(const TString& /*sessionId*/, const TString& /*message*/) const override { + } + virtual void DoProposeSuccess(const TString& /*sessionId*/) const override { + } + virtual void DoConfirmSuccess(const TString& /*sessionId*/) const override { + } + virtual void DoFinished(const TString& /*sessionId*/) const override { + } + virtual TString GetClassName() const override { + return GetClassNameStatic(); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/initiator/controller/ya.make b/ydb/core/tx/columnshard/data_sharing/initiator/controller/ya.make new file mode 100644 index 000000000000..9f2dce70dbd7 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/initiator/controller/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +SRCS( + abstract.cpp + GLOBAL test.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/initiator/status + ydb/services/bg_tasks/abstract +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/initiator/status/abstract.cpp b/ydb/core/tx/columnshard/data_sharing/initiator/status/abstract.cpp new file mode 100644 index 000000000000..fc8a83aa36d3 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/initiator/status/abstract.cpp @@ -0,0 +1,5 @@ +#include "abstract.h" + +namespace NKikimr::NOlap::NDataSharing { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/initiator/status/abstract.h b/ydb/core/tx/columnshard/data_sharing/initiator/status/abstract.h new file mode 100644 index 000000000000..d5c8eb1c0b88 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/initiator/status/abstract.h @@ -0,0 +1,70 @@ +#pragma once +#include <ydb/core/tx/columnshard/data_sharing/protos/initiator.pb.h> +#include <ydb/services/bg_tasks/abstract/interface.h> + +#include <ydb/library/accessor/accessor.h> +#include <ydb/library/conclusion/status.h> + +#include <library/cpp/object_factory/object_factory.h> + +namespace NKikimr::NOlap::NDataSharing { + +enum class EStatus { + Undefined, + NotFound, + StartFailed, + InProgress +}; + +class IStatus { +private: + YDB_READONLY(EStatus, Status, EStatus::Undefined); + YDB_READONLY_DEF(TString, SessionId); +protected: + virtual NJson::TJsonValue DoDebugJson() const { + return NJson::JSON_NULL; + } + virtual TConclusionStatus DoDeserializeFromProto(const NKikimrColumnShardDataSharingProto::TInitiator::TStatus& proto) = 0; + virtual void DoSerializeFromProto(NKikimrColumnShardDataSharingProto::TInitiator::TStatus& proto) const = 0; +public: + using TProto = NKikimrColumnShardDataSharingProto::TInitiator::TStatus; + using TFactory = NObjectFactory::TObjectFactory<IStatus, TString>; + IStatus(const EStatus status, const TString& sessionId) + : Status(status) + , SessionId(sessionId) + { + AFL_VERIFY(SessionId); + } + + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TInitiator::TStatus& proto) { + if (!TryFromString(proto.GetClassName(), Status)) { + return TConclusionStatus::Fail("cannot parse class name as status: " + proto.GetClassName()); + } + SessionId = proto.GetSessionId(); + return DoDeserializeFromProto(proto); + } + void SerializeToProto(NKikimrColumnShardDataSharingProto::TInitiator::TStatus& proto) const { + *proto.MutableSessionId() = SessionId; + return DoSerializeFromProto(proto); + } + + TString GetClassName() const { + return ::ToString(Status); + } + + NJson::TJsonValue DebugJson() const { + NJson::TJsonValue result = NJson::JSON_MAP; + result.InsertValue("class_name", GetClassName()); + result.InsertValue("session_id", SessionId); + auto detailsJson = DoDebugJson(); + if (!detailsJson.IsNull()) { + result.InsertValue("details", std::move(detailsJson)); + } + return result; + } +}; + +class TStatusContainer: public NBackgroundTasks::TInterfaceProtoContainer<IStatus> { + +}; +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/initiator/status/ya.make b/ydb/core/tx/columnshard/data_sharing/initiator/status/ya.make new file mode 100644 index 000000000000..743bfaf5d3e7 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/initiator/status/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + abstract.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/protos + ydb/services/bg_tasks/abstract +) + +GENERATE_ENUM_SERIALIZATION(abstract.h) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/initiator/ya.make b/ydb/core/tx/columnshard/data_sharing/initiator/ya.make new file mode 100644 index 000000000000..f5cbef5a1b75 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/initiator/ya.make @@ -0,0 +1,8 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/initiator/controller + ydb/core/tx/columnshard/data_sharing/initiator/status +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/manager/sessions.cpp b/ydb/core/tx/columnshard/data_sharing/manager/sessions.cpp new file mode 100644 index 000000000000..197fa88ac65d --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/manager/sessions.cpp @@ -0,0 +1,114 @@ +#include "sessions.h" +#include <ydb/core/tx/columnshard/columnshard_schema.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/transactions/tx_start_from_initiator.h> +#include <ydb/core/tx/columnshard/data_sharing/source/transactions/tx_start_to_source.h> +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> + +namespace NKikimr::NOlap::NDataSharing { + +void TSessionsManager::Start(const NColumnShard::TColumnShard& shard) const { + NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build()("sessions", "start")("tablet_id", shard.TabletID()); + for (auto&& i : SourceSessions) { + if (!i.second->IsStarted()) { + i.second->Start(shard); + } + } + for (auto&& i : DestSessions) { + if (!i.second->IsStarted() && i.second->IsConfirmed()) { + i.second->Start(shard); + } + } + NYDBTest::TControllers::GetColumnShardController()->OnAfterSharingSessionsManagerStart(shard); +} + +void TSessionsManager::InitializeEventsExchange(const NColumnShard::TColumnShard& shard, const std::optional<ui64> sessionCookie) { + AFL_VERIFY(!sessionCookie || *sessionCookie); + for (auto&& i : SourceSessions) { + if (sessionCookie && *sessionCookie != i.second->GetRuntimeId()) { + continue; + } + i.second->ActualizeDestination(shard.GetDataLocksManager()); + } + for (auto&& i : DestSessions) { + if (sessionCookie && *sessionCookie != i.second->GetRuntimeId()) { + continue; + } + i.second->SendCurrentCursorAck(shard, {}); + } +} + +bool TSessionsManager::Load(NTable::TDatabase& database, const TColumnEngineForLogs* index) { + NIceDb::TNiceDb db(database); + using namespace NColumnShard; + { + auto rowset = db.Table<Schema::SourceSessions>().Select(); + if (!rowset.IsReady()) { + return false; + } + + while (!rowset.EndOfSet()) { + auto session = std::make_shared<TSourceSession>((TTabletId)index->GetTabletId()); + + NKikimrColumnShardDataSharingProto::TSourceSession protoSession; + AFL_VERIFY(protoSession.ParseFromString(rowset.GetValue<Schema::SourceSessions::Details>())); + + NKikimrColumnShardDataSharingProto::TSourceSession::TCursorDynamic protoSessionCursorDynamic; + AFL_VERIFY(protoSessionCursorDynamic.ParseFromString(rowset.GetValue<Schema::SourceSessions::CursorDynamic>())); + + NKikimrColumnShardDataSharingProto::TSourceSession::TCursorStatic protoSessionCursorStatic; + AFL_VERIFY(protoSessionCursorStatic.ParseFromString(rowset.GetValue<Schema::SourceSessions::CursorStatic>())); + + AFL_VERIFY(index); + session->DeserializeFromProto(protoSession, protoSessionCursorDynamic, protoSessionCursorStatic).Validate(); + AFL_VERIFY(SourceSessions.emplace(session->GetSessionId(), session).second); + if (!rowset.Next()) { + return false; + } + } + + } + + { + auto rowset = db.Table<Schema::DestinationSessions>().Select(); + if (!rowset.IsReady()) { + return false; + } + + while (!rowset.EndOfSet()) { + auto session = std::make_shared<TDestinationSession>(); + + NKikimrColumnShardDataSharingProto::TDestinationSession protoSession; + AFL_VERIFY(protoSession.ParseFromString(rowset.GetValue<Schema::DestinationSessions::Details>())); + + NKikimrColumnShardDataSharingProto::TDestinationSession::TFullCursor protoSessionCursor; + AFL_VERIFY(protoSessionCursor.ParseFromString(rowset.GetValue<Schema::DestinationSessions::Cursor>())); + + AFL_VERIFY(index); + session->DeserializeDataFromProto(protoSession, *index).Validate(); + session->DeserializeCursorFromProto(protoSessionCursor).Validate(); + AFL_VERIFY(DestSessions.emplace(session->GetSessionId(), session).second); + if (!rowset.Next()) { + return false; + } + } + } + return true; +} + +std::unique_ptr<NTabletFlatExecutor::ITransaction> TSessionsManager::ProposeDestSession(NColumnShard::TColumnShard* self, const std::shared_ptr<TDestinationSession>& session) { + AFL_VERIFY(session); + return std::make_unique<TTxProposeFromInitiator>(self, session, DestSessions, "tx_propose_from_initiator"); +} + +std::unique_ptr<NTabletFlatExecutor::ITransaction> TSessionsManager::ConfirmDestSession(NColumnShard::TColumnShard* self, const std::shared_ptr<TDestinationSession>& session) { + AFL_VERIFY(session); + return std::make_unique<TTxConfirmFromInitiator>(self, session, "tx_confirm_from_initiator"); +} + +std::unique_ptr<NTabletFlatExecutor::ITransaction> TSessionsManager::InitializeSourceSession(NColumnShard::TColumnShard* self, const std::shared_ptr<TSourceSession>& session) { + AFL_VERIFY(session); + return std::make_unique<TTxStartToSource>(self, session, SourceSessions, "tx_start_to_source"); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/manager/sessions.h b/ydb/core/tx/columnshard/data_sharing/manager/sessions.h new file mode 100644 index 000000000000..691b42ad8bb4 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/manager/sessions.h @@ -0,0 +1,54 @@ +#pragma once +#include <ydb/core/tx/columnshard/data_sharing/source/session/source.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/session/destination.h> + +namespace NKikimr::NColumnShard { +class TColumnShard; +} + +namespace NKikimr::NOlap::NDataSharing { + +class TSessionsManager { +private: + THashMap<TString, std::shared_ptr<TSourceSession>> SourceSessions; + THashMap<TString, std::shared_ptr<TDestinationSession>> DestSessions; +public: + TSessionsManager() = default; + + void Start(const NColumnShard::TColumnShard& shard) const; + + std::shared_ptr<TSourceSession> GetSourceSession(const TString& sessionId) const { + auto it = SourceSessions.find(sessionId); + if (it == SourceSessions.end()) { + return nullptr; + } + return it->second; + } + + std::shared_ptr<TDestinationSession> GetDestinationSession(const TString& sessionId) const { + auto it = DestSessions.find(sessionId); + if (it == DestSessions.end()) { + return nullptr; + } + return it->second; + } + + void RemoveSourceSession(const TString& sessionId) { + SourceSessions.erase(sessionId); + } + + void RemoveDestinationSession(const TString& sessionId) { + DestSessions.erase(sessionId); + } + + [[nodiscard]] bool Load(NTable::TDatabase& database, const TColumnEngineForLogs* index); + + void InitializeEventsExchange(const NColumnShard::TColumnShard& shard, const std::optional<ui64> sessionCookie = {}); + + std::unique_ptr<NTabletFlatExecutor::ITransaction> InitializeSourceSession(NColumnShard::TColumnShard* self, const std::shared_ptr<TSourceSession>& session); + std::unique_ptr<NTabletFlatExecutor::ITransaction> ProposeDestSession(NColumnShard::TColumnShard* self, const std::shared_ptr<TDestinationSession>& session); + std::unique_ptr<NTabletFlatExecutor::ITransaction> ConfirmDestSession(NColumnShard::TColumnShard* self, const std::shared_ptr<TDestinationSession>& session); + +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.cpp b/ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.cpp new file mode 100644 index 000000000000..40387937a93b --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.cpp @@ -0,0 +1,127 @@ +#include "shared_blobs.h" +#include <ydb/core/tablet_flat/flat_cxx_database.h> +#include <ydb/core/tx/columnshard/columnshard_schema.h> +#include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> + +namespace NKikimr::NOlap::NDataSharing { + +bool TSharedBlobsManager::LoadIdempotency(NTable::TDatabase& database) { + NIceDb::TNiceDb db(database); + using namespace NKikimr::NColumnShard; + THashMap<TString, THashMap<TUnifiedBlobId, THashSet<TTabletId>>> sharedBlobIds; + THashMap<TString, THashMap<TUnifiedBlobId, TTabletId>> borrowedBlobIds; + { + auto rowset = db.Table<Schema::SharedBlobIds>().Select(); + if (!rowset.IsReady()) + return false; + + TString error; + while (!rowset.EndOfSet()) { + const TString& storageId = rowset.GetValue<Schema::SharedBlobIds::StorageId>(); + auto unifiedBlobId = NOlap::TUnifiedBlobId::BuildFromString(rowset.GetValue<Schema::SharedBlobIds::BlobId>(), nullptr); + AFL_VERIFY(!!unifiedBlobId)("error", unifiedBlobId.GetErrorMessage()); + AFL_VERIFY(sharedBlobIds[storageId][*unifiedBlobId].emplace((TTabletId)rowset.GetValue<Schema::SharedBlobIds::TabletId>()).second)("blob_id", *unifiedBlobId)("storage_id", storageId); + if (!rowset.Next()) + return false; + } + } + + { + auto rowset = db.Table<Schema::BorrowedBlobIds>().Select(); + if (!rowset.IsReady()) + return false; + + TString error; + + while (!rowset.EndOfSet()) { + const TString& storageId = rowset.GetValue<Schema::BorrowedBlobIds::StorageId>(); + auto unifiedBlobId = NOlap::TUnifiedBlobId::BuildFromString(rowset.GetValue<Schema::BorrowedBlobIds::BlobId>(), nullptr); + AFL_VERIFY(!!unifiedBlobId)("error", unifiedBlobId.GetErrorMessage()); + AFL_VERIFY(borrowedBlobIds[storageId].emplace(*unifiedBlobId, (TTabletId)rowset.GetValue<Schema::BorrowedBlobIds::TabletId>()).second)("blob_id", *unifiedBlobId)("storage_id", storageId); + if (!rowset.Next()) + return false; + } + } + for (auto&& i : Storages) { + i.second->Clear(); + } + for (auto&& [storageId, blobs] : sharedBlobIds) { + auto storage = GetStorageManagerGuarantee(storageId); + for (auto&& b : blobs) { + for (auto&& t : b.second) { + AFL_VERIFY(storage->UpsertSharedBlobOnLoad(b.first, t)); + } + } + } + for (auto&& [storageId, blobs] : borrowedBlobIds) { + auto storage = GetStorageManagerGuarantee(storageId); + for (auto&& b : blobs) { + AFL_VERIFY(storage->UpsertBorrowedBlobOnLoad(b.first, b.second)); + } + } + return true; +} + +void TStorageSharedBlobsManager::RemoveSharedBlobsDB(NTabletFlatExecutor::TTransactionContext& txc, const TTabletsByBlob& blobIds) { + NIceDb::TNiceDb db(txc.DB); + for (auto i = blobIds.GetIterator(); i.IsValid(); ++i) { + db.Table<NColumnShard::Schema::SharedBlobIds>().Key(StorageId, i.GetBlobId().ToStringNew(), (ui64)i.GetTabletId()).Delete(); + } +} + +void TStorageSharedBlobsManager::WriteSharedBlobsDB(NTabletFlatExecutor::TTransactionContext& txc, const TTabletsByBlob& blobIds) { + NIceDb::TNiceDb db(txc.DB); + for (auto i = blobIds.GetIterator(); i.IsValid(); ++i) { + db.Table<NColumnShard::Schema::SharedBlobIds>().Key(StorageId, i.GetBlobId().ToStringNew(), (ui64)i.GetTabletId()).Update(); + } +} + +void TStorageSharedBlobsManager::WriteBorrowedBlobsDB(NTabletFlatExecutor::TTransactionContext& txc, const TTabletByBlob& blobIds) { + NIceDb::TNiceDb db(txc.DB); + for (auto&& it: blobIds) { + db.Table<NColumnShard::Schema::BorrowedBlobIds>().Key(StorageId, it.first.ToStringNew()).Update(NIceDb::TUpdate<NColumnShard::Schema::BorrowedBlobIds::TabletId>((ui64)it.second)); + } +} + +void TStorageSharedBlobsManager::CASBorrowedBlobsDB(NTabletFlatExecutor::TTransactionContext& txc, const TTabletId tabletIdFrom, const TTabletId tabletIdTo, const THashSet<TUnifiedBlobId>& blobIds) { + NIceDb::TNiceDb db(txc.DB); + for (auto&& i : blobIds) { + auto it = BorrowedBlobIds.find(i); + AFL_VERIFY(it != BorrowedBlobIds.end())("blob_id", i.ToStringNew()); + AFL_VERIFY(it->second == tabletIdFrom || it->second == tabletIdTo); + if (tabletIdTo == SelfTabletId) { + db.Table<NColumnShard::Schema::BorrowedBlobIds>().Key(StorageId, i.ToStringNew()).Delete(); + } else { + db.Table<NColumnShard::Schema::BorrowedBlobIds>().Key(StorageId, i.ToStringNew()).Update(NIceDb::TUpdate<NColumnShard::Schema::BorrowedBlobIds::TabletId>((ui64)tabletIdTo)); + } + } +} + +void TStorageSharedBlobsManager::OnTransactionExecuteAfterCleaning(const TBlobsCategories& removeTask, NTable::TDatabase& db) { + TBlobManagerDb dbBlobs(db); + for (auto&& i : removeTask.GetSharing()) { + for (auto&& b : i.second) { + dbBlobs.RemoveBlobSharing(StorageId, b, i.first); + } + } + for (auto&& i : removeTask.GetBorrowed()) { + for (auto&& blob : i.second) { + dbBlobs.RemoveBorrowedBlob(StorageId, blob); + } + } +} + +void TStorageSharedBlobsManager::OnTransactionCompleteAfterCleaning(const TBlobsCategories& removeTask) { + for (auto i = removeTask.GetSharing().GetIterator(); i.IsValid(); ++i) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("action", "remove_share")("tablet_id_share", i.GetTabletId())("blob_id", i.GetBlobId().ToStringNew()); + SharedBlobIds.Remove(i.GetTabletId(), i.GetBlobId()); + } + for (auto i = removeTask.GetBorrowed().GetIterator(); i.IsValid(); ++i) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("action", "remove_own")("tablet_id_own", i.GetTabletId())("blob_id", i.GetBlobId().ToStringNew()); + auto it = BorrowedBlobIds.find(i.GetBlobId()); + AFL_VERIFY(it != BorrowedBlobIds.end()); + BorrowedBlobIds.erase(it); + } +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h b/ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h new file mode 100644 index 000000000000..c9cacb603aeb --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h @@ -0,0 +1,247 @@ +#pragma once +#include <ydb/core/tablet_flat/tablet_flat_executor.h> +#include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/common.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/blob_set.h> +#include <ydb/core/tx/columnshard/common/tablet_id.h> + +#include <ydb/library/accessor/accessor.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TStorageSharedBlobsManager { +private: + const TString StorageId; + const TTabletId SelfTabletId; + THashMap<TUnifiedBlobId, TTabletId> BorrowedBlobIds; // blobId -> owned by tabletId + TTabletsByBlob SharedBlobIds; // blobId -> shared with tabletIds + + bool CheckRemoveBlobId(const TTabletId tabletId, const TUnifiedBlobId& blobId, TBlobsCategories& blobs) const { + const THashSet<TTabletId>* shared = SharedBlobIds.Find(blobId); + bool doRemove = false; + if (shared) { + auto itTablet = shared->find(tabletId); + AFL_VERIFY(itTablet != shared->end()); + if (shared->size() == 1) { + doRemove = true; + } + blobs.AddSharing(tabletId, blobId); + } else { + doRemove = true; + } + if (doRemove) { + auto it = BorrowedBlobIds.find(blobId); + if (it != BorrowedBlobIds.end()) { + AFL_VERIFY(it->second != tabletId); + blobs.AddBorrowed(it->second, blobId); + } else { + blobs.AddDirect(tabletId, blobId); + } + } + return doRemove; + } +public: + TStorageSharedBlobsManager(const TString& storageId, const TTabletId tabletId) + : StorageId(storageId) + , SelfTabletId(tabletId) + { + + } + + bool IsTrivialLinks() const { + return BorrowedBlobIds.empty() && SharedBlobIds.IsEmpty(); + } + TTabletId GetSelfTabletId() const { + return SelfTabletId; + } + + TBlobsCategories GetBlobCategories() const { + TBlobsCategories result(SelfTabletId); + for (auto&& i : BorrowedBlobIds) { + result.AddBorrowed(i.second, i.first); + } + for (auto i = SharedBlobIds.GetIterator(); i.IsValid(); ++i) { + result.AddSharing(i.GetTabletId(), i.GetBlobId()); + } + return result; + } + + TBlobsCategories BuildRemoveCategories(TTabletsByBlob&& blobs) const { + TBlobsCategories result(SelfTabletId); + for (auto it = blobs.GetIterator(); it.IsValid(); ++it) { + CheckRemoveBlobId(it.GetTabletId(), it.GetBlobId(), result); + } + return result; + } + + TBlobsCategories BuildStoreCategories(const THashSet<TUnifiedBlobId>& blobIds) const { + TBlobsCategories result(SelfTabletId); + for (auto&& i : blobIds) { + auto* tabletIds = SharedBlobIds.Find(i); + auto it = BorrowedBlobIds.find(i); + bool borrowed = false; + bool direct = false; + bool shared = false; + if (it != BorrowedBlobIds.end()) { + result.AddBorrowed(it->second, i); + borrowed = true; + } else if (!tabletIds) { + result.AddDirect(SelfTabletId, i); + direct = true; + } + if (tabletIds) { + for (auto&& t : *tabletIds) { + result.AddSharing(t, i); + shared = true; + } + } + AFL_VERIFY((borrowed ? 1 : 0) + (direct ? 1 : 0) + (shared ? 1 : 0) == 1)("b", borrowed)("d", direct)("s", shared); + } + return result; + } + + void RemoveSharedBlobsDB(NTabletFlatExecutor::TTransactionContext& txc, const TTabletsByBlob& blobIds); + + void RemoveSharedBlobs(const TTabletsByBlob& blobIds) { + for (auto i = blobIds.GetIterator(); i.IsValid(); ++i) { + AFL_VERIFY(SharedBlobIds.Remove(i.GetTabletId(), i.GetBlobId())); + } + } + + void WriteSharedBlobsDB(NTabletFlatExecutor::TTransactionContext& txc, const TTabletsByBlob& blobIds); + + [[nodiscard]] bool AddSharedBlobs(const TTabletsByBlob& blobIds) { + bool result = true; + for (auto i = blobIds.GetIterator(); i.IsValid(); ++i) { + if (!SharedBlobIds.Add(i.GetTabletId(), i.GetBlobId())) { + result = false; + } + } + return result; + } + + void WriteBorrowedBlobsDB(NTabletFlatExecutor::TTransactionContext& txc, const TTabletByBlob& blobIds); + + void AddBorrowedBlobs(const TTabletByBlob& blobIds) { + for (auto&& i : blobIds) { + auto infoInsert = BorrowedBlobIds.emplace(i.first, i.second); + if (!infoInsert.second) { + AFL_VERIFY(infoInsert.first->second == i.second)("before", infoInsert.first->second)("after", i.second); + } + } + } + + void CASBorrowedBlobsDB(NTabletFlatExecutor::TTransactionContext& txc, const TTabletId tabletIdFrom, const TTabletId tabletIdTo, const THashSet<TUnifiedBlobId>& blobIds); + + void CASBorrowedBlobs(const TTabletId tabletIdFrom, const TTabletId tabletIdTo, const THashSet<TUnifiedBlobId>& blobIds) { + for (auto&& i : blobIds) { + auto it = BorrowedBlobIds.find(i); + AFL_VERIFY(it != BorrowedBlobIds.end()); + AFL_VERIFY(it->second == tabletIdFrom || it->second == tabletIdTo); + if (it->second == SelfTabletId) { + BorrowedBlobIds.erase(it); + } else { + it->second = tabletIdTo; + } + } + } + + [[nodiscard]] bool UpsertSharedBlobOnLoad(const TUnifiedBlobId& blobId, const TTabletId tabletId) { + return SharedBlobIds.Add(tabletId, blobId); + } + + [[nodiscard]] bool UpsertBorrowedBlobOnLoad(const TUnifiedBlobId& blobId, const TTabletId ownerTabletId) { + return BorrowedBlobIds.emplace(blobId, ownerTabletId).second; + } + + void Clear() { + SharedBlobIds.Clear(); + BorrowedBlobIds.clear(); + } + + void OnTransactionExecuteAfterCleaning(const TBlobsCategories& removeTask, NTable::TDatabase& db); + void OnTransactionCompleteAfterCleaning(const TBlobsCategories& removeTask); +}; + +class TSharedBlobsManager { +private: + const TTabletId SelfTabletId; + THashMap<TString, std::shared_ptr<TStorageSharedBlobsManager>> Storages; +public: + TSharedBlobsManager(const TTabletId tabletId) + : SelfTabletId(tabletId) + { + + } + + bool IsTrivialLinks() const { + for (auto&& i : Storages) { + if (!i.second->IsTrivialLinks()) { + return false; + } + } + return true; + } + + THashMap<TString, TBlobsCategories> GetBlobCategories() const { + THashMap<TString, TBlobsCategories> result; + for (auto&& i : Storages) { + result.emplace(i.first, i.second->GetBlobCategories()); + } + return result; + } + + TTabletId GetSelfTabletId() const { + return SelfTabletId; + } + + void WriteSharedBlobsDB(NTabletFlatExecutor::TTransactionContext& txc, const THashMap<TString, TTabletsByBlob>& blobIds) { + for (auto&& i : blobIds) { + GetStorageManagerGuarantee(i.first)->WriteSharedBlobsDB(txc, i.second); + } + } + + void AddSharingBlobs(const THashMap<TString, TTabletsByBlob>& blobIds) { + for (auto&& i : blobIds) { + Y_UNUSED(GetStorageManagerGuarantee(i.first)->AddSharedBlobs(i.second)); + } + } + + void WriteBorrowedBlobsDB(NTabletFlatExecutor::TTransactionContext& txc, const THashMap<TString, TTabletByBlob>& blobIds) { + for (auto&& i : blobIds) { + GetStorageManagerGuarantee(i.first)->WriteBorrowedBlobsDB(txc, i.second); + } + } + + void AddBorrowedBlobs(const THashMap<TString, TTabletByBlob>& blobIds) { + for (auto&& i : blobIds) { + GetStorageManagerGuarantee(i.first)->AddBorrowedBlobs(i.second); + } + } + + std::shared_ptr<TStorageSharedBlobsManager> GetStorageManagerOptional(const TString& storageId) const { + auto it = Storages.find(storageId); + if (it == Storages.end()) { + return nullptr; + } + return it->second; + } + + std::shared_ptr<TStorageSharedBlobsManager> GetStorageManagerVerified(const TString& storageId) const { + auto it = Storages.find(storageId); + AFL_VERIFY(it != Storages.end())("storage_id", storageId); + return it->second; + } + + std::shared_ptr<TStorageSharedBlobsManager> GetStorageManagerGuarantee(const TString& storageId) { + auto it = Storages.find(storageId); + if (it == Storages.end()) { + it = Storages.emplace(storageId, std::make_shared<TStorageSharedBlobsManager>(storageId, SelfTabletId)).first; + } + return it->second; + } + + bool LoadIdempotency(NTable::TDatabase& database); +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/manager/ya.make b/ydb/core/tx/columnshard/data_sharing/manager/ya.make new file mode 100644 index 000000000000..e26356c94a55 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/manager/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +SRCS( + sessions.cpp + shared_blobs.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/source/session + ydb/core/tx/columnshard/data_sharing/destination/session +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/modification/events/change_owning.cpp b/ydb/core/tx/columnshard/data_sharing/modification/events/change_owning.cpp new file mode 100644 index 000000000000..849fa635eac3 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/modification/events/change_owning.cpp @@ -0,0 +1,13 @@ +#include "change_owning.h" +#include <ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.h> + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +TEvApplyLinksModification::TEvApplyLinksModification(const TTabletId initiatorTabletId, const TString& sessionId, const ui64 packIdx, const TTaskForTablet& task) { + Record.SetInitiatorTabletId((ui64)initiatorTabletId); + Record.SetSessionId(sessionId); + Record.SetPackIdx(packIdx); + *Record.MutableTask() = task.SerializeToProto(); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/modification/events/change_owning.h b/ydb/core/tx/columnshard/data_sharing/modification/events/change_owning.h new file mode 100644 index 000000000000..5ed6f02d62d4 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/modification/events/change_owning.h @@ -0,0 +1,30 @@ +#pragma once +#include <ydb/library/actors/core/event_pb.h> +#include <ydb/core/tx/columnshard/data_sharing/protos/events.pb.h> +#include <ydb/core/tx/columnshard/columnshard.h> +#include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/common/tablet_id.h> + +namespace NKikimr::NOlap::NDataSharing { +class TTaskForTablet; +} + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +struct TEvApplyLinksModification: public NActors::TEventPB<TEvApplyLinksModification, NKikimrColumnShardDataSharingProto::TEvApplyLinksModification, TEvColumnShard::EvApplyLinksModification> { + TEvApplyLinksModification() = default; + + TEvApplyLinksModification(const TTabletId initiatorTabletId, const TString& sessionId, const ui64 packIdx, const TTaskForTablet& task); +}; + +struct TEvApplyLinksModificationFinished: public NActors::TEventPB<TEvApplyLinksModificationFinished, + NKikimrColumnShardDataSharingProto::TEvApplyLinksModificationFinished, TEvColumnShard::EvApplyLinksModificationFinished> { + TEvApplyLinksModificationFinished() = default; + TEvApplyLinksModificationFinished(const TTabletId modifiedTabletId, const TString& sessionId, const ui64 packIdx) { + Record.SetSessionId(sessionId); + Record.SetModifiedTabletId((ui64)modifiedTabletId); + Record.SetPackIdx(packIdx); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/modification/events/ya.make b/ydb/core/tx/columnshard/data_sharing/modification/events/ya.make new file mode 100644 index 000000000000..0b800c5b7d67 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/modification/events/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + change_owning.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/blobs_action/protos + ydb/core/tx/columnshard/data_sharing/protos + ydb/library/actors/core + ydb/core/tx/datashard +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.cpp b/ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.cpp new file mode 100644 index 000000000000..3633406093f1 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.cpp @@ -0,0 +1,43 @@ +#include "modification.h" +#include <ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h> +#include <ydb/core/tx/columnshard/data_sharing/modification/transactions/tx_change_blobs_owning.h> + +namespace NKikimr::NOlap::NDataSharing { + +NKikimr::TConclusion<std::unique_ptr<NKikimr::NTabletFlatExecutor::ITransaction>> TTaskForTablet::BuildModificationTransaction(NColumnShard::TColumnShard* self, const TTabletId initiator, const TString& sessionId, const ui64 packIdx, const std::shared_ptr<TTaskForTablet>& selfPtr) { + return std::unique_ptr<NTabletFlatExecutor::ITransaction>(new TTxApplyLinksModification(self, selfPtr, sessionId, initiator, packIdx)); +} + +void TTaskForTablet::ApplyForDB(NTabletFlatExecutor::TTransactionContext& txc, const std::shared_ptr<TSharedBlobsManager>& manager) const { + for (auto&& i : TasksByStorage) { + auto storageManager = manager->GetStorageManagerVerified(i.first); + i.second.ApplyForDB(txc, storageManager); + } +} + +void TTaskForTablet::ApplyForRuntime(const std::shared_ptr<TSharedBlobsManager>& manager) const { + for (auto&& i : TasksByStorage) { + auto storageManager = manager->GetStorageManagerVerified(i.first); + i.second.ApplyForRuntime(storageManager); + } +} + +void TStorageTabletTask::ApplyForDB(NTabletFlatExecutor::TTransactionContext& txc, const std::shared_ptr<TStorageSharedBlobsManager>& manager) const { + for (auto&& i : RemapOwner) { + manager->CASBorrowedBlobsDB(txc, i.second.GetFrom(), i.second.GetTo(), {i.first}); + } + manager->WriteBorrowedBlobsDB(txc, InitOwner); + manager->WriteSharedBlobsDB(txc, AddSharingLinks); + manager->RemoveSharedBlobsDB(txc, RemoveSharingLinks); +} + +void TStorageTabletTask::ApplyForRuntime(const std::shared_ptr<TStorageSharedBlobsManager>& manager) const { + for (auto&& i : RemapOwner) { + manager->CASBorrowedBlobs(i.second.GetFrom(), i.second.GetTo(), {i.first}); + } + manager->AddBorrowedBlobs(InitOwner); + Y_UNUSED(manager->AddSharedBlobs(AddSharingLinks)); + manager->RemoveSharedBlobs(RemoveSharingLinks); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.h b/ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.h new file mode 100644 index 000000000000..4f5de2c0b38b --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.h @@ -0,0 +1,364 @@ +#pragma once +#include <ydb/core/tx/columnshard/common/tablet_id.h> + +#include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/blob_set.h> +#include <ydb/core/tx/columnshard/data_sharing/common/session/common.h> +#include <ydb/core/tx/columnshard/data_sharing/initiator/controller/abstract.h> +#include <ydb/core/tx/columnshard/data_sharing/protos/links.pb.h> +#include <ydb/library/conclusion/result.h> + +namespace NKikimr::NColumnShard { +class TColumnShard; +} + +namespace NKikimr::NOlap { +class TColumnEngineForLogs; +} + +namespace NKikimr::NOlap::NDataSharing { + +class TStorageSharedBlobsManager; +class TSharedBlobsManager; + +namespace NEvents { +class TPathIdData; +} + +class TBlobOwnerRemap { +private: + YDB_READONLY_DEF(TTabletId, From); + YDB_READONLY_DEF(TTabletId, To); +public: + TBlobOwnerRemap(const TTabletId from, const TTabletId to) + : From(from) + , To(to) { + + } + + bool operator==(const TBlobOwnerRemap& item) const { + return From == item.From && To == item.To; + } +}; + +class TStorageTabletTask { +private: + TTabletId TabletId; + TString StorageId; + THashMap<TUnifiedBlobId, TBlobOwnerRemap> RemapOwner; + TTabletByBlob InitOwner; + TTabletsByBlob AddSharingLinks; + TTabletsByBlob RemoveSharingLinks; +public: + TStorageTabletTask(const TString& storageId, const TTabletId tabletId) + : TabletId(tabletId) + , StorageId(storageId) { + + } + + NKikimrColumnShardDataSharingProto::TStorageTabletTask SerializeToProto() const { + NKikimrColumnShardDataSharingProto::TStorageTabletTask result; + result.SetTabletId((ui64)TabletId); + result.SetStorageId(StorageId); + *result.MutableInitOwner() = InitOwner.SerializeToProto(); + *result.MutableAddSharingLinks() = AddSharingLinks.SerializeToProto(); + *result.MutableRemoveSharingLinks() = RemoveSharingLinks.SerializeToProto(); + + for (auto&& i : RemapOwner) { + auto* remapProto = result.AddRemapOwner(); + remapProto->SetBlobId(i.first.ToStringNew()); + remapProto->SetFrom((ui64)i.second.GetFrom()); + remapProto->SetTo((ui64)i.second.GetTo()); + } + + return result; + } + + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TStorageTabletTask& proto) { + StorageId = proto.GetStorageId(); + if (!StorageId) { + return TConclusionStatus::Fail("empty storage id"); + } + TabletId = (TTabletId)proto.GetTabletId(); + if (!(ui64)TabletId) { + return TConclusionStatus::Fail("empty tablet id for storage task"); + } + { + auto parse = InitOwner.DeserializeFromProto(proto.GetInitOwner()); + if (!parse) { + return parse; + } + } + { + auto parse = AddSharingLinks.DeserializeFromProto(proto.GetAddSharingLinks()); + if (!parse) { + return parse; + } + } + { + auto parse = RemoveSharingLinks.DeserializeFromProto(proto.GetRemoveSharingLinks()); + if (!parse) { + return parse; + } + } + for (auto&& i : proto.GetRemapOwner()) { + auto parse = TUnifiedBlobId::BuildFromString(i.GetBlobId(), nullptr); + if (!parse) { + return parse; + } + RemapOwner.emplace(*parse, TBlobOwnerRemap((TTabletId)i.GetFrom(), (TTabletId)i.GetTo())); + } + return TConclusionStatus::Success(); + } + + void ApplyForDB(NTabletFlatExecutor::TTransactionContext& txc, const std::shared_ptr<TStorageSharedBlobsManager>& manager) const; + + void ApplyForRuntime(const std::shared_ptr<TStorageSharedBlobsManager>& manager) const; + + const TString GetStorageId() const { + return StorageId; + } + + void AddRemapOwner(const TUnifiedBlobId& blobId, const TTabletId from, const TTabletId to) { +// AFL_VERIFY(to != TabletId); + AFL_VERIFY(RemapOwner.emplace(blobId, TBlobOwnerRemap(from, to)).second); + } + + void AddInitOwner(const TUnifiedBlobId& blobId, const TTabletId to) { +// AFL_VERIFY(to != TabletId); + AFL_VERIFY(InitOwner->emplace(blobId, to).second); + } + + void AddLink(const TUnifiedBlobId& blobId, const TTabletId tabletId) { +// AFL_VERIFY(tabletId != TabletId); + AFL_VERIFY(AddSharingLinks.Add(tabletId, blobId)); + } + + void RemoveLink(const TUnifiedBlobId& blobId, const TTabletId tabletId) { + AFL_VERIFY(RemoveSharingLinks.Add(tabletId, blobId)); + } + + void Merge(const TStorageTabletTask& from) { + AFL_VERIFY(TabletId == from.TabletId); + for (auto&& i : from.InitOwner) { + auto info = InitOwner->emplace(i.first, i.second); + if (!info.second) { + AFL_VERIFY(info.first->second == i.second); + } + } + for (auto&& i : from.RemapOwner) { + auto info = RemapOwner.emplace(i.first, i.second); + if (!info.second) { + AFL_VERIFY(info.first->second == i.second); + } + } + AddSharingLinks.Add(from.AddSharingLinks); + RemoveSharingLinks.Add(from.RemoveSharingLinks); + } +}; + +class TTaskForTablet { +private: + YDB_READONLY(TTabletId, TabletId, (TTabletId)0); + THashMap<TString, TStorageTabletTask> TasksByStorage; +public: + TTaskForTablet(const TTabletId tabletId) + : TabletId(tabletId) + { + } + + void Merge(const TTaskForTablet& from) { + for (auto&& i : from.TasksByStorage) { + auto it = TasksByStorage.find(i.first); + if (it == TasksByStorage.end()) { + TasksByStorage.emplace(i.first, i.second); + } else { + it->second.Merge(i.second); + } + } + } + + void ApplyForDB(NTabletFlatExecutor::TTransactionContext& txc, const std::shared_ptr<TSharedBlobsManager>& manager) const; + + void ApplyForRuntime(const std::shared_ptr<TSharedBlobsManager>& manager) const; + + void AddStorage(TStorageTabletTask&& info) { + auto storageId = info.GetStorageId(); + TasksByStorage.emplace(storageId, std::move(info)); + } + + const TStorageTabletTask* GetStorageTasksOptional(const TString& storageId) const { + auto it = TasksByStorage.find(storageId); + if (it == TasksByStorage.end()) { + return nullptr; + } + return &it->second; + } + + const TStorageTabletTask& GetStorageTasksGuarantee(const TString& storageId) { + auto it = TasksByStorage.find(storageId); + if (it == TasksByStorage.end()) { + it = TasksByStorage.emplace(storageId, TStorageTabletTask(storageId, TabletId)).first; + } + return it->second; + } + + NKikimrColumnShardDataSharingProto::TTaskForTablet SerializeToProto() const { + NKikimrColumnShardDataSharingProto::TTaskForTablet result; + for (auto&& i : TasksByStorage) { + *result.AddTasksByStorage() = i.second.SerializeToProto(); + } + return result; + } + + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TTaskForTablet& proto) { + for (auto&& i : proto.GetTasksByStorage()) { + TStorageTabletTask sTask("", TTabletId(0)); + auto parse = sTask.DeserializeFromProto(i); + if (!parse) { + return parse; + } + const TString storageId = sTask.GetStorageId(); + AFL_VERIFY(TasksByStorage.emplace(storageId, std::move(sTask)).second); + } + return TConclusionStatus::Success(); + } + + TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> BuildModificationTransaction(NColumnShard::TColumnShard* self, const TTabletId initiator, + const TString& sessionId, const ui64 packIdx, const std::shared_ptr<TTaskForTablet>& selfPtr); + +}; + +class TBlobSharing { +private: + const TString StorageId; + TUnifiedBlobId BlobId; + std::optional<TTabletId> Borrowed; + THashSet<TTabletId> Shared; +public: + TBlobSharing(const TString& storageId, const TUnifiedBlobId& blobId) + : StorageId(storageId) + , BlobId(blobId) + { + + } + void AddShared(const TTabletId tabletId) { + AFL_VERIFY(Shared.emplace(tabletId).second); + } + void AddBorrowed(const TTabletId tabletId) { + AFL_VERIFY(!Borrowed); + Borrowed = tabletId; + } + + THashMap<TTabletId, TStorageTabletTask> BuildTabletTasksOnCopy(const TTransferContext& context, const TTabletId selfTabletId, const TString& storageId) const { + auto toTabletId = context.GetDestinationTabletId(); + THashMap<TTabletId, TStorageTabletTask> result; + const TTabletId ownerTabletId = Borrowed.value_or(selfTabletId); + if (Borrowed) { + AFL_VERIFY(Shared.empty()); + } + if (ownerTabletId != toTabletId) { + { + TStorageTabletTask task(storageId, ownerTabletId); + task.AddLink(BlobId, toTabletId); + task.AddLink(BlobId, selfTabletId); + AFL_VERIFY(result.emplace(ownerTabletId, std::move(task)).second); + } + { + TStorageTabletTask task(storageId, toTabletId); + task.AddInitOwner(BlobId, ownerTabletId); + AFL_VERIFY(result.emplace(toTabletId, std::move(task)).second); + } + } + return result; + } + + THashMap<TTabletId, TStorageTabletTask> BuildTabletTasksOnMove(const TTransferContext& context, const TTabletId selfTabletId, const TString& storageId) const { + THashMap<TTabletId, TStorageTabletTask> result; + auto& movedTabletId = context.GetSourceTabletIds(); + auto toTabletId = context.GetDestinationTabletId(); + if (Borrowed) { + AFL_VERIFY(Shared.empty()); + if (movedTabletId.contains(*Borrowed)) { + { + TStorageTabletTask task(storageId, toTabletId); + task.AddLink(BlobId, selfTabletId); + task.AddLink(BlobId, toTabletId); + AFL_VERIFY(result.emplace(toTabletId, std::move(task)).second); + } + { + TStorageTabletTask task(storageId, selfTabletId); + task.AddRemapOwner(BlobId, *Borrowed, toTabletId); + AFL_VERIFY(result.emplace(selfTabletId, std::move(task)).second); + } + { + TStorageTabletTask task(storageId, *Borrowed); + task.RemoveLink(BlobId, selfTabletId); + AFL_VERIFY(result.emplace(*Borrowed, std::move(task)).second); + } + } else if (toTabletId == *Borrowed) { + } else { + { + TStorageTabletTask task(storageId, *Borrowed); + task.AddLink(BlobId, toTabletId); + AFL_VERIFY(result.emplace(*Borrowed, std::move(task)).second); + } + { + TStorageTabletTask task(storageId, toTabletId); + task.AddInitOwner(BlobId, *Borrowed); + AFL_VERIFY(result.emplace(toTabletId, std::move(task)).second); + } + } + } else { + for (auto&& i : Shared) { + if (movedTabletId.contains(i) && i != selfTabletId) { + continue; + } + + if (i != selfTabletId) { + TStorageTabletTask task(StorageId, i); + task.AddRemapOwner(BlobId, selfTabletId, toTabletId); + AFL_VERIFY(result.emplace(i, std::move(task)).second); + } + + { + TStorageTabletTask task(StorageId, selfTabletId); + task.RemoveLink(BlobId, i); + auto info = result.emplace(selfTabletId, task); + if (!info.second) { + info.first->second.Merge(task); + } + } + + { + TStorageTabletTask task(StorageId, toTabletId); + task.AddLink(BlobId, i); + auto info = result.emplace(toTabletId, task); + if (!info.second) { + info.first->second.Merge(task); + } + } + } + { + TStorageTabletTask task(storageId, toTabletId); + task.AddLink(BlobId, selfTabletId); + task.AddLink(BlobId, toTabletId); + auto info = result.emplace(toTabletId, task); + if (!info.second) { + info.first->second.Merge(task); + } + } + { + TStorageTabletTask task(storageId, selfTabletId); + task.AddInitOwner(BlobId, toTabletId); + auto info = result.emplace(selfTabletId, task); + if (!info.second) { + info.first->second.Merge(task); + } + } + } + return result; + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/modification/tasks/ya.make b/ydb/core/tx/columnshard/data_sharing/modification/tasks/ya.make new file mode 100644 index 000000000000..f42b0f0c234e --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/modification/tasks/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + modification.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/initiator/controller + ydb/core/tx/columnshard/data_sharing/common/session + ydb/core/tx/columnshard/data_sharing/common/transactions + ydb/core/tx/columnshard/data_sharing/destination/transactions +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/modification/transactions/tx_change_blobs_owning.cpp b/ydb/core/tx/columnshard/data_sharing/modification/transactions/tx_change_blobs_owning.cpp new file mode 100644 index 000000000000..d10cac2c1e6b --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/modification/transactions/tx_change_blobs_owning.cpp @@ -0,0 +1,22 @@ +#include "tx_change_blobs_owning.h" +#include <ydb/core/tx/columnshard/data_sharing/modification/events/change_owning.h> +#include <ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.h> + +namespace NKikimr::NOlap::NDataSharing { + +bool TTxApplyLinksModification::DoExecute(TTransactionContext& txc, const TActorContext&) { + NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", Self->TabletID())("tx_state", "execute"); + Task->ApplyForDB(txc, Self->GetStoragesManager()->GetSharedBlobsManager()); + return true; +} + +void TTxApplyLinksModification::DoComplete(const TActorContext& /*ctx*/) { + NActors::TLogContextGuard logGuard = NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tablet_id", Self->TabletID())("tx_state", "complete"); + Task->ApplyForRuntime(Self->GetStoragesManager()->GetSharedBlobsManager()); + + auto ev = std::make_unique<NOlap::NDataSharing::NEvents::TEvApplyLinksModificationFinished>(Task->GetTabletId(), SessionId, PackIdx); + NActors::TActivationContext::AsActorContext().Send(MakePipePeNodeCacheID(false), + new TEvPipeCache::TEvForward(ev.release(), (ui64)InitiatorTabletId, true), IEventHandle::FlagTrackDelivery); +} + +} diff --git a/ydb/core/tx/columnshard/data_sharing/modification/transactions/tx_change_blobs_owning.h b/ydb/core/tx/columnshard/data_sharing/modification/transactions/tx_change_blobs_owning.h new file mode 100644 index 000000000000..d32ae4504563 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/modification/transactions/tx_change_blobs_owning.h @@ -0,0 +1,34 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/engines/writer/indexed_blob_constructor.h> +#include <ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TTaskForTablet; + +class TTxApplyLinksModification: public TExtendedTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = TExtendedTransactionBase<NColumnShard::TColumnShard>; + std::shared_ptr<TTaskForTablet> Task; + const TTabletId InitiatorTabletId; + const TString SessionId; + const ui64 PackIdx; + bool DoExecute(TTransactionContext& txc, const TActorContext& ctx) override; + void DoComplete(const TActorContext& ctx) override; +public: + TTxApplyLinksModification(NColumnShard::TColumnShard* self, const std::shared_ptr<TTaskForTablet>& task, const TString& sessionId, const TTabletId initiatorTabletId, const ui64 packIdx) + : TBase(self) + , Task(task) + , InitiatorTabletId(initiatorTabletId) + , SessionId(sessionId) + , PackIdx(packIdx) + { + AFL_VERIFY(!!Task); + } + + TTxType GetTxType() const override { return NColumnShard::TXTYPE_DATA_SHARING_APPLY_LINKS_MODIFICATION; } +}; + + +} diff --git a/ydb/core/tx/columnshard/data_sharing/modification/transactions/ya.make b/ydb/core/tx/columnshard/data_sharing/modification/transactions/ya.make new file mode 100644 index 000000000000..39afa046110c --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/modification/transactions/ya.make @@ -0,0 +1,17 @@ +LIBRARY() + +SRCS( + tx_change_blobs_owning.cpp +) + +PEERDIR( + ydb/core/tablet_flat + ydb/core/tx/tiering + ydb/services/metadata/abstract + ydb/core/tx/columnshard/data_sharing/protos + ydb/core/tx/columnshard/blobs_action/protos + ydb/core/base + ydb/core/tx/tiering +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/modification/ya.make b/ydb/core/tx/columnshard/data_sharing/modification/ya.make new file mode 100644 index 000000000000..81c688ef432e --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/modification/ya.make @@ -0,0 +1,9 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/modification/tasks + ydb/core/tx/columnshard/data_sharing/modification/transactions + ydb/core/tx/columnshard/data_sharing/modification/events +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/protos/data.proto b/ydb/core/tx/columnshard/data_sharing/protos/data.proto new file mode 100644 index 000000000000..f59d6e7b3d7d --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/protos/data.proto @@ -0,0 +1,41 @@ +import "ydb/core/tx/columnshard/common/protos/blob_range.proto"; +import "ydb/core/tx/columnshard/common/protos/snapshot.proto"; +import "ydb/core/protos/tx_columnshard.proto"; + +package NKikimrColumnShardDataSharingProto; + +message TColumnRecord { + optional uint32 ColumnId = 1; + optional uint32 ChunkIdx = 2; + optional NKikimrColumnShardProto.TBlobRangeLink16 BlobRange = 3; + optional NKikimrTxColumnShard.TIndexColumnMeta Meta = 4; +} + +message TIndexChunk { + optional uint32 IndexId = 1; + optional uint32 ChunkIdx = 2; + optional NKikimrColumnShardProto.TBlobRangeLink16 BlobRange = 3; + + message TMeta { + optional uint32 RecordsCount = 1; + optional uint32 RawBytes = 2; + } + optional TMeta Meta = 4; +} + +message TPortionInfo { + optional uint64 PathId = 1; + optional uint64 PortionId = 2; + optional NKikimrColumnShardProto.TSnapshot MinSnapshotDeprecated = 3; + optional NKikimrColumnShardProto.TSnapshot RemoveSnapshot = 4; + optional NKikimrTxColumnShard.TIndexPortionMeta Meta = 5; + repeated TColumnRecord Records = 6; + repeated TIndexChunk Indexes = 7; + repeated NKikimrColumnShardProto.TUnifiedBlobId BlobIds = 8; + optional uint64 SchemaVersion = 9; +} + +message TPathIdData { + optional uint64 PathId = 1; + repeated TPortionInfo Portions = 2; +} diff --git a/ydb/core/tx/columnshard/data_sharing/protos/events.proto b/ydb/core/tx/columnshard/data_sharing/protos/events.proto new file mode 100644 index 000000000000..7f60cea111e0 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/protos/events.proto @@ -0,0 +1,67 @@ +import "ydb/library/actors/protos/actors.proto"; +import "ydb/core/tx/columnshard/data_sharing/protos/links.proto"; +import "ydb/core/tx/columnshard/data_sharing/protos/data.proto"; +import "ydb/core/tx/columnshard/data_sharing/protos/sessions.proto"; +import "ydb/core/tx/columnshard/data_sharing/protos/initiator.proto"; + +package NKikimrColumnShardDataSharingProto; + +message TEvProposeFromInitiator { + optional TDestinationSession Session = 1; +} + +message TEvConfirmFromInitiator { + optional string SessionId = 1; +} + +message TEvAckFinishFromInitiator { + optional string SessionId = 1; +} + +message TEvStartToSource { + optional TSourceSession Session = 1; +} + +message TEvSendDataFromSource { + optional string SessionId = 1; + optional uint64 PackIdx = 2; + repeated TPathIdData PathIdData = 3; + optional uint64 SourceTabletId = 4; +} + +message TEvAckDataToSource { + optional uint64 PackIdx = 1; + optional string SessionId = 2; +} + +message TEvFinishedFromSource { + optional string SessionId = 1; + optional uint64 SourceTabletId = 2; +} + +message TEvAckFinishToSource { + optional string SessionId = 1; +} + +message TEvCheckStatusFromInitiator { + optional string SessionId = 1; +} + +message TEvCheckStatusResult { + optional string ClassName = 1; + optional string SessionId = 2; + optional TInitiator.TStatus Status = 3; +} + +message TEvApplyLinksModification { + optional uint64 InitiatorTabletId = 1; + optional string SessionId = 2; + optional uint64 PackIdx = 3; + optional TTaskForTablet Task = 4; +} + +message TEvApplyLinksModificationFinished { + optional uint64 ModifiedTabletId = 1; + optional string SessionId = 2; + optional uint64 PackIdx = 3; +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/protos/initiator.proto b/ydb/core/tx/columnshard/data_sharing/protos/initiator.proto new file mode 100644 index 000000000000..8f84e125473c --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/protos/initiator.proto @@ -0,0 +1,38 @@ +package NKikimrColumnShardDataSharingProto; + +message TInitiator { + message TController { + optional string ClassName = 1; + + message TTest { + } + + oneof Implementation { + TTest Test = 40; + } + } + + message TStatus { + message TInProgress { + optional uint32 PortionsCount = 1; + optional uint32 PortionsReady = 2; + } + + message TStartFailed { + optional string ErrorMessage = 1; + } + + message TNotFound { + optional string ErrorMessage = 1; + } + + optional string ClassName = 1; + optional string SessionId = 2; + + oneof Implementation { + TInProgress InProgress = 40; + TStartFailed StartFailed = 41; + TNotFound NotFound = 42; + } + } +} diff --git a/ydb/core/tx/columnshard/data_sharing/protos/links.proto b/ydb/core/tx/columnshard/data_sharing/protos/links.proto new file mode 100644 index 000000000000..26dee494fbc0 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/protos/links.proto @@ -0,0 +1,23 @@ +import "ydb/core/tx/columnshard/blobs_action/protos/blobs.proto"; + +package NKikimrColumnShardDataSharingProto; + +message TBlobOwnerRemap { + optional string BlobId = 1; + optional uint64 From = 2; + optional uint64 To = 3; +} + +message TStorageTabletTask { + optional uint64 TabletId = 1; + optional string StorageId = 2; + repeated TBlobOwnerRemap RemapOwner = 3; + optional NKikimrColumnShardBlobOperationsProto.TTabletByBlob InitOwner = 4; + optional NKikimrColumnShardBlobOperationsProto.TTabletsByBlob AddSharingLinks= 5; + optional NKikimrColumnShardBlobOperationsProto.TTabletsByBlob RemoveSharingLinks = 6; +} + +message TTaskForTablet { + optional uint64 TabletId = 1; + repeated TStorageTabletTask TasksByStorage = 2; +} diff --git a/ydb/core/tx/columnshard/data_sharing/protos/sessions.proto b/ydb/core/tx/columnshard/data_sharing/protos/sessions.proto new file mode 100644 index 000000000000..9ae73bf26138 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/protos/sessions.proto @@ -0,0 +1,59 @@ +package NKikimrColumnShardDataSharingProto; + +import "ydb/core/tx/columnshard/common/protos/snapshot.proto"; +import "ydb/core/tx/columnshard/data_sharing/protos/initiator.proto"; + +message TDestinationRemapIds { + optional uint64 SourcePathId = 1; + optional uint64 DestPathId = 2; +} + +message TTransferContext { + optional uint64 DestinationTabletId = 1; + repeated uint64 SourceTabletIds = 2; + optional bool Moving = 3[default = false]; + optional NKikimrColumnShardProto.TSnapshot SnapshotBarrier = 4; +} + +message TDestinationSession { + optional string SessionId = 1; + repeated TDestinationRemapIds PathIds = 3; + optional TInitiator.TController InitiatorController = 4; + optional TTransferContext TransferContext = 5; + + message TSourceCursor { + optional uint64 TabletId = 1; + optional uint64 PackIdx = 2; + optional bool Finished = 3; + } + message TFullCursor { + repeated TSourceCursor SourceCursors = 1; + optional bool ConfirmedFlag = 2 [default = false]; + } +} + +message TSourceSession { + optional string SessionId = 1; + repeated uint64 PathIds = 3; + optional uint64 DestinationTabletId = 4; + optional TTransferContext TransferContext = 5; + + message TCursorDynamic { + optional uint64 StartPathId = 1; + optional uint64 StartPortionId = 2; + optional uint64 NextPathId = 3; + optional uint64 NextPortionId = 4; + optional uint32 PackIdx = 5; + optional uint32 AckReceivedForPackIdx = 6[default = 0]; + repeated uint64 LinksModifiedTablets = 7; + } + + message TPathPortionsHash { + optional uint64 PathId = 1; + optional string Hash = 2; + } + + message TCursorStatic { + repeated TPathPortionsHash PathHashes = 7; + } +} diff --git a/ydb/core/tx/columnshard/data_sharing/protos/transfer.proto b/ydb/core/tx/columnshard/data_sharing/protos/transfer.proto new file mode 100644 index 000000000000..8d40ba1abfc1 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/protos/transfer.proto @@ -0,0 +1,19 @@ +import "ydb/library/actors/protos/actors.proto"; + +package NKikimrColumnShardDataSharingProto; + +message TEvSendDataFromSource { + optional NActorsProto.TActorId SourceActorId = 1; + optional string SharingId = 2; + repeated TPathIdData DataByPathId = 3; +} + +message TEvAckDataToSource { + optional NActorsProto.TActorId DestActorId = 1; + optional string SharingId = 2; +} + +message TEvFinishedFromSource { + optional NActorsProto.TActorId SourceActorId = 1; + optional string SharingId = 2; +} diff --git a/ydb/core/tx/columnshard/data_sharing/protos/ya.make b/ydb/core/tx/columnshard/data_sharing/protos/ya.make new file mode 100644 index 000000000000..f500be540e25 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/protos/ya.make @@ -0,0 +1,19 @@ +PROTO_LIBRARY() + +SRCS( + data.proto + events.proto + sessions.proto + initiator.proto + links.proto +) + +PEERDIR( + ydb/core/tx/columnshard/common/protos + ydb/library/actors/protos + ydb/core/tx/columnshard/blobs_action/protos + ydb/core/protos + +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/source/events/control.cpp b/ydb/core/tx/columnshard/data_sharing/source/events/control.cpp new file mode 100644 index 000000000000..d8decd48b8fd --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/events/control.cpp @@ -0,0 +1,10 @@ +#include "control.h" +#include <ydb/core/tx/columnshard/data_sharing/source/session/source.h> + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +TEvStartToSource::TEvStartToSource(const TSourceSession& session) { + *Record.MutableSession() = session.SerializeDataToProto(); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/events/control.h b/ydb/core/tx/columnshard/data_sharing/source/events/control.h new file mode 100644 index 000000000000..73438ac41ed8 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/events/control.h @@ -0,0 +1,18 @@ +#pragma once +#include <ydb/library/actors/core/event_pb.h> +#include <ydb/core/tx/columnshard/columnshard.h> +#include <ydb/core/tx/columnshard/data_sharing/protos/events.pb.h> + +namespace NKikimr::NOlap::NDataSharing { +class TSourceSession; +} + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +struct TEvStartToSource: public NActors::TEventPB<TEvStartToSource, NKikimrColumnShardDataSharingProto::TEvStartToSource, TEvColumnShard::EvDataSharingStartToSource> { + TEvStartToSource() = default; + + TEvStartToSource(const TSourceSession& session); +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/events/transfer.cpp b/ydb/core/tx/columnshard/data_sharing/source/events/transfer.cpp new file mode 100644 index 000000000000..8e3f7cc3864a --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/events/transfer.cpp @@ -0,0 +1,5 @@ +#include "transfer.h" + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/events/transfer.h b/ydb/core/tx/columnshard/data_sharing/source/events/transfer.h new file mode 100644 index 000000000000..e10dc1e43ada --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/events/transfer.h @@ -0,0 +1,25 @@ +#pragma once +#include <ydb/core/tx/columnshard/data_sharing/protos/events.pb.h> +#include <ydb/library/actors/core/event_pb.h> +#include <ydb/core/tx/columnshard/columnshard.h> + +namespace NKikimr::NOlap::NDataSharing::NEvents { + +struct TEvAckDataToSource: public NActors::TEventPB<TEvAckDataToSource, NKikimrColumnShardDataSharingProto::TEvAckDataToSource, TEvColumnShard::EvDataSharingAckDataToSource> { + TEvAckDataToSource() = default; + + TEvAckDataToSource(const TString& sessionId, const ui32 packIdx) { + Record.SetSessionId(sessionId); + Record.SetPackIdx(packIdx); + } +}; + +struct TEvAckFinishToSource: public NActors::TEventPB<TEvAckFinishToSource, NKikimrColumnShardDataSharingProto::TEvAckFinishToSource, TEvColumnShard::EvDataSharingAckFinishToSource> { + TEvAckFinishToSource() = default; + + TEvAckFinishToSource(const TString& sessionId) { + Record.SetSessionId(sessionId); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/events/ya.make b/ydb/core/tx/columnshard/data_sharing/source/events/ya.make new file mode 100644 index 000000000000..d9f1fb7017de --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/events/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +SRCS( + transfer.cpp + control.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/source/session +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/source/session/cursor.cpp b/ydb/core/tx/columnshard/data_sharing/source/session/cursor.cpp new file mode 100644 index 000000000000..1ca8fac2ace7 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/session/cursor.cpp @@ -0,0 +1,181 @@ +#include "source.h" +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> +#include <ydb/core/tx/columnshard/data_sharing/destination/events/transfer.h> +#include <ydb/core/formats/arrow/hash/xx_hash.h> + +namespace NKikimr::NOlap::NDataSharing { + +void TSourceCursor::BuildSelection(const std::shared_ptr<TSharedBlobsManager>& sharedBlobsManager, const TVersionedIndex& index) { + THashMap<ui64, NEvents::TPathIdData> result; + auto itCurrentPath = PortionsForSend.find(StartPathId); + AFL_VERIFY(itCurrentPath != PortionsForSend.end()); + auto itPortion = itCurrentPath->second.find(StartPortionId); + AFL_VERIFY(itPortion != itCurrentPath->second.end()); + ui32 count = 0; + ui32 chunksCount = 0; + bool selectMore = true; + for (; itCurrentPath != PortionsForSend.end() && selectMore; ++itCurrentPath) { + std::vector<TPortionInfo> portions; + for (; itPortion != itCurrentPath->second.end(); ++itPortion) { + selectMore = (count < 10000 && chunksCount < 1000000); + if (!selectMore) { + NextPathId = itCurrentPath->first; + NextPortionId = itPortion->first; + } else { + portions.emplace_back(*itPortion->second); + chunksCount += portions.back().GetRecords().size(); + chunksCount += portions.back().GetIndexes().size(); + ++count; + } + } + if (portions.size()) { + NEvents::TPathIdData pathIdDataCurrent(itCurrentPath->first, portions); + result.emplace(itCurrentPath->first, pathIdDataCurrent); + } + } + if (selectMore) { + AFL_VERIFY(!NextPathId); + AFL_VERIFY(!NextPortionId); + } + + THashMap<TTabletId, TTaskForTablet> tabletTasksResult; + + for (auto&& i : result) { + THashMap<TTabletId, TTaskForTablet> tabletTasks = i.second.BuildLinkTabletTasks(sharedBlobsManager, SelfTabletId, TransferContext, index); + for (auto&& t : tabletTasks) { + auto it = tabletTasksResult.find(t.first); + if (it == tabletTasksResult.end()) { + tabletTasksResult.emplace(t.first, std::move(t.second)); + } else { + it->second.Merge(t.second); + } + } + } + + std::swap(Links, tabletTasksResult); + std::swap(Selected, result); +} + +bool TSourceCursor::Next(const std::shared_ptr<TSharedBlobsManager>& sharedBlobsManager, const TVersionedIndex& index) { + PreviousSelected = std::move(Selected); + LinksModifiedTablets.clear(); + Selected.clear(); + if (!NextPathId) { + AFL_VERIFY(!NextPortionId); + return false; + } else { + AFL_VERIFY(NextPortionId); + } + StartPathId = *NextPathId; + StartPortionId = *NextPortionId; + NextPathId = {}; + NextPortionId = {}; + ++PackIdx; + BuildSelection(sharedBlobsManager, index); + AFL_VERIFY(IsValid()); + return true; +} + +NKikimrColumnShardDataSharingProto::TSourceSession::TCursorDynamic TSourceCursor::SerializeDynamicToProto() const { + NKikimrColumnShardDataSharingProto::TSourceSession::TCursorDynamic result; + result.SetStartPathId(StartPathId); + result.SetStartPortionId(StartPortionId); + if (NextPathId) { + result.SetNextPathId(*NextPathId); + } + if (NextPortionId) { + result.SetNextPortionId(*NextPortionId); + } + result.SetPackIdx(PackIdx); + result.SetAckReceivedForPackIdx(AckReceivedForPackIdx); + for (auto&& t : LinksModifiedTablets) { + result.AddLinksModifiedTablets((ui64)t); + } + return result; +} + +NKikimrColumnShardDataSharingProto::TSourceSession::TCursorStatic TSourceCursor::SerializeStaticToProto() const { + NKikimrColumnShardDataSharingProto::TSourceSession::TCursorStatic result; + for (auto&& i : PathPortionHashes) { + auto* pathHash = result.AddPathHashes(); + pathHash->SetPathId(i.first); + pathHash->SetHash(i.second); + } + return result; +} + +NKikimr::TConclusionStatus TSourceCursor::DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TSourceSession::TCursorDynamic& proto, + const NKikimrColumnShardDataSharingProto::TSourceSession::TCursorStatic& protoStatic) { + StartPathId = proto.GetStartPathId(); + StartPortionId = proto.GetStartPortionId(); + PackIdx = proto.GetPackIdx(); + if (!PackIdx) { + return TConclusionStatus::Fail("Incorrect proto cursor PackIdx value: " + proto.DebugString()); + } + if (proto.HasNextPathId()) { + AFL_VERIFY(proto.GetNextPathId() == *NextPathId)("next_local", *NextPathId)("proto", proto.GetNextPathId()); + } + if (proto.HasNextPortionId()) { + AFL_VERIFY(proto.GetNextPortionId() == *NextPortionId)("next_local", *NextPortionId)("proto", proto.GetNextPortionId()); + } + if (proto.HasAckReceivedForPackIdx()) { + AckReceivedForPackIdx = proto.GetAckReceivedForPackIdx(); + } else { + AckReceivedForPackIdx = 0; + } + for (auto&& i : proto.GetLinksModifiedTablets()) { + LinksModifiedTablets.emplace((TTabletId)i); + } + for (auto&& i : protoStatic.GetPathHashes()) { + PathPortionHashes.emplace(i.GetPathId(), i.GetHash()); + } + AFL_VERIFY(PathPortionHashes.size()); + StaticSaved = true; + return TConclusionStatus::Success(); +} + +TSourceCursor::TSourceCursor(const TTabletId selfTabletId, const std::set<ui64>& pathIds, const TTransferContext transferContext) + : SelfTabletId(selfTabletId) + , TransferContext(transferContext) + , PathIds(pathIds) +{ +} + +bool TSourceCursor::Start(const std::shared_ptr<TSharedBlobsManager>& sharedBlobsManager, const THashMap<ui64, std::vector<std::shared_ptr<TPortionInfo>>>& portions, const TVersionedIndex& index) { + AFL_VERIFY(!IsStartedFlag); + std::map<ui64, std::map<ui32, std::shared_ptr<TPortionInfo>>> local; + std::vector<std::shared_ptr<TPortionInfo>> portionsLock; + NArrow::NHash::NXX64::TStreamStringHashCalcer hashCalcer(0); + for (auto&& i : portions) { + hashCalcer.Start(); + std::map<ui32, std::shared_ptr<TPortionInfo>> portionsMap; + for (auto&& p : i.second) { + const ui64 portionId = p->GetPortionId(); + hashCalcer.Update((ui8*)&portionId, sizeof(portionId)); + AFL_VERIFY(portionsMap.emplace(portionId, p).second); + } + auto it = PathPortionHashes.find(i.first); + const ui64 hash = hashCalcer.Finish(); + if (it == PathPortionHashes.end()) { + PathPortionHashes.emplace(i.first, ::ToString(hash)); + } else { + AFL_VERIFY(::ToString(hash) == it->second); + } + local.emplace(i.first, std::move(portionsMap)); + } + std::swap(PortionsForSend, local); + if (!StartPathId) { + AFL_VERIFY(PortionsForSend.size()); + AFL_VERIFY(PortionsForSend.begin()->second.size()); + + NextPathId = PortionsForSend.begin()->first; + NextPortionId = PortionsForSend.begin()->second.begin()->first; + AFL_VERIFY(Next(sharedBlobsManager, index)); + } else { + BuildSelection(sharedBlobsManager, index); + } + IsStartedFlag = true; + return true; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/session/cursor.h b/ydb/core/tx/columnshard/data_sharing/source/session/cursor.h new file mode 100644 index 000000000000..7e527758bf0a --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/session/cursor.h @@ -0,0 +1,108 @@ +#pragma once +#include <ydb/core/tx/columnshard/data_sharing/destination/events/transfer.h> +#include <ydb/core/tx/columnshard/data_sharing/modification/tasks/modification.h> +#include <ydb/core/tx/columnshard/data_locks/manager/manager.h> + +namespace NKikimr::NOlap { +class TColumnEngineForLogs; +class TVersionedIndex; +} + +namespace NKikimr::NOlap::NDataSharing { + +class TSharedBlobsManager; + +class TSourceCursor { +private: + std::map<ui64, std::map<ui32, std::shared_ptr<TPortionInfo>>> PortionsForSend; + THashMap<ui64, NEvents::TPathIdData> PreviousSelected; + THashMap<ui64, NEvents::TPathIdData> Selected; + THashMap<TTabletId, TTaskForTablet> Links; + YDB_READONLY(ui64, StartPathId, 0); + YDB_READONLY(ui64, StartPortionId, 0); + YDB_READONLY(ui64, PackIdx, 0); + TTabletId SelfTabletId; + TTransferContext TransferContext; + std::optional<ui64> NextPathId = 0; + std::optional<ui64> NextPortionId = 0; + THashSet<TTabletId> LinksModifiedTablets; + ui64 AckReceivedForPackIdx = 0; + std::set<ui64> PathIds; + THashMap<ui64, TString> PathPortionHashes; + bool IsStartedFlag = false; + YDB_ACCESSOR(bool, StaticSaved, false); + void BuildSelection(const std::shared_ptr<TSharedBlobsManager>& sharedBlobsManager, const TVersionedIndex& index); +public: + bool IsAckDataReceived() const { + return AckReceivedForPackIdx == PackIdx; + } + + bool IsStarted() const { + return IsStartedFlag; + } + + TConclusionStatus AckData(const ui64 packIdxReceived) { + AFL_VERIFY(packIdxReceived <= PackIdx); + if (packIdxReceived != PackIdx) { + return TConclusionStatus::Fail("incorrect packIdx received for AckData: " + ::ToString(packIdxReceived) + " but expected: " + ::ToString(PackIdx)); + } + AckReceivedForPackIdx = packIdxReceived; + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", "SourceAckData")("pack", PackIdx)("pack_ack", AckReceivedForPackIdx)("links_ready", LinksModifiedTablets.size())("links_waiting", Links.size()); + return TConclusionStatus::Success(); + } + + TConclusionStatus AckLinks(const TTabletId tabletId, const ui64 packIdxReceived) { + if (packIdxReceived != PackIdx) { + return TConclusionStatus::Fail("incorrect packIdx received for AckLinks: " + ::ToString(packIdxReceived) + " but expected: " + ::ToString(PackIdx)); + } + AFL_VERIFY(Links.contains(tabletId)); + if (LinksModifiedTablets.emplace(tabletId).second) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", "SourceAckData")("pack", PackIdx)("pack_ack", AckReceivedForPackIdx)("links_ready", LinksModifiedTablets.size())("links_waiting", Links.size()); + return TConclusionStatus::Success(); + } else { + return TConclusionStatus::Fail("AckLinks repeated table"); + } + } + + bool IsReadyForNext() const { + return AckReceivedForPackIdx == PackIdx && LinksModifiedTablets.size() == Links.size(); + } + + const THashSet<TTabletId>& GetLinksModifiedTablets() const { + return LinksModifiedTablets; + } + + void AddLinksModifiedTablet(const TTabletId tabletId) { + LinksModifiedTablets.emplace(tabletId); + } + + const THashMap<ui64, NEvents::TPathIdData> GetPreviousSelected() const { + return PreviousSelected; + } + + const THashMap<ui64, NEvents::TPathIdData>& GetSelected() const { + return Selected; + } + + const THashMap<TTabletId, TTaskForTablet>& GetLinks() const { + return Links; + } + + bool Next(const std::shared_ptr<TSharedBlobsManager>& sharedBlobsManager, const TVersionedIndex& index); + + bool IsValid() { + return Selected.size(); + } + + TSourceCursor(const TTabletId selfTabletId, const std::set<ui64>& pathIds, const TTransferContext transferContext); + + bool Start(const std::shared_ptr<TSharedBlobsManager>& sharedBlobsManager, const THashMap<ui64, std::vector<std::shared_ptr<TPortionInfo>>>& portions, const TVersionedIndex& index); + + NKikimrColumnShardDataSharingProto::TSourceSession::TCursorDynamic SerializeDynamicToProto() const; + NKikimrColumnShardDataSharingProto::TSourceSession::TCursorStatic SerializeStaticToProto() const; + + [[nodiscard]] TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TSourceSession::TCursorDynamic& proto, + const NKikimrColumnShardDataSharingProto::TSourceSession::TCursorStatic& protoStatic); +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/session/source.cpp b/ydb/core/tx/columnshard/data_sharing/source/session/source.cpp new file mode 100644 index 000000000000..3cf78859289f --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/session/source.cpp @@ -0,0 +1,110 @@ +#include "source.h" +#include <ydb/core/tx/columnshard/data_sharing/source/transactions/tx_finish_ack_to_source.h> +#include <ydb/core/tx/columnshard/data_sharing/source/transactions/tx_data_ack_to_source.h> +#include <ydb/core/tx/columnshard/data_sharing/source/transactions/tx_write_source_cursor.h> +#include <ydb/core/tx/columnshard/data_locks/locks/list.h> +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> + +namespace NKikimr::NOlap::NDataSharing { + +NKikimr::TConclusionStatus TSourceSession::DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TSourceSession& proto, + const std::optional<NKikimrColumnShardDataSharingProto::TSourceSession::TCursorDynamic>& protoCursor, + const std::optional<NKikimrColumnShardDataSharingProto::TSourceSession::TCursorStatic>& protoCursorStatic) { + auto parseBase = TBase::DeserializeFromProto(proto); + if (!parseBase) { + return parseBase; + } + DestinationTabletId = (TTabletId)proto.GetDestinationTabletId(); + if (!(ui64)DestinationTabletId) { + return TConclusionStatus::Fail("Incorrect DestinationTabletId in proto."); + } + for (auto&& i : proto.GetPathIds()) { + if (!PathIds.emplace(i).second) { + return TConclusionStatus::Fail("PathIds contains duplicated values."); + } + } + if (PathIds.empty()) { + return TConclusionStatus::Fail("PathIds empty."); + } + AFL_VERIFY(PathIds.size()); + Cursor = std::make_shared<TSourceCursor>(SelfTabletId, PathIds, TransferContext); + AFL_VERIFY(!!protoCursor == !!protoCursorStatic); + if (protoCursor) { + auto parsed = Cursor->DeserializeFromProto(*protoCursor, *protoCursorStatic); + if (!parsed) { + return parsed; + } + } + return TConclusionStatus::Success(); +} + +TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> TSourceSession::AckFinished(NColumnShard::TColumnShard* self, const std::shared_ptr<TSourceSession>& selfPtr) { + return std::unique_ptr<NTabletFlatExecutor::ITransaction>(new TTxFinishAckToSource(self, selfPtr, "ack_finished")); +} + +TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> TSourceSession::AckData(NColumnShard::TColumnShard* self, const ui32 receivedPackIdx, const std::shared_ptr<TSourceSession>& selfPtr) { + auto ackResult = Cursor->AckData(receivedPackIdx); + if (!ackResult) { + return ackResult; + } + if (Cursor->IsReadyForNext()) { + Cursor->Next(self->GetStoragesManager()->GetSharedBlobsManager(), self->GetIndexAs<TColumnEngineForLogs>().GetVersionedIndex()); + return std::unique_ptr<NTabletFlatExecutor::ITransaction>(new TTxDataAckToSource(self, selfPtr, "ack_to_source_on_ack_data")); + } else { + return std::unique_ptr<NTabletFlatExecutor::ITransaction>(new TTxWriteSourceCursor(self, selfPtr, "write_source_cursor_on_ack_data")); + } +} + +TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> TSourceSession::AckLinks(NColumnShard::TColumnShard* self, const TTabletId tabletId, const ui32 receivedPackIdx, const std::shared_ptr<TSourceSession>& selfPtr) { + auto ackResult = Cursor->AckLinks(tabletId, receivedPackIdx); + if (!ackResult) { + return ackResult; + } + if (Cursor->IsReadyForNext()) { + Cursor->Next(self->GetStoragesManager()->GetSharedBlobsManager(), self->GetIndexAs<TColumnEngineForLogs>().GetVersionedIndex()); + return std::unique_ptr<NTabletFlatExecutor::ITransaction>(new TTxDataAckToSource(self, selfPtr, "ack_to_source_on_ack_links")); + } else { + return std::unique_ptr<NTabletFlatExecutor::ITransaction>(new TTxWriteSourceCursor(self, selfPtr, "write_source_cursor_on_ack_links")); + } +} + +void TSourceSession::ActualizeDestination(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) { + AFL_VERIFY(IsStarted() || IsStarting()); + AFL_VERIFY(Cursor); + if (Cursor->IsValid()) { + if (!Cursor->IsAckDataReceived()) { + const THashMap<ui64, NEvents::TPathIdData>& packPortions = Cursor->GetSelected(); + auto ev = std::make_unique<NEvents::TEvSendDataFromSource>(GetSessionId(), Cursor->GetPackIdx(), SelfTabletId, packPortions); + NActors::TActivationContext::AsActorContext().Send(MakePipePeNodeCacheID(false), + new TEvPipeCache::TEvForward(ev.release(), (ui64)DestinationTabletId, true), IEventHandle::FlagTrackDelivery, GetRuntimeId()); + } + { + const auto& links = Cursor->GetLinks(); + for (auto&& [tabletId, task] : links) { + if (Cursor->GetLinksModifiedTablets().contains(tabletId)) { + continue; + } + auto ev = std::make_unique<NEvents::TEvApplyLinksModification>(SelfTabletId, GetSessionId(), Cursor->GetPackIdx(), task); + NActors::TActivationContext::AsActorContext().Send(MakePipePeNodeCacheID(false), + new TEvPipeCache::TEvForward(ev.release(), (ui64)tabletId, true), IEventHandle::FlagTrackDelivery, GetRuntimeId()); + } + } + } else { + auto ev = std::make_unique<NEvents::TEvFinishedFromSource>(GetSessionId(), SelfTabletId); + NActors::TActivationContext::AsActorContext().Send(MakePipePeNodeCacheID(false), + new TEvPipeCache::TEvForward(ev.release(), (ui64)DestinationTabletId, true), IEventHandle::FlagTrackDelivery, GetRuntimeId()); + Finish(dataLocksManager); + } +} + +bool TSourceSession::DoStart(const NColumnShard::TColumnShard& shard, const THashMap<ui64, std::vector<std::shared_ptr<TPortionInfo>>>& portions) { + AFL_VERIFY(Cursor); + if (Cursor->Start(shard.GetStoragesManager()->GetSharedBlobsManager(), portions, shard.GetIndexAs<TColumnEngineForLogs>().GetVersionedIndex())) { + ActualizeDestination(shard.GetDataLocksManager()); + return true; + } else { + return false; + } +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/session/source.h b/ydb/core/tx/columnshard/data_sharing/source/session/source.h new file mode 100644 index 000000000000..319302fe92d8 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/session/source.h @@ -0,0 +1,91 @@ +#pragma once +#include "cursor.h" +#include <ydb/core/tx/columnshard/data_sharing/common/session/common.h> +#include <ydb/core/tx/columnshard/common/tablet_id.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TSharedBlobsManager; + +class TSourceSession: public TCommonSession { +private: + using TBase = TCommonSession; + const TTabletId SelfTabletId; + std::shared_ptr<TSourceCursor> Cursor; + YDB_READONLY_DEF(std::set<ui64>, PathIds); + TTabletId DestinationTabletId = TTabletId(0); +protected: + virtual bool DoStart(const NColumnShard::TColumnShard& shard, const THashMap<ui64, std::vector<std::shared_ptr<TPortionInfo>>>& portions) override; + virtual THashSet<ui64> GetPathIdsForStart() const override { + THashSet<ui64> result; + for (auto&& i : PathIds) { + result.emplace(i); + } + return result; + } +public: + TSourceSession(const TTabletId selfTabletId) + : TBase("source_proto") + , SelfTabletId(selfTabletId) + { + + } + + TSourceSession(const TString& sessionId, const TTransferContext& transfer, const TTabletId selfTabletId, const std::set<ui64>& pathIds, const TTabletId destTabletId) + : TBase(sessionId, "source_base", transfer) + , SelfTabletId(selfTabletId) + , PathIds(pathIds) + , DestinationTabletId(destTabletId) + { + } + + TTabletId GetDestinationTabletId() const { + return DestinationTabletId; + } + + TString DebugString() const { + return TStringBuilder() << "{base=" << TBase::DebugString() << ";destination_tablet_id=" << (ui64)DestinationTabletId << ";}"; + } + + bool IsEqualTo(const TSourceSession& item) const { + return + TBase::IsEqualTo(item) && + DestinationTabletId == item.DestinationTabletId && + PathIds == item.PathIds; + } + + std::shared_ptr<TSourceCursor> GetCursorVerified() const { + AFL_VERIFY(!!Cursor); + return Cursor; + } + + bool TryNextCursor(const ui32 packIdx, const std::shared_ptr<TSharedBlobsManager>& sharedBlobsManager, const TVersionedIndex& index) { + AFL_VERIFY(Cursor); + if (packIdx != Cursor->GetPackIdx()) { + return false; + } + Cursor->Next(sharedBlobsManager, index); + return true; + } + + [[nodiscard]] TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> AckFinished(NColumnShard::TColumnShard* self, const std::shared_ptr<TSourceSession>& selfPtr); + [[nodiscard]] TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> AckData(NColumnShard::TColumnShard* self, const ui32 receivedPackIdx, const std::shared_ptr<TSourceSession>& selfPtr); + [[nodiscard]] TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> AckLinks(NColumnShard::TColumnShard* self, const TTabletId tabletId, const ui32 packIdx, const std::shared_ptr<TSourceSession>& selfPtr); + + void ActualizeDestination(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager); + + NKikimrColumnShardDataSharingProto::TSourceSession SerializeDataToProto() const { + NKikimrColumnShardDataSharingProto::TSourceSession result; + TBase::SerializeToProto(result); + result.SetDestinationTabletId((ui64)DestinationTabletId); + for (auto&& i : PathIds) { + result.AddPathIds(i); + } + return result; + } + + [[nodiscard]] TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TSourceSession& proto, + const std::optional<NKikimrColumnShardDataSharingProto::TSourceSession::TCursorDynamic>& protoCursor, + const std::optional<NKikimrColumnShardDataSharingProto::TSourceSession::TCursorStatic>& protoCursorStatic); +}; +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/session/ya.make b/ydb/core/tx/columnshard/data_sharing/source/session/ya.make new file mode 100644 index 000000000000..c045cca16e17 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/session/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + source.cpp + cursor.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/common/session + ydb/core/tx/columnshard/data_sharing/destination/events + ydb/core/tx/columnshard/data_sharing/source/transactions +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_data_ack_to_source.cpp b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_data_ack_to_source.cpp new file mode 100644 index 000000000000..146a93bc706c --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_data_ack_to_source.cpp @@ -0,0 +1,40 @@ +#include "tx_data_ack_to_source.h" +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> + +namespace NKikimr::NOlap::NDataSharing { + +bool TTxDataAckToSource::DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& /*ctx*/) { + using namespace NColumnShard; + THashMap<TString, TTabletsByBlob> sharedTabletBlobIds; + { + THashMap<TString, THashSet<NBlobCache::TUnifiedBlobId>> sharedBlobIds; + auto& index = Self->GetIndexAs<TColumnEngineForLogs>().GetVersionedIndex(); + for (auto&& [_, i] : Session->GetCursorVerified()->GetPreviousSelected()) { + for (auto&& portion : i.GetPortions()) { + portion.FillBlobIdsByStorage(sharedBlobIds, index); + } + } + for (auto&& i : sharedBlobIds) { + AFL_VERIFY(sharedTabletBlobIds[i.first].Add(Session->GetDestinationTabletId(), i.second)); + sharedTabletBlobIds[i.first].Add(Self->GetStoragesManager()->GetSharedBlobsManager()->GetSelfTabletId(), std::move(i.second)); + } + Self->GetStoragesManager()->GetSharedBlobsManager()->WriteSharedBlobsDB(txc, sharedTabletBlobIds); + } + + NIceDb::TNiceDb db(txc.DB); + db.Table<Schema::SourceSessions>().Key(Session->GetSessionId()) + .Update(NIceDb::TUpdate<Schema::SourceSessions::CursorDynamic>(Session->GetCursorVerified()->SerializeDynamicToProto().SerializeAsString())); + if (!Session->GetCursorVerified()->GetStaticSaved()) { + db.Table<Schema::SourceSessions>().Key(Session->GetSessionId()) + .Update(NIceDb::TUpdate<Schema::SourceSessions::CursorStatic>(Session->GetCursorVerified()->SerializeStaticToProto().SerializeAsString())); + Session->GetCursorVerified()->SetStaticSaved(true); + } + std::swap(SharedBlobIds, sharedTabletBlobIds); + return true; +} + +void TTxDataAckToSource::DoComplete(const TActorContext& /*ctx*/) { + Session->ActualizeDestination(Self->GetDataLocksManager()); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_data_ack_to_source.h b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_data_ack_to_source.h new file mode 100644 index 000000000000..a8a4756a94f8 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_data_ack_to_source.h @@ -0,0 +1,28 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h> +#include <ydb/core/tx/columnshard/data_sharing/source/session/source.h> +#include <ydb/core/tx/columnshard/blob_cache.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TTxDataAckToSource: public TExtendedTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = TExtendedTransactionBase<NColumnShard::TColumnShard>; + std::shared_ptr<TSourceSession> Session; + THashMap<TString, TTabletsByBlob> SharedBlobIds; +protected: + virtual bool DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& ctx) override; + virtual void DoComplete(const TActorContext& ctx) override; +public: + TTxDataAckToSource(NColumnShard::TColumnShard* self, const std::shared_ptr<TSourceSession>& session, const TString& info) + : TBase(self, info) + , Session(session) + { + } + + TTxType GetTxType() const override { return NColumnShard::TXTYPE_DATA_SHARING_DATA_ACK_TO_SOURCE; } +}; + + +} diff --git a/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_finish_ack_to_source.cpp b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_finish_ack_to_source.cpp new file mode 100644 index 000000000000..913cc7f0ac5c --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_finish_ack_to_source.cpp @@ -0,0 +1,15 @@ +#include "tx_finish_ack_to_source.h" + +namespace NKikimr::NOlap::NDataSharing { +bool TTxFinishAckToSource::DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& /*ctx*/) { + using namespace NKikimr::NColumnShard; + NIceDb::TNiceDb db(txc.DB); + db.Table<Schema::SourceSessions>().Key(Session->GetSessionId()).Delete(); + return true; +} + +void TTxFinishAckToSource::DoComplete(const TActorContext& /*ctx*/) { + Self->SharingSessionsManager->RemoveSourceSession(Session->GetSessionId()); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_finish_ack_to_source.h b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_finish_ack_to_source.h new file mode 100644 index 000000000000..3c03f5f7e9c7 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_finish_ack_to_source.h @@ -0,0 +1,27 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h> +#include <ydb/core/tx/columnshard/data_sharing/source/session/source.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TTxFinishAckToSource: public TExtendedTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = TExtendedTransactionBase<NColumnShard::TColumnShard>; + std::shared_ptr<TSourceSession> Session; +protected: + virtual bool DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& ctx) override; + virtual void DoComplete(const TActorContext& /*ctx*/) override; +public: + TTxFinishAckToSource(NColumnShard::TColumnShard* self, const std::shared_ptr<TSourceSession>& session, const TString& info) + : TBase(self, info) + , Session(session) + { + AFL_VERIFY(!Session->GetCursorVerified()->IsValid()); + } + + TTxType GetTxType() const override { return NColumnShard::TXTYPE_DATA_SHARING_FINISH_ACK_TO_SOURCE; } +}; + + +} diff --git a/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_start_to_source.cpp b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_start_to_source.cpp new file mode 100644 index 000000000000..687b2e3661e0 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_start_to_source.cpp @@ -0,0 +1,20 @@ +#include "tx_start_to_source.h" +#include <ydb/core/tx/columnshard/columnshard_schema.h> + +namespace NKikimr::NOlap::NDataSharing { + +bool TTxStartToSource::DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& /*ctx*/) { + using namespace NColumnShard; + NIceDb::TNiceDb db(txc.DB); + db.Table<Schema::SourceSessions>().Key(Session->GetSessionId()) + .Update(NIceDb::TUpdate<Schema::SourceSessions::Details>(Session->SerializeDataToProto().SerializeAsString())); + return true; +} + +void TTxStartToSource::DoComplete(const TActorContext& /*ctx*/) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("info", "TTxStartToSource::Complete"); + AFL_VERIFY(Sessions->emplace(Session->GetSessionId(), Session).second); + Session->Start(*Self); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_start_to_source.h b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_start_to_source.h new file mode 100644 index 000000000000..6506f269a75c --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_start_to_source.h @@ -0,0 +1,28 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h> +#include <ydb/core/tx/columnshard/data_sharing/source/session/source.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TTxStartToSource: public TExtendedTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = TExtendedTransactionBase<NColumnShard::TColumnShard>; + std::shared_ptr<TSourceSession> Session; + THashMap<TString, std::shared_ptr<TSourceSession>>* Sessions; +protected: + virtual bool DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& ctx) override; + virtual void DoComplete(const TActorContext& ctx) override; +public: + TTxStartToSource(NColumnShard::TColumnShard* self, const std::shared_ptr<TSourceSession>& session, THashMap<TString, std::shared_ptr<TSourceSession>>& sessions, const TString& info) + : TBase(self, info) + , Session(session) + , Sessions(&sessions) + { + } + + TTxType GetTxType() const override { return NColumnShard::TXTYPE_DATA_SHARING_START_TO_SOURCE; } +}; + + +} diff --git a/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_write_source_cursor.cpp b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_write_source_cursor.cpp new file mode 100644 index 000000000000..4af96622de2b --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_write_source_cursor.cpp @@ -0,0 +1,17 @@ +#include "tx_write_source_cursor.h" +#include <ydb/core/tx/columnshard/columnshard_schema.h> + +namespace NKikimr::NOlap::NDataSharing { + +bool TTxWriteSourceCursor::DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& /*ctx*/) { + using namespace NColumnShard; + NIceDb::TNiceDb db(txc.DB); + db.Table<Schema::SourceSessions>().Key(Session->GetSessionId()) + .Update(NIceDb::TUpdate<Schema::SourceSessions::CursorDynamic>(Session->GetCursorVerified()->SerializeDynamicToProto().SerializeAsString())); + return true; +} + +void TTxWriteSourceCursor::DoComplete(const TActorContext& /*ctx*/) { +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_write_source_cursor.h b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_write_source_cursor.h new file mode 100644 index 000000000000..315e6038ed41 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/transactions/tx_write_source_cursor.h @@ -0,0 +1,27 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/data_sharing/common/transactions/tx_extension.h> +#include <ydb/core/tx/columnshard/data_sharing/source/session/source.h> +#include <ydb/core/tx/columnshard/blob_cache.h> + +namespace NKikimr::NOlap::NDataSharing { + +class TTxWriteSourceCursor: public TExtendedTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = TExtendedTransactionBase<NColumnShard::TColumnShard>; + std::shared_ptr<TSourceSession> Session; +protected: + virtual bool DoExecute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& ctx) override; + virtual void DoComplete(const TActorContext& ctx) override; +public: + TTxWriteSourceCursor(NColumnShard::TColumnShard* self, const std::shared_ptr<TSourceSession>& session, const TString& info) + : TBase(self, info) + , Session(session) + { + } + + TTxType GetTxType() const override { return NColumnShard::TXTYPE_DATA_SHARING_WRITE_SOURCE_CURSOR; } +}; + + +} diff --git a/ydb/core/tx/columnshard/data_sharing/source/transactions/ya.make b/ydb/core/tx/columnshard/data_sharing/source/transactions/ya.make new file mode 100644 index 000000000000..90269b952ed4 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/transactions/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + tx_start_to_source.cpp + tx_data_ack_to_source.cpp + tx_finish_ack_to_source.cpp + tx_write_source_cursor.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/common/transactions +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/source/ya.make b/ydb/core/tx/columnshard/data_sharing/source/ya.make new file mode 100644 index 000000000000..ed17858d4057 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/source/ya.make @@ -0,0 +1,9 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/source/session + ydb/core/tx/columnshard/data_sharing/source/transactions + ydb/core/tx/columnshard/data_sharing/source/events +) + +END() diff --git a/ydb/core/tx/columnshard/data_sharing/ya.make b/ydb/core/tx/columnshard/data_sharing/ya.make new file mode 100644 index 000000000000..f3f443c03540 --- /dev/null +++ b/ydb/core/tx/columnshard/data_sharing/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/data_sharing/common + ydb/core/tx/columnshard/data_sharing/destination + ydb/core/tx/columnshard/data_sharing/source + ydb/core/tx/columnshard/data_sharing/initiator + ydb/core/tx/columnshard/data_sharing/manager + ydb/core/tx/columnshard/data_sharing/protos + ydb/core/tx/columnshard/data_sharing/modification +) + +END() diff --git a/ydb/core/tx/columnshard/defs.h b/ydb/core/tx/columnshard/defs.h index f3d5c90bc181..76d1cc3a2bb0 100644 --- a/ydb/core/tx/columnshard/defs.h +++ b/ydb/core/tx/columnshard/defs.h @@ -1,4 +1,5 @@ #pragma once +#include "common/blob.h" #include <ydb/core/base/defs.h> #include <ydb/core/base/events.h> #include <ydb/core/base/blobstorage.h> diff --git a/ydb/core/tx/columnshard/engines/changes/abstract/abstract.cpp b/ydb/core/tx/columnshard/engines/changes/abstract/abstract.cpp index 8d3c4ae87610..1f6f50664bb8 100644 --- a/ydb/core/tx/columnshard/engines/changes/abstract/abstract.cpp +++ b/ydb/core/tx/columnshard/engines/changes/abstract/abstract.cpp @@ -2,6 +2,7 @@ #include <ydb/core/tx/columnshard/engines/column_engine_logs.h> #include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> #include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> #include <ydb/library/actors/core/actor.h> namespace NKikimr::NOlap { @@ -17,13 +18,7 @@ TString TColumnEngineChanges::DebugString() const { TConclusionStatus TColumnEngineChanges::ConstructBlobs(TConstructionContext& context) noexcept { Y_ABORT_UNLESS(Stage == EStage::Started); - { - ui64 readBytes = 0; - for (auto&& i : Blobs) { - readBytes += i.first.Size; - } - context.Counters.CompactionInputSize(readBytes); - } + context.Counters.CompactionInputSize(Blobs.GetTotalBlobsSize()); const TMonotonic start = TMonotonic::Now(); TConclusionStatus result = DoConstructBlobs(context); if (result.Ok()) { @@ -35,31 +30,24 @@ TConclusionStatus TColumnEngineChanges::ConstructBlobs(TConstructionContext& con return result; } -bool TColumnEngineChanges::ApplyChanges(TColumnEngineForLogs& self, TApplyChangesContext& context) { - Y_ABORT_UNLESS(Stage == EStage::Compiled); - Y_ABORT_UNLESS(DoApplyChanges(self, context)); - Stage = EStage::Applied; - return true; -} - -void TColumnEngineChanges::WriteIndex(NColumnShard::TColumnShard& self, TWriteIndexContext& context) { +void TColumnEngineChanges::WriteIndexOnExecute(NColumnShard::TColumnShard* self, TWriteIndexContext& context) { Y_ABORT_UNLESS(Stage != EStage::Aborted); - if ((ui32)Stage >= (ui32)EStage::Written) { - return; - } - Y_ABORT_UNLESS(Stage == EStage::Applied); + Y_ABORT_UNLESS(Stage <= EStage::Written); + Y_ABORT_UNLESS(Stage >= EStage::Compiled); - DoWriteIndex(self, context); + DoWriteIndexOnExecute(self, context); Stage = EStage::Written; } -void TColumnEngineChanges::WriteIndexComplete(NColumnShard::TColumnShard& self, TWriteIndexCompleteContext& context) { - Y_ABORT_UNLESS(Stage == EStage::Written); +void TColumnEngineChanges::WriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) { + Y_ABORT_UNLESS(Stage == EStage::Written || !self); Stage = EStage::Finished; AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "WriteIndexComplete")("type", TypeString())("success", context.FinishedSuccessfully); - DoWriteIndexComplete(self, context); - DoOnFinish(self, context); - self.IncCounter(GetCounterIndex(context.FinishedSuccessfully)); + DoWriteIndexOnComplete(self, context); + if (self) { + OnFinish(*self, context); + self->IncCounter(GetCounterIndex(context.FinishedSuccessfully)); + } } @@ -76,17 +64,20 @@ void TColumnEngineChanges::Compile(TFinalizationContext& context) noexcept { } TColumnEngineChanges::~TColumnEngineChanges() { - Y_DEBUG_ABORT_UNLESS(!NActors::TlsActivationContext || Stage == EStage::Created || Stage == EStage::Finished || Stage == EStage::Aborted); +// AFL_VERIFY_DEBUG(!NActors::TlsActivationContext || Stage == EStage::Created || Stage == EStage::Finished || Stage == EStage::Aborted)("stage", Stage); } void TColumnEngineChanges::Abort(NColumnShard::TColumnShard& self, TChangesFinishContext& context) { - Y_ABORT_UNLESS(Stage != EStage::Finished && Stage != EStage::Created && Stage != EStage::Aborted); + AFL_VERIFY(Stage != EStage::Finished && Stage != EStage::Created && Stage != EStage::Aborted)("stage", Stage)("reason", context.ErrorMessage); Stage = EStage::Aborted; - DoOnFinish(self, context); + OnFinish(self, context); } void TColumnEngineChanges::Start(NColumnShard::TColumnShard& self) { + AFL_VERIFY(!LockGuard); + LockGuard = self.DataLocksManager->RegisterLock(BuildDataLock()); Y_ABORT_UNLESS(Stage == EStage::Created); + NYDBTest::TControllers::GetColumnShardController()->OnWriteIndexStart(self.TabletID(), *this); DoStart(self); Stage = EStage::Started; if (!NeedConstruction()) { @@ -102,16 +93,23 @@ void TColumnEngineChanges::StartEmergency() { } } -void TColumnEngineChanges::AbortEmergency() { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "AbortEmergency"); +void TColumnEngineChanges::AbortEmergency(const TString& reason) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "AbortEmergency")("reason", reason); Stage = EStage::Aborted; OnAbortEmergency(); } -TWriteIndexContext::TWriteIndexContext(NTabletFlatExecutor::TTransactionContext& txc, IDbWrapper& dbWrapper) - : Txc(txc) - , BlobManagerDb(std::make_shared<NColumnShard::TBlobManagerDb>(txc.DB)) +void TColumnEngineChanges::OnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& context) { + if (!!LockGuard) { + LockGuard->Release(*self.DataLocksManager); + } + DoOnFinish(self, context); +} + +TWriteIndexContext::TWriteIndexContext(NTable::TDatabase* db, IDbWrapper& dbWrapper, TColumnEngineForLogs& engineLogs) + : DB(db) , DBWrapper(dbWrapper) + , EngineLogs(engineLogs) { } diff --git a/ydb/core/tx/columnshard/engines/changes/abstract/abstract.h b/ydb/core/tx/columnshard/engines/changes/abstract/abstract.h index dc5b3b2eb0f4..452e6e331292 100644 --- a/ydb/core/tx/columnshard/engines/changes/abstract/abstract.h +++ b/ydb/core/tx/columnshard/engines/changes/abstract/abstract.h @@ -1,12 +1,18 @@ #pragma once #include "settings.h" +#include <ydb/core/protos/counters_columnshard.pb.h> +#include <ydb/core/formats/arrow/arrow_helpers.h> +#include <ydb/core/tx/columnshard/blobs_reader/task.h> #include <ydb/core/tx/columnshard/blobs_action/abstract/action.h> #include <ydb/core/tx/columnshard/counters/indexation.h> +#include <ydb/core/tx/columnshard/data_locks/locks/abstract.h> +#include <ydb/core/tx/columnshard/data_locks/locks/composite.h> +#include <ydb/core/tx/columnshard/data_locks/locks/list.h> +#include <ydb/core/tx/columnshard/data_locks/manager/manager.h> +#include <ydb/core/tx/columnshard/engines/storage/actualizer/common/address.h> #include <ydb/core/tx/columnshard/engines/portions/portion_info.h> #include <ydb/core/tx/columnshard/engines/portions/with_blobs.h> #include <ydb/core/tx/columnshard/resource_subscriber/task.h> -#include <ydb/core/protos/counters_columnshard.pb.h> -#include <ydb/core/formats/arrow/arrow_helpers.h> #include <ydb/core/tx/columnshard/splitter/settings.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/scalar.h> @@ -24,7 +30,6 @@ class TTransactionContext; namespace NKikimr::NColumnShard { class TBlobManagerDb; class TColumnShard; -class TBackgroundActivity; } namespace NKikimr::NOlap { @@ -32,17 +37,69 @@ class TColumnEngineForLogs; class TVersionedIndex; class TPortionInfoWithBlobs; -struct TPortionEvictionFeatures { - const TString TargetTierName; - const ui64 PathId; // portion path id for cold-storage-key construct - bool DataChanges = true; - const std::shared_ptr<IBlobsStorageOperator> StorageOperator; - - TPortionEvictionFeatures(const TString& targetTierName, const ui64 pathId, const std::shared_ptr<IBlobsStorageOperator>& storageOperator) - : TargetTierName(targetTierName) - , PathId(pathId) - , StorageOperator(storageOperator) - {} +class TPortionEvictionFeatures { +private: + YDB_READONLY_DEF(std::shared_ptr<ISnapshotSchema>, CurrentScheme); + YDB_READONLY_DEF(std::shared_ptr<ISnapshotSchema>, TargetScheme); + std::optional<TString> TargetTierName; + const TString CurrentTierName; + std::optional<NActualizer::TRWAddress> RWAddress; +public: + TPortionEvictionFeatures(const std::shared_ptr<ISnapshotSchema>& currentScheme, const std::shared_ptr<ISnapshotSchema>& targetScheme, const TString& currentTierName) + : CurrentScheme(currentScheme) + , TargetScheme(targetScheme) + , CurrentTierName(currentTierName) + { + AFL_VERIFY(CurrentTierName); + } + + const TString& GetTargetTierName() const { + AFL_VERIFY(TargetTierName); + return *TargetTierName; + } + + void SetTargetTierName(const TString& value) { + AFL_VERIFY(!TargetTierName); + TargetTierName = value; + } + + void OnSkipPortionWithProcessMemory(const NColumnShard::TEngineLogsCounters& counters, const TDuration dWait) const { + if (TargetTierName == NTiering::NCommon::DeleteTierName) { + counters.OnSkipDeleteWithProcessMemory(dWait); + } else { + counters.OnSkipEvictionWithProcessMemory(dWait); + } + } + + void OnSkipPortionWithTxLimit(const NColumnShard::TEngineLogsCounters& counters, const TDuration dWait) const { + if (TargetTierName == NTiering::NCommon::DeleteTierName) { + counters.OnSkipDeleteWithTxLimit(dWait); + } else { + counters.OnSkipEvictionWithTxLimit(dWait); + } + } + + NActualizer::TRWAddress GetRWAddress() { + if (!RWAddress) { + AFL_VERIFY(TargetTierName); + RWAddress = NActualizer::TRWAddress(CurrentScheme->GetIndexInfo().GetUsedStorageIds(CurrentTierName), TargetScheme->GetIndexInfo().GetUsedStorageIds(*TargetTierName)); + } + return *RWAddress; + } + + bool NeedRewrite() const { + if (TargetTierName == NTiering::NCommon::DeleteTierName) { + return false; + } + if (CurrentTierName != TargetTierName) { + return true; + } + if (CurrentScheme->GetVersion() != TargetScheme->GetVersion()) { + return true; + } + AFL_VERIFY(false); + return false; + } }; class TFinalizationContext: TNonCopyable { @@ -71,10 +128,10 @@ class TFinalizationContext: TNonCopyable { class TWriteIndexContext: TNonCopyable { public: - NTabletFlatExecutor::TTransactionContext& Txc; - std::shared_ptr<NColumnShard::TBlobManagerDb> BlobManagerDb; + NTable::TDatabase* DB; IDbWrapper& DBWrapper; - TWriteIndexContext(NTabletFlatExecutor::TTransactionContext& txc, IDbWrapper& dbWrapper); + TColumnEngineForLogs& EngineLogs; + TWriteIndexContext(NTable::TDatabase* db, IDbWrapper& dbWrapper, TColumnEngineForLogs& engineLogs); }; class TChangesFinishContext { @@ -98,38 +155,30 @@ class TWriteIndexCompleteContext: TNonCopyable, public TChangesFinishContext { const ui32 BlobsWritten; const ui64 BytesWritten; const TDuration Duration; - NColumnShard::TBackgroundActivity& TriggerActivity; + TColumnEngineForLogs& EngineLogs; TWriteIndexCompleteContext(const TActorContext& actorContext, const ui32 blobsWritten, const ui64 bytesWritten - , const TDuration d, NColumnShard::TBackgroundActivity& triggerActivity) + , const TDuration d, TColumnEngineForLogs& engineLogs) : ActorContext(actorContext) , BlobsWritten(blobsWritten) , BytesWritten(bytesWritten) , Duration(d) - , TriggerActivity(triggerActivity) + , EngineLogs(engineLogs) { } }; -class TApplyChangesContext: TNonCopyable { -public: - IDbWrapper& DB; - const TSnapshot Snapshot; - TApplyChangesContext(IDbWrapper& db, const TSnapshot& snapshot) - : DB(db) - , Snapshot(snapshot) { - - } -}; - class TConstructionContext: TNonCopyable { public: const TVersionedIndex& SchemaVersions; const NColumnShard::TIndexationCounters Counters; + const NOlap::TSnapshot LastCommittedTx; - TConstructionContext(const TVersionedIndex& schemaVersions, const NColumnShard::TIndexationCounters& counters) + TConstructionContext(const TVersionedIndex& schemaVersions, const NColumnShard::TIndexationCounters& counters, const NOlap::TSnapshot& lastCommittedTx) : SchemaVersions(schemaVersions) - , Counters(counters) { + , Counters(counters) + , LastCommittedTx(lastCommittedTx) + { } }; @@ -143,20 +192,19 @@ class TColumnEngineChanges { Started, Constructed, Compiled, - Applied, Written, Finished, Aborted }; private: EStage Stage = EStage::Created; + std::shared_ptr<NDataLocks::TManager::TGuard> LockGuard; protected: virtual void DoDebugString(TStringOutput& out) const = 0; virtual void DoCompile(TFinalizationContext& context) = 0; - virtual void DoWriteIndex(NColumnShard::TColumnShard& self, TWriteIndexContext& context) = 0; - virtual void DoWriteIndexComplete(NColumnShard::TColumnShard& self, TWriteIndexCompleteContext& context) = 0; + virtual void DoWriteIndexOnExecute(NColumnShard::TColumnShard* self, TWriteIndexContext& context) = 0; + virtual void DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) = 0; virtual void DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& context) = 0; - virtual bool DoApplyChanges(TColumnEngineForLogs& self, TApplyChangesContext& context) = 0; virtual bool NeedConstruction() const { return true; } @@ -172,6 +220,11 @@ class TColumnEngineChanges { const TString TaskIdentifier = TGUID::Create().AsGuidString(); virtual ui64 DoCalcMemoryForUsage() const = 0; + virtual std::shared_ptr<NDataLocks::ILock> DoBuildDataLock() const = 0; + std::shared_ptr<NDataLocks::ILock> BuildDataLock() const { + return DoBuildDataLock(); + } + public: class IMemoryPredictor { public: @@ -179,6 +232,8 @@ class TColumnEngineChanges { virtual ~IMemoryPredictor() = default; }; + void OnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& context); + ui64 CalcMemoryForUsage() const { return DoCalcMemoryForUsage(); } @@ -195,7 +250,7 @@ class TColumnEngineChanges { return BlobsAction; } - TColumnEngineChanges(const std::shared_ptr<IStoragesManager>& storagesManager, const TString& consumerId) + TColumnEngineChanges(const std::shared_ptr<IStoragesManager>& storagesManager, const NBlobOperations::EConsumer consumerId) : BlobsAction(storagesManager, consumerId) { @@ -208,30 +263,22 @@ class TColumnEngineChanges { return Stage == EStage::Aborted; } - virtual THashSet<TPortionAddress> GetTouchedPortions() const = 0; - void StartEmergency(); - void AbortEmergency(); + void AbortEmergency(const TString& reason); void Abort(NColumnShard::TColumnShard& self, TChangesFinishContext& context); void Start(NColumnShard::TColumnShard& self); - bool ApplyChanges(TColumnEngineForLogs& self, TApplyChangesContext& context); virtual ui32 GetWritePortionsCount() const = 0; virtual TPortionInfoWithBlobs* GetWritePortionInfo(const ui32 index) = 0; virtual bool NeedWritePortion(const ui32 index) const = 0; - void WriteIndex(NColumnShard::TColumnShard& self, TWriteIndexContext& context); - void WriteIndexComplete(NColumnShard::TColumnShard& self, TWriteIndexCompleteContext& context); + void WriteIndexOnExecute(NColumnShard::TColumnShard* self, TWriteIndexContext& context); + void WriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context); void Compile(TFinalizationContext& context) noexcept; - void SetBlobs(THashMap<TBlobRange, TString>&& blobs) { - Y_ABORT_UNLESS(!blobs.empty()); - Blobs = std::move(blobs); - } - - THashMap<TBlobRange, TString> Blobs; + NBlobOperations::NRead::TCompositeReadBlobs Blobs; std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard> ResourcesGuard; std::vector<std::shared_ptr<IBlobsReadingAction>> GetReadingActions() const { @@ -243,11 +290,7 @@ class TColumnEngineChanges { TString DebugString() const; ui64 TotalBlobsSize() const { - ui64 size = 0; - for (const auto& [_, blob] : Blobs) { - size += blob.size(); - } - return size; + return Blobs.GetTotalBlobsSize(); } }; diff --git a/ydb/core/tx/columnshard/engines/changes/abstract/settings.h b/ydb/core/tx/columnshard/engines/changes/abstract/settings.h index ec966965d52d..20dd155ba426 100644 --- a/ydb/core/tx/columnshard/engines/changes/abstract/settings.h +++ b/ydb/core/tx/columnshard/engines/changes/abstract/settings.h @@ -32,13 +32,6 @@ struct TCompactionLimits { i64 GranuleSizeForOverloadPrevent = WARNING_OVERLOAD_GRANULE_SIZE; i64 GranuleIndexedPortionsSizeLimit = WARNING_INSERTED_PORTIONS_SIZE; ui32 GranuleIndexedPortionsCountLimit = WARNING_INSERTED_PORTIONS_COUNT; - - TSplitSettings GetSplitSettings() const { - return TSplitSettings() - .SetMinBlobSize(0.5 * std::min<ui64>(MAX_BLOB_SIZE, GranuleSizeForOverloadPrevent)) - .SetMaxBlobSize(std::min<ui64>(MAX_BLOB_SIZE, GranuleSizeForOverloadPrevent)) - .SetMaxPortionSize(0.5 * GranuleSizeForOverloadPrevent); - } }; } diff --git a/ydb/core/tx/columnshard/engines/changes/actualization/construction/context.cpp b/ydb/core/tx/columnshard/engines/changes/actualization/construction/context.cpp new file mode 100644 index 000000000000..6b1ea617f219 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/changes/actualization/construction/context.cpp @@ -0,0 +1,73 @@ +#include "context.h" +#include <ydb/core/tx/columnshard/common/limits.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> +#include <ydb/core/tx/columnshard/data_locks/manager/manager.h> + +namespace NKikimr::NOlap::NActualizer { + +TTieringProcessContext::TTieringProcessContext(const ui64 memoryUsageLimit, const TSaverContext& saverContext, + const std::shared_ptr<NDataLocks::TManager>& dataLocksManager, const NColumnShard::TEngineLogsCounters& counters, const std::shared_ptr<TController>& controller) + : MemoryUsageLimit(memoryUsageLimit) + , SaverContext(saverContext) + , Counters(counters) + , Controller(controller) + , DataLocksManager(dataLocksManager) + , Now(TlsActivationContext ? AppData()->TimeProvider->Now() : TInstant::Now()) +{ + +} + +bool TTieringProcessContext::AddPortion(const TPortionInfo& info, TPortionEvictionFeatures&& features, const std::optional<TDuration> dWait) { + if (!UsedPortions.emplace(info.GetAddress()).second) { + return true; + } + if (DataLocksManager->IsLocked(info)) { + return true; + } + + const auto buildNewTask = [&]() { + return TTaskConstructor(TTTLColumnEngineChanges::BuildMemoryPredictor(), std::make_shared<TTTLColumnEngineChanges>(features.GetRWAddress(), SaverContext)); + }; + auto it = Tasks.find(features.GetRWAddress()); + if (it == Tasks.end()) { + std::vector<TTaskConstructor> tasks = {buildNewTask()}; + it = Tasks.emplace(features.GetRWAddress(), std::move(tasks)).first; + } + if (it->second.back().GetTxWriteVolume() + info.GetTxVolume() > TGlobalLimits::TxWriteLimitBytes && it->second.back().GetTxWriteVolume()) { + if (Controller->IsNewTaskAvailable(it->first, it->second.size())) { + it->second.emplace_back(buildNewTask()); + } else { + return false; + } + features.OnSkipPortionWithProcessMemory(Counters, *dWait); + } + if (features.NeedRewrite()) { + if (MemoryUsageLimit <= it->second.back().GetMemoryUsage()) { + if (Controller->IsNewTaskAvailable(it->first, it->second.size())) { + it->second.emplace_back(buildNewTask()); + } else { + return false; + } + features.OnSkipPortionWithTxLimit(Counters, *dWait); + } + it->second.back().MutableMemoryUsage() = it->second.back().GetMemoryPredictor()->AddPortion(info); + } + it->second.back().MutableTxWriteVolume() += info.GetTxVolume(); + if (features.GetTargetTierName() == NTiering::NCommon::DeleteTierName) { + AFL_VERIFY(dWait); + Counters.OnPortionToDrop(info.GetTotalBlobBytes(), *dWait); + it->second.back().GetTask()->PortionsToRemove.emplace(info.GetAddress(), info); + AFL_VERIFY(!it->second.back().GetTask()->GetPortionsToEvictCount())("rw", features.GetRWAddress().DebugString())("f", it->first.DebugString()); + } else { + if (!dWait) { + AFL_VERIFY(features.GetCurrentScheme()->GetVersion() < features.GetTargetScheme()->GetVersion()); + } else { + Counters.OnPortionToEvict(info.GetTotalBlobBytes(), *dWait); + } + it->second.back().GetTask()->AddPortionToEvict(info, std::move(features)); + AFL_VERIFY(it->second.back().GetTask()->PortionsToRemove.empty())("rw", features.GetRWAddress().DebugString())("f", it->first.DebugString()); + } + return true; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/changes/actualization/construction/context.h b/ydb/core/tx/columnshard/engines/changes/actualization/construction/context.h new file mode 100644 index 000000000000..0e5a5e326d3a --- /dev/null +++ b/ydb/core/tx/columnshard/engines/changes/actualization/construction/context.h @@ -0,0 +1,62 @@ +#pragma once +#include <ydb/core/tx/columnshard/counters/engine_logs.h> +#include <ydb/core/tx/columnshard/engines/changes/abstract/abstract.h> +#include <ydb/core/tx/columnshard/engines/storage/actualizer/common/address.h> +#include <ydb/core/tx/columnshard/engines/column_engine.h> +#include <ydb/core/tx/columnshard/engines/changes/ttl.h> +#include <ydb/core/tx/columnshard/engines/changes/actualization/controller/controller.h> + +#include <ydb/library/accessor/accessor.h> + +namespace NKikimr::NOlap::NActualizer { + +class TTaskConstructor { +private: + YDB_READONLY_DEF(std::shared_ptr<TColumnEngineChanges::IMemoryPredictor>, MemoryPredictor); + YDB_READONLY_DEF(std::shared_ptr<TTTLColumnEngineChanges>, Task); + YDB_ACCESSOR(ui64, MemoryUsage, 0); + YDB_ACCESSOR(ui64, TxWriteVolume, 0); +public: + TTaskConstructor(const std::shared_ptr<TColumnEngineChanges::IMemoryPredictor>& predictor, const std::shared_ptr<TTTLColumnEngineChanges>& task) + : MemoryPredictor(predictor) + , Task(task) { + + } +}; + +class TTieringProcessContext { +private: + THashSet<TPortionAddress> UsedPortions; + const ui64 MemoryUsageLimit; + TSaverContext SaverContext; + THashMap<TRWAddress, std::vector<TTaskConstructor>> Tasks; + const NColumnShard::TEngineLogsCounters Counters; + std::shared_ptr<NActualizer::TController> Controller; +public: + const std::shared_ptr<NDataLocks::TManager> DataLocksManager; + const TInstant Now = AppDataVerified().TimeProvider->Now(); + + const NColumnShard::TEngineLogsCounters GetCounters() const { + return Counters; + } + + const THashMap<TRWAddress, std::vector<TTaskConstructor>>& GetTasks() const { + return Tasks; + } + + bool AddPortion(const TPortionInfo& info, TPortionEvictionFeatures&& features, const std::optional<TDuration> dWait); + + bool IsRWAddressAvailable(const TRWAddress& address) const { + auto it = Tasks.find(address); + if (it == Tasks.end()) { + return Controller->IsNewTaskAvailable(address, 0); + } else { + return Controller->IsNewTaskAvailable(address, it->second.size()); + } + } + + TTieringProcessContext(const ui64 memoryUsageLimit, const TSaverContext& saverContext, const std::shared_ptr<NDataLocks::TManager>& dataLocksManager, + const NColumnShard::TEngineLogsCounters& counters, const std::shared_ptr<TController>& controller); +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/changes/actualization/construction/ya.make b/ydb/core/tx/columnshard/engines/changes/actualization/construction/ya.make new file mode 100644 index 000000000000..12df95df6331 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/changes/actualization/construction/ya.make @@ -0,0 +1,11 @@ +LIBRARY() + +SRCS( + context.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/changes/abstract +) + +END() diff --git a/ydb/core/tx/columnshard/engines/changes/actualization/controller/controller.cpp b/ydb/core/tx/columnshard/engines/changes/actualization/controller/controller.cpp new file mode 100644 index 000000000000..672e02fd71f4 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/changes/actualization/controller/controller.cpp @@ -0,0 +1,15 @@ +#include "controller.h" + +namespace NKikimr::NOlap::NActualizer { + +ui32 TController::GetLimitForAddress(const NActualizer::TRWAddress& address) const { + if (address.WriteIs(NTiering::NCommon::DeleteTierName)) { + return 16; + } else if (address.ReadIs(IStoragesManager::DefaultStorageId) && address.WriteIs(IStoragesManager::DefaultStorageId)) { + return 16; + } else { + return 1; + } +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/changes/actualization/controller/controller.h b/ydb/core/tx/columnshard/engines/changes/actualization/controller/controller.h new file mode 100644 index 000000000000..bae5930bec6a --- /dev/null +++ b/ydb/core/tx/columnshard/engines/changes/actualization/controller/controller.h @@ -0,0 +1,31 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/changes/abstract/abstract.h> +#include <ydb/library/accessor/accessor.h> + +namespace NKikimr::NOlap::NActualizer { + +class TController { +private: + THashMap<NActualizer::TRWAddress, i32> ActualizationsInProgress; + ui32 GetLimitForAddress(const NActualizer::TRWAddress& address) const; + +public: + void StartActualization(const NActualizer::TRWAddress& address) { + AFL_VERIFY(++ActualizationsInProgress[address] <= (i32)GetLimitForAddress(address)); + } + + void FinishActualization(const NActualizer::TRWAddress& address) { + AFL_VERIFY(--ActualizationsInProgress[address] >= 0); + } + + bool IsNewTaskAvailable(const NActualizer::TRWAddress& address, const ui32 readyTemporaryTasks) const { + auto it = ActualizationsInProgress.find(address); + if (it == ActualizationsInProgress.end()) { + return readyTemporaryTasks < GetLimitForAddress(address); + } else { + return it->second + readyTemporaryTasks < GetLimitForAddress(address); + } + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/changes/actualization/controller/ya.make b/ydb/core/tx/columnshard/engines/changes/actualization/controller/ya.make new file mode 100644 index 000000000000..e92d5a71cdd6 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/changes/actualization/controller/ya.make @@ -0,0 +1,11 @@ +LIBRARY() + +SRCS( + controller.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/changes/abstract +) + +END() diff --git a/ydb/core/tx/columnshard/engines/changes/actualization/ya.make b/ydb/core/tx/columnshard/engines/changes/actualization/ya.make new file mode 100644 index 000000000000..4362b8dffa5e --- /dev/null +++ b/ydb/core/tx/columnshard/engines/changes/actualization/ya.make @@ -0,0 +1,8 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/engines/changes/actualization/construction + ydb/core/tx/columnshard/engines/changes/actualization/controller +) + +END() diff --git a/ydb/core/tx/columnshard/engines/changes/cleanup.cpp b/ydb/core/tx/columnshard/engines/changes/cleanup.cpp deleted file mode 100644 index e99f5730913e..000000000000 --- a/ydb/core/tx/columnshard/engines/changes/cleanup.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include "cleanup.h" -#include <ydb/core/tx/columnshard/columnshard_impl.h> -#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> -#include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> -#include <ydb/core/tx/columnshard/columnshard_schema.h> - -namespace NKikimr::NOlap { - -void TCleanupColumnEngineChanges::DoDebugString(TStringOutput& out) const { - if (ui32 dropped = PortionsToDrop.size()) { - out << "drop " << dropped << " portions"; - for (auto& portionInfo : PortionsToDrop) { - out << portionInfo.DebugString(); - } - } -} - -void TCleanupColumnEngineChanges::DoWriteIndex(NColumnShard::TColumnShard& self, TWriteIndexContext& context) { - self.IncCounter(NColumnShard::COUNTER_PORTIONS_ERASED, PortionsToDrop.size()); - THashSet<ui64> pathIds; - for (auto&& p : PortionsToDrop) { - auto removing = BlobsAction.GetRemoving(p); - for (auto&& r : p.Records) { - removing->DeclareRemove(r.BlobRange.BlobId); - } - pathIds.emplace(p.GetPathId()); - self.IncCounter(NColumnShard::COUNTER_RAW_BYTES_ERASED, p.RawBytesSum()); - } - for (auto&& p: pathIds) { - self.TablesManager.TryFinalizeDropPath(context.Txc, p); - } -} - -bool TCleanupColumnEngineChanges::DoApplyChanges(TColumnEngineForLogs& self, TApplyChangesContext& context) { - for (auto& portionInfo : PortionsToDrop) { - if (!self.ErasePortion(portionInfo)) { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "Cannot erase portion")("portion", portionInfo.DebugString()); - continue; - } - portionInfo.RemoveFromDatabase(context.DB); - } - - return true; -} - -void TCleanupColumnEngineChanges::DoStart(NColumnShard::TColumnShard& self) { - self.BackgroundController.StartCleanup(); -} - -void TCleanupColumnEngineChanges::DoWriteIndexComplete(NColumnShard::TColumnShard& /*self*/, TWriteIndexCompleteContext& context) { - context.TriggerActivity = NeedRepeat ? NColumnShard::TBackgroundActivity::Cleanup() : NColumnShard::TBackgroundActivity::None(); -} - -void TCleanupColumnEngineChanges::DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& /*context*/) { - self.BackgroundController.FinishCleanup(); -} - -NColumnShard::ECumulativeCounters TCleanupColumnEngineChanges::GetCounterIndex(const bool isSuccess) const { - return isSuccess ? NColumnShard::COUNTER_CLEANUP_SUCCESS : NColumnShard::COUNTER_CLEANUP_FAIL; -} - -} diff --git a/ydb/core/tx/columnshard/engines/changes/cleanup_portions.cpp b/ydb/core/tx/columnshard/engines/changes/cleanup_portions.cpp new file mode 100644 index 000000000000..3aa29ed01a13 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/changes/cleanup_portions.cpp @@ -0,0 +1,63 @@ +#include "cleanup_portions.h" +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> +#include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> +#include <ydb/core/tx/columnshard/columnshard_schema.h> + +namespace NKikimr::NOlap { + +void TCleanupPortionsColumnEngineChanges::DoDebugString(TStringOutput& out) const { + if (ui32 dropped = PortionsToDrop.size()) { + out << "drop " << dropped << " portions"; + for (auto& portionInfo : PortionsToDrop) { + out << portionInfo.DebugString(); + } + } +} + +void TCleanupPortionsColumnEngineChanges::DoWriteIndexOnExecute(NColumnShard::TColumnShard* self, TWriteIndexContext& context) { + THashSet<ui64> pathIds; + if (self) { + THashMap<TString, THashSet<TUnifiedBlobId>> blobIdsByStorage; + for (auto&& p : PortionsToDrop) { + p.RemoveFromDatabase(context.DBWrapper); + + p.FillBlobIdsByStorage(blobIdsByStorage, context.EngineLogs.GetVersionedIndex()); + pathIds.emplace(p.GetPathId()); + } + for (auto&& i : blobIdsByStorage) { + auto action = BlobsAction.GetRemoving(i.first); + for (auto&& b : i.second) { + action->DeclareRemove((TTabletId)self->TabletID(), b); + } + } + } +} + +void TCleanupPortionsColumnEngineChanges::DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) { + for (auto& portionInfo : PortionsToDrop) { + if (!context.EngineLogs.ErasePortion(portionInfo)) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "Cannot erase portion")("portion", portionInfo.DebugString()); + } + } + if (self) { + self->IncCounter(NColumnShard::COUNTER_PORTIONS_ERASED, PortionsToDrop.size()); + for (auto&& p : PortionsToDrop) { + self->IncCounter(NColumnShard::COUNTER_RAW_BYTES_ERASED, p.GetTotalRawBytes()); + } + } +} + +void TCleanupPortionsColumnEngineChanges::DoStart(NColumnShard::TColumnShard& self) { + self.BackgroundController.StartCleanupPortions(); +} + +void TCleanupPortionsColumnEngineChanges::DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& /*context*/) { + self.BackgroundController.FinishCleanupPortions(); +} + +NColumnShard::ECumulativeCounters TCleanupPortionsColumnEngineChanges::GetCounterIndex(const bool isSuccess) const { + return isSuccess ? NColumnShard::COUNTER_CLEANUP_SUCCESS : NColumnShard::COUNTER_CLEANUP_FAIL; +} + +} diff --git a/ydb/core/tx/columnshard/engines/changes/cleanup.h b/ydb/core/tx/columnshard/engines/changes/cleanup_portions.h similarity index 63% rename from ydb/core/tx/columnshard/engines/changes/cleanup.h rename to ydb/core/tx/columnshard/engines/changes/cleanup_portions.h index b5c47f81fc1e..f4addb74f048 100644 --- a/ydb/core/tx/columnshard/engines/changes/cleanup.h +++ b/ydb/core/tx/columnshard/engines/changes/cleanup_portions.h @@ -3,18 +3,18 @@ namespace NKikimr::NOlap { -class TCleanupColumnEngineChanges: public TColumnEngineChanges { +class TCleanupPortionsColumnEngineChanges: public TColumnEngineChanges { private: using TBase = TColumnEngineChanges; THashMap<TString, THashSet<NOlap::TEvictedBlob>> BlobsToForget; THashMap<TString, std::vector<std::shared_ptr<TPortionInfo>>> StoragePortions; protected: + virtual void DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) override; + virtual void DoWriteIndexOnExecute(NColumnShard::TColumnShard* self, TWriteIndexContext& context) override; + virtual void DoStart(NColumnShard::TColumnShard& self) override; virtual void DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& context) override; - virtual bool DoApplyChanges(TColumnEngineForLogs& self, TApplyChangesContext& context) override; virtual void DoDebugString(TStringOutput& out) const override; - virtual void DoWriteIndexComplete(NColumnShard::TColumnShard& self, TWriteIndexCompleteContext& context) override; - virtual void DoWriteIndex(NColumnShard::TColumnShard& self, TWriteIndexContext& context) override; virtual void DoCompile(TFinalizationContext& /*context*/) override { } virtual TConclusionStatus DoConstructBlobs(TConstructionContext& /*context*/) noexcept override { @@ -27,23 +27,17 @@ class TCleanupColumnEngineChanges: public TColumnEngineChanges { virtual ui64 DoCalcMemoryForUsage() const override { return 0; } -public: - TCleanupColumnEngineChanges(const std::shared_ptr<IStoragesManager>& storagesManager) - : TBase(storagesManager, StaticTypeName()) { - + virtual std::shared_ptr<NDataLocks::ILock> DoBuildDataLock() const override { + return std::make_shared<NDataLocks::TListPortionsLock>(TypeString() + "::" + GetTaskIdentifier(), PortionsToDrop); } +public: + TCleanupPortionsColumnEngineChanges(const std::shared_ptr<IStoragesManager>& storagesManager) + : TBase(storagesManager, NBlobOperations::EConsumer::CLEANUP_PORTIONS) { - virtual THashSet<TPortionAddress> GetTouchedPortions() const override { - THashSet<TPortionAddress> result; - for (const auto& portionInfo : PortionsToDrop) { - result.emplace(portionInfo.GetAddress()); - } - return result; } std::vector<TPortionInfo> PortionsToDrop; - bool NeedRepeat = false; virtual ui32 GetWritePortionsCount() const override { return 0; @@ -52,11 +46,11 @@ class TCleanupColumnEngineChanges: public TColumnEngineChanges { return nullptr; } virtual bool NeedWritePortion(const ui32 /*index*/) const override { - return true; + return false; } static TString StaticTypeName() { - return "CS::CLEANUP"; + return "CS::CLEANUP::PORTIONS"; } virtual TString TypeString() const override { diff --git a/ydb/core/tx/columnshard/engines/changes/cleanup_tables.cpp b/ydb/core/tx/columnshard/engines/changes/cleanup_tables.cpp new file mode 100644 index 000000000000..e600be9d6ef0 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/changes/cleanup_tables.cpp @@ -0,0 +1,42 @@ +#include "cleanup_tables.h" +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> +#include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> +#include <ydb/core/tx/columnshard/columnshard_schema.h> +#include <util/string/join.h> + +namespace NKikimr::NOlap { + +void TCleanupTablesColumnEngineChanges::DoDebugString(TStringOutput& out) const { + if (ui32 dropped = TablesToDrop.size()) { + out << "drop " << dropped << " tables: " << JoinSeq(",", TablesToDrop) << ";"; + } +} + +void TCleanupTablesColumnEngineChanges::DoWriteIndexOnExecute(NColumnShard::TColumnShard* self, TWriteIndexContext& context) { + if (self && context.DB) { + for (auto&& t : TablesToDrop) { + self->TablesManager.TryFinalizeDropPathOnExecute(*context.DB, t); + } + } +} + +void TCleanupTablesColumnEngineChanges::DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& /*context*/) { + for (auto&& t : TablesToDrop) { + self->TablesManager.TryFinalizeDropPathOnComplete(t); + } +} + +void TCleanupTablesColumnEngineChanges::DoStart(NColumnShard::TColumnShard& self) { + self.BackgroundController.StartCleanupTables(); +} + +void TCleanupTablesColumnEngineChanges::DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& /*context*/) { + self.BackgroundController.FinishCleanupTables(); +} + +NColumnShard::ECumulativeCounters TCleanupTablesColumnEngineChanges::GetCounterIndex(const bool isSuccess) const { + return isSuccess ? NColumnShard::COUNTER_CLEANUP_SUCCESS : NColumnShard::COUNTER_CLEANUP_FAIL; +} + +} diff --git a/ydb/core/tx/columnshard/engines/changes/cleanup_tables.h b/ydb/core/tx/columnshard/engines/changes/cleanup_tables.h new file mode 100644 index 000000000000..5f5b7a9bd00b --- /dev/null +++ b/ydb/core/tx/columnshard/engines/changes/cleanup_tables.h @@ -0,0 +1,59 @@ +#pragma once +#include "abstract/abstract.h" + +namespace NKikimr::NOlap { + +class TCleanupTablesColumnEngineChanges: public TColumnEngineChanges { +private: + using TBase = TColumnEngineChanges; +protected: + virtual void DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) override; + virtual void DoWriteIndexOnExecute(NColumnShard::TColumnShard* self, TWriteIndexContext& context) override; + + virtual void DoStart(NColumnShard::TColumnShard& self) override; + virtual void DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& context) override; + virtual void DoDebugString(TStringOutput& out) const override; + virtual void DoCompile(TFinalizationContext& /*context*/) override { + } + virtual TConclusionStatus DoConstructBlobs(TConstructionContext& /*context*/) noexcept override { + return TConclusionStatus::Success(); + } + virtual bool NeedConstruction() const override { + return false; + } + virtual NColumnShard::ECumulativeCounters GetCounterIndex(const bool isSuccess) const override; + virtual ui64 DoCalcMemoryForUsage() const override { + return 0; + } + virtual std::shared_ptr<NDataLocks::ILock> DoBuildDataLock() const override { + return std::make_shared<NDataLocks::TListTablesLock>(TypeString() + "::" + GetTaskIdentifier(), TablesToDrop); + } + +public: + TCleanupTablesColumnEngineChanges(const std::shared_ptr<IStoragesManager>& storagesManager) + : TBase(storagesManager, NBlobOperations::EConsumer::CLEANUP_TABLES) { + + } + + THashSet<ui64> TablesToDrop; + + virtual ui32 GetWritePortionsCount() const override { + return 0; + } + virtual TPortionInfoWithBlobs* GetWritePortionInfo(const ui32 /*index*/) override { + return nullptr; + } + virtual bool NeedWritePortion(const ui32 /*index*/) const override { + return false; + } + + static TString StaticTypeName() { + return "CS::CLEANUP::TABLES"; + } + + virtual TString TypeString() const override { + return StaticTypeName(); + } +}; + +} diff --git a/ydb/core/tx/columnshard/engines/changes/compaction.cpp b/ydb/core/tx/columnshard/engines/changes/compaction.cpp index 6ad04f33711c..24e1e8c5c0e5 100644 --- a/ydb/core/tx/columnshard/engines/changes/compaction.cpp +++ b/ydb/core/tx/columnshard/engines/changes/compaction.cpp @@ -27,34 +27,34 @@ void TCompactColumnEngineChanges::DoCompile(TFinalizationContext& context) { } } -bool TCompactColumnEngineChanges::DoApplyChanges(TColumnEngineForLogs& self, TApplyChangesContext& context) { - return TBase::DoApplyChanges(self, context); -} - -void TCompactColumnEngineChanges::DoWriteIndex(NColumnShard::TColumnShard& self, TWriteIndexContext& context) { - TBase::DoWriteIndex(self, context); -} - void TCompactColumnEngineChanges::DoStart(NColumnShard::TColumnShard& self) { TBase::DoStart(self); Y_ABORT_UNLESS(SwitchedPortions.size()); + THashMap<TString, THashSet<TBlobRange>> blobRanges; + auto& index = self.GetIndexAs<TColumnEngineForLogs>().GetVersionedIndex(); for (const auto& p : SwitchedPortions) { Y_ABORT_UNLESS(!p.Empty()); - auto action = BlobsAction.GetReading(p); - for (const auto& rec : p.Records) { - action->AddRange(rec.BlobRange); + p.FillBlobRangesByStorage(blobRanges, index); + } + + for (const auto& p : blobRanges) { + auto action = BlobsAction.GetReading(p.first); + for (auto&& b: p.second) { + action->AddRange(b); } } - self.BackgroundController.StartCompaction(NKikimr::NOlap::TPlanCompactionInfo(GranuleMeta->GetPathId()), *this); + self.BackgroundController.StartCompaction(NKikimr::NOlap::TPlanCompactionInfo(GranuleMeta->GetPathId())); NeedGranuleStatusProvide = true; GranuleMeta->OnCompactionStarted(); } -void TCompactColumnEngineChanges::DoWriteIndexComplete(NColumnShard::TColumnShard& self, TWriteIndexCompleteContext& context) { - TBase::DoWriteIndexComplete(self, context); - self.IncCounter(NColumnShard::COUNTER_COMPACTION_TIME, context.Duration.MilliSeconds()); +void TCompactColumnEngineChanges::DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) { + TBase::DoWriteIndexOnComplete(self, context); + if (self) { + self->IncCounter(NColumnShard::COUNTER_COMPACTION_TIME, context.Duration.MilliSeconds()); + } } void TCompactColumnEngineChanges::DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& context) { @@ -68,8 +68,8 @@ void TCompactColumnEngineChanges::DoOnFinish(NColumnShard::TColumnShard& self, T NeedGranuleStatusProvide = false; } -TCompactColumnEngineChanges::TCompactColumnEngineChanges(const TSplitSettings& splitSettings, std::shared_ptr<TGranuleMeta> granule, const std::vector<std::shared_ptr<TPortionInfo>>& portions, const TSaverContext& saverContext) - : TBase(splitSettings, saverContext, StaticTypeName()) +TCompactColumnEngineChanges::TCompactColumnEngineChanges(std::shared_ptr<TGranuleMeta> granule, const std::vector<std::shared_ptr<TPortionInfo>>& portions, const TSaverContext& saverContext) + : TBase(saverContext, NBlobOperations::EConsumer::GENERAL_COMPACTION) , GranuleMeta(granule) { Y_ABORT_UNLESS(GranuleMeta); @@ -87,12 +87,4 @@ TCompactColumnEngineChanges::~TCompactColumnEngineChanges() { Y_DEBUG_ABORT_UNLESS(!NActors::TlsActivationContext || !NeedGranuleStatusProvide); } -THashSet<TPortionAddress> TCompactColumnEngineChanges::GetTouchedPortions() const { - THashSet<TPortionAddress> result = TBase::GetTouchedPortions(); - for (auto&& i : SwitchedPortions) { - result.emplace(i.GetAddress()); - } - return result; -} - } diff --git a/ydb/core/tx/columnshard/engines/changes/compaction.h b/ydb/core/tx/columnshard/engines/changes/compaction.h index 7c033fdfbc0e..fc449e341459 100644 --- a/ydb/core/tx/columnshard/engines/changes/compaction.h +++ b/ydb/core/tx/columnshard/engines/changes/compaction.h @@ -14,23 +14,24 @@ class TCompactColumnEngineChanges: public TChangesWithAppend { protected: std::shared_ptr<TGranuleMeta> GranuleMeta; + virtual void DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) override; + virtual void DoStart(NColumnShard::TColumnShard& self) override; - virtual void DoWriteIndexComplete(NColumnShard::TColumnShard& self, TWriteIndexCompleteContext& context) override; virtual void DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& context) override; - virtual void DoWriteIndex(NColumnShard::TColumnShard& self, TWriteIndexContext& context) override; virtual void DoDebugString(TStringOutput& out) const override; virtual void DoCompile(TFinalizationContext& context) override; - virtual bool DoApplyChanges(TColumnEngineForLogs& self, TApplyChangesContext& context) override; virtual TPortionMeta::EProduced GetResultProducedClass() const = 0; virtual void OnAbortEmergency() override { NeedGranuleStatusProvide = false; } + virtual std::shared_ptr<NDataLocks::ILock> DoBuildDataLockImpl() const override { + return std::make_shared<NDataLocks::TListPortionsLock>(TypeString() + "::" + GetTaskIdentifier(), SwitchedPortions); + } + public: std::vector<TPortionInfo> SwitchedPortions; // Portions that would be replaced by new ones - virtual THashSet<TPortionAddress> GetTouchedPortions() const override; - - TCompactColumnEngineChanges(const TSplitSettings& splitSettings, std::shared_ptr<TGranuleMeta> granule, const std::vector<std::shared_ptr<TPortionInfo>>& portions, const TSaverContext& saverContext); + TCompactColumnEngineChanges(std::shared_ptr<TGranuleMeta> granule, const std::vector<std::shared_ptr<TPortionInfo>>& portions, const TSaverContext& saverContext); ~TCompactColumnEngineChanges(); static TString StaticTypeName() { diff --git a/ydb/core/tx/columnshard/engines/changes/compaction/column_portion_chunk.cpp b/ydb/core/tx/columnshard/engines/changes/compaction/column_portion_chunk.cpp index 7b1dbdb36198..09eed586ac20 100644 --- a/ydb/core/tx/columnshard/engines/changes/compaction/column_portion_chunk.cpp +++ b/ydb/core/tx/columnshard/engines/changes/compaction/column_portion_chunk.cpp @@ -2,37 +2,25 @@ #include <ydb/core/formats/arrow/common/validation.h> #include <ydb/core/tx/columnshard/splitter/simple.h> #include <ydb/core/tx/columnshard/engines/changes/counters/general.h> +#include <ydb/core/tx/columnshard/engines/storage/chunks/column.h> namespace NKikimr::NOlap::NCompaction { -std::vector<std::shared_ptr<IPortionDataChunk>> TChunkPreparation::DoInternalSplitImpl(const TColumnSaver& saver, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const std::vector<ui64>& splitSizes) const { - auto loader = SchemaInfo->GetColumnLoaderVerified(Record.ColumnId); - auto rb = NArrow::TStatusValidator::GetValid(loader->Apply(Data)); - - auto chunks = TSimpleSplitter(saver, counters).SplitBySizes(rb, Data, splitSizes); - std::vector<std::shared_ptr<IPortionDataChunk>> newChunks; - for (auto&& i : chunks) { - Y_ABORT_UNLESS(i.GetSlicedBatch()->num_columns() == 1); - newChunks.emplace_back(std::make_shared<TChunkPreparation>(saver.Apply(i.GetSlicedBatch()), i.GetSlicedBatch()->column(0), GetColumnId(), SchemaInfo)); - } - return newChunks; -} - std::shared_ptr<arrow::Array> TColumnPortion::AppendBlob(const TString& data, const TColumnRecord& columnChunk, ui32& remained) { -// if (CurrentPortionRecords + columnChunk.GetMeta().GetNumRowsVerified() <= Context.GetPortionRowsCountLimit() && -// columnChunk.GetMeta().GetRawBytesVerified() < Context.GetChunkRawBytesLimit() && +// if (CurrentPortionRecords + columnChunk.GetMeta().GetNumRows() <= Context.GetPortionRowsCountLimit() && +// columnChunk.GetMeta().GetRawBytes() < Context.GetChunkRawBytesLimit() && // data.size() < Context.GetChunkPackedBytesLimit() && -// columnChunk.GetMeta().GetRawBytesVerified() > Context.GetStorePackedChunkSizeLimit() && Context.GetSaver().IsHardPacker() && +// columnChunk.GetMeta().GetRawBytes() > Context.GetStorePackedChunkSizeLimit() && Context.GetSaver().IsHardPacker() && // Context.GetUseWholeChunksOptimization()) // { // NChanges::TGeneralCompactionCounters::OnFullBlobAppend(columnChunk.BlobRange.GetBlobSize()); // FlushBuffer(); // Chunks.emplace_back(std::make_shared<TChunkPreparation>(data, columnChunk, Context.GetSchemaInfo())); // PackedSize += Chunks.back()->GetPackedSize(); -// CurrentPortionRecords += columnChunk.GetMeta().GetNumRowsVerified(); +// CurrentPortionRecords += columnChunk.GetMeta().GetNumRows(); // return nullptr; // } else { - NChanges::TGeneralCompactionCounters::OnSplittedBlobAppend(columnChunk.BlobRange.GetBlobSize()); + NChanges::TGeneralCompactionCounters::OnSplittedBlobAppend(columnChunk.BlobRange.GetSize()); auto batch = NArrow::TStatusValidator::GetValid(Context.GetLoader()->Apply(data)); AFL_VERIFY(batch->num_columns() == 1); auto batchArray = batch->column(0); @@ -72,7 +60,7 @@ ui32 TColumnPortion::AppendSlice(const std::shared_ptr<arrow::Array>& a, const u bool TColumnPortion::FlushBuffer() { if (Builder->length()) { auto newArrayChunk = NArrow::TStatusValidator::GetValid(Builder->Finish()); - Chunks.emplace_back(std::make_shared<TChunkPreparation>(Context.GetSaver().Apply(newArrayChunk, Context.GetResultField()), newArrayChunk, Context.GetColumnId(), Context.GetSchemaInfo())); + Chunks.emplace_back(std::make_shared<NChunks::TChunkPreparation>(Context.GetSaver().Apply(newArrayChunk, Context.GetResultField()), newArrayChunk, TChunkAddress(Context.GetColumnId(), 0), ColumnInfo)); Builder = Context.MakeBuilder(); CurrentChunkRawSize = 0; PredictedPackedBytes = 0; diff --git a/ydb/core/tx/columnshard/engines/changes/compaction/column_portion_chunk.h b/ydb/core/tx/columnshard/engines/changes/compaction/column_portion_chunk.h index aa3a15ddceef..f1d4cbadd6cf 100644 --- a/ydb/core/tx/columnshard/engines/changes/compaction/column_portion_chunk.h +++ b/ydb/core/tx/columnshard/engines/changes/compaction/column_portion_chunk.h @@ -10,102 +10,6 @@ namespace NKikimr::NOlap::NCompaction { -class TChunkPreparation: public IPortionColumnChunk { -private: - using TBase = IPortionColumnChunk; - TString Data; - TColumnRecord Record; - ISnapshotSchema::TPtr SchemaInfo; - std::shared_ptr<arrow::Scalar> First; - std::shared_ptr<arrow::Scalar> Last; -protected: - virtual std::vector<std::shared_ptr<IPortionDataChunk>> DoInternalSplitImpl(const TColumnSaver& saver, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const std::vector<ui64>& splitSizes) const override; - virtual const TString& DoGetData() const override { - return Data; - } - virtual ui32 DoGetRecordsCountImpl() const override { - return Record.GetMeta().GetNumRowsVerified(); - } - virtual TString DoDebugString() const override { - return ""; - } - virtual TSimpleChunkMeta DoBuildSimpleChunkMeta() const override { - return Record.GetMeta(); - } - virtual std::shared_ptr<arrow::Scalar> DoGetFirstScalar() const override { - return First; - } - virtual std::shared_ptr<arrow::Scalar> DoGetLastScalar() const override { - return Last; - } - -public: - const TColumnRecord& GetRecord() const { - return Record; - } - - TChunkPreparation(const TString& data, const TColumnRecord& columnChunk, ISnapshotSchema::TPtr schema) - : TBase(columnChunk.ColumnId) - , Data(data) - , Record(columnChunk) - , SchemaInfo(schema) { - Y_ABORT_UNLESS(Data.size() == Record.BlobRange.Size || columnChunk.BlobRange.Size == 0); - } - - TChunkPreparation(const TString& data, const std::shared_ptr<arrow::Array>& column, const ui32 columnId, ISnapshotSchema::TPtr schema) - : TBase(columnId) - , Data(data) - , Record(TChunkAddress(columnId, 0), column, schema->GetIndexInfo()) - , SchemaInfo(schema) { - Y_ABORT_UNLESS(column->length()); - First = NArrow::TStatusValidator::GetValid(column->GetScalar(0)); - Last = NArrow::TStatusValidator::GetValid(column->GetScalar(column->length() - 1)); - Record.BlobRange.Size = data.size(); - } -}; - -class TNullChunkPreparation: public IPortionColumnChunk { -private: - using TBase = IPortionColumnChunk; - const ui32 RecordsCount; - TString Data; -protected: - virtual std::vector<std::shared_ptr<IPortionDataChunk>> DoInternalSplitImpl(const TColumnSaver& /*saver*/, const std::shared_ptr<NColumnShard::TSplitterCounters>& /*counters*/, - const std::vector<ui64>& /*splitSizes*/) const override { - AFL_VERIFY(false); - return {}; - } - virtual const TString& DoGetData() const override { - return Data; - } - virtual ui32 DoGetRecordsCountImpl() const override { - return RecordsCount; - } - virtual TString DoDebugString() const override { - return TStringBuilder() << "rc=" << RecordsCount << ";data_size=" << Data.size() << ";"; - } - virtual TSimpleChunkMeta DoBuildSimpleChunkMeta() const override { - AFL_VERIFY(false); - return TSimpleChunkMeta(nullptr, false, false); - } - virtual std::shared_ptr<arrow::Scalar> DoGetFirstScalar() const override { - return nullptr; - } - virtual std::shared_ptr<arrow::Scalar> DoGetLastScalar() const override { - return nullptr; - } - -public: - TNullChunkPreparation(const ui32 columnId, const ui32 recordsCount, const std::shared_ptr<arrow::Field>& f, const TColumnSaver& saver) - : TBase(columnId) - , RecordsCount(recordsCount) - , Data(saver.Apply(NArrow::TThreadSimpleArraysCache::GetNull(f->type(), recordsCount), f)) - { - Y_ABORT_UNLESS(RecordsCount); - SetChunkIdx(0); - } -}; - class TColumnPortionResult { protected: std::vector<std::shared_ptr<IPortionDataChunk>> Chunks; @@ -143,10 +47,13 @@ class TColumnPortion: public TColumnPortionResult { const TColumnMergeContext& Context; YDB_READONLY(ui64, CurrentChunkRawSize, 0); double PredictedPackedBytes = 0; + const TSimpleColumnInfo ColumnInfo; public: TColumnPortion(const TColumnMergeContext& context) : TBase(context.GetColumnId()) - , Context(context) { + , Context(context) + , ColumnInfo(Context.GetIndexInfo().GetColumnFeaturesVerified(context.GetColumnId())) + { Builder = Context.MakeBuilder(); } diff --git a/ydb/core/tx/columnshard/engines/changes/compaction/merge_context.h b/ydb/core/tx/columnshard/engines/changes/compaction/merge_context.h index 834ca2293154..a5da857c2aff 100644 --- a/ydb/core/tx/columnshard/engines/changes/compaction/merge_context.h +++ b/ydb/core/tx/columnshard/engines/changes/compaction/merge_context.h @@ -42,10 +42,10 @@ class TColumnMergeContext { } TColumnMergeContext(const ui32 columnId, const ISnapshotSchema::TPtr& schema, const ui32 portionRowsCountLimit, const ui32 chunkRawBytesLimit, - const std::optional<TColumnSerializationStat>& columnStat, const TSaverContext& saverContext) + const std::optional<TColumnSerializationStat>& columnStat) : ColumnId(columnId) , SchemaInfo(schema) - , Saver(schema->GetColumnSaver(columnId, saverContext)) + , Saver(schema->GetColumnSaver(columnId)) , Loader(schema->GetColumnLoaderOptional(columnId)) , ResultField(schema->GetIndexInfo().GetColumnFieldVerified(columnId)) , PortionRowsCountLimit(portionRowsCountLimit) diff --git a/ydb/core/tx/columnshard/engines/changes/compaction/merged_column.cpp b/ydb/core/tx/columnshard/engines/changes/compaction/merged_column.cpp index ed03a8fcf523..5f638a30f155 100644 --- a/ydb/core/tx/columnshard/engines/changes/compaction/merged_column.cpp +++ b/ydb/core/tx/columnshard/engines/changes/compaction/merged_column.cpp @@ -3,7 +3,7 @@ namespace NKikimr::NOlap::NCompaction { void TMergedColumn::AppendBlob(const TString& data, const TColumnRecord& columnChunk) { - RecordsCount += columnChunk.GetMeta().GetNumRowsVerified(); + RecordsCount += columnChunk.GetMeta().GetNumRows(); ui32 remained; std::shared_ptr<arrow::Array> dataArray = Portions.back().AppendBlob(data, columnChunk, remained); while (remained) { diff --git a/ydb/core/tx/columnshard/engines/changes/general_compaction.cpp b/ydb/core/tx/columnshard/engines/changes/general_compaction.cpp index 2b47f9b8a736..14dad1e76bb8 100644 --- a/ydb/core/tx/columnshard/engines/changes/general_compaction.cpp +++ b/ydb/core/tx/columnshard/engines/changes/general_compaction.cpp @@ -11,20 +11,21 @@ #include <ydb/core/formats/arrow/simple_builder/filler.h> #include <ydb/core/tx/columnshard/columnshard_impl.h> #include <ydb/core/tx/columnshard/engines/portions/with_blobs.h> +#include <ydb/core/tx/columnshard/engines/storage/chunks/null_column.h> #include <ydb/core/tx/columnshard/splitter/batch_slice.h> -#include <ydb/core/tx/columnshard/splitter/rb_splitter.h> +#include <ydb/core/tx/columnshard/splitter/settings.h> +#include <ydb/core/formats/arrow/reader/merger.h> namespace NKikimr::NOlap::NCompaction { -void TGeneralCompactColumnEngineChanges::BuildAppendedPortionsByFullBatches(TConstructionContext& context) noexcept { - std::vector<TPortionInfoWithBlobs> portions = TPortionInfoWithBlobs::RestorePortions(SwitchedPortions, Blobs); +void TGeneralCompactColumnEngineChanges::BuildAppendedPortionsByFullBatches(TConstructionContext& context, std::vector<TPortionInfoWithBlobs>&& portions) noexcept { std::vector<std::shared_ptr<arrow::RecordBatch>> batchResults; auto resultSchema = context.SchemaVersions.GetLastSchema(); { auto resultDataSchema = resultSchema->GetIndexInfo().ArrowSchemaWithSpecials(); - NIndexedReader::TMergePartialStream mergeStream(resultSchema->GetIndexInfo().GetReplaceKey(), resultDataSchema, false); + NArrow::NMerger::TMergePartialStream mergeStream(resultSchema->GetIndexInfo().GetReplaceKey(), resultDataSchema, false, IIndexInfo::GetSpecialColumnNames()); for (auto&& i : portions) { - auto dataSchema = context.SchemaVersions.GetSchema(i.GetPortionInfo().GetMinSnapshot()); + auto dataSchema = i.GetPortionInfo().GetSchema(context.SchemaVersions); auto batch = i.GetBatch(dataSchema, *resultSchema); batch = resultSchema->NormalizeBatch(*dataSchema, batch); Y_DEBUG_ABORT_UNLESS(NArrow::IsSortedAndUnique(batch, resultSchema->GetIndexInfo().GetReplaceKey())); @@ -34,7 +35,7 @@ void TGeneralCompactColumnEngineChanges::BuildAppendedPortionsByFullBatches(TCon } Y_ABORT_UNLESS(batchResults.size()); for (auto&& b : batchResults) { - auto portions = MakeAppendedPortions(b, GranuleMeta->GetPathId(), resultSchema->GetSnapshot(), GranuleMeta.get(), context); + auto portions = MakeAppendedPortions(b, GranuleMeta->GetPathId(), resultSchema->GetSnapshot(), GranuleMeta.get(), context, {}); Y_ABORT_UNLESS(portions.size()); for (auto& portion : portions) { AppendedPortions.emplace_back(std::move(portion)); @@ -42,14 +43,14 @@ void TGeneralCompactColumnEngineChanges::BuildAppendedPortionsByFullBatches(TCon } } -void TGeneralCompactColumnEngineChanges::BuildAppendedPortionsByChunks(TConstructionContext& context) noexcept { - std::vector<TPortionInfoWithBlobs> portions = TPortionInfoWithBlobs::RestorePortions(SwitchedPortions, Blobs); +void TGeneralCompactColumnEngineChanges::BuildAppendedPortionsByChunks(TConstructionContext& context, std::vector<TPortionInfoWithBlobs>&& portions) noexcept { static const TString portionIdFieldName = "$$__portion_id"; static const TString portionRecordIndexFieldName = "$$__portion_record_idx"; static const std::shared_ptr<arrow::Field> portionIdField = std::make_shared<arrow::Field>(portionIdFieldName, std::make_shared<arrow::UInt16Type>()); static const std::shared_ptr<arrow::Field> portionRecordIndexField = std::make_shared<arrow::Field>(portionRecordIndexFieldName, std::make_shared<arrow::UInt32Type>()); auto resultSchema = context.SchemaVersions.GetLastSchema(); + std::vector<std::string> pkFieldNames = resultSchema->GetIndexInfo().GetReplaceKey()->field_names(); std::set<std::string> pkFieldNamesSet(pkFieldNames.begin(), pkFieldNames.end()); for (auto&& i : TIndexInfo::GetSpecialColumnNames()) { @@ -65,10 +66,10 @@ void TGeneralCompactColumnEngineChanges::BuildAppendedPortionsByChunks(TConstruc indexFields.emplace_back(i); } auto dataSchema = std::make_shared<arrow::Schema>(indexFields); - NIndexedReader::TMergePartialStream mergeStream(resultSchema->GetIndexInfo().GetReplaceKey(), dataSchema, false); + NArrow::NMerger::TMergePartialStream mergeStream(resultSchema->GetIndexInfo().GetReplaceKey(), dataSchema, false, IIndexInfo::GetSpecialColumnNames()); ui32 idx = 0; for (auto&& i : portions) { - auto dataSchema = context.SchemaVersions.GetSchema(i.GetPortionInfo().GetMinSnapshot()); + auto dataSchema = i.GetPortionInfo().GetSchema(context.SchemaVersions); auto batch = i.GetBatch(dataSchema, *resultSchema, pkFieldNamesSet); { NArrow::NConstruction::IArrayBuilder::TPtr column = std::make_shared<NArrow::NConstruction::TSimpleArrayConstructor<NArrow::NConstruction::TIntConstFiller<arrow::UInt16Type>>>(portionIdFieldName, idx++); @@ -99,14 +100,14 @@ void TGeneralCompactColumnEngineChanges::BuildAppendedPortionsByChunks(TConstruc std::vector<TPortionColumnCursor> cursors; for (auto&& p : portions) { - auto dataSchema = context.SchemaVersions.GetSchema(p.GetPortionInfo().GetMinSnapshot()); + auto dataSchema = p.GetPortionInfo().GetSchema(context.SchemaVersions); auto loader = dataSchema->GetColumnLoaderOptional(columnId); std::vector<const TColumnRecord*> records; std::vector<std::shared_ptr<IPortionDataChunk>> chunks; if (!p.ExtractColumnChunks(columnId, records, chunks)) { AFL_VERIFY(!loader); records = {nullptr}; - chunks.emplace_back(std::make_shared<TNullChunkPreparation>(columnId, p.GetPortionInfo().GetRecordsCount(), resultField, resultSchema->GetColumnSaver(columnId, SaverContext))); + chunks.emplace_back(std::make_shared<NChunks::TNullChunkPreparation>(columnId, p.GetPortionInfo().GetRecordsCount(), resultField, resultSchema->GetColumnSaver(columnId))); loader = resultSchema->GetColumnLoaderVerified(columnId); } AFL_VERIFY(!!loader); @@ -118,8 +119,8 @@ void TGeneralCompactColumnEngineChanges::BuildAppendedPortionsByChunks(TConstruc std::map<std::string, std::vector<TColumnPortionResult>> columnChunks; ui32 batchIdx = 0; for (auto&& batchResult : batchResults) { - const ui32 portionRecordsCountLimit = batchResult->num_rows() / (batchResult->num_rows() / GetSplitSettings().GetExpectedRecordsCountOnPage() + 1) + 1; - TColumnMergeContext context(columnId, resultSchema, portionRecordsCountLimit, GetSplitSettings().GetExpectedUnpackColumnChunkRawSize(), columnInfo, SaverContext); + const ui32 portionRecordsCountLimit = batchResult->num_rows() / (batchResult->num_rows() / NSplitter::TSplitSettings().GetExpectedRecordsCountOnPage() + 1) + 1; + TColumnMergeContext context(columnId, resultSchema, portionRecordsCountLimit, NSplitter::TSplitSettings().GetExpectedUnpackColumnChunkRawSize(), columnInfo); TMergedColumn mColumn(context); auto columnPortionIdx = batchResult->GetColumnByName(portionIdFieldName); @@ -159,6 +160,8 @@ void TGeneralCompactColumnEngineChanges::BuildAppendedPortionsByChunks(TConstruc } ui32 batchIdx = 0; + + const auto groups = resultSchema->GetIndexInfo().GetEntityGroupsByStorageId(IStoragesManager::DefaultStorageId, *SaverContext.GetStoragesManager()); for (auto&& columnChunks : chunkGroups) { auto batchResult = batchResults[batchIdx]; ++batchIdx; @@ -174,28 +177,29 @@ void TGeneralCompactColumnEngineChanges::BuildAppendedPortionsByChunks(TConstruc } std::vector<TGeneralSerializedSlice> batchSlices; - std::shared_ptr<TDefaultSchemaDetails> schemaDetails(new TDefaultSchemaDetails(resultSchema, SaverContext, stats)); + std::shared_ptr<TDefaultSchemaDetails> schemaDetails(new TDefaultSchemaDetails(resultSchema, stats)); for (ui32 i = 0; i < columnChunks.begin()->second.size(); ++i) { - std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> portionColumns; + THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> portionColumns; for (auto&& p : columnChunks) { portionColumns.emplace(p.first, p.second[i].GetChunks()); } resultSchema->GetIndexInfo().AppendIndexes(portionColumns); - batchSlices.emplace_back(portionColumns, schemaDetails, context.Counters.SplitterCounters, GetSplitSettings()); + batchSlices.emplace_back(portionColumns, schemaDetails, context.Counters.SplitterCounters); } - TSimilarSlicer slicer(GetSplitSettings().GetExpectedPortionSize()); + TSimilarPacker slicer(NSplitter::TSplitSettings().GetExpectedPortionSize()); auto packs = slicer.Split(batchSlices); ui32 recordIdx = 0; for (auto&& i : packs) { TGeneralSerializedSlice slice(std::move(i)); auto b = batchResult->Slice(recordIdx, slice.GetRecordsCount()); - std::vector<std::vector<std::shared_ptr<IPortionDataChunk>>> chunksByBlobs = slice.GroupChunksByBlobs(); - AppendedPortions.emplace_back(TPortionInfoWithBlobs::BuildByBlobs(chunksByBlobs, nullptr, GranuleMeta->GetPathId(), resultSchema->GetSnapshot(), SaverContext.GetStorageOperator())); + AppendedPortions.emplace_back(TPortionInfoWithBlobs::BuildByBlobs(slice.GroupChunksByBlobs(groups), nullptr, GranuleMeta->GetPathId(), + resultSchema->GetVersion(), resultSchema->GetSnapshot(), SaverContext.GetStoragesManager())); + AppendedPortions.back().FillStatistics(resultSchema->GetIndexInfo()); NArrow::TFirstLastSpecialKeys primaryKeys(slice.GetFirstLastPKBatch(resultSchema->GetIndexInfo().GetReplaceKey())); NArrow::TMinMaxSpecialKeys snapshotKeys(b, TIndexInfo::ArrowSchemaSnapshot()); - AppendedPortions.back().GetPortionInfo().AddMetadata(*resultSchema, primaryKeys, snapshotKeys, SaverContext.GetTierName()); + AppendedPortions.back().GetPortionInfo().AddMetadata(*resultSchema, primaryKeys, snapshotKeys, IStoragesManager::DefaultStorageId); recordIdx += slice.GetRecordsCount(); } } @@ -209,22 +213,25 @@ TConclusionStatus TGeneralCompactColumnEngineChanges::DoConstructBlobs(TConstruc i64 otherPortionsSize = 0; for (auto&& i : SwitchedPortions) { if (i.GetMeta().GetProduced() == TPortionMeta::EProduced::INSERTED) { - insertedPortionsSize += i.GetBlobBytes(); + insertedPortionsSize += i.GetTotalBlobBytes(); } else if (i.GetMeta().GetProduced() == TPortionMeta::EProduced::SPLIT_COMPACTED) { - compactedPortionsSize += i.GetBlobBytes(); + compactedPortionsSize += i.GetTotalBlobBytes(); } else { - otherPortionsSize += i.GetBlobBytes(); + otherPortionsSize += i.GetTotalBlobBytes(); } - portionsSize += i.GetBlobBytes(); + portionsSize += i.GetTotalBlobBytes(); ++portionsCount; } NChanges::TGeneralCompactionCounters::OnPortionsKind(insertedPortionsSize, compactedPortionsSize, otherPortionsSize); NChanges::TGeneralCompactionCounters::OnRepackPortions(portionsCount, portionsSize); - if (!HasAppData() || AppDataVerified().ColumnShardConfig.GetUseChunkedMergeOnCompaction()) { - BuildAppendedPortionsByChunks(context); - } else { - BuildAppendedPortionsByFullBatches(context); + { + std::vector<TPortionInfoWithBlobs> portions = TPortionInfoWithBlobs::RestorePortions(SwitchedPortions, Blobs, context.SchemaVersions, SaverContext.GetStoragesManager()); + if (!HasAppData() || AppDataVerified().ColumnShardConfig.GetUseChunkedMergeOnCompaction()) { + BuildAppendedPortionsByChunks(context, std::move(portions)); + } else { + BuildAppendedPortionsByFullBatches(context, std::move(portions)); + } } if (IS_DEBUG_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD)) { @@ -246,24 +253,26 @@ TConclusionStatus TGeneralCompactColumnEngineChanges::DoConstructBlobs(TConstruc return TConclusionStatus::Success(); } -void TGeneralCompactColumnEngineChanges::DoWriteIndexComplete(NColumnShard::TColumnShard& self, TWriteIndexCompleteContext& context) { - TBase::DoWriteIndexComplete(self, context); - self.IncCounter(context.FinishedSuccessfully ? NColumnShard::COUNTER_SPLIT_COMPACTION_SUCCESS : NColumnShard::COUNTER_SPLIT_COMPACTION_FAIL); - self.IncCounter(NColumnShard::COUNTER_SPLIT_COMPACTION_BLOBS_WRITTEN, context.BlobsWritten); - self.IncCounter(NColumnShard::COUNTER_SPLIT_COMPACTION_BYTES_WRITTEN, context.BytesWritten); +void TGeneralCompactColumnEngineChanges::DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) { + TBase::DoWriteIndexOnComplete(self, context); + if (self) { + self->IncCounter(context.FinishedSuccessfully ? NColumnShard::COUNTER_SPLIT_COMPACTION_SUCCESS : NColumnShard::COUNTER_SPLIT_COMPACTION_FAIL); + self->IncCounter(NColumnShard::COUNTER_SPLIT_COMPACTION_BLOBS_WRITTEN, context.BlobsWritten); + self->IncCounter(NColumnShard::COUNTER_SPLIT_COMPACTION_BYTES_WRITTEN, context.BytesWritten); + } } void TGeneralCompactColumnEngineChanges::DoStart(NColumnShard::TColumnShard& self) { TBase::DoStart(self); auto& g = *GranuleMeta; - self.CSCounters.OnSplitCompactionInfo(g.GetAdditiveSummary().GetCompacted().GetPortionsSize(), g.GetAdditiveSummary().GetCompacted().GetPortionsCount()); + self.CSCounters.OnSplitCompactionInfo(g.GetAdditiveSummary().GetCompacted().GetTotalPortionsSize(), g.GetAdditiveSummary().GetCompacted().GetPortionsCount()); } NColumnShard::ECumulativeCounters TGeneralCompactColumnEngineChanges::GetCounterIndex(const bool isSuccess) const { return isSuccess ? NColumnShard::COUNTER_COMPACTION_SUCCESS : NColumnShard::COUNTER_COMPACTION_FAIL; } -void TGeneralCompactColumnEngineChanges::AddCheckPoint(const NIndexedReader::TSortableBatchPosition& position, const bool include, const bool validationDuplications) { +void TGeneralCompactColumnEngineChanges::AddCheckPoint(const NArrow::NMerger::TSortableBatchPosition& position, const bool include, const bool validationDuplications) { AFL_VERIFY(CheckPoints.emplace(position, include).second || !validationDuplications); } @@ -283,10 +292,10 @@ ui64 TGeneralCompactColumnEngineChanges::TMemoryPredictorChunkedPolicy::AddPorti SumMemoryFix += i.BlobRange.Size; auto it = maxChunkSizeByColumn.find(i.GetColumnId()); if (it == maxChunkSizeByColumn.end()) { - maxChunkSizeByColumn.emplace(i.GetColumnId(), i.GetMeta().GetRawBytesVerified()); + maxChunkSizeByColumn.emplace(i.GetColumnId(), i.GetMeta().GetRawBytes()); } else { - if (it->second < i.GetMeta().GetRawBytesVerified()) { - it->second = i.GetMeta().GetRawBytesVerified(); + if (it->second < i.GetMeta().GetRawBytes()) { + it->second = i.GetMeta().GetRawBytes(); } } } diff --git a/ydb/core/tx/columnshard/engines/changes/general_compaction.h b/ydb/core/tx/columnshard/engines/changes/general_compaction.h index e337d3cc3dbc..df583585d9cf 100644 --- a/ydb/core/tx/columnshard/engines/changes/general_compaction.h +++ b/ydb/core/tx/columnshard/engines/changes/general_compaction.h @@ -1,16 +1,16 @@ #pragma once #include "compaction.h" -#include <ydb/core/formats/arrow/reader/read_filter_merger.h> +#include <ydb/core/formats/arrow/reader/position.h> namespace NKikimr::NOlap::NCompaction { class TGeneralCompactColumnEngineChanges: public TCompactColumnEngineChanges { private: using TBase = TCompactColumnEngineChanges; - virtual void DoWriteIndexComplete(NColumnShard::TColumnShard& self, TWriteIndexCompleteContext& context) override; - std::map<NIndexedReader::TSortableBatchPosition, bool> CheckPoints; - void BuildAppendedPortionsByFullBatches(TConstructionContext& context) noexcept; - void BuildAppendedPortionsByChunks(TConstructionContext& context) noexcept; + virtual void DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) override; + std::map<NArrow::NMerger::TSortableBatchPosition, bool> CheckPoints; + void BuildAppendedPortionsByFullBatches(TConstructionContext& context, std::vector<TPortionInfoWithBlobs>&& portions) noexcept; + void BuildAppendedPortionsByChunks(TConstructionContext& context, std::vector<TPortionInfoWithBlobs>&& portions) noexcept; protected: virtual TConclusionStatus DoConstructBlobs(TConstructionContext& context) noexcept override; virtual TPortionMeta::EProduced GetResultProducedClass() const override { @@ -36,7 +36,7 @@ class TGeneralCompactColumnEngineChanges: public TCompactColumnEngineChanges { virtual ui64 AddPortion(const TPortionInfo& portionInfo) override { for (auto&& i : portionInfo.GetRecords()) { SumMemory += i.BlobRange.Size; - SumMemory += 2 * i.GetMeta().GetRawBytesVerified(); + SumMemory += 2 * i.GetMeta().GetRawBytes(); } return SumMemory; } @@ -54,7 +54,7 @@ class TGeneralCompactColumnEngineChanges: public TCompactColumnEngineChanges { static std::shared_ptr<IMemoryPredictor> BuildMemoryPredictor(); - void AddCheckPoint(const NIndexedReader::TSortableBatchPosition& position, const bool include = true, const bool validationDuplications = true); + void AddCheckPoint(const NArrow::NMerger::TSortableBatchPosition& position, const bool include = true, const bool validationDuplications = true); virtual TString TypeString() const override { return StaticTypeName(); diff --git a/ydb/core/tx/columnshard/engines/changes/indexation.cpp b/ydb/core/tx/columnshard/engines/changes/indexation.cpp index f91fcb099f42..ffbac159cc2a 100644 --- a/ydb/core/tx/columnshard/engines/changes/indexation.cpp +++ b/ydb/core/tx/columnshard/engines/changes/indexation.cpp @@ -4,24 +4,19 @@ #include <ydb/core/tx/columnshard/columnshard_impl.h> #include <ydb/core/tx/columnshard/blobs_action/blob_manager_db.h> #include <ydb/core/formats/arrow/serializer/native.h> +#include <ydb/core/formats/arrow/reader/position.h> +#include <ydb/core/formats/arrow/reader/merger.h> +#include <ydb/core/formats/arrow/reader/result_builder.h> namespace NKikimr::NOlap { -bool TInsertColumnEngineChanges::DoApplyChanges(TColumnEngineForLogs& self, TApplyChangesContext& context) { - if (!TBase::DoApplyChanges(self, context)) { - return false; - } - return true; -} - -void TInsertColumnEngineChanges::DoWriteIndex(NColumnShard::TColumnShard& self, TWriteIndexContext& context) { - TBase::DoWriteIndex(self, context); - auto removing = BlobsAction.GetRemoving(IStoragesManager::DefaultStorageId); - for (const auto& insertedData : DataToIndex) { - self.InsertTable->EraseCommitted(context.DBWrapper, insertedData, removing); - } - if (!DataToIndex.empty()) { - self.UpdateInsertTableCounters(); +void TInsertColumnEngineChanges::DoWriteIndexOnExecute(NColumnShard::TColumnShard* self, TWriteIndexContext& context) { + TBase::DoWriteIndexOnExecute(self, context); + if (self) { + auto removing = BlobsAction.GetRemoving(IStoragesManager::DefaultStorageId); + for (const auto& insertedData : DataToIndex) { + self->InsertTable->EraseCommittedOnExecute(context.DBWrapper, insertedData, removing); + } } } @@ -30,16 +25,25 @@ void TInsertColumnEngineChanges::DoStart(NColumnShard::TColumnShard& self) { Y_ABORT_UNLESS(DataToIndex.size()); auto reading = BlobsAction.GetReading(IStoragesManager::DefaultStorageId); for (auto&& insertedData : DataToIndex) { - reading->AddRange(insertedData.GetBlobRange(), insertedData.GetBlobData().value_or("")); + reading->AddRange(insertedData.GetBlobRange(), insertedData.GetBlobData()); } self.BackgroundController.StartIndexing(*this); } -void TInsertColumnEngineChanges::DoWriteIndexComplete(NColumnShard::TColumnShard& self, TWriteIndexCompleteContext& context) { - self.IncCounter(NColumnShard::COUNTER_INDEXING_BLOBS_WRITTEN, context.BlobsWritten); - self.IncCounter(NColumnShard::COUNTER_INDEXING_BYTES_WRITTEN, context.BytesWritten); - self.IncCounter(NColumnShard::COUNTER_INDEXING_TIME, context.Duration.MilliSeconds()); +void TInsertColumnEngineChanges::DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) { + TBase::DoWriteIndexOnComplete(self, context); + if (self) { + for (const auto& insertedData : DataToIndex) { + self->InsertTable->EraseCommittedOnComplete(insertedData); + } + if (!DataToIndex.empty()) { + self->UpdateInsertTableCounters(); + } + self->IncCounter(NColumnShard::COUNTER_INDEXING_BLOBS_WRITTEN, context.BlobsWritten); + self->IncCounter(NColumnShard::COUNTER_INDEXING_BYTES_WRITTEN, context.BytesWritten); + self->IncCounter(NColumnShard::COUNTER_INDEXING_TIME, context.Duration.MilliSeconds()); + } } void TInsertColumnEngineChanges::DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& /*context*/) { @@ -73,12 +77,10 @@ TConclusionStatus TInsertColumnEngineChanges::DoConstructBlobs(TConstructionCont std::shared_ptr<arrow::RecordBatch> batch; { - auto itBlobData = Blobs.find(blobRange); - Y_ABORT_UNLESS(itBlobData != Blobs.end(), "Data for range %s has not been read", blobRange.ToString().c_str()); - Y_ABORT_UNLESS(!itBlobData->second.empty(), "Blob data not present"); + const auto blobData = Blobs.Extract(IStoragesManager::DefaultStorageId, blobRange); + Y_ABORT_UNLESS(blobData.size(), "Blob data not present"); // Prepare batch - batch = NArrow::DeserializeBatch(itBlobData->second, indexInfo.ArrowSchema()); - Blobs.erase(itBlobData); + batch = NArrow::DeserializeBatch(blobData, indexInfo.ArrowSchema()); AFL_VERIFY(batch)("event", "cannot_parse") ("data_snapshot", TStringBuilder() << inserted.GetSnapshot()) ("index_snapshot", TStringBuilder() << blobSchema->GetSnapshot()); @@ -91,10 +93,10 @@ TConclusionStatus TInsertColumnEngineChanges::DoConstructBlobs(TConstructionCont Y_DEBUG_ABORT_UNLESS(NArrow::IsSorted(pathBatches[inserted.PathId].back(), resultSchema->GetIndexInfo().GetReplaceKey())); } - Y_ABORT_UNLESS(Blobs.empty()); + Y_ABORT_UNLESS(Blobs.IsEmpty()); const std::vector<std::string> comparableColumns = resultSchema->GetIndexInfo().GetReplaceKey()->field_names(); for (auto& [pathId, batches] : pathBatches) { - NIndexedReader::TMergePartialStream stream(resultSchema->GetIndexInfo().GetReplaceKey(), resultSchema->GetIndexInfo().ArrowSchemaWithSpecials(), false); + NArrow::NMerger::TMergePartialStream stream(resultSchema->GetIndexInfo().GetReplaceKey(), resultSchema->GetIndexInfo().ArrowSchemaWithSpecials(), false, IIndexInfo::GetSpecialColumnNames()); THashMap<std::string, ui64> fieldSizes; ui64 rowsCount = 0; for (auto&& batch : batches) { @@ -105,23 +107,24 @@ TConclusionStatus TInsertColumnEngineChanges::DoConstructBlobs(TConstructionCont rowsCount += batch->num_rows(); } - NIndexedReader::TRecordBatchBuilder builder(resultSchema->GetIndexInfo().ArrowSchemaWithSpecials()->fields(), rowsCount, fieldSizes); + NArrow::NMerger::TRecordBatchBuilder builder(resultSchema->GetIndexInfo().ArrowSchemaWithSpecials()->fields(), rowsCount, fieldSizes); stream.SetPossibleSameVersion(true); stream.DrainAll(builder); auto itGranule = PathToGranule.find(pathId); AFL_VERIFY(itGranule != PathToGranule.end()); - std::vector<std::shared_ptr<arrow::RecordBatch>> result = NIndexedReader::TSortableBatchPosition::SplitByBordersInSequentialContainer(builder.Finalize(), comparableColumns, itGranule->second); + std::vector<std::shared_ptr<arrow::RecordBatch>> result = NArrow::NMerger::TSortableBatchPosition::SplitByBordersInSequentialContainer(builder.Finalize(), comparableColumns, itGranule->second); for (auto&& b : result) { if (!b) { continue; } + std::optional<NArrow::NSerialization::TSerializerContainer> externalSaver; if (b->num_rows() < 100) { - SaverContext.SetExternalSerializer(NArrow::NSerialization::TSerializerContainer(std::make_shared<NArrow::NSerialization::TNativeSerializer>(arrow::Compression::type::UNCOMPRESSED))); + externalSaver = NArrow::NSerialization::TSerializerContainer(std::make_shared<NArrow::NSerialization::TNativeSerializer>(arrow::Compression::type::UNCOMPRESSED)); } else { - SaverContext.SetExternalSerializer(NArrow::NSerialization::TSerializerContainer(std::make_shared<NArrow::NSerialization::TNativeSerializer>(arrow::Compression::type::LZ4_FRAME))); + externalSaver = NArrow::NSerialization::TSerializerContainer(std::make_shared<NArrow::NSerialization::TNativeSerializer>(arrow::Compression::type::LZ4_FRAME)); } - auto portions = MakeAppendedPortions(b, pathId, maxSnapshot, nullptr, context); + auto portions = MakeAppendedPortions(b, pathId, maxSnapshot, nullptr, context, externalSaver); Y_ABORT_UNLESS(portions.size()); for (auto& portion : portions) { AppendedPortions.emplace_back(std::move(portion)); diff --git a/ydb/core/tx/columnshard/engines/changes/indexation.h b/ydb/core/tx/columnshard/engines/changes/indexation.h index 13c407c23d9b..95befd334c23 100644 --- a/ydb/core/tx/columnshard/engines/changes/indexation.h +++ b/ydb/core/tx/columnshard/engines/changes/indexation.h @@ -2,8 +2,8 @@ #include "abstract/abstract.h" #include "with_appended.h" #include <ydb/core/tx/columnshard/engines/insert_table/data.h> -#include <ydb/core/formats/arrow/reader/read_filter_merger.h> #include <util/generic/hash.h> +#include <ydb/core/formats/arrow/reader/position.h> namespace NKikimr::NOlap { @@ -14,11 +14,11 @@ class TInsertColumnEngineChanges: public TChangesWithAppend { const TIndexInfo& indexInfo, const TInsertedData& inserted) const; std::vector<NOlap::TInsertedData> DataToIndex; protected: + virtual void DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) override; + virtual void DoWriteIndexOnExecute(NColumnShard::TColumnShard* self, TWriteIndexContext& context) override; + virtual void DoStart(NColumnShard::TColumnShard& self) override; - virtual void DoWriteIndexComplete(NColumnShard::TColumnShard& self, TWriteIndexCompleteContext& context) override; - virtual bool DoApplyChanges(TColumnEngineForLogs& self, TApplyChangesContext& context) override; virtual void DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& context) override; - virtual void DoWriteIndex(NColumnShard::TColumnShard& self, TWriteIndexContext& context) override; virtual TConclusionStatus DoConstructBlobs(TConstructionContext& context) noexcept override; virtual NColumnShard::ECumulativeCounters GetCounterIndex(const bool isSuccess) const override; virtual ui64 DoCalcMemoryForUsage() const override { @@ -28,11 +28,16 @@ class TInsertColumnEngineChanges: public TChangesWithAppend { } return result; } + + virtual std::shared_ptr<NDataLocks::ILock> DoBuildDataLockImpl() const override { + return nullptr; + } + public: - THashMap<ui64, std::vector<NIndexedReader::TSortableBatchPosition>> PathToGranule; // pathId -> positions (sorted by pk) + THashMap<ui64, std::vector<NArrow::NMerger::TSortableBatchPosition>> PathToGranule; // pathId -> positions (sorted by pk) public: - TInsertColumnEngineChanges(std::vector<NOlap::TInsertedData>&& dataToIndex, const TSplitSettings& splitSettings, const TSaverContext& saverContext) - : TBase(splitSettings, saverContext, StaticTypeName()) + TInsertColumnEngineChanges(std::vector<NOlap::TInsertedData>&& dataToIndex, const TSaverContext& saverContext) + : TBase(saverContext, NBlobOperations::EConsumer::INDEXATION) , DataToIndex(std::move(dataToIndex)) { } @@ -41,10 +46,6 @@ class TInsertColumnEngineChanges: public TChangesWithAppend { return DataToIndex; } - virtual THashSet<TPortionAddress> GetTouchedPortions() const override { - return TBase::GetTouchedPortions(); - } - static TString StaticTypeName() { return "CS::INDEXATION"; } diff --git a/ydb/core/tx/columnshard/engines/changes/ttl.cpp b/ydb/core/tx/columnshard/engines/changes/ttl.cpp index 9a0ad102e54b..1caea149059e 100644 --- a/ydb/core/tx/columnshard/engines/changes/ttl.cpp +++ b/ydb/core/tx/columnshard/engines/changes/ttl.cpp @@ -9,63 +9,65 @@ namespace NKikimr::NOlap { void TTTLColumnEngineChanges::DoDebugString(TStringOutput& out) const { TBase::DoDebugString(out); - out << "eviction=" << PortionsToEvict.size() << ";"; + out << "eviction=" << PortionsToEvict.size() << ";address=" << RWAddress.DebugString() << ";"; } void TTTLColumnEngineChanges::DoStart(NColumnShard::TColumnShard& self) { Y_ABORT_UNLESS(PortionsToEvict.size() || PortionsToRemove.size()); + THashMap<TString, THashSet<TBlobRange>> blobRanges; + auto& engine = self.MutableIndexAs<TColumnEngineForLogs>(); + auto& index = engine.GetVersionedIndex(); for (const auto& p : PortionsToEvict) { Y_ABORT_UNLESS(!p.GetPortionInfo().Empty()); - - auto agent = BlobsAction.GetReading(p.GetPortionInfo()); - for (const auto& rec : p.GetPortionInfo().Records) { - agent->AddRange(rec.BlobRange); + p.GetPortionInfo().FillBlobRangesByStorage(blobRanges, index); + } + for (auto&& i : blobRanges) { + auto action = BlobsAction.GetReading(i.first); + for (auto&& b : i.second) { + action->AddRange(b); } } - self.BackgroundController.StartTtl(*this); + engine.GetActualizationController()->StartActualization(RWAddress); } void TTTLColumnEngineChanges::DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& /*context*/) { - self.BackgroundController.FinishTtl(); + auto& engine = self.MutableIndexAs<TColumnEngineForLogs>(); + engine.GetActualizationController()->FinishActualization(RWAddress); + if (IsAborted()) { + THashMap<ui64, THashSet<ui64>> restoreIndexAddresses; + for (auto&& i : PortionsToEvict) { + AFL_VERIFY(restoreIndexAddresses[i.GetPortionInfo().GetPathId()].emplace(i.GetPortionInfo().GetPortionId()).second); + } + for (auto&& i : PortionsToRemove) { + AFL_VERIFY(restoreIndexAddresses[i.first.GetPathId()].emplace(i.first.GetPortionId()).second); + } + engine.ReturnToIndexes(restoreIndexAddresses); + } } -std::optional<TPortionInfoWithBlobs> TTTLColumnEngineChanges::UpdateEvictedPortion(TPortionForEviction& info, THashMap<TBlobRange, TString>& srcBlobs, - TConstructionContext& context) const { +std::optional<TPortionInfoWithBlobs> TTTLColumnEngineChanges::UpdateEvictedPortion(TPortionForEviction& info, NBlobOperations::NRead::TCompositeReadBlobs& srcBlobs, + TConstructionContext& context) const +{ const TPortionInfo& portionInfo = info.GetPortionInfo(); auto& evictFeatures = info.GetFeatures(); - Y_ABORT_UNLESS(portionInfo.GetMeta().GetTierName() != evictFeatures.TargetTierName); - - auto* tiering = Tiering.FindPtr(evictFeatures.PathId); - Y_ABORT_UNLESS(tiering); - auto serializer = tiering->GetSerializer(evictFeatures.TargetTierName); - if (!serializer) { - // Nothing to recompress. We have no other kinds of evictions yet. - evictFeatures.DataChanges = false; - auto result = TPortionInfoWithBlobs::RestorePortion(portionInfo, srcBlobs); - result.GetPortionInfo().InitOperator(evictFeatures.StorageOperator, true); - result.GetPortionInfo().MutableMeta().SetTierName(evictFeatures.TargetTierName); - return result; - } + auto blobSchema = portionInfo.GetSchema(context.SchemaVersions); + Y_ABORT_UNLESS(portionInfo.GetMeta().GetTierName() != evictFeatures.GetTargetTierName() || blobSchema->GetVersion() < evictFeatures.GetTargetScheme()->GetVersion()); - auto blobSchema = context.SchemaVersions.GetSchema(portionInfo.GetMinSnapshot()); - auto resultSchema = context.SchemaVersions.GetLastSchema(); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("portion_for_eviction", portionInfo.DebugString()); + auto portionWithBlobs = TPortionInfoWithBlobs::RestorePortion(portionInfo, srcBlobs, blobSchema->GetIndexInfo(), SaverContext.GetStoragesManager()); + TPortionInfoWithBlobs result = TPortionInfoWithBlobs::SyncPortion( + std::move(portionWithBlobs), blobSchema, evictFeatures.GetTargetScheme(), evictFeatures.GetTargetTierName(), SaverContext.GetStoragesManager(), context.Counters.SplitterCounters); - TSaverContext saverContext(evictFeatures.StorageOperator, SaverContext.GetStoragesManager()); - saverContext.SetTierName(evictFeatures.TargetTierName).SetExternalSerializer(*serializer); - auto withBlobs = TPortionInfoWithBlobs::RestorePortion(portionInfo, srcBlobs); - withBlobs.GetPortionInfo().InitOperator(evictFeatures.StorageOperator, true); - withBlobs.GetPortionInfo().MutableMeta().SetTierName(evictFeatures.TargetTierName); - return withBlobs.ChangeSaver(resultSchema, saverContext); + result.GetPortionInfo().MutableMeta().SetTierName(evictFeatures.GetTargetTierName()); + return std::move(result); } NKikimr::TConclusionStatus TTTLColumnEngineChanges::DoConstructBlobs(TConstructionContext& context) noexcept { - Y_ABORT_UNLESS(!Blobs.empty()); + Y_ABORT_UNLESS(!Blobs.IsEmpty()); Y_ABORT_UNLESS(!PortionsToEvict.empty()); for (auto&& info : PortionsToEvict) { if (auto pwb = UpdateEvictedPortion(info, Blobs, context)) { - info.MutablePortionInfo().SetRemoveSnapshot(info.MutablePortionInfo().GetMinSnapshot()); + info.MutablePortionInfo().SetRemoveSnapshot(context.LastCommittedTx); AFL_VERIFY(PortionsToRemove.emplace(info.GetPortionInfo().GetAddress(), info.GetPortionInfo()).second); AppendedPortions.emplace_back(std::move(*pwb)); } diff --git a/ydb/core/tx/columnshard/engines/changes/ttl.h b/ydb/core/tx/columnshard/engines/changes/ttl.h index 5018d860bbb4..c9cb1a989d93 100644 --- a/ydb/core/tx/columnshard/engines/changes/ttl.h +++ b/ydb/core/tx/columnshard/engines/changes/ttl.h @@ -1,14 +1,15 @@ #pragma once #include "compaction.h" + +#include <ydb/core/tx/columnshard/engines/storage/actualizer/common/address.h> + #include <ydb/core/tx/columnshard/engines/scheme/tier_info.h> namespace NKikimr::NOlap { class TTTLColumnEngineChanges: public TChangesWithAppend { private: - using TPathIdBlobs = THashMap<ui64, THashSet<TUnifiedBlobId>>; using TBase = TChangesWithAppend; - THashMap<TString, TPathIdBlobs> ExportTierBlobs; class TPortionForEviction { private: @@ -39,11 +40,11 @@ class TTTLColumnEngineChanges: public TChangesWithAppend { } }; - std::optional<TPortionInfoWithBlobs> UpdateEvictedPortion(TPortionForEviction& info, THashMap<TBlobRange, TString>& srcBlobs, + std::optional<TPortionInfoWithBlobs> UpdateEvictedPortion(TPortionForEviction& info, NBlobOperations::NRead::TCompositeReadBlobs& srcBlobs, TConstructionContext& context) const; - std::vector<TPortionForEviction> PortionsToEvict; // {portion, TPortionEvictionFeatures} - + std::vector<TPortionForEviction> PortionsToEvict; + const NActualizer::TRWAddress RWAddress; protected: virtual void DoStart(NColumnShard::TColumnShard& self) override; virtual void DoOnFinish(NColumnShard::TColumnShard& self, TChangesFinishContext& context) override; @@ -58,6 +59,12 @@ class TTTLColumnEngineChanges: public TChangesWithAppend { } return result; } + virtual std::shared_ptr<NDataLocks::ILock> DoBuildDataLockImpl() const override { + const auto pred = [](const TPortionForEviction& p) { + return p.GetPortionInfo().GetAddress(); + }; + return std::make_shared<NDataLocks::TListPortionsLock>(TypeString() + "::" + RWAddress.DebugString() + "::" + GetTaskIdentifier(), PortionsToEvict, pred); + } public: class TMemoryPredictorSimplePolicy: public IMemoryPredictor { private: @@ -65,14 +72,18 @@ class TTTLColumnEngineChanges: public TChangesWithAppend { ui64 MaxRawMemory = 0; public: virtual ui64 AddPortion(const TPortionInfo& portionInfo) override { - if (MaxRawMemory < portionInfo.GetRawBytes()) { - MaxRawMemory = portionInfo.GetRawBytes(); + if (MaxRawMemory < portionInfo.GetTotalRawBytes()) { + MaxRawMemory = portionInfo.GetTotalRawBytes(); } - SumBlobsMemory += portionInfo.GetBlobBytes(); + SumBlobsMemory += portionInfo.GetTotalBlobBytes(); return SumBlobsMemory + MaxRawMemory; } }; + const NActualizer::TRWAddress& GetRWAddress() const { + return RWAddress; + } + static std::shared_ptr<IMemoryPredictor> BuildMemoryPredictor() { return std::make_shared<TMemoryPredictorSimplePolicy>(); } @@ -80,16 +91,6 @@ class TTTLColumnEngineChanges: public TChangesWithAppend { virtual bool NeedConstruction() const override { return PortionsToEvict.size(); } - virtual THashSet<TPortionAddress> GetTouchedPortions() const override { - THashSet<TPortionAddress> result = TBase::GetTouchedPortions(); - for (auto&& info : PortionsToEvict) { - result.emplace(info.GetPortionInfo().GetAddress()); - } - return result; - } - - THashMap<ui64, NOlap::TTiering> Tiering; - ui32 GetPortionsToEvictCount() const { return PortionsToEvict.size(); } @@ -108,8 +109,10 @@ class TTTLColumnEngineChanges: public TChangesWithAppend { return StaticTypeName(); } - TTTLColumnEngineChanges(const TSplitSettings& splitSettings, const TSaverContext& saverContext) - : TBase(splitSettings, saverContext, StaticTypeName()) { + TTTLColumnEngineChanges(const NActualizer::TRWAddress& address, const TSaverContext& saverContext) + : TBase(saverContext, NBlobOperations::EConsumer::TTL) + , RWAddress(address) + { } diff --git a/ydb/core/tx/columnshard/engines/changes/with_appended.cpp b/ydb/core/tx/columnshard/engines/changes/with_appended.cpp index 8b47d79ffb80..a76bbb34f12c 100644 --- a/ydb/core/tx/columnshard/engines/changes/with_appended.cpp +++ b/ydb/core/tx/columnshard/engines/changes/with_appended.cpp @@ -2,77 +2,87 @@ #include <ydb/core/tx/columnshard/blob_cache.h> #include <ydb/core/tx/columnshard/columnshard_impl.h> #include <ydb/core/tx/columnshard/engines/column_engine_logs.h> -#include <ydb/core/tx/columnshard/splitter/rb_splitter.h> +#include <ydb/core/tx/columnshard/splitter/batch_slice.h> +#include <ydb/core/tx/columnshard/splitter/settings.h> namespace NKikimr::NOlap { -void TChangesWithAppend::DoWriteIndex(NColumnShard::TColumnShard& self, TWriteIndexContext& /*context*/) { - for (auto& portionInfo : AppendedPortions) { - switch (portionInfo.GetPortionInfo().GetMeta().Produced) { - case NOlap::TPortionMeta::EProduced::UNSPECIFIED: - Y_ABORT_UNLESS(false); // unexpected - case NOlap::TPortionMeta::EProduced::INSERTED: - self.IncCounter(NColumnShard::COUNTER_INDEXING_PORTIONS_WRITTEN); - break; - case NOlap::TPortionMeta::EProduced::COMPACTED: - self.IncCounter(NColumnShard::COUNTER_COMPACTION_PORTIONS_WRITTEN); - break; - case NOlap::TPortionMeta::EProduced::SPLIT_COMPACTED: - self.IncCounter(NColumnShard::COUNTER_SPLIT_COMPACTION_PORTIONS_WRITTEN); - break; - case NOlap::TPortionMeta::EProduced::EVICTED: - Y_ABORT("Unexpected evicted case"); - break; - case NOlap::TPortionMeta::EProduced::INACTIVE: - Y_ABORT("Unexpected inactive case"); - break; +void TChangesWithAppend::DoWriteIndexOnExecute(NColumnShard::TColumnShard* self, TWriteIndexContext& context) { + THashSet<ui64> usedPortionIds; + for (auto& [_, portionInfo] : PortionsToRemove) { + Y_ABORT_UNLESS(!portionInfo.Empty()); + Y_ABORT_UNLESS(portionInfo.HasRemoveSnapshot()); + AFL_VERIFY(usedPortionIds.emplace(portionInfo.GetPortionId()).second)("portion_info", portionInfo.DebugString(true)); + portionInfo.SaveToDatabase(context.DBWrapper); + } + const auto predRemoveDroppedTable = [self](const TPortionInfoWithBlobs& item) { + auto& portionInfo = item.GetPortionInfo(); + if (!!self && (!self->TablesManager.HasTable(portionInfo.GetPathId()) || self->TablesManager.GetTable(portionInfo.GetPathId()).IsDropped())) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_inserted_data")("reason", "table_removed")("path_id", portionInfo.GetPathId()); + return true; + } else { + return false; } + }; + AppendedPortions.erase(std::remove_if(AppendedPortions.begin(), AppendedPortions.end(), predRemoveDroppedTable), AppendedPortions.end()); + for (auto& portionInfoWithBlobs : AppendedPortions) { + auto& portionInfo = portionInfoWithBlobs.GetPortionInfo(); + Y_ABORT_UNLESS(!portionInfo.Empty()); + AFL_VERIFY(usedPortionIds.emplace(portionInfo.GetPortionId()).second)("portion_info", portionInfo.DebugString(true)); + portionInfo.SaveToDatabase(context.DBWrapper); } - self.IncCounter(NColumnShard::COUNTER_PORTIONS_DEACTIVATED, PortionsToRemove.size()); +} - THashSet<TUnifiedBlobId> blobsDeactivated; - for (auto& [_, portionInfo] : PortionsToRemove) { - for (auto& rec : portionInfo.Records) { - blobsDeactivated.insert(rec.BlobRange.BlobId); +void TChangesWithAppend::DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) { + if (self) { + for (auto& portionInfo : AppendedPortions) { + switch (portionInfo.GetPortionInfo().GetMeta().Produced) { + case NOlap::TPortionMeta::EProduced::UNSPECIFIED: + Y_ABORT_UNLESS(false); // unexpected + case NOlap::TPortionMeta::EProduced::INSERTED: + self->IncCounter(NColumnShard::COUNTER_INDEXING_PORTIONS_WRITTEN); + break; + case NOlap::TPortionMeta::EProduced::COMPACTED: + self->IncCounter(NColumnShard::COUNTER_COMPACTION_PORTIONS_WRITTEN); + break; + case NOlap::TPortionMeta::EProduced::SPLIT_COMPACTED: + self->IncCounter(NColumnShard::COUNTER_SPLIT_COMPACTION_PORTIONS_WRITTEN); + break; + case NOlap::TPortionMeta::EProduced::EVICTED: + Y_ABORT("Unexpected evicted case"); + break; + case NOlap::TPortionMeta::EProduced::INACTIVE: + Y_ABORT("Unexpected inactive case"); + break; + } } - self.IncCounter(NColumnShard::COUNTER_RAW_BYTES_DEACTIVATED, portionInfo.RawBytesSum()); - } + self->IncCounter(NColumnShard::COUNTER_PORTIONS_DEACTIVATED, PortionsToRemove.size()); - self.IncCounter(NColumnShard::COUNTER_BLOBS_DEACTIVATED, blobsDeactivated.size()); - for (auto& blobId : blobsDeactivated) { - self.IncCounter(NColumnShard::COUNTER_BYTES_DEACTIVATED, blobId.BlobSize()); - } -} + THashSet<TUnifiedBlobId> blobsDeactivated; + for (auto& [_, portionInfo] : PortionsToRemove) { + for (auto& rec : portionInfo.Records) { + blobsDeactivated.emplace(portionInfo.GetBlobId(rec.BlobRange.GetBlobIdxVerified())); + } + self->IncCounter(NColumnShard::COUNTER_RAW_BYTES_DEACTIVATED, portionInfo.GetTotalRawBytes()); + } -bool TChangesWithAppend::DoApplyChanges(TColumnEngineForLogs& self, TApplyChangesContext& context) { - // Save new portions (their column records) + self->IncCounter(NColumnShard::COUNTER_BLOBS_DEACTIVATED, blobsDeactivated.size()); + for (auto& blobId : blobsDeactivated) { + self->IncCounter(NColumnShard::COUNTER_BYTES_DEACTIVATED, blobId.BlobSize()); + } + } { - auto g = self.GranulesStorage->StartPackModification(); - THashSet<ui64> usedPortionIds; + auto g = context.EngineLogs.GranulesStorage->GetStats()->StartPackModification(); for (auto& [_, portionInfo] : PortionsToRemove) { - Y_ABORT_UNLESS(!portionInfo.Empty()); - Y_ABORT_UNLESS(portionInfo.HasRemoveSnapshot()); - - const TPortionInfo& oldInfo = self.GetGranuleVerified(portionInfo.GetPathId()).GetPortionVerified(portionInfo.GetPortion()); - AFL_VERIFY(usedPortionIds.emplace(portionInfo.GetPortionId()).second)("portion_info", portionInfo.DebugString(true)); - self.UpsertPortion(portionInfo, &oldInfo); - - portionInfo.SaveToDatabase(context.DB); + context.EngineLogs.CleanupPortions[portionInfo.GetRemoveSnapshotVerified()].emplace_back(portionInfo); + const TPortionInfo& oldInfo = context.EngineLogs.GetGranuleVerified(portionInfo.GetPathId()).GetPortionVerified(portionInfo.GetPortion()); + context.EngineLogs.UpsertPortion(portionInfo, &oldInfo); } for (auto& portionInfoWithBlobs : AppendedPortions) { auto& portionInfo = portionInfoWithBlobs.GetPortionInfo(); - Y_ABORT_UNLESS(!portionInfo.Empty()); - AFL_VERIFY(usedPortionIds.emplace(portionInfo.GetPortionId()).second)("portion_info", portionInfo.DebugString(true)); - self.UpsertPortion(portionInfo); - portionInfo.SaveToDatabase(context.DB); + context.EngineLogs.UpsertPortion(portionInfo); } } - - for (auto& [_, portionInfo] : PortionsToRemove) { - self.CleanupPortions[portionInfo.GetRemoveSnapshot()].emplace_back(portionInfo); - } - - return true; } void TChangesWithAppend::DoCompile(TFinalizationContext& context) { @@ -88,7 +98,7 @@ void TChangesWithAppend::DoCompile(TFinalizationContext& context) { } std::vector<TPortionInfoWithBlobs> TChangesWithAppend::MakeAppendedPortions(const std::shared_ptr<arrow::RecordBatch> batch, - const ui64 pathId, const TSnapshot& snapshot, const TGranuleMeta* granuleMeta, TConstructionContext& context) const { + const ui64 pathId, const TSnapshot& snapshot, const TGranuleMeta* granuleMeta, TConstructionContext& context, const std::optional<NArrow::NSerialization::TSerializerContainer>& overrideSaver) const { Y_ABORT_UNLESS(batch->num_rows()); auto resultSchema = context.SchemaVersions.GetSchema(snapshot); @@ -97,29 +107,33 @@ std::vector<TPortionInfoWithBlobs> TChangesWithAppend::MakeAppendedPortions(cons if (granuleMeta) { stats = granuleMeta->BuildSerializationStats(resultSchema); } - auto schema = std::make_shared<TDefaultSchemaDetails>(resultSchema, SaverContext, stats); + auto schema = std::make_shared<TDefaultSchemaDetails>(resultSchema, stats); + if (overrideSaver) { + schema->SetOverrideSerializer(*overrideSaver); + } std::vector<TPortionInfoWithBlobs> out; { - std::vector<TBatchSerializedSlice> pages = TRBSplitLimiter::BuildSimpleSlices(batch, SplitSettings, context.Counters.SplitterCounters, schema); + std::vector<TBatchSerializedSlice> pages = TBatchSerializedSlice::BuildSimpleSlices(batch, NSplitter::TSplitSettings(), context.Counters.SplitterCounters, schema); std::vector<TGeneralSerializedSlice> generalPages; for (auto&& i : pages) { - std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> portionColumns = i.GetPortionChunks(); + auto portionColumns = i.GetPortionChunksToHash(); resultSchema->GetIndexInfo().AppendIndexes(portionColumns); - generalPages.emplace_back(portionColumns, schema, context.Counters.SplitterCounters, SplitSettings); + generalPages.emplace_back(portionColumns, schema, context.Counters.SplitterCounters); } - TSimilarSlicer slicer(SplitSettings.GetExpectedPortionSize()); + const NSplitter::TEntityGroups groups = resultSchema->GetIndexInfo().GetEntityGroupsByStorageId(IStoragesManager::DefaultStorageId, *SaverContext.GetStoragesManager()); + TSimilarPacker slicer(NSplitter::TSplitSettings().GetExpectedPortionSize()); auto packs = slicer.Split(generalPages); ui32 recordIdx = 0; for (auto&& i : packs) { TGeneralSerializedSlice slice(std::move(i)); auto b = batch->Slice(recordIdx, slice.GetRecordsCount()); - std::vector<std::vector<std::shared_ptr<IPortionDataChunk>>> chunksByBlobs = slice.GroupChunksByBlobs(); - out.emplace_back(TPortionInfoWithBlobs::BuildByBlobs(chunksByBlobs, nullptr, pathId, snapshot, SaverContext.GetStorageOperator())); + out.emplace_back(TPortionInfoWithBlobs::BuildByBlobs(slice.GroupChunksByBlobs(groups), nullptr, pathId, resultSchema->GetVersion(), snapshot, SaverContext.GetStoragesManager())); + out.back().FillStatistics(resultSchema->GetIndexInfo()); NArrow::TFirstLastSpecialKeys primaryKeys(slice.GetFirstLastPKBatch(resultSchema->GetIndexInfo().GetReplaceKey())); NArrow::TMinMaxSpecialKeys snapshotKeys(b, TIndexInfo::ArrowSchemaSnapshot()); - out.back().GetPortionInfo().AddMetadata(*resultSchema, primaryKeys, snapshotKeys, SaverContext.GetTierName()); + out.back().GetPortionInfo().AddMetadata(*resultSchema, primaryKeys, snapshotKeys, IStoragesManager::DefaultStorageId); recordIdx += slice.GetRecordsCount(); } } diff --git a/ydb/core/tx/columnshard/engines/changes/with_appended.h b/ydb/core/tx/columnshard/engines/changes/with_appended.h index 779a3ab8a14f..ebac536d0110 100644 --- a/ydb/core/tx/columnshard/engines/changes/with_appended.h +++ b/ydb/core/tx/columnshard/engines/changes/with_appended.h @@ -11,43 +11,39 @@ class TChangesWithAppend: public TColumnEngineChanges { using TBase = TColumnEngineChanges; protected: - TSplitSettings SplitSettings; TSaverContext SaverContext; virtual void DoCompile(TFinalizationContext& context) override; - virtual bool DoApplyChanges(TColumnEngineForLogs& self, TApplyChangesContext& context) override; - virtual void DoWriteIndex(NColumnShard::TColumnShard& self, TWriteIndexContext& context) override; - virtual void DoWriteIndexComplete(NColumnShard::TColumnShard& /*self*/, TWriteIndexCompleteContext& /*context*/) override { - - } + virtual void DoWriteIndexOnExecute(NColumnShard::TColumnShard* self, TWriteIndexContext& context) override; + virtual void DoWriteIndexOnComplete(NColumnShard::TColumnShard* self, TWriteIndexCompleteContext& context) override; virtual void DoStart(NColumnShard::TColumnShard& self) override; std::vector<TPortionInfoWithBlobs> MakeAppendedPortions(const std::shared_ptr<arrow::RecordBatch> batch, const ui64 granule, - const TSnapshot& snapshot, const TGranuleMeta* granuleMeta, TConstructionContext& context) const; + const TSnapshot& snapshot, const TGranuleMeta* granuleMeta, TConstructionContext& context, const std::optional<NArrow::NSerialization::TSerializerContainer>& overrideSaver) const; virtual void DoDebugString(TStringOutput& out) const override { out << "remove=" << PortionsToRemove.size() << ";append=" << AppendedPortions.size() << ";"; } -public: - const TSplitSettings& GetSplitSettings() const { - return SplitSettings; + virtual std::shared_ptr<NDataLocks::ILock> DoBuildDataLockImpl() const = 0; + + virtual std::shared_ptr<NDataLocks::ILock> DoBuildDataLock() const override final { + auto actLock = DoBuildDataLockImpl(); + if (actLock) { + auto selfLock = std::make_shared<NDataLocks::TListPortionsLock>(TypeString() + "::" + GetTaskIdentifier() + "::REMOVE", PortionsToRemove); + return std::make_shared<NDataLocks::TCompositeLock>(TypeString() + "::" + GetTaskIdentifier(), std::vector<std::shared_ptr<NDataLocks::ILock>>({actLock, selfLock})); + } else { + auto selfLock = std::make_shared<NDataLocks::TListPortionsLock>(TypeString() + "::" + GetTaskIdentifier(), PortionsToRemove); + return selfLock; + } } - TChangesWithAppend(const TSplitSettings& splitSettings, const TSaverContext& saverContext, const TString& consumerId) +public: + TChangesWithAppend(const TSaverContext& saverContext, const NBlobOperations::EConsumer consumerId) : TBase(saverContext.GetStoragesManager(), consumerId) - , SplitSettings(splitSettings) , SaverContext(saverContext) { } - virtual THashSet<TPortionAddress> GetTouchedPortions() const override { - THashSet<TPortionAddress> result; - for (auto&& i : PortionsToRemove) { - result.emplace(i.first); - } - return result; - } - THashMap<TPortionAddress, TPortionInfo> PortionsToRemove; std::vector<TPortionInfoWithBlobs> AppendedPortions; virtual ui32 GetWritePortionsCount() const override { diff --git a/ydb/core/tx/columnshard/engines/changes/ya.make b/ydb/core/tx/columnshard/engines/changes/ya.make index faf74a7c05bb..5a266e18bb0a 100644 --- a/ydb/core/tx/columnshard/engines/changes/ya.make +++ b/ydb/core/tx/columnshard/engines/changes/ya.make @@ -4,7 +4,8 @@ SRCS( compaction.cpp ttl.cpp indexation.cpp - cleanup.cpp + cleanup_portions.cpp + cleanup_tables.cpp with_appended.cpp general_compaction.cpp ) @@ -16,6 +17,7 @@ PEERDIR( ydb/core/tx/columnshard/engines/changes/abstract ydb/core/tx/columnshard/engines/changes/compaction ydb/core/tx/columnshard/engines/changes/counters + ydb/core/tx/columnshard/engines/changes/actualization ydb/core/tx/columnshard/splitter ydb/core/tablet_flat ydb/core/tx/tiering diff --git a/ydb/core/tx/columnshard/engines/column_engine.cpp b/ydb/core/tx/columnshard/engines/column_engine.cpp index efe84977f65d..d6f46742093c 100644 --- a/ydb/core/tx/columnshard/engines/column_engine.cpp +++ b/ydb/core/tx/columnshard/engines/column_engine.cpp @@ -1,12 +1,24 @@ #include "column_engine.h" -#include "changes/abstract/abstract.h" -#include <util/stream/output.h> +#include <ydb/core/base/appdata.h> +#include <util/system/info.h> namespace NKikimr::NOlap { +const std::shared_ptr<arrow::Schema>& IColumnEngine::GetReplaceKey() const { + return GetVersionedIndex().GetLastSchema()->GetIndexInfo().GetReplaceKey(); +} + +ui64 IColumnEngine::GetMetadataLimit() { + if (!HasAppData()) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("total", NSystemInfo::TotalMemorySize()); + return NSystemInfo::TotalMemorySize() * 0.3; + } else if (AppDataVerified().ColumnShardConfig.GetIndexMetadataMemoryLimit().HasAbsoluteValue()) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("value", AppDataVerified().ColumnShardConfig.GetIndexMetadataMemoryLimit().GetAbsoluteValue()); + return AppDataVerified().ColumnShardConfig.GetIndexMetadataMemoryLimit().GetAbsoluteValue(); + } else { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("total", NSystemInfo::TotalMemorySize())("kff", AppDataVerified().ColumnShardConfig.GetIndexMetadataMemoryLimit().GetTotalRatio()); + return NSystemInfo::TotalMemorySize() * AppDataVerified().ColumnShardConfig.GetIndexMetadataMemoryLimit().GetTotalRatio(); + } } -template <> -void Out<NKikimr::NOlap::TColumnEngineChanges>(IOutputStream& out, TTypeTraits<NKikimr::NOlap::TColumnEngineChanges>::TFuncParam changes) { - out << changes.DebugString(); } diff --git a/ydb/core/tx/columnshard/engines/column_engine.h b/ydb/core/tx/columnshard/engines/column_engine.h index 618b70a27c0c..aba511eec9b1 100644 --- a/ydb/core/tx/columnshard/engines/column_engine.h +++ b/ydb/core/tx/columnshard/engines/column_engine.h @@ -1,10 +1,11 @@ #pragma once #include "db_wrapper.h" -#include "portions/portion_info.h" #include "scheme/snapshot_scheme.h" #include "predicate/filter.h" #include "changes/abstract/settings.h" #include "changes/abstract/compaction_info.h" +#include "scheme/versions/versioned_index.h" + #include <ydb/core/tx/columnshard/common/reverse_accessor.h> namespace NKikimr::NColumnShard { @@ -17,7 +18,12 @@ class TInsertColumnEngineChanges; class TCompactColumnEngineChanges; class TColumnEngineChanges; class TTTLColumnEngineChanges; -class TCleanupColumnEngineChanges; +class TCleanupPortionsColumnEngineChanges; +class TCleanupTablesColumnEngineChanges; +class TPortionInfo; +namespace NDataLocks { +class TManager; +} struct TSelectInfo { struct TStats { @@ -60,12 +66,9 @@ struct TSelectInfo { out.Records += portionInfo->NumChunks(); out.Rows += portionInfo->NumRows(); for (auto& rec : portionInfo->Records) { - uniqBlob.insert(rec.BlobRange.BlobId); + out.Bytes += rec.BlobRange.Size; } - } - out.Blobs += uniqBlob.size(); - for (auto blobId : uniqBlob) { - out.Bytes += blobId.BlobSize(); + out.Blobs += portionInfo->GetBlobIdsCount(); } return out; } @@ -156,7 +159,6 @@ class TColumnEngineStats { i64 Tables{}; i64 ColumnRecords{}; - i64 ColumnMetadataBytes{}; THashMap<TPortionMeta::EProduced, TPortionsStats> StatsByType; std::vector<ui32> GetKinds() const { @@ -286,82 +288,18 @@ class TColumnEngineStats { } }; -class TVersionedIndex { - std::map<TSnapshot, ISnapshotSchema::TPtr> Snapshots; - std::shared_ptr<arrow::Schema> PrimaryKey; - std::map<ui64, ISnapshotSchema::TPtr> SnapshotByVersion; - ui64 LastSchemaVersion = 0; -public: - TString DebugString() const { - TStringBuilder sb; - for (auto&& i : Snapshots) { - sb << i.first << ":" << i.second->DebugString() << ";"; - } - return sb; - } - - ISnapshotSchema::TPtr GetSchema(const ui64 version) const { - auto it = SnapshotByVersion.find(version); - return it == SnapshotByVersion.end() ? nullptr : it->second; - } - - ISnapshotSchema::TPtr GetSchemaVerified(const ui64 version) const { - auto it = SnapshotByVersion.find(version); - Y_ABORT_UNLESS(it != SnapshotByVersion.end(), "no schema for version %lu", version); - return it->second; - } - - ISnapshotSchema::TPtr GetSchema(const TSnapshot& version) const { - for (auto it = Snapshots.rbegin(); it != Snapshots.rend(); ++it) { - if (it->first <= version) { - return it->second; - } - } - Y_ABORT_UNLESS(!Snapshots.empty()); - Y_ABORT_UNLESS(version.IsZero()); - return Snapshots.begin()->second; // For old compaction logic compatibility - } - - ISnapshotSchema::TPtr GetLastSchema() const { - Y_ABORT_UNLESS(!Snapshots.empty()); - return Snapshots.rbegin()->second; - } - - bool IsEmpty() const { - return Snapshots.empty(); - } - - const std::shared_ptr<arrow::Schema>& GetPrimaryKey() const noexcept { - return PrimaryKey; - } - - void AddIndex(const TSnapshot& snapshot, TIndexInfo&& indexInfo) { - if (Snapshots.empty()) { - PrimaryKey = indexInfo.GetPrimaryKey(); - } else { - Y_ABORT_UNLESS(PrimaryKey->Equals(indexInfo.GetPrimaryKey())); - } - - auto newVersion = indexInfo.GetVersion(); - auto itVersion = SnapshotByVersion.emplace(newVersion, std::make_shared<TSnapshotSchema>(std::move(indexInfo), snapshot)); - if (!itVersion.second) { - AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("message", "Skip registered version")("version", LastSchemaVersion); - } - auto itSnap = Snapshots.emplace(snapshot, itVersion.first->second); - Y_ABORT_UNLESS(itSnap.second); - LastSchemaVersion = std::max(newVersion, LastSchemaVersion); - } -}; - - class IColumnEngine { protected: virtual void DoRegisterTable(const ui64 pathId) = 0; public: + + static ui64 GetMetadataLimit(); + virtual ~IColumnEngine() = default; virtual const TVersionedIndex& GetVersionedIndex() const = 0; - virtual const std::shared_ptr<arrow::Schema>& GetReplaceKey() const { return GetVersionedIndex().GetLastSchema()->GetIndexInfo().GetReplaceKey(); } + virtual std::shared_ptr<TVersionedIndex> CopyVersionedIndexPtr() const = 0; + virtual const std::shared_ptr<arrow::Schema>& GetReplaceKey() const; virtual bool HasDataInPathId(const ui64 pathId) const = 0; virtual bool Load(IDbWrapper& db) = 0; @@ -369,21 +307,24 @@ class IColumnEngine { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "RegisterTable")("path_id", pathId); return DoRegisterTable(pathId); } + virtual bool IsOverloadedByMetadata(const ui64 limit) const = 0; virtual std::shared_ptr<TSelectInfo> Select(ui64 pathId, TSnapshot snapshot, const TPKRangesFilter& pkRangesFilter) const = 0; virtual std::shared_ptr<TInsertColumnEngineChanges> StartInsert(std::vector<TInsertedData>&& dataToIndex) noexcept = 0; - virtual std::shared_ptr<TColumnEngineChanges> StartCompaction(const TCompactionLimits& limits, const THashSet<TPortionAddress>& busyPortions) noexcept = 0; - virtual std::shared_ptr<TCleanupColumnEngineChanges> StartCleanup(const TSnapshot& snapshot, THashSet<ui64>& pathsToDrop, - ui32 maxRecords) noexcept = 0; - virtual std::shared_ptr<TTTLColumnEngineChanges> StartTtl(const THashMap<ui64, TTiering>& pathEviction, - const THashSet<TPortionAddress>& busyPortions, const ui64 memoryUsageLimit) noexcept = 0; + virtual std::shared_ptr<TColumnEngineChanges> StartCompaction(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) noexcept = 0; + virtual std::shared_ptr<TCleanupPortionsColumnEngineChanges> StartCleanupPortions(const TSnapshot& snapshot, const THashSet<ui64>& pathsToDrop, + const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) noexcept = 0; + virtual std::shared_ptr<TCleanupTablesColumnEngineChanges> StartCleanupTables(THashSet<ui64>& pathsToDrop) noexcept = 0; + virtual std::vector<std::shared_ptr<TTTLColumnEngineChanges>> StartTtl(const THashMap<ui64, TTiering>& pathEviction, + const std::shared_ptr<NDataLocks::TManager>& dataLocksManager, const ui64 memoryUsageLimit) noexcept = 0; virtual bool ApplyChanges(IDbWrapper& db, std::shared_ptr<TColumnEngineChanges> changes, const TSnapshot& snapshot) noexcept = 0; virtual void RegisterSchemaVersion(const TSnapshot& snapshot, TIndexInfo&& info) = 0; + virtual void RegisterSchemaVersion(const TSnapshot& snapshot, const NKikimrSchemeOp::TColumnTableSchema& schema) = 0; virtual const TMap<ui64, std::shared_ptr<TColumnEngineStats>>& GetStats() const = 0; virtual const TColumnEngineStats& GetTotalStats() = 0; virtual ui64 MemoryUsage() const { return 0; } virtual TSnapshot LastUpdate() const { return TSnapshot::Zero(); } - virtual void OnTieringModified(std::shared_ptr<NColumnShard::TTiersManager> manager, const NColumnShard::TTtl& ttl) = 0; + virtual void OnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& manager, const NColumnShard::TTtl& ttl, const std::optional<ui64> pathId) = 0; }; } diff --git a/ydb/core/tx/columnshard/engines/column_engine_logs.cpp b/ydb/core/tx/columnshard/engines/column_engine_logs.cpp index 17833bc5a6e6..5b3710f18c65 100644 --- a/ydb/core/tx/columnshard/engines/column_engine_logs.cpp +++ b/ydb/core/tx/columnshard/engines/column_engine_logs.cpp @@ -1,18 +1,21 @@ #include "column_engine_logs.h" #include "filter.h" +#include "changes/actualization/construction/context.h" +#include "changes/indexation.h" +#include "changes/general_compaction.h" +#include "changes/cleanup_portions.h" +#include "changes/cleanup_tables.h" +#include "changes/ttl.h" + #include <ydb/core/tx/columnshard/common/limits.h> #include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> -#include <ydb/core/formats/arrow/one_batch_input_stream.h> -#include <ydb/core/formats/arrow/merging_sorted_input_stream.h> -#include <ydb/core/tx/tiering/manager.h> #include <ydb/core/tx/columnshard/columnshard_ttl.h> #include <ydb/core/tx/columnshard/columnshard_schema.h> +#include <ydb/core/tx/columnshard/data_locks/manager/manager.h> +#include <ydb/core/tx/tiering/manager.h> + #include <ydb/library/conclusion/status.h> -#include "changes/indexation.h" -#include "changes/general_compaction.h" -#include "changes/cleanup.h" -#include "changes/ttl.h" #include <library/cpp/time_provider/time_provider.h> #include <ydb/library/actors/core/monotonic_provider.h> @@ -21,22 +24,27 @@ namespace NKikimr::NOlap { -TColumnEngineForLogs::TColumnEngineForLogs(ui64 tabletId, const TCompactionLimits& limits, const std::shared_ptr<IStoragesManager>& storagesManager) - : GranulesStorage(std::make_shared<TGranulesStorage>(SignalCounters, limits, storagesManager)) +TColumnEngineForLogs::TColumnEngineForLogs(ui64 tabletId, const std::shared_ptr<IStoragesManager>& storagesManager, + const TSnapshot& snapshot, const NKikimrSchemeOp::TColumnTableSchema& schema) + : GranulesStorage(std::make_shared<TGranulesStorage>(SignalCounters, storagesManager)) , StoragesManager(storagesManager) , TabletId(tabletId) , LastPortion(0) , LastGranule(0) { + ActualizationController = std::make_shared<NActualizer::TController>(); + RegisterSchemaVersion(snapshot, schema); } -ui64 TColumnEngineForLogs::MemoryUsage() const { - auto numPortions = Counters.GetPortionsCount(); - - return Counters.Tables * (sizeof(TGranuleMeta) + sizeof(ui64)) + - numPortions * (sizeof(TPortionInfo) + sizeof(ui64)) + - Counters.ColumnRecords * sizeof(TColumnRecord) + - Counters.ColumnMetadataBytes; +TColumnEngineForLogs::TColumnEngineForLogs(ui64 tabletId, const std::shared_ptr<IStoragesManager>& storagesManager, + const TSnapshot& snapshot, TIndexInfo&& schema) + : GranulesStorage(std::make_shared<TGranulesStorage>(SignalCounters, storagesManager)) + , StoragesManager(storagesManager) + , TabletId(tabletId) + , LastPortion(0) + , LastGranule(0) { + ActualizationController = std::make_shared<NActualizer::TController>(); + RegisterSchemaVersion(snapshot, std::move(schema)); } const TMap<ui64, std::shared_ptr<TColumnEngineStats>>& TColumnEngineForLogs::GetStats() const { @@ -44,8 +52,7 @@ const TMap<ui64, std::shared_ptr<TColumnEngineStats>>& TColumnEngineForLogs::Get } const TColumnEngineStats& TColumnEngineForLogs::GetTotalStats() { - Counters.Tables = Tables.size(); - + Counters.Tables = GranulesStorage->GetTables().size(); return Counters; } @@ -63,22 +70,17 @@ void TColumnEngineForLogs::UpdatePortionStats(const TPortionInfo& portionInfo, E UpdatePortionStats(*PathStats[pathId], portionInfo, updateType, exPortionInfo); } -TColumnEngineStats::TPortionsStats DeltaStats(const TPortionInfo& portionInfo, ui64& metadataBytes) { +TColumnEngineStats::TPortionsStats DeltaStats(const TPortionInfo& portionInfo) { TColumnEngineStats::TPortionsStats deltaStats; - THashSet<TUnifiedBlobId> blobs; + deltaStats.Bytes = 0; for (auto& rec : portionInfo.Records) { - metadataBytes += rec.GetMeta().GetMetadataSize(); - blobs.insert(rec.BlobRange.BlobId); deltaStats.BytesByColumn[rec.ColumnId] += rec.BlobRange.Size; - deltaStats.RawBytesByColumn[rec.ColumnId] += rec.GetMeta().GetRawBytes().value_or(0); + deltaStats.RawBytesByColumn[rec.ColumnId] += rec.GetMeta().GetRawBytes(); } deltaStats.Rows = portionInfo.NumRows(); - deltaStats.RawBytes = portionInfo.RawBytesSum(); - deltaStats.Bytes = 0; - for (auto& blobId : blobs) { - deltaStats.Bytes += blobId.BlobSize(); - } - deltaStats.Blobs = blobs.size(); + deltaStats.Bytes = portionInfo.GetTotalBlobBytes(); + deltaStats.RawBytes = portionInfo.GetTotalRawBytes(); + deltaStats.Blobs = portionInfo.GetBlobIdsCount(); deltaStats.Portions = 1; return deltaStats; } @@ -87,8 +89,7 @@ void TColumnEngineForLogs::UpdatePortionStats(TColumnEngineStats& engineStats, c EStatsUpdateType updateType, const TPortionInfo* exPortionInfo) const { ui64 columnRecords = portionInfo.Records.size(); - ui64 metadataBytes = 0; - TColumnEngineStats::TPortionsStats deltaStats = DeltaStats(portionInfo, metadataBytes); + TColumnEngineStats::TPortionsStats deltaStats = DeltaStats(portionInfo); Y_ABORT_UNLESS(!exPortionInfo || exPortionInfo->GetMeta().Produced != TPortionMeta::EProduced::UNSPECIFIED); Y_ABORT_UNLESS(portionInfo.GetMeta().Produced != TPortionMeta::EProduced::UNSPECIFIED); @@ -107,23 +108,19 @@ void TColumnEngineForLogs::UpdatePortionStats(TColumnEngineStats& engineStats, c if (isErase) { // PortionsToDrop engineStats.ColumnRecords -= columnRecords; - engineStats.ColumnMetadataBytes -= metadataBytes; stats -= deltaStats; } else if (isAdd) { // Load || AppendedPortions engineStats.ColumnRecords += columnRecords; - engineStats.ColumnMetadataBytes += metadataBytes; stats += deltaStats; } else if (&srcStats != &stats || exPortionInfo) { // SwitchedPortions || PortionsToEvict stats += deltaStats; if (exPortionInfo) { - ui64 rmMetadataBytes = 0; - srcStats -= DeltaStats(*exPortionInfo, rmMetadataBytes); + srcStats -= DeltaStats(*exPortionInfo); engineStats.ColumnRecords += columnRecords - exPortionInfo->Records.size(); - engineStats.ColumnMetadataBytes += metadataBytes - rmMetadataBytes; } else { srcStats -= deltaStats; } @@ -135,7 +132,27 @@ void TColumnEngineForLogs::RegisterSchemaVersion(const TSnapshot& snapshot, TInd const NOlap::TIndexInfo& lastIndexInfo = VersionedIndex.GetLastSchema()->GetIndexInfo(); Y_ABORT_UNLESS(lastIndexInfo.CheckCompatible(indexInfo)); } + const bool isCriticalScheme = indexInfo.GetSchemeNeedActualization(); VersionedIndex.AddIndex(snapshot, std::move(indexInfo)); + if (isCriticalScheme) { + if (!ActualizationStarted) { + ActualizationStarted = true; + for (auto&& i : GranulesStorage->GetTables()) { + i.second->StartActualizationIndex(); + } + } + for (auto&& i : GranulesStorage->GetTables()) { + i.second->RefreshScheme(); + } + } +} + +void TColumnEngineForLogs::RegisterSchemaVersion(const TSnapshot& snapshot, const NKikimrSchemeOp::TColumnTableSchema& schema) { + std::optional<NOlap::TIndexInfo> indexInfoOptional = NOlap::TIndexInfo::BuildFromProto(schema, StoragesManager); + AFL_VERIFY(indexInfoOptional); + NOlap::TIndexInfo indexInfo = std::move(*indexInfoOptional); + indexInfo.SetAllKeys(StoragesManager); + RegisterSchemaVersion(snapshot, std::move(indexInfo)); } bool TColumnEngineForLogs::Load(IDbWrapper& db) { @@ -144,7 +161,7 @@ bool TColumnEngineForLogs::Load(IDbWrapper& db) { THashMap<ui64, ui64> granuleToPathIdDecoder; { TMemoryProfileGuard g("TTxInit/LoadColumns"); - auto guard = GranulesStorage->StartPackModification(); + auto guard = GranulesStorage->GetStats()->StartPackModification(); if (!LoadColumns(db)) { return false; } @@ -153,11 +170,11 @@ bool TColumnEngineForLogs::Load(IDbWrapper& db) { } } - for (const auto& [pathId, spg] : Tables) { + for (const auto& [pathId, spg] : GranulesStorage->GetTables()) { for (const auto& [_, portionInfo] : spg->GetPortions()) { UpdatePortionStats(*portionInfo, EStatsUpdateType::ADD); if (portionInfo->CheckForCleanup()) { - CleanupPortions[portionInfo->GetRemoveSnapshot()].emplace_back(*portionInfo); + CleanupPortions[portionInfo->GetRemoveSnapshotVerified()].emplace_back(*portionInfo); } } } @@ -168,30 +185,26 @@ bool TColumnEngineForLogs::Load(IDbWrapper& db) { } bool TColumnEngineForLogs::LoadColumns(IDbWrapper& db) { - TSnapshot lastSnapshot(0, 0); - const TIndexInfo* currentIndexInfo = nullptr; + TPortionInfo::TSchemaCursor schema(VersionedIndex); if (!db.LoadColumns([&](const TPortionInfo& portion, const TColumnChunkLoadContext& loadContext) { - if (!currentIndexInfo || lastSnapshot != portion.GetMinSnapshot()) { - currentIndexInfo = &VersionedIndex.GetSchema(portion.GetMinSnapshot())->GetIndexInfo(); - lastSnapshot = portion.GetMinSnapshot(); - } + auto currentSchema = schema.GetSchema(portion); AFL_VERIFY(portion.ValidSnapshotInfo())("details", portion.DebugString()); // Locate granule and append the record. - TColumnRecord rec(loadContext, *currentIndexInfo); - GetGranulePtrVerified(portion.GetPathId())->AddColumnRecord(*currentIndexInfo, portion, rec, loadContext.GetPortionMeta()); + GetGranulePtrVerified(portion.GetPathId())->AddColumnRecordOnLoad(currentSchema->GetIndexInfo(), portion, loadContext, loadContext.GetPortionMeta()); })) { return false; } if (!db.LoadIndexes([&](const ui64 pathId, const ui64 portionId, const TIndexChunkLoadContext& loadContext) { - auto portion = GetGranulePtrVerified(pathId)->GetPortionPtr(portionId); + auto portion = GetGranulePtrVerified(pathId)->GetPortionOptional(portionId); AFL_VERIFY(portion); - portion->AddIndex(loadContext.BuildIndexChunk()); + const auto linkBlobId = portion->RegisterBlobId(loadContext.GetBlobRange().GetBlobId()); + portion->AddIndex(loadContext.BuildIndexChunk(linkBlobId)); })) { return false; }; - for (auto&& i : Tables) { + for (auto&& i : GranulesStorage->GetTables()) { i.second->OnAfterPortionsLoad(); } return true; @@ -221,9 +234,8 @@ bool TColumnEngineForLogs::LoadCounters(IDbWrapper& db) { std::shared_ptr<TInsertColumnEngineChanges> TColumnEngineForLogs::StartInsert(std::vector<TInsertedData>&& dataToIndex) noexcept { Y_ABORT_UNLESS(dataToIndex.size()); - TSaverContext saverContext(StoragesManager->GetInsertOperator(), StoragesManager); - - auto changes = std::make_shared<TInsertColumnEngineChanges>(std::move(dataToIndex), TSplitSettings(), saverContext); + TSaverContext saverContext(StoragesManager); + auto changes = std::make_shared<TInsertColumnEngineChanges>(std::move(dataToIndex), saverContext); auto pkSchema = VersionedIndex.GetLastSchema()->GetIndexInfo().GetReplaceKey(); for (const auto& data : changes->GetDataToIndex()) { @@ -238,77 +250,123 @@ std::shared_ptr<TInsertColumnEngineChanges> TColumnEngineForLogs::StartInsert(st return changes; } -std::shared_ptr<TColumnEngineChanges> TColumnEngineForLogs::StartCompaction(const TCompactionLimits& limits, const THashSet<TPortionAddress>& busyPortions) noexcept { - THashSet<ui64> busyGranuleIds; - for (auto&& i : busyPortions) { - busyGranuleIds.emplace(i.GetPathId()); - } - auto granule = GranulesStorage->GetGranuleForCompaction(Tables, busyGranuleIds); +std::shared_ptr<TColumnEngineChanges> TColumnEngineForLogs::StartCompaction(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) noexcept { + AFL_VERIFY(dataLocksManager); + auto granule = GranulesStorage->GetGranuleForCompaction(dataLocksManager); if (!granule) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "no granules for start compaction"); return nullptr; } granule->OnStartCompaction(); - auto changes = granule->GetOptimizationTask(limits, granule, busyPortions); - NYDBTest::TControllers::GetColumnShardController()->OnStartCompaction(changes); + auto changes = granule->GetOptimizationTask(granule, dataLocksManager); if (!changes) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "cannot build optimization task for granule that need compaction")("weight", granule->GetCompactionPriority().DebugString()); } return changes; } -std::shared_ptr<TCleanupColumnEngineChanges> TColumnEngineForLogs::StartCleanup(const TSnapshot& snapshot, - THashSet<ui64>& pathsToDrop, ui32 /*maxRecords*/) noexcept { +std::shared_ptr<TCleanupTablesColumnEngineChanges> TColumnEngineForLogs::StartCleanupTables(THashSet<ui64>& pathsToDrop) noexcept { + if (pathsToDrop.empty()) { + return nullptr; + } + auto changes = std::make_shared<TCleanupTablesColumnEngineChanges>(StoragesManager); + + ui64 txSize = 0; + const ui64 txSizeLimit = TGlobalLimits::TxWriteLimitBytes / 4; + THashSet<ui64> pathsToRemove; + for (ui64 pathId : pathsToDrop) { + if (!HasDataInPathId(pathId)) { + changes->TablesToDrop.emplace(pathId); + } + txSize += 256; + if (txSize > txSizeLimit) { + break; + } + } + for (auto&& i : pathsToRemove) { + pathsToDrop.erase(i); + } + if (changes->TablesToDrop.empty()) { + return nullptr; + } + return changes; +} + +std::shared_ptr<TCleanupPortionsColumnEngineChanges> TColumnEngineForLogs::StartCleanupPortions(const TSnapshot& snapshot, + const THashSet<ui64>& pathsToDrop, const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) noexcept { + AFL_VERIFY(dataLocksManager); AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "StartCleanup")("portions_count", CleanupPortions.size()); - auto changes = std::make_shared<TCleanupColumnEngineChanges>(StoragesManager); + auto changes = std::make_shared<TCleanupPortionsColumnEngineChanges>(StoragesManager); // Add all portions from dropped paths - THashSet<ui64> dropPortions; - THashSet<ui64> emptyPaths; ui64 txSize = 0; const ui64 txSizeLimit = TGlobalLimits::TxWriteLimitBytes / 4; - changes->NeedRepeat = false; + ui32 skipLocked = 0; + ui32 portionsFromDrop = 0; + bool limitExceeded = false; + THashSet<TPortionAddress> uniquePortions; for (ui64 pathId : pathsToDrop) { - auto itTable = Tables.find(pathId); - if (itTable == Tables.end()) { - emptyPaths.insert(pathId); + auto g = GranulesStorage->GetGranuleOptional(pathId); + if (!g) { continue; } - for (auto& [portion, info] : itTable->second->GetPortions()) { + for (auto& [portion, info] : g->GetPortions()) { + if (dataLocksManager->IsLocked(*info)) { + ++skipLocked; + continue; + } if (txSize + info->GetTxVolume() < txSizeLimit || changes->PortionsToDrop.empty()) { txSize += info->GetTxVolume(); } else { - changes->NeedRepeat = true; + limitExceeded = true; break; } + const auto inserted = uniquePortions.emplace(info->GetAddress()).second; + Y_ABORT_UNLESS(inserted); changes->PortionsToDrop.push_back(*info); - dropPortions.insert(portion); + ++portionsFromDrop; } } - for (ui64 pathId : emptyPaths) { - pathsToDrop.erase(pathId); - } - while (CleanupPortions.size() && !changes->NeedRepeat) { - auto it = CleanupPortions.begin(); + for (auto it = CleanupPortions.begin(); !limitExceeded && it != CleanupPortions.end();) { if (it->first >= snapshot) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "StartCleanupStop")("snapshot", snapshot.DebugString())("current_snapshot", it->first.DebugString()); break; } - for (auto&& i : it->second) { - Y_ABORT_UNLESS(i.CheckForCleanup(snapshot)); - if (txSize + i.GetTxVolume() < txSizeLimit || changes->PortionsToDrop.empty()) { - txSize += i.GetTxVolume(); - } else { - changes->NeedRepeat = true; - break; + for (ui32 i = 0; i < it->second.size();) { + if (dataLocksManager->IsLocked(it->second[i])) { + ++skipLocked; + ++i; + continue; + } + const auto inserted = uniquePortions.emplace(it->second[i].GetAddress()).second; + if (inserted) { + Y_ABORT_UNLESS(it->second[i].CheckForCleanup(snapshot)); + if (txSize + it->second[i].GetTxVolume() < txSizeLimit || changes->PortionsToDrop.empty()) { + txSize += it->second[i].GetTxVolume(); + } else { + limitExceeded = true; + break; + } + changes->PortionsToDrop.push_back(std::move(it->second[i])); } - changes->PortionsToDrop.push_back(i); + if (i + 1 < it->second.size()) { + it->second[i] = std::move(it->second.back()); + } + it->second.pop_back(); + } + if (limitExceeded) { + break; + } + if (it->second.empty()) { + it = CleanupPortions.erase(it); + } else { + ++it; } - CleanupPortions.erase(it); } - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "StartCleanup")("portions_count", CleanupPortions.size())("portions_prepared", changes->PortionsToDrop.size()); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "StartCleanup") + ("portions_count", CleanupPortions.size())("portions_prepared", changes->PortionsToDrop.size())("drop", portionsFromDrop)("skip", skipLocked); if (changes->PortionsToDrop.empty()) { return nullptr; @@ -317,170 +375,43 @@ std::shared_ptr<TCleanupColumnEngineChanges> TColumnEngineForLogs::StartCleanup( return changes; } -TDuration TColumnEngineForLogs::ProcessTiering(const ui64 pathId, const TTiering& ttl, TTieringProcessContext& context) const { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "ProcessTiering")("path_id", pathId)("ttl", ttl.GetDebugString()); - auto& indexInfo = VersionedIndex.GetLastSchema()->GetIndexInfo(); - Y_ABORT_UNLESS(context.Changes->Tiering.emplace(pathId, ttl).second); - - TDuration dWaiting = NYDBTest::TControllers::GetColumnShardController()->GetTTLDefaultWaitingDuration(TDuration::Minutes(1)); - auto itTable = Tables.find(pathId); - if (itTable == Tables.end()) { - return dWaiting; - } - - std::optional<TInstant> expireTimestampOpt; - if (ttl.Ttl) { - expireTimestampOpt = ttl.Ttl->GetEvictInstant(context.Now); - } - - auto ttlColumnNames = ttl.GetTtlColumns(); - Y_ABORT_UNLESS(ttlColumnNames.size() == 1); // TODO: support different ttl columns - ui32 ttlColumnId = indexInfo.GetColumnId(*ttlColumnNames.begin()); - const TInstant now = TInstant::Now(); - for (auto& [portion, info] : itTable->second->GetPortions()) { - if (info->HasRemoveSnapshot()) { - continue; - } - if (context.BusyPortions.contains(info->GetAddress())) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "skip ttl through busy portion")("portion_id", info->GetAddress().DebugString()); - continue; - } +std::vector<std::shared_ptr<TTTLColumnEngineChanges>> TColumnEngineForLogs::StartTtl(const THashMap<ui64, TTiering>& pathEviction, const std::shared_ptr<NDataLocks::TManager>& dataLocksManager, + const ui64 memoryUsageLimit) noexcept { + AFL_VERIFY(dataLocksManager); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "StartTtl")("external", pathEviction.size()); - const bool tryEvictPortion = ttl.HasTiers() && context.HasLimitsForEviction(); - - if (auto max = info->MaxValue(ttlColumnId)) { - bool keep = !expireTimestampOpt; - if (expireTimestampOpt) { - auto mpiOpt = ttl.Ttl->ScalarToInstant(max); - Y_ABORT_UNLESS(mpiOpt); - const TInstant maxTtlPortionInstant = *mpiOpt; - const TDuration d = maxTtlPortionInstant - *expireTimestampOpt; - keep = !!d; - AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "keep_detect")("max", maxTtlPortionInstant.Seconds())("expire", expireTimestampOpt->Seconds()); - if (d && dWaiting > d) { - dWaiting = d; - } - } - - AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "scalar_less_result")("keep", keep)("tryEvictPortion", tryEvictPortion)("allowDrop", context.HasLimitsForTtl()); - if (keep && tryEvictPortion) { - const TString currentTierName = info->GetMeta().GetTierName() ? info->GetMeta().GetTierName() : IStoragesManager::DefaultStorageId; - TString tierName = ""; - const TInstant maxChangePortionInstant = info->RecordSnapshotMax().GetPlanInstant(); - if (now - maxChangePortionInstant < TDuration::Minutes(60)) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "skip_portion_to_evict")("reason", "too_fresh")("delta", now - maxChangePortionInstant); - continue; - } - for (auto& tierRef : ttl.GetOrderedTiers()) { - auto& tierInfo = tierRef.Get(); - if (!indexInfo.AllowTtlOverColumn(tierInfo.GetEvictColumnName())) { - SignalCounters.OnPortionNoTtlColumn(info->BlobsBytes()); - continue; - } - auto mpiOpt = tierInfo.ScalarToInstant(max); - Y_ABORT_UNLESS(mpiOpt); - const TInstant maxTieringPortionInstant = *mpiOpt; - - const TDuration d = tierInfo.GetEvictInstant(context.Now) - maxTieringPortionInstant; - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "tiering_choosing")("max", maxTieringPortionInstant.Seconds()) - ("evict", tierInfo.GetEvictInstant(context.Now).Seconds())("tier_name", tierInfo.GetName())("d", d); - if (d) { - tierName = tierInfo.GetName(); - break; - } else { - auto dWaitLocal = maxTieringPortionInstant - tierInfo.GetEvictInstant(context.Now); - if (dWaiting > dWaitLocal) { - dWaiting = dWaitLocal; - } - } - } - if (!tierName) { - tierName = IStoragesManager::DefaultStorageId; - } - if (currentTierName != tierName) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "tiering switch detected")("from", currentTierName)("to", tierName); - context.Changes->AddPortionToEvict(*info, TPortionEvictionFeatures(tierName, pathId, StoragesManager->GetOperator(tierName))); - context.AppPortionForEvictionChecker(*info); - SignalCounters.OnPortionToEvict(info->BlobsBytes()); - } - } - if (!keep && context.HasLimitsForTtl()) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "portion_remove")("portion", info->DebugString()); - AFL_VERIFY(context.Changes->PortionsToRemove.emplace(info->GetAddress(), *info).second); - SignalCounters.OnPortionToDrop(info->BlobsBytes()); - context.AppPortionForTtlChecker(*info); + TSaverContext saverContext(StoragesManager); + NActualizer::TTieringProcessContext context(memoryUsageLimit, saverContext, dataLocksManager, SignalCounters, ActualizationController); + for (auto&& i : pathEviction) { + auto g = GetGranuleOptional(i.first); + if (g) { + if (!ActualizationStarted) { + g->StartActualizationIndex(); } - } else { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "scalar_less_not_max"); - SignalCounters.OnPortionNoBorder(info->BlobsBytes()); + g->RefreshTiering(i.second); + g->BuildActualizationTasks(context); } } - if (dWaiting > TDuration::MilliSeconds(500) && (!context.HasLimitsForEviction() || !context.HasLimitsForTtl())) { - dWaiting = TDuration::MilliSeconds(500); - } - Y_ABORT_UNLESS(!!dWaiting); - return dWaiting; -} -bool TColumnEngineForLogs::DrainEvictionQueue(std::map<TMonotonic, std::vector<TEvictionsController::TTieringWithPathId>>& evictionsQueue, TTieringProcessContext& context) const { - const TMonotonic nowMonotonic = TlsActivationContext ? AppData()->MonotonicTimeProvider->Now() : TMonotonic::Now(); - bool hasChanges = false; - while (evictionsQueue.size() && evictionsQueue.begin()->first < nowMonotonic) { - hasChanges = true; - auto tierings = std::move(evictionsQueue.begin()->second); - evictionsQueue.erase(evictionsQueue.begin()); - for (auto&& i : tierings) { - auto itDuration = context.DurationsForced.find(i.GetPathId()); - if (itDuration == context.DurationsForced.end()) { - const TDuration dWaiting = ProcessTiering(i.GetPathId(), i.GetTieringInfo(), context); - evictionsQueue[nowMonotonic + dWaiting].emplace_back(std::move(i)); - } else { - evictionsQueue[nowMonotonic + itDuration->second].emplace_back(std::move(i)); + if (ActualizationStarted) { + TLogContextGuard lGuard(TLogContextBuilder::Build()("queue", "ttl")("external_count", pathEviction.size())); + for (auto&& i : GranulesStorage->GetTables()) { + if (pathEviction.contains(i.first)) { + continue; } - } - } - - if (evictionsQueue.size()) { - if (evictionsQueue.begin()->first < nowMonotonic) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "stop scan")("reason", "too many data")("first", evictionsQueue.begin()->first)("now", nowMonotonic); - } else if (!hasChanges) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "stop scan")("reason", "too early")("first", evictionsQueue.begin()->first)("now", nowMonotonic); - } else { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "stop scan")("reason", "task_ready")("first", evictionsQueue.begin()->first)("now", nowMonotonic) - ("internal", hasChanges)("evict_portions", context.Changes->GetPortionsToEvictCount()) - ("drop_portions", context.Changes->PortionsToRemove.size()); + i.second->BuildActualizationTasks(context); } } else { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "stop scan")("reason", "no data in queue"); - } - return hasChanges; -} - -std::shared_ptr<TTTLColumnEngineChanges> TColumnEngineForLogs::StartTtl(const THashMap<ui64, TTiering>& pathEviction, const THashSet<TPortionAddress>& busyPortions, const ui64 memoryUsageLimit) noexcept { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "StartTtl")("external", pathEviction.size()) - ("internal", EvictionsController.MutableNextCheckInstantForTierings().size()) - ; - - TSaverContext saverContext(StoragesManager->GetDefaultOperator(), StoragesManager); - - auto changes = std::make_shared<TTTLColumnEngineChanges>(TSplitSettings(), saverContext); - - TTieringProcessContext context(memoryUsageLimit, changes, busyPortions, TTTLColumnEngineChanges::BuildMemoryPredictor()); - bool hasExternalChanges = false; - for (auto&& i : pathEviction) { - context.DurationsForced[i.first] = ProcessTiering(i.first, i.second, context); - hasExternalChanges = true; - } - - { - TLogContextGuard lGuard(TLogContextBuilder::Build()("queue", "ttl")("has_external", hasExternalChanges)); - DrainEvictionQueue(EvictionsController.MutableNextCheckInstantForTierings(), context); + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "StartTtl")("skip", "not_ready_tiers"); } - - if (changes->PortionsToRemove.empty() && !changes->GetPortionsToEvictCount()) { - return nullptr; + std::vector<std::shared_ptr<TTTLColumnEngineChanges>> result; + for (auto&& i : context.GetTasks()) { + for (auto&& t : i.second) { + SignalCounters.OnActualizationTask(t.GetTask()->GetPortionsToEvictCount(), t.GetTask()->PortionsToRemove.size()); + result.emplace_back(t.GetTask()); + } } - return changes; + return result; } bool TColumnEngineForLogs::ApplyChanges(IDbWrapper& db, std::shared_ptr<TColumnEngineChanges> indexChanges, const TSnapshot& snapshot) noexcept { @@ -488,10 +419,6 @@ bool TColumnEngineForLogs::ApplyChanges(IDbWrapper& db, std::shared_ptr<TColumnE TFinalizationContext context(LastGranule, LastPortion, snapshot); indexChanges->Compile(context); } - { - TApplyChangesContext context(db, snapshot); - Y_ABORT_UNLESS(indexChanges->ApplyChanges(*this, context)); - } db.WriteCounter(LAST_PORTION, LastPortion); db.WriteCounter(LAST_GRANULE, LastGranule); @@ -504,10 +431,7 @@ bool TColumnEngineForLogs::ApplyChanges(IDbWrapper& db, std::shared_ptr<TColumnE } void TColumnEngineForLogs::EraseTable(const ui64 pathId) { - auto it = Tables.find(pathId); - Y_ABORT_UNLESS(it != Tables.end()); - Y_ABORT_UNLESS(it->second->IsErasable()); - Tables.erase(it); + GranulesStorage->EraseTable(pathId); } void TColumnEngineForLogs::UpsertPortion(const TPortionInfo& portionInfo, const TPortionInfo* exInfo) { @@ -525,7 +449,7 @@ bool TColumnEngineForLogs::ErasePortion(const TPortionInfo& portionInfo, bool up const ui64 portion = portionInfo.GetPortion(); auto spg = GetGranulePtrVerified(portionInfo.GetPathId()); Y_ABORT_UNLESS(spg); - auto p = spg->GetPortionPtr(portion); + auto p = spg->GetPortionOptional(portion); if (!p) { LOG_S_WARN("Portion erased already " << portionInfo << " at tablet " << TabletId); @@ -542,12 +466,11 @@ bool TColumnEngineForLogs::ErasePortion(const TPortionInfo& portionInfo, bool up std::shared_ptr<TSelectInfo> TColumnEngineForLogs::Select(ui64 pathId, TSnapshot snapshot, const TPKRangesFilter& pkRangesFilter) const { auto out = std::make_shared<TSelectInfo>(); - auto itTable = Tables.find(pathId); - if (itTable == Tables.end()) { + auto spg = GranulesStorage->GetGranuleOptional(pathId); + if (!spg) { return out; } - auto spg = itTable->second; for (const auto& [indexKey, keyPortions] : spg->GroupOrderedPortionsByPK()) { for (auto&& [_, portionInfo] : keyPortions) { if (!portionInfo->IsVisible(snapshot)) { @@ -567,42 +490,50 @@ std::shared_ptr<TSelectInfo> TColumnEngineForLogs::Select(ui64 pathId, TSnapshot return out; } -void TColumnEngineForLogs::OnTieringModified(std::shared_ptr<NColumnShard::TTiersManager> manager, const NColumnShard::TTtl& ttl) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "OnTieringModified"); - std::optional<THashMap<ui64, TTiering>> tierings; - if (manager) { - tierings = manager->GetTiering(); +void TColumnEngineForLogs::OnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& manager, const NColumnShard::TTtl& ttl, const std::optional<ui64> pathId) { + if (!ActualizationStarted) { + for (auto&& i : GranulesStorage->GetTables()) { + i.second->StartActualizationIndex(); + } } - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "OnTieringModified") - ("new_count_tierings", tierings ? ::ToString(tierings->size()) : TString("undefined")) - ("new_count_ttls", ttl.PathsCount()); - EvictionsController.RefreshTierings(std::move(tierings), ttl); -} + ActualizationStarted = true; + AFL_VERIFY(manager); + THashMap<ui64, TTiering> tierings = manager->GetTiering(); + ttl.AddTtls(tierings); -void TColumnEngineForLogs::DoRegisterTable(const ui64 pathId) { - AFL_VERIFY(Tables.emplace(pathId, std::make_shared<TGranuleMeta>(pathId, GranulesStorage, SignalCounters.RegisterGranuleDataCounters(), VersionedIndex)).second); -} + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "OnTieringModified") + ("new_count_tierings", tierings.size()) + ("new_count_ttls", ttl.PathsCount()); + // some string -TColumnEngineForLogs::TTieringProcessContext::TTieringProcessContext(const ui64 memoryUsageLimit, - std::shared_ptr<TTTLColumnEngineChanges> changes, const THashSet<TPortionAddress>& busyPortions, const std::shared_ptr<TColumnEngineChanges::IMemoryPredictor>& memoryPredictor) - : MemoryUsageLimit(memoryUsageLimit) - , MemoryPredictor(memoryPredictor) - , Now(TlsActivationContext ? AppData()->TimeProvider->Now() : TInstant::Now()) - , Changes(changes) - , BusyPortions(busyPortions) -{ + if (pathId) { + auto g = GetGranulePtrVerified(*pathId); + auto it = tierings.find(*pathId); + if (it == tierings.end()) { + g->RefreshTiering({}); + } else { + g->RefreshTiering(it->second); + } + } else { + for (auto&& [gPathId, g] : GranulesStorage->GetTables()) { + auto it = tierings.find(gPathId); + if (it == tierings.end()) { + g->RefreshTiering({}); + } else { + g->RefreshTiering(it->second); + } + } + } } -void TEvictionsController::RefreshTierings(std::optional<THashMap<ui64, TTiering>>&& tierings, const NColumnShard::TTtl& ttl) { - if (tierings) { - OriginalTierings = std::move(*tierings); +void TColumnEngineForLogs::DoRegisterTable(const ui64 pathId) { + std::shared_ptr<TGranuleMeta> g = GranulesStorage->RegisterTable(pathId, SignalCounters.RegisterGranuleDataCounters(), VersionedIndex); + if (ActualizationStarted) { + g->StartActualizationIndex(); + g->RefreshScheme(); } - auto copy = OriginalTierings; - ttl.AddTtls(copy); - NextCheckInstantForTierings = BuildNextInstantCheckers(std::move(copy)); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "RefreshTierings")("count", NextCheckInstantForTierings.size()); } } // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/column_engine_logs.h b/ydb/core/tx/columnshard/engines/column_engine_logs.h index c281d9b653f8..d991a6878f7d 100644 --- a/ydb/core/tx/columnshard/engines/column_engine_logs.h +++ b/ydb/core/tx/columnshard/engines/column_engine_logs.h @@ -6,12 +6,12 @@ #include <ydb/core/tx/columnshard/common/limits.h> #include <ydb/core/tx/columnshard/counters/engine_logs.h> #include <ydb/core/tx/columnshard/columnshard_ttl.h> + +#include "changes/actualization/controller/controller.h" + #include "scheme/tier_info.h" #include "storage/granule.h" #include "storage/storage.h" -#include "changes/indexation.h" -#include "changes/ttl.h" -#include "changes/with_appended.h" namespace NKikimr::NArrow { struct TSortDescription; @@ -19,54 +19,18 @@ struct TSortDescription; namespace NKikimr::NOlap { -struct TReadMetadata; -class TGranulesTable; -class TColumnsTable; -class TCountersTable; +class TCompactColumnEngineChanges; +class TTTLColumnEngineChanges; +class TChangesWithAppend; +class TCompactColumnEngineChanges; +class TCleanupPortionsColumnEngineChanges; +class TCleanupTablesColumnEngineChanges; -class TEvictionsController { -public: - class TTieringWithPathId { - private: - const ui64 PathId; - TTiering TieringInfo; - public: - TTieringWithPathId(const ui64 pathId, TTiering&& tieringInfo) - : PathId(pathId) - , TieringInfo(std::move(tieringInfo)) - { - - } - - ui64 GetPathId() const { - return PathId; - } - - const TTiering& GetTieringInfo() const { - return TieringInfo; - } - }; -private: - THashMap<ui64, TTiering> OriginalTierings; - std::map<TMonotonic, std::vector<TTieringWithPathId>> NextCheckInstantForTierings; - - std::map<TMonotonic, std::vector<TTieringWithPathId>> BuildNextInstantCheckers(THashMap<ui64, TTiering>&& info) { - std::map<TMonotonic, std::vector<TTieringWithPathId>> result; - std::vector<TTieringWithPathId> newTasks; - for (auto&& i : info) { - newTasks.emplace_back(i.first, std::move(i.second)); - } - result.emplace(TMonotonic::Zero(), std::move(newTasks)); - return result; - } -public: - std::map<TMonotonic, std::vector<TTieringWithPathId>>& MutableNextCheckInstantForTierings() { - return NextCheckInstantForTierings; - } - - void RefreshTierings(std::optional<THashMap<ui64, TTiering>>&& tierings, const NColumnShard::TTtl& ttl); -}; +namespace NDataSharing { +class TDestinationSession; +} +struct TReadMetadata; /// Engine with 2 tables: /// - Granules: PK -> granules (use part of PK) @@ -78,48 +42,22 @@ class TColumnEngineForLogs : public IColumnEngine { friend class TTTLColumnEngineChanges; friend class TChangesWithAppend; friend class TCompactColumnEngineChanges; - friend class TCleanupColumnEngineChanges; + friend class TCleanupPortionsColumnEngineChanges; + friend class TCleanupTablesColumnEngineChanges; + friend class NDataSharing::TDestinationSession; private: + bool ActualizationStarted = false; const NColumnShard::TEngineLogsCounters SignalCounters; std::shared_ptr<TGranulesStorage> GranulesStorage; std::shared_ptr<IStoragesManager> StoragesManager; - TEvictionsController EvictionsController; - class TTieringProcessContext { - private: - const ui64 MemoryUsageLimit; - ui64 MemoryUsage = 0; - ui64 TxWriteVolume = 0; - std::shared_ptr<TColumnEngineChanges::IMemoryPredictor> MemoryPredictor; - public: - const TInstant Now; - std::shared_ptr<TTTLColumnEngineChanges> Changes; - std::map<ui64, TDuration> DurationsForced; - const THashSet<TPortionAddress>& BusyPortions; - - void AppPortionForEvictionChecker(const TPortionInfo& info) { - MemoryUsage = MemoryPredictor->AddPortion(info); - TxWriteVolume += info.GetTxVolume(); - } - - void AppPortionForTtlChecker(const TPortionInfo& info) { - TxWriteVolume += info.GetTxVolume(); - } - - bool HasLimitsForEviction() const { - return MemoryUsage < MemoryUsageLimit && TxWriteVolume < TGlobalLimits::TxWriteLimitBytes; - } - - bool HasLimitsForTtl() const { - return TxWriteVolume < TGlobalLimits::TxWriteLimitBytes; - } - - TTieringProcessContext(const ui64 memoryUsageLimit, std::shared_ptr<TTTLColumnEngineChanges> changes, - const THashSet<TPortionAddress>& busyPortions, const std::shared_ptr<TColumnEngineChanges::IMemoryPredictor>& memoryPredictor); - }; - TDuration ProcessTiering(const ui64 pathId, const TTiering& tiering, TTieringProcessContext& context) const; - bool DrainEvictionQueue(std::map<TMonotonic, std::vector<TEvictionsController::TTieringWithPathId>>& evictionsQueue, TTieringProcessContext& context) const; + std::shared_ptr<NActualizer::TController> ActualizationController; + public: + const std::shared_ptr<NActualizer::TController>& GetActualizationController() const { + return ActualizationController; + } + ui64* GetLastPortionPointer() { return &LastPortion; } @@ -141,9 +79,14 @@ class TColumnEngineForLogs : public IColumnEngine { ADD, }; - TColumnEngineForLogs(ui64 tabletId, const TCompactionLimits& limits, const std::shared_ptr<IStoragesManager>& storagesManager); + TColumnEngineForLogs(ui64 tabletId, const std::shared_ptr<IStoragesManager>& storagesManager, const TSnapshot& snapshot, const NKikimrSchemeOp::TColumnTableSchema& schema); + TColumnEngineForLogs(ui64 tabletId, const std::shared_ptr<IStoragesManager>& storagesManager, const TSnapshot& snapshot, TIndexInfo&& schema); + + virtual void OnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& manager, const NColumnShard::TTtl& ttl, const std::optional<ui64> pathId) override; - virtual void OnTieringModified(std::shared_ptr<NColumnShard::TTiersManager> manager, const NColumnShard::TTtl& ttl) override; + virtual std::shared_ptr<TVersionedIndex> CopyVersionedIndexPtr() const override { + return std::make_shared<TVersionedIndex>(VersionedIndex); + } const TVersionedIndex& GetVersionedIndex() const override { return VersionedIndex; @@ -151,33 +94,37 @@ class TColumnEngineForLogs : public IColumnEngine { const TMap<ui64, std::shared_ptr<TColumnEngineStats>>& GetStats() const override; const TColumnEngineStats& GetTotalStats() override; - ui64 MemoryUsage() const override; TSnapshot LastUpdate() const override { return LastSnapshot; } virtual void DoRegisterTable(const ui64 pathId) override; public: bool Load(IDbWrapper& db) override; - std::shared_ptr<TInsertColumnEngineChanges> StartInsert(std::vector<TInsertedData>&& dataToIndex) noexcept override; - std::shared_ptr<TColumnEngineChanges> StartCompaction(const TCompactionLimits& limits, const THashSet<TPortionAddress>& busyPortions) noexcept override; - std::shared_ptr<TCleanupColumnEngineChanges> StartCleanup(const TSnapshot& snapshot, THashSet<ui64>& pathsToDrop, ui32 maxRecords) noexcept override; - std::shared_ptr<TTTLColumnEngineChanges> StartTtl(const THashMap<ui64, TTiering>& pathEviction, - const THashSet<TPortionAddress>& busyPortions, const ui64 memoryUsageLimit) noexcept override; + virtual bool IsOverloadedByMetadata(const ui64 limit) const override { + return limit < TGranulesStat::GetSumMetadataMemoryPortionsSize(); + } + std::shared_ptr<TInsertColumnEngineChanges> StartInsert(std::vector<TInsertedData>&& dataToIndex) noexcept override; + std::shared_ptr<TColumnEngineChanges> StartCompaction(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) noexcept override; + std::shared_ptr<TCleanupPortionsColumnEngineChanges> StartCleanupPortions(const TSnapshot& snapshot, const THashSet<ui64>& pathsToDrop, const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) noexcept override; + std::shared_ptr<TCleanupTablesColumnEngineChanges> StartCleanupTables(THashSet<ui64>& pathsToDrop) noexcept override; + std::vector<std::shared_ptr<TTTLColumnEngineChanges>> StartTtl(const THashMap<ui64, TTiering>& pathEviction, + const std::shared_ptr<NDataLocks::TManager>& locksManager, const ui64 memoryUsageLimit) noexcept override; + + void ReturnToIndexes(const THashMap<ui64, THashSet<ui64>>& portions) const { + return GranulesStorage->ReturnToIndexes(portions); + } bool ApplyChanges(IDbWrapper& db, std::shared_ptr<TColumnEngineChanges> indexChanges, const TSnapshot& snapshot) noexcept override; void RegisterSchemaVersion(const TSnapshot& snapshot, TIndexInfo&& info) override; + void RegisterSchemaVersion(const TSnapshot& snapshot, const NKikimrSchemeOp::TColumnTableSchema& schema) override; std::shared_ptr<TSelectInfo> Select(ui64 pathId, TSnapshot snapshot, const TPKRangesFilter& pkRangesFilter) const override; bool IsPortionExists(const ui64 pathId, const ui64 portionId) const { - auto it = Tables.find(pathId); - if (it == Tables.end()) { - return false; - } - return !!it->second->GetPortionPtr(portionId); + return !!GranulesStorage->GetPortionOptional(pathId, portionId); } virtual bool HasDataInPathId(const ui64 pathId) const override { @@ -200,22 +147,11 @@ class TColumnEngineForLogs : public IColumnEngine { } std::shared_ptr<TGranuleMeta> GetGranuleOptional(const ui64 pathId) const { - auto it = Tables.find(pathId); - if (it == Tables.end()) { - return nullptr; - } - return it->second; + return GranulesStorage->GetGranuleOptional(pathId); } - std::vector<std::shared_ptr<TGranuleMeta>> GetTables(const ui64 pathIdFrom, const ui64 pathIdTo) const { - std::vector<std::shared_ptr<TGranuleMeta>> result; - for (auto&& i : Tables) { - if (i.first < pathIdFrom || i.first > pathIdTo) { - continue; - } - result.emplace_back(i.second); - } - return result; + std::vector<std::shared_ptr<TGranuleMeta>> GetTables(const std::optional<ui64> pathIdFrom, const std::optional<ui64> pathIdTo) const { + return GranulesStorage->GetTables(pathIdFrom, pathIdTo); } ui64 GetTabletId() const { @@ -225,9 +161,6 @@ class TColumnEngineForLogs : public IColumnEngine { private: TVersionedIndex VersionedIndex; ui64 TabletId; - std::shared_ptr<TColumnsTable> ColumnsTable; - std::shared_ptr<TCountersTable> CountersTable; - THashMap<ui64, std::shared_ptr<TGranuleMeta>> Tables; // pathId into Granule that equal to Table TMap<ui64, std::shared_ptr<TColumnEngineStats>> PathStats; // per path_id stats sorted by path_id std::map<TSnapshot, std::vector<TPortionInfo>> CleanupPortions; TColumnEngineStats Counters; diff --git a/ydb/core/tx/columnshard/engines/db_wrapper.cpp b/ydb/core/tx/columnshard/engines/db_wrapper.cpp index 838a082af52d..4bfd6be1554b 100644 --- a/ydb/core/tx/columnshard/engines/db_wrapper.cpp +++ b/ydb/core/tx/columnshard/engines/db_wrapper.cpp @@ -48,11 +48,12 @@ void TDbWrapper::WriteColumn(const NOlap::TPortionInfo& portion, const TColumnRe *rowProto.MutablePortionMeta() = std::move(*proto); } using IndexColumns = NColumnShard::Schema::IndexColumns; + auto removeSnapshot = portion.GetRemoveSnapshotOptional(); db.Table<IndexColumns>().Key(0, portion.GetDeprecatedGranuleId(), row.ColumnId, - portion.GetMinSnapshot().GetPlanStep(), portion.GetMinSnapshot().GetTxId(), portion.GetPortion(), row.Chunk).Update( - NIceDb::TUpdate<IndexColumns::XPlanStep>(portion.GetRemoveSnapshot().GetPlanStep()), - NIceDb::TUpdate<IndexColumns::XTxId>(portion.GetRemoveSnapshot().GetTxId()), - NIceDb::TUpdate<IndexColumns::Blob>(row.SerializedBlobId()), + portion.GetMinSnapshotDeprecated().GetPlanStep(), portion.GetMinSnapshotDeprecated().GetTxId(), portion.GetPortion(), row.Chunk).Update( + NIceDb::TUpdate<IndexColumns::XPlanStep>(removeSnapshot ? removeSnapshot->GetPlanStep() : 0), + NIceDb::TUpdate<IndexColumns::XTxId>(removeSnapshot ? removeSnapshot->GetTxId() : 0), + NIceDb::TUpdate<IndexColumns::Blob>(portion.GetBlobId(row.GetBlobRange().GetBlobIdxVerified()).SerializeBinary()), NIceDb::TUpdate<IndexColumns::Metadata>(rowProto.SerializeAsString()), NIceDb::TUpdate<IndexColumns::Offset>(row.BlobRange.Offset), NIceDb::TUpdate<IndexColumns::Size>(row.BlobRange.Size), @@ -64,7 +65,7 @@ void TDbWrapper::EraseColumn(const NOlap::TPortionInfo& portion, const TColumnRe NIceDb::TNiceDb db(Database); using IndexColumns = NColumnShard::Schema::IndexColumns; db.Table<IndexColumns>().Key(0, portion.GetDeprecatedGranuleId(), row.ColumnId, - portion.GetMinSnapshot().GetPlanStep(), portion.GetMinSnapshot().GetTxId(), portion.GetPortion(), row.Chunk).Delete(); + portion.GetMinSnapshotDeprecated().GetPlanStep(), portion.GetMinSnapshotDeprecated().GetTxId(), portion.GetPortion(), row.Chunk).Delete(); } bool TDbWrapper::LoadColumns(const std::function<void(const NOlap::TPortionInfo&, const TColumnChunkLoadContext&)>& callback) { @@ -78,7 +79,7 @@ bool TDbWrapper::LoadColumns(const std::function<void(const NOlap::TPortionInfo& while (!rowset.EndOfSet()) { NOlap::TPortionInfo portion = NOlap::TPortionInfo::BuildEmpty(); portion.SetPathId(rowset.GetValue<IndexColumns::PathId>()); - portion.SetMinSnapshot(rowset.GetValue<IndexColumns::PlanStep>(), rowset.GetValue<IndexColumns::TxId>()); + portion.SetMinSnapshotDeprecated(NOlap::TSnapshot(rowset.GetValue<IndexColumns::PlanStep>(), rowset.GetValue<IndexColumns::TxId>())); portion.SetPortion(rowset.GetValue<IndexColumns::Portion>()); portion.SetDeprecatedGranuleId(rowset.GetValue<IndexColumns::Granule>()); @@ -100,7 +101,7 @@ void TDbWrapper::WriteIndex(const TPortionInfo& portion, const TIndexChunk& row) using IndexIndexes = NColumnShard::Schema::IndexIndexes; NIceDb::TNiceDb db(Database); db.Table<IndexIndexes>().Key(portion.GetPathId(), portion.GetPortionId(), row.GetIndexId(), row.GetChunkIdx()).Update( - NIceDb::TUpdate<IndexIndexes::Blob>(row.GetBlobRange().BlobId.SerializeBinary()), + NIceDb::TUpdate<IndexIndexes::Blob>(portion.GetBlobId(row.GetBlobRange().GetBlobIdxVerified()).SerializeBinary()), NIceDb::TUpdate<IndexIndexes::Offset>(row.GetBlobRange().Offset), NIceDb::TUpdate<IndexIndexes::Size>(row.GetBlobRange().Size), NIceDb::TUpdate<IndexIndexes::RecordsCount>(row.GetRecordsCount()), diff --git a/ydb/core/tx/columnshard/engines/db_wrapper.h b/ydb/core/tx/columnshard/engines/db_wrapper.h index 743f43272b20..6e23ee5a67a0 100644 --- a/ydb/core/tx/columnshard/engines/db_wrapper.h +++ b/ydb/core/tx/columnshard/engines/db_wrapper.h @@ -1,5 +1,6 @@ #pragma once #include "defs.h" +#include <ydb/core/tx/columnshard/common/blob.h> namespace NKikimr::NTable { class TDatabase; @@ -11,7 +12,7 @@ class TColumnChunkLoadContext; class TIndexChunkLoadContext; struct TInsertedData; class TInsertTableAccessor; -struct TColumnRecord; +class TColumnRecord; class TIndexChunk; struct TGranuleRecord; class IColumnEngine; diff --git a/ydb/core/tx/columnshard/engines/defs.h b/ydb/core/tx/columnshard/engines/defs.h index cb0ca8ee6ae7..a01edc7ef767 100644 --- a/ydb/core/tx/columnshard/engines/defs.h +++ b/ydb/core/tx/columnshard/engines/defs.h @@ -15,14 +15,6 @@ inline TWriteId operator++(TWriteId& w) noexcept { return w; } -class IBlobGroupSelector { -protected: - virtual ~IBlobGroupSelector() = default; - -public: - virtual ui32 GetGroup(const TLogoBlobID& blobId) const = 0; -}; - } // namespace NKikimr::NOlap template <> diff --git a/ydb/core/tx/columnshard/engines/filter.cpp b/ydb/core/tx/columnshard/engines/filter.cpp index bcfa6c7f109f..67dfb8e5ae71 100644 --- a/ydb/core/tx/columnshard/engines/filter.cpp +++ b/ydb/core/tx/columnshard/engines/filter.cpp @@ -1,6 +1,6 @@ #include "filter.h" #include "defs.h" -#include "reader/read_metadata.h" +#include "scheme/abstract/index_info.h" #include <ydb/core/formats/arrow/arrow_helpers.h> #include <ydb/core/formats/arrow/custom_registry.h> @@ -82,8 +82,8 @@ class TTableSnapshotGetter { template <class TGetter, class TData> NArrow::TColumnFilter MakeSnapshotFilterImpl(const std::shared_ptr<TData>& batch, const TSnapshot& snapshot) { Y_ABORT_UNLESS(batch); - auto steps = batch->GetColumnByName(TIndexInfo::SPEC_COL_PLAN_STEP); - auto ids = batch->GetColumnByName(TIndexInfo::SPEC_COL_TX_ID); + auto steps = batch->GetColumnByName(IIndexInfo::SPEC_COL_PLAN_STEP); + auto ids = batch->GetColumnByName(IIndexInfo::SPEC_COL_TX_ID); NArrow::TColumnFilter result = NArrow::TColumnFilter::BuildAllowFilter(); TGetter getter(steps, ids, snapshot); result.Reset(steps->length(), std::move(getter)); @@ -123,18 +123,4 @@ NArrow::TColumnFilter MakeSnapshotFilter(const std::shared_ptr<arrow::RecordBatc return MakeSnapshotFilterImpl<TSnapshotGetter>(batch, snapshot); } -NArrow::TColumnFilter FilterPortion(const std::shared_ptr<arrow::Table>& portion, const TReadMetadata& readMetadata, const bool useSnapshotFilter) { - Y_ABORT_UNLESS(portion); - NArrow::TColumnFilter result = readMetadata.GetPKRangesFilter().BuildFilter(portion); - if (readMetadata.GetSnapshot().GetPlanStep() && useSnapshotFilter) { - result = result.And(MakeSnapshotFilter(portion, readMetadata.GetSnapshot())); - } - - return result; -} - -NArrow::TColumnFilter FilterNotIndexed(const std::shared_ptr<arrow::Table>& batch, const TReadMetadata& readMetadata) { - return readMetadata.GetPKRangesFilter().BuildFilter(batch); -} - } diff --git a/ydb/core/tx/columnshard/engines/filter.h b/ydb/core/tx/columnshard/engines/filter.h index 22429208a8d0..7670b0eab1d3 100644 --- a/ydb/core/tx/columnshard/engines/filter.h +++ b/ydb/core/tx/columnshard/engines/filter.h @@ -11,7 +11,4 @@ NArrow::TColumnFilter MakeSnapshotFilter(const std::shared_ptr<arrow::RecordBatc NArrow::TColumnFilter MakeSnapshotFilter(const std::shared_ptr<arrow::Table>& batch, const TSnapshot& snapshot); struct TReadMetadata; -NArrow::TColumnFilter FilterPortion(const std::shared_ptr<arrow::Table>& batch, const TReadMetadata& readMetadata, const bool useSnapshotFilter); -NArrow::TColumnFilter FilterNotIndexed(const std::shared_ptr<arrow::Table>& batch, const TReadMetadata& readMetadata); - } // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/insert_table/data.h b/ydb/core/tx/columnshard/engines/insert_table/data.h index ca726640b24d..c6cea97be5a6 100644 --- a/ydb/core/tx/columnshard/engines/insert_table/data.h +++ b/ydb/core/tx/columnshard/engines/insert_table/data.h @@ -24,6 +24,7 @@ struct TInsertedData { }; std::shared_ptr<TBlobStorageGuard> BlobDataGuard; + public: ui64 PlanStep = 0; ui64 WriteTxId = 0; @@ -41,6 +42,10 @@ struct TInsertedData { } } + ui64 GetTxVolume() const { + return Meta.GetTxVolume() + sizeof(TBlobRange); + } + const TInsertedDataMeta& GetMeta() const { return Meta; } @@ -127,7 +132,8 @@ class TCommittedBlob { private: TBlobRange BlobRange; TSnapshot CommitSnapshot; - YDB_READONLY_DEF(ui64, SchemaVersion); + YDB_READONLY(ui64, SchemaVersion, 0); + YDB_READONLY(ui64, RecordsCount, 0); YDB_READONLY_DEF(std::optional<NArrow::TReplaceKey>, First); YDB_READONLY_DEF(std::optional<NArrow::TReplaceKey>, Last); public: @@ -145,15 +151,16 @@ class TCommittedBlob { return *Last; } - TCommittedBlob(const TBlobRange& blobRange, const TSnapshot& snapshot, const ui64 schemaVersion, const std::optional<NArrow::TReplaceKey>& first, const std::optional<NArrow::TReplaceKey>& last) + TCommittedBlob(const TBlobRange& blobRange, const TSnapshot& snapshot, const ui64 schemaVersion, const ui64 recordsCount, const std::optional<NArrow::TReplaceKey>& first, const std::optional<NArrow::TReplaceKey>& last) : BlobRange(blobRange) , CommitSnapshot(snapshot) , SchemaVersion(schemaVersion) + , RecordsCount(recordsCount) , First(first) , Last(last) {} - /// It uses trick then we place key wtih planStep:txId in container and find them later by BlobId only. + /// It uses trick then we place key with planStep:txId in container and find them later by BlobId only. /// So hash() and equality should depend on BlobId only. bool operator == (const TCommittedBlob& key) const { return BlobRange == key.BlobRange; } ui64 Hash() const noexcept { return BlobRange.Hash(); } diff --git a/ydb/core/tx/columnshard/engines/insert_table/insert_table.cpp b/ydb/core/tx/columnshard/engines/insert_table/insert_table.cpp index 02eaedbeb918..91af9a46140d 100644 --- a/ydb/core/tx/columnshard/engines/insert_table/insert_table.cpp +++ b/ydb/core/tx/columnshard/engines/insert_table/insert_table.cpp @@ -79,17 +79,29 @@ THashSet<TWriteId> TInsertTable::DropPath(IDbWrapper& dbTable, ui64 pathId) { return Summary.GetInsertedByPathId(pathId); } -void TInsertTable::EraseCommitted(IDbWrapper& dbTable, const TInsertedData& data, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction) { - if (Summary.EraseCommitted(data)) { - RemoveBlobLink(data.GetBlobRange().BlobId, blobsAction); +void TInsertTable::EraseCommittedOnExecute(IDbWrapper& dbTable, const TInsertedData& data, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction) { + if (Summary.HasCommitted(data)) { dbTable.EraseCommitted(data); + RemoveBlobLinkOnExecute(data.GetBlobRange().BlobId, blobsAction); } } -void TInsertTable::EraseAborted(IDbWrapper& dbTable, const TInsertedData& data, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction) { - if (Summary.EraseAborted((TWriteId)data.WriteTxId)) { - RemoveBlobLink(data.GetBlobRange().BlobId, blobsAction); +void TInsertTable::EraseCommittedOnComplete(const TInsertedData& data) { + if (Summary.EraseCommitted(data)) { + RemoveBlobLinkOnComplete(data.GetBlobRange().BlobId); + } +} + +void TInsertTable::EraseAbortedOnExecute(IDbWrapper& dbTable, const TInsertedData& data, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction) { + if (Summary.HasAborted((TWriteId)data.WriteTxId)) { dbTable.EraseAborted(data); + RemoveBlobLinkOnExecute(data.GetBlobRange().BlobId, blobsAction); + } +} + +void TInsertTable::EraseAbortedOnComplete(const TInsertedData& data) { + if (Summary.EraseAborted((TWriteId)data.WriteTxId)) { + RemoveBlobLinkOnComplete(data.GetBlobRange().BlobId); } } @@ -121,19 +133,30 @@ std::vector<TCommittedBlob> TInsertTable::Read(ui64 pathId, const TSnapshot& sna std::vector<TCommittedBlob> result; result.reserve(ret.size()); for (auto&& i : ret) { - result.emplace_back(TCommittedBlob(i->GetBlobRange(), i->GetSnapshot(), i->GetSchemaVersion(), i->GetMeta().GetFirstPK(pkSchema), i->GetMeta().GetLastPK(pkSchema))); + result.emplace_back(TCommittedBlob(i->GetBlobRange(), i->GetSnapshot(), i->GetSchemaVersion(), i->GetMeta().GetNumRows(), i->GetMeta().GetFirstPK(pkSchema), i->GetMeta().GetLastPK(pkSchema))); } return result; } -bool TInsertTableAccessor::RemoveBlobLink(const TUnifiedBlobId& blobId, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction) { +bool TInsertTableAccessor::RemoveBlobLinkOnExecute(const TUnifiedBlobId& blobId, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction) { AFL_VERIFY(blobsAction); auto itBlob = BlobLinks.find(blobId); AFL_VERIFY(itBlob != BlobLinks.end()); AFL_VERIFY(itBlob->second >= 1); if (itBlob->second == 1) { - blobsAction->DeclareRemove(itBlob->first); + blobsAction->DeclareSelfRemove(itBlob->first); + return true; + } else { + return false; + } +} + +bool TInsertTableAccessor::RemoveBlobLinkOnComplete(const TUnifiedBlobId& blobId) { + auto itBlob = BlobLinks.find(blobId); + AFL_VERIFY(itBlob != BlobLinks.end()); + AFL_VERIFY(itBlob->second >= 1); + if (itBlob->second == 1) { BlobLinks.erase(itBlob); return true; } else { diff --git a/ydb/core/tx/columnshard/engines/insert_table/insert_table.h b/ydb/core/tx/columnshard/engines/insert_table/insert_table.h index e7d523610fb2..373964818370 100644 --- a/ydb/core/tx/columnshard/engines/insert_table/insert_table.h +++ b/ydb/core/tx/columnshard/engines/insert_table/insert_table.h @@ -21,12 +21,24 @@ class TInsertTableAccessor { ++BlobLinks[blobId]; } - bool RemoveBlobLink(const TUnifiedBlobId& blobId, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction); + bool RemoveBlobLinkOnExecute(const TUnifiedBlobId& blobId, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction); + bool RemoveBlobLinkOnComplete(const TUnifiedBlobId& blobId); public: const std::map<TPathInfoIndexPriority, std::set<const TPathInfo*>>& GetPathPriorities() const { return Summary.GetPathPriorities(); } + std::optional<TSnapshot> GetMinCommittedSnapshot(const ui64 pathId) const { + auto* info = Summary.GetPathInfoOptional(pathId); + if (!info) { + return {}; + } else if (info->GetCommitted().empty()) { + return {}; + } else { + return info->GetCommitted().begin()->GetSnapshot(); + } + } + bool AddInserted(TInsertedData&& data, const bool load) { if (load) { AddBlobLink(data.GetBlobRange().BlobId); @@ -72,8 +84,13 @@ class TInsertTable: public TInsertTableAccessor { void Abort(IDbWrapper& dbTable, const THashSet<TWriteId>& writeIds); THashSet<TWriteId> OldWritesToAbort(const TInstant& now) const; THashSet<TWriteId> DropPath(IDbWrapper& dbTable, ui64 pathId); - void EraseCommitted(IDbWrapper& dbTable, const TInsertedData& key, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction); - void EraseAborted(IDbWrapper& dbTable, const TInsertedData& key, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction); + + void EraseCommittedOnExecute(IDbWrapper& dbTable, const TInsertedData& key, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction); + void EraseCommittedOnComplete(const TInsertedData& key); + + void EraseAbortedOnExecute(IDbWrapper& dbTable, const TInsertedData& key, const std::shared_ptr<IBlobsDeclareRemovingAction>& blobsAction); + void EraseAbortedOnComplete(const TInsertedData& key); + std::vector<TCommittedBlob> Read(ui64 pathId, const TSnapshot& snapshot, const std::shared_ptr<arrow::Schema>& pkSchema) const; bool Load(IDbWrapper& dbTable, const TInstant loadTime); }; diff --git a/ydb/core/tx/columnshard/engines/insert_table/meta.h b/ydb/core/tx/columnshard/engines/insert_table/meta.h index 40c7d59dd1c3..b513288eb787 100644 --- a/ydb/core/tx/columnshard/engines/insert_table/meta.h +++ b/ydb/core/tx/columnshard/engines/insert_table/meta.h @@ -20,6 +20,10 @@ class TInsertedDataMeta { const std::optional<NArrow::TFirstLastSpecialKeys>& GetSpecialKeys() const; public: + ui64 GetTxVolume() const { + return 2 * sizeof(ui64) + sizeof(ui32) + sizeof(OriginalProto) + (SpecialKeysParsed ? SpecialKeysParsed->GetMemoryBytes() : 0); + } + TInsertedDataMeta(const NKikimrTxColumnShard::TLogicalMetadata& proto) : OriginalProto(proto) { diff --git a/ydb/core/tx/columnshard/engines/insert_table/path_info.cpp b/ydb/core/tx/columnshard/engines/insert_table/path_info.cpp index 4c46193e1537..31be2b8a8fa3 100644 --- a/ydb/core/tx/columnshard/engines/insert_table/path_info.cpp +++ b/ydb/core/tx/columnshard/engines/insert_table/path_info.cpp @@ -39,6 +39,10 @@ bool TPathInfo::EraseCommitted(const TInsertedData& data) { return result; } +bool TPathInfo::HasCommitted(const TInsertedData& data) { + return Committed.contains(data); +} + bool TPathInfo::AddCommitted(TInsertedData&& data, const bool load) { const ui64 dataSize = data.BlobSize(); Summary->RemovePriority(*this); diff --git a/ydb/core/tx/columnshard/engines/insert_table/path_info.h b/ydb/core/tx/columnshard/engines/insert_table/path_info.h index 242126faf3d2..5e44929307c4 100644 --- a/ydb/core/tx/columnshard/engines/insert_table/path_info.h +++ b/ydb/core/tx/columnshard/engines/insert_table/path_info.h @@ -62,6 +62,7 @@ class TPathInfo: public TMoveOnly { TPathInfoIndexPriority GetIndexationPriority() const; bool EraseCommitted(const TInsertedData& data); + bool HasCommitted(const TInsertedData& data); const TSet<TInsertedData>& GetCommitted() const { return Committed; diff --git a/ydb/core/tx/columnshard/engines/insert_table/rt_insertion.cpp b/ydb/core/tx/columnshard/engines/insert_table/rt_insertion.cpp index 84eae30941f5..4723ac8da5c6 100644 --- a/ydb/core/tx/columnshard/engines/insert_table/rt_insertion.cpp +++ b/ydb/core/tx/columnshard/engines/insert_table/rt_insertion.cpp @@ -140,6 +140,14 @@ bool TInsertionSummary::EraseAborted(const TWriteId writeId) { return true; } +bool TInsertionSummary::HasAborted(const TWriteId writeId) { + auto it = Aborted.find(writeId); + if (it == Aborted.end()) { + return false; + } + return true; +} + bool TInsertionSummary::EraseCommitted(const TInsertedData& data) { TPathInfo* pathInfo = GetPathInfoOptional(data.PathId); if (!pathInfo) { @@ -155,6 +163,14 @@ bool TInsertionSummary::EraseCommitted(const TInsertedData& data) { } } +bool TInsertionSummary::HasCommitted(const TInsertedData& data) { + TPathInfo* pathInfo = GetPathInfoOptional(data.PathId); + if (!pathInfo) { + return false; + } + return pathInfo->HasCommitted(data); +} + const NKikimr::NOlap::TInsertedData* TInsertionSummary::AddAborted(TInsertedData&& data, const bool load /*= false*/) { const TWriteId writeId((TWriteId)data.WriteTxId); Counters.Aborted.Add(data.BlobSize(), load); diff --git a/ydb/core/tx/columnshard/engines/insert_table/rt_insertion.h b/ydb/core/tx/columnshard/engines/insert_table/rt_insertion.h index 3ae529fca4fc..291886bd81bd 100644 --- a/ydb/core/tx/columnshard/engines/insert_table/rt_insertion.h +++ b/ydb/core/tx/columnshard/engines/insert_table/rt_insertion.h @@ -47,8 +47,10 @@ class TInsertionSummary { const TInsertedData* AddAborted(TInsertedData&& data, const bool load = false); bool EraseAborted(const TWriteId writeId); + bool HasAborted(const TWriteId writeId); bool EraseCommitted(const TInsertedData& data); + bool HasCommitted(const TInsertedData& data); const TInsertedData* AddInserted(TInsertedData&& data, const bool load = false); std::optional<TInsertedData> ExtractInserted(const TWriteId id); diff --git a/ydb/core/tx/columnshard/engines/portions/column_record.cpp b/ydb/core/tx/columnshard/engines/portions/column_record.cpp index 07d9eb3bd397..e4fbef70c5fc 100644 --- a/ydb/core/tx/columnshard/engines/portions/column_record.cpp +++ b/ydb/core/tx/columnshard/engines/portions/column_record.cpp @@ -1,38 +1,42 @@ #include "column_record.h" + #include <ydb/core/formats/arrow/arrow_helpers.h> + +#include <ydb/core/tx/columnshard/data_sharing/protos/data.pb.h> #include <ydb/core/tx/columnshard/common/scalars.h> #include <ydb/core/tx/columnshard/engines/scheme/index_info.h> #include <ydb/core/tx/columnshard/columnshard_schema.h> namespace NKikimr::NOlap { -TChunkMeta::TChunkMeta(const TColumnChunkLoadContext& context, const TIndexInfo& indexInfo) { - auto field = indexInfo.ArrowColumnFieldOptional(context.GetAddress().GetColumnId()); - if (context.GetMetaProto().HasNumRows()) { - NumRows = context.GetMetaProto().GetNumRows(); +TConclusionStatus TChunkMeta::DeserializeFromProto(const TChunkAddress& address, const NKikimrTxColumnShard::TIndexColumnMeta& proto, const TSimpleColumnInfo& columnInfo) { + auto field = columnInfo.GetArrowField(); + if (proto.HasNumRows()) { + NumRows = proto.GetNumRows(); } - if (context.GetMetaProto().HasRawBytes()) { - RawBytes = context.GetMetaProto().GetRawBytes(); + if (proto.HasRawBytes()) { + RawBytes = proto.GetRawBytes(); } - if (context.GetMetaProto().HasMaxValue()) { - AFL_VERIFY(field)("field_id", context.GetAddress().GetColumnId())("field_name", indexInfo.GetColumnName(context.GetAddress().GetColumnId())); - Max = ConstantToScalar(context.GetMetaProto().GetMaxValue(), field->type()); + if (proto.HasMaxValue()) { + AFL_VERIFY(field)("field_id", address.GetColumnId())("field_name", columnInfo.GetColumnName()); + Max = ConstantToScalar(proto.GetMaxValue(), field->type()); } + return TConclusionStatus::Success(); +} + +TChunkMeta::TChunkMeta(const TColumnChunkLoadContext& context, const TSimpleColumnInfo& columnInfo) { + DeserializeFromProto(context.GetAddress(), context.GetMetaProto(), columnInfo).Validate(); } -TChunkMeta::TChunkMeta(const std::shared_ptr<arrow::Array>& column, const ui32 columnId, const TIndexInfo& indexInfo) - : TBase(column, indexInfo.GetMinMaxIdxColumns().contains(columnId), indexInfo.IsSortedColumn(columnId)) +TChunkMeta::TChunkMeta(const std::shared_ptr<arrow::Array>& column, const TSimpleColumnInfo& columnInfo) + : TBase(column, columnInfo.GetNeedMinMax(), columnInfo.GetIsSorted()) { } NKikimrTxColumnShard::TIndexColumnMeta TChunkMeta::SerializeToProto() const { NKikimrTxColumnShard::TIndexColumnMeta meta; - if (NumRows) { - meta.SetNumRows(*NumRows); - } - if (RawBytes) { - meta.SetRawBytes(*RawBytes); - } + meta.SetNumRows(NumRows); + meta.SetRawBytes(RawBytes); if (HasMax()) { ScalarToConstant(*Max, *meta.MutableMaxValue()); ScalarToConstant(*Max, *meta.MutableMinValue()); @@ -40,19 +44,47 @@ NKikimrTxColumnShard::TIndexColumnMeta TChunkMeta::SerializeToProto() const { return meta; } -TColumnRecord::TColumnRecord(const TColumnChunkLoadContext& loadContext, const TIndexInfo& info) - : Meta(loadContext, info) +TColumnRecord::TColumnRecord(const TBlobRangeLink16::TLinkId blobLinkId, const TColumnChunkLoadContext& loadContext, const TSimpleColumnInfo& columnInfo) + : Meta(loadContext, columnInfo) , ColumnId(loadContext.GetAddress().GetColumnId()) , Chunk(loadContext.GetAddress().GetChunk()) - , BlobRange(loadContext.GetBlobRange()) + , BlobRange(loadContext.GetBlobRange().BuildLink(blobLinkId)) { } -TColumnRecord::TColumnRecord(const TChunkAddress& address, const std::shared_ptr<arrow::Array>& column, const TIndexInfo& info) - : Meta(column, address.GetColumnId(), info) +TColumnRecord::TColumnRecord(const TChunkAddress& address, const std::shared_ptr<arrow::Array>& column, const TSimpleColumnInfo& columnInfo) + : Meta(column, columnInfo) , ColumnId(address.GetColumnId()) , Chunk(address.GetChunk()) { } +NKikimrColumnShardDataSharingProto::TColumnRecord TColumnRecord::SerializeToProto() const { + NKikimrColumnShardDataSharingProto::TColumnRecord result; + result.SetColumnId(ColumnId); + result.SetChunkIdx(Chunk); + *result.MutableMeta() = Meta.SerializeToProto(); + *result.MutableBlobRange() = BlobRange.SerializeToProto(); + return result; +} + +NKikimr::TConclusionStatus TColumnRecord::DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TColumnRecord& proto, const TSimpleColumnInfo& columnInfo) { + ColumnId = proto.GetColumnId(); + Chunk = proto.GetChunkIdx(); + { + auto parse = Meta.DeserializeFromProto(GetAddress(), proto.GetMeta(), columnInfo); + if (!parse) { + return parse; + } + } + { + auto parsed = TBlobRangeLink16::BuildFromProto(proto.GetBlobRange()); + if (!parsed) { + return parsed; + } + BlobRange = parsed.DetachResult(); + } + return TConclusionStatus::Success(); +} + } diff --git a/ydb/core/tx/columnshard/engines/portions/column_record.h b/ydb/core/tx/columnshard/engines/portions/column_record.h index 219e6f8b5316..9d958055cbf9 100644 --- a/ydb/core/tx/columnshard/engines/portions/column_record.h +++ b/ydb/core/tx/columnshard/engines/portions/column_record.h @@ -1,49 +1,38 @@ #pragma once #include "common.h" + #include <ydb/core/protos/tx_columnshard.pb.h> + #include <ydb/core/tx/columnshard/blob.h> #include <ydb/core/tx/columnshard/common/snapshot.h> #include <ydb/core/tx/columnshard/splitter/stats.h> #include <ydb/core/tx/columnshard/splitter/chunks.h> +#include <ydb/core/tx/columnshard/splitter/chunk_meta.h> + #include <ydb/library/accessor/accessor.h> -#include <util/string/builder.h> + #include <contrib/libs/apache/arrow/cpp/src/arrow/scalar.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> +#include <util/string/builder.h> + +namespace NKikimrColumnShardDataSharingProto { +class TColumnRecord; +} + namespace NKikimr::NOlap { class TColumnChunkLoadContext; struct TIndexInfo; - -class TIndexChunk { -private: - YDB_READONLY(ui32, IndexId, 0); - YDB_READONLY(ui32, ChunkIdx, 0); - YDB_READONLY(ui32, RecordsCount, 0); - YDB_READONLY(ui32, RawBytes, 0); - YDB_READONLY_DEF(TBlobRange, BlobRange); - -public: - TIndexChunk(const ui32 indexId, const ui32 chunkIdx, const ui32 recordsCount, const ui64 rawBytes, const TBlobRange& blobRange) - : IndexId(indexId) - , ChunkIdx(chunkIdx) - , RecordsCount(recordsCount) - , RawBytes(rawBytes) - , BlobRange(blobRange) { - - } - - void RegisterBlobId(const TUnifiedBlobId& blobId) { -// AFL_VERIFY(!BlobRange.BlobId.GetTabletId())("original", BlobRange.BlobId.ToStringNew())("new", blobId.ToStringNew()); - BlobRange.BlobId = blobId; - } -}; +class TColumnRecord; struct TChunkMeta: public TSimpleChunkMeta { private: using TBase = TSimpleChunkMeta; TChunkMeta() = default; + [[nodiscard]] TConclusionStatus DeserializeFromProto(const TChunkAddress& address, const NKikimrTxColumnShard::TIndexColumnMeta& proto, const TSimpleColumnInfo& columnInfo); + friend class TColumnRecord; public: TChunkMeta(TSimpleChunkMeta&& baseMeta) : TBase(baseMeta) @@ -51,6 +40,15 @@ struct TChunkMeta: public TSimpleChunkMeta { } + [[nodiscard]] static TConclusion<TChunkMeta> BuildFromProto(const TChunkAddress& address, const NKikimrTxColumnShard::TIndexColumnMeta& proto, const TSimpleColumnInfo& columnInfo) { + TChunkMeta result; + auto parse = result.DeserializeFromProto(address, proto, columnInfo); + if (!parse) { + return parse; + } + return result; + } + NKikimrTxColumnShard::TIndexColumnMeta SerializeToProto() const; class TTestInstanceBuilder { @@ -63,12 +61,12 @@ struct TChunkMeta: public TSimpleChunkMeta { } }; - TChunkMeta(const TColumnChunkLoadContext& context, const TIndexInfo& indexInfo); + TChunkMeta(const TColumnChunkLoadContext& context, const TSimpleColumnInfo& columnInfo); - TChunkMeta(const std::shared_ptr<arrow::Array>& column, const ui32 columnId, const TIndexInfo& indexInfo); + TChunkMeta(const std::shared_ptr<arrow::Array>& column, const TSimpleColumnInfo& columnInfo); }; -struct TColumnRecord { +class TColumnRecord { private: TChunkMeta Meta; TColumnRecord(TChunkMeta&& meta) @@ -76,18 +74,28 @@ struct TColumnRecord { { } + + TColumnRecord() = default; + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TColumnRecord& proto, const TSimpleColumnInfo& columnInfo); public: ui32 ColumnId = 0; ui16 Chunk = 0; - TBlobRange BlobRange; + TBlobRangeLink16 BlobRange; + ui32 GetEntityId() const { + return ColumnId; + } - void RegisterBlobId(const TUnifiedBlobId& blobId) { + void ResetBlobRange() { + BlobRange = TBlobRangeLink16(); + } + + void RegisterBlobIdx(const ui16 blobIdx) { // AFL_VERIFY(!BlobRange.BlobId.GetTabletId())("original", BlobRange.BlobId.ToStringNew())("new", blobId.ToStringNew()); - BlobRange.BlobId = blobId; + BlobRange.BlobIdx = blobIdx; } - TColumnRecord(const TChunkAddress& address, const TBlobRange& range, TChunkMeta&& meta) + TColumnRecord(const TChunkAddress& address, const TBlobRangeLink16& range, TChunkMeta&& meta) : Meta(std::move(meta)) , ColumnId(address.GetColumnId()) , Chunk(address.GetChunk()) @@ -114,6 +122,19 @@ struct TColumnRecord { ui16 GetChunkIdx() const { return Chunk; } + const TBlobRangeLink16& GetBlobRange() const { + return BlobRange; + } + + NKikimrColumnShardDataSharingProto::TColumnRecord SerializeToProto() const; + static TConclusion<TColumnRecord> BuildFromProto(const NKikimrColumnShardDataSharingProto::TColumnRecord& proto, const TSimpleColumnInfo& columnInfo) { + TColumnRecord result; + auto parse = result.DeserializeFromProto(proto, columnInfo); + if (!parse) { + return parse; + } + return result; + } TColumnSerializationStat GetSerializationStat(const std::string& columnName) const { TColumnSerializationStat result(ColumnId, columnName); @@ -122,7 +143,7 @@ struct TColumnRecord { } TSimpleSerializationStat GetSerializationStat() const { - return TSimpleSerializationStat(BlobRange.Size, Meta.GetNumRowsVerified(), Meta.GetRawBytesVerified()); + return TSimpleSerializationStat(BlobRange.Size, Meta.GetNumRows(), Meta.GetRawBytes()); } const TChunkMeta& GetMeta() const { @@ -138,11 +159,7 @@ struct TColumnRecord { } bool Valid() const { - return ColumnId && ValidBlob(); - } - - TString SerializedBlobId() const { - return BlobRange.BlobId.SerializeBinary(); + return ColumnId && BlobRange.IsValid(); } TString DebugString() const { @@ -152,13 +169,9 @@ struct TColumnRecord { ; } - bool ValidBlob() const { - return BlobRange.BlobId.IsValid() && BlobRange.Size; - } - - TColumnRecord(const TChunkAddress& address, const std::shared_ptr<arrow::Array>& column, const TIndexInfo& info); + TColumnRecord(const TChunkAddress& address, const std::shared_ptr<arrow::Array>& column, const TSimpleColumnInfo& columnInfo); - TColumnRecord(const TColumnChunkLoadContext& loadContext, const TIndexInfo& info); + TColumnRecord(const TBlobRangeLink16::TLinkId blobLinkId, const TColumnChunkLoadContext& loadContext, const TSimpleColumnInfo& columnInfo); friend IOutputStream& operator << (IOutputStream& out, const TColumnRecord& rec) { out << '{'; @@ -179,14 +192,21 @@ class TSimpleOrderedColumnChunk: public IPortionColumnChunk { YDB_READONLY_DEF(TString, Data); protected: virtual TString DoDebugString() const override { - return TStringBuilder() << "column_id=" << GetColumnId() << ";chunk=" << GetChunkIdx() << ";data_size=" << Data.size() << ";"; + TStringBuilder sb; + sb << "column_id=" << GetColumnId() << ";data_size=" << Data.size() << ";"; + if (GetChunkIdxOptional()) { + sb << "chunk=" << GetChunkIdxVerified() << ";"; + } else { + sb << "chunk=NO_INITIALIZED;"; + } + return sb; } virtual const TString& DoGetData() const override { return Data; } virtual ui32 DoGetRecordsCountImpl() const override { - return ColumnRecord.GetMeta().GetNumRowsVerified(); + return ColumnRecord.GetMeta().GetNumRows(); } virtual std::vector<std::shared_ptr<IPortionDataChunk>> DoInternalSplitImpl(const TColumnSaver& /*saver*/, const std::shared_ptr<NColumnShard::TSplitterCounters>& /*counters*/, const std::vector<ui64>& /*splitSizes*/) const override { diff --git a/ydb/core/tx/columnshard/engines/portions/common.h b/ydb/core/tx/columnshard/engines/portions/common.h index 311563918469..1231a1e9f5f3 100644 --- a/ydb/core/tx/columnshard/engines/portions/common.h +++ b/ydb/core/tx/columnshard/engines/portions/common.h @@ -33,5 +33,11 @@ class TChunkAddress { TString DebugString() const; }; - } + +template<> +struct ::THash<NKikimr::NOlap::TChunkAddress> { + inline ui64 operator()(const NKikimr::NOlap::TChunkAddress& a) const { + return ((ui64)a.GetEntityId()) << 16 + a.GetChunkIdx(); + } +}; diff --git a/ydb/core/tx/columnshard/engines/portions/index_chunk.cpp b/ydb/core/tx/columnshard/engines/portions/index_chunk.cpp new file mode 100644 index 000000000000..4aeaa20dd20e --- /dev/null +++ b/ydb/core/tx/columnshard/engines/portions/index_chunk.cpp @@ -0,0 +1,39 @@ +#include "index_chunk.h" +#include <ydb/core/tx/columnshard/data_sharing/protos/data.pb.h> + +namespace NKikimr::NOlap { + +NKikimr::TConclusionStatus TIndexChunk::DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TIndexChunk& proto) { + IndexId = proto.GetIndexId(); + ChunkIdx = proto.GetChunkIdx(); + { + if (!proto.HasMeta()) { + return TConclusionStatus::Fail("no meta information"); + } + RecordsCount = proto.GetMeta().GetRecordsCount(); + RawBytes = proto.GetMeta().GetRawBytes(); + } + { + auto parsed = TBlobRangeLink16::BuildFromProto(proto.GetBlobRange()); + if (!parsed) { + return parsed; + } + BlobRange = parsed.DetachResult(); + } + return TConclusionStatus::Success(); +} + +NKikimrColumnShardDataSharingProto::TIndexChunk TIndexChunk::SerializeToProto() const { + NKikimrColumnShardDataSharingProto::TIndexChunk result; + result.SetIndexId(IndexId); + result.SetChunkIdx(ChunkIdx); + { + auto* meta = result.MutableMeta(); + meta->SetRecordsCount(RecordsCount); + meta->SetRawBytes(RawBytes); + } + *result.MutableBlobRange() = BlobRange.SerializeToProto(); + return result; +} + +} diff --git a/ydb/core/tx/columnshard/engines/portions/index_chunk.h b/ydb/core/tx/columnshard/engines/portions/index_chunk.h new file mode 100644 index 000000000000..6a71704318ca --- /dev/null +++ b/ydb/core/tx/columnshard/engines/portions/index_chunk.h @@ -0,0 +1,73 @@ +#pragma once + +#include "common.h" + +#include <ydb/core/protos/tx_columnshard.pb.h> + +#include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/common/snapshot.h> +#include <ydb/core/tx/columnshard/splitter/stats.h> +#include <ydb/core/tx/columnshard/splitter/chunks.h> + +#include <ydb/library/accessor/accessor.h> + +#include <contrib/libs/apache/arrow/cpp/src/arrow/scalar.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> + +#include <util/string/builder.h> + +namespace NKikimrColumnShardDataSharingProto { +class TIndexChunk; +} + +namespace NKikimr::NOlap { +struct TIndexInfo; + +class TIndexChunk { +private: + YDB_READONLY(ui32, IndexId, 0); + YDB_READONLY(ui32, ChunkIdx, 0); + YDB_READONLY(ui32, RecordsCount, 0); + YDB_READONLY(ui32, RawBytes, 0); + YDB_READONLY_DEF(TBlobRangeLink16, BlobRange); + + TIndexChunk() = default; + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TIndexChunk& proto); +public: + TChunkAddress GetAddress() const { + return TChunkAddress(IndexId, ChunkIdx); + } + + ui32 GetEntityId() const { + return IndexId; + } + + TIndexChunk(const ui32 indexId, const ui32 chunkIdx, const ui32 recordsCount, const ui64 rawBytes, const TBlobRangeLink16& blobRange) + : IndexId(indexId) + , ChunkIdx(chunkIdx) + , RecordsCount(recordsCount) + , RawBytes(rawBytes) + , BlobRange(blobRange) { + + } + + void RegisterBlobIdx(const TBlobRangeLink16::TLinkId blobLinkId) { +// AFL_VERIFY(!BlobRange.BlobId.GetTabletId())("original", BlobRange.BlobId.ToStringNew())("new", blobId.ToStringNew()); + BlobRange.BlobIdx = blobLinkId; + } + + static TConclusion<TIndexChunk> BuildFromProto(const NKikimrColumnShardDataSharingProto::TIndexChunk& proto) { + TIndexChunk result; + auto parse = result.DeserializeFromProto(proto); + if (!parse) { + return parse; + } + return result; + } + + NKikimrColumnShardDataSharingProto::TIndexChunk SerializeToProto() const; + +}; + +} diff --git a/ydb/core/tx/columnshard/engines/portions/meta.cpp b/ydb/core/tx/columnshard/engines/portions/meta.cpp index fde6d7135c35..282211dd5cda 100644 --- a/ydb/core/tx/columnshard/engines/portions/meta.cpp +++ b/ydb/core/tx/columnshard/engines/portions/meta.cpp @@ -35,6 +35,15 @@ bool TPortionMeta::DeserializeFromProto(const NKikimrTxColumnShard::TIndexPortio AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "DeserializeFromProto")("error", "parsing duplication"); return true; } + FirstPkColumn = indexInfo.GetPKFirstColumnId(); + { + auto parsed = NStatistics::TPortionStorage::BuildFromProto(portionMeta.GetStatisticsStorage()); + if (!parsed) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "DeserializeFromProto")("error", parsed.GetErrorMessage()); + return false; + } + StatisticsStorage = parsed.DetachResult(); + } TierName = portionMeta.GetTierName(); if (portionMeta.GetIsInserted()) { Produced = TPortionMeta::EProduced::INSERTED; @@ -68,14 +77,10 @@ bool TPortionMeta::DeserializeFromProto(const NKikimrTxColumnShard::TIndexPortio return true; } -std::optional<NKikimrTxColumnShard::TIndexPortionMeta> TPortionMeta::SerializeToProto(const ui32 columnId, const ui32 chunk) const { - if (!IsChunkWithPortionInfo(columnId, chunk)) { - return {}; - } - +NKikimrTxColumnShard::TIndexPortionMeta TPortionMeta::SerializeToProto() const { NKikimrTxColumnShard::TIndexPortionMeta portionMeta; portionMeta.SetTierName(TierName); - + *portionMeta.MutableStatisticsStorage() = StatisticsStorage.SerializeToProto(); switch (Produced) { case TPortionMeta::EProduced::UNSPECIFIED: Y_ABORT_UNLESS(false); @@ -112,6 +117,14 @@ std::optional<NKikimrTxColumnShard::TIndexPortionMeta> TPortionMeta::SerializeTo return portionMeta; } +std::optional<NKikimrTxColumnShard::TIndexPortionMeta> TPortionMeta::SerializeToProto(const ui32 columnId, const ui32 chunk) const { + if (!IsChunkWithPortionInfo(columnId, chunk)) { + return {}; + } + + return SerializeToProto(); +} + TString TPortionMeta::DebugString() const { TStringBuilder sb; sb << "(produced=" << Produced << ";"; diff --git a/ydb/core/tx/columnshard/engines/portions/meta.h b/ydb/core/tx/columnshard/engines/portions/meta.h index 005021f7c457..8a715bca23d9 100644 --- a/ydb/core/tx/columnshard/engines/portions/meta.h +++ b/ydb/core/tx/columnshard/engines/portions/meta.h @@ -1,6 +1,7 @@ #pragma once #include <ydb/core/tx/columnshard/common/portion.h> #include <ydb/core/tx/columnshard/common/snapshot.h> +#include <ydb/core/tx/columnshard/engines/scheme/statistics/abstract/portion_storage.h> #include <ydb/core/formats/arrow/replace_key.h> #include <ydb/core/formats/arrow/special_keys.h> #include <ydb/core/protos/tx_columnshard.pb.h> @@ -15,6 +16,7 @@ struct TPortionMeta { private: std::shared_ptr<NArrow::TFirstLastSpecialKeys> ReplaceKeyEdges; // first and last PK rows YDB_ACCESSOR_DEF(TString, TierName); + YDB_READONLY_DEF(NStatistics::TPortionStorage, StatisticsStorage); public: using EProduced = NPortion::EProduced; @@ -26,6 +28,19 @@ struct TPortionMeta { EProduced Produced{EProduced::UNSPECIFIED}; ui32 FirstPkColumn = 0; + ui64 GetMetadataMemorySize() const { + return sizeof(TPortionMeta) + ReplaceKeyEdges->GetMemorySize(); + } + + void SetStatisticsStorage(NStatistics::TPortionStorage&& storage) { + AFL_VERIFY(StatisticsStorage.IsEmpty()); + StatisticsStorage = std::move(storage); + } + + void ResetStatisticsStorage(NStatistics::TPortionStorage&& storage) { + StatisticsStorage = std::move(storage); + } + bool IsChunkWithPortionInfo(const ui32 columnId, const ui32 chunkIdx) const { return columnId == FirstPkColumn && chunkIdx == 0; } @@ -33,6 +48,7 @@ struct TPortionMeta { bool DeserializeFromProto(const NKikimrTxColumnShard::TIndexPortionMeta& portionMeta, const TIndexInfo& indexInfo); std::optional<NKikimrTxColumnShard::TIndexPortionMeta> SerializeToProto(const ui32 columnId, const ui32 chunk) const; + NKikimrTxColumnShard::TIndexPortionMeta SerializeToProto() const; void FillBatchInfo(const NArrow::TFirstLastSpecialKeys& primaryKeys, const NArrow::TMinMaxSpecialKeys& snapshotKeys, const TIndexInfo& indexInfo); diff --git a/ydb/core/tx/columnshard/engines/portions/portion_info.cpp b/ydb/core/tx/columnshard/engines/portions/portion_info.cpp index f21d12eaab75..c67ea7f67ec7 100644 --- a/ydb/core/tx/columnshard/engines/portions/portion_info.cpp +++ b/ydb/core/tx/columnshard/engines/portions/portion_info.cpp @@ -1,11 +1,17 @@ #include "portion_info.h" -#include <ydb/core/tx/columnshard/engines/scheme/index_info.h> +#include <ydb/core/tx/columnshard/blobs_reader/task.h> +#include <ydb/core/tx/columnshard/data_sharing/protos/data.pb.h> +#include <ydb/core/tx/columnshard/engines/column_engine.h> #include <ydb/core/tx/columnshard/engines/db_wrapper.h> +#include <ydb/core/tx/columnshard/engines/scheme/index_info.h> +#include <ydb/core/tx/columnshard/engines/storage/chunks/column.h> +#include <ydb/core/tx/columnshard/engines/storage/chunks/data.h> #include <ydb/core/formats/arrow/arrow_filter.h> -#include <util/system/tls.h> #include <ydb/core/formats/arrow/size_calcer.h> #include <ydb/core/formats/arrow/simple_arrays_cache.h> +#include <util/system/tls.h> + namespace NKikimr::NOlap { const TColumnRecord& TPortionInfo::AppendOneChunkColumn(TColumnRecord&& record) { @@ -58,60 +64,38 @@ std::shared_ptr<arrow::Scalar> TPortionInfo::MaxValue(ui32 columnId) const { return result; } -TPortionInfo TPortionInfo::CopyWithFilteredColumns(const THashSet<ui32>& columnIds) const { - TPortionInfo result(PathId, Portion, GetMinSnapshot(), BlobsOperator); - result.Meta = Meta; - result.Records.reserve(columnIds.size()); - - for (auto& rec : Records) { - Y_ABORT_UNLESS(rec.Valid()); - if (columnIds.contains(rec.ColumnId)) { - result.Records.push_back(rec); - } - } - return result; +ui64 TPortionInfo::GetColumnRawBytes(const std::vector<ui32>& columnIds, const bool validation) const { + return GetColumnRawBytes(std::set<ui32>(columnIds.begin(), columnIds.end()), validation); } -ui64 TPortionInfo::GetRawBytes(const std::vector<ui32>& columnIds) const { +ui64 TPortionInfo::GetColumnRawBytes(const std::optional<std::set<ui32>>& entityIds, const bool validation) const { ui64 sum = 0; - const ui32 numRows = NumRows(); - for (auto&& i : columnIds) { - if (TIndexInfo::IsSpecialColumn(i)) { - sum += numRows * TIndexInfo::GetSpecialColumnByteWidth(i); - } else { - for (auto&& r : Records) { - if (r.ColumnId == i) { - sum += r.GetMeta().GetRawBytesVerified(); - } - } - } - } + const auto aggr = [&](const TColumnRecord& r) { + sum += r.GetMeta().GetRawBytes(); + }; + AggregateIndexChunksData(aggr, Records, entityIds, validation); return sum; } -ui64 TPortionInfo::GetRawBytes(const std::set<ui32>& entityIds) const { +ui64 TPortionInfo::GetColumnBlobBytes(const std::optional<std::set<ui32>>& entityIds, const bool validation) const { ui64 sum = 0; - const ui32 numRows = NumRows(); - for (auto&& i : TIndexInfo::GetSpecialColumnIds()) { - if (entityIds.contains(i)) { - sum += numRows * TIndexInfo::GetSpecialColumnByteWidth(i); - } - } - for (auto&& r : Records) { - if (entityIds.contains(r.ColumnId)) { - sum += r.GetMeta().GetRawBytesVerified(); - } - } + const auto aggr = [&](const TColumnRecord& r) { + sum += r.GetBlobRange().GetSize(); + }; + AggregateIndexChunksData(aggr, Records, entityIds, validation); return sum; } -ui64 TPortionInfo::GetIndexBytes(const std::set<ui32>& entityIds) const { +ui64 TPortionInfo::GetColumnBlobBytes(const std::vector<ui32>& columnIds, const bool validation) const { + return GetColumnBlobBytes(std::set<ui32>(columnIds.begin(), columnIds.end()), validation); +} + +ui64 TPortionInfo::GetIndexRawBytes(const std::optional<std::set<ui32>>& entityIds, const bool validation) const { ui64 sum = 0; - for (auto&& r : Indexes) { - if (entityIds.contains(r.GetIndexId())) { - sum += r.GetBlobRange().Size; - } - } + const auto aggr = [&](const TIndexChunk& r) { + sum += r.GetRawBytes(); + }; + AggregateIndexChunksData(aggr, Indexes, entityIds, validation); return sum; } @@ -119,7 +103,8 @@ TString TPortionInfo::DebugString(const bool withDetails) const { TStringBuilder sb; sb << "(portion_id:" << Portion << ";" << "path_id:" << PathId << ";records_count:" << NumRows() << ";" - "min_schema_snapshot:(" << MinSnapshot.DebugString() << ");"; + "min_schema_snapshot:(" << MinSnapshotDeprecated.DebugString() << ");" + "schema_version:" << SchemaVersion.value_or(0) << ";"; if (withDetails) { sb << "records_snapshot_min:(" << RecordSnapshotMin().DebugString() << ");" << @@ -128,21 +113,20 @@ TString TPortionInfo::DebugString(const bool withDetails) const { "to:" << IndexKeyEnd().DebugString() << ";"; } sb << - "size:" << BlobsBytes() << ";" << + "column_size:" << GetColumnBlobBytes() << ";" << + "index_size:" << GetIndexBlobBytes() << ";" << "meta:(" << Meta.DebugString() << ");"; if (RemoveSnapshot.Valid()) { sb << "remove_snapshot:(" << RemoveSnapshot.DebugString() << ");"; } - if (BlobsOperator) { - sb << "blobs_operator:" << BlobsOperator->DebugString() << ";"; - } sb << "chunks:(" << Records.size() << ");"; if (IS_TRACE_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD)) { - std::set<TString> blobIds; + std::vector<TBlobRangeLink16> blobRanges; for (auto&& i : Records) { - blobIds.emplace(::ToString(i.BlobRange.BlobId)); + blobRanges.emplace_back(i.BlobRange); } - sb << "blobs:" << JoinSeq(",", blobIds) << ";blobs_count:" << blobIds.size() << ";"; + sb << "blobs:" << JoinSeq(",", blobRanges) << ";ranges_count:" << blobRanges.size() << ";"; + sb << "blob_ids:" << JoinSeq(",", BlobIds) << ";blobs_count:" << BlobIds.size() << ";"; } return sb << ")"; } @@ -161,23 +145,15 @@ std::vector<const NKikimr::NOlap::TColumnRecord*> TPortionInfo::GetColumnChunksP for (auto&& c : Records) { if (c.ColumnId == columnId) { Y_ABORT_UNLESS(c.Chunk == result.size()); - Y_ABORT_UNLESS(c.GetMeta().GetNumRowsVerified()); + Y_ABORT_UNLESS(c.GetMeta().GetNumRows()); result.emplace_back(&c); } } return result; } -size_t TPortionInfo::NumBlobs() const { - THashSet<TUnifiedBlobId> blobIds; - for (auto&& i : Records) { - blobIds.emplace(i.BlobRange.BlobId); - } - return blobIds.size(); -} - bool TPortionInfo::IsEqualWithSnapshots(const TPortionInfo& item) const { - return PathId == item.PathId && MinSnapshot == item.MinSnapshot + return PathId == item.PathId && MinSnapshotDeprecated == item.MinSnapshotDeprecated && Portion == item.Portion && RemoveSnapshot == item.RemoveSnapshot; } @@ -191,6 +167,7 @@ void TPortionInfo::RemoveFromDatabase(IDbWrapper& db) const { } void TPortionInfo::SaveToDatabase(IDbWrapper& db) const { + FullValidation(); for (auto& record : Records) { db.WriteColumn(*this, record); } @@ -226,9 +203,9 @@ std::vector<NKikimr::NOlap::TPortionInfo::TPage> TPortionInfo::BuildPages() cons currentSize = 0; currentId = i.GetColumnId(); } - currentSize += i.GetMeta().GetNumRowsVerified(); + currentSize += i.GetMeta().GetNumRows(); ++currentCursor[currentSize]; - entities[i.GetColumnId()].emplace_back(&i, i.GetMeta().GetNumRowsVerified()); + entities[i.GetColumnId()].emplace_back(&i, i.GetMeta().GetNumRows()); } for (auto&& i : Indexes) { if (currentId != i.GetIndexId()) { @@ -270,10 +247,489 @@ std::vector<NKikimr::NOlap::TPortionInfo::TPage> TPortionInfo::BuildPages() cons return pages; } +ui64 TPortionInfo::GetMetadataMemorySize() const { + return sizeof(TPortionInfo) + Records.size() * (sizeof(TColumnRecord) + 8) + Indexes.size() * sizeof(TIndexChunk) + BlobIds.size() * sizeof(TUnifiedBlobId) + - sizeof(TPortionMeta) + Meta.GetMetadataMemorySize(); +} + ui64 TPortionInfo::GetTxVolume() const { return 1024 + Records.size() * 256 + Indexes.size() * 256; } +void TPortionInfo::SerializeToProto(NKikimrColumnShardDataSharingProto::TPortionInfo& proto) const { + proto.SetPathId(PathId); + proto.SetPortionId(Portion); + proto.SetSchemaVersion(GetSchemaVersionVerified()); + *proto.MutableMinSnapshotDeprecated() = MinSnapshotDeprecated.SerializeToProto(); + if (!RemoveSnapshot.IsZero()) { + *proto.MutableRemoveSnapshot() = RemoveSnapshot.SerializeToProto(); + } + for (auto&& i : BlobIds) { + *proto.AddBlobIds() = i.SerializeToProto(); + } + + *proto.MutableMeta() = Meta.SerializeToProto(); + + for (auto&& r : Records) { + *proto.AddRecords() = r.SerializeToProto(); + } + + for (auto&& r : Indexes) { + *proto.AddIndexes() = r.SerializeToProto(); + } +} + +TConclusionStatus TPortionInfo::DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TPortionInfo& proto, const TIndexInfo& info) { + PathId = proto.GetPathId(); + Portion = proto.GetPortionId(); + SchemaVersion = proto.GetSchemaVersion(); + for (auto&& i : proto.GetBlobIds()) { + auto blobId = TUnifiedBlobId::BuildFromProto(i); + if (!blobId) { + return blobId; + } + BlobIds.emplace_back(blobId.DetachResult()); + } + { + auto parse = MinSnapshotDeprecated.DeserializeFromProto(proto.GetMinSnapshotDeprecated()); + if (!parse) { + return parse; + } + } + if (proto.HasRemoveSnapshot()) { + auto parse = RemoveSnapshot.DeserializeFromProto(proto.GetRemoveSnapshot()); + if (!parse) { + return parse; + } + } + if (!Meta.DeserializeFromProto(proto.GetMeta(), info)) { + return TConclusionStatus::Fail("cannot parse meta"); + } + for (auto&& i : proto.GetRecords()) { + auto parse = TColumnRecord::BuildFromProto(i, info.GetColumnFeaturesVerified(i.GetColumnId())); + if (!parse) { + return parse; + } + Records.emplace_back(std::move(parse.DetachResult())); + } + for (auto&& i : proto.GetIndexes()) { + auto parse = TIndexChunk::BuildFromProto(i); + if (!parse) { + return parse; + } + Indexes.emplace_back(std::move(parse.DetachResult())); + } + return TConclusionStatus::Success(); +} + +TConclusion<TPortionInfo> TPortionInfo::BuildFromProto(const NKikimrColumnShardDataSharingProto::TPortionInfo& proto, const TIndexInfo& info) { + TPortionInfo result; + auto parse = result.DeserializeFromProto(proto, info); + if (!parse) { + return parse; + } + return result; +} + +THashMap<NKikimr::NOlap::TChunkAddress, TString> TPortionInfo::DecodeBlobAddresses(NBlobOperations::NRead::TCompositeReadBlobs&& blobs, const TIndexInfo& indexInfo) const { + THashMap<TChunkAddress, TString> result; + for (auto&& i : blobs) { + for (auto&& b : i.second) { + bool found = false; + TString columnStorageId; + ui32 columnId = 0; + for (auto&& record : Records) { + if (RestoreBlobRange(record.GetBlobRange()) == b.first) { + if (columnId != record.GetColumnId()) { + columnStorageId = GetColumnStorageId(record.GetColumnId(), indexInfo); + } + if (columnStorageId != i.first) { + continue; + } + result.emplace(record.GetAddress(), std::move(b.second)); + found = true; + break; + } + } + if (found) { + continue; + } + for (auto&& record : Indexes) { + if (RestoreBlobRange(record.GetBlobRange()) == b.first) { + if (columnId != record.GetIndexId()) { + columnStorageId = indexInfo.GetIndexStorageId(record.GetIndexId()); + } + if (columnStorageId != i.first) { + continue; + } + result.emplace(record.GetAddress(), std::move(b.second)); + found = true; + break; + } + } + AFL_VERIFY(found)("blobs", blobs.DebugString())("records", DebugString(true))("problem", b.first); + } + } + return result; +} + +const TString& TPortionInfo::GetColumnStorageId(const ui32 columnId, const TIndexInfo& indexInfo) const { + return indexInfo.GetColumnStorageId(columnId, GetMeta().GetTierName()); +} + +const TString& TPortionInfo::GetEntityStorageId(const ui32 columnId, const TIndexInfo& indexInfo) const { + return indexInfo.GetEntityStorageId(columnId, GetMeta().GetTierName()); +} + +ISnapshotSchema::TPtr TPortionInfo::GetSchema(const TVersionedIndex& index) const { + if (SchemaVersion) { + auto schema = index.GetSchema(SchemaVersion.value()); + AFL_VERIFY(!!schema)("details", TStringBuilder() << "cannot find schema for version " << SchemaVersion.value()); + return schema; + } + return index.GetSchema(MinSnapshotDeprecated); +} + +void TPortionInfo::FillBlobRangesByStorage(THashMap<TString, THashSet<TBlobRange>>& result, const TIndexInfo& indexInfo) const { + for (auto&& i : Records) { + const TString& storageId = GetColumnStorageId(i.GetColumnId(), indexInfo); + AFL_VERIFY(result[storageId].emplace(RestoreBlobRange(i.GetBlobRange())).second)("blob_id", RestoreBlobRange(i.GetBlobRange()).ToString()); + } + for (auto&& i : Indexes) { + const TString& storageId = indexInfo.GetIndexStorageId(i.GetIndexId()); + AFL_VERIFY(result[storageId].emplace(RestoreBlobRange(i.GetBlobRange())).second)("blob_id", RestoreBlobRange(i.GetBlobRange()).ToString()); + } +} + +void TPortionInfo::FillBlobRangesByStorage(THashMap<TString, THashSet<TBlobRange>>& result, const TVersionedIndex& index) const { + auto schema = GetSchema(index); + return FillBlobRangesByStorage(result, schema->GetIndexInfo()); +} + +void TPortionInfo::FillBlobIdsByStorage(THashMap<TString, THashSet<TUnifiedBlobId>>& result, const TIndexInfo& indexInfo) const { + THashMap<TString, THashSet<TBlobRangeLink16::TLinkId>> local; + THashSet<TBlobRangeLink16::TLinkId>* currentHashLocal; + THashSet<TUnifiedBlobId>* currentHashResult; + ui32 lastEntityId = 0; + TString lastStorageId; + ui32 lastBlobIdx = BlobIds.size(); + for (auto&& i : Records) { + if (lastEntityId != i.GetEntityId()) { + const TString& storageId = GetColumnStorageId(i.GetEntityId(), indexInfo); + if (storageId != lastStorageId) { + currentHashResult = &result[storageId]; + currentHashLocal = &local[storageId]; + lastStorageId = storageId; + lastBlobIdx = BlobIds.size(); + } + } + if (lastBlobIdx != i.GetBlobRange().GetBlobIdxVerified() && currentHashLocal->emplace(i.GetBlobRange().GetBlobIdxVerified()).second) { + auto blobId = GetBlobId(i.GetBlobRange().GetBlobIdxVerified()); + AFL_VERIFY(currentHashResult->emplace(blobId).second)("blob_id", blobId.ToStringNew()); + lastBlobIdx = i.GetBlobRange().GetBlobIdxVerified(); + } + } + for (auto&& i : Indexes) { + if (lastEntityId != i.GetEntityId()) { + const TString& storageId = indexInfo.GetIndexStorageId(i.GetEntityId()); + if (storageId != lastStorageId) { + currentHashResult = &result[storageId]; + currentHashLocal = &local[storageId]; + lastStorageId = storageId; + lastBlobIdx = BlobIds.size(); + } + } + if (lastBlobIdx != i.GetBlobRange().GetBlobIdxVerified() && currentHashLocal->emplace(i.GetBlobRange().GetBlobIdxVerified()).second) { + auto blobId = GetBlobId(i.GetBlobRange().GetBlobIdxVerified()); + AFL_VERIFY(currentHashResult->emplace(blobId).second)("blob_id", blobId.ToStringNew()); + lastBlobIdx = i.GetBlobRange().GetBlobIdxVerified(); + } + } +} + +void TPortionInfo::FillBlobIdsByStorage(THashMap<TString, THashSet<TUnifiedBlobId>>& result, const TVersionedIndex& index) const { + auto schema = GetSchema(index); + return FillBlobIdsByStorage(result, schema->GetIndexInfo()); +} + +TBlobRangeLink16::TLinkId TPortionInfo::RegisterBlobId(const TUnifiedBlobId& blobId) { + AFL_VERIFY(blobId.IsValid()); + TBlobRangeLink16::TLinkId idx = 0; + for (auto&& i : BlobIds) { + if (i == blobId) { + return idx; + } + ++idx; + } + BlobIds.emplace_back(blobId); + return idx; +} + +THashMap<TString, THashMap<TUnifiedBlobId, std::vector<std::shared_ptr<IPortionDataChunk>>>> TPortionInfo::RestoreEntityChunks(NBlobOperations::NRead::TCompositeReadBlobs& blobs, const TIndexInfo& indexInfo) const { + THashMap<TString, THashMap<TUnifiedBlobId, std::vector<std::shared_ptr<IPortionDataChunk>>>> result; + for (auto&& c : GetRecords()) { + const TString& storageId = GetColumnStorageId(c.GetColumnId(), indexInfo); + auto& storageRecords = result[storageId]; + auto& blobRecords = storageRecords[GetBlobId(c.GetBlobRange().GetBlobIdxVerified())]; + blobRecords.emplace_back(std::make_shared<NChunks::TChunkPreparation>(blobs.Extract(storageId, RestoreBlobRange(c.GetBlobRange())), c, indexInfo.GetColumnFeaturesVerified(c.GetColumnId()))); + blobRecords.back()->SetChunkIdx(c.GetChunkIdx()); + } + for (auto&& c : GetIndexes()) { + const TString& storageId = indexInfo.GetIndexStorageId(c.GetIndexId()); + auto& storageRecords = result[storageId]; + auto& blobRecords = storageRecords[GetBlobId(c.GetBlobRange().GetBlobIdxVerified())]; + blobRecords.emplace_back(std::make_shared<NChunks::TPortionIndexChunk>(c.GetAddress(), c.GetRecordsCount(), c.GetRawBytes(), blobs.Extract(storageId, RestoreBlobRange(c.GetBlobRange())))); + blobRecords.back()->SetChunkIdx(c.GetChunkIdx()); + } + return result; +} + +THashMap<TString, THashMap<NKikimr::NOlap::TUnifiedBlobId, std::vector<NKikimr::NOlap::TEntityChunk>>> TPortionInfo::GetEntityChunks(const TIndexInfo& indexInfo) const { + THashMap<TString, THashMap<TUnifiedBlobId, std::vector<TEntityChunk>>> result; + for (auto&& c : GetRecords()) { + const TString& storageId = GetColumnStorageId(c.GetColumnId(), indexInfo); + auto& storageRecords = result[storageId]; + auto& blobRecords = storageRecords[GetBlobId(c.GetBlobRange().GetBlobIdxVerified())]; + blobRecords.emplace_back(TEntityChunk(c.GetAddress(), c.GetMeta().GetNumRows(), c.GetMeta().GetRawBytes(), c.GetBlobRange())); + } + for (auto&& c : GetIndexes()) { + const TString& storageId = indexInfo.GetIndexStorageId(c.GetIndexId()); + auto& storageRecords = result[storageId]; + auto& blobRecords = storageRecords[GetBlobId(c.GetBlobRange().GetBlobIdxVerified())]; + blobRecords.emplace_back(TEntityChunk(c.GetAddress(), c.GetRecordsCount(), c.GetRawBytes(), c.GetBlobRange())); + } + return result; +} + +void TPortionInfo::ReorderChunks() { + { + auto pred = [](const TColumnRecord& l, const TColumnRecord& r) { + return l.GetAddress() < r.GetAddress(); + }; + std::sort(Records.begin(), Records.end(), pred); + std::optional<TChunkAddress> chunk; + for (auto&& i : Records) { + if (!chunk) { + chunk = i.GetAddress(); + } else { + AFL_VERIFY(*chunk < i.GetAddress()); + chunk = i.GetAddress(); + } + AFL_VERIFY(chunk->GetEntityId()); + } + } + { + auto pred = [](const TIndexChunk& l, const TIndexChunk& r) { + return l.GetAddress() < r.GetAddress(); + }; + std::sort(Indexes.begin(), Indexes.end(), pred); + std::optional<TChunkAddress> chunk; + for (auto&& i : Indexes) { + if (!chunk) { + chunk = i.GetAddress(); + } else { + AFL_VERIFY(*chunk < i.GetAddress()); + chunk = i.GetAddress(); + } + AFL_VERIFY(chunk->GetEntityId()); + } + } +} + +void TPortionInfo::FullValidation() const { + AFL_VERIFY(PathId); + AFL_VERIFY(Portion); + AFL_VERIFY(MinSnapshotDeprecated.Valid()); + std::set<ui32> blobIdxs; + for (auto&& i : Records) { + blobIdxs.emplace(i.GetBlobRange().GetBlobIdxVerified()); + } + for (auto&& i : Indexes) { + blobIdxs.emplace(i.GetBlobRange().GetBlobIdxVerified()); + } + if (BlobIds.size()) { + AFL_VERIFY(BlobIds.size() == blobIdxs.size()); + AFL_VERIFY(BlobIds.size() == *blobIdxs.rbegin() + 1); + } else { + AFL_VERIFY(blobIdxs.empty()); + } +} + +ui64 TPortionInfo::GetMinMemoryForReadColumns(const std::optional<std::set<ui32>>& columnIds) const { + ui32 columnId = 0; + ui32 chunkIdx = 0; + + struct TDelta { + i64 BlobBytes = 0; + i64 RawBytes = 0; + void operator+=(const TDelta& add) { + BlobBytes += add.BlobBytes; + RawBytes += add.RawBytes; + } + }; + + std::map<ui64, TDelta> diffByPositions; + ui64 position = 0; + ui64 RawBytesCurrent = 0; + ui64 BlobBytesCurrent = 0; + std::optional<ui32> recordsCount; + + const auto doFlushColumn = [&]() { + if (!recordsCount && position) { + recordsCount = position; + } else { + AFL_VERIFY(*recordsCount == position); + } + if (position) { + TDelta delta; + delta.RawBytes = -1 * RawBytesCurrent; + delta.BlobBytes = -1 * BlobBytesCurrent; + diffByPositions[position] += delta; + } + position = 0; + chunkIdx = 0; + RawBytesCurrent = 0; + BlobBytesCurrent = 0; + }; + + for (auto&& i : Records) { + if (columnIds && !columnIds->contains(i.GetColumnId())) { + continue; + } + if (columnId != i.GetColumnId()) { + if (columnId) { + doFlushColumn(); + } + AFL_VERIFY(i.GetColumnId() > columnId); + AFL_VERIFY(i.GetChunkIdx() == 0); + columnId = i.GetColumnId(); + } else { + AFL_VERIFY(i.GetChunkIdx() == chunkIdx + 1); + } + chunkIdx = i.GetChunkIdx(); + TDelta delta; + delta.RawBytes = -1 * RawBytesCurrent + i.GetMeta().GetRawBytes(); + delta.BlobBytes = -1 * BlobBytesCurrent + i.GetBlobRange().Size; + diffByPositions[position] += delta; + position += i.GetMeta().GetNumRows(); + RawBytesCurrent = i.GetMeta().GetRawBytes(); + BlobBytesCurrent = i.GetBlobRange().Size; + } + if (columnId) { + doFlushColumn(); + } + i64 maxRawBytes = 0; + TDelta current; + for (auto&& i : diffByPositions) { + current += i.second; + AFL_VERIFY(current.BlobBytes >= 0); + AFL_VERIFY(current.RawBytes >= 0); + if (maxRawBytes < current.RawBytes) { + maxRawBytes = current.RawBytes; + } + } + AFL_VERIFY(current.BlobBytes == 0)("real", current.BlobBytes); + AFL_VERIFY(current.RawBytes == 0)("real", current.RawBytes); + return maxRawBytes; +} + +namespace { +template <class TExternalBlobInfo> +TPortionInfo::TPreparedBatchData PrepareForAssembleImpl(const TPortionInfo& portion, const ISnapshotSchema& dataSchema, const ISnapshotSchema& resultSchema, + THashMap<TChunkAddress, TExternalBlobInfo>& blobsData) { + std::vector<TPortionInfo::TColumnAssemblingInfo> columns; + auto arrowResultSchema = resultSchema.GetSchema(); + columns.reserve(arrowResultSchema->num_fields()); + const ui32 rowsCount = portion.GetRecordsCount(); + for (auto&& i : arrowResultSchema->fields()) { + columns.emplace_back(rowsCount, dataSchema.GetColumnLoaderOptional(i->name()), resultSchema.GetColumnLoaderOptional(i->name())); + } + { + int skipColumnId = -1; + TPortionInfo::TColumnAssemblingInfo* currentAssembler = nullptr; + for (auto& rec : portion.GetRecords()) { + if (skipColumnId == (int)rec.ColumnId) { + continue; + } + if (!currentAssembler || rec.ColumnId != currentAssembler->GetColumnId()) { + const i32 resultPos = resultSchema.GetFieldIndex(rec.ColumnId); + if (resultPos < 0) { + skipColumnId = rec.ColumnId; + continue; + } + AFL_VERIFY((ui32)resultPos < columns.size()); + currentAssembler = &columns[resultPos]; + } + auto it = blobsData.find(rec.GetAddress()); + AFL_VERIFY(it != blobsData.end())("size", blobsData.size())("address", rec.GetAddress().DebugString()); + currentAssembler->AddBlobInfo(rec.Chunk, rec.GetMeta().GetNumRows(), std::move(it->second)); + blobsData.erase(it); + } + } + + // Make chunked arrays for columns + std::vector<TPortionInfo::TPreparedColumn> preparedColumns; + preparedColumns.reserve(columns.size()); + for (auto& c : columns) { + preparedColumns.emplace_back(c.Compile()); + } + + return TPortionInfo::TPreparedBatchData(std::move(preparedColumns), arrowResultSchema, rowsCount); +} + +} + +namespace { +class TChunkAccessor { +private: + const std::vector<TDeserializeChunkedArray::TChunk>& Chunks; + const std::shared_ptr<TColumnLoader> Loader; +public: + TChunkAccessor(const std::vector<TDeserializeChunkedArray::TChunk>& chunks, const std::shared_ptr<TColumnLoader>& loader) + : Chunks(chunks) + , Loader(loader) + { + + } + ui64 GetChunksCount() const { + return Chunks.size(); + } + ui64 GetChunkLength(const ui32 idx) const { + return Chunks[idx].GetRecordsCount(); + } + std::shared_ptr<arrow::Array> GetArray(const ui32 idx) const { + return Chunks[idx].GetArrayVerified(Loader); + } +}; +} + +NArrow::NAccessor::IChunkedArray::TCurrentChunkAddress TDeserializeChunkedArray::DoGetChunk(const std::optional<TCurrentChunkAddress>& chunkCurrent, const ui64 position) const { + TChunkAccessor accessor(Chunks, Loader); + return SelectChunk(chunkCurrent, position, accessor); +} + +TPortionInfo::TPreparedBatchData TPortionInfo::PrepareForAssemble(const ISnapshotSchema& dataSchema, const ISnapshotSchema& resultSchema, THashMap<TChunkAddress, TString>& blobsData) const { + return PrepareForAssembleImpl(*this, dataSchema, resultSchema, blobsData); +} + +TPortionInfo::TPreparedBatchData TPortionInfo::PrepareForAssemble(const ISnapshotSchema& dataSchema, const ISnapshotSchema& resultSchema, THashMap<TChunkAddress, TAssembleBlobInfo>& blobsData) const { + return PrepareForAssembleImpl(*this, dataSchema, resultSchema, blobsData); +} + +std::shared_ptr<TDeserializeChunkedArray> TPortionInfo::TPreparedColumn::AssembleForSeqAccess() const { + Y_ABORT_UNLESS(!Blobs.empty()); + + std::vector<TDeserializeChunkedArray::TChunk> chunks; + chunks.reserve(Blobs.size()); + ui64 recordsCount = 0; + for (auto& blob : Blobs) { + chunks.push_back(blob.BuildDeserializeChunk(Loader)); + recordsCount += blob.GetExpectedRowsCountVerified(); + } + + return std::make_shared<TDeserializeChunkedArray>(recordsCount, Loader, std::move(chunks)); +} + std::shared_ptr<arrow::ChunkedArray> TPortionInfo::TPreparedColumn::Assemble() const { Y_ABORT_UNLESS(!Blobs.empty()); @@ -289,6 +745,18 @@ std::shared_ptr<arrow::ChunkedArray> TPortionInfo::TPreparedColumn::Assemble() c return (*res)->column(0); } +TDeserializeChunkedArray::TChunk TPortionInfo::TAssembleBlobInfo::BuildDeserializeChunk(const std::shared_ptr<TColumnLoader>& loader) const { + if (NullRowsCount) { + Y_ABORT_UNLESS(!Data); + auto emptyBatch = NArrow::MakeEmptyBatch(loader->GetExpectedSchema(), NullRowsCount); + AFL_VERIFY(emptyBatch->num_columns() == 1); + return TDeserializeChunkedArray::TChunk(emptyBatch->column(0)); + } else { + AFL_VERIFY(ExpectedRowsCount); + return TDeserializeChunkedArray::TChunk(*ExpectedRowsCount, Data); + } +} + std::shared_ptr<arrow::RecordBatch> TPortionInfo::TAssembleBlobInfo::BuildRecordBatch(const TColumnLoader& loader) const { if (NullRowsCount) { Y_ABORT_UNLESS(!Data); @@ -299,10 +767,24 @@ std::shared_ptr<arrow::RecordBatch> TPortionInfo::TAssembleBlobInfo::BuildRecord AFL_ERROR(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "cannot unpack batch")("error", result.status().ToString())("loader", loader.DebugString()); return nullptr; } + if (ExpectedRowsCount) { + AFL_VERIFY((*result)->num_rows() == ExpectedRowsCount)("real", (*result)->num_rows())("expected", ExpectedRowsCount); + } return *result; } } +std::shared_ptr<NArrow::TGeneralContainer> TPortionInfo::TPreparedBatchData::AssembleForSeqAccess() const { + std::vector<std::shared_ptr<NArrow::NAccessor::IChunkedArray>> columns; + std::vector<std::shared_ptr<arrow::Field>> fields; + for (auto&& i : Columns) { + columns.emplace_back(i.AssembleForSeqAccess()); + fields.emplace_back(i.GetField()); + } + + return std::make_shared<NArrow::TGeneralContainer>(std::make_shared<arrow::Schema>(fields), std::move(columns)); +} + std::shared_ptr<arrow::Table> TPortionInfo::TPreparedBatchData::AssembleTable(const TAssembleOptions& options) const { std::vector<std::shared_ptr<arrow::ChunkedArray>> columns; std::vector<std::shared_ptr<arrow::Field>> fields; @@ -330,10 +812,7 @@ std::shared_ptr<arrow::Table> TPortionInfo::TPreparedBatchData::AssembleTable(co } std::shared_ptr<arrow::RecordBatch> TPortionInfo::TPreparedBatchData::Assemble(const TAssembleOptions& options) const { - auto table = AssembleTable(options); - auto res = table->CombineChunks(); - Y_ABORT_UNLESS(res.ok()); - return NArrow::ToBatch(*res); + return NArrow::ToBatch(AssembleTable(options), true); } } diff --git a/ydb/core/tx/columnshard/engines/portions/portion_info.h b/ydb/core/tx/columnshard/engines/portions/portion_info.h index 30b96733868d..ee3793c8e8f5 100644 --- a/ydb/core/tx/columnshard/engines/portions/portion_info.h +++ b/ydb/core/tx/columnshard/engines/portions/portion_info.h @@ -1,8 +1,11 @@ #pragma once #include "column_record.h" +#include "index_chunk.h" #include "meta.h" #include <ydb/core/formats/arrow/special_keys.h> +#include <ydb/core/formats/arrow/common/accessor.h> +#include <ydb/core/formats/arrow/common/container.h> #include <ydb/core/tx/columnshard/blobs_action/abstract/storage.h> #include <ydb/core/tx/columnshard/engines/scheme/abstract_scheme.h> #include <ydb/core/tx/columnshard/common/snapshot.h> @@ -10,26 +13,232 @@ #include <ydb/library/yverify_stream/yverify_stream.h> +namespace NKikimrColumnShardDataSharingProto { +class TPortionInfo; +} + namespace NKikimr::NOlap { +namespace NBlobOperations::NRead { +class TCompositeReadBlobs; +} + struct TIndexInfo; +class TVersionedIndex; class IDbWrapper; +class TDeserializeChunkedArray: public NArrow::NAccessor::IChunkedArray { +private: + using TBase = NArrow::NAccessor::IChunkedArray; +public: + class TChunk { + private: + YDB_READONLY(ui32, RecordsCount, 0); + std::shared_ptr<arrow::Array> PredefinedArray; + const TString Data; + public: + TChunk(const std::shared_ptr<arrow::Array>& predefinedArray) + : PredefinedArray(predefinedArray) { + AFL_VERIFY(PredefinedArray); + RecordsCount = PredefinedArray->length(); + } + + TChunk(const ui32 recordsCount, const TString& data) + : RecordsCount(recordsCount) + , Data(data) { + + } + + std::shared_ptr<arrow::Array> GetArrayVerified(const std::shared_ptr<TColumnLoader>& loader) const { + if (PredefinedArray) { + return PredefinedArray; + } + auto result = loader->ApplyVerified(Data); + AFL_VERIFY(result); + AFL_VERIFY(result->num_columns() == 1); + AFL_VERIFY(result->num_rows() == RecordsCount)("length", result->num_rows())("records_count", RecordsCount); + return result->column(0); + } + }; + + std::shared_ptr<TColumnLoader> Loader; + std::vector<TChunk> Chunks; +protected: + virtual TCurrentChunkAddress DoGetChunk(const std::optional<TCurrentChunkAddress>& chunkCurrent, const ui64 position) const override; + virtual std::shared_ptr<arrow::ChunkedArray> DoGetChunkedArray() const override { + AFL_VERIFY(false); + return nullptr; + } +public: + TDeserializeChunkedArray(const ui64 recordsCount, const std::shared_ptr<TColumnLoader>& loader, std::vector<TChunk>&& chunks) + : TBase(recordsCount, NArrow::NAccessor::IChunkedArray::EType::SerializedChunkedArray, loader->GetField()->type()) + , Loader(loader) + , Chunks(std::move(chunks)) { + AFL_VERIFY(Loader); + } +}; + +class TEntityChunk { +private: + TChunkAddress Address; + YDB_READONLY(ui32, RecordsCount, 0); + YDB_READONLY(ui64, RawBytes, 0); + YDB_READONLY_DEF(TBlobRangeLink16, BlobRange); +public: + const TChunkAddress& GetAddress() const { + return Address; + } + + TEntityChunk(const TChunkAddress& address, const ui32 recordsCount, const ui64 rawBytesSize, const TBlobRangeLink16& blobRange) + : Address(address) + , RecordsCount(recordsCount) + , RawBytes(rawBytesSize) + , BlobRange(blobRange) + { + + } +}; + class TPortionInfo { +public: + using TRuntimeFeatures = ui8; + enum class ERuntimeFeature: TRuntimeFeatures { + Optimized = 1 /* "optimized" */ + }; private: TPortionInfo() = default; ui64 PathId = 0; ui64 Portion = 0; // Id of independent (overlayed by PK) portion of data in pathId - TSnapshot MinSnapshot = TSnapshot::Zero(); // {PlanStep, TxId} is min snapshot for {Granule, Portion} + TSnapshot MinSnapshotDeprecated = TSnapshot::Zero(); // {PlanStep, TxId} is min snapshot for {Granule, Portion} TSnapshot RemoveSnapshot = TSnapshot::Zero(); // {XPlanStep, XTxId} is snapshot where the blob has been removed (i.e. compacted into another one) + std::optional<ui64> SchemaVersion; TPortionMeta Meta; - std::shared_ptr<NOlap::IBlobsStorageOperator> BlobsOperator; ui64 DeprecatedGranuleId = 0; YDB_READONLY_DEF(std::vector<TIndexChunk>, Indexes); + YDB_READONLY(TRuntimeFeatures, RuntimeFeatures, 0); + std::vector<TUnifiedBlobId> BlobIds; + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardDataSharingProto::TPortionInfo& proto, const TIndexInfo& info); + template <class TChunkInfo> + static void CheckChunksOrder(const std::vector<TChunkInfo>& chunks) { + ui32 entityId = 0; + ui32 chunkIdx = 0; + for (auto&& i : chunks) { + if (entityId != i.GetEntityId()) { + AFL_VERIFY(entityId < i.GetEntityId()); + AFL_VERIFY(i.GetChunkIdx() == 0); + entityId = i.GetEntityId(); + chunkIdx = 0; + } else { + AFL_VERIFY(i.GetChunkIdx() == chunkIdx + 1); + chunkIdx = i.GetChunkIdx(); + } + } + } + + template <class TAggregator, class TChunkInfo> + static void AggregateIndexChunksData(const TAggregator& aggr, const std::vector<TChunkInfo>& chunks, const std::optional<std::set<ui32>>& columnIds, const bool validation) { + if (columnIds) { + auto itColumn = columnIds->begin(); + auto itRecord = chunks.begin(); + ui32 recordsInEntityCount = 0; + while (itRecord != chunks.end() && itColumn != columnIds->end()) { + if (itRecord->GetEntityId() < *itColumn) { + ++itRecord; + } else if (*itColumn < itRecord->GetEntityId()) { + AFL_VERIFY(!validation || recordsInEntityCount)("problem", "validation")("reason", "no_chunks_for_column")("column_id", *itColumn); + ++itColumn; + recordsInEntityCount = 0; + } else { + ++recordsInEntityCount; + aggr(*itRecord); + ++itRecord; + } + } + } else { + for (auto&& i : chunks) { + aggr(i); + } + } + } public: + ui64 GetMinMemoryForReadColumns(const std::optional<std::set<ui32>>& columnIds) const; + + void InitRuntimeFeature(const ERuntimeFeature feature, const bool activity) { + if (activity) { + AddRuntimeFeature(feature); + } else { + RemoveRuntimeFeature(feature); + } + } + + void AddRuntimeFeature(const ERuntimeFeature feature) { + RuntimeFeatures |= (TRuntimeFeatures)feature; + } + + void RemoveRuntimeFeature(const ERuntimeFeature feature) { + RuntimeFeatures &= (Max<TRuntimeFeatures>() - (TRuntimeFeatures)feature); + } + + void OnAfterLoad() const { + CheckChunksOrder(Records); + CheckChunksOrder(Indexes); + } + + bool HasRuntimeFeature(const ERuntimeFeature feature) const { + if (feature == ERuntimeFeature::Optimized) { + if ((RuntimeFeatures & (TRuntimeFeatures)feature)) { + return true; + } else { + return GetTierNameDef(NOlap::NBlobOperations::TGlobal::DefaultStorageId) != NOlap::NBlobOperations::TGlobal::DefaultStorageId; + } + } + return (RuntimeFeatures & (TRuntimeFeatures)feature); + } + + void FullValidation() const; + + bool HasIndexes(const std::set<ui32>& ids) const { + auto idsCopy = ids; + for (auto&& i : Indexes) { + idsCopy.erase(i.GetIndexId()); + if (idsCopy.empty()) { + return true; + } + } + return false; + } + + void ReorderChunks(); + + THashMap<TString, THashMap<TUnifiedBlobId, std::vector<std::shared_ptr<IPortionDataChunk>>>> RestoreEntityChunks(NBlobOperations::NRead::TCompositeReadBlobs& blobs, const TIndexInfo& indexInfo) const; + THashMap<TString, THashMap<TUnifiedBlobId, std::vector<TEntityChunk>>> GetEntityChunks(const TIndexInfo & info) const; + + const TBlobRange RestoreBlobRange(const TBlobRangeLink16& linkRange) const { + return linkRange.RestoreRange(GetBlobId(linkRange.GetBlobIdxVerified())); + } + + const TUnifiedBlobId& GetBlobId(const TBlobRangeLink16::TLinkId linkId) const { + AFL_VERIFY(linkId < BlobIds.size()); + return BlobIds[linkId]; + } + + ui32 GetBlobIdsCount() const { + return BlobIds.size(); + } + + THashMap<TChunkAddress, TString> DecodeBlobAddresses(NBlobOperations::NRead::TCompositeReadBlobs&& blobs, const TIndexInfo& indexInfo) const; + + void SetStatisticsStorage(NStatistics::TPortionStorage&& storage) { + Meta.SetStatisticsStorage(std::move(storage)); + } + + const TString& GetColumnStorageId(const ui32 columnId, const TIndexInfo& indexInfo) const; + const TString& GetEntityStorageId(const ui32 entityId, const TIndexInfo& indexInfo) const; + ui64 GetTxVolume() const; // fake-correct method for determ volume on rewrite this portion in transaction progress + ui64 GetMetadataMemorySize() const; class TPage { private: @@ -46,6 +255,16 @@ class TPortionInfo { } }; + TString GetTierNameDef(const TString& defaultTierName) const { + if (GetMeta().GetTierName()) { + return GetMeta().GetTierName(); + } + return defaultTierName; + } + + static TConclusion<TPortionInfo> BuildFromProto(const NKikimrColumnShardDataSharingProto::TPortionInfo& proto, const TIndexInfo& info); + void SerializeToProto(NKikimrColumnShardDataSharingProto::TPortionInfo& proto) const; + std::vector<TPage> BuildPages() const; std::vector<TColumnRecord> Records; @@ -58,16 +277,18 @@ class TPortionInfo { return PathId; } - void RegisterBlobId(const TChunkAddress& address, const TUnifiedBlobId& blobId) { + TBlobRangeLink16::TLinkId RegisterBlobId(const TUnifiedBlobId& blobId); + + void RegisterBlobIdx(const TChunkAddress& address, const TBlobRangeLink16::TLinkId blobIdx) { for (auto it = Records.begin(); it != Records.end(); ++it) { if (it->ColumnId == address.GetEntityId() && it->Chunk == address.GetChunkIdx()) { - it->RegisterBlobId(blobId); + it->RegisterBlobIdx(blobIdx); return; } } for (auto it = Indexes.begin(); it != Indexes.end(); ++it) { if (it->GetIndexId() == address.GetEntityId() && it->GetChunkIdx() == address.GetChunkIdx()) { - it->RegisterBlobId(blobId); + it->RegisterBlobIdx(blobIdx); return; } } @@ -118,10 +339,6 @@ class TPortionInfo { return Portion; } - bool HasStorageOperator() const { - return !!BlobsOperator; - } - NJson::TJsonValue SerializeToJsonVisual() const { NJson::TJsonValue result = NJson::JSON_MAP; result.InsertValue("id", Portion); @@ -137,24 +354,18 @@ class TPortionInfo { return result; } - void InitOperator(const std::shared_ptr<NOlap::IBlobsStorageOperator>& bOperator, const bool rewrite) { - if (rewrite) { - AFL_VERIFY(!!BlobsOperator); - } else { - AFL_VERIFY(!BlobsOperator); - } - AFL_VERIFY(!!bOperator); - BlobsOperator = bOperator; - } - static constexpr const ui32 BLOB_BYTES_LIMIT = 8 * 1024 * 1024; - const std::shared_ptr<NOlap::IBlobsStorageOperator>& GetBlobsStorage() const { - Y_ABORT_UNLESS(BlobsOperator); - return BlobsOperator; - } std::vector<const TColumnRecord*> GetColumnChunksPointers(const ui32 columnId) const; + std::set<ui32> GetColumnIds() const { + std::set<ui32> result; + for (auto&& i : Records) { + result.emplace(i.GetColumnId()); + } + return result; + } + TSerializationStats GetSerializationStat(const ISnapshotSchema& schema) const { TSerializationStats result; for (auto&& i : Records) { @@ -167,7 +378,6 @@ class TPortionInfo { void ResetMeta() { Meta = TPortionMeta(); - BlobsOperator = nullptr; } const TPortionMeta& GetMeta() const { @@ -187,18 +397,51 @@ class TPortionInfo { return nullptr; } + std::optional<TEntityChunk> GetEntityRecord(const TChunkAddress& address) const { + for (auto&& c : GetRecords()) { + if (c.GetAddress() == address) { + return TEntityChunk(c.GetAddress(), c.GetMeta().GetNumRows(), c.GetMeta().GetRawBytes(), c.GetBlobRange()); + } + } + for (auto&& c : GetIndexes()) { + if (c.GetAddress() == address) { + return TEntityChunk(c.GetAddress(), c.GetRecordsCount(), c.GetRawBytes(), c.GetBlobRange()); + } + } + return {}; + } + + bool HasEntityAddress(const TChunkAddress& address) const { + for (auto&& c : GetRecords()) { + if (c.GetAddress() == address) { + return true; + } + } + for (auto&& c : GetIndexes()) { + if (c.GetAddress() == address) { + return true; + } + } + return false; + } + bool Empty() const { return Records.empty(); } bool Produced() const { return Meta.GetProduced() != TPortionMeta::EProduced::UNSPECIFIED; } - bool Valid() const { return MinSnapshot.Valid() && PathId && Portion && !Empty() && Produced() && Meta.IndexKeyStart && Meta.IndexKeyEnd; } - bool ValidSnapshotInfo() const { return MinSnapshot.Valid() && PathId && Portion; } + bool Valid() const { return ValidSnapshotInfo() && !Empty() && Produced() && Meta.IndexKeyStart && Meta.IndexKeyEnd; } + bool ValidSnapshotInfo() const { return MinSnapshotDeprecated.Valid() && PathId && Portion; } bool IsInserted() const { return Meta.GetProduced() == TPortionMeta::EProduced::INSERTED; } bool IsEvicted() const { return Meta.GetProduced() == TPortionMeta::EProduced::EVICTED; } bool CanHaveDups() const { return !Produced(); /* || IsInserted(); */ } bool CanIntersectOthers() const { return !Valid() || IsInserted() || IsEvicted(); } size_t NumChunks() const { return Records.size(); } - size_t NumBlobs() const; - TPortionInfo CopyWithFilteredColumns(const THashSet<ui32>& columnIds) const; + TPortionInfo CopyBeforeChunksRebuild() const { + TPortionInfo result = *this; + result.Records.clear(); + result.Indexes.clear(); + result.BlobIds.clear(); + return result; + } bool IsEqualWithSnapshots(const TPortionInfo& item) const; @@ -206,11 +449,11 @@ class TPortionInfo { return TPortionInfo(); } - TPortionInfo(const ui64 pathId, const ui64 portionId, const TSnapshot& minSnapshot, const std::shared_ptr<NOlap::IBlobsStorageOperator>& blobsOperator) + TPortionInfo(const ui64 pathId, const ui64 portionId, const ui64 schemaVersion, const TSnapshot& minSnapshot) : PathId(pathId) , Portion(portionId) - , MinSnapshot(minSnapshot) - , BlobsOperator(blobsOperator) { + , MinSnapshotDeprecated(minSnapshot) + , SchemaVersion(schemaVersion) { } TString DebugString(const bool withDetails = false) const; @@ -219,12 +462,16 @@ class TPortionInfo { return RemoveSnapshot.Valid(); } - bool CheckForCleanup(const TSnapshot& snapshot) const { + bool IsRemovedFor(const TSnapshot& snapshot) const { if (!HasRemoveSnapshot()) { return false; + } else { + return GetRemoveSnapshotVerified() <= snapshot; } + } - return GetRemoveSnapshot() < snapshot; + bool CheckForCleanup(const TSnapshot& snapshot) const { + return IsRemovedFor(snapshot); } bool CheckForCleanup() const { @@ -260,22 +507,36 @@ class TPortionInfo { DeprecatedGranuleId = granuleId; } - const TSnapshot& GetMinSnapshot() const { - return MinSnapshot; + const TSnapshot& GetMinSnapshotDeprecated() const { + return MinSnapshotDeprecated; } - const TSnapshot& GetRemoveSnapshot() const { + const TSnapshot& GetRemoveSnapshotVerified() const { + AFL_VERIFY(HasRemoveSnapshot()); return RemoveSnapshot; } - void SetMinSnapshot(const TSnapshot& snap) { + std::optional<TSnapshot> GetRemoveSnapshotOptional() const { + if (RemoveSnapshot.Valid()) { + return RemoveSnapshot; + } else { + return {}; + } + } + + ui64 GetSchemaVersionVerified() const { + AFL_VERIFY(SchemaVersion); + return SchemaVersion.value(); + } + + void SetMinSnapshotDeprecated(const TSnapshot& snap) { Y_ABORT_UNLESS(snap.Valid()); - MinSnapshot = snap; + MinSnapshotDeprecated = snap; } - void SetMinSnapshot(const ui64 planStep, const ui64 txId) { - MinSnapshot = TSnapshot(planStep, txId); - Y_ABORT_UNLESS(MinSnapshot.Valid()); + void SetSchemaVersion(const ui64 version) { + AFL_VERIFY(version); + SchemaVersion = version; } void SetRemoveSnapshot(const TSnapshot& snap) { @@ -290,34 +551,12 @@ class TPortionInfo { Y_ABORT_UNLESS(!wasValid || RemoveSnapshot.Valid()); } - std::pair<ui32, ui32> BlobsSizes() const { - ui32 sum = 0; - ui32 max = 0; - for (const auto& rec : Records) { - sum += rec.BlobRange.Size; - max = Max(max, rec.BlobRange.Size); - } - return {sum, max}; - } - - ui64 GetBlobBytes() const noexcept { - ui64 sum = 0; - for (const auto& rec : Records) { - sum += rec.BlobRange.Size; - } - return sum; - } - - ui64 BlobsBytes() const noexcept { - return GetBlobBytes(); - } - bool IsVisible(const TSnapshot& snapshot) const { if (Empty()) { return false; } - bool visible = (MinSnapshot <= snapshot); + bool visible = (Meta.RecordSnapshotMin <= snapshot); if (visible && RemoveSnapshot.Valid()) { visible = snapshot < RemoveSnapshot; } @@ -359,23 +598,46 @@ class TPortionInfo { return *Meta.RecordSnapshotMax; } - THashSet<TUnifiedBlobId> GetBlobIds() const { - THashSet<TUnifiedBlobId> result; - for (auto&& i : Records) { - result.emplace(i.BlobRange.BlobId); - } - for (auto&& i : Indexes) { - result.emplace(i.GetBlobRange().BlobId); - } + + THashMap<TString, THashSet<TUnifiedBlobId>> GetBlobIdsByStorage(const TIndexInfo& indexInfo) const { + THashMap<TString, THashSet<TUnifiedBlobId>> result; + FillBlobIdsByStorage(result, indexInfo); return result; } + class TSchemaCursor { + const NOlap::TVersionedIndex& VersionedIndex; + ISnapshotSchema::TPtr CurrentSchema; + TSnapshot LastSnapshot = TSnapshot::Zero(); + public: + TSchemaCursor(const NOlap::TVersionedIndex& versionedIndex) + : VersionedIndex(versionedIndex) + {} + + ISnapshotSchema::TPtr GetSchema(const TPortionInfo& portion) { + if (!CurrentSchema || portion.MinSnapshotDeprecated != LastSnapshot) { + CurrentSchema = portion.GetSchema(VersionedIndex); + LastSnapshot = portion.GetMinSnapshotDeprecated(); + } + AFL_VERIFY(!!CurrentSchema)("portion", portion.DebugString()); + return CurrentSchema; + } + }; + + ISnapshotSchema::TPtr GetSchema(const TVersionedIndex& index) const; + + void FillBlobRangesByStorage(THashMap<TString, THashSet<TBlobRange>>& result, const TIndexInfo& indexInfo) const; + void FillBlobRangesByStorage(THashMap<TString, THashSet<TBlobRange>>& result, const TVersionedIndex& index) const; + + void FillBlobIdsByStorage(THashMap<TString, THashSet<TUnifiedBlobId>>& result, const TIndexInfo& indexInfo) const; + void FillBlobIdsByStorage(THashMap<TString, THashSet<TUnifiedBlobId>>& result, const TVersionedIndex& index) const; + ui32 GetRecordsCount() const { ui32 result = 0; std::optional<ui32> columnIdFirst; for (auto&& i : Records) { if (!columnIdFirst || *columnIdFirst == i.ColumnId) { - result += i.GetMeta().GetNumRowsVerified(); + result += i.GetMeta().GetNumRows(); columnIdFirst = i.ColumnId; } } @@ -390,34 +652,54 @@ class TPortionInfo { ui32 result = 0; for (auto&& i : Records) { if (columnId == i.ColumnId) { - result += i.GetMeta().GetNumRowsVerified(); + result += i.GetMeta().GetNumRows(); } } return result; } - ui64 GetIndexBytes(const std::set<ui32>& columnIds) const; - - ui64 GetRawBytes(const std::vector<ui32>& columnIds) const; - ui64 GetRawBytes(const std::set<ui32>& columnIds) const; - ui64 GetRawBytes() const { - ui64 result = 0; - for (auto&& i : Records) { - result += i.GetMeta().GetRawBytesVerified(); + ui64 GetIndexRawBytes(const std::optional<std::set<ui32>>& columnIds = {}, const bool validation = true) const; + ui64 GetIndexBlobBytes() const noexcept { + ui64 sum = 0; + for (const auto& rec : Indexes) { + sum += rec.GetBlobRange().Size; } - return result; + return sum; } - ui64 RawBytesSum() const { - return GetRawBytes(); + ui64 GetColumnRawBytes(const std::vector<ui32>& columnIds, const bool validation = true) const; + ui64 GetColumnRawBytes(const std::optional<std::set<ui32>>& columnIds = {}, const bool validation = true) const; + + ui64 GetColumnBlobBytes(const std::vector<ui32>& columnIds, const bool validation = true) const; + ui64 GetColumnBlobBytes(const std::optional<std::set<ui32>>& columnIds = {}, const bool validation = true) const; + + ui64 GetTotalBlobBytes() const noexcept { + return GetIndexBlobBytes() + GetColumnBlobBytes(); } + ui64 GetTotalRawBytes() const { + return GetColumnRawBytes() + GetIndexRawBytes(); + } public: class TAssembleBlobInfo { private: + YDB_READONLY_DEF(std::optional<ui32>, ExpectedRowsCount); ui32 NullRowsCount = 0; TString Data; public: + ui32 GetExpectedRowsCountVerified() const { + AFL_VERIFY(ExpectedRowsCount); + return *ExpectedRowsCount; + } + + void SetExpectedRecordsCount(const ui32 expectedRowsCount) { + AFL_VERIFY(!ExpectedRowsCount); + ExpectedRowsCount = expectedRowsCount; + if (!Data) { + AFL_VERIFY(*ExpectedRowsCount == NullRowsCount); + } + } + TAssembleBlobInfo(const ui32 rowsCount) : NullRowsCount(rowsCount) { AFL_VERIFY(NullRowsCount); @@ -445,6 +727,7 @@ class TPortionInfo { } std::shared_ptr<arrow::RecordBatch> BuildRecordBatch(const TColumnLoader& loader) const; + TDeserializeChunkedArray::TChunk BuildDeserializeChunk(const std::shared_ptr<TColumnLoader>& loader) const; }; class TPreparedColumn { @@ -472,6 +755,7 @@ class TPortionInfo { } std::shared_ptr<arrow::ChunkedArray> Assemble() const; + std::shared_ptr<TDeserializeChunkedArray> AssembleForSeqAccess() const; }; class TPreparedBatchData { @@ -538,6 +822,7 @@ class TPortionInfo { std::shared_ptr<arrow::RecordBatch> Assemble(const TAssembleOptions& options = {}) const; std::shared_ptr<arrow::Table> AssembleTable(const TAssembleOptions& options = {}) const; + std::shared_ptr<NArrow::TGeneralContainer> AssembleForSeqAccess() const; }; class TColumnAssemblingInfo { @@ -545,6 +830,7 @@ class TPortionInfo { std::vector<TAssembleBlobInfo> BlobsInfo; YDB_READONLY(ui32, ColumnId, 0); const ui32 NumRows; + ui32 NumRowsByChunks = 0; const std::shared_ptr<TColumnLoader> DataLoader; const std::shared_ptr<TColumnLoader> ResultLoader; public: @@ -564,8 +850,10 @@ class TPortionInfo { return ResultLoader->GetField(); } - void AddBlobInfo(const ui32 expectedChunkIdx, TAssembleBlobInfo&& info) { + void AddBlobInfo(const ui32 expectedChunkIdx, const ui32 expectedRecordsCount, TAssembleBlobInfo&& info) { AFL_VERIFY(expectedChunkIdx == BlobsInfo.size()); + info.SetExpectedRecordsCount(expectedRecordsCount); + NumRowsByChunks += expectedRecordsCount; BlobsInfo.emplace_back(std::move(info)); } @@ -574,58 +862,18 @@ class TPortionInfo { BlobsInfo.emplace_back(TAssembleBlobInfo(NumRows)); return TPreparedColumn(std::move(BlobsInfo), ResultLoader); } else { + AFL_VERIFY(NumRowsByChunks == NumRows)("by_chunks", NumRowsByChunks)("expected", NumRows); AFL_VERIFY(DataLoader); return TPreparedColumn(std::move(BlobsInfo), DataLoader); } } }; - template <class TExternalBlobInfo> - TPreparedBatchData PrepareForAssemble(const ISnapshotSchema& dataSchema, const ISnapshotSchema& resultSchema, - THashMap<TBlobRange, TExternalBlobInfo>& blobsData) const { - std::vector<TColumnAssemblingInfo> columns; - auto arrowResultSchema = resultSchema.GetSchema(); - columns.reserve(arrowResultSchema->num_fields()); - const ui32 rowsCount = NumRows(); - for (auto&& i : arrowResultSchema->fields()) { - columns.emplace_back(rowsCount, dataSchema.GetColumnLoaderOptional(i->name()), resultSchema.GetColumnLoaderOptional(i->name())); - } - { - int skipColumnId = -1; - TColumnAssemblingInfo* currentAssembler = nullptr; - for (auto& rec : Records) { - if (skipColumnId == (int)rec.ColumnId) { - continue; - } - if (!currentAssembler || rec.ColumnId != currentAssembler->GetColumnId()) { - const i32 resultPos = resultSchema.GetFieldIndex(rec.ColumnId); - if (resultPos < 0) { - skipColumnId = rec.ColumnId; - continue; - } - AFL_VERIFY((ui32)resultPos < columns.size()); - currentAssembler = &columns[resultPos]; - } - auto it = blobsData.find(rec.BlobRange); - Y_ABORT_UNLESS(it != blobsData.end()); - currentAssembler->AddBlobInfo(rec.Chunk, std::move(it->second)); - blobsData.erase(it); - } - } - - // Make chunked arrays for columns - std::vector<TPreparedColumn> preparedColumns; - preparedColumns.reserve(columns.size()); - for (auto& c : columns) { - preparedColumns.emplace_back(c.Compile()); - } - - return TPreparedBatchData(std::move(preparedColumns), arrowResultSchema, rowsCount); - } + TPreparedBatchData PrepareForAssemble(const ISnapshotSchema& dataSchema, const ISnapshotSchema& resultSchema, THashMap<TChunkAddress, TString>& blobsData) const; + TPreparedBatchData PrepareForAssemble(const ISnapshotSchema& dataSchema, const ISnapshotSchema& resultSchema, THashMap<TChunkAddress, TAssembleBlobInfo>& blobsData) const; - std::shared_ptr<arrow::RecordBatch> AssembleInBatch(const ISnapshotSchema& dataSchema, - const ISnapshotSchema& resultSchema, - THashMap<TBlobRange, TString>& data) const { + std::shared_ptr<arrow::RecordBatch> AssembleInBatch(const ISnapshotSchema& dataSchema, const ISnapshotSchema& resultSchema, + THashMap<TChunkAddress, TString>& data) const { auto batch = PrepareForAssemble(dataSchema, resultSchema, data).Assemble(); Y_ABORT_UNLESS(batch->Validate().ok()); return batch; diff --git a/ydb/core/tx/columnshard/engines/portions/with_blobs.cpp b/ydb/core/tx/columnshard/engines/portions/with_blobs.cpp index 9d8adcac99f2..7a29d2779c79 100644 --- a/ydb/core/tx/columnshard/engines/portions/with_blobs.cpp +++ b/ydb/core/tx/columnshard/engines/portions/with_blobs.cpp @@ -1,6 +1,10 @@ #include "with_blobs.h" #include <ydb/core/tx/columnshard/engines/scheme/index_info.h> #include <ydb/core/tx/columnshard/engines/scheme/filtered_scheme.h> +#include <ydb/core/tx/columnshard/engines/column_engine.h> +#include <ydb/core/tx/columnshard/blobs_reader/task.h> +#include <ydb/core/tx/columnshard/splitter/batch_slice.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> namespace NKikimr::NOlap { @@ -8,40 +12,38 @@ void TPortionInfoWithBlobs::TBlobInfo::RestoreChunk(const TPortionInfoWithBlobs& Y_ABORT_UNLESS(!ResultBlob); const TString& data = chunk->GetData(); Size += data.size(); - auto address = chunk->GetChunkAddress(); - Y_ABORT_UNLESS(owner.GetPortionInfo().GetRecordPointer(address)); - Y_ABORT_UNLESS(Chunks.emplace(address, chunk).second); + auto address = chunk->GetChunkAddressVerified(); + AFL_VERIFY(owner.GetPortionInfo().HasEntityAddress(address))("address", address.DebugString()); + AFL_VERIFY(Chunks.emplace(address, chunk).second)("address", address.DebugString()); ChunksOrdered.emplace_back(chunk); } void TPortionInfoWithBlobs::TBlobInfo::AddChunk(TPortionInfoWithBlobs& owner, const std::shared_ptr<IPortionDataChunk>& chunk) { AFL_VERIFY(chunk); Y_ABORT_UNLESS(!ResultBlob); - TBlobRange bRange; const TString& data = chunk->GetData(); - bRange.Offset = Size; - bRange.Size = data.size(); - + TBlobRangeLink16 bRange(Size, data.size()); Size += data.size(); - Y_ABORT_UNLESS(Chunks.emplace(chunk->GetChunkAddress(), chunk).second); + Y_ABORT_UNLESS(Chunks.emplace(chunk->GetChunkAddressVerified(), chunk).second); ChunksOrdered.emplace_back(chunk); - chunk->AddIntoPortion(bRange, owner.PortionInfo); + chunk->AddIntoPortionBeforeBlob(bRange, owner.PortionInfo); } void TPortionInfoWithBlobs::TBlobInfo::RegisterBlobId(TPortionInfoWithBlobs& owner, const TUnifiedBlobId& blobId) { + const TBlobRangeLink16::TLinkId idx = owner.PortionInfo.RegisterBlobId(blobId); for (auto&& i : Chunks) { - owner.PortionInfo.RegisterBlobId(i.first, blobId); + owner.PortionInfo.RegisterBlobIdx(i.first, idx); } } void TPortionInfoWithBlobs::TBlobInfo::ExtractEntityChunks(const ui32 entityId, std::map<TChunkAddress, std::shared_ptr<IPortionDataChunk>>& resultMap) { const auto pred = [this, &resultMap, entityId](const std::shared_ptr<IPortionDataChunk>& chunk) { if (chunk->GetEntityId() == entityId) { - resultMap.emplace(chunk->GetChunkAddress(), chunk); - Chunks.erase(chunk->GetChunkAddress()); + resultMap.emplace(chunk->GetChunkAddressVerified(), chunk); + Chunks.erase(chunk->GetChunkAddressVerified()); return true; } else { return false; @@ -54,10 +56,10 @@ std::shared_ptr<arrow::RecordBatch> TPortionInfoWithBlobs::GetBatch(const ISnaps Y_ABORT_UNLESS(data); if (columnNames.empty()) { if (!CachedBatch) { - THashMap<TBlobRange, TString> blobs; + THashMap<TChunkAddress, TString> blobs; for (auto&& i : PortionInfo.Records) { - blobs[i.BlobRange] = GetBlobByRangeVerified(i.ColumnId, i.Chunk); - Y_ABORT_UNLESS(blobs[i.BlobRange].size() == i.BlobRange.Size); + blobs[i.GetAddress()] = GetBlobByRangeVerified(i.ColumnId, i.Chunk); + Y_ABORT_UNLESS(blobs[i.GetAddress()].size() == i.BlobRange.Size); } CachedBatch = PortionInfo.AssembleInBatch(*data, result, blobs); Y_DEBUG_ABORT_UNLESS(NArrow::IsSortedAndUnique(*CachedBatch, result.GetIndexInfo().GetReplaceKey())); @@ -73,99 +75,59 @@ std::shared_ptr<arrow::RecordBatch> TPortionInfoWithBlobs::GetBatch(const ISnaps return result; } else { auto filteredSchema = std::make_shared<TFilteredSnapshotSchema>(data, columnNames); - THashMap<TBlobRange, TString> blobs; + THashMap<TChunkAddress, TString> blobs; for (auto&& i : PortionInfo.Records) { - blobs[i.BlobRange] = GetBlobByRangeVerified(i.ColumnId, i.Chunk); - Y_ABORT_UNLESS(blobs[i.BlobRange].size() == i.BlobRange.Size); + blobs[i.GetAddress()] = GetBlobByRangeVerified(i.ColumnId, i.Chunk); + Y_ABORT_UNLESS(blobs[i.GetAddress()].size() == i.BlobRange.Size); } return PortionInfo.AssembleInBatch(*data, *filteredSchema, blobs); } } -NKikimr::NOlap::TPortionInfoWithBlobs TPortionInfoWithBlobs::RestorePortion(const TPortionInfo& portion, THashMap<TBlobRange, TString>& blobs) { +NKikimr::NOlap::TPortionInfoWithBlobs TPortionInfoWithBlobs::RestorePortion(const TPortionInfo& portion, NBlobOperations::NRead::TCompositeReadBlobs& blobs, const TIndexInfo& indexInfo, const std::shared_ptr<IStoragesManager>& operators) { TPortionInfoWithBlobs result(portion); - const auto pred = [](const TColumnRecord& l, const TColumnRecord& r) { - return l.GetAddress() < r.GetAddress(); - }; - std::sort(result.PortionInfo.Records.begin(), result.PortionInfo.Records.end(), pred); - - THashMap<TUnifiedBlobId, std::vector<const TColumnRecord*>> recordsByBlob; - for (auto&& c : result.PortionInfo.Records) { - auto& blobRecords = recordsByBlob[c.BlobRange.BlobId]; - blobRecords.emplace_back(&c); - } - - const auto predOffset = [](const TColumnRecord* l, const TColumnRecord* r) { - return l->BlobRange.Offset < r->BlobRange.Offset; - }; - - for (auto&& i : recordsByBlob) { - std::sort(i.second.begin(), i.second.end(), predOffset); - auto builder = result.StartBlob(); - for (auto&& d : i.second) { - auto itBlob = blobs.find(d->BlobRange); - Y_ABORT_UNLESS(itBlob != blobs.end()); - builder.RestoreChunk(std::make_shared<TSimpleOrderedColumnChunk>(*d, itBlob->second)); - blobs.erase(itBlob); + THashMap<TString, THashMap<TUnifiedBlobId, std::vector<std::shared_ptr<IPortionDataChunk>>>> records = result.PortionInfo.RestoreEntityChunks(blobs, indexInfo); + for (auto&& [storageId, recordsByBlob] : records) { + auto storage = operators->GetOperatorVerified(storageId); + for (auto&& i : recordsByBlob) { + auto builder = result.StartBlob(storage); + for (auto&& d : i.second) { + builder.RestoreChunk(d); + } } } return result; } -std::vector<NKikimr::NOlap::TPortionInfoWithBlobs> TPortionInfoWithBlobs::RestorePortions(const std::vector<TPortionInfo>& portions, THashMap<TBlobRange, TString>& blobs) { +std::vector<NKikimr::NOlap::TPortionInfoWithBlobs> TPortionInfoWithBlobs::RestorePortions(const std::vector<TPortionInfo>& portions, NBlobOperations::NRead::TCompositeReadBlobs& blobs, + const TVersionedIndex& tables, const std::shared_ptr<IStoragesManager>& operators) { std::vector<TPortionInfoWithBlobs> result; for (auto&& i : portions) { - result.emplace_back(RestorePortion(i, blobs)); + const auto schema = i.GetSchema(tables); + result.emplace_back(RestorePortion(i, blobs, schema->GetIndexInfo(), operators)); } return result; } -NKikimr::NOlap::TPortionInfoWithBlobs TPortionInfoWithBlobs::BuildByBlobs(std::vector<std::vector<std::shared_ptr<IPortionDataChunk>>>& chunksByBlobs, std::shared_ptr<arrow::RecordBatch> batch, const ui64 granule, - const TSnapshot& snapshot, const std::shared_ptr<NOlap::IBlobsStorageOperator>& bStorageOperator) { - TPortionInfoWithBlobs result(TPortionInfo(granule, 0, snapshot, bStorageOperator), batch); - for (auto& blob : chunksByBlobs) { - auto blobInfo = result.StartBlob(); - for (auto&& chunk : blob) { - blobInfo.AddChunk(chunk); - } - } - - const auto pred = [](const TColumnRecord& l, const TColumnRecord& r) { - return l.GetAddress() < r.GetAddress(); - }; - std::sort(result.GetPortionInfo().Records.begin(), result.GetPortionInfo().Records.end(), pred); +NKikimr::NOlap::TPortionInfoWithBlobs TPortionInfoWithBlobs::BuildByBlobs(std::vector<TSplittedBlob>&& chunks, + std::shared_ptr<arrow::RecordBatch> batch, const ui64 granule, const ui64 schemaVersion, const TSnapshot& snapshot, const std::shared_ptr<IStoragesManager>& operators) +{ + TPortionInfoWithBlobs result = BuildByBlobs(std::move(chunks), TPortionInfo(granule, 0, schemaVersion, snapshot), operators); + result.InitBatchCached(batch); return result; } -std::optional<NKikimr::NOlap::TPortionInfoWithBlobs> TPortionInfoWithBlobs::ChangeSaver(ISnapshotSchema::TPtr currentSchema, const TSaverContext& saverContext) const { - TPortionInfoWithBlobs result(PortionInfo, CachedBatch); - result.PortionInfo.Records.clear(); - std::optional<TPortionInfoWithBlobs::TBlobInfo::TBuilder> bBuilder; - for (auto& rec : PortionInfo.Records) { - auto field = currentSchema->GetFieldByColumnIdVerified(rec.ColumnId); - - const TString blobOriginal = GetBlobByRangeVerified(rec.ColumnId, rec.Chunk); - { - auto rb = NArrow::TStatusValidator::GetValid(currentSchema->GetColumnLoaderVerified(rec.ColumnId)->Apply(blobOriginal)); - auto columnSaver = currentSchema->GetColumnSaver(rec.ColumnId, saverContext); - const TString newBlob = columnSaver.Apply(rb); - if (newBlob.size() >= TPortionInfo::BLOB_BYTES_LIMIT) { - return {}; - } - if (!bBuilder || result.GetBlobs().back().GetSize() + newBlob.size() >= TPortionInfo::BLOB_BYTES_LIMIT) { - bBuilder = result.StartBlob(); - } - Y_ABORT_UNLESS(rb); - Y_ABORT_UNLESS(rb->num_columns() == 1); - - bBuilder->AddChunk(std::make_shared<TSimpleOrderedColumnChunk>(rec, newBlob)); +TPortionInfoWithBlobs TPortionInfoWithBlobs::BuildByBlobs(std::vector<TSplittedBlob>&& chunks, const TPortionInfo& basePortion, + const std::shared_ptr<IStoragesManager>& operators) { + TPortionInfoWithBlobs result(basePortion.CopyBeforeChunksRebuild()); + for (auto&& blob : chunks) { + auto storage = operators->GetOperatorVerified(blob.GetGroupName()); + auto blobInfo = result.StartBlob(storage); + for (auto&& chunk : blob.GetChunks()) { + blobInfo.AddChunk(chunk); } } - const auto pred = [](const TColumnRecord& l, const TColumnRecord& r) { - return l.GetAddress() < r.GetAddress(); - }; - std::sort(result.PortionInfo.Records.begin(), result.PortionInfo.Records.end(), pred); - + result.GetPortionInfo().ReorderChunks(); return result; } @@ -180,7 +142,7 @@ std::vector<std::shared_ptr<IPortionDataChunk>> TPortionInfoWithBlobs::GetEntity } std::vector<std::shared_ptr<IPortionDataChunk>> result; for (auto&& i : sortedChunks) { - AFL_VERIFY(i.second->GetChunkIdx() == result.size())("idx", i.second->GetChunkIdx())("size", result.size()); + AFL_VERIFY(i.second->GetChunkIdxVerified() == result.size())("idx", i.second->GetChunkIdxVerified())("size", result.size()); result.emplace_back(i.second); } return result; @@ -204,4 +166,76 @@ bool TPortionInfoWithBlobs::ExtractColumnChunks(const ui32 columnId, std::vector std::swap(chunksLocal, chunks); return true; } + +void TPortionInfoWithBlobs::FillStatistics(const TIndexInfo& index) { + NStatistics::TPortionStorage storage; + for (auto&& i : index.GetStatisticsByName()) { + THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> data; + for (auto&& entityId : i.second->GetEntityIds()) { + data.emplace(entityId, GetEntityChunks(entityId)); + } + i.second->FillStatisticsData(data, storage, index); + } + PortionInfo.SetStatisticsStorage(std::move(storage)); +} + +TPortionInfoWithBlobs TPortionInfoWithBlobs::SyncPortion(TPortionInfoWithBlobs&& source, + const ISnapshotSchema::TPtr& from, const ISnapshotSchema::TPtr& to, const TString& targetTier, const std::shared_ptr<IStoragesManager>& storages, + std::shared_ptr<NColumnShard::TSplitterCounters> counters) { + if (from->GetVersion() == to->GetVersion() && targetTier == source.GetPortionInfo().GetTierNameDef(IStoragesManager::DefaultStorageId)) { + return std::move(source); + } + NYDBTest::TControllers::GetColumnShardController()->OnPortionActualization(source.PortionInfo); + auto pages = source.PortionInfo.BuildPages(); + std::vector<ui32> pageSizes; + for (auto&& p : pages) { + pageSizes.emplace_back(p.GetRecordsCount()); + } + THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> columnChunks; + for (auto&& i : source.Blobs) { + for (auto&& c : i.GetChunks()) { + columnChunks[c.first.GetColumnId()].emplace_back(c.second); + } + } + + THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> entityChunksNew; + for (auto&& i : to->GetIndexInfo().GetColumnIds()) { + auto it = columnChunks.find(i); + std::vector<std::shared_ptr<IPortionDataChunk>> newChunks; + if (it != columnChunks.end()) { + newChunks = to->GetIndexInfo().ActualizeColumnData(it->second, from->GetIndexInfo(), i); + } else { + newChunks = to->GetIndexInfo().MakeEmptyChunks(i, pageSizes, to->GetIndexInfo().GetColumnFeaturesVerified(i)); + } + AFL_VERIFY(entityChunksNew.emplace(i, std::move(newChunks)).second); + } + + for (auto&& i : to->GetIndexInfo().GetIndexes()) { + if (from->GetIndexInfo().HasIndexId(i.first)) { + continue; + } + to->GetIndexInfo().AppendIndex(entityChunksNew, i.first); + } + + auto schemaTo = std::make_shared<TDefaultSchemaDetails>(to, std::make_shared<TSerializationStats>()); + TGeneralSerializedSlice slice(entityChunksNew, schemaTo, counters); + const NSplitter::TEntityGroups groups = to->GetIndexInfo().GetEntityGroupsByStorageId(targetTier, *storages); + TPortionInfoWithBlobs result = TPortionInfoWithBlobs::BuildByBlobs(slice.GroupChunksByBlobs(groups), source.PortionInfo, storages); + result.GetPortionInfo().SetMinSnapshotDeprecated(to->GetSnapshot()); + result.GetPortionInfo().SetSchemaVersion(to->GetVersion()); + result.GetPortionInfo().MutableMeta().SetTierName(targetTier); + + NStatistics::TPortionStorage storage; + for (auto&& i : to->GetIndexInfo().GetStatisticsByName()) { + auto it = from->GetIndexInfo().GetStatisticsByName().find(i.first); + if (it != from->GetIndexInfo().GetStatisticsByName().end()) { + i.second->CopyData(it->second.GetCursorVerified(), source.PortionInfo.GetMeta().GetStatisticsStorage(), storage); + } else { + i.second->FillStatisticsData(entityChunksNew, storage, to->GetIndexInfo()); + } + } + result.PortionInfo.MutableMeta().ResetStatisticsStorage(std::move(storage)); + return result; +} + } diff --git a/ydb/core/tx/columnshard/engines/portions/with_blobs.h b/ydb/core/tx/columnshard/engines/portions/with_blobs.h index 1a7a6b7192cb..83e2dc68fda8 100644 --- a/ydb/core/tx/columnshard/engines/portions/with_blobs.h +++ b/ydb/core/tx/columnshard/engines/portions/with_blobs.h @@ -1,11 +1,17 @@ #pragma once #include "portion_info.h" -#include <ydb/library/accessor/accessor.h> -#include <ydb/core/tx/columnshard/splitter/chunks.h> #include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/splitter/blob_info.h> +#include <ydb/core/tx/columnshard/splitter/chunks.h> +#include <ydb/core/tx/columnshard/engines/scheme/statistics/abstract/common.h> +#include <ydb/core/tx/columnshard/engines/scheme/statistics/abstract/operator.h> + +#include <ydb/library/accessor/accessor.h> namespace NKikimr::NOlap { +class TVersionedIndex; + class TPortionInfoWithBlobs { public: class TBlobInfo { @@ -13,26 +19,36 @@ class TPortionInfoWithBlobs { using TBlobChunks = std::map<TChunkAddress, std::shared_ptr<IPortionDataChunk>>; YDB_READONLY(ui64, Size, 0); YDB_READONLY_DEF(TBlobChunks, Chunks); + YDB_READONLY_DEF(std::shared_ptr<IBlobsStorageOperator>, Operator); std::vector<std::shared_ptr<IPortionDataChunk>> ChunksOrdered; mutable std::optional<TString> ResultBlob; void AddChunk(TPortionInfoWithBlobs& owner, const std::shared_ptr<IPortionDataChunk>& chunk); void RestoreChunk(const TPortionInfoWithBlobs& owner, const std::shared_ptr<IPortionDataChunk>& chunk); public: + TBlobInfo(const std::shared_ptr<IBlobsStorageOperator>& bOperator) + : Operator(bOperator) + { + + } + class TBuilder { private: TBlobInfo* OwnerBlob; TPortionInfoWithBlobs* OwnerPortion; - public: TBuilder(TBlobInfo& blob, TPortionInfoWithBlobs& portion) : OwnerBlob(&blob) , OwnerPortion(&portion) { } + ui64 GetSize() const { + return OwnerBlob->GetSize(); + } + void AddChunk(const std::shared_ptr<IPortionDataChunk>& chunk) { return OwnerBlob->AddChunk(*OwnerPortion, chunk); } - void RestoreChunk(const std::shared_ptr<IPortionColumnChunk>& chunk) { + void RestoreChunk(const std::shared_ptr<IPortionDataChunk>& chunk) { OwnerBlob->RestoreChunk(*OwnerPortion, chunk); } }; @@ -71,29 +87,40 @@ class TPortionInfoWithBlobs { PortionInfo = portionInfo; } - TBlobInfo::TBuilder StartBlob() { - Blobs.emplace_back(TBlobInfo()); + TBlobInfo::TBuilder StartBlob(const std::shared_ptr<IBlobsStorageOperator>& bOperator) { + Blobs.emplace_back(TBlobInfo(bOperator)); return TBlobInfo::TBuilder(Blobs.back(), *this); } public: - static std::vector<TPortionInfoWithBlobs> RestorePortions(const std::vector<TPortionInfo>& portions, THashMap<TBlobRange, TString>& blobs); - static TPortionInfoWithBlobs RestorePortion(const TPortionInfo& portions, THashMap<TBlobRange, TString>& blobs); + void InitBatchCached(const std::shared_ptr<arrow::RecordBatch>& batch) { + if (!batch) { + return; + } + CachedBatch = batch; + } + + static std::vector<TPortionInfoWithBlobs> RestorePortions(const std::vector<TPortionInfo>& portions, NBlobOperations::NRead::TCompositeReadBlobs& blobs, + const TVersionedIndex& tables, const std::shared_ptr<IStoragesManager>& operators); + static TPortionInfoWithBlobs RestorePortion(const TPortionInfo& portion, NBlobOperations::NRead::TCompositeReadBlobs& blobs, + const TIndexInfo& indexInfo, const std::shared_ptr<IStoragesManager>& operators); std::shared_ptr<arrow::RecordBatch> GetBatch(const ISnapshotSchema::TPtr& data, const ISnapshotSchema& result, const std::set<std::string>& columnNames = {}) const; + static TPortionInfoWithBlobs SyncPortion(TPortionInfoWithBlobs&& source, + const ISnapshotSchema::TPtr& from, const ISnapshotSchema::TPtr& to, const TString& targetTier, const std::shared_ptr<IStoragesManager>& storages, + std::shared_ptr<NColumnShard::TSplitterCounters> counters); std::vector<std::shared_ptr<IPortionDataChunk>> GetEntityChunks(const ui32 entityId) const; bool ExtractColumnChunks(const ui32 columnId, std::vector<const TColumnRecord*>& records, std::vector<std::shared_ptr<IPortionDataChunk>>& chunks); - ui64 GetSize() const { - return PortionInfo.BlobsBytes(); - } + void FillStatistics(const TIndexInfo& index); - static TPortionInfoWithBlobs BuildByBlobs(std::vector<std::vector<std::shared_ptr<IPortionDataChunk>>>& chunksByBlobs, std::shared_ptr<arrow::RecordBatch> batch, const ui64 granule, const TSnapshot& snapshot, - const std::shared_ptr<NOlap::IBlobsStorageOperator>& bStorageOperator); + static TPortionInfoWithBlobs BuildByBlobs(std::vector<TSplittedBlob>&& chunks, + std::shared_ptr<arrow::RecordBatch> batch, const ui64 granule, const ui64 schemaVersion, const TSnapshot& snapshot, const std::shared_ptr<IStoragesManager>& operators); - std::optional<TPortionInfoWithBlobs> ChangeSaver(ISnapshotSchema::TPtr currentSchema, const TSaverContext& saverContext) const; + static TPortionInfoWithBlobs BuildByBlobs(std::vector<TSplittedBlob>&& chunks, const TPortionInfo& basePortion, + const std::shared_ptr<IStoragesManager>& operators); const TString& GetBlobByRangeVerified(const ui32 columnId, const ui32 chunkId) const { for (auto&& b : Blobs) { diff --git a/ydb/core/tx/columnshard/engines/portions/ya.make b/ydb/core/tx/columnshard/engines/portions/ya.make index 7a6c96a9a8a2..96254fce4299 100644 --- a/ydb/core/tx/columnshard/engines/portions/ya.make +++ b/ydb/core/tx/columnshard/engines/portions/ya.make @@ -6,12 +6,14 @@ SRCS( with_blobs.cpp meta.cpp common.cpp + index_chunk.cpp ) PEERDIR( ydb/core/tx/columnshard/engines/scheme ydb/core/tx/columnshard/splitter ydb/core/tx/columnshard/common + ydb/core/tx/columnshard/data_sharing/protos ydb/core/tablet_flat ) diff --git a/ydb/core/tx/columnshard/engines/reader/abstract/abstract.cpp b/ydb/core/tx/columnshard/engines/reader/abstract/abstract.cpp new file mode 100644 index 000000000000..04715867e012 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/abstract/abstract.cpp @@ -0,0 +1,9 @@ +#include "abstract.h" + +namespace NKikimr::NOlap::NReader { + +const TReadStats& TScanIteratorBase::GetStats() const { + return Default<TReadStats>(); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/abstract/abstract.h b/ydb/core/tx/columnshard/engines/reader/abstract/abstract.h new file mode 100644 index 000000000000..2681626b6d4f --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/abstract/abstract.h @@ -0,0 +1,45 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/reader/common/conveyor_task.h> +#include <ydb/core/tx/columnshard/engines/reader/common/result.h> +#include <ydb/core/tx/columnshard/engines/reader/common/stats.h> + +namespace NKikimr::NOlap::NReader { + +class TScanIteratorBase { +protected: + virtual void DoOnSentDataFromInterval(const ui32 /*intervalIdx*/) const { + + } +public: + virtual ~TScanIteratorBase() = default; + + virtual void Apply(IDataTasksProcessor::ITask::TPtr /*processor*/) { + + } + + virtual TConclusionStatus Start() = 0; + + virtual const TReadStats& GetStats() const; + + void OnSentDataFromInterval(const std::optional<ui32> intervalIdx) const { + if (intervalIdx) { + DoOnSentDataFromInterval(*intervalIdx); + } + } + + virtual std::optional<ui32> GetAvailableResultsCount() const { + return {}; + } + virtual bool Finished() const = 0; + virtual TConclusion<std::optional<TPartialReadResult>> GetBatch() = 0; + virtual void PrepareResults() { + + } + virtual TConclusion<bool> ReadNextInterval() { return false; } + virtual TString DebugString(const bool verbose = false) const { + Y_UNUSED(verbose); + return "NO_DATA"; + } +}; + +} diff --git a/ydb/core/tx/columnshard/columnshard__read_base.cpp b/ydb/core/tx/columnshard/engines/reader/abstract/constructor.cpp similarity index 50% rename from ydb/core/tx/columnshard/columnshard__read_base.cpp rename to ydb/core/tx/columnshard/engines/reader/abstract/constructor.cpp index 000b8e7e63c8..dba163fcfd15 100644 --- a/ydb/core/tx/columnshard/columnshard__read_base.cpp +++ b/ydb/core/tx/columnshard/engines/reader/abstract/constructor.cpp @@ -1,37 +1,10 @@ -#include <ydb/core/tx/columnshard/columnshard_impl.h> -#include <ydb/core/tx/columnshard/columnshard__read_base.h> -#include <ydb/core/tx/columnshard/columnshard__index_scan.h> +#include "constructor.h" +#include <ydb/core/tx/program/program.h> -namespace NKikimr::NColumnShard { - - -std::shared_ptr<NOlap::TReadMetadata> -TTxReadBase::PrepareReadMetadata(const NOlap::TReadDescription& read, - const std::unique_ptr<NOlap::TInsertTable>& insertTable, - const std::unique_ptr<NOlap::IColumnEngine>& index, - TString& error, const bool isReverse) const { - if (!insertTable || !index) { - return nullptr; - } - - if (read.GetSnapshot().GetPlanStep() < Self->GetMinReadStep()) { - error = TStringBuilder() << "Snapshot too old: " << read.GetSnapshot(); - return nullptr; - } - - NOlap::TDataStorageAccessor dataAccessor(insertTable, index); - auto readMetadata = std::make_shared<NOlap::TReadMetadata>(index->GetVersionedIndex(), read.GetSnapshot(), - isReverse ? NOlap::TReadMetadata::ESorting::DESC : NOlap::TReadMetadata::ESorting::ASC, read.GetProgram()); - - if (!readMetadata->Init(read, dataAccessor, error)) { - return nullptr; - } - return readMetadata; -} - -bool TTxReadBase::ParseProgram(NKikimrSchemeOp::EOlapProgramType programType, - TString serializedProgram, NOlap::TReadDescription& read, const NOlap::IColumnResolver& columnResolver) { +namespace NKikimr::NOlap::NReader { +NKikimr::TConclusionStatus IScannerConstructor::ParseProgram(const TVersionedIndex* vIndex, + const NKikimrSchemeOp::EOlapProgramType programType, const TString& serializedProgram, TReadDescription& read, const IColumnResolver& columnResolver) const { AFL_VERIFY(!read.ColumnIds.size() || !read.ColumnNames.size()); std::vector<TString> names; std::set<TString> namesChecker; @@ -44,17 +17,16 @@ bool TTxReadBase::ParseProgram(NKikimrSchemeOp::EOlapProgramType programType, names.emplace_back(i); AFL_VERIFY(namesChecker.emplace(names.back()).second); } - NOlap::TProgramContainer container; + TProgramContainer container; AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "overriden_columns")("columns", JoinSeq(",", names)); container.OverrideProcessingColumns(std::vector<TString>(names.begin(), names.end())); read.SetProgram(std::move(container)); - return true; + return TConclusionStatus::Success(); } else { - NOlap::TProgramContainer ssaProgram; + TProgramContainer ssaProgram; TString error; if (!ssaProgram.Init(columnResolver, programType, serializedProgram, error)) { - ErrorDescription = TStringBuilder() << "Can't parse SsaProgram at " << Self->TabletID() << " / " << error; - return false; + return TConclusionStatus::Fail(TStringBuilder() << "Can't parse SsaProgram: " << error); } if (names.size()) { @@ -65,8 +37,8 @@ bool TTxReadBase::ParseProgram(NKikimrSchemeOp::EOlapProgramType programType, } } //its possible dont use columns from filter where pk field compare with null and remove from PKFilter and program, but stay in kqp columns request - if (Self->TablesManager.HasPrimaryIndex()) { - for (auto&& i : Self->TablesManager.GetIndexInfo(read.GetSnapshot()).GetReplaceKey()->field_names()) { + if (vIndex) { + for (auto&& i : vIndex->GetSchema(read.GetSnapshot())->GetIndexInfo().GetReplaceKey()->field_names()) { const TString cId(i.data(), i.size()); namesChecker.erase(cId); programColumns.erase(cId); @@ -78,21 +50,31 @@ bool TTxReadBase::ParseProgram(NKikimrSchemeOp::EOlapProgramType programType, }; if (namesChecker.size() != programColumns.size()) { - ErrorDescription = getDiffColumnsMessage(); - return false; + return TConclusionStatus::Fail(getDiffColumnsMessage()); } for (auto&& i : namesChecker) { if (!programColumns.contains(i)) { - ErrorDescription = getDiffColumnsMessage(); - return false; + return TConclusionStatus::Fail(getDiffColumnsMessage()); } } } read.SetProgram(std::move(ssaProgram)); - return true; + return TConclusionStatus::Success(); } } +NKikimr::TConclusion<std::shared_ptr<TReadMetadataBase>> IScannerConstructor::BuildReadMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const { + TConclusion<std::shared_ptr<TReadMetadataBase>> result = DoBuildReadMetadata(self, read); + if (result.IsFail()) { + return result; + } else if (!*result) { + return result.DetachResult(); + } else { + (*result)->Limit = ItemsLimit; + return result.DetachResult(); + } } + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/abstract/constructor.h b/ydb/core/tx/columnshard/engines/reader/abstract/constructor.h new file mode 100644 index 000000000000..584ea78aa5a0 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/abstract/constructor.h @@ -0,0 +1,37 @@ +#pragma once +#include "read_metadata.h" +#include <ydb/core/protos/tx_datashard.pb.h> +#include <ydb/core/tx/columnshard/engines/reader/common/description.h> +#include <ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.h> +#include <ydb/core/tx/columnshard/common/snapshot.h> +#include <ydb/core/tx/program/program.h> + +namespace NKikimr::NOlap::NReader { + +class IScannerConstructor { +protected: + const TSnapshot Snapshot; + const ui64 ItemsLimit; + const bool IsReverse; + TConclusionStatus ParseProgram(const TVersionedIndex* vIndex, const NKikimrSchemeOp::EOlapProgramType programType, + const TString& serializedProgram, TReadDescription& read, const IColumnResolver& columnResolver) const; +private: + virtual TConclusion<std::shared_ptr<TReadMetadataBase>> DoBuildReadMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const = 0; + +public: + virtual ~IScannerConstructor() = default; + + IScannerConstructor(const TSnapshot& snapshot, const ui64 itemsLimit, const bool reverse) + : Snapshot(snapshot) + , ItemsLimit(itemsLimit) + , IsReverse(reverse) + { + + } + + virtual TConclusionStatus ParseProgram(const TVersionedIndex* vIndex, const NKikimrTxDataShard::TEvKqpScan& proto, TReadDescription& read) const = 0; + virtual std::vector<TNameTypeInfo> GetPrimaryKeyScheme(const NColumnShard::TColumnShard* self) const = 0; + TConclusion<std::shared_ptr<TReadMetadataBase>> BuildReadMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const; +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/abstract/read_context.cpp b/ydb/core/tx/columnshard/engines/reader/abstract/read_context.cpp new file mode 100644 index 000000000000..b54de1722f16 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/abstract/read_context.cpp @@ -0,0 +1,9 @@ +#include "read_context.h" + +namespace NKikimr::NOlap::NReader { + +IDataReader::IDataReader(const std::shared_ptr<TReadContext>& context) + : Context(context) { +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/read_context.h b/ydb/core/tx/columnshard/engines/reader/abstract/read_context.h similarity index 80% rename from ydb/core/tx/columnshard/engines/reader/read_context.h rename to ydb/core/tx/columnshard/engines/reader/abstract/read_context.h index bc5d5fa1ba86..fbcdab4d8622 100644 --- a/ydb/core/tx/columnshard/engines/reader/read_context.h +++ b/ydb/core/tx/columnshard/engines/reader/abstract/read_context.h @@ -1,16 +1,13 @@ #pragma once -#include "conveyor_task.h" #include "read_metadata.h" -#include <ydb/core/tx/columnshard/blob.h> -#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> -#include <ydb/core/tx/columnshard/columnshard__scan.h> +#include <ydb/core/protos/tx_datashard.pb.h> #include <ydb/core/tx/columnshard/counters/scan.h> -#include <ydb/core/tx/columnshard/resources/memory.h> #include <ydb/core/tx/columnshard/resource_subscriber/task.h> -#include <ydb/core/protos/tx_datashard.pb.h> -#include <ydb/library/actors/core/actor.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> +#include <ydb/core/tx/columnshard/engines/reader/common/result.h> +#include <ydb/library/accessor/accessor.h> -namespace NKikimr::NOlap { +namespace NKikimr::NOlap::NReader { class TComputeShardingPolicy { private: @@ -39,20 +36,6 @@ class TComputeShardingPolicy { } }; -class TActorBasedMemoryAccesor: public TScanMemoryLimiter::IMemoryAccessor { -private: - using TBase = TScanMemoryLimiter::IMemoryAccessor; - const NActors::TActorIdentity OwnerId; -protected: - virtual void DoOnBufferReady() override; -public: - TActorBasedMemoryAccesor(const NActors::TActorIdentity& ownerId, const TString& limiterName) - : TBase(TMemoryLimitersController::GetLimiter(limiterName)) - , OwnerId(ownerId) { - - } -}; - class TReadContext { private: YDB_READONLY_DEF(std::shared_ptr<IStoragesManager>, StoragesManager); @@ -62,8 +45,15 @@ class TReadContext { const TActorId ScanActorId; const TActorId ResourceSubscribeActorId; const TActorId ReadCoordinatorActorId; - const NOlap::TComputeShardingPolicy ComputeShardingPolicy; + const TComputeShardingPolicy ComputeShardingPolicy; public: + template <class T> + std::shared_ptr<const T> GetReadMetadataPtrVerifiedAs() const { + auto result = dynamic_pointer_cast<const T>(ReadMetadata); + AFL_VERIFY(result); + return result; + } + bool IsReverse() const { return ReadMetadata->IsDescSorted(); } @@ -97,7 +87,7 @@ class TReadContext { } TReadContext(const std::shared_ptr<IStoragesManager>& storagesManager, const NColumnShard::TConcreteScanCounters& counters, const TReadMetadataBase::TConstPtr& readMetadata, - const TActorId& scanActorId, const TActorId& resourceSubscribeActorId, const TActorId& readCoordinatorActorId, const NOlap::TComputeShardingPolicy& computeShardingPolicy) + const TActorId& scanActorId, const TActorId& resourceSubscribeActorId, const TActorId& readCoordinatorActorId, const TComputeShardingPolicy& computeShardingPolicy) : StoragesManager(storagesManager) , Counters(counters) , ReadMetadata(readMetadata) @@ -114,15 +104,24 @@ class TReadContext { class IDataReader { protected: std::shared_ptr<TReadContext> Context; + bool Started = false; + virtual TConclusionStatus DoStart() = 0; virtual TString DoDebugString(const bool verbose) const = 0; virtual void DoAbort() = 0; virtual bool DoIsFinished() const = 0; virtual std::vector<TPartialReadResult> DoExtractReadyResults(const int64_t maxRowsInBatch) = 0; - virtual bool DoReadNextInterval() = 0; + virtual TConclusion<bool> DoReadNextInterval() = 0; public: - IDataReader(const std::shared_ptr<NOlap::TReadContext>& context); + IDataReader(const std::shared_ptr<TReadContext>& context); virtual ~IDataReader() = default; + TConclusionStatus Start() { + AFL_VERIFY(!Started); + Started = true; + return DoStart(); + } + virtual void OnSentDataFromInterval(const ui32 intervalIdx) const = 0; + const TReadContext& GetContext() const { return *Context; } @@ -135,7 +134,8 @@ class IDataReader { return Context->GetCounters(); } - void Abort() { + void Abort(const TString& reason) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "scan_aborted")("reason", reason); return DoAbort(); } @@ -166,7 +166,7 @@ class IDataReader { sb << DoDebugString(verbose); return sb; } - bool ReadNextInterval() { + [[nodiscard]] TConclusion<bool> ReadNextInterval() { return DoReadNextInterval(); } }; diff --git a/ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.cpp b/ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.cpp new file mode 100644 index 000000000000..e6fc29578f1c --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.cpp @@ -0,0 +1,31 @@ +#include "read_metadata.h" +#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> + +namespace NKikimr::NOlap::NReader { + +TDataStorageAccessor::TDataStorageAccessor(const std::unique_ptr<TInsertTable>& insertTable, + const std::unique_ptr<IColumnEngine>& index) + : InsertTable(insertTable) + , Index(index) +{} + +std::shared_ptr<TSelectInfo> TDataStorageAccessor::Select(const TReadDescription& readDescription) const { + if (readDescription.ReadNothing) { + return std::make_shared<TSelectInfo>(); + } + return Index->Select(readDescription.PathId, + readDescription.GetSnapshot(), + readDescription.PKRangesFilter); +} + +ISnapshotSchema::TPtr TReadMetadataBase::GetLoadSchemaVerified(const TPortionInfo& portion) const { + auto schema = portion.GetSchema(GetIndexVersions()); + AFL_VERIFY(schema); + return schema; +} + +std::vector<TCommittedBlob> TDataStorageAccessor::GetCommitedBlobs(const TReadDescription& readDescription, const std::shared_ptr<arrow::Schema>& pkSchema) const { + return std::move(InsertTable->Read(readDescription.PathId, readDescription.GetSnapshot(), pkSchema)); +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h b/ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h new file mode 100644 index 000000000000..7d06dee3cb2a --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h @@ -0,0 +1,151 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/reader/common/description.h> +#include <ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.h> +#include <ydb/core/tx/columnshard/engines/insert_table/insert_table.h> +#include <ydb/core/tx/columnshard/engines/column_engine.h> + +namespace NKikimr::NOlap { + class TPortionInfo; +} +namespace NKikimr::NOlap::NReader { + +class TScanIteratorBase; +class TReadContext; + +class TDataStorageAccessor { +private: + const std::unique_ptr<NOlap::TInsertTable>& InsertTable; + const std::unique_ptr<NOlap::IColumnEngine>& Index; + +public: + TDataStorageAccessor(const std::unique_ptr<TInsertTable>& insertTable, + const std::unique_ptr<IColumnEngine>& index); + std::shared_ptr<NOlap::TSelectInfo> Select(const TReadDescription& readDescription) const; + std::vector<NOlap::TCommittedBlob> GetCommitedBlobs(const TReadDescription& readDescription, const std::shared_ptr<arrow::Schema>& pkSchema) const; +}; + +// Holds all metadata that is needed to perform read/scan +struct TReadMetadataBase { +public: + enum class ESorting { + NONE = 0 /* "not_sorted" */, + ASC /* "ascending" */, + DESC /* "descending" */, + }; +private: + const ESorting Sorting = ESorting::ASC; // Sorting inside returned batches + std::optional<TPKRangesFilter> PKRangesFilter; + TProgramContainer Program; + std::shared_ptr<TVersionedIndex> IndexVersionsPointer; + TSnapshot RequestSnapshot; +protected: + std::shared_ptr<ISnapshotSchema> ResultIndexSchema; + const TVersionedIndex& GetIndexVersions() const { + AFL_VERIFY(IndexVersionsPointer); + return *IndexVersionsPointer; + } +public: + using TConstPtr = std::shared_ptr<const TReadMetadataBase>; + + void SetPKRangesFilter(const TPKRangesFilter& value) { + Y_ABORT_UNLESS(IsSorted() && value.IsReverse() == IsDescSorted()); + Y_ABORT_UNLESS(!PKRangesFilter); + PKRangesFilter = value; + } + + const TPKRangesFilter& GetPKRangesFilter() const { + Y_ABORT_UNLESS(!!PKRangesFilter); + return *PKRangesFilter; + } + + ISnapshotSchema::TPtr GetResultSchema() const { + return ResultIndexSchema; + } + + ISnapshotSchema::TPtr GetLoadSchemaVerified(const TPortionInfo& porition) const; + + std::shared_ptr<arrow::Schema> GetBlobSchema(const ui64 version) const { + return GetIndexVersions().GetSchema(version)->GetIndexInfo().ArrowSchema(); + } + + const TIndexInfo& GetIndexInfo(const std::optional<TSnapshot>& version = {}) const { + if (version && version < RequestSnapshot) { + return GetIndexVersions().GetSchema(*version)->GetIndexInfo(); + } + return ResultIndexSchema->GetIndexInfo(); + } + + TReadMetadataBase(const std::shared_ptr<TVersionedIndex> index, const ESorting sorting, const TProgramContainer& ssaProgram, const std::shared_ptr<ISnapshotSchema>& schema, const TSnapshot& requestSnapshot) + : Sorting(sorting) + , Program(ssaProgram) + , IndexVersionsPointer(index) + , RequestSnapshot(requestSnapshot) + , ResultIndexSchema(schema) + { + } + virtual ~TReadMetadataBase() = default; + + ui64 Limit = 0; + + virtual void Dump(IOutputStream& out) const { + out << " predicate{" << (PKRangesFilter ? PKRangesFilter->DebugString() : "no_initialized") << "}" + << " " << Sorting << " sorted"; + } + + std::set<ui32> GetProcessingColumnIds() const { + std::set<ui32> result; + for (auto&& i : GetProgram().GetProcessingColumns()) { + result.emplace(ResultIndexSchema->GetIndexInfo().GetColumnId(i)); + } + return result; + } + bool IsAscSorted() const { return Sorting == ESorting::ASC; } + bool IsDescSorted() const { return Sorting == ESorting::DESC; } + bool IsSorted() const { return IsAscSorted() || IsDescSorted(); } + + virtual std::unique_ptr<TScanIteratorBase> StartScan(const std::shared_ptr<TReadContext>& readContext) const = 0; + virtual std::vector<TNameTypeInfo> GetKeyYqlSchema() const = 0; + + // TODO: can this only be done for base class? + friend IOutputStream& operator << (IOutputStream& out, const TReadMetadataBase& meta) { + meta.Dump(out); + return out; + } + + const TProgramContainer& GetProgram() const { + return Program; + } + + const TSnapshot& GetRequestSnapshot() const { + return RequestSnapshot; + } + + std::shared_ptr<arrow::Schema> GetReplaceKey() const { + return ResultIndexSchema->GetIndexInfo().GetReplaceKey(); + } + + std::optional<std::string> GetColumnNameDef(const ui32 columnId) const { + if (!ResultIndexSchema) { + return {}; + } + auto f = ResultIndexSchema->GetFieldByColumnIdOptional(columnId); + if (!f) { + return {}; + } + return f->name(); + } + + std::optional<std::string> GetEntityName(const ui32 entityId) const { + if (!ResultIndexSchema) { + return {}; + } + auto result = ResultIndexSchema->GetIndexInfo().GetColumnNameOptional(entityId); + if (!!result) { + return result; + } + return ResultIndexSchema->GetIndexInfo().GetIndexNameOptional(entityId); + } + +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/abstract/ya.make b/ydb/core/tx/columnshard/engines/reader/abstract/ya.make new file mode 100644 index 000000000000..9ad540de1170 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/abstract/ya.make @@ -0,0 +1,20 @@ +LIBRARY() + +SRCS( + abstract.cpp + read_metadata.cpp + constructor.cpp + read_context.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/versions + ydb/core/tx/columnshard/engines/insert_table + ydb/core/tx/program + ydb/core/protos + ydb/core/tx/columnshard/data_sharing/protos +) + +GENERATE_ENUM_SERIALIZATION(read_metadata.h) + +END() diff --git a/ydb/core/tx/columnshard/engines/reader/actor/actor.cpp b/ydb/core/tx/columnshard/engines/reader/actor/actor.cpp new file mode 100644 index 000000000000..878153f52baf --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/actor/actor.cpp @@ -0,0 +1,415 @@ +#include "actor.h" +#include <ydb/core/tx/columnshard/blobs_reader/read_coordinator.h> +#include <ydb/core/tx/columnshard/resource_subscriber/actor.h> +#include <ydb/library/yql/core/issue/yql_issue.h> +#include <ydb/core/formats/arrow/reader/position.h> + +namespace NKikimr::NOlap::NReader { +constexpr i64 DEFAULT_READ_AHEAD_BYTES = (i64)2 * 1024 * 1024 * 1024; +constexpr TDuration SCAN_HARD_TIMEOUT = TDuration::Minutes(10); +constexpr TDuration SCAN_HARD_TIMEOUT_GAP = TDuration::Seconds(5); + +namespace { +class TInFlightGuard: NNonCopyable::TNonCopyable { +private: + static inline TAtomicCounter InFlightGlobal = 0; + i64 InFlightGuarded = 0; +public: + ~TInFlightGuard() { + Return(InFlightGuarded); + } + + bool CanTake() { + return InFlightGlobal.Val() < DEFAULT_READ_AHEAD_BYTES || !InFlightGuarded; + } + + void Take(const ui64 bytes) { + InFlightGlobal.Add(bytes); + InFlightGuarded += bytes; + } + + void Return(const ui64 bytes) { + Y_ABORT_UNLESS(InFlightGlobal.Sub(bytes) >= 0); + InFlightGuarded -= bytes; + Y_ABORT_UNLESS(InFlightGuarded >= 0); + } +}; + +} + +void TColumnShardScan::PassAway() { + Send(ResourceSubscribeActorId, new TEvents::TEvPoisonPill); + Send(ReadCoordinatorActorId, new TEvents::TEvPoisonPill); + IActor::PassAway(); +} + +TColumnShardScan::TColumnShardScan(const TActorId& columnShardActorId, const TActorId& scanComputeActorId, const std::shared_ptr<IStoragesManager>& storagesManager, + const TComputeShardingPolicy& computeShardingPolicy, ui32 scanId, ui64 txId, ui32 scanGen, ui64 requestCookie, + ui64 tabletId, TDuration timeout, const TReadMetadataBase::TConstPtr& readMetadataRange, + NKikimrDataEvents::EDataFormat dataFormat, const NColumnShard::TScanCounters& scanCountersPool) + : StoragesManager(storagesManager) + , ColumnShardActorId(columnShardActorId) + , ScanComputeActorId(scanComputeActorId) + , BlobCacheActorId(NBlobCache::MakeBlobCacheServiceId()) + , ScanId(scanId) + , TxId(txId) + , ScanGen(scanGen) + , RequestCookie(requestCookie) + , DataFormat(dataFormat) + , TabletId(tabletId) + , ReadMetadataRange(readMetadataRange) + , Deadline(TInstant::Now() + (timeout ? timeout + SCAN_HARD_TIMEOUT_GAP : SCAN_HARD_TIMEOUT)) + , ScanCountersPool(scanCountersPool) + , Stats(NTracing::TTraceClient::GetLocalClient("SHARD", ::ToString(TabletId)/*, "SCAN_TXID:" + ::ToString(TxId)*/)) + , ComputeShardingPolicy(computeShardingPolicy) +{ + AFL_VERIFY(ReadMetadataRange); + KeyYqlSchema = ReadMetadataRange->GetKeyYqlSchema(); +} + +void TColumnShardScan::Bootstrap(const TActorContext& ctx) { + TLogContextGuard gLogging(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD_SCAN) + ("SelfId", SelfId())("TabletId", TabletId)("ScanId", ScanId)("TxId", TxId)("ScanGen", ScanGen) + ); + auto g = Stats->MakeGuard("bootstrap"); + ScanActorId = ctx.SelfID; + Schedule(Deadline, new TEvents::TEvWakeup); + + Y_ABORT_UNLESS(!ScanIterator); + ResourceSubscribeActorId = ctx.Register(new NResourceBroker::NSubscribe::TActor(TabletId, SelfId())); + ReadCoordinatorActorId = ctx.Register(new NBlobOperations::NRead::TReadCoordinatorActor(TabletId, SelfId())); + + std::shared_ptr<TReadContext> context = std::make_shared<TReadContext>(StoragesManager, ScanCountersPool, + ReadMetadataRange, SelfId(), ResourceSubscribeActorId, ReadCoordinatorActorId, ComputeShardingPolicy); + ScanIterator = ReadMetadataRange->StartScan(context); + auto startResult = ScanIterator->Start(); + StartInstant = TMonotonic::Now(); + if (!startResult) { + ACFL_ERROR("event", "BootstrapError")("error", startResult.GetErrorMessage()); + SendScanError("scanner_start_error:" + startResult.GetErrorMessage()); + Finish(NColumnShard::TScanCounters::EStatusFinish::ProblemOnStart); + } else { + + // propagate self actor id // TODO: FlagSubscribeOnSession ? + Send(ScanComputeActorId, new NKqp::TEvKqpCompute::TEvScanInitActor(ScanId, ctx.SelfID, ScanGen, TabletId), IEventHandle::FlagTrackDelivery); + + Become(&TColumnShardScan::StateScan); + ContinueProcessing(); + } +} + +void TColumnShardScan::HandleScan(NConveyor::TEvExecution::TEvTaskProcessedResult::TPtr& ev) { + --InFlightReads; + auto g = Stats->MakeGuard("task_result"); + if (ev->Get()->GetErrorMessage()) { + ACFL_ERROR("event", "TEvTaskProcessedResult")("error", ev->Get()->GetErrorMessage()); + SendScanError("task_error:" + ev->Get()->GetErrorMessage()); + Finish(NColumnShard::TScanCounters::EStatusFinish::ConveyorInternalError); + } else { + ACFL_DEBUG("event", "TEvTaskProcessedResult"); + auto t = static_pointer_cast<IDataTasksProcessor::ITask>(ev->Get()->GetResult()); + Y_DEBUG_ABORT_UNLESS(dynamic_pointer_cast<IDataTasksProcessor::ITask>(ev->Get()->GetResult())); + if (!ScanIterator->Finished()) { + ScanIterator->Apply(t); + } + } + ContinueProcessing(); +} + +void TColumnShardScan::HandleScan(NKqp::TEvKqpCompute::TEvScanDataAck::TPtr& ev) { + auto g = Stats->MakeGuard("ack"); + Y_ABORT_UNLESS(!AckReceivedInstant); + AckReceivedInstant = TMonotonic::Now(); + + Y_ABORT_UNLESS(ev->Get()->Generation == ScanGen); + + ChunksLimiter = TChunksLimiter(ev->Get()->FreeSpace, ev->Get()->MaxChunksCount); + Y_ABORT_UNLESS(ev->Get()->MaxChunksCount == 1); + ACFL_DEBUG("event", "TEvScanDataAck")("info", ChunksLimiter.DebugString()); + if (ScanIterator) { + if (!!ScanIterator->GetAvailableResultsCount() && !*ScanIterator->GetAvailableResultsCount()) { + ScanCountersPool.OnEmptyAck(); + } else { + ScanCountersPool.OnNotEmptyAck(); + } + } + ContinueProcessing(); +} + +void TColumnShardScan::HandleScan(NKqp::TEvKqp::TEvAbortExecution::TPtr& ev) noexcept { + auto& msg = ev->Get()->Record; + const TString reason = ev->Get()->GetIssues().ToOneLineString(); + + auto prio = msg.GetStatusCode() == NYql::NDqProto::StatusIds::SUCCESS ? NActors::NLog::PRI_DEBUG : NActors::NLog::PRI_WARN; + LOG_LOG_S(*TlsActivationContext, prio, NKikimrServices::TX_COLUMNSHARD_SCAN, + "Scan " << ScanActorId << " got AbortExecution" + << " txId: " << TxId << " scanId: " << ScanId << " gen: " << ScanGen << " tablet: " << TabletId + << " code: " << NYql::NDqProto::StatusIds_StatusCode_Name(msg.GetStatusCode()) + << " reason: " << reason); + + AbortReason = std::move(reason); + Finish(NColumnShard::TScanCounters::EStatusFinish::ExternalAbort); +} + +void TColumnShardScan::HandleScan(TEvents::TEvUndelivered::TPtr& ev) { + ui32 eventType = ev->Get()->SourceType; + switch (eventType) { + case NKqp::TEvKqpCompute::TEvScanInitActor::EventType: + AbortReason = "init failed"; + break; + case NKqp::TEvKqpCompute::TEvScanData::EventType: + AbortReason = "failed to send data batch"; + break; + } + + LOG_WARN_S(*TlsActivationContext, NKikimrServices::TX_COLUMNSHARD_SCAN, + "Scan " << ScanActorId << " undelivered event: " << eventType + << " txId: " << TxId << " scanId: " << ScanId << " gen: " << ScanGen << " tablet: " << TabletId + << " reason: " << ev->Get()->Reason + << " description: " << AbortReason); + + Finish(NColumnShard::TScanCounters::EStatusFinish::UndeliveredEvent); +} + +void TColumnShardScan::HandleScan(TEvents::TEvWakeup::TPtr& /*ev*/) { + LOG_ERROR_S(*TlsActivationContext, NKikimrServices::TX_COLUMNSHARD_SCAN, + "Scan " << ScanActorId << " guard execution timeout" + << " txId: " << TxId << " scanId: " << ScanId << " gen: " << ScanGen << " tablet: " << TabletId); + + Finish(NColumnShard::TScanCounters::EStatusFinish::Deadline); +} + +bool TColumnShardScan::ProduceResults() noexcept { + auto g = Stats->MakeGuard("ProduceResults"); + TLogContextGuard gLogging(NActors::TLogContextBuilder::Build()("method", "produce result")); + + ACFL_DEBUG("stage", "start")("iterator", ScanIterator->DebugString()); + Y_ABORT_UNLESS(!Finished); + Y_ABORT_UNLESS(ScanIterator); + + if (ScanIterator->Finished()) { + ACFL_DEBUG("stage", "scan iterator is finished")("iterator", ScanIterator->DebugString()); + return false; + } + + if (!ChunksLimiter.HasMore()) { + ScanIterator->PrepareResults(); + ACFL_DEBUG("stage", "limit exhausted")("limit", ChunksLimiter.DebugString()); + return false; + } + + auto resultConclusion = ScanIterator->GetBatch(); + if (resultConclusion.IsFail()) { + ACFL_ERROR("stage", "got error")("iterator", ScanIterator->DebugString())("message", resultConclusion.GetErrorMessage()); + SendScanError(resultConclusion.GetErrorMessage()); + + ScanIterator.reset(); + Finish(NColumnShard::TScanCounters::EStatusFinish::IteratorInternalErrorResult); + return false; + } + + std::optional<TPartialReadResult> resultOpt = resultConclusion.DetachResult(); + if (!resultOpt) { + ACFL_DEBUG("stage", "no data is ready yet")("iterator", ScanIterator->DebugString()); + return false; + } + + auto& result = *resultOpt; + + if (!result.GetRecordsCount()) { + ACFL_DEBUG("stage", "got empty batch")("iterator", ScanIterator->DebugString()); + return true; + } + + auto& shardedBatch = result.GetShardedBatch(); + auto batch = shardedBatch.GetRecordBatch(); + int numRows = batch->num_rows(); + int numColumns = batch->num_columns(); + ACFL_DEBUG("stage", "ready result")("iterator", ScanIterator->DebugString())("columns", numColumns)("rows", result.GetRecordsCount()); + + AFL_VERIFY(DataFormat == NKikimrDataEvents::FORMAT_ARROW); + { + MakeResult(0); + if (shardedBatch.IsSharded()) { + AFL_INFO(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "compute_sharding_success")("count", shardedBatch.GetSplittedByShards().size())("info", ComputeShardingPolicy.DebugString()); + Result->SplittedBatches = shardedBatch.GetSplittedByShards(); + } else { + if (ComputeShardingPolicy.IsEnabled()) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "compute_sharding_problems")("info", ComputeShardingPolicy.DebugString()); + } + } + TMemoryProfileGuard mGuard("SCAN_PROFILE::RESULT::TO_KQP", IS_DEBUG_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD_SCAN_MEMORY)); + Result->ArrowBatch = shardedBatch.GetRecordBatch(); + Rows += batch->num_rows(); + Bytes += NArrow::GetTableDataSize(Result->ArrowBatch); + ACFL_DEBUG("stage", "data_format")("batch_size", NArrow::GetTableDataSize(Result->ArrowBatch))("num_rows", numRows)("batch_columns", JoinSeq(",", batch->schema()->field_names())); + } + if (CurrentLastReadKey) { + NArrow::NMerger::TSortableBatchPosition pNew(result.GetLastReadKey(), 0, result.GetLastReadKey()->schema()->field_names(), {}, ReadMetadataRange->IsDescSorted()); + NArrow::NMerger::TSortableBatchPosition pOld(CurrentLastReadKey, 0, CurrentLastReadKey->schema()->field_names(), {}, ReadMetadataRange->IsDescSorted()); + AFL_VERIFY(pOld < pNew)("old", pOld.DebugJson().GetStringRobust())("new", pNew.DebugJson().GetStringRobust()); + } + CurrentLastReadKey = result.GetLastReadKey(); + + Result->LastKey = ConvertLastKey(result.GetLastReadKey()); + SendResult(false, false); + ScanIterator->OnSentDataFromInterval(result.GetNotFinishedIntervalIdx()); + ACFL_DEBUG("stage", "finished")("iterator", ScanIterator->DebugString()); + return true; +} + +void TColumnShardScan::ContinueProcessing() { + if (!ScanIterator) { + ACFL_DEBUG("event", "ContinueProcessing")("stage", "iterator is not initialized"); + return; + } + // Send new results if there is available capacity + while (ScanIterator && ProduceResults()) { + } + + if (ScanIterator) { + // Switch to the next range if the current one is finished + if (ScanIterator->Finished()) { + if (ChunksLimiter.HasMore()) { + auto g = Stats->MakeGuard("Finish"); + MakeResult(); + SendResult(false, true); + ScanIterator.reset(); + Finish(NColumnShard::TScanCounters::EStatusFinish::Success); + } + } else { + while (true) { + TConclusion<bool> hasMoreData = ScanIterator->ReadNextInterval(); + if (hasMoreData.IsFail()) { + ACFL_ERROR("event", "ContinueProcessing")("error", hasMoreData.GetErrorMessage()); + ScanIterator.reset(); + SendScanError("iterator_error:" + hasMoreData.GetErrorMessage()); + return Finish(NColumnShard::TScanCounters::EStatusFinish::IteratorInternalErrorScan); + } else if (!*hasMoreData) { + break; + } + } + } + } + AFL_VERIFY(!ScanIterator || !ChunksLimiter.HasMore() || InFlightReads || ScanCountersPool.InWaiting())("scan_actor_id", ScanActorId)("tx_id", TxId)("scan_id", ScanId)("gen", ScanGen)("tablet", TabletId) + ("debug", ScanIterator->DebugString()); +} + +void TColumnShardScan::MakeResult(size_t reserveRows /*= 0*/) { + if (!Finished && !Result) { + Result = MakeHolder<NKqp::TEvKqpCompute::TEvScanData>(ScanId, ScanGen); + if (reserveRows) { + Y_ABORT_UNLESS(DataFormat != NKikimrDataEvents::FORMAT_ARROW); + Result->Rows.reserve(reserveRows); + } + } +} + +void TColumnShardScan::AddRow(const TConstArrayRef<TCell>& row) { + Result->Rows.emplace_back(TOwnedCellVec::Make(row)); + ++Rows; + + // NOTE: Some per-row overhead to deal with the case when no columns were requested + Bytes += std::max((ui64)8, (ui64)Result->Rows.back().DataSize()); +} + +NKikimr::TOwnedCellVec TColumnShardScan::ConvertLastKey(const std::shared_ptr<arrow::RecordBatch>& lastReadKey) { + Y_ABORT_UNLESS(lastReadKey, "last key must be passed"); + + struct TSingeRowWriter: public IRowWriter { + TOwnedCellVec Row; + bool Done = false; + void AddRow(const TConstArrayRef<TCell>& row) override { + Y_ABORT_UNLESS(!Done); + Row = TOwnedCellVec::Make(row); + Done = true; + } + } singleRowWriter; + NArrow::TArrowToYdbConverter converter(KeyYqlSchema, singleRowWriter); + TString errStr; + bool ok = converter.Process(*lastReadKey, errStr); + Y_ABORT_UNLESS(ok, "%s", errStr.c_str()); + + Y_ABORT_UNLESS(singleRowWriter.Done); + return singleRowWriter.Row; +} + +bool TColumnShardScan::SendResult(bool pageFault, bool lastBatch) { + if (Finished) { + return true; + } + + Result->PageFault = pageFault; + Result->PageFaults = PageFaults; + Result->Finished = lastBatch; + if (ScanIterator) { + Result->AvailablePacks = ScanIterator->GetAvailableResultsCount(); + } + TDuration totalElapsedTime = TDuration::Seconds(GetElapsedTicksAsSeconds()); + // Result->TotalTime = totalElapsedTime - LastReportedElapsedTime; + // TODO: Result->CpuTime = ... + LastReportedElapsedTime = totalElapsedTime; + + PageFaults = 0; + + LOG_DEBUG_S(*TlsActivationContext, NKikimrServices::TX_COLUMNSHARD_SCAN, + "Scan " << ScanActorId << " send ScanData to " << ScanComputeActorId + << " txId: " << TxId << " scanId: " << ScanId << " gen: " << ScanGen << " tablet: " << TabletId + << " bytes: " << Bytes << " rows: " << Rows << " page faults: " << Result->PageFaults + << " finished: " << Result->Finished << " pageFault: " << Result->PageFault + << " arrow schema:\n" << (Result->ArrowBatch ? Result->ArrowBatch->schema()->ToString() : "")); + + Finished = Result->Finished; + if (Finished) { + ALS_INFO(NKikimrServices::TX_COLUMNSHARD_SCAN) << + "Scanner finished " << ScanActorId << " and sent to " << ScanComputeActorId + << " packs: " << PacksSum << " txId: " << TxId << " scanId: " << ScanId << " gen: " << ScanGen << " tablet: " << TabletId + << " bytes: " << Bytes << "/" << BytesSum << " rows: " << Rows << "/" << RowsSum << " page faults: " << Result->PageFaults + << " finished: " << Result->Finished << " pageFault: " << Result->PageFault + << " stats:" << Stats->ToJson() << ";iterator:" << (ScanIterator ? ScanIterator->DebugString(false) : "NO"); + Result->StatsOnFinished = std::make_shared<TScanStatsOwner>(ScanIterator->GetStats()); + } else { + Y_ABORT_UNLESS(ChunksLimiter.Take(Bytes)); + Result->RequestedBytesLimitReached = !ChunksLimiter.HasMore(); + Y_ABORT_UNLESS(AckReceivedInstant); + ScanCountersPool.AckWaitingInfo(TMonotonic::Now() - *AckReceivedInstant); + } + AckReceivedInstant.reset(); + + Send(ScanComputeActorId, Result.Release(), IEventHandle::FlagTrackDelivery); // TODO: FlagSubscribeOnSession ? + + ReportStats(); + + return true; +} + +void TColumnShardScan::SendScanError(const TString& reason) { + AFL_VERIFY(reason); + const TString msg = TStringBuilder() << "Scan failed at tablet " << TabletId << ", reason: " + reason; + + auto ev = MakeHolder<NKqp::TEvKqpCompute::TEvScanError>(ScanGen, TabletId); + ev->Record.SetStatus(Ydb::StatusIds::GENERIC_ERROR); + auto issue = NYql::YqlIssue({}, NYql::TIssuesIds::KIKIMR_RESULT_UNAVAILABLE, msg); + NYql::IssueToMessage(issue, ev->Record.MutableIssues()->Add()); + + Send(ScanComputeActorId, ev.Release()); +} + +void TColumnShardScan::Finish(const NColumnShard::TScanCounters::EStatusFinish status) { + LOG_DEBUG_S(*TlsActivationContext, NKikimrServices::TX_COLUMNSHARD_SCAN, + "Scan " << ScanActorId << " finished for tablet " << TabletId); + + Send(ColumnShardActorId, new NColumnShard::TEvPrivate::TEvReadFinished(RequestCookie, TxId)); + AFL_VERIFY(StartInstant); + ScanCountersPool.OnScanDuration(status, TMonotonic::Now() - *StartInstant); + ReportStats(); + PassAway(); +} + +void TColumnShardScan::ReportStats() { + Send(ColumnShardActorId, new NColumnShard::TEvPrivate::TEvScanStats(Rows, Bytes)); + Rows = 0; + Bytes = 0; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/actor/actor.h b/ydb/core/tx/columnshard/engines/reader/actor/actor.h new file mode 100644 index 000000000000..33134f85bcab --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/actor/actor.h @@ -0,0 +1,184 @@ +#pragma once +#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/abstract.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_context.h> +#include <ydb/core/tx/columnshard/counters/scan.h> +#include <ydb/core/tx/conveyor/usage/events.h> +#include <ydb/core/tx/tracing/usage/tracing.h> +#include <ydb/core/kqp/compute_actor/kqp_compute_events.h> + +#include <ydb/core/formats/arrow/converter.h> + +#include <ydb/library/actors/core/log.h> +#include <ydb/library/actors/core/actor_bootstrapped.h> +#include <ydb/library/chunks_limiter/chunks_limiter.h> + +namespace NKikimr::NOlap::NReader { + +class TColumnShardScan: public TActorBootstrapped<TColumnShardScan>, NArrow::IRowWriter { +private: + TActorId ResourceSubscribeActorId; + TActorId ReadCoordinatorActorId; + const std::shared_ptr<IStoragesManager> StoragesManager; + std::optional<TMonotonic> StartInstant; +public: + static constexpr auto ActorActivityType() { + return NKikimrServices::TActivity::KQP_OLAP_SCAN; + } + +public: + virtual void PassAway() override; + + TColumnShardScan(const TActorId& columnShardActorId, const TActorId& scanComputeActorId, + const std::shared_ptr<IStoragesManager>& storagesManager, const TComputeShardingPolicy& computeShardingPolicy, + ui32 scanId, ui64 txId, ui32 scanGen, ui64 requestCookie, + ui64 tabletId, TDuration timeout, const TReadMetadataBase::TConstPtr& readMetadataRange, + NKikimrDataEvents::EDataFormat dataFormat, const NColumnShard::TScanCounters& scanCountersPool); + + void Bootstrap(const TActorContext& ctx); + +private: + STATEFN(StateScan) { + auto g = Stats->MakeGuard("processing"); + TLogContextGuard gLogging(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD_SCAN) + ("SelfId", SelfId())("TabletId", TabletId)("ScanId", ScanId)("TxId", TxId)("ScanGen", ScanGen) + ); + switch (ev->GetTypeRewrite()) { + hFunc(NKqp::TEvKqpCompute::TEvScanDataAck, HandleScan); + hFunc(NKqp::TEvKqp::TEvAbortExecution, HandleScan); + hFunc(TEvents::TEvUndelivered, HandleScan); + hFunc(TEvents::TEvWakeup, HandleScan); + hFunc(NConveyor::TEvExecution::TEvTaskProcessedResult, HandleScan); + default: + AFL_VERIFY(false)("unexpected_event", ev->GetTypeName()); + } + } + + void HandleScan(NConveyor::TEvExecution::TEvTaskProcessedResult::TPtr& ev); + + void HandleScan(NKqp::TEvKqpCompute::TEvScanDataAck::TPtr& ev); + + // Returns true if it was able to produce new batch + bool ProduceResults() noexcept; + + void ContinueProcessing(); + + void HandleScan(NKqp::TEvKqp::TEvAbortExecution::TPtr& ev) noexcept; + + void HandleScan(TEvents::TEvUndelivered::TPtr& ev); + + void HandleScan(TEvents::TEvWakeup::TPtr& /*ev*/); + +private: + void MakeResult(size_t reserveRows = 0); + + void AddRow(const TConstArrayRef<TCell>& row) override; + + TOwnedCellVec ConvertLastKey(const std::shared_ptr<arrow::RecordBatch>& lastReadKey); + + class TScanStatsOwner: public NKqp::TEvKqpCompute::IShardScanStats { + private: + YDB_READONLY_DEF(TReadStats, Stats); + public: + TScanStatsOwner(const TReadStats& stats) + : Stats(stats) { + + } + + virtual THashMap<TString, ui64> GetMetrics() const override { + THashMap<TString, ui64> result; + result["compacted_bytes"] = Stats.CompactedPortionsBytes; + result["inserted_bytes"] = Stats.InsertedPortionsBytes; + result["committed_bytes"] = Stats.CommittedPortionsBytes; + return result; + } + }; + + bool SendResult(bool pageFault, bool lastBatch); + + void SendScanError(const TString& reason); + + void Finish(const NColumnShard::TScanCounters::EStatusFinish status); + + void ReportStats(); + +private: + const TActorId ColumnShardActorId; + const TActorId ReadBlobsActorId; + const TActorId ScanComputeActorId; + std::optional<TMonotonic> AckReceivedInstant; + TActorId ScanActorId; + TActorId BlobCacheActorId; + const ui32 ScanId; + const ui64 TxId; + const ui32 ScanGen; + const ui64 RequestCookie; + const NKikimrDataEvents::EDataFormat DataFormat; + const ui64 TabletId; + + TReadMetadataBase::TConstPtr ReadMetadataRange; + std::unique_ptr<TScanIteratorBase> ScanIterator; + + std::vector<std::pair<TString, NScheme::TTypeInfo>> KeyYqlSchema; + const TSerializedTableRange TableRange; + const TSmallVec<bool> SkipNullKeys; + const TInstant Deadline; + NColumnShard::TConcreteScanCounters ScanCountersPool; + + TMaybe<TString> AbortReason; + + TChunksLimiter ChunksLimiter; + THolder<NKqp::TEvKqpCompute::TEvScanData> Result; + std::shared_ptr<arrow::RecordBatch> CurrentLastReadKey; + i64 InFlightReads = 0; + bool Finished = false; + + class TBlobStats { + private: + ui64 PartsCount = 0; + ui64 Bytes = 0; + TDuration ReadingDurationSum; + TDuration ReadingDurationMax; + NMonitoring::THistogramPtr BlobDurationsCounter; + NMonitoring::THistogramPtr ByteDurationsCounter; + public: + TBlobStats(const NMonitoring::THistogramPtr blobDurationsCounter, const NMonitoring::THistogramPtr byteDurationsCounter) + : BlobDurationsCounter(blobDurationsCounter) + , ByteDurationsCounter(byteDurationsCounter) { + + } + void Received(const TBlobRange& br, const TDuration d) { + ReadingDurationSum += d; + ReadingDurationMax = Max(ReadingDurationMax, d); + ++PartsCount; + Bytes += br.Size; + BlobDurationsCounter->Collect(d.MilliSeconds()); + ByteDurationsCounter->Collect((i64)d.MilliSeconds(), br.Size); + } + TString DebugString() const { + TStringBuilder sb; + if (PartsCount) { + sb << "p_count=" << PartsCount << ";"; + sb << "bytes=" << Bytes << ";"; + sb << "d_avg=" << ReadingDurationSum / PartsCount << ";"; + sb << "d_max=" << ReadingDurationMax << ";"; + } else { + sb << "NO_BLOBS;"; + } + return sb; + } + }; + + NTracing::TTraceClientGuard Stats; + const TComputeShardingPolicy ComputeShardingPolicy; + ui64 Rows = 0; + ui64 BytesSum = 0; + ui64 RowsSum = 0; + ui64 PacksSum = 0; + ui64 Bytes = 0; + ui32 PageFaults = 0; + TDuration LastReportedElapsedTime; +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/actor/ya.make b/ydb/core/tx/columnshard/engines/reader/actor/ya.make new file mode 100644 index 000000000000..c0b913a0c123 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/actor/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +SRCS( + actor.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/reader/abstract + ydb/core/kqp/compute_actor + ydb/library/yql/core/issue +) + +END() diff --git a/ydb/core/tx/columnshard/engines/reader/common/conveyor_task.cpp b/ydb/core/tx/columnshard/engines/reader/common/conveyor_task.cpp new file mode 100644 index 000000000000..26f14784a032 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/common/conveyor_task.cpp @@ -0,0 +1,9 @@ +#include "conveyor_task.h" + +namespace NKikimr::NOlap::NReader { + +bool IDataTasksProcessor::ITask::Apply(IDataReader& indexedDataRead) const { + return DoApply(indexedDataRead); +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/conveyor_task.h b/ydb/core/tx/columnshard/engines/reader/common/conveyor_task.h similarity index 70% rename from ydb/core/tx/columnshard/engines/reader/conveyor_task.h rename to ydb/core/tx/columnshard/engines/reader/common/conveyor_task.h index ef535257cfab..f29b19ecee59 100644 --- a/ydb/core/tx/columnshard/engines/reader/conveyor_task.h +++ b/ydb/core/tx/columnshard/engines/reader/common/conveyor_task.h @@ -2,11 +2,9 @@ #include <ydb/core/tx/conveyor/usage/abstract.h> #include <ydb/library/accessor/accessor.h> -namespace NKikimr::NOlap { -class IDataReader; -} +namespace NKikimr::NOlap::NReader { -namespace NKikimr::NColumnShard { +class IDataReader; class IDataTasksProcessor { public: @@ -14,7 +12,7 @@ class IDataTasksProcessor { private: using TBase = NConveyor::ITask; protected: - virtual bool DoApply(NOlap::IDataReader& indexedDataRead) const = 0; + virtual bool DoApply(IDataReader& indexedDataRead) const = 0; public: ITask(const std::optional<NActors::TActorId> ownerId = {}) : TBase(ownerId) { @@ -23,7 +21,7 @@ class IDataTasksProcessor { using TPtr = std::shared_ptr<ITask>; virtual ~ITask() = default; - bool Apply(NOlap::IDataReader& indexedDataRead) const; + bool Apply(IDataReader& indexedDataRead) const; }; }; diff --git a/ydb/core/tx/columnshard/engines/reader/description.cpp b/ydb/core/tx/columnshard/engines/reader/common/description.cpp similarity index 100% rename from ydb/core/tx/columnshard/engines/reader/description.cpp rename to ydb/core/tx/columnshard/engines/reader/common/description.cpp diff --git a/ydb/core/tx/columnshard/engines/reader/description.h b/ydb/core/tx/columnshard/engines/reader/common/description.h similarity index 93% rename from ydb/core/tx/columnshard/engines/reader/description.h rename to ydb/core/tx/columnshard/engines/reader/common/description.h index f05943bffa07..704b4bd101a9 100644 --- a/ydb/core/tx/columnshard/engines/reader/description.h +++ b/ydb/core/tx/columnshard/engines/reader/common/description.h @@ -1,8 +1,10 @@ #pragma once -#include <ydb/core/tx/program/program.h> +#include <ydb/core/tx/columnshard/common/snapshot.h> #include <ydb/core/tx/columnshard/engines/predicate/filter.h> +#include <ydb/core/tx/program/program.h> + #include <ydb/library/yql/dq/actors/protos/dq_stats.pb.h> -namespace NKikimr::NOlap { +namespace NKikimr::NOlap::NReader { // Describes read/scan request struct TReadDescription { diff --git a/ydb/core/tx/columnshard/engines/reader/queue.cpp b/ydb/core/tx/columnshard/engines/reader/common/queue.cpp similarity index 100% rename from ydb/core/tx/columnshard/engines/reader/queue.cpp rename to ydb/core/tx/columnshard/engines/reader/common/queue.cpp diff --git a/ydb/core/tx/columnshard/engines/reader/queue.h b/ydb/core/tx/columnshard/engines/reader/common/queue.h similarity index 100% rename from ydb/core/tx/columnshard/engines/reader/queue.h rename to ydb/core/tx/columnshard/engines/reader/common/queue.h diff --git a/ydb/core/tx/columnshard/engines/reader/common/result.cpp b/ydb/core/tx/columnshard/engines/reader/common/result.cpp new file mode 100644 index 000000000000..484165c67b54 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/common/result.cpp @@ -0,0 +1,51 @@ +#include "result.h" + +namespace NKikimr::NOlap::NReader { + +class TCurrentBatch { +private: + std::vector<TPartialReadResult> Results; + ui64 RecordsCount = 0; +public: + ui64 GetRecordsCount() const { + return RecordsCount; + } + + void AddChunk(TPartialReadResult&& res) { + RecordsCount += res.GetRecordsCount(); + Results.emplace_back(std::move(res)); + } + + void FillResult(std::vector<TPartialReadResult>& result) const { + if (Results.empty()) { + return; + } + for (auto&& i : Results) { + result.emplace_back(std::move(i)); + } + } +}; + +std::vector<TPartialReadResult> TPartialReadResult::SplitResults(std::vector<TPartialReadResult>&& resultsExt, const ui32 maxRecordsInResult) { + std::vector<TCurrentBatch> resultBatches; + TCurrentBatch currentBatch; + for (auto&& i : resultsExt) { + AFL_VERIFY(i.GetRecordsCount()); + currentBatch.AddChunk(std::move(i)); + if (currentBatch.GetRecordsCount() >= maxRecordsInResult) { + resultBatches.emplace_back(std::move(currentBatch)); + currentBatch = TCurrentBatch(); + } + } + if (currentBatch.GetRecordsCount()) { + resultBatches.emplace_back(std::move(currentBatch)); + } + + std::vector<TPartialReadResult> result; + for (auto&& i : resultBatches) { + i.FillResult(result); + } + return result; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/common/result.h b/ydb/core/tx/columnshard/engines/reader/common/result.h new file mode 100644 index 000000000000..2c3f698bf7d7 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/common/result.h @@ -0,0 +1,87 @@ +#pragma once +#include <ydb/core/tx/columnshard/common/snapshot.h> +#include <ydb/core/tx/columnshard/engines/predicate/filter.h> +#include <ydb/core/tx/columnshard/resource_subscriber/task.h> +#include <ydb/core/tx/program/program.h> + +#include <ydb/library/yql/dq/actors/protos/dq_stats.pb.h> +namespace NKikimr::NOlap::NReader { + +// Represents a batch of rows produced by ASC or DESC scan with applied filters and partial aggregation +class TPartialReadResult { +private: + YDB_READONLY_DEF(std::vector<std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>>, ResourcesGuards); + NArrow::TShardedRecordBatch ResultBatch; + + // This 1-row batch contains the last key that was read while producing the ResultBatch. + // NOTE: it might be different from the Key of last row in ResulBatch in case of filtering/aggregation/limit + std::shared_ptr<arrow::RecordBatch> LastReadKey; + YDB_READONLY_DEF(std::optional<ui32>, NotFinishedIntervalIdx); + +public: + void Cut(const ui32 limit) { + ResultBatch.Cut(limit); + } + + const arrow::Table& GetResultBatch() const { + return *ResultBatch.GetRecordBatch(); + } + + const std::shared_ptr<arrow::Table>& GetResultBatchPtrVerified() const { + AFL_VERIFY(ResultBatch.GetRecordBatch()); + return ResultBatch.GetRecordBatch(); + } + + const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& GetResourcesGuardOnly() const { + AFL_VERIFY(ResourcesGuards.size() == 1); + AFL_VERIFY(!!ResourcesGuards.front()); + return ResourcesGuards.front(); + } + + ui64 GetMemorySize() const { + return ResultBatch.GetMemorySize(); + } + + ui64 GetRecordsCount() const { + return ResultBatch.GetRecordsCount(); + } + + static std::vector<TPartialReadResult> SplitResults(std::vector<TPartialReadResult>&& resultsExt, const ui32 maxRecordsInResult); + + const NArrow::TShardedRecordBatch& GetShardedBatch() const { + return ResultBatch; + } + + const std::shared_ptr<arrow::RecordBatch>& GetLastReadKey() const { + return LastReadKey; + } + + explicit TPartialReadResult( + const std::vector<std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>>& resourcesGuards, + const NArrow::TShardedRecordBatch& batch, std::shared_ptr<arrow::RecordBatch> lastKey, const std::optional<ui32> notFinishedIntervalIdx) + : ResourcesGuards(resourcesGuards) + , ResultBatch(batch) + , LastReadKey(lastKey) + , NotFinishedIntervalIdx(notFinishedIntervalIdx) + { + for (auto&& i : ResourcesGuards) { + AFL_VERIFY(i); + } + Y_ABORT_UNLESS(ResultBatch.GetRecordsCount()); + Y_ABORT_UNLESS(LastReadKey); + Y_ABORT_UNLESS(LastReadKey->num_rows() == 1); + } + + explicit TPartialReadResult( + const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& resourcesGuards, + const NArrow::TShardedRecordBatch& batch, std::shared_ptr<arrow::RecordBatch> lastKey, const std::optional<ui32> notFinishedIntervalIdx) + : TPartialReadResult(std::vector<std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>>({resourcesGuards}), batch, lastKey, notFinishedIntervalIdx) { + AFL_VERIFY(resourcesGuards); + } + + explicit TPartialReadResult(const NArrow::TShardedRecordBatch& batch, std::shared_ptr<arrow::RecordBatch> lastKey, const std::optional<ui32> notFinishedIntervalIdx) + : TPartialReadResult(std::vector<std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>>(), batch, lastKey, notFinishedIntervalIdx) { + } +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/common/stats.cpp b/ydb/core/tx/columnshard/engines/reader/common/stats.cpp new file mode 100644 index 000000000000..36be742dd0f6 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/common/stats.cpp @@ -0,0 +1,28 @@ +#include "stats.h" +#include <ydb/library/actors/core/log.h> +#include <ydb/library/services/services.pb.h> + +namespace NKikimr::NOlap::NReader { + +void TReadStats::PrintToLog() { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN) + ("event", "statistic") + ("begin", BeginTimestamp) + ("index_granules", IndexGranules) + ("index_portions", IndexPortions) + ("index_batches", IndexBatches) + ("committed_batches", CommittedBatches) + ("schema_columns", SchemaColumns) + ("filter_columns", FilterColumns) + ("additional_columns", AdditionalColumns) + ("compacted_portions_bytes", CompactedPortionsBytes) + ("inserted_portions_bytes", InsertedPortionsBytes) + ("committed_portions_bytes", CommittedPortionsBytes) + ("data_filter_bytes", DataFilterBytes) + ("data_additional_bytes", DataAdditionalBytes) + ("delta_bytes", CompactedPortionsBytes + InsertedPortionsBytes + CommittedPortionsBytes - DataFilterBytes - DataAdditionalBytes) + ("selected_rows", SelectedRows) + ; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/common/stats.h b/ydb/core/tx/columnshard/engines/reader/common/stats.h new file mode 100644 index 000000000000..3feb8459cee0 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/common/stats.h @@ -0,0 +1,41 @@ +#pragma once +#include <util/datetime/base.h> +#include <util/system/types.h> + +namespace NKikimr::NOlap::NReader { + +struct TReadStats { + TInstant BeginTimestamp; + ui64 IndexGranules{0}; + ui64 IndexPortions{0}; + ui64 IndexBatches{0}; + ui64 CommittedBatches{0}; + ui64 CommittedPortionsBytes = 0; + ui64 InsertedPortionsBytes = 0; + ui64 CompactedPortionsBytes = 0; + ui64 DataFilterBytes{0}; + ui64 DataAdditionalBytes{0}; + + ui32 SchemaColumns = 0; + ui32 FilterColumns = 0; + ui32 AdditionalColumns = 0; + + ui32 SelectedRows = 0; + + TReadStats() + : BeginTimestamp(TInstant::Now()) { + } + + void PrintToLog(); + + ui64 GetReadBytes() const { + return CompactedPortionsBytes + InsertedPortionsBytes + CompactedPortionsBytes; + } + + TDuration Duration() { + return TInstant::Now() - BeginTimestamp; + } +}; + + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/common/ya.make b/ydb/core/tx/columnshard/engines/reader/common/ya.make new file mode 100644 index 000000000000..8c7beb01bd69 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/common/ya.make @@ -0,0 +1,16 @@ +LIBRARY() + +SRCS( + conveyor_task.cpp + queue.cpp + description.cpp + result.cpp + stats.cpp +) + +PEERDIR( + ydb/core/tx/program + ydb/core/formats/arrow/reader +) + +END() diff --git a/ydb/core/tx/columnshard/engines/reader/conveyor_task.cpp b/ydb/core/tx/columnshard/engines/reader/conveyor_task.cpp deleted file mode 100644 index 736dbcf5be71..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/conveyor_task.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "conveyor_task.h" -#include "read_context.h" - -namespace NKikimr::NColumnShard { - -bool IDataTasksProcessor::ITask::Apply(NOlap::IDataReader& indexedDataRead) const { - return DoApply(indexedDataRead); -} - -} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/column_assembler.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/column_assembler.cpp deleted file mode 100644 index 7ea68e1a3398..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/column_assembler.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include "column_assembler.h" -#include "plain_read_data.h" - -namespace NKikimr::NOlap::NPlainReader { - -bool TAssembleBatch::DoExecute() { - /// @warning The replace logic is correct only in assumption that predicate is applied over a part of ReplaceKey. - /// It's not OK to apply predicate before replacing key duplicates otherwise. - /// Assumption: dup(A, B) <=> PK(A) = PK(B) => Predicate(A) = Predicate(B) => all or no dups for PK(A) here - - auto batchConstructor = BuildBatchConstructor(FetchColumns->GetFilteredSchemaVerified()); - - Y_ABORT_UNLESS(batchConstructor.GetColumnsCount()); - - TPortionInfo::TPreparedBatchData::TAssembleOptions options; - auto addBatch = batchConstructor.AssembleTable(options); - Y_ABORT_UNLESS(addBatch); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN) - ("columns_count", addBatch->num_columns())("num_rows", addBatch->num_rows()); - Filter->Apply(addBatch); - Result = NArrow::ToBatch(addBatch, true); - - return true; -} - -bool TAssembleFFBatch::DoApply(IDataReader& /*owner*/) const { - Source->InitFetchStageData(Result); - return true; -} - -TAssembleBatch::TAssembleBatch(const std::shared_ptr<TSpecialReadContext>& context, const std::shared_ptr<TPortionInfo>& portionInfo, - const std::shared_ptr<IDataSource>& source, const std::shared_ptr<TColumnsSet>& columns, const THashMap<TBlobRange, TPortionInfo::TAssembleBlobInfo>& blobs, const std::shared_ptr<NArrow::TColumnFilter>& filter) - : TBase(context, portionInfo, source, std::move(blobs)) - , Filter(filter) - , TaskGuard(Context->GetCommonContext()->GetCounters().GetAssembleTasksGuard()) - , FetchColumns(columns) -{ - TBase::SetPriority(TBase::EPriority::High); -} - -} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/column_assembler.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/column_assembler.h deleted file mode 100644 index 9158620e0991..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/column_assembler.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once -#include "source.h" -#include <ydb/core/tx/columnshard/engines/reader/conveyor_task.h> -#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> -#include <ydb/core/tx/columnshard/counters/common/object_counter.h> -#include <ydb/core/tx/columnshard/counters/scan.h> -#include <ydb/core/formats/arrow/arrow_filter.h> -#include "filter_assembler.h" - -namespace NKikimr::NOlap::NPlainReader { -class TBatch; -class TAssembleBatch: public TAssemblerCommon, public NColumnShard::TMonitoringObjectsCounter<TAssembleBatch, true, true> { -private: - using TBase = TAssemblerCommon; - std::shared_ptr<NArrow::TColumnFilter> Filter; -protected: - std::shared_ptr<arrow::RecordBatch> Result; - const NColumnShard::TCounterGuard TaskGuard; - const std::shared_ptr<TColumnsSet> FetchColumns; - virtual bool DoExecute() override; -public: - virtual TString GetTaskClassIdentifier() const override { - return "PlainReader::TAssembleBatch"; - } - - TAssembleBatch(const std::shared_ptr<TSpecialReadContext>& context, const std::shared_ptr<TPortionInfo>& portionInfo, - const std::shared_ptr<IDataSource>& source, const std::shared_ptr<TColumnsSet>& columns, const THashMap<TBlobRange, TPortionInfo::TAssembleBlobInfo>& blobs, const std::shared_ptr<NArrow::TColumnFilter>& filter); -}; - -class TAssembleFFBatch: public TAssembleBatch { -private: - using TBase = TAssembleBatch; -protected: - virtual bool DoApply(IDataReader& owner) const override; -public: - using TBase::TBase; -}; -} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/constructor.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/constructor.cpp new file mode 100644 index 000000000000..87315949329a --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/constructor.cpp @@ -0,0 +1,42 @@ +#include "constructor.h" +#include "resolver.h" +#include "read_metadata.h" +#include <ydb/core/tx/columnshard/columnshard_impl.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +NKikimr::TConclusionStatus TIndexScannerConstructor::ParseProgram(const TVersionedIndex* vIndex, const NKikimrTxDataShard::TEvKqpScan& proto, TReadDescription& read) const { + AFL_VERIFY(vIndex); + auto& indexInfo = vIndex->GetSchema(Snapshot)->GetIndexInfo(); + TIndexColumnResolver columnResolver(indexInfo); + return TBase::ParseProgram(vIndex, proto.GetOlapProgramType(), proto.GetOlapProgram(), read, columnResolver); +} + +std::vector<TNameTypeInfo> TIndexScannerConstructor::GetPrimaryKeyScheme(const NColumnShard::TColumnShard* self) const { + auto& indexInfo = self->TablesManager.GetIndexInfo(Snapshot); + return indexInfo.GetPrimaryKeyColumns(); +} + +NKikimr::TConclusion<std::shared_ptr<TReadMetadataBase>> TIndexScannerConstructor::DoBuildReadMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const { + auto& insertTable = self->InsertTable; + auto& index = self->TablesManager.GetPrimaryIndex(); + if (!insertTable || !index) { + return std::shared_ptr<TReadMetadataBase>(); + } + + if (read.GetSnapshot().GetPlanStep() < self->GetMinReadStep()) { + return TConclusionStatus::Fail(TStringBuilder() << "Snapshot too old: " << read.GetSnapshot()); + } + + TDataStorageAccessor dataAccessor(insertTable, index); + auto readMetadata = std::make_shared<TReadMetadata>(index->CopyVersionedIndexPtr(), read.GetSnapshot(), + IsReverse ? TReadMetadataBase::ESorting::DESC : TReadMetadataBase::ESorting::ASC, read.GetProgram()); + + auto initResult = readMetadata->Init(read, dataAccessor); + if (!initResult) { + return initResult; + } + return dynamic_pointer_cast<TReadMetadataBase>(readMetadata); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/constructor.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/constructor.h new file mode 100644 index 000000000000..bb576fdbdc70 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/constructor.h @@ -0,0 +1,17 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/reader/abstract/constructor.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +class TIndexScannerConstructor: public IScannerConstructor { +private: + using TBase = IScannerConstructor; +protected: + virtual TConclusion<std::shared_ptr<TReadMetadataBase>> DoBuildReadMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const override; +public: + using TBase::TBase; + virtual TConclusionStatus ParseProgram(const TVersionedIndex* vIndex, const NKikimrTxDataShard::TEvKqpScan& proto, TReadDescription& read) const override; + virtual std::vector<TNameTypeInfo> GetPrimaryKeyScheme(const NColumnShard::TColumnShard* self) const override; +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/read_metadata.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/read_metadata.cpp new file mode 100644 index 000000000000..a664f71756c7 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/read_metadata.cpp @@ -0,0 +1,57 @@ +#include "read_metadata.h" +#include <ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/iterator.h> +#include <ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/plain_read_data.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +std::unique_ptr<TScanIteratorBase> TReadMetadata::StartScan(const std::shared_ptr<TReadContext>& readContext) const { + return std::make_unique<TColumnShardScanIterator>(readContext, readContext->GetReadMetadataPtrVerifiedAs<TReadMetadata>()); +} + +TConclusionStatus TReadMetadata::Init(const TReadDescription& readDescription, const TDataStorageAccessor& dataAccessor) { + SetPKRangesFilter(readDescription.PKRangesFilter); + + /// @note We could have column name changes between schema versions: + /// Add '1:foo', Drop '1:foo', Add '2:foo'. Drop should hide '1:foo' from reads. + /// It's expected that we have only one version on 'foo' in blob and could split them by schema {planStep:txId}. + /// So '1:foo' would be omitted in blob records for the column in new snapshots. And '2:foo' - in old ones. + /// It's not possible for blobs with several columns. There should be a special logic for them. + CommittedBlobs = dataAccessor.GetCommitedBlobs(readDescription, ResultIndexSchema->GetIndexInfo().GetReplaceKey()); + + SelectInfo = dataAccessor.Select(readDescription); + StatsMode = readDescription.StatsMode; + return TConclusionStatus::Success(); +} + +std::set<ui32> TReadMetadata::GetEarlyFilterColumnIds() const { + auto& indexInfo = ResultIndexSchema->GetIndexInfo(); + std::set<ui32> result; + for (auto&& i : GetProgram().GetEarlyFilterColumns()) { + auto id = indexInfo.GetColumnIdOptional(i); + if (id) { + result.emplace(*id); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("early_filter_column", i); + } + } + return result; +} + +std::set<ui32> TReadMetadata::GetPKColumnIds() const { + std::set<ui32> result; + auto& indexInfo = ResultIndexSchema->GetIndexInfo(); + for (auto&& i : indexInfo.GetPrimaryKeyColumns()) { + Y_ABORT_UNLESS(result.emplace(indexInfo.GetColumnId(i.first)).second); + } + return result; +} + +std::shared_ptr<IDataReader> TReadMetadata::BuildReader(const std::shared_ptr<TReadContext>& context) const { + return std::make_shared<TPlainReadData>(context); +} + +NArrow::NMerger::TSortableBatchPosition TReadMetadata::BuildSortedPosition(const NArrow::TReplaceKey& key) const { + return NArrow::NMerger::TSortableBatchPosition(key.ToBatch(GetReplaceKey()), 0, + GetReplaceKey()->field_names(), {}, IsDescSorted()); +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/read_metadata.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/read_metadata.h new file mode 100644 index 000000000000..8be1cf19a97c --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/read_metadata.h @@ -0,0 +1,87 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_context.h> +#include <ydb/core/formats/arrow/replace_key.h> +#include <ydb/core/tx/columnshard/engines/reader/common/stats.h> +#include <ydb/core/formats/arrow/reader/position.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +// Holds all metadata that is needed to perform read/scan +struct TReadMetadata : public TReadMetadataBase { + using TBase = TReadMetadataBase; +public: + using TConstPtr = std::shared_ptr<const TReadMetadata>; + + NArrow::NMerger::TSortableBatchPosition BuildSortedPosition(const NArrow::TReplaceKey& key) const; + std::shared_ptr<IDataReader> BuildReader(const std::shared_ptr<TReadContext>& context) const; + + bool HasProcessingColumnIds() const { + return GetProgram().HasProcessingColumnIds(); + } + + std::shared_ptr<TSelectInfo> SelectInfo; + NYql::NDqProto::EDqStatsMode StatsMode = NYql::NDqProto::EDqStatsMode::DQ_STATS_MODE_NONE; + std::vector<TCommittedBlob> CommittedBlobs; + std::shared_ptr<TReadStats> ReadStats; + + TReadMetadata(const std::shared_ptr<TVersionedIndex> info, const TSnapshot& snapshot, const ESorting sorting, const TProgramContainer& ssaProgram) + : TBase(info, sorting, ssaProgram, info->GetSchema(snapshot), snapshot) + , ReadStats(std::make_shared<TReadStats>()) + { + } + + virtual std::vector<TNameTypeInfo> GetKeyYqlSchema() const override { + return GetResultSchema()->GetIndexInfo().GetPrimaryKeyColumns(); + } + + TConclusionStatus Init(const TReadDescription& readDescription, const TDataStorageAccessor& dataAccessor); + + std::vector<std::string> GetColumnsOrder() const { + auto schema = GetResultSchema(); + std::vector<std::string> result; + for (auto&& i : schema->GetSchema()->fields()) { + result.emplace_back(i->name()); + } + return result; + } + + std::set<ui32> GetEarlyFilterColumnIds() const; + std::set<ui32> GetPKColumnIds() const; + + bool Empty() const { + Y_ABORT_UNLESS(SelectInfo); + return SelectInfo->PortionsOrderedPK.empty() && CommittedBlobs.empty(); + } + + size_t NumIndexedChunks() const { + Y_ABORT_UNLESS(SelectInfo); + return SelectInfo->NumChunks(); + } + + size_t NumIndexedBlobs() const { + Y_ABORT_UNLESS(SelectInfo); + return SelectInfo->Stats().Blobs; + } + + std::unique_ptr<TScanIteratorBase> StartScan(const std::shared_ptr<TReadContext>& readContext) const override; + + void Dump(IOutputStream& out) const override { + out << " index chunks: " << NumIndexedChunks() + << " index blobs: " << NumIndexedBlobs() + << " committed blobs: " << CommittedBlobs.size() + // << " with program steps: " << (Program ? Program->Steps.size() : 0) + << " at snapshot: " << GetRequestSnapshot().DebugString(); + TBase::Dump(out); + if (SelectInfo) { + out << ", " << *SelectInfo; + } + } + + friend IOutputStream& operator << (IOutputStream& out, const TReadMetadata& meta) { + meta.Dump(out); + return out; + } +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/resolver.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/resolver.cpp new file mode 100644 index 000000000000..2b90c5f2faa4 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/resolver.cpp @@ -0,0 +1,5 @@ +#include "resolver.h" + +namespace NKikimr::NOlap::NReader::NPlain { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/resolver.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/resolver.h new file mode 100644 index 000000000000..c5a2998a54c1 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/resolver.h @@ -0,0 +1,32 @@ +#pragma once +#include <ydb/core/tx/program/program.h> +#include <ydb/core/tx/columnshard/engines/scheme/index_info.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +class TIndexColumnResolver: public IColumnResolver { + const NOlap::TIndexInfo& IndexInfo; + +public: + explicit TIndexColumnResolver(const NOlap::TIndexInfo& indexInfo) + : IndexInfo(indexInfo) { + } + + virtual std::optional<ui32> GetColumnIdOptional(const TString& name) const override { + return IndexInfo.GetColumnIdOptional(name); + } + + TString GetColumnName(ui32 id, bool required) const override { + return IndexInfo.GetColumnName(id, required); + } + + const NTable::TScheme::TTableSchema& GetSchema() const override { + return IndexInfo; + } + + NSsa::TColumnInfo GetDefaultColumn() const override { + return NSsa::TColumnInfo::Original((ui32)NOlap::TIndexInfo::ESpecialColumn::PLAN_STEP, NOlap::TIndexInfo::SPEC_COL_PLAN_STEP); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/ya.make b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/ya.make new file mode 100644 index 000000000000..b91efa4346d8 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +SRCS( + constructor.cpp + resolver.cpp + read_metadata.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/reader/abstract +) + +END() diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/context.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/context.cpp deleted file mode 100644 index 930e91ad544d..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/context.cpp +++ /dev/null @@ -1,177 +0,0 @@ -#include "context.h" -#include "source.h" - -namespace NKikimr::NOlap::NPlainReader { - -std::shared_ptr<NKikimr::NOlap::NIndexedReader::TMergePartialStream> TSpecialReadContext::BuildMerger() const { - return std::make_shared<NIndexedReader::TMergePartialStream>(ReadMetadata->GetReplaceKey(), ProgramInputColumns->GetSchema(), CommonContext->IsReverse()); -} - -ui64 TSpecialReadContext::GetMemoryForSources(const std::map<ui32, std::shared_ptr<IDataSource>>& sources, const bool isExclusive) { - ui64 result = 0; - for (auto&& i : sources) { - auto fetchingPlan = GetColumnsFetchingPlan(i.second, isExclusive); - AFL_VERIFY(i.second->GetIntervalsCount()); - result += fetchingPlan->PredictRawBytes(i.second) / i.second->GetIntervalsCount(); - } - return result; -} - -std::shared_ptr<NKikimr::NOlap::NPlainReader::IFetchingStep> TSpecialReadContext::GetColumnsFetchingPlan(const std::shared_ptr<IDataSource>& source, const bool exclusiveSource) const { - const bool needSnapshots = !exclusiveSource || ReadMetadata->GetSnapshot() < source->GetRecordSnapshotMax(); - const bool partialUsageByPK = ReadMetadata->GetPKRangesFilter().IsPortionInPartialUsage(source->GetStartReplaceKey(), source->GetFinishReplaceKey(), ReadMetadata->GetIndexInfo()); - auto result = CacheFetchingScripts[needSnapshots ? 1 : 0][exclusiveSource ? 1 : 0][partialUsageByPK ? 1 : 0]; - if (!result) { - return std::make_shared<TBuildFakeSpec>(source->GetRecordsCount(), "fake"); - } - return result; -} - -std::shared_ptr<NKikimr::NOlap::NPlainReader::IFetchingStep> TSpecialReadContext::BuildColumnsFetchingPlan(const bool needSnapshots, const bool exclusiveSource, const bool partialUsageByPredicateExt) const { - std::shared_ptr<IFetchingStep> result = std::make_shared<TFakeStep>(); - std::shared_ptr<IFetchingStep> current = result; - const bool partialUsageByPredicate = partialUsageByPredicateExt && PredicateColumns->GetColumnsCount(); - if (!!IndexChecker) { - current = current->AttachNext(std::make_shared<TBlobsFetchingStep>(std::make_shared<TIndexesSet>(IndexChecker->GetIndexIds()))); - current = current->AttachNext(std::make_shared<TApplyIndexStep>(IndexChecker)); - } - if (!EFColumns->GetColumnsCount() && !partialUsageByPredicate) { - TColumnsSet columnsFetch = *FFColumns; - if (needSnapshots) { - columnsFetch = columnsFetch + *SpecColumns; - } - if (!exclusiveSource) { - columnsFetch = columnsFetch + *PKColumns + *SpecColumns; - } - if (columnsFetch.GetColumnsCount()) { - current = current->AttachNext(std::make_shared<TBlobsFetchingStep>(std::make_shared<TColumnsSet>(columnsFetch), "simple")); - current = current->AttachNext(std::make_shared<TAssemblerStep>(std::make_shared<TColumnsSet>(columnsFetch))); - } else { - return nullptr; - } - } else if (exclusiveSource) { - TColumnsSet columnsFetch = *EFColumns; - if (needSnapshots || FFColumns->Cross(*SpecColumns)) { - columnsFetch = columnsFetch + *SpecColumns; - } - if (partialUsageByPredicate) { - columnsFetch = columnsFetch + *PredicateColumns; - } - AFL_VERIFY(columnsFetch.GetColumnsCount()); - current = current->AttachNext(std::make_shared<TBlobsFetchingStep>(std::make_shared<TColumnsSet>(columnsFetch), "ef")); - - if (needSnapshots || FFColumns->Cross(*SpecColumns)) { - current = current->AttachNext(std::make_shared<TAssemblerStep>(SpecColumns)); - current = current->AttachNext(std::make_shared<TSnapshotFilter>()); - columnsFetch = columnsFetch - *SpecColumns; - } - if (partialUsageByPredicate) { - current = current->AttachNext(std::make_shared<TAssemblerStep>(PredicateColumns)); - current = current->AttachNext(std::make_shared<TPredicateFilter>()); - columnsFetch = columnsFetch - *PredicateColumns; - } - if (columnsFetch.GetColumnsCount()) { - current = current->AttachNext(std::make_shared<TAssemblerStep>(std::make_shared<TColumnsSet>(columnsFetch))); - } - for (auto&& i : ReadMetadata->GetProgram().GetSteps()) { - if (!i->IsFilterOnly()) { - break; - } - current = current->AttachNext(std::make_shared<TFilterProgramStep>(i)); - } - TColumnsSet columnsAdditionalFetch = *FFColumns - *EFColumns - *SpecColumns; - if (partialUsageByPredicate) { - columnsAdditionalFetch = columnsAdditionalFetch - *PredicateColumns; - } - if (columnsAdditionalFetch.GetColumnsCount()) { - current = current->AttachNext(std::make_shared<TBlobsFetchingStep>(std::make_shared<TColumnsSet>(columnsAdditionalFetch))); - current = current->AttachNext(std::make_shared<TAssemblerStep>(std::make_shared<TColumnsSet>(columnsAdditionalFetch))); - } - } else { - TColumnsSet columnsFetch = *MergeColumns + *EFColumns; - AFL_VERIFY(columnsFetch.GetColumnsCount()); - current = current->AttachNext(std::make_shared<TBlobsFetchingStep>(std::make_shared<TColumnsSet>(columnsFetch), "full")); - current = current->AttachNext(std::make_shared<TAssemblerStep>(SpecColumns)); - if (needSnapshots) { - current = current->AttachNext(std::make_shared<TSnapshotFilter>()); - } - current = current->AttachNext(std::make_shared<TAssemblerStep>(PKColumns)); - if (partialUsageByPredicate) { - current = current->AttachNext(std::make_shared<TPredicateFilter>()); - } - const TColumnsSet columnsFetchEF = columnsFetch - *SpecColumns - *PKColumns; - current = current->AttachNext(std::make_shared<TAssemblerStep>(std::make_shared<TColumnsSet>(columnsFetchEF))); - for (auto&& i : ReadMetadata->GetProgram().GetSteps()) { - if (!i->IsFilterOnly()) { - break; - } - current = current->AttachNext(std::make_shared<TFilterProgramStep>(i)); - } - const TColumnsSet columnsAdditionalFetch = *FFColumns - *EFColumns - *SpecColumns - *PKColumns - *PredicateColumns; - if (columnsAdditionalFetch.GetColumnsCount()) { - current = current->AttachNext(std::make_shared<TBlobsFetchingStep>(std::make_shared<TColumnsSet>(columnsAdditionalFetch))); - current = current->AttachNext(std::make_shared<TAssemblerStep>(std::make_shared<TColumnsSet>(columnsAdditionalFetch))); - } - } - return result->GetNextStep(); -} - -TSpecialReadContext::TSpecialReadContext(const std::shared_ptr<TReadContext>& commonContext) - : CommonContext(commonContext) -{ - ReadMetadata = dynamic_pointer_cast<const TReadMetadata>(CommonContext->GetReadMetadata()); - Y_ABORT_UNLESS(ReadMetadata); - Y_ABORT_UNLESS(ReadMetadata->SelectInfo); - - auto readSchema = ReadMetadata->GetLoadSchema(ReadMetadata->GetSnapshot()); - SpecColumns = std::make_shared<TColumnsSet>(TIndexInfo::GetSpecialColumnIdsSet(), ReadMetadata->GetIndexInfo(), readSchema); - IndexChecker = ReadMetadata->GetProgram().GetIndexChecker(); - { - auto predicateColumns = ReadMetadata->GetPKRangesFilter().GetColumnIds(ReadMetadata->GetIndexInfo()); - if (predicateColumns.size()) { - PredicateColumns = std::make_shared<TColumnsSet>(predicateColumns, ReadMetadata->GetIndexInfo(), readSchema); - } else { - PredicateColumns = std::make_shared<TColumnsSet>(); - } - } - { - auto efColumns = ReadMetadata->GetEarlyFilterColumnIds(); - if (efColumns.size()) { - EFColumns = std::make_shared<TColumnsSet>(efColumns, ReadMetadata->GetIndexInfo(), readSchema); - } else { - EFColumns = std::make_shared<TColumnsSet>(); - } - } - if (ReadMetadata->HasProcessingColumnIds()) { - FFColumns = std::make_shared<TColumnsSet>(ReadMetadata->GetProcessingColumnIds(), ReadMetadata->GetIndexInfo(), readSchema); - if (SpecColumns->Contains(*FFColumns) && !EFColumns->IsEmpty()) { - FFColumns = std::make_shared<TColumnsSet>(*EFColumns + *SpecColumns); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("ff_modified", FFColumns->DebugString()); - } else { - AFL_VERIFY(!FFColumns->Contains(*SpecColumns))("info", FFColumns->DebugString()); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("ff_first", FFColumns->DebugString()); - } - } else { - FFColumns = EFColumns; - } - if (FFColumns->IsEmpty()) { - ProgramInputColumns = SpecColumns; - } else { - ProgramInputColumns = FFColumns; - } - - PKColumns = std::make_shared<TColumnsSet>(ReadMetadata->GetPKColumnIds(), ReadMetadata->GetIndexInfo(), readSchema); - MergeColumns = std::make_shared<TColumnsSet>(*PKColumns + *SpecColumns); - - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("columns_context_info", DebugString()); - CacheFetchingScripts[0][0][0] = BuildColumnsFetchingPlan(false, false, false); - CacheFetchingScripts[0][1][0] = BuildColumnsFetchingPlan(false, true, false); - CacheFetchingScripts[1][0][0] = BuildColumnsFetchingPlan(true, false, false); - CacheFetchingScripts[1][1][0] = BuildColumnsFetchingPlan(true, true, false); - CacheFetchingScripts[0][0][1] = BuildColumnsFetchingPlan(false, false, true); - CacheFetchingScripts[0][1][1] = BuildColumnsFetchingPlan(false, true, true); - CacheFetchingScripts[1][0][1] = BuildColumnsFetchingPlan(true, false, true); - CacheFetchingScripts[1][1][1] = BuildColumnsFetchingPlan(true, true, true); -} - -} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/context.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/context.h deleted file mode 100644 index ff6f17216642..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/context.h +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once -#include "columns_set.h" -#include "fetching.h" -#include <ydb/core/tx/columnshard/engines/reader/read_context.h> -#include <ydb/core/tx/columnshard/engines/reader/read_filter_merger.h> - -namespace NKikimr::NOlap::NPlainReader { - -class IDataSource; - -class TSpecialReadContext { -private: - YDB_READONLY_DEF(std::shared_ptr<TReadContext>, CommonContext); - - YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, SpecColumns); - YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, MergeColumns); - YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, EFColumns); - YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, PredicateColumns); - YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, PKColumns); - YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, FFColumns); - YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, ProgramInputColumns); - - NIndexes::TIndexCheckerContainer IndexChecker; - TReadMetadata::TConstPtr ReadMetadata; - std::shared_ptr<TColumnsSet> EmptyColumns = std::make_shared<TColumnsSet>(); - std::shared_ptr<IFetchingStep> BuildColumnsFetchingPlan(const bool needSnapshotsFilter, const bool exclusiveSource, const bool partialUsageByPredicate) const; - std::array<std::array<std::array<std::shared_ptr<IFetchingStep>, 2>, 2>, 2> CacheFetchingScripts; -public: - ui64 GetMemoryForSources(const std::map<ui32, std::shared_ptr<IDataSource>>& sources, const bool isExclusive); - - const TReadMetadata::TConstPtr& GetReadMetadata() const { - return ReadMetadata; - } - - std::shared_ptr<NIndexedReader::TMergePartialStream> BuildMerger() const; - - TString DebugString() const { - return TStringBuilder() << - "ef=" << EFColumns->DebugString() << ";" << - "pk=" << PKColumns->DebugString() << ";" << - "ff=" << FFColumns->DebugString() << ";" << - "program_input=" << ProgramInputColumns->DebugString() - ; - } - - TSpecialReadContext(const std::shared_ptr<TReadContext>& commonContext); - - std::shared_ptr<IFetchingStep> GetColumnsFetchingPlan(const std::shared_ptr<IDataSource>& source, const bool exclusiveSource) const; -}; - -} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/fetching.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/fetching.cpp deleted file mode 100644 index 7f38c7dfc000..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/fetching.cpp +++ /dev/null @@ -1,98 +0,0 @@ -#include "fetching.h" -#include "source.h" -#include <ydb/core/tx/columnshard/engines/filter.h> -#include <ydb/core/formats/arrow/simple_arrays_cache.h> - -#include <ydb/library/yql/minikql/mkql_terminator.h> - -namespace NKikimr::NOlap::NPlainReader { - -bool TStepAction::DoApply(IDataReader& /*owner*/) const { - if (FinishedFlag) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "apply"); - Source->SetIsReady(); - } - return true; -} - -bool TStepAction::DoExecute() { - NMiniKQL::TThrowingBindTerminator bind; - while (Step) { - if (Source->IsEmptyData()) { - Source->Finalize(); - FinishedFlag = true; - return true; - } - if (!Step->ExecuteInplace(Source, Step)) { - return true; - } - if (Source->IsEmptyData()) { - Source->Finalize(); - FinishedFlag = true; - return true; - } - Step = Step->GetNextStep(); - } - Source->Finalize(); - FinishedFlag = true; - return true; -} - -bool TBlobsFetchingStep::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& step) const { - AFL_VERIFY((!!Columns) ^ (!!Indexes)); - - const bool startFetchingColumns = Columns ? source->StartFetchingColumns(source, step, Columns) : false; - const bool startFetchingIndexes = Indexes ? source->StartFetchingIndexes(source, step, Indexes) : false; - return !startFetchingColumns && !startFetchingIndexes; -} - -ui64 TBlobsFetchingStep::PredictRawBytes(const std::shared_ptr<IDataSource>& source) const { - if (Columns) { - return source->GetRawBytes(Columns->GetColumnIds()); - } else { - AFL_VERIFY(Indexes); - return source->GetIndexBytes(Indexes->GetIndexIdsSet()); - } -} - -bool TAssemblerStep::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& /*step*/) const { - source->AssembleColumns(Columns); - return true; -} - -bool TFilterProgramStep::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& /*step*/) const { - AFL_VERIFY(source); - AFL_VERIFY(Step); - AFL_VERIFY(source->GetStageData().GetTable()); - auto filter = Step->BuildFilter(source->GetStageData().GetTable()); - source->MutableStageData().AddFilter(filter); - return true; -} - -bool TPredicateFilter::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& /*step*/) const { - auto filter = source->GetContext()->GetReadMetadata()->GetPKRangesFilter().BuildFilter(source->GetStageData().GetTable()); - source->MutableStageData().AddFilter(filter); - return true; -} - -bool TSnapshotFilter::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& /*step*/) const { - auto filter = MakeSnapshotFilter(source->GetStageData().GetTable(), source->GetContext()->GetReadMetadata()->GetSnapshot()); - source->MutableStageData().AddFilter(filter); - return true; -} - -bool TBuildFakeSpec::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& /*step*/) const { - std::vector<std::shared_ptr<arrow::Array>> columns; - for (auto&& f : TIndexInfo::ArrowSchemaSnapshot()->fields()) { - columns.emplace_back(NArrow::TThreadSimpleArraysCache::GetConst(f->type(), std::make_shared<arrow::UInt64Scalar>(0), Count)); - } - source->MutableStageData().AddBatch(arrow::RecordBatch::Make(TIndexInfo::ArrowSchemaSnapshot(), Count, columns)); - return true; -} - -bool TApplyIndexStep::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& /*step*/) const { - source->ApplyIndex(IndexChecker); - return true; -} - -} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/fetching.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/fetching.h deleted file mode 100644 index 6446538535da..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/fetching.h +++ /dev/null @@ -1,220 +0,0 @@ -#pragma once -#include "columns_set.h" -#include <ydb/library/accessor/accessor.h> -#include <ydb/core/tx/columnshard/engines/scheme/index_info.h> -#include <ydb/core/tx/columnshard/engines/scheme/abstract_scheme.h> -#include <ydb/core/tx/columnshard/engines/reader/conveyor_task.h> -#include <ydb/core/tx/columnshard/engines/reader/read_metadata.h> - -namespace NKikimr::NOlap::NPlainReader { -class IDataSource; - -class IFetchingStep { -private: - std::shared_ptr<IFetchingStep> NextStep; - YDB_READONLY_DEF(TString, Name); - YDB_READONLY(ui32, Index, 0); - YDB_READONLY_DEF(TString, BranchName); -protected: - virtual bool DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& step) const = 0; - virtual TString DoDebugString() const { - return ""; - } -public: - virtual ~IFetchingStep() = default; - - std::shared_ptr<IFetchingStep> AttachNext(const std::shared_ptr<IFetchingStep>& nextStep) { - AFL_VERIFY(nextStep); - NextStep = nextStep; - nextStep->Index = Index + 1; - if (!nextStep->BranchName) { - nextStep->BranchName = BranchName; - } - return nextStep; - } - - virtual ui64 PredictRawBytes(const std::shared_ptr<IDataSource>& /*source*/) const { - return 0; - } - - bool ExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& step) const { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("scan_step", DebugString())("scan_step_idx", GetIndex()); - return DoExecuteInplace(source, step); - } - - const std::shared_ptr<IFetchingStep>& GetNextStep() const { - return NextStep; - } - - IFetchingStep(const TString& name, const TString& branchName = Default<TString>()) - : Name(name) - , BranchName(branchName) - { - - } - - TString DebugString() const { - TStringBuilder sb; - sb << "name=" << Name << ";" << DoDebugString() << ";branch=" << BranchName << ";"; - if (NextStep) { - sb << "next=" << NextStep->DebugString() << ";"; - } - return sb; - } -}; - -class TStepAction: public NColumnShard::IDataTasksProcessor::ITask { -private: - using TBase = NColumnShard::IDataTasksProcessor::ITask; - std::shared_ptr<IDataSource> Source; - std::shared_ptr<IFetchingStep> Step; - bool FinishedFlag = false; -protected: - virtual bool DoApply(IDataReader& /*owner*/) const override; - virtual bool DoExecute() override; -public: - virtual TString GetTaskClassIdentifier() const override { - return "STEP_ACTION"; - } - - TStepAction(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& step, const NActors::TActorId& ownerActorId) - : TBase(ownerActorId) - , Source(source) - , Step(step) - { - - } -}; - -class TBuildFakeSpec: public IFetchingStep { -private: - using TBase = IFetchingStep; - const ui32 Count = 0; -protected: - virtual bool DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& /*step*/) const override; -public: - TBuildFakeSpec(const ui32 count, const TString& nameBranch = "") - : TBase("FAKE_SPEC", nameBranch) - , Count(count) - { - AFL_VERIFY(Count); - } -}; - -class TFakeStep: public IFetchingStep { -private: - using TBase = IFetchingStep; -public: - virtual bool DoExecuteInplace(const std::shared_ptr<IDataSource>& /*source*/, const std::shared_ptr<IFetchingStep>& /*step*/) const override { - return true; - } - - TFakeStep() - : TBase("FAKE") - { - - } -}; - -class TApplyIndexStep: public IFetchingStep { -private: - using TBase = IFetchingStep; - const NIndexes::TIndexCheckerContainer IndexChecker; -protected: - virtual bool DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& /*step*/) const override; -public: - TApplyIndexStep(const NIndexes::TIndexCheckerContainer& indexChecker) - : TBase("APPLY_INDEX") - , IndexChecker(indexChecker) - { - - } -}; - -class TBlobsFetchingStep: public IFetchingStep { -private: - using TBase = IFetchingStep; - std::shared_ptr<TColumnsSet> Columns; - std::shared_ptr<TIndexesSet> Indexes; -protected: - virtual bool DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& step) const override; - virtual ui64 PredictRawBytes(const std::shared_ptr<IDataSource>& source) const override; - virtual TString DoDebugString() const override { - TStringBuilder sb; - if (Columns) { - sb << "columns=" << Columns->DebugString() << ";"; - } else { - sb << "indexes=" << Indexes->DebugString() << ";"; - } - return sb; - } -public: - TBlobsFetchingStep(const std::shared_ptr<TColumnsSet>& columns, const TString& nameBranch = "") - : TBase("FETCHING", nameBranch) - , Columns(columns) { - AFL_VERIFY(Columns); - AFL_VERIFY(Columns->GetColumnsCount()); - } - - TBlobsFetchingStep(const std::shared_ptr<TIndexesSet>& indexes, const TString& nameBranch = "") - : TBase("FETCHING", nameBranch) - , Indexes(indexes) { - AFL_VERIFY(Indexes); - AFL_VERIFY(Indexes->GetIndexesCount()); - } -}; - -class TAssemblerStep: public IFetchingStep { -private: - using TBase = IFetchingStep; - YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, Columns); - virtual TString DoDebugString() const override { - return TStringBuilder() << "columns=" << Columns->DebugString() << ";"; - } -public: - virtual bool DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& /*step*/) const override; - TAssemblerStep(const std::shared_ptr<TColumnsSet>& columns) - : TBase("ASSEMBLER") - , Columns(columns) - { - AFL_VERIFY(Columns); - } -}; - -class TFilterProgramStep: public IFetchingStep { -private: - using TBase = IFetchingStep; - std::shared_ptr<NSsa::TProgramStep> Step; -public: - virtual bool DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& step) const override; - TFilterProgramStep(const std::shared_ptr<NSsa::TProgramStep>& step) - : TBase("PROGRAM") - , Step(step) - { - - } -}; - -class TPredicateFilter: public IFetchingStep { -private: - using TBase = IFetchingStep; -public: - virtual bool DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& step) const override; - TPredicateFilter() - : TBase("PREDICATE") { - - } -}; - -class TSnapshotFilter: public IFetchingStep { -private: - using TBase = IFetchingStep; -public: - virtual bool DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<IFetchingStep>& step) const override; - TSnapshotFilter() - : TBase("SNAPSHOT") { - - } -}; - -} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/interval.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/interval.cpp deleted file mode 100644 index dce2a8a3e1a3..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/interval.cpp +++ /dev/null @@ -1,200 +0,0 @@ -#include "interval.h" -#include "scanner.h" -#include "plain_read_data.h" -#include <ydb/core/tx/conveyor/usage/service.h> - -namespace NKikimr::NOlap::NPlainReader { - -class TMergeTask: public NColumnShard::IDataTasksProcessor::ITask { -private: - using TBase = NColumnShard::IDataTasksProcessor::ITask; - std::shared_ptr<arrow::RecordBatch> ResultBatch; - std::shared_ptr<arrow::RecordBatch> LastPK; - const NColumnShard::TCounterGuard Guard; - std::shared_ptr<TSpecialReadContext> Context; - std::map<ui32, std::shared_ptr<IDataSource>> Sources; - std::shared_ptr<TMergingContext> MergingContext; - const ui32 IntervalIdx; - std::optional<NArrow::TShardedRecordBatch> ShardedBatch; - - void PrepareResultBatch() { - if (!ResultBatch || ResultBatch->num_rows() == 0) { - ResultBatch = nullptr; - LastPK = nullptr; - return; - } - { - ResultBatch = NArrow::ExtractColumns(ResultBatch, Context->GetProgramInputColumns()->GetColumnNamesVector()); - AFL_VERIFY(ResultBatch); - AFL_VERIFY((ui32)ResultBatch->num_columns() == Context->GetProgramInputColumns()->GetColumnNamesVector().size()); - NArrow::TStatusValidator::Validate(Context->GetReadMetadata()->GetProgram().ApplyProgram(ResultBatch)); - } - if (ResultBatch->num_rows()) { - const auto& shardingPolicy = Context->GetCommonContext()->GetComputeShardingPolicy(); - if (NArrow::THashConstructor::BuildHashUI64(ResultBatch, shardingPolicy.GetColumnNames(), "__compute_sharding_hash")) { - ShardedBatch = NArrow::TShardingSplitIndex::Apply(shardingPolicy.GetShardsCount(), ResultBatch, "__compute_sharding_hash"); - } else { - ShardedBatch = NArrow::TShardedRecordBatch(ResultBatch); - } - AFL_VERIFY(!!LastPK == !!ShardedBatch->GetRecordsCount())("lpk", !!LastPK)("sb", ShardedBatch->GetRecordsCount()); - } else { - ResultBatch = nullptr; - LastPK = nullptr; - } - } - - bool EmptyFiltersOnly() const { - for (auto&& [_, i] : Sources) { - if (!i->IsEmptyData()) { - return false; - } - } - return true; - } -protected: - virtual bool DoApply(NOlap::IDataReader& indexedDataRead) const override { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "DoApply")("interval_idx", MergingContext->GetIntervalIdx()); - auto& reader = static_cast<TPlainReadData&>(indexedDataRead); - reader.MutableScanner().OnIntervalResult(ShardedBatch, LastPK, IntervalIdx, reader); - return true; - } - virtual bool DoExecute() override { - if (MergingContext->IsExclusiveInterval()) { - ResultBatch = Sources.begin()->second->GetStageResult().GetBatch(); - if (ResultBatch && ResultBatch->num_rows()) { - LastPK = Sources.begin()->second->GetLastPK(); - ResultBatch = NArrow::ExtractColumnsValidate(ResultBatch, Context->GetProgramInputColumns()->GetColumnNamesVector()); - AFL_VERIFY(ResultBatch)("info", Context->GetProgramInputColumns()->GetSchema()->ToString()); - Context->GetCommonContext()->GetCounters().OnNoScanInterval(ResultBatch->num_rows()); - if (Context->GetCommonContext()->IsReverse()) { - ResultBatch = NArrow::ReverseRecords(ResultBatch); - } - PrepareResultBatch(); - } - Sources.clear(); - AFL_VERIFY(!!LastPK == (!!ResultBatch && ResultBatch->num_rows())); - return true; - } - if (EmptyFiltersOnly()) { - ResultBatch = NArrow::MakeEmptyBatch(Context->GetProgramInputColumns()->GetSchema()); - return true; - } - std::shared_ptr<NIndexedReader::TMergePartialStream> merger = Context->BuildMerger(); - for (auto&& [_, i] : Sources) { - if (auto rb = i->GetStageResult().GetBatch()) { - merger->AddSource(rb, i->GetStageResult().GetNotAppliedFilter()); - } - } - AFL_VERIFY(merger->GetSourcesCount() <= Sources.size()); - const ui32 originalSourcesCount = Sources.size(); - Sources.clear(); - - if (merger->GetSourcesCount() == 0) { - ResultBatch = nullptr; - return true; - } - - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "DoExecute")("interval_idx", MergingContext->GetIntervalIdx()); - merger->SkipToLowerBound(MergingContext->GetStart(), MergingContext->GetIncludeStart()); - std::optional<NIndexedReader::TSortableBatchPosition> lastResultPosition; - if (merger->GetSourcesCount() == 1) { - ResultBatch = merger->SingleSourceDrain(MergingContext->GetFinish(), MergingContext->GetIncludeFinish(), &lastResultPosition); - if (ResultBatch) { - Context->GetCommonContext()->GetCounters().OnLogScanInterval(ResultBatch->num_rows()); - AFL_VERIFY(ResultBatch->schema()->Equals(Context->GetProgramInputColumns()->GetSchema()))("res", ResultBatch->schema()->ToString())("ctx", Context->GetProgramInputColumns()->GetSchema()->ToString()); - } - if (MergingContext->GetIncludeFinish() && originalSourcesCount == 1) { - AFL_VERIFY(merger->IsEmpty())("merging_context_finish", MergingContext->GetFinish().DebugJson().GetStringRobust())("merger", merger->DebugString()); - } - } else { - auto rbBuilder = std::make_shared<NIndexedReader::TRecordBatchBuilder>(Context->GetProgramInputColumns()->GetSchema()->fields()); - merger->DrainCurrentTo(*rbBuilder, MergingContext->GetFinish(), MergingContext->GetIncludeFinish(), &lastResultPosition); - Context->GetCommonContext()->GetCounters().OnLinearScanInterval(rbBuilder->GetRecordsCount()); - ResultBatch = rbBuilder->Finalize(); - } - if (lastResultPosition) { - LastPK = lastResultPosition->ExtractSortingPosition(); - } - AFL_VERIFY(!!LastPK == (!!ResultBatch && ResultBatch->num_rows())); - PrepareResultBatch(); - return true; - } -public: - virtual TString GetTaskClassIdentifier() const override { - return "CS::MERGE_RESULT"; - } - - TMergeTask(std::shared_ptr<TMergingContext>&& mergingContext, const std::shared_ptr<TSpecialReadContext>& readContext, std::map<ui32, std::shared_ptr<IDataSource>>&& sources) - : TBase(readContext->GetCommonContext()->GetScanActorId()) - , Guard(readContext->GetCommonContext()->GetCounters().GetMergeTasksGuard()) - , Context(readContext) - , Sources(std::move(sources)) - , MergingContext(std::move(mergingContext)) - , IntervalIdx(MergingContext->GetIntervalIdx()) - { - for (auto&& s : Sources) { - AFL_VERIFY(s.second->IsDataReady()); - } - - } -}; - -void TFetchingInterval::ConstructResult() { - if (ReadySourcesCount.Val() != WaitSourcesCount || !ReadyGuards.Val()) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "skip_construct_result")("interval_idx", IntervalIdx); - return; - } else { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "start_construct_result")("interval_idx", IntervalIdx); - } - if (AtomicCas(&ResultConstructionInProgress, 1, 0)) { - auto task = std::make_shared<TMergeTask>(std::move(MergingContext), Context, std::move(Sources)); - task->SetPriority(NConveyor::ITask::EPriority::High); - NConveyor::TScanServiceOperator::SendTaskToExecute(task); - } -} - -void TFetchingInterval::OnInitResourcesGuard(const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& guard) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "allocated")("interval_idx", IntervalIdx); - AFL_VERIFY(guard); - AFL_VERIFY(!ResourcesGuard); - ResourcesGuard = guard; - AFL_VERIFY(ReadyGuards.Inc() <= 1); - ConstructResult(); -} - -void TFetchingInterval::OnSourceFetchStageReady(const ui32 /*sourceIdx*/) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "fetched")("interval_idx", IntervalIdx); - AFL_VERIFY(ReadySourcesCount.Inc() <= WaitSourcesCount); - ConstructResult(); -} - -TFetchingInterval::TFetchingInterval(const NIndexedReader::TSortableBatchPosition& start, const NIndexedReader::TSortableBatchPosition& finish, - const ui32 intervalIdx, const std::map<ui32, std::shared_ptr<IDataSource>>& sources, const std::shared_ptr<TSpecialReadContext>& context, - const bool includeFinish, const bool includeStart, const bool isExclusiveInterval) - : TTaskBase(0, context->GetMemoryForSources(sources, isExclusiveInterval), "", context->GetCommonContext()->GetResourcesTaskContext()) - , MergingContext(std::make_shared<TMergingContext>(start, finish, intervalIdx, includeFinish, includeStart, isExclusiveInterval)) - , Context(context) - , TaskGuard(Context->GetCommonContext()->GetCounters().GetResourcesAllocationTasksGuard()) - , Sources(sources) - , IntervalIdx(intervalIdx) -{ - Y_ABORT_UNLESS(Sources.size()); - for (auto&& [_, i] : Sources) { - if (!i->IsDataReady()) { - ++WaitSourcesCount; - } - i->RegisterInterval(*this); - } -} - -void TFetchingInterval::DoOnAllocationSuccess(const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& guard) { - AFL_VERIFY(guard); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("interval_idx", IntervalIdx)("event", "resources_allocated") - ("resources", guard->DebugString())("start", MergingContext->GetIncludeStart())("finish", MergingContext->GetIncludeFinish())("sources", Sources.size()); - for (auto&& [_, i] : Sources) { - i->InitFetchingPlan(Context->GetColumnsFetchingPlan(i, MergingContext->IsExclusiveInterval()), i, MergingContext->IsExclusiveInterval()); - } - OnInitResourcesGuard(guard); -} - -} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/interval.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/interval.h deleted file mode 100644 index 50f7fe76a807..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/interval.h +++ /dev/null @@ -1,116 +0,0 @@ -#pragma once -#include <ydb/core/tx/columnshard/engines/reader/read_filter_merger.h> -#include <ydb/core/tx/columnshard/resource_subscriber/task.h> -#include "source.h" - -namespace NKikimr::NOlap::NPlainReader { - -class TScanHead; - -class TMergingContext { -protected: - YDB_READONLY_DEF(NIndexedReader::TSortableBatchPosition, Start); - YDB_READONLY_DEF(NIndexedReader::TSortableBatchPosition, Finish); - YDB_READONLY(bool, IncludeFinish, true); - YDB_READONLY(bool, IncludeStart, false); - YDB_READONLY(ui32, IntervalIdx, 0); - bool IsExclusiveIntervalFlag = false; -public: - TMergingContext(const NIndexedReader::TSortableBatchPosition& start, const NIndexedReader::TSortableBatchPosition& finish, - const ui32 intervalIdx, const bool includeFinish, const bool includeStart, const bool isExclusiveInterval) - : Start(start) - , Finish(finish) - , IncludeFinish(includeFinish) - , IncludeStart(includeStart) - , IntervalIdx(intervalIdx) - , IsExclusiveIntervalFlag(isExclusiveInterval) - { - - } - - bool IsExclusiveInterval() const { - return IsExclusiveIntervalFlag; - } - - NJson::TJsonValue DebugJson() const { - NJson::TJsonValue result = NJson::JSON_MAP; - result.InsertValue("start", Start.DebugJson()); - result.InsertValue("idx", IntervalIdx); - result.InsertValue("finish", Finish.DebugJson()); - result.InsertValue("include_finish", IncludeFinish); - result.InsertValue("exclusive", IsExclusiveIntervalFlag); - return result; - } - -}; - -class TFetchingInterval: public TNonCopyable, public NResourceBroker::NSubscribe::ITask { -private: - using TTaskBase = NResourceBroker::NSubscribe::ITask; - std::shared_ptr<TMergingContext> MergingContext; - TAtomic ResultConstructionInProgress = 0; - std::shared_ptr<TSpecialReadContext> Context; - NColumnShard::TCounterGuard TaskGuard; - std::map<ui32, std::shared_ptr<IDataSource>> Sources; - void ConstructResult(); - - IDataSource& GetSourceVerified(const ui32 idx) { - auto it = Sources.find(idx); - Y_ABORT_UNLESS(it != Sources.end()); - return *it->second; - } - - std::shared_ptr<IDataSource> ExtractSourceVerified(const ui32 idx) { - auto it = Sources.find(idx); - Y_ABORT_UNLESS(it != Sources.end()); - auto result = it->second; - Sources.erase(it); - return result; - } - - std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard> ResourcesGuard; - const ui32 IntervalIdx; - TAtomicCounter ReadySourcesCount = 0; - TAtomicCounter ReadyGuards = 0; - ui32 WaitSourcesCount = 0; - void OnInitResourcesGuard(const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& guard); -protected: - virtual void DoOnAllocationSuccess(const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& guard) override; - -public: - ui32 GetIntervalIdx() const { - return IntervalIdx; - } - - const std::map<ui32, std::shared_ptr<IDataSource>>& GetSources() const { - return Sources; - } - - const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& GetResourcesGuard() const { - return ResourcesGuard; - } - - void Abort() { - for (auto&& i : Sources) { - i.second->Abort(); - } - } - - NJson::TJsonValue DebugJson() const { - NJson::TJsonValue result = NJson::JSON_MAP; - result.InsertValue("merging_context", MergingContext ? MergingContext->DebugJson() : ""); - auto& jsonSources = result.InsertValue("sources", NJson::JSON_ARRAY); - for (auto&& [_, i] : Sources) { - jsonSources.AppendValue(i->DebugJson()); - } - return result; - } - - void OnSourceFetchStageReady(const ui32 sourceIdx); - - TFetchingInterval(const NIndexedReader::TSortableBatchPosition& start, const NIndexedReader::TSortableBatchPosition& finish, - const ui32 intervalIdx, const std::map<ui32, std::shared_ptr<IDataSource>>& sources, const std::shared_ptr<TSpecialReadContext>& context, - const bool includeFinish, const bool includeStart, const bool isExclusiveInterval); -}; - -} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/columns_set.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/columns_set.cpp similarity index 89% rename from ydb/core/tx/columnshard/engines/reader/plain_reader/columns_set.cpp rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/columns_set.cpp index ee95b7e42fa1..f100c8f89041 100644 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/columns_set.cpp +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/columns_set.cpp @@ -2,7 +2,7 @@ #include <util/string/join.h> #include <ydb/core/tx/columnshard/engines/scheme/filtered_scheme.h> -namespace NKikimr::NOlap::NPlainReader { +namespace NKikimr::NOlap::NReader::NPlain { TString TColumnsSet::DebugString() const { return TStringBuilder() << "(" @@ -11,7 +11,7 @@ TString TColumnsSet::DebugString() const { << ");"; } -NKikimr::NOlap::NPlainReader::TColumnsSet TColumnsSet::operator-(const TColumnsSet& external) const { +NKikimr::NOlap::NReader::NPlain::TColumnsSet TColumnsSet::operator-(const TColumnsSet& external) const { if (external.IsEmpty() || IsEmpty()) { return *this; } @@ -30,7 +30,7 @@ NKikimr::NOlap::NPlainReader::TColumnsSet TColumnsSet::operator-(const TColumnsS return result; } -NKikimr::NOlap::NPlainReader::TColumnsSet TColumnsSet::operator+(const TColumnsSet& external) const { +NKikimr::NOlap::NReader::NPlain::TColumnsSet TColumnsSet::operator+(const TColumnsSet& external) const { if (external.IsEmpty()) { return *this; } diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/columns_set.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/columns_set.h similarity index 88% rename from ydb/core/tx/columnshard/engines/reader/plain_reader/columns_set.h rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/columns_set.h index 0bca398204e2..08d7ac103d80 100644 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/columns_set.h +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/columns_set.h @@ -4,7 +4,7 @@ #include <ydb/core/tx/columnshard/engines/scheme/abstract_scheme.h> #include <util/string/join.h> -namespace NKikimr::NOlap::NPlainReader { +namespace NKikimr::NOlap::NReader::NPlain { class TIndexesSet { private: @@ -83,6 +83,11 @@ class TColumnsSet { return *FilteredSchema; } + const std::shared_ptr<ISnapshotSchema>& GetFilteredSchemaPtrVerified() const { + AFL_VERIFY(FilteredSchema); + return FilteredSchema; + } + bool Contains(const std::shared_ptr<TColumnsSet>& columnsSet) const { if (!columnsSet) { return true; @@ -115,6 +120,16 @@ class TColumnsSet { return false; } + std::set<ui32> Intersect(const TColumnsSet& columnsSet) const { + std::set<ui32> result; + for (auto&& i : columnsSet.ColumnIds) { + if (ColumnIds.contains(i)) { + result.emplace(i); + } + } + return result; + } + bool IsEqual(const TColumnsSet& columnsSet) const { if (columnsSet.GetColumnIds().size() != ColumnIds.size()) { return false; diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/constructor.cpp similarity index 62% rename from ydb/core/tx/columnshard/engines/reader/plain_reader/constructor.cpp rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/constructor.cpp index a4ecce5de374..55810391516d 100644 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor.cpp +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/constructor.cpp @@ -1,18 +1,18 @@ #include "constructor.h" #include <ydb/core/tx/conveyor/usage/service.h> -namespace NKikimr::NOlap::NPlainReader { +namespace NKikimr::NOlap::NReader::NPlain { void TBlobsFetcherTask::DoOnDataReady(const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& /*resourcesGuard*/) { - Source->MutableStageData().AddBlobs(ExtractBlobsData()); - AFL_VERIFY(Step->GetNextStep()); - auto task = std::make_shared<TStepAction>(Source, Step->GetNextStep(), Context->GetCommonContext()->GetScanActorId()); + Source->MutableStageData().AddBlobs(Source->DecodeBlobAddresses(ExtractBlobsData())); + AFL_VERIFY(Step.Next()); + auto task = std::make_shared<TStepAction>(Source, std::move(Step), Context->GetCommonContext()->GetScanActorId()); NConveyor::TScanServiceOperator::SendTaskToExecute(task); } -bool TBlobsFetcherTask::DoOnError(const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) { +bool TBlobsFetcherTask::DoOnError(const TString& storageId, const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) { AFL_ERROR(NKikimrServices::TX_COLUMNSHARD_SCAN)("error_on_blob_reading", range.ToString())("scan_actor_id", Context->GetCommonContext()->GetScanActorId()) - ("status", status.GetErrorMessage())("status_code", status.GetStatus()); + ("status", status.GetErrorMessage())("status_code", status.GetStatus())("storage_id", storageId); NActors::TActorContext::AsActorContext().Send(Context->GetCommonContext()->GetScanActorId(), std::make_unique<NConveyor::TEvExecution::TEvTaskProcessedResult>(TConclusionStatus::Fail("cannot read blob range " + range.ToString()))); return false; diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/constructor.h similarity index 54% rename from ydb/core/tx/columnshard/engines/reader/plain_reader/constructor.h rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/constructor.h index 3b5ceca5200e..79e3e26c4e3c 100644 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/constructor.h +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/constructor.h @@ -1,25 +1,25 @@ #pragma once -#include <ydb/core/tx/columnshard/engines/reader/read_metadata.h> -#include <ydb/core/tx/columnshard/engines/reader/read_context.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_context.h> #include <ydb/core/tx/columnshard/engines/portions/column_record.h> #include <ydb/core/tx/columnshard/blobs_reader/task.h> #include <ydb/core/tx/columnshard/blob.h> #include "source.h" -namespace NKikimr::NOlap::NPlainReader { +namespace NKikimr::NOlap::NReader::NPlain { -class TBlobsFetcherTask: public NBlobOperations::NRead::ITask { +class TBlobsFetcherTask: public NBlobOperations::NRead::ITask, public NColumnShard::TMonitoringObjectsCounter<TBlobsFetcherTask> { private: using TBase = NBlobOperations::NRead::ITask; const std::shared_ptr<IDataSource> Source; - const std::shared_ptr<IFetchingStep> Step; + TFetchingScriptCursor Step; const std::shared_ptr<TSpecialReadContext> Context; virtual void DoOnDataReady(const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& resourcesGuard) override; - virtual bool DoOnError(const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) override; + virtual bool DoOnError(const TString& storageId, const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) override; public: TBlobsFetcherTask(const std::vector<std::shared_ptr<IBlobsReadingAction>>& readActions, const std::shared_ptr<IDataSource>& sourcePtr, - const std::shared_ptr<IFetchingStep>& step, const std::shared_ptr<TSpecialReadContext>& context, const TString& taskCustomer, const TString& externalTaskId) + const TFetchingScriptCursor& step, const std::shared_ptr<TSpecialReadContext>& context, const TString& taskCustomer, const TString& externalTaskId) : TBase(readActions, taskCustomer, externalTaskId) , Source(sourcePtr) , Step(step) diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/context.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/context.cpp new file mode 100644 index 000000000000..e6f7fe827f94 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/context.cpp @@ -0,0 +1,235 @@ +#include "context.h" +#include "source.h" + +namespace NKikimr::NOlap::NReader::NPlain { + +std::unique_ptr<NArrow::NMerger::TMergePartialStream> TSpecialReadContext::BuildMerger() const { + return std::make_unique<NArrow::NMerger::TMergePartialStream>(ReadMetadata->GetReplaceKey(), ProgramInputColumns->GetSchema(), CommonContext->IsReverse(), IIndexInfo::GetSpecialColumnNames()); +} + +ui64 TSpecialReadContext::GetMemoryForSources(const THashMap<ui32, std::shared_ptr<IDataSource>>& sources, const bool isExclusive) { + ui64 result = 0; + bool hasSequentialReadSources = false; + for (auto&& i : sources) { + auto fetchingPlan = GetColumnsFetchingPlan(i.second); + AFL_VERIFY(i.second->GetIntervalsCount()); + const ui64 sourceMemory = fetchingPlan->PredictRawBytes(i.second) / i.second->GetIntervalsCount(); + if (!i.second->IsSourceInMemory()) { + hasSequentialReadSources = true; + } + result += sourceMemory; + } + AFL_VERIFY(result); + if (hasSequentialReadSources) { + result += ReadSequentiallyBufferSize; + } else { + if (!isExclusive && !CommonContext->IsReverse()) { + result = 2 * result; // due to in time we will have data in original portion + data in merged(or reversed) interval + } + } + return result; +} + +std::shared_ptr<TFetchingScript> TSpecialReadContext::GetColumnsFetchingPlan(const std::shared_ptr<IDataSource>& source) const { + const bool needSnapshots = !source->GetExclusiveIntervalOnly() || ReadMetadata->GetRequestSnapshot() < source->GetRecordSnapshotMax() || !source->IsSourceInMemory(); + const bool partialUsageByPK = ReadMetadata->GetPKRangesFilter().IsPortionInPartialUsage(source->GetStartReplaceKey(), source->GetFinishReplaceKey(), ReadMetadata->GetIndexInfo()); + const bool useIndexes = (IndexChecker ? source->HasIndexes(IndexChecker->GetIndexIds()) : false); + if (auto result = CacheFetchingScripts[needSnapshots ? 1 : 0][(source->GetExclusiveIntervalOnly() && source->IsSourceInMemory()) ? 1 : 0][partialUsageByPK ? 1 : 0][useIndexes ? 1 : 0]) { + return result; + } + { + std::shared_ptr<TFetchingScript> result = std::make_shared<TFetchingScript>(); + result->SetBranchName("FAKE"); + result->AddStep(std::make_shared<TBuildFakeSpec>(source->GetRecordsCount())); + return result; + } +} + +std::shared_ptr<TFetchingScript> TSpecialReadContext::BuildColumnsFetchingPlan(const bool needSnapshots, const bool exclusiveSource, + const bool partialUsageByPredicateExt, const bool useIndexes) const { + std::shared_ptr<TFetchingScript> result = std::make_shared<TFetchingScript>(); + const bool partialUsageByPredicate = partialUsageByPredicateExt && PredicateColumns->GetColumnsCount(); + if (!!IndexChecker && useIndexes) { + result->AddStep(std::make_shared<TIndexBlobsFetchingStep>(std::make_shared<TIndexesSet>(IndexChecker->GetIndexIds()))); + result->AddStep(std::make_shared<TApplyIndexStep>(IndexChecker)); + } + if (!EFColumns->GetColumnsCount() && !partialUsageByPredicate) { + result->SetBranchName("simple"); + TColumnsSet columnsFetch = *FFColumns; + if (needSnapshots) { + columnsFetch = columnsFetch + *SpecColumns; + } + if (!exclusiveSource) { + columnsFetch = columnsFetch + *PKColumns + *SpecColumns; + } else { + if (columnsFetch.GetColumnsCount() == 1 && SpecColumns->Contains(columnsFetch)) { + return nullptr; + } + } + if (columnsFetch.GetColumnsCount()) { + result->AddStep(std::make_shared<TColumnBlobsFetchingStep>(std::make_shared<TColumnsSet>(columnsFetch))); + if (!exclusiveSource) { + result->AddStep(std::make_shared<TAssemblerStep>(std::make_shared<TColumnsSet>(*PKColumns + *SpecColumns), "LAST")); + auto additional = columnsFetch - (*PKColumns + *SpecColumns); + if (!additional.IsEmpty()) { + result->AddStep(std::make_shared<TOptionalAssemblerStep>(std::make_shared<TColumnsSet>(columnsFetch - (*PKColumns + *SpecColumns)), "LAST")); + } + } else { + result->AddStep(std::make_shared<TOptionalAssemblerStep>(std::make_shared<TColumnsSet>(columnsFetch), "LAST")); + } + } else { + return nullptr; + } + } else if (exclusiveSource) { + result->SetBranchName("exclusive"); + TColumnsSet columnsFetch = *EFColumns; + if (needSnapshots || FFColumns->Cross(*SpecColumns)) { + columnsFetch = columnsFetch + *SpecColumns; + } + if (partialUsageByPredicate) { + columnsFetch = columnsFetch + *PredicateColumns; + } + AFL_VERIFY(columnsFetch.GetColumnsCount()); + result->AddStep(std::make_shared<TColumnBlobsFetchingStep>(std::make_shared<TColumnsSet>(columnsFetch))); + + if (needSnapshots || FFColumns->Cross(*SpecColumns)) { + result->AddStep(std::make_shared<TAssemblerStep>(SpecColumns, "SPEC")); + result->AddStep(std::make_shared<TSnapshotFilter>()); + columnsFetch = columnsFetch - *SpecColumns; + } + if (partialUsageByPredicate) { + result->AddStep(std::make_shared<TAssemblerStep>(PredicateColumns, "PREDICATE")); + result->AddStep(std::make_shared<TPredicateFilter>()); + columnsFetch = columnsFetch - *PredicateColumns; + } + for (auto&& i : ReadMetadata->GetProgram().GetSteps()) { + if (!i->IsFilterOnly()) { + break; + } + TColumnsSet stepColumnIds(i->GetFilterOriginalColumnIds(), ReadMetadata->GetIndexInfo(), ReadMetadata->GetResultSchema()); + { + auto intersectionIds = columnsFetch.Intersect(stepColumnIds); + if (intersectionIds.size()) { + TColumnsSet intersection(intersectionIds, ReadMetadata->GetIndexInfo(), ReadMetadata->GetResultSchema()); + result->AddStep(std::make_shared<TOptionalAssemblerStep>(std::make_shared<TColumnsSet>(intersection), "EF")); + columnsFetch = columnsFetch - intersection; + } + } + result->AddStep(std::make_shared<TFilterProgramStep>(i)); + } + AFL_VERIFY(columnsFetch.IsEmpty()); + TColumnsSet columnsAdditionalFetch = *FFColumns - *EFColumns - *SpecColumns; + if (partialUsageByPredicate) { + columnsAdditionalFetch = columnsAdditionalFetch - *PredicateColumns; + } + if (columnsAdditionalFetch.GetColumnsCount()) { + result->AddStep(std::make_shared<TColumnBlobsFetchingStep>(std::make_shared<TColumnsSet>(columnsAdditionalFetch))); + result->AddStep(std::make_shared<TOptionalAssemblerStep>(std::make_shared<TColumnsSet>(columnsAdditionalFetch), "LAST")); + } + } else { + result->SetBranchName("merge"); + TColumnsSet columnsFetch = *MergeColumns + *EFColumns; + AFL_VERIFY(columnsFetch.GetColumnsCount()); + result->AddStep(std::make_shared<TColumnBlobsFetchingStep>(std::make_shared<TColumnsSet>(columnsFetch))); + result->AddStep(std::make_shared<TAssemblerStep>(SpecColumns, "SPEC")); + if (needSnapshots) { + result->AddStep(std::make_shared<TSnapshotFilter>()); + } + result->AddStep(std::make_shared<TAssemblerStep>(PKColumns, "PK")); + if (partialUsageByPredicate) { + result->AddStep(std::make_shared<TPredicateFilter>()); + } + TColumnsSet columnsFetchEF = columnsFetch - *SpecColumns - *PKColumns; + for (auto&& i : ReadMetadata->GetProgram().GetSteps()) { + if (!i->IsFilterOnly()) { + break; + } + TColumnsSet stepColumnIds(i->GetFilterOriginalColumnIds(), ReadMetadata->GetIndexInfo(), ReadMetadata->GetResultSchema()); + { + auto intersectionIds = columnsFetchEF.Intersect(stepColumnIds); + if (intersectionIds.size()) { + TColumnsSet intersection(intersectionIds, ReadMetadata->GetIndexInfo(), ReadMetadata->GetResultSchema()); + result->AddStep(std::make_shared<TOptionalAssemblerStep>(std::make_shared<TColumnsSet>(intersection), "EF")); + columnsFetchEF = columnsFetchEF - intersection; + } + } + result->AddStep(std::make_shared<TFilterProgramStep>(i)); + } + AFL_VERIFY(columnsFetchEF.IsEmpty()); + const TColumnsSet columnsAdditionalFetch = *FFColumns - *EFColumns - *SpecColumns - *PKColumns - *PredicateColumns; + if (columnsAdditionalFetch.GetColumnsCount()) { + result->AddStep(std::make_shared<TColumnBlobsFetchingStep>(std::make_shared<TColumnsSet>(columnsAdditionalFetch))); + result->AddStep(std::make_shared<TOptionalAssemblerStep>(std::make_shared<TColumnsSet>(columnsAdditionalFetch), "LAST")); + } + } + return result; +} + +TSpecialReadContext::TSpecialReadContext(const std::shared_ptr<TReadContext>& commonContext) + : CommonContext(commonContext) +{ + ReadMetadata = dynamic_pointer_cast<const TReadMetadata>(CommonContext->GetReadMetadata()); + Y_ABORT_UNLESS(ReadMetadata); + Y_ABORT_UNLESS(ReadMetadata->SelectInfo); + + auto readSchema = ReadMetadata->GetResultSchema(); + SpecColumns = std::make_shared<TColumnsSet>(TIndexInfo::GetSpecialColumnIdsSet(), ReadMetadata->GetIndexInfo(), readSchema); + IndexChecker = ReadMetadata->GetProgram().GetIndexChecker(); + { + auto predicateColumns = ReadMetadata->GetPKRangesFilter().GetColumnIds(ReadMetadata->GetIndexInfo()); + if (predicateColumns.size()) { + PredicateColumns = std::make_shared<TColumnsSet>(predicateColumns, ReadMetadata->GetIndexInfo(), readSchema); + } else { + PredicateColumns = std::make_shared<TColumnsSet>(); + } + } + { + auto efColumns = ReadMetadata->GetEarlyFilterColumnIds(); + if (efColumns.size()) { + EFColumns = std::make_shared<TColumnsSet>(efColumns, ReadMetadata->GetIndexInfo(), readSchema); + } else { + EFColumns = std::make_shared<TColumnsSet>(); + } + } + if (ReadMetadata->HasProcessingColumnIds()) { + FFColumns = std::make_shared<TColumnsSet>(ReadMetadata->GetProcessingColumnIds(), ReadMetadata->GetIndexInfo(), readSchema); + if (SpecColumns->Contains(*FFColumns) && !EFColumns->IsEmpty()) { + FFColumns = std::make_shared<TColumnsSet>(*EFColumns + *SpecColumns); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("ff_modified", FFColumns->DebugString()); + } else { + AFL_VERIFY(!FFColumns->Contains(*SpecColumns))("info", FFColumns->DebugString()); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("ff_first", FFColumns->DebugString()); + } + } else { + FFColumns = EFColumns; + } + if (FFColumns->IsEmpty()) { + ProgramInputColumns = SpecColumns; + } else { + ProgramInputColumns = FFColumns; + } + + PKColumns = std::make_shared<TColumnsSet>(ReadMetadata->GetPKColumnIds(), ReadMetadata->GetIndexInfo(), readSchema); + MergeColumns = std::make_shared<TColumnsSet>(*PKColumns + *SpecColumns); + + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("columns_context_info", DebugString()); + CacheFetchingScripts[0][0][0][0] = BuildColumnsFetchingPlan(false, false, false, false); + CacheFetchingScripts[0][1][0][0] = BuildColumnsFetchingPlan(false, true, false, false); + CacheFetchingScripts[1][0][0][0] = BuildColumnsFetchingPlan(true, false, false, false); + CacheFetchingScripts[1][1][0][0] = BuildColumnsFetchingPlan(true, true, false, false); + CacheFetchingScripts[0][0][1][0] = BuildColumnsFetchingPlan(false, false, true, false); + CacheFetchingScripts[0][1][1][0] = BuildColumnsFetchingPlan(false, true, true, false); + CacheFetchingScripts[1][0][1][0] = BuildColumnsFetchingPlan(true, false, true, false); + CacheFetchingScripts[1][1][1][0] = BuildColumnsFetchingPlan(true, true, true, false); + + CacheFetchingScripts[0][0][0][1] = BuildColumnsFetchingPlan(false, false, false, true); + CacheFetchingScripts[0][1][0][1] = BuildColumnsFetchingPlan(false, true, false, true); + CacheFetchingScripts[1][0][0][1] = BuildColumnsFetchingPlan(true, false, false, true); + CacheFetchingScripts[1][1][0][1] = BuildColumnsFetchingPlan(true, true, false, true); + CacheFetchingScripts[0][0][1][1] = BuildColumnsFetchingPlan(false, false, true, true); + CacheFetchingScripts[0][1][1][1] = BuildColumnsFetchingPlan(false, true, true, true); + CacheFetchingScripts[1][0][1][1] = BuildColumnsFetchingPlan(true, false, true, true); + CacheFetchingScripts[1][1][1][1] = BuildColumnsFetchingPlan(true, true, true, true); +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/context.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/context.h new file mode 100644 index 000000000000..dc46c4b70b19 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/context.h @@ -0,0 +1,61 @@ +#pragma once +#include "columns_set.h" +#include "fetching.h" +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_context.h> +#include <ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/read_metadata.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> +#include <ydb/core/formats/arrow/reader/merger.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +class IDataSource; + +class TSpecialReadContext { +private: + YDB_READONLY_DEF(std::shared_ptr<TReadContext>, CommonContext); + + YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, SpecColumns); + YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, MergeColumns); + YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, EFColumns); + YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, PredicateColumns); + YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, PKColumns); + YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, FFColumns); + YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, ProgramInputColumns); + + NIndexes::TIndexCheckerContainer IndexChecker; + TReadMetadata::TConstPtr ReadMetadata; + std::shared_ptr<TColumnsSet> EmptyColumns = std::make_shared<TColumnsSet>(); + std::shared_ptr<TFetchingScript> BuildColumnsFetchingPlan(const bool needSnapshotsFilter, const bool exclusiveSource, const bool partialUsageByPredicate, const bool useIndexes) const; + std::array<std::array<std::array<std::array<std::shared_ptr<TFetchingScript>, 2>, 2>, 2>, 2> CacheFetchingScripts; +public: + static const inline ui64 DefaultRejectMemoryIntervalLimit = ((ui64)3) << 30; + static const inline ui64 DefaultReduceMemoryIntervalLimit = DefaultRejectMemoryIntervalLimit; + static const inline ui64 DefaultReadSequentiallyBufferSize = ((ui64)8) << 20; + + const ui64 ReduceMemoryIntervalLimit = NYDBTest::TControllers::GetColumnShardController()->GetReduceMemoryIntervalLimit(DefaultReduceMemoryIntervalLimit); + const ui64 RejectMemoryIntervalLimit = NYDBTest::TControllers::GetColumnShardController()->GetRejectMemoryIntervalLimit(DefaultRejectMemoryIntervalLimit); + const ui64 ReadSequentiallyBufferSize = DefaultReadSequentiallyBufferSize; + + ui64 GetMemoryForSources(const THashMap<ui32, std::shared_ptr<IDataSource>>& sources, const bool isExclusive); + + const TReadMetadata::TConstPtr& GetReadMetadata() const { + return ReadMetadata; + } + + std::unique_ptr<NArrow::NMerger::TMergePartialStream> BuildMerger() const; + + TString DebugString() const { + return TStringBuilder() << + "ef=" << EFColumns->DebugString() << ";" << + "pk=" << PKColumns->DebugString() << ";" << + "ff=" << FFColumns->DebugString() << ";" << + "program_input=" << ProgramInputColumns->DebugString() + ; + } + + TSpecialReadContext(const std::shared_ptr<TReadContext>& commonContext); + + std::shared_ptr<TFetchingScript> GetColumnsFetchingPlan(const std::shared_ptr<IDataSource>& source) const; +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/fetched_data.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetched_data.cpp similarity index 53% rename from ydb/core/tx/columnshard/engines/reader/plain_reader/fetched_data.cpp rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetched_data.cpp index d4f1a808b742..3b434b67cc50 100644 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/fetched_data.cpp +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetched_data.cpp @@ -1,16 +1,17 @@ #include "fetched_data.h" #include <ydb/core/formats/arrow/simple_arrays_cache.h> #include <ydb/core/formats/arrow/common/validation.h> +#include <ydb/core/formats/arrow/common/accessor.h> namespace NKikimr::NOlap { void TFetchedData::SyncTableColumns(const std::vector<std::shared_ptr<arrow::Field>>& fields) { for (auto&& i : fields) { - if (Table->GetColumnByName(i->name())) { + if (Table->GetSchema()->GetFieldByName(i->name())) { continue; } - Table = NArrow::TStatusValidator::GetValid(Table->AddColumn(Table->num_columns(), i, - std::make_shared<arrow::ChunkedArray>(NArrow::TThreadSimpleArraysCache::GetNull(i->type(), Table->num_rows())))); + Table->AddField(i, std::make_shared<NArrow::NAccessor::TTrivialArray>(NArrow::TThreadSimpleArraysCache::GetNull(i->type(), Table->num_rows()))) + .Validate(); } } diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/fetched_data.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetched_data.h similarity index 62% rename from ydb/core/tx/columnshard/engines/reader/plain_reader/fetched_data.h rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetched_data.h index e31f51bd0dac..f1575baaf9cc 100644 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/fetched_data.h +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetched_data.h @@ -2,7 +2,9 @@ #include <contrib/libs/apache/arrow/cpp/src/arrow/table.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> #include <ydb/core/formats/arrow/arrow_filter.h> +#include <ydb/core/formats/arrow/common/container.h> #include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/blobs_reader/task.h> #include <ydb/core/tx/columnshard/engines/portions/portion_info.h> #include <ydb/library/accessor/accessor.h> #include <ydb/library/actors/core/log.h> @@ -11,9 +13,9 @@ namespace NKikimr::NOlap { class TFetchedData { protected: - using TBlobs = THashMap<TBlobRange, TPortionInfo::TAssembleBlobInfo>; + using TBlobs = THashMap<TChunkAddress, TPortionInfo::TAssembleBlobInfo>; YDB_ACCESSOR_DEF(TBlobs, Blobs); - YDB_READONLY_DEF(std::shared_ptr<arrow::Table>, Table); + YDB_READONLY_DEF(std::shared_ptr<NArrow::TGeneralContainer>, Table); YDB_READONLY_DEF(std::shared_ptr<NArrow::TColumnFilter>, Filter); YDB_READONLY(bool, UseFilter, false); public: @@ -33,8 +35,8 @@ class TFetchedData { return UseFilter ? nullptr : Filter; } - TString ExtractBlob(const TBlobRange& bRange) { - auto it = Blobs.find(bRange); + TString ExtractBlob(const TChunkAddress& address) { + auto it = Blobs.find(address); AFL_VERIFY(it != Blobs.end()); AFL_VERIFY(it->second.IsBlob()); auto result = it->second.GetData(); @@ -42,24 +44,20 @@ class TFetchedData { return result; } - void AddBlobs(THashMap<TBlobRange, TString>&& blobs) { - for (auto&& i : blobs) { + void AddBlobs(THashMap<TChunkAddress, TString>&& blobData) { + for (auto&& i : blobData) { AFL_VERIFY(Blobs.emplace(i.first, std::move(i.second)).second); } } - void AddNulls(THashMap<TBlobRange, ui32>&& blobs) { + void AddNulls(THashMap<TChunkAddress, ui32>&& blobs) { for (auto&& i : blobs) { AFL_VERIFY(Blobs.emplace(i.first, i.second).second); } } - bool IsEmptyFilter() const { - return Filter && Filter->IsTotalDenyFilter(); - } - bool IsEmpty() const { - return IsEmptyFilter() || (Table && !Table->num_rows()); + return (Filter && Filter->IsTotalDenyFilter()) || (Table && !Table->num_rows()); } void AddFilter(const std::shared_ptr<NArrow::TColumnFilter>& filter) { @@ -86,15 +84,30 @@ class TFetchedData { return AddBatch(arrow::Table::Make(batch->schema(), batch->columns(), batch->num_rows())); } + void AddBatch(const std::shared_ptr<NArrow::TGeneralContainer>& table) { + AFL_VERIFY(table); + if (UseFilter) { + AddBatch(table->BuildTable()); + } else { + if (!Table) { + Table = table; + } else { + auto mergeResult = Table->MergeColumnsStrictly(*table); + AFL_VERIFY(mergeResult.IsSuccess())("error", mergeResult.GetErrorMessage()); + } + } + } + void AddBatch(const std::shared_ptr<arrow::Table>& table) { auto tableLocal = table; if (Filter && UseFilter) { AFL_VERIFY(Filter->Apply(tableLocal)); } if (!Table) { - Table = tableLocal; + Table = std::make_shared<NArrow::TGeneralContainer>(tableLocal); } else { - AFL_VERIFY(NArrow::MergeBatchColumns({Table, tableLocal}, Table)); + auto mergeResult = Table->MergeColumnsStrictly(NArrow::TGeneralContainer(tableLocal)); + AFL_VERIFY(mergeResult.IsSuccess())("error", mergeResult.GetErrorMessage()); } } @@ -102,14 +115,16 @@ class TFetchedData { class TFetchedResult { private: - YDB_READONLY_DEF(std::shared_ptr<arrow::RecordBatch>, Batch); + YDB_READONLY_DEF(std::shared_ptr<NArrow::TGeneralContainer>, Batch); YDB_READONLY_DEF(std::shared_ptr<NArrow::TColumnFilter>, NotAppliedFilter); public: TFetchedResult(std::unique_ptr<TFetchedData>&& data) - : NotAppliedFilter(data->GetNotAppliedFilter()) { - if (data->GetTable()) { - Batch = NArrow::ToBatch(data->GetTable(), true); - } + : Batch(data->GetTable()) + , NotAppliedFilter(data->GetNotAppliedFilter()) { + } + + bool IsEmpty() const { + return !Batch || Batch->num_rows() == 0 || (NotAppliedFilter && NotAppliedFilter->IsTotalDenyFilter()); } }; diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetching.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetching.cpp new file mode 100644 index 000000000000..daef4343318e --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetching.cpp @@ -0,0 +1,141 @@ +#include "fetching.h" +#include "source.h" +#include <ydb/core/tx/columnshard/engines/filter.h> +#include <ydb/core/formats/arrow/simple_arrays_cache.h> + +#include <ydb/library/yql/minikql/mkql_terminator.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +bool TStepAction::DoApply(IDataReader& /*owner*/) const { + if (FinishedFlag) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "apply"); + Source->SetIsReady(); + } + return true; +} + +bool TStepAction::DoExecute() { + if (Source->IsAborted()) { + return true; + } + auto executeResult = Cursor.Execute(Source); + if (!executeResult) { + SetErrorMessage(executeResult.GetErrorMessage()); + return false; + } + if (*executeResult) { + Source->Finalize(); + FinishedFlag = true; + } + return true; +} + +TConclusion<bool> TColumnBlobsFetchingStep::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const { + return !source->StartFetchingColumns(source, step, Columns); +} + +ui64 TColumnBlobsFetchingStep::DoPredictRawBytes(const std::shared_ptr<IDataSource>& source) const { + const ui64 result = source->GetColumnRawBytes(Columns->GetColumnIds()); + if (!result) { + return Columns->GetColumnIds().size() * source->GetRecordsCount() * sizeof(ui32); // null for all records for all columns in future will be + } else { + return result; + } +} + +TConclusion<bool> TIndexBlobsFetchingStep::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const { + return !source->StartFetchingIndexes(source, step, Indexes); +} + +ui64 TIndexBlobsFetchingStep::DoPredictRawBytes(const std::shared_ptr<IDataSource>& source) const { + return source->GetIndexRawBytes(Indexes->GetIndexIdsSet()); +} + +TConclusion<bool> TAssemblerStep::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& /*step*/) const { + source->AssembleColumns(Columns); + return true; +} + +TConclusion<bool> TOptionalAssemblerStep::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& /*step*/) const { + source->AssembleColumns(Columns); + return true; +} + +bool TOptionalAssemblerStep::DoInitSourceSeqColumnIds(const std::shared_ptr<IDataSource>& source) const { + for (auto&& i : Columns->GetColumnIds()) { + if (source->AddSequentialEntityIds(i)) { + return true; + } + } + return false; +} + +TConclusion<bool> TFilterProgramStep::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& /*step*/) const { + AFL_VERIFY(source); + AFL_VERIFY(Step); + std::shared_ptr<arrow::Table> table; + if (source->IsSourceInMemory(Step->GetFilterOriginalColumnIds())) { + auto filter = Step->BuildFilter(source->GetStageData().GetTable()); + if (!filter.ok()) { + return TConclusionStatus::Fail(filter.status().message()); + } + source->MutableStageData().AddFilter(*filter); + } + return true; +} + +ui64 TFilterProgramStep::DoPredictRawBytes(const std::shared_ptr<IDataSource>& source) const { + return NArrow::TColumnFilter::GetPredictedMemorySize(source->GetRecordsCount()); +} + +TConclusion<bool> TPredicateFilter::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& /*step*/) const { + auto filter = source->GetContext()->GetReadMetadata()->GetPKRangesFilter().BuildFilter(source->GetStageData().GetTable()->BuildTable()); + source->MutableStageData().AddFilter(filter); + return true; +} + +TConclusion<bool> TSnapshotFilter::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& /*step*/) const { + auto filter = MakeSnapshotFilter(source->GetStageData().GetTable()->BuildTable(), source->GetContext()->GetReadMetadata()->GetRequestSnapshot()); + source->MutableStageData().AddFilter(filter); + return true; +} + +TConclusion<bool> TBuildFakeSpec::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& /*step*/) const { + std::vector<std::shared_ptr<arrow::Array>> columns; + for (auto&& f : TIndexInfo::ArrowSchemaSnapshot()->fields()) { + columns.emplace_back(NArrow::TThreadSimpleArraysCache::GetConst(f->type(), std::make_shared<arrow::UInt64Scalar>(0), Count)); + } + source->MutableStageData().AddBatch(arrow::RecordBatch::Make(TIndexInfo::ArrowSchemaSnapshot(), Count, columns)); + return true; +} + +TConclusion<bool> TApplyIndexStep::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& /*step*/) const { + source->ApplyIndex(IndexChecker); + return true; +} + +TConclusion<bool> TFetchingScriptCursor::Execute(const std::shared_ptr<IDataSource>& source) { + AFL_VERIFY(source); + NMiniKQL::TThrowingBindTerminator bind; + AFL_VERIFY(!Script->IsFinished(CurrentStepIdx)); + while (!Script->IsFinished(CurrentStepIdx)) { + if (source->GetStageData().IsEmpty()) { + break; + } + auto step = Script->GetStep(CurrentStepIdx); + TMemoryProfileGuard mGuard("SCAN_PROFILE::FETCHING::" + step->GetName() + "::" + Script->GetBranchName(), IS_DEBUG_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD_SCAN_MEMORY)); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("scan_step", step->DebugString())("scan_step_idx", CurrentStepIdx); + const TConclusion<bool> resultStep = step->ExecuteInplace(source, *this); + if (!resultStep) { + return resultStep; + } + if (!*resultStep) { + return false; + } + ++CurrentStepIdx; + } + return true; +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetching.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetching.h new file mode 100644 index 000000000000..1d0a1ceee8f0 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetching.h @@ -0,0 +1,294 @@ +#pragma once +#include "columns_set.h" +#include <ydb/library/accessor/accessor.h> +#include <ydb/core/tx/columnshard/engines/scheme/index_info.h> +#include <ydb/core/tx/columnshard/engines/scheme/abstract_scheme.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h> +#include <ydb/core/tx/columnshard/engines/reader/common/conveyor_task.h> + +namespace NKikimr::NOlap::NReader::NPlain { +class IDataSource; +class TFetchingScriptCursor; +class IFetchingStep { +private: + YDB_READONLY_DEF(TString, Name); +protected: + virtual TConclusion<bool> DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const = 0; + virtual TString DoDebugString() const { + return ""; + } +public: + virtual ui64 DoPredictRawBytes(const std::shared_ptr<IDataSource>& /*source*/) const { + return 0; + } + virtual bool DoInitSourceSeqColumnIds(const std::shared_ptr<IDataSource>& /*source*/) const { + return false; + } + + virtual ~IFetchingStep() = default; + + [[nodiscard]] TConclusion<bool> ExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const { + return DoExecuteInplace(source, step); + } + + IFetchingStep(const TString& name) + : Name(name) + { + + } + + TString DebugString() const { + TStringBuilder sb; + sb << "name=" << Name << ";details={" << DoDebugString() << "};"; + return sb; + } +}; + +class TFetchingScript { +private: + YDB_ACCESSOR(TString, BranchName, "UNDEFINED"); + std::vector<std::shared_ptr<IFetchingStep>> Steps; +public: + TFetchingScript() = default; + + TString DebugString() const { + TStringBuilder sb; + sb << "["; + for (auto&& i : Steps) { + sb << "{" << i->DebugString() << "};"; + } + sb << "]"; + return sb; + } + + const std::shared_ptr<IFetchingStep>& GetStep(const ui32 index) const { + AFL_VERIFY(index < Steps.size()); + return Steps[index]; + } + + ui64 PredictRawBytes(const std::shared_ptr<IDataSource>& source) const { + ui64 result = 0; + for (auto&& current: Steps) { + result += current->DoPredictRawBytes(source); + } + return result; + } + + void AddStep(const std::shared_ptr<IFetchingStep>& step) { + AFL_VERIFY(step); + Steps.emplace_back(step); + } + + bool InitSourceSeqColumnIds(const std::shared_ptr<IDataSource>& source) const { + for (auto it = Steps.rbegin(); it != Steps.rend(); ++it) { + if ((*it)->DoInitSourceSeqColumnIds(source)) { + return true; + } + } + return false; + } + + bool IsFinished(const ui32 currentStepIdx) const { + AFL_VERIFY(currentStepIdx <= Steps.size()); + return currentStepIdx == Steps.size(); + } + + ui32 Execute(const ui32 startStepIdx, const std::shared_ptr<IDataSource>& source) const; +}; + +class TFetchingScriptCursor { +private: + ui32 CurrentStepIdx = 0; + std::shared_ptr<TFetchingScript> Script; +public: + TFetchingScriptCursor(const std::shared_ptr<TFetchingScript>& script, const ui32 index) + : CurrentStepIdx(index) + , Script(script) + { + + } + + const TString& GetName() const { + return Script->GetStep(CurrentStepIdx)->GetName(); + } + + TString DebugString() const { + return Script->GetStep(CurrentStepIdx)->DebugString(); + } + + bool Next() { + return !Script->IsFinished(++CurrentStepIdx); + } + + TConclusion<bool> Execute(const std::shared_ptr<IDataSource>& source); +}; + +class TStepAction: public IDataTasksProcessor::ITask { +private: + using TBase = IDataTasksProcessor::ITask; + std::shared_ptr<IDataSource> Source; + TFetchingScriptCursor Cursor; + bool FinishedFlag = false; +protected: + virtual bool DoApply(IDataReader& owner) const override; + virtual bool DoExecute() override; +public: + virtual TString GetTaskClassIdentifier() const override { + return "STEP_ACTION"; + } + + TStepAction(const std::shared_ptr<IDataSource>& source, TFetchingScriptCursor&& cursor, const NActors::TActorId& ownerActorId) + : TBase(ownerActorId) + , Source(source) + , Cursor(std::move(cursor)) + { + + } +}; + +class TBuildFakeSpec: public IFetchingStep { +private: + using TBase = IFetchingStep; + const ui32 Count = 0; +protected: + virtual TConclusion<bool> DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const override; + virtual ui64 DoPredictRawBytes(const std::shared_ptr<IDataSource>& /*source*/) const override { + return TIndexInfo::GetSpecialColumnsRecordSize() * Count; + } +public: + TBuildFakeSpec(const ui32 count) + : TBase("FAKE_SPEC") + , Count(count) + { + AFL_VERIFY(Count); + } +}; + +class TApplyIndexStep: public IFetchingStep { +private: + using TBase = IFetchingStep; + const NIndexes::TIndexCheckerContainer IndexChecker; +protected: + virtual TConclusion<bool> DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const override; +public: + TApplyIndexStep(const NIndexes::TIndexCheckerContainer& indexChecker) + : TBase("APPLY_INDEX") + , IndexChecker(indexChecker) + { + + } +}; + +class TColumnBlobsFetchingStep: public IFetchingStep { +private: + using TBase = IFetchingStep; + std::shared_ptr<TColumnsSet> Columns; +protected: + virtual TConclusion<bool> DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const override; + virtual ui64 DoPredictRawBytes(const std::shared_ptr<IDataSource>& source) const override; + virtual TString DoDebugString() const override { + return TStringBuilder() << "columns=" << Columns->DebugString() << ";"; + } +public: + TColumnBlobsFetchingStep(const std::shared_ptr<TColumnsSet>& columns) + : TBase("FETCHING_COLUMNS") + , Columns(columns) { + AFL_VERIFY(Columns); + AFL_VERIFY(Columns->GetColumnsCount()); + } +}; + +class TIndexBlobsFetchingStep: public IFetchingStep { +private: + using TBase = IFetchingStep; + std::shared_ptr<TIndexesSet> Indexes; +protected: + virtual TConclusion<bool> DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const override; + virtual ui64 DoPredictRawBytes(const std::shared_ptr<IDataSource>& source) const override; + virtual TString DoDebugString() const override { + return TStringBuilder() << "indexes=" << Indexes->DebugString() << ";"; + } +public: + TIndexBlobsFetchingStep(const std::shared_ptr<TIndexesSet>& indexes) + : TBase("FETCHING_INDEXES") + , Indexes(indexes) { + AFL_VERIFY(Indexes); + AFL_VERIFY(Indexes->GetIndexesCount()); + } +}; + +class TAssemblerStep: public IFetchingStep { +private: + using TBase = IFetchingStep; + YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, Columns); + virtual TString DoDebugString() const override { + return TStringBuilder() << "columns=" << Columns->DebugString() << ";"; + } +public: + virtual TConclusion<bool> DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const override; + TAssemblerStep(const std::shared_ptr<TColumnsSet>& columns, const TString& specName = Default<TString>()) + : TBase("ASSEMBLER" + (specName ? "::" + specName : "")) + , Columns(columns) + { + AFL_VERIFY(Columns); + AFL_VERIFY(Columns->GetColumnsCount()); + } +}; + +class TOptionalAssemblerStep: public IFetchingStep { +private: + using TBase = IFetchingStep; + YDB_READONLY_DEF(std::shared_ptr<TColumnsSet>, Columns); + virtual TString DoDebugString() const override { + return TStringBuilder() << "columns=" << Columns->DebugString() << ";"; + } +protected: + virtual bool DoInitSourceSeqColumnIds(const std::shared_ptr<IDataSource>& source) const override; +public: + virtual TConclusion<bool> DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const override; + TOptionalAssemblerStep(const std::shared_ptr<TColumnsSet>& columns, const TString& specName = Default<TString>()) + : TBase("OPTIONAL_ASSEMBLER" + (specName ? "::" + specName : "")) + , Columns(columns) { + AFL_VERIFY(Columns); + AFL_VERIFY(Columns->GetColumnsCount()); + } +}; + +class TFilterProgramStep: public IFetchingStep { +private: + using TBase = IFetchingStep; + std::shared_ptr<NSsa::TProgramStep> Step; +protected: + virtual ui64 DoPredictRawBytes(const std::shared_ptr<IDataSource>& source) const override; +public: + virtual TConclusion<bool> DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const override; + TFilterProgramStep(const std::shared_ptr<NSsa::TProgramStep>& step) + : TBase("PROGRAM") + , Step(step) + { + } +}; + +class TPredicateFilter: public IFetchingStep { +private: + using TBase = IFetchingStep; +public: + virtual TConclusion<bool> DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const override; + TPredicateFilter() + : TBase("PREDICATE") { + + } +}; + +class TSnapshotFilter: public IFetchingStep { +private: + using TBase = IFetchingStep; +public: + virtual TConclusion<bool> DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& step) const override; + TSnapshotFilter() + : TBase("SNAPSHOT") { + + } +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/interval.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/interval.cpp new file mode 100644 index 000000000000..8e228937b653 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/interval.cpp @@ -0,0 +1,94 @@ +#include "interval.h" +#include <ydb/core/tx/conveyor/usage/service.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +void TFetchingInterval::ConstructResult() { + if (ReadySourcesCount.Val() != WaitSourcesCount || !ReadyGuards.Val()) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "skip_construct_result")("interval_idx", IntervalIdx); + return; + } else { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "start_construct_result")("interval_idx", IntervalIdx); + } + if (AtomicCas(&SourcesFinalized, 1, 0)) { + IntervalStateGuard.SetStatus(NColumnShard::TScanCounters::EIntervalStatus::WaitMergerStart); + auto task = std::make_shared<TStartMergeTask>(MergingContext, Context, std::move(Sources)); + task->SetPriority(NConveyor::ITask::EPriority::High); + NConveyor::TScanServiceOperator::SendTaskToExecute(task); + } +} + +void TFetchingInterval::OnInitResourcesGuard(const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& guard) { + IntervalStateGuard.SetStatus(NColumnShard::TScanCounters::EIntervalStatus::WaitSources); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "allocated")("interval_idx", IntervalIdx); + AFL_VERIFY(guard); + AFL_VERIFY(!ResourcesGuard); + ResourcesGuard = guard; + for (auto&& i : Sources) { + i.second->OnInitResourcesGuard(i.second); + } + AFL_VERIFY(ReadyGuards.Inc() <= 1); + ConstructResult(); +} + +void TFetchingInterval::OnSourceFetchStageReady(const ui32 /*sourceIdx*/) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "fetched")("interval_idx", IntervalIdx); + AFL_VERIFY(ReadySourcesCount.Inc() <= WaitSourcesCount); + ConstructResult(); +} + +TFetchingInterval::TFetchingInterval(const NArrow::NMerger::TSortableBatchPosition& start, const NArrow::NMerger::TSortableBatchPosition& finish, + const ui32 intervalIdx, const THashMap<ui32, std::shared_ptr<IDataSource>>& sources, const std::shared_ptr<TSpecialReadContext>& context, + const bool includeFinish, const bool includeStart, const bool isExclusiveInterval) + : TTaskBase(0, context->GetMemoryForSources(sources, isExclusiveInterval), "", context->GetCommonContext()->GetResourcesTaskContext()) + , MergingContext(std::make_shared<TMergingContext>(start, finish, intervalIdx, includeFinish, includeStart, isExclusiveInterval)) + , Context(context) + , TaskGuard(Context->GetCommonContext()->GetCounters().GetResourcesAllocationTasksGuard()) + , Sources(sources) + , IntervalIdx(intervalIdx) + , IntervalStateGuard(Context->GetCommonContext()->GetCounters().CreateIntervalStateGuard()) +{ + Y_ABORT_UNLESS(Sources.size()); + for (auto&& [_, i] : Sources) { + if (!i->IsDataReady()) { + ++WaitSourcesCount; + } + i->RegisterInterval(*this); + } + IntervalStateGuard.SetStatus(NColumnShard::TScanCounters::EIntervalStatus::WaitResources); +} + +void TFetchingInterval::DoOnAllocationSuccess(const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& guard) { + AFL_VERIFY(guard); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("interval_idx", IntervalIdx)("event", "resources_allocated") + ("resources", guard->DebugString())("start", MergingContext->GetIncludeStart())("finish", MergingContext->GetIncludeFinish())("sources", Sources.size()); + OnInitResourcesGuard(guard); +} + +void TFetchingInterval::SetMerger(std::unique_ptr<NArrow::NMerger::TMergePartialStream>&& merger) { + AFL_VERIFY(!Merger); + AFL_VERIFY(AtomicCas(&PartSendingWait, 1, 0)); + if (merger) { + IntervalStateGuard.SetStatus(NColumnShard::TScanCounters::EIntervalStatus::WaitPartialReply); + } + Merger = std::move(merger); +} + +bool TFetchingInterval::HasMerger() const { + return !!Merger; +} + +void TFetchingInterval::OnPartSendingComplete() { + AFL_VERIFY(Merger); + AFL_VERIFY(AtomicCas(&PartSendingWait, 0, 1)); + AFL_VERIFY(AtomicGet(SourcesFinalized) == 1); + if (AbortedFlag) { + return; + } + IntervalStateGuard.SetStatus(NColumnShard::TScanCounters::EIntervalStatus::WaitMergerContinue); + auto task = std::make_shared<TContinueMergeTask>(MergingContext, Context, std::move(Merger)); + task->SetPriority(NConveyor::ITask::EPriority::High); + NConveyor::TScanServiceOperator::SendTaskToExecute(task); +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/interval.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/interval.h new file mode 100644 index 000000000000..80613ef5b2d2 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/interval.h @@ -0,0 +1,92 @@ +#pragma once +#include "source.h" +#include "merge.h" + +#include <ydb/core/tx/columnshard/resource_subscriber/task.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +class TFetchingInterval: public TNonCopyable, public NResourceBroker::NSubscribe::ITask { +private: + using TTaskBase = NResourceBroker::NSubscribe::ITask; + std::shared_ptr<TMergingContext> MergingContext; + bool AbortedFlag = false; + TAtomic SourcesFinalized = 0; + TAtomic PartSendingWait = 0; + std::unique_ptr<NArrow::NMerger::TMergePartialStream> Merger; + std::shared_ptr<TSpecialReadContext> Context; + NColumnShard::TCounterGuard TaskGuard; + THashMap<ui32, std::shared_ptr<IDataSource>> Sources; + + void ConstructResult(); + + std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard> ResourcesGuard; + const ui32 IntervalIdx; + TAtomicCounter ReadySourcesCount = 0; + TAtomicCounter ReadyGuards = 0; + ui32 WaitSourcesCount = 0; + NColumnShard::TConcreteScanCounters::TScanIntervalStateGuard IntervalStateGuard; + void OnInitResourcesGuard(const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& guard); +protected: + virtual void DoOnAllocationSuccess(const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& guard) override; + +public: + std::set<ui64> GetPathIds() const { + std::set<ui64> result; + for (auto&& i : Sources) { + result.emplace(i.second->GetPathId()); + } + return result; + } + + ui32 GetIntervalIdx() const { + return IntervalIdx; + } + + const THashMap<ui32, std::shared_ptr<IDataSource>>& GetSources() const { + return Sources; + } + + const std::shared_ptr<NResourceBroker::NSubscribe::TResourcesGuard>& GetResourcesGuard() const { + return ResourcesGuard; + } + + void Abort() { + AbortedFlag = true; + if (AtomicCas(&SourcesFinalized, 1, 0)) { + for (auto&& i : Sources) { + i.second->Abort(); + } + } + } + + NJson::TJsonValue DebugJson() const { + NJson::TJsonValue result = NJson::JSON_MAP; + result.InsertValue("merging_context", MergingContext ? MergingContext->DebugJson() : ""); + auto& jsonSources = result.InsertValue("sources", NJson::JSON_ARRAY); + for (auto&& [_, i] : Sources) { + jsonSources.AppendValue(i->DebugJson()); + } + return result; + } + + NJson::TJsonValue DebugJsonForMemory() const { + NJson::TJsonValue result = NJson::JSON_MAP; + auto& jsonSources = result.InsertValue("sources", NJson::JSON_ARRAY); + for (auto&& [_, i] : Sources) { + jsonSources.AppendValue(i->DebugJsonForMemory()); + } + return result; + } + + void OnSourceFetchStageReady(const ui32 sourceIdx); + void OnPartSendingComplete(); + void SetMerger(std::unique_ptr<NArrow::NMerger::TMergePartialStream>&& merger); + bool HasMerger() const; + + TFetchingInterval(const NArrow::NMerger::TSortableBatchPosition& start, const NArrow::NMerger::TSortableBatchPosition& finish, + const ui32 intervalIdx, const THashMap<ui32, std::shared_ptr<IDataSource>>& sources, const std::shared_ptr<TSpecialReadContext>& context, + const bool includeFinish, const bool includeStart, const bool isExclusiveInterval); +}; + +} diff --git a/ydb/core/tx/columnshard/columnshard__index_scan.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/iterator.cpp similarity index 64% rename from ydb/core/tx/columnshard/columnshard__index_scan.cpp rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/iterator.cpp index a2d4dc7bb809..60e41095303c 100644 --- a/ydb/core/tx/columnshard/columnshard__index_scan.cpp +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/iterator.cpp @@ -1,23 +1,17 @@ -#include "columnshard__index_scan.h" -#include <ydb/core/tx/conveyor/usage/service.h> -#include <ydb/core/tx/conveyor/usage/events.h> +#include "iterator.h" -namespace NKikimr::NColumnShard { +namespace NKikimr::NOlap::NReader::NPlain { -TColumnShardScanIterator::TColumnShardScanIterator(const std::shared_ptr<NOlap::TReadContext>& context, const NOlap::TReadMetadata::TConstPtr& readMetadata) +TColumnShardScanIterator::TColumnShardScanIterator(const std::shared_ptr<TReadContext>& context, const TReadMetadata::TConstPtr& readMetadata) : Context(context) , ReadMetadata(readMetadata) , ReadyResults(context->GetCounters()) { IndexedData = readMetadata->BuildReader(Context); Y_ABORT_UNLESS(Context->GetReadMetadata()->IsSorted()); - - if (readMetadata->Empty()) { - IndexedData->Abort(); - } } -std::optional<NOlap::TPartialReadResult> TColumnShardScanIterator::GetBatch() { +TConclusion<std::optional<TPartialReadResult>> TColumnShardScanIterator::GetBatch() { FillReadyResults(); return ReadyResults.pop_front(); } @@ -26,10 +20,14 @@ void TColumnShardScanIterator::PrepareResults() { FillReadyResults(); } -bool TColumnShardScanIterator::ReadNextInterval() { +TConclusion<bool> TColumnShardScanIterator::ReadNextInterval() { return IndexedData->ReadNextInterval(); } +void TColumnShardScanIterator::DoOnSentDataFromInterval(const ui32 intervalIdx) const { + return IndexedData->OnSentDataFromInterval(intervalIdx); +} + void TColumnShardScanIterator::FillReadyResults() { auto ready = IndexedData->ExtractReadyResults(MaxRowsInBatch); i64 limitLeft = Context->GetReadMetadata()->Limit == 0 ? INT64_MAX : Context->GetReadMetadata()->Limit - ItemsRead; @@ -43,13 +41,15 @@ void TColumnShardScanIterator::FillReadyResults() { } if (limitLeft == 0) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "abort_scan")("limit", Context->GetReadMetadata()->Limit)("ready", ItemsRead); - IndexedData->Abort(); + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "limit_reached_on_scan")("limit", Context->GetReadMetadata()->Limit)("ready", ItemsRead); + IndexedData->Abort("records count limit exhausted"); } } TColumnShardScanIterator::~TColumnShardScanIterator() { - IndexedData->Abort(); + if (!IndexedData->IsFinished()) { + IndexedData->Abort("iterator destructor"); + } ReadMetadata->ReadStats->PrintToLog(); } diff --git a/ydb/core/tx/columnshard/columnshard__index_scan.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/iterator.h similarity index 54% rename from ydb/core/tx/columnshard/columnshard__index_scan.h rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/iterator.h index 2d3d7e96e035..38f05ff276cd 100644 --- a/ydb/core/tx/columnshard/columnshard__index_scan.h +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/iterator.h @@ -1,44 +1,15 @@ #pragma once +#include <ydb/core/tx/columnshard/counters/scan.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/abstract.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_context.h> +#include <ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/read_metadata.h> -#include "columnshard__scan.h" -#include "columnshard_common.h" -#include "engines/reader/read_metadata.h" -#include "engines/reader/read_context.h" - -namespace NKikimr::NColumnShard { - -class TIndexColumnResolver : public IColumnResolver { - const NOlap::TIndexInfo& IndexInfo; - -public: - explicit TIndexColumnResolver(const NOlap::TIndexInfo& indexInfo) - : IndexInfo(indexInfo) - {} - - virtual std::optional<ui32> GetColumnIdOptional(const TString& name) const override { - return IndexInfo.GetColumnIdOptional(name); - } - - TString GetColumnName(ui32 id, bool required) const override { - return IndexInfo.GetColumnName(id, required); - } - - const NTable::TScheme::TTableSchema& GetSchema() const override { - return IndexInfo; - } - - NSsa::TColumnInfo GetDefaultColumn() const override { - return NSsa::TColumnInfo::Original((ui32)NOlap::TIndexInfo::ESpecialColumn::PLAN_STEP, NOlap::TIndexInfo::SPEC_COL_PLAN_STEP); - } -}; - -using NOlap::TUnifiedBlobId; -using NOlap::TBlobRange; +namespace NKikimr::NOlap::NReader::NPlain { class TReadyResults { private: const NColumnShard::TConcreteScanCounters Counters; - std::deque<NOlap::TPartialReadResult> Data; + std::deque<TPartialReadResult> Data; i64 RecordsCount = 0; public: TString DebugString() const { @@ -57,12 +28,12 @@ class TReadyResults { { } - NOlap::TPartialReadResult& emplace_back(NOlap::TPartialReadResult&& v) { + TPartialReadResult& emplace_back(TPartialReadResult&& v) { RecordsCount += v.GetResultBatch().num_rows(); Data.emplace_back(std::move(v)); return Data.back(); } - std::optional<NOlap::TPartialReadResult> pop_front() { + std::optional<TPartialReadResult> pop_front() { if (Data.empty()) { return {}; } @@ -81,21 +52,28 @@ class TReadyResults { class TColumnShardScanIterator: public TScanIteratorBase { private: - std::shared_ptr<NOlap::TReadContext> Context; - const NOlap::TReadMetadata::TConstPtr ReadMetadata; + std::shared_ptr<TReadContext> Context; + const TReadMetadata::TConstPtr ReadMetadata; TReadyResults ReadyResults; - std::shared_ptr<NOlap::IDataReader> IndexedData; + std::shared_ptr<IDataReader> IndexedData; ui64 ItemsRead = 0; const i64 MaxRowsInBatch = 5000; + virtual void DoOnSentDataFromInterval(const ui32 intervalIdx) const override; + public: - TColumnShardScanIterator(const std::shared_ptr<NOlap::TReadContext>& context, const NOlap::TReadMetadata::TConstPtr& readMetadata); + TColumnShardScanIterator(const std::shared_ptr<TReadContext>& context, const TReadMetadata::TConstPtr& readMetadata); ~TColumnShardScanIterator(); + virtual TConclusionStatus Start() override { + AFL_VERIFY(IndexedData); + return IndexedData->Start(); + } + virtual std::optional<ui32> GetAvailableResultsCount() const override { return ReadyResults.size(); } - virtual const NOlap::TReadStats& GetStats() const override { + virtual const TReadStats& GetStats() const override { return *ReadMetadata->ReadStats; } @@ -112,10 +90,10 @@ class TColumnShardScanIterator: public TScanIteratorBase { return IndexedData->IsFinished() && ReadyResults.empty(); } - std::optional<NOlap::TPartialReadResult> GetBatch() override; + TConclusion<std::optional<TPartialReadResult>> GetBatch() override; virtual void PrepareResults() override; - virtual bool ReadNextInterval() override; + virtual TConclusion<bool> ReadNextInterval() override; private: void FillReadyResults(); diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/merge.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/merge.cpp new file mode 100644 index 000000000000..ec6c4c04163b --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/merge.cpp @@ -0,0 +1,157 @@ +#include "merge.h" +#include "plain_read_data.h" +#include "source.h" + +namespace NKikimr::NOlap::NReader::NPlain { + +std::optional<NArrow::NMerger::TSortableBatchPosition> TBaseMergeTask::DrainMergerLinearScan(const std::optional<ui32> resultBufferLimit) { + std::optional<NArrow::NMerger::TSortableBatchPosition> lastResultPosition; + AFL_VERIFY(!ResultBatch); + auto rbBuilder = std::make_shared<NArrow::NMerger::TRecordBatchBuilder>(Context->GetProgramInputColumns()->GetSchema()->fields()); + rbBuilder->SetMemoryBufferLimit(resultBufferLimit); + if (!Merger->DrainToControlPoint(*rbBuilder, MergingContext->GetIncludeFinish(), &lastResultPosition)) { + if (Merger->IsEmpty()) { + Merger = nullptr; + } else { + AFL_VERIFY(rbBuilder->IsBufferExhausted()); + } + } else { + Merger = nullptr; + } + Context->GetCommonContext()->GetCounters().OnLinearScanInterval(rbBuilder->GetRecordsCount()); + ResultBatch = NArrow::TStatusValidator::GetValid(arrow::Table::FromRecordBatches({rbBuilder->Finalize()})); + return lastResultPosition; +} + +void TBaseMergeTask::PrepareResultBatch() { + if (!ResultBatch || ResultBatch->num_rows() == 0) { + ResultBatch = nullptr; + LastPK = nullptr; + return; + } + { + ResultBatch = NArrow::ExtractColumns(ResultBatch, Context->GetProgramInputColumns()->GetColumnNamesVector()); + AFL_VERIFY(ResultBatch); + AFL_VERIFY((ui32)ResultBatch->num_columns() == Context->GetProgramInputColumns()->GetColumnNamesVector().size()); + NArrow::TStatusValidator::Validate(Context->GetReadMetadata()->GetProgram().ApplyProgram(ResultBatch)); + } + if (ResultBatch->num_rows()) { + const auto& shardingPolicy = Context->GetCommonContext()->GetComputeShardingPolicy(); + if (NArrow::THashConstructor::BuildHashUI64(ResultBatch, shardingPolicy.GetColumnNames(), "__compute_sharding_hash")) { + ShardedBatch = NArrow::TShardingSplitIndex::Apply(shardingPolicy.GetShardsCount(), ResultBatch, "__compute_sharding_hash"); + } else { + ShardedBatch = NArrow::TShardedRecordBatch(ResultBatch); + } + AFL_VERIFY(!!LastPK == !!ShardedBatch->GetRecordsCount())("lpk", !!LastPK)("sb", ShardedBatch->GetRecordsCount()); + } else { + ResultBatch = nullptr; + LastPK = nullptr; + } +} + +bool TBaseMergeTask::DoApply(IDataReader& indexedDataRead) const { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "DoApply")("interval_idx", MergingContext->GetIntervalIdx()); + auto& reader = static_cast<TPlainReadData&>(indexedDataRead); + reader.MutableScanner().OnIntervalResult(ShardedBatch, LastPK, std::move(Merger), IntervalIdx, reader); + return true; +} + +bool TStartMergeTask::DoExecute() { + if (OnlyEmptySources) { + ResultBatch = nullptr; + return true; + } + bool sourcesInMemory = true; + for (auto&& i : Sources) { + if (!i.second->IsSourceInMemory()) { + sourcesInMemory = false; + break; + } + } + if (MergingContext->IsExclusiveInterval() && sourcesInMemory) { + TMemoryProfileGuard mGuard("SCAN_PROFILE::MERGE::EXCLUSIVE", IS_DEBUG_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD_SCAN_MEMORY)); + auto& container = Sources.begin()->second->GetStageResult().GetBatch(); + if (container && container->num_rows()) { + ResultBatch = container->BuildTable(); + LastPK = Sources.begin()->second->GetLastPK(); + ResultBatch = NArrow::ExtractColumnsValidate(ResultBatch, Context->GetProgramInputColumns()->GetColumnNamesVector()); + AFL_VERIFY(ResultBatch)("info", Context->GetProgramInputColumns()->GetSchema()->ToString()); + Context->GetCommonContext()->GetCounters().OnNoScanInterval(ResultBatch->num_rows()); + if (Context->GetCommonContext()->IsReverse()) { + ResultBatch = NArrow::ReverseRecords(ResultBatch); + } + PrepareResultBatch(); + } + Sources.clear(); + AFL_VERIFY(!!LastPK == (!!ResultBatch && ResultBatch->num_rows())); + return true; + } + TMemoryProfileGuard mGuard("SCAN_PROFILE::MERGE::COMMON", IS_DEBUG_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD_SCAN_MEMORY)); + AFL_VERIFY(!Merger); + Merger = Context->BuildMerger(); + for (auto&& [_, i] : Sources) { + if (auto rb = i->GetStageResult().GetBatch()) { + Merger->AddSource(rb, i->GetStageResult().GetNotAppliedFilter()); + } + } + AFL_VERIFY(Merger->GetSourcesCount() <= Sources.size()); + if (Merger->GetSourcesCount() == 0) { + ResultBatch = nullptr; + return true; + } + Merger->PutControlPoint(std::make_shared<NArrow::NMerger::TSortableBatchPosition>(MergingContext->GetFinish())); + Merger->SkipToLowerBound(MergingContext->GetStart(), MergingContext->GetIncludeStart()); + const ui32 originalSourcesCount = Sources.size(); + Sources.clear(); + + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "DoExecute")("interval_idx", MergingContext->GetIntervalIdx()); + std::optional<NArrow::NMerger::TSortableBatchPosition> lastResultPosition; + if (Merger->GetSourcesCount() == 1 && sourcesInMemory) { + TMemoryProfileGuard mGuard("SCAN_PROFILE::MERGE::ONE", IS_DEBUG_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD_SCAN_MEMORY)); + ResultBatch = Merger->SingleSourceDrain(MergingContext->GetFinish(), MergingContext->GetIncludeFinish(), &lastResultPosition); + if (ResultBatch) { + Context->GetCommonContext()->GetCounters().OnLogScanInterval(ResultBatch->num_rows()); + AFL_VERIFY(ResultBatch->schema()->Equals(Context->GetProgramInputColumns()->GetSchema()))("res", ResultBatch->schema()->ToString())("ctx", Context->GetProgramInputColumns()->GetSchema()->ToString()); + } + if (MergingContext->GetIncludeFinish() && originalSourcesCount == 1) { + AFL_VERIFY(Merger->IsEmpty())("merging_context_finish", MergingContext->GetFinish().DebugJson().GetStringRobust())("merger", Merger->DebugString()); + } + } else { + TMemoryProfileGuard mGuard("SCAN_PROFILE::MERGE::MANY", IS_DEBUG_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD_SCAN_MEMORY)); + const std::optional<ui32> bufferLimit = sourcesInMemory ? std::nullopt : std::optional<ui32>(Context->ReadSequentiallyBufferSize); + lastResultPosition = DrainMergerLinearScan(bufferLimit); + } + if (lastResultPosition) { + LastPK = lastResultPosition->ExtractSortingPosition(); + } + AFL_VERIFY(!!LastPK == (!!ResultBatch && ResultBatch->num_rows())); + PrepareResultBatch(); + return true; +} + +TStartMergeTask::TStartMergeTask(const std::shared_ptr<TMergingContext>& mergingContext, const std::shared_ptr<TSpecialReadContext>& readContext, THashMap<ui32, std::shared_ptr<IDataSource>>&& sources) + : TBase(mergingContext, readContext) + , Sources(std::move(sources)) +{ + for (auto&& s : Sources) { + AFL_VERIFY(s.second->IsDataReady()); + } + for (auto&& [_, i] : Sources) { + if (!i->GetStageResult().IsEmpty()) { + OnlyEmptySources = false; + } + } +} + +bool TContinueMergeTask::DoExecute() { + TMemoryProfileGuard mGuard("SCAN_PROFILE::MERGE::CONTINUE", IS_DEBUG_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD_SCAN_MEMORY)); + std::optional<NArrow::NMerger::TSortableBatchPosition> lastResultPosition = DrainMergerLinearScan(Context->ReadSequentiallyBufferSize); + if (lastResultPosition) { + LastPK = lastResultPosition->ExtractSortingPosition(); + } + AFL_VERIFY(!!LastPK == (!!ResultBatch && ResultBatch->num_rows())); + PrepareResultBatch(); + return true; +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/merge.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/merge.h new file mode 100644 index 000000000000..043ff943e472 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/merge.h @@ -0,0 +1,110 @@ +#pragma once +#include "context.h" +#include <ydb/core/formats/arrow/reader/merger.h> +#include <ydb/core/formats/arrow/reader/position.h> + +#include <ydb/core/tx/columnshard/engines/reader/common/conveyor_task.h> +#include <ydb/core/tx/columnshard/counters/scan.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +class TMergingContext { +protected: + YDB_READONLY_DEF(NArrow::NMerger::TSortableBatchPosition, Start); + YDB_READONLY_DEF(NArrow::NMerger::TSortableBatchPosition, Finish); + YDB_READONLY(bool, IncludeFinish, true); + YDB_READONLY(bool, IncludeStart, false); + YDB_READONLY(ui32, IntervalIdx, 0); + bool IsExclusiveIntervalFlag = false; +public: + TMergingContext(const NArrow::NMerger::TSortableBatchPosition& start, const NArrow::NMerger::TSortableBatchPosition& finish, + const ui32 intervalIdx, const bool includeFinish, const bool includeStart, const bool isExclusiveInterval) + : Start(start) + , Finish(finish) + , IncludeFinish(includeFinish) + , IncludeStart(includeStart) + , IntervalIdx(intervalIdx) + , IsExclusiveIntervalFlag(isExclusiveInterval) + { + + } + + bool IsExclusiveInterval() const { + return IsExclusiveIntervalFlag; + } + + NJson::TJsonValue DebugJson() const { + NJson::TJsonValue result = NJson::JSON_MAP; + result.InsertValue("start", Start.DebugJson()); + result.InsertValue("idx", IntervalIdx); + result.InsertValue("finish", Finish.DebugJson()); + result.InsertValue("include_finish", IncludeFinish); + result.InsertValue("exclusive", IsExclusiveIntervalFlag); + return result; + } + +}; + +class TBaseMergeTask: public IDataTasksProcessor::ITask { +private: + using TBase = IDataTasksProcessor::ITask; +protected: + std::shared_ptr<arrow::Table> ResultBatch; + std::shared_ptr<arrow::RecordBatch> LastPK; + const NColumnShard::TCounterGuard Guard; + std::shared_ptr<TSpecialReadContext> Context; + mutable std::unique_ptr<NArrow::NMerger::TMergePartialStream> Merger; + std::shared_ptr<TMergingContext> MergingContext; + const ui32 IntervalIdx; + std::optional<NArrow::TShardedRecordBatch> ShardedBatch; + + [[nodiscard]] std::optional<NArrow::NMerger::TSortableBatchPosition> DrainMergerLinearScan(const std::optional<ui32> resultBufferLimit); + + void PrepareResultBatch(); +private: + virtual bool DoApply(IDataReader& indexedDataRead) const override; +public: + TBaseMergeTask(const std::shared_ptr<TMergingContext>& mergingContext, const std::shared_ptr<TSpecialReadContext>& readContext) + : TBase(readContext->GetCommonContext()->GetScanActorId()) + , Guard(readContext->GetCommonContext()->GetCounters().GetMergeTasksGuard()) + , Context(readContext) + , MergingContext(mergingContext) + , IntervalIdx(MergingContext->GetIntervalIdx()) { + + } +}; + +class TStartMergeTask: public TBaseMergeTask { +private: + using TBase = TBaseMergeTask; + bool OnlyEmptySources = true; + THashMap<ui32, std::shared_ptr<IDataSource>> Sources; +protected: + virtual bool DoExecute() override; +public: + virtual TString GetTaskClassIdentifier() const override { + return "CS::MERGE_START"; + } + + TStartMergeTask(const std::shared_ptr<TMergingContext>& mergingContext, + const std::shared_ptr<TSpecialReadContext>& readContext, THashMap<ui32, std::shared_ptr<IDataSource>>&& sources); +}; + +class TContinueMergeTask: public TBaseMergeTask { +private: + using TBase = TBaseMergeTask; +protected: + virtual bool DoExecute() override; +public: + virtual TString GetTaskClassIdentifier() const override { + return "CS::MERGE_CONTINUE"; + } + + TContinueMergeTask(const std::shared_ptr<TMergingContext>& mergingContext, const std::shared_ptr<TSpecialReadContext>& readContext, std::unique_ptr<NArrow::NMerger::TMergePartialStream>&& merger) + : TBase(mergingContext, readContext) { + AFL_VERIFY(merger); + Merger = std::move(merger); + } +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/plain_read_data.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/plain_read_data.cpp similarity index 86% rename from ydb/core/tx/columnshard/engines/reader/plain_reader/plain_read_data.cpp rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/plain_read_data.cpp index 26b397fe2e36..9def8738cab9 100644 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/plain_read_data.cpp +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/plain_read_data.cpp @@ -1,8 +1,8 @@ #include "plain_read_data.h" -namespace NKikimr::NOlap::NPlainReader { +namespace NKikimr::NOlap::NReader::NPlain { -TPlainReadData::TPlainReadData(const std::shared_ptr<NOlap::TReadContext>& context) +TPlainReadData::TPlainReadData(const std::shared_ptr<TReadContext>& context) : TBase(context) , SpecialReadContext(std::make_shared<TSpecialReadContext>(context)) { @@ -29,9 +29,9 @@ TPlainReadData::TPlainReadData(const std::shared_ptr<NOlap::TReadContext>& conte if (movePortion) { if ((*itPortion)->GetMeta().GetProduced() == NPortion::EProduced::COMPACTED || (*itPortion)->GetMeta().GetProduced() == NPortion::EProduced::SPLIT_COMPACTED) { - compactedPortionsBytes += (*itPortion)->BlobsBytes(); + compactedPortionsBytes += (*itPortion)->GetTotalBlobBytes(); } else { - insertedPortionsBytes += (*itPortion)->BlobsBytes(); + insertedPortionsBytes += (*itPortion)->GetTotalBlobBytes(); } sources.emplace_back(std::make_shared<TPortionDataSource>(sourceIdx++, *itPortion, SpecialReadContext, (*itPortion)->IndexKeyStart(), (*itPortion)->IndexKeyEnd())); ++itPortion; @@ -54,7 +54,7 @@ TPlainReadData::TPlainReadData(const std::shared_ptr<NOlap::TReadContext>& conte } -std::vector<NKikimr::NOlap::TPartialReadResult> TPlainReadData::DoExtractReadyResults(const int64_t maxRowsInBatch) { +std::vector<TPartialReadResult> TPlainReadData::DoExtractReadyResults(const int64_t maxRowsInBatch) { auto result = TPartialReadResult::SplitResults(std::move(PartialResults), maxRowsInBatch); ui32 count = 0; for (auto&& r: result) { @@ -69,12 +69,12 @@ std::vector<NKikimr::NOlap::TPartialReadResult> TPlainReadData::DoExtractReadyRe return result; } -bool TPlainReadData::DoReadNextInterval() { +TConclusion<bool> TPlainReadData::DoReadNextInterval() { return Scanner->BuildNextInterval(); } void TPlainReadData::OnIntervalResult(const std::shared_ptr<TPartialReadResult>& result) { - result->GetResourcesGuardOnly()->Update(result->GetMemorySize()); +// result->GetResourcesGuardOnly()->Update(result->GetMemorySize()); ReadyResultsCount += result->GetRecordsCount(); PartialResults.emplace_back(std::move(*result)); } diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/plain_read_data.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/plain_read_data.h similarity index 65% rename from ydb/core/tx/columnshard/engines/reader/plain_reader/plain_read_data.h rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/plain_read_data.h index 13e1f25f0d16..39d993b156d6 100644 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/plain_read_data.h +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/plain_read_data.h @@ -3,13 +3,13 @@ #include "source.h" #include "scanner.h" -#include <ydb/core/tx/columnshard/engines/reader/read_context.h> -#include <ydb/core/tx/columnshard/engines/reader/read_metadata.h> -#include <ydb/core/tx/columnshard/engines/reader/queue.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_context.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h> +#include <ydb/core/tx/columnshard/engines/reader/common/queue.h> -namespace NKikimr::NOlap::NPlainReader { +namespace NKikimr::NOlap::NReader::NPlain { -class TPlainReadData: public IDataReader, TNonCopyable { +class TPlainReadData: public IDataReader, TNonCopyable, NColumnShard::TMonitoringObjectsCounter<TPlainReadData> { private: using TBase = IDataReader; std::shared_ptr<TScanHead> Scanner; @@ -18,6 +18,10 @@ class TPlainReadData: public IDataReader, TNonCopyable { ui32 ReadyResultsCount = 0; bool AbortedFlag = false; protected: + virtual TConclusionStatus DoStart() override { + return Scanner->Start(); + } + virtual TString DoDebugString(const bool verbose) const override { TStringBuilder sb; sb << SpecialReadContext->DebugString() << ";"; @@ -27,8 +31,8 @@ class TPlainReadData: public IDataReader, TNonCopyable { return sb; } - virtual std::vector<TPartialReadResult> DoExtractReadyResults(const int64_t /*maxRowsInBatch*/) override; - virtual bool DoReadNextInterval() override; + virtual std::vector<TPartialReadResult> DoExtractReadyResults(const int64_t maxRowsInBatch) override; + virtual TConclusion<bool> DoReadNextInterval() override; virtual void DoAbort() override { AbortedFlag = true; @@ -40,6 +44,10 @@ class TPlainReadData: public IDataReader, TNonCopyable { return (Scanner->IsFinished() && PartialResults.empty()); } public: + virtual void OnSentDataFromInterval(const ui32 intervalIdx) const override { + Scanner->OnSentDataFromInterval(intervalIdx); + } + const TReadMetadata::TConstPtr& GetReadMetadata() const { return SpecialReadContext->GetReadMetadata(); } @@ -58,10 +66,10 @@ class TPlainReadData: public IDataReader, TNonCopyable { void OnIntervalResult(const std::shared_ptr<TPartialReadResult>& result); - TPlainReadData(const std::shared_ptr<NOlap::TReadContext>& context); + TPlainReadData(const std::shared_ptr<TReadContext>& context); ~TPlainReadData() { if (!AbortedFlag) { - Abort(); + Abort("unexpected on destructor"); } } }; diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/scanner.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/scanner.cpp new file mode 100644 index 000000000000..f0c789f3d205 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/scanner.cpp @@ -0,0 +1,302 @@ +#include "scanner.h" +#include "plain_read_data.h" +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h> +#include <ydb/library/actors/core/log.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +void TScanHead::OnIntervalResult(const std::optional<NArrow::TShardedRecordBatch>& newBatch, const std::shared_ptr<arrow::RecordBatch>& lastPK, + std::unique_ptr<NArrow::NMerger::TMergePartialStream>&& merger, const ui32 intervalIdx, TPlainReadData& reader) { + if (Context->GetReadMetadata()->Limit && (!newBatch || newBatch->GetRecordsCount() == 0) && InFlightLimit < 1000) { + if (++ZeroCount == std::max<ui64>(16, InFlightLimit)) { + InFlightLimit *= 2; + ZeroCount = 0; + } + } else { + ZeroCount = 0; + } + auto itInterval = FetchingIntervals.find(intervalIdx); + AFL_VERIFY(itInterval != FetchingIntervals.end()); + itInterval->second->SetMerger(std::move(merger)); + AFL_VERIFY(Context->GetCommonContext()->GetReadMetadata()->IsSorted()); + if (newBatch && newBatch->GetRecordsCount()) { + const std::optional<ui32> callbackIdxSubscriver = itInterval->second->HasMerger() ? std::optional<ui32>(intervalIdx) : std::nullopt; + AFL_VERIFY(ReadyIntervals.emplace(intervalIdx, std::make_shared<TPartialReadResult>(itInterval->second->GetResourcesGuard(), *newBatch, lastPK, callbackIdxSubscriver)).second); + } else { + AFL_VERIFY(ReadyIntervals.emplace(intervalIdx, nullptr).second); + } + Y_ABORT_UNLESS(FetchingIntervals.size()); + while (FetchingIntervals.size()) { + const auto interval = FetchingIntervals.begin()->second; + const ui32 intervalIdx = interval->GetIntervalIdx(); + auto it = ReadyIntervals.find(intervalIdx); + if (it == ReadyIntervals.end()) { + break; + } + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "interval_result")("interval_idx", intervalIdx)("count", it->second ? it->second->GetRecordsCount() : 0); + auto result = it->second; + ReadyIntervals.erase(it); + if (result) { + reader.OnIntervalResult(result); + } + if (!interval->HasMerger()) { + FetchingIntervals.erase(FetchingIntervals.begin()); + } else if (result) { + break; + } else { + interval->OnPartSendingComplete(); + } + } + if (FetchingIntervals.empty()) { + AFL_VERIFY(ReadyIntervals.empty()); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "intervals_finished"); + } else { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "wait_interval")("remained", FetchingIntervals.size())("interval_idx", FetchingIntervals.begin()->first); + } +} + +TConclusionStatus TScanHead::Start() { + TScanContext context; + for (auto itPoint = BorderPoints.begin(); itPoint != BorderPoints.end(); ++itPoint) { + auto& point = itPoint->second; + context.OnStartPoint(point); + if (context.GetIsSpecialPoint()) { + auto detectorResult = DetectSourcesFeatureInContextIntervalScan(context.GetCurrentSources(), false); + for (auto&& i : context.GetCurrentSources()) { + i.second->IncIntervalsCount(); + } + if (!detectorResult) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "scanner_initializer_aborted")("reason", detectorResult.GetErrorMessage()); + Abort(); + return detectorResult; + } + } + for (auto&& i : point.GetFinishSources()) { + i->InitFetchingPlan(Context->GetColumnsFetchingPlan(i)); + } + context.OnFinishPoint(point); + if (context.GetCurrentSources().size()) { + auto itPointNext = itPoint; + Y_ABORT_UNLESS(++itPointNext != BorderPoints.end()); + context.OnNextPointInfo(itPointNext->second); + for (auto&& i : context.GetCurrentSources()) { + i.second->IncIntervalsCount(); + } + auto detectorResult = DetectSourcesFeatureInContextIntervalScan(context.GetCurrentSources(), context.GetIsExclusiveInterval()); + if (!detectorResult) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "scanner_initializer_aborted")("reason", detectorResult.GetErrorMessage()); + Abort(); + return detectorResult; + } + } + } + return TConclusionStatus::Success(); +} + +TScanHead::TScanHead(std::deque<std::shared_ptr<IDataSource>>&& sources, const std::shared_ptr<TSpecialReadContext>& context) + : Context(context) +{ + InFlightLimit = Context->GetReadMetadata()->Limit ? 1 : Max<ui32>(); + while (sources.size()) { + auto source = sources.front(); + BorderPoints[source->GetStart()].AddStart(source); + BorderPoints[source->GetFinish()].AddFinish(source); + sources.pop_front(); + } +} + +class TSourcesStorageForMemoryOptimization { +private: + class TSourceInfo { + private: + YDB_READONLY_DEF(std::shared_ptr<IDataSource>, Source); + YDB_READONLY_DEF(std::shared_ptr<TFetchingScript>, FetchingInfo); + public: + TSourceInfo(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<TFetchingScript>& fetchingInfo) + : Source(source) + , FetchingInfo(fetchingInfo) + { + + } + + NJson::TJsonValue DebugJson() const { + NJson::TJsonValue result = NJson::JSON_MAP; + result.InsertValue("source", Source->DebugJsonForMemory()); +// result.InsertValue("fetching", Fetching->DebugJsonForMemory()); + return result; + } + }; + + std::map<ui64, THashMap<ui32, TSourceInfo>> Sources; + YDB_READONLY(ui64, MemorySum, 0); + YDB_READONLY_DEF(std::set<ui64>, PathIds); +public: + TString DebugString() const { + NJson::TJsonValue resultJson; + auto& memorySourcesArr = resultJson.InsertValue("sources_by_memory", NJson::JSON_ARRAY); + resultJson.InsertValue("sources_by_memory_count", Sources.size()); + for (auto it = Sources.rbegin(); it != Sources.rend(); ++it) { + auto& sourceMap = memorySourcesArr.AppendValue(NJson::JSON_MAP); + sourceMap.InsertValue("memory", it->first); + auto& sourcesArr = sourceMap.InsertValue("sources", NJson::JSON_ARRAY); + for (auto&& s : it->second) { + sourcesArr.AppendValue(s.second.DebugJson()); + } + } + return resultJson.GetStringRobust(); + } + + void UpdateSource(const ui64 oldMemoryInfo, const ui32 sourceIdx) { + auto it = Sources.find(oldMemoryInfo); + AFL_VERIFY(it != Sources.end()); + auto itSource = it->second.find(sourceIdx); + AFL_VERIFY(itSource != it->second.end()); + auto sourceInfo = itSource->second; + it->second.erase(itSource); + if (it->second.empty()) { + Sources.erase(it); + } + AFL_VERIFY(MemorySum >= oldMemoryInfo); + MemorySum -= oldMemoryInfo; + AddSource(sourceInfo.GetSource(), sourceInfo.GetFetchingInfo()); + } + + void AddSource(const std::shared_ptr<IDataSource>& source, const std::shared_ptr<TFetchingScript>& fetching) { + const ui64 sourceMemory = fetching->PredictRawBytes(source); + MemorySum += sourceMemory; + AFL_VERIFY(Sources[sourceMemory].emplace(source->GetSourceIdx(), TSourceInfo(source, fetching)).second); + PathIds.emplace(source->GetPathId()); + } + + bool Optimize(const ui64 memoryLimit) { + bool modified = true; + while (MemorySum > memoryLimit && modified) { + modified = false; + for (auto it = Sources.rbegin(); it != Sources.rend(); ++it) { + for (auto&& [sourceIdx, sourceInfo] : it->second) { + if (!sourceInfo.GetFetchingInfo()->InitSourceSeqColumnIds(sourceInfo.GetSource())) { + continue; + } + modified = true; + UpdateSource(it->first, sourceIdx); + break; + } + if (modified) { + break; + } + } + } + return MemorySum < memoryLimit; + } +}; + +TConclusionStatus TScanHead::DetectSourcesFeatureInContextIntervalScan(const THashMap<ui32, std::shared_ptr<IDataSource>>& intervalSources, const bool isExclusiveInterval) const { + TSourcesStorageForMemoryOptimization optimizer; + for (auto&& i : intervalSources) { + if (!isExclusiveInterval) { + i.second->SetExclusiveIntervalOnly(false); + } + auto fetchingPlan = Context->GetColumnsFetchingPlan(i.second); + optimizer.AddSource(i.second, fetchingPlan); + } + const ui64 startMemory = optimizer.GetMemorySum(); + if (!optimizer.Optimize(Context->ReduceMemoryIntervalLimit) && Context->RejectMemoryIntervalLimit < optimizer.GetMemorySum()) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "next_internal_broken") + ("reason", "a lot of memory need")("start", startMemory) + ("reduce_limit", Context->ReduceMemoryIntervalLimit) + ("reject_limit", Context->RejectMemoryIntervalLimit) + ("need", optimizer.GetMemorySum()) + ("path_ids", JoinSeq(",", optimizer.GetPathIds())) + ("details", IS_LOG_PRIORITY_ENABLED(NActors::NLog::PRI_DEBUG, NKikimrServices::TX_COLUMNSHARD_SCAN) ? optimizer.DebugString() : "NEED_DEBUG_LEVEL"); + Context->GetCommonContext()->GetCounters().OnOptimizedIntervalMemoryFailed(optimizer.GetMemorySum()); + return TConclusionStatus::Fail("We need a lot of memory in time for interval scanner: " + + ::ToString(optimizer.GetMemorySum()) + " path_ids: " + JoinSeq(",", optimizer.GetPathIds()) + ". We need wait compaction processing. Sorry."); + } else if (optimizer.GetMemorySum() < startMemory) { + AFL_INFO(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "memory_reduce_active") + ("reason", "need reduce memory")("start", startMemory) + ("reduce_limit", Context->ReduceMemoryIntervalLimit) + ("reject_limit", Context->RejectMemoryIntervalLimit) + ("need", optimizer.GetMemorySum()) + ("path_ids", JoinSeq(",", optimizer.GetPathIds())); + Context->GetCommonContext()->GetCounters().OnOptimizedIntervalMemoryReduced(startMemory - optimizer.GetMemorySum()); + } + Context->GetCommonContext()->GetCounters().OnOptimizedIntervalMemoryRequired(optimizer.GetMemorySum()); + return TConclusionStatus::Success(); +} + +TConclusion<bool> TScanHead::BuildNextInterval() { + if (AbortFlag) { + return false; + } + while (BorderPoints.size() && (FetchingIntervals.size() < InFlightLimit || BorderPoints.begin()->second.GetStartSources().empty())) { + auto firstBorderPointInfo = std::move(BorderPoints.begin()->second); + CurrentState.OnStartPoint(firstBorderPointInfo); + + if (CurrentState.GetIsSpecialPoint()) { + const ui32 intervalIdx = SegmentIdxCounter++; + auto interval = std::make_shared<TFetchingInterval>( + BorderPoints.begin()->first, BorderPoints.begin()->first, intervalIdx, CurrentState.GetCurrentSources(), + Context, true, true, false); + FetchingIntervals.emplace(intervalIdx, interval); + IntervalStats.emplace_back(CurrentState.GetCurrentSources().size(), true); + NResourceBroker::NSubscribe::ITask::StartResourceSubscription(Context->GetCommonContext()->GetResourceSubscribeActorId(), interval); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "new_interval")("interval_idx", intervalIdx)("interval", interval->DebugJson()); + } + + CurrentState.OnFinishPoint(firstBorderPointInfo); + + CurrentStart = BorderPoints.begin()->first; + BorderPoints.erase(BorderPoints.begin()); + if (CurrentState.GetCurrentSources().size()) { + Y_ABORT_UNLESS(BorderPoints.size()); + CurrentState.OnNextPointInfo(BorderPoints.begin()->second); + const ui32 intervalIdx = SegmentIdxCounter++; + auto interval = std::make_shared<TFetchingInterval>(*CurrentStart, BorderPoints.begin()->first, intervalIdx, CurrentState.GetCurrentSources(), Context, + CurrentState.GetIncludeFinish(), CurrentState.GetIncludeStart(), CurrentState.GetIsExclusiveInterval()); + FetchingIntervals.emplace(intervalIdx, interval); + IntervalStats.emplace_back(CurrentState.GetCurrentSources().size(), false); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "new_interval")("interval_idx", intervalIdx)("interval", interval->DebugJson()); + NResourceBroker::NSubscribe::ITask::StartResourceSubscription(Context->GetCommonContext()->GetResourceSubscribeActorId(), interval); + return true; + } else { + IntervalStats.emplace_back(CurrentState.GetCurrentSources().size(), false); + } + } + return false; +} + +const TReadContext& TScanHead::GetContext() const { + return *Context->GetCommonContext(); +} + +bool TScanHead::IsReverse() const { + return GetContext().GetReadMetadata()->IsDescSorted(); +} + +void TScanHead::Abort() { + AbortFlag = true; + THashSet<ui32> sourceIds; + for (auto&& i : FetchingIntervals) { + for (auto&& s : i.second->GetSources()) { + sourceIds.emplace(s.first); + } + i.second->Abort(); + } + for (auto&& i : BorderPoints) { + for (auto&& s : i.second.GetStartSources()) { + if (sourceIds.emplace(s->GetSourceIdx()).second) { + s->Abort(); + } + } + for (auto&& s : i.second.GetFinishSources()) { + if (sourceIds.emplace(s->GetSourceIdx()).second) { + s->Abort(); + } + } + } + FetchingIntervals.clear(); + BorderPoints.clear(); + Y_ABORT_UNLESS(IsFinished()); +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/scanner.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/scanner.h new file mode 100644 index 000000000000..75de439aec63 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/scanner.h @@ -0,0 +1,123 @@ +#pragma once +#include "source.h" +#include "interval.h" +#include <ydb/core/formats/arrow/reader/position.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_context.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> + +namespace NKikimr::NOlap::NReader::NPlain { + +class TPlainReadData; + +class TDataSourceEndpoint { +private: + YDB_READONLY_DEF(std::vector<std::shared_ptr<IDataSource>>, StartSources); + YDB_READONLY_DEF(std::vector<std::shared_ptr<IDataSource>>, FinishSources); +public: + void AddStart(std::shared_ptr<IDataSource> source) { + StartSources.emplace_back(source); + } + void AddFinish(std::shared_ptr<IDataSource> source) { + FinishSources.emplace_back(source); + } +}; + +class TIntervalStat { +private: + YDB_READONLY(ui32, SourcesCount, 0); + YDB_READONLY(bool, IsPoint, false); +public: + TIntervalStat(const ui32 sourcesCount, const bool isPoint) + : SourcesCount(sourcesCount) + , IsPoint(isPoint) + { + + } +}; + +class TScanContext { +private: + using TCurrentSources = THashMap<ui32, std::shared_ptr<IDataSource>>; + YDB_READONLY(bool, IncludeStart, false); + YDB_READONLY(bool, IncludeFinish, false); + YDB_READONLY_DEF(TCurrentSources, CurrentSources); + YDB_READONLY(bool, IsSpecialPoint, false); + YDB_READONLY(bool, IsExclusiveInterval, false); +public: + void OnStartPoint(const TDataSourceEndpoint& point) { + IsSpecialPoint = point.GetStartSources().size() && point.GetFinishSources().size(); + IncludeStart = point.GetStartSources().size() && !IsSpecialPoint; + for (auto&& i : point.GetStartSources()) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("add_source", i->GetSourceIdx()); + AFL_VERIFY(CurrentSources.emplace(i->GetSourceIdx(), i).second)("idx", i->GetSourceIdx()); + } + } + + void OnFinishPoint(const TDataSourceEndpoint& point) { + for (auto&& i : point.GetFinishSources()) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("remove_source", i->GetSourceIdx()); + AFL_VERIFY(CurrentSources.erase(i->GetSourceIdx()))("idx", i->GetSourceIdx()); + } + } + + void OnNextPointInfo(const TDataSourceEndpoint& nextPoint) { + IncludeFinish = nextPoint.GetStartSources().empty(); + IsExclusiveInterval = (CurrentSources.size() == 1) && IncludeStart && IncludeFinish; + } +}; + +class TScanHead { +private: + std::shared_ptr<TSpecialReadContext> Context; + bool SourcesInitialized = false; + TScanContext CurrentState; + std::map<NArrow::NMerger::TSortableBatchPosition, TDataSourceEndpoint> BorderPoints; + std::optional<NArrow::NMerger::TSortableBatchPosition> CurrentStart; + std::map<ui32, std::shared_ptr<TFetchingInterval>> FetchingIntervals; + THashMap<ui32, std::shared_ptr<TPartialReadResult>> ReadyIntervals; + ui32 SegmentIdxCounter = 0; + std::vector<TIntervalStat> IntervalStats; + ui64 InFlightLimit = 1; + ui64 ZeroCount = 0; + bool AbortFlag = false; + void DrainSources(); + [[nodiscard]] TConclusionStatus DetectSourcesFeatureInContextIntervalScan(const THashMap<ui32, std::shared_ptr<IDataSource>>& intervalSources, const bool isExclusiveInterval) const; +public: + void OnSentDataFromInterval(const ui32 intervalIdx) const { + if (AbortFlag) { + return; + } + auto it = FetchingIntervals.find(intervalIdx); + AFL_VERIFY(it != FetchingIntervals.end())("interval_idx", intervalIdx)("count", FetchingIntervals.size()); + it->second->OnPartSendingComplete(); + } + + bool IsReverse() const; + void Abort(); + + bool IsFinished() const { + return BorderPoints.empty() && FetchingIntervals.empty(); + } + + const TReadContext& GetContext() const; + + TString DebugString() const { + TStringBuilder sb; + for (auto&& i : IntervalStats) { + sb << (i.GetIsPoint() ? "^" : "") << i.GetSourcesCount() << ";"; + } + return sb; + } + + void OnIntervalResult(const std::optional<NArrow::TShardedRecordBatch>& batch, const std::shared_ptr<arrow::RecordBatch>& lastPK, + std::unique_ptr<NArrow::NMerger::TMergePartialStream>&& merger, const ui32 intervalIdx, TPlainReadData& reader); + + TConclusionStatus Start(); + + TScanHead(std::deque<std::shared_ptr<IDataSource>>&& sources, const std::shared_ptr<TSpecialReadContext>& context); + + [[nodiscard]] TConclusion<bool> BuildNextInterval(); + +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/source.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/source.cpp similarity index 59% rename from ydb/core/tx/columnshard/engines/reader/plain_reader/source.cpp rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/source.cpp index 3ba21e93aef1..723ba175f571 100644 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/source.cpp +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/source.cpp @@ -9,26 +9,16 @@ #include <ydb/core/formats/arrow/simple_arrays_cache.h> #include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> -namespace NKikimr::NOlap::NPlainReader { +namespace NKikimr::NOlap::NReader::NPlain { -void IDataSource::InitFetchingPlan(const std::shared_ptr<IFetchingStep>& fetchingFirstStep, const std::shared_ptr<IDataSource>& sourcePtr, const bool isExclusive) { - AFL_VERIFY(fetchingFirstStep); - if (AtomicCas(&FilterStageFlag, 1, 0)) { - StageData = std::make_unique<TFetchedData>(isExclusive); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("InitFetchingPlan", fetchingFirstStep->DebugString())("source_idx", SourceIdx); - NActors::TLogContextGuard logGuard(NActors::TLogContextBuilder::Build()("source", SourceIdx)("method", "InitFetchingPlan")); - if (IsAborted()) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "InitFetchingPlanAborted"); - return; - } - if (fetchingFirstStep->ExecuteInplace(sourcePtr, fetchingFirstStep)) { - auto task = std::make_shared<TStepAction>(sourcePtr, fetchingFirstStep->GetNextStep(), Context->GetCommonContext()->GetScanActorId()); - NConveyor::TScanServiceOperator::SendTaskToExecute(task); - } - } +void IDataSource::InitFetchingPlan(const std::shared_ptr<TFetchingScript>& fetching) { + AFL_VERIFY(fetching); + AFL_VERIFY(!FetchingPlan); + FetchingPlan = fetching; } void IDataSource::RegisterInterval(TFetchingInterval& interval) { + AFL_VERIFY(FetchingPlan); if (!IsReadyFlag) { AFL_VERIFY(Intervals.emplace(interval.GetIntervalIdx(), &interval).second); } @@ -44,8 +34,24 @@ void IDataSource::SetIsReady() { Intervals.clear(); } +void IDataSource::OnInitResourcesGuard(const std::shared_ptr<IDataSource>& sourcePtr) { + AFL_VERIFY(FetchingPlan); + if (AtomicCas(&FilterStageFlag, 1, 0)) { + StageData = std::make_unique<TFetchedData>(GetExclusiveIntervalOnly() && IsSourceInMemory()); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("InitFetchingPlan", FetchingPlan->DebugString())("source_idx", SourceIdx); + NActors::TLogContextGuard logGuard(NActors::TLogContextBuilder::Build()("source", SourceIdx)("method", "InitFetchingPlan")); + if (IsAborted()) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "InitFetchingPlanAborted"); + return; + } + TFetchingScriptCursor cursor(FetchingPlan, 0); + auto task = std::make_shared<TStepAction>(sourcePtr, std::move(cursor), Context->GetCommonContext()->GetScanActorId()); + NConveyor::TScanServiceOperator::SendTaskToExecute(task); + } +} + void TPortionDataSource::NeedFetchColumns(const std::set<ui32>& columnIds, - const std::shared_ptr<IBlobsReadingAction>& readingAction, THashMap<TBlobRange, ui32>& nullBlocks, + TBlobsAction& blobsAction, THashMap<TChunkAddress, ui32>& nullBlocks, const std::shared_ptr<NArrow::TColumnFilter>& filter) { const NArrow::TColumnFilter& cFilter = filter ? *filter : NArrow::TColumnFilter::BuildAllowFilter(); ui32 fetchedChunks = 0; @@ -59,52 +65,52 @@ void TPortionDataSource::NeedFetchColumns(const std::set<ui32>& columnIds, bool itFinished = false; for (auto&& c : columnChunks) { Y_ABORT_UNLESS(!itFinished); - if (!itFilter.IsBatchForSkip(c->GetMeta().GetNumRowsVerified())) { - readingAction->AddRange(c->BlobRange); + if (!itFilter.IsBatchForSkip(c->GetMeta().GetNumRows())) { + auto reading = blobsAction.GetReading(Schema->GetIndexInfo().GetColumnStorageId(c->GetColumnId(), Portion->GetMeta().GetTierName())); + reading->SetIsBackgroundProcess(false); + reading->AddRange(Portion->RestoreBlobRange(c->BlobRange)); ++fetchedChunks; } else { - nullBlocks.emplace(c->BlobRange, c->GetMeta().GetNumRowsVerified()); + nullBlocks.emplace(c->GetAddress(), c->GetMeta().GetNumRows()); ++nullChunks; } - itFinished = !itFilter.Next(c->GetMeta().GetNumRowsVerified()); + itFinished = !itFilter.Next(c->GetMeta().GetNumRows()); } AFL_VERIFY(itFinished)("filter", itFilter.DebugString())("count", Portion->NumRows(i)); } - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "chunks_stats")("fetch", fetchedChunks)("null", nullChunks)("reading_action", readingAction->GetStorageId())("columns", columnIds.size()); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "chunks_stats")("fetch", fetchedChunks)("null", nullChunks)("reading_actions", blobsAction.GetStorageIds())("columns", columnIds.size()); } -bool TPortionDataSource::DoStartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const std::shared_ptr<IFetchingStep>& step, const std::shared_ptr<TColumnsSet>& columns) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", step->GetName()); +bool TPortionDataSource::DoStartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const TFetchingScriptCursor& step, const std::shared_ptr<TColumnsSet>& columns) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", step.GetName()); AFL_VERIFY(columns->GetColumnsCount()); AFL_VERIFY(!StageData->GetAppliedFilter() || !StageData->GetAppliedFilter()->IsTotalDenyFilter()); auto& columnIds = columns->GetColumnIds(); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", step->GetName())("fetching_info", step->DebugString()); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", step.GetName())("fetching_info", step.DebugString()); - auto readAction = Portion->GetBlobsStorage()->StartReadingAction("CS::READ::" + step->GetName()); - readAction->SetIsBackgroundProcess(false); + TBlobsAction action(GetContext()->GetCommonContext()->GetStoragesManager(), NBlobOperations::EConsumer::SCAN); { - THashMap<TBlobRange, ui32> nullBlocks; - NeedFetchColumns(columnIds, readAction, nullBlocks, StageData->GetAppliedFilter()); + THashMap<TChunkAddress, ui32> nullBlocks; + NeedFetchColumns(columnIds, action, nullBlocks, StageData->GetAppliedFilter()); StageData->AddNulls(std::move(nullBlocks)); } - if (!readAction->GetExpectedBlobsSize()) { + auto readActions = action.GetReadingActions(); + if (!readActions.size()) { return false; } - std::vector<std::shared_ptr<IBlobsReadingAction>> actions = {readAction}; - auto constructor = std::make_shared<TBlobsFetcherTask>(actions, sourcePtr, step, GetContext(), "CS::READ::" + step->GetName(), ""); + auto constructor = std::make_shared<TBlobsFetcherTask>(readActions, sourcePtr, step, GetContext(), "CS::READ::" + step.GetName(), ""); NActors::TActivationContext::AsActorContext().Register(new NOlap::NBlobOperations::NRead::TActor(constructor)); return true; } -bool TPortionDataSource::DoStartFetchingIndexes(const std::shared_ptr<IDataSource>& sourcePtr, const std::shared_ptr<IFetchingStep>& step, const std::shared_ptr<TIndexesSet>& indexes) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", step->GetName()); +bool TPortionDataSource::DoStartFetchingIndexes(const std::shared_ptr<IDataSource>& sourcePtr, const TFetchingScriptCursor& step, const std::shared_ptr<TIndexesSet>& indexes) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", step.GetName()); Y_ABORT_UNLESS(indexes->GetIndexesCount()); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", step->GetName())("fetching_info", step->DebugString()); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", step.GetName())("fetching_info", step.DebugString()); - auto readAction = Portion->GetBlobsStorage()->StartReadingAction("CS::READ::" + step->GetName()); - readAction->SetIsBackgroundProcess(false); + TBlobsAction action(GetContext()->GetCommonContext()->GetStoragesManager(), NBlobOperations::EConsumer::SCAN); { std::set<ui32> indexIds; for (auto&& i : Portion->GetIndexes()) { @@ -112,20 +118,21 @@ bool TPortionDataSource::DoStartFetchingIndexes(const std::shared_ptr<IDataSourc continue; } indexIds.emplace(i.GetIndexId()); - readAction->AddRange(i.GetBlobRange()); + auto readAction = action.GetReading(Schema->GetIndexInfo().GetIndexStorageId(i.GetIndexId())); + readAction->SetIsBackgroundProcess(false); + readAction->AddRange(Portion->RestoreBlobRange(i.GetBlobRange())); } if (indexes->GetIndexIdsSet().size() != indexIds.size()) { return false; } } - - if (!readAction->GetExpectedBlobsSize()) { + auto readingActions = action.GetReadingActions(); + if (!readingActions.size()) { NYDBTest::TControllers::GetColumnShardController()->OnIndexSelectProcessed({}); return false; } - std::vector<std::shared_ptr<IBlobsReadingAction>> actions = {readAction}; - auto constructor = std::make_shared<TBlobsFetcherTask>(actions, sourcePtr, step, GetContext(), "CS::READ::" + step->GetName(), ""); + auto constructor = std::make_shared<TBlobsFetcherTask>(readingActions, sourcePtr, step, GetContext(), "CS::READ::" + step.GetName(), ""); NActors::TActivationContext::AsActorContext().Register(new NOlap::NBlobOperations::NRead::TActor(constructor)); return true; } @@ -144,7 +151,7 @@ void TPortionDataSource::DoApplyIndex(const NIndexes::TIndexCheckerContainer& in if (!indexIds.contains(i->GetIndexId())) { continue; } - indexBlobs[i->GetIndexId()].emplace_back(StageData->ExtractBlob(i->GetBlobRange())); + indexBlobs[i->GetIndexId()].emplace_back(StageData->ExtractBlob(i->GetAddress())); } for (auto&& i : indexIds) { if (!indexBlobs.contains(i)) { @@ -169,26 +176,57 @@ void TPortionDataSource::DoApplyIndex(const NIndexes::TIndexCheckerContainer& in } } -bool TCommittedDataSource::DoStartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const std::shared_ptr<IFetchingStep>& step, const std::shared_ptr<TColumnsSet>& /*columns*/) { +void TPortionDataSource::DoAssembleColumns(const std::shared_ptr<TColumnsSet>& columns) { + auto blobSchema = GetContext()->GetReadMetadata()->GetLoadSchemaVerified(*Portion); + if (SequentialEntityIds.empty()) { + MutableStageData().AddBatch(Portion->PrepareForAssemble(*blobSchema, columns->GetFilteredSchemaVerified(), MutableStageData().MutableBlobs()).AssembleTable()); + } else { + { + auto inMemColumns = columns->GetColumnIds(); + for (auto&& i : SequentialEntityIds) { + inMemColumns.erase(i); + } + if (inMemColumns.size()) { + auto filteredSchema = std::make_shared<TFilteredSnapshotSchema>(columns->GetFilteredSchemaPtrVerified(), inMemColumns); + MutableStageData().AddBatch(Portion->PrepareForAssemble(*blobSchema, *filteredSchema, MutableStageData().MutableBlobs()).AssembleTable()); + } + } + { + std::set<ui32> scanColumns; + for (auto&& i : columns->GetColumnIds()) { + if (SequentialEntityIds.contains(i)) { + scanColumns.emplace(i); + } + } + if (scanColumns.size()) { + auto filteredSchema = std::make_shared<TFilteredSnapshotSchema>(columns->GetFilteredSchemaPtrVerified(), scanColumns); + MutableStageData().AddBatch(Portion->PrepareForAssemble(*blobSchema, *filteredSchema, MutableStageData().MutableBlobs()).AssembleForSeqAccess()); + } + } + } +} + +bool TCommittedDataSource::DoStartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const TFetchingScriptCursor& step, const std::shared_ptr<TColumnsSet>& /*columns*/) { if (ReadStarted) { return false; } ReadStarted = true; - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", step->GetName())("fetching_info", step->DebugString()); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", step.GetName())("fetching_info", step.DebugString()); std::shared_ptr<IBlobsStorageOperator> storageOperator = GetContext()->GetCommonContext()->GetStoragesManager()->GetInsertOperator(); - auto readAction = storageOperator->StartReadingAction("CS::READ::" + step->GetName()); + auto readAction = storageOperator->StartReadingAction(NBlobOperations::EConsumer::SCAN); readAction->SetIsBackgroundProcess(false); readAction->AddRange(CommittedBlob.GetBlobRange()); std::vector<std::shared_ptr<IBlobsReadingAction>> actions = {readAction}; - auto constructor = std::make_shared<TBlobsFetcherTask>(actions, sourcePtr, step, GetContext(), "CS::READ::" + step->GetName(), ""); + auto constructor = std::make_shared<TBlobsFetcherTask>(actions, sourcePtr, step, GetContext(), "CS::READ::" + step.GetName(), ""); NActors::TActivationContext::AsActorContext().Register(new NOlap::NBlobOperations::NRead::TActor(constructor)); return true; } void TCommittedDataSource::DoAssembleColumns(const std::shared_ptr<TColumnsSet>& columns) { + TMemoryProfileGuard mGuard("SCAN_PROFILE::ASSEMBLER::COMMITTED", IS_DEBUG_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD_SCAN_MEMORY)); if (!GetStageData().GetTable()) { Y_ABORT_UNLESS(GetStageData().GetBlobs().size() == 1); auto bData = MutableStageData().ExtractBlob(GetStageData().GetBlobs().begin()->first); diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/source.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/source.h similarity index 51% rename from ydb/core/tx/columnshard/engines/reader/plain_reader/source.h rename to ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/source.h index 3cce8e16eef7..8e95c20d79e2 100644 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/source.h +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/source.h @@ -2,19 +2,22 @@ #include "context.h" #include "columns_set.h" #include "fetched_data.h" -#include <ydb/core/tx/columnshard/resource_subscriber/task.h> -#include <ydb/core/tx/columnshard/engines/reader/read_filter_merger.h> #include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/action.h> +#include <ydb/core/tx/columnshard/common/snapshot.h> #include <ydb/core/tx/columnshard/engines/portions/portion_info.h> #include <ydb/core/tx/columnshard/engines/insert_table/data.h> -#include <ydb/core/tx/columnshard/common/snapshot.h> +#include <ydb/core/tx/columnshard/resource_subscriber/task.h> +#include <ydb/core/tx/columnshard/engines/scheme/versions/filtered_scheme.h> #include <ydb/core/formats/arrow/arrow_helpers.h> +#include <ydb/core/formats/arrow/reader/position.h> +#include <util/string/join.h> namespace NKikimr::NOlap { class IDataReader; } -namespace NKikimr::NOlap::NPlainReader { +namespace NKikimr::NOlap::NReader::NPlain { class TFetchingInterval; class TPlainReadData; @@ -23,19 +26,22 @@ class IFetchingStep; class IDataSource { private: + YDB_ACCESSOR(bool, ExclusiveIntervalOnly, true); YDB_READONLY(ui32, SourceIdx, 0); - YDB_READONLY_DEF(NIndexedReader::TSortableBatchPosition, Start); - YDB_READONLY_DEF(NIndexedReader::TSortableBatchPosition, Finish); + YDB_READONLY_DEF(NArrow::NMerger::TSortableBatchPosition, Start); + YDB_READONLY_DEF(NArrow::NMerger::TSortableBatchPosition, Finish); NArrow::TReplaceKey StartReplaceKey; NArrow::TReplaceKey FinishReplaceKey; YDB_READONLY_DEF(std::shared_ptr<TSpecialReadContext>, Context); YDB_READONLY(TSnapshot, RecordSnapshotMax, TSnapshot::Zero()); - std::optional<ui32> RecordsCount; + YDB_READONLY(ui32, RecordsCount, 0); YDB_READONLY(ui32, IntervalsCount, 0); virtual NJson::TJsonValue DoDebugJson() const = 0; bool MergingStartedFlag = false; bool AbortedFlag = false; + std::shared_ptr<TFetchingScript> FetchingPlan; protected: + bool IsSourceInMemoryFlag = true; THashMap<ui32, TFetchingInterval*> Intervals; std::unique_ptr<TFetchedData> StageData; @@ -44,16 +50,37 @@ class IDataSource { TAtomic FilterStageFlag = 0; bool IsReadyFlag = false; - bool IsAborted() const { - return AbortedFlag; - } - - virtual bool DoStartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const std::shared_ptr<IFetchingStep>& step, const std::shared_ptr<TColumnsSet>& columns) = 0; - virtual bool DoStartFetchingIndexes(const std::shared_ptr<IDataSource>& sourcePtr, const std::shared_ptr<IFetchingStep>& step, const std::shared_ptr<TIndexesSet>& indexes) = 0; + virtual bool DoStartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const TFetchingScriptCursor& step, const std::shared_ptr<TColumnsSet>& columns) = 0; + virtual bool DoStartFetchingIndexes(const std::shared_ptr<IDataSource>& sourcePtr, const TFetchingScriptCursor& step, const std::shared_ptr<TIndexesSet>& indexes) = 0; virtual void DoAssembleColumns(const std::shared_ptr<TColumnsSet>& columns) = 0; virtual void DoAbort() = 0; virtual void DoApplyIndex(const NIndexes::TIndexCheckerContainer& indexMeta) = 0; + virtual bool DoAddSequentialEntityIds(const ui32 entityId) = 0; + virtual NJson::TJsonValue DoDebugJsonForMemory() const { + return NJson::JSON_MAP; + } public: + void OnInitResourcesGuard(const std::shared_ptr<IDataSource>& sourcePtr); + + bool IsAborted() const { + return AbortedFlag; + } + bool IsSourceInMemory() const { + return IsSourceInMemoryFlag; + } + virtual bool IsSourceInMemory(const std::set<ui32>& fieldIds) const = 0; + bool AddSequentialEntityIds(const ui32 entityId) { + if (DoAddSequentialEntityIds(entityId)) { + IsSourceInMemoryFlag = false; + return true; + } + return false; + } + virtual THashMap<TChunkAddress, TString> DecodeBlobAddresses(NBlobOperations::NRead::TCompositeReadBlobs&& blobsOriginal) const = 0; + + virtual ui64 GetPathId() const = 0; + virtual bool HasIndexes(const std::set<ui32>& indexIds) const = 0; + const NArrow::TReplaceKey& GetStartReplaceKey() const { return StartReplaceKey; } @@ -69,13 +96,10 @@ class IDataSource { void SetIsReady(); void Finalize() { + TMemoryProfileGuard mpg("SCAN_PROFILE::STAGE_RESULT", IS_DEBUG_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD_SCAN_MEMORY)); StageResult = std::make_unique<TFetchedResult>(std::move(StageData)); } - bool IsEmptyData() const { - return GetStageData().IsEmpty(); - } - void ApplyIndex(const NIndexes::TIndexCheckerContainer& indexMeta) { return DoApplyIndex(indexMeta); } @@ -87,16 +111,16 @@ class IDataSource { DoAssembleColumns(columns); } - bool StartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const std::shared_ptr<IFetchingStep>& step, const std::shared_ptr<TColumnsSet>& columns) { + bool StartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const TFetchingScriptCursor& step, const std::shared_ptr<TColumnsSet>& columns) { AFL_VERIFY(columns); return DoStartFetchingColumns(sourcePtr, step, columns); } - bool StartFetchingIndexes(const std::shared_ptr<IDataSource>& sourcePtr, const std::shared_ptr<IFetchingStep>& step, const std::shared_ptr<TIndexesSet>& indexes) { + bool StartFetchingIndexes(const std::shared_ptr<IDataSource>& sourcePtr, const TFetchingScriptCursor& step, const std::shared_ptr<TIndexesSet>& indexes) { AFL_VERIFY(indexes); return DoStartFetchingIndexes(sourcePtr, step, indexes); } - void InitFetchingPlan(const std::shared_ptr<IFetchingStep>& fetchingFirstStep, const std::shared_ptr<IDataSource>& sourcePtr, const bool isExclusive); + void InitFetchingPlan(const std::shared_ptr<TFetchingScript>& fetching); std::shared_ptr<arrow::RecordBatch> GetLastPK() const { return Finish.ExtractSortingPosition(); @@ -105,8 +129,8 @@ class IDataSource { ++IntervalsCount; } - virtual ui64 GetRawBytes(const std::set<ui32>& columnIds) const = 0; - virtual ui64 GetIndexBytes(const std::set<ui32>& indexIds) const = 0; + virtual ui64 GetColumnRawBytes(const std::set<ui32>& columnIds) const = 0; + virtual ui64 GetIndexRawBytes(const std::set<ui32>& indexIds) const = 0; bool IsMergingStarted() const { return MergingStartedFlag; @@ -123,6 +147,13 @@ class IDataSource { DoAbort(); } + NJson::TJsonValue DebugJsonForMemory() const { + NJson::TJsonValue result = NJson::JSON_MAP; + result.InsertValue("details", DoDebugJsonForMemory()); + result.InsertValue("count", RecordsCount); + return result; + } + NJson::TJsonValue DebugJson() const { NJson::TJsonValue result = NJson::JSON_MAP; result.InsertValue("source_idx", SourceIdx); @@ -148,17 +179,11 @@ class IDataSource { return *StageData; } - ui32 GetRecordsCount() const { - AFL_VERIFY(RecordsCount); - return *RecordsCount; - } - void RegisterInterval(TFetchingInterval& interval); IDataSource(const ui32 sourceIdx, const std::shared_ptr<TSpecialReadContext>& context, const NArrow::TReplaceKey& start, const NArrow::TReplaceKey& finish, - const TSnapshot& recordSnapshotMax, const std::optional<ui32> recordsCount - ) + const TSnapshot& recordSnapshotMax, const ui32 recordsCount) : SourceIdx(sourceIdx) , Start(context->GetReadMetadata()->BuildSortedPosition(start)) , Finish(context->GetReadMetadata()->BuildSortedPosition(finish)) @@ -183,19 +208,18 @@ class IDataSource { class TPortionDataSource: public IDataSource { private: using TBase = IDataSource; + std::set<ui32> SequentialEntityIds; std::shared_ptr<TPortionInfo> Portion; + std::shared_ptr<ISnapshotSchema> Schema; void NeedFetchColumns(const std::set<ui32>& columnIds, - const std::shared_ptr<IBlobsReadingAction>& readingAction, THashMap<TBlobRange, ui32>& nullBlocks, + TBlobsAction& blobsAction, THashMap<TChunkAddress, ui32>& nullBlocks, const std::shared_ptr<NArrow::TColumnFilter>& filter); virtual void DoApplyIndex(const NIndexes::TIndexCheckerContainer& indexChecker) override; - virtual bool DoStartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const std::shared_ptr<IFetchingStep>& step, const std::shared_ptr<TColumnsSet>& columns) override; - virtual bool DoStartFetchingIndexes(const std::shared_ptr<IDataSource>& sourcePtr, const std::shared_ptr<IFetchingStep>& step, const std::shared_ptr<TIndexesSet>& indexes) override; - virtual void DoAssembleColumns(const std::shared_ptr<TColumnsSet>& columns) override { - auto blobSchema = GetContext()->GetReadMetadata()->GetLoadSchema(Portion->GetMinSnapshot()); - MutableStageData().AddBatch(Portion->PrepareForAssemble(*blobSchema, columns->GetFilteredSchemaVerified(), MutableStageData().MutableBlobs()).AssembleTable()); - } + virtual bool DoStartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const TFetchingScriptCursor& step, const std::shared_ptr<TColumnsSet>& columns) override; + virtual bool DoStartFetchingIndexes(const std::shared_ptr<IDataSource>& sourcePtr, const TFetchingScriptCursor& step, const std::shared_ptr<TIndexesSet>& indexes) override; + virtual void DoAssembleColumns(const std::shared_ptr<TColumnsSet>& columns) override; virtual NJson::TJsonValue DoDebugJson() const override { NJson::TJsonValue result = NJson::JSON_MAP; result.InsertValue("type", "portion"); @@ -203,14 +227,72 @@ class TPortionDataSource: public IDataSource { return result; } + virtual NJson::TJsonValue DoDebugJsonForMemory() const override { + NJson::TJsonValue result = TBase::DoDebugJsonForMemory(); + auto columns = Portion->GetColumnIds(); + for (auto&& i : SequentialEntityIds) { + AFL_VERIFY(columns.erase(i)); + } +// result.InsertValue("sequential_columns", JoinSeq(",", SequentialEntityIds)); + if (SequentialEntityIds.size()) { + result.InsertValue("min_memory_seq", Portion->GetMinMemoryForReadColumns(SequentialEntityIds)); + result.InsertValue("min_memory_seq_blobs", Portion->GetColumnBlobBytes(SequentialEntityIds)); + result.InsertValue("in_mem", Portion->GetColumnRawBytes(columns, false)); + } + result.InsertValue("columns_in_mem", JoinSeq(",", columns)); + result.InsertValue("portion_id", Portion->GetPortionId()); + result.InsertValue("raw", Portion->GetTotalRawBytes()); + result.InsertValue("blob", Portion->GetTotalBlobBytes()); + result.InsertValue("read_memory", GetColumnRawBytes(Portion->GetColumnIds())); + return result; + } virtual void DoAbort() override; + virtual ui64 GetPathId() const override { + return Portion->GetPathId(); + } + virtual bool DoAddSequentialEntityIds(const ui32 entityId) override { + return SequentialEntityIds.emplace(entityId).second; + } + public: - virtual ui64 GetRawBytes(const std::set<ui32>& columnIds) const override { - return Portion->GetRawBytes(columnIds); + virtual bool HasIndexes(const std::set<ui32>& indexIds) const override { + return Portion->HasIndexes(indexIds); + } + + virtual THashMap<TChunkAddress, TString> DecodeBlobAddresses(NBlobOperations::NRead::TCompositeReadBlobs&& blobsOriginal) const override { + return Portion->DecodeBlobAddresses(std::move(blobsOriginal), Schema->GetIndexInfo()); + } + + virtual bool IsSourceInMemory(const std::set<ui32>& fieldIds) const override { + for (auto&& i : SequentialEntityIds) { + if (fieldIds.contains(i)) { + return false; + } + } + return true; + } + + virtual ui64 GetColumnRawBytes(const std::set<ui32>& columnsIds) const override { + if (SequentialEntityIds.size()) { + std::set<ui32> selectedSeq; + std::set<ui32> selectedInMem; + for (auto&& i : columnsIds) { + if (SequentialEntityIds.contains(i)) { + selectedSeq.emplace(i); + } else { + selectedInMem.emplace(i); + } + } + return Portion->GetMinMemoryForReadColumns(selectedSeq) + + Portion->GetColumnBlobBytes(selectedSeq) + + Portion->GetColumnRawBytes(selectedInMem, false); + } else { + return Portion->GetColumnRawBytes(columnsIds, false); + } } - virtual ui64 GetIndexBytes(const std::set<ui32>& columnIds) const override { - return Portion->GetIndexBytes(columnIds); + virtual ui64 GetIndexRawBytes(const std::set<ui32>& indexIds) const override { + return Portion->GetIndexRawBytes(indexIds, false); } const TPortionInfo& GetPortionInfo() const { @@ -225,6 +307,7 @@ class TPortionDataSource: public IDataSource { const NArrow::TReplaceKey& start, const NArrow::TReplaceKey& finish) : TBase(sourceIdx, context, start, finish, portion->RecordSnapshotMax(), portion->GetRecordsCount()) , Portion(portion) + , Schema(GetContext()->GetReadMetadata()->GetLoadSchemaVerified(*Portion)) { } }; @@ -239,8 +322,8 @@ class TCommittedDataSource: public IDataSource { } - virtual bool DoStartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const std::shared_ptr<IFetchingStep>& step, const std::shared_ptr<TColumnsSet>& columns) override; - virtual bool DoStartFetchingIndexes(const std::shared_ptr<IDataSource>& /*sourcePtr*/, const std::shared_ptr<IFetchingStep>& /*step*/, const std::shared_ptr<TIndexesSet>& /*indexes*/) override { + virtual bool DoStartFetchingColumns(const std::shared_ptr<IDataSource>& sourcePtr, const TFetchingScriptCursor& step, const std::shared_ptr<TColumnsSet>& columns) override; + virtual bool DoStartFetchingIndexes(const std::shared_ptr<IDataSource>& /*sourcePtr*/, const TFetchingScriptCursor& /*step*/, const std::shared_ptr<TIndexesSet>& /*indexes*/) override { return false; } virtual void DoApplyIndex(const NIndexes::TIndexCheckerContainer& /*indexMeta*/) override { @@ -254,12 +337,37 @@ class TCommittedDataSource: public IDataSource { result.InsertValue("info", CommittedBlob.DebugString()); return result; } + virtual ui64 GetPathId() const override { + return 0; + } + virtual bool DoAddSequentialEntityIds(const ui32 /*entityId*/) override { + return false; + } public: - virtual ui64 GetRawBytes(const std::set<ui32>& /*columnIds*/) const override { + virtual THashMap<TChunkAddress, TString> DecodeBlobAddresses(NBlobOperations::NRead::TCompositeReadBlobs&& blobsOriginal) const override { + THashMap<TChunkAddress, TString> result; + for (auto&& i : blobsOriginal) { + for (auto&& b : i.second) { + result.emplace(TChunkAddress(1, 1), std::move(b.second)); + } + } + return result; + } + + virtual bool IsSourceInMemory(const std::set<ui32>& /*fieldIds*/) const override { + return true; + } + + virtual bool HasIndexes(const std::set<ui32>& /*indexIds*/) const override { + return false; + } + + virtual ui64 GetColumnRawBytes(const std::set<ui32>& /*columnIds*/) const override { return CommittedBlob.GetBlobRange().Size; } - virtual ui64 GetIndexBytes(const std::set<ui32>& /*columnIds*/) const override { + virtual ui64 GetIndexRawBytes(const std::set<ui32>& /*columnIds*/) const override { + AFL_VERIFY(false); return 0; } @@ -269,7 +377,7 @@ class TCommittedDataSource: public IDataSource { TCommittedDataSource(const ui32 sourceIdx, const TCommittedBlob& committed, const std::shared_ptr<TSpecialReadContext>& context, const NArrow::TReplaceKey& start, const NArrow::TReplaceKey& finish) - : TBase(sourceIdx, context, start, finish, committed.GetSnapshot(), {}) + : TBase(sourceIdx, context, start, finish, committed.GetSnapshot(), committed.GetRecordsCount()) , CommittedBlob(committed) { } diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/ya.make b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/ya.make new file mode 100644 index 000000000000..cfa691a22e84 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/ya.make @@ -0,0 +1,23 @@ +LIBRARY() + +SRCS( + scanner.cpp + constructor.cpp + source.cpp + interval.cpp + fetched_data.cpp + plain_read_data.cpp + merge.cpp + columns_set.cpp + context.cpp + fetching.cpp + iterator.cpp +) + +PEERDIR( + ydb/core/formats/arrow + ydb/core/tx/columnshard/blobs_action + ydb/core/tx/conveyor/usage +) + +END() diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/scanner.cpp b/ydb/core/tx/columnshard/engines/reader/plain_reader/scanner.cpp deleted file mode 100644 index 7611a4488ff2..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/scanner.cpp +++ /dev/null @@ -1,143 +0,0 @@ -#include "scanner.h" -#include "plain_read_data.h" -#include <ydb/core/tx/columnshard/engines/reader/read_context.h> -#include <ydb/core/tx/columnshard/engines/reader/read_metadata.h> - -namespace NKikimr::NOlap::NPlainReader { - -void TScanHead::OnIntervalResult(const std::optional<NArrow::TShardedRecordBatch>& newBatch, const std::shared_ptr<arrow::RecordBatch>& lastPK, const ui32 intervalIdx, TPlainReadData& reader) { - if (Context->GetReadMetadata()->Limit && (!newBatch || newBatch->GetRecordsCount() == 0) && InFlightLimit < 1000) { - if (++ZeroCount == std::max<ui64>(16, InFlightLimit)) { - InFlightLimit *= 2; - ZeroCount = 0; - } - } else { - ZeroCount = 0; - } - auto itInterval = FetchingIntervals.find(intervalIdx); - AFL_VERIFY(itInterval != FetchingIntervals.end()); - if (!Context->GetCommonContext()->GetReadMetadata()->IsSorted()) { - if (newBatch && newBatch->GetRecordsCount()) { - reader.OnIntervalResult(std::make_shared<TPartialReadResult>(itInterval->second->GetResourcesGuard(), *newBatch, lastPK)); - } - AFL_VERIFY(FetchingIntervals.erase(intervalIdx)); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "interval_result")("interval_idx", intervalIdx)("count", newBatch ? newBatch->GetRecordsCount() : 0); - } else { - if (newBatch && newBatch->GetRecordsCount()) { - AFL_VERIFY(ReadyIntervals.emplace(intervalIdx, std::make_shared<TPartialReadResult>(itInterval->second->GetResourcesGuard(), *newBatch, lastPK)).second); - } else { - AFL_VERIFY(ReadyIntervals.emplace(intervalIdx, nullptr).second); - } - Y_ABORT_UNLESS(FetchingIntervals.size()); - while (FetchingIntervals.size()) { - const auto interval = FetchingIntervals.begin()->second; - const ui32 intervalIdx = interval->GetIntervalIdx(); - auto it = ReadyIntervals.find(intervalIdx); - if (it == ReadyIntervals.end()) { - break; - } - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "interval_result")("interval_idx", intervalIdx)("count", it->second ? it->second->GetRecordsCount() : 0); - FetchingIntervals.erase(FetchingIntervals.begin()); - if (it->second) { - reader.OnIntervalResult(it->second); - } - ReadyIntervals.erase(it); - } - if (FetchingIntervals.empty()) { - AFL_VERIFY(ReadyIntervals.empty()); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "intervals_finished"); - } else { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "wait_interval")("remained", FetchingIntervals.size())("interval_idx", FetchingIntervals.begin()->first); - } - } -} - -TScanHead::TScanHead(std::deque<std::shared_ptr<IDataSource>>&& sources, const std::shared_ptr<TSpecialReadContext>& context) - : Context(context) -{ - InFlightLimit = Context->GetReadMetadata()->Limit ? 1 : Max<ui32>(); - while (sources.size()) { - auto source = sources.front(); - BorderPoints[source->GetStart()].AddStart(source); - BorderPoints[source->GetFinish()].AddFinish(source); - sources.pop_front(); - } - - THashMap<ui32, std::shared_ptr<IDataSource>> currentSources; - for (auto&& i : BorderPoints) { - for (auto&& s : i.second.GetStartSources()) { - AFL_VERIFY(currentSources.emplace(s->GetSourceIdx(), s).second); - } - for (auto&& [_, source] : currentSources) { - source->IncIntervalsCount(); - } - for (auto&& s : i.second.GetFinishSources()) { - AFL_VERIFY(currentSources.erase(s->GetSourceIdx())); - } - } -} - -bool TScanHead::BuildNextInterval() { - while (BorderPoints.size() && (FetchingIntervals.size() < InFlightLimit || BorderPoints.begin()->second.GetStartSources().empty())) { - auto firstBorderPointInfo = std::move(BorderPoints.begin()->second); - bool includeStart = firstBorderPointInfo.GetStartSources().size(); - for (auto&& i : firstBorderPointInfo.GetStartSources()) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("add_source", i->GetSourceIdx()); - AFL_VERIFY(CurrentSegments.emplace(i->GetSourceIdx(), i).second)("idx", i->GetSourceIdx()); - } - - if (firstBorderPointInfo.GetStartSources().size() && firstBorderPointInfo.GetFinishSources().size()) { - includeStart = false; - const ui32 intervalIdx = SegmentIdxCounter++; - auto interval = std::make_shared<TFetchingInterval>( - BorderPoints.begin()->first, BorderPoints.begin()->first, intervalIdx, CurrentSegments, - Context, true, true, false); - FetchingIntervals.emplace(intervalIdx, interval); - IntervalStats.emplace_back(CurrentSegments.size(), true); - NResourceBroker::NSubscribe::ITask::StartResourceSubscription(Context->GetCommonContext()->GetResourceSubscribeActorId(), interval); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "new_interval")("interval_idx", intervalIdx)("interval", interval->DebugJson()); - } - - for (auto&& i : firstBorderPointInfo.GetFinishSources()) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("remove_source", i->GetSourceIdx()); - AFL_VERIFY(CurrentSegments.erase(i->GetSourceIdx()))("idx", i->GetSourceIdx()); - } - - CurrentStart = BorderPoints.begin()->first; - BorderPoints.erase(BorderPoints.begin()); - if (CurrentSegments.size()) { - Y_ABORT_UNLESS(BorderPoints.size()); - const bool includeFinish = BorderPoints.begin()->second.GetStartSources().empty(); - const ui32 intervalIdx = SegmentIdxCounter++; - const bool isExclusiveInterval = (CurrentSegments.size() == 1) && includeStart && includeFinish; - auto interval = std::make_shared<TFetchingInterval>(*CurrentStart, BorderPoints.begin()->first, intervalIdx, CurrentSegments, Context, includeFinish, includeStart, isExclusiveInterval); - FetchingIntervals.emplace(intervalIdx, interval); - IntervalStats.emplace_back(CurrentSegments.size(), false); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "new_interval")("interval_idx", intervalIdx)("interval", interval->DebugJson()); - NResourceBroker::NSubscribe::ITask::StartResourceSubscription(Context->GetCommonContext()->GetResourceSubscribeActorId(), interval); - return true; - } else { - IntervalStats.emplace_back(CurrentSegments.size(), false); - } - } - return false; -} - -const NKikimr::NOlap::TReadContext& TScanHead::GetContext() const { - return *Context->GetCommonContext(); -} - -bool TScanHead::IsReverse() const { - return GetContext().GetReadMetadata()->IsDescSorted(); -} - -void TScanHead::Abort() { - for (auto&& i : FetchingIntervals) { - i.second->Abort(); - } - FetchingIntervals.clear(); - BorderPoints.clear(); - Y_ABORT_UNLESS(IsFinished()); -} - -} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/scanner.h b/ydb/core/tx/columnshard/engines/reader/plain_reader/scanner.h deleted file mode 100644 index 8e071e8f54a5..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/scanner.h +++ /dev/null @@ -1,76 +0,0 @@ -#pragma once -#include "source.h" -#include "interval.h" -#include <ydb/core/tx/columnshard/engines/reader/read_context.h> - -namespace NKikimr::NOlap::NPlainReader { - -class TPlainReadData; - -class TDataSourceEndpoint { -private: - YDB_READONLY_DEF(std::vector<std::shared_ptr<IDataSource>>, StartSources); - YDB_READONLY_DEF(std::vector<std::shared_ptr<IDataSource>>, FinishSources); -public: - void AddStart(std::shared_ptr<IDataSource> source) { - StartSources.emplace_back(source); - } - void AddFinish(std::shared_ptr<IDataSource> source) { - FinishSources.emplace_back(source); - } -}; - -class TIntervalStat { -private: - YDB_READONLY(ui32, SourcesCount, 0); - YDB_READONLY(bool, IsPoint, false); -public: - TIntervalStat(const ui32 sourcesCount, const bool isPoint) - : SourcesCount(sourcesCount) - , IsPoint(isPoint) - { - - } -}; - -class TScanHead { -private: - std::shared_ptr<TSpecialReadContext> Context; - std::map<NIndexedReader::TSortableBatchPosition, TDataSourceEndpoint> BorderPoints; - std::map<ui32, std::shared_ptr<IDataSource>> CurrentSegments; - std::optional<NIndexedReader::TSortableBatchPosition> CurrentStart; - std::map<ui32, std::shared_ptr<TFetchingInterval>> FetchingIntervals; - THashMap<ui32, std::shared_ptr<TPartialReadResult>> ReadyIntervals; - ui32 SegmentIdxCounter = 0; - std::vector<TIntervalStat> IntervalStats; - void DrainSources(); - ui64 InFlightLimit = 1; - ui64 ZeroCount = 0; -public: - - bool IsReverse() const; - void Abort(); - - bool IsFinished() const { - return BorderPoints.empty() && FetchingIntervals.empty(); - } - - const TReadContext& GetContext() const; - - TString DebugString() const { - TStringBuilder sb; - for (auto&& i : IntervalStats) { - sb << (i.GetIsPoint() ? "^" : "") << i.GetSourcesCount() << ";"; - } - return sb; - } - - void OnIntervalResult(const std::optional<NArrow::TShardedRecordBatch>& batch, const std::shared_ptr<arrow::RecordBatch>& lastPK, const ui32 intervalIdx, TPlainReadData& reader); - - TScanHead(std::deque<std::shared_ptr<IDataSource>>&& sources, const std::shared_ptr<TSpecialReadContext>& context); - - bool BuildNextInterval(); - -}; - -} diff --git a/ydb/core/tx/columnshard/engines/reader/plain_reader/ya.make b/ydb/core/tx/columnshard/engines/reader/plain_reader/ya.make index 4a4db941aa67..c0e311e32598 100644 --- a/ydb/core/tx/columnshard/engines/reader/plain_reader/ya.make +++ b/ydb/core/tx/columnshard/engines/reader/plain_reader/ya.make @@ -1,21 +1,11 @@ LIBRARY() SRCS( - scanner.cpp - constructor.cpp - source.cpp - interval.cpp - fetched_data.cpp - plain_read_data.cpp - columns_set.cpp - context.cpp - fetching.cpp ) PEERDIR( - ydb/core/formats/arrow - ydb/core/tx/columnshard/blobs_action - ydb/core/tx/conveyor/usage + ydb/core/tx/columnshard/engines/reader/plain_reader/constructor + ydb/core/tx/columnshard/engines/reader/plain_reader/iterator ) END() diff --git a/ydb/core/tx/columnshard/engines/reader/read_context.cpp b/ydb/core/tx/columnshard/engines/reader/read_context.cpp deleted file mode 100644 index ba07afecc800..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/read_context.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "read_context.h" -#include "read_metadata.h" -#include <ydb/library/actors/core/events.h> - -namespace NKikimr::NOlap { - -void TActorBasedMemoryAccesor::DoOnBufferReady() { - OwnerId.Send(OwnerId, new NActors::TEvents::TEvWakeup(1)); -} - - -IDataReader::IDataReader(const std::shared_ptr<NOlap::TReadContext>& context) - : Context(context) { -} - -} diff --git a/ydb/core/tx/columnshard/engines/reader/read_filter_merger.h b/ydb/core/tx/columnshard/engines/reader/read_filter_merger.h deleted file mode 100644 index 54dadf24d101..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/read_filter_merger.h +++ /dev/null @@ -1,423 +0,0 @@ -#pragma once -#include <ydb/library/accessor/accessor.h> -#include <ydb/core/formats/arrow/arrow_filter.h> -#include <ydb/core/formats/arrow/arrow_helpers.h> -#include <ydb/core/tx/columnshard/engines/index_info.h> -#include <ydb/core/formats/arrow/switch/switch_type.h> -#include <ydb/core/formats/arrow/reader/read_filter_merger.h> -#include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> -#include <util/generic/hash.h> -#include <util/string/join.h> -#include <set> - -namespace NKikimr::NOlap::NIndexedReader { - -class TRecordBatchBuilder; - -template <class TSortCursor> -class TSortingHeap { -public: - TSortingHeap() = default; - - template <typename TCursors> - TSortingHeap(TCursors& cursors, bool notNull) { - Queue.reserve(cursors.size()); - for (auto& cur : cursors) { - if (!cur.Empty()) { - Queue.emplace_back(TSortCursor(&cur, notNull)); - } - } - std::make_heap(Queue.begin(), Queue.end()); - } - - const TSortCursor& Current() const { return Queue.front(); } - TSortCursor& MutableCurrent() { return Queue.front(); } - size_t Size() const { return Queue.size(); } - bool Empty() const { return Queue.empty(); } - TSortCursor& NextChild() { return Queue[NextChildIndex()]; } - - void Next() { - Y_ABORT_UNLESS(Size()); - - if (Queue.front().Next()) { - UpdateTop(); - } else { - RemoveTop(); - } - } - - void RemoveTop() { - std::pop_heap(Queue.begin(), Queue.end()); - Queue.pop_back(); - NextIdx = 0; - } - - void Push(TSortCursor&& cursor) { - Queue.emplace_back(cursor); - std::push_heap(Queue.begin(), Queue.end()); - NextIdx = 0; - } - - NJson::TJsonValue DebugJson() const { - NJson::TJsonValue result = NJson::JSON_ARRAY; - for (auto&& i : Queue) { - result.AppendValue(i.DebugJson()); - } - return result; - } - - /// This is adapted version of the function __sift_down from libc++. - /// Why cannot simply use std::priority_queue? - /// - because it doesn't support updating the top element and requires pop and push instead. - /// Also look at "Boost.Heap" library. - void UpdateTop() { - size_t size = Queue.size(); - if (size < 2) - return; - - auto begin = Queue.begin(); - - size_t child_idx = NextChildIndex(); - auto child_it = begin + child_idx; - - /// Check if we are in order. - if (*child_it < *begin) - return; - - NextIdx = 0; - - auto curr_it = begin; - auto top(std::move(*begin)); - do { - /// We are not in heap-order, swap the parent with it's largest child. - *curr_it = std::move(*child_it); - curr_it = child_it; - - // recompute the child based off of the updated parent - child_idx = 2 * child_idx + 1; - - if (child_idx >= size) - break; - - child_it = begin + child_idx; - - if ((child_idx + 1) < size && *child_it < *(child_it + 1)) { - /// Right child exists and is greater than left child. - ++child_it; - ++child_idx; - } - - /// Check if we are in order. - } while (!(*child_it < top)); - *curr_it = std::move(top); - } -private: - std::vector<TSortCursor> Queue; - /// Cache comparison between first and second child if the order in queue has not been changed. - size_t NextIdx = 0; - - size_t NextChildIndex() { - if (NextIdx == 0) { - NextIdx = 1; - if (Queue.size() > 2 && Queue[1] < Queue[2]) { - ++NextIdx; - } - } - - return NextIdx; - } - -}; - -class TMergePartialStream { -private: -#ifndef NDEBUG - std::optional<TSortableBatchPosition> CurrentKeyColumns; -#endif - bool PossibleSameVersionFlag = true; - - class TBatchIterator { - private: - bool ControlPointFlag; - TSortableBatchPosition KeyColumns; - TSortableBatchPosition VersionColumns; - i64 RecordsCount; - int ReverseSortKff; - - std::shared_ptr<NArrow::TColumnFilter> Filter; - std::shared_ptr<NArrow::TColumnFilter::TIterator> FilterIterator; - - i32 GetFirstPosition() const { - if (ReverseSortKff > 0) { - return 0; - } else { - return RecordsCount - 1; - } - } - - public: - NJson::TJsonValue DebugJson() const; - - const std::shared_ptr<NArrow::TColumnFilter>& GetFilter() const { - return Filter; - } - - bool IsControlPoint() const { - return ControlPointFlag; - } - - const TSortableBatchPosition& GetKeyColumns() const { - return KeyColumns; - } - - const TSortableBatchPosition& GetVersionColumns() const { - return VersionColumns; - } - - TBatchIterator(const TSortableBatchPosition& keyColumns) - : ControlPointFlag(true) - , KeyColumns(keyColumns) - { - - } - - TBatchIterator(std::shared_ptr<arrow::RecordBatch> batch, std::shared_ptr<NArrow::TColumnFilter> filter, - const std::vector<std::string>& keyColumns, const std::vector<std::string>& dataColumns, const bool reverseSort) - : ControlPointFlag(false) - , KeyColumns(batch, 0, keyColumns, dataColumns, reverseSort) - , VersionColumns(batch, 0, TIndexInfo::GetSpecialColumnNames(), {}, false) - , RecordsCount(batch->num_rows()) - , ReverseSortKff(reverseSort ? -1 : 1) - , Filter(filter) - { - Y_ABORT_UNLESS(KeyColumns.InitPosition(GetFirstPosition())); - Y_ABORT_UNLESS(VersionColumns.InitPosition(GetFirstPosition())); - if (Filter) { - FilterIterator = std::make_shared<NArrow::TColumnFilter::TIterator>(Filter->GetIterator(reverseSort, RecordsCount)); - } - } - - bool CheckNextBatch(const TBatchIterator& nextIterator) { - return KeyColumns.Compare(nextIterator.KeyColumns) == std::partial_ordering::less; - } - - bool IsReverse() const { - return ReverseSortKff < 0; - } - - bool IsDeleted() const { - if (!FilterIterator) { - return false; - } - return !FilterIterator->GetCurrentAcceptance(); - } - - TSortableBatchPosition::TFoundPosition SkipToLower(const TSortableBatchPosition& pos) { - const ui32 posStart = KeyColumns.GetPosition(); - auto result = KeyColumns.SkipToLower(pos); - const i32 delta = IsReverse() ? (posStart - KeyColumns.GetPosition()) : (KeyColumns.GetPosition() - posStart); - AFL_VERIFY(delta >= 0); - AFL_VERIFY(VersionColumns.InitPosition(KeyColumns.GetPosition())); - if (FilterIterator && delta) { - AFL_VERIFY(FilterIterator->Next(delta)); - } - return result; - } - - bool Next() { - const bool result = KeyColumns.NextPosition(ReverseSortKff) && VersionColumns.NextPosition(ReverseSortKff); - if (FilterIterator) { - Y_ABORT_UNLESS(result == FilterIterator->Next(1)); - } - return result; - } - - bool operator<(const TBatchIterator& item) const { - const std::partial_ordering result = KeyColumns.Compare(item.KeyColumns); - if (result == std::partial_ordering::equivalent) { - if (IsControlPoint() && item.IsControlPoint()) { - return false; - } else if (IsControlPoint()) { - return false; - } else if (item.IsControlPoint()) { - return true; - } - //don't need inverse through we need maximal version at first (reverse analytic not included in VersionColumns) - return VersionColumns.Compare(item.VersionColumns) == std::partial_ordering::less; - } else { - //inverse logic through we use max heap, but need minimal element if not reverse (reverse analytic included in KeyColumns) - return result == std::partial_ordering::greater; - } - } - }; - - class TIteratorData { - private: - YDB_READONLY_DEF(std::shared_ptr<arrow::RecordBatch>, Batch); - YDB_READONLY_DEF(std::shared_ptr<NArrow::TColumnFilter>, Filter); - public: - TIteratorData(std::shared_ptr<arrow::RecordBatch> batch, std::shared_ptr<NArrow::TColumnFilter> filter) - : Batch(batch) - , Filter(filter) - { - - } - }; - - NJson::TJsonValue DebugJson() const { - NJson::TJsonValue result = NJson::JSON_MAP; -#ifndef NDEBUG - if (CurrentKeyColumns) { - result["current"] = CurrentKeyColumns->DebugJson(); - } -#endif - result.InsertValue("heap", SortHeap.DebugJson()); - return result; - } - - TSortingHeap<TBatchIterator> SortHeap; - std::shared_ptr<arrow::Schema> SortSchema; - std::shared_ptr<arrow::Schema> DataSchema; - const bool Reverse; - ui32 ControlPoints = 0; - - std::optional<TSortableBatchPosition> DrainCurrentPosition(); - - void AddNewToHeap(std::shared_ptr<arrow::RecordBatch> batch, std::shared_ptr<NArrow::TColumnFilter> filter); - void CheckSequenceInDebug(const TSortableBatchPosition& nextKeyColumnsPosition); -public: - TMergePartialStream(std::shared_ptr<arrow::Schema> sortSchema, std::shared_ptr<arrow::Schema> dataSchema, const bool reverse) - : SortSchema(sortSchema) - , DataSchema(dataSchema) - , Reverse(reverse) { - Y_ABORT_UNLESS(SortSchema); - Y_ABORT_UNLESS(SortSchema->num_fields()); - Y_ABORT_UNLESS(!DataSchema || DataSchema->num_fields()); - } - - void SkipToLowerBound(const TSortableBatchPosition& pos, const bool include) { - if (SortHeap.Empty()) { - return; - } - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("pos", pos.DebugJson().GetStringRobust())("heap", SortHeap.Current().GetKeyColumns().DebugJson().GetStringRobust()); - while (!SortHeap.Empty()) { - const auto cmpResult = SortHeap.Current().GetKeyColumns().Compare(pos); - if (cmpResult == std::partial_ordering::greater) { - break; - } - if (cmpResult == std::partial_ordering::equivalent && include) { - break; - } - const TSortableBatchPosition::TFoundPosition skipPos = SortHeap.MutableCurrent().SkipToLower(pos); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("pos", pos.DebugJson().GetStringRobust())("heap", SortHeap.Current().GetKeyColumns().DebugJson().GetStringRobust()); - if (skipPos.IsEqual()) { - if (!include && !SortHeap.MutableCurrent().Next()) { - SortHeap.RemoveTop(); - } else { - SortHeap.UpdateTop(); - } - } else if (skipPos.IsLess()) { - SortHeap.RemoveTop(); - } else { - SortHeap.UpdateTop(); - } - } - } - - void SetPossibleSameVersion(const bool value) { - PossibleSameVersionFlag = value; - } - - bool IsValid() const { - return SortHeap.Size(); - } - - ui32 GetSourcesCount() const { - return SortHeap.Size(); - } - - TString DebugString() const { - return TStringBuilder() << "sort_heap=" << SortHeap.DebugJson(); - } - - void PutControlPoint(std::shared_ptr<TSortableBatchPosition> point); - - void RemoveControlPoint(); - - bool ControlPointEnriched() const { - return SortHeap.Size() && SortHeap.Current().IsControlPoint(); - } - - void AddSource(std::shared_ptr<arrow::RecordBatch> batch, std::shared_ptr<NArrow::TColumnFilter> filter); - - bool IsEmpty() const { - return !SortHeap.Size(); - } - - bool DrainAll(TRecordBatchBuilder& builder); - std::shared_ptr<arrow::RecordBatch> SingleSourceDrain(const TSortableBatchPosition& readTo, const bool includeFinish, std::optional<TSortableBatchPosition>* lastResultPosition = nullptr); - bool DrainCurrentTo(TRecordBatchBuilder& builder, const TSortableBatchPosition& readTo, const bool includeFinish, std::optional<TSortableBatchPosition>* lastResultPosition = nullptr); - std::vector<std::shared_ptr<arrow::RecordBatch>> DrainAllParts(const std::map<TSortableBatchPosition, bool>& positions, - const std::vector<std::shared_ptr<arrow::Field>>& resultFields); -}; - -class TRecordBatchBuilder { -private: - std::vector<std::unique_ptr<arrow::ArrayBuilder>> Builders; - YDB_READONLY_DEF(std::vector<std::shared_ptr<arrow::Field>>, Fields); - YDB_READONLY(ui32, RecordsCount, 0); - - bool IsSameFieldsSequence(const std::vector<std::shared_ptr<arrow::Field>>& f1, const std::vector<std::shared_ptr<arrow::Field>>& f2) { - if (f1.size() != f2.size()) { - return false; - } - for (ui32 i = 0; i < f1.size(); ++i) { - if (!f1[i]->Equals(f2[i])) { - return false; - } - } - return true; - } - -public: - ui32 GetBuildersCount() const { - return Builders.size(); - } - - TString GetColumnNames() const { - TStringBuilder result; - for (auto&& f : Fields) { - result << f->name() << ","; - } - return result; - } - - TRecordBatchBuilder(const std::vector<std::shared_ptr<arrow::Field>>& fields, const std::optional<ui32> rowsCountExpectation = {}, const THashMap<std::string, ui64>& fieldDataSizePreallocated = {}) - : Fields(fields) { - Y_ABORT_UNLESS(Fields.size()); - for (auto&& f : fields) { - Builders.emplace_back(NArrow::MakeBuilder(f)); - auto it = fieldDataSizePreallocated.find(f->name()); - if (it != fieldDataSizePreallocated.end()) { - NArrow::ReserveData(*Builders.back(), it->second); - } - if (rowsCountExpectation) { - NArrow::TStatusValidator::Validate(Builders.back()->Reserve(*rowsCountExpectation)); - } - } - } - - std::shared_ptr<arrow::RecordBatch> Finalize() { - auto schema = std::make_shared<arrow::Schema>(Fields); - std::vector<std::shared_ptr<arrow::Array>> columns; - for (auto&& i : Builders) { - columns.emplace_back(NArrow::TStatusValidator::GetValid(i->Finish())); - } - return arrow::RecordBatch::Make(schema, columns.front()->length(), columns); - } - - void AddRecord(const TSortableBatchPosition& position); - void ValidateDataSchema(const std::shared_ptr<arrow::Schema>& schema); -}; - -} diff --git a/ydb/core/tx/columnshard/engines/reader/read_metadata.cpp b/ydb/core/tx/columnshard/engines/reader/read_metadata.cpp deleted file mode 100644 index e9a9e804977c..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/read_metadata.cpp +++ /dev/null @@ -1,112 +0,0 @@ -#include "read_metadata.h" -#include "read_context.h" -#include "plain_reader/plain_read_data.h" -#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> -#include <ydb/core/tx/columnshard/columnshard__index_scan.h> -#include <ydb/core/tx/columnshard/columnshard__stats_scan.h> -#include <util/string/join.h> - -namespace NKikimr::NOlap { - -TDataStorageAccessor::TDataStorageAccessor(const std::unique_ptr<NOlap::TInsertTable>& insertTable, - const std::unique_ptr<NOlap::IColumnEngine>& index) - : InsertTable(insertTable) - , Index(index) -{} - -std::shared_ptr<NOlap::TSelectInfo> TDataStorageAccessor::Select(const NOlap::TReadDescription& readDescription) const { - if (readDescription.ReadNothing) { - return std::make_shared<NOlap::TSelectInfo>(); - } - return Index->Select(readDescription.PathId, - readDescription.GetSnapshot(), - readDescription.PKRangesFilter); -} - -std::vector<NOlap::TCommittedBlob> TDataStorageAccessor::GetCommitedBlobs(const NOlap::TReadDescription& readDescription, const std::shared_ptr<arrow::Schema>& pkSchema) const { - return std::move(InsertTable->Read(readDescription.PathId, readDescription.GetSnapshot(), pkSchema)); -} - -std::unique_ptr<NColumnShard::TScanIteratorBase> TReadMetadata::StartScan(const std::shared_ptr<NOlap::TReadContext>& readContext) const { - return std::make_unique<NColumnShard::TColumnShardScanIterator>(readContext, this->shared_from_this()); -} - -bool TReadMetadata::Init(const TReadDescription& readDescription, const TDataStorageAccessor& dataAccessor, std::string& /*error*/) { - SetPKRangesFilter(readDescription.PKRangesFilter); - - /// @note We could have column name changes between schema versions: - /// Add '1:foo', Drop '1:foo', Add '2:foo'. Drop should hide '1:foo' from reads. - /// It's expected that we have only one version on 'foo' in blob and could split them by schema {planStep:txId}. - /// So '1:foo' would be omitted in blob records for the column in new snapshots. And '2:foo' - in old ones. - /// It's not possible for blobs with several columns. There should be a special logic for them. - CommittedBlobs = dataAccessor.GetCommitedBlobs(readDescription, ResultIndexSchema->GetIndexInfo().GetReplaceKey()); - - SelectInfo = dataAccessor.Select(readDescription); - StatsMode = readDescription.StatsMode; - return true; -} - -std::set<ui32> TReadMetadata::GetEarlyFilterColumnIds() const { - auto& indexInfo = ResultIndexSchema->GetIndexInfo(); - std::set<ui32> result; - for (auto&& i : GetProgram().GetEarlyFilterColumns()) { - auto id = indexInfo.GetColumnIdOptional(i); - if (id) { - result.emplace(*id); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("early_filter_column", i); - } - } - return result; -} - -std::set<ui32> TReadMetadata::GetPKColumnIds() const { - std::set<ui32> result; - auto& indexInfo = ResultIndexSchema->GetIndexInfo(); - for (auto&& i : indexInfo.GetPrimaryKeyColumns()) { - Y_ABORT_UNLESS(result.emplace(indexInfo.GetColumnId(i.first)).second); - } - return result; -} - -std::vector<std::pair<TString, NScheme::TTypeInfo>> TReadStatsMetadata::GetKeyYqlSchema() const { - return NOlap::GetColumns(NColumnShard::PrimaryIndexStatsSchema, NColumnShard::PrimaryIndexStatsSchema.KeyColumns); -} - -std::unique_ptr<NColumnShard::TScanIteratorBase> TReadStatsMetadata::StartScan(const std::shared_ptr<NOlap::TReadContext>& /*readContext*/) const { - return std::make_unique<NColumnShard::TStatsIterator>(this->shared_from_this()); -} - -void TReadStats::PrintToLog() { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN) - ("event", "statistic") - ("begin", BeginTimestamp) - ("index_granules", IndexGranules) - ("index_portions", IndexPortions) - ("index_batches", IndexBatches) - ("committed_batches", CommittedBatches) - ("schema_columns", SchemaColumns) - ("filter_columns", FilterColumns) - ("additional_columns", AdditionalColumns) - ("compacted_portions_bytes", CompactedPortionsBytes) - ("inserted_portions_bytes", InsertedPortionsBytes) - ("committed_portions_bytes", CommittedPortionsBytes) - ("data_filter_bytes", DataFilterBytes) - ("data_additional_bytes", DataAdditionalBytes) - ("delta_bytes", CompactedPortionsBytes + InsertedPortionsBytes + CommittedPortionsBytes - DataFilterBytes - DataAdditionalBytes) - ("selected_rows", SelectedRows) - ; -} - -std::shared_ptr<NKikimr::NOlap::IDataReader> TReadMetadata::BuildReader(const std::shared_ptr<NOlap::TReadContext>& context) const { - return std::make_shared<NPlainReader::TPlainReadData>(context); -// auto result = std::make_shared<TIndexedReadData>(self, context); -// result->InitRead(); -// return result; -} - -NIndexedReader::TSortableBatchPosition TReadMetadata::BuildSortedPosition(const NArrow::TReplaceKey& key) const { - return NIndexedReader::TSortableBatchPosition(key.ToBatch(GetReplaceKey()), 0, - GetReplaceKey()->field_names(), {}, IsDescSorted()); -} - -} diff --git a/ydb/core/tx/columnshard/engines/reader/read_metadata.h b/ydb/core/tx/columnshard/engines/reader/read_metadata.h deleted file mode 100644 index 13358c0586df..000000000000 --- a/ydb/core/tx/columnshard/engines/reader/read_metadata.h +++ /dev/null @@ -1,303 +0,0 @@ -#pragma once -#include "conveyor_task.h" -#include "description.h" -#include "read_filter_merger.h" -#include <ydb/library/accessor/accessor.h> -#include <ydb/core/tx/columnshard/blob.h> -#include <ydb/core/tx/columnshard/counters.h> -#include <ydb/core/tx/columnshard/columnshard__scan.h> -#include <ydb/core/tx/columnshard/columnshard_common.h> -#include <ydb/core/tx/columnshard/engines/insert_table/insert_table.h> -#include <ydb/core/tx/columnshard/engines/predicate/predicate.h> -#include <ydb/core/tx/columnshard/engines/column_engine.h> -#include <ydb/core/scheme_types/scheme_type_info.h> - -#include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> -#include <ydb/core/tx/columnshard/engines/scheme/filtered_scheme.h> - -namespace NKikimr::NColumnShard { -class TScanIteratorBase; -} - -namespace NKikimr::NOlap { - -class TReadContext; - -struct TReadStats { - TInstant BeginTimestamp; - ui64 IndexGranules{0}; - ui64 IndexPortions{0}; - ui64 IndexBatches{0}; - ui64 CommittedBatches{0}; - ui64 CommittedPortionsBytes = 0; - ui64 InsertedPortionsBytes = 0; - ui64 CompactedPortionsBytes = 0; - ui64 DataFilterBytes{ 0 }; - ui64 DataAdditionalBytes{ 0 }; - - ui32 SchemaColumns = 0; - ui32 FilterColumns = 0; - ui32 AdditionalColumns = 0; - - ui32 SelectedRows = 0; - - TReadStats() - : BeginTimestamp(TInstant::Now()) - {} - - void PrintToLog(); - - ui64 GetReadBytes() const { - return CompactedPortionsBytes + InsertedPortionsBytes + CompactedPortionsBytes; - } - - TDuration Duration() { - return TInstant::Now() - BeginTimestamp; - } -}; - -class TDataStorageAccessor { -private: - const std::unique_ptr<NOlap::TInsertTable>& InsertTable; - const std::unique_ptr<NOlap::IColumnEngine>& Index; - -public: - TDataStorageAccessor(const std::unique_ptr<NOlap::TInsertTable>& insertTable, - const std::unique_ptr<NOlap::IColumnEngine>& index); - std::shared_ptr<NOlap::TSelectInfo> Select(const NOlap::TReadDescription& readDescription) const; - std::vector<NOlap::TCommittedBlob> GetCommitedBlobs(const NOlap::TReadDescription& readDescription, const std::shared_ptr<arrow::Schema>& pkSchema) const; -}; - -// Holds all metadata that is needed to perform read/scan -struct TReadMetadataBase { -public: - enum class ESorting { - NONE = 0 /* "not_sorted" */, - ASC /* "ascending" */, - DESC /* "descending" */, - }; -private: - const ESorting Sorting = ESorting::ASC; // Sorting inside returned batches - std::optional<TPKRangesFilter> PKRangesFilter; - TProgramContainer Program; -public: - using TConstPtr = std::shared_ptr<const TReadMetadataBase>; - - void SetPKRangesFilter(const TPKRangesFilter& value) { - Y_ABORT_UNLESS(IsSorted() && value.IsReverse() == IsDescSorted()); - Y_ABORT_UNLESS(!PKRangesFilter); - PKRangesFilter = value; - } - - const TPKRangesFilter& GetPKRangesFilter() const { - Y_ABORT_UNLESS(!!PKRangesFilter); - return *PKRangesFilter; - } - - TReadMetadataBase(const ESorting sorting, const TProgramContainer& ssaProgram) - : Sorting(sorting) - , Program(ssaProgram) - { - } - virtual ~TReadMetadataBase() = default; - - ui64 Limit = 0; - - virtual void Dump(IOutputStream& out) const { - out << " predicate{" << (PKRangesFilter ? PKRangesFilter->DebugString() : "no_initialized") << "}" - << " " << Sorting << " sorted"; - } - - bool IsAscSorted() const { return Sorting == ESorting::ASC; } - bool IsDescSorted() const { return Sorting == ESorting::DESC; } - bool IsSorted() const { return IsAscSorted() || IsDescSorted(); } - - virtual std::vector<std::pair<TString, NScheme::TTypeInfo>> GetKeyYqlSchema() const = 0; - virtual std::unique_ptr<NColumnShard::TScanIteratorBase> StartScan(const std::shared_ptr<NOlap::TReadContext>& readContext) const = 0; - - // TODO: can this only be done for base class? - friend IOutputStream& operator << (IOutputStream& out, const TReadMetadataBase& meta) { - meta.Dump(out); - return out; - } - - const TProgramContainer& GetProgram() const { - return Program; - } -}; - -// Holds all metadata that is needed to perform read/scan -struct TReadMetadata : public TReadMetadataBase, public std::enable_shared_from_this<TReadMetadata> { - using TBase = TReadMetadataBase; -private: - TVersionedIndex IndexVersions; - TSnapshot Snapshot; - std::shared_ptr<ISnapshotSchema> ResultIndexSchema; -public: - using TConstPtr = std::shared_ptr<const TReadMetadata>; - - NIndexedReader::TSortableBatchPosition BuildSortedPosition(const NArrow::TReplaceKey& key) const; - std::shared_ptr<IDataReader> BuildReader(const std::shared_ptr<NOlap::TReadContext>& context) const; - - bool HasProcessingColumnIds() const { - return GetProgram().HasProcessingColumnIds(); - } - - std::set<ui32> GetProcessingColumnIds() const { - std::set<ui32> result; - for (auto&& i : GetProgram().GetProcessingColumns()) { - result.emplace(ResultIndexSchema->GetIndexInfo().GetColumnId(i)); - } - return result; - } - std::shared_ptr<TSelectInfo> SelectInfo; - NYql::NDqProto::EDqStatsMode StatsMode = NYql::NDqProto::EDqStatsMode::DQ_STATS_MODE_NONE; - std::vector<TCommittedBlob> CommittedBlobs; - std::shared_ptr<TReadStats> ReadStats; - - const TSnapshot& GetSnapshot() const { - return Snapshot; - } - - TReadMetadata(const TVersionedIndex& info, const TSnapshot& snapshot, const ESorting sorting, const TProgramContainer& ssaProgram) - : TBase(sorting, ssaProgram) - , IndexVersions(info) - , Snapshot(snapshot) - , ResultIndexSchema(info.GetSchema(Snapshot)) - , ReadStats(std::make_shared<TReadStats>()) - { - } - - bool Init(const TReadDescription& readDescription, const TDataStorageAccessor& dataAccessor, std::string& error); - - ISnapshotSchema::TPtr GetSnapshotSchema(const TSnapshot& version) const { - if (version >= Snapshot){ - return ResultIndexSchema; - } - return IndexVersions.GetSchema(version); - } - - ISnapshotSchema::TPtr GetLoadSchema(const std::optional<TSnapshot>& version = {}) const { - if (!version) { - return ResultIndexSchema; - } - return IndexVersions.GetSchema(*version); - } - - std::shared_ptr<arrow::Schema> GetBlobSchema(const ui64 version) const { - return IndexVersions.GetSchema(version)->GetIndexInfo().ArrowSchema(); - } - - const TIndexInfo& GetIndexInfo(const std::optional<TSnapshot>& version = {}) const { - if (version && version < Snapshot) { - return IndexVersions.GetSchema(*version)->GetIndexInfo(); - } - return ResultIndexSchema->GetIndexInfo(); - } - - std::vector<std::string> GetColumnsOrder() const { - auto loadSchema = GetLoadSchema(Snapshot); - std::vector<std::string> result; - for (auto&& i : loadSchema->GetSchema()->fields()) { - result.emplace_back(i->name()); - } - return result; - } - - std::set<ui32> GetEarlyFilterColumnIds() const; - std::set<ui32> GetPKColumnIds() const; - - bool Empty() const { - Y_ABORT_UNLESS(SelectInfo); - return SelectInfo->PortionsOrderedPK.empty() && CommittedBlobs.empty(); - } - - std::shared_ptr<arrow::Schema> GetReplaceKey() const { - return ResultIndexSchema->GetIndexInfo().GetReplaceKey(); - } - - std::vector<TNameTypeInfo> GetKeyYqlSchema() const override { - return ResultIndexSchema->GetIndexInfo().GetPrimaryKeyColumns(); - } - - size_t NumIndexedChunks() const { - Y_ABORT_UNLESS(SelectInfo); - return SelectInfo->NumChunks(); - } - - size_t NumIndexedBlobs() const { - Y_ABORT_UNLESS(SelectInfo); - return SelectInfo->Stats().Blobs; - } - - std::unique_ptr<NColumnShard::TScanIteratorBase> StartScan(const std::shared_ptr<NOlap::TReadContext>& readContext) const override; - - void Dump(IOutputStream& out) const override { - out << " index chunks: " << NumIndexedChunks() - << " index blobs: " << NumIndexedBlobs() - << " committed blobs: " << CommittedBlobs.size() - // << " with program steps: " << (Program ? Program->Steps.size() : 0) - << " at snapshot: " << Snapshot.GetPlanStep() << ":" << Snapshot.GetTxId(); - TBase::Dump(out); - if (SelectInfo) { - out << ", " << *SelectInfo; - } - } - - friend IOutputStream& operator << (IOutputStream& out, const TReadMetadata& meta) { - meta.Dump(out); - return out; - } -}; - -struct TReadStatsMetadata : public TReadMetadataBase, public std::enable_shared_from_this<TReadStatsMetadata> { -private: - using TBase = TReadMetadataBase; - TSnapshot RequestSnapshot; - std::shared_ptr<ISnapshotSchema> ResultIndexSchema; -public: - using TConstPtr = std::shared_ptr<const TReadStatsMetadata>; - - const ui64 TabletId; - std::vector<ui32> ReadColumnIds; - std::vector<ui32> ResultColumnIds; - std::deque<std::shared_ptr<NOlap::TPortionInfo>> IndexPortions; - - const TSnapshot& GetRequestSnapshot() const { return RequestSnapshot; } - - std::optional<std::string> GetColumnNameDef(const ui32 columnId) const { - if (!ResultIndexSchema) { - return {}; - } - auto f = ResultIndexSchema->GetFieldByColumnIdOptional(columnId); - if (!f) { - return {}; - } - return f->name(); - } - - std::optional<std::string> GetEntityName(const ui32 entityId) const { - if (!ResultIndexSchema) { - return {}; - } - auto result = ResultIndexSchema->GetIndexInfo().GetColumnNameOptional(entityId); - if (!!result) { - return result; - } - return ResultIndexSchema->GetIndexInfo().GetIndexNameOptional(entityId); - } - - explicit TReadStatsMetadata(ui64 tabletId, const ESorting sorting, const TProgramContainer& ssaProgram, const std::shared_ptr<ISnapshotSchema>& schema, const TSnapshot& requestSnapshot) - : TBase(sorting, ssaProgram) - , RequestSnapshot(requestSnapshot) - , ResultIndexSchema(schema) - , TabletId(tabletId) - { - } - - std::vector<std::pair<TString, NScheme::TTypeInfo>> GetKeyYqlSchema() const override; - - std::unique_ptr<NColumnShard::TScanIteratorBase> StartScan(const std::shared_ptr<NOlap::TReadContext>& readContext) const override; -}; - -} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/granule_view.cpp b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/granule_view.cpp new file mode 100644 index 000000000000..db99dc03e698 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/granule_view.cpp @@ -0,0 +1,5 @@ +#include "granule_view.h" + +namespace NKikimr::NOlap::NReader::NSysView::NAbstract { + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/granule_view.h b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/granule_view.h new file mode 100644 index 000000000000..84d0bb698e0a --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/granule_view.h @@ -0,0 +1,43 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/storage/granule.h> + +namespace NKikimr::NOlap::NReader::NSysView::NAbstract { + +class TGranuleMetaView { +private: + using TPortions = std::deque<std::shared_ptr<TPortionInfo>>; + YDB_READONLY(ui64, PathId, 0); + YDB_READONLY_DEF(TPortions, Portions); +public: + TGranuleMetaView(const TGranuleMeta& granule, const bool reverse) + : PathId(granule.GetPathId()) + { + for (auto&& i : granule.GetPortions()) { + Portions.emplace_back(i.second); + } + + const auto predSort = [](const std::shared_ptr<TPortionInfo>& l, const std::shared_ptr<TPortionInfo>& r) { + return l->GetPortionId() < r->GetPortionId(); + }; + + std::sort(Portions.begin(), Portions.end(), predSort); + if (reverse) { + std::reverse(Portions.begin(), Portions.end()); + } + } + + bool operator<(const TGranuleMetaView& item) const { + return PathId < item.PathId; + } + + std::shared_ptr<TPortionInfo> PopFrontPortion() { + if (Portions.empty()) { + return nullptr; + } + auto result = Portions.front(); + Portions.pop_front(); + return result; + } +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.cpp b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.cpp new file mode 100644 index 000000000000..c47dd37eacb6 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.cpp @@ -0,0 +1,5 @@ +#include "iterator.h" + +namespace NKikimr::NOlap::NReader::NSysView::NAbstract { + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.h b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.h new file mode 100644 index 000000000000..aea0425815bf --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.h @@ -0,0 +1,155 @@ +#pragma once +#include "granule_view.h" +#include "metadata.h" + +#include <ydb/core/tablet_flat/flat_dbase_scheme.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/abstract.h> + +namespace NKikimr::NOlap::NReader::NSysView::NAbstract { + +class TStatsIteratorBase: public TScanIteratorBase { +private: + const NTable::TScheme::TTableSchema StatsSchema; + std::shared_ptr<arrow::Schema> DataSchema; +protected: + virtual bool AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, TGranuleMetaView& granule) const = 0; + virtual ui32 PredictRecordsCount(const TGranuleMetaView& granule) const = 0; + TReadStatsMetadata::TConstPtr ReadMetadata; + const bool Reverse = false; + std::shared_ptr<arrow::Schema> KeySchema; + std::shared_ptr<arrow::Schema> ResultSchema; + + std::deque<TGranuleMetaView> IndexGranules; +public: + virtual TConclusionStatus Start() override { + return TConclusionStatus::Success(); + } + + virtual bool Finished() const override { + return IndexGranules.empty(); + } + + virtual TConclusion<std::optional<TPartialReadResult>> GetBatch() override { + while (!Finished()) { + auto batchOpt = ExtractStatsBatch(); + if (!batchOpt) { + AFL_VERIFY(Finished()); + return std::nullopt; + } + auto originalBatch = *batchOpt; + if (originalBatch->num_rows() == 0) { + continue; + } + auto keyBatch = NArrow::ExtractColumns(originalBatch, KeySchema); + auto lastKey = keyBatch->Slice(keyBatch->num_rows() - 1, 1); + + { + NArrow::TColumnFilter filter = ReadMetadata->GetPKRangesFilter().BuildFilter(originalBatch); + filter.Apply(originalBatch); + } + + // Leave only requested columns + auto resultBatch = NArrow::ExtractColumns(originalBatch, ResultSchema); + NArrow::TStatusValidator::Validate(ReadMetadata->GetProgram().ApplyProgram(resultBatch)); + if (resultBatch->num_rows() == 0) { + continue; + } + auto table = NArrow::TStatusValidator::GetValid(arrow::Table::FromRecordBatches({resultBatch})); + TPartialReadResult out(table, lastKey, std::nullopt); + return std::move(out); + } + return std::nullopt; + } + + std::optional<std::shared_ptr<arrow::RecordBatch>> ExtractStatsBatch() { + while (IndexGranules.size()) { + auto builders = NArrow::MakeBuilders(DataSchema, PredictRecordsCount(IndexGranules.front())); + if (!AppendStats(builders, IndexGranules.front())) { + IndexGranules.pop_front(); + } + auto columns = NArrow::Finish(std::move(builders)); + AFL_VERIFY(columns.size()); + std::optional<ui32> count; + for (auto&& i : columns) { + if (!count) { + count = i->length(); + } else { + AFL_VERIFY(*count == i->length()); + } + } + auto result = arrow::RecordBatch::Make(DataSchema, columns.front()->length(), columns); + if (result->num_rows()) { + return result; + } + } + return std::nullopt; + } + + + TStatsIteratorBase(const NAbstract::TReadStatsMetadata::TConstPtr& readMetadata, const NTable::TScheme::TTableSchema& statsSchema) + : StatsSchema(statsSchema) + , ReadMetadata(readMetadata) + , KeySchema(MakeArrowSchema(StatsSchema.Columns, StatsSchema.KeyColumns)) + , ResultSchema(MakeArrowSchema(StatsSchema.Columns, ReadMetadata->ResultColumnIds)) + , IndexGranules(ReadMetadata->IndexGranules) + { + if (ResultSchema->num_fields() == 0) { + ResultSchema = KeySchema; + } + std::vector<ui32> allColumnIds; + for (const auto& c : StatsSchema.Columns) { + allColumnIds.push_back(c.second.Id); + } + std::sort(allColumnIds.begin(), allColumnIds.end()); + DataSchema = MakeArrowSchema(StatsSchema.Columns, allColumnIds); + } +}; + +template <class TSysViewSchema> +class TStatsIterator : public TStatsIteratorBase { +private: + using TBase = TStatsIteratorBase; +public: + static inline const NTable::TScheme::TTableSchema StatsSchema = []() { + NTable::TScheme::TTableSchema schema; + NIceDb::NHelpers::TStaticSchemaFiller<TSysViewSchema>::Fill(schema); + return schema; + }(); + + class TStatsColumnResolver: public IColumnResolver { + public: + TString GetColumnName(ui32 id, bool required) const override { + auto it = StatsSchema.Columns.find(id); + if (it == StatsSchema.Columns.end()) { + Y_ABORT_UNLESS(!required, "No column '%" PRIu32 "' in primary_index_stats", id); + return {}; + } + return it->second.Name; + } + + std::optional<ui32> GetColumnIdOptional(const TString& name) const override { + auto it = StatsSchema.ColumnNames.find(name); + if (it == StatsSchema.ColumnNames.end()) { + return {}; + } else { + return it->second; + } + } + + const NTable::TScheme::TTableSchema& GetSchema() const override { + return StatsSchema; + } + + NSsa::TColumnInfo GetDefaultColumn() const override { + return NSsa::TColumnInfo::Original(1, "PathId"); + } + }; + + TStatsIterator(const NAbstract::TReadStatsMetadata::TConstPtr& readMetadata) + : TBase(readMetadata, StatsSchema) + { + } + +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/metadata.cpp b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/metadata.cpp new file mode 100644 index 000000000000..c3008a99032a --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/metadata.cpp @@ -0,0 +1,5 @@ +#include "metadata.h" + +namespace NKikimr::NOlap::NReader::NSysView::NAbstract { + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/metadata.h b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/metadata.h new file mode 100644 index 000000000000..c5068be3c82f --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/metadata.h @@ -0,0 +1,26 @@ +#pragma once +#include "granule_view.h" +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h> +#include <ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.h> + +namespace NKikimr::NOlap::NReader::NSysView::NAbstract { + +struct TReadStatsMetadata: public TReadMetadataBase { +private: + using TBase = TReadMetadataBase; +public: + using TConstPtr = std::shared_ptr<const TReadStatsMetadata>; + + const ui64 TabletId; + std::vector<ui32> ReadColumnIds; + std::vector<ui32> ResultColumnIds; + std::deque<TGranuleMetaView> IndexGranules; + + explicit TReadStatsMetadata(const std::shared_ptr<TVersionedIndex>& info, ui64 tabletId, const ESorting sorting, + const TProgramContainer& ssaProgram, const std::shared_ptr<ISnapshotSchema>& schema, const TSnapshot& requestSnapshot) + : TBase(info, sorting, ssaProgram, schema, requestSnapshot) + , TabletId(tabletId) { + } +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/ya.make b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/ya.make new file mode 100644 index 000000000000..000edfb62e37 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/abstract/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/engines/reader/abstract +) + +SRCS( + iterator.cpp + metadata.cpp + granule_view.cpp +) + +END() + diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/chunks/chunks.cpp b/ydb/core/tx/columnshard/engines/reader/sys_view/chunks/chunks.cpp new file mode 100644 index 000000000000..1aeb83b4ea24 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/chunks/chunks.cpp @@ -0,0 +1,110 @@ +#include "chunks.h" +#include <ydb/core/formats/arrow/switch/switch_type.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_context.h> + +namespace NKikimr::NOlap::NReader::NSysView::NChunks { + +void TStatsIterator::AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, const TPortionInfo& portion) const { + auto portionSchema = ReadMetadata->GetLoadSchemaVerified(portion); + const std::string prod = ::ToString(portion.GetMeta().Produced); + const bool activity = !portion.IsRemovedFor(ReadMetadata->GetRequestSnapshot()); + { + std::vector<const TColumnRecord*> records; + for (auto&& r : portion.Records) { + records.emplace_back(&r); + } + if (Reverse) { + std::reverse(records.begin(), records.end()); + } + for (auto&& r : records) { + NArrow::Append<arrow::UInt64Type>(*builders[0], portion.GetPathId()); + NArrow::Append<arrow::StringType>(*builders[1], prod); + NArrow::Append<arrow::UInt64Type>(*builders[2], ReadMetadata->TabletId); + NArrow::Append<arrow::UInt64Type>(*builders[3], r->GetMeta().GetNumRows()); + NArrow::Append<arrow::UInt64Type>(*builders[4], r->GetMeta().GetRawBytes()); + NArrow::Append<arrow::UInt64Type>(*builders[5], portion.GetPortionId()); + NArrow::Append<arrow::UInt64Type>(*builders[6], r->GetChunkIdx()); + NArrow::Append<arrow::StringType>(*builders[7], ReadMetadata->GetColumnNameDef(r->GetColumnId()).value_or("undefined")); + NArrow::Append<arrow::UInt32Type>(*builders[8], r->GetColumnId()); + std::string blobIdString = portion.GetBlobId(r->GetBlobRange().GetBlobIdxVerified()).ToStringLegacy(); + NArrow::Append<arrow::StringType>(*builders[9], blobIdString); + NArrow::Append<arrow::UInt64Type>(*builders[10], r->BlobRange.Offset); + NArrow::Append<arrow::UInt64Type>(*builders[11], r->BlobRange.Size); + NArrow::Append<arrow::BooleanType>(*builders[12], activity); + + const auto tierName = portionSchema->GetIndexInfo().GetEntityStorageId(r->GetColumnId(), portion.GetMeta().GetTierName()); + std::string strTierName(tierName.data(), tierName.size()); + NArrow::Append<arrow::StringType>(*builders[13], strTierName); + NArrow::Append<arrow::StringType>(*builders[14], "COL"); + } + } + { + std::vector<const TIndexChunk*> indexes; + for (auto&& r : portion.GetIndexes()) { + indexes.emplace_back(&r); + } + if (Reverse) { + std::reverse(indexes.begin(), indexes.end()); + } + for (auto&& r : indexes) { + NArrow::Append<arrow::UInt64Type>(*builders[0], portion.GetPathId()); + NArrow::Append<arrow::StringType>(*builders[1], prod); + NArrow::Append<arrow::UInt64Type>(*builders[2], ReadMetadata->TabletId); + NArrow::Append<arrow::UInt64Type>(*builders[3], r->GetRecordsCount()); + NArrow::Append<arrow::UInt64Type>(*builders[4], r->GetRawBytes()); + NArrow::Append<arrow::UInt64Type>(*builders[5], portion.GetPortionId()); + NArrow::Append<arrow::UInt64Type>(*builders[6], r->GetChunkIdx()); + NArrow::Append<arrow::StringType>(*builders[7], ReadMetadata->GetEntityName(r->GetIndexId()).value_or("undefined")); + NArrow::Append<arrow::UInt32Type>(*builders[8], r->GetIndexId()); + std::string blobIdString = portion.GetBlobId(r->GetBlobRange().GetBlobIdxVerified()).ToStringLegacy(); + NArrow::Append<arrow::StringType>(*builders[9], blobIdString); + NArrow::Append<arrow::UInt64Type>(*builders[10], r->GetBlobRange().Offset); + NArrow::Append<arrow::UInt64Type>(*builders[11], r->GetBlobRange().Size); + NArrow::Append<arrow::BooleanType>(*builders[12], activity); + const auto tierName = portionSchema->GetIndexInfo().GetEntityStorageId(r->GetIndexId(), portion.GetMeta().GetTierName()); + std::string strTierName(tierName.data(), tierName.size()); + NArrow::Append<arrow::StringType>(*builders[13], strTierName); + NArrow::Append<arrow::StringType>(*builders[14], "IDX"); + } + } +} + +std::unique_ptr<TScanIteratorBase> TReadStatsMetadata::StartScan(const std::shared_ptr<TReadContext>& readContext) const { + return std::make_unique<TStatsIterator>(readContext->GetReadMetadataPtrVerifiedAs<TReadStatsMetadata>()); +} + +std::vector<std::pair<TString, NKikimr::NScheme::TTypeInfo>> TReadStatsMetadata::GetKeyYqlSchema() const { + return GetColumns(TStatsIterator::StatsSchema, TStatsIterator::StatsSchema.KeyColumns); +} + +std::shared_ptr<NKikimr::NOlap::NReader::NSysView::NAbstract::TReadStatsMetadata> TConstructor::BuildMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const { + auto* index = self->GetIndexOptional(); + return std::make_shared<TReadStatsMetadata>(index ? index->CopyVersionedIndexPtr() : nullptr, self->TabletID(), + IsReverse ? TReadMetadataBase::ESorting::DESC : TReadMetadataBase::ESorting::ASC, + read.GetProgram(), index ? index->GetVersionedIndex().GetLastSchema() : nullptr, read.GetSnapshot()); +} + +bool TStatsIterator::AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, NAbstract::TGranuleMetaView& granule) const { + ui64 recordsCount = 0; + while (auto portion = granule.PopFrontPortion()) { + recordsCount += portion->GetRecords().size() + portion->GetIndexes().size(); + AppendStats(builders, *portion); + if (recordsCount > 10000) { + break; + } + } + return granule.GetPortions().size(); +} + +ui32 TStatsIterator::PredictRecordsCount(const NAbstract::TGranuleMetaView& granule) const { + ui32 recordsCount = 0; + for (auto&& portion : granule.GetPortions()) { + recordsCount += portion->GetRecords().size() + portion->GetIndexes().size(); + if (recordsCount > 10000) { + break; + } + } + return recordsCount; +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/chunks/chunks.h b/ydb/core/tx/columnshard/engines/reader/sys_view/chunks/chunks.h new file mode 100644 index 000000000000..0d6fd6618560 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/chunks/chunks.h @@ -0,0 +1,39 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/reader/abstract/abstract.h> +#include <ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.h> +#include <ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.h> +#include <ydb/core/sys_view/common/schema.h> + +namespace NKikimr::NOlap::NReader::NSysView::NChunks { + +class TConstructor: public TStatScannerConstructor<NKikimr::NSysView::Schema::PrimaryIndexStats> { +private: + using TBase = TStatScannerConstructor<NKikimr::NSysView::Schema::PrimaryIndexStats>; +protected: + virtual std::shared_ptr<NAbstract::TReadStatsMetadata> BuildMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const override; +public: + using TBase::TBase; +}; + +class TReadStatsMetadata: public NAbstract::TReadStatsMetadata, std::enable_shared_from_this<TReadStatsMetadata> { +private: + using TBase = NAbstract::TReadStatsMetadata; + using TSysViewSchema = NKikimr::NSysView::Schema::PrimaryIndexStats; +public: + using TBase::TBase; + + virtual std::unique_ptr<TScanIteratorBase> StartScan(const std::shared_ptr<TReadContext>& /*readContext*/) const override; + virtual std::vector<std::pair<TString, NScheme::TTypeInfo>> GetKeyYqlSchema() const override; +}; + +class TStatsIterator: public NAbstract::TStatsIterator<NKikimr::NSysView::Schema::PrimaryIndexStats> { +private: + using TBase = NAbstract::TStatsIterator<NKikimr::NSysView::Schema::PrimaryIndexStats>; + virtual bool AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, NAbstract::TGranuleMetaView& granule) const override; + virtual ui32 PredictRecordsCount(const NAbstract::TGranuleMetaView& granule) const override; + void AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, const TPortionInfo& portion) const; +public: + using TBase::TBase; +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/chunks/ya.make b/ydb/core/tx/columnshard/engines/reader/sys_view/chunks/ya.make new file mode 100644 index 000000000000..70b3aa79df54 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/chunks/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/engines/reader/sys_view/abstract +) + +SRCS( + chunks.cpp +) + +END() + diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.cpp b/ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.cpp new file mode 100644 index 000000000000..6101174764da --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.cpp @@ -0,0 +1,5 @@ +#include "constructor.h" + +namespace NKikimr::NOlap::NReader::NSysView { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.h b/ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.h new file mode 100644 index 000000000000..e69c36193a4e --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.h @@ -0,0 +1,85 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/reader/abstract/constructor.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h> +#include <ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.h> +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> +#include <ydb/core/tx/columnshard/columnshard_impl.h> + +namespace NKikimr::NOlap::NReader::NSysView { + +template <class TSysViewSchema> +class TStatScannerConstructor: public IScannerConstructor { +private: + using TBase = IScannerConstructor; + + virtual std::shared_ptr<NAbstract::TReadStatsMetadata> BuildMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const = 0; + + virtual TConclusion<std::shared_ptr<TReadMetadataBase>> DoBuildReadMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const override { + THashSet<ui32> readColumnIds(read.ColumnIds.begin(), read.ColumnIds.end()); + for (auto& [id, name] : read.GetProgram().GetSourceColumns()) { + readColumnIds.insert(id); + } + + for (ui32 colId : readColumnIds) { + if (!NAbstract::TStatsIterator<TSysViewSchema>::StatsSchema.Columns.contains(colId)) { + return TConclusionStatus::Fail(Sprintf("Columnd id %" PRIu32 " not found", colId)); + } + } + + auto out = BuildMetadata(self, read); + + out->SetPKRangesFilter(read.PKRangesFilter); + out->ReadColumnIds.assign(readColumnIds.begin(), readColumnIds.end()); + out->ResultColumnIds = read.ColumnIds; + + const TColumnEngineForLogs* logsIndex = dynamic_cast<const TColumnEngineForLogs*>(self->GetIndexOptional()); + if (!logsIndex) { + return dynamic_pointer_cast<TReadMetadataBase>(out); + } + THashSet<ui64> pathIds; + for (auto&& filter : read.PKRangesFilter) { + const ui64 fromPathId = *filter.GetPredicateFrom().Get<arrow::UInt64Array>(0, 0, 1); + const ui64 toPathId = *filter.GetPredicateTo().Get<arrow::UInt64Array>(0, 0, Max<ui64>()); + if (read.TableName.EndsWith(IIndexInfo::TABLE_INDEX_STATS_TABLE) + || read.TableName.EndsWith(IIndexInfo::TABLE_INDEX_PORTION_STATS_TABLE) + || read.TableName.EndsWith(IIndexInfo::TABLE_INDEX_GRANULE_STATS_TABLE) + ) { + if (fromPathId <= read.PathId && read.PathId <= toPathId) { + auto pathInfo = logsIndex->GetGranuleOptional(read.PathId); + if (!pathInfo) { + continue; + } + if (pathIds.emplace(pathInfo->GetPathId()).second) { + out->IndexGranules.emplace_back(NAbstract::TGranuleMetaView(*pathInfo, out->IsDescSorted())); + } + } + } else if (read.TableName.EndsWith(IIndexInfo::STORE_INDEX_STATS_TABLE) + || read.TableName.EndsWith(IIndexInfo::STORE_INDEX_PORTION_STATS_TABLE) + || read.TableName.EndsWith(IIndexInfo::STORE_INDEX_GRANULE_STATS_TABLE) + ) { + auto pathInfos = logsIndex->GetTables(fromPathId, toPathId); + for (auto&& pathInfo : pathInfos) { + if (pathIds.emplace(pathInfo->GetPathId()).second) { + out->IndexGranules.emplace_back(NAbstract::TGranuleMetaView(*pathInfo, out->IsDescSorted())); + } + } + } + } + std::sort(out->IndexGranules.begin(), out->IndexGranules.end()); + if (out->IsDescSorted()) { + std::reverse(out->IndexGranules.begin(), out->IndexGranules.end()); + } + return dynamic_pointer_cast<TReadMetadataBase>(out); + } +public: + using TBase::TBase; + virtual TConclusionStatus ParseProgram(const TVersionedIndex* vIndex, const NKikimrTxDataShard::TEvKqpScan& proto, TReadDescription& read) const override { + typename NAbstract::TStatsIterator<TSysViewSchema>::TStatsColumnResolver columnResolver; + return TBase::ParseProgram(vIndex, proto.GetOlapProgramType(), proto.GetOlapProgram(), read, columnResolver); + } + virtual std::vector<TNameTypeInfo> GetPrimaryKeyScheme(const NColumnShard::TColumnShard* /*self*/) const override { + return GetColumns(NAbstract::TStatsIterator<TSysViewSchema>::StatsSchema, NAbstract::TStatsIterator<TSysViewSchema>::StatsSchema.KeyColumns); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/constructor/ya.make b/ydb/core/tx/columnshard/engines/reader/sys_view/constructor/ya.make new file mode 100644 index 000000000000..bee096800cde --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/constructor/ya.make @@ -0,0 +1,11 @@ +LIBRARY() + +SRCS( + constructor.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/reader/abstract +) + +END() diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/granules/granules.cpp b/ydb/core/tx/columnshard/engines/reader/sys_view/granules/granules.cpp new file mode 100644 index 000000000000..4ab8e7ad2bbc --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/granules/granules.cpp @@ -0,0 +1,33 @@ +#include "granules.h" +#include <ydb/core/formats/arrow/switch/switch_type.h> +#include <ydb/core/tx/columnshard/blobs_action/common/const.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_context.h> +#include <util/system/hostname.h> + +namespace NKikimr::NOlap::NReader::NSysView::NGranules { + +bool TStatsIterator::AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, NAbstract::TGranuleMetaView& granule) const { + NArrow::Append<arrow::UInt64Type>(*builders[0], granule.GetPathId()); + NArrow::Append<arrow::UInt64Type>(*builders[1], ReadMetadata->TabletId); + NArrow::Append<arrow::UInt64Type>(*builders[2], granule.GetPortions().size()); + NArrow::Append<arrow::StringType>(*builders[3], HostNameField); + NArrow::Append<arrow::UInt64Type>(*builders[4], NActors::TActivationContext::AsActorContext().SelfID.NodeId()); + return false; +} + +std::unique_ptr<TScanIteratorBase> TReadStatsMetadata::StartScan(const std::shared_ptr<TReadContext>& readContext) const { + return std::make_unique<TStatsIterator>(readContext->GetReadMetadataPtrVerifiedAs<TReadStatsMetadata>()); +} + +std::vector<std::pair<TString, NKikimr::NScheme::TTypeInfo>> TReadStatsMetadata::GetKeyYqlSchema() const { + return GetColumns(TStatsIterator::StatsSchema, TStatsIterator::StatsSchema.KeyColumns); +} + +std::shared_ptr<NAbstract::TReadStatsMetadata> TConstructor::BuildMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const { + auto* index = self->GetIndexOptional(); + return std::make_shared<TReadStatsMetadata>(index ? index->CopyVersionedIndexPtr() : nullptr, self->TabletID(), + IsReverse ? TReadMetadataBase::ESorting::DESC : TReadMetadataBase::ESorting::ASC, + read.GetProgram(), index ? index->GetVersionedIndex().GetLastSchema() : nullptr, read.GetSnapshot()); +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/granules/granules.h b/ydb/core/tx/columnshard/engines/reader/sys_view/granules/granules.h new file mode 100644 index 000000000000..742f1e1be560 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/granules/granules.h @@ -0,0 +1,42 @@ +#pragma once +#include <ydb/core/sys_view/common/schema.h> +#include <ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.h> +#include <ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.h> +#include <util/system/hostname.h> + +namespace NKikimr::NOlap::NReader::NSysView::NGranules { + +class TConstructor: public TStatScannerConstructor<NKikimr::NSysView::Schema::PrimaryIndexGranuleStats> { +private: + using TBase = TStatScannerConstructor<NKikimr::NSysView::Schema::PrimaryIndexGranuleStats>; +protected: + virtual std::shared_ptr<NAbstract::TReadStatsMetadata> BuildMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const override; + +public: + using TBase::TBase; +}; + +struct TReadStatsMetadata: public NAbstract::TReadStatsMetadata { +private: + using TBase = NAbstract::TReadStatsMetadata; + using TSysViewSchema = NKikimr::NSysView::Schema::PrimaryIndexGranuleStats; +public: + using TBase::TBase; + + virtual std::unique_ptr<TScanIteratorBase> StartScan(const std::shared_ptr<TReadContext>& readContext) const override; + virtual std::vector<std::pair<TString, NScheme::TTypeInfo>> GetKeyYqlSchema() const override; +}; + +class TStatsIterator : public NAbstract::TStatsIterator<NKikimr::NSysView::Schema::PrimaryIndexGranuleStats> { +private: + const std::string HostNameField = HostName(); + using TBase = NAbstract::TStatsIterator<NKikimr::NSysView::Schema::PrimaryIndexGranuleStats>; + virtual ui32 PredictRecordsCount(const NAbstract::TGranuleMetaView& /*granule*/) const override { + return 1; + } + virtual bool AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, NAbstract::TGranuleMetaView& granule) const override; +public: + using TBase::TBase; +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/granules/ya.make b/ydb/core/tx/columnshard/engines/reader/sys_view/granules/ya.make new file mode 100644 index 000000000000..390364b3e64a --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/granules/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/engines/reader/sys_view/abstract +) + +SRCS( + granules.cpp +) + +END() + diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/portions/portions.cpp b/ydb/core/tx/columnshard/engines/reader/sys_view/portions/portions.cpp new file mode 100644 index 000000000000..76f1bdda2c7c --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/portions/portions.cpp @@ -0,0 +1,58 @@ +#include "portions.h" +#include <ydb/core/formats/arrow/switch/switch_type.h> +#include <ydb/core/tx/columnshard/blobs_action/common/const.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_context.h> + +namespace NKikimr::NOlap::NReader::NSysView::NPortions { + +void TStatsIterator::AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, const TPortionInfo& portion) const { + NArrow::Append<arrow::UInt64Type>(*builders[0], portion.GetPathId()); + const std::string prod = ::ToString(portion.GetMeta().Produced); + NArrow::Append<arrow::StringType>(*builders[1], prod); + NArrow::Append<arrow::UInt64Type>(*builders[2], ReadMetadata->TabletId); + NArrow::Append<arrow::UInt64Type>(*builders[3], portion.NumRows()); + NArrow::Append<arrow::UInt64Type>(*builders[4], portion.GetColumnRawBytes()); + NArrow::Append<arrow::UInt64Type>(*builders[5], portion.GetIndexRawBytes()); + NArrow::Append<arrow::UInt64Type>(*builders[6], portion.GetColumnBlobBytes()); + NArrow::Append<arrow::UInt64Type>(*builders[7], portion.GetIndexBlobBytes()); + NArrow::Append<arrow::UInt64Type>(*builders[8], portion.GetPortionId()); + NArrow::Append<arrow::BooleanType>(*builders[9], !portion.IsRemovedFor(ReadMetadata->GetRequestSnapshot())); + + auto tierName = portion.GetTierNameDef(NBlobOperations::TGlobal::DefaultStorageId); + NArrow::Append<arrow::StringType>(*builders[10], arrow::util::string_view(tierName.data(), tierName.size())); + auto statInfo = portion.GetMeta().GetStatisticsStorage().SerializeToProto().DebugString(); + NArrow::Append<arrow::StringType>(*builders[11], arrow::util::string_view(statInfo.data(), statInfo.size())); +} + +ui32 TStatsIterator::PredictRecordsCount(const NAbstract::TGranuleMetaView& granule) const { + return std::min<ui32>(10000, granule.GetPortions().size()); +} + +bool TStatsIterator::AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, NAbstract::TGranuleMetaView& granule) const { + ui64 recordsCount = 0; + while (auto portion = granule.PopFrontPortion()) { + recordsCount += 1; + AppendStats(builders, *portion); + if (recordsCount >= 10000) { + break; + } + } + return granule.GetPortions().size(); +} + +std::unique_ptr<TScanIteratorBase> TReadStatsMetadata::StartScan(const std::shared_ptr<TReadContext>& readContext) const { + return std::make_unique<TStatsIterator>(readContext->GetReadMetadataPtrVerifiedAs<TReadStatsMetadata>()); +} + +std::vector<std::pair<TString, NKikimr::NScheme::TTypeInfo>> TReadStatsMetadata::GetKeyYqlSchema() const { + return GetColumns(TStatsIterator::StatsSchema, TStatsIterator::StatsSchema.KeyColumns); +} + +std::shared_ptr<NAbstract::TReadStatsMetadata> TConstructor::BuildMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const { + auto* index = self->GetIndexOptional(); + return std::make_shared<TReadStatsMetadata>(index ? index->CopyVersionedIndexPtr() : nullptr, self->TabletID(), + IsReverse ? TReadMetadataBase::ESorting::DESC : TReadMetadataBase::ESorting::ASC, + read.GetProgram(), index ? index->GetVersionedIndex().GetLastSchema() : nullptr, read.GetSnapshot()); +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/portions/portions.h b/ydb/core/tx/columnshard/engines/reader/sys_view/portions/portions.h new file mode 100644 index 000000000000..8bcb8080ad3b --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/portions/portions.h @@ -0,0 +1,39 @@ +#pragma once +#include <ydb/core/sys_view/common/schema.h> +#include <ydb/core/tx/columnshard/engines/reader/sys_view/abstract/iterator.h> +#include <ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.h> + +namespace NKikimr::NOlap::NReader::NSysView::NPortions { + +class TConstructor: public TStatScannerConstructor<NKikimr::NSysView::Schema::PrimaryIndexPortionStats> { +private: + using TBase = TStatScannerConstructor<NKikimr::NSysView::Schema::PrimaryIndexPortionStats>; +protected: + virtual std::shared_ptr<NAbstract::TReadStatsMetadata> BuildMetadata(const NColumnShard::TColumnShard* self, const TReadDescription& read) const override; + +public: + using TBase::TBase; +}; + +struct TReadStatsMetadata: public NAbstract::TReadStatsMetadata { +private: + using TBase = NAbstract::TReadStatsMetadata; + using TSysViewSchema = NKikimr::NSysView::Schema::PrimaryIndexPortionStats; +public: + using TBase::TBase; + + virtual std::unique_ptr<TScanIteratorBase> StartScan(const std::shared_ptr<TReadContext>& readContext) const override; + virtual std::vector<std::pair<TString, NScheme::TTypeInfo>> GetKeyYqlSchema() const override; +}; + +class TStatsIterator : public NAbstract::TStatsIterator<NKikimr::NSysView::Schema::PrimaryIndexPortionStats> { +private: + using TBase = NAbstract::TStatsIterator<NKikimr::NSysView::Schema::PrimaryIndexPortionStats>; + virtual bool AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, NAbstract::TGranuleMetaView& granule) const override; + virtual ui32 PredictRecordsCount(const NAbstract::TGranuleMetaView& granule) const override; + void AppendStats(const std::vector<std::unique_ptr<arrow::ArrayBuilder>>& builders, const TPortionInfo& portion) const; +public: + using TBase::TBase; +}; + +} diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/portions/ya.make b/ydb/core/tx/columnshard/engines/reader/sys_view/portions/ya.make new file mode 100644 index 000000000000..0f1cab2459c6 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/portions/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/engines/reader/sys_view/abstract +) + +SRCS( + portions.cpp +) + +END() + diff --git a/ydb/core/tx/columnshard/engines/reader/sys_view/ya.make b/ydb/core/tx/columnshard/engines/reader/sys_view/ya.make new file mode 100644 index 000000000000..d3fdaa984fa4 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/sys_view/ya.make @@ -0,0 +1,15 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/engines/reader/sys_view/abstract + ydb/core/tx/columnshard/engines/reader/sys_view/portions + ydb/core/tx/columnshard/engines/reader/sys_view/chunks + ydb/core/tx/columnshard/engines/reader/sys_view/constructor + ydb/core/tx/columnshard/engines/reader/sys_view/granules +) + +SRCS( +) + +END() + diff --git a/ydb/core/tx/columnshard/engines/reader/transaction/tx_scan.cpp b/ydb/core/tx/columnshard/engines/reader/transaction/tx_scan.cpp new file mode 100644 index 000000000000..0d054056e39d --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/transaction/tx_scan.cpp @@ -0,0 +1,274 @@ +#include "tx_scan.h" +#include <ydb/core/tx/columnshard/engines/reader/actor/actor.h> +#include <ydb/core/tx/columnshard/engines/reader/sys_view/constructor/constructor.h> +#include <ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/constructor.h> +#include <ydb/core/formats/arrow/arrow_batch_builder.h> +#include <ydb/core/sys_view/common/schema.h> +#include <ydb/core/tx/columnshard/engines/reader/sys_view/chunks/chunks.h> +#include <ydb/core/tx/columnshard/engines/reader/sys_view/portions/portions.h> +#include <ydb/core/tx/columnshard/engines/reader/sys_view/granules/granules.h> + +namespace NKikimr::NOlap::NReader { + +std::vector<NScheme::TTypeInfo> ExtractTypes(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns) { + std::vector<NScheme::TTypeInfo> types; + types.reserve(columns.size()); + for (auto& [name, type] : columns) { + types.push_back(type); + } + return types; +} + +TString FromCells(const TConstArrayRef<TCell>& cells, const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns) { + Y_ABORT_UNLESS(cells.size() == columns.size()); + if (cells.empty()) { + return {}; + } + + std::vector<NScheme::TTypeInfo> types = ExtractTypes(columns); + + NArrow::TArrowBatchBuilder batchBuilder; + batchBuilder.Reserve(1); + auto startStatus = batchBuilder.Start(columns); + Y_ABORT_UNLESS(startStatus.ok(), "%s", startStatus.ToString().c_str()); + + batchBuilder.AddRow(NKikimr::TDbTupleRef(), NKikimr::TDbTupleRef(types.data(), cells.data(), cells.size())); + + auto batch = batchBuilder.FlushBatch(false); + Y_ABORT_UNLESS(batch); + Y_ABORT_UNLESS(batch->num_columns() == (int)cells.size()); + Y_ABORT_UNLESS(batch->num_rows() == 1); + return NArrow::SerializeBatchNoCompression(batch); +} + +std::pair<TPredicate, TPredicate> RangePredicates(const TSerializedTableRange& range, const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns) { + std::vector<TCell> leftCells; + std::vector<std::pair<TString, NScheme::TTypeInfo>> leftColumns; + bool leftTrailingNull = false; + { + TConstArrayRef<TCell> cells = range.From.GetCells(); + const size_t size = cells.size(); + Y_ASSERT(size <= columns.size()); + leftCells.reserve(size); + leftColumns.reserve(size); + for (size_t i = 0; i < size; ++i) { + if (!cells[i].IsNull()) { + leftCells.push_back(cells[i]); + leftColumns.push_back(columns[i]); + leftTrailingNull = false; + } else { + leftTrailingNull = true; + } + } + } + + std::vector<TCell> rightCells; + std::vector<std::pair<TString, NScheme::TTypeInfo>> rightColumns; + bool rightTrailingNull = false; + { + TConstArrayRef<TCell> cells = range.To.GetCells(); + const size_t size = cells.size(); + Y_ASSERT(size <= columns.size()); + rightCells.reserve(size); + rightColumns.reserve(size); + for (size_t i = 0; i < size; ++i) { + if (!cells[i].IsNull()) { + rightCells.push_back(cells[i]); + rightColumns.push_back(columns[i]); + rightTrailingNull = false; + } else { + rightTrailingNull = true; + } + } + } + + const bool fromInclusive = range.FromInclusive || leftTrailingNull; + const bool toInclusive = range.ToInclusive && !rightTrailingNull; + + TString leftBorder = FromCells(leftCells, leftColumns); + TString rightBorder = FromCells(rightCells, rightColumns); + auto leftSchema = NArrow::MakeArrowSchema(leftColumns); + Y_ASSERT(leftSchema.ok()); + auto rightSchema = NArrow::MakeArrowSchema(rightColumns); + Y_ASSERT(rightSchema.ok()); + return std::make_pair( + TPredicate(fromInclusive ? NKernels::EOperation::GreaterEqual : NKernels::EOperation::Greater, leftBorder, leftSchema.ValueUnsafe()), + TPredicate(toInclusive ? NKernels::EOperation::LessEqual : NKernels::EOperation::Less, rightBorder, rightSchema.ValueUnsafe())); +} + +static bool FillPredicatesFromRange(TReadDescription& read, const ::NKikimrTx::TKeyRange& keyRange, + const std::vector<std::pair<TString, NScheme::TTypeInfo>>& ydbPk, ui64 tabletId, const TIndexInfo* indexInfo, TString& error) { + TSerializedTableRange range(keyRange); + auto fromPredicate = std::make_shared<TPredicate>(); + auto toPredicate = std::make_shared<TPredicate>(); + std::tie(*fromPredicate, *toPredicate) = RangePredicates(range, ydbPk); + + LOG_S_DEBUG("TTxScan range predicate. From key size: " << range.From.GetCells().size() + << " To key size: " << range.To.GetCells().size() + << " greater predicate over columns: " << fromPredicate->ToString() + << " less predicate over columns: " << toPredicate->ToString() + << " at tablet " << tabletId); + + if (!read.PKRangesFilter.Add(fromPredicate, toPredicate, indexInfo)) { + error = "Error building filter"; + return false; + } + return true; +} + +bool TTxScan::Execute(TTransactionContext& /*txc*/, const TActorContext& /*ctx*/) { + TMemoryProfileGuard mpg("TTxScan::Execute"); + auto& record = Ev->Get()->Record; + TSnapshot snapshot(record.GetSnapshot().GetStep(), record.GetSnapshot().GetTxId()); + const auto scanId = record.GetScanId(); + const ui64 txId = record.GetTxId(); + + LOG_S_DEBUG("TTxScan prepare txId: " << txId << " scanId: " << scanId << " at tablet " << Self->TabletID()); + + TReadDescription read(snapshot, record.GetReverse()); + read.PathId = record.GetLocalPathId(); + read.ReadNothing = !Self->TablesManager.HasTable(read.PathId); + read.TableName = record.GetTablePath(); + bool isIndex = false; + std::unique_ptr<IScannerConstructor> scannerConstructor = [&]() { + const ui64 itemsLimit = record.HasItemsLimit() ? record.GetItemsLimit() : 0; + if (read.TableName.EndsWith(TIndexInfo::STORE_INDEX_STATS_TABLE) || + read.TableName.EndsWith(TIndexInfo::TABLE_INDEX_STATS_TABLE)) { + return std::unique_ptr<IScannerConstructor>(new NSysView::NChunks::TConstructor(snapshot, itemsLimit, record.GetReverse())); + } + if (read.TableName.EndsWith(TIndexInfo::STORE_INDEX_PORTION_STATS_TABLE) || + read.TableName.EndsWith(TIndexInfo::TABLE_INDEX_PORTION_STATS_TABLE)) { + return std::unique_ptr<IScannerConstructor>(new NSysView::NPortions::TConstructor(snapshot, itemsLimit, record.GetReverse())); + } + if (read.TableName.EndsWith(TIndexInfo::STORE_INDEX_GRANULE_STATS_TABLE) || + read.TableName.EndsWith(TIndexInfo::TABLE_INDEX_GRANULE_STATS_TABLE)) { + return std::unique_ptr<IScannerConstructor>(new NSysView::NGranules::TConstructor(snapshot, itemsLimit, record.GetReverse())); + } + isIndex = true; + return std::unique_ptr<IScannerConstructor>(new NPlain::TIndexScannerConstructor(snapshot, itemsLimit, record.GetReverse())); + }(); + read.ColumnIds.assign(record.GetColumnTags().begin(), record.GetColumnTags().end()); + read.StatsMode = record.GetStatsMode(); + + const TVersionedIndex* vIndex = Self->GetIndexOptional() ? &Self->GetIndexOptional()->GetVersionedIndex() : nullptr; + auto parseResult = scannerConstructor->ParseProgram(vIndex, record, read); + if (!parseResult) { + ErrorDescription = parseResult.GetErrorMessage(); + return true; + } + + if (!record.RangesSize()) { + auto range = scannerConstructor->BuildReadMetadata(Self, read); + if (range.IsSuccess()) { + ReadMetadataRange = range.DetachResult(); + } else { + ErrorDescription = range.GetErrorMessage(); + } + return true; + } + + auto ydbKey = scannerConstructor->GetPrimaryKeyScheme(Self); + auto* indexInfo = (vIndex && isIndex) ? &vIndex->GetSchema(snapshot)->GetIndexInfo() : nullptr; + for (auto& range : record.GetRanges()) { + if (!FillPredicatesFromRange(read, range, ydbKey, Self->TabletID(), indexInfo, ErrorDescription)) { + ReadMetadataRange = nullptr; + return true; + } + } + { + auto newRange = scannerConstructor->BuildReadMetadata(Self, read); + if (!newRange) { + ErrorDescription = newRange.GetErrorMessage(); + ReadMetadataRange = nullptr; + return true; + } + ReadMetadataRange = newRange.DetachResult(); + } + AFL_VERIFY(ReadMetadataRange); + return true; +} + +template <typename T> +struct TContainerPrinter { + const T& Ref; + + TContainerPrinter(const T& ref) + : Ref(ref) { + } + + friend IOutputStream& operator << (IOutputStream& out, const TContainerPrinter& cont) { + for (auto& ptr : cont.Ref) { + out << *ptr << " "; + } + return out; + } +}; + +void TTxScan::Complete(const TActorContext& ctx) { + TMemoryProfileGuard mpg("TTxScan::Complete"); + auto& request = Ev->Get()->Record; + auto scanComputeActor = Ev->Sender; + const auto& snapshot = request.GetSnapshot(); + const auto scanId = request.GetScanId(); + const ui64 txId = request.GetTxId(); + const ui32 scanGen = request.GetGeneration(); + TString table = request.GetTablePath(); + auto dataFormat = request.GetDataFormat(); + const TDuration timeout = TDuration::MilliSeconds(request.GetTimeoutMs()); + if (scanGen > 1) { + Self->IncCounter(NColumnShard::COUNTER_SCAN_RESTARTED); + } + const NActors::TLogContextGuard gLogging = NActors::TLogContextBuilder::Build() + ("tx_id", txId)("scan_id", scanId)("gen", scanGen)("table", table)("snapshot", snapshot)("tablet", Self->TabletID())("timeout", timeout); + + if (!ReadMetadataRange) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "TTxScan failed")("reason", "no metadata"); + + auto ev = MakeHolder<NKqp::TEvKqpCompute::TEvScanError>(scanGen, Self->TabletID()); + ev->Record.SetStatus(Ydb::StatusIds::BAD_REQUEST); + auto issue = NYql::YqlIssue({}, NYql::TIssuesIds::KIKIMR_BAD_REQUEST, TStringBuilder() + << "Table " << table << " (shard " << Self->TabletID() << ") scan failed, reason: " << ErrorDescription ? ErrorDescription : "no metadata ranges"); + NYql::IssueToMessage(issue, ev->Record.MutableIssues()->Add()); + + ctx.Send(scanComputeActor, ev.Release()); + return; + } + TStringBuilder detailedInfo; + if (IS_LOG_PRIORITY_ENABLED(NActors::NLog::PRI_TRACE, NKikimrServices::TX_COLUMNSHARD)) { + detailedInfo << " read metadata: (" << *ReadMetadataRange << ")" << " req: " << request; + } + + const TVersionedIndex* index = nullptr; + if (Self->HasIndex()) { + index = &Self->GetIndexAs<TColumnEngineForLogs>().GetVersionedIndex(); + } + const TConclusion<ui64> requestCookie = Self->InFlightReadsTracker.AddInFlightRequest(ReadMetadataRange, index); + if (!requestCookie) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "TTxScan failed")("reason", requestCookie.GetErrorMessage())("trace_details", detailedInfo); + auto ev = MakeHolder<NKqp::TEvKqpCompute::TEvScanError>(scanGen, Self->TabletID()); + + ev->Record.SetStatus(Ydb::StatusIds::INTERNAL_ERROR); + auto issue = NYql::YqlIssue({}, NYql::TIssuesIds::KIKIMR_TEMPORARILY_UNAVAILABLE, TStringBuilder() + << "Table " << table << " (shard " << Self->TabletID() << ") scan failed, reason: " << requestCookie.GetErrorMessage()); + NYql::IssueToMessage(issue, ev->Record.MutableIssues()->Add()); + Self->ScanCounters.OnScanDuration(NColumnShard::TScanCounters::EStatusFinish::CannotAddInFlight, TDuration::Zero()); + ctx.Send(scanComputeActor, ev.Release()); + return; + } + auto statsDelta = Self->InFlightReadsTracker.GetSelectStatsDelta(); + + Self->IncCounter(NColumnShard::COUNTER_READ_INDEX_PORTIONS, statsDelta.Portions); + Self->IncCounter(NColumnShard::COUNTER_READ_INDEX_BLOBS, statsDelta.Blobs); + Self->IncCounter(NColumnShard::COUNTER_READ_INDEX_ROWS, statsDelta.Rows); + Self->IncCounter(NColumnShard::COUNTER_READ_INDEX_BYTES, statsDelta.Bytes); + + TComputeShardingPolicy shardingPolicy; + AFL_VERIFY(shardingPolicy.DeserializeFromProto(request.GetComputeShardingPolicy())); + + auto scanActor = ctx.Register(new TColumnShardScan(Self->SelfId(), scanComputeActor, Self->GetStoragesManager(), + shardingPolicy, scanId, txId, scanGen, *requestCookie, Self->TabletID(), timeout, ReadMetadataRange, dataFormat, Self->ScanCounters)); + + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "TTxScan started")("actor_id", scanActor)("trace_detailed", detailedInfo); +} + +} diff --git a/ydb/core/tx/columnshard/engines/reader/transaction/tx_scan.h b/ydb/core/tx/columnshard/engines/reader/transaction/tx_scan.h new file mode 100644 index 000000000000..2d9eb9619a64 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/transaction/tx_scan.h @@ -0,0 +1,28 @@ +#pragma once +#include <ydb/core/tablet_flat/tablet_flat_executor.h> +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h> + +namespace NKikimr::NOlap::NReader { +class TTxScan: public NTabletFlatExecutor::TTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = NTabletFlatExecutor::TTransactionBase<NColumnShard::TColumnShard>; +public: + using TReadMetadataPtr = TReadMetadataBase::TConstPtr; + + TTxScan(NColumnShard::TColumnShard* self, TEvColumnShard::TEvScan::TPtr& ev) + : TBase(self) + , Ev(ev) { + } + + bool Execute(TTransactionContext& txc, const TActorContext& ctx) override; + void Complete(const TActorContext& ctx) override; + TTxType GetTxType() const override { return NColumnShard::TXTYPE_START_SCAN; } + +private: + TString ErrorDescription; + TEvColumnShard::TEvScan::TPtr Ev; + TReadMetadataPtr ReadMetadataRange; +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/reader/transaction/ya.make b/ydb/core/tx/columnshard/engines/reader/transaction/ya.make new file mode 100644 index 000000000000..a8bc351fdebc --- /dev/null +++ b/ydb/core/tx/columnshard/engines/reader/transaction/ya.make @@ -0,0 +1,15 @@ +LIBRARY() + +SRCS( + tx_scan.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/reader/abstract + ydb/core/tablet_flat + ydb/core/tx/columnshard/engines/reader/actor + ydb/core/tx/columnshard/engines/reader/sys_view/constructor + ydb/core/tx/columnshard/engines/reader/plain_reader/constructor +) + +END() diff --git a/ydb/core/tx/columnshard/engines/reader/ya.make b/ydb/core/tx/columnshard/engines/reader/ya.make index f673de8200e8..c1a5dbd87327 100644 --- a/ydb/core/tx/columnshard/engines/reader/ya.make +++ b/ydb/core/tx/columnshard/engines/reader/ya.make @@ -1,12 +1,6 @@ LIBRARY() SRCS( - conveyor_task.cpp - description.cpp - queue.cpp - read_filter_merger.cpp - read_metadata.cpp - read_context.cpp ) PEERDIR( @@ -18,10 +12,12 @@ PEERDIR( ydb/core/tx/columnshard/resources ydb/core/tx/program ydb/core/tx/columnshard/engines/reader/plain_reader + ydb/core/tx/columnshard/engines/reader/sys_view + ydb/core/tx/columnshard/engines/reader/abstract + ydb/core/tx/columnshard/engines/reader/common + ydb/core/tx/columnshard/engines/reader/actor + ydb/core/tx/columnshard/engines/reader/transaction ydb/core/tx/columnshard/engines/scheme ) -GENERATE_ENUM_SERIALIZATION(read_metadata.h) -YQL_LAST_ABI_VERSION() - END() diff --git a/ydb/core/tx/columnshard/engines/scheme/abstract/index_info.cpp b/ydb/core/tx/columnshard/engines/scheme/abstract/index_info.cpp new file mode 100644 index 000000000000..d849f5c9bbff --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/abstract/index_info.cpp @@ -0,0 +1,20 @@ +#include "index_info.h" +#include <ydb/core/sys_view/common/path.h> +#include <ydb/core/sys_view/common/schema.h> + +namespace NKikimr::NOlap { + +const TString IIndexInfo::STORE_INDEX_STATS_TABLE = TString("/") + NSysView::SysPathName + "/" + NSysView::StorePrimaryIndexStatsName; +const TString IIndexInfo::STORE_INDEX_PORTION_STATS_TABLE = TString("/") + NSysView::SysPathName + "/" + NSysView::StorePrimaryIndexPortionStatsName; +const TString IIndexInfo::STORE_INDEX_GRANULE_STATS_TABLE = TString("/") + NSysView::SysPathName + "/" + NSysView::StorePrimaryIndexGranuleStatsName; +const TString IIndexInfo::TABLE_INDEX_STATS_TABLE = TString("/") + NSysView::SysPathName + "/" + NSysView::TablePrimaryIndexStatsName; +const TString IIndexInfo::TABLE_INDEX_PORTION_STATS_TABLE = TString("/") + NSysView::SysPathName + "/" + NSysView::TablePrimaryIndexPortionStatsName; +const TString IIndexInfo::TABLE_INDEX_GRANULE_STATS_TABLE = TString("/") + NSysView::SysPathName + "/" + NSysView::TablePrimaryIndexGranuleStatsName; + +std::shared_ptr<NKikimr::NOlap::TColumnLoader> IIndexInfo::GetColumnLoaderVerified(const ui32 columnId) const { + auto result = GetColumnLoaderOptional(columnId); + AFL_VERIFY(result); + return result; +} + +} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/scheme/abstract/index_info.h b/ydb/core/tx/columnshard/engines/scheme/abstract/index_info.h new file mode 100644 index 000000000000..343ad58746b1 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/abstract/index_info.h @@ -0,0 +1,39 @@ +#pragma once +#include "loader.h" + +#include <ydb/core/tx/columnshard/common/portion.h> + +namespace NKikimr::NOlap { + +class IIndexInfo { +public: + enum class ESpecialColumn: ui32 { + PLAN_STEP = NOlap::NPortion::TSpecialColumns::SPEC_COL_PLAN_STEP_INDEX, + TX_ID = NOlap::NPortion::TSpecialColumns::SPEC_COL_TX_ID_INDEX + }; + + static constexpr const char* SPEC_COL_PLAN_STEP = NOlap::NPortion::TSpecialColumns::SPEC_COL_PLAN_STEP; + static constexpr const char* SPEC_COL_TX_ID = NOlap::NPortion::TSpecialColumns::SPEC_COL_TX_ID; + static const TString STORE_INDEX_STATS_TABLE; + static const TString STORE_INDEX_PORTION_STATS_TABLE; + static const TString STORE_INDEX_GRANULE_STATS_TABLE; + static const TString TABLE_INDEX_STATS_TABLE; + static const TString TABLE_INDEX_PORTION_STATS_TABLE; + static const TString TABLE_INDEX_GRANULE_STATS_TABLE; + + static const std::vector<std::string>& GetSpecialColumnNames() { + static const std::vector<std::string> result = {std::string(SPEC_COL_PLAN_STEP), std::string(SPEC_COL_TX_ID)}; + return result; + } + + static const std::vector<ui32>& GetSpecialColumnIds() { + static const std::vector<ui32> result = {(ui32)ESpecialColumn::PLAN_STEP, (ui32)ESpecialColumn::TX_ID}; + return result; + } + + virtual std::shared_ptr<TColumnLoader> GetColumnLoaderOptional(const ui32 columnId) const = 0; + std::shared_ptr<TColumnLoader> GetColumnLoaderVerified(const ui32 columnId) const; + virtual ~IIndexInfo() = default; +}; + +} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/scheme/abstract/loader.cpp b/ydb/core/tx/columnshard/engines/scheme/abstract/loader.cpp new file mode 100644 index 000000000000..a6f534c87190 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/abstract/loader.cpp @@ -0,0 +1,60 @@ +#include "loader.h" +#include <ydb/core/formats/arrow/common/validation.h> + +namespace NKikimr::NOlap { + +TString TColumnLoader::DebugString() const { + TStringBuilder result; + if (ExpectedSchema) { + result << "schema:" << ExpectedSchema->ToString() << ";"; + } + if (Transformer) { + result << "transformer:" << Transformer->DebugString() << ";"; + } + if (Serializer) { + result << "serializer:" << Serializer->DebugString() << ";"; + } + return result; +} + +TColumnLoader::TColumnLoader(NArrow::NTransformation::ITransformer::TPtr transformer, const NArrow::NSerialization::TSerializerContainer& serializer, + const std::shared_ptr<arrow::Schema>& expectedSchema, const ui32 columnId) + : Transformer(transformer) + , Serializer(serializer) + , ExpectedSchema(expectedSchema) + , ColumnId(columnId) { + Y_ABORT_UNLESS(ExpectedSchema); + auto fieldsCountStr = ::ToString(ExpectedSchema->num_fields()); + Y_ABORT_UNLESS(ExpectedSchema->num_fields() == 1, "%s", fieldsCountStr.data()); + Y_ABORT_UNLESS(Serializer); +} + +const std::shared_ptr<arrow::Field>& TColumnLoader::GetField() const { + return ExpectedSchema->field(0); +} + +arrow::Result<std::shared_ptr<arrow::RecordBatch>> TColumnLoader::Apply(const TString& data) const { + Y_ABORT_UNLESS(Serializer); + arrow::Result<std::shared_ptr<arrow::RecordBatch>> columnArray = + Transformer ? Serializer->Deserialize(data) : Serializer->Deserialize(data, ExpectedSchema); + if (!columnArray.ok()) { + return columnArray; + } + if (Transformer) { + return Transformer->Transform(*columnArray); + } else { + return columnArray; + } +} + +std::shared_ptr<arrow::RecordBatch> TColumnLoader::ApplyVerified(const TString& data) const { + return NArrow::TStatusValidator::GetValid(Apply(data)); +} + +std::shared_ptr<arrow::Array> TColumnLoader::ApplyVerifiedColumn(const TString& data) const { + auto rb = ApplyVerified(data); + AFL_VERIFY(rb->num_columns() == 1)("schema", rb->schema()->ToString()); + return rb->column(0); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/abstract/loader.h b/ydb/core/tx/columnshard/engines/scheme/abstract/loader.h new file mode 100644 index 000000000000..306f3aa21671 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/abstract/loader.h @@ -0,0 +1,49 @@ +#pragma once +#include <ydb/core/formats/arrow/transformer/abstract.h> +#include <ydb/core/formats/arrow/serializer/abstract.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> + +namespace NKikimr::NOlap { + +class TColumnLoader { +private: + NArrow::NTransformation::ITransformer::TPtr Transformer; + NArrow::NSerialization::TSerializerContainer Serializer; + std::shared_ptr<arrow::Schema> ExpectedSchema; + const ui32 ColumnId; +public: + bool IsEqualTo(const TColumnLoader& item) const { + if (!!Transformer != !!item.Transformer) { + return false; + } else if (!!Transformer && !Transformer->IsEqualTo(*item.Transformer)) { + return false; + } + if (!Serializer.IsEqualTo(item.Serializer)) { + return false; + } + return true; + } + + TString DebugString() const; + + TColumnLoader(NArrow::NTransformation::ITransformer::TPtr transformer, const NArrow::NSerialization::TSerializerContainer& serializer, + const std::shared_ptr<arrow::Schema>& expectedSchema, const ui32 columnId); + + ui32 GetColumnId() const { + return ColumnId; + } + + const std::shared_ptr<arrow::Field>& GetField() const; + + const std::shared_ptr<arrow::Schema>& GetExpectedSchema() const { + return ExpectedSchema; + } + + arrow::Result<std::shared_ptr<arrow::RecordBatch>> Apply(const TString& data) const; + + std::shared_ptr<arrow::RecordBatch> ApplyVerified(const TString& data) const; + + std::shared_ptr<arrow::Array> ApplyVerifiedColumn(const TString& data) const; +}; + +} diff --git a/ydb/core/tx/columnshard/engines/scheme/abstract/saver.cpp b/ydb/core/tx/columnshard/engines/scheme/abstract/saver.cpp new file mode 100644 index 000000000000..c15db92b8eec --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/abstract/saver.cpp @@ -0,0 +1,31 @@ +#include "saver.h" + +namespace NKikimr::NOlap { + +TColumnSaver::TColumnSaver(NArrow::NTransformation::ITransformer::TPtr transformer, const NArrow::NSerialization::TSerializerContainer serializer) + : Transformer(transformer) + , Serializer(serializer) +{ + Y_ABORT_UNLESS(Serializer); +} + +bool TColumnSaver::IsHardPacker() const { + return Serializer->IsHardPacker(); +} + +TString TColumnSaver::Apply(std::shared_ptr<arrow::Array> data, std::shared_ptr<arrow::Field> field) const { + auto schema = std::make_shared<arrow::Schema>(arrow::FieldVector{field}); + auto batch = arrow::RecordBatch::Make(schema, data->length(), {data}); + return Apply(batch); +} + +TString TColumnSaver::Apply(const std::shared_ptr<arrow::RecordBatch>& data) const { + Y_ABORT_UNLESS(Serializer); + if (Transformer) { + return Serializer->SerializeFull(Transformer->Transform(data)); + } else { + return Serializer->SerializePayload(data); + } +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/abstract/saver.h b/ydb/core/tx/columnshard/engines/scheme/abstract/saver.h new file mode 100644 index 000000000000..c4d10c55a359 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/abstract/saver.h @@ -0,0 +1,34 @@ +#pragma once +#include <ydb/core/formats/arrow/transformer/abstract.h> +#include <ydb/core/formats/arrow/serializer/abstract.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> + +namespace NKikimr::NOlap { + +class TColumnSaver { +private: + NArrow::NTransformation::ITransformer::TPtr Transformer; + NArrow::NSerialization::TSerializerContainer Serializer; +public: + TColumnSaver() = default; + TColumnSaver(NArrow::NTransformation::ITransformer::TPtr transformer, const NArrow::NSerialization::TSerializerContainer serializer); + + void ResetSerializer(const NArrow::NSerialization::TSerializerContainer& serializer) { + AFL_VERIFY(serializer); + if (Serializer.IsCompatibleForExchange(serializer)) { + Serializer = serializer; + } else { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "cannot_reset_serializer")("reason", "incompatible_serializers"); + } + } + + bool IsHardPacker() const; + + TString Apply(std::shared_ptr<arrow::Array> data, std::shared_ptr<arrow::Field> field) const; + + TString Apply(const std::shared_ptr<arrow::RecordBatch>& data) const; +}; + + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/abstract/ya.make b/ydb/core/tx/columnshard/engines/scheme/abstract/ya.make new file mode 100644 index 000000000000..b830415daae1 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/abstract/ya.make @@ -0,0 +1,17 @@ +LIBRARY() + +SRCS( + saver.cpp + index_info.cpp + loader.cpp +) + +PEERDIR( + ydb/library/actors/core + ydb/core/formats/arrow/transformer + ydb/core/formats/arrow/serializer +) + +YQL_LAST_ABI_VERSION() + +END() diff --git a/ydb/core/tx/columnshard/engines/scheme/abstract_scheme.cpp b/ydb/core/tx/columnshard/engines/scheme/abstract_scheme.cpp index a80496460e90..e779afcaa956 100644 --- a/ydb/core/tx/columnshard/engines/scheme/abstract_scheme.cpp +++ b/ydb/core/tx/columnshard/engines/scheme/abstract_scheme.cpp @@ -1,119 +1 @@ #include "abstract_scheme.h" - -#include <ydb/core/tx/columnshard/engines/index_info.h> -#include <util/string/join.h> - -namespace NKikimr::NOlap { - -std::shared_ptr<arrow::Field> ISnapshotSchema::GetFieldByIndex(const int index) const { - auto schema = GetSchema(); - if (!schema || index < 0 || index >= schema->num_fields()) { - return nullptr; - } - return schema->field(index); -} -std::shared_ptr<arrow::Field> ISnapshotSchema::GetFieldByColumnIdOptional(const ui32 columnId) const { - return GetFieldByIndex(GetFieldIndex(columnId)); -} - -std::set<ui32> ISnapshotSchema::GetPkColumnsIds() const { - std::set<ui32> result; - for (auto&& field : GetIndexInfo().GetReplaceKey()->fields()) { - result.emplace(GetColumnId(field->name())); - } - return result; - -} - -std::shared_ptr<arrow::RecordBatch> ISnapshotSchema::NormalizeBatch(const ISnapshotSchema& dataSchema, const std::shared_ptr<arrow::RecordBatch> batch) const { - if (dataSchema.GetSnapshot() == GetSnapshot()) { - return batch; - } - Y_ABORT_UNLESS(dataSchema.GetSnapshot() < GetSnapshot()); - const std::shared_ptr<arrow::Schema>& resultArrowSchema = GetSchema(); - std::vector<std::shared_ptr<arrow::Array>> newColumns; - newColumns.reserve(resultArrowSchema->num_fields()); - - for (size_t i = 0; i < resultArrowSchema->fields().size(); ++i) { - auto& resultField = resultArrowSchema->fields()[i]; - auto columnId = GetIndexInfo().GetColumnId(resultField->name()); - auto oldColumnIndex = dataSchema.GetFieldIndex(columnId); - if (oldColumnIndex >= 0) { // ColumnExists - auto oldColumnInfo = dataSchema.GetFieldByIndex(oldColumnIndex); - Y_ABORT_UNLESS(oldColumnInfo); - auto columnData = batch->GetColumnByName(oldColumnInfo->name()); - Y_ABORT_UNLESS(columnData); - newColumns.push_back(columnData); - } else { // AddNullColumn - auto nullColumn = NArrow::MakeEmptyBatch(arrow::schema({resultField}), batch->num_rows()); - newColumns.push_back(nullColumn->column(0)); - } - } - return arrow::RecordBatch::Make(resultArrowSchema, batch->num_rows(), newColumns); -} - -std::shared_ptr<arrow::RecordBatch> ISnapshotSchema::PrepareForInsert(const TString& data, const std::shared_ptr<arrow::Schema>& dataSchema) const { - std::shared_ptr<arrow::Schema> dstSchema = GetIndexInfo().ArrowSchema(); - auto batch = NArrow::DeserializeBatch(data, (dataSchema ? dataSchema : dstSchema)); - if (!batch) { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", "DeserializeBatch() failed"); - return nullptr; - } - if (batch->num_rows() == 0) { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", "empty batch"); - return nullptr; - } - - // Correct schema - if (dataSchema) { - batch = NArrow::ExtractColumns(batch, dstSchema, true); - if (!batch) { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", "cannot correct schema"); - return nullptr; - } - } - - if (!batch->schema()->Equals(dstSchema)) { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", TStringBuilder() << "unexpected schema for insert batch: '" << batch->schema()->ToString() << "'"); - return nullptr; - } - - const auto& sortingKey = GetIndexInfo().GetPrimaryKey(); - Y_ABORT_UNLESS(sortingKey); - - // Check PK is NOT NULL - for (auto& field : sortingKey->fields()) { - auto column = batch->GetColumnByName(field->name()); - if (!column) { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", TStringBuilder() << "missing PK column '" << field->name() << "'"); - return nullptr; - } - if (NArrow::HasNulls(column)) { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", TStringBuilder() << "PK column '" << field->name() << "' contains NULLs"); - return nullptr; - } - } - - auto status = batch->ValidateFull(); - if (!status.ok()) { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", status.ToString()); - return nullptr; - } - batch = NArrow::SortBatch(batch, sortingKey, true); - Y_DEBUG_ABORT_UNLESS(NArrow::IsSortedAndUnique(batch, sortingKey)); - return batch; -} - -ui32 ISnapshotSchema::GetColumnId(const std::string& columnName) const { - auto id = GetColumnIdOptional(columnName); - AFL_VERIFY(id)("column_name", columnName)("schema", JoinSeq(",", GetSchema()->field_names())); - return *id; -} - -std::shared_ptr<arrow::Field> ISnapshotSchema::GetFieldByColumnIdVerified(const ui32 columnId) const { - auto result = GetFieldByColumnIdOptional(columnId); - AFL_VERIFY(result)("event", "unknown_column")("column_id", columnId)("schema", DebugString()); - return result; -} - -} diff --git a/ydb/core/tx/columnshard/engines/scheme/abstract_scheme.h b/ydb/core/tx/columnshard/engines/scheme/abstract_scheme.h index bde8318423ee..25f6253c385b 100644 --- a/ydb/core/tx/columnshard/engines/scheme/abstract_scheme.h +++ b/ydb/core/tx/columnshard/engines/scheme/abstract_scheme.h @@ -1,73 +1,2 @@ #pragma once - -#include <ydb/core/tx/columnshard/common/snapshot.h> -#include <ydb/core/tx/columnshard/engines/defs.h> -#include <ydb/core/tx/columnshard/engines/column_features.h> - -#include <string> - -#include <ydb/core/formats/arrow/arrow_helpers.h> - -namespace NKikimr::NOlap { - -struct TIndexInfo; - -class ISnapshotSchema { -protected: - virtual TString DoDebugString() const = 0; -public: - using TPtr = std::shared_ptr<ISnapshotSchema>; - - virtual ~ISnapshotSchema() {} - virtual std::shared_ptr<TColumnLoader> GetColumnLoaderOptional(const ui32 columnId) const = 0; - std::shared_ptr<TColumnLoader> GetColumnLoaderVerified(const ui32 columnId) const { - auto result = GetColumnLoaderOptional(columnId); - AFL_VERIFY(result); - return result; - } - std::shared_ptr<TColumnLoader> GetColumnLoaderOptional(const std::string& columnName) const { - const std::optional<ui32> id = GetColumnIdOptional(columnName); - if (id) { - return GetColumnLoaderOptional(*id); - } else { - return nullptr; - } - } - std::shared_ptr<TColumnLoader> GetColumnLoaderVerified(const std::string& columnName) const { - auto result = GetColumnLoaderOptional(columnName); - AFL_VERIFY(result); - return result; - } - - virtual TColumnSaver GetColumnSaver(const ui32 columnId, const TSaverContext& context) const = 0; - TColumnSaver GetColumnSaver(const TString& columnName, const TSaverContext& context) const { - return GetColumnSaver(GetColumnId(columnName), context); - } - TColumnSaver GetColumnSaver(const std::string& columnName, const TSaverContext& context) const { - return GetColumnSaver(TString(columnName.data(), columnName.size()), context); - } - - virtual std::optional<ui32> GetColumnIdOptional(const std::string& columnName) const = 0; - virtual int GetFieldIndex(const ui32 columnId) const = 0; - - ui32 GetColumnId(const std::string& columnName) const; - std::shared_ptr<arrow::Field> GetFieldByIndex(const int index) const; - std::shared_ptr<arrow::Field> GetFieldByColumnIdOptional(const ui32 columnId) const; - std::shared_ptr<arrow::Field> GetFieldByColumnIdVerified(const ui32 columnId) const; - - TString DebugString() const { - return DoDebugString(); - } - virtual const std::shared_ptr<arrow::Schema>& GetSchema() const = 0; - virtual const TIndexInfo& GetIndexInfo() const = 0; - virtual const TSnapshot& GetSnapshot() const = 0; - virtual ui64 GetVersion() const = 0; - virtual ui32 GetColumnsCount() const = 0; - - std::set<ui32> GetPkColumnsIds() const; - - std::shared_ptr<arrow::RecordBatch> NormalizeBatch(const ISnapshotSchema& dataSchema, const std::shared_ptr<arrow::RecordBatch> batch) const; - std::shared_ptr<arrow::RecordBatch> PrepareForInsert(const TString& data, const std::shared_ptr<arrow::Schema>& dataSchema) const; -}; - -} // namespace NKikimr::NOlap +#include "versions/abstract_scheme.h" diff --git a/ydb/core/tx/columnshard/engines/scheme/column/info.cpp b/ydb/core/tx/columnshard/engines/scheme/column/info.cpp new file mode 100644 index 000000000000..7444cfa3093e --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/column/info.cpp @@ -0,0 +1,90 @@ +#include "info.h" +#include <ydb/core/tx/columnshard/splitter/abstract/chunks.h> + +namespace NKikimr::NOlap { + +NArrow::NTransformation::ITransformer::TPtr TSimpleColumnInfo::GetSaveTransformer() const { + NArrow::NTransformation::ITransformer::TPtr transformer; + if (DictionaryEncoding) { + transformer = DictionaryEncoding->BuildEncoder(); + } + return transformer; +} + +NArrow::NTransformation::ITransformer::TPtr TSimpleColumnInfo::GetLoadTransformer() const { + NArrow::NTransformation::ITransformer::TPtr transformer; + if (DictionaryEncoding) { + transformer = DictionaryEncoding->BuildDecoder(); + } + return transformer; +} + +TConclusionStatus TSimpleColumnInfo::DeserializeFromProto(const NKikimrSchemeOp::TOlapColumnDescription& columnInfo) +{ + AFL_VERIFY(columnInfo.GetId() == ColumnId); + if (columnInfo.HasSerializer()) { + AFL_VERIFY(Serializer.DeserializeFromProto(columnInfo.GetSerializer())); + } else if (columnInfo.HasCompression()) { + Serializer.DeserializeFromProto(columnInfo.GetCompression()).Validate(); + } + AFL_VERIFY(Serializer); + if (columnInfo.HasDictionaryEncoding()) { + auto settings = NArrow::NDictionary::TEncodingSettings::BuildFromProto(columnInfo.GetDictionaryEncoding()); + Y_ABORT_UNLESS(settings.IsSuccess()); + DictionaryEncoding = *settings; + } + Loader = std::make_shared<TColumnLoader>(GetLoadTransformer(), Serializer, ArrowSchema, ColumnId); + return TConclusionStatus::Success(); +} + +TSimpleColumnInfo::TSimpleColumnInfo(const ui32 columnId, const std::shared_ptr<arrow::Field>& arrowField, const NArrow::NSerialization::TSerializerContainer& serializer, + const bool needMinMax, const bool isSorted) + : ColumnId(columnId) + , ArrowField(arrowField) + , ArrowSchema(std::make_shared<arrow::Schema>(arrow::FieldVector({arrowField}))) + , Serializer(serializer) + , NeedMinMax(needMinMax) + , IsSorted(isSorted) +{ + ColumnName = ArrowField->name(); + Loader = std::make_shared<TColumnLoader>(GetLoadTransformer(), Serializer, ArrowSchema, ColumnId); +} + +std::vector<std::shared_ptr<NKikimr::NOlap::IPortionDataChunk>> TSimpleColumnInfo::ActualizeColumnData(const std::vector<std::shared_ptr<IPortionDataChunk>>& source, const TSimpleColumnInfo& sourceColumnFeatures) const { + AFL_VERIFY(Loader); + const auto checkNeedActualize = [&]() { + if (!Serializer.IsEqualTo(sourceColumnFeatures.Serializer)) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", "actualization")("reason", "serializer") + ("from", sourceColumnFeatures.Serializer.SerializeToProto().DebugString()) + ("to", Serializer.SerializeToProto().DebugString()); + return true; + } + if (!Loader->IsEqualTo(*sourceColumnFeatures.Loader)) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", "actualization")("reason", "loader"); + return true; + } + if (!!DictionaryEncoding != !!sourceColumnFeatures.DictionaryEncoding) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", "actualization")("reason", "dictionary")("from", !!sourceColumnFeatures.DictionaryEncoding)("to", !!DictionaryEncoding); + return true; + } + if (!!DictionaryEncoding && !DictionaryEncoding->IsEqualTo(*sourceColumnFeatures.DictionaryEncoding)) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", "actualization")("reason", "dictionary_encoding") + ("from", sourceColumnFeatures.DictionaryEncoding->SerializeToProto().DebugString()) + ("to", DictionaryEncoding->SerializeToProto().DebugString()) + ; + return true; + } + return false; + }; + if (!checkNeedActualize()) { + return source; + } + std::vector<std::shared_ptr<IPortionDataChunk>> result; + for (auto&& s : source) { + auto data = NArrow::TStatusValidator::GetValid(sourceColumnFeatures.Loader->Apply(s->GetData())); + result.emplace_back(s->CopyWithAnotherBlob(GetColumnSaver().Apply(data), *this)); + } + return result; +} + +} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/scheme/column/info.h b/ydb/core/tx/columnshard/engines/scheme/column/info.h new file mode 100644 index 000000000000..5f4eced0eae6 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/column/info.h @@ -0,0 +1,61 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/scheme/abstract/loader.h> +#include <ydb/core/tx/columnshard/engines/scheme/abstract/saver.h> + +#include <ydb/core/formats/arrow/dictionary/object.h> +#include <ydb/core/formats/arrow/serializer/abstract.h> +#include <ydb/core/formats/arrow/transformer/abstract.h> +#include <ydb/core/formats/arrow/common/validation.h> + +#include <ydb/library/accessor/accessor.h> + +#include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> + +namespace NKikimr::NOlap { + +class IPortionDataChunk; + +class TSimpleColumnInfo { +private: + YDB_READONLY(ui32, ColumnId, 0); + YDB_READONLY_DEF(TString, ColumnName); + YDB_READONLY_DEF(std::shared_ptr<arrow::Field>, ArrowField); + YDB_READONLY_DEF(std::shared_ptr<arrow::Schema>, ArrowSchema); + YDB_READONLY(NArrow::NSerialization::TSerializerContainer, Serializer, NArrow::NSerialization::TSerializerContainer::GetDefaultSerializer()); + YDB_READONLY(bool, NeedMinMax, false); + YDB_READONLY(bool, IsSorted, false); + std::optional<NArrow::NDictionary::TEncodingSettings> DictionaryEncoding; + std::shared_ptr<TColumnLoader> Loader; + NArrow::NTransformation::ITransformer::TPtr GetLoadTransformer() const; + +public: + + TSimpleColumnInfo(const ui32 columnId, const std::shared_ptr<arrow::Field>& arrowField, const NArrow::NSerialization::TSerializerContainer& serializer, const bool needMinMax, const bool isSorted); + + TColumnSaver GetColumnSaver() const { + NArrow::NTransformation::ITransformer::TPtr transformer = GetSaveTransformer(); + AFL_VERIFY(Serializer); + return TColumnSaver(transformer, Serializer); + } + + std::vector<std::shared_ptr<IPortionDataChunk>> ActualizeColumnData(const std::vector<std::shared_ptr<IPortionDataChunk>>& source, const TSimpleColumnInfo& sourceColumnFeatures) const; + + TString DebugString() const { + TStringBuilder sb; + sb << "serializer=" << (Serializer ? Serializer->DebugString() : "NO") << ";"; + sb << "encoding=" << (DictionaryEncoding ? DictionaryEncoding->DebugString() : "NO") << ";"; + sb << "loader=" << (Loader ? Loader->DebugString() : "NO") << ";"; + return sb; + } + + NArrow::NTransformation::ITransformer::TPtr GetSaveTransformer() const; + TConclusionStatus DeserializeFromProto(const NKikimrSchemeOp::TOlapColumnDescription& columnInfo); + + const std::shared_ptr<TColumnLoader>& GetLoader() const { + AFL_VERIFY(Loader); + return Loader; + } +}; + +} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/scheme/column/ya.make b/ydb/core/tx/columnshard/engines/scheme/column/ya.make new file mode 100644 index 000000000000..79a17cbe405c --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/column/ya.make @@ -0,0 +1,18 @@ +LIBRARY() + +SRCS( + info.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/abstract + + ydb/core/formats/arrow/dictionary + ydb/core/formats/arrow/serializer + ydb/core/formats/arrow/transformer + ydb/core/formats/arrow/common + + contrib/libs/apache/arrow +) + +END() diff --git a/ydb/core/tx/columnshard/engines/scheme/column_features.cpp b/ydb/core/tx/columnshard/engines/scheme/column_features.cpp index 72d5059c0053..49a0e78325dc 100644 --- a/ydb/core/tx/columnshard/engines/scheme/column_features.cpp +++ b/ydb/core/tx/columnshard/engines/scheme/column_features.cpp @@ -5,69 +5,4 @@ namespace NKikimr::NOlap { -NArrow::NTransformation::ITransformer::TPtr TColumnFeatures::GetSaveTransformer() const { - NArrow::NTransformation::ITransformer::TPtr transformer; - if (DictionaryEncoding) { - transformer = DictionaryEncoding->BuildEncoder(); - } - return transformer; -} - -NArrow::NTransformation::ITransformer::TPtr TColumnFeatures::GetLoadTransformer() const { - NArrow::NTransformation::ITransformer::TPtr transformer; - if (DictionaryEncoding) { - transformer = DictionaryEncoding->BuildDecoder(); - } - return transformer; -} - -void TColumnFeatures::InitLoader(const TIndexInfo& info) { - auto schema = info.GetColumnSchema(ColumnId); - Loader = std::make_shared<TColumnLoader>(GetLoadTransformer(), Serializer, schema, ColumnId); -} - -std::optional<NKikimr::NOlap::TColumnFeatures> TColumnFeatures::BuildFromProto(const NKikimrSchemeOp::TOlapColumnDescription& columnInfo, const TIndexInfo& indexInfo) { - const ui32 columnId = columnInfo.GetId(); - TColumnFeatures result(columnId); - if (columnInfo.HasSerializer()) { - AFL_VERIFY(result.Serializer.DeserializeFromProto(columnInfo.GetSerializer())); - } else if (columnInfo.HasCompression()) { - AFL_VERIFY(result.Serializer.DeserializeFromProto(columnInfo.GetCompression())); - } - if (columnInfo.HasDictionaryEncoding()) { - auto settings = NArrow::NDictionary::TEncodingSettings::BuildFromProto(columnInfo.GetDictionaryEncoding()); - Y_ABORT_UNLESS(settings.IsSuccess()); - result.DictionaryEncoding = *settings; - } - result.InitLoader(indexInfo); - return result; -} - -NKikimr::NOlap::TColumnFeatures TColumnFeatures::BuildFromIndexInfo(const ui32 columnId, const TIndexInfo& indexInfo) { - TColumnFeatures result(columnId); - result.InitLoader(indexInfo); - return result; -} - -TColumnFeatures::TColumnFeatures(const ui32 columnId) - : ColumnId(columnId) - , Serializer(NArrow::NSerialization::TSerializerContainer::GetDefaultSerializer()) -{ - -} - -TString TColumnLoader::DebugString() const { - TStringBuilder result; - if (ExpectedSchema) { - result << "schema:" << ExpectedSchema->ToString() << ";"; - } - if (Transformer) { - result << "transformer:" << Transformer->DebugString() << ";"; - } - if (Serializer) { - result << "serializer:" << Serializer->DebugString() << ";"; - } - return result; -} - } // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/scheme/column_features.h b/ydb/core/tx/columnshard/engines/scheme/column_features.h index 7e99af80eb72..7f8f5017559d 100644 --- a/ydb/core/tx/columnshard/engines/scheme/column_features.h +++ b/ydb/core/tx/columnshard/engines/scheme/column_features.h @@ -1,165 +1,53 @@ #pragma once +#include "abstract/loader.h" +#include "abstract/saver.h" +#include "column/info.h" + #include <ydb/core/formats/arrow/dictionary/object.h> #include <ydb/core/formats/arrow/serializer/abstract.h> #include <ydb/core/formats/arrow/transformer/abstract.h> #include <ydb/core/tx/columnshard/blobs_action/abstract/storage.h> #include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> +#include <ydb/core/tx/columnshard/splitter/abstract/chunks.h> +#include <ydb/core/formats/arrow/common/validation.h> + #include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> -#include <ydb/core/formats/arrow/common/validation.h> namespace NKikimr::NOlap { class TSaverContext { private: - TString TierName; - std::optional<NArrow::NSerialization::TSerializerContainer> ExternalSerializer; - YDB_READONLY_DEF(std::shared_ptr<IBlobsStorageOperator>, StorageOperator); YDB_READONLY_DEF(std::shared_ptr<IStoragesManager>, StoragesManager); public: - TSaverContext(const std::shared_ptr<IBlobsStorageOperator>& storageOperator, const std::shared_ptr<IStoragesManager>& storagesManager) - : StorageOperator(storageOperator) - , StoragesManager(storagesManager) { - - } - - const std::optional<NArrow::NSerialization::TSerializerContainer>& GetExternalSerializer() const { - return ExternalSerializer; - } - TSaverContext& SetExternalSerializer(const std::optional<NArrow::NSerialization::TSerializerContainer>& value) { - AFL_VERIFY(!!value); - ExternalSerializer = value; - return *this; - } - const TString& GetTierName() const { - return TierName; - } - TSaverContext& SetTierName(const TString& value) { - TierName = value; - return *this; - } -}; - -class TColumnSaver { -private: - NArrow::NTransformation::ITransformer::TPtr Transformer; - NArrow::NSerialization::TSerializerContainer Serializer; -public: - TColumnSaver() = default; - TColumnSaver(NArrow::NTransformation::ITransformer::TPtr transformer, const NArrow::NSerialization::TSerializerContainer serializer) - : Transformer(transformer) - , Serializer(serializer) { - Y_ABORT_UNLESS(Serializer); - } - - bool IsHardPacker() const { - return Serializer->IsHardPacker(); - } - - TString Apply(std::shared_ptr<arrow::Array> data, std::shared_ptr<arrow::Field> field) const { - auto schema = std::make_shared<arrow::Schema>(arrow::FieldVector{field}); - auto batch = arrow::RecordBatch::Make(schema, data->length(), {data}); - return Apply(batch); - } - - TString Apply(const std::shared_ptr<arrow::RecordBatch>& data) const { - Y_ABORT_UNLESS(Serializer); - if (Transformer) { - return Serializer->SerializeFull(Transformer->Transform(data)); - } else { - return Serializer->SerializePayload(data); - } - } -}; - -class TColumnLoader { -private: - NArrow::NTransformation::ITransformer::TPtr Transformer; - NArrow::NSerialization::TSerializerContainer Serializer; - std::shared_ptr<arrow::Schema> ExpectedSchema; - const ui32 ColumnId; -public: - TString DebugString() const; - - TColumnLoader(NArrow::NTransformation::ITransformer::TPtr transformer, const NArrow::NSerialization::TSerializerContainer& serializer, - const std::shared_ptr<arrow::Schema>& expectedSchema, const ui32 columnId) - : Transformer(transformer) - , Serializer(serializer) - , ExpectedSchema(expectedSchema) - , ColumnId(columnId) { - Y_ABORT_UNLESS(ExpectedSchema); - auto fieldsCountStr = ::ToString(ExpectedSchema->num_fields()); - Y_ABORT_UNLESS(ExpectedSchema->num_fields() == 1, "%s", fieldsCountStr.data()); - Y_ABORT_UNLESS(Serializer); - } - - ui32 GetColumnId() const { - return ColumnId; - } - - const std::shared_ptr<arrow::Field>& GetField() const { - return ExpectedSchema->field(0); - } - - const std::shared_ptr<arrow::Schema>& GetExpectedSchema() const { - return ExpectedSchema; - } - - arrow::Result<std::shared_ptr<arrow::RecordBatch>> Apply(const TString& data) const { - Y_ABORT_UNLESS(Serializer); - arrow::Result<std::shared_ptr<arrow::RecordBatch>> columnArray = - Transformer ? Serializer->Deserialize(data) : Serializer->Deserialize(data, ExpectedSchema); - if (!columnArray.ok()) { - return columnArray; - } - if (Transformer) { - return Transformer->Transform(*columnArray); - } else { - return columnArray; - } - } - - std::shared_ptr<arrow::RecordBatch> ApplyVerified(const TString& data) const { - return NArrow::TStatusValidator::GetValid(Apply(data)); - } - - std::shared_ptr<arrow::Array> ApplyVerifiedColumn(const TString& data) const { - auto rb = ApplyVerified(data); - AFL_VERIFY(rb->num_columns() == 1)("schema", rb->schema()->ToString()); - return rb->column(0); + TSaverContext(const std::shared_ptr<IStoragesManager>& storagesManager) + : StoragesManager(storagesManager) { + AFL_VERIFY(StoragesManager); } }; struct TIndexInfo; -class TColumnFeatures { +class TColumnFeatures: public TSimpleColumnInfo { private: - ui32 ColumnId; - YDB_READONLY_DEF(NArrow::NSerialization::TSerializerContainer, Serializer); - std::optional<NArrow::NDictionary::TEncodingSettings> DictionaryEncoding; - std::shared_ptr<TColumnLoader> Loader; - - NArrow::NTransformation::ITransformer::TPtr GetLoadTransformer() const; - - void InitLoader(const TIndexInfo& info); - TColumnFeatures(const ui32 columnId); + using TBase = TSimpleColumnInfo; + YDB_READONLY_DEF(std::shared_ptr<IBlobsStorageOperator>, Operator); public: - - TString DebugString() const { - TStringBuilder sb; - sb << "serializer=" << (Serializer ? Serializer->DebugString() : "NO") << ";"; - sb << "encoding=" << (DictionaryEncoding ? DictionaryEncoding->DebugString() : "NO") << ";"; - sb << "loader=" << (Loader ? Loader->DebugString() : "NO") << ";"; - return sb; - } - - NArrow::NTransformation::ITransformer::TPtr GetSaveTransformer() const; - static std::optional<TColumnFeatures> BuildFromProto(const NKikimrSchemeOp::TOlapColumnDescription& columnInfo, const TIndexInfo& indexInfo); - static TColumnFeatures BuildFromIndexInfo(const ui32 columnId, const TIndexInfo& indexInfo); - - const std::shared_ptr<TColumnLoader>& GetLoader() const { - AFL_VERIFY(Loader); - return Loader; + TColumnFeatures(const ui32 columnId, const std::shared_ptr<arrow::Field>& arrowField, const NArrow::NSerialization::TSerializerContainer& serializer, + const std::shared_ptr<IBlobsStorageOperator>& bOperator, const bool needMinMax, const bool isSorted) + : TBase(columnId, arrowField, serializer, needMinMax, isSorted) + , Operator(bOperator) + { + AFL_VERIFY(Operator); + + } + TConclusionStatus DeserializeFromProto(const NKikimrSchemeOp::TOlapColumnDescription& columnInfo, const std::shared_ptr<IStoragesManager>& storagesManager) { + auto parsed = TBase::DeserializeFromProto(columnInfo); + if (!parsed) { + return parsed; + } + Operator = storagesManager->GetOperatorVerified(columnInfo.GetStorageId() ? columnInfo.GetStorageId() : IStoragesManager::DefaultStorageId); + return TConclusionStatus::Success(); } }; diff --git a/ydb/core/tx/columnshard/engines/scheme/filtered_scheme.cpp b/ydb/core/tx/columnshard/engines/scheme/filtered_scheme.cpp index 52ad20e0da28..30eba88ffdd8 100644 --- a/ydb/core/tx/columnshard/engines/scheme/filtered_scheme.cpp +++ b/ydb/core/tx/columnshard/engines/scheme/filtered_scheme.cpp @@ -1,94 +1 @@ #include "filtered_scheme.h" -#include <util/string/join.h> - - -namespace NKikimr::NOlap { - -TFilteredSnapshotSchema::TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::vector<ui32>& columnIds) - : TFilteredSnapshotSchema(originalSnapshot, std::set(columnIds.begin(), columnIds.end())) -{} - -TFilteredSnapshotSchema::TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::set<ui32>& columnIds) - : OriginalSnapshot(originalSnapshot) - , ColumnIds(columnIds) -{ - std::vector<std::shared_ptr<arrow::Field>> schemaFields; - for (auto&& i : OriginalSnapshot->GetSchema()->fields()) { - if (!ColumnIds.contains(OriginalSnapshot->GetIndexInfo().GetColumnId(i->name()))) { - continue; - } - schemaFields.emplace_back(i); - } - Schema = std::make_shared<arrow::Schema>(schemaFields); -} - -TFilteredSnapshotSchema::TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::set<std::string>& columnNames) - : OriginalSnapshot(originalSnapshot) { - for (auto&& i : columnNames) { - ColumnIds.emplace(OriginalSnapshot->GetColumnId(i)); - } - std::vector<std::shared_ptr<arrow::Field>> schemaFields; - for (auto&& i : OriginalSnapshot->GetSchema()->fields()) { - if (!columnNames.contains(i->name())) { - continue; - } - schemaFields.emplace_back(i); - } - Schema = std::make_shared<arrow::Schema>(schemaFields); -} - -TColumnSaver TFilteredSnapshotSchema::GetColumnSaver(const ui32 columnId, const TSaverContext& context) const { - Y_ABORT_UNLESS(ColumnIds.contains(columnId)); - return OriginalSnapshot->GetColumnSaver(columnId, context); -} - -std::shared_ptr<TColumnLoader> TFilteredSnapshotSchema::GetColumnLoaderOptional(const ui32 columnId) const { - Y_ABORT_UNLESS(ColumnIds.contains(columnId)); - return OriginalSnapshot->GetColumnLoaderOptional(columnId); -} - -std::optional<ui32> TFilteredSnapshotSchema::GetColumnIdOptional(const std::string& columnName) const { - return OriginalSnapshot->GetColumnIdOptional(columnName); -} - -int TFilteredSnapshotSchema::GetFieldIndex(const ui32 columnId) const { - if (!ColumnIds.contains(columnId)) { - return -1; - } - TString columnName = OriginalSnapshot->GetIndexInfo().GetColumnName(columnId, false); - if (!columnName) { - return -1; - } - std::string name(columnName.data(), columnName.size()); - return Schema->GetFieldIndex(name); -} - -const std::shared_ptr<arrow::Schema>& TFilteredSnapshotSchema::GetSchema() const { - return Schema; -} - -const TIndexInfo& TFilteredSnapshotSchema::GetIndexInfo() const { - return OriginalSnapshot->GetIndexInfo(); -} - -const TSnapshot& TFilteredSnapshotSchema::GetSnapshot() const { - return OriginalSnapshot->GetSnapshot(); -} - -ui32 TFilteredSnapshotSchema::GetColumnsCount() const { - return Schema->num_fields(); -} - -ui64 TFilteredSnapshotSchema::GetVersion() const { - return OriginalSnapshot->GetIndexInfo().GetVersion(); -} - -TString TFilteredSnapshotSchema::DoDebugString() const { - return TStringBuilder() << "(" - << "original=" << OriginalSnapshot->DebugString() << ";" - << "column_ids=[" << JoinSeq(",", ColumnIds) << "];" - << ")" - ; -} - -} diff --git a/ydb/core/tx/columnshard/engines/scheme/filtered_scheme.h b/ydb/core/tx/columnshard/engines/scheme/filtered_scheme.h index 2e444b26d53f..e0f0bdb537af 100644 --- a/ydb/core/tx/columnshard/engines/scheme/filtered_scheme.h +++ b/ydb/core/tx/columnshard/engines/scheme/filtered_scheme.h @@ -1,32 +1,2 @@ #pragma once - -#include "abstract_scheme.h" - -#include <ydb/core/tx/columnshard/engines/index_info.h> - -namespace NKikimr::NOlap { - -class TFilteredSnapshotSchema: public ISnapshotSchema { - ISnapshotSchema::TPtr OriginalSnapshot; - std::shared_ptr<arrow::Schema> Schema; - std::set<ui32> ColumnIds; -protected: - virtual TString DoDebugString() const override; -public: - TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::vector<ui32>& columnIds); - TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::set<ui32>& columnIds); - TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::set<std::string>& columnNames); - - TColumnSaver GetColumnSaver(const ui32 columnId, const TSaverContext& context) const override; - std::shared_ptr<TColumnLoader> GetColumnLoaderOptional(const ui32 columnId) const override; - std::optional<ui32> GetColumnIdOptional(const std::string& columnName) const override; - int GetFieldIndex(const ui32 columnId) const override; - - const std::shared_ptr<arrow::Schema>& GetSchema() const override; - const TIndexInfo& GetIndexInfo() const override; - const TSnapshot& GetSnapshot() const override; - ui32 GetColumnsCount() const override; - ui64 GetVersion() const override; -}; - -} +#include "versions/filtered_scheme.h" diff --git a/ydb/core/tx/columnshard/engines/scheme/index_info.cpp b/ydb/core/tx/columnshard/engines/scheme/index_info.cpp index e60785485be2..c91f2d0d1370 100644 --- a/ydb/core/tx/columnshard/engines/scheme/index_info.cpp +++ b/ydb/core/tx/columnshard/engines/scheme/index_info.cpp @@ -1,17 +1,16 @@ #include "index_info.h" +#include "statistics/abstract/operator.h" +#include <ydb/core/tx/columnshard/engines/storage/chunks/column.h> + +#include <ydb/core/base/appdata.h> #include <ydb/core/formats/arrow/arrow_batch_builder.h> -#include <ydb/core/formats/arrow/sort_cursor.h> -#include <ydb/core/sys_view/common/schema.h> #include <ydb/core/formats/arrow/serializer/native.h> #include <ydb/core/formats/arrow/transformer/dictionary.h> -#include <ydb/core/base/appdata.h> +#include <ydb/core/sys_view/common/schema.h> namespace NKikimr::NOlap { -const TString TIndexInfo::STORE_INDEX_STATS_TABLE = TString("/") + NSysView::SysPathName + "/" + NSysView::StorePrimaryIndexStatsName; -const TString TIndexInfo::TABLE_INDEX_STATS_TABLE = TString("/") + NSysView::SysPathName + "/" + NSysView::TablePrimaryIndexStatsName; - static std::vector<TString> NamesOnly(const std::vector<TNameTypeInfo>& columns) { std::vector<TString> out; out.reserve(columns.size()); @@ -48,6 +47,10 @@ std::shared_ptr<arrow::RecordBatch> TIndexInfo::AddSpecialColumns(const std::sha return *res; } +ui64 TIndexInfo::GetSpecialColumnsRecordSize() { + return sizeof(ui64) + sizeof(ui64); +} + std::shared_ptr<arrow::Schema> TIndexInfo::ArrowSchemaSnapshot() { static std::shared_ptr<arrow::Schema> result = std::make_shared<arrow::Schema>(arrow::FieldVector{ arrow::field(SPEC_COL_PLAN_STEP, arrow::uint64()), @@ -231,7 +234,7 @@ std::shared_ptr<arrow::Field> TIndexInfo::ArrowColumnFieldOptional(const ui32 co } } -void TIndexInfo::SetAllKeys() { +void TIndexInfo::SetAllKeys(const std::shared_ptr<IStoragesManager>& operators) { /// @note Setting replace and sorting key to PK we are able to: /// * apply REPLACE by MergeSort /// * apply PK predicate before REPLACE @@ -256,69 +259,14 @@ void TIndexInfo::SetAllKeys() { MinMaxIdxColumnsIds.insert(GetPKFirstColumnId()); if (!Schema) { AFL_VERIFY(!SchemaWithSpecials); - InitializeCaches(); - } -} - -std::shared_ptr<NArrow::TSortDescription> TIndexInfo::SortDescription() const { - if (GetPrimaryKey()) { - auto key = ExtendedKey; // Sort with extended key, greater snapshot first - Y_ABORT_UNLESS(key && key->num_fields() > 2); - auto description = std::make_shared<NArrow::TSortDescription>(key); - description->Directions[key->num_fields() - 1] = -1; - description->Directions[key->num_fields() - 2] = -1; - description->NotNull = true; // TODO - return description; - } - return {}; -} - -std::shared_ptr<NArrow::TSortDescription> TIndexInfo::SortReplaceDescription() const { - if (GetPrimaryKey()) { - auto key = ExtendedKey; // Sort with extended key, greater snapshot first - Y_ABORT_UNLESS(key && key->num_fields() > 2); - auto description = std::make_shared<NArrow::TSortDescription>(key, GetPrimaryKey()); - description->Directions[key->num_fields() - 1] = -1; - description->Directions[key->num_fields() - 2] = -1; - description->NotNull = true; // TODO - return description; - } - return {}; -} - -bool TIndexInfo::AllowTtlOverColumn(const TString& name) const { - auto it = ColumnNames.find(name); - if (it == ColumnNames.end()) { - return false; - } - return MinMaxIdxColumnsIds.contains(it->second); -} - -TColumnSaver TIndexInfo::GetColumnSaver(const ui32 columnId, const TSaverContext& context) const { - NArrow::NTransformation::ITransformer::TPtr transformer; - NArrow::NSerialization::TSerializerContainer serializer; - { - auto it = ColumnFeatures.find(columnId); - AFL_VERIFY(it != ColumnFeatures.end()); - transformer = it->second.GetSaveTransformer(); - serializer = it->second.GetSerializer(); - } - - if (!!context.GetExternalSerializer()) { - return TColumnSaver(transformer, *context.GetExternalSerializer()); - } else if (!!serializer) { - return TColumnSaver(transformer, serializer); - } else if (DefaultSerializer) { - return TColumnSaver(transformer, DefaultSerializer); - } else { - return TColumnSaver(transformer, NArrow::NSerialization::TSerializerContainer::GetDefaultSerializer()); + InitializeCaches(operators); } } -std::shared_ptr<TColumnLoader> TIndexInfo::GetColumnLoaderVerified(const ui32 columnId) const { - auto result = GetColumnLoaderOptional(columnId); - AFL_VERIFY(result); - return result; +TColumnSaver TIndexInfo::GetColumnSaver(const ui32 columnId) const { + auto it = ColumnFeatures.find(columnId); + AFL_VERIFY(it != ColumnFeatures.end()); + return it->second.GetColumnSaver(); } std::shared_ptr<TColumnLoader> TIndexInfo::GetColumnLoaderOptional(const ui32 columnId) const { @@ -364,18 +312,43 @@ std::shared_ptr<arrow::Schema> TIndexInfo::GetColumnSchema(const ui32 columnId) return GetColumnsSchema({columnId}); } -bool TIndexInfo::DeserializeFromProto(const NKikimrSchemeOp::TColumnTableSchema& schema) { +bool TIndexInfo::DeserializeFromProto(const NKikimrSchemeOp::TColumnTableSchema& schema, const std::shared_ptr<IStoragesManager>& operators) { if (schema.GetEngine() != NKikimrSchemeOp::COLUMN_ENGINE_REPLACING_TIMESERIES) { AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "cannot_parse_index_info")("reason", "incorrect_engine_in_schema"); return false; } + { + SchemeNeedActualization = schema.GetOptions().GetSchemeNeedActualization(); + } + + if (schema.HasDefaultCompression()) { + NArrow::NSerialization::TSerializerContainer container; + if (!container.DeserializeFromProto(schema.GetDefaultCompression())) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "cannot_parse_index_info")("reason", "cannot_parse_default_serializer"); + return false; + } + DefaultSerializer = container; + } + + { + for (const auto& stat : schema.GetStatistics()) { + NStatistics::TOperatorContainer container; + AFL_VERIFY(container.DeserializeFromProto(stat)); + AFL_VERIFY(StatisticsByName.emplace(container.GetName(), std::move(container)).second); + } + NStatistics::TPortionStorageCursor cursor; + for (auto&& [_, container] : StatisticsByName) { + container.SetCursor(cursor); + container->ShiftCursor(cursor); + } + } + for (const auto& idx : schema.GetIndexes()) { NIndexes::TIndexMetaContainer meta; AFL_VERIFY(meta.DeserializeFromProto(idx)); Indexes.emplace(meta->GetIndexId(), meta); } - for (const auto& col : schema.GetColumns()) { const ui32 id = col.GetId(); const TString& name = col.GetName(); @@ -384,31 +357,22 @@ bool TIndexInfo::DeserializeFromProto(const NKikimrSchemeOp::TColumnTableSchema& Columns[id] = NTable::TColumn(name, id, typeInfoMod.TypeInfo, typeInfoMod.TypeMod, notNull); ColumnNames[name] = id; } - InitializeCaches(); - for (const auto& col : schema.GetColumns()) { - std::optional<TColumnFeatures> cFeatures = TColumnFeatures::BuildFromProto(col, *this); - if (!cFeatures) { - AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "cannot_parse_column_feature"); - return false; - } - auto it = ColumnFeatures.find(col.GetId()); - AFL_VERIFY(it != ColumnFeatures.end()); - it->second = *cFeatures; - } - for (const auto& keyName : schema.GetKeyColumnNames()) { Y_ABORT_UNLESS(ColumnNames.contains(keyName)); KeyColumns.push_back(ColumnNames[keyName]); } - - if (schema.HasDefaultCompression()) { - NArrow::NSerialization::TSerializerContainer container; - if (!container.DeserializeFromProto(schema.GetDefaultCompression())) { - AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "cannot_parse_index_info")("reason", "cannot_parse_default_serializer"); + InitializeCaches(operators); + for (const auto& col : schema.GetColumns()) { + auto it = ColumnFeatures.find(col.GetId()); + AFL_VERIFY(it != ColumnFeatures.end()); + auto parsed = it->second.DeserializeFromProto(col, operators); + if (!parsed) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "cannot_parse_column_feature")("reason", parsed.GetErrorMessage()); return false; } - DefaultSerializer = container; } + + Version = schema.GetVersion(); return true; } @@ -433,7 +397,9 @@ std::shared_ptr<arrow::Schema> MakeArrowSchema(const NTable::TScheme::TTableSche const auto& column = it->second; std::string colName(column.Name.data(), column.Name.size()); - fields.emplace_back(std::make_shared<arrow::Field>(colName, NArrow::GetArrowType(column.PType), !column.NotNull)); + auto arrowType = NArrow::GetArrowType(column.PType); + AFL_VERIFY(arrowType.ok()); + fields.emplace_back(std::make_shared<arrow::Field>(colName, arrowType.ValueUnsafe(), !column.NotNull)); } return std::make_shared<arrow::Schema>(std::move(fields)); @@ -450,9 +416,9 @@ std::vector<TNameTypeInfo> GetColumns(const NTable::TScheme::TTableSchema& table return out; } -std::optional<TIndexInfo> TIndexInfo::BuildFromProto(const NKikimrSchemeOp::TColumnTableSchema& schema) { +std::optional<TIndexInfo> TIndexInfo::BuildFromProto(const NKikimrSchemeOp::TColumnTableSchema& schema, const std::shared_ptr<IStoragesManager>& operators) { TIndexInfo result(""); - if (!result.DeserializeFromProto(schema)) { + if (!result.DeserializeFromProto(schema, operators)) { return std::nullopt; } return result; @@ -462,18 +428,46 @@ std::shared_ptr<arrow::Field> TIndexInfo::SpecialColumnField(const ui32 columnId return ArrowSchemaSnapshot()->GetFieldByName(GetColumnName(columnId, true)); } -void TIndexInfo::InitializeCaches() { +void TIndexInfo::InitializeCaches(const std::shared_ptr<IStoragesManager>& operators) { BuildArrowSchema(); BuildSchemaWithSpecials(); for (auto&& c : Columns) { AFL_VERIFY(ArrowColumnByColumnIdCache.emplace(c.first, GetColumnFieldVerified(c.first)).second); - AFL_VERIFY(ColumnFeatures.emplace(c.first, TColumnFeatures::BuildFromIndexInfo(c.first, *this)).second); + AFL_VERIFY(ColumnFeatures.emplace(c.first, TColumnFeatures(c.first, GetColumnFieldVerified(c.first), DefaultSerializer, operators->GetDefaultOperator(), + NArrow::IsPrimitiveYqlType(c.second.PType), c.first == GetPKFirstColumnId())).second); } for (auto&& cId : GetSpecialColumnIds()) { AFL_VERIFY(ArrowColumnByColumnIdCache.emplace(cId, GetColumnFieldVerified(cId)).second); - AFL_VERIFY(ColumnFeatures.emplace(cId, TColumnFeatures::BuildFromIndexInfo(cId, *this)).second); + AFL_VERIFY(ColumnFeatures.emplace(cId, TColumnFeatures(cId, GetColumnFieldVerified(cId), DefaultSerializer, operators->GetDefaultOperator(), false, false)).second); + } +} + +std::vector<std::shared_ptr<NKikimr::NOlap::IPortionDataChunk>> TIndexInfo::MakeEmptyChunks(const ui32 columnId, const std::vector<ui32>& pages, const TSimpleColumnInfo& columnInfo) const { + std::vector<std::shared_ptr<IPortionDataChunk>> result; + auto columnArrowSchema = GetColumnSchema(columnId); + TColumnSaver saver = GetColumnSaver(columnId); + ui32 idx = 0; + for (auto p : pages) { + auto arr = NArrow::MakeEmptyBatch(columnArrowSchema, p); + AFL_VERIFY(arr->num_columns() == 1)("count", arr->num_columns()); + result.emplace_back(std::make_shared<NChunks::TChunkPreparation>(saver.Apply(arr), arr->column(0), TChunkAddress(columnId, idx), columnInfo)); + ++idx; + } + return result; +} + +NSplitter::TEntityGroups TIndexInfo::GetEntityGroupsByStorageId(const TString& specialTier, const IStoragesManager& storages) const { + NSplitter::TEntityGroups groups(storages.GetDefaultOperator()->GetBlobSplitSettings(), IStoragesManager::DefaultStorageId); + for (auto&& i : GetEntityIds()) { + auto storageId = GetEntityStorageId(i, specialTier); + auto* group = groups.GetGroupOptional(storageId); + if (!group) { + group = &groups.RegisterGroup(storageId, storages.GetOperatorVerified(storageId)->GetBlobSplitSettings()); + } + group->AddEntity(i); } + return groups; } } // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/scheme/index_info.h b/ydb/core/tx/columnshard/engines/scheme/index_info.h index 7409e33bd910..a5c63814256e 100644 --- a/ydb/core/tx/columnshard/engines/scheme/index_info.h +++ b/ydb/core/tx/columnshard/engines/scheme/index_info.h @@ -3,6 +3,11 @@ #include "column_features.h" #include "tier_info.h" +#include "abstract/index_info.h" +#include "indexes/abstract/meta.h" +#include "statistics/abstract/operator.h" +#include "statistics/abstract/common.h" + #include <ydb/core/tx/columnshard/common/snapshot.h> #include <ydb/core/sys_view/common/schema.h> @@ -12,7 +17,6 @@ #include <ydb/core/formats/arrow/serializer/abstract.h> #include <ydb/core/formats/arrow/transformer/abstract.h> #include <ydb/core/scheme/scheme_types_proto.h> -#include "indexes/abstract/meta.h" namespace arrow { class Array; @@ -20,43 +24,96 @@ namespace arrow { class Schema; } -namespace NKikimr::NArrow { - struct TSortDescription; -} - namespace NKikimr::NOlap { +class TPortionInfoWithBlobs; struct TInsertedData; class TSnapshotColumnInfo; +class ISnapshotSchema; using TNameTypeInfo = std::pair<TString, NScheme::TTypeInfo>; /// Column engine index description in terms of tablet's local table. /// We have to use YDB types for keys here. -struct TIndexInfo : public NTable::TScheme::TTableSchema { +struct TIndexInfo : public NTable::TScheme::TTableSchema, public IIndexInfo { private: THashMap<ui32, TColumnFeatures> ColumnFeatures; THashMap<ui32, std::shared_ptr<arrow::Field>> ArrowColumnByColumnIdCache; THashMap<ui32, NIndexes::TIndexMetaContainer> Indexes; + std::map<TString, NStatistics::TOperatorContainer> StatisticsByName; TIndexInfo(const TString& name); - bool DeserializeFromProto(const NKikimrSchemeOp::TColumnTableSchema& schema); + bool SchemeNeedActualization = false; + bool DeserializeFromProto(const NKikimrSchemeOp::TColumnTableSchema& schema, const std::shared_ptr<IStoragesManager>& operators); TColumnFeatures& GetOrCreateColumnFeatures(const ui32 columnId) const; void BuildSchemaWithSpecials(); void BuildArrowSchema(); - void InitializeCaches(); + void InitializeCaches(const std::shared_ptr<IStoragesManager>& operators); public: - static constexpr const char* SPEC_COL_PLAN_STEP = NOlap::NPortion::TSpecialColumns::SPEC_COL_PLAN_STEP; - static constexpr const char* SPEC_COL_TX_ID = NOlap::NPortion::TSpecialColumns::SPEC_COL_TX_ID; - static const TString STORE_INDEX_STATS_TABLE; - static const TString TABLE_INDEX_STATS_TABLE; + const TColumnFeatures& GetColumnFeaturesVerified(const ui32 columnId) const { + auto it = ColumnFeatures.find(columnId); + AFL_VERIFY(it != ColumnFeatures.end()); + return it->second; + } + + NSplitter::TEntityGroups GetEntityGroupsByStorageId(const TString& specialTier, const IStoragesManager& storages) const; + + bool GetSchemeNeedActualization() const { + return SchemeNeedActualization; + } + + std::set<TString> GetUsedStorageIds(const TString& portionTierName) const { + std::set<TString> result; + if (portionTierName && portionTierName != IStoragesManager::DefaultStorageId) { + result.emplace(portionTierName); + } else { + for (auto&& i : ColumnFeatures) { + result.emplace(i.second.GetOperator()->GetStorageId()); + } + } + return result; + } + + std::vector<std::shared_ptr<IPortionDataChunk>> MakeEmptyChunks(const ui32 columnId, const std::vector<ui32>& pages, const TSimpleColumnInfo& columnInfo) const; + + const std::map<TString, NStatistics::TOperatorContainer>& GetStatisticsByName() const { + return StatisticsByName; + } + + NStatistics::TOperatorContainer GetStatistics(const NStatistics::TIdentifier& id) const { + for (auto&& i : StatisticsByName) { + if (i.second->GetIdentifier() == id) { + return i.second; + } + } + return NStatistics::TOperatorContainer(); + } const THashMap<ui32, NIndexes::TIndexMetaContainer>& GetIndexes() const { return Indexes; } - enum class ESpecialColumn : ui32 { - PLAN_STEP = NOlap::NPortion::TSpecialColumns::SPEC_COL_PLAN_STEP_INDEX, - TX_ID = NOlap::NPortion::TSpecialColumns::SPEC_COL_TX_ID_INDEX - }; + const TString& GetIndexStorageId(const ui32 indexId) const { + auto it = Indexes.find(indexId); + AFL_VERIFY(it != Indexes.end()); + return it->second->GetStorageId(); + } + + const TString& GetColumnStorageId(const ui32 columnId, const TString& specialTier) const { + if (specialTier && specialTier != IStoragesManager::DefaultStorageId) { + return specialTier; + } else { + auto it = ColumnFeatures.find(columnId); + AFL_VERIFY(it != ColumnFeatures.end()); + return it->second.GetOperator()->GetStorageId(); + } + } + + const TString& GetEntityStorageId(const ui32 entityId, const TString& specialTier) const { + auto it = Indexes.find(entityId); + if (it != Indexes.end()) { + return it->second->GetStorageId(); + } + return GetColumnStorageId(entityId, specialTier); + } TString DebugString() const { TStringBuilder sb; @@ -77,6 +134,7 @@ struct TIndexInfo : public NTable::TScheme::TTableSchema { /// Makes schema as set of the special columns. static std::shared_ptr<arrow::Schema> ArrowSchemaSnapshot(); + static ui64 GetSpecialColumnsRecordSize(); /// Matches name of the filed with names of the special columns. static bool IsSpecialColumn(const arrow::Field& field); @@ -102,20 +160,35 @@ struct TIndexInfo : public NTable::TScheme::TTableSchema { return result; } - static std::optional<TIndexInfo> BuildFromProto(const NKikimrSchemeOp::TColumnTableSchema& schema); + std::vector<std::shared_ptr<IPortionDataChunk>> ActualizeColumnData(const std::vector<std::shared_ptr<IPortionDataChunk>>& source, const TIndexInfo& sourceIndexInfo, const ui32 columnId) const { + auto itCurrent = ColumnFeatures.find(columnId); + auto itPred = sourceIndexInfo.ColumnFeatures.find(columnId); + AFL_VERIFY(itCurrent != ColumnFeatures.end()); + AFL_VERIFY(itPred != sourceIndexInfo.ColumnFeatures.end()); + return itCurrent->second.ActualizeColumnData(source, itPred->second); + } + + static std::optional<TIndexInfo> BuildFromProto(const NKikimrSchemeOp::TColumnTableSchema& schema, const std::shared_ptr<IStoragesManager>& operators); static const std::vector<std::string>& SnapshotColumnNames() { static std::vector<std::string> result = {SPEC_COL_PLAN_STEP, SPEC_COL_TX_ID}; return result; } + bool HasColumnId(const ui32 columnId) const { + return ColumnFeatures.contains(columnId); + } + + bool HasIndexId(const ui32 indexId) const { + return Indexes.contains(indexId); + } + std::shared_ptr<arrow::Field> GetColumnFieldOptional(const ui32 columnId) const; std::shared_ptr<arrow::Field> GetColumnFieldVerified(const ui32 columnId) const; std::shared_ptr<arrow::Schema> GetColumnSchema(const ui32 columnId) const; std::shared_ptr<arrow::Schema> GetColumnsSchema(const std::set<ui32>& columnIds) const; - TColumnSaver GetColumnSaver(const ui32 columnId, const TSaverContext& context) const; - std::shared_ptr<TColumnLoader> GetColumnLoaderOptional(const ui32 columnId) const; - std::shared_ptr<TColumnLoader> GetColumnLoaderVerified(const ui32 columnId) const; + TColumnSaver GetColumnSaver(const ui32 columnId) const; + virtual std::shared_ptr<TColumnLoader> GetColumnLoaderOptional(const ui32 columnId) const override; std::optional<std::string> GetColumnNameOptional(const ui32 columnId) const { auto f = GetColumnFieldOptional(columnId); if (!f) { @@ -140,13 +213,20 @@ struct TIndexInfo : public NTable::TScheme::TTableSchema { return meta->GetIndexName(); } - void AppendIndexes(std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& originalData) const { + void AppendIndexes(THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& originalData) const { for (auto&& i : Indexes) { std::shared_ptr<IPortionDataChunk> chunk = i.second->BuildIndex(i.first, originalData, *this); AFL_VERIFY(originalData.emplace(i.first, std::vector<std::shared_ptr<IPortionDataChunk>>({chunk})).second); } } + void AppendIndex(THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& originalData, const ui32 indexId) const { + auto it = Indexes.find(indexId); + AFL_VERIFY(it != Indexes.end()); + std::shared_ptr<IPortionDataChunk> chunk = it->second->BuildIndex(indexId, originalData, *this); + AFL_VERIFY(originalData.emplace(indexId, std::vector<std::shared_ptr<IPortionDataChunk>>({chunk})).second); + } + /// Returns an id of the column located by name. The name should exists in the schema. ui32 GetColumnId(const std::string& name) const; std::optional<ui32> GetColumnIdOptional(const std::string& name) const; @@ -157,6 +237,13 @@ struct TIndexInfo : public NTable::TScheme::TTableSchema { /// Returns names of columns defined by the specific ids. std::vector<TString> GetColumnNames(const std::vector<ui32>& ids) const; std::vector<ui32> GetColumnIds() const; + std::vector<ui32> GetEntityIds() const { + auto result = GetColumnIds(); + for (auto&& i : Indexes) { + result.emplace_back(i.first); + } + return result; + } /// Returns info of columns defined by specific ids. std::vector<TNameTypeInfo> GetColumns(const std::vector<ui32>& ids) const; @@ -179,7 +266,7 @@ struct TIndexInfo : public NTable::TScheme::TTableSchema { const std::shared_ptr<arrow::Schema>& GetPrimaryKey() const { return PrimaryKey; } /// Initializes sorting, replace, index and extended keys. - void SetAllKeys(); + void SetAllKeys(const std::shared_ptr<IStoragesManager>& operators); void CheckTtlColumn(const TString& ttlColumn) const { Y_ABORT_UNLESS(!ttlColumn.empty()); @@ -213,19 +300,6 @@ struct TIndexInfo : public NTable::TScheme::TTableSchema { bool IsSorted() const { return true; } bool IsSortedColumn(const ui32 columnId) const { return GetPKFirstColumnId() == columnId; } - std::shared_ptr<NArrow::TSortDescription> SortDescription() const; - std::shared_ptr<NArrow::TSortDescription> SortReplaceDescription() const; - - static const std::vector<std::string>& GetSpecialColumnNames() { - static const std::vector<std::string> result = { std::string(SPEC_COL_PLAN_STEP), std::string(SPEC_COL_TX_ID) }; - return result; - } - - static const std::vector<ui32>& GetSpecialColumnIds() { - static const std::vector<ui32> result = {(ui32)ESpecialColumn::PLAN_STEP, (ui32)ESpecialColumn::TX_ID}; - return result; - } - static const std::set<ui32>& GetSpecialColumnIdsSet() { static const std::set<ui32> result(GetSpecialColumnIds().begin(), GetSpecialColumnIds().end()); return result; @@ -236,6 +310,9 @@ struct TIndexInfo : public NTable::TScheme::TTableSchema { } bool CheckCompatible(const TIndexInfo& other) const; + NArrow::NSerialization::TSerializerContainer GetDefaultSerializer() const { + return DefaultSerializer; + } private: ui64 Version = 0; @@ -246,7 +323,7 @@ struct TIndexInfo : public NTable::TScheme::TTableSchema { std::shared_ptr<arrow::Schema> ExtendedKey; // Extend PK with snapshot columns to allow old shapshot reads THashSet<TString> RequiredColumns; THashSet<ui32> MinMaxIdxColumnsIds; - NArrow::NSerialization::TSerializerContainer DefaultSerializer; + NArrow::NSerialization::TSerializerContainer DefaultSerializer = NArrow::NSerialization::TSerializerContainer::GetDefaultSerializer(); }; std::shared_ptr<arrow::Schema> MakeArrowSchema(const NTable::TScheme::TTableSchema::TColumns& columns, const std::vector<ui32>& ids, bool withSpecials = false); diff --git a/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/meta.cpp b/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/meta.cpp index cf87cf941d8f..f645bd4a308b 100644 --- a/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/meta.cpp +++ b/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/meta.cpp @@ -1,7 +1,9 @@ #include "meta.h" +#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> #include <ydb/core/tx/columnshard/engines/portions/column_record.h> #include <ydb/core/tx/columnshard/engines/portions/portion_info.h> #include <ydb/core/tx/columnshard/engines/scheme/index_info.h> +#include <ydb/core/tx/columnshard/engines/storage/chunks/data.h> #include <ydb/core/formats/arrow/hash/xx_hash.h> #include <ydb/core/formats/arrow/hash/calcer.h> #include <ydb/core/formats/arrow/serializer/abstract.h> @@ -9,11 +11,12 @@ namespace NKikimr::NOlap::NIndexes { -void TPortionIndexChunk::DoAddIntoPortion(const TBlobRange& bRange, TPortionInfo& portionInfo) const { - portionInfo.AddIndex(TIndexChunk(GetEntityId(), GetChunkIdx(), RecordsCount, RawBytes, bRange)); +void TPortionIndexChunk::DoAddIntoPortionBeforeBlob(const TBlobRangeLink16& bRange, TPortionInfo& portionInfo) const { + AFL_VERIFY(!bRange.IsValid()); + portionInfo.AddIndex(TIndexChunk(GetEntityId(), GetChunkIdxVerified(), RecordsCount, RawBytes, bRange)); } -std::shared_ptr<NKikimr::NOlap::IPortionDataChunk> TIndexByColumns::DoBuildIndex(const ui32 indexId, std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, const TIndexInfo& indexInfo) const { +std::shared_ptr<NKikimr::NOlap::IPortionDataChunk> TIndexByColumns::DoBuildIndex(const ui32 indexId, THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, const TIndexInfo& indexInfo) const { AFL_VERIFY(Serializer); AFL_VERIFY(data.size()); std::vector<TChunkedColumnReader> columnReaders; @@ -29,7 +32,7 @@ std::shared_ptr<NKikimr::NOlap::IPortionDataChunk> TIndexByColumns::DoBuildIndex TChunkedBatchReader reader(std::move(columnReaders)); std::shared_ptr<arrow::RecordBatch> indexBatch = DoBuildIndexImpl(reader); const TString indexData = Serializer->SerializeFull(indexBatch); - return std::make_shared<TPortionIndexChunk>(indexId, recordsCount, NArrow::GetBatchDataSize(indexBatch), indexData); + return std::make_shared<NChunks::TPortionIndexChunk>(TChunkAddress(indexId, 0), recordsCount, NArrow::GetBatchDataSize(indexBatch), indexData); } bool TIndexByColumns::DoDeserializeFromProto(const NKikimrSchemeOp::TOlapIndexDescription& /*proto*/) { @@ -60,4 +63,13 @@ NKikimr::TConclusionStatus TIndexByColumns::CheckSameColumnsForModification(cons return TConclusionStatus::Success(); } +bool IIndexMeta::DeserializeFromProto(const NKikimrSchemeOp::TOlapIndexDescription& proto) { + IndexId = proto.GetId(); + AFL_VERIFY(IndexId); + IndexName = proto.GetName(); + AFL_VERIFY(IndexName); + StorageId = proto.GetStorageId() ? proto.GetStorageId() : IStoragesManager::DefaultStorageId; + return DoDeserializeFromProto(proto); +} + } // namespace NKikimr::NOlap::NIndexes \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/meta.h b/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/meta.h index 9966d4ee31ef..1f414cdc0301 100644 --- a/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/meta.h +++ b/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/meta.h @@ -28,8 +28,9 @@ class IIndexMeta { private: YDB_READONLY_DEF(TString, IndexName); YDB_READONLY(ui32, IndexId, 0); + YDB_READONLY(TString, StorageId, IStoragesManager::DefaultStorageId); protected: - virtual std::shared_ptr<IPortionDataChunk> DoBuildIndex(const ui32 indexId, std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, const TIndexInfo& indexInfo) const = 0; + virtual std::shared_ptr<IPortionDataChunk> DoBuildIndex(const ui32 indexId, THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, const TIndexInfo& indexInfo) const = 0; virtual void DoFillIndexCheckers(const std::shared_ptr<NRequest::TDataForIndexesCheckers>& info, const NSchemeShard::TOlapSchema& schema) const = 0; virtual bool DoDeserializeFromProto(const NKikimrSchemeOp::TOlapIndexDescription& proto) = 0; virtual void DoSerializeToProto(NKikimrSchemeOp::TOlapIndexDescription& proto) const = 0; @@ -59,7 +60,7 @@ class IIndexMeta { virtual ~IIndexMeta() = default; - std::shared_ptr<IPortionDataChunk> BuildIndex(const ui32 indexId, std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, const TIndexInfo& indexInfo) const { + std::shared_ptr<IPortionDataChunk> BuildIndex(const ui32 indexId, THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, const TIndexInfo& indexInfo) const { return DoBuildIndex(indexId, data, indexInfo); } @@ -67,19 +68,16 @@ class IIndexMeta { return DoFillIndexCheckers(info, schema); } - bool DeserializeFromProto(const NKikimrSchemeOp::TOlapIndexDescription& proto) { - IndexId = proto.GetId(); - AFL_VERIFY(IndexId); - IndexName = proto.GetName(); - AFL_VERIFY(IndexName); - return DoDeserializeFromProto(proto); - } + bool DeserializeFromProto(const NKikimrSchemeOp::TOlapIndexDescription& proto); void SerializeToProto(NKikimrSchemeOp::TOlapIndexDescription& proto) const { AFL_VERIFY(IndexId); proto.SetId(IndexId); AFL_VERIFY(IndexName); proto.SetName(IndexName); + if (StorageId) { + proto.SetStorageId(StorageId); + } return DoSerializeToProto(proto); } @@ -126,10 +124,10 @@ class TPortionIndexChunk: public IPortionDataChunk { virtual std::shared_ptr<arrow::Scalar> DoGetLastScalar() const override { return nullptr; } - virtual void DoAddIntoPortion(const TBlobRange& bRange, TPortionInfo& portionInfo) const override; + virtual void DoAddIntoPortionBeforeBlob(const TBlobRangeLink16& bRange, TPortionInfo& portionInfo) const override; public: - TPortionIndexChunk(const ui32 entityId, const ui32 recordsCount, const ui64 rawBytes, const TString& data) - : TBase(entityId, 0) + TPortionIndexChunk(const TChunkAddress& address, const ui32 recordsCount, const ui64 rawBytes, const TString& data) + : TBase(address.GetColumnId(), address.GetChunkIdx()) , RecordsCount(recordsCount) , RawBytes(rawBytes) , Data(data) @@ -146,7 +144,7 @@ class TIndexByColumns: public IIndexMeta { std::set<ui32> ColumnIds; virtual std::shared_ptr<arrow::RecordBatch> DoBuildIndexImpl(TChunkedBatchReader& reader) const = 0; - virtual std::shared_ptr<IPortionDataChunk> DoBuildIndex(const ui32 indexId, std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, const TIndexInfo& indexInfo) const override final; + virtual std::shared_ptr<IPortionDataChunk> DoBuildIndex(const ui32 indexId, THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, const TIndexInfo& indexInfo) const override final; virtual bool DoDeserializeFromProto(const NKikimrSchemeOp::TOlapIndexDescription& /*proto*/) override; TConclusionStatus CheckSameColumnsForModification(const IIndexMeta& newMeta) const; diff --git a/ydb/core/tx/columnshard/engines/scheme/snapshot_scheme.cpp b/ydb/core/tx/columnshard/engines/scheme/snapshot_scheme.cpp index 19f9c39cc438..dd1148e52cf5 100644 --- a/ydb/core/tx/columnshard/engines/scheme/snapshot_scheme.cpp +++ b/ydb/core/tx/columnshard/engines/scheme/snapshot_scheme.cpp @@ -1,53 +1 @@ #include "snapshot_scheme.h" - -namespace NKikimr::NOlap { - -TSnapshotSchema::TSnapshotSchema(TIndexInfo&& indexInfo, const TSnapshot& snapshot) - : IndexInfo(std::move(indexInfo)) - , Schema(IndexInfo.ArrowSchemaWithSpecials()) - , Snapshot(snapshot) -{ -} - -TColumnSaver TSnapshotSchema::GetColumnSaver(const ui32 columnId, const TSaverContext& context) const { - return IndexInfo.GetColumnSaver(columnId, context); -} - -std::shared_ptr<TColumnLoader> TSnapshotSchema::GetColumnLoaderOptional(const ui32 columnId) const { - return IndexInfo.GetColumnLoaderOptional(columnId); -} - -std::optional<ui32> TSnapshotSchema::GetColumnIdOptional(const std::string& columnName) const { - return IndexInfo.GetColumnIdOptional(columnName); -} - -int TSnapshotSchema::GetFieldIndex(const ui32 columnId) const { - const TString& columnName = IndexInfo.GetColumnName(columnId, false); - if (!columnName) { - return -1; - } - std::string name(columnName.data(), columnName.size()); - return Schema->GetFieldIndex(name); -} - -const std::shared_ptr<arrow::Schema>& TSnapshotSchema::GetSchema() const { - return Schema; -} - -const TIndexInfo& TSnapshotSchema::GetIndexInfo() const { - return IndexInfo; -} - -const TSnapshot& TSnapshotSchema::GetSnapshot() const { - return Snapshot; -} - -ui32 TSnapshotSchema::GetColumnsCount() const { - return Schema->num_fields(); -} - -ui64 TSnapshotSchema::GetVersion() const { - return IndexInfo.GetVersion(); -} - -} diff --git a/ydb/core/tx/columnshard/engines/scheme/snapshot_scheme.h b/ydb/core/tx/columnshard/engines/scheme/snapshot_scheme.h index 1104e507729b..b94ede6cb16e 100644 --- a/ydb/core/tx/columnshard/engines/scheme/snapshot_scheme.h +++ b/ydb/core/tx/columnshard/engines/scheme/snapshot_scheme.h @@ -1,38 +1,2 @@ #pragma once - -#include "abstract_scheme.h" - -#include <ydb/core/tx/columnshard/engines/index_info.h> - -namespace NKikimr::NOlap { - -class TSnapshotSchema: public ISnapshotSchema { -private: - TIndexInfo IndexInfo; - std::shared_ptr<arrow::Schema> Schema; - TSnapshot Snapshot; -protected: - virtual TString DoDebugString() const override { - return TStringBuilder() << "(" - "schema=" << Schema->ToString() << ";" << - "snapshot=" << Snapshot.DebugString() << ";" << - "index_info=" << IndexInfo.DebugString() << ";" << - ")" - ; - } -public: - TSnapshotSchema(TIndexInfo&& indexInfo, const TSnapshot& snapshot); - - TColumnSaver GetColumnSaver(const ui32 columnId, const TSaverContext& context) const override; - std::shared_ptr<TColumnLoader> GetColumnLoaderOptional(const ui32 columnId) const override; - std::optional<ui32> GetColumnIdOptional(const std::string& columnName) const override; - int GetFieldIndex(const ui32 columnId) const override; - - const std::shared_ptr<arrow::Schema>& GetSchema() const override; - const TIndexInfo& GetIndexInfo() const override; - const TSnapshot& GetSnapshot() const override; - ui32 GetColumnsCount() const override; - ui64 GetVersion() const override; -}; - -} +#include "versions/snapshot_scheme.h" diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/common.cpp b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/common.cpp new file mode 100644 index 000000000000..e7960e66809e --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/common.cpp @@ -0,0 +1,40 @@ +#include "common.h" +#include <ydb/library/actors/core/log.h> + +namespace NKikimr::NOlap::NStatistics { + +TIdentifier::TIdentifier(const EType type, const std::vector<ui32>& entities) + : Type(type) + , EntityIds(entities) +{ + AFL_VERIFY(EntityIds.size()); +} + +bool TIdentifier::operator<(const TIdentifier& item) const { + if (Type != item.Type) { + return (ui32)Type < (ui32)item.Type; + } + for (ui32 i = 0; i < std::min(EntityIds.size(), item.EntityIds.size()); ++i) { + if (EntityIds[i] < item.EntityIds[i]) { + return true; + } + } + return false; +} + +bool TIdentifier::operator==(const TIdentifier& item) const { + if (Type != item.Type) { + return false; + } + if (EntityIds.size() != item.EntityIds.size()) { + return false; + } + for (ui32 i = 0; i < EntityIds.size(); ++i) { + if (EntityIds[i] != item.EntityIds[i]) { + return false; + } + } + return true; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/common.h b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/common.h new file mode 100644 index 000000000000..abfd7159a97b --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/common.h @@ -0,0 +1,24 @@ +#pragma once +#include <ydb/library/accessor/accessor.h> +#include <vector> +#include <set> + +namespace NKikimr::NOlap::NStatistics { +enum class EType { + Undefined /* "undefined" */, + Max /* "max" */, + Variability /* "variability" */ +}; + +class TIdentifier { +private: + YDB_READONLY(EType, Type, EType::Undefined); + YDB_READONLY_DEF(std::vector<ui32>, EntityIds); +public: + TIdentifier(const EType type, const std::vector<ui32>& entities); + + bool operator<(const TIdentifier& item) const; + bool operator==(const TIdentifier& item) const; +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.cpp b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.cpp new file mode 100644 index 000000000000..5713317c7d21 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.cpp @@ -0,0 +1,5 @@ +#include "constructor.h" + +namespace NKikimr::NOlap::NStatistics { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.h b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.h new file mode 100644 index 000000000000..8948e93d482c --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.h @@ -0,0 +1,73 @@ +#pragma once +#include "common.h" +#include "portion_storage.h" +#include "operator.h" + +#include <ydb/library/accessor/accessor.h> + +namespace NKikimr::NSchemeShard { +class TOlapSchema; +} + +namespace NKikimrColumnShardStatisticsProto { +class TOperatorContainer; +} + +namespace NKikimr::NOlap::NStatistics { + +class IConstructor { +private: + YDB_READONLY(EType, Type, EType::Undefined); + IConstructor() = default; +protected: + virtual TConclusion<std::shared_ptr<IOperator>> DoCreateOperator(const NSchemeShard::TOlapSchema& currentSchema) const = 0; + virtual bool DoDeserializeFromProto(const NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) = 0; + virtual void DoSerializeToProto(NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) const = 0; + virtual TConclusionStatus DoDeserializeFromJson(const NJson::TJsonValue& jsonData) = 0; +public: + using TProto = NKikimrColumnShardStatisticsProto::TConstructorContainer; + using TFactory = NObjectFactory::TObjectFactory<IConstructor, TString>; + + virtual ~IConstructor() = default; + + IConstructor(const EType type) + :Type(type) { + + } + + TConclusionStatus DeserializeFromJson(const NJson::TJsonValue& jsonData) { + return DoDeserializeFromJson(jsonData); + } + + TConclusion<TOperatorContainer> CreateOperator(const TString& name, const NSchemeShard::TOlapSchema& currentSchema) const { + auto result = DoCreateOperator(currentSchema); + if (!result) { + return result.GetError(); + } + return TOperatorContainer(name, result.DetachResult()); + } + + TString GetClassName() const { + return ::ToString(Type); + } + + bool DeserializeFromProto(const NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) { + if (!TryFromString(proto.GetClassName(), Type)) { + return false; + } + return DoDeserializeFromProto(proto); + } + + void SerializeToProto(NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) const { + return DoSerializeToProto(proto); + } +}; + +class TConstructorContainer: public NBackgroundTasks::TInterfaceProtoContainer<IConstructor> { +private: + using TBase = NBackgroundTasks::TInterfaceProtoContainer<IConstructor>; +public: + using TBase::TBase; +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/operator.cpp b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/operator.cpp new file mode 100644 index 000000000000..357d8bbd3934 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/operator.cpp @@ -0,0 +1,12 @@ +#include "operator.h" + +namespace NKikimr::NOlap::NStatistics { + +bool IOperator::DeserializeFromProto(const NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) { + if (!TryFromString(proto.GetClassName(), Type)) { + return false; + } + return DoDeserializeFromProto(proto); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/operator.h b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/operator.h new file mode 100644 index 000000000000..29f6f6744ac4 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/operator.h @@ -0,0 +1,124 @@ +#pragma once +#include "common.h" +#include "portion_storage.h" + +#include <ydb/core/tx/columnshard/engines/scheme/statistics/protos/data.pb.h> +#include <ydb/core/tx/columnshard/engines/scheme/abstract/index_info.h> + +#include <ydb/services/bg_tasks/abstract/interface.h> +#include <ydb/library/accessor/accessor.h> + +#include <library/cpp/object_factory/object_factory.h> + +namespace NKikimr::NOlap { +class IPortionDataChunk; +} + +namespace NKikimr::NOlap::NStatistics { + +class IOperator { +private: + YDB_READONLY(EType, Type, EType::Undefined); + IOperator() = default; +protected: + virtual void DoFillStatisticsData(const THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, TPortionStorage& portionStats, const IIndexInfo& index) const = 0; + virtual void DoShiftCursor(TPortionStorageCursor& cursor) const = 0; + virtual bool DoDeserializeFromProto(const NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) = 0; + virtual void DoSerializeToProto(NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) const = 0; + virtual void DoCopyData(const TPortionStorageCursor& cursor, const TPortionStorage& portionStatsFrom, TPortionStorage& portionStatsTo) const = 0; +public: + using TProto = NKikimrColumnShardStatisticsProto::TOperatorContainer; + using TFactory = NObjectFactory::TObjectFactory<IOperator, TString>; + + virtual ~IOperator() = default; + + virtual std::vector<ui32> GetEntityIds() const = 0; + + IOperator(const EType type) + :Type(type) { + + } + + void ShiftCursor(TPortionStorageCursor& cursor) const { + DoShiftCursor(cursor); + } + + void CopyData(const TPortionStorageCursor& cursor, const TPortionStorage& portionStatsFrom, TPortionStorage& portionStatsTo) const { + return DoCopyData(cursor, portionStatsFrom, portionStatsTo); + } + + void FillStatisticsData(const THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, TPortionStorage& portionStats, const IIndexInfo& index) const { + DoFillStatisticsData(data, portionStats, index); + } + + TString GetClassName() const { + return ::ToString(Type); + } + + TIdentifier GetIdentifier() const { + return TIdentifier(Type, GetEntityIds()); + } + + bool DeserializeFromProto(const NKikimrColumnShardStatisticsProto::TOperatorContainer& proto); + + void SerializeToProto(NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) const { + return DoSerializeToProto(proto); + } +}; + +class TOperatorContainer: public NBackgroundTasks::TInterfaceProtoContainer<IOperator> { +private: + YDB_READONLY_DEF(TString, Name); + std::optional<TPortionStorageCursor> Cursor; + using TBase = NBackgroundTasks::TInterfaceProtoContainer<IOperator>; +public: + TOperatorContainer() = default; + + TOperatorContainer(const TString& name, const std::shared_ptr<IOperator>& object) + : TBase(object) + , Name(name) + { + AFL_VERIFY(Name); + } + + const TPortionStorageCursor& GetCursorVerified() const { + AFL_VERIFY(Cursor); + return *Cursor; + } + + void SetCursor(const TPortionStorageCursor& cursor) { + AFL_VERIFY(!Cursor); + Cursor = cursor; + } + + std::shared_ptr<arrow::Scalar> GetScalarVerified(const TPortionStorage& storage) { + AFL_VERIFY(!!Cursor); + return storage.GetScalarVerified(*Cursor); + } + + NKikimrColumnShardStatisticsProto::TOperatorContainer SerializeToProto() const { + NKikimrColumnShardStatisticsProto::TOperatorContainer result = TBase::SerializeToProto(); + result.SetName(Name); + AFL_VERIFY(Name); + return result; + } + + void SerializeToProto(NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) const { + TBase::SerializeToProto(proto); + proto.SetName(Name); + AFL_VERIFY(Name); + } + + bool DeserializeFromProto(const NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) { + Name = proto.GetName(); + if (!Name) { + return false; + } + if (!TBase::DeserializeFromProto(proto)) { + return false; + } + return true; + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/portion_storage.cpp b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/portion_storage.cpp new file mode 100644 index 000000000000..f0d67ecf7d42 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/portion_storage.cpp @@ -0,0 +1,119 @@ +#include "portion_storage.h" +#include <ydb/library/actors/core/log.h> +#include <ydb/core/tx/columnshard/engines/scheme/statistics/protos/data.pb.h> + +namespace NKikimr::NOlap::NStatistics { + +NKikimrColumnShardStatisticsProto::TScalar TPortionStorage::ScalarToProto(const arrow::Scalar& scalar) { + NKikimrColumnShardStatisticsProto::TScalar result; + switch (scalar.type->id()) { + case arrow::Type::BOOL: + result.SetBool(static_cast<const arrow::BooleanScalar&>(scalar).value); + break; + case arrow::Type::UINT8: + result.SetUint8(static_cast<const arrow::UInt8Scalar&>(scalar).value); + break; + case arrow::Type::UINT16: + result.SetUint16(static_cast<const arrow::UInt16Scalar&>(scalar).value); + break; + case arrow::Type::UINT32: + result.SetUint32(static_cast<const arrow::UInt32Scalar&>(scalar).value); + break; + case arrow::Type::UINT64: + result.SetUint64(static_cast<const arrow::UInt64Scalar&>(scalar).value); + break; + case arrow::Type::INT8: + result.SetInt8(static_cast<const arrow::Int8Scalar&>(scalar).value); + break; + case arrow::Type::INT16: + result.SetInt16(static_cast<const arrow::Int16Scalar&>(scalar).value); + break; + case arrow::Type::INT32: + result.SetInt32(static_cast<const arrow::Int32Scalar&>(scalar).value); + break; + case arrow::Type::INT64: + result.SetInt64(static_cast<const arrow::Int64Scalar&>(scalar).value); + break; + case arrow::Type::DOUBLE: + result.SetDouble(static_cast<const arrow::DoubleScalar&>(scalar).value); + break; + case arrow::Type::FLOAT: + result.SetFloat(static_cast<const arrow::FloatScalar&>(scalar).value); + break; + case arrow::Type::TIMESTAMP: + { + auto* ts = result.MutableTimestamp(); + ts->SetValue(static_cast<const arrow::TimestampScalar&>(scalar).value); + ts->SetUnit(static_cast<const arrow::TimestampType&>(*scalar.type).unit()); + break; + } + default: + AFL_VERIFY(false)("problem", "incorrect type for statistics usage")("type", scalar.type->ToString()); + } + return result; +} + +std::shared_ptr<arrow::Scalar> TPortionStorage::ProtoToScalar(const NKikimrColumnShardStatisticsProto::TScalar& proto) { + if (proto.HasBool()) { + return std::make_shared<arrow::BooleanScalar>(proto.GetBool()); + } else if (proto.HasUint8()) { + return std::make_shared<arrow::UInt8Scalar>(proto.GetUint8()); + } else if (proto.HasUint16()) { + return std::make_shared<arrow::UInt16Scalar>(proto.GetUint16()); + } else if (proto.HasUint32()) { + return std::make_shared<arrow::UInt32Scalar>(proto.GetUint32()); + } else if (proto.HasUint64()) { + return std::make_shared<arrow::UInt64Scalar>(proto.GetUint64()); + } else if (proto.HasInt8()) { + return std::make_shared<arrow::Int8Scalar>(proto.GetInt8()); + } else if (proto.HasInt16()) { + return std::make_shared<arrow::Int16Scalar>(proto.GetInt16()); + } else if (proto.HasInt32()) { + return std::make_shared<arrow::Int32Scalar>(proto.GetInt32()); + } else if (proto.HasInt64()) { + return std::make_shared<arrow::Int64Scalar>(proto.GetInt64()); + } else if (proto.HasDouble()) { + return std::make_shared<arrow::DoubleScalar>(proto.GetDouble()); + } else if (proto.HasFloat()) { + return std::make_shared<arrow::FloatScalar>(proto.GetFloat()); + } else if (proto.HasTimestamp()) { + arrow::TimeUnit::type unit = arrow::TimeUnit::type(proto.GetTimestamp().GetUnit()); + return std::make_shared<arrow::TimestampScalar>(proto.GetTimestamp().GetValue(), std::make_shared<arrow::TimestampType>(unit)); + } + AFL_VERIFY(false)("problem", "incorrect statistics proto")("proto", proto.DebugString()); + return nullptr; +} + +std::shared_ptr<arrow::Scalar> TPortionStorage::GetScalarVerified(const TPortionStorageCursor& cursor) const { + AFL_VERIFY(cursor.GetScalarsPosition() < Data.size()); + AFL_VERIFY(Data[cursor.GetScalarsPosition()]); + return Data[cursor.GetScalarsPosition()]; +} + +void TPortionStorage::AddScalar(const std::shared_ptr<arrow::Scalar>& scalar) { + const auto type = scalar->type->id(); + AFL_VERIFY(type == arrow::Type::BOOL || + type == arrow::Type::UINT8 || type == arrow::Type::UINT16 || type == arrow::Type::UINT32 || type == arrow::Type::UINT64 || + type == arrow::Type::INT8 || type == arrow::Type::INT16 || type == arrow::Type::INT32 || type == arrow::Type::INT64 || + type == arrow::Type::DOUBLE || type == arrow::Type::TIMESTAMP || type == arrow::Type::FLOAT) + ("problem", "incorrect_stat_type")("incoming", scalar->type->ToString()); + Data.emplace_back(scalar); +} + +NKikimrColumnShardStatisticsProto::TPortionStorage TPortionStorage::SerializeToProto() const { + NKikimrColumnShardStatisticsProto::TPortionStorage result; + for (auto&& i : Data) { + AFL_VERIFY(i); + *result.AddScalars() = ScalarToProto(*i); + } + return result; +} + +NKikimr::TConclusionStatus TPortionStorage::DeserializeFromProto(const NKikimrColumnShardStatisticsProto::TPortionStorage& proto) { + for (auto&& i : proto.GetScalars()) { + Data.emplace_back(ProtoToScalar(i)); + } + return TConclusionStatus::Success(); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/portion_storage.h b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/portion_storage.h new file mode 100644 index 000000000000..a3e4b6bcb0dd --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/portion_storage.h @@ -0,0 +1,53 @@ +#pragma once + +#include <ydb/library/accessor/accessor.h> +#include <ydb/library/conclusion/status.h> +#include <ydb/library/conclusion/result.h> + +#include <contrib/libs/apache/arrow/cpp/src/arrow/scalar.h> + +namespace NKikimrColumnShardStatisticsProto { +class TScalar; +class TPortionStorage; +} + +namespace NKikimr::NOlap::NStatistics { +class TPortionStorageCursor { +private: + YDB_READONLY(ui32, ScalarsPosition, 0); +public: + TPortionStorageCursor() = default; + + void AddScalarsPosition(const ui32 shift) { + ScalarsPosition += shift; + } +}; + +class TPortionStorage { +private: + YDB_READONLY_DEF(std::vector<std::shared_ptr<arrow::Scalar>>, Data); + static NKikimrColumnShardStatisticsProto::TScalar ScalarToProto(const arrow::Scalar& value); + static std::shared_ptr<arrow::Scalar> ProtoToScalar(const NKikimrColumnShardStatisticsProto::TScalar& proto); + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardStatisticsProto::TPortionStorage& proto); + +public: + bool IsEmpty() const { + return Data.empty(); + } + + std::shared_ptr<arrow::Scalar> GetScalarVerified(const TPortionStorageCursor& cursor) const; + + void AddScalar(const std::shared_ptr<arrow::Scalar>& scalar); + + NKikimrColumnShardStatisticsProto::TPortionStorage SerializeToProto() const; + + static TConclusion<TPortionStorage> BuildFromProto(const NKikimrColumnShardStatisticsProto::TPortionStorage& proto) { + TPortionStorage result; + auto parse = result.DeserializeFromProto(proto); + if (!parse) { + return parse; + } + return result; + } +}; +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/ya.make b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/ya.make new file mode 100644 index 000000000000..f63520354edf --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/abstract/ya.make @@ -0,0 +1,20 @@ +LIBRARY() + +SRCS( + portion_storage.cpp + constructor.cpp + operator.cpp + common.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/statistics/protos + ydb/core/tx/columnshard/engines/scheme/abstract + contrib/libs/apache/arrow + ydb/library/actors/core + ydb/library/conclusion +) + +GENERATE_ENUM_SERIALIZATION(common.h) + +END() diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/max/constructor.cpp b/ydb/core/tx/columnshard/engines/scheme/statistics/max/constructor.cpp new file mode 100644 index 000000000000..a12a27812350 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/max/constructor.cpp @@ -0,0 +1,45 @@ +#include "constructor.h" +#include "operator.h" + +namespace NKikimr::NOlap::NStatistics::NMax { + +NKikimr::TConclusion<std::shared_ptr<IOperator>> TConstructor::DoCreateOperator(const NSchemeShard::TOlapSchema& currentSchema) const { + auto column = currentSchema.GetColumns().GetByName(ColumnName); + if (!TOperator::IsAvailableType(column->GetType())) { + return TConclusionStatus::Fail("incorrect type for stat calculation"); + } + return std::make_shared<TOperator>(column->GetId()); +} + +bool TConstructor::DoDeserializeFromProto(const NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) { + if (!proto.HasMax()) { + return false; + } + ColumnName = proto.GetMax().GetColumnName(); + if (!ColumnName) { + return false; + } + return true; +} + +void TConstructor::DoSerializeToProto(NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) const { + AFL_VERIFY(!!ColumnName); + proto.MutableMax()->SetColumnName(ColumnName); +} + +NKikimr::TConclusionStatus TConstructor::DoDeserializeFromJson(const NJson::TJsonValue& jsonData) { + if (!jsonData.Has("column_name")) { + return TConclusionStatus::Fail("no column_name field in json description"); + } + TString columnNameLocal; + if (!jsonData["column_name"].GetString(&columnNameLocal)) { + return TConclusionStatus::Fail("incorrect column_name field in json description (no string)"); + } + if (!columnNameLocal) { + return TConclusionStatus::Fail("empty column_name field in json description"); + } + ColumnName = columnNameLocal; + return TConclusionStatus::Success(); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/max/constructor.h b/ydb/core/tx/columnshard/engines/scheme/statistics/max/constructor.h new file mode 100644 index 000000000000..695096a63d2f --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/max/constructor.h @@ -0,0 +1,33 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.h> +#include <ydb/core/tx/schemeshard/olap/schema/schema.h> + +#include <library/cpp/json/writer/json_value.h> + +namespace NKikimr::NOlap::NStatistics::NMax { + +class TConstructor: public IConstructor { +private: + using TBase = IConstructor; + static inline const auto Registrator = TFactory::TRegistrator<TConstructor>(::ToString(EType::Max)); + YDB_READONLY(TString, ColumnName, 0); +protected: + virtual TConclusion<std::shared_ptr<IOperator>> DoCreateOperator(const NSchemeShard::TOlapSchema& currentSchema) const override; + virtual bool DoDeserializeFromProto(const NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) override; + virtual void DoSerializeToProto(NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) const override; + virtual TConclusionStatus DoDeserializeFromJson(const NJson::TJsonValue& jsonData) override; +public: + TConstructor(const TString& columnName) + : TBase(EType::Max) + , ColumnName(columnName) + { + + } + + TConstructor() + :TBase(EType::Max) { + + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/max/operator.cpp b/ydb/core/tx/columnshard/engines/scheme/statistics/max/operator.cpp new file mode 100644 index 000000000000..8e2c179e077b --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/max/operator.cpp @@ -0,0 +1,41 @@ +#include "operator.h" +#include <ydb/core/formats/arrow/arrow_helpers.h> +#include <ydb/core/tx/columnshard/engines/scheme/abstract/index_info.h> +#include <ydb/core/tx/columnshard/splitter/abstract/chunks.h> + +namespace NKikimr::NOlap::NStatistics::NMax { + +void TOperator::DoFillStatisticsData(const THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, TPortionStorage& portionStats, const IIndexInfo& index) const { + auto loader = index.GetColumnLoaderVerified(EntityId); + auto it = data.find(EntityId); + AFL_VERIFY(it != data.end()); + std::shared_ptr<arrow::Scalar> result; + for (auto&& i : it->second) { + auto rb = NArrow::TStatusValidator::GetValid(loader->Apply(i->GetData())); + AFL_VERIFY(rb->num_columns() == 1); + auto res = NArrow::FindMinMaxPosition(rb->column(0)); + auto currentScalarMax = NArrow::TStatusValidator::GetValid(rb->column(0)->GetScalar(res.second)); + if (!result || NArrow::ScalarCompare(result, currentScalarMax) < 0) { + result = currentScalarMax; + } + } + portionStats.AddScalar(result); +} + +bool TOperator::DoDeserializeFromProto(const NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) { + if (!proto.HasMax()) { + return false; + } + EntityId = proto.GetMax().GetEntityId(); + if (!EntityId) { + return false; + } + return true; +} + +void TOperator::DoSerializeToProto(NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) const { + AFL_VERIFY(EntityId); + proto.MutableMax()->SetEntityId(EntityId); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/max/operator.h b/ydb/core/tx/columnshard/engines/scheme/statistics/max/operator.h new file mode 100644 index 000000000000..50e0a76599eb --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/max/operator.h @@ -0,0 +1,64 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/scheme/statistics/abstract/operator.h> +#include <ydb/core/scheme_types/scheme_type_info.h> + +namespace NKikimr::NOlap::NStatistics::NMax { + +class TOperator: public IOperator { +private: + using TBase = IOperator; + ui32 EntityId = 0; + static inline auto Registrator = TFactory::TRegistrator<TOperator>(::ToString(EType::Max)); +protected: + virtual void DoCopyData(const TPortionStorageCursor& cursor, const TPortionStorage& portionStatsFrom, TPortionStorage& portionStatsTo) const override { + std::shared_ptr<arrow::Scalar> scalar = portionStatsFrom.GetScalarVerified(cursor); + portionStatsTo.AddScalar(scalar); + } + + virtual void DoFillStatisticsData(const THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, TPortionStorage& portionStats, const IIndexInfo& index) const override; + virtual void DoShiftCursor(TPortionStorageCursor& cursor) const override { + cursor.AddScalarsPosition(1); + } + virtual std::vector<ui32> GetEntityIds() const override { + return {EntityId}; + } + virtual bool DoDeserializeFromProto(const NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) override; + virtual void DoSerializeToProto(NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) const override; +public: + + static bool IsAvailableType(const NScheme::TTypeInfo type) { + switch (type.GetTypeId()) { + case NScheme::NTypeIds::Int8: + case NScheme::NTypeIds::Uint8: + case NScheme::NTypeIds::Int16: + case NScheme::NTypeIds::Uint16: + case NScheme::NTypeIds::Int32: + case NScheme::NTypeIds::Uint32: + case NScheme::NTypeIds::Int64: + case NScheme::NTypeIds::Uint64: + case NScheme::NTypeIds::Timestamp: + case NScheme::NTypeIds::Double: + case NScheme::NTypeIds::Float: + case NScheme::NTypeIds::Datetime: + case NScheme::NTypeIds::Date: + return true; + default: + break; + } + return false; + } + + TOperator() + : TBase(EType::Max) + { + + } + + TOperator(const ui32 entityId) + : TBase(EType::Max) + , EntityId(entityId) { + + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/max/ya.make b/ydb/core/tx/columnshard/engines/scheme/statistics/max/ya.make new file mode 100644 index 000000000000..631c95eeb3d8 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/max/ya.make @@ -0,0 +1,15 @@ +LIBRARY() + +SRCS( + GLOBAL constructor.cpp + GLOBAL operator.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/statistics/abstract + ydb/core/tx/columnshard/engines/scheme/abstract + ydb/core/tx/columnshard/splitter/abstract + ydb/core/formats/arrow +) + +END() diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/protos/data.proto b/ydb/core/tx/columnshard/engines/scheme/statistics/protos/data.proto new file mode 100644 index 000000000000..c99f485d399d --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/protos/data.proto @@ -0,0 +1,66 @@ +package NKikimrColumnShardStatisticsProto; + +message TScalar { + message TTimestamp { + optional uint64 Value = 1; + optional uint32 Unit = 2; + } + oneof Value { + bool Bool = 1; + uint32 Uint8 = 2; + uint32 Uint16 = 3; + uint32 Uint32 = 4; + uint64 Uint64 = 5; + + int32 Int8 = 6; + int32 Int16 = 7; + int32 Int32 = 8; + int64 Int64 = 9; + + double Double = 10; + + TTimestamp Timestamp = 11; + + float Float = 12; + } +} + +message TPortionStorage { + repeated TScalar Scalars = 1; +} + +message TMaxConstructor { + optional string ColumnName = 3; +} + +message TVariabilityConstructor { + optional string ColumnName = 3; +} + +message TConstructorContainer { + optional string Name = 1; + + optional string ClassName = 40; + oneof Implementation { + TMaxConstructor Max = 41; + TVariabilityConstructor Variability = 42; + } +} + +message TMaxOperator { + optional uint32 EntityId = 1; +} + +message TVariabilityOperator { + optional uint32 EntityId = 1; +} + +message TOperatorContainer { + optional string Name = 1; + + optional string ClassName = 40; + oneof Implementation { + TMaxOperator Max = 41; + TVariabilityOperator Variability = 42; + } +} diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/protos/ya.make b/ydb/core/tx/columnshard/engines/scheme/statistics/protos/ya.make new file mode 100644 index 000000000000..f72b3b7cf620 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/protos/ya.make @@ -0,0 +1,11 @@ +PROTO_LIBRARY() + +SRCS( + data.proto +) + +PEERDIR( + +) + +END() diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/variability/constructor.cpp b/ydb/core/tx/columnshard/engines/scheme/statistics/variability/constructor.cpp new file mode 100644 index 000000000000..25840673fcb5 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/variability/constructor.cpp @@ -0,0 +1,45 @@ +#include "constructor.h" +#include "operator.h" + +namespace NKikimr::NOlap::NStatistics::NVariability { + +NKikimr::TConclusion<std::shared_ptr<IOperator>> TConstructor::DoCreateOperator(const NSchemeShard::TOlapSchema& currentSchema) const { + auto column = currentSchema.GetColumns().GetByName(ColumnName); + if (!TOperator::IsAvailableType(column->GetType())) { + return TConclusionStatus::Fail("incorrect type for stat calculation"); + } + return std::make_shared<TOperator>(column->GetId()); +} + +bool TConstructor::DoDeserializeFromProto(const NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) { + if (!proto.HasVariability()) { + return false; + } + ColumnName = proto.GetVariability().GetColumnName(); + if (!ColumnName) { + return false; + } + return true; +} + +void TConstructor::DoSerializeToProto(NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) const { + AFL_VERIFY(!!ColumnName); + proto.MutableVariability()->SetColumnName(ColumnName); +} + +NKikimr::TConclusionStatus TConstructor::DoDeserializeFromJson(const NJson::TJsonValue& jsonData) { + if (!jsonData.Has("column_name")) { + return TConclusionStatus::Fail("no column_name field in json description"); + } + TString columnNameLocal; + if (!jsonData["column_name"].GetString(&columnNameLocal)) { + return TConclusionStatus::Fail("incorrect column_name field in json description (no string)"); + } + if (!columnNameLocal) { + return TConclusionStatus::Fail("empty column_name field in json description"); + } + ColumnName = columnNameLocal; + return TConclusionStatus::Success(); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/variability/constructor.h b/ydb/core/tx/columnshard/engines/scheme/statistics/variability/constructor.h new file mode 100644 index 000000000000..809c9043faac --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/variability/constructor.h @@ -0,0 +1,33 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.h> +#include <ydb/core/tx/schemeshard/olap/schema/schema.h> + +#include <library/cpp/json/writer/json_value.h> + +namespace NKikimr::NOlap::NStatistics::NVariability { + +class TConstructor: public IConstructor { +private: + using TBase = IConstructor; + static inline const auto Registrator = TFactory::TRegistrator<TConstructor>(::ToString(EType::Variability)); + YDB_READONLY(TString, ColumnName, 0); +protected: + virtual TConclusion<std::shared_ptr<IOperator>> DoCreateOperator(const NSchemeShard::TOlapSchema& currentSchema) const override; + virtual bool DoDeserializeFromProto(const NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) override; + virtual void DoSerializeToProto(NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) const override; + virtual TConclusionStatus DoDeserializeFromJson(const NJson::TJsonValue& jsonData) override; +public: + TConstructor(const TString& columnName) + : TBase(EType::Max) + , ColumnName(columnName) + { + + } + + TConstructor() + :TBase(EType::Variability) { + + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/variability/operator.cpp b/ydb/core/tx/columnshard/engines/scheme/statistics/variability/operator.cpp new file mode 100644 index 000000000000..d43d617171bb --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/variability/operator.cpp @@ -0,0 +1,164 @@ +#include "operator.h" +#include <ydb/core/formats/arrow/arrow_helpers.h> +#include <ydb/core/tx/columnshard/engines/scheme/abstract/index_info.h> +#include <ydb/core/tx/columnshard/splitter/abstract/chunks.h> + +namespace NKikimr::NOlap::NStatistics::NVariability { + +class IValuesContainer { +protected: + std::optional<arrow::Type::type> DataType; + ui32 DifferentCount = 0; + + virtual void DoAddArray(const std::shared_ptr<arrow::Array>& array) = 0; +public: + virtual ~IValuesContainer() = default; + ui32 GetDifferentCount() const { + return DifferentCount; + } + + void AddArray(const std::shared_ptr<arrow::Array>& array) { + if (!DataType) { + DataType = array->type_id(); + } else { + AFL_VERIFY(DataType == array->type_id())("base", (ui32)*DataType)("to", (ui32)array->type_id()); + } + return DoAddArray(array); + } +}; + +template <class TArrowElement> +class TCTypeValuesContainer: public IValuesContainer { +private: + using TWrap = TArrowElement; + using TArray = typename arrow::TypeTraits<typename TWrap::T>::ArrayType; + using TCType = typename TWrap::T::c_type; + using TCContainer = THashSet<TCType>; + + TCContainer ElementsStorage; +protected: + virtual void DoAddArray(const std::shared_ptr<arrow::Array>& array) override { + NArrow::SwitchType(array->type_id(), [&](const auto& type) { + using TWrap = std::decay_t<decltype(type)>; + if constexpr (std::is_same_v<TWrap, TArrowElement>) { + const TArray& arrTyped = static_cast<const TArray&>(*array); + for (ui32 i = 0; i < array->length(); ++i) { + if constexpr (arrow::has_c_type<typename TWrap::T>()) { + if (ElementsStorage.emplace(arrTyped.Value(i)).second) { + ++DifferentCount; + } + continue; + } + AFL_VERIFY(false); + } + return true; + } + AFL_VERIFY(false); + return false; + }); + } +}; + +template <class TArrowElement> +class TStringValuesContainer: public IValuesContainer { +private: + using TWrap = TArrowElement; + using TArray = typename arrow::TypeTraits<typename TWrap::T>::ArrayType; + using TCType = TString; + using TCContainer = THashSet<TCType>; + + TCContainer ElementsStorage; +protected: + virtual void DoAddArray(const std::shared_ptr<arrow::Array>& array) override { + NArrow::SwitchType(array->type_id(), [&](const auto& type) { + using TWrap = std::decay_t<decltype(type)>; + if constexpr (std::is_same_v<TWrap, TArrowElement>) { + const TArray& arrTyped = static_cast<const TArray&>(*array); + for (ui32 i = 0; i < array->length(); ++i) { + if constexpr (arrow::has_string_view<typename TWrap::T>()) { + auto value = arrTyped.GetView(i); + if (ElementsStorage.emplace(value.data(), value.size()).second) { + ++DifferentCount; + } + continue; + } + AFL_VERIFY(false); + } + return true; + } + AFL_VERIFY(false); + return false; + }); + } +}; + +class TDifferentElementsAggregator { +private: + std::shared_ptr<IValuesContainer> Container; +public: + TDifferentElementsAggregator() = default; + + bool HasData() const { + return !!Container; + } + + ui32 GetDifferentCount() const { + return Container ? Container->GetDifferentCount() : 0; + } + + void AddArray(const std::shared_ptr<arrow::Array>& array) { + if (!Container) { + NArrow::SwitchType(array->type_id(), [&](const auto& type) { + using TWrap = std::decay_t<decltype(type)>; + if (!Container) { + if constexpr (arrow::has_c_type<typename TWrap::T>()) { + Container = std::make_shared<TCTypeValuesContainer<TWrap>>(); + Container->AddArray(array); + return true; + } + if constexpr (arrow::has_string_view<typename TWrap::T>()) { + Container = std::make_shared<TStringValuesContainer<TWrap>>(); + Container->AddArray(array); + return true; + } + AFL_VERIFY(false); + } + return false; + }); + } + Container->AddArray(array); + } +}; + +void TOperator::DoFillStatisticsData(const THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, TPortionStorage& portionStats, const IIndexInfo& index) const { + auto it = data.find(EntityId); + AFL_VERIFY(it != data.end()); + auto loader = index.GetColumnLoaderVerified(EntityId); + std::shared_ptr<arrow::Scalar> result; + TDifferentElementsAggregator aggregator; + for (auto&& i : it->second) { + auto rb = NArrow::TStatusValidator::GetValid(loader->Apply(i->GetData())); + AFL_VERIFY(rb->num_columns() == 1); + aggregator.AddArray(rb->column(0)); + } + AFL_VERIFY(aggregator.HasData()); + portionStats.AddScalar(std::make_shared<arrow::UInt32Scalar>(aggregator.GetDifferentCount())); +} + +bool TOperator::DoDeserializeFromProto(const NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) { + if (!proto.HasVariability()) { + return false; + } + EntityId = proto.GetVariability().GetEntityId(); + if (!EntityId) { + return false; + } + return true; +} + +void TOperator::DoSerializeToProto(NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) const { + AFL_VERIFY(EntityId); + proto.MutableVariability()->SetEntityId(EntityId); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/variability/operator.h b/ydb/core/tx/columnshard/engines/scheme/statistics/variability/operator.h new file mode 100644 index 000000000000..ac0fdd110030 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/variability/operator.h @@ -0,0 +1,67 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/scheme/statistics/abstract/operator.h> +#include <ydb/core/scheme_types/scheme_type_info.h> + +namespace NKikimr::NOlap::NStatistics::NVariability { + +class TOperator: public IOperator { +private: + using TBase = IOperator; + ui32 EntityId = 0; + static inline auto Registrator = TFactory::TRegistrator<TOperator>(::ToString(EType::Variability)); +protected: + virtual void DoCopyData(const TPortionStorageCursor& cursor, const TPortionStorage& portionStatsFrom, TPortionStorage& portionStatsTo) const override { + std::shared_ptr<arrow::Scalar> scalar = portionStatsFrom.GetScalarVerified(cursor); + portionStatsTo.AddScalar(scalar); + } + + virtual void DoFillStatisticsData(const THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, TPortionStorage& portionStats, const IIndexInfo& index) const override; + virtual void DoShiftCursor(TPortionStorageCursor& cursor) const override { + cursor.AddScalarsPosition(1); + } + virtual std::vector<ui32> GetEntityIds() const override { + return {EntityId}; + } + virtual bool DoDeserializeFromProto(const NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) override; + virtual void DoSerializeToProto(NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) const override; +public: + + static bool IsAvailableType(const NScheme::TTypeInfo type) { + switch (type.GetTypeId()) { + case NScheme::NTypeIds::Int8: + case NScheme::NTypeIds::Uint8: + case NScheme::NTypeIds::Int16: + case NScheme::NTypeIds::Uint16: + case NScheme::NTypeIds::Int32: + case NScheme::NTypeIds::Uint32: + case NScheme::NTypeIds::Int64: + case NScheme::NTypeIds::Uint64: + case NScheme::NTypeIds::String: + case NScheme::NTypeIds::Utf8: + case NScheme::NTypeIds::Uuid: + case NScheme::NTypeIds::Timestamp: + case NScheme::NTypeIds::Double: + case NScheme::NTypeIds::Float: + case NScheme::NTypeIds::Datetime: + case NScheme::NTypeIds::Date: + return true; + default: + break; + } + return false; + } + + TOperator() + : TBase(EType::Variability) + { + + } + + TOperator(const ui32 entityId) + : TBase(EType::Variability) + , EntityId(entityId) { + + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/variability/ya.make b/ydb/core/tx/columnshard/engines/scheme/statistics/variability/ya.make new file mode 100644 index 000000000000..631c95eeb3d8 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/variability/ya.make @@ -0,0 +1,15 @@ +LIBRARY() + +SRCS( + GLOBAL constructor.cpp + GLOBAL operator.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/statistics/abstract + ydb/core/tx/columnshard/engines/scheme/abstract + ydb/core/tx/columnshard/splitter/abstract + ydb/core/formats/arrow +) + +END() diff --git a/ydb/core/tx/columnshard/engines/scheme/statistics/ya.make b/ydb/core/tx/columnshard/engines/scheme/statistics/ya.make new file mode 100644 index 000000000000..3baed9c3538a --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/statistics/ya.make @@ -0,0 +1,10 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/statistics/abstract + ydb/core/tx/columnshard/engines/scheme/statistics/max + ydb/core/tx/columnshard/engines/scheme/statistics/variability + ydb/core/tx/columnshard/engines/scheme/statistics/protos +) + +END() diff --git a/ydb/core/tx/columnshard/engines/scheme/tier_info.cpp b/ydb/core/tx/columnshard/engines/scheme/tier_info.cpp index 1672d7a97ac7..d49c21ed0647 100644 --- a/ydb/core/tx/columnshard/engines/scheme/tier_info.cpp +++ b/ydb/core/tx/columnshard/engines/scheme/tier_info.cpp @@ -1,21 +1 @@ #include "tier_info.h" - -namespace NKikimr::NOlap { - -std::optional<TInstant> TTierInfo::ScalarToInstant(const std::shared_ptr<arrow::Scalar>& scalar) const { - const ui64 unitsInSeconds = TtlUnitsInSecond ? TtlUnitsInSecond : 1; - switch (scalar->type->id()) { - case arrow::Type::TIMESTAMP: - return TInstant::MicroSeconds(std::static_pointer_cast<arrow::TimestampScalar>(scalar)->value); - case arrow::Type::UINT16: // YQL Date - return TInstant::Days(std::static_pointer_cast<arrow::UInt16Scalar>(scalar)->value); - case arrow::Type::UINT32: // YQL Datetime or Uint32 - return TInstant::MicroSeconds(std::static_pointer_cast<arrow::UInt32Scalar>(scalar)->value / (1.0 * unitsInSeconds / 1000000)); - case arrow::Type::UINT64: - return TInstant::MicroSeconds(std::static_pointer_cast<arrow::UInt64Scalar>(scalar)->value / (1.0 * unitsInSeconds / 1000000)); - default: - return {}; - } -} - -} diff --git a/ydb/core/tx/columnshard/engines/scheme/tier_info.h b/ydb/core/tx/columnshard/engines/scheme/tier_info.h index 395752201f8d..38c92a8aca16 100644 --- a/ydb/core/tx/columnshard/engines/scheme/tier_info.h +++ b/ydb/core/tx/columnshard/engines/scheme/tier_info.h @@ -1,167 +1,2 @@ #pragma once - -#include <ydb/core/formats/arrow/arrow_helpers.h> -#include <ydb/core/formats/arrow/common/validation.h> -#include <ydb/core/formats/arrow/serializer/abstract.h> -#include <ydb/core/tx/columnshard/common/scalars.h> -#include <contrib/libs/apache/arrow/cpp/src/arrow/util/compression.h> -#include <util/generic/set.h> -#include <util/generic/hash_set.h> - -namespace NKikimr::NOlap { - -class TTierInfo { -private: - YDB_READONLY_DEF(TString, Name); - YDB_READONLY_DEF(TString, EvictColumnName); - YDB_READONLY_DEF(TDuration, EvictDuration); - - ui32 TtlUnitsInSecond; - YDB_READONLY_DEF(std::optional<NArrow::NSerialization::TSerializerContainer>, Serializer); -public: - TTierInfo(const TString& tierName, TDuration evictDuration, const TString& column, ui32 unitsInSecond = 0) - : Name(tierName) - , EvictColumnName(column) - , EvictDuration(evictDuration) - , TtlUnitsInSecond(unitsInSecond) - { - Y_ABORT_UNLESS(!!Name); - Y_ABORT_UNLESS(!!EvictColumnName); - } - - TInstant GetEvictInstant(const TInstant now) const { - return now - EvictDuration; - } - - TTierInfo& SetSerializer(const NArrow::NSerialization::TSerializerContainer& value) { - Serializer = value; - return *this; - } - - std::shared_ptr<arrow::Field> GetEvictColumn(const std::shared_ptr<arrow::Schema>& schema) const { - return schema->GetFieldByName(EvictColumnName); - } - - std::optional<TInstant> ScalarToInstant(const std::shared_ptr<arrow::Scalar>& scalar) const; - - static std::shared_ptr<TTierInfo> MakeTtl(const TDuration evictDuration, const TString& ttlColumn, ui32 unitsInSecond = 0) { - return std::make_shared<TTierInfo>("TTL", evictDuration, ttlColumn, unitsInSecond); - } - - TString GetDebugString() const { - TStringBuilder sb; - sb << "name=" << Name << ";duration=" << EvictDuration << ";column=" << EvictColumnName << ";serializer="; - if (Serializer) { - sb << Serializer->DebugString(); - } else { - sb << "NOT_SPECIFIED(Default)"; - } - sb << ";"; - return sb; - } -}; - -class TTierRef { -public: - TTierRef(const std::shared_ptr<TTierInfo>& tierInfo) - : Info(tierInfo) - { - Y_ABORT_UNLESS(tierInfo); - } - - bool operator < (const TTierRef& b) const { - if (Info->GetEvictDuration() > b.Info->GetEvictDuration()) { - return true; - } else if (Info->GetEvictDuration() == b.Info->GetEvictDuration()) { - return Info->GetName() > b.Info->GetName(); // add stability: smaller name is hotter - } - return false; - } - - bool operator == (const TTierRef& b) const { - return Info->GetEvictDuration() == b.Info->GetEvictDuration() - && Info->GetName() == b.Info->GetName(); - } - - const TTierInfo& Get() const { - return *Info; - } - - std::shared_ptr<TTierInfo> GetPtr() const { - return Info; - } - -private: - std::shared_ptr<TTierInfo> Info; -}; - -class TTiering { - using TTiersMap = THashMap<TString, std::shared_ptr<TTierInfo>>; - TTiersMap TierByName; - TSet<TTierRef> OrderedTiers; -public: - - std::shared_ptr<TTierInfo> Ttl; - - const TTiersMap& GetTierByName() const { - return TierByName; - } - - const TSet<TTierRef>& GetOrderedTiers() const { - return OrderedTiers; - } - - bool HasTiers() const { - return !OrderedTiers.empty(); - } - - void Add(const std::shared_ptr<TTierInfo>& tier) { - if (HasTiers()) { - // TODO: support different ttl columns - Y_ABORT_UNLESS(tier->GetEvictColumnName() == OrderedTiers.begin()->Get().GetEvictColumnName()); - } - - TierByName.emplace(tier->GetName(), tier); - OrderedTiers.emplace(tier); - } - - TString GetHottestTierName() const { - if (OrderedTiers.size()) { - return OrderedTiers.rbegin()->Get().GetName(); // hottest one - } - return {}; - } - - std::optional<NArrow::NSerialization::TSerializerContainer> GetSerializer(const TString& name) const { - auto it = TierByName.find(name); - if (it != TierByName.end()) { - Y_ABORT_UNLESS(!name.empty()); - return it->second->GetSerializer(); - } - return {}; - } - - THashSet<TString> GetTtlColumns() const { - THashSet<TString> out; - if (Ttl) { - out.insert(Ttl->GetEvictColumnName()); - } - for (auto& [tierName, tier] : TierByName) { - out.insert(tier->GetEvictColumnName()); - } - return out; - } - - TString GetDebugString() const { - TStringBuilder sb; - if (Ttl) { - sb << Ttl->GetDebugString() << "; "; - } - for (auto&& i : OrderedTiers) { - sb << i.Get().GetDebugString() << "; "; - } - return sb; - } -}; - -} +#include "tiering/tier_info.h" \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/scheme/tiering/common.cpp b/ydb/core/tx/columnshard/engines/scheme/tiering/common.cpp new file mode 100644 index 000000000000..e60d56d39c91 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/tiering/common.cpp @@ -0,0 +1,5 @@ +#include "common.h" + +namespace NKikimr::NOlap::NTiering::NCommon { + +} diff --git a/ydb/core/tx/columnshard/engines/scheme/tiering/common.h b/ydb/core/tx/columnshard/engines/scheme/tiering/common.h new file mode 100644 index 000000000000..ab6ed9a05a7e --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/tiering/common.h @@ -0,0 +1,9 @@ +#pragma once + +#include <util/generic/string.h> + +namespace NKikimr::NOlap::NTiering::NCommon { + +static inline const TString DeleteTierName = "$$DELETE"; + +} diff --git a/ydb/core/tx/columnshard/engines/scheme/tiering/tier_info.cpp b/ydb/core/tx/columnshard/engines/scheme/tiering/tier_info.cpp new file mode 100644 index 000000000000..659062338bb0 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/tiering/tier_info.cpp @@ -0,0 +1,42 @@ +#include "tier_info.h" +#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> + +namespace NKikimr::NOlap { + +std::optional<TInstant> TTierInfo::ScalarToInstant(const std::shared_ptr<arrow::Scalar>& scalar) const { + const ui64 unitsInSeconds = TtlUnitsInSecond ? TtlUnitsInSecond : 1; + switch (scalar->type->id()) { + case arrow::Type::TIMESTAMP: + return TInstant::MicroSeconds(std::static_pointer_cast<arrow::TimestampScalar>(scalar)->value); + case arrow::Type::UINT16: // YQL Date + return TInstant::Days(std::static_pointer_cast<arrow::UInt16Scalar>(scalar)->value); + case arrow::Type::UINT32: // YQL Datetime or Uint32 + return TInstant::MicroSeconds(std::static_pointer_cast<arrow::UInt32Scalar>(scalar)->value / (1.0 * unitsInSeconds / 1000000)); + case arrow::Type::UINT64: + return TInstant::MicroSeconds(std::static_pointer_cast<arrow::UInt64Scalar>(scalar)->value / (1.0 * unitsInSeconds / 1000000)); + default: + return {}; + } +} + +TTiering::TTieringContext TTiering::GetTierToMove(const std::shared_ptr<arrow::Scalar>& max, const TInstant now) const { + AFL_VERIFY(OrderedTiers.size()); + std::optional<TString> nextTierName; + std::optional<TDuration> nextTierDuration; + for (auto& tierRef : GetOrderedTiers()) { + auto& tierInfo = tierRef.Get(); + auto mpiOpt = tierInfo.ScalarToInstant(max); + Y_ABORT_UNLESS(mpiOpt); + const TInstant maxTieringPortionInstant = *mpiOpt; + const TDuration dWaitLocal = maxTieringPortionInstant - tierInfo.GetEvictInstant(now); + if (!dWaitLocal) { + return TTieringContext(tierInfo.GetName(), tierInfo.GetEvictInstant(now) - maxTieringPortionInstant, nextTierName, nextTierDuration); + } else { + nextTierName = tierInfo.GetName(); + nextTierDuration = dWaitLocal; + } + } + return TTieringContext(IStoragesManager::DefaultStorageId, TDuration::Zero(), nextTierName, nextTierDuration); +} + +} diff --git a/ydb/core/tx/columnshard/engines/scheme/tiering/tier_info.h b/ydb/core/tx/columnshard/engines/scheme/tiering/tier_info.h new file mode 100644 index 000000000000..c65cb1703ad0 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/tiering/tier_info.h @@ -0,0 +1,215 @@ +#pragma once +#include "common.h" + +#include <ydb/core/formats/arrow/arrow_helpers.h> +#include <ydb/core/formats/arrow/common/validation.h> +#include <ydb/core/formats/arrow/serializer/abstract.h> +#include <ydb/core/tx/columnshard/common/scalars.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/util/compression.h> +#include <util/generic/set.h> +#include <util/generic/hash_set.h> + +namespace NKikimr::NOlap { + +class TTierInfo { +private: + YDB_READONLY_DEF(TString, Name); + YDB_READONLY_DEF(TString, EvictColumnName); + YDB_READONLY_DEF(TDuration, EvictDuration); + + ui32 TtlUnitsInSecond; + YDB_READONLY_DEF(std::optional<NArrow::NSerialization::TSerializerContainer>, Serializer); +public: + static TString GetTtlTierName() { + return NTiering::NCommon::DeleteTierName; + } + + TTierInfo(const TString& tierName, TDuration evictDuration, const TString& column, ui32 unitsInSecond = 0) + : Name(tierName) + , EvictColumnName(column) + , EvictDuration(evictDuration) + , TtlUnitsInSecond(unitsInSecond) + { + Y_ABORT_UNLESS(!!Name); + Y_ABORT_UNLESS(!!EvictColumnName); + } + + TInstant GetEvictInstant(const TInstant now) const { + return now - EvictDuration; + } + + TTierInfo& SetSerializer(const NArrow::NSerialization::TSerializerContainer& value) { + Serializer = value; + return *this; + } + + std::shared_ptr<arrow::Field> GetEvictColumn(const std::shared_ptr<arrow::Schema>& schema) const { + return schema->GetFieldByName(EvictColumnName); + } + + std::optional<TInstant> ScalarToInstant(const std::shared_ptr<arrow::Scalar>& scalar) const; + + static std::shared_ptr<TTierInfo> MakeTtl(const TDuration evictDuration, const TString& ttlColumn, ui32 unitsInSecond = 0) { + return std::make_shared<TTierInfo>(NTiering::NCommon::DeleteTierName, evictDuration, ttlColumn, unitsInSecond); + } + + TString GetDebugString() const { + TStringBuilder sb; + sb << "name=" << Name << ";duration=" << EvictDuration << ";column=" << EvictColumnName << ";serializer="; + if (Serializer) { + sb << Serializer->DebugString(); + } else { + sb << "NOT_SPECIFIED(Default)"; + } + sb << ";"; + return sb; + } +}; + +class TTierRef { +public: + TTierRef(const std::shared_ptr<TTierInfo>& tierInfo) + : Info(tierInfo) + { + Y_ABORT_UNLESS(tierInfo); + } + + bool operator < (const TTierRef& b) const { + if (Info->GetEvictDuration() > b.Info->GetEvictDuration()) { + return true; + } else if (Info->GetEvictDuration() == b.Info->GetEvictDuration()) { + if (Info->GetName() == NTiering::NCommon::DeleteTierName) { + return true; + } else if (b.Info->GetName() == NTiering::NCommon::DeleteTierName) { + return false; + } + return Info->GetName() > b.Info->GetName(); // add stability: smaller name is hotter + } + return false; + } + + bool operator == (const TTierRef& b) const { + return Info->GetEvictDuration() == b.Info->GetEvictDuration() + && Info->GetName() == b.Info->GetName(); + } + + const TTierInfo& Get() const { + return *Info; + } + + std::shared_ptr<TTierInfo> GetPtr() const { + return Info; + } + +private: + std::shared_ptr<TTierInfo> Info; +}; + +class TTiering { + using TTiersMap = THashMap<TString, std::shared_ptr<TTierInfo>>; + TTiersMap TierByName; + TSet<TTierRef> OrderedTiers; + TString TTLColumnName; +public: + + class TTieringContext { + private: + YDB_READONLY_DEF(TString, CurrentTierName); + YDB_READONLY_DEF(TDuration, CurrentTierLag); + + YDB_READONLY_DEF(std::optional<TString>, NextTierName); + YDB_READONLY_DEF(std::optional<TDuration>, NextTierWaiting); + public: + TString DebugString() const { + TStringBuilder sb; + sb << CurrentTierName << "/" << CurrentTierLag << ";"; + if (NextTierName) { + sb << *NextTierName << "/" << *NextTierWaiting << ";"; + } + return sb; + } + + TTieringContext(const TString& tierName, const TDuration waiting, const std::optional<TString>& nextTierName = {}, const std::optional<TDuration>& nextTierDuration = {}) + : CurrentTierName(tierName) + , CurrentTierLag(waiting) + , NextTierName(nextTierName) + , NextTierWaiting(nextTierDuration) + { + AFL_VERIFY(!nextTierName == !nextTierDuration); + } + + TString GetNextTierNameVerified() const { + AFL_VERIFY(NextTierName); + return *NextTierName; + } + + TDuration GetNextTierWaitingVerified() const { + AFL_VERIFY(NextTierWaiting); + return *NextTierWaiting; + } + }; + + TTieringContext GetTierToMove(const std::shared_ptr<arrow::Scalar>& max, const TInstant now) const; + + const TTiersMap& GetTierByName() const { + return TierByName; + } + + std::shared_ptr<TTierInfo> GetTierByName(const TString& name) const { + auto it = TierByName.find(name); + if (it == TierByName.end()) { + return nullptr; + } + return it->second; + } + + const TSet<TTierRef>& GetOrderedTiers() const { + return OrderedTiers; + } + + bool HasTiers() const { + return !OrderedTiers.empty(); + } + + [[nodiscard]] bool Add(const std::shared_ptr<TTierInfo>& tier) { + AFL_VERIFY(tier); + if (!TTLColumnName) { + TTLColumnName = tier->GetEvictColumnName(); + } else if (TTLColumnName != tier->GetEvictColumnName()) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("problem", "incorrect_tiering_metadata")("column_before", TTLColumnName)("column_new", tier->GetEvictColumnName()); + return false; + } + + TierByName.emplace(tier->GetName(), tier); + OrderedTiers.emplace(tier); + return true; + } + + std::optional<NArrow::NSerialization::TSerializerContainer> GetSerializer(const TString& name) const { + auto it = TierByName.find(name); + if (it != TierByName.end()) { + Y_ABORT_UNLESS(!name.empty()); + return it->second->GetSerializer(); + } + return {}; + } + + const TString& GetTtlColumn() const { + AFL_VERIFY(TTLColumnName); + return TTLColumnName; + } + + const TString& GetEvictColumnName() const { + return TTLColumnName; + } + + TString GetDebugString() const { + TStringBuilder sb; + for (auto&& i : OrderedTiers) { + sb << i.Get().GetDebugString() << "; "; + } + return sb; + } +}; + +} diff --git a/ydb/core/tx/columnshard/engines/scheme/tiering/ya.make b/ydb/core/tx/columnshard/engines/scheme/tiering/ya.make new file mode 100644 index 000000000000..45f21958d0d8 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/tiering/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +SRCS( + tier_info.cpp + common.cpp +) + +PEERDIR( + ydb/core/formats/arrow/serializer +) + +END() diff --git a/ydb/core/tx/columnshard/engines/scheme/versions/abstract_scheme.cpp b/ydb/core/tx/columnshard/engines/scheme/versions/abstract_scheme.cpp new file mode 100644 index 000000000000..771ebe52e783 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/versions/abstract_scheme.cpp @@ -0,0 +1,141 @@ +#include "abstract_scheme.h" + +#include <ydb/core/tx/columnshard/engines/index_info.h> +#include <ydb/core/formats/arrow/arrow_helpers.h> +#include <util/string/join.h> + +namespace NKikimr::NOlap { + +std::shared_ptr<arrow::Field> ISnapshotSchema::GetFieldByIndex(const int index) const { + auto schema = GetSchema(); + if (!schema || index < 0 || index >= schema->num_fields()) { + return nullptr; + } + return schema->field(index); +} +std::shared_ptr<arrow::Field> ISnapshotSchema::GetFieldByColumnIdOptional(const ui32 columnId) const { + return GetFieldByIndex(GetFieldIndex(columnId)); +} + +std::set<ui32> ISnapshotSchema::GetPkColumnsIds() const { + std::set<ui32> result; + for (auto&& field : GetIndexInfo().GetReplaceKey()->fields()) { + result.emplace(GetColumnId(field->name())); + } + return result; + +} + +std::shared_ptr<arrow::RecordBatch> ISnapshotSchema::NormalizeBatch(const ISnapshotSchema& dataSchema, const std::shared_ptr<arrow::RecordBatch> batch) const { + if (dataSchema.GetSnapshot() == GetSnapshot()) { + return batch; + } + Y_ABORT_UNLESS(dataSchema.GetSnapshot() < GetSnapshot()); + const std::shared_ptr<arrow::Schema>& resultArrowSchema = GetSchema(); + std::vector<std::shared_ptr<arrow::Array>> newColumns; + newColumns.reserve(resultArrowSchema->num_fields()); + + for (size_t i = 0; i < resultArrowSchema->fields().size(); ++i) { + auto& resultField = resultArrowSchema->fields()[i]; + auto columnId = GetIndexInfo().GetColumnId(resultField->name()); + auto oldColumnIndex = dataSchema.GetFieldIndex(columnId); + if (oldColumnIndex >= 0) { // ColumnExists + auto oldColumnInfo = dataSchema.GetFieldByIndex(oldColumnIndex); + Y_ABORT_UNLESS(oldColumnInfo); + auto columnData = batch->GetColumnByName(oldColumnInfo->name()); + Y_ABORT_UNLESS(columnData); + newColumns.push_back(columnData); + } else { // AddNullColumn + auto nullColumn = NArrow::MakeEmptyBatch(arrow::schema({resultField}), batch->num_rows()); + newColumns.push_back(nullColumn->column(0)); + } + } + return arrow::RecordBatch::Make(resultArrowSchema, batch->num_rows(), newColumns); +} + +std::shared_ptr<arrow::RecordBatch> ISnapshotSchema::PrepareForInsert(const TString& data, const std::shared_ptr<arrow::Schema>& dataSchema) const { + std::shared_ptr<arrow::Schema> dstSchema = GetIndexInfo().ArrowSchema(); + auto batch = NArrow::DeserializeBatch(data, (dataSchema ? dataSchema : dstSchema)); + if (!batch) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", "DeserializeBatch() failed"); + return nullptr; + } + if (batch->num_rows() == 0) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", "empty batch"); + return nullptr; + } + + // Correct schema + if (dataSchema) { + batch = NArrow::ExtractColumns(batch, dstSchema, true); + if (!batch) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", "cannot correct schema"); + return nullptr; + } + } + + if (!batch->schema()->Equals(dstSchema)) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", TStringBuilder() << "unexpected schema for insert batch: '" << batch->schema()->ToString() << "'"); + return nullptr; + } + + const auto& sortingKey = GetIndexInfo().GetPrimaryKey(); + Y_ABORT_UNLESS(sortingKey); + + // Check PK is NOT NULL + for (auto& field : sortingKey->fields()) { + auto column = batch->GetColumnByName(field->name()); + if (!column) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", TStringBuilder() << "missing PK column '" << field->name() << "'"); + return nullptr; + } + if (NArrow::HasNulls(column)) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", TStringBuilder() << "PK column '" << field->name() << "' contains NULLs"); + return nullptr; + } + } + + auto status = batch->ValidateFull(); + if (!status.ok()) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("error", status.ToString()); + return nullptr; + } + batch = NArrow::SortBatch(batch, sortingKey, true); + Y_DEBUG_ABORT_UNLESS(NArrow::IsSortedAndUnique(batch, sortingKey)); + return batch; +} + +ui32 ISnapshotSchema::GetColumnId(const std::string& columnName) const { + auto id = GetColumnIdOptional(columnName); + AFL_VERIFY(id)("column_name", columnName)("schema", JoinSeq(",", GetSchema()->field_names())); + return *id; +} + +std::shared_ptr<arrow::Field> ISnapshotSchema::GetFieldByColumnIdVerified(const ui32 columnId) const { + auto result = GetFieldByColumnIdOptional(columnId); + AFL_VERIFY(result)("event", "unknown_column")("column_id", columnId)("schema", DebugString()); + return result; +} + +std::shared_ptr<NKikimr::NOlap::TColumnLoader> ISnapshotSchema::GetColumnLoaderVerified(const ui32 columnId) const { + auto result = GetColumnLoaderOptional(columnId); + AFL_VERIFY(result); + return result; +} + +std::shared_ptr<NKikimr::NOlap::TColumnLoader> ISnapshotSchema::GetColumnLoaderVerified(const std::string& columnName) const { + auto result = GetColumnLoaderOptional(columnName); + AFL_VERIFY(result); + return result; +} + +std::shared_ptr<NKikimr::NOlap::TColumnLoader> ISnapshotSchema::GetColumnLoaderOptional(const std::string& columnName) const { + const std::optional<ui32> id = GetColumnIdOptional(columnName); + if (id) { + return GetColumnLoaderOptional(*id); + } else { + return nullptr; + } +} + +} diff --git a/ydb/core/tx/columnshard/engines/scheme/versions/abstract_scheme.h b/ydb/core/tx/columnshard/engines/scheme/versions/abstract_scheme.h new file mode 100644 index 000000000000..0fc4047de574 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/versions/abstract_scheme.h @@ -0,0 +1,57 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/scheme/abstract/saver.h> +#include <ydb/core/tx/columnshard/engines/scheme/abstract/loader.h> + +#include <ydb/core/tx/columnshard/common/snapshot.h> + +#include <string> + +namespace NKikimr::NOlap { + +struct TIndexInfo; +class TSaverContext; + +class ISnapshotSchema { +protected: + virtual TString DoDebugString() const = 0; +public: + using TPtr = std::shared_ptr<ISnapshotSchema>; + + virtual ~ISnapshotSchema() {} + virtual std::shared_ptr<TColumnLoader> GetColumnLoaderOptional(const ui32 columnId) const = 0; + std::shared_ptr<TColumnLoader> GetColumnLoaderVerified(const ui32 columnId) const; + std::shared_ptr<TColumnLoader> GetColumnLoaderOptional(const std::string& columnName) const; + std::shared_ptr<TColumnLoader> GetColumnLoaderVerified(const std::string& columnName) const; + + virtual TColumnSaver GetColumnSaver(const ui32 columnId) const = 0; + TColumnSaver GetColumnSaver(const TString& columnName) const { + return GetColumnSaver(GetColumnId(columnName)); + } + TColumnSaver GetColumnSaver(const std::string& columnName) const { + return GetColumnSaver(TString(columnName.data(), columnName.size())); + } + + virtual std::optional<ui32> GetColumnIdOptional(const std::string& columnName) const = 0; + virtual int GetFieldIndex(const ui32 columnId) const = 0; + + ui32 GetColumnId(const std::string& columnName) const; + std::shared_ptr<arrow::Field> GetFieldByIndex(const int index) const; + std::shared_ptr<arrow::Field> GetFieldByColumnIdOptional(const ui32 columnId) const; + std::shared_ptr<arrow::Field> GetFieldByColumnIdVerified(const ui32 columnId) const; + + TString DebugString() const { + return DoDebugString(); + } + virtual const std::shared_ptr<arrow::Schema>& GetSchema() const = 0; + virtual const TIndexInfo& GetIndexInfo() const = 0; + virtual const TSnapshot& GetSnapshot() const = 0; + virtual ui64 GetVersion() const = 0; + virtual ui32 GetColumnsCount() const = 0; + + std::set<ui32> GetPkColumnsIds() const; + + std::shared_ptr<arrow::RecordBatch> NormalizeBatch(const ISnapshotSchema& dataSchema, const std::shared_ptr<arrow::RecordBatch> batch) const; + std::shared_ptr<arrow::RecordBatch> PrepareForInsert(const TString& data, const std::shared_ptr<arrow::Schema>& dataSchema) const; +}; + +} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/scheme/versions/filtered_scheme.cpp b/ydb/core/tx/columnshard/engines/scheme/versions/filtered_scheme.cpp new file mode 100644 index 000000000000..8832e7eb0ec8 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/versions/filtered_scheme.cpp @@ -0,0 +1,94 @@ +#include "filtered_scheme.h" +#include <util/string/join.h> + + +namespace NKikimr::NOlap { + +TFilteredSnapshotSchema::TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::vector<ui32>& columnIds) + : TFilteredSnapshotSchema(originalSnapshot, std::set(columnIds.begin(), columnIds.end())) +{} + +TFilteredSnapshotSchema::TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::set<ui32>& columnIds) + : OriginalSnapshot(originalSnapshot) + , ColumnIds(columnIds) +{ + std::vector<std::shared_ptr<arrow::Field>> schemaFields; + for (auto&& i : OriginalSnapshot->GetSchema()->fields()) { + if (!ColumnIds.contains(OriginalSnapshot->GetIndexInfo().GetColumnId(i->name()))) { + continue; + } + schemaFields.emplace_back(i); + } + Schema = std::make_shared<arrow::Schema>(schemaFields); +} + +TFilteredSnapshotSchema::TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::set<std::string>& columnNames) + : OriginalSnapshot(originalSnapshot) { + for (auto&& i : columnNames) { + ColumnIds.emplace(OriginalSnapshot->GetColumnId(i)); + } + std::vector<std::shared_ptr<arrow::Field>> schemaFields; + for (auto&& i : OriginalSnapshot->GetSchema()->fields()) { + if (!columnNames.contains(i->name())) { + continue; + } + schemaFields.emplace_back(i); + } + Schema = std::make_shared<arrow::Schema>(schemaFields); +} + +TColumnSaver TFilteredSnapshotSchema::GetColumnSaver(const ui32 columnId) const { + Y_ABORT_UNLESS(ColumnIds.contains(columnId)); + return OriginalSnapshot->GetColumnSaver(columnId); +} + +std::shared_ptr<TColumnLoader> TFilteredSnapshotSchema::GetColumnLoaderOptional(const ui32 columnId) const { + Y_ABORT_UNLESS(ColumnIds.contains(columnId)); + return OriginalSnapshot->GetColumnLoaderOptional(columnId); +} + +std::optional<ui32> TFilteredSnapshotSchema::GetColumnIdOptional(const std::string& columnName) const { + return OriginalSnapshot->GetColumnIdOptional(columnName); +} + +int TFilteredSnapshotSchema::GetFieldIndex(const ui32 columnId) const { + if (!ColumnIds.contains(columnId)) { + return -1; + } + TString columnName = OriginalSnapshot->GetIndexInfo().GetColumnName(columnId, false); + if (!columnName) { + return -1; + } + std::string name(columnName.data(), columnName.size()); + return Schema->GetFieldIndex(name); +} + +const std::shared_ptr<arrow::Schema>& TFilteredSnapshotSchema::GetSchema() const { + return Schema; +} + +const TIndexInfo& TFilteredSnapshotSchema::GetIndexInfo() const { + return OriginalSnapshot->GetIndexInfo(); +} + +const TSnapshot& TFilteredSnapshotSchema::GetSnapshot() const { + return OriginalSnapshot->GetSnapshot(); +} + +ui32 TFilteredSnapshotSchema::GetColumnsCount() const { + return Schema->num_fields(); +} + +ui64 TFilteredSnapshotSchema::GetVersion() const { + return OriginalSnapshot->GetIndexInfo().GetVersion(); +} + +TString TFilteredSnapshotSchema::DoDebugString() const { + return TStringBuilder() << "(" + << "original=" << OriginalSnapshot->DebugString() << ";" + << "column_ids=[" << JoinSeq(",", ColumnIds) << "];" + << ")" + ; +} + +} diff --git a/ydb/core/tx/columnshard/engines/scheme/versions/filtered_scheme.h b/ydb/core/tx/columnshard/engines/scheme/versions/filtered_scheme.h new file mode 100644 index 000000000000..e9fa1b41b7c2 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/versions/filtered_scheme.h @@ -0,0 +1,32 @@ +#pragma once + +#include "abstract_scheme.h" + +#include <ydb/core/tx/columnshard/engines/index_info.h> + +namespace NKikimr::NOlap { + +class TFilteredSnapshotSchema: public ISnapshotSchema { + ISnapshotSchema::TPtr OriginalSnapshot; + std::shared_ptr<arrow::Schema> Schema; + std::set<ui32> ColumnIds; +protected: + virtual TString DoDebugString() const override; +public: + TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::vector<ui32>& columnIds); + TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::set<ui32>& columnIds); + TFilteredSnapshotSchema(ISnapshotSchema::TPtr originalSnapshot, const std::set<std::string>& columnNames); + + TColumnSaver GetColumnSaver(const ui32 columnId) const override; + std::shared_ptr<TColumnLoader> GetColumnLoaderOptional(const ui32 columnId) const override; + std::optional<ui32> GetColumnIdOptional(const std::string& columnName) const override; + int GetFieldIndex(const ui32 columnId) const override; + + const std::shared_ptr<arrow::Schema>& GetSchema() const override; + const TIndexInfo& GetIndexInfo() const override; + const TSnapshot& GetSnapshot() const override; + ui32 GetColumnsCount() const override; + ui64 GetVersion() const override; +}; + +} diff --git a/ydb/core/tx/columnshard/engines/scheme/versions/snapshot_scheme.cpp b/ydb/core/tx/columnshard/engines/scheme/versions/snapshot_scheme.cpp new file mode 100644 index 000000000000..1fe6820cf547 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/versions/snapshot_scheme.cpp @@ -0,0 +1,53 @@ +#include "snapshot_scheme.h" + +namespace NKikimr::NOlap { + +TSnapshotSchema::TSnapshotSchema(TIndexInfo&& indexInfo, const TSnapshot& snapshot) + : IndexInfo(std::move(indexInfo)) + , Schema(IndexInfo.ArrowSchemaWithSpecials()) + , Snapshot(snapshot) +{ +} + +TColumnSaver TSnapshotSchema::GetColumnSaver(const ui32 columnId) const { + return IndexInfo.GetColumnSaver(columnId); +} + +std::shared_ptr<TColumnLoader> TSnapshotSchema::GetColumnLoaderOptional(const ui32 columnId) const { + return IndexInfo.GetColumnLoaderOptional(columnId); +} + +std::optional<ui32> TSnapshotSchema::GetColumnIdOptional(const std::string& columnName) const { + return IndexInfo.GetColumnIdOptional(columnName); +} + +int TSnapshotSchema::GetFieldIndex(const ui32 columnId) const { + const TString& columnName = IndexInfo.GetColumnName(columnId, false); + if (!columnName) { + return -1; + } + std::string name(columnName.data(), columnName.size()); + return Schema->GetFieldIndex(name); +} + +const std::shared_ptr<arrow::Schema>& TSnapshotSchema::GetSchema() const { + return Schema; +} + +const TIndexInfo& TSnapshotSchema::GetIndexInfo() const { + return IndexInfo; +} + +const TSnapshot& TSnapshotSchema::GetSnapshot() const { + return Snapshot; +} + +ui32 TSnapshotSchema::GetColumnsCount() const { + return Schema->num_fields(); +} + +ui64 TSnapshotSchema::GetVersion() const { + return IndexInfo.GetVersion(); +} + +} diff --git a/ydb/core/tx/columnshard/engines/scheme/versions/snapshot_scheme.h b/ydb/core/tx/columnshard/engines/scheme/versions/snapshot_scheme.h new file mode 100644 index 000000000000..539d8f99a02c --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/versions/snapshot_scheme.h @@ -0,0 +1,38 @@ +#pragma once + +#include "abstract_scheme.h" + +#include <ydb/core/tx/columnshard/engines/index_info.h> + +namespace NKikimr::NOlap { + +class TSnapshotSchema: public ISnapshotSchema { +private: + TIndexInfo IndexInfo; + std::shared_ptr<arrow::Schema> Schema; + TSnapshot Snapshot; +protected: + virtual TString DoDebugString() const override { + return TStringBuilder() << "(" + "schema=" << Schema->ToString() << ";" << + "snapshot=" << Snapshot.DebugString() << ";" << + "index_info=" << IndexInfo.DebugString() << ";" << + ")" + ; + } +public: + TSnapshotSchema(TIndexInfo&& indexInfo, const TSnapshot& snapshot); + + TColumnSaver GetColumnSaver(const ui32 columnId) const override; + std::shared_ptr<TColumnLoader> GetColumnLoaderOptional(const ui32 columnId) const override; + std::optional<ui32> GetColumnIdOptional(const std::string& columnName) const override; + int GetFieldIndex(const ui32 columnId) const override; + + const std::shared_ptr<arrow::Schema>& GetSchema() const override; + const TIndexInfo& GetIndexInfo() const override; + const TSnapshot& GetSnapshot() const override; + ui32 GetColumnsCount() const override; + ui64 GetVersion() const override; +}; + +} diff --git a/ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.cpp b/ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.cpp new file mode 100644 index 000000000000..e7cf6f30ed36 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.cpp @@ -0,0 +1,31 @@ +#include "versioned_index.h" +#include "snapshot_scheme.h" + +#include <ydb/core/tx/columnshard/engines/scheme/index_info.h> + +namespace NKikimr::NOlap { + +void TVersionedIndex::AddIndex(const TSnapshot& snapshot, TIndexInfo&& indexInfo) { + if (Snapshots.empty()) { + PrimaryKey = indexInfo.GetPrimaryKey(); + } else { + Y_ABORT_UNLESS(PrimaryKey->Equals(indexInfo.GetPrimaryKey())); + } + + const bool needActualization = indexInfo.GetSchemeNeedActualization(); + auto newVersion = indexInfo.GetVersion(); + auto itVersion = SnapshotByVersion.emplace(newVersion, std::make_shared<TSnapshotSchema>(std::move(indexInfo), snapshot)); + if (!itVersion.second) { + AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("message", "Skip registered version")("version", LastSchemaVersion); + } else if (needActualization) { + if (!SchemeVersionForActualization || *SchemeVersionForActualization < newVersion) { + SchemeVersionForActualization = newVersion; + SchemeForActualization = itVersion.first->second; + } + } + auto itSnap = Snapshots.emplace(snapshot, itVersion.first->second); + Y_ABORT_UNLESS(itSnap.second); + LastSchemaVersion = std::max(newVersion, LastSchemaVersion); +} + +} diff --git a/ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.h b/ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.h new file mode 100644 index 000000000000..d83d338350d7 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.h @@ -0,0 +1,68 @@ +#pragma once +#include "abstract_scheme.h" + +namespace NKikimr::NOlap { + +class TVersionedIndex { + std::map<TSnapshot, ISnapshotSchema::TPtr> Snapshots; + std::shared_ptr<arrow::Schema> PrimaryKey; + std::map<ui64, ISnapshotSchema::TPtr> SnapshotByVersion; + ui64 LastSchemaVersion = 0; + std::optional<ui64> SchemeVersionForActualization; + ISnapshotSchema::TPtr SchemeForActualization; +public: + ISnapshotSchema::TPtr GetLastCriticalSchema() const { + return SchemeForActualization; + } + + ISnapshotSchema::TPtr GetLastCriticalSchemaDef(const ISnapshotSchema::TPtr defaultSchema) const { + auto result = GetLastCriticalSchema(); + return result ? result : defaultSchema; + } + + TString DebugString() const { + TStringBuilder sb; + for (auto&& i : Snapshots) { + sb << i.first << ":" << i.second->DebugString() << ";"; + } + return sb; + } + + ISnapshotSchema::TPtr GetSchema(const ui64 version) const { + auto it = SnapshotByVersion.find(version); + return it == SnapshotByVersion.end() ? nullptr : it->second; + } + + ISnapshotSchema::TPtr GetSchemaVerified(const ui64 version) const { + auto it = SnapshotByVersion.find(version); + Y_ABORT_UNLESS(it != SnapshotByVersion.end(), "no schema for version %lu", version); + return it->second; + } + + ISnapshotSchema::TPtr GetSchema(const TSnapshot& version) const { + for (auto it = Snapshots.rbegin(); it != Snapshots.rend(); ++it) { + if (it->first <= version) { + return it->second; + } + } + Y_ABORT_UNLESS(!Snapshots.empty()); + Y_ABORT_UNLESS(version.IsZero()); + return Snapshots.begin()->second; // For old compaction logic compatibility + } + + ISnapshotSchema::TPtr GetLastSchema() const { + Y_ABORT_UNLESS(!Snapshots.empty()); + return Snapshots.rbegin()->second; + } + + bool IsEmpty() const { + return Snapshots.empty(); + } + + const std::shared_ptr<arrow::Schema>& GetPrimaryKey() const noexcept { + return PrimaryKey; + } + + void AddIndex(const TSnapshot& snapshot, TIndexInfo&& indexInfo); +}; +} diff --git a/ydb/core/tx/columnshard/engines/scheme/versions/ya.make b/ydb/core/tx/columnshard/engines/scheme/versions/ya.make new file mode 100644 index 000000000000..63dc44a74899 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/scheme/versions/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + abstract_scheme.cpp + snapshot_scheme.cpp + filtered_scheme.cpp + versioned_index.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/abstract +) + +END() diff --git a/ydb/core/tx/columnshard/engines/scheme/ya.make b/ydb/core/tx/columnshard/engines/scheme/ya.make index 2067cdd542b7..f2b04cd56c89 100644 --- a/ydb/core/tx/columnshard/engines/scheme/ya.make +++ b/ydb/core/tx/columnshard/engines/scheme/ya.make @@ -15,6 +15,13 @@ PEERDIR( ydb/library/actors/core ydb/core/tx/columnshard/engines/scheme/indexes + ydb/core/tx/columnshard/engines/scheme/statistics + ydb/core/tx/columnshard/engines/scheme/abstract + ydb/core/tx/columnshard/engines/scheme/versions + ydb/core/tx/columnshard/engines/scheme/tiering + ydb/core/tx/columnshard/engines/scheme/column + ydb/core/tx/columnshard/blobs_action/abstract + ydb/core/tx/columnshard/engines/changes/compaction ) YQL_LAST_ABI_VERSION() diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/abstract.cpp b/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/abstract.cpp new file mode 100644 index 000000000000..d193e92e3e1a --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/abstract.cpp @@ -0,0 +1,5 @@ +#include "abstract.h" + +namespace NKikimr::NOlap::NActualizer { + +} diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/abstract.h b/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/abstract.h new file mode 100644 index 000000000000..56db4cf2fa4f --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/abstract.h @@ -0,0 +1,30 @@ +#pragma once +#include "context.h" + +#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> + +namespace NKikimr::NOlap::NActualizer { + +class IActualizer { +protected: + virtual void DoAddPortion(const TPortionInfo& info, const TAddExternalContext& context) = 0; + virtual void DoRemovePortion(const ui64 portionId) = 0; + virtual void DoExtractTasks(TTieringProcessContext& tasksContext, const TExternalTasksContext& externalContext, TInternalTasksContext& internalContext) = 0; +public: + virtual ~IActualizer() = default; + void ExtractTasks(TTieringProcessContext& tasksContext, const TExternalTasksContext& externalContext, TInternalTasksContext& internalContext) { + return DoExtractTasks(tasksContext, externalContext, internalContext); + } + void AddPortion(const std::shared_ptr<TPortionInfo>& info, const TAddExternalContext& context) { + AFL_VERIFY(info); + if (info->HasRemoveSnapshot()) { + return; + } + return DoAddPortion(*info, context); + } + void RemovePortion(const ui64 portionId) { + return DoRemovePortion(portionId); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/context.cpp b/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/context.cpp new file mode 100644 index 000000000000..6ef73de8ceb0 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/context.cpp @@ -0,0 +1,5 @@ +#include "context.h" + +namespace NKikimr::NOlap::NActualizer { + +} diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/context.h b/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/context.h new file mode 100644 index 000000000000..3e50ee118d43 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/context.h @@ -0,0 +1,59 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> + +#include <ydb/library/accessor/accessor.h> + +#include <util/generic/hash.h> + +namespace NKikimr::NOlap { +class TPortionInfo; +} + +namespace NKikimr::NOlap::NActualizer { + +class TTieringProcessContext; + +class TAddExternalContext { +private: + YDB_READONLY_DEF(TInstant, Now); + YDB_ACCESSOR(bool, PortionExclusiveGuarantee, true); + const THashMap<ui64, std::shared_ptr<TPortionInfo>>& Portions; +public: + TAddExternalContext(const TInstant now, const THashMap<ui64, std::shared_ptr<TPortionInfo>>& portions) + : Now(now) + , Portions(portions) + { + + } + + const THashMap<ui64, std::shared_ptr<TPortionInfo>>& GetPortions() const { + return Portions; + } +}; + +class TExternalTasksContext { +private: + const THashMap<ui64, std::shared_ptr<TPortionInfo>>& Portions; +public: + const THashMap<ui64, std::shared_ptr<TPortionInfo>>& GetPortions() const { + return Portions; + } + + const std::shared_ptr<TPortionInfo>& GetPortionVerified(const ui64 portionId) const { + auto it = Portions.find(portionId); + AFL_VERIFY(it != Portions.end()); + return it->second; + } + + TExternalTasksContext(const THashMap<ui64, std::shared_ptr<TPortionInfo>>& portions) + : Portions(portions) + { + + } +}; + +class TInternalTasksContext { +public: +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/ya.make b/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/ya.make new file mode 100644 index 000000000000..90979469658b --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/abstract/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +SRCS( + abstract.cpp + context.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/versions +) + +END() diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/common/address.cpp b/ydb/core/tx/columnshard/engines/storage/actualizer/common/address.cpp new file mode 100644 index 000000000000..6fae8d9c9b73 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/common/address.cpp @@ -0,0 +1,33 @@ +#include "address.h" + +#include <ydb/core/tx/columnshard/engines/scheme/tiering/common.h> + +#include <ydb/library/actors/core/log.h> + +#include <util/digest/numeric.h> +#include <util/generic/string_hash.h> +#include <util/string/join.h> + +namespace NKikimr::NOlap::NActualizer { + +TRWAddress::TRWAddress(std::set<TString>&& readStorages, std::set<TString>&& writeStorages): ReadStorages(std::move(readStorages)) +, WriteStorages(std::move(writeStorages)) { + AFL_VERIFY(!ReadStorages.contains("")); + AFL_VERIFY(!WriteStorages.contains("")); + if (WriteStorages.contains(NTiering::NCommon::DeleteTierName)) { + AFL_VERIFY(WriteStorages.size() == 1); + } + Hash = 0; + for (auto&& i : ReadStorages) { + Hash = CombineHashes(Hash, CityHash64(i.data(), i.size())); + } + for (auto&& i : WriteStorages) { + Hash = CombineHashes(Hash, CityHash64(i.data(), i.size())); + } +} + +TString TRWAddress::DebugString() const { + return "R:" + JoinSeq(",", ReadStorages) + ";W:" + JoinSeq(",", WriteStorages); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/common/address.h b/ydb/core/tx/columnshard/engines/storage/actualizer/common/address.h new file mode 100644 index 000000000000..31a74b7cc019 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/common/address.h @@ -0,0 +1,34 @@ +#pragma once +#include <set> +#include <util/generic/string.h> + +namespace NKikimr::NOlap::NActualizer { + +class TRWAddress { +private: + std::set<TString> ReadStorages; + std::set<TString> WriteStorages; + ui64 Hash = 0; +public: + bool WriteIs(const TString& storageId) const { + return WriteStorages.size() == 1 && WriteStorages.contains(storageId); + } + + bool ReadIs(const TString& storageId) const { + return ReadStorages.size() == 1 && ReadStorages.contains(storageId); + } + + TString DebugString() const; + + TRWAddress(std::set<TString>&& readStorages, std::set<TString>&& writeStorages); + + bool operator==(const TRWAddress& item) const { + return ReadStorages == item.ReadStorages && WriteStorages == item.WriteStorages; + } + + operator size_t() const { + return Hash; + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/common/ya.make b/ydb/core/tx/columnshard/engines/storage/actualizer/common/ya.make new file mode 100644 index 000000000000..ae034445d0c4 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/common/ya.make @@ -0,0 +1,11 @@ +LIBRARY() + +SRCS( + address.cpp +) + +PEERDIR( + ydb/library/actors/core +) + +END() diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/counters/counters.cpp b/ydb/core/tx/columnshard/engines/storage/actualizer/counters/counters.cpp new file mode 100644 index 000000000000..f6e4cca64311 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/counters/counters.cpp @@ -0,0 +1,5 @@ +#include "counters.h" + +namespace NKikimr::NOlap::NActualizer { + +} diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/counters/counters.h b/ydb/core/tx/columnshard/engines/storage/actualizer/counters/counters.h new file mode 100644 index 000000000000..7bf8aa895f69 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/counters/counters.h @@ -0,0 +1,109 @@ +#pragma once +#include <ydb/core/tx/columnshard/counters/common/owner.h> +#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> + +namespace NKikimr::NOlap::NActualizer { + +class TPortionCategoryCounterAgents: public NColumnShard::TCommonCountersOwner { +private: + using TBase = NColumnShard::TCommonCountersOwner; +public: + const std::shared_ptr<NColumnShard::TValueAggregationAgent> RecordsCount; + const std::shared_ptr<NColumnShard::TValueAggregationAgent> Count; + const std::shared_ptr<NColumnShard::TValueAggregationAgent> Bytes; + TPortionCategoryCounterAgents(NColumnShard::TCommonCountersOwner& base, const TString& categoryName) + : TBase(base, "category", categoryName) + , RecordsCount(TBase::GetValueAutoAggregations("ByGranule/Portions/RecordsCount")) + , Count(TBase::GetValueAutoAggregations("ByGranule/Portions/Count")) + , Bytes(TBase::GetValueAutoAggregations("ByGranule/Portions/Bytes")) + { + } +}; + +class TPortionCategoryCounters { +private: + std::shared_ptr<NColumnShard::TValueAggregationClient> RecordsCount; + std::shared_ptr<NColumnShard::TValueAggregationClient> Count; + std::shared_ptr<NColumnShard::TValueAggregationClient> Bytes; +public: + TPortionCategoryCounters(TPortionCategoryCounterAgents& agents) + { + RecordsCount = agents.RecordsCount->GetClient(); + Count = agents.Count->GetClient(); + Bytes = agents.Bytes->GetClient(); + } + + void AddPortion(const std::shared_ptr<TPortionInfo>& p) { + RecordsCount->Add(p->NumRows()); + Count->Add(1); + Bytes->Add(p->GetTotalBlobBytes()); + } + + void RemovePortion(const std::shared_ptr<TPortionInfo>& p) { + RecordsCount->Remove(p->NumRows()); + Count->Remove(1); + Bytes->Remove(p->GetTotalBlobBytes()); + } +}; + +class TGlobalCounters: public NColumnShard::TCommonCountersOwner { +private: + using TBase = NColumnShard::TCommonCountersOwner; + std::shared_ptr<TPortionCategoryCounterAgents> PortionsWaitingEviction; + std::shared_ptr<TPortionCategoryCounterAgents> PortionsWaitingDelete; + std::shared_ptr<TPortionCategoryCounterAgents> PortionsLatenessEviction; + std::shared_ptr<TPortionCategoryCounterAgents> PortionsLatenessDelete; + std::shared_ptr<TPortionCategoryCounterAgents> PortionsToSyncSchema; +public: + + TGlobalCounters() + : TBase("Actualizer") + { + PortionsWaitingEviction = std::make_shared<TPortionCategoryCounterAgents>(*this, "eviction_waiting"); + PortionsWaitingDelete = std::make_shared<TPortionCategoryCounterAgents>(*this, "delete_waiting"); + PortionsLatenessEviction = std::make_shared<TPortionCategoryCounterAgents>(*this, "eviction_lateness"); + PortionsLatenessDelete = std::make_shared<TPortionCategoryCounterAgents>(*this, "delete_lateness"); + PortionsToSyncSchema = std::make_shared<TPortionCategoryCounterAgents>(*this, "sync_schema"); + } + + static std::shared_ptr<TPortionCategoryCounters> BuildPortionsWaitingEvictionAggregation() { + return std::make_shared<TPortionCategoryCounters>(*Singleton<TGlobalCounters>()->PortionsWaitingEviction); + } + + static std::shared_ptr<TPortionCategoryCounters> BuildPortionsWaitingDeleteAggregation() { + return std::make_shared<TPortionCategoryCounters>(*Singleton<TGlobalCounters>()->PortionsWaitingDelete); + } + + static std::shared_ptr<TPortionCategoryCounters> BuildPortionsLatenessEvictionAggregation() { + return std::make_shared<TPortionCategoryCounters>(*Singleton<TGlobalCounters>()->PortionsLatenessEviction); + } + + static std::shared_ptr<TPortionCategoryCounters> BuildPortionsLatenessDeleteAggregation() { + return std::make_shared<TPortionCategoryCounters>(*Singleton<TGlobalCounters>()->PortionsLatenessDelete); + } + + static std::shared_ptr<TPortionCategoryCounters> BuildPortionsToSyncSchemaAggregation() { + return std::make_shared<TPortionCategoryCounters>(*Singleton<TGlobalCounters>()->PortionsToSyncSchema); + } +}; + +class TCounters { +public: + const std::shared_ptr<TPortionCategoryCounters> PortionsWaitingEviction; + const std::shared_ptr<TPortionCategoryCounters> PortionsWaitingDelete; + const std::shared_ptr<TPortionCategoryCounters> PortionsLatenessEviction; + const std::shared_ptr<TPortionCategoryCounters> PortionsLatenessDelete; + const std::shared_ptr<TPortionCategoryCounters> PortionsToSyncSchema; + + TCounters() + : PortionsWaitingEviction(TGlobalCounters::BuildPortionsWaitingEvictionAggregation()) + , PortionsWaitingDelete(TGlobalCounters::BuildPortionsWaitingDeleteAggregation()) + , PortionsLatenessEviction(TGlobalCounters::BuildPortionsLatenessEvictionAggregation()) + , PortionsLatenessDelete(TGlobalCounters::BuildPortionsLatenessDeleteAggregation()) + , PortionsToSyncSchema(TGlobalCounters::BuildPortionsToSyncSchemaAggregation()) + { + } + +}; + +} diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/counters/ya.make b/ydb/core/tx/columnshard/engines/storage/actualizer/counters/ya.make new file mode 100644 index 000000000000..d73b370747be --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/counters/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +SRCS( + counters.cpp +) + +PEERDIR( + ydb/library/actors/core + ydb/core/tx/columnshard/engines/portions + ydb/core/tx/columnshard/counters/common +) + +END() diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/index/index.cpp b/ydb/core/tx/columnshard/engines/storage/actualizer/index/index.cpp new file mode 100644 index 000000000000..91805b0ef283 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/index/index.cpp @@ -0,0 +1,54 @@ +#include "index.h" +#include <ydb/core/tx/columnshard/engines/storage/actualizer/tiering/tiering.h> +#include <ydb/core/tx/columnshard/engines/storage/actualizer/scheme/scheme.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> + +namespace NKikimr::NOlap::NActualizer { + +void TGranuleActualizationIndex::ExtractActualizationTasks(TTieringProcessContext& tasksContext, const NActualizer::TExternalTasksContext& externalContext) const { + TInternalTasksContext internalContext; + for (auto&& i : Actualizers) { + i->ExtractTasks(tasksContext, externalContext, internalContext); + } +} + +void TGranuleActualizationIndex::AddPortion(const std::shared_ptr<TPortionInfo>& portion, const TAddExternalContext& context) { + for (auto&& i : Actualizers) { + i->AddPortion(portion, context); + } +} + +void TGranuleActualizationIndex::RemovePortion(const std::shared_ptr<TPortionInfo>& portion) { + for (auto&& i : Actualizers) { + i->RemovePortion(portion->GetPortionId()); + } +} + +void TGranuleActualizationIndex::RefreshTiering(const std::optional<TTiering>& info, const TAddExternalContext& context) { + AFL_VERIFY(TieringActualizer); + TieringActualizer->Refresh(info, context); + NYDBTest::TControllers::GetColumnShardController()->OnActualizationRefreshTiering(); +} + +void TGranuleActualizationIndex::RefreshScheme(const TAddExternalContext& context) { + AFL_VERIFY(SchemeActualizer); + SchemeActualizer->Refresh(context); + NYDBTest::TControllers::GetColumnShardController()->OnActualizationRefreshScheme(); +} + +TGranuleActualizationIndex::TGranuleActualizationIndex(const ui64 pathId, const TVersionedIndex& versionedIndex) + : PathId(pathId) + , VersionedIndex(versionedIndex) +{ + Y_UNUSED(PathId); +} + +void TGranuleActualizationIndex::Start() { + AFL_VERIFY(Actualizers.empty()); + TieringActualizer = std::make_shared<TTieringActualizer>(PathId, VersionedIndex); + SchemeActualizer = std::make_shared<TSchemeActualizer>(PathId, VersionedIndex); + Actualizers.emplace_back(TieringActualizer); + Actualizers.emplace_back(SchemeActualizer); +} + +} diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/index/index.h b/ydb/core/tx/columnshard/engines/storage/actualizer/index/index.h new file mode 100644 index 000000000000..a67fac3a5cdb --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/index/index.h @@ -0,0 +1,37 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/storage/actualizer/abstract/abstract.h> +#include <ydb/core/tx/columnshard/engines/storage/actualizer/counters/counters.h> + +namespace NKikimr::NOlap { +class TVersionedIndex; +class TTiering; +} + +namespace NKikimr::NOlap::NActualizer { +class TTieringActualizer; +class TSchemeActualizer; + +class TGranuleActualizationIndex { +private: + TCounters Counters; + std::vector<std::shared_ptr<IActualizer>> Actualizers; + + std::shared_ptr<TTieringActualizer> TieringActualizer; + std::shared_ptr<TSchemeActualizer> SchemeActualizer; + + const ui64 PathId; + const TVersionedIndex& VersionedIndex; +public: + void Start(); + TGranuleActualizationIndex(const ui64 pathId, const TVersionedIndex& versionedIndex); + + void ExtractActualizationTasks(TTieringProcessContext& tasksContext, const NActualizer::TExternalTasksContext& externalContext) const; + + void RefreshTiering(const std::optional<TTiering>& info, const TAddExternalContext& context); + void RefreshScheme(const TAddExternalContext& context); + + void AddPortion(const std::shared_ptr<TPortionInfo>& portion, const TAddExternalContext& context); + void RemovePortion(const std::shared_ptr<TPortionInfo>& portion); +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/index/ya.make b/ydb/core/tx/columnshard/engines/storage/actualizer/index/ya.make new file mode 100644 index 000000000000..8308be890dca --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/index/ya.make @@ -0,0 +1,11 @@ +LIBRARY() + +SRCS( + index.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/versions +) + +END() diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/counters.cpp b/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/counters.cpp new file mode 100644 index 000000000000..146a8700def1 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/counters.cpp @@ -0,0 +1,5 @@ +#include "counters.h" + +namespace NKikimr::NOlap::NStorageOptimizer::NBuckets { + +} diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/counters.h b/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/counters.h new file mode 100644 index 000000000000..8f5ab2ff4311 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/counters.h @@ -0,0 +1,47 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.h> +#include <ydb/core/formats/arrow/replace_key.h> +#include <ydb/library/accessor/accessor.h> +#include <ydb/core/tx/columnshard/splitter/settings.h> +#include <ydb/core/tx/columnshard/counters/engine_logs.h> + +namespace NKikimr::NOlap::NActualizer { + +class TSchemeGlobalCounters: public NColumnShard::TCommonCountersOwner { +private: + using TBase = NColumnShard::TCommonCountersOwner; + + std::shared_ptr<NColumnShard::TValueAggregationAgent> QueueSizeInternalWrite; + std::shared_ptr<NColumnShard::TValueAggregationAgent> QueueSizeExternalWrite; +public: + TSchemeGlobalCounters() + : TBase("SchemeActualizer") + { + QueueSizeExternalWrite = TBase::GetValueAutoAggregations("Granule/Scheme/Actualization/QueueSize/ExternalWrite"); + QueueSizeInternalWrite = TBase::GetValueAutoAggregations("Granule/Scheme/Actualization/QueueSize/InternalWrite"); + } + + static std::shared_ptr<NColumnShard::TValueAggregationClient> BuildQueueSizeExternalWrite() { + return Singleton<TSchemeGlobalCounters>()->QueueSizeExternalWrite->GetClient(); + } + + static std::shared_ptr<NColumnShard::TValueAggregationClient> BuildQueueSizeInternalWrite() { + return Singleton<TSchemeGlobalCounters>()->QueueSizeInternalWrite->GetClient(); + } + +}; + +class TSchemeCounters { +public: + const std::shared_ptr<NColumnShard::TValueAggregationClient> QueueSizeInternalWrite; + const std::shared_ptr<NColumnShard::TValueAggregationClient> QueueSizeExternalWrite; + + TSchemeCounters() + : QueueSizeInternalWrite(TSchemeGlobalCounters::BuildQueueSizeInternalWrite()) + , QueueSizeExternalWrite(TSchemeGlobalCounters::BuildQueueSizeExternalWrite()) +{ + } + +}; + +} diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/scheme.cpp b/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/scheme.cpp new file mode 100644 index 000000000000..b2def23842d4 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/scheme.cpp @@ -0,0 +1,117 @@ +#include "scheme.h" +#include <ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.h> +#include <ydb/core/tx/columnshard/engines/scheme/index_info.h> +#include <ydb/core/tx/columnshard/engines/changes/actualization/construction/context.h> +#include <ydb/core/tx/columnshard/engines/changes/abstract/abstract.h> +#include <ydb/core/tx/columnshard/data_locks/manager/manager.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> + +namespace NKikimr::NOlap::NActualizer { + +std::optional<NKikimr::NOlap::NActualizer::TSchemeActualizer::TFullActualizationInfo> TSchemeActualizer::BuildActualizationInfo(const TPortionInfo& portion) const { + AFL_VERIFY(TargetSchema); + const TString& currentTierName = portion.GetTierNameDef(IStoragesManager::DefaultStorageId); + auto portionSchema = portion.GetSchema(VersionedIndex); + if (portionSchema->GetVersion() < TargetSchema->GetVersion()) { + auto storagesWrite = TargetSchema->GetIndexInfo().GetUsedStorageIds(currentTierName); + auto storagesRead = portionSchema->GetIndexInfo().GetUsedStorageIds(currentTierName); + TRWAddress address(std::move(storagesRead), std::move(storagesWrite)); + return TFullActualizationInfo(std::move(address), TargetSchema); + } + return {}; +} + +void TSchemeActualizer::DoAddPortion(const TPortionInfo& info, const TAddExternalContext& addContext) { + if (!TargetSchema) { + return; + } + if (!addContext.GetPortionExclusiveGuarantee()) { + if (PortionsInfo.contains(info.GetPortionId())) { + return; + } + } else { + AFL_VERIFY(!PortionsInfo.contains(info.GetPortionId())); + } + auto actualizationInfo = BuildActualizationInfo(info); + if (!actualizationInfo) { + return; + } + NYDBTest::TControllers::GetColumnShardController()->AddPortionForActualizer(1); + AFL_VERIFY(PortionsToActualizeScheme[actualizationInfo->GetAddress()].emplace(info.GetPortionId()).second); + AFL_VERIFY(PortionsInfo.emplace(info.GetPortionId(), actualizationInfo->ExtractFindId()).second); +} + +void TSchemeActualizer::DoRemovePortion(const ui64 portionId) { + auto it = PortionsInfo.find(portionId); + if (it == PortionsInfo.end()) { + return; + } + auto itAddress = PortionsToActualizeScheme.find(it->second.GetRWAddress()); + AFL_VERIFY(itAddress != PortionsToActualizeScheme.end()); + AFL_VERIFY(itAddress->second.erase(portionId)); + NYDBTest::TControllers::GetColumnShardController()->AddPortionForActualizer(-1); + if (itAddress->second.empty()) { + PortionsToActualizeScheme.erase(itAddress); + } + PortionsInfo.erase(it); +} + +void TSchemeActualizer::DoExtractTasks(TTieringProcessContext& tasksContext, const TExternalTasksContext& externalContext, TInternalTasksContext& /*internalContext*/) { + THashSet<ui64> portionsToRemove; + for (auto&& [address, portions] : PortionsToActualizeScheme) { + if (!tasksContext.IsRWAddressAvailable(address)) { + continue; + } + for (auto&& portionId : portions) { + auto portion = externalContext.GetPortionVerified(portionId); + if (!address.WriteIs(NBlobOperations::TGlobal::DefaultStorageId) && !address.WriteIs(NTiering::NCommon::DeleteTierName)) { + if (!portion->HasRuntimeFeature(TPortionInfo::ERuntimeFeature::Optimized)) { + continue; + } + } + auto info = BuildActualizationInfo(*portion); + AFL_VERIFY(info); + auto portionScheme = portion->GetSchema(VersionedIndex); + TPortionEvictionFeatures features(portionScheme, info->GetTargetScheme(), portion->GetTierNameDef(IStoragesManager::DefaultStorageId)); + features.SetTargetTierName(portion->GetTierNameDef(IStoragesManager::DefaultStorageId)); + + if (!tasksContext.AddPortion(*portion, std::move(features), {})) { + break; + } else { + portionsToRemove.emplace(portion->GetPortionId()); + } + } + } + for (auto&& i : portionsToRemove) { + RemovePortion(i); + } + + ui64 waitQueueExternal = 0; + ui64 waitQueueInternal = 0; + for (auto&& i : PortionsToActualizeScheme) { + if (i.first.WriteIs(IStoragesManager::DefaultStorageId)) { + waitQueueInternal += i.second.size(); + } else { + waitQueueExternal += i.second.size(); + } + } + Counters.QueueSizeInternalWrite->SetValue(waitQueueInternal); + Counters.QueueSizeExternalWrite->SetValue(waitQueueExternal); + +} + +void TSchemeActualizer::Refresh(const TAddExternalContext& externalContext) { + TargetSchema = VersionedIndex.GetLastCriticalSchema(); + if (!TargetSchema) { + AFL_VERIFY(PortionsInfo.empty()); + } else { + NYDBTest::TControllers::GetColumnShardController()->AddPortionForActualizer(-1 * PortionsInfo.size()); + PortionsInfo.clear(); + PortionsToActualizeScheme.clear(); + for (auto&& i : externalContext.GetPortions()) { + AddPortion(i.second, externalContext); + } + } +} + +} diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/scheme.h b/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/scheme.h new file mode 100644 index 000000000000..f67335d1f553 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/scheme.h @@ -0,0 +1,73 @@ +#pragma once +#include "counters.h" +#include <ydb/core/tx/columnshard/engines/storage/actualizer/abstract/abstract.h> +#include <ydb/core/tx/columnshard/engines/storage/actualizer/common/address.h> +#include <ydb/core/tx/columnshard/engines/scheme/versions/abstract_scheme.h> + +namespace NKikimr::NOlap::NActualizer { + +class TSchemeActualizer: public IActualizer { +private: + const TSchemeCounters Counters; + THashMap<TRWAddress, THashSet<ui64>> PortionsToActualizeScheme; + std::shared_ptr<ISnapshotSchema> TargetSchema; + const ui64 PathId; + const TVersionedIndex& VersionedIndex; + + class TFindActualizationInfo { + private: + TRWAddress RWAddress; + public: + const TRWAddress& GetRWAddress() const { + return RWAddress; + } + + TFindActualizationInfo(TRWAddress&& rwAddress) + : RWAddress(std::move(rwAddress)) { + + } + }; + + THashMap<ui64, TFindActualizationInfo> PortionsInfo; + + class TFullActualizationInfo { + private: + TRWAddress Address; + YDB_ACCESSOR_DEF(std::shared_ptr<ISnapshotSchema>, TargetScheme); + public: + TFindActualizationInfo ExtractFindId() { + return TFindActualizationInfo(std::move(Address)); + } + + TString DebugString() const { + return TStringBuilder() << "{address=" << Address.DebugString() << ";target_scheme=" << TargetScheme->DebugString() << "}"; + } + + const TRWAddress& GetAddress() const { + return Address; + } + + TFullActualizationInfo(TRWAddress&& address, const std::shared_ptr<ISnapshotSchema>& targetScheme) + : Address(std::move(address)) + , TargetScheme(targetScheme) { + + } + }; + + std::optional<TFullActualizationInfo> BuildActualizationInfo(const TPortionInfo& portion) const; + +protected: + virtual void DoAddPortion(const TPortionInfo& info, const TAddExternalContext& context) override; + virtual void DoRemovePortion(const ui64 portionId) override; + virtual void DoExtractTasks(TTieringProcessContext& tasksContext, const TExternalTasksContext& externalContext, TInternalTasksContext& internalContext) override; +public: + void Refresh(const TAddExternalContext& externalContext); + + TSchemeActualizer(const ui64 pathId, const TVersionedIndex& versionedIndex) + : PathId(pathId) + , VersionedIndex(versionedIndex) { + Y_UNUSED(PathId); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/ya.make b/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/ya.make new file mode 100644 index 000000000000..39bde6f3d885 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/scheme/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +SRCS( + scheme.cpp + counters.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/versions +) + +END() diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/counters.cpp b/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/counters.cpp new file mode 100644 index 000000000000..146a8700def1 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/counters.cpp @@ -0,0 +1,5 @@ +#include "counters.h" + +namespace NKikimr::NOlap::NStorageOptimizer::NBuckets { + +} diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/counters.h b/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/counters.h new file mode 100644 index 000000000000..7d7a1cc3d830 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/counters.h @@ -0,0 +1,78 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.h> +#include <ydb/core/formats/arrow/replace_key.h> +#include <ydb/library/accessor/accessor.h> +#include <ydb/core/tx/columnshard/splitter/settings.h> +#include <ydb/core/tx/columnshard/counters/engine_logs.h> + +namespace NKikimr::NOlap::NActualizer { + +class TTieringGlobalCounters: public NColumnShard::TCommonCountersOwner { +private: + using TBase = NColumnShard::TCommonCountersOwner; + + std::shared_ptr<NColumnShard::TValueAggregationAgent> QueueSizeToEvict; + std::shared_ptr<NColumnShard::TValueAggregationAgent> QueueSizeToDelete; + std::shared_ptr<NColumnShard::TValueAggregationAgent> DifferenceWaitToEvict; + std::shared_ptr<NColumnShard::TValueAggregationAgent> DifferenceWaitToDelete; + NMonitoring::TDynamicCounters::TCounterPtr SkipEvictionForCompaction; + NMonitoring::TDynamicCounters::TCounterPtr SkipEvictionForLimit; +public: + TTieringGlobalCounters() + : TBase("TieringActualizer") + { + QueueSizeToEvict = TBase::GetValueAutoAggregations("Granule/Eviction/QueueSize"); + QueueSizeToDelete = TBase::GetValueAutoAggregations("Granule/Deletion/QueueSize"); + DifferenceWaitToEvict = TBase::GetValueAutoAggregations("Granule/Eviction/WaitingInSeconds"); + DifferenceWaitToDelete = TBase::GetValueAutoAggregations("Granule/Deletion/WaitingInSeconds"); + SkipEvictionForCompaction = TBase::GetDeriviative("Eviction/SkipForCompaction"); + SkipEvictionForLimit = TBase::GetDeriviative("Eviction/SkipForLimit"); + } + + static NMonitoring::TDynamicCounters::TCounterPtr GetSkipEvictionForLimit() { + return Singleton<TTieringGlobalCounters>()->SkipEvictionForLimit; + } + + static NMonitoring::TDynamicCounters::TCounterPtr GetSkipEvictionForCompaction() { + return Singleton<TTieringGlobalCounters>()->SkipEvictionForCompaction; + } + + static std::shared_ptr<NColumnShard::TValueAggregationClient> BuildQueueSizeToEvict() { + return Singleton<TTieringGlobalCounters>()->QueueSizeToEvict->GetClient(); + } + + static std::shared_ptr<NColumnShard::TValueAggregationClient> BuildQueueSizeToDelete() { + return Singleton<TTieringGlobalCounters>()->QueueSizeToDelete->GetClient(); + } + + static std::shared_ptr<NColumnShard::TValueAggregationClient> BuildDifferenceWaitToEvict() { + return Singleton<TTieringGlobalCounters>()->DifferenceWaitToEvict->GetClient(); + } + + static std::shared_ptr<NColumnShard::TValueAggregationClient> BuildDifferenceWaitToDelete() { + return Singleton<TTieringGlobalCounters>()->DifferenceWaitToDelete->GetClient(); + } + +}; + +class TTieringCounters { +public: + const std::shared_ptr<NColumnShard::TValueAggregationClient> QueueSizeToEvict; + const std::shared_ptr<NColumnShard::TValueAggregationClient> QueueSizeToDelete; + const std::shared_ptr<NColumnShard::TValueAggregationClient> DifferenceWaitToEvict; + const std::shared_ptr<NColumnShard::TValueAggregationClient> DifferenceWaitToDelete; + const NMonitoring::TDynamicCounters::TCounterPtr SkipEvictionForCompaction; + const NMonitoring::TDynamicCounters::TCounterPtr SkipEvictionForLimit; + + TTieringCounters() + : QueueSizeToEvict(TTieringGlobalCounters::BuildQueueSizeToEvict()) + , QueueSizeToDelete(TTieringGlobalCounters::BuildQueueSizeToDelete()) + , DifferenceWaitToEvict(TTieringGlobalCounters::BuildDifferenceWaitToEvict()) + , DifferenceWaitToDelete(TTieringGlobalCounters::BuildDifferenceWaitToDelete()) + , SkipEvictionForCompaction(TTieringGlobalCounters::GetSkipEvictionForCompaction()) + , SkipEvictionForLimit(TTieringGlobalCounters::GetSkipEvictionForLimit()) { + } + +}; + +} diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/tiering.cpp b/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/tiering.cpp new file mode 100644 index 000000000000..ffd7bb2274a1 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/tiering.cpp @@ -0,0 +1,184 @@ +#include "tiering.h" +#include <ydb/core/tx/columnshard/engines/scheme/versions/versioned_index.h> +#include <ydb/core/tx/columnshard/engines/scheme/index_info.h> +#include <ydb/core/tx/columnshard/engines/changes/actualization/construction/context.h> +#include <ydb/core/tx/columnshard/engines/changes/abstract/abstract.h> +#include <ydb/core/tx/columnshard/data_locks/manager/manager.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> + +namespace NKikimr::NOlap::NActualizer { + +std::shared_ptr<NKikimr::NOlap::ISnapshotSchema> TTieringActualizer::GetTargetSchema(const std::shared_ptr<ISnapshotSchema>& portionSchema) const { + if (!TargetCriticalSchema) { + return portionSchema; + } + if (portionSchema->GetVersion() < TargetCriticalSchema->GetVersion()) { + return TargetCriticalSchema; + } + return portionSchema; +} + +std::optional<TTieringActualizer::TFullActualizationInfo> TTieringActualizer::BuildActualizationInfo(const TPortionInfo& portion, const TInstant now) const { + std::shared_ptr<ISnapshotSchema> portionSchema = portion.GetSchema(VersionedIndex); + std::shared_ptr<ISnapshotSchema> targetSchema = GetTargetSchema(portionSchema); + const TString& currentTierName = portion.GetTierNameDef(IStoragesManager::DefaultStorageId); + + if (Tiering) { + AFL_VERIFY(TieringColumnId); + auto statOperator = portionSchema->GetIndexInfo().GetStatistics(NStatistics::TIdentifier(NStatistics::EType::Max, {*TieringColumnId})); + std::shared_ptr<arrow::Scalar> max; + if (!statOperator) { + max = portion.MaxValue(*TieringColumnId); + if (!max) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "scalar_less_not_max"); + return {}; + } + } else { + NYDBTest::TControllers::GetColumnShardController()->OnStatisticsUsage(statOperator); + max = statOperator.GetScalarVerified(portion.GetMeta().GetStatisticsStorage()); + } + auto tieringInfo = Tiering->GetTierToMove(max, now); + AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("tiering_info", tieringInfo.DebugString()); + std::optional<i64> d; + std::set<TString> storagesWrite; + TString targetTierName; + if (portion.GetTierNameDef(IStoragesManager::DefaultStorageId) != tieringInfo.GetCurrentTierName()) { + d = -1 * tieringInfo.GetCurrentTierLag().GetValue(); + targetTierName = tieringInfo.GetCurrentTierName(); + } else if (tieringInfo.GetNextTierName()) { + d = tieringInfo.GetNextTierWaitingVerified().GetValue(); + targetTierName = tieringInfo.GetNextTierNameVerified(); + } + if (d) { + // if (currentTierName == "deploy_logs_s3" && targetTierName == IStoragesManager::DefaultStorageId) { + // AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("tiering_info", tieringInfo.DebugString())("max", max->ToString())("now", now.ToString())("d", *d)("tiering", Tiering->GetDebugString())("pathId", PathId); + // AFL_VERIFY(false)("tiering_info", tieringInfo.DebugString())("max", max->ToString())("now", now.ToString())("d", *d)("tiering", Tiering->GetDebugString())("pathId", PathId); + // } + auto storagesWrite = targetSchema->GetIndexInfo().GetUsedStorageIds(targetTierName); + auto storagesRead = portionSchema->GetIndexInfo().GetUsedStorageIds(currentTierName); + return TFullActualizationInfo(TRWAddress(std::move(storagesRead), std::move(storagesWrite)), targetTierName, *d, targetSchema); + } + } else if (currentTierName != IStoragesManager::DefaultStorageId) { + // if (currentTierName == "deploy_logs_s3") { + // AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("pathId", PathId); + // AFL_VERIFY(false)("pathId", PathId); + // } + auto storagesWrite = targetSchema->GetIndexInfo().GetUsedStorageIds(IStoragesManager::DefaultStorageId); + auto storagesRead = portionSchema->GetIndexInfo().GetUsedStorageIds(currentTierName); + TRWAddress address(std::move(storagesRead), std::move(storagesWrite)); + return TFullActualizationInfo(std::move(address), IStoragesManager::DefaultStorageId, 0, targetSchema); + } + return {}; +} + +void TTieringActualizer::DoAddPortion(const TPortionInfo& portion, const TAddExternalContext& addContext) { + if (!addContext.GetPortionExclusiveGuarantee()) { + if (PortionsInfo.contains(portion.GetPortionId())) { + return; + } + } else { + AFL_VERIFY(!PortionsInfo.contains(portion.GetPortionId())); + } + auto info = BuildActualizationInfo(portion, addContext.GetNow()); + if (!info) { + return; + } + AFL_VERIFY(PortionIdByWaitDuration[info->GetAddress()].AddPortion(*info, portion.GetPortionId(), addContext.GetNow() - StartInstant)); + auto address = info->GetAddress(); + TFindActualizationInfo findId(std::move(address), info->GetWaitDuration() + (addContext.GetNow() - StartInstant)); + AFL_VERIFY(PortionsInfo.emplace(portion.GetPortionId(), std::move(findId)).second); +} + +void TTieringActualizer::DoRemovePortion(const ui64 portionId) { + auto it = PortionsInfo.find(portionId); + if (it == PortionsInfo.end()) { + return; + } + auto itAddress = PortionIdByWaitDuration.find(it->second.GetRWAddress()); + AFL_VERIFY(itAddress != PortionIdByWaitDuration.end()); + if (itAddress->second.RemovePortion(it->second, portionId)) { + PortionIdByWaitDuration.erase(itAddress); + } + PortionsInfo.erase(it); +} + +void TTieringActualizer::DoExtractTasks(TTieringProcessContext& tasksContext, const TExternalTasksContext& externalContext, TInternalTasksContext& /*internalContext*/) { + THashSet<ui64> portionIds; + for (auto&& [address, addressPortions] : PortionIdByWaitDuration) { + if (!tasksContext.IsRWAddressAvailable(address)) { + Counters.SkipEvictionForLimit->Add(1); + continue; + } + for (auto&& [duration, portions] : addressPortions.GetPortions()) { + if (duration - (tasksContext.Now - StartInstant) > TDuration::Zero()) { + break; + } + bool limitEnriched = false; + for (auto&& p : portions) { + auto portion = externalContext.GetPortionVerified(p); + if (!address.WriteIs(NBlobOperations::TGlobal::DefaultStorageId) && !address.WriteIs(NTiering::NCommon::DeleteTierName)) { + if (!portion->HasRuntimeFeature(TPortionInfo::ERuntimeFeature::Optimized)) { + Counters.SkipEvictionForCompaction->Add(1); + continue; + } + } + auto info = BuildActualizationInfo(*portion, tasksContext.Now); + AFL_VERIFY(info); + auto portionScheme = portion->GetSchema(VersionedIndex); + TPortionEvictionFeatures features(portionScheme, info->GetTargetScheme(), portion->GetTierNameDef(IStoragesManager::DefaultStorageId)); + features.SetTargetTierName(info->GetTargetTierName()); + + if (!tasksContext.AddPortion(*portion, std::move(features), info->GetLateness())) { + limitEnriched = true; + break; + } else { + portionIds.emplace(portion->GetPortionId()); + } + } + if (limitEnriched) { + break; + } + } + } + for (auto&& i : portionIds) { + RemovePortion(i); + } + + ui64 waitDurationEvict = 0; + ui64 waitQueueEvict = 0; + ui64 waitDurationDelete = 0; + ui64 waitQueueDelete = 0; + for (auto&& i : PortionIdByWaitDuration) { + std::shared_ptr<NColumnShard::TValueAggregationClient> waitDurationSignal; + std::shared_ptr<NColumnShard::TValueAggregationClient> queueSizeSignal; + if (i.first.WriteIs(NTiering::NCommon::DeleteTierName)) { + i.second.CorrectSignals(waitQueueDelete, waitDurationDelete, tasksContext.Now - StartInstant); + } else { + i.second.CorrectSignals(waitQueueEvict, waitDurationEvict, tasksContext.Now - StartInstant); + } + } + Counters.DifferenceWaitToDelete->SetValue(waitDurationDelete); + Counters.DifferenceWaitToEvict->SetValue(waitDurationEvict); + Counters.QueueSizeToDelete->SetValue(waitQueueDelete); + Counters.QueueSizeToEvict->SetValue(waitQueueEvict); + +} + +void TTieringActualizer::Refresh(const std::optional<TTiering>& info, const TAddExternalContext& externalContext) { + StartInstant = externalContext.GetNow(); + Tiering = info; + if (Tiering) { + TieringColumnId = VersionedIndex.GetLastSchema()->GetColumnId(Tiering->GetTtlColumn()); + } else { + TieringColumnId = {}; + } + TargetCriticalSchema = VersionedIndex.GetLastCriticalSchema(); + PortionsInfo.clear(); + PortionIdByWaitDuration.clear(); + + for (auto&& i : externalContext.GetPortions()) { + AddPortion(i.second, externalContext); + } +} + +} diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/tiering.h b/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/tiering.h new file mode 100644 index 000000000000..96c8a13c00ce --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/tiering.h @@ -0,0 +1,142 @@ +#pragma once +#include "counters.h" +#include <ydb/core/tx/columnshard/engines/storage/actualizer/abstract/abstract.h> +#include <ydb/core/tx/columnshard/engines/storage/actualizer/common/address.h> +#include <ydb/core/tx/columnshard/engines/scheme/versions/abstract_scheme.h> +#include <ydb/core/tx/columnshard/engines/scheme/tiering/tier_info.h> + +namespace NKikimr::NOlap { +class TTiering; +} + +namespace NKikimr::NOlap::NActualizer { + +class TTieringActualizer: public IActualizer { +private: + TTieringCounters Counters; + class TFullActualizationInfo { + private: + TRWAddress Address; + YDB_ACCESSOR_DEF(TString, TargetTierName); + YDB_ACCESSOR_DEF(ISnapshotSchema::TPtr, TargetScheme); + i64 WaitDurationValue; + public: + TString DebugString() const { + return TStringBuilder() << "{address=" << Address.DebugString() << ";target_tier=" << TargetTierName << ";wait_duration=" << TDuration::FromValue(WaitDurationValue) << "}"; + } + + const TRWAddress& GetAddress() const { + return Address; + } + + TFullActualizationInfo(TRWAddress&& address, const TString& targetTierName, const i64 waitDurationValue, const ISnapshotSchema::TPtr& targetScheme) + : Address(std::move(address)) + , TargetTierName(targetTierName) + , TargetScheme(targetScheme) + , WaitDurationValue(waitDurationValue) + { + + } + + TDuration GetWaitDuration() const { + if (WaitDurationValue >= 0) { + return TDuration::FromValue(WaitDurationValue); + } else { + return TDuration::Zero(); + } + } + + TDuration GetLateness() const { + if (WaitDurationValue >= 0) { + return TDuration::Zero(); + } else { + return TDuration::FromValue(-WaitDurationValue); + } + } + }; + + class TFindActualizationInfo { + private: + TRWAddress RWAddress; + YDB_READONLY_DEF(TDuration, WaitDuration); + public: + const TRWAddress& GetRWAddress() const { + return RWAddress; + } + + TFindActualizationInfo(TRWAddress&& rwAddress, const TDuration waitDuration) + : RWAddress(std::move(rwAddress)) + , WaitDuration(waitDuration) { + + } + }; + + class TRWAddressPortionsInfo { + private: + std::map<TDuration, THashSet<ui64>> Portions; + public: + const std::map<TDuration, THashSet<ui64>>& GetPortions() const { + return Portions; + } + + void CorrectSignals(ui64& queueSize, ui64& waitSeconds, const TDuration dCorrect) const { + if (Portions.empty()) { + return; + } + for (auto&& i : Portions) { + if (i.first > dCorrect) { + break; + } + queueSize += i.second.size(); + } + if (Portions.begin()->first < dCorrect) { + waitSeconds = std::max(waitSeconds, (dCorrect - Portions.begin()->first).Seconds()); + } + } + + [[nodiscard]] bool AddPortion(const TFullActualizationInfo& info, const ui64 portionId, const TDuration dCorrection) { + return Portions[info.GetWaitDuration() + dCorrection].emplace(portionId).second; + } + + bool RemovePortion(const TFindActualizationInfo& info, const ui64 portionId) { + auto itDuration = Portions.find(info.GetWaitDuration()); + AFL_VERIFY(itDuration != Portions.end()); + AFL_VERIFY(itDuration->second.erase(portionId)); + if (itDuration->second.empty()) { + Portions.erase(itDuration); + } + return Portions.empty(); + } + }; + + std::optional<TTiering> Tiering; + std::optional<ui32> TieringColumnId; + + std::shared_ptr<ISnapshotSchema> TargetCriticalSchema; + const ui64 PathId; + const TVersionedIndex& VersionedIndex; + + TInstant StartInstant = TInstant::Zero(); + THashMap<TRWAddress, TRWAddressPortionsInfo> PortionIdByWaitDuration; + THashMap<ui64, TFindActualizationInfo> PortionsInfo; + + std::shared_ptr<ISnapshotSchema> GetTargetSchema(const std::shared_ptr<ISnapshotSchema>& portionSchema) const; + + std::optional<TFullActualizationInfo> BuildActualizationInfo(const TPortionInfo& portion, const TInstant now) const; + + virtual void DoAddPortion(const TPortionInfo& portion, const TAddExternalContext& addContext) override; + virtual void DoRemovePortion(const ui64 portionId) override; + virtual void DoExtractTasks(TTieringProcessContext& tasksContext, const TExternalTasksContext& externalContext, TInternalTasksContext& internalContext) override; + +public: + void Refresh(const std::optional<TTiering>& info, const TAddExternalContext& externalContext); + + TTieringActualizer(const ui64 pathId, const TVersionedIndex& versionedIndex) + : PathId(pathId) + , VersionedIndex(versionedIndex) + { + Y_UNUSED(PathId); + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/ya.make b/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/ya.make new file mode 100644 index 000000000000..cea28ce6b79c --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/tiering/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +SRCS( + tiering.cpp + counters.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/versions +) + +END() diff --git a/ydb/core/tx/columnshard/engines/storage/actualizer/ya.make b/ydb/core/tx/columnshard/engines/storage/actualizer/ya.make new file mode 100644 index 000000000000..0689e11c04e6 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/actualizer/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +PEERDIR( + ydb/core/tx/columnshard/engines/storage/actualizer/index + ydb/core/tx/columnshard/engines/storage/actualizer/common + ydb/core/tx/columnshard/engines/storage/actualizer/abstract + ydb/core/tx/columnshard/engines/storage/actualizer/scheme + ydb/core/tx/columnshard/engines/storage/actualizer/tiering + ydb/core/tx/columnshard/engines/storage/actualizer/counters +) + +END() diff --git a/ydb/core/tx/columnshard/engines/storage/chunks/column.cpp b/ydb/core/tx/columnshard/engines/storage/chunks/column.cpp new file mode 100644 index 000000000000..485802b0e3c1 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/chunks/column.cpp @@ -0,0 +1,18 @@ +#include "column.h" +#include <ydb/core/tx/columnshard/splitter/simple.h> + +namespace NKikimr::NOlap::NChunks { + +std::vector<std::shared_ptr<IPortionDataChunk>> TChunkPreparation::DoInternalSplitImpl(const TColumnSaver& saver, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const std::vector<ui64>& splitSizes) const { + auto rb = NArrow::TStatusValidator::GetValid(ColumnInfo.GetLoader()->Apply(Data)); + + auto chunks = TSimpleSplitter(saver, counters).SplitBySizes(rb, Data, splitSizes); + std::vector<std::shared_ptr<IPortionDataChunk>> newChunks; + for (auto&& i : chunks) { + Y_ABORT_UNLESS(i.GetSlicedBatch()->num_columns() == 1); + newChunks.emplace_back(std::make_shared<TChunkPreparation>(saver.Apply(i.GetSlicedBatch()), i.GetSlicedBatch()->column(0), TChunkAddress(GetColumnId(), GetChunkIdxOptional().value_or(0)), ColumnInfo)); + } + return newChunks; +} + +} diff --git a/ydb/core/tx/columnshard/engines/storage/chunks/column.h b/ydb/core/tx/columnshard/engines/storage/chunks/column.h new file mode 100644 index 000000000000..7e05b45a9638 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/chunks/column.h @@ -0,0 +1,68 @@ +#pragma once +#include <ydb/core/tx/columnshard/splitter/chunks.h> +#include <ydb/core/tx/columnshard/engines/scheme/versions/abstract_scheme.h> +#include <ydb/core/tx/columnshard/engines/portions/column_record.h> +#include <ydb/core/tx/columnshard/counters/splitter.h> + +namespace NKikimr::NOlap::NChunks { + +class TChunkPreparation: public IPortionColumnChunk { +private: + using TBase = IPortionColumnChunk; + TString Data; + TColumnRecord Record; + TSimpleColumnInfo ColumnInfo; + std::shared_ptr<arrow::Scalar> First; + std::shared_ptr<arrow::Scalar> Last; +protected: + virtual std::vector<std::shared_ptr<IPortionDataChunk>> DoInternalSplitImpl(const TColumnSaver& saver, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const std::vector<ui64>& splitSizes) const override; + virtual const TString& DoGetData() const override { + return Data; + } + virtual ui32 DoGetRecordsCountImpl() const override { + return Record.GetMeta().GetNumRows(); + } + virtual TString DoDebugString() const override { + return ""; + } + virtual TSimpleChunkMeta DoBuildSimpleChunkMeta() const override { + return Record.GetMeta(); + } + virtual std::shared_ptr<arrow::Scalar> DoGetFirstScalar() const override { + return First; + } + virtual std::shared_ptr<arrow::Scalar> DoGetLastScalar() const override { + return Last; + } + virtual std::shared_ptr<IPortionDataChunk> DoCopyWithAnotherBlob(TString&& data, const TSimpleColumnInfo& columnInfo) const override { + TColumnRecord cRecord = Record; + cRecord.ResetBlobRange(); + return std::make_shared<TChunkPreparation>(std::move(data), cRecord, columnInfo); + } + +public: + const TColumnRecord& GetRecord() const { + return Record; + } + + TChunkPreparation(const TString& data, const TColumnRecord& columnChunk, const TSimpleColumnInfo& columnInfo) + : TBase(columnChunk.ColumnId) + , Data(data) + , Record(columnChunk) + , ColumnInfo(columnInfo) { + AFL_VERIFY(Data.size() == Record.BlobRange.Size || Record.BlobRange.Size == 0)("data", Data.size())("record", Record.BlobRange.Size); + } + + TChunkPreparation(const TString& data, const std::shared_ptr<arrow::Array>& column, const TChunkAddress& address, const TSimpleColumnInfo& columnInfo) + : TBase(address.GetColumnId()) + , Data(data) + , Record(address, column, columnInfo) + , ColumnInfo(columnInfo) { + Y_ABORT_UNLESS(column->length()); + First = NArrow::TStatusValidator::GetValid(column->GetScalar(0)); + Last = NArrow::TStatusValidator::GetValid(column->GetScalar(column->length() - 1)); + Record.BlobRange.Size = data.size(); + } +}; + +} diff --git a/ydb/core/tx/columnshard/engines/storage/chunks/data.cpp b/ydb/core/tx/columnshard/engines/storage/chunks/data.cpp new file mode 100644 index 000000000000..373c88a765fa --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/chunks/data.cpp @@ -0,0 +1,11 @@ +#include "data.h" +#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> + +namespace NKikimr::NOlap::NChunks { + +void TPortionIndexChunk::DoAddIntoPortionBeforeBlob(const TBlobRangeLink16& bRange, TPortionInfo& portionInfo) const { + AFL_VERIFY(!bRange.IsValid()); + portionInfo.AddIndex(TIndexChunk(GetEntityId(), GetChunkIdxVerified(), RecordsCount, RawBytes, bRange)); +} + +} // namespace NKikimr::NOlap::NIndexes \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/storage/chunks/data.h b/ydb/core/tx/columnshard/engines/storage/chunks/data.h new file mode 100644 index 000000000000..dfa9189e560b --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/chunks/data.h @@ -0,0 +1,48 @@ +#pragma once +#include <ydb/core/tx/columnshard/splitter/abstract/chunks.h> + +namespace NKikimr::NOlap::NChunks { + +class TPortionIndexChunk: public IPortionDataChunk { +private: + using TBase = IPortionDataChunk; + const ui32 RecordsCount; + const ui64 RawBytes; + const TString Data; +protected: + virtual const TString& DoGetData() const override { + return Data; + } + virtual TString DoDebugString() const override { + return ""; + } + virtual std::vector<std::shared_ptr<IPortionDataChunk>> DoInternalSplit(const TColumnSaver& /*saver*/, const std::shared_ptr<NColumnShard::TSplitterCounters>& /*counters*/, const std::vector<ui64>& /*splitSizes*/) const override { + return {}; + } + virtual bool DoIsSplittable() const override { + return false; + } + virtual std::optional<ui32> DoGetRecordsCount() const override { + return RecordsCount; + } + virtual std::shared_ptr<arrow::Scalar> DoGetFirstScalar() const override { + return nullptr; + } + virtual std::shared_ptr<arrow::Scalar> DoGetLastScalar() const override { + return nullptr; + } + virtual void DoAddIntoPortionBeforeBlob(const TBlobRangeLink16& bRange, TPortionInfo& portionInfo) const override; + virtual std::shared_ptr<IPortionDataChunk> DoCopyWithAnotherBlob(TString&& data, const TSimpleColumnInfo& /*columnInfo*/) const override { + return std::make_shared<TPortionIndexChunk>(GetChunkAddressVerified(), RecordsCount, RawBytes, std::move(data)); + } +public: + TPortionIndexChunk(const TChunkAddress& address, const ui32 recordsCount, const ui64 rawBytes, const TString& data) + : TBase(address.GetColumnId(), address.GetChunkIdx()) + , RecordsCount(recordsCount) + , RawBytes(rawBytes) + , Data(data) + { + } + +}; +} // namespace NKikimr::NOlap::NChunks \ No newline at end of file diff --git a/ydb/core/tx/columnshard/engines/storage/chunks/null_column.cpp b/ydb/core/tx/columnshard/engines/storage/chunks/null_column.cpp new file mode 100644 index 000000000000..9aa56e56eda3 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/chunks/null_column.cpp @@ -0,0 +1,5 @@ +#include "null_column.h" + +namespace NKikimr::NOlap::NChunks { + +} diff --git a/ydb/core/tx/columnshard/engines/storage/chunks/null_column.h b/ydb/core/tx/columnshard/engines/storage/chunks/null_column.h new file mode 100644 index 000000000000..3b5f078fcd08 --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/chunks/null_column.h @@ -0,0 +1,51 @@ +#pragma once +#include <ydb/core/tx/columnshard/splitter/chunks.h> +#include <ydb/core/tx/columnshard/counters/splitter.h> +#include <ydb/core/tx/columnshard/splitter/abstract/chunk_meta.h> +#include <ydb/core/formats/arrow/simple_arrays_cache.h> + +namespace NKikimr::NOlap::NChunks { + +class TNullChunkPreparation: public IPortionColumnChunk { +private: + using TBase = IPortionColumnChunk; + const ui32 RecordsCount; + TString Data; +protected: + virtual std::vector<std::shared_ptr<IPortionDataChunk>> DoInternalSplitImpl(const TColumnSaver& /*saver*/, const std::shared_ptr<NColumnShard::TSplitterCounters>& /*counters*/, + const std::vector<ui64>& /*splitSizes*/) const override { + AFL_VERIFY(false); + return {}; + } + virtual const TString& DoGetData() const override { + return Data; + } + virtual ui32 DoGetRecordsCountImpl() const override { + return RecordsCount; + } + virtual TString DoDebugString() const override { + return TStringBuilder() << "rc=" << RecordsCount << ";data_size=" << Data.size() << ";"; + } + virtual TSimpleChunkMeta DoBuildSimpleChunkMeta() const override { + AFL_VERIFY(false); + return TSimpleChunkMeta(nullptr, false, false); + } + virtual std::shared_ptr<arrow::Scalar> DoGetFirstScalar() const override { + return nullptr; + } + virtual std::shared_ptr<arrow::Scalar> DoGetLastScalar() const override { + return nullptr; + } + +public: + TNullChunkPreparation(const ui32 columnId, const ui32 recordsCount, const std::shared_ptr<arrow::Field>& f, const TColumnSaver& saver) + : TBase(columnId) + , RecordsCount(recordsCount) + , Data(saver.Apply(NArrow::TThreadSimpleArraysCache::GetNull(f->type(), recordsCount), f)) + { + Y_ABORT_UNLESS(RecordsCount); + SetChunkIdx(0); + } +}; + +} diff --git a/ydb/core/tx/columnshard/engines/storage/chunks/ya.make b/ydb/core/tx/columnshard/engines/storage/chunks/ya.make new file mode 100644 index 000000000000..d61554bd6f0c --- /dev/null +++ b/ydb/core/tx/columnshard/engines/storage/chunks/ya.make @@ -0,0 +1,17 @@ +LIBRARY() + +SRCS( + data.cpp + column.cpp + null_column.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/splitter/abstract + ydb/core/tx/columnshard/splitter + ydb/core/tx/columnshard/engines/scheme/versions + ydb/core/tx/columnshard/engines/portions + ydb/core/tx/columnshard/counters +) + +END() diff --git a/ydb/core/tx/columnshard/engines/storage/granule.cpp b/ydb/core/tx/columnshard/engines/storage/granule.cpp index aac2d2bdd1b7..54e7668a1419 100644 --- a/ydb/core/tx/columnshard/engines/storage/granule.cpp +++ b/ydb/core/tx/columnshard/engines/storage/granule.cpp @@ -1,18 +1,11 @@ #include "granule.h" #include "storage.h" -#include <ydb/library/actors/core/log.h> #include "optimizer/lbuckets/optimizer.h" -namespace NKikimr::NOlap { - -TGranuleAdditiveSummary::ECompactionClass TGranuleMeta::GetCompactionType(const TCompactionLimits& limits) const { - return GetAdditiveSummary().GetCompactionClass( - limits, ModificationLastTime, TMonotonic::Now()); -} +#include <ydb/library/actors/core/log.h> +#include <ydb/core/tx/columnshard/columnshard_schema.h> -ui64 TGranuleMeta::Size() const { - return GetAdditiveSummary().GetGranuleSize(); -} +namespace NKikimr::NOlap { void TGranuleMeta::UpsertPortion(const TPortionInfo& info) { AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "upsert_portion")("portion", info.DebugString())("path_id", GetPathId()); @@ -50,21 +43,11 @@ bool TGranuleMeta::ErasePortion(const ui64 portion) { return true; } -void TGranuleMeta::AddColumnRecord(const TIndexInfo& indexInfo, const TPortionInfo& portion, const TColumnRecord& rec, const NKikimrTxColumnShard::TIndexPortionMeta* portionMeta) { - auto it = Portions.find(portion.GetPortion()); - AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "add_column_record")("portion_info", portion.DebugString())("record", rec.DebugString()); - if (it == Portions.end()) { - Y_ABORT_UNLESS(portion.Records.empty()); - auto portionNew = std::make_shared<TPortionInfo>(portion); - it = Portions.emplace(portion.GetPortion(), portionNew).first; - } else { - AFL_VERIFY(it->second->IsEqualWithSnapshots(portion))("self", it->second->DebugString())("item", portion.DebugString()); - } - it->second->AddRecord(indexInfo, rec, portionMeta); - - if (portionMeta) { - it->second->InitOperator(Owner->GetStoragesManager()->InitializePortionOperator(*it->second), false); - } +void TGranuleMeta::AddColumnRecordOnLoad(const TIndexInfo& indexInfo, const TPortionInfo& portion, const TColumnChunkLoadContext& rec, const NKikimrTxColumnShard::TIndexPortionMeta* portionMeta) { + std::shared_ptr<TPortionInfo> pInfo = UpsertPortionOnLoad(portion); + TColumnRecord cRecord(pInfo->RegisterBlobId(rec.GetBlobRange().GetBlobId()), rec, indexInfo.GetColumnFeaturesVerified(rec.GetAddress().GetColumnId())); + AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "AddColumnRecordOnLoad")("portion_info", portion.DebugString())("record", cRecord.DebugString()); + pInfo->AddRecord(indexInfo, cRecord, portionMeta); } void TGranuleMeta::OnAfterChangePortion(const std::shared_ptr<TPortionInfo> portionAfter, NStorageOptimizer::IOptimizerPlanner::TModificationGuard* modificationGuard) { @@ -78,17 +61,20 @@ void TGranuleMeta::OnAfterChangePortion(const std::shared_ptr<TPortionInfo> port } else { OptimizerPlanner->StartModificationGuard().AddPortion(portionAfter); } + NActualizer::TAddExternalContext context(HasAppData() ? AppDataVerified().TimeProvider->Now() : TInstant::Now(), Portions); + ActualizationIndex->AddPortion(portionAfter, context); } + Stats->OnAddPortion(*portionAfter); } if (!!AdditiveSummaryCache) { - auto g = AdditiveSummaryCache->StartEdit(Counters); if (portionAfter && !portionAfter->HasRemoveSnapshot()) { + auto g = AdditiveSummaryCache->StartEdit(Counters); g.AddPortion(*portionAfter); } } ModificationLastTime = TMonotonic::Now(); - Owner->UpdateGranuleInfo(*this); + Stats->UpdateGranuleInfo(*this); } void TGranuleMeta::OnBeforeChangePortion(const std::shared_ptr<TPortionInfo> portionBefore) { @@ -107,11 +93,13 @@ void TGranuleMeta::OnBeforeChangePortion(const std::shared_ptr<TPortionInfo> por PortionInfoGuard.OnDropPortion(portionBefore); if (!portionBefore->HasRemoveSnapshot()) { OptimizerPlanner->StartModificationGuard().RemovePortion(portionBefore); + ActualizationIndex->RemovePortion(portionBefore); } + Stats->OnRemovePortion(*portionBefore); } if (!!AdditiveSummaryCache) { - auto g = AdditiveSummaryCache->StartEdit(Counters); if (portionBefore && !portionBefore->HasRemoveSnapshot()) { + auto g = AdditiveSummaryCache->StartEdit(Counters); g.RemovePortion(*portionBefore); } } @@ -121,14 +109,14 @@ void TGranuleMeta::OnCompactionFinished() { AllowInsertionFlag = false; Y_ABORT_UNLESS(Activity.erase(EActivity::GeneralCompaction)); AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "OnCompactionFinished")("info", DebugString()); - Owner->UpdateGranuleInfo(*this); + Stats->UpdateGranuleInfo(*this); } void TGranuleMeta::OnCompactionFailed(const TString& reason) { AllowInsertionFlag = false; Y_ABORT_UNLESS(Activity.erase(EActivity::GeneralCompaction)); AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "OnCompactionFailed")("reason", reason)("info", DebugString()); - Owner->UpdateGranuleInfo(*this); + Stats->UpdateGranuleInfo(*this); } void TGranuleMeta::OnCompactionStarted() { @@ -158,14 +146,14 @@ const NKikimr::NOlap::TGranuleAdditiveSummary& TGranuleMeta::GetAdditiveSummary( return *AdditiveSummaryCache; } -TGranuleMeta::TGranuleMeta(const ui64 pathId, std::shared_ptr<TGranulesStorage> owner, const NColumnShard::TGranuleDataCounters& counters, const TVersionedIndex& versionedIndex) +TGranuleMeta::TGranuleMeta(const ui64 pathId, const TGranulesStorage& owner, const NColumnShard::TGranuleDataCounters& counters, const TVersionedIndex& versionedIndex) : PathId(pathId) - , Owner(owner) , Counters(counters) - , PortionInfoGuard(Owner->GetCounters().BuildPortionBlobsGuard()) + , PortionInfoGuard(owner.GetCounters().BuildPortionBlobsGuard()) + , Stats(owner.GetStats()) { - Y_ABORT_UNLESS(Owner); - OptimizerPlanner = std::make_shared<NStorageOptimizer::NBuckets::TOptimizerPlanner>(PathId, owner->GetStoragesManager(), versionedIndex.GetLastSchema()->GetIndexInfo().GetReplaceKey()); + OptimizerPlanner = std::make_shared<NStorageOptimizer::NBuckets::TOptimizerPlanner>(PathId, owner.GetStoragesManager(), versionedIndex.GetLastSchema()->GetIndexInfo().GetReplaceKey()); + ActualizationIndex = std::make_shared<NActualizer::TGranuleActualizationIndex>(PathId, versionedIndex); } @@ -173,4 +161,17 @@ bool TGranuleMeta::InCompaction() const { return Activity.contains(EActivity::GeneralCompaction); } +std::shared_ptr<TPortionInfo> TGranuleMeta::UpsertPortionOnLoad(const TPortionInfo& portion) { + auto it = Portions.find(portion.GetPortion()); + AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "UpsertPortionOnLoad")("portion_info", portion.DebugString()); + if (it == Portions.end()) { + Y_ABORT_UNLESS(portion.Records.empty()); + auto portionNew = std::make_shared<TPortionInfo>(portion); + it = Portions.emplace(portion.GetPortion(), portionNew).first; + } else { + AFL_VERIFY(it->second->IsEqualWithSnapshots(portion))("self", it->second->DebugString())("item", portion.DebugString()); + } + return it->second; +} + } // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/storage/granule.h b/ydb/core/tx/columnshard/engines/storage/granule.h index b7423485094d..7113b69256a7 100644 --- a/ydb/core/tx/columnshard/engines/storage/granule.h +++ b/ydb/core/tx/columnshard/engines/storage/granule.h @@ -1,13 +1,19 @@ #pragma once -#include <ydb/core/base/appdata.h> +#include "optimizer/abstract/optimizer.h" +#include "actualizer/index/index.h" + #include <ydb/core/tx/columnshard/counters/engine_logs.h> #include <ydb/core/tx/columnshard/engines/column_engine.h> #include <ydb/core/tx/columnshard/engines/portion_info.h> -#include "optimizer/abstract/optimizer.h" + +#include <ydb/core/base/appdata.h> +#include <ydb/core/formats/arrow/reader/position.h> namespace NKikimr::NOlap { class TGranulesStorage; +class TGranulesStat; +class TColumnChunkLoadContext; class TDataClassSummary: public NColumnShard::TBaseGranuleDataClassSummary { private: @@ -19,8 +25,9 @@ class TDataClassSummary: public NColumnShard::TBaseGranuleDataClassSummary { } void AddPortion(const TPortionInfo& info) { - const auto sizes = info.BlobsSizes(); - PortionsSize += sizes.first; + ColumnPortionsSize += info.GetColumnBlobBytes(); + TotalPortionsSize += info.GetTotalBlobBytes(); + MetadataMemoryPortionsSize += info.GetMetadataMemorySize(); RecordsCount += info.NumRows(); ++PortionsCount; @@ -35,9 +42,12 @@ class TDataClassSummary: public NColumnShard::TBaseGranuleDataClassSummary { } void RemovePortion(const TPortionInfo& info) { - const auto sizes = info.BlobsSizes(); - PortionsSize -= sizes.first; - Y_ABORT_UNLESS(PortionsSize >= 0); + MetadataMemoryPortionsSize -= info.GetMetadataMemorySize(); + Y_ABORT_UNLESS(MetadataMemoryPortionsSize >= 0); + ColumnPortionsSize -= info.GetColumnBlobBytes(); + Y_ABORT_UNLESS(ColumnPortionsSize >= 0); + TotalPortionsSize -= info.GetTotalBlobBytes(); + Y_ABORT_UNLESS(TotalPortionsSize >= 0); RecordsCount -= info.NumRows(); Y_ABORT_UNLESS(RecordsCount >= 0); --PortionsCount; @@ -60,48 +70,17 @@ class TGranuleAdditiveSummary { TDataClassSummary Compacted; friend class TGranuleMeta; public: - enum class ECompactionClass: ui32 { - Split = 100, - Internal = 50, - WaitInternal = 30, - NoCompaction = 0 - }; - - ECompactionClass GetCompactionClass(const TCompactionLimits& limits, const TMonotonic lastModification, const TMonotonic now) const { - if (GetActivePortionsCount() <= 1) { - return ECompactionClass::NoCompaction; - } - if ((i64)GetGranuleSize() >= limits.GranuleSizeForOverloadPrevent) - { - return ECompactionClass::Split; - } - - if (now - lastModification > TDuration::Seconds(limits.InGranuleCompactSeconds)) { - if (GetInserted().GetPortionsCount()) { - return ECompactionClass::Internal; - } - } else { - if (GetInserted().GetPortionsCount() > 1 && - (GetInserted().GetPortionsSize() >= limits.GranuleIndexedPortionsSizeLimit || - GetInserted().GetPortionsCount() >= limits.GranuleIndexedPortionsCountLimit)) { - return ECompactionClass::Internal; - } - if (GetInserted().GetPortionsCount()) { - return ECompactionClass::WaitInternal; - } - } - - return ECompactionClass::NoCompaction; - } - const TDataClassSummary& GetInserted() const { return Inserted; } const TDataClassSummary& GetCompacted() const { return Compacted; } + ui64 GetMetadataMemoryPortionsSize() const { + return Inserted.GetMetadataMemoryPortionsSize() + Compacted.GetMetadataMemoryPortionsSize(); + } ui64 GetGranuleSize() const { - return Inserted.GetPortionsSize() + Compacted.GetPortionsSize(); + return Inserted.GetTotalPortionsSize() + Compacted.GetTotalPortionsSize(); } ui64 GetActivePortionsCount() const { return Inserted.GetPortionsCount() + Compacted.GetPortionsCount(); @@ -165,10 +144,11 @@ class TGranuleMeta: TNonCopyable { std::set<EActivity> Activity; mutable bool AllowInsertionFlag = false; const ui64 PathId; - std::shared_ptr<TGranulesStorage> Owner; const NColumnShard::TGranuleDataCounters Counters; NColumnShard::TEngineLogsCounters::TPortionsInfoGuard PortionInfoGuard; + std::shared_ptr<TGranulesStat> Stats; std::shared_ptr<NStorageOptimizer::IOptimizerPlanner> OptimizerPlanner; + std::shared_ptr<NActualizer::TGranuleActualizationIndex> ActualizationIndex; std::map<NArrow::TReplaceKey, THashMap<ui64, std::shared_ptr<TPortionInfo>>> PortionsByPK; void OnBeforeChangePortion(const std::shared_ptr<TPortionInfo> portionBefore); @@ -176,11 +156,35 @@ class TGranuleMeta: TNonCopyable { void OnAdditiveSummaryChange() const; YDB_READONLY(TMonotonic, LastCompactionInstant, TMonotonic::Zero()); public: + void RefreshTiering(const std::optional<TTiering>& tiering) { + NActualizer::TAddExternalContext context(HasAppData() ? AppDataVerified().TimeProvider->Now() : TInstant::Now(), Portions); + ActualizationIndex->RefreshTiering(tiering, context); + } + + void RefreshScheme() { + NActualizer::TAddExternalContext context(HasAppData() ? AppDataVerified().TimeProvider->Now() : TInstant::Now(), Portions); + ActualizationIndex->RefreshScheme(context); + } + + void ReturnToIndexes(const THashSet<ui64>& portionIds) { + NActualizer::TAddExternalContext context(HasAppData() ? AppDataVerified().TimeProvider->Now() : TInstant::Now(), Portions); + context.SetPortionExclusiveGuarantee(false); + for (auto&& p : portionIds) { + auto it = Portions.find(p); + AFL_VERIFY(it != Portions.end()); + ActualizationIndex->AddPortion(it->second, context); + } + } + + void StartActualizationIndex() { + ActualizationIndex->Start(); + } + NJson::TJsonValue OptimizerSerializeToJson() const { return OptimizerPlanner->SerializeToJsonVisual(); } - std::vector<NIndexedReader::TSortableBatchPosition> GetBucketPositions() const { + std::vector<NArrow::NMerger::TSortableBatchPosition> GetBucketPositions() const { return OptimizerPlanner->GetBucketPositions(); } @@ -188,17 +192,33 @@ class TGranuleMeta: TNonCopyable { LastCompactionInstant = TMonotonic::Now(); } - std::shared_ptr<TColumnEngineChanges> GetOptimizationTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> self, const THashSet<TPortionAddress>& busyPortions) const { - return OptimizerPlanner->GetOptimizationTask(limits, self, busyPortions); + void BuildActualizationTasks(NActualizer::TTieringProcessContext& context) const { + NActualizer::TExternalTasksContext extTasks(Portions); + ActualizationIndex->ExtractActualizationTasks(context, extTasks); + } + + std::shared_ptr<TColumnEngineChanges> GetOptimizationTask(std::shared_ptr<TGranuleMeta> self, const std::shared_ptr<NDataLocks::TManager>& locksManager) const { + return OptimizerPlanner->GetOptimizationTask(self, locksManager); } const std::map<NArrow::TReplaceKey, THashMap<ui64, std::shared_ptr<TPortionInfo>>>& GroupOrderedPortionsByPK() const { return PortionsByPK; } + std::map<ui32, std::shared_ptr<TPortionInfo>> GetPortionsOlderThenSnapshot(const TSnapshot& border) const { + std::map<ui32, std::shared_ptr<TPortionInfo>> result; + for (auto&& i : Portions) { + if (i.second->RecordSnapshotMin() <= border) { + result.emplace(i.first, i.second); + } + } + return result; + } + void OnAfterPortionsLoad() { auto g = OptimizerPlanner->StartModificationGuard(); for (auto&& i : Portions) { + i.second->OnAfterLoad(); OnAfterChangePortion(i.second, &g); } } @@ -214,27 +234,22 @@ class TGranuleMeta: TNonCopyable { return result; } - TGranuleAdditiveSummary::ECompactionClass GetCompactionType(const TCompactionLimits& limits) const; const TGranuleAdditiveSummary& GetAdditiveSummary() const; NStorageOptimizer::TOptimizationPriority GetCompactionPriority() const { return OptimizerPlanner->GetUsefulMetric(); } + bool IsLockedOptimizer(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const { + return OptimizerPlanner->IsLocked(dataLocksManager); + } + void ActualizeOptimizer(const TInstant currentInstant) const { if (currentInstant - OptimizerPlanner->GetActualizationInstant() > TDuration::Seconds(1)) { OptimizerPlanner->Actualize(currentInstant); } } - bool NeedCompaction(const TCompactionLimits& limits) const { - if (InCompaction() || Empty()) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "granule_skipped_by_state")("path_id", GetPathId())("granule_size", Size()); - return false; - } - return GetCompactionType(limits) != TGranuleAdditiveSummary::ECompactionClass::NoCompaction; - } - bool InCompaction() const; bool IsErasable() const { @@ -257,12 +272,22 @@ class TGranuleMeta: TNonCopyable { ; } - void AddColumnRecord(const TIndexInfo& indexInfo, const TPortionInfo& portion, const TColumnRecord& rec, const NKikimrTxColumnShard::TIndexPortionMeta* portionMeta); + std::shared_ptr<TPortionInfo> UpsertPortionOnLoad(const TPortionInfo& portion); + + void AddColumnRecordOnLoad(const TIndexInfo& indexInfo, const TPortionInfo& portion, const TColumnChunkLoadContext& rec, const NKikimrTxColumnShard::TIndexPortionMeta* portionMeta); const THashMap<ui64, std::shared_ptr<TPortionInfo>>& GetPortions() const { return Portions; } + std::vector<std::shared_ptr<TPortionInfo>> GetPortionsVector() const { + std::vector<std::shared_ptr<TPortionInfo>> result; + for (auto&& i : Portions) { + result.emplace_back(i.second); + } + return result; + } + ui64 GetPathId() const { return PathId; } @@ -273,7 +298,7 @@ class TGranuleMeta: TNonCopyable { return *it->second; } - std::shared_ptr<TPortionInfo> GetPortionPtr(const ui64 portion) const { + std::shared_ptr<TPortionInfo> GetPortionOptional(const ui64 portion) const { auto it = Portions.find(portion); if (it == Portions.end()) { return nullptr; @@ -283,11 +308,9 @@ class TGranuleMeta: TNonCopyable { bool ErasePortion(const ui64 portion); - explicit TGranuleMeta(const ui64 pathId, std::shared_ptr<TGranulesStorage> owner, const NColumnShard::TGranuleDataCounters& counters, const TVersionedIndex& versionedIndex); + explicit TGranuleMeta(const ui64 pathId, const TGranulesStorage& owner, const NColumnShard::TGranuleDataCounters& counters, const TVersionedIndex& versionedIndex); bool Empty() const noexcept { return Portions.empty(); } - - ui64 Size() const; }; } // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.cpp b/ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.cpp index 4c6265d14850..6394b18b319c 100644 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.cpp +++ b/ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.cpp @@ -3,16 +3,9 @@ namespace NKikimr::NOlap::NStorageOptimizer { -std::shared_ptr<TColumnEngineChanges> IOptimizerPlanner::GetOptimizationTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions) const { +std::shared_ptr<TColumnEngineChanges> IOptimizerPlanner::GetOptimizationTask(std::shared_ptr<TGranuleMeta> granule, const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const { NActors::TLogContextGuard g(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("path_id", PathId)); - auto result = DoGetOptimizationTask(limits, granule, busyPortions); - if (!!result) { - auto portions = result->GetTouchedPortions(); - for (auto&& i : portions) { - AFL_VERIFY(!busyPortions.contains(i))("portion_address", i.DebugString()); - } - } - return result; + return DoGetOptimizationTask(granule, dataLocksManager); } } // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.h b/ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.h index 9e9d1e222e3f..8090de1dee6d 100644 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.h +++ b/ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.h @@ -1,13 +1,15 @@ #pragma once #include <ydb/core/tx/columnshard/engines/portions/portion_info.h> -#include <ydb/core/formats/arrow/reader/read_filter_merger.h> #include <library/cpp/object_factory/object_factory.h> #include <ydb/core/base/appdata.h> +#include <ydb/core/formats/arrow/reader/position.h> namespace NKikimr::NOlap { -struct TCompactionLimits; class TGranuleMeta; class TColumnEngineChanges; +namespace NDataLocks { +class TManager; +} } namespace NKikimr::NOlap::NStorageOptimizer { @@ -55,7 +57,7 @@ class IOptimizerPlanner { YDB_READONLY(TInstant, ActualizationInstant, TInstant::Zero()); protected: virtual void DoModifyPortions(const THashMap<ui64, std::shared_ptr<TPortionInfo>>& add, const THashMap<ui64, std::shared_ptr<TPortionInfo>>& remove) = 0; - virtual std::shared_ptr<TColumnEngineChanges> DoGetOptimizationTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions) const = 0; + virtual std::shared_ptr<TColumnEngineChanges> DoGetOptimizationTask(std::shared_ptr<TGranuleMeta> granule, const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const = 0; virtual TOptimizationPriority DoGetUsefulMetric() const = 0; virtual void DoActualize(const TInstant currentInstant) = 0; virtual TString DoDebugString() const { @@ -64,7 +66,8 @@ class IOptimizerPlanner { virtual NJson::TJsonValue DoSerializeToJsonVisual() const { return NJson::JSON_NULL; } - + virtual bool DoIsLocked(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const = 0; + public: using TFactory = NObjectFactory::TObjectFactory<IOptimizerPlanner, TString>; IOptimizerPlanner(const ui64 pathId) @@ -115,7 +118,10 @@ class IOptimizerPlanner { return DoDebugString(); } - virtual std::vector<NIndexedReader::TSortableBatchPosition> GetBucketPositions() const = 0; + virtual std::vector<NArrow::NMerger::TSortableBatchPosition> GetBucketPositions() const = 0; + bool IsLocked(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const { + return DoIsLocked(dataLocksManager); + } NJson::TJsonValue SerializeToJsonVisual() const { return DoSerializeToJsonVisual(); @@ -126,7 +132,7 @@ class IOptimizerPlanner { DoModifyPortions(add, remove); } - std::shared_ptr<TColumnEngineChanges> GetOptimizationTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions) const; + std::shared_ptr<TColumnEngineChanges> GetOptimizationTask(std::shared_ptr<TGranuleMeta> granule, const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const; TOptimizationPriority GetUsefulMetric() const { return DoGetUsefulMetric(); } diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/blob_size.cpp b/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/blob_size.cpp deleted file mode 100644 index da20b6420059..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/blob_size.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "blob_size.h" -#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> -#include <ydb/core/tx/columnshard/engines/changes/general_compaction.h> - -namespace NKikimr::NOlap::NStorageOptimizer { - -std::shared_ptr<NKikimr::NOlap::TColumnEngineChanges> TBlobsWithSizeLimit::BuildMergeTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions) const { - if (PortionsSize > (i64)SizeLimitToMerge || PortionsCount > CountLimitToMerge) { - i64 currentSum = 0; - std::vector<std::shared_ptr<TPortionInfo>> portions; - std::optional<TString> tierName; - for (auto&& i : Portions) { - for (auto&& c : i.second) { - if (busyPortions.contains(c.second->GetAddress())) { - continue; - } - if (c.second->GetMeta().GetTierName() && (!tierName || *tierName < c.second->GetMeta().GetTierName())) { - tierName = c.second->GetMeta().GetTierName(); - } - currentSum += c.second->GetBlobBytes(); - portions.emplace_back(c.second); - if (currentSum > (i64)32 * 1024 * 1024) { - break; - } - } - if (currentSum > (i64)32 * 1024 * 1024) { - break; - } - } - if (currentSum > SizeLimitToMerge || PortionsCount > CountLimitToMerge) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "take_granule_with_small")("portions", portions.size())("current_sum", currentSum); - TSaverContext saverContext(StoragesManager->GetOperator(tierName.value_or(IStoragesManager::DefaultStorageId)), StoragesManager); - return std::make_shared<NCompaction::TGeneralCompactColumnEngineChanges>(limits.GetSplitSettings(), granule, portions, saverContext); - } else { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "take_granule_with_small")("skip", "not_enough_data"); - } - } else { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "take_granule_with_small")("event", "skip_by_condition"); - } - return nullptr; -} - -} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/blob_size.h b/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/blob_size.h deleted file mode 100644 index df4eb4d35807..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/blob_size.h +++ /dev/null @@ -1,145 +0,0 @@ -#pragma once -#include "counters.h" -#include <ydb/core/formats/arrow/replace_key.h> -#include <ydb/library/accessor/accessor.h> -#include <ydb/core/tx/columnshard/splitter/settings.h> -#include <ydb/core/tx/columnshard/blobs_action/abstract/write.h> -#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> - -namespace NKikimr::NOlap::NStorageOptimizer { - -class TBlobsWithSizeLimit { -private: - YDB_READONLY(ui64, SizeLimit, 0); - YDB_READONLY(i64, SizeLimitToMerge, (i64)2 * 1024 * 1024); - YDB_READONLY(i64, CountLimitToMerge, 8); - YDB_READONLY(i64, PortionsSize, 0); - YDB_READONLY(i64, PortionsCount, 0); - std::map<NArrow::TReplaceKey, std::map<ui64, std::shared_ptr<TPortionInfo>>> Portions; - std::shared_ptr<TCounters> Counters; - std::shared_ptr<IStoragesManager> StoragesManager; -public: - TString DebugString() const { - return TStringBuilder() - << "p_count=" << PortionsCount << ";" - << "p_count_by_key=" << Portions.size() << ";" - ; - } - - TBlobsWithSizeLimit(const ui64 limit, const std::shared_ptr<TCounters>& counters, const std::shared_ptr<IStoragesManager>& storagesManager) - : SizeLimit(limit) - , Counters(counters) - , StoragesManager(storagesManager) - { - - } - - std::shared_ptr<TColumnEngineChanges> BuildMergeTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions) const; - - void AddPortion(const std::shared_ptr<TPortionInfo>& portion) { - AFL_VERIFY(portion->BlobsBytes() < SizeLimit); - AFL_VERIFY(Portions[portion->IndexKeyStart()].emplace(portion->GetPortion(), portion).second); - PortionsSize += portion->BlobsBytes(); - ++PortionsCount; - Counters->OnAddSmallPortion(); - } - - void RemovePortion(const std::shared_ptr<TPortionInfo>& portion) { - auto it = Portions.find(portion->IndexKeyStart()); - AFL_VERIFY(it != Portions.end()); - AFL_VERIFY(it->second.erase(portion->GetPortion())); - if (!it->second.size()) { - Portions.erase(it); - } - PortionsSize -= portion->BlobsBytes(); - AFL_VERIFY(PortionsSize >= 0); - --PortionsCount; - AFL_VERIFY(PortionsCount >= 0); - Counters->OnRemoveSmallPortion(); - } - - std::optional<TOptimizationPriority> GetWeight() const { - Y_ABORT_UNLESS(Counters->GetSmallCounts() == PortionsCount); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("portions_opt_count", PortionsCount)("counter", (ui64)Counters->SmallPortionsByGranule.get()); - if (PortionsSize > SizeLimitToMerge || PortionsCount > CountLimitToMerge) { - return TOptimizationPriority::Critical(PortionsCount); - } else { - return {}; - } - } -}; - -class TBlobsBySize { -private: - std::map<ui64, TBlobsWithSizeLimit> BlobsBySizeLimit; -public: - TString DebugString() const { - TStringBuilder sb; - sb << "("; - for (auto&& i : BlobsBySizeLimit) { - sb << "(" << i.first << ":" << i.second.DebugString() << ");"; - } - sb << ")"; - return sb; - } - - void AddPortion(const std::shared_ptr<TPortionInfo>& portion) { - auto it = BlobsBySizeLimit.upper_bound(portion->GetBlobBytes()); - if (it != BlobsBySizeLimit.end()) { - it->second.AddPortion(portion); - } - } - - void RemovePortion(const std::shared_ptr<TPortionInfo>& portion) { - auto it = BlobsBySizeLimit.upper_bound(portion->GetBlobBytes()); - if (it != BlobsBySizeLimit.end()) { - it->second.RemovePortion(portion); - } - } - - std::optional<TOptimizationPriority> GetWeight() const { - std::optional<TOptimizationPriority> result; - for (auto&& i : BlobsBySizeLimit) { - auto w = i.second.GetWeight(); - if (!w) { - continue; - } - if (!result || *result < *w) { - result = w; - } - } - return result; - } - - const TBlobsWithSizeLimit* GetMaxWeightLimiter() const { - std::optional<TOptimizationPriority> resultWeight; - const TBlobsWithSizeLimit* result = nullptr; - for (auto&& i : BlobsBySizeLimit) { - auto w = i.second.GetWeight(); - if (!w) { - continue; - } - if (!resultWeight || *resultWeight < *w) { - resultWeight = w; - result = &i.second; - } - } - return result; - } - - std::shared_ptr<TColumnEngineChanges> BuildMergeTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions) const { - auto* limiter = GetMaxWeightLimiter(); - if (!limiter) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("fail", "limiter absent"); - return nullptr; - } - return limiter->BuildMergeTask(limits, granule, busyPortions); - } - - TBlobsBySize(const std::shared_ptr<TCounters>& counters, const std::shared_ptr<IStoragesManager>& storagesManager) { -// BlobsBySizeLimit.emplace(512 * 1024, TBlobsWithSizeLimit(512 * 1024, counters, storagesManager)); - BlobsBySizeLimit.emplace(1024 * 1024, TBlobsWithSizeLimit(1024 * 1024, counters, storagesManager)); - } -}; - -} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/counters.cpp b/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/counters.cpp deleted file mode 100644 index a8c1f6920c1a..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/counters.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "counters.h" - -namespace NKikimr::NOlap::NStorageOptimizer { - -} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/counters.h b/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/counters.h deleted file mode 100644 index e43f9acda67a..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/counters.h +++ /dev/null @@ -1,98 +0,0 @@ -#pragma once -#include <ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.h> -#include <ydb/core/formats/arrow/replace_key.h> -#include <ydb/library/accessor/accessor.h> -#include <ydb/core/tx/columnshard/splitter/settings.h> -#include <ydb/core/tx/columnshard/counters/engine_logs.h> - -namespace NKikimr::NOlap::NStorageOptimizer { - -class TGlobalCounters: public NColumnShard::TCommonCountersOwner { -private: - using TBase = NColumnShard::TCommonCountersOwner; - NMonitoring::TDynamicCounters::TCounterPtr SmallPortionsCount; - std::shared_ptr<NColumnShard::TIncrementalHistogram> HistogramOverlappedIntervalsCount; - std::shared_ptr<NColumnShard::TIncrementalHistogram> HistogramOverlappedIntervalsPackedSizeCount; - std::shared_ptr<NColumnShard::TIncrementalHistogram> HistogramOverlappedIntervalsRawSizeCount; - std::shared_ptr<NColumnShard::TValueAggregationAgent> SmallPortionsCountByGranule; -public: - TGlobalCounters() - : TBase("IntervalsStorageOptimizer") { - SmallPortionsCountByGranule = TBase::GetValueAutoAggregations("Granule/SmallPortions/Count"); - SmallPortionsCount = TBase::GetValue("SmallPortions/Count"); - - const std::set<i64> borders = {0, 1, 2, 4, 8, 16, 32, 64}; - HistogramOverlappedIntervalsCount = std::make_shared<NColumnShard::TIncrementalHistogram>("IntervalsStorageOptimizer", "OverlappedIntervals/Count", "", borders); - HistogramOverlappedIntervalsPackedSizeCount = std::make_shared<NColumnShard::TIncrementalHistogram>("IntervalsStorageOptimizer", "OverlappedIntervals/Size/Packed", "", borders); - HistogramOverlappedIntervalsRawSizeCount = std::make_shared<NColumnShard::TIncrementalHistogram>("IntervalsStorageOptimizer", "OverlappedIntervals/Size/Raw", "", borders); - } - - static std::shared_ptr<NColumnShard::TValueAggregationClient> BuildClientSmallPortionsAggregation() { - return Singleton<TGlobalCounters>()->SmallPortionsCountByGranule->GetClient(); - } - - static std::shared_ptr<NColumnShard::TIncrementalHistogram::TGuard> BuildGuardIntervalsOverlapping() { - return Singleton<TGlobalCounters>()->HistogramOverlappedIntervalsCount->BuildGuard(); - } - - static std::shared_ptr<NColumnShard::TIncrementalHistogram::TGuard> BuildGuardIntervalsPackedSizeOverlapping() { - return Singleton<TGlobalCounters>()->HistogramOverlappedIntervalsPackedSizeCount->BuildGuard(); - } - - static std::shared_ptr<NColumnShard::TIncrementalHistogram::TGuard> BuildGuardIntervalsRawSizeOverlapping() { - return Singleton<TGlobalCounters>()->HistogramOverlappedIntervalsRawSizeCount->BuildGuard(); - } - - static std::shared_ptr<NColumnShard::TValueGuard> BuildSmallPortionsGuard() { - return std::make_shared<NColumnShard::TValueGuard>(Singleton<TGlobalCounters>()->SmallPortionsCount); - } - -}; - -class TCounters { -private: - std::shared_ptr<NColumnShard::TIncrementalHistogram::TGuard> IntervalsGuard; - std::shared_ptr<NColumnShard::TIncrementalHistogram::TGuard> IntervalsPackedSizeGuard; - std::shared_ptr<NColumnShard::TIncrementalHistogram::TGuard> IntervalsRawSizeGuard; - std::shared_ptr<NColumnShard::TValueGuard> SmallPortionsCount; -public: - std::shared_ptr<NColumnShard::TValueAggregationClient> SmallPortionsByGranule; - i64 GetSmallCounts() const { - return SmallPortionsByGranule->GetValueSimple(); - } - - TCounters() { - IntervalsGuard = TGlobalCounters::BuildGuardIntervalsOverlapping(); - IntervalsPackedSizeGuard = TGlobalCounters::BuildGuardIntervalsPackedSizeOverlapping(); - IntervalsRawSizeGuard = TGlobalCounters::BuildGuardIntervalsRawSizeOverlapping(); - SmallPortionsCount = TGlobalCounters::BuildSmallPortionsGuard(); - SmallPortionsByGranule = TGlobalCounters::BuildClientSmallPortionsAggregation(); - } - - void OnRemoveIntervalsCount(const ui32 count, const ui64 rawSize, const ui64 packedSize) { - IntervalsGuard->Sub(count, 1); - IntervalsPackedSizeGuard->Sub(count, packedSize); - IntervalsRawSizeGuard->Sub(count, rawSize); - } - - void OnAddIntervalsCount(const ui32 count, const ui64 rawSize, const ui64 packedSize) { - IntervalsGuard->Add(count, 1); - IntervalsPackedSizeGuard->Add(count, packedSize); - IntervalsRawSizeGuard->Add(count, rawSize); - } - - void OnAddSmallPortion() { - SmallPortionsCount->Add(1); - SmallPortionsByGranule->Add(1); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("add_opt_count", SmallPortionsByGranule->GetValueSimple())("counter", (ui64)SmallPortionsByGranule.get()); - } - - void OnRemoveSmallPortion() { - SmallPortionsCount->Sub(1); - SmallPortionsByGranule->Remove(1); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("remove_opt_count", SmallPortionsByGranule->GetValueSimple())("counter", (ui64)SmallPortionsByGranule.get()); - } - -}; - -} diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/optimizer.cpp b/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/optimizer.cpp deleted file mode 100644 index a31ebe4eb6a6..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/optimizer.cpp +++ /dev/null @@ -1,212 +0,0 @@ -#include "optimizer.h" -#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> -#include <ydb/core/tx/columnshard/counters/common/owner.h> -#include <ydb/core/tx/columnshard/counters/engine_logs.h> -#include <ydb/core/tx/columnshard/engines/changes/general_compaction.h> - -namespace NKikimr::NOlap::NStorageOptimizer { - -std::vector<std::shared_ptr<TPortionInfo>> TIntervalsOptimizerPlanner::GetPortionsForIntervalStartedIn(const NArrow::TReplaceKey& keyStart, const ui32 countExpectation) const { - std::vector<std::shared_ptr<TPortionInfo>> result; - auto it = Positions.find(keyStart); - AFL_VERIFY(it != Positions.end()); - THashSet<ui64> portionsCurrentlyClosed; - auto itReverse = make_reverse_iterator(it); - AFL_VERIFY(itReverse != Positions.rbegin()); - --itReverse; - for (; itReverse != Positions.rend(); ++itReverse) { - for (auto&& i : itReverse->second.GetPositions()) { - if (i.first.GetIsStart()) { - if (!portionsCurrentlyClosed.erase(i.first.GetPortionId())) { - result.emplace_back(i.second.GetPortionPtr()); - } - } else { - AFL_VERIFY(portionsCurrentlyClosed.emplace(i.first.GetPortionId()).second); - } - } - if (result.size() == countExpectation) { - return result; - } - } - AFL_VERIFY(false)("result.size()", result.size())("expectation", countExpectation); - return result; -} - -std::shared_ptr<TColumnEngineChanges> TIntervalsOptimizerPlanner::DoGetOptimizationTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions) const { - if (auto result = SizeProblemBlobs.BuildMergeTask(limits, granule, busyPortions)) { - return result; - } - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("skip", "no_small_portion_tasks"); - return nullptr; - if (RangedSegments.empty()) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "no_ranged_segments"); - return nullptr; - } - auto& topSegment = **RangedSegments.rbegin()->second.begin(); - auto& features = topSegment.GetFeatures(); - std::vector<std::shared_ptr<TPortionInfo>> portions = GetPortionsForIntervalStartedIn(topSegment.GetPosition(), features.GetPortionsCount()); - - if (portions.size() <= 1) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "take_granule_skip")("features", features.DebugJson().GetStringRobust())("reason", "one_portion"); - return nullptr; - } - - std::optional<TString> tierName; - for (auto&& i : portions) { - if (i->GetMeta().GetTierName() && (!tierName || *tierName < i->GetMeta().GetTierName())) { - tierName = i->GetMeta().GetTierName(); - } - if (busyPortions.contains(i->GetAddress())) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "take_granule_skip")("features", features.DebugJson().GetStringRobust()) - ("count", features.GetPortionsCount())("reason", "busy_portion")("portion_address", i->GetAddress().DebugString()); - return nullptr; - } - } - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "take_granule")("features", features.DebugJson().GetStringRobust())("count", features.GetPortionsCount()); - - TSaverContext saverContext(StoragesManager->GetOperator(tierName.value_or(IStoragesManager::DefaultStorageId)), StoragesManager); - return std::make_shared<NCompaction::TGeneralCompactColumnEngineChanges>(limits.GetSplitSettings(), granule, portions, saverContext); -} - -void TIntervalsOptimizerPlanner::RemovePortion(const std::shared_ptr<TPortionInfo>& info) { - AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "remove_portion")("portion_id", info->GetPortion()); - auto itStart = Positions.find(info->IndexKeyStart()); - auto itFinish = Positions.find(info->IndexKeyEnd()); - Y_ABORT_UNLESS(itStart != Positions.end()); - Y_ABORT_UNLESS(itFinish != Positions.end()); - if (itStart == itFinish) { - RemoveRanged(itStart->second); - itStart->second.RemoveSummary(info); - AddRanged(itStart->second); - if (itStart->second.RemoveStart(info) || itStart->second.RemoveFinish(info)) { - RemoveRanged(itStart->second); - Positions.erase(itStart); - } - } else { - for (auto it = itStart; it != itFinish; ++it) { - RemoveRanged(it->second); - it->second.RemoveSummary(info); - AddRanged(it->second); - } - if (itStart->second.RemoveStart(info)) { - RemoveRanged(itStart->second); - Positions.erase(itStart); - } - if (itFinish->second.RemoveFinish(info)) { - RemoveRanged(itFinish->second); - Positions.erase(itFinish); - } - } - AFL_VERIFY(RangedSegments.empty() == Positions.empty())("rs_size", RangedSegments.size())("p_size", Positions.size()); -} - -void TIntervalsOptimizerPlanner::AddPortion(const std::shared_ptr<TPortionInfo>& info) { - AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "add_portion")("portion_id", info->GetPortion()); - auto itStart = Positions.find(info->IndexKeyStart()); - if (itStart == Positions.end()) { - itStart = Positions.emplace(info->IndexKeyStart(), TBorderPositions(info->IndexKeyStart())).first; - if (itStart != Positions.begin()) { - auto itStartCopy = itStart; - --itStartCopy; - itStart->second.CopyFrom(itStartCopy->second); - AddRanged(itStart->second); - } - } - auto itEnd = Positions.find(info->IndexKeyEnd()); - if (itEnd == Positions.end()) { - itEnd = Positions.emplace(info->IndexKeyEnd(), TBorderPositions(info->IndexKeyEnd())).first; - Y_ABORT_UNLESS(itEnd != Positions.begin()); - auto itEndCopy = itEnd; - --itEndCopy; - itEnd->second.CopyFrom(itEndCopy->second); - AddRanged(itEnd->second); - itStart = Positions.find(info->IndexKeyStart()); - } - Y_ABORT_UNLESS(itStart != Positions.end()); - Y_ABORT_UNLESS(itEnd != Positions.end()); - itStart->second.AddStart(info); - itEnd->second.AddFinish(info); - if (itStart != itEnd) { - for (auto it = itStart; it != itEnd; ++it) { - RemoveRanged(it->second); - it->second.AddSummary(info); - AFL_VERIFY(!!it->second.GetFeatures()); - AddRanged(it->second); - } - } else { - RemoveRanged(itStart->second); - itStart->second.AddSummary(info); - AddRanged(itStart->second); - } - AFL_VERIFY(RangedSegments.empty() == Positions.empty())("rs_size", RangedSegments.size())("p_size", Positions.size()); -} - -void TIntervalsOptimizerPlanner::DoModifyPortions(const THashMap<ui64, std::shared_ptr<TPortionInfo>>& add, const THashMap<ui64, std::shared_ptr<TPortionInfo>>& remove) { - for (auto&& [_, i] : remove) { - SizeProblemBlobs.RemovePortion(i); - RemovePortion(i); - } - for (auto&& [_, i] : add) { - SizeProblemBlobs.AddPortion(i); - AddPortion(i); - } -} - -void TIntervalsOptimizerPlanner::RemoveRanged(const TBorderPositions& data) { - if (!!data.GetFeatures()) { - Counters->OnRemoveIntervalsCount(data.GetFeatures().GetPortionsCount(), data.GetFeatures().GetPortionsRawWeight(), data.GetFeatures().GetPortionsWeight()); - auto itFeatures = RangedSegments.find(data.GetFeatures()); - Y_ABORT_UNLESS(itFeatures->second.erase(&data)); - if (itFeatures->second.empty()) { - RangedSegments.erase(itFeatures); - } - } -} - -void TIntervalsOptimizerPlanner::AddRanged(const TBorderPositions& data) { - if (!!data.GetFeatures()) { - Counters->OnAddIntervalsCount(data.GetFeatures().GetPortionsCount(), data.GetFeatures().GetPortionsRawWeight(), data.GetFeatures().GetPortionsWeight()); - Y_ABORT_UNLESS(RangedSegments[data.GetFeatures()].emplace(&data).second); - } -} - -TIntervalsOptimizerPlanner::TIntervalsOptimizerPlanner(const ui64 pathId, const std::shared_ptr<IStoragesManager>& storagesManager) - : TBase(pathId) - , StoragesManager(storagesManager) - , Counters(std::make_shared<TCounters>()) - , SizeProblemBlobs(Counters, storagesManager) -{ -} - -TOptimizationPriority TIntervalsOptimizerPlanner::DoGetUsefulMetric() const { - auto res = SizeProblemBlobs.GetWeight(); - if (!!res) { - AFL_VERIFY(RangedSegments.size())("positions", Positions.size())("sizes", SizeProblemBlobs.DebugString()); - return *res; - } - if (RangedSegments.empty()) { - return TOptimizationPriority::Zero(); - } - auto& topSegment = **RangedSegments.rbegin()->second.begin(); - auto& topFeaturesTask = topSegment.GetFeatures(); - return TOptimizationPriority::Optimization(topFeaturesTask.GetUsefulMetric()); -} - -TString TIntervalsOptimizerPlanner::DoDebugString() const { - NJson::TJsonValue result = NJson::JSON_MAP; - auto& positions = result.InsertValue("positions", NJson::JSON_ARRAY); - for (auto&& i : Positions) { - positions.AppendValue(i.second.DebugJson()); - } - return result.GetStringRobust(); -} - -void TIntervalsOptimizerPlanner::TBorderPositions::AddSummary(const std::shared_ptr<TPortionInfo>& info) { - Features.Add(info); -} - -void TIntervalsOptimizerPlanner::TBorderPositions::RemoveSummary(const std::shared_ptr<TPortionInfo>& info) { - Features.Remove(info); -} - -} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/optimizer.h b/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/optimizer.h deleted file mode 100644 index 80f3a5edc583..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/optimizer.h +++ /dev/null @@ -1,256 +0,0 @@ -#pragma once -#include "optimizer.h" -#include "counters.h" -#include "blob_size.h" -#include <ydb/core/formats/arrow/replace_key.h> -#include <ydb/library/accessor/accessor.h> -#include <ydb/core/tx/columnshard/splitter/settings.h> -#include <ydb/core/tx/columnshard/blobs_action/abstract/write.h> -#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> - -namespace NKikimr::NOlap::NStorageOptimizer { - -class TCounters; - -class TSegmentPosition { -private: - std::shared_ptr<TPortionInfo> Portion; - const NArrow::TReplaceKey& Position; - const bool IsStartFlag; - TSegmentPosition(const std::shared_ptr<TPortionInfo>& data, const bool start) - : Portion(data) - , Position(start ? Portion->IndexKeyStart() : Portion->IndexKeyEnd()) - , IsStartFlag(start) - { - - } -public: - - NJson::TJsonValue DebugJson() const { - NJson::TJsonValue result = NJson::JSON_MAP; - result.InsertValue("is_start", IsStartFlag); - return result; - } - - TString DebugString() const { - return TStringBuilder() << - (IsStartFlag ? "ADD" : "REMOVE") << ":" << - Position.DebugString() << ";" << - Portion->DebugString() << ";" - ; - } - - std::shared_ptr<TPortionInfo> GetPortionPtr() const { - return Portion; - } - - const TPortionInfo& GetPortion() const { - return *Portion; - } - - const NArrow::TReplaceKey& GetPosition() const { - return Position; - } - - static TSegmentPosition Start(const std::shared_ptr<TPortionInfo>& data) { - return TSegmentPosition(data, true); - } - - static TSegmentPosition Finish(const std::shared_ptr<TPortionInfo>& data) { - return TSegmentPosition(data, false); - } - - bool operator<(const TSegmentPosition& item) const { - return Portion->GetPortion() < item.Portion->GetPortion(); - } -}; - -class TIntervalFeatures { -private: - YDB_READONLY(i32, PortionsCount, 0); - YDB_READONLY(i32, RecordsCount, 0); - YDB_READONLY(i64, PortionsWeight, 0); - YDB_READONLY(i64, PortionsRawWeight, 0); - YDB_READONLY(i64, SmallPortionsWeight, 0); - YDB_READONLY(i64, SmallPortionsCount, 0); -public: - - NJson::TJsonValue DebugJson() const { - NJson::TJsonValue result = NJson::JSON_MAP; - result.InsertValue("p_count", PortionsCount); - result.InsertValue("p_weight", PortionsWeight); - result.InsertValue("p_raw_weight", PortionsRawWeight); - result.InsertValue("sp_count", SmallPortionsCount); - result.InsertValue("sp_weight", SmallPortionsWeight); - result.InsertValue("r_count", RecordsCount); - return result; - } - - i64 GetUsefulMetric() const { - if (PortionsCount == 1 || PortionsWeight == 0) { - return 0; - } - return (i64)10000 * PortionsCount / (PortionsWeight * 1e-6); - } - - double GetUsefulKff() const { - if (PortionsCount == 0 || PortionsWeight == 0) { - return Max<double>(); - } - Y_ABORT_UNLESS(PortionsWeight); - return 1.0 * GetUsefulMetric() / PortionsWeight; - } - - void Add(const std::shared_ptr<TPortionInfo>& info) { - AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "add_portion_in_summary")("portion_id", info->GetPortion())("count", GetPortionsCount())("this", (ui64)this); - ++PortionsCount; - const i64 portionBytes = info->BlobsBytes(); - PortionsWeight += portionBytes; - PortionsRawWeight += info->RawBytesSum(); - RecordsCount += info->NumRows(); - if ((i64)portionBytes < TSplitSettings().GetMinBlobSize()) { - ++SmallPortionsCount; - SmallPortionsWeight += portionBytes; - } - } - - void Remove(const std::shared_ptr<TPortionInfo>& info) { - AFL_TRACE(NKikimrServices::TX_COLUMNSHARD)("event", "remove_portion_from_summary")("portion_id", info->GetPortion())("count", GetPortionsCount())("this", (ui64)this); - Y_ABORT_UNLESS(--PortionsCount >= 0); - const i64 portionBytes = info->BlobsBytes(); - PortionsWeight -= portionBytes; - Y_ABORT_UNLESS(PortionsWeight >= 0); - PortionsRawWeight -= info->RawBytesSum(); - Y_ABORT_UNLESS(PortionsRawWeight >= 0); - RecordsCount -= info->NumRows(); - Y_ABORT_UNLESS(RecordsCount >= 0); - if ((i64)portionBytes < TSplitSettings().GetMinBlobSize()) { - Y_ABORT_UNLESS(--SmallPortionsCount >= 0); - SmallPortionsWeight -= portionBytes; - Y_ABORT_UNLESS(SmallPortionsWeight >= 0); - } - } - - bool operator!() const { - return !PortionsCount; - } - - bool operator<(const TIntervalFeatures& item) const { - return GetUsefulMetric() < item.GetUsefulMetric(); - } - bool IsEnoughWeight() const { - return GetPortionsRawWeight() > TSplitSettings().GetMinBlobSize() * 10; - } - -}; - -class TIntervalsOptimizerPlanner: public IOptimizerPlanner { -private: - static ui64 LimitSmallBlobsMerge; - static ui64 LimitSmallBlobDetect; - std::shared_ptr<IStoragesManager> StoragesManager; - - std::shared_ptr<TCounters> Counters; - - using TBase = IOptimizerPlanner; - - class TPortionIntervalPoint { - private: - YDB_READONLY(ui64, PortionId, 0); - YDB_READONLY(bool, IsStart, false); - public: - TPortionIntervalPoint(const ui64 portionId, const bool isStart) - : PortionId(portionId) - , IsStart(isStart) - { - - } - - bool operator<(const TPortionIntervalPoint& item) const { - return std::tie(PortionId, IsStart) < std::tie(item.PortionId, item.IsStart); - } - }; - - class TBorderPositions { - private: - const NArrow::TReplaceKey Position; - std::map<TPortionIntervalPoint, TSegmentPosition> Positions; - YDB_READONLY_DEF(TIntervalFeatures, Features); - public: - TBorderPositions(const NArrow::TReplaceKey& position) - : Position(position) - { - - } - - const std::map<TPortionIntervalPoint, TSegmentPosition>& GetPositions() const { - return Positions; - } - - NJson::TJsonValue DebugJson() const { - NJson::TJsonValue result = NJson::JSON_MAP; - result.InsertValue("p", Position.DebugString()); - auto& segments = result.InsertValue("segments", NJson::JSON_ARRAY); - for (auto&& i : Positions) { - segments.AppendValue(i.second.DebugJson()); - } - result.InsertValue("features", Features.DebugJson()); - return result; - } - - void CopyFrom(const TBorderPositions& source) { - Features = source.Features; - } - - const NArrow::TReplaceKey& GetPosition() const { - return Position; - } - - void AddStart(const std::shared_ptr<TPortionInfo>& info) { - Y_ABORT_UNLESS(Positions.emplace(TPortionIntervalPoint(info->GetPortion(), true), TSegmentPosition::Start(info)).second); - } - void AddFinish(const std::shared_ptr<TPortionInfo>& info) { - Y_ABORT_UNLESS(Positions.emplace(TPortionIntervalPoint(info->GetPortion(), false), TSegmentPosition::Finish(info)).second); - } - bool RemoveStart(const std::shared_ptr<TPortionInfo>& info) { - Y_ABORT_UNLESS(Positions.erase(TPortionIntervalPoint(info->GetPortion(), true))); - return Positions.empty(); - } - bool RemoveFinish(const std::shared_ptr<TPortionInfo>& info) { - Y_ABORT_UNLESS(Positions.erase(TPortionIntervalPoint(info->GetPortion(), false))); - return Positions.empty(); - } - void AddSummary(const std::shared_ptr<TPortionInfo>& info); - void RemoveSummary(const std::shared_ptr<TPortionInfo>& info); - }; - - std::map<TIntervalFeatures, std::set<const TBorderPositions*>> RangedSegments; - - using TPositions = std::map<NArrow::TReplaceKey, TBorderPositions>; - TPositions Positions; - TBlobsBySize SizeProblemBlobs; - - void RemovePortion(const std::shared_ptr<TPortionInfo>& info); - void AddPortion(const std::shared_ptr<TPortionInfo>& info); - - void RemoveRanged(const TBorderPositions& data); - void AddRanged(const TBorderPositions& data); - - bool RemoveSmallPortion(const std::shared_ptr<TPortionInfo>& info); - - bool AddSmallPortion(const std::shared_ptr<TPortionInfo>& info); - - std::vector<std::shared_ptr<TPortionInfo>> GetPortionsForIntervalStartedIn(const NArrow::TReplaceKey& keyStart, const ui32 countExpectation) const; - -protected: - virtual void DoModifyPortions(const THashMap<ui64, std::shared_ptr<TPortionInfo>>& add, const THashMap<ui64, std::shared_ptr<TPortionInfo>>& remove) override; - virtual std::shared_ptr<TColumnEngineChanges> DoGetOptimizationTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions) const override; - - virtual TOptimizationPriority DoGetUsefulMetric() const override; - virtual TString DoDebugString() const override; - -public: - TIntervalsOptimizerPlanner(const ui64 pathId, const std::shared_ptr<IStoragesManager>& storagesManager); -}; - -} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/ya.make b/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/ya.make deleted file mode 100644 index f76c42447ab7..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/intervals/ya.make +++ /dev/null @@ -1,16 +0,0 @@ -LIBRARY() - -SRCS( - optimizer.cpp - blob_size.cpp - counters.cpp -) - -PEERDIR( - contrib/libs/apache/arrow - ydb/core/protos - ydb/core/formats/arrow - ydb/core/tx/columnshard/engines/changes/abstract -) - -END() diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/counters.cpp b/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/counters.cpp index 146a8700def1..f6e4cca64311 100644 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/counters.cpp +++ b/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/counters.cpp @@ -1,5 +1,5 @@ #include "counters.h" -namespace NKikimr::NOlap::NStorageOptimizer::NBuckets { +namespace NKikimr::NOlap::NActualizer { } diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/counters.h b/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/counters.h index 9ab62e8f8801..08e9b51fc59b 100644 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/counters.h +++ b/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/counters.h @@ -39,13 +39,13 @@ class TPortionCategoryCounters { void AddPortion(const std::shared_ptr<TPortionInfo>& p) { RecordsCount->Add(p->NumRows()); Count->Add(1); - Bytes->Add(p->GetBlobBytes()); + Bytes->Add(p->GetTotalBlobBytes()); } void RemovePortion(const std::shared_ptr<TPortionInfo>& p) { RecordsCount->Remove(p->NumRows()); Count->Remove(1); - Bytes->Remove(p->GetBlobBytes()); + Bytes->Remove(p->GetTotalBlobBytes()); } }; diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/optimizer.h b/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/optimizer.h index 9ce196f5a792..148dd5da4a26 100644 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/optimizer.h +++ b/ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets/optimizer.h @@ -3,6 +3,7 @@ #include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> #include <ydb/core/tx/columnshard/common/limits.h> +#include <ydb/core/tx/columnshard/data_locks/manager/manager.h> #include <ydb/core/tx/columnshard/engines/changes/general_compaction.h> #include <ydb/core/tx/columnshard/engines/changes/abstract/abstract.h> #include <ydb/core/tx/columnshard/engines/portions/portion_info.h> @@ -13,6 +14,7 @@ #include <util/generic/hash.h> #include <util/system/types.h> #include <util/generic/hash_set.h> +#include <ydb/core/formats/arrow/reader/position.h> namespace NKikimr::NOlap::NStorageOptimizer::NBuckets { @@ -42,12 +44,12 @@ class TSimplePortionsGroupInfo { } void AddPortion(const std::shared_ptr<TPortionInfo>& p) { - Bytes += p->GetBlobBytes(); + Bytes += p->GetTotalBlobBytes(); Count += 1; RecordsCount += p->NumRows(); } void RemovePortion(const std::shared_ptr<TPortionInfo>& p) { - Bytes -= p->GetBlobBytes(); + Bytes -= p->GetTotalBlobBytes(); Count -= 1; RecordsCount -= p->NumRows(); AFL_VERIFY(Bytes >= 0); @@ -200,6 +202,44 @@ class TPortionsPool { } public: + void InitRuntimeFeature() const { + for (auto&& f : Futures) { + for (auto&& p : f.second) { + p.second->RemoveRuntimeFeature(TPortionInfo::ERuntimeFeature::Optimized); + } + } + for (auto&& i : PreActuals) { + i.second->RemoveRuntimeFeature(TPortionInfo::ERuntimeFeature::Optimized); + } + for (auto&& i : Actuals) { + i.second->RemoveRuntimeFeature(TPortionInfo::ERuntimeFeature::Optimized); + } + } + + bool IsLocked(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const { + for (auto&& f : Futures) { + for (auto&& p : f.second) { + if (auto lockInfo = dataLocksManager->IsLocked(*p.second)) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "optimization_locked")("reason", *lockInfo); + return true; + } + } + } + for (auto&& i : PreActuals) { + if (auto lockInfo = dataLocksManager->IsLocked(*i.second)) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "optimization_locked")("reason", *lockInfo); + return true; + } + } + for (auto&& i : Actuals) { + if (auto lockInfo = dataLocksManager->IsLocked(*i.second)) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "optimization_locked")("reason", *lockInfo); + return true; + } + } + return false; + } + bool Validate(const std::shared_ptr<TPortionInfo>& portion) const { if (portion) { AFL_VERIFY(!PreActuals.contains(portion->GetPortionId())); @@ -379,6 +419,7 @@ class TPortionsPool { } void Add(const std::shared_ptr<TPortionInfo>& portion, const TInstant now) { + portion->RemoveRuntimeFeature(TPortionInfo::ERuntimeFeature::Optimized); auto portionMaxSnapshotInstant = TInstant::MilliSeconds(portion->RecordSnapshotMax().GetPlanStep()); if (now - portionMaxSnapshotInstant < FutureDetector) { AFL_VERIFY(AddFuture(portion)); @@ -393,6 +434,7 @@ class TPortionsPool { } bool Remove(const std::shared_ptr<TPortionInfo>& portion) Y_WARN_UNUSED_RESULT { + portion->AddRuntimeFeature(TPortionInfo::ERuntimeFeature::Optimized); if (RemovePreActual(portion)) { return true; } @@ -515,7 +557,7 @@ class TPortionsPool { /* const ui64 count = BucketInfo.GetCount() + ((mainPortion && !isFinal) ? 1 : 0); // const ui64 recordsCount = BucketInfo.GetRecordsCount() + ((mainPortion && !isFinal) ? mainPortion->GetRecordsCount() : 0); - const ui64 sumBytes = BucketInfo.GetBytes() + ((mainPortion && !isFinal) ? mainPortion->GetBlobBytes() : 0); + const ui64 sumBytes = BucketInfo.GetBytes() + ((mainPortion && !isFinal) ? mainPortion->GetTotalBlobBytes() : 0); if (count <= 1) { return 0; } @@ -532,7 +574,7 @@ class TPortionsPool { /* const ui64 count = BucketInfo.GetCount() + ((mainPortion && !isFinal) ? 1 : 0); // const ui64 recordsCount = BucketInfo.GetRecordsCount() + ((mainPortion && !isFinal) ? mainPortion->GetRecordsCount() : 0); - const ui64 sumBytes = BucketInfo.GetBytes() + ((mainPortion && !isFinal) ? mainPortion->GetBlobBytes() : 0); + const ui64 sumBytes = BucketInfo.GetBytes() + ((mainPortion && !isFinal) ? mainPortion->GetTotalBlobBytes() : 0); if (count > 1 && (sumBytes > 32 * 1024 * 1024 || !isFinal || count > 100)) { return (10000000000.0 * count - sumBytes) * (isFinal ? 1 : 10); } else { @@ -542,7 +584,7 @@ class TPortionsPool { const ui64 count = BucketInfo.GetCount() + ((mainPortion && !isFinal) ? 1 : 0); const ui64 recordsCount = BucketInfo.GetRecordsCount() + ((mainPortion && !isFinal) ? mainPortion->GetRecordsCount() : 0); - const ui64 sumBytes = BucketInfo.GetBytes() + ((mainPortion && !isFinal) ? mainPortion->GetBlobBytes() : 0); + const ui64 sumBytes = BucketInfo.GetBytes() + ((mainPortion && !isFinal) ? mainPortion->GetTotalBlobBytes() : 0); if (NYDBTest::TControllers::GetColumnShardController()->GetCompactionControl() == NYDBTest::EOptimizerCompactionWeightControl::Disable) { return 0; } @@ -582,6 +624,7 @@ class TPortionsBucket: public TMoveOnly { private: std::shared_ptr<TPortionInfo> MainPortion; const std::shared_ptr<TCounters> Counters; + mutable std::optional<i64> LastWeight; TPortionsPool Others; std::optional<NArrow::TReplaceKey> NextBorder; @@ -597,6 +640,15 @@ class TPortionsBucket: public TMoveOnly { bool Validate() const { return Others.Validate(MainPortion); } + + void RebuildOptimizedFeature(const TInstant currentInstant) const { + Others.InitRuntimeFeature(); + if (!MainPortion) { + return; + } + MainPortion->InitRuntimeFeature(TPortionInfo::ERuntimeFeature::Optimized, Others.IsEmpty() && currentInstant > MainPortion->RecordSnapshotMax().GetPlanInstant() + + NYDBTest::TControllers::GetColumnShardController()->GetLagForCompactionBeforeTierings(TDuration::Minutes(60))); + } public: class TModificationGuard: TNonCopyable { private: @@ -631,6 +683,16 @@ class TPortionsBucket: public TMoveOnly { } }; + bool IsLocked(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const { + if (MainPortion) { + if (auto lockInfo = dataLocksManager->IsLocked(*MainPortion)) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "optimization_locked")("reason", *lockInfo); + return true; + } + } + return Others.IsLocked(dataLocksManager); + } + bool IsEmpty() const { return !MainPortion && Others.IsEmpty(); } @@ -699,11 +761,20 @@ class TPortionsBucket: public TMoveOnly { } i64 GetWeight() const { - return Others.GetWeight(MainPortion, !NextBorder); + LastWeight = Others.GetWeight(MainPortion, !NextBorder); + return *LastWeight; + } + + i64 GetLastWeight() const { + if (LastWeight) { + return *LastWeight; + } else { + return GetWeight(); + } } - std::shared_ptr<TColumnEngineChanges> BuildOptimizationTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, - const THashSet<TPortionAddress>& busyPortions, const NArrow::TReplaceKey* nextBorder, const std::shared_ptr<arrow::Schema>& primaryKeysSchema, + std::shared_ptr<TColumnEngineChanges> BuildOptimizationTask(std::shared_ptr<TGranuleMeta> granule, + const std::shared_ptr<NDataLocks::TManager>& locksManager, const NArrow::TReplaceKey* nextBorder, const std::shared_ptr<arrow::Schema>& primaryKeysSchema, const std::shared_ptr<IStoragesManager>& storagesManager) const { auto youngestPortion = GetYoungestPortion(nextBorder); @@ -743,26 +814,26 @@ class TPortionsBucket: public TMoveOnly { AFL_VERIFY(portions.size() > 1); ui64 size = 0; for (auto&& i : portions) { - size += i->GetBlobBytes(); - if (busyPortions.contains(i->GetAddress())) { + size += i->GetTotalBlobBytes(); + if (locksManager->IsLocked(*i)) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("info", Others.DebugString())("event", "skip_optimization")("reason", "busy"); return nullptr; } } AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("stop_instant", stopInstant)("size", size)("next", NextBorder ? NextBorder->DebugString() : "") ("count", portions.size())("info", Others.DebugString())("event", "start_optimization")("stop_point", stopPoint ? stopPoint->DebugString() : ""); - TSaverContext saverContext(storagesManager->GetOperator(IStoragesManager::DefaultStorageId), storagesManager); - auto result = std::make_shared<NCompaction::TGeneralCompactColumnEngineChanges>(limits.GetSplitSettings(), granule, portions, saverContext); + TSaverContext saverContext(storagesManager); + auto result = std::make_shared<NCompaction::TGeneralCompactColumnEngineChanges>(granule, portions, saverContext); if (MainPortion) { - NIndexedReader::TSortableBatchPosition pos(MainPortion->IndexKeyStart().ToBatch(primaryKeysSchema), 0, primaryKeysSchema->field_names(), {}, false); + NArrow::NMerger::TSortableBatchPosition pos(MainPortion->IndexKeyStart().ToBatch(primaryKeysSchema), 0, primaryKeysSchema->field_names(), {}, false); result->AddCheckPoint(pos, true, false); } if (!nextBorder && MainPortion) { - NIndexedReader::TSortableBatchPosition pos(MainPortion->IndexKeyEnd().ToBatch(primaryKeysSchema), 0, primaryKeysSchema->field_names(), {}, false); + NArrow::NMerger::TSortableBatchPosition pos(MainPortion->IndexKeyEnd().ToBatch(primaryKeysSchema), 0, primaryKeysSchema->field_names(), {}, false); result->AddCheckPoint(pos, true, false); } if (stopPoint) { - NIndexedReader::TSortableBatchPosition pos(stopPoint->ToBatch(primaryKeysSchema), 0, primaryKeysSchema->field_names(), {}, false); + NArrow::NMerger::TSortableBatchPosition pos(stopPoint->ToBatch(primaryKeysSchema), 0, primaryKeysSchema->field_names(), {}, false); result->AddCheckPoint(pos, false, false); } return result; @@ -800,6 +871,7 @@ class TPortionsBucket: public TMoveOnly { void Actualize(const TInstant currentInstant) { auto gChartsThis = StartModificationGuard(); Others.Actualize(currentInstant); + RebuildOptimizedFeature(currentInstant); } void SplitOthersWith(TPortionsBucket& dest) { @@ -838,7 +910,7 @@ class TPortionBuckets { } void RemoveBucketFromRating(const std::shared_ptr<TPortionsBucket>& bucket) { - auto it = BucketsByWeight.find(bucket->GetWeight()); + auto it = BucketsByWeight.find(bucket->GetLastWeight()); AFL_VERIFY(it != BucketsByWeight.end()); AFL_VERIFY(it->second.erase(bucket.get())); if (it->second.empty()) { @@ -917,6 +989,17 @@ class TPortionBuckets { AddBucketToRating(LeftBucket); } + bool IsLocked(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const { + if (BucketsByWeight.empty()) { + return false; + } + if (BucketsByWeight.rbegin()->second.empty()) { + return false; + } + const TPortionsBucket* bucketForOptimization = *BucketsByWeight.rbegin()->second.begin(); + return bucketForOptimization->IsLocked(dataLocksManager); + } + bool IsEmpty() const { return Buckets.empty() && LeftBucket->IsEmpty(); } @@ -944,7 +1027,7 @@ class TPortionBuckets { } void RemovePortion(const std::shared_ptr<TPortionInfo>& portion) { - if (portion->GetBlobBytes() < SmallPortionDetectSizeLimit) { + if (portion->GetTotalBlobBytes() < NYDBTest::TControllers::GetColumnShardController()->GetSmallPortionSizeDetector(SmallPortionDetectSizeLimit)) { Counters->SmallPortions->RemovePortion(portion); } if (!RemoveBucket(portion)) { @@ -952,34 +1035,33 @@ class TPortionBuckets { } } - std::shared_ptr<TColumnEngineChanges> BuildOptimizationTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions) const { + std::shared_ptr<TColumnEngineChanges> BuildOptimizationTask(std::shared_ptr<TGranuleMeta> granule, const std::shared_ptr<NDataLocks::TManager>& locksManager) const { AFL_VERIFY(BucketsByWeight.size()); if (!BucketsByWeight.rbegin()->first) { return nullptr; + } + AFL_VERIFY(BucketsByWeight.rbegin()->second.size()); + const TPortionsBucket* bucketForOptimization = *BucketsByWeight.rbegin()->second.begin(); + if (bucketForOptimization == LeftBucket.get()) { + if (Buckets.size()) { + return bucketForOptimization->BuildOptimizationTask(granule, locksManager, &Buckets.begin()->first, PrimaryKeysSchema, StoragesManager); + } else { + return bucketForOptimization->BuildOptimizationTask(granule, locksManager, nullptr, PrimaryKeysSchema, StoragesManager); + } } else { - AFL_VERIFY(BucketsByWeight.rbegin()->second.size()); - const TPortionsBucket* bucketForOptimization = *BucketsByWeight.rbegin()->second.begin(); - if (bucketForOptimization == LeftBucket.get()) { - if (Buckets.size()) { - return bucketForOptimization->BuildOptimizationTask(limits, granule, busyPortions, &Buckets.begin()->first, PrimaryKeysSchema, StoragesManager); - } else { - return bucketForOptimization->BuildOptimizationTask(limits, granule, busyPortions, nullptr, PrimaryKeysSchema, StoragesManager); - } + auto it = Buckets.find(bucketForOptimization->GetPortion()->IndexKeyStart()); + AFL_VERIFY(it != Buckets.end()); + ++it; + if (it != Buckets.end()) { + return bucketForOptimization->BuildOptimizationTask(granule, locksManager, &it->first, PrimaryKeysSchema, StoragesManager); } else { - auto it = Buckets.find(bucketForOptimization->GetPortion()->IndexKeyStart()); - AFL_VERIFY(it != Buckets.end()); - ++it; - if (it != Buckets.end()) { - return bucketForOptimization->BuildOptimizationTask(limits, granule, busyPortions, &it->first, PrimaryKeysSchema, StoragesManager); - } else { - return bucketForOptimization->BuildOptimizationTask(limits, granule, busyPortions, nullptr, PrimaryKeysSchema, StoragesManager); - } + return bucketForOptimization->BuildOptimizationTask(granule, locksManager, nullptr, PrimaryKeysSchema, StoragesManager); } } - } + } void AddPortion(const std::shared_ptr<TPortionInfo>& portion, const TInstant now) { - if (portion->GetBlobBytes() < SmallPortionDetectSizeLimit) { + if (portion->GetTotalBlobBytes() < NYDBTest::TControllers::GetColumnShardController()->GetSmallPortionSizeDetector(SmallPortionDetectSizeLimit)) { Counters->SmallPortions->AddPortion(portion); AddOther(portion, now); return; @@ -994,8 +1076,14 @@ class TPortionBuckets { } else { if (itFrom == Buckets.end()) { const TDuration freshness = now - TInstant::MilliSeconds(portion->RecordSnapshotMax().GetPlanStep()); - if (freshness < GetCommonFreshnessCheckDuration() || portion->GetMeta().GetProduced() == NPortion::EProduced::INSERTED) { - AddOther(portion, now); + if (Y_LIKELY(!NYDBTest::TControllers::GetColumnShardController()->NeedForceCompactionBacketsConstruction())) { + if (freshness < GetCommonFreshnessCheckDuration() || portion->GetMeta().GetProduced() == NPortion::EProduced::INSERTED) { + AddOther(portion, now); + return; + } + } + if (Buckets.empty()) { + AddBucket(portion); return; } } @@ -1008,10 +1096,10 @@ class TPortionBuckets { } } - std::vector<NIndexedReader::TSortableBatchPosition> GetBucketPositions() const { - std::vector<NIndexedReader::TSortableBatchPosition> result; + std::vector<NArrow::NMerger::TSortableBatchPosition> GetBucketPositions() const { + std::vector<NArrow::NMerger::TSortableBatchPosition> result; for (auto&& i : Buckets) { - NIndexedReader::TSortableBatchPosition pos(i.second->GetPortion()->IndexKeyStart().ToBatch(PrimaryKeysSchema), 0, PrimaryKeysSchema->field_names(), {}, false); + NArrow::NMerger::TSortableBatchPosition pos(i.second->GetPortion()->IndexKeyStart().ToBatch(PrimaryKeysSchema), 0, PrimaryKeysSchema->field_names(), {}, false); result.emplace_back(pos); } return result; @@ -1025,6 +1113,10 @@ class TOptimizerPlanner: public IOptimizerPlanner { TPortionBuckets Buckets; const std::shared_ptr<IStoragesManager> StoragesManager; protected: + virtual bool DoIsLocked(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const override { + return Buckets.IsLocked(dataLocksManager); + } + virtual void DoModifyPortions(const THashMap<ui64, std::shared_ptr<TPortionInfo>>& add, const THashMap<ui64, std::shared_ptr<TPortionInfo>>& remove) override { const TInstant now = TInstant::Now(); for (auto&& [_, i] : remove) { @@ -1046,13 +1138,14 @@ class TOptimizerPlanner: public IOptimizerPlanner { Buckets.AddPortion(i, now); } } - virtual std::shared_ptr<TColumnEngineChanges> DoGetOptimizationTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions) const override { - return Buckets.BuildOptimizationTask(limits, granule, busyPortions); + virtual std::shared_ptr<TColumnEngineChanges> DoGetOptimizationTask(std::shared_ptr<TGranuleMeta> granule, const std::shared_ptr<NDataLocks::TManager>& locksManager) const override { + return Buckets.BuildOptimizationTask(granule, locksManager); } virtual void DoActualize(const TInstant currentInstant) override { Buckets.Actualize(currentInstant); } + virtual TOptimizationPriority DoGetUsefulMetric() const override { if (Buckets.GetWeight()) { return TOptimizationPriority::Critical(Buckets.GetWeight()); @@ -1067,7 +1160,7 @@ class TOptimizerPlanner: public IOptimizerPlanner { return Buckets.SerializeToJson(); } public: - virtual std::vector<NIndexedReader::TSortableBatchPosition> GetBucketPositions() const override { + virtual std::vector<NArrow::NMerger::TSortableBatchPosition> GetBucketPositions() const override { return Buckets.GetBucketPositions(); } diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/levels/counters.cpp b/ydb/core/tx/columnshard/engines/storage/optimizer/levels/counters.cpp deleted file mode 100644 index 6004ce09169f..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/levels/counters.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "counters.h" - -namespace NKikimr::NOlap::NStorageOptimizer::NLevels { - -} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/levels/counters.h b/ydb/core/tx/columnshard/engines/storage/optimizer/levels/counters.h deleted file mode 100644 index c0c3e2ca3d2f..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/levels/counters.h +++ /dev/null @@ -1,107 +0,0 @@ -#pragma once -#include <ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.h> -#include <ydb/core/formats/arrow/replace_key.h> -#include <ydb/library/accessor/accessor.h> -#include <ydb/core/tx/columnshard/splitter/settings.h> -#include <ydb/core/tx/columnshard/counters/engine_logs.h> - -namespace NKikimr::NOlap::NStorageOptimizer::NLevels { - -class TGlobalCounters: public NColumnShard::TCommonCountersOwner { -private: - using TBase = NColumnShard::TCommonCountersOwner; - NMonitoring::TDynamicCounters::TCounterPtr SmallPortionsCount; - std::shared_ptr<NColumnShard::TValueAggregationAgent> SmallPortionsCountByGranule; - - std::shared_ptr<NColumnShard::TValueAggregationAgent> CriticalRecordsCount; - std::shared_ptr<NColumnShard::TValueAggregationAgent> NormalRecordsCount; - - std::shared_ptr<NColumnShard::TValueAggregationAgent> OldestCriticalActuality; -public: - TGlobalCounters() - : TBase("LevelsStorageOptimizer") - { - SmallPortionsCount = TBase::GetValue("SmallPortions/Count"); - CriticalRecordsCount = TBase::GetValueAutoAggregations("Granule/CriticalRecord/Count"); - NormalRecordsCount = TBase::GetValueAutoAggregations("Granule/NormalRecord/Count"); - OldestCriticalActuality = TBase::GetValueAutoAggregations("Granule/ActualityMs"); - SmallPortionsCountByGranule = TBase::GetValueAutoAggregations("Granule/SmallPortions/Count"); - } - - static std::shared_ptr<NColumnShard::TValueAggregationClient> BuildOldestCriticalActualityAggregation() { - return Singleton<TGlobalCounters>()->OldestCriticalActuality->GetClient(); - } - - static std::shared_ptr<NColumnShard::TValueAggregationClient> BuildClientSmallPortionsAggregation() { - return Singleton<TGlobalCounters>()->SmallPortionsCountByGranule->GetClient(); - } - - static std::shared_ptr<NColumnShard::TValueGuard> BuildSmallPortionsGuard() { - return std::make_shared<NColumnShard::TValueGuard>(Singleton<TGlobalCounters>()->SmallPortionsCount); - } - - static std::shared_ptr<NColumnShard::TValueAggregationClient> BuildCriticalRecordsCountAggregation() { - return Singleton<TGlobalCounters>()->CriticalRecordsCount->GetClient(); - } - - static std::shared_ptr<NColumnShard::TValueAggregationClient> BuildNormalRecordsCountAggregation() { - return Singleton<TGlobalCounters>()->NormalRecordsCount->GetClient(); - } - -}; - -class TCounters { -private: - std::shared_ptr<NColumnShard::TValueAggregationClient> CriticalRecordsCount; - std::shared_ptr<NColumnShard::TValueAggregationClient> NormalRecordsCount; - - std::shared_ptr<NColumnShard::TValueAggregationClient> OldestCriticalActuality; - - std::shared_ptr<NColumnShard::TValueGuard> SmallPortionsCount; - std::shared_ptr<NColumnShard::TValueAggregationClient> SmallPortionsByGranule; -public: - i64 GetSmallCounts() const { - return SmallPortionsByGranule->GetValueSimple(); - } - - TCounters() { - CriticalRecordsCount = TGlobalCounters::BuildCriticalRecordsCountAggregation(); - NormalRecordsCount = TGlobalCounters::BuildNormalRecordsCountAggregation(); - SmallPortionsCount = TGlobalCounters::BuildSmallPortionsGuard(); - SmallPortionsByGranule = TGlobalCounters::BuildClientSmallPortionsAggregation(); - OldestCriticalActuality = TGlobalCounters::BuildOldestCriticalActualityAggregation(); - } - - void OnMinProblemSnapshot(const TDuration d) { - OldestCriticalActuality->SetValue(d.MilliSeconds(), TInstant::Now() + TDuration::Seconds(10)); - } - - void OnAddCriticalCount(const ui32 count) { - CriticalRecordsCount->Add(count); - } - - void OnAddNormalCount(const ui32 count) { - NormalRecordsCount->Add(count); - } - - void OnRemoveCriticalCount(const ui32 count) { - CriticalRecordsCount->Remove(count); - } - - void OnRemoveNormalCount(const ui32 count) { - NormalRecordsCount->Remove(count); - } - - void OnAddSmallPortion() { - SmallPortionsCount->Add(1); - SmallPortionsByGranule->Add(1); - } - - void OnRemoveSmallPortion() { - SmallPortionsCount->Sub(1); - SmallPortionsByGranule->Remove(1); - } - -}; - -} diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/levels/optimizer.cpp b/ydb/core/tx/columnshard/engines/storage/optimizer/levels/optimizer.cpp deleted file mode 100644 index c78ef905041a..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/levels/optimizer.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "optimizer.h" - -namespace NKikimr::NOlap::NStorageOptimizer { - -} diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/levels/optimizer.h b/ydb/core/tx/columnshard/engines/storage/optimizer/levels/optimizer.h deleted file mode 100644 index f192ae5bb674..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/levels/optimizer.h +++ /dev/null @@ -1,523 +0,0 @@ -#pragma once -#include "counters.h" - -#include <ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.h> -#include <ydb/core/tx/columnshard/engines/changes/abstract/abstract.h> -#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> -#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> -#include <ydb/core/tx/columnshard/engines/changes/general_compaction.h> -#include <ydb/library/accessor/accessor.h> - -#include <util/generic/hash.h> -#include <util/system/types.h> -#include <util/generic/hash_set.h> - -namespace NKikimr::NOlap::NStorageOptimizer::NLevels { - -class TLevelInfo { -private: - THashMap<ui64, i64> Counters; - YDB_READONLY(i64, CriticalWeight, 0); - YDB_READONLY(i64, NormalizedWeight, 0); - THashSet<ui64> PortionIds; - std::shared_ptr<TCounters> Signals; -public: - TLevelInfo(std::shared_ptr<TCounters> counters) - : Signals(counters) - { - - } - - void AddPortion(const std::shared_ptr<TPortionInfo>& p, const ui32 refCount) { - if (p->GetBlobBytes() < (1 << 20)) { - Signals->OnAddSmallPortion(); - } - auto it = Counters.find(p->GetPortion()); - i64 refCountPred = 0; - if (it == Counters.end()) { - it = Counters.emplace(p->GetPortion(), refCount).first; - } else { - refCountPred = it->second; - it->second += refCount; - } - if (it->second == 1 && refCountPred == 0) { - NormalizedWeight += p->NumRows(); - Signals->OnAddNormalCount(p->NumRows()); - } else if (it->second >= 2 && refCountPred == 1) { - CriticalWeight += p->NumRows(); - Signals->OnAddCriticalCount(p->NumRows()); - - NormalizedWeight -= p->NumRows(); - Y_ABORT_UNLESS(NormalizedWeight >= 0); - - Signals->OnRemoveNormalCount(p->NumRows()); - } else if (it->second >= 2 && refCountPred == 0) { - CriticalWeight += p->NumRows(); - Signals->OnAddCriticalCount(p->NumRows()); - } else if (it->second >= 2 && refCountPred >= 2) { - } else { - Y_ABORT_UNLESS(false); - } - } - - void RemovePortion(const std::shared_ptr<TPortionInfo>& p, const ui32 refCount) { - if (p->GetBlobBytes() < (1 << 20)) { - Signals->OnRemoveSmallPortion(); - } - auto it = Counters.find(p->GetPortion()); - Y_ABORT_UNLESS(it != Counters.end()); - const i64 refCountPred = it->second; - it->second -= refCount; - Y_ABORT_UNLESS(it->second >= 0); - if (it->second >= 2) { - } else if (it->second == 1) { - Y_ABORT_UNLESS(refCountPred >= 2); - CriticalWeight -= p->NumRows(); - Y_ABORT_UNLESS(CriticalWeight >= 0); - Signals->OnRemoveCriticalCount(p->NumRows()); - Y_ABORT_UNLESS(CriticalWeight >= 0); - NormalizedWeight += p->NumRows(); - Signals->OnAddNormalCount(p->NumRows()); - } else if (it->second == 0) { - if (refCountPred >= 2) { - Y_ABORT_UNLESS(refCountPred >= 2); - CriticalWeight -= p->NumRows(); - Y_ABORT_UNLESS(CriticalWeight >= 0); - Signals->OnRemoveCriticalCount(p->NumRows()); - } else if (refCountPred == 1) { - NormalizedWeight -= p->NumRows(); - Y_ABORT_UNLESS(NormalizedWeight >= 0); - Signals->OnRemoveNormalCount(p->NumRows()); - } else { - Y_ABORT_UNLESS(false); - } - Counters.erase(it); - } - } - -}; - -class TBorderPoint { -public: - using TBorderPortions = THashMap<ui64, std::shared_ptr<TPortionInfo>>; -private: - THashMap<ui64, ui32> MiddleWeight; - YDB_READONLY_DEF(TBorderPortions, StartPortions); - YDB_READONLY_DEF(TBorderPortions, MiddlePortions); - YDB_READONLY_DEF(TBorderPortions, FinishPortions); - std::shared_ptr<TLevelInfo> LevelInfo; -public: - void InitInternalPoint(const TBorderPoint& predPoint) { - Y_ABORT_UNLESS(predPoint.MiddleWeight.size() == predPoint.MiddlePortions.size()); - for (auto&& i : predPoint.MiddlePortions) { - auto it = predPoint.MiddleWeight.find(i.first); - if (it->second != 2) { - AddMiddle(i.second, 1); - } - } - } - - std::shared_ptr<TPortionInfo> GetOnlyPortion() const { - Y_ABORT_UNLESS(MiddlePortions.size() == 1); - Y_ABORT_UNLESS(!IsCritical()); - return MiddlePortions.begin()->second; - } - - bool IsSmall() const { - if (!IsCritical() && MiddlePortions.size() == 1 && MiddlePortions.begin()->second->GetBlobBytes() < (1 << 20)) { - return true; - } - return false; - } - - bool IsCritical() const { - if (StartPortions.size() && FinishPortions.size()) { - return true; - } - if (MiddlePortions.size() > 1 || StartPortions.size() > 1 || FinishPortions.size() > 1) { - return true; - } - return false; - } - - TBorderPoint(const std::shared_ptr<TLevelInfo>& info) - : LevelInfo(info) { - - } - - ~TBorderPoint() { - for (auto&& i : MiddlePortions) { - if (i.second->IndexKeyStart() == i.second->IndexKeyEnd()) { - LevelInfo->RemovePortion(i.second, 2); - } else { - LevelInfo->RemovePortion(i.second, 1); - } - } - } - - void AddStart(const std::shared_ptr<TPortionInfo>& p) { - Y_ABORT_UNLESS(StartPortions.emplace(p->GetPortion(), p).second); - } - void RemoveStart(const std::shared_ptr<TPortionInfo>& p) { - Y_ABORT_UNLESS(StartPortions.erase(p->GetPortion())); - } - - void AddMiddle(const std::shared_ptr<TPortionInfo>& p, const ui32 portionCriticalWeight) { - Y_ABORT_UNLESS(MiddleWeight.emplace(p->GetPortion(), portionCriticalWeight).second); - Y_ABORT_UNLESS(MiddlePortions.emplace(p->GetPortion(), p).second); - LevelInfo->AddPortion(p, portionCriticalWeight); - } - void RemoveMiddle(const std::shared_ptr<TPortionInfo>& p, const ui32 portionCriticalWeight) { - Y_ABORT_UNLESS(MiddleWeight.erase(p->GetPortion())); - Y_ABORT_UNLESS(MiddlePortions.erase(p->GetPortion())); - LevelInfo->RemovePortion(p, portionCriticalWeight); - } - - void AddFinish(const std::shared_ptr<TPortionInfo>& p) { - Y_ABORT_UNLESS(FinishPortions.emplace(p->GetPortion(), p).second); - } - void RemoveFinish(const std::shared_ptr<TPortionInfo>& p) { - Y_ABORT_UNLESS(FinishPortions.erase(p->GetPortion())); - } - - bool IsEmpty() const { - return StartPortions.empty() && FinishPortions.empty(); - } -}; - -class TPortionsPlacement { -private: - THashSet<ui64> PortionIds; - std::map<NArrow::TReplaceKey, TBorderPoint> Borders; - std::shared_ptr<TLevelInfo> LevelInfo; -public: - TPortionsPlacement(const std::shared_ptr<TLevelInfo>& levelInfo) - : LevelInfo(levelInfo) - { - - } - - class TPortionsScanner { - private: - THashMap<ui64, std::shared_ptr<TPortionInfo>> CurrentPortions; - const THashSet<TPortionAddress>& BusyPortions; - public: - - TPortionsScanner(const THashSet<TPortionAddress>& busyPortions) - : BusyPortions(busyPortions) - { - - } - - const THashMap<ui64, std::shared_ptr<TPortionInfo>>& GetCurrentPortions() const { - return CurrentPortions; - } - - bool AddBorderPoint(const TBorderPoint& p, bool& hasBusy) { - hasBusy = false; - for (auto&& [_, portionInfo] : p.GetStartPortions()) { - if (BusyPortions.contains(portionInfo->GetAddress())) { - hasBusy = true; - continue; - } - AFL_VERIFY(CurrentPortions.emplace(portionInfo->GetPortion(), portionInfo).second); - } - - for (auto&& [_, portionInfo] : p.GetFinishPortions()) { - if (BusyPortions.contains(portionInfo->GetAddress())) { - continue; - } - AFL_VERIFY(CurrentPortions.erase(portionInfo->GetPortion())); - } - return CurrentPortions.size(); - } - }; - - enum class EChainProblem { - NoProblem, - SmallChunks, - MergeChunks - }; - - std::vector<std::vector<std::shared_ptr<TPortionInfo>>> GetPortionsToCompact(const ui64 sizeLimit, const THashSet<TPortionAddress>& busyPortions) const { - std::vector<std::vector<std::shared_ptr<TPortionInfo>>> result; - THashSet<ui64> readyPortionIds; - ui64 resultSize = 0; - - TPortionsScanner buffer(busyPortions); - THashMap<ui64, std::shared_ptr<TPortionInfo>> portionsCurrentChain; - ui64 chainSize = 0; - EChainProblem problemType = EChainProblem::NoProblem; - for (auto&& i : Borders) { - bool hasBusy = false; - if (!buffer.AddBorderPoint(i.second, hasBusy)) { - if (hasBusy && problemType == EChainProblem::SmallChunks) { - chainSize = 0; - portionsCurrentChain.clear(); - problemType = EChainProblem::NoProblem; - } else if (chainSize > (1 << 20)) { - resultSize += chainSize; - std::vector<std::shared_ptr<TPortionInfo>> chain; - for (auto&& i : portionsCurrentChain) { - chain.emplace_back(i.second); - } - result.emplace_back(chain); - chainSize = 0; - portionsCurrentChain.clear(); - problemType = EChainProblem::NoProblem; - } - } else { - if (buffer.GetCurrentPortions().size() > 1) { - problemType = EChainProblem::MergeChunks; - } else if (buffer.GetCurrentPortions().begin()->second->GetBlobBytes() < (1 << 20) && problemType == EChainProblem::NoProblem) { - problemType = EChainProblem::SmallChunks; - } - if (problemType != EChainProblem::NoProblem) { - for (auto&& i : buffer.GetCurrentPortions()) { - if (portionsCurrentChain.emplace(i.second->GetPortion(), i.second).second) { - chainSize += i.second->GetBlobBytes(); - } - } - } - } - if (resultSize + chainSize > sizeLimit) { - break; - } - } - if (portionsCurrentChain.size() > 1) { - std::vector<std::shared_ptr<TPortionInfo>> chain; - for (auto&& i : portionsCurrentChain) { - chain.emplace_back(i.second); - } - result.emplace_back(chain); - } - - return result; - } - - void RemovePortion(const std::shared_ptr<TPortionInfo>& portion) { - Y_ABORT_UNLESS(PortionIds.erase(portion->GetPortion())); - auto itStart = Borders.find(portion->IndexKeyStart()); - AFL_VERIFY(itStart != Borders.end()); - auto itFinish = Borders.find(portion->IndexKeyEnd()); - AFL_VERIFY(itFinish != Borders.end()); - - itStart->second.RemoveStart(portion); - itFinish->second.RemoveFinish(portion); - if (itStart != itFinish) { - for (auto it = itStart; it != itFinish; ++it) { - it->second.RemoveMiddle(portion, 1); - } - if (itFinish->second.IsEmpty()) { - Y_ABORT_UNLESS(Borders.erase(portion->IndexKeyEnd())); - } - if (itStart->second.IsEmpty()) { - Y_ABORT_UNLESS(Borders.erase(portion->IndexKeyStart())); - } - } else { - itStart->second.RemoveMiddle(portion, 2); - if (itStart->second.IsEmpty()) { - Borders.erase(itStart); - } - } - } - - void AddPortion(const std::shared_ptr<TPortionInfo>& portion) { - Y_ABORT_UNLESS(PortionIds.emplace(portion->GetPortion()).second); - auto itStartInfo = Borders.emplace(portion->IndexKeyStart(), TBorderPoint(LevelInfo)); - auto itStart = itStartInfo.first; - if (itStartInfo.second && itStart != Borders.begin()) { - auto itStartCopy = itStart; - --itStartCopy; - itStart->second.InitInternalPoint(itStartCopy->second); - } - auto itFinishInfo = Borders.emplace(portion->IndexKeyEnd(), TBorderPoint(LevelInfo)); - auto itFinish = itFinishInfo.first; - if (itFinishInfo.second) { - Y_ABORT_UNLESS(itFinish != Borders.begin()); - auto itFinishCopy = itFinish; - --itFinishCopy; - itFinish->second.InitInternalPoint(itFinishCopy->second); - } - - itStart->second.AddStart(portion); - itFinish->second.AddFinish(portion); - if (itStart != itFinish) { - for (auto it = itStart; it != itFinish; ++it) { - it->second.AddMiddle(portion, 1); - } - } else { - itStart->second.AddMiddle(portion, 2); - } - } -}; - -class TLevel { -private: - YDB_READONLY(TDuration, CriticalAge, TDuration::Zero()); - YDB_READONLY(ui64, CriticalSize, 0); - std::shared_ptr<TLevelInfo> LevelInfo; - TPortionsPlacement PortionsPlacement; - std::shared_ptr<TLevel> NextLevel; - std::map<NArrow::TReplaceKey, TBorderPoint> Borders; - std::map<TSnapshot, THashMap<ui64, std::shared_ptr<TPortionInfo>>> PortionByAge; - const ui64 PortionsSizeLimit = (ui64)250 * 1024 * 1024; - TCompactionLimits CompactionLimits; - THashSet<ui64> PortionIds; - const std::shared_ptr<IStoragesManager> StoragesManager; - std::shared_ptr<arrow::Schema> PrimaryKeysSchema; -public: - TLevel(const TDuration criticalAge, const ui64 criticalSize, std::shared_ptr<TLevel> nextLevel, const std::shared_ptr<IStoragesManager>& storagesManager, std::shared_ptr<TCounters> counters, - const std::shared_ptr<arrow::Schema>& primaryKeysSchema) - : CriticalAge(criticalAge) - , CriticalSize(criticalSize) - , LevelInfo(std::make_shared<TLevelInfo>(counters)) - , PortionsPlacement(LevelInfo) - , NextLevel(nextLevel) - , StoragesManager(storagesManager) - , PrimaryKeysSchema(primaryKeysSchema) - { - CompactionLimits.GranuleSizeForOverloadPrevent = CriticalSize * 0.5; - } - - ui64 GetWeight() const { - return LevelInfo->GetCriticalWeight(); - } - - void ProvidePortionsNextLevel(const TInstant currentInstant) { - if (!NextLevel) { - return; - } - std::vector<std::shared_ptr<TPortionInfo>> portionsForProviding; - for (auto&& i : PortionByAge) { - if (TInstant::MilliSeconds(i.first.GetPlanStep()) + CriticalAge < currentInstant) { - for (auto&& p : i.second) { - portionsForProviding.emplace_back(p.second); - } - } else { - break; - } - } - for (auto&& i : portionsForProviding) { - RemovePortion(i, currentInstant); - NextLevel->AddPortion(i, currentInstant); - } - } - - void AddPortion(const std::shared_ptr<TPortionInfo>& portionInfo, const TInstant addInstant) { - if (TInstant::MilliSeconds(portionInfo->RecordSnapshotMax().GetPlanStep()) + CriticalAge < addInstant) { - Y_ABORT_UNLESS(!PortionIds.contains(portionInfo->GetPortion())); - if (NextLevel) { - return NextLevel->AddPortion(portionInfo, addInstant); - } - } - PortionsPlacement.AddPortion(portionInfo); - Y_ABORT_UNLESS(PortionByAge[portionInfo->RecordSnapshotMax()].emplace(portionInfo->GetPortion(), portionInfo).second); - ProvidePortionsNextLevel(addInstant); - } - - void RemovePortion(const std::shared_ptr<TPortionInfo>& portionInfo, const TInstant removeInstant) { - PortionsPlacement.RemovePortion(portionInfo); - { - auto it = PortionByAge.find(portionInfo->RecordSnapshotMax()); - Y_ABORT_UNLESS(it != PortionByAge.end()); - Y_ABORT_UNLESS(it->second.erase(portionInfo->GetPortion())); - if (it->second.empty()) { - PortionByAge.erase(it); - } - } - ProvidePortionsNextLevel(removeInstant); - } - - std::shared_ptr<TColumnEngineChanges> BuildOptimizationTask(const TCompactionLimits& /*limits*/, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions, const TInstant /*currentInstant*/) const { - std::vector<std::vector<std::shared_ptr<TPortionInfo>>> portionGroups = PortionsPlacement.GetPortionsToCompact(PortionsSizeLimit, busyPortions); - if (portionGroups.empty()) { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "optimization_task_skipped"); - return nullptr; - } - std::vector<std::shared_ptr<TPortionInfo>> portions; - std::vector<NIndexedReader::TSortableBatchPosition> positions; - for (auto&& i : portionGroups) { - portions.insert(portions.end(), i.begin(), i.end()); - std::optional<NIndexedReader::TSortableBatchPosition> position; - for (auto&& p : i) { - NIndexedReader::TSortableBatchPosition pos(p->IndexKeyEnd().ToBatch(PrimaryKeysSchema), 0, PrimaryKeysSchema->field_names(), {}, false); - if (!position || position->Compare(pos) == std::partial_ordering::less) { - position = pos; - } - } - Y_ABORT_UNLESS(position); - positions.emplace_back(*position); - } - TSaverContext saverContext(StoragesManager->GetOperator(IStoragesManager::DefaultStorageId), StoragesManager); - auto result = std::make_shared<NCompaction::TGeneralCompactColumnEngineChanges>(CompactionLimits.GetSplitSettings(), granule, portions, saverContext); - for (auto&& i : positions) { - result->AddCheckPoint(i); - } - return result; - } - -}; - -class TLevelsOptimizerPlanner: public IOptimizerPlanner { -private: - using TBase = IOptimizerPlanner; - std::shared_ptr<TLevel> L3; - std::shared_ptr<TLevel> LMax; - std::shared_ptr<TLevel> LStart; - const std::shared_ptr<IStoragesManager> StoragesManager; - std::shared_ptr<TCounters> Counters; -protected: - virtual std::vector<NIndexedReader::TSortableBatchPosition> GetBucketPositions() const override { - return {}; - } - - virtual void DoModifyPortions(const THashMap<ui64, std::shared_ptr<TPortionInfo>>& add, const THashMap<ui64, std::shared_ptr<TPortionInfo>>& remove) override { - const TInstant currentInstant = TInstant::Now(); - for (auto&& [_, i] : remove) { - if (i->GetMeta().GetTierName() != IStoragesManager::DefaultStorageId && i->GetMeta().GetTierName() != "") { - continue; - } - if (!i->GetMeta().RecordSnapshotMax) { - LMax->RemovePortion(i, currentInstant); - } else { - LStart->RemovePortion(i, currentInstant); - } - } - for (auto&& [_, i] : add) { - if (i->GetMeta().GetTierName() != IStoragesManager::DefaultStorageId && i->GetMeta().GetTierName() != "") { - continue; - } - if (!i->GetMeta().RecordSnapshotMax) { - LMax->AddPortion(i, currentInstant); - } else { - LStart->AddPortion(i, currentInstant); - } - } - } - virtual std::shared_ptr<TColumnEngineChanges> DoGetOptimizationTask(const TCompactionLimits& limits, std::shared_ptr<TGranuleMeta> granule, const THashSet<TPortionAddress>& busyPortions) const override { - return LStart->BuildOptimizationTask(limits, granule, busyPortions, TInstant::Now()); - - } - virtual TOptimizationPriority DoGetUsefulMetric() const override { - return TOptimizationPriority::Critical(LStart->GetWeight()); - } - virtual TString DoDebugString() const override { - return ""; - } - virtual void DoActualize(const TInstant /*currentInstant*/) override { - - } -public: - TLevelsOptimizerPlanner(const ui64 pathId, const std::shared_ptr<IStoragesManager>& storagesManager, const std::shared_ptr<arrow::Schema>& primaryKeysSchema) - : TBase(pathId) - , StoragesManager(storagesManager) - , Counters(std::make_shared<TCounters>()) - { - L3 = std::make_shared<TLevel>(TDuration::Seconds(120), 24 << 20, nullptr, StoragesManager, Counters, primaryKeysSchema); - LMax = L3; - LStart = L3; - } -}; - -} // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/levels/ya.make b/ydb/core/tx/columnshard/engines/storage/optimizer/levels/ya.make deleted file mode 100644 index 3f96a5717477..000000000000 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/levels/ya.make +++ /dev/null @@ -1,15 +0,0 @@ -LIBRARY() - -SRCS( - optimizer.cpp - counters.cpp -) - -PEERDIR( - contrib/libs/apache/arrow - ydb/core/protos - ydb/core/formats/arrow - ydb/core/tx/columnshard/engines/changes/abstract -) - -END() diff --git a/ydb/core/tx/columnshard/engines/storage/optimizer/ya.make b/ydb/core/tx/columnshard/engines/storage/optimizer/ya.make index e1362859aaea..1d73127f26c2 100644 --- a/ydb/core/tx/columnshard/engines/storage/optimizer/ya.make +++ b/ydb/core/tx/columnshard/engines/storage/optimizer/ya.make @@ -2,8 +2,6 @@ LIBRARY() PEERDIR( ydb/core/tx/columnshard/engines/storage/optimizer/abstract - ydb/core/tx/columnshard/engines/storage/optimizer/intervals - ydb/core/tx/columnshard/engines/storage/optimizer/levels ydb/core/tx/columnshard/engines/storage/optimizer/lbuckets ) diff --git a/ydb/core/tx/columnshard/engines/storage/storage.cpp b/ydb/core/tx/columnshard/engines/storage/storage.cpp index c51c2bd6e166..2aa5c0af7244 100644 --- a/ydb/core/tx/columnshard/engines/storage/storage.cpp +++ b/ydb/core/tx/columnshard/engines/storage/storage.cpp @@ -1,37 +1,50 @@ #include "storage.h" +#include <ydb/core/tx/columnshard/data_locks/manager/manager.h> namespace NKikimr::NOlap { -void TGranulesStorage::UpdateGranuleInfo(const TGranuleMeta& granule) { - if (PackModificationFlag) { - PackModifiedGranules[granule.GetPathId()] = &granule; - return; - } -} - -std::shared_ptr<NKikimr::NOlap::TGranuleMeta> TGranulesStorage::GetGranuleForCompaction(const THashMap<ui64, std::shared_ptr<TGranuleMeta>>& granules, const THashSet<ui64>& busyGranuleIds) const { - const TInstant now = TInstant::Now(); - std::optional<NStorageOptimizer::TOptimizationPriority> priority; - std::shared_ptr<TGranuleMeta> granule; - for (auto&& i : granules) { +std::shared_ptr<NKikimr::NOlap::TGranuleMeta> TGranulesStorage::GetGranuleForCompaction(const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const { + const TInstant now = HasAppData() ? AppDataVerified().TimeProvider->Now() : TInstant::Now(); + std::map<NStorageOptimizer::TOptimizationPriority, std::shared_ptr<TGranuleMeta>> granulesSorted; + ui32 countChecker = 0; + std::optional<NStorageOptimizer::TOptimizationPriority> priorityChecker; + for (auto&& i : Tables) { + NActors::TLogContextGuard lGuard = NActors::TLogContextBuilder::Build()("path_id", i.first); i.second->ActualizeOptimizer(now); - if (busyGranuleIds.contains(i.first)) { + auto gPriority = i.second->GetCompactionPriority(); + if (gPriority.IsZero() || (priorityChecker && gPriority < *priorityChecker)) { continue; } - if (!priority || *priority < i.second->GetCompactionPriority()) { - priority = i.second->GetCompactionPriority(); - granule = i.second; + granulesSorted.emplace(gPriority, i.second); + if (++countChecker % 100 == 0) { + for (auto&& it = granulesSorted.rbegin(); it != granulesSorted.rend(); ++it) { + if (!it->second->IsLockedOptimizer(dataLocksManager)) { + priorityChecker = it->first; + break; + } + } } } - if (!priority) { + if (granulesSorted.empty()) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "no_granules"); return nullptr; } - if (priority->IsZero()) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "zero_priority"); - return nullptr; + for (auto&& it = granulesSorted.rbegin(); it != granulesSorted.rend(); ++it) { + if (priorityChecker && it->first < *priorityChecker) { + continue; + } + NActors::TLogContextGuard lGuard = NActors::TLogContextBuilder::Build()("path_id", it->second->GetPathId()); + if (it->second->IsLockedOptimizer(dataLocksManager)) { + Counters.OnGranuleOptimizerLocked(); + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "skip_optimizer_throught_lock")("priority", it->first.DebugString()); + } else { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", "granule_compaction_weight")("priority", it->first.DebugString()); + return it->second; + } } - return granule; + + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "all_significant_granules_locked")("count", granulesSorted.size()); + return nullptr; } } // namespace NKikimr::NOlap diff --git a/ydb/core/tx/columnshard/engines/storage/storage.h b/ydb/core/tx/columnshard/engines/storage/storage.h index 7ddba8009f6f..b58d61a80c26 100644 --- a/ydb/core/tx/columnshard/engines/storage/storage.h +++ b/ydb/core/tx/columnshard/engines/storage/storage.h @@ -6,13 +6,15 @@ namespace NKikimr::NOlap { -class TGranulesStorage { +class TGranulesStat { private: - const TCompactionLimits Limits; + i64 MetadataMemoryPortionsSize = 0; const NColumnShard::TEngineLogsCounters Counters; - std::shared_ptr<IStoragesManager> StoragesManager; bool PackModificationFlag = false; THashMap<ui64, const TGranuleMeta*> PackModifiedGranules; + + static inline TAtomicCounter SumMetadataMemoryPortionsSize = 0; + void StartModificationImpl() { Y_ABORT_UNLESS(!PackModificationFlag); PackModificationFlag = true; @@ -28,27 +30,21 @@ class TGranulesStorage { } public: - TGranulesStorage(const NColumnShard::TEngineLogsCounters counters, const TCompactionLimits& limits, const std::shared_ptr<IStoragesManager>& storagesManager) - : Limits(limits) - , Counters(counters) - , StoragesManager(storagesManager) + TGranulesStat(const NColumnShard::TEngineLogsCounters& counters) + : Counters(counters) { } - const std::shared_ptr<IStoragesManager>& GetStoragesManager() const { - return StoragesManager; - } - const NColumnShard::TEngineLogsCounters& GetCounters() const { return Counters; } class TModificationGuard: TNonCopyable { private: - TGranulesStorage& Owner; + TGranulesStat& Owner; public: - TModificationGuard(TGranulesStorage& storage) + TModificationGuard(TGranulesStat& storage) : Owner(storage) { Owner.StartModificationImpl(); } @@ -62,9 +58,123 @@ class TGranulesStorage { return TModificationGuard(*this); } - std::shared_ptr<TGranuleMeta> GetGranuleForCompaction(const THashMap<ui64, std::shared_ptr<TGranuleMeta>>& granules, const THashSet<ui64>& busyGranuleIds) const; + static ui64 GetSumMetadataMemoryPortionsSize() { + return SumMetadataMemoryPortionsSize.Val(); + } + + i64 GetMetadataMemoryPortionsSize() const { + return MetadataMemoryPortionsSize; + } + + ~TGranulesStat() { + SumMetadataMemoryPortionsSize.Sub(MetadataMemoryPortionsSize); + } + + void UpdateGranuleInfo(const TGranuleMeta& granule) { + if (PackModificationFlag) { + PackModifiedGranules[granule.GetPathId()] = &granule; + return; + } + } + + void OnRemovePortion(const TPortionInfo& portion) { + MetadataMemoryPortionsSize -= portion.GetMetadataMemorySize(); + AFL_VERIFY(MetadataMemoryPortionsSize >= 0); + const i64 value = SumMetadataMemoryPortionsSize.Sub(portion.GetMetadataMemorySize()); + Counters.OnIndexMetadataUsageBytes(value); + } + + void OnAddPortion(const TPortionInfo& portion) { + MetadataMemoryPortionsSize += portion.GetMetadataMemorySize(); + const i64 value = SumMetadataMemoryPortionsSize.Add(portion.GetMetadataMemorySize()); + Counters.OnIndexMetadataUsageBytes(value); + } + +}; + +class TGranulesStorage { +private: + const NColumnShard::TEngineLogsCounters Counters; + std::shared_ptr<IStoragesManager> StoragesManager; + THashMap<ui64, std::shared_ptr<TGranuleMeta>> Tables; // pathId into Granule that equal to Table + std::shared_ptr<TGranulesStat> Stats; +public: + TGranulesStorage(const NColumnShard::TEngineLogsCounters counters, const std::shared_ptr<IStoragesManager>& storagesManager) + : Counters(counters) + , StoragesManager(storagesManager) + , Stats(std::make_shared<TGranulesStat>(Counters)) + { + + } + + const std::shared_ptr<TGranulesStat>& GetStats() const { + return Stats; + } + + std::shared_ptr<TGranuleMeta> RegisterTable(const ui64 pathId, const NColumnShard::TGranuleDataCounters& counters, const TVersionedIndex& versionedIndex) { + auto infoEmplace = Tables.emplace(pathId, std::make_shared<TGranuleMeta>(pathId, *this, counters, versionedIndex)); + AFL_VERIFY(infoEmplace.second); + return infoEmplace.first->second; + } + + void EraseTable(const ui64 pathId) { + auto it = Tables.find(pathId); + Y_ABORT_UNLESS(it != Tables.end()); + Y_ABORT_UNLESS(it->second->IsErasable()); + Tables.erase(it); + } + + const THashMap<ui64, std::shared_ptr<TGranuleMeta>>& GetTables() const { + return Tables; + } + + void ReturnToIndexes(const THashMap<ui64, THashSet<ui64>>& portions) const { + for (auto&& [g, portionIds] : portions) { + auto it = Tables.find(g); + AFL_VERIFY(it != Tables.end()); + it->second->ReturnToIndexes(portionIds); + } + } + + std::vector<std::shared_ptr<TGranuleMeta>> GetTables(const std::optional<ui64> pathIdFrom, const std::optional<ui64> pathIdTo) const { + std::vector<std::shared_ptr<TGranuleMeta>> result; + for (auto&& i : Tables) { + if (pathIdFrom && i.first < *pathIdFrom) { + continue; + } + if (pathIdTo && i.first > *pathIdTo) { + continue; + } + result.emplace_back(i.second); + } + return result; + } + + std::shared_ptr<TPortionInfo> GetPortionOptional(const ui64 pathId, const ui64 portionId) const { + auto it = Tables.find(pathId); + if (it == Tables.end()) { + return nullptr; + } + return it->second->GetPortionOptional(portionId); + } + + std::shared_ptr<TGranuleMeta> GetGranuleOptional(const ui64 pathId) const { + auto it = Tables.find(pathId); + if (it == Tables.end()) { + return nullptr; + } + return it->second; + } + + const std::shared_ptr<IStoragesManager>& GetStoragesManager() const { + return StoragesManager; + } + + const NColumnShard::TEngineLogsCounters& GetCounters() const { + return Counters; + } - void UpdateGranuleInfo(const TGranuleMeta& granule); + std::shared_ptr<TGranuleMeta> GetGranuleForCompaction(const std::shared_ptr<NDataLocks::TManager>& locksManager) const; }; diff --git a/ydb/core/tx/columnshard/engines/storage/ya.make b/ydb/core/tx/columnshard/engines/storage/ya.make index 811707b20d2d..2f1af88b17a7 100644 --- a/ydb/core/tx/columnshard/engines/storage/ya.make +++ b/ydb/core/tx/columnshard/engines/storage/ya.make @@ -9,6 +9,8 @@ PEERDIR( contrib/libs/apache/arrow ydb/core/protos ydb/core/tx/columnshard/engines/storage/optimizer + ydb/core/tx/columnshard/engines/storage/actualizer + ydb/core/tx/columnshard/engines/storage/chunks ydb/core/formats/arrow ) diff --git a/ydb/core/tx/columnshard/engines/ut/ut_insert_table.cpp b/ydb/core/tx/columnshard/engines/ut/ut_insert_table.cpp index 9e2dad244ac6..8362ee918b85 100644 --- a/ydb/core/tx/columnshard/engines/ut/ut_insert_table.cpp +++ b/ydb/core/tx/columnshard/engines/ut/ut_insert_table.cpp @@ -47,7 +47,7 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestInsertTable) { ui64 writeId = 0; ui64 tableId = 0; TString dedupId = "0"; - TUnifiedBlobId blobId1(2222, 1, 1, 100, 1); + TUnifiedBlobId blobId1(2222, 1, 1, 100, 2, 0, 1); TTestInsertTableDB dbTable; TInsertTable insertTable; @@ -62,7 +62,7 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestInsertTable) { UNIT_ASSERT(!ok); // insert different blodId with the same writeId and dedupId - TUnifiedBlobId blobId2(2222, 1, 2, 100, 1); + TUnifiedBlobId blobId2(2222, 1, 2, 100, 2, 0, 1); ok = insertTable.Insert(dbTable, TInsertedData(writeId, tableId, dedupId, blobId2, TLocalHelper::GetMetaProto(), indexSnapshot, {})); UNIT_ASSERT(!ok); diff --git a/ydb/core/tx/columnshard/engines/ut/ut_logs_engine.cpp b/ydb/core/tx/columnshard/engines/ut/ut_logs_engine.cpp index a5c07fcc014c..0770a69d456d 100644 --- a/ydb/core/tx/columnshard/engines/ut/ut_logs_engine.cpp +++ b/ydb/core/tx/columnshard/engines/ut/ut_logs_engine.cpp @@ -2,13 +2,19 @@ #include <library/cpp/testing/unittest/registar.h> #include <ydb/core/tx/columnshard/engines/column_engine_logs.h> #include <ydb/core/tx/columnshard/engines/predicate/predicate.h> -#include <ydb/core/tx/columnshard/engines/changes/cleanup.h> +#include <ydb/core/tx/columnshard/engines/changes/cleanup_portions.h> +#include <ydb/core/tx/columnshard/engines/changes/indexation.h> +#include <ydb/core/tx/columnshard/engines/changes/ttl.h> #include <ydb/core/tx/columnshard/columnshard_ut_common.h> #include <ydb/core/tx/columnshard/engines/changes/compaction.h> #include <ydb/core/tx/columnshard/blobs_action/bs/storage.h> #include <ydb/core/tx/columnshard/hooks/testing/controller.h> - +#include <ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h> +#include <ydb/core/tx/columnshard/data_locks/manager/manager.h> +#include <ydb/core/tx/columnshard/background_controller.h> +#include <ydb/core/tx/columnshard/engines/changes/abstract/abstract.h> +#include <ydb/core/tx/columnshard/test_helper/helper.h> namespace NKikimr { @@ -21,6 +27,8 @@ using namespace NKikimr::NOlap::NEngines::NTest; namespace { +std::shared_ptr<NDataLocks::TManager> EmptyDataLocksManager = std::make_shared<NDataLocks::TManager>(); + class TTestDbWrapper : public IDbWrapper { private: std::map<TPortionAddress, std::map<TChunkAddress, TColumnChunkLoadContext>> LoadContexts; @@ -79,19 +87,23 @@ class TTestDbWrapper : public IDbWrapper { } auto& data = Indices[0].Columns[portion.GetPathId()]; - NOlap::TColumnChunkLoadContext loadContext(row.GetAddress(), row.BlobRange, rowProto); + NOlap::TColumnChunkLoadContext loadContext(row.GetAddress(), portion.RestoreBlobRange(row.BlobRange), rowProto); auto itInsertInfo = LoadContexts[portion.GetAddress()].emplace(row.GetAddress(), loadContext); if (!itInsertInfo.second) { itInsertInfo.first->second = loadContext; } auto it = data.find(portion.GetPortion()); if (it == data.end()) { - it = data.emplace(portion.GetPortion(), portion.CopyWithFilteredColumns({})).first; + it = data.emplace(portion.GetPortion(), portion.CopyBeforeChunksRebuild()).first; } else { Y_ABORT_UNLESS(portion.GetPathId() == it->second.GetPathId() && portion.GetPortion() == it->second.GetPortion()); } - it->second.SetMinSnapshot(portion.GetMinSnapshot()); - it->second.SetRemoveSnapshot(portion.GetRemoveSnapshot()); + it->second.SetMinSnapshotDeprecated(portion.GetMinSnapshotDeprecated()); + if (portion.HasRemoveSnapshot()) { + it->second.SetRemoveSnapshot(portion.GetRemoveSnapshotVerified()); + } else { + AFL_VERIFY(!it->second.HasRemoveSnapshot()); + } bool replaced = false; for (auto& rec : it->second.Records) { @@ -163,21 +175,21 @@ class TTestDbWrapper : public IDbWrapper { THashMap<ui32, TIndex> Indices; }; -static const std::vector<std::pair<TString, TTypeInfo>> testColumns = { +static const std::vector<NArrow::NTest::TTestColumn> testColumns = { // PK - {"timestamp", TTypeInfo(NTypeIds::Timestamp) }, - {"resource_type", TTypeInfo(NTypeIds::Utf8) }, - {"resource_id", TTypeInfo(NTypeIds::Utf8) }, - {"uid", TTypeInfo(NTypeIds::Utf8) }, + NArrow::NTest::TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp) ), + NArrow::NTest::TTestColumn("resource_type", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("resource_id", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("uid", TTypeInfo(NTypeIds::Utf8) ), // - {"message", TTypeInfo(NTypeIds::Utf8) } + NArrow::NTest::TTestColumn("message", TTypeInfo(NTypeIds::Utf8) ) }; -static const std::vector<std::pair<TString, TTypeInfo>> testKey = { - {"timestamp", TTypeInfo(NTypeIds::Timestamp) }, - {"resource_type", TTypeInfo(NTypeIds::Utf8) }, - {"resource_id", TTypeInfo(NTypeIds::Utf8) }, - {"uid", TTypeInfo(NTypeIds::Utf8) } +static const std::vector<NArrow::NTest::TTestColumn> testKey = { + NArrow::NTest::TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp) ), + NArrow::NTest::TTestColumn("resource_type", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("resource_id", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("uid", TTypeInfo(NTypeIds::Utf8) ) }; template <typename TKeyDataType> @@ -243,25 +255,18 @@ TString MakeTestBlob(i64 start = 0, i64 end = 100) { return NArrow::SerializeBatchNoCompression(batch); } -void AddIdsToBlobs(std::vector<TPortionInfoWithBlobs>& portions, THashMap<TBlobRange, TString>& blobs, ui32& step) { +void AddIdsToBlobs(std::vector<TPortionInfoWithBlobs>& portions, NBlobOperations::NRead::TCompositeReadBlobs& blobs, ui32& step) { for (auto& portion : portions) { for (auto& rec : portion.GetPortionInfo().Records) { - rec.BlobRange.BlobId = MakeUnifiedBlobId(++step, portion.GetBlobFullSizeVerified(rec.ColumnId, rec.Chunk)); - blobs[rec.BlobRange] = portion.GetBlobByRangeVerified(rec.ColumnId, rec.Chunk); + rec.BlobRange.BlobIdx = portion.GetPortionInfo().RegisterBlobId(MakeUnifiedBlobId(++step, portion.GetBlobFullSizeVerified(rec.ColumnId, rec.Chunk))); + TString data = portion.GetBlobByRangeVerified(rec.ColumnId, rec.Chunk); + blobs.Add(IStoragesManager::DefaultStorageId, portion.GetPortionInfo().RestoreBlobRange(rec.BlobRange), std::move(data)); } } } -TCompactionLimits TestLimits() { - TCompactionLimits limits; - limits.GranuleBlobSplitSize = 1024; - limits.GranuleSizeForOverloadPrevent = 400 * 1024; - limits.GranuleOverloadSize = 800 * 1024; - return limits; -} - bool Insert(TColumnEngineForLogs& engine, TTestDbWrapper& db, TSnapshot snap, - std::vector<TInsertedData>&& dataToIndex, THashMap<TBlobRange, TString>& blobs, ui32& step) { + std::vector<TInsertedData>&& dataToIndex, NBlobOperations::NRead::TCompositeReadBlobs& blobs, ui32& step) { for (ui32 i = 0; i < dataToIndex.size(); ++i) { // Commited data always has nonzero planstep (for WriteLoadRead tests) @@ -272,11 +277,11 @@ bool Insert(TColumnEngineForLogs& engine, TTestDbWrapper& db, TSnapshot snap, return false; } - changes->Blobs.insert(blobs.begin(), blobs.end()); - blobs.clear(); + changes->Blobs = std::move(blobs); + blobs.Clear(); changes->StartEmergency(); - NOlap::TConstructionContext context(engine.GetVersionedIndex(), NColumnShard::TIndexationCounters("Indexation")); + NOlap::TConstructionContext context(engine.GetVersionedIndex(), NColumnShard::TIndexationCounters("Indexation"), snap); Y_ABORT_UNLESS(changes->ConstructBlobs(context).Ok()); UNIT_ASSERT_VALUES_EQUAL(changes->AppendedPortions.size(), 1); @@ -289,7 +294,12 @@ bool Insert(TColumnEngineForLogs& engine, TTestDbWrapper& db, TSnapshot snap, AddIdsToBlobs(changes->AppendedPortions, blobs, step); const bool result = engine.ApplyChanges(db, changes, snap); - changes->AbortEmergency(); + + NOlap::TWriteIndexContext contextExecute(nullptr, db, engine); + changes->WriteIndexOnExecute(nullptr, contextExecute); + NOlap::TWriteIndexCompleteContext contextComplete(NActors::TActivationContext::AsActorContext(), 0, 0, TDuration::Zero(), engine); + changes->WriteIndexOnComplete(nullptr, contextComplete); + changes->AbortEmergency("testing"); return result; } @@ -299,14 +309,14 @@ struct TExpected { ui32 NewGranules; }; -bool Compact(TColumnEngineForLogs& engine, TTestDbWrapper& db, TSnapshot snap, THashMap<TBlobRange, TString>&& blobs, ui32& step, +bool Compact(TColumnEngineForLogs& engine, TTestDbWrapper& db, TSnapshot snap, NBlobOperations::NRead::TCompositeReadBlobs&& blobs, ui32& step, const TExpected& /*expected*/, THashMap<TBlobRange, TString>* blobsPool = nullptr) { - std::shared_ptr<TCompactColumnEngineChanges> changes = dynamic_pointer_cast<TCompactColumnEngineChanges>(engine.StartCompaction(TestLimits(), {})); + std::shared_ptr<TCompactColumnEngineChanges> changes = dynamic_pointer_cast<TCompactColumnEngineChanges>(engine.StartCompaction(EmptyDataLocksManager)); UNIT_ASSERT(changes); // UNIT_ASSERT_VALUES_EQUAL(changes->SwitchedPortions.size(), expected.SrcPortions); - changes->SetBlobs(std::move(blobs)); + changes->Blobs = std::move(blobs); changes->StartEmergency(); - NOlap::TConstructionContext context(engine.GetVersionedIndex(), NColumnShard::TIndexationCounters("Compaction")); + NOlap::TConstructionContext context(engine.GetVersionedIndex(), NColumnShard::TIndexationCounters("Compaction"), NOlap::TSnapshot(step, 1)); Y_ABORT_UNLESS(changes->ConstructBlobs(context).Ok()); // UNIT_ASSERT_VALUES_EQUAL(changes->AppendedPortions.size(), expected.NewPortions); @@ -315,20 +325,24 @@ bool Compact(TColumnEngineForLogs& engine, TTestDbWrapper& db, TSnapshot snap, T // UNIT_ASSERT_VALUES_EQUAL(changes->GetTmpGranuleIds().size(), expected.NewGranules); const bool result = engine.ApplyChanges(db, changes, snap); + NOlap::TWriteIndexContext contextExecute(nullptr, db, engine); + changes->WriteIndexOnExecute(nullptr, contextExecute); + NOlap::TWriteIndexCompleteContext contextComplete(NActors::TActivationContext::AsActorContext(), 0, 0, TDuration::Zero(), engine); + changes->WriteIndexOnComplete(nullptr, contextComplete); if (blobsPool) { for (auto&& i : changes->AppendedPortions) { for (auto&& r : i.GetPortionInfo().Records) { - Y_ABORT_UNLESS(blobsPool->emplace(r.BlobRange, i.GetBlobByRangeVerified(r.ColumnId, r.Chunk)).second); + Y_ABORT_UNLESS(blobsPool->emplace(i.GetPortionInfo().RestoreBlobRange(r.BlobRange), i.GetBlobByRangeVerified(r.ColumnId, r.Chunk)).second); } } } - changes->AbortEmergency(); + changes->AbortEmergency("testing"); return result; } bool Cleanup(TColumnEngineForLogs& engine, TTestDbWrapper& db, TSnapshot snap, ui32 expectedToDrop) { THashSet<ui64> pathsToDrop; - std::shared_ptr<TCleanupColumnEngineChanges> changes = engine.StartCleanup(snap, pathsToDrop, 1000); + std::shared_ptr<TCleanupPortionsColumnEngineChanges> changes = engine.StartCleanupPortions(snap, pathsToDrop, EmptyDataLocksManager); UNIT_ASSERT(changes || !expectedToDrop); if (!expectedToDrop && !changes) { return true; @@ -338,20 +352,29 @@ bool Cleanup(TColumnEngineForLogs& engine, TTestDbWrapper& db, TSnapshot snap, u changes->StartEmergency(); const bool result = engine.ApplyChanges(db, changes, snap); - changes->AbortEmergency(); + NOlap::TWriteIndexContext contextExecute(nullptr, db, engine); + changes->WriteIndexOnExecute(nullptr, contextExecute); + NOlap::TWriteIndexCompleteContext contextComplete(NActors::TActivationContext::AsActorContext(), 0, 0, TDuration::Zero(), engine); + changes->WriteIndexOnComplete(nullptr, contextComplete); + changes->AbortEmergency("testing"); return result; } bool Ttl(TColumnEngineForLogs& engine, TTestDbWrapper& db, const THashMap<ui64, NOlap::TTiering>& pathEviction, ui32 expectedToDrop) { - std::shared_ptr<TTTLColumnEngineChanges> changes = engine.StartTtl(pathEviction, {}, 512 * 1024 * 1024); - UNIT_ASSERT(changes); + std::vector<std::shared_ptr<TTTLColumnEngineChanges>> vChanges = engine.StartTtl(pathEviction, EmptyDataLocksManager, 512 * 1024 * 1024); + AFL_VERIFY(vChanges.size() == 1)("count", vChanges.size()); + auto changes = vChanges.front(); UNIT_ASSERT_VALUES_EQUAL(changes->PortionsToRemove.size(), expectedToDrop); changes->StartEmergency(); const bool result = engine.ApplyChanges(db, changes, TSnapshot(1,1)); - changes->AbortEmergency(); + NOlap::TWriteIndexContext contextExecute(nullptr, db, engine); + changes->WriteIndexOnExecute(nullptr, contextExecute); + NOlap::TWriteIndexCompleteContext contextComplete(NActors::TActivationContext::AsActorContext(), 0, 0, TDuration::Zero(), engine); + changes->WriteIndexOnComplete(nullptr, contextComplete); + changes->AbortEmergency("testing"); return result; } @@ -373,24 +396,15 @@ std::shared_ptr<TPredicate> MakeStrPredicate(const std::string& key, NArrow::EOp } // namespace -class TTestStoragesManager: public NOlap::IStoragesManager { -private: - using TBase = NOlap::IStoragesManager; - TIntrusivePtr<TTabletStorageInfo> TabletInfo = new TTabletStorageInfo(); -protected: - virtual std::shared_ptr<NOlap::IBlobsStorageOperator> DoBuildOperator(const TString& storageId) override { - if (storageId == TBase::DefaultStorageId) { - return std::make_shared<NOlap::NBlobOperations::NBlobStorage::TOperator>(storageId, NActors::TActorId(), TabletInfo, 1); - } else - return nullptr; - } -}; +std::shared_ptr<NKikimr::NOlap::IStoragesManager> InitializeStorageManager() { + return NKikimr::NOlap::TTestStoragesManager::GetInstance(); +} -std::shared_ptr<NKikimr::NOlap::IStoragesManager> CommonStoragesManager = std::make_shared<TTestStoragesManager>(); +std::shared_ptr<NKikimr::NOlap::IStoragesManager> CommonStoragesManager = InitializeStorageManager(); Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { - void WriteLoadRead(const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema, - const std::vector<std::pair<TString, TTypeInfo>>& key) { + void WriteLoadRead(const std::vector<NArrow::NTest::TTestColumn>& ydbSchema, + const std::vector<NArrow::NTest::TTestColumn>& key) { TTestDbWrapper db; TIndexInfo tableInfo = NColumnShard::BuildTableInfo(ydbSchema, key); @@ -404,9 +418,8 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { // PlanStep, TxId, PathId, DedupId, BlobId, Data, [Metadata] // load - TColumnEngineForLogs engine(0, TestLimits(), CommonStoragesManager); TSnapshot indexSnaphot(1, 1); - engine.RegisterSchemaVersion(indexSnaphot, TIndexInfo(tableInfo)); + TColumnEngineForLogs engine(0, CommonStoragesManager, indexSnaphot, TIndexInfo(tableInfo)); for (auto&& i : paths) { engine.RegisterTable(i); } @@ -420,20 +433,24 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { // write ui32 step = 1000; - THashMap<TBlobRange, TString> blobs; - blobs[blobRanges[0]] = testBlob; - blobs[blobRanges[1]] = testBlob; - Insert(engine, db, TSnapshot(1, 2), std::move(dataToIndex), blobs, step); + { + NBlobOperations::NRead::TCompositeReadBlobs blobs; + TString str1 = testBlob; + blobs.Add(IStoragesManager::DefaultStorageId, blobRanges[0], std::move(str1)); + str1 = testBlob; + blobs.Add(IStoragesManager::DefaultStorageId, blobRanges[1], std::move(str1)); + Insert(engine, db, TSnapshot(1, 2), std::move(dataToIndex), blobs, step); + } // selects auto lastSchema = engine.GetVersionedIndex().GetLastSchema(); UNIT_ASSERT_EQUAL(lastSchema->GetSnapshot(), indexSnaphot); const TIndexInfo& indexInfo = lastSchema->GetIndexInfo(); - THashSet<ui32> oneColumnId = { indexInfo.GetColumnId(testColumns[0].first) }; + THashSet<ui32> oneColumnId = { indexInfo.GetColumnId(testColumns[0].GetName()) }; THashSet<ui32> columnIds; - for (auto& [column, typeId] : testColumns) { - columnIds.insert(indexInfo.GetColumnId(column)); + for (auto& c : testColumns) { + columnIds.insert(indexInfo.GetColumnId(c.GetName())); } { // select from snap before insert @@ -471,18 +488,18 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { } Y_UNIT_TEST(IndexWriteLoadReadStrPK) { - std::vector<std::pair<TString, TTypeInfo>> key = { - {"resource_type", TTypeInfo(NTypeIds::Utf8) }, - {"resource_id", TTypeInfo(NTypeIds::Utf8) }, - {"uid", TTypeInfo(NTypeIds::Utf8) }, - {"timestamp", TTypeInfo(NTypeIds::Timestamp) } + std::vector<NArrow::NTest::TTestColumn> key = { + NArrow::NTest::TTestColumn("resource_type", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("resource_id", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("uid", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp) ) }; WriteLoadRead(testColumns, key); } - void ReadWithPredicates(const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema, - const std::vector<std::pair<TString, TTypeInfo>>& key) { + void ReadWithPredicates(const std::vector<NArrow::NTest::TTestColumn>& ydbSchema, + const std::vector<NArrow::NTest::TTestColumn>& key) { TTestDbWrapper db; TIndexInfo tableInfo = NColumnShard::BuildTableInfo(ydbSchema, key); @@ -490,8 +507,7 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { ui32 step = 1000; TSnapshot indexSnapshot(1, 1); - TColumnEngineForLogs engine(0, TestLimits(), CommonStoragesManager); - engine.RegisterSchemaVersion(indexSnapshot, TIndexInfo(tableInfo)); + TColumnEngineForLogs engine(0, CommonStoragesManager, indexSnapshot, TIndexInfo(tableInfo)); engine.RegisterTable(pathId); engine.Load(db); @@ -503,8 +519,9 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { for (ui64 txId = 1; txId <= 20; ++txId, rowPos += numRows) { TString testBlob = MakeTestBlob(rowPos, rowPos + numRows); auto blobRange = MakeBlobRange(++step, testBlob.size()); - THashMap<TBlobRange, TString> blobs; - blobs[blobRange] = testBlob; + NBlobOperations::NRead::TCompositeReadBlobs blobs; + TString str1 = testBlob; + blobs.Add(IStoragesManager::DefaultStorageId, blobRange, std::move(str1)); // PlanStep, TxId, PathId, DedupId, BlobId, Data, [Metadata] std::vector<TInsertedData> dataToIndex; @@ -528,7 +545,7 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { planStep = 3; const TIndexInfo& indexInfo = engine.GetVersionedIndex().GetLastSchema()->GetIndexInfo(); - THashSet<ui32> oneColumnId = { indexInfo.GetColumnId(key[0].first) }; + THashSet<ui32> oneColumnId = { indexInfo.GetColumnId(key[0].GetName()) }; { // full scan ui64 txId = 1; @@ -541,7 +558,7 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { { ui64 txId = 1; std::shared_ptr<TPredicate> gt10k = MakePredicate(10000, NArrow::EOperation::Greater); - if (key[0].second == TTypeInfo(NTypeIds::Utf8)) { + if (key[0].GetType() == TTypeInfo(NTypeIds::Utf8)) { gt10k = MakeStrPredicate("10000", NArrow::EOperation::Greater); } NOlap::TPKRangesFilter pkFilter(false); @@ -553,7 +570,7 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { { ui64 txId = 1; std::shared_ptr<TPredicate> lt10k = MakePredicate(8999, NArrow::EOperation::Less); // TODO: better border checks - if (key[0].second == TTypeInfo(NTypeIds::Utf8)) { + if (key[0].GetType() == TTypeInfo(NTypeIds::Utf8)) { lt10k = MakeStrPredicate("08999", NArrow::EOperation::Less); } NOlap::TPKRangesFilter pkFilter(false); @@ -568,11 +585,11 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { } Y_UNIT_TEST(IndexReadWithPredicatesStrPK) { - std::vector<std::pair<TString, TTypeInfo>> key = { - {"resource_type", TTypeInfo(NTypeIds::Utf8) }, - {"resource_id", TTypeInfo(NTypeIds::Utf8) }, - {"uid", TTypeInfo(NTypeIds::Utf8) }, - {"timestamp", TTypeInfo(NTypeIds::Timestamp) } + std::vector<NArrow::NTest::TTestColumn> key = { + NArrow::NTest::TTestColumn("resource_type", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("resource_id", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("uid", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp) ) }; ReadWithPredicates(testColumns, key); @@ -589,20 +606,19 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { // inserts ui64 planStep = 1; - TColumnEngineForLogs engine(0, TestLimits(), CommonStoragesManager); TSnapshot indexSnapshot(1, 1); - engine.RegisterSchemaVersion(indexSnapshot, TIndexInfo(tableInfo)); + TColumnEngineForLogs engine(0, CommonStoragesManager, indexSnapshot, TIndexInfo(tableInfo)); engine.RegisterTable(pathId); engine.Load(db); ui64 numRows = 1000; ui64 rowPos = 0; - THashMap<TBlobRange, TString> blobsAll; + NBlobOperations::NRead::TCompositeReadBlobs blobsAll; for (ui64 txId = 1; txId <= 100; ++txId, rowPos += numRows) { TString testBlob = MakeTestBlob(rowPos, rowPos + numRows); auto blobRange = MakeBlobRange(++step, testBlob.size()); - THashMap<TBlobRange, TString> blobs; - blobs[blobRange] = testBlob; + NBlobOperations::NRead::TCompositeReadBlobs blobs; + blobs.Add(IStoragesManager::DefaultStorageId, blobRange, std::move(testBlob)); // PlanStep, TxId, PathId, DedupId, BlobId, Data, [Metadata] std::vector<TInsertedData> dataToIndex; @@ -610,15 +626,12 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { TInsertedData(txId, pathId, "", blobRange.BlobId, TLocalHelper::GetMetaProto(), 0, {})); bool ok = Insert(engine, db, TSnapshot(planStep, txId), std::move(dataToIndex), blobs, step); - for (auto&& i : blobs) { - blobsAll[i.first] = i.second; - } + blobsAll.Merge(std::move(blobs)); UNIT_ASSERT(ok); } { // check it's overloaded after reload - TColumnEngineForLogs tmpEngine(0, TestLimits(), CommonStoragesManager); - tmpEngine.RegisterSchemaVersion(TSnapshot::Zero(), TIndexInfo(tableInfo)); + TColumnEngineForLogs tmpEngine(0, CommonStoragesManager, TSnapshot::Zero(), TIndexInfo(tableInfo)); tmpEngine.RegisterTable(pathId); tmpEngine.Load(db); } @@ -635,8 +648,8 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { for (ui64 txId = 1; txId <= 2; ++txId, rowPos += numRows) { TString testBlob = MakeTestBlob(rowPos, rowPos + numRows); auto blobRange = MakeBlobRange(++step, testBlob.size()); - THashMap<TBlobRange, TString> blobs; - blobs[blobRange] = testBlob; + NBlobOperations::NRead::TCompositeReadBlobs blobs; + blobs.Add(IStoragesManager::DefaultStorageId, blobRange, std::move(testBlob)); // PlanStep, TxId, PathId, DedupId, BlobId, Data, [Metadata] std::vector<TInsertedData> dataToIndex; @@ -648,8 +661,7 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { } { // check it's not overloaded after reload - TColumnEngineForLogs tmpEngine(0, TestLimits(), CommonStoragesManager); - tmpEngine.RegisterSchemaVersion(TSnapshot::Zero(), TIndexInfo(tableInfo)); + TColumnEngineForLogs tmpEngine(0, CommonStoragesManager, TSnapshot::Zero(), TIndexInfo(tableInfo)); tmpEngine.RegisterTable(pathId); tmpEngine.Load(db); } @@ -666,8 +678,7 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { ui64 planStep = 1; TSnapshot indexSnapshot(1, 1); { - TColumnEngineForLogs engine(0, TestLimits(), CommonStoragesManager); - engine.RegisterSchemaVersion(indexSnapshot, TIndexInfo(tableInfo)); + TColumnEngineForLogs engine(0, CommonStoragesManager, indexSnapshot, TIndexInfo(tableInfo)); engine.RegisterTable(pathId); engine.Load(db); @@ -676,8 +687,9 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { for (ui64 txId = 1; txId <= 20; ++txId, rowPos += numRows) { TString testBlob = MakeTestBlob(rowPos, rowPos + numRows); auto blobRange = MakeBlobRange(++step, testBlob.size()); - THashMap<TBlobRange, TString> blobs; - blobs[blobRange] = testBlob; + NBlobOperations::NRead::TCompositeReadBlobs blobs; + TString str1 = testBlob; + blobs.Add(IStoragesManager::DefaultStorageId, blobRange, std::move(str1)); // PlanStep, TxId, PathId, DedupId, BlobId, Data, [Metadata] std::vector<TInsertedData> dataToIndex; @@ -698,7 +710,7 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { planStep = 3; const TIndexInfo& indexInfo = engine.GetVersionedIndex().GetLastSchema()->GetIndexInfo(); - THashSet<ui32> oneColumnId = {indexInfo.GetColumnId(testColumns[0].first)}; + THashSet<ui32> oneColumnId = {indexInfo.GetColumnId(testColumns[0].GetName())}; { // full scan ui64 txId = 1; @@ -719,7 +731,7 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { std::shared_ptr<arrow::DataType> ttlColType = arrow::timestamp(arrow::TimeUnit::MICRO); THashMap<ui64, NOlap::TTiering> pathTtls; NOlap::TTiering tiering; - tiering.Ttl = NOlap::TTierInfo::MakeTtl(TDuration::MicroSeconds(TInstant::Now().MicroSeconds() - 10000), "timestamp"); + AFL_VERIFY(tiering.Add(NOlap::TTierInfo::MakeTtl(TDuration::MicroSeconds(TInstant::Now().MicroSeconds() - 10000), "timestamp"))); pathTtls.emplace(pathId, std::move(tiering)); Ttl(engine, db, pathTtls, 10); @@ -733,13 +745,12 @@ Y_UNIT_TEST_SUITE(TColumnEngineTestLogs) { } { // load - TColumnEngineForLogs engine(0, TestLimits(), CommonStoragesManager); - engine.RegisterSchemaVersion(indexSnapshot, TIndexInfo(tableInfo)); + TColumnEngineForLogs engine(0, CommonStoragesManager, indexSnapshot, TIndexInfo(tableInfo)); engine.RegisterTable(pathId); engine.Load(db); const TIndexInfo& indexInfo = engine.GetVersionedIndex().GetLastSchema()->GetIndexInfo(); - THashSet<ui32> oneColumnId = {indexInfo.GetColumnId(testColumns[0].first)}; + THashSet<ui32> oneColumnId = {indexInfo.GetColumnId(testColumns[0].GetName())}; { // full scan ui64 txId = 1; diff --git a/ydb/core/tx/columnshard/engines/ut/ut_program.cpp b/ydb/core/tx/columnshard/engines/ut/ut_program.cpp index 4cfe3282267a..a4586c489460 100644 --- a/ydb/core/tx/columnshard/engines/ut/ut_program.cpp +++ b/ydb/core/tx/columnshard/engines/ut/ut_program.cpp @@ -1,7 +1,8 @@ #include <ydb/core/tx/columnshard/engines/index_info.h> +#include <ydb/core/tx/columnshard/engines/reader/plain_reader/constructor/resolver.h> -#include <ydb/core/tx/columnshard/columnshard__index_scan.h> #include <ydb/core/tx/columnshard/columnshard_ut_common.h> +#include <ydb/core/tx/columnshard/test_helper/helper.h> #include <ydb/core/tx/program/program.h> #include <ydb/core/formats/arrow/converter.h> @@ -20,16 +21,16 @@ using TTypeId = NScheme::TTypeId; using TTypeInfo = NScheme::TTypeInfo; namespace { - static const std::vector<std::pair<TString, TTypeInfo>> testColumns = { - {"timestamp", TTypeInfo(NTypeIds::Timestamp) }, - {"uid", TTypeInfo(NTypeIds::Utf8) }, - {"sum", TTypeInfo(NTypeIds::Int32) }, - {"vat", TTypeInfo(NTypeIds::Int32) }, + static const std::vector<NArrow::NTest::TTestColumn> testColumns = { + NArrow::NTest::TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp) ), + NArrow::NTest::TTestColumn("uid", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("sum", TTypeInfo(NTypeIds::Int32)), + NArrow::NTest::TTestColumn("vat", TTypeInfo(NTypeIds::Int32)), }; - static const std::vector<std::pair<TString, TTypeInfo>> testKey = { - {"timestamp", TTypeInfo(NTypeIds::Timestamp) }, - {"uid", TTypeInfo(NTypeIds::Utf8) } + static const std::vector<NArrow::NTest::TTestColumn> testKey = { + NArrow::NTest::TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp) ), + NArrow::NTest::TTestColumn("uid", TTypeInfo(NTypeIds::Utf8) ) }; } @@ -133,7 +134,7 @@ Y_UNIT_TEST_SUITE(TestProgram) { Y_UNIT_TEST(YqlKernel) { TIndexInfo indexInfo = BuildTableInfo(testColumns, testKey); - TIndexColumnResolver columnResolver(indexInfo); + NReader::NPlain::TIndexColumnResolver columnResolver(indexInfo); NKikimrSSA::TProgram programProto; { @@ -178,7 +179,7 @@ Y_UNIT_TEST_SUITE(TestProgram) { Y_UNIT_TEST(YqlKernelStartsWithScalar) { TIndexInfo indexInfo = BuildTableInfo(testColumns, testKey); - TIndexColumnResolver columnResolver(indexInfo); + NReader::NPlain::TIndexColumnResolver columnResolver(indexInfo); NKikimrSSA::TProgram programProto; { @@ -232,7 +233,7 @@ Y_UNIT_TEST_SUITE(TestProgram) { Y_UNIT_TEST(YqlKernelEndsWithScalar) { TIndexInfo indexInfo = BuildTableInfo(testColumns, testKey); - TIndexColumnResolver columnResolver(indexInfo); + NReader::NPlain::TIndexColumnResolver columnResolver(indexInfo); NKikimrSSA::TProgram programProto; { @@ -286,7 +287,7 @@ Y_UNIT_TEST_SUITE(TestProgram) { Y_UNIT_TEST(YqlKernelStartsWith) { TIndexInfo indexInfo = BuildTableInfo(testColumns, testKey); - TIndexColumnResolver columnResolver(indexInfo); + NReader::NPlain::TIndexColumnResolver columnResolver(indexInfo); NKikimrSSA::TProgram programProto; { @@ -333,7 +334,7 @@ Y_UNIT_TEST_SUITE(TestProgram) { Y_UNIT_TEST(YqlKernelEndsWith) { TIndexInfo indexInfo = BuildTableInfo(testColumns, testKey); - TIndexColumnResolver columnResolver(indexInfo); + NReader::NPlain::TIndexColumnResolver columnResolver(indexInfo); NKikimrSSA::TProgram programProto; @@ -381,7 +382,7 @@ Y_UNIT_TEST_SUITE(TestProgram) { Y_UNIT_TEST(YqlKernelContains) { TIndexInfo indexInfo = BuildTableInfo(testColumns, testKey); - TIndexColumnResolver columnResolver(indexInfo); + NReader::NPlain::TIndexColumnResolver columnResolver(indexInfo); NKikimrSSA::TProgram programProto; @@ -434,7 +435,7 @@ Y_UNIT_TEST_SUITE(TestProgram) { Y_UNIT_TEST(YqlKernelEquals) { TIndexInfo indexInfo = BuildTableInfo(testColumns, testKey); - TIndexColumnResolver columnResolver(indexInfo); + NReader::NPlain::TIndexColumnResolver columnResolver(indexInfo); NKikimrSSA::TProgram programProto; @@ -489,7 +490,7 @@ Y_UNIT_TEST_SUITE(TestProgram) { void JsonExistsImpl(bool isBinaryType) { TIndexInfo indexInfo = BuildTableInfo(testColumns, testKey); - TIndexColumnResolver columnResolver(indexInfo); + NReader::NPlain::TIndexColumnResolver columnResolver(indexInfo); NKikimrSSA::TProgram programProto; { @@ -535,7 +536,9 @@ Y_UNIT_TEST_SUITE(TestProgram) { if (isBinaryType) { THashMap<TString, NScheme::TTypeInfo> cc; cc["json_data"] = TTypeInfo(NTypeIds::JsonDocument); - batch = NArrow::ConvertColumns(batch, cc); + auto convertResult = NArrow::ConvertColumns(batch, cc); + UNIT_ASSERT_C(convertResult.ok(), convertResult.status().ToString()); + batch = *convertResult; Cerr << batch->ToString() << Endl; } auto res = program.ApplyProgram(batch); @@ -551,7 +554,7 @@ Y_UNIT_TEST_SUITE(TestProgram) { Y_UNIT_TEST(Like) { TIndexInfo indexInfo = BuildTableInfo(testColumns, testKey); - TIndexColumnResolver columnResolver(indexInfo); + NReader::NPlain::TIndexColumnResolver columnResolver(indexInfo); NKikimrSSA::TProgram programProto; { @@ -657,7 +660,7 @@ Y_UNIT_TEST_SUITE(TestProgram) { void JsonValueImpl(bool isBinaryType, NYql::EDataSlot resultType) { TIndexInfo indexInfo = BuildTableInfo(testColumns, testKey); - TIndexColumnResolver columnResolver(indexInfo); + NReader::NPlain::TIndexColumnResolver columnResolver(indexInfo); NKikimrSSA::TProgram programProto; { @@ -727,7 +730,9 @@ Y_UNIT_TEST_SUITE(TestProgram) { if (isBinaryType) { THashMap<TString, NScheme::TTypeInfo> cc; cc["json_data"] = TTypeInfo(NTypeIds::JsonDocument); - batch = NArrow::ConvertColumns(batch, cc); + auto convertResult = NArrow::ConvertColumns(batch, cc); + UNIT_ASSERT_C(convertResult.ok(), convertResult.status().ToString()); + batch = *convertResult; Cerr << batch->ToString() << Endl; } @@ -808,7 +813,7 @@ Y_UNIT_TEST_SUITE(TestProgram) { Y_UNIT_TEST(SimpleFunction) { TIndexInfo indexInfo = BuildTableInfo(testColumns, testKey);; - TIndexColumnResolver columnResolver(indexInfo); + NReader::NPlain::TIndexColumnResolver columnResolver(indexInfo); NKikimrSSA::TProgram programProto; { diff --git a/ydb/core/tx/columnshard/engines/ut/ya.make b/ydb/core/tx/columnshard/engines/ut/ya.make index fc8159e31764..41a7d7b2aac3 100644 --- a/ydb/core/tx/columnshard/engines/ut/ya.make +++ b/ydb/core/tx/columnshard/engines/ut/ya.make @@ -23,6 +23,7 @@ PEERDIR( ydb/library/yql/sql/pg_dummy ydb/library/yql/core/arrow_kernels/request ydb/core/testlib/default + ydb/core/tx/columnshard/test_helper ydb/core/tx/columnshard/hooks/abstract ydb/core/tx/columnshard/hooks/testing diff --git a/ydb/core/tx/columnshard/engines/writer/blob_constructor.cpp b/ydb/core/tx/columnshard/engines/writer/blob_constructor.cpp index 2fae90b9e7f1..ccf07b5ba5f3 100644 --- a/ydb/core/tx/columnshard/engines/writer/blob_constructor.cpp +++ b/ydb/core/tx/columnshard/engines/writer/blob_constructor.cpp @@ -2,4 +2,16 @@ namespace NKikimr::NOlap { +TBlobWriteInfo::TBlobWriteInfo(const TString& data, const std::shared_ptr<IBlobsWritingAction>& writeOperator, const std::optional<TUnifiedBlobId>& customBlobId) + : Data(data) + , WriteOperator(writeOperator) +{ + Y_ABORT_UNLESS(WriteOperator); + BlobId = WriteOperator->AddDataForWrite(data, customBlobId); +} + +NKikimr::NOlap::TBlobWriteInfo TBlobWriteInfo::BuildWriteTask(const TString& data, const std::shared_ptr<IBlobsWritingAction>& writeOperator, const std::optional<TUnifiedBlobId>& customBlobId /*= {}*/) { + return TBlobWriteInfo(data, writeOperator, customBlobId); +} + } diff --git a/ydb/core/tx/columnshard/engines/writer/blob_constructor.h b/ydb/core/tx/columnshard/engines/writer/blob_constructor.h index c2df91c9a605..2c7bf22753af 100644 --- a/ydb/core/tx/columnshard/engines/writer/blob_constructor.h +++ b/ydb/core/tx/columnshard/engines/writer/blob_constructor.h @@ -23,18 +23,11 @@ class TBlobWriteInfo { private: YDB_READONLY_DEF(TUnifiedBlobId, BlobId); YDB_READONLY_DEF(TString, Data); - YDB_READONLY_DEF(std::shared_ptr<IBlobsWritingAction>, WriteOperator); - - TBlobWriteInfo(const TString& data, const std::shared_ptr<IBlobsWritingAction>& writeOperator) - : Data(data) - , WriteOperator(writeOperator) { - Y_ABORT_UNLESS(WriteOperator); - BlobId = WriteOperator->AddDataForWrite(data); - } + YDB_ACCESSOR_DEF(std::shared_ptr<IBlobsWritingAction>, WriteOperator); + + TBlobWriteInfo(const TString& data, const std::shared_ptr<IBlobsWritingAction>& writeOperator, const std::optional<TUnifiedBlobId>& customBlobId); public: - static TBlobWriteInfo BuildWriteTask(const TString& data, const std::shared_ptr<IBlobsWritingAction>& writeOperator) { - return TBlobWriteInfo(data, writeOperator); - } + static TBlobWriteInfo BuildWriteTask(const TString& data, const std::shared_ptr<IBlobsWritingAction>& writeOperator, const std::optional<TUnifiedBlobId>& customBlobId = {}); }; } diff --git a/ydb/core/tx/columnshard/engines/writer/buffer/actor.cpp b/ydb/core/tx/columnshard/engines/writer/buffer/actor.cpp index 28e0ab6ca203..0ffaaf3a9fee 100644 --- a/ydb/core/tx/columnshard/engines/writer/buffer/actor.cpp +++ b/ydb/core/tx/columnshard/engines/writer/buffer/actor.cpp @@ -1,4 +1,5 @@ #include "actor.h" +#include <ydb/core/tx/columnshard/columnshard_private_events.h> #include <ydb/core/tx/columnshard/columnshard_impl.h> namespace NKikimr::NColumnShard::NWriting { diff --git a/ydb/core/tx/columnshard/engines/writer/buffer/ya.make b/ydb/core/tx/columnshard/engines/writer/buffer/ya.make index 78a3ee199907..2aafd30fcc66 100644 --- a/ydb/core/tx/columnshard/engines/writer/buffer/ya.make +++ b/ydb/core/tx/columnshard/engines/writer/buffer/ya.make @@ -15,6 +15,8 @@ PEERDIR( ydb/core/tablet_flat ydb/library/yql/core/expr_nodes ydb/library/actors/testlib/common + ydb/core/tx/columnshard/data_sharing/protos + ydb/core/tx/columnshard/blobs_action/protos ) END() diff --git a/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.cpp b/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.cpp index 59cd3a62042e..d3b7d27e95eb 100644 --- a/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.cpp +++ b/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.cpp @@ -3,6 +3,7 @@ #include <ydb/core/tx/columnshard/defs.h> #include <ydb/core/tx/columnshard/blob.h> #include <ydb/core/tx/columnshard/engines/changes/abstract/abstract.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> namespace NKikimr::NOlap { @@ -18,22 +19,31 @@ TCompactedWriteController::TCompactedWriteController(const TActorId& dstActor, T auto* pInfo = changes.GetWritePortionInfo(i); Y_ABORT_UNLESS(pInfo); TPortionInfoWithBlobs& portionWithBlobs = *pInfo; - auto action = changes.MutableBlobsAction().GetWriting(portionWithBlobs.GetPortionInfo()); for (auto&& b : portionWithBlobs.GetBlobs()) { - auto& task = AddWriteTask(TBlobWriteInfo::BuildWriteTask(b.GetBlob(), action)); + auto& task = AddWriteTask(TBlobWriteInfo::BuildWriteTask(b.GetBlob(), changes.MutableBlobsAction().GetWriting(b.GetOperator()->GetStorageId()))); b.RegisterBlobId(portionWithBlobs, task.GetBlobId()); } } } void TCompactedWriteController::DoOnReadyResult(const NActors::TActorContext& ctx, const NColumnShard::TBlobPutResult::TPtr& putResult) { - WriteIndexEv->PutResult = putResult; + WriteIndexEv->PutResult = NYDBTest::TControllers::GetColumnShardController()->OverrideBlobPutResultOnCompaction(putResult, GetBlobActions()); ctx.Send(DstActor, WriteIndexEv.Release()); } TCompactedWriteController::~TCompactedWriteController() { if (WriteIndexEv && WriteIndexEv->IndexChanges) { - WriteIndexEv->IndexChanges->AbortEmergency(); + WriteIndexEv->IndexChanges->AbortEmergency("TCompactedWriteController destructed with WriteIndexEv and WriteIndexEv->IndexChanges"); + } +} + +const NKikimr::NOlap::TBlobsAction& TCompactedWriteController::GetBlobsAction() { + return WriteIndexEv->IndexChanges->GetBlobsAction(); +} + +void TCompactedWriteController::DoAbort(const TString& reason) { + if (WriteIndexEv && WriteIndexEv->IndexChanges) { + WriteIndexEv->IndexChanges->AbortEmergency("TCompactedWriteController aborted: " + reason); } } diff --git a/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.h b/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.h index 36a5d9a34b45..eb8ef262bb97 100644 --- a/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.h +++ b/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.h @@ -6,6 +6,7 @@ #include <ydb/core/tx/columnshard/columnshard.h> #include <ydb/core/tx/columnshard/columnshard_private_events.h> #include <ydb/core/tx/columnshard/engines/portions/with_blobs.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/action.h> namespace NKikimr::NOlap { @@ -15,7 +16,10 @@ class TCompactedWriteController : public NColumnShard::IWriteController { TActorId DstActor; protected: void DoOnReadyResult(const NActors::TActorContext& ctx, const NColumnShard::TBlobPutResult::TPtr& putResult) override; + virtual void DoAbort(const TString& reason) override; public: + const TBlobsAction& GetBlobsAction(); + TCompactedWriteController(const TActorId& dstActor, TAutoPtr<NColumnShard::TEvPrivate::TEvWriteIndex> writeEv); ~TCompactedWriteController(); }; diff --git a/ydb/core/tx/columnshard/engines/writer/indexed_blob_constructor.h b/ydb/core/tx/columnshard/engines/writer/indexed_blob_constructor.h index 392d76fd10c6..e4af7b2da294 100644 --- a/ydb/core/tx/columnshard/engines/writer/indexed_blob_constructor.h +++ b/ydb/core/tx/columnshard/engines/writer/indexed_blob_constructor.h @@ -5,6 +5,7 @@ #include <ydb/core/tx/data_events/write_data.h> #include <ydb/core/tx/columnshard/blobs_action/abstract/write.h> +#include <ydb/core/tx/columnshard/blobs_action/counters/storage.h> #include <ydb/core/tx/columnshard/counters/common/object_counter.h> #include <ydb/core/tx/columnshard/engines/portion_info.h> #include <ydb/core/tx/columnshard/columnshard.h> @@ -57,7 +58,7 @@ class TWritingBlob { bool AddData(TWideSerializedBatch& batch) { if (BlobData.size() + batch.GetSplittedBlobs().GetSize() < 8 * 1024 * 1024) { Ranges.emplace_back(&batch); - batch.SetRange(TBlobRange(TUnifiedBlobId(0, 0, 0, 0, BlobData.size() + batch.GetSplittedBlobs().GetSize()), BlobData.size(), batch.GetSplittedBlobs().GetSize())); + batch.SetRange(TBlobRange(TUnifiedBlobId(0, 0, 0, 0, 0, 0, BlobData.size() + batch.GetSplittedBlobs().GetSize()), BlobData.size(), batch.GetSplittedBlobs().GetSize())); BlobData += batch.GetSplittedBlobs().GetData(); return true; } else { @@ -134,9 +135,9 @@ class TWritingBuffer: public TMoveOnly { for (auto&& s : Aggregations[i]->GetSplittedBlobs()) { if (--linksCount[s.GetRange().BlobId] == 0) { if (!DeclareRemoveAction) { - DeclareRemoveAction = bOperator->StartDeclareRemovingAction("WRITING_BUFFER"); + DeclareRemoveAction = bOperator->StartDeclareRemovingAction(NBlobOperations::EConsumer::WRITING_BUFFER); } - DeclareRemoveAction->DeclareRemove(s.GetRange().BlobId); + DeclareRemoveAction->DeclareRemove(bOperator->GetSelfTabletId(), s.GetRange().BlobId); } } Aggregations.erase(Aggregations.begin() + i); diff --git a/ydb/core/tx/columnshard/engines/writer/write_controller.cpp b/ydb/core/tx/columnshard/engines/writer/write_controller.cpp index abae873b3c5b..0b3322b955c4 100644 --- a/ydb/core/tx/columnshard/engines/writer/write_controller.cpp +++ b/ydb/core/tx/columnshard/engines/writer/write_controller.cpp @@ -1,5 +1,25 @@ #include "write_controller.h" +#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> namespace NKikimr::NColumnShard { +void IWriteController::OnBlobWriteResult(const TEvBlobStorage::TEvPutResult& result) { + NOlap::TUnifiedBlobId blobId(result.GroupId, result.Id); + auto it = WaitingActions.find(result.StorageId ? result.StorageId : NOlap::IStoragesManager::DefaultStorageId); + AFL_VERIFY(it != WaitingActions.end()); + it->second->OnBlobWriteResult(blobId, result.Status); + if (it->second->IsReady()) { + WaitingActions.erase(it); + } + DoOnBlobWriteResult(result); +} + +NKikimr::NOlap::TBlobWriteInfo& IWriteController::AddWriteTask(NOlap::TBlobWriteInfo&& task) { + auto fullAction = WritingActions.Add(task.GetWriteOperator()); + task.SetWriteOperator(fullAction); + WaitingActions.emplace(fullAction->GetStorageId(), fullAction); + WriteTasks.emplace_back(std::move(task)); + return WriteTasks.back(); +} + } diff --git a/ydb/core/tx/columnshard/engines/writer/write_controller.h b/ydb/core/tx/columnshard/engines/writer/write_controller.h index f6d030528b27..ae51e5571cec 100644 --- a/ydb/core/tx/columnshard/engines/writer/write_controller.h +++ b/ydb/core/tx/columnshard/engines/writer/write_controller.h @@ -4,7 +4,6 @@ #include "blob_constructor.h" #include <ydb/library/actors/core/actor.h> -#include <ydb/core/tx/columnshard/blob_manager.h> #include <ydb/core/tx/columnshard/defs.h> #include <ydb/core/tx/columnshard/blobs_action/abstract/write.h> @@ -29,8 +28,8 @@ class TBlobPutResult: public NColumnShard::TPutStatus { class IWriteController { private: - THashMap<TUnifiedBlobId, std::shared_ptr<NOlap::IBlobsWritingAction>> BlobActions; - THashMap<i64, std::shared_ptr<NOlap::IBlobsWritingAction>> WritingActions; + THashMap<TString, std::shared_ptr<NOlap::IBlobsWritingAction>> WaitingActions; + NOlap::TWriteActionsCollection WritingActions; std::deque<NOlap::TBlobWriteInfo> WriteTasks; protected: virtual void DoOnReadyResult(const NActors::TActorContext& ctx, const TBlobPutResult::TPtr& putResult) = 0; @@ -41,12 +40,14 @@ class IWriteController { } - NOlap::TBlobWriteInfo& AddWriteTask(NOlap::TBlobWriteInfo&& task) { - WritingActions.emplace(task.GetWriteOperator()->GetActionId(), task.GetWriteOperator()); - WriteTasks.emplace_back(std::move(task)); - return WriteTasks.back(); + NOlap::TBlobWriteInfo& AddWriteTask(NOlap::TBlobWriteInfo&& task); + virtual void DoAbort(const TString& /*reason*/) { } public: + const NOlap::TWriteActionsCollection& GetBlobActions() const { + return WritingActions; + } + TString DebugString() const { TStringBuilder sb; for (auto&& i : WritingActions) { @@ -60,10 +61,12 @@ class IWriteController { return TStringBuilder() << "size=" << size << ";count=" << WriteTasks.size() << ";actions=" << sb << ";"; } - void Abort() { + void Abort(const TString& reason) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "IWriteController aborted")("reason", reason); for (auto&& i : WritingActions) { i.second->Abort(); } + DoAbort(reason); } using TPtr = std::shared_ptr<IWriteController>; @@ -77,14 +80,7 @@ class IWriteController { DoOnReadyResult(ctx, putResult); } - void OnBlobWriteResult(const TEvBlobStorage::TEvPutResult& result) { - TUnifiedBlobId blobId(result.GroupId, result.Id); - auto it = BlobActions.find(blobId); - AFL_VERIFY(it != BlobActions.end()); - it->second->OnBlobWriteResult(blobId, result.Status); - BlobActions.erase(it); - DoOnBlobWriteResult(result); - } + void OnBlobWriteResult(const TEvBlobStorage::TEvPutResult& result); std::optional<NOlap::TBlobWriteInfo> Next() { if (WriteTasks.empty()) { @@ -92,19 +88,11 @@ class IWriteController { } auto result = std::move(WriteTasks.front()); WriteTasks.pop_front(); - BlobActions.emplace(result.GetBlobId(), result.GetWriteOperator()); return result; } - bool IsBlobActionsReady() const { - return BlobActions.empty(); - } - std::vector<std::shared_ptr<NOlap::IBlobsWritingAction>> GetBlobActions() const { - std::vector<std::shared_ptr<NOlap::IBlobsWritingAction>> actions; - for (auto&& i : WritingActions) { - actions.emplace_back(i.second); - } - return actions; + bool IsReady() const { + return WaitingActions.empty(); } }; diff --git a/ydb/core/tx/columnshard/engines/ya.make b/ydb/core/tx/columnshard/engines/ya.make index 8e80cb730b69..4a244f8be456 100644 --- a/ydb/core/tx/columnshard/engines/ya.make +++ b/ydb/core/tx/columnshard/engines/ya.make @@ -30,6 +30,7 @@ PEERDIR( ydb/core/tx/columnshard/engines/changes ydb/core/tx/columnshard/engines/portions ydb/core/tx/program + ydb/core/tx/columnshard/common # for NYql::NUdf alloc stuff used in binary_json ydb/library/yql/public/udf/service/exception_policy diff --git a/ydb/core/tx/columnshard/export/actor/export_actor.cpp b/ydb/core/tx/columnshard/export/actor/export_actor.cpp new file mode 100644 index 000000000000..3790bc94b790 --- /dev/null +++ b/ydb/core/tx/columnshard/export/actor/export_actor.cpp @@ -0,0 +1,36 @@ +#include "export_actor.h" +#include <ydb/core/tx/columnshard/columnshard_impl.h> + +namespace NKikimr::NOlap::NExport { + +void TActor::HandleExecute(NKqp::TEvKqpCompute::TEvScanData::TPtr& ev) { + SwitchStage(EStage::WaitData, EStage::WaitWriting); + auto data = ev->Get()->ArrowBatch; + AFL_VERIFY(!!data || ev->Get()->Finished); + if (data) { + CurrentData = NArrow::ToBatch(data, true); + CurrentDataBlob = Serializer->SerializeFull(CurrentData); + if (data) { + auto controller = std::make_shared<TWriteController>(SelfId(), std::vector<TString>({CurrentDataBlob}), + BlobsOperator->StartWritingAction(NBlobOperations::EConsumer::EXPORT), Cursor, ShardTabletId, Selector->GetPathId()); + Register(CreateWriteActor((ui64)ShardTabletId, controller, TInstant::Max())); + } + } else { + CurrentData = nullptr; + CurrentDataBlob = ""; + TBase::Send(SelfId(), new NEvents::TEvExportWritingFinished); + } + TOwnedCellVec lastKey = ev->Get()->LastKey; + AFL_VERIFY(!Cursor.IsFinished()); + Cursor.InitNext(ev->Get()->LastKey, ev->Get()->Finished); +} + +void TActor::HandleExecute(NEvents::TEvExportWritingFailed::TPtr& /*ev*/) { + SwitchStage(EStage::WaitWriting, EStage::WaitWriting); + auto controller = std::make_shared<TWriteController>(SelfId(), std::vector<TString>({CurrentDataBlob}), + BlobsOperator->StartWritingAction(NBlobOperations::EConsumer::EXPORT), + Cursor, ShardTabletId, Selector->GetPathId()); + Register(CreateWriteActor((ui64)ShardTabletId, controller, TInstant::Max())); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/actor/export_actor.h b/ydb/core/tx/columnshard/export/actor/export_actor.h new file mode 100644 index 000000000000..b82f97106407 --- /dev/null +++ b/ydb/core/tx/columnshard/export/actor/export_actor.h @@ -0,0 +1,118 @@ +#pragma once +#include "write.h" + +#include <ydb/core/formats/arrow/serializer/abstract.h> +#include <ydb/core/kqp/compute_actor/kqp_compute_events.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/storage.h> +#include <ydb/core/tx/columnshard/export/common/identifier.h> +#include <ydb/core/tx/columnshard/export/events/events.h> +#include <ydb/core/tx/columnshard/export/session/selector/abstract/selector.h> + +#include <ydb/library/actors/core/actor_bootstrapped.h> + +namespace NKikimr::NOlap::NExport { + +class TActor: public NActors::TActorBootstrapped<TActor> { +private: + enum class EStage { + Initialization, + WaitData, + WaitWriting, + WaitSaveCursor, + Finished + }; + + using TBase = NActors::TActorBootstrapped<TActor>; + const TIdentifier ExportId; + const TActorId ShardActorId; + const TTabletId ShardTabletId; + NArrow::NSerialization::TSerializerContainer Serializer; + TSelectorContainer Selector; + std::shared_ptr<IBlobsStorageOperator> BlobsOperator; + std::optional<TActorId> ScanActorId; + + TCursor Cursor; + EStage Stage = EStage::Initialization; + std::shared_ptr<arrow::RecordBatch> CurrentData; + TString CurrentDataBlob; + static inline const ui64 FreeSpace = ((ui64)8) << 20; + void SwitchStage(const EStage from, const EStage to) { + AFL_VERIFY(Stage == from)("from", (ui32)from)("real", (ui32)Stage)("to", (ui32)to); + Stage = to; + } + +protected: + void HandleExecute(NKqp::TEvKqpCompute::TEvScanInitActor::TPtr& ev) { + SwitchStage(EStage::Initialization, EStage::WaitData); + AFL_VERIFY(!ScanActorId); + auto& msg = ev->Get()->Record; + ScanActorId = ActorIdFromProto(msg.GetScanActorId()); + TBase::Send(*ScanActorId, new NKqp::TEvKqpCompute::TEvScanDataAck(FreeSpace, (ui64)ShardTabletId, 1)); + } + + void HandleExecute(NEvents::TEvExportCursorSaved::TPtr& /*ev*/) { + SwitchStage(EStage::WaitSaveCursor, EStage::WaitData); + AFL_VERIFY(ScanActorId); + TBase::Send(*ScanActorId, new NKqp::TEvKqpCompute::TEvScanDataAck(FreeSpace, (ui64)ShardTabletId, 1)); + } + + void HandleExecute(NEvents::TEvExportWritingFinished::TPtr& /*ev*/) { + SwitchStage(EStage::WaitWriting, EStage::WaitSaveCursor); + AFL_VERIFY(Cursor.HasLastKey()); + Send(ShardActorId, new NEvents::TEvExportSaveCursor(ExportId, Cursor)); + if (Cursor.IsFinished()) { + PassAway(); + } + } + + void HandleExecute(NEvents::TEvExportWritingFailed::TPtr& ev); + + void HandleExecute(NKqp::TEvKqpCompute::TEvScanData::TPtr& ev); + + void HandleExecute(NKqp::TEvKqpCompute::TEvScanError::TPtr& /*ev*/) { + AFL_VERIFY(false); + } +public: + + TActor(const TActorId& shardActorId, const TTabletId shardTabletId, const NArrow::NSerialization::TSerializerContainer& serializer, const TSelectorContainer& selector, + const std::shared_ptr<IBlobsStorageOperator>& bOperator, const TIdentifier& id, const TCursor& startCursor) + : ExportId(id) + , ShardActorId(shardActorId) + , ShardTabletId(shardTabletId) + , Serializer(serializer) + , Selector(selector) + , BlobsOperator(bOperator) + , Cursor(startCursor) + { + AFL_VERIFY(serializer); + AFL_VERIFY(selector); + } + + void Bootstrap() { + auto evStart = Selector->BuildRequestInitiator(Cursor); + evStart->Record.SetGeneration((ui64)ShardTabletId); + Send(ShardActorId, evStart.release()); + Become(&TActor::StateFunc); + } + + STATEFN(StateFunc) { + try { + switch (ev->GetTypeRewrite()) { + hFunc(NKqp::TEvKqpCompute::TEvScanInitActor, HandleExecute); + hFunc(NKqp::TEvKqpCompute::TEvScanData, HandleExecute); + hFunc(NKqp::TEvKqpCompute::TEvScanError, HandleExecute); + hFunc(NEvents::TEvExportCursorSaved, HandleExecute); + hFunc(NEvents::TEvExportWritingFinished, HandleExecute); + hFunc(NEvents::TEvExportWritingFailed, HandleExecute); + default: + AFL_VERIFY(false)("event_type", ev->GetTypeName()); + } + } catch (...) { + AFL_VERIFY(false); + } + } + + +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/actor/write.cpp b/ydb/core/tx/columnshard/export/actor/write.cpp new file mode 100644 index 000000000000..4b48104b5601 --- /dev/null +++ b/ydb/core/tx/columnshard/export/actor/write.cpp @@ -0,0 +1,26 @@ +#include "write.h" +#include <ydb/core/tx/columnshard/export/events/events.h> + +namespace NKikimr::NOlap::NExport { + +void TWriteController::DoOnReadyResult(const NActors::TActorContext& ctx, const NColumnShard::TBlobPutResult::TPtr& putResult) { + if (putResult->GetPutStatus() == NKikimrProto::OK) { + ctx.Send(ExportActorId, new NEvents::TEvExportWritingFinished()); + } else { + ctx.Send(ExportActorId, new NEvents::TEvExportWritingFailed()); + } +} + +TWriteController::TWriteController(const TActorId& exportActorId, const std::vector<TString>& blobsToWrite, const std::shared_ptr<IBlobsWritingAction>& writeAction, + const TCursor& cursor, const TTabletId tabletId, const ui64 pathId) + : ExportActorId(exportActorId) +{ + for (auto&& i : blobsToWrite) { + auto blobId = TUnifiedBlobId((ui64)tabletId, (pathId << 24) >> 40, pathId >> 40, cursor.GetChunkIdx(), pathId & Max<ui8>(), Max<ui32>(), i.size()); + AFL_VERIFY((((ui64)blobId.GetLogoBlobId().Step() >> 8) << 40) + ((ui64)blobId.GetLogoBlobId().Generation() << 8) + blobId.GetLogoBlobId().Channel() == pathId); + auto info = NOlap::TBlobWriteInfo::BuildWriteTask(i, writeAction, blobId); + AddWriteTask(std::move(info)); + } +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/actor/write.h b/ydb/core/tx/columnshard/export/actor/write.h new file mode 100644 index 000000000000..ac5a28add2d2 --- /dev/null +++ b/ydb/core/tx/columnshard/export/actor/write.h @@ -0,0 +1,17 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/writer/write_controller.h> +#include <ydb/core/tx/columnshard/export/session/cursor.h> + +namespace NKikimr::NOlap::NExport { + +class TWriteController: public NColumnShard::IWriteController { +private: + const TActorId ExportActorId; +protected: + virtual void DoOnReadyResult(const NActors::TActorContext& ctx, const NColumnShard::TBlobPutResult::TPtr& putResult); +public: + TWriteController(const TActorId& exportActorId, const std::vector<TString>& blobsToWrite, const std::shared_ptr<IBlobsWritingAction>& writeAction, + const TCursor& cursor, const TTabletId tabletId, const ui64 pathId); +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/actor/ya.make b/ydb/core/tx/columnshard/export/actor/ya.make new file mode 100644 index 000000000000..ce9e06a7390f --- /dev/null +++ b/ydb/core/tx/columnshard/export/actor/ya.make @@ -0,0 +1,16 @@ +LIBRARY() + +SRCS( + export_actor.cpp + write.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/blobs_action/abstract + ydb/library/actors/core + ydb/core/tx/columnshard/engines/writer + ydb/core/tx/columnshard/export/events + ydb/core/kqp/compute_actor +) + +END() diff --git a/ydb/core/tx/columnshard/export/common/identifier.cpp b/ydb/core/tx/columnshard/export/common/identifier.cpp new file mode 100644 index 000000000000..647c72e846a0 --- /dev/null +++ b/ydb/core/tx/columnshard/export/common/identifier.cpp @@ -0,0 +1,49 @@ +#include "identifier.h" +#include <ydb/core/tx/columnshard/export/protos/task.pb.h> +#include <ydb/core/protos/tx_columnshard.pb.h> +#include <ydb/core/protos/flat_scheme_op.pb.h> +#include <util/string/builder.h> + +namespace NKikimr::NOlap::NExport { + +NKikimr::TConclusionStatus TIdentifier::DeserializeFromProto(const NKikimrColumnShardExportProto::TIdentifier& proto) { + PathId = proto.GetPathId(); + if (!PathId) { + return TConclusionStatus::Fail("Incorrect pathId (zero)"); + } + return TConclusionStatus::Success(); +} + +NKikimr::TConclusion<NKikimr::NOlap::NExport::TIdentifier> TIdentifier::BuildFromProto(const NKikimrColumnShardExportProto::TIdentifier& proto) { + TIdentifier result; + auto parseResult = result.DeserializeFromProto(proto); + if (!parseResult) { + return parseResult; + } + return result; +} + +NKikimr::TConclusion<NKikimr::NOlap::NExport::TIdentifier> TIdentifier::BuildFromProto(const NKikimrTxColumnShard::TBackupTxBody& proto) { + TIdentifier result; + result.PathId = proto.GetBackupTask().GetTableId(); + if (!result.PathId) { + return TConclusionStatus::Fail("incorrect pathId (cannot been zero)"); + } + return result; +} + +NKikimrColumnShardExportProto::TIdentifier TIdentifier::SerializeToProto() const { + NKikimrColumnShardExportProto::TIdentifier result; + result.SetPathId(PathId); + return result; +} + +TString TIdentifier::DebugString() const { + return SerializeToProto().DebugString(); +} + +TString TIdentifier::ToString() const { + return TStringBuilder() << "path_id=" << PathId << ";"; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/common/identifier.h b/ydb/core/tx/columnshard/export/common/identifier.h new file mode 100644 index 000000000000..6db80e809a2d --- /dev/null +++ b/ydb/core/tx/columnshard/export/common/identifier.h @@ -0,0 +1,48 @@ +#pragma once +#include <ydb/library/accessor/accessor.h> +#include <ydb/library/conclusion/status.h> +#include <ydb/library/conclusion/result.h> +#include <ydb/core/protos/tx_columnshard.pb.h> + +namespace NKikimrColumnShardExportProto { +class TIdentifier; +} + +namespace NKikimrTxColumnShard { +class TBackupTxBody; +} + +namespace NKikimr::NOlap::NExport { + +class TIdentifier { +private: + YDB_READONLY(ui64, PathId, 0); + + TIdentifier() = default; + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardExportProto::TIdentifier& proto); +public: + TIdentifier(const ui64 pathId) + : PathId(pathId) + { + + } + + static TConclusion<TIdentifier> BuildFromProto(const NKikimrTxColumnShard::TBackupTxBody& proto); + static TConclusion<TIdentifier> BuildFromProto(const NKikimrColumnShardExportProto::TIdentifier& proto); + + NKikimrColumnShardExportProto::TIdentifier SerializeToProto() const; + + TString ToString() const; + + operator size_t() const { + return PathId; + } + + bool operator==(const TIdentifier& id) const { + return PathId == id.PathId; + } + + TString DebugString() const; +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/common/ya.make b/ydb/core/tx/columnshard/export/common/ya.make new file mode 100644 index 000000000000..7b6bfba407dd --- /dev/null +++ b/ydb/core/tx/columnshard/export/common/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +SRCS( + identifier.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/export/protos + ydb/library/conclusion + ydb/core/protos +) + +END() diff --git a/ydb/core/tx/columnshard/export/events/events.cpp b/ydb/core/tx/columnshard/export/events/events.cpp new file mode 100644 index 000000000000..1227faa871bb --- /dev/null +++ b/ydb/core/tx/columnshard/export/events/events.cpp @@ -0,0 +1,5 @@ +#include "events.h" + +namespace NKikimr::NOlap::NExport::NEvents { + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/events/events.h b/ydb/core/tx/columnshard/export/events/events.h new file mode 100644 index 000000000000..a8c6241583ae --- /dev/null +++ b/ydb/core/tx/columnshard/export/events/events.h @@ -0,0 +1,38 @@ +#pragma once +#include <ydb/core/scheme/scheme_tablecell.h> +#include <ydb/core/tx/columnshard/columnshard_private_events.h> +#include <ydb/core/tx/columnshard/export/common/identifier.h> +#include <ydb/core/tx/columnshard/export/session/cursor.h> + +namespace NKikimr::NOlap::NExport::NEvents { + +struct TEvExportWritingFinished: public TEventLocal<TEvExportWritingFinished, NColumnShard::TEvPrivate::EvExportWritingFinished> { +}; + +struct TEvExportWritingFailed: public TEventLocal<TEvExportWritingFailed, NColumnShard::TEvPrivate::EvExportWritingFailed> { +}; + +struct TEvExportCursorSaved: public TEventLocal<TEvExportCursorSaved, NColumnShard::TEvPrivate::EvExportCursorSaved> { +}; + +class TEvExportSaveCursor: public TEventLocal<TEvExportSaveCursor, NColumnShard::TEvPrivate::EvExportSaveCursor> { +private: + TIdentifier Identifier; + TCursor Cursor; +public: + const TIdentifier& GetIdentifier() const { + return Identifier; + } + + TCursor DetachCursor() { + return std::move(Cursor); + } + + TEvExportSaveCursor(const TIdentifier& id, const TCursor& cursor) + : Identifier(id) + , Cursor(cursor) { + + } +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/events/ya.make b/ydb/core/tx/columnshard/export/events/ya.make new file mode 100644 index 000000000000..136aa89b147f --- /dev/null +++ b/ydb/core/tx/columnshard/export/events/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +SRCS( + events.cpp +) + +PEERDIR( + ydb/core/base + ydb/core/tx/columnshard/export/common + ydb/core/tx/columnshard/export/session +) + +END() diff --git a/ydb/core/tx/columnshard/export/manager/manager.cpp b/ydb/core/tx/columnshard/export/manager/manager.cpp new file mode 100644 index 000000000000..9735ae0b73e6 --- /dev/null +++ b/ydb/core/tx/columnshard/export/manager/manager.cpp @@ -0,0 +1,67 @@ +#include "manager.h" +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/export/protos/cursor.pb.h> +#include <ydb/core/tx/columnshard/export/protos/task.pb.h> + +namespace NKikimr::NOlap::NExport { + +void TExportsManager::Start(const NColumnShard::TColumnShard* shard) { + for (auto&& i : Sessions) { + if (i.second->IsConfirmed()) { + AFL_VERIFY(i.second->Start(shard->GetStoragesManager(), (TTabletId)shard->TabletID(), shard->SelfId())); + } + } +} + +bool TExportsManager::Load(NTable::TDatabase& database) { + NIceDb::TNiceDb db(database); + using namespace NColumnShard; + { + auto rowset = db.Table<Schema::ExportPersistentSessions>().Select(); + if (!rowset.IsReady()) { + return false; + } + + while (!rowset.EndOfSet()) { + NKikimrColumnShardExportProto::TExportTask taskProto; + AFL_VERIFY(taskProto.ParseFromString(rowset.GetValue<Schema::ExportPersistentSessions::Task>())); + auto task = TExportTask::BuildFromProto(taskProto); + AFL_VERIFY(task.IsSuccess())("error", task.GetErrorMessage()); + + NKikimrColumnShardExportProto::TCursor cursorProto; + AFL_VERIFY(cursorProto.ParseFromString(rowset.GetValue<Schema::ExportPersistentSessions::Cursor>())); + auto cursor = TCursor::BuildFromProto(cursorProto); + AFL_VERIFY(cursor.IsSuccess())("error", cursor.GetErrorMessage()); + + TSession::EStatus status; + AFL_VERIFY(TryFromString(rowset.GetValue<Schema::ExportPersistentSessions::Status>(), status)); + + auto session = std::make_shared<TSession>(std::make_shared<TExportTask>(task.DetachResult()), status, cursor.DetachResult()); + + AFL_VERIFY(Sessions.emplace(session->GetIdentifier(), session).second); + if (!rowset.Next()) { + return false; + } + } + + } + return true; +} + +void TExportsManager::RemoveSession(const NExport::TIdentifier& id, NTabletFlatExecutor::TTransactionContext& txc) { + auto session = GetSessionOptional(id); + if (session) { + AFL_VERIFY(session->IsDraft()); + } + Sessions.erase(id); + NIceDb::TNiceDb db(txc.DB); + db.Table<NColumnShard::Schema::ExportPersistentSessions>().Key(id.ToString()).Delete(); +} + +void TExportsManager::Stop() { + for (auto&& i : Sessions) { + i.second->Stop(); + } +} + +} diff --git a/ydb/core/tx/columnshard/export/manager/manager.h b/ydb/core/tx/columnshard/export/manager/manager.h new file mode 100644 index 000000000000..28cec4edb310 --- /dev/null +++ b/ydb/core/tx/columnshard/export/manager/manager.h @@ -0,0 +1,58 @@ +#pragma once +#include <ydb/core/tx/columnshard/export/session/session.h> +#include <ydb/core/tablet_flat/tablet_flat_executor.h> + +namespace NKikimr::NColumnShard { +class TColumnShard; +} + +namespace NKikimr::NOlap::NExport { + + class TExportsManager { + private: + THashMap<TIdentifier, std::shared_ptr<TSession>> Sessions; + public: + void Start(const NColumnShard::TColumnShard* shard); + void Stop(); + + TConclusionStatus ProposeTask(const std::shared_ptr<TExportTask>& exportTask) { + auto it = Sessions.find(exportTask->GetIdentifier()); + if (it != Sessions.end()) { + return TConclusionStatus::Fail("task identifier exists already"); + } + Sessions.emplace(exportTask->GetIdentifier(), std::make_shared<TSession>(exportTask)); + return TConclusionStatus::Success(); + } + + bool ConfirmSessionOnExecute(const NExport::TIdentifier& id, NTabletFlatExecutor::TTransactionContext& txc) { + auto session = GetSessionVerified(id); + AFL_VERIFY(session->IsDraft()); + session->SaveFullToDB(txc.DB); + return true; + } + + bool ConfirmSessionOnComplete(const NExport::TIdentifier& id) { + GetSessionVerified(id)->Confirm(); + return true; + } + + std::shared_ptr<TSession> GetSessionOptional(const NExport::TIdentifier& id) const { + auto it = Sessions.find(id); + if (it == Sessions.end()) { + return nullptr; + } + return it->second; + } + + std::shared_ptr<TSession> GetSessionVerified(const NExport::TIdentifier& id) const { + auto result = GetSessionOptional(id); + AFL_VERIFY(result); + return result; + } + + void RemoveSession(const NExport::TIdentifier& id, NTabletFlatExecutor::TTransactionContext& txc); + + bool Load(NTable::TDatabase& database); + + }; +} diff --git a/ydb/core/tx/columnshard/export/manager/ya.make b/ydb/core/tx/columnshard/export/manager/ya.make new file mode 100644 index 000000000000..4ec61ce42f7f --- /dev/null +++ b/ydb/core/tx/columnshard/export/manager/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + manager.cpp +) + +PEERDIR( + ydb/core/protos + ydb/core/tx/columnshard/blobs_action + ydb/core/tx/columnshard/export/session + ydb/core/tx/columnshard/export/protos +) + +END() diff --git a/ydb/core/tx/columnshard/export/protos/cursor.proto b/ydb/core/tx/columnshard/export/protos/cursor.proto new file mode 100644 index 000000000000..a57ea864a308 --- /dev/null +++ b/ydb/core/tx/columnshard/export/protos/cursor.proto @@ -0,0 +1,7 @@ +package NKikimrColumnShardExportProto; + +message TCursor { + optional string LastKey = 1; + optional bool Finished = 2; + optional uint32 ChunkIdx = 3; +} diff --git a/ydb/core/tx/columnshard/export/protos/selector.proto b/ydb/core/tx/columnshard/export/protos/selector.proto new file mode 100644 index 000000000000..51e19b7e3f72 --- /dev/null +++ b/ydb/core/tx/columnshard/export/protos/selector.proto @@ -0,0 +1,17 @@ +import "ydb/core/tx/columnshard/common/protos/snapshot.proto"; + +package NKikimrColumnShardExportProto; + +message TBackupSelector { + optional NKikimrColumnShardProto.TSnapshot Snapshot = 1; + optional string TableName = 2; + optional uint64 TablePathId = 3; +} + +message TSelectorContainer { + optional string ClassName = 1; + + oneof Implementation { + TBackupSelector Backup = 40; + } +} diff --git a/ydb/core/tx/columnshard/export/protos/storage.proto b/ydb/core/tx/columnshard/export/protos/storage.proto new file mode 100644 index 000000000000..cb3962f82963 --- /dev/null +++ b/ydb/core/tx/columnshard/export/protos/storage.proto @@ -0,0 +1,21 @@ +import "ydb/core/protos/flat_scheme_op.proto"; + +package NKikimrColumnShardExportProto; + +message TTierStorageInitializer { + optional string TierName = 1; +} + +message TExternalS3StorageInitializer { + optional string StorageName = 1; + optional NKikimrSchemeOp.TS3Settings Settings = 2; +} + +message TStorageInitializerContainer { + optional string ClassName = 1; + + oneof Implementation { + TTierStorageInitializer Tier = 40; + TExternalS3StorageInitializer ExternalS3 = 41; + } +} diff --git a/ydb/core/tx/columnshard/export/protos/task.proto b/ydb/core/tx/columnshard/export/protos/task.proto new file mode 100644 index 000000000000..7c8e9d60f5ef --- /dev/null +++ b/ydb/core/tx/columnshard/export/protos/task.proto @@ -0,0 +1,16 @@ +import "ydb/core/tx/columnshard/export/protos/selector.proto"; +import "ydb/core/tx/columnshard/export/protos/storage.proto"; +import "ydb/core/protos/flat_scheme_op.proto"; + +package NKikimrColumnShardExportProto; + +message TIdentifier { + optional uint64 PathId = 1; +} + +message TExportTask { + optional TIdentifier Identifier = 1; + optional TSelectorContainer Selector = 2; + optional TStorageInitializerContainer StorageInitializer = 3; + optional NKikimrSchemeOp.TOlapColumn.TSerializer Serializer = 4; +} diff --git a/ydb/core/tx/columnshard/export/protos/ya.make b/ydb/core/tx/columnshard/export/protos/ya.make new file mode 100644 index 000000000000..602d4aafb660 --- /dev/null +++ b/ydb/core/tx/columnshard/export/protos/ya.make @@ -0,0 +1,15 @@ +PROTO_LIBRARY() + +SRCS( + cursor.proto + selector.proto + storage.proto + task.proto +) + +PEERDIR( + ydb/core/tx/columnshard/common/protos + ydb/core/protos +) + +END() diff --git a/ydb/core/tx/columnshard/export/session/cursor.cpp b/ydb/core/tx/columnshard/export/session/cursor.cpp new file mode 100644 index 000000000000..c154162767ec --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/cursor.cpp @@ -0,0 +1,36 @@ +#include "cursor.h" +#include <ydb/core/tx/columnshard/export/protos/cursor.pb.h> + +namespace NKikimr::NOlap::NExport { + +NKikimr::TConclusionStatus TCursor::DeserializeFromProto(const NKikimrColumnShardExportProto::TCursor& proto) { + if (proto.HasLastKey()) { + LastKey = TOwnedCellVec(TSerializedCellVec(proto.GetLastKey()).GetCells()); + } + if (proto.HasFinished()) { + Finished = proto.GetFinished(); + } + ChunkIdx = proto.GetChunkIdx(); + return TConclusionStatus::Success(); +} + +NKikimr::TConclusion<NKikimr::NOlap::NExport::TCursor> TCursor::BuildFromProto(const NKikimrColumnShardExportProto::TCursor& proto) { + TCursor result; + auto parsedResult = result.DeserializeFromProto(proto); + if (!parsedResult) { + return parsedResult; + } + return result; +} + +NKikimrColumnShardExportProto::TCursor TCursor::SerializeToProto() const { + NKikimrColumnShardExportProto::TCursor result; + if (LastKey) { + result.SetLastKey(TSerializedCellVec::Serialize(*LastKey)); + } + result.SetFinished(Finished); + result.SetChunkIdx(ChunkIdx); + return result; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/session/cursor.h b/ydb/core/tx/columnshard/export/session/cursor.h new file mode 100644 index 000000000000..8e3ee12d0d33 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/cursor.h @@ -0,0 +1,55 @@ +#pragma once +#include <ydb/core/scheme/scheme_tablecell.h> +#include <ydb/library/conclusion/result.h> +#include <ydb/library/conclusion/status.h> + +namespace NKikimrColumnShardExportProto { +class TCursor; +} + +namespace NKikimr::NOlap::NExport { + +class TCursor { +private: + ui32 ChunkIdx = 1; + std::optional<TOwnedCellVec> LastKey; + bool Finished = false; + + [[nodiscard]] TConclusionStatus DeserializeFromProto(const NKikimrColumnShardExportProto::TCursor& proto); +public: + TCursor() = default; + TCursor(const TOwnedCellVec& lastKey, const bool finished) + : LastKey(lastKey) + , Finished(finished) + { + + } + + const std::optional<TOwnedCellVec>& GetLastKey() const { + return LastKey; + } + + ui32 GetChunkIdx() const { + return ChunkIdx; + } + + bool HasLastKey() const { + return !!LastKey; + } + + bool IsFinished() const { + return Finished; + } + + void InitNext(const TOwnedCellVec& lastKey, const bool finished) { + ++ChunkIdx; + LastKey = lastKey; + Finished = finished; + } + + static TConclusion<TCursor> BuildFromProto(const NKikimrColumnShardExportProto::TCursor& proto); + + NKikimrColumnShardExportProto::TCursor SerializeToProto() const; +}; + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/session/selector/abstract/selector.cpp b/ydb/core/tx/columnshard/export/session/selector/abstract/selector.cpp new file mode 100644 index 000000000000..aeed23ff2e62 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/selector/abstract/selector.cpp @@ -0,0 +1,16 @@ +#include "selector.h" +#include <ydb/core/tx/columnshard/export/session/selector/backup/selector.h> +#include <ydb/core/protos/tx_columnshard.pb.h> +#include <ydb/core/protos/flat_scheme_op.pb.h> + +namespace NKikimr::NOlap::NExport { + +NKikimr::TConclusion<TSelectorContainer> TSelectorContainer::BuildFromProto(const NKikimrTxColumnShard::TBackupTxBody& proto) { + auto parsed = TBackupSelector::BuildFromProto(proto.GetBackupTask()); + if (!parsed) { + return parsed.GetError(); + } + return TSelectorContainer(std::make_shared<TBackupSelector>(parsed.DetachResult())); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/session/selector/abstract/selector.h b/ydb/core/tx/columnshard/export/session/selector/abstract/selector.h new file mode 100644 index 000000000000..78a8268544a0 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/selector/abstract/selector.h @@ -0,0 +1,62 @@ +#pragma once +#include <ydb/library/conclusion/status.h> +#include <ydb/library/conclusion/result.h> +#include <ydb/core/tx/columnshard/export/protos/selector.pb.h> +#include <ydb/services/bg_tasks/abstract/interface.h> +#include <ydb/core/tx/columnshard/export/session/cursor.h> +#include <ydb/core/tx/datashard/datashard.h> + +namespace NKikimrTxColumnShard { +class TBackupTxBody; +} + +namespace NKikimr::NOlap::NExport { + +class ISelector { +protected: + virtual TConclusionStatus DoDeserializeFromProto(const NKikimrColumnShardExportProto::TSelectorContainer& proto) = 0; + virtual void DoSerializeToProto(NKikimrColumnShardExportProto::TSelectorContainer& proto) const = 0; + virtual std::unique_ptr<TEvDataShard::TEvKqpScan> DoBuildRequestInitiator(const TCursor& cursor) const = 0; + +public: + using TProto = NKikimrColumnShardExportProto::TSelectorContainer; + using TFactory = NObjectFactory::TObjectFactory<ISelector, TString>; + + virtual ~ISelector() = default; + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardExportProto::TSelectorContainer& proto) { + return DoDeserializeFromProto(proto); + } + + std::unique_ptr<TEvDataShard::TEvKqpScan> BuildRequestInitiator(const TCursor& cursor) const { + return DoBuildRequestInitiator(cursor); + } + + void SerializeToProto(NKikimrColumnShardExportProto::TSelectorContainer& proto) const { + DoSerializeToProto(proto); + } + + virtual ui64 GetPathId() const = 0; + virtual TString GetClassName() const = 0; +}; + +class TSelectorContainer: public NBackgroundTasks::TInterfaceProtoContainer<ISelector> { +private: + using TBase = NBackgroundTasks::TInterfaceProtoContainer<ISelector>; +public: + using TBase::TBase; + + static TConclusion<TSelectorContainer> BuildFromProto(const NKikimrColumnShardExportProto::TSelectorContainer& proto) { + TSelectorContainer result; + if (!result.DeserializeFromProto(proto)) { + return TConclusionStatus::Fail("cannot parse proto as TSelectorContainer"); + } + return result; + } + + static TConclusion<TSelectorContainer> BuildFromProto(const NKikimrTxColumnShard::TBackupTxBody& proto); + + TString DebugString() const { + return TBase::SerializeToProto().DebugString(); + } +}; +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/session/selector/abstract/ya.make b/ydb/core/tx/columnshard/export/session/selector/abstract/ya.make new file mode 100644 index 000000000000..f0d43e38008d --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/selector/abstract/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + selector.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/export/protos + ydb/services/bg_tasks/abstract + ydb/library/conclusion + ydb/core/protos +) + +END() diff --git a/ydb/core/tx/columnshard/export/session/selector/backup/selector.cpp b/ydb/core/tx/columnshard/export/session/selector/backup/selector.cpp new file mode 100644 index 000000000000..319c94a473c9 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/selector/backup/selector.cpp @@ -0,0 +1,30 @@ +#include "selector.h" +#include <ydb/library/yql/dq/actors/protos/dq_stats.pb.h> + +namespace NKikimr::NOlap::NExport { + +std::unique_ptr<NKikimr::TEvDataShard::TEvKqpScan> TBackupSelector::DoBuildRequestInitiator(const TCursor& cursor) const { + auto ev = std::make_unique<TEvDataShard::TEvKqpScan>(); + ev->Record.SetLocalPathId(TablePathId); + + auto protoRanges = ev->Record.MutableRanges(); + + if (cursor.HasLastKey()) { + auto* newRange = protoRanges->Add(); + TSerializedTableRange(TSerializedCellVec::Serialize(*cursor.GetLastKey()), {}, false, false).Serialize(*newRange); + } + + ev->Record.MutableSnapshot()->SetStep(Snapshot.GetPlanStep()); + ev->Record.MutableSnapshot()->SetTxId(Snapshot.GetTxId()); + ev->Record.SetStatsMode(NYql::NDqProto::EDqStatsMode::DQ_STATS_MODE_NONE); + ev->Record.SetScanId(TablePathId); + ev->Record.SetTxId(TablePathId); + ev->Record.SetTablePath(TableName); + ev->Record.SetSchemaVersion(0); + + ev->Record.SetReverse(false); + ev->Record.SetDataFormat(NKikimrDataEvents::EDataFormat::FORMAT_ARROW); + return ev; +} + +} diff --git a/ydb/core/tx/columnshard/export/session/selector/backup/selector.h b/ydb/core/tx/columnshard/export/session/selector/backup/selector.h new file mode 100644 index 000000000000..2ec27a23ccb1 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/selector/backup/selector.h @@ -0,0 +1,80 @@ +#pragma once +#include <ydb/core/tx/columnshard/export/session/selector/abstract/selector.h> +#include <ydb/core/tx/columnshard/common/snapshot.h> +#include <ydb/core/protos/flat_scheme_op.pb.h> + +namespace NKikimr::NOlap::NExport { + +class TBackupSelector: public ISelector { +public: + static TString GetClassNameStatic() { + return "BACKUP"; + } +private: + TSnapshot Snapshot = TSnapshot::Zero(); + TString TableName; + ui64 TablePathId; + static inline const TFactory::TRegistrator<TBackupSelector> Registrator = TFactory::TRegistrator<TBackupSelector>(GetClassNameStatic()); + + TConclusionStatus Validate() const { + if (!Snapshot.Valid()) { + return TConclusionStatus::Fail("invalid snapshot"); + } + if (!TablePathId) { + return TConclusionStatus::Fail("invalid path id"); + } + if (!TableName) { + return TConclusionStatus::Fail("invalid table name"); + } + return TConclusionStatus::Success(); + } +protected: + virtual std::unique_ptr<TEvDataShard::TEvKqpScan> DoBuildRequestInitiator(const TCursor& cursor) const override; + + virtual TConclusionStatus DoDeserializeFromProto(const NKikimrColumnShardExportProto::TSelectorContainer& proto) override { + auto result = Snapshot.DeserializeFromProto(proto.GetBackup().GetSnapshot()); + if (!result) { + return result; + } + TableName = proto.GetBackup().GetTableName(); + TablePathId = proto.GetBackup().GetTablePathId(); + return Validate(); + } + + virtual void DoSerializeToProto(NKikimrColumnShardExportProto::TSelectorContainer& proto) const override { + *proto.MutableBackup()->MutableSnapshot() = Snapshot.SerializeToProto(); + proto.MutableBackup()->SetTablePathId(TablePathId); + proto.MutableBackup()->SetTableName(TableName); + } + + TConclusionStatus DeserializeFromProto(const NKikimrSchemeOp::TBackupTask& proto) { + Snapshot = TSnapshot(proto.GetSnapshotStep(), proto.GetSnapshotTxId()); + TableName = proto.GetTableName(); + TablePathId = proto.GetTableId(); + return Validate(); + } +public: + TBackupSelector() = default; + TBackupSelector(const TSnapshot& snapshot) + : Snapshot(snapshot) { + + } + + virtual ui64 GetPathId() const override { + return TablePathId; + } + + static TConclusion<TBackupSelector> BuildFromProto(const NKikimrSchemeOp::TBackupTask& proto) { + TBackupSelector result; + auto parsed = result.DeserializeFromProto(proto); + if (!parsed) { + return parsed; + } + return result; + } + + virtual TString GetClassName() const override { + return GetClassNameStatic(); + } +}; +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/session/selector/backup/ya.make b/ydb/core/tx/columnshard/export/session/selector/backup/ya.make new file mode 100644 index 000000000000..e941fe19565e --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/selector/backup/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +SRCS( + GLOBAL selector.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/export/session/selector/abstract + ydb/core/protos + ydb/library/yql/dq/actors/protos +) + +END() diff --git a/ydb/core/tx/columnshard/export/session/selector/ya.make b/ydb/core/tx/columnshard/export/session/selector/ya.make new file mode 100644 index 000000000000..8b8446f1abba --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/selector/ya.make @@ -0,0 +1,11 @@ +LIBRARY() + +SRCS( +) + +PEERDIR( + ydb/core/tx/columnshard/export/session/selector/abstract + ydb/core/tx/columnshard/export/session/selector/backup +) + +END() diff --git a/ydb/core/tx/columnshard/export/session/session.cpp b/ydb/core/tx/columnshard/export/session/session.cpp new file mode 100644 index 000000000000..eb027a295ae0 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/session.cpp @@ -0,0 +1,65 @@ +#include "session.h" +#include <ydb/core/tablet_flat/flat_cxx_database.h> +#include <ydb/core/tablet_flat/tablet_flat_executor.h> +#include <ydb/core/tx/columnshard/columnshard_schema.h> +#include <ydb/core/tx/columnshard/export/actor/export_actor.h> +#include <ydb/core/tx/columnshard/export/transactions/tx_save_cursor.h> +#include <ydb/core/tx/columnshard/export/protos/task.pb.h> +#include <ydb/core/tx/columnshard/export/protos/cursor.pb.h> + +namespace NKikimr::NOlap::NExport { + +TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> TSession::SaveCursorTx(NColumnShard::TColumnShard* shard, TCursor&& newCursor, const std::shared_ptr<TSession>& selfPtr) const { + AFL_VERIFY(IsStarted()); + AFL_VERIFY(ExportActorId); + return std::unique_ptr<NTabletFlatExecutor::ITransaction>(new TTxSaveCursor(shard, selfPtr, std::move(newCursor), *ExportActorId)); +} + +void TSession::Stop() { + if (IsStarted()) { + AFL_VERIFY(ExportActorId); + NActors::TActivationContext::AsActorContext().Send(*ExportActorId, new TEvents::TEvPoisonPill); + ExportActorId = {}; + } +} + +bool TSession::Start(const std::shared_ptr<IStoragesManager>& storages, const TTabletId tabletId, const TActorId& tabletActorId) { + AFL_VERIFY(IsConfirmed()); + auto blobsOperator = Task->GetStorageInitializer()->InitializeOperator(storages); + if (!blobsOperator) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "problem_on_export_start")("reason", "cannot_initialize_operator")("problem", blobsOperator.GetErrorMessage()); + return false; + } + AFL_VERIFY(!ExportActorId); + ExportActorId = NActors::TActivationContext::AsActorContext().Register(new TActor(tabletActorId, tabletId, + Task->GetSerializer(), Task->GetSelector(), blobsOperator.DetachResult(), Task->GetIdentifier(), Cursor)); + Status = EStatus::Started; + return true; +} + +void TSession::SaveFullToDB(NTable::TDatabase& tdb) { + using namespace NColumnShard; + NIceDb::TNiceDb db(tdb); + db.Table<Schema::ExportPersistentSessions>().Key(Task->GetIdentifier().ToString()).Update( + NIceDb::TUpdate<Schema::ExportPersistentSessions::Status>(::ToString(Status)), + NIceDb::TUpdate<Schema::ExportPersistentSessions::Cursor>(Cursor.SerializeToProto().SerializeAsString()), + NIceDb::TUpdate<Schema::ExportPersistentSessions::Task>(Task->SerializeToProto().SerializeAsString()) + ); +} + +void TSession::SaveCursorToDB(NTable::TDatabase& tdb) { + using namespace NColumnShard; + NIceDb::TNiceDb db(tdb); + if (Status != EStatus::Started) { + db.Table<Schema::ExportPersistentSessions>().Key(Task->GetIdentifier().ToString()).Update( + NIceDb::TUpdate<Schema::ExportPersistentSessions::Status>(::ToString(Status)), + NIceDb::TUpdate<Schema::ExportPersistentSessions::Cursor>(Cursor.SerializeToProto().SerializeAsString()) + ); + } else { + db.Table<Schema::ExportPersistentSessions>().Key(Task->GetIdentifier().ToString()).Update( + NIceDb::TUpdate<Schema::ExportPersistentSessions::Cursor>(Cursor.SerializeToProto().SerializeAsString()) + ); + } +} + +} diff --git a/ydb/core/tx/columnshard/export/session/session.h b/ydb/core/tx/columnshard/export/session/session.h new file mode 100644 index 000000000000..67beeb5c74dc --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/session.h @@ -0,0 +1,98 @@ +#pragma once +#include "task.h" +#include "cursor.h" +#include <ydb/core/tablet_flat/flat_database.h> +#include <ydb/core/tx/columnshard/common/tablet_id.h> + +namespace NKikimr::NColumnShard { +class TColumnShard; +} + +namespace NKikimr::NTabletFlatExecutor { +class ITransaction; +} + +namespace NKikimr::NOlap { +class IStoragesManager; +} + +namespace NKikimr::NOlap::NExport { + class TSession { + public: + enum class EStatus: ui64 { + Draft = 0 /*"draft"*/, + Confirmed = 1 /*"confirmed"*/, + Started = 2 /*"started"*/, + Finished = 3 /*"finished"*/ + }; + + private: + std::shared_ptr<TExportTask> Task; + EStatus Status = EStatus::Draft; + TCursor Cursor; + std::optional<TActorId> ExportActorId; + public: + void SetCursor(const TCursor& cursor) { + Cursor = cursor; + if (Cursor.IsFinished()) { + Finish(); + } + } + + TSession(const std::shared_ptr<TExportTask>& task) + : Task(task) { + AFL_VERIFY(Task); + } + + TSession(const std::shared_ptr<TExportTask>& task, const EStatus status, TCursor&& cursor) + : Task(task) + , Status(status) + , Cursor(std::move(cursor)) { + AFL_VERIFY(Status != EStatus::Started); + AFL_VERIFY(Task); + } + + bool IsConfirmed() const { + return Status == EStatus::Confirmed; + } + + void SaveFullToDB(NTable::TDatabase& tdb); + + void SaveCursorToDB(NTable::TDatabase& tdb); + + [[nodiscard]] TConclusion<std::unique_ptr<NTabletFlatExecutor::ITransaction>> SaveCursorTx(NColumnShard::TColumnShard* shard, TCursor&& newCursor, const std::shared_ptr<TSession>& selfPtr) const; + + const TCursor& GetCursor() const { + return Cursor; + } + + TString DebugString() const { + return TStringBuilder() << "task=" << Task->DebugString() << ";status=" << Status; + } + + bool IsDraft() const { + return Status == EStatus::Draft; + } + + void Confirm() { + AFL_VERIFY(IsDraft()); + Status = EStatus::Confirmed; + } + + bool IsStarted() const { + return Status == EStatus::Started; + } + + const TIdentifier& GetIdentifier() const { + return Task->GetIdentifier(); + } + + [[nodiscard]] bool Start(const std::shared_ptr<IStoragesManager>& storages, const TTabletId tabletId, const TActorId& tabletActorId); + void Stop(); + void Finish() { + AFL_VERIFY(Status == EStatus::Started); + Status = EStatus::Finished; + } + + }; +} diff --git a/ydb/core/tx/columnshard/export/session/storage/abstract/storage.cpp b/ydb/core/tx/columnshard/export/session/storage/abstract/storage.cpp new file mode 100644 index 000000000000..f7cc791f14dc --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/storage/abstract/storage.cpp @@ -0,0 +1,15 @@ +#include "storage.h" +#include <ydb/core/tx/columnshard/export/session/storage/s3/storage.h> +#include <ydb/core/protos/tx_columnshard.pb.h> +#include <ydb/core/protos/flat_scheme_op.pb.h> + +namespace NKikimr::NOlap::NExport { + +NKikimr::TConclusion<TStorageInitializerContainer> TStorageInitializerContainer::BuildFromProto(const NKikimrTxColumnShard::TBackupTxBody& proto) { + if (!proto.GetBackupTask().HasS3Settings()) { + return TConclusionStatus::Fail("s3 settings not found in backup task"); + } + return TStorageInitializerContainer(std::make_shared<TS3StorageInitializer>("BACKUP", proto.GetBackupTask().GetS3Settings())); +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/session/storage/abstract/storage.h b/ydb/core/tx/columnshard/export/session/storage/abstract/storage.h new file mode 100644 index 000000000000..f4991e153ffb --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/storage/abstract/storage.h @@ -0,0 +1,63 @@ +#pragma once +#include <ydb/library/conclusion/status.h> +#include <ydb/library/conclusion/result.h> +#include <ydb/core/tx/columnshard/export/protos/storage.pb.h> +#include <ydb/services/bg_tasks/abstract/interface.h> + +namespace NKikimr::NOlap { +class IStoragesManager; +class IBlobsStorageOperator; +} + +namespace NKikimrTxColumnShard { +class TBackupTxBody; +} + +namespace NKikimr::NOlap::NExport { + +class IStorageInitializer { +protected: + virtual TConclusionStatus DoDeserializeFromProto(const NKikimrColumnShardExportProto::TStorageInitializerContainer& proto) = 0; + virtual void DoSerializeToProto(NKikimrColumnShardExportProto::TStorageInitializerContainer& proto) const = 0; + virtual TConclusion<std::shared_ptr<IBlobsStorageOperator>> DoInitializeOperator(const std::shared_ptr<IStoragesManager>& storages) const = 0; +public: + using TProto = NKikimrColumnShardExportProto::TStorageInitializerContainer; + using TFactory = NObjectFactory::TObjectFactory<IStorageInitializer, TString>; + + virtual ~IStorageInitializer() = default; + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardExportProto::TStorageInitializerContainer& proto) { + return DoDeserializeFromProto(proto); + } + + TConclusion<std::shared_ptr<IBlobsStorageOperator>> InitializeOperator(const std::shared_ptr<IStoragesManager>& storages) const { + return DoInitializeOperator(storages); + } + + void SerializeToProto(NKikimrColumnShardExportProto::TStorageInitializerContainer& proto) const { + DoSerializeToProto(proto); + } + + virtual TString GetClassName() const = 0; +}; + +class TStorageInitializerContainer: public NBackgroundTasks::TInterfaceProtoContainer<IStorageInitializer> { +private: + using TBase = NBackgroundTasks::TInterfaceProtoContainer<IStorageInitializer>; +public: + using TBase::TBase; + + static TConclusion<TStorageInitializerContainer> BuildFromProto(const NKikimrColumnShardExportProto::TStorageInitializerContainer& proto) { + TStorageInitializerContainer result; + if (!result.DeserializeFromProto(proto)) { + return TConclusionStatus::Fail("cannot parse proto as TSelectorContainer"); + } + return result; + } + + static TConclusion<TStorageInitializerContainer> BuildFromProto(const NKikimrTxColumnShard::TBackupTxBody& proto); + + TString DebugString() const { + return TBase::SerializeToProto().DebugString(); + } +}; +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/session/storage/abstract/ya.make b/ydb/core/tx/columnshard/export/session/storage/abstract/ya.make new file mode 100644 index 000000000000..587502a776ef --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/storage/abstract/ya.make @@ -0,0 +1,15 @@ +LIBRARY() + +SRCS( + storage.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/export/session/storage/s3 + ydb/core/tx/columnshard/export/protos + ydb/services/bg_tasks/abstract + ydb/library/conclusion + ydb/core/protos +) + +END() diff --git a/ydb/core/tx/columnshard/export/session/storage/s3/storage.cpp b/ydb/core/tx/columnshard/export/session/storage/s3/storage.cpp new file mode 100644 index 000000000000..e3bbce9d4c92 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/storage/s3/storage.cpp @@ -0,0 +1,25 @@ +#include "storage.h" +#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> +#ifndef KIKIMR_DISABLE_S3_OPS +#include <ydb/core/tx/columnshard/blobs_action/tier/storage.h> +#include <ydb/core/wrappers/abstract.h> +#endif +#include <ydb/core/tx/columnshard/data_sharing/manager/shared_blobs.h> + +namespace NKikimr::NOlap::NExport { + +NKikimr::TConclusion<std::shared_ptr<IBlobsStorageOperator>> TS3StorageInitializer::DoInitializeOperator(const std::shared_ptr<IStoragesManager>& storages) const { +#ifndef KIKIMR_DISABLE_S3_OPS + auto extStorageConfig = NWrappers::NExternalStorage::IExternalStorageConfig::Construct(S3Settings); + if (!extStorageConfig) { + return TConclusionStatus::Fail("cannot build operator with this config: " + S3Settings.DebugString()); + } + return std::shared_ptr<IBlobsStorageOperator>(new NBlobOperations::NTier::TOperator("__EXPORT:" + StorageName, NActors::TActorId(), extStorageConfig, + std::make_shared<NDataSharing::TStorageSharedBlobsManager>("__EXPORT:" + StorageName, storages->GetSharedBlobsManager()->GetSelfTabletId()))); +#else + Y_UNUSED(storages); + return TConclusionStatus::Fail("s3 not supported"); +#endif +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/session/storage/s3/storage.h b/ydb/core/tx/columnshard/export/session/storage/s3/storage.h new file mode 100644 index 000000000000..1713875faae5 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/storage/s3/storage.h @@ -0,0 +1,44 @@ +#pragma once +#include <ydb/core/tx/columnshard/export/session/storage/abstract/storage.h> + +namespace NKikimr::NOlap::NExport { + +class TS3StorageInitializer: public IStorageInitializer { +public: + static TString GetClassNameStatic() { + return "S3"; + } +private: + TString StorageName; + NKikimrSchemeOp::TS3Settings S3Settings; + static inline const TFactory::TRegistrator<TS3StorageInitializer> Registrator = TFactory::TRegistrator<TS3StorageInitializer>(GetClassNameStatic()); +protected: + virtual TConclusion<std::shared_ptr<IBlobsStorageOperator>> DoInitializeOperator(const std::shared_ptr<IStoragesManager>& storages) const override; +public: + TS3StorageInitializer() = default; + TS3StorageInitializer(const TString& storageName, const NKikimrSchemeOp::TS3Settings& s3Settings) + : StorageName(storageName) + , S3Settings(s3Settings) + { + + } + + virtual TConclusionStatus DoDeserializeFromProto(const NKikimrColumnShardExportProto::TStorageInitializerContainer& proto) override { + if (!proto.HasExternalS3()) { + return TConclusionStatus::Fail("has not s3 configuration"); + } + S3Settings = proto.GetExternalS3().GetSettings(); + StorageName = proto.GetExternalS3().GetStorageName(); + return TConclusionStatus::Success(); + } + + virtual void DoSerializeToProto(NKikimrColumnShardExportProto::TStorageInitializerContainer& proto) const override { + *proto.MutableExternalS3()->MutableSettings() = S3Settings; + proto.MutableExternalS3()->SetStorageName(StorageName); + } + + virtual TString GetClassName() const override { + return GetClassNameStatic(); + } +}; +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/session/storage/s3/ya.make b/ydb/core/tx/columnshard/export/session/storage/s3/ya.make new file mode 100644 index 000000000000..235ad58af4cb --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/storage/s3/ya.make @@ -0,0 +1,23 @@ +LIBRARY() + +SRCS( + GLOBAL storage.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/export/session/selector/abstract + ydb/core/tx/columnshard/blobs_action/abstract + ydb/core/wrappers +) + +IF (OS_WINDOWS) + CFLAGS( + -DKIKIMR_DISABLE_S3_OPS + ) +ELSE() + PEERDIR( + ydb/core/tx/columnshard/blobs_action/tier + ) +ENDIF() + +END() diff --git a/ydb/core/tx/columnshard/export/session/storage/tier/storage.cpp b/ydb/core/tx/columnshard/export/session/storage/tier/storage.cpp new file mode 100644 index 000000000000..45e2d449b3c2 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/storage/tier/storage.cpp @@ -0,0 +1,14 @@ +#include "storage.h" +#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> + +namespace NKikimr::NOlap::NExport { + +NKikimr::TConclusion<std::shared_ptr<IBlobsStorageOperator>> TTierStorageInitializer::DoInitializeOperator(const std::shared_ptr<IStoragesManager>& storages) const { + auto bOperator = storages->GetOperatorOptional(TierName); + if (!bOperator) { + return TConclusionStatus::Fail("cannot find tier with name '" + TierName + "' for export destination"); + } + return bOperator; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/session/storage/tier/storage.h b/ydb/core/tx/columnshard/export/session/storage/tier/storage.h new file mode 100644 index 000000000000..84ea3465f2c4 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/storage/tier/storage.h @@ -0,0 +1,40 @@ +#pragma once +#include <ydb/core/tx/columnshard/export/session/storage/abstract/storage.h> + +namespace NKikimr::NOlap::NExport { + +class TTierStorageInitializer: public IStorageInitializer { +public: + static TString GetClassNameStatic() { + return "TIER"; + } +private: + TString TierName; + static inline const TFactory::TRegistrator<TTierStorageInitializer> Registrator = TFactory::TRegistrator<TTierStorageInitializer>(GetClassNameStatic()); +protected: + virtual TConclusion<std::shared_ptr<IBlobsStorageOperator>> DoInitializeOperator(const std::shared_ptr<IStoragesManager>& storages) const override; +public: + TTierStorageInitializer() = default; + TTierStorageInitializer(const TString& tierName) + : TierName(tierName) + { + + } + + virtual TConclusionStatus DoDeserializeFromProto(const NKikimrColumnShardExportProto::TStorageInitializerContainer& proto) override { + if (!proto.HasTier()) { + return TConclusionStatus::Fail("has not tier configuration"); + } + TierName = proto.GetTier().GetTierName(); + return TConclusionStatus::Success(); + } + + virtual void DoSerializeToProto(NKikimrColumnShardExportProto::TStorageInitializerContainer& proto) const override { + proto.MutableTier()->SetTierName(TierName); + } + + virtual TString GetClassName() const override { + return GetClassNameStatic(); + } +}; +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/export/session/storage/tier/ya.make b/ydb/core/tx/columnshard/export/session/storage/tier/ya.make new file mode 100644 index 000000000000..e2d3bc839b86 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/storage/tier/ya.make @@ -0,0 +1,11 @@ +LIBRARY() + +SRCS( + GLOBAL storage.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/export/session/selector/abstract +) + +END() diff --git a/ydb/core/tx/columnshard/export/session/storage/ya.make b/ydb/core/tx/columnshard/export/session/storage/ya.make new file mode 100644 index 000000000000..cd447f751650 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/storage/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +SRCS( +) + +PEERDIR( + ydb/core/tx/columnshard/export/session/storage/abstract + ydb/core/tx/columnshard/export/session/storage/s3 + ydb/core/tx/columnshard/export/session/storage/tier +) + +END() diff --git a/ydb/core/tx/columnshard/export/session/task.cpp b/ydb/core/tx/columnshard/export/session/task.cpp new file mode 100644 index 000000000000..fd396f1b0895 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/task.cpp @@ -0,0 +1,48 @@ +#include "session.h" +#include <ydb/core/tx/columnshard/export/protos/task.pb.h> + +namespace NKikimr::NOlap::NExport { + +NKikimr::TConclusionStatus TExportTask::DeserializeFromProto(const NKikimrColumnShardExportProto::TExportTask& proto) { + auto id = TIdentifier::BuildFromProto(proto.GetIdentifier()); + if (!id) { + return id; + } + auto selector = TSelectorContainer::BuildFromProto(proto.GetSelector()); + if (!selector) { + return selector; + } + auto initializer = TStorageInitializerContainer::BuildFromProto(proto.GetStorageInitializer()); + if (!initializer) { + return initializer; + } + auto serializer = NArrow::NSerialization::TSerializerContainer::BuildFromProto(proto.GetSerializer()); + if (!serializer) { + return serializer; + } + Identifier = id.DetachResult(); + Selector = selector.DetachResult(); + StorageInitializer = initializer.DetachResult(); + Serializer = serializer.DetachResult(); + return TConclusionStatus::Success(); +} + +NKikimrColumnShardExportProto::TExportTask TExportTask::SerializeToProto() const { + NKikimrColumnShardExportProto::TExportTask result; + *result.MutableIdentifier() = Identifier.SerializeToProto(); + *result.MutableSelector() = Selector.SerializeToProto(); + *result.MutableStorageInitializer() = StorageInitializer.SerializeToProto(); + *result.MutableSerializer() = Serializer.SerializeToProto(); + return result; +} + +NKikimr::TConclusion<NKikimr::NOlap::NExport::TExportTask> TExportTask::BuildFromProto(const NKikimrColumnShardExportProto::TExportTask& proto) { + TExportTask result; + auto resultParsed = result.DeserializeFromProto(proto); + if (!resultParsed) { + return resultParsed; + } + return result; +} + +} diff --git a/ydb/core/tx/columnshard/export/session/task.h b/ydb/core/tx/columnshard/export/session/task.h new file mode 100644 index 000000000000..144305d27515 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/task.h @@ -0,0 +1,49 @@ +#pragma once +#include "selector/abstract/selector.h" +#include "storage/abstract/storage.h" + +#include <ydb/core/tx/columnshard/export/common/identifier.h> +#include <ydb/core/formats/arrow/serializer/abstract.h> + +#include <ydb/library/conclusion/status.h> +#include <ydb/library/conclusion/result.h> + +namespace NKikimrColumnShardExportProto { +class TExportTask; +} + +namespace NKikimr::NOlap::NExport { + +class TExportTask { +private: + TIdentifier Identifier = TIdentifier(0); + YDB_READONLY_DEF(TSelectorContainer, Selector); + YDB_READONLY_DEF(TStorageInitializerContainer, StorageInitializer); + YDB_READONLY_DEF(NArrow::NSerialization::TSerializerContainer, Serializer); + + TExportTask() = default; + + TConclusionStatus DeserializeFromProto(const NKikimrColumnShardExportProto::TExportTask& proto); + +public: + NKikimrColumnShardExportProto::TExportTask SerializeToProto() const; + + static TConclusion<TExportTask> BuildFromProto(const NKikimrColumnShardExportProto::TExportTask& proto); + + const TIdentifier& GetIdentifier() const { + return Identifier; + } + + TExportTask(const TIdentifier& id, const TSelectorContainer& selector, const TStorageInitializerContainer& storageInitializer, const NArrow::NSerialization::TSerializerContainer& serializer) + : Identifier(id) + , Selector(selector) + , StorageInitializer(storageInitializer) + , Serializer(serializer) + { + } + + TString DebugString() const { + return TStringBuilder() << "{task_id=" << Identifier.DebugString() << ";selector=" << Selector.DebugString() << ";}"; + } +}; +} diff --git a/ydb/core/tx/columnshard/export/session/ya.make b/ydb/core/tx/columnshard/export/session/ya.make new file mode 100644 index 000000000000..a7ac2661e309 --- /dev/null +++ b/ydb/core/tx/columnshard/export/session/ya.make @@ -0,0 +1,20 @@ +LIBRARY() + +SRCS( + session.cpp + cursor.cpp + task.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/export/session/selector + ydb/core/tx/columnshard/export/session/storage + ydb/core/scheme + ydb/core/tx/columnshard/export/protos + ydb/core/tablet_flat + ydb/core/tx/columnshard/export/transactions +) + +GENERATE_ENUM_SERIALIZATION(session.h) + +END() diff --git a/ydb/core/tx/columnshard/export/transactions/tx_save_cursor.cpp b/ydb/core/tx/columnshard/export/transactions/tx_save_cursor.cpp new file mode 100644 index 000000000000..159c0b492933 --- /dev/null +++ b/ydb/core/tx/columnshard/export/transactions/tx_save_cursor.cpp @@ -0,0 +1,23 @@ +#include "tx_save_cursor.h" +#include <ydb/core/tx/columnshard/export/session/session.h> +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> + +namespace NKikimr::NOlap::NExport { + +bool TTxSaveCursor::Execute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& /*ctx*/) { + TSession copy = *Session; + copy.SetCursor(Cursor); + copy.SaveCursorToDB(txc.DB); + return true; +} + +void TTxSaveCursor::Complete(const TActorContext& ctx) { + Session->SetCursor(Cursor); + if (!Cursor.IsFinished()) { + ctx.Send(ExportActorId, new NEvents::TEvExportCursorSaved); + } else { + NYDBTest::TControllers::GetColumnShardController()->OnExportFinished(); + } +} + +} diff --git a/ydb/core/tx/columnshard/export/transactions/tx_save_cursor.h b/ydb/core/tx/columnshard/export/transactions/tx_save_cursor.h new file mode 100644 index 000000000000..94023bf8a21a --- /dev/null +++ b/ydb/core/tx/columnshard/export/transactions/tx_save_cursor.h @@ -0,0 +1,26 @@ +#pragma once +#include <ydb/core/tx/columnshard/columnshard_impl.h> + +namespace NKikimr::NOlap::NExport { +class TSession; +class TTxSaveCursor: public NColumnShard::TTransactionBase<NColumnShard::TColumnShard> { +private: + using TBase = NColumnShard::TTransactionBase<NColumnShard::TColumnShard>; + const TCursor Cursor; + const TActorId ExportActorId; + std::shared_ptr<TSession> Session; +public: + TTxSaveCursor(NColumnShard::TColumnShard* self, const std::shared_ptr<TSession>& session, TCursor&& cursor, const TActorId& exportActorId) + : TBase(self) + , Cursor(std::move(cursor)) + , ExportActorId(exportActorId) + , Session(session) + { + } + + bool Execute(NTabletFlatExecutor::TTransactionContext& txc, const TActorContext& /*ctx*/) override; + void Complete(const TActorContext& ctx) override; + TTxType GetTxType() const override { return NColumnShard::TXTYPE_EXPORT_SAVE_CURSOR; } +}; + +} diff --git a/ydb/core/tx/columnshard/export/transactions/ya.make b/ydb/core/tx/columnshard/export/transactions/ya.make new file mode 100644 index 000000000000..bd05fac6fa49 --- /dev/null +++ b/ydb/core/tx/columnshard/export/transactions/ya.make @@ -0,0 +1,14 @@ +LIBRARY() + +SRCS( + tx_save_cursor.cpp +) + +PEERDIR( + ydb/core/protos + ydb/core/tx/columnshard/export/protos + ydb/core/tx/columnshard/blobs_action + ydb/services/metadata/abstract +) + +END() diff --git a/ydb/core/tx/columnshard/export/ya.make b/ydb/core/tx/columnshard/export/ya.make new file mode 100644 index 000000000000..99e9dcb669d9 --- /dev/null +++ b/ydb/core/tx/columnshard/export/ya.make @@ -0,0 +1,16 @@ +LIBRARY() + +SRCS( +) + +PEERDIR( + ydb/core/tx/columnshard/export/session + ydb/core/tx/columnshard/export/manager + ydb/core/tx/columnshard/export/actor + ydb/core/tx/columnshard/export/events + ydb/core/tx/columnshard/export/protos + ydb/core/tx/columnshard/export/common + ydb/core/tx/columnshard/export/transactions +) + +END() diff --git a/ydb/core/tx/columnshard/hooks/abstract/abstract.h b/ydb/core/tx/columnshard/hooks/abstract/abstract.h index e9b9144cacbb..f1665ee4de71 100644 --- a/ydb/core/tx/columnshard/hooks/abstract/abstract.h +++ b/ydb/core/tx/columnshard/hooks/abstract/abstract.h @@ -1,6 +1,7 @@ #pragma once #include <ydb/core/tablet_flat/tablet_flat_executor.h> +#include <ydb/core/tx/columnshard/engines/writer/write_controller.h> #include <ydb/services/metadata/abstract/fetcher.h> #include <ydb/core/tx/tiering/snapshot.h> @@ -11,16 +12,18 @@ #include <util/datetime/base.h> #include <memory> -namespace NKikimr::NOlap::NIndexedReader { -class IOrderPolicy; -} - namespace NKikimr::NColumnShard { class TTiersManager; +class TColumnShard; } namespace NKikimr::NOlap { class TColumnEngineChanges; +class IBlobsGCAction; +class TPortionInfo; +namespace NStatistics { +class TOperatorContainer; +} } namespace arrow { class RecordBatch; @@ -44,48 +47,126 @@ class ILocalDBModifier { }; class ICSController { -private: - YDB_READONLY(TAtomicCounter, OnSortingPolicyCounter, 0); +public: + enum class EBackground { + Indexation, + Compaction, + TTL, + Cleanup, + GC + }; protected: - virtual bool DoOnSortingPolicy(std::shared_ptr<NOlap::NIndexedReader::IOrderPolicy> /*policy*/) { - return true; + virtual void DoOnTabletInitCompleted(const ::NKikimr::NColumnShard::TColumnShard& /*shard*/) { + return; + } + virtual void DoOnTabletStopped(const ::NKikimr::NColumnShard::TColumnShard& /*shard*/) { + return; } virtual bool DoOnAfterFilterAssembling(const std::shared_ptr<arrow::RecordBatch>& /*batch*/) { return true; } - virtual bool DoOnStartCompaction(std::shared_ptr<NOlap::TColumnEngineChanges>& /*changes*/) { + virtual bool DoOnWriteIndexComplete(const NOlap::TColumnEngineChanges& /*changes*/, const ::NKikimr::NColumnShard::TColumnShard& /*shard*/) { return true; } - virtual bool DoOnWriteIndexComplete(const ui64 /*tabletId*/, const TString& /*changeClassName*/) { + virtual bool DoOnWriteIndexStart(const ui64 /*tabletId*/, NOlap::TColumnEngineChanges& /*change*/) { return true; } - virtual bool DoOnWriteIndexStart(const ui64 /*tabletId*/, const TString& /*changeClassName*/) { - return true; + virtual void DoOnAfterSharingSessionsManagerStart(const NColumnShard::TColumnShard& /*shard*/) { + } + virtual void DoOnAfterGCAction(const NColumnShard::TColumnShard& /*shard*/, const NOlap::IBlobsGCAction& /*action*/) { + } + virtual void DoOnDataSharingFinished(const ui64 /*tabletId*/, const TString& /*sessionId*/) { + } + virtual void DoOnDataSharingStarted(const ui64 /*tabletId*/, const TString & /*sessionId*/) { } public: + virtual bool IsBackgroundEnabled(const EBackground /*id*/) const { + return true; + } + using TPtr = std::shared_ptr<ICSController>; virtual ~ICSController() = default; - bool OnSortingPolicy(std::shared_ptr<NOlap::NIndexedReader::IOrderPolicy> policy) { - OnSortingPolicyCounter.Inc(); - return DoOnSortingPolicy(policy); + + virtual NColumnShard::TBlobPutResult::TPtr OverrideBlobPutResultOnCompaction(const NColumnShard::TBlobPutResult::TPtr original, const NOlap::TWriteActionsCollection& /*actions*/) const { + return original; + } + + virtual ui64 GetReduceMemoryIntervalLimit(const ui64 def) const { + return def; + } + virtual ui64 GetRejectMemoryIntervalLimit(const ui64 def) const { + return def; + } + virtual bool NeedForceCompactionBacketsConstruction() const { + return false; + } + virtual ui64 GetSmallPortionSizeDetector(const ui64 def) const { + return def; + } + virtual void OnExportFinished() { + + } + virtual void OnActualizationRefreshScheme() { + + } + virtual void OnActualizationRefreshTiering() { + } + virtual void AddPortionForActualizer(const i32 /*portionsCount*/) { + + } + + void OnDataSharingFinished(const ui64 tabletId, const TString& sessionId) { + return DoOnDataSharingFinished(tabletId, sessionId); + } + void OnDataSharingStarted(const ui64 tabletId, const TString& sessionId) { + return DoOnDataSharingStarted(tabletId, sessionId); + } + virtual void OnStatisticsUsage(const NOlap::NStatistics::TOperatorContainer& /*statOperator*/) { + + } + virtual void OnPortionActualization(const NOlap::TPortionInfo& /*info*/) { + + } + virtual void OnMaxValueUsage() { + } + + virtual TDuration GetLagForCompactionBeforeTierings(const TDuration def) const { + return def; + } + + void OnTabletInitCompleted(const NColumnShard::TColumnShard& shard) { + DoOnTabletInitCompleted(shard); + } + + void OnTabletStopped(const NColumnShard::TColumnShard& shard) { + DoOnTabletStopped(shard); + } + + void OnAfterGCAction(const NColumnShard::TColumnShard& shard, const NOlap::IBlobsGCAction& action) { + DoOnAfterGCAction(shard, action); + } + bool OnAfterFilterAssembling(const std::shared_ptr<arrow::RecordBatch>& batch) { return DoOnAfterFilterAssembling(batch); } - bool OnWriteIndexComplete(const ui64 tabletId, const TString& changeClassName) { - return DoOnWriteIndexComplete(tabletId, changeClassName); + bool OnWriteIndexComplete(const NOlap::TColumnEngineChanges& changes, const NColumnShard::TColumnShard& shard) { + return DoOnWriteIndexComplete(changes, shard); } - bool OnWriteIndexStart(const ui64 tabletId, const TString& changeClassName) { - return DoOnWriteIndexStart(tabletId, changeClassName); + void OnAfterSharingSessionsManagerStart(const NColumnShard::TColumnShard& shard) { + return DoOnAfterSharingSessionsManagerStart(shard); } - bool OnStartCompaction(std::shared_ptr<NOlap::TColumnEngineChanges>& changes) { - return DoOnStartCompaction(changes); + bool OnWriteIndexStart(const ui64 tabletId, NOlap::TColumnEngineChanges& change) { + return DoOnWriteIndexStart(tabletId, change); } virtual void OnIndexSelectProcessed(const std::optional<bool> /*result*/) { } + virtual TDuration GetReadTimeoutClean(const TDuration def) { + return def; + } virtual EOptimizerCompactionWeightControl GetCompactionControl() const { - return EOptimizerCompactionWeightControl::Force; + return EOptimizerCompactionWeightControl::Default; } virtual TDuration GetTTLDefaultWaitingDuration(const TDuration defaultValue) const { return defaultValue; @@ -117,6 +198,14 @@ class ICSController { static std::shared_ptr<NColumnShard::NTiers::TConfigsSnapshot> result = std::make_shared<NColumnShard::NTiers::TConfigsSnapshot>(TInstant::Now()); return result; } + + virtual void OnSwitchToWork(const ui64 tabletId) { + Y_UNUSED(tabletId); + } + + virtual void OnCleanupActors(const ui64 tabletId) { + Y_UNUSED(tabletId); + } }; class TControllers { @@ -153,6 +242,12 @@ class TControllers { static ICSController::TPtr GetColumnShardController() { return Singleton<TControllers>()->CSController; } + + template <class T> + static T* GetControllerAs() { + auto controller = Singleton<TControllers>()->CSController; + return dynamic_cast<T*>(controller.get()); + } }; } diff --git a/ydb/core/tx/columnshard/hooks/testing/controller.cpp b/ydb/core/tx/columnshard/hooks/testing/controller.cpp index 2fcf27ebaf76..b320dc6a4505 100644 --- a/ydb/core/tx/columnshard/hooks/testing/controller.cpp +++ b/ydb/core/tx/columnshard/hooks/testing/controller.cpp @@ -1,7 +1,11 @@ #include "controller.h" +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/gc.h> #include <ydb/core/tx/columnshard/engines/column_engine.h> #include <ydb/core/tx/columnshard/engines/changes/compaction.h> #include <ydb/core/tx/columnshard/engines/changes/indexation.h> +#include <ydb/core/tx/columnshard/engines/changes/ttl.h> +#include <ydb/core/tx/columnshard/engines/column_engine_logs.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> namespace NKikimr::NYDBTest::NColumnShard { @@ -13,16 +17,158 @@ bool TController::DoOnAfterFilterAssembling(const std::shared_ptr<arrow::RecordB return true; } -bool TController::DoOnWriteIndexComplete(const ui64 /*tabletId*/, const TString& /*changeClassName*/) { - Indexations.Inc(); +bool TController::DoOnWriteIndexComplete(const NOlap::TColumnEngineChanges& change, const ::NKikimr::NColumnShard::TColumnShard& shard) { + if (change.TypeString() == NOlap::TTTLColumnEngineChanges::StaticTypeName()) { + TTLFinishedCounter.Inc(); + } + if (change.TypeString() == NOlap::TInsertColumnEngineChanges::StaticTypeName()) { + InsertFinishedCounter.Inc(); + } + if (change.TypeString() == NOlap::TCompactColumnEngineChanges::StaticTypeName()) { + CompactionFinishedCounter.Inc(); + } + TGuard<TMutex> g(Mutex); + if (SharingIds.empty()) { + TCheckContext context; + CheckInvariants(shard, context); + } + return true; +} + +bool TController::DoOnWriteIndexStart(const ui64 tabletId, NOlap::TColumnEngineChanges& change) { + AFL_NOTICE(NKikimrServices::TX_COLUMNSHARD)("event", change.TypeString())("tablet_id", tabletId); + if (change.TypeString() == NOlap::TTTLColumnEngineChanges::StaticTypeName()) { + TTLStartedCounter.Inc(); + } + if (change.TypeString() == NOlap::TInsertColumnEngineChanges::StaticTypeName()) { + InsertStartedCounter.Inc(); + } + if (change.TypeString() == NOlap::TCompactColumnEngineChanges::StaticTypeName()) { + CompactionStartedCounter.Inc(); + } return true; } -bool TController::DoOnStartCompaction(std::shared_ptr<NOlap::TColumnEngineChanges>& changes) { - if (auto compaction = dynamic_pointer_cast<NOlap::TCompactColumnEngineChanges>(changes)) { - Compactions.Inc(); +void TController::DoOnAfterGCAction(const ::NKikimr::NColumnShard::TColumnShard& /*shard*/, const NOlap::IBlobsGCAction& action) { + TGuard<TMutex> g(Mutex); + for (auto d = action.GetBlobsToRemove().GetDirect().GetIterator(); d.IsValid(); ++d) { + AFL_VERIFY(RemovedBlobIds[action.GetStorageId()][d.GetBlobId()].emplace(d.GetTabletId()).second); + } +// if (SharingIds.empty()) { +// CheckInvariants(); +// } +} + +void TController::CheckInvariants(const ::NKikimr::NColumnShard::TColumnShard& shard, TCheckContext& context) const { + if (!shard.HasIndex()) { + return; + } + const auto& index = shard.GetIndexAs<NOlap::TColumnEngineForLogs>(); + std::vector<std::shared_ptr<NOlap::TGranuleMeta>> granules = index.GetTables({}, {}); + THashMap<TString, THashSet<NOlap::TUnifiedBlobId>> ids; + for (auto&& i : granules) { + for (auto&& p : i->GetPortions()) { + p.second->FillBlobIdsByStorage(ids, index.GetVersionedIndex()); + } + } + for (auto&& i : ids) { + auto it = RemovedBlobIds.find(i.first); + if (it == RemovedBlobIds.end()) { + continue; + } + for (auto&& b : i.second) { + auto itB = it->second.find(b); + if (itB != it->second.end()) { + AFL_VERIFY(!itB->second.contains((NOlap::TTabletId)shard.TabletID())); + } + } + } + THashMap<TString, NOlap::TBlobsCategories> shardBlobsCategories = shard.GetStoragesManager()->GetSharedBlobsManager()->GetBlobCategories(); + for (auto&& i : shardBlobsCategories) { + auto manager = shard.GetStoragesManager()->GetOperatorVerified(i.first); + const NOlap::TTabletsByBlob blobs = manager->GetBlobsToDelete(); + for (auto b = blobs.GetIterator(); b.IsValid(); ++b) { + i.second.RemoveSharing(b.GetTabletId(), b.GetBlobId()); + } + for (auto b = blobs.GetIterator(); b.IsValid(); ++b) { + i.second.RemoveBorrowed(b.GetTabletId(), b.GetBlobId()); + } + } + context.AddCategories(shard.TabletID(), std::move(shardBlobsCategories)); +} + +TController::TCheckContext TController::CheckInvariants() const { + TGuard<TMutex> g(Mutex); + TCheckContext context; + if (ExpectedShardsCount && *ExpectedShardsCount != ShardActuals.size()) { + return context; + } + for (auto&& i : ShardActuals) { + CheckInvariants(*i.second, context); + } + Cerr << context.DebugString() << Endl; + context.Check(); + return context; +} + +void TController::DoOnTabletInitCompleted(const ::NKikimr::NColumnShard::TColumnShard& shard) { + TGuard<TMutex> g(Mutex); + AFL_VERIFY(ShardActuals.emplace(shard.TabletID(), &shard).second); +} + +void TController::DoOnTabletStopped(const ::NKikimr::NColumnShard::TColumnShard& shard) { + TGuard<TMutex> g(Mutex); + AFL_VERIFY(ShardActuals.erase(shard.TabletID())); +} + +std::vector<ui64> TController::GetPathIds(const ui64 tabletId) const { + TGuard<TMutex> g(Mutex); + std::vector<ui64> result; + for (auto&& i : ShardActuals) { + if (i.first == tabletId) { + const auto& index = i.second->GetIndexAs<NOlap::TColumnEngineForLogs>(); + std::vector<std::shared_ptr<NOlap::TGranuleMeta>> granules = index.GetTables({}, {}); + + for (auto&& g : granules) { + result.emplace_back(g->GetPathId()); + } + break; + } + } + return result; +} + +bool TController::IsTrivialLinks() const { + TGuard<TMutex> g(Mutex); + for (auto&& i : ShardActuals) { + if (!i.second->GetStoragesManager()->GetSharedBlobsManager()->IsTrivialLinks()) { + return false; + } + if (i.second->GetStoragesManager()->HasBlobsToDelete()) { + return false; + } } return true; } +::NKikimr::NColumnShard::TBlobPutResult::TPtr TController::OverrideBlobPutResultOnCompaction(const ::NKikimr::NColumnShard::TBlobPutResult::TPtr original, const NOlap::TWriteActionsCollection& actions) const { + if (IndexWriteControllerEnabled) { + return original; + } + bool found = false; + for (auto&& i : actions) { + if (i.first != NOlap::NBlobOperations::TGlobal::DefaultStorageId) { + found = true; + break; + } + } + if (!found) { + return original; + } + IndexWriteControllerBrokeCount.Inc(); + ::NKikimr::NColumnShard::TBlobPutResult::TPtr result = std::make_shared<::NKikimr::NColumnShard::TBlobPutResult>(*original); + result->SetPutStatus(NKikimrProto::EReplyStatus::ERROR); + return result; +} + } diff --git a/ydb/core/tx/columnshard/hooks/testing/controller.h b/ydb/core/tx/columnshard/hooks/testing/controller.h index 7fc824508e91..c4a82b55d494 100644 --- a/ydb/core/tx/columnshard/hooks/testing/controller.h +++ b/ydb/core/tx/columnshard/hooks/testing/controller.h @@ -1,26 +1,173 @@ #pragma once +#include <ydb/core/tx/columnshard/blobs_action/abstract/blob_set.h> +#include <ydb/core/tx/columnshard/blob.h> +#include <ydb/core/tx/columnshard/common/tablet_id.h> +#include <ydb/core/tx/columnshard/engines/writer/write_controller.h> #include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> +#include <util/string/join.h> namespace NKikimr::NYDBTest::NColumnShard { class TController: public ICSController { private: + YDB_READONLY(TAtomicCounter, TTLFinishedCounter, 0); + YDB_READONLY(TAtomicCounter, TTLStartedCounter, 0); + YDB_READONLY(TAtomicCounter, InsertFinishedCounter, 0); + YDB_READONLY(TAtomicCounter, InsertStartedCounter, 0); + YDB_READONLY(TAtomicCounter, CompactionFinishedCounter, 0); + YDB_READONLY(TAtomicCounter, CompactionStartedCounter, 0); + YDB_READONLY(TAtomicCounter, FilteredRecordsCount, 0); - YDB_READONLY(TAtomicCounter, Compactions, 0); - YDB_READONLY(TAtomicCounter, Indexations, 0); YDB_READONLY(TAtomicCounter, IndexesSkippingOnSelect, 0); YDB_READONLY(TAtomicCounter, IndexesApprovedOnSelect, 0); YDB_READONLY(TAtomicCounter, IndexesSkippedNoData, 0); + YDB_READONLY(TAtomicCounter, TieringUpdates, 0); + YDB_READONLY(TAtomicCounter, NeedActualizationCount, 0); + + YDB_READONLY(TAtomicCounter, ActualizationsCount, 0); + YDB_READONLY(TAtomicCounter, ActualizationRefreshSchemeCount, 0); + YDB_READONLY(TAtomicCounter, ActualizationRefreshTieringCount, 0); + + YDB_ACCESSOR_DEF(std::optional<TDuration>, LagForCompactionBeforeTierings); YDB_ACCESSOR(std::optional<TDuration>, GuaranteeIndexationInterval, TDuration::Zero()); YDB_ACCESSOR(std::optional<TDuration>, PeriodicWakeupActivationPeriod, std::nullopt); YDB_ACCESSOR(std::optional<TDuration>, StatsReportInterval, std::nullopt); YDB_ACCESSOR(std::optional<ui64>, GuaranteeIndexationStartBytesLimit, 0); YDB_ACCESSOR(std::optional<TDuration>, OptimizerFreshnessCheckDuration, TDuration::Zero()); EOptimizerCompactionWeightControl CompactionControl = EOptimizerCompactionWeightControl::Force; + + YDB_ACCESSOR(std::optional<ui64>, OverrideReduceMemoryIntervalLimit, 1024); + YDB_ACCESSOR_DEF(std::optional<ui64>, OverrideRejectMemoryIntervalLimit); + + std::optional<TDuration> ReadTimeoutClean; + std::optional<ui32> ExpectedShardsCount; + + THashMap<ui64, const ::NKikimr::NColumnShard::TColumnShard*> ShardActuals; + THashMap<TString, THashMap<NOlap::TUnifiedBlobId, THashSet<NOlap::TTabletId>>> RemovedBlobIds; + TMutex Mutex; + + YDB_ACCESSOR(bool, IndexWriteControllerEnabled, true); + mutable TAtomicCounter IndexWriteControllerBrokeCount; + std::set<EBackground> DisabledBackgrounds; + + TMutex ActiveTabletsMutex; + std::set<ui64> ActiveTablets; + + class TBlobInfo { + private: + const NOlap::TUnifiedBlobId BlobId; + std::optional<ui64> OwnerTabletId; + THashSet<ui64> SharedTabletIdsFromShared; + THashSet<ui64> SharedTabletIdsFromOwner; + public: + TBlobInfo(const NOlap::TUnifiedBlobId& blobId) + : BlobId(blobId) + { + + } + void AddOwner(const ui64 tabletId) { + if (!OwnerTabletId) { + OwnerTabletId = tabletId; + } else { + AFL_VERIFY(*OwnerTabletId == tabletId); + } + } + + void AddSharingFromOwner(const ui64 tabletId) { + SharedTabletIdsFromOwner.emplace(tabletId); + } + void AddSharingFromShared(const ui64 tabletId) { + SharedTabletIdsFromShared.emplace(tabletId); + } + void Check() const { + AFL_VERIFY(OwnerTabletId); + AFL_VERIFY(SharedTabletIdsFromShared == SharedTabletIdsFromOwner)("blob_id", BlobId.ToStringNew())("shared", JoinSeq(",", SharedTabletIdsFromShared))("owned", JoinSeq(",", SharedTabletIdsFromOwner)); + } + + void DebugString(const TString& delta, TStringBuilder& sb) const { + if (OwnerTabletId) { + sb << delta << "O: " << *OwnerTabletId << Endl; + } + if (SharedTabletIdsFromShared.size()) { + sb << delta << "S: " << JoinSeq(",", SharedTabletIdsFromShared) << Endl; + } + } + }; + + class TCheckContext { + private: + THashMap<TString, THashMap<NOlap::TUnifiedBlobId, TBlobInfo>> Infos; + public: + void Check() const { + for (auto&& i : Infos) { + for (auto&& b : i.second) { + b.second.Check(); + } + } + } + + TString DebugString() const { + TStringBuilder sb; + for (auto&& i : Infos) { + sb << i.first << Endl; + for (auto&& b : i.second) { + sb << " " << b.first << Endl; + b.second.DebugString(" ", sb); + } + } + return sb; + } + + void AddCategories(const ui64 tabletId, THashMap<TString, NOlap::TBlobsCategories>&& categories) { + for (auto&& s : categories) { + for (auto it = s.second.GetDirect().GetIterator(); it.IsValid(); ++it) { + Infos[s.first].emplace(it.GetBlobId(), it.GetBlobId()).first->second.AddOwner((ui64)it.GetTabletId()); + } + for (auto it = s.second.GetBorrowed().GetIterator(); it.IsValid(); ++it) { + Infos[s.first].emplace(it.GetBlobId(), it.GetBlobId()).first->second.AddOwner((ui64)it.GetTabletId()); + Infos[s.first].emplace(it.GetBlobId(), it.GetBlobId()).first->second.AddSharingFromShared((ui64)tabletId); + } + for (auto it = s.second.GetSharing().GetIterator(); it.IsValid(); ++it) { + Infos[s.first].emplace(it.GetBlobId(), it.GetBlobId()).first->second.AddOwner(tabletId); + Infos[s.first].emplace(it.GetBlobId(), it.GetBlobId()).first->second.AddSharingFromOwner((ui64)it.GetTabletId()); + if (it.GetTabletId() == (NOlap::TTabletId)tabletId) { + Infos[s.first].emplace(it.GetBlobId(), it.GetBlobId()).first->second.AddSharingFromShared((ui64)tabletId); + } + } + } + } + }; + + void CheckInvariants(const ::NKikimr::NColumnShard::TColumnShard& shard, TCheckContext& context) const; + + THashSet<TString> SharingIds; protected: + virtual ::NKikimr::NColumnShard::TBlobPutResult::TPtr OverrideBlobPutResultOnCompaction(const ::NKikimr::NColumnShard::TBlobPutResult::TPtr original, const NOlap::TWriteActionsCollection& actions) const override; + virtual TDuration GetLagForCompactionBeforeTierings(const TDuration def) const override { + return LagForCompactionBeforeTierings.value_or(def); + } + + virtual bool IsBackgroundEnabled(const EBackground id) const override { + TGuard<TMutex> g(Mutex); + return !DisabledBackgrounds.contains(id); + } + + virtual void OnPortionActualization(const NOlap::TPortionInfo& /*info*/) override { + ActualizationsCount.Inc(); + } + virtual void OnActualizationRefreshScheme() override { + ActualizationRefreshSchemeCount.Inc(); + } + virtual void OnActualizationRefreshTiering() override { + ActualizationRefreshTieringCount.Inc(); + } + virtual void DoOnTabletInitCompleted(const ::NKikimr::NColumnShard::TColumnShard& shard) override; + virtual void DoOnTabletStopped(const ::NKikimr::NColumnShard::TColumnShard& shard) override; + virtual void DoOnAfterGCAction(const ::NKikimr::NColumnShard::TColumnShard& shard, const NOlap::IBlobsGCAction& action) override; + + virtual bool DoOnWriteIndexStart(const ui64 tabletId, NOlap::TColumnEngineChanges& change) override; virtual bool DoOnAfterFilterAssembling(const std::shared_ptr<arrow::RecordBatch>& batch) override; - virtual bool DoOnStartCompaction(std::shared_ptr<NOlap::TColumnEngineChanges>& changes) override; - virtual bool DoOnWriteIndexComplete(const ui64 /*tabletId*/, const TString& /*changeClassName*/) override; + virtual bool DoOnWriteIndexComplete(const NOlap::TColumnEngineChanges& changes, const ::NKikimr::NColumnShard::TColumnShard& shard) override; virtual TDuration GetGuaranteeIndexationInterval(const TDuration defaultValue) const override { return GuaranteeIndexationInterval.value_or(defaultValue); } @@ -36,11 +183,83 @@ class TController: public ICSController { virtual TDuration GetOptimizerFreshnessCheckDuration(const TDuration defaultValue) const override { return OptimizerFreshnessCheckDuration.value_or(defaultValue); } + virtual TDuration GetReadTimeoutClean(const TDuration def) override { + return ReadTimeoutClean.value_or(def); + } virtual EOptimizerCompactionWeightControl GetCompactionControl() const override { return CompactionControl; } + void OnTieringModified(const std::shared_ptr<NKikimr::NColumnShard::TTiersManager>& /*tiers*/) override { + TieringUpdates.Inc(); + } + + virtual void DoOnDataSharingFinished(const ui64 /*tabletId*/, const TString& sessionId) override { + TGuard<TMutex> g(Mutex); + AFL_VERIFY(SharingIds.erase(sessionId)); + if (SharingIds.empty()) { + CheckInvariants(); + } + } + virtual void DoOnDataSharingStarted(const ui64 /*tabletId*/, const TString& sessionId) override { + TGuard<TMutex> g(Mutex); + if (SharingIds.empty()) { + CheckInvariants(); + } + SharingIds.emplace(sessionId); + } public: + const TAtomicCounter& GetIndexWriteControllerBrokeCount() const { + return IndexWriteControllerBrokeCount; + } + virtual ui64 GetReduceMemoryIntervalLimit(const ui64 def) const override { + return OverrideReduceMemoryIntervalLimit.value_or(def); + } + virtual ui64 GetRejectMemoryIntervalLimit(const ui64 def) const override { + return OverrideRejectMemoryIntervalLimit.value_or(def); + } + bool IsTrivialLinks() const; + TCheckContext CheckInvariants() const; + + ui32 GetShardActualsCount() const { + TGuard<TMutex> g(Mutex); + return ShardActuals.size(); + } + + virtual void AddPortionForActualizer(const i32 portionsCount) override { + NeedActualizationCount.Add(portionsCount); + } + + void DisableBackground(const EBackground id) { + TGuard<TMutex> g(Mutex); + DisabledBackgrounds.emplace(id); + } + + void EnableBackground(const EBackground id) { + TGuard<TMutex> g(Mutex); + DisabledBackgrounds.erase(id); + } + + void WaitActualization(const TDuration d) const { + const TInstant start = TInstant::Now(); + while (TInstant::Now() - start < d && NeedActualizationCount.Val()) { + Cerr << "waiting actualization: " << NeedActualizationCount.Val() << "/" << TInstant::Now() - start << Endl; + Sleep(TDuration::Seconds(1)); + } + AFL_VERIFY(!NeedActualizationCount.Val()); + } + + std::vector<ui64> GetShardActualIds() const { + TGuard<TMutex> g(Mutex); + std::vector<ui64> result; + for (auto&& i : ShardActuals) { + result.emplace_back(i.first); + } + return result; + } + + std::vector<ui64> GetPathIds(const ui64 tabletId) const; + virtual void OnIndexSelectProcessed(const std::optional<bool> result) override { if (!result) { IndexesSkippedNoData.Inc(); @@ -50,13 +269,36 @@ class TController: public ICSController { IndexesSkippingOnSelect.Inc(); } } + void SetExpectedShardsCount(const ui32 value) { + ExpectedShardsCount = value; + } void SetCompactionControl(const EOptimizerCompactionWeightControl value) { CompactionControl = value; } + void SetReadTimeoutClean(const TDuration d) { + ReadTimeoutClean = d; + } bool HasPKSortingOnly() const; - bool HasCompactions() const { - return Compactions.Val(); + + void OnSwitchToWork(const ui64 tabletId) override { + TGuard<TMutex> g(ActiveTabletsMutex); + ActiveTablets.emplace(tabletId); + } + + void OnCleanupActors(const ui64 tabletId) override { + TGuard<TMutex> g(ActiveTabletsMutex); + ActiveTablets.erase(tabletId); + } + + ui64 GetActiveTabletsCount() const { + TGuard<TMutex> g(ActiveTabletsMutex); + return ActiveTablets.size(); + } + + bool IsActiveTablet(const ui64 tabletId) const { + TGuard<TMutex> g(ActiveTabletsMutex); + return ActiveTablets.contains(tabletId); } }; diff --git a/ydb/core/tx/columnshard/inflight_request_tracker.cpp b/ydb/core/tx/columnshard/inflight_request_tracker.cpp new file mode 100644 index 000000000000..98ca6d7ab6da --- /dev/null +++ b/ydb/core/tx/columnshard/inflight_request_tracker.cpp @@ -0,0 +1,90 @@ +#include "inflight_request_tracker.h" +#include "engines/column_engine.h" +#include "engines/reader/plain_reader/constructor/read_metadata.h" + +namespace NKikimr::NColumnShard { + +void TInFlightReadsTracker::RemoveInFlightRequest(ui64 cookie, const NOlap::TVersionedIndex* index) { + Y_ABORT_UNLESS(RequestsMeta.contains(cookie), "Unknown request cookie %" PRIu64, cookie); + const auto& readMetaList = RequestsMeta[cookie]; + + for (const auto& readMetaBase : readMetaList) { + NOlap::NReader::NPlain::TReadMetadata::TConstPtr readMeta = std::dynamic_pointer_cast<const NOlap::NReader::NPlain::TReadMetadata>(readMetaBase); + + if (!readMeta) { + continue; + } + + THashMap<TString, THashSet<NOlap::TUnifiedBlobId>> portionBlobIds; + for (const auto& portion : readMeta->SelectInfo->PortionsOrderedPK) { + const ui64 portionId = portion->GetPortion(); + AFL_VERIFY(index); + portion->FillBlobIdsByStorage(portionBlobIds, *index); + auto it = PortionUseCount.find(portionId); + Y_ABORT_UNLESS(it != PortionUseCount.end(), "Portion id %" PRIu64 " not found in request %" PRIu64, portionId, cookie); + if (it->second == 1) { + PortionUseCount.erase(it); + } else { + it->second--; + } + } + + for (auto&& i : portionBlobIds) { + auto storage = StoragesManager->GetOperatorVerified(i.first); + auto tracker = storage->GetBlobsTracker(); + for (auto& blobId : i.second) { + tracker->FreeBlob(blobId); + } + } + + auto insertStorage = StoragesManager->GetInsertOperator(); + auto tracker = insertStorage->GetBlobsTracker(); + for (const auto& committedBlob : readMeta->CommittedBlobs) { + tracker->FreeBlob(committedBlob.GetBlobRange().GetBlobId()); + } + } + + RequestsMeta.erase(cookie); +} + +TConclusionStatus TInFlightReadsTracker::AddToInFlightRequest(const ui64 cookie, NOlap::NReader::TReadMetadataBase::TConstPtr readMetaBase, const NOlap::TVersionedIndex* index) { + RequestsMeta[cookie].push_back(readMetaBase); + + auto readMeta = std::dynamic_pointer_cast<const NOlap::NReader::NPlain::TReadMetadata>(readMetaBase); + + if (!readMeta) { + return TConclusionStatus::Success(); + } + + auto selectInfo = readMeta->SelectInfo; + Y_ABORT_UNLESS(selectInfo); + SelectStatsDelta += selectInfo->Stats(); + + THashMap<TString, THashSet<NOlap::TUnifiedBlobId>> portionBlobIds; + for (const auto& portion : readMeta->SelectInfo->PortionsOrderedPK) { + const ui64 portionId = portion->GetPortion(); + PortionUseCount[portionId]++; + AFL_VERIFY(index); + portion->FillBlobIdsByStorage(portionBlobIds, *index); + } + + for (auto&& i : portionBlobIds) { + auto storage = StoragesManager->GetOperatorOptional(i.first); + if (!storage) { + return TConclusionStatus::Fail("blobs storage info not ready for '" + i.first + "'"); + } + auto tracker = storage->GetBlobsTracker(); + for (auto& blobId : i.second) { + tracker->UseBlob(blobId); + } + } + + auto insertStorage = StoragesManager->GetInsertOperator(); + auto tracker = insertStorage->GetBlobsTracker(); + for (const auto& committedBlob : readMeta->CommittedBlobs) { + tracker->UseBlob(committedBlob.GetBlobRange().GetBlobId()); + } + return TConclusionStatus::Success(); +} + +} diff --git a/ydb/core/tx/columnshard/inflight_request_tracker.h b/ydb/core/tx/columnshard/inflight_request_tracker.h index 8b6c35bcac9a..d530c11d7a4f 100644 --- a/ydb/core/tx/columnshard/inflight_request_tracker.h +++ b/ydb/core/tx/columnshard/inflight_request_tracker.h @@ -1,67 +1,29 @@ #pragma once #include "blob.h" -#include <ydb/core/tx/columnshard/engines/reader/read_metadata.h> +#include <ydb/core/tx/columnshard/engines/reader/abstract/read_metadata.h> + +namespace NKikimr::NOlap { +class TVersionedIndex; +} namespace NKikimr::NColumnShard { -using NOlap::TReadMetadata; using NOlap::IBlobInUseTracker; class TInFlightReadsTracker { public: // Returns a unique cookie associated with this request - ui64 AddInFlightRequest(NOlap::TReadMetadataBase::TConstPtr readMeta) { - const ui64 cookie = NextCookie++; - AddToInFlightRequest(cookie, readMeta); - return cookie; - } - - // Returns a unique cookie associated with this request - template <class TReadMetadataList> - ui64 AddInFlightRequest(const TReadMetadataList& readMetaList) { + [[nodiscard]] TConclusion<ui64> AddInFlightRequest(NOlap::NReader::TReadMetadataBase::TConstPtr readMeta, const NOlap::TVersionedIndex* index) { const ui64 cookie = NextCookie++; - for (const auto& readMetaPtr : readMetaList) { - AddToInFlightRequest(cookie, readMetaPtr); + auto status = AddToInFlightRequest(cookie, readMeta, index); + if (!status) { + return status; } return cookie; } - void RemoveInFlightRequest(ui64 cookie) { - Y_ABORT_UNLESS(RequestsMeta.contains(cookie), "Unknown request cookie %" PRIu64, cookie); - const auto& readMetaList = RequestsMeta[cookie]; - - for (const auto& readMetaBase : readMetaList) { - NOlap::TReadMetadata::TConstPtr readMeta = std::dynamic_pointer_cast<const NOlap::TReadMetadata>(readMetaBase); - - if (!readMeta) { - continue; - } - - for (const auto& portion : readMeta->SelectInfo->PortionsOrderedPK) { - const ui64 portionId = portion->GetPortion(); - auto it = PortionUseCount.find(portionId); - Y_ABORT_UNLESS(it != PortionUseCount.end(), "Portion id %" PRIu64 " not found in request %" PRIu64, portionId, cookie); - if (it->second == 1) { - PortionUseCount.erase(it); - } else { - it->second--; - } - auto tracker = portion->GetBlobsStorage()->GetBlobsTracker(); - for (auto& rec : portion->Records) { - tracker->FreeBlob(rec.BlobRange.BlobId); - } - } - - auto insertStorage = StoragesManager->GetInsertOperator(); - auto tracker = insertStorage->GetBlobsTracker(); - for (const auto& committedBlob : readMeta->CommittedBlobs) { - tracker->FreeBlob(committedBlob.GetBlobRange().GetBlobId()); - } - } - - RequestsMeta.erase(cookie); - } + void RemoveInFlightRequest(ui64 cookie, const NOlap::TVersionedIndex* index); // Checks if the portion is in use by any in-flight request bool IsPortionUsed(ui64 portionId) const { @@ -81,39 +43,12 @@ class TInFlightReadsTracker { } private: - void AddToInFlightRequest(const ui64 cookie, NOlap::TReadMetadataBase::TConstPtr readMetaBase) { - RequestsMeta[cookie].push_back(readMetaBase); - - NOlap::TReadMetadata::TConstPtr readMeta = std::dynamic_pointer_cast<const NOlap::TReadMetadata>(readMetaBase); - - if (!readMeta) { - return; - } - - auto selectInfo = readMeta->SelectInfo; - Y_ABORT_UNLESS(selectInfo); - SelectStatsDelta += selectInfo->Stats(); - - for (const auto& portion : readMeta->SelectInfo->PortionsOrderedPK) { - const ui64 portionId = portion->GetPortion(); - PortionUseCount[portionId]++; - auto tracker = portion->GetBlobsStorage()->GetBlobsTracker(); - for (auto& rec : portion->Records) { - tracker->UseBlob(rec.BlobRange.BlobId); - } - } - - auto insertStorage = StoragesManager->GetInsertOperator(); - auto tracker = insertStorage->GetBlobsTracker(); - for (const auto& committedBlob : readMeta->CommittedBlobs) { - tracker->UseBlob(committedBlob.GetBlobRange().GetBlobId()); - } - } + [[nodiscard]] TConclusionStatus AddToInFlightRequest(const ui64 cookie, NOlap::NReader::TReadMetadataBase::TConstPtr readMetaBase, const NOlap::TVersionedIndex* index); private: std::shared_ptr<NOlap::IStoragesManager> StoragesManager; ui64 NextCookie{1}; - THashMap<ui64, TList<NOlap::TReadMetadataBase::TConstPtr>> RequestsMeta; + THashMap<ui64, TList<NOlap::NReader::TReadMetadataBase::TConstPtr>> RequestsMeta; THashMap<ui64, ui64> PortionUseCount; NOlap::TSelectInfo::TStats SelectStatsDelta; }; diff --git a/ydb/core/tx/columnshard/normalizer/abstract/abstract.cpp b/ydb/core/tx/columnshard/normalizer/abstract/abstract.cpp index 470d01bb3d4c..99de629aeb39 100644 --- a/ydb/core/tx/columnshard/normalizer/abstract/abstract.cpp +++ b/ydb/core/tx/columnshard/normalizer/abstract/abstract.cpp @@ -1,13 +1,17 @@ #include "abstract.h" +#include <ydb/core/tx/columnshard/columnshard_private_events.h> +#include <ydb/core/tx/columnshard/columnshard_schema.h> + namespace NKikimr::NOlap { void TNormalizationController::RegisterNormalizer(INormalizerComponent::TPtr normalizer) { + AFL_VERIFY(normalizer); Counters.emplace_back(normalizer->GetName()); Normalizers.push_back(normalizer); } - const INormalizerComponent::TPtr& TNormalizationController::GetNormalizer() const { + const TNormalizationController::INormalizerComponent::TPtr& TNormalizationController::GetNormalizer() const { Y_ABORT_UNLESS(CurrentNormalizerIndex < Normalizers.size()); return Normalizers[CurrentNormalizerIndex]; } @@ -17,7 +21,7 @@ namespace NKikimr::NOlap { return Counters[CurrentNormalizerIndex]; } - bool TNormalizationController::IsNormalizationFinished() const { + bool TNormalizationController::TNormalizationController::IsNormalizationFinished() const { return CurrentNormalizerIndex >= Normalizers.size(); } @@ -25,9 +29,38 @@ namespace NKikimr::NOlap { if (IsNormalizationFinished()) { return false; } - Y_ABORT_UNLESS(!GetNormalizer()->WaitResult()); + Y_ABORT_UNLESS(!GetNormalizer()->HasActiveTasks()); GetCounters().OnNormalizerFinish(); ++CurrentNormalizerIndex; return !IsNormalizationFinished(); } + + void TTrivialNormalizerTask::Start(const TNormalizationController& /* controller */, const TNormalizationContext& nCtx) { + TActorContext::AsActorContext().Send(nCtx.GetShardActor(), std::make_unique<NColumnShard::TEvPrivate::TEvNormalizerResult>(Changes)); + } + + void TNormalizationController::UpdateControllerState(NIceDb::TNiceDb& db) { + NColumnShard::Schema::SaveSpecialValue(db, NColumnShard::Schema::EValueIds::LastNormalizerSequentialId, GetNormalizer()->GetSequentialId()); + } + + void TNormalizationController::InitNormalizers(const TInitContext& ctx) { + auto normalizers = GetEnumAllValues<ENormalizerSequentialId>(); + auto lastRegisteredNormalizer = ENormalizerSequentialId::Granules; + for (auto nType : normalizers) { + RegisterNormalizer(std::shared_ptr<INormalizerComponent>(INormalizerComponent::TFactory::Construct(nType, ctx))); + AFL_VERIFY(lastRegisteredNormalizer <= nType)("current", ToString(nType))("last", ToString(lastRegisteredNormalizer)); + lastRegisteredNormalizer = nType; + } + } + + void TNormalizationController::InitControllerState(NIceDb::TNiceDb& db) { + ui64 lastNormalizerId; + if (NColumnShard::Schema::GetSpecialValue(db, NColumnShard::Schema::EValueIds::LastNormalizerSequentialId, lastNormalizerId)) { + // We want to rerun all normalizers in case of binary rollback + if (lastNormalizerId <= GetLastNormalizerSequentialId()) { + LastAppliedNormalizerId = lastNormalizerId; + } + } + } + } diff --git a/ydb/core/tx/columnshard/normalizer/abstract/abstract.h b/ydb/core/tx/columnshard/normalizer/abstract/abstract.h index fadda5ce13ac..dad21751eb65 100644 --- a/ydb/core/tx/columnshard/normalizer/abstract/abstract.h +++ b/ydb/core/tx/columnshard/normalizer/abstract/abstract.h @@ -5,8 +5,12 @@ #include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> #include <ydb/core/tx/columnshard/resource_subscriber/task.h> - #include <ydb/library/conclusion/result.h> +#include <library/cpp/object_factory/object_factory.h> + +namespace NKikimr::NIceDb { + class TNiceDb; +} namespace NKikimr::NOlap { @@ -46,9 +50,17 @@ namespace NKikimr::NOlap { } }; + enum class ENormalizerSequentialId : ui32 { + Granules = 1, + Chunks, + PortionsCleaner, + TablesCleaner, + // PortionsMetadata + }; + class TNormalizationContext { YDB_ACCESSOR_DEF(TActorId, ResourceSubscribeActor); - YDB_ACCESSOR_DEF(TActorId, ColumnshardActor); + YDB_ACCESSOR_DEF(TActorId, ShardActor); std::shared_ptr<NOlap::NResourceBroker::NSubscribe::TResourcesGuard> ResourcesGuard; public: void SetResourcesGuard(std::shared_ptr<NOlap::NResourceBroker::NSubscribe::TResourcesGuard> rg) { @@ -56,6 +68,7 @@ namespace NKikimr::NOlap { } }; + class TNormalizationController; class INormalizerTask { @@ -71,37 +84,100 @@ namespace NKikimr::NOlap { using TPtr = std::shared_ptr<INormalizerChanges>; virtual ~INormalizerChanges() {} - virtual bool Apply(NTabletFlatExecutor::TTransactionContext& txc, const TNormalizationController& normalizationContext) const = 0; + virtual bool ApplyOnExecute(NTabletFlatExecutor::TTransactionContext& txc, const TNormalizationController& normalizationContext) const = 0; + virtual void ApplyOnComplete(const TNormalizationController& normalizationContext) const { + Y_UNUSED(normalizationContext); + } + + virtual ui64 GetSize() const = 0; }; - class INormalizerComponent { + class TTrivialNormalizerTask : public INormalizerTask { + INormalizerChanges::TPtr Changes; public: - using TPtr = std::shared_ptr<INormalizerComponent>; - - virtual ~INormalizerComponent() {} - - bool WaitResult() const { - return AtomicGet(ActiveTasksCount) > 0; - } - - void OnResultReady() { - AFL_VERIFY(ActiveTasksCount > 0); - AtomicDecrement(ActiveTasksCount); + TTrivialNormalizerTask(const INormalizerChanges::TPtr& changes) + : Changes(changes) + { + AFL_VERIFY(Changes); } - virtual const TString& GetName() const = 0; - virtual TConclusion<std::vector<INormalizerTask::TPtr>> Init(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) = 0; - protected: - TAtomic ActiveTasksCount = 0; + void Start(const TNormalizationController& /* controller */, const TNormalizationContext& /*nCtx*/) override; }; class TNormalizationController { + public: + class TInitContext { + TIntrusiveConstPtr<TTabletStorageInfo> StorageInfo; + public: + TInitContext(TTabletStorageInfo* info) + : StorageInfo(info) + {} + + TIntrusiveConstPtr<TTabletStorageInfo> GetStorageInfo() const { + return StorageInfo; + } + }; + + class INormalizerComponent { + public: + using TPtr = std::shared_ptr<INormalizerComponent>; + using TFactory = NObjectFactory::TParametrizedObjectFactory<INormalizerComponent, ENormalizerSequentialId, TInitContext>; + + virtual ~INormalizerComponent() {} + + bool HasActiveTasks() const { + return AtomicGet(ActiveTasksCount) > 0; + } + + void OnResultReady() { + AFL_VERIFY(ActiveTasksCount > 0); + AtomicDecrement(ActiveTasksCount); + } + + i64 GetActiveTasksCount() const { + return AtomicGet(ActiveTasksCount); + } + + virtual ENormalizerSequentialId GetType() const = 0; + + TString GetName() const { + return ToString(GetType()); + } + + ui32 GetSequentialId() const { + return (ui32) GetType(); + } + + TConclusion<std::vector<INormalizerTask::TPtr>> Init(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) { + if (controller.HasLastAppliedNormalizerId() && controller.GetLastAppliedNormalizerIdUnsafe() >= GetSequentialId()) { + return std::vector<INormalizerTask::TPtr>(); + } + auto result = DoInit(controller, txc); + if (!result.IsSuccess()) { + return result; + } + AtomicSet(ActiveTasksCount, result.GetResult().size()); + return result; + } + + private: + virtual TConclusion<std::vector<INormalizerTask::TPtr>> DoInit(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) = 0; + + TAtomic ActiveTasksCount = 0; + }; + using TPtr = std::shared_ptr<INormalizerComponent>; + + private: std::shared_ptr<IStoragesManager> StoragesManager; NOlap::NResourceBroker::NSubscribe::TTaskContext TaskSubscription; - std::vector<NOlap::INormalizerComponent::TPtr> Normalizers; + std::vector<INormalizerComponent::TPtr> Normalizers; ui64 CurrentNormalizerIndex = 0; std::vector<TNormalizerCounters> Counters; + YDB_READONLY_OPT(ui32, LastAppliedNormalizerId); + + private: + void RegisterNormalizer(INormalizerComponent::TPtr normalizer); public: TNormalizationController(std::shared_ptr<IStoragesManager> storagesManager, const std::shared_ptr<NOlap::NResourceBroker::NSubscribe::TSubscriberCounters>& counters) @@ -112,7 +188,14 @@ namespace NKikimr::NOlap { return TaskSubscription; } - void RegisterNormalizer(INormalizerComponent::TPtr normalizer); + void InitNormalizers(const TInitContext& ctx); + void UpdateControllerState(NIceDb::TNiceDb& db); + void InitControllerState(NIceDb::TNiceDb& db); + + ui32 GetLastNormalizerSequentialId() { + AFL_VERIFY(!Normalizers.empty()); + return Normalizers.back()->GetSequentialId(); + } std::shared_ptr<IStoragesManager> GetStoragesManager() const { AFL_VERIFY(!!StoragesManager); diff --git a/ydb/core/tx/columnshard/normalizer/abstract/ya.make b/ydb/core/tx/columnshard/normalizer/abstract/ya.make index 48572e5fe02f..5ba07d4d2395 100644 --- a/ydb/core/tx/columnshard/normalizer/abstract/ya.make +++ b/ydb/core/tx/columnshard/normalizer/abstract/ya.make @@ -4,6 +4,8 @@ SRCS( abstract.cpp ) +GENERATE_ENUM_SERIALIZATION(abstract.h) + PEERDIR( ydb/core/tablet_flat ydb/core/tx/columnshard/blobs_action/abstract diff --git a/ydb/core/tx/columnshard/normalizer/granule/normalizer.cpp b/ydb/core/tx/columnshard/normalizer/granule/normalizer.cpp index 5eeaba2ae5af..081b40f2379e 100644 --- a/ydb/core/tx/columnshard/normalizer/granule/normalizer.cpp +++ b/ydb/core/tx/columnshard/normalizer/granule/normalizer.cpp @@ -31,7 +31,7 @@ class TGranulesNormalizer::TNormalizerResult : public INormalizerChanges { {} public: - bool Apply(NTabletFlatExecutor::TTransactionContext& txc, const TNormalizationController& /* normController */) const override { + bool ApplyOnExecute(NTabletFlatExecutor::TTransactionContext& txc, const TNormalizationController& /* normController */) const override { using namespace NColumnShard; NIceDb::TNiceDb db(txc.DB); ACFL_INFO("normalizer", "TGranulesNormalizer")("message", TStringBuilder() << "apply " << Chunks.size() << " chunks"); @@ -48,6 +48,10 @@ class TGranulesNormalizer::TNormalizerResult : public INormalizerChanges { return true; } + ui64 GetSize() const override { + return Chunks.size(); + } + static std::optional<std::vector<INormalizerChanges::TPtr>> Init(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) { using namespace NColumnShard; NIceDb::TNiceDb db(txc.DB); @@ -126,28 +130,15 @@ class TGranulesNormalizer::TNormalizerResult : public INormalizerChanges { }; -class TGranulesNormalizerTask : public INormalizerTask { - INormalizerChanges::TPtr Changes; -public: - TGranulesNormalizerTask(const INormalizerChanges::TPtr& changes) - : Changes(changes) - {} - - void Start(const TNormalizationController& /* controller */, const TNormalizationContext& nCtx) override { - TActorContext::AsActorContext().Send(nCtx.GetColumnshardActor(), std::make_unique<NColumnShard::TEvPrivate::TEvNormalizerResult>(Changes)); - } -}; - -TConclusion<std::vector<INormalizerTask::TPtr>> TGranulesNormalizer::Init(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) { +TConclusion<std::vector<INormalizerTask::TPtr>> TGranulesNormalizer::DoInit(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) { auto changes = TNormalizerResult::Init(controller, txc); if (!changes) { return TConclusionStatus::Fail("Not ready");; } std::vector<INormalizerTask::TPtr> tasks; for (auto&& c : *changes) { - tasks.emplace_back(std::make_shared<TGranulesNormalizerTask>(c)); + tasks.emplace_back(std::make_shared<TTrivialNormalizerTask>(c)); } - AtomicSet(ActiveTasksCount, tasks.size()); return tasks; } diff --git a/ydb/core/tx/columnshard/normalizer/granule/normalizer.h b/ydb/core/tx/columnshard/normalizer/granule/normalizer.h index a3c78e4ba8e5..063f2298519c 100644 --- a/ydb/core/tx/columnshard/normalizer/granule/normalizer.h +++ b/ydb/core/tx/columnshard/normalizer/granule/normalizer.h @@ -6,15 +6,19 @@ namespace NKikimr::NOlap { -class TGranulesNormalizer: public NOlap::INormalizerComponent { +class TGranulesNormalizer: public TNormalizationController::INormalizerComponent { class TNormalizerResult; + + static inline INormalizerComponent::TFactory::TRegistrator<TGranulesNormalizer> Registrator = INormalizerComponent::TFactory::TRegistrator<TGranulesNormalizer>(ENormalizerSequentialId::Granules); public: - virtual const TString& GetName() const override { - const static TString name = "TGranulesNormalizer"; - return name; + TGranulesNormalizer(const TNormalizationController::TInitContext&) { + } + + virtual ENormalizerSequentialId GetType() const override { + return ENormalizerSequentialId::Granules; } - virtual TConclusion<std::vector<INormalizerTask::TPtr>> Init(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) override; + virtual TConclusion<std::vector<INormalizerTask::TPtr>> DoInit(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) override; }; } diff --git a/ydb/core/tx/columnshard/normalizer/granule/ya.make b/ydb/core/tx/columnshard/normalizer/granule/ya.make index 8a8c7e5ab0aa..d44051621eb3 100644 --- a/ydb/core/tx/columnshard/normalizer/granule/ya.make +++ b/ydb/core/tx/columnshard/normalizer/granule/ya.make @@ -1,7 +1,7 @@ LIBRARY() SRCS( - normalizer.cpp + GLOBAL normalizer.cpp ) PEERDIR( diff --git a/ydb/core/tx/columnshard/normalizer/portion/chunks.cpp b/ydb/core/tx/columnshard/normalizer/portion/chunks.cpp index 81525fc0f905..5fb16edcc0d1 100644 --- a/ydb/core/tx/columnshard/normalizer/portion/chunks.cpp +++ b/ydb/core/tx/columnshard/normalizer/portion/chunks.cpp @@ -15,7 +15,7 @@ class TChunksNormalizer::TNormalizerResult : public INormalizerChanges { : Chunks(std::move(chunks)) {} - bool Apply(NTabletFlatExecutor::TTransactionContext& txc, const TNormalizationController& /* normController */) const override { + bool ApplyOnExecute(NTabletFlatExecutor::TTransactionContext& txc, const TNormalizationController& /* normController */) const override { using namespace NColumnShard; NIceDb::TNiceDb db(txc.DB); @@ -34,13 +34,17 @@ class TChunksNormalizer::TNormalizerResult : public INormalizerChanges { } return true; } + + ui64 GetSize() const override { + return Chunks.size(); + } }; class TRowsAndBytesChangesTask: public NConveyor::ITask { public: using TDataContainer = std::vector<TChunksNormalizer::TChunkInfo>; private: - THashMap<NKikimr::NOlap::TBlobRange, TString> Blobs; + NBlobOperations::NRead::TCompositeReadBlobs Blobs; std::vector<TChunksNormalizer::TChunkInfo> Chunks; TNormalizationContext NormContext; protected: @@ -48,13 +52,12 @@ class TRowsAndBytesChangesTask: public NConveyor::ITask { for (auto&& chunkInfo : Chunks) { const auto& blobRange = chunkInfo.GetBlobRange(); - auto blobIt = Blobs.find(blobRange); - Y_ABORT_UNLESS(blobIt != Blobs.end()); + auto blobData = Blobs.Extract(IStoragesManager::DefaultStorageId, blobRange); auto columnLoader = chunkInfo.GetLoader(); Y_ABORT_UNLESS(!!columnLoader); - TPortionInfo::TAssembleBlobInfo assembleBlob(blobIt->second); + TPortionInfo::TAssembleBlobInfo assembleBlob(blobData); auto batch = assembleBlob.BuildRecordBatch(*columnLoader); Y_ABORT_UNLESS(!!batch); @@ -63,12 +66,12 @@ class TRowsAndBytesChangesTask: public NConveyor::ITask { } auto changes = std::make_shared<TChunksNormalizer::TNormalizerResult>(std::move(Chunks)); - TActorContext::AsActorContext().Send(NormContext.GetColumnshardActor(), std::make_unique<NColumnShard::TEvPrivate::TEvNormalizerResult>(changes)); + TActorContext::AsActorContext().Send(NormContext.GetShardActor(), std::make_unique<NColumnShard::TEvPrivate::TEvNormalizerResult>(changes)); return true; } public: - TRowsAndBytesChangesTask(THashMap<NKikimr::NOlap::TBlobRange, TString>&& blobs, const TNormalizationContext& nCtx, std::vector<TChunksNormalizer::TChunkInfo>&& chunks, std::shared_ptr<THashMap<ui64, ISnapshotSchema::TPtr>>) + TRowsAndBytesChangesTask(NBlobOperations::NRead::TCompositeReadBlobs&& blobs, const TNormalizationContext& nCtx, std::vector<TChunksNormalizer::TChunkInfo>&& chunks, std::shared_ptr<THashMap<ui64, ISnapshotSchema::TPtr>>) : Blobs(std::move(blobs)) , Chunks(std::move(chunks)) , NormContext(nCtx) @@ -92,7 +95,7 @@ void TChunksNormalizer::TChunkInfo::InitSchema(const NColumnShard::TTablesManage Schema = tm.GetPrimaryIndexSafe().GetVersionedIndex().GetSchema(NOlap::TSnapshot(Key.GetPlanStep(), Key.GetTxId())); } -TConclusion<std::vector<INormalizerTask::TPtr>> TChunksNormalizer::Init(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) { +TConclusion<std::vector<INormalizerTask::TPtr>> TChunksNormalizer::DoInit(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) { using namespace NColumnShard; NIceDb::TNiceDb db(txc.DB); @@ -152,7 +155,6 @@ TConclusion<std::vector<INormalizerTask::TPtr>> TChunksNormalizer::Init(const TN if (package.size() > 0) { tasks.emplace_back(std::make_shared<TPortionsNormalizerTask<TRowsAndBytesChangesTask>>(std::move(package))); } - AtomicSet(ActiveTasksCount, tasks.size()); return tasks; } diff --git a/ydb/core/tx/columnshard/normalizer/portion/chunks.h b/ydb/core/tx/columnshard/normalizer/portion/chunks.h index d174b8903862..f272f956208a 100644 --- a/ydb/core/tx/columnshard/normalizer/portion/chunks.h +++ b/ydb/core/tx/columnshard/normalizer/portion/chunks.h @@ -12,7 +12,7 @@ namespace NKikimr::NColumnShard { namespace NKikimr::NOlap { - class TChunksNormalizer : public INormalizerComponent { + class TChunksNormalizer : public TNormalizationController::INormalizerComponent { public: class TNormalizerResult; @@ -83,17 +83,17 @@ namespace NKikimr::NOlap { } }; + static inline INormalizerComponent::TFactory::TRegistrator<TChunksNormalizer> Registrator = INormalizerComponent::TFactory::TRegistrator<TChunksNormalizer>(ENormalizerSequentialId::Chunks); public: - TChunksNormalizer(TTabletStorageInfo* info) - : DsGroupSelector(info) + TChunksNormalizer(const TNormalizationController::TInitContext& info) + : DsGroupSelector(info.GetStorageInfo()) {} - virtual const TString& GetName() const override { - const static TString name = "TChunksNormalizer"; - return name; + virtual ENormalizerSequentialId GetType() const override { + return ENormalizerSequentialId::Chunks; } - virtual TConclusion<std::vector<INormalizerTask::TPtr>> Init(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) override; + virtual TConclusion<std::vector<INormalizerTask::TPtr>> DoInit(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) override; private: NColumnShard::TBlobGroupSelector DsGroupSelector; diff --git a/ydb/core/tx/columnshard/normalizer/portion/clean.cpp b/ydb/core/tx/columnshard/normalizer/portion/clean.cpp new file mode 100644 index 000000000000..8ee71df72d25 --- /dev/null +++ b/ydb/core/tx/columnshard/normalizer/portion/clean.cpp @@ -0,0 +1,91 @@ +#include "clean.h" + +#include <ydb/core/tx/columnshard/engines/scheme/filtered_scheme.h> +#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> +#include <ydb/core/tx/columnshard/columnshard_schema.h> +#include <ydb/core/tx/columnshard/tables_manager.h> + +#include <ydb/core/formats/arrow/arrow_helpers.h> + + +namespace NKikimr::NOlap { + +class TBlobsRemovingResult : public INormalizerChanges { + std::shared_ptr<IBlobsDeclareRemovingAction> RemovingAction; + std::vector<std::shared_ptr<TPortionInfo>> Portions; +public: + TBlobsRemovingResult(std::shared_ptr<IBlobsDeclareRemovingAction> removingAction, std::vector<std::shared_ptr<TPortionInfo>>&& portions) + : RemovingAction(removingAction) + , Portions(std::move(portions)) + {} + + bool ApplyOnExecute(NTabletFlatExecutor::TTransactionContext& txc, const TNormalizationController& /* normController */) const override { + NOlap::TBlobManagerDb blobManagerDb(txc.DB); + RemovingAction->OnExecuteTxAfterRemoving(blobManagerDb, true); + + TDbWrapper db(txc.DB, nullptr); + for (auto&& portion : Portions) { + AFL_CRIT(NKikimrServices::TX_COLUMNSHARD)("message", "remove lost portion")("path_id", portion->GetPathId())("portion_id", portion->GetPortionId()); + portion->RemoveFromDatabase(db); + } + return true; + } + + void ApplyOnComplete(const TNormalizationController& /* normController */) const override { + RemovingAction->OnCompleteTxAfterRemoving(true); + } + + ui64 GetSize() const override { + return Portions.size(); + } +}; + +class TBlobsRemovingTask : public INormalizerTask { + std::vector<TUnifiedBlobId> Blobs; + std::vector<std::shared_ptr<TPortionInfo>> Portions; +public: + TBlobsRemovingTask(std::vector<TUnifiedBlobId>&& blobs, std::vector<std::shared_ptr<TPortionInfo>>&& portions) + : Blobs(std::move(blobs)) + , Portions(std::move(portions)) + {} + + void Start(const TNormalizationController& controller, const TNormalizationContext& nCtx) override { + controller.GetCounters().CountObjects(Blobs.size()); + auto removeAction = controller.GetStoragesManager()->GetDefaultOperator()->StartDeclareRemovingAction(NBlobOperations::EConsumer::NORMALIZER); + for (auto&& blobId : Blobs) { + removeAction->DeclareSelfRemove(blobId); + } + TActorContext::AsActorContext().Send(nCtx.GetShardActor(), std::make_unique<NColumnShard::TEvPrivate::TEvNormalizerResult>(std::make_shared<TBlobsRemovingResult>(removeAction, std::move(Portions)))); + } +}; + + +bool TCleanPortionsNormalizer::CheckPortion(const NColumnShard::TTablesManager& tablesManager, const TPortionInfo& portionInfo) const { + return tablesManager.HasTable(portionInfo.GetAddress().GetPathId(), true); +} + +INormalizerTask::TPtr TCleanPortionsNormalizer::BuildTask(std::vector<std::shared_ptr<TPortionInfo>>&& portions, std::shared_ptr<THashMap<ui64, ISnapshotSchema::TPtr>> schemas) const { + std::vector<TUnifiedBlobId> blobIds; + THashMap<TString, THashSet<TUnifiedBlobId>> blobsByStorage; + for (auto&& portion : portions) { + auto schemaPtr = schemas->FindPtr(portion->GetPortionId()); + portion->FillBlobIdsByStorage(blobsByStorage, schemaPtr->get()->GetIndexInfo()); + } + for (auto&& [storageId, blobs] : blobsByStorage) { + if (storageId == NBlobOperations::TGlobal::DefaultStorageId) { + for (auto&& blobId : blobs) { + blobIds.emplace_back(blobId); + } + } else { + AFL_VERIFY(false)("details", "Invalid storage for normalizer"); + } + } + return std::make_shared<TBlobsRemovingTask>(std::move(blobIds), std::move(portions)); +} + + TConclusion<bool> TCleanPortionsNormalizer::DoInitImpl(const TNormalizationController&, NTabletFlatExecutor::TTransactionContext&) { + return true; +} + + +} diff --git a/ydb/core/tx/columnshard/normalizer/portion/clean.h b/ydb/core/tx/columnshard/normalizer/portion/clean.h new file mode 100644 index 000000000000..dec0b6c8eacd --- /dev/null +++ b/ydb/core/tx/columnshard/normalizer/portion/clean.h @@ -0,0 +1,39 @@ +#pragma once + +#include "normalizer.h" +#include <ydb/core/tx/columnshard/normalizer/abstract/abstract.h> +#include <ydb/core/tx/columnshard/defs.h> + + +namespace NKikimr::NColumnShard { + class TTablesManager; +} + +namespace NKikimr::NOlap { + +class TCleanPortionsNormalizer : public TPortionsNormalizerBase { + static inline TFactory::TRegistrator<TCleanPortionsNormalizer> Registrator = TFactory::TRegistrator<TCleanPortionsNormalizer>(ENormalizerSequentialId::PortionsCleaner); +public: + class TNormalizerResult; + class TTask; + +public: + TCleanPortionsNormalizer(const TNormalizationController::TInitContext& info) + : TPortionsNormalizerBase(info) + {} + + virtual ENormalizerSequentialId GetType() const override { + return ENormalizerSequentialId::PortionsCleaner; + } + + virtual std::set<ui32> GetColumnsFilter(const ISnapshotSchema::TPtr& /*schema*/) const override { + return {}; + } + + virtual INormalizerTask::TPtr BuildTask(std::vector<std::shared_ptr<TPortionInfo>>&& portions, std::shared_ptr<THashMap<ui64, ISnapshotSchema::TPtr>> schemas) const override; + virtual TConclusion<bool> DoInitImpl(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) override; + + virtual bool CheckPortion(const NColumnShard::TTablesManager& tablesManager, const TPortionInfo& portionInfo) const override; +}; + +} diff --git a/ydb/core/tx/columnshard/normalizer/portion/min_max.cpp b/ydb/core/tx/columnshard/normalizer/portion/min_max.cpp deleted file mode 100644 index 974efa329712..000000000000 --- a/ydb/core/tx/columnshard/normalizer/portion/min_max.cpp +++ /dev/null @@ -1,221 +0,0 @@ -#include "min_max.h" -#include "normalizer.h" - -#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> -#include <ydb/core/tx/columnshard/tables_manager.h> -#include <ydb/core/tx/columnshard/engines/scheme/filtered_scheme.h> - -#include <ydb/core/formats/arrow/arrow_helpers.h> - - -namespace NKikimr::NOlap { - -class TMinMaxSnapshotChangesTask: public NConveyor::ITask { -public: - using TDataContainer = std::vector<std::shared_ptr<TPortionInfo>>; -private: - THashMap<NKikimr::NOlap::TBlobRange, TString> Blobs; - TDataContainer Portions; - std::shared_ptr<THashMap<ui64, ISnapshotSchema::TPtr>> Schemas; - TNormalizationContext NormContext; -protected: - virtual bool DoExecute() override { - Y_ABORT_UNLESS(!Schemas->empty()); - auto pkColumnIds = Schemas->begin()->second->GetPkColumnsIds(); - pkColumnIds.insert(TIndexInfo::GetSpecialColumnIds().begin(), TIndexInfo::GetSpecialColumnIds().end()); - - for (auto&& portionInfo : Portions) { - auto blobSchema = Schemas->FindPtr(portionInfo->GetPortionId()); - THashMap<TBlobRange, TPortionInfo::TAssembleBlobInfo> blobsDataAssemble; - for (auto&& i : portionInfo->Records) { - auto blobIt = Blobs.find(i.BlobRange); - Y_ABORT_UNLESS(blobIt != Blobs.end()); - blobsDataAssemble.emplace(i.BlobRange, blobIt->second); - } - - AFL_VERIFY(!!blobSchema)("details", portionInfo->DebugString()); - auto filteredSchema = std::make_shared<TFilteredSnapshotSchema>(*blobSchema, pkColumnIds); - auto preparedBatch = portionInfo->PrepareForAssemble(**blobSchema, *filteredSchema, blobsDataAssemble); - auto batch = preparedBatch.Assemble(); - Y_ABORT_UNLESS(!!batch); - portionInfo->AddMetadata(**blobSchema, batch, portionInfo->GetMeta().GetTierName()); - } - - auto changes = std::make_shared<TPortionsNormalizer::TNormalizerResult>(std::move(Portions)); - TActorContext::AsActorContext().Send(NormContext.GetColumnshardActor(), std::make_unique<NColumnShard::TEvPrivate::TEvNormalizerResult>(changes)); - return true; - } - -public: - TMinMaxSnapshotChangesTask(THashMap<NKikimr::NOlap::TBlobRange, TString>&& blobs, const TNormalizationContext& nCtx, TDataContainer&& portions, std::shared_ptr<THashMap<ui64, ISnapshotSchema::TPtr>> schemas) - : Blobs(std::move(blobs)) - , Portions(std::move(portions)) - , Schemas(schemas) - , NormContext(nCtx) - {} - - virtual TString GetTaskClassIdentifier() const override { - const static TString name = "TMinMaxSnapshotChangesTask"; - return name; - } - - static void FillBlobRanges(std::shared_ptr<IBlobsReadingAction> readAction, const std::shared_ptr<TPortionInfo>& portion) { - for (auto&& chunk : portion->Records) { - readAction->AddRange(chunk.BlobRange); - } - } - - static ui64 GetMemSize(const std::shared_ptr<TPortionInfo>& portion) { - return portion->GetRawBytes(); - } - - static bool CheckPortion(const TPortionInfo& portionInfo) { - if (!portionInfo.GetMeta().HasPrimaryKeyBorders() || !portionInfo.GetMeta().HasSnapshotMinMax()) { - return false; - } - return true; - } - - static std::set<ui32> GetColumnsFilter(const ISnapshotSchema::TPtr& schema) { - return schema->GetPkColumnsIds(); - } -}; - - -class TPortionsNormalizer::TNormalizerResult : public INormalizerChanges { - TMinMaxSnapshotChangesTask::TDataContainer Portions; -public: - TNormalizerResult(TMinMaxSnapshotChangesTask::TDataContainer&& portions) - : Portions(std::move(portions)) - {} - - bool Apply(NTabletFlatExecutor::TTransactionContext& txc, const TNormalizationController& /* normController */) const override { - using namespace NColumnShard; - NIceDb::TNiceDb db(txc.DB); - - for (auto&& portionInfo : Portions) { - for (auto&& chunk : portionInfo->Records) { - auto proto = portionInfo->GetMeta().SerializeToProto(chunk.ColumnId, chunk.Chunk); - if (!proto) { - continue; - } - auto rowProto = chunk.GetMeta().SerializeToProto(); - *rowProto.MutablePortionMeta() = std::move(*proto); - - db.Table<Schema::IndexColumns>().Key(0, portionInfo->GetDeprecatedGranuleId(), chunk.ColumnId, - portionInfo->GetMinSnapshot().GetPlanStep(), portionInfo->GetMinSnapshot().GetTxId(), portionInfo->GetPortion(), chunk.Chunk).Update( - NIceDb::TUpdate<Schema::IndexColumns::Metadata>(rowProto.SerializeAsString()) - ); - } - } - return true; - } -}; - -TConclusion<std::vector<INormalizerTask::TPtr>> TPortionsNormalizer::Init(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) { - using namespace NColumnShard; - std::vector<INormalizerTask::TPtr> tasks; - - NIceDb::TNiceDb db(txc.DB); - - bool ready = true; - ready = ready & Schema::Precharge<Schema::IndexColumns>(db, txc.DB.GetScheme()); - if (!ready) { - return TConclusionStatus::Fail("Not ready"); - } - - TTablesManager tablesManager(controller.GetStoragesManager(), 0); - if (!tablesManager.InitFromDB(db)) { - ACFL_ERROR("normalizer", "TPortionsNormalizer")("error", "can't initialize tables manager"); - return TConclusionStatus::Fail("Can't load index"); - } - - if (!tablesManager.HasPrimaryIndex()) { - return tasks; - } - - THashMap<ui64, std::shared_ptr<TPortionInfo>> portions; - auto schemas = std::make_shared<THashMap<ui64, ISnapshotSchema::TPtr>>(); - auto pkColumnIds = TMinMaxSnapshotChangesTask::GetColumnsFilter(tablesManager.GetPrimaryIndexSafe().GetVersionedIndex().GetLastSchema()); - - { - auto rowset = db.Table<Schema::IndexColumns>().Select(); - if (!rowset.IsReady()) { - return TConclusionStatus::Fail("Not ready"); - } - - TSnapshot lastSnapshot(0, 0); - ISnapshotSchema::TPtr currentSchema; - auto initPortionCB = [&](const TPortionInfo& portion, const TColumnChunkLoadContext& loadContext) { - if (!currentSchema || lastSnapshot != portion.GetMinSnapshot()) { - currentSchema = tablesManager.GetPrimaryIndexSafe().GetVersionedIndex().GetSchema(portion.GetMinSnapshot()); - lastSnapshot = portion.GetMinSnapshot(); - } - - AFL_VERIFY(portion.ValidSnapshotInfo())("details", portion.DebugString()); - TColumnRecord rec(loadContext, currentSchema->GetIndexInfo()); - if (!pkColumnIds.contains(rec.ColumnId)) { - return; - } - auto it = portions.find(portion.GetPortion()); - auto portionMeta = loadContext.GetPortionMeta(); - if (it == portions.end()) { - Y_ABORT_UNLESS(portion.Records.empty()); - (*schemas)[portion.GetPortionId()] = currentSchema; - auto portionNew = std::make_shared<TPortionInfo>(portion); - portionNew->AddRecord(currentSchema->GetIndexInfo(), rec, portionMeta); - it = portions.emplace(portion.GetPortion(), portionNew).first; - } else { - AFL_VERIFY(it->second->IsEqualWithSnapshots(portion))("self", it->second->DebugString())("item", portion.DebugString()); - it->second->AddRecord(currentSchema->GetIndexInfo(), rec, portionMeta); - } - }; - - while (!rowset.EndOfSet()) { - TPortionInfo portion = TPortionInfo::BuildEmpty(); - auto index = rowset.GetValue<Schema::IndexColumns::Index>(); - Y_ABORT_UNLESS(index == 0); - - portion.SetPathId(rowset.GetValue<Schema::IndexColumns::PathId>()); - - portion.SetMinSnapshot(rowset.GetValue<Schema::IndexColumns::PlanStep>(), rowset.GetValue<Schema::IndexColumns::TxId>()); - portion.SetPortion(rowset.GetValue<Schema::IndexColumns::Portion>()); - portion.SetDeprecatedGranuleId(rowset.GetValue<Schema::IndexColumns::Granule>()); - portion.SetRemoveSnapshot(rowset.GetValue<Schema::IndexColumns::XPlanStep>(), rowset.GetValue<Schema::IndexColumns::XTxId>()); - - NOlap::TColumnChunkLoadContext chunkLoadContext(rowset, &DsGroupSelector); - initPortionCB(portion, chunkLoadContext); - - if (!rowset.Next()) { - return TConclusionStatus::Fail("Not ready"); - } - } - } - - std::vector<std::shared_ptr<TPortionInfo>> package; - package.reserve(100); - - ui64 brokenPortioncCount = 0; - for (auto&& portion : portions) { - if (TMinMaxSnapshotChangesTask::CheckPortion(*portion.second)) { - continue; - } - ++brokenPortioncCount; - package.emplace_back(portion.second); - if (package.size() == 1000) { - std::vector<std::shared_ptr<TPortionInfo>> local; - local.swap(package); - tasks.emplace_back(std::make_shared<TPortionsNormalizerTask<TMinMaxSnapshotChangesTask>>(std::move(local), schemas)); - } - } - - if (package.size() > 0) { - tasks.emplace_back(std::make_shared<TPortionsNormalizerTask<TMinMaxSnapshotChangesTask>>(std::move(package), schemas)); - } - - AtomicSet(ActiveTasksCount, tasks.size()); - ACFL_INFO("normalizer", "TPortionsNormalizer")("message", TStringBuilder() << brokenPortioncCount << " portions found"); - return tasks; -} - -} diff --git a/ydb/core/tx/columnshard/normalizer/portion/min_max.h b/ydb/core/tx/columnshard/normalizer/portion/min_max.h deleted file mode 100644 index 6b7f8cd1eb97..000000000000 --- a/ydb/core/tx/columnshard/normalizer/portion/min_max.h +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include <ydb/core/tx/columnshard/normalizer/abstract/abstract.h> -#include <ydb/core/tx/columnshard/columnshard_schema.h> - -#include <ydb/core/tx/columnshard/defs.h> - - -namespace NKikimr::NColumnShard { - class TTablesManager; -} - -namespace NKikimr::NOlap { - -class TPortionsNormalizer : public INormalizerComponent { -public: - class TNormalizerResult; - -public: - TPortionsNormalizer(TTabletStorageInfo* info) - : DsGroupSelector(info) - {} - - virtual const TString& GetName() const override { - const static TString name = "TPortionsNormalizer"; - return name; - } - - virtual TConclusion<std::vector<INormalizerTask::TPtr>> Init(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) override; - -private: - NColumnShard::TBlobGroupSelector DsGroupSelector; -}; - -} diff --git a/ydb/core/tx/columnshard/normalizer/portion/normalizer.cpp b/ydb/core/tx/columnshard/normalizer/portion/normalizer.cpp index 2102bd3260f7..c1a3dc6399fb 100644 --- a/ydb/core/tx/columnshard/normalizer/portion/normalizer.cpp +++ b/ydb/core/tx/columnshard/normalizer/portion/normalizer.cpp @@ -1,5 +1,111 @@ #include "normalizer.h" +#include <ydb/core/tx/columnshard/tables_manager.h> +#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> +#include <ydb/core/tx/columnshard/columnshard_schema.h> + namespace NKikimr::NOlap { - + +TConclusion<std::vector<INormalizerTask::TPtr>> TPortionsNormalizerBase::DoInit(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) { + auto initRes = DoInitImpl(controller,txc); + + if (initRes.IsFail()) { + return initRes; + } + + using namespace NColumnShard; + + NIceDb::TNiceDb db(txc.DB); + bool ready = true; + ready = ready & Schema::Precharge<Schema::IndexColumns>(db, txc.DB.GetScheme()); + if (!ready) { + return TConclusionStatus::Fail("Not ready"); + } + + NColumnShard::TTablesManager tablesManager(controller.GetStoragesManager(), 0); + if (!tablesManager.InitFromDB(db)) { + ACFL_ERROR("normalizer", "TPortionsNormalizer")("error", "can't initialize tables manager"); + return TConclusionStatus::Fail("Can't load index"); + } + + std::vector<INormalizerTask::TPtr> tasks; + if (!tablesManager.HasPrimaryIndex()) { + return tasks; + } + + auto columnsFilter = GetColumnsFilter(tablesManager.GetPrimaryIndexSafe().GetVersionedIndex().GetLastSchema()); + + THashMap<ui64, std::shared_ptr<TPortionInfo>> portions; + auto schemas = std::make_shared<THashMap<ui64, ISnapshotSchema::TPtr>>(); + + { + auto rowset = db.Table<Schema::IndexColumns>().Select(); + if (!rowset.IsReady()) { + return TConclusionStatus::Fail("Not ready"); + } + + TPortionInfo::TSchemaCursor schema(tablesManager.GetPrimaryIndexSafe().GetVersionedIndex()); + auto initPortionCB = [&](const TPortionInfo& portion, const TColumnChunkLoadContext& loadContext) { + auto currentSchema = schema.GetSchema(portion); + AFL_VERIFY(portion.ValidSnapshotInfo())("details", portion.DebugString()); + + if (!columnsFilter.empty() && !columnsFilter.contains(loadContext.GetAddress().GetColumnId())) { + return; + } + auto it = portions.find(portion.GetPortionId()); + if (it == portions.end()) { + Y_ABORT_UNLESS(portion.Records.empty()); + (*schemas)[portion.GetPortionId()] = currentSchema; + it = portions.emplace(portion.GetPortionId(), std::make_shared<TPortionInfo>(portion)).first; + } + TColumnRecord rec(it->second->RegisterBlobId(loadContext.GetBlobRange().GetBlobId()), loadContext, currentSchema->GetIndexInfo().GetColumnFeaturesVerified(loadContext.GetAddress().GetColumnId())); + AFL_VERIFY(it->second->IsEqualWithSnapshots(portion))("self", it->second->DebugString())("item", portion.DebugString()); + auto portionMeta = loadContext.GetPortionMeta(); + it->second->AddRecord(currentSchema->GetIndexInfo(), rec, portionMeta); + }; + + while (!rowset.EndOfSet()) { + TPortionInfo portion = TPortionInfo::BuildEmpty(); + auto index = rowset.GetValue<Schema::IndexColumns::Index>(); + Y_ABORT_UNLESS(index == 0); + + portion.SetPathId(rowset.GetValue<Schema::IndexColumns::PathId>()); + portion.SetMinSnapshotDeprecated(NOlap::TSnapshot(rowset.GetValue<Schema::IndexColumns::PlanStep>(), rowset.GetValue<Schema::IndexColumns::TxId>())); + portion.SetPortion(rowset.GetValue<Schema::IndexColumns::Portion>()); + portion.SetDeprecatedGranuleId(rowset.GetValue<Schema::IndexColumns::Granule>()); + portion.SetRemoveSnapshot(rowset.GetValue<Schema::IndexColumns::XPlanStep>(), rowset.GetValue<Schema::IndexColumns::XTxId>()); + + NOlap::TColumnChunkLoadContext chunkLoadContext(rowset, &DsGroupSelector); + initPortionCB(portion, chunkLoadContext); + + if (!rowset.Next()) { + return TConclusionStatus::Fail("Not ready"); + } + } + } + + std::vector<std::shared_ptr<TPortionInfo>> package; + package.reserve(100); + + ui64 brokenPortioncCount = 0; + for (auto&& [_, portionInfo] : portions) { + if (CheckPortion(tablesManager, *portionInfo)) { + continue; + } + ++brokenPortioncCount; + package.emplace_back(portionInfo); + if (package.size() == 1000) { + std::vector<std::shared_ptr<TPortionInfo>> local; + local.swap(package); + tasks.emplace_back(BuildTask(std::move(local), schemas)); + } + } + + if (package.size() > 0) { + tasks.emplace_back(BuildTask(std::move(package), schemas)); + } + ACFL_INFO("normalizer", "TPortionsNormalizer")("message", TStringBuilder() << brokenPortioncCount << " portions found"); + return tasks; +} + } diff --git a/ydb/core/tx/columnshard/normalizer/portion/normalizer.h b/ydb/core/tx/columnshard/normalizer/portion/normalizer.h index 7c86476e724f..574a1c212873 100644 --- a/ydb/core/tx/columnshard/normalizer/portion/normalizer.h +++ b/ydb/core/tx/columnshard/normalizer/portion/normalizer.h @@ -2,6 +2,7 @@ #include <ydb/core/tx/columnshard/normalizer/abstract/abstract.h> #include <ydb/core/tx/columnshard/engines/scheme/abstract_scheme.h> +#include <ydb/core/tx/columnshard/blobs_action/counters/storage.h> #include <ydb/core/tx/conveyor/usage/abstract.h> #include <ydb/core/tx/conveyor/usage/service.h> @@ -11,6 +12,9 @@ #include <ydb/core/tx/columnshard/defs.h> +namespace NKikimr::NColumnShard { + class TTablesManager; +} namespace NKikimr::NOlap { template <class TConveyorTask> @@ -37,8 +41,8 @@ class TReadPortionsTask: public NOlap::NBlobOperations::NRead::ITask { NConveyor::TCompServiceOperator::SendTaskToExecute(task); } - virtual bool DoOnError(const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) override { - Y_UNUSED(status, range); + virtual bool DoOnError(const TString& storageId, const TBlobRange& range, const IBlobsReadingAction::TErrorStatus& status) override { + Y_UNUSED(status, range, storageId); return false; } @@ -62,7 +66,7 @@ class TPortionsNormalizerTask : public INormalizerTask { void Start(const TNormalizationController& controller, const TNormalizationContext& nCtx) override { controller.GetCounters().CountObjects(Package.size()); - auto readingAction = controller.GetStoragesManager()->GetInsertOperator()->StartReadingAction("CS::NORMALIZER"); + auto readingAction = controller.GetStoragesManager()->GetInsertOperator()->StartReadingAction(NBlobOperations::EConsumer::NORMALIZER); ui64 memSize = 0; for (auto&& data : Package) { TConveyorTask::FillBlobRanges(readingAction, data); @@ -74,4 +78,27 @@ class TPortionsNormalizerTask : public INormalizerTask { std::make_shared<TReadPortionsTask<TConveyorTask>>(nCtx, actions, std::move(Package), Schemas), 1, memSize, "CS::NORMALIZER", controller.GetTaskSubscription())); } }; + +class TPortionsNormalizerBase : public TNormalizationController::INormalizerComponent { +public: + TPortionsNormalizerBase(const TNormalizationController::TInitContext& info) + : DsGroupSelector(info.GetStorageInfo()) + {} + + virtual TConclusion<std::vector<INormalizerTask::TPtr>> DoInit(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) override final; + +protected: + virtual INormalizerTask::TPtr BuildTask(std::vector<std::shared_ptr<TPortionInfo>>&& portions, std::shared_ptr<THashMap<ui64, ISnapshotSchema::TPtr>> schemas) const = 0; + virtual TConclusion<bool> DoInitImpl(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) = 0; + + virtual bool CheckPortion(const NColumnShard::TTablesManager& tablesManager, const TPortionInfo& /*portionInfo*/) const = 0; + + virtual std::set<ui32> GetColumnsFilter(const ISnapshotSchema::TPtr& schema) const { + return schema->GetPkColumnsIds(); + } + +private: + NColumnShard::TBlobGroupSelector DsGroupSelector; +}; + } diff --git a/ydb/core/tx/columnshard/normalizer/portion/portion.cpp b/ydb/core/tx/columnshard/normalizer/portion/portion.cpp new file mode 100644 index 000000000000..739715f44125 --- /dev/null +++ b/ydb/core/tx/columnshard/normalizer/portion/portion.cpp @@ -0,0 +1,75 @@ +#include "portion.h" + +#include <ydb/core/tx/columnshard/engines/scheme/filtered_scheme.h> +#include <ydb/core/tx/columnshard/engines/portions/constructor.h> +#include <ydb/core/tx/columnshard/columnshard_schema.h> + +#include <ydb/core/formats/arrow/arrow_helpers.h> + + +namespace NKikimr::NOlap { + +class TPortionsNormalizer::TNormalizerResult : public INormalizerChanges { + std::vector<std::shared_ptr<TPortionInfo>> Portions; + std::shared_ptr<THashMap<ui64, ISnapshotSchema::TPtr>> Schemas; +public: + TNormalizerResult(std::vector<std::shared_ptr<TPortionInfo>>&& portions, std::shared_ptr<THashMap<ui64, ISnapshotSchema::TPtr>> schemas) + : Portions(std::move(portions)) + , Schemas(schemas) + {} + + bool ApplyOnExecute(NTabletFlatExecutor::TTransactionContext& txc, const TNormalizationController& /* normController */) const override { + using namespace NColumnShard; + TDbWrapper db(txc.DB, nullptr); + + for (auto&& portionInfo : Portions) { + auto schema = Schemas->FindPtr(portionInfo->GetPortionId()); + AFL_VERIFY(!!schema)("portion_id", portionInfo->GetPortionId()); + portionInfo->SaveToDatabase(db, (*schema)->GetIndexInfo().GetPKFirstColumnId(), true); + } + return true; + } + + ui64 GetSize() const override { + return Portions.size(); + } +}; + +bool TPortionsNormalizer::CheckPortion(const NColumnShard::TTablesManager&, const TPortionInfo& portionInfo) const { + return KnownPortions.contains(portionInfo.GetAddress()); +} + +INormalizerTask::TPtr TPortionsNormalizer::BuildTask(std::vector<std::shared_ptr<TPortionInfo>>&& portions, std::shared_ptr<THashMap<ui64, ISnapshotSchema::TPtr>> schemas) const { + return std::make_shared<TTrivialNormalizerTask>(std::make_shared<TNormalizerResult>(std::move(portions), schemas)); +} + + TConclusion<bool> TPortionsNormalizer::DoInitImpl(const TNormalizationController&, NTabletFlatExecutor::TTransactionContext& txc) { + using namespace NColumnShard; + + NIceDb::TNiceDb db(txc.DB); + bool ready = true; + ready = ready & Schema::Precharge<Schema::IndexPortions>(db, txc.DB.GetScheme()); + if (!ready) { + return TConclusionStatus::Fail("Not ready"); + } + + { + auto rowset = db.Table<Schema::IndexPortions>().Select(); + if (!rowset.IsReady()) { + return TConclusionStatus::Fail("Not ready"); + } + + while (!rowset.EndOfSet()) { + TPortionAddress portionAddr(rowset.GetValue<Schema::IndexPortions::PathId>(), rowset.GetValue<Schema::IndexPortions::PortionId>()); + KnownPortions.insert(portionAddr); + if (!rowset.Next()) { + return TConclusionStatus::Fail("Not ready"); + } + } + } + + return true; +} + + +} diff --git a/ydb/core/tx/columnshard/normalizer/portion/portion.h b/ydb/core/tx/columnshard/normalizer/portion/portion.h new file mode 100644 index 000000000000..505d6fe8d90a --- /dev/null +++ b/ydb/core/tx/columnshard/normalizer/portion/portion.h @@ -0,0 +1,39 @@ +#pragma once + +#include "normalizer.h" +#include <ydb/core/tx/columnshard/normalizer/abstract/abstract.h> +#include <ydb/core/tx/columnshard/defs.h> + + +namespace NKikimr::NColumnShard { + class TTablesManager; +} + +namespace NKikimr::NOlap { + +class TPortionsNormalizer : public TPortionsNormalizerBase { + static inline TFactory::TRegistrator<TPortionsNormalizer> Registrator = TFactory::TRegistrator<TPortionsNormalizer>(ENormalizerSequentialId::PortionsMetadata); +public: + class TNormalizerResult; + class TTask; + +public: + TPortionsNormalizer(const TNormalizationController::TInitContext& info) + : TPortionsNormalizerBase(info) + {} + + virtual ENormalizerSequentialId GetType() const override { + return ENormalizerSequentialId::PortionsMetadata; + } + + virtual INormalizerTask::TPtr BuildTask(std::vector<std::shared_ptr<TPortionInfo>>&& portions, std::shared_ptr<THashMap<ui64, ISnapshotSchema::TPtr>> schemas) const override; + virtual TConclusion<bool> DoInitImpl(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) override; + + virtual bool CheckPortion(const NColumnShard::TTablesManager& tablesManager, const TPortionInfo& portionInfo) const override; + +private: + THashSet<TPortionAddress> KnownPortions; + +}; + +} diff --git a/ydb/core/tx/columnshard/normalizer/portion/ya.make b/ydb/core/tx/columnshard/normalizer/portion/ya.make index 2dd2475a1987..9f6a67d026d7 100644 --- a/ydb/core/tx/columnshard/normalizer/portion/ya.make +++ b/ydb/core/tx/columnshard/normalizer/portion/ya.make @@ -2,8 +2,8 @@ LIBRARY() SRCS( normalizer.cpp - min_max.cpp - chunks.cpp + GLOBAL chunks.cpp + GLOBAL clean.cpp ) PEERDIR( diff --git a/ydb/core/tx/columnshard/normalizer/tables/normalizer.cpp b/ydb/core/tx/columnshard/normalizer/tables/normalizer.cpp new file mode 100644 index 000000000000..63bd4c027edf --- /dev/null +++ b/ydb/core/tx/columnshard/normalizer/tables/normalizer.cpp @@ -0,0 +1,141 @@ +#include "normalizer.h" + +#include <ydb/core/tx/columnshard/columnshard_private_events.h> + +namespace NKikimr::NOlap { + +class TRemovedTablesNormalizer::TNormalizerResult : public INormalizerChanges { + struct TPathInfo { + ui64 PathId; + ui64 Step; + ui64 TxId; + }; + + std::vector<TPathInfo> PathIds; + +public: + TNormalizerResult(std::vector<TPathInfo>&& pathIds) + : PathIds(std::move(pathIds)) + {} + +public: + bool ApplyOnExecute(NTabletFlatExecutor::TTransactionContext& txc, const TNormalizationController& /* normController */) const override { + using namespace NColumnShard; + NIceDb::TNiceDb db(txc.DB); + + for (auto&& pathInfo: PathIds) { + db.Table<Schema::TableVersionInfo>().Key(pathInfo.PathId, pathInfo.Step, pathInfo.TxId).Delete(); + db.Table<Schema::TableInfo>().Key(pathInfo.PathId).Delete(); + } + return true; + } + + ui64 GetSize() const override { + return PathIds.size(); + } + + static std::optional<std::vector<INormalizerChanges::TPtr>> Init(NTabletFlatExecutor::TTransactionContext& txc) { + using namespace NColumnShard; + NIceDb::TNiceDb db(txc.DB); + + bool ready = true; + ready = ready & Schema::Precharge<Schema::TableVersionInfo>(db, txc.DB.GetScheme()); + ready = ready & Schema::Precharge<Schema::TableInfo>(db, txc.DB.GetScheme()); + ready = ready & Schema::Precharge<Schema::IndexColumns>(db, txc.DB.GetScheme()); + if (!ready) { + return std::nullopt; + } + + std::set<ui64> notEmptyPaths; + { + auto rowset = db.Table<Schema::IndexColumns>().Select(); + if (!rowset.IsReady()) { + return std::nullopt; + } + + while (!rowset.EndOfSet()) { + const auto pathId = rowset.GetValue<Schema::IndexColumns::PathId>(); + notEmptyPaths.emplace(pathId); + + if (!rowset.Next()) { + return std::nullopt; + } + } + } + + + std::set<ui64> droppedTables; + { + auto rowset = db.Table<Schema::TableInfo>().Select(); + if (!rowset.IsReady()) { + return std::nullopt; + } + + while (!rowset.EndOfSet()) { + const auto pathId = rowset.GetValue<Schema::TableInfo::PathId>(); + const NOlap::TSnapshot dropSnapshot(rowset.GetValue<Schema::TableInfo::DropStep>(), rowset.GetValue<Schema::TableInfo::DropTxId>()); + + if (dropSnapshot.Valid() && !notEmptyPaths.contains(pathId)) { + droppedTables.emplace(pathId); + } + + if (!rowset.Next()) { + return std::nullopt; + } + } + } + + std::vector<INormalizerChanges::TPtr> changes; + ui64 fullCount = 0; + + { + auto rowset = db.Table<Schema::TableVersionInfo>().Select(); + if (!rowset.IsReady()) { + return std::nullopt; + } + + std::vector<TPathInfo> toRemove; + while (!rowset.EndOfSet()) { + TPathInfo pathInfo; + pathInfo.PathId = rowset.GetValue<Schema::TableVersionInfo::PathId>(); + if (droppedTables.contains(pathInfo.PathId)) { + pathInfo.Step = rowset.GetValue<Schema::TableVersionInfo::SinceStep>(); + pathInfo.TxId = rowset.GetValue<Schema::TableVersionInfo::SinceTxId>(); + toRemove.emplace_back(pathInfo); + ++fullCount; + } + + if (toRemove.size() == 10000) { + changes.emplace_back(std::make_shared<TNormalizerResult>(std::move(toRemove))); + toRemove.clear(); + } + + if (!rowset.Next()) { + return std::nullopt; + } + } + + if (toRemove.size() > 0) { + changes.emplace_back(std::make_shared<TNormalizerResult>(std::move(toRemove))); + } + } + + ACFL_INFO("normalizer", "TGranulesNormalizer")("message", TStringBuilder() << fullCount << " chunks found"); + return changes; + } + +}; + +TConclusion<std::vector<INormalizerTask::TPtr>> TRemovedTablesNormalizer::DoInit(const TNormalizationController& /*controller*/, NTabletFlatExecutor::TTransactionContext& txc) { + auto changes = TNormalizerResult::Init(txc); + if (!changes) { + return TConclusionStatus::Fail("Not ready");; + } + std::vector<INormalizerTask::TPtr> tasks; + for (auto&& c : *changes) { + tasks.emplace_back(std::make_shared<TTrivialNormalizerTask>(c)); + } + return tasks; +} + +} diff --git a/ydb/core/tx/columnshard/normalizer/tables/normalizer.h b/ydb/core/tx/columnshard/normalizer/tables/normalizer.h new file mode 100644 index 000000000000..b22b6e39b21d --- /dev/null +++ b/ydb/core/tx/columnshard/normalizer/tables/normalizer.h @@ -0,0 +1,23 @@ +#pragma once + +#include <ydb/core/tx/columnshard/normalizer/abstract/abstract.h> +#include <ydb/core/tx/columnshard/columnshard_schema.h> + + +namespace NKikimr::NOlap { + +class TRemovedTablesNormalizer: public TNormalizationController::INormalizerComponent { + static inline INormalizerComponent::TFactory::TRegistrator<TRemovedTablesNormalizer> Registrator = INormalizerComponent::TFactory::TRegistrator<TRemovedTablesNormalizer>(ENormalizerSequentialId::TablesCleaner); + class TNormalizerResult; +public: + TRemovedTablesNormalizer(const TNormalizationController::TInitContext&) + {} + + virtual ENormalizerSequentialId GetType() const override { + return ENormalizerSequentialId::TablesCleaner; + } + + virtual TConclusion<std::vector<INormalizerTask::TPtr>> DoInit(const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) override; +}; + +} diff --git a/ydb/core/tx/columnshard/normalizer/tables/ya.make b/ydb/core/tx/columnshard/normalizer/tables/ya.make new file mode 100644 index 000000000000..d44051621eb3 --- /dev/null +++ b/ydb/core/tx/columnshard/normalizer/tables/ya.make @@ -0,0 +1,11 @@ +LIBRARY() + +SRCS( + GLOBAL normalizer.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/normalizer/abstract +) + +END() diff --git a/ydb/core/tx/columnshard/operations/write.cpp b/ydb/core/tx/columnshard/operations/write.cpp index b580b2c2f340..38007b1f96a3 100644 --- a/ydb/core/tx/columnshard/operations/write.cpp +++ b/ydb/core/tx/columnshard/operations/write.cpp @@ -13,11 +13,12 @@ namespace NKikimr::NColumnShard { - TWriteOperation::TWriteOperation(const TWriteId writeId, const ui64 txId, const EOperationStatus& status, const TInstant createdAt) + TWriteOperation::TWriteOperation(const TWriteId writeId, const ui64 lockId, const ui64 cookie, const EOperationStatus& status, const TInstant createdAt) : Status(status) , CreatedAt(createdAt) , WriteId(writeId) - , TxId(txId) + , LockId(lockId) + , Cookie(cookie) { } @@ -26,7 +27,8 @@ namespace NKikimr::NColumnShard { NEvWrite::TWriteMeta writeMeta((ui64)WriteId, tableId, source); std::shared_ptr<NConveyor::ITask> task = std::make_shared<NOlap::TBuildSlicesTask>(owner.TabletID(), ctx.SelfID, owner.BufferizationWriteActorId, - NEvWrite::TWriteData(writeMeta, data, owner.TablesManager.GetPrimaryIndex()->GetReplaceKey(), owner.StoragesManager->GetInsertOperator()->StartWritingAction("WRITING_OPERATOR"))); + NEvWrite::TWriteData(writeMeta, data, owner.TablesManager.GetPrimaryIndex()->GetReplaceKey(), + owner.StoragesManager->GetInsertOperator()->StartWritingAction(NOlap::NBlobOperations::EConsumer::WRITING_OPERATOR))); NConveyor::TCompServiceOperator::SendTaskToExecute(task); Status = EOperationStatus::Started; @@ -57,8 +59,21 @@ namespace NKikimr::NColumnShard { Y_ABORT_UNLESS(Status == EOperationStatus::Started); Status = EOperationStatus::Prepared; GlobalWriteIds = globalWriteIds; + NIceDb::TNiceDb db(txc.DB); - Schema::Operations_Write(db, *this); + NKikimrTxColumnShard::TInternalOperationData proto; + ToProto(proto); + + TString metadata; + Y_ABORT_UNLESS(proto.SerializeToString(&metadata)); + + db.Table<Schema::Operations>().Key((ui64)WriteId).Update( + NIceDb::TUpdate<Schema::Operations::Status>((ui32)Status), + NIceDb::TUpdate<Schema::Operations::CreatedAt>(CreatedAt.Seconds()), + NIceDb::TUpdate<Schema::Operations::Metadata>(metadata), + NIceDb::TUpdate<Schema::Operations::LockId>(LockId), + NIceDb::TUpdate<Schema::Operations::Cookie>(Cookie) + ); } void TWriteOperation::ToProto(NKikimrTxColumnShard::TInternalOperationData& proto) const { @@ -86,46 +101,67 @@ namespace NKikimr::NColumnShard { bool TOperationsManager::Load(NTabletFlatExecutor::TTransactionContext& txc) { NIceDb::TNiceDb db(txc.DB); - auto rowset = db.Table<Schema::Operations>().Select(); - if (!rowset.IsReady()) { - return false; - } - - while (!rowset.EndOfSet()) { - const TWriteId writeId = (TWriteId) rowset.GetValue<Schema::Operations::WriteId>(); - const ui64 createdAtSec = rowset.GetValue<Schema::Operations::CreatedAt>(); - const ui64 txId = rowset.GetValue<Schema::Operations::TxId>(); - const TString metadata = rowset.GetValue<Schema::Operations::Metadata>(); - NKikimrTxColumnShard::TInternalOperationData metaProto; - Y_ABORT_UNLESS(metaProto.ParseFromString(metadata)); - const EOperationStatus status = (EOperationStatus) rowset.GetValue<Schema::Operations::Status>(); - - auto operation = std::make_shared<TWriteOperation>(writeId, txId, status, TInstant::Seconds(createdAtSec)); - operation->FromProto(metaProto); - - Y_ABORT_UNLESS(operation->GetStatus() != EOperationStatus::Draft); - - auto [_, isOk] = Operations.emplace(operation->GetWriteId(), operation); - if (!isOk) { - AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "duplicated_operation")("operation", *operation); + { + auto rowset = db.Table<Schema::Operations>().Select(); + if (!rowset.IsReady()) { return false; } - Transactions[txId].push_back(operation->GetWriteId()); - LastWriteId = std::max(LastWriteId, operation->GetWriteId()); - if (!rowset.Next()) { + + while (!rowset.EndOfSet()) { + const TWriteId writeId = (TWriteId) rowset.GetValue<Schema::Operations::WriteId>(); + const ui64 createdAtSec = rowset.GetValue<Schema::Operations::CreatedAt>(); + const ui64 lockId = rowset.GetValue<Schema::Operations::LockId>(); + const ui64 cookie = rowset.GetValueOrDefault<Schema::Operations::Cookie>(0); + const TString metadata = rowset.GetValue<Schema::Operations::Metadata>(); + const EOperationStatus status = (EOperationStatus) rowset.GetValue<Schema::Operations::Status>(); + + NKikimrTxColumnShard::TInternalOperationData metaProto; + Y_ABORT_UNLESS(metaProto.ParseFromString(metadata)); + + auto operation = std::make_shared<TWriteOperation>(writeId, lockId, cookie, status, TInstant::Seconds(createdAtSec)); + operation->FromProto(metaProto); + AFL_VERIFY(operation->GetStatus() != EOperationStatus::Draft); + + auto [_, isOk] = Operations.emplace(operation->GetWriteId(), operation); + if (!isOk) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "duplicated_operation")("operation", *operation); + return false; + } + Locks[lockId].push_back(operation->GetWriteId()); + LastWriteId = std::max(LastWriteId, operation->GetWriteId()); + if (!rowset.Next()) { + return false; + } + } + } + { + auto rowset = db.Table<Schema::OperationTxIds>().Select(); + if (!rowset.IsReady()) { return false; } + + while (!rowset.EndOfSet()) { + const ui64 lockId = rowset.GetValue<Schema::OperationTxIds::LockId>(); + const ui64 txId = rowset.GetValue<Schema::OperationTxIds::TxId>(); + AFL_VERIFY(Locks.contains(lockId))("lock_id", lockId); + Tx2Lock[txId] = lockId; + if (!rowset.Next()) { + return false; + } + } } return true; } bool TOperationsManager::CommitTransaction(TColumnShard& owner, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc, const NOlap::TSnapshot& snapshot) { - TLogContextGuard gLogging(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD_SCAN)("tx_id", txId)("event", "transaction_commit_fails")); - auto tIt = Transactions.find(txId); - if (tIt == Transactions.end()) { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("details", "skip_unknown_transaction"); + TLogContextGuard gLogging(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tx_id", txId)); + auto lockId = GetLockForTx(txId); + if (!lockId) { + ACFL_ERROR("details", "unknown_transaction"); return true; } + auto tIt = Locks.find(*lockId); + AFL_VERIFY(tIt != Locks.end())("tx_id", txId)("lock_id", *lockId); TVector<TWriteOperation::TPtr> commited; for (auto&& opId : tIt->second) { @@ -133,21 +169,20 @@ namespace NKikimr::NColumnShard { (*opPtr)->Commit(owner, txc, snapshot); commited.emplace_back(*opPtr); } - - Transactions.erase(txId); - for (auto&& op: commited) { - RemoveOperation(op, txc); - } + OnTransactionFinish(commited, txId, txc); return true; } bool TOperationsManager::AbortTransaction(TColumnShard& owner, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc) { - TLogContextGuard gLogging(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD_SCAN)("tx_id", txId)("event", "transaction_abort_fails")); - auto tIt = Transactions.find(txId); - if (tIt == Transactions.end()) { - AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("details", "unknown_transaction"); + TLogContextGuard gLogging(NActors::TLogContextBuilder::Build(NKikimrServices::TX_COLUMNSHARD)("tx_id", txId)); + + auto lockId = GetLockForTx(txId); + if (!lockId) { + ACFL_ERROR("details", "unknown_transaction"); return true; } + auto tIt = Locks.find(*lockId); + AFL_VERIFY(tIt != Locks.end())("tx_id", txId)("lock_id", *lockId); TVector<TWriteOperation::TPtr> aborted; for (auto&& opId : tIt->second) { @@ -156,10 +191,7 @@ namespace NKikimr::NColumnShard { aborted.emplace_back(*opPtr); } - Transactions.erase(txId); - for (auto&& op: aborted) { - RemoveOperation(op, txc); - } + OnTransactionFinish(aborted, txId, txc); return true; } @@ -171,22 +203,66 @@ namespace NKikimr::NColumnShard { return it->second; } - void TOperationsManager::RemoveOperation(const TWriteOperation::TPtr& op, NTabletFlatExecutor::TTransactionContext& txc) { + void TOperationsManager::OnTransactionFinish(const TVector<TWriteOperation::TPtr>& operations, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc) { + auto lockId = GetLockForTx(txId); + AFL_VERIFY(!!lockId)("tx_id", txId); + Locks.erase(*lockId); + Tx2Lock.erase(txId); + for (auto&& op: operations) { + RemoveOperation(op, txc); + } NIceDb::TNiceDb db(txc.DB); + db.Table<Schema::OperationTxIds>().Key(txId, *lockId).Delete(); + } + + void TOperationsManager::RemoveOperation(const TWriteOperation::TPtr& op, NTabletFlatExecutor::TTransactionContext& txc) { Operations.erase(op->GetWriteId()); - Schema::Operations_Erase(db, op->GetWriteId()); + NIceDb::TNiceDb db(txc.DB); + db.Table<Schema::Operations>().Key((ui64)op->GetWriteId()).Delete(); } TWriteId TOperationsManager::BuildNextWriteId() { return ++LastWriteId; } - TWriteOperation::TPtr TOperationsManager::RegisterOperation(const ui64 txId) { + std::optional<ui64> TOperationsManager::GetLockForTx(const ui64 txId) const { + auto lockIt = Tx2Lock.find(txId); + if (lockIt != Tx2Lock.end()) { + return lockIt->second; + } + return std::nullopt; + } + + void TOperationsManager::LinkTransaction(const ui64 lockId, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc) { + Tx2Lock[txId] = lockId; + NIceDb::TNiceDb db(txc.DB); + db.Table<Schema::OperationTxIds>().Key(txId, lockId).Update(); + } + + TWriteOperation::TPtr TOperationsManager::RegisterOperation(const ui64 lockId, const ui64 cookie) { auto writeId = BuildNextWriteId(); - auto operation = std::make_shared<TWriteOperation>(writeId, txId, EOperationStatus::Draft, AppData()->TimeProvider->Now()); + auto operation = std::make_shared<TWriteOperation>(writeId, lockId, cookie, EOperationStatus::Draft, AppData()->TimeProvider->Now()); Y_ABORT_UNLESS(Operations.emplace(operation->GetWriteId(), operation).second); - - Transactions[operation->GetTxId()].push_back(operation->GetWriteId()); + Locks[operation->GetLockId()].push_back(operation->GetWriteId()); return operation; } + + EOperationBehaviour TOperationsManager::GetBehaviour(const NEvents::TDataEvents::TEvWrite& evWrite) { + if (evWrite.Record.HasLockTxId() && evWrite.Record.HasLockNodeId()) { + if (evWrite.Record.HasLocks() && evWrite.Record.GetLocks().GetOp() == NKikimrDataEvents::TKqpLocks::Commit) { + return EOperationBehaviour::CommitWriteLock; + } + + if (evWrite.Record.GetTxMode() == NKikimrDataEvents::TEvWrite::MODE_PREPARE) { + return EOperationBehaviour::WriteWithLock; + } + + return EOperationBehaviour::Undefined; + } + + if (evWrite.Record.HasTxId() && evWrite.Record.GetTxMode() == NKikimrDataEvents::TEvWrite::MODE_PREPARE) { + return EOperationBehaviour::InTxWrite; + } + return EOperationBehaviour::Undefined; + } } diff --git a/ydb/core/tx/columnshard/operations/write.h b/ydb/core/tx/columnshard/operations/write.h index 4107b7e301bc..08fe7724b39c 100644 --- a/ydb/core/tx/columnshard/operations/write.h +++ b/ydb/core/tx/columnshard/operations/write.h @@ -1,6 +1,7 @@ #pragma once #include <ydb/core/tx/data_events/write_data.h> +#include <ydb/core/tx/data_events/events.h> #include <ydb/core/tx/columnshard/common/snapshot.h> #include <ydb/core/tx/columnshard/engines/defs.h> #include <ydb/core/protos/tx_columnshard.pb.h> @@ -28,17 +29,26 @@ namespace NKikimr::NColumnShard { Prepared = 3 }; + enum class EOperationBehaviour : ui32 { + Undefined = 1, + InTxWrite = 2, + WriteWithLock = 3, + CommitWriteLock = 4 + }; + class TWriteOperation { YDB_READONLY(EOperationStatus, Status, EOperationStatus::Draft); YDB_READONLY_DEF(TInstant, CreatedAt); YDB_READONLY_DEF(TWriteId, WriteId); - YDB_READONLY(ui64, TxId, 0); + YDB_READONLY(ui64, LockId, 0); + YDB_READONLY(ui64, Cookie, 0); YDB_READONLY_DEF(TVector<TWriteId>, GlobalWriteIds); + YDB_ACCESSOR(EOperationBehaviour, Behaviour, EOperationBehaviour::Undefined); public: using TPtr = std::shared_ptr<TWriteOperation>; - TWriteOperation(const TWriteId writeId, const ui64 txId, const EOperationStatus& status, const TInstant createdAt); + TWriteOperation(const TWriteId writeId, const ui64 lockId, const ui64 cookie, const EOperationStatus& status, const TInstant createdAt); void Start(TColumnShard& owner, const ui64 tableId, const NEvWrite::IDataContainer::TPtr& data, const NActors::TActorId& source, const TActorContext& ctx); void OnWriteFinish(NTabletFlatExecutor::TTransactionContext& txc, const TVector<TWriteId>& globalWriteIds); @@ -46,7 +56,7 @@ namespace NKikimr::NColumnShard { void Abort(TColumnShard& owner, NTabletFlatExecutor::TTransactionContext& txc) const; void Out(IOutputStream& out) const { - out << "write_id=" << (ui64) WriteId << ";tx_id=" << TxId; + out << "write_id=" << (ui64) WriteId << ";lock_id=" << LockId; } void ToProto(NKikimrTxColumnShard::TInternalOperationData& proto) const; @@ -54,7 +64,8 @@ namespace NKikimr::NColumnShard { }; class TOperationsManager { - TMap<ui64, TVector<TWriteId>> Transactions; + TMap<ui64, TVector<TWriteId>> Locks; + TMap<ui64, ui64> Tx2Lock; TMap<TWriteId, TWriteOperation::TPtr> Operations; TWriteId LastWriteId = TWriteId(0); @@ -64,11 +75,16 @@ namespace NKikimr::NColumnShard { TWriteOperation::TPtr GetOperation(const TWriteId writeId) const; bool CommitTransaction(TColumnShard& owner, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc, const NOlap::TSnapshot& snapshot); bool AbortTransaction(TColumnShard& owner, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc); + void LinkTransaction(const ui64 lockId, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc); + std::optional<ui64> GetLockForTx(const ui64 lockId) const; + + TWriteOperation::TPtr RegisterOperation(const ui64 lockId, const ui64 cookie); + static EOperationBehaviour GetBehaviour(const NEvents::TDataEvents::TEvWrite& evWrite); - TWriteOperation::TPtr RegisterOperation(const ui64 txId); private: TWriteId BuildNextWriteId(); void RemoveOperation(const TWriteOperation::TPtr& op, NTabletFlatExecutor::TTransactionContext& txc); + void OnTransactionFinish(const TVector<TWriteOperation::TPtr>& operations, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc); }; } diff --git a/ydb/core/tx/columnshard/operations/write_data.cpp b/ydb/core/tx/columnshard/operations/write_data.cpp index b81b3839d7af..884e953dfb80 100644 --- a/ydb/core/tx/columnshard/operations/write_data.cpp +++ b/ydb/core/tx/columnshard/operations/write_data.cpp @@ -5,7 +5,7 @@ namespace NKikimr::NColumnShard { -bool TArrowData::Parse(const NKikimrDataEvents::TEvWrite_TOperation& proto, const NEvWrite::IPayloadData& payload) { +bool TArrowData::Parse(const NKikimrDataEvents::TEvWrite_TOperation& proto, const NEvWrite::IPayloadReader& payload) { if(proto.GetPayloadFormat() != NKikimrDataEvents::FORMAT_ARROW) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "invalid_payload_format")("payload_format", (ui64)proto.GetPayloadFormat()); diff --git a/ydb/core/tx/columnshard/operations/write_data.h b/ydb/core/tx/columnshard/operations/write_data.h index b4fcb5e68ef3..374cd060713b 100644 --- a/ydb/core/tx/columnshard/operations/write_data.h +++ b/ydb/core/tx/columnshard/operations/write_data.h @@ -18,7 +18,7 @@ class TArrowData : public NEvWrite::IDataContainer { : IndexSchema(schema) {} - bool Parse(const NKikimrDataEvents::TEvWrite::TOperation& proto, const NKikimr::NEvWrite::IPayloadData& payload); + bool Parse(const NKikimrDataEvents::TEvWrite::TOperation& proto, const NKikimr::NEvWrite::IPayloadReader& payload); virtual std::shared_ptr<arrow::RecordBatch> ExtractBatch() override; ui64 GetSchemaVersion() const override; ui64 GetSize() const override { diff --git a/ydb/core/tx/columnshard/operations/ya.make b/ydb/core/tx/columnshard/operations/ya.make index 200a78be1567..80dd03dd9b34 100644 --- a/ydb/core/tx/columnshard/operations/ya.make +++ b/ydb/core/tx/columnshard/operations/ya.make @@ -10,6 +10,7 @@ PEERDIR( ydb/core/protos ydb/core/tx/data_events ydb/services/metadata + ydb/core/tx/columnshard/data_sharing/destination/events ) END() diff --git a/ydb/core/tx/columnshard/resource_subscriber/actor.cpp b/ydb/core/tx/columnshard/resource_subscriber/actor.cpp index 91ed2f405b36..bd97ea30185a 100644 --- a/ydb/core/tx/columnshard/resource_subscriber/actor.cpp +++ b/ydb/core/tx/columnshard/resource_subscriber/actor.cpp @@ -13,38 +13,46 @@ class TCookie: public TThrRefBase { } }; -void TActor::Handle(TEvStartTask::TPtr& ev) { - Y_ABORT_UNLESS(!Aborted); - auto task = ev->Get()->GetTask(); - Y_ABORT_UNLESS(task); - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "ask_resources")("task", task->DebugString()); - Tasks.emplace(++Counter, task); - Send(NKikimr::NResourceBroker::MakeResourceBrokerID(), new NKikimr::NResourceBroker::TEvResourceBroker::TEvSubmitTask( - task->GetExternalTaskId(), - {{task->GetCPUAllocation(), task->GetMemoryAllocation()}}, - task->GetType(), - task->GetPriority(), - new TCookie(Counter) - )); - task->GetContext().GetCounters()->OnRequest(task->GetMemoryAllocation()); -} - -void TActor::Handle(NKikimr::NResourceBroker::TEvResourceBroker::TEvResourceAllocated::TPtr& ev) { - auto it = Tasks.find(((TCookie*)ev->Get()->Cookie.Get())->GetTaskIdentifier()); +void TActor::DoReplyAllocated(const ui64 internalTaskId, const ui64 rbTaskId) { + auto it = Tasks.find(internalTaskId); Y_ABORT_UNLESS(it != Tasks.end()); auto task = it->second; Tasks.erase(it); task->GetContext().GetCounters()->OnReply(task->GetMemoryAllocation()); if (Aborted) { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "result_resources_on_abort")("task_id", ev->Get()->TaskId)("task", task->DebugString()); - std::make_unique<TResourcesGuard>(ev->Get()->TaskId, task->GetExternalTaskId(), *task, SelfId(), task->GetContext()); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "result_resources_on_abort")("task_id", rbTaskId)("task", task->DebugString()); + std::make_unique<TResourcesGuard>(rbTaskId, task->GetExternalTaskId(), *task, SelfId(), task->GetContext()); if (Tasks.empty()) { PassAway(); } } else { - AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "result_resources")("task_id", ev->Get()->TaskId)("task", task->DebugString()); - task->OnAllocationSuccess(ev->Get()->TaskId, SelfId()); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "result_resources")("task_id", rbTaskId)("task", task->DebugString()); + task->OnAllocationSuccess(rbTaskId, SelfId()); + } +} + +void TActor::Handle(TEvStartTask::TPtr& ev) { + Y_ABORT_UNLESS(!Aborted); + auto task = ev->Get()->GetTask(); + Y_ABORT_UNLESS(task); + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "ask_resources")("task", task->DebugString()); + Tasks.emplace(++Counter, task); + if (!task->GetCPUAllocation() && !task->GetMemoryAllocation()) { + DoReplyAllocated(Counter, 0); + } else { + Send(NKikimr::NResourceBroker::MakeResourceBrokerID(), new NKikimr::NResourceBroker::TEvResourceBroker::TEvSubmitTask( + task->GetExternalTaskId(), + {{task->GetCPUAllocation(), task->GetMemoryAllocation()}}, + task->GetType(), + task->GetPriority(), + new TCookie(Counter) + )); } + task->GetContext().GetCounters()->OnRequest(task->GetMemoryAllocation()); +} + +void TActor::Handle(NKikimr::NResourceBroker::TEvResourceBroker::TEvResourceAllocated::TPtr& ev) { + DoReplyAllocated(((TCookie*)ev->Get()->Cookie.Get())->GetTaskIdentifier(), ev->Get()->TaskId); } TActor::TActor(ui64 tabletId, const TActorId& parent) diff --git a/ydb/core/tx/columnshard/resource_subscriber/actor.h b/ydb/core/tx/columnshard/resource_subscriber/actor.h index 6b38d23c338d..030943880f75 100644 --- a/ydb/core/tx/columnshard/resource_subscriber/actor.h +++ b/ydb/core/tx/columnshard/resource_subscriber/actor.h @@ -22,6 +22,7 @@ class TActor: public TActorBootstrapped<TActor> { } } + void DoReplyAllocated(const ui64 internalTaskId, const ui64 rbTaskId); public: static TAtomicCounter WaitingBlobsCount; TActor(ui64 tabletId, const TActorId& parent); diff --git a/ydb/core/tx/columnshard/resource_subscriber/task.cpp b/ydb/core/tx/columnshard/resource_subscriber/task.cpp index 7c836f5df898..d429c1e936c1 100644 --- a/ydb/core/tx/columnshard/resource_subscriber/task.cpp +++ b/ydb/core/tx/columnshard/resource_subscriber/task.cpp @@ -19,9 +19,11 @@ TResourcesGuard::~TResourcesGuard() { return; } AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "free_resources")("task_id", TaskId)("external_task_id", ExternalTaskId)("mem", Memory)("cpu", Cpu); - auto ev = std::make_unique<IEventHandle>(NKikimr::NResourceBroker::MakeResourceBrokerID(), Sender, new NKikimr::NResourceBroker::TEvResourceBroker::TEvFinishTask(TaskId)); - NActors::TActorContext::AsActorContext().Send(std::move(ev)); - Context.GetCounters()->GetBytesAllocated()->Remove(Memory); + if (TaskId) { + auto ev = std::make_unique<IEventHandle>(NKikimr::NResourceBroker::MakeResourceBrokerID(), Sender, new NKikimr::NResourceBroker::TEvResourceBroker::TEvFinishTask(TaskId)); + NActors::TActorContext::AsActorContext().Send(std::move(ev)); + Context.GetCounters()->GetBytesAllocated()->Remove(Memory); + } } TResourcesGuard::TResourcesGuard(const ui64 taskId, const TString& externalTaskId, const ITask& task, const NActors::TActorId& sender, const TTaskContext& context) @@ -31,18 +33,24 @@ TResourcesGuard::TResourcesGuard(const ui64 taskId, const TString& externalTaskI , Memory(task.GetMemoryAllocation()) , Cpu(task.GetCPUAllocation()) , Context(context) + , Priority(task.GetPriority()) { + AFL_VERIFY(taskId || (!Memory && !Cpu)); Context.GetCounters()->GetBytesAllocated()->Add(Memory); AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "allocate_resources")("external_task_id", ExternalTaskId)("task_id", TaskId)("mem", Memory)("cpu", Cpu); } void TResourcesGuard::Update(const ui64 memNew) { + if (!TaskId) { + return; + } + AFL_VERIFY(Memory); Context.GetCounters()->GetBytesAllocated()->Remove(Memory); AFL_VERIFY(NActors::TlsActivationContext); AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "update_resources")("task_id", TaskId)("external_task_id", ExternalTaskId)("mem", memNew)("cpu", Cpu)("mem_old", Memory); Memory = memNew; auto ev = std::make_unique<IEventHandle>(NKikimr::NResourceBroker::MakeResourceBrokerID(), Sender, new NKikimr::NResourceBroker::TEvResourceBroker::TEvUpdateTask(TaskId, {{Cpu, Memory}}, - Context.GetTypeName(), 1000)); + Context.GetTypeName(), Priority)); NActors::TActorContext::AsActorContext().Send(std::move(ev)); Context.GetCounters()->GetBytesAllocated()->Add(Memory); } diff --git a/ydb/core/tx/columnshard/resource_subscriber/task.h b/ydb/core/tx/columnshard/resource_subscriber/task.h index 0ea764acc404..df4b742f1ad9 100644 --- a/ydb/core/tx/columnshard/resource_subscriber/task.h +++ b/ydb/core/tx/columnshard/resource_subscriber/task.h @@ -26,6 +26,7 @@ class TResourcesGuard: public NColumnShard::TMonitoringObjectsCounter<TResources ui64 Memory; const ui32 Cpu; const TTaskContext Context; + const ui64 Priority; public: TString DebugString() const { return TStringBuilder() << "(mem=" << Memory << ";cpu=" << Cpu << ";)"; diff --git a/ydb/core/tx/columnshard/splitter/abstract/chunk_meta.cpp b/ydb/core/tx/columnshard/splitter/abstract/chunk_meta.cpp new file mode 100644 index 000000000000..646a458638dd --- /dev/null +++ b/ydb/core/tx/columnshard/splitter/abstract/chunk_meta.cpp @@ -0,0 +1,27 @@ +#include "chunk_meta.h" +#include <ydb/core/formats/arrow/arrow_helpers.h> +#include <ydb/core/formats/arrow/size_calcer.h> + +namespace NKikimr::NOlap { + +TSimpleChunkMeta::TSimpleChunkMeta(const std::shared_ptr<arrow::Array>& column, const bool needMax, const bool isSortedColumn) { + Y_ABORT_UNLESS(column); + Y_ABORT_UNLESS(column->length()); + NumRows = column->length(); + RawBytes = NArrow::GetArrayDataSize(column); + + if (needMax) { + std::pair<i32, i32> minMaxPos = {0, (column->length() - 1)}; + if (!isSortedColumn) { + minMaxPos = NArrow::FindMinMaxPosition(column); + Y_ABORT_UNLESS(minMaxPos.first >= 0); + Y_ABORT_UNLESS(minMaxPos.second >= 0); + } + + Max = NArrow::GetScalar(column, minMaxPos.second); + + Y_ABORT_UNLESS(Max); + } +} + +} diff --git a/ydb/core/tx/columnshard/splitter/abstract/chunk_meta.h b/ydb/core/tx/columnshard/splitter/abstract/chunk_meta.h new file mode 100644 index 000000000000..8f8f902e4095 --- /dev/null +++ b/ydb/core/tx/columnshard/splitter/abstract/chunk_meta.h @@ -0,0 +1,44 @@ +#pragma once +#include <contrib/libs/apache/arrow/cpp/src/arrow/scalar.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> + +#include <util/system/types.h> +#include <util/system/yassert.h> + +#include <optional> +#include <memory> + +namespace NKikimr::NOlap { + +class TSimpleChunkMeta { +protected: + std::shared_ptr<arrow::Scalar> Max; + ui32 NumRows = 0; + ui32 RawBytes = 0; + TSimpleChunkMeta() = default; +public: + TSimpleChunkMeta(const std::shared_ptr<arrow::Array>& column, const bool needMinMax, const bool isSortedColumn); + + ui64 GetMetadataSize() const { + return sizeof(ui32) + sizeof(ui32) + 8 * 3 * 2; + } + + std::shared_ptr<arrow::Scalar> GetMax() const { + return Max; + } + ui32 GetNumRows() const { + return NumRows; + } + ui32 GetRecordsCount() const { + return NumRows; + } + ui32 GetRawBytes() const { + return RawBytes; + } + + bool HasMax() const noexcept { + return Max.get(); + } + +}; +} diff --git a/ydb/core/tx/columnshard/blobs_action/memory.cpp b/ydb/core/tx/columnshard/splitter/abstract/chunks.cpp similarity index 60% rename from ydb/core/tx/columnshard/blobs_action/memory.cpp rename to ydb/core/tx/columnshard/splitter/abstract/chunks.cpp index 66ff21fc5004..05c8240f8afb 100644 --- a/ydb/core/tx/columnshard/blobs_action/memory.cpp +++ b/ydb/core/tx/columnshard/splitter/abstract/chunks.cpp @@ -1,4 +1,4 @@ -#include "memory.h" +#include "chunks.h" namespace NKikimr::NOlap { diff --git a/ydb/core/tx/columnshard/splitter/abstract/chunks.h b/ydb/core/tx/columnshard/splitter/abstract/chunks.h new file mode 100644 index 000000000000..e873ff80560e --- /dev/null +++ b/ydb/core/tx/columnshard/splitter/abstract/chunks.h @@ -0,0 +1,125 @@ +#pragma once +#include <ydb/core/tx/columnshard/engines/portions/common.h> +#include <ydb/core/tx/columnshard/common/blob.h> + +#include <ydb/library/actors/core/log.h> + +#include <contrib/libs/apache/arrow/cpp/src/arrow/scalar.h> + +namespace NKikimr::NColumnShard { +class TSplitterCounters; +} + +namespace NKikimr::NOlap { + +class TPortionInfo; +class TSimpleColumnInfo; +class TColumnSaver; + +class IPortionDataChunk { +private: + YDB_READONLY(ui32, EntityId, 0); + + std::optional<ui32> ChunkIdx; + +protected: + ui64 DoGetPackedSize() const { + return GetData().size(); + } + virtual const TString& DoGetData() const = 0; + virtual TString DoDebugString() const = 0; + virtual std::vector<std::shared_ptr<IPortionDataChunk>> DoInternalSplit(const TColumnSaver& saver, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const std::vector<ui64>& splitSizes) const = 0; + virtual bool DoIsSplittable() const = 0; + virtual std::optional<ui32> DoGetRecordsCount() const = 0; + virtual std::shared_ptr<arrow::Scalar> DoGetFirstScalar() const = 0; + virtual std::shared_ptr<arrow::Scalar> DoGetLastScalar() const = 0; + virtual void DoAddIntoPortionBeforeBlob(const TBlobRangeLink16& bRange, TPortionInfo& portionInfo) const = 0; + virtual std::shared_ptr<IPortionDataChunk> DoCopyWithAnotherBlob(TString&& /*data*/, const TSimpleColumnInfo& /*columnInfo*/) const { + AFL_VERIFY(false); + return nullptr; + } +public: + IPortionDataChunk(const ui32 entityId, const std::optional<ui16>& chunkIdx = {}) + : EntityId(entityId) + , ChunkIdx(chunkIdx) { + } + + virtual ~IPortionDataChunk() = default; + + TString DebugString() const { + return DoDebugString(); + } + + const TString& GetData() const { + return DoGetData(); + } + + ui64 GetPackedSize() const { + return DoGetPackedSize(); + } + + std::optional<ui32> GetRecordsCount() const { + return DoGetRecordsCount(); + } + + ui32 GetRecordsCountVerified() const { + auto result = DoGetRecordsCount(); + AFL_VERIFY(result); + return *result; + } + + std::vector<std::shared_ptr<IPortionDataChunk>> InternalSplit(const TColumnSaver& saver, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const std::vector<ui64>& splitSizes) const { + return DoInternalSplit(saver, counters, splitSizes); + } + + bool IsSplittable() const { + return DoIsSplittable(); + } + + ui16 GetChunkIdxVerified() const { + AFL_VERIFY(!!ChunkIdx); + return *ChunkIdx; + } + + std::optional<ui16> GetChunkIdxOptional() const { + return ChunkIdx; + } + + void SetChunkIdx(const ui16 value) { + ChunkIdx = value; + } + + std::shared_ptr<IPortionDataChunk> CopyWithAnotherBlob(TString&& data, const TSimpleColumnInfo& columnInfo) const { + return DoCopyWithAnotherBlob(std::move(data), columnInfo); + } + + std::shared_ptr<arrow::Scalar> GetFirstScalar() const { + auto result = DoGetFirstScalar(); + AFL_VERIFY(result); + return result; + } + std::shared_ptr<arrow::Scalar> GetLastScalar() const { + auto result = DoGetLastScalar(); + AFL_VERIFY(result); + return result; + } + + TChunkAddress GetChunkAddressVerified() const { + return TChunkAddress(GetEntityId(), GetChunkIdxVerified()); + } + + std::optional<TChunkAddress> GetChunkAddressOptional() const { + if (ChunkIdx) { + return TChunkAddress(GetEntityId(), GetChunkIdxVerified()); + } else { + return {}; + } + } + + void AddIntoPortionBeforeBlob(const TBlobRangeLink16& bRange, TPortionInfo& portionInfo) const { + AFL_VERIFY(!bRange.IsValid()); + return DoAddIntoPortionBeforeBlob(bRange, portionInfo); + } +}; + +} diff --git a/ydb/core/tx/columnshard/splitter/abstract/ya.make b/ydb/core/tx/columnshard/splitter/abstract/ya.make new file mode 100644 index 000000000000..82886451c221 --- /dev/null +++ b/ydb/core/tx/columnshard/splitter/abstract/ya.make @@ -0,0 +1,13 @@ +LIBRARY() + +SRCS( + chunks.cpp + chunk_meta.cpp +) + +PEERDIR( + ydb/core/tx/columnshard/engines/scheme/abstract + ydb/core/tx/columnshard/common +) + +END() diff --git a/ydb/core/tx/columnshard/splitter/batch_slice.cpp b/ydb/core/tx/columnshard/splitter/batch_slice.cpp index 47dfe990eb11..83f9f90f77f2 100644 --- a/ydb/core/tx/columnshard/splitter/batch_slice.cpp +++ b/ydb/core/tx/columnshard/splitter/batch_slice.cpp @@ -4,69 +4,123 @@ namespace NKikimr::NOlap { -bool TGeneralSerializedSlice::GroupBlobs(std::vector<TSplittedBlob>& blobs) { - std::vector<std::shared_ptr<IPortionDataChunk>> chunksInProgress; +class TChunksToSplit { +private: + YDB_READONLY_DEF(std::vector<std::shared_ptr<IPortionDataChunk>>, Chunks); + i64 FullSize = 0; +public: + ui64 GetFullSize() const { + return FullSize; + } + + ui32 size() const { + return Chunks.size(); + } + + void Clear() { + Chunks.clear(); + FullSize = 0; + } + + const std::shared_ptr<IPortionDataChunk>& operator[](const ui32 index) const { + AFL_VERIFY(index < Chunks.size()); + return Chunks[index]; + } + + void AddChunks(const std::vector<std::shared_ptr<IPortionDataChunk>>& chunks) { + for (auto&& i : chunks) { + FullSize += i->GetPackedSize(); + Chunks.emplace_back(i); + } + } + + void PopFront(const ui32 count) { + AFL_VERIFY(count <= Chunks.size()); + for (ui32 i = 0; i < count; ++i) { + FullSize -= Chunks[i]->GetPackedSize(); + } + AFL_VERIFY(FullSize >= 0); + Chunks.erase(Chunks.begin(), Chunks.begin() + count); + } + + void Exchange(const ui32 index, std::vector<std::shared_ptr<IPortionDataChunk>>&& newChunks) { + AFL_VERIFY(index < Chunks.size()); + FullSize -= Chunks[index]->GetPackedSize(); + AFL_VERIFY(FullSize >= 0); + for (auto&& i : newChunks) { + FullSize += i->GetPackedSize(); + } + Chunks.erase(Chunks.begin() + index); + Chunks.insert(Chunks.begin() + index, newChunks.begin(), newChunks.end()); + } + + bool IsEmpty() { + return Chunks.empty(); + } +}; + +bool TGeneralSerializedSlice::GroupBlobsImpl(const NSplitter::TGroupFeatures& features, std::vector<TSplittedBlob>& blobs) { + TChunksToSplit chunksInProgress; std::sort(Data.begin(), Data.end()); for (auto&& i : Data) { - for (auto&& p : i.GetChunks()) { - chunksInProgress.emplace_back(p); + if (!features.Contains(i.GetEntityId())) { + continue; } + chunksInProgress.AddChunks(i.GetChunks()); } + InternalSplitsCount = 0; + AFL_VERIFY(chunksInProgress.size()); std::vector<TSplittedBlob> result; - Y_ABORT_UNLESS(Settings.GetMaxBlobSize() >= 2 * Settings.GetMinBlobSize()); - while (chunksInProgress.size()) { - i64 fullSize = 0; - for (auto&& i : chunksInProgress) { - fullSize += i->GetPackedSize(); - } - if (fullSize < Settings.GetMaxBlobSize()) { - result.emplace_back(TSplittedBlob()); - for (auto&& i : chunksInProgress) { - result.back().Take(i); - } - chunksInProgress.clear(); - break; - } + Y_ABORT_UNLESS(features.GetSplitSettings().GetMaxBlobSize() >= 2 * features.GetSplitSettings().GetMinBlobSize()); + while (!chunksInProgress.IsEmpty()) { bool hasNoSplitChanges = true; while (hasNoSplitChanges) { + if (chunksInProgress.GetFullSize() < (ui64)features.GetSplitSettings().GetMaxBlobSize()) { + result.emplace_back(TSplittedBlob(features.GetName())); + for (auto&& i : chunksInProgress.GetChunks()) { + result.back().Take(i); + } + chunksInProgress.Clear(); + break; + } hasNoSplitChanges = false; i64 partSize = 0; for (ui32 i = 0; i < chunksInProgress.size(); ++i) { const i64 nextPartSize = partSize + chunksInProgress[i]->GetPackedSize(); - const i64 nextOtherSize = fullSize - nextPartSize; - const i64 otherSize = fullSize - partSize; - if (nextPartSize >= Settings.GetMaxBlobSize() || nextOtherSize < Settings.GetMinBlobSize()) { - Y_ABORT_UNLESS(otherSize >= Settings.GetMinBlobSize()); - Y_ABORT_UNLESS(partSize < Settings.GetMaxBlobSize()); - if (partSize >= Settings.GetMinBlobSize()) { - result.emplace_back(TSplittedBlob()); + const i64 nextOtherSize = chunksInProgress.GetFullSize() - nextPartSize; + const i64 otherSize = chunksInProgress.GetFullSize() - partSize; + if (nextPartSize >= features.GetSplitSettings().GetMaxBlobSize() || nextOtherSize < features.GetSplitSettings().GetMinBlobSize()) { + Y_ABORT_UNLESS(otherSize >= features.GetSplitSettings().GetMinBlobSize()); + Y_ABORT_UNLESS(partSize < features.GetSplitSettings().GetMaxBlobSize()); + if (partSize >= features.GetSplitSettings().GetMinBlobSize()) { + result.emplace_back(TSplittedBlob(features.GetName())); for (ui32 chunk = 0; chunk < i; ++chunk) { result.back().Take(chunksInProgress[chunk]); } Counters->BySizeSplitter.OnCorrectSerialized(result.back().GetSize()); - chunksInProgress.erase(chunksInProgress.begin(), chunksInProgress.begin() + i); + chunksInProgress.PopFront(i); hasNoSplitChanges = true; } else { - Y_ABORT_UNLESS((i64)chunksInProgress[i]->GetPackedSize() > Settings.GetMinBlobSize() - partSize); - Y_ABORT_UNLESS(otherSize - (Settings.GetMinBlobSize() - partSize) >= Settings.GetMinBlobSize()); + Y_ABORT_UNLESS((i64)chunksInProgress[i]->GetPackedSize() > features.GetSplitSettings().GetMinBlobSize() - partSize); + Y_ABORT_UNLESS(otherSize - (features.GetSplitSettings().GetMinBlobSize() - partSize) >= features.GetSplitSettings().GetMinBlobSize()); std::vector<std::shared_ptr<IPortionDataChunk>> newChunks; const bool splittable = chunksInProgress[i]->IsSplittable(); if (splittable) { Counters->BySizeSplitter.OnTrashSerialized(chunksInProgress[i]->GetPackedSize()); - const std::vector<ui64> sizes = {(ui64)(Settings.GetMinBlobSize() - partSize)}; + const std::vector<ui64> sizes = {(ui64)(features.GetSplitSettings().GetMinBlobSize() - partSize)}; newChunks = chunksInProgress[i]->InternalSplit(Schema->GetColumnSaver(chunksInProgress[i]->GetEntityId()), Counters, sizes); - chunksInProgress.erase(chunksInProgress.begin() + i); - chunksInProgress.insert(chunksInProgress.begin() + i, newChunks.begin(), newChunks.end()); + ++InternalSplitsCount; + chunksInProgress.Exchange(i, std::move(newChunks)); } - TSplittedBlob newBlob; + TSplittedBlob newBlob(features.GetName()); for (ui32 chunk = 0; chunk <= i; ++chunk) { newBlob.Take(chunksInProgress[chunk]); } - AFL_VERIFY(splittable || newBlob.GetSize() < Settings.GetMaxBlobSize())("splittable", splittable)("blob_size", newBlob.GetSize())("max", Settings.GetMaxBlobSize()); - if (newBlob.GetSize() < Settings.GetMaxBlobSize()) { - chunksInProgress.erase(chunksInProgress.begin(), chunksInProgress.begin() + i + 1); + AFL_VERIFY(splittable || newBlob.GetSize() < features.GetSplitSettings().GetMaxBlobSize())("splittable", splittable)("blob_size", newBlob.GetSize())("max", features.GetSplitSettings().GetMaxBlobSize()); + if (newBlob.GetSize() < features.GetSplitSettings().GetMaxBlobSize()) { + chunksInProgress.PopFront(i + 1); result.emplace_back(std::move(newBlob)); Counters->BySizeSplitter.OnCorrectSerialized(result.back().GetSize()); } @@ -95,11 +149,9 @@ bool TGeneralSerializedSlice::GroupBlobs(std::vector<TSplittedBlob>& blobs) { return true; } -TGeneralSerializedSlice::TGeneralSerializedSlice(const std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters, - const TSplitSettings& settings) +TGeneralSerializedSlice::TGeneralSerializedSlice(const THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters) : Schema(schema) - , Counters(counters) - , Settings(settings) { + , Counters(counters) { std::optional<ui32> recordsCount; for (auto&& [entityId, chunks] : data) { TSplittedEntity entity(entityId); @@ -118,16 +170,16 @@ TGeneralSerializedSlice::TGeneralSerializedSlice(const std::map<ui32, std::vecto RecordsCount = *recordsCount; } -TGeneralSerializedSlice::TGeneralSerializedSlice(const ui32 recordsCount, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters, const TSplitSettings& settings) +TGeneralSerializedSlice::TGeneralSerializedSlice(const ui32 recordsCount, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters) : RecordsCount(recordsCount) , Schema(schema) , Counters(counters) - , Settings(settings) { } -TBatchSerializedSlice::TBatchSerializedSlice(const std::shared_ptr<arrow::RecordBatch>& batch, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters, const TSplitSettings& settings) - : TBase(TValidator::CheckNotNull(batch)->num_rows(), schema, counters, settings) +TBatchSerializedSlice::TBatchSerializedSlice(const std::shared_ptr<arrow::RecordBatch>& batch, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters, + const NSplitter::TSplitSettings& settings) + : TBase(TValidator::CheckNotNull(batch)->num_rows(), schema, counters) , Batch(batch) { Y_ABORT_UNLESS(batch); @@ -145,7 +197,7 @@ TBatchSerializedSlice::TBatchSerializedSlice(const std::shared_ptr<arrow::Record TSimpleSplitter splitter(columnSaver, Counters); splitter.SetStats(stats); std::vector<std::shared_ptr<IPortionDataChunk>> chunks; - for (auto&& i : splitter.Split(i, Schema->GetField(c.GetEntityId()), Settings.GetMaxBlobSize())) { + for (auto&& i : splitter.Split(i, Schema->GetField(c.GetEntityId()), settings.GetMaxBlobSize())) { chunks.emplace_back(std::make_shared<TSplittedColumnChunk>(c.GetEntityId(), i, Schema)); } c.SetChunks(chunks); @@ -154,6 +206,24 @@ TBatchSerializedSlice::TBatchSerializedSlice(const std::shared_ptr<arrow::Record } } +std::vector<NKikimr::NOlap::TBatchSerializedSlice> TBatchSerializedSlice::BuildSimpleSlices(const std::shared_ptr<arrow::RecordBatch>& batch, const NSplitter::TSplitSettings& settings, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const ISchemaDetailInfo::TPtr& schemaInfo) { + std::vector<TBatchSerializedSlice> slices; + auto stats = schemaInfo->GetBatchSerializationStats(batch); + ui32 recordsCount = settings.GetMinRecordsCount(); + if (stats) { + const ui32 recordsCountForMinSize = stats->PredictOptimalPackRecordsCount(batch->num_rows(), settings.GetMinBlobSize()).value_or(recordsCount); + const ui32 recordsCountForMaxPortionSize = stats->PredictOptimalPackRecordsCount(batch->num_rows(), settings.GetMaxPortionSize()).value_or(recordsCount); + recordsCount = std::min(recordsCountForMaxPortionSize, std::max(recordsCount, recordsCountForMinSize)); + } + auto linearSplitInfo = TSimpleSplitter::GetOptimalLinearSplitting(batch->num_rows(), recordsCount); + for (auto it = linearSplitInfo.StartIterator(); it.IsValid(); it.Next()) { + std::shared_ptr<arrow::RecordBatch> current = batch->Slice(it.GetPosition(), it.GetCurrentPackSize()); + TBatchSerializedSlice slice(current, schemaInfo, counters, settings); + slices.emplace_back(std::move(slice)); + } + return slices; +} + void TGeneralSerializedSlice::MergeSlice(TGeneralSerializedSlice&& slice) { Y_ABORT_UNLESS(Data.size() == slice.Data.size()); RecordsCount += slice.GetRecordsCount(); @@ -163,4 +233,21 @@ void TGeneralSerializedSlice::MergeSlice(TGeneralSerializedSlice&& slice) { } } +bool TGeneralSerializedSlice::GroupBlobs(std::vector<TSplittedBlob>& blobs, const NSplitter::TEntityGroups& groups) { + if (groups.IsEmpty()) { + return GroupBlobsImpl(groups.GetDefaultGroupFeatures(), blobs); + } else { + std::vector<TSplittedBlob> result; + for (auto&& i : groups) { + std::vector<TSplittedBlob> blobsLocal; + if (!GroupBlobsImpl(i.second, blobsLocal)) { + return false; + } + result.insert(result.end(), blobsLocal.begin(), blobsLocal.end()); + } + std::swap(result, blobs); + return true; + } +} + } diff --git a/ydb/core/tx/columnshard/splitter/batch_slice.h b/ydb/core/tx/columnshard/splitter/batch_slice.h index 0c0aca979feb..acbb9a0414e4 100644 --- a/ydb/core/tx/columnshard/splitter/batch_slice.h +++ b/ydb/core/tx/columnshard/splitter/batch_slice.h @@ -4,60 +4,27 @@ #include "scheme_info.h" #include "column_info.h" #include "blob_info.h" +#include "similar_packer.h" #include <ydb/core/tx/columnshard/counters/indexation.h> #include <ydb/core/tx/columnshard/engines/scheme/column_features.h> #include <ydb/core/tx/columnshard/engines/scheme/abstract_scheme.h> -#include <ydb/core/tx/columnshard/engines/storage/granule.h> +#include <ydb/core/tx/columnshard/engines/scheme/index_info.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> namespace NKikimr::NOlap { -template <class TContainer> -class TArrayView { -private: - typename TContainer::iterator Begin; - typename TContainer::iterator End; -public: - TArrayView(typename TContainer::iterator itBegin, typename TContainer::iterator itEnd) - : Begin(itBegin) - , End(itEnd) { - - } - - typename TContainer::iterator begin() { - return Begin; - } - - typename TContainer::iterator end() { - return End; - } - - typename TContainer::value_type& front() { - return *Begin; - } - - typename TContainer::value_type& operator[](const size_t index) { - return *(Begin + index); - } - - size_t size() { - return End - Begin; - } -}; - -template <class TObject> -using TVectorView = TArrayView<std::vector<TObject>>; - class TDefaultSchemaDetails: public ISchemaDetailInfo { private: ISnapshotSchema::TPtr Schema; - const TSaverContext Context; std::shared_ptr<TSerializationStats> Stats; +protected: + virtual TColumnSaver DoGetColumnSaver(const ui32 columnId) const override { + return Schema->GetColumnSaver(columnId); + } public: - TDefaultSchemaDetails(ISnapshotSchema::TPtr schema, const TSaverContext& context, const std::shared_ptr<TSerializationStats>& stats) + TDefaultSchemaDetails(ISnapshotSchema::TPtr schema, const std::shared_ptr<TSerializationStats>& stats) : Schema(schema) - , Context(context) , Stats(stats) { AFL_VERIFY(Stats); @@ -85,20 +52,17 @@ class TDefaultSchemaDetails: public ISchemaDetailInfo { virtual ui32 GetColumnId(const std::string& fieldName) const override { return Schema->GetColumnId(fieldName); } - virtual TColumnSaver GetColumnSaver(const ui32 columnId) const override { - return Schema->GetColumnSaver(columnId, Context); - } }; class TGeneralSerializedSlice { private: YDB_READONLY(ui32, RecordsCount, 0); + YDB_READONLY(ui32, InternalSplitsCount, 0); protected: std::vector<TSplittedEntity> Data; ui64 Size = 0; ISchemaDetailInfo::TPtr Schema; std::shared_ptr<NColumnShard::TSplitterCounters> Counters; - TSplitSettings Settings; TGeneralSerializedSlice() = default; const TSplittedEntity& GetEntityDataVerified(const ui32& entityId) const { @@ -110,10 +74,19 @@ class TGeneralSerializedSlice { Y_ABORT_UNLESS(false); return Data.front(); } + bool GroupBlobsImpl(const NSplitter::TGroupFeatures& features, std::vector<TSplittedBlob>& blobs); public: - std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> GetPortionChunks() const { + THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> GetPortionChunksToHash() const { + THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> result; + for (auto&& i : Data) { + AFL_VERIFY(result.emplace(i.GetEntityId(), i.GetChunks()).second); + } + return result; + } + + std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> GetPortionChunksToMap() const { std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> result; for (auto&& i : Data) { AFL_VERIFY(result.emplace(i.GetEntityId(), i.GetChunks()).second); @@ -137,14 +110,10 @@ class TGeneralSerializedSlice { return Size; } - std::vector<std::vector<std::shared_ptr<IPortionDataChunk>>> GroupChunksByBlobs() { - std::vector<std::vector<std::shared_ptr<IPortionDataChunk>>> result; + std::vector<TSplittedBlob> GroupChunksByBlobs(const NSplitter::TEntityGroups& groups) { std::vector<TSplittedBlob> blobs; - GroupBlobs(blobs); - for (auto&& i : blobs) { - result.emplace_back(i.GetChunks()); - } - return result; + AFL_VERIFY(GroupBlobs(blobs, groups)); + return blobs; } explicit TGeneralSerializedSlice(TVectorView<TGeneralSerializedSlice>&& objects) { @@ -154,12 +123,12 @@ class TGeneralSerializedSlice { MergeSlice(std::move(objects[i])); } } - TGeneralSerializedSlice(const std::map<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters, const TSplitSettings& settings); - TGeneralSerializedSlice(const ui32 recordsCount, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters, const TSplitSettings& settings); + TGeneralSerializedSlice(const THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>>& data, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters); + TGeneralSerializedSlice(const ui32 recordsCount, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters); void MergeSlice(TGeneralSerializedSlice&& slice); - bool GroupBlobs(std::vector<TSplittedBlob>& blobs); + bool GroupBlobs(std::vector<TSplittedBlob>& blobs, const NSplitter::TEntityGroups& groups); bool operator<(const TGeneralSerializedSlice& item) const { return Size < item.Size; @@ -171,7 +140,7 @@ class TBatchSerializedSlice: public TGeneralSerializedSlice { using TBase = TGeneralSerializedSlice; YDB_READONLY_DEF(std::shared_ptr<arrow::RecordBatch>, Batch); public: - TBatchSerializedSlice(const std::shared_ptr<arrow::RecordBatch>& batch, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters, const TSplitSettings& settings); + TBatchSerializedSlice(const std::shared_ptr<arrow::RecordBatch>& batch, ISchemaDetailInfo::TPtr schema, std::shared_ptr<NColumnShard::TSplitterCounters> counters, const NSplitter::TSplitSettings& settings); explicit TBatchSerializedSlice(TVectorView<TBatchSerializedSlice>&& objects) { Y_ABORT_UNLESS(objects.size()); @@ -184,6 +153,10 @@ class TBatchSerializedSlice: public TGeneralSerializedSlice { Batch = NArrow::CombineBatches({Batch, slice.Batch}); TBase::MergeSlice(std::move(slice)); } + + static std::vector<TBatchSerializedSlice> BuildSimpleSlices(const std::shared_ptr<arrow::RecordBatch>& batch, const NSplitter::TSplitSettings& settings, + const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const ISchemaDetailInfo::TPtr& schemaInfo); + }; } diff --git a/ydb/core/tx/columnshard/splitter/blob_info.h b/ydb/core/tx/columnshard/splitter/blob_info.h index a4515f9f7849..d96b55fd0f9c 100644 --- a/ydb/core/tx/columnshard/splitter/blob_info.h +++ b/ydb/core/tx/columnshard/splitter/blob_info.h @@ -6,10 +6,17 @@ namespace NKikimr::NOlap { class TSplittedBlob { private: + YDB_READONLY_DEF(TString, GroupName); YDB_READONLY(i64, Size, 0); YDB_READONLY_DEF(std::vector<std::shared_ptr<IPortionDataChunk>>, Chunks); public: + TSplittedBlob(const TString& groupName) + : GroupName(groupName) + { + + } + void Take(const std::shared_ptr<IPortionDataChunk>& chunk); bool operator<(const TSplittedBlob& item) const { return Size > item.Size; diff --git a/ydb/core/tx/columnshard/splitter/chunk_meta.cpp b/ydb/core/tx/columnshard/splitter/chunk_meta.cpp index 646a458638dd..3d41d9b0b6c6 100644 --- a/ydb/core/tx/columnshard/splitter/chunk_meta.cpp +++ b/ydb/core/tx/columnshard/splitter/chunk_meta.cpp @@ -1,27 +1 @@ #include "chunk_meta.h" -#include <ydb/core/formats/arrow/arrow_helpers.h> -#include <ydb/core/formats/arrow/size_calcer.h> - -namespace NKikimr::NOlap { - -TSimpleChunkMeta::TSimpleChunkMeta(const std::shared_ptr<arrow::Array>& column, const bool needMax, const bool isSortedColumn) { - Y_ABORT_UNLESS(column); - Y_ABORT_UNLESS(column->length()); - NumRows = column->length(); - RawBytes = NArrow::GetArrayDataSize(column); - - if (needMax) { - std::pair<i32, i32> minMaxPos = {0, (column->length() - 1)}; - if (!isSortedColumn) { - minMaxPos = NArrow::FindMinMaxPosition(column); - Y_ABORT_UNLESS(minMaxPos.first >= 0); - Y_ABORT_UNLESS(minMaxPos.second >= 0); - } - - Max = NArrow::GetScalar(column, minMaxPos.second); - - Y_ABORT_UNLESS(Max); - } -} - -} diff --git a/ydb/core/tx/columnshard/splitter/chunk_meta.h b/ydb/core/tx/columnshard/splitter/chunk_meta.h index 4f367dde2f2f..874531d3537d 100644 --- a/ydb/core/tx/columnshard/splitter/chunk_meta.h +++ b/ydb/core/tx/columnshard/splitter/chunk_meta.h @@ -1,53 +1,2 @@ #pragma once -#include <contrib/libs/apache/arrow/cpp/src/arrow/scalar.h> -#include <contrib/libs/apache/arrow/cpp/src/arrow/array/array_base.h> - -#include <util/system/types.h> -#include <util/system/yassert.h> - -#include <optional> -#include <memory> - -namespace NKikimr::NOlap { - -class TSimpleChunkMeta { -protected: - std::shared_ptr<arrow::Scalar> Max; - std::optional<ui32> NumRows; - std::optional<ui32> RawBytes; - TSimpleChunkMeta() = default; -public: - TSimpleChunkMeta(const std::shared_ptr<arrow::Array>& column, const bool needMinMax, const bool isSortedColumn); - - - ui64 GetMetadataSize() const { - return sizeof(ui32) + sizeof(ui32) + 8 * 3 * 2; - } - - std::shared_ptr<arrow::Scalar> GetMax() const { - return Max; - } - std::optional<ui32> GetNumRows() const { - return NumRows; - - } - std::optional<ui32> GetRawBytes() const { - return RawBytes; - } - - ui32 GetNumRowsVerified() const { - Y_ABORT_UNLESS(NumRows); - return *NumRows; - } - - ui32 GetRawBytesVerified() const { - Y_ABORT_UNLESS(RawBytes); - return *RawBytes; - } - - bool HasMax() const noexcept { - return Max.get(); - } - -}; -} +#include "abstract/chunk_meta.h" diff --git a/ydb/core/tx/columnshard/splitter/chunks.cpp b/ydb/core/tx/columnshard/splitter/chunks.cpp index 0bf0b70fe6d6..c00c3f43e61b 100644 --- a/ydb/core/tx/columnshard/splitter/chunks.cpp +++ b/ydb/core/tx/columnshard/splitter/chunks.cpp @@ -24,8 +24,9 @@ std::vector<std::shared_ptr<IPortionDataChunk>> IPortionColumnChunk::DoInternalS return result; } -void IPortionColumnChunk::DoAddIntoPortion(const TBlobRange& bRange, TPortionInfo& portionInfo) const { - TColumnRecord rec(GetChunkAddress(), bRange, BuildSimpleChunkMeta()); +void IPortionColumnChunk::DoAddIntoPortionBeforeBlob(const TBlobRangeLink16& bRange, TPortionInfo& portionInfo) const { + AFL_VERIFY(!bRange.IsValid()); + TColumnRecord rec(GetChunkAddressVerified(), bRange, BuildSimpleChunkMeta()); portionInfo.AppendOneChunkColumn(std::move(rec)); } diff --git a/ydb/core/tx/columnshard/splitter/chunks.h b/ydb/core/tx/columnshard/splitter/chunks.h index 73f88f15e5aa..bd7d6c80efdb 100644 --- a/ydb/core/tx/columnshard/splitter/chunks.h +++ b/ydb/core/tx/columnshard/splitter/chunks.h @@ -1,5 +1,6 @@ #pragma once -#include "chunk_meta.h" +#include "abstract/chunk_meta.h" +#include "abstract/chunks.h" #include <ydb/core/tx/columnshard/counters/splitter.h> #include <ydb/core/tx/columnshard/engines/portions/common.h> @@ -7,91 +8,6 @@ namespace NKikimr::NOlap { -class IPortionDataChunk { -private: - YDB_READONLY(ui32, EntityId, 0); - - std::optional<ui32> ChunkIdx; - -protected: - ui64 DoGetPackedSize() const { - return GetData().size(); - } - virtual const TString& DoGetData() const = 0; - virtual TString DoDebugString() const = 0; - virtual std::vector<std::shared_ptr<IPortionDataChunk>> DoInternalSplit(const TColumnSaver& saver, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const std::vector<ui64>& splitSizes) const = 0; - virtual bool DoIsSplittable() const = 0; - virtual std::optional<ui32> DoGetRecordsCount() const = 0; - virtual std::shared_ptr<arrow::Scalar> DoGetFirstScalar() const = 0; - virtual std::shared_ptr<arrow::Scalar> DoGetLastScalar() const = 0; - virtual void DoAddIntoPortion(const TBlobRange& bRange, TPortionInfo& portionInfo) const = 0; -public: - IPortionDataChunk(const ui32 entityId, const std::optional<ui16>& chunkIdx = {}) - : EntityId(entityId) - , ChunkIdx(chunkIdx) { - } - - virtual ~IPortionDataChunk() = default; - - TString DebugString() const { - return DoDebugString(); - } - - const TString& GetData() const { - return DoGetData(); - } - - ui64 GetPackedSize() const { - return DoGetPackedSize(); - } - - std::optional<ui32> GetRecordsCount() const { - return DoGetRecordsCount(); - } - - ui32 GetRecordsCountVerified() const { - auto result = DoGetRecordsCount(); - AFL_VERIFY(result); - return *result; - } - - std::vector<std::shared_ptr<IPortionDataChunk>> InternalSplit(const TColumnSaver& saver, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const std::vector<ui64>& splitSizes) const { - return DoInternalSplit(saver, counters, splitSizes); - } - - bool IsSplittable() const { - return DoIsSplittable(); - } - - ui16 GetChunkIdx() const { - AFL_VERIFY(!!ChunkIdx); - return *ChunkIdx; - } - - void SetChunkIdx(const ui16 value) { - ChunkIdx = value; - } - - std::shared_ptr<arrow::Scalar> GetFirstScalar() const { - auto result = DoGetFirstScalar(); - Y_ABORT_UNLESS(result); - return result; - } - std::shared_ptr<arrow::Scalar> GetLastScalar() const { - auto result = DoGetLastScalar(); - Y_ABORT_UNLESS(result); - return result; - } - - TChunkAddress GetChunkAddress() const { - return TChunkAddress(GetEntityId(), GetChunkIdx()); - } - - void AddIntoPortion(const TBlobRange& bRange, TPortionInfo& portionInfo) const { - return DoAddIntoPortion(bRange, portionInfo); - } -}; - class IPortionColumnChunk : public IPortionDataChunk { private: using TBase = IPortionDataChunk; @@ -103,7 +19,7 @@ class IPortionColumnChunk : public IPortionDataChunk { return DoGetRecordsCountImpl(); } - virtual void DoAddIntoPortion(const TBlobRange& bRange, TPortionInfo& portionInfo) const override; + virtual void DoAddIntoPortionBeforeBlob(const TBlobRangeLink16& bRange, TPortionInfo& portionInfo) const override; virtual std::vector<std::shared_ptr<IPortionDataChunk>> DoInternalSplitImpl(const TColumnSaver& saver, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const std::vector<ui64>& splitSizes) const = 0; virtual std::vector<std::shared_ptr<IPortionDataChunk>> DoInternalSplit(const TColumnSaver& saver, const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const std::vector<ui64>& splitSizes) const override; diff --git a/ydb/core/tx/columnshard/splitter/rb_splitter.cpp b/ydb/core/tx/columnshard/splitter/rb_splitter.cpp deleted file mode 100644 index 698a9e6f3e4a..000000000000 --- a/ydb/core/tx/columnshard/splitter/rb_splitter.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include "rb_splitter.h" -#include "simple.h" - -namespace NKikimr::NOlap { - -TRBSplitLimiter::TRBSplitLimiter(std::shared_ptr<NColumnShard::TSplitterCounters> counters, ISchemaDetailInfo::TPtr schemaInfo, - const std::shared_ptr<arrow::RecordBatch> batch, const TSplitSettings& settings) - : Counters(counters) - , Batch(batch) - , Settings(settings) -{ - Y_ABORT_UNLESS(Batch->num_rows()); - std::vector<TBatchSerializedSlice> slices = BuildSimpleSlices(Batch, Settings, Counters, schemaInfo); - - auto chunks = TSimilarSlicer(Settings.GetMinBlobSize()).Split(slices); - ui32 chunkStartPosition = 0; - for (auto&& spanObjects : chunks) { - Slices.emplace_back(TBatchSerializedSlice(std::move(spanObjects))); - chunkStartPosition += spanObjects.size(); - } - Y_ABORT_UNLESS(chunkStartPosition == slices.size()); - ui32 recordsCountCheck = 0; - for (auto&& i : Slices) { - recordsCountCheck += i.GetRecordsCount(); - } - Y_ABORT_UNLESS(recordsCountCheck == batch->num_rows()); -} - -bool TRBSplitLimiter::Next(std::vector<std::vector<std::shared_ptr<IPortionDataChunk>>>& portionBlobs, std::shared_ptr<arrow::RecordBatch>& batch) { - if (!Slices.size()) { - return false; - } - std::vector<TSplittedBlob> blobs; - Slices.front().GroupBlobs(blobs); - std::vector<std::vector<std::shared_ptr<IPortionDataChunk>>> result; - std::map<ui32, ui32> columnChunks; - for (auto&& i : blobs) { - if (blobs.size() == 1) { - Counters->MonoBlobs.OnBlobData(i.GetSize()); - } else { - Counters->SplittedBlobs.OnBlobData(i.GetSize()); - } - result.emplace_back(i.GetChunks()); - } - std::swap(result, portionBlobs); - batch = Slices.front().GetBatch(); - Slices.pop_front(); - return true; -} - -std::vector<NKikimr::NOlap::TBatchSerializedSlice> TRBSplitLimiter::BuildSimpleSlices(const std::shared_ptr<arrow::RecordBatch>& batch, const TSplitSettings& settings, - const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const ISchemaDetailInfo::TPtr& schemaInfo) -{ - std::vector<TBatchSerializedSlice> slices; - auto stats = schemaInfo->GetBatchSerializationStats(batch); - ui32 recordsCount = settings.GetMinRecordsCount(); - if (stats) { - const ui32 recordsCountForMinSize = stats->PredictOptimalPackRecordsCount(batch->num_rows(), settings.GetMinBlobSize()).value_or(recordsCount); - const ui32 recordsCountForMaxPortionSize = stats->PredictOptimalPackRecordsCount(batch->num_rows(), settings.GetMaxPortionSize()).value_or(recordsCount); - recordsCount = std::min(recordsCountForMaxPortionSize, std::max(recordsCount, recordsCountForMinSize)); - } - auto linearSplitInfo = TSimpleSplitter::GetOptimalLinearSplitting(batch->num_rows(), recordsCount); - for (auto it = linearSplitInfo.StartIterator(); it.IsValid(); it.Next()) { - std::shared_ptr<arrow::RecordBatch> current = batch->Slice(it.GetPosition(), it.GetCurrentPackSize()); - TBatchSerializedSlice slice(current, schemaInfo, counters, settings); - slices.emplace_back(std::move(slice)); - } - return slices; -} - -} diff --git a/ydb/core/tx/columnshard/splitter/rb_splitter.h b/ydb/core/tx/columnshard/splitter/rb_splitter.h deleted file mode 100644 index e5d25f2dcef9..000000000000 --- a/ydb/core/tx/columnshard/splitter/rb_splitter.h +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once -#include "batch_slice.h" -#include "stats.h" -#include <ydb/core/tx/columnshard/counters/indexation.h> -#include <ydb/core/tx/columnshard/engines/scheme/column_features.h> -#include <ydb/core/tx/columnshard/engines/scheme/abstract_scheme.h> -#include <ydb/core/tx/columnshard/engines/storage/granule.h> - -#include <contrib/libs/apache/arrow/cpp/src/arrow/record_batch.h> - -namespace NKikimr::NOlap { - -class TSimilarSlicer { -private: - const ui64 BottomLimit = 0; -public: - TSimilarSlicer(const ui64 bottomLimit) - : BottomLimit(bottomLimit) { - - } - - template <class TObject> - std::vector<TVectorView<TObject>> Split(std::vector<TObject>& objects) { - ui64 fullSize = 0; - for (auto&& i : objects) { - fullSize += i.GetSize(); - } - if (fullSize <= BottomLimit) { - return {TVectorView<TObject>(objects.begin(), objects.end())}; - } - ui64 currentSize = 0; - ui64 currentStart = 0; - std::vector<TVectorView<TObject>> result; - for (ui32 i = 0; i < objects.size(); ++i) { - const ui64 nextSize = currentSize + objects[i].GetSize(); - const ui64 nextOtherSize = fullSize - nextSize; - if ((nextSize >= BottomLimit && nextOtherSize >= BottomLimit) || (i + 1 == objects.size())) { - result.emplace_back(TVectorView<TObject>(objects.begin() + currentStart, objects.begin() + i + 1)); - currentSize = 0; - currentStart = i + 1; - } else { - currentSize = nextSize; - } - } - return result; - } -}; - -class TRBSplitLimiter { -private: - std::deque<TBatchSerializedSlice> Slices; - std::shared_ptr<NColumnShard::TSplitterCounters> Counters; - std::shared_ptr<arrow::RecordBatch> Batch; - TSplitSettings Settings; -public: - TRBSplitLimiter(std::shared_ptr<NColumnShard::TSplitterCounters> counters, - ISchemaDetailInfo::TPtr schemaInfo, const std::shared_ptr<arrow::RecordBatch> batch, const TSplitSettings& settings); - - static std::vector<TBatchSerializedSlice> BuildSimpleSlices(const std::shared_ptr<arrow::RecordBatch>& batch, const TSplitSettings& settings, - const std::shared_ptr<NColumnShard::TSplitterCounters>& counters, const ISchemaDetailInfo::TPtr& schemaInfo); - - std::deque<TBatchSerializedSlice> ExtractSlices() { - return std::move(Slices); - } - - bool Next(std::vector<std::vector<std::shared_ptr<IPortionDataChunk>>>& portionBlobs, std::shared_ptr<arrow::RecordBatch>& batch); -}; - -} diff --git a/ydb/core/tx/columnshard/splitter/scheme_info.cpp b/ydb/core/tx/columnshard/splitter/scheme_info.cpp index 912c1d54f2fb..fe4a65604e11 100644 --- a/ydb/core/tx/columnshard/splitter/scheme_info.cpp +++ b/ydb/core/tx/columnshard/splitter/scheme_info.cpp @@ -2,4 +2,12 @@ namespace NKikimr::NOlap { +NKikimr::NOlap::TColumnSaver ISchemaDetailInfo::GetColumnSaver(const ui32 columnId) const { + auto saver = DoGetColumnSaver(columnId); + if (OverrideSerializer) { + saver.ResetSerializer(*OverrideSerializer); + } + return saver; +} + } diff --git a/ydb/core/tx/columnshard/splitter/scheme_info.h b/ydb/core/tx/columnshard/splitter/scheme_info.h index 1e00f53343b6..1e72e63e9d35 100644 --- a/ydb/core/tx/columnshard/splitter/scheme_info.h +++ b/ydb/core/tx/columnshard/splitter/scheme_info.h @@ -8,11 +8,15 @@ namespace NKikimr::NOlap { class ISchemaDetailInfo { +private: + YDB_ACCESSOR_DEF(std::optional<NArrow::NSerialization::TSerializerContainer>, OverrideSerializer); +protected: + virtual TColumnSaver DoGetColumnSaver(const ui32 columnId) const = 0; public: using TPtr = std::shared_ptr<ISchemaDetailInfo>; virtual ~ISchemaDetailInfo() = default; virtual ui32 GetColumnId(const std::string& fieldName) const = 0; - virtual TColumnSaver GetColumnSaver(const ui32 columnId) const = 0; + TColumnSaver GetColumnSaver(const ui32 columnId) const; virtual std::shared_ptr<arrow::Field> GetField(const ui32 columnId) const = 0; virtual std::optional<TColumnSerializationStat> GetColumnSerializationStats(const ui32 columnId) const = 0; virtual bool NeedMinMaxForColumn(const ui32 columnId) const = 0; diff --git a/ydb/core/tx/columnshard/splitter/settings.cpp b/ydb/core/tx/columnshard/splitter/settings.cpp index 36ba5be4f7ed..65a6b822ba5f 100644 --- a/ydb/core/tx/columnshard/splitter/settings.cpp +++ b/ydb/core/tx/columnshard/splitter/settings.cpp @@ -1,5 +1,5 @@ #include "settings.h" -namespace NKikimr::NOlap { +namespace NKikimr::NOlap::NSplitter { } diff --git a/ydb/core/tx/columnshard/splitter/settings.h b/ydb/core/tx/columnshard/splitter/settings.h index 34bc29783799..146d1147aef2 100644 --- a/ydb/core/tx/columnshard/splitter/settings.h +++ b/ydb/core/tx/columnshard/splitter/settings.h @@ -2,9 +2,15 @@ #include <ydb/library/accessor/accessor.h> +#include <ydb/library/actors/core/log.h> + #include <util/system/types.h> +#include <util/generic/hash.h> +#include <util/generic/string.h> +#include <util/generic/hash_set.h> +#include <set> -namespace NKikimr::NOlap { +namespace NKikimr::NOlap::NSplitter { class TSplitSettings { private: @@ -29,4 +35,97 @@ class TSplitSettings { return MaxPortionSize; } }; + +class TGroupFeatures { +private: + YDB_READONLY_DEF(TString, Name); + YDB_READONLY_DEF(TSplitSettings, SplitSettings); + YDB_READONLY_DEF(std::set<ui32>, EntityIds); +public: + TGroupFeatures(const TString& name, const TSplitSettings& settings, std::set<ui32>&& entities) + : Name(name) + , SplitSettings(settings) + , EntityIds(std::move(entities)) { + AFL_VERIFY(!!Name); + } + + TGroupFeatures(const TString& name, const TSplitSettings& settings) + : Name(name) + , SplitSettings(settings) { + AFL_VERIFY(!!Name); + } + + void AddEntity(const ui32 entityId) { + AFL_VERIFY(EntityIds.emplace(entityId).second); + } + + bool IsEmpty() const { + return EntityIds.empty(); + } + + bool Contains(const ui32 entityId) const { + return EntityIds.empty() || EntityIds.contains(entityId); + } +}; + +class TEntityGroups { +private: + THashMap<TString, TGroupFeatures> GroupEntities; + THashSet<ui32> UsedEntityIds; + TGroupFeatures DefaultGroupFeatures; +public: + TEntityGroups(const TGroupFeatures& defaultGroup) + : DefaultGroupFeatures(defaultGroup) { + AFL_VERIFY(DefaultGroupFeatures.IsEmpty())("problem", "default group cannot be not empty"); + } + + TEntityGroups(const TSplitSettings& splitSettings, const TString& name) + : DefaultGroupFeatures(name, splitSettings) { + + } + + const TGroupFeatures& GetDefaultGroupFeatures() const { + return DefaultGroupFeatures; + } + + bool IsEmpty() const { + return GroupEntities.empty(); + } + + TGroupFeatures& RegisterGroup(const TString& groupName, const TSplitSettings& settings) { + auto it = GroupEntities.find(groupName); + AFL_VERIFY(it == GroupEntities.end()); + return GroupEntities.emplace(groupName, TGroupFeatures(groupName, settings)).first->second; + } + + TGroupFeatures& MutableGroupVerified(const TString& groupName) { + auto it = GroupEntities.find(groupName); + AFL_VERIFY(it != GroupEntities.end()); + return it->second; + } + + TGroupFeatures* GetGroupOptional(const TString& groupName) { + auto it = GroupEntities.find(groupName); + if (it != GroupEntities.end()) { + return &it->second; + } else { + return nullptr; + } + } + + void Add(TGroupFeatures&& features, const TString& groupName) { + for (auto&& i : features.GetEntityIds()) { + AFL_VERIFY(UsedEntityIds.emplace(i).second); + } + AFL_VERIFY(GroupEntities.emplace(groupName, std::move(features)).second); + } + + THashMap<TString, TGroupFeatures>::const_iterator begin() const { + return GroupEntities.begin(); + } + + THashMap<TString, TGroupFeatures>::const_iterator end() const { + return GroupEntities.end(); + } +}; } diff --git a/ydb/core/tx/columnshard/splitter/similar_packer.cpp b/ydb/core/tx/columnshard/splitter/similar_packer.cpp new file mode 100644 index 000000000000..9d22b3a6b255 --- /dev/null +++ b/ydb/core/tx/columnshard/splitter/similar_packer.cpp @@ -0,0 +1,5 @@ +#include "similar_packer.h" + +namespace NKikimr::NOlap { + +} diff --git a/ydb/core/tx/columnshard/splitter/similar_packer.h b/ydb/core/tx/columnshard/splitter/similar_packer.h new file mode 100644 index 000000000000..54abde2640fb --- /dev/null +++ b/ydb/core/tx/columnshard/splitter/similar_packer.h @@ -0,0 +1,81 @@ +#pragma once +#include <util/system/types.h> + +#include <vector> + +namespace NKikimr::NOlap { + +template <class TContainer> +class TArrayView { +private: + typename TContainer::iterator Begin; + typename TContainer::iterator End; +public: + TArrayView(typename TContainer::iterator itBegin, typename TContainer::iterator itEnd) + : Begin(itBegin) + , End(itEnd) { + + } + + typename TContainer::iterator begin() { + return Begin; + } + + typename TContainer::iterator end() { + return End; + } + + typename TContainer::value_type& front() { + return *Begin; + } + + typename TContainer::value_type& operator[](const size_t index) { + return *(Begin + index); + } + + size_t size() { + return End - Begin; + } +}; + +template <class TObject> +using TVectorView = TArrayView<std::vector<TObject>>; + +class TSimilarPacker { +private: + const ui64 BottomLimitNecessary = 0; +public: + TSimilarPacker(const ui64 bottomLimitNecessary) + : BottomLimitNecessary(bottomLimitNecessary) + { + + } + + template <class TObject> + std::vector<TVectorView<TObject>> Split(std::vector<TObject>& objects) { + ui64 fullSize = 0; + for (auto&& i : objects) { + fullSize += i.GetSize(); + } + if (fullSize <= BottomLimitNecessary) { + return {TVectorView<TObject>(objects.begin(), objects.end())}; + } + ui64 currentSize = 0; + ui64 currentStart = 0; + std::vector<TVectorView<TObject>> result; + for (ui32 i = 0; i < objects.size(); ++i) { + const ui64 nextSize = currentSize + objects[i].GetSize(); + const ui64 nextOtherSize = fullSize - nextSize; + if ((nextSize >= BottomLimitNecessary && nextOtherSize >= BottomLimitNecessary) || (i + 1 == objects.size())) { + result.emplace_back(TVectorView<TObject>(objects.begin() + currentStart, objects.begin() + i + 1)); + currentSize = 0; + currentStart = i + 1; + } else { + currentSize = nextSize; + } + } + return result; + } +}; + +} diff --git a/ydb/core/tx/columnshard/splitter/simple.h b/ydb/core/tx/columnshard/splitter/simple.h index d83df17125a0..48c7b9efa009 100644 --- a/ydb/core/tx/columnshard/splitter/simple.h +++ b/ydb/core/tx/columnshard/splitter/simple.h @@ -172,6 +172,10 @@ class TSplittedColumnChunk: public IPortionColumnChunk { virtual std::shared_ptr<arrow::Scalar> DoGetLastScalar() const override { return Data.GetLastScalar(); } + virtual std::shared_ptr<IPortionDataChunk> DoCopyWithAnotherBlob(TString&& /*data*/, const TSimpleColumnInfo& /*columnInfo*/) const override { + AFL_VERIFY(false); + return nullptr; + } public: i64 GetSize() const { diff --git a/ydb/core/tx/columnshard/splitter/ut/ut_splitter.cpp b/ydb/core/tx/columnshard/splitter/ut/ut_splitter.cpp index 72aa5539f6b2..b63524185294 100644 --- a/ydb/core/tx/columnshard/splitter/ut/ut_splitter.cpp +++ b/ydb/core/tx/columnshard/splitter/ut/ut_splitter.cpp @@ -1,9 +1,17 @@ -#include <library/cpp/testing/unittest/registar.h> -#include <ydb/core/tx/columnshard/splitter/rb_splitter.h> +#include <ydb/core/tx/columnshard/splitter/batch_slice.h> +#include <ydb/core/tx/columnshard/splitter/settings.h> +#include <ydb/core/tx/columnshard/splitter/scheme_info.h> +#include <ydb/core/tx/columnshard/splitter/similar_packer.h> #include <ydb/core/tx/columnshard/counters/indexation.h> +#include <ydb/core/tx/columnshard/engines/scheme/abstract/saver.h> + #include <ydb/core/formats/arrow/simple_builder/batch.h> #include <ydb/core/formats/arrow/simple_builder/filler.h> #include <ydb/core/formats/arrow/serializer/native.h> +#include <ydb/core/formats/arrow/simple_builder/array.h> + +#include <library/cpp/testing/unittest/registar.h> + #include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> Y_UNIT_TEST_SUITE(Splitter) { @@ -13,6 +21,11 @@ Y_UNIT_TEST_SUITE(Splitter) { class TTestSnapshotSchema: public NKikimr::NOlap::ISchemaDetailInfo { private: mutable std::map<std::string, ui32> Decoder; + protected: + virtual NKikimr::NOlap::TColumnSaver DoGetColumnSaver(const ui32 columnId) const override { + return NKikimr::NOlap::TColumnSaver(nullptr, std::make_shared<NSerialization::TNativeSerializer>(arrow::ipc::IpcOptions::Defaults())); + } + public: virtual bool NeedMinMaxForColumn(const ui32 /*columnId*/) const override { return true; @@ -21,10 +34,6 @@ Y_UNIT_TEST_SUITE(Splitter) { return false; } - virtual NKikimr::NOlap::TColumnSaver GetColumnSaver(const ui32 columnId) const override { - return NKikimr::NOlap::TColumnSaver(nullptr, std::make_shared<NSerialization::TNativeSerializer>(arrow::ipc::IpcOptions::Defaults())); - } - virtual std::optional<NKikimr::NOlap::TColumnSerializationStat> GetColumnSerializationStats(const ui32 /*columnId*/) const override { return {}; } @@ -66,79 +75,98 @@ Y_UNIT_TEST_SUITE(Splitter) { std::shared_ptr<TTestSnapshotSchema> Schema = std::make_shared<TTestSnapshotSchema>(); YDB_ACCESSOR_DEF(std::optional<ui32>, ExpectSlicesCount); YDB_ACCESSOR_DEF(std::optional<ui32>, ExpectBlobsCount); - YDB_ACCESSOR(bool, HasMultiSplit, false); - public: + YDB_ACCESSOR(std::optional<ui32>, ExpectPortionsCount, 1); + YDB_ACCESSOR_DEF(std::optional<ui32>, ExpectChunksCount); + YDB_ACCESSOR(std::optional<ui32>, ExpectedInternalSplitsCount, 0); - void Execute(std::shared_ptr<arrow::RecordBatch> batch) { + public: + void Execute(std::shared_ptr<arrow::RecordBatch> batch, + const NKikimr::NOlap::NSplitter::TSplitSettings& settings = NKikimr::NOlap::NSplitter::TSplitSettings() + ) { + using namespace NKikimr::NOlap; NKikimr::NColumnShard::TIndexationCounters counters("test"); - NKikimr::NOlap::TRBSplitLimiter limiter(counters.SplitterCounters, Schema, batch, NKikimr::NOlap::TSplitSettings()); - std::vector<std::vector<std::shared_ptr<NKikimr::NOlap::IPortionDataChunk>>> chunksForBlob; - std::map<std::string, std::vector<std::shared_ptr<arrow::RecordBatch>>> restoredBatch; - std::vector<i64> blobsSize; - bool hasMultiSplit = false; + std::vector<TGeneralSerializedSlice> generalSlices; + { + auto slices = TBatchSerializedSlice::BuildSimpleSlices(batch, settings, counters.SplitterCounters, Schema); + for (auto&& i : slices) { + generalSlices.emplace_back(i); + } + } + + TSimilarPacker packer(settings.GetExpectedPortionSize()); + auto packs = packer.Split(generalSlices); + const NSplitter::TEntityGroups groups(settings, "default"); + const ui32 portionsCount = packs.size(); ui32 blobsCount = 0; - ui32 slicesCount = 0; - std::shared_ptr<arrow::RecordBatch> sliceBatch; - while (limiter.Next(chunksForBlob, sliceBatch)) { - ++slicesCount; - TStringBuilder sb; - std::map<ui32, ui32> recordsCountByColumn; - for (auto&& chunks : chunksForBlob) { - ++blobsCount; - ui64 blobSize = 0; - sb << "["; - std::set<ui32> blobColumnChunks; - for (auto&& iData : chunks) { - auto i = dynamic_pointer_cast<NKikimr::NOlap::IPortionColumnChunk>(iData); - AFL_VERIFY(i); - const ui32 columnId = i->GetColumnId(); - recordsCountByColumn[columnId] += i->GetRecordsCountVerified(); - restoredBatch[Schema->GetColumnName(columnId)].emplace_back(*Schema->GetColumnLoader(columnId).Apply(i->GetData())); - blobSize += i->GetData().size(); - if (i->GetRecordsCount() != NKikimr::NOlap::TSplitSettings().GetMinRecordsCount() && !blobColumnChunks.emplace(columnId).second) { - hasMultiSplit = true; + ui32 chunksCount = 0; + ui32 pagesSum = 0; + ui32 portionShift = 0; + ui32 internalSplitsCount = 0; + for (auto&& i : packs) { + ui32 portionRecordsCount = 0; + for (auto&& rc : i) { + portionRecordsCount += rc.GetRecordsCount(); + } + const ui32 pagesOriginal = i.size(); + pagesSum += pagesOriginal; + TGeneralSerializedSlice slice(std::move(i)); + auto blobsLocal = slice.GroupChunksByBlobs(groups); + internalSplitsCount += slice.GetInternalSplitsCount(); + blobsCount += blobsLocal.size(); + THashMap<ui32, std::vector<std::shared_ptr<IPortionDataChunk>>> entityChunks; + ui32 portionSize = 0; + for (auto&& b : blobsLocal) { + chunksCount += b.GetChunks().size(); + ui64 bSize = 0; + for (auto&& c : b.GetChunks()) { + bSize += c->GetData().size(); + AFL_VERIFY(c->GetEntityId()); + auto& v = entityChunks[c->GetEntityId()]; + if (v.size()) { + AFL_VERIFY(v.back()->GetChunkIdxVerified() + 1 == c->GetChunkIdxVerified()); } - sb << "(" << i->DebugString() << ")"; + entityChunks[c->GetEntityId()].emplace_back(c); } - blobsSize.emplace_back(blobSize); - sb << "];"; + portionSize += bSize; + AFL_VERIFY(bSize < (ui64)settings.GetMaxBlobSize()); + AFL_VERIFY(bSize * 1.01 > (ui64)settings.GetMinBlobSize() || (packs.size() == 1 && blobsLocal.size() == 1))("blob_size", bSize); } - std::optional<ui32> columnRecordsCount; - for (auto&& i : recordsCountByColumn) { - if (!columnRecordsCount) { - columnRecordsCount = i.second; - } else { - Y_ABORT_UNLESS(i.second == *columnRecordsCount); + AFL_VERIFY(portionSize >= settings.GetExpectedPortionSize() || packs.size() == 1)("size", portionSize)("limit", settings.GetMaxPortionSize()); + + THashMap<ui32, std::set<ui32>> entitiesByRecordsCount; + ui32 pagesRestore = 0; + for (auto&& e : entityChunks) { + const std::shared_ptr<arrow::Array> arr = batch->GetColumnByName(Schema->GetColumnName(e.first)); + AFL_VERIFY(arr); + ui32 count = 0; + for (auto&& c : e.second) { + auto slice = arr->Slice(count + portionShift, c->GetRecordsCountVerified()); + auto readBatch = *Schema->GetColumnLoader(e.first).Apply(c->GetData()); + AFL_VERIFY(slice->length() == readBatch->num_rows()); + Y_ABORT_UNLESS(readBatch->column(0)->RangeEquals(*slice, 0, readBatch->num_rows(), 0, arrow::EqualOptions::Defaults())); + count += c->GetRecordsCountVerified(); + AFL_VERIFY(entitiesByRecordsCount[count].emplace(e.first).second); + AFL_VERIFY(entitiesByRecordsCount[count].size() <= (ui32)batch->num_columns()); + if (entitiesByRecordsCount[count].size() == (ui32)batch->num_columns()) { + ++pagesRestore; + } } + AFL_VERIFY(count == portionRecordsCount); } - Cerr << sb << Endl; - } - if (ExpectBlobsCount) { - Y_ABORT_UNLESS(*ExpectBlobsCount == blobsCount); - } - if (ExpectSlicesCount) { - Y_ABORT_UNLESS(*ExpectSlicesCount == slicesCount); - } - Y_ABORT_UNLESS(hasMultiSplit == HasMultiSplit); - for (auto&& i : blobsSize) { - Y_ABORT_UNLESS(i < NKikimr::NOlap::TSplitSettings().GetMaxBlobSize()); - Y_ABORT_UNLESS(i + 10000 >= NKikimr::NOlap::TSplitSettings().GetMinBlobSize() || blobsSize.size() == 1); - } - Y_ABORT_UNLESS(restoredBatch.size() == (ui32)batch->num_columns()); - for (auto&& i : batch->schema()->fields()) { - auto it = restoredBatch.find(i->name()); - Y_ABORT_UNLESS(it != restoredBatch.end()); - auto column = batch->GetColumnByName(i->name()); - Y_ABORT_UNLESS(column); - ui64 recordsCount = 0; - for (auto&& c : it->second) { - Y_ABORT_UNLESS(c->num_columns() == 1); - Y_ABORT_UNLESS(c->column(0)->RangeEquals(column, 0, c->num_rows(), recordsCount, arrow::EqualOptions::Defaults())); - recordsCount += c->num_rows(); + AFL_VERIFY(entitiesByRecordsCount.size() >= i.size()); + AFL_VERIFY(pagesRestore == pagesOriginal || batch->num_columns() == 1)("restore", pagesRestore)("original", pagesOriginal); + for (auto&& c : entityChunks.begin()->second) { + portionShift += c->GetRecordsCountVerified(); } - Y_ABORT_UNLESS(recordsCount == (ui32)batch->num_rows()); - } + AFL_VERIFY(portionShift = batch->num_rows()); + AFL_VERIFY(pagesSum == generalSlices.size())("sum", pagesSum)("general_slices", generalSlices.size()); + AFL_VERIFY(internalSplitsCount == ExpectedInternalSplitsCount.value_or(internalSplitsCount))("expected", *ExpectedInternalSplitsCount)("real", internalSplitsCount); + AFL_VERIFY(blobsCount == ExpectBlobsCount.value_or(blobsCount))("blobs_count", blobsCount)("expected", *ExpectBlobsCount); + AFL_VERIFY(pagesSum == ExpectSlicesCount.value_or(pagesSum))("sum", pagesSum)("expected", *ExpectSlicesCount); + AFL_VERIFY(portionsCount == ExpectPortionsCount.value_or(portionsCount))("portions_count", portionsCount)("expected", *ExpectPortionsCount); + AFL_VERIFY(chunksCount == ExpectChunksCount.value_or(chunksCount))("chunks_count", chunksCount)("expected", *ExpectChunksCount); + } }; @@ -157,7 +185,7 @@ Y_UNIT_TEST_SUITE(Splitter) { std::shared_ptr<arrow::RecordBatch> batch = NKikimr::NArrow::NConstruction::TRecordBatchConstructor({column}).BuildBatch(80048); NKikimr::NColumnShard::TIndexationCounters counters("test"); - TSplitTester().SetExpectBlobsCount(1).SetExpectSlicesCount(1).SetHasMultiSplit(true).Execute(batch); + TSplitTester().SetExpectBlobsCount(1).SetExpectSlicesCount(8).Execute(batch); } Y_UNIT_TEST(Minimal) { @@ -188,15 +216,36 @@ Y_UNIT_TEST_SUITE(Splitter) { TSplitTester().SetExpectBlobsCount(8).SetExpectSlicesCount(8).Execute(batch); } + Y_UNIT_TEST(CritSmallPortions) { + NConstruction::IArrayBuilder::TPtr columnBig = std::make_shared<NKikimr::NArrow::NConstruction::TSimpleArrayConstructor<NKikimr::NArrow::NConstruction::TStringPoolFiller>>( + "field1", NKikimr::NArrow::NConstruction::TStringPoolFiller(8, 7120)); + NConstruction::IArrayBuilder::TPtr columnSmall = std::make_shared<NKikimr::NArrow::NConstruction::TSimpleArrayConstructor<NKikimr::NArrow::NConstruction::TStringPoolFiller>>( + "field2", NKikimr::NArrow::NConstruction::TStringPoolFiller(8, 128)); + std::shared_ptr<arrow::RecordBatch> batch = NKikimr::NArrow::NConstruction::TRecordBatchConstructor({columnBig, columnSmall}).BuildBatch(80048); + NKikimr::NColumnShard::TIndexationCounters counters("test"); + + TSplitTester().SetExpectBlobsCount(80).SetExpectSlicesCount(80).SetExpectedInternalSplitsCount(0).SetExpectPortionsCount(40) + .Execute(batch, NKikimr::NOlap::NSplitter::TSplitSettings().SetMinRecordsCount(1000).SetMaxPortionSize(8000000)); + } + Y_UNIT_TEST(Crit) { NConstruction::IArrayBuilder::TPtr columnBig = std::make_shared<NKikimr::NArrow::NConstruction::TSimpleArrayConstructor<NKikimr::NArrow::NConstruction::TStringPoolFiller>>( - "field1", NKikimr::NArrow::NConstruction::TStringPoolFiller(8, 712)); + "field1", NKikimr::NArrow::NConstruction::TStringPoolFiller(8, 7120)); NConstruction::IArrayBuilder::TPtr columnSmall = std::make_shared<NKikimr::NArrow::NConstruction::TSimpleArrayConstructor<NKikimr::NArrow::NConstruction::TStringPoolFiller>>( "field2", NKikimr::NArrow::NConstruction::TStringPoolFiller(8, 128)); std::shared_ptr<arrow::RecordBatch> batch = NKikimr::NArrow::NConstruction::TRecordBatchConstructor({columnBig, columnSmall}).BuildBatch(80048); NKikimr::NColumnShard::TIndexationCounters counters("test"); - TSplitTester().SetExpectBlobsCount(16).SetExpectSlicesCount(8).Execute(batch); + TSplitTester().SetExpectBlobsCount(80).SetExpectSlicesCount(8).SetExpectedInternalSplitsCount(8).SetExpectPortionsCount(8).Execute(batch); + } + + Y_UNIT_TEST(CritSimple) { + NConstruction::IArrayBuilder::TPtr columnBig = std::make_shared<NKikimr::NArrow::NConstruction::TSimpleArrayConstructor<NKikimr::NArrow::NConstruction::TStringPoolFiller>>( + "field1", NKikimr::NArrow::NConstruction::TStringPoolFiller(8, 7120)); + std::shared_ptr<arrow::RecordBatch> batch = NKikimr::NArrow::NConstruction::TRecordBatchConstructor({columnBig}).BuildBatch(80048); + NKikimr::NColumnShard::TIndexationCounters counters("test"); + + TSplitTester().SetExpectBlobsCount(72).SetExpectSlicesCount(8).SetExpectedInternalSplitsCount(0).SetExpectPortionsCount(8).Execute(batch); } }; diff --git a/ydb/core/tx/columnshard/splitter/ut/ya.make b/ydb/core/tx/columnshard/splitter/ut/ya.make index 4d9e9af04665..24d266bffa8e 100644 --- a/ydb/core/tx/columnshard/splitter/ut/ya.make +++ b/ydb/core/tx/columnshard/splitter/ut/ya.make @@ -8,12 +8,16 @@ PEERDIR( ydb/core/tx/columnshard/counters ydb/core/tx/columnshard/engines/portions + ydb/core/tx/columnshard/common + ydb/core/tx/columnshard/blobs_action + ydb/core/tx/columnshard/data_sharing ydb/core/kqp/common ydb/library/yql/parser/pg_wrapper ydb/library/yql/public/udf ydb/core/persqueue ydb/core/kqp/session_actor ydb/core/tx/tx_proxy + ydb/core/tx/columnshard/engines/storage/chunks ydb/core/tx ydb/core/mind ydb/library/yql/minikql/comp_nodes/llvm14 diff --git a/ydb/core/tx/columnshard/splitter/ya.make b/ydb/core/tx/columnshard/splitter/ya.make index 9f2f0719a9a2..5f6c60cdf1ff 100644 --- a/ydb/core/tx/columnshard/splitter/ya.make +++ b/ydb/core/tx/columnshard/splitter/ya.make @@ -4,7 +4,7 @@ SRCS( batch_slice.cpp chunks.cpp simple.cpp - rb_splitter.cpp + similar_packer.cpp stats.cpp column_info.cpp settings.cpp @@ -15,7 +15,8 @@ SRCS( PEERDIR( contrib/libs/apache/arrow - ydb/core/tx/columnshard/engines/storage + ydb/core/tx/columnshard/splitter/abstract + ydb/core/tx/columnshard/engines/scheme ) END() diff --git a/ydb/core/tx/columnshard/tables_manager.cpp b/ydb/core/tx/columnshard/tables_manager.cpp index 4f628419226f..e7d3ca6ba0c8 100644 --- a/ydb/core/tx/columnshard/tables_manager.cpp +++ b/ydb/core/tx/columnshard/tables_manager.cpp @@ -37,13 +37,18 @@ bool TTablesManager::FillMonitoringReport(NTabletFlatExecutor::TTransactionConte } } json.InsertValue("tables_count", Tables.size()); - json.InsertValue("presets_count", SchemaPresets.size()); + json.InsertValue("presets_count", SchemaPresetsIds.size()); json.InsertValue("to_drop_count", PathsToDrop.size()); return true; } bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) { + using TTableVersionsInfo = TVersionedSchema<NKikimrTxColumnShard::TTableVersionInfo>; + + THashMap<ui32, TSchemaPreset> schemaPresets; + THashMap<ui32, TTableVersionsInfo> tableVersions; { + TMemoryProfileGuard g("TTablesManager/InitFromDB::Tables"); auto rowset = db.Table<Schema::TableInfo>().Select(); if (!rowset.IsReady()) { return false; @@ -57,7 +62,9 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) { if (table.IsDropped()) { PathsToDrop.insert(table.GetPathId()); } - Tables.insert_or_assign(table.GetPathId(), std::move(table)); + + AFL_VERIFY(tableVersions.emplace(table.GetPathId(), TTableVersionsInfo()).second); + AFL_VERIFY(Tables.emplace(table.GetPathId(), std::move(table)).second); if (!rowset.Next()) { return false; @@ -67,6 +74,7 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) { bool isFakePresetOnly = true; { + TMemoryProfileGuard g("TTablesManager/InitFromDB::SchemaPresets"); auto rowset = db.Table<Schema::SchemaPresetInfo>().Select(); if (!rowset.IsReady()) { return false; @@ -82,7 +90,8 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) { Y_VERIFY_S(preset.GetName() == "default", "Preset name: " + preset.GetName()); isFakePresetOnly = false; } - SchemaPresets.insert_or_assign(preset.GetId(), preset); + AFL_VERIFY(schemaPresets.emplace(preset.GetId(), preset).second); + AFL_VERIFY(SchemaPresetsIds.emplace(preset.GetId()).second); if (!rowset.Next()) { return false; } @@ -90,6 +99,7 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) { } { + TMemoryProfileGuard g("TTablesManager/InitFromDB::Versions"); auto rowset = db.Table<Schema::TableVersionInfo>().Select(); if (!rowset.IsReady()) { return false; @@ -101,13 +111,14 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) { Y_ABORT_UNLESS(Tables.contains(pathId)); NOlap::TSnapshot version( rowset.GetValue<Schema::TableVersionInfo::SinceStep>(), - rowset.GetValue<Schema::TableVersionInfo::SinceTxId>()); + rowset.GetValue<Schema::TableVersionInfo::SinceTxId>()); - auto& table = Tables.at(pathId); - TTableInfo::TTableVersionInfo versionInfo; + auto& table = Tables[pathId]; + auto& versionsInfo = tableVersions[pathId]; + NKikimrTxColumnShard::TTableVersionInfo versionInfo; Y_ABORT_UNLESS(versionInfo.ParseFromString(rowset.GetValue<Schema::TableVersionInfo::InfoProto>())); AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "load_table_version")("path_id", pathId)("snapshot", version)("version", versionInfo.HasSchema() ? versionInfo.GetSchema().GetVersion() : -1); - Y_ABORT_UNLESS(SchemaPresets.contains(versionInfo.GetSchemaPresetId())); + Y_ABORT_UNLESS(schemaPresets.contains(versionInfo.GetSchemaPresetId())); if (!table.IsDropped()) { auto& ttlSettings = versionInfo.GetTtlSettings(); @@ -120,7 +131,8 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) { } } } - table.AddVersion(version, versionInfo); + table.AddVersion(version); + versionsInfo.AddVersion(version, versionInfo); if (!rowset.Next()) { return false; } @@ -128,6 +140,7 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) { } { + TMemoryProfileGuard g("TTablesManager/InitFromDB::PresetVersions"); auto rowset = db.Table<Schema::SchemaPresetVersionInfo>().Select(); if (!rowset.IsReady()) { return false; @@ -135,8 +148,8 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) { while (!rowset.EndOfSet()) { const ui32 id = rowset.GetValue<Schema::SchemaPresetVersionInfo::Id>(); - Y_ABORT_UNLESS(SchemaPresets.contains(id)); - auto& preset = SchemaPresets.at(id); + Y_ABORT_UNLESS(schemaPresets.contains(id)); + auto& preset = schemaPresets[id]; NOlap::TSnapshot version( rowset.GetValue<Schema::SchemaPresetVersionInfo::SinceStep>(), rowset.GetValue<Schema::SchemaPresetVersionInfo::SinceTxId>()); @@ -151,19 +164,27 @@ bool TTablesManager::InitFromDB(NIceDb::TNiceDb& db) { } } - for (const auto& [id, preset] : SchemaPresets) { + TMemoryProfileGuard g("TTablesManager/InitFromDB::Other"); + for (const auto& [id, preset] : schemaPresets) { if (isFakePresetOnly) { Y_ABORT_UNLESS(id == 0); } else { Y_ABORT_UNLESS(id > 0); } - for (const auto& [version, schemaInfo] : preset.GetVersions()) { + for (const auto& [version, schemaInfo] : preset.GetVersionsById()) { if (schemaInfo.HasSchema()) { AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("event", "index_schema")("preset_id", id)("snapshot", version)("version", schemaInfo.GetSchema().GetVersion()); - IndexSchemaVersion(version, schemaInfo.GetSchema()); + if (!PrimaryIndex) { + PrimaryIndex = std::make_unique<NOlap::TColumnEngineForLogs>(TabletId, StoragesManager, preset.GetMinVersionForId(schemaInfo.GetSchema().GetVersion()), schemaInfo.GetSchema()); + } else { + PrimaryIndex->RegisterSchemaVersion(preset.GetMinVersionForId(schemaInfo.GetSchema().GetVersion()), schemaInfo.GetSchema()); + } } } } + for (auto&& i : Tables) { + PrimaryIndex->RegisterTable(i.first); + } return true; } @@ -176,11 +197,14 @@ bool TTablesManager::LoadIndex(NOlap::TDbWrapper& idxDB) { return true; } -bool TTablesManager::HasTable(const ui64 pathId) const { +bool TTablesManager::HasTable(const ui64 pathId, bool withDeleted) const { auto it = Tables.find(pathId); - if (it == Tables.end() || it->second.IsDropped()) { + if (it == Tables.end()) { return false; } + if (it->second.IsDropped()) { + return withDeleted; + } return true; } @@ -189,7 +213,7 @@ bool TTablesManager::IsReadyForWrite(const ui64 pathId) const { } bool TTablesManager::HasPreset(const ui32 presetId) const { - return SchemaPresets.contains(presetId); + return SchemaPresetsIds.contains(presetId); } const TTableInfo& TTablesManager::GetTable(const ui64 pathId) const { @@ -201,8 +225,7 @@ ui64 TTablesManager::GetMemoryUsage() const { ui64 memory = Tables.size() * sizeof(TTableInfo) + PathsToDrop.size() * sizeof(ui64) + - Ttl.PathsCount() * sizeof(TTtl::TDescription) + - SchemaPresets.size() * sizeof(TSchemaPreset); + Ttl.PathsCount() * sizeof(TTtl::TDescription); if (PrimaryIndex) { memory += PrimaryIndex->MemoryUsage(); } @@ -210,20 +233,17 @@ ui64 TTablesManager::GetMemoryUsage() const { } void TTablesManager::DropTable(const ui64 pathId, const NOlap::TSnapshot& version, NIceDb::TNiceDb& db) { - auto& table = Tables.at(pathId); + AFL_VERIFY(Tables.contains(pathId)); + auto& table = Tables[pathId]; table.SetDropVersion(version); PathsToDrop.insert(pathId); Ttl.DropPathTtl(pathId); - if (PrimaryIndex) { - PrimaryIndex->OnTieringModified(nullptr, Ttl); - } Schema::SaveTableDropVersion(db, pathId, version.GetPlanStep(), version.GetTxId()); } void TTablesManager::DropPreset(const ui32 presetId, const NOlap::TSnapshot& version, NIceDb::TNiceDb& db) { - auto& preset = SchemaPresets.at(presetId); - Y_ABORT_UNLESS(preset.GetName() != "default", "Cannot drop the default preset"); - preset.SetDropVersion(version); + AFL_VERIFY(SchemaPresetsIds.contains(presetId)); + SchemaPresetsIds.erase(presetId); Schema::SaveSchemaPresetDropVersion(db, presetId, version); } @@ -233,24 +253,23 @@ void TTablesManager::RegisterTable(TTableInfo&& table, NIceDb::TNiceDb& db) { Schema::SaveTableInfo(db, table.GetPathId(), table.GetTieringUsage()); const ui64 pathId = table.GetPathId(); - Tables.insert_or_assign(pathId, std::move(table)); + AFL_VERIFY(Tables.emplace(pathId, std::move(table)).second); if (PrimaryIndex) { PrimaryIndex->RegisterTable(pathId); } } bool TTablesManager::RegisterSchemaPreset(const TSchemaPreset& schemaPreset, NIceDb::TNiceDb& db) { - if (SchemaPresets.contains(schemaPreset.GetId())) { + if (SchemaPresetsIds.contains(schemaPreset.GetId())) { return false; } + SchemaPresetsIds.emplace(schemaPreset.GetId()); Schema::SaveSchemaPresetInfo(db, schemaPreset.GetId(), schemaPreset.GetName()); - SchemaPresets.insert_or_assign(schemaPreset.GetId(), schemaPreset); return true; } void TTablesManager::AddSchemaVersion(const ui32 presetId, const NOlap::TSnapshot& version, const NKikimrSchemeOp::TColumnTableSchema& schema, NIceDb::TNiceDb& db) { - Y_ABORT_UNLESS(SchemaPresets.contains(presetId)); - auto preset = SchemaPresets.at(presetId); + Y_ABORT_UNLESS(SchemaPresetsIds.contains(presetId)); TSchemaPreset::TSchemaPresetVersionInfo versionInfo; versionInfo.SetId(presetId); @@ -258,32 +277,37 @@ void TTablesManager::AddSchemaVersion(const ui32 presetId, const NOlap::TSnapsho versionInfo.SetSinceTxId(version.GetTxId()); *versionInfo.MutableSchema() = schema; - auto& schemaPreset = SchemaPresets.at(presetId); Schema::SaveSchemaPresetVersionInfo(db, presetId, version, versionInfo); - schemaPreset.AddVersion(version, versionInfo); - if (versionInfo.HasSchema()){ - IndexSchemaVersion(version, versionInfo.GetSchema()); + if (versionInfo.HasSchema()) { + if (!PrimaryIndex) { + PrimaryIndex = std::make_unique<NOlap::TColumnEngineForLogs>(TabletId, StoragesManager, version, schema); + for (auto&& i : Tables) { + PrimaryIndex->RegisterTable(i.first); + } + } else { + PrimaryIndex->RegisterSchemaVersion(version, schema); + } for (auto& columnName : Ttl.TtlColumns()) { PrimaryIndex->GetVersionedIndex().GetLastSchema()->GetIndexInfo().CheckTtlColumn(columnName); } } } -void TTablesManager::AddTableVersion(const ui64 pathId, const NOlap::TSnapshot& version, const TTableInfo::TTableVersionInfo& versionInfo, NIceDb::TNiceDb& db) { +void TTablesManager::AddTableVersion(const ui64 pathId, const NOlap::TSnapshot& version, const NKikimrTxColumnShard::TTableVersionInfo& versionInfo, NIceDb::TNiceDb& db, std::shared_ptr<TTiersManager>& manager) { auto it = Tables.find(pathId); AFL_VERIFY(it != Tables.end()); auto& table = it->second; if (versionInfo.HasSchemaPresetId()) { - Y_ABORT_UNLESS(SchemaPresets.contains(versionInfo.GetSchemaPresetId())); + Y_ABORT_UNLESS(SchemaPresetsIds.contains(versionInfo.GetSchemaPresetId())); } else if (versionInfo.HasSchema()) { TSchemaPreset fakePreset; - if (SchemaPresets.empty()) { + if (SchemaPresetsIds.empty()) { TSchemaPreset fakePreset; Y_ABORT_UNLESS(RegisterSchemaPreset(fakePreset, db)); AddSchemaVersion(fakePreset.GetId(), version, versionInfo.GetSchema(), db); } else { - Y_ABORT_UNLESS(SchemaPresets.contains(fakePreset.GetId())); + Y_ABORT_UNLESS(SchemaPresetsIds.contains(fakePreset.GetId())); AddSchemaVersion(fakePreset.GetId(), version, versionInfo.GetSchema(), db); } } @@ -295,34 +319,12 @@ void TTablesManager::AddTableVersion(const ui64 pathId, const NOlap::TSnapshot& } else { Ttl.DropPathTtl(pathId); } - if (PrimaryIndex) { - PrimaryIndex->OnTieringModified(nullptr, Ttl); + if (PrimaryIndex && manager->IsReady()) { + PrimaryIndex->OnTieringModified(manager, Ttl, pathId); } } Schema::SaveTableVersionInfo(db, pathId, version, versionInfo); - table.AddVersion(version, versionInfo); -} - -void TTablesManager::IndexSchemaVersion(const NOlap::TSnapshot& snapshot, const NKikimrSchemeOp::TColumnTableSchema& schema) { - NOlap::TIndexInfo indexInfo = DeserializeIndexInfoFromProto(schema); - indexInfo.SetAllKeys(); - const bool isFirstPrimaryIndexInitialization = !PrimaryIndex; - if (!PrimaryIndex) { - PrimaryIndex = std::make_unique<NOlap::TColumnEngineForLogs>(TabletId, NOlap::TCompactionLimits(), StoragesManager); - } - PrimaryIndex->RegisterSchemaVersion(snapshot, std::move(indexInfo)); - if (isFirstPrimaryIndexInitialization) { - for (auto&& i : Tables) { - PrimaryIndex->RegisterTable(i.first); - } - } - PrimaryIndex->OnTieringModified(nullptr, Ttl); -} - -NOlap::TIndexInfo TTablesManager::DeserializeIndexInfoFromProto(const NKikimrSchemeOp::TColumnTableSchema& schema) { - std::optional<NOlap::TIndexInfo> indexInfo = NOlap::TIndexInfo::BuildFromProto(schema); - Y_ABORT_UNLESS(indexInfo); - return *indexInfo; + table.AddVersion(version); } TTablesManager::TTablesManager(const std::shared_ptr<NOlap::IStoragesManager>& storagesManager, const ui64 tabletId) @@ -331,23 +333,29 @@ TTablesManager::TTablesManager(const std::shared_ptr<NOlap::IStoragesManager>& s { } -bool TTablesManager::TryFinalizeDropPath(NTabletFlatExecutor::TTransactionContext& txc, const ui64 pathId) { +bool TTablesManager::TryFinalizeDropPathOnExecute(NTable::TDatabase& dbTable, const ui64 pathId) const { auto itDrop = PathsToDrop.find(pathId); - if (itDrop == PathsToDrop.end()) { - return false; - } - if (GetPrimaryIndexSafe().HasDataInPathId(pathId)) { - return false; - } - PathsToDrop.erase(itDrop); - NIceDb::TNiceDb db(txc.DB); + AFL_VERIFY(itDrop != PathsToDrop.end()); + AFL_VERIFY(!GetPrimaryIndexSafe().HasDataInPathId(pathId)); + NIceDb::TNiceDb db(dbTable); NColumnShard::Schema::EraseTableInfo(db, pathId); - const auto& table = Tables.find(pathId); - Y_ABORT_UNLESS(table != Tables.end(), "No schema for path %lu", pathId); - for (auto&& tableVersion : table->second.GetVersions()) { - NColumnShard::Schema::EraseTableVersionInfo(db, pathId, tableVersion.first); + const auto& itTable = Tables.find(pathId); + AFL_VERIFY(itTable != Tables.end())("problem", "No schema for path")("path_id", pathId); + for (auto&& tableVersion : itTable->second.GetVersions()) { + NColumnShard::Schema::EraseTableVersionInfo(db, pathId, tableVersion); } return true; } +bool TTablesManager::TryFinalizeDropPathOnComplete(const ui64 pathId) { + auto itDrop = PathsToDrop.find(pathId); + AFL_VERIFY(itDrop != PathsToDrop.end()); + AFL_VERIFY(!GetPrimaryIndexSafe().HasDataInPathId(pathId)); + PathsToDrop.erase(itDrop); + const auto& itTable = Tables.find(pathId); + AFL_VERIFY(itTable != Tables.end())("problem", "No schema for path")("path_id", pathId); + Tables.erase(itTable); + return true; +} + } diff --git a/ydb/core/tx/columnshard/tables_manager.h b/ydb/core/tx/columnshard/tables_manager.h index 725bf197c284..60e1a5f66dbd 100644 --- a/ydb/core/tx/columnshard/tables_manager.h +++ b/ydb/core/tx/columnshard/tables_manager.h @@ -13,43 +13,40 @@ namespace NKikimr::NColumnShard { -template<class TSchemaProto> +template<class TVersionData> class TVersionedSchema { -protected: - std::optional<NOlap::TSnapshot> DropVersion; - TMap<NOlap::TSnapshot, TSchemaProto> Versions; - +private: + TMap<NOlap::TSnapshot, ui64> Versions; + TMap<ui64, TVersionData> VersionsById; + TMap<ui64, NOlap::TSnapshot> MinVersionById; public: - bool IsDropped() const { - return DropVersion.has_value(); - } - bool IsEmpty() const { - return Versions.empty(); + return VersionsById.empty(); } - void SetDropVersion(const NOlap::TSnapshot& version) { - DropVersion = version; + const TMap<ui64, TVersionData>& GetVersionsById() const { + return VersionsById; } - const TMap<NOlap::TSnapshot, TSchemaProto>& GetVersions() const { - return Versions; + NOlap::TSnapshot GetMinVersionForId(const ui64 sVersion) const { + auto it = MinVersionById.find(sVersion); + Y_ABORT_UNLESS(it != MinVersionById.end()); + return it->second; } - const TSchemaProto& GetVersion(const NOlap::TSnapshot& version) const { - const TSchemaProto* result = nullptr; - for (auto ver : Versions) { - if (ver.first > version) { - break; - } - result = &ver.second; + void AddVersion(const NOlap::TSnapshot& snapshot, const TVersionData& versionInfo) { + ui64 ssVersion = 0; + if (versionInfo.HasSchema()) { + ssVersion = versionInfo.GetSchema().GetVersion(); } - Y_ABORT_UNLESS(!!result); - return *result; - } + VersionsById.emplace(ssVersion, versionInfo); + Y_ABORT_UNLESS(Versions.emplace(snapshot, ssVersion).second); - void AddVersion(const NOlap::TSnapshot& version, const TSchemaProto& versionInfo) { - Versions[version] = versionInfo; + if (MinVersionById.contains(ssVersion)) { + MinVersionById.emplace(ssVersion, std::min(snapshot, MinVersionById.at(ssVersion))); + } else { + MinVersionById.emplace(ssVersion, snapshot); + } } }; @@ -80,22 +77,16 @@ class TSchemaPreset : public TVersionedSchema<NKikimrTxColumnShard::TSchemaPrese Name = rowset.template GetValue<Schema::SchemaPresetInfo::Name>(); } Y_ABORT_UNLESS(!Id || Name == "default", "Unsupported preset at load time"); - - if (rowset.template HaveValue<Schema::SchemaPresetInfo::DropStep>() && - rowset.template HaveValue<Schema::SchemaPresetInfo::DropTxId>()) - { - DropVersion.emplace(rowset.template GetValue<Schema::SchemaPresetInfo::DropStep>(), - rowset.template GetValue<Schema::SchemaPresetInfo::DropTxId>()); - } return true; } }; -class TTableInfo : public TVersionedSchema<NKikimrTxColumnShard::TTableVersionInfo> { +class TTableInfo { public: - using TTableVersionInfo = NKikimrTxColumnShard::TTableVersionInfo; ui64 PathId; TString TieringUsage; + std::optional<NOlap::TSnapshot> DropVersion; + YDB_READONLY_DEF(TSet<NOlap::TSnapshot>, Versions); public: const TString& GetTieringUsage() const { @@ -107,10 +98,26 @@ class TTableInfo : public TVersionedSchema<NKikimrTxColumnShard::TTableVersionIn return *this; } + bool IsEmpty() const { + return Versions.empty(); + } + ui64 GetPathId() const { return PathId; } + void SetDropVersion(const NOlap::TSnapshot& version) { + DropVersion = version; + } + + void AddVersion(const NOlap::TSnapshot& snapshot) { + Versions.insert(snapshot); + } + + bool IsDropped() const { + return DropVersion.has_value(); + } + TTableInfo() = default; TTableInfo(const ui64 pathId) @@ -131,7 +138,7 @@ class TTableInfo : public TVersionedSchema<NKikimrTxColumnShard::TTableVersionIn class TTablesManager { private: THashMap<ui64, TTableInfo> Tables; - THashMap<ui32, TSchemaPreset> SchemaPresets; + THashSet<ui32> SchemaPresetsIds; THashSet<ui64> PathsToDrop; TTtl Ttl; std::unique_ptr<NOlap::IColumnEngine> PrimaryIndex; @@ -140,14 +147,15 @@ class TTablesManager { public: TTablesManager(const std::shared_ptr<NOlap::IStoragesManager>& storagesManager, const ui64 tabletId); - bool TryFinalizeDropPath(NTabletFlatExecutor::TTransactionContext& txc, const ui64 pathId); + bool TryFinalizeDropPathOnExecute(NTable::TDatabase& dbTable, const ui64 pathId) const; + bool TryFinalizeDropPathOnComplete(const ui64 pathId); const TTtl& GetTtl() const { return Ttl; } - void AddTtls(THashMap<ui64, NOlap::TTiering>& eviction) { - Ttl.AddTtls(eviction); + bool AddTtls(THashMap<ui64, NOlap::TTiering>& eviction) { + return Ttl.AddTtls(eviction); } const THashSet<ui64>& GetPathsToDrop() const { @@ -162,8 +170,8 @@ class TTablesManager { return Tables; } - const THashMap<ui32, TSchemaPreset>& GetSchemaPresets() const { - return SchemaPresets; + const THashSet<ui32>& GetSchemaPresets() const { + return SchemaPresetsIds; } bool HasPrimaryIndex() const { @@ -189,13 +197,39 @@ class TTablesManager { return *PrimaryIndex; } + template <class TIndex> + TIndex& MutablePrimaryIndexAsVerified() { + AFL_VERIFY(!!PrimaryIndex); + auto result = dynamic_cast<TIndex*>(PrimaryIndex.get()); + AFL_VERIFY(result); + return *result; + } + + template <class TIndex> + const TIndex& GetPrimaryIndexAsVerified() const { + AFL_VERIFY(!!PrimaryIndex); + auto result = dynamic_cast<const TIndex*>(PrimaryIndex.get()); + AFL_VERIFY(result); + return *result; + } + + template <class TIndex> + const TIndex* GetPrimaryIndexAsOptional() const { + if (!PrimaryIndex) { + return nullptr; + } + auto result = dynamic_cast<const TIndex*>(PrimaryIndex.get()); + AFL_VERIFY(result); + return result; + } + bool InitFromDB(NIceDb::TNiceDb& db); bool LoadIndex(NOlap::TDbWrapper& db); const TTableInfo& GetTable(const ui64 pathId) const; ui64 GetMemoryUsage() const; - bool HasTable(const ui64 pathId) const; + bool HasTable(const ui64 pathId, bool withDeleted = false) const; bool IsReadyForWrite(const ui64 pathId) const; bool HasPreset(const ui32 presetId) const; @@ -206,11 +240,8 @@ class TTablesManager { bool RegisterSchemaPreset(const TSchemaPreset& schemaPreset, NIceDb::TNiceDb& db); void AddSchemaVersion(const ui32 presetId, const NOlap::TSnapshot& version, const NKikimrSchemeOp::TColumnTableSchema& schema, NIceDb::TNiceDb& db); - void AddTableVersion(const ui64 pathId, const NOlap::TSnapshot& version, const TTableInfo::TTableVersionInfo& versionInfo, NIceDb::TNiceDb& db); + void AddTableVersion(const ui64 pathId, const NOlap::TSnapshot& version, const NKikimrTxColumnShard::TTableVersionInfo& versionInfo, NIceDb::TNiceDb& db, std::shared_ptr<TTiersManager>& manager); bool FillMonitoringReport(NTabletFlatExecutor::TTransactionContext& txc, NJson::TJsonValue& json); -private: - void IndexSchemaVersion(const NOlap::TSnapshot& version, const NKikimrSchemeOp::TColumnTableSchema& schema); - static NOlap::TIndexInfo DeserializeIndexInfoFromProto(const NKikimrSchemeOp::TColumnTableSchema& schema); }; } diff --git a/ydb/core/tx/columnshard/test_helper/controllers.cpp b/ydb/core/tx/columnshard/test_helper/controllers.cpp new file mode 100644 index 000000000000..d9ee86446c61 --- /dev/null +++ b/ydb/core/tx/columnshard/test_helper/controllers.cpp @@ -0,0 +1,22 @@ +#include "controllers.h" +#include <ydb/core/tx/columnshard/engines/changes/ttl.h> +#include <ydb/core/tx/columnshard/engines/changes/indexation.h> +#include <ydb/core/tx/columnshard/columnshard_ut_common.h> + +namespace NKikimr::NOlap { + +void TWaitCompactionController::OnTieringModified(const std::shared_ptr<NKikimr::NColumnShard::TTiersManager>& /*tiers*/) { + ++TiersModificationsCount; + AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("event", "OnTieringModified")("count", TiersModificationsCount); +} + +void TWaitCompactionController::SetTiersSnapshot(TTestBasicRuntime& runtime, const TActorId& tabletActorId, const NMetadata::NFetcher::ISnapshot::TPtr& snapshot) { + CurrentConfig = snapshot; + ui32 startCount = TiersModificationsCount; + NTxUT::ProvideTieringSnapshot(runtime, tabletActorId, snapshot); + while (TiersModificationsCount == startCount) { + runtime.SimulateSleep(TDuration::Seconds(1)); + } +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/test_helper/controllers.h b/ydb/core/tx/columnshard/test_helper/controllers.h new file mode 100644 index 000000000000..682f2dcacaf8 --- /dev/null +++ b/ydb/core/tx/columnshard/test_helper/controllers.h @@ -0,0 +1,57 @@ +#pragma once +#include <ydb/core/tx/columnshard/hooks/testing/controller.h> +#include <ydb/core/testlib/basics/runtime.h> + +namespace NKikimr::NOlap { + +class TWaitCompactionController: public NYDBTest::NColumnShard::TController { +private: + using TBase = NKikimr::NYDBTest::ICSController; + TAtomicCounter ExportsFinishedCount = 0; + NMetadata::NFetcher::ISnapshot::TPtr CurrentConfig; + ui32 TiersModificationsCount = 0; + YDB_READONLY(TAtomicCounter, StatisticsUsageCount, 0); + YDB_READONLY(TAtomicCounter, MaxValueUsageCount, 0); +protected: + virtual void OnTieringModified(const std::shared_ptr<NKikimr::NColumnShard::TTiersManager>& /*tiers*/) override; + virtual void OnExportFinished() override { + ExportsFinishedCount.Inc(); + } + virtual bool NeedForceCompactionBacketsConstruction() const override { + return true; + } + virtual ui64 GetSmallPortionSizeDetector(const ui64 /*def*/) const override { + return 0; + } + virtual TDuration GetOptimizerFreshnessCheckDuration(const TDuration /*defaultValue*/) const override { + return TDuration::Zero(); + } + virtual TDuration GetLagForCompactionBeforeTierings(const TDuration /*def*/) const override { + return TDuration::Zero(); + } + virtual TDuration GetTTLDefaultWaitingDuration(const TDuration /*defaultValue*/) const override { + return TDuration::Seconds(1); + } +public: + ui32 GetFinishedExportsCount() const { + return ExportsFinishedCount.Val(); + } + + virtual void OnStatisticsUsage(const NKikimr::NOlap::NStatistics::TOperatorContainer& /*statOperator*/) override { + StatisticsUsageCount.Inc(); + } + virtual void OnMaxValueUsage() override { + MaxValueUsageCount.Inc(); + } + void SetTiersSnapshot(TTestBasicRuntime& runtime, const TActorId& tabletActorId, const NMetadata::NFetcher::ISnapshot::TPtr& snapshot); + + virtual NMetadata::NFetcher::ISnapshot::TPtr GetFallbackTiersSnapshot() const override { + if (CurrentConfig) { + return CurrentConfig; + } else { + return TBase::GetFallbackTiersSnapshot(); + } + } +}; + +} diff --git a/ydb/core/tx/columnshard/test_helper/helper.cpp b/ydb/core/tx/columnshard/test_helper/helper.cpp new file mode 100644 index 000000000000..fc8fea56e84c --- /dev/null +++ b/ydb/core/tx/columnshard/test_helper/helper.cpp @@ -0,0 +1,91 @@ +#include "helper.h" +#include <library/cpp/testing/unittest/registar.h> +#include <ydb/core/formats/arrow/arrow_helpers.h> +#include <ydb/core/protos/flat_scheme_op.pb.h> +#include <ydb/core/scheme/scheme_types_proto.h> +#include <ydb/core/tx/columnshard/blobs_action/bs/storage.h> +#include <ydb/library/actors/core/log.h> +#include <ydb/core/wrappers/fake_storage_config.h> +#include <ydb/core/wrappers/fake_storage.h> +#include <ydb/core/tx/columnshard/blobs_action/tier/storage.h> + +namespace NKikimr::NArrow::NTest { + +NKikimrSchemeOp::TOlapColumnDescription TTestColumn::CreateColumn(const ui32 id) const { + NKikimrSchemeOp::TOlapColumnDescription col; + col.SetId(id); + col.SetName(Name); + if (StorageId) { + col.SetStorageId(StorageId); + } + auto columnType = NScheme::ProtoColumnTypeFromTypeInfoMod(Type, ""); + col.SetTypeId(columnType.TypeId); + if (columnType.TypeInfo) { + *col.MutableTypeInfo() = *columnType.TypeInfo; + } + return col; +} + +std::vector<std::pair<TString, NKikimr::NScheme::TTypeInfo>> TTestColumn::ConvertToPairs(const std::vector<TTestColumn>& columns) { + std::vector<std::pair<TString, NScheme::TTypeInfo>> result; + for (auto&& i : columns) { + result.emplace_back(std::make_pair(i.GetName(), i.GetType())); + } + return result; +} + +std::vector<NKikimr::NArrow::NTest::TTestColumn> TTestColumn::BuildFromPairs(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns) { + std::vector<TTestColumn> result; + for (auto&& i : columns) { + result.emplace_back(i.first, i.second); + } + return result; +} + +THashMap<TString, NKikimr::NScheme::TTypeInfo> TTestColumn::ConvertToHash(const std::vector<TTestColumn>& columns) { + THashMap<TString, NScheme::TTypeInfo> result; + for (auto&& i : columns) { + result.emplace(i.GetName(), i.GetType()); + } + return result; +} + +std::vector<NKikimr::NArrow::NTest::TTestColumn> TTestColumn::CropSchema(const std::vector<TTestColumn>& input, const ui32 size) { + AFL_VERIFY(input.size() >= size); + return std::vector<TTestColumn>(input.begin(), input.begin() + size); +} + +} + +namespace NKikimr::NArrow { + +std::vector<std::shared_ptr<arrow::Field>> MakeArrowFields(const std::vector<NTest::TTestColumn>& columns, const std::set<std::string>& notNullColumns /*= {}*/) { + auto result = MakeArrowFields(NTest::TTestColumn::ConvertToPairs(columns), notNullColumns); + UNIT_ASSERT_C(result.ok(), result.status().ToString()); + return result.ValueUnsafe(); +} + +std::shared_ptr<arrow::Schema> MakeArrowSchema(const std::vector<NTest::TTestColumn>& columns, const std::set<std::string>& notNullColumns /*= {}*/) { + auto result = MakeArrowSchema(NTest::TTestColumn::ConvertToPairs(columns), notNullColumns); + UNIT_ASSERT_C(result.ok(), result.status().ToString()); + return result.ValueUnsafe(); +} + +} + +namespace NKikimr::NOlap { + +std::shared_ptr<NKikimr::NOlap::IBlobsStorageOperator> TTestStoragesManager::DoBuildOperator(const TString& storageId) { + if (storageId == TBase::DefaultStorageId) { + return std::make_shared<NOlap::NBlobOperations::NBlobStorage::TOperator>(storageId, NActors::TActorId(), TabletInfo, + 1, SharedBlobsManager->GetStorageManagerGuarantee(TBase::DefaultStorageId)); + } else if (storageId == TBase::MemoryStorageId) { + Singleton<NWrappers::NExternalStorage::TFakeExternalStorage>()->SetSecretKey("fakeSecret"); + return std::make_shared<NOlap::NBlobOperations::NTier::TOperator>(storageId, NActors::TActorId(), std::make_shared<NWrappers::NExternalStorage::TFakeExternalStorageConfig>("fakeBucket", "fakeSecret"), + SharedBlobsManager->GetStorageManagerGuarantee(storageId)); + } else { + return nullptr; + } +} + +} \ No newline at end of file diff --git a/ydb/core/tx/columnshard/test_helper/helper.h b/ydb/core/tx/columnshard/test_helper/helper.h new file mode 100644 index 000000000000..4501cfe5fea4 --- /dev/null +++ b/ydb/core/tx/columnshard/test_helper/helper.h @@ -0,0 +1,75 @@ +#pragma once +#include <ydb/core/scheme_types/scheme_type_info.h> +#include <ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h> + +#include <ydb/library/accessor/accessor.h> + +#include <contrib/libs/apache/arrow/cpp/src/arrow/type.h> + +namespace NKikimrSchemeOp { +class TOlapColumnDescription; +} + +namespace NKikimr::NOlap { + +class TTestStoragesManager: public NOlap::IStoragesManager { +private: + using TBase = NOlap::IStoragesManager; + TIntrusivePtr<TTabletStorageInfo> TabletInfo = new TTabletStorageInfo(); + std::shared_ptr<NOlap::NDataSharing::TSharedBlobsManager> SharedBlobsManager = std::make_shared<NOlap::NDataSharing::TSharedBlobsManager>(NOlap::TTabletId(0)); +protected: + virtual bool DoLoadIdempotency(NTable::TDatabase& /*database*/) override { + return true; + } + + virtual std::shared_ptr<NOlap::IBlobsStorageOperator> DoBuildOperator(const TString& storageId) override; + virtual const std::shared_ptr<NDataSharing::TSharedBlobsManager>& DoGetSharedBlobsManager() const override { + return SharedBlobsManager; + } +public: + + static std::shared_ptr<TTestStoragesManager> GetInstance() { + static auto result = std::make_shared<NKikimr::NOlap::TTestStoragesManager>(); + static TMutex mutex; + static bool initialized = false; + TGuard<TMutex> g(mutex); + if (!initialized) { + result->Initialize(); + } + initialized = true; + return result; + } + +}; + +} + +namespace NKikimr::NArrow::NTest { + +class TTestColumn { +private: + YDB_ACCESSOR_DEF(TString, Name); + YDB_ACCESSOR_DEF(NScheme::TTypeInfo, Type); + YDB_ACCESSOR_DEF(TString, StorageId); +public: + explicit TTestColumn(const TString& name, const NScheme::TTypeInfo& type) + : Name(name) + , Type(type) { + + } + + NKikimrSchemeOp::TOlapColumnDescription CreateColumn(const ui32 id) const; + static std::vector<std::pair<TString, NScheme::TTypeInfo>> ConvertToPairs(const std::vector<TTestColumn>& columns); + static THashMap<TString, NScheme::TTypeInfo> ConvertToHash(const std::vector<TTestColumn>& columns); + static std::vector<TTestColumn> BuildFromPairs(const std::vector<std::pair<TString, NScheme::TTypeInfo>>& columns); + static std::vector<TTestColumn> CropSchema(const std::vector<TTestColumn>& input, const ui32 size); +}; + +} + +namespace NKikimr::NArrow { + +std::vector<std::shared_ptr<arrow::Field>> MakeArrowFields(const std::vector<NTest::TTestColumn>& columns, const std::set<std::string>& notNullColumns = {}); +std::shared_ptr<arrow::Schema> MakeArrowSchema(const std::vector<NTest::TTestColumn>& columns, const std::set<std::string>& notNullColumns = {}); + +} diff --git a/ydb/core/tx/columnshard/test_helper/ya.make b/ydb/core/tx/columnshard/test_helper/ya.make new file mode 100644 index 000000000000..04b99f3aee70 --- /dev/null +++ b/ydb/core/tx/columnshard/test_helper/ya.make @@ -0,0 +1,20 @@ +LIBRARY() + +PEERDIR( + ydb/core/protos + contrib/libs/apache/arrow + ydb/library/actors/core + ydb/core/tx/columnshard/blobs_action/bs + ydb/core/tx/columnshard/blobs_action/tier + ydb/core/wrappers +) + +SRCS( + helper.cpp + controllers.cpp +) + +YQL_LAST_ABI_VERSION() + +END() + diff --git a/ydb/core/tx/columnshard/transactions/operators/backup.cpp b/ydb/core/tx/columnshard/transactions/operators/backup.cpp new file mode 100644 index 000000000000..f55d2b82b0b3 --- /dev/null +++ b/ydb/core/tx/columnshard/transactions/operators/backup.cpp @@ -0,0 +1,67 @@ +#include "backup.h" +#include <ydb/core/tx/columnshard/common/tablet_id.h> +#include <ydb/core/formats/arrow/serializer/native.h> + +namespace NKikimr::NColumnShard { + +bool TBackupTransactionOperator::Parse(const TString& data) { + NKikimrTxColumnShard::TBackupTxBody txBody; + if (!txBody.ParseFromString(data)) { + return false; + } + if (!txBody.HasBackupTask()) { + return false; + } + TConclusion<NOlap::NExport::TIdentifier> id = NOlap::NExport::TIdentifier::BuildFromProto(txBody); + if (!id) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "cannot_parse_id")("problem", id.GetErrorMessage()); + return false; + } + TConclusion<NOlap::NExport::TSelectorContainer> selector = NOlap::NExport::TSelectorContainer::BuildFromProto(txBody); + if (!selector) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "cannot_parse_selector")("problem", selector.GetErrorMessage()); + return false; + } + TConclusion<NOlap::NExport::TStorageInitializerContainer> storeInitializer = NOlap::NExport::TStorageInitializerContainer::BuildFromProto(txBody); + if (!storeInitializer) { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("event", "cannot_parse_selector")("problem", storeInitializer.GetErrorMessage()); + return false; + } + NArrow::NSerialization::TSerializerContainer serializer(std::make_shared<NArrow::NSerialization::TNativeSerializer>()); + ExportTask = std::make_shared<NOlap::NExport::TExportTask>(id.DetachResult(), selector.DetachResult(), storeInitializer.DetachResult(), serializer); + return true; +} + +TBackupTransactionOperator::TProposeResult TBackupTransactionOperator::Propose(TColumnShard& owner, NTabletFlatExecutor::TTransactionContext& /*txc*/, bool /*proposed*/) const { + auto proposition = owner.GetExportsManager()->ProposeTask(ExportTask); + if (!proposition) { + return TProposeResult(NKikimrTxColumnShard::EResultStatus::ERROR, + TStringBuilder() << "Invalid backup task TxId# " << GetTxId() << ": " << ExportTask->DebugString() << ": " << proposition.GetErrorMessage()); + } + return TProposeResult(); +} + +bool TBackupTransactionOperator::Progress(TColumnShard& owner, const NOlap::TSnapshot& version, NTabletFlatExecutor::TTransactionContext& txc) { + Y_UNUSED(version); + AFL_VERIFY(ExportTask); + owner.GetExportsManager()->ConfirmSessionOnExecute(ExportTask->GetIdentifier(), txc); + return true; +} + +bool TBackupTransactionOperator::Complete(TColumnShard& owner, const TActorContext& ctx) { + AFL_VERIFY(ExportTask); + owner.GetExportsManager()->ConfirmSessionOnComplete(ExportTask->GetIdentifier()); + auto result = std::make_unique<TEvColumnShard::TEvProposeTransactionResult>( + owner.TabletID(), TxInfo.TxKind, GetTxId(), NKikimrTxColumnShard::SUCCESS); + result->Record.SetStep(TxInfo.PlanStep); + ctx.Send(TxInfo.Source, result.release(), 0, TxInfo.Cookie); + AFL_VERIFY(owner.GetExportsManager()->GetSessionVerified(ExportTask->GetIdentifier())->Start(owner.GetStoragesManager(), (NOlap::TTabletId)owner.TabletID(), owner.SelfId())); + return true; +} + +bool TBackupTransactionOperator::Abort(TColumnShard& owner, NTabletFlatExecutor::TTransactionContext& txc) { + owner.GetExportsManager()->RemoveSession(ExportTask->GetIdentifier(), txc); + return true; +} + +} diff --git a/ydb/core/tx/columnshard/transactions/operators/backup.h b/ydb/core/tx/columnshard/transactions/operators/backup.h new file mode 100644 index 000000000000..bc873e3dbda0 --- /dev/null +++ b/ydb/core/tx/columnshard/transactions/operators/backup.h @@ -0,0 +1,29 @@ +#pragma once + +#include <ydb/core/tx/columnshard/columnshard_impl.h> +#include <ydb/core/tx/columnshard/export/manager/manager.h> +#include <ydb/core/tx/columnshard/export/session/task.h> + +namespace NKikimr::NColumnShard { + + class TBackupTransactionOperator : public TTxController::ITransactionOperatior { + private: + std::shared_ptr<NOlap::NExport::TExportTask> ExportTask; + using TBase = TTxController::ITransactionOperatior; + using TProposeResult = TTxController::TProposeResult; + static inline auto Registrator = TFactory::TRegistrator<TBackupTransactionOperator>(NKikimrTxColumnShard::TX_KIND_BACKUP); + public: + using TBase::TBase; + + virtual bool Parse(const TString& data) override; + + virtual TProposeResult Propose(TColumnShard& owner, NTabletFlatExecutor::TTransactionContext& txc, bool /*proposed*/) const override; + + virtual bool Progress(TColumnShard& owner, const NOlap::TSnapshot& version, NTabletFlatExecutor::TTransactionContext& txc) override; + + virtual bool Complete(TColumnShard& owner, const TActorContext& ctx) override; + + virtual bool Abort(TColumnShard& owner, NTabletFlatExecutor::TTransactionContext& txc) override; + }; + +} diff --git a/ydb/core/tx/columnshard/transactions/operators/ev_write.h b/ydb/core/tx/columnshard/transactions/operators/ev_write.h index b31f381df529..ca83ce8696ac 100644 --- a/ydb/core/tx/columnshard/transactions/operators/ev_write.h +++ b/ydb/core/tx/columnshard/transactions/operators/ev_write.h @@ -12,11 +12,16 @@ namespace NKikimr::NColumnShard { using TBase::TBase; virtual bool Parse(const TString& data) override { - Y_UNUSED(data); - return true; + NKikimrTxColumnShard::TCommitWriteTxBody commitTxBody; + if (!commitTxBody.ParseFromString(data)) { + return false; + } + LockId = commitTxBody.GetLockId(); + return !!LockId; } - TProposeResult Propose(TColumnShard& /*owner*/, NTabletFlatExecutor::TTransactionContext& /*txc*/, bool /*proposed*/) const override { + TProposeResult Propose(TColumnShard& owner, NTabletFlatExecutor::TTransactionContext& txc, bool /*proposed*/) const override { + owner.OperationsManager->LinkTransaction(LockId, GetTxId(), txc); return TProposeResult(); } @@ -25,7 +30,7 @@ namespace NKikimr::NColumnShard { } virtual bool Complete(TColumnShard& owner, const TActorContext& ctx) override { - auto result = NEvents::TDataEvents::TEvWriteResult::BuildCommited(owner.TabletID(), GetTxId()); + auto result = NEvents::TDataEvents::TEvWriteResult::BuildCompleted(owner.TabletID(), GetTxId()); ctx.Send(TxInfo.Source, result.release(), 0, TxInfo.Cookie); return true; } @@ -33,6 +38,8 @@ namespace NKikimr::NColumnShard { virtual bool Abort(TColumnShard& owner, NTabletFlatExecutor::TTransactionContext& txc) override { return owner.OperationsManager->AbortTransaction(owner, GetTxId(), txc); } + private: + ui64 LockId = 0; }; } diff --git a/ydb/core/tx/columnshard/transactions/operators/schema.h b/ydb/core/tx/columnshard/transactions/operators/schema.h index f71da39fa110..58bb89c8c0f8 100644 --- a/ydb/core/tx/columnshard/transactions/operators/schema.h +++ b/ydb/core/tx/columnshard/transactions/operators/schema.h @@ -25,14 +25,18 @@ namespace NKikimr::NColumnShard { TProposeResult Propose(TColumnShard& owner, NTabletFlatExecutor::TTransactionContext& txc, bool /*proposed*/) const override { switch (SchemaTxBody.TxBody_case()) { case NKikimrTxColumnShard::TSchemaTxBody::kInitShard: + { + auto validationStatus = ValidateTables(SchemaTxBody.GetInitShard().GetTables()); + if (validationStatus.IsFail()) { + return TProposeResult(NKikimrTxColumnShard::EResultStatus::SCHEMA_ERROR, "Invalid schema: " + validationStatus.GetErrorMessage()); + } + } break; case NKikimrTxColumnShard::TSchemaTxBody::kEnsureTables: - for (auto& table : SchemaTxBody.GetEnsureTables().GetTables()) { - if (table.HasSchemaPreset() && !ValidateTablePreset(table.GetSchemaPreset())) { - return TProposeResult(NKikimrTxColumnShard::EResultStatus::ERROR, "Invalid schema"); - } - if (table.HasSchema() && !ValidateTableSchema(table.GetSchema())) { - return TProposeResult(NKikimrTxColumnShard::EResultStatus::ERROR, "Invalid schema"); + { + auto validationStatus = ValidateTables(SchemaTxBody.GetEnsureTables().GetTables()); + if (validationStatus.IsFail()) { + return TProposeResult(NKikimrTxColumnShard::EResultStatus::SCHEMA_ERROR, "Invalid schema: " + validationStatus.GetErrorMessage()); } } break; @@ -91,10 +95,26 @@ namespace NKikimr::NColumnShard { } private: - bool ValidateTableSchema(const NKikimrSchemeOp::TColumnTableSchema& schema) const { - namespace NTypeIds = NScheme::NTypeIds; + TConclusionStatus ValidateTables(::google::protobuf::RepeatedPtrField<::NKikimrTxColumnShard::TCreateTable> tables) const { + for (auto& table : tables) { + if (table.HasSchemaPreset()) { + const auto validationStatus = ValidateTablePreset(table.GetSchemaPreset()); + if (validationStatus.IsFail()) { + return validationStatus; + } + } + if (table.HasSchema()) { + const auto validationStatus = ValidateTableSchema(table.GetSchema()); + if (validationStatus.IsFail()) { + return validationStatus; + } + } + } return TConclusionStatus::Success(); + } - static const THashSet<NScheme::TTypeId> supportedTypes = { + TConclusionStatus ValidateTableSchema(const NKikimrSchemeOp::TColumnTableSchema& schema) const { + namespace NTypeIds = NScheme::NTypeIds; + static const THashSet<NScheme::TTypeId> pkSupportedTypes = { NTypeIds::Timestamp, NTypeIds::Int8, NTypeIds::Int16, @@ -113,41 +133,47 @@ namespace NKikimr::NColumnShard { NTypeIds::Utf8, NTypeIds::Decimal }; - if (!schema.HasEngine() || schema.GetEngine() != NKikimrSchemeOp::EColumnTableEngine::COLUMN_ENGINE_REPLACING_TIMESERIES) { - return false; + return TConclusionStatus::Fail("Invalid scheme engine: " + (schema.HasEngine() ? NKikimrSchemeOp::EColumnTableEngine_Name(schema.GetEngine()) : TString("No"))); } if (!schema.KeyColumnNamesSize()) { - return false; + return TConclusionStatus::Fail("There is no key columns"); } - TString firstKeyColumn = schema.GetKeyColumnNames()[0]; THashSet<TString> keyColumns(schema.GetKeyColumnNames().begin(), schema.GetKeyColumnNames().end()); - + TVector<TString> columnErrors; for (const NKikimrSchemeOp::TOlapColumnDescription& column : schema.GetColumns()) { TString name = column.GetName(); - /* - if (column.GetNotNull() && keyColumns.contains(name)) { - return false; + void* typeDescr = nullptr; + if (column.GetTypeId() == NTypeIds::Pg && column.HasTypeInfo()) { + typeDescr = NPg::TypeDescFromPgTypeId(column.GetTypeInfo().GetPgTypeId()); + } + + NScheme::TTypeInfo schemeType(column.GetTypeId(), typeDescr); + if (keyColumns.contains(name) && !pkSupportedTypes.contains(column.GetTypeId())) { + columnErrors.emplace_back("key column " + name + " has unsupported type " + column.GetTypeName()); } - */ - if (name == firstKeyColumn && !supportedTypes.contains(column.GetTypeId())) { - return false; + auto arrowType = NArrow::GetArrowType(schemeType); + if (!arrowType.ok()) { + columnErrors.emplace_back("column " + name + ": " + arrowType.status().ToString()); } keyColumns.erase(name); } + if (!columnErrors.empty()) { + return TConclusionStatus::Fail("Column errors: " + JoinSeq("; ", columnErrors)); + } if (!keyColumns.empty()) { - return false; + return TConclusionStatus::Fail("Key columns not in scheme: " + JoinSeq(", ", keyColumns)); } - return true; + return TConclusionStatus::Success(); } - bool ValidateTablePreset(const NKikimrSchemeOp::TColumnTableSchemaPreset& preset) const { + TConclusionStatus ValidateTablePreset(const NKikimrSchemeOp::TColumnTableSchemaPreset& preset) const { if (preset.HasName() && preset.GetName() != "default") { - return false; + return TConclusionStatus::Fail("Preset name must be empty or 'default', but '" + preset.GetName() + "' got"); } return ValidateTableSchema(preset.GetSchema()); } diff --git a/ydb/core/tx/columnshard/transactions/operators/ya.make b/ydb/core/tx/columnshard/transactions/operators/ya.make index 449ec29a137d..c412503159f6 100644 --- a/ydb/core/tx/columnshard/transactions/operators/ya.make +++ b/ydb/core/tx/columnshard/transactions/operators/ya.make @@ -4,10 +4,13 @@ SRCS( GLOBAL schema.cpp GLOBAL long_tx_write.cpp GLOBAL ev_write.cpp + GLOBAL backup.cpp ) PEERDIR( ydb/core/tx/columnshard/transactions + ydb/core/tx/columnshard/data_sharing/destination/events + ydb/core/tx/columnshard/export/manager ) END() diff --git a/ydb/core/tx/columnshard/transactions/propose_transaction_base.cpp b/ydb/core/tx/columnshard/transactions/propose_transaction_base.cpp new file mode 100644 index 000000000000..ef50e2ae5959 --- /dev/null +++ b/ydb/core/tx/columnshard/transactions/propose_transaction_base.cpp @@ -0,0 +1,37 @@ +#include "propose_transaction_base.h" + +#include <ydb/core/tx/columnshard/columnshard_impl.h> + + +namespace NKikimr::NColumnShard { + + void TProposeTransactionBase::ProposeTransaction(const TTxController::TBasicTxInfo& txInfo, const TString& txBody, const TActorId source, const ui64 cookie, TTransactionContext& txc) { + auto txOperator = TTxController::ITransactionOperatior::TFactory::MakeHolder(txInfo.TxKind, TTxController::TTxInfo(txInfo.TxKind, txInfo.TxId)); + if (!txOperator || !txOperator->Parse(txBody)) { + TTxController::TProposeResult proposeResult(NKikimrTxColumnShard::EResultStatus::ERROR, TStringBuilder() << "Error processing commit TxId# " << txInfo.TxId + << (txOperator ? ". Parsing error " : ". Unknown operator for txKind")); + OnProposeError(proposeResult, txInfo); + return; + } + + auto txInfoPtr = Self->GetProgressTxController().GetTxInfo(txInfo.TxId); + if (!!txInfoPtr) { + if (txInfoPtr->Source != source || txInfoPtr->Cookie != cookie) { + TTxController::TProposeResult proposeResult(NKikimrTxColumnShard::EResultStatus::ERROR, TStringBuilder() << "Another commit TxId# " << txInfo.TxId << " has already been proposed"); + OnProposeError(proposeResult, txInfo); + } + TTxController::TProposeResult proposeResult; + OnProposeResult(proposeResult, *txInfoPtr); + } else { + auto proposeResult = txOperator->Propose(*Self, txc, false); + if (!!proposeResult) { + const auto fullTxInfo = txOperator->TxWithDeadline() ? Self->GetProgressTxController().RegisterTxWithDeadline(txInfo.TxId, txInfo.TxKind, txBody, source, cookie, txc) + : Self->GetProgressTxController().RegisterTx(txInfo.TxId, txInfo.TxKind, txBody, source, cookie, txc); + + OnProposeResult(proposeResult, fullTxInfo); + } else { + OnProposeError(proposeResult, txInfo); + } + } + } +} diff --git a/ydb/core/tx/columnshard/transactions/propose_transaction_base.h b/ydb/core/tx/columnshard/transactions/propose_transaction_base.h new file mode 100644 index 000000000000..7657c4aff475 --- /dev/null +++ b/ydb/core/tx/columnshard/transactions/propose_transaction_base.h @@ -0,0 +1,22 @@ +#pragma once +#include "tx_controller.h" + +namespace NKikimr::NColumnShard { + +class TColumnShard; + +class TProposeTransactionBase : public NTabletFlatExecutor::TTransactionBase<TColumnShard> { +public: + TProposeTransactionBase(TColumnShard* self) + : TBase(self) + {} + +protected: + void ProposeTransaction(const TTxController::TBasicTxInfo& txInfo, const TString& txBody, const TActorId source, const ui64 cookie, TTransactionContext& txc); + + virtual void OnProposeResult(TTxController::TProposeResult& proposeResult, const TTxController::TTxInfo& txInfo) = 0; + virtual void OnProposeError(TTxController::TProposeResult& proposeResult, const TTxController::TBasicTxInfo& txInfo) = 0; +}; + + +} diff --git a/ydb/core/tx/columnshard/transactions/tx_controller.cpp b/ydb/core/tx/columnshard/transactions/tx_controller.cpp index 1137456d3d69..43a56ecf348e 100644 --- a/ydb/core/tx/columnshard/transactions/tx_controller.cpp +++ b/ydb/core/tx/columnshard/transactions/tx_controller.cpp @@ -23,7 +23,7 @@ ui64 TTxController::GetAllowedStep() const { } ui64 TTxController::GetMemoryUsage() const { - return BasicTxInfo.size() * sizeof(TBasicTxInfo) + + return BasicTxInfo.size() * sizeof(TTxInfo) + DeadlineQueue.size() * sizeof(TPlanQueueItem) + (PlanQueue.size() + RunningQueue.size()) * sizeof(TPlanQueueItem); } @@ -45,9 +45,11 @@ bool TTxController::Load(NTabletFlatExecutor::TTransactionContext& txc) { return false; while (!rowset.EndOfSet()) { - ui64 txId = rowset.GetValue<Schema::TxInfo::TxId>(); - auto& txInfo = BasicTxInfo[txId]; - txInfo.TxId = txId; + const ui64 txId = rowset.GetValue<Schema::TxInfo::TxId>(); + const NKikimrTxColumnShard::ETransactionKind txKind = rowset.GetValue<Schema::TxInfo::TxKind>(); + + auto txInfoIt = BasicTxInfo.emplace(txId, TTxInfo(txKind, txId)).first; + auto& txInfo = txInfoIt->second; txInfo.MaxStep = rowset.GetValue<Schema::TxInfo::MaxStep>(); if (txInfo.MaxStep != Max<ui64>()) { txInfo.MinStep = txInfo.MaxStep - MaxCommitTxDelay.MilliSeconds(); @@ -55,7 +57,6 @@ bool TTxController::Load(NTabletFlatExecutor::TTransactionContext& txc) { txInfo.PlanStep = rowset.GetValueOrDefault<Schema::TxInfo::PlanStep>(0); txInfo.Source = rowset.GetValue<Schema::TxInfo::Source>(); txInfo.Cookie = rowset.GetValue<Schema::TxInfo::Cookie>(); - txInfo.TxKind = rowset.GetValue<Schema::TxInfo::TxKind>(); if (txInfo.PlanStep != 0) { PlanQueue.emplace(txInfo.PlanStep, txInfo.TxId); @@ -90,12 +91,11 @@ TTxController::ITransactionOperatior::TPtr TTxController::GetVerifiedTxOperator( return it->second; } -const TTxController::TBasicTxInfo& TTxController::RegisterTx(const ui64 txId, const NKikimrTxColumnShard::ETransactionKind& txKind, const TString& txBody, const TActorId& source, const ui64 cookie, NTabletFlatExecutor::TTransactionContext& txc) { +TTxController::TTxInfo TTxController::RegisterTx(const ui64 txId, const NKikimrTxColumnShard::ETransactionKind& txKind, const TString& txBody, const TActorId& source, const ui64 cookie, NTabletFlatExecutor::TTransactionContext& txc) { NIceDb::TNiceDb db(txc.DB); - auto& txInfo = BasicTxInfo[txId]; - txInfo.TxId = txId; - txInfo.TxKind = txKind; + auto txInfoIt = BasicTxInfo.emplace(txId, TTxInfo(txKind, txId)).first; + auto& txInfo = txInfoIt->second; txInfo.Source = source; txInfo.Cookie = cookie; @@ -108,12 +108,11 @@ const TTxController::TBasicTxInfo& TTxController::RegisterTx(const ui64 txId, co return txInfo; } -const TTxController::TBasicTxInfo& TTxController::RegisterTxWithDeadline(const ui64 txId, const NKikimrTxColumnShard::ETransactionKind& txKind, const TString& txBody, const TActorId& source, const ui64 cookie, NTabletFlatExecutor::TTransactionContext& txc) { +TTxController::TTxInfo TTxController::RegisterTxWithDeadline(const ui64 txId, const NKikimrTxColumnShard::ETransactionKind& txKind, const TString& txBody, const TActorId& source, const ui64 cookie, NTabletFlatExecutor::TTransactionContext& txc) { NIceDb::TNiceDb db(txc.DB); - auto& txInfo = BasicTxInfo[txId]; - txInfo.TxId = txId; - txInfo.TxKind = txKind; + auto txInfoIt = BasicTxInfo.emplace(txId, TTxInfo(txKind, txId)).first; + auto& txInfo = txInfoIt->second; txInfo.Source = source; txInfo.Cookie = cookie; txInfo.MinStep = GetAllowedStep(); @@ -174,7 +173,7 @@ bool TTxController::CancelTx(const ui64 txId, NTabletFlatExecutor::TTransactionC return true; } -std::optional<TTxController::TBasicTxInfo> TTxController::StartPlannedTx() { +std::optional<TTxController::TTxInfo> TTxController::StartPlannedTx() { if (!PlanQueue.empty()) { auto node = PlanQueue.extract(PlanQueue.begin()); auto& item = node.value(); @@ -196,7 +195,7 @@ void TTxController::FinishPlannedTx(const ui64 txId, NTabletFlatExecutor::TTrans } void TTxController::CompleteRunningTx(const TPlanQueueItem& txItem) { - RunningQueue.erase(txItem); + AFL_VERIFY(RunningQueue.erase(txItem))("info", txItem.DebugString()); } std::optional<TTxController::TPlanQueueItem> TTxController::GetPlannedTx() const { @@ -206,17 +205,19 @@ std::optional<TTxController::TPlanQueueItem> TTxController::GetPlannedTx() const return *PlanQueue.begin(); } -const TTxController::TBasicTxInfo* TTxController::GetTxInfo(const ui64 txId) const { - return BasicTxInfo.FindPtr(txId); +std::optional<TTxController::TTxInfo> TTxController::GetTxInfo(const ui64 txId) const { + auto txPtr = BasicTxInfo.FindPtr(txId); + if (txPtr) { + return *txPtr; + } + return std::nullopt; } -NEvents::TDataEvents::TCoordinatorInfo TTxController::GetCoordinatorInfo(const ui64 txId) const { - auto txInfo = BasicTxInfo.FindPtr(txId); - Y_ABORT_UNLESS(txInfo); +NEvents::TDataEvents::TCoordinatorInfo TTxController::BuildCoordinatorInfo(const TTxInfo& txInfo) const { if (Owner.ProcessingParams) { - return NEvents::TDataEvents::TCoordinatorInfo(txInfo->MinStep, txInfo->MaxStep, Owner.ProcessingParams->GetCoordinators()); + return NEvents::TDataEvents::TCoordinatorInfo(txInfo.MinStep, txInfo.MaxStep, Owner.ProcessingParams->GetCoordinators()); } - return NEvents::TDataEvents::TCoordinatorInfo(txInfo->MinStep, txInfo->MaxStep, {}); + return NEvents::TDataEvents::TCoordinatorInfo(txInfo.MinStep, txInfo.MaxStep, {}); } size_t TTxController::CleanExpiredTxs(NTabletFlatExecutor::TTransactionContext& txc) { @@ -239,6 +240,19 @@ size_t TTxController::CleanExpiredTxs(NTabletFlatExecutor::TTransactionContext& return removedCount; } +TDuration TTxController::GetTxCompleteLag(ui64 timecastStep) const { + if (PlanQueue.empty()) { + return TDuration::Zero(); + } + + ui64 currentStep = PlanQueue.begin()->Step; + if (timecastStep > currentStep) { + return TDuration::MilliSeconds(timecastStep - currentStep); + } + + return TDuration::Zero(); +} + TTxController::EPlanResult TTxController::PlanTx(const ui64 planStep, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc) { auto it = BasicTxInfo.find(txId); if (it == BasicTxInfo.end()) { diff --git a/ydb/core/tx/columnshard/transactions/tx_controller.h b/ydb/core/tx/columnshard/transactions/tx_controller.h index fb38fae9d32e..d48bd504a1fb 100644 --- a/ydb/core/tx/columnshard/transactions/tx_controller.h +++ b/ydb/core/tx/columnshard/transactions/tx_controller.h @@ -24,16 +24,32 @@ class TTxController { inline bool operator<(const TPlanQueueItem& rhs) const { return Step < rhs.Step || (Step == rhs.Step && TxId < rhs.TxId); } + + TString DebugString() const { + return TStringBuilder() << "step=" << Step << ";txId=" << TxId << ";"; + } }; struct TBasicTxInfo { - ui64 TxId; + const NKikimrTxColumnShard::ETransactionKind TxKind; + const ui64 TxId; + public: + TBasicTxInfo(const NKikimrTxColumnShard::ETransactionKind& txKind, const ui64 txId) + : TxKind(txKind) + , TxId(txId) + {} + }; + + struct TTxInfo : public TBasicTxInfo { ui64 MaxStep = Max<ui64>(); ui64 MinStep = 0; ui64 PlanStep = 0; TActorId Source; ui64 Cookie = 0; - NKikimrTxColumnShard::ETransactionKind TxKind; + public: + TTxInfo(const NKikimrTxColumnShard::ETransactionKind& txKind, const ui64 txId) + : TBasicTxInfo(txKind, txId) + {} }; class TProposeResult { @@ -47,18 +63,22 @@ class TTxController { {} bool operator!() const { - return Status != NKikimrTxColumnShard::EResultStatus::PREPARED; + return Status != NKikimrTxColumnShard::EResultStatus::PREPARED && Status != NKikimrTxColumnShard::EResultStatus::SUCCESS; + } + + TString DebugString() const { + return TStringBuilder() << "status=" << (ui64) Status << ";message=" << StatusMessage; } }; class ITransactionOperatior { protected: - TBasicTxInfo TxInfo; + TTxInfo TxInfo; public: using TPtr = std::shared_ptr<ITransactionOperatior>; - using TFactory = NObjectFactory::TParametrizedObjectFactory<ITransactionOperatior, NKikimrTxColumnShard::ETransactionKind, TBasicTxInfo>; + using TFactory = NObjectFactory::TParametrizedObjectFactory<ITransactionOperatior, NKikimrTxColumnShard::ETransactionKind, TTxInfo>; - ITransactionOperatior(const TBasicTxInfo& txInfo) + ITransactionOperatior(const TTxInfo& txInfo) : TxInfo(txInfo) {} @@ -87,7 +107,7 @@ class TTxController { private: const TDuration MaxCommitTxDelay = TDuration::Seconds(30); TColumnShard& Owner; - THashMap<ui64, TBasicTxInfo> BasicTxInfo; + THashMap<ui64, TTxInfo> BasicTxInfo; std::set<TPlanQueueItem> DeadlineQueue; std::set<TPlanQueueItem> PlanQueue; std::set<TPlanQueueItem> RunningQueue; @@ -109,21 +129,22 @@ class TTxController { bool Load(NTabletFlatExecutor::TTransactionContext& txc); - const TBasicTxInfo& RegisterTx(const ui64 txId, const NKikimrTxColumnShard::ETransactionKind& txKind, const TString& txBody, const TActorId& source, const ui64 cookie, NTabletFlatExecutor::TTransactionContext& txc); - const TBasicTxInfo& RegisterTxWithDeadline(const ui64 txId, const NKikimrTxColumnShard::ETransactionKind& txKind, const TString& txBody, const TActorId& source, const ui64 cookie, NTabletFlatExecutor::TTransactionContext& txc); + TTxInfo RegisterTx(const ui64 txId, const NKikimrTxColumnShard::ETransactionKind& txKind, const TString& txBody, const TActorId& source, const ui64 cookie, NTabletFlatExecutor::TTransactionContext& txc); + TTxInfo RegisterTxWithDeadline(const ui64 txId, const NKikimrTxColumnShard::ETransactionKind& txKind, const TString& txBody, const TActorId& source, const ui64 cookie, NTabletFlatExecutor::TTransactionContext& txc); bool CancelTx(const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc); - std::optional<TBasicTxInfo> StartPlannedTx(); + std::optional<TTxInfo> StartPlannedTx(); void FinishPlannedTx(const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc); void CompleteRunningTx(const TPlanQueueItem& tx); std::optional<TPlanQueueItem> GetPlannedTx() const; TPlanQueueItem GetFrontTx() const; - const TBasicTxInfo* GetTxInfo(const ui64 txId) const; - NEvents::TDataEvents::TCoordinatorInfo GetCoordinatorInfo(const ui64 txId) const; + std::optional<TTxInfo> GetTxInfo(const ui64 txId) const; + NEvents::TDataEvents::TCoordinatorInfo BuildCoordinatorInfo(const TTxInfo& txInfo) const; size_t CleanExpiredTxs(NTabletFlatExecutor::TTransactionContext& txc); + TDuration GetTxCompleteLag(ui64 timecastStep) const; enum class EPlanResult { Skipped, diff --git a/ydb/core/tx/columnshard/transactions/ya.make b/ydb/core/tx/columnshard/transactions/ya.make index 17f70379bb89..9994787f2fe4 100644 --- a/ydb/core/tx/columnshard/transactions/ya.make +++ b/ydb/core/tx/columnshard/transactions/ya.make @@ -2,11 +2,13 @@ LIBRARY() SRCS( tx_controller.cpp + propose_transaction_base.cpp ) PEERDIR( ydb/core/tablet_flat ydb/core/tx/data_events + ydb/core/tx/columnshard/data_sharing/destination/events ) IF (OS_WINDOWS) diff --git a/ydb/core/tx/columnshard/ut_rw/ut_backup.cpp b/ydb/core/tx/columnshard/ut_rw/ut_backup.cpp new file mode 100644 index 000000000000..377b9de19ced --- /dev/null +++ b/ydb/core/tx/columnshard/ut_rw/ut_backup.cpp @@ -0,0 +1,112 @@ +#include "columnshard_ut_common.h" + +#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> +#include <ydb/core/tx/columnshard/hooks/testing/controller.h> +#include <ydb/core/tx/columnshard/test_helper/controllers.h> + +#include <ydb/core/tx/columnshard/operations/write_data.h> +#include <ydb/core/wrappers/fake_storage.h> + + +namespace NKikimr { + +using namespace NColumnShard; +using namespace NTxUT; + +Y_UNIT_TEST_SUITE(Backup) { + + bool ProposeTx(TTestBasicRuntime& runtime, TActorId& sender, NKikimrTxColumnShard::ETransactionKind txKind, const TString& txBody, const ui64 txId) { + auto event = std::make_unique<TEvColumnShard::TEvProposeTransaction>( + txKind, sender, txId, txBody); + + ForwardToTablet(runtime, TTestTxConfig::TxTablet0, sender, event.release()); + auto ev = runtime.GrabEdgeEvent<TEvColumnShard::TEvProposeTransactionResult>(sender); + const auto& res = ev->Get()->Record; + UNIT_ASSERT_EQUAL(res.GetTxId(), txId); + UNIT_ASSERT_EQUAL(res.GetTxKind(), txKind); + return (res.GetStatus() == NKikimrTxColumnShard::PREPARED); + } + + void PlanTx(TTestBasicRuntime& runtime, TActorId& sender, NKikimrTxColumnShard::ETransactionKind txKind, NOlap::TSnapshot snap, bool waitResult = true) { + auto plan = std::make_unique<TEvTxProcessing::TEvPlanStep>(snap.GetPlanStep(), 0, TTestTxConfig::TxTablet0); + auto tx = plan->Record.AddTransactions(); + tx->SetTxId(snap.GetTxId()); + ActorIdToProto(sender, tx->MutableAckTo()); + ForwardToTablet(runtime, TTestTxConfig::TxTablet0, sender, plan.release()); + + UNIT_ASSERT(runtime.GrabEdgeEvent<TEvTxProcessing::TEvPlanStepAck>(sender)); + if (waitResult) { + auto ev = runtime.GrabEdgeEvent<TEvColumnShard::TEvProposeTransactionResult>(sender); + const auto& res = ev->Get()->Record; + UNIT_ASSERT_EQUAL(res.GetTxId(), snap.GetTxId()); + UNIT_ASSERT_EQUAL(res.GetTxKind(), txKind); + UNIT_ASSERT_EQUAL(res.GetStatus(), NKikimrTxColumnShard::SUCCESS); + } + } + + template <class TChecker> + void TestWaitCondition(TTestBasicRuntime& runtime, const TString& title, const TChecker& checker, const TDuration d = TDuration::Seconds(10)) { + const TInstant start = TInstant::Now(); + while (TInstant::Now() - start < d && !checker()) { + Cerr << "waiting " << title << Endl; + runtime.SimulateSleep(TDuration::Seconds(1)); + } + AFL_VERIFY(checker()); + } + + Y_UNIT_TEST(ProposeBackup) { + TTestBasicRuntime runtime; + TTester::Setup(runtime); + + const ui64 tableId = 1; + const std::vector<NArrow::NTest::TTestColumn> schema = { + NArrow::NTest::TTestColumn("key1", TTypeInfo(NTypeIds::Uint64)), + NArrow::NTest::TTestColumn("key2", TTypeInfo(NTypeIds::Uint64)), + NArrow::NTest::TTestColumn("field", TTypeInfo(NTypeIds::Utf8) ) + }; + auto csControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<NOlap::TWaitCompactionController>(); + PrepareTablet(runtime, tableId, schema, 2); + ui64 txId = 111; + ui64 planStep = 1000000000; // greater then delays + + ui64 writeId = 1; + + TActorId sender = runtime.AllocateEdgeActor(); + + { + std::vector<ui64> writeIds; + UNIT_ASSERT(WriteData(runtime, sender, writeId++, tableId, MakeTestBlob({0, 100}, schema), schema, true, &writeIds)); + ProposeCommit(runtime, sender, ++txId, writeIds); + PlanCommit(runtime, sender, ++planStep, txId); + } + + const ui32 start = csControllerGuard->GetInsertStartedCounter().Val(); + TestWaitCondition(runtime, "insert compacted", + [&]() { + ++writeId; + std::vector<ui64> writeIds; + WriteData(runtime, sender, writeId, tableId, MakeTestBlob({writeId * 100, (writeId + 1) * 100}, schema), schema, true, &writeIds); + ProposeCommit(runtime, sender, ++txId, writeIds); + PlanCommit(runtime, sender, ++planStep, txId); + return csControllerGuard->GetInsertStartedCounter().Val() > start + 1; + }, TDuration::Seconds(1000)); + + NKikimrTxColumnShard::TBackupTxBody txBody; + NOlap::TSnapshot backupSnapshot(planStep, txId); + txBody.MutableBackupTask()->SetTableName("abcde"); + txBody.MutableBackupTask()->SetTableId(tableId); + txBody.MutableBackupTask()->SetSnapshotStep(backupSnapshot.GetPlanStep()); + txBody.MutableBackupTask()->SetSnapshotTxId(backupSnapshot.GetTxId()); + txBody.MutableBackupTask()->MutableS3Settings()->SetEndpoint("fake"); + txBody.MutableBackupTask()->MutableS3Settings()->SetSecretKey("fakeSecret"); + UNIT_ASSERT(ProposeTx(runtime, sender, NKikimrTxColumnShard::TX_KIND_BACKUP, txBody.SerializeAsString(), ++txId)); + AFL_VERIFY(csControllerGuard->GetFinishedExportsCount() == 0); + PlanTx(runtime, sender, NKikimrTxColumnShard::TX_KIND_BACKUP, NOlap::TSnapshot(++planStep, txId)); + TestWaitCondition(runtime, "export", + []() {return Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->GetSize(); }); + TestWaitCondition(runtime, "finish", + [&]() {return csControllerGuard->GetFinishedExportsCount() == 1; }); + } +} + +} // namespace NKikimr diff --git a/ydb/core/tx/columnshard/ut_rw/ut_columnshard_read_write.cpp b/ydb/core/tx/columnshard/ut_rw/ut_columnshard_read_write.cpp index 5d717773d30d..e1bc10e38fb0 100644 --- a/ydb/core/tx/columnshard/ut_rw/ut_columnshard_read_write.cpp +++ b/ydb/core/tx/columnshard/ut_rw/ut_columnshard_read_write.cpp @@ -7,10 +7,11 @@ #include <ydb/library/yverify_stream/yverify_stream.h> #include <ydb/core/tx/columnshard/engines/changes/with_appended.h> #include <ydb/core/tx/columnshard/engines/changes/compaction.h> -#include <ydb/core/tx/columnshard/engines/changes/cleanup.h> +#include <ydb/core/tx/columnshard/engines/changes/cleanup_portions.h> #include <ydb/core/tx/columnshard/operations/write_data.h> #include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> #include <ydb/core/tx/columnshard/hooks/testing/controller.h> +#include <ydb/core/tx/columnshard/engines/portions/portion_info.h> #include <ydb/core/tx/columnshard/common/tests/shard_reader.h> #include <ydb/library/actors/protos/unittests.pb.h> #include <ydb/core/formats/arrow/simple_builder/filler.h> @@ -33,12 +34,10 @@ using TTypeInfo = NScheme::TTypeInfo; using TDefaultTestsController = NKikimr::NYDBTest::NColumnShard::TController; class TDisableCompactionController: public NKikimr::NYDBTest::NColumnShard::TController { -protected: - virtual bool DoOnStartCompaction(std::shared_ptr<NOlap::TColumnEngineChanges>& changes) { - changes = nullptr; - return true; - } public: + TDisableCompactionController() { + DisableBackground(NKikimr::NYDBTest::ICSController::EBackground::Compaction); + } }; template <typename TKey = ui64> @@ -338,6 +337,7 @@ bool CheckColumns(const std::shared_ptr<arrow::RecordBatch>& batch, const std::v void TestWrite(const TestTableDescription& table) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); TActorId sender = runtime.AllocateEdgeActor(); CreateTestBootstrapper(runtime, CreateTestTabletInfo(TTestTxConfig::TxTablet0, TTabletTypes::ColumnShard), &CreateColumnShard); @@ -352,12 +352,12 @@ void TestWrite(const TestTableDescription& table) { SetupSchema(runtime, sender, tableId, table); - const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema = table.Schema; + const auto& ydbSchema = table.Schema; bool ok = WriteData(runtime, sender, writeId++, tableId, MakeTestBlob({0, 100}, ydbSchema), ydbSchema); UNIT_ASSERT(ok); - std::vector<std::pair<TString, TTypeInfo>> schema = ydbSchema; + auto schema = ydbSchema; // no data @@ -373,7 +373,7 @@ void TestWrite(const TestTableDescription& table) { // missing columns - schema.resize(4); + schema = NArrow::NTest::TTestColumn::CropSchema(schema, 4); ok = WriteData(runtime, sender, writeId++, tableId, MakeTestBlob({0, 100}, schema), schema); UNIT_ASSERT(ok); @@ -381,7 +381,7 @@ void TestWrite(const TestTableDescription& table) { // It fails only if we specify source schema. No way to detect it from serialized batch data. schema = ydbSchema; - schema[0].second = TTypeInfo(NTypeIds::Int64); + schema[0].SetType(TTypeInfo(NTypeIds::Int64)); ok = WriteData(runtime, sender, writeId++, tableId, MakeTestBlob({0, 100}, schema), schema); UNIT_ASSERT(!ok); @@ -390,7 +390,7 @@ void TestWrite(const TestTableDescription& table) { for (size_t i = 0; i < ydbSchema.size(); ++i) { schema = ydbSchema; - schema[i].second = TTypeInfo(NTypeIds::Int8); + schema[i].SetType(TTypeInfo(NTypeIds::Int8)); ok = WriteData(runtime, sender, writeId++, tableId, MakeTestBlob({0, 100}, schema), schema); UNIT_ASSERT(!ok); } @@ -399,24 +399,24 @@ void TestWrite(const TestTableDescription& table) { for (size_t i = 0; i < ydbSchema.size(); ++i) { schema = ydbSchema; - schema[i].second = TTypeInfo(NTypeIds::Int64); + schema[i].SetType(TTypeInfo(NTypeIds::Int64)); ok = WriteData(runtime, sender, writeId++, tableId, MakeTestBlob({0, 100}, schema), schema); - UNIT_ASSERT(ok == (ydbSchema[i].second == TTypeInfo(NTypeIds::Int64))); + UNIT_ASSERT(ok == (ydbSchema[i].GetType() == TTypeInfo(NTypeIds::Int64))); } schema = ydbSchema; - schema[1].second = TTypeInfo(NTypeIds::Utf8); - schema[5].second = TTypeInfo(NTypeIds::Int32); + schema[1].SetType(TTypeInfo(NTypeIds::Utf8)); + schema[5].SetType(TTypeInfo(NTypeIds::Int32)); ok = WriteData(runtime, sender, writeId++, tableId, MakeTestBlob({0, 100}, schema), schema); UNIT_ASSERT(!ok); // reordered columns - THashMap<TString, TTypeInfo> remap(ydbSchema.begin(), ydbSchema.end()); + THashMap<TString, TTypeInfo> remap = NArrow::NTest::TTestColumn::ConvertToHash(ydbSchema); - schema.resize(0); + schema.clear(); for (auto& [name, typeInfo] : remap) { - schema.push_back({name, typeInfo}); + schema.push_back(NArrow::NTest::TTestColumn(name, typeInfo)); } ok = WriteData(runtime, sender, writeId++, tableId, MakeTestBlob({0, 100}, schema), schema); @@ -434,6 +434,7 @@ void TestWrite(const TestTableDescription& table) { void TestWriteOverload(const TestTableDescription& table) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); TActorId sender = runtime.AllocateEdgeActor(); CreateTestBootstrapper(runtime, CreateTestTabletInfo(TTestTxConfig::TxTablet0, TTabletTypes::ColumnShard), &CreateColumnShard); @@ -624,7 +625,7 @@ void TestWriteRead(bool reboots, const TestTableDescription& table = {}, TString runtime.DispatchEvents(options); auto write = [&](TTestBasicRuntime& runtime, TActorId& sender, ui64 writeId, ui64 tableId, - const TString& data, const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema, std::vector<ui64>& intWriteIds) { + const TString& data, const std::vector<NArrow::NTest::TTestColumn>& ydbSchema, std::vector<ui64>& intWriteIds) { bool ok = WriteData(runtime, sender, writeId, tableId, data, ydbSchema, true, &intWriteIds); if (reboots) { RebootTablet(runtime, TTestTxConfig::TxTablet0, sender); @@ -654,8 +655,8 @@ void TestWriteRead(bool reboots, const TestTableDescription& table = {}, TString SetupSchema(runtime, sender, tableId, table, codec); - const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema = table.Schema; - const std::vector<std::pair<TString, TTypeInfo>>& testYdbPk = table.Pk; + const std::vector<NArrow::NTest::TTestColumn>& ydbSchema = table.Schema; + const std::vector<NArrow::NTest::TTestColumn>& testYdbPk = table.Pk; // ----xx // -----xx.. @@ -879,8 +880,7 @@ void TestWriteRead(bool reboots, const TestTableDescription& table = {}, TString UNIT_ASSERT_LE(insertedBytes / 100000, 50); } if (committedBytes) { - UNIT_ASSERT_GE(committedBytes / 100000, 65); - UNIT_ASSERT_LE(committedBytes / 100000, 78); + UNIT_ASSERT_LE(committedBytes / 100000, 1); } if (compactedBytes) { if (codec == "" || codec == "lz4") { @@ -947,7 +947,7 @@ void TestCompactionInGranuleImpl(bool reboots, const TestTableDescription& table runtime.DispatchEvents(options); auto write = [&](TTestBasicRuntime& runtime, TActorId& sender, ui64 writeId, ui64 tableId, - const TString& data, const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema, std::vector<ui64>& writeIds) { + const TString& data, const std::vector<NArrow::NTest::TTestColumn>& ydbSchema, std::vector<ui64>& writeIds) { bool ok = WriteData(runtime, sender, writeId, tableId, data, ydbSchema, true, &writeIds); if (reboots) { RebootTablet(runtime, TTestTxConfig::TxTablet0, sender); @@ -1038,7 +1038,7 @@ void TestCompactionInGranuleImpl(bool reboots, const TestTableDescription& table UNIT_ASSERT(rb); UNIT_ASSERT(reader.IsCorrectlyFinished()); - if (ydbPk[0].second == TTypeInfo(NTypeIds::String) || ydbPk[0].second == TTypeInfo(NTypeIds::Utf8)) { + if (ydbPk[0].GetType() == TTypeInfo(NTypeIds::String) || ydbPk[0].GetType() == TTypeInfo(NTypeIds::Utf8)) { UNIT_ASSERT(DataHas<std::string>({rb}, triggerPortion, true)); UNIT_ASSERT(DataHas<std::string>({rb}, smallWrites, true)); } else { @@ -1224,6 +1224,7 @@ void TestReadWithProgram(const TestTableDescription& table = {}) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); TActorId sender = runtime.AllocateEdgeActor(); CreateTestBootstrapper(runtime, CreateTestTabletInfo(TTestTxConfig::TxTablet0, TTabletTypes::ColumnShard), &CreateColumnShard); @@ -1307,6 +1308,7 @@ void TestReadWithProgram(const TestTableDescription& table = {}) void TestReadWithProgramLike(const TestTableDescription& table = {}) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); TActorId sender = runtime.AllocateEdgeActor(); CreateTestBootstrapper(runtime, @@ -1375,6 +1377,7 @@ void TestReadWithProgramLike(const TestTableDescription& table = {}) { void TestSomePrograms(const TestTableDescription& table) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); TActorId sender = runtime.AllocateEdgeActor(); CreateTestBootstrapper(runtime, CreateTestTabletInfo(TTestTxConfig::TxTablet0, TTabletTypes::ColumnShard), &CreateColumnShard); @@ -1430,12 +1433,13 @@ struct TReadAggregateResult { std::vector<int64_t> Counts = {100}; }; -void TestReadAggregate(const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema, const TString& testDataBlob, +void TestReadAggregate(const std::vector<NArrow::NTest::TTestColumn>& ydbSchema, const TString& testDataBlob, bool addProjection, const std::vector<ui32>& aggKeys = {}, const TReadAggregateResult& expectedResult = {}, const TReadAggregateResult& expectedFiltered = {1, {1}, {1}, {1}}) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); TActorId sender = runtime.AllocateEdgeActor(); CreateTestBootstrapper(runtime, CreateTestTabletInfo(TTestTxConfig::TxTablet0, TTabletTypes::ColumnShard), &CreateColumnShard); @@ -1449,8 +1453,7 @@ void TestReadAggregate(const std::vector<std::pair<TString, TTypeInfo>>& ydbSche ui64 planStep = 100; ui64 txId = 100; - auto pk = ydbSchema; - pk.resize(4); + auto pk = NArrow::NTest::TTestColumn::CropSchema(ydbSchema, 4); TestTableDescription table{.Schema = ydbSchema, .Pk = pk}; SetupSchema(runtime, sender, tableId, table); @@ -1480,8 +1483,8 @@ void TestReadAggregate(const std::vector<std::pair<TString, TTypeInfo>>& ydbSche ui32 prog = 0; for (ui32 i = 0; i < ydbSchema.size(); ++i, ++prog) { - if (intTypes.contains(ydbSchema[i].second.GetTypeId()) || - strTypes.contains(ydbSchema[i].second.GetTypeId())) { + if (intTypes.contains(ydbSchema[i].GetType().GetTypeId()) || + strTypes.contains(ydbSchema[i].GetType().GetTypeId())) { checkResult.insert(prog); } @@ -1497,8 +1500,8 @@ void TestReadAggregate(const std::vector<std::pair<TString, TTypeInfo>>& ydbSche for (ui32 i = 0; i < ydbSchema.size(); ++i, ++prog) { isFiltered.insert(prog); - if (intTypes.contains(ydbSchema[i].second.GetTypeId()) || - strTypes.contains(ydbSchema[i].second.GetTypeId())) { + if (intTypes.contains(ydbSchema[i].GetType().GetTypeId()) || + strTypes.contains(ydbSchema[i].GetType().GetTypeId())) { checkResult.insert(prog); } @@ -1516,8 +1519,8 @@ void TestReadAggregate(const std::vector<std::pair<TString, TTypeInfo>>& ydbSche std::vector<TString> unnamedColumns = {"100", "101", "102", "103"}; if (!addProjection) { for (auto& key : aggKeys) { - namedColumns.push_back(ydbSchema[key].first); - unnamedColumns.push_back(ydbSchema[key].first); + namedColumns.push_back(ydbSchema[key].GetName()); + unnamedColumns.push_back(ydbSchema[key].GetName()); } } @@ -1563,13 +1566,14 @@ Y_UNIT_TEST_SUITE(EvWrite) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); const ui64 ownerId = 0; const ui64 tableId = 1; const ui64 schemaVersion = 1; - const std::vector<std::pair<TString, TTypeInfo>> schema = { - {"key", TTypeInfo(NTypeIds::Uint64) }, - {"field", TTypeInfo(NTypeIds::Utf8) } + const std::vector<NArrow::NTest::TTestColumn> schema = { + NArrow::NTest::TTestColumn("key", TTypeInfo(NTypeIds::Uint64)), + NArrow::NTest::TTestColumn("field", TTypeInfo(NTypeIds::Utf8)) }; const std::vector<ui32> columnsIds = {1, 2}; PrepareTablet(runtime, tableId, schema); @@ -1583,8 +1587,9 @@ Y_UNIT_TEST_SUITE(EvWrite) { TString blobData = NArrow::SerializeBatchNoCompression(batch); UNIT_ASSERT(blobData.size() < TLimits::GetMaxBlobSize()); - auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(txId, NKikimrDataEvents::TEvWrite::MODE_PREPARE); - ui64 payloadIndex = NEvWrite::TPayloadHelper<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); + auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(NKikimrDataEvents::TEvWrite::MODE_PREPARE); + evWrite->SetTxId(txId); + ui64 payloadIndex = NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_REPLACE, {ownerId, tableId, schemaVersion}, columnsIds, payloadIndex, NKikimrDataEvents::FORMAT_ARROW); TActorId sender = runtime.AllocateEdgeActor(); @@ -1613,14 +1618,16 @@ Y_UNIT_TEST_SUITE(EvWrite) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); + const ui64 ownerId = 0; const ui64 tableId = 1; const ui64 schemaVersion = 1; - const std::vector<std::pair<TString, TTypeInfo>> schema = { - {"key", TTypeInfo(NTypeIds::Uint64) }, - {"field", TTypeInfo(NTypeIds::Utf8) } - }; + const std::vector<NArrow::NTest::TTestColumn> schema = { + NArrow::NTest::TTestColumn("key", TTypeInfo(NTypeIds::Uint64)), + NArrow::NTest::TTestColumn("field", TTypeInfo(NTypeIds::Utf8)) + }; const std::vector<ui32> columnsIds = {1, 2}; PrepareTablet(runtime, tableId, schema); const ui64 txId = 111; @@ -1633,8 +1640,9 @@ Y_UNIT_TEST_SUITE(EvWrite) { TString blobData = NArrow::SerializeBatchNoCompression(batch); UNIT_ASSERT(blobData.size() < TLimits::GetMaxBlobSize()); - auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(txId, NKikimrDataEvents::TEvWrite::MODE_PREPARE); - ui64 payloadIndex = NEvWrite::TPayloadHelper<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); + auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(NKikimrDataEvents::TEvWrite::MODE_PREPARE); + evWrite->SetTxId(txId); + ui64 payloadIndex = NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_REPLACE, {ownerId, tableId, schemaVersion}, columnsIds, payloadIndex, NKikimrDataEvents::FORMAT_ARROW); TActorId sender = runtime.AllocateEdgeActor(); @@ -1660,14 +1668,16 @@ Y_UNIT_TEST_SUITE(EvWrite) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); + const ui64 ownerId = 0; const ui64 tableId = 1; const ui64 schemaVersion = 1; - const std::vector<std::pair<TString, TTypeInfo>> schema = { - {"key", TTypeInfo(NTypeIds::Uint64) }, - {"field", TTypeInfo(NTypeIds::Utf8) } - }; + const std::vector<NArrow::NTest::TTestColumn> schema = { + NArrow::NTest::TTestColumn("key", TTypeInfo(NTypeIds::Uint64)), + NArrow::NTest::TTestColumn("field", TTypeInfo(NTypeIds::Utf8)) + }; const std::vector<ui32> columnsIds = {1, 2}; PrepareTablet(runtime, tableId, schema); const ui64 txId = 111; @@ -1680,8 +1690,9 @@ Y_UNIT_TEST_SUITE(EvWrite) { TString blobData = NArrow::SerializeBatchNoCompression(batch); UNIT_ASSERT(blobData.size() > TLimits::GetMaxBlobSize()); - auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(txId, NKikimrDataEvents::TEvWrite::MODE_PREPARE); - ui64 payloadIndex = NEvWrite::TPayloadHelper<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); + auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(NKikimrDataEvents::TEvWrite::MODE_PREPARE); + evWrite->SetTxId(txId); + ui64 payloadIndex = NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_REPLACE, {ownerId, tableId, schemaVersion}, columnsIds, payloadIndex, NKikimrDataEvents::FORMAT_ARROW); TActorId sender = runtime.AllocateEdgeActor(); @@ -1698,6 +1709,105 @@ Y_UNIT_TEST_SUITE(EvWrite) { auto readResult = ReadAllAsBatch(runtime, tableId, NOlap::TSnapshot(11, txId), schema); UNIT_ASSERT_VALUES_EQUAL(readResult->num_rows(), 2048); } + + Y_UNIT_TEST(WriteWithLock) { + using namespace NArrow; + + TTestBasicRuntime runtime; + TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); + + + const ui64 ownerId = 0; + const ui64 tableId = 1; + const ui64 schemaVersion = 1; + const std::vector<NArrow::NTest::TTestColumn> schema = { + NArrow::NTest::TTestColumn("key", TTypeInfo(NTypeIds::Uint64) ), + NArrow::NTest::TTestColumn("field", TTypeInfo(NTypeIds::Utf8) ) + }; + const std::vector<ui32> columnsIds = {1, 2}; + PrepareTablet(runtime, tableId, schema); + const ui64 txId = 111; + const ui64 lockId = 110; + + { + NConstruction::IArrayBuilder::TPtr keyColumn = std::make_shared<NConstruction::TSimpleArrayConstructor<NConstruction::TIntSeqFiller<arrow::UInt64Type>>>("key"); + NConstruction::IArrayBuilder::TPtr column = std::make_shared<NConstruction::TSimpleArrayConstructor<NConstruction::TStringPoolFiller>>("field", NConstruction::TStringPoolFiller(8, 100)); + auto batch = NConstruction::TRecordBatchConstructor({ keyColumn, column }).BuildBatch(2048); + TString blobData = NArrow::SerializeBatchNoCompression(batch); + UNIT_ASSERT(blobData.size() < TLimits::GetMaxBlobSize()); + auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(NKikimrDataEvents::TEvWrite::MODE_PREPARE); + evWrite->SetLockId(lockId, 1); + + ui64 payloadIndex = NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); + evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_REPLACE, {ownerId, tableId, schemaVersion}, columnsIds, payloadIndex, NKikimrDataEvents::FORMAT_ARROW); + + TActorId sender = runtime.AllocateEdgeActor(); + ForwardToTablet(runtime, TTestTxConfig::TxTablet0, sender, evWrite.release()); + + { + TAutoPtr<NActors::IEventHandle> handle; + auto event = runtime.GrabEdgeEvent<NKikimr::NEvents::TDataEvents::TEvWriteResult>(handle); + UNIT_ASSERT(event); + UNIT_ASSERT_VALUES_EQUAL(event->Record.GetOrigin(), TTestTxConfig::TxTablet0); + UNIT_ASSERT_VALUES_EQUAL(event->Record.GetTxId(), lockId); + UNIT_ASSERT_VALUES_EQUAL((ui64)event->Record.GetStatus(), (ui64)NKikimrDataEvents::TEvWriteResult::STATUS_COMPLETED); + + auto readResult = ReadAllAsBatch(runtime, tableId, NOlap::TSnapshot(10, lockId), schema); + UNIT_ASSERT_VALUES_EQUAL(readResult->num_rows(), 0); + } + } + { + NConstruction::IArrayBuilder::TPtr keyColumn = std::make_shared<NConstruction::TSimpleArrayConstructor<NConstruction::TIntSeqFiller<arrow::UInt64Type>>>("key", 2049); + NConstruction::IArrayBuilder::TPtr column = std::make_shared<NConstruction::TSimpleArrayConstructor<NConstruction::TStringPoolFiller>>("field", NConstruction::TStringPoolFiller(8, 100)); + auto batch = NConstruction::TRecordBatchConstructor({ keyColumn, column }).BuildBatch(2048); + TString blobData = NArrow::SerializeBatchNoCompression(batch); + UNIT_ASSERT(blobData.size() < TLimits::GetMaxBlobSize()); + auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(NKikimrDataEvents::TEvWrite::MODE_PREPARE); + evWrite->SetLockId(lockId, 1); + + ui64 payloadIndex = NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); + evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_REPLACE, {ownerId, tableId, schemaVersion}, columnsIds, payloadIndex, NKikimrDataEvents::FORMAT_ARROW); + + TActorId sender = runtime.AllocateEdgeActor(); + ForwardToTablet(runtime, TTestTxConfig::TxTablet0, sender, evWrite.release()); + + { + TAutoPtr<NActors::IEventHandle> handle; + auto event = runtime.GrabEdgeEvent<NKikimr::NEvents::TDataEvents::TEvWriteResult>(handle); + UNIT_ASSERT(event); + UNIT_ASSERT_VALUES_EQUAL(event->Record.GetOrigin(), TTestTxConfig::TxTablet0); + UNIT_ASSERT_VALUES_EQUAL(event->Record.GetTxId(), lockId); + UNIT_ASSERT_VALUES_EQUAL((ui64)event->Record.GetStatus(), (ui64)NKikimrDataEvents::TEvWriteResult::STATUS_COMPLETED); + + auto readResult = ReadAllAsBatch(runtime, tableId, NOlap::TSnapshot(10, txId), schema); + UNIT_ASSERT_VALUES_EQUAL(readResult->num_rows(), 0); + } + } + { + auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(NKikimrDataEvents::TEvWrite::MODE_PREPARE); + evWrite->SetLockId(lockId, 1); + evWrite->SetTxId(txId); + evWrite->Record.MutableLocks()->SetOp(NKikimrDataEvents::TKqpLocks::Commit); + + TActorId sender = runtime.AllocateEdgeActor(); + ForwardToTablet(runtime, TTestTxConfig::TxTablet0, sender, evWrite.release()); + + { + TAutoPtr<NActors::IEventHandle> handle; + auto event = runtime.GrabEdgeEvent<NKikimr::NEvents::TDataEvents::TEvWriteResult>(handle); + UNIT_ASSERT(event); + UNIT_ASSERT_VALUES_EQUAL(event->Record.GetOrigin(), TTestTxConfig::TxTablet0); + UNIT_ASSERT_VALUES_EQUAL((ui64)event->Record.GetStatus(), (ui64)NKikimrDataEvents::TEvWriteResult::STATUS_PREPARED); + UNIT_ASSERT_VALUES_EQUAL(event->Record.GetTxId(), txId); + } + + PlanWriteTx(runtime, sender, NOlap::TSnapshot(11, txId)); + } + + auto readResult = ReadAllAsBatch(runtime, tableId, NOlap::TSnapshot(11, txId), schema); + UNIT_ASSERT_VALUES_EQUAL(readResult->num_rows(), 2 * 2048); + } } Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { @@ -1787,8 +1897,8 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { auto schema = TTestSchema::YdbSchema(); auto pk = TTestSchema::YdbPkSchema(); - schema[0].second = TTypeInfo(typeId); - pk[0].second = TTypeInfo(typeId); + schema[0].SetType(TTypeInfo(typeId)); + pk[0].SetType(TTypeInfo(typeId)); TestTableDescription table{.Schema = schema, .Pk = pk}; TestCompactionInGranuleImpl(reboot, table); } @@ -1869,14 +1979,14 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { Y_UNIT_TEST(ReadSomePrograms) { TestTableDescription table; table.Schema = { - {"timestamp", TTypeInfo(NTypeIds::Timestamp) }, - {"resource_id", TTypeInfo(NTypeIds::Utf8) }, - {"uid", TTypeInfo(NTypeIds::Utf8) }, - {"level", TTypeInfo(NTypeIds::Int32) }, - {"message", TTypeInfo(NTypeIds::Utf8) } + NArrow::NTest::TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp) ), + NArrow::NTest::TTestColumn("resource_id", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("uid", TTypeInfo(NTypeIds::Utf8) ), + NArrow::NTest::TTestColumn("level", TTypeInfo(NTypeIds::Int32) ), + NArrow::NTest::TTestColumn("message", TTypeInfo(NTypeIds::Utf8) ) }; table.Pk = { - {"timestamp", TTypeInfo(NTypeIds::Timestamp) } + NArrow::NTest::TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp) ) }; TestSomePrograms(table); @@ -1913,7 +2023,7 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { Cerr << "-- group by key: " << key << "\n"; // the type has the same values in test batch so result would be grouped in one row - if (sameValTypes.contains(schema[key].second.GetTypeId())) { + if (sameValTypes.contains(schema[key].GetType().GetTypeId())) { TestReadAggregate(schema, testBlob, (key % 2), { key }, resGrouped, resFiltered); } else { TestReadAggregate(schema, testBlob, (key % 2), { key }, resDefault, resFiltered); @@ -1921,8 +2031,8 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { } for (ui32 key = 0; key < schema.size() - 1; ++key) { Cerr << "-- group by key: " << key << ", " << key + 1 << "\n"; - if (sameValTypes.contains(schema[key].second.GetTypeId()) && - sameValTypes.contains(schema[key + 1].second.GetTypeId())) { + if (sameValTypes.contains(schema[key].GetType().GetTypeId()) && + sameValTypes.contains(schema[key + 1].GetType().GetTypeId())) { TestReadAggregate(schema, testBlob, (key % 2), { key, key + 1 }, resGrouped, resFiltered); } else { TestReadAggregate(schema, testBlob, (key % 2), { key, key + 1 }, resDefault, resFiltered); @@ -1930,9 +2040,9 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { } for (ui32 key = 0; key < schema.size() - 2; ++key) { Cerr << "-- group by key: " << key << ", " << key + 1 << ", " << key + 2 << "\n"; - if (sameValTypes.contains(schema[key].second.GetTypeId()) && - sameValTypes.contains(schema[key + 1].second.GetTypeId()) && - sameValTypes.contains(schema[key + 1].second.GetTypeId())) { + if (sameValTypes.contains(schema[key].GetType().GetTypeId()) && + sameValTypes.contains(schema[key + 1].GetType().GetTypeId()) && + sameValTypes.contains(schema[key + 1].GetType().GetTypeId())) { TestReadAggregate(schema, testBlob, (key % 2), { key, key + 1, key + 2 }, resGrouped, resFiltered); } else { TestReadAggregate(schema, testBlob, (key % 2), { key, key + 1, key + 2 }, resDefault, resFiltered); @@ -1945,10 +2055,10 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { TTestBasicRuntime& Runtime; const ui64 PlanStep; const ui64 TxId; - const std::vector<std::pair<TString, TTypeInfo>> YdbPk; + const std::vector<NArrow::NTest::TTestColumn> YdbPk; public: - TTabletReadPredicateTest(TTestBasicRuntime& runtime, const ui64 planStep, const ui64 txId, const std::vector<std::pair<TString, TTypeInfo>>& ydbPk) + TTabletReadPredicateTest(TTestBasicRuntime& runtime, const ui64 planStep, const ui64 txId, const std::vector<NArrow::NTest::TTestColumn>& ydbPk) : Runtime(runtime) , PlanStep(planStep) , TxId(txId) @@ -1968,14 +2078,14 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { bool GetInclude() const noexcept { return Include; } - std::vector<TCell> GetCellVec(const std::vector<std::pair<TString, TTypeInfo>>& pk, + std::vector<TCell> GetCellVec(const std::vector<NArrow::NTest::TTestColumn>& pk, std::vector<TString>& mem, bool trailingNulls = false) const { UNIT_ASSERT(Border.size() <= pk.size()); std::vector<TCell> cells; size_t i = 0; for (; i < Border.size(); ++i) { - cells.push_back(MakeTestCell(pk[i].second, Border[i], mem)); + cells.push_back(MakeTestCell(pk[i].GetType(), Border[i], mem)); } for (; trailingNulls && i < pk.size(); ++i) { cells.push_back(TCell()); @@ -1995,7 +2105,7 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { TTestCaseOptions& SetTo(const TBorder& border) { To = border; return *this; } TTestCaseOptions& SetExpectedCount(ui32 count) { ExpectedCount = count; return *this; } - TSerializedTableRange MakeRange(const std::vector<std::pair<TString, TTypeInfo>>& pk) const { + TSerializedTableRange MakeRange(const std::vector<NArrow::NTest::TTestColumn>& pk) const { std::vector<TString> mem; auto cellsFrom = From ? From->GetCellVec(pk, mem, false) : std::vector<TCell>(); auto cellsTo = To ? To->GetCellVec(pk, mem) : std::vector<TCell>(); @@ -2073,7 +2183,7 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { SetupSchema(runtime, sender, tableId, table, "lz4"); TAutoPtr<IEventHandle> handle; - bool isStrPk0 = table.Pk[0].second == TTypeInfo(NTypeIds::String) || table.Pk[0].second == TTypeInfo(NTypeIds::Utf8); + bool isStrPk0 = table.Pk[0].GetType() == TTypeInfo(NTypeIds::String) || table.Pk[0].GetType() == TTypeInfo(NTypeIds::Utf8); // Write different keys: grow on compaction @@ -2190,13 +2300,13 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { ui32 resultLimit = 1024 * 1024; runtime.Send(new IEventHandle(scanActorId, sender, new NKqp::TEvKqpCompute::TEvScanDataAck(resultLimit, 0, 1))); auto scan = runtime.GrabEdgeEvent<NKqp::TEvKqpCompute::TEvScanData>(handle); - auto batchStats = scan->ArrowBatch; if (scan->Finished) { AFL_VERIFY(!scan->ArrowBatch || !scan->ArrowBatch->num_rows()); break; } - UNIT_ASSERT(batchStats); -// Cerr << batchStats->ToString() << Endl; + UNIT_ASSERT(scan->ArrowBatch); + auto batchStats = NArrow::ToBatch(scan->ArrowBatch, true); + // Cerr << batchStats->ToString() << Endl; for (ui32 i = 0; i < batchStats->num_rows(); ++i) { auto paths = batchStats->GetColumnByName("PathId"); @@ -2222,7 +2332,7 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { if (!keyColumnId) { keyColumnId = internalColumnId; } - Cerr << "[" << __LINE__ << "] " << activity << " " << table.Pk[0].second.GetTypeId() << " " + Cerr << "[" << __LINE__ << "] " << activity << " " << table.Pk[0].GetType().GetTypeId() << " " << pathId << " " << kindStr << " " << numRows << " " << numBytes << " " << numRawBytes << "\n"; if (pathId == tableId) { @@ -2260,12 +2370,12 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { auto schema = TTestSchema::YdbSchema(); auto pk = TTestSchema::YdbPkSchema(); TTestBlobOptions opts; - opts.SameValueColumns.emplace(pk[0].first); + opts.SameValueColumns.emplace(pk[0].GetName()); - schema[0].second = TTypeInfo(typeId); - pk[0].second = TTypeInfo(typeId); - schema[1].second = TTypeInfo(typeId); - pk[1].second = TTypeInfo(typeId); + schema[0].SetType(TTypeInfo(typeId)); + pk[0].SetType(TTypeInfo(typeId)); + schema[1].SetType(TTypeInfo(typeId)); + pk[1].SetType(TTypeInfo(typeId)); TestTableDescription table{.Schema = schema, .Pk = pk}; TestCompactionSplitGranuleImpl(table, opts); } @@ -2305,6 +2415,7 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { Y_UNIT_TEST(ReadStale) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); TActorId sender = runtime.AllocateEdgeActor(); CreateTestBootstrapper(runtime, CreateTestTabletInfo(TTestTxConfig::TxTablet0, TTabletTypes::ColumnShard), &CreateColumnShard); @@ -2322,7 +2433,7 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { SetupSchema(runtime, sender, tableId); TAutoPtr<IEventHandle> handle; - // Write some test data to adavnce the time + // Write some test data to advance the time { std::pair<ui64, ui64> triggerPortion = {1, 1000}; TString triggerData = MakeTestBlob(triggerPortion, ydbSchema); @@ -2434,7 +2545,7 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { } Cerr << Endl; } - if (auto cleanup = dynamic_pointer_cast<NOlap::TCleanupColumnEngineChanges>(msg->IndexChanges)) { + if (auto cleanup = dynamic_pointer_cast<NOlap::TCleanupPortionsColumnEngineChanges>(msg->IndexChanges)) { Y_ABORT_UNLESS(cleanup->PortionsToDrop.size()); ++cleanupsHappened; Cerr << "Cleanup old portions:"; @@ -2477,7 +2588,7 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { Cerr << " deletes blobs: " << JoinStrings(msg->DoNotKeep->begin(), msg->DoNotKeep->end(), " "); for (const auto& blobId : *msg->DoNotKeep) { deletedBlobs.insert(blobId.ToString()); - delayedBlobs.erase(TUnifiedBlobId(0, blobId).ToStringNew()); + delayedBlobs.erase(NOlap::TUnifiedBlobId(0, blobId).ToStringNew()); } } Cerr << Endl; @@ -2613,6 +2724,18 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { Y_UNIT_TEST(CompactionGC) { TestCompactionGC(); } + + Y_UNIT_TEST(PortionInfoSize) { + Cerr << sizeof(NOlap::TPortionInfo) << Endl; + Cerr << sizeof(NOlap::TPortionMeta) << Endl; + Cerr << sizeof(NOlap::TColumnRecord) << Endl; + Cerr << sizeof(NOlap::TIndexChunk) << Endl; + Cerr << sizeof(std::optional<NArrow::TReplaceKey>) << Endl; + Cerr << sizeof(std::optional<NOlap::TSnapshot>) << Endl; + Cerr << sizeof(NOlap::TSnapshot) << Endl; + Cerr << sizeof(NArrow::TReplaceKey) << Endl; + Cerr << sizeof(NArrow::NMerger::TSortableBatchPosition) << Endl; + } } } diff --git a/ydb/core/tx/columnshard/ut_rw/ut_normalizer.cpp b/ydb/core/tx/columnshard/ut_rw/ut_normalizer.cpp index 3c467583b189..8f6df202a4ec 100644 --- a/ydb/core/tx/columnshard/ut_rw/ut_normalizer.cpp +++ b/ydb/core/tx/columnshard/ut_rw/ut_normalizer.cpp @@ -32,6 +32,16 @@ struct TPortionRecord { ui32 Size = 0; }; + +class TNormalizerChecker { +public: + virtual ~TNormalizerChecker() {} + + virtual ui64 RecordsCountAfterReboot(const ui64 initialRecodsCount) const { + return initialRecodsCount; + } +}; + class TPathIdCleaner : public NYDBTest::ILocalDBModifier { public: virtual void Apply(NTabletFlatExecutor::TTransactionContext& txc) const override { @@ -149,59 +159,78 @@ class TColumnChunksCleaner : public NYDBTest::ILocalDBModifier { } } }; - -class TMinMaxCleaner : public NYDBTest::ILocalDBModifier { +/* +class TPortinosCleaner : public NYDBTest::ILocalDBModifier { public: virtual void Apply(NTabletFlatExecutor::TTransactionContext& txc) const override { using namespace NColumnShard; NIceDb::TNiceDb db(txc.DB); - std::vector<TPortionRecord> portion2Key; - std::optional<ui64> pathId; + std::vector<NOlap::TPortionAddress> portions; { - auto rowset = db.Table<Schema::IndexColumns>().Select(); + auto rowset = db.Table<Schema::IndexPortions>().Select(); UNIT_ASSERT(rowset.IsReady()); while (!rowset.EndOfSet()) { - TPortionRecord key; - key.Index = rowset.GetValue<Schema::IndexColumns::Index>(); - key.Granule = rowset.GetValue<Schema::IndexColumns::Granule>(); - key.ColumnIdx = rowset.GetValue<Schema::IndexColumns::ColumnIdx>(); - key.PlanStep = rowset.GetValue<Schema::IndexColumns::PlanStep>(); - key.TxId = rowset.GetValue<Schema::IndexColumns::TxId>(); - key.Portion = rowset.GetValue<Schema::IndexColumns::Portion>(); - key.Chunk = rowset.GetValue<Schema::IndexColumns::Chunk>(); - - key.XPlanStep = rowset.GetValue<Schema::IndexColumns::XPlanStep>(); - key.XTxId = rowset.GetValue<Schema::IndexColumns::XTxId>(); - key.Blob = rowset.GetValue<Schema::IndexColumns::Blob>(); - key.Metadata = rowset.GetValue<Schema::IndexColumns::Metadata>(); - key.Offset = rowset.GetValue<Schema::IndexColumns::Offset>(); - key.Size = rowset.GetValue<Schema::IndexColumns::Size>(); + NOlap::TPortionAddress addr(rowset.GetValue<Schema::IndexPortions::PathId>(), rowset.GetValue<Schema::IndexPortions::PortionId>()); + portions.emplace_back(addr); + UNIT_ASSERT(rowset.Next()); + } + } - pathId = rowset.GetValue<Schema::IndexColumns::PathId>(); + for (auto&& key: portions) { + db.Table<Schema::IndexPortions>().Key(key.GetPathId(), key.GetPortionId()).Delete(); + } + } +}; +*/ +class TTablesCleaner : public NYDBTest::ILocalDBModifier { +public: + virtual void Apply(NTabletFlatExecutor::TTransactionContext& txc) const override { + using namespace NColumnShard; + NIceDb::TNiceDb db(txc.DB); - portion2Key.emplace_back(std::move(key)); + std::vector<ui64> tables; + { + auto rowset = db.Table<Schema::TableInfo>().Select(); + UNIT_ASSERT(rowset.IsReady()); + while (!rowset.EndOfSet()) { + const auto pathId = rowset.GetValue<Schema::TableInfo::PathId>(); + tables.emplace_back(pathId); UNIT_ASSERT(rowset.Next()); } } - UNIT_ASSERT(pathId.has_value()); + for (auto&& key: tables) { + db.Table<Schema::TableInfo>().Key(key).Delete(); + } - for (auto&& key: portion2Key) { - NKikimrTxColumnShard::TIndexColumnMeta metaProto; - UNIT_ASSERT(metaProto.ParseFromArray(key.Metadata.data(), key.Metadata.size())); - if (metaProto.HasPortionMeta()) { - metaProto.MutablePortionMeta()->ClearRecordSnapshotMax(); - metaProto.MutablePortionMeta()->ClearRecordSnapshotMin(); + struct TKey { + ui64 PathId; + ui64 Step; + ui64 TxId; + }; + + std::vector<TKey> versions; + { + auto rowset = db.Table<Schema::TableVersionInfo>().Select(); + UNIT_ASSERT(rowset.IsReady()); + + while (!rowset.EndOfSet()) { + TKey key; + key.PathId = rowset.GetValue<Schema::TableVersionInfo::PathId>(); + key.Step = rowset.GetValue<Schema::TableVersionInfo::SinceStep>(); + key.TxId = rowset.GetValue<Schema::TableVersionInfo::SinceTxId>(); + versions.emplace_back(key); + UNIT_ASSERT(rowset.Next()); } + } - db.Table<Schema::IndexColumns>().Key(key.Index, key.Granule, key.ColumnIdx, - key.PlanStep, key.TxId, key.Portion, key.Chunk).Update( - NIceDb::TUpdate<Schema::IndexColumns::Metadata>(metaProto.SerializeAsString()) - ); + for (auto&& key: versions) { + db.Table<Schema::TableVersionInfo>().Key(key.PathId, key.Step, key.TxId).Delete(); } + } }; @@ -218,7 +247,7 @@ class TPrepareLocalDBController: public NKikimr::NYDBTest::NColumnShard::TContro Y_UNIT_TEST_SUITE(Normalizers) { template <class TLocalDBModifier> - void TestNormalizerImpl() { + void TestNormalizerImpl(const TNormalizerChecker& checker = TNormalizerChecker()) { using namespace NArrow; auto csControllerGuard = NYDBTest::TControllers::RegisterCSControllerGuard<TPrepareLocalDBController<TLocalDBModifier>>(); @@ -228,10 +257,10 @@ Y_UNIT_TEST_SUITE(Normalizers) { const ui64 ownerId = 0; const ui64 tableId = 1; const ui64 schemaVersion = 1; - const std::vector<std::pair<TString, TTypeInfo>> schema = { - {"key1", TTypeInfo(NTypeIds::Uint64) }, - {"key2", TTypeInfo(NTypeIds::Uint64) }, - {"field", TTypeInfo(NTypeIds::Utf8) } + const std::vector<NArrow::NTest::TTestColumn> schema = { + NArrow::NTest::TTestColumn("key1", TTypeInfo(NTypeIds::Uint64)), + NArrow::NTest::TTestColumn("key2", TTypeInfo(NTypeIds::Uint64)), + NArrow::NTest::TTestColumn("field", TTypeInfo(NTypeIds::Utf8) ) }; const std::vector<ui32> columnsIds = { 1, 2, 3}; PrepareTablet(runtime, tableId, schema, 2); @@ -245,8 +274,9 @@ Y_UNIT_TEST_SUITE(Normalizers) { auto batch = NConstruction::TRecordBatchConstructor({ key1Column, key2Column, column }).BuildBatch(20048); TString blobData = NArrow::SerializeBatchNoCompression(batch); - auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(txId, NKikimrDataEvents::TEvWrite::MODE_PREPARE); - ui64 payloadIndex = NEvWrite::TPayloadHelper<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); + auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(NKikimrDataEvents::TEvWrite::MODE_PREPARE); + evWrite->SetTxId(txId); + ui64 payloadIndex = NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_REPLACE, {ownerId, tableId, schemaVersion}, columnsIds, payloadIndex, NKikimrDataEvents::FORMAT_ARROW); TActorId sender = runtime.AllocateEdgeActor(); @@ -268,7 +298,7 @@ Y_UNIT_TEST_SUITE(Normalizers) { { auto readResult = ReadAllAsBatch(runtime, tableId, NOlap::TSnapshot(11, txId), schema); - UNIT_ASSERT_VALUES_EQUAL(readResult->num_rows(), 20048); + UNIT_ASSERT_VALUES_EQUAL(readResult->num_rows(), checker.RecordsCountAfterReboot(20048)); } } @@ -279,9 +309,21 @@ Y_UNIT_TEST_SUITE(Normalizers) { Y_UNIT_TEST(ColumnChunkNormalizer) { TestNormalizerImpl<TColumnChunksCleaner>(); } +/* + Y_UNIT_TEST(PortionsNormalizer) { + TestNormalizerImpl<TPortinosCleaner>(); + } +*/ - Y_UNIT_TEST(MinMaxNormalizer) { - TestNormalizerImpl<TMinMaxCleaner>(); + Y_UNIT_TEST(EmptyTablesNormalizer) { + class TLocalNormalizerChecker : public TNormalizerChecker { + public: + ui64 RecordsCountAfterReboot(const ui64) const override { + return 0; + } + }; + TLocalNormalizerChecker checker; + TestNormalizerImpl<TTablesCleaner>(checker); } } diff --git a/ydb/core/tx/columnshard/ut_rw/ya.make b/ydb/core/tx/columnshard/ut_rw/ya.make index 5932bccf759a..8f5af7869b5f 100644 --- a/ydb/core/tx/columnshard/ut_rw/ya.make +++ b/ydb/core/tx/columnshard/ut_rw/ya.make @@ -19,9 +19,11 @@ PEERDIR( library/cpp/regex/pcre library/cpp/svnversion ydb/core/testlib/default + ydb/core/tx/columnshard/test_helper ydb/core/tx/columnshard/hooks/abstract ydb/core/tx/columnshard/hooks/testing ydb/core/tx/columnshard/common/tests + ydb/core/tx/columnshard/test_helper ydb/services/metadata ydb/core/tx ydb/public/lib/yson_value @@ -33,6 +35,7 @@ SRCS( columnshard_ut_common.cpp ut_columnshard_read_write.cpp ut_normalizer.cpp + ut_backup.cpp ) END() diff --git a/ydb/core/tx/columnshard/ut_schema/ut_columnshard_schema.cpp b/ydb/core/tx/columnshard/ut_schema/ut_columnshard_schema.cpp index d08e22258981..ae9da9114c76 100644 --- a/ydb/core/tx/columnshard/ut_schema/ut_columnshard_schema.cpp +++ b/ydb/core/tx/columnshard/ut_schema/ut_columnshard_schema.cpp @@ -9,6 +9,8 @@ #include <ydb/core/tx/columnshard/hooks/abstract/abstract.h> #include <ydb/core/tx/columnshard/hooks/testing/controller.h> #include <ydb/core/tx/columnshard/blobs_reader/actor.h> +#include <ydb/core/tx/columnshard/test_helper/controllers.h> +#include <ydb/core/tx/columnshard/engines/changes/ttl.h> #include <ydb/public/sdk/cpp/client/ydb_table/table.h> #include <ydb/library/actors/core/av_bootstrapped.h> @@ -20,6 +22,7 @@ namespace NKikimr { using namespace NTxUT; using namespace NColumnShard; +using TDefaultTestsController = NKikimr::NYDBTest::NColumnShard::TController; enum class EInitialEviction { None, @@ -27,71 +30,10 @@ enum class EInitialEviction { Tiering }; -class TWaitCompactionController: public NKikimr::NYDBTest::NColumnShard::TController { -private: - using TBase = NKikimr::NYDBTest::ICSController; - TAtomic TTLFinishedCounter = 0; - TAtomic TTLStartedCounter = 0; - NMetadata::NFetcher::ISnapshot::TPtr CurrentConfig; - bool CompactionEnabledFlag = true; - ui32 TiersModificationsCount = 0; -protected: - virtual void OnTieringModified(const std::shared_ptr<TTiersManager>& /*tiers*/) override { - ++TiersModificationsCount; - AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("event", "OnTieringModified")("count", TiersModificationsCount); - } - virtual bool DoOnStartCompaction(std::shared_ptr<NOlap::TColumnEngineChanges>& changes) override { - if (!CompactionEnabledFlag) { - changes = nullptr; - } - return true; - } - virtual bool DoOnWriteIndexComplete(const ui64 /*tabletId*/, const TString& changeClassName) override { - if (changeClassName.find("TTL") != TString::npos) { - AtomicIncrement(TTLFinishedCounter); - } - return true; - } - virtual bool DoOnWriteIndexStart(const ui64 /*tabletId*/, const TString& changeClassName) override { - if (changeClassName.find("TTL") != TString::npos) { - AtomicIncrement(TTLStartedCounter); - } - return true; - } -public: - void SetCompactionEnabled(const bool value) { - CompactionEnabledFlag = value; - } - void SetTiersSnapshot(TTestBasicRuntime& runtime, const TActorId& tabletActorId, const NMetadata::NFetcher::ISnapshot::TPtr& snapshot) { - CurrentConfig = snapshot; - ui32 startCount = TiersModificationsCount; - ProvideTieringSnapshot(runtime, tabletActorId, snapshot); - while (TiersModificationsCount == startCount) { - runtime.SimulateSleep(TDuration::Seconds(1)); - } - } - - virtual NMetadata::NFetcher::ISnapshot::TPtr GetFallbackTiersSnapshot() const override { - if (CurrentConfig) { - return CurrentConfig; - } else { - return TBase::GetFallbackTiersSnapshot(); - } - } - i64 GetTTLFinishedCounter() const { - return AtomicGet(TTLFinishedCounter); - } - - i64 GetTTLStartedCounter() const { - return AtomicGet(TTLStartedCounter); - } - -}; - namespace { -static const std::vector<std::pair<TString, TTypeInfo>> testYdbSchema = TTestSchema::YdbSchema(); -static const std::vector<std::pair<TString, TTypeInfo>> testYdbPk = TTestSchema::YdbPkSchema(); +static const std::vector<NArrow::NTest::TTestColumn> testYdbSchema = TTestSchema::YdbSchema(); +static const std::vector<NArrow::NTest::TTestColumn> testYdbPk = TTestSchema::YdbPkSchema(); std::shared_ptr<arrow::RecordBatch> UpdateColumn(std::shared_ptr<arrow::RecordBatch> batch, TString columnName, i64 seconds) { std::string name(columnName.c_str(), columnName.size()); @@ -184,7 +126,7 @@ bool CheckSame(const std::shared_ptr<arrow::RecordBatch>& batch, const ui32 expe } std::vector<TString> MakeData(const std::vector<ui64>& ts, ui32 portionSize, ui32 overlapSize, const TString& ttlColumnName, - const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema = testYdbSchema) { + const std::vector<NArrow::NTest::TTestColumn>& ydbSchema = testYdbSchema) { UNIT_ASSERT(ts.size() > 0); ui32 numRows = portionSize + (ts.size() - 1) * (portionSize - overlapSize); @@ -204,23 +146,6 @@ std::vector<TString> MakeData(const std::vector<ui64>& ts, ui32 portionSize, ui3 return data; } -bool TestCreateTable(const TString& txBody, ui64 planStep = 1000, ui64 txId = 100) { - TTestBasicRuntime runtime; - TTester::Setup(runtime); - - TActorId sender = runtime.AllocateEdgeActor(); - CreateTestBootstrapper(runtime, - CreateTestTabletInfo(TTestTxConfig::TxTablet0, TTabletTypes::ColumnShard), - &CreateColumnShard); - - TDispatchOptions options; - options.FinalEvents.push_back(TDispatchOptions::TFinalEventCondition(TEvTablet::EvBoot)); - runtime.DispatchEvents(options); - - // - return ProposeSchemaTx(runtime, sender, txBody, NOlap::TSnapshot(++planStep, ++txId)); -} - enum class EExpectedResult { OK_FINISHED, OK, @@ -232,16 +157,16 @@ static constexpr ui32 PORTION_ROWS = 80 * 1000; // ts[0] = 1600000000; // date -u --date='@1600000000' Sun Sep 13 12:26:40 UTC 2020 // ts[1] = 1620000000; // date -u --date='@1620000000' Mon May 3 00:00:00 UTC 2021 void TestTtl(bool reboots, bool internal, TTestSchema::TTableSpecials spec = {}, - const std::vector<std::pair<TString, TTypeInfo>>& ydbSchema = testYdbSchema) + const std::vector<NArrow::NTest::TTestColumn>& ydbSchema = testYdbSchema) { - auto csControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TWaitCompactionController>(); - csControllerGuard->SetCompactionEnabled(false); + auto csControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<NOlap::TWaitCompactionController>(); + csControllerGuard->DisableBackground(NKikimr::NYDBTest::ICSController::EBackground::Compaction); std::vector<ui64> ts = {1600000000, 1620000000}; ui32 ttlIncSeconds = 1; - for (auto& [name, typeInfo] : ydbSchema) { - if (name == spec.TtlColumn) { - if (typeInfo.GetTypeId() == NTypeIds::Date) { + for (auto& c : ydbSchema) { + if (c.GetName() == spec.TtlColumn) { + if (c.GetType().GetTypeId() == NTypeIds::Date) { ttlIncSeconds = TDuration::Days(1).Seconds(); } break; @@ -280,11 +205,9 @@ void TestTtl(bool reboots, bool internal, TTestSchema::TTableSpecials spec = {}, UNIT_ASSERT(!spec.TtlColumn.empty()); spec.EvictAfter = TDuration::Seconds(ttlSec); } - bool ok = ProposeSchemaTx(runtime, sender, + SetupSchema(runtime, sender, TTestSchema::CreateInitShardTxBody(tableId, ydbSchema, testYdbPk, spec, "/Root/olapStore"), NOlap::TSnapshot(++planStep, ++txId)); - UNIT_ASSERT(ok); - PlanSchemaTx(runtime, sender, NOlap::TSnapshot(planStep, txId)); if (spec.HasTiers()) { csControllerGuard->SetTiersSnapshot(runtime, sender, TTestSchema::BuildSnapshot(spec)); } @@ -310,6 +233,9 @@ void TestTtl(bool reboots, bool internal, TTestSchema::TTableSpecials spec = {}, } else { TriggerTTL(runtime, sender, NOlap::TSnapshot(++planStep, ++txId), {tableId}, ts[0] + ttlIncSeconds, spec.TtlColumn); } + while (csControllerGuard->GetTTLFinishedCounter().Val() != csControllerGuard->GetTTLStartedCounter().Val()) { + runtime.SimulateSleep(TDuration::Seconds(1)); // wait all finished before (ttl especially) + } TAutoPtr<IEventHandle> handle; @@ -333,11 +259,9 @@ void TestTtl(bool reboots, bool internal, TTestSchema::TTableSpecials spec = {}, } else { spec.EvictAfter = TDuration::Seconds(ttlSec); } - ok = ProposeSchemaTx(runtime, sender, + SetupSchema(runtime, sender, TTestSchema::AlterTableTxBody(tableId, 2, spec), NOlap::TSnapshot(++planStep, ++txId)); - UNIT_ASSERT(ok); - PlanSchemaTx(runtime, sender, NOlap::TSnapshot(planStep, txId)); if (spec.HasTiers()) { csControllerGuard->SetTiersSnapshot(runtime, sender, TTestSchema::BuildSnapshot(spec)); } @@ -347,18 +271,21 @@ void TestTtl(bool reboots, bool internal, TTestSchema::TTableSpecials spec = {}, } else { TriggerTTL(runtime, sender, NOlap::TSnapshot(++planStep, ++txId), {tableId}, ts[1] + ttlIncSeconds, spec.TtlColumn); } + while (csControllerGuard->GetTTLFinishedCounter().Val() != csControllerGuard->GetTTLStartedCounter().Val()) { + runtime.SimulateSleep(TDuration::Seconds(1)); // wait all finished before (ttl especially) + } { --planStep; NOlap::NTests::TShardReader reader(runtime, TTestTxConfig::TxTablet0, tableId, NOlap::TSnapshot(planStep, Max<ui64>())); - reader.SetReplyColumns({spec.TtlColumn}); + reader.SetReplyColumns({spec.TtlColumn, NOlap::TIndexInfo::SPEC_COL_PLAN_STEP}); auto rb = reader.ReadAll(); UNIT_ASSERT(reader.IsCorrectlyFinished()); UNIT_ASSERT(!rb || !rb->num_rows()); } // Disable TTL - ok = ProposeSchemaTx(runtime, sender, + auto ok = ProposeSchemaTx(runtime, sender, TTestSchema::AlterTableTxBody(tableId, 3, TTestSchema::TTableSpecials()), NOlap::TSnapshot(++planStep, ++txId)); UNIT_ASSERT(ok); @@ -378,6 +305,9 @@ void TestTtl(bool reboots, bool internal, TTestSchema::TTableSpecials spec = {}, } else { TriggerTTL(runtime, sender, NOlap::TSnapshot(++planStep, ++txId), {tableId}, ts[0] - ttlIncSeconds, spec.TtlColumn); } + while (csControllerGuard->GetTTLFinishedCounter().Val() != csControllerGuard->GetTTLStartedCounter().Val()) { + runtime.SimulateSleep(TDuration::Seconds(1)); // wait all finished before (ttl especially) + } { --planStep; @@ -387,6 +317,14 @@ void TestTtl(bool reboots, bool internal, TTestSchema::TTableSpecials spec = {}, UNIT_ASSERT(reader.IsCorrectlyFinished()); UNIT_ASSERT(CheckSame(rb, PORTION_ROWS, spec.TtlColumn, ts[0])); } + + if (spec.NeedTestStatistics()) { + AFL_VERIFY(csControllerGuard->GetStatisticsUsageCount().Val()); + AFL_VERIFY(!csControllerGuard->GetMaxValueUsageCount().Val()); + } else { + AFL_VERIFY(!csControllerGuard->GetStatisticsUsageCount().Val()); + AFL_VERIFY(csControllerGuard->GetMaxValueUsageCount().Val()); + } } class TCountersContainer { @@ -568,8 +506,12 @@ std::vector<std::pair<ui32, ui64>> TestTiers(bool reboots, const std::vector<TSt } } } + for (auto&& s : specs) { + Cerr << s.DebugString() << Endl; + } - auto csControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TWaitCompactionController>(); + auto csControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<NOlap::TWaitCompactionController>(); + csControllerGuard->DisableBackground(NYDBTest::ICSController::EBackground::TTL); TTestBasicRuntime runtime; TTester::Setup(runtime); @@ -606,13 +548,9 @@ std::vector<std::pair<ui32, ui64>> TestTiers(bool reboots, const std::vector<TSt // const TDuration exportTimeout = TDuration::Seconds(40); UNIT_ASSERT(specs.size() > 0); - { - const bool ok = ProposeSchemaTx(runtime, sender, + SetupSchema(runtime, sender, TTestSchema::CreateInitShardTxBody(tableId, testYdbSchema, testYdbPk, specs[0], "/Root/olapStore"), NOlap::TSnapshot(++planStep, ++txId)); - UNIT_ASSERT(ok); - } - PlanSchemaTx(runtime, sender, NOlap::TSnapshot(planStep, txId)); if (specs[0].Tiers.size()) { csControllerGuard->SetTiersSnapshot(runtime, sender, TTestSchema::BuildSnapshot(specs[0])); } @@ -627,6 +565,7 @@ std::vector<std::pair<ui32, ui64>> TestTiers(bool reboots, const std::vector<TSt if (reboots) { RebootTablet(runtime, TTestTxConfig::TxTablet0, sender); } + csControllerGuard->EnableBackground(NYDBTest::ICSController::EBackground::TTL); runtime.SetLogPriority(NKikimrServices::TX_COLUMNSHARD, NActors::NLog::PRI_DEBUG); @@ -661,11 +600,9 @@ std::vector<std::pair<ui32, ui64>> TestTiers(bool reboots, const std::vector<TSt } if (i) { const ui32 version = 2 * i + 1; - const bool ok = ProposeSchemaTx(runtime, sender, + SetupSchema(runtime, sender, TTestSchema::AlterTableTxBody(tableId, version, specs[i]), NOlap::TSnapshot(++planStep, ++txId)); - UNIT_ASSERT(ok); - PlanSchemaTx(runtime, sender, NOlap::TSnapshot(planStep, txId)); } if (specs[i].HasTiers() || reboots) { csControllerGuard->SetTiersSnapshot(runtime, sender, TTestSchema::BuildSnapshot(specs[i])); @@ -693,7 +630,6 @@ std::vector<std::pair<ui32, ui64>> TestTiers(bool reboots, const std::vector<TSt } // Eviction - TriggerTTL(runtime, sender, NOlap::TSnapshot(++planStep, ++txId), {}, 0, specs[i].TtlColumn); Cerr << "-- " << (hasColdEviction ? "COLD" : "HOT") @@ -706,7 +642,7 @@ std::vector<std::pair<ui32, ui64>> TestTiers(bool reboots, const std::vector<TSt UNIT_ASSERT(reader->IsCorrectlyFinished()); } } - while (csControllerGuard->GetTTLFinishedCounter() != csControllerGuard->GetTTLStartedCounter()) { + while (csControllerGuard->GetTTLFinishedCounter().Val() != csControllerGuard->GetTTLStartedCounter().Val()) { runtime.SimulateSleep(TDuration::Seconds(1)); // wait all finished before (ttl especially) } @@ -748,6 +684,14 @@ std::vector<std::pair<ui32, ui64>> TestTiers(bool reboots, const std::vector<TSt } } + if (specs[0].NeedTestStatistics()) { + AFL_VERIFY(csControllerGuard->GetStatisticsUsageCount().Val()); + AFL_VERIFY(!csControllerGuard->GetMaxValueUsageCount().Val()); + } else { + AFL_VERIFY(!csControllerGuard->GetStatisticsUsageCount().Val()); + AFL_VERIFY(csControllerGuard->GetMaxValueUsageCount().Val()); + } + return specRowsBytes; } @@ -831,8 +775,8 @@ class TEvictionChanges { TTestSchema::TTableSpecials InitialSpec(const EInitialEviction init, TDuration initTs) { TTestSchema::TTableSpecials spec; + spec.TtlColumn = "timestamp"; if (init == EInitialEviction::Ttl) { - spec.TtlColumn = "timestamp"; spec.EvictAfter = initTs; } return spec; @@ -894,10 +838,11 @@ std::vector<std::pair<ui32, ui64>> TestOneTierExport(const TTestSchema::TTableSp return rowsBytes; } -void TestTwoHotTiers(bool reboot, bool changeTtl, const EInitialEviction initial = EInitialEviction::None, +void TestTwoHotTiers(bool reboot, bool changeTtl, const bool statisticsUsage, const EInitialEviction initial = EInitialEviction::None, bool revCompaction = false) { TTestSchema::TTableSpecials spec; spec.SetTtlColumn("timestamp"); + spec.SetNeedTestStatistics(statisticsUsage); spec.Tiers.emplace_back(TTestSchema::TStorageTier("tier0").SetTtlColumn("timestamp")); spec.Tiers.emplace_back(TTestSchema::TStorageTier("tier1").SetTtlColumn("timestamp")); spec.Tiers[(revCompaction ? 0 : 1)].SetCodec("zstd"); @@ -930,13 +875,13 @@ void TestTwoHotTiers(bool reboot, bool changeTtl, const EInitialEviction initial } } -void TestHotAndColdTiers(bool reboot, const EInitialEviction initial) { +void TestHotAndColdTiers(bool reboot, const EInitialEviction initial, const bool statisticsUsage) { TTestSchema::TTableSpecials spec; spec.SetTtlColumn("timestamp"); spec.Tiers.emplace_back(TTestSchema::TStorageTier("tier0").SetTtlColumn("timestamp")); spec.Tiers.emplace_back(TTestSchema::TStorageTier("tier1").SetTtlColumn("timestamp")); spec.Tiers.back().S3 = TTestSchema::TStorageTier::FakeS3(); - + spec.SetNeedTestStatistics(statisticsUsage); TestTiersAndTtl(spec, reboot, initial); } @@ -979,6 +924,7 @@ void TestExport(bool reboot, TExportTestOpts&& opts = TExportTestOpts{}) { void TestDrop(bool reboots) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); TActorId sender = runtime.AllocateEdgeActor(); CreateTestBootstrapper(runtime, @@ -996,11 +942,8 @@ void TestDrop(bool reboots) { ui64 planStep = 1000000000; // greater then delays ui64 txId = 100; - bool ok = ProposeSchemaTx(runtime, sender, TTestSchema::CreateTableTxBody(tableId, testYdbSchema, testYdbPk), + SetupSchema(runtime, sender, TTestSchema::CreateTableTxBody(tableId, testYdbSchema, testYdbPk), NOlap::TSnapshot(++planStep, ++txId)); - UNIT_ASSERT(ok); - PlanSchemaTx(runtime, sender, NOlap::TSnapshot(planStep, txId)); - // TString data1 = MakeTestBlob({0, PORTION_ROWS}, testYdbSchema); @@ -1027,9 +970,7 @@ void TestDrop(bool reboots) { } // Drop table - ok = ProposeSchemaTx(runtime, sender, TTestSchema::DropTableTxBody(tableId, 2), NOlap::TSnapshot(++planStep, ++txId)); - UNIT_ASSERT(ok); - PlanSchemaTx(runtime, sender, NOlap::TSnapshot(planStep, txId)); + SetupSchema(runtime, sender, TTestSchema::DropTableTxBody(tableId, 2), NOlap::TSnapshot(++planStep, ++txId)); if (reboots) { RebootTablet(runtime, TTestTxConfig::TxTablet0, sender); @@ -1049,6 +990,7 @@ void TestDrop(bool reboots) { void TestDropWriteRace() { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); TActorId sender = runtime.AllocateEdgeActor(); CreateTestBootstrapper(runtime, @@ -1068,11 +1010,8 @@ void TestDropWriteRace() { NLongTxService::TLongTxId longTxId; UNIT_ASSERT(longTxId.ParseString("ydb://long-tx/01ezvvxjdk2hd4vdgjs68knvp8?node_id=1")); - bool ok = ProposeSchemaTx(runtime, sender, TTestSchema::CreateTableTxBody(tableId, testYdbSchema, testYdbPk), + SetupSchema(runtime, sender, TTestSchema::CreateTableTxBody(tableId, testYdbSchema, testYdbPk), NOlap::TSnapshot(++planStep, ++txId)); - UNIT_ASSERT(ok); - PlanSchemaTx(runtime, sender, NOlap::TSnapshot(planStep, txId)); - TString data = MakeTestBlob({0, 100}, testYdbSchema); UNIT_ASSERT(data.size() < NColumnShard::TLimits::MIN_BYTES_TO_INSERT); @@ -1083,7 +1022,7 @@ void TestDropWriteRace() { auto commitTxId = txId; // Drop table - ok = ProposeSchemaTx(runtime, sender, TTestSchema::DropTableTxBody(tableId, 2), NOlap::TSnapshot(++planStep, ++txId)); + auto ok = ProposeSchemaTx(runtime, sender, TTestSchema::DropTableTxBody(tableId, 2), NOlap::TSnapshot(++planStep, ++txId)); if (ok) { PlanSchemaTx(runtime, sender, NOlap::TSnapshot(planStep, txId)); } @@ -1095,6 +1034,7 @@ void TestDropWriteRace() { void TestCompaction(std::optional<ui32> numWrites = {}) { TTestBasicRuntime runtime; TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); TActorId sender = runtime.AllocateEdgeActor(); CreateTestBootstrapper(runtime, @@ -1111,11 +1051,8 @@ void TestCompaction(std::optional<ui32> numWrites = {}) { ui64 planStep = 100; ui64 txId = 100; - bool ok = ProposeSchemaTx(runtime, sender, TTestSchema::CreateTableTxBody(tableId, testYdbSchema, testYdbPk), + SetupSchema(runtime, sender, TTestSchema::CreateTableTxBody(tableId, testYdbSchema, testYdbPk), NOlap::TSnapshot(++planStep, ++txId)); - UNIT_ASSERT(ok); - PlanSchemaTx(runtime, sender, NOlap::TSnapshot(planStep, txId)); - // Set tiering ui64 ts = 1620000000; @@ -1131,11 +1068,8 @@ void TestCompaction(std::optional<ui32> numWrites = {}) { spec.Tiers.back().EvictAfter = allow; spec.Tiers.back().S3 = TTestSchema::TStorageTier::FakeS3(); - ok = ProposeSchemaTx(runtime, sender, TTestSchema::AlterTableTxBody(tableId, 1, spec), + SetupSchema(runtime, sender, TTestSchema::AlterTableTxBody(tableId, 1, spec), NOlap::TSnapshot(++planStep, ++txId)); - UNIT_ASSERT(ok); - PlanSchemaTx(runtime, sender, NOlap::TSnapshot(planStep, txId)); - ProvideTieringSnapshot(runtime, sender, TTestSchema::BuildSnapshot(spec)); // Writes @@ -1189,16 +1123,31 @@ Y_UNIT_TEST_SUITE(TColumnShardTestSchema) { NTypeIds::Datetime }; - auto schema = TTestSchema::YdbSchema({"k0", TTypeInfo(NTypeIds::Timestamp)}); - auto pk = schema; - pk.resize(4); + TTestBasicRuntime runtime; + TTester::Setup(runtime); + auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); + + using namespace NTxUT; + CreateTestBootstrapper(runtime, CreateTestTabletInfo(TTestTxConfig::TxTablet0, TTabletTypes::ColumnShard), &CreateColumnShard); + + TDispatchOptions options; + options.FinalEvents.push_back(TDispatchOptions::TFinalEventCondition(TEvTablet::EvBoot)); + runtime.DispatchEvents(options); + + TActorId sender = runtime.AllocateEdgeActor(); + + auto schema = TTestSchema::YdbSchema(NArrow::NTest::TTestColumn("k0", TTypeInfo(NTypeIds::Timestamp))); + auto pk = NArrow::NTest::TTestColumn::CropSchema(schema, 4); + + ui64 planStep = 1000; + ui64 txId = 100; + ui64 generation = 0; for (auto& ydbType : intTypes) { - schema[0].second = TTypeInfo(ydbType); - pk[0].second = TTypeInfo(ydbType); - auto txBody = TTestSchema::CreateTableTxBody(tableId, schema, pk); - bool ok = TestCreateTable(txBody); - UNIT_ASSERT(ok); + schema[0].SetType(TTypeInfo(ydbType)); + pk[0].SetType(TTypeInfo(ydbType)); + auto txBody = TTestSchema::CreateTableTxBody(tableId++, schema, pk, {}, ++generation); + SetupSchema(runtime, sender, txBody, NOlap::TSnapshot(planStep++, txId++)); } // TODO: support float types @@ -1208,11 +1157,10 @@ Y_UNIT_TEST_SUITE(TColumnShardTestSchema) { }; for (auto& ydbType : floatTypes) { - schema[0].second = TTypeInfo(ydbType); - pk[0].second = TTypeInfo(ydbType); - auto txBody = TTestSchema::CreateTableTxBody(tableId, schema, pk); - bool ok = TestCreateTable(txBody); - UNIT_ASSERT(!ok); + schema[0].SetType(TTypeInfo(ydbType)); + pk[0].SetType(TTypeInfo(ydbType)); + auto txBody = TTestSchema::CreateTableTxBody(tableId++, schema, pk, {}, ++generation); + SetupSchema(runtime, sender, txBody, NOlap::TSnapshot(planStep++, txId++), false); } std::vector<TTypeId> strTypes = { @@ -1221,11 +1169,10 @@ Y_UNIT_TEST_SUITE(TColumnShardTestSchema) { }; for (auto& ydbType : strTypes) { - schema[0].second = TTypeInfo(ydbType); - pk[0].second = TTypeInfo(ydbType); - auto txBody = TTestSchema::CreateTableTxBody(tableId, schema, pk); - bool ok = TestCreateTable(txBody); - UNIT_ASSERT(ok); + schema[0].SetType(TTypeInfo(ydbType)); + pk[0].SetType(TTypeInfo(ydbType)); + auto txBody = TTestSchema::CreateTableTxBody(tableId++, schema, pk, {}, ++generation); + SetupSchema(runtime, sender, txBody, NOlap::TSnapshot(planStep++, txId++)); } std::vector<TTypeId> xsonTypes = { @@ -1235,11 +1182,10 @@ Y_UNIT_TEST_SUITE(TColumnShardTestSchema) { }; for (auto& ydbType : xsonTypes) { - schema[0].second = TTypeInfo(ydbType); - pk[0].second = TTypeInfo(ydbType); - auto txBody = TTestSchema::CreateTableTxBody(tableId, schema, pk); - bool ok = TestCreateTable(txBody); - UNIT_ASSERT(!ok); + schema[0].SetType(TTypeInfo(ydbType)); + pk[0].SetType(TTypeInfo(ydbType)); + auto txBody = TTestSchema::CreateTableTxBody(tableId++, schema, pk, {}, ++generation); + SetupSchema(runtime, sender, txBody, NOlap::TSnapshot(planStep++, txId++), false); } } @@ -1250,8 +1196,8 @@ Y_UNIT_TEST_SUITE(TColumnShardTestSchema) { Y_UNIT_TEST(ExternalTTL_Types) { auto ydbSchema = testYdbSchema; for (auto typeId : {NTypeIds::Datetime, NTypeIds::Date, NTypeIds::Uint32, NTypeIds::Uint64}) { - UNIT_ASSERT_EQUAL(ydbSchema[8].first, "saved_at"); - ydbSchema[8].second = TTypeInfo(typeId); + UNIT_ASSERT_EQUAL(ydbSchema[8].GetName(), "saved_at"); + ydbSchema[8].SetType(TTypeInfo(typeId)); TTestSchema::TTableSpecials specs; specs.SetTtlColumn("saved_at"); @@ -1272,8 +1218,8 @@ Y_UNIT_TEST_SUITE(TColumnShardTestSchema) { Y_UNIT_TEST(InternalTTL_Types) { auto ydbSchema = testYdbSchema; for (auto typeId : {NTypeIds::Datetime, NTypeIds::Date, NTypeIds::Uint32, NTypeIds::Uint64}) { - UNIT_ASSERT_EQUAL(ydbSchema[8].first, "saved_at"); - ydbSchema[8].second = TTypeInfo(typeId); + UNIT_ASSERT_EQUAL(ydbSchema[8].GetName(), "saved_at"); + ydbSchema[8].SetType(TTypeInfo(typeId)); TTestSchema::TTableSpecials specs; specs.SetTtlColumn("saved_at"); @@ -1320,64 +1266,91 @@ Y_UNIT_TEST_SUITE(TColumnShardTestSchema) { // TODO: EnableOneTierAfterTtl, EnableTtlAfterOneTier Y_UNIT_TEST(HotTiers) { - TestTwoHotTiers(false, false); + TestTwoHotTiers(false, false, false); } Y_UNIT_TEST(RebootHotTiers) { - TestTwoHotTiers(true, false); + TestTwoHotTiers(true, false, false); + } + + Y_UNIT_TEST(HotTiersWithStat) { + TestTwoHotTiers(false, false, true); + } + + Y_UNIT_TEST(RebootHotTiersWithStat) { + TestTwoHotTiers(true, false, true); } Y_UNIT_TEST(HotTiersRevCompression) { - TestTwoHotTiers(false, false, EInitialEviction::None, true); + TestTwoHotTiers(false, false, false, EInitialEviction::None, true); } Y_UNIT_TEST(RebootHotTiersRevCompression) { - TestTwoHotTiers(true, false, EInitialEviction::None, true); + TestTwoHotTiers(true, false, false, EInitialEviction::None, true); } Y_UNIT_TEST(HotTiersTtl) { NColumnShard::gAllowLogBatchingDefaultValue = false; - TestTwoHotTiers(false, true); + TestTwoHotTiers(false, true, false); } Y_UNIT_TEST(RebootHotTiersTtl) { NColumnShard::gAllowLogBatchingDefaultValue = false; - TestTwoHotTiers(true, true); + TestTwoHotTiers(true, true, false); + } + + Y_UNIT_TEST(HotTiersTtlWithStat) { + NColumnShard::gAllowLogBatchingDefaultValue = false; + TestTwoHotTiers(false, true, true); + } + + Y_UNIT_TEST(RebootHotTiersTtlWithStat) { + NColumnShard::gAllowLogBatchingDefaultValue = false; + TestTwoHotTiers(true, true, true); } Y_UNIT_TEST(HotTiersAfterTtl) { - TestTwoHotTiers(false, false, EInitialEviction::Ttl); + TestTwoHotTiers(false, false, false, EInitialEviction::Ttl); } Y_UNIT_TEST(RebootHotTiersAfterTtl) { - TestTwoHotTiers(true, false, EInitialEviction::Ttl); + TestTwoHotTiers(true, false, false, EInitialEviction::Ttl); } // TODO: EnableTtlAfterHotTiers Y_UNIT_TEST(ColdTiers) { - TestHotAndColdTiers(false, EInitialEviction::Tiering); + TestHotAndColdTiers(false, EInitialEviction::Tiering, false); } Y_UNIT_TEST(RebootColdTiers) { //NColumnShard::gAllowLogBatchingDefaultValue = false; - TestHotAndColdTiers(true, EInitialEviction::Tiering); + TestHotAndColdTiers(true, EInitialEviction::Tiering, false); + } + + Y_UNIT_TEST(ColdTiersWithStat) { + TestHotAndColdTiers(false, EInitialEviction::Tiering, true); + } + + Y_UNIT_TEST(RebootColdTiersWithStat) { + //NColumnShard::gAllowLogBatchingDefaultValue = false; + TestHotAndColdTiers(true, EInitialEviction::Tiering, true); } Y_UNIT_TEST(EnableColdTiersAfterNoEviction) { - TestHotAndColdTiers(false, EInitialEviction::None); + TestHotAndColdTiers(false, EInitialEviction::None, false); } Y_UNIT_TEST(RebootEnableColdTiersAfterNoEviction) { - TestHotAndColdTiers(true, EInitialEviction::None); + TestHotAndColdTiers(true, EInitialEviction::None, false); } Y_UNIT_TEST(EnableColdTiersAfterTtl) { - TestHotAndColdTiers(false, EInitialEviction::Ttl); + TestHotAndColdTiers(false, EInitialEviction::Ttl, false); } Y_UNIT_TEST(RebootEnableColdTiersAfterTtl) { - TestHotAndColdTiers(true, EInitialEviction::Ttl); + TestHotAndColdTiers(true, EInitialEviction::Ttl, false); } Y_UNIT_TEST(OneColdTier) { diff --git a/ydb/core/tx/columnshard/ut_schema/ya.make b/ydb/core/tx/columnshard/ut_schema/ya.make index f94fea4e912b..d3b7fdd5d842 100644 --- a/ydb/core/tx/columnshard/ut_schema/ya.make +++ b/ydb/core/tx/columnshard/ut_schema/ya.make @@ -21,6 +21,7 @@ PEERDIR( ydb/core/testlib/default ydb/core/tx/columnshard/hooks/abstract ydb/core/tx/columnshard/hooks/testing + ydb/core/tx/columnshard/test_helper ydb/services/metadata ydb/core/tx ydb/public/lib/yson_value diff --git a/ydb/core/tx/columnshard/write_actor.cpp b/ydb/core/tx/columnshard/write_actor.cpp index 5d858afe6564..25cbb99b5915 100644 --- a/ydb/core/tx/columnshard/write_actor.cpp +++ b/ydb/core/tx/columnshard/write_actor.cpp @@ -36,12 +36,12 @@ class TWriteActor: public TActorBootstrapped<TWriteActor>, public TMonitoringObj if (status != NKikimrProto::OK) { ACFL_ERROR("event", "TEvPutResult")("blob_id", msg->Id.ToString())("status", status)("error", msg->ErrorReason); - WriteController->Abort(); + WriteController->Abort("cannot write blob " + msg->Id.ToString() + ", status: " + ::ToString(status) + ". reason: " + msg->ErrorReason); return SendResultAndDie(ctx, status); } WriteController->OnBlobWriteResult(*msg); - if (WriteController->IsBlobActionsReady()) { + if (WriteController->IsReady()) { return SendResultAndDie(ctx, NKikimrProto::OK); } } @@ -84,7 +84,7 @@ class TWriteActor: public TActorBootstrapped<TWriteActor>, public TMonitoringObj writeInfo->GetWriteOperator()->SendWriteBlobRequest(writeInfo->GetData(), writeInfo->GetBlobId()); } - if (WriteController->IsBlobActionsReady()) { + if (WriteController->IsReady()) { return SendResultAndDie(ctx, NKikimrProto::OK); } Become(&TThis::StateWait); diff --git a/ydb/core/tx/columnshard/ya.make b/ydb/core/tx/columnshard/ya.make index 924a67d6350e..2c8103b24329 100644 --- a/ydb/core/tx/columnshard/ya.make +++ b/ydb/core/tx/columnshard/ya.make @@ -4,17 +4,13 @@ SRCS( background_controller.cpp blob.cpp blob_cache.cpp - blob_manager.cpp columnshard__init.cpp columnshard__notify_tx_completion.cpp columnshard__plan_step.cpp columnshard__progress_tx.cpp columnshard__propose_cancel.cpp columnshard__propose_transaction.cpp - columnshard__read_base.cpp columnshard__scan.cpp - columnshard__index_scan.cpp - columnshard__stats_scan.cpp columnshard__write.cpp columnshard__write_index.cpp columnshard.cpp @@ -25,6 +21,7 @@ SRCS( columnshard_view.cpp counters.cpp defs.cpp + inflight_request_tracker.cpp write_actor.cpp tables_manager.cpp ) @@ -45,6 +42,7 @@ PEERDIR( ydb/core/tx/time_cast ydb/core/tx/columnshard/engines ydb/core/tx/columnshard/engines/writer + ydb/core/tx/columnshard/engines/reader/abstract ydb/core/tx/columnshard/counters ydb/core/tx/columnshard/common ydb/core/tx/columnshard/splitter @@ -53,9 +51,14 @@ PEERDIR( ydb/core/tx/columnshard/transactions/operators ydb/core/tx/columnshard/blobs_reader ydb/core/tx/columnshard/blobs_action + ydb/core/tx/columnshard/data_locks + ydb/core/tx/columnshard/data_sharing + ydb/core/tx/columnshard/export ydb/core/tx/columnshard/resource_subscriber ydb/core/tx/columnshard/normalizer/granule ydb/core/tx/columnshard/normalizer/portion + ydb/core/tx/columnshard/normalizer/tables + ydb/core/tx/columnshard/blobs_action/storages_manager ydb/core/tx/tiering ydb/core/tx/conveyor/usage ydb/core/tx/tracing diff --git a/ydb/core/tx/data_events/columnshard_splitter.h b/ydb/core/tx/data_events/columnshard_splitter.h index 9c2b2c47ad5d..fabc0d2c5d20 100644 --- a/ydb/core/tx/data_events/columnshard_splitter.h +++ b/ydb/core/tx/data_events/columnshard_splitter.h @@ -174,7 +174,7 @@ class TColumnShardShardsSplitter : public IShardsSplitter { col.HasTypeInfo() ? &col.GetTypeInfo() : nullptr); columns.emplace_back(col.GetName(), typeInfoMod.TypeInfo); } - return NArrow::MakeArrowSchema(columns); + return NArrow::TStatusValidator::GetValid(NArrow::MakeArrowSchema(columns)); } }; } diff --git a/ydb/core/tx/data_events/events.h b/ydb/core/tx/data_events/events.h index 8fab00c8699d..a875bfe3b1da 100644 --- a/ydb/core/tx/data_events/events.h +++ b/ydb/core/tx/data_events/events.h @@ -38,13 +38,29 @@ struct TDataEvents { public: TEvWrite() = default; - TEvWrite(ui64 txId, NKikimrDataEvents::TEvWrite::ETxMode txMode) { - Y_ABORT_UNLESS(txMode != NKikimrDataEvents::TEvWrite::MODE_UNSPECIFIED); + TEvWrite(const ui64 txId, NKikimrDataEvents::TEvWrite::ETxMode txMode) { + Y_ABORT_UNLESS(txMode != NKikimrDataEvents::TEvWrite::MODE_UNSPECIFIED); + Record.SetTxMode(txMode); Record.SetTxId(txId); + } + + TEvWrite(NKikimrDataEvents::TEvWrite::ETxMode txMode) { + Y_ABORT_UNLESS(txMode != NKikimrDataEvents::TEvWrite::MODE_UNSPECIFIED); Record.SetTxMode(txMode); } + TEvWrite& SetTxId(const ui64 txId) { + Record.SetTxId(txId); + return *this; + } + + TEvWrite& SetLockId(const ui64 lockTxId, const ui64 lockNodeId) { + Record.SetLockTxId(lockTxId); + Record.SetLockNodeId(lockNodeId); + return *this; + } + void AddOperation(NKikimrDataEvents::TEvWrite_TOperation::EOperationType operationType, const TTableId& tableId, const std::vector<ui32>& columnIds, ui64 payloadIndex, NKikimrDataEvents::EDataFormat payloadFormat) { Y_ABORT_UNLESS(operationType != NKikimrDataEvents::TEvWrite::TOperation::OPERATION_UNSPECIFIED); @@ -87,7 +103,7 @@ struct TDataEvents { return result; } - static std::unique_ptr<TEvWriteResult> BuildCommited(const ui64 origin, const ui64 txId) { + static std::unique_ptr<TEvWriteResult> BuildCompleted(const ui64 origin, const ui64 txId) { auto result = std::make_unique<TEvWriteResult>(); result->Record.SetOrigin(origin); result->Record.SetTxId(txId); diff --git a/ydb/core/tx/data_events/payload_helper.h b/ydb/core/tx/data_events/payload_helper.h index 1905b60150c9..8d0b503b911c 100644 --- a/ydb/core/tx/data_events/payload_helper.h +++ b/ydb/core/tx/data_events/payload_helper.h @@ -4,20 +4,26 @@ namespace NKikimr::NEvWrite { -class IPayloadData { +class IPayloadReader { public: virtual TString GetDataFromPayload(const ui64 index) const = 0; + virtual ~IPayloadReader() { + } +}; + +class IPayloadWriter { +public: virtual ui64 AddDataToPayload(TString&& blobData) = 0; - virtual ~IPayloadData() { + virtual ~IPayloadWriter() { } }; template <class TEvent> -class TPayloadHelper: public IPayloadData { - TEvent& Event; +class TPayloadReader: public IPayloadReader { + const TEvent& Event; public: - TPayloadHelper(TEvent& ev) + TPayloadReader(const TEvent& ev) : Event(ev) { } @@ -28,6 +34,17 @@ class TPayloadHelper: public IPayloadData { rope.Begin().ExtractPlainDataAndAdvance(data.Detach(), data.size()); return data; } +}; + +template <class TEvent> +class TPayloadWriter: public IPayloadWriter { + TEvent& Event; + +public: + TPayloadWriter(TEvent& ev) + : Event(ev) + { + } ui64 AddDataToPayload(TString&& blobData) override { TRope rope; @@ -35,5 +52,4 @@ class TPayloadHelper: public IPayloadData { return Event.AddPayload(std::move(rope)); } }; - } diff --git a/ydb/core/tx/datashard/datashard__kqp_scan.cpp b/ydb/core/tx/datashard/datashard__kqp_scan.cpp index 603df1e0aa6b..e54fbd4b10cc 100644 --- a/ydb/core/tx/datashard/datashard__kqp_scan.cpp +++ b/ydb/core/tx/datashard/datashard__kqp_scan.cpp @@ -71,8 +71,8 @@ class TKqpScan : public TActor<TKqpScan>, public NTable::IScan { schema.emplace_back(column.Name, column.Type); } BatchBuilder->Reserve(INIT_BATCH_ROWS); - bool started = BatchBuilder->Start(schema); - YQL_ENSURE(started, "Failed to start BatchBuilder"); + auto started = BatchBuilder->Start(schema); + YQL_ENSURE(started.ok(), "Failed to start BatchBuilder: " + started.ToString()); } } @@ -436,7 +436,7 @@ class TKqpScan : public TActor<TKqpScan>, public NTable::IScan { if (DataFormat == NKikimrDataEvents::FORMAT_ARROW) { FlushBatchToResult(); - sendBytes = NArrow::GetBatchDataSize(Result->ArrowBatch); + sendBytes = NArrow::GetTableDataSize(Result->ArrowBatch); // Batch is stored inside BatchBuilder until we flush it into Result. So we verify number of rows here. YQL_ENSURE(Rows == 0 && Result->ArrowBatch == nullptr || Result->ArrowBatch->num_rows() == (i64) Rows); } else { @@ -489,7 +489,7 @@ class TKqpScan : public TActor<TKqpScan>, public NTable::IScan { // send a batch and try to send an empty batch again without adding rows, then a copy of the batch will be send // instead. So we check Rows here. if (Rows != 0) { - Result->ArrowBatch = Tags.empty() ? NArrow::CreateNoColumnsBatch(Rows) : BatchBuilder->FlushBatch(true); + Result->ArrowBatch = NArrow::TStatusValidator::GetValid(arrow::Table::FromRecordBatches({Tags.empty() ? NArrow::CreateNoColumnsBatch(Rows) : BatchBuilder->FlushBatch(true)})); } } diff --git a/ydb/core/tx/datashard/datashard_ut_read_iterator.cpp b/ydb/core/tx/datashard/datashard_ut_read_iterator.cpp index c2b2febb0067..940f4179aa76 100644 --- a/ydb/core/tx/datashard/datashard_ut_read_iterator.cpp +++ b/ydb/core/tx/datashard/datashard_ut_read_iterator.cpp @@ -760,7 +760,7 @@ struct TTestHelper { TSerializedCellMatrix matrix(cells, 1, columnCount); auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(txId, txMode); - ui64 payloadIndex = NKikimr::NEvWrite::TPayloadHelper<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(matrix.ReleaseBuffer()); + ui64 payloadIndex = NKikimr::NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(matrix.ReleaseBuffer()); evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_UPSERT, table.TableId, columnIds, payloadIndex, NKikimrDataEvents::FORMAT_CELLVEC); return Write(*Server->GetRuntime(), Sender, table.TabletId, std::move(evWrite)); diff --git a/ydb/core/tx/datashard/datashard_ut_write.cpp b/ydb/core/tx/datashard/datashard_ut_write.cpp index b2a6a33c8740..55f8dcd2865a 100644 --- a/ydb/core/tx/datashard/datashard_ut_write.cpp +++ b/ydb/core/tx/datashard/datashard_ut_write.cpp @@ -94,7 +94,7 @@ Y_UNIT_TEST_SUITE(DataShardWrite) { TSerializedCellMatrix matrix({TCell(hugeStringValue.c_str(), hugeStringValue.size())}, 1, 1); auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(100, NKikimrDataEvents::TEvWrite::MODE_IMMEDIATE); - ui64 payloadIndex = NKikimr::NEvWrite::TPayloadHelper<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(matrix.ReleaseBuffer()); + ui64 payloadIndex = NKikimr::NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(matrix.ReleaseBuffer()); evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_UPSERT, tableId, {1}, payloadIndex, NKikimrDataEvents::FORMAT_CELLVEC); const auto& record = Write(runtime, sender, shards[0], std::move(evWrite), NKikimrDataEvents::TEvWriteResult::STATUS_BAD_REQUEST); diff --git a/ydb/core/tx/datashard/datashard_write_operation.cpp b/ydb/core/tx/datashard/datashard_write_operation.cpp index 5bd48c0a0311..5ebb2dfc4102 100644 --- a/ydb/core/tx/datashard/datashard_write_operation.cpp +++ b/ydb/core/tx/datashard/datashard_write_operation.cpp @@ -89,8 +89,8 @@ bool TValidatedWriteTx::ParseRecord(const TDataShard::TTableInfos& tableInfos) { return false; } - NEvWrite::TPayloadHelper<NEvents::TDataEvents::TEvWrite> payloadHelper(*Ev->Get()); - TString payload = payloadHelper.GetDataFromPayload(RecordOperation().GetPayloadIndex()); + NEvWrite::TPayloadReader<NEvents::TDataEvents::TEvWrite> payloadReader(*Ev->Get()); + TString payload = payloadReader.GetDataFromPayload(RecordOperation().GetPayloadIndex()); if (!TSerializedCellMatrix::TryParse(payload,Matrix)) { diff --git a/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp b/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp index f79a3de14c25..6e2bc0886f64 100644 --- a/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp +++ b/ydb/core/tx/datashard/ut_common/datashard_ut_common.cpp @@ -1873,7 +1873,7 @@ std::unique_ptr<NEvents::TDataEvents::TEvWrite> MakeWriteRequest(ui64 txId, NKik UNIT_ASSERT(blobData.size() < 8_MB); auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(txId, txMode); - ui64 payloadIndex = NKikimr::NEvWrite::TPayloadHelper<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); + ui64 payloadIndex = NKikimr::NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_UPSERT, tableId, columnIds, payloadIndex, NKikimrDataEvents::FORMAT_CELLVEC); return evWrite; @@ -1974,7 +1974,7 @@ TTestActorRuntimeBase::TEventObserverHolderPair ReplaceEvProposeTransactionWithE std::iota(columnIds.begin(), columnIds.end(), 1); auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(txId, txMode); - ui64 payloadIndex = NKikimr::NEvWrite::TPayloadHelper<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); + ui64 payloadIndex = NKikimr::NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(blobData)); evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_UPSERT, tableId, columnIds, payloadIndex, NKikimrDataEvents::FORMAT_CELLVEC); // Copy locks diff --git a/ydb/core/tx/datashard/write_unit.cpp b/ydb/core/tx/datashard/write_unit.cpp index 15d4065b279c..c2fd1d0c174a 100644 --- a/ydb/core/tx/datashard/write_unit.cpp +++ b/ydb/core/tx/datashard/write_unit.cpp @@ -97,7 +97,7 @@ class TWriteUnit : public TExecutionUnit { self->IncCounter(COUNTER_WRITE_ROWS, matrix.GetRowCount()); self->IncCounter(COUNTER_WRITE_BYTES, matrix.GetBuffer().size()); - writeOp->SetWriteResult(NEvents::TDataEvents::TEvWriteResult::BuildCommited(self->TabletID(), writeOp->GetTxId())); + writeOp->SetWriteResult(NEvents::TDataEvents::TEvWriteResult::BuildCompleted(self->TabletID(), writeOp->GetTxId())); LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, "Executed write operation for " << *writeOp << " at " << self->TabletID()); } diff --git a/ydb/core/tx/program/program.h b/ydb/core/tx/program/program.h index dae9ae4d94a4..dfeb714a1481 100644 --- a/ydb/core/tx/program/program.h +++ b/ydb/core/tx/program/program.h @@ -90,15 +90,8 @@ class TProgramContainer { } } - std::shared_ptr<NArrow::TColumnFilter> ApplyEarlyFilter(std::shared_ptr<arrow::Table>& batch, const bool useFilter) const { - if (Program) { - return Program->ApplyEarlyFilter(batch, useFilter); - } else { - return nullptr; - } - } - - inline arrow::Status ApplyProgram(std::shared_ptr<arrow::RecordBatch>& batch) const { + template <class TDataContainer> + inline arrow::Status ApplyProgram(std::shared_ptr<TDataContainer>& batch) const { if (Program) { return Program->ApplyTo(batch, NArrow::GetCustomExecContext()); } else if (OverrideProcessingColumnsVector) { diff --git a/ydb/core/tx/schemeshard/common/validation.cpp b/ydb/core/tx/schemeshard/common/validation.cpp new file mode 100644 index 000000000000..51615e4e1119 --- /dev/null +++ b/ydb/core/tx/schemeshard/common/validation.cpp @@ -0,0 +1,30 @@ +#include "validation.h" + +namespace NKikimr::NSchemeShard::NValidation { + +bool TTTLValidator::ValidateUnit(const NScheme::TTypeId columnType, NKikimrSchemeOp::TTTLSettings::EUnit unit, TString& errStr) { + switch (columnType) { + case NScheme::NTypeIds::Date: + case NScheme::NTypeIds::Datetime: + case NScheme::NTypeIds::Timestamp: + if (unit != NKikimrSchemeOp::TTTLSettings::UNIT_AUTO) { + errStr = "To enable TTL on date type column 'DateTypeColumnModeSettings' should be specified"; + return false; + } + break; + case NScheme::NTypeIds::Uint32: + case NScheme::NTypeIds::Uint64: + case NScheme::NTypeIds::DyNumber: + if (unit == NKikimrSchemeOp::TTTLSettings::UNIT_AUTO) { + errStr = "To enable TTL on integral type column 'ValueSinceUnixEpochModeSettings' should be specified"; + return false; + } + break; + default: + errStr = "Unsupported column type"; + return false; + } + return true; +} + +} \ No newline at end of file diff --git a/ydb/core/tx/schemeshard/common/validation.h b/ydb/core/tx/schemeshard/common/validation.h new file mode 100644 index 000000000000..12d1e801e2ad --- /dev/null +++ b/ydb/core/tx/schemeshard/common/validation.h @@ -0,0 +1,13 @@ +#pragma once +#include <ydb/core/protos/flat_scheme_op.pb.h> +#include <ydb/public/lib/scheme_types/scheme_type_id.h> + +#include <util/generic/string.h> + +namespace NKikimr::NSchemeShard::NValidation { + +class TTTLValidator { +public: + static bool ValidateUnit(const NScheme::TTypeId columnType, NKikimrSchemeOp::TTTLSettings::EUnit unit, TString& errStr); +}; +} \ No newline at end of file diff --git a/ydb/core/tx/schemeshard/common/ya.make b/ydb/core/tx/schemeshard/common/ya.make new file mode 100644 index 000000000000..179f7adf4b9a --- /dev/null +++ b/ydb/core/tx/schemeshard/common/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +SRCS( + validation.cpp +) + +PEERDIR( + ydb/core/protos + ydb/public/lib/scheme_types +) + +END() diff --git a/ydb/core/tx/schemeshard/olap/columns/update.cpp b/ydb/core/tx/schemeshard/olap/columns/update.cpp index b84327227531..16d2bd448b66 100644 --- a/ydb/core/tx/schemeshard/olap/columns/update.cpp +++ b/ydb/core/tx/schemeshard/olap/columns/update.cpp @@ -3,6 +3,7 @@ #include <ydb/core/scheme/scheme_types_proto.h> #include <ydb/core/scheme_types/scheme_type_registry.h> #include <ydb/core/formats/arrow/serializer/abstract.h> +#include <ydb/core/formats/arrow/arrow_helpers.h> namespace NKikimr::NSchemeShard { @@ -14,6 +15,7 @@ namespace NKikimr::NSchemeShard { Name = columnSchema.GetName(); NotNullFlag = columnSchema.GetNotNull(); TypeName = columnSchema.GetType(); + StorageId = columnSchema.GetStorageId(); if (columnSchema.HasSerializer()) { NArrow::NSerialization::TSerializerContainer serializer; if (!serializer.DeserializeFromProto(columnSchema.GetSerializer())) { @@ -41,20 +43,33 @@ namespace NKikimr::NSchemeShard { return false; } - auto typeName = NMiniKQL::AdaptLegacyYqlType(TypeName); - Y_ABORT_UNLESS(AppData()->TypeRegistry); - const NScheme::IType* type = AppData()->TypeRegistry->GetType(typeName); - if (!type) { - errors.AddError(TStringBuilder() << "Type '" << typeName << "' specified for column '" << Name << "' is not supported"); - return false; - } - if (!NScheme::NTypeIds::IsYqlType(type->GetTypeId())) { - errors.AddError(TStringBuilder() << "Type '" << typeName << "' specified for column '" << Name << "' is not supported"); - return false;; + if (const auto& typeName = NMiniKQL::AdaptLegacyYqlType(TypeName); typeName.StartsWith("pg")) { + const auto typeDesc = NPg::TypeDescFromPgTypeName(typeName); + if (!(typeDesc && TOlapColumnAdd::IsAllowedPgType(NPg::PgTypeIdFromTypeDesc(typeDesc)))) { + errors.AddError(TStringBuilder() << "Type '" << typeName << "' specified for column '" << Name << "' is not supported"); + return false; + } + Type = NScheme::TTypeInfo(NScheme::NTypeIds::Pg, typeDesc); + } else { + Y_ABORT_UNLESS(AppData()->TypeRegistry); + const NScheme::IType* type = AppData()->TypeRegistry->GetType(typeName); + if (!type) { + errors.AddError(TStringBuilder() << "Type '" << typeName << "' specified for column '" << Name << "' is not supported"); + return false; + } + if (!NScheme::NTypeIds::IsYqlType(type->GetTypeId())) { + errors.AddError(TStringBuilder() << "Type '" << typeName << "' specified for column '" << Name << "' is not supported"); + return false;; + } + Type = NScheme::TTypeInfo(type->GetTypeId()); + if (!IsAllowedType(type->GetTypeId())){ + errors.AddError(TStringBuilder() << "Type '" << typeName << "' specified for column '" << Name << "' is not supported"); + return false; + } } - Type = NScheme::TTypeInfo(type->GetTypeId()); - if (!IsAllowedType(type->GetTypeId())){ - errors.AddError(TStringBuilder() << "Type '" << typeName << "' specified for column '" << Name << "' is not supported"); + const auto arrowTypeStatus = NArrow::GetArrowType(Type).status(); + if (!arrowTypeStatus.ok()) { + errors.AddError(TStringBuilder() << "Column '" << Name << "': " << arrowTypeStatus.ToString()); return false; } return true; @@ -63,6 +78,7 @@ namespace NKikimr::NSchemeShard { void TOlapColumnAdd::ParseFromLocalDB(const NKikimrSchemeOp::TOlapColumnDescription& columnSchema) { Name = columnSchema.GetName(); TypeName = columnSchema.GetType(); + StorageId = columnSchema.GetStorageId(); if (columnSchema.HasTypeInfo()) { Type = NScheme::TypeInfoModFromProtoColumnType( @@ -79,7 +95,7 @@ namespace NKikimr::NSchemeShard { Serializer = serializer; } else if (columnSchema.HasCompression()) { NArrow::NSerialization::TSerializerContainer serializer; - AFL_VERIFY(serializer.DeserializeFromProto(columnSchema.GetCompression())); + serializer.DeserializeFromProto(columnSchema.GetCompression()).Validate(); Serializer = serializer; } if (columnSchema.HasDictionaryEncoding()) { @@ -90,10 +106,15 @@ namespace NKikimr::NSchemeShard { NotNullFlag = columnSchema.GetNotNull(); } + bool TOlapColumnAdd::IsAllowedPgType(ui32 /*pgTypeId*/) { + return false; + } + void TOlapColumnAdd::Serialize(NKikimrSchemeOp::TOlapColumnDescription& columnSchema) const { columnSchema.SetName(Name); columnSchema.SetType(TypeName); columnSchema.SetNotNull(NotNullFlag); + columnSchema.SetStorageId(StorageId); if (Serializer) { Serializer->SerializeToProto(*columnSchema.MutableSerializer()); } @@ -110,6 +131,9 @@ namespace NKikimr::NSchemeShard { bool TOlapColumnAdd::ApplyDiff(const TOlapColumnDiff& diffColumn, IErrorCollector& errors) { Y_ABORT_UNLESS(GetName() == diffColumn.GetName()); + if (diffColumn.GetStorageId()) { + StorageId = *diffColumn.GetStorageId(); + } if (diffColumn.GetSerializer()) { Serializer = diffColumn.GetSerializer(); } @@ -139,9 +163,12 @@ namespace NKikimr::NSchemeShard { return true; } - bool TOlapColumnAdd::IsAllowedFirstPkType(ui32 typeId) { + bool TOlapColumnAdd::IsAllowedPkType(ui32 typeId) { switch (typeId) { + case NYql::NProto::Int8: case NYql::NProto::Uint8: // Byte + case NYql::NProto::Int16: + case NYql::NProto::Uint16: case NYql::NProto::Int32: case NYql::NProto::Uint32: case NYql::NProto::Int64: @@ -153,19 +180,9 @@ namespace NKikimr::NSchemeShard { case NYql::NProto::Timestamp: case NYql::NProto::Decimal: return true; - case NYql::NProto::Interval: - case NYql::NProto::DyNumber: - case NYql::NProto::Yson: - case NYql::NProto::Json: - case NYql::NProto::JsonDocument: - case NYql::NProto::Float: - case NYql::NProto::Double: - case NYql::NProto::Bool: - return false; default: - break; + return false; } - return false; } bool TOlapColumnsUpdate::Parse(const NKikimrSchemeOp::TAlterColumnTableSchema& alterRequest, IErrorCollector& errors) { @@ -232,11 +249,11 @@ namespace NKikimr::NSchemeShard { if (!column.ParseFromRequest(columnSchema, errors)) { return false; } - if (column.GetKeyOrder() && *column.GetKeyOrder() == 0) { - if (!TOlapColumnAdd::IsAllowedFirstPkType(column.GetType().GetTypeId())) { + if (column.IsKeyColumn()) { + if (!TOlapColumnAdd::IsAllowedPkType(column.GetType().GetTypeId())) { errors.AddError(NKikimrScheme::StatusSchemeError, TStringBuilder() - << "Type '" << column.GetType().GetTypeId() << "' specified for column '" << column.GetName() - << "' is not supported in first PK position"); + << "Type '" << column.GetTypeName() << "' specified for column '" << column.GetName() + << "' is not supported as primary key"); return false; } } diff --git a/ydb/core/tx/schemeshard/olap/columns/update.h b/ydb/core/tx/schemeshard/olap/columns/update.h index 26eb18a971af..1a29d648788e 100644 --- a/ydb/core/tx/schemeshard/olap/columns/update.h +++ b/ydb/core/tx/schemeshard/olap/columns/update.h @@ -14,9 +14,13 @@ class TOlapColumnDiff { YDB_READONLY_DEF(TString, Name); YDB_READONLY_DEF(NArrow::NSerialization::TSerializerContainer, Serializer); YDB_READONLY_DEF(NArrow::NDictionary::TEncodingDiff, DictionaryEncoding); + YDB_READONLY_DEF(std::optional<TString>, StorageId); public: bool ParseFromRequest(const NKikimrSchemeOp::TOlapColumnDiff& columnSchema, IErrorCollector& errors) { Name = columnSchema.GetName(); + if (!!columnSchema.GetStorageId()) { + StorageId = columnSchema.GetStorageId(); + } if (!Name) { errors.AddError("empty field name"); return false; @@ -41,6 +45,7 @@ class TOlapColumnAdd { YDB_READONLY_DEF(TString, Name); YDB_READONLY_DEF(TString, TypeName); YDB_READONLY_DEF(NScheme::TTypeInfo, Type); + YDB_READONLY_DEF(TString, StorageId); YDB_FLAG_ACCESSOR(NotNull, false); YDB_READONLY_DEF(std::optional<NArrow::NSerialization::TSerializerContainer>, Serializer); YDB_READONLY_DEF(std::optional<NArrow::NDictionary::TEncodingSettings>, DictionaryEncoding); @@ -57,7 +62,8 @@ class TOlapColumnAdd { return !!KeyOrder; } static bool IsAllowedType(ui32 typeId); - static bool IsAllowedFirstPkType(ui32 typeId); + static bool IsAllowedPkType(ui32 typeId); + static bool IsAllowedPgType(ui32 pgTypeId); }; class TOlapColumnsUpdate { diff --git a/ydb/core/tx/schemeshard/olap/indexes/schema.cpp b/ydb/core/tx/schemeshard/olap/indexes/schema.cpp index 4275e883711d..0f31bf0e2ede 100644 --- a/ydb/core/tx/schemeshard/olap/indexes/schema.cpp +++ b/ydb/core/tx/schemeshard/olap/indexes/schema.cpp @@ -6,12 +6,14 @@ namespace NKikimr::NSchemeShard { void TOlapIndexSchema::SerializeToProto(NKikimrSchemeOp::TOlapIndexDescription& indexSchema) const { indexSchema.SetId(Id); indexSchema.SetName(Name); + indexSchema.SetStorageId(StorageId); IndexMeta.SerializeToProto(indexSchema); } void TOlapIndexSchema::DeserializeFromProto(const NKikimrSchemeOp::TOlapIndexDescription& indexSchema) { Id = indexSchema.GetId(); Name = indexSchema.GetName(); + StorageId = indexSchema.GetStorageId(); AFL_VERIFY(IndexMeta.DeserializeFromProto(indexSchema))("incorrect_proto", indexSchema.DebugString()); } @@ -22,6 +24,9 @@ bool TOlapIndexSchema::ApplyUpdate(const TOlapSchema& currentSchema, const TOlap errors.AddError("different index classes: " + upsert.GetIndexConstructor().GetClassName() + " vs " + IndexMeta.GetClassName()); return false; } + if (upsert.GetStorageId()) { + StorageId = *upsert.GetStorageId(); + } auto object = upsert.GetIndexConstructor()->CreateIndexMeta(GetId(), GetName(), currentSchema, errors); if (!object) { return false; diff --git a/ydb/core/tx/schemeshard/olap/indexes/schema.h b/ydb/core/tx/schemeshard/olap/indexes/schema.h index 630016fe96a5..1aa302ecb826 100644 --- a/ydb/core/tx/schemeshard/olap/indexes/schema.h +++ b/ydb/core/tx/schemeshard/olap/indexes/schema.h @@ -10,6 +10,7 @@ class TOlapIndexSchema { using TBase = TOlapIndexUpsert; YDB_READONLY(ui32, Id, Max<ui32>()); YDB_READONLY_DEF(TString, Name); + YDB_READONLY_DEF(TString, StorageId); YDB_READONLY_DEF(NBackgroundTasks::TInterfaceProtoContainer<NOlap::NIndexes::IIndexMeta>, IndexMeta); public: TOlapIndexSchema() = default; diff --git a/ydb/core/tx/schemeshard/olap/indexes/update.cpp b/ydb/core/tx/schemeshard/olap/indexes/update.cpp index 596cba4b835c..727a21e7fae8 100644 --- a/ydb/core/tx/schemeshard/olap/indexes/update.cpp +++ b/ydb/core/tx/schemeshard/olap/indexes/update.cpp @@ -4,12 +4,19 @@ namespace NKikimr::NSchemeShard { void TOlapIndexUpsert::SerializeToProto(NKikimrSchemeOp::TOlapIndexRequested& requestedProto) const { requestedProto.SetName(Name); + if (StorageId && !!*StorageId) { + requestedProto.SetStorageId(*StorageId); + } IndexConstructor.SerializeToProto(requestedProto); } -void TOlapIndexUpsert::DeserializeFromProto(const NKikimrSchemeOp::TOlapIndexRequested& indexSchema) { +bool TOlapIndexUpsert::DeserializeFromProto(const NKikimrSchemeOp::TOlapIndexRequested& indexSchema) { Name = indexSchema.GetName(); + if (!!indexSchema.GetStorageId()) { + StorageId = indexSchema.GetStorageId(); + } AFL_VERIFY(IndexConstructor.DeserializeFromProto(indexSchema))("incorrect_proto", indexSchema.DebugString()); + return true; } bool TOlapIndexesUpdate::Parse(const NKikimrSchemeOp::TAlterColumnTableSchema& alterRequest, IErrorCollector& errors) { @@ -22,7 +29,7 @@ bool TOlapIndexesUpdate::Parse(const NKikimrSchemeOp::TAlterColumnTableSchema& a TSet<TString> upsertIndexNames; for (auto& indexSchema : alterRequest.GetUpsertIndexes()) { TOlapIndexUpsert index; - index.DeserializeFromProto(indexSchema); + AFL_VERIFY(index.DeserializeFromProto(indexSchema)); if (!upsertIndexNames.emplace(index.GetName()).second) { errors.AddError(NKikimrScheme::StatusAlreadyExists, TStringBuilder() << "index '" << index.GetName() << "' duplication for add"); return false; diff --git a/ydb/core/tx/schemeshard/olap/indexes/update.h b/ydb/core/tx/schemeshard/olap/indexes/update.h index f6d0f88fa312..4350c175b306 100644 --- a/ydb/core/tx/schemeshard/olap/indexes/update.h +++ b/ydb/core/tx/schemeshard/olap/indexes/update.h @@ -11,6 +11,7 @@ namespace NKikimr::NSchemeShard { private: YDB_READONLY_DEF(TString, Name); YDB_READONLY_DEF(TString, TypeName); + YDB_READONLY_DEF(std::optional<TString>, StorageId); protected: NBackgroundTasks::TInterfaceProtoContainer<NOlap::NIndexes::IIndexMetaConstructor> IndexConstructor; public: @@ -20,7 +21,7 @@ namespace NKikimr::NSchemeShard { return IndexConstructor; } - void DeserializeFromProto(const NKikimrSchemeOp::TOlapIndexRequested& requestedProto); + bool DeserializeFromProto(const NKikimrSchemeOp::TOlapIndexRequested& requestedProto); void SerializeToProto(NKikimrSchemeOp::TOlapIndexRequested& requestedProto) const; }; diff --git a/ydb/core/tx/schemeshard/olap/options/schema.cpp b/ydb/core/tx/schemeshard/olap/options/schema.cpp new file mode 100644 index 000000000000..f9bb47cdce0f --- /dev/null +++ b/ydb/core/tx/schemeshard/olap/options/schema.cpp @@ -0,0 +1,22 @@ +#include "schema.h" + +namespace NKikimr::NSchemeShard { + +bool TOlapOptionsDescription::ApplyUpdate(const TOlapOptionsUpdate& schemaUpdate, IErrorCollector& /*errors*/) { + SchemeNeedActualization = schemaUpdate.GetSchemeNeedActualization(); + return true; +} + +void TOlapOptionsDescription::Parse(const NKikimrSchemeOp::TColumnTableSchema& tableSchema) { + SchemeNeedActualization = tableSchema.GetOptions().GetSchemeNeedActualization(); +} + +void TOlapOptionsDescription::Serialize(NKikimrSchemeOp::TColumnTableSchema& tableSchema) const { + tableSchema.MutableOptions()->SetSchemeNeedActualization(SchemeNeedActualization); +} + +bool TOlapOptionsDescription::Validate(const NKikimrSchemeOp::TColumnTableSchema& /*opSchema*/, IErrorCollector& /*errors*/) const { + return true; +} + +} diff --git a/ydb/core/tx/schemeshard/olap/options/schema.h b/ydb/core/tx/schemeshard/olap/options/schema.h new file mode 100644 index 000000000000..ecaa79f69577 --- /dev/null +++ b/ydb/core/tx/schemeshard/olap/options/schema.h @@ -0,0 +1,18 @@ +#pragma once +#include "update.h" + +namespace NKikimr::NSchemeShard { + +class TOlapSchema; + +class TOlapOptionsDescription { +private: + YDB_READONLY(bool, SchemeNeedActualization, false); +public: + bool ApplyUpdate(const TOlapOptionsUpdate& schemaUpdate, IErrorCollector& errors); + + void Parse(const NKikimrSchemeOp::TColumnTableSchema& tableSchema); + void Serialize(NKikimrSchemeOp::TColumnTableSchema& tableSchema) const; + bool Validate(const NKikimrSchemeOp::TColumnTableSchema& opSchema, IErrorCollector& errors) const; +}; +} diff --git a/ydb/core/tx/schemeshard/olap/options/update.cpp b/ydb/core/tx/schemeshard/olap/options/update.cpp new file mode 100644 index 000000000000..1080546ffcc0 --- /dev/null +++ b/ydb/core/tx/schemeshard/olap/options/update.cpp @@ -0,0 +1,5 @@ +#include "update.h" + +namespace NKikimr::NSchemeShard { + +} diff --git a/ydb/core/tx/schemeshard/olap/options/update.h b/ydb/core/tx/schemeshard/olap/options/update.h new file mode 100644 index 000000000000..8e8afcf27359 --- /dev/null +++ b/ydb/core/tx/schemeshard/olap/options/update.h @@ -0,0 +1,22 @@ +#pragma once +#include <ydb/core/protos/flat_scheme_op.pb.h> + +#include <ydb/core/tx/schemeshard/olap/common/common.h> + +#include <ydb/library/accessor/accessor.h> + +namespace NKikimr::NSchemeShard { + + class TOlapOptionsUpdate { + private: + YDB_ACCESSOR(bool, SchemeNeedActualization, false); + public: + bool Parse(const NKikimrSchemeOp::TAlterColumnTableSchema& alterRequest, IErrorCollector& /*errors*/) { + SchemeNeedActualization = alterRequest.GetOptions().GetSchemeNeedActualization(); + return true; + } + void SerializeToProto(NKikimrSchemeOp::TAlterColumnTableSchema& alterRequest) const { + alterRequest.MutableOptions()->SetSchemeNeedActualization(SchemeNeedActualization); + } + }; +} diff --git a/ydb/core/tx/schemeshard/olap/options/ya.make b/ydb/core/tx/schemeshard/olap/options/ya.make new file mode 100644 index 000000000000..0303a9692f52 --- /dev/null +++ b/ydb/core/tx/schemeshard/olap/options/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +SRCS( + schema.cpp + update.cpp +) + +PEERDIR( + ydb/services/bg_tasks/abstract +) + +END() diff --git a/ydb/core/tx/schemeshard/olap/schema/schema.cpp b/ydb/core/tx/schemeshard/olap/schema/schema.cpp index ff7ba1bbe4ca..48a2f4ed6d29 100644 --- a/ydb/core/tx/schemeshard/olap/schema/schema.cpp +++ b/ydb/core/tx/schemeshard/olap/schema/schema.cpp @@ -1,93 +1,212 @@ #include "schema.h" +#include <ydb/core/tx/schemeshard/common/validation.h> +#include <ydb/core/tx/columnshard/engines/scheme/statistics/max/constructor.h> namespace NKikimr::NSchemeShard { - bool TOlapSchema::Update(const TOlapSchemaUpdate& schemaUpdate, IErrorCollector& errors) { - if (!Columns.ApplyUpdate(schemaUpdate.GetColumns(), errors, NextColumnId)) { - return false; - } +namespace { +static inline bool IsDropped(const TOlapColumnsDescription::TColumn& col) { + Y_UNUSED(col); + return false; +} + +static inline ui32 GetType(const TOlapColumnsDescription::TColumn& col) { + Y_ABORT_UNLESS(col.GetType().GetTypeId() != NScheme::NTypeIds::Pg, "pg types are not supported"); + return col.GetType().GetTypeId(); +} + +} + +static bool ValidateColumnTableTtl(const NKikimrSchemeOp::TColumnDataLifeCycle::TTtl& ttl, + const THashMap<ui32, TOlapColumnsDescription::TColumn>& sourceColumns, + const THashMap<ui32, TOlapColumnsDescription::TColumn>& alterColumns, + const THashMap<TString, ui32>& colName2Id, + IErrorCollector& errors) { + const TString colName = ttl.GetColumnName(); + + auto it = colName2Id.find(colName); + if (it == colName2Id.end()) { + errors.AddError(Sprintf("Cannot enable TTL on unknown column: '%s'", colName.data())); + return false; + } + + const TOlapColumnsDescription::TColumn* column = nullptr; + const ui32 colId = it->second; + if (alterColumns.contains(colId)) { + column = &alterColumns.at(colId); + } else if (sourceColumns.contains(colId)) { + column = &sourceColumns.at(colId); + } else { + Y_ABORT_UNLESS("Unknown column"); + } + + if (IsDropped(*column)) { + errors.AddError(Sprintf("Cannot enable TTL on dropped column: '%s'", colName.data())); + return false; + } + + if (ttl.HasExpireAfterBytes()) { + errors.AddError("TTL with eviction by size is not supported yet"); + return false; + } + + if (!ttl.HasExpireAfterSeconds()) { + errors.AddError("TTL without eviction time"); + return false; + } + + auto unit = ttl.GetColumnUnit(); - if (!Indexes.ApplyUpdate(*this, schemaUpdate.GetIndexes(), errors, NextColumnId)) { + switch (GetType(*column)) { + case NScheme::NTypeIds::DyNumber: + errors.AddError("Unsupported column type for TTL in column tables"); return false; - } + default: + break; + } + + TString errStr; + if (!NValidation::TTTLValidator::ValidateUnit(GetType(*column), unit, errStr)) { + errors.AddError(errStr); + return false; + } + return true; +} - if (!HasEngine()) { - Engine = schemaUpdate.GetEngineDef(NKikimrSchemeOp::COLUMN_ENGINE_REPLACING_TIMESERIES); - } else { - if (schemaUpdate.HasEngine()) { - errors.AddError(NKikimrScheme::StatusSchemeError, "No engine updates supported"); +bool TOlapSchema::ValidateTtlSettings(const NKikimrSchemeOp::TColumnDataLifeCycle& ttl, IErrorCollector& errors) const { + using TTtlProto = NKikimrSchemeOp::TColumnDataLifeCycle; + switch (ttl.GetStatusCase()) { + case TTtlProto::kEnabled: + { + const auto* column = Columns.GetByName(ttl.GetEnabled().GetColumnName()); + if (!column) { + errors.AddError("Incorrect ttl column - not found in scheme"); return false; } + if (!Statistics.GetByIdOptional(NOlap::NStatistics::EType::Max, {column->GetId()})) { + TOlapStatisticsModification modification; + NOlap::NStatistics::TConstructorContainer container(std::make_shared<NOlap::NStatistics::NMax::TConstructor>(column->GetName())); + modification.AddUpsert("__TTL_PROVIDER::" + TGUID::CreateTimebased().AsUuidString(), container); + if (!Statistics.ApplyUpdate(*this, modification, errors)) { + return false; + } + } + return ValidateColumnTableTtl(ttl.GetEnabled(), {}, Columns.GetColumns(), Columns.GetColumnsByName(), errors); } - - ++Version; - return true; + case TTtlProto::kDisabled: + default: + break; } - void TOlapSchema::ParseFromLocalDB(const NKikimrSchemeOp::TColumnTableSchema& tableSchema) { - NextColumnId = tableSchema.GetNextColumnId(); - Version = tableSchema.GetVersion(); - Y_ABORT_UNLESS(tableSchema.HasEngine()); - Engine = tableSchema.GetEngine(); - CompositeMarksFlag = tableSchema.GetCompositeMarks(); + return true; +} - Columns.Parse(tableSchema); - Indexes.Parse(tableSchema); +bool TOlapSchema::Update(const TOlapSchemaUpdate& schemaUpdate, IErrorCollector& errors) { + if (!Columns.ApplyUpdate(schemaUpdate.GetColumns(), errors, NextColumnId)) { + return false; } - void TOlapSchema::Serialize(NKikimrSchemeOp::TColumnTableSchema& tableSchema) const { - tableSchema.SetNextColumnId(NextColumnId); - tableSchema.SetVersion(Version); - tableSchema.SetCompositeMarks(CompositeMarksFlag); + if (!Indexes.ApplyUpdate(*this, schemaUpdate.GetIndexes(), errors, NextColumnId)) { + return false; + } - Y_ABORT_UNLESS(HasEngine()); - tableSchema.SetEngine(GetEngineUnsafe()); + if (!Statistics.ApplyUpdate(*this, schemaUpdate.GetStatistics(), errors)) { + return false; + } - Columns.Serialize(tableSchema); - Indexes.Serialize(tableSchema); + if (!Options.ApplyUpdate(schemaUpdate.GetOptions(), errors)) { + return false; } - bool TOlapSchema::Validate(const NKikimrSchemeOp::TColumnTableSchema& opSchema, IErrorCollector& errors) const { - if (!Columns.Validate(opSchema, errors)) { + if (!HasEngine()) { + Engine = schemaUpdate.GetEngineDef(NKikimrSchemeOp::COLUMN_ENGINE_REPLACING_TIMESERIES); + } else { + if (schemaUpdate.HasEngine()) { + errors.AddError(NKikimrScheme::StatusSchemeError, "No engine updates supported"); return false; } + } - if (!Indexes.Validate(opSchema, errors)) { - return false; - } + ++Version; + return true; +} - if (opSchema.GetEngine() != Engine) { - errors.AddError("Specified schema engine does not match schema preset"); - return false; - } - return true; +void TOlapSchema::ParseFromLocalDB(const NKikimrSchemeOp::TColumnTableSchema& tableSchema) { + NextColumnId = tableSchema.GetNextColumnId(); + Version = tableSchema.GetVersion(); + Y_ABORT_UNLESS(tableSchema.HasEngine()); + Engine = tableSchema.GetEngine(); + CompositeMarksFlag = tableSchema.GetCompositeMarks(); + + Columns.Parse(tableSchema); + Indexes.Parse(tableSchema); + Options.Parse(tableSchema); + Statistics.Parse(tableSchema); +} + +void TOlapSchema::Serialize(NKikimrSchemeOp::TColumnTableSchema& tableSchema) const { + tableSchema.SetNextColumnId(NextColumnId); + tableSchema.SetVersion(Version); + tableSchema.SetCompositeMarks(CompositeMarksFlag); + + Y_ABORT_UNLESS(HasEngine()); + tableSchema.SetEngine(GetEngineUnsafe()); + + Columns.Serialize(tableSchema); + Indexes.Serialize(tableSchema); + Options.Serialize(tableSchema); + Statistics.Serialize(tableSchema); +} + +bool TOlapSchema::Validate(const NKikimrSchemeOp::TColumnTableSchema& opSchema, IErrorCollector& errors) const { + if (!Columns.Validate(opSchema, errors)) { + return false; } - void TOlapStoreSchemaPreset::ParseFromLocalDB(const NKikimrSchemeOp::TColumnTableSchemaPreset& presetProto) { - Y_ABORT_UNLESS(presetProto.HasId()); - Y_ABORT_UNLESS(presetProto.HasName()); - Y_ABORT_UNLESS(presetProto.HasSchema()); - Id = presetProto.GetId(); - Name = presetProto.GetName(); - TOlapSchema::ParseFromLocalDB(presetProto.GetSchema()); + if (!Indexes.Validate(opSchema, errors)) { + return false; } - void TOlapStoreSchemaPreset::Serialize(NKikimrSchemeOp::TColumnTableSchemaPreset& presetProto) const { - presetProto.SetId(Id); - presetProto.SetName(Name); - TOlapSchema::Serialize(*presetProto.MutableSchema()); + if (!Options.Validate(opSchema, errors)) { + return false; } - bool TOlapStoreSchemaPreset::ParseFromRequest(const NKikimrSchemeOp::TColumnTableSchemaPreset& presetProto, IErrorCollector& errors) { - if (presetProto.HasId()) { - errors.AddError("Schema preset id cannot be specified explicitly"); - return false; - } - if (!presetProto.GetName()) { - errors.AddError("Schema preset name cannot be empty"); - return false; - } - Name = presetProto.GetName(); - return true; + if (!Statistics.Validate(opSchema, errors)) { + return false; + } + + if (opSchema.GetEngine() != Engine) { + errors.AddError("Specified schema engine does not match schema preset"); + return false; } + return true; +} + +void TOlapStoreSchemaPreset::ParseFromLocalDB(const NKikimrSchemeOp::TColumnTableSchemaPreset& presetProto) { + Y_ABORT_UNLESS(presetProto.HasId()); + Y_ABORT_UNLESS(presetProto.HasName()); + Y_ABORT_UNLESS(presetProto.HasSchema()); + Id = presetProto.GetId(); + Name = presetProto.GetName(); + TOlapSchema::ParseFromLocalDB(presetProto.GetSchema()); +} + +void TOlapStoreSchemaPreset::Serialize(NKikimrSchemeOp::TColumnTableSchemaPreset& presetProto) const { + presetProto.SetId(Id); + presetProto.SetName(Name); + TOlapSchema::Serialize(*presetProto.MutableSchema()); +} + +bool TOlapStoreSchemaPreset::ParseFromRequest(const NKikimrSchemeOp::TColumnTableSchemaPreset& presetProto, IErrorCollector& errors) { + if (presetProto.HasId()) { + errors.AddError("Schema preset id cannot be specified explicitly"); + return false; + } + if (!presetProto.GetName()) { + errors.AddError("Schema preset name cannot be empty"); + return false; + } + Name = presetProto.GetName(); + return true; +} } diff --git a/ydb/core/tx/schemeshard/olap/schema/schema.h b/ydb/core/tx/schemeshard/olap/schema/schema.h index ca9e8b14c64b..5cedea25de31 100644 --- a/ydb/core/tx/schemeshard/olap/schema/schema.h +++ b/ydb/core/tx/schemeshard/olap/schema/schema.h @@ -1,8 +1,11 @@ #pragma once #include <ydb/core/tx/schemeshard/olap/columns/update.h> #include <ydb/core/tx/schemeshard/olap/indexes/update.h> +#include <ydb/core/tx/schemeshard/olap/statistics/update.h> #include <ydb/core/tx/schemeshard/olap/columns/schema.h> #include <ydb/core/tx/schemeshard/olap/indexes/schema.h> +#include <ydb/core/tx/schemeshard/olap/options/schema.h> +#include <ydb/core/tx/schemeshard/olap/statistics/schema.h> #include "update.h" namespace NKikimr::NSchemeShard { @@ -12,12 +15,18 @@ namespace NKikimr::NSchemeShard { YDB_READONLY_OPT(NKikimrSchemeOp::EColumnTableEngine, Engine); YDB_READONLY_DEF(TOlapColumnsDescription, Columns); YDB_READONLY_DEF(TOlapIndexesDescription, Indexes); + YDB_READONLY_DEF(TOlapOptionsDescription, Options); + mutable TOlapStatisticsDescription Statistics; YDB_READONLY(ui32, NextColumnId, 1); YDB_READONLY(ui32, Version, 0); YDB_READONLY_FLAG(CompositeMarks, true); public: + const TOlapStatisticsDescription& GetStatistics() const { + return Statistics; + } + bool Update(const TOlapSchemaUpdate& schemaUpdate, IErrorCollector& errors); void ParseFromLocalDB(const NKikimrSchemeOp::TColumnTableSchema& tableSchema); @@ -26,7 +35,7 @@ namespace NKikimr::NSchemeShard { bool ValidateTtlSettings(const NKikimrSchemeOp::TColumnDataLifeCycle& ttlSettings, IErrorCollector& errors) const; }; - class TOlapStoreSchemaPreset : public TOlapSchema { + class TOlapStoreSchemaPreset: public TOlapSchema { private: using TBase = TOlapSchema; YDB_ACCESSOR_DEF(TString, Name); diff --git a/ydb/core/tx/schemeshard/olap/schema/update.cpp b/ydb/core/tx/schemeshard/olap/schema/update.cpp index 92d7d9038fb8..b78161394b78 100644 --- a/ydb/core/tx/schemeshard/olap/schema/update.cpp +++ b/ydb/core/tx/schemeshard/olap/schema/update.cpp @@ -23,6 +23,14 @@ namespace NKikimr::NSchemeShard { return false; } + if (!Statistics.Parse(alterRequest, errors)) { + return false; + } + + if (!Options.Parse(alterRequest, errors)) { + return false; + } + return true; } } diff --git a/ydb/core/tx/schemeshard/olap/schema/update.h b/ydb/core/tx/schemeshard/olap/schema/update.h index bb4173433f30..d61b97749a5d 100644 --- a/ydb/core/tx/schemeshard/olap/schema/update.h +++ b/ydb/core/tx/schemeshard/olap/schema/update.h @@ -1,10 +1,17 @@ #pragma once +#include <ydb/library/accessor/accessor.h> +#include <ydb/core/tx/schemeshard/olap/statistics/update.h> +#include <ydb/core/tx/schemeshard/olap/options/update.h> +#include <ydb/core/tx/schemeshard/olap/columns/update.h> +#include <ydb/core/tx/schemeshard/olap/indexes/update.h> namespace NKikimr::NSchemeShard { class TOlapSchemaUpdate { YDB_READONLY_DEF(TOlapColumnsUpdate, Columns); YDB_READONLY_DEF(TOlapIndexesUpdate, Indexes); + YDB_READONLY_DEF(TOlapOptionsUpdate, Options); + YDB_READONLY_DEF(TOlapStatisticsModification, Statistics); YDB_READONLY_OPT(NKikimrSchemeOp::EColumnTableEngine, Engine); public: bool Parse(const NKikimrSchemeOp::TColumnTableSchema& tableSchema, IErrorCollector& errors, bool allowNullKeys = false); diff --git a/ydb/core/tx/schemeshard/olap/schema/ya.make b/ydb/core/tx/schemeshard/olap/schema/ya.make index 9c21a43bbbb7..76b2d2d1c801 100644 --- a/ydb/core/tx/schemeshard/olap/schema/ya.make +++ b/ydb/core/tx/schemeshard/olap/schema/ya.make @@ -8,6 +8,8 @@ SRCS( PEERDIR( ydb/core/tx/schemeshard/olap/columns ydb/core/tx/schemeshard/olap/indexes + ydb/core/tx/schemeshard/olap/options + ydb/core/tx/schemeshard/common ) END() diff --git a/ydb/core/tx/schemeshard/olap/statistics/schema.cpp b/ydb/core/tx/schemeshard/olap/statistics/schema.cpp new file mode 100644 index 000000000000..af6f9e711d05 --- /dev/null +++ b/ydb/core/tx/schemeshard/olap/statistics/schema.cpp @@ -0,0 +1,92 @@ +#include "schema.h" +#include <ydb/library/accessor/validator.h> + +namespace NKikimr::NSchemeShard { + +void TOlapStatisticsSchema::SerializeToProto(NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) const { + Operator.SerializeToProto(proto); +} + +bool TOlapStatisticsSchema::DeserializeFromProto(const NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) { + AFL_VERIFY(Operator.DeserializeFromProto(proto))("incorrect_proto", proto.DebugString()); + return true; +} + +bool TOlapStatisticsSchema::ApplyUpdate(const TOlapSchema& /*currentSchema*/, const TOlapStatisticsUpsert& upsert, IErrorCollector& errors) { + AFL_VERIFY(upsert.GetName() == Operator.GetName()); + AFL_VERIFY(!!upsert.GetConstructor()); + if (upsert.GetConstructor().GetClassName() != Operator.GetClassName()) { + errors.AddError("different index classes: " + upsert.GetConstructor().GetClassName() + " vs " + Operator.GetClassName()); + return false; + } + errors.AddError("cannot modify statistics calculation for " + Operator.GetName() + ". not implemented currently."); + return false; +} + +bool TOlapStatisticsDescription::ApplyUpdate(const TOlapSchema& currentSchema, const TOlapStatisticsModification& schemaUpdate, IErrorCollector& errors) { + for (auto&& stat : schemaUpdate.GetUpsert()) { + auto* current = MutableByNameOptional(stat.GetName()); + if (current) { + if (!current->ApplyUpdate(currentSchema, stat, errors)) { + return false; + } + } else { + auto meta = stat.GetConstructor()->CreateOperator(stat.GetName(), currentSchema); + if (!meta) { + errors.AddError(meta.GetErrorMessage()); + return false; + } + TOlapStatisticsSchema object(meta.DetachResult()); + Y_ABORT_UNLESS(ObjectsByName.emplace(stat.GetName(), std::move(object)).second); + } + } + + for (const auto& name : schemaUpdate.GetDrop()) { + auto info = GetByNameOptional(name); + if (!info) { + errors.AddError(NKikimrScheme::StatusSchemeError, TStringBuilder() << "Unknown stat for drop: " << name); + return false; + } + AFL_VERIFY(ObjectsByName.erase(name)); + } + + return true; +} + +void TOlapStatisticsDescription::Parse(const NKikimrSchemeOp::TColumnTableSchema& tableSchema) { + for (const auto& proto : tableSchema.GetStatistics()) { + TOlapStatisticsSchema object; + AFL_VERIFY(object.DeserializeFromProto(proto)); + AFL_VERIFY(ObjectsByName.emplace(proto.GetName(), std::move(object)).second); + } +} + +void TOlapStatisticsDescription::Serialize(NKikimrSchemeOp::TColumnTableSchema& tableSchema) const { + for (const auto& object : ObjectsByName) { + object.second.SerializeToProto(*tableSchema.AddStatistics()); + } +} + +bool TOlapStatisticsDescription::Validate(const NKikimrSchemeOp::TColumnTableSchema& opSchema, IErrorCollector& errors) const { + THashSet<TString> usedObjects; + for (const auto& proto : opSchema.GetStatistics()) { + if (proto.GetName().empty()) { + errors.AddError("Statistic cannot have an empty name"); + return false; + } + + const TString& name = proto.GetName(); + if (!GetByNameOptional(name)) { + errors.AddError("Stat '" + name + "' does not match schema preset"); + return false; + } + + if (!usedObjects.emplace(proto.GetName()).second) { + errors.AddError("Column '" + name + "' is specified multiple times"); + return false; + } + } + return true; +} + +} diff --git a/ydb/core/tx/schemeshard/olap/statistics/schema.h b/ydb/core/tx/schemeshard/olap/statistics/schema.h new file mode 100644 index 000000000000..37a79fc17fdd --- /dev/null +++ b/ydb/core/tx/schemeshard/olap/statistics/schema.h @@ -0,0 +1,80 @@ +#pragma once +#include "update.h" + +namespace NKikimr::NSchemeShard { + +class TOlapSchema; + +class TOlapStatisticsSchema { +private: + YDB_READONLY_DEF(NOlap::NStatistics::TOperatorContainer, Operator); +public: + TOlapStatisticsSchema() = default; + + TOlapStatisticsSchema(const NOlap::NStatistics::TOperatorContainer& container) + : Operator(container) + { + AFL_VERIFY(container.GetName()); + } + + bool ApplyUpdate(const TOlapSchema& currentSchema, const TOlapStatisticsUpsert& upsert, IErrorCollector& errors); + + void SerializeToProto(NKikimrColumnShardStatisticsProto::TOperatorContainer& proto) const; + bool DeserializeFromProto(const NKikimrColumnShardStatisticsProto::TOperatorContainer& proto); +}; + +class TOlapStatisticsDescription { +public: + using TObjectsByName = THashMap<TString, TOlapStatisticsSchema>; + +private: + YDB_READONLY_DEF(TObjectsByName, ObjectsByName); +public: + const TOlapStatisticsSchema* GetByIdOptional(const NOlap::NStatistics::EType type, const std::vector<ui32>& entityIds) const noexcept { + for (auto&& i : ObjectsByName) { + if (!i.second.GetOperator()) { + continue; + } + if (i.second.GetOperator()->GetIdentifier() != NOlap::NStatistics::TIdentifier(type, entityIds)) { + continue; + } + return &i.second; + } + return nullptr; + } + + const TOlapStatisticsSchema* GetByNameOptional(const TString& name) const noexcept { + auto it = ObjectsByName.find(name); + if (it != ObjectsByName.end()) { + return &it->second; + } + return nullptr; + } + + const TOlapStatisticsSchema& GetByNameVerified(const TString& name) const noexcept { + auto object = GetByNameOptional(name); + AFL_VERIFY(object); + return *object; + } + + TOlapStatisticsSchema* MutableByNameOptional(const TString& name) noexcept { + auto it = ObjectsByName.find(name); + if (it != ObjectsByName.end()) { + return &it->second; + } + return nullptr; + } + + TOlapStatisticsSchema& MutableByNameVerified(const TString& name) noexcept { + auto* object = MutableByNameOptional(name); + AFL_VERIFY(object); + return *object; + } + + bool ApplyUpdate(const TOlapSchema& currentSchema, const TOlapStatisticsModification& schemaUpdate, IErrorCollector& errors); + + void Parse(const NKikimrSchemeOp::TColumnTableSchema& tableSchema); + void Serialize(NKikimrSchemeOp::TColumnTableSchema& tableSchema) const; + bool Validate(const NKikimrSchemeOp::TColumnTableSchema& opSchema, IErrorCollector& errors) const; +}; +} diff --git a/ydb/core/tx/schemeshard/olap/statistics/update.cpp b/ydb/core/tx/schemeshard/olap/statistics/update.cpp new file mode 100644 index 000000000000..1c82c07c300c --- /dev/null +++ b/ydb/core/tx/schemeshard/olap/statistics/update.cpp @@ -0,0 +1,35 @@ +#include "update.h" + +namespace NKikimr::NSchemeShard { + +void TOlapStatisticsUpsert::SerializeToProto(NKikimrColumnShardStatisticsProto::TConstructorContainer& requestedProto) const { + requestedProto.SetName(Name); + Constructor.SerializeToProto(requestedProto); +} + +bool TOlapStatisticsUpsert::DeserializeFromProto(const NKikimrColumnShardStatisticsProto::TConstructorContainer& proto) { + Name = proto.GetName(); + AFL_VERIFY(Constructor.DeserializeFromProto(proto))("incorrect_proto", proto.DebugString()); + return true; +} + +bool TOlapStatisticsModification::Parse(const NKikimrSchemeOp::TAlterColumnTableSchema& alterRequest, IErrorCollector& errors) { + for (const auto& name : alterRequest.GetDropStatistics()) { + if (!Drop.emplace(name).second) { + errors.AddError(NKikimrScheme::StatusInvalidParameter, "Duplicated statistics for drop"); + return false; + } + } + TSet<TString> upsertNames; + for (auto& schema : alterRequest.GetUpsertStatistics()) { + TOlapStatisticsUpsert stat; + AFL_VERIFY(stat.DeserializeFromProto(schema)); + if (!upsertNames.emplace(stat.GetName()).second) { + errors.AddError(NKikimrScheme::StatusAlreadyExists, TStringBuilder() << "stat '" << stat.GetName() << "' duplication for add"); + return false; + } + Upsert.emplace_back(std::move(stat)); + } + return true; +} +} diff --git a/ydb/core/tx/schemeshard/olap/statistics/update.h b/ydb/core/tx/schemeshard/olap/statistics/update.h new file mode 100644 index 000000000000..96558928acf3 --- /dev/null +++ b/ydb/core/tx/schemeshard/olap/statistics/update.h @@ -0,0 +1,43 @@ +#pragma once +#include <ydb/services/bg_tasks/abstract/interface.h> +#include <ydb/core/protos/flat_scheme_op.pb.h> +#include <ydb/core/tx/schemeshard/olap/common/common.h> +#include <ydb/library/accessor/accessor.h> +#include <ydb/core/tx/columnshard/engines/scheme/statistics/abstract/constructor.h> + +namespace NKikimr::NSchemeShard { + + class TOlapStatisticsUpsert { + private: + YDB_READONLY_DEF(TString, Name); + protected: + NOlap::NStatistics::TConstructorContainer Constructor; + public: + TOlapStatisticsUpsert() = default; + TOlapStatisticsUpsert(const TString& name, const NOlap::NStatistics::TConstructorContainer& constructor) + : Name(name) + , Constructor(constructor) + { + + } + + const NOlap::NStatistics::TConstructorContainer& GetConstructor() const { + return Constructor; + } + + bool DeserializeFromProto(const NKikimrColumnShardStatisticsProto::TConstructorContainer& requestedProto); + void SerializeToProto(NKikimrColumnShardStatisticsProto::TConstructorContainer& requestedProto) const; + }; + + class TOlapStatisticsModification { + private: + YDB_READONLY_DEF(TVector<TOlapStatisticsUpsert>, Upsert); + YDB_READONLY_DEF(TSet<TString>, Drop); + public: + void AddUpsert(const TString& name, const NOlap::NStatistics::TConstructorContainer container) { + Upsert.emplace_back(TOlapStatisticsUpsert(name, container)); + } + + bool Parse(const NKikimrSchemeOp::TAlterColumnTableSchema& alterRequest, IErrorCollector& errors); + }; +} diff --git a/ydb/core/tx/schemeshard/olap/statistics/ya.make b/ydb/core/tx/schemeshard/olap/statistics/ya.make new file mode 100644 index 000000000000..0303a9692f52 --- /dev/null +++ b/ydb/core/tx/schemeshard/olap/statistics/ya.make @@ -0,0 +1,12 @@ +LIBRARY() + +SRCS( + schema.cpp + update.cpp +) + +PEERDIR( + ydb/services/bg_tasks/abstract +) + +END() diff --git a/ydb/core/tx/schemeshard/olap/ya.make b/ydb/core/tx/schemeshard/olap/ya.make index 63e509c2630f..224d54e7e4cd 100644 --- a/ydb/core/tx/schemeshard/olap/ya.make +++ b/ydb/core/tx/schemeshard/olap/ya.make @@ -6,6 +6,8 @@ PEERDIR( ydb/core/tx/schemeshard/olap/schema ydb/core/tx/schemeshard/olap/common ydb/core/tx/schemeshard/olap/operations + ydb/core/tx/schemeshard/olap/statistics + ydb/core/tx/schemeshard/olap/options ) END() diff --git a/ydb/core/tx/schemeshard/schemeshard_info_types.cpp b/ydb/core/tx/schemeshard/schemeshard_info_types.cpp index fb0fdc3c3ba7..c138d4c781ed 100644 --- a/ydb/core/tx/schemeshard/schemeshard_info_types.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_info_types.cpp @@ -2252,7 +2252,7 @@ bool TOlapStoreInfo::ParseFromRequest(const NKikimrSchemeOp::TColumnStoreDescrip preset.SetProtoIndex(protoIndex++); TOlapSchemaUpdate schemaDiff; - if (!schemaDiff.Parse(presetProto.GetSchema(), errors, true)) { + if (!schemaDiff.Parse(presetProto.GetSchema(), errors)) { return false; } diff --git a/ydb/core/tx/schemeshard/schemeshard_validate_ttl.cpp b/ydb/core/tx/schemeshard/schemeshard_validate_ttl.cpp index 40a792d0f484..cc447f07015b 100644 --- a/ydb/core/tx/schemeshard/schemeshard_validate_ttl.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_validate_ttl.cpp @@ -1,60 +1,23 @@ #include "schemeshard_info_types.h" + +#include "common/validation.h" #include "olap/columns/schema.h" + #include <ydb/core/protos/flat_scheme_op.pb.h> namespace NKikimr { namespace NSchemeShard { -// Helper accessors for OLTP and OLAP tables that use different TColumn's namespace { - inline - bool IsDropped(const TOlapColumnsDescription::TColumn& col) { - Y_UNUSED(col); - return false; - } - - inline - ui32 GetType(const TOlapColumnsDescription::TColumn& col) { - Y_ABORT_UNLESS(col.GetType().GetTypeId() != NScheme::NTypeIds::Pg, "pg types are not supported"); - return col.GetType().GetTypeId(); - } - - inline - bool IsDropped(const TTableInfo::TColumn& col) { - return col.IsDropped(); - } +static inline bool IsDropped(const TTableInfo::TColumn& col) { + return col.IsDropped(); +} - inline - ui32 GetType(const TTableInfo::TColumn& col) { - Y_ABORT_UNLESS(col.PType.GetTypeId() != NScheme::NTypeIds::Pg, "pg types are not supported"); - return col.PType.GetTypeId(); - } +static inline ui32 GetType(const TTableInfo::TColumn& col) { + Y_ABORT_UNLESS(col.PType.GetTypeId() != NScheme::NTypeIds::Pg, "pg types are not supported"); + return col.PType.GetTypeId(); } -template <class TColumn> -bool ValidateUnit(const TColumn& column, NKikimrSchemeOp::TTTLSettings::EUnit unit, TString& errStr) { - switch (GetType(column)) { - case NScheme::NTypeIds::Date: - case NScheme::NTypeIds::Datetime: - case NScheme::NTypeIds::Timestamp: - if (unit != NKikimrSchemeOp::TTTLSettings::UNIT_AUTO) { - errStr = "To enable TTL on date type column 'DateTypeColumnModeSettings' should be specified"; - return false; - } - break; - case NScheme::NTypeIds::Uint32: - case NScheme::NTypeIds::Uint64: - case NScheme::NTypeIds::DyNumber: - if (unit == NKikimrSchemeOp::TTTLSettings::UNIT_AUTO) { - errStr = "To enable TTL on integral type column 'ValueSinceUnixEpochModeSettings' should be specified"; - return false; - } - break; - default: - errStr = "Unsupported column type"; - return false; - } - return true; } bool ValidateTtlSettings(const NKikimrSchemeOp::TTTLSettings& ttl, @@ -92,7 +55,7 @@ bool ValidateTtlSettings(const NKikimrSchemeOp::TTTLSettings& ttl, } const auto unit = enabled.GetColumnUnit(); - if (!ValidateUnit(*column, unit, errStr)) { + if (!NValidation::TTTLValidator::ValidateUnit(GetType(*column), unit, errStr)) { return false; } @@ -117,75 +80,4 @@ bool ValidateTtlSettings(const NKikimrSchemeOp::TTTLSettings& ttl, return true; } -static bool ValidateColumnTableTtl(const NKikimrSchemeOp::TColumnDataLifeCycle::TTtl& ttl, - const THashMap<ui32, TOlapColumnsDescription::TColumn>& sourceColumns, - const THashMap<ui32, TOlapColumnsDescription::TColumn>& alterColumns, - const THashMap<TString, ui32>& colName2Id, - IErrorCollector& errors) -{ - const TString colName = ttl.GetColumnName(); - - auto it = colName2Id.find(colName); - if (it == colName2Id.end()) { - errors.AddError(Sprintf("Cannot enable TTL on unknown column: '%s'", colName.data())); - return false; - } - - const TOlapColumnsDescription::TColumn* column = nullptr; - const ui32 colId = it->second; - if (alterColumns.contains(colId)) { - column = &alterColumns.at(colId); - } else if (sourceColumns.contains(colId)) { - column = &sourceColumns.at(colId); - } else { - Y_ABORT_UNLESS("Unknown column"); - } - - if (IsDropped(*column)) { - errors.AddError(Sprintf("Cannot enable TTL on dropped column: '%s'", colName.data())); - return false; - } - - if (ttl.HasExpireAfterBytes()) { - errors.AddError("TTL with eviction by size is not supported yet"); - return false; - } - - if (!ttl.HasExpireAfterSeconds()) { - errors.AddError("TTL without eviction time"); - return false; - } - - auto unit = ttl.GetColumnUnit(); - - switch (GetType(*column)) { - case NScheme::NTypeIds::DyNumber: - errors.AddError("Unsupported column type for TTL in column tables"); - return false; - default: - break; - } - - TString errStr; - if (!ValidateUnit(*column, unit, errStr)) { - errors.AddError(errStr); - return false; - } - return true; -} - -bool TOlapSchema::ValidateTtlSettings(const NKikimrSchemeOp::TColumnDataLifeCycle& ttl, IErrorCollector& errors) const { - using TTtlProto = NKikimrSchemeOp::TColumnDataLifeCycle; - - switch (ttl.GetStatusCase()) { - case TTtlProto::kEnabled: - return ValidateColumnTableTtl(ttl.GetEnabled(), {}, Columns.GetColumns(), Columns.GetColumnsByName(), errors); - case TTtlProto::kDisabled: - default: - break; - } - - return true; -} - }} diff --git a/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp b/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp index 16a2468863be..870c43429785 100644 --- a/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp +++ b/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp @@ -2345,7 +2345,7 @@ namespace NSchemeShardUT_Private { TSerializedCellMatrix matrix(cells, 1, 2); auto evWrite = std::make_unique<NKikimr::NEvents::TDataEvents::TEvWrite>(txId, NKikimrDataEvents::TEvWrite::MODE_IMMEDIATE); - ui64 payloadIndex = NKikimr::NEvWrite::TPayloadHelper<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(matrix.ReleaseBuffer())); + ui64 payloadIndex = NKikimr::NEvWrite::TPayloadWriter<NKikimr::NEvents::TDataEvents::TEvWrite>(*evWrite).AddDataToPayload(std::move(matrix.ReleaseBuffer())); evWrite->AddOperation(NKikimrDataEvents::TEvWrite::TOperation::OPERATION_UPSERT, tableId, columnIds, payloadIndex, NKikimrDataEvents::FORMAT_CELLVEC); ForwardToTablet(runtime, datashardTabletId, sender, evWrite.release()); diff --git a/ydb/core/tx/schemeshard/ut_olap/ut_olap.cpp b/ydb/core/tx/schemeshard/ut_olap/ut_olap.cpp index 06c25b6bdd61..31022e755581 100644 --- a/ydb/core/tx/schemeshard/ut_olap/ut_olap.cpp +++ b/ydb/core/tx/schemeshard/ut_olap/ut_olap.cpp @@ -38,9 +38,9 @@ static const TString defaultTableSchema = R"( } )"; -static const TVector<std::pair<TString, TTypeInfo>> defaultYdbSchema = { - {"timestamp", TTypeInfo(NTypeIds::Timestamp) }, - {"data", TTypeInfo(NTypeIds::Utf8) } +static const TVector<NArrow::NTest::TTestColumn> defaultYdbSchema = { + NArrow::NTest::TTestColumn("timestamp", TTypeInfo(NTypeIds::Timestamp) ), + NArrow::NTest::TTestColumn("data", TTypeInfo(NTypeIds::Utf8) ) }; }} @@ -65,7 +65,7 @@ Y_UNIT_TEST_SUITE(TOlap) { SchemaPresets { Name: "default" Schema { - Columns { Name: "timestamp" Type: "Timestamp" } + Columns { Name: "timestamp" Type: "Timestamp" NotNull: true } Columns { Name: "data" Type: "Utf8" } KeyColumnNames: "timestamp" Engine: COLUMN_ENGINE_REPLACING_TIMESERIES @@ -87,7 +87,7 @@ Y_UNIT_TEST_SUITE(TOlap) { SchemaPresets { Name: "default" Schema { - Columns { Name: "timestamp" Type: "Timestamp" } + Columns { Name: "timestamp" Type: "Timestamp" NotNull: true } Columns { Name: "data" Type: "Utf8" } KeyColumnNames: "timestamp" Engine: COLUMN_ENGINE_REPLACING_TIMESERIES diff --git a/ydb/core/tx/schemeshard/ut_olap/ya.make b/ydb/core/tx/schemeshard/ut_olap/ya.make index 8bf46e35dc57..231ca8a779b2 100644 --- a/ydb/core/tx/schemeshard/ut_olap/ya.make +++ b/ydb/core/tx/schemeshard/ut_olap/ya.make @@ -21,6 +21,8 @@ PEERDIR( ydb/core/formats ydb/core/tx ydb/core/tx/columnshard + ydb/core/tx/columnshard/test_helper + ydb/core/tx/columnshard/hooks/testing ydb/core/tx/schemeshard/ut_helpers ydb/library/yql/public/udf/service/exception_policy ) diff --git a/ydb/core/tx/schemeshard/ya.make b/ydb/core/tx/schemeshard/ya.make index 1c13a431f4a6..8658486694a8 100644 --- a/ydb/core/tx/schemeshard/ya.make +++ b/ydb/core/tx/schemeshard/ya.make @@ -259,6 +259,7 @@ PEERDIR( ydb/core/tablet_flat ydb/core/tx ydb/core/tx/datashard + ydb/core/tx/schemeshard/common ydb/core/tx/schemeshard/olap ydb/core/tx/scheme_board ydb/core/tx/tx_allocator_client diff --git a/ydb/core/tx/tiering/abstract/manager.cpp b/ydb/core/tx/tiering/abstract/manager.cpp new file mode 100644 index 000000000000..dc6f9c16cd1e --- /dev/null +++ b/ydb/core/tx/tiering/abstract/manager.cpp @@ -0,0 +1,12 @@ +#include "manager.h" +#include <ydb/library/actors/core/log.h> + +namespace NKikimr::NColumnShard { + +const NTiers::TManager& ITiersManager::GetManagerVerified(const TString& tierId) const { + auto* result = GetManagerOptional(tierId); + AFL_VERIFY(result)("tier_id", tierId); + return *result; +} + +} diff --git a/ydb/core/tx/tiering/abstract/manager.h b/ydb/core/tx/tiering/abstract/manager.h new file mode 100644 index 000000000000..994ecbfa6b4e --- /dev/null +++ b/ydb/core/tx/tiering/abstract/manager.h @@ -0,0 +1,18 @@ +#pragma once +#include <util/generic/string.h> +#include <map> + +namespace NKikimr::NColumnShard { +namespace NTiers { +class TManager; +} + +class ITiersManager { +public: + const NTiers::TManager& GetManagerVerified(const TString& tierId) const; + virtual const NTiers::TManager* GetManagerOptional(const TString& tierId) const = 0; + virtual const std::map<TString, NTiers::TManager>& GetManagers() const = 0; + virtual ~ITiersManager() = default; +}; + +} diff --git a/ydb/core/tx/tiering/abstract/ya.make b/ydb/core/tx/tiering/abstract/ya.make new file mode 100644 index 000000000000..cd240f0f8cd6 --- /dev/null +++ b/ydb/core/tx/tiering/abstract/ya.make @@ -0,0 +1,11 @@ +LIBRARY() + +SRCS( + manager.cpp +) + +PEERDIR( + ydb/library/actors/core +) + +END() diff --git a/ydb/core/tx/tiering/manager.cpp b/ydb/core/tx/tiering/manager.cpp index 4af8bfcf4704..85dd6d60c10b 100644 --- a/ydb/core/tx/tiering/manager.cpp +++ b/ydb/core/tx/tiering/manager.cpp @@ -108,7 +108,7 @@ TManager::TManager(const ui64 tabletId, const NActors::TActorId& tabletActorId, NArrow::NSerialization::TSerializerContainer ConvertCompression(const NKikimrSchemeOp::TCompressionOptions& compressionProto) { NArrow::NSerialization::TSerializerContainer container; - AFL_VERIFY(container.DeserializeFromProto(compressionProto)); + container.DeserializeFromProto(compressionProto).Validate(); return container; } @@ -176,12 +176,6 @@ TTiersManager& TTiersManager::Stop(const bool needStopActor) { return *this; } -const NTiers::TManager& TTiersManager::GetManagerVerified(const TString& tierId) const { - auto it = Managers.find(tierId); - Y_ABORT_UNLESS(it != Managers.end()); - return it->second; -} - const NTiers::TManager* TTiersManager::GetManagerOptional(const TString& tierId) const { auto it = Managers.find(tierId); if (it != Managers.end()) { @@ -200,24 +194,26 @@ NMetadata::NFetcher::ISnapshotsFetcher::TPtr TTiersManager::GetExternalDataManip THashMap<ui64, NKikimr::NOlap::TTiering> TTiersManager::GetTiering() const { THashMap<ui64, NKikimr::NOlap::TTiering> result; - if (!IsReady()) { - return result; - } + AFL_VERIFY(IsReady()); auto snapshotPtr = std::dynamic_pointer_cast<NTiers::TConfigsSnapshot>(Snapshot); Y_ABORT_UNLESS(snapshotPtr); auto& tierConfigs = snapshotPtr->GetTierConfigs(); for (auto&& i : PathIdTiering) { auto* tiering = snapshotPtr->GetTieringById(i.second); if (tiering) { + AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("path_id", i.first)("tiering_name", i.second)("event", "activation"); result.emplace(i.first, tiering->BuildOlapTiers()); for (auto& [pathId, pathTiering] : result) { for (auto& [name, tier] : pathTiering.GetTierByName()) { + AFL_VERIFY(name != NOlap::NTiering::NCommon::DeleteTierName); auto it = tierConfigs.find(name); if (it != tierConfigs.end()) { tier->SetSerializer(NTiers::ConvertCompression(it->second.GetCompression())); } } } + } else { + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("path_id", i.first)("tiering_name", i.second)("event", "not_found"); } } return result; diff --git a/ydb/core/tx/tiering/manager.h b/ydb/core/tx/tiering/manager.h index dd2c6767c87f..147ee27f54f8 100644 --- a/ydb/core/tx/tiering/manager.h +++ b/ydb/core/tx/tiering/manager.h @@ -1,7 +1,7 @@ #pragma once #include "external_data.h" -#include <functional> +#include "abstract/manager.h" #include <ydb/library/actors/core/actor_bootstrapped.h> #include <ydb/library/actors/core/actor.h> @@ -12,6 +12,8 @@ #include <ydb/library/accessor/accessor.h> +#include <functional> + namespace NKikimr::NColumnShard { namespace NTiers { @@ -43,16 +45,16 @@ class TManager { }; } -class TTiersManager { +class TTiersManager: public ITiersManager { private: class TActor; - using TManagers = std::unordered_map<TString, NTiers::TManager>; + using TManagers = std::map<TString, NTiers::TManager>; ui64 TabletId = 0; const TActorId TabletActorId; std::function<void(const TActorContext& ctx)> ShardCallback; TActor* Actor = nullptr; std::unordered_map<ui64, TString> PathIdTiering; - YDB_READONLY_DEF(TManagers, Managers); + TManagers Managers; std::shared_ptr<NMetadata::NSecret::TSnapshot> Secrets; NMetadata::NFetcher::ISnapshot::TPtr Snapshot; @@ -82,17 +84,13 @@ class TTiersManager { TTiersManager& Start(std::shared_ptr<TTiersManager> ownerPtr); TTiersManager& Stop(const bool needStopActor); - const NTiers::TManager& GetManagerVerified(const TString& tierId) const; - const NTiers::TManager* GetManagerOptional(const TString& tierId) const; - NMetadata::NFetcher::ISnapshotsFetcher::TPtr GetExternalDataManipulation() const; - - TManagers::const_iterator begin() const { - return Managers.begin(); + virtual const std::map<TString, NTiers::TManager>& GetManagers() const override { + AFL_VERIFY(IsReady()); + return Managers; } + virtual const NTiers::TManager* GetManagerOptional(const TString& tierId) const override; + NMetadata::NFetcher::ISnapshotsFetcher::TPtr GetExternalDataManipulation() const; - TManagers::const_iterator end() const { - return Managers.end(); - } }; } diff --git a/ydb/core/tx/tiering/rule/manager.cpp b/ydb/core/tx/tiering/rule/manager.cpp index bdcfac875c64..c6ea9e9f6130 100644 --- a/ydb/core/tx/tiering/rule/manager.cpp +++ b/ydb/core/tx/tiering/rule/manager.cpp @@ -15,6 +15,9 @@ NMetadata::NModifications::TOperationParsingResult TTieringRulesManager::DoBuild TInternalModificationContext& /*context*/) const { NMetadata::NInternal::TTableRecord result; result.SetColumn(TTieringRule::TDecoder::TieringRuleId, NMetadata::NInternal::TYDBValue::Utf8(settings.GetObjectId())); + if (settings.GetObjectId().StartsWith("$") || settings.GetObjectId().StartsWith("_")) { + return TConclusionStatus::Fail("tiering rule cannot start with '$', '_' characters"); + } { auto fValue = settings.GetFeaturesExtractor().Extract(TTieringRule::TDecoder::DefaultColumn); if (fValue) { diff --git a/ydb/core/tx/tiering/rule/object.cpp b/ydb/core/tx/tiering/rule/object.cpp index 64aa4ba58673..59d42bdb4c8e 100644 --- a/ydb/core/tx/tiering/rule/object.cpp +++ b/ydb/core/tx/tiering/rule/object.cpp @@ -25,7 +25,7 @@ NJson::TJsonValue TTieringRule::SerializeDescriptionToJson() const { return result; } -bool TTieringRule::DeserializeDescriptionFromJson(const NJson::TJsonValue & jsonInfo) { +bool TTieringRule::DeserializeDescriptionFromJson(const NJson::TJsonValue& jsonInfo) { const NJson::TJsonValue::TArray* rules; if (!jsonInfo["rules"].GetArrayPointer(&rules)) { return false; @@ -74,7 +74,7 @@ bool TTieringRule::DeserializeFromRecord(const TDecoder& decoder, const Ydb::Val NKikimr::NOlap::TTiering TTieringRule::BuildOlapTiers() const { NOlap::TTiering result; for (auto&& r : Intervals) { - result.Add(std::make_shared<NOlap::TTierInfo>(r.GetTierName(), r.GetDurationForEvict(), GetDefaultColumn())); + AFL_VERIFY(result.Add(std::make_shared<NOlap::TTierInfo>(r.GetTierName(), r.GetDurationForEvict(), GetDefaultColumn()))); } return result; } diff --git a/ydb/core/tx/tiering/tier/manager.cpp b/ydb/core/tx/tiering/tier/manager.cpp index d9e9834f974f..a64d2a7603ab 100644 --- a/ydb/core/tx/tiering/tier/manager.cpp +++ b/ydb/core/tx/tiering/tier/manager.cpp @@ -10,6 +10,9 @@ NMetadata::NModifications::TOperationParsingResult TTiersManager::DoBuildPatchFr { NMetadata::NInternal::TTableRecord result; result.SetColumn(TTierConfig::TDecoder::TierName, NMetadata::NInternal::TYDBValue::Utf8(settings.GetObjectId())); + if (settings.GetObjectId().StartsWith("$") || settings.GetObjectId().StartsWith("_")) { + return TConclusionStatus::Fail("tier name cannot start with '$', '_' characters"); + } { auto fConfig = settings.GetFeaturesExtractor().Extract(TTierConfig::TDecoder::TierConfig); if (fConfig) { diff --git a/ydb/core/tx/tiering/ut/ut_tiers.cpp b/ydb/core/tx/tiering/ut/ut_tiers.cpp index a398f00edd0a..252ab7e3fd66 100644 --- a/ydb/core/tx/tiering/ut/ut_tiers.cpp +++ b/ydb/core/tx/tiering/ut/ut_tiers.cpp @@ -28,6 +28,18 @@ using namespace NColumnShard; class TFastTTLCompactionController: public NKikimr::NYDBTest::ICSController { public: + virtual bool NeedForceCompactionBacketsConstruction() const override { + return true; + } + virtual ui64 GetSmallPortionSizeDetector(const ui64 /*def*/) const override { + return 0; + } + virtual TDuration GetOptimizerFreshnessCheckDuration(const TDuration /*defaultValue*/) const override { + return TDuration::Zero(); + } + virtual TDuration GetLagForCompactionBeforeTierings(const TDuration /*def*/) const override { + return TDuration::Zero(); + } virtual TDuration GetTTLDefaultWaitingDuration(const TDuration /*defaultValue*/) const override { return TDuration::Seconds(1); } @@ -548,7 +560,7 @@ Y_UNIT_TEST_SUITE(ColumnShardTiers) { Tests::TServer::TPtr server = new Tests::TServer(serverSettings); server->EnableGRpc(grpcPort); Tests::TClient client(serverSettings); - Tests::NCommon::TLoggerInit(server->GetRuntime()).SetComponents({ NKikimrServices::TX_COLUMNSHARD }).Initialize(); + Tests::NCommon::TLoggerInit(server->GetRuntime()).Clear().SetComponents({ NKikimrServices::TX_COLUMNSHARD }, "CS").Initialize(); auto& runtime = *server->GetRuntime(); // runtime.SetLogPriority(NKikimrServices::TX_PROXY, NLog::PRI_TRACE); @@ -563,11 +575,12 @@ Y_UNIT_TEST_SUITE(ColumnShardTiers) { // runtime.SetLogPriority(NKikimrServices::TX_PROXY_SCHEME_CACHE, NLog::PRI_DEBUG); TLocalHelper lHelper(*server); + lHelper.SetOptionalStorageId("__DEFAULT"); lHelper.StartSchemaRequest("CREATE OBJECT secretAccessKey ( " "TYPE SECRET) WITH (value = ak)"); lHelper.StartSchemaRequest("CREATE OBJECT secretSecretKey ( " - "TYPE SECRET) WITH (value = sk)"); - Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->SetSecretKey("sk"); + "TYPE SECRET) WITH (value = fakeSecret)"); + Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->SetSecretKey("fakeSecret"); lHelper.StartSchemaRequest("CREATE OBJECT tier1 ( " "TYPE TIER) WITH (tierConfig = `" + TierConfigProtoStr + "`)"); @@ -626,9 +639,7 @@ Y_UNIT_TEST_SUITE(ColumnShardTiers) { } UNIT_ASSERT(check); } -#ifdef S3_TEST_USAGE Cerr << "storage initialized..." << Endl; -#endif /* lHelper.DropTable("/Root/olapStore/olapTable"); lHelper.StartDataRequest("DELETE FROM `/Root/olapStore/olapTable`"); diff --git a/ydb/core/tx/tx_proxy/upload_rows_common_impl.cpp b/ydb/core/tx/tx_proxy/upload_rows_common_impl.cpp index 865bade5eb22..6d487a26016b 100644 --- a/ydb/core/tx/tx_proxy/upload_rows_common_impl.cpp +++ b/ydb/core/tx/tx_proxy/upload_rows_common_impl.cpp @@ -7,10 +7,24 @@ namespace NKikimr { : TBase("BulkUpsert") { RequestsCount = TBase::GetDeriviative("Requests/Count"); - RepliesCount = TBase::GetDeriviative("Replies/Count"); ReplyDuration = TBase::GetHistogram("Replies/Duration", NMonitoring::ExponentialHistogram(15, 2, 1)); RowsCount = TBase::GetDeriviative("Rows/Count"); PackageSize = TBase::GetHistogram("Rows/PackageSize", NMonitoring::ExponentialHistogram(15, 2, 10)); + + const google::protobuf::EnumDescriptor* descriptor = ::Ydb::StatusIds::StatusCode_descriptor(); + for (ui32 i = 0; i < (ui32)descriptor->value_count(); ++i) { + auto vDescription = descriptor->value(i); + CodesCount.emplace(vDescription->name(), CreateSubGroup("reply_code", vDescription->name()).GetDeriviative("Replies/Count")); + } + } + + void TUploadCounters::OnReply(const TDuration d, const ::Ydb::StatusIds::StatusCode code) const { + const TString name = ::Ydb::StatusIds::StatusCode_Name(code); + auto it = CodesCount.find(name); + Y_ABORT_UNLESS(it != CodesCount.end()); + it->second->Add(1); + ReplyDuration->Collect(d.MilliSeconds()); } + } diff --git a/ydb/core/tx/tx_proxy/upload_rows_common_impl.h b/ydb/core/tx/tx_proxy/upload_rows_common_impl.h index 0826905f9069..5b79cb5657d5 100644 --- a/ydb/core/tx/tx_proxy/upload_rows_common_impl.h +++ b/ydb/core/tx/tx_proxy/upload_rows_common_impl.h @@ -41,15 +41,12 @@ class TUploadCounters: public NColumnShard::TCommonCountersOwner { private: using TBase = NColumnShard::TCommonCountersOwner; NMonitoring::TDynamicCounters::TCounterPtr RequestsCount; - NMonitoring::TDynamicCounters::TCounterPtr RepliesCount; NMonitoring::THistogramPtr ReplyDuration; NMonitoring::TDynamicCounters::TCounterPtr RowsCount; NMonitoring::THistogramPtr PackageSize; - NMonitoring::TDynamicCounters::TCounterPtr FailsCount; - NMonitoring::THistogramPtr FailDuration; - + THashMap<TString, NMonitoring::TDynamicCounters::TCounterPtr> CodesCount; public: TUploadCounters(); @@ -59,15 +56,7 @@ class TUploadCounters: public NColumnShard::TCommonCountersOwner { PackageSize->Collect(rowsCount); } - void OnReply( const TDuration d) const { - RepliesCount->Add(1); - ReplyDuration->Collect(d.MilliSeconds()); - } - - void OnFail(const TDuration d) const { - FailsCount->Add(1); - FailDuration->Collect(d.MilliSeconds()); - } + void OnReply(const TDuration d, const ::Ydb::StatusIds::StatusCode code) const; }; @@ -265,8 +254,9 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit { NArrow::TArrowBatchBuilder batchBuilder(arrow::Compression::UNCOMPRESSED, NotNullColumns); batchBuilder.Reserve(rows.size()); // TODO: ReserveData() - if (!batchBuilder.Start(YdbSchema)) { - errorMessage = "Cannot make Arrow batch from rows"; + const auto startStatus = batchBuilder.Start(YdbSchema); + if (!startStatus.ok()) { + errorMessage = "Cannot make Arrow batch from rows: " + startStatus.ToString(); return {}; } @@ -357,7 +347,11 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit static bool SameDstType(NScheme::TTypeInfo type1, NScheme::TTypeInfo type2, bool allowConvert) { bool res = (type1 == type2); if (!res && allowConvert) { - res = (NArrow::GetArrowType(type1)->id() == NArrow::GetArrowType(type2)->id()); + auto arrowType1 = NArrow::GetArrowType(type1); + auto arrowType2 = NArrow::GetArrowType(type2); + if (arrowType1.ok() && arrowType2.ok()) { + res = (arrowType1.ValueUnsafe()->id() == arrowType2.ValueUnsafe()->id()); + } } return res; } @@ -688,15 +682,19 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit return ReplyWithError(Ydb::StatusIds::BAD_REQUEST, LogPrefix() << errorMessage, ctx); } if (!ColumnsToConvertInplace.empty()) { - Batch = NArrow::InplaceConvertColumns(Batch, ColumnsToConvertInplace); + auto convertResult = NArrow::InplaceConvertColumns(Batch, ColumnsToConvertInplace); + if (!convertResult.ok()) { + return ReplyWithError(Ydb::StatusIds::BAD_REQUEST, LogPrefix() << "Cannot convert arrow batch inplace:" << convertResult.status().ToString(), ctx); + } + Batch = *convertResult; } // Explicit types conversion if (!ColumnsToConvert.empty()) { - Batch = NArrow::ConvertColumns(Batch, ColumnsToConvert); - if (!Batch) { - errorMessage = "Cannot upsert arrow batch: one of data types has no conversion"; - return ReplyWithError(Ydb::StatusIds::BAD_REQUEST, LogPrefix() << errorMessage, ctx); + auto convertResult = NArrow::ConvertColumns(Batch, ColumnsToConvert); + if (!convertResult.ok()) { + return ReplyWithError(Ydb::StatusIds::BAD_REQUEST, LogPrefix() << "Cannot convert arrow batch:" << convertResult.status().ToString(), ctx); } + Batch = *convertResult; } } else { // TUploadColumnsRPCPublic::ExtractBatch() - NOT converted JsonDocument, DynNumbers, ... @@ -1125,7 +1123,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit TBase::Become(&TThis::StateWaitResults); // Sanity check: don't break when we don't have any shards for some reason - ReplyIfDone(ctx); + return ReplyIfDone(ctx); } void Handle(TEvents::TEvUndelivered::TPtr &ev, const TActorContext &ctx) { @@ -1134,7 +1132,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit ShardRepliesLeft.clear(); - ReplyIfDone(ctx); + return ReplyIfDone(ctx); } void Handle(TEvPipeCache::TEvDeliveryProblem::TPtr &ev, const TActorContext &ctx) { @@ -1143,7 +1141,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit SetError(Ydb::StatusIds::UNAVAILABLE, Sprintf("Failed to connect to shard %" PRIu64, ev->Get()->TabletId)); ShardRepliesLeft.erase(ev->Get()->TabletId); - ReplyIfDone(ctx); + return ReplyIfDone(ctx); } STFUNC(StateWaitResults) { @@ -1213,7 +1211,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit ShardRepliesLeft.erase(shardId); ShardUploadRetryStates.erase(shardId); - ReplyIfDone(ctx); + return ReplyIfDone(ctx); } void Handle(TEvDataShard::TEvOverloadReady::TPtr& ev, const TActorContext& ctx) { @@ -1247,7 +1245,7 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit RaiseIssue(NYql::TIssue(ErrorMessage)); } - ReplyWithResult(Status, ctx); + return ReplyWithResult(Status, ctx); } void ReplyWithError(::Ydb::StatusIds::StatusCode status, const TString& message, const TActorContext& ctx) { @@ -1256,11 +1254,11 @@ class TUploadRowsBase : public TActorBootstrapped<TUploadRowsBase<DerivedActivit SetError(status, message); Y_DEBUG_ABORT_UNLESS(ShardRepliesLeft.empty()); - ReplyIfDone(ctx); + return ReplyIfDone(ctx); } void ReplyWithResult(::Ydb::StatusIds::StatusCode status, const TActorContext& ctx) { - UploadCounters.OnReply(TAppData::TimeProvider->Now() - StartTime); + UploadCounters.OnReply(TAppData::TimeProvider->Now() - StartTime, status); SendResult(ctx, status); LOG_DEBUG_S(ctx, NKikimrServices::RPC_REQUEST, LogPrefix() << "completed with status " << status); diff --git a/ydb/core/wrappers/fake_storage.h b/ydb/core/wrappers/fake_storage.h index 510fb0c2ab4c..c672835c9874 100644 --- a/ydb/core/wrappers/fake_storage.h +++ b/ydb/core/wrappers/fake_storage.h @@ -17,7 +17,22 @@ class TFakeBucketStorage { private: mutable TMutex Mutex; TMap<TString, TString> Data; + static inline TAtomicCounter WritesCount; + static inline TAtomicCounter DeletesCount; public: + static i64 GetWritesCount() { + return WritesCount.Val(); + } + + static i64 GetDeletesCount() { + return DeletesCount.Val(); + } + + static void ResetWriteCounters() { + WritesCount = 0; + DeletesCount = 0; + } + TMap<TString, TString>::const_iterator begin() const { return Data.begin(); } @@ -28,6 +43,7 @@ class TFakeBucketStorage { return Data.size(); } void PutObject(const TString& objectId, const TString& data) { + WritesCount.Inc(); TGuard<TMutex> g(Mutex); Data[objectId] = data; } @@ -40,6 +56,8 @@ class TFakeBucketStorage { return it->second; } void Remove(const TString& objectId) { + DeletesCount.Inc(); + TGuard<TMutex> g(Mutex); Data.erase(objectId); } }; @@ -57,6 +75,19 @@ class TFakeExternalStorage { } public: TFakeExternalStorage() = default; + + static i64 GetWritesCount() { + return TFakeBucketStorage::GetWritesCount(); + } + + static i64 GetDeletesCount() { + return TFakeBucketStorage::GetDeletesCount(); + } + + static void ResetWriteCounters() { + return TFakeBucketStorage::ResetWriteCounters(); + } + const TFakeBucketStorage& GetBucket(const TString& bucketId) const { TGuard<TMutex> g(Mutex); auto it = BucketStorages.find(bucketId); @@ -106,12 +137,17 @@ class TFakeExternalStorageOperator: public IExternalStorageOperator { private: const TString Bucket; const TString SecretKey; + std::shared_ptr<TFakeExternalStorage> OwnedStorage; template <class TEvent> void ExecuteImpl(TEvent& ev) const { ev->Get()->MutableRequest().WithBucket(Bucket); Y_ABORT_UNLESS(SecretKey == Singleton<TFakeExternalStorage>()->GetSecretKey()); - Singleton<TFakeExternalStorage>()->Execute(ev, ReplyAdapter); + if (OwnedStorage) { + OwnedStorage->Execute(ev, ReplyAdapter); + } else { + Singleton<TFakeExternalStorage>()->Execute(ev, ReplyAdapter); + } } virtual TString DoDebugString() const override { @@ -119,9 +155,10 @@ class TFakeExternalStorageOperator: public IExternalStorageOperator { } public: - TFakeExternalStorageOperator(const TString& bucket, const TString& secretKey) + TFakeExternalStorageOperator(const TString& bucket, const TString& secretKey, const std::shared_ptr<TFakeExternalStorage> storage = {}) : Bucket(bucket) , SecretKey(secretKey) + , OwnedStorage(storage) { } virtual void Execute(TEvCheckObjectExistsRequest::TPtr& ev) const override { diff --git a/ydb/core/wrappers/s3_storage_config.cpp b/ydb/core/wrappers/s3_storage_config.cpp index b3a04794feda..ffc3016e2096 100644 --- a/ydb/core/wrappers/s3_storage_config.cpp +++ b/ydb/core/wrappers/s3_storage_config.cpp @@ -94,6 +94,41 @@ TS3User::~TS3User() { Singleton<TApiOwner>()->UnRef(); } +class TS3ThreadsPoolByEndpoint { +private: + + class TPool { + public: + std::shared_ptr<Aws::Utils::Threading::PooledThreadExecutor> Executor; + ui32 ThreadsCount = 0; + TPool(const std::shared_ptr<Aws::Utils::Threading::PooledThreadExecutor>& executor, const ui32 threadsCount) + : Executor(executor) + , ThreadsCount(threadsCount) + { + + } + }; + + THashMap<TString, TPool> Pools; + TMutex Mutex; + std::shared_ptr<Aws::Utils::Threading::PooledThreadExecutor> GetPoolImpl(const TString& endpoint, const ui32 threadsCount) { + TGuard<TMutex> g(Mutex); + auto it = Pools.find(endpoint); + if (it == Pools.end()) { + TPool pool(std::make_shared<Aws::Utils::Threading::PooledThreadExecutor>(threadsCount), threadsCount); + it = Pools.emplace(endpoint, std::move(pool)).first; + } else if (it->second.ThreadsCount < threadsCount) { + TPool pool(std::make_shared<Aws::Utils::Threading::PooledThreadExecutor>(threadsCount), threadsCount); + it->second = std::move(pool); + } + return it->second.Executor; + } +public: + static std::shared_ptr<Aws::Utils::Threading::PooledThreadExecutor> GetPool(const TString& endpoint, const ui32 threadsCount) { + return Singleton<TS3ThreadsPoolByEndpoint>()->GetPoolImpl(endpoint, threadsCount); + } +}; + Aws::Client::ClientConfiguration TS3ExternalStorageConfig::ConfigFromSettings(const NKikimrSchemeOp::TS3Settings& settings) { Aws::Client::ClientConfiguration config; @@ -107,10 +142,10 @@ Aws::Client::ClientConfiguration TS3ExternalStorageConfig::ConfigFromSettings(co if (settings.HasHttpRequestTimeoutMs()) { config.httpRequestTimeoutMs = settings.GetHttpRequestTimeoutMs(); } - config.executor = std::make_shared<Aws::Utils::Threading::PooledThreadExecutor>(1); + config.executor = TS3ThreadsPoolByEndpoint::GetPool(settings.GetEndpoint(), settings.GetExecutorThreadsCount()); config.enableTcpKeepAlive = true; // config.lowSpeedLimit = 0; - config.maxConnections = 5; + config.maxConnections = settings.HasMaxConnectionsCount() ? settings.GetMaxConnectionsCount() : settings.GetExecutorThreadsCount(); config.caPath = "/etc/ssl/certs"; switch (settings.GetScheme()) { diff --git a/ydb/library/actors/core/actor_bootstrapped.h b/ydb/library/actors/core/actor_bootstrapped.h index 70a6163bc53c..1776be51870b 100644 --- a/ydb/library/actors/core/actor_bootstrapped.h +++ b/ydb/library/actors/core/actor_bootstrapped.h @@ -16,7 +16,7 @@ namespace NActors { } STFUNC(StateBootstrap) { - Y_ABORT_UNLESS(ev->GetTypeRewrite() == TEvents::TSystem::Bootstrap, "Unexpected bootstrap message"); + Y_ABORT_UNLESS(ev->GetTypeRewrite() == TEvents::TSystem::Bootstrap, "Unexpected bootstrap message: %s", ev->GetTypeName().data()); using T = decltype(&TDerived::Bootstrap); TDerived& self = static_cast<TDerived&>(*this); if constexpr (std::is_invocable_v<T, TDerived, const TActorContext&>) { diff --git a/ydb/library/actors/prof/tag.cpp b/ydb/library/actors/prof/tag.cpp index 45328fb5cbb5..df798f002b90 100644 --- a/ydb/library/actors/prof/tag.cpp +++ b/ydb/library/actors/prof/tag.cpp @@ -121,12 +121,16 @@ namespace NProfiling { TSetThreadAllocTag* SetThreadAllocTag = SetThreadAllocTagFn(); } -TMemoryProfileGuard::TMemoryProfileGuard(const TString& id) - : Id(id) +TMemoryProfileGuard::TMemoryProfileGuard(const TString& id, const bool enabled) + : Id(enabled ? id : "") { - NProfiling::TMemoryTagScope::Reset(TLocalProcessKeyState<NActors::TActorActivityTag>::GetInstance().Register(Id + "-Start")); + if (enabled) { + NProfiling::TMemoryTagScope::Reset(TLocalProcessKeyState<NActors::TActorActivityTag>::GetInstance().Register(Id + "-Start")); + } } TMemoryProfileGuard::~TMemoryProfileGuard() { - NProfiling::TMemoryTagScope::Reset(TLocalProcessKeyState<NActors::TActorActivityTag>::GetInstance().Register(Id + "-Finish")); + if (Id) { + NProfiling::TMemoryTagScope::Reset(TLocalProcessKeyState<NActors::TActorActivityTag>::GetInstance().Register(Id + "-Finish")); + } } diff --git a/ydb/library/actors/prof/tag.h b/ydb/library/actors/prof/tag.h index 1624d9d1e0f9..cde3544bc3c6 100644 --- a/ydb/library/actors/prof/tag.h +++ b/ydb/library/actors/prof/tag.h @@ -78,7 +78,7 @@ class TMemoryProfileGuard: TNonCopyable { private: const TString Id; public: - TMemoryProfileGuard(const TString& id); + TMemoryProfileGuard(const TString& id, const bool enabled = true); ~TMemoryProfileGuard(); }; diff --git a/ydb/library/conclusion/result.h b/ydb/library/conclusion/result.h index 0d9af2fbdcde..cd4034a754c2 100644 --- a/ydb/library/conclusion/result.h +++ b/ydb/library/conclusion/result.h @@ -30,11 +30,13 @@ class TConclusion { Y_ABORT_UNLESS(IsFail()); } - TConclusion(TResult&& result) + template <class TResultArg> + TConclusion(TResultArg&& result) : Result(std::move(result)) { } - TConclusion(const TResult& result) + template <class TResultArg> + TConclusion(const TResultArg& result) : Result(result) { } @@ -78,8 +80,8 @@ class TConclusion { return IsFail(); } - explicit operator bool() const { - return IsSuccess(); + operator TConclusionStatus() const { + return GetError(); } const TString& GetErrorMessage() const { diff --git a/ydb/library/conclusion/status.cpp b/ydb/library/conclusion/status.cpp index e946a122914b..30b85520e24e 100644 --- a/ydb/library/conclusion/status.cpp +++ b/ydb/library/conclusion/status.cpp @@ -1,5 +1,10 @@ #include "status.h" +#include <ydb/library/actors/core/log.h> namespace NKikimr { +void TConclusionStatus::Validate() const { + AFL_VERIFY(Ok())("problem", GetErrorMessage()); +} + } diff --git a/ydb/library/conclusion/status.h b/ydb/library/conclusion/status.h index 86e018cd3407..97b45911c678 100644 --- a/ydb/library/conclusion/status.h +++ b/ydb/library/conclusion/status.h @@ -20,11 +20,17 @@ class TConclusionStatus { TConclusionStatus(const char* errorMessage, Ydb::StatusIds::StatusCode status = Ydb::StatusIds::INTERNAL_ERROR) : ErrorMessage(errorMessage) - , Status(status) - { + , Status(status) { + Y_ABORT_UNLESS(!!ErrorMessage); + } + + TConclusionStatus(const std::string& errorMessage, Ydb::StatusIds::StatusCode status = Ydb::StatusIds::INTERNAL_ERROR) + : ErrorMessage(TString(errorMessage.data(), errorMessage.size())) + , Status(status) { Y_ABORT_UNLESS(!!ErrorMessage); } public: + void Validate() const; const TString& GetErrorMessage() const { return ErrorMessage ? *ErrorMessage : Default<TString>(); @@ -42,10 +48,18 @@ class TConclusionStatus { return TConclusionStatus(errorMessage); } + static TConclusionStatus Fail(const std::string& errorMessage) { + return TConclusionStatus(errorMessage); + } + bool IsFail() const { return !Ok(); } + bool IsSuccess() const { + return Ok(); + } + bool Ok() const { return !ErrorMessage; } @@ -54,10 +68,6 @@ class TConclusionStatus { return !!ErrorMessage; } - explicit operator bool() const { - return Ok(); - } - static TConclusionStatus Success() { return TConclusionStatus(); } diff --git a/ydb/library/conclusion/ya.make b/ydb/library/conclusion/ya.make index dd50013dc5a4..e6e350a5a55a 100644 --- a/ydb/library/conclusion/ya.make +++ b/ydb/library/conclusion/ya.make @@ -7,6 +7,7 @@ SRCS( PEERDIR( ydb/public/api/protos + ydb/library/actors/core ) END() diff --git a/ydb/library/services/services.proto b/ydb/library/services/services.proto index 41b130bf408b..e78aee0f0699 100644 --- a/ydb/library/services/services.proto +++ b/ydb/library/services/services.proto @@ -72,6 +72,7 @@ enum EServiceKikimr { TX_COLUMNSHARD = 332; BLOB_CACHE = 333; TX_COLUMNSHARD_SCAN = 334; + TX_COLUMNSHARD_SCAN_MEMORY = 335; // BLOBSTORAGE again BS_HANDOFF = 298; diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp index 537f66baf7ee..b5d028c1dcb6 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp +++ b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp @@ -858,6 +858,8 @@ void TCommandList::Config(TConfig& config) { .StoreTrue(&Recursive); config.Opts->AddCharOption('1', "List one object per line") .StoreTrue(&FromNewLine); + config.Opts->AddCharOption('m', "Multithread recursive request") + .StoreTrue(&Multithread); AddFormats(config, { EOutputFormat::Pretty, EOutputFormat::Json }); config.SetFreeArgsMax(1); SetFreeArgTitle(0, "<path>", "Path to list"); @@ -877,6 +879,7 @@ int TCommandList::Run(TConfig& config) { ISchemePrinter::TSettings settings = { Path, Recursive, + Multithread, FromNewLine, FillSettings(NScheme::TListDirectorySettings()), FillSettings(NTable::TDescribeTableSettings().WithTableStatistics(true)) diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h index 080a5ac91a45..fe3a089305f3 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h +++ b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h @@ -102,6 +102,7 @@ class TCommandList : public TYdbOperationCommand, public TCommandWithPath, publi bool AdvancedMode = false; bool Recursive = false; bool FromNewLine = false; + bool Multithread = false; }; class TCommandPermissions : public TClientCommandTree { diff --git a/ydb/public/lib/ydb_cli/common/recursive_remove.cpp b/ydb/public/lib/ydb_cli/common/recursive_remove.cpp index d42b58fe4529..3c9946e29c55 100644 --- a/ydb/public/lib/ydb_cli/common/recursive_remove.cpp +++ b/ydb/public/lib/ydb_cli/common/recursive_remove.cpp @@ -72,18 +72,18 @@ template <typename TClient, typename TSettings> using TRemoveFunc = TStatus(*)(TClient&, const TString&, const TSettings&); template <typename TClient, typename TSettings> -TStatus Remove(TRemoveFunc<TClient, TSettings> func, TSchemeClient& schemeClient, TClient* client, const TSchemeEntry& entry, - ERecursiveRemovePrompt prompt, const TRemoveDirectorySettings& settings) +TStatus Remove(TRemoveFunc<TClient, TSettings> func, TSchemeClient& schemeClient, TClient* client, const ESchemeEntryType type, + const TString& path, ERecursiveRemovePrompt prompt, const TRemoveDirectorySettings& settings) { if (!client) { return TStatus(EStatus::GENERIC_ERROR, MakeIssues(TStringBuilder() << TypeName<TClient>() << " not specified")); } - if (Prompt(prompt, entry.Name, entry.Type, false)) { - auto status = func(*client, entry.Name, TSettings(settings)); - if (status.GetStatus() == EStatus::SCHEME_ERROR && schemeClient.DescribePath(entry.Name).ExtractValueSync().GetStatus() == EStatus::SCHEME_ERROR) { - Cerr << "WARNING: Couldn't delete path: \'" << entry.Name << "\'. It was probably already deleted in another process" << Endl; + if (Prompt(prompt, path, type, false)) { + auto status = func(*client, path, TSettings(settings)); + if (status.GetStatus() == EStatus::SCHEME_ERROR && schemeClient.DescribePath(path).ExtractValueSync().GetStatus() == EStatus::SCHEME_ERROR) { + Cerr << "WARNING: Couldn't delete path: \'" << path << "\'. It was probably already deleted in another process" << Endl; return TStatus(EStatus::SUCCESS, {}); } return status; @@ -93,26 +93,26 @@ TStatus Remove(TRemoveFunc<TClient, TSettings> func, TSchemeClient& schemeClient } TStatus Remove( - TSchemeClient& schemeClient, TTableClient* tableClient, TTopicClient* topicClient, const TSchemeEntry& entry, - ERecursiveRemovePrompt prompt, const TRemoveDirectorySettings& settings) + TSchemeClient& schemeClient, TTableClient* tableClient, TTopicClient* topicClient, const ESchemeEntryType type, + const TString& path, ERecursiveRemovePrompt prompt, const TRemoveDirectorySettings& settings) { - switch (entry.Type) { + switch (type) { case ESchemeEntryType::Directory: - return Remove(&RemoveDirectory, schemeClient, &schemeClient, entry, prompt, settings); + return Remove(&RemoveDirectory, schemeClient, &schemeClient, type, path, prompt, settings); case ESchemeEntryType::ColumnStore: - return Remove(&RemoveColumnStore, schemeClient, tableClient, entry, prompt, settings); + return Remove(&RemoveColumnStore, schemeClient, tableClient, type, path, prompt, settings); case ESchemeEntryType::ColumnTable: case ESchemeEntryType::Table: - return Remove(&RemoveTable, schemeClient, tableClient, entry, prompt, settings); + return Remove(&RemoveTable, schemeClient, tableClient, type, path, prompt, settings); case ESchemeEntryType::Topic: - return Remove(&RemoveTopic, schemeClient, topicClient, entry, prompt, settings); + return Remove(&RemoveTopic, schemeClient, topicClient, type, path, prompt, settings); default: return TStatus(EStatus::UNSUPPORTED, MakeIssues(TStringBuilder() - << "Unsupported entry type: " << entry.Type)); + << "Unsupported entry type: " << type)); } } @@ -144,7 +144,7 @@ TStatus RemoveDirectoryRecursive( // output order is: Root, Recursive(children)... // we need to reverse it to delete recursively for (auto it = recursiveListResult.Entries.rbegin(); it != recursiveListResult.Entries.rend(); ++it) { - if (auto result = Remove(schemeClient, tableClient, topicClient, *it, prompt, settings); !result.IsSuccess()) { + if (auto result = Remove(schemeClient, tableClient, topicClient, it->Type, it->Name, prompt, settings); !result.IsSuccess()) { return result; } if (createProgressBar) { @@ -189,7 +189,7 @@ NYdb::TStatus RemovePathRecursive(NScheme::TSchemeClient& schemeClient, NTable:: case ESchemeEntryType::ColumnStore: return RemoveDirectoryRecursive(schemeClient, tableClient, topicClient, path, prompt, settings, true, createProgressBar); default: - return Remove(schemeClient, &tableClient, &topicClient, entity.GetEntry(), prompt, settings); + return Remove(schemeClient, &tableClient, &topicClient, entity.GetEntry().Type, path, prompt, settings); } } } diff --git a/ydb/public/lib/ydb_cli/common/scheme_printers.cpp b/ydb/public/lib/ydb_cli/common/scheme_printers.cpp index 24fd0ce7945c..9175afc7e591 100644 --- a/ydb/public/lib/ydb_cli/common/scheme_printers.cpp +++ b/ydb/public/lib/ydb_cli/common/scheme_printers.cpp @@ -15,7 +15,7 @@ TSchemePrinterBase::TSchemePrinterBase(const TDriver& driver, TSettings&& settin {} void TSchemePrinterBase::Print() { - PrintDirectoryRecursive(Settings.Path, ""); + PrintDirectoryRecursive(Settings.Path, "").GetValueSync(); } bool TSchemePrinterBase::IsDirectoryLike(const NScheme::TSchemeEntry& entry) { @@ -24,30 +24,41 @@ bool TSchemePrinterBase::IsDirectoryLike(const NScheme::TSchemeEntry& entry) { || entry.Type == NScheme::ESchemeEntryType::ColumnStore; } -void TSchemePrinterBase::PrintDirectoryRecursive(const TString& fullPath, const TString& relativePath) { - NScheme::TListDirectoryResult result = SchemeClient.ListDirectory( +NThreading::TFuture<void> TSchemePrinterBase::PrintDirectoryRecursive(const TString& fullPath, const TString& relativePath) { + return SchemeClient.ListDirectory( fullPath, Settings.ListDirectorySettings - ).GetValueSync(); - ThrowOnError(result); + ).Apply([this, fullPath, relativePath](const NScheme::TAsyncListDirectoryResult& resultFuture) { + const auto& result = resultFuture.GetValueSync(); + ThrowOnError(result); - if (relativePath || IsDirectoryLike(result.GetEntry())) { - PrintDirectory(relativePath, result); - } else { - PrintEntry(relativePath, result.GetEntry()); - } + if (relativePath || IsDirectoryLike(result.GetEntry())) { + std::lock_guard g(Lock); + PrintDirectory(relativePath, result); + } else { + std::lock_guard g(Lock); + PrintEntry(relativePath, result.GetEntry()); + } - if (Settings.Recursive) { - for (const auto& child : result.GetChildren()) { - TString childRelativePath = relativePath + (relativePath ? "/" : "") + child.Name; - TString childFullPath = fullPath + "/" + child.Name; - if (IsDirectoryLike(child)) { - PrintDirectoryRecursive(childFullPath, childRelativePath); - } else { - PrintEntry(childRelativePath, child); + TVector<NThreading::TFuture<void>> childFutures; + if (Settings.Recursive) { + for (const auto& child : result.GetChildren()) { + TString childRelativePath = relativePath + (relativePath ? "/" : "") + child.Name; + TString childFullPath = fullPath + "/" + child.Name; + if (IsDirectoryLike(child)) { + childFutures.push_back(PrintDirectoryRecursive(childFullPath, childRelativePath)); + if (!Settings.Multithread) { + childFutures.back().Wait(); + childFutures.back().TryRethrow(); + } + } else { + std::lock_guard g(Lock); + PrintEntry(childRelativePath, child); + } } } - } + return NThreading::WaitExceptionOrAll(childFutures); + }); } NTable::TDescribeTableResult TSchemePrinterBase::DescribeTable(const TString& relativePath) { diff --git a/ydb/public/lib/ydb_cli/common/scheme_printers.h b/ydb/public/lib/ydb_cli/common/scheme_printers.h index 84b791d70b19..c8ca0a2fd322 100644 --- a/ydb/public/lib/ydb_cli/common/scheme_printers.h +++ b/ydb/public/lib/ydb_cli/common/scheme_printers.h @@ -13,6 +13,7 @@ class ISchemePrinter { struct TSettings { TString Path; bool Recursive; + bool Multithread; bool FromNewLine; NScheme::TListDirectorySettings ListDirectorySettings; NTable::TDescribeTableSettings DescribeTableSettings; @@ -37,13 +38,14 @@ class TSchemePrinterBase : public ISchemePrinter { NTable::TDescribeTableResult DescribeTable(const TString& relativePath); private: - void PrintDirectoryRecursive(const TString& fullPath, const TString& relativePath); + NThreading::TFuture<void> PrintDirectoryRecursive(const TString& fullPath, const TString& relativePath); static bool IsDirectoryLike(const NScheme::TSchemeEntry& entry); protected: NTable::TTableClient TableClient; NScheme::TSchemeClient SchemeClient; const TSettings Settings; + std::mutex Lock; }; class TDefaultSchemePrinter : public TSchemePrinterBase { diff --git a/ydb/services/bg_tasks/abstract/interface.h b/ydb/services/bg_tasks/abstract/interface.h index ff8565a353fa..fd556a2e60b0 100644 --- a/ydb/services/bg_tasks/abstract/interface.h +++ b/ydb/services/bg_tasks/abstract/interface.h @@ -332,7 +332,7 @@ class TInterfaceProtoContainer: public TCommonInterfaceContainer<IInterface> { if (!Object) { return result; } - result = Object->SerializeToProto(); + Object->SerializeToProto(result); TOperatorPolicy::SetClassName(result, Object->GetClassName()); return result; } diff --git a/ydb/services/metadata/common/ya.make b/ydb/services/metadata/common/ya.make index d7f364bbcdd4..59267fd0a1f0 100644 --- a/ydb/services/metadata/common/ya.make +++ b/ydb/services/metadata/common/ya.make @@ -9,7 +9,7 @@ PEERDIR( ydb/services/metadata/initializer ydb/services/metadata/abstract ydb/services/bg_tasks/abstract - ydb/core/tx/schemeshard + ydb/core/tx/scheme_cache ) YQL_LAST_ABI_VERSION() diff --git a/ydb/services/metadata/manager/abstract.h b/ydb/services/metadata/manager/abstract.h index 132afb8a8a12..71c49dbf8225 100644 --- a/ydb/services/metadata/manager/abstract.h +++ b/ydb/services/metadata/manager/abstract.h @@ -139,7 +139,7 @@ class IObjectOperationsManager: public IOperationsManager { TOperationParsingResult BuildPatchFromSettings(const NYql::TObjectSettingsImpl& settings, IOperationsManager::TInternalModificationContext& context) const { TOperationParsingResult result = DoBuildPatchFromSettings(settings, context); - if (result) { + if (result.IsSuccess()) { if (!settings.GetFeaturesExtractor().IsFinished()) { return TConclusionStatus::Fail("undefined params: " + settings.GetFeaturesExtractor().GetRemainedParamsString()); } diff --git a/ydb/services/metadata/secret/secret.h b/ydb/services/metadata/secret/secret.h index f0d35df9ce3d..70920091bf31 100644 --- a/ydb/services/metadata/secret/secret.h +++ b/ydb/services/metadata/secret/secret.h @@ -106,7 +106,9 @@ class TSecretIdOrValue { static std::optional<TSecretIdOrValue> DeserializeFromOptional(const NKikimrSchemeOp::TSecretableVariable& proto, const TString& secretInfo, const TString& defaultOwnerId = Default<TString>()) { if (proto.HasSecretId()) { return DeserializeFromProto(proto, defaultOwnerId); - } else if (secretInfo) { + } else if (proto.HasValue()) { + return DeserializeFromString(proto.GetValue().GetData()); + } if (secretInfo) { return DeserializeFromString(secretInfo, defaultOwnerId); } else { return {}; diff --git a/ydb/services/ydb/ydb_logstore_ut.cpp b/ydb/services/ydb/ydb_logstore_ut.cpp index 44b08f43c964..a85072d2ae88 100644 --- a/ydb/services/ydb/ydb_logstore_ut.cpp +++ b/ydb/services/ydb/ydb_logstore_ut.cpp @@ -163,7 +163,7 @@ Y_UNIT_TEST_SUITE(YdbLogStore) { } { // wrong schema: not supported PK - NYdb::NLogStore::TSchema logSchema(TestSchemaColumns(), {"json_payload", "resource_id"}); + NYdb::NLogStore::TSchema logSchema(TestSchemaColumns(EPrimitiveType::Double), {"json_payload", "resource_id"}); THashMap<TString, NYdb::NLogStore::TSchema> schemaPresets; schemaPresets["default"] = logSchema; NYdb::NLogStore::TLogStoreDescription storeDescr(4, schemaPresets); @@ -333,8 +333,10 @@ Y_UNIT_TEST_SUITE(YdbLogStore) { auto res = schemaClient.ListDirectory("/Root/LogStore/.sys").GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(res.GetStatus(), EStatus::SUCCESS, res.GetIssues().ToString()); auto children = res.GetChildren(); - UNIT_ASSERT_VALUES_EQUAL(children.size(), 1); - UNIT_ASSERT_VALUES_EQUAL(children[0].Name, "store_primary_index_stats"); + UNIT_ASSERT_VALUES_EQUAL(children.size(), 3); + UNIT_ASSERT_VALUES_EQUAL(children[0].Name, "store_primary_index_granule_stats"); + UNIT_ASSERT_VALUES_EQUAL(children[1].Name, "store_primary_index_portion_stats"); + UNIT_ASSERT_VALUES_EQUAL(children[2].Name, "store_primary_index_stats"); } { @@ -351,8 +353,10 @@ Y_UNIT_TEST_SUITE(YdbLogStore) { auto res = schemaClient.ListDirectory("/Root/LogStore/log1/.sys").GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(res.GetStatus(), EStatus::SUCCESS, res.GetIssues().ToString()); auto children = res.GetChildren(); - UNIT_ASSERT_VALUES_EQUAL(children.size(), 1); - UNIT_ASSERT_VALUES_EQUAL(children[0].Name, "primary_index_stats"); + UNIT_ASSERT_VALUES_EQUAL(children.size(), 3); + UNIT_ASSERT_VALUES_EQUAL(children[0].Name, "primary_index_granule_stats"); + UNIT_ASSERT_VALUES_EQUAL(children[1].Name, "primary_index_portion_stats"); + UNIT_ASSERT_VALUES_EQUAL(children[2].Name, "primary_index_stats"); } { diff --git a/ydb/services/ydb/ydb_olapstore_ut.cpp b/ydb/services/ydb/ydb_olapstore_ut.cpp index 00dd55c4cf93..d570e9cc73cc 100644 --- a/ydb/services/ydb/ydb_olapstore_ut.cpp +++ b/ydb/services/ydb/ydb_olapstore_ut.cpp @@ -374,9 +374,9 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { } } - Y_UNIT_TEST_TWIN(BulkUpsert, NotNull) { + Y_UNIT_TEST(BulkUpsert) { for (auto& [type, name] : allowedTypes) { - TestBulkUpsert<NotNull>(type); + TestBulkUpsert<true>(type); } } @@ -412,9 +412,9 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { CompareQueryResults(connection, "log1", "SELECT count(*) FROM <TABLE>;"); } - Y_UNIT_TEST_TWIN(ManyTables, NotNull) { + Y_UNIT_TEST(ManyTables) { for (auto& sharding : testShardingVariants) { - TestManyTables<NotNull>(sharding); + TestManyTables<true>(sharding); } } @@ -465,9 +465,9 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { } } - Y_UNIT_TEST_TWIN(DuplicateRows, NotNull) { + Y_UNIT_TEST(DuplicateRows) { for (auto& sharding : testShardingVariants) { - TestDuplicateRows<NotNull>(sharding); + TestDuplicateRows<true>(sharding); } } @@ -496,7 +496,7 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { CompareQueryResults(connection, "log1", query); } - Y_UNIT_TEST_TWIN(LogLast50, NotNull) { + Y_UNIT_TEST(LogLast50) { TString query(R"( SELECT `timestamp`, `resource_type`, `resource_id`, `uid`, `level`, `message` FROM <TABLE> @@ -505,11 +505,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogLast50ByResource, NotNull) { + Y_UNIT_TEST(LogLast50ByResource) { TString query(R"( SELECT `timestamp`, `resource_type`, `resource_id`, `uid`, `level`, `message` FROM <TABLE> @@ -519,11 +519,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogGrepNonExisting, NotNull) { + Y_UNIT_TEST(LogGrepNonExisting) { TString query(R"( SELECT `timestamp`, `resource_type`, `resource_id`, `uid`, `level`, `message` FROM <TABLE> @@ -533,11 +533,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogGrepExisting, NotNull) { + Y_UNIT_TEST(LogGrepExisting) { TString query(R"( SELECT `timestamp`, `resource_type`, `resource_id`, `uid`, `level`, `message` FROM <TABLE> @@ -547,11 +547,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogNonExistingRequest, NotNull) { + Y_UNIT_TEST(LogNonExistingRequest) { TString query(R"( $request_id = '0xfaceb00c'; @@ -563,11 +563,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogExistingRequest, NotNull) { + Y_UNIT_TEST(LogExistingRequest) { TString query(R"( $request_id = '1f'; @@ -579,11 +579,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogNonExistingUserId, NotNull) { + Y_UNIT_TEST(LogNonExistingUserId) { // Should be fixed after Arrow kernel implementation for JSON_VALUE // https://st.yandex-team.ru/KIKIMR-17903 TString query(R"( @@ -598,11 +598,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogExistingUserId, NotNull) { + Y_UNIT_TEST(LogExistingUserId) { // Should be fixed after Arrow kernel implementation for JSON_VALUE // https://st.yandex-team.ru/KIKIMR-17903 TString query(R"( @@ -617,11 +617,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogPagingBefore, NotNull) { + Y_UNIT_TEST(LogPagingBefore) { TString query(R"( PRAGMA kikimr.OptEnablePredicateExtract = "true"; @@ -639,11 +639,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogPagingBetween, NotNull) { + Y_UNIT_TEST(LogPagingBetween) { TString query(R"( PRAGMA kikimr.OptEnablePredicateExtract = "true"; @@ -667,11 +667,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogPagingAfter, NotNull) { + Y_UNIT_TEST(LogPagingAfter) { TString query(R"( PRAGMA kikimr.OptEnablePredicateExtract = "true"; @@ -695,11 +695,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogCountByResource, NotNull) { + Y_UNIT_TEST(LogCountByResource) { TString query(R"( SELECT count(*) FROM <TABLE> @@ -708,11 +708,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogWithUnionAllAscending, NotNull) { + Y_UNIT_TEST(LogWithUnionAllAscending) { TString query(R"( PRAGMA AnsiInForEmptyOrNullableItemsCollections; @@ -740,11 +740,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogWithUnionAllDescending, NotNull) { + Y_UNIT_TEST(LogWithUnionAllDescending) { TString query(R"( PRAGMA AnsiInForEmptyOrNullableItemsCollections; @@ -772,11 +772,11 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } - Y_UNIT_TEST_TWIN(LogTsRangeDescending, NotNull) { + Y_UNIT_TEST(LogTsRangeDescending) { TString query(R"( --PRAGMA AnsiInForEmptyOrNullableItemsCollections; @@ -794,7 +794,7 @@ Y_UNIT_TEST_SUITE(YdbOlapStore) { )"); for (auto& sharding : testShardingVariants) { - TestQuery<NotNull>(query, sharding); + TestQuery<true>(query, sharding); } } } diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-0 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-0 index 0b67e9ca81bc..4eceb750868b 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-0 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-0 @@ -121,6 +121,89 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": null, + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "GroupBy": { + "Aggregates": [ + { + "Column": { + "Id": 106 + }, + "Function": { + "Id": 2 + } + } + ] + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 106 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-1 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-1 index 764e1b46f706..65688d39bcba 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-1 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-1 @@ -105,7 +105,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -159,6 +160,128 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 41 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "GroupBy": { + "Aggregates": [ + { + "Column": { + "Id": 108 + }, + "Function": { + "Id": 2 + } + } + ] + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 108 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-10 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-10 index 0ffd1a2ec833..9f33d02c188c 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-10 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-10 @@ -137,7 +137,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -190,6 +191,146 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: Inc(state._yql_agg_0)}", + "GroupBy": "item.MobilePhoneModel", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "MobilePhoneModel", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 35 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 35 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-11 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-11 index f2e4dbd35814..5a7e23644bd9 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-11 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-11 @@ -140,7 +140,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -196,6 +197,150 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: Inc(state._yql_agg_0)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "MobilePhone", + "MobilePhoneModel", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 35 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 34 + }, + { + "Id": 35 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-12 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-12 index 81b5d4e191e2..52260ffa6573 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-12 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-12 @@ -111,7 +111,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -157,6 +158,129 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 40 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 40 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-13 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-13 index b6ec7103da35..a6e7d891a6c4 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-13 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-13 @@ -137,7 +137,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -190,6 +191,146 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: Inc(state._yql_agg_0)}", + "GroupBy": "item.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 40 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 40 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-14 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-14 index da4229ffa66f..8a33167f74fa 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-14 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-14 @@ -113,7 +113,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -162,6 +163,133 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchEngineID", + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 40 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 39 + }, + { + "Id": 40 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-15 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-15 index 6c67a5701a18..bc0e96d7a83a 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-15 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-15 @@ -121,6 +121,92 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.UserID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-16 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-16 index 586eef700395..628fd15e1cff 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-16 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-16 @@ -126,6 +126,96 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 40 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-17 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-17 index 9bc0c3c3ba33..ab3fea86d54e 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-17 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-17 @@ -122,6 +122,95 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 40 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-18 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-18 index ba67374831bf..456455447ec9 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-18 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-18 @@ -131,6 +131,100 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "EventTime", + "SearchPhrase", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 5 + }, + { + "Id": 40 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-19 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-19 index b80b9480bc63..b22a43b135ff 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-19 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-19 @@ -87,7 +87,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 11 } } }, @@ -126,6 +127,116 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1001", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1001", + "Name": "Limit" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "UserID" + ], + "ReadLimit": "1001", + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Int64": 435090932899640449 + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 10 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 11 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 5 + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-2 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-2 index 2154f5e92c70..2b7f77641b38 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-2 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-2 @@ -16,12 +16,21 @@ "Plans": [ { "CTE Name": "precompute_0_0", - "Node Type": "ConstantExpr", + "Node Type": "ConstantExpr-ConstantExpr", "Operators": [ { - "Inputs": [], + "Inputs": [ + { + "InternalOperatorId": 1 + } + ], "Iterator": "precompute_0_0", "Name": "Iterator" + }, + { + "Inputs": [], + "Member": "precompute_0_0", + "Name": "Member" } ], "PlanNodeId": 6 @@ -172,6 +181,260 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "ResolutionWidth" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "GroupBy": { + "Aggregates": [ + { + "Column": { + "Id": 106 + }, + "Function": { + "Arguments": [ + { + "Id": 21 + } + ], + "Id": 5 + } + }, + { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 21 + } + ], + "Id": 2 + } + }, + { + "Column": { + "Id": 108 + }, + "Function": { + "Id": 2 + } + }, + { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 41 + } + ], + "Id": 5 + } + } + ] + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 107 + }, + { + "Id": 106 + }, + { + "Id": 108 + }, + { + "Id": 109 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + }, + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 11, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "ResolutionWidth" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "GroupBy": { + "Aggregates": [ + { + "Column": { + "Id": 106 + }, + "Function": { + "Arguments": [ + { + "Id": 21 + } + ], + "Id": 5 + } + }, + { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 21 + } + ], + "Id": 2 + } + }, + { + "Column": { + "Id": 108 + }, + "Function": { + "Id": 2 + } + }, + { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 41 + } + ], + "Id": 5 + } + } + ] + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 107 + }, + { + "Id": 106 + }, + { + "Id": 108 + }, + { + "Id": 109 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 13 + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-20 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-20 index 8dc1e19f8a34..ad9f9f48b03e 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-20 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-20 @@ -105,7 +105,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 10 } } }, @@ -159,6 +160,128 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "google" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 14 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 10 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "GroupBy": { + "Aggregates": [ + { + "Column": { + "Id": 108 + }, + "Function": { + "Id": 2 + } + } + ] + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 108 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-21 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-21 index 602516439293..203b0afaf361 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-21 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-21 @@ -112,7 +112,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -151,7 +152,8 @@ } ], "FunctionType": 2, - "KernelIdx": 1 + "KernelIdx": 1, + "YqlOperationId": 10 } } }, @@ -200,6 +202,173 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1),_yql_agg_1: MIN(item.URL,state._yql_agg_1)}", + "GroupBy": "item.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 40 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": {} + }, + { + "Assign": { + "Column": { + "Id": 108 + }, + "Constant": { + "Bytes": "google" + } + } + }, + { + "Assign": { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 14 + }, + { + "Id": 108 + } + ], + "FunctionType": 2, + "KernelIdx": 1, + "YqlOperationId": 10 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 109 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 40 + }, + { + "Id": 14 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-22 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-22 index a46a508f1624..f4b956138363 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-22 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-22 @@ -136,7 +136,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -175,7 +176,8 @@ } ], "FunctionType": 2, - "KernelIdx": 1 + "KernelIdx": 1, + "YqlOperationId": 10 } } }, @@ -204,7 +206,8 @@ } ], "FunctionType": 2, - "KernelIdx": 2 + "KernelIdx": 2, + "YqlOperationId": 10 } } }, @@ -239,7 +242,8 @@ } ], "FunctionType": 2, - "KernelIdx": 4 + "KernelIdx": 4, + "YqlOperationId": 0 } } }, @@ -370,7 +374,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -409,7 +414,8 @@ } ], "FunctionType": 2, - "KernelIdx": 1 + "KernelIdx": 1, + "YqlOperationId": 10 } } }, @@ -438,7 +444,8 @@ } ], "FunctionType": 2, - "KernelIdx": 2 + "KernelIdx": 2, + "YqlOperationId": 10 } } }, @@ -473,7 +480,8 @@ } ], "FunctionType": 2, - "KernelIdx": 4 + "KernelIdx": 4, + "YqlOperationId": 0 } } }, @@ -536,6 +544,473 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Union", + "Operators": [ + { + "Name": "Union" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1),_yql_agg_2: MIN(item.URL,state._yql_agg_2),_yql_agg_3: MIN(item.Title,state._yql_agg_3)}", + "GroupBy": "item.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "Title", + "URL", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 40 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": {} + }, + { + "Assign": { + "Column": { + "Id": 108 + }, + "Constant": { + "Bytes": "Google" + } + } + }, + { + "Assign": { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 3 + }, + { + "Id": 108 + } + ], + "FunctionType": 2, + "KernelIdx": 1, + "YqlOperationId": 10 + } + } + }, + { + "Assign": { + "Column": { + "Id": 110 + }, + "Constant": { + "Bytes": ".google." + } + } + }, + { + "Assign": { + "Column": { + "Id": 111 + }, + "Function": { + "Arguments": [ + { + "Id": 14 + }, + { + "Id": 110 + } + ], + "FunctionType": 2, + "KernelIdx": 2, + "YqlOperationId": 10 + } + } + }, + { + "Assign": { + "Column": { + "Id": 112 + }, + "Function": { + "Arguments": [ + { + "Id": 111 + } + ], + "FunctionType": 2, + "KernelIdx": 3 + } + } + }, + { + "Assign": { + "Column": { + "Id": 113 + }, + "Function": { + "Arguments": [ + { + "Id": 109 + }, + { + "Id": 112 + } + ], + "FunctionType": 2, + "KernelIdx": 4, + "YqlOperationId": 0 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 113 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 40 + }, + { + "Id": 3 + }, + { + "Id": 14 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 9 + } + ] + }, + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: Inc(state._yql_agg_1)}", + "GroupBy": "item.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 11, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 13, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "Title", + "URL", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 40 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": {} + }, + { + "Assign": { + "Column": { + "Id": 108 + }, + "Constant": { + "Bytes": "Google" + } + } + }, + { + "Assign": { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 3 + }, + { + "Id": 108 + } + ], + "FunctionType": 2, + "KernelIdx": 1, + "YqlOperationId": 10 + } + } + }, + { + "Assign": { + "Column": { + "Id": 110 + }, + "Constant": { + "Bytes": ".google." + } + } + }, + { + "Assign": { + "Column": { + "Id": 111 + }, + "Function": { + "Arguments": [ + { + "Id": 14 + }, + { + "Id": 110 + } + ], + "FunctionType": 2, + "KernelIdx": 2, + "YqlOperationId": 10 + } + } + }, + { + "Assign": { + "Column": { + "Id": 112 + }, + "Function": { + "Arguments": [ + { + "Id": 111 + } + ], + "FunctionType": 2, + "KernelIdx": 3 + } + } + }, + { + "Assign": { + "Column": { + "Id": 113 + }, + "Function": { + "Arguments": [ + { + "Id": 109 + }, + { + "Id": 112 + } + ], + "FunctionType": 2, + "KernelIdx": 4, + "YqlOperationId": 0 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 113 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 40 + }, + { + "Id": 3 + }, + { + "Id": 14 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 14 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-23 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-23 index d357d2739fb8..69acb20b12ce 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-23 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-23 @@ -192,7 +192,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 10 } } }, @@ -546,6 +547,533 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "$4.EventTime" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "Age", + "BrowserCountry", + "BrowserLanguage", + "CLID", + "ClientEventTime", + "ClientIP", + "ClientTimeZone", + "CodeVersion", + "ConnectTiming", + "CookieEnable", + "CounterClass", + "CounterID", + "DNSTiming", + "DontCountHits", + "EventDate", + "EventTime", + "FUniqID", + "FetchTiming", + "FlashMajor", + "FlashMinor", + "FlashMinor2", + "FromTag", + "GoodEvent", + "HID", + "HTTPError", + "HasGCLID", + "HistoryLength", + "HitColor", + "IPNetworkID", + "Income", + "Interests", + "IsArtifical", + "IsDownload", + "IsEvent", + "IsLink", + "IsMobile", + "IsNotBounce", + "IsOldCounter", + "IsParameter", + "IsRefresh", + "JavaEnable", + "JavascriptEnable", + "LocalEventTime", + "MobilePhone", + "MobilePhoneModel", + "NetMajor", + "NetMinor", + "OS", + "OpenerName", + "OpenstatAdID", + "OpenstatCampaignID", + "OpenstatServiceName", + "OpenstatSourceID", + "OriginalURL", + "PageCharset", + "ParamCurrency", + "ParamCurrencyID", + "ParamOrderID", + "ParamPrice", + "Params", + "Referer", + "RefererCategoryID", + "RefererHash", + "RefererRegionID", + "RegionID", + "RemoteIP", + "ResolutionDepth", + "ResolutionHeight", + "ResolutionWidth", + "ResponseEndTiming", + "ResponseStartTiming", + "Robotness", + "SearchEngineID", + "SearchPhrase", + "SendTiming", + "Sex", + "SilverlightVersion1", + "SilverlightVersion2", + "SilverlightVersion3", + "SilverlightVersion4", + "SocialAction", + "SocialNetwork", + "SocialSourceNetworkID", + "SocialSourcePage", + "Title", + "TraficSourceID", + "URL", + "URLCategoryID", + "URLHash", + "URLRegionID", + "UTMCampaign", + "UTMContent", + "UTMMedium", + "UTMSource", + "UTMTerm", + "UserAgent", + "UserAgentMajor", + "UserAgentMinor", + "UserID", + "WatchID", + "WindowClientHeight", + "WindowClientWidth", + "WindowName", + "WithHash" + ], + "ReadLimit": "10", + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "google" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 14 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 10 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 41 + }, + { + "Id": 66 + }, + { + "Id": 76 + }, + { + "Id": 75 + }, + { + "Id": 105 + }, + { + "Id": 46 + }, + { + "Id": 8 + }, + { + "Id": 45 + }, + { + "Id": 52 + }, + { + "Id": 82 + }, + { + "Id": 31 + }, + { + "Id": 11 + }, + { + "Id": 7 + }, + { + "Id": 81 + }, + { + "Id": 62 + }, + { + "Id": 6 + }, + { + "Id": 5 + }, + { + "Id": 56 + }, + { + "Id": 85 + }, + { + "Id": 24 + }, + { + "Id": 25 + }, + { + "Id": 26 + }, + { + "Id": 101 + }, + { + "Id": 4 + }, + { + "Id": 58 + }, + { + "Id": 79 + }, + { + "Id": 102 + }, + { + "Id": 74 + }, + { + "Id": 64 + }, + { + "Id": 37 + }, + { + "Id": 68 + }, + { + "Id": 69 + }, + { + "Id": 42 + }, + { + "Id": 54 + }, + { + "Id": 60 + }, + { + "Id": 53 + }, + { + "Id": 33 + }, + { + "Id": 55 + }, + { + "Id": 59 + }, + { + "Id": 61 + }, + { + "Id": 16 + }, + { + "Id": 2 + }, + { + "Id": 32 + }, + { + "Id": 65 + }, + { + "Id": 34 + }, + { + "Id": 35 + }, + { + "Id": 27 + }, + { + "Id": 28 + }, + { + "Id": 12 + }, + { + "Id": 73 + }, + { + "Id": 94 + }, + { + "Id": 93 + }, + { + "Id": 92 + }, + { + "Id": 95 + }, + { + "Id": 57 + }, + { + "Id": 51 + }, + { + "Id": 90 + }, + { + "Id": 91 + }, + { + "Id": 89 + }, + { + "Id": 88 + }, + { + "Id": 36 + }, + { + "Id": 15 + }, + { + "Id": 17 + }, + { + "Id": 103 + }, + { + "Id": 18 + }, + { + "Id": 9 + }, + { + "Id": 71 + }, + { + "Id": 23 + }, + { + "Id": 22 + }, + { + "Id": 21 + }, + { + "Id": 84 + }, + { + "Id": 83 + }, + { + "Id": 70 + }, + { + "Id": 39 + }, + { + "Id": 40 + }, + { + "Id": 80 + }, + { + "Id": 67 + }, + { + "Id": 47 + }, + { + "Id": 48 + }, + { + "Id": 49 + }, + { + "Id": 50 + }, + { + "Id": 78 + }, + { + "Id": 77 + }, + { + "Id": 86 + }, + { + "Id": 87 + }, + { + "Id": 3 + }, + { + "Id": 38 + }, + { + "Id": 14 + }, + { + "Id": 19 + }, + { + "Id": 104 + }, + { + "Id": 20 + }, + { + "Id": 98 + }, + { + "Id": 99 + }, + { + "Id": 97 + }, + { + "Id": 96 + }, + { + "Id": 100 + }, + { + "Id": 13 + }, + { + "Id": 29 + }, + { + "Id": 30 + }, + { + "Id": 10 + }, + { + "Id": 1 + }, + { + "Id": 44 + }, + { + "Id": 43 + }, + { + "Id": 72 + }, + { + "Id": 63 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 5 + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-24 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-24 index efd72a470d02..8fa719271a8b 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-24 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-24 @@ -89,7 +89,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -134,6 +135,121 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "$4.EventTime" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "EventTime", + "SearchPhrase" + ], + "ReadLimit": "10", + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 40 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 5 + }, + { + "Id": 40 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 5 + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-25 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-25 index 5252f85c9b41..09bca56e623d 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-25 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-25 @@ -87,7 +87,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -129,6 +130,116 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "$5.SearchPhrase" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 40 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 40 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 5 + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-26 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-26 index 4047c1c399d1..80c2eea94f99 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-26 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-26 @@ -88,7 +88,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -134,6 +135,120 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "EventTime", + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 40 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 5 + }, + { + "Id": 40 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 5 + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-27 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-27 index 848218e72343..990334156a71 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-27 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-27 @@ -121,7 +121,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -170,6 +171,145 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "25", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "25", + "Name": "TopSort", + "TopSortBy": "$13.l" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.Count0 > 100000" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1)}", + "GroupBy": "item.CounterID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 14 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 7 + }, + { + "Id": 14 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-28 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-28 index 491ede2798c8..c51e844a7d55 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-28 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-28 @@ -120,7 +120,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -166,6 +167,141 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "25", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "25", + "Name": "TopSort", + "TopSortBy": "$23.l" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.Count0 > 100000" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1),_yql_agg_2: MIN(item.Referer,state._yql_agg_2)}", + "GroupBy": "item.key", + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "Referer" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 15 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 15 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-29 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-29 index c944f90372d8..0037dced2869 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-29 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-29 @@ -16,12 +16,21 @@ "Plans": [ { "CTE Name": "precompute_0_0", - "Node Type": "ConstantExpr", + "Node Type": "ConstantExpr-ConstantExpr", "Operators": [ { - "Inputs": [], + "Inputs": [ + { + "InternalOperatorId": 1 + } + ], "Iterator": "precompute_0_0", "Name": "Iterator" + }, + { + "Inputs": [], + "Member": "precompute_0_0", + "Name": "Member" } ], "PlanNodeId": 6 @@ -117,6 +126,156 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ResolutionWidth" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 21 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + }, + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 11, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 12, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 14, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ResolutionWidth" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 21 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 15 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-3 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-3 index febbdfb74f86..6aadebfb50ed 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-3 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-3 @@ -144,6 +144,112 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "GroupBy": { + "Aggregates": [ + { + "Column": { + "Id": 106 + }, + "Function": { + "Arguments": [ + { + "Id": 10 + } + ], + "Id": 5 + } + }, + { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 10 + } + ], + "Id": 2 + } + } + ] + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 107 + }, + { + "Id": 106 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-30 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-30 index c04e7dd85fcd..137a0447c63c 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-30 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-30 @@ -116,7 +116,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -171,6 +172,142 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1),_yql_agg_2: SUM(item.IsRefresh,state._yql_agg_2)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ClientIP", + "IsRefresh", + "ResolutionWidth", + "SearchEngineID", + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 40 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 8 + }, + { + "Id": 16 + }, + { + "Id": 21 + }, + { + "Id": 39 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-31 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-31 index 51a3960052be..b4f172042500 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-31 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-31 @@ -116,7 +116,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -171,6 +172,142 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1),_yql_agg_2: SUM(item.IsRefresh,state._yql_agg_2)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ClientIP", + "IsRefresh", + "ResolutionWidth", + "SearchPhrase", + "WatchID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 40 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 8 + }, + { + "Id": 16 + }, + { + "Id": 21 + }, + { + "Id": 1 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-32 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-32 index d800c5df143e..a84b3b94e691 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-32 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-32 @@ -134,6 +134,104 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1),_yql_agg_2: SUM(item.IsRefresh,state._yql_agg_2)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ClientIP", + "IsRefresh", + "ResolutionWidth", + "WatchID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 8 + }, + { + "Id": 16 + }, + { + "Id": 21 + }, + { + "Id": 1 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-33 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-33 index 4a0b7e89454c..2e6d25e07471 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-33 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-33 @@ -121,6 +121,92 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.URL", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 14 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-34 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-34 index 67e2bafe2d12..9c0d1aa99ef1 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-34 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-34 @@ -126,6 +126,96 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "URL", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 14 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-35 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-35 index 14f243ff0540..53cfbe218521 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-35 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-35 @@ -124,6 +124,92 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ClientIP" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 8 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-36 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-36 index 1f496780cb58..1938d9f330ef 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-36 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-36 @@ -124,7 +124,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 11 } } }, @@ -153,7 +154,8 @@ } ], "FunctionType": 2, - "KernelIdx": 1 + "KernelIdx": 1, + "YqlOperationId": 11 } } }, @@ -172,7 +174,8 @@ } ], "FunctionType": 2, - "KernelIdx": 2 + "KernelIdx": 2, + "YqlOperationId": 0 } } }, @@ -201,7 +204,8 @@ } ], "FunctionType": 2, - "KernelIdx": 3 + "KernelIdx": 3, + "YqlOperationId": 11 } } }, @@ -230,7 +234,8 @@ } ], "FunctionType": 2, - "KernelIdx": 4 + "KernelIdx": 4, + "YqlOperationId": 12 } } }, @@ -249,7 +254,8 @@ } ], "FunctionType": 2, - "KernelIdx": 5 + "KernelIdx": 5, + "YqlOperationId": 0 } } }, @@ -268,7 +274,8 @@ } ], "FunctionType": 2, - "KernelIdx": 6 + "KernelIdx": 6, + "YqlOperationId": 0 } } }, @@ -317,6 +324,298 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.URL", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.EventDate >= \"15887\" And item.EventDate <= \"15917\"" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "DontCountHits", + "EventDate", + "IsRefresh", + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Int32": 62 + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 7 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 108 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 62 + }, + { + "Id": 108 + } + ], + "FunctionType": 2, + "KernelIdx": 1, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 110 + }, + "Function": { + "Arguments": [ + { + "Id": 107 + }, + { + "Id": 109 + } + ], + "FunctionType": 2, + "KernelIdx": 2, + "YqlOperationId": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 111 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 112 + }, + "Function": { + "Arguments": [ + { + "Id": 16 + }, + { + "Id": 111 + } + ], + "FunctionType": 2, + "KernelIdx": 3, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 113 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 114 + }, + "Function": { + "Arguments": [ + { + "Id": 14 + }, + { + "Id": 113 + } + ], + "FunctionType": 2, + "KernelIdx": 4, + "YqlOperationId": 12 + } + } + }, + { + "Assign": { + "Column": { + "Id": 115 + }, + "Function": { + "Arguments": [ + { + "Id": 112 + }, + { + "Id": 114 + } + ], + "FunctionType": 2, + "KernelIdx": 5, + "YqlOperationId": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 116 + }, + "Function": { + "Arguments": [ + { + "Id": 110 + }, + { + "Id": 115 + } + ], + "FunctionType": 2, + "KernelIdx": 6, + "YqlOperationId": 0 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 116 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 6 + }, + { + "Id": 14 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-37 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-37 index 30852faab421..0e460302098c 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-37 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-37 @@ -124,7 +124,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 11 } } }, @@ -153,7 +154,8 @@ } ], "FunctionType": 2, - "KernelIdx": 1 + "KernelIdx": 1, + "YqlOperationId": 11 } } }, @@ -172,7 +174,8 @@ } ], "FunctionType": 2, - "KernelIdx": 2 + "KernelIdx": 2, + "YqlOperationId": 0 } } }, @@ -201,7 +204,8 @@ } ], "FunctionType": 2, - "KernelIdx": 3 + "KernelIdx": 3, + "YqlOperationId": 11 } } }, @@ -230,7 +234,8 @@ } ], "FunctionType": 2, - "KernelIdx": 4 + "KernelIdx": 4, + "YqlOperationId": 12 } } }, @@ -249,7 +254,8 @@ } ], "FunctionType": 2, - "KernelIdx": 5 + "KernelIdx": 5, + "YqlOperationId": 0 } } }, @@ -268,7 +274,8 @@ } ], "FunctionType": 2, - "KernelIdx": 6 + "KernelIdx": 6, + "YqlOperationId": 0 } } }, @@ -317,6 +324,298 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.Title", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.EventDate >= \"15887\" And item.EventDate <= \"15917\"" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "DontCountHits", + "EventDate", + "IsRefresh", + "Title" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Int32": 62 + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 7 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 108 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 62 + }, + { + "Id": 108 + } + ], + "FunctionType": 2, + "KernelIdx": 1, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 110 + }, + "Function": { + "Arguments": [ + { + "Id": 107 + }, + { + "Id": 109 + } + ], + "FunctionType": 2, + "KernelIdx": 2, + "YqlOperationId": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 111 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 112 + }, + "Function": { + "Arguments": [ + { + "Id": 16 + }, + { + "Id": 111 + } + ], + "FunctionType": 2, + "KernelIdx": 3, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 113 + }, + "Constant": { + "Bytes": "" + } + } + }, + { + "Assign": { + "Column": { + "Id": 114 + }, + "Function": { + "Arguments": [ + { + "Id": 3 + }, + { + "Id": 113 + } + ], + "FunctionType": 2, + "KernelIdx": 4, + "YqlOperationId": 12 + } + } + }, + { + "Assign": { + "Column": { + "Id": 115 + }, + "Function": { + "Arguments": [ + { + "Id": 112 + }, + { + "Id": 114 + } + ], + "FunctionType": 2, + "KernelIdx": 5, + "YqlOperationId": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 116 + }, + "Function": { + "Arguments": [ + { + "Id": 110 + }, + { + "Id": 115 + } + ], + "FunctionType": 2, + "KernelIdx": 6, + "YqlOperationId": 0 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 116 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 6 + }, + { + "Id": 3 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-38 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-38 index b5ecfd9969e1..80e4d3c1b68a 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-38 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-38 @@ -154,7 +154,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 11 } } }, @@ -183,7 +184,8 @@ } ], "FunctionType": 2, - "KernelIdx": 1 + "KernelIdx": 1, + "YqlOperationId": 11 } } }, @@ -202,7 +204,8 @@ } ], "FunctionType": 2, - "KernelIdx": 2 + "KernelIdx": 2, + "YqlOperationId": 0 } } }, @@ -231,7 +234,8 @@ } ], "FunctionType": 2, - "KernelIdx": 3 + "KernelIdx": 3, + "YqlOperationId": 12 } } }, @@ -260,7 +264,8 @@ } ], "FunctionType": 2, - "KernelIdx": 4 + "KernelIdx": 4, + "YqlOperationId": 11 } } }, @@ -279,7 +284,8 @@ } ], "FunctionType": 2, - "KernelIdx": 5 + "KernelIdx": 5, + "YqlOperationId": 0 } } }, @@ -298,7 +304,8 @@ } ], "FunctionType": 2, - "KernelIdx": 6 + "KernelIdx": 6, + "YqlOperationId": 0 } } }, @@ -351,6 +358,323 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Offset", + "Operators": [ + { + "Name": "Offset", + "Offset": "1000" + } + ], + "PlanNodeId": 3, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.URL", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.EventDate >= \"15887\" And item.EventDate <= \"15917\"" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "EventDate", + "IsDownload", + "IsLink", + "IsRefresh", + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Int32": 62 + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 7 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 108 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 16 + }, + { + "Id": 108 + } + ], + "FunctionType": 2, + "KernelIdx": 1, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 110 + }, + "Function": { + "Arguments": [ + { + "Id": 107 + }, + { + "Id": 109 + } + ], + "FunctionType": 2, + "KernelIdx": 2, + "YqlOperationId": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 111 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 112 + }, + "Function": { + "Arguments": [ + { + "Id": 53 + }, + { + "Id": 111 + } + ], + "FunctionType": 2, + "KernelIdx": 3, + "YqlOperationId": 12 + } + } + }, + { + "Assign": { + "Column": { + "Id": 113 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 114 + }, + "Function": { + "Arguments": [ + { + "Id": 54 + }, + { + "Id": 113 + } + ], + "FunctionType": 2, + "KernelIdx": 4, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 115 + }, + "Function": { + "Arguments": [ + { + "Id": 112 + }, + { + "Id": 114 + } + ], + "FunctionType": 2, + "KernelIdx": 5, + "YqlOperationId": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 116 + }, + "Function": { + "Arguments": [ + { + "Id": 110 + }, + { + "Id": 115 + } + ], + "FunctionType": 2, + "KernelIdx": 6, + "YqlOperationId": 0 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 116 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 6 + }, + { + "Id": 14 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 11 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-39 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-39 index 31af3b96ba14..355223bb77ee 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-39 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-39 @@ -160,7 +160,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 11 } } }, @@ -189,7 +190,8 @@ } ], "FunctionType": 2, - "KernelIdx": 1 + "KernelIdx": 1, + "YqlOperationId": 11 } } }, @@ -208,7 +210,8 @@ } ], "FunctionType": 2, - "KernelIdx": 2 + "KernelIdx": 2, + "YqlOperationId": 0 } } }, @@ -273,6 +276,237 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Offset", + "Operators": [ + { + "Name": "Offset", + "Offset": "1000" + } + ], + "PlanNodeId": 3, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.EventDate >= \"15887\" And item.EventDate <= \"15917\"" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "CounterID", + "EventDate", + "IsRefresh", + "Referer", + "SearchEngineID", + "TraficSourceID", + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Int32": 62 + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 7 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 108 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 16 + }, + { + "Id": 108 + } + ], + "FunctionType": 2, + "KernelIdx": 1, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 110 + }, + "Function": { + "Arguments": [ + { + "Id": 107 + }, + { + "Id": 109 + } + ], + "FunctionType": 2, + "KernelIdx": 2, + "YqlOperationId": 0 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 110 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 41 + }, + { + "Id": 6 + }, + { + "Id": 15 + }, + { + "Id": 39 + }, + { + "Id": 38 + }, + { + "Id": 14 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 11 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-4 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-4 index 3a08b8d56686..92af7df2c54b 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-4 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-4 @@ -145,6 +145,101 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "row.UserID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 10 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-40 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-40 index 9013e777b91c..2b32e0ce0da6 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-40 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-40 @@ -155,7 +155,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 11 } } }, @@ -184,7 +185,8 @@ } ], "FunctionType": 2, - "KernelIdx": 1 + "KernelIdx": 1, + "YqlOperationId": 11 } } }, @@ -213,7 +215,8 @@ } ], "FunctionType": 2, - "KernelIdx": 2 + "KernelIdx": 2, + "YqlOperationId": 11 } } }, @@ -232,7 +235,8 @@ } ], "FunctionType": 2, - "KernelIdx": 3 + "KernelIdx": 3, + "YqlOperationId": 0 } } }, @@ -251,7 +255,8 @@ } ], "FunctionType": 2, - "KernelIdx": 4 + "KernelIdx": 4, + "YqlOperationId": 0 } } }, @@ -307,6 +312,276 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Offset", + "Operators": [ + { + "Name": "Offset", + "Offset": "100" + } + ], + "PlanNodeId": 3, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "SUM(10,100)", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "SUM(10,100)", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.EventDate >= \"15887\" And item.EventDate <= \"15917\" And item.TraficSourceID == -1 Or item.TraficSourceID == 6" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "EventDate", + "IsRefresh", + "RefererHash", + "TraficSourceID", + "URLHash" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Int32": 62 + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 7 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 108 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 16 + }, + { + "Id": 108 + } + ], + "FunctionType": 2, + "KernelIdx": 1, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 110 + }, + "Constant": { + "Int64": 3594120000172545465 + } + } + }, + { + "Assign": { + "Column": { + "Id": 111 + }, + "Function": { + "Arguments": [ + { + "Id": 103 + }, + { + "Id": 110 + } + ], + "FunctionType": 2, + "KernelIdx": 2, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 112 + }, + "Function": { + "Arguments": [ + { + "Id": 109 + }, + { + "Id": 111 + } + ], + "FunctionType": 2, + "KernelIdx": 3, + "YqlOperationId": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 113 + }, + "Function": { + "Arguments": [ + { + "Id": 107 + }, + { + "Id": 112 + } + ], + "FunctionType": 2, + "KernelIdx": 4, + "YqlOperationId": 0 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 113 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 6 + }, + { + "Id": 38 + }, + { + "Id": 104 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 11 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-41 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-41 index 949eaccca030..e87308e15e89 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-41 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-41 @@ -156,7 +156,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 11 } } }, @@ -185,7 +186,8 @@ } ], "FunctionType": 2, - "KernelIdx": 1 + "KernelIdx": 1, + "YqlOperationId": 11 } } }, @@ -204,7 +206,8 @@ } ], "FunctionType": 2, - "KernelIdx": 2 + "KernelIdx": 2, + "YqlOperationId": 0 } } }, @@ -233,7 +236,8 @@ } ], "FunctionType": 2, - "KernelIdx": 3 + "KernelIdx": 3, + "YqlOperationId": 11 } } }, @@ -262,7 +266,8 @@ } ], "FunctionType": 2, - "KernelIdx": 4 + "KernelIdx": 4, + "YqlOperationId": 11 } } }, @@ -281,7 +286,8 @@ } ], "FunctionType": 2, - "KernelIdx": 5 + "KernelIdx": 5, + "YqlOperationId": 0 } } }, @@ -300,7 +306,8 @@ } ], "FunctionType": 2, - "KernelIdx": 6 + "KernelIdx": 6, + "YqlOperationId": 0 } } }, @@ -356,6 +363,327 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Offset", + "Operators": [ + { + "Name": "Offset", + "Offset": "10000" + } + ], + "PlanNodeId": 3, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "SUM(10,10000)", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "SUM(10,10000)", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.EventDate >= \"15887\" And item.EventDate <= \"15917\"" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "DontCountHits", + "EventDate", + "IsRefresh", + "URLHash", + "WindowClientHeight", + "WindowClientWidth" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Int32": 62 + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 7 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 108 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 16 + }, + { + "Id": 108 + } + ], + "FunctionType": 2, + "KernelIdx": 1, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 110 + }, + "Function": { + "Arguments": [ + { + "Id": 107 + }, + { + "Id": 109 + } + ], + "FunctionType": 2, + "KernelIdx": 2, + "YqlOperationId": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 111 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 112 + }, + "Function": { + "Arguments": [ + { + "Id": 62 + }, + { + "Id": 111 + } + ], + "FunctionType": 2, + "KernelIdx": 3, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 113 + }, + "Constant": { + "Int64": 2868770270353813622 + } + } + }, + { + "Assign": { + "Column": { + "Id": 114 + }, + "Function": { + "Arguments": [ + { + "Id": 104 + }, + { + "Id": 113 + } + ], + "FunctionType": 2, + "KernelIdx": 4, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 115 + }, + "Function": { + "Arguments": [ + { + "Id": 112 + }, + { + "Id": 114 + } + ], + "FunctionType": 2, + "KernelIdx": 5, + "YqlOperationId": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 116 + }, + "Function": { + "Arguments": [ + { + "Id": 110 + }, + { + "Id": 115 + } + ], + "FunctionType": 2, + "KernelIdx": 6, + "YqlOperationId": 0 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 116 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 6 + }, + { + "Id": 44 + }, + { + "Id": 43 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 11 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-42 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-42 index 03b459e31d19..31ff92a28677 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-42 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-42 @@ -153,7 +153,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 11 } } }, @@ -182,7 +183,8 @@ } ], "FunctionType": 2, - "KernelIdx": 1 + "KernelIdx": 1, + "YqlOperationId": 11 } } }, @@ -211,7 +213,8 @@ } ], "FunctionType": 2, - "KernelIdx": 2 + "KernelIdx": 2, + "YqlOperationId": 11 } } }, @@ -230,7 +233,8 @@ } ], "FunctionType": 2, - "KernelIdx": 3 + "KernelIdx": 3, + "YqlOperationId": 0 } } }, @@ -249,7 +253,8 @@ } ], "FunctionType": 2, - "KernelIdx": 4 + "KernelIdx": 4, + "YqlOperationId": 0 } } }, @@ -302,6 +307,272 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Offset", + "Operators": [ + { + "Name": "Offset", + "Offset": "1000" + } + ], + "PlanNodeId": 3, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "TopSort", + "TopSortBy": "argument.Minute" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.Minute", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.EventDate >= \"15900\" And item.EventDate <= \"15901\"" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "DontCountHits", + "EventDate", + "EventTime", + "IsRefresh" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Int32": 62 + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 7 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 108 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 109 + }, + "Function": { + "Arguments": [ + { + "Id": 16 + }, + { + "Id": 108 + } + ], + "FunctionType": 2, + "KernelIdx": 1, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 110 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 111 + }, + "Function": { + "Arguments": [ + { + "Id": 62 + }, + { + "Id": 110 + } + ], + "FunctionType": 2, + "KernelIdx": 2, + "YqlOperationId": 11 + } + } + }, + { + "Assign": { + "Column": { + "Id": 112 + }, + "Function": { + "Arguments": [ + { + "Id": 109 + }, + { + "Id": 111 + } + ], + "FunctionType": 2, + "KernelIdx": 3, + "YqlOperationId": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 113 + }, + "Function": { + "Arguments": [ + { + "Id": 107 + }, + { + "Id": 112 + } + ], + "FunctionType": 2, + "KernelIdx": 4, + "YqlOperationId": 0 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 113 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 6 + }, + { + "Id": 5 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 11 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-5 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-5 index 5e4d7e56cce5..a7496640f782 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-5 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-5 @@ -145,6 +145,101 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "row.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 40 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 10 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-6 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-6 index 46bf5a6a1394..23c4d26e9af3 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-6 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-6 @@ -16,12 +16,21 @@ "Plans": [ { "CTE Name": "precompute_0_0", - "Node Type": "ConstantExpr", + "Node Type": "ConstantExpr-ConstantExpr", "Operators": [ { - "Inputs": [], + "Inputs": [ + { + "InternalOperatorId": 1 + } + ], "Iterator": "precompute_0_0", "Name": "Iterator" + }, + { + "Inputs": [], + "Member": "precompute_0_0", + "Name": "Member" } ], "PlanNodeId": 6 @@ -144,6 +153,204 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "EventDate" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "GroupBy": { + "Aggregates": [ + { + "Column": { + "Id": 106 + }, + "Function": { + "Arguments": [ + { + "Id": 6 + } + ], + "Id": 4 + } + }, + { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 6 + } + ], + "Id": 3 + } + } + ] + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 106 + }, + { + "Id": 107 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + }, + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 11, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "EventDate" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "GroupBy": { + "Aggregates": [ + { + "Column": { + "Id": 106 + }, + "Function": { + "Arguments": [ + { + "Id": 6 + } + ], + "Id": 4 + } + }, + { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 6 + } + ], + "Id": 3 + } + } + ] + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 106 + }, + { + "Id": 107 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 13 + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-7 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-7 index 1a47f956479f..580d8c9b0221 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-7 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-7 @@ -111,7 +111,8 @@ } ], "FunctionType": 2, - "KernelIdx": 0 + "KernelIdx": 0, + "YqlOperationId": 12 } } }, @@ -157,6 +158,129 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1001", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "1001", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.AdvEngineID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Assign": { + "Column": { + "Id": 106 + }, + "Constant": { + "Int32": 0 + } + } + }, + { + "Assign": { + "Column": { + "Id": 107 + }, + "Function": { + "Arguments": [ + { + "Id": 41 + }, + { + "Id": 106 + } + ], + "FunctionType": 2, + "KernelIdx": 0, + "YqlOperationId": 12 + } + } + }, + { + "Filter": { + "Predicate": { + "Id": 107 + } + } + }, + { + "Projection": { + "Columns": [ + { + "Id": 41 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-8 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-8 index 86e1bf71d158..22a7b1c8f85e 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-8 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-8 @@ -154,6 +154,109 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: Inc(state._yql_agg_0)}", + "GroupBy": "item.RegionID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "RegionID", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 9 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-9 b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-9 index dac074aa292f..690127ebbcd8 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-9 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_column_/queries-original-plan-column-9 @@ -258,6 +258,187 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Union", + "Operators": [ + { + "Name": "Union" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1),_yql_agg_3: SUM(item.AdvEngineID,state._yql_agg_3)}", + "GroupBy": "item.RegionID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "RegionID", + "ResolutionWidth", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 41 + }, + { + "Id": 9 + }, + { + "Id": 21 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 9 + } + ] + }, + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_2: Inc(state._yql_agg_2)}", + "GroupBy": "item.RegionID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 11, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 13, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "RegionID", + "ResolutionWidth", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "SsaProgram": { + "Command": [ + { + "Projection": { + "Columns": [ + { + "Id": 41 + }, + { + "Id": 9 + }, + { + "Id": 21 + }, + { + "Id": 10 + } + ] + } + } + ], + "Version": 4 + }, + "Table": "clickbench/plans/column/hits" + } + ], + "PlanNodeId": 14 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/column/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-0 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-0 index bcea45f3e620..1ef611b809e2 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-0 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-0 @@ -101,6 +101,72 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": null, + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-1 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-1 index 700d33e66beb..1d5ca56beefb 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-1 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-1 @@ -112,6 +112,86 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.AdvEngineID != 0" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-10 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-10 index 6ce50d447f4f..9101e37d5a23 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-10 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-10 @@ -146,6 +146,104 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: COUNT(item.UserID,state._yql_agg_0)}", + "GroupBy": "item.MobilePhoneModel", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.MobilePhoneModel != \"\"" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "MobilePhoneModel", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 10 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-11 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-11 index 891d1590f987..8283b6313d04 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-11 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-11 @@ -149,6 +149,105 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: COUNT(item.UserID,state._yql_agg_0)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.MobilePhoneModel != \"\"" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "MobilePhone", + "MobilePhoneModel", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 10 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-12 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-12 index e57e1dae5f09..e182d61c7208 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-12 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-12 @@ -116,6 +116,90 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.SearchPhrase != \"\"" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-13 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-13 index 1a7720d827c8..94f1e09a4096 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-13 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-13 @@ -146,6 +146,104 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: COUNT(item.UserID,state._yql_agg_0)}", + "GroupBy": "item.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.SearchPhrase != \"\"" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 10 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-14 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-14 index 933bb09440a4..1e7c671f669a 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-14 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-14 @@ -118,6 +118,91 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.SearchPhrase != \"\"" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchEngineID", + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-15 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-15 index 0ae0d6d90222..e390b499b0f4 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-15 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-15 @@ -107,6 +107,78 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.UserID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-16 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-16 index 2414ba574dab..71b4672498d7 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-16 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-16 @@ -109,6 +109,79 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-17 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-17 index 5ba6811b0e9b..f0667dbd949d 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-17 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-17 @@ -105,6 +105,78 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-18 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-18 index 15fc4d053fd4..74c39336831f 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-18 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-18 @@ -111,6 +111,80 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "EventTime", + "SearchPhrase", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-19 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-19 index 22d67d5a22af..c601c9a97d3f 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-19 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-19 @@ -84,6 +84,76 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1001", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1001", + "Name": "Limit" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.UserID == 435090932899640449" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 6 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-2 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-2 index de6f498faae5..8ccfa321c215 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-2 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-2 @@ -16,12 +16,21 @@ "Plans": [ { "CTE Name": "precompute_0_0", - "Node Type": "ConstantExpr", + "Node Type": "ConstantExpr-ConstantExpr", "Operators": [ { - "Inputs": [], + "Inputs": [ + { + "InternalOperatorId": 1 + } + ], "Iterator": "precompute_0_0", "Name": "Iterator" + }, + { + "Inputs": [], + "Member": "precompute_0_0", + "Name": "Member" } ], "PlanNodeId": 6 @@ -104,6 +113,130 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "ResolutionWidth" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + }, + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 11, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 12, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 14, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "ResolutionWidth" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 15 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-20 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-20 index 08d691dc90cc..6b0f6f5c370a 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-20 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-20 @@ -112,6 +112,86 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.URL StringContains \"google\"" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-21 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-21 index 8db645ce92d5..3d4a095eb9d5 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-21 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-21 @@ -117,6 +117,91 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1),_yql_agg_1: MIN(item.URL,state._yql_agg_1)}", + "GroupBy": "item.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.URL StringContains \"google\" And item.SearchPhrase != \"\"" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-22 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-22 index d01b0792517b..a7b9fc8a11e6 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-22 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-22 @@ -230,6 +230,165 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Union", + "Operators": [ + { + "Name": "Union" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1),_yql_agg_2: MIN(item.URL,state._yql_agg_2),_yql_agg_3: MIN(item.Title,state._yql_agg_3)}", + "GroupBy": "item.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.Title StringContains \"Google\" And Not item.URL StringContains \".google.\" And item.SearchPhrase != \"\"" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "Title", + "URL", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 10 + } + ] + } + ] + }, + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: COUNT(item.UserID,state._yql_agg_1)}", + "GroupBy": "item.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 12, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 14, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.Title StringContains \"Google\" And Not item.URL StringContains \".google.\" And item.SearchPhrase != \"\"" + } + ], + "PlanNodeId": 15, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase", + "Title", + "URL", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 16 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-23 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-23 index 523cdda7b3ef..432897d377d0 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-23 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-23 @@ -191,6 +191,180 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.URL StringContains \"google\"" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "Age", + "BrowserCountry", + "BrowserLanguage", + "CLID", + "ClientEventTime", + "ClientIP", + "ClientTimeZone", + "CodeVersion", + "ConnectTiming", + "CookieEnable", + "CounterClass", + "CounterID", + "DNSTiming", + "DontCountHits", + "EventDate", + "EventTime", + "FUniqID", + "FetchTiming", + "FlashMajor", + "FlashMinor", + "FlashMinor2", + "FromTag", + "GoodEvent", + "HID", + "HTTPError", + "HasGCLID", + "HistoryLength", + "HitColor", + "IPNetworkID", + "Income", + "Interests", + "IsArtifical", + "IsDownload", + "IsEvent", + "IsLink", + "IsMobile", + "IsNotBounce", + "IsOldCounter", + "IsParameter", + "IsRefresh", + "JavaEnable", + "JavascriptEnable", + "LocalEventTime", + "MobilePhone", + "MobilePhoneModel", + "NetMajor", + "NetMinor", + "OS", + "OpenerName", + "OpenstatAdID", + "OpenstatCampaignID", + "OpenstatServiceName", + "OpenstatSourceID", + "OriginalURL", + "PageCharset", + "ParamCurrency", + "ParamCurrencyID", + "ParamOrderID", + "ParamPrice", + "Params", + "Referer", + "RefererCategoryID", + "RefererHash", + "RefererRegionID", + "RegionID", + "RemoteIP", + "ResolutionDepth", + "ResolutionHeight", + "ResolutionWidth", + "ResponseEndTiming", + "ResponseStartTiming", + "Robotness", + "SearchEngineID", + "SearchPhrase", + "SendTiming", + "Sex", + "SilverlightVersion1", + "SilverlightVersion2", + "SilverlightVersion3", + "SilverlightVersion4", + "SocialAction", + "SocialNetwork", + "SocialSourceNetworkID", + "SocialSourcePage", + "Title", + "TraficSourceID", + "URL", + "URLCategoryID", + "URLHash", + "URLRegionID", + "UTMCampaign", + "UTMContent", + "UTMMedium", + "UTMSource", + "UTMTerm", + "UserAgent", + "UserAgentMajor", + "UserAgentMinor", + "UserID", + "WatchID", + "WindowClientHeight", + "WindowClientWidth", + "WindowName", + "WithHash" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 6 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-24 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-24 index aafd111108fa..1d61e93ad9a8 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-24 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-24 @@ -88,6 +88,77 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.SearchPhrase != \"\"" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "EventTime", + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 6 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-25 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-25 index 8b02cd015639..367bb349f1b4 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-25 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-25 @@ -88,6 +88,77 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "$5.SearchPhrase" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.SearchPhrase != \"\"" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 6 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-26 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-26 index 73abb1c271f6..2ba90d4d2238 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-26 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-26 @@ -90,6 +90,78 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.SearchPhrase != \"\"" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "EventTime", + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 6 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-27 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-27 index 0578a55fa92d..afca1b848d53 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-27 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-27 @@ -126,6 +126,103 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "25", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "25", + "Name": "TopSort", + "TopSortBy": "$14.l" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.Count0 > 100000" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1)}", + "GroupBy": "item.CounterID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.URL != \"\"" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-28 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-28 index a5b57cff85ab..986403f196c0 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-28 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-28 @@ -125,6 +125,102 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "25", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "25", + "Name": "TopSort", + "TopSortBy": "$25.l" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.Count0 > 100000" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1),_yql_agg_2: MIN(item.Referer,state._yql_agg_2)}", + "GroupBy": "item.key", + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.Referer != \"\"" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "Referer" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-29 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-29 index ed9111fb15b2..662b7d72845f 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-29 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-29 @@ -16,12 +16,21 @@ "Plans": [ { "CTE Name": "precompute_0_0", - "Node Type": "ConstantExpr", + "Node Type": "ConstantExpr-ConstantExpr", "Operators": [ { - "Inputs": [], + "Inputs": [ + { + "InternalOperatorId": 1 + } + ], "Iterator": "precompute_0_0", "Name": "Iterator" + }, + { + "Inputs": [], + "Member": "precompute_0_0", + "Name": "Member" } ], "PlanNodeId": 6 @@ -103,6 +112,128 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ResolutionWidth" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + }, + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 11, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 12, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 14, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ResolutionWidth" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 15 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-3 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-3 index 2b220a05fff0..7893731cc961 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-3 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-3 @@ -103,6 +103,74 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-30 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-30 index 24f212f66ece..a4d5b1bc5d55 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-30 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-30 @@ -121,6 +121,94 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1),_yql_agg_2: SUM(item.IsRefresh,state._yql_agg_2)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.SearchPhrase != \"\"" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ClientIP", + "IsRefresh", + "ResolutionWidth", + "SearchEngineID", + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-31 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-31 index c46804a19f9c..61bbb6c66a22 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-31 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-31 @@ -121,6 +121,94 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1),_yql_agg_2: SUM(item.IsRefresh,state._yql_agg_2)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.SearchPhrase != \"\"" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ClientIP", + "IsRefresh", + "ResolutionWidth", + "SearchPhrase", + "WatchID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-32 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-32 index 09b4cb2acd5a..3caa0ba968b1 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-32 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-32 @@ -111,6 +111,81 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1),_yql_agg_2: SUM(item.IsRefresh,state._yql_agg_2)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ClientIP", + "IsRefresh", + "ResolutionWidth", + "WatchID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-33 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-33 index 7ab52ceefc56..6ae1db1d9ea6 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-33 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-33 @@ -107,6 +107,78 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.URL", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-34 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-34 index 838d9c40b5b9..87f0d196e666 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-34 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-34 @@ -109,6 +109,79 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "URL", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-35 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-35 index fbdf53de28d3..a3679758bf76 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-35 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-35 @@ -110,6 +110,78 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "ClientIP" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 7 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-36 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-36 index 106a07ebc1f7..45b864ae1fc4 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-36 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-36 @@ -120,6 +120,94 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.URL", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.CounterID == 62 And item.EventDate >= \"15887\" And item.EventDate <= \"15917\" And item.DontCountHits == 0 And item.IsRefresh == 0 And item.URL != \"\"" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "DontCountHits", + "EventDate", + "IsRefresh", + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-37 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-37 index 6f9adaf10cac..d84d2e5e67bf 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-37 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-37 @@ -120,6 +120,94 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.Title", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.CounterID == 62 And item.EventDate >= \"15887\" And item.EventDate <= \"15917\" And item.DontCountHits == 0 And item.IsRefresh == 0 And item.Title != \"\"" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "DontCountHits", + "EventDate", + "IsRefresh", + "Title" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-38 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-38 index 3900c0a0d97a..0ba3a87d8cd2 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-38 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-38 @@ -154,6 +154,119 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Offset", + "Operators": [ + { + "Name": "Offset", + "Offset": "1000" + } + ], + "PlanNodeId": 3, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.URL", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.CounterID == 62 And item.EventDate >= \"15887\" And item.EventDate <= \"15917\" And item.IsRefresh == 0 And item.IsLink != 0 And item.IsDownload == 0" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "EventDate", + "IsDownload", + "IsLink", + "IsRefresh", + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 11 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-39 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-39 index 6fc4de586644..2cc5681d35ae 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-39 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-39 @@ -160,6 +160,121 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Offset", + "Operators": [ + { + "Name": "Offset", + "Offset": "1000" + } + ], + "PlanNodeId": 3, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.CounterID == 62 And item.EventDate >= \"15887\" And item.EventDate <= \"15917\" And item.IsRefresh == 0" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "CounterID", + "EventDate", + "IsRefresh", + "Referer", + "SearchEngineID", + "TraficSourceID", + "URL" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 11 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-4 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-4 index f0370399cac5..77ee960840a5 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-4 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-4 @@ -131,6 +131,87 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "row.UserID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 10 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-40 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-40 index 9b659bde678e..56e895833626 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-40 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-40 @@ -155,6 +155,119 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Offset", + "Operators": [ + { + "Name": "Offset", + "Offset": "100" + } + ], + "PlanNodeId": 3, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "SUM(10,100)", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "SUM(10,100)", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.CounterID == 62 And item.EventDate >= \"15887\" And item.EventDate <= \"15917\" And item.IsRefresh == 0 And If And item.RefererHash == 3594120000172545465" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "EventDate", + "IsRefresh", + "RefererHash", + "TraficSourceID", + "URLHash" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 11 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-41 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-41 index 72c49bce7aa4..2f73b73dbf42 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-41 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-41 @@ -156,6 +156,120 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Offset", + "Operators": [ + { + "Name": "Offset", + "Offset": "10000" + } + ], + "PlanNodeId": 3, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "SUM(10,10000)", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "SUM(10,10000)", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.CounterID == 62 And item.EventDate >= \"15887\" And item.EventDate <= \"15917\" And item.IsRefresh == 0 And item.DontCountHits == 0 And item.URLHash == 2868770270353813622" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "DontCountHits", + "EventDate", + "IsRefresh", + "URLHash", + "WindowClientHeight", + "WindowClientWidth" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 11 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-42 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-42 index 1acf534e32a3..f0ccfe4133e7 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-42 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-42 @@ -153,6 +153,118 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "Offset", + "Operators": [ + { + "Name": "Offset", + "Offset": "1000" + } + ], + "PlanNodeId": 3, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "SUM(10,1000)", + "Name": "TopSort", + "TopSortBy": "argument.Minute" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.Minute", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.CounterID == 62 And item.EventDate >= \"15900\" And item.EventDate <= \"15901\" And item.IsRefresh == 0 And item.DontCountHits == 0" + } + ], + "PlanNodeId": 10, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "CounterID", + "DontCountHits", + "EventDate", + "EventTime", + "IsRefresh" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 11 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-5 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-5 index 6af51b141aaa..ce6fcf89cc4d 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-5 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-5 @@ -131,6 +131,87 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "row.SearchPhrase", + "Name": "Aggregate" + } + ], + "PlanNodeId": 9, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "SearchPhrase" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 10 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-6 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-6 index 4d5e196100bb..64b25c06f135 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-6 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-6 @@ -16,12 +16,21 @@ "Plans": [ { "CTE Name": "precompute_0_0", - "Node Type": "ConstantExpr", + "Node Type": "ConstantExpr-ConstantExpr", "Operators": [ { - "Inputs": [], + "Inputs": [ + { + "InternalOperatorId": 1 + } + ], "Iterator": "precompute_0_0", "Name": "Iterator" + }, + { + "Inputs": [], + "Member": "precompute_0_0", + "Name": "Member" } ], "PlanNodeId": 6 @@ -103,6 +112,128 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet_1", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 5, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "EventDate" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + }, + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 11, + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1", + "Name": "Limit" + } + ], + "PlanNodeId": 12, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Name": "Aggregate" + } + ], + "PlanNodeId": 14, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "EventDate" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 15 + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-7 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-7 index 0935f1e202e0..29b3dcc1e78e 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-7 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-7 @@ -116,6 +116,90 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "1001", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "1001", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: SUM(state._yql_agg_0,1)}", + "GroupBy": "item.AdvEngineID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Filter", + "Operators": [ + { + "Name": "Filter", + "Predicate": "item.AdvEngineID != 0" + } + ], + "PlanNodeId": 7, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 8 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-8 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-8 index a0edc56657e5..3d2a2a9eda8b 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-8 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-8 @@ -137,6 +137,92 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_0: COUNT(item.UserID,state._yql_agg_0)}", + "GroupBy": "item.RegionID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "RegionID", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 9 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", diff --git a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-9 b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-9 index 06a0806ba1f9..569fdcf4b140 100644 --- a/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-9 +++ b/ydb/tests/functional/clickbench/canondata/test.test_plans_row_/queries-original-plan-row-9 @@ -212,6 +212,141 @@ } ] }, + "SimplifiedPlan": { + "Node Type": "Query", + "PlanNodeId": 0, + "PlanNodeType": "Query", + "Plans": [ + { + "Node Type": "ResultSet", + "PlanNodeId": 1, + "PlanNodeType": "ResultSet", + "Plans": [ + { + "Node Type": "Limit", + "Operators": [ + { + "Limit": "10", + "Name": "Limit" + } + ], + "PlanNodeId": 2, + "Plans": [ + { + "Node Type": "TopSort", + "Operators": [ + { + "Limit": "10", + "Name": "TopSort", + "TopSortBy": "argument.Count0" + } + ], + "PlanNodeId": 4, + "Plans": [ + { + "Node Type": "Union", + "Operators": [ + { + "Name": "Union" + } + ], + "PlanNodeId": 6, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_1: SUM(state._yql_agg_1,1),_yql_agg_3: SUM(item.AdvEngineID,state._yql_agg_3)}", + "GroupBy": "item.RegionID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 8, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "RegionID", + "ResolutionWidth", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 9 + } + ] + }, + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "{_yql_agg_2: COUNT(item.UserID,state._yql_agg_2)}", + "GroupBy": "item.RegionID", + "Name": "Aggregate" + } + ], + "PlanNodeId": 11, + "Plans": [ + { + "Node Type": "Aggregate", + "Operators": [ + { + "Aggregation": "state", + "GroupBy": "", + "Name": "Aggregate" + } + ], + "PlanNodeId": 13, + "Plans": [ + { + "Node Type": "TableFullScan", + "Operators": [ + { + "Name": "TableFullScan", + "ReadColumns": [ + "AdvEngineID", + "RegionID", + "ResolutionWidth", + "UserID" + ], + "ReadRanges": [ + "EventTime (-\u221e, +\u221e)", + "CounterID (-\u221e, +\u221e)", + "EventDate (-\u221e, +\u221e)", + "UserID (-\u221e, +\u221e)", + "WatchID (-\u221e, +\u221e)" + ], + "Table": "clickbench/plans/row/hits" + } + ], + "PlanNodeId": 14 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, "tables": [ { "name": "/local/clickbench/plans/row/hits", From 20c3a09a5925b4b00644e1cb8e581c0ab698b57d Mon Sep 17 00:00:00 2001 From: jsjant <jsjant@gmail.com> Date: Wed, 19 Jun 2024 14:15:09 +0300 Subject: [PATCH 105/110] Roaring udf cherry pick 24 1 (#5629) --- contrib/libs/croaring/AUTHORS | 15 + contrib/libs/croaring/LICENSE | 236 ++ contrib/libs/croaring/README.md | 916 +++++ contrib/libs/croaring/SECURITY.md | 9 + .../croaring/include/roaring/array_util.h | 274 ++ .../libs/croaring/include/roaring/art/art.h | 192 + .../croaring/include/roaring/bitset/bitset.h | 294 ++ .../croaring/include/roaring/bitset_util.h | 718 ++++ .../include/roaring/containers/array.h | 521 +++ .../include/roaring/containers/bitset.h | 514 +++ .../roaring/containers/container_defs.h | 100 + .../include/roaring/containers/containers.h | 2486 ++++++++++++ .../include/roaring/containers/convert.h | 73 + .../include/roaring/containers/mixed_andnot.h | 181 + .../include/roaring/containers/mixed_equal.h | 42 + .../roaring/containers/mixed_intersection.h | 101 + .../roaring/containers/mixed_negation.h | 140 + .../include/roaring/containers/mixed_subset.h | 55 + .../include/roaring/containers/mixed_union.h | 117 + .../include/roaring/containers/mixed_xor.h | 177 + .../roaring/containers/perfparameters.h | 49 + .../croaring/include/roaring/containers/run.h | 718 ++++ .../croaring/include/roaring/isadetection.h | 42 + .../libs/croaring/include/roaring/memory.h | 39 + .../croaring/include/roaring/portability.h | 600 +++ .../libs/croaring/include/roaring/roaring.h | 1132 ++++++ .../libs/croaring/include/roaring/roaring64.h | 657 ++++ .../croaring/include/roaring/roaring_array.h | 305 ++ .../croaring/include/roaring/roaring_types.h | 115 + .../include/roaring/roaring_version.h | 11 + .../libs/croaring/include/roaring/utilasm.h | 80 + contrib/libs/croaring/src/array_util.c | 2172 +++++++++++ contrib/libs/croaring/src/art/art.c | 1897 +++++++++ contrib/libs/croaring/src/bitset.c | 482 +++ contrib/libs/croaring/src/bitset_util.c | 1161 ++++++ contrib/libs/croaring/src/containers/array.c | 575 +++ contrib/libs/croaring/src/containers/bitset.c | 1309 +++++++ .../libs/croaring/src/containers/containers.c | 715 ++++ .../libs/croaring/src/containers/convert.c | 354 ++ .../croaring/src/containers/mixed_andnot.c | 522 +++ .../croaring/src/containers/mixed_equal.c | 88 + .../src/containers/mixed_intersection.c | 351 ++ .../croaring/src/containers/mixed_negation.c | 354 ++ .../croaring/src/containers/mixed_subset.c | 145 + .../croaring/src/containers/mixed_union.c | 372 ++ .../libs/croaring/src/containers/mixed_xor.c | 385 ++ contrib/libs/croaring/src/containers/run.c | 1083 ++++++ contrib/libs/croaring/src/isadetection.c | 339 ++ contrib/libs/croaring/src/memory.c | 64 + contrib/libs/croaring/src/roaring.c | 3386 +++++++++++++++++ contrib/libs/croaring/src/roaring64.c | 2091 ++++++++++ contrib/libs/croaring/src/roaring_array.c | 888 +++++ .../croaring/src/roaring_priority_queue.c | 253 ++ contrib/libs/croaring/ya.make | 51 + .../yql/udfs/common/roaring/roaring.cpp | 450 +++ .../common/roaring/test/canondata/result.json | 22 + .../test.test_cardinality_/results.txt | 69 + .../test.test_intersect_/results.txt | 106 + .../results.txt | 176 + .../canondata/test.test_union_/results.txt | 78 + .../common/roaring/test/cases/cardinality.in | 1 + .../roaring/test/cases/cardinality.in.attr | 1 + .../common/roaring/test/cases/cardinality.sql | 2 + .../common/roaring/test/cases/intersect.in | 1 + .../roaring/test/cases/intersect.in.attr | 1 + .../common/roaring/test/cases/intersect.sql | 3 + .../test/cases/serialize_deserialize.in | 1 + .../test/cases/serialize_deserialize.in.attr | 1 + .../test/cases/serialize_deserialize.sql | 15 + .../udfs/common/roaring/test/cases/union.in | 1 + .../common/roaring/test/cases/union.in.attr | 1 + .../udfs/common/roaring/test/cases/union.sql | 3 + .../yql/udfs/common/roaring/test/ya.make | 12 + ydb/library/yql/udfs/common/roaring/ya.make | 22 + ydb/library/yql/udfs/common/ya.make | 1 + 75 files changed, 30913 insertions(+) create mode 100644 contrib/libs/croaring/AUTHORS create mode 100644 contrib/libs/croaring/LICENSE create mode 100644 contrib/libs/croaring/README.md create mode 100644 contrib/libs/croaring/SECURITY.md create mode 100644 contrib/libs/croaring/include/roaring/array_util.h create mode 100644 contrib/libs/croaring/include/roaring/art/art.h create mode 100644 contrib/libs/croaring/include/roaring/bitset/bitset.h create mode 100644 contrib/libs/croaring/include/roaring/bitset_util.h create mode 100644 contrib/libs/croaring/include/roaring/containers/array.h create mode 100644 contrib/libs/croaring/include/roaring/containers/bitset.h create mode 100644 contrib/libs/croaring/include/roaring/containers/container_defs.h create mode 100644 contrib/libs/croaring/include/roaring/containers/containers.h create mode 100644 contrib/libs/croaring/include/roaring/containers/convert.h create mode 100644 contrib/libs/croaring/include/roaring/containers/mixed_andnot.h create mode 100644 contrib/libs/croaring/include/roaring/containers/mixed_equal.h create mode 100644 contrib/libs/croaring/include/roaring/containers/mixed_intersection.h create mode 100644 contrib/libs/croaring/include/roaring/containers/mixed_negation.h create mode 100644 contrib/libs/croaring/include/roaring/containers/mixed_subset.h create mode 100644 contrib/libs/croaring/include/roaring/containers/mixed_union.h create mode 100644 contrib/libs/croaring/include/roaring/containers/mixed_xor.h create mode 100644 contrib/libs/croaring/include/roaring/containers/perfparameters.h create mode 100644 contrib/libs/croaring/include/roaring/containers/run.h create mode 100644 contrib/libs/croaring/include/roaring/isadetection.h create mode 100644 contrib/libs/croaring/include/roaring/memory.h create mode 100644 contrib/libs/croaring/include/roaring/portability.h create mode 100644 contrib/libs/croaring/include/roaring/roaring.h create mode 100644 contrib/libs/croaring/include/roaring/roaring64.h create mode 100644 contrib/libs/croaring/include/roaring/roaring_array.h create mode 100644 contrib/libs/croaring/include/roaring/roaring_types.h create mode 100644 contrib/libs/croaring/include/roaring/roaring_version.h create mode 100644 contrib/libs/croaring/include/roaring/utilasm.h create mode 100644 contrib/libs/croaring/src/array_util.c create mode 100644 contrib/libs/croaring/src/art/art.c create mode 100644 contrib/libs/croaring/src/bitset.c create mode 100644 contrib/libs/croaring/src/bitset_util.c create mode 100644 contrib/libs/croaring/src/containers/array.c create mode 100644 contrib/libs/croaring/src/containers/bitset.c create mode 100644 contrib/libs/croaring/src/containers/containers.c create mode 100644 contrib/libs/croaring/src/containers/convert.c create mode 100644 contrib/libs/croaring/src/containers/mixed_andnot.c create mode 100644 contrib/libs/croaring/src/containers/mixed_equal.c create mode 100644 contrib/libs/croaring/src/containers/mixed_intersection.c create mode 100644 contrib/libs/croaring/src/containers/mixed_negation.c create mode 100644 contrib/libs/croaring/src/containers/mixed_subset.c create mode 100644 contrib/libs/croaring/src/containers/mixed_union.c create mode 100644 contrib/libs/croaring/src/containers/mixed_xor.c create mode 100644 contrib/libs/croaring/src/containers/run.c create mode 100644 contrib/libs/croaring/src/isadetection.c create mode 100644 contrib/libs/croaring/src/memory.c create mode 100644 contrib/libs/croaring/src/roaring.c create mode 100644 contrib/libs/croaring/src/roaring64.c create mode 100644 contrib/libs/croaring/src/roaring_array.c create mode 100644 contrib/libs/croaring/src/roaring_priority_queue.c create mode 100644 contrib/libs/croaring/ya.make create mode 100644 ydb/library/yql/udfs/common/roaring/roaring.cpp create mode 100644 ydb/library/yql/udfs/common/roaring/test/canondata/result.json create mode 100644 ydb/library/yql/udfs/common/roaring/test/canondata/test.test_cardinality_/results.txt create mode 100644 ydb/library/yql/udfs/common/roaring/test/canondata/test.test_intersect_/results.txt create mode 100644 ydb/library/yql/udfs/common/roaring/test/canondata/test.test_serialize_deserialize_/results.txt create mode 100644 ydb/library/yql/udfs/common/roaring/test/canondata/test.test_union_/results.txt create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/cardinality.in create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/cardinality.in.attr create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/cardinality.sql create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/intersect.in create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/intersect.in.attr create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/intersect.sql create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.in create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.in.attr create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.sql create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/union.in create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/union.in.attr create mode 100644 ydb/library/yql/udfs/common/roaring/test/cases/union.sql create mode 100644 ydb/library/yql/udfs/common/roaring/test/ya.make create mode 100644 ydb/library/yql/udfs/common/roaring/ya.make diff --git a/contrib/libs/croaring/AUTHORS b/contrib/libs/croaring/AUTHORS new file mode 100644 index 000000000000..a53c36d59427 --- /dev/null +++ b/contrib/libs/croaring/AUTHORS @@ -0,0 +1,15 @@ +# List of authors for copyright purposes + +Tom Cornebize +Luca Deri +Jacob Evans +Owen Kaser +Nathan Kurz +Daniel Lemire +Wojciech Muła +Chris O'Hara +François Saint-Jacques +Gregory Ssi-Yan-Kai +Andrei Gudkov +Guillaume Holley +Brian Esch diff --git a/contrib/libs/croaring/LICENSE b/contrib/libs/croaring/LICENSE new file mode 100644 index 000000000000..8b0ad80d743d --- /dev/null +++ b/contrib/libs/croaring/LICENSE @@ -0,0 +1,236 @@ +The CRoaring project is under a dual license (Apache/MIT). +Users of the library may choose one or the other license. + +------------------ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2016-2022 The CRoaring authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +----------------------------------- + +MIT License + +Copyright 2016-2022 The CRoaring authors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/contrib/libs/croaring/README.md b/contrib/libs/croaring/README.md new file mode 100644 index 000000000000..954ff2d0d7e9 --- /dev/null +++ b/contrib/libs/croaring/README.md @@ -0,0 +1,916 @@ +# CRoaring + +[![Ubuntu-CI](https://github.com/RoaringBitmap/CRoaring/actions/workflows/ubuntu-noexcept-ci.yml/badge.svg)](https://github.com/RoaringBitmap/CRoaring/actions/workflows/ubuntu-noexcept-ci.yml) [![VS17-CI](https://github.com/RoaringBitmap/CRoaring/actions/workflows/vs17-ci.yml/badge.svg)](https://github.com/RoaringBitmap/CRoaring/actions/workflows/vs17-ci.yml) +[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/croaring.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:croaring) + +[![Doxygen Documentation](https://img.shields.io/badge/docs-doxygen-green.svg)](http://roaringbitmap.github.io/CRoaring/) + + + +Portable Roaring bitmaps in C (and C++) with full support for your favorite compiler (GNU GCC, LLVM's clang, Visual Studio, Apple Xcode, Intel oneAPI). Included in the [Awesome C](https://github.com/kozross/awesome-c) list of open source C software. + +# Introduction + +Bitsets, also called bitmaps, are commonly used as fast data structures. Unfortunately, they can use too much memory. + To compensate, we often use compressed bitmaps. + +Roaring bitmaps are compressed bitmaps which tend to outperform conventional compressed bitmaps such as WAH, EWAH or Concise. +They are used by several major systems such as [Apache Lucene][lucene] and derivative systems such as [Solr][solr] and +[Elasticsearch][elasticsearch], [Metamarkets' Druid][druid], [LinkedIn Pinot][pinot], [Netflix Atlas][atlas], [Apache Spark][spark], [OpenSearchServer][opensearchserver], [Cloud Torrent][cloudtorrent], [Whoosh][whoosh], [InfluxDB](https://www.influxdata.com), [Pilosa][pilosa], [Bleve](http://www.blevesearch.com), [Microsoft Visual Studio Team Services (VSTS)][vsts], and eBay's [Apache Kylin][kylin]. The CRoaring library is used in several systems such as [Apache Doris](http://doris.incubator.apache.org), [ClickHouse](https://github.com/ClickHouse/ClickHouse), and [StarRocks](https://github.com/StarRocks/starrocks). The YouTube SQL Engine, [Google Procella](https://research.google/pubs/pub48388/), uses Roaring bitmaps for indexing. + +We published a peer-reviewed article on the design and evaluation of this library: + +- Roaring Bitmaps: Implementation of an Optimized Software Library, Software: Practice and Experience 48 (4), 2018 [arXiv:1709.07821](https://arxiv.org/abs/1709.07821) + +[lucene]: https://lucene.apache.org/ +[solr]: https://lucene.apache.org/solr/ +[elasticsearch]: https://www.elastic.co/products/elasticsearch +[druid]: http://druid.io/ +[spark]: https://spark.apache.org/ +[opensearchserver]: http://www.opensearchserver.com +[cloudtorrent]: https://github.com/jpillora/cloud-torrent +[whoosh]: https://bitbucket.org/mchaput/whoosh/wiki/Home +[pilosa]: https://www.pilosa.com/ +[kylin]: http://kylin.apache.org/ +[pinot]: http://github.com/linkedin/pinot/wiki +[vsts]: https://www.visualstudio.com/team-services/ +[atlas]: https://github.com/Netflix/atlas + +Roaring bitmaps are found to work well in many important applications: + +> Use Roaring for bitmap compression whenever possible. Do not use other bitmap compression methods ([Wang et al., SIGMOD 2017](http://db.ucsd.edu/wp-content/uploads/2017/03/sidm338-wangA.pdf)) + + +[There is a serialized format specification for interoperability between implementations](https://github.com/RoaringBitmap/RoaringFormatSpec/). Hence, it is possible to serialize a Roaring Bitmap from C++, read it in Java, modify it, serialize it back and read it in Go and Python. + +# Objective + +The primary goal of the CRoaring is to provide a high performance low-level implementation that fully take advantage +of the latest hardware. Roaring bitmaps are already available on a variety of platform through Java, Go, Rust... implementations. CRoaring is a library that seeks to achieve superior performance by staying close to the latest hardware. + + +(c) 2016-... The CRoaring authors. + + + +# Requirements + +- Linux, macOS, FreeBSD, Windows (MSYS2 and Microsoft Visual studio). +- We test the library with ARM, x64/x86 and POWER processors. We only support little endian systems (big endian systems are vanishingly rare). +- Recent C compiler supporting the C11 standard (GCC 7 or better, LLVM 8 or better (clang), Xcode 11 or better, Microsoft Visual Studio 2022 or better, Intel oneAPI Compiler 2023.2 or better), there is also an optional C++ class that requires a C++ compiler supporting the C++11 standard. +- CMake (to contribute to the project, users can rely on amalgamation/unity builds if they do not wish to use CMake). +- The CMake system assumes that git is available. +- Under x64 systems, the library provides runtime dispatch so that optimized functions are called based on the detected CPU features. It works with GCC, clang (version 9 and up) and Visual Studio (2017 and up). Other systems (e.g., ARM) do not need runtime dispatch. + +Hardly anyone has access to an actual big-endian system. Nevertheless, +We support big-endian systems such as IBM s390x through emulators---except for +IO serialization which is only supported on little-endian systems (see [issue 423](https://github.com/RoaringBitmap/CRoaring/issues/423)). + + +# Quick Start + +The CRoaring library can be amalgamated into a single source file that makes it easier +for integration into other projects. Moreover, by making it possible to compile +all the critical code into one compilation unit, it can improve the performance. For +the rationale, please see the [SQLite documentation](https://www.sqlite.org/amalgamation.html), +or the corresponding [Wikipedia entry](https://en.wikipedia.org/wiki/Single_Compilation_Unit). +Users who choose this route, do not need to rely on CRoaring's build system (based on CMake). + +We offer amalgamated files as part of each release. + +Linux or macOS users might follow the following instructions if they have a recent C or C++ compiler installed and a standard utility (`wget`). + + + 1. Pull the library in a directory + ``` + wget https://github.com/RoaringBitmap/CRoaring/releases/download/v2.1.0/roaring.c + wget https://github.com/RoaringBitmap/CRoaring/releases/download/v2.1.0/roaring.h + wget https://github.com/RoaringBitmap/CRoaring/releases/download/v2.1.0/roaring.hh + ``` + 2. Create a new file named `demo.c` with this content: + ```C + #include <stdio.h> + #include <stdlib.h> + #include "roaring.c" + int main() { + roaring_bitmap_t *r1 = roaring_bitmap_create(); + for (uint32_t i = 100; i < 1000; i++) roaring_bitmap_add(r1, i); + printf("cardinality = %d\n", (int) roaring_bitmap_get_cardinality(r1)); + roaring_bitmap_free(r1); + + bitset_t *b = bitset_create(); + for (int k = 0; k < 1000; ++k) { + bitset_set(b, 3 * k); + } + printf("%zu \n", bitset_count(b)); + bitset_free(b); + return EXIT_SUCCESS; + } + ``` + 2. Create a new file named `demo.cpp` with this content: + ```C++ + #include <iostream> + #include "roaring.hh" // the amalgamated roaring.hh includes roaring64map.hh + #include "roaring.c" + int main() { + roaring::Roaring r1; + for (uint32_t i = 100; i < 1000; i++) { + r1.add(i); + } + std::cout << "cardinality = " << r1.cardinality() << std::endl; + + roaring::Roaring64Map r2; + for (uint64_t i = 18000000000000000100ull; i < 18000000000000001000ull; i++) { + r2.add(i); + } + std::cout << "cardinality = " << r2.cardinality() << std::endl; + return 0; + } + ``` + 2. Compile + ``` + cc -o demo demo.c + c++ -std=c++11 -o demopp demo.cpp + ``` + 3. `./demo` + ``` + cardinality = 900 + 1000 + ``` + 4. `./demopp` + ``` + cardinality = 900 + cardinality = 900 + ``` + + +# Using Roaring as a CPM dependency + + +If you like CMake and CPM, you can just a few lines in you `CMakeLists.txt` file to grab a `CRoaring` release. [See our CPM demonstration for further details](https://github.com/RoaringBitmap/CPMdemo). + + + +```CMake +cmake_minimum_required(VERSION 3.10) +project(roaring_demo + LANGUAGES CXX C +) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_C_STANDARD 11) + +add_executable(hello hello.cpp) +# You can add CPM.cmake like so: +# mkdir -p cmake +# wget -O cmake/CPM.cmake https://github.com/cpm-cmake/CPM.cmake/releases/latest/download/get_cpm.cmake +include(cmake/CPM.cmake) +CPMAddPackage( + NAME roaring + GITHUB_REPOSITORY "RoaringBitmap/CRoaring" + GIT_TAG v2.0.4 + OPTIONS "BUILD_TESTING OFF" +) + +target_link_libraries(hello roaring::roaring) +``` + + +# Using as a CMake dependency with FetchContent + +If you like CMake, you can just a few lines in you `CMakeLists.txt` file to grab a `CRoaring` release. [See our demonstration for further details](https://github.com/RoaringBitmap/croaring_cmake_demo_single_file). + +If you installed the CRoaring library locally, you may use it with CMake's `find_package` function as in this example: + +```CMake +cmake_minimum_required(VERSION 3.15) + +project(test_roaring_install VERSION 0.1.0 LANGUAGES CXX C) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) + +find_package(roaring REQUIRED) + +file(WRITE main.cpp " +#include <iostream> +#include \"roaring/roaring.hh\" +int main() { + roaring::Roaring r1; + for (uint32_t i = 100; i < 1000; i++) { + r1.add(i); + } + std::cout << \"cardinality = \" << r1.cardinality() << std::endl; + return 0; +}") + +add_executable(repro main.cpp) +target_link_libraries(repro PUBLIC roaring::roaring) +``` + + +# Amalgamating + +To generate the amalgamated files yourself, you can invoke a bash script... + +```bash +./amalgamation.sh +``` + +If you prefer a silent output, you can use the following command to redirect ``stdout`` : + +```bash +./amalgamation.sh > /dev/null +``` + + +(Bash shells are standard under Linux and macOS. Bash shells are available under Windows as part of the  [GitHub Desktop](https://desktop.github.com/) under the name ``Git Shell``. So if you have cloned the ``CRoaring`` GitHub repository from within the GitHub Desktop, you can right-click on ``CRoaring``, select ``Git Shell`` and then enter the above commands.) + +It is not necessary to invoke the script in the CRoaring directory. You can invoke +it from any directory where you want the amalgamation files to be written. + +It will generate three files for C users: ``roaring.h``, ``roaring.c`` and ``amalgamation_demo.c``... as well as some brief instructions. The ``amalgamation_demo.c`` file is a short example, whereas ``roaring.h`` and ``roaring.c`` are "amalgamated" files (including all source and header files for the project). This means that you can simply copy the files ``roaring.h`` and ``roaring.c`` into your project and be ready to go! No need to produce a library! See the ``amalgamation_demo.c`` file. + +# API + +The C interface is found in the file ``include/roaring/roaring.h``. We have C++ interface at `cpp/roaring.hh`. + +# Dealing with large volumes + +Some users have to deal with large volumes of data. It may be important for these users to be aware of the `addMany` (C++) `roaring_bitmap_or_many` (C) functions as it is much faster and economical to add values in batches when possible. Furthermore, calling periodically the `runOptimize` (C++) or `roaring_bitmap_run_optimize` (C) functions may help. + + +# Running microbenchmarks + +We have microbenchmarks constructed with the Google Benchmarks. +Under Linux or macOS, you may run them as follows: + +``` +cmake -B build +cmake --build build +./build/microbenchmarks/bench +``` + +By default, the benchmark tools picks one data set (e.g., `CRoaring/benchmarks/realdata/census1881`). +We have several data sets and you may pick others: + +``` +./build/microbenchmarks/bench benchmarks/realdata/wikileaks-noquotes +``` + +You may disable some functionality for the purpose of benchmarking. For example, assuming you +have an x64 processor, you could benchmark the code without AVX-512 even if both your processor +and compiler supports it: + +``` +cmake -B buildnoavx512 -D ROARING_DISABLE_AVX512=ON +cmake --build buildnoavx512 +./buildnoavx512/microbenchmarks/bench +``` + +You can benchmark without AVX or AVX-512 as well: + +``` +cmake -B buildnoavx -D ROARING_DISABLE_AVX=ON +cmake --build buildnoavx +./buildnoavx/microbenchmarks/bench +``` + +# Custom memory allocators +For general users, CRoaring would apply default allocator without extra codes. But global memory hook is also provided for those who want a custom memory allocator. Here is an example: +```C +#include <roaring.h> + +int main(){ + // define with your own memory hook + roaring_memory_t my_hook{my_malloc, my_free ...}; + // initialize global memory hook + roaring_init_memory_hook(my_hook); + // write you code here + ... +} +``` + + +# Example (C) + + +This example assumes that CRoaring has been build and that you are linking against the corresponding library. By default, CRoaring will install its header files in a `roaring` directory. If you are working from the amalgamation script, you may add the line `#include "roaring.c"` if you are not linking against a prebuilt CRoaring library and replace `#include <roaring/roaring.h>` by `#include "roaring.h"`. + +```c +#include <roaring/roaring.h> +#include <stdio.h> +#include <stdlib.h> +#include <assert.h> + +bool roaring_iterator_sumall(uint32_t value, void *param) { + *(uint32_t *)param += value; + return true; // iterate till the end +} + +int main() { + // create a new empty bitmap + roaring_bitmap_t *r1 = roaring_bitmap_create(); + // then we can add values + for (uint32_t i = 100; i < 1000; i++) roaring_bitmap_add(r1, i); + // check whether a value is contained + assert(roaring_bitmap_contains(r1, 500)); + // compute how many bits there are: + uint32_t cardinality = roaring_bitmap_get_cardinality(r1); + printf("Cardinality = %d \n", cardinality); + + // if your bitmaps have long runs, you can compress them by calling + // run_optimize + uint32_t expectedsizebasic = roaring_bitmap_portable_size_in_bytes(r1); + roaring_bitmap_run_optimize(r1); + uint32_t expectedsizerun = roaring_bitmap_portable_size_in_bytes(r1); + printf("size before run optimize %d bytes, and after %d bytes\n", + expectedsizebasic, expectedsizerun); + + // create a new bitmap containing the values {1,2,3,5,6} + roaring_bitmap_t *r2 = roaring_bitmap_from(1, 2, 3, 5, 6); + roaring_bitmap_printf(r2); // print it + + // we can also create a bitmap from a pointer to 32-bit integers + uint32_t somevalues[] = {2, 3, 4}; + roaring_bitmap_t *r3 = roaring_bitmap_of_ptr(3, somevalues); + + // we can also go in reverse and go from arrays to bitmaps + uint64_t card1 = roaring_bitmap_get_cardinality(r1); + uint32_t *arr1 = (uint32_t *)malloc(card1 * sizeof(uint32_t)); + assert(arr1 != NULL); + roaring_bitmap_to_uint32_array(r1, arr1); + roaring_bitmap_t *r1f = roaring_bitmap_of_ptr(card1, arr1); + free(arr1); + assert(roaring_bitmap_equals(r1, r1f)); // what we recover is equal + roaring_bitmap_free(r1f); + + // we can go from arrays to bitmaps from "offset" by "limit" + size_t offset = 100; + size_t limit = 1000; + uint32_t *arr3 = (uint32_t *)malloc(limit * sizeof(uint32_t)); + assert(arr3 != NULL); + roaring_bitmap_range_uint32_array(r1, offset, limit, arr3); + free(arr3); + + // we can copy and compare bitmaps + roaring_bitmap_t *z = roaring_bitmap_copy(r3); + assert(roaring_bitmap_equals(r3, z)); // what we recover is equal + roaring_bitmap_free(z); + + // we can compute union two-by-two + roaring_bitmap_t *r1_2_3 = roaring_bitmap_or(r1, r2); + roaring_bitmap_or_inplace(r1_2_3, r3); + + // we can compute a big union + const roaring_bitmap_t *allmybitmaps[] = {r1, r2, r3}; + roaring_bitmap_t *bigunion = roaring_bitmap_or_many(3, allmybitmaps); + assert( + roaring_bitmap_equals(r1_2_3, bigunion)); // what we recover is equal + // can also do the big union with a heap + roaring_bitmap_t *bigunionheap = + roaring_bitmap_or_many_heap(3, allmybitmaps); + assert(roaring_bitmap_equals(r1_2_3, bigunionheap)); + + roaring_bitmap_free(r1_2_3); + roaring_bitmap_free(bigunion); + roaring_bitmap_free(bigunionheap); + + // we can compute intersection two-by-two + roaring_bitmap_t *i1_2 = roaring_bitmap_and(r1, r2); + roaring_bitmap_free(i1_2); + + // we can write a bitmap to a pointer and recover it later + uint32_t expectedsize = roaring_bitmap_portable_size_in_bytes(r1); + char *serializedbytes = malloc(expectedsize); + roaring_bitmap_portable_serialize(r1, serializedbytes); + // Note: it is expected that the input follows the specification + // https://github.com/RoaringBitmap/RoaringFormatSpec + // otherwise the result may be unusable. + roaring_bitmap_t *t = roaring_bitmap_portable_deserialize_safe(serializedbytes, expectedsize); + if(t == NULL) { return EXIT_FAILURE; } + const char *reason = NULL; + if (!roaring_bitmap_internal_validate(t, &reason)) { + return EXIT_FAILURE; + } + assert(roaring_bitmap_equals(r1, t)); // what we recover is equal + roaring_bitmap_free(t); + // we can also check whether there is a bitmap at a memory location without + // reading it + size_t sizeofbitmap = + roaring_bitmap_portable_deserialize_size(serializedbytes, expectedsize); + assert(sizeofbitmap == + expectedsize); // sizeofbitmap would be zero if no bitmap were found + // we can also read the bitmap "safely" by specifying a byte size limit: + t = roaring_bitmap_portable_deserialize_safe(serializedbytes, expectedsize); + if(t == NULL) { + printf("Problem during deserialization.\n"); + // We could clear any memory and close any file here. + return EXIT_FAILURE; + } + // We can validate the bitmap we recovered to make sure it is proper. + const char *reason_failure = NULL; + if (!roaring_bitmap_internal_validate(t, &reason_failure)) { + printf("safely deserialized invalid bitmap: %s\n", reason_failure); + // We could clear any memory and close any file here. + return EXIT_FAILURE; + } + // It is still necessary for the content of seriallizedbytes to follow + // the standard: https://github.com/RoaringBitmap/RoaringFormatSpec + // This is guaranted when calling 'roaring_bitmap_portable_deserialize'. + assert(roaring_bitmap_equals(r1, t)); // what we recover is equal + roaring_bitmap_free(t); + + free(serializedbytes); + + // we can iterate over all values using custom functions + uint32_t counter = 0; + roaring_iterate(r1, roaring_iterator_sumall, &counter); + + // we can also create iterator structs + counter = 0; + roaring_uint32_iterator_t *i = roaring_iterator_create(r1); + while (i->has_value) { + counter++; // could use i->current_value + roaring_uint32_iterator_advance(i); + } + // you can skip over values and move the iterator with + // roaring_uint32_iterator_move_equalorlarger(i,someintvalue) + + roaring_uint32_iterator_free(i); + // roaring_bitmap_get_cardinality(r1) == counter + + // for greater speed, you can iterate over the data in bulk + i = roaring_iterator_create(r1); + uint32_t buffer[256]; + while (1) { + uint32_t ret = roaring_uint32_iterator_read(i, buffer, 256); + for (uint32_t j = 0; j < ret; j++) { + counter += buffer[j]; + } + if (ret < 256) { + break; + } + } + roaring_uint32_iterator_free(i); + + roaring_bitmap_free(r1); + roaring_bitmap_free(r2); + roaring_bitmap_free(r3); + return EXIT_SUCCESS; +} +``` + +# Compressed 64-bit Roaring bitmaps (C) + + +We also support efficient 64-bit compressed bitmaps in C: + +```c++ + roaring64_bitmap_t *r2 = roaring64_bitmap_create(); + for (uint64_t i = 100; i < 1000; i++) roaring64_bitmap_add(r2, i); + printf("cardinality (64-bit) = %d\n", (int) roaring64_bitmap_get_cardinality(r2)); + roaring64_bitmap_free(r2); +``` + + +# Conventional bitsets (C) + +We support convention bitsets (uncompressed) as part of the library. + +Simple example: + +```C +bitset_t * b = bitset_create(); +bitset_set(b,10); +bitset_get(b,10);// returns true +bitset_free(b); // frees memory +``` + +More advanced example: + +```C + bitset_t *b = bitset_create(); + for (int k = 0; k < 1000; ++k) { + bitset_set(b, 3 * k); + } + // We have bitset_count(b) == 1000. + // We have bitset_get(b, 3) is true + // You can iterate through the values: + size_t k = 0; + for (size_t i = 0; bitset_next_set_bit(b, &i); i++) { + // You will have i == k + k += 3; + } + // We support a wide range of operations on two bitsets such as + // bitset_inplace_symmetric_difference(b1,b2); + // bitset_inplace_symmetric_difference(b1,b2); + // bitset_inplace_difference(b1,b2);// should make no difference + // bitset_inplace_union(b1,b2); + // bitset_inplace_intersection(b1,b2); + // bitsets_disjoint + // bitsets_intersect +``` + +In some instances, you may want to convert a Roaring bitmap into a conventional (uncompressed) bitset. +Indeed, bitsets have advantages such as higher query performances in some cases. The following code +illustrates how you may do so: + +```C + roaring_bitmap_t *r1 = roaring_bitmap_create(); + for (uint32_t i = 100; i < 100000; i+= 1 + (i%5)) { + roaring_bitmap_add(r1, i); + } + for (uint32_t i = 100000; i < 500000; i+= 100) { + roaring_bitmap_add(r1, i); + } + roaring_bitmap_add_range(r1, 500000, 600000); + bitset_t * bitset = bitset_create(); + bool success = roaring_bitmap_to_bitset(r1, bitset); + assert(success); // could fail due to memory allocation. + assert(bitset_count(bitset) == roaring_bitmap_get_cardinality(r1)); + // You can then query the bitset: + for (uint32_t i = 100; i < 100000; i+= 1 + (i%5)) { + assert(bitset_get(bitset,i)); + } + for (uint32_t i = 100000; i < 500000; i+= 100) { + assert(bitset_get(bitset,i)); + } + // you must free the memory: + bitset_free(bitset); + roaring_bitmap_free(r1); +``` + +You should be aware that a convention bitset (`bitset_t *`) may use much more +memory than a Roaring bitmap in some cases. You should run benchmarks to determine +whether the conversion to a bitset has performance benefits in your case. + +# Example (C++) + + +This example assumes that CRoaring has been build and that you are linking against the corresponding library. By default, CRoaring will install its header files in a `roaring` directory so you may need to replace `#include "roaring.hh"` by `#include <roaring/roaring.hh>`. If you are working from the amalgamation script, you may add the line `#include "roaring.c"` if you are not linking against a CRoaring prebuilt library. + +```c++ +#include <iostream> + +#include "roaring.hh" + +using namespace roaring; + +int main() { + Roaring r1; + for (uint32_t i = 100; i < 1000; i++) { + r1.add(i); + } + + // check whether a value is contained + assert(r1.contains(500)); + + // compute how many bits there are: + uint32_t cardinality = r1.cardinality(); + + // if your bitmaps have long runs, you can compress them by calling + // run_optimize + uint32_t size = r1.getSizeInBytes(); + r1.runOptimize(); + + // you can enable "copy-on-write" for fast and shallow copies + r1.setCopyOnWrite(true); + + uint32_t compact_size = r1.getSizeInBytes(); + std::cout << "size before run optimize " << size << " bytes, and after " + << compact_size << " bytes." << std::endl; + + // create a new bitmap with varargs + Roaring r2 = Roaring::bitmapOf(5, 1, 2, 3, 5, 6); + + r2.printf(); + printf("\n"); + + // create a new bitmap with initializer list + Roaring r2i = Roaring::bitmapOfList({1, 2, 3, 5, 6}); + + assert(r2i == r2); + + // we can also create a bitmap from a pointer to 32-bit integers + const uint32_t values[] = {2, 3, 4}; + Roaring r3(3, values); + + // we can also go in reverse and go from arrays to bitmaps + uint64_t card1 = r1.cardinality(); + uint32_t *arr1 = new uint32_t[card1]; + r1.toUint32Array(arr1); + Roaring r1f(card1, arr1); + delete[] arr1; + + // bitmaps shall be equal + assert(r1 == r1f); + + // we can copy and compare bitmaps + Roaring z(r3); + assert(r3 == z); + + // we can compute union two-by-two + Roaring r1_2_3 = r1 | r2; + r1_2_3 |= r3; + + // we can compute a big union + const Roaring *allmybitmaps[] = {&r1, &r2, &r3}; + Roaring bigunion = Roaring::fastunion(3, allmybitmaps); + assert(r1_2_3 == bigunion); + + // we can compute intersection two-by-two + Roaring i1_2 = r1 & r2; + + // we can write a bitmap to a pointer and recover it later + uint32_t expectedsize = r1.getSizeInBytes(); + char *serializedbytes = new char[expectedsize]; + r1.write(serializedbytes); + // readSafe will not overflow, but the resulting bitmap + // is only valid and usable if the input follows the + // Roaring specification: https://github.com/RoaringBitmap/RoaringFormatSpec/ + Roaring t = Roaring::readSafe(serializedbytes, expectedsize); + assert(r1 == t); + delete[] serializedbytes; + + // we can iterate over all values using custom functions + uint32_t counter = 0; + r1.iterate( + [](uint32_t value, void *param) { + *(uint32_t *)param += value; + return true; + }, + &counter); + + // we can also iterate the C++ way + counter = 0; + for (Roaring::const_iterator i = t.begin(); i != t.end(); i++) { + ++counter; + } + // counter == t.cardinality() + + // we can move iterators to skip values + const uint32_t manyvalues[] = {2, 3, 4, 7, 8}; + Roaring rogue(5, manyvalues); + Roaring::const_iterator j = rogue.begin(); + j.equalorlarger(4); // *j == 4 + return EXIT_SUCCESS; +} + +``` + + + +# Building with cmake (Linux and macOS, Visual Studio users should see below) + +CRoaring follows the standard cmake workflow. Starting from the root directory of +the project (CRoaring), you can do: + +``` +mkdir -p build +cd build +cmake .. +cmake --build . +# follow by 'ctest' if you want to test. +# you can also type 'make install' to install the library on your system +# C header files typically get installed to /usr/local/include/roaring +# whereas C++ header files get installed to /usr/local/include/roaring +``` +(You can replace the ``build`` directory with any other directory name.) +By default all tests are built on all platforms, to skip building and running tests add `` -DENABLE_ROARING_TESTS=OFF `` to the command line. + +As with all ``cmake`` projects, you can specify the compilers you wish to use by adding (for example) ``-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++`` to the ``cmake`` command line. + +If you are using clang or gcc and you know your target architecture, you can set the architecture by specifying `-DROARING_ARCH=arch`. For example, if you have many server but the oldest server is running the Intel `haswell` architecture, you can specify -`DROARING_ARCH=haswell`. In such cases, the produced binary will be optimized for processors having the characteristics of a haswell process and may not run on older architectures. You can find out the list of valid architecture values by typing `man gcc`. + + ``` + mkdir -p build_haswell + cd build_haswell + cmake -DROARING_ARCH=haswell .. + cmake --build . + ``` + +For a debug release, starting from the root directory of the project (CRoaring), try + +``` +mkdir -p debug +cd debug +cmake -DCMAKE_BUILD_TYPE=Debug -DROARING_SANITIZE=ON .. +ctest +``` + + +To check that your code abides by the style convention (make sure that ``clang-format`` is installed): + +``` +./tools/clang-format-check.sh +``` + +To reformat your code according to the style convention (make sure that ``clang-format`` is installed): + +``` +./tools/clang-format.sh +``` + +# Building (Visual Studio under Windows) + +We are assuming that you have a common Windows PC with at least Visual Studio 2015, and an x64 processor. + +To build with at least Visual Studio 2015 from the command line: +- Grab the CRoaring code from GitHub, e.g., by cloning it using [GitHub Desktop](https://desktop.github.com/). +- Install [CMake](https://cmake.org/download/). When you install it, make sure to ask that ``cmake`` be made available from the command line. +- Create a subdirectory within CRoaring, such as ``VisualStudio``. +- Using a shell, go to this newly created directory. For example, within GitHub Desktop, you can right-click on  ``CRoaring`` in your GitHub repository list, and select ``Open in Git Shell``, then type ``cd VisualStudio`` in the newly created shell. +- Type ``cmake -DCMAKE_GENERATOR_PLATFORM=x64 ..`` in the shell while in the ``VisualStudio`` repository. (Alternatively, if you want to build a static library, you may use the command line ``cmake -DCMAKE_GENERATOR_PLATFORM=x64 -DROARING_BUILD_STATIC=ON ..``.) +- This last command created a Visual Studio solution file in the newly created directory (e.g., ``RoaringBitmap.sln``). Open this file in Visual Studio. You should now be able to build the project and run the tests. For example, in the ``Solution Explorer`` window (available from the ``View`` menu), right-click ``ALL_BUILD`` and select ``Build``. To test the code, still in the ``Solution Explorer`` window, select ``RUN_TESTS`` and select ``Build``. + +To build with at least Visual Studio 2017 directly in the IDE: +- Grab the CRoaring code from GitHub, e.g., by cloning it using [GitHub Desktop](https://desktop.github.com/). +- Select the ``Visual C++ tools for CMake`` optional component when installing the C++ Development Workload within Visual Studio. +- Within Visual Studio use ``File > Open > Folder...`` to open the CRoaring folder. +- Right click on ``CMakeLists.txt`` in the parent directory within ``Solution Explorer`` and select ``Build`` to build the project. +- For testing, in the Standard toolbar, drop the ``Select Startup Item...`` menu and choose one of the tests. Run the test by pressing the button to the left of the dropdown. + + +We have optimizations specific to AVX2 and AVX-512 in the code, and they are turned dynamically based on the detected hardware at runtime. + + +## Usage (Using `conan`) + +You can install the library using the conan package manager: + +``` +$ echo -e "[requires]\nroaring/0.3.3" > conanfile.txt +$ conan install . +``` + + +## Usage (Using `vcpkg` on Windows, Linux and macOS) + +[vcpkg](https://github.com/Microsoft/vcpkg) users on Windows, Linux and macOS can download and install `roaring` with one single command from their favorite shell. + +On Linux and macOS: + +``` +$ ./vcpkg install roaring +``` + +will build and install `roaring` as a static library. + +On Windows (64-bit): + +``` +.\vcpkg.exe install roaring:x64-windows +``` + +will build and install `roaring` as a shared library. + +``` +.\vcpkg.exe install roaring:x64-windows-static +``` + +will build and install `roaring` as a static library. + +These commands will also print out instructions on how to use the library from MSBuild or CMake-based projects. + +If you find the version of `roaring` shipped with `vcpkg` is out-of-date, feel free to report it to `vcpkg` community either by submiting an issue or by creating a PR. + +# SIMD-related throttling + +Our AVX2 code does not use floating-point numbers or multiplications, so it is not subject to turbo frequency throttling on many-core Intel processors. + +Our AVX-512 code is only enabled on recent hardware (Intel Ice Lake or better and AMD Zen 4) where SIMD-specific frequency throttling is not observed. + +# Thread safety + +Like, for example, STL containers, the CRoaring library has no built-in thread support. Thus whenever you modify a bitmap in one thread, it is unsafe to query it in others. However, you can safely copy a bitmap and use both copies in concurrently. + +If you use "copy-on-write" (default to disabled), then you should pass copies to the different threads. They will create shared containers, and for shared containers, we use reference counting with an atomic counter. + + + +To summarize: +- If you do not use copy-on-write, you can access concurrent the same bitmap safely as long as you do not modify it. If you plan on modifying it, you should pass different copies to the different threads. +- If you use copy-on-write, you should always pass copies to the different threads. The copies and then lightweight (shared containers). + +Thus the following pattern where you copy bitmaps and pass them to different threads is safe with or without COW: + +```C + roaring_bitmap_set_copy_on_write(r1, true); + roaring_bitmap_set_copy_on_write(r2, true); + roaring_bitmap_set_copy_on_write(r3, true); + + roaring_bitmap_t * r1a = roaring_bitmap_copy(r1); + roaring_bitmap_t * r1b = roaring_bitmap_copy(r1); + + roaring_bitmap_t * r2a = roaring_bitmap_copy(r2); + roaring_bitmap_t * r2b = roaring_bitmap_copy(r2); + + roaring_bitmap_t * r3a = roaring_bitmap_copy(r3); + roaring_bitmap_t * r3b = roaring_bitmap_copy(r3); + + roaring_bitmap_t *rarray1[3] = {r1a, r2a, r3a}; + roaring_bitmap_t *rarray2[3] = {r1b, r2b, r3b}; + std::thread thread1(run, rarray1); + std::thread thread2(run, rarray2); +``` + +# How to best aggregate bitmaps? + +Suppose you want to compute the union (OR) of many bitmaps. How do you proceed? There are many +different strategies. + +You can use `roaring_bitmap_or_many(bitmapcount, bitmaps)` or `roaring_bitmap_or_many_heap(bitmapcount, bitmaps)` or you may +even roll your own aggregation: + +```C +roaring_bitmap_t *answer = roaring_bitmap_copy(bitmaps[0]); +for (size_t i = 1; i < bitmapcount; i++) { + roaring_bitmap_or_inplace(answer, bitmaps[i]); +} +``` + +All of them will work but they have different performance characteristics. The `roaring_bitmap_or_many_heap` should +probably only be used if, after benchmarking, you find that it is faster by a good margin: it uses more memory. + +The `roaring_bitmap_or_many` is meant as a good default. It works by trying to delay work as much as possible. +However, because it delays computations, it also does not optimize the format as the computation runs. It might +thus fail to see some useful pattern in the data such as long consecutive values. + +The approach based on repeated calls to `roaring_bitmap_or_inplace` +is also fine, and might even be faster in some cases. You can expect it to be faster if, after +a few calls, you get long sequences of consecutive values in the answer. That is, if the +final answer is all integers in the range [0,1000000), and this is apparent quickly, then the +later `roaring_bitmap_or_inplace` will be very fast. + +You should benchmark these alternatives on your own data to decide what is best. + +# Wrappers + +## Python +Tom Cornebize wrote a Python wrapper available at https://github.com/Ezibenroc/PyRoaringBitMap +Installing it is as easy as typing... + +``` +pip install pyroaring +``` + +## JavaScript + +Salvatore Previti wrote a Node/JavaScript wrapper available at https://github.com/SalvatorePreviti/roaring-node +Installing it is as easy as typing... + +``` +npm install roaring +``` + +## Swift + +Jérémie Piotte wrote a [Swift wrapper](https://github.com/RoaringBitmap/SwiftRoaring). + + +## C# + +Brandon Smith wrote a C# wrapper available at https://github.com/RogueException/CRoaring.Net (works for Windows and Linux under x64 processors) + + +## Go (golang) + +There is a Go (golang) wrapper available at https://github.com/RoaringBitmap/gocroaring + +## Rust + +Saulius Grigaliunas wrote a Rust wrapper available at https://github.com/saulius/croaring-rs + +## D + +Yuce Tekol wrote a D wrapper available at https://github.com/yuce/droaring + +## Redis + +Antonio Guilherme Ferreira Viggiano wrote a Redis Module available at https://github.com/aviggiano/redis-roaring + +## Zig + +Justin Whear wrote a Zig wrapper available at https://github.com/jwhear/roaring-zig + + +# Mailing list/discussion group + +https://groups.google.com/forum/#!forum/roaring-bitmaps + +# Contributing + +When contributing a change to the project, please run `tools/clang-format.sh` after making any changes. A github action runs on all PRs to ensure formatting is consistent with this. + +# References about Roaring + +- Daniel Lemire, Owen Kaser, Nathan Kurz, Luca Deri, Chris O'Hara, François Saint-Jacques, Gregory Ssi-Yan-Kai, Roaring Bitmaps: Implementation of an Optimized Software Library, Software: Practice and Experience Volume 48, Issue 4 April 2018 Pages 867-895 [arXiv:1709.07821](https://arxiv.org/abs/1709.07821) +- Samy Chambi, Daniel Lemire, Owen Kaser, Robert Godin, +Better bitmap performance with Roaring bitmaps, +Software: Practice and Experience Volume 46, Issue 5, pages 709–719, May 2016 [arXiv:1402.6407](http://arxiv.org/abs/1402.6407) +- Daniel Lemire, Gregory Ssi-Yan-Kai, Owen Kaser, Consistently faster and smaller compressed bitmaps with Roaring, Software: Practice and Experience Volume 46, Issue 11, pages 1547-1569, November 2016 [arXiv:1603.06549](http://arxiv.org/abs/1603.06549) +- Samy Chambi, Daniel Lemire, Robert Godin, Kamel Boukhalfa, Charles Allen, Fangjin Yang, Optimizing Druid with Roaring bitmaps, IDEAS 2016, 2016. http://r-libre.teluq.ca/950/ diff --git a/contrib/libs/croaring/SECURITY.md b/contrib/libs/croaring/SECURITY.md new file mode 100644 index 000000000000..1d9c45c86e1a --- /dev/null +++ b/contrib/libs/croaring/SECURITY.md @@ -0,0 +1,9 @@ +# Security Policy + +## Reporting a Vulnerability + +Please use the following contact information for reporting a vulnerability: + +- [Daniel Lemire]( https://www.teluq.ca/siteweb/univ/en/dlemire.html) - daniel@lemire.me + + diff --git a/contrib/libs/croaring/include/roaring/array_util.h b/contrib/libs/croaring/include/roaring/array_util.h new file mode 100644 index 000000000000..8ac875a76226 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/array_util.h @@ -0,0 +1,274 @@ +#ifndef CROARING_ARRAY_UTIL_H +#define CROARING_ARRAY_UTIL_H + +#include <stddef.h> // for size_t +#include <stdint.h> + +#include <roaring/portability.h> + +#if CROARING_IS_X64 +#ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#error "CROARING_COMPILER_SUPPORTS_AVX512 needs to be defined." +#endif // CROARING_COMPILER_SUPPORTS_AVX512 +#endif +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* + * Good old binary search. + * Assumes that array is sorted, has logarithmic complexity. + * if the result is x, then: + * if ( x>0 ) you have array[x] = ikey + * if ( x<0 ) then inserting ikey at position -x-1 in array (insuring that + * array[-x-1]=ikey) keys the array sorted. + */ +inline int32_t binarySearch(const uint16_t *array, int32_t lenarray, + uint16_t ikey) { + int32_t low = 0; + int32_t high = lenarray - 1; + while (low <= high) { + int32_t middleIndex = (low + high) >> 1; + uint16_t middleValue = array[middleIndex]; + if (middleValue < ikey) { + low = middleIndex + 1; + } else if (middleValue > ikey) { + high = middleIndex - 1; + } else { + return middleIndex; + } + } + return -(low + 1); +} + +/** + * Galloping search + * Assumes that array is sorted, has logarithmic complexity. + * if the result is x, then if x = length, you have that all values in array + * between pos and length are smaller than min. otherwise returns the first + * index x such that array[x] >= min. + */ +static inline int32_t advanceUntil(const uint16_t *array, int32_t pos, + int32_t length, uint16_t min) { + int32_t lower = pos + 1; + + if ((lower >= length) || (array[lower] >= min)) { + return lower; + } + + int32_t spansize = 1; + + while ((lower + spansize < length) && (array[lower + spansize] < min)) { + spansize <<= 1; + } + int32_t upper = (lower + spansize < length) ? lower + spansize : length - 1; + + if (array[upper] == min) { + return upper; + } + if (array[upper] < min) { + // means + // array + // has no + // item + // >= min + // pos = array.length; + return length; + } + + // we know that the next-smallest span was too small + lower += (spansize >> 1); + + int32_t mid = 0; + while (lower + 1 != upper) { + mid = (lower + upper) >> 1; + if (array[mid] == min) { + return mid; + } else if (array[mid] < min) { + lower = mid; + } else { + upper = mid; + } + } + return upper; +} + +/** + * Returns number of elements which are less than ikey. + * Array elements must be unique and sorted. + */ +static inline int32_t count_less(const uint16_t *array, int32_t lenarray, + uint16_t ikey) { + if (lenarray == 0) return 0; + int32_t pos = binarySearch(array, lenarray, ikey); + return pos >= 0 ? pos : -(pos + 1); +} + +/** + * Returns number of elements which are greater than ikey. + * Array elements must be unique and sorted. + */ +static inline int32_t count_greater(const uint16_t *array, int32_t lenarray, + uint16_t ikey) { + if (lenarray == 0) return 0; + int32_t pos = binarySearch(array, lenarray, ikey); + if (pos >= 0) { + return lenarray - (pos + 1); + } else { + return lenarray - (-pos - 1); + } +} + +/** + * From Schlegel et al., Fast Sorted-Set Intersection using SIMD Instructions + * Optimized by D. Lemire on May 3rd 2013 + * + * C should have capacity greater than the minimum of s_1 and s_b + 8 + * where 8 is sizeof(__m128i)/sizeof(uint16_t). + */ +int32_t intersect_vector16(const uint16_t *__restrict__ A, size_t s_a, + const uint16_t *__restrict__ B, size_t s_b, + uint16_t *C); + +int32_t intersect_vector16_inplace(uint16_t *__restrict__ A, size_t s_a, + const uint16_t *__restrict__ B, size_t s_b); + +/** + * Take an array container and write it out to a 32-bit array, using base + * as the offset. + */ +int array_container_to_uint32_array_vector16(void *vout, const uint16_t *array, + size_t cardinality, uint32_t base); +#if CROARING_COMPILER_SUPPORTS_AVX512 +int avx512_array_container_to_uint32_array(void *vout, const uint16_t *array, + size_t cardinality, uint32_t base); +#endif +/** + * Compute the cardinality of the intersection using SSE4 instructions + */ +int32_t intersect_vector16_cardinality(const uint16_t *__restrict__ A, + size_t s_a, + const uint16_t *__restrict__ B, + size_t s_b); + +/* Computes the intersection between one small and one large set of uint16_t. + * Stores the result into buffer and return the number of elements. */ +int32_t intersect_skewed_uint16(const uint16_t *smallarray, size_t size_s, + const uint16_t *largearray, size_t size_l, + uint16_t *buffer); + +/* Computes the size of the intersection between one small and one large set of + * uint16_t. */ +int32_t intersect_skewed_uint16_cardinality(const uint16_t *smallarray, + size_t size_s, + const uint16_t *largearray, + size_t size_l); + +/* Check whether the size of the intersection between one small and one large + * set of uint16_t is non-zero. */ +bool intersect_skewed_uint16_nonempty(const uint16_t *smallarray, size_t size_s, + const uint16_t *largearray, + size_t size_l); +/** + * Generic intersection function. + */ +int32_t intersect_uint16(const uint16_t *A, const size_t lenA, + const uint16_t *B, const size_t lenB, uint16_t *out); +/** + * Compute the size of the intersection (generic). + */ +int32_t intersect_uint16_cardinality(const uint16_t *A, const size_t lenA, + const uint16_t *B, const size_t lenB); + +/** + * Checking whether the size of the intersection is non-zero. + */ +bool intersect_uint16_nonempty(const uint16_t *A, const size_t lenA, + const uint16_t *B, const size_t lenB); +/** + * Generic union function. + */ +size_t union_uint16(const uint16_t *set_1, size_t size_1, const uint16_t *set_2, + size_t size_2, uint16_t *buffer); + +/** + * Generic XOR function. + */ +int32_t xor_uint16(const uint16_t *array_1, int32_t card_1, + const uint16_t *array_2, int32_t card_2, uint16_t *out); + +/** + * Generic difference function (ANDNOT). + */ +int difference_uint16(const uint16_t *a1, int length1, const uint16_t *a2, + int length2, uint16_t *a_out); + +/** + * Generic intersection function. + */ +size_t intersection_uint32(const uint32_t *A, const size_t lenA, + const uint32_t *B, const size_t lenB, uint32_t *out); + +/** + * Generic intersection function, returns just the cardinality. + */ +size_t intersection_uint32_card(const uint32_t *A, const size_t lenA, + const uint32_t *B, const size_t lenB); + +/** + * Generic union function. + */ +size_t union_uint32(const uint32_t *set_1, size_t size_1, const uint32_t *set_2, + size_t size_2, uint32_t *buffer); + +/** + * A fast SSE-based union function. + */ +uint32_t union_vector16(const uint16_t *__restrict__ set_1, uint32_t size_1, + const uint16_t *__restrict__ set_2, uint32_t size_2, + uint16_t *__restrict__ buffer); +/** + * A fast SSE-based XOR function. + */ +uint32_t xor_vector16(const uint16_t *__restrict__ array1, uint32_t length1, + const uint16_t *__restrict__ array2, uint32_t length2, + uint16_t *__restrict__ output); + +/** + * A fast SSE-based difference function. + */ +int32_t difference_vector16(const uint16_t *__restrict__ A, size_t s_a, + const uint16_t *__restrict__ B, size_t s_b, + uint16_t *C); + +/** + * Generic union function, returns just the cardinality. + */ +size_t union_uint32_card(const uint32_t *set_1, size_t size_1, + const uint32_t *set_2, size_t size_2); + +/** + * combines union_uint16 and union_vector16 optimally + */ +size_t fast_union_uint16(const uint16_t *set_1, size_t size_1, + const uint16_t *set_2, size_t size_2, + uint16_t *buffer); + +bool memequals(const void *s1, const void *s2, size_t n); + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif +#endif diff --git a/contrib/libs/croaring/include/roaring/art/art.h b/contrib/libs/croaring/include/roaring/art/art.h new file mode 100644 index 000000000000..e191c1eedaa3 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/art/art.h @@ -0,0 +1,192 @@ +#ifndef ART_ART_H +#define ART_ART_H + +#include <stdbool.h> +#include <stddef.h> +#include <stdint.h> + +/* + * This file contains an implementation of an Adaptive Radix Tree as described + * in https://db.in.tum.de/~leis/papers/ART.pdf. + * + * The ART contains the keys in _byte lexographical_ order. + * + * Other features: + * * Fixed 48 bit key length: all keys are assumed to be be 48 bits in size. + * This allows us to put the key and key prefixes directly in nodes, reducing + * indirection at no additional memory overhead. + * * Key compression: the only inner nodes created are at points where key + * chunks _differ_. This means that if there are two entries with different + * high 48 bits, then there is only one inner node containing the common key + * prefix, and two leaves. + * * Intrusive leaves: the leaf struct is included in user values. This removes + * a layer of indirection. + */ + +// Fixed length of keys in the ART. All keys are assumed to be of this length. +#define ART_KEY_BYTES 6 + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +typedef uint8_t art_key_chunk_t; +typedef struct art_node_s art_node_t; + +/** + * Wrapper to allow an empty tree. + */ +typedef struct art_s { + art_node_t *root; +} art_t; + +/** + * Values inserted into the tree have to be cast-able to art_val_t. This + * improves performance by reducing indirection. + * + * NOTE: Value pointers must be unique! This is because each value struct + * contains the key corresponding to the value. + */ +typedef struct art_val_s { + art_key_chunk_t key[ART_KEY_BYTES]; +} art_val_t; + +/** + * Compares two keys, returns their relative order: + * * Key 1 < key 2: returns a negative value + * * Key 1 == key 2: returns 0 + * * Key 1 > key 2: returns a positive value + */ +int art_compare_keys(const art_key_chunk_t key1[], + const art_key_chunk_t key2[]); + +/** + * Inserts the given key and value. + */ +void art_insert(art_t *art, const art_key_chunk_t *key, art_val_t *val); + +/** + * Returns the value erased, NULL if not found. + */ +art_val_t *art_erase(art_t *art, const art_key_chunk_t *key); + +/** + * Returns the value associated with the given key, NULL if not found. + */ +art_val_t *art_find(const art_t *art, const art_key_chunk_t *key); + +/** + * Returns true if the ART is empty. + */ +bool art_is_empty(const art_t *art); + +/** + * Frees the nodes of the ART except the values, which the user is expected to + * free. + */ +void art_free(art_t *art); + +/** + * Returns the size in bytes of the ART. Includes size of pointers to values, + * but not the values themselves. + */ +size_t art_size_in_bytes(const art_t *art); + +/** + * Prints the ART using printf, useful for debugging. + */ +void art_printf(const art_t *art); + +/** + * Callback for validating the value stored in a leaf. + * + * Should return true if the value is valid, false otherwise + * If false is returned, `*reason` should be set to a static string describing + * the reason for the failure. + */ +typedef bool (*art_validate_cb_t)(const art_val_t *val, const char **reason); + +/** + * Validate the ART tree, ensuring it is internally consistent. + */ +bool art_internal_validate(const art_t *art, const char **reason, + art_validate_cb_t validate_cb); + +/** + * ART-internal iterator bookkeeping. Users should treat this as an opaque type. + */ +typedef struct art_iterator_frame_s { + art_node_t *node; + uint8_t index_in_node; +} art_iterator_frame_t; + +/** + * Users should only access `key` and `value` in iterators. The iterator is + * valid when `value != NULL`. + */ +typedef struct art_iterator_s { + art_key_chunk_t key[ART_KEY_BYTES]; + art_val_t *value; + + uint8_t depth; // Key depth + uint8_t frame; // Node depth + + // State for each node in the ART the iterator has travelled from the root. + // This is `ART_KEY_BYTES + 1` because it includes state for the leaf too. + art_iterator_frame_t frames[ART_KEY_BYTES + 1]; +} art_iterator_t; + +/** + * Creates an iterator initialzed to the first or last entry in the ART, + * depending on `first`. The iterator is not valid if there are no entries in + * the ART. + */ +art_iterator_t art_init_iterator(const art_t *art, bool first); + +/** + * Returns an initialized iterator positioned at a key equal to or greater than + * the given key, if it exists. + */ +art_iterator_t art_lower_bound(const art_t *art, const art_key_chunk_t *key); + +/** + * Returns an initialized iterator positioned at a key greater than the given + * key, if it exists. + */ +art_iterator_t art_upper_bound(const art_t *art, const art_key_chunk_t *key); + +/** + * The following iterator movement functions return true if a new entry was + * encountered. + */ +bool art_iterator_move(art_iterator_t *iterator, bool forward); +bool art_iterator_next(art_iterator_t *iterator); +bool art_iterator_prev(art_iterator_t *iterator); + +/** + * Moves the iterator forward to a key equal to or greater than the given key. + */ +bool art_iterator_lower_bound(art_iterator_t *iterator, + const art_key_chunk_t *key); + +/** + * Insert the value and positions the iterator at the key. + */ +void art_iterator_insert(art_t *art, art_iterator_t *iterator, + const art_key_chunk_t *key, art_val_t *val); + +/** + * Erase the value pointed at by the iterator. Moves the iterator to the next + * leaf. Returns the value erased or NULL if nothing was erased. + */ +art_val_t *art_iterator_erase(art_t *art, art_iterator_t *iterator); + +#ifdef __cplusplus +} // extern "C" +} // namespace roaring +} // namespace internal +#endif + +#endif diff --git a/contrib/libs/croaring/include/roaring/bitset/bitset.h b/contrib/libs/croaring/include/roaring/bitset/bitset.h new file mode 100644 index 000000000000..c57d73d108a7 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/bitset/bitset.h @@ -0,0 +1,294 @@ +#ifndef CROARING_CBITSET_BITSET_H +#define CROARING_CBITSET_BITSET_H + +// For compatibility with MSVC with the use of `restrict` +#if (__STDC_VERSION__ >= 199901L) || \ + (defined(__GNUC__) && defined(__STDC_VERSION__)) +#define CROARING_CBITSET_RESTRICT restrict +#else +#define CROARING_CBITSET_RESTRICT +#endif // (__STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && + // defined(__STDC_VERSION__ )) + +#include <stdbool.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <roaring/portability.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace api { +#endif + +struct bitset_s { + uint64_t *CROARING_CBITSET_RESTRICT array; + /* For simplicity and performance, we prefer to have a size and a capacity + * that is a multiple of 64 bits. Thus we only track the size and the + * capacity in terms of 64-bit words allocated */ + size_t arraysize; + size_t capacity; +}; + +typedef struct bitset_s bitset_t; + +/* Create a new bitset. Return NULL in case of failure. */ +bitset_t *bitset_create(void); + +/* Create a new bitset able to contain size bits. Return NULL in case of + * failure. */ +bitset_t *bitset_create_with_capacity(size_t size); + +/* Free memory. */ +void bitset_free(bitset_t *bitset); + +/* Set all bits to zero. */ +void bitset_clear(bitset_t *bitset); + +/* Set all bits to one. */ +void bitset_fill(bitset_t *bitset); + +/* Create a copy */ +bitset_t *bitset_copy(const bitset_t *bitset); + +/* For advanced users: Resize the bitset so that it can support newarraysize * + * 64 bits. Return true in case of success, false for failure. Pad with zeroes + * new buffer areas if requested. */ +bool bitset_resize(bitset_t *bitset, size_t newarraysize, bool padwithzeroes); + +/* returns how many bytes of memory the backend buffer uses */ +inline size_t bitset_size_in_bytes(const bitset_t *bitset) { + return bitset->arraysize * sizeof(uint64_t); +} + +/* returns how many bits can be accessed */ +inline size_t bitset_size_in_bits(const bitset_t *bitset) { + return bitset->arraysize * 64; +} + +/* returns how many words (64-bit) of memory the backend buffer uses */ +inline size_t bitset_size_in_words(const bitset_t *bitset) { + return bitset->arraysize; +} + +/* For advanced users: Grow the bitset so that it can support newarraysize * 64 + * bits with padding. Return true in case of success, false for failure. */ +bool bitset_grow(bitset_t *bitset, size_t newarraysize); + +/* attempts to recover unused memory, return false in case of + * roaring_reallocation failure */ +bool bitset_trim(bitset_t *bitset); + +/* shifts all bits by 's' positions so that the bitset representing values + * 1,2,10 would represent values 1+s, 2+s, 10+s */ +void bitset_shift_left(bitset_t *bitset, size_t s); + +/* shifts all bits by 's' positions so that the bitset representing values + * 1,2,10 would represent values 1-s, 2-s, 10-s, negative values are deleted */ +void bitset_shift_right(bitset_t *bitset, size_t s); + +/* Set the ith bit. Attempts to resize the bitset if needed (may silently fail) + */ +inline void bitset_set(bitset_t *bitset, size_t i) { + size_t shiftedi = i / 64; + if (shiftedi >= bitset->arraysize) { + if (!bitset_grow(bitset, shiftedi + 1)) { + return; + } + } + bitset->array[shiftedi] |= ((uint64_t)1) << (i % 64); +} + +/* Set the ith bit to the specified value. Attempts to resize the bitset if + * needed (may silently fail) */ +inline void bitset_set_to_value(bitset_t *bitset, size_t i, bool flag) { + size_t shiftedi = i / 64; + uint64_t mask = ((uint64_t)1) << (i % 64); + uint64_t dynmask = ((uint64_t)flag) << (i % 64); + if (shiftedi >= bitset->arraysize) { + if (!bitset_grow(bitset, shiftedi + 1)) { + return; + } + } + uint64_t w = bitset->array[shiftedi]; + w &= ~mask; + w |= dynmask; + bitset->array[shiftedi] = w; +} + +/* Get the value of the ith bit. */ +inline bool bitset_get(const bitset_t *bitset, size_t i) { + size_t shiftedi = i / 64; + if (shiftedi >= bitset->arraysize) { + return false; + } + return (bitset->array[shiftedi] & (((uint64_t)1) << (i % 64))) != 0; +} + +/* Count number of bits set. */ +size_t bitset_count(const bitset_t *bitset); + +/* Find the index of the first bit set. Or zero if the bitset is empty. */ +size_t bitset_minimum(const bitset_t *bitset); + +/* Find the index of the last bit set. Or zero if the bitset is empty. */ +size_t bitset_maximum(const bitset_t *bitset); + +/* compute the union in-place (to b1), returns true if successful, to generate a + * new bitset first call bitset_copy */ +bool bitset_inplace_union(bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2); + +/* report the size of the union (without materializing it) */ +size_t bitset_union_count(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2); + +/* compute the intersection in-place (to b1), to generate a new bitset first + * call bitset_copy */ +void bitset_inplace_intersection(bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2); + +/* report the size of the intersection (without materializing it) */ +size_t bitset_intersection_count(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2); + +/* returns true if the bitsets contain no common elements */ +bool bitsets_disjoint(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2); + +/* returns true if the bitsets contain any common elements */ +bool bitsets_intersect(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2); + +/* returns true if b1 contains all of the set bits of b2 */ +bool bitset_contains_all(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2); + +/* compute the difference in-place (to b1), to generate a new bitset first call + * bitset_copy */ +void bitset_inplace_difference(bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2); + +/* compute the size of the difference */ +size_t bitset_difference_count(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2); + +/* compute the symmetric difference in-place (to b1), return true if successful, + * to generate a new bitset first call bitset_copy */ +bool bitset_inplace_symmetric_difference( + bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2); + +/* compute the size of the symmetric difference */ +size_t bitset_symmetric_difference_count( + const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2); + +/* iterate over the set bits + like so : + for(size_t i = 0; bitset_next_set_bit(b,&i) ; i++) { + //..... + } + */ +inline bool bitset_next_set_bit(const bitset_t *bitset, size_t *i) { + size_t x = *i / 64; + if (x >= bitset->arraysize) { + return false; + } + uint64_t w = bitset->array[x]; + w >>= (*i & 63); + if (w != 0) { + *i += roaring_trailing_zeroes(w); + return true; + } + x++; + while (x < bitset->arraysize) { + w = bitset->array[x]; + if (w != 0) { + *i = x * 64 + roaring_trailing_zeroes(w); + return true; + } + x++; + } + return false; +} + +/* iterate over the set bits + like so : + size_t buffer[256]; + size_t howmany = 0; + for(size_t startfrom = 0; (howmany = bitset_next_set_bits(b,buffer,256, + &startfrom)) > 0 ; startfrom++) { + //..... + } + */ +inline size_t bitset_next_set_bits(const bitset_t *bitset, size_t *buffer, + size_t capacity, size_t *startfrom) { + if (capacity == 0) return 0; // sanity check + size_t x = *startfrom / 64; + if (x >= bitset->arraysize) { + return 0; // nothing more to iterate over + } + uint64_t w = bitset->array[x]; + w >>= (*startfrom & 63); + size_t howmany = 0; + size_t base = x << 6; + while (howmany < capacity) { + while (w != 0) { + uint64_t t = w & (~w + 1); + int r = roaring_trailing_zeroes(w); + buffer[howmany++] = r + base; + if (howmany == capacity) goto end; + w ^= t; + } + x += 1; + if (x == bitset->arraysize) { + break; + } + base += 64; + w = bitset->array[x]; + } +end: + if (howmany > 0) { + *startfrom = buffer[howmany - 1]; + } + return howmany; +} + +typedef bool (*bitset_iterator)(size_t value, void *param); + +// return true if uninterrupted +inline bool bitset_for_each(const bitset_t *b, bitset_iterator iterator, + void *ptr) { + size_t base = 0; + for (size_t i = 0; i < b->arraysize; ++i) { + uint64_t w = b->array[i]; + while (w != 0) { + uint64_t t = w & (~w + 1); + int r = roaring_trailing_zeroes(w); + if (!iterator(r + base, ptr)) return false; + w ^= t; + } + base += 64; + } + return true; +} + +inline void bitset_print(const bitset_t *b) { + printf("{"); + for (size_t i = 0; bitset_next_set_bit(b, &i); i++) { + printf("%zu, ", i); + } + printf("}"); +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace api { +#endif + +#endif diff --git a/contrib/libs/croaring/include/roaring/bitset_util.h b/contrib/libs/croaring/include/roaring/bitset_util.h new file mode 100644 index 000000000000..7e027f191949 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/bitset_util.h @@ -0,0 +1,718 @@ +#ifndef CROARING_BITSET_UTIL_H +#define CROARING_BITSET_UTIL_H + +#include <stdint.h> + +#include <roaring/portability.h> +#include <roaring/utilasm.h> + +#if CROARING_IS_X64 +#ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#error "CROARING_COMPILER_SUPPORTS_AVX512 needs to be defined." +#endif // CROARING_COMPILER_SUPPORTS_AVX512 +#endif +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* + * Set all bits in indexes [begin,end) to true. + */ +static inline void bitset_set_range(uint64_t *words, uint32_t start, + uint32_t end) { + if (start == end) return; + uint32_t firstword = start / 64; + uint32_t endword = (end - 1) / 64; + if (firstword == endword) { + words[firstword] |= ((~UINT64_C(0)) << (start % 64)) & + ((~UINT64_C(0)) >> ((~end + 1) % 64)); + return; + } + words[firstword] |= (~UINT64_C(0)) << (start % 64); + for (uint32_t i = firstword + 1; i < endword; i++) { + words[i] = ~UINT64_C(0); + } + words[endword] |= (~UINT64_C(0)) >> ((~end + 1) % 64); +} + +/* + * Find the cardinality of the bitset in [begin,begin+lenminusone] + */ +static inline int bitset_lenrange_cardinality(const uint64_t *words, + uint32_t start, + uint32_t lenminusone) { + uint32_t firstword = start / 64; + uint32_t endword = (start + lenminusone) / 64; + if (firstword == endword) { + return roaring_hamming(words[firstword] & + ((~UINT64_C(0)) >> ((63 - lenminusone) % 64)) + << (start % 64)); + } + int answer = + roaring_hamming(words[firstword] & ((~UINT64_C(0)) << (start % 64))); + for (uint32_t i = firstword + 1; i < endword; i++) { + answer += roaring_hamming(words[i]); + } + answer += roaring_hamming(words[endword] & + (~UINT64_C(0)) >> + (((~start + 1) - lenminusone - 1) % 64)); + return answer; +} + +/* + * Check whether the cardinality of the bitset in [begin,begin+lenminusone] is 0 + */ +static inline bool bitset_lenrange_empty(const uint64_t *words, uint32_t start, + uint32_t lenminusone) { + uint32_t firstword = start / 64; + uint32_t endword = (start + lenminusone) / 64; + if (firstword == endword) { + return (words[firstword] & ((~UINT64_C(0)) >> ((63 - lenminusone) % 64)) + << (start % 64)) == 0; + } + if (((words[firstword] & ((~UINT64_C(0)) << (start % 64)))) != 0) { + return false; + } + for (uint32_t i = firstword + 1; i < endword; i++) { + if (words[i] != 0) { + return false; + } + } + if ((words[endword] & + (~UINT64_C(0)) >> (((~start + 1) - lenminusone - 1) % 64)) != 0) { + return false; + } + return true; +} + +/* + * Set all bits in indexes [begin,begin+lenminusone] to true. + */ +static inline void bitset_set_lenrange(uint64_t *words, uint32_t start, + uint32_t lenminusone) { + uint32_t firstword = start / 64; + uint32_t endword = (start + lenminusone) / 64; + if (firstword == endword) { + words[firstword] |= ((~UINT64_C(0)) >> ((63 - lenminusone) % 64)) + << (start % 64); + return; + } + uint64_t temp = words[endword]; + words[firstword] |= (~UINT64_C(0)) << (start % 64); + for (uint32_t i = firstword + 1; i < endword; i += 2) + words[i] = words[i + 1] = ~UINT64_C(0); + words[endword] = + temp | (~UINT64_C(0)) >> (((~start + 1) - lenminusone - 1) % 64); +} + +/* + * Flip all the bits in indexes [begin,end). + */ +static inline void bitset_flip_range(uint64_t *words, uint32_t start, + uint32_t end) { + if (start == end) return; + uint32_t firstword = start / 64; + uint32_t endword = (end - 1) / 64; + words[firstword] ^= ~((~UINT64_C(0)) << (start % 64)); + for (uint32_t i = firstword; i < endword; i++) { + words[i] = ~words[i]; + } + words[endword] ^= ((~UINT64_C(0)) >> ((~end + 1) % 64)); +} + +/* + * Set all bits in indexes [begin,end) to false. + */ +static inline void bitset_reset_range(uint64_t *words, uint32_t start, + uint32_t end) { + if (start == end) return; + uint32_t firstword = start / 64; + uint32_t endword = (end - 1) / 64; + if (firstword == endword) { + words[firstword] &= ~(((~UINT64_C(0)) << (start % 64)) & + ((~UINT64_C(0)) >> ((~end + 1) % 64))); + return; + } + words[firstword] &= ~((~UINT64_C(0)) << (start % 64)); + for (uint32_t i = firstword + 1; i < endword; i++) { + words[i] = UINT64_C(0); + } + words[endword] &= ~((~UINT64_C(0)) >> ((~end + 1) % 64)); +} + +/* + * Given a bitset containing "length" 64-bit words, write out the position + * of all the set bits to "out", values start at "base". + * + * The "out" pointer should be sufficient to store the actual number of bits + * set. + * + * Returns how many values were actually decoded. + * + * This function should only be expected to be faster than + * bitset_extract_setbits + * when the density of the bitset is high. + * + * This function uses AVX2 decoding. + */ +size_t bitset_extract_setbits_avx2(const uint64_t *words, size_t length, + uint32_t *out, size_t outcapacity, + uint32_t base); + +size_t bitset_extract_setbits_avx512(const uint64_t *words, size_t length, + uint32_t *out, size_t outcapacity, + uint32_t base); +/* + * Given a bitset containing "length" 64-bit words, write out the position + * of all the set bits to "out", values start at "base". + * + * The "out" pointer should be sufficient to store the actual number of bits + *set. + * + * Returns how many values were actually decoded. + */ +size_t bitset_extract_setbits(const uint64_t *words, size_t length, + uint32_t *out, uint32_t base); + +/* + * Given a bitset containing "length" 64-bit words, write out the position + * of all the set bits to "out" as 16-bit integers, values start at "base" (can + *be set to zero) + * + * The "out" pointer should be sufficient to store the actual number of bits + *set. + * + * Returns how many values were actually decoded. + * + * This function should only be expected to be faster than + *bitset_extract_setbits_uint16 + * when the density of the bitset is high. + * + * This function uses SSE decoding. + */ +size_t bitset_extract_setbits_sse_uint16(const uint64_t *words, size_t length, + uint16_t *out, size_t outcapacity, + uint16_t base); + +size_t bitset_extract_setbits_avx512_uint16(const uint64_t *words, + size_t length, uint16_t *out, + size_t outcapacity, uint16_t base); + +/* + * Given a bitset containing "length" 64-bit words, write out the position + * of all the set bits to "out", values start at "base" + * (can be set to zero) + * + * The "out" pointer should be sufficient to store the actual number of bits + *set. + * + * Returns how many values were actually decoded. + */ +size_t bitset_extract_setbits_uint16(const uint64_t *words, size_t length, + uint16_t *out, uint16_t base); + +/* + * Given two bitsets containing "length" 64-bit words, write out the position + * of all the common set bits to "out", values start at "base" + * (can be set to zero) + * + * The "out" pointer should be sufficient to store the actual number of bits + * set. + * + * Returns how many values were actually decoded. + */ +size_t bitset_extract_intersection_setbits_uint16( + const uint64_t *__restrict__ words1, const uint64_t *__restrict__ words2, + size_t length, uint16_t *out, uint16_t base); + +/* + * Given a bitset having cardinality card, set all bit values in the list (there + * are length of them) + * and return the updated cardinality. This evidently assumes that the bitset + * already contained data. + */ +uint64_t bitset_set_list_withcard(uint64_t *words, uint64_t card, + const uint16_t *list, uint64_t length); +/* + * Given a bitset, set all bit values in the list (there + * are length of them). + */ +void bitset_set_list(uint64_t *words, const uint16_t *list, uint64_t length); + +/* + * Given a bitset having cardinality card, unset all bit values in the list + * (there are length of them) + * and return the updated cardinality. This evidently assumes that the bitset + * already contained data. + */ +uint64_t bitset_clear_list(uint64_t *words, uint64_t card, const uint16_t *list, + uint64_t length); + +/* + * Given a bitset having cardinality card, toggle all bit values in the list + * (there are length of them) + * and return the updated cardinality. This evidently assumes that the bitset + * already contained data. + */ + +uint64_t bitset_flip_list_withcard(uint64_t *words, uint64_t card, + const uint16_t *list, uint64_t length); + +void bitset_flip_list(uint64_t *words, const uint16_t *list, uint64_t length); + +#if CROARING_IS_X64 +/*** + * BEGIN Harley-Seal popcount functions. + */ +CROARING_TARGET_AVX2 +/** + * Compute the population count of a 256-bit word + * This is not especially fast, but it is convenient as part of other functions. + */ +static inline __m256i popcount256(__m256i v) { + const __m256i lookuppos = _mm256_setr_epi8( + /* 0 */ 4 + 0, /* 1 */ 4 + 1, /* 2 */ 4 + 1, /* 3 */ 4 + 2, + /* 4 */ 4 + 1, /* 5 */ 4 + 2, /* 6 */ 4 + 2, /* 7 */ 4 + 3, + /* 8 */ 4 + 1, /* 9 */ 4 + 2, /* a */ 4 + 2, /* b */ 4 + 3, + /* c */ 4 + 2, /* d */ 4 + 3, /* e */ 4 + 3, /* f */ 4 + 4, + + /* 0 */ 4 + 0, /* 1 */ 4 + 1, /* 2 */ 4 + 1, /* 3 */ 4 + 2, + /* 4 */ 4 + 1, /* 5 */ 4 + 2, /* 6 */ 4 + 2, /* 7 */ 4 + 3, + /* 8 */ 4 + 1, /* 9 */ 4 + 2, /* a */ 4 + 2, /* b */ 4 + 3, + /* c */ 4 + 2, /* d */ 4 + 3, /* e */ 4 + 3, /* f */ 4 + 4); + const __m256i lookupneg = _mm256_setr_epi8( + /* 0 */ 4 - 0, /* 1 */ 4 - 1, /* 2 */ 4 - 1, /* 3 */ 4 - 2, + /* 4 */ 4 - 1, /* 5 */ 4 - 2, /* 6 */ 4 - 2, /* 7 */ 4 - 3, + /* 8 */ 4 - 1, /* 9 */ 4 - 2, /* a */ 4 - 2, /* b */ 4 - 3, + /* c */ 4 - 2, /* d */ 4 - 3, /* e */ 4 - 3, /* f */ 4 - 4, + + /* 0 */ 4 - 0, /* 1 */ 4 - 1, /* 2 */ 4 - 1, /* 3 */ 4 - 2, + /* 4 */ 4 - 1, /* 5 */ 4 - 2, /* 6 */ 4 - 2, /* 7 */ 4 - 3, + /* 8 */ 4 - 1, /* 9 */ 4 - 2, /* a */ 4 - 2, /* b */ 4 - 3, + /* c */ 4 - 2, /* d */ 4 - 3, /* e */ 4 - 3, /* f */ 4 - 4); + const __m256i low_mask = _mm256_set1_epi8(0x0f); + + const __m256i lo = _mm256_and_si256(v, low_mask); + const __m256i hi = _mm256_and_si256(_mm256_srli_epi16(v, 4), low_mask); + const __m256i popcnt1 = _mm256_shuffle_epi8(lookuppos, lo); + const __m256i popcnt2 = _mm256_shuffle_epi8(lookupneg, hi); + return _mm256_sad_epu8(popcnt1, popcnt2); +} +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +/** + * Simple CSA over 256 bits + */ +static inline void CSA(__m256i *h, __m256i *l, __m256i a, __m256i b, + __m256i c) { + const __m256i u = _mm256_xor_si256(a, b); + *h = _mm256_or_si256(_mm256_and_si256(a, b), _mm256_and_si256(u, c)); + *l = _mm256_xor_si256(u, c); +} +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +/** + * Fast Harley-Seal AVX population count function + */ +inline static uint64_t avx2_harley_seal_popcount256(const __m256i *data, + const uint64_t size) { + __m256i total = _mm256_setzero_si256(); + __m256i ones = _mm256_setzero_si256(); + __m256i twos = _mm256_setzero_si256(); + __m256i fours = _mm256_setzero_si256(); + __m256i eights = _mm256_setzero_si256(); + __m256i sixteens = _mm256_setzero_si256(); + __m256i twosA, twosB, foursA, foursB, eightsA, eightsB; + + const uint64_t limit = size - size % 16; + uint64_t i = 0; + + for (; i < limit; i += 16) { + CSA(&twosA, &ones, ones, _mm256_lddqu_si256(data + i), + _mm256_lddqu_si256(data + i + 1)); + CSA(&twosB, &ones, ones, _mm256_lddqu_si256(data + i + 2), + _mm256_lddqu_si256(data + i + 3)); + CSA(&foursA, &twos, twos, twosA, twosB); + CSA(&twosA, &ones, ones, _mm256_lddqu_si256(data + i + 4), + _mm256_lddqu_si256(data + i + 5)); + CSA(&twosB, &ones, ones, _mm256_lddqu_si256(data + i + 6), + _mm256_lddqu_si256(data + i + 7)); + CSA(&foursB, &twos, twos, twosA, twosB); + CSA(&eightsA, &fours, fours, foursA, foursB); + CSA(&twosA, &ones, ones, _mm256_lddqu_si256(data + i + 8), + _mm256_lddqu_si256(data + i + 9)); + CSA(&twosB, &ones, ones, _mm256_lddqu_si256(data + i + 10), + _mm256_lddqu_si256(data + i + 11)); + CSA(&foursA, &twos, twos, twosA, twosB); + CSA(&twosA, &ones, ones, _mm256_lddqu_si256(data + i + 12), + _mm256_lddqu_si256(data + i + 13)); + CSA(&twosB, &ones, ones, _mm256_lddqu_si256(data + i + 14), + _mm256_lddqu_si256(data + i + 15)); + CSA(&foursB, &twos, twos, twosA, twosB); + CSA(&eightsB, &fours, fours, foursA, foursB); + CSA(&sixteens, &eights, eights, eightsA, eightsB); + + total = _mm256_add_epi64(total, popcount256(sixteens)); + } + + total = _mm256_slli_epi64(total, 4); // * 16 + total = _mm256_add_epi64( + total, _mm256_slli_epi64(popcount256(eights), 3)); // += 8 * ... + total = _mm256_add_epi64( + total, _mm256_slli_epi64(popcount256(fours), 2)); // += 4 * ... + total = _mm256_add_epi64( + total, _mm256_slli_epi64(popcount256(twos), 1)); // += 2 * ... + total = _mm256_add_epi64(total, popcount256(ones)); + for (; i < size; i++) + total = + _mm256_add_epi64(total, popcount256(_mm256_lddqu_si256(data + i))); + + return (uint64_t)(_mm256_extract_epi64(total, 0)) + + (uint64_t)(_mm256_extract_epi64(total, 1)) + + (uint64_t)(_mm256_extract_epi64(total, 2)) + + (uint64_t)(_mm256_extract_epi64(total, 3)); +} +CROARING_UNTARGET_AVX2 + +#define CROARING_AVXPOPCNTFNC(opname, avx_intrinsic) \ + static inline uint64_t avx2_harley_seal_popcount256_##opname( \ + const __m256i *data1, const __m256i *data2, const uint64_t size) { \ + __m256i total = _mm256_setzero_si256(); \ + __m256i ones = _mm256_setzero_si256(); \ + __m256i twos = _mm256_setzero_si256(); \ + __m256i fours = _mm256_setzero_si256(); \ + __m256i eights = _mm256_setzero_si256(); \ + __m256i sixteens = _mm256_setzero_si256(); \ + __m256i twosA, twosB, foursA, foursB, eightsA, eightsB; \ + __m256i A1, A2; \ + const uint64_t limit = size - size % 16; \ + uint64_t i = 0; \ + for (; i < limit; i += 16) { \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i), \ + _mm256_lddqu_si256(data2 + i)); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 1), \ + _mm256_lddqu_si256(data2 + i + 1)); \ + CSA(&twosA, &ones, ones, A1, A2); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 2), \ + _mm256_lddqu_si256(data2 + i + 2)); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 3), \ + _mm256_lddqu_si256(data2 + i + 3)); \ + CSA(&twosB, &ones, ones, A1, A2); \ + CSA(&foursA, &twos, twos, twosA, twosB); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 4), \ + _mm256_lddqu_si256(data2 + i + 4)); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 5), \ + _mm256_lddqu_si256(data2 + i + 5)); \ + CSA(&twosA, &ones, ones, A1, A2); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 6), \ + _mm256_lddqu_si256(data2 + i + 6)); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 7), \ + _mm256_lddqu_si256(data2 + i + 7)); \ + CSA(&twosB, &ones, ones, A1, A2); \ + CSA(&foursB, &twos, twos, twosA, twosB); \ + CSA(&eightsA, &fours, fours, foursA, foursB); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 8), \ + _mm256_lddqu_si256(data2 + i + 8)); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 9), \ + _mm256_lddqu_si256(data2 + i + 9)); \ + CSA(&twosA, &ones, ones, A1, A2); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 10), \ + _mm256_lddqu_si256(data2 + i + 10)); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 11), \ + _mm256_lddqu_si256(data2 + i + 11)); \ + CSA(&twosB, &ones, ones, A1, A2); \ + CSA(&foursA, &twos, twos, twosA, twosB); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 12), \ + _mm256_lddqu_si256(data2 + i + 12)); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 13), \ + _mm256_lddqu_si256(data2 + i + 13)); \ + CSA(&twosA, &ones, ones, A1, A2); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 14), \ + _mm256_lddqu_si256(data2 + i + 14)); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 15), \ + _mm256_lddqu_si256(data2 + i + 15)); \ + CSA(&twosB, &ones, ones, A1, A2); \ + CSA(&foursB, &twos, twos, twosA, twosB); \ + CSA(&eightsB, &fours, fours, foursA, foursB); \ + CSA(&sixteens, &eights, eights, eightsA, eightsB); \ + total = _mm256_add_epi64(total, popcount256(sixteens)); \ + } \ + total = _mm256_slli_epi64(total, 4); \ + total = _mm256_add_epi64(total, \ + _mm256_slli_epi64(popcount256(eights), 3)); \ + total = \ + _mm256_add_epi64(total, _mm256_slli_epi64(popcount256(fours), 2)); \ + total = \ + _mm256_add_epi64(total, _mm256_slli_epi64(popcount256(twos), 1)); \ + total = _mm256_add_epi64(total, popcount256(ones)); \ + for (; i < size; i++) { \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i), \ + _mm256_lddqu_si256(data2 + i)); \ + total = _mm256_add_epi64(total, popcount256(A1)); \ + } \ + return (uint64_t)(_mm256_extract_epi64(total, 0)) + \ + (uint64_t)(_mm256_extract_epi64(total, 1)) + \ + (uint64_t)(_mm256_extract_epi64(total, 2)) + \ + (uint64_t)(_mm256_extract_epi64(total, 3)); \ + } \ + static inline uint64_t avx2_harley_seal_popcount256andstore_##opname( \ + const __m256i *__restrict__ data1, const __m256i *__restrict__ data2, \ + __m256i *__restrict__ out, const uint64_t size) { \ + __m256i total = _mm256_setzero_si256(); \ + __m256i ones = _mm256_setzero_si256(); \ + __m256i twos = _mm256_setzero_si256(); \ + __m256i fours = _mm256_setzero_si256(); \ + __m256i eights = _mm256_setzero_si256(); \ + __m256i sixteens = _mm256_setzero_si256(); \ + __m256i twosA, twosB, foursA, foursB, eightsA, eightsB; \ + __m256i A1, A2; \ + const uint64_t limit = size - size % 16; \ + uint64_t i = 0; \ + for (; i < limit; i += 16) { \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i), \ + _mm256_lddqu_si256(data2 + i)); \ + _mm256_storeu_si256(out + i, A1); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 1), \ + _mm256_lddqu_si256(data2 + i + 1)); \ + _mm256_storeu_si256(out + i + 1, A2); \ + CSA(&twosA, &ones, ones, A1, A2); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 2), \ + _mm256_lddqu_si256(data2 + i + 2)); \ + _mm256_storeu_si256(out + i + 2, A1); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 3), \ + _mm256_lddqu_si256(data2 + i + 3)); \ + _mm256_storeu_si256(out + i + 3, A2); \ + CSA(&twosB, &ones, ones, A1, A2); \ + CSA(&foursA, &twos, twos, twosA, twosB); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 4), \ + _mm256_lddqu_si256(data2 + i + 4)); \ + _mm256_storeu_si256(out + i + 4, A1); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 5), \ + _mm256_lddqu_si256(data2 + i + 5)); \ + _mm256_storeu_si256(out + i + 5, A2); \ + CSA(&twosA, &ones, ones, A1, A2); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 6), \ + _mm256_lddqu_si256(data2 + i + 6)); \ + _mm256_storeu_si256(out + i + 6, A1); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 7), \ + _mm256_lddqu_si256(data2 + i + 7)); \ + _mm256_storeu_si256(out + i + 7, A2); \ + CSA(&twosB, &ones, ones, A1, A2); \ + CSA(&foursB, &twos, twos, twosA, twosB); \ + CSA(&eightsA, &fours, fours, foursA, foursB); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 8), \ + _mm256_lddqu_si256(data2 + i + 8)); \ + _mm256_storeu_si256(out + i + 8, A1); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 9), \ + _mm256_lddqu_si256(data2 + i + 9)); \ + _mm256_storeu_si256(out + i + 9, A2); \ + CSA(&twosA, &ones, ones, A1, A2); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 10), \ + _mm256_lddqu_si256(data2 + i + 10)); \ + _mm256_storeu_si256(out + i + 10, A1); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 11), \ + _mm256_lddqu_si256(data2 + i + 11)); \ + _mm256_storeu_si256(out + i + 11, A2); \ + CSA(&twosB, &ones, ones, A1, A2); \ + CSA(&foursA, &twos, twos, twosA, twosB); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 12), \ + _mm256_lddqu_si256(data2 + i + 12)); \ + _mm256_storeu_si256(out + i + 12, A1); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 13), \ + _mm256_lddqu_si256(data2 + i + 13)); \ + _mm256_storeu_si256(out + i + 13, A2); \ + CSA(&twosA, &ones, ones, A1, A2); \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 14), \ + _mm256_lddqu_si256(data2 + i + 14)); \ + _mm256_storeu_si256(out + i + 14, A1); \ + A2 = avx_intrinsic(_mm256_lddqu_si256(data1 + i + 15), \ + _mm256_lddqu_si256(data2 + i + 15)); \ + _mm256_storeu_si256(out + i + 15, A2); \ + CSA(&twosB, &ones, ones, A1, A2); \ + CSA(&foursB, &twos, twos, twosA, twosB); \ + CSA(&eightsB, &fours, fours, foursA, foursB); \ + CSA(&sixteens, &eights, eights, eightsA, eightsB); \ + total = _mm256_add_epi64(total, popcount256(sixteens)); \ + } \ + total = _mm256_slli_epi64(total, 4); \ + total = _mm256_add_epi64(total, \ + _mm256_slli_epi64(popcount256(eights), 3)); \ + total = \ + _mm256_add_epi64(total, _mm256_slli_epi64(popcount256(fours), 2)); \ + total = \ + _mm256_add_epi64(total, _mm256_slli_epi64(popcount256(twos), 1)); \ + total = _mm256_add_epi64(total, popcount256(ones)); \ + for (; i < size; i++) { \ + A1 = avx_intrinsic(_mm256_lddqu_si256(data1 + i), \ + _mm256_lddqu_si256(data2 + i)); \ + _mm256_storeu_si256(out + i, A1); \ + total = _mm256_add_epi64(total, popcount256(A1)); \ + } \ + return (uint64_t)(_mm256_extract_epi64(total, 0)) + \ + (uint64_t)(_mm256_extract_epi64(total, 1)) + \ + (uint64_t)(_mm256_extract_epi64(total, 2)) + \ + (uint64_t)(_mm256_extract_epi64(total, 3)); \ + } + +CROARING_TARGET_AVX2 +CROARING_AVXPOPCNTFNC(or, _mm256_or_si256) +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +CROARING_AVXPOPCNTFNC(union, _mm256_or_si256) +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +CROARING_AVXPOPCNTFNC(and, _mm256_and_si256) +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +CROARING_AVXPOPCNTFNC(intersection, _mm256_and_si256) +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +CROARING_AVXPOPCNTFNC(xor, _mm256_xor_si256) +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +CROARING_AVXPOPCNTFNC(andnot, _mm256_andnot_si256) +CROARING_UNTARGET_AVX2 + +#define VPOPCNT_AND_ADD(ptr, i, accu) \ + const __m512i v##i = _mm512_loadu_si512((const __m512i *)ptr + i); \ + const __m512i p##i = _mm512_popcnt_epi64(v##i); \ + accu = _mm512_add_epi64(accu, p##i); + +#if CROARING_COMPILER_SUPPORTS_AVX512 +CROARING_TARGET_AVX512 +static inline uint64_t sum_epu64_256(const __m256i v) { + return (uint64_t)(_mm256_extract_epi64(v, 0)) + + (uint64_t)(_mm256_extract_epi64(v, 1)) + + (uint64_t)(_mm256_extract_epi64(v, 2)) + + (uint64_t)(_mm256_extract_epi64(v, 3)); +} + +static inline uint64_t simd_sum_epu64(const __m512i v) { + __m256i lo = _mm512_extracti64x4_epi64(v, 0); + __m256i hi = _mm512_extracti64x4_epi64(v, 1); + + return sum_epu64_256(lo) + sum_epu64_256(hi); +} + +static inline uint64_t avx512_vpopcount(const __m512i *data, + const uint64_t size) { + const uint64_t limit = size - size % 4; + __m512i total = _mm512_setzero_si512(); + uint64_t i = 0; + + for (; i < limit; i += 4) { + VPOPCNT_AND_ADD(data + i, 0, total); + VPOPCNT_AND_ADD(data + i, 1, total); + VPOPCNT_AND_ADD(data + i, 2, total); + VPOPCNT_AND_ADD(data + i, 3, total); + } + + for (; i < size; i++) { + total = _mm512_add_epi64( + total, _mm512_popcnt_epi64(_mm512_loadu_si512(data + i))); + } + + return simd_sum_epu64(total); +} +CROARING_UNTARGET_AVX512 +#endif + +#define CROARING_AVXPOPCNTFNC512(opname, avx_intrinsic) \ + static inline uint64_t avx512_harley_seal_popcount512_##opname( \ + const __m512i *data1, const __m512i *data2, const uint64_t size) { \ + __m512i total = _mm512_setzero_si512(); \ + const uint64_t limit = size - size % 4; \ + uint64_t i = 0; \ + for (; i < limit; i += 4) { \ + __m512i a1 = avx_intrinsic(_mm512_loadu_si512(data1 + i), \ + _mm512_loadu_si512(data2 + i)); \ + total = _mm512_add_epi64(total, _mm512_popcnt_epi64(a1)); \ + __m512i a2 = avx_intrinsic(_mm512_loadu_si512(data1 + i + 1), \ + _mm512_loadu_si512(data2 + i + 1)); \ + total = _mm512_add_epi64(total, _mm512_popcnt_epi64(a2)); \ + __m512i a3 = avx_intrinsic(_mm512_loadu_si512(data1 + i + 2), \ + _mm512_loadu_si512(data2 + i + 2)); \ + total = _mm512_add_epi64(total, _mm512_popcnt_epi64(a3)); \ + __m512i a4 = avx_intrinsic(_mm512_loadu_si512(data1 + i + 3), \ + _mm512_loadu_si512(data2 + i + 3)); \ + total = _mm512_add_epi64(total, _mm512_popcnt_epi64(a4)); \ + } \ + for (; i < size; i++) { \ + __m512i a = avx_intrinsic(_mm512_loadu_si512(data1 + i), \ + _mm512_loadu_si512(data2 + i)); \ + total = _mm512_add_epi64(total, _mm512_popcnt_epi64(a)); \ + } \ + return simd_sum_epu64(total); \ + } \ + static inline uint64_t avx512_harley_seal_popcount512andstore_##opname( \ + const __m512i *__restrict__ data1, const __m512i *__restrict__ data2, \ + __m512i *__restrict__ out, const uint64_t size) { \ + __m512i total = _mm512_setzero_si512(); \ + const uint64_t limit = size - size % 4; \ + uint64_t i = 0; \ + for (; i < limit; i += 4) { \ + __m512i a1 = avx_intrinsic(_mm512_loadu_si512(data1 + i), \ + _mm512_loadu_si512(data2 + i)); \ + _mm512_storeu_si512(out + i, a1); \ + total = _mm512_add_epi64(total, _mm512_popcnt_epi64(a1)); \ + __m512i a2 = avx_intrinsic(_mm512_loadu_si512(data1 + i + 1), \ + _mm512_loadu_si512(data2 + i + 1)); \ + _mm512_storeu_si512(out + i + 1, a2); \ + total = _mm512_add_epi64(total, _mm512_popcnt_epi64(a2)); \ + __m512i a3 = avx_intrinsic(_mm512_loadu_si512(data1 + i + 2), \ + _mm512_loadu_si512(data2 + i + 2)); \ + _mm512_storeu_si512(out + i + 2, a3); \ + total = _mm512_add_epi64(total, _mm512_popcnt_epi64(a3)); \ + __m512i a4 = avx_intrinsic(_mm512_loadu_si512(data1 + i + 3), \ + _mm512_loadu_si512(data2 + i + 3)); \ + _mm512_storeu_si512(out + i + 3, a4); \ + total = _mm512_add_epi64(total, _mm512_popcnt_epi64(a4)); \ + } \ + for (; i < size; i++) { \ + __m512i a = avx_intrinsic(_mm512_loadu_si512(data1 + i), \ + _mm512_loadu_si512(data2 + i)); \ + _mm512_storeu_si512(out + i, a); \ + total = _mm512_add_epi64(total, _mm512_popcnt_epi64(a)); \ + } \ + return simd_sum_epu64(total); \ + } + +#if CROARING_COMPILER_SUPPORTS_AVX512 +CROARING_TARGET_AVX512 +CROARING_AVXPOPCNTFNC512(or, _mm512_or_si512) +CROARING_AVXPOPCNTFNC512(union, _mm512_or_si512) +CROARING_AVXPOPCNTFNC512(and, _mm512_and_si512) +CROARING_AVXPOPCNTFNC512(intersection, _mm512_and_si512) +CROARING_AVXPOPCNTFNC512(xor, _mm512_xor_si512) +CROARING_AVXPOPCNTFNC512(andnot, _mm512_andnot_si512) +CROARING_UNTARGET_AVX512 +#endif +/*** + * END Harley-Seal popcount functions. + */ + +#endif // CROARING_IS_X64 + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal +#endif +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif +#endif diff --git a/contrib/libs/croaring/include/roaring/containers/array.h b/contrib/libs/croaring/include/roaring/containers/array.h new file mode 100644 index 000000000000..8d5c84a0cb50 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/array.h @@ -0,0 +1,521 @@ +/* + * array.h + * + */ + +#ifndef INCLUDE_CONTAINERS_ARRAY_H_ +#define INCLUDE_CONTAINERS_ARRAY_H_ + +#include <string.h> + +#include <roaring/roaring_types.h> // roaring_iterator + +// Include other headers after roaring_types.h +#include <roaring/array_util.h> // binarySearch()/memequals() for inlining +#include <roaring/containers/container_defs.h> // container_t, perfparameters +#include <roaring/portability.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { + +// Note: in pure C++ code, you should avoid putting `using` in header files +using api::roaring_iterator; +using api::roaring_iterator64; + +namespace internal { +#endif + +/* Containers with DEFAULT_MAX_SIZE or less integers should be arrays */ +enum { DEFAULT_MAX_SIZE = 4096 }; + +/* struct array_container - sparse representation of a bitmap + * + * @cardinality: number of indices in `array` (and the bitmap) + * @capacity: allocated size of `array` + * @array: sorted list of integers + */ +STRUCT_CONTAINER(array_container_s) { + int32_t cardinality; + int32_t capacity; + uint16_t *array; +}; + +typedef struct array_container_s array_container_t; + +#define CAST_array(c) CAST(array_container_t *, c) // safer downcast +#define const_CAST_array(c) CAST(const array_container_t *, c) +#define movable_CAST_array(c) movable_CAST(array_container_t **, c) + +/* Create a new array with default. Return NULL in case of failure. See also + * array_container_create_given_capacity. */ +array_container_t *array_container_create(void); + +/* Create a new array with a specified capacity size. Return NULL in case of + * failure. */ +array_container_t *array_container_create_given_capacity(int32_t size); + +/* Create a new array containing all values in [min,max). */ +array_container_t *array_container_create_range(uint32_t min, uint32_t max); + +/* + * Shrink the capacity to the actual size, return the number of bytes saved. + */ +int array_container_shrink_to_fit(array_container_t *src); + +/* Free memory owned by `array'. */ +void array_container_free(array_container_t *array); + +/* Duplicate container */ +array_container_t *array_container_clone(const array_container_t *src); + +/* Get the cardinality of `array'. */ +ALLOW_UNALIGNED +static inline int array_container_cardinality(const array_container_t *array) { + return array->cardinality; +} + +static inline bool array_container_nonzero_cardinality( + const array_container_t *array) { + return array->cardinality > 0; +} + +/* Copy one container into another. We assume that they are distinct. */ +void array_container_copy(const array_container_t *src, array_container_t *dst); + +/* Add all the values in [min,max) (included) at a distance k*step from min. + The container must have a size less or equal to DEFAULT_MAX_SIZE after this + addition. */ +void array_container_add_from_range(array_container_t *arr, uint32_t min, + uint32_t max, uint16_t step); + +static inline bool array_container_empty(const array_container_t *array) { + return array->cardinality == 0; +} + +/* check whether the cardinality is equal to the capacity (this does not mean + * that it contains 1<<16 elements) */ +static inline bool array_container_full(const array_container_t *array) { + return array->cardinality == array->capacity; +} + +/* Compute the union of `src_1' and `src_2' and write the result to `dst' + * It is assumed that `dst' is distinct from both `src_1' and `src_2'. */ +void array_container_union(const array_container_t *src_1, + const array_container_t *src_2, + array_container_t *dst); + +/* symmetric difference, see array_container_union */ +void array_container_xor(const array_container_t *array_1, + const array_container_t *array_2, + array_container_t *out); + +/* Computes the intersection of src_1 and src_2 and write the result to + * dst. It is assumed that dst is distinct from both src_1 and src_2. */ +void array_container_intersection(const array_container_t *src_1, + const array_container_t *src_2, + array_container_t *dst); + +/* Check whether src_1 and src_2 intersect. */ +bool array_container_intersect(const array_container_t *src_1, + const array_container_t *src_2); + +/* computers the size of the intersection between two arrays. + */ +int array_container_intersection_cardinality(const array_container_t *src_1, + const array_container_t *src_2); + +/* computes the intersection of array1 and array2 and write the result to + * array1. + * */ +void array_container_intersection_inplace(array_container_t *src_1, + const array_container_t *src_2); + +/* + * Write out the 16-bit integers contained in this container as a list of 32-bit + * integers using base + * as the starting value (it might be expected that base has zeros in its 16 + * least significant bits). + * The function returns the number of values written. + * The caller is responsible for allocating enough memory in out. + */ +int array_container_to_uint32_array(void *vout, const array_container_t *cont, + uint32_t base); + +/* Compute the number of runs */ +int32_t array_container_number_of_runs(const array_container_t *ac); + +/* + * Print this container using printf (useful for debugging). + */ +void array_container_printf(const array_container_t *v); + +/* + * Print this container using printf as a comma-separated list of 32-bit + * integers starting at base. + */ +void array_container_printf_as_uint32_array(const array_container_t *v, + uint32_t base); + +bool array_container_validate(const array_container_t *v, const char **reason); + +/** + * Return the serialized size in bytes of a container having cardinality "card". + */ +static inline int32_t array_container_serialized_size_in_bytes(int32_t card) { + return card * 2 + 2; +} + +/** + * Increase capacity to at least min. + * Whether the existing data needs to be copied over depends on the "preserve" + * parameter. If preserve is false, then the new content will be uninitialized, + * otherwise the old content is copied. + */ +void array_container_grow(array_container_t *container, int32_t min, + bool preserve); + +bool array_container_iterate(const array_container_t *cont, uint32_t base, + roaring_iterator iterator, void *ptr); +bool array_container_iterate64(const array_container_t *cont, uint32_t base, + roaring_iterator64 iterator, uint64_t high_bits, + void *ptr); + +/** + * Writes the underlying array to buf, outputs how many bytes were written. + * This is meant to be byte-by-byte compatible with the Java and Go versions of + * Roaring. + * The number of bytes written should be + * array_container_size_in_bytes(container). + * + */ +int32_t array_container_write(const array_container_t *container, char *buf); +/** + * Reads the instance from buf, outputs how many bytes were read. + * This is meant to be byte-by-byte compatible with the Java and Go versions of + * Roaring. + * The number of bytes read should be array_container_size_in_bytes(container). + * You need to provide the (known) cardinality. + */ +int32_t array_container_read(int32_t cardinality, array_container_t *container, + const char *buf); + +/** + * Return the serialized size in bytes of a container (see + * bitset_container_write) + * This is meant to be compatible with the Java and Go versions of Roaring and + * assumes + * that the cardinality of the container is already known. + * + */ +ALLOW_UNALIGNED +static inline int32_t array_container_size_in_bytes( + const array_container_t *container) { + return container->cardinality * sizeof(uint16_t); +} + +/** + * Return true if the two arrays have the same content. + */ +ALLOW_UNALIGNED +static inline bool array_container_equals(const array_container_t *container1, + const array_container_t *container2) { + if (container1->cardinality != container2->cardinality) { + return false; + } + return memequals(container1->array, container2->array, + container1->cardinality * 2); +} + +/** + * Return true if container1 is a subset of container2. + */ +bool array_container_is_subset(const array_container_t *container1, + const array_container_t *container2); + +/** + * If the element of given rank is in this container, supposing that the first + * element has rank start_rank, then the function returns true and sets element + * accordingly. + * Otherwise, it returns false and update start_rank. + */ +static inline bool array_container_select(const array_container_t *container, + uint32_t *start_rank, uint32_t rank, + uint32_t *element) { + int card = array_container_cardinality(container); + if (*start_rank + card <= rank) { + *start_rank += card; + return false; + } else { + *element = container->array[rank - *start_rank]; + return true; + } +} + +/* Computes the difference of array1 and array2 and write the result + * to array out. + * Array out does not need to be distinct from array_1 + */ +void array_container_andnot(const array_container_t *array_1, + const array_container_t *array_2, + array_container_t *out); + +/* Append x to the set. Assumes that the value is larger than any preceding + * values. */ +static inline void array_container_append(array_container_t *arr, + uint16_t pos) { + const int32_t capacity = arr->capacity; + + if (array_container_full(arr)) { + array_container_grow(arr, capacity + 1, true); + } + + arr->array[arr->cardinality++] = pos; +} + +/** + * Add value to the set if final cardinality doesn't exceed max_cardinality. + * Return code: + * 1 -- value was added + * 0 -- value was already present + * -1 -- value was not added because cardinality would exceed max_cardinality + */ +static inline int array_container_try_add(array_container_t *arr, + uint16_t value, + int32_t max_cardinality) { + const int32_t cardinality = arr->cardinality; + + // best case, we can append. + if ((array_container_empty(arr) || arr->array[cardinality - 1] < value) && + cardinality < max_cardinality) { + array_container_append(arr, value); + return 1; + } + + const int32_t loc = binarySearch(arr->array, cardinality, value); + + if (loc >= 0) { + return 0; + } else if (cardinality < max_cardinality) { + if (array_container_full(arr)) { + array_container_grow(arr, arr->capacity + 1, true); + } + const int32_t insert_idx = -loc - 1; + memmove(arr->array + insert_idx + 1, arr->array + insert_idx, + (cardinality - insert_idx) * sizeof(uint16_t)); + arr->array[insert_idx] = value; + arr->cardinality++; + return 1; + } else { + return -1; + } +} + +/* Add value to the set. Returns true if x was not already present. */ +static inline bool array_container_add(array_container_t *arr, uint16_t value) { + return array_container_try_add(arr, value, INT32_MAX) == 1; +} + +/* Remove x from the set. Returns true if x was present. */ +static inline bool array_container_remove(array_container_t *arr, + uint16_t pos) { + const int32_t idx = binarySearch(arr->array, arr->cardinality, pos); + const bool is_present = idx >= 0; + if (is_present) { + memmove(arr->array + idx, arr->array + idx + 1, + (arr->cardinality - idx - 1) * sizeof(uint16_t)); + arr->cardinality--; + } + + return is_present; +} + +/* Check whether x is present. */ +inline bool array_container_contains(const array_container_t *arr, + uint16_t pos) { + // return binarySearch(arr->array, arr->cardinality, pos) >= 0; + // binary search with fallback to linear search for short ranges + int32_t low = 0; + const uint16_t *carr = (const uint16_t *)arr->array; + int32_t high = arr->cardinality - 1; + // while (high - low >= 0) { + while (high >= low + 16) { + int32_t middleIndex = (low + high) >> 1; + uint16_t middleValue = carr[middleIndex]; + if (middleValue < pos) { + low = middleIndex + 1; + } else if (middleValue > pos) { + high = middleIndex - 1; + } else { + return true; + } + } + + for (int i = low; i <= high; i++) { + uint16_t v = carr[i]; + if (v == pos) { + return true; + } + if (v > pos) return false; + } + return false; +} + +void array_container_offset(const array_container_t *c, container_t **loc, + container_t **hic, uint16_t offset); + +//* Check whether a range of values from range_start (included) to range_end +//(excluded) is present. */ +static inline bool array_container_contains_range(const array_container_t *arr, + uint32_t range_start, + uint32_t range_end) { + const int32_t range_count = range_end - range_start; + const uint16_t rs_included = (uint16_t)range_start; + const uint16_t re_included = (uint16_t)(range_end - 1); + + // Empty range is always included + if (range_count <= 0) { + return true; + } + if (range_count > arr->cardinality) { + return false; + } + + const int32_t start = + binarySearch(arr->array, arr->cardinality, rs_included); + // If this sorted array contains all items in the range: + // * the start item must be found + // * the last item in range range_count must exist, and be the expected end + // value + return (start >= 0) && (arr->cardinality >= start + range_count) && + (arr->array[start + range_count - 1] == re_included); +} + +/* Returns the smallest value (assumes not empty) */ +inline uint16_t array_container_minimum(const array_container_t *arr) { + if (arr->cardinality == 0) return 0; + return arr->array[0]; +} + +/* Returns the largest value (assumes not empty) */ +inline uint16_t array_container_maximum(const array_container_t *arr) { + if (arr->cardinality == 0) return 0; + return arr->array[arr->cardinality - 1]; +} + +/* Returns the number of values equal or smaller than x */ +inline int array_container_rank(const array_container_t *arr, uint16_t x) { + const int32_t idx = binarySearch(arr->array, arr->cardinality, x); + const bool is_present = idx >= 0; + if (is_present) { + return idx + 1; + } else { + return -idx - 1; + } +} + +/* bulk version of array_container_rank(); return number of consumed elements + */ +inline uint32_t array_container_rank_many(const array_container_t *arr, + uint64_t start_rank, + const uint32_t *begin, + const uint32_t *end, uint64_t *ans) { + const uint16_t high = (uint16_t)((*begin) >> 16); + uint32_t pos = 0; + const uint32_t *iter = begin; + for (; iter != end; iter++) { + uint32_t x = *iter; + uint16_t xhigh = (uint16_t)(x >> 16); + if (xhigh != high) return iter - begin; // stop at next container + + const int32_t idx = + binarySearch(arr->array + pos, arr->cardinality - pos, (uint16_t)x); + const bool is_present = idx >= 0; + if (is_present) { + *(ans++) = start_rank + pos + (idx + 1); + pos = idx + 1; + } else { + *(ans++) = start_rank + pos + (-idx - 1); + } + } + return iter - begin; +} + +/* Returns the index of x , if not exsist return -1 */ +inline int array_container_get_index(const array_container_t *arr, uint16_t x) { + const int32_t idx = binarySearch(arr->array, arr->cardinality, x); + const bool is_present = idx >= 0; + if (is_present) { + return idx; + } else { + return -1; + } +} + +/* Returns the index of the first value equal or larger than x, or -1 */ +inline int array_container_index_equalorlarger(const array_container_t *arr, + uint16_t x) { + const int32_t idx = binarySearch(arr->array, arr->cardinality, x); + const bool is_present = idx >= 0; + if (is_present) { + return idx; + } else { + int32_t candidate = -idx - 1; + if (candidate < arr->cardinality) return candidate; + return -1; + } +} + +/* + * Adds all values in range [min,max] using hint: + * nvals_less is the number of array values less than $min + * nvals_greater is the number of array values greater than $max + */ +static inline void array_container_add_range_nvals(array_container_t *array, + uint32_t min, uint32_t max, + int32_t nvals_less, + int32_t nvals_greater) { + int32_t union_cardinality = nvals_less + (max - min + 1) + nvals_greater; + if (union_cardinality > array->capacity) { + array_container_grow(array, union_cardinality, true); + } + memmove(&(array->array[union_cardinality - nvals_greater]), + &(array->array[array->cardinality - nvals_greater]), + nvals_greater * sizeof(uint16_t)); + for (uint32_t i = 0; i <= max - min; i++) { + array->array[nvals_less + i] = (uint16_t)(min + i); + } + array->cardinality = union_cardinality; +} + +/** + * Adds all values in range [min,max]. This function is currently unused + * and left as a documentation. + */ +/*static inline void array_container_add_range(array_container_t *array, + uint32_t min, uint32_t max) { + int32_t nvals_greater = count_greater(array->array, array->cardinality, +max); int32_t nvals_less = count_less(array->array, array->cardinality - +nvals_greater, min); array_container_add_range_nvals(array, min, max, +nvals_less, nvals_greater); +}*/ + +/* + * Removes all elements array[pos] .. array[pos+count-1] + */ +static inline void array_container_remove_range(array_container_t *array, + uint32_t pos, uint32_t count) { + if (count != 0) { + memmove(&(array->array[pos]), &(array->array[pos + count]), + (array->cardinality - pos - count) * sizeof(uint16_t)); + array->cardinality -= count; + } +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif /* INCLUDE_CONTAINERS_ARRAY_H_ */ diff --git a/contrib/libs/croaring/include/roaring/containers/bitset.h b/contrib/libs/croaring/include/roaring/containers/bitset.h new file mode 100644 index 000000000000..a738a1ad63a7 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/bitset.h @@ -0,0 +1,514 @@ +/* + * bitset.h + * + */ + +#ifndef INCLUDE_CONTAINERS_BITSET_H_ +#define INCLUDE_CONTAINERS_BITSET_H_ + +#include <stdbool.h> +#include <stdint.h> + +#include <roaring/roaring_types.h> // roaring_iterator + +// Include other headers after roaring_types.h +#include <roaring/containers/container_defs.h> // container_t, perfparameters +#include <roaring/portability.h> +#include <roaring/roaring_types.h> // roaring_iterator +#include <roaring/utilasm.h> // ASM_XXX macros + +#ifdef __cplusplus +extern "C" { +namespace roaring { + +// Note: in pure C++ code, you should avoid putting `using` in header files +using api::roaring_iterator; +using api::roaring_iterator64; + +namespace internal { +#endif + +enum { + BITSET_CONTAINER_SIZE_IN_WORDS = (1 << 16) / 64, + BITSET_UNKNOWN_CARDINALITY = -1 +}; + +STRUCT_CONTAINER(bitset_container_s) { + int32_t cardinality; + uint64_t *words; +}; + +typedef struct bitset_container_s bitset_container_t; + +#define CAST_bitset(c) CAST(bitset_container_t *, c) // safer downcast +#define const_CAST_bitset(c) CAST(const bitset_container_t *, c) +#define movable_CAST_bitset(c) movable_CAST(bitset_container_t **, c) + +/* Create a new bitset. Return NULL in case of failure. */ +bitset_container_t *bitset_container_create(void); + +/* Free memory. */ +void bitset_container_free(bitset_container_t *bitset); + +/* Clear bitset (sets bits to 0). */ +void bitset_container_clear(bitset_container_t *bitset); + +/* Set all bits to 1. */ +void bitset_container_set_all(bitset_container_t *bitset); + +/* Duplicate bitset */ +bitset_container_t *bitset_container_clone(const bitset_container_t *src); + +/* Set the bit in [begin,end). WARNING: as of April 2016, this method is slow + * and + * should not be used in performance-sensitive code. Ever. */ +void bitset_container_set_range(bitset_container_t *bitset, uint32_t begin, + uint32_t end); + +#if defined(CROARING_ASMBITMANIPOPTIMIZATION) && defined(__AVX2__) +/* Set the ith bit. */ +static inline void bitset_container_set(bitset_container_t *bitset, + uint16_t pos) { + uint64_t shift = 6; + uint64_t offset; + uint64_t p = pos; + ASM_SHIFT_RIGHT(p, shift, offset); + uint64_t load = bitset->words[offset]; + ASM_SET_BIT_INC_WAS_CLEAR(load, p, bitset->cardinality); + bitset->words[offset] = load; +} + +/* Unset the ith bit. Currently unused. Could be used for optimization. */ +/*static inline void bitset_container_unset(bitset_container_t *bitset, + uint16_t pos) { + uint64_t shift = 6; + uint64_t offset; + uint64_t p = pos; + ASM_SHIFT_RIGHT(p, shift, offset); + uint64_t load = bitset->words[offset]; + ASM_CLEAR_BIT_DEC_WAS_SET(load, p, bitset->cardinality); + bitset->words[offset] = load; +}*/ + +/* Add `pos' to `bitset'. Returns true if `pos' was not present. Might be slower + * than bitset_container_set. */ +static inline bool bitset_container_add(bitset_container_t *bitset, + uint16_t pos) { + uint64_t shift = 6; + uint64_t offset; + uint64_t p = pos; + ASM_SHIFT_RIGHT(p, shift, offset); + uint64_t load = bitset->words[offset]; + // could be possibly slightly further optimized + const int32_t oldcard = bitset->cardinality; + ASM_SET_BIT_INC_WAS_CLEAR(load, p, bitset->cardinality); + bitset->words[offset] = load; + return bitset->cardinality - oldcard; +} + +/* Remove `pos' from `bitset'. Returns true if `pos' was present. Might be + * slower than bitset_container_unset. */ +static inline bool bitset_container_remove(bitset_container_t *bitset, + uint16_t pos) { + uint64_t shift = 6; + uint64_t offset; + uint64_t p = pos; + ASM_SHIFT_RIGHT(p, shift, offset); + uint64_t load = bitset->words[offset]; + // could be possibly slightly further optimized + const int32_t oldcard = bitset->cardinality; + ASM_CLEAR_BIT_DEC_WAS_SET(load, p, bitset->cardinality); + bitset->words[offset] = load; + return oldcard - bitset->cardinality; +} + +/* Get the value of the ith bit. */ +inline bool bitset_container_get(const bitset_container_t *bitset, + uint16_t pos) { + uint64_t word = bitset->words[pos >> 6]; + const uint64_t p = pos; + ASM_INPLACESHIFT_RIGHT(word, p); + return word & 1; +} + +#else + +/* Set the ith bit. */ +static inline void bitset_container_set(bitset_container_t *bitset, + uint16_t pos) { + const uint64_t old_word = bitset->words[pos >> 6]; + const int index = pos & 63; + const uint64_t new_word = old_word | (UINT64_C(1) << index); + bitset->cardinality += (uint32_t)((old_word ^ new_word) >> index); + bitset->words[pos >> 6] = new_word; +} + +/* Unset the ith bit. Currently unused. */ +/*static inline void bitset_container_unset(bitset_container_t *bitset, + uint16_t pos) { + const uint64_t old_word = bitset->words[pos >> 6]; + const int index = pos & 63; + const uint64_t new_word = old_word & (~(UINT64_C(1) << index)); + bitset->cardinality -= (uint32_t)((old_word ^ new_word) >> index); + bitset->words[pos >> 6] = new_word; +}*/ + +/* Add `pos' to `bitset'. Returns true if `pos' was not present. Might be slower + * than bitset_container_set. */ +static inline bool bitset_container_add(bitset_container_t *bitset, + uint16_t pos) { + const uint64_t old_word = bitset->words[pos >> 6]; + const int index = pos & 63; + const uint64_t new_word = old_word | (UINT64_C(1) << index); + const uint64_t increment = (old_word ^ new_word) >> index; + bitset->cardinality += (uint32_t)increment; + bitset->words[pos >> 6] = new_word; + return increment > 0; +} + +/* Remove `pos' from `bitset'. Returns true if `pos' was present. Might be + * slower than bitset_container_unset. */ +static inline bool bitset_container_remove(bitset_container_t *bitset, + uint16_t pos) { + const uint64_t old_word = bitset->words[pos >> 6]; + const int index = pos & 63; + const uint64_t new_word = old_word & (~(UINT64_C(1) << index)); + const uint64_t increment = (old_word ^ new_word) >> index; + bitset->cardinality -= (uint32_t)increment; + bitset->words[pos >> 6] = new_word; + return increment > 0; +} + +/* Get the value of the ith bit. */ +inline bool bitset_container_get(const bitset_container_t *bitset, + uint16_t pos) { + const uint64_t word = bitset->words[pos >> 6]; + return (word >> (pos & 63)) & 1; +} + +#endif + +/* + * Check if all bits are set in a range of positions from pos_start (included) + * to pos_end (excluded). + */ +static inline bool bitset_container_get_range(const bitset_container_t *bitset, + uint32_t pos_start, + uint32_t pos_end) { + const uint32_t start = pos_start >> 6; + const uint32_t end = pos_end >> 6; + + const uint64_t first = ~((1ULL << (pos_start & 0x3F)) - 1); + const uint64_t last = (1ULL << (pos_end & 0x3F)) - 1; + + if (start == end) + return ((bitset->words[end] & first & last) == (first & last)); + if ((bitset->words[start] & first) != first) return false; + + if ((end < BITSET_CONTAINER_SIZE_IN_WORDS) && + ((bitset->words[end] & last) != last)) { + return false; + } + + for (uint32_t i = start + 1; + (i < BITSET_CONTAINER_SIZE_IN_WORDS) && (i < end); ++i) { + if (bitset->words[i] != UINT64_C(0xFFFFFFFFFFFFFFFF)) return false; + } + + return true; +} + +/* Check whether `bitset' is present in `array'. Calls bitset_container_get. */ +inline bool bitset_container_contains(const bitset_container_t *bitset, + uint16_t pos) { + return bitset_container_get(bitset, pos); +} + +/* + * Check whether a range of bits from position `pos_start' (included) to + * `pos_end' (excluded) is present in `bitset'. Calls bitset_container_get_all. + */ +static inline bool bitset_container_contains_range( + const bitset_container_t *bitset, uint32_t pos_start, uint32_t pos_end) { + return bitset_container_get_range(bitset, pos_start, pos_end); +} + +/* Get the number of bits set */ +ALLOW_UNALIGNED +static inline int bitset_container_cardinality( + const bitset_container_t *bitset) { + return bitset->cardinality; +} + +/* Copy one container into another. We assume that they are distinct. */ +void bitset_container_copy(const bitset_container_t *source, + bitset_container_t *dest); + +/* Add all the values [min,max) at a distance k*step from min: min, + * min+step,.... */ +void bitset_container_add_from_range(bitset_container_t *bitset, uint32_t min, + uint32_t max, uint16_t step); + +/* Get the number of bits set (force computation). This does not modify bitset. + * To update the cardinality, you should do + * bitset->cardinality = bitset_container_compute_cardinality(bitset).*/ +int bitset_container_compute_cardinality(const bitset_container_t *bitset); + +/* Check whether this bitset is empty, + * it never modifies the bitset struct. */ +static inline bool bitset_container_empty(const bitset_container_t *bitset) { + if (bitset->cardinality == BITSET_UNKNOWN_CARDINALITY) { + for (int i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i++) { + if ((bitset->words[i]) != 0) return false; + } + return true; + } + return bitset->cardinality == 0; +} + +/* Get whether there is at least one bit set (see bitset_container_empty for + the reverse), the bitset is never modified */ +static inline bool bitset_container_const_nonzero_cardinality( + const bitset_container_t *bitset) { + return !bitset_container_empty(bitset); +} + +/* + * Check whether the two bitsets intersect + */ +bool bitset_container_intersect(const bitset_container_t *src_1, + const bitset_container_t *src_2); + +/* Computes the union of bitsets `src_1' and `src_2' into `dst' and return the + * cardinality. */ +int bitset_container_or(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Computes the union of bitsets `src_1' and `src_2' and return the cardinality. + */ +int bitset_container_or_justcard(const bitset_container_t *src_1, + const bitset_container_t *src_2); + +/* Computes the union of bitsets `src_1' and `src_2' into `dst' and return the + * cardinality. Same as bitset_container_or. */ +int bitset_container_union(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Computes the union of bitsets `src_1' and `src_2' and return the + * cardinality. Same as bitset_container_or_justcard. */ +int bitset_container_union_justcard(const bitset_container_t *src_1, + const bitset_container_t *src_2); + +/* Computes the union of bitsets `src_1' and `src_2' into `dst', but does + * not update the cardinality. Provided to optimize chained operations. */ +int bitset_container_union_nocard(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Computes the union of bitsets `src_1' and `src_2' into `dst', but does not + * update the cardinality. Provided to optimize chained operations. */ +int bitset_container_or_nocard(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Computes the intersection of bitsets `src_1' and `src_2' into `dst' and + * return the cardinality. */ +int bitset_container_and(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Computes the intersection of bitsets `src_1' and `src_2' and return the + * cardinality. */ +int bitset_container_and_justcard(const bitset_container_t *src_1, + const bitset_container_t *src_2); + +/* Computes the intersection of bitsets `src_1' and `src_2' into `dst' and + * return the cardinality. Same as bitset_container_and. */ +int bitset_container_intersection(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Computes the intersection of bitsets `src_1' and `src_2' and return the + * cardinality. Same as bitset_container_and_justcard. */ +int bitset_container_intersection_justcard(const bitset_container_t *src_1, + const bitset_container_t *src_2); + +/* Computes the intersection of bitsets `src_1' and `src_2' into `dst', but does + * not update the cardinality. Provided to optimize chained operations. */ +int bitset_container_intersection_nocard(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Computes the intersection of bitsets `src_1' and `src_2' into `dst', but does + * not update the cardinality. Provided to optimize chained operations. */ +int bitset_container_and_nocard(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Computes the exclusive or of bitsets `src_1' and `src_2' into `dst' and + * return the cardinality. */ +int bitset_container_xor(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Computes the exclusive or of bitsets `src_1' and `src_2' and return the + * cardinality. */ +int bitset_container_xor_justcard(const bitset_container_t *src_1, + const bitset_container_t *src_2); + +/* Computes the exclusive or of bitsets `src_1' and `src_2' into `dst', but does + * not update the cardinality. Provided to optimize chained operations. */ +int bitset_container_xor_nocard(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Computes the and not of bitsets `src_1' and `src_2' into `dst' and return the + * cardinality. */ +int bitset_container_andnot(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Computes the and not of bitsets `src_1' and `src_2' and return the + * cardinality. */ +int bitset_container_andnot_justcard(const bitset_container_t *src_1, + const bitset_container_t *src_2); + +/* Computes the and not or of bitsets `src_1' and `src_2' into `dst', but does + * not update the cardinality. Provided to optimize chained operations. */ +int bitset_container_andnot_nocard(const bitset_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +void bitset_container_offset(const bitset_container_t *c, container_t **loc, + container_t **hic, uint16_t offset); +/* + * Write out the 16-bit integers contained in this container as a list of 32-bit + * integers using base + * as the starting value (it might be expected that base has zeros in its 16 + * least significant bits). + * The function returns the number of values written. + * The caller is responsible for allocating enough memory in out. + * The out pointer should point to enough memory (the cardinality times 32 + * bits). + */ +int bitset_container_to_uint32_array(uint32_t *out, + const bitset_container_t *bc, + uint32_t base); + +/* + * Print this container using printf (useful for debugging). + */ +void bitset_container_printf(const bitset_container_t *v); + +/* + * Print this container using printf as a comma-separated list of 32-bit + * integers starting at base. + */ +void bitset_container_printf_as_uint32_array(const bitset_container_t *v, + uint32_t base); + +bool bitset_container_validate(const bitset_container_t *v, + const char **reason); + +/** + * Return the serialized size in bytes of a container. + */ +static inline int32_t bitset_container_serialized_size_in_bytes(void) { + return BITSET_CONTAINER_SIZE_IN_WORDS * 8; +} + +/** + * Return the the number of runs. + */ +int bitset_container_number_of_runs(bitset_container_t *bc); + +bool bitset_container_iterate(const bitset_container_t *cont, uint32_t base, + roaring_iterator iterator, void *ptr); +bool bitset_container_iterate64(const bitset_container_t *cont, uint32_t base, + roaring_iterator64 iterator, uint64_t high_bits, + void *ptr); + +/** + * Writes the underlying array to buf, outputs how many bytes were written. + * This is meant to be byte-by-byte compatible with the Java and Go versions of + * Roaring. + * The number of bytes written should be + * bitset_container_size_in_bytes(container). + */ +int32_t bitset_container_write(const bitset_container_t *container, char *buf); + +/** + * Reads the instance from buf, outputs how many bytes were read. + * This is meant to be byte-by-byte compatible with the Java and Go versions of + * Roaring. + * The number of bytes read should be bitset_container_size_in_bytes(container). + * You need to provide the (known) cardinality. + */ +int32_t bitset_container_read(int32_t cardinality, + bitset_container_t *container, const char *buf); +/** + * Return the serialized size in bytes of a container (see + * bitset_container_write). + * This is meant to be compatible with the Java and Go versions of Roaring and + * assumes + * that the cardinality of the container is already known or can be computed. + */ +static inline int32_t bitset_container_size_in_bytes( + const bitset_container_t *container) { + (void)container; + return BITSET_CONTAINER_SIZE_IN_WORDS * sizeof(uint64_t); +} + +/** + * Return true if the two containers have the same content. + */ +bool bitset_container_equals(const bitset_container_t *container1, + const bitset_container_t *container2); + +/** + * Return true if container1 is a subset of container2. + */ +bool bitset_container_is_subset(const bitset_container_t *container1, + const bitset_container_t *container2); + +/** + * If the element of given rank is in this container, supposing that the first + * element has rank start_rank, then the function returns true and sets element + * accordingly. + * Otherwise, it returns false and update start_rank. + */ +bool bitset_container_select(const bitset_container_t *container, + uint32_t *start_rank, uint32_t rank, + uint32_t *element); + +/* Returns the smallest value (assumes not empty) */ +uint16_t bitset_container_minimum(const bitset_container_t *container); + +/* Returns the largest value (assumes not empty) */ +uint16_t bitset_container_maximum(const bitset_container_t *container); + +/* Returns the number of values equal or smaller than x */ +int bitset_container_rank(const bitset_container_t *container, uint16_t x); + +/* bulk version of bitset_container_rank(); return number of consumed elements + */ +uint32_t bitset_container_rank_many(const bitset_container_t *container, + uint64_t start_rank, const uint32_t *begin, + const uint32_t *end, uint64_t *ans); + +/* Returns the index of x , if not exsist return -1 */ +int bitset_container_get_index(const bitset_container_t *container, uint16_t x); + +/* Returns the index of the first value equal or larger than x, or -1 */ +int bitset_container_index_equalorlarger(const bitset_container_t *container, + uint16_t x); + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif /* INCLUDE_CONTAINERS_BITSET_H_ */ diff --git a/contrib/libs/croaring/include/roaring/containers/container_defs.h b/contrib/libs/croaring/include/roaring/containers/container_defs.h new file mode 100644 index 000000000000..402bad787d23 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/container_defs.h @@ -0,0 +1,100 @@ +/* + * container_defs.h + * + * Unlike containers.h (which is a file aggregating all the container includes, + * like array.h, bitset.h, and run.h) this is a file included BY those headers + * to do things like define the container base class `container_t`. + */ + +#ifndef INCLUDE_CONTAINERS_CONTAINER_DEFS_H_ +#define INCLUDE_CONTAINERS_CONTAINER_DEFS_H_ + +#ifdef __cplusplus +#include <type_traits> // used by casting helper for compile-time check +#endif + +// The preferences are a separate file to separate out tweakable parameters +#include <roaring/containers/perfparameters.h> + +#ifdef __cplusplus +namespace roaring { +namespace internal { // No extern "C" (contains template) +#endif + +/* + * Since roaring_array_t's definition is not opaque, the container type is + * part of the API. If it's not going to be `void*` then it needs a name, and + * expectations are to prefix C library-exported names with `roaring_` etc. + * + * Rather than force the whole codebase to use the name `roaring_container_t`, + * the few API appearances use the macro ROARING_CONTAINER_T. Those includes + * are prior to containers.h, so make a short private alias of `container_t`. + * Then undefine the awkward macro so it's not used any more than it has to be. + */ +typedef ROARING_CONTAINER_T container_t; +#undef ROARING_CONTAINER_T + +/* + * See ROARING_CONTAINER_T for notes on using container_t as a base class. + * This macro helps make the following pattern look nicer: + * + * #ifdef __cplusplus + * struct roaring_array_s : public container_t { + * #else + * struct roaring_array_s { + * #endif + * int32_t cardinality; + * int32_t capacity; + * uint16_t *array; + * } + */ +#if defined(__cplusplus) +#define STRUCT_CONTAINER(name) struct name : public container_t /* { ... } */ +#else +#define STRUCT_CONTAINER(name) struct name /* { ... } */ +#endif + +/** + * Since container_t* is not void* in C++, "dangerous" casts are not needed to + * downcast; only a static_cast<> is needed. Define a macro for static casting + * which helps make casts more visible, and catches problems at compile-time + * when building the C sources in C++ mode: + * + * void some_func(container_t **c, ...) { // double pointer, not single + * array_container_t *ac1 = (array_container_t *)(c); // uncaught!! + * + * array_container_t *ac2 = CAST(array_container_t *, c) // C++ errors + * array_container_t *ac3 = CAST_array(c); // shorthand for #2, errors + * } + * + * Trickier to do is a cast from `container**` to `array_container_t**`. This + * needs a reinterpret_cast<>, which sacrifices safety...so a template is used + * leveraging <type_traits> to make sure it's legal in the C++ build. + */ +#ifdef __cplusplus +#define CAST(type, value) static_cast<type>(value) +#define movable_CAST(type, value) movable_CAST_HELPER<type>(value) + +template <typename PPDerived, typename Base> +PPDerived movable_CAST_HELPER(Base **ptr_to_ptr) { + typedef typename std::remove_pointer<PPDerived>::type PDerived; + typedef typename std::remove_pointer<PDerived>::type Derived; + static_assert(std::is_base_of<Base, Derived>::value, + "use movable_CAST() for container_t** => xxx_container_t**"); + return reinterpret_cast<Derived **>(ptr_to_ptr); +} +#else +#define CAST(type, value) ((type)value) +#define movable_CAST(type, value) ((type)value) +#endif + +// Use for converting e.g. an `array_container_t**` to a `container_t**` +// +#define movable_CAST_base(c) movable_CAST(container_t **, c) + +#ifdef __cplusplus +} +} // namespace roaring { namespace internal { +#endif + +#endif /* INCLUDE_CONTAINERS_CONTAINER_DEFS_H_ */ diff --git a/contrib/libs/croaring/include/roaring/containers/containers.h b/contrib/libs/croaring/include/roaring/containers/containers.h new file mode 100644 index 000000000000..30b0cde1aae1 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/containers.h @@ -0,0 +1,2486 @@ +#ifndef CONTAINERS_CONTAINERS_H +#define CONTAINERS_CONTAINERS_H + +#include <assert.h> +#include <stdbool.h> +#include <stdio.h> + +#include <roaring/bitset_util.h> +#include <roaring/containers/array.h> +#include <roaring/containers/bitset.h> +#include <roaring/containers/convert.h> +#include <roaring/containers/mixed_andnot.h> +#include <roaring/containers/mixed_equal.h> +#include <roaring/containers/mixed_intersection.h> +#include <roaring/containers/mixed_negation.h> +#include <roaring/containers/mixed_subset.h> +#include <roaring/containers/mixed_union.h> +#include <roaring/containers/mixed_xor.h> +#include <roaring/containers/run.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +// would enum be possible or better? + +/** + * The switch case statements follow + * BITSET_CONTAINER_TYPE -- ARRAY_CONTAINER_TYPE -- RUN_CONTAINER_TYPE + * so it makes more sense to number them 1, 2, 3 (in the vague hope that the + * compiler might exploit this ordering). + */ + +#define BITSET_CONTAINER_TYPE 1 +#define ARRAY_CONTAINER_TYPE 2 +#define RUN_CONTAINER_TYPE 3 +#define SHARED_CONTAINER_TYPE 4 + +/** + * Macros for pairing container type codes, suitable for switch statements. + * Use PAIR_CONTAINER_TYPES() for the switch, CONTAINER_PAIR() for the cases: + * + * switch (PAIR_CONTAINER_TYPES(type1, type2)) { + * case CONTAINER_PAIR(BITSET,ARRAY): + * ... + * } + */ +#define PAIR_CONTAINER_TYPES(type1, type2) (4 * (type1) + (type2)) + +#define CONTAINER_PAIR(name1, name2) \ + (4 * (name1##_CONTAINER_TYPE) + (name2##_CONTAINER_TYPE)) + +/** + * A shared container is a wrapper around a container + * with reference counting. + */ +STRUCT_CONTAINER(shared_container_s) { + container_t *container; + uint8_t typecode; + croaring_refcount_t counter; // to be managed atomically +}; + +typedef struct shared_container_s shared_container_t; + +#define CAST_shared(c) CAST(shared_container_t *, c) // safer downcast +#define const_CAST_shared(c) CAST(const shared_container_t *, c) +#define movable_CAST_shared(c) movable_CAST(shared_container_t **, c) + +/* + * With copy_on_write = true + * Create a new shared container if the typecode is not SHARED_CONTAINER_TYPE, + * otherwise, increase the count + * If copy_on_write = false, then clone. + * Return NULL in case of failure. + **/ +container_t *get_copy_of_container(container_t *container, uint8_t *typecode, + bool copy_on_write); + +/* Frees a shared container (actually decrement its counter and only frees when + * the counter falls to zero). */ +void shared_container_free(shared_container_t *container); + +/* extract a copy from the shared container, freeing the shared container if +there is just one instance left, +clone instances when the counter is higher than one +*/ +container_t *shared_container_extract_copy(shared_container_t *container, + uint8_t *typecode); + +/* access to container underneath */ +static inline const container_t *container_unwrap_shared( + const container_t *candidate_shared_container, uint8_t *type) { + if (*type == SHARED_CONTAINER_TYPE) { + *type = const_CAST_shared(candidate_shared_container)->typecode; + assert(*type != SHARED_CONTAINER_TYPE); + return const_CAST_shared(candidate_shared_container)->container; + } else { + return candidate_shared_container; + } +} + +/* access to container underneath */ +static inline container_t *container_mutable_unwrap_shared(container_t *c, + uint8_t *type) { + if (*type == SHARED_CONTAINER_TYPE) { // the passed in container is shared + *type = CAST_shared(c)->typecode; + assert(*type != SHARED_CONTAINER_TYPE); + return CAST_shared(c)->container; // return the enclosed container + } else { + return c; // wasn't shared, so return as-is + } +} + +/* access to container underneath and queries its type */ +static inline uint8_t get_container_type(const container_t *c, uint8_t type) { + if (type == SHARED_CONTAINER_TYPE) { + return const_CAST_shared(c)->typecode; + } else { + return type; + } +} + +/** + * Copies a container, requires a typecode. This allocates new memory, caller + * is responsible for deallocation. If the container is not shared, then it is + * physically cloned. Sharable containers are not cloneable. + */ +container_t *container_clone(const container_t *container, uint8_t typecode); + +/* access to container underneath, cloning it if needed */ +static inline container_t *get_writable_copy_if_shared(container_t *c, + uint8_t *type) { + if (*type == SHARED_CONTAINER_TYPE) { // shared, return enclosed container + return shared_container_extract_copy(CAST_shared(c), type); + } else { + return c; // not shared, so return as-is + } +} + +/** + * End of shared container code + */ + +static const char *container_names[] = {"bitset", "array", "run", "shared"}; +static const char *shared_container_names[] = { + "bitset (shared)", "array (shared)", "run (shared)"}; + +// no matter what the initial container was, convert it to a bitset +// if a new container is produced, caller responsible for freeing the previous +// one +// container should not be a shared container +static inline bitset_container_t *container_to_bitset(container_t *c, + uint8_t typecode) { + bitset_container_t *result = NULL; + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return CAST_bitset(c); // nothing to do + case ARRAY_CONTAINER_TYPE: + result = bitset_container_from_array(CAST_array(c)); + return result; + case RUN_CONTAINER_TYPE: + result = bitset_container_from_run(CAST_run(c)); + return result; + case SHARED_CONTAINER_TYPE: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return 0; // unreached +} + +/** + * Get the container name from the typecode + * (unused at time of writing) + */ +/*static inline const char *get_container_name(uint8_t typecode) { + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return container_names[0]; + case ARRAY_CONTAINER_TYPE: + return container_names[1]; + case RUN_CONTAINER_TYPE: + return container_names[2]; + case SHARED_CONTAINER_TYPE: + return container_names[3]; + default: + assert(false); + roaring_unreachable; + return "unknown"; + } +}*/ + +static inline const char *get_full_container_name(const container_t *c, + uint8_t typecode) { + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return container_names[0]; + case ARRAY_CONTAINER_TYPE: + return container_names[1]; + case RUN_CONTAINER_TYPE: + return container_names[2]; + case SHARED_CONTAINER_TYPE: + switch (const_CAST_shared(c)->typecode) { + case BITSET_CONTAINER_TYPE: + return shared_container_names[0]; + case ARRAY_CONTAINER_TYPE: + return shared_container_names[1]; + case RUN_CONTAINER_TYPE: + return shared_container_names[2]; + default: + assert(false); + roaring_unreachable; + return "unknown"; + } + break; + default: + assert(false); + roaring_unreachable; + return "unknown"; + } + roaring_unreachable; + return NULL; +} + +/** + * Get the container cardinality (number of elements), requires a typecode + */ +static inline int container_get_cardinality(const container_t *c, + uint8_t typecode) { + c = container_unwrap_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return bitset_container_cardinality(const_CAST_bitset(c)); + case ARRAY_CONTAINER_TYPE: + return array_container_cardinality(const_CAST_array(c)); + case RUN_CONTAINER_TYPE: + return run_container_cardinality(const_CAST_run(c)); + } + assert(false); + roaring_unreachable; + return 0; // unreached +} + +// returns true if a container is known to be full. Note that a lazy bitset +// container +// might be full without us knowing +static inline bool container_is_full(const container_t *c, uint8_t typecode) { + c = container_unwrap_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return bitset_container_cardinality(const_CAST_bitset(c)) == + (1 << 16); + case ARRAY_CONTAINER_TYPE: + return array_container_cardinality(const_CAST_array(c)) == + (1 << 16); + case RUN_CONTAINER_TYPE: + return run_container_is_full(const_CAST_run(c)); + } + assert(false); + roaring_unreachable; + return 0; // unreached +} + +static inline int container_shrink_to_fit(container_t *c, uint8_t type) { + c = container_mutable_unwrap_shared(c, &type); + switch (type) { + case BITSET_CONTAINER_TYPE: + return 0; // no shrinking possible + case ARRAY_CONTAINER_TYPE: + return array_container_shrink_to_fit(CAST_array(c)); + case RUN_CONTAINER_TYPE: + return run_container_shrink_to_fit(CAST_run(c)); + } + assert(false); + roaring_unreachable; + return 0; // unreached +} + +/** + * make a container with a run of ones + */ +/* initially always use a run container, even if an array might be + * marginally + * smaller */ +static inline container_t *container_range_of_ones(uint32_t range_start, + uint32_t range_end, + uint8_t *result_type) { + assert(range_end >= range_start); + uint64_t cardinality = range_end - range_start + 1; + if (cardinality <= 2) { + *result_type = ARRAY_CONTAINER_TYPE; + return array_container_create_range(range_start, range_end); + } else { + *result_type = RUN_CONTAINER_TYPE; + return run_container_create_range(range_start, range_end); + } +} + +/* Create a container with all the values between in [min,max) at a + distance k*step from min. */ +static inline container_t *container_from_range(uint8_t *type, uint32_t min, + uint32_t max, uint16_t step) { + if (step == 0) return NULL; // being paranoid + if (step == 1) { + return container_range_of_ones(min, max, type); + // Note: the result is not always a run (need to check the cardinality) + //*type = RUN_CONTAINER_TYPE; + // return run_container_create_range(min, max); + } + int size = (max - min + step - 1) / step; + if (size <= DEFAULT_MAX_SIZE) { // array container + *type = ARRAY_CONTAINER_TYPE; + array_container_t *array = array_container_create_given_capacity(size); + array_container_add_from_range(array, min, max, step); + assert(array->cardinality == size); + return array; + } else { // bitset container + *type = BITSET_CONTAINER_TYPE; + bitset_container_t *bitset = bitset_container_create(); + bitset_container_add_from_range(bitset, min, max, step); + assert(bitset->cardinality == size); + return bitset; + } +} + +/** + * "repair" the container after lazy operations. + */ +static inline container_t *container_repair_after_lazy(container_t *c, + uint8_t *type) { + c = get_writable_copy_if_shared(c, type); // !!! unnecessary cloning + container_t *result = NULL; + switch (*type) { + case BITSET_CONTAINER_TYPE: { + bitset_container_t *bc = CAST_bitset(c); + bc->cardinality = bitset_container_compute_cardinality(bc); + if (bc->cardinality <= DEFAULT_MAX_SIZE) { + result = array_container_from_bitset(bc); + bitset_container_free(bc); + *type = ARRAY_CONTAINER_TYPE; + return result; + } + return c; + } + case ARRAY_CONTAINER_TYPE: + return c; // nothing to do + case RUN_CONTAINER_TYPE: + return convert_run_to_efficient_container_and_free(CAST_run(c), + type); + case SHARED_CONTAINER_TYPE: + assert(false); + } + assert(false); + roaring_unreachable; + return 0; // unreached +} + +/** + * Writes the underlying array to buf, outputs how many bytes were written. + * This is meant to be byte-by-byte compatible with the Java and Go versions of + * Roaring. + * The number of bytes written should be + * container_write(container, buf). + * + */ +static inline int32_t container_write(const container_t *c, uint8_t typecode, + char *buf) { + c = container_unwrap_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return bitset_container_write(const_CAST_bitset(c), buf); + case ARRAY_CONTAINER_TYPE: + return array_container_write(const_CAST_array(c), buf); + case RUN_CONTAINER_TYPE: + return run_container_write(const_CAST_run(c), buf); + } + assert(false); + roaring_unreachable; + return 0; // unreached +} + +/** + * Get the container size in bytes under portable serialization (see + * container_write), requires a + * typecode + */ +static inline int32_t container_size_in_bytes(const container_t *c, + uint8_t typecode) { + c = container_unwrap_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return bitset_container_size_in_bytes(const_CAST_bitset(c)); + case ARRAY_CONTAINER_TYPE: + return array_container_size_in_bytes(const_CAST_array(c)); + case RUN_CONTAINER_TYPE: + return run_container_size_in_bytes(const_CAST_run(c)); + } + assert(false); + roaring_unreachable; + return 0; // unreached +} + +/** + * print the container (useful for debugging), requires a typecode + */ +void container_printf(const container_t *container, uint8_t typecode); + +/** + * print the content of the container as a comma-separated list of 32-bit values + * starting at base, requires a typecode + */ +void container_printf_as_uint32_array(const container_t *container, + uint8_t typecode, uint32_t base); + +bool container_internal_validate(const container_t *container, uint8_t typecode, + const char **reason); + +/** + * Checks whether a container is not empty, requires a typecode + */ +static inline bool container_nonzero_cardinality(const container_t *c, + uint8_t typecode) { + c = container_unwrap_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return bitset_container_const_nonzero_cardinality( + const_CAST_bitset(c)); + case ARRAY_CONTAINER_TYPE: + return array_container_nonzero_cardinality(const_CAST_array(c)); + case RUN_CONTAINER_TYPE: + return run_container_nonzero_cardinality(const_CAST_run(c)); + } + assert(false); + roaring_unreachable; + return 0; // unreached +} + +/** + * Recover memory from a container, requires a typecode + */ +void container_free(container_t *container, uint8_t typecode); + +/** + * Convert a container to an array of values, requires a typecode as well as a + * "base" (most significant values) + * Returns number of ints added. + */ +static inline int container_to_uint32_array(uint32_t *output, + const container_t *c, + uint8_t typecode, uint32_t base) { + c = container_unwrap_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return bitset_container_to_uint32_array(output, + const_CAST_bitset(c), base); + case ARRAY_CONTAINER_TYPE: + return array_container_to_uint32_array(output, const_CAST_array(c), + base); + case RUN_CONTAINER_TYPE: + return run_container_to_uint32_array(output, const_CAST_run(c), + base); + } + assert(false); + roaring_unreachable; + return 0; // unreached +} + +/** + * Add a value to a container, requires a typecode, fills in new_typecode and + * return (possibly different) container. + * This function may allocate a new container, and caller is responsible for + * memory deallocation + */ +static inline container_t *container_add( + container_t *c, uint16_t val, + uint8_t typecode, // !!! should be second argument? + uint8_t *new_typecode) { + c = get_writable_copy_if_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + bitset_container_set(CAST_bitset(c), val); + *new_typecode = BITSET_CONTAINER_TYPE; + return c; + case ARRAY_CONTAINER_TYPE: { + array_container_t *ac = CAST_array(c); + if (array_container_try_add(ac, val, DEFAULT_MAX_SIZE) != -1) { + *new_typecode = ARRAY_CONTAINER_TYPE; + return ac; + } else { + bitset_container_t *bitset = bitset_container_from_array(ac); + bitset_container_add(bitset, val); + *new_typecode = BITSET_CONTAINER_TYPE; + return bitset; + } + } break; + case RUN_CONTAINER_TYPE: + // per Java, no container type adjustments are done (revisit?) + run_container_add(CAST_run(c), val); + *new_typecode = RUN_CONTAINER_TYPE; + return c; + default: + assert(false); + roaring_unreachable; + return NULL; + } +} + +/** + * Remove a value from a container, requires a typecode, fills in new_typecode + * and + * return (possibly different) container. + * This function may allocate a new container, and caller is responsible for + * memory deallocation + */ +static inline container_t *container_remove( + container_t *c, uint16_t val, + uint8_t typecode, // !!! should be second argument? + uint8_t *new_typecode) { + c = get_writable_copy_if_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + if (bitset_container_remove(CAST_bitset(c), val)) { + int card = bitset_container_cardinality(CAST_bitset(c)); + if (card <= DEFAULT_MAX_SIZE) { + *new_typecode = ARRAY_CONTAINER_TYPE; + return array_container_from_bitset(CAST_bitset(c)); + } + } + *new_typecode = typecode; + return c; + case ARRAY_CONTAINER_TYPE: + *new_typecode = typecode; + array_container_remove(CAST_array(c), val); + return c; + case RUN_CONTAINER_TYPE: + // per Java, no container type adjustments are done (revisit?) + run_container_remove(CAST_run(c), val); + *new_typecode = RUN_CONTAINER_TYPE; + return c; + default: + assert(false); + roaring_unreachable; + return NULL; + } +} + +/** + * Check whether a value is in a container, requires a typecode + */ +static inline bool container_contains( + const container_t *c, uint16_t val, + uint8_t typecode // !!! should be second argument? +) { + c = container_unwrap_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return bitset_container_get(const_CAST_bitset(c), val); + case ARRAY_CONTAINER_TYPE: + return array_container_contains(const_CAST_array(c), val); + case RUN_CONTAINER_TYPE: + return run_container_contains(const_CAST_run(c), val); + default: + assert(false); + roaring_unreachable; + return false; + } +} + +/** + * Check whether a range of values from range_start (included) to range_end + * (excluded) is in a container, requires a typecode + */ +static inline bool container_contains_range( + const container_t *c, uint32_t range_start, uint32_t range_end, + uint8_t typecode // !!! should be second argument? +) { + c = container_unwrap_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return bitset_container_get_range(const_CAST_bitset(c), range_start, + range_end); + case ARRAY_CONTAINER_TYPE: + return array_container_contains_range(const_CAST_array(c), + range_start, range_end); + case RUN_CONTAINER_TYPE: + return run_container_contains_range(const_CAST_run(c), range_start, + range_end); + default: + assert(false); + roaring_unreachable; + return false; + } +} + +/** + * Returns true if the two containers have the same content. Note that + * two containers having different types can be "equal" in this sense. + */ +static inline bool container_equals(const container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2) { + c1 = container_unwrap_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + return bitset_container_equals(const_CAST_bitset(c1), + const_CAST_bitset(c2)); + + case CONTAINER_PAIR(BITSET, RUN): + return run_container_equals_bitset(const_CAST_run(c2), + const_CAST_bitset(c1)); + + case CONTAINER_PAIR(RUN, BITSET): + return run_container_equals_bitset(const_CAST_run(c1), + const_CAST_bitset(c2)); + + case CONTAINER_PAIR(BITSET, ARRAY): + // java would always return false? + return array_container_equal_bitset(const_CAST_array(c2), + const_CAST_bitset(c1)); + + case CONTAINER_PAIR(ARRAY, BITSET): + // java would always return false? + return array_container_equal_bitset(const_CAST_array(c1), + const_CAST_bitset(c2)); + + case CONTAINER_PAIR(ARRAY, RUN): + return run_container_equals_array(const_CAST_run(c2), + const_CAST_array(c1)); + + case CONTAINER_PAIR(RUN, ARRAY): + return run_container_equals_array(const_CAST_run(c1), + const_CAST_array(c2)); + + case CONTAINER_PAIR(ARRAY, ARRAY): + return array_container_equals(const_CAST_array(c1), + const_CAST_array(c2)); + + case CONTAINER_PAIR(RUN, RUN): + return run_container_equals(const_CAST_run(c1), const_CAST_run(c2)); + + default: + assert(false); + roaring_unreachable; + return false; + } +} + +/** + * Returns true if the container c1 is a subset of the container c2. Note that + * c1 can be a subset of c2 even if they have a different type. + */ +static inline bool container_is_subset(const container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2) { + c1 = container_unwrap_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + return bitset_container_is_subset(const_CAST_bitset(c1), + const_CAST_bitset(c2)); + + case CONTAINER_PAIR(BITSET, RUN): + return bitset_container_is_subset_run(const_CAST_bitset(c1), + const_CAST_run(c2)); + + case CONTAINER_PAIR(RUN, BITSET): + return run_container_is_subset_bitset(const_CAST_run(c1), + const_CAST_bitset(c2)); + + case CONTAINER_PAIR(BITSET, ARRAY): + return false; // by construction, size(c1) > size(c2) + + case CONTAINER_PAIR(ARRAY, BITSET): + return array_container_is_subset_bitset(const_CAST_array(c1), + const_CAST_bitset(c2)); + + case CONTAINER_PAIR(ARRAY, RUN): + return array_container_is_subset_run(const_CAST_array(c1), + const_CAST_run(c2)); + + case CONTAINER_PAIR(RUN, ARRAY): + return run_container_is_subset_array(const_CAST_run(c1), + const_CAST_array(c2)); + + case CONTAINER_PAIR(ARRAY, ARRAY): + return array_container_is_subset(const_CAST_array(c1), + const_CAST_array(c2)); + + case CONTAINER_PAIR(RUN, RUN): + return run_container_is_subset(const_CAST_run(c1), + const_CAST_run(c2)); + + default: + assert(false); + roaring_unreachable; + return false; + } +} + +// macro-izations possibilities for generic non-inplace binary-op dispatch + +/** + * Compute intersection between two containers, generate a new container (having + * type result_type), requires a typecode. This allocates new memory, caller + * is responsible for deallocation. + */ +static inline container_t *container_and(const container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type) { + c1 = container_unwrap_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + container_t *result = NULL; + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + *result_type = + bitset_bitset_container_intersection( + const_CAST_bitset(c1), const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, ARRAY): + result = array_container_create(); + array_container_intersection( + const_CAST_array(c1), const_CAST_array(c2), CAST_array(result)); + *result_type = ARRAY_CONTAINER_TYPE; // never bitset + return result; + + case CONTAINER_PAIR(RUN, RUN): + result = run_container_create(); + run_container_intersection(const_CAST_run(c1), const_CAST_run(c2), + CAST_run(result)); + return convert_run_to_efficient_container_and_free(CAST_run(result), + result_type); + + case CONTAINER_PAIR(BITSET, ARRAY): + result = array_container_create(); + array_bitset_container_intersection(const_CAST_array(c2), + const_CAST_bitset(c1), + CAST_array(result)); + *result_type = ARRAY_CONTAINER_TYPE; // never bitset + return result; + + case CONTAINER_PAIR(ARRAY, BITSET): + result = array_container_create(); + *result_type = ARRAY_CONTAINER_TYPE; // never bitset + array_bitset_container_intersection(const_CAST_array(c1), + const_CAST_bitset(c2), + CAST_array(result)); + return result; + + case CONTAINER_PAIR(BITSET, RUN): + *result_type = + run_bitset_container_intersection( + const_CAST_run(c2), const_CAST_bitset(c1), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, BITSET): + *result_type = + run_bitset_container_intersection( + const_CAST_run(c1), const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, RUN): + result = array_container_create(); + *result_type = ARRAY_CONTAINER_TYPE; // never bitset + array_run_container_intersection( + const_CAST_array(c1), const_CAST_run(c2), CAST_array(result)); + return result; + + case CONTAINER_PAIR(RUN, ARRAY): + result = array_container_create(); + *result_type = ARRAY_CONTAINER_TYPE; // never bitset + array_run_container_intersection( + const_CAST_array(c2), const_CAST_run(c1), CAST_array(result)); + return result; + + default: + assert(false); + roaring_unreachable; + return NULL; + } +} + +/** + * Compute the size of the intersection between two containers. + */ +static inline int container_and_cardinality(const container_t *c1, + uint8_t type1, + const container_t *c2, + uint8_t type2) { + c1 = container_unwrap_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + return bitset_container_and_justcard(const_CAST_bitset(c1), + const_CAST_bitset(c2)); + + case CONTAINER_PAIR(ARRAY, ARRAY): + return array_container_intersection_cardinality( + const_CAST_array(c1), const_CAST_array(c2)); + + case CONTAINER_PAIR(RUN, RUN): + return run_container_intersection_cardinality(const_CAST_run(c1), + const_CAST_run(c2)); + + case CONTAINER_PAIR(BITSET, ARRAY): + return array_bitset_container_intersection_cardinality( + const_CAST_array(c2), const_CAST_bitset(c1)); + + case CONTAINER_PAIR(ARRAY, BITSET): + return array_bitset_container_intersection_cardinality( + const_CAST_array(c1), const_CAST_bitset(c2)); + + case CONTAINER_PAIR(BITSET, RUN): + return run_bitset_container_intersection_cardinality( + const_CAST_run(c2), const_CAST_bitset(c1)); + + case CONTAINER_PAIR(RUN, BITSET): + return run_bitset_container_intersection_cardinality( + const_CAST_run(c1), const_CAST_bitset(c2)); + + case CONTAINER_PAIR(ARRAY, RUN): + return array_run_container_intersection_cardinality( + const_CAST_array(c1), const_CAST_run(c2)); + + case CONTAINER_PAIR(RUN, ARRAY): + return array_run_container_intersection_cardinality( + const_CAST_array(c2), const_CAST_run(c1)); + + default: + assert(false); + roaring_unreachable; + return 0; + } +} + +/** + * Check whether two containers intersect. + */ +static inline bool container_intersect(const container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2) { + c1 = container_unwrap_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + return bitset_container_intersect(const_CAST_bitset(c1), + const_CAST_bitset(c2)); + + case CONTAINER_PAIR(ARRAY, ARRAY): + return array_container_intersect(const_CAST_array(c1), + const_CAST_array(c2)); + + case CONTAINER_PAIR(RUN, RUN): + return run_container_intersect(const_CAST_run(c1), + const_CAST_run(c2)); + + case CONTAINER_PAIR(BITSET, ARRAY): + return array_bitset_container_intersect(const_CAST_array(c2), + const_CAST_bitset(c1)); + + case CONTAINER_PAIR(ARRAY, BITSET): + return array_bitset_container_intersect(const_CAST_array(c1), + const_CAST_bitset(c2)); + + case CONTAINER_PAIR(BITSET, RUN): + return run_bitset_container_intersect(const_CAST_run(c2), + const_CAST_bitset(c1)); + + case CONTAINER_PAIR(RUN, BITSET): + return run_bitset_container_intersect(const_CAST_run(c1), + const_CAST_bitset(c2)); + + case CONTAINER_PAIR(ARRAY, RUN): + return array_run_container_intersect(const_CAST_array(c1), + const_CAST_run(c2)); + + case CONTAINER_PAIR(RUN, ARRAY): + return array_run_container_intersect(const_CAST_array(c2), + const_CAST_run(c1)); + + default: + assert(false); + roaring_unreachable; + return 0; + } +} + +/** + * Compute intersection between two containers, with result in the first + container if possible. If the returned pointer is identical to c1, + then the container has been modified. If the returned pointer is different + from c1, then a new container has been created and the caller is responsible + for freeing it. + The type of the first container may change. Returns the modified + (and possibly new) container. +*/ +static inline container_t *container_iand(container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type) { + c1 = get_writable_copy_if_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + container_t *result = NULL; + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + *result_type = bitset_bitset_container_intersection_inplace( + CAST_bitset(c1), const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, ARRAY): + array_container_intersection_inplace(CAST_array(c1), + const_CAST_array(c2)); + *result_type = ARRAY_CONTAINER_TYPE; + return c1; + + case CONTAINER_PAIR(RUN, RUN): + result = run_container_create(); + run_container_intersection(const_CAST_run(c1), const_CAST_run(c2), + CAST_run(result)); + // as of January 2016, Java code used non-in-place intersection for + // two runcontainers + return convert_run_to_efficient_container_and_free(CAST_run(result), + result_type); + + case CONTAINER_PAIR(BITSET, ARRAY): + // c1 is a bitmap so no inplace possible + result = array_container_create(); + array_bitset_container_intersection(const_CAST_array(c2), + const_CAST_bitset(c1), + CAST_array(result)); + *result_type = ARRAY_CONTAINER_TYPE; // never bitset + return result; + + case CONTAINER_PAIR(ARRAY, BITSET): + *result_type = ARRAY_CONTAINER_TYPE; // never bitset + array_bitset_container_intersection( + const_CAST_array(c1), const_CAST_bitset(c2), + CAST_array(c1)); // result is allowed to be same as c1 + return c1; + + case CONTAINER_PAIR(BITSET, RUN): + // will attempt in-place computation + *result_type = run_bitset_container_intersection( + const_CAST_run(c2), const_CAST_bitset(c1), &c1) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return c1; + + case CONTAINER_PAIR(RUN, BITSET): + *result_type = + run_bitset_container_intersection( + const_CAST_run(c1), const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, RUN): + result = array_container_create(); + *result_type = ARRAY_CONTAINER_TYPE; // never bitset + array_run_container_intersection( + const_CAST_array(c1), const_CAST_run(c2), CAST_array(result)); + return result; + + case CONTAINER_PAIR(RUN, ARRAY): + result = array_container_create(); + *result_type = ARRAY_CONTAINER_TYPE; // never bitset + array_run_container_intersection( + const_CAST_array(c2), const_CAST_run(c1), CAST_array(result)); + return result; + + default: + assert(false); + roaring_unreachable; + return NULL; + } +} + +/** + * Compute union between two containers, generate a new container (having type + * result_type), requires a typecode. This allocates new memory, caller + * is responsible for deallocation. + */ +static inline container_t *container_or(const container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type) { + c1 = container_unwrap_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + container_t *result = NULL; + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + result = bitset_container_create(); + bitset_container_or(const_CAST_bitset(c1), const_CAST_bitset(c2), + CAST_bitset(result)); + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, ARRAY): + *result_type = + array_array_container_union(const_CAST_array(c1), + const_CAST_array(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, RUN): + result = run_container_create(); + run_container_union(const_CAST_run(c1), const_CAST_run(c2), + CAST_run(result)); + *result_type = RUN_CONTAINER_TYPE; + // todo: could be optimized since will never convert to array + result = convert_run_to_efficient_container_and_free( + CAST_run(result), result_type); + return result; + + case CONTAINER_PAIR(BITSET, ARRAY): + result = bitset_container_create(); + array_bitset_container_union(const_CAST_array(c2), + const_CAST_bitset(c1), + CAST_bitset(result)); + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, BITSET): + result = bitset_container_create(); + array_bitset_container_union(const_CAST_array(c1), + const_CAST_bitset(c2), + CAST_bitset(result)); + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(BITSET, RUN): + if (run_container_is_full(const_CAST_run(c2))) { + result = run_container_create(); + *result_type = RUN_CONTAINER_TYPE; + run_container_copy(const_CAST_run(c2), CAST_run(result)); + return result; + } + result = bitset_container_create(); + run_bitset_container_union( + const_CAST_run(c2), const_CAST_bitset(c1), CAST_bitset(result)); + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, BITSET): + if (run_container_is_full(const_CAST_run(c1))) { + result = run_container_create(); + *result_type = RUN_CONTAINER_TYPE; + run_container_copy(const_CAST_run(c1), CAST_run(result)); + return result; + } + result = bitset_container_create(); + run_bitset_container_union( + const_CAST_run(c1), const_CAST_bitset(c2), CAST_bitset(result)); + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, RUN): + result = run_container_create(); + array_run_container_union(const_CAST_array(c1), const_CAST_run(c2), + CAST_run(result)); + result = convert_run_to_efficient_container_and_free( + CAST_run(result), result_type); + return result; + + case CONTAINER_PAIR(RUN, ARRAY): + result = run_container_create(); + array_run_container_union(const_CAST_array(c2), const_CAST_run(c1), + CAST_run(result)); + result = convert_run_to_efficient_container_and_free( + CAST_run(result), result_type); + return result; + + default: + assert(false); + roaring_unreachable; + return NULL; // unreached + } +} + +/** + * Compute union between two containers, generate a new container (having type + * result_type), requires a typecode. This allocates new memory, caller + * is responsible for deallocation. + * + * This lazy version delays some operations such as the maintenance of the + * cardinality. It requires repair later on the generated containers. + */ +static inline container_t *container_lazy_or(const container_t *c1, + uint8_t type1, + const container_t *c2, + uint8_t type2, + uint8_t *result_type) { + c1 = container_unwrap_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + container_t *result = NULL; + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + result = bitset_container_create(); + bitset_container_or_nocard(const_CAST_bitset(c1), + const_CAST_bitset(c2), + CAST_bitset(result)); // is lazy + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, ARRAY): + *result_type = + array_array_container_lazy_union(const_CAST_array(c1), + const_CAST_array(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, RUN): + result = run_container_create(); + run_container_union(const_CAST_run(c1), const_CAST_run(c2), + CAST_run(result)); + *result_type = RUN_CONTAINER_TYPE; + // we are being lazy + result = convert_run_to_efficient_container_and_free( + CAST_run(result), result_type); + return result; + + case CONTAINER_PAIR(BITSET, ARRAY): + result = bitset_container_create(); + array_bitset_container_lazy_union(const_CAST_array(c2), + const_CAST_bitset(c1), + CAST_bitset(result)); // is lazy + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, BITSET): + result = bitset_container_create(); + array_bitset_container_lazy_union(const_CAST_array(c1), + const_CAST_bitset(c2), + CAST_bitset(result)); // is lazy + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(BITSET, RUN): + if (run_container_is_full(const_CAST_run(c2))) { + result = run_container_create(); + *result_type = RUN_CONTAINER_TYPE; + run_container_copy(const_CAST_run(c2), CAST_run(result)); + return result; + } + result = bitset_container_create(); + run_bitset_container_lazy_union(const_CAST_run(c2), + const_CAST_bitset(c1), + CAST_bitset(result)); // is lazy + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, BITSET): + if (run_container_is_full(const_CAST_run(c1))) { + result = run_container_create(); + *result_type = RUN_CONTAINER_TYPE; + run_container_copy(const_CAST_run(c1), CAST_run(result)); + return result; + } + result = bitset_container_create(); + run_bitset_container_lazy_union(const_CAST_run(c1), + const_CAST_bitset(c2), + CAST_bitset(result)); // is lazy + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, RUN): + result = run_container_create(); + array_run_container_union(const_CAST_array(c1), const_CAST_run(c2), + CAST_run(result)); + *result_type = RUN_CONTAINER_TYPE; + // next line skipped since we are lazy + // result = convert_run_to_efficient_container(result, result_type); + return result; + + case CONTAINER_PAIR(RUN, ARRAY): + result = run_container_create(); + array_run_container_union(const_CAST_array(c2), const_CAST_run(c1), + CAST_run(result)); // TODO make lazy + *result_type = RUN_CONTAINER_TYPE; + // next line skipped since we are lazy + // result = convert_run_to_efficient_container(result, result_type); + return result; + + default: + assert(false); + roaring_unreachable; + return NULL; // unreached + } +} + +/** + * Compute the union between two containers, with result in the first container. + * If the returned pointer is identical to c1, then the container has been + * modified. + * If the returned pointer is different from c1, then a new container has been + * created and the caller is responsible for freeing it. + * The type of the first container may change. Returns the modified + * (and possibly new) container + */ +static inline container_t *container_ior(container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type) { + c1 = get_writable_copy_if_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + container_t *result = NULL; + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + bitset_container_or(const_CAST_bitset(c1), const_CAST_bitset(c2), + CAST_bitset(c1)); +#ifdef OR_BITSET_CONVERSION_TO_FULL + if (CAST_bitset(c1)->cardinality == (1 << 16)) { // we convert + result = run_container_create_range(0, (1 << 16)); + *result_type = RUN_CONTAINER_TYPE; + return result; + } +#endif + *result_type = BITSET_CONTAINER_TYPE; + return c1; + + case CONTAINER_PAIR(ARRAY, ARRAY): + *result_type = array_array_container_inplace_union( + CAST_array(c1), const_CAST_array(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + if ((result == NULL) && (*result_type == ARRAY_CONTAINER_TYPE)) { + return c1; // the computation was done in-place! + } + return result; + + case CONTAINER_PAIR(RUN, RUN): + run_container_union_inplace(CAST_run(c1), const_CAST_run(c2)); + return convert_run_to_efficient_container(CAST_run(c1), + result_type); + + case CONTAINER_PAIR(BITSET, ARRAY): + array_bitset_container_union( + const_CAST_array(c2), const_CAST_bitset(c1), CAST_bitset(c1)); + *result_type = BITSET_CONTAINER_TYPE; // never array + return c1; + + case CONTAINER_PAIR(ARRAY, BITSET): + // c1 is an array, so no in-place possible + result = bitset_container_create(); + *result_type = BITSET_CONTAINER_TYPE; + array_bitset_container_union(const_CAST_array(c1), + const_CAST_bitset(c2), + CAST_bitset(result)); + return result; + + case CONTAINER_PAIR(BITSET, RUN): + if (run_container_is_full(const_CAST_run(c2))) { + result = run_container_create(); + *result_type = RUN_CONTAINER_TYPE; + run_container_copy(const_CAST_run(c2), CAST_run(result)); + return result; + } + run_bitset_container_union(const_CAST_run(c2), + const_CAST_bitset(c1), + CAST_bitset(c1)); // allowed + *result_type = BITSET_CONTAINER_TYPE; + return c1; + + case CONTAINER_PAIR(RUN, BITSET): + if (run_container_is_full(const_CAST_run(c1))) { + *result_type = RUN_CONTAINER_TYPE; + return c1; + } + result = bitset_container_create(); + run_bitset_container_union( + const_CAST_run(c1), const_CAST_bitset(c2), CAST_bitset(result)); + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, RUN): + result = run_container_create(); + array_run_container_union(const_CAST_array(c1), const_CAST_run(c2), + CAST_run(result)); + result = convert_run_to_efficient_container_and_free( + CAST_run(result), result_type); + return result; + + case CONTAINER_PAIR(RUN, ARRAY): + array_run_container_inplace_union(const_CAST_array(c2), + CAST_run(c1)); + c1 = convert_run_to_efficient_container(CAST_run(c1), result_type); + return c1; + + default: + assert(false); + roaring_unreachable; + return NULL; + } +} + +/** + * Compute the union between two containers, with result in the first container. + * If the returned pointer is identical to c1, then the container has been + * modified. + * If the returned pointer is different from c1, then a new container has been + * created and the caller is responsible for freeing it. + * The type of the first container may change. Returns the modified + * (and possibly new) container + * + * This lazy version delays some operations such as the maintenance of the + * cardinality. It requires repair later on the generated containers. + */ +static inline container_t *container_lazy_ior(container_t *c1, uint8_t type1, + const container_t *c2, + uint8_t type2, + uint8_t *result_type) { + assert(type1 != SHARED_CONTAINER_TYPE); + // c1 = get_writable_copy_if_shared(c1,&type1); + c2 = container_unwrap_shared(c2, &type2); + container_t *result = NULL; + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): +#ifdef LAZY_OR_BITSET_CONVERSION_TO_FULL + // if we have two bitsets, we might as well compute the cardinality + bitset_container_or(const_CAST_bitset(c1), const_CAST_bitset(c2), + CAST_bitset(c1)); + // it is possible that two bitsets can lead to a full container + if (CAST_bitset(c1)->cardinality == (1 << 16)) { // we convert + result = run_container_create_range(0, (1 << 16)); + *result_type = RUN_CONTAINER_TYPE; + return result; + } +#else + bitset_container_or_nocard(const_CAST_bitset(c1), + const_CAST_bitset(c2), CAST_bitset(c1)); + +#endif + *result_type = BITSET_CONTAINER_TYPE; + return c1; + + case CONTAINER_PAIR(ARRAY, ARRAY): + *result_type = array_array_container_lazy_inplace_union( + CAST_array(c1), const_CAST_array(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + if ((result == NULL) && (*result_type == ARRAY_CONTAINER_TYPE)) { + return c1; // the computation was done in-place! + } + return result; + + case CONTAINER_PAIR(RUN, RUN): + run_container_union_inplace(CAST_run(c1), const_CAST_run(c2)); + *result_type = RUN_CONTAINER_TYPE; + return convert_run_to_efficient_container(CAST_run(c1), + result_type); + + case CONTAINER_PAIR(BITSET, ARRAY): + array_bitset_container_lazy_union(const_CAST_array(c2), + const_CAST_bitset(c1), + CAST_bitset(c1)); // is lazy + *result_type = BITSET_CONTAINER_TYPE; // never array + return c1; + + case CONTAINER_PAIR(ARRAY, BITSET): + // c1 is an array, so no in-place possible + result = bitset_container_create(); + *result_type = BITSET_CONTAINER_TYPE; + array_bitset_container_lazy_union(const_CAST_array(c1), + const_CAST_bitset(c2), + CAST_bitset(result)); // is lazy + return result; + + case CONTAINER_PAIR(BITSET, RUN): + if (run_container_is_full(const_CAST_run(c2))) { + result = run_container_create(); + *result_type = RUN_CONTAINER_TYPE; + run_container_copy(const_CAST_run(c2), CAST_run(result)); + return result; + } + run_bitset_container_lazy_union( + const_CAST_run(c2), const_CAST_bitset(c1), + CAST_bitset(c1)); // allowed // lazy + *result_type = BITSET_CONTAINER_TYPE; + return c1; + + case CONTAINER_PAIR(RUN, BITSET): + if (run_container_is_full(const_CAST_run(c1))) { + *result_type = RUN_CONTAINER_TYPE; + return c1; + } + result = bitset_container_create(); + run_bitset_container_lazy_union(const_CAST_run(c1), + const_CAST_bitset(c2), + CAST_bitset(result)); // lazy + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, RUN): + result = run_container_create(); + array_run_container_union(const_CAST_array(c1), const_CAST_run(c2), + CAST_run(result)); + *result_type = RUN_CONTAINER_TYPE; + // next line skipped since we are lazy + // result = convert_run_to_efficient_container_and_free(result, + // result_type); + return result; + + case CONTAINER_PAIR(RUN, ARRAY): + array_run_container_inplace_union(const_CAST_array(c2), + CAST_run(c1)); + *result_type = RUN_CONTAINER_TYPE; + // next line skipped since we are lazy + // result = convert_run_to_efficient_container_and_free(result, + // result_type); + return c1; + + default: + assert(false); + roaring_unreachable; + return NULL; + } +} + +/** + * Compute symmetric difference (xor) between two containers, generate a new + * container (having type result_type), requires a typecode. This allocates new + * memory, caller is responsible for deallocation. + */ +static inline container_t *container_xor(const container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type) { + c1 = container_unwrap_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + container_t *result = NULL; + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + *result_type = + bitset_bitset_container_xor(const_CAST_bitset(c1), + const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, ARRAY): + *result_type = + array_array_container_xor(const_CAST_array(c1), + const_CAST_array(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, RUN): + *result_type = (uint8_t)run_run_container_xor( + const_CAST_run(c1), const_CAST_run(c2), &result); + return result; + + case CONTAINER_PAIR(BITSET, ARRAY): + *result_type = + array_bitset_container_xor(const_CAST_array(c2), + const_CAST_bitset(c1), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, BITSET): + *result_type = + array_bitset_container_xor(const_CAST_array(c1), + const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(BITSET, RUN): + *result_type = + run_bitset_container_xor(const_CAST_run(c2), + const_CAST_bitset(c1), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, BITSET): + *result_type = + run_bitset_container_xor(const_CAST_run(c1), + const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, RUN): + *result_type = (uint8_t)array_run_container_xor( + const_CAST_array(c1), const_CAST_run(c2), &result); + return result; + + case CONTAINER_PAIR(RUN, ARRAY): + *result_type = (uint8_t)array_run_container_xor( + const_CAST_array(c2), const_CAST_run(c1), &result); + return result; + + default: + assert(false); + roaring_unreachable; + return NULL; // unreached + } +} + +/* Applies an offset to the non-empty container 'c'. + * The results are stored in new containers returned via 'lo' and 'hi', for the + * low and high halves of the result (where the low half matches the original + * key and the high one corresponds to values for the following key). Either one + * of 'lo' and 'hi' are allowed to be 'NULL', but not both. Whenever one of them + * is not 'NULL', it should point to a 'NULL' container. Whenever one of them is + * 'NULL' the shifted elements for that part will not be computed. If either of + * the resulting containers turns out to be empty, the pointed container will + * remain 'NULL'. + */ +static inline void container_add_offset(const container_t *c, uint8_t type, + container_t **lo, container_t **hi, + uint16_t offset) { + assert(offset != 0); + assert(container_nonzero_cardinality(c, type)); + assert(lo != NULL || hi != NULL); + assert(lo == NULL || *lo == NULL); + assert(hi == NULL || *hi == NULL); + + switch (type) { + case BITSET_CONTAINER_TYPE: + bitset_container_offset(const_CAST_bitset(c), lo, hi, offset); + break; + case ARRAY_CONTAINER_TYPE: + array_container_offset(const_CAST_array(c), lo, hi, offset); + break; + case RUN_CONTAINER_TYPE: + run_container_offset(const_CAST_run(c), lo, hi, offset); + break; + default: + assert(false); + roaring_unreachable; + break; + } +} + +/** + * Compute xor between two containers, generate a new container (having type + * result_type), requires a typecode. This allocates new memory, caller + * is responsible for deallocation. + * + * This lazy version delays some operations such as the maintenance of the + * cardinality. It requires repair later on the generated containers. + */ +static inline container_t *container_lazy_xor(const container_t *c1, + uint8_t type1, + const container_t *c2, + uint8_t type2, + uint8_t *result_type) { + c1 = container_unwrap_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + container_t *result = NULL; + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + result = bitset_container_create(); + bitset_container_xor_nocard(const_CAST_bitset(c1), + const_CAST_bitset(c2), + CAST_bitset(result)); // is lazy + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, ARRAY): + *result_type = + array_array_container_lazy_xor(const_CAST_array(c1), + const_CAST_array(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, RUN): + // nothing special done yet. + *result_type = (uint8_t)run_run_container_xor( + const_CAST_run(c1), const_CAST_run(c2), &result); + return result; + + case CONTAINER_PAIR(BITSET, ARRAY): + result = bitset_container_create(); + *result_type = BITSET_CONTAINER_TYPE; + array_bitset_container_lazy_xor(const_CAST_array(c2), + const_CAST_bitset(c1), + CAST_bitset(result)); + return result; + + case CONTAINER_PAIR(ARRAY, BITSET): + result = bitset_container_create(); + *result_type = BITSET_CONTAINER_TYPE; + array_bitset_container_lazy_xor(const_CAST_array(c1), + const_CAST_bitset(c2), + CAST_bitset(result)); + return result; + + case CONTAINER_PAIR(BITSET, RUN): + result = bitset_container_create(); + run_bitset_container_lazy_xor( + const_CAST_run(c2), const_CAST_bitset(c1), CAST_bitset(result)); + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, BITSET): + result = bitset_container_create(); + run_bitset_container_lazy_xor( + const_CAST_run(c1), const_CAST_bitset(c2), CAST_bitset(result)); + *result_type = BITSET_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, RUN): + result = run_container_create(); + array_run_container_lazy_xor(const_CAST_array(c1), + const_CAST_run(c2), CAST_run(result)); + *result_type = RUN_CONTAINER_TYPE; + // next line skipped since we are lazy + // result = convert_run_to_efficient_container(result, result_type); + return result; + + case CONTAINER_PAIR(RUN, ARRAY): + result = run_container_create(); + array_run_container_lazy_xor(const_CAST_array(c2), + const_CAST_run(c1), CAST_run(result)); + *result_type = RUN_CONTAINER_TYPE; + // next line skipped since we are lazy + // result = convert_run_to_efficient_container(result, result_type); + return result; + + default: + assert(false); + roaring_unreachable; + return NULL; // unreached + } +} + +/** + * Compute the xor between two containers, with result in the first container. + * If the returned pointer is identical to c1, then the container has been + * modified. + * If the returned pointer is different from c1, then a new container has been + * created. The original container is freed by container_ixor. + * The type of the first container may change. Returns the modified (and + * possibly new) container. + */ +static inline container_t *container_ixor(container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type) { + c1 = get_writable_copy_if_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + container_t *result = NULL; + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + *result_type = bitset_bitset_container_ixor( + CAST_bitset(c1), const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, ARRAY): + *result_type = array_array_container_ixor( + CAST_array(c1), const_CAST_array(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, RUN): + *result_type = (uint8_t)run_run_container_ixor( + CAST_run(c1), const_CAST_run(c2), &result); + return result; + + case CONTAINER_PAIR(BITSET, ARRAY): + *result_type = bitset_array_container_ixor( + CAST_bitset(c1), const_CAST_array(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, BITSET): + *result_type = array_bitset_container_ixor( + CAST_array(c1), const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(BITSET, RUN): + *result_type = bitset_run_container_ixor( + CAST_bitset(c1), const_CAST_run(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + + return result; + + case CONTAINER_PAIR(RUN, BITSET): + *result_type = run_bitset_container_ixor( + CAST_run(c1), const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, RUN): + *result_type = (uint8_t)array_run_container_ixor( + CAST_array(c1), const_CAST_run(c2), &result); + return result; + + case CONTAINER_PAIR(RUN, ARRAY): + *result_type = (uint8_t)run_array_container_ixor( + CAST_run(c1), const_CAST_array(c2), &result); + return result; + + default: + assert(false); + roaring_unreachable; + return NULL; + } +} + +/** + * Compute the xor between two containers, with result in the first container. + * If the returned pointer is identical to c1, then the container has been + * modified. + * If the returned pointer is different from c1, then a new container has been + * created and the caller is responsible for freeing it. + * The type of the first container may change. Returns the modified + * (and possibly new) container + * + * This lazy version delays some operations such as the maintenance of the + * cardinality. It requires repair later on the generated containers. + */ +static inline container_t *container_lazy_ixor(container_t *c1, uint8_t type1, + const container_t *c2, + uint8_t type2, + uint8_t *result_type) { + assert(type1 != SHARED_CONTAINER_TYPE); + // c1 = get_writable_copy_if_shared(c1,&type1); + c2 = container_unwrap_shared(c2, &type2); + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + bitset_container_xor_nocard(CAST_bitset(c1), const_CAST_bitset(c2), + CAST_bitset(c1)); // is lazy + *result_type = BITSET_CONTAINER_TYPE; + return c1; + + // TODO: other cases being lazy, esp. when we know inplace not likely + // could see the corresponding code for union + default: + // we may have a dirty bitset (without a precomputed cardinality) + // and calling container_ixor on it might be unsafe. + if (type1 == BITSET_CONTAINER_TYPE) { + bitset_container_t *bc = CAST_bitset(c1); + if (bc->cardinality == BITSET_UNKNOWN_CARDINALITY) { + bc->cardinality = bitset_container_compute_cardinality(bc); + } + } + return container_ixor(c1, type1, c2, type2, result_type); + } +} + +/** + * Compute difference (andnot) between two containers, generate a new + * container (having type result_type), requires a typecode. This allocates new + * memory, caller is responsible for deallocation. + */ +static inline container_t *container_andnot(const container_t *c1, + uint8_t type1, + const container_t *c2, + uint8_t type2, + uint8_t *result_type) { + c1 = container_unwrap_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + container_t *result = NULL; + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + *result_type = + bitset_bitset_container_andnot(const_CAST_bitset(c1), + const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, ARRAY): + result = array_container_create(); + array_array_container_andnot( + const_CAST_array(c1), const_CAST_array(c2), CAST_array(result)); + *result_type = ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, RUN): + if (run_container_is_full(const_CAST_run(c2))) { + result = array_container_create(); + *result_type = ARRAY_CONTAINER_TYPE; + return result; + } + *result_type = (uint8_t)run_run_container_andnot( + const_CAST_run(c1), const_CAST_run(c2), &result); + return result; + + case CONTAINER_PAIR(BITSET, ARRAY): + *result_type = + bitset_array_container_andnot(const_CAST_bitset(c1), + const_CAST_array(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, BITSET): + result = array_container_create(); + array_bitset_container_andnot(const_CAST_array(c1), + const_CAST_bitset(c2), + CAST_array(result)); + *result_type = ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(BITSET, RUN): + if (run_container_is_full(const_CAST_run(c2))) { + result = array_container_create(); + *result_type = ARRAY_CONTAINER_TYPE; + return result; + } + *result_type = + bitset_run_container_andnot(const_CAST_bitset(c1), + const_CAST_run(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, BITSET): + *result_type = + run_bitset_container_andnot(const_CAST_run(c1), + const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, RUN): + if (run_container_is_full(const_CAST_run(c2))) { + result = array_container_create(); + *result_type = ARRAY_CONTAINER_TYPE; + return result; + } + result = array_container_create(); + array_run_container_andnot(const_CAST_array(c1), const_CAST_run(c2), + CAST_array(result)); + *result_type = ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, ARRAY): + *result_type = (uint8_t)run_array_container_andnot( + const_CAST_run(c1), const_CAST_array(c2), &result); + return result; + + default: + assert(false); + roaring_unreachable; + return NULL; // unreached + } +} + +/** + * Compute the andnot between two containers, with result in the first + * container. + * If the returned pointer is identical to c1, then the container has been + * modified. + * If the returned pointer is different from c1, then a new container has been + * created. The original container is freed by container_iandnot. + * The type of the first container may change. Returns the modified (and + * possibly new) container. + */ +static inline container_t *container_iandnot(container_t *c1, uint8_t type1, + const container_t *c2, + uint8_t type2, + uint8_t *result_type) { + c1 = get_writable_copy_if_shared(c1, &type1); + c2 = container_unwrap_shared(c2, &type2); + container_t *result = NULL; + switch (PAIR_CONTAINER_TYPES(type1, type2)) { + case CONTAINER_PAIR(BITSET, BITSET): + *result_type = bitset_bitset_container_iandnot( + CAST_bitset(c1), const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, ARRAY): + array_array_container_iandnot(CAST_array(c1), const_CAST_array(c2)); + *result_type = ARRAY_CONTAINER_TYPE; + return c1; + + case CONTAINER_PAIR(RUN, RUN): + *result_type = (uint8_t)run_run_container_iandnot( + CAST_run(c1), const_CAST_run(c2), &result); + return result; + + case CONTAINER_PAIR(BITSET, ARRAY): + *result_type = bitset_array_container_iandnot( + CAST_bitset(c1), const_CAST_array(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, BITSET): + *result_type = ARRAY_CONTAINER_TYPE; + array_bitset_container_iandnot(CAST_array(c1), + const_CAST_bitset(c2)); + return c1; + + case CONTAINER_PAIR(BITSET, RUN): + *result_type = bitset_run_container_iandnot( + CAST_bitset(c1), const_CAST_run(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(RUN, BITSET): + *result_type = run_bitset_container_iandnot( + CAST_run(c1), const_CAST_bitset(c2), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + + case CONTAINER_PAIR(ARRAY, RUN): + *result_type = ARRAY_CONTAINER_TYPE; + array_run_container_iandnot(CAST_array(c1), const_CAST_run(c2)); + return c1; + + case CONTAINER_PAIR(RUN, ARRAY): + *result_type = (uint8_t)run_array_container_iandnot( + CAST_run(c1), const_CAST_array(c2), &result); + return result; + + default: + assert(false); + roaring_unreachable; + return NULL; + } +} + +/** + * Visit all values x of the container once, passing (base+x,ptr) + * to iterator. You need to specify a container and its type. + * Returns true if the iteration should continue. + */ +static inline bool container_iterate(const container_t *c, uint8_t type, + uint32_t base, roaring_iterator iterator, + void *ptr) { + c = container_unwrap_shared(c, &type); + switch (type) { + case BITSET_CONTAINER_TYPE: + return bitset_container_iterate(const_CAST_bitset(c), base, + iterator, ptr); + case ARRAY_CONTAINER_TYPE: + return array_container_iterate(const_CAST_array(c), base, iterator, + ptr); + case RUN_CONTAINER_TYPE: + return run_container_iterate(const_CAST_run(c), base, iterator, + ptr); + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return false; +} + +static inline bool container_iterate64(const container_t *c, uint8_t type, + uint32_t base, + roaring_iterator64 iterator, + uint64_t high_bits, void *ptr) { + c = container_unwrap_shared(c, &type); + switch (type) { + case BITSET_CONTAINER_TYPE: + return bitset_container_iterate64(const_CAST_bitset(c), base, + iterator, high_bits, ptr); + case ARRAY_CONTAINER_TYPE: + return array_container_iterate64(const_CAST_array(c), base, + iterator, high_bits, ptr); + case RUN_CONTAINER_TYPE: + return run_container_iterate64(const_CAST_run(c), base, iterator, + high_bits, ptr); + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return false; +} + +static inline container_t *container_not(const container_t *c, uint8_t type, + uint8_t *result_type) { + c = container_unwrap_shared(c, &type); + container_t *result = NULL; + switch (type) { + case BITSET_CONTAINER_TYPE: + *result_type = + bitset_container_negation(const_CAST_bitset(c), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + case ARRAY_CONTAINER_TYPE: + result = bitset_container_create(); + *result_type = BITSET_CONTAINER_TYPE; + array_container_negation(const_CAST_array(c), CAST_bitset(result)); + return result; + case RUN_CONTAINER_TYPE: + *result_type = + (uint8_t)run_container_negation(const_CAST_run(c), &result); + return result; + + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return NULL; +} + +static inline container_t *container_not_range(const container_t *c, + uint8_t type, + uint32_t range_start, + uint32_t range_end, + uint8_t *result_type) { + c = container_unwrap_shared(c, &type); + container_t *result = NULL; + switch (type) { + case BITSET_CONTAINER_TYPE: + *result_type = + bitset_container_negation_range(const_CAST_bitset(c), + range_start, range_end, &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + case ARRAY_CONTAINER_TYPE: + *result_type = + array_container_negation_range(const_CAST_array(c), range_start, + range_end, &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + case RUN_CONTAINER_TYPE: + *result_type = (uint8_t)run_container_negation_range( + const_CAST_run(c), range_start, range_end, &result); + return result; + + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return NULL; +} + +static inline container_t *container_inot(container_t *c, uint8_t type, + uint8_t *result_type) { + c = get_writable_copy_if_shared(c, &type); + container_t *result = NULL; + switch (type) { + case BITSET_CONTAINER_TYPE: + *result_type = + bitset_container_negation_inplace(CAST_bitset(c), &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + case ARRAY_CONTAINER_TYPE: + // will never be inplace + result = bitset_container_create(); + *result_type = BITSET_CONTAINER_TYPE; + array_container_negation(CAST_array(c), CAST_bitset(result)); + array_container_free(CAST_array(c)); + return result; + case RUN_CONTAINER_TYPE: + *result_type = + (uint8_t)run_container_negation_inplace(CAST_run(c), &result); + return result; + + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return NULL; +} + +static inline container_t *container_inot_range(container_t *c, uint8_t type, + uint32_t range_start, + uint32_t range_end, + uint8_t *result_type) { + c = get_writable_copy_if_shared(c, &type); + container_t *result = NULL; + switch (type) { + case BITSET_CONTAINER_TYPE: + *result_type = bitset_container_negation_range_inplace( + CAST_bitset(c), range_start, range_end, &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + case ARRAY_CONTAINER_TYPE: + *result_type = array_container_negation_range_inplace( + CAST_array(c), range_start, range_end, &result) + ? BITSET_CONTAINER_TYPE + : ARRAY_CONTAINER_TYPE; + return result; + case RUN_CONTAINER_TYPE: + *result_type = (uint8_t)run_container_negation_range_inplace( + CAST_run(c), range_start, range_end, &result); + return result; + + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return NULL; +} + +/** + * If the element of given rank is in this container, supposing that + * the first + * element has rank start_rank, then the function returns true and + * sets element + * accordingly. + * Otherwise, it returns false and update start_rank. + */ +static inline bool container_select(const container_t *c, uint8_t type, + uint32_t *start_rank, uint32_t rank, + uint32_t *element) { + c = container_unwrap_shared(c, &type); + switch (type) { + case BITSET_CONTAINER_TYPE: + return bitset_container_select(const_CAST_bitset(c), start_rank, + rank, element); + case ARRAY_CONTAINER_TYPE: + return array_container_select(const_CAST_array(c), start_rank, rank, + element); + case RUN_CONTAINER_TYPE: + return run_container_select(const_CAST_run(c), start_rank, rank, + element); + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return false; +} + +static inline uint16_t container_maximum(const container_t *c, uint8_t type) { + c = container_unwrap_shared(c, &type); + switch (type) { + case BITSET_CONTAINER_TYPE: + return bitset_container_maximum(const_CAST_bitset(c)); + case ARRAY_CONTAINER_TYPE: + return array_container_maximum(const_CAST_array(c)); + case RUN_CONTAINER_TYPE: + return run_container_maximum(const_CAST_run(c)); + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return false; +} + +static inline uint16_t container_minimum(const container_t *c, uint8_t type) { + c = container_unwrap_shared(c, &type); + switch (type) { + case BITSET_CONTAINER_TYPE: + return bitset_container_minimum(const_CAST_bitset(c)); + case ARRAY_CONTAINER_TYPE: + return array_container_minimum(const_CAST_array(c)); + case RUN_CONTAINER_TYPE: + return run_container_minimum(const_CAST_run(c)); + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return false; +} + +// number of values smaller or equal to x +static inline int container_rank(const container_t *c, uint8_t type, + uint16_t x) { + c = container_unwrap_shared(c, &type); + switch (type) { + case BITSET_CONTAINER_TYPE: + return bitset_container_rank(const_CAST_bitset(c), x); + case ARRAY_CONTAINER_TYPE: + return array_container_rank(const_CAST_array(c), x); + case RUN_CONTAINER_TYPE: + return run_container_rank(const_CAST_run(c), x); + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return false; +} + +// bulk version of container_rank(); return number of consumed elements +static inline uint32_t container_rank_many(const container_t *c, uint8_t type, + uint64_t start_rank, + const uint32_t *begin, + const uint32_t *end, uint64_t *ans) { + c = container_unwrap_shared(c, &type); + switch (type) { + case BITSET_CONTAINER_TYPE: + return bitset_container_rank_many(const_CAST_bitset(c), start_rank, + begin, end, ans); + case ARRAY_CONTAINER_TYPE: + return array_container_rank_many(const_CAST_array(c), start_rank, + begin, end, ans); + case RUN_CONTAINER_TYPE: + return run_container_rank_many(const_CAST_run(c), start_rank, begin, + end, ans); + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return 0; +} + +// return the index of x, if not exsist return -1 +static inline int container_get_index(const container_t *c, uint8_t type, + uint16_t x) { + c = container_unwrap_shared(c, &type); + switch (type) { + case BITSET_CONTAINER_TYPE: + return bitset_container_get_index(const_CAST_bitset(c), x); + case ARRAY_CONTAINER_TYPE: + return array_container_get_index(const_CAST_array(c), x); + case RUN_CONTAINER_TYPE: + return run_container_get_index(const_CAST_run(c), x); + default: + assert(false); + roaring_unreachable; + } + assert(false); + roaring_unreachable; + return false; +} + +/** + * Add all values in range [min, max] to a given container. + * + * If the returned pointer is different from $container, then a new container + * has been created and the caller is responsible for freeing it. + * The type of the first container may change. Returns the modified + * (and possibly new) container. + */ +static inline container_t *container_add_range(container_t *c, uint8_t type, + uint32_t min, uint32_t max, + uint8_t *result_type) { + // NB: when selecting new container type, we perform only inexpensive checks + switch (type) { + case BITSET_CONTAINER_TYPE: { + bitset_container_t *bitset = CAST_bitset(c); + + int32_t union_cardinality = 0; + union_cardinality += bitset->cardinality; + union_cardinality += max - min + 1; + union_cardinality -= + bitset_lenrange_cardinality(bitset->words, min, max - min); + + if (union_cardinality == INT32_C(0x10000)) { + *result_type = RUN_CONTAINER_TYPE; + return run_container_create_range(0, INT32_C(0x10000)); + } else { + *result_type = BITSET_CONTAINER_TYPE; + bitset_set_lenrange(bitset->words, min, max - min); + bitset->cardinality = union_cardinality; + return bitset; + } + } + case ARRAY_CONTAINER_TYPE: { + array_container_t *array = CAST_array(c); + + int32_t nvals_greater = + count_greater(array->array, array->cardinality, (uint16_t)max); + int32_t nvals_less = + count_less(array->array, array->cardinality - nvals_greater, + (uint16_t)min); + int32_t union_cardinality = + nvals_less + (max - min + 1) + nvals_greater; + + if (union_cardinality == INT32_C(0x10000)) { + *result_type = RUN_CONTAINER_TYPE; + return run_container_create_range(0, INT32_C(0x10000)); + } else if (union_cardinality <= DEFAULT_MAX_SIZE) { + *result_type = ARRAY_CONTAINER_TYPE; + array_container_add_range_nvals(array, min, max, nvals_less, + nvals_greater); + return array; + } else { + *result_type = BITSET_CONTAINER_TYPE; + bitset_container_t *bitset = bitset_container_from_array(array); + bitset_set_lenrange(bitset->words, min, max - min); + bitset->cardinality = union_cardinality; + return bitset; + } + } + case RUN_CONTAINER_TYPE: { + run_container_t *run = CAST_run(c); + + int32_t nruns_greater = + rle16_count_greater(run->runs, run->n_runs, (uint16_t)max); + int32_t nruns_less = rle16_count_less( + run->runs, run->n_runs - nruns_greater, (uint16_t)min); + + int32_t run_size_bytes = + (nruns_less + 1 + nruns_greater) * sizeof(rle16_t); + int32_t bitset_size_bytes = + BITSET_CONTAINER_SIZE_IN_WORDS * sizeof(uint64_t); + + if (run_size_bytes <= bitset_size_bytes) { + run_container_add_range_nruns(run, min, max, nruns_less, + nruns_greater); + *result_type = RUN_CONTAINER_TYPE; + return run; + } else { + return container_from_run_range(run, min, max, result_type); + } + } + default: + roaring_unreachable; + } +} + +/* + * Removes all elements in range [min, max]. + * Returns one of: + * - NULL if no elements left + * - pointer to the original container + * - pointer to a newly-allocated container (if it is more efficient) + * + * If the returned pointer is different from $container, then a new container + * has been created and the caller is responsible for freeing the original + * container. + */ +static inline container_t *container_remove_range(container_t *c, uint8_t type, + uint32_t min, uint32_t max, + uint8_t *result_type) { + switch (type) { + case BITSET_CONTAINER_TYPE: { + bitset_container_t *bitset = CAST_bitset(c); + + int32_t result_cardinality = + bitset->cardinality - + bitset_lenrange_cardinality(bitset->words, min, max - min); + + if (result_cardinality == 0) { + return NULL; + } else if (result_cardinality <= DEFAULT_MAX_SIZE) { + *result_type = ARRAY_CONTAINER_TYPE; + bitset_reset_range(bitset->words, min, max + 1); + bitset->cardinality = result_cardinality; + return array_container_from_bitset(bitset); + } else { + *result_type = BITSET_CONTAINER_TYPE; + bitset_reset_range(bitset->words, min, max + 1); + bitset->cardinality = result_cardinality; + return bitset; + } + } + case ARRAY_CONTAINER_TYPE: { + array_container_t *array = CAST_array(c); + + int32_t nvals_greater = + count_greater(array->array, array->cardinality, (uint16_t)max); + int32_t nvals_less = + count_less(array->array, array->cardinality - nvals_greater, + (uint16_t)min); + int32_t result_cardinality = nvals_less + nvals_greater; + + if (result_cardinality == 0) { + return NULL; + } else { + *result_type = ARRAY_CONTAINER_TYPE; + array_container_remove_range( + array, nvals_less, array->cardinality - result_cardinality); + return array; + } + } + case RUN_CONTAINER_TYPE: { + run_container_t *run = CAST_run(c); + + if (run->n_runs == 0) { + return NULL; + } + if (min <= run_container_minimum(run) && + max >= run_container_maximum(run)) { + return NULL; + } + + run_container_remove_range(run, min, max); + return convert_run_to_efficient_container(run, result_type); + } + default: + roaring_unreachable; + } +} + +#ifdef __cplusplus +using api::roaring_container_iterator_t; +#endif + +/** + * Initializes the iterator at the first entry in the container. + */ +roaring_container_iterator_t container_init_iterator(const container_t *c, + uint8_t typecode, + uint16_t *value); + +/** + * Initializes the iterator at the last entry in the container. + */ +roaring_container_iterator_t container_init_iterator_last(const container_t *c, + uint8_t typecode, + uint16_t *value); + +/** + * Moves the iterator to the next entry. Returns true and sets `value` if a + * value is present. + */ +bool container_iterator_next(const container_t *c, uint8_t typecode, + roaring_container_iterator_t *it, uint16_t *value); + +/** + * Moves the iterator to the previous entry. Returns true and sets `value` if a + * value is present. + */ +bool container_iterator_prev(const container_t *c, uint8_t typecode, + roaring_container_iterator_t *it, uint16_t *value); + +/** + * Moves the iterator to the smallest entry that is greater than or equal to + * `val`. Returns true and sets `value_out` if a value is present. `value_out` + * should be initialized to a value. + */ +bool container_iterator_lower_bound(const container_t *c, uint8_t typecode, + roaring_container_iterator_t *it, + uint16_t *value_out, uint16_t val); + +/** + * Reads up to `count` entries from the container, and writes them into `buf` + * as `high16 | entry`. Returns true and sets `value_out` if a value is present + * after reading the entries. Sets `consumed` to the number of values read. + * `count` should be greater than zero. + */ +bool container_iterator_read_into_uint32(const container_t *c, uint8_t typecode, + roaring_container_iterator_t *it, + uint32_t high16, uint32_t *buf, + uint32_t count, uint32_t *consumed, + uint16_t *value_out); + +/** + * Reads up to `count` entries from the container, and writes them into `buf` + * as `high48 | entry`. Returns true and sets `value_out` if a value is present + * after reading the entries. Sets `consumed` to the number of values read. + * `count` should be greater than zero. + */ +bool container_iterator_read_into_uint64(const container_t *c, uint8_t typecode, + roaring_container_iterator_t *it, + uint64_t high48, uint64_t *buf, + uint32_t count, uint32_t *consumed, + uint16_t *value_out); + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif diff --git a/contrib/libs/croaring/include/roaring/containers/convert.h b/contrib/libs/croaring/include/roaring/containers/convert.h new file mode 100644 index 000000000000..923c0c218f09 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/convert.h @@ -0,0 +1,73 @@ +/* + * convert.h + * + */ + +#ifndef INCLUDE_CONTAINERS_CONVERT_H_ +#define INCLUDE_CONTAINERS_CONVERT_H_ + +#include <roaring/containers/array.h> +#include <roaring/containers/bitset.h> +#include <roaring/containers/run.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* Convert an array into a bitset. The input container is not freed or modified. + */ +bitset_container_t *bitset_container_from_array(const array_container_t *arr); + +/* Convert a run into a bitset. The input container is not freed or modified. */ +bitset_container_t *bitset_container_from_run(const run_container_t *arr); + +/* Convert a run into an array. The input container is not freed or modified. */ +array_container_t *array_container_from_run(const run_container_t *arr); + +/* Convert a bitset into an array. The input container is not freed or modified. + */ +array_container_t *array_container_from_bitset(const bitset_container_t *bits); + +/* Convert an array into a run. The input container is not freed or modified. + */ +run_container_t *run_container_from_array(const array_container_t *c); + +/* convert a run into either an array or a bitset + * might free the container. This does not free the input run container. */ +container_t *convert_to_bitset_or_array_container(run_container_t *rc, + int32_t card, + uint8_t *resulttype); + +/* convert containers to and from runcontainers, as is most space efficient. + * The container might be freed. */ +container_t *convert_run_optimize(container_t *c, uint8_t typecode_original, + uint8_t *typecode_after); + +/* converts a run container to either an array or a bitset, IF it saves space. + */ +/* If a conversion occurs, the caller is responsible to free the original + * container and + * he becomes reponsible to free the new one. */ +container_t *convert_run_to_efficient_container(run_container_t *c, + uint8_t *typecode_after); + +// like convert_run_to_efficient_container but frees the old result if needed +container_t *convert_run_to_efficient_container_and_free( + run_container_t *c, uint8_t *typecode_after); + +/** + * Create new container which is a union of run container and + * range [min, max]. Caller is responsible for freeing run container. + */ +container_t *container_from_run_range(const run_container_t *run, uint32_t min, + uint32_t max, uint8_t *typecode_after); + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif /* INCLUDE_CONTAINERS_CONVERT_H_ */ diff --git a/contrib/libs/croaring/include/roaring/containers/mixed_andnot.h b/contrib/libs/croaring/include/roaring/containers/mixed_andnot.h new file mode 100644 index 000000000000..f7ba19de9ab6 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/mixed_andnot.h @@ -0,0 +1,181 @@ +/* + * mixed_andnot.h + */ +#ifndef INCLUDE_CONTAINERS_MIXED_ANDNOT_H_ +#define INCLUDE_CONTAINERS_MIXED_ANDNOT_H_ + +#include <roaring/containers/array.h> +#include <roaring/containers/bitset.h> +#include <roaring/containers/run.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst, a valid array container that could be the same as dst.*/ +void array_bitset_container_andnot(const array_container_t *src_1, + const bitset_container_t *src_2, + array_container_t *dst); + +/* Compute the andnot of src_1 and src_2 and write the result to + * src_1 */ + +void array_bitset_container_iandnot(array_container_t *src_1, + const bitset_container_t *src_2); + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst, which does not initially have a valid container. + * Return true for a bitset result; false for array + */ + +bool bitset_array_container_andnot(const bitset_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +bool bitset_array_container_iandnot(bitset_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst. Result may be either a bitset or an array container + * (returns "result is bitset"). dst does not initially have + * any container, but becomes either a bitset container (return + * result true) or an array container. + */ + +bool run_bitset_container_andnot(const run_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst. Result may be either a bitset or an array container + * (returns "result is bitset"). dst does not initially have + * any container, but becomes either a bitset container (return + * result true) or an array container. + */ + +bool run_bitset_container_iandnot(run_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst. Result may be either a bitset or an array container + * (returns "result is bitset"). dst does not initially have + * any container, but becomes either a bitset container (return + * result true) or an array container. + */ + +bool bitset_run_container_andnot(const bitset_container_t *src_1, + const run_container_t *src_2, + container_t **dst); + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +bool bitset_run_container_iandnot(bitset_container_t *src_1, + const run_container_t *src_2, + container_t **dst); + +/* dst does not indicate a valid container initially. Eventually it + * can become any type of container. + */ + +int run_array_container_andnot(const run_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +int run_array_container_iandnot(run_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +/* dst must be a valid array container, allowed to be src_1 */ + +void array_run_container_andnot(const array_container_t *src_1, + const run_container_t *src_2, + array_container_t *dst); + +/* dst does not indicate a valid container initially. Eventually it + * can become any kind of container. + */ + +void array_run_container_iandnot(array_container_t *src_1, + const run_container_t *src_2); + +/* dst does not indicate a valid container initially. Eventually it + * can become any kind of container. + */ + +int run_run_container_andnot(const run_container_t *src_1, + const run_container_t *src_2, container_t **dst); + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +int run_run_container_iandnot(run_container_t *src_1, + const run_container_t *src_2, container_t **dst); + +/* + * dst is a valid array container and may be the same as src_1 + */ + +void array_array_container_andnot(const array_container_t *src_1, + const array_container_t *src_2, + array_container_t *dst); + +/* inplace array-array andnot will always be able to reuse the space of + * src_1 */ +void array_array_container_iandnot(array_container_t *src_1, + const array_container_t *src_2); + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). Return value is + * "dst is a bitset" + */ + +bool bitset_bitset_container_andnot(const bitset_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +bool bitset_bitset_container_iandnot(bitset_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif diff --git a/contrib/libs/croaring/include/roaring/containers/mixed_equal.h b/contrib/libs/croaring/include/roaring/containers/mixed_equal.h new file mode 100644 index 000000000000..f1b236e0253d --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/mixed_equal.h @@ -0,0 +1,42 @@ +/* + * mixed_equal.h + * + */ + +#ifndef CONTAINERS_MIXED_EQUAL_H_ +#define CONTAINERS_MIXED_EQUAL_H_ + +#include <roaring/containers/array.h> +#include <roaring/containers/bitset.h> +#include <roaring/containers/run.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/** + * Return true if the two containers have the same content. + */ +bool array_container_equal_bitset(const array_container_t* container1, + const bitset_container_t* container2); + +/** + * Return true if the two containers have the same content. + */ +bool run_container_equals_array(const run_container_t* container1, + const array_container_t* container2); +/** + * Return true if the two containers have the same content. + */ +bool run_container_equals_bitset(const run_container_t* container1, + const bitset_container_t* container2); + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif /* CONTAINERS_MIXED_EQUAL_H_ */ diff --git a/contrib/libs/croaring/include/roaring/containers/mixed_intersection.h b/contrib/libs/croaring/include/roaring/containers/mixed_intersection.h new file mode 100644 index 000000000000..53c85298d9a0 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/mixed_intersection.h @@ -0,0 +1,101 @@ +/* + * mixed_intersection.h + * + */ + +#ifndef INCLUDE_CONTAINERS_MIXED_INTERSECTION_H_ +#define INCLUDE_CONTAINERS_MIXED_INTERSECTION_H_ + +/* These functions appear to exclude cases where the + * inputs have the same type and the output is guaranteed + * to have the same type as the inputs. Eg, array intersection + */ + +#include <roaring/containers/array.h> +#include <roaring/containers/bitset.h> +#include <roaring/containers/run.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* Compute the intersection of src_1 and src_2 and write the result to + * dst. It is allowed for dst to be equal to src_1. We assume that dst is a + * valid container. */ +void array_bitset_container_intersection(const array_container_t *src_1, + const bitset_container_t *src_2, + array_container_t *dst); + +/* Compute the size of the intersection of src_1 and src_2. */ +int array_bitset_container_intersection_cardinality( + const array_container_t *src_1, const bitset_container_t *src_2); + +/* Checking whether src_1 and src_2 intersect. */ +bool array_bitset_container_intersect(const array_container_t *src_1, + const bitset_container_t *src_2); + +/* + * Compute the intersection between src_1 and src_2 and write the result + * to *dst. If the return function is true, the result is a bitset_container_t + * otherwise is a array_container_t. We assume that dst is not pre-allocated. In + * case of failure, *dst will be NULL. + */ +bool bitset_bitset_container_intersection(const bitset_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +/* Compute the intersection between src_1 and src_2 and write the result to + * dst. It is allowed for dst to be equal to src_1. We assume that dst is a + * valid container. */ +void array_run_container_intersection(const array_container_t *src_1, + const run_container_t *src_2, + array_container_t *dst); + +/* Compute the intersection between src_1 and src_2 and write the result to + * *dst. If the result is true then the result is a bitset_container_t + * otherwise is a array_container_t. + * If *dst == src_2, then an in-place intersection is attempted + **/ +bool run_bitset_container_intersection(const run_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +/* Compute the size of the intersection between src_1 and src_2 . */ +int array_run_container_intersection_cardinality(const array_container_t *src_1, + const run_container_t *src_2); + +/* Compute the size of the intersection between src_1 and src_2 + **/ +int run_bitset_container_intersection_cardinality( + const run_container_t *src_1, const bitset_container_t *src_2); + +/* Check that src_1 and src_2 intersect. */ +bool array_run_container_intersect(const array_container_t *src_1, + const run_container_t *src_2); + +/* Check that src_1 and src_2 intersect. + **/ +bool run_bitset_container_intersect(const run_container_t *src_1, + const bitset_container_t *src_2); + +/* + * Same as bitset_bitset_container_intersection except that if the output is to + * be a + * bitset_container_t, then src_1 is modified and no allocation is made. + * If the output is to be an array_container_t, then caller is responsible + * to free the container. + * In all cases, the result is in *dst. + */ +bool bitset_bitset_container_intersection_inplace( + bitset_container_t *src_1, const bitset_container_t *src_2, + container_t **dst); + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif /* INCLUDE_CONTAINERS_MIXED_INTERSECTION_H_ */ diff --git a/contrib/libs/croaring/include/roaring/containers/mixed_negation.h b/contrib/libs/croaring/include/roaring/containers/mixed_negation.h new file mode 100644 index 000000000000..3788ca413b5d --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/mixed_negation.h @@ -0,0 +1,140 @@ +/* + * mixed_negation.h + * + */ + +#ifndef INCLUDE_CONTAINERS_MIXED_NEGATION_H_ +#define INCLUDE_CONTAINERS_MIXED_NEGATION_H_ + +#include <roaring/containers/array.h> +#include <roaring/containers/bitset.h> +#include <roaring/containers/run.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* Negation across the entire range of the container. + * Compute the negation of src and write the result + * to *dst. The complement of a + * sufficiently sparse set will always be dense and a hence a bitmap + * We assume that dst is pre-allocated and a valid bitset container + * There can be no in-place version. + */ +void array_container_negation(const array_container_t *src, + bitset_container_t *dst); + +/* Negation across the entire range of the container + * Compute the negation of src and write the result + * to *dst. A true return value indicates a bitset result, + * otherwise the result is an array container. + * We assume that dst is not pre-allocated. In + * case of failure, *dst will be NULL. + */ +bool bitset_container_negation(const bitset_container_t *src, + container_t **dst); + +/* inplace version */ +/* + * Same as bitset_container_negation except that if the output is to + * be a + * bitset_container_t, then src is modified and no allocation is made. + * If the output is to be an array_container_t, then caller is responsible + * to free the container. + * In all cases, the result is in *dst. + */ +bool bitset_container_negation_inplace(bitset_container_t *src, + container_t **dst); + +/* Negation across the entire range of container + * Compute the negation of src and write the result + * to *dst. + * Return values are the *_TYPECODES as defined * in containers.h + * We assume that dst is not pre-allocated. In + * case of failure, *dst will be NULL. + */ +int run_container_negation(const run_container_t *src, container_t **dst); + +/* + * Same as run_container_negation except that if the output is to + * be a + * run_container_t, and has the capacity to hold the result, + * then src is modified and no allocation is made. + * In all cases, the result is in *dst. + */ +int run_container_negation_inplace(run_container_t *src, container_t **dst); + +/* Negation across a range of the container. + * Compute the negation of src and write the result + * to *dst. Returns true if the result is a bitset container + * and false for an array container. *dst is not preallocated. + */ +bool array_container_negation_range(const array_container_t *src, + const int range_start, const int range_end, + container_t **dst); + +/* Even when the result would fit, it is unclear how to make an + * inplace version without inefficient copying. Thus this routine + * may be a wrapper for the non-in-place version + */ +bool array_container_negation_range_inplace(array_container_t *src, + const int range_start, + const int range_end, + container_t **dst); + +/* Negation across a range of the container + * Compute the negation of src and write the result + * to *dst. A true return value indicates a bitset result, + * otherwise the result is an array container. + * We assume that dst is not pre-allocated. In + * case of failure, *dst will be NULL. + */ +bool bitset_container_negation_range(const bitset_container_t *src, + const int range_start, const int range_end, + container_t **dst); + +/* inplace version */ +/* + * Same as bitset_container_negation except that if the output is to + * be a + * bitset_container_t, then src is modified and no allocation is made. + * If the output is to be an array_container_t, then caller is responsible + * to free the container. + * In all cases, the result is in *dst. + */ +bool bitset_container_negation_range_inplace(bitset_container_t *src, + const int range_start, + const int range_end, + container_t **dst); + +/* Negation across a range of container + * Compute the negation of src and write the result + * to *dst. Return values are the *_TYPECODES as defined * in containers.h + * We assume that dst is not pre-allocated. In + * case of failure, *dst will be NULL. + */ +int run_container_negation_range(const run_container_t *src, + const int range_start, const int range_end, + container_t **dst); + +/* + * Same as run_container_negation except that if the output is to + * be a + * run_container_t, and has the capacity to hold the result, + * then src is modified and no allocation is made. + * In all cases, the result is in *dst. + */ +int run_container_negation_range_inplace(run_container_t *src, + const int range_start, + const int range_end, + container_t **dst); + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif /* INCLUDE_CONTAINERS_MIXED_NEGATION_H_ */ diff --git a/contrib/libs/croaring/include/roaring/containers/mixed_subset.h b/contrib/libs/croaring/include/roaring/containers/mixed_subset.h new file mode 100644 index 000000000000..e7ce1f866cd3 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/mixed_subset.h @@ -0,0 +1,55 @@ +/* + * mixed_subset.h + * + */ + +#ifndef CONTAINERS_MIXED_SUBSET_H_ +#define CONTAINERS_MIXED_SUBSET_H_ + +#include <roaring/containers/array.h> +#include <roaring/containers/bitset.h> +#include <roaring/containers/run.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/** + * Return true if container1 is a subset of container2. + */ +bool array_container_is_subset_bitset(const array_container_t* container1, + const bitset_container_t* container2); + +/** + * Return true if container1 is a subset of container2. + */ +bool run_container_is_subset_array(const run_container_t* container1, + const array_container_t* container2); + +/** + * Return true if container1 is a subset of container2. + */ +bool array_container_is_subset_run(const array_container_t* container1, + const run_container_t* container2); + +/** + * Return true if container1 is a subset of container2. + */ +bool run_container_is_subset_bitset(const run_container_t* container1, + const bitset_container_t* container2); + +/** + * Return true if container1 is a subset of container2. + */ +bool bitset_container_is_subset_run(const bitset_container_t* container1, + const run_container_t* container2); + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif /* CONTAINERS_MIXED_SUBSET_H_ */ diff --git a/contrib/libs/croaring/include/roaring/containers/mixed_union.h b/contrib/libs/croaring/include/roaring/containers/mixed_union.h new file mode 100644 index 000000000000..0ff439217e52 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/mixed_union.h @@ -0,0 +1,117 @@ +/* + * mixed_intersection.h + * + */ + +#ifndef INCLUDE_CONTAINERS_MIXED_UNION_H_ +#define INCLUDE_CONTAINERS_MIXED_UNION_H_ + +/* These functions appear to exclude cases where the + * inputs have the same type and the output is guaranteed + * to have the same type as the inputs. Eg, bitset unions + */ + +#include <roaring/containers/array.h> +#include <roaring/containers/bitset.h> +#include <roaring/containers/run.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* Compute the union of src_1 and src_2 and write the result to + * dst. It is allowed for src_2 to be dst. */ +void array_bitset_container_union(const array_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Compute the union of src_1 and src_2 and write the result to + * dst. It is allowed for src_2 to be dst. This version does not + * update the cardinality of dst (it is set to BITSET_UNKNOWN_CARDINALITY). */ +void array_bitset_container_lazy_union(const array_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* + * Compute the union between src_1 and src_2 and write the result + * to *dst. If the return function is true, the result is a bitset_container_t + * otherwise is a array_container_t. We assume that dst is not pre-allocated. In + * case of failure, *dst will be NULL. + */ +bool array_array_container_union(const array_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +/* + * Compute the union between src_1 and src_2 and write the result + * to *dst if it cannot be written to src_1. If the return function is true, + * the result is a bitset_container_t + * otherwise is a array_container_t. When the result is an array_container_t, it + * it either written to src_1 (if *dst is null) or to *dst. + * If the result is a bitset_container_t and *dst is null, then there was a + * failure. + */ +bool array_array_container_inplace_union(array_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +/* + * Same as array_array_container_union except that it will more eagerly produce + * a bitset. + */ +bool array_array_container_lazy_union(const array_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +/* + * Same as array_array_container_inplace_union except that it will more eagerly + * produce a bitset. + */ +bool array_array_container_lazy_inplace_union(array_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +/* Compute the union of src_1 and src_2 and write the result to + * dst. We assume that dst is a + * valid container. The result might need to be further converted to array or + * bitset container, + * the caller is responsible for the eventual conversion. */ +void array_run_container_union(const array_container_t *src_1, + const run_container_t *src_2, + run_container_t *dst); + +/* Compute the union of src_1 and src_2 and write the result to + * src2. The result might need to be further converted to array or + * bitset container, + * the caller is responsible for the eventual conversion. */ +void array_run_container_inplace_union(const array_container_t *src_1, + run_container_t *src_2); + +/* Compute the union of src_1 and src_2 and write the result to + * dst. It is allowed for dst to be src_2. + * If run_container_is_full(src_1) is true, you must not be calling this + *function. + **/ +void run_bitset_container_union(const run_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* Compute the union of src_1 and src_2 and write the result to + * dst. It is allowed for dst to be src_2. This version does not + * update the cardinality of dst (it is set to BITSET_UNKNOWN_CARDINALITY). + * If run_container_is_full(src_1) is true, you must not be calling this + * function. + * */ +void run_bitset_container_lazy_union(const run_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif /* INCLUDE_CONTAINERS_MIXED_UNION_H_ */ diff --git a/contrib/libs/croaring/include/roaring/containers/mixed_xor.h b/contrib/libs/croaring/include/roaring/containers/mixed_xor.h new file mode 100644 index 000000000000..8000898bcf3c --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/mixed_xor.h @@ -0,0 +1,177 @@ +/* + * mixed_xor.h + * + */ + +#ifndef INCLUDE_CONTAINERS_MIXED_XOR_H_ +#define INCLUDE_CONTAINERS_MIXED_XOR_H_ + +/* These functions appear to exclude cases where the + * inputs have the same type and the output is guaranteed + * to have the same type as the inputs. Eg, bitset unions + */ + +/* + * Java implementation (as of May 2016) for array_run, run_run + * and bitset_run don't do anything different for inplace. + * (They are not truly in place.) + */ + +#include <roaring/containers/array.h> +#include <roaring/containers/bitset.h> +#include <roaring/containers/run.h> + +// #include "containers.h" + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* Compute the xor of src_1 and src_2 and write the result to + * dst (which has no container initially). + * Result is true iff dst is a bitset */ +bool array_bitset_container_xor(const array_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +/* Compute the xor of src_1 and src_2 and write the result to + * dst. It is allowed for src_2 to be dst. This version does not + * update the cardinality of dst (it is set to BITSET_UNKNOWN_CARDINALITY). + */ + +void array_bitset_container_lazy_xor(const array_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); +/* Compute the xor of src_1 and src_2 and write the result to + * dst (which has no container initially). Return value is + * "dst is a bitset" + */ + +bool bitset_bitset_container_xor(const bitset_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +/* Compute the xor of src_1 and src_2 and write the result to + * dst. Result may be either a bitset or an array container + * (returns "result is bitset"). dst does not initially have + * any container, but becomes either a bitset container (return + * result true) or an array container. + */ + +bool run_bitset_container_xor(const run_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +/* lazy xor. Dst is initialized and may be equal to src_2. + * Result is left as a bitset container, even if actual + * cardinality would dictate an array container. + */ + +void run_bitset_container_lazy_xor(const run_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst); + +/* dst does not indicate a valid container initially. Eventually it + * can become any kind of container. + */ + +int array_run_container_xor(const array_container_t *src_1, + const run_container_t *src_2, container_t **dst); + +/* dst does not initially have a valid container. Creates either + * an array or a bitset container, indicated by return code + */ + +bool array_array_container_xor(const array_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +/* dst does not initially have a valid container. Creates either + * an array or a bitset container, indicated by return code. + * A bitset container will not have a valid cardinality and the + * container type might not be correct for the actual cardinality + */ + +bool array_array_container_lazy_xor(const array_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +/* Dst is a valid run container. (Can it be src_2? Let's say not.) + * Leaves result as run container, even if other options are + * smaller. + */ + +void array_run_container_lazy_xor(const array_container_t *src_1, + const run_container_t *src_2, + run_container_t *dst); + +/* dst does not indicate a valid container initially. Eventually it + * can become any kind of container. + */ + +int run_run_container_xor(const run_container_t *src_1, + const run_container_t *src_2, container_t **dst); + +/* INPLACE versions (initial implementation may not exploit all inplace + * opportunities (if any...) + */ + +/* Compute the xor of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +bool bitset_array_container_ixor(bitset_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +bool bitset_bitset_container_ixor(bitset_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +bool array_bitset_container_ixor(array_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +/* Compute the xor of src_1 and src_2 and write the result to + * dst. Result may be either a bitset or an array container + * (returns "result is bitset"). dst does not initially have + * any container, but becomes either a bitset container (return + * result true) or an array container. + */ + +bool run_bitset_container_ixor(run_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst); + +bool bitset_run_container_ixor(bitset_container_t *src_1, + const run_container_t *src_2, container_t **dst); + +/* dst does not indicate a valid container initially. Eventually it + * can become any kind of container. + */ + +int array_run_container_ixor(array_container_t *src_1, + const run_container_t *src_2, container_t **dst); + +int run_array_container_ixor(run_container_t *src_1, + const array_container_t *src_2, container_t **dst); + +bool array_array_container_ixor(array_container_t *src_1, + const array_container_t *src_2, + container_t **dst); + +int run_run_container_ixor(run_container_t *src_1, const run_container_t *src_2, + container_t **dst); + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif diff --git a/contrib/libs/croaring/include/roaring/containers/perfparameters.h b/contrib/libs/croaring/include/roaring/containers/perfparameters.h new file mode 100644 index 000000000000..f42a87410956 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/perfparameters.h @@ -0,0 +1,49 @@ +#ifndef PERFPARAMETERS_H_ +#define PERFPARAMETERS_H_ + +#include <stdbool.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/** +During lazy computations, we can transform array containers into bitset +containers as +long as we can expect them to have ARRAY_LAZY_LOWERBOUND values. +*/ +enum { ARRAY_LAZY_LOWERBOUND = 1024 }; + +/* default initial size of a run container + setting it to zero delays the malloc.*/ +enum { RUN_DEFAULT_INIT_SIZE = 0 }; + +/* default initial size of an array container + setting it to zero delays the malloc */ +enum { ARRAY_DEFAULT_INIT_SIZE = 0 }; + +/* automatic bitset conversion during lazy or */ +#ifndef LAZY_OR_BITSET_CONVERSION +#define LAZY_OR_BITSET_CONVERSION true +#endif + +/* automatically attempt to convert a bitset to a full run during lazy + * evaluation */ +#ifndef LAZY_OR_BITSET_CONVERSION_TO_FULL +#define LAZY_OR_BITSET_CONVERSION_TO_FULL true +#endif + +/* automatically attempt to convert a bitset to a full run */ +#ifndef OR_BITSET_CONVERSION_TO_FULL +#define OR_BITSET_CONVERSION_TO_FULL true +#endif + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif diff --git a/contrib/libs/croaring/include/roaring/containers/run.h b/contrib/libs/croaring/include/roaring/containers/run.h new file mode 100644 index 000000000000..486c9844345d --- /dev/null +++ b/contrib/libs/croaring/include/roaring/containers/run.h @@ -0,0 +1,718 @@ +/* + * run.h + * + */ + +#ifndef INCLUDE_CONTAINERS_RUN_H_ +#define INCLUDE_CONTAINERS_RUN_H_ + +#include <roaring/roaring_types.h> // roaring_iterator + +// Include other headers after roaring_types.h +#include <assert.h> +#include <stdbool.h> +#include <stdint.h> +#include <string.h> + +#include <roaring/array_util.h> // binarySearch()/memequals() for inlining +#include <roaring/containers/container_defs.h> // container_t, perfparameters +#include <roaring/portability.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { + +// Note: in pure C++ code, you should avoid putting `using` in header files +using api::roaring_iterator; +using api::roaring_iterator64; + +namespace internal { +#endif + +/* struct rle16_s - run length pair + * + * @value: start position of the run + * @length: length of the run is `length + 1` + * + * An RLE pair {v, l} would represent the integers between the interval + * [v, v+l+1], e.g. {3, 2} = [3, 4, 5]. + */ +struct rle16_s { + uint16_t value; + uint16_t length; +}; + +typedef struct rle16_s rle16_t; + +#ifdef __cplusplus +#define CROARING_MAKE_RLE16(val, len) \ + { (uint16_t)(val), (uint16_t)(len) } // no tagged structs until c++20 +#else +#define CROARING_MAKE_RLE16(val, len) \ + (rle16_t) { .value = (uint16_t)(val), .length = (uint16_t)(len) } +#endif + +/* struct run_container_s - run container bitmap + * + * @n_runs: number of rle_t pairs in `runs`. + * @capacity: capacity in rle_t pairs `runs` can hold. + * @runs: pairs of rle_t. + */ +STRUCT_CONTAINER(run_container_s) { + int32_t n_runs; + int32_t capacity; + rle16_t *runs; +}; + +typedef struct run_container_s run_container_t; + +#define CAST_run(c) CAST(run_container_t *, c) // safer downcast +#define const_CAST_run(c) CAST(const run_container_t *, c) +#define movable_CAST_run(c) movable_CAST(run_container_t **, c) + +/* Create a new run container. Return NULL in case of failure. */ +run_container_t *run_container_create(void); + +/* Create a new run container with given capacity. Return NULL in case of + * failure. */ +run_container_t *run_container_create_given_capacity(int32_t size); + +/* + * Shrink the capacity to the actual size, return the number of bytes saved. + */ +int run_container_shrink_to_fit(run_container_t *src); + +/* Free memory owned by `run'. */ +void run_container_free(run_container_t *run); + +/* Duplicate container */ +run_container_t *run_container_clone(const run_container_t *src); + +/* + * Effectively deletes the value at index index, repacking data. + */ +static inline void recoverRoomAtIndex(run_container_t *run, uint16_t index) { + memmove(run->runs + index, run->runs + (1 + index), + (run->n_runs - index - 1) * sizeof(rle16_t)); + run->n_runs--; +} + +/** + * Good old binary search through rle data + */ +inline int32_t interleavedBinarySearch(const rle16_t *array, int32_t lenarray, + uint16_t ikey) { + int32_t low = 0; + int32_t high = lenarray - 1; + while (low <= high) { + int32_t middleIndex = (low + high) >> 1; + uint16_t middleValue = array[middleIndex].value; + if (middleValue < ikey) { + low = middleIndex + 1; + } else if (middleValue > ikey) { + high = middleIndex - 1; + } else { + return middleIndex; + } + } + return -(low + 1); +} + +/* + * Returns index of the run which contains $ikey + */ +static inline int32_t rle16_find_run(const rle16_t *array, int32_t lenarray, + uint16_t ikey) { + int32_t low = 0; + int32_t high = lenarray - 1; + while (low <= high) { + int32_t middleIndex = (low + high) >> 1; + uint16_t min = array[middleIndex].value; + uint16_t max = array[middleIndex].value + array[middleIndex].length; + if (ikey > max) { + low = middleIndex + 1; + } else if (ikey < min) { + high = middleIndex - 1; + } else { + return middleIndex; + } + } + return -(low + 1); +} + +/** + * Returns number of runs which can'be be merged with the key because they + * are less than the key. + * Note that [5,6,7,8] can be merged with the key 9 and won't be counted. + */ +static inline int32_t rle16_count_less(const rle16_t *array, int32_t lenarray, + uint16_t key) { + if (lenarray == 0) return 0; + int32_t low = 0; + int32_t high = lenarray - 1; + while (low <= high) { + int32_t middleIndex = (low + high) >> 1; + uint16_t min_value = array[middleIndex].value; + uint16_t max_value = + array[middleIndex].value + array[middleIndex].length; + if (max_value + UINT32_C(1) < key) { // uint32 arithmetic + low = middleIndex + 1; + } else if (key < min_value) { + high = middleIndex - 1; + } else { + return middleIndex; + } + } + return low; +} + +static inline int32_t rle16_count_greater(const rle16_t *array, + int32_t lenarray, uint16_t key) { + if (lenarray == 0) return 0; + int32_t low = 0; + int32_t high = lenarray - 1; + while (low <= high) { + int32_t middleIndex = (low + high) >> 1; + uint16_t min_value = array[middleIndex].value; + uint16_t max_value = + array[middleIndex].value + array[middleIndex].length; + if (max_value < key) { + low = middleIndex + 1; + } else if (key + UINT32_C(1) < min_value) { // uint32 arithmetic + high = middleIndex - 1; + } else { + return lenarray - (middleIndex + 1); + } + } + return lenarray - low; +} + +/** + * increase capacity to at least min. Whether the + * existing data needs to be copied over depends on copy. If "copy" is false, + * then the new content will be uninitialized, otherwise a copy is made. + */ +void run_container_grow(run_container_t *run, int32_t min, bool copy); + +/** + * Moves the data so that we can write data at index + */ +static inline void makeRoomAtIndex(run_container_t *run, uint16_t index) { + /* This function calls realloc + memmove sequentially to move by one index. + * Potentially copying twice the array. + */ + if (run->n_runs + 1 > run->capacity) + run_container_grow(run, run->n_runs + 1, true); + memmove(run->runs + 1 + index, run->runs + index, + (run->n_runs - index) * sizeof(rle16_t)); + run->n_runs++; +} + +/* Add `pos' to `run'. Returns true if `pos' was not present. */ +bool run_container_add(run_container_t *run, uint16_t pos); + +/* Remove `pos' from `run'. Returns true if `pos' was present. */ +static inline bool run_container_remove(run_container_t *run, uint16_t pos) { + int32_t index = interleavedBinarySearch(run->runs, run->n_runs, pos); + if (index >= 0) { + int32_t le = run->runs[index].length; + if (le == 0) { + recoverRoomAtIndex(run, (uint16_t)index); + } else { + run->runs[index].value++; + run->runs[index].length--; + } + return true; + } + index = -index - 2; // points to preceding value, possibly -1 + if (index >= 0) { // possible match + int32_t offset = pos - run->runs[index].value; + int32_t le = run->runs[index].length; + if (offset < le) { + // need to break in two + run->runs[index].length = (uint16_t)(offset - 1); + // need to insert + uint16_t newvalue = pos + 1; + int32_t newlength = le - offset - 1; + makeRoomAtIndex(run, (uint16_t)(index + 1)); + run->runs[index + 1].value = newvalue; + run->runs[index + 1].length = (uint16_t)newlength; + return true; + + } else if (offset == le) { + run->runs[index].length--; + return true; + } + } + // no match + return false; +} + +/* Check whether `pos' is present in `run'. */ +inline bool run_container_contains(const run_container_t *run, uint16_t pos) { + int32_t index = interleavedBinarySearch(run->runs, run->n_runs, pos); + if (index >= 0) return true; + index = -index - 2; // points to preceding value, possibly -1 + if (index != -1) { // possible match + int32_t offset = pos - run->runs[index].value; + int32_t le = run->runs[index].length; + if (offset <= le) return true; + } + return false; +} + +/* + * Check whether all positions in a range of positions from pos_start (included) + * to pos_end (excluded) is present in `run'. + */ +static inline bool run_container_contains_range(const run_container_t *run, + uint32_t pos_start, + uint32_t pos_end) { + uint32_t count = 0; + int32_t index = + interleavedBinarySearch(run->runs, run->n_runs, (uint16_t)pos_start); + if (index < 0) { + index = -index - 2; + if ((index == -1) || + ((pos_start - run->runs[index].value) > run->runs[index].length)) { + return false; + } + } + for (int32_t i = index; i < run->n_runs; ++i) { + const uint32_t stop = run->runs[i].value + run->runs[i].length; + if (run->runs[i].value >= pos_end) break; + if (stop >= pos_end) { + count += (((pos_end - run->runs[i].value) > 0) + ? (pos_end - run->runs[i].value) + : 0); + break; + } + const uint32_t min = (stop - pos_start) > 0 ? (stop - pos_start) : 0; + count += (min < run->runs[i].length) ? min : run->runs[i].length; + } + return count >= (pos_end - pos_start - 1); +} + +/* Get the cardinality of `run'. Requires an actual computation. */ +int run_container_cardinality(const run_container_t *run); + +/* Card > 0?, see run_container_empty for the reverse */ +static inline bool run_container_nonzero_cardinality( + const run_container_t *run) { + return run->n_runs > 0; // runs never empty +} + +/* Card == 0?, see run_container_nonzero_cardinality for the reverse */ +static inline bool run_container_empty(const run_container_t *run) { + return run->n_runs == 0; // runs never empty +} + +/* Copy one container into another. We assume that they are distinct. */ +void run_container_copy(const run_container_t *src, run_container_t *dst); + +/** + * Append run described by vl to the run container, possibly merging. + * It is assumed that the run would be inserted at the end of the container, no + * check is made. + * It is assumed that the run container has the necessary capacity: caller is + * responsible for checking memory capacity. + * + * + * This is not a safe function, it is meant for performance: use with care. + */ +static inline void run_container_append(run_container_t *run, rle16_t vl, + rle16_t *previousrl) { + const uint32_t previousend = previousrl->value + previousrl->length; + if (vl.value > previousend + 1) { // we add a new one + run->runs[run->n_runs] = vl; + run->n_runs++; + *previousrl = vl; + } else { + uint32_t newend = vl.value + vl.length + UINT32_C(1); + if (newend > previousend) { // we merge + previousrl->length = (uint16_t)(newend - 1 - previousrl->value); + run->runs[run->n_runs - 1] = *previousrl; + } + } +} + +/** + * Like run_container_append but it is assumed that the content of run is empty. + */ +static inline rle16_t run_container_append_first(run_container_t *run, + rle16_t vl) { + run->runs[run->n_runs] = vl; + run->n_runs++; + return vl; +} + +/** + * append a single value given by val to the run container, possibly merging. + * It is assumed that the value would be inserted at the end of the container, + * no check is made. + * It is assumed that the run container has the necessary capacity: caller is + * responsible for checking memory capacity. + * + * This is not a safe function, it is meant for performance: use with care. + */ +static inline void run_container_append_value(run_container_t *run, + uint16_t val, + rle16_t *previousrl) { + const uint32_t previousend = previousrl->value + previousrl->length; + if (val > previousend + 1) { // we add a new one + *previousrl = CROARING_MAKE_RLE16(val, 0); + run->runs[run->n_runs] = *previousrl; + run->n_runs++; + } else if (val == previousend + 1) { // we merge + previousrl->length++; + run->runs[run->n_runs - 1] = *previousrl; + } +} + +/** + * Like run_container_append_value but it is assumed that the content of run is + * empty. + */ +static inline rle16_t run_container_append_value_first(run_container_t *run, + uint16_t val) { + rle16_t newrle = CROARING_MAKE_RLE16(val, 0); + run->runs[run->n_runs] = newrle; + run->n_runs++; + return newrle; +} + +/* Check whether the container spans the whole chunk (cardinality = 1<<16). + * This check can be done in constant time (inexpensive). */ +static inline bool run_container_is_full(const run_container_t *run) { + rle16_t vl = run->runs[0]; + return (run->n_runs == 1) && (vl.value == 0) && (vl.length == 0xFFFF); +} + +/* Compute the union of `src_1' and `src_2' and write the result to `dst' + * It is assumed that `dst' is distinct from both `src_1' and `src_2'. */ +void run_container_union(const run_container_t *src_1, + const run_container_t *src_2, run_container_t *dst); + +/* Compute the union of `src_1' and `src_2' and write the result to `src_1' */ +void run_container_union_inplace(run_container_t *src_1, + const run_container_t *src_2); + +/* Compute the intersection of src_1 and src_2 and write the result to + * dst. It is assumed that dst is distinct from both src_1 and src_2. */ +void run_container_intersection(const run_container_t *src_1, + const run_container_t *src_2, + run_container_t *dst); + +/* Compute the size of the intersection of src_1 and src_2 . */ +int run_container_intersection_cardinality(const run_container_t *src_1, + const run_container_t *src_2); + +/* Check whether src_1 and src_2 intersect. */ +bool run_container_intersect(const run_container_t *src_1, + const run_container_t *src_2); + +/* Compute the symmetric difference of `src_1' and `src_2' and write the result + * to `dst' + * It is assumed that `dst' is distinct from both `src_1' and `src_2'. */ +void run_container_xor(const run_container_t *src_1, + const run_container_t *src_2, run_container_t *dst); + +/* + * Write out the 16-bit integers contained in this container as a list of 32-bit + * integers using base + * as the starting value (it might be expected that base has zeros in its 16 + * least significant bits). + * The function returns the number of values written. + * The caller is responsible for allocating enough memory in out. + */ +int run_container_to_uint32_array(void *vout, const run_container_t *cont, + uint32_t base); + +/* + * Print this container using printf (useful for debugging). + */ +void run_container_printf(const run_container_t *v); + +/* + * Print this container using printf as a comma-separated list of 32-bit + * integers starting at base. + */ +void run_container_printf_as_uint32_array(const run_container_t *v, + uint32_t base); + +bool run_container_validate(const run_container_t *run, const char **reason); + +/** + * Return the serialized size in bytes of a container having "num_runs" runs. + */ +static inline int32_t run_container_serialized_size_in_bytes(int32_t num_runs) { + return sizeof(uint16_t) + + sizeof(rle16_t) * num_runs; // each run requires 2 2-byte entries. +} + +bool run_container_iterate(const run_container_t *cont, uint32_t base, + roaring_iterator iterator, void *ptr); +bool run_container_iterate64(const run_container_t *cont, uint32_t base, + roaring_iterator64 iterator, uint64_t high_bits, + void *ptr); + +/** + * Writes the underlying array to buf, outputs how many bytes were written. + * This is meant to be byte-by-byte compatible with the Java and Go versions of + * Roaring. + * The number of bytes written should be run_container_size_in_bytes(container). + */ +int32_t run_container_write(const run_container_t *container, char *buf); + +/** + * Reads the instance from buf, outputs how many bytes were read. + * This is meant to be byte-by-byte compatible with the Java and Go versions of + * Roaring. + * The number of bytes read should be bitset_container_size_in_bytes(container). + * The cardinality parameter is provided for consistency with other containers, + * but + * it might be effectively ignored.. + */ +int32_t run_container_read(int32_t cardinality, run_container_t *container, + const char *buf); + +/** + * Return the serialized size in bytes of a container (see run_container_write). + * This is meant to be compatible with the Java and Go versions of Roaring. + */ +ALLOW_UNALIGNED +static inline int32_t run_container_size_in_bytes( + const run_container_t *container) { + return run_container_serialized_size_in_bytes(container->n_runs); +} + +/** + * Return true if the two containers have the same content. + */ +ALLOW_UNALIGNED +static inline bool run_container_equals(const run_container_t *container1, + const run_container_t *container2) { + if (container1->n_runs != container2->n_runs) { + return false; + } + return memequals(container1->runs, container2->runs, + container1->n_runs * sizeof(rle16_t)); +} + +/** + * Return true if container1 is a subset of container2. + */ +bool run_container_is_subset(const run_container_t *container1, + const run_container_t *container2); + +/** + * Used in a start-finish scan that appends segments, for XOR and NOT + */ + +void run_container_smart_append_exclusive(run_container_t *src, + const uint16_t start, + const uint16_t length); + +/** + * The new container consists of a single run [start,stop). + * It is required that stop>start, the caller is responsability for this check. + * It is required that stop <= (1<<16), the caller is responsability for this + * check. The cardinality of the created container is stop - start. Returns NULL + * on failure + */ +static inline run_container_t *run_container_create_range(uint32_t start, + uint32_t stop) { + run_container_t *rc = run_container_create_given_capacity(1); + if (rc) { + rle16_t r; + r.value = (uint16_t)start; + r.length = (uint16_t)(stop - start - 1); + run_container_append_first(rc, r); + } + return rc; +} + +/** + * If the element of given rank is in this container, supposing that the first + * element has rank start_rank, then the function returns true and sets element + * accordingly. + * Otherwise, it returns false and update start_rank. + */ +bool run_container_select(const run_container_t *container, + uint32_t *start_rank, uint32_t rank, + uint32_t *element); + +/* Compute the difference of src_1 and src_2 and write the result to + * dst. It is assumed that dst is distinct from both src_1 and src_2. */ + +void run_container_andnot(const run_container_t *src_1, + const run_container_t *src_2, run_container_t *dst); + +void run_container_offset(const run_container_t *c, container_t **loc, + container_t **hic, uint16_t offset); + +/* Returns the smallest value (assumes not empty) */ +inline uint16_t run_container_minimum(const run_container_t *run) { + if (run->n_runs == 0) return 0; + return run->runs[0].value; +} + +/* Returns the largest value (assumes not empty) */ +inline uint16_t run_container_maximum(const run_container_t *run) { + if (run->n_runs == 0) return 0; + return run->runs[run->n_runs - 1].value + run->runs[run->n_runs - 1].length; +} + +/* Returns the number of values equal or smaller than x */ +int run_container_rank(const run_container_t *arr, uint16_t x); + +/* bulk version of run_container_rank(); return number of consumed elements */ +uint32_t run_container_rank_many(const run_container_t *arr, + uint64_t start_rank, const uint32_t *begin, + const uint32_t *end, uint64_t *ans); + +/* Returns the index of x, if not exsist return -1 */ +int run_container_get_index(const run_container_t *arr, uint16_t x); + +/* Returns the index of the first run containing a value at least as large as x, + * or -1 */ +inline int run_container_index_equalorlarger(const run_container_t *arr, + uint16_t x) { + int32_t index = interleavedBinarySearch(arr->runs, arr->n_runs, x); + if (index >= 0) return index; + index = -index - 2; // points to preceding run, possibly -1 + if (index != -1) { // possible match + int32_t offset = x - arr->runs[index].value; + int32_t le = arr->runs[index].length; + if (offset <= le) return index; + } + index += 1; + if (index < arr->n_runs) { + return index; + } + return -1; +} + +/* + * Add all values in range [min, max] using hint. + */ +static inline void run_container_add_range_nruns(run_container_t *run, + uint32_t min, uint32_t max, + int32_t nruns_less, + int32_t nruns_greater) { + int32_t nruns_common = run->n_runs - nruns_less - nruns_greater; + if (nruns_common == 0) { + makeRoomAtIndex(run, (uint16_t)nruns_less); + run->runs[nruns_less].value = (uint16_t)min; + run->runs[nruns_less].length = (uint16_t)(max - min); + } else { + uint32_t common_min = run->runs[nruns_less].value; + uint32_t common_max = run->runs[nruns_less + nruns_common - 1].value + + run->runs[nruns_less + nruns_common - 1].length; + uint32_t result_min = (common_min < min) ? common_min : min; + uint32_t result_max = (common_max > max) ? common_max : max; + + run->runs[nruns_less].value = (uint16_t)result_min; + run->runs[nruns_less].length = (uint16_t)(result_max - result_min); + + memmove(&(run->runs[nruns_less + 1]), + &(run->runs[run->n_runs - nruns_greater]), + nruns_greater * sizeof(rle16_t)); + run->n_runs = nruns_less + 1 + nruns_greater; + } +} + +/** + * Add all values in range [min, max]. This function is currently unused + * and left as documentation. + */ +/*static inline void run_container_add_range(run_container_t* run, + uint32_t min, uint32_t max) { + int32_t nruns_greater = rle16_count_greater(run->runs, run->n_runs, max); + int32_t nruns_less = rle16_count_less(run->runs, run->n_runs - +nruns_greater, min); run_container_add_range_nruns(run, min, max, nruns_less, +nruns_greater); +}*/ + +/** + * Shifts last $count elements either left (distance < 0) or right (distance > + * 0) + */ +static inline void run_container_shift_tail(run_container_t *run, int32_t count, + int32_t distance) { + if (distance > 0) { + if (run->capacity < count + distance) { + run_container_grow(run, count + distance, true); + } + } + int32_t srcpos = run->n_runs - count; + int32_t dstpos = srcpos + distance; + memmove(&(run->runs[dstpos]), &(run->runs[srcpos]), + sizeof(rle16_t) * count); + run->n_runs += distance; +} + +/** + * Remove all elements in range [min, max] + */ +static inline void run_container_remove_range(run_container_t *run, + uint32_t min, uint32_t max) { + int32_t first = rle16_find_run(run->runs, run->n_runs, (uint16_t)min); + int32_t last = rle16_find_run(run->runs, run->n_runs, (uint16_t)max); + + if (first >= 0 && min > run->runs[first].value && + max < ((uint32_t)run->runs[first].value + + (uint32_t)run->runs[first].length)) { + // split this run into two adjacent runs + + // right subinterval + makeRoomAtIndex(run, (uint16_t)(first + 1)); + run->runs[first + 1].value = (uint16_t)(max + 1); + run->runs[first + 1].length = + (uint16_t)((run->runs[first].value + run->runs[first].length) - + (max + 1)); + + // left subinterval + run->runs[first].length = + (uint16_t)((min - 1) - run->runs[first].value); + + return; + } + + // update left-most partial run + if (first >= 0) { + if (min > run->runs[first].value) { + run->runs[first].length = + (uint16_t)((min - 1) - run->runs[first].value); + first++; + } + } else { + first = -first - 1; + } + + // update right-most run + if (last >= 0) { + uint16_t run_max = run->runs[last].value + run->runs[last].length; + if (run_max > max) { + run->runs[last].value = (uint16_t)(max + 1); + run->runs[last].length = (uint16_t)(run_max - (max + 1)); + last--; + } + } else { + last = (-last - 1) - 1; + } + + // remove intermediate runs + if (first <= last) { + run_container_shift_tail(run, run->n_runs - (last + 1), + -(last - first + 1)); + } +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#endif /* INCLUDE_CONTAINERS_RUN_H_ */ diff --git a/contrib/libs/croaring/include/roaring/isadetection.h b/contrib/libs/croaring/include/roaring/isadetection.h new file mode 100644 index 000000000000..189db5f00a99 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/isadetection.h @@ -0,0 +1,42 @@ +#ifndef ROARING_ISADETECTION_H +#define ROARING_ISADETECTION_H +#if defined(__x86_64__) || defined(_M_AMD64) // x64 + +#ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#ifdef __has_include +// We want to make sure that the AVX-512 functions are only built on compilers +// fully supporting AVX-512. +#if __has_include(<avx512vbmi2intrin.h>) +#define CROARING_COMPILER_SUPPORTS_AVX512 1 +#endif // #if __has_include(<avx512vbmi2intrin.h>) +#endif // #ifdef __has_include + +// Visual Studio 2019 and up support AVX-512 +#ifdef _MSC_VER +#if _MSC_VER >= 1920 +#define CROARING_COMPILER_SUPPORTS_AVX512 1 +#endif // #if _MSC_VER >= 1920 +#endif // #ifdef _MSC_VER + +#ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#define CROARING_COMPILER_SUPPORTS_AVX512 0 +#endif // #ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#endif // #ifndef CROARING_COMPILER_SUPPORTS_AVX512 + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif +enum { + ROARING_SUPPORTS_AVX2 = 1, + ROARING_SUPPORTS_AVX512 = 2, +}; +int croaring_hardware_support(void); +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif +#endif // x64 +#endif // ROARING_ISADETECTION_H diff --git a/contrib/libs/croaring/include/roaring/memory.h b/contrib/libs/croaring/include/roaring/memory.h new file mode 100644 index 000000000000..ad9a64f5e22b --- /dev/null +++ b/contrib/libs/croaring/include/roaring/memory.h @@ -0,0 +1,39 @@ +#ifndef INCLUDE_ROARING_MEMORY_H_ +#define INCLUDE_ROARING_MEMORY_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stddef.h> // for size_t + +typedef void* (*roaring_malloc_p)(size_t); +typedef void* (*roaring_realloc_p)(void*, size_t); +typedef void* (*roaring_calloc_p)(size_t, size_t); +typedef void (*roaring_free_p)(void*); +typedef void* (*roaring_aligned_malloc_p)(size_t, size_t); +typedef void (*roaring_aligned_free_p)(void*); + +typedef struct roaring_memory_s { + roaring_malloc_p malloc; + roaring_realloc_p realloc; + roaring_calloc_p calloc; + roaring_free_p free; + roaring_aligned_malloc_p aligned_malloc; + roaring_aligned_free_p aligned_free; +} roaring_memory_t; + +void roaring_init_memory_hook(roaring_memory_t memory_hook); + +void* roaring_malloc(size_t); +void* roaring_realloc(void*, size_t); +void* roaring_calloc(size_t, size_t); +void roaring_free(void*); +void* roaring_aligned_malloc(size_t, size_t); +void roaring_aligned_free(void*); + +#ifdef __cplusplus +} +#endif + +#endif // INCLUDE_ROARING_MEMORY_H_ diff --git a/contrib/libs/croaring/include/roaring/portability.h b/contrib/libs/croaring/include/roaring/portability.h new file mode 100644 index 000000000000..78081ec88eda --- /dev/null +++ b/contrib/libs/croaring/include/roaring/portability.h @@ -0,0 +1,600 @@ +/* + * portability.h + * + */ + +/** + * All macros should be prefixed with either CROARING or ROARING. + * The library uses both ROARING_... + * as well as CROAIRING_ as prefixes. The ROARING_ prefix is for + * macros that are provided by the build system or that are closely + * related to the format. The header macros may also use ROARING_. + * The CROARING_ prefix is for internal macros that a user is unlikely + * to ever interact with. + */ + +#ifndef CROARING_INCLUDE_PORTABILITY_H_ +#define CROARING_INCLUDE_PORTABILITY_H_ + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE 1 +#endif // _GNU_SOURCE +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS 1 +#endif // __STDC_FORMAT_MACROS + +#ifdef _MSC_VER +#define CROARING_VISUAL_STUDIO 1 +/** + * We want to differentiate carefully between + * clang under visual studio and regular visual + * studio. + */ +#ifdef __clang__ +// clang under visual studio +#define CROARING_CLANG_VISUAL_STUDIO 1 +#else +// just regular visual studio (best guess) +#define CROARING_REGULAR_VISUAL_STUDIO 1 +#endif // __clang__ +#endif // _MSC_VER +#ifndef CROARING_VISUAL_STUDIO +#define CROARING_VISUAL_STUDIO 0 +#endif +#ifndef CROARING_CLANG_VISUAL_STUDIO +#define CROARING_CLANG_VISUAL_STUDIO 0 +#endif +#ifndef CROARING_REGULAR_VISUAL_STUDIO +#define CROARING_REGULAR_VISUAL_STUDIO 0 +#endif + +#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE < 200809L) +#undef _POSIX_C_SOURCE +#endif + +#ifndef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 200809L +#endif // !(defined(_POSIX_C_SOURCE)) || (_POSIX_C_SOURCE < 200809L) +#if !(defined(_XOPEN_SOURCE)) || (_XOPEN_SOURCE < 700) +#define _XOPEN_SOURCE 700 +#endif // !(defined(_XOPEN_SOURCE)) || (_XOPEN_SOURCE < 700) + +#ifdef __illumos__ +#define __EXTENSIONS__ +#endif + +#include <stdbool.h> +#include <stdint.h> +#include <stdlib.h> // will provide posix_memalign with _POSIX_C_SOURCE as defined above +#ifdef __GLIBC__ +#include <malloc.h> // this should never be needed but there are some reports that it is needed. +#endif + +#ifdef __cplusplus +extern "C" { // portability definitions are in global scope, not a namespace +#endif + +#if defined(__SIZEOF_LONG_LONG__) && __SIZEOF_LONG_LONG__ != 8 +#error This code assumes 64-bit long longs (by use of the GCC intrinsics). Your system is not currently supported. +#endif + +#if CROARING_REGULAR_VISUAL_STUDIO +#ifndef __restrict__ +#define __restrict__ __restrict +#endif // __restrict__ +#endif // CROARING_REGULAR_VISUAL_STUDIO + +#if defined(__x86_64__) || defined(_M_X64) +// we have an x64 processor +#define CROARING_IS_X64 1 + +#if defined(_MSC_VER) && (_MSC_VER < 1910) +// Old visual studio systems won't support AVX2 well. +#undef CROARING_IS_X64 +#endif + +#if defined(__clang_major__) && (__clang_major__ <= 8) && !defined(__AVX2__) +// Older versions of clang have a bug affecting us +// https://stackoverflow.com/questions/57228537/how-does-one-use-pragma-clang-attribute-push-with-c-namespaces +#undef CROARING_IS_X64 +#endif + +#ifdef ROARING_DISABLE_X64 +#undef CROARING_IS_X64 +#endif +// we include the intrinsic header +#if !CROARING_REGULAR_VISUAL_STUDIO +/* Non-Microsoft C/C++-compatible compiler */ +#include <x86intrin.h> // on some recent GCC, this will declare posix_memalign + +#if CROARING_CLANG_VISUAL_STUDIO + +/** + * You are not supposed, normally, to include these + * headers directly. Instead you should either include intrin.h + * or x86intrin.h. However, when compiling with clang + * under Windows (i.e., when _MSC_VER is set), these headers + * only get included *if* the corresponding features are detected + * from macros: + * e.g., if __AVX2__ is set... in turn, we normally set these + * macros by compiling against the corresponding architecture + * (e.g., arch:AVX2, -mavx2, etc.) which compiles the whole + * software with these advanced instructions. These headers would + * normally guard against such usage, but we carefully included + * <x86intrin.h> (or <intrin.h>) before, so the headers + * are fooled. + */ +// To avoid reordering imports: +// clang-format off +#include <bmiintrin.h> // for _blsr_u64 +#include <lzcntintrin.h> // for __lzcnt64 +#include <immintrin.h> // for most things (AVX2, AVX512, _popcnt64) +#include <smmintrin.h> +#include <tmmintrin.h> +#include <avxintrin.h> +#include <avx2intrin.h> +#include <wmmintrin.h> +#if _MSC_VER >= 1920 +// Important: we need the AVX-512 headers: +#include <avx512fintrin.h> +#include <avx512dqintrin.h> +#include <avx512cdintrin.h> +#include <avx512bwintrin.h> +#include <avx512vlintrin.h> +#include <avx512vbmiintrin.h> +#include <avx512vbmi2intrin.h> +#include <avx512vpopcntdqintrin.h> +// clang-format on +#endif // _MSC_VER >= 1920 +// unfortunately, we may not get _blsr_u64, but, thankfully, clang +// has it as a macro. +#ifndef _blsr_u64 +// we roll our own +#define _blsr_u64(n) ((n - 1) & n) +#endif // _blsr_u64 +#endif // SIMDJSON_CLANG_VISUAL_STUDIO + +#endif // CROARING_REGULAR_VISUAL_STUDIO +#endif // defined(__x86_64__) || defined(_M_X64) + +#if !defined(CROARING_USENEON) && !defined(DISABLENEON) && defined(__ARM_NEON) +#define CROARING_USENEON +#endif +#if defined(CROARING_USENEON) +#include <arm_neon.h> +#endif + +#if !CROARING_REGULAR_VISUAL_STUDIO +/* Non-Microsoft C/C++-compatible compiler, assumes that it supports inline + * assembly */ +#define CROARING_INLINE_ASM 1 +#endif // _MSC_VER + +#if CROARING_REGULAR_VISUAL_STUDIO +/* Microsoft C/C++-compatible compiler */ +#include <intrin.h> + +#ifndef __clang__ // if one compiles with MSVC *with* clang, then these + // intrinsics are defined!!! +#define CROARING_INTRINSICS 1 +// sadly there is no way to check whether we are missing these intrinsics +// specifically. + +/* wrappers for Visual Studio built-ins that look like gcc built-ins + * __builtin_ctzll */ +/** result might be undefined when input_num is zero */ +inline int roaring_trailing_zeroes(unsigned long long input_num) { + unsigned long index; +#ifdef _WIN64 // highly recommended!!! + _BitScanForward64(&index, input_num); +#else // if we must support 32-bit Windows + if ((uint32_t)input_num != 0) { + _BitScanForward(&index, (uint32_t)input_num); + } else { + _BitScanForward(&index, (uint32_t)(input_num >> 32)); + index += 32; + } +#endif // _WIN64 + return index; +} + +/* wrappers for Visual Studio built-ins that look like gcc built-ins + * __builtin_clzll */ +/** result might be undefined when input_num is zero */ +inline int roaring_leading_zeroes(unsigned long long input_num) { + unsigned long index; +#ifdef _WIN64 // highly recommended!!! + _BitScanReverse64(&index, input_num); +#else // if we must support 32-bit Windows + if (input_num > 0xFFFFFFFF) { + _BitScanReverse(&index, (uint32_t)(input_num >> 32)); + index += 32; + } else { + _BitScanReverse(&index, (uint32_t)(input_num)); + } +#endif // _WIN64 + return 63 - index; +} + +/* Use #define so this is effective even under /Ob0 (no inline) */ +#define roaring_unreachable __assume(0) +#endif // __clang__ + +#endif // CROARING_REGULAR_VISUAL_STUDIO + +#ifndef CROARING_INTRINSICS +#define CROARING_INTRINSICS 1 +#define roaring_unreachable __builtin_unreachable() +/** result might be undefined when input_num is zero */ +inline int roaring_trailing_zeroes(unsigned long long input_num) { + return __builtin_ctzll(input_num); +} +/** result might be undefined when input_num is zero */ +inline int roaring_leading_zeroes(unsigned long long input_num) { + return __builtin_clzll(input_num); +} +#endif + +#if CROARING_REGULAR_VISUAL_STUDIO +#define ALIGNED(x) __declspec(align(x)) +#elif defined(__GNUC__) || defined(__clang__) +#define ALIGNED(x) __attribute__((aligned(x))) +#else +#warning "Warning. Unrecognized compiler." +#define ALIGNED(x) +#endif + +#if defined(__GNUC__) || defined(__clang__) +#define CROARING_WARN_UNUSED __attribute__((warn_unused_result)) +#else +#define CROARING_WARN_UNUSED +#endif + +#define IS_BIG_ENDIAN (*(uint16_t *)"\0\xff" < 0x100) + +#ifdef CROARING_USENEON +// we can always compute the popcount fast. +#elif (defined(_M_ARM) || defined(_M_ARM64)) && \ + ((defined(_WIN64) || defined(_WIN32)) && \ + defined(CROARING_REGULAR_VISUAL_STUDIO) && \ + CROARING_REGULAR_VISUAL_STUDIO) +// we will need this function: +static inline int roaring_hamming_backup(uint64_t x) { + uint64_t c1 = UINT64_C(0x5555555555555555); + uint64_t c2 = UINT64_C(0x3333333333333333); + uint64_t c4 = UINT64_C(0x0F0F0F0F0F0F0F0F); + x -= (x >> 1) & c1; + x = ((x >> 2) & c2) + (x & c2); + x = (x + (x >> 4)) & c4; + x *= UINT64_C(0x0101010101010101); + return x >> 56; +} +#endif + +static inline int roaring_hamming(uint64_t x) { +#if defined(_WIN64) && defined(CROARING_REGULAR_VISUAL_STUDIO) && \ + CROARING_REGULAR_VISUAL_STUDIO +#ifdef CROARING_USENEON + return vaddv_u8(vcnt_u8(vcreate_u8(input_num))); +#elif defined(_M_ARM64) + return roaring_hamming_backup(x); + // (int) _CountOneBits64(x); is unavailable +#else // _M_ARM64 + return (int)__popcnt64(x); +#endif // _M_ARM64 +#elif defined(_WIN32) && defined(CROARING_REGULAR_VISUAL_STUDIO) && \ + CROARING_REGULAR_VISUAL_STUDIO +#ifdef _M_ARM + return roaring_hamming_backup(x); + // _CountOneBits is unavailable +#else // _M_ARM + return (int)__popcnt((unsigned int)x) + + (int)__popcnt((unsigned int)(x >> 32)); +#endif // _M_ARM +#else + return __builtin_popcountll(x); +#endif +} + +#ifndef UINT64_C +#define UINT64_C(c) (c##ULL) +#endif // UINT64_C + +#ifndef UINT32_C +#define UINT32_C(c) (c##UL) +#endif // UINT32_C + +#ifdef __cplusplus +} // extern "C" { +#endif // __cplusplus + +// this is almost standard? +#undef STRINGIFY_IMPLEMENTATION_ +#undef STRINGIFY +#define STRINGIFY_IMPLEMENTATION_(a) #a +#define STRINGIFY(a) STRINGIFY_IMPLEMENTATION_(a) + +// Our fast kernels require 64-bit systems. +// +// On 32-bit x86, we lack 64-bit popcnt, lzcnt, blsr instructions. +// Furthermore, the number of SIMD registers is reduced. +// +// On 32-bit ARM, we would have smaller registers. +// +// The library should still have the fallback kernel. It is +// slower, but it should run everywhere. + +// +// Enable valid runtime implementations, and select +// CROARING_BUILTIN_IMPLEMENTATION +// + +// We are going to use runtime dispatch. +#if CROARING_IS_X64 +#ifdef __clang__ +// clang does not have GCC push pop +// warning: clang attribute push can't be used within a namespace in clang up +// til 8.0 so CROARING_TARGET_REGION and CROARING_UNTARGET_REGION must be +// *outside* of a namespace. +#define CROARING_TARGET_REGION(T) \ + _Pragma(STRINGIFY(clang attribute push(__attribute__((target(T))), \ + apply_to = function))) +#define CROARING_UNTARGET_REGION _Pragma("clang attribute pop") +#elif defined(__GNUC__) +// GCC is easier +#define CROARING_TARGET_REGION(T) \ + _Pragma("GCC push_options") _Pragma(STRINGIFY(GCC target(T))) +#define CROARING_UNTARGET_REGION _Pragma("GCC pop_options") +#endif // clang then gcc + +#endif // CROARING_IS_X64 + +// Default target region macros don't do anything. +#ifndef CROARING_TARGET_REGION +#define CROARING_TARGET_REGION(T) +#define CROARING_UNTARGET_REGION +#endif + +#define CROARING_TARGET_AVX2 \ + CROARING_TARGET_REGION("avx2,bmi,pclmul,lzcnt,popcnt") +#define CROARING_TARGET_AVX512 \ + CROARING_TARGET_REGION( \ + "avx2,bmi,bmi2,pclmul,lzcnt,popcnt,avx512f,avx512dq,avx512bw," \ + "avx512vbmi2,avx512bitalg,avx512vpopcntdq") +#define CROARING_UNTARGET_AVX2 CROARING_UNTARGET_REGION +#define CROARING_UNTARGET_AVX512 CROARING_UNTARGET_REGION + +#ifdef __AVX2__ +// No need for runtime dispatching. +// It is unnecessary and harmful to old clang to tag regions. +#undef CROARING_TARGET_AVX2 +#define CROARING_TARGET_AVX2 +#undef CROARING_UNTARGET_AVX2 +#define CROARING_UNTARGET_AVX2 +#endif + +#if defined(__AVX512F__) && defined(__AVX512DQ__) && defined(__AVX512BW__) && \ + defined(__AVX512VBMI2__) && defined(__AVX512BITALG__) && \ + defined(__AVX512VPOPCNTDQ__) +// No need for runtime dispatching. +// It is unnecessary and harmful to old clang to tag regions. +#undef CROARING_TARGET_AVX512 +#define CROARING_TARGET_AVX512 +#undef CROARING_UNTARGET_AVX512 +#define CROARING_UNTARGET_AVX512 +#endif + +// Allow unaligned memory access +#if defined(__GNUC__) || defined(__clang__) +#define ALLOW_UNALIGNED __attribute__((no_sanitize("alignment"))) +#else +#define ALLOW_UNALIGNED +#endif + +#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) +#define CROARING_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#elif defined(_WIN32) +#define CROARING_IS_BIG_ENDIAN 0 +#else +#if defined(__APPLE__) || \ + defined(__FreeBSD__) // defined __BYTE_ORDER__ && defined + // __ORDER_BIG_ENDIAN__ +#include <machine/endian.h> +#elif defined(sun) || \ + defined(__sun) // defined(__APPLE__) || defined(__FreeBSD__) +#error #include <sys/byteorder.h> +#else // defined(__APPLE__) || defined(__FreeBSD__) + +#ifdef __has_include +#if __has_include(<endian.h>) +#include <endian.h> +#endif //__has_include(<endian.h>) +#endif //__has_include + +#endif // defined(__APPLE__) || defined(__FreeBSD__) + +#ifndef !defined(__BYTE_ORDER__) || !defined(__ORDER_LITTLE_ENDIAN__) +#define CROARING_IS_BIG_ENDIAN 0 +#endif + +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define CROARING_IS_BIG_ENDIAN 0 +#else // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define CROARING_IS_BIG_ENDIAN 1 +#endif // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#endif + +// Host <-> big endian conversion. +#if CROARING_IS_BIG_ENDIAN +#define croaring_htobe64(x) (x) + +#elif defined(_WIN32) || defined(_WIN64) // CROARING_IS_BIG_ENDIAN +#include <stdlib.h> +#define croaring_htobe64(x) _byteswap_uint64(x) + +#elif defined(__APPLE__) // CROARING_IS_BIG_ENDIAN +#include <libkern/OSByteOrder.h> +#define croaring_htobe64(x) OSSwapInt64(x) + +#elif defined(__has_include) && \ + __has_include( \ + <byteswap.h>) && (defined(__linux__) || defined(__FreeBSD__)) // CROARING_IS_BIG_ENDIAN +#include <byteswap.h> +#if defined(__linux__) +#define croaring_htobe64(x) bswap_64(x) +#elif defined(__FreeBSD__) +#define croaring_htobe64(x) bswap64(x) +#else +#warning "Unknown platform, report as an error" +#endif + +#else // CROARING_IS_BIG_ENDIAN +// Gets compiled to bswap or equivalent on most compilers. +#define croaring_htobe64(x) \ + (((x & 0x00000000000000FFULL) << 56) | \ + ((x & 0x000000000000FF00ULL) << 40) | \ + ((x & 0x0000000000FF0000ULL) << 24) | \ + ((x & 0x00000000FF000000ULL) << 8) | ((x & 0x000000FF00000000ULL) >> 8) | \ + ((x & 0x0000FF0000000000ULL) >> 24) | \ + ((x & 0x00FF000000000000ULL) >> 40) | \ + ((x & 0xFF00000000000000ULL) >> 56)) +#endif // CROARING_IS_BIG_ENDIAN +#define croaring_be64toh(x) croaring_htobe64(x) +// End of host <-> big endian conversion. + +// Defines for the possible CROARING atomic implementations +#define CROARING_ATOMIC_IMPL_NONE 1 +#define CROARING_ATOMIC_IMPL_CPP 2 +#define CROARING_ATOMIC_IMPL_C 3 +#define CROARING_ATOMIC_IMPL_C_WINDOWS 4 + +// If the use has forced a specific implementation, use that, otherwise, +// figure out the best implementation we can use. +#if !defined(CROARING_ATOMIC_IMPL) +#if defined(__cplusplus) && __cplusplus >= 201103L +#ifdef __has_include +#if __has_include(<atomic>) +#define CROARING_ATOMIC_IMPL CROARING_ATOMIC_IMPL_CPP +#endif //__has_include(<atomic>) +#else + // We lack __has_include to check: +#define CROARING_ATOMIC_IMPL CROARING_ATOMIC_IMPL_CPP +#endif //__has_include +#elif __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_ATOMICS__) +#define CROARING_ATOMIC_IMPL CROARING_ATOMIC_IMPL_C +#elif CROARING_REGULAR_VISUAL_STUDIO + // https://www.technetworkhub.com/c11-atomics-in-visual-studio-2022-version-17/ +#define CROARING_ATOMIC_IMPL CROARING_ATOMIC_IMPL_C_WINDOWS +#endif +#endif // !defined(CROARING_ATOMIC_IMPL) + +#if CROARING_ATOMIC_IMPL == CROARING_ATOMIC_IMPL_C +#include <stdatomic.h> +typedef _Atomic(uint32_t) croaring_refcount_t; + +static inline void croaring_refcount_inc(croaring_refcount_t *val) { + // Increasing the reference counter can always be done with + // memory_order_relaxed: New references to an object can only be formed from + // an existing reference, and passing an existing reference from one thread + // to another must already provide any required synchronization. + atomic_fetch_add_explicit(val, 1, memory_order_relaxed); +} + +static inline bool croaring_refcount_dec(croaring_refcount_t *val) { + // It is important to enforce any possible access to the object in one + // thread (through an existing reference) to happen before deleting the + // object in a different thread. This is achieved by a "release" operation + // after dropping a reference (any access to the object through this + // reference must obviously happened before), and an "acquire" operation + // before deleting the object. + bool is_zero = atomic_fetch_sub_explicit(val, 1, memory_order_release) == 1; + if (is_zero) { + atomic_thread_fence(memory_order_acquire); + } + return is_zero; +} + +static inline uint32_t croaring_refcount_get(const croaring_refcount_t *val) { + return atomic_load_explicit(val, memory_order_relaxed); +} +#elif CROARING_ATOMIC_IMPL == CROARING_ATOMIC_IMPL_CPP +#include <atomic> +typedef std::atomic<uint32_t> croaring_refcount_t; + +static inline void croaring_refcount_inc(croaring_refcount_t *val) { + val->fetch_add(1, std::memory_order_relaxed); +} + +static inline bool croaring_refcount_dec(croaring_refcount_t *val) { + // See above comments on the c11 atomic implementation for memory ordering + bool is_zero = val->fetch_sub(1, std::memory_order_release) == 1; + if (is_zero) { + std::atomic_thread_fence(std::memory_order_acquire); + } + return is_zero; +} + +static inline uint32_t croaring_refcount_get(const croaring_refcount_t *val) { + return val->load(std::memory_order_relaxed); +} +#elif CROARING_ATOMIC_IMPL == CROARING_ATOMIC_IMPL_C_WINDOWS +#include <intrin.h> +#pragma intrinsic(_InterlockedIncrement) +#pragma intrinsic(_InterlockedDecrement) + +// _InterlockedIncrement and _InterlockedDecrement take a (signed) long, and +// overflow is defined to wrap, so we can pretend it is a uint32_t for our case +typedef volatile long croaring_refcount_t; + +static inline void croaring_refcount_inc(croaring_refcount_t *val) { + _InterlockedIncrement(val); +} + +static inline bool croaring_refcount_dec(croaring_refcount_t *val) { + return _InterlockedDecrement(val) == 0; +} + +static inline uint32_t croaring_refcount_get(const croaring_refcount_t *val) { + // Per + // https://learn.microsoft.com/en-us/windows/win32/sync/interlocked-variable-access + // > Simple reads and writes to properly-aligned 32-bit variables are atomic + // > operations. In other words, you will not end up with only one portion + // > of the variable updated; all bits are updated in an atomic fashion. + return *val; +} +#elif CROARING_ATOMIC_IMPL == CROARING_ATOMIC_IMPL_NONE +#include <assert.h> +typedef uint32_t croaring_refcount_t; + +static inline void croaring_refcount_inc(croaring_refcount_t *val) { + *val += 1; +} + +static inline bool croaring_refcount_dec(croaring_refcount_t *val) { + assert(*val > 0); + *val -= 1; + return val == 0; +} + +static inline uint32_t croaring_refcount_get(const croaring_refcount_t *val) { + return *val; +} +#else +#error "Unknown atomic implementation" +#endif + +#if defined(__GNUC__) || defined(__clang__) +#define CROARING_DEPRECATED __attribute__((deprecated)) +#else +#define CROARING_DEPRECATED +#endif // defined(__GNUC__) || defined(__clang__) + +// We need portability.h to be included first, +// but we also always want isadetection.h to be +// included (right after). +// See https://github.com/RoaringBitmap/CRoaring/issues/394 +// There is no scenario where we want portability.h to +// be included, but not isadetection.h: the latter is a +// strict requirement. +#include <roaring/isadetection.h> // include it last! +#endif /* INCLUDE_PORTABILITY_H_ */ diff --git a/contrib/libs/croaring/include/roaring/roaring.h b/contrib/libs/croaring/include/roaring/roaring.h new file mode 100644 index 000000000000..295bc3cb33a4 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/roaring.h @@ -0,0 +1,1132 @@ +/* + * An implementation of Roaring Bitmaps in C. + */ + +#ifndef ROARING_H +#define ROARING_H + +#include <stdbool.h> +#include <stddef.h> // for `size_t` +#include <stdint.h> + +#include <roaring/roaring_types.h> + +// Include other headers after roaring_types.h +#include <roaring/bitset/bitset.h> +#include <roaring/memory.h> +#include <roaring/portability.h> +#include <roaring/roaring_version.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace api { +#endif + +typedef struct roaring_bitmap_s { + roaring_array_t high_low_container; +} roaring_bitmap_t; + +/** + * Dynamically allocates a new bitmap (initially empty). + * Returns NULL if the allocation fails. + * Capacity is a performance hint for how many "containers" the data will need. + * Client is responsible for calling `roaring_bitmap_free()`. + */ +roaring_bitmap_t *roaring_bitmap_create_with_capacity(uint32_t cap); + +/** + * Dynamically allocates a new bitmap (initially empty). + * Returns NULL if the allocation fails. + * Client is responsible for calling `roaring_bitmap_free()`. + */ +inline roaring_bitmap_t *roaring_bitmap_create(void) { + return roaring_bitmap_create_with_capacity(0); +} + +/** + * Initialize a roaring bitmap structure in memory controlled by client. + * Capacity is a performance hint for how many "containers" the data will need. + * Can return false if auxiliary allocations fail when capacity greater than 0. + */ +bool roaring_bitmap_init_with_capacity(roaring_bitmap_t *r, uint32_t cap); + +/** + * Initialize a roaring bitmap structure in memory controlled by client. + * The bitmap will be in a "clear" state, with no auxiliary allocations. + * Since this performs no allocations, the function will not fail. + */ +inline void roaring_bitmap_init_cleared(roaring_bitmap_t *r) { + roaring_bitmap_init_with_capacity(r, 0); +} + +/** + * Add all the values between min (included) and max (excluded) that are at a + * distance k*step from min. + */ +roaring_bitmap_t *roaring_bitmap_from_range(uint64_t min, uint64_t max, + uint32_t step); + +/** + * Creates a new bitmap from a pointer of uint32_t integers + */ +roaring_bitmap_t *roaring_bitmap_of_ptr(size_t n_args, const uint32_t *vals); + +/* + * Whether you want to use copy-on-write. + * Saves memory and avoids copies, but needs more care in a threaded context. + * Most users should ignore this flag. + * + * Note: If you do turn this flag to 'true', enabling COW, then ensure that you + * do so for all of your bitmaps, since interactions between bitmaps with and + * without COW is unsafe. + */ +inline bool roaring_bitmap_get_copy_on_write(const roaring_bitmap_t *r) { + return r->high_low_container.flags & ROARING_FLAG_COW; +} +inline void roaring_bitmap_set_copy_on_write(roaring_bitmap_t *r, bool cow) { + if (cow) { + r->high_low_container.flags |= ROARING_FLAG_COW; + } else { + r->high_low_container.flags &= ~ROARING_FLAG_COW; + } +} + +roaring_bitmap_t *roaring_bitmap_add_offset(const roaring_bitmap_t *bm, + int64_t offset); +/** + * Describe the inner structure of the bitmap. + */ +void roaring_bitmap_printf_describe(const roaring_bitmap_t *r); + +/** + * Creates a new bitmap from a list of uint32_t integers + * + * This function is deprecated, use `roaring_bitmap_from` instead, which + * doesn't require the number of elements to be passed in. + * + * @see roaring_bitmap_from + */ +CROARING_DEPRECATED roaring_bitmap_t *roaring_bitmap_of(size_t n, ...); + +#ifdef __cplusplus +/** + * Creates a new bitmap which contains all values passed in as arguments. + * + * To create a bitmap from a variable number of arguments, use the + * `roaring_bitmap_of_ptr` function instead. + */ +// Use an immediately invoked closure, capturing by reference +// (in case __VA_ARGS__ refers to context outside the closure) +// Include a 0 at the beginning of the array to make the array length > 0 +// (zero sized arrays are not valid in standard c/c++) +#define roaring_bitmap_from(...) \ + [&]() { \ + const uint32_t roaring_bitmap_from_array[] = {0, __VA_ARGS__}; \ + return roaring_bitmap_of_ptr((sizeof(roaring_bitmap_from_array) / \ + sizeof(roaring_bitmap_from_array[0])) - \ + 1, \ + &roaring_bitmap_from_array[1]); \ + }() +#else +/** + * Creates a new bitmap which contains all values passed in as arguments. + * + * To create a bitmap from a variable number of arguments, use the + * `roaring_bitmap_of_ptr` function instead. + */ +// While __VA_ARGS__ occurs twice in expansion, one of the times is in a sizeof +// expression, which is an unevaluated context, so it's even safe in the case +// where expressions passed have side effects (roaring64_bitmap_from(my_func(), +// ++i)) +// Include a 0 at the beginning of the array to make the array length > 0 +// (zero sized arrays are not valid in standard c/c++) +#define roaring_bitmap_from(...) \ + roaring_bitmap_of_ptr( \ + (sizeof((const uint32_t[]){0, __VA_ARGS__}) / sizeof(uint32_t)) - 1, \ + &((const uint32_t[]){0, __VA_ARGS__})[1]) +#endif + +/** + * Copies a bitmap (this does memory allocation). + * The caller is responsible for memory management. + */ +roaring_bitmap_t *roaring_bitmap_copy(const roaring_bitmap_t *r); + +/** + * Copies a bitmap from src to dest. It is assumed that the pointer dest + * is to an already allocated bitmap. The content of the dest bitmap is + * freed/deleted. + * + * It might be preferable and simpler to call roaring_bitmap_copy except + * that roaring_bitmap_overwrite can save on memory allocations. + * + * Returns true if successful, or false if there was an error. On failure, + * the dest bitmap is left in a valid, empty state (even if it was not empty + * before). + */ +bool roaring_bitmap_overwrite(roaring_bitmap_t *dest, + const roaring_bitmap_t *src); + +/** + * Print the content of the bitmap. + */ +void roaring_bitmap_printf(const roaring_bitmap_t *r); + +/** + * Computes the intersection between two bitmaps and returns new bitmap. The + * caller is responsible for memory management. + * + * Performance hint: if you are computing the intersection between several + * bitmaps, two-by-two, it is best to start with the smallest bitmap. + * You may also rely on roaring_bitmap_and_inplace to avoid creating + * many temporary bitmaps. + */ +roaring_bitmap_t *roaring_bitmap_and(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Computes the size of the intersection between two bitmaps. + */ +uint64_t roaring_bitmap_and_cardinality(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Check whether two bitmaps intersect. + */ +bool roaring_bitmap_intersect(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Check whether a bitmap and an open range intersect. + */ +bool roaring_bitmap_intersect_with_range(const roaring_bitmap_t *bm, uint64_t x, + uint64_t y); + +/** + * Computes the Jaccard index between two bitmaps. (Also known as the Tanimoto + * distance, or the Jaccard similarity coefficient) + * + * The Jaccard index is undefined if both bitmaps are empty. + */ +double roaring_bitmap_jaccard_index(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Computes the size of the union between two bitmaps. + */ +uint64_t roaring_bitmap_or_cardinality(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Computes the size of the difference (andnot) between two bitmaps. + */ +uint64_t roaring_bitmap_andnot_cardinality(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Computes the size of the symmetric difference (xor) between two bitmaps. + */ +uint64_t roaring_bitmap_xor_cardinality(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Inplace version of `roaring_bitmap_and()`, modifies r1 + * r1 == r2 is allowed. + * + * Performance hint: if you are computing the intersection between several + * bitmaps, two-by-two, it is best to start with the smallest bitmap. + */ +void roaring_bitmap_and_inplace(roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Computes the union between two bitmaps and returns new bitmap. The caller is + * responsible for memory management. + */ +roaring_bitmap_t *roaring_bitmap_or(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Inplace version of `roaring_bitmap_or(), modifies r1. + * TODO: decide whether r1 == r2 ok + */ +void roaring_bitmap_or_inplace(roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Compute the union of 'number' bitmaps. + * Caller is responsible for freeing the result. + * See also `roaring_bitmap_or_many_heap()` + */ +roaring_bitmap_t *roaring_bitmap_or_many(size_t number, + const roaring_bitmap_t **rs); + +/** + * Compute the union of 'number' bitmaps using a heap. This can sometimes be + * faster than `roaring_bitmap_or_many() which uses a naive algorithm. + * Caller is responsible for freeing the result. + */ +roaring_bitmap_t *roaring_bitmap_or_many_heap(uint32_t number, + const roaring_bitmap_t **rs); + +/** + * Computes the symmetric difference (xor) between two bitmaps + * and returns new bitmap. The caller is responsible for memory management. + */ +roaring_bitmap_t *roaring_bitmap_xor(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Inplace version of roaring_bitmap_xor, modifies r1, r1 != r2. + */ +void roaring_bitmap_xor_inplace(roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Compute the xor of 'number' bitmaps. + * Caller is responsible for freeing the result. + */ +roaring_bitmap_t *roaring_bitmap_xor_many(size_t number, + const roaring_bitmap_t **rs); + +/** + * Computes the difference (andnot) between two bitmaps and returns new bitmap. + * Caller is responsible for freeing the result. + */ +roaring_bitmap_t *roaring_bitmap_andnot(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Inplace version of roaring_bitmap_andnot, modifies r1, r1 != r2. + */ +void roaring_bitmap_andnot_inplace(roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * TODO: consider implementing: + * + * "Compute the xor of 'number' bitmaps using a heap. This can sometimes be + * faster than roaring_bitmap_xor_many which uses a naive algorithm. Caller is + * responsible for freeing the result."" + * + * roaring_bitmap_t *roaring_bitmap_xor_many_heap(uint32_t number, + * const roaring_bitmap_t **rs); + */ + +/** + * Frees the memory. + */ +void roaring_bitmap_free(const roaring_bitmap_t *r); + +/** + * A bit of context usable with `roaring_bitmap_*_bulk()` functions + * + * Should be initialized with `{0}` (or `memset()` to all zeros). + * Callers should treat it as an opaque type. + * + * A context may only be used with a single bitmap + * (unless re-initialized to zero), and any modification to a bitmap + * (other than modifications performed with `_bulk()` functions with the context + * passed) will invalidate any contexts associated with that bitmap. + */ +typedef struct roaring_bulk_context_s { + ROARING_CONTAINER_T *container; + int idx; + uint16_t key; + uint8_t typecode; +} roaring_bulk_context_t; + +/** + * Add an item, using context from a previous insert for speed optimization. + * + * `context` will be used to store information between calls to make bulk + * operations faster. `*context` should be zero-initialized before the first + * call to this function. + * + * Modifying the bitmap in any way (other than `-bulk` suffixed functions) + * will invalidate the stored context, calling this function with a non-zero + * context after doing any modification invokes undefined behavior. + * + * In order to exploit this optimization, the caller should call this function + * with values with the same "key" (high 16 bits of the value) consecutively. + */ +void roaring_bitmap_add_bulk(roaring_bitmap_t *r, + roaring_bulk_context_t *context, uint32_t val); + +/** + * Add value n_args from pointer vals, faster than repeatedly calling + * `roaring_bitmap_add()` + * + * In order to exploit this optimization, the caller should attempt to keep + * values with the same "key" (high 16 bits of the value) as consecutive + * elements in `vals` + */ +void roaring_bitmap_add_many(roaring_bitmap_t *r, size_t n_args, + const uint32_t *vals); + +/** + * Add value x + */ +void roaring_bitmap_add(roaring_bitmap_t *r, uint32_t x); + +/** + * Add value x + * Returns true if a new value was added, false if the value already existed. + */ +bool roaring_bitmap_add_checked(roaring_bitmap_t *r, uint32_t x); + +/** + * Add all values in range [min, max] + */ +void roaring_bitmap_add_range_closed(roaring_bitmap_t *r, uint32_t min, + uint32_t max); + +/** + * Add all values in range [min, max) + */ +inline void roaring_bitmap_add_range(roaring_bitmap_t *r, uint64_t min, + uint64_t max) { + if (max <= min) return; + roaring_bitmap_add_range_closed(r, (uint32_t)min, (uint32_t)(max - 1)); +} + +/** + * Remove value x + */ +void roaring_bitmap_remove(roaring_bitmap_t *r, uint32_t x); + +/** + * Remove all values in range [min, max] + */ +void roaring_bitmap_remove_range_closed(roaring_bitmap_t *r, uint32_t min, + uint32_t max); + +/** + * Remove all values in range [min, max) + */ +inline void roaring_bitmap_remove_range(roaring_bitmap_t *r, uint64_t min, + uint64_t max) { + if (max <= min) return; + roaring_bitmap_remove_range_closed(r, (uint32_t)min, (uint32_t)(max - 1)); +} + +/** + * Remove multiple values + */ +void roaring_bitmap_remove_many(roaring_bitmap_t *r, size_t n_args, + const uint32_t *vals); + +/** + * Remove value x + * Returns true if a new value was removed, false if the value was not existing. + */ +bool roaring_bitmap_remove_checked(roaring_bitmap_t *r, uint32_t x); + +/** + * Check if value is present + */ +bool roaring_bitmap_contains(const roaring_bitmap_t *r, uint32_t val); + +/** + * Check whether a range of values from range_start (included) + * to range_end (excluded) is present + */ +bool roaring_bitmap_contains_range(const roaring_bitmap_t *r, + uint64_t range_start, uint64_t range_end); + +/** + * Check if an items is present, using context from a previous insert or search + * for speed optimization. + * + * `context` will be used to store information between calls to make bulk + * operations faster. `*context` should be zero-initialized before the first + * call to this function. + * + * Modifying the bitmap in any way (other than `-bulk` suffixed functions) + * will invalidate the stored context, calling this function with a non-zero + * context after doing any modification invokes undefined behavior. + * + * In order to exploit this optimization, the caller should call this function + * with values with the same "key" (high 16 bits of the value) consecutively. + */ +bool roaring_bitmap_contains_bulk(const roaring_bitmap_t *r, + roaring_bulk_context_t *context, + uint32_t val); + +/** + * Get the cardinality of the bitmap (number of elements). + */ +uint64_t roaring_bitmap_get_cardinality(const roaring_bitmap_t *r); + +/** + * Returns the number of elements in the range [range_start, range_end). + */ +uint64_t roaring_bitmap_range_cardinality(const roaring_bitmap_t *r, + uint64_t range_start, + uint64_t range_end); + +/** + * Returns true if the bitmap is empty (cardinality is zero). + */ +bool roaring_bitmap_is_empty(const roaring_bitmap_t *r); + +/** + * Empties the bitmap. It will have no auxiliary allocations (so if the bitmap + * was initialized in client memory via roaring_bitmap_init(), then a call to + * roaring_bitmap_clear() would be enough to "free" it) + */ +void roaring_bitmap_clear(roaring_bitmap_t *r); + +/** + * Convert the bitmap to a sorted array, output in `ans`. + * + * Caller is responsible to ensure that there is enough memory allocated, e.g. + * + * ans = malloc(roaring_bitmap_get_cardinality(bitmap) * sizeof(uint32_t)); + */ +void roaring_bitmap_to_uint32_array(const roaring_bitmap_t *r, uint32_t *ans); + +/** + * Store the bitmap to a bitset. This can be useful for people + * who need the performance and simplicity of a standard bitset. + * We assume that the input bitset is originally empty (does not + * have any set bit). + * + * bitset_t * out = bitset_create(); + * // if the bitset has content in it, call "bitset_clear(out)" + * bool success = roaring_bitmap_to_bitset(mybitmap, out); + * // on failure, success will be false. + * // You can then query the bitset: + * bool is_present = bitset_get(out, 10011 ); + * // you must free the memory: + * bitset_free(out); + * + */ +bool roaring_bitmap_to_bitset(const roaring_bitmap_t *r, bitset_t *bitset); + +/** + * Convert the bitmap to a sorted array from `offset` by `limit`, output in + * `ans`. + * + * Caller is responsible to ensure that there is enough memory allocated, e.g. + * + * ans = malloc(roaring_bitmap_get_cardinality(limit) * sizeof(uint32_t)); + * + * Return false in case of failure (e.g., insufficient memory) + */ +bool roaring_bitmap_range_uint32_array(const roaring_bitmap_t *r, size_t offset, + size_t limit, uint32_t *ans); + +/** + * Remove run-length encoding even when it is more space efficient. + * Return whether a change was applied. + */ +bool roaring_bitmap_remove_run_compression(roaring_bitmap_t *r); + +/** + * Convert array and bitmap containers to run containers when it is more + * efficient; also convert from run containers when more space efficient. + * + * Returns true if the result has at least one run container. + * Additional savings might be possible by calling `shrinkToFit()`. + */ +bool roaring_bitmap_run_optimize(roaring_bitmap_t *r); + +/** + * If needed, reallocate memory to shrink the memory usage. + * Returns the number of bytes saved. + */ +size_t roaring_bitmap_shrink_to_fit(roaring_bitmap_t *r); + +/** + * Write the bitmap to an output pointer, this output buffer should refer to + * at least `roaring_bitmap_size_in_bytes(r)` allocated bytes. + * + * See `roaring_bitmap_portable_serialize()` if you want a format that's + * compatible with Java and Go implementations. This format can sometimes be + * more space efficient than the portable form, e.g. when the data is sparse. + * + * Returns how many bytes written, should be `roaring_bitmap_size_in_bytes(r)`. + * + * This function is endian-sensitive. If you have a big-endian system (e.g., a + * mainframe IBM s390x), the data format is going to be big-endian and not + * compatible with little-endian systems. + */ +size_t roaring_bitmap_serialize(const roaring_bitmap_t *r, char *buf); + +/** + * Use with `roaring_bitmap_serialize()`. + * + * (See `roaring_bitmap_portable_deserialize()` if you want a format that's + * compatible with Java and Go implementations). + * + * This function is endian-sensitive. If you have a big-endian system (e.g., a + * mainframe IBM s390x), the data format is going to be big-endian and not + * compatible with little-endian systems. + */ +roaring_bitmap_t *roaring_bitmap_deserialize(const void *buf); + +/** + * Use with `roaring_bitmap_serialize()`. + * + * (See `roaring_bitmap_portable_deserialize_safe()` if you want a format that's + * compatible with Java and Go implementations). + * + * This function is endian-sensitive. If you have a big-endian system (e.g., a + * mainframe IBM s390x), the data format is going to be big-endian and not + * compatible with little-endian systems. + * + * The difference with `roaring_bitmap_deserialize()` is that this function + * checks that the input buffer is a valid bitmap. If the buffer is too small, + * NULL is returned. + */ +roaring_bitmap_t *roaring_bitmap_deserialize_safe(const void *buf, + size_t maxbytes); + +/** + * How many bytes are required to serialize this bitmap (NOT compatible + * with Java and Go versions) + */ +size_t roaring_bitmap_size_in_bytes(const roaring_bitmap_t *r); + +/** + * Read bitmap from a serialized buffer. + * In case of failure, NULL is returned. + * + * This function is unsafe in the sense that if there is no valid serialized + * bitmap at the pointer, then many bytes could be read, possibly causing a + * buffer overflow. See also roaring_bitmap_portable_deserialize_safe(). + * + * This is meant to be compatible with the Java and Go versions: + * https://github.com/RoaringBitmap/RoaringFormatSpec + * + * This function is endian-sensitive. If you have a big-endian system (e.g., a + * mainframe IBM s390x), the data format is going to be big-endian and not + * compatible with little-endian systems. + */ +roaring_bitmap_t *roaring_bitmap_portable_deserialize(const char *buf); + +/** + * Read bitmap from a serialized buffer safely (reading up to maxbytes). + * In case of failure, NULL is returned. + * + * This is meant to be compatible with the Java and Go versions: + * https://github.com/RoaringBitmap/RoaringFormatSpec + * + * The function itself is safe in the sense that it will not cause buffer + * overflows. However, for correct operations, it is assumed that the bitmap + * read was once serialized from a valid bitmap (i.e., it follows the format + * specification). If you provided an incorrect input (garbage), then the bitmap + * read may not be in a valid state and following operations may not lead to + * sensible results. In particular, the serialized array containers need to be + * in sorted order, and the run containers should be in sorted non-overlapping + * order. This is is guaranteed to happen when serializing an existing bitmap, + * but not for random inputs. + * + * You may use roaring_bitmap_internal_validate to check the validity of the + * bitmap prior to using it. You may also use other strategies to check for + * corrupted inputs (e.g., checksums). + * + * This function is endian-sensitive. If you have a big-endian system (e.g., a + * mainframe IBM s390x), the data format is going to be big-endian and not + * compatible with little-endian systems. + */ +roaring_bitmap_t *roaring_bitmap_portable_deserialize_safe(const char *buf, + size_t maxbytes); + +/** + * Read bitmap from a serialized buffer. + * In case of failure, NULL is returned. + * + * Bitmap returned by this function can be used in all readonly contexts. + * Bitmap must be freed as usual, by calling roaring_bitmap_free(). + * Underlying buffer must not be freed or modified while it backs any bitmaps. + * + * The function is unsafe in the following ways: + * 1) It may execute unaligned memory accesses. + * 2) A buffer overflow may occur if buf does not point to a valid serialized + * bitmap. + * + * This is meant to be compatible with the Java and Go versions: + * https://github.com/RoaringBitmap/RoaringFormatSpec + * + * This function is endian-sensitive. If you have a big-endian system (e.g., a + * mainframe IBM s390x), the data format is going to be big-endian and not + * compatible with little-endian systems. + */ +roaring_bitmap_t *roaring_bitmap_portable_deserialize_frozen(const char *buf); + +/** + * Check how many bytes would be read (up to maxbytes) at this pointer if there + * is a bitmap, returns zero if there is no valid bitmap. + * + * This is meant to be compatible with the Java and Go versions: + * https://github.com/RoaringBitmap/RoaringFormatSpec + */ +size_t roaring_bitmap_portable_deserialize_size(const char *buf, + size_t maxbytes); + +/** + * How many bytes are required to serialize this bitmap. + * + * This is meant to be compatible with the Java and Go versions: + * https://github.com/RoaringBitmap/RoaringFormatSpec + */ +size_t roaring_bitmap_portable_size_in_bytes(const roaring_bitmap_t *r); + +/** + * Write a bitmap to a char buffer. The output buffer should refer to at least + * `roaring_bitmap_portable_size_in_bytes(r)` bytes of allocated memory. + * + * Returns how many bytes were written which should match + * `roaring_bitmap_portable_size_in_bytes(r)`. + * + * This is meant to be compatible with the Java and Go versions: + * https://github.com/RoaringBitmap/RoaringFormatSpec + * + * This function is endian-sensitive. If you have a big-endian system (e.g., a + * mainframe IBM s390x), the data format is going to be big-endian and not + * compatible with little-endian systems. + */ +size_t roaring_bitmap_portable_serialize(const roaring_bitmap_t *r, char *buf); + +/* + * "Frozen" serialization format imitates memory layout of roaring_bitmap_t. + * Deserialized bitmap is a constant view of the underlying buffer. + * This significantly reduces amount of allocations and copying required during + * deserialization. + * It can be used with memory mapped files. + * Example can be found in benchmarks/frozen_benchmark.c + * + * [#####] const roaring_bitmap_t * + * | | | + * +----+ | +-+ + * | | | + * [#####################################] underlying buffer + * + * Note that because frozen serialization format imitates C memory layout + * of roaring_bitmap_t, it is not fixed. It is different on big/little endian + * platforms and can be changed in future. + */ + +/** + * Returns number of bytes required to serialize bitmap using frozen format. + */ +size_t roaring_bitmap_frozen_size_in_bytes(const roaring_bitmap_t *r); + +/** + * Serializes bitmap using frozen format. + * Buffer size must be at least roaring_bitmap_frozen_size_in_bytes(). + * + * This function is endian-sensitive. If you have a big-endian system (e.g., a + * mainframe IBM s390x), the data format is going to be big-endian and not + * compatible with little-endian systems. + */ +void roaring_bitmap_frozen_serialize(const roaring_bitmap_t *r, char *buf); + +/** + * Creates constant bitmap that is a view of a given buffer. + * Buffer data should have been written by `roaring_bitmap_frozen_serialize()` + * Its beginning must also be aligned by 32 bytes. + * Length must be equal exactly to `roaring_bitmap_frozen_size_in_bytes()`. + * In case of failure, NULL is returned. + * + * Bitmap returned by this function can be used in all readonly contexts. + * Bitmap must be freed as usual, by calling roaring_bitmap_free(). + * Underlying buffer must not be freed or modified while it backs any bitmaps. + * + * This function is endian-sensitive. If you have a big-endian system (e.g., a + * mainframe IBM s390x), the data format is going to be big-endian and not + * compatible with little-endian systems. + */ +const roaring_bitmap_t *roaring_bitmap_frozen_view(const char *buf, + size_t length); + +/** + * Iterate over the bitmap elements. The function iterator is called once for + * all the values with ptr (can be NULL) as the second parameter of each call. + * + * `roaring_iterator` is simply a pointer to a function that returns bool + * (true means that the iteration should continue while false means that it + * should stop), and takes (uint32_t,void*) as inputs. + * + * Returns true if the roaring_iterator returned true throughout (so that all + * data points were necessarily visited). + * + * Iteration is ordered: from the smallest to the largest elements. + */ +bool roaring_iterate(const roaring_bitmap_t *r, roaring_iterator iterator, + void *ptr); + +bool roaring_iterate64(const roaring_bitmap_t *r, roaring_iterator64 iterator, + uint64_t high_bits, void *ptr); + +/** + * Return true if the two bitmaps contain the same elements. + */ +bool roaring_bitmap_equals(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Return true if all the elements of r1 are also in r2. + */ +bool roaring_bitmap_is_subset(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Return true if all the elements of r1 are also in r2, and r2 is strictly + * greater than r1. + */ +bool roaring_bitmap_is_strict_subset(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * (For expert users who seek high performance.) + * + * Computes the union between two bitmaps and returns new bitmap. The caller is + * responsible for memory management. + * + * The lazy version defers some computations such as the maintenance of the + * cardinality counts. Thus you must call `roaring_bitmap_repair_after_lazy()` + * after executing "lazy" computations. + * + * It is safe to repeatedly call roaring_bitmap_lazy_or_inplace on the result. + * + * `bitsetconversion` is a flag which determines whether container-container + * operations force a bitset conversion. + */ +roaring_bitmap_t *roaring_bitmap_lazy_or(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2, + const bool bitsetconversion); + +/** + * (For expert users who seek high performance.) + * + * Inplace version of roaring_bitmap_lazy_or, modifies r1. + * + * `bitsetconversion` is a flag which determines whether container-container + * operations force a bitset conversion. + */ +void roaring_bitmap_lazy_or_inplace(roaring_bitmap_t *r1, + const roaring_bitmap_t *r2, + const bool bitsetconversion); + +/** + * (For expert users who seek high performance.) + * + * Execute maintenance on a bitmap created from `roaring_bitmap_lazy_or()` + * or modified with `roaring_bitmap_lazy_or_inplace()`. + */ +void roaring_bitmap_repair_after_lazy(roaring_bitmap_t *r1); + +/** + * Computes the symmetric difference between two bitmaps and returns new bitmap. + * The caller is responsible for memory management. + * + * The lazy version defers some computations such as the maintenance of the + * cardinality counts. Thus you must call `roaring_bitmap_repair_after_lazy()` + * after executing "lazy" computations. + * + * It is safe to repeatedly call `roaring_bitmap_lazy_xor_inplace()` on + * the result. + */ +roaring_bitmap_t *roaring_bitmap_lazy_xor(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * (For expert users who seek high performance.) + * + * Inplace version of roaring_bitmap_lazy_xor, modifies r1. r1 != r2 + */ +void roaring_bitmap_lazy_xor_inplace(roaring_bitmap_t *r1, + const roaring_bitmap_t *r2); + +/** + * Compute the negation of the bitmap in the interval [range_start, range_end). + * The number of negated values is range_end - range_start. + * Areas outside the range are passed through unchanged. + */ +roaring_bitmap_t *roaring_bitmap_flip(const roaring_bitmap_t *r1, + uint64_t range_start, uint64_t range_end); + +/** + * compute (in place) the negation of the roaring bitmap within a specified + * interval: [range_start, range_end). The number of negated values is + * range_end - range_start. + * Areas outside the range are passed through unchanged. + */ +void roaring_bitmap_flip_inplace(roaring_bitmap_t *r1, uint64_t range_start, + uint64_t range_end); + +/** + * Selects the element at index 'rank' where the smallest element is at index 0. + * If the size of the roaring bitmap is strictly greater than rank, then this + * function returns true and sets element to the element of given rank. + * Otherwise, it returns false. + */ +bool roaring_bitmap_select(const roaring_bitmap_t *r, uint32_t rank, + uint32_t *element); + +/** + * roaring_bitmap_rank returns the number of integers that are smaller or equal + * to x. Thus if x is the first element, this function will return 1. If + * x is smaller than the smallest element, this function will return 0. + * + * The indexing convention differs between roaring_bitmap_select and + * roaring_bitmap_rank: roaring_bitmap_select refers to the smallest value + * as having index 0, whereas roaring_bitmap_rank returns 1 when ranking + * the smallest value. + */ +uint64_t roaring_bitmap_rank(const roaring_bitmap_t *r, uint32_t x); + +/** + * roaring_bitmap_rank_many is an `Bulk` version of `roaring_bitmap_rank` + * it puts rank value of each element in `[begin .. end)` to `ans[]` + * + * the values in `[begin .. end)` must be sorted in Ascending order; + * Caller is responsible to ensure that there is enough memory allocated, e.g. + * + * ans = malloc((end-begin) * sizeof(uint64_t)); + */ +void roaring_bitmap_rank_many(const roaring_bitmap_t *r, const uint32_t *begin, + const uint32_t *end, uint64_t *ans); + +/** + * Returns the index of x in the given roaring bitmap. + * If the roaring bitmap doesn't contain x , this function will return -1. + * The difference with rank function is that this function will return -1 when x + * is not the element of roaring bitmap, but the rank function will return a + * non-negative number. + */ +int64_t roaring_bitmap_get_index(const roaring_bitmap_t *r, uint32_t x); + +/** + * Returns the smallest value in the set, or UINT32_MAX if the set is empty. + */ +uint32_t roaring_bitmap_minimum(const roaring_bitmap_t *r); + +/** + * Returns the greatest value in the set, or 0 if the set is empty. + */ +uint32_t roaring_bitmap_maximum(const roaring_bitmap_t *r); + +/** + * (For advanced users.) + * + * Collect statistics about the bitmap, see roaring_types.h for + * a description of roaring_statistics_t + */ +void roaring_bitmap_statistics(const roaring_bitmap_t *r, + roaring_statistics_t *stat); + +/** + * Perform internal consistency checks. Returns true if the bitmap is + * consistent. It may be useful to call this after deserializing bitmaps from + * untrusted sources. If roaring_bitmap_internal_validate returns true, then the + * bitmap should be consistent and can be trusted not to cause crashes or memory + * corruption. + * + * Note that some operations intentionally leave bitmaps in an inconsistent + * state temporarily, for example, `roaring_bitmap_lazy_*` functions, until + * `roaring_bitmap_repair_after_lazy` is called. + * + * If reason is non-null, it will be set to a string describing the first + * inconsistency found if any. + */ +bool roaring_bitmap_internal_validate(const roaring_bitmap_t *r, + const char **reason); + +/********************* +* What follows is code use to iterate through values in a roaring bitmap + +roaring_bitmap_t *r =... +roaring_uint32_iterator_t i; +roaring_iterator_create(r, &i); +while(i.has_value) { + printf("value = %d\n", i.current_value); + roaring_uint32_iterator_advance(&i); +} + +Obviously, if you modify the underlying bitmap, the iterator +becomes invalid. So don't. +*/ + +/** + * A struct used to keep iterator state. Users should only access + * `current_value` and `has_value`, the rest of the type should be treated as + * opaque. + */ +typedef struct roaring_uint32_iterator_s { + const roaring_bitmap_t *parent; // Owner + const ROARING_CONTAINER_T *container; // Current container + uint8_t typecode; // Typecode of current container + int32_t container_index; // Current container index + uint32_t highbits; // High 16 bits of the current value + roaring_container_iterator_t container_it; + + uint32_t current_value; + bool has_value; +} roaring_uint32_iterator_t; + +/** + * Initialize an iterator object that can be used to iterate through the values. + * If there is a value, then this iterator points to the first value and + * `it->has_value` is true. The value is in `it->current_value`. + */ +void roaring_iterator_init(const roaring_bitmap_t *r, + roaring_uint32_iterator_t *newit); + +/** DEPRECATED, use `roaring_iterator_init`. */ +CROARING_DEPRECATED static inline void roaring_init_iterator( + const roaring_bitmap_t *r, roaring_uint32_iterator_t *newit) { + roaring_iterator_init(r, newit); +} + +/** + * Initialize an iterator object that can be used to iterate through the values. + * If there is a value, then this iterator points to the last value and + * `it->has_value` is true. The value is in `it->current_value`. + */ +void roaring_iterator_init_last(const roaring_bitmap_t *r, + roaring_uint32_iterator_t *newit); + +/** DEPRECATED, use `roaring_iterator_init_last`. */ +CROARING_DEPRECATED static inline void roaring_init_iterator_last( + const roaring_bitmap_t *r, roaring_uint32_iterator_t *newit) { + roaring_iterator_init_last(r, newit); +} + +/** + * Create an iterator object that can be used to iterate through the values. + * Caller is responsible for calling `roaring_free_iterator()`. + * + * The iterator is initialized (this function calls `roaring_iterator_init()`) + * If there is a value, then this iterator points to the first value and + * `it->has_value` is true. The value is in `it->current_value`. + */ +roaring_uint32_iterator_t *roaring_iterator_create(const roaring_bitmap_t *r); + +/** DEPRECATED, use `roaring_iterator_create`. */ +CROARING_DEPRECATED static inline roaring_uint32_iterator_t * +roaring_create_iterator(const roaring_bitmap_t *r) { + return roaring_iterator_create(r); +} + +/** + * Advance the iterator. If there is a new value, then `it->has_value` is true. + * The new value is in `it->current_value`. Values are traversed in increasing + * orders. For convenience, returns `it->has_value`. + * + * Once `it->has_value` is false, `roaring_uint32_iterator_advance` should not + * be called on the iterator again. Calling `roaring_uint32_iterator_previous` + * is allowed. + */ +bool roaring_uint32_iterator_advance(roaring_uint32_iterator_t *it); + +/** DEPRECATED, use `roaring_uint32_iterator_advance`. */ +CROARING_DEPRECATED static inline bool roaring_advance_uint32_iterator( + roaring_uint32_iterator_t *it) { + return roaring_uint32_iterator_advance(it); +} + +/** + * Decrement the iterator. If there's a new value, then `it->has_value` is true. + * The new value is in `it->current_value`. Values are traversed in decreasing + * order. For convenience, returns `it->has_value`. + * + * Once `it->has_value` is false, `roaring_uint32_iterator_previous` should not + * be called on the iterator again. Calling `roaring_uint32_iterator_advance` is + * allowed. + */ +bool roaring_uint32_iterator_previous(roaring_uint32_iterator_t *it); + +/** DEPRECATED, use `roaring_uint32_iterator_previous`. */ +CROARING_DEPRECATED static inline bool roaring_previous_uint32_iterator( + roaring_uint32_iterator_t *it) { + return roaring_uint32_iterator_previous(it); +} + +/** + * Move the iterator to the first value >= `val`. If there is a such a value, + * then `it->has_value` is true. The new value is in `it->current_value`. + * For convenience, returns `it->has_value`. + */ +bool roaring_uint32_iterator_move_equalorlarger(roaring_uint32_iterator_t *it, + uint32_t val); + +/** DEPRECATED, use `roaring_uint32_iterator_move_equalorlarger`. */ +CROARING_DEPRECATED static inline bool +roaring_move_uint32_iterator_equalorlarger(roaring_uint32_iterator_t *it, + uint32_t val) { + return roaring_uint32_iterator_move_equalorlarger(it, val); +} + +/** + * Creates a copy of an iterator. + * Caller must free it. + */ +roaring_uint32_iterator_t *roaring_uint32_iterator_copy( + const roaring_uint32_iterator_t *it); + +/** DEPRECATED, use `roaring_uint32_iterator_copy`. */ +CROARING_DEPRECATED static inline roaring_uint32_iterator_t * +roaring_copy_uint32_iterator(const roaring_uint32_iterator_t *it) { + return roaring_uint32_iterator_copy(it); +} + +/** + * Free memory following `roaring_iterator_create()` + */ +void roaring_uint32_iterator_free(roaring_uint32_iterator_t *it); + +/** DEPRECATED, use `roaring_uint32_iterator_free`. */ +CROARING_DEPRECATED static inline void roaring_free_uint32_iterator( + roaring_uint32_iterator_t *it) { + roaring_uint32_iterator_free(it); +} + +/* + * Reads next ${count} values from iterator into user-supplied ${buf}. + * Returns the number of read elements. + * This number can be smaller than ${count}, which means that iterator is + * drained. + * + * This function satisfies semantics of iteration and can be used together with + * other iterator functions. + * - first value is copied from ${it}->current_value + * - after function returns, iterator is positioned at the next element + */ +uint32_t roaring_uint32_iterator_read(roaring_uint32_iterator_t *it, + uint32_t *buf, uint32_t count); + +/** DEPRECATED, use `roaring_uint32_iterator_read`. */ +CROARING_DEPRECATED static inline uint32_t roaring_read_uint32_iterator( + roaring_uint32_iterator_t *it, uint32_t *buf, uint32_t count) { + return roaring_uint32_iterator_read(it, buf, count); +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace api { +#endif + +#endif /* ROARING_H */ + +#ifdef __cplusplus +/** + * Best practices for C++ headers is to avoid polluting global scope. + * But for C compatibility when just `roaring.h` is included building as + * C++, default to global access for the C public API. + * + * BUT when `roaring.hh` is included instead, it sets this flag. That way + * explicit namespacing must be used to get the C functions. + * + * This is outside the include guard so that if you include BOTH headers, + * the order won't matter; you still get the global definitions. + */ +#if !defined(ROARING_API_NOT_IN_GLOBAL_NAMESPACE) +using namespace ::roaring::api; +#endif +#endif diff --git a/contrib/libs/croaring/include/roaring/roaring64.h b/contrib/libs/croaring/include/roaring/roaring64.h new file mode 100644 index 000000000000..cd73ba604a01 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/roaring64.h @@ -0,0 +1,657 @@ +#ifndef ROARING64_H +#define ROARING64_H + +#include <stdbool.h> +#include <stddef.h> +#include <stdint.h> + +#include <roaring/memory.h> +#include <roaring/portability.h> +#include <roaring/roaring_types.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace api { +#endif + +typedef struct roaring64_bitmap_s roaring64_bitmap_t; +typedef struct roaring64_leaf_s roaring64_leaf_t; +typedef struct roaring64_iterator_s roaring64_iterator_t; + +/** + * A bit of context usable with `roaring64_bitmap_*_bulk()` functions. + * + * Should be initialized with `{0}` (or `memset()` to all zeros). + * Callers should treat it as an opaque type. + * + * A context may only be used with a single bitmap (unless re-initialized to + * zero), and any modification to a bitmap (other than modifications performed + * with `_bulk()` functions with the context passed) will invalidate any + * contexts associated with that bitmap. + */ +typedef struct roaring64_bulk_context_s { + uint8_t high_bytes[6]; + roaring64_leaf_t *leaf; +} roaring64_bulk_context_t; + +/** + * Dynamically allocates a new bitmap (initially empty). + * Client is responsible for calling `roaring64_bitmap_free()`. + */ +roaring64_bitmap_t *roaring64_bitmap_create(void); +void roaring64_bitmap_free(roaring64_bitmap_t *r); + +/** + * Returns a copy of a bitmap. + */ +roaring64_bitmap_t *roaring64_bitmap_copy(const roaring64_bitmap_t *r); + +/** + * Creates a new bitmap of a pointer to N 64-bit integers. + */ +roaring64_bitmap_t *roaring64_bitmap_of_ptr(size_t n_args, + const uint64_t *vals); + +#ifdef __cplusplus +/** + * Creates a new bitmap which contains all values passed in as arguments. + * + * To create a bitmap from a variable number of arguments, use the + * `roaring64_bitmap_of_ptr` function instead. + */ +// Use an immediately invoked closure, capturing by reference +// (in case __VA_ARGS__ refers to context outside the closure) +// Include a 0 at the beginning of the array to make the array length > 0 +// (zero sized arrays are not valid in standard c/c++) +#define roaring64_bitmap_from(...) \ + [&]() { \ + const uint64_t roaring64_bitmap_from_array[] = {0, __VA_ARGS__}; \ + return roaring64_bitmap_of_ptr( \ + (sizeof(roaring64_bitmap_from_array) / \ + sizeof(roaring64_bitmap_from_array[0])) - \ + 1, \ + &roaring64_bitmap_from_array[1]); \ + }() +#else +/** + * Creates a new bitmap which contains all values passed in as arguments. + * + * To create a bitmap from a variable number of arguments, use the + * `roaring64_bitmap_of_ptr` function instead. + */ +// While __VA_ARGS__ occurs twice in expansion, one of the times is in a sizeof +// expression, which is an unevaluated context, so it's even safe in the case +// where expressions passed have side effects (roaring64_bitmap_from(my_func(), +// ++i)) +// Include a 0 at the beginning of the array to make the array length > 0 +// (zero sized arrays are not valid in standard c/c++) +#define roaring64_bitmap_from(...) \ + roaring64_bitmap_of_ptr( \ + (sizeof((const uint64_t[]){0, __VA_ARGS__}) / sizeof(uint64_t)) - 1, \ + &((const uint64_t[]){0, __VA_ARGS__})[1]) +#endif + +/** + * Create a new bitmap containing all the values in [min, max) that are at a + * distance k*step from min. + */ +roaring64_bitmap_t *roaring64_bitmap_from_range(uint64_t min, uint64_t max, + uint64_t step); + +/** + * Adds the provided value to the bitmap. + */ +void roaring64_bitmap_add(roaring64_bitmap_t *r, uint64_t val); + +/** + * Adds the provided value to the bitmap. + * Returns true if a new value was added, false if the value already existed. + */ +bool roaring64_bitmap_add_checked(roaring64_bitmap_t *r, uint64_t val); + +/** + * Add an item, using context from a previous insert for faster insertion. + * + * `context` will be used to store information between calls to make bulk + * operations faster. `*context` should be zero-initialized before the first + * call to this function. + * + * Modifying the bitmap in any way (other than `-bulk` suffixed functions) + * will invalidate the stored context, calling this function with a non-zero + * context after doing any modification invokes undefined behavior. + * + * In order to exploit this optimization, the caller should call this function + * with values with the same high 48 bits of the value consecutively. + */ +void roaring64_bitmap_add_bulk(roaring64_bitmap_t *r, + roaring64_bulk_context_t *context, uint64_t val); + +/** + * Add `n_args` values from `vals`, faster than repeatedly calling + * `roaring64_bitmap_add()` + * + * In order to exploit this optimization, the caller should attempt to keep + * values with the same high 48 bits of the value as consecutive elements in + * `vals`. + */ +void roaring64_bitmap_add_many(roaring64_bitmap_t *r, size_t n_args, + const uint64_t *vals); + +/** + * Add all values in range [min, max). + */ +void roaring64_bitmap_add_range(roaring64_bitmap_t *r, uint64_t min, + uint64_t max); + +/** + * Add all values in range [min, max]. + */ +void roaring64_bitmap_add_range_closed(roaring64_bitmap_t *r, uint64_t min, + uint64_t max); + +/** + * Removes a value from the bitmap if present. + */ +void roaring64_bitmap_remove(roaring64_bitmap_t *r, uint64_t val); + +/** + * Removes a value from the bitmap if present, returns true if the value was + * removed and false if the value was not present. + */ +bool roaring64_bitmap_remove_checked(roaring64_bitmap_t *r, uint64_t val); + +/** + * Remove an item, using context from a previous insert for faster removal. + * + * `context` will be used to store information between calls to make bulk + * operations faster. `*context` should be zero-initialized before the first + * call to this function. + * + * Modifying the bitmap in any way (other than `-bulk` suffixed functions) + * will invalidate the stored context, calling this function with a non-zero + * context after doing any modification invokes undefined behavior. + * + * In order to exploit this optimization, the caller should call this function + * with values with the same high 48 bits of the value consecutively. + */ +void roaring64_bitmap_remove_bulk(roaring64_bitmap_t *r, + roaring64_bulk_context_t *context, + uint64_t val); + +/** + * Remove `n_args` values from `vals`, faster than repeatedly calling + * `roaring64_bitmap_remove()` + * + * In order to exploit this optimization, the caller should attempt to keep + * values with the same high 48 bits of the value as consecutive elements in + * `vals`. + */ +void roaring64_bitmap_remove_many(roaring64_bitmap_t *r, size_t n_args, + const uint64_t *vals); + +/** + * Remove all values in range [min, max). + */ +void roaring64_bitmap_remove_range(roaring64_bitmap_t *r, uint64_t min, + uint64_t max); + +/** + * Remove all values in range [min, max]. + */ +void roaring64_bitmap_remove_range_closed(roaring64_bitmap_t *r, uint64_t min, + uint64_t max); + +/** + * Returns true if the provided value is present. + */ +bool roaring64_bitmap_contains(const roaring64_bitmap_t *r, uint64_t val); + +/** + * Returns true if all values in the range [min, max) are present. + */ +bool roaring64_bitmap_contains_range(const roaring64_bitmap_t *r, uint64_t min, + uint64_t max); + +/** + * Check if an item is present using context from a previous insert or search + * for faster search. + * + * `context` will be used to store information between calls to make bulk + * operations faster. `*context` should be zero-initialized before the first + * call to this function. + * + * Modifying the bitmap in any way (other than `-bulk` suffixed functions) + * will invalidate the stored context, calling this function with a non-zero + * context after doing any modification invokes undefined behavior. + * + * In order to exploit this optimization, the caller should call this function + * with values with the same high 48 bits of the value consecutively. + */ +bool roaring64_bitmap_contains_bulk(const roaring64_bitmap_t *r, + roaring64_bulk_context_t *context, + uint64_t val); + +/** + * Selects the element at index 'rank' where the smallest element is at index 0. + * If the size of the bitmap is strictly greater than rank, then this function + * returns true and sets element to the element of given rank. Otherwise, it + * returns false. + */ +bool roaring64_bitmap_select(const roaring64_bitmap_t *r, uint64_t rank, + uint64_t *element); + +/** + * Returns the number of integers that are smaller or equal to x. Thus if x is + * the first element, this function will return 1. If x is smaller than the + * smallest element, this function will return 0. + * + * The indexing convention differs between roaring64_bitmap_select and + * roaring64_bitmap_rank: roaring_bitmap64_select refers to the smallest value + * as having index 0, whereas roaring64_bitmap_rank returns 1 when ranking + * the smallest value. + */ +uint64_t roaring64_bitmap_rank(const roaring64_bitmap_t *r, uint64_t val); + +/** + * Returns true if the given value is in the bitmap, and sets `out_index` to the + * (0-based) index of the value in the bitmap. Returns false if the value is not + * in the bitmap. + */ +bool roaring64_bitmap_get_index(const roaring64_bitmap_t *r, uint64_t val, + uint64_t *out_index); + +/** + * Returns the number of values in the bitmap. + */ +uint64_t roaring64_bitmap_get_cardinality(const roaring64_bitmap_t *r); + +/** + * Returns the number of elements in the range [min, max). + */ +uint64_t roaring64_bitmap_range_cardinality(const roaring64_bitmap_t *r, + uint64_t min, uint64_t max); + +/** + * Returns true if the bitmap is empty (cardinality is zero). + */ +bool roaring64_bitmap_is_empty(const roaring64_bitmap_t *r); + +/** + * Returns the smallest value in the set, or UINT64_MAX if the set is empty. + */ +uint64_t roaring64_bitmap_minimum(const roaring64_bitmap_t *r); + +/** + * Returns the largest value in the set, or 0 if empty. + */ +uint64_t roaring64_bitmap_maximum(const roaring64_bitmap_t *r); + +/** + * Returns true if the result has at least one run container. + */ +bool roaring64_bitmap_run_optimize(roaring64_bitmap_t *r); + +/** + * Perform internal consistency checks. + * + * Returns true if the bitmap is consistent. It may be useful to call this + * after deserializing bitmaps from untrusted sources. If + * roaring64_bitmap_internal_validate returns true, then the bitmap is + * consistent and can be trusted not to cause crashes or memory corruption. + * + * If reason is non-null, it will be set to a string describing the first + * inconsistency found if any. + */ +bool roaring64_bitmap_internal_validate(const roaring64_bitmap_t *r, + const char **reason); + +/** + * Return true if the two bitmaps contain the same elements. + */ +bool roaring64_bitmap_equals(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Return true if all the elements of r1 are also in r2. + */ +bool roaring64_bitmap_is_subset(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Return true if all the elements of r1 are also in r2, and r2 is strictly + * greater than r1. + */ +bool roaring64_bitmap_is_strict_subset(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Computes the intersection between two bitmaps and returns new bitmap. The + * caller is responsible for free-ing the result. + * + * Performance hint: if you are computing the intersection between several + * bitmaps, two-by-two, it is best to start with the smallest bitmaps. You may + * also rely on roaring64_bitmap_and_inplace to avoid creating many temporary + * bitmaps. + */ +roaring64_bitmap_t *roaring64_bitmap_and(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Computes the size of the intersection between two bitmaps. + */ +uint64_t roaring64_bitmap_and_cardinality(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * In-place version of `roaring64_bitmap_and()`, modifies `r1`. `r1` and `r2` + * are allowed to be equal. + * + * Performance hint: if you are computing the intersection between several + * bitmaps, two-by-two, it is best to start with the smallest bitmaps. + */ +void roaring64_bitmap_and_inplace(roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Check whether two bitmaps intersect. + */ +bool roaring64_bitmap_intersect(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Check whether a bitmap intersects the range [min, max). + */ +bool roaring64_bitmap_intersect_with_range(const roaring64_bitmap_t *r, + uint64_t min, uint64_t max); + +/** + * Computes the Jaccard index between two bitmaps. (Also known as the Tanimoto + * distance, or the Jaccard similarity coefficient) + * + * The Jaccard index is undefined if both bitmaps are empty. + */ +double roaring64_bitmap_jaccard_index(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Computes the union between two bitmaps and returns new bitmap. The caller is + * responsible for free-ing the result. + */ +roaring64_bitmap_t *roaring64_bitmap_or(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Computes the size of the union between two bitmaps. + */ +uint64_t roaring64_bitmap_or_cardinality(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * In-place version of `roaring64_bitmap_or(), modifies `r1`. + */ +void roaring64_bitmap_or_inplace(roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Computes the symmetric difference (xor) between two bitmaps and returns a new + * bitmap. The caller is responsible for free-ing the result. + */ +roaring64_bitmap_t *roaring64_bitmap_xor(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Computes the size of the symmetric difference (xor) between two bitmaps. + */ +uint64_t roaring64_bitmap_xor_cardinality(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * In-place version of `roaring64_bitmap_xor()`, modifies `r1`. `r1` and `r2` + * are not allowed to be equal (that would result in an empty bitmap). + */ +void roaring64_bitmap_xor_inplace(roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Computes the difference (andnot) between two bitmaps and returns a new + * bitmap. The caller is responsible for free-ing the result. + */ +roaring64_bitmap_t *roaring64_bitmap_andnot(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Computes the size of the difference (andnot) between two bitmaps. + */ +uint64_t roaring64_bitmap_andnot_cardinality(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * In-place version of `roaring64_bitmap_andnot()`, modifies `r1`. `r1` and `r2` + * are not allowed to be equal (that would result in an empty bitmap). + */ +void roaring64_bitmap_andnot_inplace(roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2); + +/** + * Compute the negation of the bitmap in the interval [min, max). + * The number of negated values is `max - min`. Areas outside the range are + * passed through unchanged. + */ +roaring64_bitmap_t *roaring64_bitmap_flip(const roaring64_bitmap_t *r, + uint64_t min, uint64_t max); + +/** + * Compute the negation of the bitmap in the interval [min, max]. + * The number of negated values is `max - min + 1`. Areas outside the range are + * passed through unchanged. + */ +roaring64_bitmap_t *roaring64_bitmap_flip_closed(const roaring64_bitmap_t *r, + uint64_t min, uint64_t max); + +/** + * In-place version of `roaring64_bitmap_flip`. Compute the negation of the + * bitmap in the interval [min, max). The number of negated values is `max - + * min`. Areas outside the range are passed through unchanged. + */ +void roaring64_bitmap_flip_inplace(roaring64_bitmap_t *r, uint64_t min, + uint64_t max); +/** + * In-place version of `roaring64_bitmap_flip_closed`. Compute the negation of + * the bitmap in the interval [min, max]. The number of negated values is `max - + * min + 1`. Areas outside the range are passed through unchanged. + */ +void roaring64_bitmap_flip_closed_inplace(roaring64_bitmap_t *r, uint64_t min, + uint64_t max); +/** + * How many bytes are required to serialize this bitmap. + * + * This is meant to be compatible with other languages: + * https://github.com/RoaringBitmap/RoaringFormatSpec#extension-for-64-bit-implementations + */ +size_t roaring64_bitmap_portable_size_in_bytes(const roaring64_bitmap_t *r); + +/** + * Write a bitmap to a buffer. The output buffer should refer to at least + * `roaring64_bitmap_portable_size_in_bytes(r)` bytes of allocated memory. + * + * Returns how many bytes were written, which should match + * `roaring64_bitmap_portable_size_in_bytes(r)`. + * + * This is meant to be compatible with other languages: + * https://github.com/RoaringBitmap/RoaringFormatSpec#extension-for-64-bit-implementations + * + * This function is endian-sensitive. If you have a big-endian system (e.g., a + * mainframe IBM s390x), the data format is going to be big-endian and not + * compatible with little-endian systems. + */ +size_t roaring64_bitmap_portable_serialize(const roaring64_bitmap_t *r, + char *buf); +/** + * Check how many bytes would be read (up to maxbytes) at this pointer if there + * is a valid bitmap, returns zero if there is no valid bitmap. + * + * This is meant to be compatible with other languages + * https://github.com/RoaringBitmap/RoaringFormatSpec#extension-for-64-bit-implementations + */ +size_t roaring64_bitmap_portable_deserialize_size(const char *buf, + size_t maxbytes); + +/** + * Read a bitmap from a serialized buffer safely (reading up to maxbytes). + * In case of failure, NULL is returned. + * + * This is meant to be compatible with other languages + * https://github.com/RoaringBitmap/RoaringFormatSpec#extension-for-64-bit-implementations + * + * The function itself is safe in the sense that it will not cause buffer + * overflows. However, for correct operations, it is assumed that the bitmap + * read was once serialized from a valid bitmap (i.e., it follows the format + * specification). If you provided an incorrect input (garbage), then the bitmap + * read may not be in a valid state and following operations may not lead to + * sensible results. In particular, the serialized array containers need to be + * in sorted order, and the run containers should be in sorted non-overlapping + * order. This is is guaranteed to happen when serializing an existing bitmap, + * but not for random inputs. + * + * This function is endian-sensitive. If you have a big-endian system (e.g., a + * mainframe IBM s390x), the data format is going to be big-endian and not + * compatible with little-endian systems. + */ +roaring64_bitmap_t *roaring64_bitmap_portable_deserialize_safe(const char *buf, + size_t maxbytes); + +/** + * Iterate over the bitmap elements. The function `iterator` is called once for + * all the values with `ptr` (can be NULL) as the second parameter of each call. + * + * `roaring_iterator64` is simply a pointer to a function that returns a bool + * and takes `(uint64_t, void*)` as inputs. True means that the iteration should + * continue, while false means that it should stop. + * + * Returns true if the `roaring64_iterator` returned true throughout (so that + * all data points were necessarily visited). + * + * Iteration is ordered from the smallest to the largest elements. + */ +bool roaring64_bitmap_iterate(const roaring64_bitmap_t *r, + roaring_iterator64 iterator, void *ptr); + +/** + * Convert the bitmap to a sorted array `out`. + * + * Caller is responsible to ensure that there is enough memory allocated, e.g. + * ``` + * out = malloc(roaring64_bitmap_get_cardinality(bitmap) * sizeof(uint64_t)); + * ``` + */ +void roaring64_bitmap_to_uint64_array(const roaring64_bitmap_t *r, + uint64_t *out); + +/** + * Create an iterator object that can be used to iterate through the values. + * Caller is responsible for calling `roaring64_iterator_free()`. + * + * The iterator is initialized. If there is a value, then this iterator points + * to the first value and `roaring64_iterator_has_value()` returns true. The + * value can be retrieved with `roaring64_iterator_value()`. + */ +roaring64_iterator_t *roaring64_iterator_create(const roaring64_bitmap_t *r); + +/** + * Create an iterator object that can be used to iterate through the values. + * Caller is responsible for calling `roaring64_iterator_free()`. + * + * The iterator is initialized. If there is a value, then this iterator points + * to the last value and `roaring64_iterator_has_value()` returns true. The + * value can be retrieved with `roaring64_iterator_value()`. + */ +roaring64_iterator_t *roaring64_iterator_create_last( + const roaring64_bitmap_t *r); + +/** + * Re-initializes an existing iterator. Functionally the same as + * `roaring64_iterator_create` without a allocation. + */ +void roaring64_iterator_reinit(const roaring64_bitmap_t *r, + roaring64_iterator_t *it); + +/** + * Re-initializes an existing iterator. Functionally the same as + * `roaring64_iterator_create_last` without a allocation. + */ +void roaring64_iterator_reinit_last(const roaring64_bitmap_t *r, + roaring64_iterator_t *it); + +/** + * Creates a copy of the iterator. Caller is responsible for calling + * `roaring64_iterator_free()` on the resulting iterator. + */ +roaring64_iterator_t *roaring64_iterator_copy(const roaring64_iterator_t *it); + +/** + * Free the iterator. + */ +void roaring64_iterator_free(roaring64_iterator_t *it); + +/** + * Returns true if the iterator currently points to a value. If so, calling + * `roaring64_iterator_value()` returns the value. + */ +bool roaring64_iterator_has_value(const roaring64_iterator_t *it); + +/** + * Returns the value the iterator currently points to. Should only be called if + * `roaring64_iterator_has_value()` returns true. + */ +uint64_t roaring64_iterator_value(const roaring64_iterator_t *it); + +/** + * Advance the iterator. If there is a new value, then + * `roaring64_iterator_has_value()` returns true. Values are traversed in + * increasing order. For convenience, returns the result of + * `roaring64_iterator_has_value()`. + * + * Once this returns false, `roaring64_iterator_advance` should not be called on + * the iterator again. Calling `roaring64_iterator_previous` is allowed. + */ +bool roaring64_iterator_advance(roaring64_iterator_t *it); + +/** + * Decrement the iterator. If there is a new value, then + * `roaring64_iterator_has_value()` returns true. Values are traversed in + * decreasing order. For convenience, returns the result of + * `roaring64_iterator_has_value()`. + * + * Once this returns false, `roaring64_iterator_previous` should not be called + * on the iterator again. Calling `roaring64_iterator_advance` is allowed. + */ +bool roaring64_iterator_previous(roaring64_iterator_t *it); + +/** + * Move the iterator to the first value greater than or equal to `val`, if it + * exists at or after the current position of the iterator. If there is a new + * value, then `roaring64_iterator_has_value()` returns true. Values are + * traversed in increasing order. For convenience, returns the result of + * `roaring64_iterator_has_value()`. + */ +bool roaring64_iterator_move_equalorlarger(roaring64_iterator_t *it, + uint64_t val); + +/** + * Reads up to `count` values from the iterator into the given `buf`. Returns + * the number of elements read. The number of elements read can be smaller than + * `count`, which means that there are no more elements in the bitmap. + * + * This function can be used together with other iterator functions. + */ +uint64_t roaring64_iterator_read(roaring64_iterator_t *it, uint64_t *buf, + uint64_t count); + +#ifdef __cplusplus +} // extern "C" +} // namespace roaring +} // namespace api +#endif + +#endif /* ROARING64_H */ diff --git a/contrib/libs/croaring/include/roaring/roaring_array.h b/contrib/libs/croaring/include/roaring/roaring_array.h new file mode 100644 index 000000000000..594a10b6089f --- /dev/null +++ b/contrib/libs/croaring/include/roaring/roaring_array.h @@ -0,0 +1,305 @@ +#ifndef INCLUDE_ROARING_ARRAY_H +#define INCLUDE_ROARING_ARRAY_H + +#include <assert.h> +#include <stdbool.h> +#include <stdint.h> + +#include <roaring/array_util.h> +#include <roaring/containers/containers.h> // get_writable_copy_if_shared() + +#ifdef __cplusplus +extern "C" { +namespace roaring { + +// Note: in pure C++ code, you should avoid putting `using` in header files +using api::roaring_array_t; + +namespace internal { +#endif + +enum { + SERIAL_COOKIE_NO_RUNCONTAINER = 12346, + SERIAL_COOKIE = 12347, + FROZEN_COOKIE = 13766, + NO_OFFSET_THRESHOLD = 4 +}; + +/** + * Create a new roaring array + */ +roaring_array_t *ra_create(void); + +/** + * Initialize an existing roaring array with the specified capacity (in number + * of containers) + */ +bool ra_init_with_capacity(roaring_array_t *new_ra, uint32_t cap); + +/** + * Initialize with zero capacity + */ +void ra_init(roaring_array_t *t); + +/** + * Copies this roaring array, we assume that dest is not initialized + */ +bool ra_copy(const roaring_array_t *source, roaring_array_t *dest, + bool copy_on_write); + +/* + * Shrinks the capacity, returns the number of bytes saved. + */ +int ra_shrink_to_fit(roaring_array_t *ra); + +/** + * Copies this roaring array, we assume that dest is initialized + */ +bool ra_overwrite(const roaring_array_t *source, roaring_array_t *dest, + bool copy_on_write); + +/** + * Frees the memory used by a roaring array + */ +void ra_clear(roaring_array_t *r); + +/** + * Frees the memory used by a roaring array, but does not free the containers + */ +void ra_clear_without_containers(roaring_array_t *r); + +/** + * Frees just the containers + */ +void ra_clear_containers(roaring_array_t *ra); + +/** + * Get the index corresponding to a 16-bit key + */ +inline int32_t ra_get_index(const roaring_array_t *ra, uint16_t x) { + if ((ra->size == 0) || ra->keys[ra->size - 1] == x) return ra->size - 1; + return binarySearch(ra->keys, (int32_t)ra->size, x); +} + +/** + * Retrieves the container at index i, filling in the typecode + */ +inline container_t *ra_get_container_at_index(const roaring_array_t *ra, + uint16_t i, uint8_t *typecode) { + *typecode = ra->typecodes[i]; + return ra->containers[i]; +} + +/** + * Retrieves the key at index i + */ +inline uint16_t ra_get_key_at_index(const roaring_array_t *ra, uint16_t i) { + return ra->keys[i]; +} + +/** + * Add a new key-value pair at index i + */ +void ra_insert_new_key_value_at(roaring_array_t *ra, int32_t i, uint16_t key, + container_t *c, uint8_t typecode); + +/** + * Append a new key-value pair + */ +void ra_append(roaring_array_t *ra, uint16_t key, container_t *c, + uint8_t typecode); + +/** + * Append a new key-value pair to ra, cloning (in COW sense) a value from sa + * at index index + */ +void ra_append_copy(roaring_array_t *ra, const roaring_array_t *sa, + uint16_t index, bool copy_on_write); + +/** + * Append new key-value pairs to ra, cloning (in COW sense) values from sa + * at indexes + * [start_index, end_index) + */ +void ra_append_copy_range(roaring_array_t *ra, const roaring_array_t *sa, + int32_t start_index, int32_t end_index, + bool copy_on_write); + +/** appends from sa to ra, ending with the greatest key that is + * is less or equal stopping_key + */ +void ra_append_copies_until(roaring_array_t *ra, const roaring_array_t *sa, + uint16_t stopping_key, bool copy_on_write); + +/** appends from sa to ra, starting with the smallest key that is + * is strictly greater than before_start + */ + +void ra_append_copies_after(roaring_array_t *ra, const roaring_array_t *sa, + uint16_t before_start, bool copy_on_write); + +/** + * Move the key-value pairs to ra from sa at indexes + * [start_index, end_index), old array should not be freed + * (use ra_clear_without_containers) + **/ +void ra_append_move_range(roaring_array_t *ra, roaring_array_t *sa, + int32_t start_index, int32_t end_index); +/** + * Append new key-value pairs to ra, from sa at indexes + * [start_index, end_index) + */ +void ra_append_range(roaring_array_t *ra, roaring_array_t *sa, + int32_t start_index, int32_t end_index, + bool copy_on_write); + +/** + * Set the container at the corresponding index using the specified + * typecode. + */ +inline void ra_set_container_at_index(const roaring_array_t *ra, int32_t i, + container_t *c, uint8_t typecode) { + assert(i < ra->size); + ra->containers[i] = c; + ra->typecodes[i] = typecode; +} + +container_t *ra_get_container(roaring_array_t *ra, uint16_t x, + uint8_t *typecode); + +/** + * If needed, increase the capacity of the array so that it can fit k values + * (at + * least); + */ +bool extend_array(roaring_array_t *ra, int32_t k); + +inline int32_t ra_get_size(const roaring_array_t *ra) { return ra->size; } + +static inline int32_t ra_advance_until(const roaring_array_t *ra, uint16_t x, + int32_t pos) { + return advanceUntil(ra->keys, pos, ra->size, x); +} + +int32_t ra_advance_until_freeing(roaring_array_t *ra, uint16_t x, int32_t pos); + +void ra_downsize(roaring_array_t *ra, int32_t new_length); + +inline void ra_replace_key_and_container_at_index(roaring_array_t *ra, + int32_t i, uint16_t key, + container_t *c, + uint8_t typecode) { + assert(i < ra->size); + + ra->keys[i] = key; + ra->containers[i] = c; + ra->typecodes[i] = typecode; +} + +// write set bits to an array +void ra_to_uint32_array(const roaring_array_t *ra, uint32_t *ans); + +bool ra_range_uint32_array(const roaring_array_t *ra, size_t offset, + size_t limit, uint32_t *ans); + +/** + * write a bitmap to a buffer. This is meant to be compatible with + * the + * Java and Go versions. Return the size in bytes of the serialized + * output (which should be ra_portable_size_in_bytes(ra)). + */ +size_t ra_portable_serialize(const roaring_array_t *ra, char *buf); + +/** + * read a bitmap from a serialized version. This is meant to be compatible + * with the Java and Go versions. + * maxbytes indicates how many bytes available from buf. + * When the function returns true, roaring_array_t is populated with the data + * and *readbytes indicates how many bytes were read. In all cases, if the + * function returns true, then maxbytes >= *readbytes. + */ +bool ra_portable_deserialize(roaring_array_t *ra, const char *buf, + const size_t maxbytes, size_t *readbytes); + +/** + * Quickly checks whether there is a serialized bitmap at the pointer, + * not exceeding size "maxbytes" in bytes. This function does not allocate + * memory dynamically. + * + * This function returns 0 if and only if no valid bitmap is found. + * Otherwise, it returns how many bytes are occupied by the bitmap data. + */ +size_t ra_portable_deserialize_size(const char *buf, const size_t maxbytes); + +/** + * How many bytes are required to serialize this bitmap (meant to be + * compatible + * with Java and Go versions) + */ +size_t ra_portable_size_in_bytes(const roaring_array_t *ra); + +/** + * return true if it contains at least one run container. + */ +bool ra_has_run_container(const roaring_array_t *ra); + +/** + * Size of the header when serializing (meant to be compatible + * with Java and Go versions) + */ +uint32_t ra_portable_header_size(const roaring_array_t *ra); + +/** + * If the container at the index i is share, unshare it (creating a local + * copy if needed). + */ +static inline void ra_unshare_container_at_index(roaring_array_t *ra, + uint16_t i) { + assert(i < ra->size); + ra->containers[i] = + get_writable_copy_if_shared(ra->containers[i], &ra->typecodes[i]); +} + +/** + * remove at index i, sliding over all entries after i + */ +void ra_remove_at_index(roaring_array_t *ra, int32_t i); + +/** + * clears all containers, sets the size at 0 and shrinks the memory usage. + */ +void ra_reset(roaring_array_t *ra); + +/** + * remove at index i, sliding over all entries after i. Free removed container. + */ +void ra_remove_at_index_and_free(roaring_array_t *ra, int32_t i); + +/** + * remove a chunk of indices, sliding over entries after it + */ +// void ra_remove_index_range(roaring_array_t *ra, int32_t begin, int32_t end); + +// used in inplace andNot only, to slide left the containers from +// the mutated RoaringBitmap that are after the largest container of +// the argument RoaringBitmap. It is followed by a call to resize. +// +void ra_copy_range(roaring_array_t *ra, uint32_t begin, uint32_t end, + uint32_t new_begin); + +/** + * Shifts rightmost $count containers to the left (distance < 0) or + * to the right (distance > 0). + * Allocates memory if necessary. + * This function doesn't free or create new containers. + * Caller is responsible for that. + */ +void ra_shift_tail(roaring_array_t *ra, int32_t count, int32_t distance); + +#ifdef __cplusplus +} // namespace internal +} +} // extern "C" { namespace roaring { +#endif + +#endif diff --git a/contrib/libs/croaring/include/roaring/roaring_types.h b/contrib/libs/croaring/include/roaring/roaring_types.h new file mode 100644 index 000000000000..d215c248b7b7 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/roaring_types.h @@ -0,0 +1,115 @@ +/* + Typedefs used by various components +*/ + +#ifndef ROARING_TYPES_H +#define ROARING_TYPES_H + +#include <stdbool.h> +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace api { +#endif + +/** + * When building .c files as C++, there's added compile-time checking if the + * container types are derived from a `container_t` base class. So long as + * such a base class is empty, the struct will behave compatibly with C structs + * despite the derivation. This is due to the Empty Base Class Optimization: + * + * https://en.cppreference.com/w/cpp/language/ebo + * + * But since C isn't namespaced, taking `container_t` globally might collide + * with other projects. So roaring.h uses ROARING_CONTAINER_T, while internal + * code #undefs that after declaring `typedef ROARING_CONTAINER_T container_t;` + */ +#if defined(__cplusplus) +extern "C++" { +struct container_s {}; +} +#define ROARING_CONTAINER_T ::roaring::api::container_s +#else +#define ROARING_CONTAINER_T void // no compile-time checking +#endif + +#define ROARING_FLAG_COW UINT8_C(0x1) +#define ROARING_FLAG_FROZEN UINT8_C(0x2) + +/** + * Roaring arrays are array-based key-value pairs having containers as values + * and 16-bit integer keys. A roaring bitmap might be implemented as such. + */ + +// parallel arrays. Element sizes quite different. +// Alternative is array +// of structs. Which would have better +// cache performance through binary searches? + +typedef struct roaring_array_s { + int32_t size; + int32_t allocation_size; + ROARING_CONTAINER_T **containers; // Use container_t in non-API files! + uint16_t *keys; + uint8_t *typecodes; + uint8_t flags; +} roaring_array_t; + +typedef bool (*roaring_iterator)(uint32_t value, void *param); +typedef bool (*roaring_iterator64)(uint64_t value, void *param); + +/** + * (For advanced users.) + * The roaring_statistics_t can be used to collect detailed statistics about + * the composition of a roaring bitmap. + */ +typedef struct roaring_statistics_s { + uint32_t n_containers; /* number of containers */ + + uint32_t n_array_containers; /* number of array containers */ + uint32_t n_run_containers; /* number of run containers */ + uint32_t n_bitset_containers; /* number of bitmap containers */ + + uint32_t + n_values_array_containers; /* number of values in array containers */ + uint32_t n_values_run_containers; /* number of values in run containers */ + uint32_t + n_values_bitset_containers; /* number of values in bitmap containers */ + + uint32_t n_bytes_array_containers; /* number of allocated bytes in array + containers */ + uint32_t n_bytes_run_containers; /* number of allocated bytes in run + containers */ + uint32_t n_bytes_bitset_containers; /* number of allocated bytes in bitmap + containers */ + + uint32_t + max_value; /* the maximal value, undefined if cardinality is zero */ + uint32_t + min_value; /* the minimal value, undefined if cardinality is zero */ + uint64_t sum_value; /* the sum of all values (could be used to compute + average) */ + + uint64_t cardinality; /* total number of values stored in the bitmap */ + + // and n_values_arrays, n_values_rle, n_values_bitmap +} roaring_statistics_t; + +/** + * Roaring-internal type used to iterate within a roaring container. + */ +typedef struct roaring_container_iterator_s { + // For bitset and array containers this is the index of the bit / entry. + // For run containers this points at the run. + int32_t index; +} roaring_container_iterator_t; + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace api { +#endif + +#endif /* ROARING_TYPES_H */ diff --git a/contrib/libs/croaring/include/roaring/roaring_version.h b/contrib/libs/croaring/include/roaring/roaring_version.h new file mode 100644 index 000000000000..6dcf54f47792 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/roaring_version.h @@ -0,0 +1,11 @@ +// /include/roaring/roaring_version.h automatically generated by release.py, do +// not change by hand +#ifndef ROARING_INCLUDE_ROARING_VERSION +#define ROARING_INCLUDE_ROARING_VERSION +#define ROARING_VERSION "3.0.0" +enum { + ROARING_VERSION_MAJOR = 3, + ROARING_VERSION_MINOR = 0, + ROARING_VERSION_REVISION = 0 +}; +#endif // ROARING_INCLUDE_ROARING_VERSION diff --git a/contrib/libs/croaring/include/roaring/utilasm.h b/contrib/libs/croaring/include/roaring/utilasm.h new file mode 100644 index 000000000000..860a706e3357 --- /dev/null +++ b/contrib/libs/croaring/include/roaring/utilasm.h @@ -0,0 +1,80 @@ +/* + * utilasm.h + * + */ + +#ifndef INCLUDE_UTILASM_H_ +#define INCLUDE_UTILASM_H_ + +#include <roaring/portability.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +#endif + +#if defined(CROARING_INLINE_ASM) +#define CROARING_ASMBITMANIPOPTIMIZATION // optimization flag + +#define ASM_SHIFT_RIGHT(srcReg, bitsReg, destReg) \ + __asm volatile("shrx %1, %2, %0" \ + : "=r"(destReg) \ + : /* write */ \ + "r"(bitsReg), /* read only */ \ + "r"(srcReg) /* read only */ \ + ) + +#define ASM_INPLACESHIFT_RIGHT(srcReg, bitsReg) \ + __asm volatile("shrx %1, %0, %0" \ + : "+r"(srcReg) \ + : /* read/write */ \ + "r"(bitsReg) /* read only */ \ + ) + +#define ASM_SHIFT_LEFT(srcReg, bitsReg, destReg) \ + __asm volatile("shlx %1, %2, %0" \ + : "=r"(destReg) \ + : /* write */ \ + "r"(bitsReg), /* read only */ \ + "r"(srcReg) /* read only */ \ + ) +// set bit at position testBit within testByte to 1 and +// copy cmovDst to cmovSrc if that bit was previously clear +#define ASM_SET_BIT_INC_WAS_CLEAR(testByte, testBit, count) \ + __asm volatile( \ + "bts %2, %0\n" \ + "sbb $-1, %1\n" \ + : "+r"(testByte), /* read/write */ \ + "+r"(count) \ + : /* read/write */ \ + "r"(testBit) /* read only */ \ + ) + +#define ASM_CLEAR_BIT_DEC_WAS_SET(testByte, testBit, count) \ + __asm volatile( \ + "btr %2, %0\n" \ + "sbb $0, %1\n" \ + : "+r"(testByte), /* read/write */ \ + "+r"(count) \ + : /* read/write */ \ + "r"(testBit) /* read only */ \ + ) + +#define ASM_BT64(testByte, testBit, count) \ + __asm volatile( \ + "bt %2,%1\n" \ + "sbb %0,%0" /*could use setb */ \ + : "=r"(count) \ + : /* write */ \ + "r"(testByte), /* read only */ \ + "r"(testBit) /* read only */ \ + ) + +#endif + +#ifdef __cplusplus +} +} // extern "C" { namespace roaring { +#endif + +#endif /* INCLUDE_UTILASM_H_ */ diff --git a/contrib/libs/croaring/src/array_util.c b/contrib/libs/croaring/src/array_util.c new file mode 100644 index 000000000000..a4ff98d2dfe2 --- /dev/null +++ b/contrib/libs/croaring/src/array_util.c @@ -0,0 +1,2172 @@ +#include <assert.h> +#include <stdbool.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <roaring/array_util.h> +#include <roaring/portability.h> +#include <roaring/utilasm.h> + +#if CROARING_IS_X64 +#ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#error "CROARING_COMPILER_SUPPORTS_AVX512 needs to be defined." +#endif // CROARING_COMPILER_SUPPORTS_AVX512 +#endif + +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif +#ifdef __cplusplus +using namespace ::roaring::internal; +extern "C" { +namespace roaring { +namespace internal { +#endif + +extern inline int32_t binarySearch(const uint16_t *array, int32_t lenarray, + uint16_t ikey); + +#if CROARING_IS_X64 +// used by intersect_vector16 +ALIGNED(0x1000) +static const uint8_t shuffle_mask16[] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 4, 5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 4, 5, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 6, 7, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 6, 7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 6, 7, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 6, 7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 4, 5, 6, 7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, 6, 7, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, + 6, 7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 4, 5, 6, 7, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 8, 9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 8, 9, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 8, 9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 8, 9, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 8, 9, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 4, 5, 8, 9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, 8, 9, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 4, 5, 8, 9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 6, 7, 8, 9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 6, 7, 8, 9, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 6, 7, + 8, 9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 6, 7, 8, 9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 6, 7, 8, 9, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, + 6, 7, 8, 9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 4, 5, 6, 7, 8, 9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 10, 11, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 4, 5, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, 10, 11, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, + 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 4, 5, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 6, 7, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 6, 7, + 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 6, 7, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 6, 7, 10, 11, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 6, 7, + 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 4, 5, 6, 7, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, 6, 7, 10, 11, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 4, 5, 6, 7, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 8, 9, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 8, 9, 10, 11, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 8, 9, + 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 8, 9, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 8, 9, 10, 11, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, + 8, 9, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 4, 5, 8, 9, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 4, 5, 8, 9, + 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 6, 7, 8, 9, + 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 6, 7, 8, 9, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 6, 7, 8, 9, 10, 11, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 6, 7, 8, 9, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 4, 5, 6, 7, 8, 9, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, 6, 7, 8, 9, + 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 0xFF, 0xFF, 0xFF, 0xFF, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 12, 13, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 12, 13, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 4, 5, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 4, 5, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 6, 7, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 6, 7, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 6, 7, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 6, 7, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 6, 7, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, + 6, 7, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 4, 5, 6, 7, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 4, 5, 6, 7, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 8, 9, 12, 13, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 8, 9, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 8, 9, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 8, 9, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 4, 5, 8, 9, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, 8, 9, 12, 13, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, + 8, 9, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 4, 5, 8, 9, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 6, 7, 8, 9, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 6, 7, + 8, 9, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 6, 7, 8, 9, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 6, 7, 8, 9, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 6, 7, + 8, 9, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 4, 5, 6, 7, 8, 9, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, 6, 7, 8, 9, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 10, 11, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 10, 11, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 10, 11, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, + 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 4, 5, 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 4, 5, 10, 11, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 6, 7, 10, 11, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 6, 7, 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 6, 7, 10, 11, 12, 13, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 6, 7, 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 4, 5, 6, 7, 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, 6, 7, 10, 11, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, + 6, 7, 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, + 0xFF, 0xFF, 0xFF, 0xFF, 8, 9, 10, 11, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 8, 9, + 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 8, 9, 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 8, 9, 10, 11, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 8, 9, + 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 4, 5, 8, 9, 10, 11, 12, 13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, 8, 9, 10, 11, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 4, 5, 8, 9, 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 6, 7, 8, 9, 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 6, 7, 8, 9, 10, 11, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 6, 7, + 8, 9, 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, + 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 0xFF, 0xFF, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 4, 5, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 4, 5, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 6, 7, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 6, 7, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 6, 7, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 6, 7, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 6, 7, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 4, 5, 6, 7, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, 6, 7, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 4, 5, 6, 7, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 8, 9, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 8, 9, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 8, 9, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 8, 9, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 8, 9, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, + 8, 9, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 4, 5, 8, 9, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 4, 5, 8, 9, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 6, 7, 8, 9, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 6, 7, 8, 9, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 6, 7, 8, 9, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 6, 7, 8, 9, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 4, 5, 6, 7, 8, 9, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, 6, 7, 8, 9, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, + 6, 7, 8, 9, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 10, 11, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 10, 11, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 10, 11, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 4, 5, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, 10, 11, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 4, 5, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 6, 7, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 6, 7, 10, 11, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 6, 7, + 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 6, 7, 10, 11, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 6, 7, 10, 11, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, + 6, 7, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 4, 5, 6, 7, 10, 11, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 4, 5, 6, 7, + 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 8, 9, 10, 11, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 8, 9, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 8, 9, 10, 11, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 8, 9, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 4, 5, 8, 9, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, 8, 9, 10, 11, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, + 8, 9, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 6, 7, 8, 9, 10, 11, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 6, 7, + 8, 9, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 6, 7, 8, 9, 10, 11, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 6, 7, 8, 9, + 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 6, 7, + 8, 9, 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 0xFF, 0xFF, + 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 12, 13, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 12, 13, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, + 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 4, 5, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 4, 5, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 6, 7, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 6, 7, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 6, 7, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 6, 7, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 4, 5, 6, 7, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, 6, 7, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, + 6, 7, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 8, 9, 12, 13, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 8, 9, + 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 8, 9, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 8, 9, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 8, 9, + 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 4, 5, 8, 9, 12, 13, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, 8, 9, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 4, 5, 8, 9, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 6, 7, 8, 9, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 6, 7, 8, 9, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 6, 7, + 8, 9, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 6, 7, 8, 9, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, + 6, 7, 8, 9, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 12, 13, 14, 15, 0xFF, 0xFF, 10, 11, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 10, 11, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 4, 5, 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, 10, 11, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, + 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 6, 7, 10, 11, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 6, 7, + 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 6, 7, 10, 11, + 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 6, 7, + 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 4, 5, 6, 7, 10, 11, + 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, + 8, 9, 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 8, 9, 10, 11, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 8, 9, + 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 4, 5, 8, 9, 10, 11, 12, 13, + 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, + 8, 9, 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, + 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, 4, 5, 8, 9, + 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0, 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 2, 3, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 2, 3, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 0xFF, 0xFF, 0xFF, 0xFF, 0, 1, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0xFF, 0xFF, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15}; + +/** + * From Schlegel et al., Fast Sorted-Set Intersection using SIMD Instructions + * Optimized by D. Lemire on May 3rd 2013 + */ +CROARING_TARGET_AVX2 +int32_t intersect_vector16(const uint16_t *__restrict__ A, size_t s_a, + const uint16_t *__restrict__ B, size_t s_b, + uint16_t *C) { + size_t count = 0; + size_t i_a = 0, i_b = 0; + const int vectorlength = sizeof(__m128i) / sizeof(uint16_t); + const size_t st_a = (s_a / vectorlength) * vectorlength; + const size_t st_b = (s_b / vectorlength) * vectorlength; + __m128i v_a, v_b; + if ((i_a < st_a) && (i_b < st_b)) { + v_a = _mm_lddqu_si128((__m128i *)&A[i_a]); + v_b = _mm_lddqu_si128((__m128i *)&B[i_b]); + while ((A[i_a] == 0) || (B[i_b] == 0)) { + const __m128i res_v = _mm_cmpestrm( + v_b, vectorlength, v_a, vectorlength, + _SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK); + const int r = _mm_extract_epi32(res_v, 0); + __m128i sm16 = _mm_loadu_si128((const __m128i *)shuffle_mask16 + r); + __m128i p = _mm_shuffle_epi8(v_a, sm16); + _mm_storeu_si128((__m128i *)&C[count], p); // can overflow + count += _mm_popcnt_u32(r); + const uint16_t a_max = A[i_a + vectorlength - 1]; + const uint16_t b_max = B[i_b + vectorlength - 1]; + if (a_max <= b_max) { + i_a += vectorlength; + if (i_a == st_a) break; + v_a = _mm_lddqu_si128((__m128i *)&A[i_a]); + } + if (b_max <= a_max) { + i_b += vectorlength; + if (i_b == st_b) break; + v_b = _mm_lddqu_si128((__m128i *)&B[i_b]); + } + } + if ((i_a < st_a) && (i_b < st_b)) + while (true) { + const __m128i res_v = _mm_cmpistrm( + v_b, v_a, + _SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK); + const int r = _mm_extract_epi32(res_v, 0); + __m128i sm16 = + _mm_loadu_si128((const __m128i *)shuffle_mask16 + r); + __m128i p = _mm_shuffle_epi8(v_a, sm16); + _mm_storeu_si128((__m128i *)&C[count], p); // can overflow + count += _mm_popcnt_u32(r); + const uint16_t a_max = A[i_a + vectorlength - 1]; + const uint16_t b_max = B[i_b + vectorlength - 1]; + if (a_max <= b_max) { + i_a += vectorlength; + if (i_a == st_a) break; + v_a = _mm_lddqu_si128((__m128i *)&A[i_a]); + } + if (b_max <= a_max) { + i_b += vectorlength; + if (i_b == st_b) break; + v_b = _mm_lddqu_si128((__m128i *)&B[i_b]); + } + } + } + // intersect the tail using scalar intersection + while (i_a < s_a && i_b < s_b) { + uint16_t a = A[i_a]; + uint16_t b = B[i_b]; + if (a < b) { + i_a++; + } else if (b < a) { + i_b++; + } else { + C[count] = a; //==b; + count++; + i_a++; + i_b++; + } + } + return (int32_t)count; +} + +ALLOW_UNALIGNED +int array_container_to_uint32_array_vector16(void *vout, const uint16_t *array, + size_t cardinality, + uint32_t base) { + int outpos = 0; + uint32_t *out = (uint32_t *)vout; + size_t i = 0; + for (; i + sizeof(__m128i) / sizeof(uint16_t) <= cardinality; + i += sizeof(__m128i) / sizeof(uint16_t)) { + __m128i vinput = _mm_loadu_si128((const __m128i *)(array + i)); + __m256i voutput = _mm256_add_epi32(_mm256_cvtepu16_epi32(vinput), + _mm256_set1_epi32(base)); + _mm256_storeu_si256((__m256i *)(out + outpos), voutput); + outpos += sizeof(__m256i) / sizeof(uint32_t); + } + for (; i < cardinality; ++i) { + const uint32_t val = base + array[i]; + memcpy(out + outpos, &val, + sizeof(uint32_t)); // should be compiled as a MOV on x64 + outpos++; + } + return outpos; +} + +int32_t intersect_vector16_inplace(uint16_t *__restrict__ A, size_t s_a, + const uint16_t *__restrict__ B, size_t s_b) { + size_t count = 0; + size_t i_a = 0, i_b = 0; + const int vectorlength = sizeof(__m128i) / sizeof(uint16_t); + const size_t st_a = (s_a / vectorlength) * vectorlength; + const size_t st_b = (s_b / vectorlength) * vectorlength; + __m128i v_a, v_b; + if ((i_a < st_a) && (i_b < st_b)) { + v_a = _mm_lddqu_si128((__m128i *)&A[i_a]); + v_b = _mm_lddqu_si128((__m128i *)&B[i_b]); + __m128i tmp[2] = {_mm_setzero_si128()}; + size_t tmp_count = 0; + while ((A[i_a] == 0) || (B[i_b] == 0)) { + const __m128i res_v = _mm_cmpestrm( + v_b, vectorlength, v_a, vectorlength, + _SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK); + const int r = _mm_extract_epi32(res_v, 0); + __m128i sm16 = _mm_loadu_si128((const __m128i *)shuffle_mask16 + r); + __m128i p = _mm_shuffle_epi8(v_a, sm16); + _mm_storeu_si128((__m128i *)&((uint16_t *)tmp)[tmp_count], p); + tmp_count += _mm_popcnt_u32(r); + const uint16_t a_max = A[i_a + vectorlength - 1]; + const uint16_t b_max = B[i_b + vectorlength - 1]; + if (a_max <= b_max) { + _mm_storeu_si128((__m128i *)&A[count], tmp[0]); + _mm_storeu_si128(tmp, _mm_setzero_si128()); + count += tmp_count; + tmp_count = 0; + i_a += vectorlength; + if (i_a == st_a) break; + v_a = _mm_lddqu_si128((__m128i *)&A[i_a]); + } + if (b_max <= a_max) { + i_b += vectorlength; + if (i_b == st_b) break; + v_b = _mm_lddqu_si128((__m128i *)&B[i_b]); + } + } + if ((i_a < st_a) && (i_b < st_b)) { + while (true) { + const __m128i res_v = _mm_cmpistrm( + v_b, v_a, + _SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK); + const int r = _mm_extract_epi32(res_v, 0); + __m128i sm16 = + _mm_loadu_si128((const __m128i *)shuffle_mask16 + r); + __m128i p = _mm_shuffle_epi8(v_a, sm16); + _mm_storeu_si128((__m128i *)&((uint16_t *)tmp)[tmp_count], p); + tmp_count += _mm_popcnt_u32(r); + const uint16_t a_max = A[i_a + vectorlength - 1]; + const uint16_t b_max = B[i_b + vectorlength - 1]; + if (a_max <= b_max) { + _mm_storeu_si128((__m128i *)&A[count], tmp[0]); + _mm_storeu_si128(tmp, _mm_setzero_si128()); + count += tmp_count; + tmp_count = 0; + i_a += vectorlength; + if (i_a == st_a) break; + v_a = _mm_lddqu_si128((__m128i *)&A[i_a]); + } + if (b_max <= a_max) { + i_b += vectorlength; + if (i_b == st_b) break; + v_b = _mm_lddqu_si128((__m128i *)&B[i_b]); + } + } + } + // tmp_count <= 8, so this does not affect efficiency so much + for (size_t i = 0; i < tmp_count; i++) { + A[count] = ((uint16_t *)tmp)[i]; + count++; + } + i_a += tmp_count; // We can at least jump pass $tmp_count elements in A + } + // intersect the tail using scalar intersection + while (i_a < s_a && i_b < s_b) { + uint16_t a = A[i_a]; + uint16_t b = B[i_b]; + if (a < b) { + i_a++; + } else if (b < a) { + i_b++; + } else { + A[count] = a; //==b; + count++; + i_a++; + i_b++; + } + } + return (int32_t)count; +} +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +int32_t intersect_vector16_cardinality(const uint16_t *__restrict__ A, + size_t s_a, + const uint16_t *__restrict__ B, + size_t s_b) { + size_t count = 0; + size_t i_a = 0, i_b = 0; + const int vectorlength = sizeof(__m128i) / sizeof(uint16_t); + const size_t st_a = (s_a / vectorlength) * vectorlength; + const size_t st_b = (s_b / vectorlength) * vectorlength; + __m128i v_a, v_b; + if ((i_a < st_a) && (i_b < st_b)) { + v_a = _mm_lddqu_si128((__m128i *)&A[i_a]); + v_b = _mm_lddqu_si128((__m128i *)&B[i_b]); + while ((A[i_a] == 0) || (B[i_b] == 0)) { + const __m128i res_v = _mm_cmpestrm( + v_b, vectorlength, v_a, vectorlength, + _SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK); + const int r = _mm_extract_epi32(res_v, 0); + count += _mm_popcnt_u32(r); + const uint16_t a_max = A[i_a + vectorlength - 1]; + const uint16_t b_max = B[i_b + vectorlength - 1]; + if (a_max <= b_max) { + i_a += vectorlength; + if (i_a == st_a) break; + v_a = _mm_lddqu_si128((__m128i *)&A[i_a]); + } + if (b_max <= a_max) { + i_b += vectorlength; + if (i_b == st_b) break; + v_b = _mm_lddqu_si128((__m128i *)&B[i_b]); + } + } + if ((i_a < st_a) && (i_b < st_b)) + while (true) { + const __m128i res_v = _mm_cmpistrm( + v_b, v_a, + _SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK); + const int r = _mm_extract_epi32(res_v, 0); + count += _mm_popcnt_u32(r); + const uint16_t a_max = A[i_a + vectorlength - 1]; + const uint16_t b_max = B[i_b + vectorlength - 1]; + if (a_max <= b_max) { + i_a += vectorlength; + if (i_a == st_a) break; + v_a = _mm_lddqu_si128((__m128i *)&A[i_a]); + } + if (b_max <= a_max) { + i_b += vectorlength; + if (i_b == st_b) break; + v_b = _mm_lddqu_si128((__m128i *)&B[i_b]); + } + } + } + // intersect the tail using scalar intersection + while (i_a < s_a && i_b < s_b) { + uint16_t a = A[i_a]; + uint16_t b = B[i_b]; + if (a < b) { + i_a++; + } else if (b < a) { + i_b++; + } else { + count++; + i_a++; + i_b++; + } + } + return (int32_t)count; +} +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +///////// +// Warning: +// This function may not be safe if A == C or B == C. +///////// +int32_t difference_vector16(const uint16_t *__restrict__ A, size_t s_a, + const uint16_t *__restrict__ B, size_t s_b, + uint16_t *C) { + // we handle the degenerate case + if (s_a == 0) return 0; + if (s_b == 0) { + if (A != C) memcpy(C, A, sizeof(uint16_t) * s_a); + return (int32_t)s_a; + } + // handle the leading zeroes, it is messy but it allows us to use the fast + // _mm_cmpistrm instrinsic safely + int32_t count = 0; + if ((A[0] == 0) || (B[0] == 0)) { + if ((A[0] == 0) && (B[0] == 0)) { + A++; + s_a--; + B++; + s_b--; + } else if (A[0] == 0) { + C[count++] = 0; + A++; + s_a--; + } else { + B++; + s_b--; + } + } + // at this point, we have two non-empty arrays, made of non-zero + // increasing values. + size_t i_a = 0, i_b = 0; + const size_t vectorlength = sizeof(__m128i) / sizeof(uint16_t); + const size_t st_a = (s_a / vectorlength) * vectorlength; + const size_t st_b = (s_b / vectorlength) * vectorlength; + if ((i_a < st_a) && (i_b < st_b)) { // this is the vectorized code path + __m128i v_a, v_b; //, v_bmax; + // we load a vector from A and a vector from B + v_a = _mm_lddqu_si128((__m128i *)&A[i_a]); + v_b = _mm_lddqu_si128((__m128i *)&B[i_b]); + // we have a runningmask which indicates which values from A have been + // spotted in B, these don't get written out. + __m128i runningmask_a_found_in_b = _mm_setzero_si128(); + /**** + * start of the main vectorized loop + *****/ + while (true) { + // afoundinb will contain a mask indicate for each entry in A + // whether it is seen + // in B + const __m128i a_found_in_b = _mm_cmpistrm( + v_b, v_a, + _SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK); + runningmask_a_found_in_b = + _mm_or_si128(runningmask_a_found_in_b, a_found_in_b); + // we always compare the last values of A and B + const uint16_t a_max = A[i_a + vectorlength - 1]; + const uint16_t b_max = B[i_b + vectorlength - 1]; + if (a_max <= b_max) { + // Ok. In this code path, we are ready to write our v_a + // because there is no need to read more from B, they will + // all be large values. + const int bitmask_belongs_to_difference = + _mm_extract_epi32(runningmask_a_found_in_b, 0) ^ 0xFF; + /*** next few lines are probably expensive *****/ + __m128i sm16 = _mm_loadu_si128((const __m128i *)shuffle_mask16 + + bitmask_belongs_to_difference); + __m128i p = _mm_shuffle_epi8(v_a, sm16); + _mm_storeu_si128((__m128i *)&C[count], p); // can overflow + count += _mm_popcnt_u32(bitmask_belongs_to_difference); + // we advance a + i_a += vectorlength; + if (i_a == st_a) // no more + break; + runningmask_a_found_in_b = _mm_setzero_si128(); + v_a = _mm_lddqu_si128((__m128i *)&A[i_a]); + } + if (b_max <= a_max) { + // in this code path, the current v_b has become useless + i_b += vectorlength; + if (i_b == st_b) break; + v_b = _mm_lddqu_si128((__m128i *)&B[i_b]); + } + } + // at this point, either we have i_a == st_a, which is the end of the + // vectorized processing, + // or we have i_b == st_b, and we are not done processing the vector... + // so we need to finish it off. + if (i_a < st_a) { // we have unfinished business... + uint16_t buffer[8]; // buffer to do a masked load + memset(buffer, 0, 8 * sizeof(uint16_t)); + memcpy(buffer, B + i_b, (s_b - i_b) * sizeof(uint16_t)); + v_b = _mm_lddqu_si128((__m128i *)buffer); + const __m128i a_found_in_b = _mm_cmpistrm( + v_b, v_a, + _SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK); + runningmask_a_found_in_b = + _mm_or_si128(runningmask_a_found_in_b, a_found_in_b); + const int bitmask_belongs_to_difference = + _mm_extract_epi32(runningmask_a_found_in_b, 0) ^ 0xFF; + __m128i sm16 = _mm_loadu_si128((const __m128i *)shuffle_mask16 + + bitmask_belongs_to_difference); + __m128i p = _mm_shuffle_epi8(v_a, sm16); + _mm_storeu_si128((__m128i *)&C[count], p); // can overflow + count += _mm_popcnt_u32(bitmask_belongs_to_difference); + i_a += vectorlength; + } + // at this point we should have i_a == st_a and i_b == st_b + } + // do the tail using scalar code + while (i_a < s_a && i_b < s_b) { + uint16_t a = A[i_a]; + uint16_t b = B[i_b]; + if (b < a) { + i_b++; + } else if (a < b) { + C[count] = a; + count++; + i_a++; + } else { //== + i_a++; + i_b++; + } + } + if (i_a < s_a) { + if (C == A) { + assert((size_t)count <= i_a); + if ((size_t)count < i_a) { + memmove(C + count, A + i_a, sizeof(uint16_t) * (s_a - i_a)); + } + } else { + for (size_t i = 0; i < (s_a - i_a); i++) { + C[count + i] = A[i + i_a]; + } + } + count += (int32_t)(s_a - i_a); + } + return count; +} +CROARING_UNTARGET_AVX2 +#endif // CROARING_IS_X64 + +/** + * Branchless binary search going after 4 values at once. + * Assumes that array is sorted. + * You have that array[*index1] >= target1, array[*index12] >= target2, ... + * except when *index1 = n, in which case you know that all values in array are + * smaller than target1, and so forth. + * It has logarithmic complexity. + */ +static void binarySearch4(const uint16_t *array, int32_t n, uint16_t target1, + uint16_t target2, uint16_t target3, uint16_t target4, + int32_t *index1, int32_t *index2, int32_t *index3, + int32_t *index4) { + const uint16_t *base1 = array; + const uint16_t *base2 = array; + const uint16_t *base3 = array; + const uint16_t *base4 = array; + if (n == 0) return; + while (n > 1) { + int32_t half = n >> 1; + base1 = (base1[half] < target1) ? &base1[half] : base1; + base2 = (base2[half] < target2) ? &base2[half] : base2; + base3 = (base3[half] < target3) ? &base3[half] : base3; + base4 = (base4[half] < target4) ? &base4[half] : base4; + n -= half; + } + *index1 = (int32_t)((*base1 < target1) + base1 - array); + *index2 = (int32_t)((*base2 < target2) + base2 - array); + *index3 = (int32_t)((*base3 < target3) + base3 - array); + *index4 = (int32_t)((*base4 < target4) + base4 - array); +} + +/** + * Branchless binary search going after 2 values at once. + * Assumes that array is sorted. + * You have that array[*index1] >= target1, array[*index12] >= target2. + * except when *index1 = n, in which case you know that all values in array are + * smaller than target1, and so forth. + * It has logarithmic complexity. + */ +static void binarySearch2(const uint16_t *array, int32_t n, uint16_t target1, + uint16_t target2, int32_t *index1, int32_t *index2) { + const uint16_t *base1 = array; + const uint16_t *base2 = array; + if (n == 0) return; + while (n > 1) { + int32_t half = n >> 1; + base1 = (base1[half] < target1) ? &base1[half] : base1; + base2 = (base2[half] < target2) ? &base2[half] : base2; + n -= half; + } + *index1 = (int32_t)((*base1 < target1) + base1 - array); + *index2 = (int32_t)((*base2 < target2) + base2 - array); +} + +/* Computes the intersection between one small and one large set of uint16_t. + * Stores the result into buffer and return the number of elements. + * Processes the small set in blocks of 4 values calling binarySearch4 + * and binarySearch2. This approach can be slightly superior to a conventional + * galloping search in some instances. + */ +int32_t intersect_skewed_uint16(const uint16_t *small, size_t size_s, + const uint16_t *large, size_t size_l, + uint16_t *buffer) { + size_t pos = 0, idx_l = 0, idx_s = 0; + + if (0 == size_s) { + return 0; + } + int32_t index1 = 0, index2 = 0, index3 = 0, index4 = 0; + while ((idx_s + 4 <= size_s) && (idx_l < size_l)) { + uint16_t target1 = small[idx_s]; + uint16_t target2 = small[idx_s + 1]; + uint16_t target3 = small[idx_s + 2]; + uint16_t target4 = small[idx_s + 3]; + binarySearch4(large + idx_l, (int32_t)(size_l - idx_l), target1, + target2, target3, target4, &index1, &index2, &index3, + &index4); + if ((index1 + idx_l < size_l) && (large[idx_l + index1] == target1)) { + buffer[pos++] = target1; + } + if ((index2 + idx_l < size_l) && (large[idx_l + index2] == target2)) { + buffer[pos++] = target2; + } + if ((index3 + idx_l < size_l) && (large[idx_l + index3] == target3)) { + buffer[pos++] = target3; + } + if ((index4 + idx_l < size_l) && (large[idx_l + index4] == target4)) { + buffer[pos++] = target4; + } + idx_s += 4; + idx_l += index4; + } + if ((idx_s + 2 <= size_s) && (idx_l < size_l)) { + uint16_t target1 = small[idx_s]; + uint16_t target2 = small[idx_s + 1]; + binarySearch2(large + idx_l, (int32_t)(size_l - idx_l), target1, + target2, &index1, &index2); + if ((index1 + idx_l < size_l) && (large[idx_l + index1] == target1)) { + buffer[pos++] = target1; + } + if ((index2 + idx_l < size_l) && (large[idx_l + index2] == target2)) { + buffer[pos++] = target2; + } + idx_s += 2; + idx_l += index2; + } + if ((idx_s < size_s) && (idx_l < size_l)) { + uint16_t val_s = small[idx_s]; + int32_t index = + binarySearch(large + idx_l, (int32_t)(size_l - idx_l), val_s); + if (index >= 0) buffer[pos++] = val_s; + } + return (int32_t)pos; +} + +// TODO: this could be accelerated, possibly, by using binarySearch4 as above. +int32_t intersect_skewed_uint16_cardinality(const uint16_t *small, + size_t size_s, + const uint16_t *large, + size_t size_l) { + size_t pos = 0, idx_l = 0, idx_s = 0; + + if (0 == size_s) { + return 0; + } + + uint16_t val_l = large[idx_l], val_s = small[idx_s]; + + while (true) { + if (val_l < val_s) { + idx_l = advanceUntil(large, (int32_t)idx_l, (int32_t)size_l, val_s); + if (idx_l == size_l) break; + val_l = large[idx_l]; + } else if (val_s < val_l) { + idx_s++; + if (idx_s == size_s) break; + val_s = small[idx_s]; + } else { + pos++; + idx_s++; + if (idx_s == size_s) break; + val_s = small[idx_s]; + idx_l = advanceUntil(large, (int32_t)idx_l, (int32_t)size_l, val_s); + if (idx_l == size_l) break; + val_l = large[idx_l]; + } + } + + return (int32_t)pos; +} + +bool intersect_skewed_uint16_nonempty(const uint16_t *small, size_t size_s, + const uint16_t *large, size_t size_l) { + size_t idx_l = 0, idx_s = 0; + + if (0 == size_s) { + return false; + } + + uint16_t val_l = large[idx_l], val_s = small[idx_s]; + + while (true) { + if (val_l < val_s) { + idx_l = advanceUntil(large, (int32_t)idx_l, (int32_t)size_l, val_s); + if (idx_l == size_l) break; + val_l = large[idx_l]; + } else if (val_s < val_l) { + idx_s++; + if (idx_s == size_s) break; + val_s = small[idx_s]; + } else { + return true; + } + } + + return false; +} + +/** + * Generic intersection function. + */ +int32_t intersect_uint16(const uint16_t *A, const size_t lenA, + const uint16_t *B, const size_t lenB, uint16_t *out) { + const uint16_t *initout = out; + if (lenA == 0 || lenB == 0) return 0; + const uint16_t *endA = A + lenA; + const uint16_t *endB = B + lenB; + + while (1) { + while (*A < *B) { + SKIP_FIRST_COMPARE: + if (++A == endA) return (int32_t)(out - initout); + } + while (*A > *B) { + if (++B == endB) return (int32_t)(out - initout); + } + if (*A == *B) { + *out++ = *A; + if (++A == endA || ++B == endB) return (int32_t)(out - initout); + } else { + goto SKIP_FIRST_COMPARE; + } + } + // return (int32_t)(out - initout); // NOTREACHED +} + +int32_t intersect_uint16_cardinality(const uint16_t *A, const size_t lenA, + const uint16_t *B, const size_t lenB) { + int32_t answer = 0; + if (lenA == 0 || lenB == 0) return 0; + const uint16_t *endA = A + lenA; + const uint16_t *endB = B + lenB; + + while (1) { + while (*A < *B) { + SKIP_FIRST_COMPARE: + if (++A == endA) return answer; + } + while (*A > *B) { + if (++B == endB) return answer; + } + if (*A == *B) { + ++answer; + if (++A == endA || ++B == endB) return answer; + } else { + goto SKIP_FIRST_COMPARE; + } + } + // return answer; // NOTREACHED +} + +bool intersect_uint16_nonempty(const uint16_t *A, const size_t lenA, + const uint16_t *B, const size_t lenB) { + if (lenA == 0 || lenB == 0) return 0; + const uint16_t *endA = A + lenA; + const uint16_t *endB = B + lenB; + + while (1) { + while (*A < *B) { + SKIP_FIRST_COMPARE: + if (++A == endA) return false; + } + while (*A > *B) { + if (++B == endB) return false; + } + if (*A == *B) { + return true; + } else { + goto SKIP_FIRST_COMPARE; + } + } + return false; // NOTREACHED +} + +/** + * Generic intersection function. + */ +size_t intersection_uint32(const uint32_t *A, const size_t lenA, + const uint32_t *B, const size_t lenB, + uint32_t *out) { + const uint32_t *initout = out; + if (lenA == 0 || lenB == 0) return 0; + const uint32_t *endA = A + lenA; + const uint32_t *endB = B + lenB; + + while (1) { + while (*A < *B) { + SKIP_FIRST_COMPARE: + if (++A == endA) return (out - initout); + } + while (*A > *B) { + if (++B == endB) return (out - initout); + } + if (*A == *B) { + *out++ = *A; + if (++A == endA || ++B == endB) return (out - initout); + } else { + goto SKIP_FIRST_COMPARE; + } + } + // return (out - initout); // NOTREACHED +} + +size_t intersection_uint32_card(const uint32_t *A, const size_t lenA, + const uint32_t *B, const size_t lenB) { + if (lenA == 0 || lenB == 0) return 0; + size_t card = 0; + const uint32_t *endA = A + lenA; + const uint32_t *endB = B + lenB; + + while (1) { + while (*A < *B) { + SKIP_FIRST_COMPARE: + if (++A == endA) return card; + } + while (*A > *B) { + if (++B == endB) return card; + } + if (*A == *B) { + card++; + if (++A == endA || ++B == endB) return card; + } else { + goto SKIP_FIRST_COMPARE; + } + } + // return card; // NOTREACHED +} + +// can one vectorize the computation of the union? (Update: Yes! See +// union_vector16). + +size_t union_uint16(const uint16_t *set_1, size_t size_1, const uint16_t *set_2, + size_t size_2, uint16_t *buffer) { + size_t pos = 0, idx_1 = 0, idx_2 = 0; + + if (0 == size_2) { + memmove(buffer, set_1, size_1 * sizeof(uint16_t)); + return size_1; + } + if (0 == size_1) { + memmove(buffer, set_2, size_2 * sizeof(uint16_t)); + return size_2; + } + + uint16_t val_1 = set_1[idx_1], val_2 = set_2[idx_2]; + + while (true) { + if (val_1 < val_2) { + buffer[pos++] = val_1; + ++idx_1; + if (idx_1 >= size_1) break; + val_1 = set_1[idx_1]; + } else if (val_2 < val_1) { + buffer[pos++] = val_2; + ++idx_2; + if (idx_2 >= size_2) break; + val_2 = set_2[idx_2]; + } else { + buffer[pos++] = val_1; + ++idx_1; + ++idx_2; + if (idx_1 >= size_1 || idx_2 >= size_2) break; + val_1 = set_1[idx_1]; + val_2 = set_2[idx_2]; + } + } + + if (idx_1 < size_1) { + const size_t n_elems = size_1 - idx_1; + memmove(buffer + pos, set_1 + idx_1, n_elems * sizeof(uint16_t)); + pos += n_elems; + } else if (idx_2 < size_2) { + const size_t n_elems = size_2 - idx_2; + memmove(buffer + pos, set_2 + idx_2, n_elems * sizeof(uint16_t)); + pos += n_elems; + } + + return pos; +} + +int difference_uint16(const uint16_t *a1, int length1, const uint16_t *a2, + int length2, uint16_t *a_out) { + int out_card = 0; + int k1 = 0, k2 = 0; + if (length1 == 0) return 0; + if (length2 == 0) { + if (a1 != a_out) memcpy(a_out, a1, sizeof(uint16_t) * length1); + return length1; + } + uint16_t s1 = a1[k1]; + uint16_t s2 = a2[k2]; + while (true) { + if (s1 < s2) { + a_out[out_card++] = s1; + ++k1; + if (k1 >= length1) { + break; + } + s1 = a1[k1]; + } else if (s1 == s2) { + ++k1; + ++k2; + if (k1 >= length1) { + break; + } + if (k2 >= length2) { + memmove(a_out + out_card, a1 + k1, + sizeof(uint16_t) * (length1 - k1)); + return out_card + length1 - k1; + } + s1 = a1[k1]; + s2 = a2[k2]; + } else { // if (val1>val2) + ++k2; + if (k2 >= length2) { + memmove(a_out + out_card, a1 + k1, + sizeof(uint16_t) * (length1 - k1)); + return out_card + length1 - k1; + } + s2 = a2[k2]; + } + } + return out_card; +} + +int32_t xor_uint16(const uint16_t *array_1, int32_t card_1, + const uint16_t *array_2, int32_t card_2, uint16_t *out) { + int32_t pos1 = 0, pos2 = 0, pos_out = 0; + while (pos1 < card_1 && pos2 < card_2) { + const uint16_t v1 = array_1[pos1]; + const uint16_t v2 = array_2[pos2]; + if (v1 == v2) { + ++pos1; + ++pos2; + continue; + } + if (v1 < v2) { + out[pos_out++] = v1; + ++pos1; + } else { + out[pos_out++] = v2; + ++pos2; + } + } + if (pos1 < card_1) { + const size_t n_elems = card_1 - pos1; + memcpy(out + pos_out, array_1 + pos1, n_elems * sizeof(uint16_t)); + pos_out += (int32_t)n_elems; + } else if (pos2 < card_2) { + const size_t n_elems = card_2 - pos2; + memcpy(out + pos_out, array_2 + pos2, n_elems * sizeof(uint16_t)); + pos_out += (int32_t)n_elems; + } + return pos_out; +} + +#if CROARING_IS_X64 + +/*** + * start of the SIMD 16-bit union code + * + */ +CROARING_TARGET_AVX2 + +// Assuming that vInput1 and vInput2 are sorted, produces a sorted output going +// from vecMin all the way to vecMax +// developed originally for merge sort using SIMD instructions. +// Standard merge. See, e.g., Inoue and Taura, SIMD- and Cache-Friendly +// Algorithm for Sorting an Array of Structures +static inline void sse_merge(const __m128i *vInput1, + const __m128i *vInput2, // input 1 & 2 + __m128i *vecMin, __m128i *vecMax) { // output + __m128i vecTmp; + vecTmp = _mm_min_epu16(*vInput1, *vInput2); + *vecMax = _mm_max_epu16(*vInput1, *vInput2); + vecTmp = _mm_alignr_epi8(vecTmp, vecTmp, 2); + *vecMin = _mm_min_epu16(vecTmp, *vecMax); + *vecMax = _mm_max_epu16(vecTmp, *vecMax); + vecTmp = _mm_alignr_epi8(*vecMin, *vecMin, 2); + *vecMin = _mm_min_epu16(vecTmp, *vecMax); + *vecMax = _mm_max_epu16(vecTmp, *vecMax); + vecTmp = _mm_alignr_epi8(*vecMin, *vecMin, 2); + *vecMin = _mm_min_epu16(vecTmp, *vecMax); + *vecMax = _mm_max_epu16(vecTmp, *vecMax); + vecTmp = _mm_alignr_epi8(*vecMin, *vecMin, 2); + *vecMin = _mm_min_epu16(vecTmp, *vecMax); + *vecMax = _mm_max_epu16(vecTmp, *vecMax); + vecTmp = _mm_alignr_epi8(*vecMin, *vecMin, 2); + *vecMin = _mm_min_epu16(vecTmp, *vecMax); + *vecMax = _mm_max_epu16(vecTmp, *vecMax); + vecTmp = _mm_alignr_epi8(*vecMin, *vecMin, 2); + *vecMin = _mm_min_epu16(vecTmp, *vecMax); + *vecMax = _mm_max_epu16(vecTmp, *vecMax); + vecTmp = _mm_alignr_epi8(*vecMin, *vecMin, 2); + *vecMin = _mm_min_epu16(vecTmp, *vecMax); + *vecMax = _mm_max_epu16(vecTmp, *vecMax); + *vecMin = _mm_alignr_epi8(*vecMin, *vecMin, 2); +} +CROARING_UNTARGET_AVX2 +// used by store_unique, generated by simdunion.py +static uint8_t uniqshuf[] = { + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, + 0xc, 0xd, 0xe, 0xf, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, + 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, + 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, + 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x6, 0x7, 0x8, 0x9, + 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0x2, 0x3, 0x6, 0x7, + 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x5, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, + 0x2, 0x3, 0x4, 0x5, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, 0x8, 0x9, 0xa, 0xb, + 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x8, 0x9, + 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x8, 0x9, + 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, + 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, + 0x6, 0x7, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x4, 0x5, 0x6, 0x7, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x6, 0x7, 0xa, 0xb, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x6, 0x7, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x6, 0x7, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x6, 0x7, 0xa, 0xb, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x7, 0xa, 0xb, + 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, 0xa, 0xb, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, + 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x4, 0x5, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0xa, 0xb, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0xa, 0xb, + 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, + 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, + 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x6, 0x7, + 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x6, 0x7, + 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x8, 0x9, + 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, + 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x4, 0x5, 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8, 0x9, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, + 0x6, 0x7, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x4, 0x5, 0x6, 0x7, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x6, 0x7, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x6, 0x7, + 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x6, 0x7, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x7, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x5, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x4, 0x5, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, 0xc, 0xd, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0xc, 0xd, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xc, 0xd, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, + 0x8, 0x9, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, + 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x7, 0x8, 0x9, + 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x8, 0x9, 0xa, 0xb, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, 0x8, 0x9, 0xa, 0xb, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, + 0x8, 0x9, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x4, 0x5, 0x8, 0x9, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x8, 0x9, 0xa, 0xb, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x8, 0x9, + 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x8, 0x9, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x8, 0x9, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x5, 0x6, 0x7, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, 0x6, 0x7, 0xa, 0xb, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x6, 0x7, + 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x6, 0x7, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x6, 0x7, 0xa, 0xb, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x6, 0x7, + 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x6, 0x7, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0xa, 0xb, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, + 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x4, 0x5, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0xa, 0xb, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xa, 0xb, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, + 0x6, 0x7, 0x8, 0x9, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x6, 0x7, 0x8, 0x9, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x6, 0x7, + 0x8, 0x9, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x6, 0x7, 0x8, 0x9, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x7, 0x8, 0x9, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x5, 0x8, 0x9, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x4, 0x5, 0x8, 0x9, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, 0x8, 0x9, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x8, 0x9, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x8, 0x9, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x8, 0x9, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x8, 0x9, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x8, 0x9, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, + 0x6, 0x7, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x4, 0x5, 0x6, 0x7, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x6, 0x7, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x6, 0x7, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x6, 0x7, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x6, 0x7, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x7, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, + 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x4, 0x5, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0xe, 0xf, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0xe, 0xf, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xe, 0xf, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, + 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, + 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x6, 0x7, + 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x6, 0x7, + 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x8, 0x9, + 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, + 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x4, 0x5, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8, 0x9, 0xa, 0xb, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0xa, 0xb, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0xa, 0xb, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, + 0x6, 0x7, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x4, 0x5, 0x6, 0x7, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x6, 0x7, 0xa, 0xb, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x6, 0x7, + 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x6, 0x7, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x7, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x5, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x4, 0x5, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, 0xa, 0xb, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0xa, 0xb, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0xa, 0xb, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xa, 0xb, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, + 0x8, 0x9, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, + 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x7, 0x8, 0x9, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x8, 0x9, 0xc, 0xd, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, 0x8, 0x9, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, + 0x8, 0x9, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x4, 0x5, 0x8, 0x9, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x8, 0x9, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x8, 0x9, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x8, 0x9, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x8, 0x9, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x5, 0x6, 0x7, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, 0x6, 0x7, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x6, 0x7, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x6, 0x7, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x6, 0x7, 0xc, 0xd, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x6, 0x7, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x6, 0x7, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0xc, 0xd, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x4, 0x5, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0xc, 0xd, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xc, 0xd, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, + 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, + 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x6, 0x7, 0x8, 0x9, + 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x6, 0x7, + 0x8, 0x9, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x5, 0x8, 0x9, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x4, 0x5, 0x8, 0x9, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, 0x8, 0x9, 0xa, 0xb, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x8, 0x9, + 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x8, 0x9, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x8, 0x9, 0xa, 0xb, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x8, 0x9, + 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x8, 0x9, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, + 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, + 0x6, 0x7, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x4, 0x5, 0x6, 0x7, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x6, 0x7, 0xa, 0xb, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x6, 0x7, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x6, 0x7, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x6, 0x7, 0xa, 0xb, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x7, 0xa, 0xb, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, 0xa, 0xb, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, + 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x4, 0x5, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0xa, 0xb, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0xa, 0xb, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xa, 0xb, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x6, 0x7, + 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x6, 0x7, 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x6, 0x7, 0x8, 0x9, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x6, 0x7, + 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x6, 0x7, 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x8, 0x9, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, + 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x4, 0x5, 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x8, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8, 0x9, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, + 0x6, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x4, 0x5, 0x6, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, 0x6, 0x7, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0x6, 0x7, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x6, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2, 0x3, 0x4, 0x5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0x4, 0x5, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4, 0x5, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0, 0x1, 0x2, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x1, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF}; +CROARING_TARGET_AVX2 +// write vector new, while omitting repeated values assuming that previously +// written vector was "old" +static inline int store_unique(__m128i old, __m128i newval, uint16_t *output) { + __m128i vecTmp = _mm_alignr_epi8(newval, old, 16 - 2); + // lots of high latency instructions follow (optimize?) + int M = _mm_movemask_epi8( + _mm_packs_epi16(_mm_cmpeq_epi16(vecTmp, newval), _mm_setzero_si128())); + int numberofnewvalues = 8 - _mm_popcnt_u32(M); + __m128i key = _mm_lddqu_si128((const __m128i *)uniqshuf + M); + __m128i val = _mm_shuffle_epi8(newval, key); + _mm_storeu_si128((__m128i *)output, val); + return numberofnewvalues; +} +CROARING_UNTARGET_AVX2 + +// working in-place, this function overwrites the repeated values +// could be avoided? +static inline uint32_t unique(uint16_t *out, uint32_t len) { + uint32_t pos = 1; + for (uint32_t i = 1; i < len; ++i) { + if (out[i] != out[i - 1]) { + out[pos++] = out[i]; + } + } + return pos; +} + +// use with qsort, could be avoided +static int uint16_compare(const void *a, const void *b) { + return (*(uint16_t *)a - *(uint16_t *)b); +} + +CROARING_TARGET_AVX2 +// a one-pass SSE union algorithm +// This function may not be safe if array1 == output or array2 == output. +uint32_t union_vector16(const uint16_t *__restrict__ array1, uint32_t length1, + const uint16_t *__restrict__ array2, uint32_t length2, + uint16_t *__restrict__ output) { + if ((length1 < 8) || (length2 < 8)) { + return (uint32_t)union_uint16(array1, length1, array2, length2, output); + } + __m128i vA, vB, V, vecMin, vecMax; + __m128i laststore; + uint16_t *initoutput = output; + uint32_t len1 = length1 / 8; + uint32_t len2 = length2 / 8; + uint32_t pos1 = 0; + uint32_t pos2 = 0; + // we start the machine + vA = _mm_lddqu_si128((const __m128i *)array1 + pos1); + pos1++; + vB = _mm_lddqu_si128((const __m128i *)array2 + pos2); + pos2++; + sse_merge(&vA, &vB, &vecMin, &vecMax); + laststore = _mm_set1_epi16(-1); + output += store_unique(laststore, vecMin, output); + laststore = vecMin; + if ((pos1 < len1) && (pos2 < len2)) { + uint16_t curA, curB; + curA = array1[8 * pos1]; + curB = array2[8 * pos2]; + while (true) { + if (curA <= curB) { + V = _mm_lddqu_si128((const __m128i *)array1 + pos1); + pos1++; + if (pos1 < len1) { + curA = array1[8 * pos1]; + } else { + break; + } + } else { + V = _mm_lddqu_si128((const __m128i *)array2 + pos2); + pos2++; + if (pos2 < len2) { + curB = array2[8 * pos2]; + } else { + break; + } + } + sse_merge(&V, &vecMax, &vecMin, &vecMax); + output += store_unique(laststore, vecMin, output); + laststore = vecMin; + } + sse_merge(&V, &vecMax, &vecMin, &vecMax); + output += store_unique(laststore, vecMin, output); + laststore = vecMin; + } + // we finish the rest off using a scalar algorithm + // could be improved? + // + // copy the small end on a tmp buffer + uint32_t len = (uint32_t)(output - initoutput); + uint16_t buffer[16]; + uint32_t leftoversize = store_unique(laststore, vecMax, buffer); + if (pos1 == len1) { + memcpy(buffer + leftoversize, array1 + 8 * pos1, + (length1 - 8 * len1) * sizeof(uint16_t)); + leftoversize += length1 - 8 * len1; + qsort(buffer, leftoversize, sizeof(uint16_t), uint16_compare); + + leftoversize = unique(buffer, leftoversize); + len += (uint32_t)union_uint16(buffer, leftoversize, array2 + 8 * pos2, + length2 - 8 * pos2, output); + } else { + memcpy(buffer + leftoversize, array2 + 8 * pos2, + (length2 - 8 * len2) * sizeof(uint16_t)); + leftoversize += length2 - 8 * len2; + qsort(buffer, leftoversize, sizeof(uint16_t), uint16_compare); + leftoversize = unique(buffer, leftoversize); + len += (uint32_t)union_uint16(buffer, leftoversize, array1 + 8 * pos1, + length1 - 8 * pos1, output); + } + return len; +} +CROARING_UNTARGET_AVX2 + +/** + * End of the SIMD 16-bit union code + * + */ + +/** + * Start of SIMD 16-bit XOR code + */ + +CROARING_TARGET_AVX2 +// write vector new, while omitting repeated values assuming that previously +// written vector was "old" +static inline int store_unique_xor(__m128i old, __m128i newval, + uint16_t *output) { + __m128i vecTmp1 = _mm_alignr_epi8(newval, old, 16 - 4); + __m128i vecTmp2 = _mm_alignr_epi8(newval, old, 16 - 2); + __m128i equalleft = _mm_cmpeq_epi16(vecTmp2, vecTmp1); + __m128i equalright = _mm_cmpeq_epi16(vecTmp2, newval); + __m128i equalleftoright = _mm_or_si128(equalleft, equalright); + int M = _mm_movemask_epi8( + _mm_packs_epi16(equalleftoright, _mm_setzero_si128())); + int numberofnewvalues = 8 - _mm_popcnt_u32(M); + __m128i key = _mm_lddqu_si128((const __m128i *)uniqshuf + M); + __m128i val = _mm_shuffle_epi8(vecTmp2, key); + _mm_storeu_si128((__m128i *)output, val); + return numberofnewvalues; +} +CROARING_UNTARGET_AVX2 + +// working in-place, this function overwrites the repeated values +// could be avoided? Warning: assumes len > 0 +static inline uint32_t unique_xor(uint16_t *out, uint32_t len) { + uint32_t pos = 1; + for (uint32_t i = 1; i < len; ++i) { + if (out[i] != out[i - 1]) { + out[pos++] = out[i]; + } else + pos--; // if it is identical to previous, delete it + } + return pos; +} +CROARING_TARGET_AVX2 +// a one-pass SSE xor algorithm +uint32_t xor_vector16(const uint16_t *__restrict__ array1, uint32_t length1, + const uint16_t *__restrict__ array2, uint32_t length2, + uint16_t *__restrict__ output) { + if ((length1 < 8) || (length2 < 8)) { + return xor_uint16(array1, length1, array2, length2, output); + } + __m128i vA, vB, V, vecMin, vecMax; + __m128i laststore; + uint16_t *initoutput = output; + uint32_t len1 = length1 / 8; + uint32_t len2 = length2 / 8; + uint32_t pos1 = 0; + uint32_t pos2 = 0; + // we start the machine + vA = _mm_lddqu_si128((const __m128i *)array1 + pos1); + pos1++; + vB = _mm_lddqu_si128((const __m128i *)array2 + pos2); + pos2++; + sse_merge(&vA, &vB, &vecMin, &vecMax); + laststore = _mm_set1_epi16(-1); + uint16_t buffer[17]; + output += store_unique_xor(laststore, vecMin, output); + + laststore = vecMin; + if ((pos1 < len1) && (pos2 < len2)) { + uint16_t curA, curB; + curA = array1[8 * pos1]; + curB = array2[8 * pos2]; + while (true) { + if (curA <= curB) { + V = _mm_lddqu_si128((const __m128i *)array1 + pos1); + pos1++; + if (pos1 < len1) { + curA = array1[8 * pos1]; + } else { + break; + } + } else { + V = _mm_lddqu_si128((const __m128i *)array2 + pos2); + pos2++; + if (pos2 < len2) { + curB = array2[8 * pos2]; + } else { + break; + } + } + sse_merge(&V, &vecMax, &vecMin, &vecMax); + // conditionally stores the last value of laststore as well as all + // but the + // last value of vecMin + output += store_unique_xor(laststore, vecMin, output); + laststore = vecMin; + } + sse_merge(&V, &vecMax, &vecMin, &vecMax); + // conditionally stores the last value of laststore as well as all but + // the + // last value of vecMin + output += store_unique_xor(laststore, vecMin, output); + laststore = vecMin; + } + uint32_t len = (uint32_t)(output - initoutput); + + // we finish the rest off using a scalar algorithm + // could be improved? + // conditionally stores the last value of laststore as well as all but the + // last value of vecMax, + // we store to "buffer" + int leftoversize = store_unique_xor(laststore, vecMax, buffer); + uint16_t vec7 = (uint16_t)_mm_extract_epi16(vecMax, 7); + uint16_t vec6 = (uint16_t)_mm_extract_epi16(vecMax, 6); + if (vec7 != vec6) buffer[leftoversize++] = vec7; + if (pos1 == len1) { + memcpy(buffer + leftoversize, array1 + 8 * pos1, + (length1 - 8 * len1) * sizeof(uint16_t)); + leftoversize += length1 - 8 * len1; + if (leftoversize == 0) { // trivial case + memcpy(output, array2 + 8 * pos2, + (length2 - 8 * pos2) * sizeof(uint16_t)); + len += (length2 - 8 * pos2); + } else { + qsort(buffer, leftoversize, sizeof(uint16_t), uint16_compare); + leftoversize = unique_xor(buffer, leftoversize); + len += xor_uint16(buffer, leftoversize, array2 + 8 * pos2, + length2 - 8 * pos2, output); + } + } else { + memcpy(buffer + leftoversize, array2 + 8 * pos2, + (length2 - 8 * len2) * sizeof(uint16_t)); + leftoversize += length2 - 8 * len2; + if (leftoversize == 0) { // trivial case + memcpy(output, array1 + 8 * pos1, + (length1 - 8 * pos1) * sizeof(uint16_t)); + len += (length1 - 8 * pos1); + } else { + qsort(buffer, leftoversize, sizeof(uint16_t), uint16_compare); + leftoversize = unique_xor(buffer, leftoversize); + len += xor_uint16(buffer, leftoversize, array1 + 8 * pos1, + length1 - 8 * pos1, output); + } + } + return len; +} +CROARING_UNTARGET_AVX2 +/** + * End of SIMD 16-bit XOR code + */ + +#endif // CROARING_IS_X64 + +size_t union_uint32(const uint32_t *set_1, size_t size_1, const uint32_t *set_2, + size_t size_2, uint32_t *buffer) { + size_t pos = 0, idx_1 = 0, idx_2 = 0; + + if (0 == size_2) { + memmove(buffer, set_1, size_1 * sizeof(uint32_t)); + return size_1; + } + if (0 == size_1) { + memmove(buffer, set_2, size_2 * sizeof(uint32_t)); + return size_2; + } + + uint32_t val_1 = set_1[idx_1], val_2 = set_2[idx_2]; + + while (true) { + if (val_1 < val_2) { + buffer[pos++] = val_1; + ++idx_1; + if (idx_1 >= size_1) break; + val_1 = set_1[idx_1]; + } else if (val_2 < val_1) { + buffer[pos++] = val_2; + ++idx_2; + if (idx_2 >= size_2) break; + val_2 = set_2[idx_2]; + } else { + buffer[pos++] = val_1; + ++idx_1; + ++idx_2; + if (idx_1 >= size_1 || idx_2 >= size_2) break; + val_1 = set_1[idx_1]; + val_2 = set_2[idx_2]; + } + } + + if (idx_1 < size_1) { + const size_t n_elems = size_1 - idx_1; + memmove(buffer + pos, set_1 + idx_1, n_elems * sizeof(uint32_t)); + pos += n_elems; + } else if (idx_2 < size_2) { + const size_t n_elems = size_2 - idx_2; + memmove(buffer + pos, set_2 + idx_2, n_elems * sizeof(uint32_t)); + pos += n_elems; + } + + return pos; +} + +size_t union_uint32_card(const uint32_t *set_1, size_t size_1, + const uint32_t *set_2, size_t size_2) { + size_t pos = 0, idx_1 = 0, idx_2 = 0; + + if (0 == size_2) { + return size_1; + } + if (0 == size_1) { + return size_2; + } + + uint32_t val_1 = set_1[idx_1], val_2 = set_2[idx_2]; + + while (true) { + if (val_1 < val_2) { + ++idx_1; + ++pos; + if (idx_1 >= size_1) break; + val_1 = set_1[idx_1]; + } else if (val_2 < val_1) { + ++idx_2; + ++pos; + if (idx_2 >= size_2) break; + val_2 = set_2[idx_2]; + } else { + ++idx_1; + ++idx_2; + ++pos; + if (idx_1 >= size_1 || idx_2 >= size_2) break; + val_1 = set_1[idx_1]; + val_2 = set_2[idx_2]; + } + } + + if (idx_1 < size_1) { + const size_t n_elems = size_1 - idx_1; + pos += n_elems; + } else if (idx_2 < size_2) { + const size_t n_elems = size_2 - idx_2; + pos += n_elems; + } + return pos; +} + +size_t fast_union_uint16(const uint16_t *set_1, size_t size_1, + const uint16_t *set_2, size_t size_2, + uint16_t *buffer) { +#if CROARING_IS_X64 + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX2) { + // compute union with smallest array first + if (size_1 < size_2) { + return union_vector16(set_1, (uint32_t)size_1, set_2, + (uint32_t)size_2, buffer); + } else { + return union_vector16(set_2, (uint32_t)size_2, set_1, + (uint32_t)size_1, buffer); + } + } else { + // compute union with smallest array first + if (size_1 < size_2) { + return union_uint16(set_1, size_1, set_2, size_2, buffer); + } else { + return union_uint16(set_2, size_2, set_1, size_1, buffer); + } + } +#else + // compute union with smallest array first + if (size_1 < size_2) { + return union_uint16(set_1, size_1, set_2, size_2, buffer); + } else { + return union_uint16(set_2, size_2, set_1, size_1, buffer); + } +#endif +} +#if CROARING_IS_X64 +#if CROARING_COMPILER_SUPPORTS_AVX512 +CROARING_TARGET_AVX512 +static inline bool _avx512_memequals(const void *s1, const void *s2, size_t n) { + const uint8_t *ptr1 = (const uint8_t *)s1; + const uint8_t *ptr2 = (const uint8_t *)s2; + const uint8_t *end1 = ptr1 + n; + const uint8_t *end8 = ptr1 + ((n >> 3) << 3); + const uint8_t *end32 = ptr1 + ((n >> 5) << 5); + const uint8_t *end64 = ptr1 + ((n >> 6) << 6); + + while (ptr1 < end64) { + __m512i r1 = _mm512_loadu_si512((const __m512i *)ptr1); + __m512i r2 = _mm512_loadu_si512((const __m512i *)ptr2); + + uint64_t mask = _mm512_cmpeq_epi8_mask(r1, r2); + + if (mask != UINT64_MAX) { + return false; + } + + ptr1 += 64; + ptr2 += 64; + } + + while (ptr1 < end32) { + __m256i r1 = _mm256_loadu_si256((const __m256i *)ptr1); + __m256i r2 = _mm256_loadu_si256((const __m256i *)ptr2); + int mask = _mm256_movemask_epi8(_mm256_cmpeq_epi8(r1, r2)); + if ((uint32_t)mask != UINT32_MAX) { + return false; + } + ptr1 += 32; + ptr2 += 32; + } + + while (ptr1 < end8) { + uint64_t v1, v2; + memcpy(&v1, ptr1, sizeof(uint64_t)); + memcpy(&v2, ptr2, sizeof(uint64_t)); + if (v1 != v2) { + return false; + } + ptr1 += 8; + ptr2 += 8; + } + + while (ptr1 < end1) { + if (*ptr1 != *ptr2) { + return false; + } + ptr1++; + ptr2++; + } + + return true; +} +CROARING_UNTARGET_AVX512 +#endif // CROARING_COMPILER_SUPPORTS_AVX512 + +CROARING_TARGET_AVX2 +static inline bool _avx2_memequals(const void *s1, const void *s2, size_t n) { + const uint8_t *ptr1 = (const uint8_t *)s1; + const uint8_t *ptr2 = (const uint8_t *)s2; + const uint8_t *end1 = ptr1 + n; + const uint8_t *end8 = ptr1 + n / 8 * 8; + const uint8_t *end32 = ptr1 + n / 32 * 32; + + while (ptr1 < end32) { + __m256i r1 = _mm256_loadu_si256((const __m256i *)ptr1); + __m256i r2 = _mm256_loadu_si256((const __m256i *)ptr2); + int mask = _mm256_movemask_epi8(_mm256_cmpeq_epi8(r1, r2)); + if ((uint32_t)mask != UINT32_MAX) { + return false; + } + ptr1 += 32; + ptr2 += 32; + } + + while (ptr1 < end8) { + uint64_t v1, v2; + memcpy(&v1, ptr1, sizeof(uint64_t)); + memcpy(&v2, ptr2, sizeof(uint64_t)); + if (v1 != v2) { + return false; + } + ptr1 += 8; + ptr2 += 8; + } + + while (ptr1 < end1) { + if (*ptr1 != *ptr2) { + return false; + } + ptr1++; + ptr2++; + } + + return true; +} +CROARING_UNTARGET_AVX2 +#endif + +bool memequals(const void *s1, const void *s2, size_t n) { + if (n == 0) { + return true; + } +#if CROARING_IS_X64 + int support = croaring_hardware_support(); +#if CROARING_COMPILER_SUPPORTS_AVX512 + if (support & ROARING_SUPPORTS_AVX512) { + return _avx512_memequals(s1, s2, n); + } else +#endif // CROARING_COMPILER_SUPPORTS_AVX512 + if (support & ROARING_SUPPORTS_AVX2) { + return _avx2_memequals(s1, s2, n); + } else { + return memcmp(s1, s2, n) == 0; + } +#else + return memcmp(s1, s2, n) == 0; +#endif +} + +#if CROARING_IS_X64 +#if CROARING_COMPILER_SUPPORTS_AVX512 +CROARING_TARGET_AVX512 +ALLOW_UNALIGNED +int avx512_array_container_to_uint32_array(void *vout, const uint16_t *array, + size_t cardinality, uint32_t base) { + int outpos = 0; + uint32_t *out = (uint32_t *)vout; + size_t i = 0; + for (; i + sizeof(__m256i) / sizeof(uint16_t) <= cardinality; + i += sizeof(__m256i) / sizeof(uint16_t)) { + __m256i vinput = _mm256_loadu_si256((const __m256i *)(array + i)); + __m512i voutput = _mm512_add_epi32(_mm512_cvtepu16_epi32(vinput), + _mm512_set1_epi32(base)); + _mm512_storeu_si512((__m512i *)(out + outpos), voutput); + outpos += sizeof(__m512i) / sizeof(uint32_t); + } + for (; i < cardinality; ++i) { + const uint32_t val = base + array[i]; + memcpy(out + outpos, &val, + sizeof(uint32_t)); // should be compiled as a MOV on x64 + outpos++; + } + return outpos; +} +CROARING_UNTARGET_AVX512 +#endif // #if CROARING_COMPILER_SUPPORTS_AVX512 +#endif // #if CROARING_IS_X64 + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif \ No newline at end of file diff --git a/contrib/libs/croaring/src/art/art.c b/contrib/libs/croaring/src/art/art.c new file mode 100644 index 000000000000..20a346f8d959 --- /dev/null +++ b/contrib/libs/croaring/src/art/art.c @@ -0,0 +1,1897 @@ +#include <assert.h> +#include <stdio.h> +#include <string.h> + +#include <roaring/art/art.h> +#include <roaring/memory.h> +#include <roaring/portability.h> + +#define CROARING_ART_NODE4_TYPE 0 +#define CROARING_ART_NODE16_TYPE 1 +#define CROARING_ART_NODE48_TYPE 2 +#define CROARING_ART_NODE256_TYPE 3 +#define CROARING_ART_NUM_TYPES 4 + +// Node48 placeholder value to indicate no child is present at this key index. +#define CROARING_ART_NODE48_EMPTY_VAL 48 + +// We use the least significant bit of node pointers to indicate whether a node +// is a leaf or an inner node. This is never surfaced to the user. +// +// Using pointer tagging to indicate leaves not only saves a bit of memory by +// sparing the typecode, but also allows us to use an intrusive leaf struct. +// Using an intrusive leaf struct leaves leaf allocation up to the user. Upon +// deallocation of the ART, we know not to free the leaves without having to +// dereference the leaf pointers. +// +// All internal operations on leaves should use CROARING_CAST_LEAF before using +// the leaf. The only places that use CROARING_SET_LEAF are locations where a +// field is directly assigned to a leaf pointer. After using CROARING_SET_LEAF, +// the leaf should be treated as a node of unknown type. +#define CROARING_IS_LEAF(p) (((uintptr_t)(p) & 1)) +#define CROARING_SET_LEAF(p) ((art_node_t *)((uintptr_t)(p) | 1)) +#define CROARING_CAST_LEAF(p) ((art_leaf_t *)((void *)((uintptr_t)(p) & ~1))) + +#define CROARING_NODE48_AVAILABLE_CHILDREN_MASK ((UINT64_C(1) << 48) - 1) + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +typedef uint8_t art_typecode_t; + +// Aliasing with a "leaf" naming so that its purpose is clearer in the context +// of the trie internals. +typedef art_val_t art_leaf_t; + +typedef struct art_internal_validate_s { + const char **reason; + art_validate_cb_t validate_cb; + + int depth; + art_key_chunk_t current_key[ART_KEY_BYTES]; +} art_internal_validate_t; + +// Set the reason message, and return false for convenience. +static inline bool art_validate_fail(const art_internal_validate_t *validate, + const char *msg) { + *validate->reason = msg; + return false; +} + +// Inner node, with prefix. +// +// We use a fixed-length array as a pointer would be larger than the array. +typedef struct art_inner_node_s { + art_typecode_t typecode; + uint8_t prefix_size; + uint8_t prefix[ART_KEY_BYTES - 1]; +} art_inner_node_t; + +// Inner node types. + +// Node4: key[i] corresponds with children[i]. Keys are sorted. +typedef struct art_node4_s { + art_inner_node_t base; + uint8_t count; + uint8_t keys[4]; + art_node_t *children[4]; +} art_node4_t; + +// Node16: key[i] corresponds with children[i]. Keys are sorted. +typedef struct art_node16_s { + art_inner_node_t base; + uint8_t count; + uint8_t keys[16]; + art_node_t *children[16]; +} art_node16_t; + +// Node48: key[i] corresponds with children[key[i]] if key[i] != +// CROARING_ART_NODE48_EMPTY_VAL. Keys are naturally sorted due to direct +// indexing. +typedef struct art_node48_s { + art_inner_node_t base; + uint8_t count; + // Bitset where the ith bit is set if children[i] is available + // Because there are at most 48 children, only the bottom 48 bits are used. + uint64_t available_children; + uint8_t keys[256]; + art_node_t *children[48]; +} art_node48_t; + +// Node256: children[i] is directly indexed by key chunk. A child is present if +// children[i] != NULL. +typedef struct art_node256_s { + art_inner_node_t base; + uint16_t count; + art_node_t *children[256]; +} art_node256_t; + +// Helper struct to refer to a child within a node at a specific index. +typedef struct art_indexed_child_s { + art_node_t *child; + uint8_t index; + art_key_chunk_t key_chunk; +} art_indexed_child_t; + +static inline bool art_is_leaf(const art_node_t *node) { + return CROARING_IS_LEAF(node); +} + +static void art_leaf_populate(art_leaf_t *leaf, const art_key_chunk_t key[]) { + memcpy(leaf->key, key, ART_KEY_BYTES); +} + +static inline uint8_t art_get_type(const art_inner_node_t *node) { + return node->typecode; +} + +static inline void art_init_inner_node(art_inner_node_t *node, + art_typecode_t typecode, + const art_key_chunk_t prefix[], + uint8_t prefix_size) { + node->typecode = typecode; + node->prefix_size = prefix_size; + memcpy(node->prefix, prefix, prefix_size * sizeof(art_key_chunk_t)); +} + +static void art_free_node(art_node_t *node); + +// ===================== Start of node-specific functions ====================== + +static art_node4_t *art_node4_create(const art_key_chunk_t prefix[], + uint8_t prefix_size); +static art_node16_t *art_node16_create(const art_key_chunk_t prefix[], + uint8_t prefix_size); +static art_node48_t *art_node48_create(const art_key_chunk_t prefix[], + uint8_t prefix_size); +static art_node256_t *art_node256_create(const art_key_chunk_t prefix[], + uint8_t prefix_size); + +static art_node_t *art_node4_insert(art_node4_t *node, art_node_t *child, + uint8_t key); +static art_node_t *art_node16_insert(art_node16_t *node, art_node_t *child, + uint8_t key); +static art_node_t *art_node48_insert(art_node48_t *node, art_node_t *child, + uint8_t key); +static art_node_t *art_node256_insert(art_node256_t *node, art_node_t *child, + uint8_t key); + +static art_node4_t *art_node4_create(const art_key_chunk_t prefix[], + uint8_t prefix_size) { + art_node4_t *node = (art_node4_t *)roaring_malloc(sizeof(art_node4_t)); + art_init_inner_node(&node->base, CROARING_ART_NODE4_TYPE, prefix, + prefix_size); + node->count = 0; + return node; +} + +static void art_free_node4(art_node4_t *node) { + for (size_t i = 0; i < node->count; ++i) { + art_free_node(node->children[i]); + } + roaring_free(node); +} + +static inline art_node_t *art_node4_find_child(const art_node4_t *node, + art_key_chunk_t key) { + for (size_t i = 0; i < node->count; ++i) { + if (node->keys[i] == key) { + return node->children[i]; + } + } + return NULL; +} + +static art_node_t *art_node4_insert(art_node4_t *node, art_node_t *child, + uint8_t key) { + if (node->count < 4) { + size_t idx = 0; + for (; idx < node->count; ++idx) { + if (node->keys[idx] > key) { + break; + } + } + size_t after = node->count - idx; + // Shift other keys to maintain sorted order. + memmove(node->keys + idx + 1, node->keys + idx, + after * sizeof(art_key_chunk_t)); + memmove(node->children + idx + 1, node->children + idx, + after * sizeof(art_node_t *)); + + node->children[idx] = child; + node->keys[idx] = key; + node->count++; + return (art_node_t *)node; + } + art_node16_t *new_node = + art_node16_create(node->base.prefix, node->base.prefix_size); + // Instead of calling insert, this could be specialized to 2x memcpy and + // setting the count. + for (size_t i = 0; i < 4; ++i) { + art_node16_insert(new_node, node->children[i], node->keys[i]); + } + roaring_free(node); + return art_node16_insert(new_node, child, key); +} + +static inline art_node_t *art_node4_erase(art_node4_t *node, + art_key_chunk_t key_chunk) { + int idx = -1; + for (size_t i = 0; i < node->count; ++i) { + if (node->keys[i] == key_chunk) { + idx = i; + } + } + if (idx == -1) { + return (art_node_t *)node; + } + if (node->count == 2) { + // Only one child remains after erasing, so compress the path by + // removing this node. + uint8_t other_idx = idx ^ 1; + art_node_t *remaining_child = node->children[other_idx]; + art_key_chunk_t remaining_child_key = node->keys[other_idx]; + if (!art_is_leaf(remaining_child)) { + // Correct the prefix of the child node. + art_inner_node_t *inner_node = (art_inner_node_t *)remaining_child; + memmove(inner_node->prefix + node->base.prefix_size + 1, + inner_node->prefix, inner_node->prefix_size); + memcpy(inner_node->prefix, node->base.prefix, + node->base.prefix_size); + inner_node->prefix[node->base.prefix_size] = remaining_child_key; + inner_node->prefix_size += node->base.prefix_size + 1; + } + roaring_free(node); + return remaining_child; + } + // Shift other keys to maintain sorted order. + size_t after_next = node->count - idx - 1; + memmove(node->keys + idx, node->keys + idx + 1, + after_next * sizeof(art_key_chunk_t)); + memmove(node->children + idx, node->children + idx + 1, + after_next * sizeof(art_node_t *)); + node->count--; + return (art_node_t *)node; +} + +static inline void art_node4_replace(art_node4_t *node, + art_key_chunk_t key_chunk, + art_node_t *new_child) { + for (size_t i = 0; i < node->count; ++i) { + if (node->keys[i] == key_chunk) { + node->children[i] = new_child; + return; + } + } +} + +static inline art_indexed_child_t art_node4_next_child(const art_node4_t *node, + int index) { + art_indexed_child_t indexed_child; + index++; + if (index >= node->count) { + indexed_child.child = NULL; + return indexed_child; + } + indexed_child.index = index; + indexed_child.child = node->children[index]; + indexed_child.key_chunk = node->keys[index]; + return indexed_child; +} + +static inline art_indexed_child_t art_node4_prev_child(const art_node4_t *node, + int index) { + if (index > node->count) { + index = node->count; + } + index--; + art_indexed_child_t indexed_child; + if (index < 0) { + indexed_child.child = NULL; + return indexed_child; + } + indexed_child.index = index; + indexed_child.child = node->children[index]; + indexed_child.key_chunk = node->keys[index]; + return indexed_child; +} + +static inline art_indexed_child_t art_node4_child_at(const art_node4_t *node, + int index) { + art_indexed_child_t indexed_child; + if (index < 0 || index >= node->count) { + indexed_child.child = NULL; + return indexed_child; + } + indexed_child.index = index; + indexed_child.child = node->children[index]; + indexed_child.key_chunk = node->keys[index]; + return indexed_child; +} + +static inline art_indexed_child_t art_node4_lower_bound( + art_node4_t *node, art_key_chunk_t key_chunk) { + art_indexed_child_t indexed_child; + for (size_t i = 0; i < node->count; ++i) { + if (node->keys[i] >= key_chunk) { + indexed_child.index = i; + indexed_child.child = node->children[i]; + indexed_child.key_chunk = node->keys[i]; + return indexed_child; + } + } + indexed_child.child = NULL; + return indexed_child; +} + +static bool art_internal_validate_at(const art_node_t *node, + art_internal_validate_t validator); + +static bool art_node4_internal_validate(const art_node4_t *node, + art_internal_validate_t validator) { + if (node->count == 0) { + return art_validate_fail(&validator, "Node4 has no children"); + } + if (node->count > 4) { + return art_validate_fail(&validator, "Node4 has too many children"); + } + if (node->count == 1) { + return art_validate_fail( + &validator, "Node4 and child node should have been combined"); + } + validator.depth++; + for (int i = 0; i < node->count; ++i) { + if (i > 0) { + if (node->keys[i - 1] >= node->keys[i]) { + return art_validate_fail( + &validator, "Node4 keys are not strictly increasing"); + } + } + for (int j = i + 1; j < node->count; ++j) { + if (node->children[i] == node->children[j]) { + return art_validate_fail(&validator, + "Node4 has duplicate children"); + } + } + validator.current_key[validator.depth - 1] = node->keys[i]; + if (!art_internal_validate_at(node->children[i], validator)) { + return false; + } + } + return true; +} + +static art_node16_t *art_node16_create(const art_key_chunk_t prefix[], + uint8_t prefix_size) { + art_node16_t *node = (art_node16_t *)roaring_malloc(sizeof(art_node16_t)); + art_init_inner_node(&node->base, CROARING_ART_NODE16_TYPE, prefix, + prefix_size); + node->count = 0; + return node; +} + +static void art_free_node16(art_node16_t *node) { + for (size_t i = 0; i < node->count; ++i) { + art_free_node(node->children[i]); + } + roaring_free(node); +} + +static inline art_node_t *art_node16_find_child(const art_node16_t *node, + art_key_chunk_t key) { + for (size_t i = 0; i < node->count; ++i) { + if (node->keys[i] == key) { + return node->children[i]; + } + } + return NULL; +} + +static art_node_t *art_node16_insert(art_node16_t *node, art_node_t *child, + uint8_t key) { + if (node->count < 16) { + size_t idx = 0; + for (; idx < node->count; ++idx) { + if (node->keys[idx] > key) { + break; + } + } + size_t after = node->count - idx; + // Shift other keys to maintain sorted order. + memmove(node->keys + idx + 1, node->keys + idx, + after * sizeof(art_key_chunk_t)); + memmove(node->children + idx + 1, node->children + idx, + after * sizeof(art_node_t *)); + + node->children[idx] = child; + node->keys[idx] = key; + node->count++; + return (art_node_t *)node; + } + art_node48_t *new_node = + art_node48_create(node->base.prefix, node->base.prefix_size); + for (size_t i = 0; i < 16; ++i) { + art_node48_insert(new_node, node->children[i], node->keys[i]); + } + roaring_free(node); + return art_node48_insert(new_node, child, key); +} + +static inline art_node_t *art_node16_erase(art_node16_t *node, + uint8_t key_chunk) { + for (size_t i = 0; i < node->count; ++i) { + if (node->keys[i] == key_chunk) { + // Shift other keys to maintain sorted order. + size_t after_next = node->count - i - 1; + memmove(node->keys + i, node->keys + i + 1, + after_next * sizeof(key_chunk)); + memmove(node->children + i, node->children + i + 1, + after_next * sizeof(art_node_t *)); + node->count--; + break; + } + } + if (node->count > 4) { + return (art_node_t *)node; + } + art_node4_t *new_node = + art_node4_create(node->base.prefix, node->base.prefix_size); + // Instead of calling insert, this could be specialized to 2x memcpy and + // setting the count. + for (size_t i = 0; i < 4; ++i) { + art_node4_insert(new_node, node->children[i], node->keys[i]); + } + roaring_free(node); + return (art_node_t *)new_node; +} + +static inline void art_node16_replace(art_node16_t *node, + art_key_chunk_t key_chunk, + art_node_t *new_child) { + for (uint8_t i = 0; i < node->count; ++i) { + if (node->keys[i] == key_chunk) { + node->children[i] = new_child; + return; + } + } +} + +static inline art_indexed_child_t art_node16_next_child( + const art_node16_t *node, int index) { + art_indexed_child_t indexed_child; + index++; + if (index >= node->count) { + indexed_child.child = NULL; + return indexed_child; + } + indexed_child.index = index; + indexed_child.child = node->children[index]; + indexed_child.key_chunk = node->keys[index]; + return indexed_child; +} + +static inline art_indexed_child_t art_node16_prev_child( + const art_node16_t *node, int index) { + if (index > node->count) { + index = node->count; + } + index--; + art_indexed_child_t indexed_child; + if (index < 0) { + indexed_child.child = NULL; + return indexed_child; + } + indexed_child.index = index; + indexed_child.child = node->children[index]; + indexed_child.key_chunk = node->keys[index]; + return indexed_child; +} + +static inline art_indexed_child_t art_node16_child_at(const art_node16_t *node, + int index) { + art_indexed_child_t indexed_child; + if (index < 0 || index >= node->count) { + indexed_child.child = NULL; + return indexed_child; + } + indexed_child.index = index; + indexed_child.child = node->children[index]; + indexed_child.key_chunk = node->keys[index]; + return indexed_child; +} + +static inline art_indexed_child_t art_node16_lower_bound( + art_node16_t *node, art_key_chunk_t key_chunk) { + art_indexed_child_t indexed_child; + for (size_t i = 0; i < node->count; ++i) { + if (node->keys[i] >= key_chunk) { + indexed_child.index = i; + indexed_child.child = node->children[i]; + indexed_child.key_chunk = node->keys[i]; + return indexed_child; + } + } + indexed_child.child = NULL; + return indexed_child; +} + +static bool art_node16_internal_validate(const art_node16_t *node, + art_internal_validate_t validator) { + if (node->count <= 4) { + return art_validate_fail(&validator, "Node16 has too few children"); + } + if (node->count > 16) { + return art_validate_fail(&validator, "Node16 has too many children"); + } + validator.depth++; + for (int i = 0; i < node->count; ++i) { + if (i > 0) { + if (node->keys[i - 1] >= node->keys[i]) { + return art_validate_fail( + &validator, "Node16 keys are not strictly increasing"); + } + } + for (int j = i + 1; j < node->count; ++j) { + if (node->children[i] == node->children[j]) { + return art_validate_fail(&validator, + "Node16 has duplicate children"); + } + } + validator.current_key[validator.depth - 1] = node->keys[i]; + if (!art_internal_validate_at(node->children[i], validator)) { + return false; + } + } + return true; +} + +static art_node48_t *art_node48_create(const art_key_chunk_t prefix[], + uint8_t prefix_size) { + art_node48_t *node = (art_node48_t *)roaring_malloc(sizeof(art_node48_t)); + art_init_inner_node(&node->base, CROARING_ART_NODE48_TYPE, prefix, + prefix_size); + node->count = 0; + node->available_children = CROARING_NODE48_AVAILABLE_CHILDREN_MASK; + for (size_t i = 0; i < 256; ++i) { + node->keys[i] = CROARING_ART_NODE48_EMPTY_VAL; + } + return node; +} + +static void art_free_node48(art_node48_t *node) { + uint64_t used_children = + (node->available_children) ^ CROARING_NODE48_AVAILABLE_CHILDREN_MASK; + while (used_children != 0) { + // We checked above that used_children is not zero + uint8_t child_idx = roaring_trailing_zeroes(used_children); + art_free_node(node->children[child_idx]); + used_children &= ~(UINT64_C(1) << child_idx); + } + roaring_free(node); +} + +static inline art_node_t *art_node48_find_child(const art_node48_t *node, + art_key_chunk_t key) { + uint8_t val_idx = node->keys[key]; + if (val_idx != CROARING_ART_NODE48_EMPTY_VAL) { + return node->children[val_idx]; + } + return NULL; +} + +static art_node_t *art_node48_insert(art_node48_t *node, art_node_t *child, + uint8_t key) { + if (node->count < 48) { + // node->available_children is only zero when the node is full (count == + // 48), we just checked count < 48 + uint8_t val_idx = roaring_trailing_zeroes(node->available_children); + node->keys[key] = val_idx; + node->children[val_idx] = child; + node->count++; + node->available_children &= ~(UINT64_C(1) << val_idx); + return (art_node_t *)node; + } + art_node256_t *new_node = + art_node256_create(node->base.prefix, node->base.prefix_size); + for (size_t i = 0; i < 256; ++i) { + uint8_t val_idx = node->keys[i]; + if (val_idx != CROARING_ART_NODE48_EMPTY_VAL) { + art_node256_insert(new_node, node->children[val_idx], i); + } + } + roaring_free(node); + return art_node256_insert(new_node, child, key); +} + +static inline art_node_t *art_node48_erase(art_node48_t *node, + uint8_t key_chunk) { + uint8_t val_idx = node->keys[key_chunk]; + if (val_idx == CROARING_ART_NODE48_EMPTY_VAL) { + return (art_node_t *)node; + } + node->keys[key_chunk] = CROARING_ART_NODE48_EMPTY_VAL; + node->available_children |= UINT64_C(1) << val_idx; + node->count--; + if (node->count > 16) { + return (art_node_t *)node; + } + + art_node16_t *new_node = + art_node16_create(node->base.prefix, node->base.prefix_size); + for (size_t i = 0; i < 256; ++i) { + val_idx = node->keys[i]; + if (val_idx != CROARING_ART_NODE48_EMPTY_VAL) { + art_node16_insert(new_node, node->children[val_idx], i); + } + } + roaring_free(node); + return (art_node_t *)new_node; +} + +static inline void art_node48_replace(art_node48_t *node, + art_key_chunk_t key_chunk, + art_node_t *new_child) { + uint8_t val_idx = node->keys[key_chunk]; + assert(val_idx != CROARING_ART_NODE48_EMPTY_VAL); + node->children[val_idx] = new_child; +} + +static inline art_indexed_child_t art_node48_next_child( + const art_node48_t *node, int index) { + art_indexed_child_t indexed_child; + index++; + for (size_t i = index; i < 256; ++i) { + if (node->keys[i] != CROARING_ART_NODE48_EMPTY_VAL) { + indexed_child.index = i; + indexed_child.child = node->children[node->keys[i]]; + indexed_child.key_chunk = i; + return indexed_child; + } + } + indexed_child.child = NULL; + return indexed_child; +} + +static inline art_indexed_child_t art_node48_prev_child( + const art_node48_t *node, int index) { + if (index > 256) { + index = 256; + } + index--; + art_indexed_child_t indexed_child; + for (int i = index; i >= 0; --i) { + if (node->keys[i] != CROARING_ART_NODE48_EMPTY_VAL) { + indexed_child.index = i; + indexed_child.child = node->children[node->keys[i]]; + indexed_child.key_chunk = i; + return indexed_child; + } + } + indexed_child.child = NULL; + return indexed_child; +} + +static inline art_indexed_child_t art_node48_child_at(const art_node48_t *node, + int index) { + art_indexed_child_t indexed_child; + if (index < 0 || index >= 256) { + indexed_child.child = NULL; + return indexed_child; + } + indexed_child.index = index; + indexed_child.child = node->children[node->keys[index]]; + indexed_child.key_chunk = index; + return indexed_child; +} + +static inline art_indexed_child_t art_node48_lower_bound( + art_node48_t *node, art_key_chunk_t key_chunk) { + art_indexed_child_t indexed_child; + for (size_t i = key_chunk; i < 256; ++i) { + if (node->keys[i] != CROARING_ART_NODE48_EMPTY_VAL) { + indexed_child.index = i; + indexed_child.child = node->children[node->keys[i]]; + indexed_child.key_chunk = i; + return indexed_child; + } + } + indexed_child.child = NULL; + return indexed_child; +} + +static bool art_node48_internal_validate(const art_node48_t *node, + art_internal_validate_t validator) { + if (node->count <= 16) { + return art_validate_fail(&validator, "Node48 has too few children"); + } + if (node->count > 48) { + return art_validate_fail(&validator, "Node48 has too many children"); + } + uint64_t used_children = 0; + for (int i = 0; i < 256; ++i) { + uint8_t child_idx = node->keys[i]; + if (child_idx != CROARING_ART_NODE48_EMPTY_VAL) { + if (used_children & (UINT64_C(1) << child_idx)) { + return art_validate_fail( + &validator, "Node48 keys point to the same child index"); + } + + art_node_t *child = node->children[child_idx]; + if (child == NULL) { + return art_validate_fail(&validator, "Node48 has a NULL child"); + } + used_children |= UINT64_C(1) << child_idx; + } + } + uint64_t expected_used_children = + (node->available_children) ^ CROARING_NODE48_AVAILABLE_CHILDREN_MASK; + if (used_children != expected_used_children) { + return art_validate_fail( + &validator, + "Node48 available_children does not match actual children"); + } + while (used_children != 0) { + uint8_t child_idx = roaring_trailing_zeroes(used_children); + used_children &= used_children - 1; + + uint64_t other_children = used_children; + while (other_children != 0) { + uint8_t other_child_idx = roaring_trailing_zeroes(other_children); + if (node->children[child_idx] == node->children[other_child_idx]) { + return art_validate_fail(&validator, + "Node48 has duplicate children"); + } + other_children &= other_children - 1; + } + } + + validator.depth++; + for (int i = 0; i < 256; ++i) { + if (node->keys[i] != CROARING_ART_NODE48_EMPTY_VAL) { + validator.current_key[validator.depth - 1] = i; + if (!art_internal_validate_at(node->children[node->keys[i]], + validator)) { + return false; + } + } + } + return true; +} + +static art_node256_t *art_node256_create(const art_key_chunk_t prefix[], + uint8_t prefix_size) { + art_node256_t *node = + (art_node256_t *)roaring_malloc(sizeof(art_node256_t)); + art_init_inner_node(&node->base, CROARING_ART_NODE256_TYPE, prefix, + prefix_size); + node->count = 0; + for (size_t i = 0; i < 256; ++i) { + node->children[i] = NULL; + } + return node; +} + +static void art_free_node256(art_node256_t *node) { + for (size_t i = 0; i < 256; ++i) { + if (node->children[i] != NULL) { + art_free_node(node->children[i]); + } + } + roaring_free(node); +} + +static inline art_node_t *art_node256_find_child(const art_node256_t *node, + art_key_chunk_t key) { + return node->children[key]; +} + +static art_node_t *art_node256_insert(art_node256_t *node, art_node_t *child, + uint8_t key) { + node->children[key] = child; + node->count++; + return (art_node_t *)node; +} + +static inline art_node_t *art_node256_erase(art_node256_t *node, + uint8_t key_chunk) { + node->children[key_chunk] = NULL; + node->count--; + if (node->count > 48) { + return (art_node_t *)node; + } + + art_node48_t *new_node = + art_node48_create(node->base.prefix, node->base.prefix_size); + for (size_t i = 0; i < 256; ++i) { + if (node->children[i] != NULL) { + art_node48_insert(new_node, node->children[i], i); + } + } + roaring_free(node); + return (art_node_t *)new_node; +} + +static inline void art_node256_replace(art_node256_t *node, + art_key_chunk_t key_chunk, + art_node_t *new_child) { + node->children[key_chunk] = new_child; +} + +static inline art_indexed_child_t art_node256_next_child( + const art_node256_t *node, int index) { + art_indexed_child_t indexed_child; + index++; + for (size_t i = index; i < 256; ++i) { + if (node->children[i] != NULL) { + indexed_child.index = i; + indexed_child.child = node->children[i]; + indexed_child.key_chunk = i; + return indexed_child; + } + } + indexed_child.child = NULL; + return indexed_child; +} + +static inline art_indexed_child_t art_node256_prev_child( + const art_node256_t *node, int index) { + if (index > 256) { + index = 256; + } + index--; + art_indexed_child_t indexed_child; + for (int i = index; i >= 0; --i) { + if (node->children[i] != NULL) { + indexed_child.index = i; + indexed_child.child = node->children[i]; + indexed_child.key_chunk = i; + return indexed_child; + } + } + indexed_child.child = NULL; + return indexed_child; +} + +static inline art_indexed_child_t art_node256_child_at( + const art_node256_t *node, int index) { + art_indexed_child_t indexed_child; + if (index < 0 || index >= 256) { + indexed_child.child = NULL; + return indexed_child; + } + indexed_child.index = index; + indexed_child.child = node->children[index]; + indexed_child.key_chunk = index; + return indexed_child; +} + +static inline art_indexed_child_t art_node256_lower_bound( + art_node256_t *node, art_key_chunk_t key_chunk) { + art_indexed_child_t indexed_child; + for (size_t i = key_chunk; i < 256; ++i) { + if (node->children[i] != NULL) { + indexed_child.index = i; + indexed_child.child = node->children[i]; + indexed_child.key_chunk = i; + return indexed_child; + } + } + indexed_child.child = NULL; + return indexed_child; +} + +static bool art_node256_internal_validate(const art_node256_t *node, + art_internal_validate_t validator) { + if (node->count <= 48) { + return art_validate_fail(&validator, "Node256 has too few children"); + } + if (node->count > 256) { + return art_validate_fail(&validator, "Node256 has too many children"); + } + validator.depth++; + int actual_count = 0; + for (int i = 0; i < 256; ++i) { + if (node->children[i] != NULL) { + actual_count++; + + for (int j = i + 1; j < 256; ++j) { + if (node->children[i] == node->children[j]) { + return art_validate_fail(&validator, + "Node256 has duplicate children"); + } + } + + validator.current_key[validator.depth - 1] = i; + if (!art_internal_validate_at(node->children[i], validator)) { + return false; + } + } + } + if (actual_count != node->count) { + return art_validate_fail( + &validator, "Node256 count does not match actual children"); + } + return true; +} + +// Finds the child with the given key chunk in the inner node, returns NULL if +// no such child is found. +static art_node_t *art_find_child(const art_inner_node_t *node, + art_key_chunk_t key_chunk) { + switch (art_get_type(node)) { + case CROARING_ART_NODE4_TYPE: + return art_node4_find_child((art_node4_t *)node, key_chunk); + case CROARING_ART_NODE16_TYPE: + return art_node16_find_child((art_node16_t *)node, key_chunk); + case CROARING_ART_NODE48_TYPE: + return art_node48_find_child((art_node48_t *)node, key_chunk); + case CROARING_ART_NODE256_TYPE: + return art_node256_find_child((art_node256_t *)node, key_chunk); + default: + assert(false); + return NULL; + } +} + +// Replaces the child with the given key chunk in the inner node. +static void art_replace(art_inner_node_t *node, art_key_chunk_t key_chunk, + art_node_t *new_child) { + switch (art_get_type(node)) { + case CROARING_ART_NODE4_TYPE: + art_node4_replace((art_node4_t *)node, key_chunk, new_child); + break; + case CROARING_ART_NODE16_TYPE: + art_node16_replace((art_node16_t *)node, key_chunk, new_child); + break; + case CROARING_ART_NODE48_TYPE: + art_node48_replace((art_node48_t *)node, key_chunk, new_child); + break; + case CROARING_ART_NODE256_TYPE: + art_node256_replace((art_node256_t *)node, key_chunk, new_child); + break; + default: + assert(false); + } +} + +// Erases the child with the given key chunk from the inner node, returns the +// updated node (the same as the initial node if it was not shrunk). +static art_node_t *art_node_erase(art_inner_node_t *node, + art_key_chunk_t key_chunk) { + switch (art_get_type(node)) { + case CROARING_ART_NODE4_TYPE: + return art_node4_erase((art_node4_t *)node, key_chunk); + case CROARING_ART_NODE16_TYPE: + return art_node16_erase((art_node16_t *)node, key_chunk); + case CROARING_ART_NODE48_TYPE: + return art_node48_erase((art_node48_t *)node, key_chunk); + case CROARING_ART_NODE256_TYPE: + return art_node256_erase((art_node256_t *)node, key_chunk); + default: + assert(false); + return NULL; + } +} + +// Inserts the leaf with the given key chunk in the inner node, returns a +// pointer to the (possibly expanded) node. +static art_node_t *art_node_insert_leaf(art_inner_node_t *node, + art_key_chunk_t key_chunk, + art_leaf_t *leaf) { + art_node_t *child = (art_node_t *)(CROARING_SET_LEAF(leaf)); + switch (art_get_type(node)) { + case CROARING_ART_NODE4_TYPE: + return art_node4_insert((art_node4_t *)node, child, key_chunk); + case CROARING_ART_NODE16_TYPE: + return art_node16_insert((art_node16_t *)node, child, key_chunk); + case CROARING_ART_NODE48_TYPE: + return art_node48_insert((art_node48_t *)node, child, key_chunk); + case CROARING_ART_NODE256_TYPE: + return art_node256_insert((art_node256_t *)node, child, key_chunk); + default: + assert(false); + return NULL; + } +} + +// Frees the node and its children. Leaves are freed by the user. +static void art_free_node(art_node_t *node) { + if (art_is_leaf(node)) { + // We leave it up to the user to free leaves. + return; + } + switch (art_get_type((art_inner_node_t *)node)) { + case CROARING_ART_NODE4_TYPE: + art_free_node4((art_node4_t *)node); + break; + case CROARING_ART_NODE16_TYPE: + art_free_node16((art_node16_t *)node); + break; + case CROARING_ART_NODE48_TYPE: + art_free_node48((art_node48_t *)node); + break; + case CROARING_ART_NODE256_TYPE: + art_free_node256((art_node256_t *)node); + break; + default: + assert(false); + } +} + +// Returns the next child in key order, or NULL if called on a leaf. +// Provided index may be in the range [-1, 255]. +static art_indexed_child_t art_node_next_child(const art_node_t *node, + int index) { + if (art_is_leaf(node)) { + art_indexed_child_t indexed_child; + indexed_child.child = NULL; + return indexed_child; + } + switch (art_get_type((art_inner_node_t *)node)) { + case CROARING_ART_NODE4_TYPE: + return art_node4_next_child((art_node4_t *)node, index); + case CROARING_ART_NODE16_TYPE: + return art_node16_next_child((art_node16_t *)node, index); + case CROARING_ART_NODE48_TYPE: + return art_node48_next_child((art_node48_t *)node, index); + case CROARING_ART_NODE256_TYPE: + return art_node256_next_child((art_node256_t *)node, index); + default: + assert(false); + return (art_indexed_child_t){0}; + } +} + +// Returns the previous child in key order, or NULL if called on a leaf. +// Provided index may be in the range [0, 256]. +static art_indexed_child_t art_node_prev_child(const art_node_t *node, + int index) { + if (art_is_leaf(node)) { + art_indexed_child_t indexed_child; + indexed_child.child = NULL; + return indexed_child; + } + switch (art_get_type((art_inner_node_t *)node)) { + case CROARING_ART_NODE4_TYPE: + return art_node4_prev_child((art_node4_t *)node, index); + case CROARING_ART_NODE16_TYPE: + return art_node16_prev_child((art_node16_t *)node, index); + case CROARING_ART_NODE48_TYPE: + return art_node48_prev_child((art_node48_t *)node, index); + case CROARING_ART_NODE256_TYPE: + return art_node256_prev_child((art_node256_t *)node, index); + default: + assert(false); + return (art_indexed_child_t){0}; + } +} + +// Returns the child found at the provided index, or NULL if called on a leaf. +// Provided index is only valid if returned by art_node_(next|prev)_child. +static art_indexed_child_t art_node_child_at(const art_node_t *node, + int index) { + if (art_is_leaf(node)) { + art_indexed_child_t indexed_child; + indexed_child.child = NULL; + return indexed_child; + } + switch (art_get_type((art_inner_node_t *)node)) { + case CROARING_ART_NODE4_TYPE: + return art_node4_child_at((art_node4_t *)node, index); + case CROARING_ART_NODE16_TYPE: + return art_node16_child_at((art_node16_t *)node, index); + case CROARING_ART_NODE48_TYPE: + return art_node48_child_at((art_node48_t *)node, index); + case CROARING_ART_NODE256_TYPE: + return art_node256_child_at((art_node256_t *)node, index); + default: + assert(false); + return (art_indexed_child_t){0}; + } +} + +// Returns the child with the smallest key equal to or greater than the given +// key chunk, NULL if called on a leaf or no such child was found. +static art_indexed_child_t art_node_lower_bound(const art_node_t *node, + art_key_chunk_t key_chunk) { + if (art_is_leaf(node)) { + art_indexed_child_t indexed_child; + indexed_child.child = NULL; + return indexed_child; + } + switch (art_get_type((art_inner_node_t *)node)) { + case CROARING_ART_NODE4_TYPE: + return art_node4_lower_bound((art_node4_t *)node, key_chunk); + case CROARING_ART_NODE16_TYPE: + return art_node16_lower_bound((art_node16_t *)node, key_chunk); + case CROARING_ART_NODE48_TYPE: + return art_node48_lower_bound((art_node48_t *)node, key_chunk); + case CROARING_ART_NODE256_TYPE: + return art_node256_lower_bound((art_node256_t *)node, key_chunk); + default: + assert(false); + return (art_indexed_child_t){0}; + } +} + +// ====================== End of node-specific functions ======================= + +// Compares the given ranges of two keys, returns their relative order: +// * Key range 1 < key range 2: a negative value +// * Key range 1 == key range 2: 0 +// * Key range 1 > key range 2: a positive value +static inline int art_compare_prefix(const art_key_chunk_t key1[], + uint8_t key1_from, + const art_key_chunk_t key2[], + uint8_t key2_from, uint8_t length) { + return memcmp(key1 + key1_from, key2 + key2_from, length); +} + +// Compares two keys in full, see art_compare_prefix. +int art_compare_keys(const art_key_chunk_t key1[], + const art_key_chunk_t key2[]) { + return art_compare_prefix(key1, 0, key2, 0, ART_KEY_BYTES); +} + +// Returns the length of the common prefix between two key ranges. +static uint8_t art_common_prefix(const art_key_chunk_t key1[], + uint8_t key1_from, uint8_t key1_to, + const art_key_chunk_t key2[], + uint8_t key2_from, uint8_t key2_to) { + uint8_t min_len = key1_to - key1_from; + uint8_t key2_len = key2_to - key2_from; + if (key2_len < min_len) { + min_len = key2_len; + } + uint8_t offset = 0; + for (; offset < min_len; ++offset) { + if (key1[key1_from + offset] != key2[key2_from + offset]) { + return offset; + } + } + return offset; +} + +// Returns a pointer to the rootmost node where the value was inserted, may not +// be equal to `node`. +static art_node_t *art_insert_at(art_node_t *node, const art_key_chunk_t key[], + uint8_t depth, art_leaf_t *new_leaf) { + if (art_is_leaf(node)) { + art_leaf_t *leaf = CROARING_CAST_LEAF(node); + uint8_t common_prefix = art_common_prefix( + leaf->key, depth, ART_KEY_BYTES, key, depth, ART_KEY_BYTES); + + // Previously this was a leaf, create an inner node instead and add both + // the existing and new leaf to it. + art_node_t *new_node = + (art_node_t *)art_node4_create(key + depth, common_prefix); + + new_node = art_node_insert_leaf((art_inner_node_t *)new_node, + leaf->key[depth + common_prefix], leaf); + new_node = art_node_insert_leaf((art_inner_node_t *)new_node, + key[depth + common_prefix], new_leaf); + + // The new inner node is now the rootmost node. + return new_node; + } + art_inner_node_t *inner_node = (art_inner_node_t *)node; + // Not a leaf: inner node + uint8_t common_prefix = + art_common_prefix(inner_node->prefix, 0, inner_node->prefix_size, key, + depth, ART_KEY_BYTES); + if (common_prefix != inner_node->prefix_size) { + // Partial prefix match. Create a new internal node to hold the common + // prefix. + art_node4_t *node4 = + art_node4_create(inner_node->prefix, common_prefix); + + // Make the existing internal node a child of the new internal node. + node4 = (art_node4_t *)art_node4_insert( + node4, node, inner_node->prefix[common_prefix]); + + // Correct the prefix of the moved internal node, trimming off the chunk + // inserted into the new internal node. + inner_node->prefix_size = inner_node->prefix_size - common_prefix - 1; + if (inner_node->prefix_size > 0) { + // Move the remaining prefix to the correct position. + memmove(inner_node->prefix, inner_node->prefix + common_prefix + 1, + inner_node->prefix_size); + } + + // Insert the value in the new internal node. + return art_node_insert_leaf(&node4->base, key[common_prefix + depth], + new_leaf); + } + // Prefix matches entirely or node has no prefix. Look for an existing + // child. + art_key_chunk_t key_chunk = key[depth + common_prefix]; + art_node_t *child = art_find_child(inner_node, key_chunk); + if (child != NULL) { + art_node_t *new_child = + art_insert_at(child, key, depth + common_prefix + 1, new_leaf); + if (new_child != child) { + // Node type changed. + art_replace(inner_node, key_chunk, new_child); + } + return node; + } + return art_node_insert_leaf(inner_node, key_chunk, new_leaf); +} + +// Erase helper struct. +typedef struct art_erase_result_s { + // The rootmost node where the value was erased, may not be equal to `node`. + // If no value was removed, this is null. + art_node_t *rootmost_node; + + // Value removed, null if not removed. + art_val_t *value_erased; +} art_erase_result_t; + +// Searches for the given key starting at `node`, erases it if found. +static art_erase_result_t art_erase_at(art_node_t *node, + const art_key_chunk_t *key, + uint8_t depth) { + art_erase_result_t result; + result.rootmost_node = NULL; + result.value_erased = NULL; + + if (art_is_leaf(node)) { + art_leaf_t *leaf = CROARING_CAST_LEAF(node); + uint8_t common_prefix = art_common_prefix(leaf->key, 0, ART_KEY_BYTES, + key, 0, ART_KEY_BYTES); + if (common_prefix != ART_KEY_BYTES) { + // Leaf key mismatch. + return result; + } + result.value_erased = (art_val_t *)leaf; + return result; + } + art_inner_node_t *inner_node = (art_inner_node_t *)node; + uint8_t common_prefix = + art_common_prefix(inner_node->prefix, 0, inner_node->prefix_size, key, + depth, ART_KEY_BYTES); + if (common_prefix != inner_node->prefix_size) { + // Prefix mismatch. + return result; + } + art_key_chunk_t key_chunk = key[depth + common_prefix]; + art_node_t *child = art_find_child(inner_node, key_chunk); + if (child == NULL) { + // No child with key chunk. + return result; + } + // Try to erase the key further down. Skip the key chunk associated with the + // child in the node. + art_erase_result_t child_result = + art_erase_at(child, key, depth + common_prefix + 1); + if (child_result.value_erased == NULL) { + return result; + } + result.value_erased = child_result.value_erased; + result.rootmost_node = node; + if (child_result.rootmost_node == NULL) { + // Child node was fully erased, erase it from this node's children. + result.rootmost_node = art_node_erase(inner_node, key_chunk); + } else if (child_result.rootmost_node != child) { + // Child node was not fully erased, update the pointer to it in this + // node. + art_replace(inner_node, key_chunk, child_result.rootmost_node); + } + return result; +} + +// Searches for the given key starting at `node`, returns NULL if the key was +// not found. +static art_val_t *art_find_at(const art_node_t *node, + const art_key_chunk_t *key, uint8_t depth) { + while (!art_is_leaf(node)) { + art_inner_node_t *inner_node = (art_inner_node_t *)node; + uint8_t common_prefix = + art_common_prefix(inner_node->prefix, 0, inner_node->prefix_size, + key, depth, ART_KEY_BYTES); + if (common_prefix != inner_node->prefix_size) { + return NULL; + } + art_node_t *child = + art_find_child(inner_node, key[depth + inner_node->prefix_size]); + if (child == NULL) { + return NULL; + } + node = child; + // Include both the prefix and the child key chunk in the depth. + depth += inner_node->prefix_size + 1; + } + art_leaf_t *leaf = CROARING_CAST_LEAF(node); + if (depth >= ART_KEY_BYTES) { + return (art_val_t *)leaf; + } + uint8_t common_prefix = + art_common_prefix(leaf->key, 0, ART_KEY_BYTES, key, 0, ART_KEY_BYTES); + if (common_prefix == ART_KEY_BYTES) { + return (art_val_t *)leaf; + } + return NULL; +} + +// Returns the size in bytes of the subtrie. +size_t art_size_in_bytes_at(const art_node_t *node) { + if (art_is_leaf(node)) { + return 0; + } + size_t size = 0; + switch (art_get_type((art_inner_node_t *)node)) { + case CROARING_ART_NODE4_TYPE: { + size += sizeof(art_node4_t); + } break; + case CROARING_ART_NODE16_TYPE: { + size += sizeof(art_node16_t); + } break; + case CROARING_ART_NODE48_TYPE: { + size += sizeof(art_node48_t); + } break; + case CROARING_ART_NODE256_TYPE: { + size += sizeof(art_node256_t); + } break; + default: + assert(false); + break; + } + art_indexed_child_t indexed_child = art_node_next_child(node, -1); + while (indexed_child.child != NULL) { + size += art_size_in_bytes_at(indexed_child.child); + indexed_child = art_node_next_child(node, indexed_child.index); + } + return size; +} + +static void art_node_print_type(const art_node_t *node) { + if (art_is_leaf(node)) { + printf("Leaf"); + return; + } + switch (art_get_type((art_inner_node_t *)node)) { + case CROARING_ART_NODE4_TYPE: + printf("Node4"); + return; + case CROARING_ART_NODE16_TYPE: + printf("Node16"); + return; + case CROARING_ART_NODE48_TYPE: + printf("Node48"); + return; + case CROARING_ART_NODE256_TYPE: + printf("Node256"); + return; + default: + assert(false); + return; + } +} + +void art_node_printf(const art_node_t *node, uint8_t depth) { + if (art_is_leaf(node)) { + printf("{ type: Leaf, key: "); + art_leaf_t *leaf = CROARING_CAST_LEAF(node); + for (size_t i = 0; i < ART_KEY_BYTES; ++i) { + printf("%02x", leaf->key[i]); + } + printf(" }\n"); + return; + } + printf("{\n"); + depth++; + + printf("%*s", depth, ""); + printf("type: "); + art_node_print_type(node); + printf("\n"); + + art_inner_node_t *inner_node = (art_inner_node_t *)node; + printf("%*s", depth, ""); + printf("prefix_size: %d\n", inner_node->prefix_size); + + printf("%*s", depth, ""); + printf("prefix: "); + for (uint8_t i = 0; i < inner_node->prefix_size; ++i) { + printf("%02x", inner_node->prefix[i]); + } + printf("\n"); + + switch (art_get_type(inner_node)) { + case CROARING_ART_NODE4_TYPE: { + art_node4_t *node4 = (art_node4_t *)node; + for (uint8_t i = 0; i < node4->count; ++i) { + printf("%*s", depth, ""); + printf("key: %02x ", node4->keys[i]); + art_node_printf(node4->children[i], depth); + } + } break; + case CROARING_ART_NODE16_TYPE: { + art_node16_t *node16 = (art_node16_t *)node; + for (uint8_t i = 0; i < node16->count; ++i) { + printf("%*s", depth, ""); + printf("key: %02x ", node16->keys[i]); + art_node_printf(node16->children[i], depth); + } + } break; + case CROARING_ART_NODE48_TYPE: { + art_node48_t *node48 = (art_node48_t *)node; + for (int i = 0; i < 256; ++i) { + if (node48->keys[i] != CROARING_ART_NODE48_EMPTY_VAL) { + printf("%*s", depth, ""); + printf("key: %02x ", i); + printf("child: %02x ", node48->keys[i]); + art_node_printf(node48->children[node48->keys[i]], depth); + } + } + } break; + case CROARING_ART_NODE256_TYPE: { + art_node256_t *node256 = (art_node256_t *)node; + for (int i = 0; i < 256; ++i) { + if (node256->children[i] != NULL) { + printf("%*s", depth, ""); + printf("key: %02x ", i); + art_node_printf(node256->children[i], depth); + } + } + } break; + default: + assert(false); + break; + } + depth--; + printf("%*s", depth, ""); + printf("}\n"); +} + +void art_insert(art_t *art, const art_key_chunk_t *key, art_val_t *val) { + art_leaf_t *leaf = (art_leaf_t *)val; + art_leaf_populate(leaf, key); + if (art->root == NULL) { + art->root = (art_node_t *)CROARING_SET_LEAF(leaf); + return; + } + art->root = art_insert_at(art->root, key, 0, leaf); +} + +art_val_t *art_erase(art_t *art, const art_key_chunk_t *key) { + if (art->root == NULL) { + return NULL; + } + art_erase_result_t result = art_erase_at(art->root, key, 0); + if (result.value_erased == NULL) { + return NULL; + } + art->root = result.rootmost_node; + return result.value_erased; +} + +art_val_t *art_find(const art_t *art, const art_key_chunk_t *key) { + if (art->root == NULL) { + return NULL; + } + return art_find_at(art->root, key, 0); +} + +bool art_is_empty(const art_t *art) { return art->root == NULL; } + +void art_free(art_t *art) { + if (art->root == NULL) { + return; + } + art_free_node(art->root); +} + +size_t art_size_in_bytes(const art_t *art) { + size_t size = sizeof(art_t); + if (art->root != NULL) { + size += art_size_in_bytes_at(art->root); + } + return size; +} + +void art_printf(const art_t *art) { + if (art->root == NULL) { + return; + } + art_node_printf(art->root, 0); +} + +// Returns the current node that the iterator is positioned at. +static inline art_node_t *art_iterator_node(art_iterator_t *iterator) { + return iterator->frames[iterator->frame].node; +} + +// Sets the iterator key and value to the leaf's key and value. Always returns +// true for convenience. +static inline bool art_iterator_valid_loc(art_iterator_t *iterator, + art_leaf_t *leaf) { + iterator->frames[iterator->frame].node = CROARING_SET_LEAF(leaf); + iterator->frames[iterator->frame].index_in_node = 0; + memcpy(iterator->key, leaf->key, ART_KEY_BYTES); + iterator->value = (art_val_t *)leaf; + return true; +} + +// Invalidates the iterator key and value. Always returns false for convenience. +static inline bool art_iterator_invalid_loc(art_iterator_t *iterator) { + memset(iterator->key, 0, ART_KEY_BYTES); + iterator->value = NULL; + return false; +} + +// Moves the iterator one level down in the tree, given a node at the current +// level and the index of the child that we're going down to. +// +// Note: does not set the index at the new level. +static void art_iterator_down(art_iterator_t *iterator, + const art_inner_node_t *node, + uint8_t index_in_node) { + iterator->frames[iterator->frame].node = (art_node_t *)node; + iterator->frames[iterator->frame].index_in_node = index_in_node; + iterator->frame++; + art_indexed_child_t indexed_child = + art_node_child_at((art_node_t *)node, index_in_node); + assert(indexed_child.child != NULL); + iterator->frames[iterator->frame].node = indexed_child.child; + iterator->depth += node->prefix_size + 1; +} + +// Moves the iterator to the next/previous child of the current node. Returns +// the child moved to, or NULL if there is no neighboring child. +static art_node_t *art_iterator_neighbor_child( + art_iterator_t *iterator, const art_inner_node_t *inner_node, + bool forward) { + art_iterator_frame_t frame = iterator->frames[iterator->frame]; + art_indexed_child_t indexed_child; + if (forward) { + indexed_child = art_node_next_child(frame.node, frame.index_in_node); + } else { + indexed_child = art_node_prev_child(frame.node, frame.index_in_node); + } + if (indexed_child.child != NULL) { + art_iterator_down(iterator, inner_node, indexed_child.index); + } + return indexed_child.child; +} + +// Moves the iterator one level up in the tree, returns false if not possible. +static bool art_iterator_up(art_iterator_t *iterator) { + if (iterator->frame == 0) { + return false; + } + iterator->frame--; + // We went up, so we are at an inner node. + iterator->depth -= + ((art_inner_node_t *)art_iterator_node(iterator))->prefix_size + 1; + return true; +} + +// Moves the iterator one level, followed by a move to the next / previous leaf. +// Sets the status of the iterator. +static bool art_iterator_up_and_move(art_iterator_t *iterator, bool forward) { + if (!art_iterator_up(iterator)) { + // We're at the root. + return art_iterator_invalid_loc(iterator); + } + return art_iterator_move(iterator, forward); +} + +// Initializes the iterator at the first / last leaf of the given node. +// Returns true for convenience. +static bool art_node_init_iterator(const art_node_t *node, + art_iterator_t *iterator, bool first) { + while (!art_is_leaf(node)) { + art_indexed_child_t indexed_child; + if (first) { + indexed_child = art_node_next_child(node, -1); + } else { + indexed_child = art_node_prev_child(node, 256); + } + art_iterator_down(iterator, (art_inner_node_t *)node, + indexed_child.index); + node = indexed_child.child; + } + // We're at a leaf. + iterator->frames[iterator->frame].node = (art_node_t *)node; + iterator->frames[iterator->frame].index_in_node = 0; // Should not matter. + return art_iterator_valid_loc(iterator, CROARING_CAST_LEAF(node)); +} + +bool art_iterator_move(art_iterator_t *iterator, bool forward) { + if (art_is_leaf(art_iterator_node(iterator))) { + bool went_up = art_iterator_up(iterator); + if (!went_up) { + // This leaf is the root, we're done. + return art_iterator_invalid_loc(iterator); + } + } + // Advance within inner node. + art_node_t *neighbor_child = art_iterator_neighbor_child( + iterator, (art_inner_node_t *)art_iterator_node(iterator), forward); + if (neighbor_child != NULL) { + // There is another child at this level, go down to the first or last + // leaf. + return art_node_init_iterator(neighbor_child, iterator, forward); + } + // No more children at this level, go up. + return art_iterator_up_and_move(iterator, forward); +} + +// Assumes the iterator is positioned at a node with an equal prefix path up to +// the depth of the iterator. +static bool art_node_iterator_lower_bound(const art_node_t *node, + art_iterator_t *iterator, + const art_key_chunk_t key[]) { + while (!art_is_leaf(node)) { + art_inner_node_t *inner_node = (art_inner_node_t *)node; + int prefix_comparison = + art_compare_prefix(inner_node->prefix, 0, key, iterator->depth, + inner_node->prefix_size); + if (prefix_comparison < 0) { + // Prefix so far has been equal, but we've found a smaller key. + // Since we take the lower bound within each node, we can return the + // next leaf. + return art_iterator_up_and_move(iterator, true); + } else if (prefix_comparison > 0) { + // No key equal to the key we're looking for, return the first leaf. + return art_node_init_iterator(node, iterator, true); + } + // Prefix is equal, move to lower bound child. + art_key_chunk_t key_chunk = + key[iterator->depth + inner_node->prefix_size]; + art_indexed_child_t indexed_child = + art_node_lower_bound(node, key_chunk); + if (indexed_child.child == NULL) { + // Only smaller keys among children. + return art_iterator_up_and_move(iterator, true); + } + if (indexed_child.key_chunk > key_chunk) { + // Only larger children, return the first larger child. + art_iterator_down(iterator, inner_node, indexed_child.index); + return art_node_init_iterator(indexed_child.child, iterator, true); + } + // We found a child with an equal prefix. + art_iterator_down(iterator, inner_node, indexed_child.index); + node = indexed_child.child; + } + art_leaf_t *leaf = CROARING_CAST_LEAF(node); + if (art_compare_keys(leaf->key, key) >= 0) { + // Leaf has an equal or larger key. + return art_iterator_valid_loc(iterator, leaf); + } + // Leaf has an equal prefix, but the full key is smaller. Move to the next + // leaf. + return art_iterator_up_and_move(iterator, true); +} + +art_iterator_t art_init_iterator(const art_t *art, bool first) { + art_iterator_t iterator = {0}; + if (art->root == NULL) { + return iterator; + } + art_node_init_iterator(art->root, &iterator, first); + return iterator; +} + +bool art_iterator_next(art_iterator_t *iterator) { + return art_iterator_move(iterator, true); +} + +bool art_iterator_prev(art_iterator_t *iterator) { + return art_iterator_move(iterator, false); +} + +bool art_iterator_lower_bound(art_iterator_t *iterator, + const art_key_chunk_t *key) { + if (iterator->value == NULL) { + // We're beyond the end / start of the ART so the iterator does not have + // a valid key. Start from the root. + iterator->frame = 0; + iterator->depth = 0; + return art_node_iterator_lower_bound(art_iterator_node(iterator), + iterator, key); + } + int compare_result = + art_compare_prefix(iterator->key, 0, key, 0, ART_KEY_BYTES); + // Move up until we have an equal prefix, after which we can do a normal + // lower bound search. + while (compare_result != 0) { + if (!art_iterator_up(iterator)) { + if (compare_result < 0) { + // Only smaller keys found. + return art_iterator_invalid_loc(iterator); + } else { + return art_node_init_iterator(art_iterator_node(iterator), + iterator, true); + } + } + // Since we're only moving up, we can keep comparing against the + // iterator key. + art_inner_node_t *inner_node = + (art_inner_node_t *)art_iterator_node(iterator); + compare_result = + art_compare_prefix(iterator->key, 0, key, 0, + iterator->depth + inner_node->prefix_size); + } + if (compare_result > 0) { + return art_node_init_iterator(art_iterator_node(iterator), iterator, + true); + } + return art_node_iterator_lower_bound(art_iterator_node(iterator), iterator, + key); +} + +art_iterator_t art_lower_bound(const art_t *art, const art_key_chunk_t *key) { + art_iterator_t iterator = {0}; + if (art->root != NULL) { + art_node_iterator_lower_bound(art->root, &iterator, key); + } + return iterator; +} + +art_iterator_t art_upper_bound(const art_t *art, const art_key_chunk_t *key) { + art_iterator_t iterator = {0}; + if (art->root != NULL) { + if (art_node_iterator_lower_bound(art->root, &iterator, key) && + art_compare_keys(iterator.key, key) == 0) { + art_iterator_next(&iterator); + } + } + return iterator; +} + +void art_iterator_insert(art_t *art, art_iterator_t *iterator, + const art_key_chunk_t *key, art_val_t *val) { + // TODO: This can likely be faster. + art_insert(art, key, val); + assert(art->root != NULL); + iterator->frame = 0; + iterator->depth = 0; + art_node_iterator_lower_bound(art->root, iterator, key); +} + +// TODO: consider keeping `art_t *art` in the iterator. +art_val_t *art_iterator_erase(art_t *art, art_iterator_t *iterator) { + if (iterator->value == NULL) { + return NULL; + } + art_key_chunk_t initial_key[ART_KEY_BYTES]; + memcpy(initial_key, iterator->key, ART_KEY_BYTES); + + art_val_t *value_erased = iterator->value; + bool went_up = art_iterator_up(iterator); + if (!went_up) { + // We're erasing the root. + art->root = NULL; + art_iterator_invalid_loc(iterator); + return value_erased; + } + + // Erase the leaf. + art_inner_node_t *parent_node = + (art_inner_node_t *)art_iterator_node(iterator); + art_key_chunk_t key_chunk_in_parent = + iterator->key[iterator->depth + parent_node->prefix_size]; + art_node_t *new_parent_node = + art_node_erase(parent_node, key_chunk_in_parent); + + if (new_parent_node != ((art_node_t *)parent_node)) { + // Replace the pointer to the inner node we erased from in its + // parent (it may be a leaf now). + iterator->frames[iterator->frame].node = new_parent_node; + went_up = art_iterator_up(iterator); + if (went_up) { + art_inner_node_t *grandparent_node = + (art_inner_node_t *)art_iterator_node(iterator); + art_key_chunk_t key_chunk_in_grandparent = + iterator->key[iterator->depth + grandparent_node->prefix_size]; + art_replace(grandparent_node, key_chunk_in_grandparent, + new_parent_node); + } else { + // We were already at the rootmost node. + art->root = new_parent_node; + } + } + + iterator->frame = 0; + iterator->depth = 0; + // Do a lower bound search for the initial key, which will find the first + // greater key if it exists. This can likely be mildly faster if we instead + // start from the current position. + art_node_iterator_lower_bound(art->root, iterator, initial_key); + return value_erased; +} + +static bool art_internal_validate_at(const art_node_t *node, + art_internal_validate_t validator) { + if (node == NULL) { + return art_validate_fail(&validator, "node is null"); + } + if (art_is_leaf(node)) { + art_leaf_t *leaf = CROARING_CAST_LEAF(node); + if (art_compare_prefix(leaf->key, 0, validator.current_key, 0, + validator.depth) != 0) { + return art_validate_fail( + &validator, + "leaf key does not match its position's prefix in the tree"); + } + if (validator.validate_cb != NULL && + !validator.validate_cb(leaf, validator.reason)) { + if (*validator.reason == NULL) { + *validator.reason = "leaf validation failed"; + } + return false; + } + } else { + art_inner_node_t *inner_node = (art_inner_node_t *)node; + + if (validator.depth + inner_node->prefix_size + 1 > ART_KEY_BYTES) { + return art_validate_fail(&validator, + "node has too much prefix at given depth"); + } + memcpy(validator.current_key + validator.depth, inner_node->prefix, + inner_node->prefix_size); + validator.depth += inner_node->prefix_size; + + switch (inner_node->typecode) { + case CROARING_ART_NODE4_TYPE: + if (!art_node4_internal_validate((art_node4_t *)inner_node, + validator)) { + return false; + } + break; + case CROARING_ART_NODE16_TYPE: + if (!art_node16_internal_validate((art_node16_t *)inner_node, + validator)) { + return false; + } + break; + case CROARING_ART_NODE48_TYPE: + if (!art_node48_internal_validate((art_node48_t *)inner_node, + validator)) { + return false; + } + break; + case CROARING_ART_NODE256_TYPE: + if (!art_node256_internal_validate((art_node256_t *)inner_node, + validator)) { + return false; + } + break; + default: + return art_validate_fail(&validator, "invalid node type"); + } + } + return true; +} + +bool art_internal_validate(const art_t *art, const char **reason, + art_validate_cb_t validate_cb) { + const char *reason_local; + if (reason == NULL) { + // Always allow assigning through *reason + reason = &reason_local; + } + *reason = NULL; + if (art->root == NULL) { + return true; + } + art_internal_validate_t validator = { + .reason = reason, + .validate_cb = validate_cb, + .depth = 0, + .current_key = {0}, + }; + return art_internal_validate_at(art->root, validator); +} + +#ifdef __cplusplus +} // extern "C" +} // namespace roaring +} // namespace internal +#endif diff --git a/contrib/libs/croaring/src/bitset.c b/contrib/libs/croaring/src/bitset.c new file mode 100644 index 000000000000..5d23af1e7b62 --- /dev/null +++ b/contrib/libs/croaring/src/bitset.c @@ -0,0 +1,482 @@ +#include <limits.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <roaring/bitset/bitset.h> +#include <roaring/memory.h> +#include <roaring/portability.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +extern inline void bitset_print(const bitset_t *b); +extern inline bool bitset_for_each(const bitset_t *b, bitset_iterator iterator, + void *ptr); +extern inline size_t bitset_next_set_bits(const bitset_t *bitset, + size_t *buffer, size_t capacity, + size_t *startfrom); +extern inline void bitset_set_to_value(bitset_t *bitset, size_t i, bool flag); +extern inline bool bitset_next_set_bit(const bitset_t *bitset, size_t *i); +extern inline void bitset_set(bitset_t *bitset, size_t i); +extern inline bool bitset_get(const bitset_t *bitset, size_t i); +extern inline size_t bitset_size_in_words(const bitset_t *bitset); +extern inline size_t bitset_size_in_bits(const bitset_t *bitset); +extern inline size_t bitset_size_in_bytes(const bitset_t *bitset); + +/* Create a new bitset. Return NULL in case of failure. */ +bitset_t *bitset_create(void) { + bitset_t *bitset = NULL; + /* Allocate the bitset itself. */ + if ((bitset = (bitset_t *)roaring_malloc(sizeof(bitset_t))) == NULL) { + return NULL; + } + bitset->array = NULL; + bitset->arraysize = 0; + bitset->capacity = 0; + return bitset; +} + +/* Create a new bitset able to contain size bits. Return NULL in case of + * failure. */ +bitset_t *bitset_create_with_capacity(size_t size) { + bitset_t *bitset = NULL; + /* Allocate the bitset itself. */ + if ((bitset = (bitset_t *)roaring_malloc(sizeof(bitset_t))) == NULL) { + return NULL; + } + bitset->arraysize = + (size + sizeof(uint64_t) * 8 - 1) / (sizeof(uint64_t) * 8); + bitset->capacity = bitset->arraysize; + if ((bitset->array = (uint64_t *)roaring_calloc( + bitset->arraysize, sizeof(uint64_t))) == NULL) { + roaring_free(bitset); + return NULL; + } + return bitset; +} + +/* Create a copy */ +bitset_t *bitset_copy(const bitset_t *bitset) { + bitset_t *copy = NULL; + /* Allocate the bitset itself. */ + if ((copy = (bitset_t *)roaring_malloc(sizeof(bitset_t))) == NULL) { + return NULL; + } + memcpy(copy, bitset, sizeof(bitset_t)); + copy->capacity = copy->arraysize; + if ((copy->array = (uint64_t *)roaring_malloc(sizeof(uint64_t) * + bitset->arraysize)) == NULL) { + roaring_free(copy); + return NULL; + } + memcpy(copy->array, bitset->array, sizeof(uint64_t) * bitset->arraysize); + return copy; +} + +void bitset_clear(bitset_t *bitset) { + memset(bitset->array, 0, sizeof(uint64_t) * bitset->arraysize); +} + +void bitset_fill(bitset_t *bitset) { + memset(bitset->array, 0xff, sizeof(uint64_t) * bitset->arraysize); +} + +void bitset_shift_left(bitset_t *bitset, size_t s) { + size_t extra_words = s / 64; + int inword_shift = s % 64; + size_t as = bitset->arraysize; + if (inword_shift == 0) { + bitset_resize(bitset, as + extra_words, false); + // could be done with a memmove + for (size_t i = as + extra_words; i > extra_words; i--) { + bitset->array[i - 1] = bitset->array[i - 1 - extra_words]; + } + } else { + bitset_resize(bitset, as + extra_words + 1, true); + bitset->array[as + extra_words] = + bitset->array[as - 1] >> (64 - inword_shift); + for (size_t i = as + extra_words; i >= extra_words + 2; i--) { + bitset->array[i - 1] = + (bitset->array[i - 1 - extra_words] << inword_shift) | + (bitset->array[i - 2 - extra_words] >> (64 - inword_shift)); + } + bitset->array[extra_words] = bitset->array[0] << inword_shift; + } + for (size_t i = 0; i < extra_words; i++) { + bitset->array[i] = 0; + } +} + +void bitset_shift_right(bitset_t *bitset, size_t s) { + size_t extra_words = s / 64; + int inword_shift = s % 64; + size_t as = bitset->arraysize; + if (inword_shift == 0) { + // could be done with a memmove + for (size_t i = 0; i < as - extra_words; i++) { + bitset->array[i] = bitset->array[i + extra_words]; + } + bitset_resize(bitset, as - extra_words, false); + + } else { + for (size_t i = 0; i + extra_words + 1 < as; i++) { + bitset->array[i] = + (bitset->array[i + extra_words] >> inword_shift) | + (bitset->array[i + extra_words + 1] << (64 - inword_shift)); + } + bitset->array[as - extra_words - 1] = + (bitset->array[as - 1] >> inword_shift); + bitset_resize(bitset, as - extra_words, false); + } +} + +/* Free memory. */ +void bitset_free(bitset_t *bitset) { + if (bitset == NULL) { + return; + } + roaring_free(bitset->array); + roaring_free(bitset); +} + +/* Resize the bitset so that it can support newarraysize * 64 bits. Return true + * in case of success, false for failure. */ +bool bitset_resize(bitset_t *bitset, size_t newarraysize, bool padwithzeroes) { + if (newarraysize > SIZE_MAX / 64) { + return false; + } + size_t smallest = + newarraysize < bitset->arraysize ? newarraysize : bitset->arraysize; + if (bitset->capacity < newarraysize) { + uint64_t *newarray; + size_t newcapacity = bitset->capacity; + if (newcapacity == 0) { + newcapacity = 1; + } + while (newcapacity < newarraysize) { + newcapacity *= 2; + } + if ((newarray = (uint64_t *)roaring_realloc( + bitset->array, sizeof(uint64_t) * newcapacity)) == NULL) { + return false; + } + bitset->capacity = newcapacity; + bitset->array = newarray; + } + if (padwithzeroes && (newarraysize > smallest)) + memset(bitset->array + smallest, 0, + sizeof(uint64_t) * (newarraysize - smallest)); + bitset->arraysize = newarraysize; + return true; // success! +} + +size_t bitset_count(const bitset_t *bitset) { + size_t card = 0; + size_t k = 0; + for (; k + 7 < bitset->arraysize; k += 8) { + card += roaring_hamming(bitset->array[k]); + card += roaring_hamming(bitset->array[k + 1]); + card += roaring_hamming(bitset->array[k + 2]); + card += roaring_hamming(bitset->array[k + 3]); + card += roaring_hamming(bitset->array[k + 4]); + card += roaring_hamming(bitset->array[k + 5]); + card += roaring_hamming(bitset->array[k + 6]); + card += roaring_hamming(bitset->array[k + 7]); + } + for (; k + 3 < bitset->arraysize; k += 4) { + card += roaring_hamming(bitset->array[k]); + card += roaring_hamming(bitset->array[k + 1]); + card += roaring_hamming(bitset->array[k + 2]); + card += roaring_hamming(bitset->array[k + 3]); + } + for (; k < bitset->arraysize; k++) { + card += roaring_hamming(bitset->array[k]); + } + return card; +} + +bool bitset_inplace_union(bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2) { + size_t minlength = + b1->arraysize < b2->arraysize ? b1->arraysize : b2->arraysize; + for (size_t k = 0; k < minlength; ++k) { + b1->array[k] |= b2->array[k]; + } + if (b2->arraysize > b1->arraysize) { + size_t oldsize = b1->arraysize; + if (!bitset_resize(b1, b2->arraysize, false)) return false; + memcpy(b1->array + oldsize, b2->array + oldsize, + (b2->arraysize - oldsize) * sizeof(uint64_t)); + } + return true; +} + +size_t bitset_minimum(const bitset_t *bitset) { + for (size_t k = 0; k < bitset->arraysize; k++) { + uint64_t w = bitset->array[k]; + if (w != 0) { + return roaring_trailing_zeroes(w) + k * 64; + } + } + return 0; +} + +bool bitset_grow(bitset_t *bitset, size_t newarraysize) { + if (newarraysize < bitset->arraysize) { + return false; + } + if (newarraysize > SIZE_MAX / 64) { + return false; + } + if (bitset->capacity < newarraysize) { + uint64_t *newarray; + size_t newcapacity = (UINT64_C(0xFFFFFFFFFFFFFFFF) >> + roaring_leading_zeroes(newarraysize)) + + 1; + while (newcapacity < newarraysize) { + newcapacity *= 2; + } + if ((newarray = (uint64_t *)roaring_realloc( + bitset->array, sizeof(uint64_t) * newcapacity)) == NULL) { + return false; + } + bitset->capacity = newcapacity; + bitset->array = newarray; + } + memset(bitset->array + bitset->arraysize, 0, + sizeof(uint64_t) * (newarraysize - bitset->arraysize)); + bitset->arraysize = newarraysize; + return true; // success! +} + +size_t bitset_maximum(const bitset_t *bitset) { + for (size_t k = bitset->arraysize; k > 0; k--) { + uint64_t w = bitset->array[k - 1]; + if (w != 0) { + return 63 - roaring_leading_zeroes(w) + (k - 1) * 64; + } + } + return 0; +} + +/* Returns true if bitsets share no common elements, false otherwise. + * + * Performs early-out if common element found. */ +bool bitsets_disjoint(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2) { + size_t minlength = + b1->arraysize < b2->arraysize ? b1->arraysize : b2->arraysize; + + for (size_t k = 0; k < minlength; k++) { + if ((b1->array[k] & b2->array[k]) != 0) return false; + } + return true; +} + +/* Returns true if bitsets contain at least 1 common element, false if they are + * disjoint. + * + * Performs early-out if common element found. */ +bool bitsets_intersect(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2) { + size_t minlength = + b1->arraysize < b2->arraysize ? b1->arraysize : b2->arraysize; + + for (size_t k = 0; k < minlength; k++) { + if ((b1->array[k] & b2->array[k]) != 0) return true; + } + return false; +} + +/* Returns true if b has any bits set in or after b->array[starting_loc]. */ +static bool any_bits_set(const bitset_t *b, size_t starting_loc) { + if (starting_loc >= b->arraysize) { + return false; + } + for (size_t k = starting_loc; k < b->arraysize; k++) { + if (b->array[k] != 0) return true; + } + return false; +} + +/* Returns true if b1 has all of b2's bits set. + * + * Performs early out if a bit is found in b2 that is not found in b1. */ +bool bitset_contains_all(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2) { + size_t min_size = b1->arraysize; + if (b1->arraysize > b2->arraysize) { + min_size = b2->arraysize; + } + for (size_t k = 0; k < min_size; k++) { + if ((b1->array[k] & b2->array[k]) != b2->array[k]) { + return false; + } + } + if (b2->arraysize > b1->arraysize) { + /* Need to check if b2 has any bits set beyond b1's array */ + return !any_bits_set(b2, b1->arraysize); + } + return true; +} + +size_t bitset_union_count(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2) { + size_t answer = 0; + size_t minlength = + b1->arraysize < b2->arraysize ? b1->arraysize : b2->arraysize; + size_t k = 0; + for (; k + 3 < minlength; k += 4) { + answer += roaring_hamming(b1->array[k] | b2->array[k]); + answer += roaring_hamming(b1->array[k + 1] | b2->array[k + 1]); + answer += roaring_hamming(b1->array[k + 2] | b2->array[k + 2]); + answer += roaring_hamming(b1->array[k + 3] | b2->array[k + 3]); + } + for (; k < minlength; ++k) { + answer += roaring_hamming(b1->array[k] | b2->array[k]); + } + if (b2->arraysize > b1->arraysize) { + // k is equal to b1->arraysize + for (; k + 3 < b2->arraysize; k += 4) { + answer += roaring_hamming(b2->array[k]); + answer += roaring_hamming(b2->array[k + 1]); + answer += roaring_hamming(b2->array[k + 2]); + answer += roaring_hamming(b2->array[k + 3]); + } + for (; k < b2->arraysize; ++k) { + answer += roaring_hamming(b2->array[k]); + } + } else { + // k is equal to b2->arraysize + for (; k + 3 < b1->arraysize; k += 4) { + answer += roaring_hamming(b1->array[k]); + answer += roaring_hamming(b1->array[k + 1]); + answer += roaring_hamming(b1->array[k + 2]); + answer += roaring_hamming(b1->array[k + 3]); + } + for (; k < b1->arraysize; ++k) { + answer += roaring_hamming(b1->array[k]); + } + } + return answer; +} + +void bitset_inplace_intersection(bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2) { + size_t minlength = + b1->arraysize < b2->arraysize ? b1->arraysize : b2->arraysize; + size_t k = 0; + for (; k < minlength; ++k) { + b1->array[k] &= b2->array[k]; + } + for (; k < b1->arraysize; ++k) { + b1->array[k] = 0; // memset could, maybe, be a tiny bit faster + } +} + +size_t bitset_intersection_count(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2) { + size_t answer = 0; + size_t minlength = + b1->arraysize < b2->arraysize ? b1->arraysize : b2->arraysize; + for (size_t k = 0; k < minlength; ++k) { + answer += roaring_hamming(b1->array[k] & b2->array[k]); + } + return answer; +} + +void bitset_inplace_difference(bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2) { + size_t minlength = + b1->arraysize < b2->arraysize ? b1->arraysize : b2->arraysize; + size_t k = 0; + for (; k < minlength; ++k) { + b1->array[k] &= ~(b2->array[k]); + } +} + +size_t bitset_difference_count(const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2) { + size_t minlength = + b1->arraysize < b2->arraysize ? b1->arraysize : b2->arraysize; + size_t k = 0; + size_t answer = 0; + for (; k < minlength; ++k) { + answer += roaring_hamming(b1->array[k] & ~(b2->array[k])); + } + for (; k < b1->arraysize; ++k) { + answer += roaring_hamming(b1->array[k]); + } + return answer; +} + +bool bitset_inplace_symmetric_difference( + bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2) { + size_t minlength = + b1->arraysize < b2->arraysize ? b1->arraysize : b2->arraysize; + size_t k = 0; + for (; k < minlength; ++k) { + b1->array[k] ^= b2->array[k]; + } + if (b2->arraysize > b1->arraysize) { + size_t oldsize = b1->arraysize; + if (!bitset_resize(b1, b2->arraysize, false)) return false; + memcpy(b1->array + oldsize, b2->array + oldsize, + (b2->arraysize - oldsize) * sizeof(uint64_t)); + } + return true; +} + +size_t bitset_symmetric_difference_count( + const bitset_t *CROARING_CBITSET_RESTRICT b1, + const bitset_t *CROARING_CBITSET_RESTRICT b2) { + size_t minlength = + b1->arraysize < b2->arraysize ? b1->arraysize : b2->arraysize; + size_t k = 0; + size_t answer = 0; + for (; k < minlength; ++k) { + answer += roaring_hamming(b1->array[k] ^ b2->array[k]); + } + if (b2->arraysize > b1->arraysize) { + for (; k < b2->arraysize; ++k) { + answer += roaring_hamming(b2->array[k]); + } + } else { + for (; k < b1->arraysize; ++k) { + answer += roaring_hamming(b1->array[k]); + } + } + return answer; +} + +bool bitset_trim(bitset_t *bitset) { + size_t newsize = bitset->arraysize; + while (newsize > 0) { + if (bitset->array[newsize - 1] == 0) + newsize -= 1; + else + break; + } + if (bitset->capacity == newsize) return true; // nothing to do + uint64_t *newarray; + if ((newarray = (uint64_t *)roaring_realloc( + bitset->array, sizeof(uint64_t) * newsize)) == NULL) { + return false; + } + bitset->array = newarray; + bitset->capacity = newsize; + bitset->arraysize = newsize; + return true; +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/bitset_util.c b/contrib/libs/croaring/src/bitset_util.c new file mode 100644 index 000000000000..0ae7d925827a --- /dev/null +++ b/contrib/libs/croaring/src/bitset_util.c @@ -0,0 +1,1161 @@ +#include <assert.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <roaring/bitset_util.h> + +#if CROARING_IS_X64 +#ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#error "CROARING_COMPILER_SUPPORTS_AVX512 needs to be defined." +#endif // CROARING_COMPILER_SUPPORTS_AVX512 +#endif +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif +#ifdef __cplusplus +using namespace ::roaring::internal; +extern "C" { +namespace roaring { +namespace api { +#endif + +#if CROARING_IS_X64 +static uint8_t lengthTable[256] = { + 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, + 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, 2, 3, 3, 4, + 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, + 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, + 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, + 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8}; +#endif + +#if CROARING_IS_X64 +ALIGNED(32) +static uint32_t vecDecodeTable[256][8] = { + {0, 0, 0, 0, 0, 0, 0, 0}, /* 0x00 (00000000) */ + {1, 0, 0, 0, 0, 0, 0, 0}, /* 0x01 (00000001) */ + {2, 0, 0, 0, 0, 0, 0, 0}, /* 0x02 (00000010) */ + {1, 2, 0, 0, 0, 0, 0, 0}, /* 0x03 (00000011) */ + {3, 0, 0, 0, 0, 0, 0, 0}, /* 0x04 (00000100) */ + {1, 3, 0, 0, 0, 0, 0, 0}, /* 0x05 (00000101) */ + {2, 3, 0, 0, 0, 0, 0, 0}, /* 0x06 (00000110) */ + {1, 2, 3, 0, 0, 0, 0, 0}, /* 0x07 (00000111) */ + {4, 0, 0, 0, 0, 0, 0, 0}, /* 0x08 (00001000) */ + {1, 4, 0, 0, 0, 0, 0, 0}, /* 0x09 (00001001) */ + {2, 4, 0, 0, 0, 0, 0, 0}, /* 0x0A (00001010) */ + {1, 2, 4, 0, 0, 0, 0, 0}, /* 0x0B (00001011) */ + {3, 4, 0, 0, 0, 0, 0, 0}, /* 0x0C (00001100) */ + {1, 3, 4, 0, 0, 0, 0, 0}, /* 0x0D (00001101) */ + {2, 3, 4, 0, 0, 0, 0, 0}, /* 0x0E (00001110) */ + {1, 2, 3, 4, 0, 0, 0, 0}, /* 0x0F (00001111) */ + {5, 0, 0, 0, 0, 0, 0, 0}, /* 0x10 (00010000) */ + {1, 5, 0, 0, 0, 0, 0, 0}, /* 0x11 (00010001) */ + {2, 5, 0, 0, 0, 0, 0, 0}, /* 0x12 (00010010) */ + {1, 2, 5, 0, 0, 0, 0, 0}, /* 0x13 (00010011) */ + {3, 5, 0, 0, 0, 0, 0, 0}, /* 0x14 (00010100) */ + {1, 3, 5, 0, 0, 0, 0, 0}, /* 0x15 (00010101) */ + {2, 3, 5, 0, 0, 0, 0, 0}, /* 0x16 (00010110) */ + {1, 2, 3, 5, 0, 0, 0, 0}, /* 0x17 (00010111) */ + {4, 5, 0, 0, 0, 0, 0, 0}, /* 0x18 (00011000) */ + {1, 4, 5, 0, 0, 0, 0, 0}, /* 0x19 (00011001) */ + {2, 4, 5, 0, 0, 0, 0, 0}, /* 0x1A (00011010) */ + {1, 2, 4, 5, 0, 0, 0, 0}, /* 0x1B (00011011) */ + {3, 4, 5, 0, 0, 0, 0, 0}, /* 0x1C (00011100) */ + {1, 3, 4, 5, 0, 0, 0, 0}, /* 0x1D (00011101) */ + {2, 3, 4, 5, 0, 0, 0, 0}, /* 0x1E (00011110) */ + {1, 2, 3, 4, 5, 0, 0, 0}, /* 0x1F (00011111) */ + {6, 0, 0, 0, 0, 0, 0, 0}, /* 0x20 (00100000) */ + {1, 6, 0, 0, 0, 0, 0, 0}, /* 0x21 (00100001) */ + {2, 6, 0, 0, 0, 0, 0, 0}, /* 0x22 (00100010) */ + {1, 2, 6, 0, 0, 0, 0, 0}, /* 0x23 (00100011) */ + {3, 6, 0, 0, 0, 0, 0, 0}, /* 0x24 (00100100) */ + {1, 3, 6, 0, 0, 0, 0, 0}, /* 0x25 (00100101) */ + {2, 3, 6, 0, 0, 0, 0, 0}, /* 0x26 (00100110) */ + {1, 2, 3, 6, 0, 0, 0, 0}, /* 0x27 (00100111) */ + {4, 6, 0, 0, 0, 0, 0, 0}, /* 0x28 (00101000) */ + {1, 4, 6, 0, 0, 0, 0, 0}, /* 0x29 (00101001) */ + {2, 4, 6, 0, 0, 0, 0, 0}, /* 0x2A (00101010) */ + {1, 2, 4, 6, 0, 0, 0, 0}, /* 0x2B (00101011) */ + {3, 4, 6, 0, 0, 0, 0, 0}, /* 0x2C (00101100) */ + {1, 3, 4, 6, 0, 0, 0, 0}, /* 0x2D (00101101) */ + {2, 3, 4, 6, 0, 0, 0, 0}, /* 0x2E (00101110) */ + {1, 2, 3, 4, 6, 0, 0, 0}, /* 0x2F (00101111) */ + {5, 6, 0, 0, 0, 0, 0, 0}, /* 0x30 (00110000) */ + {1, 5, 6, 0, 0, 0, 0, 0}, /* 0x31 (00110001) */ + {2, 5, 6, 0, 0, 0, 0, 0}, /* 0x32 (00110010) */ + {1, 2, 5, 6, 0, 0, 0, 0}, /* 0x33 (00110011) */ + {3, 5, 6, 0, 0, 0, 0, 0}, /* 0x34 (00110100) */ + {1, 3, 5, 6, 0, 0, 0, 0}, /* 0x35 (00110101) */ + {2, 3, 5, 6, 0, 0, 0, 0}, /* 0x36 (00110110) */ + {1, 2, 3, 5, 6, 0, 0, 0}, /* 0x37 (00110111) */ + {4, 5, 6, 0, 0, 0, 0, 0}, /* 0x38 (00111000) */ + {1, 4, 5, 6, 0, 0, 0, 0}, /* 0x39 (00111001) */ + {2, 4, 5, 6, 0, 0, 0, 0}, /* 0x3A (00111010) */ + {1, 2, 4, 5, 6, 0, 0, 0}, /* 0x3B (00111011) */ + {3, 4, 5, 6, 0, 0, 0, 0}, /* 0x3C (00111100) */ + {1, 3, 4, 5, 6, 0, 0, 0}, /* 0x3D (00111101) */ + {2, 3, 4, 5, 6, 0, 0, 0}, /* 0x3E (00111110) */ + {1, 2, 3, 4, 5, 6, 0, 0}, /* 0x3F (00111111) */ + {7, 0, 0, 0, 0, 0, 0, 0}, /* 0x40 (01000000) */ + {1, 7, 0, 0, 0, 0, 0, 0}, /* 0x41 (01000001) */ + {2, 7, 0, 0, 0, 0, 0, 0}, /* 0x42 (01000010) */ + {1, 2, 7, 0, 0, 0, 0, 0}, /* 0x43 (01000011) */ + {3, 7, 0, 0, 0, 0, 0, 0}, /* 0x44 (01000100) */ + {1, 3, 7, 0, 0, 0, 0, 0}, /* 0x45 (01000101) */ + {2, 3, 7, 0, 0, 0, 0, 0}, /* 0x46 (01000110) */ + {1, 2, 3, 7, 0, 0, 0, 0}, /* 0x47 (01000111) */ + {4, 7, 0, 0, 0, 0, 0, 0}, /* 0x48 (01001000) */ + {1, 4, 7, 0, 0, 0, 0, 0}, /* 0x49 (01001001) */ + {2, 4, 7, 0, 0, 0, 0, 0}, /* 0x4A (01001010) */ + {1, 2, 4, 7, 0, 0, 0, 0}, /* 0x4B (01001011) */ + {3, 4, 7, 0, 0, 0, 0, 0}, /* 0x4C (01001100) */ + {1, 3, 4, 7, 0, 0, 0, 0}, /* 0x4D (01001101) */ + {2, 3, 4, 7, 0, 0, 0, 0}, /* 0x4E (01001110) */ + {1, 2, 3, 4, 7, 0, 0, 0}, /* 0x4F (01001111) */ + {5, 7, 0, 0, 0, 0, 0, 0}, /* 0x50 (01010000) */ + {1, 5, 7, 0, 0, 0, 0, 0}, /* 0x51 (01010001) */ + {2, 5, 7, 0, 0, 0, 0, 0}, /* 0x52 (01010010) */ + {1, 2, 5, 7, 0, 0, 0, 0}, /* 0x53 (01010011) */ + {3, 5, 7, 0, 0, 0, 0, 0}, /* 0x54 (01010100) */ + {1, 3, 5, 7, 0, 0, 0, 0}, /* 0x55 (01010101) */ + {2, 3, 5, 7, 0, 0, 0, 0}, /* 0x56 (01010110) */ + {1, 2, 3, 5, 7, 0, 0, 0}, /* 0x57 (01010111) */ + {4, 5, 7, 0, 0, 0, 0, 0}, /* 0x58 (01011000) */ + {1, 4, 5, 7, 0, 0, 0, 0}, /* 0x59 (01011001) */ + {2, 4, 5, 7, 0, 0, 0, 0}, /* 0x5A (01011010) */ + {1, 2, 4, 5, 7, 0, 0, 0}, /* 0x5B (01011011) */ + {3, 4, 5, 7, 0, 0, 0, 0}, /* 0x5C (01011100) */ + {1, 3, 4, 5, 7, 0, 0, 0}, /* 0x5D (01011101) */ + {2, 3, 4, 5, 7, 0, 0, 0}, /* 0x5E (01011110) */ + {1, 2, 3, 4, 5, 7, 0, 0}, /* 0x5F (01011111) */ + {6, 7, 0, 0, 0, 0, 0, 0}, /* 0x60 (01100000) */ + {1, 6, 7, 0, 0, 0, 0, 0}, /* 0x61 (01100001) */ + {2, 6, 7, 0, 0, 0, 0, 0}, /* 0x62 (01100010) */ + {1, 2, 6, 7, 0, 0, 0, 0}, /* 0x63 (01100011) */ + {3, 6, 7, 0, 0, 0, 0, 0}, /* 0x64 (01100100) */ + {1, 3, 6, 7, 0, 0, 0, 0}, /* 0x65 (01100101) */ + {2, 3, 6, 7, 0, 0, 0, 0}, /* 0x66 (01100110) */ + {1, 2, 3, 6, 7, 0, 0, 0}, /* 0x67 (01100111) */ + {4, 6, 7, 0, 0, 0, 0, 0}, /* 0x68 (01101000) */ + {1, 4, 6, 7, 0, 0, 0, 0}, /* 0x69 (01101001) */ + {2, 4, 6, 7, 0, 0, 0, 0}, /* 0x6A (01101010) */ + {1, 2, 4, 6, 7, 0, 0, 0}, /* 0x6B (01101011) */ + {3, 4, 6, 7, 0, 0, 0, 0}, /* 0x6C (01101100) */ + {1, 3, 4, 6, 7, 0, 0, 0}, /* 0x6D (01101101) */ + {2, 3, 4, 6, 7, 0, 0, 0}, /* 0x6E (01101110) */ + {1, 2, 3, 4, 6, 7, 0, 0}, /* 0x6F (01101111) */ + {5, 6, 7, 0, 0, 0, 0, 0}, /* 0x70 (01110000) */ + {1, 5, 6, 7, 0, 0, 0, 0}, /* 0x71 (01110001) */ + {2, 5, 6, 7, 0, 0, 0, 0}, /* 0x72 (01110010) */ + {1, 2, 5, 6, 7, 0, 0, 0}, /* 0x73 (01110011) */ + {3, 5, 6, 7, 0, 0, 0, 0}, /* 0x74 (01110100) */ + {1, 3, 5, 6, 7, 0, 0, 0}, /* 0x75 (01110101) */ + {2, 3, 5, 6, 7, 0, 0, 0}, /* 0x76 (01110110) */ + {1, 2, 3, 5, 6, 7, 0, 0}, /* 0x77 (01110111) */ + {4, 5, 6, 7, 0, 0, 0, 0}, /* 0x78 (01111000) */ + {1, 4, 5, 6, 7, 0, 0, 0}, /* 0x79 (01111001) */ + {2, 4, 5, 6, 7, 0, 0, 0}, /* 0x7A (01111010) */ + {1, 2, 4, 5, 6, 7, 0, 0}, /* 0x7B (01111011) */ + {3, 4, 5, 6, 7, 0, 0, 0}, /* 0x7C (01111100) */ + {1, 3, 4, 5, 6, 7, 0, 0}, /* 0x7D (01111101) */ + {2, 3, 4, 5, 6, 7, 0, 0}, /* 0x7E (01111110) */ + {1, 2, 3, 4, 5, 6, 7, 0}, /* 0x7F (01111111) */ + {8, 0, 0, 0, 0, 0, 0, 0}, /* 0x80 (10000000) */ + {1, 8, 0, 0, 0, 0, 0, 0}, /* 0x81 (10000001) */ + {2, 8, 0, 0, 0, 0, 0, 0}, /* 0x82 (10000010) */ + {1, 2, 8, 0, 0, 0, 0, 0}, /* 0x83 (10000011) */ + {3, 8, 0, 0, 0, 0, 0, 0}, /* 0x84 (10000100) */ + {1, 3, 8, 0, 0, 0, 0, 0}, /* 0x85 (10000101) */ + {2, 3, 8, 0, 0, 0, 0, 0}, /* 0x86 (10000110) */ + {1, 2, 3, 8, 0, 0, 0, 0}, /* 0x87 (10000111) */ + {4, 8, 0, 0, 0, 0, 0, 0}, /* 0x88 (10001000) */ + {1, 4, 8, 0, 0, 0, 0, 0}, /* 0x89 (10001001) */ + {2, 4, 8, 0, 0, 0, 0, 0}, /* 0x8A (10001010) */ + {1, 2, 4, 8, 0, 0, 0, 0}, /* 0x8B (10001011) */ + {3, 4, 8, 0, 0, 0, 0, 0}, /* 0x8C (10001100) */ + {1, 3, 4, 8, 0, 0, 0, 0}, /* 0x8D (10001101) */ + {2, 3, 4, 8, 0, 0, 0, 0}, /* 0x8E (10001110) */ + {1, 2, 3, 4, 8, 0, 0, 0}, /* 0x8F (10001111) */ + {5, 8, 0, 0, 0, 0, 0, 0}, /* 0x90 (10010000) */ + {1, 5, 8, 0, 0, 0, 0, 0}, /* 0x91 (10010001) */ + {2, 5, 8, 0, 0, 0, 0, 0}, /* 0x92 (10010010) */ + {1, 2, 5, 8, 0, 0, 0, 0}, /* 0x93 (10010011) */ + {3, 5, 8, 0, 0, 0, 0, 0}, /* 0x94 (10010100) */ + {1, 3, 5, 8, 0, 0, 0, 0}, /* 0x95 (10010101) */ + {2, 3, 5, 8, 0, 0, 0, 0}, /* 0x96 (10010110) */ + {1, 2, 3, 5, 8, 0, 0, 0}, /* 0x97 (10010111) */ + {4, 5, 8, 0, 0, 0, 0, 0}, /* 0x98 (10011000) */ + {1, 4, 5, 8, 0, 0, 0, 0}, /* 0x99 (10011001) */ + {2, 4, 5, 8, 0, 0, 0, 0}, /* 0x9A (10011010) */ + {1, 2, 4, 5, 8, 0, 0, 0}, /* 0x9B (10011011) */ + {3, 4, 5, 8, 0, 0, 0, 0}, /* 0x9C (10011100) */ + {1, 3, 4, 5, 8, 0, 0, 0}, /* 0x9D (10011101) */ + {2, 3, 4, 5, 8, 0, 0, 0}, /* 0x9E (10011110) */ + {1, 2, 3, 4, 5, 8, 0, 0}, /* 0x9F (10011111) */ + {6, 8, 0, 0, 0, 0, 0, 0}, /* 0xA0 (10100000) */ + {1, 6, 8, 0, 0, 0, 0, 0}, /* 0xA1 (10100001) */ + {2, 6, 8, 0, 0, 0, 0, 0}, /* 0xA2 (10100010) */ + {1, 2, 6, 8, 0, 0, 0, 0}, /* 0xA3 (10100011) */ + {3, 6, 8, 0, 0, 0, 0, 0}, /* 0xA4 (10100100) */ + {1, 3, 6, 8, 0, 0, 0, 0}, /* 0xA5 (10100101) */ + {2, 3, 6, 8, 0, 0, 0, 0}, /* 0xA6 (10100110) */ + {1, 2, 3, 6, 8, 0, 0, 0}, /* 0xA7 (10100111) */ + {4, 6, 8, 0, 0, 0, 0, 0}, /* 0xA8 (10101000) */ + {1, 4, 6, 8, 0, 0, 0, 0}, /* 0xA9 (10101001) */ + {2, 4, 6, 8, 0, 0, 0, 0}, /* 0xAA (10101010) */ + {1, 2, 4, 6, 8, 0, 0, 0}, /* 0xAB (10101011) */ + {3, 4, 6, 8, 0, 0, 0, 0}, /* 0xAC (10101100) */ + {1, 3, 4, 6, 8, 0, 0, 0}, /* 0xAD (10101101) */ + {2, 3, 4, 6, 8, 0, 0, 0}, /* 0xAE (10101110) */ + {1, 2, 3, 4, 6, 8, 0, 0}, /* 0xAF (10101111) */ + {5, 6, 8, 0, 0, 0, 0, 0}, /* 0xB0 (10110000) */ + {1, 5, 6, 8, 0, 0, 0, 0}, /* 0xB1 (10110001) */ + {2, 5, 6, 8, 0, 0, 0, 0}, /* 0xB2 (10110010) */ + {1, 2, 5, 6, 8, 0, 0, 0}, /* 0xB3 (10110011) */ + {3, 5, 6, 8, 0, 0, 0, 0}, /* 0xB4 (10110100) */ + {1, 3, 5, 6, 8, 0, 0, 0}, /* 0xB5 (10110101) */ + {2, 3, 5, 6, 8, 0, 0, 0}, /* 0xB6 (10110110) */ + {1, 2, 3, 5, 6, 8, 0, 0}, /* 0xB7 (10110111) */ + {4, 5, 6, 8, 0, 0, 0, 0}, /* 0xB8 (10111000) */ + {1, 4, 5, 6, 8, 0, 0, 0}, /* 0xB9 (10111001) */ + {2, 4, 5, 6, 8, 0, 0, 0}, /* 0xBA (10111010) */ + {1, 2, 4, 5, 6, 8, 0, 0}, /* 0xBB (10111011) */ + {3, 4, 5, 6, 8, 0, 0, 0}, /* 0xBC (10111100) */ + {1, 3, 4, 5, 6, 8, 0, 0}, /* 0xBD (10111101) */ + {2, 3, 4, 5, 6, 8, 0, 0}, /* 0xBE (10111110) */ + {1, 2, 3, 4, 5, 6, 8, 0}, /* 0xBF (10111111) */ + {7, 8, 0, 0, 0, 0, 0, 0}, /* 0xC0 (11000000) */ + {1, 7, 8, 0, 0, 0, 0, 0}, /* 0xC1 (11000001) */ + {2, 7, 8, 0, 0, 0, 0, 0}, /* 0xC2 (11000010) */ + {1, 2, 7, 8, 0, 0, 0, 0}, /* 0xC3 (11000011) */ + {3, 7, 8, 0, 0, 0, 0, 0}, /* 0xC4 (11000100) */ + {1, 3, 7, 8, 0, 0, 0, 0}, /* 0xC5 (11000101) */ + {2, 3, 7, 8, 0, 0, 0, 0}, /* 0xC6 (11000110) */ + {1, 2, 3, 7, 8, 0, 0, 0}, /* 0xC7 (11000111) */ + {4, 7, 8, 0, 0, 0, 0, 0}, /* 0xC8 (11001000) */ + {1, 4, 7, 8, 0, 0, 0, 0}, /* 0xC9 (11001001) */ + {2, 4, 7, 8, 0, 0, 0, 0}, /* 0xCA (11001010) */ + {1, 2, 4, 7, 8, 0, 0, 0}, /* 0xCB (11001011) */ + {3, 4, 7, 8, 0, 0, 0, 0}, /* 0xCC (11001100) */ + {1, 3, 4, 7, 8, 0, 0, 0}, /* 0xCD (11001101) */ + {2, 3, 4, 7, 8, 0, 0, 0}, /* 0xCE (11001110) */ + {1, 2, 3, 4, 7, 8, 0, 0}, /* 0xCF (11001111) */ + {5, 7, 8, 0, 0, 0, 0, 0}, /* 0xD0 (11010000) */ + {1, 5, 7, 8, 0, 0, 0, 0}, /* 0xD1 (11010001) */ + {2, 5, 7, 8, 0, 0, 0, 0}, /* 0xD2 (11010010) */ + {1, 2, 5, 7, 8, 0, 0, 0}, /* 0xD3 (11010011) */ + {3, 5, 7, 8, 0, 0, 0, 0}, /* 0xD4 (11010100) */ + {1, 3, 5, 7, 8, 0, 0, 0}, /* 0xD5 (11010101) */ + {2, 3, 5, 7, 8, 0, 0, 0}, /* 0xD6 (11010110) */ + {1, 2, 3, 5, 7, 8, 0, 0}, /* 0xD7 (11010111) */ + {4, 5, 7, 8, 0, 0, 0, 0}, /* 0xD8 (11011000) */ + {1, 4, 5, 7, 8, 0, 0, 0}, /* 0xD9 (11011001) */ + {2, 4, 5, 7, 8, 0, 0, 0}, /* 0xDA (11011010) */ + {1, 2, 4, 5, 7, 8, 0, 0}, /* 0xDB (11011011) */ + {3, 4, 5, 7, 8, 0, 0, 0}, /* 0xDC (11011100) */ + {1, 3, 4, 5, 7, 8, 0, 0}, /* 0xDD (11011101) */ + {2, 3, 4, 5, 7, 8, 0, 0}, /* 0xDE (11011110) */ + {1, 2, 3, 4, 5, 7, 8, 0}, /* 0xDF (11011111) */ + {6, 7, 8, 0, 0, 0, 0, 0}, /* 0xE0 (11100000) */ + {1, 6, 7, 8, 0, 0, 0, 0}, /* 0xE1 (11100001) */ + {2, 6, 7, 8, 0, 0, 0, 0}, /* 0xE2 (11100010) */ + {1, 2, 6, 7, 8, 0, 0, 0}, /* 0xE3 (11100011) */ + {3, 6, 7, 8, 0, 0, 0, 0}, /* 0xE4 (11100100) */ + {1, 3, 6, 7, 8, 0, 0, 0}, /* 0xE5 (11100101) */ + {2, 3, 6, 7, 8, 0, 0, 0}, /* 0xE6 (11100110) */ + {1, 2, 3, 6, 7, 8, 0, 0}, /* 0xE7 (11100111) */ + {4, 6, 7, 8, 0, 0, 0, 0}, /* 0xE8 (11101000) */ + {1, 4, 6, 7, 8, 0, 0, 0}, /* 0xE9 (11101001) */ + {2, 4, 6, 7, 8, 0, 0, 0}, /* 0xEA (11101010) */ + {1, 2, 4, 6, 7, 8, 0, 0}, /* 0xEB (11101011) */ + {3, 4, 6, 7, 8, 0, 0, 0}, /* 0xEC (11101100) */ + {1, 3, 4, 6, 7, 8, 0, 0}, /* 0xED (11101101) */ + {2, 3, 4, 6, 7, 8, 0, 0}, /* 0xEE (11101110) */ + {1, 2, 3, 4, 6, 7, 8, 0}, /* 0xEF (11101111) */ + {5, 6, 7, 8, 0, 0, 0, 0}, /* 0xF0 (11110000) */ + {1, 5, 6, 7, 8, 0, 0, 0}, /* 0xF1 (11110001) */ + {2, 5, 6, 7, 8, 0, 0, 0}, /* 0xF2 (11110010) */ + {1, 2, 5, 6, 7, 8, 0, 0}, /* 0xF3 (11110011) */ + {3, 5, 6, 7, 8, 0, 0, 0}, /* 0xF4 (11110100) */ + {1, 3, 5, 6, 7, 8, 0, 0}, /* 0xF5 (11110101) */ + {2, 3, 5, 6, 7, 8, 0, 0}, /* 0xF6 (11110110) */ + {1, 2, 3, 5, 6, 7, 8, 0}, /* 0xF7 (11110111) */ + {4, 5, 6, 7, 8, 0, 0, 0}, /* 0xF8 (11111000) */ + {1, 4, 5, 6, 7, 8, 0, 0}, /* 0xF9 (11111001) */ + {2, 4, 5, 6, 7, 8, 0, 0}, /* 0xFA (11111010) */ + {1, 2, 4, 5, 6, 7, 8, 0}, /* 0xFB (11111011) */ + {3, 4, 5, 6, 7, 8, 0, 0}, /* 0xFC (11111100) */ + {1, 3, 4, 5, 6, 7, 8, 0}, /* 0xFD (11111101) */ + {2, 3, 4, 5, 6, 7, 8, 0}, /* 0xFE (11111110) */ + {1, 2, 3, 4, 5, 6, 7, 8} /* 0xFF (11111111) */ +}; + +#endif // #if CROARING_IS_X64 + +#if CROARING_IS_X64 +// same as vecDecodeTable but in 16 bits +ALIGNED(32) +static uint16_t vecDecodeTable_uint16[256][8] = { + {0, 0, 0, 0, 0, 0, 0, 0}, /* 0x00 (00000000) */ + {1, 0, 0, 0, 0, 0, 0, 0}, /* 0x01 (00000001) */ + {2, 0, 0, 0, 0, 0, 0, 0}, /* 0x02 (00000010) */ + {1, 2, 0, 0, 0, 0, 0, 0}, /* 0x03 (00000011) */ + {3, 0, 0, 0, 0, 0, 0, 0}, /* 0x04 (00000100) */ + {1, 3, 0, 0, 0, 0, 0, 0}, /* 0x05 (00000101) */ + {2, 3, 0, 0, 0, 0, 0, 0}, /* 0x06 (00000110) */ + {1, 2, 3, 0, 0, 0, 0, 0}, /* 0x07 (00000111) */ + {4, 0, 0, 0, 0, 0, 0, 0}, /* 0x08 (00001000) */ + {1, 4, 0, 0, 0, 0, 0, 0}, /* 0x09 (00001001) */ + {2, 4, 0, 0, 0, 0, 0, 0}, /* 0x0A (00001010) */ + {1, 2, 4, 0, 0, 0, 0, 0}, /* 0x0B (00001011) */ + {3, 4, 0, 0, 0, 0, 0, 0}, /* 0x0C (00001100) */ + {1, 3, 4, 0, 0, 0, 0, 0}, /* 0x0D (00001101) */ + {2, 3, 4, 0, 0, 0, 0, 0}, /* 0x0E (00001110) */ + {1, 2, 3, 4, 0, 0, 0, 0}, /* 0x0F (00001111) */ + {5, 0, 0, 0, 0, 0, 0, 0}, /* 0x10 (00010000) */ + {1, 5, 0, 0, 0, 0, 0, 0}, /* 0x11 (00010001) */ + {2, 5, 0, 0, 0, 0, 0, 0}, /* 0x12 (00010010) */ + {1, 2, 5, 0, 0, 0, 0, 0}, /* 0x13 (00010011) */ + {3, 5, 0, 0, 0, 0, 0, 0}, /* 0x14 (00010100) */ + {1, 3, 5, 0, 0, 0, 0, 0}, /* 0x15 (00010101) */ + {2, 3, 5, 0, 0, 0, 0, 0}, /* 0x16 (00010110) */ + {1, 2, 3, 5, 0, 0, 0, 0}, /* 0x17 (00010111) */ + {4, 5, 0, 0, 0, 0, 0, 0}, /* 0x18 (00011000) */ + {1, 4, 5, 0, 0, 0, 0, 0}, /* 0x19 (00011001) */ + {2, 4, 5, 0, 0, 0, 0, 0}, /* 0x1A (00011010) */ + {1, 2, 4, 5, 0, 0, 0, 0}, /* 0x1B (00011011) */ + {3, 4, 5, 0, 0, 0, 0, 0}, /* 0x1C (00011100) */ + {1, 3, 4, 5, 0, 0, 0, 0}, /* 0x1D (00011101) */ + {2, 3, 4, 5, 0, 0, 0, 0}, /* 0x1E (00011110) */ + {1, 2, 3, 4, 5, 0, 0, 0}, /* 0x1F (00011111) */ + {6, 0, 0, 0, 0, 0, 0, 0}, /* 0x20 (00100000) */ + {1, 6, 0, 0, 0, 0, 0, 0}, /* 0x21 (00100001) */ + {2, 6, 0, 0, 0, 0, 0, 0}, /* 0x22 (00100010) */ + {1, 2, 6, 0, 0, 0, 0, 0}, /* 0x23 (00100011) */ + {3, 6, 0, 0, 0, 0, 0, 0}, /* 0x24 (00100100) */ + {1, 3, 6, 0, 0, 0, 0, 0}, /* 0x25 (00100101) */ + {2, 3, 6, 0, 0, 0, 0, 0}, /* 0x26 (00100110) */ + {1, 2, 3, 6, 0, 0, 0, 0}, /* 0x27 (00100111) */ + {4, 6, 0, 0, 0, 0, 0, 0}, /* 0x28 (00101000) */ + {1, 4, 6, 0, 0, 0, 0, 0}, /* 0x29 (00101001) */ + {2, 4, 6, 0, 0, 0, 0, 0}, /* 0x2A (00101010) */ + {1, 2, 4, 6, 0, 0, 0, 0}, /* 0x2B (00101011) */ + {3, 4, 6, 0, 0, 0, 0, 0}, /* 0x2C (00101100) */ + {1, 3, 4, 6, 0, 0, 0, 0}, /* 0x2D (00101101) */ + {2, 3, 4, 6, 0, 0, 0, 0}, /* 0x2E (00101110) */ + {1, 2, 3, 4, 6, 0, 0, 0}, /* 0x2F (00101111) */ + {5, 6, 0, 0, 0, 0, 0, 0}, /* 0x30 (00110000) */ + {1, 5, 6, 0, 0, 0, 0, 0}, /* 0x31 (00110001) */ + {2, 5, 6, 0, 0, 0, 0, 0}, /* 0x32 (00110010) */ + {1, 2, 5, 6, 0, 0, 0, 0}, /* 0x33 (00110011) */ + {3, 5, 6, 0, 0, 0, 0, 0}, /* 0x34 (00110100) */ + {1, 3, 5, 6, 0, 0, 0, 0}, /* 0x35 (00110101) */ + {2, 3, 5, 6, 0, 0, 0, 0}, /* 0x36 (00110110) */ + {1, 2, 3, 5, 6, 0, 0, 0}, /* 0x37 (00110111) */ + {4, 5, 6, 0, 0, 0, 0, 0}, /* 0x38 (00111000) */ + {1, 4, 5, 6, 0, 0, 0, 0}, /* 0x39 (00111001) */ + {2, 4, 5, 6, 0, 0, 0, 0}, /* 0x3A (00111010) */ + {1, 2, 4, 5, 6, 0, 0, 0}, /* 0x3B (00111011) */ + {3, 4, 5, 6, 0, 0, 0, 0}, /* 0x3C (00111100) */ + {1, 3, 4, 5, 6, 0, 0, 0}, /* 0x3D (00111101) */ + {2, 3, 4, 5, 6, 0, 0, 0}, /* 0x3E (00111110) */ + {1, 2, 3, 4, 5, 6, 0, 0}, /* 0x3F (00111111) */ + {7, 0, 0, 0, 0, 0, 0, 0}, /* 0x40 (01000000) */ + {1, 7, 0, 0, 0, 0, 0, 0}, /* 0x41 (01000001) */ + {2, 7, 0, 0, 0, 0, 0, 0}, /* 0x42 (01000010) */ + {1, 2, 7, 0, 0, 0, 0, 0}, /* 0x43 (01000011) */ + {3, 7, 0, 0, 0, 0, 0, 0}, /* 0x44 (01000100) */ + {1, 3, 7, 0, 0, 0, 0, 0}, /* 0x45 (01000101) */ + {2, 3, 7, 0, 0, 0, 0, 0}, /* 0x46 (01000110) */ + {1, 2, 3, 7, 0, 0, 0, 0}, /* 0x47 (01000111) */ + {4, 7, 0, 0, 0, 0, 0, 0}, /* 0x48 (01001000) */ + {1, 4, 7, 0, 0, 0, 0, 0}, /* 0x49 (01001001) */ + {2, 4, 7, 0, 0, 0, 0, 0}, /* 0x4A (01001010) */ + {1, 2, 4, 7, 0, 0, 0, 0}, /* 0x4B (01001011) */ + {3, 4, 7, 0, 0, 0, 0, 0}, /* 0x4C (01001100) */ + {1, 3, 4, 7, 0, 0, 0, 0}, /* 0x4D (01001101) */ + {2, 3, 4, 7, 0, 0, 0, 0}, /* 0x4E (01001110) */ + {1, 2, 3, 4, 7, 0, 0, 0}, /* 0x4F (01001111) */ + {5, 7, 0, 0, 0, 0, 0, 0}, /* 0x50 (01010000) */ + {1, 5, 7, 0, 0, 0, 0, 0}, /* 0x51 (01010001) */ + {2, 5, 7, 0, 0, 0, 0, 0}, /* 0x52 (01010010) */ + {1, 2, 5, 7, 0, 0, 0, 0}, /* 0x53 (01010011) */ + {3, 5, 7, 0, 0, 0, 0, 0}, /* 0x54 (01010100) */ + {1, 3, 5, 7, 0, 0, 0, 0}, /* 0x55 (01010101) */ + {2, 3, 5, 7, 0, 0, 0, 0}, /* 0x56 (01010110) */ + {1, 2, 3, 5, 7, 0, 0, 0}, /* 0x57 (01010111) */ + {4, 5, 7, 0, 0, 0, 0, 0}, /* 0x58 (01011000) */ + {1, 4, 5, 7, 0, 0, 0, 0}, /* 0x59 (01011001) */ + {2, 4, 5, 7, 0, 0, 0, 0}, /* 0x5A (01011010) */ + {1, 2, 4, 5, 7, 0, 0, 0}, /* 0x5B (01011011) */ + {3, 4, 5, 7, 0, 0, 0, 0}, /* 0x5C (01011100) */ + {1, 3, 4, 5, 7, 0, 0, 0}, /* 0x5D (01011101) */ + {2, 3, 4, 5, 7, 0, 0, 0}, /* 0x5E (01011110) */ + {1, 2, 3, 4, 5, 7, 0, 0}, /* 0x5F (01011111) */ + {6, 7, 0, 0, 0, 0, 0, 0}, /* 0x60 (01100000) */ + {1, 6, 7, 0, 0, 0, 0, 0}, /* 0x61 (01100001) */ + {2, 6, 7, 0, 0, 0, 0, 0}, /* 0x62 (01100010) */ + {1, 2, 6, 7, 0, 0, 0, 0}, /* 0x63 (01100011) */ + {3, 6, 7, 0, 0, 0, 0, 0}, /* 0x64 (01100100) */ + {1, 3, 6, 7, 0, 0, 0, 0}, /* 0x65 (01100101) */ + {2, 3, 6, 7, 0, 0, 0, 0}, /* 0x66 (01100110) */ + {1, 2, 3, 6, 7, 0, 0, 0}, /* 0x67 (01100111) */ + {4, 6, 7, 0, 0, 0, 0, 0}, /* 0x68 (01101000) */ + {1, 4, 6, 7, 0, 0, 0, 0}, /* 0x69 (01101001) */ + {2, 4, 6, 7, 0, 0, 0, 0}, /* 0x6A (01101010) */ + {1, 2, 4, 6, 7, 0, 0, 0}, /* 0x6B (01101011) */ + {3, 4, 6, 7, 0, 0, 0, 0}, /* 0x6C (01101100) */ + {1, 3, 4, 6, 7, 0, 0, 0}, /* 0x6D (01101101) */ + {2, 3, 4, 6, 7, 0, 0, 0}, /* 0x6E (01101110) */ + {1, 2, 3, 4, 6, 7, 0, 0}, /* 0x6F (01101111) */ + {5, 6, 7, 0, 0, 0, 0, 0}, /* 0x70 (01110000) */ + {1, 5, 6, 7, 0, 0, 0, 0}, /* 0x71 (01110001) */ + {2, 5, 6, 7, 0, 0, 0, 0}, /* 0x72 (01110010) */ + {1, 2, 5, 6, 7, 0, 0, 0}, /* 0x73 (01110011) */ + {3, 5, 6, 7, 0, 0, 0, 0}, /* 0x74 (01110100) */ + {1, 3, 5, 6, 7, 0, 0, 0}, /* 0x75 (01110101) */ + {2, 3, 5, 6, 7, 0, 0, 0}, /* 0x76 (01110110) */ + {1, 2, 3, 5, 6, 7, 0, 0}, /* 0x77 (01110111) */ + {4, 5, 6, 7, 0, 0, 0, 0}, /* 0x78 (01111000) */ + {1, 4, 5, 6, 7, 0, 0, 0}, /* 0x79 (01111001) */ + {2, 4, 5, 6, 7, 0, 0, 0}, /* 0x7A (01111010) */ + {1, 2, 4, 5, 6, 7, 0, 0}, /* 0x7B (01111011) */ + {3, 4, 5, 6, 7, 0, 0, 0}, /* 0x7C (01111100) */ + {1, 3, 4, 5, 6, 7, 0, 0}, /* 0x7D (01111101) */ + {2, 3, 4, 5, 6, 7, 0, 0}, /* 0x7E (01111110) */ + {1, 2, 3, 4, 5, 6, 7, 0}, /* 0x7F (01111111) */ + {8, 0, 0, 0, 0, 0, 0, 0}, /* 0x80 (10000000) */ + {1, 8, 0, 0, 0, 0, 0, 0}, /* 0x81 (10000001) */ + {2, 8, 0, 0, 0, 0, 0, 0}, /* 0x82 (10000010) */ + {1, 2, 8, 0, 0, 0, 0, 0}, /* 0x83 (10000011) */ + {3, 8, 0, 0, 0, 0, 0, 0}, /* 0x84 (10000100) */ + {1, 3, 8, 0, 0, 0, 0, 0}, /* 0x85 (10000101) */ + {2, 3, 8, 0, 0, 0, 0, 0}, /* 0x86 (10000110) */ + {1, 2, 3, 8, 0, 0, 0, 0}, /* 0x87 (10000111) */ + {4, 8, 0, 0, 0, 0, 0, 0}, /* 0x88 (10001000) */ + {1, 4, 8, 0, 0, 0, 0, 0}, /* 0x89 (10001001) */ + {2, 4, 8, 0, 0, 0, 0, 0}, /* 0x8A (10001010) */ + {1, 2, 4, 8, 0, 0, 0, 0}, /* 0x8B (10001011) */ + {3, 4, 8, 0, 0, 0, 0, 0}, /* 0x8C (10001100) */ + {1, 3, 4, 8, 0, 0, 0, 0}, /* 0x8D (10001101) */ + {2, 3, 4, 8, 0, 0, 0, 0}, /* 0x8E (10001110) */ + {1, 2, 3, 4, 8, 0, 0, 0}, /* 0x8F (10001111) */ + {5, 8, 0, 0, 0, 0, 0, 0}, /* 0x90 (10010000) */ + {1, 5, 8, 0, 0, 0, 0, 0}, /* 0x91 (10010001) */ + {2, 5, 8, 0, 0, 0, 0, 0}, /* 0x92 (10010010) */ + {1, 2, 5, 8, 0, 0, 0, 0}, /* 0x93 (10010011) */ + {3, 5, 8, 0, 0, 0, 0, 0}, /* 0x94 (10010100) */ + {1, 3, 5, 8, 0, 0, 0, 0}, /* 0x95 (10010101) */ + {2, 3, 5, 8, 0, 0, 0, 0}, /* 0x96 (10010110) */ + {1, 2, 3, 5, 8, 0, 0, 0}, /* 0x97 (10010111) */ + {4, 5, 8, 0, 0, 0, 0, 0}, /* 0x98 (10011000) */ + {1, 4, 5, 8, 0, 0, 0, 0}, /* 0x99 (10011001) */ + {2, 4, 5, 8, 0, 0, 0, 0}, /* 0x9A (10011010) */ + {1, 2, 4, 5, 8, 0, 0, 0}, /* 0x9B (10011011) */ + {3, 4, 5, 8, 0, 0, 0, 0}, /* 0x9C (10011100) */ + {1, 3, 4, 5, 8, 0, 0, 0}, /* 0x9D (10011101) */ + {2, 3, 4, 5, 8, 0, 0, 0}, /* 0x9E (10011110) */ + {1, 2, 3, 4, 5, 8, 0, 0}, /* 0x9F (10011111) */ + {6, 8, 0, 0, 0, 0, 0, 0}, /* 0xA0 (10100000) */ + {1, 6, 8, 0, 0, 0, 0, 0}, /* 0xA1 (10100001) */ + {2, 6, 8, 0, 0, 0, 0, 0}, /* 0xA2 (10100010) */ + {1, 2, 6, 8, 0, 0, 0, 0}, /* 0xA3 (10100011) */ + {3, 6, 8, 0, 0, 0, 0, 0}, /* 0xA4 (10100100) */ + {1, 3, 6, 8, 0, 0, 0, 0}, /* 0xA5 (10100101) */ + {2, 3, 6, 8, 0, 0, 0, 0}, /* 0xA6 (10100110) */ + {1, 2, 3, 6, 8, 0, 0, 0}, /* 0xA7 (10100111) */ + {4, 6, 8, 0, 0, 0, 0, 0}, /* 0xA8 (10101000) */ + {1, 4, 6, 8, 0, 0, 0, 0}, /* 0xA9 (10101001) */ + {2, 4, 6, 8, 0, 0, 0, 0}, /* 0xAA (10101010) */ + {1, 2, 4, 6, 8, 0, 0, 0}, /* 0xAB (10101011) */ + {3, 4, 6, 8, 0, 0, 0, 0}, /* 0xAC (10101100) */ + {1, 3, 4, 6, 8, 0, 0, 0}, /* 0xAD (10101101) */ + {2, 3, 4, 6, 8, 0, 0, 0}, /* 0xAE (10101110) */ + {1, 2, 3, 4, 6, 8, 0, 0}, /* 0xAF (10101111) */ + {5, 6, 8, 0, 0, 0, 0, 0}, /* 0xB0 (10110000) */ + {1, 5, 6, 8, 0, 0, 0, 0}, /* 0xB1 (10110001) */ + {2, 5, 6, 8, 0, 0, 0, 0}, /* 0xB2 (10110010) */ + {1, 2, 5, 6, 8, 0, 0, 0}, /* 0xB3 (10110011) */ + {3, 5, 6, 8, 0, 0, 0, 0}, /* 0xB4 (10110100) */ + {1, 3, 5, 6, 8, 0, 0, 0}, /* 0xB5 (10110101) */ + {2, 3, 5, 6, 8, 0, 0, 0}, /* 0xB6 (10110110) */ + {1, 2, 3, 5, 6, 8, 0, 0}, /* 0xB7 (10110111) */ + {4, 5, 6, 8, 0, 0, 0, 0}, /* 0xB8 (10111000) */ + {1, 4, 5, 6, 8, 0, 0, 0}, /* 0xB9 (10111001) */ + {2, 4, 5, 6, 8, 0, 0, 0}, /* 0xBA (10111010) */ + {1, 2, 4, 5, 6, 8, 0, 0}, /* 0xBB (10111011) */ + {3, 4, 5, 6, 8, 0, 0, 0}, /* 0xBC (10111100) */ + {1, 3, 4, 5, 6, 8, 0, 0}, /* 0xBD (10111101) */ + {2, 3, 4, 5, 6, 8, 0, 0}, /* 0xBE (10111110) */ + {1, 2, 3, 4, 5, 6, 8, 0}, /* 0xBF (10111111) */ + {7, 8, 0, 0, 0, 0, 0, 0}, /* 0xC0 (11000000) */ + {1, 7, 8, 0, 0, 0, 0, 0}, /* 0xC1 (11000001) */ + {2, 7, 8, 0, 0, 0, 0, 0}, /* 0xC2 (11000010) */ + {1, 2, 7, 8, 0, 0, 0, 0}, /* 0xC3 (11000011) */ + {3, 7, 8, 0, 0, 0, 0, 0}, /* 0xC4 (11000100) */ + {1, 3, 7, 8, 0, 0, 0, 0}, /* 0xC5 (11000101) */ + {2, 3, 7, 8, 0, 0, 0, 0}, /* 0xC6 (11000110) */ + {1, 2, 3, 7, 8, 0, 0, 0}, /* 0xC7 (11000111) */ + {4, 7, 8, 0, 0, 0, 0, 0}, /* 0xC8 (11001000) */ + {1, 4, 7, 8, 0, 0, 0, 0}, /* 0xC9 (11001001) */ + {2, 4, 7, 8, 0, 0, 0, 0}, /* 0xCA (11001010) */ + {1, 2, 4, 7, 8, 0, 0, 0}, /* 0xCB (11001011) */ + {3, 4, 7, 8, 0, 0, 0, 0}, /* 0xCC (11001100) */ + {1, 3, 4, 7, 8, 0, 0, 0}, /* 0xCD (11001101) */ + {2, 3, 4, 7, 8, 0, 0, 0}, /* 0xCE (11001110) */ + {1, 2, 3, 4, 7, 8, 0, 0}, /* 0xCF (11001111) */ + {5, 7, 8, 0, 0, 0, 0, 0}, /* 0xD0 (11010000) */ + {1, 5, 7, 8, 0, 0, 0, 0}, /* 0xD1 (11010001) */ + {2, 5, 7, 8, 0, 0, 0, 0}, /* 0xD2 (11010010) */ + {1, 2, 5, 7, 8, 0, 0, 0}, /* 0xD3 (11010011) */ + {3, 5, 7, 8, 0, 0, 0, 0}, /* 0xD4 (11010100) */ + {1, 3, 5, 7, 8, 0, 0, 0}, /* 0xD5 (11010101) */ + {2, 3, 5, 7, 8, 0, 0, 0}, /* 0xD6 (11010110) */ + {1, 2, 3, 5, 7, 8, 0, 0}, /* 0xD7 (11010111) */ + {4, 5, 7, 8, 0, 0, 0, 0}, /* 0xD8 (11011000) */ + {1, 4, 5, 7, 8, 0, 0, 0}, /* 0xD9 (11011001) */ + {2, 4, 5, 7, 8, 0, 0, 0}, /* 0xDA (11011010) */ + {1, 2, 4, 5, 7, 8, 0, 0}, /* 0xDB (11011011) */ + {3, 4, 5, 7, 8, 0, 0, 0}, /* 0xDC (11011100) */ + {1, 3, 4, 5, 7, 8, 0, 0}, /* 0xDD (11011101) */ + {2, 3, 4, 5, 7, 8, 0, 0}, /* 0xDE (11011110) */ + {1, 2, 3, 4, 5, 7, 8, 0}, /* 0xDF (11011111) */ + {6, 7, 8, 0, 0, 0, 0, 0}, /* 0xE0 (11100000) */ + {1, 6, 7, 8, 0, 0, 0, 0}, /* 0xE1 (11100001) */ + {2, 6, 7, 8, 0, 0, 0, 0}, /* 0xE2 (11100010) */ + {1, 2, 6, 7, 8, 0, 0, 0}, /* 0xE3 (11100011) */ + {3, 6, 7, 8, 0, 0, 0, 0}, /* 0xE4 (11100100) */ + {1, 3, 6, 7, 8, 0, 0, 0}, /* 0xE5 (11100101) */ + {2, 3, 6, 7, 8, 0, 0, 0}, /* 0xE6 (11100110) */ + {1, 2, 3, 6, 7, 8, 0, 0}, /* 0xE7 (11100111) */ + {4, 6, 7, 8, 0, 0, 0, 0}, /* 0xE8 (11101000) */ + {1, 4, 6, 7, 8, 0, 0, 0}, /* 0xE9 (11101001) */ + {2, 4, 6, 7, 8, 0, 0, 0}, /* 0xEA (11101010) */ + {1, 2, 4, 6, 7, 8, 0, 0}, /* 0xEB (11101011) */ + {3, 4, 6, 7, 8, 0, 0, 0}, /* 0xEC (11101100) */ + {1, 3, 4, 6, 7, 8, 0, 0}, /* 0xED (11101101) */ + {2, 3, 4, 6, 7, 8, 0, 0}, /* 0xEE (11101110) */ + {1, 2, 3, 4, 6, 7, 8, 0}, /* 0xEF (11101111) */ + {5, 6, 7, 8, 0, 0, 0, 0}, /* 0xF0 (11110000) */ + {1, 5, 6, 7, 8, 0, 0, 0}, /* 0xF1 (11110001) */ + {2, 5, 6, 7, 8, 0, 0, 0}, /* 0xF2 (11110010) */ + {1, 2, 5, 6, 7, 8, 0, 0}, /* 0xF3 (11110011) */ + {3, 5, 6, 7, 8, 0, 0, 0}, /* 0xF4 (11110100) */ + {1, 3, 5, 6, 7, 8, 0, 0}, /* 0xF5 (11110101) */ + {2, 3, 5, 6, 7, 8, 0, 0}, /* 0xF6 (11110110) */ + {1, 2, 3, 5, 6, 7, 8, 0}, /* 0xF7 (11110111) */ + {4, 5, 6, 7, 8, 0, 0, 0}, /* 0xF8 (11111000) */ + {1, 4, 5, 6, 7, 8, 0, 0}, /* 0xF9 (11111001) */ + {2, 4, 5, 6, 7, 8, 0, 0}, /* 0xFA (11111010) */ + {1, 2, 4, 5, 6, 7, 8, 0}, /* 0xFB (11111011) */ + {3, 4, 5, 6, 7, 8, 0, 0}, /* 0xFC (11111100) */ + {1, 3, 4, 5, 6, 7, 8, 0}, /* 0xFD (11111101) */ + {2, 3, 4, 5, 6, 7, 8, 0}, /* 0xFE (11111110) */ + {1, 2, 3, 4, 5, 6, 7, 8} /* 0xFF (11111111) */ +}; + +#endif + +#if CROARING_IS_X64 +#if CROARING_COMPILER_SUPPORTS_AVX512 +CROARING_TARGET_AVX512 +const uint8_t vbmi2_table[64] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}; +size_t bitset_extract_setbits_avx512(const uint64_t *words, size_t length, + uint32_t *vout, size_t outcapacity, + uint32_t base) { + uint32_t *out = (uint32_t *)vout; + uint32_t *initout = out; + uint32_t *safeout = out + outcapacity; + __m512i base_v = _mm512_set1_epi32(base); + __m512i index_table = _mm512_loadu_si512(vbmi2_table); + size_t i = 0; + + for (; (i < length) && ((out + 64) < safeout); i += 1) { + uint64_t v = words[i]; + __m512i vec = _mm512_maskz_compress_epi8(v, index_table); + + uint8_t advance = (uint8_t)roaring_hamming(v); + + __m512i vbase = + _mm512_add_epi32(base_v, _mm512_set1_epi32((int)(i * 64))); + __m512i r1 = _mm512_cvtepi8_epi32(_mm512_extracti32x4_epi32(vec, 0)); + __m512i r2 = _mm512_cvtepi8_epi32(_mm512_extracti32x4_epi32(vec, 1)); + __m512i r3 = _mm512_cvtepi8_epi32(_mm512_extracti32x4_epi32(vec, 2)); + __m512i r4 = _mm512_cvtepi8_epi32(_mm512_extracti32x4_epi32(vec, 3)); + + r1 = _mm512_add_epi32(r1, vbase); + r2 = _mm512_add_epi32(r2, vbase); + r3 = _mm512_add_epi32(r3, vbase); + r4 = _mm512_add_epi32(r4, vbase); + _mm512_storeu_si512((__m512i *)out, r1); + _mm512_storeu_si512((__m512i *)(out + 16), r2); + _mm512_storeu_si512((__m512i *)(out + 32), r3); + _mm512_storeu_si512((__m512i *)(out + 48), r4); + + out += advance; + } + + base += i * 64; + + for (; (i < length) && (out < safeout); ++i) { + uint64_t w = words[i]; + while ((w != 0) && (out < safeout)) { + uint64_t t = + w & (~w + 1); // on x64, should compile to BLSI (careful: the + // Intel compiler seems to fail) + int r = + roaring_trailing_zeroes(w); // on x64, should compile to TZCNT + uint32_t val = r + base; + memcpy(out, &val, + sizeof(uint32_t)); // should be compiled as a MOV on x64 + out++; + w ^= t; + } + base += 64; + } + + return out - initout; +} + +// Reference: +// https://lemire.me/blog/2022/05/10/faster-bitset-decoding-using-intel-avx-512/ +size_t bitset_extract_setbits_avx512_uint16(const uint64_t *array, + size_t length, uint16_t *vout, + size_t capacity, uint16_t base) { + uint16_t *out = (uint16_t *)vout; + uint16_t *initout = out; + uint16_t *safeout = vout + capacity; + + __m512i base_v = _mm512_set1_epi16(base); + __m512i index_table = _mm512_loadu_si512(vbmi2_table); + size_t i = 0; + + for (; (i < length) && ((out + 64) < safeout); i++) { + uint64_t v = array[i]; + __m512i vec = _mm512_maskz_compress_epi8(v, index_table); + + uint8_t advance = (uint8_t)roaring_hamming(v); + + __m512i vbase = + _mm512_add_epi16(base_v, _mm512_set1_epi16((short)(i * 64))); + __m512i r1 = _mm512_cvtepi8_epi16(_mm512_extracti32x8_epi32(vec, 0)); + __m512i r2 = _mm512_cvtepi8_epi16(_mm512_extracti32x8_epi32(vec, 1)); + + r1 = _mm512_add_epi16(r1, vbase); + r2 = _mm512_add_epi16(r2, vbase); + + _mm512_storeu_si512((__m512i *)out, r1); + _mm512_storeu_si512((__m512i *)(out + 32), r2); + out += advance; + } + + base += i * 64; + + for (; (i < length) && (out < safeout); ++i) { + uint64_t w = array[i]; + while ((w != 0) && (out < safeout)) { + uint64_t t = + w & (~w + 1); // on x64, should compile to BLSI (careful: the + // Intel compiler seems to fail) + int r = + roaring_trailing_zeroes(w); // on x64, should compile to TZCNT + uint32_t val = r + base; + memcpy(out, &val, sizeof(uint16_t)); + out++; + w ^= t; + } + base += 64; + } + + return out - initout; +} +CROARING_UNTARGET_AVX512 +#endif + +CROARING_TARGET_AVX2 +size_t bitset_extract_setbits_avx2(const uint64_t *words, size_t length, + uint32_t *out, size_t outcapacity, + uint32_t base) { + uint32_t *initout = out; + __m256i baseVec = _mm256_set1_epi32(base - 1); + __m256i incVec = _mm256_set1_epi32(64); + __m256i add8 = _mm256_set1_epi32(8); + uint32_t *safeout = out + outcapacity; + size_t i = 0; + for (; (i < length) && (out + 64 <= safeout); ++i) { + uint64_t w = words[i]; + if (w == 0) { + baseVec = _mm256_add_epi32(baseVec, incVec); + } else { + for (int k = 0; k < 4; ++k) { + uint8_t byteA = (uint8_t)w; + uint8_t byteB = (uint8_t)(w >> 8); + w >>= 16; + __m256i vecA = + _mm256_loadu_si256((const __m256i *)vecDecodeTable[byteA]); + __m256i vecB = + _mm256_loadu_si256((const __m256i *)vecDecodeTable[byteB]); + uint8_t advanceA = lengthTable[byteA]; + uint8_t advanceB = lengthTable[byteB]; + vecA = _mm256_add_epi32(baseVec, vecA); + baseVec = _mm256_add_epi32(baseVec, add8); + vecB = _mm256_add_epi32(baseVec, vecB); + baseVec = _mm256_add_epi32(baseVec, add8); + _mm256_storeu_si256((__m256i *)out, vecA); + out += advanceA; + _mm256_storeu_si256((__m256i *)out, vecB); + out += advanceB; + } + } + } + base += i * 64; + for (; (i < length) && (out < safeout); ++i) { + uint64_t w = words[i]; + while ((w != 0) && (out < safeout)) { + uint64_t t = + w & (~w + 1); // on x64, should compile to BLSI (careful: the + // Intel compiler seems to fail) + int r = + roaring_trailing_zeroes(w); // on x64, should compile to TZCNT + uint32_t val = r + base; + memcpy(out, &val, + sizeof(uint32_t)); // should be compiled as a MOV on x64 + out++; + w ^= t; + } + base += 64; + } + return out - initout; +} +CROARING_UNTARGET_AVX2 +#endif // CROARING_IS_X64 + +size_t bitset_extract_setbits(const uint64_t *words, size_t length, + uint32_t *out, uint32_t base) { + int outpos = 0; + for (size_t i = 0; i < length; ++i) { + uint64_t w = words[i]; + while (w != 0) { + uint64_t t = + w & (~w + 1); // on x64, should compile to BLSI (careful: the + // Intel compiler seems to fail) + int r = + roaring_trailing_zeroes(w); // on x64, should compile to TZCNT + uint32_t val = r + base; + memcpy(out + outpos, &val, + sizeof(uint32_t)); // should be compiled as a MOV on x64 + outpos++; + w ^= t; + } + base += 64; + } + return outpos; +} + +size_t bitset_extract_intersection_setbits_uint16( + const uint64_t *__restrict__ words1, const uint64_t *__restrict__ words2, + size_t length, uint16_t *out, uint16_t base) { + int outpos = 0; + for (size_t i = 0; i < length; ++i) { + uint64_t w = words1[i] & words2[i]; + while (w != 0) { + uint64_t t = w & (~w + 1); + int r = roaring_trailing_zeroes(w); + out[outpos++] = (uint16_t)(r + base); + w ^= t; + } + base += 64; + } + return outpos; +} + +#if CROARING_IS_X64 +/* + * Given a bitset containing "length" 64-bit words, write out the position + * of all the set bits to "out" as 16-bit integers, values start at "base" (can + *be set to zero). + * + * The "out" pointer should be sufficient to store the actual number of bits + *set. + * + * Returns how many values were actually decoded. + * + * This function uses SSE decoding. + */ +CROARING_TARGET_AVX2 +size_t bitset_extract_setbits_sse_uint16(const uint64_t *words, size_t length, + uint16_t *out, size_t outcapacity, + uint16_t base) { + uint16_t *initout = out; + __m128i baseVec = _mm_set1_epi16(base - 1); + __m128i incVec = _mm_set1_epi16(64); + __m128i add8 = _mm_set1_epi16(8); + uint16_t *safeout = out + outcapacity; + const int numberofbytes = 2; // process two bytes at a time + size_t i = 0; + for (; (i < length) && (out + numberofbytes * 8 <= safeout); ++i) { + uint64_t w = words[i]; + if (w == 0) { + baseVec = _mm_add_epi16(baseVec, incVec); + } else { + for (int k = 0; k < 4; ++k) { + uint8_t byteA = (uint8_t)w; + uint8_t byteB = (uint8_t)(w >> 8); + w >>= 16; + __m128i vecA = _mm_loadu_si128( + (const __m128i *)vecDecodeTable_uint16[byteA]); + __m128i vecB = _mm_loadu_si128( + (const __m128i *)vecDecodeTable_uint16[byteB]); + uint8_t advanceA = lengthTable[byteA]; + uint8_t advanceB = lengthTable[byteB]; + vecA = _mm_add_epi16(baseVec, vecA); + baseVec = _mm_add_epi16(baseVec, add8); + vecB = _mm_add_epi16(baseVec, vecB); + baseVec = _mm_add_epi16(baseVec, add8); + _mm_storeu_si128((__m128i *)out, vecA); + out += advanceA; + _mm_storeu_si128((__m128i *)out, vecB); + out += advanceB; + } + } + } + base += (uint16_t)(i * 64); + for (; (i < length) && (out < safeout); ++i) { + uint64_t w = words[i]; + while ((w != 0) && (out < safeout)) { + uint64_t t = w & (~w + 1); + int r = roaring_trailing_zeroes(w); + *out = (uint16_t)(r + base); + out++; + w ^= t; + } + base += 64; + } + return out - initout; +} +CROARING_UNTARGET_AVX2 +#endif + +/* + * Given a bitset containing "length" 64-bit words, write out the position + * of all the set bits to "out", values start at "base" (can be set to zero). + * + * The "out" pointer should be sufficient to store the actual number of bits + *set. + * + * Returns how many values were actually decoded. + */ +size_t bitset_extract_setbits_uint16(const uint64_t *words, size_t length, + uint16_t *out, uint16_t base) { + int outpos = 0; + for (size_t i = 0; i < length; ++i) { + uint64_t w = words[i]; + while (w != 0) { + uint64_t t = w & (~w + 1); + int r = roaring_trailing_zeroes(w); + out[outpos++] = (uint16_t)(r + base); + w ^= t; + } + base += 64; + } + return outpos; +} + +#if defined(CROARING_ASMBITMANIPOPTIMIZATION) && defined(CROARING_IS_X64) + +static inline uint64_t _asm_bitset_set_list_withcard(uint64_t *words, + uint64_t card, + const uint16_t *list, + uint64_t length) { + uint64_t offset, load, pos; + uint64_t shift = 6; + const uint16_t *end = list + length; + if (!length) return card; + // TODO: could unroll for performance, see bitset_set_list + // bts is not available as an intrinsic in GCC + __asm volatile( + "1:\n" + "movzwq (%[list]), %[pos]\n" + "shrx %[shift], %[pos], %[offset]\n" + "mov (%[words],%[offset],8), %[load]\n" + "bts %[pos], %[load]\n" + "mov %[load], (%[words],%[offset],8)\n" + "sbb $-1, %[card]\n" + "add $2, %[list]\n" + "cmp %[list], %[end]\n" + "jnz 1b" + : [card] "+&r"(card), [list] "+&r"(list), [load] "=&r"(load), + [pos] "=&r"(pos), [offset] "=&r"(offset) + : [end] "r"(end), [words] "r"(words), [shift] "r"(shift)); + return card; +} + +static inline void _asm_bitset_set_list(uint64_t *words, const uint16_t *list, + uint64_t length) { + uint64_t pos; + const uint16_t *end = list + length; + + uint64_t shift = 6; + uint64_t offset; + uint64_t load; + for (; list + 3 < end; list += 4) { + pos = list[0]; + __asm volatile( + "shrx %[shift], %[pos], %[offset]\n" + "mov (%[words],%[offset],8), %[load]\n" + "bts %[pos], %[load]\n" + "mov %[load], (%[words],%[offset],8)" + : [load] "=&r"(load), [offset] "=&r"(offset) + : [words] "r"(words), [shift] "r"(shift), [pos] "r"(pos)); + pos = list[1]; + __asm volatile( + "shrx %[shift], %[pos], %[offset]\n" + "mov (%[words],%[offset],8), %[load]\n" + "bts %[pos], %[load]\n" + "mov %[load], (%[words],%[offset],8)" + : [load] "=&r"(load), [offset] "=&r"(offset) + : [words] "r"(words), [shift] "r"(shift), [pos] "r"(pos)); + pos = list[2]; + __asm volatile( + "shrx %[shift], %[pos], %[offset]\n" + "mov (%[words],%[offset],8), %[load]\n" + "bts %[pos], %[load]\n" + "mov %[load], (%[words],%[offset],8)" + : [load] "=&r"(load), [offset] "=&r"(offset) + : [words] "r"(words), [shift] "r"(shift), [pos] "r"(pos)); + pos = list[3]; + __asm volatile( + "shrx %[shift], %[pos], %[offset]\n" + "mov (%[words],%[offset],8), %[load]\n" + "bts %[pos], %[load]\n" + "mov %[load], (%[words],%[offset],8)" + : [load] "=&r"(load), [offset] "=&r"(offset) + : [words] "r"(words), [shift] "r"(shift), [pos] "r"(pos)); + } + + while (list != end) { + pos = list[0]; + __asm volatile( + "shrx %[shift], %[pos], %[offset]\n" + "mov (%[words],%[offset],8), %[load]\n" + "bts %[pos], %[load]\n" + "mov %[load], (%[words],%[offset],8)" + : [load] "=&r"(load), [offset] "=&r"(offset) + : [words] "r"(words), [shift] "r"(shift), [pos] "r"(pos)); + list++; + } +} + +static inline uint64_t _asm_bitset_clear_list(uint64_t *words, uint64_t card, + const uint16_t *list, + uint64_t length) { + uint64_t offset, load, pos; + uint64_t shift = 6; + const uint16_t *end = list + length; + if (!length) return card; + // btr is not available as an intrinsic in GCC + __asm volatile( + "1:\n" + "movzwq (%[list]), %[pos]\n" + "shrx %[shift], %[pos], %[offset]\n" + "mov (%[words],%[offset],8), %[load]\n" + "btr %[pos], %[load]\n" + "mov %[load], (%[words],%[offset],8)\n" + "sbb $0, %[card]\n" + "add $2, %[list]\n" + "cmp %[list], %[end]\n" + "jnz 1b" + : [card] "+&r"(card), [list] "+&r"(list), [load] "=&r"(load), + [pos] "=&r"(pos), [offset] "=&r"(offset) + : [end] "r"(end), [words] "r"(words), [shift] "r"(shift) + : + /* clobbers */ "memory"); + return card; +} + +static inline uint64_t _scalar_bitset_clear_list(uint64_t *words, uint64_t card, + const uint16_t *list, + uint64_t length) { + uint64_t offset, load, newload, pos, index; + const uint16_t *end = list + length; + while (list != end) { + pos = *(const uint16_t *)list; + offset = pos >> 6; + index = pos % 64; + load = words[offset]; + newload = load & ~(UINT64_C(1) << index); + card -= (load ^ newload) >> index; + words[offset] = newload; + list++; + } + return card; +} + +static inline uint64_t _scalar_bitset_set_list_withcard(uint64_t *words, + uint64_t card, + const uint16_t *list, + uint64_t length) { + uint64_t offset, load, newload, pos, index; + const uint16_t *end = list + length; + while (list != end) { + pos = *list; + offset = pos >> 6; + index = pos % 64; + load = words[offset]; + newload = load | (UINT64_C(1) << index); + card += (load ^ newload) >> index; + words[offset] = newload; + list++; + } + return card; +} + +static inline void _scalar_bitset_set_list(uint64_t *words, + const uint16_t *list, + uint64_t length) { + uint64_t offset, load, newload, pos, index; + const uint16_t *end = list + length; + while (list != end) { + pos = *list; + offset = pos >> 6; + index = pos % 64; + load = words[offset]; + newload = load | (UINT64_C(1) << index); + words[offset] = newload; + list++; + } +} + +uint64_t bitset_clear_list(uint64_t *words, uint64_t card, const uint16_t *list, + uint64_t length) { + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX2) { + return _asm_bitset_clear_list(words, card, list, length); + } else { + return _scalar_bitset_clear_list(words, card, list, length); + } +} + +uint64_t bitset_set_list_withcard(uint64_t *words, uint64_t card, + const uint16_t *list, uint64_t length) { + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX2) { + return _asm_bitset_set_list_withcard(words, card, list, length); + } else { + return _scalar_bitset_set_list_withcard(words, card, list, length); + } +} + +void bitset_set_list(uint64_t *words, const uint16_t *list, uint64_t length) { + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX2) { + _asm_bitset_set_list(words, list, length); + } else { + _scalar_bitset_set_list(words, list, length); + } +} +#else +uint64_t bitset_clear_list(uint64_t *words, uint64_t card, const uint16_t *list, + uint64_t length) { + uint64_t offset, load, newload, pos, index; + const uint16_t *end = list + length; + while (list != end) { + pos = *(const uint16_t *)list; + offset = pos >> 6; + index = pos % 64; + load = words[offset]; + newload = load & ~(UINT64_C(1) << index); + card -= (load ^ newload) >> index; + words[offset] = newload; + list++; + } + return card; +} + +uint64_t bitset_set_list_withcard(uint64_t *words, uint64_t card, + const uint16_t *list, uint64_t length) { + uint64_t offset, load, newload, pos, index; + const uint16_t *end = list + length; + while (list != end) { + pos = *list; + offset = pos >> 6; + index = pos % 64; + load = words[offset]; + newload = load | (UINT64_C(1) << index); + card += (load ^ newload) >> index; + words[offset] = newload; + list++; + } + return card; +} + +void bitset_set_list(uint64_t *words, const uint16_t *list, uint64_t length) { + uint64_t offset, load, newload, pos, index; + const uint16_t *end = list + length; + while (list != end) { + pos = *list; + offset = pos >> 6; + index = pos % 64; + load = words[offset]; + newload = load | (UINT64_C(1) << index); + words[offset] = newload; + list++; + } +} + +#endif + +/* flip specified bits */ +/* TODO: consider whether worthwhile to make an asm version */ + +uint64_t bitset_flip_list_withcard(uint64_t *words, uint64_t card, + const uint16_t *list, uint64_t length) { + uint64_t offset, load, newload, pos, index; + const uint16_t *end = list + length; + while (list != end) { + pos = *list; + offset = pos >> 6; + index = pos % 64; + load = words[offset]; + newload = load ^ (UINT64_C(1) << index); + // todo: is a branch here all that bad? + card += + (1 - 2 * (((UINT64_C(1) << index) & load) >> index)); // +1 or -1 + words[offset] = newload; + list++; + } + return card; +} + +void bitset_flip_list(uint64_t *words, const uint16_t *list, uint64_t length) { + uint64_t offset, load, newload, pos, index; + const uint16_t *end = list + length; + while (list != end) { + pos = *list; + offset = pos >> 6; + index = pos % 64; + load = words[offset]; + newload = load ^ (UINT64_C(1) << index); + words[offset] = newload; + list++; + } +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace api { +#endif +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif \ No newline at end of file diff --git a/contrib/libs/croaring/src/containers/array.c b/contrib/libs/croaring/src/containers/array.c new file mode 100644 index 000000000000..0a24482a32b7 --- /dev/null +++ b/contrib/libs/croaring/src/containers/array.c @@ -0,0 +1,575 @@ +/* + * array.c + * + */ + +#include <assert.h> +#include <stdio.h> +#include <stdlib.h> + +#include <roaring/containers/array.h> +#include <roaring/memory.h> + +#if CROARING_IS_X64 +#ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#error "CROARING_COMPILER_SUPPORTS_AVX512 needs to be defined." +#endif // CROARING_COMPILER_SUPPORTS_AVX512 +#endif + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +extern inline uint16_t array_container_minimum(const array_container_t *arr); +extern inline uint16_t array_container_maximum(const array_container_t *arr); +extern inline int array_container_index_equalorlarger( + const array_container_t *arr, uint16_t x); + +extern inline int array_container_rank(const array_container_t *arr, + uint16_t x); +extern inline uint32_t array_container_rank_many(const array_container_t *arr, + uint64_t start_rank, + const uint32_t *begin, + const uint32_t *end, + uint64_t *ans); +extern inline int array_container_get_index(const array_container_t *arr, + uint16_t x); +extern inline bool array_container_contains(const array_container_t *arr, + uint16_t pos); +extern inline int array_container_cardinality(const array_container_t *array); +extern inline bool array_container_nonzero_cardinality( + const array_container_t *array); +extern inline int32_t array_container_serialized_size_in_bytes(int32_t card); +extern inline bool array_container_empty(const array_container_t *array); +extern inline bool array_container_full(const array_container_t *array); + +/* Create a new array with capacity size. Return NULL in case of failure. */ +array_container_t *array_container_create_given_capacity(int32_t size) { + array_container_t *container; + + if ((container = (array_container_t *)roaring_malloc( + sizeof(array_container_t))) == NULL) { + return NULL; + } + + if (size <= 0) { // we don't want to rely on malloc(0) + container->array = NULL; + } else if ((container->array = (uint16_t *)roaring_malloc(sizeof(uint16_t) * + size)) == NULL) { + roaring_free(container); + return NULL; + } + + container->capacity = size; + container->cardinality = 0; + + return container; +} + +/* Create a new array. Return NULL in case of failure. */ +array_container_t *array_container_create(void) { + return array_container_create_given_capacity(ARRAY_DEFAULT_INIT_SIZE); +} + +/* Create a new array containing all values in [min,max). */ +array_container_t *array_container_create_range(uint32_t min, uint32_t max) { + array_container_t *answer = + array_container_create_given_capacity(max - min + 1); + if (answer == NULL) return answer; + answer->cardinality = 0; + for (uint32_t k = min; k < max; k++) { + answer->array[answer->cardinality++] = k; + } + return answer; +} + +/* Duplicate container */ +ALLOW_UNALIGNED +array_container_t *array_container_clone(const array_container_t *src) { + array_container_t *newcontainer = + array_container_create_given_capacity(src->capacity); + if (newcontainer == NULL) return NULL; + + newcontainer->cardinality = src->cardinality; + + memcpy(newcontainer->array, src->array, + src->cardinality * sizeof(uint16_t)); + + return newcontainer; +} + +void array_container_offset(const array_container_t *c, container_t **loc, + container_t **hic, uint16_t offset) { + array_container_t *lo = NULL, *hi = NULL; + int top, lo_cap, hi_cap; + + top = (1 << 16) - offset; + + lo_cap = count_less(c->array, c->cardinality, top); + if (loc && lo_cap) { + lo = array_container_create_given_capacity(lo_cap); + for (int i = 0; i < lo_cap; ++i) { + array_container_add(lo, c->array[i] + offset); + } + *loc = (container_t *)lo; + } + + hi_cap = c->cardinality - lo_cap; + if (hic && hi_cap) { + hi = array_container_create_given_capacity(hi_cap); + for (int i = lo_cap; i < c->cardinality; ++i) { + array_container_add(hi, c->array[i] + offset); + } + *hic = (container_t *)hi; + } +} + +int array_container_shrink_to_fit(array_container_t *src) { + if (src->cardinality == src->capacity) return 0; // nothing to do + int savings = src->capacity - src->cardinality; + src->capacity = src->cardinality; + if (src->capacity == + 0) { // we do not want to rely on realloc for zero allocs + roaring_free(src->array); + src->array = NULL; + } else { + uint16_t *oldarray = src->array; + src->array = (uint16_t *)roaring_realloc( + oldarray, src->capacity * sizeof(uint16_t)); + if (src->array == NULL) roaring_free(oldarray); // should never happen? + } + return savings; +} + +/* Free memory. */ +void array_container_free(array_container_t *arr) { + if (arr->array != + NULL) { // Jon Strabala reports that some tools complain otherwise + roaring_free(arr->array); + arr->array = NULL; // pedantic + } + roaring_free(arr); +} + +static inline int32_t grow_capacity(int32_t capacity) { + return (capacity <= 0) ? ARRAY_DEFAULT_INIT_SIZE + : capacity < 64 ? capacity * 2 + : capacity < 1024 ? capacity * 3 / 2 + : capacity * 5 / 4; +} + +static inline int32_t clamp(int32_t val, int32_t min, int32_t max) { + return ((val < min) ? min : (val > max) ? max : val); +} + +void array_container_grow(array_container_t *container, int32_t min, + bool preserve) { + int32_t max = (min <= DEFAULT_MAX_SIZE ? DEFAULT_MAX_SIZE : 65536); + int32_t new_capacity = clamp(grow_capacity(container->capacity), min, max); + + container->capacity = new_capacity; + uint16_t *array = container->array; + + if (preserve) { + container->array = + (uint16_t *)roaring_realloc(array, new_capacity * sizeof(uint16_t)); + if (container->array == NULL) roaring_free(array); + } else { + // Jon Strabala reports that some tools complain otherwise + if (array != NULL) { + roaring_free(array); + } + container->array = + (uint16_t *)roaring_malloc(new_capacity * sizeof(uint16_t)); + } + + // if realloc fails, we have container->array == NULL. +} + +/* Copy one container into another. We assume that they are distinct. */ +void array_container_copy(const array_container_t *src, + array_container_t *dst) { + const int32_t cardinality = src->cardinality; + if (cardinality > dst->capacity) { + array_container_grow(dst, cardinality, false); + } + + dst->cardinality = cardinality; + memcpy(dst->array, src->array, cardinality * sizeof(uint16_t)); +} + +void array_container_add_from_range(array_container_t *arr, uint32_t min, + uint32_t max, uint16_t step) { + for (uint32_t value = min; value < max; value += step) { + array_container_append(arr, value); + } +} + +/* Computes the union of array1 and array2 and write the result to arrayout. + * It is assumed that arrayout is distinct from both array1 and array2. + */ +void array_container_union(const array_container_t *array_1, + const array_container_t *array_2, + array_container_t *out) { + const int32_t card_1 = array_1->cardinality, card_2 = array_2->cardinality; + const int32_t max_cardinality = card_1 + card_2; + + if (out->capacity < max_cardinality) { + array_container_grow(out, max_cardinality, false); + } + out->cardinality = (int32_t)fast_union_uint16( + array_1->array, card_1, array_2->array, card_2, out->array); +} + +/* Computes the difference of array1 and array2 and write the result + * to array out. + * Array out does not need to be distinct from array_1 + */ +void array_container_andnot(const array_container_t *array_1, + const array_container_t *array_2, + array_container_t *out) { + if (out->capacity < array_1->cardinality) + array_container_grow(out, array_1->cardinality, false); +#if CROARING_IS_X64 + if ((croaring_hardware_support() & ROARING_SUPPORTS_AVX2) && + (out != array_1) && (out != array_2)) { + out->cardinality = difference_vector16( + array_1->array, array_1->cardinality, array_2->array, + array_2->cardinality, out->array); + } else { + out->cardinality = + difference_uint16(array_1->array, array_1->cardinality, + array_2->array, array_2->cardinality, out->array); + } +#else + out->cardinality = + difference_uint16(array_1->array, array_1->cardinality, array_2->array, + array_2->cardinality, out->array); +#endif +} + +/* Computes the symmetric difference of array1 and array2 and write the + * result + * to arrayout. + * It is assumed that arrayout is distinct from both array1 and array2. + */ +void array_container_xor(const array_container_t *array_1, + const array_container_t *array_2, + array_container_t *out) { + const int32_t card_1 = array_1->cardinality, card_2 = array_2->cardinality; + const int32_t max_cardinality = card_1 + card_2; + if (out->capacity < max_cardinality) { + array_container_grow(out, max_cardinality, false); + } + +#if CROARING_IS_X64 + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX2) { + out->cardinality = + xor_vector16(array_1->array, array_1->cardinality, array_2->array, + array_2->cardinality, out->array); + } else { + out->cardinality = + xor_uint16(array_1->array, array_1->cardinality, array_2->array, + array_2->cardinality, out->array); + } +#else + out->cardinality = + xor_uint16(array_1->array, array_1->cardinality, array_2->array, + array_2->cardinality, out->array); +#endif +} + +static inline int32_t minimum_int32(int32_t a, int32_t b) { + return (a < b) ? a : b; +} + +/* computes the intersection of array1 and array2 and write the result to + * arrayout. + * It is assumed that arrayout is distinct from both array1 and array2. + * */ +void array_container_intersection(const array_container_t *array1, + const array_container_t *array2, + array_container_t *out) { + int32_t card_1 = array1->cardinality, card_2 = array2->cardinality, + min_card = minimum_int32(card_1, card_2); + const int threshold = 64; // subject to tuning +#if CROARING_IS_X64 + if (out->capacity < min_card) { + array_container_grow(out, min_card + sizeof(__m128i) / sizeof(uint16_t), + false); + } +#else + if (out->capacity < min_card) { + array_container_grow(out, min_card, false); + } +#endif + + if (card_1 * threshold < card_2) { + out->cardinality = intersect_skewed_uint16( + array1->array, card_1, array2->array, card_2, out->array); + } else if (card_2 * threshold < card_1) { + out->cardinality = intersect_skewed_uint16( + array2->array, card_2, array1->array, card_1, out->array); + } else { +#if CROARING_IS_X64 + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX2) { + out->cardinality = intersect_vector16( + array1->array, card_1, array2->array, card_2, out->array); + } else { + out->cardinality = intersect_uint16( + array1->array, card_1, array2->array, card_2, out->array); + } +#else + out->cardinality = intersect_uint16(array1->array, card_1, + array2->array, card_2, out->array); +#endif + } +} + +/* computes the size of the intersection of array1 and array2 + * */ +int array_container_intersection_cardinality(const array_container_t *array1, + const array_container_t *array2) { + int32_t card_1 = array1->cardinality, card_2 = array2->cardinality; + const int threshold = 64; // subject to tuning + if (card_1 * threshold < card_2) { + return intersect_skewed_uint16_cardinality(array1->array, card_1, + array2->array, card_2); + } else if (card_2 * threshold < card_1) { + return intersect_skewed_uint16_cardinality(array2->array, card_2, + array1->array, card_1); + } else { +#if CROARING_IS_X64 + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX2) { + return intersect_vector16_cardinality(array1->array, card_1, + array2->array, card_2); + } else { + return intersect_uint16_cardinality(array1->array, card_1, + array2->array, card_2); + } +#else + return intersect_uint16_cardinality(array1->array, card_1, + array2->array, card_2); +#endif + } +} + +bool array_container_intersect(const array_container_t *array1, + const array_container_t *array2) { + int32_t card_1 = array1->cardinality, card_2 = array2->cardinality; + const int threshold = 64; // subject to tuning + if (card_1 * threshold < card_2) { + return intersect_skewed_uint16_nonempty(array1->array, card_1, + array2->array, card_2); + } else if (card_2 * threshold < card_1) { + return intersect_skewed_uint16_nonempty(array2->array, card_2, + array1->array, card_1); + } else { + // we do not bother vectorizing + return intersect_uint16_nonempty(array1->array, card_1, array2->array, + card_2); + } +} + +/* computes the intersection of array1 and array2 and write the result to + * array1. + * */ +void array_container_intersection_inplace(array_container_t *src_1, + const array_container_t *src_2) { + int32_t card_1 = src_1->cardinality, card_2 = src_2->cardinality; + const int threshold = 64; // subject to tuning + if (card_1 * threshold < card_2) { + src_1->cardinality = intersect_skewed_uint16( + src_1->array, card_1, src_2->array, card_2, src_1->array); + } else if (card_2 * threshold < card_1) { + src_1->cardinality = intersect_skewed_uint16( + src_2->array, card_2, src_1->array, card_1, src_1->array); + } else { +#if CROARING_IS_X64 + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX2) { + src_1->cardinality = intersect_vector16_inplace( + src_1->array, card_1, src_2->array, card_2); + } else { + src_1->cardinality = intersect_uint16( + src_1->array, card_1, src_2->array, card_2, src_1->array); + } +#else + src_1->cardinality = intersect_uint16( + src_1->array, card_1, src_2->array, card_2, src_1->array); +#endif + } +} + +ALLOW_UNALIGNED +int array_container_to_uint32_array(void *vout, const array_container_t *cont, + uint32_t base) { +#if CROARING_IS_X64 + int support = croaring_hardware_support(); +#if CROARING_COMPILER_SUPPORTS_AVX512 + if (support & ROARING_SUPPORTS_AVX512) { + return avx512_array_container_to_uint32_array(vout, cont->array, + cont->cardinality, base); + } +#endif + if (support & ROARING_SUPPORTS_AVX2) { + return array_container_to_uint32_array_vector16( + vout, cont->array, cont->cardinality, base); + } +#endif // CROARING_IS_X64 + int outpos = 0; + uint32_t *out = (uint32_t *)vout; + size_t i = 0; + for (; i < (size_t)cont->cardinality; ++i) { + const uint32_t val = base + cont->array[i]; + memcpy(out + outpos, &val, + sizeof(uint32_t)); // should be compiled as a MOV on x64 + outpos++; + } + return outpos; +} + +void array_container_printf(const array_container_t *v) { + if (v->cardinality == 0) { + printf("{}"); + return; + } + printf("{"); + printf("%d", v->array[0]); + for (int i = 1; i < v->cardinality; ++i) { + printf(",%d", v->array[i]); + } + printf("}"); +} + +void array_container_printf_as_uint32_array(const array_container_t *v, + uint32_t base) { + if (v->cardinality == 0) { + return; + } + printf("%u", v->array[0] + base); + for (int i = 1; i < v->cardinality; ++i) { + printf(",%u", v->array[i] + base); + } +} + +/* + * Validate the container. Returns true if valid. + */ +bool array_container_validate(const array_container_t *v, const char **reason) { + if (v->capacity < 0) { + *reason = "negative capacity"; + return false; + } + if (v->cardinality < 0) { + *reason = "negative cardinality"; + return false; + } + if (v->cardinality > v->capacity) { + *reason = "cardinality exceeds capacity"; + return false; + } + if (v->cardinality > DEFAULT_MAX_SIZE) { + *reason = "cardinality exceeds DEFAULT_MAX_SIZE"; + return false; + } + if (v->cardinality == 0) { + *reason = "zero cardinality"; + return false; + } + + if (v->array == NULL) { + *reason = "NULL array pointer"; + return false; + } + uint16_t prev = v->array[0]; + for (int i = 1; i < v->cardinality; ++i) { + if (v->array[i] <= prev) { + *reason = "array elements not strictly increasing"; + return false; + } + prev = v->array[i]; + } + + return true; +} + +/* Compute the number of runs */ +int32_t array_container_number_of_runs(const array_container_t *ac) { + // Can SIMD work here? + int32_t nr_runs = 0; + int32_t prev = -2; + for (const uint16_t *p = ac->array; p != ac->array + ac->cardinality; ++p) { + if (*p != prev + 1) nr_runs++; + prev = *p; + } + return nr_runs; +} + +/** + * Writes the underlying array to buf, outputs how many bytes were written. + * The number of bytes written should be + * array_container_size_in_bytes(container). + * + */ +int32_t array_container_write(const array_container_t *container, char *buf) { + memcpy(buf, container->array, container->cardinality * sizeof(uint16_t)); + return array_container_size_in_bytes(container); +} + +bool array_container_is_subset(const array_container_t *container1, + const array_container_t *container2) { + if (container1->cardinality > container2->cardinality) { + return false; + } + int i1 = 0, i2 = 0; + while (i1 < container1->cardinality && i2 < container2->cardinality) { + if (container1->array[i1] == container2->array[i2]) { + i1++; + i2++; + } else if (container1->array[i1] > container2->array[i2]) { + i2++; + } else { // container1->array[i1] < container2->array[i2] + return false; + } + } + if (i1 == container1->cardinality) { + return true; + } else { + return false; + } +} + +int32_t array_container_read(int32_t cardinality, array_container_t *container, + const char *buf) { + if (container->capacity < cardinality) { + array_container_grow(container, cardinality, false); + } + container->cardinality = cardinality; + memcpy(container->array, buf, container->cardinality * sizeof(uint16_t)); + + return array_container_size_in_bytes(container); +} + +bool array_container_iterate(const array_container_t *cont, uint32_t base, + roaring_iterator iterator, void *ptr) { + for (int i = 0; i < cont->cardinality; i++) + if (!iterator(cont->array[i] + base, ptr)) return false; + return true; +} + +bool array_container_iterate64(const array_container_t *cont, uint32_t base, + roaring_iterator64 iterator, uint64_t high_bits, + void *ptr) { + for (int i = 0; i < cont->cardinality; i++) + if (!iterator(high_bits | (uint64_t)(cont->array[i] + base), ptr)) + return false; + return true; +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/containers/bitset.c b/contrib/libs/croaring/src/containers/bitset.c new file mode 100644 index 000000000000..f49739594cc4 --- /dev/null +++ b/contrib/libs/croaring/src/containers/bitset.c @@ -0,0 +1,1309 @@ +/* + * bitset.c + * + */ +#ifndef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 200809L +#endif +#include <assert.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <roaring/bitset_util.h> +#include <roaring/containers/array.h> +#include <roaring/containers/bitset.h> +#include <roaring/memory.h> +#include <roaring/portability.h> +#include <roaring/utilasm.h> + +#if CROARING_IS_X64 +#ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#error "CROARING_COMPILER_SUPPORTS_AVX512 needs to be defined." +#endif // CROARING_COMPILER_SUPPORTS_AVX512 +#endif + +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +extern inline int bitset_container_cardinality( + const bitset_container_t *bitset); +extern inline void bitset_container_set(bitset_container_t *bitset, + uint16_t pos); +// unused at this time: +// extern inline void bitset_container_unset(bitset_container_t *bitset, +// uint16_t pos); +extern inline bool bitset_container_get(const bitset_container_t *bitset, + uint16_t pos); +extern inline int32_t bitset_container_serialized_size_in_bytes(void); +extern inline bool bitset_container_add(bitset_container_t *bitset, + uint16_t pos); +extern inline bool bitset_container_remove(bitset_container_t *bitset, + uint16_t pos); +extern inline bool bitset_container_contains(const bitset_container_t *bitset, + uint16_t pos); + +void bitset_container_clear(bitset_container_t *bitset) { + memset(bitset->words, 0, sizeof(uint64_t) * BITSET_CONTAINER_SIZE_IN_WORDS); + bitset->cardinality = 0; +} + +void bitset_container_set_all(bitset_container_t *bitset) { + memset(bitset->words, INT64_C(-1), + sizeof(uint64_t) * BITSET_CONTAINER_SIZE_IN_WORDS); + bitset->cardinality = (1 << 16); +} + +/* Create a new bitset. Return NULL in case of failure. */ +bitset_container_t *bitset_container_create(void) { + bitset_container_t *bitset = + (bitset_container_t *)roaring_malloc(sizeof(bitset_container_t)); + + if (!bitset) { + return NULL; + } + + size_t align_size = 32; +#if CROARING_IS_X64 + int support = croaring_hardware_support(); + if (support & ROARING_SUPPORTS_AVX512) { + // sizeof(__m512i) == 64 + align_size = 64; + } else { + // sizeof(__m256i) == 32 + align_size = 32; + } +#endif + bitset->words = (uint64_t *)roaring_aligned_malloc( + align_size, sizeof(uint64_t) * BITSET_CONTAINER_SIZE_IN_WORDS); + if (!bitset->words) { + roaring_free(bitset); + return NULL; + } + bitset_container_clear(bitset); + return bitset; +} + +/* Copy one container into another. We assume that they are distinct. */ +void bitset_container_copy(const bitset_container_t *source, + bitset_container_t *dest) { + dest->cardinality = source->cardinality; + memcpy(dest->words, source->words, + sizeof(uint64_t) * BITSET_CONTAINER_SIZE_IN_WORDS); +} + +void bitset_container_add_from_range(bitset_container_t *bitset, uint32_t min, + uint32_t max, uint16_t step) { + if (step == 0) return; // refuse to crash + if ((64 % step) == 0) { // step divides 64 + uint64_t mask = 0; // construct the repeated mask + for (uint32_t value = (min % step); value < 64; value += step) { + mask |= ((uint64_t)1 << value); + } + uint32_t firstword = min / 64; + uint32_t endword = (max - 1) / 64; + bitset->cardinality = (max - min + step - 1) / step; + if (firstword == endword) { + bitset->words[firstword] |= + mask & (((~UINT64_C(0)) << (min % 64)) & + ((~UINT64_C(0)) >> ((~max + 1) % 64))); + return; + } + bitset->words[firstword] = mask & ((~UINT64_C(0)) << (min % 64)); + for (uint32_t i = firstword + 1; i < endword; i++) + bitset->words[i] = mask; + bitset->words[endword] = mask & ((~UINT64_C(0)) >> ((~max + 1) % 64)); + } else { + for (uint32_t value = min; value < max; value += step) { + bitset_container_add(bitset, value); + } + } +} + +/* Free memory. */ +void bitset_container_free(bitset_container_t *bitset) { + if (bitset->words != + NULL) { // Jon Strabala reports that some tools complain otherwise + roaring_aligned_free(bitset->words); + bitset->words = NULL; // pedantic + } + roaring_free(bitset); +} + +/* duplicate container. */ +ALLOW_UNALIGNED +bitset_container_t *bitset_container_clone(const bitset_container_t *src) { + bitset_container_t *bitset = + (bitset_container_t *)roaring_malloc(sizeof(bitset_container_t)); + + if (!bitset) { + return NULL; + } + + size_t align_size = 32; +#if CROARING_IS_X64 + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX512) { + // sizeof(__m512i) == 64 + align_size = 64; + } else { + // sizeof(__m256i) == 32 + align_size = 32; + } +#endif + bitset->words = (uint64_t *)roaring_aligned_malloc( + align_size, sizeof(uint64_t) * BITSET_CONTAINER_SIZE_IN_WORDS); + if (!bitset->words) { + roaring_free(bitset); + return NULL; + } + bitset->cardinality = src->cardinality; + memcpy(bitset->words, src->words, + sizeof(uint64_t) * BITSET_CONTAINER_SIZE_IN_WORDS); + return bitset; +} + +void bitset_container_offset(const bitset_container_t *c, container_t **loc, + container_t **hic, uint16_t offset) { + bitset_container_t *bc = NULL; + uint64_t val; + uint16_t b, i, end; + + b = offset >> 6; + i = offset % 64; + end = 1024 - b; + + if (loc != NULL) { + bc = bitset_container_create(); + if (i == 0) { + memcpy(bc->words + b, c->words, 8 * end); + } else { + bc->words[b] = c->words[0] << i; + for (uint32_t k = 1; k < end; ++k) { + val = c->words[k] << i; + val |= c->words[k - 1] >> (64 - i); + bc->words[b + k] = val; + } + } + + bc->cardinality = bitset_container_compute_cardinality(bc); + if (bc->cardinality != 0) { + *loc = bc; + } + if (bc->cardinality == c->cardinality) { + return; + } + } + + if (hic == NULL) { + // Both hic and loc can't be NULL, so bc is never NULL here + if (bc->cardinality == 0) { + bitset_container_free(bc); + } + return; + } + + if (bc == NULL || bc->cardinality != 0) { + bc = bitset_container_create(); + } + + if (i == 0) { + memcpy(bc->words, c->words + end, 8 * b); + } else { + for (uint32_t k = end; k < 1024; ++k) { + val = c->words[k] << i; + val |= c->words[k - 1] >> (64 - i); + bc->words[k - end] = val; + } + bc->words[b] = c->words[1023] >> (64 - i); + } + + bc->cardinality = bitset_container_compute_cardinality(bc); + if (bc->cardinality == 0) { + bitset_container_free(bc); + return; + } + *hic = bc; +} + +void bitset_container_set_range(bitset_container_t *bitset, uint32_t begin, + uint32_t end) { + bitset_set_range(bitset->words, begin, end); + bitset->cardinality = + bitset_container_compute_cardinality(bitset); // could be smarter +} + +bool bitset_container_intersect(const bitset_container_t *src_1, + const bitset_container_t *src_2) { + // could vectorize, but this is probably already quite fast in practice + const uint64_t *__restrict__ words_1 = src_1->words; + const uint64_t *__restrict__ words_2 = src_2->words; + for (int i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i++) { + if ((words_1[i] & words_2[i]) != 0) return true; + } + return false; +} + +#if CROARING_IS_X64 +#ifndef CROARING_WORDS_IN_AVX2_REG +#define CROARING_WORDS_IN_AVX2_REG sizeof(__m256i) / sizeof(uint64_t) +#endif +#ifndef WORDS_IN_AVX512_REG +#define WORDS_IN_AVX512_REG sizeof(__m512i) / sizeof(uint64_t) +#endif +/* Get the number of bits set (force computation) */ +static inline int _scalar_bitset_container_compute_cardinality( + const bitset_container_t *bitset) { + const uint64_t *words = bitset->words; + int32_t sum = 0; + for (int i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 4) { + sum += roaring_hamming(words[i]); + sum += roaring_hamming(words[i + 1]); + sum += roaring_hamming(words[i + 2]); + sum += roaring_hamming(words[i + 3]); + } + return sum; +} +/* Get the number of bits set (force computation) */ +int bitset_container_compute_cardinality(const bitset_container_t *bitset) { + int support = croaring_hardware_support(); +#if CROARING_COMPILER_SUPPORTS_AVX512 + if (support & ROARING_SUPPORTS_AVX512) { + return (int)avx512_vpopcount( + (const __m512i *)bitset->words, + BITSET_CONTAINER_SIZE_IN_WORDS / (WORDS_IN_AVX512_REG)); + } else +#endif // CROARING_COMPILER_SUPPORTS_AVX512 + if (support & ROARING_SUPPORTS_AVX2) { + return (int)avx2_harley_seal_popcount256( + (const __m256i *)bitset->words, + BITSET_CONTAINER_SIZE_IN_WORDS / (CROARING_WORDS_IN_AVX2_REG)); + } else { + return _scalar_bitset_container_compute_cardinality(bitset); + } +} + +#elif defined(CROARING_USENEON) +int bitset_container_compute_cardinality(const bitset_container_t *bitset) { + uint16x8_t n0 = vdupq_n_u16(0); + uint16x8_t n1 = vdupq_n_u16(0); + uint16x8_t n2 = vdupq_n_u16(0); + uint16x8_t n3 = vdupq_n_u16(0); + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 8) { + uint64x2_t c0 = vld1q_u64(&bitset->words[i + 0]); + n0 = vaddq_u16(n0, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c0)))); + uint64x2_t c1 = vld1q_u64(&bitset->words[i + 2]); + n1 = vaddq_u16(n1, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c1)))); + uint64x2_t c2 = vld1q_u64(&bitset->words[i + 4]); + n2 = vaddq_u16(n2, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c2)))); + uint64x2_t c3 = vld1q_u64(&bitset->words[i + 6]); + n3 = vaddq_u16(n3, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c3)))); + } + uint64x2_t n = vdupq_n_u64(0); + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n0))); + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n1))); + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n2))); + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n3))); + return vgetq_lane_u64(n, 0) + vgetq_lane_u64(n, 1); +} + +#else // CROARING_IS_X64 + +/* Get the number of bits set (force computation) */ +int bitset_container_compute_cardinality(const bitset_container_t *bitset) { + const uint64_t *words = bitset->words; + int32_t sum = 0; + for (int i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 4) { + sum += roaring_hamming(words[i]); + sum += roaring_hamming(words[i + 1]); + sum += roaring_hamming(words[i + 2]); + sum += roaring_hamming(words[i + 3]); + } + return sum; +} + +#endif // CROARING_IS_X64 + +#if CROARING_IS_X64 + +#define CROARING_BITSET_CONTAINER_FN_REPEAT 8 +#ifndef WORDS_IN_AVX512_REG +#define WORDS_IN_AVX512_REG sizeof(__m512i) / sizeof(uint64_t) +#endif // WORDS_IN_AVX512_REG + +/* Computes a binary operation (eg union) on bitset1 and bitset2 and write the + result to bitsetout */ +// clang-format off +#define CROARING_AVX512_BITSET_CONTAINER_FN1(before, opname, opsymbol, avx_intrinsic, \ + neon_intrinsic, after) \ + static inline int _avx512_bitset_container_##opname##_nocard( \ + const bitset_container_t *src_1, const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + const uint8_t * __restrict__ words_1 = (const uint8_t *)src_1->words; \ + const uint8_t * __restrict__ words_2 = (const uint8_t *)src_2->words; \ + /* not using the blocking optimization for some reason*/ \ + uint8_t *out = (uint8_t*)dst->words; \ + const int innerloop = 8; \ + for (size_t i = 0; \ + i < BITSET_CONTAINER_SIZE_IN_WORDS / (WORDS_IN_AVX512_REG); \ + i+=innerloop) { \ + __m512i A1, A2, AO; \ + A1 = _mm512_loadu_si512((const __m512i *)(words_1)); \ + A2 = _mm512_loadu_si512((const __m512i *)(words_2)); \ + AO = avx_intrinsic(A2, A1); \ + _mm512_storeu_si512((__m512i *)out, AO); \ + A1 = _mm512_loadu_si512((const __m512i *)(words_1 + 64)); \ + A2 = _mm512_loadu_si512((const __m512i *)(words_2 + 64)); \ + AO = avx_intrinsic(A2, A1); \ + _mm512_storeu_si512((__m512i *)(out+64), AO); \ + A1 = _mm512_loadu_si512((const __m512i *)(words_1 + 128)); \ + A2 = _mm512_loadu_si512((const __m512i *)(words_2 + 128)); \ + AO = avx_intrinsic(A2, A1); \ + _mm512_storeu_si512((__m512i *)(out+128), AO); \ + A1 = _mm512_loadu_si512((const __m512i *)(words_1 + 192)); \ + A2 = _mm512_loadu_si512((const __m512i *)(words_2 + 192)); \ + AO = avx_intrinsic(A2, A1); \ + _mm512_storeu_si512((__m512i *)(out+192), AO); \ + A1 = _mm512_loadu_si512((const __m512i *)(words_1 + 256)); \ + A2 = _mm512_loadu_si512((const __m512i *)(words_2 + 256)); \ + AO = avx_intrinsic(A2, A1); \ + _mm512_storeu_si512((__m512i *)(out+256), AO); \ + A1 = _mm512_loadu_si512((const __m512i *)(words_1 + 320)); \ + A2 = _mm512_loadu_si512((const __m512i *)(words_2 + 320)); \ + AO = avx_intrinsic(A2, A1); \ + _mm512_storeu_si512((__m512i *)(out+320), AO); \ + A1 = _mm512_loadu_si512((const __m512i *)(words_1 + 384)); \ + A2 = _mm512_loadu_si512((const __m512i *)(words_2 + 384)); \ + AO = avx_intrinsic(A2, A1); \ + _mm512_storeu_si512((__m512i *)(out+384), AO); \ + A1 = _mm512_loadu_si512((const __m512i *)(words_1 + 448)); \ + A2 = _mm512_loadu_si512((const __m512i *)(words_2 + 448)); \ + AO = avx_intrinsic(A2, A1); \ + _mm512_storeu_si512((__m512i *)(out+448), AO); \ + out+=512; \ + words_1 += 512; \ + words_2 += 512; \ + } \ + dst->cardinality = BITSET_UNKNOWN_CARDINALITY; \ + return dst->cardinality; \ + } + +#define CROARING_AVX512_BITSET_CONTAINER_FN2(before, opname, opsymbol, avx_intrinsic, \ + neon_intrinsic, after) \ + /* next, a version that updates cardinality*/ \ + static inline int _avx512_bitset_container_##opname(const bitset_container_t *src_1, \ + const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + const __m512i * __restrict__ words_1 = (const __m512i *) src_1->words; \ + const __m512i * __restrict__ words_2 = (const __m512i *) src_2->words; \ + __m512i *out = (__m512i *) dst->words; \ + dst->cardinality = (int32_t)avx512_harley_seal_popcount512andstore_##opname(words_2,\ + words_1, out,BITSET_CONTAINER_SIZE_IN_WORDS / (WORDS_IN_AVX512_REG)); \ + return dst->cardinality; \ + } + +#define CROARING_AVX512_BITSET_CONTAINER_FN3(before, opname, opsymbol, avx_intrinsic, \ + neon_intrinsic, after) \ + /* next, a version that just computes the cardinality*/ \ + static inline int _avx512_bitset_container_##opname##_justcard( \ + const bitset_container_t *src_1, const bitset_container_t *src_2) { \ + const __m512i * __restrict__ data1 = (const __m512i *) src_1->words; \ + const __m512i * __restrict__ data2 = (const __m512i *) src_2->words; \ + return (int)avx512_harley_seal_popcount512_##opname(data2, \ + data1, BITSET_CONTAINER_SIZE_IN_WORDS / (WORDS_IN_AVX512_REG)); \ + } + + +// we duplicate the function because other containers use the "or" term, makes API more consistent +#if CROARING_COMPILER_SUPPORTS_AVX512 +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX512, or, |, _mm512_or_si512, vorrq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX512, union, |, _mm512_or_si512, vorrq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 + +// we duplicate the function because other containers use the "intersection" term, makes API more consistent +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX512, and, &, _mm512_and_si512, vandq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX512, intersection, &, _mm512_and_si512, vandq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 + +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX512, xor, ^, _mm512_xor_si512, veorq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX512, andnot, &~, _mm512_andnot_si512, vbicq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 + +// we duplicate the function because other containers use the "or" term, makes API more consistent +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX512, or, |, _mm512_or_si512, vorrq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX512, union, |, _mm512_or_si512, vorrq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 + +// we duplicate the function because other containers use the "intersection" term, makes API more consistent +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX512, and, &, _mm512_and_si512, vandq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX512, intersection, &, _mm512_and_si512, vandq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 + +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX512, xor, ^, _mm512_xor_si512, veorq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX512, andnot, &~, _mm512_andnot_si512, vbicq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 + +// we duplicate the function because other containers use the "or" term, makes API more consistent +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX512, or, |, _mm512_or_si512, vorrq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX512, union, |, _mm512_or_si512, vorrq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 + +// we duplicate the function because other containers use the "intersection" term, makes API more consistent +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX512, and, &, _mm512_and_si512, vandq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX512, intersection, &, _mm512_and_si512, vandq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 + +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX512, xor, ^, _mm512_xor_si512, veorq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 +CROARING_TARGET_AVX512 +CROARING_AVX512_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX512, andnot, &~, _mm512_andnot_si512, vbicq_u64, CROARING_UNTARGET_AVX512) +CROARING_UNTARGET_AVX512 +#endif // CROARING_COMPILER_SUPPORTS_AVX512 + +#ifndef CROARING_WORDS_IN_AVX2_REG +#define CROARING_WORDS_IN_AVX2_REG sizeof(__m256i) / sizeof(uint64_t) +#endif // CROARING_WORDS_IN_AVX2_REG +#define CROARING_LOOP_SIZE \ + BITSET_CONTAINER_SIZE_IN_WORDS / \ + ((CROARING_WORDS_IN_AVX2_REG)*CROARING_BITSET_CONTAINER_FN_REPEAT) + +/* Computes a binary operation (eg union) on bitset1 and bitset2 and write the + result to bitsetout */ +// clang-format off +#define CROARING_AVX_BITSET_CONTAINER_FN1(before, opname, opsymbol, avx_intrinsic, \ + neon_intrinsic, after) \ + static inline int _avx2_bitset_container_##opname##_nocard( \ + const bitset_container_t *src_1, const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + const uint8_t *__restrict__ words_1 = (const uint8_t *)src_1->words; \ + const uint8_t *__restrict__ words_2 = (const uint8_t *)src_2->words; \ + /* not using the blocking optimization for some reason*/ \ + uint8_t *out = (uint8_t *)dst->words; \ + const int innerloop = 8; \ + for (size_t i = 0; \ + i < BITSET_CONTAINER_SIZE_IN_WORDS / (CROARING_WORDS_IN_AVX2_REG); \ + i += innerloop) { \ + __m256i A1, A2, AO; \ + A1 = _mm256_lddqu_si256((const __m256i *)(words_1)); \ + A2 = _mm256_lddqu_si256((const __m256i *)(words_2)); \ + AO = avx_intrinsic(A2, A1); \ + _mm256_storeu_si256((__m256i *)out, AO); \ + A1 = _mm256_lddqu_si256((const __m256i *)(words_1 + 32)); \ + A2 = _mm256_lddqu_si256((const __m256i *)(words_2 + 32)); \ + AO = avx_intrinsic(A2, A1); \ + _mm256_storeu_si256((__m256i *)(out + 32), AO); \ + A1 = _mm256_lddqu_si256((const __m256i *)(words_1 + 64)); \ + A2 = _mm256_lddqu_si256((const __m256i *)(words_2 + 64)); \ + AO = avx_intrinsic(A2, A1); \ + _mm256_storeu_si256((__m256i *)(out + 64), AO); \ + A1 = _mm256_lddqu_si256((const __m256i *)(words_1 + 96)); \ + A2 = _mm256_lddqu_si256((const __m256i *)(words_2 + 96)); \ + AO = avx_intrinsic(A2, A1); \ + _mm256_storeu_si256((__m256i *)(out + 96), AO); \ + A1 = _mm256_lddqu_si256((const __m256i *)(words_1 + 128)); \ + A2 = _mm256_lddqu_si256((const __m256i *)(words_2 + 128)); \ + AO = avx_intrinsic(A2, A1); \ + _mm256_storeu_si256((__m256i *)(out + 128), AO); \ + A1 = _mm256_lddqu_si256((const __m256i *)(words_1 + 160)); \ + A2 = _mm256_lddqu_si256((const __m256i *)(words_2 + 160)); \ + AO = avx_intrinsic(A2, A1); \ + _mm256_storeu_si256((__m256i *)(out + 160), AO); \ + A1 = _mm256_lddqu_si256((const __m256i *)(words_1 + 192)); \ + A2 = _mm256_lddqu_si256((const __m256i *)(words_2 + 192)); \ + AO = avx_intrinsic(A2, A1); \ + _mm256_storeu_si256((__m256i *)(out + 192), AO); \ + A1 = _mm256_lddqu_si256((const __m256i *)(words_1 + 224)); \ + A2 = _mm256_lddqu_si256((const __m256i *)(words_2 + 224)); \ + AO = avx_intrinsic(A2, A1); \ + _mm256_storeu_si256((__m256i *)(out + 224), AO); \ + out += 256; \ + words_1 += 256; \ + words_2 += 256; \ + } \ + dst->cardinality = BITSET_UNKNOWN_CARDINALITY; \ + return dst->cardinality; \ + } + +#define CROARING_AVX_BITSET_CONTAINER_FN2(before, opname, opsymbol, avx_intrinsic, \ + neon_intrinsic, after) \ + /* next, a version that updates cardinality*/ \ + static inline int _avx2_bitset_container_##opname(const bitset_container_t *src_1, \ + const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + const __m256i *__restrict__ words_1 = (const __m256i *)src_1->words; \ + const __m256i *__restrict__ words_2 = (const __m256i *)src_2->words; \ + __m256i *out = (__m256i *)dst->words; \ + dst->cardinality = (int32_t)avx2_harley_seal_popcount256andstore_##opname( \ + words_2, words_1, out, \ + BITSET_CONTAINER_SIZE_IN_WORDS / (CROARING_WORDS_IN_AVX2_REG)); \ + return dst->cardinality; \ + } \ + +#define CROARING_AVX_BITSET_CONTAINER_FN3(before, opname, opsymbol, avx_intrinsic, \ + neon_intrinsic, after) \ + /* next, a version that just computes the cardinality*/ \ + static inline int _avx2_bitset_container_##opname##_justcard( \ + const bitset_container_t *src_1, const bitset_container_t *src_2) { \ + const __m256i *__restrict__ data1 = (const __m256i *)src_1->words; \ + const __m256i *__restrict__ data2 = (const __m256i *)src_2->words; \ + return (int)avx2_harley_seal_popcount256_##opname( \ + data2, data1, BITSET_CONTAINER_SIZE_IN_WORDS / (CROARING_WORDS_IN_AVX2_REG)); \ + } + + +// we duplicate the function because other containers use the "or" term, makes API more consistent +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX2, or, |, _mm256_or_si256, vorrq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX2, union, |, _mm256_or_si256, vorrq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 + +// we duplicate the function because other containers use the "intersection" term, makes API more consistent +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX2, and, &, _mm256_and_si256, vandq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX2, intersection, &, _mm256_and_si256, vandq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX2, xor, ^, _mm256_xor_si256, veorq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN1(CROARING_TARGET_AVX2, andnot, &~, _mm256_andnot_si256, vbicq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 + +// we duplicate the function because other containers use the "or" term, makes API more consistent +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX2, or, |, _mm256_or_si256, vorrq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX2, union, |, _mm256_or_si256, vorrq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 + +// we duplicate the function because other containers use the "intersection" term, makes API more consistent +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX2, and, &, _mm256_and_si256, vandq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX2, intersection, &, _mm256_and_si256, vandq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX2, xor, ^, _mm256_xor_si256, veorq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN2(CROARING_TARGET_AVX2, andnot, &~, _mm256_andnot_si256, vbicq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 + +// we duplicate the function because other containers use the "or" term, makes API more consistent +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX2, or, |, _mm256_or_si256, vorrq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX2, union, |, _mm256_or_si256, vorrq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 + +// we duplicate the function because other containers use the "intersection" term, makes API more consistent +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX2, and, &, _mm256_and_si256, vandq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX2, intersection, &, _mm256_and_si256, vandq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 + +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX2, xor, ^, _mm256_xor_si256, veorq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 +CROARING_TARGET_AVX2 +CROARING_AVX_BITSET_CONTAINER_FN3(CROARING_TARGET_AVX2, andnot, &~, _mm256_andnot_si256, vbicq_u64, CROARING_UNTARGET_AVX2) +CROARING_UNTARGET_AVX2 + + +#define SCALAR_BITSET_CONTAINER_FN(opname, opsymbol, avx_intrinsic, \ + neon_intrinsic) \ + static inline int _scalar_bitset_container_##opname(const bitset_container_t *src_1, \ + const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + const uint64_t *__restrict__ words_1 = src_1->words; \ + const uint64_t *__restrict__ words_2 = src_2->words; \ + uint64_t *out = dst->words; \ + int32_t sum = 0; \ + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 2) { \ + const uint64_t word_1 = (words_1[i])opsymbol(words_2[i]), \ + word_2 = (words_1[i + 1]) opsymbol(words_2[i + 1]); \ + out[i] = word_1; \ + out[i + 1] = word_2; \ + sum += roaring_hamming(word_1); \ + sum += roaring_hamming(word_2); \ + } \ + dst->cardinality = sum; \ + return dst->cardinality; \ + } \ + static inline int _scalar_bitset_container_##opname##_nocard( \ + const bitset_container_t *src_1, const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + const uint64_t *__restrict__ words_1 = src_1->words; \ + const uint64_t *__restrict__ words_2 = src_2->words; \ + uint64_t *out = dst->words; \ + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i++) { \ + out[i] = (words_1[i])opsymbol(words_2[i]); \ + } \ + dst->cardinality = BITSET_UNKNOWN_CARDINALITY; \ + return dst->cardinality; \ + } \ + static inline int _scalar_bitset_container_##opname##_justcard( \ + const bitset_container_t *src_1, const bitset_container_t *src_2) { \ + const uint64_t *__restrict__ words_1 = src_1->words; \ + const uint64_t *__restrict__ words_2 = src_2->words; \ + int32_t sum = 0; \ + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 2) { \ + const uint64_t word_1 = (words_1[i])opsymbol(words_2[i]), \ + word_2 = (words_1[i + 1]) opsymbol(words_2[i + 1]); \ + sum += roaring_hamming(word_1); \ + sum += roaring_hamming(word_2); \ + } \ + return sum; \ + } + +// we duplicate the function because other containers use the "or" term, makes API more consistent +SCALAR_BITSET_CONTAINER_FN(or, |, _mm256_or_si256, vorrq_u64) +SCALAR_BITSET_CONTAINER_FN(union, |, _mm256_or_si256, vorrq_u64) + +// we duplicate the function because other containers use the "intersection" term, makes API more consistent +SCALAR_BITSET_CONTAINER_FN(and, &, _mm256_and_si256, vandq_u64) +SCALAR_BITSET_CONTAINER_FN(intersection, &, _mm256_and_si256, vandq_u64) + +SCALAR_BITSET_CONTAINER_FN(xor, ^, _mm256_xor_si256, veorq_u64) +SCALAR_BITSET_CONTAINER_FN(andnot, &~, _mm256_andnot_si256, vbicq_u64) + +#if CROARING_COMPILER_SUPPORTS_AVX512 +#define CROARING_BITSET_CONTAINER_FN(opname, opsymbol, avx_intrinsic, neon_intrinsic) \ + int bitset_container_##opname(const bitset_container_t *src_1, \ + const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + int support = croaring_hardware_support(); \ + if ( support & ROARING_SUPPORTS_AVX512 ) { \ + return _avx512_bitset_container_##opname(src_1, src_2, dst); \ + } \ + else if ( support & ROARING_SUPPORTS_AVX2 ) { \ + return _avx2_bitset_container_##opname(src_1, src_2, dst); \ + } else { \ + return _scalar_bitset_container_##opname(src_1, src_2, dst); \ + } \ + } \ + int bitset_container_##opname##_nocard(const bitset_container_t *src_1, \ + const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + int support = croaring_hardware_support(); \ + if ( support & ROARING_SUPPORTS_AVX512 ) { \ + return _avx512_bitset_container_##opname##_nocard(src_1, src_2, dst); \ + } \ + else if ( support & ROARING_SUPPORTS_AVX2 ) { \ + return _avx2_bitset_container_##opname##_nocard(src_1, src_2, dst); \ + } else { \ + return _scalar_bitset_container_##opname##_nocard(src_1, src_2, dst); \ + } \ + } \ + int bitset_container_##opname##_justcard(const bitset_container_t *src_1, \ + const bitset_container_t *src_2) { \ + int support = croaring_hardware_support(); \ + if ( support & ROARING_SUPPORTS_AVX512 ) { \ + return _avx512_bitset_container_##opname##_justcard(src_1, src_2); \ + } \ + else if ( support & ROARING_SUPPORTS_AVX2 ) { \ + return _avx2_bitset_container_##opname##_justcard(src_1, src_2); \ + } else { \ + return _scalar_bitset_container_##opname##_justcard(src_1, src_2); \ + } \ + } + +#else // CROARING_COMPILER_SUPPORTS_AVX512 + + +#define CROARING_BITSET_CONTAINER_FN(opname, opsymbol, avx_intrinsic, neon_intrinsic) \ + int bitset_container_##opname(const bitset_container_t *src_1, \ + const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + if ( croaring_hardware_support() & ROARING_SUPPORTS_AVX2 ) { \ + return _avx2_bitset_container_##opname(src_1, src_2, dst); \ + } else { \ + return _scalar_bitset_container_##opname(src_1, src_2, dst); \ + } \ + } \ + int bitset_container_##opname##_nocard(const bitset_container_t *src_1, \ + const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + if ( croaring_hardware_support() & ROARING_SUPPORTS_AVX2 ) { \ + return _avx2_bitset_container_##opname##_nocard(src_1, src_2, dst); \ + } else { \ + return _scalar_bitset_container_##opname##_nocard(src_1, src_2, dst); \ + } \ + } \ + int bitset_container_##opname##_justcard(const bitset_container_t *src_1, \ + const bitset_container_t *src_2) { \ + if ( croaring_hardware_support() & ROARING_SUPPORTS_AVX2 ) { \ + return _avx2_bitset_container_##opname##_justcard(src_1, src_2); \ + } else { \ + return _scalar_bitset_container_##opname##_justcard(src_1, src_2); \ + } \ + } + +#endif // CROARING_COMPILER_SUPPORTS_AVX512 + +#elif defined(CROARING_USENEON) + +#define CROARING_BITSET_CONTAINER_FN(opname, opsymbol, avx_intrinsic, neon_intrinsic) \ +int bitset_container_##opname(const bitset_container_t *src_1, \ + const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + const uint64_t * __restrict__ words_1 = src_1->words; \ + const uint64_t * __restrict__ words_2 = src_2->words; \ + uint64_t *out = dst->words; \ + uint16x8_t n0 = vdupq_n_u16(0); \ + uint16x8_t n1 = vdupq_n_u16(0); \ + uint16x8_t n2 = vdupq_n_u16(0); \ + uint16x8_t n3 = vdupq_n_u16(0); \ + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 8) { \ + uint64x2_t c0 = neon_intrinsic(vld1q_u64(&words_1[i + 0]), \ + vld1q_u64(&words_2[i + 0])); \ + n0 = vaddq_u16(n0, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c0)))); \ + vst1q_u64(&out[i + 0], c0); \ + uint64x2_t c1 = neon_intrinsic(vld1q_u64(&words_1[i + 2]), \ + vld1q_u64(&words_2[i + 2])); \ + n1 = vaddq_u16(n1, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c1)))); \ + vst1q_u64(&out[i + 2], c1); \ + uint64x2_t c2 = neon_intrinsic(vld1q_u64(&words_1[i + 4]), \ + vld1q_u64(&words_2[i + 4])); \ + n2 = vaddq_u16(n2, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c2)))); \ + vst1q_u64(&out[i + 4], c2); \ + uint64x2_t c3 = neon_intrinsic(vld1q_u64(&words_1[i + 6]), \ + vld1q_u64(&words_2[i + 6])); \ + n3 = vaddq_u16(n3, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c3)))); \ + vst1q_u64(&out[i + 6], c3); \ + } \ + uint64x2_t n = vdupq_n_u64(0); \ + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n0))); \ + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n1))); \ + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n2))); \ + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n3))); \ + dst->cardinality = vgetq_lane_u64(n, 0) + vgetq_lane_u64(n, 1); \ + return dst->cardinality; \ +} \ +int bitset_container_##opname##_nocard(const bitset_container_t *src_1, \ + const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + const uint64_t * __restrict__ words_1 = src_1->words; \ + const uint64_t * __restrict__ words_2 = src_2->words; \ + uint64_t *out = dst->words; \ + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 8) { \ + vst1q_u64(&out[i + 0], neon_intrinsic(vld1q_u64(&words_1[i + 0]), \ + vld1q_u64(&words_2[i + 0]))); \ + vst1q_u64(&out[i + 2], neon_intrinsic(vld1q_u64(&words_1[i + 2]), \ + vld1q_u64(&words_2[i + 2]))); \ + vst1q_u64(&out[i + 4], neon_intrinsic(vld1q_u64(&words_1[i + 4]), \ + vld1q_u64(&words_2[i + 4]))); \ + vst1q_u64(&out[i + 6], neon_intrinsic(vld1q_u64(&words_1[i + 6]), \ + vld1q_u64(&words_2[i + 6]))); \ + } \ + dst->cardinality = BITSET_UNKNOWN_CARDINALITY; \ + return dst->cardinality; \ +} \ +int bitset_container_##opname##_justcard(const bitset_container_t *src_1, \ + const bitset_container_t *src_2) { \ + const uint64_t * __restrict__ words_1 = src_1->words; \ + const uint64_t * __restrict__ words_2 = src_2->words; \ + uint16x8_t n0 = vdupq_n_u16(0); \ + uint16x8_t n1 = vdupq_n_u16(0); \ + uint16x8_t n2 = vdupq_n_u16(0); \ + uint16x8_t n3 = vdupq_n_u16(0); \ + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 8) { \ + uint64x2_t c0 = neon_intrinsic(vld1q_u64(&words_1[i + 0]), \ + vld1q_u64(&words_2[i + 0])); \ + n0 = vaddq_u16(n0, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c0)))); \ + uint64x2_t c1 = neon_intrinsic(vld1q_u64(&words_1[i + 2]), \ + vld1q_u64(&words_2[i + 2])); \ + n1 = vaddq_u16(n1, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c1)))); \ + uint64x2_t c2 = neon_intrinsic(vld1q_u64(&words_1[i + 4]), \ + vld1q_u64(&words_2[i + 4])); \ + n2 = vaddq_u16(n2, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c2)))); \ + uint64x2_t c3 = neon_intrinsic(vld1q_u64(&words_1[i + 6]), \ + vld1q_u64(&words_2[i + 6])); \ + n3 = vaddq_u16(n3, vpaddlq_u8(vcntq_u8(vreinterpretq_u8_u64(c3)))); \ + } \ + uint64x2_t n = vdupq_n_u64(0); \ + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n0))); \ + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n1))); \ + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n2))); \ + n = vaddq_u64(n, vpaddlq_u32(vpaddlq_u16(n3))); \ + return vgetq_lane_u64(n, 0) + vgetq_lane_u64(n, 1); \ +} + +#else + +#define CROARING_BITSET_CONTAINER_FN(opname, opsymbol, avx_intrinsic, neon_intrinsic) \ +int bitset_container_##opname(const bitset_container_t *src_1, \ + const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + const uint64_t * __restrict__ words_1 = src_1->words; \ + const uint64_t * __restrict__ words_2 = src_2->words; \ + uint64_t *out = dst->words; \ + int32_t sum = 0; \ + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 2) { \ + const uint64_t word_1 = (words_1[i])opsymbol(words_2[i]), \ + word_2 = (words_1[i + 1])opsymbol(words_2[i + 1]); \ + out[i] = word_1; \ + out[i + 1] = word_2; \ + sum += roaring_hamming(word_1); \ + sum += roaring_hamming(word_2); \ + } \ + dst->cardinality = sum; \ + return dst->cardinality; \ +} \ +int bitset_container_##opname##_nocard(const bitset_container_t *src_1, \ + const bitset_container_t *src_2, \ + bitset_container_t *dst) { \ + const uint64_t * __restrict__ words_1 = src_1->words; \ + const uint64_t * __restrict__ words_2 = src_2->words; \ + uint64_t *out = dst->words; \ + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i++) { \ + out[i] = (words_1[i])opsymbol(words_2[i]); \ + } \ + dst->cardinality = BITSET_UNKNOWN_CARDINALITY; \ + return dst->cardinality; \ +} \ +int bitset_container_##opname##_justcard(const bitset_container_t *src_1, \ + const bitset_container_t *src_2) { \ + printf("A1\n"); const uint64_t * __restrict__ words_1 = src_1->words; \ + const uint64_t * __restrict__ words_2 = src_2->words; \ + int32_t sum = 0; \ + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 2) { \ + const uint64_t word_1 = (words_1[i])opsymbol(words_2[i]), \ + word_2 = (words_1[i + 1])opsymbol(words_2[i + 1]); \ + sum += roaring_hamming(word_1); \ + sum += roaring_hamming(word_2); \ + } \ + return sum; \ +} + +#endif // CROARING_IS_X64 + +// we duplicate the function because other containers use the "or" term, makes API more consistent +CROARING_BITSET_CONTAINER_FN(or, |, _mm256_or_si256, vorrq_u64) +CROARING_BITSET_CONTAINER_FN(union, |, _mm256_or_si256, vorrq_u64) + +// we duplicate the function because other containers use the "intersection" term, makes API more consistent +CROARING_BITSET_CONTAINER_FN(and, &, _mm256_and_si256, vandq_u64) +CROARING_BITSET_CONTAINER_FN(intersection, &, _mm256_and_si256, vandq_u64) + +CROARING_BITSET_CONTAINER_FN(xor, ^, _mm256_xor_si256, veorq_u64) +CROARING_BITSET_CONTAINER_FN(andnot, &~, _mm256_andnot_si256, vbicq_u64) +// clang-format On + + +ALLOW_UNALIGNED +int bitset_container_to_uint32_array( + uint32_t *out, + const bitset_container_t *bc, + uint32_t base +){ +#if CROARING_IS_X64 + int support = croaring_hardware_support(); +#if CROARING_COMPILER_SUPPORTS_AVX512 + if(( support & ROARING_SUPPORTS_AVX512 ) && (bc->cardinality >= 8192)) // heuristic + return (int) bitset_extract_setbits_avx512(bc->words, + BITSET_CONTAINER_SIZE_IN_WORDS, out, bc->cardinality, base); + else +#endif + if(( support & ROARING_SUPPORTS_AVX2 ) && (bc->cardinality >= 8192)) // heuristic + return (int) bitset_extract_setbits_avx2(bc->words, + BITSET_CONTAINER_SIZE_IN_WORDS, out, bc->cardinality, base); + else + return (int) bitset_extract_setbits(bc->words, + BITSET_CONTAINER_SIZE_IN_WORDS, out, base); +#else + return (int) bitset_extract_setbits(bc->words, + BITSET_CONTAINER_SIZE_IN_WORDS, out, base); +#endif +} + +/* + * Print this container using printf (useful for debugging). + */ +void bitset_container_printf(const bitset_container_t * v) { + printf("{"); + uint32_t base = 0; + bool iamfirst = true;// TODO: rework so that this is not necessary yet still readable + for (int i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; ++i) { + uint64_t w = v->words[i]; + while (w != 0) { + uint64_t t = w & (~w + 1); + int r = roaring_trailing_zeroes(w); + if(iamfirst) {// predicted to be false + printf("%u",base + r); + iamfirst = false; + } else { + printf(",%u",base + r); + } + w ^= t; + } + base += 64; + } + printf("}"); +} + + +/* + * Print this container using printf as a comma-separated list of 32-bit integers starting at base. + */ +void bitset_container_printf_as_uint32_array(const bitset_container_t * v, uint32_t base) { + bool iamfirst = true;// TODO: rework so that this is not necessary yet still readable + for (int i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; ++i) { + uint64_t w = v->words[i]; + while (w != 0) { + uint64_t t = w & (~w + 1); + int r = roaring_trailing_zeroes(w); + if(iamfirst) {// predicted to be false + printf("%u", r + base); + iamfirst = false; + } else { + printf(",%u",r + base); + } + w ^= t; + } + base += 64; + } +} + +/* + * Validate the container. Returns true if valid. + */ +bool bitset_container_validate(const bitset_container_t *v, const char **reason) { + if (v->words == NULL) { + *reason = "words is NULL"; + return false; + } + if (v->cardinality != bitset_container_compute_cardinality(v)) { + *reason = "cardinality is incorrect"; + return false; + } + if (v->cardinality <= DEFAULT_MAX_SIZE) { + *reason = "cardinality is too small for a bitmap container"; + return false; + } + // Attempt to forcibly load the first and last words, hopefully causing + // a segfault or an address sanitizer error if words is not allocated. + volatile uint64_t *words = v->words; + (void) words[0]; + (void) words[BITSET_CONTAINER_SIZE_IN_WORDS - 1]; + return true; +} + + +// TODO: use the fast lower bound, also +int bitset_container_number_of_runs(bitset_container_t *bc) { + int num_runs = 0; + uint64_t next_word = bc->words[0]; + + for (int i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS-1; ++i) { + uint64_t word = next_word; + next_word = bc->words[i+1]; + num_runs += roaring_hamming((~word) & (word << 1)) + ( (word >> 63) & ~next_word); + } + + uint64_t word = next_word; + num_runs += roaring_hamming((~word) & (word << 1)); + if((word & 0x8000000000000000ULL) != 0) + num_runs++; + return num_runs; +} + + +int32_t bitset_container_write(const bitset_container_t *container, + char *buf) { + memcpy(buf, container->words, BITSET_CONTAINER_SIZE_IN_WORDS * sizeof(uint64_t)); + return bitset_container_size_in_bytes(container); +} + + +int32_t bitset_container_read(int32_t cardinality, bitset_container_t *container, + const char *buf) { + container->cardinality = cardinality; + memcpy(container->words, buf, BITSET_CONTAINER_SIZE_IN_WORDS * sizeof(uint64_t)); + return bitset_container_size_in_bytes(container); +} + +bool bitset_container_iterate(const bitset_container_t *cont, uint32_t base, roaring_iterator iterator, void *ptr) { + for (int32_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; ++i ) { + uint64_t w = cont->words[i]; + while (w != 0) { + uint64_t t = w & (~w + 1); + int r = roaring_trailing_zeroes(w); + if(!iterator(r + base, ptr)) return false; + w ^= t; + } + base += 64; + } + return true; +} + +bool bitset_container_iterate64(const bitset_container_t *cont, uint32_t base, roaring_iterator64 iterator, uint64_t high_bits, void *ptr) { + for (int32_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; ++i ) { + uint64_t w = cont->words[i]; + while (w != 0) { + uint64_t t = w & (~w + 1); + int r = roaring_trailing_zeroes(w); + if(!iterator(high_bits | (uint64_t)(r + base), ptr)) return false; + w ^= t; + } + base += 64; + } + return true; +} + +#if CROARING_IS_X64 +#if CROARING_COMPILER_SUPPORTS_AVX512 +CROARING_TARGET_AVX512 +ALLOW_UNALIGNED +static inline bool _avx512_bitset_container_equals(const bitset_container_t *container1, const bitset_container_t *container2) { + const __m512i *ptr1 = (const __m512i*)container1->words; + const __m512i *ptr2 = (const __m512i*)container2->words; + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS*sizeof(uint64_t)/64; i++) { + __m512i r1 = _mm512_loadu_si512(ptr1+i); + __m512i r2 = _mm512_loadu_si512(ptr2+i); + __mmask64 mask = _mm512_cmpeq_epi8_mask(r1, r2); + if ((uint64_t)mask != UINT64_MAX) { + return false; + } + } + return true; +} +CROARING_UNTARGET_AVX512 +#endif // CROARING_COMPILER_SUPPORTS_AVX512 +CROARING_TARGET_AVX2 +ALLOW_UNALIGNED +static inline bool _avx2_bitset_container_equals(const bitset_container_t *container1, const bitset_container_t *container2) { + const __m256i *ptr1 = (const __m256i*)container1->words; + const __m256i *ptr2 = (const __m256i*)container2->words; + for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS*sizeof(uint64_t)/32; i++) { + __m256i r1 = _mm256_loadu_si256(ptr1+i); + __m256i r2 = _mm256_loadu_si256(ptr2+i); + int mask = _mm256_movemask_epi8(_mm256_cmpeq_epi8(r1, r2)); + if ((uint32_t)mask != UINT32_MAX) { + return false; + } + } + return true; +} +CROARING_UNTARGET_AVX2 +#endif // CROARING_IS_X64 + +ALLOW_UNALIGNED +bool bitset_container_equals(const bitset_container_t *container1, const bitset_container_t *container2) { + if((container1->cardinality != BITSET_UNKNOWN_CARDINALITY) && (container2->cardinality != BITSET_UNKNOWN_CARDINALITY)) { + if(container1->cardinality != container2->cardinality) { + return false; + } + if (container1->cardinality == INT32_C(0x10000)) { + return true; + } + } +#if CROARING_IS_X64 + int support = croaring_hardware_support(); +#if CROARING_COMPILER_SUPPORTS_AVX512 + if( support & ROARING_SUPPORTS_AVX512 ) { + return _avx512_bitset_container_equals(container1, container2); + } + else +#endif + if( support & ROARING_SUPPORTS_AVX2 ) { + return _avx2_bitset_container_equals(container1, container2); + } +#endif + return memcmp(container1->words, + container2->words, + BITSET_CONTAINER_SIZE_IN_WORDS*sizeof(uint64_t)) == 0; +} + +bool bitset_container_is_subset(const bitset_container_t *container1, + const bitset_container_t *container2) { + if((container1->cardinality != BITSET_UNKNOWN_CARDINALITY) && (container2->cardinality != BITSET_UNKNOWN_CARDINALITY)) { + if(container1->cardinality > container2->cardinality) { + return false; + } + } + for(int32_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; ++i ) { + if((container1->words[i] & container2->words[i]) != container1->words[i]) { + return false; + } + } + return true; +} + +bool bitset_container_select(const bitset_container_t *container, uint32_t *start_rank, uint32_t rank, uint32_t *element) { + int card = bitset_container_cardinality(container); + if(rank >= *start_rank + card) { + *start_rank += card; + return false; + } + const uint64_t *words = container->words; + int32_t size; + for (int i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 1) { + size = roaring_hamming(words[i]); + if(rank <= *start_rank + size) { + uint64_t w = container->words[i]; + uint16_t base = i*64; + while (w != 0) { + uint64_t t = w & (~w + 1); + int r = roaring_trailing_zeroes(w); + if(*start_rank == rank) { + *element = r+base; + return true; + } + w ^= t; + *start_rank += 1; + } + } + else + *start_rank += size; + } + assert(false); + roaring_unreachable; +} + + +/* Returns the smallest value (assumes not empty) */ +uint16_t bitset_container_minimum(const bitset_container_t *container) { + for (int32_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; ++i ) { + uint64_t w = container->words[i]; + if (w != 0) { + int r = roaring_trailing_zeroes(w); + return r + i * 64; + } + } + return UINT16_MAX; +} + +/* Returns the largest value (assumes not empty) */ +uint16_t bitset_container_maximum(const bitset_container_t *container) { + for (int32_t i = BITSET_CONTAINER_SIZE_IN_WORDS - 1; i > 0; --i ) { + uint64_t w = container->words[i]; + if (w != 0) { + int r = roaring_leading_zeroes(w); + return i * 64 + 63 - r; + } + } + return 0; +} + +/* Returns the number of values equal or smaller than x */ +int bitset_container_rank(const bitset_container_t *container, uint16_t x) { + // credit: aqrit + int sum = 0; + int i = 0; + for (int end = x / 64; i < end; i++){ + sum += roaring_hamming(container->words[i]); + } + uint64_t lastword = container->words[i]; + uint64_t lastpos = UINT64_C(1) << (x % 64); + uint64_t mask = lastpos + lastpos - 1; // smear right + sum += roaring_hamming(lastword & mask); + return sum; +} + +uint32_t bitset_container_rank_many(const bitset_container_t *container, uint64_t start_rank, const uint32_t* begin, const uint32_t* end, uint64_t* ans){ + const uint16_t high = (uint16_t)((*begin) >> 16); + int i = 0; + int sum = 0; + const uint32_t* iter = begin; + for(; iter != end; iter++) { + uint32_t x = *iter; + uint16_t xhigh = (uint16_t)(x >> 16); + if(xhigh != high) return iter - begin; // stop at next container + + uint16_t xlow = (uint16_t)x; + for(int count = xlow / 64; i < count; i++){ + sum += roaring_hamming(container->words[i]); + } + uint64_t lastword = container->words[i]; + uint64_t lastpos = UINT64_C(1) << (xlow % 64); + uint64_t mask = lastpos + lastpos - 1; // smear right + *(ans++) = start_rank + sum + roaring_hamming(lastword & mask); + } + return iter - begin; +} + + +/* Returns the index of x , if not exsist return -1 */ +int bitset_container_get_index(const bitset_container_t *container, uint16_t x) { + if (bitset_container_get(container, x)) { + // credit: aqrit + int sum = 0; + int i = 0; + for (int end = x / 64; i < end; i++){ + sum += roaring_hamming(container->words[i]); + } + uint64_t lastword = container->words[i]; + uint64_t lastpos = UINT64_C(1) << (x % 64); + uint64_t mask = lastpos + lastpos - 1; // smear right + sum += roaring_hamming(lastword & mask); + return sum - 1; + } else { + return -1; + } +} + +/* Returns the index of the first value equal or larger than x, or -1 */ +int bitset_container_index_equalorlarger(const bitset_container_t *container, uint16_t x) { + uint32_t x32 = x; + uint32_t k = x32 / 64; + uint64_t word = container->words[k]; + const int diff = x32 - k * 64; // in [0,64) + word = (word >> diff) << diff; // a mask is faster, but we don't care + while(word == 0) { + k++; + if(k == BITSET_CONTAINER_SIZE_IN_WORDS) return -1; + word = container->words[k]; + } + return k * 64 + roaring_trailing_zeroes(word); +} + +#ifdef __cplusplus +} } } // extern "C" { namespace roaring { namespace internal { +#endif +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif \ No newline at end of file diff --git a/contrib/libs/croaring/src/containers/containers.c b/contrib/libs/croaring/src/containers/containers.c new file mode 100644 index 000000000000..eb5a346be59c --- /dev/null +++ b/contrib/libs/croaring/src/containers/containers.c @@ -0,0 +1,715 @@ + +#include <roaring/containers/containers.h> +#include <roaring/memory.h> + +#ifdef __cplusplus +extern "C" { +// In Windows MSVC C++ compiler, (type){init} does not compile, +// it causes C4576: a parenthesized type followed by an initializer list is a +// non-standard explicit type conversion syntax The correct syntax is type{init} +#define ROARING_INIT_ROARING_CONTAINER_ITERATOR_T roaring_container_iterator_t +namespace roaring { +namespace internal { +#else +#define ROARING_INIT_ROARING_CONTAINER_ITERATOR_T (roaring_container_iterator_t) +#endif + +static inline uint32_t minimum_uint32(uint32_t a, uint32_t b) { + return (a < b) ? a : b; +} + +extern inline const container_t *container_unwrap_shared( + const container_t *candidate_shared_container, uint8_t *type); + +extern inline container_t *container_mutable_unwrap_shared( + container_t *candidate_shared_container, uint8_t *type); + +extern inline int container_get_cardinality(const container_t *c, + uint8_t typecode); + +extern inline container_t *container_iand(container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type); + +extern inline container_t *container_ior(container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type); + +extern inline container_t *container_ixor(container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type); + +extern inline container_t *container_iandnot(container_t *c1, uint8_t type1, + const container_t *c2, + uint8_t type2, + uint8_t *result_type); + +void container_free(container_t *c, uint8_t type) { + switch (type) { + case BITSET_CONTAINER_TYPE: + bitset_container_free(CAST_bitset(c)); + break; + case ARRAY_CONTAINER_TYPE: + array_container_free(CAST_array(c)); + break; + case RUN_CONTAINER_TYPE: + run_container_free(CAST_run(c)); + break; + case SHARED_CONTAINER_TYPE: + shared_container_free(CAST_shared(c)); + break; + default: + assert(false); + roaring_unreachable; + } +} + +void container_printf(const container_t *c, uint8_t type) { + c = container_unwrap_shared(c, &type); + switch (type) { + case BITSET_CONTAINER_TYPE: + bitset_container_printf(const_CAST_bitset(c)); + return; + case ARRAY_CONTAINER_TYPE: + array_container_printf(const_CAST_array(c)); + return; + case RUN_CONTAINER_TYPE: + run_container_printf(const_CAST_run(c)); + return; + default: + roaring_unreachable; + } +} + +void container_printf_as_uint32_array(const container_t *c, uint8_t typecode, + uint32_t base) { + c = container_unwrap_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + bitset_container_printf_as_uint32_array(const_CAST_bitset(c), base); + return; + case ARRAY_CONTAINER_TYPE: + array_container_printf_as_uint32_array(const_CAST_array(c), base); + return; + case RUN_CONTAINER_TYPE: + run_container_printf_as_uint32_array(const_CAST_run(c), base); + return; + default: + roaring_unreachable; + } +} + +bool container_internal_validate(const container_t *container, uint8_t typecode, + const char **reason) { + if (container == NULL) { + *reason = "container is NULL"; + return false; + } + // Not using container_unwrap_shared because it asserts if shared containers + // are nested + if (typecode == SHARED_CONTAINER_TYPE) { + const shared_container_t *shared_container = + const_CAST_shared(container); + if (croaring_refcount_get(&shared_container->counter) == 0) { + *reason = "shared container has zero refcount"; + return false; + } + if (shared_container->typecode == SHARED_CONTAINER_TYPE) { + *reason = "shared container is nested"; + return false; + } + if (shared_container->container == NULL) { + *reason = "shared container has NULL container"; + return false; + } + container = shared_container->container; + typecode = shared_container->typecode; + } + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return bitset_container_validate(const_CAST_bitset(container), + reason); + case ARRAY_CONTAINER_TYPE: + return array_container_validate(const_CAST_array(container), + reason); + case RUN_CONTAINER_TYPE: + return run_container_validate(const_CAST_run(container), reason); + default: + *reason = "invalid typecode"; + return false; + } +} + +extern inline bool container_nonzero_cardinality(const container_t *c, + uint8_t typecode); + +extern inline int container_to_uint32_array(uint32_t *output, + const container_t *c, + uint8_t typecode, uint32_t base); + +extern inline container_t *container_add(container_t *c, uint16_t val, + uint8_t typecode, // !!! 2nd arg? + uint8_t *new_typecode); + +extern inline bool container_contains(const container_t *c, uint16_t val, + uint8_t typecode); // !!! 2nd arg? + +extern inline container_t *container_and(const container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type); + +extern inline container_t *container_or(const container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type); + +extern inline container_t *container_xor(const container_t *c1, uint8_t type1, + const container_t *c2, uint8_t type2, + uint8_t *result_type); + +container_t *get_copy_of_container(container_t *c, uint8_t *typecode, + bool copy_on_write) { + if (copy_on_write) { + shared_container_t *shared_container; + if (*typecode == SHARED_CONTAINER_TYPE) { + shared_container = CAST_shared(c); + croaring_refcount_inc(&shared_container->counter); + return shared_container; + } + assert(*typecode != SHARED_CONTAINER_TYPE); + + if ((shared_container = (shared_container_t *)roaring_malloc( + sizeof(shared_container_t))) == NULL) { + return NULL; + } + + shared_container->container = c; + shared_container->typecode = *typecode; + // At this point, we are creating new shared container + // so there should be no other references, and setting + // the counter to 2 - even non-atomically - is safe as + // long as the value is set before the return statement. + shared_container->counter = 2; + *typecode = SHARED_CONTAINER_TYPE; + + return shared_container; + } // copy_on_write + // otherwise, no copy on write... + const container_t *actual_container = container_unwrap_shared(c, typecode); + assert(*typecode != SHARED_CONTAINER_TYPE); + return container_clone(actual_container, *typecode); +} + +/** + * Copies a container, requires a typecode. This allocates new memory, caller + * is responsible for deallocation. + */ +container_t *container_clone(const container_t *c, uint8_t typecode) { + // We do not want to allow cloning of shared containers. + // c = container_unwrap_shared(c, &typecode); + switch (typecode) { + case BITSET_CONTAINER_TYPE: + return bitset_container_clone(const_CAST_bitset(c)); + case ARRAY_CONTAINER_TYPE: + return array_container_clone(const_CAST_array(c)); + case RUN_CONTAINER_TYPE: + return run_container_clone(const_CAST_run(c)); + case SHARED_CONTAINER_TYPE: + // Shared containers are not cloneable. Are you mixing COW and + // non-COW bitmaps? + return NULL; + default: + assert(false); + roaring_unreachable; + return NULL; + } +} + +container_t *shared_container_extract_copy(shared_container_t *sc, + uint8_t *typecode) { + assert(sc->typecode != SHARED_CONTAINER_TYPE); + *typecode = sc->typecode; + container_t *answer; + if (croaring_refcount_dec(&sc->counter)) { + answer = sc->container; + sc->container = NULL; // paranoid + roaring_free(sc); + } else { + answer = container_clone(sc->container, *typecode); + } + assert(*typecode != SHARED_CONTAINER_TYPE); + return answer; +} + +void shared_container_free(shared_container_t *container) { + if (croaring_refcount_dec(&container->counter)) { + assert(container->typecode != SHARED_CONTAINER_TYPE); + container_free(container->container, container->typecode); + container->container = NULL; // paranoid + roaring_free(container); + } +} + +extern inline container_t *container_not(const container_t *c1, uint8_t type1, + uint8_t *result_type); + +extern inline container_t *container_not_range(const container_t *c1, + uint8_t type1, + uint32_t range_start, + uint32_t range_end, + uint8_t *result_type); + +extern inline container_t *container_inot(container_t *c1, uint8_t type1, + uint8_t *result_type); + +extern inline container_t *container_inot_range(container_t *c1, uint8_t type1, + uint32_t range_start, + uint32_t range_end, + uint8_t *result_type); + +extern inline container_t *container_range_of_ones(uint32_t range_start, + uint32_t range_end, + uint8_t *result_type); + +// where are the correponding things for union and intersection?? +extern inline container_t *container_lazy_xor(const container_t *c1, + uint8_t type1, + const container_t *c2, + uint8_t type2, + uint8_t *result_type); + +extern inline container_t *container_lazy_ixor(container_t *c1, uint8_t type1, + const container_t *c2, + uint8_t type2, + uint8_t *result_type); + +extern inline container_t *container_andnot(const container_t *c1, + uint8_t type1, + const container_t *c2, + uint8_t type2, + uint8_t *result_type); + +roaring_container_iterator_t container_init_iterator(const container_t *c, + uint8_t typecode, + uint16_t *value) { + switch (typecode) { + case BITSET_CONTAINER_TYPE: { + const bitset_container_t *bc = const_CAST_bitset(c); + uint32_t wordindex = 0; + uint64_t word; + while ((word = bc->words[wordindex]) == 0) { + wordindex++; + } + // word is non-zero + int32_t index = wordindex * 64 + roaring_trailing_zeroes(word); + *value = index; + return ROARING_INIT_ROARING_CONTAINER_ITERATOR_T{ + .index = index, + }; + } + case ARRAY_CONTAINER_TYPE: { + const array_container_t *ac = const_CAST_array(c); + *value = ac->array[0]; + return ROARING_INIT_ROARING_CONTAINER_ITERATOR_T{ + .index = 0, + }; + } + case RUN_CONTAINER_TYPE: { + const run_container_t *rc = const_CAST_run(c); + *value = rc->runs[0].value; + return ROARING_INIT_ROARING_CONTAINER_ITERATOR_T{ + .index = 0, + }; + } + default: + assert(false); + roaring_unreachable; + return ROARING_INIT_ROARING_CONTAINER_ITERATOR_T{0}; + } +} + +roaring_container_iterator_t container_init_iterator_last(const container_t *c, + uint8_t typecode, + uint16_t *value) { + switch (typecode) { + case BITSET_CONTAINER_TYPE: { + const bitset_container_t *bc = const_CAST_bitset(c); + uint32_t wordindex = BITSET_CONTAINER_SIZE_IN_WORDS - 1; + uint64_t word; + while ((word = bc->words[wordindex]) == 0) { + wordindex--; + } + // word is non-zero + int32_t index = + wordindex * 64 + (63 - roaring_leading_zeroes(word)); + *value = index; + return ROARING_INIT_ROARING_CONTAINER_ITERATOR_T{ + .index = index, + }; + } + case ARRAY_CONTAINER_TYPE: { + const array_container_t *ac = const_CAST_array(c); + int32_t index = ac->cardinality - 1; + *value = ac->array[index]; + return ROARING_INIT_ROARING_CONTAINER_ITERATOR_T{ + .index = index, + }; + } + case RUN_CONTAINER_TYPE: { + const run_container_t *rc = const_CAST_run(c); + int32_t run_index = rc->n_runs - 1; + const rle16_t *last_run = &rc->runs[run_index]; + *value = last_run->value + last_run->length; + return ROARING_INIT_ROARING_CONTAINER_ITERATOR_T{ + .index = run_index, + }; + } + default: + assert(false); + roaring_unreachable; + return ROARING_INIT_ROARING_CONTAINER_ITERATOR_T{0}; + } +} + +bool container_iterator_next(const container_t *c, uint8_t typecode, + roaring_container_iterator_t *it, + uint16_t *value) { + switch (typecode) { + case BITSET_CONTAINER_TYPE: { + const bitset_container_t *bc = const_CAST_bitset(c); + it->index++; + + uint32_t wordindex = it->index / 64; + if (wordindex >= BITSET_CONTAINER_SIZE_IN_WORDS) { + return false; + } + + uint64_t word = + bc->words[wordindex] & (UINT64_MAX << (it->index % 64)); + // next part could be optimized/simplified + while (word == 0 && + (wordindex + 1 < BITSET_CONTAINER_SIZE_IN_WORDS)) { + wordindex++; + word = bc->words[wordindex]; + } + if (word != 0) { + it->index = wordindex * 64 + roaring_trailing_zeroes(word); + *value = it->index; + return true; + } + return false; + } + case ARRAY_CONTAINER_TYPE: { + const array_container_t *ac = const_CAST_array(c); + it->index++; + if (it->index < ac->cardinality) { + *value = ac->array[it->index]; + return true; + } + return false; + } + case RUN_CONTAINER_TYPE: { + if (*value == UINT16_MAX) { // Avoid overflow to zero + return false; + } + + const run_container_t *rc = const_CAST_run(c); + uint32_t limit = + rc->runs[it->index].value + rc->runs[it->index].length; + if (*value < limit) { + (*value)++; + return true; + } + + it->index++; + if (it->index < rc->n_runs) { + *value = rc->runs[it->index].value; + return true; + } + return false; + } + default: + assert(false); + roaring_unreachable; + return false; + } +} + +bool container_iterator_prev(const container_t *c, uint8_t typecode, + roaring_container_iterator_t *it, + uint16_t *value) { + switch (typecode) { + case BITSET_CONTAINER_TYPE: { + if (--it->index < 0) { + return false; + } + + const bitset_container_t *bc = const_CAST_bitset(c); + int32_t wordindex = it->index / 64; + uint64_t word = + bc->words[wordindex] & (UINT64_MAX >> (63 - (it->index % 64))); + + while (word == 0 && --wordindex >= 0) { + word = bc->words[wordindex]; + } + if (word == 0) { + return false; + } + + it->index = (wordindex * 64) + (63 - roaring_leading_zeroes(word)); + *value = it->index; + return true; + } + case ARRAY_CONTAINER_TYPE: { + if (--it->index < 0) { + return false; + } + const array_container_t *ac = const_CAST_array(c); + *value = ac->array[it->index]; + return true; + } + case RUN_CONTAINER_TYPE: { + if (*value == 0) { + return false; + } + + const run_container_t *rc = const_CAST_run(c); + (*value)--; + if (*value >= rc->runs[it->index].value) { + return true; + } + + if (--it->index < 0) { + return false; + } + + *value = rc->runs[it->index].value + rc->runs[it->index].length; + return true; + } + default: + assert(false); + roaring_unreachable; + return false; + } +} + +bool container_iterator_lower_bound(const container_t *c, uint8_t typecode, + roaring_container_iterator_t *it, + uint16_t *value_out, uint16_t val) { + if (val > container_maximum(c, typecode)) { + return false; + } + switch (typecode) { + case BITSET_CONTAINER_TYPE: { + const bitset_container_t *bc = const_CAST_bitset(c); + it->index = bitset_container_index_equalorlarger(bc, val); + *value_out = it->index; + return true; + } + case ARRAY_CONTAINER_TYPE: { + const array_container_t *ac = const_CAST_array(c); + it->index = array_container_index_equalorlarger(ac, val); + *value_out = ac->array[it->index]; + return true; + } + case RUN_CONTAINER_TYPE: { + const run_container_t *rc = const_CAST_run(c); + it->index = run_container_index_equalorlarger(rc, val); + if (rc->runs[it->index].value <= val) { + *value_out = val; + } else { + *value_out = rc->runs[it->index].value; + } + return true; + } + default: + assert(false); + roaring_unreachable; + return false; + } +} + +bool container_iterator_read_into_uint32(const container_t *c, uint8_t typecode, + roaring_container_iterator_t *it, + uint32_t high16, uint32_t *buf, + uint32_t count, uint32_t *consumed, + uint16_t *value_out) { + *consumed = 0; + if (count == 0) { + return false; + } + switch (typecode) { + case BITSET_CONTAINER_TYPE: { + const bitset_container_t *bc = const_CAST_bitset(c); + uint32_t wordindex = it->index / 64; + uint64_t word = + bc->words[wordindex] & (UINT64_MAX << (it->index % 64)); + do { + // Read set bits. + while (word != 0 && *consumed < count) { + *buf = high16 | + (wordindex * 64 + roaring_trailing_zeroes(word)); + word = word & (word - 1); + buf++; + (*consumed)++; + } + // Skip unset bits. + while (word == 0 && + wordindex + 1 < BITSET_CONTAINER_SIZE_IN_WORDS) { + wordindex++; + word = bc->words[wordindex]; + } + } while (word != 0 && *consumed < count); + + if (word != 0) { + it->index = wordindex * 64 + roaring_trailing_zeroes(word); + *value_out = it->index; + return true; + } + return false; + } + case ARRAY_CONTAINER_TYPE: { + const array_container_t *ac = const_CAST_array(c); + uint32_t num_values = + minimum_uint32(ac->cardinality - it->index, count); + for (uint32_t i = 0; i < num_values; i++) { + buf[i] = high16 | ac->array[it->index + i]; + } + *consumed += num_values; + it->index += num_values; + if (it->index < ac->cardinality) { + *value_out = ac->array[it->index]; + return true; + } + return false; + } + case RUN_CONTAINER_TYPE: { + const run_container_t *rc = const_CAST_run(c); + do { + uint32_t largest_run_value = + rc->runs[it->index].value + rc->runs[it->index].length; + uint32_t num_values = minimum_uint32( + largest_run_value - *value_out + 1, count - *consumed); + for (uint32_t i = 0; i < num_values; i++) { + buf[i] = high16 | (*value_out + i); + } + *value_out += num_values; + buf += num_values; + *consumed += num_values; + + // We check for `value == 0` because `it->value += num_values` + // can overflow when `value == UINT16_MAX`, and `count > + // length`. In this case `value` will overflow to 0. + if (*value_out > largest_run_value || *value_out == 0) { + it->index++; + if (it->index < rc->n_runs) { + *value_out = rc->runs[it->index].value; + } else { + return false; + } + } + } while (*consumed < count); + return true; + } + default: + assert(false); + roaring_unreachable; + return 0; + } +} + +bool container_iterator_read_into_uint64(const container_t *c, uint8_t typecode, + roaring_container_iterator_t *it, + uint64_t high48, uint64_t *buf, + uint32_t count, uint32_t *consumed, + uint16_t *value_out) { + *consumed = 0; + if (count == 0) { + return false; + } + switch (typecode) { + case BITSET_CONTAINER_TYPE: { + const bitset_container_t *bc = const_CAST_bitset(c); + uint32_t wordindex = it->index / 64; + uint64_t word = + bc->words[wordindex] & (UINT64_MAX << (it->index % 64)); + do { + // Read set bits. + while (word != 0 && *consumed < count) { + *buf = high48 | + (wordindex * 64 + roaring_trailing_zeroes(word)); + word = word & (word - 1); + buf++; + (*consumed)++; + } + // Skip unset bits. + while (word == 0 && + wordindex + 1 < BITSET_CONTAINER_SIZE_IN_WORDS) { + wordindex++; + word = bc->words[wordindex]; + } + } while (word != 0 && *consumed < count); + + if (word != 0) { + it->index = wordindex * 64 + roaring_trailing_zeroes(word); + *value_out = it->index; + return true; + } + return false; + } + case ARRAY_CONTAINER_TYPE: { + const array_container_t *ac = const_CAST_array(c); + uint32_t num_values = + minimum_uint32(ac->cardinality - it->index, count); + for (uint32_t i = 0; i < num_values; i++) { + buf[i] = high48 | ac->array[it->index + i]; + } + *consumed += num_values; + it->index += num_values; + if (it->index < ac->cardinality) { + *value_out = ac->array[it->index]; + return true; + } + return false; + } + case RUN_CONTAINER_TYPE: { + const run_container_t *rc = const_CAST_run(c); + do { + uint32_t largest_run_value = + rc->runs[it->index].value + rc->runs[it->index].length; + uint32_t num_values = minimum_uint32( + largest_run_value - *value_out + 1, count - *consumed); + for (uint32_t i = 0; i < num_values; i++) { + buf[i] = high48 | (*value_out + i); + } + *value_out += num_values; + buf += num_values; + *consumed += num_values; + + // We check for `value == 0` because `it->value += num_values` + // can overflow when `value == UINT16_MAX`, and `count > + // length`. In this case `value` will overflow to 0. + if (*value_out > largest_run_value || *value_out == 0) { + it->index++; + if (it->index < rc->n_runs) { + *value_out = rc->runs[it->index].value; + } else { + return false; + } + } + } while (*consumed < count); + return true; + } + default: + assert(false); + roaring_unreachable; + return 0; + } +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif + +#undef ROARING_INIT_ROARING_CONTAINER_ITERATOR_T diff --git a/contrib/libs/croaring/src/containers/convert.c b/contrib/libs/croaring/src/containers/convert.c new file mode 100644 index 000000000000..6cd31d34c332 --- /dev/null +++ b/contrib/libs/croaring/src/containers/convert.c @@ -0,0 +1,354 @@ +#include <stdio.h> + +#include <roaring/bitset_util.h> +#include <roaring/containers/containers.h> +#include <roaring/containers/convert.h> +#include <roaring/containers/perfparameters.h> + +#if CROARING_IS_X64 +#ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#error "CROARING_COMPILER_SUPPORTS_AVX512 needs to be defined." +#endif // CROARING_COMPILER_SUPPORTS_AVX512 +#endif + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +// file contains grubby stuff that must know impl. details of all container +// types. +bitset_container_t *bitset_container_from_array(const array_container_t *ac) { + bitset_container_t *ans = bitset_container_create(); + int limit = array_container_cardinality(ac); + for (int i = 0; i < limit; ++i) bitset_container_set(ans, ac->array[i]); + return ans; +} + +bitset_container_t *bitset_container_from_run(const run_container_t *arr) { + int card = run_container_cardinality(arr); + bitset_container_t *answer = bitset_container_create(); + for (int rlepos = 0; rlepos < arr->n_runs; ++rlepos) { + rle16_t vl = arr->runs[rlepos]; + bitset_set_lenrange(answer->words, vl.value, vl.length); + } + answer->cardinality = card; + return answer; +} + +array_container_t *array_container_from_run(const run_container_t *arr) { + array_container_t *answer = + array_container_create_given_capacity(run_container_cardinality(arr)); + answer->cardinality = 0; + for (int rlepos = 0; rlepos < arr->n_runs; ++rlepos) { + int run_start = arr->runs[rlepos].value; + int run_end = run_start + arr->runs[rlepos].length; + + for (int run_value = run_start; run_value <= run_end; ++run_value) { + answer->array[answer->cardinality++] = (uint16_t)run_value; + } + } + return answer; +} + +array_container_t *array_container_from_bitset(const bitset_container_t *bits) { + array_container_t *result = + array_container_create_given_capacity(bits->cardinality); + result->cardinality = bits->cardinality; +#if CROARING_IS_X64 +#if CROARING_COMPILER_SUPPORTS_AVX512 + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX512) { + bitset_extract_setbits_avx512_uint16( + bits->words, BITSET_CONTAINER_SIZE_IN_WORDS, result->array, + bits->cardinality, 0); + } else +#endif + { + // sse version ends up being slower here + // (bitset_extract_setbits_sse_uint16) + // because of the sparsity of the data + bitset_extract_setbits_uint16( + bits->words, BITSET_CONTAINER_SIZE_IN_WORDS, result->array, 0); + } +#else + // If the system is not x64, then we have no accelerated function. + bitset_extract_setbits_uint16(bits->words, BITSET_CONTAINER_SIZE_IN_WORDS, + result->array, 0); +#endif + + return result; +} + +/* assumes that container has adequate space. Run from [s,e] (inclusive) */ +static void add_run(run_container_t *rc, int s, int e) { + rc->runs[rc->n_runs].value = s; + rc->runs[rc->n_runs].length = e - s; + rc->n_runs++; +} + +run_container_t *run_container_from_array(const array_container_t *c) { + int32_t n_runs = array_container_number_of_runs(c); + run_container_t *answer = run_container_create_given_capacity(n_runs); + int prev = -2; + int run_start = -1; + int32_t card = c->cardinality; + if (card == 0) return answer; + for (int i = 0; i < card; ++i) { + const uint16_t cur_val = c->array[i]; + if (cur_val != prev + 1) { + // new run starts; flush old one, if any + if (run_start != -1) add_run(answer, run_start, prev); + run_start = cur_val; + } + prev = c->array[i]; + } + // now prev is the last seen value + add_run(answer, run_start, prev); + // assert(run_container_cardinality(answer) == c->cardinality); + return answer; +} + +/** + * Convert the runcontainer to either a Bitmap or an Array Container, depending + * on the cardinality. Frees the container. + * Allocates and returns new container, which caller is responsible for freeing. + * It does not free the run container. + */ +container_t *convert_to_bitset_or_array_container(run_container_t *rc, + int32_t card, + uint8_t *resulttype) { + if (card <= DEFAULT_MAX_SIZE) { + array_container_t *answer = array_container_create_given_capacity(card); + answer->cardinality = 0; + for (int rlepos = 0; rlepos < rc->n_runs; ++rlepos) { + uint16_t run_start = rc->runs[rlepos].value; + uint16_t run_end = run_start + rc->runs[rlepos].length; + for (uint16_t run_value = run_start; run_value < run_end; + ++run_value) { + answer->array[answer->cardinality++] = run_value; + } + answer->array[answer->cardinality++] = run_end; + } + assert(card == answer->cardinality); + *resulttype = ARRAY_CONTAINER_TYPE; + // run_container_free(r); + return answer; + } + bitset_container_t *answer = bitset_container_create(); + for (int rlepos = 0; rlepos < rc->n_runs; ++rlepos) { + uint16_t run_start = rc->runs[rlepos].value; + bitset_set_lenrange(answer->words, run_start, rc->runs[rlepos].length); + } + answer->cardinality = card; + *resulttype = BITSET_CONTAINER_TYPE; + // run_container_free(r); + return answer; +} + +/* Converts a run container to either an array or a bitset, IF it saves space. + */ +/* If a conversion occurs, the caller is responsible to free the original + * container and + * he becomes responsible to free the new one. */ +container_t *convert_run_to_efficient_container(run_container_t *c, + uint8_t *typecode_after) { + int32_t size_as_run_container = + run_container_serialized_size_in_bytes(c->n_runs); + + int32_t size_as_bitset_container = + bitset_container_serialized_size_in_bytes(); + int32_t card = run_container_cardinality(c); + int32_t size_as_array_container = + array_container_serialized_size_in_bytes(card); + + int32_t min_size_non_run = + size_as_bitset_container < size_as_array_container + ? size_as_bitset_container + : size_as_array_container; + if (size_as_run_container <= min_size_non_run) { // no conversion + *typecode_after = RUN_CONTAINER_TYPE; + return c; + } + if (card <= DEFAULT_MAX_SIZE) { + // to array + array_container_t *answer = array_container_create_given_capacity(card); + answer->cardinality = 0; + for (int rlepos = 0; rlepos < c->n_runs; ++rlepos) { + int run_start = c->runs[rlepos].value; + int run_end = run_start + c->runs[rlepos].length; + + for (int run_value = run_start; run_value <= run_end; ++run_value) { + answer->array[answer->cardinality++] = (uint16_t)run_value; + } + } + *typecode_after = ARRAY_CONTAINER_TYPE; + return answer; + } + + // else to bitset + bitset_container_t *answer = bitset_container_create(); + + for (int rlepos = 0; rlepos < c->n_runs; ++rlepos) { + int start = c->runs[rlepos].value; + int end = start + c->runs[rlepos].length; + bitset_set_range(answer->words, start, end + 1); + } + answer->cardinality = card; + *typecode_after = BITSET_CONTAINER_TYPE; + return answer; +} + +// like convert_run_to_efficient_container but frees the old result if needed +container_t *convert_run_to_efficient_container_and_free( + run_container_t *c, uint8_t *typecode_after) { + container_t *answer = convert_run_to_efficient_container(c, typecode_after); + if (answer != c) run_container_free(c); + return answer; +} + +/* once converted, the original container is disposed here, rather than + in roaring_array +*/ + +// TODO: split into run- array- and bitset- subfunctions for sanity; +// a few function calls won't really matter. + +container_t *convert_run_optimize(container_t *c, uint8_t typecode_original, + uint8_t *typecode_after) { + if (typecode_original == RUN_CONTAINER_TYPE) { + container_t *newc = + convert_run_to_efficient_container(CAST_run(c), typecode_after); + if (newc != c) { + container_free(c, typecode_original); + } + return newc; + } else if (typecode_original == ARRAY_CONTAINER_TYPE) { + // it might need to be converted to a run container. + array_container_t *c_qua_array = CAST_array(c); + int32_t n_runs = array_container_number_of_runs(c_qua_array); + int32_t size_as_run_container = + run_container_serialized_size_in_bytes(n_runs); + int32_t card = array_container_cardinality(c_qua_array); + int32_t size_as_array_container = + array_container_serialized_size_in_bytes(card); + + if (size_as_run_container >= size_as_array_container) { + *typecode_after = ARRAY_CONTAINER_TYPE; + return c; + } + // else convert array to run container + run_container_t *answer = run_container_create_given_capacity(n_runs); + int prev = -2; + int run_start = -1; + + assert(card > 0); + for (int i = 0; i < card; ++i) { + uint16_t cur_val = c_qua_array->array[i]; + if (cur_val != prev + 1) { + // new run starts; flush old one, if any + if (run_start != -1) add_run(answer, run_start, prev); + run_start = cur_val; + } + prev = c_qua_array->array[i]; + } + assert(run_start >= 0); + // now prev is the last seen value + add_run(answer, run_start, prev); + *typecode_after = RUN_CONTAINER_TYPE; + array_container_free(c_qua_array); + return answer; + } else if (typecode_original == + BITSET_CONTAINER_TYPE) { // run conversions on bitset + // does bitset need conversion to run? + bitset_container_t *c_qua_bitset = CAST_bitset(c); + int32_t n_runs = bitset_container_number_of_runs(c_qua_bitset); + int32_t size_as_run_container = + run_container_serialized_size_in_bytes(n_runs); + int32_t size_as_bitset_container = + bitset_container_serialized_size_in_bytes(); + + if (size_as_bitset_container <= size_as_run_container) { + // no conversion needed. + *typecode_after = BITSET_CONTAINER_TYPE; + return c; + } + // bitset to runcontainer (ported from Java RunContainer( + // BitmapContainer bc, int nbrRuns)) + assert(n_runs > 0); // no empty bitmaps + run_container_t *answer = run_container_create_given_capacity(n_runs); + + int long_ctr = 0; + uint64_t cur_word = c_qua_bitset->words[0]; + while (true) { + while (cur_word == UINT64_C(0) && + long_ctr < BITSET_CONTAINER_SIZE_IN_WORDS - 1) + cur_word = c_qua_bitset->words[++long_ctr]; + + if (cur_word == UINT64_C(0)) { + bitset_container_free(c_qua_bitset); + *typecode_after = RUN_CONTAINER_TYPE; + return answer; + } + + int local_run_start = roaring_trailing_zeroes(cur_word); + int run_start = local_run_start + 64 * long_ctr; + uint64_t cur_word_with_1s = cur_word | (cur_word - 1); + + int run_end = 0; + while (cur_word_with_1s == UINT64_C(0xFFFFFFFFFFFFFFFF) && + long_ctr < BITSET_CONTAINER_SIZE_IN_WORDS - 1) + cur_word_with_1s = c_qua_bitset->words[++long_ctr]; + + if (cur_word_with_1s == UINT64_C(0xFFFFFFFFFFFFFFFF)) { + run_end = 64 + long_ctr * 64; // exclusive, I guess + add_run(answer, run_start, run_end - 1); + bitset_container_free(c_qua_bitset); + *typecode_after = RUN_CONTAINER_TYPE; + return answer; + } + int local_run_end = roaring_trailing_zeroes(~cur_word_with_1s); + run_end = local_run_end + long_ctr * 64; + add_run(answer, run_start, run_end - 1); + cur_word = cur_word_with_1s & (cur_word_with_1s + 1); + } + return answer; + } else { + assert(false); + roaring_unreachable; + return NULL; + } +} + +container_t *container_from_run_range(const run_container_t *run, uint32_t min, + uint32_t max, uint8_t *typecode_after) { + // We expect most of the time to end up with a bitset container + bitset_container_t *bitset = bitset_container_create(); + *typecode_after = BITSET_CONTAINER_TYPE; + int32_t union_cardinality = 0; + for (int32_t i = 0; i < run->n_runs; ++i) { + uint32_t rle_min = run->runs[i].value; + uint32_t rle_max = rle_min + run->runs[i].length; + bitset_set_lenrange(bitset->words, rle_min, rle_max - rle_min); + union_cardinality += run->runs[i].length + 1; + } + union_cardinality += max - min + 1; + union_cardinality -= + bitset_lenrange_cardinality(bitset->words, min, max - min); + bitset_set_lenrange(bitset->words, min, max - min); + bitset->cardinality = union_cardinality; + if (bitset->cardinality <= DEFAULT_MAX_SIZE) { + // we need to convert to an array container + array_container_t *array = array_container_from_bitset(bitset); + *typecode_after = ARRAY_CONTAINER_TYPE; + bitset_container_free(bitset); + return array; + } + return bitset; +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/containers/mixed_andnot.c b/contrib/libs/croaring/src/containers/mixed_andnot.c new file mode 100644 index 000000000000..8641e16b95bb --- /dev/null +++ b/contrib/libs/croaring/src/containers/mixed_andnot.c @@ -0,0 +1,522 @@ +/* + * mixed_andnot.c. More methods since operation is not symmetric, + * except no "wide" andnot , so no lazy options motivated. + */ + +#include <assert.h> +#include <string.h> + +#include <roaring/array_util.h> +#include <roaring/bitset_util.h> +#include <roaring/containers/containers.h> +#include <roaring/containers/convert.h> +#include <roaring/containers/mixed_andnot.h> +#include <roaring/containers/perfparameters.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst, a valid array container that could be the same as dst.*/ +void array_bitset_container_andnot(const array_container_t *src_1, + const bitset_container_t *src_2, + array_container_t *dst) { + // follows Java implementation as of June 2016 + if (dst->capacity < src_1->cardinality) { + array_container_grow(dst, src_1->cardinality, false); + } + int32_t newcard = 0; + const int32_t origcard = src_1->cardinality; + for (int i = 0; i < origcard; ++i) { + uint16_t key = src_1->array[i]; + dst->array[newcard] = key; + newcard += 1 - bitset_container_contains(src_2, key); + } + dst->cardinality = newcard; +} + +/* Compute the andnot of src_1 and src_2 and write the result to + * src_1 */ + +void array_bitset_container_iandnot(array_container_t *src_1, + const bitset_container_t *src_2) { + array_bitset_container_andnot(src_1, src_2, src_1); +} + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst, which does not initially have a valid container. + * Return true for a bitset result; false for array + */ + +bool bitset_array_container_andnot(const bitset_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + // Java did this directly, but we have option of asm or avx + bitset_container_t *result = bitset_container_create(); + bitset_container_copy(src_1, result); + result->cardinality = + (int32_t)bitset_clear_list(result->words, (uint64_t)result->cardinality, + src_2->array, (uint64_t)src_2->cardinality); + + // do required type conversions. + if (result->cardinality <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(result); + bitset_container_free(result); + return false; + } + *dst = result; + return true; +} + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +bool bitset_array_container_iandnot(bitset_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + *dst = src_1; + src_1->cardinality = + (int32_t)bitset_clear_list(src_1->words, (uint64_t)src_1->cardinality, + src_2->array, (uint64_t)src_2->cardinality); + + if (src_1->cardinality <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(src_1); + bitset_container_free(src_1); + return false; // not bitset + } else + return true; +} + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst. Result may be either a bitset or an array container + * (returns "result is bitset"). dst does not initially have + * any container, but becomes either a bitset container (return + * result true) or an array container. + */ + +bool run_bitset_container_andnot(const run_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + // follows the Java implementation as of June 2016 + int card = run_container_cardinality(src_1); + if (card <= DEFAULT_MAX_SIZE) { + // must be an array + array_container_t *answer = array_container_create_given_capacity(card); + answer->cardinality = 0; + for (int32_t rlepos = 0; rlepos < src_1->n_runs; ++rlepos) { + rle16_t rle = src_1->runs[rlepos]; + for (int run_value = rle.value; run_value <= rle.value + rle.length; + ++run_value) { + if (!bitset_container_get(src_2, (uint16_t)run_value)) { + answer->array[answer->cardinality++] = (uint16_t)run_value; + } + } + } + *dst = answer; + return false; + } else { // we guess it will be a bitset, though have to check guess when + // done + bitset_container_t *answer = bitset_container_clone(src_2); + + uint32_t last_pos = 0; + for (int32_t rlepos = 0; rlepos < src_1->n_runs; ++rlepos) { + rle16_t rle = src_1->runs[rlepos]; + + uint32_t start = rle.value; + uint32_t end = start + rle.length + 1; + bitset_reset_range(answer->words, last_pos, start); + bitset_flip_range(answer->words, start, end); + last_pos = end; + } + bitset_reset_range(answer->words, last_pos, (uint32_t)(1 << 16)); + + answer->cardinality = bitset_container_compute_cardinality(answer); + + if (answer->cardinality <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(answer); + bitset_container_free(answer); + return false; // not bitset + } + *dst = answer; + return true; // bitset + } +} + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst. Result may be either a bitset or an array container + * (returns "result is bitset"). dst does not initially have + * any container, but becomes either a bitset container (return + * result true) or an array container. + */ + +bool run_bitset_container_iandnot(run_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + // dummy implementation + bool ans = run_bitset_container_andnot(src_1, src_2, dst); + run_container_free(src_1); + return ans; +} + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst. Result may be either a bitset or an array container + * (returns "result is bitset"). dst does not initially have + * any container, but becomes either a bitset container (return + * result true) or an array container. + */ + +bool bitset_run_container_andnot(const bitset_container_t *src_1, + const run_container_t *src_2, + container_t **dst) { + // follows Java implementation + bitset_container_t *result = bitset_container_create(); + + bitset_container_copy(src_1, result); + for (int32_t rlepos = 0; rlepos < src_2->n_runs; ++rlepos) { + rle16_t rle = src_2->runs[rlepos]; + bitset_reset_range(result->words, rle.value, + rle.value + rle.length + UINT32_C(1)); + } + result->cardinality = bitset_container_compute_cardinality(result); + + if (result->cardinality <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(result); + bitset_container_free(result); + return false; // not bitset + } + *dst = result; + return true; // bitset +} + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +bool bitset_run_container_iandnot(bitset_container_t *src_1, + const run_container_t *src_2, + container_t **dst) { + *dst = src_1; + + for (int32_t rlepos = 0; rlepos < src_2->n_runs; ++rlepos) { + rle16_t rle = src_2->runs[rlepos]; + bitset_reset_range(src_1->words, rle.value, + rle.value + rle.length + UINT32_C(1)); + } + src_1->cardinality = bitset_container_compute_cardinality(src_1); + + if (src_1->cardinality <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(src_1); + bitset_container_free(src_1); + return false; // not bitset + } else + return true; +} + +/* helper. a_out must be a valid array container with adequate capacity. + * Returns the cardinality of the output container. Partly Based on Java + * implementation Util.unsignedDifference. + * + * TODO: Util.unsignedDifference does not use advanceUntil. Is it cheaper + * to avoid advanceUntil? + */ + +static int run_array_array_subtract(const run_container_t *rc, + const array_container_t *a_in, + array_container_t *a_out) { + int out_card = 0; + int32_t in_array_pos = + -1; // since advanceUntil always assumes we start the search AFTER this + + for (int rlepos = 0; rlepos < rc->n_runs; rlepos++) { + int32_t start = rc->runs[rlepos].value; + int32_t end = start + rc->runs[rlepos].length + 1; + + in_array_pos = advanceUntil(a_in->array, in_array_pos, + a_in->cardinality, (uint16_t)start); + + if (in_array_pos >= a_in->cardinality) { // run has no items subtracted + for (int32_t i = start; i < end; ++i) + a_out->array[out_card++] = (uint16_t)i; + } else { + uint16_t next_nonincluded = a_in->array[in_array_pos]; + if (next_nonincluded >= end) { + // another case when run goes unaltered + for (int32_t i = start; i < end; ++i) + a_out->array[out_card++] = (uint16_t)i; + in_array_pos--; // ensure we see this item again if necessary + } else { + for (int32_t i = start; i < end; ++i) + if (i != next_nonincluded) + a_out->array[out_card++] = (uint16_t)i; + else // 0 should ensure we don't match + next_nonincluded = + (in_array_pos + 1 >= a_in->cardinality) + ? 0 + : a_in->array[++in_array_pos]; + in_array_pos--; // see again + } + } + } + return out_card; +} + +/* dst does not indicate a valid container initially. Eventually it + * can become any type of container. + */ + +int run_array_container_andnot(const run_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + // follows the Java impl as of June 2016 + + int card = run_container_cardinality(src_1); + const int arbitrary_threshold = 32; + + if (card <= arbitrary_threshold) { + if (src_2->cardinality == 0) { + *dst = run_container_clone(src_1); + return RUN_CONTAINER_TYPE; + } + // Java's "lazyandNot.toEfficientContainer" thing + run_container_t *answer = run_container_create_given_capacity( + card + array_container_cardinality(src_2)); + + int rlepos = 0; + int xrlepos = 0; // "x" is src_2 + rle16_t rle = src_1->runs[rlepos]; + int32_t start = rle.value; + int32_t end = start + rle.length + 1; + int32_t xstart = src_2->array[xrlepos]; + + while ((rlepos < src_1->n_runs) && (xrlepos < src_2->cardinality)) { + if (end <= xstart) { + // output the first run + answer->runs[answer->n_runs++] = + CROARING_MAKE_RLE16(start, end - start - 1); + rlepos++; + if (rlepos < src_1->n_runs) { + start = src_1->runs[rlepos].value; + end = start + src_1->runs[rlepos].length + 1; + } + } else if (xstart + 1 <= start) { + // exit the second run + xrlepos++; + if (xrlepos < src_2->cardinality) { + xstart = src_2->array[xrlepos]; + } + } else { + if (start < xstart) { + answer->runs[answer->n_runs++] = + CROARING_MAKE_RLE16(start, xstart - start - 1); + } + if (xstart + 1 < end) { + start = xstart + 1; + } else { + rlepos++; + if (rlepos < src_1->n_runs) { + start = src_1->runs[rlepos].value; + end = start + src_1->runs[rlepos].length + 1; + } + } + } + } + if (rlepos < src_1->n_runs) { + answer->runs[answer->n_runs++] = + CROARING_MAKE_RLE16(start, end - start - 1); + rlepos++; + if (rlepos < src_1->n_runs) { + memcpy(answer->runs + answer->n_runs, src_1->runs + rlepos, + (src_1->n_runs - rlepos) * sizeof(rle16_t)); + answer->n_runs += (src_1->n_runs - rlepos); + } + } + uint8_t return_type; + *dst = convert_run_to_efficient_container(answer, &return_type); + if (answer != *dst) run_container_free(answer); + return return_type; + } + // else it's a bitmap or array + + if (card <= DEFAULT_MAX_SIZE) { + array_container_t *ac = array_container_create_given_capacity(card); + // nb Java code used a generic iterator-based merge to compute + // difference + ac->cardinality = run_array_array_subtract(src_1, src_2, ac); + *dst = ac; + return ARRAY_CONTAINER_TYPE; + } + bitset_container_t *ans = bitset_container_from_run(src_1); + bool result_is_bitset = bitset_array_container_iandnot(ans, src_2, dst); + return (result_is_bitset ? BITSET_CONTAINER_TYPE : ARRAY_CONTAINER_TYPE); +} + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +int run_array_container_iandnot(run_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + // dummy implementation same as June 2016 Java + int ans = run_array_container_andnot(src_1, src_2, dst); + run_container_free(src_1); + return ans; +} + +/* dst must be a valid array container, allowed to be src_1 */ + +void array_run_container_andnot(const array_container_t *src_1, + const run_container_t *src_2, + array_container_t *dst) { + // basically following Java impl as of June 2016 + if (src_1->cardinality > dst->capacity) { + array_container_grow(dst, src_1->cardinality, false); + } + + if (src_2->n_runs == 0) { + memmove(dst->array, src_1->array, + sizeof(uint16_t) * src_1->cardinality); + dst->cardinality = src_1->cardinality; + return; + } + int32_t run_start = src_2->runs[0].value; + int32_t run_end = run_start + src_2->runs[0].length; + int which_run = 0; + + uint16_t val = 0; + int dest_card = 0; + for (int i = 0; i < src_1->cardinality; ++i) { + val = src_1->array[i]; + if (val < run_start) + dst->array[dest_card++] = val; + else if (val <= run_end) { + ; // omitted item + } else { + do { + if (which_run + 1 < src_2->n_runs) { + ++which_run; + run_start = src_2->runs[which_run].value; + run_end = run_start + src_2->runs[which_run].length; + + } else + run_start = run_end = (1 << 16) + 1; + } while (val > run_end); + --i; + } + } + dst->cardinality = dest_card; +} + +/* dst does not indicate a valid container initially. Eventually it + * can become any kind of container. + */ + +void array_run_container_iandnot(array_container_t *src_1, + const run_container_t *src_2) { + array_run_container_andnot(src_1, src_2, src_1); +} + +/* dst does not indicate a valid container initially. Eventually it + * can become any kind of container. + */ + +int run_run_container_andnot(const run_container_t *src_1, + const run_container_t *src_2, container_t **dst) { + run_container_t *ans = run_container_create(); + run_container_andnot(src_1, src_2, ans); + uint8_t typecode_after; + *dst = convert_run_to_efficient_container_and_free(ans, &typecode_after); + return typecode_after; +} + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +int run_run_container_iandnot(run_container_t *src_1, + const run_container_t *src_2, container_t **dst) { + // following Java impl as of June 2016 (dummy) + int ans = run_run_container_andnot(src_1, src_2, dst); + run_container_free(src_1); + return ans; +} + +/* + * dst is a valid array container and may be the same as src_1 + */ + +void array_array_container_andnot(const array_container_t *src_1, + const array_container_t *src_2, + array_container_t *dst) { + array_container_andnot(src_1, src_2, dst); +} + +/* inplace array-array andnot will always be able to reuse the space of + * src_1 */ +void array_array_container_iandnot(array_container_t *src_1, + const array_container_t *src_2) { + array_container_andnot(src_1, src_2, src_1); +} + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). Return value is + * "dst is a bitset" + */ + +bool bitset_bitset_container_andnot(const bitset_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + bitset_container_t *ans = bitset_container_create(); + int card = bitset_container_andnot(src_1, src_2, ans); + if (card <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(ans); + bitset_container_free(ans); + return false; // not bitset + } else { + *dst = ans; + return true; + } +} + +/* Compute the andnot of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +bool bitset_bitset_container_iandnot(bitset_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + int card = bitset_container_andnot(src_1, src_2, src_1); + if (card <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(src_1); + bitset_container_free(src_1); + return false; // not bitset + } else { + *dst = src_1; + return true; + } +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/containers/mixed_equal.c b/contrib/libs/croaring/src/containers/mixed_equal.c new file mode 100644 index 000000000000..761431e9014e --- /dev/null +++ b/contrib/libs/croaring/src/containers/mixed_equal.c @@ -0,0 +1,88 @@ +#include <roaring/containers/mixed_equal.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +bool array_container_equal_bitset(const array_container_t* container1, + const bitset_container_t* container2) { + if (container2->cardinality != BITSET_UNKNOWN_CARDINALITY) { + if (container2->cardinality != container1->cardinality) { + return false; + } + } + int32_t pos = 0; + for (int32_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; ++i) { + uint64_t w = container2->words[i]; + while (w != 0) { + uint64_t t = w & (~w + 1); + uint16_t r = i * 64 + roaring_trailing_zeroes(w); + if (pos >= container1->cardinality) { + return false; + } + if (container1->array[pos] != r) { + return false; + } + ++pos; + w ^= t; + } + } + return (pos == container1->cardinality); +} + +bool run_container_equals_array(const run_container_t* container1, + const array_container_t* container2) { + if (run_container_cardinality(container1) != container2->cardinality) + return false; + int32_t pos = 0; + for (int i = 0; i < container1->n_runs; ++i) { + const uint32_t run_start = container1->runs[i].value; + const uint32_t le = container1->runs[i].length; + + if (container2->array[pos] != run_start) { + return false; + } + + if (container2->array[pos + le] != run_start + le) { + return false; + } + + pos += le + 1; + } + return true; +} + +bool run_container_equals_bitset(const run_container_t* container1, + const bitset_container_t* container2) { + int run_card = run_container_cardinality(container1); + int bitset_card = (container2->cardinality != BITSET_UNKNOWN_CARDINALITY) + ? container2->cardinality + : bitset_container_compute_cardinality(container2); + if (bitset_card != run_card) { + return false; + } + + for (int32_t i = 0; i < container1->n_runs; i++) { + uint32_t begin = container1->runs[i].value; + if (container1->runs[i].length) { + uint32_t end = begin + container1->runs[i].length + 1; + if (!bitset_container_contains_range(container2, begin, end)) { + return false; + } + } else { + if (!bitset_container_contains(container2, begin)) { + return false; + } + } + } + + return true; +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/containers/mixed_intersection.c b/contrib/libs/croaring/src/containers/mixed_intersection.c new file mode 100644 index 000000000000..56efe210b845 --- /dev/null +++ b/contrib/libs/croaring/src/containers/mixed_intersection.c @@ -0,0 +1,351 @@ +/* + * mixed_intersection.c + * + */ + +#include <roaring/array_util.h> +#include <roaring/bitset_util.h> +#include <roaring/containers/convert.h> +#include <roaring/containers/mixed_intersection.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* Compute the intersection of src_1 and src_2 and write the result to + * dst. */ +void array_bitset_container_intersection(const array_container_t *src_1, + const bitset_container_t *src_2, + array_container_t *dst) { + if (dst->capacity < src_1->cardinality) { + array_container_grow(dst, src_1->cardinality, false); + } + int32_t newcard = 0; // dst could be src_1 + const int32_t origcard = src_1->cardinality; + for (int i = 0; i < origcard; ++i) { + uint16_t key = src_1->array[i]; + // this branchless approach is much faster... + dst->array[newcard] = key; + newcard += bitset_container_contains(src_2, key); + /** + * we could do it this way instead... + * if (bitset_container_contains(src_2, key)) { + * dst->array[newcard++] = key; + * } + * but if the result is unpredictible, the processor generates + * many mispredicted branches. + * Difference can be huge (from 3 cycles when predictible all the way + * to 16 cycles when unpredictible. + * See + * https://github.com/lemire/Code-used-on-Daniel-Lemire-s-blog/blob/master/extra/bitset/c/arraybitsetintersection.c + */ + } + dst->cardinality = newcard; +} + +/* Compute the size of the intersection of src_1 and src_2. */ +int array_bitset_container_intersection_cardinality( + const array_container_t *src_1, const bitset_container_t *src_2) { + int32_t newcard = 0; + const int32_t origcard = src_1->cardinality; + for (int i = 0; i < origcard; ++i) { + uint16_t key = src_1->array[i]; + newcard += bitset_container_contains(src_2, key); + } + return newcard; +} + +bool array_bitset_container_intersect(const array_container_t *src_1, + const bitset_container_t *src_2) { + const int32_t origcard = src_1->cardinality; + for (int i = 0; i < origcard; ++i) { + uint16_t key = src_1->array[i]; + if (bitset_container_contains(src_2, key)) return true; + } + return false; +} + +/* Compute the intersection of src_1 and src_2 and write the result to + * dst. It is allowed for dst to be equal to src_1. We assume that dst is a + * valid container. */ +void array_run_container_intersection(const array_container_t *src_1, + const run_container_t *src_2, + array_container_t *dst) { + if (run_container_is_full(src_2)) { + if (dst != src_1) array_container_copy(src_1, dst); + return; + } + if (dst->capacity < src_1->cardinality) { + array_container_grow(dst, src_1->cardinality, false); + } + if (src_2->n_runs == 0) { + return; + } + int32_t rlepos = 0; + int32_t arraypos = 0; + rle16_t rle = src_2->runs[rlepos]; + int32_t newcard = 0; + while (arraypos < src_1->cardinality) { + const uint16_t arrayval = src_1->array[arraypos]; + while (rle.value + rle.length < + arrayval) { // this will frequently be false + ++rlepos; + if (rlepos == src_2->n_runs) { + dst->cardinality = newcard; + return; // we are done + } + rle = src_2->runs[rlepos]; + } + if (rle.value > arrayval) { + arraypos = advanceUntil(src_1->array, arraypos, src_1->cardinality, + rle.value); + } else { + dst->array[newcard] = arrayval; + newcard++; + arraypos++; + } + } + dst->cardinality = newcard; +} + +/* Compute the intersection of src_1 and src_2 and write the result to + * *dst. If the result is true then the result is a bitset_container_t + * otherwise is a array_container_t. If *dst == src_2, an in-place processing + * is attempted.*/ +bool run_bitset_container_intersection(const run_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + if (run_container_is_full(src_1)) { + if (*dst != src_2) *dst = bitset_container_clone(src_2); + return true; + } + int32_t card = run_container_cardinality(src_1); + if (card <= DEFAULT_MAX_SIZE) { + // result can only be an array (assuming that we never make a + // RunContainer) + if (card > src_2->cardinality) { + card = src_2->cardinality; + } + array_container_t *answer = array_container_create_given_capacity(card); + *dst = answer; + if (*dst == NULL) { + return false; + } + for (int32_t rlepos = 0; rlepos < src_1->n_runs; ++rlepos) { + rle16_t rle = src_1->runs[rlepos]; + uint32_t endofrun = (uint32_t)rle.value + rle.length; + for (uint32_t runValue = rle.value; runValue <= endofrun; + ++runValue) { + answer->array[answer->cardinality] = (uint16_t)runValue; + answer->cardinality += + bitset_container_contains(src_2, runValue); + } + } + return false; + } + if (*dst == src_2) { // we attempt in-place + bitset_container_t *answer = CAST_bitset(*dst); + uint32_t start = 0; + for (int32_t rlepos = 0; rlepos < src_1->n_runs; ++rlepos) { + const rle16_t rle = src_1->runs[rlepos]; + uint32_t end = rle.value; + bitset_reset_range(src_2->words, start, end); + + start = end + rle.length + 1; + } + bitset_reset_range(src_2->words, start, UINT32_C(1) << 16); + answer->cardinality = bitset_container_compute_cardinality(answer); + if (src_2->cardinality > DEFAULT_MAX_SIZE) { + return true; + } else { + array_container_t *newanswer = array_container_from_bitset(src_2); + if (newanswer == NULL) { + *dst = NULL; + return false; + } + *dst = newanswer; + return false; + } + } else { // no inplace + // we expect the answer to be a bitmap (if we are lucky) + bitset_container_t *answer = bitset_container_clone(src_2); + + *dst = answer; + if (answer == NULL) { + return true; + } + uint32_t start = 0; + for (int32_t rlepos = 0; rlepos < src_1->n_runs; ++rlepos) { + const rle16_t rle = src_1->runs[rlepos]; + uint32_t end = rle.value; + bitset_reset_range(answer->words, start, end); + start = end + rle.length + 1; + } + bitset_reset_range(answer->words, start, UINT32_C(1) << 16); + answer->cardinality = bitset_container_compute_cardinality(answer); + + if (answer->cardinality > DEFAULT_MAX_SIZE) { + return true; + } else { + array_container_t *newanswer = array_container_from_bitset(answer); + bitset_container_free(CAST_bitset(*dst)); + if (newanswer == NULL) { + *dst = NULL; + return false; + } + *dst = newanswer; + return false; + } + } +} + +/* Compute the size of the intersection between src_1 and src_2 . */ +int array_run_container_intersection_cardinality(const array_container_t *src_1, + const run_container_t *src_2) { + if (run_container_is_full(src_2)) { + return src_1->cardinality; + } + if (src_2->n_runs == 0) { + return 0; + } + int32_t rlepos = 0; + int32_t arraypos = 0; + rle16_t rle = src_2->runs[rlepos]; + int32_t newcard = 0; + while (arraypos < src_1->cardinality) { + const uint16_t arrayval = src_1->array[arraypos]; + while (rle.value + rle.length < + arrayval) { // this will frequently be false + ++rlepos; + if (rlepos == src_2->n_runs) { + return newcard; // we are done + } + rle = src_2->runs[rlepos]; + } + if (rle.value > arrayval) { + arraypos = advanceUntil(src_1->array, arraypos, src_1->cardinality, + rle.value); + } else { + newcard++; + arraypos++; + } + } + return newcard; +} + +/* Compute the intersection between src_1 and src_2 + **/ +int run_bitset_container_intersection_cardinality( + const run_container_t *src_1, const bitset_container_t *src_2) { + if (run_container_is_full(src_1)) { + return bitset_container_cardinality(src_2); + } + int answer = 0; + for (int32_t rlepos = 0; rlepos < src_1->n_runs; ++rlepos) { + rle16_t rle = src_1->runs[rlepos]; + answer += + bitset_lenrange_cardinality(src_2->words, rle.value, rle.length); + } + return answer; +} + +bool array_run_container_intersect(const array_container_t *src_1, + const run_container_t *src_2) { + if (run_container_is_full(src_2)) { + return !array_container_empty(src_1); + } + if (src_2->n_runs == 0) { + return false; + } + int32_t rlepos = 0; + int32_t arraypos = 0; + rle16_t rle = src_2->runs[rlepos]; + while (arraypos < src_1->cardinality) { + const uint16_t arrayval = src_1->array[arraypos]; + while (rle.value + rle.length < + arrayval) { // this will frequently be false + ++rlepos; + if (rlepos == src_2->n_runs) { + return false; // we are done + } + rle = src_2->runs[rlepos]; + } + if (rle.value > arrayval) { + arraypos = advanceUntil(src_1->array, arraypos, src_1->cardinality, + rle.value); + } else { + return true; + } + } + return false; +} + +/* Compute the intersection between src_1 and src_2 + **/ +bool run_bitset_container_intersect(const run_container_t *src_1, + const bitset_container_t *src_2) { + if (run_container_is_full(src_1)) { + return !bitset_container_empty(src_2); + } + for (int32_t rlepos = 0; rlepos < src_1->n_runs; ++rlepos) { + rle16_t rle = src_1->runs[rlepos]; + if (!bitset_lenrange_empty(src_2->words, rle.value, rle.length)) + return true; + } + return false; +} + +/* + * Compute the intersection between src_1 and src_2 and write the result + * to *dst. If the return function is true, the result is a bitset_container_t + * otherwise is a array_container_t. + */ +bool bitset_bitset_container_intersection(const bitset_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + const int newCardinality = bitset_container_and_justcard(src_1, src_2); + if (newCardinality > DEFAULT_MAX_SIZE) { + *dst = bitset_container_create(); + if (*dst != NULL) { + bitset_container_and_nocard(src_1, src_2, CAST_bitset(*dst)); + CAST_bitset(*dst)->cardinality = newCardinality; + } + return true; // it is a bitset + } + *dst = array_container_create_given_capacity(newCardinality); + if (*dst != NULL) { + CAST_array(*dst)->cardinality = newCardinality; + bitset_extract_intersection_setbits_uint16( + src_1->words, src_2->words, BITSET_CONTAINER_SIZE_IN_WORDS, + CAST_array(*dst)->array, 0); + } + return false; // not a bitset +} + +bool bitset_bitset_container_intersection_inplace( + bitset_container_t *src_1, const bitset_container_t *src_2, + container_t **dst) { + const int newCardinality = bitset_container_and_justcard(src_1, src_2); + if (newCardinality > DEFAULT_MAX_SIZE) { + *dst = src_1; + bitset_container_and_nocard(src_1, src_2, src_1); + CAST_bitset(*dst)->cardinality = newCardinality; + return true; // it is a bitset + } + *dst = array_container_create_given_capacity(newCardinality); + if (*dst != NULL) { + CAST_array(*dst)->cardinality = newCardinality; + bitset_extract_intersection_setbits_uint16( + src_1->words, src_2->words, BITSET_CONTAINER_SIZE_IN_WORDS, + CAST_array(*dst)->array, 0); + } + return false; // not a bitset +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/containers/mixed_negation.c b/contrib/libs/croaring/src/containers/mixed_negation.c new file mode 100644 index 000000000000..0ed354a837bd --- /dev/null +++ b/contrib/libs/croaring/src/containers/mixed_negation.c @@ -0,0 +1,354 @@ +/* + * mixed_negation.c + * + */ + +#include <assert.h> +#include <string.h> + +#include <roaring/array_util.h> +#include <roaring/bitset_util.h> +#include <roaring/containers/containers.h> +#include <roaring/containers/convert.h> +#include <roaring/containers/mixed_negation.h> +#include <roaring/containers/run.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +// TODO: make simplified and optimized negation code across +// the full range. + +/* Negation across the entire range of the container. + * Compute the negation of src and write the result + * to *dst. The complement of a + * sufficiently sparse set will always be dense and a hence a bitmap +' * We assume that dst is pre-allocated and a valid bitset container + * There can be no in-place version. + */ +void array_container_negation(const array_container_t *src, + bitset_container_t *dst) { + uint64_t card = UINT64_C(1 << 16); + bitset_container_set_all(dst); + + if (src->cardinality == 0) { + return; + } + + dst->cardinality = (int32_t)bitset_clear_list(dst->words, card, src->array, + (uint64_t)src->cardinality); +} + +/* Negation across the entire range of the container + * Compute the negation of src and write the result + * to *dst. A true return value indicates a bitset result, + * otherwise the result is an array container. + * We assume that dst is not pre-allocated. In + * case of failure, *dst will be NULL. + */ +bool bitset_container_negation(const bitset_container_t *src, + container_t **dst) { + return bitset_container_negation_range(src, 0, (1 << 16), dst); +} + +/* inplace version */ +/* + * Same as bitset_container_negation except that if the output is to + * be a + * bitset_container_t, then src is modified and no allocation is made. + * If the output is to be an array_container_t, then caller is responsible + * to free the container. + * In all cases, the result is in *dst. + */ +bool bitset_container_negation_inplace(bitset_container_t *src, + container_t **dst) { + return bitset_container_negation_range_inplace(src, 0, (1 << 16), dst); +} + +/* Negation across the entire range of container + * Compute the negation of src and write the result + * to *dst. Return values are the *_TYPECODES as defined * in containers.h + * We assume that dst is not pre-allocated. In + * case of failure, *dst will be NULL. + */ +int run_container_negation(const run_container_t *src, container_t **dst) { + return run_container_negation_range(src, 0, (1 << 16), dst); +} + +/* + * Same as run_container_negation except that if the output is to + * be a + * run_container_t, and has the capacity to hold the result, + * then src is modified and no allocation is made. + * In all cases, the result is in *dst. + */ +int run_container_negation_inplace(run_container_t *src, container_t **dst) { + return run_container_negation_range_inplace(src, 0, (1 << 16), dst); +} + +/* Negation across a range of the container. + * Compute the negation of src and write the result + * to *dst. Returns true if the result is a bitset container + * and false for an array container. *dst is not preallocated. + */ +bool array_container_negation_range(const array_container_t *src, + const int range_start, const int range_end, + container_t **dst) { + /* close port of the Java implementation */ + if (range_start >= range_end) { + *dst = array_container_clone(src); + return false; + } + + int32_t start_index = + binarySearch(src->array, src->cardinality, (uint16_t)range_start); + if (start_index < 0) start_index = -start_index - 1; + + int32_t last_index = + binarySearch(src->array, src->cardinality, (uint16_t)(range_end - 1)); + if (last_index < 0) last_index = -last_index - 2; + + const int32_t current_values_in_range = last_index - start_index + 1; + const int32_t span_to_be_flipped = range_end - range_start; + const int32_t new_values_in_range = + span_to_be_flipped - current_values_in_range; + const int32_t cardinality_change = + new_values_in_range - current_values_in_range; + const int32_t new_cardinality = src->cardinality + cardinality_change; + + if (new_cardinality > DEFAULT_MAX_SIZE) { + bitset_container_t *temp = bitset_container_from_array(src); + bitset_flip_range(temp->words, (uint32_t)range_start, + (uint32_t)range_end); + temp->cardinality = new_cardinality; + *dst = temp; + return true; + } + + array_container_t *arr = + array_container_create_given_capacity(new_cardinality); + *dst = (container_t *)arr; + if (new_cardinality == 0) { + arr->cardinality = new_cardinality; + return false; // we are done. + } + // copy stuff before the active area + memcpy(arr->array, src->array, start_index * sizeof(uint16_t)); + + // work on the range + int32_t out_pos = start_index, in_pos = start_index; + int32_t val_in_range = range_start; + for (; val_in_range < range_end && in_pos <= last_index; ++val_in_range) { + if ((uint16_t)val_in_range != src->array[in_pos]) { + arr->array[out_pos++] = (uint16_t)val_in_range; + } else { + ++in_pos; + } + } + for (; val_in_range < range_end; ++val_in_range) + arr->array[out_pos++] = (uint16_t)val_in_range; + + // content after the active range + memcpy(arr->array + out_pos, src->array + (last_index + 1), + (src->cardinality - (last_index + 1)) * sizeof(uint16_t)); + arr->cardinality = new_cardinality; + return false; +} + +/* Even when the result would fit, it is unclear how to make an + * inplace version without inefficient copying. + */ + +bool array_container_negation_range_inplace(array_container_t *src, + const int range_start, + const int range_end, + container_t **dst) { + bool ans = array_container_negation_range(src, range_start, range_end, dst); + // TODO : try a real inplace version + array_container_free(src); + return ans; +} + +/* Negation across a range of the container + * Compute the negation of src and write the result + * to *dst. A true return value indicates a bitset result, + * otherwise the result is an array container. + * We assume that dst is not pre-allocated. In + * case of failure, *dst will be NULL. + */ +bool bitset_container_negation_range(const bitset_container_t *src, + const int range_start, const int range_end, + container_t **dst) { + // TODO maybe consider density-based estimate + // and sometimes build result directly as array, with + // conversion back to bitset if wrong. Or determine + // actual result cardinality, then go directly for the known final cont. + + // keep computation using bitsets as long as possible. + bitset_container_t *t = bitset_container_clone(src); + bitset_flip_range(t->words, (uint32_t)range_start, (uint32_t)range_end); + t->cardinality = bitset_container_compute_cardinality(t); + + if (t->cardinality > DEFAULT_MAX_SIZE) { + *dst = t; + return true; + } else { + *dst = array_container_from_bitset(t); + bitset_container_free(t); + return false; + } +} + +/* inplace version */ +/* + * Same as bitset_container_negation except that if the output is to + * be a + * bitset_container_t, then src is modified and no allocation is made. + * If the output is to be an array_container_t, then caller is responsible + * to free the container. + * In all cases, the result is in *dst. + */ +bool bitset_container_negation_range_inplace(bitset_container_t *src, + const int range_start, + const int range_end, + container_t **dst) { + bitset_flip_range(src->words, (uint32_t)range_start, (uint32_t)range_end); + src->cardinality = bitset_container_compute_cardinality(src); + if (src->cardinality > DEFAULT_MAX_SIZE) { + *dst = src; + return true; + } + *dst = array_container_from_bitset(src); + bitset_container_free(src); + return false; +} + +/* Negation across a range of container + * Compute the negation of src and write the result + * to *dst. Return values are the *_TYPECODES as defined * in containers.h + * We assume that dst is not pre-allocated. In + * case of failure, *dst will be NULL. + */ +int run_container_negation_range(const run_container_t *src, + const int range_start, const int range_end, + container_t **dst) { + uint8_t return_typecode; + + // follows the Java implementation + if (range_end <= range_start) { + *dst = run_container_clone(src); + return RUN_CONTAINER_TYPE; + } + + run_container_t *ans = run_container_create_given_capacity( + src->n_runs + 1); // src->n_runs + 1); + int k = 0; + for (; k < src->n_runs && src->runs[k].value < range_start; ++k) { + ans->runs[k] = src->runs[k]; + ans->n_runs++; + } + + run_container_smart_append_exclusive( + ans, (uint16_t)range_start, (uint16_t)(range_end - range_start - 1)); + + for (; k < src->n_runs; ++k) { + run_container_smart_append_exclusive(ans, src->runs[k].value, + src->runs[k].length); + } + + *dst = convert_run_to_efficient_container(ans, &return_typecode); + if (return_typecode != RUN_CONTAINER_TYPE) run_container_free(ans); + + return return_typecode; +} + +/* + * Same as run_container_negation except that if the output is to + * be a + * run_container_t, and has the capacity to hold the result, + * then src is modified and no allocation is made. + * In all cases, the result is in *dst. + */ +int run_container_negation_range_inplace(run_container_t *src, + const int range_start, + const int range_end, + container_t **dst) { + uint8_t return_typecode; + + if (range_end <= range_start) { + *dst = src; + return RUN_CONTAINER_TYPE; + } + + // TODO: efficient special case when range is 0 to 65535 inclusive + + if (src->capacity == src->n_runs) { + // no excess room. More checking to see if result can fit + bool last_val_before_range = false; + bool first_val_in_range = false; + bool last_val_in_range = false; + bool first_val_past_range = false; + + if (range_start > 0) + last_val_before_range = + run_container_contains(src, (uint16_t)(range_start - 1)); + first_val_in_range = run_container_contains(src, (uint16_t)range_start); + + if (last_val_before_range == first_val_in_range) { + last_val_in_range = + run_container_contains(src, (uint16_t)(range_end - 1)); + if (range_end != 0x10000) + first_val_past_range = + run_container_contains(src, (uint16_t)range_end); + + if (last_val_in_range == + first_val_past_range) { // no space for inplace + int ans = run_container_negation_range(src, range_start, + range_end, dst); + run_container_free(src); + return ans; + } + } + } + // all other cases: result will fit + + run_container_t *ans = src; + int my_nbr_runs = src->n_runs; + + ans->n_runs = 0; + int k = 0; + for (; (k < my_nbr_runs) && (src->runs[k].value < range_start); ++k) { + // ans->runs[k] = src->runs[k]; (would be self-copy) + ans->n_runs++; + } + + // as with Java implementation, use locals to give self a buffer of depth 1 + rle16_t buffered = CROARING_MAKE_RLE16(0, 0); + rle16_t next = buffered; + if (k < my_nbr_runs) buffered = src->runs[k]; + + run_container_smart_append_exclusive( + ans, (uint16_t)range_start, (uint16_t)(range_end - range_start - 1)); + + for (; k < my_nbr_runs; ++k) { + if (k + 1 < my_nbr_runs) next = src->runs[k + 1]; + + run_container_smart_append_exclusive(ans, buffered.value, + buffered.length); + buffered = next; + } + + *dst = convert_run_to_efficient_container(ans, &return_typecode); + if (return_typecode != RUN_CONTAINER_TYPE) run_container_free(ans); + + return return_typecode; +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/containers/mixed_subset.c b/contrib/libs/croaring/src/containers/mixed_subset.c new file mode 100644 index 000000000000..1fcf2f063dea --- /dev/null +++ b/contrib/libs/croaring/src/containers/mixed_subset.c @@ -0,0 +1,145 @@ +#include <roaring/array_util.h> +#include <roaring/containers/mixed_subset.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +bool array_container_is_subset_bitset(const array_container_t* container1, + const bitset_container_t* container2) { + if (container2->cardinality != BITSET_UNKNOWN_CARDINALITY) { + if (container2->cardinality < container1->cardinality) { + return false; + } + } + for (int i = 0; i < container1->cardinality; ++i) { + if (!bitset_container_contains(container2, container1->array[i])) { + return false; + } + } + return true; +} + +bool run_container_is_subset_array(const run_container_t* container1, + const array_container_t* container2) { + if (run_container_cardinality(container1) > container2->cardinality) + return false; + int32_t start_pos = -1, stop_pos = -1; + for (int i = 0; i < container1->n_runs; ++i) { + int32_t start = container1->runs[i].value; + int32_t stop = start + container1->runs[i].length; + start_pos = advanceUntil(container2->array, stop_pos, + container2->cardinality, start); + stop_pos = advanceUntil(container2->array, stop_pos, + container2->cardinality, stop); + if (stop_pos == container2->cardinality) { + return false; + } else if (stop_pos - start_pos != stop - start || + container2->array[start_pos] != start || + container2->array[stop_pos] != stop) { + return false; + } + } + return true; +} + +bool array_container_is_subset_run(const array_container_t* container1, + const run_container_t* container2) { + if (container1->cardinality > run_container_cardinality(container2)) + return false; + int i_array = 0, i_run = 0; + while (i_array < container1->cardinality && i_run < container2->n_runs) { + uint32_t start = container2->runs[i_run].value; + uint32_t stop = start + container2->runs[i_run].length; + if (container1->array[i_array] < start) { + return false; + } else if (container1->array[i_array] > stop) { + i_run++; + } else { // the value of the array is in the run + i_array++; + } + } + if (i_array == container1->cardinality) { + return true; + } else { + return false; + } +} + +bool run_container_is_subset_bitset(const run_container_t* container1, + const bitset_container_t* container2) { + // todo: this code could be much faster + if (container2->cardinality != BITSET_UNKNOWN_CARDINALITY) { + if (container2->cardinality < run_container_cardinality(container1)) { + return false; + } + } else { + int32_t card = bitset_container_compute_cardinality( + container2); // modify container2? + if (card < run_container_cardinality(container1)) { + return false; + } + } + for (int i = 0; i < container1->n_runs; ++i) { + uint32_t run_start = container1->runs[i].value; + uint32_t le = container1->runs[i].length; + for (uint32_t j = run_start; j <= run_start + le; ++j) { + if (!bitset_container_contains(container2, j)) { + return false; + } + } + } + return true; +} + +bool bitset_container_is_subset_run(const bitset_container_t* container1, + const run_container_t* container2) { + // todo: this code could be much faster + if (container1->cardinality != BITSET_UNKNOWN_CARDINALITY) { + if (container1->cardinality > run_container_cardinality(container2)) { + return false; + } + } + int32_t i_bitset = 0, i_run = 0; + while (i_bitset < BITSET_CONTAINER_SIZE_IN_WORDS && + i_run < container2->n_runs) { + uint64_t w = container1->words[i_bitset]; + while (w != 0 && i_run < container2->n_runs) { + uint32_t start = container2->runs[i_run].value; + uint32_t stop = start + container2->runs[i_run].length; + uint64_t t = w & (~w + 1); + uint16_t r = i_bitset * 64 + roaring_trailing_zeroes(w); + if (r < start) { + return false; + } else if (r > stop) { + i_run++; + continue; + } else { + w ^= t; + } + } + if (w == 0) { + i_bitset++; + } else { + return false; + } + } + if (i_bitset < BITSET_CONTAINER_SIZE_IN_WORDS) { + // terminated iterating on the run containers, check that rest of bitset + // is empty + for (; i_bitset < BITSET_CONTAINER_SIZE_IN_WORDS; i_bitset++) { + if (container1->words[i_bitset] != 0) { + return false; + } + } + } + return true; +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/containers/mixed_union.c b/contrib/libs/croaring/src/containers/mixed_union.c new file mode 100644 index 000000000000..9fe315395ae1 --- /dev/null +++ b/contrib/libs/croaring/src/containers/mixed_union.c @@ -0,0 +1,372 @@ +/* + * mixed_union.c + * + */ + +#include <assert.h> +#include <string.h> + +#include <roaring/bitset_util.h> +#include <roaring/containers/convert.h> +#include <roaring/containers/mixed_union.h> +#include <roaring/containers/perfparameters.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* Compute the union of src_1 and src_2 and write the result to + * dst. */ +void array_bitset_container_union(const array_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst) { + if (src_2 != dst) bitset_container_copy(src_2, dst); + dst->cardinality = (int32_t)bitset_set_list_withcard( + dst->words, dst->cardinality, src_1->array, src_1->cardinality); +} + +/* Compute the union of src_1 and src_2 and write the result to + * dst. It is allowed for src_2 to be dst. This version does not + * update the cardinality of dst (it is set to BITSET_UNKNOWN_CARDINALITY). */ +void array_bitset_container_lazy_union(const array_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst) { + if (src_2 != dst) bitset_container_copy(src_2, dst); + bitset_set_list(dst->words, src_1->array, src_1->cardinality); + dst->cardinality = BITSET_UNKNOWN_CARDINALITY; +} + +void run_bitset_container_union(const run_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst) { + assert(!run_container_is_full(src_1)); // catch this case upstream + if (src_2 != dst) bitset_container_copy(src_2, dst); + for (int32_t rlepos = 0; rlepos < src_1->n_runs; ++rlepos) { + rle16_t rle = src_1->runs[rlepos]; + bitset_set_lenrange(dst->words, rle.value, rle.length); + } + dst->cardinality = bitset_container_compute_cardinality(dst); +} + +void run_bitset_container_lazy_union(const run_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst) { + assert(!run_container_is_full(src_1)); // catch this case upstream + if (src_2 != dst) bitset_container_copy(src_2, dst); + for (int32_t rlepos = 0; rlepos < src_1->n_runs; ++rlepos) { + rle16_t rle = src_1->runs[rlepos]; + bitset_set_lenrange(dst->words, rle.value, rle.length); + } + dst->cardinality = BITSET_UNKNOWN_CARDINALITY; +} + +// why do we leave the result as a run container?? +void array_run_container_union(const array_container_t *src_1, + const run_container_t *src_2, + run_container_t *dst) { + if (run_container_is_full(src_2)) { + run_container_copy(src_2, dst); + return; + } + // TODO: see whether the "2*" is spurious + run_container_grow(dst, 2 * (src_1->cardinality + src_2->n_runs), false); + int32_t rlepos = 0; + int32_t arraypos = 0; + rle16_t previousrle; + if (src_2->runs[rlepos].value <= src_1->array[arraypos]) { + previousrle = run_container_append_first(dst, src_2->runs[rlepos]); + rlepos++; + } else { + previousrle = + run_container_append_value_first(dst, src_1->array[arraypos]); + arraypos++; + } + while ((rlepos < src_2->n_runs) && (arraypos < src_1->cardinality)) { + if (src_2->runs[rlepos].value <= src_1->array[arraypos]) { + run_container_append(dst, src_2->runs[rlepos], &previousrle); + rlepos++; + } else { + run_container_append_value(dst, src_1->array[arraypos], + &previousrle); + arraypos++; + } + } + if (arraypos < src_1->cardinality) { + while (arraypos < src_1->cardinality) { + run_container_append_value(dst, src_1->array[arraypos], + &previousrle); + arraypos++; + } + } else { + while (rlepos < src_2->n_runs) { + run_container_append(dst, src_2->runs[rlepos], &previousrle); + rlepos++; + } + } +} + +void array_run_container_inplace_union(const array_container_t *src_1, + run_container_t *src_2) { + if (run_container_is_full(src_2)) { + return; + } + const int32_t maxoutput = src_1->cardinality + src_2->n_runs; + const int32_t neededcapacity = maxoutput + src_2->n_runs; + if (src_2->capacity < neededcapacity) + run_container_grow(src_2, neededcapacity, true); + memmove(src_2->runs + maxoutput, src_2->runs, + src_2->n_runs * sizeof(rle16_t)); + rle16_t *inputsrc2 = src_2->runs + maxoutput; + int32_t rlepos = 0; + int32_t arraypos = 0; + int src2nruns = src_2->n_runs; + src_2->n_runs = 0; + + rle16_t previousrle; + + if (inputsrc2[rlepos].value <= src_1->array[arraypos]) { + previousrle = run_container_append_first(src_2, inputsrc2[rlepos]); + rlepos++; + } else { + previousrle = + run_container_append_value_first(src_2, src_1->array[arraypos]); + arraypos++; + } + + while ((rlepos < src2nruns) && (arraypos < src_1->cardinality)) { + if (inputsrc2[rlepos].value <= src_1->array[arraypos]) { + run_container_append(src_2, inputsrc2[rlepos], &previousrle); + rlepos++; + } else { + run_container_append_value(src_2, src_1->array[arraypos], + &previousrle); + arraypos++; + } + } + if (arraypos < src_1->cardinality) { + while (arraypos < src_1->cardinality) { + run_container_append_value(src_2, src_1->array[arraypos], + &previousrle); + arraypos++; + } + } else { + while (rlepos < src2nruns) { + run_container_append(src_2, inputsrc2[rlepos], &previousrle); + rlepos++; + } + } +} + +bool array_array_container_union(const array_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + int totalCardinality = src_1->cardinality + src_2->cardinality; + if (totalCardinality <= DEFAULT_MAX_SIZE) { + *dst = array_container_create_given_capacity(totalCardinality); + if (*dst != NULL) { + array_container_union(src_1, src_2, CAST_array(*dst)); + } else { + return true; // otherwise failure won't be caught + } + return false; // not a bitset + } + *dst = bitset_container_create(); + bool returnval = true; // expect a bitset + if (*dst != NULL) { + bitset_container_t *ourbitset = CAST_bitset(*dst); + bitset_set_list(ourbitset->words, src_1->array, src_1->cardinality); + ourbitset->cardinality = (int32_t)bitset_set_list_withcard( + ourbitset->words, src_1->cardinality, src_2->array, + src_2->cardinality); + if (ourbitset->cardinality <= DEFAULT_MAX_SIZE) { + // need to convert! + *dst = array_container_from_bitset(ourbitset); + bitset_container_free(ourbitset); + returnval = false; // not going to be a bitset + } + } + return returnval; +} + +bool array_array_container_inplace_union(array_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + int totalCardinality = src_1->cardinality + src_2->cardinality; + *dst = NULL; + if (totalCardinality <= DEFAULT_MAX_SIZE) { + if (src_1->capacity < totalCardinality) { + *dst = array_container_create_given_capacity( + 2 * totalCardinality); // be purposefully generous + if (*dst != NULL) { + array_container_union(src_1, src_2, CAST_array(*dst)); + } else { + return true; // otherwise failure won't be caught + } + return false; // not a bitset + } else { + memmove(src_1->array + src_2->cardinality, src_1->array, + src_1->cardinality * sizeof(uint16_t)); + // In theory, we could use fast_union_uint16, but it is unsafe. It + // fails with Intel compilers in particular. + // https://github.com/RoaringBitmap/CRoaring/pull/452 + // See report https://github.com/RoaringBitmap/CRoaring/issues/476 + src_1->cardinality = (int32_t)union_uint16( + src_1->array + src_2->cardinality, src_1->cardinality, + src_2->array, src_2->cardinality, src_1->array); + return false; // not a bitset + } + } + *dst = bitset_container_create(); + bool returnval = true; // expect a bitset + if (*dst != NULL) { + bitset_container_t *ourbitset = CAST_bitset(*dst); + bitset_set_list(ourbitset->words, src_1->array, src_1->cardinality); + ourbitset->cardinality = (int32_t)bitset_set_list_withcard( + ourbitset->words, src_1->cardinality, src_2->array, + src_2->cardinality); + if (ourbitset->cardinality <= DEFAULT_MAX_SIZE) { + // need to convert! + if (src_1->capacity < ourbitset->cardinality) { + array_container_grow(src_1, ourbitset->cardinality, false); + } + + bitset_extract_setbits_uint16(ourbitset->words, + BITSET_CONTAINER_SIZE_IN_WORDS, + src_1->array, 0); + src_1->cardinality = ourbitset->cardinality; + *dst = src_1; + bitset_container_free(ourbitset); + returnval = false; // not going to be a bitset + } + } + return returnval; +} + +bool array_array_container_lazy_union(const array_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + int totalCardinality = src_1->cardinality + src_2->cardinality; + // + // We assume that operations involving bitset containers will be faster than + // operations involving solely array containers, except maybe when array + // containers are small. Indeed, for example, it is cheap to compute the + // union between an array and a bitset container, generally more so than + // between a large array and another array. So it is advantageous to favour + // bitset containers during the computation. Of course, if we convert array + // containers eagerly to bitset containers, we may later need to revert the + // bitset containers to array containerr to satisfy the Roaring format + // requirements, but such one-time conversions at the end may not be overly + // expensive. We arrived to this design based on extensive benchmarking. + // + if (totalCardinality <= ARRAY_LAZY_LOWERBOUND) { + *dst = array_container_create_given_capacity(totalCardinality); + if (*dst != NULL) { + array_container_union(src_1, src_2, CAST_array(*dst)); + } else { + return true; // otherwise failure won't be caught + } + return false; // not a bitset + } + *dst = bitset_container_create(); + bool returnval = true; // expect a bitset + if (*dst != NULL) { + bitset_container_t *ourbitset = CAST_bitset(*dst); + bitset_set_list(ourbitset->words, src_1->array, src_1->cardinality); + bitset_set_list(ourbitset->words, src_2->array, src_2->cardinality); + ourbitset->cardinality = BITSET_UNKNOWN_CARDINALITY; + } + return returnval; +} + +bool array_array_container_lazy_inplace_union(array_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + int totalCardinality = src_1->cardinality + src_2->cardinality; + *dst = NULL; + // + // We assume that operations involving bitset containers will be faster than + // operations involving solely array containers, except maybe when array + // containers are small. Indeed, for example, it is cheap to compute the + // union between an array and a bitset container, generally more so than + // between a large array and another array. So it is advantageous to favour + // bitset containers during the computation. Of course, if we convert array + // containers eagerly to bitset containers, we may later need to revert the + // bitset containers to array containerr to satisfy the Roaring format + // requirements, but such one-time conversions at the end may not be overly + // expensive. We arrived to this design based on extensive benchmarking. + // + if (totalCardinality <= ARRAY_LAZY_LOWERBOUND) { + if (src_1->capacity < totalCardinality) { + *dst = array_container_create_given_capacity( + 2 * totalCardinality); // be purposefully generous + if (*dst != NULL) { + array_container_union(src_1, src_2, CAST_array(*dst)); + } else { + return true; // otherwise failure won't be caught + } + return false; // not a bitset + } else { + memmove(src_1->array + src_2->cardinality, src_1->array, + src_1->cardinality * sizeof(uint16_t)); + /* + Next line is safe: + + We just need to focus on the reading and writing performed on + array1. In `union_vector16`, both vectorized and scalar code still + obey the basic rule: read from two inputs, do the union, and then + write the output. + + Let's say the length(cardinality) of input2 is L2: + ``` + |<- L2 ->| + array1: [output--- |input 1---|---] + array2: [input 2---] + ``` + Let's define 3 __m128i pointers, `pos1` starts from `input1`, + `pos2` starts from `input2`, these 2 point at the next byte to + read, `out` starts from `output`, pointing at the next byte to + overwrite. + ``` + array1: [output--- |input 1---|---] + ^ ^ + out pos1 + array2: [input 2---] + ^ + pos2 + ``` + The union output always contains less or equal number of elements + than all inputs added, so we have: + ``` + out <= pos1 + pos2 + ``` + therefore: + ``` + out <= pos1 + L2 + ``` + which means you will not overwrite data beyond pos1, so the data + haven't read is safe, and we don't care the data already read. + */ + src_1->cardinality = (int32_t)fast_union_uint16( + src_1->array + src_2->cardinality, src_1->cardinality, + src_2->array, src_2->cardinality, src_1->array); + return false; // not a bitset + } + } + *dst = bitset_container_create(); + bool returnval = true; // expect a bitset + if (*dst != NULL) { + bitset_container_t *ourbitset = CAST_bitset(*dst); + bitset_set_list(ourbitset->words, src_1->array, src_1->cardinality); + bitset_set_list(ourbitset->words, src_2->array, src_2->cardinality); + ourbitset->cardinality = BITSET_UNKNOWN_CARDINALITY; + } + return returnval; +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/containers/mixed_xor.c b/contrib/libs/croaring/src/containers/mixed_xor.c new file mode 100644 index 000000000000..ad23aa336647 --- /dev/null +++ b/contrib/libs/croaring/src/containers/mixed_xor.c @@ -0,0 +1,385 @@ +/* + * mixed_xor.c + */ + +#include <assert.h> +#include <string.h> + +#include <roaring/bitset_util.h> +#include <roaring/containers/containers.h> +#include <roaring/containers/convert.h> +#include <roaring/containers/mixed_xor.h> +#include <roaring/containers/perfparameters.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +/* Compute the xor of src_1 and src_2 and write the result to + * dst (which has no container initially). + * Result is true iff dst is a bitset */ +bool array_bitset_container_xor(const array_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + bitset_container_t *result = bitset_container_create(); + bitset_container_copy(src_2, result); + result->cardinality = (int32_t)bitset_flip_list_withcard( + result->words, result->cardinality, src_1->array, src_1->cardinality); + + // do required type conversions. + if (result->cardinality <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(result); + bitset_container_free(result); + return false; // not bitset + } + *dst = result; + return true; // bitset +} + +/* Compute the xor of src_1 and src_2 and write the result to + * dst. It is allowed for src_2 to be dst. This version does not + * update the cardinality of dst (it is set to BITSET_UNKNOWN_CARDINALITY). + */ + +void array_bitset_container_lazy_xor(const array_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst) { + if (src_2 != dst) bitset_container_copy(src_2, dst); + bitset_flip_list(dst->words, src_1->array, src_1->cardinality); + dst->cardinality = BITSET_UNKNOWN_CARDINALITY; +} + +/* Compute the xor of src_1 and src_2 and write the result to + * dst. Result may be either a bitset or an array container + * (returns "result is bitset"). dst does not initially have + * any container, but becomes either a bitset container (return + * result true) or an array container. + */ + +bool run_bitset_container_xor(const run_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + bitset_container_t *result = bitset_container_create(); + + bitset_container_copy(src_2, result); + for (int32_t rlepos = 0; rlepos < src_1->n_runs; ++rlepos) { + rle16_t rle = src_1->runs[rlepos]; + bitset_flip_range(result->words, rle.value, + rle.value + rle.length + UINT32_C(1)); + } + result->cardinality = bitset_container_compute_cardinality(result); + + if (result->cardinality <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(result); + bitset_container_free(result); + return false; // not bitset + } + *dst = result; + return true; // bitset +} + +/* lazy xor. Dst is initialized and may be equal to src_2. + * Result is left as a bitset container, even if actual + * cardinality would dictate an array container. + */ + +void run_bitset_container_lazy_xor(const run_container_t *src_1, + const bitset_container_t *src_2, + bitset_container_t *dst) { + if (src_2 != dst) bitset_container_copy(src_2, dst); + for (int32_t rlepos = 0; rlepos < src_1->n_runs; ++rlepos) { + rle16_t rle = src_1->runs[rlepos]; + bitset_flip_range(dst->words, rle.value, + rle.value + rle.length + UINT32_C(1)); + } + dst->cardinality = BITSET_UNKNOWN_CARDINALITY; +} + +/* dst does not indicate a valid container initially. Eventually it + * can become any kind of container. + */ + +int array_run_container_xor(const array_container_t *src_1, + const run_container_t *src_2, container_t **dst) { + // semi following Java XOR implementation as of May 2016 + // the C OR implementation works quite differently and can return a run + // container + // TODO could optimize for full run containers. + + // use of lazy following Java impl. + const int arbitrary_threshold = 32; + if (src_1->cardinality < arbitrary_threshold) { + run_container_t *ans = run_container_create(); + array_run_container_lazy_xor(src_1, src_2, ans); // keeps runs. + uint8_t typecode_after; + *dst = + convert_run_to_efficient_container_and_free(ans, &typecode_after); + return typecode_after; + } + + int card = run_container_cardinality(src_2); + if (card <= DEFAULT_MAX_SIZE) { + // Java implementation works with the array, xoring the run elements via + // iterator + array_container_t *temp = array_container_from_run(src_2); + bool ret_is_bitset = array_array_container_xor(temp, src_1, dst); + array_container_free(temp); + return ret_is_bitset ? BITSET_CONTAINER_TYPE : ARRAY_CONTAINER_TYPE; + + } else { // guess that it will end up as a bitset + bitset_container_t *result = bitset_container_from_run(src_2); + bool is_bitset = bitset_array_container_ixor(result, src_1, dst); + // any necessary type conversion has been done by the ixor + int retval = (is_bitset ? BITSET_CONTAINER_TYPE : ARRAY_CONTAINER_TYPE); + return retval; + } +} + +/* Dst is a valid run container. (Can it be src_2? Let's say not.) + * Leaves result as run container, even if other options are + * smaller. + */ + +void array_run_container_lazy_xor(const array_container_t *src_1, + const run_container_t *src_2, + run_container_t *dst) { + run_container_grow(dst, src_1->cardinality + src_2->n_runs, false); + int32_t rlepos = 0; + int32_t arraypos = 0; + dst->n_runs = 0; + + while ((rlepos < src_2->n_runs) && (arraypos < src_1->cardinality)) { + if (src_2->runs[rlepos].value <= src_1->array[arraypos]) { + run_container_smart_append_exclusive(dst, src_2->runs[rlepos].value, + src_2->runs[rlepos].length); + rlepos++; + } else { + run_container_smart_append_exclusive(dst, src_1->array[arraypos], + 0); + arraypos++; + } + } + while (arraypos < src_1->cardinality) { + run_container_smart_append_exclusive(dst, src_1->array[arraypos], 0); + arraypos++; + } + while (rlepos < src_2->n_runs) { + run_container_smart_append_exclusive(dst, src_2->runs[rlepos].value, + src_2->runs[rlepos].length); + rlepos++; + } +} + +/* dst does not indicate a valid container initially. Eventually it + * can become any kind of container. + */ + +int run_run_container_xor(const run_container_t *src_1, + const run_container_t *src_2, container_t **dst) { + run_container_t *ans = run_container_create(); + run_container_xor(src_1, src_2, ans); + uint8_t typecode_after; + *dst = convert_run_to_efficient_container_and_free(ans, &typecode_after); + return typecode_after; +} + +/* + * Java implementation (as of May 2016) for array_run, run_run + * and bitset_run don't do anything different for inplace. + * Could adopt the mixed_union.c approach instead (ie, using + * smart_append_exclusive) + * + */ + +bool array_array_container_xor(const array_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + int totalCardinality = + src_1->cardinality + src_2->cardinality; // upper bound + if (totalCardinality <= DEFAULT_MAX_SIZE) { + *dst = array_container_create_given_capacity(totalCardinality); + array_container_xor(src_1, src_2, CAST_array(*dst)); + return false; // not a bitset + } + *dst = bitset_container_from_array(src_1); + bool returnval = true; // expect a bitset + bitset_container_t *ourbitset = CAST_bitset(*dst); + ourbitset->cardinality = (uint32_t)bitset_flip_list_withcard( + ourbitset->words, src_1->cardinality, src_2->array, src_2->cardinality); + if (ourbitset->cardinality <= DEFAULT_MAX_SIZE) { + // need to convert! + *dst = array_container_from_bitset(ourbitset); + bitset_container_free(ourbitset); + returnval = false; // not going to be a bitset + } + + return returnval; +} + +bool array_array_container_lazy_xor(const array_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + int totalCardinality = src_1->cardinality + src_2->cardinality; + // + // We assume that operations involving bitset containers will be faster than + // operations involving solely array containers, except maybe when array + // containers are small. Indeed, for example, it is cheap to compute the + // exclusive union between an array and a bitset container, generally more + // so than between a large array and another array. So it is advantageous to + // favour bitset containers during the computation. Of course, if we convert + // array containers eagerly to bitset containers, we may later need to + // revert the bitset containers to array containerr to satisfy the Roaring + // format requirements, but such one-time conversions at the end may not be + // overly expensive. We arrived to this design based on extensive + // benchmarking on unions. For XOR/exclusive union, we simply followed the + // heuristic used by the unions (see mixed_union.c). Further tuning is + // possible. + // + if (totalCardinality <= ARRAY_LAZY_LOWERBOUND) { + *dst = array_container_create_given_capacity(totalCardinality); + if (*dst != NULL) array_container_xor(src_1, src_2, CAST_array(*dst)); + return false; // not a bitset + } + *dst = bitset_container_from_array(src_1); + bool returnval = true; // expect a bitset (maybe, for XOR??) + if (*dst != NULL) { + bitset_container_t *ourbitset = CAST_bitset(*dst); + bitset_flip_list(ourbitset->words, src_2->array, src_2->cardinality); + ourbitset->cardinality = BITSET_UNKNOWN_CARDINALITY; + } + return returnval; +} + +/* Compute the xor of src_1 and src_2 and write the result to + * dst (which has no container initially). Return value is + * "dst is a bitset" + */ + +bool bitset_bitset_container_xor(const bitset_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + bitset_container_t *ans = bitset_container_create(); + int card = bitset_container_xor(src_1, src_2, ans); + if (card <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(ans); + bitset_container_free(ans); + return false; // not bitset + } else { + *dst = ans; + return true; + } +} + +/* Compute the xor of src_1 and src_2 and write the result to + * dst (which has no container initially). It will modify src_1 + * to be dst if the result is a bitset. Otherwise, it will + * free src_1 and dst will be a new array container. In both + * cases, the caller is responsible for deallocating dst. + * Returns true iff dst is a bitset */ + +bool bitset_array_container_ixor(bitset_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + *dst = src_1; + src_1->cardinality = (uint32_t)bitset_flip_list_withcard( + src_1->words, src_1->cardinality, src_2->array, src_2->cardinality); + + if (src_1->cardinality <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(src_1); + bitset_container_free(src_1); + return false; // not bitset + } else + return true; +} + +/* a bunch of in-place, some of which may not *really* be inplace. + * TODO: write actual inplace routine if efficiency warrants it + * Anything inplace with a bitset is a good candidate + */ + +bool bitset_bitset_container_ixor(bitset_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + int card = bitset_container_xor(src_1, src_2, src_1); + if (card <= DEFAULT_MAX_SIZE) { + *dst = array_container_from_bitset(src_1); + bitset_container_free(src_1); + return false; // not bitset + } else { + *dst = src_1; + return true; + } +} + +bool array_bitset_container_ixor(array_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + bool ans = array_bitset_container_xor(src_1, src_2, dst); + array_container_free(src_1); + return ans; +} + +/* Compute the xor of src_1 and src_2 and write the result to + * dst. Result may be either a bitset or an array container + * (returns "result is bitset"). dst does not initially have + * any container, but becomes either a bitset container (return + * result true) or an array container. + */ + +bool run_bitset_container_ixor(run_container_t *src_1, + const bitset_container_t *src_2, + container_t **dst) { + bool ans = run_bitset_container_xor(src_1, src_2, dst); + run_container_free(src_1); + return ans; +} + +bool bitset_run_container_ixor(bitset_container_t *src_1, + const run_container_t *src_2, + container_t **dst) { + bool ans = run_bitset_container_xor(src_2, src_1, dst); + bitset_container_free(src_1); + return ans; +} + +/* dst does not indicate a valid container initially. Eventually it + * can become any kind of container. + */ + +int array_run_container_ixor(array_container_t *src_1, + const run_container_t *src_2, container_t **dst) { + int ans = array_run_container_xor(src_1, src_2, dst); + array_container_free(src_1); + return ans; +} + +int run_array_container_ixor(run_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + int ans = array_run_container_xor(src_2, src_1, dst); + run_container_free(src_1); + return ans; +} + +bool array_array_container_ixor(array_container_t *src_1, + const array_container_t *src_2, + container_t **dst) { + bool ans = array_array_container_xor(src_1, src_2, dst); + array_container_free(src_1); + return ans; +} + +int run_run_container_ixor(run_container_t *src_1, const run_container_t *src_2, + container_t **dst) { + int ans = run_run_container_xor(src_1, src_2, dst); + run_container_free(src_1); + return ans; +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/containers/run.c b/contrib/libs/croaring/src/containers/run.c new file mode 100644 index 000000000000..0d6472643446 --- /dev/null +++ b/contrib/libs/croaring/src/containers/run.c @@ -0,0 +1,1083 @@ +#include <stdio.h> +#include <stdlib.h> + +#include <roaring/containers/run.h> +#include <roaring/memory.h> +#include <roaring/portability.h> + +#if CROARING_IS_X64 +#ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#error "CROARING_COMPILER_SUPPORTS_AVX512 needs to be defined." +#endif // CROARING_COMPILER_SUPPORTS_AVX512 +#endif +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +extern inline uint16_t run_container_minimum(const run_container_t *run); +extern inline uint16_t run_container_maximum(const run_container_t *run); +extern inline int32_t interleavedBinarySearch(const rle16_t *array, + int32_t lenarray, uint16_t ikey); +extern inline bool run_container_contains(const run_container_t *run, + uint16_t pos); +extern inline int run_container_index_equalorlarger(const run_container_t *arr, + uint16_t x); +extern inline bool run_container_is_full(const run_container_t *run); +extern inline bool run_container_nonzero_cardinality(const run_container_t *rc); +extern inline int32_t run_container_serialized_size_in_bytes(int32_t num_runs); +extern inline run_container_t *run_container_create_range(uint32_t start, + uint32_t stop); +extern inline int run_container_cardinality(const run_container_t *run); + +bool run_container_add(run_container_t *run, uint16_t pos) { + int32_t index = interleavedBinarySearch(run->runs, run->n_runs, pos); + if (index >= 0) return false; // already there + index = -index - 2; // points to preceding value, possibly -1 + if (index >= 0) { // possible match + int32_t offset = pos - run->runs[index].value; + int32_t le = run->runs[index].length; + if (offset <= le) return false; // already there + if (offset == le + 1) { + // we may need to fuse + if (index + 1 < run->n_runs) { + if (run->runs[index + 1].value == pos + 1) { + // indeed fusion is needed + run->runs[index].length = run->runs[index + 1].value + + run->runs[index + 1].length - + run->runs[index].value; + recoverRoomAtIndex(run, (uint16_t)(index + 1)); + return true; + } + } + run->runs[index].length++; + return true; + } + if (index + 1 < run->n_runs) { + // we may need to fuse + if (run->runs[index + 1].value == pos + 1) { + // indeed fusion is needed + run->runs[index + 1].value = pos; + run->runs[index + 1].length = run->runs[index + 1].length + 1; + return true; + } + } + } + if (index == -1) { + // we may need to extend the first run + if (0 < run->n_runs) { + if (run->runs[0].value == pos + 1) { + run->runs[0].length++; + run->runs[0].value--; + return true; + } + } + } + makeRoomAtIndex(run, (uint16_t)(index + 1)); + run->runs[index + 1].value = pos; + run->runs[index + 1].length = 0; + return true; +} + +/* Create a new run container. Return NULL in case of failure. */ +run_container_t *run_container_create_given_capacity(int32_t size) { + run_container_t *run; + /* Allocate the run container itself. */ + if ((run = (run_container_t *)roaring_malloc(sizeof(run_container_t))) == + NULL) { + return NULL; + } + if (size <= 0) { // we don't want to rely on malloc(0) + run->runs = NULL; + } else if ((run->runs = (rle16_t *)roaring_malloc(sizeof(rle16_t) * + size)) == NULL) { + roaring_free(run); + return NULL; + } + run->capacity = size; + run->n_runs = 0; + return run; +} + +int run_container_shrink_to_fit(run_container_t *src) { + if (src->n_runs == src->capacity) return 0; // nothing to do + int savings = src->capacity - src->n_runs; + src->capacity = src->n_runs; + rle16_t *oldruns = src->runs; + src->runs = + (rle16_t *)roaring_realloc(oldruns, src->capacity * sizeof(rle16_t)); + if (src->runs == NULL) roaring_free(oldruns); // should never happen? + return savings; +} +/* Create a new run container. Return NULL in case of failure. */ +run_container_t *run_container_create(void) { + return run_container_create_given_capacity(RUN_DEFAULT_INIT_SIZE); +} + +ALLOW_UNALIGNED +run_container_t *run_container_clone(const run_container_t *src) { + run_container_t *run = run_container_create_given_capacity(src->capacity); + if (run == NULL) return NULL; + run->capacity = src->capacity; + run->n_runs = src->n_runs; + memcpy(run->runs, src->runs, src->n_runs * sizeof(rle16_t)); + return run; +} + +void run_container_offset(const run_container_t *c, container_t **loc, + container_t **hic, uint16_t offset) { + run_container_t *lo = NULL, *hi = NULL; + + bool split; + int lo_cap, hi_cap; + int top, pivot; + + top = (1 << 16) - offset; + pivot = run_container_index_equalorlarger(c, top); + + if (pivot == -1) { + split = false; + lo_cap = c->n_runs; + hi_cap = 0; + } else { + split = c->runs[pivot].value < top; + lo_cap = pivot + (split ? 1 : 0); + hi_cap = c->n_runs - pivot; + } + + if (loc && lo_cap) { + lo = run_container_create_given_capacity(lo_cap); + memcpy(lo->runs, c->runs, lo_cap * sizeof(rle16_t)); + lo->n_runs = lo_cap; + for (int i = 0; i < lo_cap; ++i) { + lo->runs[i].value += offset; + } + *loc = (container_t *)lo; + } + + if (hic && hi_cap) { + hi = run_container_create_given_capacity(hi_cap); + memcpy(hi->runs, c->runs + pivot, hi_cap * sizeof(rle16_t)); + hi->n_runs = hi_cap; + for (int i = 0; i < hi_cap; ++i) { + hi->runs[i].value += offset; + } + *hic = (container_t *)hi; + } + + // Fix the split. + if (split) { + if (lo != NULL) { + // Add the missing run to 'lo', exhausting length. + lo->runs[lo->n_runs - 1].length = + (1 << 16) - lo->runs[lo->n_runs - 1].value - 1; + } + + if (hi != NULL) { + // Fix the first run in 'hi'. + hi->runs[0].length -= UINT16_MAX - hi->runs[0].value + 1; + hi->runs[0].value = 0; + } + } +} + +/* Free memory. */ +void run_container_free(run_container_t *run) { + if (run->runs != + NULL) { // Jon Strabala reports that some tools complain otherwise + roaring_free(run->runs); + run->runs = NULL; // pedantic + } + roaring_free(run); +} + +void run_container_grow(run_container_t *run, int32_t min, bool copy) { + int32_t newCapacity = (run->capacity == 0) ? RUN_DEFAULT_INIT_SIZE + : run->capacity < 64 ? run->capacity * 2 + : run->capacity < 1024 ? run->capacity * 3 / 2 + : run->capacity * 5 / 4; + if (newCapacity < min) newCapacity = min; + run->capacity = newCapacity; + assert(run->capacity >= min); + if (copy) { + rle16_t *oldruns = run->runs; + run->runs = (rle16_t *)roaring_realloc(oldruns, + run->capacity * sizeof(rle16_t)); + if (run->runs == NULL) roaring_free(oldruns); + } else { + // Jon Strabala reports that some tools complain otherwise + if (run->runs != NULL) { + roaring_free(run->runs); + } + run->runs = (rle16_t *)roaring_malloc(run->capacity * sizeof(rle16_t)); + } + // We may have run->runs == NULL. +} + +/* copy one container into another */ +void run_container_copy(const run_container_t *src, run_container_t *dst) { + const int32_t n_runs = src->n_runs; + if (src->n_runs > dst->capacity) { + run_container_grow(dst, n_runs, false); + } + dst->n_runs = n_runs; + memcpy(dst->runs, src->runs, sizeof(rle16_t) * n_runs); +} + +/* Compute the union of `src_1' and `src_2' and write the result to `dst' + * It is assumed that `dst' is distinct from both `src_1' and `src_2'. */ +void run_container_union(const run_container_t *src_1, + const run_container_t *src_2, run_container_t *dst) { + // TODO: this could be a lot more efficient + + // we start out with inexpensive checks + const bool if1 = run_container_is_full(src_1); + const bool if2 = run_container_is_full(src_2); + if (if1 || if2) { + if (if1) { + run_container_copy(src_1, dst); + return; + } + if (if2) { + run_container_copy(src_2, dst); + return; + } + } + const int32_t neededcapacity = src_1->n_runs + src_2->n_runs; + if (dst->capacity < neededcapacity) + run_container_grow(dst, neededcapacity, false); + dst->n_runs = 0; + int32_t rlepos = 0; + int32_t xrlepos = 0; + + rle16_t previousrle; + if (src_1->runs[rlepos].value <= src_2->runs[xrlepos].value) { + previousrle = run_container_append_first(dst, src_1->runs[rlepos]); + rlepos++; + } else { + previousrle = run_container_append_first(dst, src_2->runs[xrlepos]); + xrlepos++; + } + + while ((xrlepos < src_2->n_runs) && (rlepos < src_1->n_runs)) { + rle16_t newrl; + if (src_1->runs[rlepos].value <= src_2->runs[xrlepos].value) { + newrl = src_1->runs[rlepos]; + rlepos++; + } else { + newrl = src_2->runs[xrlepos]; + xrlepos++; + } + run_container_append(dst, newrl, &previousrle); + } + while (xrlepos < src_2->n_runs) { + run_container_append(dst, src_2->runs[xrlepos], &previousrle); + xrlepos++; + } + while (rlepos < src_1->n_runs) { + run_container_append(dst, src_1->runs[rlepos], &previousrle); + rlepos++; + } +} + +/* Compute the union of `src_1' and `src_2' and write the result to `src_1' + */ +void run_container_union_inplace(run_container_t *src_1, + const run_container_t *src_2) { + // TODO: this could be a lot more efficient + + // we start out with inexpensive checks + const bool if1 = run_container_is_full(src_1); + const bool if2 = run_container_is_full(src_2); + if (if1 || if2) { + if (if1) { + return; + } + if (if2) { + run_container_copy(src_2, src_1); + return; + } + } + // we move the data to the end of the current array + const int32_t maxoutput = src_1->n_runs + src_2->n_runs; + const int32_t neededcapacity = maxoutput + src_1->n_runs; + if (src_1->capacity < neededcapacity) + run_container_grow(src_1, neededcapacity, true); + memmove(src_1->runs + maxoutput, src_1->runs, + src_1->n_runs * sizeof(rle16_t)); + rle16_t *inputsrc1 = src_1->runs + maxoutput; + const int32_t input1nruns = src_1->n_runs; + src_1->n_runs = 0; + int32_t rlepos = 0; + int32_t xrlepos = 0; + + rle16_t previousrle; + if (inputsrc1[rlepos].value <= src_2->runs[xrlepos].value) { + previousrle = run_container_append_first(src_1, inputsrc1[rlepos]); + rlepos++; + } else { + previousrle = run_container_append_first(src_1, src_2->runs[xrlepos]); + xrlepos++; + } + while ((xrlepos < src_2->n_runs) && (rlepos < input1nruns)) { + rle16_t newrl; + if (inputsrc1[rlepos].value <= src_2->runs[xrlepos].value) { + newrl = inputsrc1[rlepos]; + rlepos++; + } else { + newrl = src_2->runs[xrlepos]; + xrlepos++; + } + run_container_append(src_1, newrl, &previousrle); + } + while (xrlepos < src_2->n_runs) { + run_container_append(src_1, src_2->runs[xrlepos], &previousrle); + xrlepos++; + } + while (rlepos < input1nruns) { + run_container_append(src_1, inputsrc1[rlepos], &previousrle); + rlepos++; + } +} + +/* Compute the symmetric difference of `src_1' and `src_2' and write the result + * to `dst' + * It is assumed that `dst' is distinct from both `src_1' and `src_2'. */ +void run_container_xor(const run_container_t *src_1, + const run_container_t *src_2, run_container_t *dst) { + // don't bother to convert xor with full range into negation + // since negation is implemented similarly + + const int32_t neededcapacity = src_1->n_runs + src_2->n_runs; + if (dst->capacity < neededcapacity) + run_container_grow(dst, neededcapacity, false); + + int32_t pos1 = 0; + int32_t pos2 = 0; + dst->n_runs = 0; + + while ((pos1 < src_1->n_runs) && (pos2 < src_2->n_runs)) { + if (src_1->runs[pos1].value <= src_2->runs[pos2].value) { + run_container_smart_append_exclusive(dst, src_1->runs[pos1].value, + src_1->runs[pos1].length); + pos1++; + } else { + run_container_smart_append_exclusive(dst, src_2->runs[pos2].value, + src_2->runs[pos2].length); + pos2++; + } + } + while (pos1 < src_1->n_runs) { + run_container_smart_append_exclusive(dst, src_1->runs[pos1].value, + src_1->runs[pos1].length); + pos1++; + } + + while (pos2 < src_2->n_runs) { + run_container_smart_append_exclusive(dst, src_2->runs[pos2].value, + src_2->runs[pos2].length); + pos2++; + } +} + +/* Compute the intersection of src_1 and src_2 and write the result to + * dst. It is assumed that dst is distinct from both src_1 and src_2. */ +void run_container_intersection(const run_container_t *src_1, + const run_container_t *src_2, + run_container_t *dst) { + const bool if1 = run_container_is_full(src_1); + const bool if2 = run_container_is_full(src_2); + if (if1 || if2) { + if (if1) { + run_container_copy(src_2, dst); + return; + } + if (if2) { + run_container_copy(src_1, dst); + return; + } + } + // TODO: this could be a lot more efficient, could use SIMD optimizations + const int32_t neededcapacity = src_1->n_runs + src_2->n_runs; + if (dst->capacity < neededcapacity) + run_container_grow(dst, neededcapacity, false); + dst->n_runs = 0; + int32_t rlepos = 0; + int32_t xrlepos = 0; + int32_t start = src_1->runs[rlepos].value; + int32_t end = start + src_1->runs[rlepos].length + 1; + int32_t xstart = src_2->runs[xrlepos].value; + int32_t xend = xstart + src_2->runs[xrlepos].length + 1; + while ((rlepos < src_1->n_runs) && (xrlepos < src_2->n_runs)) { + if (end <= xstart) { + ++rlepos; + if (rlepos < src_1->n_runs) { + start = src_1->runs[rlepos].value; + end = start + src_1->runs[rlepos].length + 1; + } + } else if (xend <= start) { + ++xrlepos; + if (xrlepos < src_2->n_runs) { + xstart = src_2->runs[xrlepos].value; + xend = xstart + src_2->runs[xrlepos].length + 1; + } + } else { // they overlap + const int32_t lateststart = start > xstart ? start : xstart; + int32_t earliestend; + if (end == xend) { // improbable + earliestend = end; + rlepos++; + xrlepos++; + if (rlepos < src_1->n_runs) { + start = src_1->runs[rlepos].value; + end = start + src_1->runs[rlepos].length + 1; + } + if (xrlepos < src_2->n_runs) { + xstart = src_2->runs[xrlepos].value; + xend = xstart + src_2->runs[xrlepos].length + 1; + } + } else if (end < xend) { + earliestend = end; + rlepos++; + if (rlepos < src_1->n_runs) { + start = src_1->runs[rlepos].value; + end = start + src_1->runs[rlepos].length + 1; + } + + } else { // end > xend + earliestend = xend; + xrlepos++; + if (xrlepos < src_2->n_runs) { + xstart = src_2->runs[xrlepos].value; + xend = xstart + src_2->runs[xrlepos].length + 1; + } + } + dst->runs[dst->n_runs].value = (uint16_t)lateststart; + dst->runs[dst->n_runs].length = + (uint16_t)(earliestend - lateststart - 1); + dst->n_runs++; + } + } +} + +/* Compute the size of the intersection of src_1 and src_2 . */ +int run_container_intersection_cardinality(const run_container_t *src_1, + const run_container_t *src_2) { + const bool if1 = run_container_is_full(src_1); + const bool if2 = run_container_is_full(src_2); + if (if1 || if2) { + if (if1) { + return run_container_cardinality(src_2); + } + if (if2) { + return run_container_cardinality(src_1); + } + } + int answer = 0; + int32_t rlepos = 0; + int32_t xrlepos = 0; + int32_t start = src_1->runs[rlepos].value; + int32_t end = start + src_1->runs[rlepos].length + 1; + int32_t xstart = src_2->runs[xrlepos].value; + int32_t xend = xstart + src_2->runs[xrlepos].length + 1; + while ((rlepos < src_1->n_runs) && (xrlepos < src_2->n_runs)) { + if (end <= xstart) { + ++rlepos; + if (rlepos < src_1->n_runs) { + start = src_1->runs[rlepos].value; + end = start + src_1->runs[rlepos].length + 1; + } + } else if (xend <= start) { + ++xrlepos; + if (xrlepos < src_2->n_runs) { + xstart = src_2->runs[xrlepos].value; + xend = xstart + src_2->runs[xrlepos].length + 1; + } + } else { // they overlap + const int32_t lateststart = start > xstart ? start : xstart; + int32_t earliestend; + if (end == xend) { // improbable + earliestend = end; + rlepos++; + xrlepos++; + if (rlepos < src_1->n_runs) { + start = src_1->runs[rlepos].value; + end = start + src_1->runs[rlepos].length + 1; + } + if (xrlepos < src_2->n_runs) { + xstart = src_2->runs[xrlepos].value; + xend = xstart + src_2->runs[xrlepos].length + 1; + } + } else if (end < xend) { + earliestend = end; + rlepos++; + if (rlepos < src_1->n_runs) { + start = src_1->runs[rlepos].value; + end = start + src_1->runs[rlepos].length + 1; + } + + } else { // end > xend + earliestend = xend; + xrlepos++; + if (xrlepos < src_2->n_runs) { + xstart = src_2->runs[xrlepos].value; + xend = xstart + src_2->runs[xrlepos].length + 1; + } + } + answer += earliestend - lateststart; + } + } + return answer; +} + +bool run_container_intersect(const run_container_t *src_1, + const run_container_t *src_2) { + const bool if1 = run_container_is_full(src_1); + const bool if2 = run_container_is_full(src_2); + if (if1 || if2) { + if (if1) { + return !run_container_empty(src_2); + } + if (if2) { + return !run_container_empty(src_1); + } + } + int32_t rlepos = 0; + int32_t xrlepos = 0; + int32_t start = src_1->runs[rlepos].value; + int32_t end = start + src_1->runs[rlepos].length + 1; + int32_t xstart = src_2->runs[xrlepos].value; + int32_t xend = xstart + src_2->runs[xrlepos].length + 1; + while ((rlepos < src_1->n_runs) && (xrlepos < src_2->n_runs)) { + if (end <= xstart) { + ++rlepos; + if (rlepos < src_1->n_runs) { + start = src_1->runs[rlepos].value; + end = start + src_1->runs[rlepos].length + 1; + } + } else if (xend <= start) { + ++xrlepos; + if (xrlepos < src_2->n_runs) { + xstart = src_2->runs[xrlepos].value; + xend = xstart + src_2->runs[xrlepos].length + 1; + } + } else { // they overlap + return true; + } + } + return false; +} + +/* Compute the difference of src_1 and src_2 and write the result to + * dst. It is assumed that dst is distinct from both src_1 and src_2. */ +void run_container_andnot(const run_container_t *src_1, + const run_container_t *src_2, run_container_t *dst) { + // following Java implementation as of June 2016 + + if (dst->capacity < src_1->n_runs + src_2->n_runs) + run_container_grow(dst, src_1->n_runs + src_2->n_runs, false); + + dst->n_runs = 0; + + int rlepos1 = 0; + int rlepos2 = 0; + int32_t start = src_1->runs[rlepos1].value; + int32_t end = start + src_1->runs[rlepos1].length + 1; + int32_t start2 = src_2->runs[rlepos2].value; + int32_t end2 = start2 + src_2->runs[rlepos2].length + 1; + + while ((rlepos1 < src_1->n_runs) && (rlepos2 < src_2->n_runs)) { + if (end <= start2) { + // output the first run + dst->runs[dst->n_runs++] = + CROARING_MAKE_RLE16(start, end - start - 1); + rlepos1++; + if (rlepos1 < src_1->n_runs) { + start = src_1->runs[rlepos1].value; + end = start + src_1->runs[rlepos1].length + 1; + } + } else if (end2 <= start) { + // exit the second run + rlepos2++; + if (rlepos2 < src_2->n_runs) { + start2 = src_2->runs[rlepos2].value; + end2 = start2 + src_2->runs[rlepos2].length + 1; + } + } else { + if (start < start2) { + dst->runs[dst->n_runs++] = + CROARING_MAKE_RLE16(start, start2 - start - 1); + } + if (end2 < end) { + start = end2; + } else { + rlepos1++; + if (rlepos1 < src_1->n_runs) { + start = src_1->runs[rlepos1].value; + end = start + src_1->runs[rlepos1].length + 1; + } + } + } + } + if (rlepos1 < src_1->n_runs) { + dst->runs[dst->n_runs++] = CROARING_MAKE_RLE16(start, end - start - 1); + rlepos1++; + if (rlepos1 < src_1->n_runs) { + memcpy(dst->runs + dst->n_runs, src_1->runs + rlepos1, + sizeof(rle16_t) * (src_1->n_runs - rlepos1)); + dst->n_runs += src_1->n_runs - rlepos1; + } + } +} + +ALLOW_UNALIGNED +int run_container_to_uint32_array(void *vout, const run_container_t *cont, + uint32_t base) { + int outpos = 0; + uint32_t *out = (uint32_t *)vout; + for (int i = 0; i < cont->n_runs; ++i) { + uint32_t run_start = base + cont->runs[i].value; + uint16_t le = cont->runs[i].length; + for (int j = 0; j <= le; ++j) { + uint32_t val = run_start + j; + memcpy(out + outpos, &val, + sizeof(uint32_t)); // should be compiled as a MOV on x64 + outpos++; + } + } + return outpos; +} + +/* + * Print this container using printf (useful for debugging). + */ +void run_container_printf(const run_container_t *cont) { + for (int i = 0; i < cont->n_runs; ++i) { + uint16_t run_start = cont->runs[i].value; + uint16_t le = cont->runs[i].length; + printf("[%d,%d]", run_start, run_start + le); + } +} + +/* + * Print this container using printf as a comma-separated list of 32-bit + * integers starting at base. + */ +void run_container_printf_as_uint32_array(const run_container_t *cont, + uint32_t base) { + if (cont->n_runs == 0) return; + { + uint32_t run_start = base + cont->runs[0].value; + uint16_t le = cont->runs[0].length; + printf("%u", run_start); + for (uint32_t j = 1; j <= le; ++j) printf(",%u", run_start + j); + } + for (int32_t i = 1; i < cont->n_runs; ++i) { + uint32_t run_start = base + cont->runs[i].value; + uint16_t le = cont->runs[i].length; + for (uint32_t j = 0; j <= le; ++j) printf(",%u", run_start + j); + } +} + +/* + * Validate the container. Returns true if valid. + */ +bool run_container_validate(const run_container_t *run, const char **reason) { + if (run->n_runs < 0) { + *reason = "negative run count"; + return false; + } + if (run->capacity < 0) { + *reason = "negative run capacity"; + return false; + } + if (run->capacity < run->n_runs) { + *reason = "capacity less than run count"; + return false; + } + + if (run->n_runs == 0) { + *reason = "zero run count"; + return false; + } + if (run->runs == NULL) { + *reason = "NULL runs"; + return false; + } + + // Use uint32_t to avoid overflow issues on ranges that contain UINT16_MAX. + uint32_t last_end = 0; + for (int i = 0; i < run->n_runs; ++i) { + uint32_t start = run->runs[i].value; + uint32_t end = start + run->runs[i].length + 1; + if (end <= start) { + *reason = "run start + length overflow"; + return false; + } + if (end > (1 << 16)) { + *reason = "run start + length too large"; + return false; + } + if (start < last_end) { + *reason = "run start less than last end"; + return false; + } + if (start == last_end && last_end != 0) { + *reason = "run start equal to last end, should have combined"; + return false; + } + last_end = end; + } + return true; +} + +int32_t run_container_write(const run_container_t *container, char *buf) { + uint16_t cast_16 = container->n_runs; + memcpy(buf, &cast_16, sizeof(uint16_t)); + memcpy(buf + sizeof(uint16_t), container->runs, + container->n_runs * sizeof(rle16_t)); + return run_container_size_in_bytes(container); +} + +int32_t run_container_read(int32_t cardinality, run_container_t *container, + const char *buf) { + (void)cardinality; + uint16_t cast_16; + memcpy(&cast_16, buf, sizeof(uint16_t)); + container->n_runs = cast_16; + if (container->n_runs > container->capacity) + run_container_grow(container, container->n_runs, false); + if (container->n_runs > 0) { + memcpy(container->runs, buf + sizeof(uint16_t), + container->n_runs * sizeof(rle16_t)); + } + return run_container_size_in_bytes(container); +} + +bool run_container_iterate(const run_container_t *cont, uint32_t base, + roaring_iterator iterator, void *ptr) { + for (int i = 0; i < cont->n_runs; ++i) { + uint32_t run_start = base + cont->runs[i].value; + uint16_t le = cont->runs[i].length; + + for (int j = 0; j <= le; ++j) + if (!iterator(run_start + j, ptr)) return false; + } + return true; +} + +bool run_container_iterate64(const run_container_t *cont, uint32_t base, + roaring_iterator64 iterator, uint64_t high_bits, + void *ptr) { + for (int i = 0; i < cont->n_runs; ++i) { + uint32_t run_start = base + cont->runs[i].value; + uint16_t le = cont->runs[i].length; + + for (int j = 0; j <= le; ++j) + if (!iterator(high_bits | (uint64_t)(run_start + j), ptr)) + return false; + } + return true; +} + +bool run_container_is_subset(const run_container_t *container1, + const run_container_t *container2) { + int i1 = 0, i2 = 0; + while (i1 < container1->n_runs && i2 < container2->n_runs) { + int start1 = container1->runs[i1].value; + int stop1 = start1 + container1->runs[i1].length; + int start2 = container2->runs[i2].value; + int stop2 = start2 + container2->runs[i2].length; + if (start1 < start2) { + return false; + } else { // start1 >= start2 + if (stop1 < stop2) { + i1++; + } else if (stop1 == stop2) { + i1++; + i2++; + } else { // stop1 > stop2 + i2++; + } + } + } + if (i1 == container1->n_runs) { + return true; + } else { + return false; + } +} + +// TODO: write smart_append_exclusive version to match the overloaded 1 param +// Java version (or is it even used?) + +// follows the Java implementation closely +// length is the rle-value. Ie, run [10,12) uses a length value 1. +void run_container_smart_append_exclusive(run_container_t *src, + const uint16_t start, + const uint16_t length) { + int old_end; + rle16_t *last_run = src->n_runs ? src->runs + (src->n_runs - 1) : NULL; + rle16_t *appended_last_run = src->runs + src->n_runs; + + if (!src->n_runs || + (start > (old_end = last_run->value + last_run->length + 1))) { + *appended_last_run = CROARING_MAKE_RLE16(start, length); + src->n_runs++; + return; + } + if (old_end == start) { + // we merge + last_run->length += (length + 1); + return; + } + int new_end = start + length + 1; + + if (start == last_run->value) { + // wipe out previous + if (new_end < old_end) { + *last_run = CROARING_MAKE_RLE16(new_end, old_end - new_end - 1); + return; + } else if (new_end > old_end) { + *last_run = CROARING_MAKE_RLE16(old_end, new_end - old_end - 1); + return; + } else { + src->n_runs--; + return; + } + } + last_run->length = start - last_run->value - 1; + if (new_end < old_end) { + *appended_last_run = + CROARING_MAKE_RLE16(new_end, old_end - new_end - 1); + src->n_runs++; + } else if (new_end > old_end) { + *appended_last_run = + CROARING_MAKE_RLE16(old_end, new_end - old_end - 1); + src->n_runs++; + } +} + +bool run_container_select(const run_container_t *container, + uint32_t *start_rank, uint32_t rank, + uint32_t *element) { + for (int i = 0; i < container->n_runs; i++) { + uint16_t length = container->runs[i].length; + if (rank <= *start_rank + length) { + uint16_t value = container->runs[i].value; + *element = value + rank - (*start_rank); + return true; + } else + *start_rank += length + 1; + } + return false; +} + +int run_container_rank(const run_container_t *container, uint16_t x) { + int sum = 0; + uint32_t x32 = x; + for (int i = 0; i < container->n_runs; i++) { + uint32_t startpoint = container->runs[i].value; + uint32_t length = container->runs[i].length; + uint32_t endpoint = length + startpoint; + if (x <= endpoint) { + if (x < startpoint) break; + return sum + (x32 - startpoint) + 1; + } else { + sum += length + 1; + } + } + return sum; +} +uint32_t run_container_rank_many(const run_container_t *container, + uint64_t start_rank, const uint32_t *begin, + const uint32_t *end, uint64_t *ans) { + const uint16_t high = (uint16_t)((*begin) >> 16); + const uint32_t *iter = begin; + int sum = 0; + int i = 0; + for (; iter != end; iter++) { + uint32_t x = *iter; + uint16_t xhigh = (uint16_t)(x >> 16); + if (xhigh != high) return iter - begin; // stop at next container + + uint32_t x32 = x & 0xFFFF; + while (i < container->n_runs) { + uint32_t startpoint = container->runs[i].value; + uint32_t length = container->runs[i].length; + uint32_t endpoint = length + startpoint; + if (x32 <= endpoint) { + if (x32 < startpoint) { + *(ans++) = start_rank + sum; + } else { + *(ans++) = start_rank + sum + (x32 - startpoint) + 1; + } + break; + } else { + sum += length + 1; + i++; + } + } + if (i >= container->n_runs) *(ans++) = start_rank + sum; + } + + return iter - begin; +} + +int run_container_get_index(const run_container_t *container, uint16_t x) { + if (run_container_contains(container, x)) { + int sum = 0; + uint32_t x32 = x; + for (int i = 0; i < container->n_runs; i++) { + uint32_t startpoint = container->runs[i].value; + uint32_t length = container->runs[i].length; + uint32_t endpoint = length + startpoint; + if (x <= endpoint) { + if (x < startpoint) break; + return sum + (x32 - startpoint); + } else { + sum += length + 1; + } + } + return sum - 1; + } else { + return -1; + } +} + +#if defined(CROARING_IS_X64) && CROARING_COMPILER_SUPPORTS_AVX512 + +CROARING_TARGET_AVX512 +ALLOW_UNALIGNED +/* Get the cardinality of `run'. Requires an actual computation. */ +static inline int _avx512_run_container_cardinality( + const run_container_t *run) { + const int32_t n_runs = run->n_runs; + const rle16_t *runs = run->runs; + + /* by initializing with n_runs, we omit counting the +1 for each pair. */ + int sum = n_runs; + int32_t k = 0; + const int32_t step = sizeof(__m512i) / sizeof(rle16_t); + if (n_runs > step) { + __m512i total = _mm512_setzero_si512(); + for (; k + step <= n_runs; k += step) { + __m512i ymm1 = _mm512_loadu_si512((const __m512i *)(runs + k)); + __m512i justlengths = _mm512_srli_epi32(ymm1, 16); + total = _mm512_add_epi32(total, justlengths); + } + + __m256i lo = _mm512_extracti32x8_epi32(total, 0); + __m256i hi = _mm512_extracti32x8_epi32(total, 1); + + // a store might be faster than extract? + uint32_t buffer[sizeof(__m256i) / sizeof(rle16_t)]; + _mm256_storeu_si256((__m256i *)buffer, lo); + sum += (buffer[0] + buffer[1]) + (buffer[2] + buffer[3]) + + (buffer[4] + buffer[5]) + (buffer[6] + buffer[7]); + + _mm256_storeu_si256((__m256i *)buffer, hi); + sum += (buffer[0] + buffer[1]) + (buffer[2] + buffer[3]) + + (buffer[4] + buffer[5]) + (buffer[6] + buffer[7]); + } + for (; k < n_runs; ++k) { + sum += runs[k].length; + } + + return sum; +} + +CROARING_UNTARGET_AVX512 + +CROARING_TARGET_AVX2 +ALLOW_UNALIGNED +/* Get the cardinality of `run'. Requires an actual computation. */ +static inline int _avx2_run_container_cardinality(const run_container_t *run) { + const int32_t n_runs = run->n_runs; + const rle16_t *runs = run->runs; + + /* by initializing with n_runs, we omit counting the +1 for each pair. */ + int sum = n_runs; + int32_t k = 0; + const int32_t step = sizeof(__m256i) / sizeof(rle16_t); + if (n_runs > step) { + __m256i total = _mm256_setzero_si256(); + for (; k + step <= n_runs; k += step) { + __m256i ymm1 = _mm256_lddqu_si256((const __m256i *)(runs + k)); + __m256i justlengths = _mm256_srli_epi32(ymm1, 16); + total = _mm256_add_epi32(total, justlengths); + } + // a store might be faster than extract? + uint32_t buffer[sizeof(__m256i) / sizeof(rle16_t)]; + _mm256_storeu_si256((__m256i *)buffer, total); + sum += (buffer[0] + buffer[1]) + (buffer[2] + buffer[3]) + + (buffer[4] + buffer[5]) + (buffer[6] + buffer[7]); + } + for (; k < n_runs; ++k) { + sum += runs[k].length; + } + + return sum; +} + +CROARING_UNTARGET_AVX2 + +/* Get the cardinality of `run'. Requires an actual computation. */ +static inline int _scalar_run_container_cardinality( + const run_container_t *run) { + const int32_t n_runs = run->n_runs; + const rle16_t *runs = run->runs; + + /* by initializing with n_runs, we omit counting the +1 for each pair. */ + int sum = n_runs; + for (int k = 0; k < n_runs; ++k) { + sum += runs[k].length; + } + + return sum; +} + +int run_container_cardinality(const run_container_t *run) { +#if CROARING_COMPILER_SUPPORTS_AVX512 + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX512) { + return _avx512_run_container_cardinality(run); + } else +#endif + if (croaring_hardware_support() & ROARING_SUPPORTS_AVX2) { + return _avx2_run_container_cardinality(run); + } else { + return _scalar_run_container_cardinality(run); + } +} +#else + +/* Get the cardinality of `run'. Requires an actual computation. */ +ALLOW_UNALIGNED +int run_container_cardinality(const run_container_t *run) { + const int32_t n_runs = run->n_runs; + const rle16_t *runs = run->runs; + + /* by initializing with n_runs, we omit counting the +1 for each pair. */ + int sum = n_runs; + for (int k = 0; k < n_runs; ++k) { + sum += runs[k].length; + } + + return sum; +} +#endif + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif \ No newline at end of file diff --git a/contrib/libs/croaring/src/isadetection.c b/contrib/libs/croaring/src/isadetection.c new file mode 100644 index 000000000000..d7904149ba95 --- /dev/null +++ b/contrib/libs/croaring/src/isadetection.c @@ -0,0 +1,339 @@ + +/* From +https://github.com/endorno/pytorch/blob/master/torch/lib/TH/generic/simd/simd.h +Highly modified. + +Copyright (c) 2016- Facebook, Inc (Adam Paszke) +Copyright (c) 2014- Facebook, Inc (Soumith Chintala) +Copyright (c) 2011-2014 Idiap Research Institute (Ronan Collobert) +Copyright (c) 2012-2014 Deepmind Technologies (Koray Kavukcuoglu) +Copyright (c) 2011-2012 NEC Laboratories America (Koray Kavukcuoglu) +Copyright (c) 2011-2013 NYU (Clement Farabet) +Copyright (c) 2006-2010 NEC Laboratories America (Ronan Collobert, Leon Bottou, +Iain Melvin, Jason Weston) Copyright (c) 2006 Idiap Research Institute +(Samy Bengio) Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert, +Samy Bengio, Johnny Mariethoz) + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the names of Facebook, Deepmind Technologies, NYU, NEC Laboratories +America and IDIAP Research Institute nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +*/ + +#include <stdbool.h> +#include <stdint.h> +#include <stdlib.h> + +// Binaries produced by Visual Studio with solely AVX2 routines +// can compile to AVX-512 thus causing crashes on non-AVX-512 systems. +// This appears to affect VS 17.8 and 17.9. We disable AVX-512 and AVX2 +// on these systems. It seems that ClangCL is not affected. +// https://github.com/RoaringBitmap/CRoaring/pull/603 +#ifndef __clang__ +#if _MSC_VER >= 1938 +#define ROARING_DISABLE_AVX 1 +#endif // _MSC_VER >= 1938 +#endif // __clang__ + +// We need portability.h to be included first, see +// https://github.com/RoaringBitmap/CRoaring/issues/394 +#include <roaring/portability.h> +#if CROARING_REGULAR_VISUAL_STUDIO +#include <intrin.h> +#elif defined(HAVE_GCC_GET_CPUID) && defined(USE_GCC_GET_CPUID) +#include <cpuid.h> +#endif // CROARING_REGULAR_VISUAL_STUDIO +#include <roaring/isadetection.h> + +#if CROARING_IS_X64 +#ifndef CROARING_COMPILER_SUPPORTS_AVX512 +#error "CROARING_COMPILER_SUPPORTS_AVX512 needs to be defined." +#endif // CROARING_COMPILER_SUPPORTS_AVX512 +#endif + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif +enum croaring_instruction_set { + CROARING_DEFAULT = 0x0, + CROARING_NEON = 0x1, + CROARING_AVX2 = 0x4, + CROARING_SSE42 = 0x8, + CROARING_PCLMULQDQ = 0x10, + CROARING_BMI1 = 0x20, + CROARING_BMI2 = 0x40, + CROARING_ALTIVEC = 0x80, + CROARING_AVX512F = 0x100, + CROARING_AVX512DQ = 0x200, + CROARING_AVX512BW = 0x400, + CROARING_AVX512VBMI2 = 0x800, + CROARING_AVX512BITALG = 0x1000, + CROARING_AVX512VPOPCNTDQ = 0x2000, + CROARING_UNINITIALIZED = 0x8000 +}; + +#if CROARING_COMPILER_SUPPORTS_AVX512 +unsigned int CROARING_AVX512_REQUIRED = + (CROARING_AVX512F | CROARING_AVX512DQ | CROARING_AVX512BW | + CROARING_AVX512VBMI2 | CROARING_AVX512BITALG | CROARING_AVX512VPOPCNTDQ); +#endif + +#if defined(__x86_64__) || defined(_M_AMD64) // x64 + +static inline void cpuid(uint32_t *eax, uint32_t *ebx, uint32_t *ecx, + uint32_t *edx) { +#if CROARING_REGULAR_VISUAL_STUDIO + int cpu_info[4]; + __cpuidex(cpu_info, *eax, *ecx); + *eax = cpu_info[0]; + *ebx = cpu_info[1]; + *ecx = cpu_info[2]; + *edx = cpu_info[3]; +#elif defined(HAVE_GCC_GET_CPUID) && defined(USE_GCC_GET_CPUID) + uint32_t level = *eax; + __get_cpuid(level, eax, ebx, ecx, edx); +#else + uint32_t a = *eax, b, c = *ecx, d; + __asm__("cpuid\n\t" : "+a"(a), "=b"(b), "+c"(c), "=d"(d)); + *eax = a; + *ebx = b; + *ecx = c; + *edx = d; +#endif +} + +static inline uint64_t xgetbv(void) { +#if defined(_MSC_VER) + return _xgetbv(0); +#else + uint32_t xcr0_lo, xcr0_hi; + __asm__("xgetbv\n\t" : "=a"(xcr0_lo), "=d"(xcr0_hi) : "c"(0)); + return xcr0_lo | ((uint64_t)xcr0_hi << 32); +#endif +} + +/** + * This is a relatively expensive function but it will get called at most + * *once* per compilation units. Normally, the CRoaring library is built + * as one compilation unit. + */ +static inline uint32_t dynamic_croaring_detect_supported_architectures(void) { + uint32_t eax, ebx, ecx, edx; + uint32_t host_isa = 0x0; + // Can be found on Intel ISA Reference for CPUID + static uint32_t cpuid_avx2_bit = + 1 << 5; ///< @private Bit 5 of EBX for EAX=0x7 + static uint32_t cpuid_bmi1_bit = + 1 << 3; ///< @private bit 3 of EBX for EAX=0x7 + static uint32_t cpuid_bmi2_bit = + 1 << 8; ///< @private bit 8 of EBX for EAX=0x7 + static uint32_t cpuid_avx512f_bit = + 1 << 16; ///< @private bit 16 of EBX for EAX=0x7 + static uint32_t cpuid_avx512dq_bit = + 1 << 17; ///< @private bit 17 of EBX for EAX=0x7 + static uint32_t cpuid_avx512bw_bit = + 1 << 30; ///< @private bit 30 of EBX for EAX=0x7 + static uint32_t cpuid_avx512vbmi2_bit = + 1 << 6; ///< @private bit 6 of ECX for EAX=0x7 + static uint32_t cpuid_avx512bitalg_bit = + 1 << 12; ///< @private bit 12 of ECX for EAX=0x7 + static uint32_t cpuid_avx512vpopcntdq_bit = + 1 << 14; ///< @private bit 14 of ECX for EAX=0x7 + static uint64_t cpuid_avx256_saved = 1 << 2; ///< @private bit 2 = AVX + static uint64_t cpuid_avx512_saved = + 7 << 5; ///< @private bits 5,6,7 = opmask, ZMM_hi256, hi16_ZMM + static uint32_t cpuid_sse42_bit = + 1 << 20; ///< @private bit 20 of ECX for EAX=0x1 + static uint32_t cpuid_osxsave = + (1 << 26) | (1 << 27); ///< @private bits 26+27 of ECX for EAX=0x1 + static uint32_t cpuid_pclmulqdq_bit = + 1 << 1; ///< @private bit 1 of ECX for EAX=0x1 + + // EBX for EAX=0x1 + eax = 0x1; + ecx = 0x0; + cpuid(&eax, &ebx, &ecx, &edx); + + if (ecx & cpuid_sse42_bit) { + host_isa |= CROARING_SSE42; + } else { + return host_isa; // everything after is redundant + } + + if (ecx & cpuid_pclmulqdq_bit) { + host_isa |= CROARING_PCLMULQDQ; + } + + if ((ecx & cpuid_osxsave) != cpuid_osxsave) { + return host_isa; + } + + // xgetbv for checking if the OS saves registers + uint64_t xcr0 = xgetbv(); + + if ((xcr0 & cpuid_avx256_saved) == 0) { + return host_isa; + } + + // ECX for EAX=0x7 + eax = 0x7; + ecx = 0x0; + cpuid(&eax, &ebx, &ecx, &edx); + if (ebx & cpuid_avx2_bit) { + host_isa |= CROARING_AVX2; + } + if (ebx & cpuid_bmi1_bit) { + host_isa |= CROARING_BMI1; + } + + if (ebx & cpuid_bmi2_bit) { + host_isa |= CROARING_BMI2; + } + + if (!((xcr0 & cpuid_avx512_saved) == cpuid_avx512_saved)) { + return host_isa; + } + + if (ebx & cpuid_avx512f_bit) { + host_isa |= CROARING_AVX512F; + } + + if (ebx & cpuid_avx512bw_bit) { + host_isa |= CROARING_AVX512BW; + } + + if (ebx & cpuid_avx512dq_bit) { + host_isa |= CROARING_AVX512DQ; + } + + if (ecx & cpuid_avx512vbmi2_bit) { + host_isa |= CROARING_AVX512VBMI2; + } + + if (ecx & cpuid_avx512bitalg_bit) { + host_isa |= CROARING_AVX512BITALG; + } + + if (ecx & cpuid_avx512vpopcntdq_bit) { + host_isa |= CROARING_AVX512VPOPCNTDQ; + } + + return host_isa; +} + +#endif // end SIMD extension detection code + +#if defined(__x86_64__) || defined(_M_AMD64) // x64 + +#if CROARING_ATOMIC_IMPL == CROARING_ATOMIC_IMPL_CPP +static inline uint32_t croaring_detect_supported_architectures(void) { + // thread-safe as per the C++11 standard. + static uint32_t buffer = dynamic_croaring_detect_supported_architectures(); + return buffer; +} +#elif CROARING_ATOMIC_IMPL == CROARING_ATOMIC_IMPL_C +static uint32_t croaring_detect_supported_architectures(void) { + // we use an atomic for thread safety + static _Atomic uint32_t buffer = CROARING_UNINITIALIZED; + if (buffer == CROARING_UNINITIALIZED) { + // atomicity is sufficient + buffer = dynamic_croaring_detect_supported_architectures(); + } + return buffer; +} +#else +// If we do not have atomics, we do the best we can. +static inline uint32_t croaring_detect_supported_architectures(void) { + static uint32_t buffer = CROARING_UNINITIALIZED; + if (buffer == CROARING_UNINITIALIZED) { + buffer = dynamic_croaring_detect_supported_architectures(); + } + return buffer; +} +#endif // CROARING_C_ATOMIC + +#ifdef ROARING_DISABLE_AVX + +int croaring_hardware_support(void) { return 0; } + +#elif defined(__AVX512F__) && defined(__AVX512DQ__) && \ + defined(__AVX512BW__) && defined(__AVX512VBMI2__) && \ + defined(__AVX512BITALG__) && defined(__AVX512VPOPCNTDQ__) +int croaring_hardware_support(void) { + return ROARING_SUPPORTS_AVX2 | ROARING_SUPPORTS_AVX512; +} +#elif defined(__AVX2__) + +int croaring_hardware_support(void) { + static +#if CROARING_ATOMIC_IMPL == CROARING_ATOMIC_IMPL_C + _Atomic +#endif + int support = 0xFFFFFFF; + if (support == 0xFFFFFFF) { + bool avx512_support = false; +#if CROARING_COMPILER_SUPPORTS_AVX512 + avx512_support = + ((croaring_detect_supported_architectures() & + CROARING_AVX512_REQUIRED) == CROARING_AVX512_REQUIRED); +#endif + support = ROARING_SUPPORTS_AVX2 | + (avx512_support ? ROARING_SUPPORTS_AVX512 : 0); + } + return support; +} +#else + +int croaring_hardware_support(void) { + static +#if CROARING_ATOMIC_IMPL == CROARING_ATOMIC_IMPL_C + _Atomic +#endif + int support = 0xFFFFFFF; + if (support == 0xFFFFFFF) { + bool has_avx2 = (croaring_detect_supported_architectures() & + CROARING_AVX2) == CROARING_AVX2; + bool has_avx512 = false; +#if CROARING_COMPILER_SUPPORTS_AVX512 + has_avx512 = (croaring_detect_supported_architectures() & + CROARING_AVX512_REQUIRED) == CROARING_AVX512_REQUIRED; +#endif // CROARING_COMPILER_SUPPORTS_AVX512 + support = (has_avx2 ? ROARING_SUPPORTS_AVX2 : 0) | + (has_avx512 ? ROARING_SUPPORTS_AVX512 : 0); + } + return support; +} +#endif + +#endif // defined(__x86_64__) || defined(_M_AMD64) // x64 +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/memory.c b/contrib/libs/croaring/src/memory.c new file mode 100644 index 000000000000..1b474ed992b7 --- /dev/null +++ b/contrib/libs/croaring/src/memory.c @@ -0,0 +1,64 @@ +#include <stdlib.h> + +#include <roaring/memory.h> + +// without the following, we get lots of warnings about posix_memalign +#ifndef __cplusplus +extern int posix_memalign(void** __memptr, size_t __alignment, size_t __size); +#endif //__cplusplus // C++ does not have a well defined signature + +// portable version of posix_memalign +static void* roaring_bitmap_aligned_malloc(size_t alignment, size_t size) { + void* p; +#ifdef _MSC_VER + p = _aligned_malloc(size, alignment); +#elif defined(__MINGW32__) || defined(__MINGW64__) + p = __mingw_aligned_malloc(size, alignment); +#else + // somehow, if this is used before including "x86intrin.h", it creates an + // implicit defined warning. + if (posix_memalign(&p, alignment, size) != 0) return NULL; +#endif + return p; +} + +static void roaring_bitmap_aligned_free(void* memblock) { +#ifdef _MSC_VER + _aligned_free(memblock); +#elif defined(__MINGW32__) || defined(__MINGW64__) + __mingw_aligned_free(memblock); +#else + free(memblock); +#endif +} + +static roaring_memory_t global_memory_hook = { + .malloc = malloc, + .realloc = realloc, + .calloc = calloc, + .free = free, + .aligned_malloc = roaring_bitmap_aligned_malloc, + .aligned_free = roaring_bitmap_aligned_free, +}; + +void roaring_init_memory_hook(roaring_memory_t memory_hook) { + global_memory_hook = memory_hook; +} + +void* roaring_malloc(size_t n) { return global_memory_hook.malloc(n); } + +void* roaring_realloc(void* p, size_t new_sz) { + return global_memory_hook.realloc(p, new_sz); +} + +void* roaring_calloc(size_t n_elements, size_t element_size) { + return global_memory_hook.calloc(n_elements, element_size); +} + +void roaring_free(void* p) { global_memory_hook.free(p); } + +void* roaring_aligned_malloc(size_t alignment, size_t size) { + return global_memory_hook.aligned_malloc(alignment, size); +} + +void roaring_aligned_free(void* p) { global_memory_hook.aligned_free(p); } diff --git a/contrib/libs/croaring/src/roaring.c b/contrib/libs/croaring/src/roaring.c new file mode 100644 index 000000000000..f644b8f071af --- /dev/null +++ b/contrib/libs/croaring/src/roaring.c @@ -0,0 +1,3386 @@ +#include <assert.h> +#include <inttypes.h> +#include <stdarg.h> +#include <stdint.h> +#include <stdio.h> +#include <string.h> + +#include <roaring/roaring.h> + +// Include after roaring.h +#include <roaring/array_util.h> +#include <roaring/bitset_util.h> +#include <roaring/containers/containers.h> +#include <roaring/roaring_array.h> + +#ifdef __cplusplus +using namespace ::roaring::internal; + +extern "C" { +namespace roaring { +namespace api { +#endif + +#define CROARING_SERIALIZATION_ARRAY_UINT32 1 +#define CROARING_SERIALIZATION_CONTAINER 2 +extern inline int roaring_trailing_zeroes(unsigned long long input_num); +extern inline int roaring_leading_zeroes(unsigned long long input_num); +extern inline void roaring_bitmap_init_cleared(roaring_bitmap_t *r); +extern inline bool roaring_bitmap_get_copy_on_write(const roaring_bitmap_t *r); +extern inline void roaring_bitmap_set_copy_on_write(roaring_bitmap_t *r, + bool cow); +extern inline roaring_bitmap_t *roaring_bitmap_create(void); +extern inline void roaring_bitmap_add_range(roaring_bitmap_t *r, uint64_t min, + uint64_t max); +extern inline void roaring_bitmap_remove_range(roaring_bitmap_t *r, + uint64_t min, uint64_t max); + +static inline bool is_cow(const roaring_bitmap_t *r) { + return r->high_low_container.flags & ROARING_FLAG_COW; +} +static inline bool is_frozen(const roaring_bitmap_t *r) { + return r->high_low_container.flags & ROARING_FLAG_FROZEN; +} + +// this is like roaring_bitmap_add, but it populates pointer arguments in such a +// way +// that we can recover the container touched, which, in turn can be used to +// accelerate some functions (when you repeatedly need to add to the same +// container) +static inline container_t *containerptr_roaring_bitmap_add(roaring_bitmap_t *r, + uint32_t val, + uint8_t *type, + int *index) { + roaring_array_t *ra = &r->high_low_container; + + uint16_t hb = val >> 16; + const int i = ra_get_index(ra, hb); + if (i >= 0) { + ra_unshare_container_at_index(ra, (uint16_t)i); + container_t *c = ra_get_container_at_index(ra, (uint16_t)i, type); + uint8_t new_type = *type; + container_t *c2 = container_add(c, val & 0xFFFF, *type, &new_type); + *index = i; + if (c2 != c) { + container_free(c, *type); + ra_set_container_at_index(ra, i, c2, new_type); + *type = new_type; + return c2; + } else { + return c; + } + } else { + array_container_t *new_ac = array_container_create(); + container_t *c = + container_add(new_ac, val & 0xFFFF, ARRAY_CONTAINER_TYPE, type); + // we could just assume that it stays an array container + ra_insert_new_key_value_at(ra, -i - 1, hb, c, *type); + *index = -i - 1; + return c; + } +} + +roaring_bitmap_t *roaring_bitmap_create_with_capacity(uint32_t cap) { + roaring_bitmap_t *ans = + (roaring_bitmap_t *)roaring_malloc(sizeof(roaring_bitmap_t)); + if (!ans) { + return NULL; + } + bool is_ok = ra_init_with_capacity(&ans->high_low_container, cap); + if (!is_ok) { + roaring_free(ans); + return NULL; + } + return ans; +} + +bool roaring_bitmap_init_with_capacity(roaring_bitmap_t *r, uint32_t cap) { + return ra_init_with_capacity(&r->high_low_container, cap); +} + +static inline void add_bulk_impl(roaring_bitmap_t *r, + roaring_bulk_context_t *context, + uint32_t val) { + uint16_t key = val >> 16; + if (context->container == NULL || context->key != key) { + uint8_t typecode; + int idx; + context->container = + containerptr_roaring_bitmap_add(r, val, &typecode, &idx); + context->typecode = typecode; + context->idx = idx; + context->key = key; + } else { + // no need to seek the container, it is at hand + // because we already have the container at hand, we can do the + // insertion directly, bypassing the roaring_bitmap_add call + uint8_t new_typecode; + container_t *container2 = container_add( + context->container, val & 0xFFFF, context->typecode, &new_typecode); + if (container2 != context->container) { + // rare instance when we need to change the container type + container_free(context->container, context->typecode); + ra_set_container_at_index(&r->high_low_container, context->idx, + container2, new_typecode); + context->typecode = new_typecode; + context->container = container2; + } + } +} + +void roaring_bitmap_add_many(roaring_bitmap_t *r, size_t n_args, + const uint32_t *vals) { + uint32_t val; + const uint32_t *start = vals; + const uint32_t *end = vals + n_args; + const uint32_t *current_val = start; + + if (n_args == 0) { + return; + } + + uint8_t typecode; + int idx; + container_t *container; + val = *current_val; + container = containerptr_roaring_bitmap_add(r, val, &typecode, &idx); + roaring_bulk_context_t context = {container, idx, (uint16_t)(val >> 16), + typecode}; + + for (; current_val != end; current_val++) { + memcpy(&val, current_val, sizeof(val)); + add_bulk_impl(r, &context, val); + } +} + +void roaring_bitmap_add_bulk(roaring_bitmap_t *r, + roaring_bulk_context_t *context, uint32_t val) { + add_bulk_impl(r, context, val); +} + +bool roaring_bitmap_contains_bulk(const roaring_bitmap_t *r, + roaring_bulk_context_t *context, + uint32_t val) { + uint16_t key = val >> 16; + if (context->container == NULL || context->key != key) { + int32_t start_idx = -1; + if (context->container != NULL && context->key < key) { + start_idx = context->idx; + } + int idx = ra_advance_until(&r->high_low_container, key, start_idx); + if (idx == ra_get_size(&r->high_low_container)) { + return false; + } + uint8_t typecode; + context->container = ra_get_container_at_index( + &r->high_low_container, (uint16_t)idx, &typecode); + context->typecode = typecode; + context->idx = idx; + context->key = + ra_get_key_at_index(&r->high_low_container, (uint16_t)idx); + // ra_advance_until finds the next key >= the target, we found a later + // container. + if (context->key != key) { + return false; + } + } + // context is now set up + return container_contains(context->container, val & 0xFFFF, + context->typecode); +} + +roaring_bitmap_t *roaring_bitmap_of_ptr(size_t n_args, const uint32_t *vals) { + roaring_bitmap_t *answer = roaring_bitmap_create(); + roaring_bitmap_add_many(answer, n_args, vals); + return answer; +} + +roaring_bitmap_t *roaring_bitmap_of(size_t n_args, ...) { + // todo: could be greatly optimized but we do not expect this call to ever + // include long lists + roaring_bitmap_t *answer = roaring_bitmap_create(); + roaring_bulk_context_t context = {0}; + va_list ap; + va_start(ap, n_args); + for (size_t i = 0; i < n_args; i++) { + uint32_t val = va_arg(ap, uint32_t); + roaring_bitmap_add_bulk(answer, &context, val); + } + va_end(ap); + return answer; +} + +static inline uint64_t minimum_uint64(uint64_t a, uint64_t b) { + return (a < b) ? a : b; +} + +roaring_bitmap_t *roaring_bitmap_from_range(uint64_t min, uint64_t max, + uint32_t step) { + if (max >= UINT64_C(0x100000000)) { + max = UINT64_C(0x100000000); + } + if (step == 0) return NULL; + if (max <= min) return NULL; + roaring_bitmap_t *answer = roaring_bitmap_create(); + if (step >= (1 << 16)) { + for (uint32_t value = (uint32_t)min; value < max; value += step) { + roaring_bitmap_add(answer, value); + } + return answer; + } + uint64_t min_tmp = min; + do { + uint32_t key = (uint32_t)min_tmp >> 16; + uint32_t container_min = min_tmp & 0xFFFF; + uint32_t container_max = + (uint32_t)minimum_uint64(max - (key << 16), 1 << 16); + uint8_t type; + container_t *container = container_from_range( + &type, container_min, container_max, (uint16_t)step); + ra_append(&answer->high_low_container, (uint16_t)key, container, type); + uint32_t gap = container_max - container_min + step - 1; + min_tmp += gap - (gap % step); + } while (min_tmp < max); + // cardinality of bitmap will be ((uint64_t) max - min + step - 1 ) / step + return answer; +} + +void roaring_bitmap_add_range_closed(roaring_bitmap_t *r, uint32_t min, + uint32_t max) { + if (min > max) { + return; + } + + roaring_array_t *ra = &r->high_low_container; + + uint32_t min_key = min >> 16; + uint32_t max_key = max >> 16; + + int32_t num_required_containers = max_key - min_key + 1; + int32_t suffix_length = + count_greater(ra->keys, ra->size, (uint16_t)max_key); + int32_t prefix_length = + count_less(ra->keys, ra->size - suffix_length, (uint16_t)min_key); + int32_t common_length = ra->size - prefix_length - suffix_length; + + if (num_required_containers > common_length) { + ra_shift_tail(ra, suffix_length, + num_required_containers - common_length); + } + + int32_t src = prefix_length + common_length - 1; + int32_t dst = ra->size - suffix_length - 1; + for (uint32_t key = max_key; key != min_key - 1; + key--) { // beware of min_key==0 + uint32_t container_min = (min_key == key) ? (min & 0xffff) : 0; + uint32_t container_max = (max_key == key) ? (max & 0xffff) : 0xffff; + container_t *new_container; + uint8_t new_type; + + if (src >= 0 && ra->keys[src] == key) { + ra_unshare_container_at_index(ra, (uint16_t)src); + new_container = + container_add_range(ra->containers[src], ra->typecodes[src], + container_min, container_max, &new_type); + if (new_container != ra->containers[src]) { + container_free(ra->containers[src], ra->typecodes[src]); + } + src--; + } else { + new_container = container_from_range(&new_type, container_min, + container_max + 1, 1); + } + ra_replace_key_and_container_at_index(ra, dst, (uint16_t)key, + new_container, new_type); + dst--; + } +} + +void roaring_bitmap_remove_range_closed(roaring_bitmap_t *r, uint32_t min, + uint32_t max) { + if (min > max) { + return; + } + + roaring_array_t *ra = &r->high_low_container; + + uint32_t min_key = min >> 16; + uint32_t max_key = max >> 16; + + int32_t src = count_less(ra->keys, ra->size, (uint16_t)min_key); + int32_t dst = src; + while (src < ra->size && ra->keys[src] <= max_key) { + uint32_t container_min = + (min_key == ra->keys[src]) ? (min & 0xffff) : 0; + uint32_t container_max = + (max_key == ra->keys[src]) ? (max & 0xffff) : 0xffff; + ra_unshare_container_at_index(ra, (uint16_t)src); + container_t *new_container; + uint8_t new_type; + new_container = + container_remove_range(ra->containers[src], ra->typecodes[src], + container_min, container_max, &new_type); + if (new_container != ra->containers[src]) { + container_free(ra->containers[src], ra->typecodes[src]); + } + if (new_container) { + ra_replace_key_and_container_at_index(ra, dst, ra->keys[src], + new_container, new_type); + dst++; + } + src++; + } + if (src > dst) { + ra_shift_tail(ra, ra->size - src, dst - src); + } +} + +void roaring_bitmap_printf(const roaring_bitmap_t *r) { + const roaring_array_t *ra = &r->high_low_container; + + printf("{"); + for (int i = 0; i < ra->size; ++i) { + container_printf_as_uint32_array(ra->containers[i], ra->typecodes[i], + ((uint32_t)ra->keys[i]) << 16); + + if (i + 1 < ra->size) { + printf(","); + } + } + printf("}"); +} + +void roaring_bitmap_printf_describe(const roaring_bitmap_t *r) { + const roaring_array_t *ra = &r->high_low_container; + + printf("{"); + for (int i = 0; i < ra->size; ++i) { + printf("%d: %s (%d)", ra->keys[i], + get_full_container_name(ra->containers[i], ra->typecodes[i]), + container_get_cardinality(ra->containers[i], ra->typecodes[i])); + if (ra->typecodes[i] == SHARED_CONTAINER_TYPE) { + printf("(shared count = %" PRIu32 " )", + croaring_refcount_get( + &(CAST_shared(ra->containers[i])->counter))); + } + + if (i + 1 < ra->size) { + printf(", "); + } + } + printf("}"); +} + +typedef struct min_max_sum_s { + uint32_t min; + uint32_t max; + uint64_t sum; +} min_max_sum_t; + +static bool min_max_sum_fnc(uint32_t value, void *param) { + min_max_sum_t *mms = (min_max_sum_t *)param; + if (value > mms->max) mms->max = value; + if (value < mms->min) mms->min = value; + mms->sum += value; + return true; // we always process all data points +} + +/** + * (For advanced users.) + * Collect statistics about the bitmap + */ +void roaring_bitmap_statistics(const roaring_bitmap_t *r, + roaring_statistics_t *stat) { + const roaring_array_t *ra = &r->high_low_container; + + memset(stat, 0, sizeof(*stat)); + stat->n_containers = ra->size; + stat->cardinality = roaring_bitmap_get_cardinality(r); + min_max_sum_t mms; + mms.min = UINT32_C(0xFFFFFFFF); + mms.max = UINT32_C(0); + mms.sum = 0; + roaring_iterate(r, &min_max_sum_fnc, &mms); + stat->min_value = mms.min; + stat->max_value = mms.max; + stat->sum_value = mms.sum; + + for (int i = 0; i < ra->size; ++i) { + uint8_t truetype = + get_container_type(ra->containers[i], ra->typecodes[i]); + uint32_t card = + container_get_cardinality(ra->containers[i], ra->typecodes[i]); + uint32_t sbytes = + container_size_in_bytes(ra->containers[i], ra->typecodes[i]); + switch (truetype) { + case BITSET_CONTAINER_TYPE: + stat->n_bitset_containers++; + stat->n_values_bitset_containers += card; + stat->n_bytes_bitset_containers += sbytes; + break; + case ARRAY_CONTAINER_TYPE: + stat->n_array_containers++; + stat->n_values_array_containers += card; + stat->n_bytes_array_containers += sbytes; + break; + case RUN_CONTAINER_TYPE: + stat->n_run_containers++; + stat->n_values_run_containers += card; + stat->n_bytes_run_containers += sbytes; + break; + default: + assert(false); + roaring_unreachable; + } + } +} + +/* + * Checks that: + * - Array containers are sorted and contain no duplicates + * - Range containers are sorted and contain no overlapping ranges + * - Roaring containers are sorted by key and there are no duplicate keys + * - The correct container type is use for each container (e.g. bitmaps aren't + * used for small containers) + */ +bool roaring_bitmap_internal_validate(const roaring_bitmap_t *r, + const char **reason) { + const char *reason_local; + if (reason == NULL) { + // Always allow assigning through *reason + reason = &reason_local; + } + *reason = NULL; + const roaring_array_t *ra = &r->high_low_container; + if (ra->size < 0) { + *reason = "negative size"; + return false; + } + if (ra->allocation_size < 0) { + *reason = "negative allocation size"; + return false; + } + if (ra->size > ra->allocation_size) { + *reason = "more containers than allocated space"; + return false; + } + if (ra->flags & ~(ROARING_FLAG_COW | ROARING_FLAG_FROZEN)) { + *reason = "invalid flags"; + return false; + } + if (ra->size == 0) { + return true; + } + + if (ra->keys == NULL) { + *reason = "keys is NULL"; + return false; + } + if (ra->typecodes == NULL) { + *reason = "typecodes is NULL"; + return false; + } + if (ra->containers == NULL) { + *reason = "containers is NULL"; + return false; + } + + uint32_t prev_key = ra->keys[0]; + for (int32_t i = 1; i < ra->size; ++i) { + if (ra->keys[i] <= prev_key) { + *reason = "keys not strictly increasing"; + return false; + } + prev_key = ra->keys[i]; + } + + for (int32_t i = 0; i < ra->size; ++i) { + if (!container_internal_validate(ra->containers[i], ra->typecodes[i], + reason)) { + // reason should already be set + if (*reason == NULL) { + *reason = "container failed to validate but no reason given"; + } + return false; + } + } + + return true; +} + +roaring_bitmap_t *roaring_bitmap_copy(const roaring_bitmap_t *r) { + roaring_bitmap_t *ans = + (roaring_bitmap_t *)roaring_malloc(sizeof(roaring_bitmap_t)); + if (!ans) { + return NULL; + } + if (!ra_init_with_capacity( // allocation of list of containers can fail + &ans->high_low_container, r->high_low_container.size)) { + roaring_free(ans); + return NULL; + } + if (!ra_overwrite( // memory allocation of individual containers may fail + &r->high_low_container, &ans->high_low_container, is_cow(r))) { + roaring_bitmap_free(ans); // overwrite should leave in freeable state + return NULL; + } + roaring_bitmap_set_copy_on_write(ans, is_cow(r)); + return ans; +} + +bool roaring_bitmap_overwrite(roaring_bitmap_t *dest, + const roaring_bitmap_t *src) { + roaring_bitmap_set_copy_on_write(dest, is_cow(src)); + return ra_overwrite(&src->high_low_container, &dest->high_low_container, + is_cow(src)); +} + +void roaring_bitmap_free(const roaring_bitmap_t *r) { + if (r == NULL) { + return; + } + if (!is_frozen(r)) { + ra_clear((roaring_array_t *)&r->high_low_container); + } + roaring_free((roaring_bitmap_t *)r); +} + +void roaring_bitmap_clear(roaring_bitmap_t *r) { + ra_reset(&r->high_low_container); +} + +void roaring_bitmap_add(roaring_bitmap_t *r, uint32_t val) { + roaring_array_t *ra = &r->high_low_container; + + const uint16_t hb = val >> 16; + const int i = ra_get_index(ra, hb); + uint8_t typecode; + if (i >= 0) { + ra_unshare_container_at_index(ra, (uint16_t)i); + container_t *container = + ra_get_container_at_index(ra, (uint16_t)i, &typecode); + uint8_t newtypecode = typecode; + container_t *container2 = + container_add(container, val & 0xFFFF, typecode, &newtypecode); + if (container2 != container) { + container_free(container, typecode); + ra_set_container_at_index(&r->high_low_container, i, container2, + newtypecode); + } + } else { + array_container_t *newac = array_container_create(); + container_t *container = + container_add(newac, val & 0xFFFF, ARRAY_CONTAINER_TYPE, &typecode); + // we could just assume that it stays an array container + ra_insert_new_key_value_at(&r->high_low_container, -i - 1, hb, + container, typecode); + } +} + +bool roaring_bitmap_add_checked(roaring_bitmap_t *r, uint32_t val) { + const uint16_t hb = val >> 16; + const int i = ra_get_index(&r->high_low_container, hb); + uint8_t typecode; + bool result = false; + if (i >= 0) { + ra_unshare_container_at_index(&r->high_low_container, (uint16_t)i); + container_t *container = ra_get_container_at_index( + &r->high_low_container, (uint16_t)i, &typecode); + + const int oldCardinality = + container_get_cardinality(container, typecode); + + uint8_t newtypecode = typecode; + container_t *container2 = + container_add(container, val & 0xFFFF, typecode, &newtypecode); + if (container2 != container) { + container_free(container, typecode); + ra_set_container_at_index(&r->high_low_container, i, container2, + newtypecode); + result = true; + } else { + const int newCardinality = + container_get_cardinality(container, newtypecode); + + result = oldCardinality != newCardinality; + } + } else { + array_container_t *newac = array_container_create(); + container_t *container = + container_add(newac, val & 0xFFFF, ARRAY_CONTAINER_TYPE, &typecode); + // we could just assume that it stays an array container + ra_insert_new_key_value_at(&r->high_low_container, -i - 1, hb, + container, typecode); + result = true; + } + + return result; +} + +void roaring_bitmap_remove(roaring_bitmap_t *r, uint32_t val) { + const uint16_t hb = val >> 16; + const int i = ra_get_index(&r->high_low_container, hb); + uint8_t typecode; + if (i >= 0) { + ra_unshare_container_at_index(&r->high_low_container, (uint16_t)i); + container_t *container = ra_get_container_at_index( + &r->high_low_container, (uint16_t)i, &typecode); + uint8_t newtypecode = typecode; + container_t *container2 = + container_remove(container, val & 0xFFFF, typecode, &newtypecode); + if (container2 != container) { + container_free(container, typecode); + ra_set_container_at_index(&r->high_low_container, i, container2, + newtypecode); + } + if (container_get_cardinality(container2, newtypecode) != 0) { + ra_set_container_at_index(&r->high_low_container, i, container2, + newtypecode); + } else { + ra_remove_at_index_and_free(&r->high_low_container, i); + } + } +} + +bool roaring_bitmap_remove_checked(roaring_bitmap_t *r, uint32_t val) { + const uint16_t hb = val >> 16; + const int i = ra_get_index(&r->high_low_container, hb); + uint8_t typecode; + bool result = false; + if (i >= 0) { + ra_unshare_container_at_index(&r->high_low_container, (uint16_t)i); + container_t *container = ra_get_container_at_index( + &r->high_low_container, (uint16_t)i, &typecode); + + const int oldCardinality = + container_get_cardinality(container, typecode); + + uint8_t newtypecode = typecode; + container_t *container2 = + container_remove(container, val & 0xFFFF, typecode, &newtypecode); + if (container2 != container) { + container_free(container, typecode); + ra_set_container_at_index(&r->high_low_container, i, container2, + newtypecode); + } + + const int newCardinality = + container_get_cardinality(container2, newtypecode); + + if (newCardinality != 0) { + ra_set_container_at_index(&r->high_low_container, i, container2, + newtypecode); + } else { + ra_remove_at_index_and_free(&r->high_low_container, i); + } + + result = oldCardinality != newCardinality; + } + return result; +} + +void roaring_bitmap_remove_many(roaring_bitmap_t *r, size_t n_args, + const uint32_t *vals) { + if (n_args == 0 || r->high_low_container.size == 0) { + return; + } + int32_t pos = + -1; // position of the container used in the previous iteration + for (size_t i = 0; i < n_args; i++) { + uint16_t key = (uint16_t)(vals[i] >> 16); + if (pos < 0 || key != r->high_low_container.keys[pos]) { + pos = ra_get_index(&r->high_low_container, key); + } + if (pos >= 0) { + uint8_t new_typecode; + container_t *new_container; + new_container = container_remove( + r->high_low_container.containers[pos], vals[i] & 0xffff, + r->high_low_container.typecodes[pos], &new_typecode); + if (new_container != r->high_low_container.containers[pos]) { + container_free(r->high_low_container.containers[pos], + r->high_low_container.typecodes[pos]); + ra_replace_key_and_container_at_index(&r->high_low_container, + pos, key, new_container, + new_typecode); + } + if (!container_nonzero_cardinality(new_container, new_typecode)) { + container_free(new_container, new_typecode); + ra_remove_at_index(&r->high_low_container, pos); + pos = -1; + } + } + } +} + +// there should be some SIMD optimizations possible here +roaring_bitmap_t *roaring_bitmap_and(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + uint8_t result_type = 0; + const int length1 = x1->high_low_container.size, + length2 = x2->high_low_container.size; + uint32_t neededcap = length1 > length2 ? length2 : length1; + roaring_bitmap_t *answer = roaring_bitmap_create_with_capacity(neededcap); + roaring_bitmap_set_copy_on_write(answer, is_cow(x1) || is_cow(x2)); + + int pos1 = 0, pos2 = 0; + + while (pos1 < length1 && pos2 < length2) { + const uint16_t s1 = + ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + const uint16_t s2 = + ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + if (s1 == s2) { + uint8_t type1, type2; + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + container_t *c = container_and(c1, type1, c2, type2, &result_type); + + if (container_nonzero_cardinality(c, result_type)) { + ra_append(&answer->high_low_container, s1, c, result_type); + } else { + container_free(c, result_type); // otherwise: memory leak! + } + ++pos1; + ++pos2; + } else if (s1 < s2) { // s1 < s2 + pos1 = ra_advance_until(&x1->high_low_container, s2, pos1); + } else { // s1 > s2 + pos2 = ra_advance_until(&x2->high_low_container, s1, pos2); + } + } + return answer; +} + +/** + * Compute the union of 'number' bitmaps. + */ +roaring_bitmap_t *roaring_bitmap_or_many(size_t number, + const roaring_bitmap_t **x) { + if (number == 0) { + return roaring_bitmap_create(); + } + if (number == 1) { + return roaring_bitmap_copy(x[0]); + } + roaring_bitmap_t *answer = + roaring_bitmap_lazy_or(x[0], x[1], LAZY_OR_BITSET_CONVERSION); + for (size_t i = 2; i < number; i++) { + roaring_bitmap_lazy_or_inplace(answer, x[i], LAZY_OR_BITSET_CONVERSION); + } + roaring_bitmap_repair_after_lazy(answer); + return answer; +} + +/** + * Compute the xor of 'number' bitmaps. + */ +roaring_bitmap_t *roaring_bitmap_xor_many(size_t number, + const roaring_bitmap_t **x) { + if (number == 0) { + return roaring_bitmap_create(); + } + if (number == 1) { + return roaring_bitmap_copy(x[0]); + } + roaring_bitmap_t *answer = roaring_bitmap_lazy_xor(x[0], x[1]); + for (size_t i = 2; i < number; i++) { + roaring_bitmap_lazy_xor_inplace(answer, x[i]); + } + roaring_bitmap_repair_after_lazy(answer); + return answer; +} + +// inplace and (modifies its first argument). +void roaring_bitmap_and_inplace(roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + if (x1 == x2) return; + int pos1 = 0, pos2 = 0, intersection_size = 0; + const int length1 = ra_get_size(&x1->high_low_container); + const int length2 = ra_get_size(&x2->high_low_container); + + // any skipped-over or newly emptied containers in x1 + // have to be freed. + while (pos1 < length1 && pos2 < length2) { + const uint16_t s1 = + ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + const uint16_t s2 = + ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + if (s1 == s2) { + uint8_t type1, type2, result_type; + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + + // We do the computation "in place" only when c1 is not a shared + // container. Rationale: using a shared container safely with in + // place computation would require making a copy and then doing the + // computation in place which is likely less efficient than avoiding + // in place entirely and always generating a new container. + container_t *c = + (type1 == SHARED_CONTAINER_TYPE) + ? container_and(c1, type1, c2, type2, &result_type) + : container_iand(c1, type1, c2, type2, &result_type); + + if (c != c1) { // in this instance a new container was created, and + // we need to free the old one + container_free(c1, type1); + } + if (container_nonzero_cardinality(c, result_type)) { + ra_replace_key_and_container_at_index(&x1->high_low_container, + intersection_size, s1, c, + result_type); + intersection_size++; + } else { + container_free(c, result_type); + } + ++pos1; + ++pos2; + } else if (s1 < s2) { + pos1 = ra_advance_until_freeing(&x1->high_low_container, s2, pos1); + } else { // s1 > s2 + pos2 = ra_advance_until(&x2->high_low_container, s1, pos2); + } + } + + // if we ended early because x2 ran out, then all remaining in x1 should be + // freed + while (pos1 < length1) { + container_free(x1->high_low_container.containers[pos1], + x1->high_low_container.typecodes[pos1]); + ++pos1; + } + + // all containers after this have either been copied or freed + ra_downsize(&x1->high_low_container, intersection_size); +} + +roaring_bitmap_t *roaring_bitmap_or(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + uint8_t result_type = 0; + const int length1 = x1->high_low_container.size, + length2 = x2->high_low_container.size; + if (0 == length1) { + return roaring_bitmap_copy(x2); + } + if (0 == length2) { + return roaring_bitmap_copy(x1); + } + roaring_bitmap_t *answer = + roaring_bitmap_create_with_capacity(length1 + length2); + roaring_bitmap_set_copy_on_write(answer, is_cow(x1) || is_cow(x2)); + int pos1 = 0, pos2 = 0; + uint8_t type1, type2; + uint16_t s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + uint16_t s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + while (true) { + if (s1 == s2) { + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + container_t *c = container_or(c1, type1, c2, type2, &result_type); + + // since we assume that the initial containers are non-empty, the + // result here + // can only be non-empty + ra_append(&answer->high_low_container, s1, c, result_type); + ++pos1; + ++pos2; + if (pos1 == length1) break; + if (pos2 == length2) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + } else if (s1 < s2) { // s1 < s2 + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + // c1 = container_clone(c1, type1); + c1 = get_copy_of_container(c1, &type1, is_cow(x1)); + if (is_cow(x1)) { + ra_set_container_at_index(&x1->high_low_container, pos1, c1, + type1); + } + ra_append(&answer->high_low_container, s1, c1, type1); + pos1++; + if (pos1 == length1) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + + } else { // s1 > s2 + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + // c2 = container_clone(c2, type2); + c2 = get_copy_of_container(c2, &type2, is_cow(x2)); + if (is_cow(x2)) { + ra_set_container_at_index(&x2->high_low_container, pos2, c2, + type2); + } + ra_append(&answer->high_low_container, s2, c2, type2); + pos2++; + if (pos2 == length2) break; + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + } + } + if (pos1 == length1) { + ra_append_copy_range(&answer->high_low_container, + &x2->high_low_container, pos2, length2, + is_cow(x2)); + } else if (pos2 == length2) { + ra_append_copy_range(&answer->high_low_container, + &x1->high_low_container, pos1, length1, + is_cow(x1)); + } + return answer; +} + +// inplace or (modifies its first argument). +void roaring_bitmap_or_inplace(roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + uint8_t result_type = 0; + int length1 = x1->high_low_container.size; + const int length2 = x2->high_low_container.size; + + if (0 == length2) return; + + if (0 == length1) { + roaring_bitmap_overwrite(x1, x2); + return; + } + int pos1 = 0, pos2 = 0; + uint8_t type1, type2; + uint16_t s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + uint16_t s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + while (true) { + if (s1 == s2) { + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + if (!container_is_full(c1, type1)) { + container_t *c2 = ra_get_container_at_index( + &x2->high_low_container, (uint16_t)pos2, &type2); + container_t *c = + (type1 == SHARED_CONTAINER_TYPE) + ? container_or(c1, type1, c2, type2, &result_type) + : container_ior(c1, type1, c2, type2, &result_type); + + if (c != c1) { // in this instance a new container was created, + // and we need to free the old one + container_free(c1, type1); + } + ra_set_container_at_index(&x1->high_low_container, pos1, c, + result_type); + } + ++pos1; + ++pos2; + if (pos1 == length1) break; + if (pos2 == length2) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + } else if (s1 < s2) { // s1 < s2 + pos1++; + if (pos1 == length1) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + + } else { // s1 > s2 + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + c2 = get_copy_of_container(c2, &type2, is_cow(x2)); + if (is_cow(x2)) { + ra_set_container_at_index(&x2->high_low_container, pos2, c2, + type2); + } + + // container_t *c2_clone = container_clone(c2, type2); + ra_insert_new_key_value_at(&x1->high_low_container, pos1, s2, c2, + type2); + pos1++; + length1++; + pos2++; + if (pos2 == length2) break; + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + } + } + if (pos1 == length1) { + ra_append_copy_range(&x1->high_low_container, &x2->high_low_container, + pos2, length2, is_cow(x2)); + } +} + +roaring_bitmap_t *roaring_bitmap_xor(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + uint8_t result_type = 0; + const int length1 = x1->high_low_container.size, + length2 = x2->high_low_container.size; + if (0 == length1) { + return roaring_bitmap_copy(x2); + } + if (0 == length2) { + return roaring_bitmap_copy(x1); + } + roaring_bitmap_t *answer = + roaring_bitmap_create_with_capacity(length1 + length2); + roaring_bitmap_set_copy_on_write(answer, is_cow(x1) || is_cow(x2)); + int pos1 = 0, pos2 = 0; + uint8_t type1, type2; + uint16_t s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + uint16_t s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + while (true) { + if (s1 == s2) { + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + container_t *c = container_xor(c1, type1, c2, type2, &result_type); + + if (container_nonzero_cardinality(c, result_type)) { + ra_append(&answer->high_low_container, s1, c, result_type); + } else { + container_free(c, result_type); + } + ++pos1; + ++pos2; + if (pos1 == length1) break; + if (pos2 == length2) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + } else if (s1 < s2) { // s1 < s2 + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + c1 = get_copy_of_container(c1, &type1, is_cow(x1)); + if (is_cow(x1)) { + ra_set_container_at_index(&x1->high_low_container, pos1, c1, + type1); + } + ra_append(&answer->high_low_container, s1, c1, type1); + pos1++; + if (pos1 == length1) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + + } else { // s1 > s2 + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + c2 = get_copy_of_container(c2, &type2, is_cow(x2)); + if (is_cow(x2)) { + ra_set_container_at_index(&x2->high_low_container, pos2, c2, + type2); + } + ra_append(&answer->high_low_container, s2, c2, type2); + pos2++; + if (pos2 == length2) break; + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + } + } + if (pos1 == length1) { + ra_append_copy_range(&answer->high_low_container, + &x2->high_low_container, pos2, length2, + is_cow(x2)); + } else if (pos2 == length2) { + ra_append_copy_range(&answer->high_low_container, + &x1->high_low_container, pos1, length1, + is_cow(x1)); + } + return answer; +} + +// inplace xor (modifies its first argument). + +void roaring_bitmap_xor_inplace(roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + assert(x1 != x2); + uint8_t result_type = 0; + int length1 = x1->high_low_container.size; + const int length2 = x2->high_low_container.size; + + if (0 == length2) return; + + if (0 == length1) { + roaring_bitmap_overwrite(x1, x2); + return; + } + + // XOR can have new containers inserted from x2, but can also + // lose containers when x1 and x2 are nonempty and identical. + + int pos1 = 0, pos2 = 0; + uint8_t type1, type2; + uint16_t s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + uint16_t s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + while (true) { + if (s1 == s2) { + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + + // We do the computation "in place" only when c1 is not a shared + // container. Rationale: using a shared container safely with in + // place computation would require making a copy and then doing the + // computation in place which is likely less efficient than avoiding + // in place entirely and always generating a new container. + + container_t *c; + if (type1 == SHARED_CONTAINER_TYPE) { + c = container_xor(c1, type1, c2, type2, &result_type); + shared_container_free(CAST_shared(c1)); // so release + } else { + c = container_ixor(c1, type1, c2, type2, &result_type); + } + + if (container_nonzero_cardinality(c, result_type)) { + ra_set_container_at_index(&x1->high_low_container, pos1, c, + result_type); + ++pos1; + } else { + container_free(c, result_type); + ra_remove_at_index(&x1->high_low_container, pos1); + --length1; + } + + ++pos2; + if (pos1 == length1) break; + if (pos2 == length2) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + } else if (s1 < s2) { // s1 < s2 + pos1++; + if (pos1 == length1) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + + } else { // s1 > s2 + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + c2 = get_copy_of_container(c2, &type2, is_cow(x2)); + if (is_cow(x2)) { + ra_set_container_at_index(&x2->high_low_container, pos2, c2, + type2); + } + + ra_insert_new_key_value_at(&x1->high_low_container, pos1, s2, c2, + type2); + pos1++; + length1++; + pos2++; + if (pos2 == length2) break; + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + } + } + if (pos1 == length1) { + ra_append_copy_range(&x1->high_low_container, &x2->high_low_container, + pos2, length2, is_cow(x2)); + } +} + +roaring_bitmap_t *roaring_bitmap_andnot(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + uint8_t result_type = 0; + const int length1 = x1->high_low_container.size, + length2 = x2->high_low_container.size; + if (0 == length1) { + roaring_bitmap_t *empty_bitmap = roaring_bitmap_create(); + roaring_bitmap_set_copy_on_write(empty_bitmap, + is_cow(x1) || is_cow(x2)); + return empty_bitmap; + } + if (0 == length2) { + return roaring_bitmap_copy(x1); + } + roaring_bitmap_t *answer = roaring_bitmap_create_with_capacity(length1); + roaring_bitmap_set_copy_on_write(answer, is_cow(x1) || is_cow(x2)); + + int pos1 = 0, pos2 = 0; + uint8_t type1, type2; + uint16_t s1 = 0; + uint16_t s2 = 0; + while (true) { + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + if (s1 == s2) { + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + container_t *c = + container_andnot(c1, type1, c2, type2, &result_type); + + if (container_nonzero_cardinality(c, result_type)) { + ra_append(&answer->high_low_container, s1, c, result_type); + } else { + container_free(c, result_type); + } + ++pos1; + ++pos2; + if (pos1 == length1) break; + if (pos2 == length2) break; + } else if (s1 < s2) { // s1 < s2 + const int next_pos1 = + ra_advance_until(&x1->high_low_container, s2, pos1); + ra_append_copy_range(&answer->high_low_container, + &x1->high_low_container, pos1, next_pos1, + is_cow(x1)); + // TODO : perhaps some of the copy_on_write should be based on + // answer rather than x1 (more stringent?). Many similar cases + pos1 = next_pos1; + if (pos1 == length1) break; + } else { // s1 > s2 + pos2 = ra_advance_until(&x2->high_low_container, s1, pos2); + if (pos2 == length2) break; + } + } + if (pos2 == length2) { + ra_append_copy_range(&answer->high_low_container, + &x1->high_low_container, pos1, length1, + is_cow(x1)); + } + return answer; +} + +// inplace andnot (modifies its first argument). + +void roaring_bitmap_andnot_inplace(roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + assert(x1 != x2); + + uint8_t result_type = 0; + int length1 = x1->high_low_container.size; + const int length2 = x2->high_low_container.size; + int intersection_size = 0; + + if (0 == length2) return; + + if (0 == length1) { + roaring_bitmap_clear(x1); + return; + } + + int pos1 = 0, pos2 = 0; + uint8_t type1, type2; + uint16_t s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + uint16_t s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + while (true) { + if (s1 == s2) { + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + + // We do the computation "in place" only when c1 is not a shared + // container. Rationale: using a shared container safely with in + // place computation would require making a copy and then doing the + // computation in place which is likely less efficient than avoiding + // in place entirely and always generating a new container. + + container_t *c; + if (type1 == SHARED_CONTAINER_TYPE) { + c = container_andnot(c1, type1, c2, type2, &result_type); + shared_container_free(CAST_shared(c1)); // release + } else { + c = container_iandnot(c1, type1, c2, type2, &result_type); + } + + if (container_nonzero_cardinality(c, result_type)) { + ra_replace_key_and_container_at_index(&x1->high_low_container, + intersection_size++, s1, + c, result_type); + } else { + container_free(c, result_type); + } + + ++pos1; + ++pos2; + if (pos1 == length1) break; + if (pos2 == length2) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + } else if (s1 < s2) { // s1 < s2 + if (pos1 != intersection_size) { + container_t *c1 = ra_get_container_at_index( + &x1->high_low_container, (uint16_t)pos1, &type1); + + ra_replace_key_and_container_at_index( + &x1->high_low_container, intersection_size, s1, c1, type1); + } + intersection_size++; + pos1++; + if (pos1 == length1) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + + } else { // s1 > s2 + pos2 = ra_advance_until(&x2->high_low_container, s1, pos2); + if (pos2 == length2) break; + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + } + } + + if (pos1 < length1) { + // all containers between intersection_size and + // pos1 are junk. However, they have either been moved + // (thus still referenced) or involved in an iandnot + // that will clean up all containers that could not be reused. + // Thus we should not free the junk containers between + // intersection_size and pos1. + if (pos1 > intersection_size) { + // left slide of remaining items + ra_copy_range(&x1->high_low_container, pos1, length1, + intersection_size); + } + // else current placement is fine + intersection_size += (length1 - pos1); + } + ra_downsize(&x1->high_low_container, intersection_size); +} + +uint64_t roaring_bitmap_get_cardinality(const roaring_bitmap_t *r) { + const roaring_array_t *ra = &r->high_low_container; + + uint64_t card = 0; + for (int i = 0; i < ra->size; ++i) + card += container_get_cardinality(ra->containers[i], ra->typecodes[i]); + return card; +} + +uint64_t roaring_bitmap_range_cardinality(const roaring_bitmap_t *r, + uint64_t range_start, + uint64_t range_end) { + const roaring_array_t *ra = &r->high_low_container; + + if (range_end > UINT32_MAX) { + range_end = UINT32_MAX + UINT64_C(1); + } + if (range_start >= range_end) { + return 0; + } + range_end--; // make range_end inclusive + // now we have: 0 <= range_start <= range_end <= UINT32_MAX + + uint16_t minhb = (uint16_t)(range_start >> 16); + uint16_t maxhb = (uint16_t)(range_end >> 16); + + uint64_t card = 0; + + int i = ra_get_index(ra, minhb); + if (i >= 0) { + if (minhb == maxhb) { + card += container_rank(ra->containers[i], ra->typecodes[i], + range_end & 0xffff); + } else { + card += + container_get_cardinality(ra->containers[i], ra->typecodes[i]); + } + if ((range_start & 0xffff) != 0) { + card -= container_rank(ra->containers[i], ra->typecodes[i], + (range_start & 0xffff) - 1); + } + i++; + } else { + i = -i - 1; + } + + for (; i < ra->size; i++) { + uint16_t key = ra->keys[i]; + if (key < maxhb) { + card += + container_get_cardinality(ra->containers[i], ra->typecodes[i]); + } else if (key == maxhb) { + card += container_rank(ra->containers[i], ra->typecodes[i], + range_end & 0xffff); + break; + } else { + break; + } + } + + return card; +} + +bool roaring_bitmap_is_empty(const roaring_bitmap_t *r) { + return r->high_low_container.size == 0; +} + +void roaring_bitmap_to_uint32_array(const roaring_bitmap_t *r, uint32_t *ans) { + ra_to_uint32_array(&r->high_low_container, ans); +} + +bool roaring_bitmap_range_uint32_array(const roaring_bitmap_t *r, size_t offset, + size_t limit, uint32_t *ans) { + return ra_range_uint32_array(&r->high_low_container, offset, limit, ans); +} + +/** convert array and bitmap containers to run containers when it is more + * efficient; + * also convert from run containers when more space efficient. Returns + * true if the result has at least one run container. + */ +bool roaring_bitmap_run_optimize(roaring_bitmap_t *r) { + bool answer = false; + for (int i = 0; i < r->high_low_container.size; i++) { + uint8_t type_original, type_after; + ra_unshare_container_at_index( + &r->high_low_container, + (uint16_t)i); // TODO: this introduces extra cloning! + container_t *c = ra_get_container_at_index(&r->high_low_container, + (uint16_t)i, &type_original); + container_t *c1 = convert_run_optimize(c, type_original, &type_after); + if (type_after == RUN_CONTAINER_TYPE) { + answer = true; + } + ra_set_container_at_index(&r->high_low_container, i, c1, type_after); + } + return answer; +} + +size_t roaring_bitmap_shrink_to_fit(roaring_bitmap_t *r) { + size_t answer = 0; + for (int i = 0; i < r->high_low_container.size; i++) { + uint8_t type_original; + container_t *c = ra_get_container_at_index(&r->high_low_container, + (uint16_t)i, &type_original); + answer += container_shrink_to_fit(c, type_original); + } + answer += ra_shrink_to_fit(&r->high_low_container); + return answer; +} + +/** + * Remove run-length encoding even when it is more space efficient + * return whether a change was applied + */ +bool roaring_bitmap_remove_run_compression(roaring_bitmap_t *r) { + bool answer = false; + for (int i = 0; i < r->high_low_container.size; i++) { + uint8_t type_original, type_after; + container_t *c = ra_get_container_at_index(&r->high_low_container, + (uint16_t)i, &type_original); + if (get_container_type(c, type_original) == RUN_CONTAINER_TYPE) { + answer = true; + if (type_original == SHARED_CONTAINER_TYPE) { + run_container_t *truec = CAST_run(CAST_shared(c)->container); + int32_t card = run_container_cardinality(truec); + container_t *c1 = convert_to_bitset_or_array_container( + truec, card, &type_after); + shared_container_free(CAST_shared(c)); // frees run as needed + ra_set_container_at_index(&r->high_low_container, i, c1, + type_after); + + } else { + int32_t card = run_container_cardinality(CAST_run(c)); + container_t *c1 = convert_to_bitset_or_array_container( + CAST_run(c), card, &type_after); + run_container_free(CAST_run(c)); + ra_set_container_at_index(&r->high_low_container, i, c1, + type_after); + } + } + } + return answer; +} + +size_t roaring_bitmap_serialize(const roaring_bitmap_t *r, char *buf) { + size_t portablesize = roaring_bitmap_portable_size_in_bytes(r); + uint64_t cardinality = roaring_bitmap_get_cardinality(r); + uint64_t sizeasarray = cardinality * sizeof(uint32_t) + sizeof(uint32_t); + if (portablesize < sizeasarray) { + buf[0] = CROARING_SERIALIZATION_CONTAINER; + return roaring_bitmap_portable_serialize(r, buf + 1) + 1; + } else { + buf[0] = CROARING_SERIALIZATION_ARRAY_UINT32; + memcpy(buf + 1, &cardinality, sizeof(uint32_t)); + roaring_bitmap_to_uint32_array( + r, (uint32_t *)(buf + 1 + sizeof(uint32_t))); + return 1 + (size_t)sizeasarray; + } +} + +size_t roaring_bitmap_size_in_bytes(const roaring_bitmap_t *r) { + size_t portablesize = roaring_bitmap_portable_size_in_bytes(r); + uint64_t sizeasarray = + roaring_bitmap_get_cardinality(r) * sizeof(uint32_t) + sizeof(uint32_t); + return portablesize < sizeasarray ? portablesize + 1 + : (size_t)sizeasarray + 1; +} + +size_t roaring_bitmap_portable_size_in_bytes(const roaring_bitmap_t *r) { + return ra_portable_size_in_bytes(&r->high_low_container); +} + +roaring_bitmap_t *roaring_bitmap_portable_deserialize_safe(const char *buf, + size_t maxbytes) { + roaring_bitmap_t *ans = + (roaring_bitmap_t *)roaring_malloc(sizeof(roaring_bitmap_t)); + if (ans == NULL) { + return NULL; + } + size_t bytesread; + bool is_ok = ra_portable_deserialize(&ans->high_low_container, buf, + maxbytes, &bytesread); + if (!is_ok) { + roaring_free(ans); + return NULL; + } + roaring_bitmap_set_copy_on_write(ans, false); + if (!is_ok) { + roaring_free(ans); + return NULL; + } + return ans; +} + +roaring_bitmap_t *roaring_bitmap_portable_deserialize(const char *buf) { + return roaring_bitmap_portable_deserialize_safe(buf, SIZE_MAX); +} + +size_t roaring_bitmap_portable_deserialize_size(const char *buf, + size_t maxbytes) { + return ra_portable_deserialize_size(buf, maxbytes); +} + +size_t roaring_bitmap_portable_serialize(const roaring_bitmap_t *r, char *buf) { + return ra_portable_serialize(&r->high_low_container, buf); +} + +roaring_bitmap_t *roaring_bitmap_deserialize(const void *buf) { + const char *bufaschar = (const char *)buf; + if (bufaschar[0] == CROARING_SERIALIZATION_ARRAY_UINT32) { + /* This looks like a compressed set of uint32_t elements */ + uint32_t card; + + memcpy(&card, bufaschar + 1, sizeof(uint32_t)); + + const uint32_t *elems = + (const uint32_t *)(bufaschar + 1 + sizeof(uint32_t)); + + roaring_bitmap_t *bitmap = roaring_bitmap_create(); + if (bitmap == NULL) { + return NULL; + } + roaring_bulk_context_t context = {0}; + for (uint32_t i = 0; i < card; i++) { + // elems may not be aligned, read with memcpy + uint32_t elem; + memcpy(&elem, elems + i, sizeof(elem)); + roaring_bitmap_add_bulk(bitmap, &context, elem); + } + return bitmap; + + } else if (bufaschar[0] == CROARING_SERIALIZATION_CONTAINER) { + return roaring_bitmap_portable_deserialize(bufaschar + 1); + } else + return (NULL); +} + +roaring_bitmap_t *roaring_bitmap_deserialize_safe(const void *buf, + size_t maxbytes) { + if (maxbytes < 1) { + return NULL; + } + + const char *bufaschar = (const char *)buf; + if (bufaschar[0] == CROARING_SERIALIZATION_ARRAY_UINT32) { + if (maxbytes < 1 + sizeof(uint32_t)) { + return NULL; + } + + /* This looks like a compressed set of uint32_t elements */ + uint32_t card; + memcpy(&card, bufaschar + 1, sizeof(uint32_t)); + + // Check the buffer is big enough to contain card uint32_t elements + if (maxbytes < 1 + sizeof(uint32_t) + card * sizeof(uint32_t)) { + return NULL; + } + + const uint32_t *elems = + (const uint32_t *)(bufaschar + 1 + sizeof(uint32_t)); + + roaring_bitmap_t *bitmap = roaring_bitmap_create(); + if (bitmap == NULL) { + return NULL; + } + roaring_bulk_context_t context = {0}; + for (uint32_t i = 0; i < card; i++) { + // elems may not be aligned, read with memcpy + uint32_t elem; + memcpy(&elem, elems + i, sizeof(elem)); + roaring_bitmap_add_bulk(bitmap, &context, elem); + } + return bitmap; + + } else if (bufaschar[0] == CROARING_SERIALIZATION_CONTAINER) { + return roaring_bitmap_portable_deserialize_safe(bufaschar + 1, + maxbytes - 1); + } else + return (NULL); +} + +bool roaring_iterate(const roaring_bitmap_t *r, roaring_iterator iterator, + void *ptr) { + const roaring_array_t *ra = &r->high_low_container; + + for (int i = 0; i < ra->size; ++i) + if (!container_iterate(ra->containers[i], ra->typecodes[i], + ((uint32_t)ra->keys[i]) << 16, iterator, ptr)) { + return false; + } + return true; +} + +bool roaring_iterate64(const roaring_bitmap_t *r, roaring_iterator64 iterator, + uint64_t high_bits, void *ptr) { + const roaring_array_t *ra = &r->high_low_container; + + for (int i = 0; i < ra->size; ++i) + if (!container_iterate64(ra->containers[i], ra->typecodes[i], + ((uint32_t)ra->keys[i]) << 16, iterator, + high_bits, ptr)) { + return false; + } + return true; +} + +/**** + * begin roaring_uint32_iterator_t + *****/ + +/** + * Partially initializes the iterator. Leaves it in either state: + * 1. Invalid due to `has_value = false`, or + * 2. At a container, with the high bits set, `has_value = true`. + */ +CROARING_WARN_UNUSED static bool iter_new_container_partial_init( + roaring_uint32_iterator_t *newit) { + newit->current_value = 0; + if (newit->container_index >= newit->parent->high_low_container.size || + newit->container_index < 0) { + newit->current_value = UINT32_MAX; + return (newit->has_value = false); + } + newit->has_value = true; + // we precompute container, typecode and highbits so that successive + // iterators do not have to grab them from odd memory locations + // and have to worry about the (easily predicted) container_unwrap_shared + // call. + newit->container = + newit->parent->high_low_container.containers[newit->container_index]; + newit->typecode = + newit->parent->high_low_container.typecodes[newit->container_index]; + newit->highbits = + ((uint32_t) + newit->parent->high_low_container.keys[newit->container_index]) + << 16; + newit->container = + container_unwrap_shared(newit->container, &(newit->typecode)); + return true; +} + +/** + * Positions the iterator at the first value of the current container that the + * iterator points at, if available. + */ +CROARING_WARN_UNUSED static bool loadfirstvalue( + roaring_uint32_iterator_t *newit) { + if (iter_new_container_partial_init(newit)) { + uint16_t value = 0; + newit->container_it = + container_init_iterator(newit->container, newit->typecode, &value); + newit->current_value = newit->highbits | value; + } + return newit->has_value; +} + +/** + * Positions the iterator at the last value of the current container that the + * iterator points at, if available. + */ +CROARING_WARN_UNUSED static bool loadlastvalue( + roaring_uint32_iterator_t *newit) { + if (iter_new_container_partial_init(newit)) { + uint16_t value = 0; + newit->container_it = container_init_iterator_last( + newit->container, newit->typecode, &value); + newit->current_value = newit->highbits | value; + } + return newit->has_value; +} + +/** + * Positions the iterator at the smallest value that is larger than or equal to + * `val` within the current container that the iterator points at. Assumes such + * a value exists within the current container. + */ +CROARING_WARN_UNUSED static bool loadfirstvalue_largeorequal( + roaring_uint32_iterator_t *newit, uint32_t val) { + bool partial_init = iter_new_container_partial_init(newit); + assert(partial_init); + if (!partial_init) { + return false; + } + uint16_t value = 0; + newit->container_it = + container_init_iterator(newit->container, newit->typecode, &value); + bool found = container_iterator_lower_bound( + newit->container, newit->typecode, &newit->container_it, &value, + val & 0xFFFF); + assert(found); + if (!found) { + return false; + } + newit->current_value = newit->highbits | value; + return true; +} + +void roaring_iterator_init(const roaring_bitmap_t *r, + roaring_uint32_iterator_t *newit) { + newit->parent = r; + newit->container_index = 0; + newit->has_value = loadfirstvalue(newit); +} + +void roaring_iterator_init_last(const roaring_bitmap_t *r, + roaring_uint32_iterator_t *newit) { + newit->parent = r; + newit->container_index = newit->parent->high_low_container.size - 1; + newit->has_value = loadlastvalue(newit); +} + +roaring_uint32_iterator_t *roaring_iterator_create(const roaring_bitmap_t *r) { + roaring_uint32_iterator_t *newit = + (roaring_uint32_iterator_t *)roaring_malloc( + sizeof(roaring_uint32_iterator_t)); + if (newit == NULL) return NULL; + roaring_iterator_init(r, newit); + return newit; +} + +roaring_uint32_iterator_t *roaring_uint32_iterator_copy( + const roaring_uint32_iterator_t *it) { + roaring_uint32_iterator_t *newit = + (roaring_uint32_iterator_t *)roaring_malloc( + sizeof(roaring_uint32_iterator_t)); + memcpy(newit, it, sizeof(roaring_uint32_iterator_t)); + return newit; +} + +bool roaring_uint32_iterator_move_equalorlarger(roaring_uint32_iterator_t *it, + uint32_t val) { + uint16_t hb = val >> 16; + const int i = ra_get_index(&it->parent->high_low_container, hb); + if (i >= 0) { + uint32_t lowvalue = + container_maximum(it->parent->high_low_container.containers[i], + it->parent->high_low_container.typecodes[i]); + uint16_t lb = val & 0xFFFF; + if (lowvalue < lb) { + // will have to load first value of next container + it->container_index = i + 1; + } else { + // the value is necessarily within the range of the container + it->container_index = i; + it->has_value = loadfirstvalue_largeorequal(it, val); + return it->has_value; + } + } else { + // there is no matching, so we are going for the next container + it->container_index = -i - 1; + } + it->has_value = loadfirstvalue(it); + return it->has_value; +} + +bool roaring_uint32_iterator_advance(roaring_uint32_iterator_t *it) { + if (it->container_index >= it->parent->high_low_container.size) { + return (it->has_value = false); + } + if (it->container_index < 0) { + it->container_index = 0; + return (it->has_value = loadfirstvalue(it)); + } + uint16_t low16 = (uint16_t)it->current_value; + if (container_iterator_next(it->container, it->typecode, &it->container_it, + &low16)) { + it->current_value = it->highbits | low16; + return (it->has_value = true); + } + it->container_index++; + return (it->has_value = loadfirstvalue(it)); +} + +bool roaring_uint32_iterator_previous(roaring_uint32_iterator_t *it) { + if (it->container_index < 0) { + return (it->has_value = false); + } + if (it->container_index >= it->parent->high_low_container.size) { + it->container_index = it->parent->high_low_container.size - 1; + return (it->has_value = loadlastvalue(it)); + } + uint16_t low16 = (uint16_t)it->current_value; + if (container_iterator_prev(it->container, it->typecode, &it->container_it, + &low16)) { + it->current_value = it->highbits | low16; + return (it->has_value = true); + } + it->container_index--; + return (it->has_value = loadlastvalue(it)); +} + +uint32_t roaring_uint32_iterator_read(roaring_uint32_iterator_t *it, + uint32_t *buf, uint32_t count) { + uint32_t ret = 0; + while (it->has_value && ret < count) { + uint32_t consumed; + uint16_t low16 = (uint16_t)it->current_value; + bool has_value = container_iterator_read_into_uint32( + it->container, it->typecode, &it->container_it, it->highbits, buf, + count - ret, &consumed, &low16); + ret += consumed; + buf += consumed; + if (has_value) { + it->has_value = true; + it->current_value = it->highbits | low16; + assert(ret == count); + return ret; + } + it->container_index++; + it->has_value = loadfirstvalue(it); + } + return ret; +} + +void roaring_uint32_iterator_free(roaring_uint32_iterator_t *it) { + roaring_free(it); +} + +/**** + * end of roaring_uint32_iterator_t + *****/ + +bool roaring_bitmap_equals(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2) { + const roaring_array_t *ra1 = &r1->high_low_container; + const roaring_array_t *ra2 = &r2->high_low_container; + + if (ra1->size != ra2->size) { + return false; + } + for (int i = 0; i < ra1->size; ++i) { + if (ra1->keys[i] != ra2->keys[i]) { + return false; + } + } + for (int i = 0; i < ra1->size; ++i) { + bool areequal = container_equals(ra1->containers[i], ra1->typecodes[i], + ra2->containers[i], ra2->typecodes[i]); + if (!areequal) { + return false; + } + } + return true; +} + +bool roaring_bitmap_is_subset(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2) { + const roaring_array_t *ra1 = &r1->high_low_container; + const roaring_array_t *ra2 = &r2->high_low_container; + + const int length1 = ra1->size, length2 = ra2->size; + + int pos1 = 0, pos2 = 0; + + while (pos1 < length1 && pos2 < length2) { + const uint16_t s1 = ra_get_key_at_index(ra1, (uint16_t)pos1); + const uint16_t s2 = ra_get_key_at_index(ra2, (uint16_t)pos2); + + if (s1 == s2) { + uint8_t type1, type2; + container_t *c1 = + ra_get_container_at_index(ra1, (uint16_t)pos1, &type1); + container_t *c2 = + ra_get_container_at_index(ra2, (uint16_t)pos2, &type2); + if (!container_is_subset(c1, type1, c2, type2)) return false; + ++pos1; + ++pos2; + } else if (s1 < s2) { // s1 < s2 + return false; + } else { // s1 > s2 + pos2 = ra_advance_until(ra2, s1, pos2); + } + } + if (pos1 == length1) + return true; + else + return false; +} + +static void insert_flipped_container(roaring_array_t *ans_arr, + const roaring_array_t *x1_arr, uint16_t hb, + uint16_t lb_start, uint16_t lb_end) { + const int i = ra_get_index(x1_arr, hb); + const int j = ra_get_index(ans_arr, hb); + uint8_t ctype_in, ctype_out; + container_t *flipped_container = NULL; + if (i >= 0) { + container_t *container_to_flip = + ra_get_container_at_index(x1_arr, (uint16_t)i, &ctype_in); + flipped_container = + container_not_range(container_to_flip, ctype_in, (uint32_t)lb_start, + (uint32_t)(lb_end + 1), &ctype_out); + + if (container_get_cardinality(flipped_container, ctype_out)) + ra_insert_new_key_value_at(ans_arr, -j - 1, hb, flipped_container, + ctype_out); + else { + container_free(flipped_container, ctype_out); + } + } else { + flipped_container = container_range_of_ones( + (uint32_t)lb_start, (uint32_t)(lb_end + 1), &ctype_out); + ra_insert_new_key_value_at(ans_arr, -j - 1, hb, flipped_container, + ctype_out); + } +} + +static void inplace_flip_container(roaring_array_t *x1_arr, uint16_t hb, + uint16_t lb_start, uint16_t lb_end) { + const int i = ra_get_index(x1_arr, hb); + uint8_t ctype_in, ctype_out; + container_t *flipped_container = NULL; + if (i >= 0) { + container_t *container_to_flip = + ra_get_container_at_index(x1_arr, (uint16_t)i, &ctype_in); + flipped_container = container_inot_range( + container_to_flip, ctype_in, (uint32_t)lb_start, + (uint32_t)(lb_end + 1), &ctype_out); + // if a new container was created, the old one was already freed + if (container_get_cardinality(flipped_container, ctype_out)) { + ra_set_container_at_index(x1_arr, i, flipped_container, ctype_out); + } else { + container_free(flipped_container, ctype_out); + ra_remove_at_index(x1_arr, i); + } + + } else { + flipped_container = container_range_of_ones( + (uint32_t)lb_start, (uint32_t)(lb_end + 1), &ctype_out); + ra_insert_new_key_value_at(x1_arr, -i - 1, hb, flipped_container, + ctype_out); + } +} + +static void insert_fully_flipped_container(roaring_array_t *ans_arr, + const roaring_array_t *x1_arr, + uint16_t hb) { + const int i = ra_get_index(x1_arr, hb); + const int j = ra_get_index(ans_arr, hb); + uint8_t ctype_in, ctype_out; + container_t *flipped_container = NULL; + if (i >= 0) { + container_t *container_to_flip = + ra_get_container_at_index(x1_arr, (uint16_t)i, &ctype_in); + flipped_container = + container_not(container_to_flip, ctype_in, &ctype_out); + if (container_get_cardinality(flipped_container, ctype_out)) + ra_insert_new_key_value_at(ans_arr, -j - 1, hb, flipped_container, + ctype_out); + else { + container_free(flipped_container, ctype_out); + } + } else { + flipped_container = container_range_of_ones(0U, 0x10000U, &ctype_out); + ra_insert_new_key_value_at(ans_arr, -j - 1, hb, flipped_container, + ctype_out); + } +} + +static void inplace_fully_flip_container(roaring_array_t *x1_arr, uint16_t hb) { + const int i = ra_get_index(x1_arr, hb); + uint8_t ctype_in, ctype_out; + container_t *flipped_container = NULL; + if (i >= 0) { + container_t *container_to_flip = + ra_get_container_at_index(x1_arr, (uint16_t)i, &ctype_in); + flipped_container = + container_inot(container_to_flip, ctype_in, &ctype_out); + + if (container_get_cardinality(flipped_container, ctype_out)) { + ra_set_container_at_index(x1_arr, i, flipped_container, ctype_out); + } else { + container_free(flipped_container, ctype_out); + ra_remove_at_index(x1_arr, i); + } + + } else { + flipped_container = container_range_of_ones(0U, 0x10000U, &ctype_out); + ra_insert_new_key_value_at(x1_arr, -i - 1, hb, flipped_container, + ctype_out); + } +} + +roaring_bitmap_t *roaring_bitmap_flip(const roaring_bitmap_t *x1, + uint64_t range_start, + uint64_t range_end) { + if (range_start >= range_end) { + return roaring_bitmap_copy(x1); + } + if (range_end >= UINT64_C(0x100000000)) { + range_end = UINT64_C(0x100000000); + } + + roaring_bitmap_t *ans = roaring_bitmap_create(); + roaring_bitmap_set_copy_on_write(ans, is_cow(x1)); + + uint16_t hb_start = (uint16_t)(range_start >> 16); + const uint16_t lb_start = (uint16_t)range_start; // & 0xFFFF; + uint16_t hb_end = (uint16_t)((range_end - 1) >> 16); + const uint16_t lb_end = (uint16_t)(range_end - 1); // & 0xFFFF; + + ra_append_copies_until(&ans->high_low_container, &x1->high_low_container, + hb_start, is_cow(x1)); + if (hb_start == hb_end) { + insert_flipped_container(&ans->high_low_container, + &x1->high_low_container, hb_start, lb_start, + lb_end); + } else { + // start and end containers are distinct + if (lb_start > 0) { + // handle first (partial) container + insert_flipped_container(&ans->high_low_container, + &x1->high_low_container, hb_start, + lb_start, 0xFFFF); + ++hb_start; // for the full containers. Can't wrap. + } + + if (lb_end != 0xFFFF) --hb_end; // later we'll handle the partial block + + for (uint32_t hb = hb_start; hb <= hb_end; ++hb) { + insert_fully_flipped_container(&ans->high_low_container, + &x1->high_low_container, + (uint16_t)hb); + } + + // handle a partial final container + if (lb_end != 0xFFFF) { + insert_flipped_container(&ans->high_low_container, + &x1->high_low_container, hb_end + 1, 0, + lb_end); + ++hb_end; + } + } + ra_append_copies_after(&ans->high_low_container, &x1->high_low_container, + hb_end, is_cow(x1)); + return ans; +} + +void roaring_bitmap_flip_inplace(roaring_bitmap_t *x1, uint64_t range_start, + uint64_t range_end) { + if (range_start >= range_end) { + return; // empty range + } + if (range_end >= UINT64_C(0x100000000)) { + range_end = UINT64_C(0x100000000); + } + + uint16_t hb_start = (uint16_t)(range_start >> 16); + const uint16_t lb_start = (uint16_t)range_start; + uint16_t hb_end = (uint16_t)((range_end - 1) >> 16); + const uint16_t lb_end = (uint16_t)(range_end - 1); + + if (hb_start == hb_end) { + inplace_flip_container(&x1->high_low_container, hb_start, lb_start, + lb_end); + } else { + // start and end containers are distinct + if (lb_start > 0) { + // handle first (partial) container + inplace_flip_container(&x1->high_low_container, hb_start, lb_start, + 0xFFFF); + ++hb_start; // for the full containers. Can't wrap. + } + + if (lb_end != 0xFFFF) --hb_end; + + for (uint32_t hb = hb_start; hb <= hb_end; ++hb) { + inplace_fully_flip_container(&x1->high_low_container, (uint16_t)hb); + } + // handle a partial final container + if (lb_end != 0xFFFF) { + inplace_flip_container(&x1->high_low_container, hb_end + 1, 0, + lb_end); + ++hb_end; + } + } +} + +static void offset_append_with_merge(roaring_array_t *ra, int k, container_t *c, + uint8_t t) { + int size = ra_get_size(ra); + if (size == 0 || ra_get_key_at_index(ra, (uint16_t)(size - 1)) != k) { + // No merge. + ra_append(ra, (uint16_t)k, c, t); + return; + } + + uint8_t last_t, new_t; + container_t *last_c, *new_c; + + // NOTE: we don't need to unwrap here, since we added last_c ourselves + // we have the certainty it's not a shared container. + // The same applies to c, as it's the result of calling container_offset. + last_c = ra_get_container_at_index(ra, (uint16_t)(size - 1), &last_t); + new_c = container_ior(last_c, last_t, c, t, &new_t); + + ra_set_container_at_index(ra, size - 1, new_c, new_t); + + // Comparison of pointers of different origin is UB (or so claim some + // compiler makers), so we compare their bit representation only. + if ((uintptr_t)last_c != (uintptr_t)new_c) { + container_free(last_c, last_t); + } + container_free(c, t); +} + +// roaring_bitmap_add_offset adds the value 'offset' to each and every value in +// a bitmap, generating a new bitmap in the process. If offset + element is +// outside of the range [0,2^32), that the element will be dropped. +// We need "offset" to be 64 bits because we want to support values +// between -0xFFFFFFFF up to +0xFFFFFFFF. +roaring_bitmap_t *roaring_bitmap_add_offset(const roaring_bitmap_t *bm, + int64_t offset) { + roaring_bitmap_t *answer; + roaring_array_t *ans_ra; + int64_t container_offset; + uint16_t in_offset; + + const roaring_array_t *bm_ra = &bm->high_low_container; + int length = bm_ra->size; + + if (offset == 0) { + return roaring_bitmap_copy(bm); + } + + container_offset = offset >> 16; + in_offset = (uint16_t)(offset - container_offset * (1 << 16)); + + answer = roaring_bitmap_create(); + bool cow = is_cow(bm); + roaring_bitmap_set_copy_on_write(answer, cow); + + ans_ra = &answer->high_low_container; + + if (in_offset == 0) { + ans_ra = &answer->high_low_container; + + for (int i = 0, j = 0; i < length; ++i) { + int64_t key = ra_get_key_at_index(bm_ra, (uint16_t)i); + key += container_offset; + + if (key < 0 || key >= (1 << 16)) { + continue; + } + ra_append_copy(ans_ra, bm_ra, (uint16_t)i, cow); + ans_ra->keys[j++] = (uint16_t)key; + } + return answer; + } + + uint8_t t; + const container_t *c; + container_t *lo, *hi, **lo_ptr, **hi_ptr; + int64_t k; + + for (int i = 0; i < length; ++i) { + lo = hi = NULL; + lo_ptr = hi_ptr = NULL; + + k = ra_get_key_at_index(bm_ra, (uint16_t)i) + container_offset; + if (k >= 0 && k < (1 << 16)) { + lo_ptr = &lo; + } + if (k + 1 >= 0 && k + 1 < (1 << 16)) { + hi_ptr = &hi; + } + if (lo_ptr == NULL && hi_ptr == NULL) { + continue; + } + c = ra_get_container_at_index(bm_ra, (uint16_t)i, &t); + c = container_unwrap_shared(c, &t); + + container_add_offset(c, t, lo_ptr, hi_ptr, in_offset); + if (lo != NULL) { + offset_append_with_merge(ans_ra, (int)k, lo, t); + } + if (hi != NULL) { + ra_append(ans_ra, (uint16_t)(k + 1), hi, t); + } + // the `lo` and `hi` container type always keep same as container `c`. + // in the case of `container_add_offset` on bitset container, `lo` and + // `hi` may has small cardinality, they must be repaired to array + // container. + } + + roaring_bitmap_repair_after_lazy(answer); // do required type conversions. + return answer; +} + +roaring_bitmap_t *roaring_bitmap_lazy_or(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2, + const bool bitsetconversion) { + uint8_t result_type = 0; + const int length1 = x1->high_low_container.size, + length2 = x2->high_low_container.size; + if (0 == length1) { + return roaring_bitmap_copy(x2); + } + if (0 == length2) { + return roaring_bitmap_copy(x1); + } + roaring_bitmap_t *answer = + roaring_bitmap_create_with_capacity(length1 + length2); + roaring_bitmap_set_copy_on_write(answer, is_cow(x1) || is_cow(x2)); + int pos1 = 0, pos2 = 0; + uint8_t type1, type2; + uint16_t s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + uint16_t s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + while (true) { + if (s1 == s2) { + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + container_t *c; + if (bitsetconversion && + (get_container_type(c1, type1) != BITSET_CONTAINER_TYPE) && + (get_container_type(c2, type2) != BITSET_CONTAINER_TYPE)) { + container_t *newc1 = + container_mutable_unwrap_shared(c1, &type1); + newc1 = container_to_bitset(newc1, type1); + type1 = BITSET_CONTAINER_TYPE; + c = container_lazy_ior(newc1, type1, c2, type2, &result_type); + if (c != newc1) { // should not happen + container_free(newc1, type1); + } + } else { + c = container_lazy_or(c1, type1, c2, type2, &result_type); + } + // since we assume that the initial containers are non-empty, + // the + // result here + // can only be non-empty + ra_append(&answer->high_low_container, s1, c, result_type); + ++pos1; + ++pos2; + if (pos1 == length1) break; + if (pos2 == length2) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + } else if (s1 < s2) { // s1 < s2 + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + c1 = get_copy_of_container(c1, &type1, is_cow(x1)); + if (is_cow(x1)) { + ra_set_container_at_index(&x1->high_low_container, pos1, c1, + type1); + } + ra_append(&answer->high_low_container, s1, c1, type1); + pos1++; + if (pos1 == length1) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + + } else { // s1 > s2 + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + c2 = get_copy_of_container(c2, &type2, is_cow(x2)); + if (is_cow(x2)) { + ra_set_container_at_index(&x2->high_low_container, pos2, c2, + type2); + } + ra_append(&answer->high_low_container, s2, c2, type2); + pos2++; + if (pos2 == length2) break; + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + } + } + if (pos1 == length1) { + ra_append_copy_range(&answer->high_low_container, + &x2->high_low_container, pos2, length2, + is_cow(x2)); + } else if (pos2 == length2) { + ra_append_copy_range(&answer->high_low_container, + &x1->high_low_container, pos1, length1, + is_cow(x1)); + } + return answer; +} + +void roaring_bitmap_lazy_or_inplace(roaring_bitmap_t *x1, + const roaring_bitmap_t *x2, + const bool bitsetconversion) { + uint8_t result_type = 0; + int length1 = x1->high_low_container.size; + const int length2 = x2->high_low_container.size; + + if (0 == length2) return; + + if (0 == length1) { + roaring_bitmap_overwrite(x1, x2); + return; + } + int pos1 = 0, pos2 = 0; + uint8_t type1, type2; + uint16_t s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + uint16_t s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + while (true) { + if (s1 == s2) { + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + if (!container_is_full(c1, type1)) { + if ((bitsetconversion == false) || + (get_container_type(c1, type1) == BITSET_CONTAINER_TYPE)) { + c1 = get_writable_copy_if_shared(c1, &type1); + } else { + // convert to bitset + container_t *old_c1 = c1; + uint8_t old_type1 = type1; + c1 = container_mutable_unwrap_shared(c1, &type1); + c1 = container_to_bitset(c1, type1); + container_free(old_c1, old_type1); + type1 = BITSET_CONTAINER_TYPE; + } + + container_t *c2 = ra_get_container_at_index( + &x2->high_low_container, (uint16_t)pos2, &type2); + container_t *c = + container_lazy_ior(c1, type1, c2, type2, &result_type); + + if (c != c1) { // in this instance a new container was created, + // and we need to free the old one + container_free(c1, type1); + } + + ra_set_container_at_index(&x1->high_low_container, pos1, c, + result_type); + } + ++pos1; + ++pos2; + if (pos1 == length1) break; + if (pos2 == length2) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + } else if (s1 < s2) { // s1 < s2 + pos1++; + if (pos1 == length1) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + + } else { // s1 > s2 + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + // container_t *c2_clone = container_clone(c2, type2); + c2 = get_copy_of_container(c2, &type2, is_cow(x2)); + if (is_cow(x2)) { + ra_set_container_at_index(&x2->high_low_container, pos2, c2, + type2); + } + ra_insert_new_key_value_at(&x1->high_low_container, pos1, s2, c2, + type2); + pos1++; + length1++; + pos2++; + if (pos2 == length2) break; + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + } + } + if (pos1 == length1) { + ra_append_copy_range(&x1->high_low_container, &x2->high_low_container, + pos2, length2, is_cow(x2)); + } +} + +roaring_bitmap_t *roaring_bitmap_lazy_xor(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + uint8_t result_type = 0; + const int length1 = x1->high_low_container.size, + length2 = x2->high_low_container.size; + if (0 == length1) { + return roaring_bitmap_copy(x2); + } + if (0 == length2) { + return roaring_bitmap_copy(x1); + } + roaring_bitmap_t *answer = + roaring_bitmap_create_with_capacity(length1 + length2); + roaring_bitmap_set_copy_on_write(answer, is_cow(x1) || is_cow(x2)); + int pos1 = 0, pos2 = 0; + uint8_t type1, type2; + uint16_t s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + uint16_t s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + while (true) { + if (s1 == s2) { + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + container_t *c = + container_lazy_xor(c1, type1, c2, type2, &result_type); + + if (container_nonzero_cardinality(c, result_type)) { + ra_append(&answer->high_low_container, s1, c, result_type); + } else { + container_free(c, result_type); + } + + ++pos1; + ++pos2; + if (pos1 == length1) break; + if (pos2 == length2) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + } else if (s1 < s2) { // s1 < s2 + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + c1 = get_copy_of_container(c1, &type1, is_cow(x1)); + if (is_cow(x1)) { + ra_set_container_at_index(&x1->high_low_container, pos1, c1, + type1); + } + ra_append(&answer->high_low_container, s1, c1, type1); + pos1++; + if (pos1 == length1) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + + } else { // s1 > s2 + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + c2 = get_copy_of_container(c2, &type2, is_cow(x2)); + if (is_cow(x2)) { + ra_set_container_at_index(&x2->high_low_container, pos2, c2, + type2); + } + ra_append(&answer->high_low_container, s2, c2, type2); + pos2++; + if (pos2 == length2) break; + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + } + } + if (pos1 == length1) { + ra_append_copy_range(&answer->high_low_container, + &x2->high_low_container, pos2, length2, + is_cow(x2)); + } else if (pos2 == length2) { + ra_append_copy_range(&answer->high_low_container, + &x1->high_low_container, pos1, length1, + is_cow(x1)); + } + return answer; +} + +void roaring_bitmap_lazy_xor_inplace(roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + assert(x1 != x2); + uint8_t result_type = 0; + int length1 = x1->high_low_container.size; + const int length2 = x2->high_low_container.size; + + if (0 == length2) return; + + if (0 == length1) { + roaring_bitmap_overwrite(x1, x2); + return; + } + int pos1 = 0, pos2 = 0; + uint8_t type1, type2; + uint16_t s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + uint16_t s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + while (true) { + if (s1 == s2) { + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + + // We do the computation "in place" only when c1 is not a shared + // container. Rationale: using a shared container safely with in + // place computation would require making a copy and then doing the + // computation in place which is likely less efficient than avoiding + // in place entirely and always generating a new container. + + container_t *c; + if (type1 == SHARED_CONTAINER_TYPE) { + c = container_lazy_xor(c1, type1, c2, type2, &result_type); + shared_container_free(CAST_shared(c1)); // release + } else { + c = container_lazy_ixor(c1, type1, c2, type2, &result_type); + } + + if (container_nonzero_cardinality(c, result_type)) { + ra_set_container_at_index(&x1->high_low_container, pos1, c, + result_type); + ++pos1; + } else { + container_free(c, result_type); + ra_remove_at_index(&x1->high_low_container, pos1); + --length1; + } + ++pos2; + if (pos1 == length1) break; + if (pos2 == length2) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + } else if (s1 < s2) { // s1 < s2 + pos1++; + if (pos1 == length1) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + + } else { // s1 > s2 + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + // container_t *c2_clone = container_clone(c2, type2); + c2 = get_copy_of_container(c2, &type2, is_cow(x2)); + if (is_cow(x2)) { + ra_set_container_at_index(&x2->high_low_container, pos2, c2, + type2); + } + ra_insert_new_key_value_at(&x1->high_low_container, pos1, s2, c2, + type2); + pos1++; + length1++; + pos2++; + if (pos2 == length2) break; + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + } + } + if (pos1 == length1) { + ra_append_copy_range(&x1->high_low_container, &x2->high_low_container, + pos2, length2, is_cow(x2)); + } +} + +void roaring_bitmap_repair_after_lazy(roaring_bitmap_t *r) { + roaring_array_t *ra = &r->high_low_container; + + for (int i = 0; i < ra->size; ++i) { + const uint8_t old_type = ra->typecodes[i]; + container_t *old_c = ra->containers[i]; + uint8_t new_type = old_type; + container_t *new_c = container_repair_after_lazy(old_c, &new_type); + ra->containers[i] = new_c; + ra->typecodes[i] = new_type; + } +} + +/** + * roaring_bitmap_rank returns the number of integers that are smaller or equal + * to x. + */ +uint64_t roaring_bitmap_rank(const roaring_bitmap_t *bm, uint32_t x) { + uint64_t size = 0; + uint32_t xhigh = x >> 16; + for (int i = 0; i < bm->high_low_container.size; i++) { + uint32_t key = bm->high_low_container.keys[i]; + if (xhigh > key) { + size += + container_get_cardinality(bm->high_low_container.containers[i], + bm->high_low_container.typecodes[i]); + } else if (xhigh == key) { + return size + container_rank(bm->high_low_container.containers[i], + bm->high_low_container.typecodes[i], + x & 0xFFFF); + } else { + return size; + } + } + return size; +} +void roaring_bitmap_rank_many(const roaring_bitmap_t *bm, const uint32_t *begin, + const uint32_t *end, uint64_t *ans) { + uint64_t size = 0; + + int i = 0; + const uint32_t *iter = begin; + while (i < bm->high_low_container.size && iter != end) { + uint32_t x = *iter; + uint32_t xhigh = x >> 16; + uint32_t key = bm->high_low_container.keys[i]; + if (xhigh > key) { + size += + container_get_cardinality(bm->high_low_container.containers[i], + bm->high_low_container.typecodes[i]); + i++; + } else if (xhigh == key) { + uint32_t consumed = container_rank_many( + bm->high_low_container.containers[i], + bm->high_low_container.typecodes[i], size, iter, end, ans); + iter += consumed; + ans += consumed; + } else { + *(ans++) = size; + iter++; + } + } +} + +/** + * roaring_bitmap_get_index returns the index of x, if not exsist return -1. + */ +int64_t roaring_bitmap_get_index(const roaring_bitmap_t *bm, uint32_t x) { + int64_t index = 0; + const uint16_t xhigh = x >> 16; + int32_t high_idx = ra_get_index(&bm->high_low_container, xhigh); + if (high_idx < 0) return -1; + + for (int i = 0; i < bm->high_low_container.size; i++) { + uint32_t key = bm->high_low_container.keys[i]; + if (xhigh > key) { + index += + container_get_cardinality(bm->high_low_container.containers[i], + bm->high_low_container.typecodes[i]); + } else if (xhigh == key) { + int32_t low_idx = container_get_index( + bm->high_low_container.containers[high_idx], + bm->high_low_container.typecodes[high_idx], x & 0xFFFF); + if (low_idx < 0) return -1; + return index + low_idx; + } else { + return -1; + } + } + return index; +} + +/** + * roaring_bitmap_smallest returns the smallest value in the set. + * Returns UINT32_MAX if the set is empty. + */ +uint32_t roaring_bitmap_minimum(const roaring_bitmap_t *bm) { + if (bm->high_low_container.size > 0) { + container_t *c = bm->high_low_container.containers[0]; + uint8_t type = bm->high_low_container.typecodes[0]; + uint32_t key = bm->high_low_container.keys[0]; + uint32_t lowvalue = container_minimum(c, type); + return lowvalue | (key << 16); + } + return UINT32_MAX; +} + +/** + * roaring_bitmap_smallest returns the greatest value in the set. + * Returns 0 if the set is empty. + */ +uint32_t roaring_bitmap_maximum(const roaring_bitmap_t *bm) { + if (bm->high_low_container.size > 0) { + container_t *container = + bm->high_low_container.containers[bm->high_low_container.size - 1]; + uint8_t typecode = + bm->high_low_container.typecodes[bm->high_low_container.size - 1]; + uint32_t key = + bm->high_low_container.keys[bm->high_low_container.size - 1]; + uint32_t lowvalue = container_maximum(container, typecode); + return lowvalue | (key << 16); + } + return 0; +} + +bool roaring_bitmap_select(const roaring_bitmap_t *bm, uint32_t rank, + uint32_t *element) { + container_t *container; + uint8_t typecode; + uint16_t key; + uint32_t start_rank = 0; + int i = 0; + bool valid = false; + while (!valid && i < bm->high_low_container.size) { + container = bm->high_low_container.containers[i]; + typecode = bm->high_low_container.typecodes[i]; + valid = + container_select(container, typecode, &start_rank, rank, element); + i++; + } + + if (valid) { + key = bm->high_low_container.keys[i - 1]; + *element |= (((uint32_t)key) << 16); // w/o cast, key promotes signed + return true; + } else + return false; +} + +bool roaring_bitmap_intersect(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + const int length1 = x1->high_low_container.size, + length2 = x2->high_low_container.size; + uint64_t answer = 0; + int pos1 = 0, pos2 = 0; + + while (pos1 < length1 && pos2 < length2) { + const uint16_t s1 = + ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + const uint16_t s2 = + ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + if (s1 == s2) { + uint8_t type1, type2; + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + if (container_intersect(c1, type1, c2, type2)) return true; + ++pos1; + ++pos2; + } else if (s1 < s2) { // s1 < s2 + pos1 = ra_advance_until(&x1->high_low_container, s2, pos1); + } else { // s1 > s2 + pos2 = ra_advance_until(&x2->high_low_container, s1, pos2); + } + } + return answer != 0; +} + +bool roaring_bitmap_intersect_with_range(const roaring_bitmap_t *bm, uint64_t x, + uint64_t y) { + if (x >= y) { + // Empty range. + return false; + } + roaring_uint32_iterator_t it; + roaring_iterator_init(bm, &it); + if (!roaring_uint32_iterator_move_equalorlarger(&it, (uint32_t)x)) { + // No values above x. + return false; + } + if (it.current_value >= y) { + // No values below y. + return false; + } + return true; +} + +uint64_t roaring_bitmap_and_cardinality(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + const int length1 = x1->high_low_container.size, + length2 = x2->high_low_container.size; + uint64_t answer = 0; + int pos1 = 0, pos2 = 0; + while (pos1 < length1 && pos2 < length2) { + const uint16_t s1 = + ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + const uint16_t s2 = + ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + if (s1 == s2) { + uint8_t type1, type2; + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + answer += container_and_cardinality(c1, type1, c2, type2); + ++pos1; + ++pos2; + } else if (s1 < s2) { // s1 < s2 + pos1 = ra_advance_until(&x1->high_low_container, s2, pos1); + } else { // s1 > s2 + pos2 = ra_advance_until(&x2->high_low_container, s1, pos2); + } + } + return answer; +} + +double roaring_bitmap_jaccard_index(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + const uint64_t c1 = roaring_bitmap_get_cardinality(x1); + const uint64_t c2 = roaring_bitmap_get_cardinality(x2); + const uint64_t inter = roaring_bitmap_and_cardinality(x1, x2); + return (double)inter / (double)(c1 + c2 - inter); +} + +uint64_t roaring_bitmap_or_cardinality(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + const uint64_t c1 = roaring_bitmap_get_cardinality(x1); + const uint64_t c2 = roaring_bitmap_get_cardinality(x2); + const uint64_t inter = roaring_bitmap_and_cardinality(x1, x2); + return c1 + c2 - inter; +} + +uint64_t roaring_bitmap_andnot_cardinality(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + const uint64_t c1 = roaring_bitmap_get_cardinality(x1); + const uint64_t inter = roaring_bitmap_and_cardinality(x1, x2); + return c1 - inter; +} + +uint64_t roaring_bitmap_xor_cardinality(const roaring_bitmap_t *x1, + const roaring_bitmap_t *x2) { + const uint64_t c1 = roaring_bitmap_get_cardinality(x1); + const uint64_t c2 = roaring_bitmap_get_cardinality(x2); + const uint64_t inter = roaring_bitmap_and_cardinality(x1, x2); + return c1 + c2 - 2 * inter; +} + +bool roaring_bitmap_contains(const roaring_bitmap_t *r, uint32_t val) { + const uint16_t hb = val >> 16; + /* + * the next function call involves a binary search and lots of branching. + */ + int32_t i = ra_get_index(&r->high_low_container, hb); + if (i < 0) return false; + + uint8_t typecode; + // next call ought to be cheap + container_t *container = ra_get_container_at_index(&r->high_low_container, + (uint16_t)i, &typecode); + // rest might be a tad expensive, possibly involving another round of binary + // search + return container_contains(container, val & 0xFFFF, typecode); +} + +/** + * Check whether a range of values from range_start (included) to range_end + * (excluded) is present + */ +bool roaring_bitmap_contains_range(const roaring_bitmap_t *r, + uint64_t range_start, uint64_t range_end) { + if (range_end >= UINT64_C(0x100000000)) { + range_end = UINT64_C(0x100000000); + } + if (range_start >= range_end) + return true; // empty range are always contained! + if (range_end - range_start == 1) + return roaring_bitmap_contains(r, (uint32_t)range_start); + uint16_t hb_rs = (uint16_t)(range_start >> 16); + uint16_t hb_re = (uint16_t)((range_end - 1) >> 16); + const int32_t span = hb_re - hb_rs; + const int32_t hlc_sz = ra_get_size(&r->high_low_container); + if (hlc_sz < span + 1) { + return false; + } + int32_t is = ra_get_index(&r->high_low_container, hb_rs); + int32_t ie = ra_get_index(&r->high_low_container, hb_re); + if ((ie < 0) || (is < 0) || ((ie - is) != span) || ie >= hlc_sz) { + return false; + } + const uint32_t lb_rs = range_start & 0xFFFF; + const uint32_t lb_re = ((range_end - 1) & 0xFFFF) + 1; + uint8_t type; + container_t *c = + ra_get_container_at_index(&r->high_low_container, (uint16_t)is, &type); + if (hb_rs == hb_re) { + return container_contains_range(c, lb_rs, lb_re, type); + } + if (!container_contains_range(c, lb_rs, 1 << 16, type)) { + return false; + } + c = ra_get_container_at_index(&r->high_low_container, (uint16_t)ie, &type); + if (!container_contains_range(c, 0, lb_re, type)) { + return false; + } + for (int32_t i = is + 1; i < ie; ++i) { + c = ra_get_container_at_index(&r->high_low_container, (uint16_t)i, + &type); + if (!container_is_full(c, type)) { + return false; + } + } + return true; +} + +bool roaring_bitmap_is_strict_subset(const roaring_bitmap_t *r1, + const roaring_bitmap_t *r2) { + return (roaring_bitmap_get_cardinality(r2) > + roaring_bitmap_get_cardinality(r1) && + roaring_bitmap_is_subset(r1, r2)); +} + +/* + * FROZEN SERIALIZATION FORMAT DESCRIPTION + * + * -- (beginning must be aligned by 32 bytes) -- + * <bitset_data> uint64_t[BITSET_CONTAINER_SIZE_IN_WORDS * + * num_bitset_containers] <run_data> rle16_t[total number of rle elements in + * all run containers] <array_data> uint16_t[total number of array elements in + * all array containers] <keys> uint16_t[num_containers] <counts> + * uint16_t[num_containers] <typecodes> uint8_t[num_containers] <header> + * uint32_t + * + * <header> is a 4-byte value which is a bit union of FROZEN_COOKIE (15 bits) + * and the number of containers (17 bits). + * + * <counts> stores number of elements for every container. + * Its meaning depends on container type. + * For array and bitset containers, this value is the container cardinality + * minus one. For run container, it is the number of rle_t elements (n_runs). + * + * <bitset_data>,<array_data>,<run_data> are flat arrays of elements of + * all containers of respective type. + * + * <*_data> and <keys> are kept close together because they are not accessed + * during deserilization. This may reduce IO in case of large mmaped bitmaps. + * All members have their native alignments during deserilization except + * <header>, which is not guaranteed to be aligned by 4 bytes. + */ + +size_t roaring_bitmap_frozen_size_in_bytes(const roaring_bitmap_t *rb) { + const roaring_array_t *ra = &rb->high_low_container; + size_t num_bytes = 0; + for (int32_t i = 0; i < ra->size; i++) { + switch (ra->typecodes[i]) { + case BITSET_CONTAINER_TYPE: { + num_bytes += BITSET_CONTAINER_SIZE_IN_WORDS * sizeof(uint64_t); + break; + } + case RUN_CONTAINER_TYPE: { + const run_container_t *rc = const_CAST_run(ra->containers[i]); + num_bytes += rc->n_runs * sizeof(rle16_t); + break; + } + case ARRAY_CONTAINER_TYPE: { + const array_container_t *ac = + const_CAST_array(ra->containers[i]); + num_bytes += ac->cardinality * sizeof(uint16_t); + break; + } + default: + roaring_unreachable; + } + } + num_bytes += (2 + 2 + 1) * ra->size; // keys, counts, typecodes + num_bytes += 4; // header + return num_bytes; +} + +inline static void *arena_alloc(char **arena, size_t num_bytes) { + char *res = *arena; + *arena += num_bytes; + return res; +} + +void roaring_bitmap_frozen_serialize(const roaring_bitmap_t *rb, char *buf) { + /* + * Note: we do not require user to supply a specifically aligned buffer. + * Thus we have to use memcpy() everywhere. + */ + + const roaring_array_t *ra = &rb->high_low_container; + + size_t bitset_zone_size = 0; + size_t run_zone_size = 0; + size_t array_zone_size = 0; + for (int32_t i = 0; i < ra->size; i++) { + switch (ra->typecodes[i]) { + case BITSET_CONTAINER_TYPE: { + bitset_zone_size += + BITSET_CONTAINER_SIZE_IN_WORDS * sizeof(uint64_t); + break; + } + case RUN_CONTAINER_TYPE: { + const run_container_t *rc = const_CAST_run(ra->containers[i]); + run_zone_size += rc->n_runs * sizeof(rle16_t); + break; + } + case ARRAY_CONTAINER_TYPE: { + const array_container_t *ac = + const_CAST_array(ra->containers[i]); + array_zone_size += ac->cardinality * sizeof(uint16_t); + break; + } + default: + roaring_unreachable; + } + } + + uint64_t *bitset_zone = (uint64_t *)arena_alloc(&buf, bitset_zone_size); + rle16_t *run_zone = (rle16_t *)arena_alloc(&buf, run_zone_size); + uint16_t *array_zone = (uint16_t *)arena_alloc(&buf, array_zone_size); + uint16_t *key_zone = (uint16_t *)arena_alloc(&buf, 2 * ra->size); + uint16_t *count_zone = (uint16_t *)arena_alloc(&buf, 2 * ra->size); + uint8_t *typecode_zone = (uint8_t *)arena_alloc(&buf, ra->size); + uint32_t *header_zone = (uint32_t *)arena_alloc(&buf, 4); + + for (int32_t i = 0; i < ra->size; i++) { + uint16_t count; + switch (ra->typecodes[i]) { + case BITSET_CONTAINER_TYPE: { + const bitset_container_t *bc = + const_CAST_bitset(ra->containers[i]); + memcpy(bitset_zone, bc->words, + BITSET_CONTAINER_SIZE_IN_WORDS * sizeof(uint64_t)); + bitset_zone += BITSET_CONTAINER_SIZE_IN_WORDS; + if (bc->cardinality != BITSET_UNKNOWN_CARDINALITY) { + count = (uint16_t)(bc->cardinality - 1); + } else { + count = + (uint16_t)(bitset_container_compute_cardinality(bc) - + 1); + } + break; + } + case RUN_CONTAINER_TYPE: { + const run_container_t *rc = const_CAST_run(ra->containers[i]); + size_t num_bytes = rc->n_runs * sizeof(rle16_t); + memcpy(run_zone, rc->runs, num_bytes); + run_zone += rc->n_runs; + count = (uint16_t)rc->n_runs; + break; + } + case ARRAY_CONTAINER_TYPE: { + const array_container_t *ac = + const_CAST_array(ra->containers[i]); + size_t num_bytes = ac->cardinality * sizeof(uint16_t); + memcpy(array_zone, ac->array, num_bytes); + array_zone += ac->cardinality; + count = (uint16_t)(ac->cardinality - 1); + break; + } + default: + roaring_unreachable; + } + memcpy(&count_zone[i], &count, 2); + } + memcpy(key_zone, ra->keys, ra->size * sizeof(uint16_t)); + memcpy(typecode_zone, ra->typecodes, ra->size * sizeof(uint8_t)); + uint32_t header = ((uint32_t)ra->size << 15) | FROZEN_COOKIE; + memcpy(header_zone, &header, 4); +} + +const roaring_bitmap_t *roaring_bitmap_frozen_view(const char *buf, + size_t length) { + if ((uintptr_t)buf % 32 != 0) { + return NULL; + } + + // cookie and num_containers + if (length < 4) { + return NULL; + } + uint32_t header; + memcpy(&header, buf + length - 4, 4); // header may be misaligned + if ((header & 0x7FFF) != FROZEN_COOKIE) { + return NULL; + } + int32_t num_containers = (header >> 15); + + // typecodes, counts and keys + if (length < 4 + (size_t)num_containers * (1 + 2 + 2)) { + return NULL; + } + uint16_t *keys = (uint16_t *)(buf + length - 4 - num_containers * 5); + uint16_t *counts = (uint16_t *)(buf + length - 4 - num_containers * 3); + uint8_t *typecodes = (uint8_t *)(buf + length - 4 - num_containers * 1); + + // {bitset,array,run}_zone + int32_t num_bitset_containers = 0; + int32_t num_run_containers = 0; + int32_t num_array_containers = 0; + size_t bitset_zone_size = 0; + size_t run_zone_size = 0; + size_t array_zone_size = 0; + for (int32_t i = 0; i < num_containers; i++) { + switch (typecodes[i]) { + case BITSET_CONTAINER_TYPE: + num_bitset_containers++; + bitset_zone_size += + BITSET_CONTAINER_SIZE_IN_WORDS * sizeof(uint64_t); + break; + case RUN_CONTAINER_TYPE: + num_run_containers++; + run_zone_size += counts[i] * sizeof(rle16_t); + break; + case ARRAY_CONTAINER_TYPE: + num_array_containers++; + array_zone_size += (counts[i] + UINT32_C(1)) * sizeof(uint16_t); + break; + default: + return NULL; + } + } + if (length != bitset_zone_size + run_zone_size + array_zone_size + + 5 * num_containers + 4) { + return NULL; + } + uint64_t *bitset_zone = (uint64_t *)(buf); + rle16_t *run_zone = (rle16_t *)(buf + bitset_zone_size); + uint16_t *array_zone = (uint16_t *)(buf + bitset_zone_size + run_zone_size); + + size_t alloc_size = 0; + alloc_size += sizeof(roaring_bitmap_t); + alloc_size += num_containers * sizeof(container_t *); + alloc_size += num_bitset_containers * sizeof(bitset_container_t); + alloc_size += num_run_containers * sizeof(run_container_t); + alloc_size += num_array_containers * sizeof(array_container_t); + + char *arena = (char *)roaring_malloc(alloc_size); + if (arena == NULL) { + return NULL; + } + + roaring_bitmap_t *rb = + (roaring_bitmap_t *)arena_alloc(&arena, sizeof(roaring_bitmap_t)); + rb->high_low_container.flags = ROARING_FLAG_FROZEN; + rb->high_low_container.allocation_size = num_containers; + rb->high_low_container.size = num_containers; + rb->high_low_container.keys = (uint16_t *)keys; + rb->high_low_container.typecodes = (uint8_t *)typecodes; + rb->high_low_container.containers = (container_t **)arena_alloc( + &arena, sizeof(container_t *) * num_containers); + // Ensure offset of high_low_container.containers is known distance used in + // C++ wrapper. sizeof(roaring_bitmap_t) is used as it is the size of the + // only allocation that precedes high_low_container.containers. If this is + // changed (new allocation or changed order), this offset will also need to + // be changed in the C++ wrapper. + assert(rb == + (roaring_bitmap_t *)((char *)rb->high_low_container.containers - + sizeof(roaring_bitmap_t))); + for (int32_t i = 0; i < num_containers; i++) { + switch (typecodes[i]) { + case BITSET_CONTAINER_TYPE: { + bitset_container_t *bitset = (bitset_container_t *)arena_alloc( + &arena, sizeof(bitset_container_t)); + bitset->words = bitset_zone; + bitset->cardinality = counts[i] + UINT32_C(1); + rb->high_low_container.containers[i] = bitset; + bitset_zone += BITSET_CONTAINER_SIZE_IN_WORDS; + break; + } + case RUN_CONTAINER_TYPE: { + run_container_t *run = (run_container_t *)arena_alloc( + &arena, sizeof(run_container_t)); + run->capacity = counts[i]; + run->n_runs = counts[i]; + run->runs = run_zone; + rb->high_low_container.containers[i] = run; + run_zone += run->n_runs; + break; + } + case ARRAY_CONTAINER_TYPE: { + array_container_t *array = (array_container_t *)arena_alloc( + &arena, sizeof(array_container_t)); + array->capacity = counts[i] + UINT32_C(1); + array->cardinality = counts[i] + UINT32_C(1); + array->array = array_zone; + rb->high_low_container.containers[i] = array; + array_zone += counts[i] + UINT32_C(1); + break; + } + default: + roaring_free(arena); + return NULL; + } + } + + return rb; +} + +ALLOW_UNALIGNED +roaring_bitmap_t *roaring_bitmap_portable_deserialize_frozen(const char *buf) { + char *start_of_buf = (char *)buf; + uint32_t cookie; + int32_t num_containers; + uint16_t *descriptive_headers; + uint32_t *offset_headers = NULL; + const char *run_flag_bitset = NULL; + bool hasrun = false; + + // deserialize cookie + memcpy(&cookie, buf, sizeof(uint32_t)); + buf += sizeof(uint32_t); + if (cookie == SERIAL_COOKIE_NO_RUNCONTAINER) { + memcpy(&num_containers, buf, sizeof(int32_t)); + buf += sizeof(int32_t); + descriptive_headers = (uint16_t *)buf; + buf += num_containers * 2 * sizeof(uint16_t); + offset_headers = (uint32_t *)buf; + buf += num_containers * sizeof(uint32_t); + } else if ((cookie & 0xFFFF) == SERIAL_COOKIE) { + num_containers = (cookie >> 16) + 1; + hasrun = true; + int32_t run_flag_bitset_size = (num_containers + 7) / 8; + run_flag_bitset = buf; + buf += run_flag_bitset_size; + descriptive_headers = (uint16_t *)buf; + buf += num_containers * 2 * sizeof(uint16_t); + if (num_containers >= NO_OFFSET_THRESHOLD) { + offset_headers = (uint32_t *)buf; + buf += num_containers * sizeof(uint32_t); + } + } else { + return NULL; + } + + // calculate total size for allocation + int32_t num_bitset_containers = 0; + int32_t num_run_containers = 0; + int32_t num_array_containers = 0; + + for (int32_t i = 0; i < num_containers; i++) { + uint16_t tmp; + memcpy(&tmp, descriptive_headers + 2 * i + 1, sizeof(tmp)); + uint32_t cardinality = tmp + 1; + bool isbitmap = (cardinality > DEFAULT_MAX_SIZE); + bool isrun = false; + if (hasrun) { + if ((run_flag_bitset[i / 8] & (1 << (i % 8))) != 0) { + isbitmap = false; + isrun = true; + } + } + + if (isbitmap) { + num_bitset_containers++; + } else if (isrun) { + num_run_containers++; + } else { + num_array_containers++; + } + } + + size_t alloc_size = 0; + alloc_size += sizeof(roaring_bitmap_t); + alloc_size += num_containers * sizeof(container_t *); + alloc_size += num_bitset_containers * sizeof(bitset_container_t); + alloc_size += num_run_containers * sizeof(run_container_t); + alloc_size += num_array_containers * sizeof(array_container_t); + alloc_size += num_containers * sizeof(uint16_t); // keys + alloc_size += num_containers * sizeof(uint8_t); // typecodes + + // allocate bitmap and construct containers + char *arena = (char *)roaring_malloc(alloc_size); + if (arena == NULL) { + return NULL; + } + + roaring_bitmap_t *rb = + (roaring_bitmap_t *)arena_alloc(&arena, sizeof(roaring_bitmap_t)); + rb->high_low_container.flags = ROARING_FLAG_FROZEN; + rb->high_low_container.allocation_size = num_containers; + rb->high_low_container.size = num_containers; + rb->high_low_container.containers = (container_t **)arena_alloc( + &arena, sizeof(container_t *) * num_containers); + + uint16_t *keys = + (uint16_t *)arena_alloc(&arena, num_containers * sizeof(uint16_t)); + uint8_t *typecodes = + (uint8_t *)arena_alloc(&arena, num_containers * sizeof(uint8_t)); + + rb->high_low_container.keys = keys; + rb->high_low_container.typecodes = typecodes; + + for (int32_t i = 0; i < num_containers; i++) { + uint16_t tmp; + memcpy(&tmp, descriptive_headers + 2 * i + 1, sizeof(tmp)); + int32_t cardinality = tmp + 1; + bool isbitmap = (cardinality > DEFAULT_MAX_SIZE); + bool isrun = false; + if (hasrun) { + if ((run_flag_bitset[i / 8] & (1 << (i % 8))) != 0) { + isbitmap = false; + isrun = true; + } + } + + keys[i] = descriptive_headers[2 * i]; + + if (isbitmap) { + typecodes[i] = BITSET_CONTAINER_TYPE; + bitset_container_t *c = (bitset_container_t *)arena_alloc( + &arena, sizeof(bitset_container_t)); + c->cardinality = cardinality; + if (offset_headers != NULL) { + c->words = (uint64_t *)(start_of_buf + offset_headers[i]); + } else { + c->words = (uint64_t *)buf; + buf += BITSET_CONTAINER_SIZE_IN_WORDS * sizeof(uint64_t); + } + rb->high_low_container.containers[i] = c; + } else if (isrun) { + typecodes[i] = RUN_CONTAINER_TYPE; + run_container_t *c = + (run_container_t *)arena_alloc(&arena, sizeof(run_container_t)); + c->capacity = cardinality; + uint16_t n_runs; + if (offset_headers != NULL) { + memcpy(&n_runs, start_of_buf + offset_headers[i], + sizeof(uint16_t)); + c->n_runs = n_runs; + c->runs = (rle16_t *)(start_of_buf + offset_headers[i] + + sizeof(uint16_t)); + } else { + memcpy(&n_runs, buf, sizeof(uint16_t)); + c->n_runs = n_runs; + buf += sizeof(uint16_t); + c->runs = (rle16_t *)buf; + buf += c->n_runs * sizeof(rle16_t); + } + rb->high_low_container.containers[i] = c; + } else { + typecodes[i] = ARRAY_CONTAINER_TYPE; + array_container_t *c = (array_container_t *)arena_alloc( + &arena, sizeof(array_container_t)); + c->cardinality = cardinality; + c->capacity = cardinality; + if (offset_headers != NULL) { + c->array = (uint16_t *)(start_of_buf + offset_headers[i]); + } else { + c->array = (uint16_t *)buf; + buf += cardinality * sizeof(uint16_t); + } + rb->high_low_container.containers[i] = c; + } + } + + return rb; +} + +bool roaring_bitmap_to_bitset(const roaring_bitmap_t *r, bitset_t *bitset) { + uint32_t max_value = roaring_bitmap_maximum(r); + size_t new_array_size = (size_t)(((uint64_t)max_value + 63) / 64); + bool resize_ok = bitset_resize(bitset, new_array_size, true); + if (!resize_ok) { + return false; + } + const roaring_array_t *ra = &r->high_low_container; + for (int i = 0; i < ra->size; ++i) { + uint64_t *words = bitset->array + (ra->keys[i] << 10); + uint8_t type = ra->typecodes[i]; + const container_t *c = ra->containers[i]; + if (type == SHARED_CONTAINER_TYPE) { + c = container_unwrap_shared(c, &type); + } + switch (type) { + case BITSET_CONTAINER_TYPE: { + size_t max_word_index = new_array_size - (ra->keys[i] << 10); + if (max_word_index > 1024) { + max_word_index = 1024; + } + const bitset_container_t *src = const_CAST_bitset(c); + memcpy(words, src->words, max_word_index * sizeof(uint64_t)); + } break; + case ARRAY_CONTAINER_TYPE: { + const array_container_t *src = const_CAST_array(c); + bitset_set_list(words, src->array, src->cardinality); + } break; + case RUN_CONTAINER_TYPE: { + const run_container_t *src = const_CAST_run(c); + for (int32_t rlepos = 0; rlepos < src->n_runs; ++rlepos) { + rle16_t rle = src->runs[rlepos]; + bitset_set_lenrange(words, rle.value, rle.length); + } + } break; + default: + roaring_unreachable; + } + } + return true; +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { +#endif diff --git a/contrib/libs/croaring/src/roaring64.c b/contrib/libs/croaring/src/roaring64.c new file mode 100644 index 000000000000..c49353ced559 --- /dev/null +++ b/contrib/libs/croaring/src/roaring64.c @@ -0,0 +1,2091 @@ +#include <assert.h> +#include <stdarg.h> +#include <stdint.h> +#include <string.h> + +#include <roaring/art/art.h> +#include <roaring/portability.h> +#include <roaring/roaring64.h> + +// For serialization / deserialization +#include <roaring/roaring.h> +#include <roaring/roaring_array.h> +// containers.h last to avoid conflict with ROARING_CONTAINER_T. +#include <roaring/containers/containers.h> + +#ifdef __cplusplus +using namespace ::roaring::internal; + +extern "C" { +namespace roaring { +namespace api { +#endif + +// TODO: Copy on write. +// TODO: Error on failed allocation. + +typedef struct roaring64_bitmap_s { + art_t art; + uint8_t flags; +} roaring64_bitmap_t; + +// Leaf type of the ART used to keep the high 48 bits of each entry. +typedef struct roaring64_leaf_s { + art_val_t _pad; + uint8_t typecode; + container_t *container; +} roaring64_leaf_t; + +// Alias to make it easier to work with, since it's an internal-only type +// anyway. +typedef struct roaring64_leaf_s leaf_t; + +// Iterator struct to hold iteration state. +typedef struct roaring64_iterator_s { + const roaring64_bitmap_t *parent; + art_iterator_t art_it; + roaring_container_iterator_t container_it; + uint64_t high48; // Key that art_it points to. + + uint64_t value; + bool has_value; + + // If has_value is false, then the iterator is saturated. This field + // indicates the direction of saturation. If true, there are no more values + // in the forward direction. If false, there are no more values in the + // backward direction. + bool saturated_forward; +} roaring64_iterator_t; + +// Splits the given uint64 key into high 48 bit and low 16 bit components. +// Expects high48_out to be of length ART_KEY_BYTES. +static inline uint16_t split_key(uint64_t key, uint8_t high48_out[]) { + uint64_t tmp = croaring_htobe64(key); + memcpy(high48_out, (uint8_t *)(&tmp), ART_KEY_BYTES); + return (uint16_t)key; +} + +// Recombines the high 48 bit and low 16 bit components into a uint64 key. +// Expects high48_out to be of length ART_KEY_BYTES. +static inline uint64_t combine_key(const uint8_t high48[], uint16_t low16) { + uint64_t result = 0; + memcpy((uint8_t *)(&result), high48, ART_KEY_BYTES); + return croaring_be64toh(result) | low16; +} + +static inline uint64_t minimum(uint64_t a, uint64_t b) { + return (a < b) ? a : b; +} + +static inline leaf_t *create_leaf(container_t *container, uint8_t typecode) { + leaf_t *leaf = (leaf_t *)roaring_malloc(sizeof(leaf_t)); + leaf->container = container; + leaf->typecode = typecode; + return leaf; +} + +static inline leaf_t *copy_leaf_container(const leaf_t *leaf) { + leaf_t *result_leaf = (leaf_t *)roaring_malloc(sizeof(leaf_t)); + result_leaf->typecode = leaf->typecode; + // get_copy_of_container modifies the typecode passed in. + result_leaf->container = get_copy_of_container( + leaf->container, &result_leaf->typecode, /*copy_on_write=*/false); + return result_leaf; +} + +static inline void free_leaf(leaf_t *leaf) { roaring_free(leaf); } + +static inline int compare_high48(art_key_chunk_t key1[], + art_key_chunk_t key2[]) { + return art_compare_keys(key1, key2); +} + +static inline bool roaring64_iterator_init_at_leaf_first( + roaring64_iterator_t *it) { + it->high48 = combine_key(it->art_it.key, 0); + leaf_t *leaf = (leaf_t *)it->art_it.value; + uint16_t low16 = 0; + it->container_it = + container_init_iterator(leaf->container, leaf->typecode, &low16); + it->value = it->high48 | low16; + return (it->has_value = true); +} + +static inline bool roaring64_iterator_init_at_leaf_last( + roaring64_iterator_t *it) { + it->high48 = combine_key(it->art_it.key, 0); + leaf_t *leaf = (leaf_t *)it->art_it.value; + uint16_t low16 = 0; + it->container_it = + container_init_iterator_last(leaf->container, leaf->typecode, &low16); + it->value = it->high48 | low16; + return (it->has_value = true); +} + +static inline roaring64_iterator_t *roaring64_iterator_init_at( + const roaring64_bitmap_t *r, roaring64_iterator_t *it, bool first) { + it->parent = r; + it->art_it = art_init_iterator(&r->art, first); + it->has_value = it->art_it.value != NULL; + if (it->has_value) { + if (first) { + roaring64_iterator_init_at_leaf_first(it); + } else { + roaring64_iterator_init_at_leaf_last(it); + } + } else { + it->saturated_forward = first; + } + return it; +} + +roaring64_bitmap_t *roaring64_bitmap_create(void) { + roaring64_bitmap_t *r = + (roaring64_bitmap_t *)roaring_malloc(sizeof(roaring64_bitmap_t)); + r->art.root = NULL; + r->flags = 0; + return r; +} + +void roaring64_bitmap_free(roaring64_bitmap_t *r) { + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + while (it.value != NULL) { + leaf_t *leaf = (leaf_t *)it.value; + container_free(leaf->container, leaf->typecode); + free_leaf(leaf); + art_iterator_next(&it); + } + art_free(&r->art); + roaring_free(r); +} + +roaring64_bitmap_t *roaring64_bitmap_copy(const roaring64_bitmap_t *r) { + roaring64_bitmap_t *result = roaring64_bitmap_create(); + + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + while (it.value != NULL) { + leaf_t *leaf = (leaf_t *)it.value; + uint8_t result_typecode = leaf->typecode; + container_t *result_container = get_copy_of_container( + leaf->container, &result_typecode, /*copy_on_write=*/false); + leaf_t *result_leaf = create_leaf(result_container, result_typecode); + art_insert(&result->art, it.key, (art_val_t *)result_leaf); + art_iterator_next(&it); + } + return result; +} + +roaring64_bitmap_t *roaring64_bitmap_from_range(uint64_t min, uint64_t max, + uint64_t step) { + if (step == 0 || max <= min) { + return NULL; + } + roaring64_bitmap_t *r = roaring64_bitmap_create(); + if (step >= (1 << 16)) { + // Only one value per container. + for (uint64_t value = min; value < max; value += step) { + roaring64_bitmap_add(r, value); + if (value > UINT64_MAX - step) { + break; + } + } + return r; + } + do { + uint64_t high_bits = min & 0xFFFFFFFFFFFF0000; + uint16_t container_min = min & 0xFFFF; + uint32_t container_max = (uint32_t)minimum(max - high_bits, 1 << 16); + + uint8_t typecode; + container_t *container = container_from_range( + &typecode, container_min, container_max, (uint16_t)step); + + uint8_t high48[ART_KEY_BYTES]; + split_key(min, high48); + leaf_t *leaf = create_leaf(container, typecode); + art_insert(&r->art, high48, (art_val_t *)leaf); + + uint64_t gap = container_max - container_min + step - 1; + uint64_t increment = gap - (gap % step); + if (min > UINT64_MAX - increment) { + break; + } + min += increment; + } while (min < max); + return r; +} + +roaring64_bitmap_t *roaring64_bitmap_of_ptr(size_t n_args, + const uint64_t *vals) { + roaring64_bitmap_t *r = roaring64_bitmap_create(); + roaring64_bitmap_add_many(r, n_args, vals); + return r; +} + +roaring64_bitmap_t *roaring64_bitmap_of(size_t n_args, ...) { + roaring64_bitmap_t *r = roaring64_bitmap_create(); + roaring64_bulk_context_t context = {0}; + va_list ap; + va_start(ap, n_args); + for (size_t i = 0; i < n_args; i++) { + uint64_t val = va_arg(ap, uint64_t); + roaring64_bitmap_add_bulk(r, &context, val); + } + va_end(ap); + return r; +} + +static inline leaf_t *containerptr_roaring64_bitmap_add(roaring64_bitmap_t *r, + uint8_t *high48, + uint16_t low16, + leaf_t *leaf) { + if (leaf != NULL) { + uint8_t typecode2; + container_t *container2 = + container_add(leaf->container, low16, leaf->typecode, &typecode2); + if (container2 != leaf->container) { + container_free(leaf->container, leaf->typecode); + leaf->container = container2; + leaf->typecode = typecode2; + } + return leaf; + } else { + array_container_t *ac = array_container_create(); + uint8_t typecode; + container_t *container = + container_add(ac, low16, ARRAY_CONTAINER_TYPE, &typecode); + assert(ac == container); + leaf = create_leaf(container, typecode); + art_insert(&r->art, high48, (art_val_t *)leaf); + return leaf; + } +} + +void roaring64_bitmap_add(roaring64_bitmap_t *r, uint64_t val) { + uint8_t high48[ART_KEY_BYTES]; + uint16_t low16 = split_key(val, high48); + leaf_t *leaf = (leaf_t *)art_find(&r->art, high48); + containerptr_roaring64_bitmap_add(r, high48, low16, leaf); +} + +bool roaring64_bitmap_add_checked(roaring64_bitmap_t *r, uint64_t val) { + uint8_t high48[ART_KEY_BYTES]; + uint16_t low16 = split_key(val, high48); + leaf_t *leaf = (leaf_t *)art_find(&r->art, high48); + + int old_cardinality = 0; + if (leaf != NULL) { + old_cardinality = + container_get_cardinality(leaf->container, leaf->typecode); + } + leaf = containerptr_roaring64_bitmap_add(r, high48, low16, leaf); + int new_cardinality = + container_get_cardinality(leaf->container, leaf->typecode); + return old_cardinality != new_cardinality; +} + +void roaring64_bitmap_add_bulk(roaring64_bitmap_t *r, + roaring64_bulk_context_t *context, + uint64_t val) { + uint8_t high48[ART_KEY_BYTES]; + uint16_t low16 = split_key(val, high48); + if (context->leaf != NULL && + compare_high48(context->high_bytes, high48) == 0) { + // We're at a container with the correct high bits. + uint8_t typecode2; + container_t *container2 = + container_add(context->leaf->container, low16, + context->leaf->typecode, &typecode2); + if (container2 != context->leaf->container) { + container_free(context->leaf->container, context->leaf->typecode); + context->leaf->container = container2; + context->leaf->typecode = typecode2; + } + } else { + // We're not positioned anywhere yet or the high bits of the key + // differ. + leaf_t *leaf = (leaf_t *)art_find(&r->art, high48); + context->leaf = + containerptr_roaring64_bitmap_add(r, high48, low16, leaf); + memcpy(context->high_bytes, high48, ART_KEY_BYTES); + } +} + +void roaring64_bitmap_add_many(roaring64_bitmap_t *r, size_t n_args, + const uint64_t *vals) { + if (n_args == 0) { + return; + } + const uint64_t *end = vals + n_args; + roaring64_bulk_context_t context = {0}; + for (const uint64_t *current_val = vals; current_val != end; + current_val++) { + roaring64_bitmap_add_bulk(r, &context, *current_val); + } +} + +static inline void add_range_closed_at(art_t *art, uint8_t *high48, + uint16_t min, uint16_t max) { + leaf_t *leaf = (leaf_t *)art_find(art, high48); + if (leaf != NULL) { + uint8_t typecode2; + container_t *container2 = container_add_range( + leaf->container, leaf->typecode, min, max, &typecode2); + if (container2 != leaf->container) { + container_free(leaf->container, leaf->typecode); + leaf->container = container2; + leaf->typecode = typecode2; + } + return; + } + uint8_t typecode; + // container_add_range is inclusive, but `container_range_of_ones` is + // exclusive. + container_t *container = container_range_of_ones(min, max + 1, &typecode); + leaf = create_leaf(container, typecode); + art_insert(art, high48, (art_val_t *)leaf); +} + +void roaring64_bitmap_add_range(roaring64_bitmap_t *r, uint64_t min, + uint64_t max) { + if (min >= max) { + return; + } + roaring64_bitmap_add_range_closed(r, min, max - 1); +} + +void roaring64_bitmap_add_range_closed(roaring64_bitmap_t *r, uint64_t min, + uint64_t max) { + if (min > max) { + return; + } + + art_t *art = &r->art; + uint8_t min_high48[ART_KEY_BYTES]; + uint16_t min_low16 = split_key(min, min_high48); + uint8_t max_high48[ART_KEY_BYTES]; + uint16_t max_low16 = split_key(max, max_high48); + if (compare_high48(min_high48, max_high48) == 0) { + // Only populate range within one container. + add_range_closed_at(art, min_high48, min_low16, max_low16); + return; + } + + // Populate a range across containers. Fill intermediate containers + // entirely. + add_range_closed_at(art, min_high48, min_low16, 0xffff); + uint64_t min_high_bits = min >> 16; + uint64_t max_high_bits = max >> 16; + for (uint64_t current = min_high_bits + 1; current < max_high_bits; + ++current) { + uint8_t current_high48[ART_KEY_BYTES]; + split_key(current << 16, current_high48); + add_range_closed_at(art, current_high48, 0, 0xffff); + } + add_range_closed_at(art, max_high48, 0, max_low16); +} + +bool roaring64_bitmap_contains(const roaring64_bitmap_t *r, uint64_t val) { + uint8_t high48[ART_KEY_BYTES]; + uint16_t low16 = split_key(val, high48); + leaf_t *leaf = (leaf_t *)art_find(&r->art, high48); + if (leaf != NULL) { + return container_contains(leaf->container, low16, leaf->typecode); + } + return false; +} + +bool roaring64_bitmap_contains_range(const roaring64_bitmap_t *r, uint64_t min, + uint64_t max) { + if (min >= max) { + return true; + } + + uint8_t min_high48[ART_KEY_BYTES]; + uint16_t min_low16 = split_key(min, min_high48); + uint8_t max_high48[ART_KEY_BYTES]; + uint16_t max_low16 = split_key(max, max_high48); + uint64_t max_high48_bits = (max - 1) & 0xFFFFFFFFFFFF0000; // Inclusive + + art_iterator_t it = art_lower_bound(&r->art, min_high48); + if (it.value == NULL || combine_key(it.key, 0) > min) { + return false; + } + uint64_t prev_high48_bits = min & 0xFFFFFFFFFFFF0000; + while (it.value != NULL) { + uint64_t current_high48_bits = combine_key(it.key, 0); + if (current_high48_bits > max_high48_bits) { + // We've passed the end of the range with all containers containing + // the range. + return true; + } + if (current_high48_bits - prev_high48_bits > 0x10000) { + // There is a gap in the iterator that falls in the range. + return false; + } + + leaf_t *leaf = (leaf_t *)it.value; + uint32_t container_min = 0; + if (compare_high48(it.key, min_high48) == 0) { + container_min = min_low16; + } + uint32_t container_max = 0xFFFF + 1; // Exclusive + if (compare_high48(it.key, max_high48) == 0) { + container_max = max_low16; + } + + // For the first and last containers we use container_contains_range, + // for the intermediate containers we can use container_is_full. + if (container_min == 0 && container_max == 0xFFFF + 1) { + if (!container_is_full(leaf->container, leaf->typecode)) { + return false; + } + } else if (!container_contains_range(leaf->container, container_min, + container_max, leaf->typecode)) { + return false; + } + prev_high48_bits = current_high48_bits; + art_iterator_next(&it); + } + return prev_high48_bits == max_high48_bits; +} + +bool roaring64_bitmap_contains_bulk(const roaring64_bitmap_t *r, + roaring64_bulk_context_t *context, + uint64_t val) { + uint8_t high48[ART_KEY_BYTES]; + uint16_t low16 = split_key(val, high48); + + if (context->leaf == NULL || context->high_bytes != high48) { + // We're not positioned anywhere yet or the high bits of the key + // differ. + leaf_t *leaf = (leaf_t *)art_find(&r->art, high48); + if (leaf == NULL) { + return false; + } + context->leaf = leaf; + memcpy(context->high_bytes, high48, ART_KEY_BYTES); + } + return container_contains(context->leaf->container, low16, + context->leaf->typecode); +} + +bool roaring64_bitmap_select(const roaring64_bitmap_t *r, uint64_t rank, + uint64_t *element) { + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + uint64_t start_rank = 0; + while (it.value != NULL) { + leaf_t *leaf = (leaf_t *)it.value; + uint64_t cardinality = + container_get_cardinality(leaf->container, leaf->typecode); + if (start_rank + cardinality > rank) { + uint32_t uint32_start = 0; + uint32_t uint32_rank = rank - start_rank; + uint32_t uint32_element = 0; + if (container_select(leaf->container, leaf->typecode, &uint32_start, + uint32_rank, &uint32_element)) { + *element = combine_key(it.key, (uint16_t)uint32_element); + return true; + } + return false; + } + start_rank += cardinality; + art_iterator_next(&it); + } + return false; +} + +uint64_t roaring64_bitmap_rank(const roaring64_bitmap_t *r, uint64_t val) { + uint8_t high48[ART_KEY_BYTES]; + uint16_t low16 = split_key(val, high48); + + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + uint64_t rank = 0; + while (it.value != NULL) { + leaf_t *leaf = (leaf_t *)it.value; + int compare_result = compare_high48(it.key, high48); + if (compare_result < 0) { + rank += container_get_cardinality(leaf->container, leaf->typecode); + } else if (compare_result == 0) { + return rank + + container_rank(leaf->container, leaf->typecode, low16); + } else { + return rank; + } + art_iterator_next(&it); + } + return rank; +} + +bool roaring64_bitmap_get_index(const roaring64_bitmap_t *r, uint64_t val, + uint64_t *out_index) { + uint8_t high48[ART_KEY_BYTES]; + uint16_t low16 = split_key(val, high48); + + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + uint64_t index = 0; + while (it.value != NULL) { + leaf_t *leaf = (leaf_t *)it.value; + int compare_result = compare_high48(it.key, high48); + if (compare_result < 0) { + index += container_get_cardinality(leaf->container, leaf->typecode); + } else if (compare_result == 0) { + int index16 = + container_get_index(leaf->container, leaf->typecode, low16); + if (index16 < 0) { + return false; + } + *out_index = index + index16; + return true; + } else { + return false; + } + art_iterator_next(&it); + } + return false; +} + +static inline leaf_t *containerptr_roaring64_bitmap_remove( + roaring64_bitmap_t *r, uint8_t *high48, uint16_t low16, leaf_t *leaf) { + if (leaf == NULL) { + return NULL; + } + + container_t *container = leaf->container; + uint8_t typecode = leaf->typecode; + uint8_t typecode2; + container_t *container2 = + container_remove(container, low16, typecode, &typecode2); + if (container2 != container) { + container_free(container, typecode); + leaf->container = container2; + leaf->typecode = typecode2; + } + if (!container_nonzero_cardinality(container2, typecode2)) { + container_free(container2, typecode2); + leaf = (leaf_t *)art_erase(&r->art, high48); + if (leaf != NULL) { + free_leaf(leaf); + } + return NULL; + } + return leaf; +} + +void roaring64_bitmap_remove(roaring64_bitmap_t *r, uint64_t val) { + art_t *art = &r->art; + uint8_t high48[ART_KEY_BYTES]; + uint16_t low16 = split_key(val, high48); + + leaf_t *leaf = (leaf_t *)art_find(art, high48); + containerptr_roaring64_bitmap_remove(r, high48, low16, leaf); +} + +bool roaring64_bitmap_remove_checked(roaring64_bitmap_t *r, uint64_t val) { + art_t *art = &r->art; + uint8_t high48[ART_KEY_BYTES]; + uint16_t low16 = split_key(val, high48); + leaf_t *leaf = (leaf_t *)art_find(art, high48); + + if (leaf == NULL) { + return false; + } + int old_cardinality = + container_get_cardinality(leaf->container, leaf->typecode); + leaf = containerptr_roaring64_bitmap_remove(r, high48, low16, leaf); + if (leaf == NULL) { + return true; + } + int new_cardinality = + container_get_cardinality(leaf->container, leaf->typecode); + return new_cardinality != old_cardinality; +} + +void roaring64_bitmap_remove_bulk(roaring64_bitmap_t *r, + roaring64_bulk_context_t *context, + uint64_t val) { + art_t *art = &r->art; + uint8_t high48[ART_KEY_BYTES]; + uint16_t low16 = split_key(val, high48); + if (context->leaf != NULL && + compare_high48(context->high_bytes, high48) == 0) { + // We're at a container with the correct high bits. + uint8_t typecode2; + container_t *container2 = + container_remove(context->leaf->container, low16, + context->leaf->typecode, &typecode2); + if (container2 != context->leaf->container) { + container_free(context->leaf->container, context->leaf->typecode); + context->leaf->container = container2; + context->leaf->typecode = typecode2; + } + if (!container_nonzero_cardinality(container2, typecode2)) { + leaf_t *leaf = (leaf_t *)art_erase(art, high48); + container_free(container2, typecode2); + free_leaf(leaf); + } + } else { + // We're not positioned anywhere yet or the high bits of the key + // differ. + leaf_t *leaf = (leaf_t *)art_find(art, high48); + context->leaf = + containerptr_roaring64_bitmap_remove(r, high48, low16, leaf); + memcpy(context->high_bytes, high48, ART_KEY_BYTES); + } +} + +void roaring64_bitmap_remove_many(roaring64_bitmap_t *r, size_t n_args, + const uint64_t *vals) { + if (n_args == 0) { + return; + } + const uint64_t *end = vals + n_args; + roaring64_bulk_context_t context = {0}; + for (const uint64_t *current_val = vals; current_val != end; + current_val++) { + roaring64_bitmap_remove_bulk(r, &context, *current_val); + } +} + +static inline void remove_range_closed_at(art_t *art, uint8_t *high48, + uint16_t min, uint16_t max) { + leaf_t *leaf = (leaf_t *)art_find(art, high48); + if (leaf == NULL) { + return; + } + uint8_t typecode2; + container_t *container2 = container_remove_range( + leaf->container, leaf->typecode, min, max, &typecode2); + if (container2 != leaf->container) { + container_free(leaf->container, leaf->typecode); + if (container2 != NULL) { + leaf->container = container2; + leaf->typecode = typecode2; + } else { + art_erase(art, high48); + free_leaf(leaf); + } + } +} + +void roaring64_bitmap_remove_range(roaring64_bitmap_t *r, uint64_t min, + uint64_t max) { + if (min >= max) { + return; + } + roaring64_bitmap_remove_range_closed(r, min, max - 1); +} + +void roaring64_bitmap_remove_range_closed(roaring64_bitmap_t *r, uint64_t min, + uint64_t max) { + if (min > max) { + return; + } + + art_t *art = &r->art; + uint8_t min_high48[ART_KEY_BYTES]; + uint16_t min_low16 = split_key(min, min_high48); + uint8_t max_high48[ART_KEY_BYTES]; + uint16_t max_low16 = split_key(max, max_high48); + if (compare_high48(min_high48, max_high48) == 0) { + // Only remove a range within one container. + remove_range_closed_at(art, min_high48, min_low16, max_low16); + return; + } + + // Remove a range across containers. Remove intermediate containers + // entirely. + remove_range_closed_at(art, min_high48, min_low16, 0xffff); + + art_iterator_t it = art_upper_bound(art, min_high48); + while (it.value != NULL && art_compare_keys(it.key, max_high48) < 0) { + leaf_t *leaf = (leaf_t *)art_iterator_erase(art, &it); + container_free(leaf->container, leaf->typecode); + free_leaf(leaf); + } + remove_range_closed_at(art, max_high48, 0, max_low16); +} + +uint64_t roaring64_bitmap_get_cardinality(const roaring64_bitmap_t *r) { + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + uint64_t cardinality = 0; + while (it.value != NULL) { + leaf_t *leaf = (leaf_t *)it.value; + cardinality += + container_get_cardinality(leaf->container, leaf->typecode); + art_iterator_next(&it); + } + return cardinality; +} + +uint64_t roaring64_bitmap_range_cardinality(const roaring64_bitmap_t *r, + uint64_t min, uint64_t max) { + if (min >= max) { + return 0; + } + max--; // A closed range is easier to work with. + + uint64_t cardinality = 0; + uint8_t min_high48[ART_KEY_BYTES]; + uint16_t min_low16 = split_key(min, min_high48); + uint8_t max_high48[ART_KEY_BYTES]; + uint16_t max_low16 = split_key(max, max_high48); + + art_iterator_t it = art_lower_bound(&r->art, min_high48); + while (it.value != NULL) { + int max_compare_result = compare_high48(it.key, max_high48); + if (max_compare_result > 0) { + // We're outside the range. + break; + } + + leaf_t *leaf = (leaf_t *)it.value; + if (max_compare_result == 0) { + // We're at the max high key, add only the range up to the low + // 16 bits of max. + cardinality += + container_rank(leaf->container, leaf->typecode, max_low16); + } else { + // We're not yet at the max high key, add the full container + // range. + cardinality += + container_get_cardinality(leaf->container, leaf->typecode); + } + if (compare_high48(it.key, min_high48) == 0 && min_low16 > 0) { + // We're at the min high key, remove the range up to the low 16 + // bits of min. + cardinality -= + container_rank(leaf->container, leaf->typecode, min_low16 - 1); + } + art_iterator_next(&it); + } + return cardinality; +} + +bool roaring64_bitmap_is_empty(const roaring64_bitmap_t *r) { + return art_is_empty(&r->art); +} + +uint64_t roaring64_bitmap_minimum(const roaring64_bitmap_t *r) { + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + if (it.value == NULL) { + return UINT64_MAX; + } + leaf_t *leaf = (leaf_t *)it.value; + return combine_key(it.key, + container_minimum(leaf->container, leaf->typecode)); +} + +uint64_t roaring64_bitmap_maximum(const roaring64_bitmap_t *r) { + art_iterator_t it = art_init_iterator(&r->art, /*first=*/false); + if (it.value == NULL) { + return 0; + } + leaf_t *leaf = (leaf_t *)it.value; + return combine_key(it.key, + container_maximum(leaf->container, leaf->typecode)); +} + +bool roaring64_bitmap_run_optimize(roaring64_bitmap_t *r) { + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + bool has_run_container = false; + while (it.value != NULL) { + leaf_t *leaf = (leaf_t *)it.value; + uint8_t new_typecode; + // We don't need to free the existing container if a new one was + // created, convert_run_optimize does that internally. + leaf->container = convert_run_optimize(leaf->container, leaf->typecode, + &new_typecode); + leaf->typecode = new_typecode; + has_run_container |= new_typecode == RUN_CONTAINER_TYPE; + art_iterator_next(&it); + } + return has_run_container; +} + +static bool roaring64_leaf_internal_validate(const art_val_t *val, + const char **reason) { + leaf_t *leaf = (leaf_t *)val; + return container_internal_validate(leaf->container, leaf->typecode, reason); +} + +bool roaring64_bitmap_internal_validate(const roaring64_bitmap_t *r, + const char **reason) { + return art_internal_validate(&r->art, reason, + roaring64_leaf_internal_validate); +} + +bool roaring64_bitmap_equals(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL && it2.value != NULL) { + if (compare_high48(it1.key, it2.key) != 0) { + return false; + } + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + if (!container_equals(leaf1->container, leaf1->typecode, + leaf2->container, leaf2->typecode)) { + return false; + } + art_iterator_next(&it1); + art_iterator_next(&it2); + } + return it1.value == NULL && it2.value == NULL; +} + +bool roaring64_bitmap_is_subset(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL) { + bool it2_present = it2.value != NULL; + + int compare_result = 0; + if (it2_present) { + compare_result = compare_high48(it1.key, it2.key); + if (compare_result == 0) { + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + if (!container_is_subset(leaf1->container, leaf1->typecode, + leaf2->container, leaf2->typecode)) { + return false; + } + art_iterator_next(&it1); + art_iterator_next(&it2); + } + } + if (!it2_present || compare_result < 0) { + return false; + } else if (compare_result > 0) { + art_iterator_lower_bound(&it2, it1.key); + } + } + return true; +} + +bool roaring64_bitmap_is_strict_subset(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + return roaring64_bitmap_get_cardinality(r1) < + roaring64_bitmap_get_cardinality(r2) && + roaring64_bitmap_is_subset(r1, r2); +} + +roaring64_bitmap_t *roaring64_bitmap_and(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + roaring64_bitmap_t *result = roaring64_bitmap_create(); + + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL && it2.value != NULL) { + // Cases: + // 1. it1 < it2 -> it1++ + // 2. it1 == it1 -> output it1 & it2, it1++, it2++ + // 3. it1 > it2 -> it2++ + int compare_result = compare_high48(it1.key, it2.key); + if (compare_result == 0) { + // Case 2: iterators at the same high key position. + leaf_t *result_leaf = (leaf_t *)roaring_malloc(sizeof(leaf_t)); + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + result_leaf->container = container_and( + leaf1->container, leaf1->typecode, leaf2->container, + leaf2->typecode, &result_leaf->typecode); + + if (container_nonzero_cardinality(result_leaf->container, + result_leaf->typecode)) { + art_insert(&result->art, it1.key, (art_val_t *)result_leaf); + } else { + container_free(result_leaf->container, result_leaf->typecode); + free_leaf(result_leaf); + } + art_iterator_next(&it1); + art_iterator_next(&it2); + } else if (compare_result < 0) { + // Case 1: it1 is before it2. + art_iterator_lower_bound(&it1, it2.key); + } else { + // Case 3: it2 is before it1. + art_iterator_lower_bound(&it2, it1.key); + } + } + return result; +} + +uint64_t roaring64_bitmap_and_cardinality(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + uint64_t result = 0; + + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL && it2.value != NULL) { + // Cases: + // 1. it1 < it2 -> it1++ + // 2. it1 == it1 -> output cardinaltiy it1 & it2, it1++, it2++ + // 3. it1 > it2 -> it2++ + int compare_result = compare_high48(it1.key, it2.key); + if (compare_result == 0) { + // Case 2: iterators at the same high key position. + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + result += + container_and_cardinality(leaf1->container, leaf1->typecode, + leaf2->container, leaf2->typecode); + art_iterator_next(&it1); + art_iterator_next(&it2); + } else if (compare_result < 0) { + // Case 1: it1 is before it2. + art_iterator_lower_bound(&it1, it2.key); + } else { + // Case 3: it2 is before it1. + art_iterator_lower_bound(&it2, it1.key); + } + } + return result; +} + +// Inplace and (modifies its first argument). +void roaring64_bitmap_and_inplace(roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + if (r1 == r2) { + return; + } + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL) { + // Cases: + // 1. !it2_present -> erase it1 + // 2. it2_present + // a. it1 < it2 -> erase it1 + // b. it1 == it2 -> output it1 & it2, it1++, it2++ + // c. it1 > it2 -> it2++ + bool it2_present = it2.value != NULL; + int compare_result = 0; + if (it2_present) { + compare_result = compare_high48(it1.key, it2.key); + if (compare_result == 0) { + // Case 2a: iterators at the same high key position. + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + + // We do the computation "in place" only when c1 is not a + // shared container. Rationale: using a shared container + // safely with in place computation would require making a + // copy and then doing the computation in place which is + // likely less efficient than avoiding in place entirely and + // always generating a new container. + uint8_t typecode2; + container_t *container2; + if (leaf1->typecode == SHARED_CONTAINER_TYPE) { + container2 = container_and( + leaf1->container, leaf1->typecode, leaf2->container, + leaf2->typecode, &typecode2); + } else { + container2 = container_iand( + leaf1->container, leaf1->typecode, leaf2->container, + leaf2->typecode, &typecode2); + } + + if (container2 != leaf1->container) { + container_free(leaf1->container, leaf1->typecode); + leaf1->container = container2; + leaf1->typecode = typecode2; + } + if (!container_nonzero_cardinality(container2, typecode2)) { + container_free(container2, typecode2); + art_iterator_erase(&r1->art, &it1); + free_leaf(leaf1); + } else { + // Only advance the iterator if we didn't delete the + // leaf, as erasing advances by itself. + art_iterator_next(&it1); + } + art_iterator_next(&it2); + } + } + + if (!it2_present || compare_result < 0) { + // Cases 1 and 3a: it1 is the only iterator or is before it2. + leaf_t *leaf = (leaf_t *)art_iterator_erase(&r1->art, &it1); + assert(leaf != NULL); + container_free(leaf->container, leaf->typecode); + free_leaf(leaf); + } else if (compare_result > 0) { + // Case 2c: it1 is after it2. + art_iterator_lower_bound(&it2, it1.key); + } + } +} + +bool roaring64_bitmap_intersect(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + bool intersect = false; + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL && it2.value != NULL) { + // Cases: + // 1. it1 < it2 -> it1++ + // 2. it1 == it1 -> intersect |= it1 & it2, it1++, it2++ + // 3. it1 > it2 -> it2++ + int compare_result = compare_high48(it1.key, it2.key); + if (compare_result == 0) { + // Case 2: iterators at the same high key position. + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + intersect |= container_intersect(leaf1->container, leaf1->typecode, + leaf2->container, leaf2->typecode); + art_iterator_next(&it1); + art_iterator_next(&it2); + } else if (compare_result < 0) { + // Case 1: it1 is before it2. + art_iterator_lower_bound(&it1, it2.key); + } else { + // Case 3: it2 is before it1. + art_iterator_lower_bound(&it2, it1.key); + } + } + return intersect; +} + +bool roaring64_bitmap_intersect_with_range(const roaring64_bitmap_t *r, + uint64_t min, uint64_t max) { + if (min >= max) { + return false; + } + roaring64_iterator_t it; + roaring64_iterator_init_at(r, &it, /*first=*/true); + if (!roaring64_iterator_move_equalorlarger(&it, min)) { + return false; + } + return roaring64_iterator_has_value(&it) && + roaring64_iterator_value(&it) < max; +} + +double roaring64_bitmap_jaccard_index(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + uint64_t c1 = roaring64_bitmap_get_cardinality(r1); + uint64_t c2 = roaring64_bitmap_get_cardinality(r2); + uint64_t inter = roaring64_bitmap_and_cardinality(r1, r2); + return (double)inter / (double)(c1 + c2 - inter); +} + +roaring64_bitmap_t *roaring64_bitmap_or(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + roaring64_bitmap_t *result = roaring64_bitmap_create(); + + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL || it2.value != NULL) { + bool it1_present = it1.value != NULL; + bool it2_present = it2.value != NULL; + + // Cases: + // 1. it1_present && !it2_present -> output it1, it1++ + // 2. !it1_present && it2_present -> output it2, it2++ + // 3. it1_present && it2_present + // a. it1 < it2 -> output it1, it1++ + // b. it1 == it2 -> output it1 | it2, it1++, it2++ + // c. it1 > it2 -> output it2, it2++ + int compare_result = 0; + if (it1_present && it2_present) { + compare_result = compare_high48(it1.key, it2.key); + if (compare_result == 0) { + // Case 3b: iterators at the same high key position. + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + leaf_t *result_leaf = (leaf_t *)roaring_malloc(sizeof(leaf_t)); + result_leaf->container = container_or( + leaf1->container, leaf1->typecode, leaf2->container, + leaf2->typecode, &result_leaf->typecode); + art_insert(&result->art, it1.key, (art_val_t *)result_leaf); + art_iterator_next(&it1); + art_iterator_next(&it2); + } + } + if ((it1_present && !it2_present) || compare_result < 0) { + // Cases 1 and 3a: it1 is the only iterator or is before it2. + leaf_t *result_leaf = copy_leaf_container((leaf_t *)it1.value); + art_insert(&result->art, it1.key, (art_val_t *)result_leaf); + art_iterator_next(&it1); + } else if ((!it1_present && it2_present) || compare_result > 0) { + // Cases 2 and 3c: it2 is the only iterator or is before it1. + leaf_t *result_leaf = copy_leaf_container((leaf_t *)it2.value); + art_insert(&result->art, it2.key, (art_val_t *)result_leaf); + art_iterator_next(&it2); + } + } + return result; +} + +uint64_t roaring64_bitmap_or_cardinality(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + uint64_t c1 = roaring64_bitmap_get_cardinality(r1); + uint64_t c2 = roaring64_bitmap_get_cardinality(r2); + uint64_t inter = roaring64_bitmap_and_cardinality(r1, r2); + return c1 + c2 - inter; +} + +void roaring64_bitmap_or_inplace(roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + if (r1 == r2) { + return; + } + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL || it2.value != NULL) { + bool it1_present = it1.value != NULL; + bool it2_present = it2.value != NULL; + + // Cases: + // 1. it1_present && !it2_present -> it1++ + // 2. !it1_present && it2_present -> add it2, it2++ + // 3. it1_present && it2_present + // a. it1 < it2 -> it1++ + // b. it1 == it2 -> it1 | it2, it1++, it2++ + // c. it1 > it2 -> add it2, it2++ + int compare_result = 0; + if (it1_present && it2_present) { + compare_result = compare_high48(it1.key, it2.key); + if (compare_result == 0) { + // Case 3b: iterators at the same high key position. + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + uint8_t typecode2; + container_t *container2; + if (leaf1->typecode == SHARED_CONTAINER_TYPE) { + container2 = container_or(leaf1->container, leaf1->typecode, + leaf2->container, leaf2->typecode, + &typecode2); + } else { + container2 = container_ior( + leaf1->container, leaf1->typecode, leaf2->container, + leaf2->typecode, &typecode2); + } + if (container2 != leaf1->container) { + container_free(leaf1->container, leaf1->typecode); + leaf1->container = container2; + leaf1->typecode = typecode2; + } + art_iterator_next(&it1); + art_iterator_next(&it2); + } + } + if ((it1_present && !it2_present) || compare_result < 0) { + // Cases 1 and 3a: it1 is the only iterator or is before it2. + art_iterator_next(&it1); + } else if ((!it1_present && it2_present) || compare_result > 0) { + // Cases 2 and 3c: it2 is the only iterator or is before it1. + leaf_t *result_leaf = copy_leaf_container((leaf_t *)it2.value); + art_iterator_insert(&r1->art, &it1, it2.key, + (art_val_t *)result_leaf); + art_iterator_next(&it2); + } + } +} + +roaring64_bitmap_t *roaring64_bitmap_xor(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + roaring64_bitmap_t *result = roaring64_bitmap_create(); + + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL || it2.value != NULL) { + bool it1_present = it1.value != NULL; + bool it2_present = it2.value != NULL; + + // Cases: + // 1. it1_present && !it2_present -> output it1, it1++ + // 2. !it1_present && it2_present -> output it2, it2++ + // 3. it1_present && it2_present + // a. it1 < it2 -> output it1, it1++ + // b. it1 == it2 -> output it1 ^ it2, it1++, it2++ + // c. it1 > it2 -> output it2, it2++ + int compare_result = 0; + if (it1_present && it2_present) { + compare_result = compare_high48(it1.key, it2.key); + if (compare_result == 0) { + // Case 3b: iterators at the same high key position. + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + leaf_t *result_leaf = (leaf_t *)roaring_malloc(sizeof(leaf_t)); + result_leaf->container = container_xor( + leaf1->container, leaf1->typecode, leaf2->container, + leaf2->typecode, &result_leaf->typecode); + if (container_nonzero_cardinality(result_leaf->container, + result_leaf->typecode)) { + art_insert(&result->art, it1.key, (art_val_t *)result_leaf); + } else { + container_free(result_leaf->container, + result_leaf->typecode); + free_leaf(result_leaf); + } + art_iterator_next(&it1); + art_iterator_next(&it2); + } + } + if ((it1_present && !it2_present) || compare_result < 0) { + // Cases 1 and 3a: it1 is the only iterator or is before it2. + leaf_t *result_leaf = copy_leaf_container((leaf_t *)it1.value); + art_insert(&result->art, it1.key, (art_val_t *)result_leaf); + art_iterator_next(&it1); + } else if ((!it1_present && it2_present) || compare_result > 0) { + // Cases 2 and 3c: it2 is the only iterator or is before it1. + leaf_t *result_leaf = copy_leaf_container((leaf_t *)it2.value); + art_insert(&result->art, it2.key, (art_val_t *)result_leaf); + art_iterator_next(&it2); + } + } + return result; +} + +uint64_t roaring64_bitmap_xor_cardinality(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + uint64_t c1 = roaring64_bitmap_get_cardinality(r1); + uint64_t c2 = roaring64_bitmap_get_cardinality(r2); + uint64_t inter = roaring64_bitmap_and_cardinality(r1, r2); + return c1 + c2 - 2 * inter; +} + +void roaring64_bitmap_xor_inplace(roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + assert(r1 != r2); + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL || it2.value != NULL) { + bool it1_present = it1.value != NULL; + bool it2_present = it2.value != NULL; + + // Cases: + // 1. it1_present && !it2_present -> it1++ + // 2. !it1_present && it2_present -> add it2, it2++ + // 3. it1_present && it2_present + // a. it1 < it2 -> it1++ + // b. it1 == it2 -> it1 ^ it2, it1++, it2++ + // c. it1 > it2 -> add it2, it2++ + int compare_result = 0; + if (it1_present && it2_present) { + compare_result = compare_high48(it1.key, it2.key); + if (compare_result == 0) { + // Case 3b: iterators at the same high key position. + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + container_t *container1 = leaf1->container; + uint8_t typecode1 = leaf1->typecode; + uint8_t typecode2; + container_t *container2; + if (leaf1->typecode == SHARED_CONTAINER_TYPE) { + container2 = container_xor( + leaf1->container, leaf1->typecode, leaf2->container, + leaf2->typecode, &typecode2); + if (container2 != container1) { + // We only free when doing container_xor, not + // container_ixor, as ixor frees the original + // internally. + container_free(container1, typecode1); + } + } else { + container2 = container_ixor( + leaf1->container, leaf1->typecode, leaf2->container, + leaf2->typecode, &typecode2); + } + leaf1->container = container2; + leaf1->typecode = typecode2; + + if (!container_nonzero_cardinality(container2, typecode2)) { + container_free(container2, typecode2); + art_iterator_erase(&r1->art, &it1); + free_leaf(leaf1); + } else { + // Only advance the iterator if we didn't delete the + // leaf, as erasing advances by itself. + art_iterator_next(&it1); + } + art_iterator_next(&it2); + } + } + if ((it1_present && !it2_present) || compare_result < 0) { + // Cases 1 and 3a: it1 is the only iterator or is before it2. + art_iterator_next(&it1); + } else if ((!it1_present && it2_present) || compare_result > 0) { + // Cases 2 and 3c: it2 is the only iterator or is before it1. + leaf_t *result_leaf = copy_leaf_container((leaf_t *)it2.value); + if (it1_present) { + art_iterator_insert(&r1->art, &it1, it2.key, + (art_val_t *)result_leaf); + art_iterator_next(&it1); + } else { + art_insert(&r1->art, it2.key, (art_val_t *)result_leaf); + } + art_iterator_next(&it2); + } + } +} + +roaring64_bitmap_t *roaring64_bitmap_andnot(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + roaring64_bitmap_t *result = roaring64_bitmap_create(); + + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL) { + // Cases: + // 1. it1_present && !it2_present -> output it1, it1++ + // 2. it1_present && it2_present + // a. it1 < it2 -> output it1, it1++ + // b. it1 == it2 -> output it1 - it2, it1++, it2++ + // c. it1 > it2 -> it2++ + bool it2_present = it2.value != NULL; + int compare_result = 0; + if (it2_present) { + compare_result = compare_high48(it1.key, it2.key); + if (compare_result == 0) { + // Case 2b: iterators at the same high key position. + leaf_t *result_leaf = (leaf_t *)roaring_malloc(sizeof(leaf_t)); + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + result_leaf->container = container_andnot( + leaf1->container, leaf1->typecode, leaf2->container, + leaf2->typecode, &result_leaf->typecode); + + if (container_nonzero_cardinality(result_leaf->container, + result_leaf->typecode)) { + art_insert(&result->art, it1.key, (art_val_t *)result_leaf); + } else { + container_free(result_leaf->container, + result_leaf->typecode); + free_leaf(result_leaf); + } + art_iterator_next(&it1); + art_iterator_next(&it2); + } + } + if (!it2_present || compare_result < 0) { + // Cases 1 and 2a: it1 is the only iterator or is before it2. + leaf_t *result_leaf = copy_leaf_container((leaf_t *)it1.value); + art_insert(&result->art, it1.key, (art_val_t *)result_leaf); + art_iterator_next(&it1); + } else if (compare_result > 0) { + // Case 2c: it1 is after it2. + art_iterator_next(&it2); + } + } + return result; +} + +uint64_t roaring64_bitmap_andnot_cardinality(const roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + uint64_t c1 = roaring64_bitmap_get_cardinality(r1); + uint64_t inter = roaring64_bitmap_and_cardinality(r1, r2); + return c1 - inter; +} + +void roaring64_bitmap_andnot_inplace(roaring64_bitmap_t *r1, + const roaring64_bitmap_t *r2) { + art_iterator_t it1 = art_init_iterator(&r1->art, /*first=*/true); + art_iterator_t it2 = art_init_iterator(&r2->art, /*first=*/true); + + while (it1.value != NULL) { + // Cases: + // 1. it1_present && !it2_present -> it1++ + // 2. it1_present && it2_present + // a. it1 < it2 -> it1++ + // b. it1 == it2 -> it1 - it2, it1++, it2++ + // c. it1 > it2 -> it2++ + bool it2_present = it2.value != NULL; + int compare_result = 0; + if (it2_present) { + compare_result = compare_high48(it1.key, it2.key); + if (compare_result == 0) { + // Case 2b: iterators at the same high key position. + leaf_t *leaf1 = (leaf_t *)it1.value; + leaf_t *leaf2 = (leaf_t *)it2.value; + container_t *container1 = leaf1->container; + uint8_t typecode1 = leaf1->typecode; + uint8_t typecode2; + container_t *container2; + if (leaf1->typecode == SHARED_CONTAINER_TYPE) { + container2 = container_andnot( + leaf1->container, leaf1->typecode, leaf2->container, + leaf2->typecode, &typecode2); + if (container2 != container1) { + // We only free when doing container_andnot, not + // container_iandnot, as iandnot frees the original + // internally. + container_free(container1, typecode1); + } + } else { + container2 = container_iandnot( + leaf1->container, leaf1->typecode, leaf2->container, + leaf2->typecode, &typecode2); + } + if (container2 != container1) { + leaf1->container = container2; + leaf1->typecode = typecode2; + } + + if (!container_nonzero_cardinality(container2, typecode2)) { + container_free(container2, typecode2); + art_iterator_erase(&r1->art, &it1); + free_leaf(leaf1); + } else { + // Only advance the iterator if we didn't delete the + // leaf, as erasing advances by itself. + art_iterator_next(&it1); + } + art_iterator_next(&it2); + } + } + if (!it2_present || compare_result < 0) { + // Cases 1 and 2a: it1 is the only iterator or is before it2. + art_iterator_next(&it1); + } else if (compare_result > 0) { + // Case 2c: it1 is after it2. + art_iterator_next(&it2); + } + } +} + +/** + * Flips the leaf at high48 in the range [min, max), returning a new leaf with a + * new container. If the high48 key is not found in the existing bitmap, a new + * container is created. Returns null if the negation results in an empty range. + */ +static leaf_t *roaring64_flip_leaf(const roaring64_bitmap_t *r, + uint8_t high48[], uint32_t min, + uint32_t max) { + leaf_t *leaf1 = (leaf_t *)art_find(&r->art, high48); + container_t *container2; + uint8_t typecode2; + if (leaf1 == NULL) { + // No container at this key, create a full container. + container2 = container_range_of_ones(min, max, &typecode2); + } else if (min == 0 && max > 0xFFFF) { + // Flip whole container. + container2 = + container_not(leaf1->container, leaf1->typecode, &typecode2); + } else { + // Partially flip a container. + container2 = container_not_range(leaf1->container, leaf1->typecode, min, + max, &typecode2); + } + if (container_nonzero_cardinality(container2, typecode2)) { + return create_leaf(container2, typecode2); + } + container_free(container2, typecode2); + return NULL; +} + +/** + * Flips the leaf at high48 in the range [min, max). If the high48 key is not + * found in the bitmap, a new container is created. Deletes the leaf and + * associated container if the negation results in an empty range. + */ +static void roaring64_flip_leaf_inplace(roaring64_bitmap_t *r, uint8_t high48[], + uint32_t min, uint32_t max) { + leaf_t *leaf = (leaf_t *)art_find(&r->art, high48); + container_t *container2; + uint8_t typecode2; + if (leaf == NULL) { + // No container at this key, insert a full container. + container2 = container_range_of_ones(min, max, &typecode2); + art_insert(&r->art, high48, + (art_val_t *)create_leaf(container2, typecode2)); + return; + } + + if (min == 0 && max > 0xFFFF) { + // Flip whole container. + container2 = + container_inot(leaf->container, leaf->typecode, &typecode2); + } else { + // Partially flip a container. + container2 = container_inot_range(leaf->container, leaf->typecode, min, + max, &typecode2); + } + + leaf->container = container2; + leaf->typecode = typecode2; + + if (!container_nonzero_cardinality(leaf->container, leaf->typecode)) { + art_erase(&r->art, high48); + container_free(leaf->container, leaf->typecode); + free_leaf(leaf); + } +} + +roaring64_bitmap_t *roaring64_bitmap_flip(const roaring64_bitmap_t *r, + uint64_t min, uint64_t max) { + if (min >= max) { + return roaring64_bitmap_copy(r); + } + return roaring64_bitmap_flip_closed(r, min, max - 1); +} + +roaring64_bitmap_t *roaring64_bitmap_flip_closed(const roaring64_bitmap_t *r1, + uint64_t min, uint64_t max) { + if (min > max) { + return roaring64_bitmap_copy(r1); + } + uint8_t min_high48_key[ART_KEY_BYTES]; + uint16_t min_low16 = split_key(min, min_high48_key); + uint8_t max_high48_key[ART_KEY_BYTES]; + uint16_t max_low16 = split_key(max, max_high48_key); + uint64_t min_high48_bits = (min & 0xFFFFFFFFFFFF0000ULL) >> 16; + uint64_t max_high48_bits = (max & 0xFFFFFFFFFFFF0000ULL) >> 16; + + roaring64_bitmap_t *r2 = roaring64_bitmap_create(); + art_iterator_t it = art_init_iterator(&r1->art, /*first=*/true); + + // Copy the containers before min unchanged. + while (it.value != NULL && compare_high48(it.key, min_high48_key) < 0) { + leaf_t *leaf1 = (leaf_t *)it.value; + uint8_t typecode2 = leaf1->typecode; + container_t *container2 = get_copy_of_container( + leaf1->container, &typecode2, /*copy_on_write=*/false); + art_insert(&r2->art, it.key, + (art_val_t *)create_leaf(container2, typecode2)); + art_iterator_next(&it); + } + + // Flip the range (including non-existent containers!) between min and max. + for (uint64_t high48_bits = min_high48_bits; high48_bits <= max_high48_bits; + high48_bits++) { + uint8_t current_high48_key[ART_KEY_BYTES]; + split_key(high48_bits << 16, current_high48_key); + + uint32_t min_container = 0; + if (high48_bits == min_high48_bits) { + min_container = min_low16; + } + uint32_t max_container = 0xFFFF + 1; // Exclusive range. + if (high48_bits == max_high48_bits) { + max_container = max_low16 + 1; // Exclusive. + } + + leaf_t *leaf = roaring64_flip_leaf(r1, current_high48_key, + min_container, max_container); + if (leaf != NULL) { + art_insert(&r2->art, current_high48_key, (art_val_t *)leaf); + } + } + + // Copy the containers after max unchanged. + it = art_upper_bound(&r1->art, max_high48_key); + while (it.value != NULL) { + leaf_t *leaf1 = (leaf_t *)it.value; + uint8_t typecode2 = leaf1->typecode; + container_t *container2 = get_copy_of_container( + leaf1->container, &typecode2, /*copy_on_write=*/false); + art_insert(&r2->art, it.key, + (art_val_t *)create_leaf(container2, typecode2)); + art_iterator_next(&it); + } + + return r2; +} + +void roaring64_bitmap_flip_inplace(roaring64_bitmap_t *r, uint64_t min, + uint64_t max) { + if (min >= max) { + return; + } + roaring64_bitmap_flip_closed_inplace(r, min, max - 1); +} + +void roaring64_bitmap_flip_closed_inplace(roaring64_bitmap_t *r, uint64_t min, + uint64_t max) { + if (min > max) { + return; + } + uint16_t min_low16 = (uint16_t)min; + uint16_t max_low16 = (uint16_t)max; + uint64_t min_high48_bits = (min & 0xFFFFFFFFFFFF0000ULL) >> 16; + uint64_t max_high48_bits = (max & 0xFFFFFFFFFFFF0000ULL) >> 16; + + // Flip the range (including non-existent containers!) between min and max. + for (uint64_t high48_bits = min_high48_bits; high48_bits <= max_high48_bits; + high48_bits++) { + uint8_t current_high48_key[ART_KEY_BYTES]; + split_key(high48_bits << 16, current_high48_key); + + uint32_t min_container = 0; + if (high48_bits == min_high48_bits) { + min_container = min_low16; + } + uint32_t max_container = 0xFFFF + 1; // Exclusive range. + if (high48_bits == max_high48_bits) { + max_container = max_low16 + 1; // Exclusive. + } + + roaring64_flip_leaf_inplace(r, current_high48_key, min_container, + max_container); + } +} + +// Returns the number of distinct high 32-bit entries in the bitmap. +static inline uint64_t count_high32(const roaring64_bitmap_t *r) { + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + uint64_t high32_count = 0; + uint32_t prev_high32 = 0; + while (it.value != NULL) { + uint32_t current_high32 = (uint32_t)(combine_key(it.key, 0) >> 32); + if (high32_count == 0 || prev_high32 != current_high32) { + high32_count++; + prev_high32 = current_high32; + } + art_iterator_next(&it); + } + return high32_count; +} + +// Frees the (32-bit!) bitmap without freeing the containers. +static inline void roaring_bitmap_free_without_containers(roaring_bitmap_t *r) { + ra_clear_without_containers(&r->high_low_container); + roaring_free(r); +} + +size_t roaring64_bitmap_portable_size_in_bytes(const roaring64_bitmap_t *r) { + // https://github.com/RoaringBitmap/RoaringFormatSpec#extension-for-64-bit-implementations + size_t size = 0; + + // Write as uint64 the distinct number of "buckets", where a bucket is + // defined as the most significant 32 bits of an element. + uint64_t high32_count; + size += sizeof(high32_count); + + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + uint32_t prev_high32 = 0; + roaring_bitmap_t *bitmap32 = NULL; + + // Iterate through buckets ordered by increasing keys. + while (it.value != NULL) { + uint32_t current_high32 = (uint32_t)(combine_key(it.key, 0) >> 32); + if (bitmap32 == NULL || prev_high32 != current_high32) { + if (bitmap32 != NULL) { + // Write as uint32 the most significant 32 bits of the bucket. + size += sizeof(prev_high32); + + // Write the 32-bit Roaring bitmaps representing the least + // significant bits of a set of elements. + size += roaring_bitmap_portable_size_in_bytes(bitmap32); + roaring_bitmap_free_without_containers(bitmap32); + } + + // Start a new 32-bit bitmap with the current high 32 bits. + art_iterator_t it2 = it; + uint32_t containers_with_high32 = 0; + while (it2.value != NULL && (uint32_t)(combine_key(it2.key, 0) >> + 32) == current_high32) { + containers_with_high32++; + art_iterator_next(&it2); + } + bitmap32 = + roaring_bitmap_create_with_capacity(containers_with_high32); + + prev_high32 = current_high32; + } + leaf_t *leaf = (leaf_t *)it.value; + ra_append(&bitmap32->high_low_container, + (uint16_t)(current_high32 >> 16), leaf->container, + leaf->typecode); + art_iterator_next(&it); + } + + if (bitmap32 != NULL) { + // Write as uint32 the most significant 32 bits of the bucket. + size += sizeof(prev_high32); + + // Write the 32-bit Roaring bitmaps representing the least + // significant bits of a set of elements. + size += roaring_bitmap_portable_size_in_bytes(bitmap32); + roaring_bitmap_free_without_containers(bitmap32); + } + + return size; +} + +size_t roaring64_bitmap_portable_serialize(const roaring64_bitmap_t *r, + char *buf) { + // https://github.com/RoaringBitmap/RoaringFormatSpec#extension-for-64-bit-implementations + if (buf == NULL) { + return 0; + } + const char *initial_buf = buf; + + // Write as uint64 the distinct number of "buckets", where a bucket is + // defined as the most significant 32 bits of an element. + uint64_t high32_count = count_high32(r); + memcpy(buf, &high32_count, sizeof(high32_count)); + buf += sizeof(high32_count); + + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + uint32_t prev_high32 = 0; + roaring_bitmap_t *bitmap32 = NULL; + + // Iterate through buckets ordered by increasing keys. + while (it.value != NULL) { + uint64_t current_high48 = combine_key(it.key, 0); + uint32_t current_high32 = (uint32_t)(current_high48 >> 32); + if (bitmap32 == NULL || prev_high32 != current_high32) { + if (bitmap32 != NULL) { + // Write as uint32 the most significant 32 bits of the bucket. + memcpy(buf, &prev_high32, sizeof(prev_high32)); + buf += sizeof(prev_high32); + + // Write the 32-bit Roaring bitmaps representing the least + // significant bits of a set of elements. + buf += roaring_bitmap_portable_serialize(bitmap32, buf); + roaring_bitmap_free_without_containers(bitmap32); + } + + // Start a new 32-bit bitmap with the current high 32 bits. + art_iterator_t it2 = it; + uint32_t containers_with_high32 = 0; + while (it2.value != NULL && + (uint32_t)combine_key(it2.key, 0) == current_high32) { + containers_with_high32++; + art_iterator_next(&it2); + } + bitmap32 = + roaring_bitmap_create_with_capacity(containers_with_high32); + + prev_high32 = current_high32; + } + leaf_t *leaf = (leaf_t *)it.value; + ra_append(&bitmap32->high_low_container, + (uint16_t)(current_high48 >> 16), leaf->container, + leaf->typecode); + art_iterator_next(&it); + } + + if (bitmap32 != NULL) { + // Write as uint32 the most significant 32 bits of the bucket. + memcpy(buf, &prev_high32, sizeof(prev_high32)); + buf += sizeof(prev_high32); + + // Write the 32-bit Roaring bitmaps representing the least + // significant bits of a set of elements. + buf += roaring_bitmap_portable_serialize(bitmap32, buf); + roaring_bitmap_free_without_containers(bitmap32); + } + + return buf - initial_buf; +} + +size_t roaring64_bitmap_portable_deserialize_size(const char *buf, + size_t maxbytes) { + // https://github.com/RoaringBitmap/RoaringFormatSpec#extension-for-64-bit-implementations + if (buf == NULL) { + return 0; + } + size_t read_bytes = 0; + + // Read as uint64 the distinct number of "buckets", where a bucket is + // defined as the most significant 32 bits of an element. + uint64_t buckets; + if (read_bytes + sizeof(buckets) > maxbytes) { + return 0; + } + memcpy(&buckets, buf, sizeof(buckets)); + buf += sizeof(buckets); + read_bytes += sizeof(buckets); + + // Buckets should be 32 bits with 4 bits of zero padding. + if (buckets > UINT32_MAX) { + return 0; + } + + // Iterate through buckets ordered by increasing keys. + for (uint64_t bucket = 0; bucket < buckets; ++bucket) { + // Read as uint32 the most significant 32 bits of the bucket. + uint32_t high32; + if (read_bytes + sizeof(high32) > maxbytes) { + return 0; + } + buf += sizeof(high32); + read_bytes += sizeof(high32); + + // Read the 32-bit Roaring bitmaps representing the least significant + // bits of a set of elements. + size_t bitmap32_size = roaring_bitmap_portable_deserialize_size( + buf, maxbytes - read_bytes); + if (bitmap32_size == 0) { + return 0; + } + buf += bitmap32_size; + read_bytes += bitmap32_size; + } + return read_bytes; +} + +roaring64_bitmap_t *roaring64_bitmap_portable_deserialize_safe( + const char *buf, size_t maxbytes) { + // https://github.com/RoaringBitmap/RoaringFormatSpec#extension-for-64-bit-implementations + if (buf == NULL) { + return NULL; + } + size_t read_bytes = 0; + + // Read as uint64 the distinct number of "buckets", where a bucket is + // defined as the most significant 32 bits of an element. + uint64_t buckets; + if (read_bytes + sizeof(buckets) > maxbytes) { + return NULL; + } + memcpy(&buckets, buf, sizeof(buckets)); + buf += sizeof(buckets); + read_bytes += sizeof(buckets); + + // Buckets should be 32 bits with 4 bits of zero padding. + if (buckets > UINT32_MAX) { + return NULL; + } + + roaring64_bitmap_t *r = roaring64_bitmap_create(); + // Iterate through buckets ordered by increasing keys. + for (uint64_t bucket = 0; bucket < buckets; ++bucket) { + // Read as uint32 the most significant 32 bits of the bucket. + uint32_t high32; + if (read_bytes + sizeof(high32) > maxbytes) { + roaring64_bitmap_free(r); + return NULL; + } + memcpy(&high32, buf, sizeof(high32)); + buf += sizeof(high32); + read_bytes += sizeof(high32); + + // Read the 32-bit Roaring bitmaps representing the least significant + // bits of a set of elements. + size_t bitmap32_size = roaring_bitmap_portable_deserialize_size( + buf, maxbytes - read_bytes); + if (bitmap32_size == 0) { + roaring64_bitmap_free(r); + return NULL; + } + + roaring_bitmap_t *bitmap32 = roaring_bitmap_portable_deserialize_safe( + buf, maxbytes - read_bytes); + if (bitmap32 == NULL) { + roaring64_bitmap_free(r); + return NULL; + } + buf += bitmap32_size; + read_bytes += bitmap32_size; + + // Insert all containers of the 32-bit bitmap into the 64-bit bitmap. + uint32_t r32_size = ra_get_size(&bitmap32->high_low_container); + for (size_t i = 0; i < r32_size; ++i) { + uint16_t key16 = + ra_get_key_at_index(&bitmap32->high_low_container, (uint16_t)i); + uint8_t typecode; + container_t *container = ra_get_container_at_index( + &bitmap32->high_low_container, (uint16_t)i, &typecode); + + uint64_t high48_bits = + (((uint64_t)high32) << 32) | (((uint64_t)key16) << 16); + uint8_t high48[ART_KEY_BYTES]; + split_key(high48_bits, high48); + leaf_t *leaf = create_leaf(container, typecode); + art_insert(&r->art, high48, (art_val_t *)leaf); + } + roaring_bitmap_free_without_containers(bitmap32); + } + return r; +} + +bool roaring64_bitmap_iterate(const roaring64_bitmap_t *r, + roaring_iterator64 iterator, void *ptr) { + art_iterator_t it = art_init_iterator(&r->art, /*first=*/true); + while (it.value != NULL) { + uint64_t high48 = combine_key(it.key, 0); + uint64_t high32 = high48 & 0xFFFFFFFF00000000ULL; + uint32_t low32 = high48; + leaf_t *leaf = (leaf_t *)it.value; + if (!container_iterate64(leaf->container, leaf->typecode, low32, + iterator, high32, ptr)) { + return false; + } + art_iterator_next(&it); + } + return true; +} + +void roaring64_bitmap_to_uint64_array(const roaring64_bitmap_t *r, + uint64_t *out) { + roaring64_iterator_t it = {0}; + roaring64_iterator_init_at(r, &it, /*first=*/true); + roaring64_iterator_read(&it, out, UINT64_MAX); +} + +roaring64_iterator_t *roaring64_iterator_create(const roaring64_bitmap_t *r) { + roaring64_iterator_t *it = + (roaring64_iterator_t *)roaring_malloc(sizeof(roaring64_iterator_t)); + return roaring64_iterator_init_at(r, it, /*first=*/true); +} + +roaring64_iterator_t *roaring64_iterator_create_last( + const roaring64_bitmap_t *r) { + roaring64_iterator_t *it = + (roaring64_iterator_t *)roaring_malloc(sizeof(roaring64_iterator_t)); + return roaring64_iterator_init_at(r, it, /*first=*/false); +} + +void roaring64_iterator_reinit(const roaring64_bitmap_t *r, + roaring64_iterator_t *it) { + roaring64_iterator_init_at(r, it, /*first=*/true); +} + +void roaring64_iterator_reinit_last(const roaring64_bitmap_t *r, + roaring64_iterator_t *it) { + roaring64_iterator_init_at(r, it, /*first=*/false); +} + +roaring64_iterator_t *roaring64_iterator_copy(const roaring64_iterator_t *it) { + roaring64_iterator_t *new_it = + (roaring64_iterator_t *)roaring_malloc(sizeof(roaring64_iterator_t)); + memcpy(new_it, it, sizeof(*it)); + return new_it; +} + +void roaring64_iterator_free(roaring64_iterator_t *it) { roaring_free(it); } + +bool roaring64_iterator_has_value(const roaring64_iterator_t *it) { + return it->has_value; +} + +uint64_t roaring64_iterator_value(const roaring64_iterator_t *it) { + return it->value; +} + +bool roaring64_iterator_advance(roaring64_iterator_t *it) { + if (it->art_it.value == NULL) { + if (it->saturated_forward) { + return (it->has_value = false); + } + roaring64_iterator_init_at(it->parent, it, /*first=*/true); + return it->has_value; + } + leaf_t *leaf = (leaf_t *)it->art_it.value; + uint16_t low16 = (uint16_t)it->value; + if (container_iterator_next(leaf->container, leaf->typecode, + &it->container_it, &low16)) { + it->value = it->high48 | low16; + return (it->has_value = true); + } + if (art_iterator_next(&it->art_it)) { + return roaring64_iterator_init_at_leaf_first(it); + } + it->saturated_forward = true; + return (it->has_value = false); +} + +bool roaring64_iterator_previous(roaring64_iterator_t *it) { + if (it->art_it.value == NULL) { + if (!it->saturated_forward) { + // Saturated backward. + return (it->has_value = false); + } + roaring64_iterator_init_at(it->parent, it, /*first=*/false); + return it->has_value; + } + leaf_t *leaf = (leaf_t *)it->art_it.value; + uint16_t low16 = (uint16_t)it->value; + if (container_iterator_prev(leaf->container, leaf->typecode, + &it->container_it, &low16)) { + it->value = it->high48 | low16; + return (it->has_value = true); + } + if (art_iterator_prev(&it->art_it)) { + return roaring64_iterator_init_at_leaf_last(it); + } + it->saturated_forward = false; // Saturated backward. + return (it->has_value = false); +} + +bool roaring64_iterator_move_equalorlarger(roaring64_iterator_t *it, + uint64_t val) { + uint8_t val_high48[ART_KEY_BYTES]; + uint16_t val_low16 = split_key(val, val_high48); + if (!it->has_value || it->high48 != (val & 0xFFFFFFFFFFFF0000)) { + // The ART iterator is before or after the high48 bits of `val` (or + // beyond the ART altogether), so we need to move to a leaf with a key + // equal or greater. + if (!art_iterator_lower_bound(&it->art_it, val_high48)) { + // Only smaller keys found. + it->saturated_forward = true; + return (it->has_value = false); + } + it->high48 = combine_key(it->art_it.key, 0); + // Fall through to the next if statement. + } + + if (it->high48 == (val & 0xFFFFFFFFFFFF0000)) { + // We're at equal high bits, check if a suitable value can be found in + // this container. + leaf_t *leaf = (leaf_t *)it->art_it.value; + uint16_t low16 = (uint16_t)it->value; + if (container_iterator_lower_bound(leaf->container, leaf->typecode, + &it->container_it, &low16, + val_low16)) { + it->value = it->high48 | low16; + return (it->has_value = true); + } + // Only smaller entries in this container, move to the next. + if (!art_iterator_next(&it->art_it)) { + it->saturated_forward = true; + return (it->has_value = false); + } + } + + // We're at a leaf with high bits greater than `val`, so the first entry in + // this container is our result. + return roaring64_iterator_init_at_leaf_first(it); +} + +uint64_t roaring64_iterator_read(roaring64_iterator_t *it, uint64_t *buf, + uint64_t count) { + uint64_t consumed = 0; + while (it->has_value && consumed < count) { + uint32_t container_consumed; + leaf_t *leaf = (leaf_t *)it->art_it.value; + uint16_t low16 = (uint16_t)it->value; + uint32_t container_count = UINT32_MAX; + if (count - consumed < (uint64_t)UINT32_MAX) { + container_count = count - consumed; + } + bool has_value = container_iterator_read_into_uint64( + leaf->container, leaf->typecode, &it->container_it, it->high48, buf, + container_count, &container_consumed, &low16); + consumed += container_consumed; + buf += container_consumed; + if (has_value) { + it->has_value = true; + it->value = it->high48 | low16; + assert(consumed == count); + return consumed; + } + it->has_value = art_iterator_next(&it->art_it); + if (it->has_value) { + roaring64_iterator_init_at_leaf_first(it); + } + } + return consumed; +} + +#ifdef __cplusplus +} // extern "C" +} // namespace roaring +} // namespace api +#endif diff --git a/contrib/libs/croaring/src/roaring_array.c b/contrib/libs/croaring/src/roaring_array.c new file mode 100644 index 000000000000..fabc8b5b6495 --- /dev/null +++ b/contrib/libs/croaring/src/roaring_array.c @@ -0,0 +1,888 @@ +#include <assert.h> +#include <inttypes.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <roaring/containers/bitset.h> +#include <roaring/containers/containers.h> +#include <roaring/memory.h> +#include <roaring/roaring_array.h> + +#ifdef __cplusplus +extern "C" { +namespace roaring { +namespace internal { +#endif + +// Convention: [0,ra->size) all elements are initialized +// [ra->size, ra->allocation_size) is junk and contains nothing needing freeing + +extern inline int32_t ra_get_size(const roaring_array_t *ra); +extern inline int32_t ra_get_index(const roaring_array_t *ra, uint16_t x); + +extern inline container_t *ra_get_container_at_index(const roaring_array_t *ra, + uint16_t i, + uint8_t *typecode); + +extern inline void ra_unshare_container_at_index(roaring_array_t *ra, + uint16_t i); + +extern inline void ra_replace_key_and_container_at_index(roaring_array_t *ra, + int32_t i, + uint16_t key, + container_t *c, + uint8_t typecode); + +extern inline void ra_set_container_at_index(const roaring_array_t *ra, + int32_t i, container_t *c, + uint8_t typecode); + +static bool realloc_array(roaring_array_t *ra, int32_t new_capacity) { + // + // Note: not implemented using C's realloc(), because the memory layout is + // Struct-of-Arrays vs. Array-of-Structs: + // https://github.com/RoaringBitmap/CRoaring/issues/256 + + if (new_capacity == 0) { + roaring_free(ra->containers); + ra->containers = NULL; + ra->keys = NULL; + ra->typecodes = NULL; + ra->allocation_size = 0; + return true; + } + const size_t memoryneeded = + new_capacity * + (sizeof(uint16_t) + sizeof(container_t *) + sizeof(uint8_t)); + void *bigalloc = roaring_malloc(memoryneeded); + if (!bigalloc) return false; + void *oldbigalloc = ra->containers; + container_t **newcontainers = (container_t **)bigalloc; + uint16_t *newkeys = (uint16_t *)(newcontainers + new_capacity); + uint8_t *newtypecodes = (uint8_t *)(newkeys + new_capacity); + assert((char *)(newtypecodes + new_capacity) == + (char *)bigalloc + memoryneeded); + if (ra->size > 0) { + memcpy(newcontainers, ra->containers, sizeof(container_t *) * ra->size); + memcpy(newkeys, ra->keys, sizeof(uint16_t) * ra->size); + memcpy(newtypecodes, ra->typecodes, sizeof(uint8_t) * ra->size); + } + ra->containers = newcontainers; + ra->keys = newkeys; + ra->typecodes = newtypecodes; + ra->allocation_size = new_capacity; + roaring_free(oldbigalloc); + return true; +} + +bool ra_init_with_capacity(roaring_array_t *new_ra, uint32_t cap) { + if (!new_ra) return false; + ra_init(new_ra); + + // Containers hold 64Ki elements, so 64Ki containers is enough to hold + // `0x10000 * 0x10000` (all 2^32) elements + if (cap > 0x10000) { + cap = 0x10000; + } + + if (cap > 0) { + void *bigalloc = roaring_malloc( + cap * (sizeof(uint16_t) + sizeof(container_t *) + sizeof(uint8_t))); + if (bigalloc == NULL) return false; + new_ra->containers = (container_t **)bigalloc; + new_ra->keys = (uint16_t *)(new_ra->containers + cap); + new_ra->typecodes = (uint8_t *)(new_ra->keys + cap); + // Narrowing is safe because of above check + new_ra->allocation_size = (int32_t)cap; + } + return true; +} + +int ra_shrink_to_fit(roaring_array_t *ra) { + int savings = (ra->allocation_size - ra->size) * + (sizeof(uint16_t) + sizeof(container_t *) + sizeof(uint8_t)); + if (!realloc_array(ra, ra->size)) { + return 0; + } + ra->allocation_size = ra->size; + return savings; +} + +void ra_init(roaring_array_t *new_ra) { + if (!new_ra) { + return; + } + new_ra->keys = NULL; + new_ra->containers = NULL; + new_ra->typecodes = NULL; + + new_ra->allocation_size = 0; + new_ra->size = 0; + new_ra->flags = 0; +} + +bool ra_overwrite(const roaring_array_t *source, roaring_array_t *dest, + bool copy_on_write) { + ra_clear_containers(dest); // we are going to overwrite them + if (source->size == 0) { // Note: can't call memcpy(NULL), even w/size + dest->size = 0; // <--- This is important. + return true; // output was just cleared, so they match + } + if (dest->allocation_size < source->size) { + if (!realloc_array(dest, source->size)) { + return false; + } + } + dest->size = source->size; + memcpy(dest->keys, source->keys, dest->size * sizeof(uint16_t)); + // we go through the containers, turning them into shared containers... + if (copy_on_write) { + for (int32_t i = 0; i < dest->size; ++i) { + source->containers[i] = get_copy_of_container( + source->containers[i], &source->typecodes[i], copy_on_write); + } + // we do a shallow copy to the other bitmap + memcpy(dest->containers, source->containers, + dest->size * sizeof(container_t *)); + memcpy(dest->typecodes, source->typecodes, + dest->size * sizeof(uint8_t)); + } else { + memcpy(dest->typecodes, source->typecodes, + dest->size * sizeof(uint8_t)); + for (int32_t i = 0; i < dest->size; i++) { + dest->containers[i] = + container_clone(source->containers[i], source->typecodes[i]); + if (dest->containers[i] == NULL) { + for (int32_t j = 0; j < i; j++) { + container_free(dest->containers[j], dest->typecodes[j]); + } + ra_clear_without_containers(dest); + return false; + } + } + } + return true; +} + +void ra_clear_containers(roaring_array_t *ra) { + for (int32_t i = 0; i < ra->size; ++i) { + container_free(ra->containers[i], ra->typecodes[i]); + } +} + +void ra_reset(roaring_array_t *ra) { + ra_clear_containers(ra); + ra->size = 0; + ra_shrink_to_fit(ra); +} + +void ra_clear_without_containers(roaring_array_t *ra) { + roaring_free( + ra->containers); // keys and typecodes are allocated with containers + ra->size = 0; + ra->allocation_size = 0; + ra->containers = NULL; + ra->keys = NULL; + ra->typecodes = NULL; +} + +void ra_clear(roaring_array_t *ra) { + ra_clear_containers(ra); + ra_clear_without_containers(ra); +} + +bool extend_array(roaring_array_t *ra, int32_t k) { + int32_t desired_size = ra->size + k; + const int32_t max_containers = 65536; + assert(desired_size <= max_containers); + if (desired_size > ra->allocation_size) { + int32_t new_capacity = + (ra->size < 1024) ? 2 * desired_size : 5 * desired_size / 4; + if (new_capacity > max_containers) { + new_capacity = max_containers; + } + + return realloc_array(ra, new_capacity); + } + return true; +} + +void ra_append(roaring_array_t *ra, uint16_t key, container_t *c, + uint8_t typecode) { + extend_array(ra, 1); + const int32_t pos = ra->size; + + ra->keys[pos] = key; + ra->containers[pos] = c; + ra->typecodes[pos] = typecode; + ra->size++; +} + +void ra_append_copy(roaring_array_t *ra, const roaring_array_t *sa, + uint16_t index, bool copy_on_write) { + extend_array(ra, 1); + const int32_t pos = ra->size; + + // old contents is junk that does not need freeing + ra->keys[pos] = sa->keys[index]; + // the shared container will be in two bitmaps + if (copy_on_write) { + sa->containers[index] = get_copy_of_container( + sa->containers[index], &sa->typecodes[index], copy_on_write); + ra->containers[pos] = sa->containers[index]; + ra->typecodes[pos] = sa->typecodes[index]; + } else { + ra->containers[pos] = + container_clone(sa->containers[index], sa->typecodes[index]); + ra->typecodes[pos] = sa->typecodes[index]; + } + ra->size++; +} + +void ra_append_copies_until(roaring_array_t *ra, const roaring_array_t *sa, + uint16_t stopping_key, bool copy_on_write) { + for (int32_t i = 0; i < sa->size; ++i) { + if (sa->keys[i] >= stopping_key) break; + ra_append_copy(ra, sa, (uint16_t)i, copy_on_write); + } +} + +void ra_append_copy_range(roaring_array_t *ra, const roaring_array_t *sa, + int32_t start_index, int32_t end_index, + bool copy_on_write) { + extend_array(ra, end_index - start_index); + for (int32_t i = start_index; i < end_index; ++i) { + const int32_t pos = ra->size; + ra->keys[pos] = sa->keys[i]; + if (copy_on_write) { + sa->containers[i] = get_copy_of_container( + sa->containers[i], &sa->typecodes[i], copy_on_write); + ra->containers[pos] = sa->containers[i]; + ra->typecodes[pos] = sa->typecodes[i]; + } else { + ra->containers[pos] = + container_clone(sa->containers[i], sa->typecodes[i]); + ra->typecodes[pos] = sa->typecodes[i]; + } + ra->size++; + } +} + +void ra_append_copies_after(roaring_array_t *ra, const roaring_array_t *sa, + uint16_t before_start, bool copy_on_write) { + int start_location = ra_get_index(sa, before_start); + if (start_location >= 0) + ++start_location; + else + start_location = -start_location - 1; + ra_append_copy_range(ra, sa, start_location, sa->size, copy_on_write); +} + +void ra_append_move_range(roaring_array_t *ra, roaring_array_t *sa, + int32_t start_index, int32_t end_index) { + extend_array(ra, end_index - start_index); + + for (int32_t i = start_index; i < end_index; ++i) { + const int32_t pos = ra->size; + + ra->keys[pos] = sa->keys[i]; + ra->containers[pos] = sa->containers[i]; + ra->typecodes[pos] = sa->typecodes[i]; + ra->size++; + } +} + +void ra_append_range(roaring_array_t *ra, roaring_array_t *sa, + int32_t start_index, int32_t end_index, + bool copy_on_write) { + extend_array(ra, end_index - start_index); + + for (int32_t i = start_index; i < end_index; ++i) { + const int32_t pos = ra->size; + ra->keys[pos] = sa->keys[i]; + if (copy_on_write) { + sa->containers[i] = get_copy_of_container( + sa->containers[i], &sa->typecodes[i], copy_on_write); + ra->containers[pos] = sa->containers[i]; + ra->typecodes[pos] = sa->typecodes[i]; + } else { + ra->containers[pos] = + container_clone(sa->containers[i], sa->typecodes[i]); + ra->typecodes[pos] = sa->typecodes[i]; + } + ra->size++; + } +} + +container_t *ra_get_container(roaring_array_t *ra, uint16_t x, + uint8_t *typecode) { + int i = binarySearch(ra->keys, (int32_t)ra->size, x); + if (i < 0) return NULL; + *typecode = ra->typecodes[i]; + return ra->containers[i]; +} + +extern inline container_t *ra_get_container_at_index(const roaring_array_t *ra, + uint16_t i, + uint8_t *typecode); + +extern inline uint16_t ra_get_key_at_index(const roaring_array_t *ra, + uint16_t i); + +extern inline int32_t ra_get_index(const roaring_array_t *ra, uint16_t x); + +extern inline int32_t ra_advance_until(const roaring_array_t *ra, uint16_t x, + int32_t pos); + +// everything skipped over is freed +int32_t ra_advance_until_freeing(roaring_array_t *ra, uint16_t x, int32_t pos) { + while (pos < ra->size && ra->keys[pos] < x) { + container_free(ra->containers[pos], ra->typecodes[pos]); + ++pos; + } + return pos; +} + +void ra_insert_new_key_value_at(roaring_array_t *ra, int32_t i, uint16_t key, + container_t *c, uint8_t typecode) { + extend_array(ra, 1); + // May be an optimization opportunity with DIY memmove + memmove(&(ra->keys[i + 1]), &(ra->keys[i]), + sizeof(uint16_t) * (ra->size - i)); + memmove(&(ra->containers[i + 1]), &(ra->containers[i]), + sizeof(container_t *) * (ra->size - i)); + memmove(&(ra->typecodes[i + 1]), &(ra->typecodes[i]), + sizeof(uint8_t) * (ra->size - i)); + ra->keys[i] = key; + ra->containers[i] = c; + ra->typecodes[i] = typecode; + ra->size++; +} + +// note: Java routine set things to 0, enabling GC. +// Java called it "resize" but it was always used to downsize. +// Allowing upsize would break the conventions about +// valid containers below ra->size. + +void ra_downsize(roaring_array_t *ra, int32_t new_length) { + assert(new_length <= ra->size); + ra->size = new_length; +} + +void ra_remove_at_index(roaring_array_t *ra, int32_t i) { + memmove(&(ra->containers[i]), &(ra->containers[i + 1]), + sizeof(container_t *) * (ra->size - i - 1)); + memmove(&(ra->keys[i]), &(ra->keys[i + 1]), + sizeof(uint16_t) * (ra->size - i - 1)); + memmove(&(ra->typecodes[i]), &(ra->typecodes[i + 1]), + sizeof(uint8_t) * (ra->size - i - 1)); + ra->size--; +} + +void ra_remove_at_index_and_free(roaring_array_t *ra, int32_t i) { + container_free(ra->containers[i], ra->typecodes[i]); + ra_remove_at_index(ra, i); +} + +// used in inplace andNot only, to slide left the containers from +// the mutated RoaringBitmap that are after the largest container of +// the argument RoaringBitmap. In use it should be followed by a call to +// downsize. +// +void ra_copy_range(roaring_array_t *ra, uint32_t begin, uint32_t end, + uint32_t new_begin) { + assert(begin <= end); + assert(new_begin < begin); + + const int range = end - begin; + + // We ensure to previously have freed overwritten containers + // that are not copied elsewhere + + memmove(&(ra->containers[new_begin]), &(ra->containers[begin]), + sizeof(container_t *) * range); + memmove(&(ra->keys[new_begin]), &(ra->keys[begin]), + sizeof(uint16_t) * range); + memmove(&(ra->typecodes[new_begin]), &(ra->typecodes[begin]), + sizeof(uint8_t) * range); +} + +void ra_shift_tail(roaring_array_t *ra, int32_t count, int32_t distance) { + if (distance > 0) { + extend_array(ra, distance); + } + int32_t srcpos = ra->size - count; + int32_t dstpos = srcpos + distance; + memmove(&(ra->keys[dstpos]), &(ra->keys[srcpos]), sizeof(uint16_t) * count); + memmove(&(ra->containers[dstpos]), &(ra->containers[srcpos]), + sizeof(container_t *) * count); + memmove(&(ra->typecodes[dstpos]), &(ra->typecodes[srcpos]), + sizeof(uint8_t) * count); + ra->size += distance; +} + +void ra_to_uint32_array(const roaring_array_t *ra, uint32_t *ans) { + size_t ctr = 0; + for (int32_t i = 0; i < ra->size; ++i) { + int num_added = container_to_uint32_array( + ans + ctr, ra->containers[i], ra->typecodes[i], + ((uint32_t)ra->keys[i]) << 16); + ctr += num_added; + } +} + +bool ra_range_uint32_array(const roaring_array_t *ra, size_t offset, + size_t limit, uint32_t *ans) { + size_t ctr = 0; + size_t dtr = 0; + + size_t t_limit = 0; + + bool first = false; + size_t first_skip = 0; + + uint32_t *t_ans = NULL; + size_t cur_len = 0; + + for (int i = 0; i < ra->size; ++i) { + const container_t *c = + container_unwrap_shared(ra->containers[i], &ra->typecodes[i]); + switch (ra->typecodes[i]) { + case BITSET_CONTAINER_TYPE: + t_limit = (const_CAST_bitset(c))->cardinality; + break; + case ARRAY_CONTAINER_TYPE: + t_limit = (const_CAST_array(c))->cardinality; + break; + case RUN_CONTAINER_TYPE: + t_limit = run_container_cardinality(const_CAST_run(c)); + break; + } + if (ctr + t_limit - 1 >= offset && ctr < offset + limit) { + if (!first) { + // first_skip = t_limit - (ctr + t_limit - offset); + first_skip = offset - ctr; + first = true; + t_ans = (uint32_t *)roaring_malloc(sizeof(*t_ans) * + (first_skip + limit)); + if (t_ans == NULL) { + return false; + } + memset(t_ans, 0, sizeof(*t_ans) * (first_skip + limit)); + cur_len = first_skip + limit; + } + if (dtr + t_limit > cur_len) { + uint32_t *append_ans = (uint32_t *)roaring_malloc( + sizeof(*append_ans) * (cur_len + t_limit)); + if (append_ans == NULL) { + if (t_ans != NULL) roaring_free(t_ans); + return false; + } + memset(append_ans, 0, + sizeof(*append_ans) * (cur_len + t_limit)); + cur_len = cur_len + t_limit; + memcpy(append_ans, t_ans, dtr * sizeof(uint32_t)); + roaring_free(t_ans); + t_ans = append_ans; + } + switch (ra->typecodes[i]) { + case BITSET_CONTAINER_TYPE: + container_to_uint32_array(t_ans + dtr, const_CAST_bitset(c), + ra->typecodes[i], + ((uint32_t)ra->keys[i]) << 16); + break; + case ARRAY_CONTAINER_TYPE: + container_to_uint32_array(t_ans + dtr, const_CAST_array(c), + ra->typecodes[i], + ((uint32_t)ra->keys[i]) << 16); + break; + case RUN_CONTAINER_TYPE: + container_to_uint32_array(t_ans + dtr, const_CAST_run(c), + ra->typecodes[i], + ((uint32_t)ra->keys[i]) << 16); + break; + } + dtr += t_limit; + } + ctr += t_limit; + if (dtr - first_skip >= limit) break; + } + if (t_ans != NULL) { + memcpy(ans, t_ans + first_skip, limit * sizeof(uint32_t)); + free(t_ans); + } + return true; +} + +bool ra_has_run_container(const roaring_array_t *ra) { + for (int32_t k = 0; k < ra->size; ++k) { + if (get_container_type(ra->containers[k], ra->typecodes[k]) == + RUN_CONTAINER_TYPE) + return true; + } + return false; +} + +uint32_t ra_portable_header_size(const roaring_array_t *ra) { + if (ra_has_run_container(ra)) { + if (ra->size < + NO_OFFSET_THRESHOLD) { // for small bitmaps, we omit the offsets + return 4 + (ra->size + 7) / 8 + 4 * ra->size; + } + return 4 + (ra->size + 7) / 8 + + 8 * ra->size; // - 4 because we pack the size with the cookie + } else { + return 4 + 4 + 8 * ra->size; + } +} + +size_t ra_portable_size_in_bytes(const roaring_array_t *ra) { + size_t count = ra_portable_header_size(ra); + + for (int32_t k = 0; k < ra->size; ++k) { + count += container_size_in_bytes(ra->containers[k], ra->typecodes[k]); + } + return count; +} + +// This function is endian-sensitive. +size_t ra_portable_serialize(const roaring_array_t *ra, char *buf) { + char *initbuf = buf; + uint32_t startOffset = 0; + bool hasrun = ra_has_run_container(ra); + if (hasrun) { + uint32_t cookie = SERIAL_COOKIE | ((uint32_t)(ra->size - 1) << 16); + memcpy(buf, &cookie, sizeof(cookie)); + buf += sizeof(cookie); + uint32_t s = (ra->size + 7) / 8; + uint8_t *bitmapOfRunContainers = (uint8_t *)roaring_calloc(s, 1); + assert(bitmapOfRunContainers != NULL); // todo: handle + for (int32_t i = 0; i < ra->size; ++i) { + if (get_container_type(ra->containers[i], ra->typecodes[i]) == + RUN_CONTAINER_TYPE) { + bitmapOfRunContainers[i / 8] |= (1 << (i % 8)); + } + } + memcpy(buf, bitmapOfRunContainers, s); + buf += s; + roaring_free(bitmapOfRunContainers); + if (ra->size < NO_OFFSET_THRESHOLD) { + startOffset = 4 + 4 * ra->size + s; + } else { + startOffset = 4 + 8 * ra->size + s; + } + } else { // backwards compatibility + uint32_t cookie = SERIAL_COOKIE_NO_RUNCONTAINER; + + memcpy(buf, &cookie, sizeof(cookie)); + buf += sizeof(cookie); + memcpy(buf, &ra->size, sizeof(ra->size)); + buf += sizeof(ra->size); + + startOffset = 4 + 4 + 4 * ra->size + 4 * ra->size; + } + for (int32_t k = 0; k < ra->size; ++k) { + memcpy(buf, &ra->keys[k], sizeof(ra->keys[k])); + buf += sizeof(ra->keys[k]); + // get_cardinality returns a value in [1,1<<16], subtracting one + // we get [0,1<<16 - 1] which fits in 16 bits + uint16_t card = (uint16_t)(container_get_cardinality(ra->containers[k], + ra->typecodes[k]) - + 1); + memcpy(buf, &card, sizeof(card)); + buf += sizeof(card); + } + if ((!hasrun) || (ra->size >= NO_OFFSET_THRESHOLD)) { + // writing the containers offsets + for (int32_t k = 0; k < ra->size; k++) { + memcpy(buf, &startOffset, sizeof(startOffset)); + buf += sizeof(startOffset); + startOffset = + startOffset + + container_size_in_bytes(ra->containers[k], ra->typecodes[k]); + } + } + for (int32_t k = 0; k < ra->size; ++k) { + buf += container_write(ra->containers[k], ra->typecodes[k], buf); + } + return buf - initbuf; +} + +// Quickly checks whether there is a serialized bitmap at the pointer, +// not exceeding size "maxbytes" in bytes. This function does not allocate +// memory dynamically. +// +// This function returns 0 if and only if no valid bitmap is found. +// Otherwise, it returns how many bytes are occupied. +// +size_t ra_portable_deserialize_size(const char *buf, const size_t maxbytes) { + size_t bytestotal = sizeof(int32_t); // for cookie + if (bytestotal > maxbytes) return 0; + uint32_t cookie; + memcpy(&cookie, buf, sizeof(int32_t)); + buf += sizeof(uint32_t); + if ((cookie & 0xFFFF) != SERIAL_COOKIE && + cookie != SERIAL_COOKIE_NO_RUNCONTAINER) { + return 0; + } + int32_t size; + + if ((cookie & 0xFFFF) == SERIAL_COOKIE) + size = (cookie >> 16) + 1; + else { + bytestotal += sizeof(int32_t); + if (bytestotal > maxbytes) return 0; + memcpy(&size, buf, sizeof(int32_t)); + buf += sizeof(uint32_t); + } + if (size > (1 << 16)) { + return 0; + } + char *bitmapOfRunContainers = NULL; + bool hasrun = (cookie & 0xFFFF) == SERIAL_COOKIE; + if (hasrun) { + int32_t s = (size + 7) / 8; + bytestotal += s; + if (bytestotal > maxbytes) return 0; + bitmapOfRunContainers = (char *)buf; + buf += s; + } + bytestotal += size * 2 * sizeof(uint16_t); + if (bytestotal > maxbytes) return 0; + uint16_t *keyscards = (uint16_t *)buf; + buf += size * 2 * sizeof(uint16_t); + if ((!hasrun) || (size >= NO_OFFSET_THRESHOLD)) { + // skipping the offsets + bytestotal += size * 4; + if (bytestotal > maxbytes) return 0; + buf += size * 4; + } + // Reading the containers + for (int32_t k = 0; k < size; ++k) { + uint16_t tmp; + memcpy(&tmp, keyscards + 2 * k + 1, sizeof(tmp)); + uint32_t thiscard = tmp + 1; + bool isbitmap = (thiscard > DEFAULT_MAX_SIZE); + bool isrun = false; + if (hasrun) { + if ((bitmapOfRunContainers[k / 8] & (1 << (k % 8))) != 0) { + isbitmap = false; + isrun = true; + } + } + if (isbitmap) { + size_t containersize = + BITSET_CONTAINER_SIZE_IN_WORDS * sizeof(uint64_t); + bytestotal += containersize; + if (bytestotal > maxbytes) return 0; + buf += containersize; + } else if (isrun) { + bytestotal += sizeof(uint16_t); + if (bytestotal > maxbytes) return 0; + uint16_t n_runs; + memcpy(&n_runs, buf, sizeof(uint16_t)); + buf += sizeof(uint16_t); + size_t containersize = n_runs * sizeof(rle16_t); + bytestotal += containersize; + if (bytestotal > maxbytes) return 0; + buf += containersize; + } else { + size_t containersize = thiscard * sizeof(uint16_t); + bytestotal += containersize; + if (bytestotal > maxbytes) return 0; + buf += containersize; + } + } + return bytestotal; +} + +// This function populates answer from the content of buf (reading up to +// maxbytes bytes). The function returns false if a properly serialized bitmap +// cannot be found. If it returns true, readbytes is populated by how many bytes +// were read, we have that *readbytes <= maxbytes. +// +// This function is endian-sensitive. +bool ra_portable_deserialize(roaring_array_t *answer, const char *buf, + const size_t maxbytes, size_t *readbytes) { + *readbytes = sizeof(int32_t); // for cookie + if (*readbytes > maxbytes) { + // Ran out of bytes while reading first 4 bytes. + return false; + } + uint32_t cookie; + memcpy(&cookie, buf, sizeof(int32_t)); + buf += sizeof(uint32_t); + if ((cookie & 0xFFFF) != SERIAL_COOKIE && + cookie != SERIAL_COOKIE_NO_RUNCONTAINER) { + // "I failed to find one of the right cookies. + return false; + } + int32_t size; + + if ((cookie & 0xFFFF) == SERIAL_COOKIE) + size = (cookie >> 16) + 1; + else { + *readbytes += sizeof(int32_t); + if (*readbytes > maxbytes) { + // Ran out of bytes while reading second part of the cookie. + return false; + } + memcpy(&size, buf, sizeof(int32_t)); + buf += sizeof(uint32_t); + } + if (size < 0) { + // You cannot have a negative number of containers, the data must be + // corrupted. + return false; + } + if (size > (1 << 16)) { + // You cannot have so many containers, the data must be corrupted. + return false; + } + const char *bitmapOfRunContainers = NULL; + bool hasrun = (cookie & 0xFFFF) == SERIAL_COOKIE; + if (hasrun) { + int32_t s = (size + 7) / 8; + *readbytes += s; + if (*readbytes > maxbytes) { // data is corrupted? + // Ran out of bytes while reading run bitmap. + return false; + } + bitmapOfRunContainers = buf; + buf += s; + } + uint16_t *keyscards = (uint16_t *)buf; + + *readbytes += size * 2 * sizeof(uint16_t); + if (*readbytes > maxbytes) { + // Ran out of bytes while reading key-cardinality array. + return false; + } + buf += size * 2 * sizeof(uint16_t); + + bool is_ok = ra_init_with_capacity(answer, size); + if (!is_ok) { + // Failed to allocate memory for roaring array. Bailing out. + return false; + } + + for (int32_t k = 0; k < size; ++k) { + uint16_t tmp; + memcpy(&tmp, keyscards + 2 * k, sizeof(tmp)); + answer->keys[k] = tmp; + } + if ((!hasrun) || (size >= NO_OFFSET_THRESHOLD)) { + *readbytes += size * 4; + if (*readbytes > maxbytes) { // data is corrupted? + // Ran out of bytes while reading offsets. + ra_clear(answer); // we need to clear the containers already + // allocated, and the roaring array + return false; + } + + // skipping the offsets + buf += size * 4; + } + // Reading the containers + for (int32_t k = 0; k < size; ++k) { + uint16_t tmp; + memcpy(&tmp, keyscards + 2 * k + 1, sizeof(tmp)); + uint32_t thiscard = tmp + 1; + bool isbitmap = (thiscard > DEFAULT_MAX_SIZE); + bool isrun = false; + if (hasrun) { + if ((bitmapOfRunContainers[k / 8] & (1 << (k % 8))) != 0) { + isbitmap = false; + isrun = true; + } + } + if (isbitmap) { + // we check that the read is allowed + size_t containersize = + BITSET_CONTAINER_SIZE_IN_WORDS * sizeof(uint64_t); + *readbytes += containersize; + if (*readbytes > maxbytes) { + // Running out of bytes while reading a bitset container. + ra_clear(answer); // we need to clear the containers already + // allocated, and the roaring array + return false; + } + // it is now safe to read + bitset_container_t *c = bitset_container_create(); + if (c == NULL) { // memory allocation failure + // Failed to allocate memory for a bitset container. + ra_clear(answer); // we need to clear the containers already + // allocated, and the roaring array + return false; + } + answer->size++; + buf += bitset_container_read(thiscard, c, buf); + answer->containers[k] = c; + answer->typecodes[k] = BITSET_CONTAINER_TYPE; + } else if (isrun) { + // we check that the read is allowed + *readbytes += sizeof(uint16_t); + if (*readbytes > maxbytes) { + // Running out of bytes while reading a run container (header). + ra_clear(answer); // we need to clear the containers already + // allocated, and the roaring array + return false; + } + uint16_t n_runs; + memcpy(&n_runs, buf, sizeof(uint16_t)); + size_t containersize = n_runs * sizeof(rle16_t); + *readbytes += containersize; + if (*readbytes > maxbytes) { // data is corrupted? + // Running out of bytes while reading a run container. + ra_clear(answer); // we need to clear the containers already + // allocated, and the roaring array + return false; + } + // it is now safe to read + + run_container_t *c = run_container_create(); + if (c == NULL) { // memory allocation failure + // Failed to allocate memory for a run container. + ra_clear(answer); // we need to clear the containers already + // allocated, and the roaring array + return false; + } + answer->size++; + buf += run_container_read(thiscard, c, buf); + answer->containers[k] = c; + answer->typecodes[k] = RUN_CONTAINER_TYPE; + } else { + // we check that the read is allowed + size_t containersize = thiscard * sizeof(uint16_t); + *readbytes += containersize; + if (*readbytes > maxbytes) { // data is corrupted? + // Running out of bytes while reading an array container. + ra_clear(answer); // we need to clear the containers already + // allocated, and the roaring array + return false; + } + // it is now safe to read + array_container_t *c = + array_container_create_given_capacity(thiscard); + if (c == NULL) { // memory allocation failure + // Failed to allocate memory for an array container. + ra_clear(answer); // we need to clear the containers already + // allocated, and the roaring array + return false; + } + answer->size++; + buf += array_container_read(thiscard, c, buf); + answer->containers[k] = c; + answer->typecodes[k] = ARRAY_CONTAINER_TYPE; + } + } + return true; +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace internal { +#endif diff --git a/contrib/libs/croaring/src/roaring_priority_queue.c b/contrib/libs/croaring/src/roaring_priority_queue.c new file mode 100644 index 000000000000..d53df8ee81e9 --- /dev/null +++ b/contrib/libs/croaring/src/roaring_priority_queue.c @@ -0,0 +1,253 @@ +#include <roaring/roaring.h> +#include <roaring/roaring_array.h> + +#ifdef __cplusplus +using namespace ::roaring::internal; + +extern "C" { +namespace roaring { +namespace api { +#endif + +struct roaring_pq_element_s { + uint64_t size; + bool is_temporary; + roaring_bitmap_t *bitmap; +}; + +typedef struct roaring_pq_element_s roaring_pq_element_t; + +struct roaring_pq_s { + roaring_pq_element_t *elements; + uint64_t size; +}; + +typedef struct roaring_pq_s roaring_pq_t; + +static inline bool compare(roaring_pq_element_t *t1, roaring_pq_element_t *t2) { + return t1->size < t2->size; +} + +static void pq_add(roaring_pq_t *pq, roaring_pq_element_t *t) { + uint64_t i = pq->size; + pq->elements[pq->size++] = *t; + while (i > 0) { + uint64_t p = (i - 1) >> 1; + roaring_pq_element_t ap = pq->elements[p]; + if (!compare(t, &ap)) break; + pq->elements[i] = ap; + i = p; + } + pq->elements[i] = *t; +} + +static void pq_free(roaring_pq_t *pq) { roaring_free(pq); } + +static void percolate_down(roaring_pq_t *pq, uint32_t i) { + uint32_t size = (uint32_t)pq->size; + uint32_t hsize = size >> 1; + roaring_pq_element_t ai = pq->elements[i]; + while (i < hsize) { + uint32_t l = (i << 1) + 1; + uint32_t r = l + 1; + roaring_pq_element_t bestc = pq->elements[l]; + if (r < size) { + if (compare(pq->elements + r, &bestc)) { + l = r; + bestc = pq->elements[r]; + } + } + if (!compare(&bestc, &ai)) { + break; + } + pq->elements[i] = bestc; + i = l; + } + pq->elements[i] = ai; +} + +static roaring_pq_t *create_pq(const roaring_bitmap_t **arr, uint32_t length) { + size_t alloc_size = + sizeof(roaring_pq_t) + sizeof(roaring_pq_element_t) * length; + roaring_pq_t *answer = (roaring_pq_t *)roaring_malloc(alloc_size); + answer->elements = (roaring_pq_element_t *)(answer + 1); + answer->size = length; + for (uint32_t i = 0; i < length; i++) { + answer->elements[i].bitmap = (roaring_bitmap_t *)arr[i]; + answer->elements[i].is_temporary = false; + answer->elements[i].size = + roaring_bitmap_portable_size_in_bytes(arr[i]); + } + for (int32_t i = (length >> 1); i >= 0; i--) { + percolate_down(answer, i); + } + return answer; +} + +static roaring_pq_element_t pq_poll(roaring_pq_t *pq) { + roaring_pq_element_t ans = *pq->elements; + if (pq->size > 1) { + pq->elements[0] = pq->elements[--pq->size]; + percolate_down(pq, 0); + } else + --pq->size; + // memmove(pq->elements,pq->elements+1,(pq->size-1)*sizeof(roaring_pq_element_t));--pq->size; + return ans; +} + +// this function consumes and frees the inputs +static roaring_bitmap_t *lazy_or_from_lazy_inputs(roaring_bitmap_t *x1, + roaring_bitmap_t *x2) { + uint8_t result_type = 0; + const int length1 = ra_get_size(&x1->high_low_container), + length2 = ra_get_size(&x2->high_low_container); + if (0 == length1) { + roaring_bitmap_free(x1); + return x2; + } + if (0 == length2) { + roaring_bitmap_free(x2); + return x1; + } + uint32_t neededcap = length1 > length2 ? length2 : length1; + roaring_bitmap_t *answer = roaring_bitmap_create_with_capacity(neededcap); + int pos1 = 0, pos2 = 0; + uint8_t type1, type2; + uint16_t s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + uint16_t s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + while (true) { + if (s1 == s2) { + // todo: unsharing can be inefficient as it may create a clone where + // none + // is needed, but it has the benefit of being easy to reason about. + + ra_unshare_container_at_index(&x1->high_low_container, + (uint16_t)pos1); + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + assert(type1 != SHARED_CONTAINER_TYPE); + + ra_unshare_container_at_index(&x2->high_low_container, + (uint16_t)pos2); + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + assert(type2 != SHARED_CONTAINER_TYPE); + + container_t *c; + + if ((type2 == BITSET_CONTAINER_TYPE) && + (type1 != BITSET_CONTAINER_TYPE)) { + c = container_lazy_ior(c2, type2, c1, type1, &result_type); + container_free(c1, type1); + if (c != c2) { + container_free(c2, type2); + } + } else { + c = container_lazy_ior(c1, type1, c2, type2, &result_type); + container_free(c2, type2); + if (c != c1) { + container_free(c1, type1); + } + } + // since we assume that the initial containers are non-empty, the + // result here + // can only be non-empty + ra_append(&answer->high_low_container, s1, c, result_type); + ++pos1; + ++pos2; + if (pos1 == length1) break; + if (pos2 == length2) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + + } else if (s1 < s2) { // s1 < s2 + container_t *c1 = ra_get_container_at_index(&x1->high_low_container, + (uint16_t)pos1, &type1); + ra_append(&answer->high_low_container, s1, c1, type1); + pos1++; + if (pos1 == length1) break; + s1 = ra_get_key_at_index(&x1->high_low_container, (uint16_t)pos1); + + } else { // s1 > s2 + container_t *c2 = ra_get_container_at_index(&x2->high_low_container, + (uint16_t)pos2, &type2); + ra_append(&answer->high_low_container, s2, c2, type2); + pos2++; + if (pos2 == length2) break; + s2 = ra_get_key_at_index(&x2->high_low_container, (uint16_t)pos2); + } + } + if (pos1 == length1) { + ra_append_move_range(&answer->high_low_container, + &x2->high_low_container, pos2, length2); + } else if (pos2 == length2) { + ra_append_move_range(&answer->high_low_container, + &x1->high_low_container, pos1, length1); + } + ra_clear_without_containers(&x1->high_low_container); + ra_clear_without_containers(&x2->high_low_container); + roaring_free(x1); + roaring_free(x2); + return answer; +} + +/** + * Compute the union of 'number' bitmaps using a heap. This can + * sometimes be faster than roaring_bitmap_or_many which uses + * a naive algorithm. Caller is responsible for freeing the + * result. + */ +roaring_bitmap_t *roaring_bitmap_or_many_heap(uint32_t number, + const roaring_bitmap_t **x) { + if (number == 0) { + return roaring_bitmap_create(); + } + if (number == 1) { + return roaring_bitmap_copy(x[0]); + } + roaring_pq_t *pq = create_pq(x, number); + while (pq->size > 1) { + roaring_pq_element_t x1 = pq_poll(pq); + roaring_pq_element_t x2 = pq_poll(pq); + + if (x1.is_temporary && x2.is_temporary) { + roaring_bitmap_t *newb = + lazy_or_from_lazy_inputs(x1.bitmap, x2.bitmap); + // should normally return a fresh new bitmap *except* that + // it can return x1.bitmap or x2.bitmap in degenerate cases + bool temporary = !((newb == x1.bitmap) && (newb == x2.bitmap)); + uint64_t bsize = roaring_bitmap_portable_size_in_bytes(newb); + roaring_pq_element_t newelement = { + .size = bsize, .is_temporary = temporary, .bitmap = newb}; + pq_add(pq, &newelement); + } else if (x2.is_temporary) { + roaring_bitmap_lazy_or_inplace(x2.bitmap, x1.bitmap, false); + x2.size = roaring_bitmap_portable_size_in_bytes(x2.bitmap); + pq_add(pq, &x2); + } else if (x1.is_temporary) { + roaring_bitmap_lazy_or_inplace(x1.bitmap, x2.bitmap, false); + x1.size = roaring_bitmap_portable_size_in_bytes(x1.bitmap); + + pq_add(pq, &x1); + } else { + roaring_bitmap_t *newb = + roaring_bitmap_lazy_or(x1.bitmap, x2.bitmap, false); + uint64_t bsize = roaring_bitmap_portable_size_in_bytes(newb); + roaring_pq_element_t newelement = { + .size = bsize, .is_temporary = true, .bitmap = newb}; + + pq_add(pq, &newelement); + } + } + roaring_pq_element_t X = pq_poll(pq); + roaring_bitmap_t *answer = X.bitmap; + roaring_bitmap_repair_after_lazy(answer); + pq_free(pq); + return answer; +} + +#ifdef __cplusplus +} +} +} // extern "C" { namespace roaring { namespace api { +#endif diff --git a/contrib/libs/croaring/ya.make b/contrib/libs/croaring/ya.make new file mode 100644 index 000000000000..6e923d2394e7 --- /dev/null +++ b/contrib/libs/croaring/ya.make @@ -0,0 +1,51 @@ +# Generated by devtools/yamaker from nixpkgs 22.11. + +LIBRARY() + +LICENSE( + Apache-2.0 AND + BSD-3-Clause AND + MIT +) + +LICENSE_TEXTS(.yandex_meta/licenses.list.txt) + +VERSION(3.0.1) + +ORIGINAL_SOURCE(https://github.com/RoaringBitmap/CRoaring/archive/v3.0.1.tar.gz) + +ADDINCL( + GLOBAL contrib/libs/croaring/include + contrib/libs/croaring/include/roaring +) + +NO_COMPILER_WARNINGS() + +NO_RUNTIME() + +SRCS( + src/array_util.c + src/art/art.c + src/bitset.c + src/bitset_util.c + src/containers/array.c + src/containers/bitset.c + src/containers/containers.c + src/containers/convert.c + src/containers/mixed_andnot.c + src/containers/mixed_equal.c + src/containers/mixed_intersection.c + src/containers/mixed_negation.c + src/containers/mixed_subset.c + src/containers/mixed_union.c + src/containers/mixed_xor.c + src/containers/run.c + src/isadetection.c + src/memory.c + src/roaring.c + src/roaring64.c + src/roaring_array.c + src/roaring_priority_queue.c +) + +END() diff --git a/ydb/library/yql/udfs/common/roaring/roaring.cpp b/ydb/library/yql/udfs/common/roaring/roaring.cpp new file mode 100644 index 000000000000..03b5772d969a --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/roaring.cpp @@ -0,0 +1,450 @@ +#include <ydb/library/yql/public/udf/udf_registrator.h> +#include <ydb/library/yql/public/udf/udf_terminator.h> +#include <ydb/library/yql/public/udf/udf_type_builder.h> +#include <ydb/library/yql/public/udf/udf_value.h> +#include <ydb/library/yql/public/udf/udf_value_builder.h> + +#include <contrib/libs/croaring/include/roaring/memory.h> +#include <contrib/libs/croaring/include/roaring/roaring.h> + +#include <util/generic/vector.h> +#include <util/string/builder.h> +#include <util/system/yassert.h> + +using namespace NKikimr; +using namespace NUdf; + +namespace { + + using namespace roaring::api; + + inline roaring_bitmap_t* DeserializePortable(TStringRef binaryString) { + auto bitmap = roaring_bitmap_portable_deserialize_safe(binaryString.Data(), binaryString.Size()); + Y_ENSURE(bitmap); + return bitmap; + } + + struct TRoaringWrapper: public TBoxedValue { + TRoaringWrapper(TStringRef binaryString) + : Roaring(DeserializePortable(binaryString)) + { + } + + ~TRoaringWrapper() { + roaring_bitmap_free(Roaring); + } + + roaring_bitmap_t* Roaring; + }; + + inline roaring_bitmap_t* GetBitmapFromArg(TUnboxedValuePod arg) { + return static_cast<TRoaringWrapper*>(arg.AsBoxed().Get())->Roaring; + } + + class TRoaringOrWithBinary: public TBoxedValue { + public: + TRoaringOrWithBinary() { + } + + static TStringRef Name() { + return TStringRef::Of("OrWithBinary"); + } + + private: + TUnboxedValue Run(const IValueBuilder* valueBuilder, + const TUnboxedValuePod* args) const override { + Y_UNUSED(valueBuilder); + auto binaryString = args[1].AsStringRef(); + auto bitmap = DeserializePortable(binaryString); + + roaring_bitmap_or_inplace(GetBitmapFromArg(args[0]), bitmap); + roaring_bitmap_free(bitmap); + + return args[0]; + } + }; + + class TRoaringAndWithBinary: public TBoxedValue { + public: + TRoaringAndWithBinary() { + } + + static TStringRef Name() { + return TStringRef::Of("AndWithBinary"); + } + + private: + TUnboxedValue Run(const IValueBuilder* valueBuilder, + const TUnboxedValuePod* args) const override { + Y_UNUSED(valueBuilder); + auto binaryString = args[1].AsStringRef(); + auto bitmap = DeserializePortable(binaryString); + + roaring_bitmap_and_inplace(GetBitmapFromArg(args[0]), bitmap); + roaring_bitmap_free(bitmap); + + return args[0]; + } + }; + + class TRoaringAnd: public TBoxedValue { + public: + TRoaringAnd() { + } + + static TStringRef Name() { + return TStringRef::Of("And"); + } + + private: + TUnboxedValue Run(const IValueBuilder* valueBuilder, + const TUnboxedValuePod* args) const override { + Y_UNUSED(valueBuilder); + roaring_bitmap_and_inplace(GetBitmapFromArg(args[0]), GetBitmapFromArg(args[1])); + return args[0]; + } + }; + + class TRoaringOr: public TBoxedValue { + public: + TRoaringOr() { + } + + static TStringRef Name() { + return TStringRef::Of("Or"); + } + + private: + TUnboxedValue Run(const IValueBuilder* valueBuilder, + const TUnboxedValuePod* args) const override { + Y_UNUSED(valueBuilder); + roaring_bitmap_or_inplace(GetBitmapFromArg(args[0]), GetBitmapFromArg(args[1])); + return args[0]; + } + }; + + class TRoaringUint32List: public TBoxedValue { + public: + static TStringRef Name() { + return TStringRef::Of("Uint32List"); + } + + private: + class TIterator: public TManagedBoxedValue { + public: + TIterator(roaring_bitmap_t* Roaring) { + Iter_ = roaring_iterator_create(Roaring); + } + ~TIterator() { + roaring_uint32_iterator_free(Iter_); + } + // Any iterator. + bool Skip() override { + if (!Iter_->has_value) { + return false; + } + roaring_uint32_iterator_advance(Iter_); + return true; + }; + + // List iterator. + bool Next(TUnboxedValue& value) override { + if (!Iter_->has_value) { + return false; + } + value = TUnboxedValuePod(Iter_->current_value); + roaring_uint32_iterator_advance(Iter_); + return true; + }; + + private: + roaring_uint32_iterator_t* Iter_; + }; + + class TList: public TBoxedValue { + public: + TList(TUnboxedValue UnboxedValue) + : UnboxedValue_(UnboxedValue) + { + auto wrapper = static_cast<TRoaringWrapper*>(UnboxedValue_.AsBoxed().Get()); + Length_ = roaring_bitmap_get_cardinality(wrapper->Roaring); + } + + bool HasFastListLength() const override { + return true; + }; + + ui64 GetListLength() const override { + return Length_; + }; + + ui64 GetEstimatedListLength() const override { + return GetListLength(); + }; + + TUnboxedValue GetListIterator() const override { + auto wrapper = static_cast<TRoaringWrapper*>(UnboxedValue_.AsBoxed().Get()); + return TUnboxedValuePod(new TIterator(wrapper->Roaring)); + }; + + private: + TUnboxedValue UnboxedValue_; + ui64 Length_; + }; + + TUnboxedValue Run(const IValueBuilder* valueBuilder, + const TUnboxedValuePod* args) const override { + Y_UNUSED(valueBuilder); + return TUnboxedValuePod(new TList(args[0])); + } + }; + + class TRoaringDeserialize: public TBoxedValue { + public: + TRoaringDeserialize(TSourcePosition pos) + : Pos_(pos) + { + } + + static TStringRef Name() { + return TStringRef::Of("Deserialize"); + } + + private: + TUnboxedValue Run(const IValueBuilder* valueBuilder, + const TUnboxedValuePod* args) const override { + Y_UNUSED(valueBuilder); + try { + return TUnboxedValuePod(new TRoaringWrapper(args[0].AsStringRef())); + } catch (const std::exception& e) { + UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data()); + } + } + TSourcePosition Pos_; + }; + + class TRoaringSerialize: public TBoxedValue { + public: + TRoaringSerialize() { + } + + static TStringRef Name() { + return TStringRef::Of("Serialize"); + } + + private: + TUnboxedValue Run(const IValueBuilder* valueBuilder, + const TUnboxedValuePod* args) const override { + auto bitmap = GetBitmapFromArg(args[0]); + roaring_bitmap_run_optimize(bitmap); + + auto sizeInBytes = roaring_bitmap_portable_size_in_bytes(bitmap); + + auto string = valueBuilder->NewStringNotFilled(sizeInBytes); + roaring_bitmap_portable_serialize(bitmap, string.AsStringRef().Data()); + + return string; + } + }; + + class TRoaringCardinality: public TBoxedValue { + public: + TRoaringCardinality() { + } + + static TStringRef Name() { + return TStringRef::Of("Cardinality"); + } + + private: + TUnboxedValue Run(const IValueBuilder* valueBuilder, + const TUnboxedValuePod* args) const override { + Y_UNUSED(valueBuilder); + auto bitmap = GetBitmapFromArg(args[0]); + auto cardinality = (ui32)roaring_bitmap_get_cardinality(bitmap); + return TUnboxedValuePod(cardinality); + } + }; + + class TRoaringModule: public IUdfModule { + public: + TRoaringModule() { + auto memoryHook = roaring_memory_t{ + RoaringMallocUdf, RoaringReallocUdf, RoaringCallocUdf, + RoaringFreeUdf, RoaringAlignedMallocUdf, RoaringFreeUdf}; + roaring_init_memory_hook(memoryHook); + } + + TStringRef Name() const { + return TStringRef::Of("Roaring"); + } + + void GetAllFunctions(IFunctionsSink& sink) const final { + sink.Add(TRoaringSerialize::Name()); + sink.Add(TRoaringDeserialize::Name()); + + sink.Add(TRoaringCardinality::Name()); + + sink.Add(TRoaringUint32List::Name()); + + sink.Add(TRoaringOrWithBinary::Name()); + sink.Add(TRoaringOr::Name()); + + sink.Add(TRoaringAndWithBinary::Name()); + sink.Add(TRoaringAnd::Name()); + } + + void CleanupOnTerminate() const final { + } + + void BuildFunctionTypeInfo(const TStringRef& name, NUdf::TType* userType, + const TStringRef& typeConfig, ui32 flags, + IFunctionTypeInfoBuilder& builder) const final { + try { + Y_UNUSED(typeConfig); + Y_UNUSED(userType); + + auto typesOnly = (flags & TFlags::TypesOnly); + + if (TRoaringDeserialize::Name() == name) { + builder.Returns<TResource<RoaringResourceName>>().Args()->Add<TAutoMap<char*>>(); + + if (!typesOnly) { + builder.Implementation(new TRoaringDeserialize(builder.GetSourcePosition())); + } + } else if (TRoaringSerialize::Name() == name) { + builder.Returns(builder.SimpleType<char*>()) + .Args() + ->Add<TAutoMap<TResource<RoaringResourceName>>>(); + + if (!typesOnly) { + builder.Implementation(new TRoaringSerialize()); + } + } else if (TRoaringCardinality::Name() == name) { + builder.Returns(builder.SimpleType<ui32>()) + .Args() + ->Add<TAutoMap<TResource<RoaringResourceName>>>(); + + if (!typesOnly) { + builder.Implementation(new TRoaringCardinality()); + } + } else if (TRoaringUint32List::Name() == name) { + builder.Returns<TListType<ui32>>() + .Args() + ->Add<TAutoMap<TResource<RoaringResourceName>>>(); + + if (!typesOnly) { + builder.Implementation(new TRoaringUint32List()); + } + } else if (TRoaringOrWithBinary::Name() == name) { + builder.Returns<TResource<RoaringResourceName>>() + .Args() + ->Add<TAutoMap<TResource<RoaringResourceName>>>() + .Add<TAutoMap<char*>>(); + + if (!typesOnly) { + builder.Implementation(new TRoaringOrWithBinary()); + } + } else if (TRoaringOr::Name() == name) { + builder.Returns<TResource<RoaringResourceName>>() + .Args() + ->Add<TAutoMap<TResource<RoaringResourceName>>>() + .Add<TAutoMap<TResource<RoaringResourceName>>>(); + + if (!typesOnly) { + builder.Implementation(new TRoaringOr()); + } + } else if (TRoaringAndWithBinary::Name() == name) { + builder.Returns<TResource<RoaringResourceName>>() + .Args() + ->Add<TAutoMap<TResource<RoaringResourceName>>>() + .Add<TAutoMap<char*>>(); + + if (!typesOnly) { + builder.Implementation(new TRoaringAndWithBinary()); + } + } else if (TRoaringAnd::Name() == name) { + builder.Returns<TResource<RoaringResourceName>>() + .Args() + ->Add<TAutoMap<TResource<RoaringResourceName>>>() + .Add<TAutoMap<TResource<RoaringResourceName>>>(); + + if (!typesOnly) { + builder.Implementation(new TRoaringAnd()); + } + } else { + TStringBuilder sb; + sb << "Unknown function: " << name.Data(); + builder.SetError(sb); + } + } catch (const std::exception& e) { + builder.SetError(CurrentExceptionMessage()); + } + } + + private: + inline static const char RoaringResourceName[] = "roaring_bitmap"; + + static void* RoaringMallocUdf(size_t size) { + auto allocationSize = size + 2 * sizeof(void*); + auto allocatedMemPointer = UdfAllocateWithSize(allocationSize); + + auto roaringMemPointer = ((char*)allocatedMemPointer) + 2 * sizeof(void*); + + ((void**)roaringMemPointer)[-1] = allocatedMemPointer; + ((void**)roaringMemPointer)[-2] = ((char*)allocatedMemPointer) + allocationSize; + return roaringMemPointer; + } + + static void* RoaringReallocUdf(void* oldPointer, size_t newSize) { + if (oldPointer == nullptr) { + return RoaringMallocUdf(newSize); + } + + if (oldPointer != nullptr && newSize == 0) { + RoaringFreeUdf(oldPointer); + return nullptr; + } + + auto reallocatedPointer = RoaringMallocUdf(newSize); + auto oldAllocatedMemPointer = (char*)((void**)oldPointer)[-1]; + auto oldSizePointer = (char*)((void**)oldPointer)[-2]; + memcpy(reallocatedPointer, oldPointer, oldSizePointer - oldAllocatedMemPointer); + RoaringFreeUdf(oldPointer); + + return reallocatedPointer; + } + + static void* RoaringCallocUdf(size_t elements, size_t elementSize) { + auto newMem = RoaringMallocUdf(elements * elementSize); + memset(newMem, 0, elements * elementSize); + return newMem; + } + + static void RoaringFreeUdf(void* pointer) { + if (pointer == nullptr) { + return; + } + auto allocatedMemPointer = (char*)((void**)pointer)[-1]; + auto sizePointer = (char*)((void**)pointer)[-2]; + UdfFreeWithSize(allocatedMemPointer, sizePointer - allocatedMemPointer); + } + + static void* RoaringAlignedMallocUdf(size_t alignment, size_t size) { + auto allocationSize = size + (alignment - 1) + 2 * sizeof(void*); + auto allocatedMemPointer = UdfAllocateWithSize(allocationSize); + + auto roaringMemPointer = ((char*)allocatedMemPointer) + 2 * sizeof(void*); + if ((size_t)roaringMemPointer & (alignment - 1)) { + roaringMemPointer += alignment - ((size_t)roaringMemPointer & (alignment - 1)); + } + + ((void**)roaringMemPointer)[-1] = allocatedMemPointer; + ((void**)roaringMemPointer)[-2] = ((char*)allocatedMemPointer) + allocationSize; + return roaringMemPointer; + } + }; + +} // namespace + +REGISTER_MODULES(TRoaringModule) diff --git a/ydb/library/yql/udfs/common/roaring/test/canondata/result.json b/ydb/library/yql/udfs/common/roaring/test/canondata/result.json new file mode 100644 index 000000000000..8c592fb352ad --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/canondata/result.json @@ -0,0 +1,22 @@ +{ + "test.test[cardinality]": [ + { + "uri": "file://test.test_cardinality_/results.txt" + } + ], + "test.test[intersect]": [ + { + "uri": "file://test.test_intersect_/results.txt" + } + ], + "test.test[serialize_deserialize]": [ + { + "uri": "file://test.test_serialize_deserialize_/results.txt" + } + ], + "test.test[union]": [ + { + "uri": "file://test.test_union_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_cardinality_/results.txt b/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_cardinality_/results.txt new file mode 100644 index 000000000000..315e3b881a91 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_cardinality_/results.txt @@ -0,0 +1,69 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "OrCardinality"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "3" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "AndCardinality"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "1" + ] + ] + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_intersect_/results.txt b/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_intersect_/results.txt new file mode 100644 index 000000000000..326216669869 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_intersect_/results.txt @@ -0,0 +1,106 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "AndList"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "1" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "AndWithBinaryList"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "1" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "AndWithBinaryListEmpty"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + # + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_serialize_deserialize_/results.txt b/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_serialize_deserialize_/results.txt new file mode 100644 index 000000000000..05f944c62233 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_serialize_deserialize_/results.txt @@ -0,0 +1,176 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "DeserializedList"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "10"; + "567" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "Serialized"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + ":0\0\0\1\0\0\0\0\0\1\0\x10\0\0\0\n\0007\2" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "LimitedList"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "10" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "OffsetedList"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "567" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "EmptyList"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [] + ] + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_union_/results.txt b/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_union_/results.txt new file mode 100644 index 000000000000..208f1ff2c42e --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/canondata/test.test_union_/results.txt @@ -0,0 +1,78 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "OrList"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "1"; + "2"; + "3" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "OrWithBinaryList"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "1"; + "2"; + "3" + ] + ] + ] + ] + } + ] + } +] \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/cardinality.in b/ydb/library/yql/udfs/common/roaring/test/cases/cardinality.in new file mode 100644 index 000000000000..12431657f3b8 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/cardinality.in @@ -0,0 +1 @@ +{"left"=":0\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x01\x00\x02\x00";"right"=":0\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x01\x00\x03\x00";}; diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/cardinality.in.attr b/ydb/library/yql/udfs/common/roaring/test/cases/cardinality.in.attr new file mode 100644 index 000000000000..6bfd01839a56 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/cardinality.in.attr @@ -0,0 +1 @@ +{schema=[{name=left;type=string};{name=right;type=string}]} diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/cardinality.sql b/ydb/library/yql/udfs/common/roaring/test/cases/cardinality.sql new file mode 100644 index 000000000000..729fc50bd383 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/cardinality.sql @@ -0,0 +1,2 @@ +SELECT Roaring::Cardinality(Roaring::OrWithBinary(Roaring::Deserialize(left), right)) AS OrCardinality FROM Input; +SELECT Roaring::Uint32List(Roaring::AndWithBinary(Roaring::Deserialize(right), left)) AS AndCardinality FROM Input; diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/intersect.in b/ydb/library/yql/udfs/common/roaring/test/cases/intersect.in new file mode 100644 index 000000000000..12431657f3b8 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/intersect.in @@ -0,0 +1 @@ +{"left"=":0\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x01\x00\x02\x00";"right"=":0\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x01\x00\x03\x00";}; diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/intersect.in.attr b/ydb/library/yql/udfs/common/roaring/test/cases/intersect.in.attr new file mode 100644 index 000000000000..6bfd01839a56 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/intersect.in.attr @@ -0,0 +1 @@ +{schema=[{name=left;type=string};{name=right;type=string}]} diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/intersect.sql b/ydb/library/yql/udfs/common/roaring/test/cases/intersect.sql new file mode 100644 index 000000000000..60c968946ead --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/intersect.sql @@ -0,0 +1,3 @@ +SELECT Roaring::Uint32List(Roaring::And(Roaring::Deserialize(left), Roaring::Deserialize(right))) AS AndList FROM Input; +SELECT Roaring::Uint32List(Roaring::AndWithBinary(Roaring::Deserialize(right), left)) AS AndWithBinaryList FROM Input; +SELECT Roaring::Uint32List(Roaring::AndWithBinary(Roaring::Deserialize(right), NULL)) AS AndWithBinaryListEmpty FROM Input; diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.in b/ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.in new file mode 100644 index 000000000000..0023cbae96fe --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.in @@ -0,0 +1 @@ +{"binaryString"=":0\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\n\x007\x02";}; diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.in.attr b/ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.in.attr new file mode 100644 index 000000000000..158676c2c5b3 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.in.attr @@ -0,0 +1 @@ +{schema=[{name=binaryString;type=string}]} \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.sql b/ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.sql new file mode 100644 index 000000000000..9735432181c9 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/serialize_deserialize.sql @@ -0,0 +1,15 @@ +/* syntax version 1 */ +SELECT Roaring::Uint32List(Roaring::Deserialize(binaryString)) AS DeserializedList +FROM Input; + +SELECT Roaring::Serialize(Roaring::Deserialize(binaryString)) AS Serialized +FROM Input; + +SELECT ListTake(Roaring::Uint32List(Roaring::Deserialize(binaryString)), 1) AS LimitedList +FROM Input; + +SELECT ListTake(ListSkip(Roaring::Uint32List(Roaring::Deserialize(binaryString)), 1), 1) AS OffsetedList +FROM Input; + +SELECT ListTake(ListSkip(Roaring::Uint32List(Roaring::Deserialize(binaryString)), 10), 1) AS EmptyList +FROM Input; diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/union.in b/ydb/library/yql/udfs/common/roaring/test/cases/union.in new file mode 100644 index 000000000000..12431657f3b8 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/union.in @@ -0,0 +1 @@ +{"left"=":0\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x01\x00\x02\x00";"right"=":0\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x01\x00\x03\x00";}; diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/union.in.attr b/ydb/library/yql/udfs/common/roaring/test/cases/union.in.attr new file mode 100644 index 000000000000..6bfd01839a56 --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/union.in.attr @@ -0,0 +1 @@ +{schema=[{name=left;type=string};{name=right;type=string}]} diff --git a/ydb/library/yql/udfs/common/roaring/test/cases/union.sql b/ydb/library/yql/udfs/common/roaring/test/cases/union.sql new file mode 100644 index 000000000000..54d44054b03e --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/cases/union.sql @@ -0,0 +1,3 @@ +SELECT Roaring::Uint32List(Roaring::Or(Roaring::Deserialize(left), Roaring::Deserialize(right))) AS OrList FROM Input; +SELECT Roaring::Uint32List(Roaring::OrWithBinary(Roaring::Deserialize(right), left)) AS OrWithBinaryList FROM Input; + diff --git a/ydb/library/yql/udfs/common/roaring/test/ya.make b/ydb/library/yql/udfs/common/roaring/test/ya.make new file mode 100644 index 000000000000..157190e5b3ad --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/test/ya.make @@ -0,0 +1,12 @@ +YQL_UDF_YDB_TEST() + +DEPENDS(ydb/library/yql/udfs/common/roaring) + +TIMEOUT(300) +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/roaring/ya.make b/ydb/library/yql/udfs/common/roaring/ya.make new file mode 100644 index 000000000000..841ba775520d --- /dev/null +++ b/ydb/library/yql/udfs/common/roaring/ya.make @@ -0,0 +1,22 @@ +YQL_UDF_YDB(roaring) + +YQL_ABI_VERSION( + 2 + 35 + 0 +) + +SRCS( + roaring.cpp +) + +PEERDIR( + contrib/libs/croaring +) + + +END() + +RECURSE_FOR_TESTS( + test +) \ No newline at end of file diff --git a/ydb/library/yql/udfs/common/ya.make b/ydb/library/yql/udfs/common/ya.make index 17ae1e020423..ff8d917ea529 100644 --- a/ydb/library/yql/udfs/common/ya.make +++ b/ydb/library/yql/udfs/common/ya.make @@ -15,6 +15,7 @@ RECURSE( pire protobuf re2 + roaring set stat streaming From 5dbb7c68410488d40d1f6d75d40daa37dcb3ac68 Mon Sep 17 00:00:00 2001 From: Ilia Shakhov <pixcc@ydb.tech> Date: Thu, 20 Jun 2024 14:07:07 +0300 Subject: [PATCH 106/110] Fix PDisk FAULTY status in CMS UI (#5228) (#5760) --- ydb/core/cms/ui/sentinel_state.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ydb/core/cms/ui/sentinel_state.js b/ydb/core/cms/ui/sentinel_state.js index 78942081f8c2..991e79808157 100644 --- a/ydb/core/cms/ui/sentinel_state.js +++ b/ydb/core/cms/ui/sentinel_state.js @@ -22,14 +22,14 @@ TPDiskState[253] = "Timeout"; TPDiskState[254] = "NodeDisconnected"; TPDiskState[255] = "Unknown"; -const EPDiskStatus = [ - "UNKNOWN", - "ACTIVE", - "INACTIVE", - "BROKEN", - "FAULTY", - "TO_BE_REMOVED", -]; +const EPDiskStatus = { + 0: "UNKNOWN", + 1: "ACTIVE", + 2: "INACTIVE", + 3: "BROKEN", + 5: "FAULTY", + 6: "TO_BE_REMOVED", +}; const PDiskHeaders = [ "PDiskId", From 3f7e4725aad8c85f485d6dae3b7d5d6ab055756b Mon Sep 17 00:00:00 2001 From: Ilia Shakhov <pixcc@ydb.tech> Date: Thu, 20 Jun 2024 14:12:01 +0300 Subject: [PATCH 107/110] Add CMS request priorities KIKIMR-9024 (#1620) (#4094) --- ydb/core/cms/api_adapters.cpp | 8 +- ydb/core/cms/cluster_info.cpp | 65 +++-- ydb/core/cms/cluster_info.h | 17 +- ydb/core/cms/cluster_info_ut.cpp | 14 +- ydb/core/cms/cms.cpp | 63 ++++- ydb/core/cms/cms_impl.h | 2 + ydb/core/cms/cms_tx_load_state.cpp | 19 +- ydb/core/cms/cms_tx_store_permissions.cpp | 3 + ydb/core/cms/cms_ut.cpp | 260 ++++++++++++++++++ ydb/core/cms/cms_ut_common.cpp | 1 + ydb/core/cms/cms_ut_common.h | 29 +- ydb/core/cms/node_checkers.cpp | 10 +- ydb/core/cms/scheme.h | 3 +- ydb/core/cms/walle.h | 3 + ydb/core/cms/walle_create_task_adapter.cpp | 10 +- .../driver_lib/cli_utils/cli_cmds_cms.cpp | 8 + ydb/core/protos/cms.proto | 2 + ydb/core/protos/feature_flags.proto | 1 + ydb/core/testlib/basics/feature_flags.h | 1 + .../api/protos/draft/ydb_maintenance.proto | 2 + 20 files changed, 463 insertions(+), 58 deletions(-) diff --git a/ydb/core/cms/api_adapters.cpp b/ydb/core/cms/api_adapters.cpp index 55572dbb9931..bc56fa7b90d2 100644 --- a/ydb/core/cms/api_adapters.cpp +++ b/ydb/core/cms/api_adapters.cpp @@ -381,6 +381,11 @@ class TCreateMaintenanceTask: public TPermissionResponseProcessor< cmsRequest.SetPartialPermissionAllowed(true); cmsRequest.SetSchedule(true); + i32 priority = opts.priority(); + if (priority != 0) { + cmsRequest.SetPriority(priority); + } + for (const auto& group : request.action_groups()) { Y_ABORT_UNLESS(group.actions().size() == 1); for (const auto& action : group.actions()) { @@ -561,7 +566,8 @@ class TGetMaintenanceTask: public TAdapterActor< opts.set_task_uid(taskUid); opts.set_description(request.GetReason()); opts.set_availability_mode(ConvertAvailabilityMode(request.GetAvailabilityMode())); - + opts.set_priority(request.GetPriority()); + // pending actions for (const auto& action : request.GetActions()) { ConvertAction(action, *result.add_action_group_states()->add_action_states()); diff --git a/ydb/core/cms/cluster_info.cpp b/ydb/core/cms/cluster_info.cpp index ffeab7b70d2d..1bfa92b04e68 100644 --- a/ydb/core/cms/cluster_info.cpp +++ b/ydb/core/cms/cluster_info.cpp @@ -60,12 +60,12 @@ bool TLockableItem::IsLocked(TErrorInfo &error, TDuration defaultRetryTime, return true; } - if (!ScheduledLocks.empty() && ScheduledLocks.begin()->Order < DeactivatedLocksOrder) { + if (!ScheduledLocks.empty() && ScheduledLocks.begin()->Priority < DeactivatedLocksPriority) { error.Code = TStatus::DISALLOW_TEMP; - error.Reason = Sprintf("%s has scheduled action %s owned by %s (order %" PRIu64 " vs %" PRIu64 ")", + error.Reason = Sprintf("%s has scheduled action %s owned by %s (priority %" PRIi32 " vs %" PRIi32 ")", PrettyItemName().data(), ScheduledLocks.begin()->RequestId.data(), - ScheduledLocks.begin()->Owner.data(), ScheduledLocks.begin()->Order, - DeactivatedLocksOrder); + ScheduledLocks.begin()->Owner.data(), ScheduledLocks.begin()->Priority, + DeactivatedLocksPriority); error.Deadline = now + defaultRetryTime; return true; } @@ -113,12 +113,12 @@ void TLockableItem::RollbackLocks(ui64 point) void TLockableItem::ReactivateScheduledLocks() { - DeactivatedLocksOrder = Max<ui64>(); + DeactivatedLocksPriority = Max<i32>(); } -void TLockableItem::DeactivateScheduledLocks(ui64 order) +void TLockableItem::DeactivateScheduledLocks(i32 priority) { - DeactivatedLocksOrder = order; + DeactivatedLocksPriority = priority; } void TLockableItem::RemoveScheduledLocks(const TString &requestId) @@ -650,8 +650,11 @@ void TClusterInfo::ApplyActionWithoutLog(const NKikimrCms::TAction &action) case TAction::REBOOT_HOST: if (auto nodes = NodePtrs(action.GetHost(), MakeServices(action))) { for (const auto node : nodes) { - for (auto &nodeGroup: node->NodeGroups) - nodeGroup->LockNode(node->NodeId); + for (auto &nodeGroup: node->NodeGroups) { + if (!nodeGroup->IsNodeLocked(node->NodeId)) { + nodeGroup->LockNode(node->NodeId); + } + } } } break; @@ -659,12 +662,18 @@ void TClusterInfo::ApplyActionWithoutLog(const NKikimrCms::TAction &action) for (const auto &device : action.GetDevices()) { if (HasPDisk(device)) { auto pdisk = &PDiskRef(device); - for (auto &nodeGroup: NodeRef(pdisk->NodeId).NodeGroups) - nodeGroup->LockNode(pdisk->NodeId); + for (auto &nodeGroup: NodeRef(pdisk->NodeId).NodeGroups) { + if (!nodeGroup->IsNodeLocked(pdisk->NodeId)) { + nodeGroup->LockNode(pdisk->NodeId); + } + } } else if (HasVDisk(device)) { auto vdisk = &VDiskRef(device); - for (auto &nodeGroup: NodeRef(vdisk->NodeId).NodeGroups) - nodeGroup->LockNode(vdisk->NodeId); + for (auto &nodeGroup: NodeRef(vdisk->NodeId).NodeGroups) { + if (!nodeGroup->IsNodeLocked(vdisk->NodeId)) { + nodeGroup->LockNode(vdisk->NodeId); + } + } } } break; @@ -756,7 +765,7 @@ ui64 TClusterInfo::AddLocks(const TPermissionInfo &permission, const TActorConte || permission.Action.GetType() == TAction::REBOOT_HOST || permission.Action.GetType() == TAction::REPLACE_DEVICES)) { item->State = RESTART; - lock = true;; + lock = true; } if (lock) { @@ -854,7 +863,7 @@ ui64 TClusterInfo::ScheduleActions(const TRequestInfo &request, const TActorCont auto items = FindLockedItems(action, ctx); for (auto item : items) - item->ScheduleLock({action, request.Owner, request.RequestId, request.Order}); + item->ScheduleLock({action, request.Owner, request.RequestId, request.Priority}); locks += items.size(); } @@ -868,10 +877,10 @@ void TClusterInfo::UnscheduleActions(const TString &requestId) entry.second->RemoveScheduledLocks(requestId); } -void TClusterInfo::DeactivateScheduledLocks(ui64 order) +void TClusterInfo::DeactivateScheduledLocks(i32 priority) { for (auto &entry : LockableItems) - entry.second->DeactivateScheduledLocks(order); + entry.second->DeactivateScheduledLocks(priority); } void TClusterInfo::ReactivateScheduledLocks() @@ -1020,8 +1029,11 @@ void TOperationLogManager::ApplyAction(const NKikimrCms::TAction &action, case NKikimrCms::TAction::REBOOT_HOST: if (auto nodes = clusterState->NodePtrs(action.GetHost(), MakeServices(action))) { for (const auto node : nodes) { - for (auto &nodeGroup: node->NodeGroups) - AddNodeLockOperation(node->NodeId, nodeGroup); + for (auto &nodeGroup: node->NodeGroups) { + if (!nodeGroup->IsNodeLocked(node->NodeId)) { + AddNodeLockOperation(node->NodeId, nodeGroup); + } + } } } break; @@ -1029,13 +1041,18 @@ void TOperationLogManager::ApplyAction(const NKikimrCms::TAction &action, for (const auto &device : action.GetDevices()) { if (clusterState->HasPDisk(device)) { auto pdisk = &clusterState->PDisk(device); - for (auto &nodeGroup: clusterState->NodeRef(pdisk->NodeId).NodeGroups) - AddNodeLockOperation(pdisk->NodeId, nodeGroup); - + for (auto &nodeGroup: clusterState->NodeRef(pdisk->NodeId).NodeGroups) { + if (!nodeGroup->IsNodeLocked(pdisk->NodeId)) { + AddNodeLockOperation(pdisk->NodeId, nodeGroup); + } + } } else if (clusterState->HasVDisk(device)) { auto vdisk = &clusterState->VDisk(device); - for (auto &nodeGroup: clusterState->NodeRef(vdisk->NodeId).NodeGroups) - AddNodeLockOperation(vdisk->NodeId, nodeGroup); + for (auto &nodeGroup: clusterState->NodeRef(vdisk->NodeId).NodeGroups) { + if (!nodeGroup->IsNodeLocked(vdisk->NodeId)) { + AddNodeLockOperation(vdisk->NodeId, nodeGroup); + } + } } } break; diff --git a/ydb/core/cms/cluster_info.h b/ydb/core/cms/cluster_info.h index 5ba7fddd126f..f9439ad46d15 100644 --- a/ydb/core/cms/cluster_info.h +++ b/ydb/core/cms/cluster_info.h @@ -97,11 +97,13 @@ struct TRequestInfo { request.SetPartialPermissionAllowed(Request.GetPartialPermissionAllowed()); request.SetReason(Request.GetReason()); request.SetAvailabilityMode(Request.GetAvailabilityMode()); + request.SetPriority(Priority); } TString RequestId; TString Owner; ui64 Order = 0; + i32 Priority = 0; NKikimrCms::TPermissionRequest Request; }; @@ -203,10 +205,10 @@ class TLockableItem : public TThrRefBase { }; struct TScheduledLock : TBaseLock { - TScheduledLock(const NKikimrCms::TAction &action, const TString &owner, const TString &requestId, ui64 order) + TScheduledLock(const NKikimrCms::TAction &action, const TString &owner, const TString &requestId, i32 priority) : TBaseLock(owner, action) , RequestId(requestId) - , Order(order) + , Priority(priority) { } @@ -217,7 +219,7 @@ class TLockableItem : public TThrRefBase { TScheduledLock &operator=(TScheduledLock &&other) = default; TString RequestId; - ui64 Order = 0; + i32 Priority = 0; }; struct TTemporaryLock : TBaseLock { @@ -268,7 +270,7 @@ class TLockableItem : public TThrRefBase { void ScheduleLock(TScheduledLock &&lock) { auto pos = LowerBound(ScheduledLocks.begin(), ScheduledLocks.end(), lock, [](auto &l, auto &r) { - return l.Order < r.Order; + return l.Priority < r.Priority; }); ScheduledLocks.insert(pos, lock); } @@ -278,7 +280,7 @@ class TLockableItem : public TThrRefBase { void RollbackLocks(ui64 point); - void DeactivateScheduledLocks(ui64 order); + void DeactivateScheduledLocks(i32 priority); void ReactivateScheduledLocks(); void RemoveScheduledLocks(const TString &requestId); @@ -296,7 +298,7 @@ class TLockableItem : public TThrRefBase { std::list<TExternalLock> ExternalLocks; std::list<TScheduledLock> ScheduledLocks; TVector<TTemporaryLock> TempLocks; - ui64 DeactivatedLocksOrder = Max<ui64>(); + i32 DeactivatedLocksPriority = Max<i32>(); THashSet<NKikimrCms::EMarker> Markers; }; @@ -667,7 +669,6 @@ class TClusterInfo : public TThrRefBase { TOperationLogManager LogManager; TOperationLogManager ScheduledLogManager; - void ApplyActionToOperationLog(const NKikimrCms::TAction &action); void ApplyActionWithoutLog(const NKikimrCms::TAction &action); void ApplyNodeLimits(ui32 clusterLimit, ui32 clusterRatioLimit, ui32 tenantLimit, ui32 tenantRatioLimit); @@ -912,7 +913,7 @@ class TClusterInfo : public TThrRefBase { ui64 AddTempLocks(const NKikimrCms::TAction &action, const TActorContext *ctx); ui64 ScheduleActions(const TRequestInfo &request, const TActorContext *ctx); void UnscheduleActions(const TString &requestId); - void DeactivateScheduledLocks(ui64 order); + void DeactivateScheduledLocks(i32 priority); void ReactivateScheduledLocks(); void RollbackLocks(ui64 point); diff --git a/ydb/core/cms/cluster_info_ut.cpp b/ydb/core/cms/cluster_info_ut.cpp index cfe643214261..9fc6a14cc9f7 100644 --- a/ydb/core/cms/cluster_info_ut.cpp +++ b/ydb/core/cms/cluster_info_ut.cpp @@ -199,33 +199,33 @@ void AddActions(TRequestInfo &request, const NKikimrCms::TAction &action, Ts... } template<typename... Ts> -TRequestInfo MakeRequest(const TString &id, const TString &owner, ui64 order, Ts... actions) +TRequestInfo MakeRequest(const TString &id, const TString &owner, i32 priority, Ts... actions) { TRequestInfo res; res.RequestId = id; res.Owner = owner; - res.Order = order; + res.Priority = priority; AddActions(res, actions...); return res; } template<typename I> -void CheckScheduledLocks(I pos, I end, const TString &id, const TString &owner, ui64 order) +void CheckScheduledLocks(I pos, I end, const TString &id, const TString &owner, i32 priority) { UNIT_ASSERT(pos != end); UNIT_ASSERT_VALUES_EQUAL(pos->RequestId, id); UNIT_ASSERT_VALUES_EQUAL(pos->Owner, owner); - UNIT_ASSERT_VALUES_EQUAL(pos->Order, order); + UNIT_ASSERT_VALUES_EQUAL(pos->Priority, priority); UNIT_ASSERT(++pos == end); } template<typename I, typename... Ts> -void CheckScheduledLocks(I pos, I end, const TString &id, const TString &owner, ui64 order, Ts... locks) +void CheckScheduledLocks(I pos, I end, const TString &id, const TString &owner, i32 priority, Ts... locks) { UNIT_ASSERT(pos != end); UNIT_ASSERT_VALUES_EQUAL(pos->RequestId, id); UNIT_ASSERT_VALUES_EQUAL(pos->Owner, owner); - UNIT_ASSERT_VALUES_EQUAL(pos->Order, order); + UNIT_ASSERT_VALUES_EQUAL(pos->Priority, priority); CheckScheduledLocks(++pos, end, locks...); } @@ -442,7 +442,7 @@ Y_UNIT_TEST_SUITE(TClusterInfoTest) { "request-3", "user-3", 3, "request-4", "user-4", 4); - cluster->DeactivateScheduledLocks(request2.Order); + cluster->DeactivateScheduledLocks(request2.Priority); TErrorInfo error; UNIT_ASSERT(cluster->Node(1).IsLocked(error, TDuration(), Now(), TDuration())); diff --git a/ydb/core/cms/cms.cpp b/ydb/core/cms/cms.cpp index 6e3335b45695..31cea8f2e289 100644 --- a/ydb/core/cms/cms.cpp +++ b/ydb/core/cms/cms.cpp @@ -50,6 +50,8 @@ void TCms::OnActivateExecutor(const TActorContext &ctx) return; } + EnableCMSRequestPriorities = AppData(ctx)->FeatureFlags.GetEnableCMSRequestPriorities(); + Executor()->RegisterExternalTabletCounters(TabletCountersPtr.Release()); State->CmsTabletId = TabletID(); @@ -244,13 +246,16 @@ void TCms::ProcessInitQueue(const TActorContext &ctx) void TCms::SubscribeForConfig(const TActorContext &ctx) { - NConsole::SubscribeViaConfigDispatcher(ctx, {(ui32)NKikimrConsole::TConfigItem::CmsConfigItem}, ctx.SelfID); + NConsole::SubscribeViaConfigDispatcher(ctx, {(ui32)NKikimrConsole::TConfigItem::CmsConfigItem, + (ui32)NKikimrConsole::TConfigItem::FeatureFlagsItem}, ctx.SelfID); } void TCms::AdjustInfo(TClusterInfoPtr &info, const TActorContext &ctx) const { for (const auto &entry : State->Permissions) info->AddLocks(entry.second, &ctx); + for (const auto &entry : State->ScheduledRequests) + info->ScheduleActions(entry.second, &ctx); for (const auto &entry : State->Notifications) info->AddExternalLocks(entry.second, &ctx); for (const auto &entry : State->HostMarkers) @@ -305,6 +310,9 @@ bool TCms::CheckPermissionRequest(const TPermissionRequest &request, scheduled.SetDuration(request.GetDuration()); scheduled.SetTenantPolicy(request.GetTenantPolicy()); scheduled.SetAvailabilityMode(request.GetAvailabilityMode()); + if (request.HasPriority()) { + scheduled.SetPriority(request.GetPriority()); + } } LOG_INFO_S(ctx, NKikimrServices::CMS, @@ -1468,6 +1476,20 @@ void TCms::CheckAndEnqueueRequest(TEvCms::TEvPermissionRequest::TPtr &ev, const } } + if (rec.HasPriority() && !EnableCMSRequestPriorities) { + if (rec.GetUser() == WALLE_CMS_USER) { + rec.ClearPriority(); + } else { + return ReplyWithError<TEvCms::TEvPermissionResponse>( + ev, TStatus::WRONG_REQUEST, "Unsupported: feature flag EnableCMSRequestPriorities is off", ctx); + } + } + + if (-100 > rec.GetPriority() || rec.GetPriority() > 100) { + return ReplyWithError<TEvCms::TEvPermissionResponse>( + ev, TStatus::WRONG_REQUEST, "Priority value is out of range", ctx); + } + EnqueueRequest(ev.Release(), ctx); } @@ -1820,7 +1842,6 @@ void TCms::Handle(TEvCms::TEvPermissionRequest::TPtr &ev, TAutoPtr<TEvCms::TEvPermissionResponse> resp = new TEvCms::TEvPermissionResponse; TRequestInfo scheduled; auto &rec = ev->Get()->Record; - TString user = rec.GetUser(); auto requestStartTime = TInstant::Now(); @@ -1860,12 +1881,25 @@ void TCms::Handle(TEvCms::TEvPermissionRequest::TPtr &ev, } } + ClusterInfo->LogManager.PushRollbackPoint(); + const i32 priority = rec.GetPriority(); + for (const auto &[_, scheduledRequest] : State->ScheduledRequests) { + if (scheduledRequest.Priority < priority) { + for (const auto &action : scheduledRequest.Request.GetActions()) { + ClusterInfo->LogManager.ApplyAction(action, ClusterInfo); + } + } + } + ClusterInfo->DeactivateScheduledLocks(priority); bool ok = CheckPermissionRequest(rec, resp->Record, scheduled.Request, ctx); + ClusterInfo->ReactivateScheduledLocks(); + ClusterInfo->LogManager.RollbackOperations(); // Schedule request if required. if (rec.GetDryRun()) { Reply(ev, std::move(resp), ctx); } else { + TString user = rec.GetUser(); auto reqId = user + "-r-" + ToString(State->NextRequestId++); resp->Record.SetRequestId(reqId); @@ -1873,7 +1907,9 @@ void TCms::Handle(TEvCms::TEvPermissionRequest::TPtr &ev, if (scheduled.Request.ActionsSize() || scheduled.Request.GetEvictVDisks()) { scheduled.Owner = user; scheduled.Order = State->NextRequestId - 1; + scheduled.Priority = priority; scheduled.RequestId = reqId; + ClusterInfo->ScheduleActions(scheduled, &ctx); copy = new TRequestInfo(scheduled); State->ScheduledRequests.emplace(reqId, std::move(scheduled)); @@ -1924,8 +1960,19 @@ void TCms::Handle(TEvCms::TEvCheckRequest::TPtr &ev, const TActorContext &ctx) auto requestStartTime = TInstant::Now(); + ClusterInfo->LogManager.PushRollbackPoint(); + for (const auto &scheduled_request : State->ScheduledRequests) { + if (scheduled_request.second.Priority < request.Priority) { + for (const auto &action : scheduled_request.second.Request.GetActions()) + ClusterInfo->LogManager.ApplyAction(action, ClusterInfo); + } + } + + ClusterInfo->DeactivateScheduledLocks(request.Priority); request.Request.SetAvailabilityMode(rec.GetAvailabilityMode()); bool ok = CheckPermissionRequest(request.Request, resp->Record, scheduled.Request, ctx); + ClusterInfo->ReactivateScheduledLocks(); + ClusterInfo->LogManager.RollbackOperations(); // Schedule request if required. if (rec.GetDryRun()) { @@ -1933,14 +1980,19 @@ void TCms::Handle(TEvCms::TEvCheckRequest::TPtr &ev, const TActorContext &ctx) } else { TAutoPtr<TRequestInfo> copy; auto order = request.Order; + auto priority = request.Priority; + ClusterInfo->UnscheduleActions(request.RequestId); State->ScheduledRequests.erase(it); if (scheduled.Request.ActionsSize() || scheduled.Request.GetEvictVDisks()) { scheduled.Owner = user; scheduled.Order = order; + scheduled.Priority = priority; scheduled.RequestId = rec.GetRequestId(); resp->Record.SetRequestId(scheduled.RequestId); + ClusterInfo->ScheduleActions(scheduled, &ctx); + copy = new TRequestInfo(scheduled); State->ScheduledRequests.emplace(rec.GetRequestId(), std::move(scheduled)); } else { @@ -2223,7 +2275,12 @@ void TCms::Handle(TEvCms::TEvGetSentinelStateRequest::TPtr &ev, const TActorCont void TCms::Handle(TEvConsole::TEvConfigNotificationRequest::TPtr &ev, const TActorContext &ctx) -{ +{ + const auto& appConfig = ev->Get()->Record.GetConfig(); + if (appConfig.HasFeatureFlags()) { + EnableCMSRequestPriorities = appConfig.GetFeatureFlags().GetEnableCMSRequestPriorities(); + } + if (ev->Get()->Record.HasLocal() && ev->Get()->Record.GetLocal()) { Execute(CreateTxUpdateConfig(ev), ctx); } else { diff --git a/ydb/core/cms/cms_impl.h b/ydb/core/cms/cms_impl.h index 3f588599edf0..e25dd4349ccf 100644 --- a/ydb/core/cms/cms_impl.h +++ b/ydb/core/cms/cms_impl.h @@ -464,6 +464,8 @@ class TCms : public TActor<TCms>, public TTabletExecutedFlat { TInstant InfoCollectorStartTime; + bool EnableCMSRequestPriorities = false; + private: TString GenerateStat(); void GenerateNodeState(IOutputStream&); diff --git a/ydb/core/cms/cms_tx_load_state.cpp b/ydb/core/cms/cms_tx_load_state.cpp index 829ce9f94573..80a1de452197 100644 --- a/ydb/core/cms/cms_tx_load_state.cpp +++ b/ydb/core/cms/cms_tx_load_state.cpp @@ -9,6 +9,17 @@ namespace NKikimr::NCms { +namespace { + +template<typename T> +bool ParseFromStringSafe(const TString& input, T* output) { + google::protobuf::TextFormat::Parser parser; + parser.AllowUnknownField(true); + return parser.ParseFromString(input, output); +} + +} // anonymous namespace + class TCms::TTxLoadState : public TTransactionBase<TCms> { public: TTxLoadState(TCms *self) @@ -83,13 +94,15 @@ class TCms::TTxLoadState : public TTransactionBase<TCms> { TString id = requestRowset.GetValue<Schema::Request::ID>(); TString owner = requestRowset.GetValue<Schema::Request::Owner>(); ui64 order = requestRowset.GetValue<Schema::Request::Order>(); + i32 priority = requestRowset.GetValueOrDefault<Schema::Request::Priority>(); TString requestStr = requestRowset.GetValue<Schema::Request::Content>(); TRequestInfo request; request.RequestId = id; request.Owner = owner; request.Order = order; - google::protobuf::TextFormat::ParseFromString(requestStr, &request.Request); + request.Priority = priority; + ParseFromStringSafe(requestStr, &request.Request); LOG_DEBUG(ctx, NKikimrServices::CMS, "Loaded request %s owned by %s: %s", id.data(), owner.data(), requestStr.data()); @@ -147,7 +160,7 @@ class TCms::TTxLoadState : public TTransactionBase<TCms> { permission.PermissionId = id; permission.RequestId = requestId; permission.Owner = owner; - google::protobuf::TextFormat::ParseFromString(actionStr, &permission.Action); + ParseFromStringSafe(actionStr, &permission.Action); permission.Deadline = TInstant::MicroSeconds(deadline); LOG_DEBUG(ctx, NKikimrServices::CMS, "Loaded permission %s owned by %s valid until %s: %s", @@ -183,7 +196,7 @@ class TCms::TTxLoadState : public TTransactionBase<TCms> { TNotificationInfo notification; notification.NotificationId = id; notification.Owner = owner; - google::protobuf::TextFormat::ParseFromString(notificationStr, ¬ification.Notification); + ParseFromStringSafe(notificationStr, ¬ification.Notification); LOG_DEBUG(ctx, NKikimrServices::CMS, "Loaded notification %s owned by %s: %s", id.data(), owner.data(), notificationStr.data()); diff --git a/ydb/core/cms/cms_tx_store_permissions.cpp b/ydb/core/cms/cms_tx_store_permissions.cpp index db625f2d1437..6a382b33fb88 100644 --- a/ydb/core/cms/cms_tx_store_permissions.cpp +++ b/ydb/core/cms/cms_tx_store_permissions.cpp @@ -82,18 +82,21 @@ class TCms::TTxStorePermissions : public TTransactionBase<TCms> { if (Scheduled->Request.ActionsSize() || Scheduled->Request.GetEvictVDisks()) { ui64 order = Scheduled->Order; + i32 priority = Scheduled->Priority; TString requestStr; google::protobuf::TextFormat::PrintToString(Scheduled->Request, &requestStr); auto row = db.Table<Schema::Request>().Key(id); row.Update(NIceDb::TUpdate<Schema::Request::Owner>(owner), NIceDb::TUpdate<Schema::Request::Order>(order), + NIceDb::TUpdate<Schema::Request::Priority>(priority), NIceDb::TUpdate<Schema::Request::Content>(requestStr)); Self->AuditLog(ctx, TStringBuilder() << "Store request" << ": id# " << id << ", owner# " << owner << ", order# " << order + << ", priority# " << priority << ", body# " << requestStr); if (Scheduled->Request.GetEvictVDisks()) { diff --git a/ydb/core/cms/cms_ut.cpp b/ydb/core/cms/cms_ut.cpp index 03dde0cba74b..54279556431d 100644 --- a/ydb/core/cms/cms_ut.cpp +++ b/ydb/core/cms/cms_ut.cpp @@ -1807,6 +1807,266 @@ Y_UNIT_TEST_SUITE(TCmsTest) { // reject until prepared env.CheckRejectRequest("user", request3.GetRequestId()); } + + Y_UNIT_TEST(EmergencyDuringRollingRestart) + { + TCmsTestEnv env(TTestEnvOpts(8).WithEnableCMSRequestPriorities()); + + // Start rolling restart + auto rollingRestart = env.CheckPermissionRequest + ("user", true, false, true, true, -80, TStatus::ALLOW_PARTIAL, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(0), 60000000, "storage"), + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.PermissionsSize(), 1); + + // Done with restarting first node + env.CheckDonePermission("user", rollingRestart.GetPermissions(0).GetId()); + + // Emergency request + auto emergency = env.CheckPermissionRequest + ("user", true, false, true, true, -100, TStatus::ALLOW, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + + // Rolling restart is blocked by emergency request + env.CheckRequest("user", rollingRestart.GetRequestId(), false, TStatus::DISALLOW_TEMP, 0); + + // Done with emergency request + env.CheckDonePermission("user", emergency.GetPermissions(0).GetId()); + + // Rolling restart can continue + env.CheckRequest("user", rollingRestart.GetRequestId(), false, TStatus::ALLOW, 1); + } + + Y_UNIT_TEST(ScheduledEmergencyDuringRollingRestart) + { + TCmsTestEnv env(TTestEnvOpts(8).WithEnableCMSRequestPriorities()); + + // Start rolling restart + auto rollingRestart = env.CheckPermissionRequest + ("user", true, false, true, true, -80, TStatus::ALLOW_PARTIAL, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(0), 60000000, "storage"), + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.PermissionsSize(), 1); + + // Emergency request + auto emergency = env.CheckPermissionRequest + ("user", true, false, true, true, -100, TStatus::DISALLOW_TEMP, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + + // Done with restarting first node + env.CheckDonePermission("user", rollingRestart.GetPermissions(0).GetId()); + + // Rolling restart is blocked by emergency request + env.CheckRequest("user", rollingRestart.GetRequestId(), false, TStatus::DISALLOW_TEMP, 0); + + // Emergency request is not blocked + emergency = env.CheckRequest("user", emergency.GetRequestId(), false, TStatus::ALLOW, 1); + + // Done with emergency request + env.CheckDonePermission("user", emergency.GetPermissions(0).GetId()); + + // Rolling restart can continue + env.CheckRequest("user", rollingRestart.GetRequestId(), false, TStatus::ALLOW, 1); + } + + Y_UNIT_TEST(WalleRequestDuringRollingRestart) + { + TCmsTestEnv env(TTestEnvOpts(8).WithEnableCMSRequestPriorities()); + + // Start rolling restart + auto rollingRestart = env.CheckPermissionRequest + ("user", true, false, true, true, -80, TStatus::ALLOW_PARTIAL, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(0), 60000000, "storage"), + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.PermissionsSize(), 1); + + // Done with restarting first node + env.CheckDonePermission("user", rollingRestart.GetPermissions(0).GetId()); + + // Wall-E task is blocked by rolling restart + env.CheckWalleCreateTask("task-1", "reboot", false, TStatus::DISALLOW_TEMP, env.GetNodeId(1)); + + // Rolling restart is not blocked + rollingRestart = env.CheckRequest("user", rollingRestart.GetRequestId(), false, TStatus::ALLOW, 1); + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.PermissionsSize(), 1); + + // Done with restarting second node + env.CheckDonePermission("user", rollingRestart.GetPermissions(0).GetId()); + + // Wall-E task can continue + env.CheckWalleCheckTask("task-1", TStatus::ALLOW, env.GetNodeId(1)); + } + + Y_UNIT_TEST(ScheduledWalleRequestDuringRollingRestart) + { + TCmsTestEnv env(TTestEnvOpts(8).WithEnableCMSRequestPriorities()); + + // Start rolling restart + auto rollingRestart = env.CheckPermissionRequest + ("user", true, false, true, true, -80, TStatus::ALLOW_PARTIAL, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(0), 60000000, "storage"), + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.PermissionsSize(), 1); + + // Wall-E task is blocked by rolling restart + env.CheckWalleCreateTask("task-1", "reboot", false, TStatus::DISALLOW_TEMP, env.GetNodeId(1)); + + // Done with restarting first node + env.CheckDonePermission("user", rollingRestart.GetPermissions(0).GetId()); + + // Wall-E task is stil blocked + env.CheckWalleCheckTask("task-1", TStatus::DISALLOW_TEMP, env.GetNodeId(1)); + + // Rolling restart is not blocked + rollingRestart = env.CheckRequest("user", rollingRestart.GetRequestId(), false, TStatus::ALLOW, 1); + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.PermissionsSize(), 1); + + // Done with restarting second node + env.CheckDonePermission("user", rollingRestart.GetPermissions(0).GetId()); + + // Wall-E task can continue + env.CheckWalleCheckTask("task-1", TStatus::ALLOW, env.GetNodeId(1)); + } + + Y_UNIT_TEST(EnableCMSRequestPrioritiesFeatureFlag) + { + TCmsTestEnv env(8); + // Start rolling restart with specified priority + auto rollingRestart = env.CheckPermissionRequest + ("user", true, false, true, true, -80, TStatus::WRONG_REQUEST, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(0), 60000000, "storage"), + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + + const TString expectedReason = "Unsupported: feature flag EnableCMSRequestPriorities is off"; + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.GetStatus().GetReason(), expectedReason); + } + + Y_UNIT_TEST(SamePriorityRequest) + { + TCmsTestEnv env(TTestEnvOpts(8).WithEnableCMSRequestPriorities()); + + // Start rolling restart + auto rollingRestart = env.CheckPermissionRequest + ("user", true, false, true, true, -80, TStatus::ALLOW_PARTIAL, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(0), 60000000, "storage"), + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.PermissionsSize(), 1); + + // Issue same priority request + auto samePriorityRequest = env.CheckPermissionRequest + ("user", true, false, true, true, -80, TStatus::DISALLOW_TEMP, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + + // Done with restarting first node + env.CheckDonePermission("user", rollingRestart.GetPermissions(0).GetId()); + + // Rolling restart is not blocked by same priority request + rollingRestart = env.CheckRequest("user", rollingRestart.GetRequestId(), false, TStatus::ALLOW, 1); + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.PermissionsSize(), 1); + + // Done with restarting second node + env.CheckDonePermission("user", rollingRestart.GetPermissions(0).GetId()); + + // Same priority can continue + env.CheckRequest("user", samePriorityRequest.GetRequestId(), false, TStatus::ALLOW, 1); + } + + Y_UNIT_TEST(SamePriorityRequest2) + { + TCmsTestEnv env(TTestEnvOpts(8).WithEnableCMSRequestPriorities()); + + // Start rolling restart + auto rollingRestart = env.CheckPermissionRequest + ("user", true, false, true, true, -80, TStatus::ALLOW_PARTIAL, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(0), 60000000, "storage"), + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.PermissionsSize(), 1); + + // Issue same priority request + auto samePriorityRequest = env.CheckPermissionRequest + ("user", true, false, true, true, -80, TStatus::DISALLOW_TEMP, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + + // Done with restarting first node + env.CheckDonePermission("user", rollingRestart.GetPermissions(0).GetId()); + + // Request is not blocked by rolling restart of same priority + samePriorityRequest = env.CheckRequest("user", samePriorityRequest.GetRequestId(), false, TStatus::ALLOW, 1); + UNIT_ASSERT_VALUES_EQUAL(samePriorityRequest.PermissionsSize(), 1); + + // Done with same priority request permissions + env.CheckDonePermission("user", samePriorityRequest.GetPermissions(0).GetId()); + + // Rolling restart can continue + env.CheckRequest("user", rollingRestart.GetRequestId(), false, TStatus::ALLOW, 1); + } + + Y_UNIT_TEST(PriorityRange) + { + TCmsTestEnv env(TTestEnvOpts(8).WithEnableCMSRequestPriorities()); + + const TString expectedReason = "Priority value is out of range"; + + // Out of range priority + auto request = env.CheckPermissionRequest + ("user", true, false, true, true, -101, TStatus::WRONG_REQUEST, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(0), 60000000, "storage"), + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + UNIT_ASSERT_VALUES_EQUAL(request.GetStatus().GetReason(), expectedReason); + + // Out of range priority + request = env.CheckPermissionRequest + ("user", true, false, true, true, 101, TStatus::WRONG_REQUEST, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(0), 60000000, "storage"), + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + UNIT_ASSERT_VALUES_EQUAL(request.GetStatus().GetReason(), expectedReason); + } + + Y_UNIT_TEST(WalleTasksDifferentPriorities) + { + TCmsTestEnv env(TTestEnvOpts(8).WithEnableCMSRequestPriorities()); + + // Without node limits + NKikimrCms::TCmsConfig config; + config.MutableClusterLimits()->SetDisabledNodesLimit(0); + config.MutableClusterLimits()->SetDisabledNodesRatioLimit(0); + env.SetCmsConfig(config); + + // Start rolling restart + auto rollingRestart = env.CheckPermissionRequest + ("user", true, false, true, true, -80, TStatus::ALLOW_PARTIAL, + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(0), 60000000, "storage"), + MakeAction(TAction::RESTART_SERVICES, env.GetNodeId(1), 60000000, "storage")); + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.PermissionsSize(), 1); + + // Done with restarting first node + env.CheckDonePermission("user", rollingRestart.GetPermissions(0).GetId()); + + // Rolling restart is continue + rollingRestart = env.CheckRequest("user", rollingRestart.GetRequestId(), false, TStatus::ALLOW, 1); + UNIT_ASSERT_VALUES_EQUAL(rollingRestart.PermissionsSize(), 1); + + // Wall-E soft maintainance task is blocked by rolling restart + env.CheckWalleCreateTask("task-1", "temporary-unreachable", false, TStatus::DISALLOW_TEMP, env.GetNodeId(2)); + + // Wall-E reboot task is blocked by rolling restart + env.CheckWalleCreateTask("task-2", "reboot", false, TStatus::DISALLOW_TEMP, env.GetNodeId(1)); + + // Done with restarting second node + env.CheckDonePermission("user", rollingRestart.GetPermissions(0).GetId()); + + // Wall-E soft maintainance task is blocked by Wall-E reboot task + env.CheckWalleCheckTask("task-1", TStatus::DISALLOW_TEMP, env.GetNodeId(2)); + + // Wall-E reboot task can continue + env.CheckWalleCheckTask("task-2", TStatus::ALLOW, env.GetNodeId(1)); + + // Done with Wall-E reboot task + env.CheckWalleRemoveTask("task-2"); + + // Wall-E soft maintainance task can continue + env.CheckWalleCheckTask("task-1", TStatus::ALLOW, env.GetNodeId(2)); + } } } diff --git a/ydb/core/cms/cms_ut_common.cpp b/ydb/core/cms/cms_ut_common.cpp index 876bde9982ef..4e261a265b45 100644 --- a/ydb/core/cms/cms_ut_common.cpp +++ b/ydb/core/cms/cms_ut_common.cpp @@ -485,6 +485,7 @@ static void SetupServices(TTestActorRuntime &runtime, const TTestEnvOpts &option NKikimrConfig::TAppConfig appConfig; appConfig.MutableBootstrapConfig()->CopyFrom(TFakeNodeWhiteboardService::BootstrapConfig); + appConfig.MutableFeatureFlags()->SetEnableCMSRequestPriorities(options.EnableCMSRequestPriorities); runtime.AddLocalService(MakeConfigsDispatcherID(runtime.GetNodeId(0)), TActorSetupCmd(CreateConfigsDispatcher( NKikimr::NConsole::TConfigsDispatcherInitInfo { diff --git a/ydb/core/cms/cms_ut_common.h b/ydb/core/cms/cms_ut_common.h index be43e21b74ab..383546a32cae 100644 --- a/ydb/core/cms/cms_ut_common.h +++ b/ydb/core/cms/cms_ut_common.h @@ -86,6 +86,7 @@ struct TTestEnvOpts { bool UseMirror3dcErasure; bool AdvanceCurrentTime; bool EnableSentinel; + bool EnableCMSRequestPriorities; TTestEnvOpts() = default; @@ -102,6 +103,7 @@ struct TTestEnvOpts { , UseMirror3dcErasure(false) , AdvanceCurrentTime(false) , EnableSentinel(false) + , EnableCMSRequestPriorities(false) { } @@ -114,6 +116,11 @@ struct TTestEnvOpts { EnableSentinel = false; return *this; } + + TTestEnvOpts& WithEnableCMSRequestPriorities() { + EnableCMSRequestPriorities = true; + return *this; + } }; class TCmsTestEnv : public TTestBasicRuntime { @@ -159,6 +166,7 @@ class TCmsTestEnv : public TTestBasicRuntime { bool defaultTenantPolicy, TDuration duration, NKikimrCms::EAvailabilityMode availabilityMode, + i32 priority, NKikimrCms::TStatus::ECode code, Ts... actions) { @@ -168,6 +176,8 @@ class TCmsTestEnv : public TTestBasicRuntime { if (duration) req->Record.SetDuration(duration.GetValue()); req->Record.SetAvailabilityMode(availabilityMode); + if (priority) + req->Record.SetPriority(priority); return CheckPermissionRequest(req, code); } @@ -184,7 +194,7 @@ class TCmsTestEnv : public TTestBasicRuntime { { return CheckPermissionRequest(user, partial, dry, schedule, defaultTenantPolicy, TDuration::Zero(), - availabilityMode, + availabilityMode, 0, code, actions...); } template <typename... Ts> @@ -199,7 +209,7 @@ class TCmsTestEnv : public TTestBasicRuntime { Ts... actions) { return CheckPermissionRequest(user, partial, dry, schedule, defaultTenantPolicy, - duration, NKikimrCms::MODE_MAX_AVAILABILITY, code, actions...); + duration, NKikimrCms::MODE_MAX_AVAILABILITY, 0, code, actions...); } template <typename... Ts> @@ -216,6 +226,21 @@ class TCmsTestEnv : public TTestBasicRuntime { NKikimrCms::MODE_MAX_AVAILABILITY, code, actions...); } + template <typename... Ts> + NKikimrCms::TPermissionResponse CheckPermissionRequest( + const TString &user, + bool partial, + bool dry, + bool schedule, + bool defaultTenantPolicy, + i32 priority, + NKikimrCms::TStatus::ECode code, + Ts... actions) + { + return CheckPermissionRequest(user, partial, dry, schedule, defaultTenantPolicy, + TDuration::Zero(), NKikimrCms::MODE_MAX_AVAILABILITY, priority, code, actions...); + } + NKikimrCms::TPermissionResponse CheckPermissionRequest(TAutoPtr<NCms::TEvCms::TEvPermissionRequest> req, NKikimrCms::TStatus::ECode code); diff --git a/ydb/core/cms/node_checkers.cpp b/ydb/core/cms/node_checkers.cpp index 75c9b3c91bac..51306ab3efb6 100644 --- a/ydb/core/cms/node_checkers.cpp +++ b/ydb/core/cms/node_checkers.cpp @@ -60,9 +60,7 @@ bool TNodesCounterBase::IsNodeLocked(ui32 nodeId) const { } void TNodesCounterBase::LockNode(ui32 nodeId) { - if (IsNodeLocked(nodeId)) { - return; - } + Y_ABORT_UNLESS(!IsNodeLocked(nodeId)); ++LockedNodesCount; if (NodeToState[nodeId] == NODE_STATE_DOWN) { @@ -74,10 +72,8 @@ void TNodesCounterBase::LockNode(ui32 nodeId) { } void TNodesCounterBase::UnlockNode(ui32 nodeId) { - if (!IsNodeLocked(nodeId)) { - return; - } - + Y_ABORT_UNLESS(IsNodeLocked(nodeId)); + --LockedNodesCount; if (NodeToState[nodeId] == NODE_STATE_RESTART) { NodeToState[nodeId] = NODE_STATE_DOWN; diff --git a/ydb/core/cms/scheme.h b/ydb/core/cms/scheme.h index 5bbd7dcc5645..35dcb10c6310 100644 --- a/ydb/core/cms/scheme.h +++ b/ydb/core/cms/scheme.h @@ -37,9 +37,10 @@ struct Schema : NIceDb::Schema { struct Owner : Column<2, NScheme::NTypeIds::Utf8> {}; struct Order : Column<3, NScheme::NTypeIds::Uint64> {}; struct Content : Column<4, NScheme::NTypeIds::Utf8> {}; + struct Priority : Column<5, NScheme::NTypeIds::Int32> {}; using TKey = TableKey<ID>; - using TColumns = TableColumns<ID, Owner, Order, Content>; + using TColumns = TableColumns<ID, Owner, Order, Content, Priority>; }; struct WalleTask : Table<4> { diff --git a/ydb/core/cms/walle.h b/ydb/core/cms/walle.h index bb12bd090ec2..d6e6cf9e2d6d 100644 --- a/ydb/core/cms/walle.h +++ b/ydb/core/cms/walle.h @@ -13,6 +13,9 @@ namespace NKikimr::NCms { constexpr const char *WALLE_CMS_USER = "Wall-E"; constexpr const char *WALLE_API_URL_PREFIX = "/api/walle/v11/"; +constexpr const i32 WALLE_DEFAULT_PRIORITY = 20; +constexpr const i32 WALLE_SOFT_MAINTAINANCE_PRIORITY = 50; + IActor *CreateWalleAdapter(TEvCms::TEvWalleCreateTaskRequest::TPtr &ev, TActorId cms); IActor *CreateWalleAdapter(TEvCms::TEvWalleListTasksRequest::TPtr &ev, const TCmsStatePtr state); IActor *CreateWalleAdapter(TEvCms::TEvWalleCheckTaskRequest::TPtr &ev, const TCmsStatePtr state, TActorId cms); diff --git a/ydb/core/cms/walle_create_task_adapter.cpp b/ydb/core/cms/walle_create_task_adapter.cpp index 83724568eace..744da6eb250e 100644 --- a/ydb/core/cms/walle_create_task_adapter.cpp +++ b/ydb/core/cms/walle_create_task_adapter.cpp @@ -121,8 +121,14 @@ class TWalleCreateTaskAdapter : public TActorBootstrapped<TWalleCreateTaskAdapte request->Record.SetUser(WALLE_CMS_USER); request->Record.SetSchedule(true); request->Record.SetDryRun(task.GetDryRun()); - - auto it = Actions.find(task.GetAction()); + const auto &action = task.GetAction(); + if (action == "temporary-unreachable") { + request->Record.SetPriority(WALLE_SOFT_MAINTAINANCE_PRIORITY); + } else { + request->Record.SetPriority(WALLE_DEFAULT_PRIORITY); + } + + auto it = Actions.find(action); Y_ABORT_UNLESS(it != Actions.end()); if (!it->second) { diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_cms.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_cms.cpp index 59ae3bf3d06f..3206ff8b21fa 100644 --- a/ydb/core/driver_lib/cli_utils/cli_cmds_cms.cpp +++ b/ydb/core/driver_lib/cli_utils/cli_cmds_cms.cpp @@ -412,6 +412,7 @@ class TClientCommandMakeRequest : public TClientCommandWithAction { ui32 Minutes; TString TenantPolicy; TString AvailabilityMode; + i32 Priority; TClientCommandMakeRequest(const TString &description, NKikimrCms::TAction::EType type, @@ -433,6 +434,7 @@ class TClientCommandMakeRequest : public TClientCommandWithAction { EvictVDisks = false; Hours = 0; Minutes = 0; + Priority = 0; config.Opts->AddLongOption("user", "User name").Required() .RequiredArgument("NAME").StoreResult(&User); @@ -453,6 +455,9 @@ class TClientCommandMakeRequest : public TClientCommandWithAction { .RequiredArgument("max|keep|force").DefaultValue("max").StoreResult(&AvailabilityMode); config.Opts->AddLongOption("evict-vdisks", "Evict vdisks before granting permission(s)") .NoArgument().SetFlag(&EvictVDisks); + config.Opts->AddLongOption("priority", "Request priority") + .RequiredArgument("NUM").StoreResult(&Priority); + } void Parse(TConfig& config) override @@ -495,6 +500,9 @@ class TClientCommandMakeRequest : public TClientCommandWithAction { auto duration = TDuration::Minutes(Minutes) + TDuration::Hours(Hours); rec.SetDuration(duration.GetValue()); } + if (Priority) { + rec.SetPriority(Priority); + } } }; diff --git a/ydb/core/protos/cms.proto b/ydb/core/protos/cms.proto index 680a5b72accf..0b929eb9ae09 100644 --- a/ydb/core/protos/cms.proto +++ b/ydb/core/protos/cms.proto @@ -164,6 +164,7 @@ message TPermissionRequest { optional string MaintenanceTaskId = 10; // Evit vdisks before granting permission optional bool EvictVDisks = 11 [default = false]; + optional int32 Priority = 12; } enum EExtensionType { @@ -211,6 +212,7 @@ message TManageRequestResponse { optional bool PartialPermissionAllowed = 4; optional string Reason = 5; optional EAvailabilityMode AvailabilityMode = 6; + optional int32 Priority = 7; } optional TStatus Status = 1; diff --git a/ydb/core/protos/feature_flags.proto b/ydb/core/protos/feature_flags.proto index 30c770825054..b1c1022f7856 100644 --- a/ydb/core/protos/feature_flags.proto +++ b/ydb/core/protos/feature_flags.proto @@ -129,4 +129,5 @@ message TFeatureFlags { optional bool EnableAccessServiceBulkAuthorization = 114 [default = false]; optional bool EnableAddColumsWithDefaults = 115 [ default = false]; optional bool EnableReplaceIfExistsForExternalEntities = 116 [ default = false]; + optional bool EnableCMSRequestPriorities = 117 [default = false]; } diff --git a/ydb/core/testlib/basics/feature_flags.h b/ydb/core/testlib/basics/feature_flags.h index 5e82db9e8f28..fa9b86f1abca 100644 --- a/ydb/core/testlib/basics/feature_flags.h +++ b/ydb/core/testlib/basics/feature_flags.h @@ -58,6 +58,7 @@ class TTestFeatureFlagsHolder { FEATURE_FLAG_SETTER(EnableAccessServiceBulkAuthorization) FEATURE_FLAG_SETTER(EnableAddColumsWithDefaults) FEATURE_FLAG_SETTER(EnableReplaceIfExistsForExternalEntities) + FEATURE_FLAG_SETTER(EnableCMSRequestPriorities) #undef FEATURE_FLAG_SETTER }; diff --git a/ydb/public/api/protos/draft/ydb_maintenance.proto b/ydb/public/api/protos/draft/ydb_maintenance.proto index c37356b98527..7a5e1cdc480e 100644 --- a/ydb/public/api/protos/draft/ydb_maintenance.proto +++ b/ydb/public/api/protos/draft/ydb_maintenance.proto @@ -90,6 +90,8 @@ message MaintenanceTaskOptions { // Availability mode. AvailabilityMode availability_mode = 3; bool dry_run = 4; + // Priority of the task. Lower value indicates higher priority. + int32 priority = 5 [(value) = "[-100; 100]"]; } // Used to describe the scope of a single action. From a355430da95bed8b5b005b467232f66faee790b2 Mon Sep 17 00:00:00 2001 From: Alexander Rutkovsky <alexvru@ydb.tech> Date: Thu, 20 Jun 2024 14:20:12 +0300 Subject: [PATCH 108/110] Make clang14 happy (merge from main #4121) (#5764) Co-authored-by: Daniil Cherednik <dcherednik@ydb.tech> --- ydb/core/blob_depot/mon_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ydb/core/blob_depot/mon_main.cpp b/ydb/core/blob_depot/mon_main.cpp index fd3ac234e1d9..0ea803bd861a 100644 --- a/ydb/core/blob_depot/mon_main.cpp +++ b/ydb/core/blob_depot/mon_main.cpp @@ -641,7 +641,7 @@ document.addEventListener("DOMContentLoaded", ready); return issueError("incorrect 'sequence' parameter"); } else if (seq == Sequence) { const TMonotonic when = now + LongPollTimeout; - LongPolls.emplace_back(when, sender, cookie, seq); + LongPolls.emplace_back(TJsonHandler::TLongPoll{when, sender, cookie, seq}); if (!LongPollTimerPending) { TActivationContext::Schedule(when, new IEventHandle(TimerEv, 0, SelfId, {}, nullptr, 0)); LongPollTimerPending = true; From 49e8858f0aab7c3a01b7cd94d1626b926dc8ae9f Mon Sep 17 00:00:00 2001 From: Alexander Rutkovsky <alexvru@ydb.tech> Date: Thu, 20 Jun 2024 19:31:13 +0300 Subject: [PATCH 109/110] Make interconnect proxy retry timeout parameters configurable (merge from main #3748) (#5783) --- .../driver_lib/run/kikimr_services_initializers.cpp | 10 ++++++++++ ydb/core/protos/config.proto | 4 ++++ ydb/library/actors/interconnect/interconnect_common.h | 3 +++ .../actors/interconnect/interconnect_tcp_proxy.cpp | 9 +++------ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp index 4b10b0f64dc7..83c354bf464e 100644 --- a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp +++ b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp @@ -535,6 +535,16 @@ static TInterconnectSettings GetInterconnectSettings(const NKikimrConfig::TInter } result.SocketBacklogSize = config.GetSocketBacklogSize(); + if (config.HasFirstErrorSleep()) { + result.FirstErrorSleep = DurationFromProto(config.GetFirstErrorSleep()); + } + if (config.HasMaxErrorSleep()) { + result.MaxErrorSleep = DurationFromProto(config.GetMaxErrorSleep()); + } + if (config.HasErrorSleepRetryMultiplier()) { + result.ErrorSleepRetryMultiplier = config.GetErrorSleepRetryMultiplier(); + } + return result; } diff --git a/ydb/core/protos/config.proto b/ydb/core/protos/config.proto index c4b01265d7da..201aba166df3 100644 --- a/ydb/core/protos/config.proto +++ b/ydb/core/protos/config.proto @@ -469,6 +469,10 @@ message TInterconnectConfig { optional NKikimrConfigUnits.TDuration LostConnectionDuration = 28; optional NKikimrConfigUnits.TDuration BatchPeriodDuration = 29; + optional NKikimrConfigUnits.TDuration FirstErrorSleep = 46; + optional NKikimrConfigUnits.TDuration MaxErrorSleep = 47; + optional double ErrorSleepRetryMultiplier = 48; + optional uint32 OutgoingHandshakeInflightLimit = 43; } diff --git a/ydb/library/actors/interconnect/interconnect_common.h b/ydb/library/actors/interconnect/interconnect_common.h index e1bd0c6844b9..29f32256838b 100644 --- a/ydb/library/actors/interconnect/interconnect_common.h +++ b/ydb/library/actors/interconnect/interconnect_common.h @@ -51,6 +51,9 @@ namespace NActors { bool EnableExternalDataChannel = false; bool ValidateIncomingPeerViaDirectLookup = false; ui32 SocketBacklogSize = 0; // SOMAXCONN if zero + TDuration FirstErrorSleep = TDuration::MilliSeconds(10); + TDuration MaxErrorSleep = TDuration::Seconds(1); + double ErrorSleepRetryMultiplier = 4.0; ui32 GetSendBufferSize() const { ui32 res = 512 * 1024; // 512 kb is the default value for send buffer diff --git a/ydb/library/actors/interconnect/interconnect_tcp_proxy.cpp b/ydb/library/actors/interconnect/interconnect_tcp_proxy.cpp index 2feab2b2874f..10cdbc128553 100644 --- a/ydb/library/actors/interconnect/interconnect_tcp_proxy.cpp +++ b/ydb/library/actors/interconnect/interconnect_tcp_proxy.cpp @@ -9,10 +9,6 @@ namespace NActors { static constexpr TDuration GetNodeRequestTimeout = TDuration::Seconds(5); - static constexpr TDuration FirstErrorSleep = TDuration::MilliSeconds(10); - static constexpr TDuration MaxErrorSleep = TDuration::Seconds(10); - static constexpr ui32 SleepRetryMultiplier = 4; - static TString PeerNameForHuman(ui32 nodeNum, const TString& longName, ui16 port) { TStringBuf token; TStringBuf(longName).NextTok('.', token); @@ -758,9 +754,10 @@ namespace NActors { // recalculate wakeup timeout -- if this is the first failure, then we sleep for default timeout; otherwise we // sleep N times longer than the previous try, but not longer than desired number of seconds + auto& s = Common->Settings; HoldByErrorWakeupDuration = HoldByErrorWakeupDuration != TDuration::Zero() - ? Min(HoldByErrorWakeupDuration * SleepRetryMultiplier, MaxErrorSleep) - : FirstErrorSleep; + ? Min(HoldByErrorWakeupDuration * s.ErrorSleepRetryMultiplier, s.MaxErrorSleep) + : Common->Settings.FirstErrorSleep; // transit to required state and arm wakeup timer if (Terminated) { From 9242688e165f52d98c8d7bb55880b234f06bf6b9 Mon Sep 17 00:00:00 2001 From: Ilia Shakhov <pixcc@ydb.tech> Date: Fri, 21 Jun 2024 00:12:28 +0300 Subject: [PATCH 110/110] Add stable node names (#5759) --- ydb/core/base/appdata_fwd.h | 1 + .../driver_lib/cli_utils/cli_cmds_server.cpp | 40 ++- .../run/kikimr_services_initializers.cpp | 2 +- ydb/core/driver_lib/run/run.cpp | 4 + .../grpc_services/rpc_node_registration.cpp | 3 + ydb/core/mind/hive/hive_impl.cpp | 3 + ydb/core/mind/hive/hive_schema.h | 3 +- ydb/core/mind/hive/node_info.h | 1 + ydb/core/mind/hive/tx__load_everything.cpp | 1 + ydb/core/mind/hive/tx__register_node.cpp | 10 +- ydb/core/mind/local.cpp | 3 + ydb/core/mind/node_broker.cpp | 117 ++++++- ydb/core/mind/node_broker__register_node.cpp | 38 ++- ydb/core/mind/node_broker__scheme.h | 16 +- ydb/core/mind/node_broker_impl.h | 16 +- ydb/core/mind/node_broker_ut.cpp | 286 +++++++++++++++++- ydb/core/mind/slot_indexes_pool.cpp | 54 ++++ ydb/core/mind/slot_indexes_pool.h | 22 ++ ydb/core/mind/ya.make | 2 + ydb/core/protos/feature_flags.proto | 1 + ydb/core/protos/hive.proto | 1 + ydb/core/protos/local.proto | 1 + ydb/core/protos/node_broker.proto | 2 + ydb/core/protos/node_whiteboard.proto | 1 + ydb/core/tablet/node_whiteboard.cpp | 3 + ydb/core/viewer/json_nodes.h | 8 + ydb/public/api/protos/ydb_discovery.proto | 2 + .../cpp/client/ydb_discovery/discovery.cpp | 9 + .../sdk/cpp/client/ydb_discovery/discovery.h | 3 + .../flat_hive.schema | 8 +- 30 files changed, 631 insertions(+), 30 deletions(-) create mode 100644 ydb/core/mind/slot_indexes_pool.cpp create mode 100644 ydb/core/mind/slot_indexes_pool.h diff --git a/ydb/core/base/appdata_fwd.h b/ydb/core/base/appdata_fwd.h index c1f49337d067..dbd79bb6f956 100644 --- a/ydb/core/base/appdata_fwd.h +++ b/ydb/core/base/appdata_fwd.h @@ -240,6 +240,7 @@ struct TAppData { TVector<TString> DefaultUserSIDs; TString AllAuthenticatedUsers = "all-users@well-known"; TString TenantName; + TString NodeName; TIntrusivePtr<TResourceProfiles> ResourceProfiles; diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp index 73cd6cf2b7b8..6445b7894b99 100644 --- a/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp +++ b/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp @@ -722,8 +722,23 @@ class TClientCommandServerBase : public TClientCommand { TRACE_CONFIG_CHANGE_INPLACE_T(TenantPoolConfig, UpdateExplicitly); } - if (config.ParseResult->Has("tenant") && InterconnectPort != DefaultInterconnectPort) { - AppConfig.MutableMonitoringConfig()->SetHostLabelOverride(HostAndICPort()); + if (config.ParseResult->Has("tenant")) { + if (AppConfig.GetDynamicNodeConfig().GetNodeInfo().HasName()) { + const TString& nodeName = AppConfig.GetDynamicNodeConfig().GetNodeInfo().GetName(); + AppConfig.MutableMonitoringConfig()->SetHostLabelOverride(nodeName); + TRACE_CONFIG_CHANGE_INPLACE_T(MonitoringConfig, UpdateExplicitly); + } else if (InterconnectPort != DefaultInterconnectPort) { + AppConfig.MutableMonitoringConfig()->SetHostLabelOverride(HostAndICPort()); + TRACE_CONFIG_CHANGE_INPLACE_T(MonitoringConfig, UpdateExplicitly); + } + } + + if (config.ParseResult->Has("tenant")) { + if (InterconnectPort == DefaultInterconnectPort) { + AppConfig.MutableMonitoringConfig()->SetProcessLocation(Host()); + } else { + AppConfig.MutableMonitoringConfig()->SetProcessLocation(HostAndICPort()); + } TRACE_CONFIG_CHANGE_INPLACE_T(MonitoringConfig, UpdateExplicitly); } @@ -989,11 +1004,18 @@ class TClientCommandServerBase : public TClientCommand { ShuffleRange(addrs); } - TString HostAndICPort() { + TString HostAndICPort() const { + auto hostname = Host(); + if (!hostname) { + return ""; + } + return TStringBuilder() << hostname << ":" << InterconnectPort; + } + + TString Host() const { try { auto hostname = to_lower(HostName()); - hostname = hostname.substr(0, hostname.find('.')); - return TStringBuilder() << hostname << ":" << InterconnectPort; + return hostname.substr(0, hostname.find('.')); } catch (TSystemError& error) { return ""; } @@ -1015,6 +1037,11 @@ class TClientCommandServerBase : public TClientCommand { result = TryToRegisterDynamicNodeViaDiscoveryService(addr, domainName, NodeHost, NodeAddress, NodeResolveHost, GetSchemePath()); if (result.IsSuccess()) { Cout << "Success. Registered via discovery service as " << result.GetNodeId() << Endl; + Cout << "Node name: "; + if (result.HasNodeName()) { + Cout << result.GetNodeName(); + } + Cout << Endl; break; } Cerr << "Registration error: " << static_cast<NYdb::TStatus>(result) << Endl; @@ -1052,6 +1079,9 @@ class TClientCommandServerBase : public TClientCommand { nodeInfo->SetAddress(node.Address); nodeInfo->SetExpire(node.Expire); CopyNodeLocation(nodeInfo->MutableLocation(), node.Location); + if (result.HasNodeName()) { + nodeInfo->SetName(result.GetNodeName()); + } } else { auto &info = *nsConfig.AddNode(); info.SetNodeId(node.NodeId); diff --git a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp index 83c354bf464e..03a92dd24bf4 100644 --- a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp +++ b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp @@ -2116,7 +2116,7 @@ void TKqpServiceInitializer::InitializeServices(NActors::TActorSystemSetup* setu auto kqpProxySharedResources = std::make_shared<NKqp::TKqpProxySharedResources>(); - // Crate resource manager + // Create resource manager auto rm = NKqp::CreateKqpResourceManagerActor(Config.GetTableServiceConfig().GetResourceManager(), nullptr, {}, kqpProxySharedResources); setup->LocalServices.push_back(std::make_pair( diff --git a/ydb/core/driver_lib/run/run.cpp b/ydb/core/driver_lib/run/run.cpp index bfd467224554..ae912fd513ae 100644 --- a/ydb/core/driver_lib/run/run.cpp +++ b/ydb/core/driver_lib/run/run.cpp @@ -1075,6 +1075,10 @@ void TKikimrRunner::InitializeAppData(const TKikimrRunConfig& runConfig) AppData->TenantName = runConfig.TenantName; + if (runConfig.AppConfig.GetDynamicNodeConfig().GetNodeInfo().HasName()) { + AppData->NodeName = runConfig.AppConfig.GetDynamicNodeConfig().GetNodeInfo().GetName(); + } + if (runConfig.AppConfig.HasBootstrapConfig()) { AppData->BootstrapConfig = runConfig.AppConfig.GetBootstrapConfig(); } diff --git a/ydb/core/grpc_services/rpc_node_registration.cpp b/ydb/core/grpc_services/rpc_node_registration.cpp index bb3705efe928..b1d7ad069804 100644 --- a/ydb/core/grpc_services/rpc_node_registration.cpp +++ b/ydb/core/grpc_services/rpc_node_registration.cpp @@ -106,6 +106,9 @@ class TNodeRegistrationRPC : public TActorBootstrapped<TNodeRegistrationRPC> { auto request = TEvNodeRegistrationRequest::GetProtoRequest(Request); Result.set_node_id(rec.GetNode().GetNodeId()); + if (rec.GetNode().HasName()) { + Result.set_node_name(rec.GetNode().GetName()); + } Result.set_expire(rec.GetNode().GetExpire()); Result.set_domain_path(request->domain_path()); CopyNodeInfo(Result.add_nodes(), rec.GetNode()); diff --git a/ydb/core/mind/hive/hive_impl.cpp b/ydb/core/mind/hive/hive_impl.cpp index a866ea08e3e4..0b253a44cb3a 100644 --- a/ydb/core/mind/hive/hive_impl.cpp +++ b/ydb/core/mind/hive/hive_impl.cpp @@ -1974,6 +1974,9 @@ void THive::Handle(TEvHive::TEvRequestHiveNodeStats::TPtr& ev) { if (!node.ServicedDomains.empty()) { nodeStats.MutableNodeDomain()->CopyFrom(node.ServicedDomains.front()); } + if (!node.Name.empty()) { + nodeStats.SetNodeName(node.Name); + } if (request.GetReturnExtendedTabletInfo()) { if (request.HasFilterTabletsByPathId()) { auto itTabletsOfObject = node.TabletsOfObject.find({request.GetFilterTabletsBySchemeShardId(), request.GetFilterTabletsByPathId()}); diff --git a/ydb/core/mind/hive/hive_schema.h b/ydb/core/mind/hive/hive_schema.h index 56437f392639..eb54b30675b9 100644 --- a/ydb/core/mind/hive/hive_schema.h +++ b/ydb/core/mind/hive/hive_schema.h @@ -192,9 +192,10 @@ struct Schema : NIceDb::Schema { struct Drain : Column<6, NScheme::NTypeIds::Bool> { static constexpr bool Default = false; }; struct DrainInitiators : Column<8, NScheme::NTypeIds::String> { using Type = TVector<TActorId>; }; struct Location : Column<9, NScheme::NTypeIds::String> { using Type = NActorsInterconnect::TNodeLocation; }; + struct Name : Column<10, NScheme::NTypeIds::String> {}; using TKey = TableKey<ID>; - using TColumns = TableColumns<ID, Local, Down, Freeze, ServicedDomains, Statistics, Drain, DrainInitiators, Location>; + using TColumns = TableColumns<ID, Local, Down, Freeze, ServicedDomains, Statistics, Drain, DrainInitiators, Location, Name>; }; struct TabletCategory : Table<6> { diff --git a/ydb/core/mind/hive/node_info.h b/ydb/core/mind/hive/node_info.h index 34571e9cd4bf..308a5ec603f2 100644 --- a/ydb/core/mind/hive/node_info.h +++ b/ydb/core/mind/hive/node_info.h @@ -60,6 +60,7 @@ struct TNodeInfo { THashSet<TLeaderTabletInfo*> LockedTablets; mutable TInstant LastResourceChangeReaction; NKikimrHive::TNodeStatistics Statistics; + TString Name; TNodeInfo(TNodeId nodeId, THive& hive); TNodeInfo(const TNodeInfo&) = delete; diff --git a/ydb/core/mind/hive/tx__load_everything.cpp b/ydb/core/mind/hive/tx__load_everything.cpp index 9b8b05ae9b12..778911f5f465 100644 --- a/ydb/core/mind/hive/tx__load_everything.cpp +++ b/ydb/core/mind/hive/tx__load_everything.cpp @@ -314,6 +314,7 @@ class TTxLoadEverything : public TTransactionBase<THive> { node.DrainInitiators = nodeRowset.GetValueOrDefault<Schema::Node::DrainInitiators>(); node.ServicedDomains = nodeRowset.GetValueOrDefault<Schema::Node::ServicedDomains>(); node.Statistics = nodeRowset.GetValueOrDefault<Schema::Node::Statistics>(); + node.Name = nodeRowset.GetValueOrDefault<Schema::Node::Name>(); if (nodeRowset.HaveValue<Schema::Node::Location>()) { auto location = nodeRowset.GetValue<Schema::Node::Location>(); if (location.HasDataCenter()) { diff --git a/ydb/core/mind/hive/tx__register_node.cpp b/ydb/core/mind/hive/tx__register_node.cpp index 941c0dce6580..f471a13ba5d0 100644 --- a/ydb/core/mind/hive/tx__register_node.cpp +++ b/ydb/core/mind/hive/tx__register_node.cpp @@ -41,7 +41,14 @@ class TTxRegisterNode : public TTransactionBase<THive> { } else { Sort(servicedDomains); } - db.Table<Schema::Node>().Key(nodeId).Update<Schema::Node::Local, Schema::Node::ServicedDomains, Schema::Node::Statistics>(Local, servicedDomains, node.Statistics); + const TString& name = Record.GetName(); + db.Table<Schema::Node>().Key(nodeId).Update( + NIceDb::TUpdate<Schema::Node::Local>(Local), + NIceDb::TUpdate<Schema::Node::ServicedDomains>(servicedDomains), + NIceDb::TUpdate<Schema::Node::Statistics>(node.Statistics), + NIceDb::TUpdate<Schema::Node::Name>(name) + ); + node.BecomeDisconnected(); if (node.LastSeenServicedDomains != servicedDomains) { // new tenant - new rules @@ -52,6 +59,7 @@ class TTxRegisterNode : public TTransactionBase<THive> { node.Local = Local; node.ServicedDomains.swap(servicedDomains); node.LastSeenServicedDomains = node.ServicedDomains; + node.Name = name; } if (Record.HasSystemLocation() && Record.GetSystemLocation().HasDataCenter()) { node.Location = TNodeLocation(Record.GetSystemLocation()); diff --git a/ydb/core/mind/local.cpp b/ydb/core/mind/local.cpp index c0aaaa639571..3cff2d44b973 100644 --- a/ydb/core/mind/local.cpp +++ b/ydb/core/mind/local.cpp @@ -199,6 +199,9 @@ class TLocalNodeRegistrar : public TActorBootstrapped<TLocalNodeRegistrar> { } tabletAvailability->SetPriority(tabletInfo.Priority); } + if (const TString& nodeName = AppData(ctx)->NodeName; !nodeName.Empty()) { + request->Record.SetName(nodeName); + } NTabletPipe::SendData(ctx, HivePipeClient, request.Release()); diff --git a/ydb/core/mind/node_broker.cpp b/ydb/core/mind/node_broker.cpp index d3aa1a9b279c..3dc8c47d18e0 100644 --- a/ydb/core/mind/node_broker.cpp +++ b/ydb/core/mind/node_broker.cpp @@ -67,6 +67,8 @@ void TNodeBroker::OnActivateExecutor(const TActorContext &ctx) MinDynamicId = Max(MaxStaticId + 1, (ui64)Min(appData->DynamicNameserviceConfig->MinDynamicNodeId, TActorId::MaxNodeId)); MaxDynamicId = Max(MinDynamicId, (ui64)Min(appData->DynamicNameserviceConfig->MaxDynamicNodeId, TActorId::MaxNodeId)); + EnableStableNodeNames = appData->FeatureFlags.GetEnableStableNodeNames(); + ClearState(); ProcessTx(CreateTxInitScheme(), ctx); @@ -108,6 +110,7 @@ bool TNodeBroker::OnRenderAppHtmlPage(NMon::TEvRemoteHttpInfo::TPtr ev, << " MaxStaticNodeId: " << AppData(ctx)->DynamicNameserviceConfig->MaxStaticNodeId << Endl << " MaxDynamicNodeId: " << AppData(ctx)->DynamicNameserviceConfig->MaxDynamicNodeId << Endl << " EpochDuration: " << EpochDuration << Endl + << " StableNodeNamePrefix: " << StableNodeNamePrefix << Endl << " BannedIds:"; for (auto &pr : BannedIds) str << " [" << pr.first << ", " << pr.second << "]"; @@ -128,11 +131,38 @@ bool TNodeBroker::OnRenderAppHtmlPage(NMon::TEvRemoteHttpInfo::TPtr ev, << " Location: " << node.Location.ToString() << Endl << " Lease: " << node.Lease << Endl << " Expire: " << node.ExpirationString() << Endl - << " AuthorizedByCertificate: " << (node.AuthorizedByCertificate ? "true" : "false") << Endl; + << " AuthorizedByCertificate: " << (node.AuthorizedByCertificate ? "true" : "false") << Endl + << " ServicedSubDomain: " << node.ServicedSubDomain << Endl + << " SlotIndex: " << node.SlotIndex << Endl; } str << Endl; str << "Free Node IDs count: " << FreeIds.Count() << Endl; + + str << Endl; + str << "Slot Indexes Pools usage: " << Endl; + size_t totalSize = 0; + size_t totalCapacity = 0; + for (const auto &[subdomainKey, slotIndexesPool] : SlotIndexesPools) { + const size_t size = slotIndexesPool.Size(); + totalSize += size; + const size_t capacity = slotIndexesPool.Capacity(); + totalCapacity += capacity; + const double usagePercent = floor(size * 100.0 / capacity); + str << " " << subdomainKey + << " = " << usagePercent << "% (" << size << " of " << capacity << ")" + << Endl; + } + str << Endl; + + if (totalCapacity > 0) { + const double totalUsagePercent = floor(totalSize * 100.0 / totalCapacity); + str << " Total" + << " = " << totalUsagePercent << "% (" << totalSize << " of " << totalCapacity << ")" + << Endl; + } else { + str << " No Slot Indexes Pools" << Endl; + } } } @@ -162,11 +192,15 @@ void TNodeBroker::ClearState() Hosts.clear(); RecomputeFreeIds(); + RecomputeSlotIndexesPools(); } void TNodeBroker::AddNode(const TNodeInfo &info) { FreeIds.Reset(info.NodeId); + if (info.SlotIndex.has_value()) { + SlotIndexesPools[info.ServicedSubDomain].Acquire(info.SlotIndex.value()); + } if (info.Expire > Epoch.Start) { LOG_DEBUG_S(TActorContext::AsActorContext(), NKikimrServices::NODE_BROKER, @@ -235,6 +269,24 @@ void TNodeBroker::RecomputeFreeIds() } } +void TNodeBroker::RecomputeSlotIndexesPools() +{ + for (auto &[_, slotIndexesPool] : SlotIndexesPools) { + slotIndexesPool.ReleaseAll(); + } + + for (const auto &[_, node] : Nodes) { + if (node.SlotIndex.has_value()) { + SlotIndexesPools[node.ServicedSubDomain].Acquire(node.SlotIndex.value()); + } + } + for (const auto &[_, node] : ExpiredNodes) { + if (node.SlotIndex.has_value()) { + SlotIndexesPools[node.ServicedSubDomain].Acquire(node.SlotIndex.value()); + } + } +} + bool TNodeBroker::IsBannedId(ui32 id) const { for (auto &pr : BannedIds) @@ -308,6 +360,16 @@ void TNodeBroker::FillNodeInfo(const TNodeInfo &node, info.SetAddress(node.Address); info.SetExpire(node.Expire.GetValue()); node.Location.Serialize(info.MutableLocation(), false); + FillNodeName(node.SlotIndex, info); +} + +void TNodeBroker::FillNodeName(const std::optional<ui32> &slotIndex, + NKikimrNodeBroker::TNodeInfo &info) const +{ + if (EnableStableNodeNames && slotIndex.has_value()) { + const TString name = TStringBuilder() << StableNodeNamePrefix << slotIndex.value(); + info.SetName(name); + } } void TNodeBroker::ComputeNextEpochDiff(TStateDiff &diff) @@ -348,9 +410,13 @@ void TNodeBroker::ApplyStateDiff(const TStateDiff &diff) LOG_DEBUG_S(TActorContext::AsActorContext(), NKikimrServices::NODE_BROKER, "Remove node " << it->second.IdString()); - ExpiredNodes.erase(it); - if (!IsBannedId(id) && NodeIdDomain(id) == DomainId && id >= MinDynamicId && id <= MaxDynamicId) + if (!IsBannedId(id) && NodeIdDomain(id) == DomainId && id >= MinDynamicId && id <= MaxDynamicId) { FreeIds.Set(id); + } + if (it->second.SlotIndex.has_value()) { + SlotIndexesPools[it->second.ServicedSubDomain].Release(it->second.SlotIndex.value()); + } + ExpiredNodes.erase(it); } LOG_DEBUG_S(TActorContext::AsActorContext(), NKikimrServices::NODE_BROKER, @@ -399,8 +465,9 @@ void TNodeBroker::AddNodeToEpochCache(const TNodeInfo &node) void TNodeBroker::SubscribeForConfigUpdates(const TActorContext &ctx) { - ui32 item = (ui32)NKikimrConsole::TConfigItem::NodeBrokerConfigItem; - NConsole::SubscribeViaConfigDispatcher(ctx, {item}, ctx.SelfID); + ui32 nodeBrokerItem = (ui32)NKikimrConsole::TConfigItem::NodeBrokerConfigItem; + ui32 featureFlagsItem = (ui32)NKikimrConsole::TConfigItem::FeatureFlagsItem; + NConsole::SubscribeViaConfigDispatcher(ctx, {nodeBrokerItem, featureFlagsItem}, ctx.SelfID); } void TNodeBroker::ProcessTx(ITransaction *tx, @@ -441,6 +508,8 @@ void TNodeBroker::LoadConfigFromProto(const NKikimrNodeBroker::TConfig &config) EpochDuration = MIN_LEASE_DURATION; } + StableNodeNamePrefix = config.GetStableNodeNamePrefix(); + BannedIds.clear(); for (auto &banned : config.GetBannedNodeIds()) BannedIds.emplace_back(banned.GetFrom(), banned.GetTo()); @@ -457,7 +526,9 @@ void TNodeBroker::DbAddNode(const TNodeInfo &node, << " dc=" << node.Location.GetDataCenterId() << " location=" << node.Location.ToString() << " lease=" << node.Lease - << " expire=" << node.ExpirationString()); + << " expire=" << node.ExpirationString() + << " servicedsubdomain=" << node.ServicedSubDomain + << " slotindex= " << node.SlotIndex); NIceDb::TNiceDb db(txc.DB); using T = Schema::Nodes; @@ -468,7 +539,16 @@ void TNodeBroker::DbAddNode(const TNodeInfo &node, .Update<T::Address>(node.Address) .Update<T::Lease>(node.Lease) .Update<T::Expire>(node.Expire.GetValue()) - .Update<T::Location>(node.Location.GetSerializedLocation()); + .Update<T::Location>(node.Location.GetSerializedLocation()) + .Update<T::ServicedSubDomain>(node.ServicedSubDomain); + + if (node.SlotIndex.has_value()) { + db.Table<T>().Key(node.NodeId) + .Update<T::SlotIndex>(node.SlotIndex.value()); + } else { + db.Table<T>().Key(node.NodeId) + .UpdateToNull<T::SlotIndex>(); + } } void TNodeBroker::DbApplyStateDiff(const TStateDiff &diff, @@ -615,7 +695,10 @@ bool TNodeBroker::DbLoadState(TTransactionContext &txc, info.Lease = nodesRowset.GetValue<T::Lease>(); info.Expire = expire; - + info.ServicedSubDomain = TSubDomainKey(nodesRowset.GetValueOrDefault<T::ServicedSubDomain>()); + if (nodesRowset.HaveValue<T::SlotIndex>()) { + info.SlotIndex = nodesRowset.GetValue<T::SlotIndex>(); + } AddNode(info); LOG_DEBUG_S(ctx, NKikimrServices::NODE_BROKER, @@ -731,7 +814,12 @@ void TNodeBroker::DbUpdateNodeLocation(const TNodeInfo &node, void TNodeBroker::Handle(TEvConsole::TEvConfigNotificationRequest::TPtr &ev, const TActorContext &ctx) -{ +{ + const auto& appConfig = ev->Get()->Record.GetConfig(); + if (appConfig.HasFeatureFlags()) { + EnableStableNodeNames = appConfig.GetFeatureFlags().GetEnableStableNodeNames(); + } + if (ev->Get()->Record.HasLocal() && ev->Get()->Record.GetLocal()) { ProcessTx(CreateTxUpdateConfig(ev), ctx); } else { @@ -801,6 +889,7 @@ void TNodeBroker::Handle(TEvNodeBroker::TEvRegistrationRequest::TPtr &ev, TEvNodeBroker::TEvRegistrationRequest::TPtr Ev; TNodeBroker *Self; NActors::TScopeId ScopeId; + TSubDomainKey ServicedSubDomain; public: static constexpr NKikimrServices::TActivity::EType ActorActivityType() { @@ -846,8 +935,9 @@ void TNodeBroker::Handle(TEvNodeBroker::TEvRegistrationRequest::TPtr &ev, } else { ScopeId = {response.DomainInfo->DomainKey.OwnerId, response.DomainInfo->DomainKey.LocalPathId}; } + ServicedSubDomain = TSubDomainKey(response.DomainInfo->DomainKey.OwnerId, response.DomainInfo->DomainKey.LocalPathId); } else { - LOG_WARN_S(ctx, NKikimrServices::NODE_BROKER, "Cannot resolve scope id" + LOG_WARN_S(ctx, NKikimrServices::NODE_BROKER, "Cannot resolve tenant" << ": request# " << Ev->Get()->Record.ShortDebugString() << ", response# " << response.ToString(*AppData()->TypeRegistry)); } @@ -860,11 +950,12 @@ void TNodeBroker::Handle(TEvNodeBroker::TEvRegistrationRequest::TPtr &ev, } void Finish(const TActorContext& ctx) { - LOG_TRACE_S(ctx, NKikimrServices::NODE_BROKER, "Finished resolving scope id" + LOG_TRACE_S(ctx, NKikimrServices::NODE_BROKER, "Finished resolving tenant" << ": request# " << Ev->Get()->Record.ShortDebugString() - << ": scope id# " << ScopeIdToString(ScopeId)); + << ": scope id# " << ScopeIdToString(ScopeId) + << ": serviced subdomain# " << ServicedSubDomain); - Self->ProcessTx(Self->CreateTxRegisterNode(Ev, ScopeId), ctx); + Self->ProcessTx(Self->CreateTxRegisterNode(Ev, ScopeId, ServicedSubDomain), ctx); Die(ctx); } diff --git a/ydb/core/mind/node_broker__register_node.cpp b/ydb/core/mind/node_broker__register_node.cpp index eee59591de03..1b4ea33e47b0 100644 --- a/ydb/core/mind/node_broker__register_node.cpp +++ b/ydb/core/mind/node_broker__register_node.cpp @@ -10,10 +10,12 @@ using namespace NKikimrNodeBroker; class TNodeBroker::TTxRegisterNode : public TTransactionBase<TNodeBroker> { public: - TTxRegisterNode(TNodeBroker *self, TEvNodeBroker::TEvRegistrationRequest::TPtr &ev, const NActors::TScopeId& scopeId) + TTxRegisterNode(TNodeBroker *self, TEvNodeBroker::TEvRegistrationRequest::TPtr &ev, + const NActors::TScopeId& scopeId, const TSubDomainKey& servicedSubDomain) : TBase(self) , Event(ev) , ScopeId(scopeId) + , ServicedSubDomain(servicedSubDomain) , NodeId(0) , ExtendLease(false) , FixNodeId(false) @@ -60,6 +62,12 @@ class TNodeBroker::TTxRegisterNode : public TTransactionBase<TNodeBroker> { ctx); } + if (Self->EnableStableNodeNames && rec.HasPath() && ServicedSubDomain == InvalidSubDomainKey) { + return Error(TStatus::ERROR, + TStringBuilder() << "Cannot resolve subdomain key for path " << rec.GetPath(), + ctx); + } + // Already registered? auto it = Self->Hosts.find(std::make_tuple(host, addr, port)); if (it != Self->Hosts.end()) { @@ -91,7 +99,21 @@ class TNodeBroker::TTxRegisterNode : public TTransactionBase<TNodeBroker> { ExtendLease = true; } node.AuthorizedByCertificate = rec.GetAuthorizedByCertificate(); - + + if (Self->EnableStableNodeNames) { + if (ServicedSubDomain != node.ServicedSubDomain) { + if (node.SlotIndex.has_value()) { + Self->SlotIndexesPools[node.ServicedSubDomain].Release(node.SlotIndex.value()); + } + node.ServicedSubDomain = ServicedSubDomain; + node.SlotIndex = Self->SlotIndexesPools[node.ServicedSubDomain].AcquireLowestFreeIndex(); + Self->DbAddNode(node, txc); + } else if (!node.SlotIndex.has_value()) { + node.SlotIndex = Self->SlotIndexesPools[node.ServicedSubDomain].AcquireLowestFreeIndex(); + Self->DbAddNode(node, txc); + } + } + Response->Record.MutableStatus()->SetCode(TStatus::OK); Self->FillNodeInfo(node, *Response->Record.MutableNode()); @@ -109,6 +131,11 @@ class TNodeBroker::TTxRegisterNode : public TTransactionBase<TNodeBroker> { Node->Lease = 1; Node->Expire = expire; + if (Self->EnableStableNodeNames) { + Node->ServicedSubDomain = ServicedSubDomain; + Node->SlotIndex = Self->SlotIndexesPools[Node->ServicedSubDomain].AcquireLowestFreeIndex(); + } + Response->Record.MutableStatus()->SetCode(TStatus::OK); Self->DbAddNode(*Node, txc); @@ -151,6 +178,7 @@ class TNodeBroker::TTxRegisterNode : public TTransactionBase<TNodeBroker> { private: TEvNodeBroker::TEvRegistrationRequest::TPtr Event; const NActors::TScopeId ScopeId; + const TSubDomainKey ServicedSubDomain; TAutoPtr<TEvNodeBroker::TEvRegistrationResponse> Response; THolder<TNodeInfo> Node; ui32 NodeId; @@ -158,9 +186,11 @@ class TNodeBroker::TTxRegisterNode : public TTransactionBase<TNodeBroker> { bool FixNodeId; }; -ITransaction *TNodeBroker::CreateTxRegisterNode(TEvNodeBroker::TEvRegistrationRequest::TPtr &ev, const NActors::TScopeId& scopeId) +ITransaction *TNodeBroker::CreateTxRegisterNode(TEvNodeBroker::TEvRegistrationRequest::TPtr &ev, + const NActors::TScopeId& scopeId, + const TSubDomainKey& servicedSubDomain) { - return new TTxRegisterNode(this, ev, scopeId); + return new TTxRegisterNode(this, ev, scopeId, servicedSubDomain); } } // NNodeBroker diff --git a/ydb/core/mind/node_broker__scheme.h b/ydb/core/mind/node_broker__scheme.h index 5c0cdeb8c541..ab988f97ae19 100644 --- a/ydb/core/mind/node_broker__scheme.h +++ b/ydb/core/mind/node_broker__scheme.h @@ -2,6 +2,7 @@ #include "defs.h" +#include <ydb/core/base/subdomain.h> #include <ydb/core/scheme/scheme_types_defs.h> #include <ydb/core/tablet_flat/flat_cxx_database.h> @@ -22,9 +23,22 @@ struct Schema : NIceDb::Schema { struct Lease : Column<10, NScheme::NTypeIds::Uint32> {}; struct Expire : Column<11, NScheme::NTypeIds::Uint64> {}; struct Location : Column<12, NScheme::NTypeIds::String> {}; + struct ServicedSubDomain : Column<13, NScheme::NTypeIds::String> { using Type = NKikimrSubDomains::TDomainKey; }; + struct SlotIndex : Column<14, NScheme::NTypeIds::Uint32> {}; using TKey = TableKey<ID>; - using TColumns = TableColumns<ID, Host, Port, ResolveHost, Address, Lease, Expire, Location>; + using TColumns = TableColumns< + ID, + Host, + Port, + ResolveHost, + Address, + Lease, + Expire, + Location, + ServicedSubDomain, + SlotIndex + >; }; struct Config : Table<2> { diff --git a/ydb/core/mind/node_broker_impl.h b/ydb/core/mind/node_broker_impl.h index 28d983d14397..57e578e55bbf 100644 --- a/ydb/core/mind/node_broker_impl.h +++ b/ydb/core/mind/node_broker_impl.h @@ -1,8 +1,10 @@ #pragma once #include "node_broker.h" +#include "slot_indexes_pool.h" #include <ydb/core/base/tablet_pipe.h> +#include <ydb/core/base/subdomain.h> #include <ydb/core/cms/console/console.h> #include <ydb/core/cms/console/configs_dispatcher.h> #include <ydb/core/cms/console/tx_processor.h> @@ -114,6 +116,8 @@ class TNodeBroker : public TActor<TNodeBroker> ui32 Lease; TInstant Expire; bool AuthorizedByCertificate = false; + std::optional<ui32> SlotIndex; + TSubDomainKey ServicedSubDomain; }; // State changes to apply while moving to the next epoch. @@ -134,7 +138,9 @@ class TNodeBroker : public TActor<TNodeBroker> ITransaction *CreateTxExtendLease(TEvNodeBroker::TEvExtendLeaseRequest::TPtr &ev); ITransaction *CreateTxInitScheme(); ITransaction *CreateTxLoadState(); - ITransaction *CreateTxRegisterNode(TEvNodeBroker::TEvRegistrationRequest::TPtr &ev, const NActors::TScopeId& scopeId); + ITransaction *CreateTxRegisterNode(TEvNodeBroker::TEvRegistrationRequest::TPtr &ev, + const NActors::TScopeId& scopeId, + const TSubDomainKey& servicedSubDomain); ITransaction *CreateTxUpdateConfig(TEvConsole::TEvConfigNotificationRequest::TPtr &ev); ITransaction *CreateTxUpdateConfig(TEvNodeBroker::TEvSetConfigRequest::TPtr &ev); ITransaction *CreateTxUpdateConfigSubscription(TEvConsole::TEvReplaceConfigSubscriptionsResponse::TPtr &ev); @@ -220,6 +226,7 @@ class TNodeBroker : public TActor<TNodeBroker> void ExtendLease(TNodeInfo &node); void FixNodeId(TNodeInfo &node); void RecomputeFreeIds(); + void RecomputeSlotIndexesPools(); bool IsBannedId(ui32 id) const; void AddDelayedListNodesRequest(ui64 epoch, @@ -230,6 +237,8 @@ class TNodeBroker : public TActor<TNodeBroker> void ScheduleEpochUpdate(const TActorContext &ctx); void FillNodeInfo(const TNodeInfo &node, NKikimrNodeBroker::TNodeInfo &info) const; + void FillNodeName(const std::optional<ui32> &slotIndex, + NKikimrNodeBroker::TNodeInfo &info) const; void ComputeNextEpochDiff(TStateDiff &diff); void ApplyStateDiff(const TStateDiff &diff); @@ -306,6 +315,9 @@ class TNodeBroker : public TActor<TNodeBroker> THashMap<std::tuple<TString, TString, ui16>, ui32> Hosts; // Bitmap with free Node IDs (with no lower 5 bits). TDynBitMap FreeIds; + // Maps tenant to its slot indexes pool. + std::unordered_map<TSubDomainKey, TSlotIndexesPool, THash<TSubDomainKey>> SlotIndexesPools; + bool EnableStableNodeNames = false; // Epoch info. TEpochInfo Epoch; // Current config. @@ -316,6 +328,7 @@ class TNodeBroker : public TActor<TNodeBroker> TDuration EpochDuration; TVector<std::pair<ui32, ui32>> BannedIds; ui64 ConfigSubscriptionId; + TString StableNodeNamePrefix; // Events collected during initialization phase. TMultiMap<ui64, TEvNodeBroker::TEvListNodes::TPtr> DelayedListNodesRequests; @@ -333,6 +346,7 @@ class TNodeBroker : public TActor<TNodeBroker> , TTabletExecutedFlat(info, tablet, new NMiniKQL::TMiniKQLFactory) , EpochDuration(TDuration::Hours(1)) , ConfigSubscriptionId(0) + , StableNodeNamePrefix("slot-") , TxProcessor(new TTxProcessor(*this, "root", NKikimrServices::NODE_BROKER)) { } diff --git a/ydb/core/mind/node_broker_ut.cpp b/ydb/core/mind/node_broker_ut.cpp index ec7c10c64fdf..bfe0524fc1c8 100644 --- a/ydb/core/mind/node_broker_ut.cpp +++ b/ydb/core/mind/node_broker_ut.cpp @@ -174,8 +174,10 @@ void SetupServices(TTestActorRuntime &runtime, auto dnConfig = runtime.GetAppData().DynamicNameserviceConfig; dnConfig->MaxStaticNodeId = 1023; dnConfig->MinDynamicNodeId = 1024; + dnConfig->MaxDynamicNodeId = 1024 + (singleDomainMode ? (maxDynNodes - 1) : 32 * (maxDynNodes - 1)); runtime.GetAppData().FeatureFlags.SetEnableNodeBrokerSingleDomainMode(singleDomainMode); + runtime.GetAppData().FeatureFlags.SetEnableStableNodeNames(true); if (!runtime.IsRealThreads()) { TDispatchOptions options; @@ -227,7 +229,8 @@ void SetBannedIds(TTestActorRuntime& runtime, void Setup(TTestActorRuntime& runtime, ui32 maxDynNodes = 3, - bool singleDomainMode = false) + bool singleDomainMode = false, + const TVector<TString>& databases = {}) { using namespace NMalloc; TMallocInfo mallocInfo = MallocInfo(); @@ -243,6 +246,30 @@ void Setup(TTestActorRuntime& runtime, SetupLogging(runtime); SetupServices(runtime, maxDynNodes, singleDomainMode); + + TActorId sender = runtime.AllocateEdgeActor(); + ui32 txId = 100; + for (const auto& database : databases) { + auto splittedPath = SplitPath(database); + const auto databaseName = splittedPath.back(); + splittedPath.pop_back(); + do { + auto modifyScheme = MakeHolder<NSchemeShard::TEvSchemeShard::TEvModifySchemeTransaction>(); + modifyScheme->Record.SetTxId(++txId); + auto* transaction = modifyScheme->Record.AddTransaction(); + transaction->SetWorkingDir(CanonizePath(splittedPath)); + transaction->SetOperationType(NKikimrSchemeOp::ESchemeOpCreateExtSubDomain); + auto* subdomain = transaction->MutableSubDomain(); + subdomain->SetName(databaseName); + runtime.SendToPipe(TTestTxConfig::SchemeShard, sender, modifyScheme.Release()); + TAutoPtr<IEventHandle> handle; + auto reply = runtime.GrabEdgeEventRethrow<NSchemeShard::TEvSchemeShard::TEvModifySchemeTransactionResult>(handle, TDuration::MilliSeconds(100)); + if (reply) { + UNIT_ASSERT_VALUES_EQUAL(reply->Record.GetStatus(), NKikimrScheme::EStatus::StatusAccepted); + break; + } + } while (true); + } } bool IsTabletActiveEvent(IEventHandle& ev) @@ -298,7 +325,8 @@ void CheckRegistration(TTestActorRuntime &runtime, ui64 expire = 0, bool fixed = false, const TString &path = DOMAIN_NAME, - const TMaybe<TKikimrScopeId> &scopeId = {}) + const TMaybe<TKikimrScopeId> &scopeId = {}, + const TString &name = "") { auto event = MakeRegistrationRequest(host, port, resolveHost, address, path, dc, room, rack, body, fixed); runtime.SendToPipe(MakeNodeBrokerID(0), sender, event.Release(), 0, GetPipeConfigWithRetries()); @@ -326,9 +354,26 @@ void CheckRegistration(TTestActorRuntime &runtime, UNIT_ASSERT_VALUES_EQUAL(rec.GetScopeTabletId(), scopeId->GetSchemeshardId()); UNIT_ASSERT_VALUES_EQUAL(rec.GetScopePathId(), scopeId->GetPathItemId()); } + if (name) { + UNIT_ASSERT_VALUES_EQUAL(rec.GetNode().GetName(), name); + } } } +void CheckRegistration(TTestActorRuntime &runtime, + TActorId sender, + const TString &host, + ui16 port, + const TString &path, + TStatus::ECode code = TStatus::OK, + ui32 nodeId = 0, + ui64 expire = 0, + const TString &name = "") +{ + CheckRegistration(runtime, sender, host, port, host, "", 0, 0, 0, 0, code, nodeId, expire, + false, path, Nothing(), name); +} + NKikimrNodeBroker::TEpoch GetEpoch(TTestActorRuntime &runtime, TActorId sender) { @@ -1373,6 +1418,152 @@ Y_UNIT_TEST_SUITE(TNodeBrokerTest) { epoch.GetNextEnd(), false, "/dc-1/ServerlessDB", sharedScopeId); } + + static constexpr ui32 NODE1 = 1024; + static constexpr ui32 NODE2 = 1056; + static constexpr ui32 NODE3 = 1088; + static constexpr ui32 NODE4 = 1120; + + Y_UNIT_TEST(NodeNameExpiration) + { + TTestBasicRuntime runtime(8, false); + Setup(runtime, 4, false, { "/dc-1/my-database" }); + TActorId sender = runtime.AllocateEdgeActor(); + + auto epoch = GetEpoch(runtime, sender); + + // Register nodes for my-database + CheckRegistration(runtime, sender, "host1", 19001, "/dc-1/my-database", + TStatus::OK, NODE1, epoch.GetNextEnd(), "slot-0"); + CheckRegistration(runtime, sender, "host2", 19001, "/dc-1/my-database", + TStatus::OK, NODE2, epoch.GetNextEnd(), "slot-1"); + CheckRegistration(runtime, sender, "host3", 19001, "/dc-1/my-database", + TStatus::OK, NODE3, epoch.GetNextEnd(), "slot-2"); + + // Wait until epoch expiration + epoch = WaitForEpochUpdate(runtime, sender); + + // Extend lease for NODE1 and NODE3 + CheckLeaseExtension(runtime, sender, NODE1, TStatus::OK, epoch); + CheckLeaseExtension(runtime, sender, NODE3, TStatus::OK, epoch); + + // After this epoch update NODE2 is expired, but stil holds name + epoch = WaitForEpochUpdate(runtime, sender); + + // Extend lease for NODE1 and NODE3 + CheckLeaseExtension(runtime, sender, NODE1, TStatus::OK, epoch); + CheckLeaseExtension(runtime, sender, NODE3, TStatus::OK, epoch); + + // Register one more node + CheckRegistration(runtime, sender, "host4", 19001, "/dc-1/my-database", + TStatus::OK, NODE4, epoch.GetNextEnd(), "slot-3"); + + // After this epoch update NODE2 is removed and name is free + epoch = WaitForEpochUpdate(runtime, sender); + + // Register node using new host, it reuses name + CheckRegistration(runtime, sender, "host5", 19001, "/dc-1/my-database", + TStatus::OK, NODE2, epoch.GetNextEnd(), "slot-1"); + } + + Y_UNIT_TEST(NodeNameReuseRestart) + { + TTestBasicRuntime runtime(8, false); + Setup(runtime, 4, false, { "/dc-1/my-database" }); + TActorId sender = runtime.AllocateEdgeActor(); + + auto epoch = GetEpoch(runtime, sender); + + // Register nodes for my-database + CheckRegistration(runtime, sender, "host1", 19001, "/dc-1/my-database", + TStatus::OK, NODE1, epoch.GetNextEnd(), "slot-0"); + CheckRegistration(runtime, sender, "host2", 19001, "/dc-1/my-database", + TStatus::OK, NODE2, epoch.GetNextEnd(), "slot-1"); + + // Restart + CheckRegistration(runtime, sender, "host1", 19001, "/dc-1/my-database", + TStatus::OK, NODE1, epoch.GetNextEnd(), "slot-0"); + CheckRegistration(runtime, sender, "host2", 19001, "/dc-1/my-database", + TStatus::OK, NODE2, epoch.GetNextEnd(), "slot-1"); + + // One more restart with different order + CheckRegistration(runtime, sender, "host2", 19001, "/dc-1/my-database", + TStatus::OK, NODE2, epoch.GetNextEnd(), "slot-1"); + CheckRegistration(runtime, sender, "host1", 19001, "/dc-1/my-database", + TStatus::OK, NODE1, epoch.GetNextEnd(), "slot-0"); + } + + Y_UNIT_TEST(NodeNameReuseRestartWithHostChanges) + { + TTestBasicRuntime runtime(8, false); + Setup(runtime, 4, false, { "/dc-1/my-database" }); + TActorId sender = runtime.AllocateEdgeActor(); + + auto epoch = GetEpoch(runtime, sender); + + // Register nodes for my-database + CheckRegistration(runtime, sender, "host1", 19001, "/dc-1/my-database", + TStatus::OK, NODE1, epoch.GetNextEnd(), "slot-0"); + CheckRegistration(runtime, sender, "host2", 19001, "/dc-1/my-database", + TStatus::OK, NODE2, epoch.GetNextEnd(), "slot-1"); + + // Restart that caused the hosts to change + CheckRegistration(runtime, sender, "host3", 19001, "/dc-1/my-database", + TStatus::OK, NODE3, epoch.GetNextEnd(), "slot-2"); + CheckRegistration(runtime, sender, "host4", 19001, "/dc-1/my-database", + TStatus::OK, NODE4, epoch.GetNextEnd(), "slot-3"); + + // Wait until epoch expiration + epoch = WaitForEpochUpdate(runtime, sender); + + CheckLeaseExtension(runtime, sender, NODE3, TStatus::OK, epoch); + CheckLeaseExtension(runtime, sender, NODE4, TStatus::OK, epoch); + + // After this epoch update NODE1 and NODE2 are expired, but stil hold names + epoch = WaitForEpochUpdate(runtime, sender); + + CheckLeaseExtension(runtime, sender, NODE3, TStatus::OK, epoch); + CheckLeaseExtension(runtime, sender, NODE4, TStatus::OK, epoch); + + // After this epoch update NODE1 and NODE2 are removed + epoch = WaitForEpochUpdate(runtime, sender); + + // One more restart that caused the hosts to change + CheckRegistration(runtime, sender, "host5", 19001, "/dc-1/my-database", + TStatus::OK, NODE1, epoch.GetNextEnd(), "slot-0"); + CheckRegistration(runtime, sender, "host6", 19001, "/dc-1/my-database", + TStatus::OK, NODE2, epoch.GetNextEnd(), "slot-1"); + } + + Y_UNIT_TEST(NodeNameWithDifferentTenants) + { + TTestBasicRuntime runtime(8, false); + + Setup(runtime, 4, false, { "/dc-1/my-database" , "/dc-1/yet-another-database" }); + TActorId sender = runtime.AllocateEdgeActor(); + + auto epoch = GetEpoch(runtime, sender); + + // Register nodes for my-database + CheckRegistration(runtime, sender, "host1", 19001, "/dc-1/my-database", + TStatus::OK, NODE1, epoch.GetNextEnd(), "slot-0"); + CheckRegistration(runtime, sender, "host2", 19001, "/dc-1/my-database", + TStatus::OK, NODE2, epoch.GetNextEnd(), "slot-1"); + + // Register node for yet-another-database + CheckRegistration(runtime, sender, "host3", 19001, "/dc-1/yet-another-database", + TStatus::OK, NODE3, epoch.GetNextEnd(), "slot-0"); + // Restart NODE1 to serve yet-another-database + CheckRegistration(runtime, sender, "host1", 19001, "/dc-1/yet-another-database", + TStatus::OK, NODE1, epoch.GetNextEnd(), "slot-1"); + + // Register one more node for my-database + CheckRegistration(runtime, sender, "host4", 19001, "/dc-1/my-database", + TStatus::OK, NODE4, epoch.GetNextEnd(), "slot-0"); + // Restart NODE1 to serve my-database + CheckRegistration(runtime, sender, "host1", 19001, "/dc-1/my-database", + TStatus::OK, NODE1, epoch.GetNextEnd(), "slot-2"); + } } Y_UNIT_TEST_SUITE(TDynamicNameserverTest) { @@ -1530,4 +1721,95 @@ Y_UNIT_TEST_SUITE(TDynamicNameserverTest) { } } +Y_UNIT_TEST_SUITE(TSlotIndexesPoolTest) { + Y_UNIT_TEST(Init) + { + TSlotIndexesPool pool; + UNIT_ASSERT_VALUES_EQUAL(pool.Size(), 0); + UNIT_ASSERT_VALUES_EQUAL(pool.Capacity(), 64); + + for (size_t i = 0; i < pool.Capacity(); ++i) { + UNIT_ASSERT(!pool.IsAcquired(i)); + } + } + + Y_UNIT_TEST(Basic) + { + TSlotIndexesPool pool; + + pool.Acquire(10); + UNIT_ASSERT(pool.IsAcquired(10)); + + pool.Acquire(45); + UNIT_ASSERT(pool.IsAcquired(45)); + + pool.AcquireLowestFreeIndex(); + UNIT_ASSERT(pool.IsAcquired(0)); + + pool.AcquireLowestFreeIndex(); + UNIT_ASSERT(pool.IsAcquired(1)); + + pool.Release(0); + UNIT_ASSERT(!pool.IsAcquired(0)); + + pool.AcquireLowestFreeIndex(); + UNIT_ASSERT(pool.IsAcquired(0)); + + UNIT_ASSERT_VALUES_EQUAL(pool.Size(), 4); + UNIT_ASSERT_VALUES_EQUAL(pool.Capacity(), 64); + + pool.ReleaseAll(); + UNIT_ASSERT_VALUES_EQUAL(pool.Size(), 0); + UNIT_ASSERT_VALUES_EQUAL(pool.Capacity(), 64); + } + + Y_UNIT_TEST(Expansion) + { + TSlotIndexesPool pool; + for (size_t i = 0; i < pool.Capacity(); ++i) { + pool.Acquire(i); + } + UNIT_ASSERT_VALUES_EQUAL(pool.Size(), 64); + UNIT_ASSERT_VALUES_EQUAL(pool.Capacity(), 64); + + pool.AcquireLowestFreeIndex(); + + UNIT_ASSERT_VALUES_EQUAL(pool.Size(), 65); + UNIT_ASSERT_VALUES_EQUAL(pool.Capacity(), 192); + for (size_t i = pool.Size(); i < pool.Capacity(); ++i) { + UNIT_ASSERT(!pool.IsAcquired(i)); + } + } + + Y_UNIT_TEST(Ranges) + { + TSlotIndexesPool pool; + + pool.Acquire(63); + UNIT_ASSERT_VALUES_EQUAL(pool.Size(), 1); + UNIT_ASSERT_VALUES_EQUAL(pool.Capacity(), 64); + + pool.Release(63); + UNIT_ASSERT_VALUES_EQUAL(pool.Size(), 0); + UNIT_ASSERT_VALUES_EQUAL(pool.Capacity(), 64); + + pool.Acquire(64); + UNIT_ASSERT_VALUES_EQUAL(pool.Size(), 1); + UNIT_ASSERT_VALUES_EQUAL(pool.Capacity(), 128); + + for (size_t i = 0; i < pool.Capacity(); ++i) { + if (i == 64) { + UNIT_ASSERT(pool.IsAcquired(i)); + } else { + UNIT_ASSERT(!pool.IsAcquired(i)); + } + } + + pool.Release(128); + pool.Release(200); + UNIT_ASSERT_VALUES_EQUAL(pool.Size(), 1); + UNIT_ASSERT_VALUES_EQUAL(pool.Capacity(), 128); + } +} + } // NKikimr diff --git a/ydb/core/mind/slot_indexes_pool.cpp b/ydb/core/mind/slot_indexes_pool.cpp new file mode 100644 index 000000000000..c61c77d33c2a --- /dev/null +++ b/ydb/core/mind/slot_indexes_pool.cpp @@ -0,0 +1,54 @@ +#include "slot_indexes_pool.h" + +namespace NKikimr::NNodeBroker { + +static constexpr size_t EXPAND_SIZE = 128; + +TSlotIndexesPool::TSlotIndexesPool() { + FreeIndexes.Flip(); +} + +void TSlotIndexesPool::Acquire(size_t index) { + if (index >= FreeIndexes.Size()) { + size_t oldSize = FreeIndexes.Size(); + FreeIndexes.Reserve(index + 1); + FreeIndexes.Set(oldSize, FreeIndexes.Size()); + } + FreeIndexes.Reset(index); +} + +size_t TSlotIndexesPool::AcquireLowestFreeIndex() { + if (FreeIndexes.Empty()) { + size_t oldSize = FreeIndexes.Size(); + FreeIndexes.Reserve(FreeIndexes.Size() + EXPAND_SIZE); + FreeIndexes.Set(oldSize, FreeIndexes.Size()); + } + size_t index = FreeIndexes.FirstNonZeroBit(); + FreeIndexes.Reset(index); + return index; +} + +bool TSlotIndexesPool::IsAcquired(size_t index) const { + return !FreeIndexes.Test(index); +} + +void TSlotIndexesPool::Release(size_t index) { + if (index < FreeIndexes.Size()) { + FreeIndexes.Set(index); + } +} + +void TSlotIndexesPool::ReleaseAll() { + FreeIndexes.Clear(); + FreeIndexes.Flip(); +} + +size_t TSlotIndexesPool::Capacity() const { + return FreeIndexes.Size(); +} + +size_t TSlotIndexesPool::Size() const { + return FreeIndexes.Size() - FreeIndexes.Count(); +} + +} // NKikimr::NNodeBroker diff --git a/ydb/core/mind/slot_indexes_pool.h b/ydb/core/mind/slot_indexes_pool.h new file mode 100644 index 000000000000..17f782249485 --- /dev/null +++ b/ydb/core/mind/slot_indexes_pool.h @@ -0,0 +1,22 @@ +#pragma once + +#include "defs.h" + +namespace NKikimr::NNodeBroker { + +class TSlotIndexesPool { +public: + TSlotIndexesPool(); + + void Acquire(size_t index); + size_t AcquireLowestFreeIndex(); + bool IsAcquired(size_t index) const; + void Release(size_t index); + void ReleaseAll(); + size_t Capacity() const; + size_t Size() const; +private: + TDynBitMap FreeIndexes; +}; + +} // NKikimr::NNodeBroker diff --git a/ydb/core/mind/ya.make b/ydb/core/mind/ya.make index 601083f59eee..c1a25de3f8b8 100644 --- a/ydb/core/mind/ya.make +++ b/ydb/core/mind/ya.make @@ -25,6 +25,8 @@ SRCS( node_broker__update_config.cpp node_broker__update_config_subscription.cpp node_broker__update_epoch.cpp + slot_indexes_pool.cpp + slot_indexes_pool.h table_adapter.h tenant_node_enumeration.cpp tenant_node_enumeration.h diff --git a/ydb/core/protos/feature_flags.proto b/ydb/core/protos/feature_flags.proto index b1c1022f7856..c8a6998b11a9 100644 --- a/ydb/core/protos/feature_flags.proto +++ b/ydb/core/protos/feature_flags.proto @@ -130,4 +130,5 @@ message TFeatureFlags { optional bool EnableAddColumsWithDefaults = 115 [ default = false]; optional bool EnableReplaceIfExistsForExternalEntities = 116 [ default = false]; optional bool EnableCMSRequestPriorities = 117 [default = false]; + optional bool EnableStableNodeNames = 122 [default = false]; } diff --git a/ydb/core/protos/hive.proto b/ydb/core/protos/hive.proto index b7fb1324a6dd..64f4f250060a 100644 --- a/ydb/core/protos/hive.proto +++ b/ydb/core/protos/hive.proto @@ -314,6 +314,7 @@ message THiveNodeStats { optional uint32 RestartsPerPeriod = 6; optional uint64 LastAliveTimestamp = 7; optional NKikimrSubDomains.TDomainKey NodeDomain = 8; + optional string NodeName = 9; } message TEvResponseHiveNodeStats { diff --git a/ydb/core/protos/local.proto b/ydb/core/protos/local.proto index fe5c40b757df..5cfc7242df25 100644 --- a/ydb/core/protos/local.proto +++ b/ydb/core/protos/local.proto @@ -19,6 +19,7 @@ message TEvRegisterNode { repeated NKikimrSubDomains.TDomainKey ServicedDomains = 2; optional NActorsInterconnect.TNodeLocation SystemLocation = 3; repeated TTabletAvailability TabletAvailability = 4; + optional string Name = 5; } message TEvRegisterNodeResult { diff --git a/ydb/core/protos/node_broker.proto b/ydb/core/protos/node_broker.proto index ba66881bb337..e126492b4e06 100644 --- a/ydb/core/protos/node_broker.proto +++ b/ydb/core/protos/node_broker.proto @@ -20,6 +20,7 @@ message TNodeInfo { optional string Address = 5; optional NActorsInterconnect.TNodeLocation Location = 6; optional uint64 Expire = 7; + optional string Name = 8; } message TEpoch { @@ -101,6 +102,7 @@ message TConfig { optional uint64 EpochDuration = 1 [default = 3600000000]; // Don't allocate and extend lease for IDs from banned intervals. repeated TNodeIds BannedNodeIds = 2; + optional string StableNodeNamePrefix = 3 [default = "slot-"]; } message TGetConfigRequest { diff --git a/ydb/core/protos/node_whiteboard.proto b/ydb/core/protos/node_whiteboard.proto index 3126946f495f..3737bf3bdeba 100644 --- a/ydb/core/protos/node_whiteboard.proto +++ b/ydb/core/protos/node_whiteboard.proto @@ -323,6 +323,7 @@ message TSystemStateInfo { optional uint64 DisconnectTime = 34; optional TNodeSharedCache SharedCacheStats = 35; optional uint32 TotalSessions = 36; + optional string NodeName = 37; } message TEvSystemStateRequest { diff --git a/ydb/core/tablet/node_whiteboard.cpp b/ydb/core/tablet/node_whiteboard.cpp index 691ccbb51a29..bd0f48e36e51 100644 --- a/ydb/core/tablet/node_whiteboard.cpp +++ b/ydb/core/tablet/node_whiteboard.cpp @@ -46,6 +46,9 @@ class TNodeWhiteboardService : public TActorBootstrapped<TNodeWhiteboardService> TabletIntrospectionData.Reset(NTracing::CreateTraceCollection(introspectionGroup)); SystemStateInfo.SetHost(FQDNHostName()); + if (const TString& nodeName = AppData(ctx)->NodeName; !nodeName.Empty()) { + SystemStateInfo.SetNodeName(nodeName); + } SystemStateInfo.SetNumberOfCpus(NSystemInfo::NumberOfCpus()); auto version = GetProgramRevision(); if (!version.empty()) { diff --git a/ydb/core/viewer/json_nodes.h b/ydb/core/viewer/json_nodes.h index ceab8a8cf8cf..d5d0cadddada 100644 --- a/ydb/core/viewer/json_nodes.h +++ b/ydb/core/viewer/json_nodes.h @@ -37,6 +37,7 @@ class TJsonNodes : public TViewerPipeClient<TJsonNodes> { std::unique_ptr<TEvBlobStorage::TEvControllerConfigResponse> BaseConfig; std::unordered_map<ui32, const NKikimrBlobStorage::TBaseConfig::TGroup*> BaseConfigGroupIndex; std::unordered_map<TNodeId, ui64> DisconnectTime; + std::unordered_map<TNodeId, TString> NodeName; TJsonSettings JsonSettings; ui32 Timeout = 0; TString FilterTenant; @@ -481,6 +482,9 @@ class TJsonNodes : public TViewerPipeClient<TJsonNodes> { BLOG_TRACE("HiveNodeStats filter node by " << nodeId); FilterNodeIds.insert(nodeId); DisconnectTime[nodeId] = nodeStats.GetLastAliveTimestamp(); + if (nodeStats.HasNodeName()) { + NodeName[nodeId] = nodeStats.GetNodeName(); + } } if (--RequestsBeforeNodeList == 0) { ProcessNodeIds(); @@ -752,6 +756,10 @@ class TJsonNodes : public TViewerPipeClient<TJsonNodes> { if (itDisconnectTime != DisconnectTime.end()) { nodeInfo.MutableSystemState()->SetDisconnectTime(itDisconnectTime->second); } + auto itNodeName = NodeName.find(nodeId); + if (itNodeName != NodeName.end()) { + nodeInfo.MutableSystemState()->SetNodeName(itNodeName->second); + } } if (Storage) { auto itPDiskState = PDiskInfo.find(nodeId); diff --git a/ydb/public/api/protos/ydb_discovery.proto b/ydb/public/api/protos/ydb_discovery.proto index 4c94372eb714..3b388db55c21 100644 --- a/ydb/public/api/protos/ydb_discovery.proto +++ b/ydb/public/api/protos/ydb_discovery.proto @@ -103,6 +103,8 @@ message NodeRegistrationResult { repeated NodeInfo nodes = 4; optional uint64 scope_tablet_id = 5; optional uint64 scope_path_id = 6; + // A unique name within the tenant generated by the system + optional string node_name = 7; } message NodeRegistrationResponse { diff --git a/ydb/public/sdk/cpp/client/ydb_discovery/discovery.cpp b/ydb/public/sdk/cpp/client/ydb_discovery/discovery.cpp index 20c71a20385e..440b2635f580 100644 --- a/ydb/public/sdk/cpp/client/ydb_discovery/discovery.cpp +++ b/ydb/public/sdk/cpp/client/ydb_discovery/discovery.cpp @@ -86,6 +86,7 @@ TNodeRegistrationResult::TNodeRegistrationResult(TStatus&& status, const Ydb::Di , Expire_(proto.expire()) , ScopeTableId_(proto.has_scope_tablet_id() ? std::make_optional(proto.scope_tablet_id()) : std::nullopt) , ScopePathId_(proto.has_scope_path_id() ? std::make_optional(proto.scope_path_id()) : std::nullopt) + , NodeName_(proto.has_node_name() ? std::make_optional(proto.node_name()) : std::nullopt) { const auto& nodes = proto.nodes(); Nodes_.reserve(nodes.size()); @@ -122,6 +123,14 @@ bool TNodeRegistrationResult::HasScopePathId() const { return ScopePathId_.value(); } +bool TNodeRegistrationResult::HasNodeName() const { + return NodeName_.has_value(); +} + +const TString& TNodeRegistrationResult::GetNodeName() const { + return NodeName_.value(); +} + const TVector<TNodeInfo>& TNodeRegistrationResult::GetNodes() const { return Nodes_; } diff --git a/ydb/public/sdk/cpp/client/ydb_discovery/discovery.h b/ydb/public/sdk/cpp/client/ydb_discovery/discovery.h index 3e9c20717b52..24241cf904c8 100644 --- a/ydb/public/sdk/cpp/client/ydb_discovery/discovery.h +++ b/ydb/public/sdk/cpp/client/ydb_discovery/discovery.h @@ -109,6 +109,8 @@ class TNodeRegistrationResult : public TStatus { bool HasScopeTabletId() const; const ui64& GetScopePathId() const; bool HasScopePathId() const; + const TString& GetNodeName() const; + bool HasNodeName() const; const TVector<TNodeInfo>& GetNodes() const; private: @@ -117,6 +119,7 @@ class TNodeRegistrationResult : public TStatus { ui64 Expire_; std::optional<ui64> ScopeTableId_; std::optional<ui64> ScopePathId_; + std::optional<TString> NodeName_; TVector<TNodeInfo> Nodes_; }; diff --git a/ydb/tests/functional/scheme_tests/canondata/tablet_scheme_tests.TestTabletSchemes.test_tablet_schemes_flat_hive_/flat_hive.schema b/ydb/tests/functional/scheme_tests/canondata/tablet_scheme_tests.TestTabletSchemes.test_tablet_schemes_flat_hive_/flat_hive.schema index 938e0d6b9dbb..81372b53e785 100644 --- a/ydb/tests/functional/scheme_tests/canondata/tablet_scheme_tests.TestTabletSchemes.test_tablet_schemes_flat_hive_/flat_hive.schema +++ b/ydb/tests/functional/scheme_tests/canondata/tablet_scheme_tests.TestTabletSchemes.test_tablet_schemes_flat_hive_/flat_hive.schema @@ -552,6 +552,11 @@ "ColumnId": 9, "ColumnName": "Location", "ColumnType": "String" + }, + { + "ColumnId": 10, + "ColumnName": "Name", + "ColumnType": "String" } ], "ColumnsDropped": [], @@ -566,7 +571,8 @@ 5, 6, 8, - 9 + 9, + 10 ], "RoomID": 0, "Codec": 0,